pax_global_header00006660000000000000000000000064132343157110014512gustar00rootroot0000000000000052 comment=bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/000077500000000000000000000000001323431571100212265ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/.gitignore000066400000000000000000000014321323431571100232160ustar00rootroot00000000000000# intermediate files make.log *.bak pakcsinitrc .curry # tex temporary files *.aux *.log *.out *.nav *.snm *.toc *.tpt *.vrb *.pdf *.blg *.idx *.ilg *.ind *.tpt *.synctex.gz *.backup *~ # intermediate files *.bak make.log src/pakcsversion.pl docs/src/version.tex docs/src/tooldocs/casc/curry-style-guide.html lib/ pkg/ scripts/makesavedstate # binaries *.state bin/ cpns/CPNSD src/prologbasics.pl src/libsicstus src/libswi src/pakcs tools/Peval/peval tools/coosy/CoosyGUI tools/curry2xml tools/optimize/CompactFlat tools/optimize/NonStrictOpt www/Registry www/submitform # documentation docs/src/manual.bbl docs/src/lib docs/src/markdown_syntax.tex docs/markdown_syntax.html docs/CurryStyleGuide.html docs/INSTALL.html docs/GITINSTALL.html docs/RELNOTES.html # distribution pakcs-*.tar.gz pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/.gitmodules000066400000000000000000000007471323431571100234130ustar00rootroot00000000000000[submodule "frontend/curry-frontend"] path = frontend/curry-frontend url = https://git.ps.informatik.uni-kiel.de/curry/curry-frontend.git [submodule "frontend/curry-base"] path = frontend/curry-base url = https://git.ps.informatik.uni-kiel.de/curry/curry-base.git [submodule "currytools"] path = currytools url = https://git.ps.informatik.uni-kiel.de/curry/curry-tools.git [submodule "lib-trunk"] path = lib-trunk url = https://git.ps.informatik.uni-kiel.de/curry/curry-libs.git pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/CHANGELOG.html000066400000000000000000000220731323431571100234070ustar00rootroot00000000000000 PAKCS change log

PAKCS change log

Recent changes done in PAKCS (ordered by date):

March 16, 2009
Prolog code of the run-time system slightly changed to avoid problems with SWI-Prolog Version 5.7. In particular, meta_predicate declarations are now omitted.
August 26, 2008
Generated Prolog files (.pl/.po) are now stored in specific directory .pakcs.
July 3, 2008
Representation of AbstractCurry extended with a constructor CmtFunc so that one can also represent functions having a comment. This comment is formatted by the AbstractCurryPrinter as a documentation comment.
June 17, 2008
Module WUI: renderTaggedTuple added.
May 23, 2008
Handling of environment variables changed. SICSTUS and SPLD replaced by SICSTUSDIR
May 19, 2008
Bug fix for function patterns with logic variables as actual arguments
April 22, 2008
PAKCS exits with code 2 in case of "no more solutions".
March 7, 2008
Library Directory: renameFile and renameDirectory added.
March 6, 2008
Library Directory: removeFile and removeDirectory added.
February 7, 2008
lib/System.curry: Implementation of (un)setEnv changed
October 31, 2007
Problem: if main modules are loaded from other directories, imports in the same directories are not found for compilation. Fixed by changing parser imports in bin/.parsecurry
October 22, 2007
Tool erd2curry to compile entity-relationship diagrams into Curry programs added.
September 4, 2007
Implicit starting of CPNS demon moved from Prolog code to CPNS.registerPort
August 29, 2007
Parser warnings for shadowing improved.
July 11, 2007
Library Float: atan added
July 9, 2007
System: evalTime/evalSpace moved into library Profile
June 14, 2007
AbstractCurryPrinter: export declarations added (by Marion Mueller)
June 5, 2007
socketListen removed
June 4, 2007
IOExts: connectToSocket removed since it is contained in library Socket, choiceStreamOrMsgs removed since one can also use IO.hWaitForInputsOrMsg.
May 11, 2007
Implementation made compatible with SICStus4
May 11, 2007
Library Socket: socketINET and socketBind removed and integrated into new external function listenOn.
May 9, 2007
lib/Mail.curry: code and documentation improved
April 20, 2007
lib/Time: clockTimeToInt added
April 16, 2007
Implementation of CPNS demon changed to raw sockets.
April 13, 2007
lib/HTML.curry: bug fix for cookies
March 27, 2007
Bug fix in AbstractCurryPrinter
March 22, 2007
currydoc extended to TeX document generation
March 18, 2007
Bug in Dynamic.retractFact fixed
March 13, 2007
Library WUI: wSelectInt added
March 13, 2007
Database and KeyDatabase added.
March 13, 2007
Implementation of dynamic web pages changed from central event handler server (based on string communication) to servers for each web page. Library HtmlServer removed and library HtmlCgi added.
March 13, 2007
Eta expansion in code generation removed and implementation of I/O actions changed.
March 6, 2007
Library Distribution and parsecurry: reading of CurrySyntax supported
March 6, 2007
Library Distribution: front end call interface changed
February 27, 2007
Library HTML: intForm(Main) added to execute web pages in interactive mode.
February 27, 2007
Library GUI: addRegionStyle and removeRegionStyle added
February 5, 2007
lib/WUI: wui2html returns a "WUI handler" instead of a standard HTML handler in order to enable JavaScript checking before submission. wuiHandler2button transforms such a handler to a standard HTML button.
February 5, 2007
lib/WUIjs.curry (like WUI but with JavaScript support) added
February 5, 2007
currycreatemake tool added
February 1, 2007
FileGoodies: findFileInPath renamed to lookupFileInPath
January 26, 2007
lib/meta/CompactFlatCurry improved: modules are read in a demand-driven manner
January 22, 2007
tools/curry2js added
January 22, 2007
tools: currydocs.css + icons moved to include
January 22, 2007
lib/meta/CompactFlatCurry added and tools/optimize/CompactFlat changed accordingly
January 22, 2007
lib/JavaScript added
January 22, 2007
curry2prolog: Error handling improved: errors during Curry execution set now exit state 1 when leaving PAKCS.
January 22, 2007
lib/HTML: styleSheet, FormOnSubmit, addFormParams, addAttrs, runCgiWithKeyAndFormParams added.
January 22, 2007
bin/makecurrycgi: Parameter -wuijs added (preliminary)
January 22, 2007
lib/Distribution: installDir made public
December 22, 2006
Library Time: operations to/from ClockTime changed in order to provide a better distinction between UTC time and local time.
December 22, 2006
Library System: Date/getDate removed
December 21, 2006
Directory.getModificationTime returns a ClockTime instead of an Int
December 21, 2006
Library Time: internal representation of ClockTime changed
December 19, 2006
Bug fix for CURRYPATH in CurryBrowser
December 18, 2006
CurryBrowser: menu item "file information" added
December 12, 2006
lib/Distribution: scheme for finding loadpath improved
December 11, 2006
lib/XML.curry: updateXmlFile added
December 11, 2006
lib/Time.curry: toDayString added
December 8, 2006
Implementation of function pattern fixed so that function pattern variables are also shared in order to correctly implement call-time choice
December 7, 2006
lib/System: unsetEnviron added and set environment variables are now exported to every system call
November 22, 2006
lib/System: setEnviron added (and environ replaced by getEnv in Prolog sources)
November 13, 2006
tools/optimize/CompactFlat: Prelude.ensureNotFree added to list of defaults (since it is implicitly called by "$#").
November 10, 2006
lib/HTML.curry: updated for conformity with XHTML, in particular, constructor HtmlElem removed from datatype HTML.
November 10, 2006
lib/HTML_Parser.curry: updated for conformity with XHTML, i.e., reading extended for XHTML documents, and module renamed to HtmlParser
November 7, 2006
lib/XML.curry: hex coding of special characters is now recognized
November 1, 2006
lib/GUI.curry: appendTaggedValue replaced by appendStyledValue which offers more flexibility
November 1, 2006
lib/HTML.curry: bug w.r.t. line breaks in pre element fixed
October 17, 2006
matchHead/matchLast added to lib/Dequeue.curry
September 29, 2006
Coloring of HTML source code documentations integrated into currydoc
September 27, 2006
Shell script curry2prolog/curry2prolog removed (since everything is now done in the Prolog implementation), new PAKCS option -m added and old option -i PROG F changed to -i PROG -m F
September 26, 2006
Directory parser removed from distribution (parser/parsecurry moved to bin/.parsecurry)
September 26, 2006
Definition of Prelude.failed made external
September 22, 2006
GUI.getCursorPosition added

Michael Hanus
This web page is powered by Curry pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/GITINSTALL.txt000066400000000000000000000021241323431571100234400ustar00rootroot00000000000000PAKCS Repository ================ Installation Instructions for the GIT Repository ------------------------------------------------ If you want to install the up-to-date version of PAKCS from the developer's repository, you have to clone the [git repository](https://git.ps.informatik.uni-kiel.de/curry/pakcs), e.g., by the shell command git clone https://git.ps.informatik.uni-kiel.de/curry/pakcs.git This creates a new directory `pakcs` containing the current version. Go into this directory by cd pakcs and execute git submodule init git submodule update in order to obtain further files managed by git, i.e., the Curry system libraries shared by PAKCS and KiCS2. Then, each future update can be obtained by the executing git pull git submodule update Now you can install the complete system by the command make similar to the standard [PAKCS installation instructions](http://www.informatik.uni-kiel.de/~pakcs/download/INSTALL.html). ------------------------------------------------------------- Contact: [Michael Hanus](http://www.informatik.uni-kiel.de/~mh/) pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/INSTALL.txt000066400000000000000000000147011323431571100231000ustar00rootroot00000000000000PAKCS: The Portland Aachen Kiel Curry System ============================================ Installation Instructions ------------------------- The current version of PAKCS runs on Unix-based platforms and has been developed and tested under Linux (Debian/Ubuntu). However, it should also run on similar platforms like Mac OS X or SunOS. If you want to install and run the complete system on your computer, you need the following software: * [SICStus-Prolog](http://www.sics.se/sicstus.html) (Version 4.0 or higher) (recommended) * [SWI-Prolog](http://www.swi-prolog.org) (if you do not have SICStus-Prolog, but then the execution is less efficient and some libraries (e.g., Boolean constraint solvers) are not available. How to generate and install the PAKCS kernel: --------------------------------------------- 1. Go into the main directory of PAKCS (which contains this file). In the following, we assume that `pakcshome` is the name of this directory. 2. If you have the executables `sicstus` (for SICStus-Prolog) or `swipl` (for SWI-Prolog) in your path, execute "`make`" which installs PAKCS. The environment variables `SICSTUSDIR` or `SWIPROLOG` are automatically set to appropriate values. These values are also stored in the home directory in file `.pakcsinitrc` so that they are available for future installations of new versions of PAKCS. 3. Otherwise, modify in the shell script "`pakcshome/pakcsinitrc`" the definition of the variables `SICSTUSDIR` or `SWIPROLOG` according to your local installation, or pass these values to `make`, e.g., by make SICSTUSDIR=/opt/sicstus or make SWIPROLOG=/usr/bin/swipl If both variables are undefined, the PAKCS compiler system cannot be installed. 4. If you install PAKCS from the source code distribution, you need also the [Glasgow Haskell Compiler](http://www.haskell.org/ghc/) (i.e., the executable "`ghc`" must be in your path) to compile the front end of PAKCS. 5. Now, install PAKCS by "`make`" (if you have already an older installation of PAKCS, do "`make clean`" before). 6. Add the directory "`pakcshome/bin`" to your path, e.g., by the command export PATH=pakcshome/bin:$PATH in the `bash`. If you do no want to have the specific version number of PAKCS included in your path, you can set a symbolic link like ln -s pakcs- pakcs and put the directory pakcs/bin into your path. Now you can start the PAKCS compiler system via the command "`pakcs`". 7. If you want, you can also execute "`make libdoc`" to generate a local version of the documentation of all system libraries by the CurryDoc tool into the directory "`pakcshome/lib/CDOC`". However, this is only necessary if you want to work offline since you can also access the documentation online at . 8. You can configure the behavior of PAKCS by various setting in a "pakcsrc" file. For doing so, copy the file `pakcshome/pakcsrc.default` as "`.pakcsrc`" (which will be automatically done when you start PAKCS for the first time) into you home directory and modify the settings. 9. If you like to have support for _line editing or history functionality_ in the PAKCS interactive environment (as supported by the readline library), you should have the Unix/Linux command "`rlwrap`" installed on your local machine. PAKCS uses "`rlwrap`" if called on a terminal without the parameter "`--noreadline`". Configuring the installation ---------------------------- If you want to install the system at a location different from the build location, you have to specify the intended installation location at built-time with the parameter `PAKCSINSTALLDIR`. Furthermore, the final installation location must not exist during built time. For instance, to built PAKCS at some local directory and move it later to `/opt/pakcs`, you can do it by make PAKCSINSTALLDIR=/opt/pakcs ... mv /path/to/pakcs /opt/pakcs Additional packages for specific libraries: ------------------------------------------- The distribution of PAKCS contains various additional packages and libraries. Some require additional software packages that are described below. 1. If you want to use the **library for GUI programming in Curry** (`pakcshome/lib/GUI.curry`), you need also a Tcl/Tk implementation (including the windowing shell `wish`) which can be downloaded [here](http://www.scriptics.com/software/tcltk/)) or installed in a Ubuntu distribution by sudo apt-get install tk tcl In this case, the windowing shell `wish` must be in your path (or you can also modify the definition of the function `openWish` in the library `GUI.curry`). 2. If you want to use the **database libraries** (`Database.*`) or the web framework Spicey, the database [SQLite](https://www.sqlite.org/) must be installed together with the command line interface `sqlite3`. This can be done in a Ubuntu distribution by sudo apt-get install sqlite3 Changing system constants: -------------------------- The distribution of PAKCS is configured with a **maximal tuple arity of 15**, i.e., Curry programs containing larger tuple sizes cannot be compiled. If you want to increase this size (usually, it is preferable to change your program), you have to change (in a source distribution of PAKCS) two system files and install your system as follows: 1. Change the definition of the constant `maxTupleArity` in the files `pakcshome/frontend/curry-frontend/src/Generators/GenFlatCurry.hs` and `pakcshome/src/compiler.pl` according to your required maximal arity. 2. Delete the file `pakcshome/lib/Prelude.fcy`. 3. Re-install PAKCS by `make`. Hints for specific platforms ---------------------------- ### Ubuntu 7.10 If you install PAKCS from the binary Linux distribution, the pre-compiled executable of the front-end might not find the library `libgmp.so.3`. This problem can be fixed by the following commands (executed as root): cd /usr/lib ln -s libgmp.so.3.4.1 libgmp.so.3 If you use SWI-Prolog, you should install the packages `swi-prolog` as well as `swi-prolog-clib` from the Ubuntu distribution. The latter package is necessary if sockets, ports, and other system-oriented features should be used in Curry. (Thanks to Sergio Antoy and Steffen Mazanek for these hints.) ------------------------------------------------------------- Contact: [Michael Hanus](http://www.informatik.uni-kiel.de/~mh/) pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/KNOWN_BUGS000066400000000000000000000014261323431571100226700ustar00rootroot00000000000000 Occur check in higher-order objects in PAKCS: - no occur check is performed in PAKCS in higher-order objects, i.e., in partially applied functions (which are considered as constructors). Thus, the unification f =:= (.) f does not terminate although it should fail due to the occur check. Solution: generate additional clauses for partially applied functions in the definition of the predicate "occurs_not". However, this increases the size of the generated programs considerably. On the other hand, this case occurs very rarely (up to now there is no application making use of a real unification of higher-order objects). Furthermore, this issue will go away if type classes are systematically used so that unification on functional objects is not allowed. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/LICENSE000066400000000000000000000030241323431571100222320ustar00rootroot00000000000000The PAKCS (Portland Aachen Kiel Curry System) License Copyright (c) 2000-2016, Michael Hanus (University of Kiel) All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - None of the names of the copyright holders and contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/Makefile000066400000000000000000000337511323431571100226770ustar00rootroot00000000000000#**************************************************************************** # PAKCS: The Portland Aachen Kiel Curry System # ============================================ # # A Prolog-based implementation of the functional logic language Curry # developed by # # Sergio Antoy, Bernd Brassel, Martin Engelke, Michael Hanus, Klaus Hoeppner, # Johannes Koj, Philipp Niederau, Ramin Sadre, Frank Steiner # # (contact: pakcs@curry-language.org) #**************************************************************************** # Some parameters for this installation # -------------------------------------- # (these parameters might be passed to `make`) # If the parameter CURRYFRONTEND is set to an executable, # this executable will be used as the front end for PAKCS. # Otherwise, the front end will be compiled from the sources # in subdir "frontend" (if it exists). export CURRYFRONTEND = # Is this an installation for a distribution (Debian) package (yes|no)? # In case of "yes": # - nothing will be stored during the installation in the home directory # - the documentation will not be built (since this takes a lot of time) # - the paramters CURRYLIBSDIR and CURRYTOOLSDIR must be defined and # refer to the directories containing the Curry system libraries and tools export DISTPKGINSTALL = no # In order to build the system in a place different from the place of # the final installation (e.g., when building it as a (Debian) package), # the variable PAKCSINSTALLDIR should be set to the location where it # will be finally installed after the build (e.g., /usr/lib/pakcs). # It is required that during the build, this directory does not exist, # otherwise the build fails. If this variable is set and the # installed system will be moved to this location after the build, it will be # used as the root directory for all generated components of the system. export PAKCSINSTALLDIR = ######################################################################## # The name of the Curry system, needed for the installation of # the system libraries and tools: export CURRYSYSTEM=pakcs # The major version number: export MAJORVERSION=2 # The minor version number: export MINORVERSION=0 # The revision version number: REVISIONVERSION=1 # The build version number (if >0, then it is a pre-release) BUILDVERSION=0 # Complete version: VERSION=$(MAJORVERSION).$(MINORVERSION).$(REVISIONVERSION) # The version date: ifeq ($(DISTPKGINSTALL),yes) COMPILERDATE := $(shell date "+%Y-%m-%d") else COMPILERDATE := $(shell git log -1 --format="%ci" | cut -c-10) endif # Paths used in this installation # ------------------------------- # the root directory of the installation export ROOT=$(CURDIR) # Directories of the sources of the standard libraries and tools ifeq ($(DISTPKGINSTALL),yes) export CURRYLIBSDIR = $(error "CURRYLIBSDIR is undefined!") export CURRYTOOLSDIR = $(error "CURRYTOOLSDIR is undefined!") else export CURRYLIBSDIR = $(ROOT)/lib-trunk export CURRYTOOLSDIR = # not used endif # binary directory and executables export BINDIR=$(ROOT)/bin # Directory where the front end is located export FRONTENDDIR = $(ROOT)/frontend # Directory where the actual libraries are located export LIBDIR = $(ROOT)/lib # Directory where the documentation files are located export DOCDIR = $(ROOT)/docs # The file containing the version number of the base libraries: BASEVERSIONFILE = $(LIBDIR)/VERSION # Executable of CurryCheck: CURRYCHECK := $(shell which curry-check) # Executable of CurryDoc: CURRYDOC := $(shell which curry-doc) # Executable of the markdown translator (required for documentation generation): MD2PDF := $(shell which md2pdf) # The version information file for PAKCS: PAKCSVERSION=$(ROOT)/src/pakcsversion.pl # The version information file for the manual: MANUALVERSION=$(DOCDIR)/src/version.tex # Various executables used in the installation # -------------------------------------------- # The REPL binary, used for building various tools export REPL = $(BINDIR)/$(CURRYSYSTEM) # The default options for the REPL export REPL_OPTS = --noreadline :set -time # The front end binary export CYMAKE = $(BINDIR)/$(CURRYSYSTEM)-frontend # The cleancurry binary export CLEANCURRY = $(BINDIR)/cleancurry # Logfile for make: MAKELOG=make.log ######################################################################## # The targets ######################################################################## # # Install all components of PAKCS # .PHONY: all all: ifeq ($(DISTPKGINSTALL),yes) $(MAKE) config $(MAKE) build # if we build a package, we compile all libraries at the end # so that their intermediate files are up to date: $(REPL) --nocypm $(REPL_OPTS) :load AllLibraries :eval "3*13+3" :quit else @rm -f $(MAKELOG) @echo "Make started at `date`" > $(MAKELOG) $(MAKE) config 2>&1 | tee -a $(MAKELOG) $(MAKE) build 2>&1 | tee -a $(MAKELOG) @echo "Make finished at `date`" >> $(MAKELOG) @echo "Make process logged in file $(MAKELOG)" endif # Check whether the value of PAKCSINSTALLDIR, if defined, is a non-existing # directory .PHONY: checkinstalldir checkinstalldir: @if [ -n "$(PAKCSINSTALLDIR)" -a -d "$(PAKCSINSTALLDIR)" ] ; then \ echo "ERROR: Variable PAKCSINSTALLDIR points to an existing directory!" && exit 1 ; \ fi # # Build all components of PAKCS # .PHONY: build build: checkinstalldir $(MAKE) kernel $(MAKE) tools $(MAKE) manual chmod -R go+rX . # install the kernel system (binaries and libraries) .PHONY: kernel kernel: scripts copylibs copytools @echo "PAKCS installation configuration (file pakcsinitrc):" @cat pakcsinitrc # install front end: $(MAKE) frontend # pre-compile all libraries: @cd lib && $(MAKE) fcy # build the PAKCS compiler as a saved system: $(MAKE) $(PAKCSVERSION) cd src && $(MAKE) # compile all libraries: @cd lib && $(MAKE) acy # compile optimization tools: @cd currytools/optimize && $(MAKE) # prepare for separate compilation: compile all libraries to Prolog @if [ -r bin/pakcs ] ; then cd lib && $(MAKE) pl ; fi # Clean old files that might be in conflict with newer versions of PAKCS: .PHONY: cleanoldinfos cleanoldinfos: # delete old RequiredValue analysis files since format has changed: @if [ -d $(HOME)/.curry/Analysis ] ; then \ find $(HOME)/.curry/Analysis -name \*.RequiredValue.p\* -exec rm -f \{\} \; ; fi # Configure installation w.r.t. variables in pakcsinitrc: .PHONY: config config: scripts @scripts/configure-pakcs # install the scripts of PAKCS in the bin directory: .PHONY: scripts scripts: cd scripts && $(MAKE) all # remove the scripts of PAKCS in the bin directory: .PHONY: cleanscripts cleanscripts: cd scripts && $(MAKE) clean # install the library sources from the trunk directory: .PHONY: copylibs copylibs: @if [ -d $(CURRYLIBSDIR) ] ; then cd $(CURRYLIBSDIR) && $(MAKE) -f Makefile_$(CURRYSYSTEM)_install ; fi # if the directory `currytools` is not present, copy it from the sources: # (only necessary for the installation of a (Debian) packages, otherwise # `currytools` is a submodule of the repository) .PHONY: copytools copytools: ifeq ($(DISTPKGINSTALL),yes) @if [ ! -f currytools/Makefile ] ; then $(MAKE) forcecopytools ; fi endif .PHONY: forcecopytools forcecopytools: mkdir -p currytools # Copying currytools from $(CURRYTOOLSDIR) cp -pr $(CURRYTOOLSDIR)/* currytools # install front end (from environment variable or sources): .PHONY: frontend frontend: ifeq ($(shell test -x "$(CURRYFRONTEND)" ; echo $$?),0) rm -f $(CYMAKE) ln -s $(CURRYFRONTEND) $(CYMAKE) else @if [ -d $(FRONTENDDIR) ] ; then $(MAKE) compilefrontend ; fi endif .PHONY: compilefrontend compilefrontend: rm -f $(CYMAKE) cd $(FRONTENDDIR) && $(MAKE) cd $(BINDIR) && ln -s ../frontend/bin/curry-frontend $(notdir $(CYMAKE)) # compile the tools: .PHONY: tools tools: @if [ -r bin/pakcs ] ; then cd currytools && $(MAKE) ; fi @if [ -r bin/pakcs ] ; then cd tools && $(MAKE) ; fi # compile analysis tool only: .PHONY: CASS CASS: @if [ -r bin/pakcs ] ; then cd currytools && $(MAKE) CASS ; fi # compile documentation if sources are available and it is not a # separate package distribution: .PHONY: manual manual: @if [ -d $(DOCDIR)/src -a $(DISTPKGINSTALL) = "no" ] ; then \ if [ -x "$(CURRYDOC)" -a -x "$(MD2PDF)" ] ; then \ $(MAKE) $(MANUALVERSION) && cd $(DOCDIR)/src && $(MAKE) install ; \ else echo "Executable 'curry-doc' or 'md2pdf' not found!" ; \ echo "To generate the manual, install them by:" ; \ echo "> cypm install currydoc && cypm install markdown" ; \ fi \ fi # Create file with version information for PAKCS: $(PAKCSVERSION): Makefile $(BASEVERSIONFILE) echo ':- module(pakcsversion,[compilerVersion/1, compilerMajorVersion/1, compilerMinorVersion/1, compilerRevisionVersion/1, buildVersion/1, buildDate/1, buildDir/1, pkgInstallDir/1, baseVersion/1]).' > $@ echo "compilerVersion('PAKCS$(MAJORVERSION).$(MINORVERSION)')." >> $@ echo 'compilerMajorVersion($(MAJORVERSION)).' >> $@ echo 'compilerMinorVersion($(MINORVERSION)).' >> $@ echo 'compilerRevisionVersion($(REVISIONVERSION)).' >> $@ echo 'buildVersion($(BUILDVERSION)).' >> $@ echo "buildDate('$(COMPILERDATE)')." >> $@ echo "buildDir('$(ROOT)')." >> $@ echo "pkgInstallDir('$(PAKCSINSTALLDIR)')." >> $@ echo "baseVersion('$(shell cat $(BASEVERSIONFILE))')." >> $@ # Create file with version information for the manual: $(MANUALVERSION): Makefile echo '\\newcommand{\\pakcsversion}{$(VERSION)}' > $@ echo '\\newcommand{\\pakcsversiondate}{Version of $(COMPILERDATE)}' >> $@ # # Create documentation for system libraries: # .PHONY: libdoc libdoc: @if [ ! -x "$(CURRYDOC)" ] ; then \ echo "Executable 'curry-doc' is not installed!" && echo "Install it by > cpm install currydoc" ; \ else $(MAKE) genlibdoc ; \ fi .PHONY: genlibdoc genlibdoc: @rm -f $(MAKELOG) @echo "Make libdoc started at `date`" > $(MAKELOG) @cd lib && $(MAKE) htmldoc 2>&1 | tee -a ../$(MAKELOG) @echo "Make libdoc finished at `date`" >> $(MAKELOG) @echo "Make libdoc process logged in file $(MAKELOG)" ######################################################################## # Testing: run test suites to check the installation # ifeq ($(DISTPKGINSTALL),yes) # for a package installation, we run the tests in verbose mode: export RUNTESTPARAMS=-v else export RUNTESTPARAMS= endif # run the test suites to check the installation .PHONY: runtest runtest: @if [ ! -x "$(CURRYCHECK)" ] ; then \ echo "Executable 'curry-check' is not installed!" && echo "To run the tests, install it by > cypm install currycheck" ; \ else $(MAKE) runalltests ; fi .PHONY: runalltests runalltests: testsuite/test.sh cd testsuite && ./test.sh $(RUNTESTPARAMS) cd lib && ./test.sh $(RUNTESTPARAMS) cd currytools && $(MAKE) runtest # remove .curry (might contain analysis results if home is missing) rm -rf .curry # run the test suites in verbose mode so that all output is shown: .PHONY: runtestverbose runtestverbose: $(MAKE) runtest RUNTESTPARAMS=-v ######################################################################## # Cleaning: # # Build the cleancurry script: $(CLEANCURRY): cd scripts && $(MAKE) $@ # Clean the system files, i.e., remove the installed PAKCS components # except for the front end .PHONY: clean clean: $(CLEANCURRY) rm -f $(MAKELOG) $(MAKE) cleantools if [ -d lib ] ; then cd lib && $(MAKE) clean ; fi cd examples && $(CLEANCURRY) -r if [ -d $(DOCDIR)/src ] ; then cd $(DOCDIR)/src && $(MAKE) clean ; fi cd bin && rm -f sicstusprolog swiprolog cd scripts && $(MAKE) clean if [ -d $(FRONTENDDIR) ] ; then cd $(FRONTENDDIR) && $(MAKE) clean ; fi # Clean the generated PAKCS tools .PHONY: cleantools cleantools: $(CLEANCURRY) cd src && $(MAKE) clean cd currytools && $(MAKE) uninstall cd tools && $(MAKE) clean cd bin && rm -f pakcs # Clean everything (including the front end) .PHONY: cleanall cleanall: clean rm -rf $(LIBDIR) if [ -d $(FRONTENDDIR) ]; then cd $(FRONTENDDIR) && $(MAKE) cleanall; fi if [ -d $(FRONTENDDIR) ]; \ then rm -rf $(BINDIR) ; \ else rm -f $(CYMAKE) ; \ fi rm -f pakcsinitrc pakcsinitrc.bak ################################DISTRIBUTION################################## # Create distribution versions of the complete system as tar files # pakcs*.tar.gz: # directory name of distribution FULLNAME = pakcs-$(VERSION) # temporary directory to create distribution version PAKCSDIST = $(FULLNAME) # architecture name ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH)-$(shell uname -s) # Files to be excluded for source distribution SRC_EXCLUDE = --exclude=bin # Files to be excluded for binary distribution BIN_EXCLUDE = --exclude=frontend # date of distribution DIST_DATE = $(shell date +%Y%m%d) .PHONY: dist dist: rm -rf pakcs*.tar.gz $(PAKCSDIST) # remove any old distribution git clone . $(PAKCSDIST) # create copy of git version cd $(PAKCSDIST) && git submodule init && git submodule update cd $(PAKCSDIST) && $(MAKE) copylibs cd $(PAKCSDIST) && $(MAKE) cleandist # delete unnessary files mkdir -p $(PAKCSDIST)/bin && cp -p $(CYMAKE) $(PAKCSDIST)/bin @if [ -f docs/Manual.pdf ] ; then cp -p docs/Manual.pdf docs/markdown_syntax.html $(PAKCSDIST)/docs ; fi cat Makefile | sed -e "/#DISTRIBUTION#/,\$$d" \ | sed 's|^COMPILERDATE *:=.*$$|COMPILERDATE =$(COMPILERDATE)|' \ > $(PAKCSDIST)/Makefile tar cfvz $(FULLNAME)-src.tar.gz $(SRC_EXCLUDE) $(PAKCSDIST) tar cfvz $(FULLNAME)-$(ARCH).tar.gz $(BIN_EXCLUDE) $(PAKCSDIST) rm -rf $(PAKCSDIST) @echo "----------------------------------------------------------------" @echo "Distribution files pakcs*.tar.gz generated." .PHONY: distdated distdated: dist mv $(FULLNAME)-src.tar.gz $(FULLNAME)-$(DIST_DATE)-src.tar.gz mv $(FULLNAME)-$(ARCH).tar.gz $(FULLNAME)-$(DIST_DATE)-$(ARCH).tar.gz # Clean all files that should not be included in a distribution .PHONY: cleandist cleandist: rm -rf .git .gitmodules .gitignore rm -rf $(CURRYLIBSDIR) rm -rf currytools/.git currytools/.gitignore rm -f currytools/download_tools.sh cd $(FRONTENDDIR)/curry-base && rm -rf .git .gitignore dist cd $(FRONTENDDIR)/curry-frontend && rm -rf .git .gitignore dist rm -rf docs/src rm -rf debian rm -f KNOWN_BUGS CHANGELOG.html pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/OLDRELNOTES.html000066400000000000000000000742331323431571100237170ustar00rootroot00000000000000 PAKCS Release Notes

PAKCS: Release Notes (up to Version 1.10.1)

Release notes for PAKCS Version 1.10.1 (October 5, 2012)

Changes to version 1.10.0:

Release notes for PAKCS Version 1.10.0 (June 6, 2012)

Changes to version 1.9.2:

Release notes for PAKCS Version 1.9.2 (April 30, 2011)

Changes to version 1.9.1:

Release notes for PAKCS Version 1.9.1 (May 9, 2009)

Changes to version 1.9.0:

Release notes for PAKCS Version 1.9.0 (December 14, 2007)

Changes to version 1.8.1:

Release notes for PAKCS Version 1.8.1 (October 21, 2007)

Changes to version 1.8.0:

Release notes for PAKCS Version 1.8.0 (March 13, 2007)

Changes to version 1.7.3:

Release notes for PAKCS Version 1.7.3 (February 27, 2007)

Changes to version 1.7.2:

Release notes for PAKCS Version 1.7.2 (March 29, 2006)

Changes to version 1.7.0:

Release notes for PAKCS Version 1.7.0 (December 5, 2005)

Changes to version 1.6.1:

Release notes for PAKCS Version 1.6.1 (September 30, 2005)

Changes to version 1.5.0:

Release notes for PAKCS Version 1.5.0 (May 25, 2003)

Changes to version 1.4.5:

Release notes for PAKCS Version 1.4.5 (November 7, 2002)

Changes to version 1.4.1:

Release notes for PAKCS Version 1.4.1 (September 17, 2002)

Changes to version 1.4:

Release notes for PAKCS Version 1.4 (May 23, 2002)

This version contains the following changes (apart from the usual bug fixes) in comparison to the previous version 1.3:

Release notes for PAKCS Version 1.3 (December 15, 2000)

This version contains the following changes (apart from the usual bug fixes) in comparison to the previous version 1.2:
Back to Homepage of PAKCS
Michael Hanus

Valid XHTML 1.0 Transitional

pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/README000066400000000000000000000053471323431571100221170ustar00rootroot00000000000000PAKCS: The Portland Aachen Kiel Curry system ============================================ PAKCS is an implementation of the multi-paradigm declarative language [Curry](http://www.curry-language.org) developed by RWTH Aachen, University of Kiel and Portland State University (email contact: pakcs@curry-language.org) This directory contains: `RELNOTES.txt`: Some information about the current release and changes w.r.t. previous releases of PAKCS. `RESOURCES.html`: A description of various resources related to PAKCS and Curry. This is helpful for new users. `INSTALL.txt`: Instructions how to install the system. `GITINSTALL.txt`: Instructions how to install the system from the GIT repository (only intended for developers). `bin`: A directory containing various executables to execute the components of PAKCS. `src`: This directory contains the compiler from Curry into Prolog which is the basis of the main component of PAKCS: the interactive development environment. `currytools`: This directory contains various tools for Curry (see the README there for a more detailed description). `docs`: This directory contains some documentation (Curry Report, PAKCS User Manual, DTD for XML representation of FlatCurry). `examples`: This directory contains a collection of example Curry programs and test files (prefixed by "test") to check the system using the currytest tool. All tests can be executed by the shell script `test.sh` in this directory. `frontend`: This directory contains the Curry frontend, i.e., a parser for Curry programs. It is adapted from the parser originally developed for the [Muenster Curry Compiler](http://danae.uni-muenster.de/~lux/curry/). `include`: This directory contains some resources which are included by various tools delivered with KiCS2. `lib`: This directory contains a collection of standard libraries implemented in Curry (including the standard prelude). `scripts`: This directory contains some templates for scripts used in PAKCS. `testsuite`: This directory contains a collection of Curry programs implementing unit tests to check the functionality of the system using the currytest tool. All tests can be executed by the shell script `doTest` in this directory. Since these test suite is based on a test tool which is no longer supported, one should use the new tests contained in `testsuite2`. `testsuite2`: This directory contains a collection of Curry programs implementing unit and property tests to check the functionality of the system using CurryCheck. All tests can be executed by the shell script `test.sh` in this directory. `tools`: This directory contains various tools for PAKCS (see the README there for a more detailed description). pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/RELNOTES.txt000066400000000000000000000470411323431571100232300ustar00rootroot00000000000000PAKCS: Release Notes ==================== Release notes for PAKCS Version 2.0.1 (January 31, 2018) -------------------------------------------------------- Changes to version 2.0.0: * Library `SetFunctions`: `minValueBy` and `maxValueBy` added, `minValue` and `maxValue` depend on `Ord` context. * Parameter `-cpmexec` added to script `pakcs-makecgi`. Release notes for PAKCS Version 2.0.0 (January 12, 2018) -------------------------------------------------------- This version has almost the same functionality as version 1.15.0 but adds type classes similar to Haskell 98. In addition to version 1.15.0 and type classes, this version contains the following changes: * `define` command removed (since it was based on a quite restricted parser) * Free variable mode (option `+free`) removed since it has many restrictions and is no longer compatible with type classes. * Base libraries are now versioned. The actual version of the base libraries can be queried by `pakcs --base-version` or inside Curry programs by the operation `Distribution.baseVersion`. The versioning of base libraries is intended to be used by CPM. * Sources of compiler are contained in directory `src` (instead of `curry2prolog` as in versions 1.x). * Specification files for external operations renamed from `xxx.prim_c2p` to `xxx.pakcs` (for conformity with other Curry compilers). * Library `SetFunctions`: `minValueBy` and `maxValueBy` added, `minValue` and `maxValue` depend on `Ord` context. * Some libraries removed since they are available as packages which can easily be installed via `cypm`: - `Assertion` (no longer used since `currytest` has been replaced by `currycheck`) - `CLP*` (now in package `clp-pakcs`) - `CSV` (now available as `Text.CSV` in package `csv`) - `GlobalVariable` (now available in package `global-variables`) - `Parser` (now available in package `fl-parser`) - `PlProfileData` (now available in package `profiling`) - `Ports` (now available in package `ports`) - `Pretty` (now available in package `wl-pprint` as `Text.Pretty`, where `Pretty.pretty` has been renamed to `Text.Pretty.showWidth`) - `RegExp` (now available in package `regexp`) Release notes for PAKCS Version 1.15.0 (October 20, 2017) --------------------------------------------------------- Changes to version 1.14.2: * Readline editing added to REPL in SWI-Prolog (thanks to Jan Wielemaker) * Curry Package Manager added as tool `cypm`. * Various tools (e.g., addtypes, currybrowser, currycheck, currydoc, currypp, erd2curry, runcurry, spicey, verify, xmldata) have been removed from the distribution since they are not necessary for the basic use of PAKCS and they can easily be installed (by a one-line command) locally via `cypm`. Instructions how to install these tools are included in the PAKCS manual. * Operation `RegExp.match`: order of arguments swapped * Curry preprocessor does not generate implicit `match` for regexps. * Some libraries removed since they are available as packages which can easily be installed via `cypm`: - `AbstractCurry.*` (now in package `abstract-curry`) - `Bootstrap3Style` (now in package `html`) - `CLPB` (now in package `clpbool`) - `CHR` (now in package `chr-curry`) - `CategorizedHtmlList` (now in package `html`) - `CurryStringClassifier` (now in package `addtypes`) - `Database.ERDGoodies` (now in package `ertools`) - `Database.ERD` and `Database.CDBI.*` (now in package `cdbi`) - `FlatCurry.*` (now in package `flatcurry`) - `FlatCurry.Annotated.*` (now in package `flatcurry-annotated`) - `GraphInductive` (now in package `graph-inductive`) - `GUI` (now in package `gui`) - `HTML` (now in package `html` as library `HTML.Base`) - `HtmlParser` (now in package `html`) - `KeyDatabaseSQLite` (now in package `keydb`) - `JavaScript` (now in package `javascript`) - `Mail` (now in package `mail`) - `Markdown` (now in package `markdown`) - `Prolog` (now in package `prolog`) - `Rewriting.*` (now in package `rewriting`) - `URL` (now in package `url`) - `WUI` and `WUIjs` (now in package `wui`) - `XML` (now in package `xml`) - `XmlConv` (now in package `xml`) * Libraries `tools/ui` removed since they are available as CPM package `ui`. * Command `:xml` removed (since the XML format is deprecated). * Compatibility with newer version of SWI-Prolog (7.x) improved. Release notes for PAKCS Version 1.14.2 (February 23, 2017) ---------------------------------------------------------- Changes to version 1.14.0: * Makefiles changed so that parallel build (make -j) is possible. * Library `Database.ERD...` added (formerly part of ER currytools). * Libraries `IOExts` and `Global` use system commands `lockfile-create` and `lockfile-remove` instead of `lockfile` for internal file synchronization in order to remove dependency on package `procmail`. * Library `Nat` for Peano numbers added. * Libraries `Rewriting.*` for term rewriting in Curry extended to deal with rewriting strategies, narrowing strategies, critical pairs, definitional trees. * Library `Sort`: ...Sort operations renamed to ...SortBy and ...Sort operations with standard ordering added. * Library `State` with an implementation of the state monad added. * Library `Test.EasyCheck` split into two modules to have less import dependencies when putting properties into a module. * Library `Test.Prop` added as a clone of `Test.EasyCheck` which defines the interface but no implementation so that it does not import any other library. import dependencies when putting properties into a module. * CurryDoc shows properties and contracts, if they are present in source files, in the HTML documentation. * The Curry Preprocessor supports a new option `contracts` to transform contracts (specifications, pre/postconditions) into run-time assertions. * New partial evaluator (command "peval") added to `currytools`. * New tool Curry2Verify (to translate Curry programs into Agda programs) added to `currytools`. * Obsolete script `parsecurry` removed. * Tools `cpns` (Curry Port Name Server) and `www` (web scripting) moved to `currytools`. * Names of tool executables changed to `pakcs toolname` or `curry toolname`. * Name of Curry parser `cymake` changed to `curry frontend`. * Tool `curry analysis` (CASS): option `--all` added. * Tool `curry analysis` (CASS): analysis `Functional` added and analysis `Deterministic` modified so that it considers encapsulated search. * Tool `curry analysis` (CASS): simple termination analysis `Terminating` added. * Tool `curry analysis` (CASS): analysis `TypesInValues` added. * Tool `curry check` supports also testing with float arguments. * Run-time parameters passed to PAKCS must be separated by `--`. * Installation made more flexible by supporting environment variable `PAKCSINSTALLDIR` to specify the location where PAKCS is moved after the build process. Release notes for PAKCS Version 1.14.0 (April 19, 2016) ------------------------------------------------------ Changes to version 1.13.0: * Type `Success` is now a type synonym for `Bool` and `success` is defined as `True` in the prelude. * Library Constraints removed since it is no longer necessary due to the equivalence of `Success` and `Bool`. * Operation `Prelude.compare` and related comparison operations are flexible (instead of rigid as before) on user-defined datatypes. It still suspends when comparing two variables or one variable with a number or character. * Prelude: operations `(===)` and `(&&>)` removed * Libraries CLPFD and CLP.FD: labeling options `RandomVariable` and `RandomValue` added (currently only supported by SWI-Prolog) * Library Distribution: some load path handling operations (`findFileInLoadPath`, `lookupFileInLoadPath`, `readFirstFileInLoadPath`, `getLoadPath`, `getLoadPathForFile`) removed since they are deprecated (use operations like `getLoadPathForModule` and `lookupModuleSourceInLoadPath` instead of the deprecated operations since they handle hierarchical module names better) * Libraries `List`: `diagonal` added * Libraries `meta/*` removed (since they have been replaced by libraries with hierachical names, see below) * Hierarchical libraries for FlatCurry added and extended: in order to to compatible with future versions, the following imports should be adapted in programs working with AbstractCurry: - replace `import FlatCurry` by import FlatCurry.Types import FlatCurry.Files - replace `import FlatCurryGoodies` by import FlatCurry.Goodies - replace `import FlatCurryPretty` by import FlatCurry.Pretty - replace `import FlatCurryRead` by import FlatCurry.Read - replace `import FlatCurryShow` by import FlatCurry.Show - replace `import FlatCurryXML` by import FlatCurry.XML - replace `import CompactFlatCurry` by import FlatCurry.Compact - replace `import AnnotatedFlatCurry` by import FlatCurry.Annotated.Types - replace `import AnnotatedFlatGoodies` by import FlatCurry.Annotated.Goodies - replace `import AnnotatedFlatCurryPretty` by import FlatCurry.Annotated.Pretty - replace `import FlexRigid` by import FlatCurry.FlexRigid * New libraries added: Bootstrap3Style, ErrorState, SCC, Rewriting.*, FlatCurry.Annotated.TypeInference * currytools: typeinference removed since it is now contained in the standard system libraries * currytools: new tool `currycheck` for automated test execution added * PAKCS option "-c" removed and replaced by REPL command ":compile" (the old option was only internally used for building the libraries) Release notes for PAKCS Version 1.13.1 (October 2, 2015) -------------------------------------------------------- Changes to version 1.13.0: * Hierarchical libraries for AbstractCurry added and extended: in order to to compatible with future versions, the following imports should be adapted in programs working with AbstractCurry: - replace `import AbstractCurry` by import AbstractCurry.Types import AbstractCurry.Files - replace `import AbstractCurryGoodies` by import AbstractCurry.Select import AbstractCurry.Build - replace `import PrettyAbstract` by import AbstractCurry.Pretty * Library `CLP.FD` added: its functionality is similar to the old library `CLPFD`, but the interface is different so that other FD constraint solvers are easier to connect. Release notes for PAKCS Version 1.13.0 (August 24, 2015) -------------------------------------------------------- Changes to version 1.12.0: * Operation `Prelude.==` is flexible (instead of rigid as before). It still suspends when comparing two variables or one variable with a number or character. However, if `Prelude.==` is (positively) used in conditions of rules, it is automatically transformed into a unification constraint so that it does not suspend. * Library `Pretty`: code and interface updated, e.g., some combinators renamed and new combinators added (e.g., to support ANSI formatting and colorisation of documents) Release notes for PAKCS Version 1.12.0 (July 15, 2015) ------------------------------------------------------ Changes to version 1.11.5: * The extension for records (with special Curry syntax) was removed. Instead, PAKCS now supports Haskell's record syntax. See the manual for a detailed description of the new record syntax. * The Curry syntax is extended to also support binary integer literals. For instance, `0b101010` or `0B101010` can now be lexed and are converted to the integer value `42`. * The definition of AbstractCurry has been changed to sync with the changes of Curry done during the last years: - AbstractCurry files now contain version information - support for new record syntax - support for newtype declarations - evaluation annotations removed - arity of constructor declarations removed - simplified representation of function rules - String literals added * Library `FunctionInversion` added * Library `AnnotatedFlatCurryPretty` added * Library `Either` extended with functions `fromLeft` and `fromRight` * Library `ShowS` added * Library `AnsiCodes` added * Prelude operation `===` added Release notes for PAKCS Version 1.11.5 (February 28, 2015) ---------------------------------------------------------- Changes to version 1.11.4: * Support for hierarchical module names added, libraries `Distribution` and `FlatCurry` adapted for this purpose. * Library `AbstractCurryGoodies` added. * Libraries `CHR` and `CHRcompiled` to implement Constraint Handling Rules in Curry added together with various examples in `examples/CHR`. Release notes for PAKCS Version 1.11.4 (October 16, 2014) --------------------------------------------------------- Changes to version 1.11.3: * The interactive top-level loop uses the standard front end to parse expressions if the option `+free` is not set. * Handling of path names in PAKCS commands improved, e.g., the command `:load ~/rev` loads module `rev` from the home directory. * PAKCS command `edit` accepts module names (instead of arbitrary file names). * PAKCS can also be invoked via the command `curry` in the bin directory. * PAKCS options have the form of commands (e.g., `pakcs :set v2 :load rev`). Old options (except setting of `.pakcsrc` properties) are no longer necessary and, thus, not supported. * PAKCS command `:save`: if no argument is given, the executable is saved with the initial expression `main`. * PAKCS command `:source` added: allows separate viewing of visible or qualified function definitions. * PAKCS command `let var=exp` has now command syntax: `:define var=exp` * PAKCS option `args` for setting run-time arguments added. * Library `Prelude`: `solve` and `&&>` added. * Library `Findall`: `rewriteAll` and `rewriteSome` added (experimental!). * Library `Prolog` added. * Library `Unsafe`: `compareAnyTerm` and `isGround` added. * Tool `CASS`: new analysis `RequiredValues` added. * Optimization tool `bindingopt` for transforming Boolean equalities into constraint equalities added. * Tool `data2xml` for data conversion to XML and back added. Release notes for PAKCS Version 1.11.3 (July 21, 2014) ------------------------------------------------------ Changes to version 1.11.2: * PAKCS parameter `--safe` added to support safe execution without I/O actions. * Option ":set +/-interactive" added for setting interactive mode. Initially, the interactive mode is TURNED OFF (new in this version!). The default value can be set in the `.pakcsrc` file. * Option ":set parser" added for setting options passed to cymake. * Bug fix to ensure compatibility with SWI-Prolog Vers. 6.6 * Old deprecated libraries (`AbsCurry`, `AbsCurryIO`, `DaVinci`, `Flat`, `FlatCurryTools`, `FlatTools`, `FlatXML`, `Flat2FCY`, `Tk`) moved to `tools/lib_reprecated`. * Prelude: definition of `div` changed (to be compatible with Haskell) and `quot`, `rem`, `divMod`, `quotRem` added. * Prelude: IOError type extended with constructors for user/fail/nondet errors and implementation of `catch` adapted. * Prelude: `catchFail` omitted (use `catch` instead). * Prelude: encapsulated search operations (findall and more) moved into new library `Findall`. * Library `Distribution`: front-end parameters extended by supporting "special" (i.e., aribrary) arguments. * Library `Distribution`: front-end paramter `outfile` removed and front-end parameter `htmldir` added. * Library `Distribution` and `FlatCurry`: after calling the front end, an exception is raised if the front end returns with an error (due to an illegal source program). * Libraries `Float` and `Integer`: Power operators added. * Library `Float`: hyperbolic/ arc sine/cosine/tangent operators added. * Library `HTML`: `formMetaInfo` added, HTML header changed to HTML5. * Library `SetFunctions`: `notEmpty` added. * Libraries `Format` and `RegExp` added. * Tool `erd2curry` updated to new version with support for SQLite database. Bug fix in code generation w.r.t. checking of cardinality constraints. * Tool `spicey` (web framework) added and updated with a RESTful interface for entities. Release notes for PAKCS Version 1.11.2 (September 6, 2013) ---------------------------------------------------------- Changes to version 1.11.1: * Front-end updated (it writes and reads new kinds of interface files with the suffix `.icurry`). * Saved states, i.e., executables for a main program `prog` are now stored in the file `prog` (instead of `prog.state` as in previous releases). * CASS tool (Curry Analysis Server System) added and integrated into currydoc. * Interactive command ":analyze" removed and ":usedimports" added. The removed features to analyze a program are available via the Curry Browser. * Library `Function` added. * Library `HTML`: default (white) background for body of generated web pages removed (since this is usually defined in css files). * Library `IO`: Fixed a bug in `hGetLine` which caused an end-of-file error when reading a non-empty line without a newline termination. * Type inference tool (see `currytools/typeinference`) added. This tool can be used to annotate expressions in FlatCurry programs with their type. Release notes for PAKCS Version 1.11.1 (February 13, 2013) ---------------------------------------------------------- Changes to version 1.11.0: * The front end accepts typed expressions of the form "Expr :: TypeExpr". However, such type annotations are currently ignored by the compiler since the target language Prolog is untyped. * Parser strategy for combinations of functional and non-linear patterns improved. Parser also accepts as-patterns inside functional patterns. * Library `Directory`: Operation `copyFile` added. * Library `FlatCurry` extended to represent typed expressions by a new constructor `Typed`. * Library `SetFunctions`: Operations `choose` and `select` added. * Bug fix in script `parsecurry`. Release notes for PAKCS Version 1.11.0 (December 18, 2012) --------------------------------------------------------- Changes to version 1.10.1: * New front end version included that implements new features of Curry, e.g., `fcase` expressions and non-linear patterns in left-hand sides of program rules. * Syntax of records slightly changed to avoid problems with guarded case branches (their syntax conflicted with old syntax for selection of record fields): - Field selection operator is "`:>`" (instead of "`->`" in old syntax). - Record construction uses the operator "`:=`" for setting field values similarly to record updates (instead of "`=`" in the old syntax). * Showing characters: `print '\''` fixed * Library `GUI`: types of various main operations (like `runInitGUI`, `runInitGUIwithParams`) slightly changed (for compatibility with KiCS2 version of the library). The old operations are still available as `runInitGUI'` etc. * Library `Markdown`: title argument added to `markdownText2CompleteHTML` * Custimzation variables in `.pakcsrc` file extended. ------------------------------------------------------------------------- [Release notes for older versions](http://www.informatik.uni-kiel.de/~pakcs/download/OLDRELNOTES.html) pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/RESOURCES.html000066400000000000000000000230151323431571100234670ustar00rootroot00000000000000 PAKCS Resources

PAKCS Resources

Summary

This page is intended for newcomers to PAKCS, the Portland Aachen Kiel Curry System. It contains links to distribution sites, to local documentation, to examples, and a short overview of the use of the compiler interpreter.

Links

Downloading and installing PAKCS

This section tells you where to find the distribution of PAKCS, what to download and what is needed on the host computer. If you are reading this file, you may have already downloaded and installed the PAKCS distribution. Thus, this section may not be of interest to you.

Q: Where can I run PAKCS?
A: PAKCS runs under Linux, Solaris, and Mac OS X.

Q: What software do I need to install to run PAKCS?
A: The host computer must have installed SICStus Prolog or SWI-Prolog.

Q: Where can I download PAKCS?
A: There is an official site at the University of Kiel. There is also a mirror site at Portland State.

Q: What should I download to run PAKCS?
A: Look for "Download PAKCS" in a PAKCS website. The distribution consists of a gzipped tar archive of about 3 - 5 Mb (depending on your architecture). It includes all you need to run PAKCS plus several libraries, documentation and examples.

Q: Do I need a license to run PAKCS?
A: No. However, you may need a license for both Solaris and SICStus Prolog.

Q: How do I install PAKCS?
A: Open the downloaded archive using the Unix command tar zxf ~/pakcs_....tar.gz. This will create a directory called pakcs. Follow the instructions contained in the file INSTALL.html in this directory.

Running the first program

This section tells you how to execute your first Curry program. It assumes a successful installation of PAKCS. PAKCS is installed by a script that also tests the correctness of the installation.
  • Verify that the compiler/interpreter and other tools are in your PATH environment variable. Issue the which command to the shell prompt as shown below:
        [antoy@redstar test]$ which pakcs
        ~/local/pakcs/bin/pakcs
        [antoy@redstar test]$ 
    
    You should see a line such as ~/local/pakcs/bin/pakcs. The exact content is not important. If you see a line containing no pakcs in ... you must extend your PATH environment variable. Many details depend on your computer system and you should ask them to your system administrator.

  • Create a file which name extension "curry" for example first.curry. The file contains the following single line of code:
        test n = take n [0,2..]
    

  • Start the compiler/interpreter as follows:
        [antoy@redstar test]$ pakcs
    
    Several lines are output, including the PAKCS logo till you see
        Type ":h" for help
    
        Prelude>
    
    "Prelude>" is the prompt you get when no file has been loaded yet. As suggested, you may try typing ":h" for a list of available commands, or you can load the Curry program you created.

  • Load your Curry program with the command ":l" followed by a file name, i.e. "first" in this example. It is not necessary to type the file extension ".curry":
        Prelude> :l first
    
    Several line of informative messages are printed. No error or warning message should be generated for the above program. The prompt is changed to "first>", the name of the program you have just loaded.

  • Execute some function of your program. In this example, only one function by the name of test has been defined. This function take an argument which should be a non-negative integer. When the argument is n, the list of the first n (starting from 0) even number is printed. E.g.:
        first> test 8
        Result: [0,2,4,6,8,10,12,14] ?
    
    The program is now waiting for your input. If you enter a semicolon followed by a carriage return, the program attempts to find another result for your input. In this case, there are no other results, thus you get the message "No more solutions." and the prompt. If you enter carriage return, you get immediately the prompt.

  • At this point you can execute again some function of your program, load another file or quit by entering the command ":q".

Learning more

This section contains links to both resource coming with the distribution and external resources for learning Curry and using PAKCS.

Curry Report

This document precisely describes the Curry programming language. It is appropriate as a reference for all the technical aspects of the language, but it may be difficult for the beginner.
PAKCS User Manual
This document describes the use of the PAKCS compiler/interpreter and the differences between the implementation and the Curry Report.
Tutorial
This document, still incomplete at the time of this writing, is an introduction to the Curry programming language suitable for the beginner.
Libraries
The PAKCS distribution comes with a collection of libraries for application programming. The documentation of these libraries is generated by the currydoc tool, which is optionally executed during the installation. It allows a developer to navigate the interfaces of the libraries.
Examples
This document is an index to a collection of small examples contained in the standard distribution. They may be useful to get a sense of the Curry features and how they can be used.
PAKCS Homepage
This site contains the current and latest distributions, links to several resources, information about developers and sponsors, etc.
Curry Homepage
This site is the starting point of information about the programming language Curry of which PAKCS is the most advanced compiler/interpreter.
CurryWiki
This site contains more information about Curry, tools for Curry, alternative implementations etc.
FLP Patterns
This site contains a collection of Functional Logic Patterns, advanced programming solutions to recurring non-trivial problems. It may be interesting to more experienced developers.
PNW 2001 ACM Context
Curry implementations of the set of problems of the Pacific NW Regional selection of the 2001 ACM programming context.
CurryBrowser
This site describes CurryBrowser, a generic analysis environment for Curry implemented in Curry. CurryBrowser supports browsing through the program code of all modules of an application written in Curry. Each module can be shown in different formats (e.g., source code, interface, intermediate code) and, inside each module, various properties of functions defined in this module can be analyzed. This tool is already included in the distribution of PAKCS.
CurryTest
This site describes CurryTest, a simple tool to write and run repeatable unit tests. This tool is already included in the distribution of PAKCS.
COOSy
This site describes COOSy, the Curry Object Observation System, a lightweight approach for debugging Curry programs by observations. This tool is already included in the distribution of PAKCS.

Last updated: Fri May 23 11:37:57 CEST 2008 pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/currytools/000077500000000000000000000000001323431571100234535ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/000077500000000000000000000000001323431571100224505ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/bin/000077500000000000000000000000001323431571100232205ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/bin/cleancurry.sh000077700000000000000000000000001323431571100325362../../scripts/cleancurry.shustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/changelog000066400000000000000000000003441323431571100243230ustar00rootroot00000000000000pakcs (2:2.0.1-0) unstable; urgency=medium * Upstream-provided Debian package for pakcs. See upstream RELNOTES.txt for recent changes. -- Mike Gabriel Sun, 28 Jan 2018 22:41:50 +0100 pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/compat000066400000000000000000000000021323431571100236460ustar00rootroot000000000000009 pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/control000066400000000000000000000032001323431571100240460ustar00rootroot00000000000000Source: pakcs Section: devel Priority: optional Maintainer: Debian Curry Maintainers Uploaders: Mike Gabriel , Michael Hanus , Build-Depends: cdbs, debhelper (>= 9), quilt, curry-frontend (>= 2:0.99), # curry-libs-source (>= 1.0.3-1~), # curry-tools-source (>= 1.0.3+dfsg1-1~), swi-prolog-nox (>= 7.2.3), sqlite3, lockfile-progs, Standards-Version: 4.1.1 Homepage: https://www-ps.informatik.uni-kiel.de/~pakcs/ Vcs-Browser: https://anonscm.debian.org/git/pkg-curry/pakcs.git Vcs-Git: https://anonscm.debian.org/git/pkg-curry/pakcs.git Package: pakcs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, curry-frontend (>= 2:0.99), libjs-prototype (>= 1.6), swi-prolog-nox (>= 7.2.3), lockfile-progs, Recommends: sqlite3, Suggests: tk Description: Portland Aachen Kiel Curry Compiler PAKCS is an implementation of the multi-paradigm declarative language Curry jointly developed by the Portland State University, the Aachen University of Technology, and the University of Kiel. Although this is not a highly optimized implementation but based on a high-level compilation of Curry programs into Prolog programs, it is not a toy implementation: PAKCS has been used for a variety of applications so far (e.g., graphical programming environments, an object-oriented front-end for Curry, partial evaluators, database applications, HTML programming with dynamic web pages, prototyping embedded systems). The size of all current Curry applications implemented with PAKCS amounts to more than 150,000 lines (or 8 mbytes) of program code. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/copyright000066400000000000000000000332751323431571100244150ustar00rootroot00000000000000Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: PAKCS Upstream-Contact: Michael Hanus Source: https://git.ps.informatik.uni-kiel.de/curry/pakcs Files: src/Makefile src/c2p.pl src/evaluator.pl src/loader.pl src/lib_src/prim_clpb.pl src/lib_src/prim_readshowterm.pl src/lib_src/prim_chr.pl src/lib_src/prim_dynamic.pl src/lib_src/prim_globalvar.pl src/lib_src/prim_unsafe.pl src/lib_src/prim_ioexts.pl src/lib_src/prim_socket.pl src/lib_src/prim_system.pl src/lib_src/prim_time.pl src/lib_src/prim_distribution.pl src/lib_src/prim_directory.pl src/lib_src/prim_standard.pl src/lib_src/prim_float.pl src/lib_src/prim_clpfd.pl src/lib_src/prim_profile.pl src/lib_src/prim_ports.pl src/lib_src/prim_global.pl src/lib_src/prim_io.pl src/lib_src/prim_plprofiledata.pl src/lib_src/prim_flat.pl src/lib_src/prim_clpr.pl src/swibasics.pl src/version.pl src/readXml.pl src/compiler.pl src/block2freeze.pl src/sicstusbasics.pl src/sicstus_processing.pl src/external.pl src/readFlcFromFcy.pl src/basics.pl docs/src/Makefile docs/src/libraries.tex docs/src/overview.tex docs/src/pakcs_overview.jpg docs/src/ui.tex docs/src/problems.tex docs/src/distribution.tex docs/src/pakcs_overview.fig docs/src/markdown_syntax.txt docs/src/currybrowser.eps docs/src/preprocessing.tex docs/src/usage.tex docs/src/extensions.tex docs/src/pakcs_overview.eps docs/src/syntax.tex docs/src/auxiliary_files.tex docs/src/syntax.sty docs/src/external_ops.tex docs/src/manual.bib docs/src/manual.tex docs/src/preface.tex docs/src/currytest.eps docs/flatcurry.dtd docs/README examples/allsols.curry examples/sportsdb.curry examples/iodemo.curry examples/maxtree.curry examples/inflists.curry examples/mergesort.curry examples/family_nd.curry examples/exchange.curry examples/optmatch.curry examples/account.curry examples/GUI/scrollbar.curry examples/GUI/counter_controlled.curry examples/GUI/textstyledappend.curry examples/GUI/hilbert.curry examples/GUI/fractal.curry examples/GUI/mail.curry examples/GUI/counter_stdin_controlled.curry examples/GUI/textappend.curry examples/GUI/temperature.curry examples/GUI/calc.curry examples/GUI/menu.curry examples/GUI/hello.curry examples/GUI/events.curry examples/GUI/counter.curry examples/GUI/sierpinski.curry examples/GUI/inputmask.curry examples/GUI/config.curry examples/GUI/radiotraffic.curry examples/GUI/checkbutton.curry examples/mergesort_or.curry examples/rigidor.curry examples/parsing/palindrome.curry examples/parsing/expr_parser.curry examples/assembler.curry examples/colormap.curry examples/higher.curry examples/benchmark_pakcs.curry examples/relational.curry examples/rigidadd.curry examples/escher_higher.curry examples/rev.curry examples/quicksort.curry examples/distcurry/philo_ext.curry examples/distcurry/philo.curry examples/distcurry/philo_start examples/distcurry/sema.curry examples/distcurry/counter.curry examples/distcurry/nameserver.curry examples/distcurry/accountport.curry examples/distcurry/addserver.curry examples/distcurry/addtimeoutserver.curry examples/distcurry/addnamedserver.curry examples/distcurry/httpget.curry examples/distcurry/talk.curry examples/colormap_nd.curry examples/search.curry examples/nats.curry examples/first.curry examples/queens.curry examples/escher_perm.curry examples/casetest.curry examples/prolog.curry examples/benchmark.curry examples/last.curry examples/tctest.curry examples/unittest.curry examples/TESTRESULT.sicstus examples/diamond.curry examples/escher_cond.curry examples/qsortlet.curry examples/england.curry examples/family_con.curry examples/family_rel.curry examples/CHR/GCD.curry examples/CHR/Leq.curry examples/CHR/Bool.curry examples/CHR/UnionFind.curry examples/CHR/TESTRESULT examples/CHR/Fib.curry examples/CHR/FD.curry examples/CHR/Primes.curry examples/CHR/Gauss.curry examples/CHR/test.sh examples/modules/UseConc2.curry examples/modules/ModConc.curry examples/modules/UseConc1.curry examples/member.curry examples/TESTRESULT.swi examples/README examples/daVinciTest.curry examples/ralign.curry examples/CLP/queens.curry examples/CLP/queens2.curry examples/CLP/mortgage.curry examples/CLP/smm.curry examples/CLP/circuit.curry examples/CLP/sudoku2.curry examples/CLP/magicseries2.curry examples/CLP/smm2.curry examples/CLP/sudoku.curry examples/CLP/magicseries.curry examples/infresiduate.curry examples/rectype.curry examples/listcomp/default.lcurry examples/listcomp/multgen.curry examples/listcomp/psort.curry examples/listcomp/arithseq.curry examples/horseman.curry examples/family_fun.curry examples/index.html examples/test.sh examples/chords.curry examples/meta/putModuleHead.curry examples/meta/Imports.curry examples/digit.curry examples/nondetfunc.curry examples/best.curry include/curry2js_prims.js include/currydoc.tex include/currydoc.css include/wui_prims.js scripts/Makefile scripts/configure-pakcs scripts/*.sh testsuite/testAbstractCurry.curry testsuite/testCLPB.curry testsuite/testSystem.curry testsuite/testNonLinearPattern.curry testsuite/testFiniteMap.curry testsuite/testCase.curry testsuite/doTest testsuite/testFlatCurryGoodies.curry testsuite/RandomTest.curry testsuite/testDynamic.curry testsuite/testNonStrictUnif.curry testsuite/testSort.curry testsuite/testIOExts.curry testsuite/rev.curry testsuite/testGlobalVariable.curry testsuite/testFCase.curry testsuite/testFunctional.curry testsuite/testRegExp.curry testsuite/testGlobal.curry testsuite/testList.curry testsuite/testCombinatorial.curry testsuite/testPrelude.curry testsuite/testDatabase.curry testsuite/testDequeue.curry testsuite/testNarr.curry testsuite/testNondet.curry testsuite/testRecords.curry testsuite/testAsPattern.curry testsuite/testTraversal.curry testsuite/testRedBlackTree.curry testsuite/testInfinite.curry testsuite/testSetFunctions.curry testsuite/testDirectory.curry testsuite/testInteger.curry testsuite/testFuncPattern.curry testsuite/testFormat.curry testsuite/testArray.curry testsuite/testFlatCurryXML.curry testsuite/testHigher.curry testsuite/testIO.curry testsuite/testLetRec.curry testsuite2/testAbstractCurry.curry testsuite2/testCLPB.curry testsuite2/testSystem.curry testsuite2/testPolySubExp.curry testsuite2/testNonLinearPattern.curry testsuite2/testFiniteMap.curry testsuite2/testCase.curry testsuite2/testFlatCurryGoodies.curry testsuite2/RandomTest.curry testsuite2/testNarrowing.curry testsuite2/testSort.curry testsuite2/testIOExts.curry testsuite2/rev.curry testsuite2/testGlobalVariable.curry testsuite2/testFCase.curry testsuite2/testFunctional.curry testsuite2/testRegExp.curry testsuite2/testGlobal.curry testsuite2/testList.curry testsuite2/testCombinatorial.curry testsuite2/testExpTypeInference.curry testsuite2/testPrelude.curry testsuite2/testUnification.curry testsuite2/testDatabase.curry testsuite2/testKeyDatabaseSQLite.curry testsuite2/testDequeue.curry testsuite2/testNondet.curry testsuite2/testRecords.curry testsuite2/testUnsafeSearchTree.curry testsuite2/testAsPattern.curry testsuite2/testTraversal.curry testsuite2/README testsuite2/testRedBlackTree.curry testsuite2/testInfinite.curry testsuite2/testSetFunctions.curry testsuite2/testDirectory.curry testsuite2/testInteger.curry testsuite2/test.sh testsuite2/testFuncPattern.curry testsuite2/testFormat.curry testsuite2/testArray.curry testsuite2/testFlatCurryXML.curry testsuite2/testHigher.curry testsuite2/testIO.curry testsuite2/testLetRec.curry tools/Makefile tools/curry2xml.curry tools/lib_deprecated/FlatCurryTools.curry tools/lib_deprecated/Flat.curry tools/lib_deprecated/DaVinci.curry tools/lib_deprecated/AbsCurryIO.curry tools/lib_deprecated/FlatXML.curry tools/lib_deprecated/TableRBT0.curry tools/lib_deprecated/FlatTools.curry tools/lib_deprecated/AbsCurry.curry tools/lib_deprecated/Flat2Fcy.curry tools/lib_deprecated/Tk.curry tools/lib_deprecated/GUI_2012_11.curry tools/lib_deprecated/Flat.pakcs tools/lib_deprecated/SetRBT0.curry tools/emacs/README tools/optimize/Makefile tools/optimize/NonStrictOpt.curry tools/optimize/CompactFlat.curry tools/rlwrap tools/ui/Makefile tools/ui/UI.curry tools/ui/Throbber.gif tools/ui/SpicyWeb.curry tools/ui/ajaxrequest.js tools/ui/HTML.curry tools/ui/Throbber.png tools/ui/default.css tools/ui/examples/calcui.curry tools/ui/examples/tcounter.curry tools/ui/examples/counterui.curry tools/ui/examples/counter4.curry tools/ui/Action.js tools/ui/Json.curry tools/ui/GUI.curry tools/ui/GUI2HTML.curry tools/ui/TypedUI2HTML.curry tools/ui/UI2GUI.curry tools/ui/README tools/ui/TypedUI2GUI.curry tools/ui/UI2HTML.curry tools/ui/Parse.curry tools/README tools/Peval/Makefile tools/Peval/Flat.curry tools/Peval/peval.curry tools/Peval/Flat2Fcy.curry tools/Peval/README tools/Peval/Flat.pakcs tools/coosy/Makefile tools/coosy/README.txt tools/coosy/Observe.curry tools/coosy/CoosyTrace.curry tools/coosy/CoosyShowObserve.curry tools/coosy/CoosyGUI.curry tools/coosy/CoosyPrettier.curry tools/coosy/examples.curry tools/coosy/Help.txt tools/coosy/CoosyDerive.curry .gitignore .gitmodules CHANGELOG.html GITINSTALL.txt INSTALL.txt KNOWN_BUGS Makefile OLDRELNOTES.html pakcsrc.default README RELNOTES.txt RESOURCES.html Copyright: 2000-2016, Michael Hanus License: BSD-3-clause Comment: Missing license headers in files. Assume license and copyright holdership as found in LICENSE file. Files: frontend/* Copyright: 1998-2004, Wolfgang Lux 2005-2016, Michael Hanus License: BSD-3-clause Comment: Assuming frontend/{Makefile,README.md} license from frontend/LICENSE file. Files: tools/emacs/curry-decl-scan.el Copyright: 1997-1998, Graeme E Moss License: GPL-2+ Files: tools/emacs/curry-doc.el Copyright: 1997, Hans-Wolfgang Loidl License: GPL-2+ Files: tools/emacs/curry-font-lock.el Copyright: 1997-1998, Graeme E Moss, and Tommy Thorn License: GPL-2+ Files: tools/emacs/curry-indent.el tools/emacs/curry-pakcs.el Copyright: 1997-1998, Guy Lapalme 1999, Guy Lapalme License: GPL-2+ Files: tools/emacs/curry-mode.el Copyright: 1992, 1997-1998, Simon Marlow, Graeme E Moss, and Tommy Thorn License: GPL-2+ Files: tools/emacs/curry-simple-indent.el Copyright: 1998, Heribert Schuetz, Graeme E Moss License: GPL-2+ Files: tools/ui/prototype.js Copyright: 2005-2007, Sam Stephenson License: Expat Comment: This file stays unused, the version in Debian gets used insead. Files: debian/* Copyright: Mike Gabriel License: BSD-3-clause License: BSD-3-clause Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. . - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . - None of the names of the copyright holders and contributors may be used to endorse or promote products derived from this software without specific prior written permission. . THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: Expat 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 SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License: GPL-2+ 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. . On Debian systems, the complete text of the GNU General Public License version 2 can be found in `/usr/share/common-licenses/GPL-2'. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/man/000077500000000000000000000000001323431571100232235ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/man/cleancurry.1000066400000000000000000000017601323431571100254600ustar00rootroot00000000000000.TH PAKCS "1" "December 2016" "1.14.1" "Compiler" .SH NAME cleancurry \- clean intermediate Curry files .SH SYNOPSIS \fBcleancurry\fR \fI[OPTIONS] [MODULE]\fR .SH DESCRIPTION The cleancurry command removes all intermediate files produced when Curry programs are compiled with the PAKCS compiler. .PP For further information, please check http://currry-language.org and https://www.informatik.uni-kiel.de/~pakcs/ .SH OPTIONS: .TP \fB\-r\fR Apply cleancurry recursively to all subdirectories .TP \fB\-a\fR Remove all intermediate Curry files (even those without a source file) .TP \fBMODULE\fR Remove only intermediate Curry files for program MODULE. If this option is missing, the intermediate files for all Curry modules in the current directory are removed. .SH "AUTHOR" This manual page has been written by Michael Hanus and converted to nroff format by Mike Gabriel . This man page has been written for the Debian project initially, but may also be used by others. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/man/pakcs.1000066400000000000000000000045541323431571100244160ustar00rootroot00000000000000.TH PAKCS "1" "December 2016" "1.14.1" "Compiler" .SH NAME pakcs \- the Portland Aachen Kiel Curry System .SH SYNOPSIS \fBpakcs\fR \fI[OPTIONS]\fR .SH DESCRIPTION PAKCS is an implementation of the functional logic language Curry (http://currry-language.org) which compiles Curry programs into Prolog programs. Detailed information about PAKCS can be found at https://www.informatik.uni-kiel.de/~pakcs/ .PP The command pakcs either invokes the interactive environment or one of the various tools (e.g., documentation generation, browsing and analyzing programs, web frameworks, etc). .SH OPTIONS Invoke interactive environment: .TP \fBpakcs\fR \fI\fR [ -- \fI\fR] .PP with options: .TP \fB\--h\fR, \fB\-\-help\fR, \fB\-?\fR show this message and quit .TP \fB\-V\fR, \fB\-\-version\fR show version and quit .TP \fB\-q\fR, \fB\-\-quiet\fR work silently .TP \fB\-\-noreadline\fR do not use input line editing via command "rlwrap" .TP \fB-D\fI\fI\fB=\fR\fIval\fR define pakcsrc property "prop" as "val" : : command of the PAKCS environment .PP Invoke some tool: .TP \fBpakcs\fR \fI\fR \fI\fR .PP where \fI\fR is one of: .IP addtypes : add missing signature to top-level operations .IP analyze : analyze various properties (via CASS) .IP browse : browse and analyze .IP check : check properties .IP createmake : create make file for main module .IP frontend : Curry front end .IP data2xml : generate XML bindings .IP doc : generate documentation for Curry programs .IP erd2cdbi : create database code for ER model and Database.CDBI libraries .IP erd2curry : create database code for ER model .IP makecgi : translate Curry HTML program into CGI program .IP peval : partially evaluate a program .IP pp : Curry preprocessor .IP spiceup : create web application via Spicey .IP style : check style of source programs .IP test : test assertions (no longer supported) .IP verify : translate Curry module to Agda for property verification .PP To get more help about the usage of a tool, type .IP pakcs \fI\fR -h .SH "AUTHOR" This manual page has been written by Michael Hanus and converted to nroff format by Mike Gabriel . This man page has been written for the Debian project initially, but may also be used by others. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/man/runcurry.1000066400000000000000000000016721323431571100252040ustar00rootroot00000000000000.TH PAKCS "1" "December 2016" "1.14.1" "Compiler" .SH NAME runcurry \- execute a Curry program without explicit compilation .SH SYNOPSIS \fBruncurry\fR \fI[OPTIONS] MODULE RTARGS\fR .SH DESCRIPTION The runcurry command is intended to execute Curry programs without explicitly invoking the interactive environment PAKCS. .PP It can be useful to write short scripts in Curry intended for direct execution. .PP For further information, please check https://www.informatik.uni-kiel.de/~pakcs/ .SH OPTIONS .TP \fBOPTIONS\fR options passed to the Curry compiler PAKCS .TP \fBMODULE\fR name of the Curry module to be executed (with suffix .curry) .TP \fBRTARGS\fR run-time arguments passed to the Curry program .SH "AUTHOR" This manual page has been written by Michael Hanus and converted to nroff format by Mike Gabriel . This man page has been written for the Debian project initially, but may also be used by others. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/pakcs.dirs000066400000000000000000000000161323431571100244310ustar00rootroot00000000000000usr/lib/pakcs/pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/pakcs.exapmles000066400000000000000000000000121323431571100253020ustar00rootroot00000000000000examples/*pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/pakcs.install000066400000000000000000000006041323431571100251410ustar00rootroot00000000000000bin usr/lib/pakcs/ currytools usr/lib/pakcs/ docs usr/lib/pakcs/ examples usr/lib/pakcs/ include usr/lib/pakcs/ lib usr/lib/pakcs/ Makefile usr/lib/pakcs/ pakcsrc.default usr/lib/pakcs/ README usr/lib/pakcs/ RELNOTES.txt usr/lib/pakcs/ RESOURCES.html usr/lib/pakcs/ scripts usr/lib/pakcs/ src usr/lib/pakcs/ testsuite usr/lib/pakcs/ tools usr/lib/pakcs/ bin/cleancurry usr/lib/pakcs/bin/ pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/pakcs.links000066400000000000000000000002051323431571100246100ustar00rootroot00000000000000usr/lib/pakcs/bin/cleancurry usr/bin/cleancurry usr/lib/pakcs/bin/pakcs usr/bin/pakcs usr/lib/pakcs/bin/cypm usr/bin/cypm pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/pakcs.lintian-overrides000066400000000000000000000014231323431571100271310ustar00rootroot00000000000000# unusual interpreter, because PAKCS is an unusual Compiler for an unusual programming language pakcs: unusual-interpreter usr/lib/pakcs/currytools/runcurry/Examples/curryscript.sh #!runcurry # pakcsinitrc.sh is a to-be-sourced shell file... pakcs: executable-not-elf-or-script usr/lib/pakcs/scripts/pakcsinitrc.sh # let's ignore this for now, the installation style of PAKCS can by far be improved... but for now... pakcs: image-file-in-usr-lib usr/lib/pakcs/currytools/browser/Docs/currybrowser.jpg pakcs: image-file-in-usr-lib usr/lib/pakcs/currytools/currytest/Docs/currytest.jpg pakcs: image-file-in-usr-lib usr/lib/pakcs/docs/src/pakcs_overview.jpg pakcs: image-file-in-usr-lib usr/lib/pakcs/tools/ui/Throbber.gif pakcs: image-file-in-usr-lib usr/lib/pakcs/tools/ui/Throbber.png pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/pakcs.manpages000066400000000000000000000000161323431571100252630ustar00rootroot00000000000000debian/man/*.1pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/pakcsinitrc000077500000000000000000000011111323431571100247020ustar00rootroot00000000000000##################################################################### # Set up the default variables according to the local installation: # Directory of the SICStus-Prolog installation, i.e., # $SICSTUSDIR/bin/sicstus should be the name of the interpreter executable: SICSTUSDIR= # Executable of SWI-Prolog (if you don't have SICStus-Prolog) # Note that the complete functionality of PAKCS is not available with # SWI-Prolog and the efficiency is also slower than with SICStus-Prolog. SWIPROLOG="/usr/bin/swipl" ##################################################################### pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/patches/000077500000000000000000000000001323431571100240775ustar00rootroot000000000000002001_run-cleancurry-from-inside-debian-subfolder.patch000066400000000000000000000023461323431571100360760ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/patchesDescription: dpkg-buildpackage is very picky with changes in the source tree during clean Author: Mike Gabriel --- a/Makefile +++ b/Makefile @@ -92,7 +92,7 @@ # The front end binary export CYMAKE = $(BINDIR)/$(CURRYSYSTEM)-frontend # The cleancurry binary -export CLEANCURRY = $(BINDIR)/cleancurry +export CLEANCURRY = debian/bin/cleancurry # Logfile for make: MAKELOG=make.log --- a/scripts/Makefile +++ b/scripts/Makefile @@ -4,7 +4,7 @@ # the scripts to be installed BINS = $(BINDIR)/pakcs $(BINDIR)/pakcs-makecgi \ - $(BINDIR)/cleancurry \ + ../debian/bin/cleancurry \ $(BINDIR)/pakcs-fcypp @@ -20,6 +20,14 @@ sed "s|^PAKCSINSTALLDIR=.*$$|PAKCSINSTALLDIR=$(PAKCSINSTALLDIR)|" > $@ chmod 755 $@ +# the cleancurry script must be run from inside debian/ subfolder +# to keep the original source tree clean while running upstream's +# make clean +../debian/bin/%: %.sh + mkdir -p $(@D) + sed "s|^PAKCSHOME=.*$$|PAKCSHOME=$(ROOT)|" < $< > $@ + chmod 755 $@ + .PHONY: clean clean: rm -f $(BINS) --- a/testsuite2/test.sh +++ b/testsuite2/test.sh @@ -34,7 +34,7 @@ export PATH # clean up before -$CURRYBIN/cleancurry +../debian/bin/cleancurry LOGFILE=xxx$$ pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/patches/series000066400000000000000000000000671323431571100253170ustar00rootroot000000000000002001_run-cleancurry-from-inside-debian-subfolder.patch pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/rules000077500000000000000000000054341323431571100235360ustar00rootroot00000000000000#!/usr/bin/make -f # -*- makefile -*- VERBOSE=1 DISTPKGINSTALL=yes CURRYFRONTEND=/usr/bin/curry-frontend CURRYLIBSDIR=$(CURDIR)/lib-trunk CURRYTOOLSDIR=$(CURDIR)/currytools PAKCSINSTALLDIR=/usr/lib/pakcs # Only run unit tests on 64bit architectures for the reason given below. # # Quoting... http://www.swi-prolog.org/pldoc/man?section=64bits # # First of all, SWI-Prolog's addressing of the Prolog stacks does not # cover the whole address space due to the use of type tag bits and # garbage collection flags. On 32-bit hardware the stacks are limited to # 128 MB each. This tends to be too low for demanding applications on # modern hardware. On 64-bit hardware the limit is 2^32 times higher, # exceeding the addressing capabilities of today's CPUs and operating # systems. This implies Prolog can be started with stack sizes that use # the full capabilities of your hardware. #ifeq (,$(filter 32,$(DEB_HOST_ARCH_BITS))) #DEB_MAKE_CHECK_TARGET = runtestverbose # let's not run tests for the nightly .deb builds #DEB_MAKE_CHECK_TARGET = #else DEB_MAKE_CHECK_TARGET = #endif DEB_MAKE_BUILD_TARGET = all DISTPKGINSTALL=$(DISTPKGINSTALL) CURRYFRONTEND=$(CURRYFRONTEND) CURRYLIBSDIR=$(CURRYLIBSDIR) CURRYTOOLSDIR=$(CURRYTOOLSDIR) PAKCSINSTALLDIR=$(PAKCSINSTALLDIR) DEB_MAKE_CLEAN_TARGET = cleanall DEB_DH_INSTALLCHANGELOGS_ARGS = RELNOTES.txt include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/class/makefile.mk pre-build:: # obtain lib-trunk folder content... #if [ ! -d "debian/build/curry-libs" ]; then \ # mkdir -p debian/build/curry-libs/; \ # cd debian/build/curry-libs && tar xf /usr/src/curry-libs-source.tar.xz && cd - 1>/dev/null; \ #fi # obtain currytools folder content... #if [ ! -d "debian/build/curry-tools" ]; then \ # mkdir -p debian/build/curry-tools/; \ # cd debian/build/curry-tools && tar xf /usr/src/curry-tools-source.tar.xz && cd - 1>/dev/null; \ #fi # deploy Debianic pakcsinitrc into source tree... cp debian/pakcsinitrc . # make sure cleancurry is available in PAKCSHOME/bin, required for test suite mkdir -p bin/ ln -fs ../scripts/cleancurry.sh bin/cleancurry binary-post-install/pakcs:: chmod a+x debian/pakcs/usr/lib/pakcs/bin/cleancurry chmod a+x debian/pakcs/usr/lib/pakcs/bin/pakcs chmod a+x debian/pakcs/usr/lib/pakcs/bin/pakcs-fcypp chmod a+x debian/pakcs/usr/lib/pakcs/bin/pakcs-makecgi chmod a+x debian/pakcs/usr/lib/pakcs/scripts/*.sh chmod a+x debian/pakcs/usr/lib/pakcs/scripts/configure-pakcs chmod a+x debian/pakcs/usr/lib/pakcs/scripts/makesavedstate # remove superfluous LICENSE files rm debian/pakcs/usr/lib/pakcs/currytools/LICENSE clean:: -rm -fR bin/ # -rm -fR currytools/ # -rm -fR debian/build/ -rm -f scripts/makesavedstate get-orig-source: uscan --noconf --force-download --rename --download-current-version --destdir=.. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/source/000077500000000000000000000000001323431571100237505ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/source/format000066400000000000000000000000031323431571100251540ustar00rootroot000000000000001.0pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/debian/watch000066400000000000000000000003361323431571100235030ustar00rootroot00000000000000version=3 opts=dversionmangle=s/\+dfsg[0-9]*//,filenamemangle=s/.*\/v(\d\S+)\/archive\.tar\.gz/pakcs-$1\.tar\.gz/g \ https://git.ps.informatik.uni-kiel.de/curry/pakcs/tags?sort=updated_desc .*/v?(\d\S+)/archive\.tar\.gz pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/000077500000000000000000000000001323431571100221565ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/README000066400000000000000000000002201323431571100230300ustar00rootroot00000000000000This directory contains some documentation of PAKCS. Detailed online documentation is available at https://www.informatik.uni-kiel.de/~pakcs/ pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/flatcurry.dtd000066400000000000000000000215211323431571100246670ustar00rootroot00000000000000 pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/000077500000000000000000000000001323431571100227455ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/Makefile000066400000000000000000000034711323431571100244120ustar00rootroot00000000000000# To format the user manual PAKCS=../../bin/pakcs # Executable of the markdown translator: MD2PDF := $(shell which md2pdf) .PHONY: pdf pdf : manual.pdf manual.pdf: $(wildcard *.tex lib/*.tex tooldocs/*/*.tex) \ markdown_syntax.tex pdflatex manual bibtex manual pdflatex manual makeindex manual.idx pdflatex manual ../Manual.pdf: manual.pdf thumbpdf manual pdflatex manual rm -f $@ cp $< $@ markdown_syntax.tex: markdown_syntax.txt $(MD2PDF) --include --tex -o "$@" "$<" ../markdown_syntax.html: markdown_syntax.txt $(MD2PDF) -t "Markdown Syntax" --html -o "$@" "$<" # format installation description as HTML page ../INSTALL.html: ../../INSTALL.txt $(MD2PDF) -t "PAKCS Installation Instructions" --html -o "$@" "$<" # format repository installation description as HTML page ../GITINSTALL.html: ../../GITINSTALL.txt $(MD2PDF) -t "PAKCS Repository" --html -o "$@" "$<" # format release notes as HTML page ../RELNOTES.html: ../../RELNOTES.txt $(MD2PDF) -t "PAKCS Release Notes" --html -o "$@" "$<" # format Curry style guide as HTML page ../CurryStyleGuide.html: tooldocs/casc/curry-style-guide.md cd tooldocs/casc && $(MAKE) @if [ -f "tooldocs/casc/curry-style-guide.html" ] ; then cp tooldocs/casc/curry-style-guide.html $@ ; fi # generate documentation for all libraries .PHONY: libdoc libdoc: @cd ../../lib && $(MAKE) texdoc .PHONY: install install: $(MAKE) ../markdown_syntax.html $(MAKE) ../INSTALL.html $(MAKE) ../GITINSTALL.html $(MAKE) ../RELNOTES.html $(MAKE) ../CurryStyleGuide.html $(MAKE) libdoc $(MAKE) ../Manual.pdf .PHONY: clean clean: rm -f markdown_syntax.tex ../markdown_syntax.html \ ../INSTALL.html ../GITINSTALL.html ../RELNOTES.html rm -f *.aux *.bbl *.blg *.idx *.ilg *.ind *.log *.out *.pdf *.toc *.tpt rm -rf lib rm -f ../Manual.pdf ../Manual.ps.gz thumb* version.tex pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/auxiliary_files.tex000066400000000000000000000062531323431571100266660ustar00rootroot00000000000000\section{Auxiliary Files} \label{sec-auxfiles} During the translation and execution of a Curry program with \CYS, various intermediate representations of the source program are created and stored in different files which are shortly explained in this section. If you use \CYS, it is not necessary to know about these auxiliary files because they are automatically generated and updated. You should only remember the command for deleting all auxiliary files (\ccode{cleancurry}, see Section~\ref{sec-general}) to clean up your directories. The various components of \CYS create the following auxiliary files. \begin{description} \item[\code{prog.fcy}:] This file contains the Curry program in the so-called ``FlatCurry'' representation where all functions are global (i.e., lambda lifting has been performed) and pattern matching is translated into explicit case/or expressions (compare Appendix~\ref{sec-flatcurry}). This representation might be useful for other back ends and compilers for Curry and is the basis doing meta-programming in Curry. This file is implicitly generated when a program is compiled with \CYS. It can be also explicitly generated by the front end of \CYS:\pindex{pakcs frontend} \begin{curry} pakcs frontend --flat -i$\cyshome$/lib prog \end{curry} The FlatCurry representation of a Curry program is usually generated by the front-end after parsing, type checking and eliminating local declarations. If the Curry module $M$ is stored in the directory $dir$, the corresponding FlatCurry program is stored in the directory \ccode{$dir$/.curry}. This is also the case for hierarchical module names: if the module $D1.D2.M$ is stored in the directory $dir$ (i.e., the module is actually stored in $dir/D1/D2/M.curry$), then the corresponding FlatCurry program is stored in \ccode{$dir$/.curry/D1/D2/M.fcy}. \item[\code{prog.fint}:] This file contains the interface of the program in the so-called ``FlatCurry'' representation, i.e., it is similar to \code{prog.fcy} but contains only exported entities and the bodies of all functions omitted (i.e., ``external''). This representation is useful for providing a fast access to module interfaces. This file is implicitly generated when a program is compiled with \CYS and stored in the same directory as \code{prog.fcy}. \item[\code{prog.pl}:] This file contains a Prolog program as the result of translating the Curry program with \CYS. If the Curry module $M$ is stored in the directory $dir$, the corresponding Prolog program is stored in the directory \ccode{$dir$/.curry/pakcs}. This is also the case for hierarchical module names: if the module $D1.D2.M$ is stored in the directory $dir$ (i.e., the module is actually stored in $dir/D1/D2/M.curry$), then the corresponding Prolog program is stored in \ccode{$dir$/.curry/pakcs/D1/D2/prog.pl}. \item[\code{prog.po}:] This file contains the Prolog program \code{prog.pl} in an intermediate format for faster loading. This file is stored in the same directory as \code{prog.pl}. \item[\code{prog}:] This file contains the executable after compiling and saving a program with \CYS (see Section~\ref{sec:pakcs-commands}). \end{description} %%% Local Variables: %%% mode: latex %%% TeX-master: "manual" %%% End: pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/currybrowser.eps000066400000000000000000012540461323431571100262420ustar00rootroot00000000000000%!PS-Adobe-3.0 EPSF-3.0 %%Creator: GIMP PostScript file plugin V 1.16 by Peter Kirchgessner %%Title: /home/mh/currybrowser.eps %%CreationDate: Wed Jun 21 18:46:19 2006 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%Pages: 1 %%BoundingBox: 14 14 615 518 %%EndComments %%BeginProlog % Use own dictionary to avoid conflicts 10 dict begin %%EndProlog %%Page: 1 1 % Translate for offset 14.173228346456694 14.173228346456694 translate % Translate to begin of first scanline 0 503.28065282748753 translate 600.00944881889768 -503.28065282748753 scale % Image geometry 825 692 8 % Transformation matrix [ 825 0 0 692 0 0 ] % Strings to hold RGB-samples per scanline /rstr 825 string def /gstr 825 string def /bstr 825 string def {currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} {currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} {currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} true 3 %%BeginData: 349200 ASCII Bytes colorimage JH16$JH16$JH16$a8g_~> JH16$JH16$JH16$a8g_~> JH16$JH16$JH16$a8g_~> !!%RRJQdV.JQdV.JQi(W!#X#]!HS6k~> !!%RqJU)flJU)flJU.9@!%?.m!HeBm~> !!%SqJ^/hlJ^/hlJ^4;@!(,!2!HS6k~> !g'1!HS6k~> !<@Cr ! ! !<@Cr=b0_,=b0_,=b0]W=X`b([K-?m[KQX!mr\V\~> ! !!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+lU6@N*)6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB 6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB 6!bPZ6:+jB6!bPZ6:+jB65pp8>!bPZ6:+jB6!bPZ6:+jB6!bPZ 6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ 6:+jB6!bPZ6:+jB6!bPZ6:+jB6 !<@Cr?%H:4?2@iUH!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^] H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^] H!O^$?!V_]?$T^]H!O^$?!VaU?%.')?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_] ?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_] ?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H2h/rH!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$ ?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$ ?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]..=V1D#s[FlYQe)n*bB!J,~> !JCB=IClY?Y'n*b;tJ,~> ! !<@CrAV"EDAbfnd1hC5TAS!]0AMdt01hC5TAS!]0AMdt01hC5TAS!]0AMdt01hC5TAS!]0AMdt0 1hC5TAS!]0AMdt01hC5TAS!]0AMdt01hC5TAS!]0AMdt01hC5TAS!]0AMdt01hC5TAS!]0AMdt0 1hC5TAS!]0AMdt01hC5TAS!^uAUZIIAMdt01hC5TAS!]0AMdt01hC5TAS!]0AMdt01hC5TAS!]0 AMdt01hC5TAS!]0AMdt01hC5TAS!]0AMdt01hC5TAS!]0AMdt01hC5TAS!]0AMdt01hC5TAS!]0 AMdt01hC5TAS!]0AMdt01hC5TAS!]0AMdt02#h-51hC5TAS!]0AMdt01hC5TAS!]0AMdt01hC5T AS!]0AMdt01hC5TAS!]0AMdt01hC5TAS!]0AMdt01hC5TAS!]0AMdt01hC5TAS!]0AMdt01hC5T AS!]0AMdt01hC5TAS!]0AMdt01hC5TAS!]0AMdsHn$[*$rrfcIs0ce4rs#oKs6oE!!.Y~> !+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ >+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ >+D*dS=EcQS6DGQ>+D*dS=Ed_S:4Y3S6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQ S6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQ S6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>5t+=>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*d S=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*d S=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DFLn$Qs!rrf`Fs0ZY1rs#lHs6oDt!.Y~> ! !<@CrBn9uLBn9uLBn9t%BdiGYD?'(r"h&:J[Vc'5o*2X?s6oE!!.Y~> ! ! !<@EBD$3F9F_OkOD?!lA7=f<,D1QPTD1QPiD$29U[Vc'5mfg.:s0ceEn*^IhD?'(nFT?p~> !(NN$V1GIoV1GJ/V$'-R[;5g2mfg+7s0ZYBn*^IgC]EklEr^^~> !!)k!"]AO;c>un\=p%ZD;Gr'LJQdV.JQdV.Q !<@EBE ! !!)gu"]BE3X\r'p=or2L9&<_UHcGOSs5'm/=od.PrrVrOS@Mf.f)N`nf)PbcrE9<*s8S>D=p!:T s4LQZA&e9Cs/#Ws#,To>s7bB/r`TN&f'iY5hMhA9$]P+M>$>FDn,MjaA,]X3f),IIf)8bZN;o,G V:P,8pYLl-=pAKEn,MjaA,TR8A$te*n$Q['=p:/Ip]'^-r`TBCs47$MIN_lu+^/%m>$<(Q=s7'Q +^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q +^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%ms&sjp>$<(Q =s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q =s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q =s$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m >$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m >$<(Q)"4kJs6o+S[;5fMC]Ekd#.87Hn*b;tJ,~> !!)h?s(MS,U/c42GlhDk@GZ87P0`Usqr>89f6IARrVlrnj0#q<#M]:)H/JZ%LAcB"])Vf-j*:^` s8Ubt"bP4ts8TP*Gm:_3oDe^FVZ(iF[bLERqqn:KGmgAHVKmH=a7K?&a+F;9!8m\R!8ma#$DRQt H+)K!s81]NrHSU!a7K?&a+F88#(jnes7=9_r-8IGhu!HBe,FUoci;brH%%SqGr0el1jO@'H$M5l Gr0el1jO@'H$M5lGr0el1jO@'H$M5lGr0el1jO@'H$M5lGr0el1jO@'H$M5lGr0el1jO@'H$M5l Gr0el1jO@'H$M5lGr0el1jO@'H$M5lGr0el1jO@'H$M5lGr0el1jO@'H$M5lGr0el2#hiM1jO@' H$M5lGr0el1jO@'H$M5lGr0el1jO@'H$M5lGr0el1jO@'H$M5lGr0el1jO@'H$M5lGr0el1jO@' H$M5lGr0el1jO@'H$M5lGr0el1jO@'H$M5lGr0el1jO@'H$M5lGr0el1jO@'H$M5lGr0el1jO@' H$M7HH$_AnGr0el1jO@'H$M5lGr0el1jO@'H$M5lGr0el1jO@'H$M5lGr0el1jO@'H$M5lGr0el 1jO@'H$M5lGr0el1jO@'H$M5lGr0el1jO@'H$M5lGr0el1jO@'H$M5lGr0el1jO@'H$M5lGr0el 1jO@'Gpr-iD?'(f"h&:J[Vc'5k6AA3s6oE!!.Y~> !d f'iA5s6mu+XTl2ip](!E[Jd33[GLZXpYN=UXTd#=s8ViVriH7bs6ofdITikU>-4o1XfYd/X]hj/ >-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/ >-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1s/g`RXfYd/ X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/ X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/ X]kb,HWmPR>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1 XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1 XfYd/6LV !H[A*X@ffPL6LeRc!;p=,!;9n&V>gMpp](6nF4Xn)f)Pd=n,E=eV7U4CPlLc1A""hjs9p[=XM@fuK*s7cNm#+T15p](9frr2tgrF65Ts(c+SkPtSVs8V9] @fk6]s8DBdcM_5X`rBgap](9frr2tgraQ/qs8Vins6'>j#3Z$dp](9VrF5i@rr3&gs8W(."+1(J P_!=q@tJ1n)"4kJs6o+S[;5fMC]Ekd#.87Hn*b;tJ,~> !<@E@I09_I096DqtL*i#-NB&p](-brr2u$rI#:(qgs6JkPtSRs8V86 I=:#Qs8DBde,=\"chi !p![C,c,rrDfm[0#gss8DZlkP_djkPr6' qYpQHrj;b#r;QckrNuY"r;QckrNuXgrr3&os8W)+"31B@c@NBS[=Ydh6LV !%:07@o@A?n7)M"rrE%.rrDe'$&&?Ymt>1\F1lYH@gLZcs'oPls8UBV@gM8thIC&2 s8V9]@fqDas2MNX"4mMPC\hNQcBMgKSH&WP@q3fK@q2&/s6'>j&bjjdA$,e2P[fsXs/fd@f)PdF @k7<)@q3fK@q2&/s6!m%XoJEcA!I#nX^bkCs8S !<@E?JcS_Sr`T8Q!blXGn:C]ArrE%MrrDeF$(h1sn",,_P/iU7JdC96s+5iks8UicJdCQ>kCS;C qu>jYJchJAs3J0+"5j.YLAHK6gST^WY5eObJqDaSL4ZT.s6'?4&bk%3K"D!^We.8Ns13f6huE`O Jh-TMJqDaSL4ZT.s6"uc])Vf1Ju\kN\q5OFs8T*NWrN+1JqBm"s1X5>L9CK,!pBUHJV&H)Jq=+R n$[*5n)";WD?%%]s81[R!<(dT!;kXX[Vc'5mr\V\~> !%;oe[?P`Bn?i;trrE&+rrDf$$-*#FpVsVK^#$HS[0Z7$s0]8Ss8VQ"[0ZO,n$TR: s8Vim[0+GKs6$l!"7Q9i^&#,Kn'8>KcN!q=[C,JK[C+<[s7cK"&c_=-[FYBXcF(sts44Tcn,NF_ [4D:G[C,JK[C+<[s7`q/f)Pcq[EegPf!Vp:s8UBPcN!pq[C+<[s44Tc^!?Sa!q60XJ[L':K!b_J n$Qs2n(n5UC]CeXs81XQ!<(aS!;kUW[;5g2mrJJZ~> !"W;oCB=M9s8E!!rrDe/"4$rHK_fKarug06CYo*kCMVf,s,?.@X_Zens,?.@ XiCD@F),QUs8SVdCGXiIs(cD's8UA[CYo*kN9C5CCMSUKp](!5KPP@ns8S$nPlLc:CRkG)N,+C' p](9^eqF$<#)q.-s6mXBrbD_ps8S&@s/l06",-^SXo<)BcN!otCMUW`s,?qm#)q.-s6mXBrbE5) s8S&@s/g'qf(]4En(*/-CYo*krbD^kcM.A5c@l14#N#L\N8FU/^%c@KK[0>lpWeG-F8Pt;N;%)h p]'^YCBF81n,@)-N;o_iCYo*crbDc5s5%O,hZ*WOCBBIpV>=s4p]'\tCYo*crbDc5s5%O,hZ*?L CBsV6hJ6oXs46s\"0MV'K`,\8>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nW CMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nW CMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR,RCOTH&CKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh >&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh >&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>5rAc>&.nWCMR*hCKbLh>&.nWCMR*h CKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*h CKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh)"4kJs6neJ[;5fMC]F=hrW)uT rW)lQ#.87Hn*b;tJ,~> !<@E?L&ci(70I1I@821>L&qATs8E!!rrDeJ"5EkUT)+3Arug?VL>W%2L5+Ucs.\]V^4tPFs.\]V ^W%2U?DQjL5)/Kp](!>Sq`!&s8S[FWrN*fL9gjZSq`ik p](9bhk'h%#+jTDs7=Eore:X7s8ShVs1\Ab".oPm^A`ine,TH:L5*nOs.]LI#+jTDs7=Eore;-E s8ShVs1X5Zg\:aJoA?-oL>W%2re:WGfD#=>f:Mtr#N,R]T&]_Ba7tApRb.<6pXc!kNr/hVUA'BD qu?9aL'%8PoDXILUAqZVL?JU.re:[Ls5SighuE`PL'"+L[eb^`qu?8BL?JU.re:[Ls5SigkPt/Q L'R>Mj+` !$n'8V[f)Pcq^"35``kBt's3A=' n,E=gp[?E,]`udNs8ViV`r5]a+$+s3C*5s5*Oa!RC05rr_`8]uKsL!7(>P s8N)nqRuq/!;HK+#L !$CT7qu6m$[K!Z7[Jp7$CBF81kP8onrs7IsCYo*kCMVf*rr`#'CYo$i$MUrT s8T3:CX2tKqJ-Jqs8VQVs8VhHCMVf*rr`#'CQ/8m!;HKm)iSQRs8T3:^&S,/CW?DKCMW\Es7c!^ s.!k?PlC[fp](9VF),RJrVlom[JO_A[K$8crbDe(s8TKBC[_;lrbDLurr35ts8V8'CMVf*rt>(6 C\Rl/p[A.^S82oss8QkMN;ihWp\t0pN,*4crr2umrr2tpqJ-(irr2umrr3%YF79,.s6frHphKtb s8UCACBK7is3CUZ#JL.YCMW\EhYq9uhZ*=cCYo*kp]'EQrG)JJs)\'Q#_`6Xc>.4is5*`j#N#LT CMW\EhYq:!hZ*=cC\Rk[hZ*?$K`,ZgN;rp[r+ga)CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/ CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/ CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE`^nIN`KB+_tj:CMP)/CE[J/+_tj: CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj: CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:s(cs)CMP)/CE[J/ +_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/ +_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_qq`[;5g=f)5UF eciHss0ZYBqptWEqpktZC]EklEr^^~> !<@E>NWFPor^?lkNfN0"s82]fa,]3[s82]f a.E>2_iBc3s7?)I2WOi;oCN"^pS*\.j8]/VqtJ-kVYgDnp](9jVN-uBs20l?s8Tfne,T0&P5#"V qt'jfZAssJrr3H%s8VDJNfN0"s82]fa8:l!_uKb:rf.8es8U9&Nq<;Brf-u]rr4SEs8VDJNfN0" s82]fa--2ss82Efs0@ZFj8].>Ni)^Rs7cQnqkfC6j8]/Vp\t0m])%EuVYgDnp](9jVNUQJs8V]^ VYH/RUAt8Jqi1cQs8UjQNX*o1QB%"&s6'BA$g7QeNfN0"s7cQ^^AX&nci9=.NX2BZs4`Qoqu>jY NX+bIqi6^6s6'BA%-RZfNfNl6j6-I>hkp@4"02D$_u,OD1ldSQNfGrVN\lcV1ldSQNfGrVN\lcV 1ldSQNfGrVN\lcV1ldSQNfGrVN\lcV1ldSQNfGrVN\lcV1ldSQNfGrVN\lcV1ldSQNfGrVN\lcV 1ldSQNfGrVN\lcV1ldSQNfGrVN\lcV1ldSQNfGrVN\lcV1ldSQNfGsrNd`gFN\lcV1ldSQNfGrV N\lcV1ldSQNfGrVN\lcV1ldSQNfGrVN\lcV1ldSQNfGrVN\lcV1ldSQNfGrVN\lcV1ldSQNfGrV N\lcV1ldSQNfGrVN\lcV1ldSQNfGrVN\lcV1ldSQNfGrVN\lcV1ldSQNfGrVN\lcV2#iS_1ldSQ NfGrVN\lcV1ldSQNfGrVN\lcV1ldSQNfGrVN\lcV1ldSQNfGrVN\lcV1ldSQNfGrVN\lcV1ldSQ NfGrVN\lcV1ldSQNfGrVN\lcV1ldSQNfGrVN\lcV1ldSQNfGrVN\lcV1ldSQNfGrVN\lbEn$[*5 qUbZGqUYnZD?%%]s81FF!;k@P[Vc'5mr\V\~> !]a(Z+;G'hsA"<5*qu6m$[K!Z7[Jp7$^&S*4p\DN&rs8),^$l"$]tNn4rrV&jn,31lhT#Tq hS$Vks8Vr/"RlBjp\4[e"4"Tnn,31ehS%52rt*Jh`rH(q^$#FqhS&+Ps1Q,Brr^ic^!?NT"S]pL ^$kn!!8dUd"5a(XcMkK_cN!q$]tOIGp\qi+cMRVEpVsn[n,31dhS&dc#hH]&n,NF$^!?KS"4"Tn n,!%af)!&[cMIPBcGoVXs8VfncM5'TcN!q5qn3*Ws8VQe]a*a#`kB(cs7cN+"o&&s]tNn5rrMlN rOi9qs2OrL#gWJMn%HF7s7cN+#P\8u]tOIGp\qi7p](9,^&S-$p](9^cMbEYcN!q$r4RP_]tIU_ ]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_ ]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_ ]itHLITjFu>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ ]tIU_]ir+_>.qUQs1Nb_]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_ >.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_ >.qUQ]tIU_]ir+_>.m8k[;5g=f)5UFeciHss0ZYBqptWEqpktZC]EklEr^^~> !mrO`ns1SDQ(%;1kHZPGOs/g?`hZ*W$F)u\] s8VQeEu^EtF*$4 !<@E=Op,\g5t+pboTK*[#6;44[f !u@`n(1ikPiI9p](!5`n(1ihT!S0s8VQ-`m2m0 s7cN4*7iET`qTN5`l@cQs453@s8Vi5`qTN5kJl*Qs6og(%JTo&f#H;@s7aOQp](9e`W4<`rrC@B `W4<`rrC@D`rGf4`rH&=p\r/9p](95`qTB1!8d^ps7cE1!7(TD"jY--s8Vim`Wu8 !l#F,8g S>H8cK_fa"hZ*UsF-Q_)eoPohs8RcNF8u7?kPfNBkPtR'F1qVJHiM[[pOrSHX`JR?s8VQ=`ftOc Hhm[GeoPohs8RcIErt4us86pF^&S+scN!otF)u^(rs%%qF5HrsK`,rrhZ*WEf#EsREsLS%s)W8] s6'B&%HmckF*$4 !<@E=Q3C\c6![c-oTo=Rs0`%1[K*`9pQbmTs6ocLs8NJeQBpS2s-Au2s8ShlQ361Is.]IX#Hn+, [_DeAUAC/cj8].FQEL,bj-H"ks8ShlQ3-s`li*1ili6jJQI#U.T)[^:pS.]f^6Y)Js8V]Ne$>:* T)&Bjhj0Sgs8ShgQ361Is-inP$IAbPY1N^RVO!O>q>UZVQBpS2s.]IX#3Z$doAe<*rg!fLs8SCN qu?!]Q4<0[qj*Q.s8S[VRfEEJqN_3[s6KZM#ODEeQBpS2s7_f^Y4qtjWr/.cY4qtjWrA:cWrL-= Q3-s`kPgbZli6jJQEHgFQEpDfo9P]Bs2Y&'"KqM!pT"4Y!rN#\rg!fTs8/+Jqu>jYQ4<0[qj*QF s8/OV])Vf^rg!YTs8V,1Q@Y?SQ38W)[Vc'@e,9:Cdfm0ss0ceEqU>BCqU5YWD?'(nFT?p~> !!)];"a`R6@q12acM@P@[0-K;!4;h$cN!nEp\E,7rsSSHcM.A=cHc1as47.o"8Diqf)UZfcHc1as46tj!r)`pr6>Z !Q%:!#P\8]H[FrUp\oLKp]'E'HftFlH[CGGs5*a% ",-^Sf)9rE>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU" H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU" H[AqCHWkcC>'kU"H[ArrH[].FHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC >'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC >'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>5rqs>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqC HWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqC HWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC)"4kJs8(%>!;atE[;5fMC]F:WqZ-N=#.87Hn*b;t J,~> !<@E>Sd0O0pGkPsT< Sc\*Ts8JSpli6jRT'-.Rr13ues6orY+7K7,St"s/MZ^U:Sh2oDej2Su2Pfqu$$h hk$G&s8Vhb"69F]UA^YfY5eOVqu?!]Scbkis82`c"lGoCkPtS[Se7^.e)0css2U_&kPtRRT)8QV rgjA`s8/CZkPtS]T)\fjkPCbOqu?-aSd4`aqjsDBs8Vkc"MXp9oRD?%%]s81.>!;k(H[Vc'5 mr\V\~> !!)`<#FnD%>#J6bV=2\1!4D\(pW`m0s8U[HcN!nOpWh(Ys8UBip](9kc3!b?s81(Fp](!^s7c?7 !r)`prltcCs8UBip](9kcN!nEp\rGLp](9=cJJU$kPs`6s6p!ff)EqrhXBq4rrVB/f(o=Ln'95Q s8Vi="8Diqf)!8d_T!7q(n!8d_T!7q+o!pBU7rltT>s8W)Ds8N)n qT]??s8UBikPs-3c2c`#rrCXKc3!b?s8L=Drrr/BcM.A=rm(QD$hqrlp](!5cIW$qp\rG?f)PdE J^/hlK?aTdn$Qs2qTf$>qT]8PC]CeXs81+=!;k%G[;5g2mrJJZ~> !^DoV>5HIhZ*V&H]7_!pNq8Ds8W"D#i>U]S9pe+s5*a%s8N2qs-0AZrrDNeHP`N3H[C_Os5&*L n,Mj8H[CF9P^@c6s8Vh?"31B@Pl,k.kPbD\[JbF]n,Mj8H[CF9P^@c6s8W"D*2S=8H]8")hKsV+ s8RFmhZ*VGH^t-9hKsV+s8W(Fs8N)UqKi\.s8SU9SH&WGH[FWLs7q!E[K$9iK`$0"[K$9iK`$/t kO8@r(:F2BV0f'=s0[34]o7;bSH&WXH[FrErHe[Ts8V88r-KKms8SpBV>pS'H[E1#s.t(=s8TKR HbKIRN-h],s2P%b"-iic`r(14+a\PZH[?o_HQd`_+a\PZH[?o_HQd`_+a\PZH[?o_HQd`_+a\PZ H[?o_HQd`_+a\PZH[?o_HQd`_+a\PZH[?o_HQd`_+a\PZH[?o_HQd`_+a\PZH[?o_HQd`_+a\PZ H[?o_HQd`_+a\PZH[?o_HQd`_+a\PZH[?q9H[[,bHQd`_+a\PZH[?o_HQd`_+a\PZH[?o_HQd`_ +a\PZH[?o_HQd`_+a\PZH[?o_HQd`_+a\PZH[?o_HQd`_+a\PZH[?o_HQd`_+a\PZH[?o_HQd`_ +a\PZH[?o_HQd`_+a\PZH[?o_HQd`_+a\PZH[?o_HQd`_+ocn9+a\PZH[?o_HQd`_+a\PZH[?o_ HQd`_+a\PZH[?o_HQd`_+a\PZH[?o_HQd`_+a\PZH[?o_HQd`_+a\PZH[?o_HQd`_+a\PZH[?o_ HQd`_+a\PZH[?o_HQd`_+a\PZH[?o_HQd`_+a\PZH[?o_HQd_Qn$Qs2n'2*EC]CeXs8:1A!<:@D !;t+H[;5g2mrJJZ~> !<@E?U'-WN8XbP870&YCUAb/lUAk5fU(=^4s7<[nU9<+NUAOubVRHL(s.TSXs8W"k!pBU`qk=)) rVll3q4\>]s8SgfY5A7rU8$iNs88T+kPtRjU:1+%kG"]Jqu?QnZGZ_>s7?5a(W38IU9=OrkG"^B s7?s8VPfr1a5[ rLt(Rs8Tg-^An5VU8lPBU8#7!s7;tZn*g4L"OI,Jn#H;[*mald^7r@As3%.2ci=$ZU;$[-bG(`W s8/sn_uKbgrh9M#s8U^KU4+qnU,8U=1np^$U7sK=U,8U=1np^$U7sK=U,8U=1np^$U7sK=U,8U= 1np^$U7sK=U,8U=1np^$U7sK=U,8U=1np^$U7sK=U,8U=1np^$U7sK=U,8U=1np^$U7sK=U,8U= 1np^$U7sK=U,8U=1np^$U7sK=U,8U=2#j;!1np^$U7sK=U,8U=1np^$U7sK=U,8U=1np^$U7sK= U,8U=1np^$U7sK=U,8U=1np^$U7sK=U,8U=1np^$U7sK=U,8U=1np^$U7sK=U,8U=1np^$U7sK= U,8U=1np^$U7sK=U,8U=1np^$U7sK=U,8U=1np^$U7sLEU3e_kU,8U=1np^$U7sK=U,8U=1np^$ U7sK=U,8U=1np^$U7sK=U,8U=1np^$U7sK=U,8U=1np^$U7sK=U,8U=1np^$U7sK=U,8U=1np^$ U7sK=U,8U=1np^$U7sK=U,8U=1np^$U7sK=U,8U=1np^$U+#K=D?'(J"h&:J[Vc'BbPhMAbPhM> b6GCls6oE!!.Y~> !^ f%/^@hU^9Ps8ViE"7Q9ihYbq)p\k*lkPa!2rsIW6f&#THf%0Tqs8:FfkMFe@hZ*WMf%0Tqs45cq s8Us,hZ*WMf%0Tqs8LULrrDfied_BRs5)>`s8ViEf(]4Eq:5];s8ViMr72#>s8ViMr71oCs8CLZ n,NFNf'!)5n(-@ahU^9@rr<#L!VcWmecbIAs7bCJefO;[s6%trs8VQ=f'iY=kLShrs6nOin,NFE f'!)5n,Cl?hZ*WEr76=#f%+$UelpYU>1V8.f%+$UelpYU>1V8.f%+$UelpYU>1V8.f%+$UelpYU >1V8.f%+$UelpYU>1V8.f%+$UelpYU>1V8.f%+$UelpYU>1V8.f%+$UelpYU>1V8.f%+$UelpYU >1V8.f%+$UelpYU>1V8.f%+$Uelr+)ITk=R>1V8.f%+$UelpYU>1V8.f%+$UelpYU>1V8.f%+$U elpYU>1V8.f%+$UelpYU>1V8.f%+$UelpYU>1V8.f%+$UelpYU>1V8.f%+$UelpYU>1V8.f%+$U elpYU>1V8.f%+$UelpYU>1V8.f%+$UelpYU>1V8.s42O#f%+$UelpYU>1V8.f%+$UelpYU>1V8. f%+$UelpYU>1V8.f%+$UelpYU>1V8.f%+$UelpYU>1V8.f%+$UelpYU>1V8.f%+$UelpYU>1V8. f%+$UelpYU>1V8.f%+$UelpYU>1V8.f%+$UelpYU>1Q%/[;5g2c3:Uks0ZYBr6G9As3CTDr6>MS C]EklEr^^~> !`W-#;`W-#9`Wihds6oDt!.Y~> !<@E@V@'WK[FJk8[:@IU/o!;r\o!;<8ibPqPAqu?["ZDQ[^s82cps/#k`s8W"o!pfmdqPFAd s8VigV?H5bs7c9errq/SVX+9^r2'J*rr2umrr2u0rh]k^s8VtnY5\G$g]")MrrN#krr3)PVP_91 s8VinrrpH?VX+9^pSJ&1s8U.;V?"s@rrB5#V?"O5s8VinrrpH?VX+9^r20Mo!W2Wjrs75RVX+9^ VP^s(rrDfmrrp!2VX+9^rhf_q!:0KY!4r10!;HKm"hLS.li7"\V?6Yps8;WkV?6Yps8;TnVR$6N rMC()n,NF^s8VPfVR$7%qtpBm"NRCFs3pqD!rN#tr:g5g*ie]/s7cQnn#E7^Wpfufp](9^WhuYn oDejbs8Vhrrh]e !IBrrDflec>IBrrDfmec=S'rrCpTecY+8 s6"saJ_#J)"@DRbC]EkC"gr.G[;5g>`W-#;`W-#9`Wihds6oDt!.Y~> !Mu`&= rrMT.reppAs8VtT#,U2Ns7bBHrJV&rs8Ur7N:6fHXo=7[f'iVp](9^esq\XkPtSU MurbRf)1I,PlC[_hYW6?V;CtHs6nO/N/Zs"s87fVf'iVcDTkPtSXN;ZAKs8Ir]Pg9%'pWf$%N!>Nlp](!5Pl6OFPg9%'pXYl5Muql9pOS9SN.Quk)"4kJs6mr2[;5fM C]EkC#.87Hn*b;tJ,~> !<@E@WWI2h$.JqSj/T-Js8U.=WX%GMqu?]fe#r\M%)1p%s82EF[]6@ns8Vhn "0VP$j8>nWZMsk(j85hb^?>Cnqt&^RWiGCbs88l*hs^IBs7=^BWiGCbs8K#&]&W\fqr>9eWWMMd s8K%urrDB\WWp&pqu?QR])J]2li7"\WW;qms8T)!qtgs81us WiFDF])AW/qtg?lWWoc`p](!BZMgd-ZJ5-RpY3"PWWocdp](!F[f*3.j8]"ZJZ=:$K;o&&n$[*5 n&#=;D?%%]s6mi0[Vc'5mr\V\~> !]6RN-fVmPhk0skP+rT&+AB3kP,#Vn+Zk^hVS#,s8:^Tp](9ih?36Hs6oa>!;HBj !:TpD!r)`pqq_A:p\t0npZMM3"n2KkpYOd+rrDNeh>mug6rVm)rkMG(is8VfLs8N)n r8%G:rr2umqq_A:p\k*rpZLDip](9kh>mug6rr3#nkPj<>p](9hhYI3OhYI0RhXCL-r8%J;p\t0rpZLDikO8BL#5@<;hXCL-rSIAMrn[\= p\t0npZMM3!U'4VrrMlWrS@SO=C]CeXs6mr3[;5g2 mrJJZ~> !5O6]CRg?BF1I53^&S,&WJgr!s8S=CMui,9k_oQ*pX+p%PlLd'r/?).N/Ur!N*;1! >)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1! >)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*?7? ITh\h>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur! N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur! N*;1!>)\DDs,;>/N/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DD N/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DD N/Ur!N*;1!>)\CWn$Qs2n%An4C]CeXs6mW*[;5g2mrJJZ~> !<@EAZ3$&3D>UUAFcqc:P.@k#e,TH^WNlW\s8TNeZ2s:ckct6TpX-8K[f?B^r3CcsZEeb]Z?`a] H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?`a] H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?cJU IX/6)H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ZEeb] Z?`a]H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ZEeb] Z?`a]H*X`$s0@#tZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ ZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ZEeb]Z?`a]H*X`$ ZEeb]Z?`a]H*X_(n$[*5n%Jt6D?%%]s6mZ+[Vc'5mr\V\~> ! !UPTc9U+dA37Pa!>UPTc9U+dA37Pa!>UPTc9U+dA37Pa!>UPTc9U+dA37Pa!>UPTc9U +dA37Pa!>UPTc9U+dA37Pa!>UPTc9U+dA37Pa!>UPTc9U+dA37Pa!>UPTc9U+dA37Pa!>UPTc9U +oddU+dA37Pa!>UPTc9U+dA37Pa!>UPTc9U+dA37Pa!>UPTc9U+dA37Pa!>UPTc9U+dA37Pa!>U PTc9U+dA37Pa!>UPTc9U+dA37Pa!>UPTc9U+dA37Pa!>UPTc9U+dA37Pa!>UPTc9U+dA37Pa!>U PTc9U+dA37Pa!?kP^=RUPTc9U+dA37Pa!>UPTc9U+dA37Pa!>UPTc9U+dA37 Pa!>UPTc9U+dA37Pa!>UPTc9U+dA37Pa!>UPTc9U+dA37Pa!>UPTc9U+dA37Pa!>UPTc9U+dA37 Pa!>UPTc9U+dA37PSiksC]Ek:"gr.G[;5g2]`tl[s6oDt!.Y~> !<@EB[KE7PD6j&I"fd`oU5l+`[KP4Zs8V8\[KF,[PYG$1q'hL[^J$$[PYG$1q'hL[^J$$[PYG$1q'hL[^J$$[PYG$1q'hL [^J$$[PYG$1q'hL[^J$$[PYG$1q'hL[^J$$[PYG$1q'hL[^J$$[PYG$1q'hL[^J$$[PYG$1q'hL [^J$$[PYG$1q'hL[OCUQD?'(9"h&:J[Vc'5\d#T[s6oE!!.Y~> !3G'PkN?%3 k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3 k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%K kC-Utk?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'P kN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'P kN?%3k?@'3>6!c4>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3 >3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3 >3G'PkN?%3k?@%8n$Qs2n%An4C]CeXs6mW*[;5g2mrJJZ~> !VSQXhD,nPe`Lb[Cr\nP_#'MPQVil[;5g1[01:F[;5g1 [0:@Gn*b;tJ,~> !<@EB\cRJ'VYRe+U5"8FK"SYthuE`B^8JODa4&@c]"klYcdTpc\q.GD\caGM[Vc'4[KLII[Vc'4 [KUOJn*bB!J,~> !=f(nb;cBOQPV7c6sp\t0mpS[KZpOVeKn,E'4mt'qYmfYuG[;5g1[01:F[;5g1[0:@G n*b;tJ,~> ! !<@Cr^4F"L^4F"L^4F!%^*rHYD?'(1"h&:J[Vc'5Z3IaSs6oE!!.Y~> ! !+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ >+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ >+D*dS=EcQS6DGQ>+D*dS=Ed_S:4Y3S6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQ S6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQ S6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>5t+>>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*d S=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*d S=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ)"4kJmBm%3s0ZY0[0:@Gn*b;tJ,~> !<@Cra+;9^a83i*H,msNa2`JGa*G_GH,msNa2`JGa*G_GH,msNa2`JGa*G_GH,msNa2`JGa*G_G H,msNa2`JGa*G_GH,msNa2`JGa*G_GH,msNa2`JGa*G_GH,msNa2`JGa*G_GH,msNa2`JGa*G_G H,msNa2`JGa*G_GH,msNa2`K*a*r ! !6s:+f2"YV55?3V'2\3+f2"YV55?3V'2\3+f2"YV55?3V'2\3+f2"YV55?3V'2\3 +f2"YV55?3V'2\3+f2"YV55?3V'2\3+f2"YV55?3V'2\3+f2"YV55?3V'2\3+f2"YV55?3V'2\3 +f2"YV55?3V'2\3+f2"YV55@8V1'SaV'2\3+f2"YV55?3V'2\3+f2"YV55?3V'2\3+f2"YV55?3 V'2\3+f2"YV55?3V'2\3+f2"YV55?3V'2\3+f2"YV55?3V'2\3+f2"YV55?3V'2\3+f2"YV55?3 V'2\3+f2"YV55?3V'2\3+f2"YV55?3V'2\3+oeBa+f2"YV55?3V'2\3+f2"YV55?3V'2\3+f2"Y V55?3V'2\3+f2"YV55?3V'2\3+f2"YV55?3V'2\3+f2"YV55?3V'2\3+f2"YV55?3V'2\3+f2"Y V55?3V'2\3+f2"YV55?3V'2\3+f2"YV55?3V'2ZPn$VIs!WTRnCBX\+mrJJZ~> !<@CrbCRifbPB>11s='!bKD`cb;@Dc1s='!bKD`cb;@Dc1s='!bKD`cb;@Dc1s='!bKD`cb;@Dc 1s='!bKD`cb;@Dc1s='!bKD`cb;@Dc1s='!bKD`cb;@Dc1s='!bKD`cb;@Dc1s='!bKD`cb;@Dc 1s='!bKD`cb;@Dc1s='!bKDaBbC2:kb;@Dc1s='!bKD`cb;@Dc1s='!bKD`cb;@Dc1s='!bKD`c b;@Dc1s='!bKD`cb;@Dc1s='!bKD`cb;@Dc1s='!bKD`cb;@Dc1s='!bKD`cb;@Dc1s='!bKD`c b;@Dc1s='!bKD`cb;@Dc1s='!bKD`cb;@Dc2#kaE1s='!bKD`cb;@Dc1s='!bKD`cb;@Dc1s='! bKD`cb;@Dc1s='!bKD`cb;@Dc1s='!bKD`cb;@Dc1s='!bKD`cb;@Dc1s='!bKD`cb;@Dc1s='! bKD`cb;@Dc1s='!bKD`cb;@Dc1s='!bKD`cb;@Bjn$_P!!WTUoD$9n-mr\V\~> !5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c >5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c >5.bpp\.kcpKI=c>5.bpp\.kkpO65.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kc pKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kc pKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>6">B>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bp p\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bp p\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI;Xn$VIs!WTRnCBX\+mrJJZ~> ! !<@Crc[jDnc[jDnc[jCDcRA80s8VNgFT?p~> ! !WZCYJTHB`JTHB`JTHB`c>s'UEr^^~> !W[L3JTZNdJTZNdJTZNdc?03WFT?p~> ! !ruLZF+Ne2mt'qYmt'qYn'LM*F74/MJ,~> !s!U4Fb0"4mt'qYmt'qYn'LM*FmjGQJ,~> !s$VfF+Ne2mt'qYmt'qYn'LM*F74/MJ,~> !ruLZF+NeMn!3p(mt'qYn"K1PF74/MJ,~> !s!U4Fb0"On!3p(mt'qYn"K1PFmjGQJ,~> !s$VfF+NeMn!3p(mt'qYn"K1PF74/MJ,~> !ruLZF+NeMn! !s!U4Fb0"On! !s$VfF+NeMn! !ruLZF+NeMn,NEUn,J>tmt'qYn"K1PF74/MJ,~> !s!U4Fb0"On,NEUn,JE!mt'qYn"K1PFmjGQJ,~> !s$VfF+NeMn,NEUn,J>tmt'qYn"K1PF74/MJ,~> !ruLZF+NeMn,NEUn,J>tmt'qYn"K1PF74/MJ,~> !s!U4Fb0"On,NEUn,JE!mt'qYn"K1PFmjGQJ,~> !s$VfF+NeMn,NEUn,J>tmt'qYn"K1PF74/MJ,~> !ruLZF8YM)!;Q$_!:fOX!9N\L!;Z*`!9 !s!U4Fo:_+!;Q$_!:fOX!9N\L!;Z*`!9 !s$VfF8YM)!;Q$_!:fOX!9N\L!;Z*`!9 !ruLZF8bS-!<2He!;Z*`!:fOX!9N\L!;Z*`!9 !s!U4FoCe/!<2He!;Z*`!:fOX!9N\L!;Z*`!9 !s$VfF8bS-!<2He!;Z*`!:fOX!9N\L!;Z*`!9 !ruLZF8bS-!<2He!<;Nd!<;Nf!<;Nd!<2Hc!<;Nd!;u9d!:Tme!:TmerpTdcrpTje%dsAtmf3@V mf3@V!!)KVr;c]_r;cldrr<,h!!*#err<,h!!)rcrr<,h!:Tme!:Tmes6osf!q-*hrpTdcs6osf !:Tdbs6omdrpTje_!h='RIC07Ja\0YJa]<$"* !s!U4FoCe/!<2He!<;Nd!<;Nf!<;Nd!<2Hc!<;Nd!;u9d!:Tme!:TmerpTdcrpTje%dsAtmf3@V mf3@V!!)KVr;c]_r;cldrr<,h!!*#err<,h!!)rcrr<,h!:Tme!:Tmes6osf!q-*hrpTdcs6osf !:Tdbs6omdrpTje_!h='RIC09Ja\0YJa]<$"*O'T!.Y~> !s$VfF8bS-!<2He!<;Nd!<;Nf!<;Nd!<2Hc!<;Nd!;u9d!:Tme!:TmerpTdcrpTje%dsAtmf3@V mf3@V!!)KVr;c]_r;cldrr<,h!!*#err<,h!!)rcrr<,h!:Tme!:Tmes6osf!q-*hrpTdcs6osf !:Tdbs6omdrpTje_!h='RIC07Ja\0YJa]<$"* !ruLZF8YM+!<)Bd!<;Nf!#4l%!:Kmfn*^5Vmf3@Vmf3@Vmf3@bn,ECfn,ECfn,E@pmf3@Vmf3@V !!)Ke!"eT!!:T@V!:Kmfmf3@Vmf3@cn,ECfn,E@fn,<:kmf3@V!!)Ke!;u !s!U4Fo:_-!<)Bd!<;Nf!#4l%!:Kmfn*^5Vmf3@Vmf3@Vmf3@bn,ECfn,ECfn,E@pmf3@Vmf3@V !!)Ke!"eT!!:T@V!:Kmfmf3@Vmf3@cn,ECfn,E@fn,<:kmf3@V!!)Ke!;u !s$VfF8YM+!<)Bd!<;Nf!#4l%!:Kmfn*^5Vmf3@Vmf3@Vmf3@bn,ECfn,ECfn,E@pmf3@Vmf3@V !!)Ke!"eT!!:T@V!:Kmfmf3@Vmf3@cn,ECfn,E@fn,<:kmf3@V!!)Ke!;u !ruLZF8GA)!<;Nf!<;Nf!"A;r!:Kmfn*^5Vmf3@bn,ECbn,ECfn,ECfn,EA/mf3@Vmf3@V!!)KV !!)Hf!:T@V!:Kmfmf3@Vmf3@_n,E@smf3@Vmf3@V!!)KV!!)rcrrtmt'qYn"K1PF74/MJ,~> !s!U4Fo(S+!<;Nf!<;Nf!"A;r!:Kmfn*^5Vmf3@bn,ECbn,ECfn,ECfn,EA/mf3@Vmf3@V!!)KV !!)Hf!:T@V!:Kmfmf3@Vmf3@_n,E@smf3@Vmf3@V!!)KV!!)rcrr !s$VfF8GA)!<;Nf!<;Nf!"A;r!:Kmfn*^5Vmf3@bn,ECbn,ECfn,ECfn,EA/mf3@Vmf3@V!!)KV !!)Hf!:T@V!:Kmfmf3@Vmf3@_n,E@smf3@Vmf3@V!!)KV!!)rcrrtmt'qYn"K1PF74/MJ,~> !ruLZF8>;(!!)Kb!!DZi!:Tdb!q-*hqsXObqsXObs6osfs6osf)".G)n*^5Vmf3@Vmf3@V!!)KV !!)Hf!:TdbqsXF_%IX8sn*^5Vmf3@Vmf3@cn,EA,mf3@Vmf3@Vmf3@V!!)KV!!)Hf!:T@V!:Kmf rU9adrU9^c]C5e"o'cJVs6osfZ1%^Op[A"[s6osff^Jh?naHJXo^De[k3r !s!U4FntM*!!)Kb!!DZi!:Tdb!q-*hqsXObqsXObs6osfs6osf)".G)n*^5Vmf3@Vmf3@V!!)KV !!)Hf!:TdbqsXF_%IX8sn*^5Vmf3@Vmf3@cn,EA,mf3@Vmf3@Vmf3@V!!)KV!!)Hf!:T@V!:Kmf rU9adrU9^c]C5e"o'cJVs6osfZ1%^Qp[A"[s6osff^Jh?naHJXo^De[k3r !s$VfF8>;(!!)Kb!!DZi!:Tdb!q-*hqsXObqsXObs6osfs6osf)".G)n*^5Vmf3@Vmf3@V!!)KV !!)Hf!:TdbqsXF_%IX8sn*^5Vmf3@Vmf3@cn,EA,mf3@Vmf3@Vmf3@V!!)KV!!)Hf!:T@V!:Kmf rU9adrU9^c]C5e"o'cJVs6osfZ1%^Op[A"[s6osff^Jh?naHJXo^De[k3r !ruLZF8bS-!<2He!!;Th!;u^Z!<2He!!;Th!3u"mN;2lA!<2He!!;Th!8-c?!:fOX!;,a[ !9WbM!;Z*`!6Xd1!:]IW!8d2E!;c0a!8d2E!<2He!;Q$_!<2He!/L%C!<2He!;Z*`!9W_PF74/M J,~> !s!U4FoCe/!<2He!!;Th!;u^Z!<2He!!;Th!3u"mNqi)C!<2He!!;Th!8-c?!:fOX!;,a[ !9WbM!;Z*`!6Xd1!:]IW!8d2E!;c0a!8d2E!<2He!;Q$_!<2He!/L%C!<2He!;Z*`!9W_PFmjGQ J,~> !s$VfF8bS-!<2He!!;Th!;u^Z!<2He!!;Th!3u"mN;2lA!<2He!!;Th!8-c?!:fOX!;,a[ !9WbM!;Z*`!6Xd1!:]IW!8d2E!;c0a!8d2E!<2He!;Q$_!<2He!/L%C!<2He!;Z*`!9W_PF74/M J,~> !ruLZF8bS-!<2He!$1M.!:T@V!:Kmfmf3@Vmf3@V!!)KV!!)KV!!)HfrU9ads6osfs6osf$L[rp n*^5Vmf3@VrW!&h!!)Ke!"&)o!:Kmfn*^5Vr9sXcs6osf$L[rpn*^5Vmf3@VrW)lbrr !s!U4FoCe/!<2He!$1M.!:T@V!:Kmfmf3@Vmf3@V!!)KV!!)KV!!)HfrU9ads6osfs6osf$L[rp n*^5Vmf3@VrW!&h!!)Ke!"&)o!:Kmfn*^5Vr9sXcs6osf$L[rpn*^5Vmf3@VrW)lbrr !s$VfF8bS-!<2He!$1M.!:T@V!:Kmfmf3@Vmf3@V!!)KV!!)KV!!)HfrU9ads6osfs6osf$L[rp n*^5Vmf3@VrW!&h!!)Ke!"&)o!:Kmfn*^5Vr9sXcs6osf$L[rpn*^5Vmf3@VrW)lbrr !ruLZF8YM)!<2Hc!<;Nf!<;Nd!<2Hc!<)Bd!;u !s!U4Fo:_+!<2Hc!<;Nf!<;Nd!<2Hc!<)Bd!;u !s$VfF8YM)!<2Hc!<;Nf!<;Nd!<2Hc!<)Bd!;u !ruLZF+Nf[n,EB\n,NFWn,<=en,ECfn,EA!mf3@Vmf3@Vmf3@V!!)Hf!;l6a!<)Bd!<;Nf!!hrm !:T@V!:Tmes6osfr9sXcs6osfoC)^_)q!!)KV!!)Hf!:Kmfn*^5VmI(-umrJJZ~> !s!U4Fb0#]n,EB\n,NFWn,<=en,ECfn,EA!mf3@Vmf3@Vmf3@V!!)Hf!;l6a!<)Bd!<;Nf!!hrm !:T@V!:Tmes6osfr9sXcs6osfoC)^>p$_k[s6osfs6osf&FTT!n*^5Vn*^5Vmf3@V!!)obrW)oc rrE)frr_)q!!)KV!!)Hf!:Kmfn*^5VmI(."mr\V\~> !s$VfF+Nf[n,EB\n,NFWn,<=en,ECfn,EA!mf3@Vmf3@Vmf3@V!!)Hf!;l6a!<)Bd!<;Nf!!hrm !:T@V!:Tmes6osfr9sXcs6osfoC)^_)q!!)KV!!)Hf!:Kmfn*^5VmI(-umrJJZ~> !ruLZF+Nf[n,EB\n,NFVn,<;'mf3@Vmf3@V!!)KV!!)KV!!)Hf!:Kmfq=":_s6osfs6osf$1@io n*^5Vmf3@en,ECcn,!+Vn,J@=n,<;'mf3@Vmf3@V!!)KV!!)KV!!)Hf!:Kmfq=":_s6ogb"7H3i n,!(dmf3@bn,ECfn,!(hmf3@Vmf3@cn,ECfn,ECfn,EA)mf3@Vmf3@V!!)KV!!)Hf!:T@V!:Kmf n,!+^n,*1bn,<=Hn,ECen,ECfn,E@omf3@Vmf3@V!!*#erW)$JrrE#drr !s!U4Fb0#]n,EB\n,NFVn,<;'mf3@Vmf3@V!!)KV!!)KV!!)Hf!:Kmfq=":_s6osfs6osf$1@io n*^5Vmf3@en,ECcn,!+Vn,JF?n,<;'mf3@Vmf3@V!!)KV!!)KV!!)Hf!:Kmfq=":_s6ogb"7H3i n,!(dmf3@bn,ECfn,!(hmf3@Vmf3@cn,ECfn,ECfn,EA)mf3@Vmf3@V!!)KV!!)Hf!:T@V!:Kmf n,!+^n,*1bn,<=Hn,ECen,ECfn,E@omf3@Vmf3@V!!*#erW)$JrrE#drr !s$VfF+Nf[n,EB\n,NFVn,<;'mf3@Vmf3@V!!)KV!!)KV!!)Hf!:Kmfq=":_s6osfs6osf$1@io n*^5Vmf3@en,ECcn,!+Vn,J@=n,<;'mf3@Vmf3@V!!)KV!!)KV!!)Hf!:Kmfq=":_s6ogb"7H3i n,!(dmf3@bn,ECfn,!(hmf3@Vmf3@cn,ECfn,ECfn,EA)mf3@Vmf3@V!!)KV!!)Hf!:T@V!:Kmf n,!+^n,*1bn,<=Hn,ECen,ECfn,E@omf3@Vmf3@V!!*#erW)$JrrE#drr !ruLZF+Nf[n,EB\n,NFZn,ECen,EA(mf3@Vmf3@V!!)KV!!)KV!!)Hf!:Kmfq!\1^&FTT!n*^5V mf3@Vmf3@V!!*#errDucrrDNVs,?aArrE&err !s!U4Fb0#]n,EB\n,NFZn,ECen,EA(mf3@Vmf3@V!!)KV!!)KV!!)Hf!:Kmfq!\1^&FTT!n*^5V mf3@Vmf3@V!!*#errDucrrDNVs,QmCrrE&err !s$VfF+Nf[n,EB\n,NFZn,ECen,EA(mf3@Vmf3@V!!)KV!!)KV!!)Hf!:Kmfq!\1^&FTT!n*^5V mf3@Vmf3@V!!*#errDucrrDNVs,?aArrE&err !ruLZF+NeMn,NFZn,ECen,E@smf3@Vmf3@V!!)KV!!*#errE)frrDoarrE)frr !s!U4Fb0"On,NFZn,ECen,E@smf3@Vmf3@V!!)KV!!*#errE)frrDoarrE)frrq!\4_rpTje%IX8sn*^5Vmf3@Vmf3@en,ECfn,ECa n,ECfn,EA-mf3@Vmf3@V!!)Hf!:T@V!:Kmfn*^5Vn*^5Vn,<=en,E@imf3@VrW)lbrrE)frrE)f rr !s$VfF+NeMn,NFZn,ECen,E@smf3@Vmf3@V!!)KV!!*#errE)frrDoarrE)frr !ruLZF+NeMn,NFYn,*1cn,ECfn,ECfn,37bn,ECfn,EC`n,37cn,37cn,E@kmf3@V!!)udr;cic r;cEWs,?^@quHccrrE)frrE)fr;cfbrrE)frrDl`r;cicr;cldrrE)fr;cicr;cfbrrE)fr;cic rr<,h!!)rcrrE)frrE)frrE)fr;cicrr !s!U4Fb0"On,NFYn,*1cn,ECfn,ECfn,37bn,ECfn,EC`n,37cn,37cn,E@kmf3@V!!)udr;cic r;cEWs,QjBquHccrrE)frrE)fr;cfbrrE)frrDl`r;cicr;cldrrE)fr;cicr;cfbrrE)fr;cic rr<,h!!)rcrrE)frrE)frrE)fr;cicrr !s$VfF+NeMn,NFYn,*1cn,ECfn,ECfn,37bn,ECfn,EC`n,37cn,37cn,E@kmf3@V!!)udr;cic r;cEWs,?^@quHccrrE)frrE)fr;cfbrrE)frrDl`r;cicr;cldrrE)fr;cicr;cfbrrE)fr;cic rr<,h!!)rcrrE)frrE)frrE)fr;cicrr !ruLZF+NeMn,NEUn,J>tmt'r:n,EBCn,ECPmfRY"Er^^~> !s!U4Fb0"On,NEUn,JE!mt'r:n,EBCn,ECPmfR_$FT?p~> !s$VfF+NeMn,NEUn,J>tmt'r:n,EBCn,ECPmfRY"Er^^~> !ruLZF+O@ss6K.Rs-`?UN.LGKn%8&g!<;Nf!/L%C!9rqSF74/MJ,~> !s!U4Fb0Rus6K.Rs-`?UNe-YMn%8&g!<;Nf!/L%C!9rqSFmjGQJ,~> !s$VfF+O@ss6K.Rs-`?UN.LGKn%8&g!<;Nf!/L%C!9rqSF74/MJ,~> "9;U*F8pf][%%0sn*Z/7n,NEUn,J>tmt'r=n,36@n,ECPmfRY"Er^^~> "9<]IFoR#][$h$qn*Z59n,NEUn,JE!mt'r=n,36@n,ECPmfR_$FT?p~> "9?^IF8pdkZiC.,n*Z/7n,NEUn,J>tmt'r=n,36@n,ECPmfRY"Er^^~> rr<,hF8pf][@@<]s6oE8"TRrZs8SMUs,;NtJa\0YU$i))mrJJZ~> rr<,hFoR#][@.0[s6oE:"TRrZs8SMUs,M[!Ja\0YU$i)+mr\V\~> rr<,hF8pdkZiC.,n*c2 "p"\lF8qc#JcE7[s5sLamu35%mf8=Cn,NFfn,NEUn,J>tmt'qYn"K1PF74/MJ,~> "p"\lFoRo!JcE7[s5sLamuEG)mf8CEn,NFfn,NEUn,JE!mt'qYn"K1PFmjGQJ,~> "9AJjF8pdkZiC4.mu35%mf8=Cn,NFfn,NEUn,J>tmt'qYn"K1PF74/MJ,~> "p"\lF8qc#JcE7[s5sLamu35&mfEHIqX=Ias6p!fRIC07Ja\0YJa]<$"* "p"\lFoRo!JcE7[s5sLamuEG*mfEHKqX=Ias6p!fRIC09Ja\0YJa]<$"*O'T!.Y~> "9AJjF8pdkZiC4.mu35&mfEHIqX=Ias6p!fRIC07Ja\0YJa]<$"* "p"\lF8qc#JcE7[s5sLamu35&mfNNJN;N)Ds8VQfs-`?UN.LGKmt'r$mfRY"Er^^~> "p"\lFoRo!JcE7[s5sLamuEG*mfNNLNr/;Fs8VQfs-`?UNe-YMmt'r$mfR_$FT?p~> "9AJjF8pdkZiC4.mu35&mfNNJN;N)Ds8VQfs-`?UN.LGKmt'r$mfRY"Er^^~> "p"\lF8qc#pAb!idf94Frr;uurr;uus8W*!MuWh?"97hKN;W/Es8S&Tn,NFfn,NEUn,J>tmt'qY n"K1PF74/MJ,~> "p"\lFoRo!pAb!idf94Frr;uurr;uus8W*!MuWh?"97hMNr8AGs8S,Vn,NFfn,NEUn,JE!mt'qY n"K1PFmjGQJ,~> "9AJjF8pdkZiC4.mu35'n,NFfN;N)Ds8VQfs-`?UN.LGKmt'r$mfRY"Er^^~> "p"\lF8qc#pAb-mrr;uueGoOKrr;uus8W*!rr;uus8W*!MuWh?"97hKN;W/ErrVYJN;W/Es8VQf s-J[qmt'qYn"K1PF74/MJ,~> "p"\lFoRo!pAb-mrr;uueGoOKrr;uus8W*!rr;uus8W*!MuWh?"97hMNr8AGrrVYLNr8AGs8VQf s-Jasmt'qYn"K1PFmjGQJ,~> "9AJjF8pdkZiC4.mu35'n,NChmu35'n,NFfn,NESN.LGKmt'r$mfRY"Er^^~> "p"\lF8qc#pAb-mrr;uu#6+Z'rr<'!r;cltrrE*!rrE*!rrE*!r;cisr;cltrr<6&!!*$!!;ZZp !<3#u!<<*!!/pmWk6(bQN/[`(s8W,fs,?mEs8W,f!<8@DJa\0YJa]<$"* "p"\lFoRo!pAb-mrr;uu#6+Z'rr<'!r;cltrrE*!rrE*!rrE*!r;cisr;cltrr<6&!!*$!!;ZZp !<3#u!<<*!!/pmWk6(bQNfO),s8W,fs,R$Gs8W,f!<8@FJa\0YJa]<$"*O'T!.Y~> "9AJjF8pdkZiC4.mu35(n,NFfn,J@En,NFfmf "p"\lF8qc#pAb-mrr;uu!<;lqs8W*!)?0[:s8N'!s8N'!rr<'!rr<'!!!*'!!!*&s!!<0#!;ZZp !<3#u!<<*!!/pmWk6(bQN/[`(s8W)es,?pFs8RZ=Ja\0YJa]r6"* "p"\lFoRo!pAb-mrr;uu!<;lqs8W*!)?0[:s8N'!s8N'!rr<'!rr<'!!!*'!!!*&s!!<0#!;ZZp !<3#u!<<*!!/pmWk6(bQNfO),s8W)es,R'Hs8RZ=Ja\0YJa]r6"*O'T!.Y~> "9AJjF8pdkZiC4.mu35(n,NFen,J@Fn,NE=mt'qYmt'r6mfRY"Er^^~> "p"\lF8qc#pAb!is8W&us8W*!s8W*!s8W*!#QFc(rr<'!s8E#ss8N*!s8N'!s8E#ts8N*!s8;rt s8N)us8N*!s8N(Ws8V6as6ko*rpTmerU9cFrU9dd!:PL=JcC<$JcEjlm-b$tmrJJZ~> "p"\lFoRo!pAb!is8W&us8W*!s8W*!s8W*!#QFc(rr<'!s8E#ss8N*!s8N'!s8E#ts8N*!s8;rt s8N)us8N*!s8N(Ws8V6as6ku.rpTmerU9cHrU9dd!:PL=JcC<$JcEjlm-b%!mr\V\~> "9AJjF8pdkZiC4.mu35)n,NFdn,J@Fn,NCfmt(Lis+13$s2k<-mfRY"Er^^~> #6=emF8qc#s8;rps8N)us8N'#rr<&us8N*!s8N*!s8N'&rr<'!!!)utrW)uuqZ$]t!!)utrrE#t rrE*!rrE&urrE*!rr@uWs5sLamu35)n,NFcn,J@Gn,NCgn,Is/JXh:]JXjoR!WVWVN!/TjmrJJZ~> #6=emFoRo!s8;rps8N)us8N'#rr<&us8N*!s8N*!s8N'&rr<'!!!)utrW)uuqZ$]t!!)utrrE#t rrE*!rrE&urrE*!rr@uWs5sLamuEG-n,NFcn,JFIn,NCgn,Is-JXV.YJXXcN!WVWVNWefnmr\V\~> "9AJjF8pdkZiC4.mu35)n,NFcn,J@Gn,NCgn,Is/JXh:]JXjoR!WVWVN!/TjmrJJZ~> "p"\lF8qc#pAb-mrr;uu!ri6#rr;uus8W*!s8W*!"oeQ&rr<&ss8E!"rr<&ss8N)ts8N)ts8N*! s8N)us8N*!s8N(Ws8V6es6ko*n*g;VqsXQDrpTme!Up&>S:R2]S:R3SS-%mRn*c2=s6k$tEr^^~> "p"\lFoRo!pAb-mrr;uu!ri6#rr;uus8W*!s8W*!"oeQ&rr<&ss8E!"rr<&ss8N)ts8N)ts8N*! s8N)us8N*!s8N(Ws8V6es6ku.n*g;VqsXQFrpTme!Up&>RXpoYRXppORKD[Pn*c8?s6k+!FT?p~> "9AJjF8pdkZiC@2mu34on,NFbn,J@Gn,NCgn,Is/JXh:]JXjrS!pBUPmu.GMmrRr=!.Y~> "p"\lF8qc#pAb-mrr;uu!ri6#rr;uus8W*!rr;uus8W*!rr;uus8W*!$3'u*s8N'!rr<&ss8N)u s8N)us8N'#rr<&us8N(Ws8V6es6ko*n*g;VqX=HCs6p!f"7Q8[S:U]ks+13$s3L`Fk6(bQN/[W% !0$dCs8N5jF74/MJ,~> "p"\lFoRo!pAb-mrr;uu!ri6#rr;uus8W*!rr;uus8W*!rr;uus8W*!$3'u*s8N'!rr<&ss8N)u s8N)us8N'#rr<&us8N(Ws8V6es6ku.n*g;VqX=HEs6p!f"7Q8YRXtKis+13$s3L`Fk6(bQNfNu) !06pEs8N5jFmjGQJ,~> "9AJjF8pdkZiC@2mu34on,NFan,J@Hn,NCin,JoJJcC<$JcC<$ci=%."97hKN;DuCN;E#Crrhe3 mrJJZ~> "p"\lF8qc#pAb!is8W*!rVufrrVults8W*!rVufrrr;oss8W*!qu?Tp!WN0!s82lrs8N(Ws8V6d s6ko*n,NF`n,J@Hn,NCin,JoJJcC<$JcC<$ci=%."97hKN;N&Es,?gCs8N5jF74/MJ,~> "p"\lFoRo!pAb!is8W*!rVufrrVults8W*!rVufrrr;oss8W*!qu?Tp!WN0!s82lrs8N(Ws8V6d s6ku.n,NF`n,JFJn,NCin,JiFJcC<$JcC<$ci=%."97hMNr/8Gs,QsEs8N5jFmjGQJ,~> "9AJjF8pdkZiC=1mu34os8Vo`s,@!Hs8N2is.#U1s+13$s+13rs8V6as6ko*qsORcN;E#Crrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sUdmu34os8Vl_s,70Ns8VQfS=J%-rrCOJ!!)Ed!!)?b!!)ut!!)ut!!)Ed rW'k9rW)os!!)utrW%]QrW) "p"\lFoRo!JcE7[s5sUdmuEFss8Vl_s,I "9AJjF8pdkZiC=1mu34os8Vl_s,70Ns8VQfS=J%-rrCOJ!!)Ed!!)?b!!)ut!!)ut!!)EdrW'k9 rW)os!!)utrW%]QrW) "p"\lF8qc#JcE7[s5sRcmu35*s7M "p"\lFoRo!JcE7[s5sRcmuEG.s7MBVn,NFVs-fDBs82l`rr<&=rr<&[rr<&srr<&srr<&ms8)fp rr<&lrr<&rs8E#Prr<&jrr<&Irr<&:rr<&jrr<&brr<&`rr<&srr<%Ms8Dutk6(bQNfO&+s8W+Z qsXRb"RgL%FT?p~> "9AJjF8pdkZiC:0mu35*s7M "p"\lF8qc#JcE7[s5sObmu35*o8N_L"7Q8[SEg+S!<2uu!:Bdd!65$=!9F.[!;uis!;uis!;6?l !<2uu!<)ot!;6?l!;uis!<2uu!8IMR!;$3j!7LlI!5ng:!;$3j!:0Xb!9sL`!;uis!.k1Ks8V6a s6ko*r9s[c!q2),r9s[c"RgF#Er^^~> "p"\lFoRo!JcE7[s5sObmuEG.o8`kN"7Q8YRd0nQ!<2uu!:Bdd!65$=!9F.[!;uis!;uis!;6?l !<2uu!<)ot!;6?l!;uis!<2uu!8IMR!;$3j!7LlI!5ng:!;$3j!:0Xb!9sL`!;uis!.k1Ks8V6a s6ku.r9s[c!q2/0r9s[c"RgL%FT?p~> "9AJjF8pdkZiC7/mu35*o8N_L"7Q8[SEg+S!<2uu!:Bdd!65$=!9F.[!;uis!;uis!;6?l!<2uu !<)ot!;6?l!;uis!<2uu!8IMR!;$3j!7LlI!5ng:!;$3j!:0Xb!9sL`!;uis!.k1Ks8V6as6ko* r9s[c!q2),r9s[c"RgF#Er^^~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJlMgharr2rurr;rtrr;osrVufrq#C9ms8N*"s8E#l s8E#us8Duus8Duus8E#rs8E#ts82lss8E#trrE-"rW)osrW!!!!<2uu!;lcr!;lcr!;?Eq!<3'! !<)ot!<)rr!<3#r!<<'!!<3!+!<3$!s8N'!s8N*!rW)uu! "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFlMgharr2rurr;rtrr;osrVufrq#C9ms8N*"s8E#l s8E#us8Duus8Duus8E#rs8E#ts82lss8E#trrE-"rW)osrW!!!!<2uu!;lcr!;lcr!;?Eq!<3'! !<)ot!<)rr!<3#r!<<'!!<3!+!<3$!s8N'!s8N*!rW)uu! "9AJjF8pdkZiC4.mu34rn,NCin,JoJlMgharr2rurr;rtrr;osrVufrq#C9ms8N*"s8E#ls8E#u s8Duus8Duus8E#rs8E#ts82lss8E#trrE-"rW)osrW!!!!<2uu!;lcr!;lcr!;?Eq!<3'!!<)ot !<)rr!<3#r!<<'!!<3!+!<3$!s8N'!s8N*!rW)uu! "p"\lF8qc#JcE7[s5sLamu34prr_`iS=JmEr;cis!!*#u!!)or!s&B$!<2uu!;-9r!<<'!!<<'! q#: "p"\lFoRo!JcE7[s5sLamuEFtrr_`iR[WOAr;cis!!*#u!!)or!s&B$!<2uu!;-9r!<<'!!<<'! q#: "9AJjF8pdkZiC4.mu34prr_`iS=JmEr;cis!!*#u!!)or!s&B$!<2uu!;-9r!<<'!!<<'!q#: "p"\lF8qc#JcE7[s5sLamu34srs4S`s6ouXSH&We!<<)s!;QQr!<<'!rr;lrrr;oss8N'!rr2ru p](0ls8N'!rr2ruq#C6lrVlitqu6Wrr;Z`rrVlitqYpNqrVlitrr3'#s8N)urr<&trr<&rrr<&r rr<&mrrN3#!;lcr!;ulq!<2uu!;uis!;lcr!<2uu!<2uu!;lcr!;uis!<2uu!;HKn!;c]q!;lcr !<)rq!;QQs!<3'!!;HKn!;-9k!:Kje!;lcr!<2uu!<2uu!;lcr!;ulp!<<'!!<2uu!<2uu!;$3j !<)ot!<2uu!<3#s!<<'!!<2uu!;QQo!<2uu!<3#s!<2uu!;uis!<2uu!.k1Mk6(bQN/[c)s8W&d s,?pFs8N5jF74/MJ,~> "p"\lFoRo!JcE7[s5sLamuEG"rs4Ybs6ouVRfEEc!<<)s!;QQr!<<'!rr;lrrr;oss8N'!rr2ru p](0ls8N'!rr2ruq#C6lrVlitqu6Wrr;Z`rrVlitqYpNqrVlitrr3'#s8N)urr<&trr<&rrr<&r rr<&mrrN3#!;lcr!;ulq!<2uu!;uis!;lcr!<2uu!<2uu!;lcr!;uis!<2uu!;HKn!;c]q!;lcr !<)rq!;QQs!<3'!!;HKn!;-9k!:Kje!;lcr!<2uu!<2uu!;lcr!;ulp!<<'!!<2uu!<2uu!;$3j !<)ot!<2uu!<3#s!<<'!!<2uu!;QQo!<2uu!<3#s!<2uu!;uis!<2uu!.k1Mk6(bQNfO,-s8W&d s,R'Hs8N5jFmjGQJ,~> "9AJjF8pdkZiC4.mu34srs4S`s6ouXSH&We!<<)s!;QQr!<<'!rr;lrrr;oss8N'!rr2rup](0l s8N'!rr2ruq#C6lrVlitqu6Wrr;Z`rrVlitqYpNqrVlitrr3'#s8N)urr<&trr<&rrr<&rrr<&m rrN3#!;lcr!;ulq!<2uu!;uis!;lcr!<2uu!<2uu!;lcr!;uis!<2uu!;HKn!;c]q!;lcr!<)rq !;QQs!<3'!!;HKn!;-9k!:Kje!;lcr!<2uu!<2uu!;lcr!;ulp!<<'!!<2uu!<2uu!;$3j!<)ot !<2uu!<3#s!<<'!!<2uu!;QQo!<2uu!<3#s!<2uu!;uis!<2uu!.k1Mk6(bQN/[c)s8W&ds,?pF s8N5jF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJlMgharr3'#s8N)rrr<&urrW9$rrE&u!!)fo !!*#u!s&B$!<2uu!;QQo!;c]s!<3&srr<&prr<&urr<&qrr<&trr<&urrW9$rrE&u!!)ut!!)or !!)or!!)`m!!)ip!!)ut!!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!<2uu!;lcr!;lct!<3&mrr<&q rr<&rrr<&trr<&krr`?%!<3&nrr<&krr<&err<&rrr<&urr<&urr<&rrr<&srr<&rrr<&urr<&u rr<&jrr<&trr<&urrW9$rrE&u!s&B$!<2uu!;QQo!<3!#!<<'!rr2rurr2rur;Q`srr2ruJcGc5 "97hKN;i;Gs8;?cN;i;Grrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFlMgharr3'#s8N)rrr<&urrW9$rrE&u!!)fo !!*#u!s&B$!<2uu!;QQo!;c]s!<3&srr<&prr<&urr<&qrr<&trr<&urrW9$rrE&u!!)ut!!)or !!)or!!)`m!!)ip!!)ut!!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!<2uu!;lcr!;lct!<3&mrr<&q rr<&rrr<&trr<&krr`?%!<3&nrr<&krr<&err<&rrr<&urr<&urr<&rrr<&srr<&rrr<&urr<&u rr<&jrr<&trr<&urrW9$rrE&u!s&B$!<2uu!;QQo!<3!#!<<'!rr2rurr2rur;Q`srr2ruJcGc5 "97hMNrJMIs8;?cNrJMIrrhe5mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJlMgharr3'#s8N)rrr<&urrW9$rrE&u!!)fo!!*#u !s&B$!<2uu!;QQo!;c]s!<3&srr<&prr<&urr<&qrr<&trr<&urrW9$rrE&u!!)ut!!)or!!)or !!)`m!!)ip!!)ut!!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!<2uu!;lcr!;lct!<3&mrr<&qrr<&r rr<&trr<&krr`?%!<3&nrr<&krr<&err<&rrr<&urr<&urr<&rrr<&srr<&rrr<&urr<&urr<&j rr<&trr<&urrW9$rrE&u!s&B$!<2uu!;QQo!<3!#!<<'!rr2rurr2rur;Q`srr2ruJcGc5"97hK N;i;Gs8;?cN;i;Grrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJlMgharr3'#s8N)urrW9$rrE&u!s&B$!<2uu !;QQo!<3!#!<<'!rr2ruq#: "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFlMgharr3'#s8N)urrW9$rrE&u!s&B$!<2uu !;QQo!<3!#!<<'!rr2ruq#: "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJlMgharr3'#s8N)urrW9$rrE&u!s&B$!<2uu!;QQo !<3!#!<<'!rr2ruq#: "p"\lF8qc#m/Qq_o`+pkp&G$lJcG6>s5sRcmu35*s7Yp]N;rn[n,JoJli6qas8W*!s8W&urVuis "9/B$s8E!!rrDiorVurur;cltrrDiorW)uurrE&urr<'!quH`rrW)lrrW)uuqu?`srW)uurrE*! r;ccq!!)rs!!)rs!!)`mr;cfrqZ-ZrrW!!!!<3#t!<3#t!<)rs!!<0#s8;rss8;rqrr<&ms8;rs s82lss8)frs8E#lrrN3#!<)ot!;ulq!<)ot!;c`p!<2uu!;- "p"\lFoRo!m/Qq_o`+pkp&G$lJcG6>s5sRcmuEG.s7Yp]NrT+]n,JiFli6qas8W*!s8W&urVuis "9/B$s8E!!rrDiorVurur;cltrrDiorW)uurrE&urr<'!quH`rrW)lrrW)uuqu?`srW)uurrE*! r;ccq!!)rs!!)rs!!)`mr;cfrqZ-ZrrW!!!!<3#t!<3#t!<)rs!!<0#s8;rss8;rqrr<&ms8;rs s82lss8)frs8E#lrrN3#!<)ot!;ulq!<)ot!;c`p!<2uu!;- "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJli6qas8W*!s8W&urVuis"9/B$s8E!!rrDiorVuru r;cltrrDiorW)uurrE&urr<'!quH`rrW)lrrW)uuqu?`srW)uurrE*!r;ccq!!)rs!!)rs!!)`m r;cfrqZ-ZrrW!!!!<3#t!<3#t!<)rs!!<0#s8;rss8;rqrr<&ms8;rss82lss8)frs8E#lrrN3# !<)ot!;ulq!<)ot!;c`p!<2uu!;- "p"\lF8qc#m/R(crr;uup&G$lp&G$lJcG6>s5sRcmu35*s7Yp]N;rn[n,JoJJcG]K!!)rs!!)`m !!'Y2!!%TMa8Z,>JcFs6s5sUdmu34os8Vo`s,@!Hs8N5jF74/MJ,~> "p"\lFoRo!m/R(crr;uup&G$lp&G$lJcG6>s5sRcmuEG.s7Yp]NrT+]n,JiFJcG]K!!)rs!!)`m !!'Y2!!%TMa8Z,>JcFs6s5sUdmuEFss8Vo`s,R-Js8N5jFmjGQJ,~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJJcG]K!!)rs!!)`m!!'Y2!!%TMa8Z,>JcFs6s5sUd mu34os8Vo`s,@!Hs8N5jF74/MJ,~> "p"\lF8qc#m/R(crr;os"9/?$s8;rts8N'0rr<'!rr<'!rr<'!!!*'!r;_EKpAb0U"on%MN;rqO n,J@Hrr_`iS=G01rVlitqu6Wrq#: "p"\lFoRo!m/R(crr;os"9/?$s8;rts8N'0rr<'!rr<'!rr<'!!!*'!r;_EKpAb0U"on%ONrT.Q n,JFJrr_`iR[Sg-rVlitqu6Wrq#: "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJJcG]K!!)or!!)fo!!'V1!!%TMa8Z,>JcFs6s5sUd mu34os8Vl_s,73Os8VP/mrJJZ~> "p"\lF8qc#pAb-mq>^Hprr;`ns8W*!%K?D.rr<'!rr<'!!!*&u!!`H'!<<'!!.k1Es8V6cs6ko* s8Vf]s,@!X"7Q8[S:U\?s8E"us8N(Ms2Y0=!.k17s8V6cs6ko*s8VbN#Oh]mmrRr=!.Y~> "p"\lFoRo!pAb-mq>^Hprr;`ns8W*!%K?D.rr<'!rr<'!!!*&u!!`H'!<<'!!.k1Es8V6cs6ku. s8Vf]s,R-Z"7Q8YRXtJ=s8E"us8N(Ms2Y0=!.k17s8V6cs6ku.s8VbP#Oh]mmre)A!.Y~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJJc>`MrW&turr@WMa8c,=JcG!7s5sRcmu35*s7M "p"\lF8qc#pAb-mq>^ "p"\lFoRo!pAb-mq>^ "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."TRqLN;rL.s8N5jF74/MJ,~> "p"\lF8qc#q#C3kqu?Zrr;Zcsrr;iq&cVh2rr<'!rr<'!!!*'!!!*&r!.k1Es8V6cs6ko*s8Vf] s,@!X"7Q8[SEKqP!;QTn!5ng:!<)rs!7:cG!:0[b!6>->!9aC^!.k0$s5rs8N5j F74/MJ,~> "p"\lFoRo!q#C3kqu?Zrr;Zcsrr;iq&cVh2rr<'!rr<'!!!*'!!!*&r!.k1Es8V6cs6ku.s8Vf] s,R-Z"7Q8YRcj_N!;QTn!5ng:!<)rs!7:cG!:0[b!6>->!9aC^!.k0$s5 "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJkPtP^q#CkPtP^ JcC<$i;`i?"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#pAb-mq>^Hpr;Zcsrr;uur;Zcs&H;_1s8N'!rr<'!rr<'!!!%TMoDejR"on%MN;rqO n,J@Hrr_`iS=JaA! "p"\lFoRo!pAb-mq>^Hpr;Zcsrr;uur;Zcs&H;_1s8N'!rr<'!rr<'!!!%TMoDejR"on%ONrT.Q n,JFJrr_`iR[WC=! "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJk5PG^s8)fprr<&lrr<&rs8E#Ys8)firr<&ms82lm s8E#`rrE-"quHHj!!)rs!!)-\!!)'Z!!)0]!!%TMJcF[.s5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#pAb-mq>^Hpr;Zcsrr;uus8W*!#6+Z'rr<'!rW!'#!!*&u!!`H'!<<'!!.k1Es8V6c s6ko*s8Vf]s,@!X"7Q8[SEBhR!<<'!rr2rurVlitp&>!lr;Q`srr2ruj8T)Zrr2rupAY*mo`"mk pAY*ml2Ltgs8N*!rr<&nrr<&srr<&\rr<&Zrr<&]rr<%Ms+14.s8V6as6ko*o'cVY"RgF#Er^^~> "p"\lFoRo!pAb-mq>^Hpr;Zcsrr;uus8W*!#6+Z'rr<'!rW!'#!!*&u!!`H'!<<'!!.k1Es8V6c s6ku.s8Vf]s,R-Z"7Q8YRcaVP!<<'!rr2rurVlitp&>!lr;Q`srr2ruj8T)Zrr2rupAY*mo`"mk pAY*ml2Ltgs8N*!rr<&nrr<&srr<&\rr<&Zrr<&]rr<%Ms+14.s8V6as6ku.o'cVY"RgL%FT?p~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJk5PM`s8N)urr<&trr<&lrr<&srr<&urr<&Zrr<&u rr<&mrr<&krr<&mrr<&`rs&Q(rrE*!!!)cn!!)rs!!)-\!!)'Z!!)0]!!%TMJcF[.s5sLamu34r n,NCjmrRr=!.Y~> "p"\lF8qc#m/R(cr;ZcsrVufrs8W*!s8W*!$i^2,s8N'!rr<'!s8;qKs7ZKmk6:nSN/[f:p@&$? s8N>ms.#VZrrE)u!<3#t!<3#s!<)rr!<<'%!<3'!!<)ot!<)rr!<3#r!<<'!!<3!+!<3$!s8N'! s8N*!rW)uu!^Eo!WN/us8E#s s8;r^s8;rss8E"Ls+144s8V6as6ko*o'cVY"RgF#Er^^~> "p"\lFoRo!m/R(cr;ZcsrVufrs8W*!s8W*!$i^2,s8N'!rr<'!s8;qKs7ZKmk6:nSNfO/>p@&$A s8N>ms-fDVrrE)u!<3#t!<3#s!<)rr!<<'%!<3'!!<)ot!<)rr!<3#r!<<'!!<3!+!<3$!s8N'! s8N*!rW)uu!^Eo!WN/us8E#s s8;r^s8;rss8E"Ls+144s8V6as6ku.o'cVY"RgL%FT?p~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn_n,JoJs8N*!rW)rtrW)rtr;cfrr;clt"9AH%rrE#t!!)ut r;cisquHcs!!*#u$NU2,!<<'!!<<'!s8E#urrE-"rVururVururW!3'!<3'!!<<)u!;lcr!;ulr !;uis!<3!!!<<#urr2ruqZ$Nprr;osrVufrs8N'!rr3$"s8W#trr;lrs8N0$rr<&orrE-"rW)rt ! "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJrr2rur;Q`srr2ruqu6`us8N)urrN3#s8E#q rr<&prr<&urr<&srr<&rrr<&urr<&urr<&rrr<&srr<&urrN3#s8E#qrr<&rrr<&trr<&urr<&t rr<&ts8N*!rrW9$rrDrr!!*#u!!)or!s&B$!<3!'!<<'!s8N'!qu6Wrrr2rur;Zcss8N'!q#:6srrE'!s8N)urrW9$rrE&u!!)foquHNl!!*#u!s&B$!<2uu!.k0$s6'F^ k6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFrr2rur;Q`srr2ruqu6`us8N)urrN3#s8E#q rr<&prr<&urr<&srr<&rrr<&urr<&urr<&rrr<&srr<&urrN3#s8E#qrr<&rrr<&trr<&urr<&t rr<&ts8N*!rrW9$rrDrr!!*#u!!)or!s&B$!<3!'!<<'!s8N'!qu6Wrrr2rur;Zcss8N'!q#:6srrE'!s8N)urrW9$rrE&u!!)foquHNl!!*#u!s&B$!<2uu!.k0$s6'F^ k6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJrr2rur;Q`srr2ruqu6`us8N)urrN3#s8E#qrr<&p rr<&urr<&srr<&rrr<&urr<&urr<&rrr<&srr<&urrN3#s8E#qrr<&rrr<&trr<&urr<&trr<&t s8N*!rrW9$rrDrr!!*#u!!)or!s&B$!<3!'!<<'!s8N'!qu6Wrrr2rur;Zcss8N'!q#:6srrE'!s8N)urrW9$rrE&u!!)foquHNl!!*#u!s&B$!<2uu!.k0$s6'F^k6(bQ N/[>rs8N5jF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJrr2rur;ZZprr;oss8N'!rr3-%s8N*!!;lcr !;ulq!<2uu!;uis!;lcr!<2uu!<2uu!;lcr!;uis!<3!%!<<'!rrDrr!!)or!!)utquH]q!!)ut !!*#u!s&B$!;lcr!<2uu!<3#s!<<'!!<3!"!<<)t!<)rr!<2uu!;uis!<2uu!;QQo!<2uu!<2uu !;lcr!;6?s!<3'!!<<'!rr3'#s8N)urr<&arr<&urrW9$rrE&u!!%TMJcFp5s5sLamu34rn,NCj mrRr=!.Y~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFrr2rur;ZZprr;oss8N'!rr3-%s8N*!!;lcr !;ulq!<2uu!;uis!;lcr!<2uu!<2uu!;lcr!;uis!<3!%!<<'!rrDrr!!)or!!)utquH]q!!)ut !!*#u!s&B$!;lcr!<2uu!<3#s!<<'!!<3!"!<<)t!<)rr!<2uu!;uis!<2uu!;QQo!<2uu!<2uu !;lcr!;6?s!<3'!!<<'!rr3'#s8N)urr<&arr<&urrW9$rrE&u!!%TMJcFp5s5sLamuEG!n,NCj mre)A!.Y~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJrr2rur;ZZprr;oss8N'!rr3-%s8N*!!;lcr!;ulq !<2uu!;uis!;lcr!<2uu!<2uu!;lcr!;uis!<3!%!<<'!rrDrr!!)or!!)utquH]q!!)ut!!*#u !s&B$!;lcr!<2uu!<3#s!<<'!!<3!"!<<)t!<)rr!<2uu!;uis!<2uu!;QQo!<2uu!<2uu!;lcr !;6?s!<3'!!<<'!rr3'#s8N)urr<&arr<&urrW9$rrE&u!!%TMJcFp5s5sLamu34rn,NCjmrRr= !.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJrr2rur;Q`squ6Wrrr3'#s8N)urrW9$rrDlp !!)ut!!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!<2uu!;lcr!;lct!<3&urr<&prr<&rrr<&trr<&p rr<&trr<&urrW9$rrE&u!s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrDrr!!*#u!!*#u!!)rs!!*#u !!)fo!!*#u!!*#u!!)or!!)]l#6=c(rrE*!!<3!#!<<'!rr2ruq#C6lq#: "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFrr2rur;Q`squ6Wrrr3'#s8N)urrW9$rrDlp !!)ut!!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!<2uu!;lcr!;lct!<3&urr<&prr<&rrr<&trr<&p rr<&trr<&urrW9$rrE&u!s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrDrr!!*#u!!*#u!!)rs!!*#u !!)fo!!*#u!!*#u!!)or!!)]l#6=c(rrE*!!<3!#!<<'!rr2ruq#C6lq#: "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJrr2rur;Q`squ6Wrrr3'#s8N)urrW9$rrDlp!!)ut !!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!<2uu!;lcr!;lct!<3&urr<&prr<&rrr<&trr<&prr<&t rr<&urrW9$rrE&u!s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrDrr!!*#u!!*#u!!)rs!!*#u!!)fo !!*#u!!*#u!!)or!!)]l#6=c(rrE*!!<3!#!<<'!rr2ruq#C6lq#: "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJrr2rur;Q`srr3'#s8N)urrW9$rrE&u!s&B$ !;ZWp!<)ot!<2uu!<2uu!<3!"!<3&urrW9$rrE&u!!*#u!!)or!!)orrW)rt!!)ip!!)or!!)ut !!*#u!!)ut!!)ut!!*#u!s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!s&B$!;lcr!<2uu!<2uu !<3!"!<3&urr<&orr<&urr<&urr<&rrr<&urr<&prs&Q(!<3'!rrE&u!s&B$!<2uu!:'Ra!<3!# !<<'!rr2ruJcC<$kPtSF"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFrr2rur;Q`srr3'#s8N)urrW9$rrE&u!s&B$ !;ZWp!<)ot!<2uu!<2uu!<3!"!<3&urrW9$rrE&u!!*#u!!)or!!)orrW)rt!!)ip!!)or!!)ut !!*#u!!)ut!!)ut!!*#u!s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!s&B$!;lcr!<2uu!<2uu !<3!"!<3&urr<&orr<&urr<&urr<&rrr<&urr<&prs&Q(!<3'!rrE&u!s&B$!<2uu!:'Ra!<3!# !<<'!rr2ruJcC<$kPtSF"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJrr2rur;Q`srr3'#s8N)urrW9$rrE&u!s&B$!;ZWp !<)ot!<2uu!<2uu!<3!"!<3&urrW9$rrE&u!!*#u!!)or!!)orrW)rt!!)ip!!)or!!)ut!!*#u !!)ut!!)ut!!*#u!s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!s&B$!;lcr!<2uu!<2uu!<3!" !<3&urr<&orr<&urr<&urr<&rrr<&urr<&prs&Q(!<3'!rrE&u!s&B$!<2uu!:'Ra!<3!#!<<'! rr2ruJcC<$kPtSF"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn]n,JoJs8W#trVuisrVuis"9/B$s8Duus82lqs8)fr s8E!!rrE&urW)rtrW)osrW!$"!<;utrr;osr;Q`srr;osrVucqs8Vrrs8W&urr;lr!<<#us8Vlp rr;rtrVuis"9/B$s8Duus82lps8E!!rrE&urVururVururW)cor;cisr;ccqrW)corr<9'!<3$! s8W&urVuis!WN/bs8E!#rrE*!rW%NLJcFm4s5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+_n,JiFs8W#trVuisrVuis"9/B$s8Duus82lqs8)fr s8E!!rrE&urW)rtrW)osrW!$"!<;utrr;osr;Q`srr;osrVucqs8Vrrs8W&urr;lr!<<#us8Vlp rr;rtrVuis"9/B$s8Duus82lps8E!!rrE&urVururVururW)cor;cisr;ccqrW)corr<9'!<3$! s8W&urVuis!WN/bs8E!#rrE*!rW%NLJcFm4s5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn]n,JoJs8W#trVuisrVuis"9/B$s8Duus82lqs8)frs8E!! rrE&urW)rtrW)osrW!$"!<;utrr;osr;Q`srr;osrVucqs8Vrrs8W&urr;lr!<<#us8Vlprr;rt rVuis"9/B$s8Duus82lps8E!!rrE&urVururVururW)cor;cisr;ccqrW)corr<9'!<3$!s8W&u rVuis!WN/bs8E!#rrE*!rW%NLJcFm4s5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJWW)quPlC^`JcC<$QN.!J"97hKN:QH;rrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFWW)quPlC^`JcC<$QN.!J"97hMNq2Z=rrhe5 mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJWW)quPlC^`JcC<$QN.!J"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJWW)quPlC^`JcC<$QN.!J"97hKN:QH;rrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFWW)quPlC^`JcC<$QN.!J"97hMNq2Z=rrhe5 mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJWW)quPlC^`JcC<$QN.!J"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJX8i2"PlL^_JcC<$QiI*K"97hKN:QH;rrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFX8i2"PlL^_JcC<$QiI*K"97hMNq2Z=rrhe5 mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJX8i2"PlL^_JcC<$QiI*K"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#lMpb^rr;uurr;uus8W*!JcFa0s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%. "97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!lMpb^rr;uurr;uus8W*!JcFa0s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%. "97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#li6tbrr;uus8W*!rr;uus8W*!JcFa0s5sRcmu35*s7Yp]N;rn[n,JoJli6tbq>^Eo rVlitrVuis]`7s2rVlitoDegjpAY*mrVuisd/X+Gli6tbj8],ZpAb-mmf37dl2Ub`JcD&9s5sLa mu34rn,NCjmrRr=!.Y~> "p"\lFoRo!li6tbrr;uus8W*!rr;uus8W*!JcFa0s5sRcmuEG.s7Yp]NrT+]n,JiFli6tbq>^Eo rVlitrVuis]`7s2rVlitoDegjpAY*mrVuisd/X+Gli6tbj8],ZpAb-mmf37dl2Ub`JcD&9s5sLa muEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJli6tbq>^EorVlitrVuis]`7s2rVlitoDegjpAY*m rVuisd/X+Gli6tbj8],ZpAb-mmf37dl2Ub`JcD&9s5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#m/R(cq>^Hprr;uus8W*!JcFa0s5sRcmu35*s7Yp]N;rn[n,JoJlMghaqYpNqoD\dj ^&J'4lMgkbs8)firr<&ms82lms8E#`rrE-"quHHj!!)rs!!)$Y!!)`m!!)rs!W`6#pAY*mmJd4f rrDus!!%TMQN.!J"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!m/R(cq>^Hprr;uus8W*!JcFa0s5sRcmuEG.s7Yp]NrT+]n,JiFlMghaqYpNqoD\dj ^&J'4lMgkbs8)firr<&ms82lms8E#`rrE-"quHHj!!)rs!!)$Y!!)`m!!)rs!W`6#pAY*mmJd4f rrDus!!%TMQN.!J"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJlMghaqYpNqoD\dj^&J'4lMgkbs8)firr<&ms82lm s8E#`rrE-"quHHj!!)rs!!)$Y!!)`m!!)rs!W`6#pAY*mmJd4frrDus!!%TMQN.!J"97hKN:QH; rrhe3mrJJZ~> "p"\lF8qc#pAb-mq>^Hpq>^Hprr;uus8W*!JcFa0s5sRcmu35*s7Yp]N;rn[n,JoJlMghaqYpNq oD\djd/O(Gn,E@flMgqds8N)urr<&mrr<&krr<&mrr<&`rs&Q(rrE*!!!)cn!!)rs!!)$Y!!)`m !!)rs!W`6#pAY*mmJd4frrDus!!%TMQN.!J"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!pAb-mq>^Hpq>^Hprr;uus8W*!JcFa0s5sRcmuEG.s7Yp]NrT+]n,JiFlMghaqYpNq oD\djd/O(Gn,E@flMgqds8N)urr<&mrr<&krr<&mrr<&`rs&Q(rrE*!!!)cn!!)rs!!)$Y!!)`m !!)rs!W`6#pAY*mmJd4frrDus!!%TMQN.!J"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJlMghaqYpNqoD\djd/O(Gn,E@flMgqds8N)urr<&m rr<&krr<&mrr<&`rs&Q(rrE*!!!)cn!!)rs!!)$Y!!)`m!!)rs!W`6#pAY*mmJd4frrDus!!%TM QN.!J"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#pAb-mq>^Hps8W#ts8W*!rr;uus8W*!JcFa0s5sRcmu35*s7Yp]N;rn[n,JoJo)J[h !WN0!s8;rss82lss8E#qrr<&ss8E#urrE-"rW)rtr;cltrW!!!!<)rs!;6?l!:Tsc!<<)u!<3!! !<<#urVufrs8N9'rrE'!s8W&uqu6Wrr;Z`rr;Q`srr3!!s8E#trr<&qs8E#ts8;rrs8;rtrr<&u rrN3#s8;rss82lsrrW9$!!)forW!!!!<)rs!<)rr!;?Em!;uiu!<3&ns82lrs8E#us8Duus8E#u rrN3#!;uis!.k09s8V6as6ko*o'cVY"RgF#Er^^~> "p"\lFoRo!pAb-mq>^Hps8W#ts8W*!rr;uus8W*!JcFa0s5sRcmuEG.s7Yp]NrT+]n,JiFo)J[h !WN0!s8;rss82lss8E#qrr<&ss8E#urrE-"rW)rtr;cltrW!!!!<)rs!;6?l!:Tsc!<<)u!<3!! !<<#urVufrs8N9'rrE'!s8W&uqu6Wrr;Z`rr;Q`srr3!!s8E#trr<&qs8E#ts8;rrs8;rtrr<&u rrN3#s8;rss82lsrrW9$!!)forW!!!!<)rs!<)rr!;?Em!;uiu!<3&ns82lrs8E#us8Duus8E#u rrN3#!;uis!.k09s8V6as6ku.o'cVY"RgL%FT?p~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJo)J[h!WN0!s8;rss82lss8E#qrr<&ss8E#urrE-" rW)rtr;cltrW!!!!<)rs!;6?l!:Tsc!<<)u!<3!!!<<#urVufrs8N9'rrE'!s8W&uqu6Wrr;Z`r r;Q`srr3!!s8E#trr<&qs8E#ts8;rrs8;rtrr<&urrN3#s8;rss82lsrrW9$!!)forW!!!!<)rs !<)rr!;?Em!;uiu!<3&ns82lrs8E#us8Duus8E#urrN3#!;uis!.k09s8V6as6ko*o'cVY"RgF# Er^^~> "p"\lF8qc#q#C3kqu?ZrrVults8W*!rr;uus8W*!JcFa0s5sRcmu35*s7Yp]N;rn[n,JoJnc&go rrE'!s8N)urr<&urr<&qrr<&rrr<&trr<&urs&Q(rr<'!rrDrr$3:,+!<3'!!<<'!rr2rup\t3n mJd.dqYpNqrVults8N0$s8N)urrN3#s8E#qrr<&rrr<&trr<&urr<&trr<&ts8N*!rrW9$rrDrr !!*#u!!)or!s&B$!<3!'!<<'!s8N'!qu6Wrrr2rur;Zcss8N'!q#:R!rrE'!s8N)urrW9$rrE&u !!)`m!!)He!!)rs!!*#u!s&B$!<2uu!;?Em!.k09s8V6as6ko*o'cVY"RgF#Er^^~> "p"\lFoRo!q#C3kqu?ZrrVults8W*!rr;uus8W*!JcFa0s5sRcmuEG.s7Yp]NrT+]n,JiFnc&go rrE'!s8N)urr<&urr<&qrr<&rrr<&trr<&urs&Q(rr<'!rrDrr$3:,+!<3'!!<<'!rr2rup\t3n mJd.dqYpNqrVults8N0$s8N)urrN3#s8E#qrr<&rrr<&trr<&urr<&trr<&ts8N*!rrW9$rrDrr !!*#u!!)or!s&B$!<3!'!<<'!s8N'!qu6Wrrr2rur;Zcss8N'!q#:R!rrE'!s8N)urrW9$rrE&u !!)`m!!)He!!)rs!!*#u!s&B$!<2uu!;?Em!.k09s8V6as6ku.o'cVY"RgL%FT?p~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJnc&gorrE'!s8N)urr<&urr<&qrr<&rrr<&trr<&u rs&Q(rr<'!rrDrr$3:,+!<3'!!<<'!rr2rup\t3nmJd.dqYpNqrVults8N0$s8N)urrN3#s8E#q rr<&rrr<&trr<&urr<&trr<&ts8N*!rrW9$rrDrr!!*#u!!)or!s&B$!<3!'!<<'!s8N'!qu6Wr rr2rur;Zcss8N'!q#:R!rrE'!s8N)urrW9$rrE&u!!)`m!!)He!!)rs!!*#u!s&B$!<2uu!;?Em !.k09s8V6as6ko*o'cVY"RgF#Er^^~> "p"\lF8qc#pAb-mq>^HprVults8W*!rr;uus8W*!JcFa0s5sRcmu35*s7Yp]N;rn[n,JoJnc&go rrE'!s8N)urr<&urr<&qrr<&rrr<&ts82lsrr<&urr<&us8;rtrrrK'!<3'!s82llrr<&rs82lk rr<&qrr<&trr<&urrW9$rrE&u"T\T&!<3&rrr<&rrr<&ts82lqrr<&trr<&urrW9$rrDrr!!*#u !!*#ur;clt!!*#u!W`9#r;cfrr;cis!!)rs!!*#u!!)fo#6=c(rrE*!!<3!#!<<'!rr2rupAY*m mf*7er;Q`squ6Wrrr2rupAY*mJcD&9s5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!pAb-mq>^HprVults8W*!rr;uus8W*!JcFa0s5sRcmuEG.s7Yp]NrT+]n,JiFnc&go rrE'!s8N)urr<&urr<&qrr<&rrr<&ts82lsrr<&urr<&us8;rtrrrK'!<3'!s82llrr<&rs82lk rr<&qrr<&trr<&urrW9$rrE&u"T\T&!<3&rrr<&rrr<&ts82lqrr<&trr<&urrW9$rrDrr!!*#u !!*#ur;clt!!*#u!W`9#r;cfrr;cis!!)rs!!*#u!!)fo#6=c(rrE*!!<3!#!<<'!rr2rupAY*m mf*7er;Q`squ6Wrrr2rupAY*mJcD&9s5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJnc&gorrE'!s8N)urr<&urr<&qrr<&rrr<&ts82ls rr<&urr<&us8;rtrrrK'!<3'!s82llrr<&rs82lkrr<&qrr<&trr<&urrW9$rrE&u"T\T&!<3&r rr<&rrr<&ts82lqrr<&trr<&urrW9$rrDrr!!*#u!!*#ur;clt!!*#u!W`9#r;cfrr;cis!!)rs !!*#u!!)fo#6=c(rrE*!!<3!#!<<'!rr2rupAY*mmf*7er;Q`squ6Wrrr2rupAY*mJcD&9s5sLa mu34rn,NCjmrRr=!.Y~> "p"\lF8qc#pAb-mq#C?orr;uurr;uu!ri6#rr;uuJcFa0s5sRcmu35*s7Yp]N;rn[n,JoJnc&go rrE'!s8N)urr<&urr<&qrr<&rrr<&trr<&rrr<&urrW9$rrE&u$3:,+!<3'!!<<'!oD\djmJd.d qYpNqrVlitrr3'#s8N)urrW9$rrDlp!!)or!!)ut!!)ip!!)ut!!*#u!s&B$!<3!#!<<'!rr3'# s8N)urrW9$rrE&u!s&B$!;lcr!<2uu!<2uu!;uis!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urr<&m rr<&err<&srr<&qrrN3#!;6?l!.k09s8V6as6ko*o'cVY"RgF#Er^^~> "p"\lFoRo!pAb-mq#C?orr;uurr;uu!ri6#rr;uuJcFa0s5sRcmuEG.s7Yp]NrT+]n,JiFnc&go rrE'!s8N)urr<&urr<&qrr<&rrr<&trr<&rrr<&urrW9$rrE&u$3:,+!<3'!!<<'!oD\djmJd.d qYpNqrVlitrr3'#s8N)urrW9$rrDlp!!)or!!)ut!!)ip!!)ut!!*#u!s&B$!<3!#!<<'!rr3'# s8N)urrW9$rrE&u!s&B$!;lcr!<2uu!<2uu!;uis!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urr<&m rr<&err<&srr<&qrrN3#!;6?l!.k09s8V6as6ku.o'cVY"RgL%FT?p~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJnc&gorrE'!s8N)urr<&urr<&qrr<&rrr<&trr<&r rr<&urrW9$rrE&u$3:,+!<3'!!<<'!oD\djmJd.dqYpNqrVlitrr3'#s8N)urrW9$rrDlp!!)or !!)ut!!)ip!!)ut!!*#u!s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!s&B$!;lcr!<2uu!<2uu !;uis!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urr<&mrr<&err<&srr<&qrrN3#!;6?l!.k09s8V6a s6ko*o'cVY"RgF#Er^^~> "p"\lF8qc#lMpe_!WN0!s82lrs8N(Ms5O(Yk6:nSN/[f:p@&$?s8N2is.#VLrs&Q(!<3'!rrE&u !!*#u!!)lq!!)or!!)ut!!*#u!s&B$!<3!#!<<'!rr3<*s8N*!!<3'!rrE&u!!)`m!!)He!!)lq !!)ut!!*#u!s&B$!<3!#!<<'!q>UEpqu6WrrVlitrr2rurVlitrVlitrr3'#s8N)urrW9$rrE&u !s&B$!<3!#!<<'!rr3'#s8N)rrr<&urr<&urr<&urrN3#!<2uu!;QR!!<3'!!<<'!rr3'#s8N)u rr<&mrr<&err<&srr<&urr<&us8E#krr<%Ms-E]bk6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!lMpe_!WN0!s82lrs8N(Ms5O(Yk6:nSNfO/>p@&$As8N2is-fDHrs&Q(!<3'!rrE&u !!*#u!!)lq!!)or!!)ut!!*#u!s&B$!<3!#!<<'!rr3<*s8N*!!<3'!rrE&u!!)`m!!)He!!)lq !!)ut!!*#u!s&B$!<3!#!<<'!q>UEpqu6WrrVlitrr2rurVlitrVlitrr3'#s8N)urrW9$rrE&u !s&B$!<3!#!<<'!rr3'#s8N)rrr<&urr<&urr<&urrN3#!<2uu!;QR!!<3'!!<<'!rr3'#s8N)u rr<&mrr<&err<&srr<&urr<&us8E#krr<%Ms-E]bk6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJnc&gorrE'!s8N)urr<&urr<&qrr<&rrr<&trr<&u rrW9$rrE&u!s&B$!<3!*!<<'!rrE'!s8N)urr<&mrr<&err<&qrr<&trr<&urrW9$rrE&u!s&B$ !;ZWp!;lcr!<)ot!<2uu!<)ot!<)ot!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!s&B$!<3!#!<<'! qu6Wrrr2rurr2rurr3$"rrE&u!!)fo#6=c(rrE*!!<3!#!<<'!rr2rupAY*mmf*7er;Q`srr2ru rr;rtp&>!lJcD&9s5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJo)J^i!ri9#rVururW)rtr;cisquHcsqZ-Zr rW)uurW)uurrE*!rVururW!0&!<3$!s8W&uo`"mknGiFerr;lr!<<#us8W*!s8W&u!<;rsrVucq s8Vrrs8W&urr;lr!<<#us8Vlprr;rtrVuis"9/B$s8Duus82lps8E!!rrE&urVururVururW)fp rr<9'!<3$!s8W&urVuis!WN/orr<&lrr<&ss8;rrs8E#rrr<&krr<%Ms-E]bk6(bQN/[>rs8N5j F74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFo)J^i!ri9#rVururW)rtr;cisquHcsqZ-Zr rW)uurW)uurrE*!rVururW!0&!<3$!s8W&uo`"mknGiFerr;lr!<<#us8W*!s8W&u!<;rsrVucq s8Vrrs8W&urr;lr!<<#us8Vlprr;rtrVuis"9/B$s8Duus82lps8E!!rrE&urVururVururW)fp rr<9'!<3$!s8W&urVuis!WN/orr<&lrr<&ss8;rrs8E#rrr<&krr<%Ms-E]bk6(bQNfN]!s8N5j FmjGQJ,~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJo)J^i!ri9#rVururW)rtr;cisquHcsqZ-ZrrW)uu rW)uurrE*!rVururW!0&!<3$!s8W&uo`"mknGiFerr;lr!<<#us8W*!s8W&u!<;rsrVucqs8Vrr s8W&urr;lr!<<#us8Vlprr;rtrVuis"9/B$s8Duus82lps8E!!rrE&urVururVururW)fprr<9' !<3$!s8W&urVuis!WN/orr<&lrr<&ss8;rrs8E#rrr<&krr<%Ms-E]bk6(bQN/[>rs8N5jF74/M J,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$m/I%chu "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$m/I%chu "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJJcC<$m/I%chu "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$m/R(ci;WcWp&G$lJcD&9s5sLamu34r n,NCjmrRr=!.Y~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$m/R(ci;WcWp&G$lJcD&9s5sLamuEG! n,NCjmre)A!.Y~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJJcC<$m/R(ci;WcWp&G$lJcD&9s5sLamu34rn,NCj mrRr=!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$bQ%SBJcCN*s5sLamu34rn,NCjmrRr= !.Y~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$bQ%SBJcCN*s5sLamuEG!n,NCjmre)A !.Y~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJJcC<$bQ%SBJcCN*s5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJh>dKTl2L_`e,KCJkl:V^_uK]9rVlitrVuis aoDA@iW&lWbl@YBkPtP^rVlitpAY*mJcFs6s5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFh>dKTl2L_`e,KCJkl:V^_uK]9rVlitrVuis aoDA@iW&lWbl@YBkPtP^rVlitpAY*mJcFs6s5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJh>dKTl2L_`e,KCJkl:V^_uK]9rVlitrVuisaoDA@ iW&lWbl@YBkPtP^rVlitpAY*mJcFs6s5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJh#@?SlMghae,TCIpAY6qrrE*!qZ-Tp!!)]l !!)orrW([P!!)Wj!!)He!W`6#hZ!QUnG`OirrDcm!!([O!!)Zk!!)'Z!!)ut!!)rs!W`6#rVlit JcG!7s5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFh#@?SlMghae,TCIpAY6qrrE*!qZ-Tp!!)]l !!)orrW([P!!)Wj!!)He!W`6#hZ!QUnG`OirrDcm!!([O!!)Zk!!)'Z!!)ut!!)rs!W`6#rVlit JcG!7s5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJh#@?SlMghae,TCIpAY6qrrE*!qZ-Tp!!)]l!!)or rW([P!!)Wj!!)He!W`6#hZ!QUnG`OirrDcm!!([O!!)Zk!!)'Z!!)ut!!)rs!W`6#rVlitJcG!7 s5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJh#@?SlMghaeGfLKrr2rup\t9prrE&u!!*#u !!)ut!!)]l!!)rs!!*#u!!(dR!!)Wj!!)He!W`6#hZ!QUnG`OirrDcm!!([O!!)Zk!!)'Z!!)ut !!)rs!W`6#rVlitJcG!7s5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFh#@?SlMghaeGfLKrr2rup\t9prrE&u!!*#u !!)ut!!)]l!!)rs!!*#u!!(dR!!)Wj!!)He!W`6#hZ!QUnG`OirrDcm!!([O!!)Zk!!)'Z!!)ut !!)rs!W`6#rVlitJcG!7s5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJh#@?SlMghaeGfLKrr2rup\t9prrE&u!!*#u!!)ut !!)]l!!)rs!!*#u!!(dR!!)Wj!!)He!W`6#hZ!QUnG`OirrDcm!!([O!!)Zk!!)'Z!!)ut!!)rs !W`6#rVlitJcG!7s5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#m/Qq_mJm1dJcG!7s5sRcmu35*s7Yp]N;rn[n,JoJo)J[h!WN0!s8;rts8Duus8Duu s8;rrs8E#krr<&ss8E#trrE-"rW)uu! "p"\lFoRo!m/Qq_mJm1dJcG!7s5sRcmuEG.s7Yp]NrT+]n,JiFo)J[h!WN0!s8;rts8Duus8Duu s8;rrs8E#krr<&ss8E#trrE-"rW)uu! "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJo)J[h!WN0!s8;rts8Duus8Duus8;rrs8E#krr<&s s8E#trrE-"rW)uu! "p"\lF8qc#m/R(crr;uumf3:eJcG!7s5sRcmu35*s7Yp]N;rn[n,JoJnc&^lrrE'!qu6`us8N)u rrW9$rrE&u!s&B$!<2uu!;?Em!<)ot!<2uu!<2uu!;lcr!;uis!<2uu!<2uu!;- "p"\lFoRo!m/R(crr;uumf3:eJcG!7s5sRcmuEG.s7Yp]NrT+]n,JiFnc&^lrrE'!qu6`us8N)u rrW9$rrE&u!s&B$!<2uu!;?Em!<)ot!<2uu!<2uu!;lcr!;uis!<2uu!<2uu!;- "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJnc&^lrrE'!qu6`us8N)urrW9$rrE&u!s&B$!<2uu !;?Em!<)ot!<2uu!<2uu!;lcr!;uis!<2uu!<2uu!;- "p"\lF8qc#m/R(crr;uus8W#trr;osrr;uu!ri6#JcG!7s5sRcmu35*s7Yp]N;rn[n,JoJnc&^l rrE'!rr;oss8N'!rr3'#s8N)urrN3#s82ljrr<&ts82lrrr<&rrr<&srr<&urr<&urr<&js8N)g rrN3#!;lcr!;ulq!<2uu!;uis!;lcr!<2uu!<2uu!;lcr!;uis!<2uu!;HKn!;c]q!;lcr!<)rq !:g*e!<<)s!<<'(!<3'!!<<'!rr3'#s8N)urrN3#s82lss82ldrr<&srr<&rrr<&urr<&orr<&u rrW9$rrE&u!!*#u!!)Zk!!)rs!!*#u!s&B$!<3!#!<<'!rr3'#s8N)urr<&trr<&krr<%Ms6BXa k6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!m/R(crr;uus8W#trr;osrr;uu!ri6#JcG!7s5sRcmuEG.s7Yp]NrT+]n,JiFnc&^l rrE'!rr;oss8N'!rr3'#s8N)urrN3#s82ljrr<&ts82lrrr<&rrr<&srr<&urr<&urr<&js8N)g rrN3#!;lcr!;ulq!<2uu!;uis!;lcr!<2uu!<2uu!;lcr!;uis!<2uu!;HKn!;c]q!;lcr!<)rq !:g*e!<<)s!<<'(!<3'!!<<'!rr3'#s8N)urrN3#s82lss82ldrr<&srr<&rrr<&urr<&orr<&u rrW9$rrE&u!!*#u!!)Zk!!)rs!!*#u!s&B$!<3!#!<<'!rr3'#s8N)urr<&trr<&krr<%Ms6BXa k6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJnc&^lrrE'!rr;oss8N'!rr3'#s8N)urrN3#s82lj rr<&ts82lrrr<&rrr<&srr<&urr<&urr<&js8N)grrN3#!;lcr!;ulq!<2uu!;uis!;lcr!<2uu !<2uu!;lcr!;uis!<2uu!;HKn!;c]q!;lcr!<)rq!:g*e!<<)s!<<'(!<3'!!<<'!rr3'#s8N)u rrN3#s82lss82ldrr<&srr<&rrr<&urr<&orr<&urrW9$rrE&u!!*#u!!)Zk!!)rs!!*#u!s&B$ !<3!#!<<'!rr3'#s8N)urr<&trr<&krr<%Ms6BXak6(bQN/[>rs8N5jF74/MJ,~> "p"\lF8qc#pAb-mq>^Hprr;uu&cVh2s8N'!rr<'!rr<'!!!*&u!.k17s8V6cs6ko*s8Vf]s,@!X "7Q8[SFQUa!<3'!!<<'!rr2rurr3$"rrE&u!!*#u!s&B$!:p-i!<)ot!;c]q!;lcr!;uis!<2uu !<2uu!;6?l!<2uu!:g'h!;ZWp!<)ot!<2uu!<2uu!;uis!<3!#!<<'!rr2rurr2ruqu6Wrqu6]t rrDcm!!)lq!!)or!!)ut!!)?b!!)or!!)ut#6=c(rrE*!!<3!#!<<'!rr2rurVlitqu6Wrmf*7e r;Q`sqYpTsrrDfn!!*#u!s&B$!<2uu!<2uu!;-9k!;uis!<3!#!<<'!rr3'#s8N)urrW9$rrE&u !!)ut!!)Zk!!%TMlMpnI"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!pAb-mq>^Hprr;uu&cVh2s8N'!rr<'!rr<'!!!*&u!.k17s8V6cs6ku.s8Vf]s,R-Z "7Q8YRdpC_!<3'!!<<'!rr2rurr3$"rrE&u!!*#u!s&B$!:p-i!<)ot!;c]q!;lcr!;uis!<2uu !<2uu!;6?l!<2uu!:g'h!;ZWp!<)ot!<2uu!<2uu!;uis!<3!#!<<'!rr2rurr2ruqu6Wrqu6]t rrDcm!!)lq!!)or!!)ut!!)?b!!)or!!)ut#6=c(rrE*!!<3!#!<<'!rr2rurVlitqu6Wrmf*7e r;Q`sqYpTsrrDfn!!*#u!s&B$!<2uu!<2uu!;-9k!;uis!<3!#!<<'!rr3'#s8N)urrW9$rrE&u !!)ut!!)Zk!!%TMlMpnI"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJnc&gorrE'!s8N)urr<&urrN3#!<2uu!<3!#!<<'! o)A[irVlitqYpNqqu6Wrr;Q`srr2rurr2rup&>!lrr2runc&Rhq>UEprVlitrr2rurr2rur;Q`s rr3'#s8N)urr<&urr<&rrr<&rrrN3#!;?Em!;c]q!;lcr!<)ot!:0Xb!;lcr!<)p&!<3'!!<<'! rr3'#s8N)urr<&trr<&rrr<&err<&srr<&qrrN3#!;HKn!<3!#!<<'!rr2rurr2ruo`"mkr;Q`s rr3'#s8N)urrW9$rrE&u!s&B$!<2uu!<)ot!;-9k!.k18s8V6as6ko*o'cVY"RgF#Er^^~> "p"\lF8qc#pAb-mq>^ "p"\lFoRo!pAb-mq>^ "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJnc&gorrE'!s8N)urr<&us8E#trr<&urrW9$rrE&u !!)`m!!)ut!!*#u!!*#u!!)or!!)rs!!*#u!!*#u!!)]l!!*#u!!)Qh!!)ip!!)ut!!*#u!!*#u !!*#u!W`6#rr3'#s8N)urr<&urr<&rrr<&rs8E#lrr<&qrr<&rrr<&trr<&urr<&frr<&rrr<&t rs&Q(!<3'!rrE&u!s&B$!<2uu!<)ot!;lcr!:Kje!;uis!<2uu!<3#t!;HKn!<3!#!<<'!rr2ru rr2rurr2ruq#: "p"\lF8qc#q#C3kqu?Zrs8W*!s8Vrrs8Vus#6+Z's8N'!JcG!7s5sRcmu35*s7Yp]N;rn[n,JoJ o)J^i#6+]'!!*'!rW!!!!<2uu!<3!!!<<#urVuiso`"mkrVuisrr;osrr;osrVuisrr;ospAb*l nc/OfrVu`ps8W&u!WN0!s8E#ts8E#ss8E!"rrE)t!<3#s!;uis!;?Hk!<3#r!<<)r!<<)u!9=+Z !!`H'rr<'!s8E#ss8E!!rrD?a!!)rsr;cfrrW)lr!!)cnrW)uurrE*!rW)lrrW)`nr;cfrrW)os rVurur;cltrrE*!rW!!!!<2uu!;6?l!.k17s8V6as6ko*o'cVY"RgF#Er^^~> "p"\lFoRo!q#C3kqu?Zrs8W*!s8Vrrs8Vus#6+Z's8N'!JcG!7s5sRcmuEG.s7Yp]NrT+]n,JiF o)J^i#6+]'!!*'!rW!!!!<2uu!<3!!!<<#urVuiso`"mkrVuisrr;osrr;osrVuisrr;ospAb*l nc/OfrVu`ps8W&u!WN0!s8E#ts8E#ss8E!"rrE)t!<3#s!;uis!;?Hk!<3#r!<<)r!<<)u!9=+Z !!`H'rr<'!s8E#ss8E!!rrD?a!!)rsr;cfrrW)lr!!)cnrW)uurrE*!rW)lrrW)`nr;cfrrW)os rVurur;cltrrE*!rW!!!!<2uu!;6?l!.k17s8V6as6ku.o'cVY"RgL%FT?p~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJo)J^i#6+]'!!*'!rW!!!!<2uu!<3!!!<<#urVuis o`"mkrVuisrr;osrr;osrVuisrr;ospAb*lnc/OfrVu`ps8W&u!WN0!s8E#ts8E#ss8E!"rrE)t !<3#s!;uis!;?Hk!<3#r!<<)r!<<)u!9=+Z!!`H'rr<'!s8E#ss8E!!rrD?a!!)rsr;cfrrW)lr !!)cnrW)uurrE*!rW)lrrW)`nr;cfrrW)osrVurur;cltrrE*!rW!!!!<2uu!;6?l!.k17s8V6a s6ko*o'cVY"RgF#Er^^~> "p"\lF8qc#pAb-mq>^Hprr;uu!ri6#r;Zcss8W*!#6+Z's8N'!JcG!7s5sRcmu35*s7Yp]N;rn[ n,JoJiVrlXjo5;\df0:I[Jp4,JcG]K!!&tt!!%TMl2UeH"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!pAb-mq>^Hprr;uu!ri6#r;Zcss8W*!#6+Z's8N'!JcG!7s5sRcmuEG.s7Yp]NrT+] n,JiFiVrlXjo5;\df0:I[Jp4,JcG]K!!&tt!!%TMl2UeH"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJiVrlXjo5;\df0:I[Jp4,JcG]K!!&tt!!%TMl2UeH "97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#pAb-mq>^Hprr;uu&cVh2s8N'!rr<'!rr<'!!!*&u!.k17s8V6cs6ko*s8Vf]s,@!X "7Q8[SDjJJ!9F.[!/CLR!.k1Krr<%urr<%Ms60L_k6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!pAb-mq>^Hprr;uu&cVh2s8N'!rr<'!rr<'!!!*&u!.k17s8V6cs6ku.s8Vf]s,R-Z "7Q8YRc48H!9F.[!/CLR!.k1Krr<%urr<%Ms60L_k6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJiVrlXjSo2[LAq5RJcG]K!!'"u!!%TMkl:\G"97hK N:QH;rrhe3mrJJZ~> "p"\lF8qc#m/R(crr;uus8W#trr;rt#lal)rr<'!!!%TMl2UeH"on%MN;rqOn,J@Hrr_`iS=JX> rr@WMl2Ub`JcG`Lrr@WMNrT.B"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!m/R(crr;uus8W#trr;rt#lal)rr<'!!!%TMl2UeH"on%ONrT.Qn,JFJrr_`iR[W:: rr@WMl2Ub`JcG`Lrr@WMNrT.B"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJj8],ZJcG!7rr@WMrr;uuJcCc1s5sLamu34rn,NCj mrRr=!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJ_uB]:kPtP^q#C>\U&Y,m s8N'!JcC<$s8W,^"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiF_uB]:kPtP^q#C>\U&Y,m s8N'!JcC<$s8W,^"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJ_uB]:kPtP^q#C>\U&Y,ms8N'! JcC<$s8W,^"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJ`;]f;jo5>]s8)fprr<&lrr<&rs8E#Ys8)fi rr<&ms8E#hrrE-"quG^U!!)0]!!)'Z!!*#u!!%TMJc>rSkNDm6N/[>rs8N5jF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiF`;]f;jo5>]s8)fprr<&lrr<&rs8E#Ys8)fi rr<&ms8E#hrrE-"quG^U!!)0]!!)'Z!!*#u!!%TMJc>rSkNDm6NfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJ`;]f;jo5>]s8)fprr<&lrr<&rs8E#Ys8)firr<&m s8E#hrrE-"quG^U!!)0]!!)'Z!!*#u!!%TMJc>rSkNDm6N/[>rs8N5jF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJ`;]f;jo5D_s8N)urr<&trr<&lrr<&srr<&u rr<&Zrr<&urr<&mrr<&krr<&irrW9$rrE&u!!)$Y!!)0]!!)'Z!!*#u!!%TMJc>rSkNDm6N/[>r s8N5jF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiF`;]f;jo5D_s8N)urr<&trr<&lrr<&srr<&u rr<&Zrr<&urr<&mrr<&krr<&irrW9$rrE&u!!)$Y!!)0]!!)'Z!!*#u!!%TMJc>rSkNDm6NfN]! s8N5jFmjGQJ,~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJ`;]f;jo5D_s8N)urr<&trr<&lrr<&srr<&urr<&Z rr<&urr<&mrr<&krr<&irrW9$rrE&u!!)$Y!!)0]!!)'Z!!*#u!!%TMJc>rSkNDm6N/[>rs8N5j F74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJ`W#oUHqs8E#trrE-"rW)uuquHQmrW!!!!<)rs!<)rr!<)ot!.k0$s8V6as6ko*o'cVY"RgF#Er^^~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiF`W#oUHqs8E#trrE-"rW)uuquHQmrW!!!!<)rs!<)rr!<)ot!.k0$s8V6as6ku.o'cVY"RgL%FT?p~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJ`W#oUHq s8E#trrE-"rW)uuquHQmrW!!!!<)rs!<)rr!<)ot!.k0$s8V6as6ko*o'cVY"RgF#Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJ`W#o "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiF`W#o "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJ`W#o "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJ`W#o "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiF`W#o "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJ`W#o "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJ`W#o "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiF`W#o "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJ`W#o "p"\lF8qc#m/R(crVufrrVu`pq#C?oJcG*:s5sRcmu35*s7Yp]N;rn[n,JoJ`W#o "p"\lFoRo!m/R(crVufrrVu`pq#C?oJcG*:s5sRcmuEG.s7Yp]NrT+]n,JiF`W#o "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJ`W#o "p"\lF8qc#m/R(crr;uus8W*!rr;uuo`+pkJcG*:s5sRcmu35*s7Yp]N;rn[n,JoJ`;]f;rr;os rVuisrVuis"9/B$s8Duus82lqs8)frs8E!!rrE&urW)rtrW)osrW!$"!<;utrr;osr;Q`srr;os rVucqs8Vrrs8W&us8W&u!<;ors8W*!s8W&u!<;uts8W*!s8W&urr;osrVuisrr;osr;Z`rq#C9m rr;osr;Z`rq>^Hp#6+]'!!*'!rW)osrW!*$!<<'!JcC<$#63lLs6ko*o'cVY"RgF#Er^^~> "p"\lFoRo!m/R(crr;uus8W*!rr;uuo`+pkJcG*:s5sRcmuEG.s7Yp]NrT+]n,JiF`;]f;rr;os rVuisrVuis"9/B$s8Duus82lqs8)frs8E!!rrE&urW)rtrW)osrW!$"!<;utrr;osr;Q`srr;os rVucqs8Vrrs8W&us8W&u!<;ors8W*!s8W&u!<;uts8W*!s8W&urr;osrVuisrr;osr;Z`rq#C9m rr;osr;Z`rq>^Hp#6+]'!!*'!rW)osrW!*$!<<'!JcC<$#63lLs6ku.o'cVY"RgL%FT?p~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJ`;]f;rr;osrVuisrVuis"9/B$s8Duus82lqs8)fr s8E!!rrE&urW)rtrW)osrW!$"!<;utrr;osr;Q`srr;osrVucqs8Vrrs8W&us8W&u!<;ors8W*! s8W&u!<;uts8W*!s8W&urr;osrVuisrr;osr;Z`rq#C9mrr;osr;Z`rq>^Hp#6+]'!!*'!rW)os rW!*$!<<'!JcC<$#63lLs6ko*o'cVY"RgF#Er^^~> "p"\lF8qc#m/R(cs8W*!rVults8W*!r;Zcss8W*!!<;uts8W#tJcG?As5sRcmu35*s7Yp]N;rn[ n,JoJ`;]f;W;cht^Ae05hu "p"\lFoRo!m/R(cs8W*!rVults8W*!r;Zcss8W*!!<;uts8W#tJcG?As5sRcmuEG.s7Yp]NrT+] n,JiF`;]f;W;cht^Ae05hu "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJ`;]f;W;cht^Ae05hu "p"\lF8qc#pAb-mq>^Hps8W*!rVults8W*!r;Zcss8W*!s8W*!s8W*!s8W*!JcGBBs5sRcmu35* s7Yp]N;rn[n,JoJ_uB]:WW)qu^Ae05hu "p"\lFoRo!pAb-mq>^Hps8W*!rVults8W*!r;Zcss8W*!s8W*!s8W*!s8W*!JcGBBs5sRcmuEG. s7Yp]NrT+]n,JiF_uB]:WW)qu^Ae05hu "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJ_uB]:WW)qu^Ae05hu "p"\lF8qc#pAb-mq>^Hps8W*!rVults8Vrrs8W#trr;uus8W&uJcG9?s5sRcmu35*s7Yp]N;rn[ n,JoJJcG*:rrBe5rW(pWrW%NLJcF'rs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!pAb-mq>^Hps8W*!rVults8Vrrs8W#trr;uus8W&uJcG9?s5sRcmuEG.s7Yp]NrT+] n,JiFJcG*:rrBe5rW(pWrW%NLJcF'rs5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJJcG*:rrBe5rW(pWrW%NLJcF'rs5sLamu34rn,NCj mrRr=!.Y~> "p"\lF8qc#q#C3kqu?Zrs8W*!rVults8W*!qZ$QqrVultrVuisJcG?As5sRcmu35*s7Yp]N;rn[ n,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!q#C3kqu?Zrs8W*!rVults8W*!qZ$QqrVultrVuisJcG?As5sRcmuEG.s7Yp]NrT+] n,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#pAb-mq>^Hps8W*!rVults8W*!qu?Tprr;uur;Z`rJcGBBs5sRcmu35*s7Yp]N;rn[ n,JoJ_>jN8q>^EorVlitrVuisJcC<$JcD\Ks5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!pAb-mq>^Hps8W*!rVults8W*!qu?Tprr;uur;Z`rJcGBBs5sRcmuEG.s7Yp]NrT+] n,JiF_>jN8q>^EorVlitrVuisJcC<$JcD\Ks5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJ_>jN8q>^EorVlitrVuisJcC<$JcD\Ks5sLamu34r n,NCjmrRr=!.Y~> "p"\lF8qc#pAb-mq>^Hprr;uus8W*!rr;uur;Zcss8W*!s8W*!!<<#us8W*!JcGBBs5sRcmu35* s7Yp]N;rn[n,JoJ_#FB7qYpNqoD\djJcC<$JcD\Ks5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!pAb-mq>^Hprr;uus8W*!rr;uur;Zcss8W*!s8W*!!<<#us8W*!JcGBBs5sRcmuEG. s7Yp]NrT+]n,JiF_#FB7qYpNqoD\djJcC<$JcD\Ks5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJ_#FB7qYpNqoD\djJcC<$JcD\Ks5sLamu34rn,NCj mrRr=!.Y~> "p"\lF8qc#m/R(crVufrrVu`p#6+Z's8N'!rr;uus8W#tJcG?As5sRcmu35*s7Yp]N;rn[n,JoJ _#FB7qYpNqoD\djJcC<$JcD\Ks5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!m/R(crVufrrVu`p#6+Z's8N'!rr;uus8W#tJcG?As5sRcmuEG.s7Yp]NrT+]n,JiF _#FB7qYpNqoD\djJcC<$JcD\Ks5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJ_#FB7qYpNqoD\djJcC<$JcD\Ks5sLamu34rn,NCj mrRr=!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJaT)5>!WN0!s8;rss82lss8E#qrr<&ss8E#u rrE-"rW)rtr;cltrW!!!!<)rs!.k0$s+13os8V6as6ko*o'cVY"RgF#Er^^~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFaT)5>!WN0!s8;rss82lss8E#qrr<&ss8E#u rrE-"rW)rtr;cltrW!!!!<)rs!.k0$s+13os8V6as6ku.o'cVY"RgL%FT?p~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJaT)5>!WN0!s8;rss82lss8E#qrr<&ss8E#urrE-" rW)rtr;cltrW!!!!<)rs!.k0$s+13os8V6as6ko*o'cVY"RgF#Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJa8ZAErrE'!s8N)urr<&urr<&qrr<&rrr<&t rr<&urs&Q(rr<'!rrDrr$3:,+!<3'!!<<'!rr2ruJcC<$JcF!ps5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFa8ZAErrE'!s8N)urr<&urr<&qrr<&rrr<&t rr<&urs&Q(rr<'!rrDrr$3:,+!<3'!!<<'!rr2ruJcC<$JcF!ps5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJa8ZAErrE'!s8N)urr<&urr<&qrr<&rrr<&trr<&u rs&Q(rr<'!rrDrr$3:,+!<3'!!<<'!rr2ruJcC<$JcF!ps5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJa8ZAErrE'!s8N)urr<&urr<&qrr<&rrr<&t s82lsrr<&urr<&us8;rtrrrK'!<3'!s82kJs+13$s3:TDk6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFa8ZAErrE'!s8N)urr<&urr<&qrr<&rrr<&t s82lsrr<&urr<&us8;rtrrrK'!<3'!s82kJs+13$s3:TDk6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJa8ZAErrE'!s8N)urr<&urr<&qrr<&rrr<&ts82ls rr<&urr<&us8;rtrrrK'!<3'!s82kJs+13$s3:TDk6(bQN/[>rs8N5jF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJa8ZAErrE'!s8N)urr<&urr<&qrr<&rrr<&t rr<&rrr<&urrW9$rrE&u$3:,+!<3'!!<<'!JcC<$JcEjls5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFa8ZAErrE'!s8N)urr<&urr<&qrr<&rrr<&t rr<&rrr<&urrW9$rrE&u$3:,+!<3'!!<<'!JcC<$JcEjls5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJa8ZAErrE'!s8N)urr<&urr<&qrr<&rrr<&trr<&r rr<&urrW9$rrE&u$3:,+!<3'!!<<'!JcC<$JcEjls5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJa8ZAErrE'!s8N)urr<&urr<&qrr<&rrr<&t rr<&urrW9$rrE&u!s&B$!<3!*!<<'!rrE'!s8N)urr<%Ms+13$s3:TDk6(bQN/[>rs8N5jF74/M J,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFa8ZAErrE'!s8N)urr<&urr<&qrr<&rrr<&t rr<&urrW9$rrE&u!s&B$!<3!*!<<'!rrE'!s8N)urr<%Ms+13$s3:TDk6(bQNfN]!s8N5jFmjGQ J,~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJa8ZAErrE'!s8N)urr<&urr<&qrr<&rrr<&trr<&u rrW9$rrE&u!s&B$!<3!*!<<'!rrE'!s8N)urr<%Ms+13$s3:TDk6(bQN/[>rs8N5jF74/MJ,~> "p"\lF8qc#JYflQs5sRcmu35*s7Yp]N;rn[n,JoJaT)8?!ri9#rVururW)rtr;cisquHcsqZ-Zr rW)uurW)uurrE*!rVururW!0&!<3$!s8W&uJcC<$JcEsos5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!J\JY.s5sRcmuEG.s7Yp]NrT+]n,JiFaT)8?!ri9#rVururW)rtr;cisquHcsqZ-Zr rW)uurW)uurrE*!rVururW!0&!<3$!s8W&uJcC<$JcEsos5sLamuEG!n,NCjmre)A!.Y~> "p"\lF8l4?JcE7[rr<6&mu35*s7Yp]N;rn[n,JoJaT)8?!ri9#rVururW)rtr;cisquHcsqZ-Zr rW)uurW)uurrE*!rVururW!0&!<3$!s8W&uJcC<$JcEsos5sLamu34rn,NCjmrRr=!.Y~> #6=emF8qc#V1D7M8dHm/kPt"0N;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sLamu34rn,NCjmrRr= !.Y~> #6=emFoRo!^4CR@GmI")kPt"2NrT.Qn,JFJrr_`iR[Sg-JcC<$JcF'rs5sLamuEG!n,NCjmre)A !.Y~> #6=emF8l4?s+/J,c3Sas!<;MHN;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sLamu34rn,NCjmrRr= !.Y~> #6=emF8qc#V1D7M8dHm/kPt"0N;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sLamu34rn,NCjmrRr= !.Y~> #6=emFoRo!^4CR@GmI")kPt"2NrT.Qn,JFJrr_`iR[Sg-JcC<$JcF'rs5sLamuEG!n,NCjmre)A !.Y~> #6=emF8l4?s+/J,c3Sas!<;MHN;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sLamu34rn,NCjmrRr= !.Y~> #6=emF8qc#V=.%Vs5?TMs+*f38dHm/kPt"0N;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sLamu34r n,NCjmrRr=!.Y~> #6=emFoRo!^@-@Is5A8's+,IbGmI")kPt"2NrT.Qn,JFJrr_`iR[Sg-JcC<$JcF'rs5sLamuEG! n,NCjmre)A!.Y~> #6=emF8l4?s6n85s5D9's+/Jbc3Sas!<;MHN;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sLamu34r n,NCjmrRr=!.Y~> #6=emF8qc#V=.%Vs5?TMs+*f38dHm/kPt"0N;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sLamu34r n,NCjmrRr=!.Y~> #6=emFoRo!^@-@Is5A8's+,IbGmI")kPt"2NrT.Qn,JFJrr_`iR[Sg-JcC<$JcF'rs5sLamuEG! n,NCjmre)A!.Y~> #6=emF8l4?s6n85s5D9's+/Jbc3Sas!<;MHN;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sLamu34r n,NCjmrRr=!.Y~> #6=emF8qc#V=.%VrrPgm9)ehj9)ekj9)nnm9)nqj9)\ei9)nnk9)JYg9)\d@9(tp`.Hfmomu35* s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> #6=emFoRo!^@-@IrrRKGH2dgDH2djDH2mmGH2mpDH2[dCH2mmEH2IXAH2[boH1uRi8a#::muEG. s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> #6=emF8l4?s6n85rrULGcMmhDcMmkDcN!nGcN!qDcMdeCcN!nEcMRYAcMdcocM,TiHN4'Gmu35* s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> #6=emF8qc#V=.%VrsMI!s%5o`s%5o`s%<:j$;1?u9)no`9)no`r;R*rs8P\`s8P\`s8RXBpdtf@ kNDm6N/[f:p@&$?s8N2is.#U1s+13$s+13rs8V6as6ko*o'cVY"RgF#Er^^~> #6=emFoRo!^@-@IrsO,Ps*8nis*8nis*=VD$@2[OH2mniH2mnir;R+Ls8R@is8R@is8RXqpj!-: kNDm6NfO/>p@&$As8N2is-fC-s+13$s+13rs8V6as6ku.o'cVY"RgL%FT?p~> #6=emF8l4?s6n85rsR-Ps3Apis3Apis3CWD$I8\OcN!picN!pir;R,Ls8UBis8UBis8RYqps'.l !!*&fN/[f:p@&$?s8N2is.#U1s+13$s+13rs8V6as6ko*o'cVY"RgF#Er^^~> #6=emF8qc#V=.%Vru"H/s%5o`s%5o`s%<=k8kT-`9)no`9)no`rr;sis8W*krr7OAoh#K=kNDm6 N/[f:p@&$?s8N2is.#U1s+13$s+13rs8V6as6ko*o'cVY"RgF#Er^^~> #6=emFoRo!^@-@Iru$+^s*8nis*8nis*=YEH$TGiH2mniH2mnirr;tCs8W+Err7Opom$g7kNDm6 NfO/>p@&$As8N2is-fC-s+13$s+13rs8V6as6ku.o'cVY"RgL%FT?p~> #6=emF8l4?s6n85ru',^s3Apis3Apis3CZEcHcIicN!picN!pirr;uCs8W,Err7Ppp!*hi!!*&f N/[f:p@&$?s8N2is.#U1s+13$s+13rs8V6as6ko*o'cVY"RgF#Er^^~> #6=emF8qc#V>3a^s8,Fgru4T1s%5o`s%5o`s%<=k8kT-`9)no`9)no`s8W$is8W$irr7OApIY]? kNDm6N/[f:p@&$?s8N2is.#U1s+13$s+13rs8V6as6ko*o'cVY"RgF#Er^^~> #6=emFoRo!^A3'Qs8.*Aru67`s*8nis*8nis*=YEH$TGiH2mniH2mnis8W%Cs8W%Crr7OppN[$9 kNDm6NfO/>p@&$As8N2is-fC-s+13$s+13rs8V6as6ku.o'cVY"RgL%FT?p~> #6=emF8l4?s7st=s81+Aru98`s3Apis3Apis3CZEcHcIicN!picN!pis8W&Cs8W&Crr7PppWa%k !!*&fN/[f:p@&$?s8N2is.#U1s+13$s+13rs8V6as6ko*o'cVY"RgF#Er^^~> #6=emF8qc#V=.%Vru4T1s%5o`s%5o`s%<=k8kT-`9)no`9)no`s8W$is8W!hrr7OApdtf@kNDm6 N/[f:p@&$?s8N2is.#U1s+13$s+13rs8V6as6ko*o'cVY"RgF#Er^^~> #6=emFoRo!^@-@Iru67`s*8nis*8nis*=YEH$TGiH2mniH2mnis8W%Cs8W"Brr7Oppj!-:kNDm6 NfO/>p@&$As8N2is-fC-s+13$s+13rs8V6as6ku.o'cVY"RgL%FT?p~> #6=emF8l4?s6n85ru98`s3Apis3Apis3CZEcHcIicN!picN!pis8W&Cs8W#Brr7Ppps'.l!!*&f N/[f:p@&$?s8N2is.#U1s+13$s+13rs8V6as6ko*o'cVY"RgF#Er^^~> #6=emF8qc#V=.%VrsMI!s%5o`s%5o`s%<:j$qgR"9)no`9)no`s8W$is8N'krr #6=emFoRo!^@-@IrsO,Ps*8nis*8nis*=VD%!hmQH2mniH2mnis8W%Cs8N(Err<"Ds8RXqpj!-: kNDm6NfO/>p@&$As8N2is-fC-s+13$s+13rs8V6as6ku.o'cVY"RgL%FT?p~> #6=emF8l4?s6n85rsR-Ps3Apis3Apis3CWD%*nnQcN!picN!pis8W&Cs8N)Err<#Ds8RYqps'.l !!*&fN/[f:p@&$?s8N2is.#U1s+13$s+13rs8V6as6ko*o'cVY"RgF#Er^^~> #6=emF8qc#V=.%Vrt%g&s%5o`s%5o`s%<=k9)nqj9)\ei9)nqh9)nqk9)\d@9(tp`.Hfmomu35* s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> #6=emFoRo!^@-@Irt'JUs*8nis*8nis*=YEH2mpDH2[dCH2mpBH2mpEH2[boH1uRi8a#::muEG. s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> #6=emF8l4?s6n85rt*KUs3Apis3Apis3CZEcN!qDcMdeCcN!qBcN!qEcMdcocM,TiHN4'Gmu35* s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> #6=emF8qc#V;Y&Hs+*et8dHm/kPt"0N;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sLamu34rn,NCj mrRr=!.Y~> #6=emFoRo!^>XA;s+,INGmI")kPt"2NrT.Qn,JFJrr_`iR[Sg-JcC<$JcF'rs5sLamuEG!n,NCj mre)A!.Y~> #6=emF8l4?s5D9's+/JNc3Sas!<;MHN;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sLamu34rn,NCj mrRr=!.Y~> #6=emF8qc#V;Y&Hs+*et8dHm/kPt"0N;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sLamu34rn,NCj mrRr=!.Y~> #6=emFoRo!^>XA;s+,INGmI")kPt"2NrT.Qn,JFJrr_`iR[Sg-JcC<$JcF'rs5sLamuEG!n,NCj mre)A!.Y~> #6=emF8l4?s5D9's+/JNc3Sas!<;MHN;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sLamu34rn,NCj mrRr=!.Y~> #6=emF8qc#V;Y&Hs+*et8dHm/kPt"0N;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sLamu34rn,NCj mrRr=!.Y~> #6=emFoRo!^>XA;s+,INGmI")kPt"2NrT.Qn,JFJrr_`iR[Sg-JcC<$JcF'rs5sLamuEG!n,NCj mre)A!.Y~> #6=emF8l4?s5D9's+/JNc3Sas!<;MHN;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sLamu34rn,NCj mrRr=!.Y~> #6=emF8qc#V1D7M8dHm/kPt"0N;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sLamu34rn,NCjmrRr= !.Y~> #6=emFoRo!^4CR@GmI")kPt"2NrT.Qn,JFJrr_`iR[Sg-JcC<$JcF'rs5sLamuEG!n,NCjmre)A !.Y~> #6=emF8l4?s+/J,c3Sas!<;MHN;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sLamu34rn,NCjmrRr= !.Y~> #6=emF8qc#V1C)+.KAQ7s6ko*s8Vf]s,@!X"7Q8[S:U]ks+13$s3L`Fk6(bQN/[>rs8N5jF74/M J,~> #6=emFoRo!^4Akd8cRrWs6ku.s8Vf]s,R-Z"7Q8YRXtKis+13$s3L`Fk6(bQNfN]!s8N5jFmjGQ J,~> #6=emF8l4?s+,O-HiF'Ls6ko*s8Vf]s,@!X"7Q8[S:U]ks+13$s3L`Fk6(bQN/[>rs8N5jF74/M J,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJkPtP^q#C>\U&Y,mpAb*l rVlitrVuis_Z0W9JcD,;s5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFkPtP^q#C>\U&Y,mpAb*l rVlitrVuis_Z0W9JcD,;s5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJkPtP^q#C>\U&Y,mpAb*lrVlit rVuis_Z0W9JcD,;s5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJk5PG^s8)fprr<&lrr<&rs8E#Ys8)firr<&m s8E#hrrE-"quG^U!!)0]!!)'Z!!)cn!!)Wj!!'k8!!%TMR/d3L"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFk5PG^s8)fprr<&lrr<&rs8E#Ys8)firr<&m s8E#hrrE-"quG^U!!)0]!!)'Z!!)cn!!)Wj!!'k8!!%TMR/d3L"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJk5PG^s8)fprr<&lrr<&rs8E#Ys8)firr<&ms8E#h rrE-"quG^U!!)0]!!)'Z!!)cn!!)Wj!!'k8!!%TMR/d3L"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#jT#)Wo`+pkp&G$lJcGNFs5sRcmu35*s7Yp]N;rn[n,JoJk5PM`s8N)urr<&trr<&l rr<&srr<&urr<&Zrr<&urr<&mrr<&krr<&irrW9$rrE&u!!)$Y!!)0]!!)'Z!!)cn!!)Wj!!'k8 !!%TMR/d3L"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!jT#)Wo`+pkp&G$lJcGNFs5sRcmuEG.s7Yp]NrT+]n,JiFk5PM`s8N)urr<&trr<&l rr<&srr<&urr<&Zrr<&urr<&mrr<&krr<&irrW9$rrE&u!!)$Y!!)0]!!)'Z!!)cn!!)Wj!!'k8 !!%TMR/d3L"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJk5PM`s8N)urr<&trr<&lrr<&srr<&urr<&Zrr<&u rr<&mrr<&krr<&irrW9$rrE&u!!)$Y!!)0]!!)'Z!!)cn!!)Wj!!'k8!!%TMR/d3L"97hKN:QH; rrhe3mrJJZ~> "p"\lF8qc#jT#5[rr;uup&G$lp&G$lJcGNFs5sRcmu35*s7Yp]N;rn_n,JoJs8N*!rW)rtrW)rt r;cfrr;clt"9AH%rrE#t!!)utr;cisquHcs!!*#u$NU2,!<<'!!<<'!s8E#urrE-"rVururVuru rW!3'!<3'!!<<)u!;lcr!;ulr!<)p%!<3'!rrE)u!<)rr!<<'!!<2uu!<3#t!<<'"!<<#urVuis rr3!!s8E#us82lmrrE-"rW)rt! "p"\lFoRo!jT#5[rr;uup&G$lp&G$lJcGNFs5sRcmuEG.s7Yp]NrT+an,JiFs8N*!rW)rtrW)rt r;cfrr;clt"9AH%rrE#t!!)utr;cisquHcs!!*#u$NU2,!<<'!!<<'!s8E#urrE-"rVururVuru rW!3'!<3'!!<<)u!;lcr!;ulr!<)p%!<3'!rrE)u!<)rr!<<'!!<2uu!<3#t!<<'"!<<#urVuis rr3!!s8E#us82lmrrE-"rW)rt! "9AJjF8pdkZiC:0mu35*s7Yp]N;rn_n,JoJs8N*!rW)rtrW)rtr;cfrr;clt"9AH%rrE#t!!)ut r;cisquHcs!!*#u$NU2,!<<'!!<<'!s8E#urrE-"rVururVururW!3'!<3'!!<<)u!;lcr!;ulr !<)p%!<3'!rrE)u!<)rr!<<'!!<2uu!<3#t!<<'"!<<#urVuisrr3!!s8E#us82lmrrE-"rW)rt ! "p"\lF8qc#jT#5[rr;os"9/?$s8;rts8N'0rr<'!rr<'!rr<'!!!*'!r;_EKrr<#]"on%MN;rqO n,J@Hrr_`iS=KTY!!)rs!!*#u!!)or!s&B$!<3!"!<<)u!;lcr!;ZWp!<2uu!;uis!;lcr!<2uu !<2uu!;lcr!;uis!<3!"!<<)u!;lcr!;lcr!<)ot!<2uu!<3!"!<3&us8N*!rrW9$rrE&u!W`9# r;cis!!*#u!s&B$!<3!#!<<'!rr2rurr2ruqu6Wrp&>!lrr2rurr2ruqu6Wrp&>6srrE'!s8N)u rrW9$rrE&u!!)cn!!)lq!!)or!!)ut!!*#u#6=f(!!*'!!;ld'!<<'!rrE'!s8N)urr<&os82ll rr<&urrW9$rrE&u!!%TMTE"rS"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!jT#5[rr;os"9/?$s8;rts8N'0rr<'!rr<'!rr<'!!!*'!r;_EKrr<#]"on%ONrT.Q n,JFJrr_`iR[X6U!!)rs!!*#u!!)or!s&B$!<3!"!<<)u!;lcr!;ZWp!<2uu!;uis!;lcr!<2uu !<2uu!;lcr!;uis!<3!"!<<)u!;lcr!;lcr!<)ot!<2uu!<3!"!<3&us8N*!rrW9$rrE&u!W`9# r;cis!!*#u!s&B$!<3!#!<<'!rr2rurr2ruqu6Wrp&>!lrr2rurr2ruqu6Wrp&>6srrE'!s8N)u rrW9$rrE&u!!)cn!!)lq!!)or!!)ut!!*#u#6=f(!!*'!!;ld'!<<'!rrE'!s8N)urr<&os82ll rr<&urrW9$rrE&u!!%TMTE"rS"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJrr2rur;Q`srr2ruqu6`us8N)urrN3#s8E#qrr<&p rr<&urr<&srr<&rrr<&urr<&urr<&rrr<&srr<&urrN3#s8E#qrr<&rrr<&trr<&urr<&urrN3# !<3#u!<<'$!<<'!rr3$"s8W#trr2rurr3'#s8N)urrW9$rrE&u!!*#u!!)or!!)]l!!*#u!!*#u !!)or!!)]l#6=c(rrE*!!<3!#!<<'!rr2rup\t3nqYpNqqu6WrrVlitrr33's8N'!s8N)rrsAc+ rrE'!rrE*!!<2uu!;QTl!;QQo!<3!#!<<'!rr2ruJcDABs5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#mf3:eq>^Hprr;`ns8W*!%K?D.rr<'!rr<'!!!*&u!!`H'!<<'!!.k1Ms8V6cs6ko* s8Vf]s,@!X"7Q8[SGrNg!;ulp!<3#s!<<'!!<3!%!<<'!rrDrr!!)rsr;cis!!)rs!!)or!!*#u !!*#u!!)or!!)rs!!*#u"T\T&!<3&rrr<&rrr<&ts82lss82lsrr<&urrW9$rrE&u"p"]'!<<'! rr;lrs8N'!rr3'#s8N)urr<&urr<&rrr<&lrr<&urr<&urr<&rrr<&lrs&Q(!<3'!rrE&u!s&B$ !<2uu!;HKn!;c]q!;lcr!<)rq!<<'!!<2uu!<3#s!<<''!<3'!!<<)s!:'Ra!<3!#!<<'!rr2ru JcDABs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!mf3:eq>^Hprr;`ns8W*!%K?D.rr<'!rr<'!!!*&u!!`H'!<<'!!.k1Ms8V6cs6ku. s8Vf]s,R-Z"7Q8YRf< "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJrr2rur;ZZprr;oss8N'!rr3-%s8N*!!;lcr!;ulq !<2uu!;uis!;lcr!<2uu!<2uu!;lcr!;uis!<3!%!<<'!rrDrr!!)or!!)utquHcsquHcs!!*#u !s&B$!<3!&!<<'!s8N)us82lsrr<&urrW9$rrE&u!!*#u!!)or!!)]l!!*#u!!*#u!!)or!!)]l #6=c(rrE*!!<3!#!<<'!rr2rup\t3nqYpNqqu6WrrVucqs8N'!rr2rurr;oss8N9'rrE'!s8Vus lMgharr3'#s8N)urr<%Ms.B>kk6(bQN/[>rs8N5jF74/MJ,~> "p"\lF8qc#mf3:eq>^UEpqu6WrrVlitqu6Wrrr3'#s8N)urrW9$ rrE&u!s&B$!<3!#!<<'!qu6Wrrr3'#s8N)urr<&urr<&rrr<&lrr<&urr<&urr<&rrr<&lrs&Q( !<3'!rrE&u!s&B$!<2uu!;HKn!;c]q!;lcr!<)ot!;lcr!<3!#!<<'!rr3<*s8N*!!<3'!rrD]k quHNl!!*#u!s&B$!<2uu!.k0Bs8V6as6ko*o'cVY"RgF#Er^^~> "p"\lFoRo!mf3:eq>^UEpqu6WrrVlitqu6Wrrr3'#s8N)urrW9$ rrE&u!s&B$!<3!#!<<'!qu6Wrrr3'#s8N)urr<&urr<&rrr<&lrr<&urr<&urr<&rrr<&lrs&Q( !<3'!rrE&u!s&B$!<2uu!;HKn!;c]q!;lcr!<)ot!;lcr!<3!#!<<'!rr3<*s8N*!!<3'!rrD]k quHNl!!*#u!s&B$!<2uu!.k0Bs8V6as6ku.o'cVY"RgL%FT?p~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJrr2rur;Q`squ6Wrrr3'#s8N)urrW9$rrDlp!!)ut !!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!<2uu!;lcr!;lct!<3&urr<&prr<&rrr<&trr<&rrr<&u rrW9$rrE&u!s&B$!<3!#!<<'!rr3'#s8N)rrr<&urrW9$rrE&u!!*#u!!)or!!)]l!!*#u!!*#u !!)or!!)]l#6=c(rrE*!!<3!#!<<'!rr2rup\t3nqYpNqqu6WrrVlitqu6Wrrr3'#s8N)ursAc+ rrE'!rrE*!!;- "p"\lF8qc#nGi@cqu?Zrr;Zcsrr;iq&cVh2rr<'!rr<'!!!*'!!!*&r!.k1Ms8V6cs6ko*s8Vf] s,@!X"7Q8[SGrNg!;uis!<3!#!<<'!rr3'#s8N)urrW9$rrDlp!!)ut!!*#u!!*#u!!*#u!W`6# rr3'#s8N)urr<&urr<&rrr<&rs8E#trr<&prr<&rrr<&trr<&urrW9$rrE&u!s&B$!<3!#!<<'! rr3'#s8N)urrW9$rrE&u!s&B$!<3!#!<<'!rr2rurr2ruqu6Wrrr2ruq>UEprr2rurr2ruqu6Wr rr2ruq>U["rrE'!s8N)urrW9$rrE&u!!)cn!!)lq!!)or!!)ut!!*#u!s&B$!<3!#!<<'!rr3<* s8N*!!<3'!rrE&u!!) "p"\lFoRo!nGi@cqu?Zrr;Zcsrr;iq&cVh2rr<'!rr<'!!!*'!!!*&r!.k1Ms8V6cs6ku.s8Vf] s,R-Z"7Q8YRf<UEprr2rurr2ruqu6Wr rr2ruq>U["rrE'!s8N)urrW9$rrE&u!!)cn!!)lq!!)or!!)ut!!*#u!s&B$!<3!#!<<'!rr3<* s8N*!!<3'!rrE&u!!) "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJrr2rur;Q`srr3'#s8N)urrW9$rrE&u!s&B$!;ZWp !<)ot!<2uu!<2uu!<3!"!<3&urrW9$rrE&u!!*#u!!)or!!)orrW)rt!!)ip!!)or!!)ut!!*#u !s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!s&B$!<3!#!<<'!rr3'#s8N)urr<&urr<&rrr<&u rr<&prr<&urr<&urr<&rrr<&urr<&prs&Q(!<3'!rrE&u!s&B$!<2uu!;HKn!;c]q!;lcr!<)ot !<3!#!<<'!rr3'#s8N)ursAc+rrE'!rrE*!!<2uu!:'Ra!<3!#!<<'!rr2ruJcDABs5sLamu34r n,NCjmrRr=!.Y~> "p"\lF8qc#mf3:eq>^Hpr;Zcsrr;uur;Zcs&H;_1s8N'!rr<'!rr<'!!!%TMqu?]Z"on%MN;rqO n,J@HrrqlkS=KWZr;cfrrW)osrW!'#!<<)u!!*&s!<)rp!<<)u!!3*"rr;rtrr;rtrVuis!ri9# r;cisr;ccq!!*#ur;cfrquHcsqZ-ZrrW)uurVuruqZ-ZrrrE*!rVurur;cltrrE*!rW)rtr;cfr rW)rtr;ccqrW)`nr;cisr;ccqrW)corr<9'!<3$!s8W&urVuis!WN/qs8;rss82lss8)frs8E#u s8E#us8N*!s8Duus8E!&rrE'!!<<)u!9jI^!!E6$s8W&uJcD>As5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!mf3:eq>^Hpr;Zcsrr;uur;Zcs&H;_1s8N'!rr<'!rr<'!!!%TMqu?]Z"on%ONrT.Q n,JFJrrqlkR[X9Vr;cfrrW)osrW!'#!<<)u!!*&s!<)rp!<<)u!!3*"rr;rtrr;rtrVuis!ri9# r;cisr;ccq!!*#ur;cfrquHcsqZ-ZrrW)uurVuruqZ-ZrrrE*!rVurur;cltrrE*!rW)rtr;cfr rW)rtr;ccqrW)`nr;cisr;ccqrW)corr<9'!<3$!s8W&urVuis!WN/qs8;rss82lss8)frs8E#u s8E#us8N*!s8Duus8E!&rrE'!!<<)u!9jI^!!E6$s8W&uJcD>As5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn]n,JoJs8W#trVuisrVuis"9/B$s8Duus82lqs8)frs8E!! rrE&urW)rtrW)osrW!$"!<;utrr;osr;Q`srr;osrVucqs8Vrrs8W&us8W&u!<;ors8W*!s8W&u !<;uts8W*!s8W&urr;osrVuisrr;osr;Z`rq#C9mrr;osr;Z`rq>^Hp#6+]'!!*'!rW)osrW!!! !;ZZn!<3#r!<<)r!<<)u!<<)u!<<*!!<<)u!!*&u!!`H'rr<'!s8E#^s8E!#rrE*!rW%NLT)\iR "97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#mf3:eq>^Hpr;Zcsrr;uus8W*!#6+Z'rr<'!rW!'#!!*&u!!`H'!<<'!!.k1Ms8V6c s6ko*s8Vf]s,@!X"7Q8[S>lMg!5AI5!8meV!.k0$s,[3[k6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!mf3:eq>^Hpr;Zcsrr;uus8W*!#6+Z'rr<'!rW!'#!!*&u!!`H'!<<'!!.k1Ms8V6c s6ku.s8Vf]s,R-Z"7Q8YR]6;e!5AI5!8meV!.k0$s,[3[k6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC:0mu35*s7Yp]N;rn[n,JoJWW)qu^Ae05hu "p"\lF8qc#jT#5[r;ZcsrVufrs8W*!s8W*!$i^2,s8N'!rr<'!s8;qKs8N&uk6:nSN/[f:oSihM "7Q8[S>lMg!5AI5!8meV!.k0$s,[3[k6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!jT#5[r;ZcsrVufrs8W*!s8W*!$i^2,s8N'!rr<'!s8;qKs8N&uk6:nSNfO/>oT&tO "7Q8YR]6;e!5AI5!8meV!.k0$s,[3[k6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC:0mu35*s7D9Mrr_`iS=HSY!!'b5!!(pV!!%TMJcCf2s5sLamu34rn,NCjmrRr= !.Y~> "p"\lF8qc#JcE7[s5sObmu35*o8N_L"7Q8[S?)\i!5AL4!9*tW!.k0$s,d9\k6(bQN/[>rs8N5j F74/MJ,~> "p"\lFoRo!JcE7[s5sObmuEG.o8`kN"7Q8YR]HJg!5AL4!9*tW!.k0$s,d9\k6(bQNfN]!s8N5j FmjGQJ,~> "9AJjF8pdkZiC7/mu35*o8N_L"7Q8[S?)\i!5AL4!9*tW!.k0$s,d9\k6(bQN/[>rs8N5jF74/M J,~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJkl1V_dJs1GrVlitrVuismJd.dk5YD\rVlitrVuis JcC<$JcFp5s5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFkl1V_dJs1GrVlitrVuismJd.dk5YD\rVlitrVuis JcC<$JcFp5s5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJkl1V_dJs1GrVlitrVuismJd.dk5YD\rVlitrVuisJcC<$ JcFp5s5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJ\GlO/oD\djp&Fsjir8uYoD\djJcC<$JcFp5s5sLa mu34rn,NCjmrRr=!.Y~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiF\GlO/oD\djp&Fsjir8uYoD\djJcC<$JcFp5s5sLa muEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJ\GlO/oD\djp&Fsjir8uYoD\djJcC<$JcFp5s5sLamu34r n,NCjmrRr=!.Y~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJbPqPBn,E@foD\djpAY*mrr2ruir8uYoD\djJcC<$ JcFp5s5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFbPqPBn,E@foD\djpAY*mrr2ruir8uYoD\djJcC<$ JcFp5s5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJbPqPBn,E@foD\djpAY*mrr2ruir8uYoD\djJcC<$JcFp5 s5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJnGiIfrr;rtrVucqrr;rtp&>!ln,N:cs8W&uqu6Wr r;Z`rrr2ruqu?WqrVucqrr;rtp](-ks8W&uqu6Wrr;Z`rs8N*"s8E#ts8;rts8E!!rrE#trW%NL JcCZ.s5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFnGiIfrr;rtrVucqrr;rtp&>!ln,N:cs8W&uqu6Wr r;Z`rrr2ruqu?WqrVucqrr;rtp](-ks8W&uqu6Wrr;Z`rs8N*"s8E#ts8;rts8E!!rrE#trW%NL JcCZ.s5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJnGiIfrr;rtrVucqrr;rtp&>!ln,N:cs8W&uqu6Wrr;Z`r rr2ruqu?WqrVucqrr;rtp](-ks8W&uqu6Wrr;Z`rs8N*"s8E#ts8;rts8E!!rrE#trW%NLJcCZ. s5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJnc&Rhrr2rurVlitrVls"s8N)urr<&urr<&nrr<&d rr<&qrr<&rrr<&trr<&urrN3#s8E#qrr<&trrW9$rrE&u!!*#u!!)cn!!)lq!!)or!!)ut!!*#u #6=f(!!*'!!;ld'!<<'!rrE'!s8N)urr<%Ms+13/s8V6as6ko*o'cVY"RgF#Er^^~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFnc&Rhrr2rurVlitrVls"s8N)urr<&urr<&nrr<&d rr<&qrr<&rrr<&trr<&urrN3#s8E#qrr<&trrW9$rrE&u!!*#u!!)cn!!)lq!!)or!!)ut!!*#u #6=f(!!*'!!;ld'!<<'!rrE'!s8N)urr<%Ms+13/s8V6as6ku.o'cVY"RgL%FT?p~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJnc&Rhrr2rurVlitrVls"s8N)urr<&urr<&nrr<&drr<&q rr<&rrr<&trr<&urrN3#s8E#qrr<&trrW9$rrE&u!!*#u!!)cn!!)lq!!)or!!)ut!!*#u#6=f( !!*'!!;ld'!<<'!rrE'!s8N)urr<%Ms+13/s8V6as6ko*o'cVY"RgF#Er^^~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJnGiIfr;Q`squ6WrrVucqq#: "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFnGiIfr;Q`squ6WrrVucqq#: "9AJjF8pdkZiC4.mu34rn,NCin,JoJnGiIfr;Q`squ6WrrVucqq#: "p"\lF8qc#jT##Uq#C?or;Z]qJcG9?s5sLamu34rn,NCin,JoJmJd.drVlitr;Q`sr;Q`soD\dj mJd.dqYpNqqu6WrrVlitp\t3nrVlitr;Q`sr;Q`soD\djqYpNqqu6WrrVlitqu6Wrrr3'#s8N)u rsAc+rrE'!rrE*!!.k0$s+p^Tk6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!jT##Uq#C?or;Z]qJcG9?s5sLamuEG!n,NCin,JiFmJd.drVlitr;Q`sr;Q`soD\dj mJd.dqYpNqqu6WrrVlitp\t3nrVlitr;Q`sr;Q`soD\djqYpNqqu6WrrVlitqu6Wrrr3'#s8N)u rsAc+rrE'!rrE*!!.k0$s+p^Tk6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJmJd.drVlitr;Q`sr;Q`soD\djmJd.dqYpNqqu6WrrVlit p\t3nrVlitr;Q`sr;Q`soD\djqYpNqqu6WrrVlitqu6Wrrr3'#s8N)ursAc+rrE'!rrE*!!.k0$ s+p^Tk6(bQN/[>rs8N5jF74/MJ,~> "p"\lF8qc#jT#5[rVultq#C?orVults8W*!JcG<@s5sLamu34rn,NCin,JoJnc&Rhrr2rurVlit rVlitrr3'#s8N)urr<&mrr<&err<&qrr<&rrr<&trr<&urrW9$rrE&u!!)ut!!)ut!!*#u!s&B$ !<2uu!;HKn!;c]q!;lcr!<)ot!<3!#!<<'!rr3'#s8N)ursAc+rrE'!rrE*!!<2uu!.k0$s,@!X k6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!jT#5[rVultq#C?orVults8W*!JcG<@s5sLamuEG!n,NCin,JiFnc&Rhrr2rurVlit rVlitrr3'#s8N)urr<&mrr<&err<&qrr<&rrr<&trr<&urrW9$rrE&u!!)ut!!)ut!!*#u!s&B$ !<2uu!;HKn!;c]q!;lcr!<)ot!<3!#!<<'!rr3'#s8N)ursAc+rrE'!rrE*!!<2uu!.k0$s,@!X k6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJnc&Rhrr2rurVlitrVlitrr3'#s8N)urr<&mrr<&err<&q rr<&rrr<&trr<&urrW9$rrE&u!!)ut!!)ut!!*#u!s&B$!<2uu!;HKn!;c]q!;lcr!<)ot!<3!# !<<'!rr3'#s8N)ursAc+rrE'!rrE*!!<2uu!.k0$s,@!Xk6(bQN/[>rs8N5jF74/MJ,~> "p"\lF8qc#jT#5[rVults8W#ts8W#ts8W*!r;Zcss8W*!"9/?$s8;ots8;rss8N(Vs8V6as6ko* o'cVY"7Q8[SFHRX!<3#r!<<)s!<3#t!;-9k!:^$e!<3#r!<<)r!<<)u!<3#s!<3#r!<<)s!<3#t !;HNl!<3#r!<<)r!<<)u!<<)u!<<*!!<<)u!!*&u!!`H'rr<'!s8E"Ls+13.s8V6as6ko*o'cVY "RgF#Er^^~> "p"\lFoRo!jT#5[rVults8W#ts8W#ts8W*!r;Zcss8W*!"9/?$s8;ots8;rss8N(Vs8V6as6ku. o'cVY"7Q8YRdg@V!<3#r!<<)s!<3#t!;-9k!:^$e!<3#r!<<)r!<<)u!<3#s!<3#r!<<)s!<3#t !;HNl!<3#r!<<)r!<<)u!<<)u!<<*!!<<)u!!*&u!!`H'rr<'!s8E"Ls+13.s8V6as6ku.o'cVY "RgL%FT?p~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJnGiIfrr;lrs8Vusrr;rto`"mknGiFerr;lrs8Vrrs8W&u rr;osrr;lrs8Vusrr;rtp](0lrr;lrs8Vrrs8W&us8W&us8W*!s8W&u!<<#u#6+]'!!*'!rW%NL JcCZ.s5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#mf3:eq>^HprVult$NC)+s8N'!s8N'!rr;uur;Zcss8W*!!<;]lrr;uuMZ<_>"97hK N:QH;rr_`iS=G01JcC<$JcF'rs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!mf3:eq>^HprVult$NC)+s8N'!s8N'!rr;uur;Zcss8W*!!<;]lrr;uuMZ<_>"97hM Nq2Z=rr_`iR[Sg-JcC<$JcF'rs5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#mf3:eq>^?m!ri6#r;Zcss8W*!rr;uur;Zcss8W*!!<<#us8W&urr;uu!ri6#M?!V= "97hKN:QH;rr_`iS=G01JcC<$JcF'rs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!mf3:eq>^?m!ri6#r;Zcss8W*!rr;uur;Zcss8W*!!<<#us8W&urr;uu!ri6#M?!V= "97hMNq2Z=rr_`iR[Sg-JcC<$JcF'rs5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#nGi@cqu?ZrrVults8Vuss8W*!rr;uur;Zcss8W*!!ri6#rr;uurVult!ri6#M?!V= "97hKN:QH;rr_`iS=G01JcC<$JcF'rs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!nGi@cqu?ZrrVults8Vuss8W*!rr;uur;Zcss8W*!!ri6#rr;uurVult!ri6#M?!V= "97hMNq2Z=rr_`iR[Sg-JcC<$JcF'rs5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#mf3:eq>^HprVult$NC)+s8N'!s8N'!rr;uur;Zcss8W*!!ri6#rr;uur;Z`rM#[M< "97hKN:QH;rr_`iS=G01JcC<$JcF'rs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!mf3:eq>^HprVult$NC)+s8N'!s8N'!rr;uur;Zcss8W*!!ri6#rr;uur;Z`rM#[M< "97hMNq2Z=rr_`iR[Sg-JcC<$JcF'rs5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#mf3:eq>^HprVult')qq3s8N'!s8N'!rrE*!!!*'!r;ZitrW!$"!!*#urrDusrW%cS s5sLamu34rn,NCin,JoJe,KCJfDkjNrVlitiW&lW_uK]9rVlitrVuisk5YD\kPtP^q#C[HTeGoOKhu "p"\lFoRo!mf3:eq>^HprVult')qq3s8N'!s8N'!rrE*!!!*'!r;ZitrW!$"!!*#urrDusrW%cS s5sLamuEG!n,NCin,JiFe,KCJfDkjNrVlitiW&lW_uK]9rVlitrVuisk5YD\kPtP^q#C[HTeGoOKhu "9AJjF8pdkZiC4.mu34rn,NCin,JoJe,KCJfDkjNrVlitiW&lW_uK]9rVlitrVuisk5YD\kPtP^ q#C[HTeGoOKhu "p"\lF8qc#jT#5[rVults8W&u#6+Z's8N'!rVufrs8W*!"oeQ&rr<&us8N)rs8N(Ts8V6as6ko* o'cVY"7Q8[SDsPK!;- "p"\lFoRo!jT#5[rVults8W&u#6+Z's8N'!rVufrs8W*!"oeQ&rr<&us8N)rs8N(Ts8V6as6ku. o'cVY"7Q8YRc=>I!;- "9AJjF8pdkZiC4.mu34rn,NCin,JoJir8uYo`+mjpAY6qrrE*!quH*`!!)*[qZ-Tp!!)]l!!)or rW([P!!)Wj!!)3^!!)'Z!!)`m!!)Ed!!)rs!W`6#hZ!QUnG`OirrDus!!)Wj!!)ut!W`6#l2L_` ]Dhp4rrDfn!!)Wj!!)Ed!!)3^s5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#Zi:"*L]@D;"97hKN:QH;rr_`iS=JU=!!)]l!!*#u!!)cn!W`6#rr2rurr2rumJd.d j8T)Zrr2rurVlitp&>!lr;Q`srr2rug]%6RoD\djkPkM^j8T)ZpAY*mmJd.dr;QfurrCpU!!)Ng !W`6#r;Q`soD\djrVlp!rrD<`!!'Y2!W`6#p\t3noD\djmJd.dkPtSF"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!Zi:"*L]@D;"97hMNq2Z=rr_`iR[W79!!)]l!!*#u!!)cn!W`6#rr2rurr2rumJd.d j8T)Zrr2rurVlitp&>!lr;Q`srr2rug]%6RoD\djkPkM^j8T)ZpAY*mmJd.dr;QfurrCpU!!)Ng !W`6#r;Q`soD\djrVlp!rrD<`!!'Y2!W`6#p\t3noD\djmJd.dkPtSF"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJir8uYp&>!lrr2rup\t9prrE&u!!*#u!!)Ed!!)'Z!!*#u !!)ut!!)]l!!)rs!!*#u!!(dR!!)Wj!!)3^!!)'Z!!)`m!!)Ed!!)rs!W`6#hZ!QUnG`OirrDus !!)Wj!!)ut!W`6#l2L_`]Dhp4rrDfn!!)Wj!!)Ed!!)3^s5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#[/^.+L]@D;"97hKN:QH;rr_`iS=K0M!UQtrrE'!rVlitrVufrrr;lrs8N'! rr3?+rr<'!rr<'!rrE)u!<<'"!<<#u!<<#u!<<#uq>^?ms8W&uqu6Wrr;Z`rpAb*lrr;lrq>^Eo !WN/us8E#ss8;p%rr<'!rr<&trr<&ss8E#krr<&srrN3#!;uis!;lcr!<3#t!!3*"rVuisrVufr rVlitqu6Wrr;QfurrDus!!)Zk!!)rs!W`6#r;Q`squ6Wrr;Z`rrr3'#rr<&ts8E#us8Duus8E#n s8E#ts8E#ss82lrs8E#rrr<&rrr<&srrN3#!;HNl!<<)u!!*&u!!*&s!<3#t!<)rs!;uis!9jI_ k6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo![/^.+L]@D;"97hMNq2Z=rr_`iR[WgI!UQtrrE'!rVlitrVufrrr;lrs8N'! rr3?+rr<'!rr<'!rrE)u!<<'"!<<#u!<<#u!<<#uq>^?ms8W&uqu6Wrr;Z`rpAb*lrr;lrq>^Eo !WN/us8E#ss8;p%rr<'!rr<&trr<&ss8E#krr<&srrN3#!;uis!;lcr!<3#t!!3*"rVuisrVufr rVlitqu6Wrr;QfurrDus!!)Zk!!)rs!W`6#r;Q`squ6Wrr;Z`rrr3'#rr<&ts8E#us8Duus8E#n s8E#ts8E#ss82lrs8E#rrr<&rrr<&srrN3#!;HNl!<<)u!!*&u!!*&s!<3#t!<)rs!;uis!9jI_ k6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJo)A^js8E#trrE-"rW)uuquHNl!!)Wj!W`6#rr2rurr2ru rr;rtrr;osrVufrs8W&urr3!!s8E#ss8E!!rrDlp"9AH%rrE#t!!)utr;cisquHcs!!*#u$NU2, !<<'!!<<'!s8E#urrE-"rVururVururW)coquHcsrW)iq!!)rsrW)ZlrW)rtquHQmrW!!!!<)rs !<)rr!!`H'!<<'!!<)ot!;ulr!;6?l!;uiu!<3&srr<&rrr<&us8E!!rrE#trW)osr;cfr!!)or !!)rs!W`6#r;Q`so`"mkr;QfurrDus!!)or!!)rsrW)rt!s&?$!<)rs!<<)u!!*&u!;QTn!<3#t !<)rq!<3#t!;uis!;lcr!;uiu!<3&ns8;rts8Duus8Duus82lrs8E#ss8E#rrr<&_s8V6as6ko* o'cVY"RgF#Er^^~> "p"\lF8qc#[K$7,LB%;:"97hKN:QH;rr_`iS=K-L!!*#u!!*#u!!)or!!)ZkrrDNfr;cis!!*#u !!)or!s&B$!<2uu!<)ot!<)rt!<<'$!<<'!rr2ruq#CUEprr2rur;Q`squ6Wrrr2ru rr2ruqu6Wrr;Q`srr2rup\t3nqYpNqqu6WrrVlitrr2ruq#:6srrE'!s8N)u rrW9$rrE&u!s&B$!<2uu!<)ot!<)ot!<2uu!9jF_!;lcr!<)p&!<3'!!<<'!rr3'#s8N)urr<&t rr<&rrr<&]rr<&krr<&rrr<&trr<&ursAc+rr<'!rrE*!!<3!#!<<'!rr2ruq#:rs8N5jF74/MJ,~> "p"\lFoRo![K$7,LB%;:"97hMNq2Z=rr_`iR[WdH!!*#u!!*#u!!)or!!)ZkrrDNfr;cis!!*#u !!)or!s&B$!<2uu!<)ot!<)rt!<<'$!<<'!rr2ruq#CUEprr2rur;Q`squ6Wrrr2ru rr2ruqu6Wrr;Q`srr2rup\t3nqYpNqqu6WrrVlitrr2ruq#:6srrE'!s8N)u rrW9$rrE&u!s&B$!<2uu!<)ot!<)ot!<2uu!9jF_!;lcr!<)p&!<3'!!<<'!rr3'#s8N)urr<&t rr<&rrr<&]rr<&krr<&rrr<&trr<&ursAc+rr<'!rrE*!!<3!#!<<'!rr2ruq#: "9AJjF8pdkZiC4.mu34rn,NCin,JoJnc&Rhrr2rurr2ruqu6Wro`+pkn,N=drr2rurr2ruqu6`u s8N)urr<&trr<&ts8N*!rrW9$rrE&u!!)forW)iq!!)ip!!*#u!!)rs!!)or!!*#u!!*#u!!)or !!)rs!!*#u!!)cn!!)lq!!)or!!)ut!!*#u!!)fo!!*#u!!*#u!!)]l#6=c(rrE*!!<3!#!<<'! rr3'#s8N)urr<&trr<&trr<&urr<&_rr<&rrr<&trs&Q(!<3'!rrE&u!s&B$!<2uu!<)ot!;lcr !9X:]!;-9k!;lcr!<)ot!<3!*!<<'!!<<'!s8N)urrW9$rrE&u!!)fo!!*#u!!)ut!!)ut!s&B$ !<2uu!<2uu!<)ot!;lcr!:Tpf!<3!#!<<'!rr2rurr2rur;Q`srr3'#s8N)urr<&trr<&_s8V6a s6ko*o'cVY"RgF#Er^^~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJnc&Rhrr2rurr2ruqu6WroDegjnG`Rjs8N)us82lr s8;rtrr<&urr<&trr<&trr<&urrW9$rrE&u!!)fo!W`6#qu6Wrr;Z]qrr2rur;Q`squ6Wrrr2ru rr2ruqu6Wrr;Q`srr2rup\t3nqYpNqqu6WrrVucqq#:6srrE'!s8N)urrW9$ rrE&u!s&B$!<2uu!<)ot!<)rq!:'U^!<<)s!<<'(!<3'!!<<'!rr3'#s8N)urrN3#s82lss82l\ rr<&ms82lss82lrs8E#trr<&urrW9$rrE&u#6=f(!<3'!!;HNm!;uis!;lcr!<)rq!<<)s!<<)s !:g'h!<3!#!<<'!rr2rurr2rur;ZZprr;rtr;Q`skl:\G"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFnc&Rhrr2rurr2ruqu6WroDegjnG`Rjs8N)us82lr s8;rtrr<&urr<&trr<&trr<&urrW9$rrE&u!!)fo!W`6#qu6Wrr;Z]qrr2rur;Q`squ6Wrrr2ru rr2ruqu6Wrr;Q`srr2rup\t3nqYpNqqu6WrrVucqq#:6srrE'!s8N)urrW9$ rrE&u!s&B$!<2uu!<)ot!<)rq!:'U^!<<)s!<<'(!<3'!!<<'!rr3'#s8N)urrN3#s82lss82l\ rr<&ms82lss82lrs8E#trr<&urrW9$rrE&u#6=f(!<3'!!;HNm!;uis!;lcr!<)rq!<<)s!<<)s !:g'h!<3!#!<<'!rr2rurr2rur;ZZprr;rtr;Q`skl:\G"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJnc&Rhrr2rurr2ruqu6WroDegjnG`Rjs8N)us82lrs8;rt rr<&urr<&trr<&trr<&urrW9$rrE&u!!)fo!W`6#qu6Wrr;Z]qrr2rur;Q`squ6Wrrr2rurr2ru qu6Wrr;Q`srr2rup\t3nqYpNqqu6WrrVucqq#:6srrE'!s8N)urrW9$rrE&u !s&B$!<2uu!<)ot!<)rq!:'U^!<<)s!<<'(!<3'!!<<'!rr3'#s8N)urrN3#s82lss82l\rr<&m s82lss82lrs8E#trr<&urrW9$rrE&u#6=f(!<3'!!;HNm!;uis!;lcr!<)rq!<<)s!<<)s!:g'h !<3!#!<<'!rr2rurr2rur;ZZprr;rtr;Q`skl:\G"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJnc&Rhrr2rurr2ruqu6Wrp&>!lrr2runc&Rhrr3'# s8N)rrr<&urrW9$rrE&u!!)ut!!)ut!!*#u!s&B$!<2uu!;QQo!;ZWp!<)ot!<2uu!<2uu!;uis !<3!#!<<'!rr2rurr2ruqu6Wrqu6]trrDcm!!)lq!!)or!!)ut!!)Zk!!*#u!!*#u!!)]l#6=c( rrE*!!<3!#!<<'!rr3'#s8N)urr<&trr<&trr<&[rr<&rrr<&trs&Q(!<3'!rrE&u!s&B$!<2uu !<)ot!;lcr!9X:]!;-9k!;lcr!;ZWs!<<'!rr3'#s8N)urs&Q(rrE'!rrD]k!!)ut!!)rs!!)rs !!)ip!!)or!!)Kf!!*#u!!*#u!W`6#rVlitr;Q`sp\t3nrVlitkl:\G"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFnc&Rhrr2rurr2ruqu6Wrp&>!lrr2runc&Rhrr3'# s8N)rrr<&urrW9$rrE&u!!)ut!!)ut!!*#u!s&B$!<2uu!;QQo!;ZWp!<)ot!<2uu!<2uu!;uis !<3!#!<<'!rr2rurr2ruqu6Wrqu6]trrDcm!!)lq!!)or!!)ut!!)Zk!!*#u!!*#u!!)]l#6=c( rrE*!!<3!#!<<'!rr3'#s8N)urr<&trr<&trr<&[rr<&rrr<&trs&Q(!<3'!rrE&u!s&B$!<2uu !<)ot!;lcr!9X:]!;-9k!;lcr!;ZWs!<<'!rr3'#s8N)urs&Q(rrE'!rrD]k!!)ut!!)rs!!)rs !!)ip!!)or!!)Kf!!*#u!!*#u!W`6#rVlitr;Q`sp\t3nrVlitkl:\G"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJnc&Rhrr2rurr2ruqu6Wrp&>!lrr2runc&Rhrr3'#s8N)r rr<&urrW9$rrE&u!!)ut!!)ut!!*#u!s&B$!<2uu!;QQo!;ZWp!<)ot!<2uu!<2uu!;uis!<3!# !<<'!rr2rurr2ruqu6Wrqu6]trrDcm!!)lq!!)or!!)ut!!)Zk!!*#u!!*#u!!)]l#6=c(rrE*! !<3!#!<<'!rr3'#s8N)urr<&trr<&trr<&[rr<&rrr<&trs&Q(!<3'!rrE&u!s&B$!<2uu!<)ot !;lcr!9X:]!;-9k!;lcr!;ZWs!<<'!rr3'#s8N)urs&Q(rrE'!rrD]k!!)ut!!)rs!!)rs!!)ip !!)or!!)Kf!!*#u!!*#u!W`6#rVlitr;Q`sp\t3nrVlitkl:\G"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJnc&Rhrr2rurr2ruqu6Wrrr2ruq>UEprr2runc&Rh rr3'#s8N)urrW9$rrE&u!s&B$!<2uu!<)ot!<)ot!<3!#!<<'!rr2ruq#:UEprVlitrr2ru rr2rurr3$"rrE&u!s&B$!<2uu!<2uu!;lcr!;lfq!;?Em!;c]q!;lcr!<)ot!<2uu!;QQo!<2uu !<2uu!;6?s!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut!!)ut!!*#u!!)6_!!)or!!)ut#6=c( rrE*!!<3!#!<<'!rr2rurVlitqu6Wrk5PD]o`"mkqu6WrrVlitrr3'#s8N)urrW9$rrE&u!!*#u !W`6#p\t3nrr2rurVlitrVlitrr3'#s8N)urr<&trr<&rrr<&frr<&urr<&us8E#srr<&urrN3# !<3!#!<<'!rr2rurVlitkl:\G"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFnc&Rhrr2rurr2ruqu6Wrrr2ruq>UEprr2runc&Rh rr3'#s8N)urrW9$rrE&u!s&B$!<2uu!<)ot!<)ot!<3!#!<<'!rr2ruq#:UEprVlitrr2ru rr2rurr3$"rrE&u!s&B$!<2uu!<2uu!;lcr!;lfq!;?Em!;c]q!;lcr!<)ot!<2uu!;QQo!<2uu !<2uu!;6?s!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut!!)ut!!*#u!!)6_!!)or!!)ut#6=c( rrE*!!<3!#!<<'!rr2rurVlitqu6Wrk5PD]o`"mkqu6WrrVlitrr3'#s8N)urrW9$rrE&u!!*#u !W`6#p\t3nrr2rurVlitrVlitrr3'#s8N)urr<&trr<&rrr<&frr<&urr<&us8E#srr<&urrN3# !<3!#!<<'!rr2rurVlitkl:\G"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJnc&Rhrr2rurr2ruqu6Wrrr2ruq>UEprr2runc&Rhrr3'# s8N)urrW9$rrE&u!s&B$!<2uu!<)ot!<)ot!<3!#!<<'!rr2ruq#:UEprVlitrr2rurr2ru rr3$"rrE&u!s&B$!<2uu!<2uu!;lcr!;lfq!;?Em!;c]q!;lcr!<)ot!<2uu!;QQo!<2uu!<2uu !;6?s!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut!!)ut!!*#u!!)6_!!)or!!)ut#6=c(rrE*! !<3!#!<<'!rr2rurVlitqu6Wrk5PD]o`"mkqu6WrrVlitrr3'#s8N)urrW9$rrE&u!!*#u!W`6# p\t3nrr2rurVlitrVlitrr3'#s8N)urr<&trr<&rrr<&frr<&urr<&us8E#srr<&urrN3#!<3!# !<<'!rr2rurVlitkl:\G"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJnc/Ofrr;osr;Z`rp](3mnc/Rgs8W*!s8W&urVuis "9/B$s8E!"rrE)s!!*&u!<<*!!<<)t!;ZZn!<)rp!<<)u!!3*"rr;rtrr;rtrVuis!ri9#r;cis r;ccq!!)`mr;cisquHcsqZ-ZrrW)ZlrW)rtr;cWmrr<9'!<3$!s8W&urVuis"9/B$s8E!"rrE)r !<<)u!8RVS!!`H'rr<'!s8E#ss8E!!rrCdQ!!)6_rW)uurVururW)uurW)os!W`6#pAb*lrr;lr s8Vusrr;rtj8T,[s8E#rrr<&rs8E#ts8E#ss8E#srr<&rrr<&rrr<&rrr<&ss8V6as6ko*o'cVY "RgF#Er^^~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFnc/Ofrr;osr;Z`rp](3mnc/Rgs8W*!s8W&urVuis "9/B$s8E!"rrE)s!!*&u!<<*!!<<)t!;ZZn!<)rp!<<)u!!3*"rr;rtrr;rtrVuis!ri9#r;cis r;ccq!!)`mr;cisquHcsqZ-ZrrW)ZlrW)rtr;cWmrr<9'!<3$!s8W&urVuis"9/B$s8E!"rrE)r !<<)u!8RVS!!`H'rr<'!s8E#ss8E!!rrCdQ!!)6_rW)uurVururW)uurW)os!W`6#pAb*lrr;lr s8Vusrr;rtj8T,[s8E#rrr<&rs8E#ts8E#ss8E#srr<&rrr<&rrr<&rrr<&ss8V6as6ku.o'cVY "RgL%FT?p~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJnc/Ofrr;osr;Z`rp](3mnc/Rgs8W*!s8W&urVuis"9/B$ s8E!"rrE)s!!*&u!<<*!!<<)t!;ZZn!<)rp!<<)u!!3*"rr;rtrr;rtrVuis!ri9#r;cisr;ccq !!)`mr;cisquHcsqZ-ZrrW)ZlrW)rtr;cWmrr<9'!<3$!s8W&urVuis"9/B$s8E!"rrE)r!<<)u !8RVS!!`H'rr<'!s8E#ss8E!!rrCdQ!!)6_rW)uurVururW)uurW)os!W`6#pAb*lrr;lrs8Vus rr;rtj8T,[s8E#rrr<&rs8E#ts8E#ss8E#srr<&rrr<&rrr<&rrr<&ss8V6as6ko*o'cVY"RgF# Er^^~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJnc&RhjSo2[_>aK8^Ae05JcE1Y!!%`Q!!)3^!!)3^ s5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFnc&RhjSo2[_>aK8^Ae05JcE1Y!!%`Q!!)3^!!)3^ s5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJnc&RhjSo2[_>aK8^Ae05JcE1Y!!%`Q!!)3^!!)3^s5sLa mu34rn,NCjmrRr=!.Y~> "p"\lF8qc#jT##Uq#C?or;Z]qjT#,XmJm1d!ri6#XT/=`"97hKN:QH;rr_`iS=K-L!!&eo!!'b5 !!%TM[Jp4,LAq5Rkl1V_k5YJE"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!jT##Uq#C?or;Z]qjT#,XmJm1d!ri6#XT/=`"97hMNq2Z=rr_`iR[WdH!!&eo!!'b5 !!%TM[Jp4,LAq5Rkl1V_k5YJE"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJnc&RhU]1;o^Ae05JcE.X!!%cR!!)6_!!)0]s5sLamu34r n,NCjmrRr=!.Y~> "p"\lF8qc#jT#5[rVultq#C?orVults8W*!k5YG]rr;uumf3:eWW3"]"97hKN:QH;rr_`iS=K0M rW&krrW'_5rr@WMJcE=]rrC7Bs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!jT#5[rVultq#C?orVults8W*!k5YG]rr;uumf3:eWW3"]"97hMNq2Z=rr_`iR[WgI rW&krrW'_5rr@WMJcE=]rrC7Bs5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJo)J[hVuQ_r^]4<6JcC<$])Vd1bQ%V*"97hKN:QH;rrhe3 mrJJZ~> "p"\lF8qc#jT#5[rVults8W#ts8W#ts8W*!r;Zcss8W*!"9/?$s8;ots8;rss8N*!s8N)ps8;rs s8;rss8N'(rr<'!!!*'!r;cisr;aD.s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH; rrhe3mrJJZ~> "p"\lFoRo!jT#5[rVults8W#ts8W#ts8W*!r;Zcss8W*!"9/?$s8;ots8;rss8N*!s8N)ps8;rs s8;rss8N'(rr<'!!!*'!r;cisr;aD.s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z= rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#mf3:eq>^HprVult$NC)+s8N'!s8N'!rr;uur;Zcss8W*!!<;]lrr;uus8W*!qZ$Qq s8W*!$NC)+s8N'!rr<'!rW!N0!!*$!!<<'!!<3$!s8N'!])Vfn"97hKN:QH;rr_`iS=H;QrrDio rW'k9!!)utrW)?crW)os!!)utrW%NLJcDVIs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!mf3:eq>^HprVult$NC)+s8N'!s8N'!rr;uur;Zcss8W*!!<;]lrr;uus8W*!qZ$Qq s8W*!$NC)+s8N'!rr<'!rW!N0!!*$!!<<'!!<3$!s8N'!])Vfn"97hMNq2Z=rr_`iR[TrMrrDio rW'k9!!)utrW)?crW)os!!)utrW%NLJcDVIs5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJU&Y,mq#C "p"\lF8qc#mf3:eq>^?m!ri6#r;Zcss8W*!rr;uur;Zcss8W*!!<<#us8W&urr;uu!ri6#rr;uu s8W#t+9)<@s8N'!rr<'!rr<'!!!*'!!!*$!!<3$!s8N'!s8E#-s8V6as6ko*o'cVY"7Q8[S=ol_ !<;orrVlitp&>!lqu?Wqj8\uVpAY*mmf*7eoD\djJcC<$VZ6\Z"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!mf3:eq>^?m!ri6#r;Zcss8W*!rr;uur;Zcss8W*!!<<#us8W&urr;uu!ri6#rr;uu s8W#t+9)<@s8N'!rr<'!rr<'!!!*'!!!*$!!<3$!s8N'!s8E#-s8V6as6ku.o'cVY"7Q8YR\9Z] !<;orrVlitp&>!lqu?Wqj8\uVpAY*mmf*7eoD\djJcC<$VZ6\Z"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJT`5#ms8)fprr<&lrr<&rs8E#Ys8)firr<&err<&jrr<%M s+13Is8V6as6ko*o'cVY"RgF#Er^^~> "p"\lF8qc#nGi@cqu?ZrrVults8Vuss8W*!rr;uur;Zcss8W*!!ri6#rr;uurVult!ri6#rr;uu rVult)#jR9s8N'!rr<'!rr<'!!!*'!!!*$!!<;orrr;rt\c;]m"97hKN:QH;rr_`iS=Ie&!!(XN !s&B$!<2uu!<)ot!;6?l!;uis!<2uu!9=(Z!<2uu!;?Em!:Kje!;$3j!.k0$s/,hrk6(bQN/[>r s8N5jF74/MJ,~> "p"\lFoRo!nGi@cqu?ZrrVults8Vuss8W*!rr;uur;Zcss8W*!!ri6#rr;uurVult!ri6#rr;uu rVult)#jR9s8N'!rr<'!rr<'!!!*'!!!*$!!<;orrr;rt\c;]m"97hMNq2Z=rr_`iR[VG"!!(XN !s&B$!<2uu!<)ot!;6?l!;uis!<2uu!9=(Z!<2uu!;?Em!:Kje!;$3j!.k0$s/,hrk6(bQNfN]! s8N5jFmjGQJ,~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJbPqPBfDbpQs8N)urr<&trr<&lrr<&srr<&urr<&Zrr<&u rr<&mrr<&err<&jrr<%Ms+13Is8V6as6ko*o'cVY"RgF#Er^^~> "p"\lF8qc#mf3:eq>^HprVult$NC)+s8N'!s8N'!rr;uur;Zcss8W*!!ri6#rr;uur;Z`rrVult rVult)ZKd;s8N'!rr<'!rr<'!!!*'!!!*$!!<3$!q>^Eo])Vfn"97hKN:QH;rr_`iS=K0M! "p"\lFoRo!mf3:eq>^HprVult$NC)+s8N'!s8N'!rr;uur;Zcss8W*!!ri6#rr;uur;Z`rrVult rVult)ZKd;s8N'!rr<'!rr<'!!!*'!!!*$!!<3$!q>^Eo])Vfn"97hMNq2Z=rr_`iR[WgI! "9AJjF8pdkZiC4.mu34rn,NCin,JoJo)A^js8E#trrE-"rW)rtrW)osrW!!!!;HKn!:Tpg!<<#u rr;rtrr;osrVufrs8N3%rrE'!rVlitrVufrrr;lrs8N'!rr3?+rr<'!rr<'!rrE)u!<<'"!<<#u !<<#u!<<#u#QFf(!<3'!s8E#qrr<&ss8E#ms82lss8E#qrr<&ss8E#urrE-"rW)rtr;cltrW!!! !<)rs!.k0$s2tBAk6(bQN/[>rs8N5jF74/MJ,~> "p"\lF8qc#mf3:eq>^HprVult')qq3s8N'!s8N'!rrE*!!!*'!r;ZitrW!$"!!*#urrDusrW)lr rrE&urrrs8N2i s.#VLrr<&urr<&urr<&srr<&urrW9$rrE&u!!)cn!!)Ed!!)rs!!*#u!!)or!s&B$!<3!"!<<)u !;lcr!;ZWp!<2uu!;uis!;lcr!<2uu!<2uu!;lcr!;uis!<3!"!<<)u!;lcr!;lcr!<)ot!<2uu !;HKn!;c]q!;lcr!<)ot!<3!'!<<'!!<<'!qu7!'s8N*!!<3'!rrE&u!!%TMJcEpns5sLamu34r n,NCjmrRr=!.Y~> "p"\lFoRo!mf3:eq>^HprVult')qq3s8N'!s8N'!rrE*!!!*'!r;ZitrW!$"!!*#urrDusrW)lr rrE&urr "9AJjF8pdkZiC4.mu34rn,NCin,JoJnc&Rhrr2rurr2rur;Q`srr3'#s8N)urr<&nrr<&drr<&s rr<&urr<&rrrW9$rrE&u!W`9#rW)iq!!)ip!!*#u!!)rs!!)or!!*#u!!*#u!!)or!!)rs!!*#u !W`9#rW)iq!!)or!!)ut!!*#u!!)cn!!)lq!!)or!!)ut!!*#u#6=f(!!*'!!;ld'!<<'!rrE'! s8N)urr<%Ms+13ns8V6as6ko*o'cVY"RgF#Er^^~> "p"\lF8qc#jT#5[rVults8W&u#6+Z's8N'!rVufrs8W*!"oeQ&rr<&us8N)rs8N)rs8;p"rrE*! r;cisr;cisrr<<(!!*$!!<<)t!<3#s!4i.0k6(bQN/[>rs8N2is.#VLrr<&urr<&urr<&srr<&u rrW9$rrE&u!!)fo!!)orquHKk!!)rsquH`rr;clt!!*#u"T\T&!<3&rrr<&ss8;rsrr<&srr<&r rr<&urr<&urr<&rrr<&srr<&urriE&rrE'!qu6Wrqu6WrrVucqp\t3nqYpNqqu6WrrVucqs8N'! rr2rurr;oss8N9'rrE'!s8VusJcC<$bQ%V*"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!jT#5[rVults8W&u#6+Z's8N'!rVufrs8W*!"oeQ&rr<&us8N)rs8N)rs8;p"rrE*! r;cisr;cisrr<<(!!*$!!<<)t!<3#s!4i.0k6(bQNfN]!s8N2is-fDHrr<&urr<&urr<&srr<&u rrW9$rrE&u!!)fo!!)orquHKk!!)rsquH`rr;clt!!*#u"T\T&!<3&rrr<&ss8;rsrr<&srr<&r rr<&urr<&urr<&rrr<&srr<&urriE&rrE'!qu6Wrqu6WrrVucqp\t3nqYpNqqu6WrrVucqs8N'! rr2rurr;oss8N9'rrE'!s8VusJcC<$bQ%V*"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJnc&Rhrr2rurr2rur;Q`srr3'#s8N)urr<&orr<&rs82lk rr<&ss82lrs8;rtrr<&urriE&rrE'!qu6Wrr;Z]qrr2rur;Q`squ6Wrrr2rurr2ruqu6Wrr;Q`s rr3-%s8N*!!;lcr!;lcr!<)rq!;HKn!;c]q!;lcr!<)rq!<<'!!<2uu!<3#s!<<''!<3'!!<<)s !.k0$s3(HBk6(bQN/[>rs8N5jF74/MJ,~> "p"\lF8qc#Zi:"*L]@D;"97hKN:QH;rr_`iS=K-L!!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!;HKn !:Bdd!;uis!;lcr!<3!#!<<'!rr3'#s8N)prr<&trr<&urr<&urr<&srr<&urrW9$rrE&u!!*#u !!)or!!)or!W`6#rr2ruq>UEpqu6WrrVlitoD\djqYpNqqu6WrrVlitqu6Wrrr3'#s8N)ursAc+ rrE'!rrE*!!.k0$s2Y0>k6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!Zi:"*L]@D;"97hMNq2Z=rr_`iR[WdH!!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!;HKn !:Bdd!;uis!;lcr!<3!#!<<'!rr3'#s8N)prr<&trr<&urr<&urr<&srr<&urrW9$rrE&u!!*#u !!)or!!)or!W`6#rr2ruq>UEpqu6WrrVlitoD\djqYpNqqu6WrrVlitqu6Wrrr3'#s8N)ursAc+ rrE'!rrE*!!.k0$s2Y0>k6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJnc&Rhrr2rurr2rur;Q`srr3'#s8N)urr<&nrr<&drr<&s rr<&rrr<&urrW9$rrE&u!s&B$!;ZWp!<)ot!<2uu!<2uu!;uis!<3!#!<<'!rr2rurr2ruqu6Wr qu6]trrE&u!!)ip!!)or!!)ut!!)Wj!!)lq!!)or!!)ut!!)or!!*#u!s&B$!<3!*!<<'!rrE'! s8N(Ms+13js8V6as6ko*o'cVY"RgF#Er^^~> "p"\lF8qc#[/^.+L]@D;"97hKN:QH;rr_`iS=K-L!!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!;?Em !:Kje!;uis!<3!#!<<'!rr3'#s8N)urrW9$rrDlp!!)ut!!*#u!!*#u!!*#u!W`6#rr3'#s8N)u rr<&urr<&rrr<&rs8E#trr<&prr<&rrr<&trr<&urr<&nrr<&qrr<&rrr<&trr<&urrW9$rrE&u !s&B$!<3!*!<<'!rrE'!s8N)urr<%Ms+13ns8V6as6ko*o'cVY"RgF#Er^^~> "p"\lFoRo![/^.+L]@D;"97hMNq2Z=rr_`iR[WdH!!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!;?Em !:Kje!;uis!<3!#!<<'!rr3'#s8N)urrW9$rrDlp!!)ut!!*#u!!*#u!!*#u!W`6#rr3'#s8N)u rr<&urr<&rrr<&rs8E#trr<&prr<&rrr<&trr<&urr<&nrr<&qrr<&rrr<&trr<&urrW9$rrE&u !s&B$!<3!*!<<'!rrE'!s8N)urr<%Ms+13ns8V6as6ku.o'cVY"RgL%FT?p~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJnc&Rhrr2rurr2rur;Q`srr3'#s8N)urr<&mrr<&err<&s rr<&urrW9$rrE&u!s&B$!<3!#!<<'!q>UEprVlitrr2rurr2rurr3$"rrE&u!s&B$!<2uu!<2uu !;lcr!;lfq!<2uu!;ZWp!;lcr!<)ot!<2uu!;HKn!;c]q!;lcr!<)ot!<3!#!<<'!rr3'#s8N)u rsAc+rrE'!rrE*!!<2uu!.k0$s3(HBk6(bQN/[>rs8N5jF74/MJ,~> "p"\lF8qc#[K$7,LB%;:"97hKN:QH;rr_`iS=K-Lr;cisr;cfrrW)osr;cNj!!)Ngr;cfrrW)os rW!'#!<<)u!!*&s!<)rp!<<)u!!3*"rr;rtrr;rtrVuis!ri9#r;cisr;ccq!!*#ur;cfrquHcs qZ-ZrrW)]mr;cisquHcsqZ-ZrrW)uurW)uurrE*!rVururW!0&!<3$!s8W&uJcC<$b5_M)"97hK N:QH;rrhe3mrJJZ~> "p"\lFoRo![K$7,LB%;:"97hMNq2Z=rr_`iR[WdHr;cisr;cfrrW)osr;cNj!!)Ngr;cfrrW)os rW!'#!<<)u!!*&s!<)rp!<<)u!!3*"rr;rtrr;rtrVuis!ri9#r;cisr;ccq!!*#ur;cfrquHcs qZ-ZrrW)]mr;cisquHcsqZ-ZrrW)uurW)uurrE*!rVururW!0&!<3$!s8W&uJcC<$b5_M)"97hM Nq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJnc/Ofrr;osrVuisrVufrp&>!lnGiFerVuisrVuis"9/B$ s8Duus82lqs8)frs8E!!rrE&urW)rtrW)osrW!$"!<;utrr;osr;Q`srr;osrVucqs8Vrrs8W&u p](0lrr;lrs8Vrrs8W&us8W&us8W*!s8W&u!<<#u#6+]'!!*'!rW%NLJcEmms5sLamu34rn,NCj mrRr=!.Y~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJnc&Rhl2L_`NW/tYJcC<$JcG0 "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFnc&Rhl2L_`NW/tYJcC<$JcG0 "9AJjF8pdkZiC4.mu34rn,NCin,JoJnc&Rhl2L_`NW/tYJcC<$JcG0 "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJnc&Rhl2L_`NW/tYJcC<$JcG0 "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFnc&Rhl2L_`NW/tYJcC<$JcG0 "9AJjF8pdkZiC4.mu34rn,NCin,JoJnc&Rhl2L_`NW/tYJcC<$JcG0 "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJo)J[hmJm.cNrT+ZJcC<$JcG-;s5sLamu34rn,NCj mrRr=!.Y~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFo)J[hmJm.cNrT+ZJcC<$JcG-;s5sLamuEG!n,NCj mre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJo)J[hmJm.cNrT+ZJcC<$JcG-;s5sLamu34rn,NCjmrRr= !.Y~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJdJj1H\c2X0nG`IgZMsn)JcC<$X8i4_"97hKN:QH; rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFdJj1H\c2X0nG`IgZMsn)JcC<$X8i4_"97hMNq2Z= rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJdJj1H\c2X0nG`IgZMsn)JcC<$X8i4_"97hKN:QH;rrhe3 mrJJZ~> "p"\lF8qc#jT##Uq#C?or;Z]qk5Y;YmJm1dW;ln\"97hKN:QH;rr_`iS=J%-!!'M.!!)Ti!!)Kf !!'q:!!%TMJcDhOs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!jT##Uq#C?or;Z]qk5Y;YmJm1dW;ln\"97hMNq2Z=rr_`iR[V\)!!'M.!!)Ti!!)Kf !!'q:!!%TMJcDhOs5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJdf0:I\,QF.o)A[in,E@f_uB]:JcC<$XT/=`"97hKN:QH; rrhe3mrJJZ~> "p"\lF8qc#jT#5[rVultq#C?orVults8W*!kPtP^rr;uumf3:eW;ln\"97hKN:QH;rr_`iS=J%- !!'M.!!)Ti!!)Kf!!'q:!!%TMJcDhOs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!jT#5[rVultq#C?orVults8W*!kPtP^rr;uumf3:eW;ln\"97hMNq2Z=rr_`iR[V\) !!'M.!!)Ti!!)Kf!!'q:!!%TMJcDhOs5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJdf0:I\,QF.o)A[in,E@f_uB]:JcC<$XT/=`"97hKN:QH; rrhe3mrJJZ~> "p"\lF8qc#jT#5[rVults8W#ts8W#ts8W*!r;Zcss8W*!"9/?$s8;ots8;rss8N*!s8N)us8N*! s8;rss8;rss8N'#rr<%ts8V6as6ko*o'cVY"7Q8[SFHRX!<)rs!<)rs!!3*"p\t3nrr3!!s8E#t rrE-"rW)rtrW)osrW!!!!;$3k!<<#urr3!!s8E#ts8E#ss8E!!rrE&u!!)Zk!!)ut! "p"\lFoRo!jT#5[rVults8W#ts8W#ts8W*!r;Zcss8W*!"9/?$s8;ots8;rss8N*!s8N)us8N*! s8;rss8;rss8N'#rr<%ts8V6as6ku.o'cVY"7Q8YRdg@V!<)rs!<)rs!!3*"p\t3nrr3!!s8E#t rrE-"rW)rtrW)osrW!!!!;$3k!<<#urr3!!s8E#ts8E#ss8E!!rrE&u!!)Zk!!)ut! "9AJjF8pdkZiC4.mu34rn,NCin,JoJnGiIfrVuisrVuis!WN/orr<&urrE-"rW)rt!$k6(bQN/[>r s8N5jF74/MJ,~> "p"\lF8qc#mf3:eq>^HprVult$NC)+s8N'!s8N'!rr;uur;Zcss8W*!!<;]lrr;uus8W*!rr;uu &cVh2s8N'!rr<'!rr<'!!!*&u!3#qtk6(bQN/[>rs8N2is.#VLrr<&urrW9$rrE&u!s&B$!<2uu !;?Em!<)ot!<2uu!<2uu!;uis!<3!#!<<'!rr3$"s8Vuss8Vuss8N'!rr2rurr2rur;Q`srr3'# s8N)urr<&trr<&krr<&srr<&srr<&urr<&urr<&srr<&urr<&urr<&ss8N*!rr<&orr<&urr<&u rr<&srr<&urrW9$rrE&u!!)ut!!%TMJcDkPs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!mf3:eq>^HprVult$NC)+s8N'!s8N'!rr;uur;Zcss8W*!!<;]lrr;uus8W*!rr;uu &cVh2s8N'!rr<'!rr<'!!!*&u!3#qtk6(bQNfN]!s8N2is-fDHrr<&urrW9$rrE&u!s&B$!<2uu !;?Em!<)ot!<2uu!<2uu!;uis!<3!#!<<'!rr3$"s8Vuss8Vuss8N'!rr2rurr2rur;Q`srr3'# s8N)urr<&trr<&krr<&srr<&srr<&urr<&urr<&srr<&urr<&urr<&ss8N*!rr<&orr<&urr<&u rr<&srr<&urrW9$rrE&u!!)ut!!%TMJcDkPs5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJnc&Rhrr3'#s8N)urrW9$rrE&u!!)`m!!)ut!!*#u!!*#u !!)rs!!*#u!s&B$!<3!"!<<)s!<<)s!<<'!!<2uu!<2uu!;uis!<3!#!<<'!rr2rurVlito`"mk r;Q`sr;Q`srr2rurr2rur;Q`srr2rurr2rur;Zcss8N'!q#: "p"\lF8qc#mf3:eq>^?m!ri6#r;Zcss8W*!rr;uur;Zcss8W*!!<<#us8W&urr;uu!ri6#rr;iq s8W*!s8W*!r;Zcs#6+Z's8N'!W;ln\"97hKN:QH;rr_`iS=K*KrW)rtquHcs!!*#u!!)`m!!)ut !!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!:g'h!<2uu!<2uu!;uis!<3!#!<<'!rr2rurVlito`"mk r;Q`sr;ZZprr2rur;Q`srr2rurr2rur;Q`srr2ruq#: "p"\lFoRo!mf3:eq>^?m!ri6#r;Zcss8W*!rr;uur;Zcss8W*!!<<#us8W&urr;uu!ri6#rr;iq s8W*!s8W*!r;Zcs#6+Z's8N'!W;ln\"97hMNq2Z=rr_`iR[WaGrW)rtquHcs!!*#u!!)`m!!)ut !!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!:g'h!<2uu!<2uu!;uis!<3!#!<<'!rr2rurVlito`"mk r;Q`sr;ZZprr2rur;Q`srr2rurr2rur;Q`srr2ruq#: "9AJjF8pdkZiC4.mu34rn,NCin,JoJnGiIfrr;lrs8N'!rr2rupAY*mrVlitrr2rurr2rur;Q`s rr3'#s8N)urr<&hrr<&urr<&urr<&srr<&urrW9$rrE&u!!)ut!!)Zk!!)rs!!)rsquH`r!!)rs !!*#u!!*#u!!)rs!!*#u!!)fo!!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!<)ot!.k0$s/l>$k6(bQ N/[>rs8N5jF74/MJ,~> "p"\lF8qc#nGi@cqu?ZrrVults8Vuss8W*!rr;uur;Zcss8W*!!ri6#rr;uurVult!ri6#rr;uu s8W*!s8Vrrs8Vus#6+Z's8N'!W;ln\"97hKN:QH;rr_`iS=K!H!s&B$!;lcr!<2uu!;?Em!<)ot !<2uu!<2uu!;uis!<3!#!<<'!rr3$"s8Vuss8Vuss8N'!rr2rurr2rur;Q`srr3'#s8N)urr<&t rr<&krr<&srr<&srr<&qrr<&srr<&urr<&urr<&srr<&urr<&orr<&urr<&urr<&srr<&urrW9$ rrE&u!!)ut!!%TMJcDkPs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!nGi@cqu?ZrrVults8Vuss8W*!rr;uur;Zcss8W*!!ri6#rr;uurVult!ri6#rr;uu s8W*!s8Vrrs8Vus#6+Z's8N'!W;ln\"97hMNq2Z=rr_`iR[WXD!s&B$!;lcr!<2uu!;?Em!<)ot !<2uu!<2uu!;uis!<3!#!<<'!rr3$"s8Vuss8Vuss8N'!rr2rurr2rur;Q`srr3'#s8N)urr<&t rr<&krr<&srr<&srr<&qrr<&srr<&urr<&urr<&srr<&urr<&orr<&urr<&urr<&srr<&urrW9$ rrE&u!!)ut!!%TMJcDkPs5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJmJd7gs8N)rrr<&urr<&mrr<&trr<&urr<&urr<&srr<&u rrW9$rrE&u!W`9#quHcsquHcs!!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!<)ot!;-9k!;uis!;uis !;c]q!;uis!<2uu!<2uu!;uis!<2uu!;QQo!<2uu!<2uu!;uis!<3!#!<<'!rr2rurVlitJcC<$ XoJFa"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#mf3:eq>^HprVult$NC)+s8N'!s8N'!rr;uur;Zcss8W*!!ri6#rr;uur;Z`rrVult rr;uu!ri6#r;Zcss8W*!#6+Z's8N'!W;ln\"97hKN:QH;rr_`iS=K-L!!*#u!s&B$!<3!#!<<'! rr2rupAY*mrVlitrr2rurr2rur;Q`srr3'#s8N)urr<&hrr<&urr<&urr<&srr<&urrW9$rrE&u !!)ut!!)Zk!!)rs!!)rs!!*#u!!*#u!!*#u!W`6#rr2rurr2rur;Q`srr2ruq#: "p"\lFoRo!mf3:eq>^HprVult$NC)+s8N'!s8N'!rr;uur;Zcss8W*!!ri6#rr;uur;Z`rrVult rr;uu!ri6#r;Zcss8W*!#6+Z's8N'!W;ln\"97hMNq2Z=rr_`iR[WdH!!*#u!s&B$!<3!#!<<'! rr2rupAY*mrVlitrr2rurr2rur;Q`srr3'#s8N)urr<&hrr<&urr<&urr<&srr<&urrW9$rrE&u !!)ut!!)Zk!!)rs!!)rs!!*#u!!*#u!!*#u!W`6#rr2rurr2rur;Q`srr2ruq#: "9AJjF8pdkZiC4.mu34rn,NCin,JoJnc&Rhrr3'#s8N)urrW9$rrE&u!!)`m!!)ut!!*#u!!*#u !!)rs!!*#u!s&B$!<2uu!:g'h!<2uu!<2uu!;uis!<3!#!<<'!rr2rurVlito`"mkr;Q`sr;Q`s rr2rurr2rurr3$"rrE&u!!*#u!!)rs!!*#u!!)fo!!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!<)ot !.k0$s/l>$k6(bQN/[>rs8N5jF74/MJ,~> "p"\lF8qc#mf3:eq>^HprVult')qq3s8N'!s8N'!rrE*!!!*'!r;ZitrW!$"!!*#urrDusrW)os rrE&urr "p"\lFoRo!mf3:eq>^HprVult')qq3s8N'!s8N'!rrE*!!!*'!r;ZitrW!$"!!*#urrDusrW)os rrE&urr "9AJjF8pdkZiC4.mu34rn,NCin,JoJnGiIfrVuisrVufrp&>!lrr;osrr;osrVuisrVufrnc/Of rr;osrVuisrVufrrr2ruo)A[irr;osrVuisr;Z`rrr;rt!ri9#r;cltrW)uurrDlpr;cisr;cfr rW)osr;cis!!%TMJcDhOs5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#jT#5[rVults8W&u#6+Z's8N'!rVufrs8W*!"oeQ&rr<&us8N)rs8N)ts8N)us8N*! s8;rss8E!(rr<'!!!*$!!3#qtk6(bQN/[>rs8N2is.#V:rr<&lrr<&urr<&`rr<&hrr<&`rr<&u rr<&irr<&Drr<&`rr<&urr<%Ms+13Os8V6as6ko*o'cVY"RgF#Er^^~> "p"\lFoRo!jT#5[rVults8W&u#6+Z's8N'!rVufrs8W*!"oeQ&rr<&us8N)rs8N)ts8N)us8N*! s8;rss8E!(rr<'!!!*$!!3#qtk6(bQNfN]!s8N2is-fD6rr<&lrr<&urr<&`rr<&hrr<&`rr<&u rr<&irr<&Drr<&`rr<&urr<%Ms+13Os8V6as6ku.o'cVY"RgL%FT?p~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJhu!lrr2rul2L_`nc&Rhl2L_`rr2ruo)A[ic2RbD l2L_`rr2ruJcC<$XT/=`"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#Zi:"*L]@D;"97hKN:QH;rr_`iS=JL:!!)Zk!s&B$!9sL`!:g'h!9sLc!<<'!nG`Ig cMmkEl2Lhcs8N(Ms+13Ns8V6as6ko*o'cVY"RgF#Er^^~> "p"\lFoRo!Zi:"*L]@D;"97hMNq2Z=rr_`iR[W.6!!)Zk!s&B$!9sL`!:g'h!9sLc!<<'!nG`Ig cMmkEl2Lhcs8N(Ms+13Ns8V6as6ku.o'cVY"RgL%FT?p~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJhurs8N5jF74/MJ,~> "p"\lF8qc#[/^.+L]@D;"97hKN:QH;rr_`iS=JO;rW)QirW)?crW)KgrW)?crW'M/rW)?crW%NL JcDYJs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo![/^.+L]@D;"97hMNq2Z=rr_`iR[W17rW)QirW)?crW)KgrW)?crW'M/rW)?crW%NL JcDYJs5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJi;`cVoDedimJm.cnc/RgmJm.c\c;X/mJm.cJcC<$VuQe[ "97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#[K$7,LB%;:"97hKN:QH;rr_`iS=G01JcC<$JcF'rs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo![K$7,LB%;:"97hMNq2Z=rr_`iR[Sg-JcC<$JcF'rs5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#jT##U!ri6#pAb$jmJm1d!ri6#M?!V="97hKN:QH;rr_`iS=G01JcC<$JcF'rs5sLa mu34rn,NCjmrRr=!.Y~> "p"\lFoRo!jT##U!ri6#pAb$jmJm1d!ri6#M?!V="97hMNq2Z=rr_`iR[Sg-JcC<$JcF'rs5sLa muEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#jT#5[qZ$Qqp](6nrr;uumf3:eLB%;:"97hKN:QH;rr_`iS=G01JcC<$JcF'rs5sLa mu34rn,NCjmrRr=!.Y~> "p"\lFoRo!jT#5[qZ$Qqp](6nrr;uumf3:eLB%;:"97hMNq2Z=rr_`iR[Sg-JcC<$JcF'rs5sLa muEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#jT#5[rVult"TJH%s8W#trr;uuq>^Bnrr;osrr;uu#QFc(rr<'!s8;rss8;q`s8V6a s6ko*o'cVY"7Q8[S:U]ks+13$s3L`Fk6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!jT#5[rVult"TJH%s8W#trr;uuq>^Bnrr;osrr;uu#QFc(rr<'!s8;rss8;q`s8V6a s6ku.o'cVY"7Q8YRXtKis+13$s3L`Fk6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#mf3:eq>^HprVult%K?D.rr<'!rr<'!rr<&qs8N*!s8N'+rr<'!rr<'!!!*&u!"f/1 !<3$!s8N'!rr<'!rr<%cs8V6as6ko*o'cVY"7Q8[S:U]ks+13$s3L`Fk6(bQN/[>rs8N5jF74/M J,~> "p"\lFoRo!mf3:eq>^HprVult%K?D.rr<'!rr<'!rr<&qs8N*!s8N'+rr<'!rr<'!!!*&u!"f/1 !<3$!s8N'!rr<'!rr<%cs8V6as6ku.o'cVY"7Q8YRXtKis+13$s3L`Fk6(bQNfN]!s8N5jFmjGQ J,~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#mf3:eq>^?m')qq3rr<'!!!*'!!!*'!!!*'!r;[r>!!*'!!!*$!!<<'!!<3$!s8N'! rr<'!!!*'!!!*&u!0mN`k6(bQN/[>rs8N2is.#U1s+13$s+13rs8V6as6ko*o'cVY"RgF#Er^^~> "p"\lFoRo!mf3:eq>^?m')qq3rr<'!!!*'!!!*'!!!*'!r;[r>!!*'!!!*$!!<<'!!<3$!s8N'! rr<'!!!*'!!!*&u!0mN`k6(bQNfN]!s8N2is-fC-s+13$s+13rs8V6as6ku.o'cVY"RgL%FT?p~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#nGi@cqu?ZrrVult"9/?$s8)frs8N)ts8N'9rr<'!rr<'!!!*'!!!*$!!<<'!!<3$! s8)fqs8E"as8V6as6ko*o'cVY"7Q8[S:U]ks+13$s3L`Fk6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!nGi@cqu?ZrrVult"9/?$s8)frs8N)ts8N'9rr<'!rr<'!!!*'!!!*$!!<<'!!<3$! s8)fqs8E"as8V6as6ku.o'cVY"7Q8YRXtKis+13$s3L`Fk6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#mf3:eq>^HprVult"oeQ&rr<&rs8N)ts8N';rr<'!rr<'!!!*'!!!*$!!<<'!!<3$! rr<&ps8E"bs8V6as6ko*o'cVY"7Q8[S:U]ks+13$s3L`Fk6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!mf3:eq>^HprVult"oeQ&rr<&rs8N)ts8N';rr<'!rr<'!!!*'!!!*$!!<<'!!<3$! rr<&ps8E"bs8V6as6ku.o'cVY"7Q8YRXtKis+13$s3L`Fk6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#mf3:eq>^HprVult$3'u*rr<'!rr<&us8N)us8N'2rr<'!rr<'!!!*'!!!*$!!<<#u &H;_1rr<'!rr<'!!!*'!!!&Acs5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3 mrJJZ~> "p"\lFoRo!mf3:eq>^HprVult$3'u*rr<'!rr<&us8N)us8N'2rr<'!rr<'!!!*'!!!*$!!<<#u &H;_1rr<'!rr<'!!!*'!!!&Acs5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5 mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#jT#5[rVult"TJH%s8W#tr;Z]q"9/B$s8;rss8;rss8N'(rr<'!!!*'!r;cisr;`/` s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!jT#5[rVult"TJH%s8W#tr;Z]q"9/B$s8;rss8;rss8N'(rr<'!!!*'!r;cisr;`/` s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCkn,JoJs8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vusec5[4"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCkn,JiFs8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vusec5[4"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCkn,JoJs8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vusec5[4"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#j8]#Wn,NCfJcG3=s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3 mrJJZ~> "p"\lFoRo!j8]#Wn,NCfJcG3=s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5 mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#jT#5[rr;uunGiLgJcG3=s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH; rrhe3mrJJZ~> "p"\lFoRo!jT#5[rr;uunGiLgJcG3=s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z= rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#jT#5[rr;uu!ri6#rr;uus8W#ts8W#ts8W#ts8N*"s8Duus8E"Ls8V6as6ko*o'cVY "7Q8[S:U]ks+13$s3L`Fk6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!jT#5[rr;uu!ri6#rr;uus8W#ts8W#ts8W#ts8N*"s8Duus8E"Ls8V6as6ku.o'cVY "7Q8YRXtKis+13$s3L`Fk6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#mf3:eq#Cs8N'!s8N'!s8N'!s8N'!rr<'!rr<'!rr<%Ns8V6a s6ko*o'cVY"7Q8[S:U]ks+13$s3L`Fk6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!mf3:eq#Cs8N'!s8N'!s8N'!s8N'!rr<'!rr<'!rr<%Ns8V6a s6ku.o'cVY"7Q8YRXtKis+13$s3L`Fk6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#mf3:epAb*lrr;uu"TJH%s8W&ur;Zcss8W*!s8W*!$NC)+s8N'!s8N'!K)bl6"97hK N:QH;rr_`iS=J=5!!)WjrrDBbrrDBbrW)os!!(pVrW)os!!)utrW)*\!!)cnrrC.?!!*#urrDrr rW(jUrW)osrW)os!!)Ed!!)9`rrDHdrW) "p"\lFoRo!mf3:epAb*lrr;uu"TJH%s8W&ur;Zcss8W*!s8W*!$NC)+s8N'!s8N'!K)bl6"97hM Nq2Z=rr_`iR[Vt1!!)WjrrDBbrrDBbrW)os!!(pVrW)os!!)utrW)*\!!)cnrrC.?!!*#urrDrr rW(jUrW)osrW)os!!)Ed!!)9`rrDHdrW) "9AJjF8pdkZiC4.mu34rn,NCin,JoJgA_-QoDegjli6tbli6qarVlithuEZUrVlitrVuisk5PD] p](6naSu5?rr;uuqu?WqhuEZUrVuisrVlitmJd.dl2Ub`mJm.cm/R(cjT#5[MuWh?"97hKN:QH; rrhe3mrJJZ~> "p"\lF8qc#nGi@cp](3ms8W*!!ri6#rVuisrr;uus8Vrr$NC)+s8N'!s8N'!K)bl6"97hKN:QH; rr_`iS=J[?qZ-$`!!)Ng!!)rs!!)Bc!!)0]!!)Zk!!)Wj!!(sW!!)rs!!'q:!!)ip!!(sW!!)or !!(FH!!)rs!!)?b!!)?b!!)9`!!)rs!!%rWs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!nGi@cp](3ms8W*!!ri6#rVuisrr;uus8Vrr$NC)+s8N'!s8N'!K)bl6"97hMNq2Z= rr_`iR[W=;qZ-$`!!)Ng!!)rs!!)Bc!!)0]!!)Zk!!)Wj!!(sW!!)rs!!'q:!!)ip!!(sW!!)or !!(FH!!)rs!!)?b!!)?b!!)9`!!)rs!!%rWs5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJjT#)WmJd.dnG`Igr;Q`sm/I%ck5PD]o`"mkoD\dji;WcW r;Q`s_uB]:q>UEpi;WcWqu6WrdJj1Hr;Q`sli-qbli-qbl2L_`r;Q`sMuWh?"97hKN:QH;rrhe3 mrJJZ~> "p"\lF8qc#mf3:eq>^Hprr;uurr;rtqu?Wqs8W*!s8W*!r;Zcss8W*!s8W*!K)bl6"97hKN:QH; rr_`iS=JX>!!*#u!!)Ed!!)Ng!!)rs!!)Bc!!)0]!!)Zk!!)Wj!!(sW!!)rs!!'q:!!)ip!!(sW !!)or!!(FH!!)rs!!)?b!!)?b!!)9`!!)rs!!%rWs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!mf3:eq>^Hprr;uurr;rtqu?Wqs8W*!s8W*!r;Zcss8W*!s8W*!K)bl6"97hMNq2Z= rr_`iR[W::!!*#u!!)Ed!!)Ng!!)rs!!)Bc!!)0]!!)Zk!!)Wj!!(sW!!)rs!!'q:!!)ip!!(sW !!)or!!(FH!!)rs!!)?b!!)?b!!)9`!!)rs!!%rWs5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJj8T)Zrr2rumJd.dnG`Igr;Q`sm/I%ck5PD]o`"mkoD\dj i;WcWr;Q`s_uB]:q>UEpi;WcWqu6WrdJj1Hr;Q`sli-qbli-qbl2L_`r;Q`sMuWh?"97hKN:QH; rrhe3mrJJZ~> "p"\lF8qc#mf3:eq>^Hprr;uurr;rtrr;uus8W*!s8W*!!<<#us8W*!$NC)+s8N'!s8N'!K)bl6 "97hKN:QH;rr_`iS=JX>"p"Z'rrE*!rW)rt!rs8N5jF74/MJ,~> "p"\lFoRo!mf3:eq>^Hprr;uurr;rtrr;uus8W*!s8W*!!<<#us8W*!$NC)+s8N'!s8N'!K)bl6 "97hMNq2Z=rr_`iR[W::"p"Z'rrE*!rW)rt! "9AJjF8pdkZiC4.mu34rn,NCin,JoJj8T;`rrE'!s8W&urr3!!s8E#ss8;rss8E#ms82lsrrW9$ !!)utrW)]mquHcsrW)os! "p"\lF8qc#j8]#Wr;ZcsrVufrrVults8W#ts8W*!s8W*!s8W*!K)bl6"97hKN:QH;rr_`iS=JX> rW)iq!!)utrrE*!!s&B$!<3!#!<<'!rr2rup\t3nr;Zcss8N0$s8N)urr<&nrr<&qrr<&srr<&s rr<&urr<&urr<&krr<&qrr<&rrr<&trr<&urr<&orr<&urr<&trr<&srr<&ss8N*!rr<&krr<&o rr<&urrW9$rrE&u!s&B$!<3!#!<<'!rr2rurVlitrVlitrr2rurVlitrVlitrr2ruq#: "p"\lFoRo!j8]#Wr;ZcsrVufrrVults8W#ts8W*!s8W*!s8W*!K)bl6"97hMNq2Z=rr_`iR[W:: rW)iq!!)utrrE*!!s&B$!<3!#!<<'!rr2rup\t3nr;Zcss8N0$s8N)urr<&nrr<&qrr<&srr<&s rr<&urr<&urr<&krr<&qrr<&rrr<&trr<&urr<&orr<&urr<&trr<&srr<&ss8N*!rr<&krr<&o rr<&urrW9$rrE&u!s&B$!<3!#!<<'!rr2rurVlitrVlitrr2rurVlitrVlitrr2ruq#: "9AJjF8pdkZiC4.mu34rn,NCin,JoJj8])Yqu6WrrVults8N0$s8N)urrW9$rrE&u!!)cn!!)rs rrE*!!s&B$!<2uu!;HKn!;c]q!;uis!;uis!<2uu!<2uu!;-9k!;c]q!;lcr!<)ot!<2uu!;QQo !<2uu!<)ot!;uis!;uls!<<'!!;-9k!;QQo!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!!)ut!!)ut !!*#u!!)ut!!)ut!!*#u!!)fo!!*#u!s&B$!<2uu!<2uu!;lcr!;c]q!;uiu!<3&lrr<&ts8N*! rr<&nrr<&ss8N*!rrW9$rrE&u!!)`m!!)ut!!*#u!!)or!s&B$!<2uu!;QQo!<2uu!;lcr!<2uu !;uls!<<'!!<)ot!0mN`k6(bQN/[>rs8N5jF74/MJ,~> "p"\lF8qc#g&D$PJcF^/s5sLamu34rn,NCkn,JoJs8Vuss8Vuss8Vusq#:BqrrDrr!!)ut!!*#u !s&B$!<2uu!<3#t!;?Em!;uis!<3!"!<<)s!;HKn!;c]q!;uis!;lfq!<)ot!;-9k!;c]q!;lcr !<)rq!;QQs!<3'!!<)ot!;uis!;uis!<2uu!;HNl!;QQo!<3!#!<<'!rr2rurr;rtrVuisr;Q`s rVlitrr2rurVlitrVucqp](3mrr2rurr2rurr2ruqu6WrqYpNqqu6Wro`"mkrVlitrr2rup\t3n r;Q`srr3$"s8VuspAY*mrVlitrr2rurr;oss8N'!rr2ruq#: "p"\lFoRo!g&D$PJcF^/s5sLamuEG!n,NCkn,JiFs8Vuss8Vuss8Vusq#:BqrrDrr!!)ut!!*#u !s&B$!<2uu!<3#t!;?Em!;uis!<3!"!<<)s!;HKn!;c]q!;uis!;lfq!<)ot!;-9k!;c]q!;lcr !<)rq!;QQs!<3'!!<)ot!;uis!;uis!<2uu!;HNl!;QQo!<3!#!<<'!rr2rurr;rtrVuisr;Q`s rVlitrr2rurVlitrVucqp](3mrr2rurr2rurr2ruqu6WrqYpNqqu6Wro`"mkrVlitrr2rup\t3n r;Q`srr3$"s8VuspAY*mrVlitrr2rurr;oss8N'!rr2ruq#: "9AJjF8pdkZiC4.mu34rn,NCkn,JoJs8Vuss8Vuss8Vusq#:BqrrDrr!!)ut!!*#u!s&B$!<2uu !<3#t!;?Em!;uis!<3!"!<<)s!;HKn!;c]q!;uis!;lfq!<)ot!;-9k!;c]q!;lcr!<)rq!;QQs !<3'!!<)ot!;uis!;uis!<2uu!;HNl!;QQo!<3!#!<<'!rr2rurr;rtrVuisr;Q`srVlitrr2ru rVlitrVucqp](3mrr2rurr2rurr2ruqu6WrqYpNqqu6Wro`"mkrVlitrr2rup\t3nr;Q`srr3$" s8VuspAY*mrVlitrr2rurr;oss8N'!rr2ruq#: "p"\lF8qc#gAh0QJcF^/s5sLamu34rn,NCin,JoJj8T)Zq>UEprVlitrr3'#s8N)urr<&rrr<&n rr<&srr<&urrW9$rrDZj!!)lq!!)rs!!)fo!!*#u!!)Zk!!)lq!!)or!!)ut!!)Zk"9AH%rrE#t !!)rs!!)rs!!*#u!!)fo!!*#u!!)fo!!*#u!s&B$!<2uu!;lcr!;lcr!<)ot!<)ot!<2uu!<)ot !<)ot!:^!j!<<'!rr2rurr2ruqu6WrqYpNqr;QfurrD`l!!)ut!!*#u!!)cn!!)rs!!*#u!s&B$ !:p-i!<)ot!<3!#!<<'!rr3'#s8N)urr<&orr<&urrW9$rrE&u!!*#u!!)rs!!*#u!!&)[s5sLa mu34rn,NCjmrRr=!.Y~> "p"\lFoRo!gAh0QJcF^/s5sLamuEG!n,NCin,JiFj8T)Zq>UEprVlitrr3'#s8N)urr<&rrr<&n rr<&srr<&urrW9$rrDZj!!)lq!!)rs!!)fo!!*#u!!)Zk!!)lq!!)or!!)ut!!)Zk"9AH%rrE#t !!)rs!!)rs!!*#u!!)fo!!*#u!!)fo!!*#u!s&B$!<2uu!;lcr!;lcr!<)ot!<)ot!<2uu!<)ot !<)ot!:^!j!<<'!rr2rurr2ruqu6WrqYpNqr;QfurrD`l!!)ut!!*#u!!)cn!!)rs!!*#u!s&B$ !:p-i!<)ot!<3!#!<<'!rr3'#s8N)urr<&orr<&urrW9$rrE&u!!*#u!!)rs!!*#u!!&)[s5sLa muEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJj8T)Zq>UEprVlitrr3'#s8N)urr<&rrr<&nrr<&srr<&u rrW9$rrDZj!!)lq!!)rs!!)fo!!*#u!!)Zk!!)lq!!)or!!)ut!!)Zk"9AH%rrE#t!!)rs!!)rs !!*#u!!)fo!!*#u!!)fo!!*#u!s&B$!<2uu!;lcr!;lcr!<)ot!<)ot!<2uu!<)ot!<)ot!:^!j !<<'!rr2rurr2ruqu6WrqYpNqr;QfurrD`l!!)ut!!*#u!!)cn!!)rs!!*#u!s&B$!:p-i!<)ot !<3!#!<<'!rr3'#s8N)urr<&orr<&urrW9$rrE&u!!*#u!!)rs!!*#u!!&)[s5sLamu34rn,NCj mrRr=!.Y~> "p"\lF8qc#g].9RJcF[.s5sLamu34rn,NCin,JoJj8T)Zq>UEprVlitrr3'#s8N)urrW9$rrE&u !!)cn!!*#u!W`6#rr3'#s8N)urr<&nrr<&qrr<&srr<&srr<&urr<&urr<&urr<&orr<&qrr<&r rr<&trr<&urr<&nrrN3#!;uis!;uis!<3!"!<3&urr<&orr<&urr<&orr<&urrW9$rrE&u!s&B$ !<3!#!<<'!rr2rurVlitrVlitrr2rurVlitrVlitrr2ruq#: "p"\lFoRo!g].9RJcF[.s5sLamuEG!n,NCin,JiFj8T)Zq>UEprVlitrr3'#s8N)urrW9$rrE&u !!)cn!!*#u!W`6#rr3'#s8N)urr<&nrr<&qrr<&srr<&srr<&urr<&urr<&urr<&orr<&qrr<&r rr<&trr<&urr<&nrrN3#!;uis!;uis!<3!"!<3&urr<&orr<&urr<&orr<&urrW9$rrE&u!s&B$ !<3!#!<<'!rr2rurVlitrVlitrr2rurVlitrVlitrr2ruq#: "9AJjF8pdkZiC4.mu34rn,NCin,JoJj8T)Zq>UEprVlitrr3'#s8N)urrW9$rrE&u!!)cn!!*#u !W`6#rr3'#s8N)urr<&nrr<&qrr<&srr<&srr<&urr<&urr<&urr<&orr<&qrr<&rrr<&trr<&u rr<&nrrN3#!;uis!;uis!<3!"!<3&urr<&orr<&urr<&orr<&urrW9$rrE&u!s&B$!<3!#!<<'! rr2rurVlitrVlitrr2rurVlitrVlitrr2ruq#: "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJjT#/YrVucq!<<#us8W*!s8W&u"9/B$s8E#ks8Duu s8Duus8E#us8E#ms8;rss82lss8;rrs8E#rs8E#ns8;rss82lss8)frs8E#lrrN3#!<3#r!<)rs !!*&u!!*&u!;QTn!!3*"q>^BnrVuisrVuisrVuisrr;lr!ri9#rW)rtqZ-ZrrW)ZlrW)osrW!$" !<;utrr;osrr;lr!ri6#rr;uuq>^?m!<<#us8W*!p](3m!<<#u!<<#us8W&up](*js8W&urVuis "9/B$s8E!!rrDlpr;cfrrW!!!!<3#t!!*&u!!*&u!<2uu!0mN`k6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFjT#/YrVucq!<<#us8W*!s8W&u"9/B$s8E#ks8Duu s8Duus8E#us8E#ms8;rss82lss8;rrs8E#rs8E#ns8;rss82lss8)frs8E#lrrN3#!<3#r!<)rs !!*&u!!*&u!;QTn!!3*"q>^BnrVuisrVuisrVuisrr;lr!ri9#rW)rtqZ-ZrrW)ZlrW)osrW!$" !<;utrr;osrr;lr!ri6#rr;uuq>^?m!<<#us8W*!p](3m!<<#u!<<#us8W&up](*js8W&urVuis "9/B$s8E!!rrDlpr;cfrrW!!!!<3#t!!*&u!!*&u!<2uu!0mN`k6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJjT#/YrVucq!<<#us8W*!s8W&u"9/B$s8E#ks8Duus8Duu s8E#us8E#ms8;rss82lss8;rrs8E#rs8E#ns8;rss82lss8)frs8E#lrrN3#!<3#r!<)rs!!*&u !!*&u!;QTn!!3*"q>^BnrVuisrVuisrVuisrr;lr!ri9#rW)rtqZ-ZrrW)ZlrW)osrW!$"!<;ut rr;osrr;lr!ri6#rr;uuq>^?m!<<#us8W*!p](3m!<<#u!<<#us8W&up](*js8W&urVuis"9/B$ s8E!!rrDlpr;cfrrW!!!!<3#t!!*&u!!*&u!<2uu!0mN`k6(bQN/[>rs8N5jF74/MJ,~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcDAB!!%TM^Ae05JcGHDs5sLamu34rn,NCjmrRr= !.Y~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcDAB!!%TM^Ae05JcGHDs5sLamuEG!n,NCjmre)A !.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcDAB!!%TM^Ae05JcGHDs5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcDAB!!%TM^Ae05JcGHDs5sLamu34rn,NCjmrRr= !.Y~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcDAB!!%TM^Ae05JcGHDs5sLamuEG!n,NCjmre)A !.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcDAB!!%TM^Ae05JcGHDs5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcDDCrW%NL_#OB6JcGKEs5sLamu34rn,NCjmrRr= !.Y~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcDDCrW%NL_#OB6JcGKEs5sLamuEG!n,NCjmre)A !.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcDDCrW%NL_#OB6JcGKEs5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#jT#,Xrr;uum/R(cJcGHDs5sLamu34rn,NCin,JoJrVuisrVlitoDegjpAY*mrVuis d/X+Gli6tbaSu5?dJs4HkPkM^mf3:eaSu5?li6tbf)G^Mn,E@fJcGHDs5sLamu34rn,NCjmrRr= !.Y~> "p"\lFoRo!jT#,Xrr;uum/R(cJcGHDs5sLamuEG!n,NCin,JiFrVuisrVlitoDegjpAY*mrVuis d/X+Gli6tbaSu5?dJs4HkPkM^mf3:eaSu5?li6tbf)G^Mn,E@fJcGHDs5sLamuEG!n,NCjmre)A !.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJrVuisrVlitoDegjpAY*mrVuisd/X+Gli6tbaSu5?dJs4H kPkM^mf3:eaSu5?li6tbf)G^Mn,E@fJcGHDs5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#jT#5[s8W*!kl:Y_JcGHDs5sLamu34rn,NCin,JoJrr2rulMgkbs8)firr<&ms82lm s8E#`rrE-"quHHj!!)rs!!(mUr;cis!!'n9!!)rsr;cis!!(mU!!)!XquH`rrW)Tj"9AK%!!*#u rrDWi!!)Bcr;cis!!(pV!!%TMp](9V"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!jT#5[s8W*!kl:Y_JcGHDs5sLamuEG!n,NCin,JiFrr2rulMgkbs8)firr<&ms82lm s8E#`rrE-"quHHj!!)rs!!(mUr;cis!!'n9!!)rsr;cis!!(mU!!)!XquH`rrW)Tj"9AK%!!*#u rrDWi!!)Bcr;cis!!(pV!!%TMp](9V"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJrr2rulMgkbs8)firr<&ms82lms8E#`rrE-"quHHj!!)rs !!(mUr;cis!!'n9!!)rsr;cis!!(mU!!)!XquH`rrW)Tj"9AK%!!*#urrDWi!!)Bcr;cis!!(pV !!%TMp](9V"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#jT#5[rr;uu$3'u*rr<'!!!*&t!<3#s!<<)t!<<)t!<<*!!!*&t!<3#u!/pmWk6(bQ N/[>rs8N2is.#VYrr<&arrW9$rrE&u!!)`m!!)Zk!!)`m!!)9`#6=f(!<<'!!;HKn!;uis!8meV !<2uu!<2uu!7CfH!;$3j!<)ot!<2uu!<2uu!8d_U!:Kje!;$3j!<)ot!<2uu!;6?l!<3#u!!<0# !:g'h!:Bdd!<2uu!<2uu!8meV!.k1Es8V6as6ko*o'cVY"RgF#Er^^~> "p"\lFoRo!jT#5[rr;uu$3'u*rr<'!!!*&t!<3#s!<<)t!<<)t!<<*!!!*&t!<3#u!/pmWk6(bQ NfN]!s8N2is-fDUrr<&arrW9$rrE&u!!)`m!!)Zk!!)`m!!)9`#6=f(!<<'!!;HKn!;uis!8meV !<2uu!<2uu!7CfH!;$3j!<)ot!<2uu!<2uu!8d_U!:Kje!;$3j!<)ot!<2uu!;6?l!<3#u!!<0# !:g'h!:Bdd!<2uu!<2uu!8meV!.k1Es8V6as6ku.o'cVY"RgL%FT?p~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJrr2rulMgqds8N)urr<&mrr<&krr<&mrr<&`rs&Q(rrE*! !!)cn!!)rs!!(pV!!*#u!!*#u!!(FH!!)Wj!!)ut!!*#u!!*#u!!(mU!!)He!!)Wj!!)ut!!*#u !!)]l!!*#urr<-#!!)Qh!!)Ed!!*#u!!*#u!!(pV!!%TMp](9V"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#mf3:eq>^Hprr;uu"9/?$s7u`qs8N'4rr<'!rr<'!rr<'!rr<'!rr<'!q>gNprr@uW s5sLamu34rn,NCkn,JoJs8Vuss8W&urr3!!s8E#ss8;rtrrrK'!<3'!s8E#qrr<&ss8E#rrr<&u rrE-"rW)rt!!)lqrW)rtr;cfrr;clt!!*#u!W`9#r;cisquHcs!s&?$!94"Y!;lfo!<<'"!<<#u s8W&urr3!!s8E#ss8E!!rrDQg!!)Zk!!)ut!!)orquHcs! "p"\lFoRo!mf3:eq>^Hprr;uu"9/?$s7u`qs8N'4rr<'!rr<'!rr<'!rr<'!rr<'!q>gNprr@uW s5sLamuEG!n,NCkn,JiFs8Vuss8W&urr3!!s8E#ss8;rtrrrK'!<3'!s8E#qrr<&ss8E#rrr<&u rrE-"rW)rt!!)lqrW)rtr;cfrr;clt!!*#u!W`9#r;cisquHcs!s&?$!94"Y!;lfo!<<'"!<<#u s8W&urr3!!s8E#ss8E!!rrDQg!!)Zk!!)ut!!)orquHcs! "9AJjF8pdkZiC4.mu34rn,NCkn,JoJs8Vuss8W&urr3!!s8E#ss8;rtrrrK'!<3'!s8E#qrr<&s s8E#rrr<&urrE-"rW)rt!!)lqrW)rtr;cfrr;clt!!*#u!W`9#r;cisquHcs!s&?$!94"Y!;lfo !<<'"!<<#us8W&urr3!!s8E#ss8E!!rrDQg!!)Zk!!)ut!!)orquHcs! "p"\lF8qc#mf3:eq>^Hprr;uu"9/?$s8E#us8N*!s8N'#rr<&rs8N*!s8N*!s8N'!s8E#ts8N'# rr<%Vs8V6as6ko*o'cVY"7Q8[SGrNg!;c]q!<)rt!<<'$!<<'!rr3$"s8W&uqu6Wrqu6WrrVlit rr2rurVlitrVults8N0$s8N)rrr<&urr<&rrrW9$rrE&u#6=f(!<<'!!;lcr!<2uu!;uls!<<'! !;?Em!;lcr!;?Hl!;uis!;lcr!;c]q!<)rt!<<'$!<<'!rr2rumf*7ep&>!lrVuisr;Q`squ6Wr qYpNqrVults8N0$s8N)urr<&trr<&crr<&lrr<&trr<&urr<&mrr<&trr`?%!<3&rrrW9$rrE&u !s&B$!<3!#!<<'!rr2ruq#Crs8N5jF74/MJ,~> "p"\lFoRo!mf3:eq>^Hprr;uu"9/?$s8E#us8N*!s8N'#rr<&rs8N*!s8N*!s8N'!s8E#ts8N'# rr<%Vs8V6as6ku.o'cVY"7Q8YRf<!lrVuisr;Q`squ6Wr qYpNqrVults8N0$s8N)urr<&trr<&crr<&lrr<&trr<&urr<&mrr<&trr`?%!<3&rrrW9$rrE&u !s&B$!<3!#!<<'!rr2ruq#C "9AJjF8pdkZiC4.mu34rn,NCin,JoJrr2ruqYpNqrVults8N0$s8N)urrN3#s8E#qrr<&rrr<&t rr<&urr<&trr<&ts8N*!rrW9$rrDrr!!*#u!!)or!s&B$!<3!'!<<'!s8N'!qu6Wrrr2rur;Zcs s8N'!pAY*mqu6WrpAb*lr;Q`squ6WrqYpNqrVults8N0$s8N)urr<&err<&lrr<&ts8E#rrr<&r rr<&qrr<&ts8N*!rrW9$rrE&u!!)ut!!)Bc!!)]l!!)ut!!*#u!!)`m!!)ut"9AH%rrDrr!s&B$ !<3!#!<<'!rr3'#s8N)urr<&os8E#rrr<&rrr<&qrr<&ts8N*!rrW9$rrE&u!!)ut!!%TMq#CBW "97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#nGi@cqu?Zrrr;uu"oeQ&rr<&us8)ctrr<&rs8N*!s8N*!s8N'#rr<&ts8N'#rr<%V s8V6as6ko*o'cVY"7Q8[SGrNg!;c]q!<)ot!<3!#!<<'!rr3-%s8N*!!;lcr!;lcr!<)rq!<)ot !<)ot!<3!#!<<'!qu6Wrrr2rurr;oss8N'!rr3$"s8W#trVufrrr2rur;Q`srr2ruiW&lWrr2ru qu6WrqYpNqrVlitrr3'#s8N)urr<&os82lorr<&mrr<&rs8E#trr<&rrr<&qrr<&trr<&urrW9$ rrE&u!!)ut!!)`mquHWo!!)`m!!)ut!!*#u!!)`m!!)ut"9AH%rrE&ur;clt!!*#u!s&B$!<3!" !<<)s!;?Hl!<2uu!;lcr!;c]q!<)ot!<3!#!<<'!rr2rurVlitJcGNFs5sLamu34rn,NCjmrRr= !.Y~> "p"\lFoRo!nGi@cqu?Zrrr;uu"oeQ&rr<&us8)ctrr<&rs8N*!s8N*!s8N'#rr<&ts8N'#rr<%V s8V6as6ku.o'cVY"7Q8YRf< "9AJjF8pdkZiC4.mu34rn,NCin,JoJrr2ruqYpNqrVlitrr3'#s8N)urriE&rrE'!qu6Wrqu6Wr rVucqrVlitrVlitrr3'#s8N)rrr<&urr<&us8;rtrr<&urrN3#s8;rrs8;rsrr<&srr<&urr<&X s8E#trr<&rrr<&qrr<&trr<&urrW9$rrE&u!!)foquHWo!!)`m!!)orrW)rt!!)or!!)lq!!)ut !!*#u!s&B$!<2uu!<)ot!;?Hj!;lcr!;?Em!<)ot!<2uu!;?Em!<)p#!<3'!!<3#s!<<'!!<3!# !<<'!rr3$"s8VuspAb*lrr2ruqu6WrqYpNqrVlitrr3'#s8N)urr<&trr<%Ms7lWok6(bQN/[>r s8N5jF74/MJ,~> "p"\lF8qc#mf3:eq>^Hprr;uu"oeQ&rr<&us8N)ss8N)rs8N*!s8N*!s8N'#rr<&ss8E"Ts8V6a s6ko*o'cVY"7Q8[SGrNg!;c]q!<)ot!<3!#!<<'!rr3'#s8N)prr<&rrr<&trr<&prr<&trr<&u rrW9$rrE&u!s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrDrr!!*#u!!*#u!!)rs!!*#u!!(pV!!*#u !!)or!!)lq!!)ut!!*#u!s&B$!<2uu!:Kje!;6?l!;ZWp!<2uu!;lcr!;c]q!<)ot!<3!#!<<'! rr2rurVlitm/I%cp&>!lrVlitrr2rupAY*mrVm*&rrE'!s8N)urr<&urrN3#!<2uu!<3!#!<<'! nG`Igrr2ruqu6WrqYpNqrVlitrr3'#s8N)urr<&trr<%Ms7lWok6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!mf3:eq>^Hprr;uu"oeQ&rr<&us8N)ss8N)rs8N*!s8N*!s8N'#rr<&ss8E"Ts8V6a s6ku.o'cVY"7Q8YRf<!lrVlitrr2rupAY*mrVm*&rrE'!s8N)urr<&urrN3#!<2uu!<3!#!<<'! nG`Igrr2ruqu6WrqYpNqrVlitrr3'#s8N)urr<&trr<%Ms7lWok6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJrr2ruqYpNqrVlitrr3'#s8N)urrW9$rrDlp!!)or!!)ut !!)ip!!)ut!!*#u!s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!s&B$!;lcr!<2uu!<2uu!;uis !<2uu!8meV!<2uu!;lcr!;c]q!<)ot!<3!#!<<'!rr2rumf*7ep&>!lq>UEprr2ruqu6WrqYpNq rVlitrr3'#s8N)urr<&trr<&crr<&lrr<&trr<&urr<&mrr<&trs&Q(!<3'!rrE&u!!*#u!W`6# rr2rurr3'#s8N)grr<&urr<&rrr<&qrr<&trr<&urrW9$rrE&u!!)ut!!%TMq#CBW"97hKN:QH; rrhe3mrJJZ~> "p"\lF8qc#mf3:eq>^Hps8W*!s8W*!!ri6#rr;uus8W*!$i^2,s8N'!s8N'!s8E#us8N'#rr<&s s8E"Ts8V6as6ko*o'cVY"7Q8[SGrNg!;c]q!<)ot!<3!#!<<'!rr3'#s8N)prr<&rrr<&trr<&u rr<&trr<&trr<&urrW9$rrE&u!s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrDrr!!*#u!!*#u!!*#u !W`6#rr2ruj8T)Zrr2rurr2rurr3'#s8N)qrr<&trr<&urrW9$rrE&u!!)Kf!!)Zk!!)ut!!*#u !!*#u!!*#u!s&B$!;c]q!<)ot!<3!#!<<'!rr2rurVlitmJd.do`"mkrVlitrr2rupAY*mrVlit rr3'#s8N)urr<&us8E#trr<&urrW9$rrE&u!!)fo!!*#u!!*#u!!*#u!s&B$!;c]q!<)ot!<3!# !<<'!rr2rurVlitJcGNFs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!mf3:eq>^Hps8W*!s8W*!!ri6#rr;uus8W*!$i^2,s8N'!s8N'!s8E#us8N'#rr<&s s8E"Ts8V6as6ku.o'cVY"7Q8YRf< "9AJjF8pdkZiC4.mu34rn,NCin,JoJrr2ruqYpNqrVlitrr3'#s8N)urrW9$rrDlp!!)or!!)ut !!*#u!!)ut!!)ut!!*#u!s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!s&B$!;lcr!<2uu!<2uu !<3!"!<3&urr<&Zrr<&urr<&urr<&urrW9$rrDoq!!)ut!!*#u!s&B$!<2uu!:Tpf!;-9k!<)ot !<2uu!<2uu!<3!#!<<'!qYpNqrVlitrr3'#s8N)urr<&trr<&drr<&krr<&trr<&urr<&mrr<&t rr<&urrW9$rrE&u!!*#urW)rt!!*#u!s&B$!<2uu!;QQo!<2uu!<2uu!<3!#!<<'!qYpNqrVlit rr3'#s8N)urr<&trr<%Ms7lWok6(bQN/[>rs8N5jF74/MJ,~> "p"\lF8qc#jT#,Xrr;uu!ri6#rVufrrr;osrVults8W#ts8W*!qu?ZrM?!V="97hKN:QH;rrqlk S=KWZr;cisqu?`srW)uurrE*!rVuruquH]qquHcsqZ-ZrrW)rtqu?`srW)uuq#LEorW)osrW!'# !<<)u!!*&s!;ulr!!3*"rr;rt!<<#u!<<#up\t3nqu6WrpAb'kr;Z`rs8W#trr;lr!<<#us8W*! s8W#tnG`IgoD\djrVufrr;Z`rs8W#trr;lr!<<#us8W*!s8W#trVlitmf*7ep&Fpirr;rto`"sm s8W&u!<<#us8W&u!WN0!rr<&urrE-"rW)osrW)]mr;ccqrW)uur;cisqu?`srW)uurrE*!r;cis !!%TMp](9V"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!jT#,Xrr;uu!ri6#rVufrrr;osrVults8W#ts8W*!qu?ZrM?!V="97hMNq2Z=rrqlk R[X9Vr;cisqu?`srW)uurrE*!rVuruquH]qquHcsqZ-ZrrW)rtqu?`srW)uuq#LEorW)osrW!'# !<<)u!!*&s!;ulr!!3*"rr;rt!<<#u!<<#up\t3nqu6WrpAb'kr;Z`rs8W#trr;lr!<<#us8W*! s8W#tnG`IgoD\djrVufrr;Z`rs8W#trr;lr!<<#us8W*!s8W#trVlitmf*7ep&Fpirr;rto`"sm s8W&u!<<#us8W&u!WN0!rr<&urrE-"rW)osrW)]mr;ccqrW)uur;cisqu?`srW)uurrE*!r;cis !!%TMp](9V"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCkn,JoJs8W#trr;lr!<<#us8W*!s8W&u!<;rsrVucqs8Vrrs8W&u rr;lr!<<#us8Vlprr;rtrVuis"9/B$s8Duus82lps8E!!rrE&urVururVururW)]m!!)or!!)`m r;ccqrW)uur;cisqu?`srW)uurrE*!r;c?e!!)Wj!!)utr;ccqrW)uur;cisqu?`srW)uurrE*! r;cfr!!)He!!)]lquH`rrW)Tj!W`9#rVururW)uurW!!!!<2uu!<3!!!<<#urVuisp](0lr;Z`r s8W#trr;lr!<<#us8W*!s8W#trr2ruJcGKEs5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#ZMsn)M#[M<"97hKN:QH;rr_`iS=G01^Ae05iVrlXf)G^MrVlitao;>@mf*7e_>aK8 rr2ruJcGKEs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!ZMsn)M#[M<"97hMNq2Z=rr_`iR[Sg-^Ae05iVrlXf)G^MrVlitao;>@mf*7e_>aK8 rr2ruJcGKEs5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcEIa!!)!X!!(UM!!)ut!!(.@!!)He!!'k8!!*#u!!%TM p](9V"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#ZiC%*M#[M<"97hKN:QH;rr_`iS=G01^Ae05iW&oXfDbgNrr;uuaSu5?n,E@f_>aT; s8N(Ms7ZKmk6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!ZiC%*M#[M<"97hMNq2Z=rr_`iR[Sg-^Ae05iW&oXfDbgNrr;uuaSu5?n,E@f_>aT; s8N(Ms7ZKmk6(bQNfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcEIa!!)!XrrC[N!!*#urrC.?!!)Kf!!'k8!s&B$!.k1D s8V6as6ko*o'cVY"RgF#Er^^~> "p"\lF8qc#[/^.+L]@D;"97hKN:QH;rr_`iS=G01_>jK7\,ZF-Z2ah(_uK]9JcG<@s5sLamu34r n,NCjmrRr=!.Y~> "p"\lFoRo![/^.+L]@D;"97hMNq2Z=rr_`iR[Sg-_>jK7\,ZF-Z2ah(_uK]9JcG<@s5sLamuEG! n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcERdrW'G-rW'5'rrBt:rW%NLo)JaQ"97hKN:QH;rrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJrVuisrVlitoDegjpAY*mrVuisd/X+Gli6tbo)J[h rVlitrVuishuEZUrVuisrVlitd/X+GJcC<$bQ%V*"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFrVuisrVlitoDegjpAY*mrVuisd/X+Gli6tbo)J[h rVlitrVuishuEZUrVuisrVlitd/X+GJcC<$bQ%V*"97hMNq2Z=rrhe5mr\V\~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJrVuisrVlitoDegjpAY*mrVuisd/X+Gli6tbo)J[hrVlit rVuishuEZUrVuisrVlitd/X+GJcC<$bQ%V*"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJrr2rulMgkbs8)firr<&ms82lms8E#`rrE-"quHHj !!)rs!!)Wj!!)Wj!!(sW!!)or!!((>!!%TMJcEpns5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFrr2rulMgkbs8)firr<&ms82lms8E#`rrE-"quHHj !!)rs!!)Wj!!)Wj!!(sW!!)or!!((>!!%TMJcEpns5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJrr2rulMgkbs8)firr<&ms82lms8E#`rrE-"quHHj!!)rs !!)Wj!!)Wj!!(sW!!)or!!((>!!%TMJcEpns5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJrr2rulMgqds8N)urr<&mrr<&krr<&mrr<&`rs&Q( rrE*!!!)cn!!)rs!!)Wj!!)Wj!!(sW!!)or!!((>!!%TMJcEpns5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFrr2rulMgqds8N)urr<&mrr<&krr<&mrr<&`rs&Q( rrE*!!!)cn!!)rs!!)Wj!!)Wj!!(sW!!)or!!((>!!%TMJcEpns5sLamuEG!n,NCjmre)A!.Y~> "9AJjF8pdkZiC4.mu34rn,NCin,JoJrr2rulMgqds8N)urr<&mrr<&krr<&mrr<&`rs&Q(rrE*! !!)cn!!)rs!!)Wj!!)Wj!!(sW!!)or!!((>!!%TMJcEpns5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcE7[s5sLamu34prrqlkS=KWZquHcsrW)rt! "p"\lFoRo!JcE7[s5sLamuEFtrrqlkR[X9VquHcsrW)rt! "9AJjF8pdkZiC4.mu34prrqlkS=KWZquHcsrW)rt! "p"\lF8qc#jT#5[r;Zcsnc/UhJcG6>s5sObmu34oo`#,Ss8VQfS=KTY!!)lq!!)utrrE*!!s&B$ !<3!"!<<)u!;lcr!;lcr!<)ot!<2uu!<)ot!<)rt!<<'$!<<'!qu6Wrrr2ruqu6`us8N)urs&Q( rrE*!!!)or!!*#u!!)rsrrE*!!!)cn!!)lq!!)or!!)ut!!*#u!!)fo!!*#u!s&B$!<2uu!<2uu !;lcr!;c]q!;uiu!<3&urr<&urrW9$rrE&u!!)foquHNl!!*#u!s&B$!<2uu!.k0$s3grIk6(bQ N/[>rs8N5jF74/MJ,~> "p"\lFoRo!jT#5[r;Zcsnc/UhJcG6>s5sObmuEFso`#,Us8VQfR[X6U!!)lq!!)utrrE*!!s&B$ !<3!"!<<)u!;lcr!;lcr!<)ot!<2uu!<)ot!<)rt!<<'$!<<'!qu6Wrrr2ruqu6`us8N)urs&Q( rrE*!!!)or!!*#u!!)rsrrE*!!!)cn!!)lq!!)or!!)ut!!*#u!!)fo!!*#u!s&B$!<2uu!<2uu !;lcr!;c]q!;uiu!<3&urr<&urrW9$rrE&u!!)foquHNl!!*#u!s&B$!<2uu!.k0$s3grIk6(bQ NfN]!s8N5jFmjGQJ,~> "9AJjF8pdkZiC7/mu34oo`#,Ss8VQfS=KTY!!)lq!!)utrrE*!!s&B$!<3!"!<<)u!;lcr!;lcr !<)ot!<2uu!<)ot!<)rt!<<'$!<<'!qu6Wrrr2ruqu6`us8N)urs&Q(rrE*!!!)or!!*#u!!)rs rrE*!!!)cn!!)lq!!)or!!)ut!!*#u!!)fo!!*#u!s&B$!<2uu!<2uu!;lcr!;c]q!;uiu!<3&u rr<&urrW9$rrE&u!!)foquHNl!!*#u!s&B$!<2uu!.k0$s3grIk6(bQN/[>rs8N5jF74/MJ,~> "p"\lF8qc#jT#5[r;Zcsnc/UhJcG6>s5sUdmu34os8Vl_s,70Ns8VQfS=KTY!!)lq!!)ut!!*#u !s&B$!<3!%!<<'!rrDrr!!)or!!)utquH]q!!)ut!!*#u!s&B$!;lcr!<2uu!<3#s!<<'!!<3!" !<<)t!<)rr!<2uu!;uis!<2uu!;HKn!;c]q!;lcr!<)rq!;HNm!<2uu!<2uu!<2uu!;lcr!;c]q !;lcr!<)rq!<3#t!9sL`!<3!#!<<'!rr2ruJcC<$df9@1"97hKN:?iMmrRr=!.Y~> "p"\lFoRo!jT#5[r;Zcsnc/UhJcG6>s5sUdmuEFss8Vl_s,I "9AJjF8pdkZiC=1mu34os8Vl_s,70Ns8VQfS=KTY!!)lq!!)ut!!*#u!s&B$!<3!%!<<'!rrDrr !!)or!!)utquH]q!!)ut!!*#u!s&B$!;lcr!<2uu!<3#s!<<'!!<3!"!<<)t!<)rr!<2uu!;uis !<2uu!;HKn!;c]q!;lcr!<)rq!;HNm!<2uu!<2uu!<2uu!;lcr!;c]q!;lcr!<)rq!<3#t!9sL` !<3!#!<<'!rr2ruJcC<$df9@1"97hKN:?iMmrRr=!.Y~> "p"\lF8qc#jT#2Zrr;rts8W#ts8W*!rr;uu"oeQ&rr<&us8;qKs8)cqk6M%UN/[5os8Vo`s,70N s8VQfS=KTY!!)lq!!)ut!!*#u!s&B$!<3!#!<<'!q>UEpqu6WrrVlitq>UEprVlitrr3'#s8N)u rrW9$rrE&u!s&B$!<3!#!<<'!rr3'#s8N)rrr<&urr<&urr<&srr<&urr<&nrr<&qrr<&rrr<&t rr<&grrW9$rrE&u!!*#u!!)or!!)lq!!)rs!W`6#rr2rup\t3nq#C6lq#: "p"\lFoRo!jT#2Zrr;rts8W#ts8W*!rr;uu"oeQ&rr<&us8;qKs8)cqk6M%UNfNSss8Vo`s,I

UEpqu6WrrVlitq>UEprVlitrr3'#s8N)u rrW9$rrE&u!s&B$!<3!#!<<'!rr3'#s8N)rrr<&urr<&urr<&srr<&urr<&nrr<&qrr<&rrr<&t rr<&grrW9$rrE&u!!*#u!!)or!!)lq!!)rs!W`6#rr2rup\t3nq#C6lq#: "9AJjF8pdkZiC@2mu34on,NF`n,J=Nn,NFVs.#VYrr<&qrr<&trr<&urrW9$rrE&u!s&B$!;ZWp !;lcr!<)ot!;ZWp!<)ot!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!s&B$!<3!#!<<'!qu6Wrrr2ru rr2rur;Q`srr2rup\t3nqYpNqqu6WrrVlitnG`Rjs8N)urr<&urr<&rrr<&qrr<&srrN3#!<2uu !;HKn!;QTl!;QQo!<3!#!<<'!rr2ruJcC<$df9@1"97hKN:[&SN;rqHF74/MJ,~> "p"\lF8qc#mf3:eq>^Eorr;rt$3'u*s8N'!rr<&us8N'!s8E!)rr<'!!!*'!!!%TMqu?]Z#QO7O N:668s8)3aN;rAHrr_`iS=KTY!!)lq!!)ut!!*#u!s&B$!<3!#!<<'!q>UEpqu6WrrVlitrr2ru rVlitrVlitrr3'#s8N)urrW9$rrE&u!s&B$!<3!#!<<'!rr3'#s8N)rrr<&urr<&urr<&urrN3# !<2uu!;HKn!;c]q!;lcr!<)ot!<2uu!;QQo!<3!#!<<'!rr2rurr2ruqu6WrqYpNqrVlitrr3'# s8N)urrW9$rrE&u!!) "p"\lFoRo!mf3:eq>^Eorr;rt$3'u*s8N'!rr<&us8N'!s8E!)rr<'!!!*'!!!%TMqu?]Z#QO7Q NplH:s8)3aNrSSJrr_`iR[X6U!!)lq!!)ut!!*#u!s&B$!<3!#!<<'!q>UEpqu6WrrVlitrr2ru rVlitrVlitrr3'#s8N)urrW9$rrE&u!s&B$!<3!#!<<'!rr3'#s8N)rrr<&urr<&urr<&urrN3# !<2uu!;HKn!;c]q!;lcr!<)ot!<2uu!;QQo!<3!#!<<'!rr2rurr2ruqu6WrqYpNqrVlitrr3'# s8N)urrW9$rrE&u!!)p@&$As8N5jFmjGQJ,~> "9AJjF8pdkZiC@2mu34on,NFan,J@Hn,NCin,JoJrr2ruqYpNqrVlitrr3'#s8N)urrW9$rrDlp !!)or!!)ut!!*#u!!)ut!!)ut!!*#u!s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!s&B$!;lcr !<2uu!<2uu!<3!"!<3&urr<&nrr<&qrr<&rrr<&trr<&urr<&orr<&urrW9$rrE&u!!*#u!!)or !!)lq!!)ut!!*#u!s&B$!<3!#!<<'!rr2rulMgharr3'#s8N)urr<%Ms+13us8V6cs6ko*s8Vf] s,@!X"RgF#Er^^~> "p"\lF8qc#mf3:eq>^Bn!<;utr;Zcss8W*!&cVh2s8N'!s8N'!rr<'!rr<%Ms82irk6(bQN/[c) s8Vubs,@!Hs8N8ks.#VZs8;rss82iss8E#us8N*!s8Duus82lqs82lss8)frs8E#ts82iss8E#u s7lZos8E#ss8E!#rrE*!rVuruquHZprW!!!!<3#t!!*&u!!*&u!;ZZn!<3#r!<<)r!<<)u!;?Hl !<)rs!!<0#s8;rss8;rss82iurr<&us8N*!s8E#ss8E#^s8E!#rrE*!rW%NLJcF-ts5sRcmu35* s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!mf3:eq>^Bn!<;utr;Zcss8W*!&cVh2s8N'!s8N'!rr<'!rr<%Ms82irk6(bQNfO,- s8Vubs,R-Js8N8ks-fDVs8;rss82iss8E#us8N*!s8Duus82lqs82lss8)frs8E#ts82iss8E#u s7lZos8E#ss8E!#rrE*!rVuruquHZprW!!!!<3#t!!*&u!!*&u!;ZZn!<3#r!<<)r!<<)u!;?Hl !<)rs!!<0#s8;rss8;rss82iurr<&us8N*!s8E#ss8E#^s8E!#rrE*!rW%NLJcF-ts5sRcmuEG. s7Yp]NrT+^mre)A!.Y~> "9AJjF8pdkZiC4.mu35)n,NFbn,J@Hn,NCkn,JoJs8W#trr;lr!<<#us8W*!s8W&u!<;rsrVucq s8Vrrs8W&urr;lr!<<#us8Vlprr;rtrVuis"9/B$s8Duus82lps8E!!rrE&urVururVururW)co r;cisquHcsqZ-ZrrW)ZlrW)osrW!$"!<;utrr;osrr;lr!ri6#rr;uus8W&urVuiskl:V^"9/B$ s8E"Ls+13ts8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lF8qc#nGi@cqu?Zr#lao)!<3$!s8Vuss8W*!$i^2,s8N'!s8N'!s8)eIs82irk6(bQN/[c) s8W#cs,?sGs8N2is.#U1s+13$s+13rs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!nGi@cqu?Zr#lao)!<3$!s8Vuss8W*!$i^2,s8N'!s8N'!s8)eIs82irk6(bQNfO,- s8W#cs,R*Is8N2is-fC-s+13$s+13rs8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> "9AJjF8pdkZiC4.mu35)n,NFcn,J@Gn,NCin,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#mf3:eq>^Hp!<<#u$3'u*rr<'!rr<&us8E#ts8N*!s8N'#rr<%Ms7cQnk6(bQN/[`( s8W&ds,?sGs8N2is.#U1s+13$s+13rs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!mf3:eq>^Hp!<<#u$3'u*rr<'!rr<&us8E#ts8N*!s8N'#rr<%Ms7cQnk6(bQNfO), s8W&ds,R*Is8N2is-fC-s+13$s+13rs8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> "9AJjF8pdkZiC4.mu35(n,NFdn,J@Gn,NCin,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#mf3:eq>^Hps8NH,s8N'!rr<'!rr<&us8E#ts8E!)rr<'!!!*'!!!%TMqu?]Z"97hK N;`5Fs8MKeN;`5Frr_`iS=G01JcC<$JcF'rs5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!mf3:eq>^Hps8NH,s8N'!rr<'!rr<&us8E#ts8E!)rr<'!!!*'!!!%TMqu?]Z"97hM NrAGHs8MKeNrAGHrr_`iR[Sg-JcC<$JcF'rs5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> "9AJjF8pdkZiC4.mu35(n,NFen,J@Fn,NCin,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#jT#5[s8N9's8N'!s8W&u!ri6#rr;uurr;uu!ri6#rr;osJcGTHs5sLamu35'n,NFf n,J@Fn,NCin,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!jT#5[s8N9's8N'!s8W&u!ri6#rr;uurr;uu!ri6#rr;osJcGTHs5sLamuEG+n,NFf n,JFHn,NCin,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF8pdkZiC4.mu35'n,NFfn,J@Fn,NCin,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#d/O(GJcG$8s5sLamu35'n,NChmu35'n,NCin,JoJj8])Ym/R(cli6tbY5eJ$jo>>\ li6tbJcC<$X8i4_"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!d/O(GJcG$8s5sLamuEG+n,NChmuEG+n,NCin,JiFj8])Ym/R(cli6tbY5eJ$jo>>\ li6tbJcC<$X8i4_"on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF8pdkZiC4.mu35'n,NChmu35'n,NCin,JoJj8])Ym/R(cli6tbY5eJ$jo>>\li6tbJcC<$ X8i4_"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lF8qc#dJs4HJcG$8s5sLamu35&mf "p"\lFoRo!dJs4HJcG$8s5sLamuEG*mfp@&$As8N5jFmjGQJ,~> "9AJjF8pdkZiC4.mu35&mf "p"\lF8qc#df9=IJcG!7s5sLamu35&mfNNJN;N)Drr_`iS=JR "p"\lFoRo!df9=IJcG!7s5sLamuEG*mfNNLNr/;Frr_`iR[W48!!)?b!!)Ng!!)rs!!)Qh!!)!X !!)rs!!)*[!!)ut!!)9`#6=f(!<<'!!;HKn!;uis!.k0$s/Z2"k6:nSNfO/>p@&$As8N5jFmjGQ J,~> "9AJjF8pdkZiC4.mu35&mfNNJN;N)Drr_`iS=JR "p"\lF8qc#JcE7[s5sLamu35%n,J@Dn,NCin,JoJiVrlXr;Z`rrr;osrVufr!ri9#rW)rtr;cis quHcs!s&?$!;6?l!:Kmd!!E6$s8W&urr;lrs8N'!qZ$NprVuisrr;osr;Q`srVlitqZ$Nprr;os rVufrs8N'!rr3$"s8W#trr;lrs8N0$rr<%Ms+13Qs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!JcE7[s5sLamuEG)n,JFFn,NCin,JiFiVrlXr;Z`rrr;osrVufr!ri9#rW)rtr;cis quHcs!s&?$!;6?l!:Kmd!!E6$s8W&urr;lrs8N'!qZ$NprVuisrr;osr;Q`srVlitqZ$Nprr;os rVufrs8N'!rr3$"s8W#trr;lrs8N0$rr<%Ms+13Qs8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> "9AJjF8pdkZiC4.mu35%n,J@Dn,NCin,JoJiVrlXr;Z`rrr;osrVufr!ri9#rW)rtr;cisquHcs !s&?$!;6?l!:Kmd!!E6$s8W&urr;lrs8N'!qZ$NprVuisrr;osr;Q`srVlitqZ$Nprr;osrVufr s8N'!rr3$"s8W#trr;lrs8N0$rr<%Ms+13Qs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lF8qc#JcE7[s5sLamu35%mf8=Cn,NCin,JoJiVrlXrVlitrr2ruqu6`us8N)urrW9$rrE&u !!)or!!*#u!!)rsrrE*!!!)cn!!)He!!*#u!s&B$!<2uu!<2uu!;uis!;lcr!<3!#!<<'!rr2ru qu6WrrVlitrVlitqu6Wrrr2ruqu6`us8N)urs&Q(rrE*!!!)or!!*#u!!)rsrrE*!!!%TMJcDqR s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!JcE7[s5sLamuEG)mf8CEn,NCin,JiFiVrlXrVlitrr2ruqu6`us8N)urrW9$rrE&u !!)or!!*#u!!)rsrrE*!!!)cn!!)He!!*#u!s&B$!<2uu!<2uu!;uis!;lcr!<3!#!<<'!rr2ru qu6WrrVlitrVlitqu6Wrrr2ruqu6`us8N)urs&Q(rrE*!!!)or!!*#u!!)rsrrE*!!!%TMJcDqR s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> "9AJjF8pdkZiC4.mu35%mf8=Cn,NCin,JoJiVrlXrVlitrr2ruqu6`us8N)urrW9$rrE&u!!)or !!*#u!!)rsrrE*!!!)cn!!)He!!*#u!s&B$!<2uu!<2uu!;uis!;lcr!<3!#!<<'!rr2ruqu6Wr rVlitrVlitqu6Wrrr2ruqu6`us8N)urs&Q(rrE*!!!)or!!*#u!!)rsrrE*!!!%TMJcDqRs5sRc mu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#J`jK)"97hKN:?iLn,JoJiVrlXrVlitrr2rurr;oss8N'!rr3'#s8N)urr<&us8;rs rr<&srr<&urr<&orr<&rs82llrr<&urrN3#s82lrrr<&srr<&rrr<&urrW9$rrDoqr;cfr!!)ut !!)or!!*#u!!*#ur;clt!!*#u!W`9#r;cfrr;cis!!)rs!!*#u!!%TMJcDqRs5sRcmu35*s7Yp] N;rn\mrRr=!.Y~> "p"\lFoRo!J`jK)"97hMNq!&Nn,JiFiVrlXrVlitrr2rurr;oss8N'!rr3'#s8N)urr<&us8;rs rr<&srr<&urr<&orr<&rs82llrr<&urrN3#s82lrrr<&srr<&rrr<&urrW9$rrDoqr;cfr!!)ut !!)or!!*#u!!*#ur;clt!!*#u!W`9#r;cfrr;cis!!)rs!!*#u!!%TMJcDqRs5sRcmuEG.s7Yp] NrT+^mre)A!.Y~> "9AJjF8pdkZiC4.mu34prr_`iS=JR "T\SkF8qb]kI'ISs6kp8rr_`iS=JR "T\SkFoRn]kI'ISs6l!:rr_`iR[W48!!)ut!!*#u!s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrE&u !!*#u!!)rs!!*#u!!)cn!!)He!!*#u!s&B$!;c]q!;uis!<3!#!<<'!rr3'#s8N)rrr<&urr<&t rr<&trr<&urrW9$rrE&u!s&B$!<3!#!<<'!rr3'#s8N)rrr<&urr<&urr<&srr<&urr<%Ms+13R s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> "9AJjF8pdkZiC1-mu6`8"7Q8[SDjJJ!<)ot!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!s&B$!<2uu !<2uu!;uis!<2uu!;HKn!:Kje!<3!#!<<'!qYpNqr;Q`srr3'#s8N)urrW9$rrDrr!!*#u!!)ut !!)ut!!*#u!s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrDrr!!*#u!!*#u!!)rs!!*#u!!%TMJcDqR s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> !s&AiF+O@ss6T1Us.#V !s&AiFb0Rus6T1Us-fD8rr<&trr<&urrW9$rrE&u!s&B$!<3!#!<<'!rr3'#s8N)urr<&urr<&u rrN3#!<2uu!;?Em!:Tpf!<3!#!<<'!rr2rurr2rurr3$"rrE&u!s&B$!<3!#!<<'!rr3'#s8N)u rr<&trr<&trr<&urrW9$rrE&u!s&B$!<3!#!<<'!rr3'#s8N)rrr<&urr<&urr<&urrN3#!<2uu !.k0$s0)J&k6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF+O@ss6T1Us.#V !s&AiF+NeNmfNNZSE'YH!<<)u!<)rs!!E6$s8W&u!ri9#r;cfrrW!!!!<3#t!!*&u!!*&u!;?Em !:Tsd!<3#t!;ulr!!*&r!<3#t!<)rs!<)rs!!<0#s7HBks8E#ss8E!#rrE*!rVuruquHZprW!!! !<3#t!!*&u!!*&u!.k0$s02P'k6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiFb0"PmfNNXRcFGF!<<)u!<)rs!!E6$s8W&u!ri9#r;cfrrW!!!!<3#t!!*&u!!*&u!;?Em !:Tsd!<3#t!;ulr!!*&r!<3#t!<)rs!<)rs!!<0#s7HBks8E#ss8E!#rrE*!rVuruquHZprW!!! !<3#t!!*&u!!*&u!.k0$s02P'k6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF+NeNmfNNZSE'YH!<<)u!<)rs!!E6$s8W&u!ri9#r;cfrrW!!!!<3#t!!*&u!!*&u!;?Em !:Tsd!<3#t!;ulr!!*&r!<3#t!<)rs!<)rs!!<0#s7HBks8E#ss8E!#rrE*!rVuruquHZprW!!! !<3#t!!*&u!!*&u!.k0$s02P'k6:nSN/[f:p@&$?s8N5jF74/MJ,~> "9AJjF74[=[#F>>!rnd\a8Z,>`r?#=JcC<$JcEais5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "9AJjFmjmA[#XJ@!rn^Xa8Z,>`r?#=JcC<$JcEais5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> "9AJjF74[=[#F>>!rnd\a8Z,>`r?#=JcC<$JcEais5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "9AJjF74[=[>Y+clgFoTS=IY"!!(%=!!%TMJcC<$`rH)%"on%MN;rqOn,J@Hrrhe3mrJJZ~> "9AJjFmjmA[>k7elgFoTR[V:s!!(%=!!%TMJcC<$`rH)%"on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF74[=[>Y+clgFoTS=IY"!!(%=!!%TMJcC<$`rH)%"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lF75'HoBu_[mt(MkrrVZhs7Gd[s6K+Ts.#V#s8E#@s8E"Ls+13$s2G$ "p"\lFmk?NoBu_[mt(MkrrVZhs7Gd[s6K+Ts-fCts8E#@s8E"Ls+13$s2G$p@&$A s8N5jFmjGQJ,~> "p"\lF75'HoBu_[mt(MkrrVZhs7Gd[s6K+Ts.#V#s8E#@s8E"Ls+13$s2G$ "p"\lF75'Hp$_q\!K?Jus4RDQN:6`Fp@&%]lgFoTS=G01JcC<$JcF'rs5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lFmk?Np$_q\!KQW"s4RDQNplrHp@&%]lgFoTR[Sg-JcC<$JcF'rs5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "p"\lF75'Hp$_q\!K?Jus4RDQN:6`Fp@&%]lgFoTS=G01JcC<$JcF'rs5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lF75'Hp[A+]s,7$Js8RZ=h!b9%!:Tgbq!\7_lgFoTS=JR "p"\lFmk?Np[A+]s,I0Ls8RZ=h!b9'!:Tgbq!\7_lgFoTR[W48rW)os!!)WjrrDcm!!)utrW(IJ rrDWirW)os!!)utrW(jUrW)osrW)os!!)!XrW) "p"\lF75'Hp[A+]s,7$Js8RZ=h!b9%!:Tgbq!\7_lgFoTS=JR "p"\lF75'Hq=":^"n.D/n,NE=n(dC3N!/VLs6oFTs8)3as6K+Ts.#V=rr<&arrE-"qZ-?i!!)`m quHQmquHHj!!)rs!!)Wj!!)Wj!!(sW!!)or!!(XN!!)?b!!)Ng!!)rs!!%TMJcG$8s5sRcmu35* s7Yp]N;rn\mrRr=!.Y~> "p"\lFmk?Nq=":^"n.J3n,NE=n(dC3NWehNs6oFTs8)3as6K+Ts-fD9rr<&arrE-"qZ-?i!!)`m quHQmquHHj!!)rs!!)Wj!!)Wj!!(sW!!)or!!(XN!!)?b!!)Ng!!)rs!!%TMJcG$8s5sRcmuEG. s7Yp]NrT+^mre)A!.Y~> "p"\lF75'Hq=":^"n.D/n,NE=n(dC3N!/VLs6oFTs8)3as6K+Ts.#V=rr<&arrE-"qZ-?i!!)`m quHQmquHHj!!)rs!!)Wj!!)Wj!!(sW!!)or!!(XN!!)?b!!)Ng!!)rs!!%TMJcG$8s5sRcmu35* s7Yp]N;rn\mrRr=!.Y~> "p"\lF75'HqsXL`rpTlG!q60hJa_C_s,7$Js8W&drVufas8VER!rnd\ir8uYlMgqds8N)urr<&m rr<&krr<&mrr`?%rr<&nrr<&srr<&jrr<&jrr<&Wrr<&rrr<&Nrr<&brr<&grr<&srr<%Ms+148 s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFmk?NqsXL`rpTlI!q60hJa_C_s,I0Ls8W&drVufas8VER!rn^Xir8uYlMgqds8N)urr<&m rr<&krr<&mrr`?%rr<&nrr<&srr<&jrr<&jrr<&Wrr<&rrr<&Nrr<&brr<&grr<&srr<%Ms+148 s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> "p"\lF75'HqsXL`rpTlG!q60hJa_C_s,7$Js8W&drVufas8VER!rnd\ir8uYlMgqds8N)urr<&m rr<&krr<&mrr`?%rr<&nrr<&srr<&jrr<&jrr<&Wrr<&rrr<&Nrr<&brr<&grr<&srr<%Ms+148 s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lF75'HrU9^br9sZE!q60hJa_C_s,7$Js8VubrVulcs8VER!rnd\j8]#Ws8W&urr3!!s8E#s s8;rtrrrK'!<3'!s8E#qrr<&ss8E#rrr<&urrE-"rW)rt!!*#u!W`9#r;cisquHcs!s&?$!;HNk !<<)u!;lcr!;ulr!;?Hl!<<*!!<<*!!<<)s!<<)s!<<)u!<3#t!!*&u!<<)u!<)rs!;6?l!;ulr !<3#s!<)rr!!<0#s8E#ts8;rss82lsrrW9$!!%TMJcG-;s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFmk?NrU9^br9sZG!q60hJa_C_s,I0Ls8VubrVulcs8VER!rn^Xj8]#Ws8W&urr3!!s8E#s s8;rtrrrK'!<3'!s8E#qrr<&ss8E#rrr<&urrE-"rW)rt!!*#u!W`9#r;cisquHcs!s&?$!;HNk !<<)u!;lcr!;ulr!;?Hl!<<*!!<<*!!<<)s!<<)s!<<)u!<3#t!!*&u!<<)u!<)rs!;6?l!;ulr !<3#s!<)rr!!<0#s8E#ts8;rss82lsrrW9$!!%TMJcG-;s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> "p"\lF75'HrU9^br9sZE!q60hJa_C_s,7$Js8VubrVulcs8VER!rnd\j8]#Ws8W&urr3!!s8E#s s8;rtrrrK'!<3'!s8E#qrr<&ss8E#rrr<&urrE-"rW)rt!!*#u!W`9#r;cisquHcs!s&?$!;HNk !<<)u!;lcr!;ulr!;?Hl!<<*!!<<*!!<<)s!<<)s!<<)u!<3#t!!*&u!<<)u!<)rs!;6?l!;ulr !<3#s!<)rr!!<0#s8E#ts8;rss82lsrrW9$!!%TMJcG-;s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> #QXnnF75'Hn*g5TqX=HC!q60hJa_C_s,7$Js8Vo`rVlrfs8VER!rnd\ir8uYqYpNqrVults8N0$ s8N)urrN3#s8E#qrr<&rrr<&trr<&urr<&trr<&ts8N*!rs&Q(rrE*!!!)or!!*#u!!)rsrrE*! !!)cn!!)lq!!)or!!)ut!!*#u!!)fo!!*#u!s&B$!<2uu!<2uu!;lcr!;c]q!;uiu!<3&urr<&u rrW9$rrE&u!!)`m!!)ut!!*#u!!)or!s&B$!<3!#!<<'!rr2ruqu6Wrrr2rur;Zcss8N'!JcC<$ mf3=M"on%MN;rqOn,J@Hrrhe3mrJJZ~> #QXnnFmk?Nn*g5TqX=HE!q60hJa_C_s,I0Ls8Vo`rVlrfs8VER!rn^Xir8uYqYpNqrVults8N0$ s8N)urrN3#s8E#qrr<&rrr<&trr<&urr<&trr<&ts8N*!rs&Q(rrE*!!!)or!!*#u!!)rsrrE*! !!)cn!!)lq!!)or!!)ut!!*#u!!)fo!!*#u!s&B$!<2uu!<2uu!;lcr!;c]q!;uiu!<3&urr<&u rrW9$rrE&u!!)`m!!)ut!!*#u!!)or!s&B$!<3!#!<<'!rr2ruqu6Wrrr2rur;Zcss8N'!JcC<$ mf3=M"on%ONrT.Qn,JFJrrhe5mr\V\~> #QXnnF75'Hn*g5TqX=HC!q60hJa_C_s,7$Js8Vo`rVlrfs8VER!rnd\ir8uYqYpNqrVults8N0$ s8N)urrN3#s8E#qrr<&rrr<&trr<&urr<&trr<&ts8N*!rs&Q(rrE*!!!)or!!*#u!!)rsrrE*! !!)cn!!)lq!!)or!!)ut!!*#u!!)fo!!*#u!s&B$!<2uu!<2uu!;lcr!;c]q!;uiu!<3&urr<&u rrW9$rrE&u!!)`m!!)ut!!*#u!!)or!s&B$!<3!#!<<'!rr2ruqu6Wrrr2rur;Zcss8N'!JcC<$ mf3=M"on%MN;rqOn,J@Hrrhe3mrJJZ~> "9AJjF79!bq!\6A!q60hJa_C_s,7$Js8Vl_rJ^dVlgFoTS=JU=!!)lq!!)ut!!*#u!s&B$!<3!% !<<'!rrDrr!!)or!!)utquH]q!!)ut!!*#u!W`9#r;cfrr;cis!!)rs!!*#u!!)cn!!)lq!!)or !!)utquHKkrW)rt!!*#u!!*#u!!)or!!)lq!!)or!!)utquH`rrW)Wk!!)ut!!*#u!!*#ur;clt !!*#u!s&B$!<2uu!<3#s!<2uu!;uis!<2uu!.k0$s6fpek6:nSN/[f:p@&$?s8N5jF74/MJ,~> "9AJjFmo3fq!\6C!q60hJa_C_s,I0Ls8Vl_rJppXlgFoTR[W79!!)lq!!)ut!!*#u!s&B$!<3!% !<<'!rrDrr!!)or!!)utquH]q!!)ut!!*#u!W`9#r;cfrr;cis!!)rs!!*#u!!)cn!!)lq!!)or !!)utquHKkrW)rt!!*#u!!*#u!!)or!!)lq!!)or!!)utquH`rrW)Wk!!)ut!!*#u!!*#ur;clt !!*#u!s&B$!<2uu!<3#s!<2uu!;uis!<2uu!.k0$s6fpek6:nSNfO/>p@&$As8N5jFmjGQJ,~> "9AJjF79!bq!\6A!q60hJa_C_s,7$Js8Vl_rJ^dVlgFoTS=JU=!!)lq!!)ut!!*#u!s&B$!<3!% !<<'!rrDrr!!)or!!)utquH]q!!)ut!!*#u!W`9#r;cfrr;cis!!)rs!!*#u!!)cn!!)lq!!)or !!)utquHKkrW)rt!!*#u!!*#u!!)or!!)lq!!)or!!)utquH`rrW)Wk!!)ut!!*#u!!*#ur;clt !!*#u!s&B$!<2uu!<3#s!<2uu!;uis!<2uu!.k0$s6fpek6:nSN/[f:p@&$?s8N5jF74/MJ,~> #QXnnF75'Hn*g46qX=HC!q60hJa_C_s,7$Js8Vo`rJUgHs8VER!rnd\ir8uYqYpNqrVlitrr3'# s8N)urrW9$rrDlp!!)or!!)ut!!)ip!!)ut!!*#u!s&B$!;lcr!<2uu!<2uu!;uis!<2uu!;HKn !;c]q!;lcr!<)ot!:^!j!<<'!rr2rurr2ruqu6WrqYpNqr;QfurrE&u!!)cn!!)`m!!)ut!!*#u !s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!!*#u!!)rs!!*#u!!%TMJcG0 #QXnnFmk?Nn*g48qX=HE!q60hJa_C_s,I0Ls8Vo`rJgsJs8VER!rn^Xir8uYqYpNqrVlitrr3'# s8N)urrW9$rrDlp!!)or!!)ut!!)ip!!)ut!!*#u!s&B$!;lcr!<2uu!<2uu!;uis!<2uu!;HKn !;c]q!;lcr!<)ot!:^!j!<<'!rr2rurr2ruqu6WrqYpNqr;QfurrE&u!!)cn!!)`m!!)ut!!*#u !s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!!*#u!!)rs!!*#u!!%TMJcG0 #QXnnF75'Hn*g46qX=HC!q60hJa_C_s,7$Js8Vo`rJUgHs8VER!rnd\ir8uYqYpNqrVlitrr3'# s8N)urrW9$rrDlp!!)or!!)ut!!)ip!!)ut!!*#u!s&B$!;lcr!<2uu!<2uu!;uis!<2uu!;HKn !;c]q!;lcr!<)ot!:^!j!<<'!rr2rurr2ruqu6WrqYpNqr;QfurrE&u!!)cn!!)`m!!)ut!!*#u !s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!!*#u!!)rs!!*#u!!%TMJcG0 "p"\lF75'HrU9]Dr9sZE!q60hJa_C_s,7$Js8VubrJ^aEs8VER!rnd\ir8uYqYpNqrVlitrr3'# s8N)urrW9$rrDlp!!)or!!)ut!!*#u!!)ut!!)ut!!*#u!s&B$!;lcr!<2uu!<2uu!<3!"!<3&u rr<&nrr<&qrr<&rrr<&trr<&urr<&orr<&urrW9$rrE&u!!*#u!!)or!!)lq!!)ut!!*#u!s&B$ !<3!#!<<'!rr2rupAY*mrVlitrr3'#s8N)urrW9$rrE&u!s&B$!<3!#!<<'!rr2rurr2rurr3$" rrE&u!!%TMJcG0 "p"\lFmk?NrU9]Fr9sZG!q60hJa_C_s,I0Ls8VubrJpmGs8VER!rn^Xir8uYqYpNqrVlitrr3'# s8N)urrW9$rrDlp!!)or!!)ut!!*#u!!)ut!!)ut!!*#u!s&B$!;lcr!<2uu!<2uu!<3!"!<3&u rr<&nrr<&qrr<&rrr<&trr<&urr<&orr<&urrW9$rrE&u!!*#u!!)or!!)lq!!)ut!!*#u!s&B$ !<3!#!<<'!rr2rupAY*mrVlitrr3'#s8N)urrW9$rrE&u!s&B$!<3!#!<<'!rr2rurr2rurr3$" rrE&u!!%TMJcG0 "p"\lF75'HrU9]Dr9sZE!q60hJa_C_s,7$Js8VubrJ^aEs8VER!rnd\ir8uYqYpNqrVlitrr3'# s8N)urrW9$rrDlp!!)or!!)ut!!*#u!!)ut!!)ut!!*#u!s&B$!;lcr!<2uu!<2uu!<3!"!<3&u rr<&nrr<&qrr<&rrr<&trr<&urr<&orr<&urrW9$rrE&u!!*#u!!)or!!)lq!!)ut!!*#u!s&B$ !<3!#!<<'!rr2rupAY*mrVlitrr3'#s8N)urrW9$rrE&u!s&B$!<3!#!<<'!rr2rurr2rurr3$" rrE&u!!%TMJcG0 "p"\lF75'HqsXKBrpTlG!q60hJa_C_s,7$Js8W&drJ^[Cs8VER!rnd\j8]&Xrr;lr!<<#us8W*! s8W&u!<;rsrVucqs8Vrrs8W&urr;lr!<<#us8Vrrr;Z`r!WN0!s8Duus8Duus8E#os8;rss82ls s8)frs8E#ls8E#ss8E!"rrE)t!<3#s!<3#r!!<0#!<3#u!<<)u!<)rs!;HNj!<<)u!<)rs!!E6$ s8W&u!ri9#r;cfrrW!!!!<3#t!!*&u!!*&u!.k0$s6p!fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lFmk?NqsXKDrpTlI!q60hJa_C_s,I0Ls8W&drJpgEs8VER!rn^Xj8]&Xrr;lr!<<#us8W*! s8W&u!<;rsrVucqs8Vrrs8W&urr;lr!<<#us8Vrrr;Z`r!WN0!s8Duus8Duus8E#os8;rss82ls s8)frs8E#ls8E#ss8E!"rrE)t!<3#s!<3#r!!<0#!<3#u!<<)u!<)rs!;HNj!<<)u!<)rs!!E6$ s8W&u!ri9#r;cfrrW!!!!<3#t!!*&u!!*&u!.k0$s6p!fk6:nSNfO/>p@&$As8N5jFmjGQJ,~> "p"\lF75'HqsXKBrpTlG!q60hJa_C_s,7$Js8W&drJ^[Cs8VER!rnd\j8]&Xrr;lr!<<#us8W*! s8W&u!<;rsrVucqs8Vrrs8W&urr;lr!<<#us8Vrrr;Z`r!WN0!s8Duus8Duus8E#os8;rss82ls s8)frs8E#ls8E#ss8E!"rrE)t!<3#s!<3#r!!<0#!<3#u!<<)u!<)rs!;HNj!<<)u!<)rs!!E6$ s8W&u!ri9#r;cfrrW!!!!<3#t!!*&u!!*&u!.k0$s6p!fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lF75'Hq="9@"n.D/n,NE=n(dC3N!/VLs6oFTN;E#Cs6K+Ts.#U1s+14Jrr<%Ms+14#s8V6c s6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFmk?Nq="9B"n.J3n,NE=n(dC3NWehNs6oFTNr&5Es6K+Ts-fC-s+14Jrr<%Ms+14#s8V6c s6ku.s8Vf]s,R-Z"RgL%FT?p~> "p"\lF75'Hq="9@"n.D/n,NE=n(dC3N!/VLs6oFTN;E#Cs6K+Ts.#U1s+14Jrr<%Ms+14#s8V6c s6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lF75'Hp[A$=!q60hJa_C_s,7$Js8W%Vq!\7_lgFoTS=G01JcGZJ!!%TMJcF:#s5sRcmu35* s7Yp]N;rn\mrRr=!.Y~> "p"\lFmk?Np[A$?!q60hJa_C_s,I0Ls8W%Xq!\7_lgFoTR[Sg-JcGZJ!!%TMJcF:#s5sRcmuEG. s7Yp]NrT+^mre)A!.Y~> "p"\lF75'Hp[A$=!q60hJa_C_s,7$Js8W%Vq!\7_lgFoTS=G01JcGZJ!!%TMJcF:#s5sRcmu35* s7Yp]N;rn\mrRr=!.Y~> "p"\lF75'Hp$_m=!q60hJW/ "p"\lFmk?Np$_m?!q60hJWAHE"RlBjNfNi%s8VER!rn^XJcC<$rVuisJcC<$f)Pd5"on%ONrT.Q n,JFJrrhe5mr\V\~> "p"\lF75'Hp$_m=!q60hJW/ "p"\lF75'HoBua>n,Irtfo-"$s,?U=s8VER!rnd\JcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFmk?NoBua@n,Is!fo?.&s,Qa?s8VER!rn^XJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF75'HoBua>n,Irtfo-"$s,?U=s8VER!rnd\JcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF75'HJcE1YlgFoTS=G01JcC<$JcF'rs5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFmk?NJcE1YlgFoTR[Sg-JcC<$JcF'rs5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> "p"\lF75'HJcE1YlgFoTS=G01JcC<$JcF'rs5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "T\SkF75'=s0_mmmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> "T\SkFmk?As0_mmmfNNXRXtKis+13$s3L`Fk6:nSNfO/>p@&$As8N5jFmjGQJ,~> "T\SkF75'=s0_mmmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiFb0"PmfNNXRXtKis+13$s3L`Fk6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiFb0"PmfNNXRXtKis+13$s3L`Fk6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiFb0"PmfNNXRXtKis+13$s3L`Fk6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiFb0"PmfNNXRXtKis+13$s3L`Fk6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiFb0"PmfNNXRXtKis+13$s3L`Fk6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiFb0"PmfNNXRXtKis+13$s3L`Fk6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiFb0"PmfNNXRXtKis+13$s3L`Fk6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiFb0"PmfNNXRXtKis+13$s3L`Fk6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiFb0"PmfNNXRXtKis+13$s3L`Fk6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiF8,/'!:]IW!86i@!:fOX!;,a[!9WbM!;Z*`!3Ybls.#U1s+13$s+13rs8V6cs6ko*s8Vf] s,@!X"RgF#Er^^~> !s&AiFnbA)!:]IW!86i@!:fOX!;,a[!9WbM!;Z*`!3Ybls-fC-s+13$s+13rs8V6cs6ku.s8Vf] s,R-Z"RgL%FT?p~> !s&AiF8,/'!:]IW!86i@!:fOX!;,a[!9WbM!;Z*`!3Ybls.#U1s+13$s+13rs8V6cs6ko*s8Vf] s,@!X"RgF#Er^^~> !s&AiF855&!:fOX!86i@!:fOX!;,a[!9WbM!;Z*`!3Ybls.#U1s+13$s+13rs8V6cs6ko*s8Vf] s,@!X"RgF#Er^^~> !s&AiFnkG(!:fOX!86i@!:fOX!;,a[!9WbM!;Z*`!3Ybls-fC-s+13$s+13rs8V6cs6ku.s8Vf] s,R-Z"RgL%FT?p~> !s&AiF855&!:fOX!86i@!:fOX!;,a[!9WbM!;Z*`!3Ybls.#U1s+13$s+13rs8V6cs6ko*s8Vf] s,@!X"RgF#Er^^~> !s&AiF8522!:T@Vn*^5Vmf3@en,37dn,E@hmf3@en,E@fn,*1cn,37_n,37cn,37dn,ECfn,37c n,37dn,37dn,37cn,E@hmf3@cmf !s&AiFnkD4!:T@Vn*^5Vmf3@en,37dn,E@hmf3@en,E@fn,*1cn,37_n,37cn,37dn,ECfn,37c n,37dn,37dn,37cn,E@hmf3@cmf !s&AiF8522!:T@Vn*^5Vmf3@en,37dn,E@hmf3@en,E@fn,*1cn,37_n,37cn,37dn,ECfn,37c n,37dn,37dn,37cn,E@hmf3@cmf !s&AiF8>;)!<;Nf!!)Ke!"\Mu!:Kmfn*^5Vmf3@V!!*#errE#drr<8l!!)KV!!)rcrrE)frr=G8 !!)KV!!)Hf!:Kmfn*^5Vmf3@Vmf3@Vmf3@Vmf3@Vmf3@V!!)Ke!;u !s&AiFntM+!<;Nf!!)Ke!"\Mu!:Kmfn*^5Vmf3@V!!*#errE#drr<8l!!)KV!!)rcrrE)frr=G8 !!)KV!!)Hf!:Kmfn*^5Vmf3@Vmf3@Vmf3@Vmf3@Vmf3@V!!)Ke!;u !s&AiF8>;)!<;Nf!!)Ke!"\Mu!:Kmfn*^5Vmf3@V!!*#errE#drr<8l!!)KV!!)rcrrE)frr=G8 !!)KV!!)Hf!:Kmfn*^5Vmf3@Vmf3@Vmf3@Vmf3@Vmf3@V!!)Ke!;u !s&AiF8>;)!<;Nf!!_ll!:T@V!;u!lk5PD]MuNbW[f?Bj"on%MN;rqOn,J@Hrrhe3mrJJZ~> !s&AiFntM+!<;Nf!!_ll!:T@V!;u!lk5PD]MuNbW[f?Bj"on%ONrT.Qn,JFJrrhe5mr\V\~> !s&AiF8>;)!<;Nf!!_ll!:T@V!;u!lk5PD]MuNbW[f?Bj"on%MN;rqOn,J@Hrrhe3mrJJZ~> !s&AiF8>;%!!r#n!:T@V!:TCS!"&)o!:T@V!:KmfrU0^drpT^aqX=C`s6ogb"7H3in,!(dmf3@b n,ECfn,!(hmf3@Vmf3@cn,ECfn,ECfn,EA)mf3@Vmf3@V!!)KV!!)Hf!:T@V!:Kmfn,!*mmfNNZ SE^(Q!<)rs!<<)u!!WB&s8N*!rW)uurrE*!rrE*!quH`rrW)osrW)]m!!lr;Z`rrVuisrr;osr;Q`spAb$js8W&u rVllus8E#ts8E#ts82lmrrE-"rW)rt! !s&AiFntM'!!r#n!:T@V!:TCS!"&)o!:T@V!:KmfrU0^drpT^aqX=C`s6ogb"7H3in,!(dmf3@b n,ECfn,!(hmf3@Vmf3@cn,ECfn,ECfn,EA)mf3@Vmf3@V!!)KV!!)Hf!:T@V!:Kmfn,!*mmfNNX Rd'kO!<)rs!<<)u!!WB&s8N*!rW)uurrE*!rrE*!quH`rrW)osrW)]m!!lr;Z`rrVuisrr;osr;Q`spAb$js8W&u rVllus8E#ts8E#ts82lmrrE-"rW)rt!p@&$As8N5j FmjGQJ,~> !s&AiF8>;%!!r#n!:T@V!:TCS!"&)o!:T@V!:KmfrU0^drpT^aqX=C`s6ogb"7H3in,!(dmf3@b n,ECfn,!(hmf3@Vmf3@cn,ECfn,ECfn,EA)mf3@Vmf3@V!!)KV!!)Hf!:T@V!:Kmfn,!*mmfNNZ SE^(Q!<)rs!<<)u!!WB&s8N*!rW)uurrE*!rrE*!quH`rrW)osrW)]m!!lr;Z`rrVuisrr;osr;Q`spAb$js8W&u rVllus8E#ts8E#ts82lmrrE-"rW)rt! !s&AiF8GA*!<)Bb!<;Nf!"&)o!:T@V!:KmfrpTgdrU9adrpTjep$_k[!q-*hr9sXc!q-*hr9sXc qsXObs6osfr9sXcs6osfr9sXcs6osfs6osf)XdY+n*^5Vmf3@Vmf3@V!!)KV!!)Hf!:KmfZ0qbo S=JmE!!*#u!s&B$!<3!*!<<'!rrE'!s8N)urrW9$rrE&u!!*#u!!)rs!!*#u!s&B$!<2uu!;HKn !;uis!<2uu!;lcr!<)ot!;-9k!<)ot!<2uu!;lcu!<<'!rr2ruq#: !s&AiFo(S,!<)Bb!<;Nf!"&)o!:T@V!:KmfrpTgdrU9adrpTjep$_k[!q-*hr9sXc!q-*hr9sXc qsXObs6osfr9sXcs6osfr9sXcs6osfs6osf)XdY+n*^5Vmf3@Vmf3@V!!)KV!!)Hf!:KmfZ0qbo R[WOA!!*#u!s&B$!<3!*!<<'!rrE'!s8N)urrW9$rrE&u!!*#u!!)rs!!*#u!s&B$!<2uu!;HKn !;uis!<2uu!;lcr!<)ot!;-9k!<)ot!<2uu!;lcu!<<'!rr2ruq#:p@&$As8N5j FmjGQJ,~> !s&AiF8GA*!<)Bb!<;Nf!"&)o!:T@V!:KmfrpTgdrU9adrpTjep$_k[!q-*hr9sXc!q-*hr9sXc qsXObs6osfr9sXcs6osfr9sXcs6osfs6osf)XdY+n*^5Vmf3@Vmf3@V!!)KV!!)Hf!:KmfZ0qbo S=JmE!!*#u!s&B$!<3!*!<<'!rrE'!s8N)urrW9$rrE&u!!*#u!!)rs!!*#u!s&B$!<2uu!;HKn !;uis!<2uu!;lcr!<)ot!;-9k!<)ot!<2uu!;lcu!<<'!rr2ruq#: !s&AiF8GA*!<)Bb!<;Nf!"&)o!:T@V!:KmfrpTgdrpTjerU9ads6osfr9sXcs6osf*:Ek-n*^5V mf3@V!!)KV!!)Hf!:T@V!:T@V!:Tmes6osf"7H3in,<=bn,ECfn,ECfn,E@pmf3@Vmf3@V!!)Ke !!DZi!:Tme(%2,&mf3@Vmf3@Vmf3@Vmf3@Vmf3@(mf`Z\SH&We!<<)s!;QQo!;lcr!<3!*!<<'! rrE'!s8N)urrW9$rrE&u!!*#u!!)rsquH`rrW)Zl!!)rsquH`rr;cfr!!)Zk!!)ut!!*#u!!*#u r;clt!!*#u!!)fo!!*#u!!*#ur;cis!!)rs!!*#u!!)`m!!)ut!!*#u!!)fo!!)lqr;cisrW)rt quHNl!!*#u!!*#u!!)]l!!*#u!s&B$!<3!#!<<'!rr3$"s8VusrVlitrVlitrr3'#s8N)qs8;rr rr<&lrr<&qrr<&srr<&rs8E#srr<&lrr<&urr<&urr<&srr<&urrW9$rrE&u!!*#u!!)orr;clt "9AH%rrDfnr;cis!!)rs!!*#u!s&B$!<3!)!<<'!rrE'!s8Vuss8N'!rr2rurr2ru[f?Bj"on%M N;rqOn,J@Hrrhe3mrJJZ~> !s&AiFo(S,!<)Bb!<;Nf!"&)o!:T@V!:KmfrpTgdrpTjerU9ads6osfr9sXcs6osf*:Ek-n*^5V mf3@V!!)KV!!)Hf!:T@V!:T@V!:Tmes6osf"7H3in,<=bn,ECfn,ECfn,E@pmf3@Vmf3@V!!)Ke !!DZi!:Tme(%2,&mf3@Vmf3@Vmf3@Vmf3@Vmf3@(mf`ZZRfEEc!<<)s!;QQo!;lcr!<3!*!<<'! rrE'!s8N)urrW9$rrE&u!!*#u!!)rsquH`rrW)Zl!!)rsquH`rr;cfr!!)Zk!!)ut!!*#u!!*#u r;clt!!*#u!!)fo!!*#u!!*#ur;cis!!)rs!!*#u!!)`m!!)ut!!*#u!!)fo!!)lqr;cisrW)rt quHNl!!*#u!!*#u!!)]l!!*#u!s&B$!<3!#!<<'!rr3$"s8VusrVlitrVlitrr3'#s8N)qs8;rr rr<&lrr<&qrr<&srr<&rs8E#srr<&lrr<&urr<&urr<&srr<&urrW9$rrE&u!!*#u!!)orr;clt "9AH%rrDfnr;cis!!)rs!!*#u!s&B$!<3!)!<<'!rrE'!s8Vuss8N'!rr2rurr2ru[f?Bj"on%O NrT.Qn,JFJrrhe5mr\V\~> !s&AiF8GA*!<)Bb!<;Nf!"&)o!:T@V!:KmfrpTgdrpTjerU9ads6osfr9sXcs6osf*:Ek-n*^5V mf3@V!!)KV!!)Hf!:T@V!:T@V!:Tmes6osf"7H3in,<=bn,ECfn,ECfn,E@pmf3@Vmf3@V!!)Ke !!DZi!:Tme(%2,&mf3@Vmf3@Vmf3@Vmf3@Vmf3@(mf`Z\SH&We!<<)s!;QQo!;lcr!<3!*!<<'! rrE'!s8N)urrW9$rrE&u!!*#u!!)rsquH`rrW)Zl!!)rsquH`rr;cfr!!)Zk!!)ut!!*#u!!*#u r;clt!!*#u!!)fo!!*#u!!*#ur;cis!!)rs!!*#u!!)`m!!)ut!!*#u!!)fo!!)lqr;cisrW)rt quHNl!!*#u!!*#u!!)]l!!*#u!s&B$!<3!#!<<'!rr3$"s8VusrVlitrVlitrr3'#s8N)qs8;rr rr<&lrr<&qrr<&srr<&rs8E#srr<&lrr<&urr<&urr<&srr<&urrW9$rrE&u!!*#u!!)orr;clt "9AH%rrDfnr;cis!!)rs!!*#u!s&B$!<3!)!<<'!rrE'!s8Vuss8N'!rr2rurr2ru[f?Bj"on%M N;rqOn,J@Hrrhe3mrJJZ~> !s&AiF8GA*!<)Bb!<;Nf!<;Ne!!)Kd!<)Bd!<2Hb!<;Nd!;c0_!<2Hc!<;Nf!<;Nd!<2Hc!<)Bd !<;Nd!<2He!!;Th!;u !s&AiFo(S,!<)Bb!<;Nf!<;Ne!!)Kd!<)Bd!<2Hb!<;Nd!;c0_!<2Hc!<;Nf!<;Nd!<2Hc!<)Bd !<;Nd!<2He!!;Th!;u !s&AiF8GA*!<)Bb!<;Nf!<;Ne!!)Kd!<)Bd!<2Hb!<;Nd!;c0_!<2Hc!<;Nf!<;Nd!<2Hc!<)Bd !<;Nd!<2He!!;Th!;u !s&AiF5H?c!.jUTmfNNZSEg+S!<3!#!<<'!rr3<*s8N*!!<3'!rrE&u!s&B$!<2uu!<2uu!<3!" !<3&urrW9$rrE&u!!)cn!!)rs!!*#u!s&B$!<2uu!<)ot!;-9k!<)ot!<3!#!<<'!rr3'#s8N)u rr<&orr<&urrW9$rrE&u!!*#u!!*#u!W`6#rr2rupAY*mrVlitrr2ruq#: !s&AiFl)Qe!.jUTmfNNXRd0nQ!<3!#!<<'!rr3<*s8N*!!<3'!rrE&u!s&B$!<2uu!<2uu!<3!" !<3&urrW9$rrE&u!!)cn!!)rs!!*#u!s&B$!<2uu!<)ot!;-9k!<)ot!<3!#!<<'!rr3'#s8N)u rr<&orr<&urrW9$rrE&u!!*#u!!*#u!W`6#rr2rupAY*mrVlitrr2ruq#: !s&AiF5H?c!.jUTmfNNZSEg+S!<3!#!<<'!rr3<*s8N*!!<3'!rrE&u!s&B$!<2uu!<2uu!<3!" !<3&urrW9$rrE&u!!)cn!!)rs!!*#u!s&B$!<2uu!<)ot!;-9k!<)ot!<3!#!<<'!rr3'#s8N)u rr<&orr<&urrW9$rrE&u!!*#u!!*#u!W`6#rr2rupAY*mrVlitrr2ruq#: !s&AiF5QHd!.jUTmfNNZSE^(Q!<)rs!<<*!!!WB&rr<'!r;cfrrW!!!!<3#t!<3#t!<)rs!;HNl !<)rs!<)rs!!<0#s8)fls8)frs8E#ss8E!#rrE*!rW!!!!;ZZn!<)rs!!3*"rr;rt!<<#u!<<#u q>^?m!<<#us8W*!q#C !s&AiFl2Zf!.jUTmfNNXRd'kO!<)rs!<<*!!!WB&rr<'!r;cfrrW!!!!<3#t!<3#t!<)rs!;HNl !<)rs!<)rs!!<0#s8)fls8)frs8E#ss8E!#rrE*!rW!!!!;ZZn!<)rs!!3*"rr;rt!<<#u!<<#u q>^?m!<<#us8W*!q#C !s&AiF5QHd!.jUTmfNNZSE^(Q!<)rs!<<*!!!WB&rr<'!r;cfrrW!!!!<3#t!<3#t!<)rs!;HNl !<)rs!<)rs!!<0#s8)fls8)frs8E#ss8E!#rrE*!rW!!!!;ZZn!<)rs!!3*"rr;rt!<<#u!<<#u q>^?m!<<#us8W*!q#C !s&AiF5ZNe!.jUSmfNNZSCRW>!0[?^!.k0Err<&`rr<&Hrr<%bs8V6cs6ko*s8Vf]s,@!X"RgF# Er^^~> !s&AiFl;`g!.jUSmfNNXRaqE !s&AiF5ZNe!.jUSmfNNZSCRW>!0[?^!.k0Err<&`rr<&Hrr<%bs8V6cs6ko*s8Vf]s,@!X"RgF# Er^^~> !s&AiF+NeNmfNNZSCRW>!0[?^!.k0Err<&`rr<&Hrr<%bs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> !s&AiFb0"PmfNNXRaqE !s&AiF+NeNmfNNZSCRW>!0[?^!.k0Err<&`rr<&Hrr<%bs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> !s&AiF+NeNmfNNZSC[`>!0mN_!.k0Gs8E#cs8E#Is8E"`s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> !s&AiFb0"PmfNNXRb%N !s&AiF+NeNmfNNZSC[`>!0mN_!.k0Gs8E#cs8E#Is8E"`s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiFb0"PmfNNXRXtKis+13$s3L`Fk6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiF+NeNmfNNZSBh06!9O7\!:0[b!9=+Z!.k0$s+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> !s&AiFb0"PmfNNXRa1s4!9O7\!:0[b!9=+Z!.k0$s+14)s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> !s&AiF+NeNmfNNZSBh06!9O7\!:0[b!9=+Z!.k0$s+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> !s&AiF+NeNmfNNZSFHOY!<)rs!9O4\!<3#t!:'Rb!<;rspAY*mr;Q`sir8uYJcC<$JcFL)s5sRc mu35*s7Yp]N;rn\mrRr=!.Y~> !s&AiFb0"PmfNNXRdg=W!<)rs!9O4\!<3#t!:'Rb!<;rspAY*mr;Q`sir8uYJcC<$JcFL)s5sRc muEG.s7Yp]NrT+^mre)A!.Y~> !s&AiF+NeNmfNNZSFHOY!<)rs!9O4\!<3#t!:'Rb!<;rspAY*mr;Q`sir8uYJcC<$JcFL)s5sRc mu35*s7Yp]N;rn\mrRr=!.Y~> !s&AiF+NeNmfNNZSFHOY!;uis!9F.[!<)ot!9sLg!<<'!s8N'!p\t3nr;Q`sir8uYJcC<$JcFL) s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> !s&AiFb0"PmfNNXRdg=W!;uis!9F.[!<)ot!9sLg!<<'!s8N'!p\t3nr;Q`sir8uYJcC<$JcFL) s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> !s&AiF+NeNmfNNZSFHOY!;uis!9F.[!<)ot!9sLg!<<'!s8N'!p\t3nr;Q`sir8uYJcC<$JcFL) s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> !s&AiF+NeNmfNNZSGrQf!!E6$s8W&urr;lrs8N'!qZ$NprVuisrr;osr;Q`srVlitqZ$Nprr;os rVufrs8N'!rr3$"s8W#trr;lrs8N0$rr<&_s8;rss8E"Ls+13$s5F"Xk6:nSN/[f:p@&$?s8N5j F74/MJ,~> !s&AiFb0"PmfNNXRfp@&$As8N5j FmjGQJ,~> !s&AiF+NeNmfNNZSGrQf!!E6$s8W&urr;lrs8N'!qZ$NprVuisrr;osr;Q`srVlitqZ$Nprr;os rVufrs8N'!rr3$"s8W#trr;lrs8N0$rr<&_s8;rss8E"Ls+13$s5F"Xk6:nSN/[f:p@&$?s8N5j F74/MJ,~> !s&AiF+NeNmfi`]SH&Thrr3'#s8N)urr<&urr<&srr<&rrr<&urrW9$rrE&u!!)or!!)ut!!)ut !!)or!!*#u!!)or!s&B$!<3!'!<<'!s8N'!qu6Wrrr2rur;Zcss8N'!q#C6lq#: !s&AiFb0"Pmfi`[RfEBfrr3'#s8N)urr<&urr<&srr<&rrr<&urrW9$rrE&u!!)or!!)ut!!)ut !!)or!!*#u!!)or!s&B$!<3!'!<<'!s8N'!qu6Wrrr2rur;Zcss8N'!q#C6lq#:p@&$As8N5jFmjGQJ,~> !s&AiF+NeNmfi`]SH&Thrr3'#s8N)urr<&urr<&srr<&rrr<&urrW9$rrE&u!!)or!!)ut!!)ut !!)or!!*#u!!)or!s&B$!<3!'!<<'!s8N'!qu6Wrrr2rur;Zcss8N'!q#C6lq#: !s&AiF+NeNmfi`]SH&Thrr3$"s8Vusrr2rur;Q`squ6Wrrr3'#s8N)qs8;rrrr<&trr<&rrr<&u rr<&us8;rtrr<&urrN3#s8;rrs8;rsrr<&srr<&urr<&arr<&urrW9$rrE&u!!%TMJcC<$irB&A "on%MN;rqOn,J@Hrrhe3mrJJZ~> !s&AiFb0"Pmfi`[RfEBfrr3$"s8Vusrr2rur;Q`squ6Wrrr3'#s8N)qs8;rrrr<&trr<&rrr<&u rr<&us8;rtrr<&urrN3#s8;rrs8;rsrr<&srr<&urr<&arr<&urrW9$rrE&u!!%TMJcC<$irB&A "on%ONrT.Qn,JFJrrhe5mr\V\~> !s&AiF+NeNmfi`]SH&Thrr3$"s8Vusrr2rur;Q`squ6Wrrr3'#s8N)qs8;rrrr<&trr<&rrr<&u rr<&us8;rtrr<&urrN3#s8;rrs8;rsrr<&srr<&urr<&arr<&urrW9$rrE&u!!%TMJcC<$irB&A "on%MN;rqOn,J@Hrrhe3mrJJZ~> !s&AiF+NeNmfi`]SH&Thrr3'#s8N)qrr<&srr<&urrW9$rrE&u!s&B$!;lcr!<2uu!<)ot!<)ot !<3!#!<<'!rr3'#s8N)urrW9$rrE&u!s&B$!;lcr!<2uu!<2uu!;uis!<2uu!;QTl!;QQo!<3!# !<<'!rr2ruJcC<$JcFa0s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> !s&AiFb0"Pmfi`[RfEBfrr3'#s8N)qrr<&srr<&urrW9$rrE&u!s&B$!;lcr!<2uu!<)ot!<)ot !<3!#!<<'!rr3'#s8N)urrW9$rrE&u!s&B$!;lcr!<2uu!<2uu!;uis!<2uu!;QTl!;QQo!<3!# !<<'!rr2ruJcC<$JcFa0s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> !s&AiF+NeNmfi`]SH&Thrr3'#s8N)qrr<&srr<&urrW9$rrE&u!s&B$!;lcr!<2uu!<)ot!<)ot !<3!#!<<'!rr3'#s8N)urrW9$rrE&u!s&B$!;lcr!<2uu!<2uu!;uis!<2uu!;QTl!;QQo!<3!# !<<'!rr2ruJcC<$JcFa0s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> !s&AiF+NeNmfi`]SH&Thrr3'#s8N)urr<&urr<&urrN3#!<3!#!<<'!rr3'#s8N)urrW9$rrE&u !!)ut!!)ut!!*#u!s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrDrr!!*#u!!*#u!!*#u!W`6#rr2ru lMgharr3'#s8N)urr<%Ms+13$s5O(Yk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiFb0"Pmfi`[RfEBfrr3'#s8N)urr<&urr<&urrN3#!<3!#!<<'!rr3'#s8N)urrW9$rrE&u !!)ut!!)ut!!*#u!s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrDrr!!*#u!!*#u!!*#u!W`6#rr2ru lMgharr3'#s8N)urr<%Ms+13$s5O(Yk6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF+NeNmfi`]SH&Thrr3'#s8N)urr<&urr<&urrN3#!<3!#!<<'!rr3'#s8N)urrW9$rrE&u !!)ut!!)ut!!*#u!s&B$!<3!#!<<'!rr3'#s8N)urrW9$rrDrr!!*#u!!*#u!!*#u!W`6#rr2ru lMgharr3'#s8N)urr<%Ms+13$s5O(Yk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiF+NeNmfNNZSGrQe!<3#t!;ulr!!*&r!<3#t!<)rs!<)rs!!<0#s7HBks8E#ss8E!#rrE*! rVuruquHZprW!!!!<3#t!!*&u!!*&u!:'U`!!E6$s8W&uJcC<$JcF^/s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> !s&AiFb0"PmfNNXRf !s&AiF+NeNmfNNZSGrQe!<3#t!;ulr!!*&r!<3#t!<)rs!<)rs!!<0#s7HBks8E#ss8E!#rrE*! rVuruquHZprW!!!!<3#t!!*&u!!*&u!:'U`!!E6$s8W&uJcC<$JcF^/s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> !s&AiF+NeNmfNNZSGW !s&AiFb0"PmfNNXRf!*b!.k0$s+13$s475Mk6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF+NeNmfNNZSGW !s&AiF+NeNmfNNZSGW !s&AiFb0"PmfNNXRf!*b!.k0$s+13$s475Mk6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF+NeNmfNNZSGW !s&AiF855%!;Q$_!:fOX!;Z*_!:0+R!<;Nf!7^K2N;2l@!9*DH!9 !s&AiFnkG'!;Q$_!:fOX!;Z*_!:0+R!<;Nf!7^K2Nqi)B!9*DH!9 !s&AiF855%!;Q$_!:fOX!;Z*_!:0+R!<;Nf!7^K2N;2l@!9*DH!9 !s&AiF8>;)!<2He!;Z*`!:fOX!;c0a!9rtP!7:3/Mu`nRn,EC&n,EC\mfNNZS:U]ks+13$s3L`F k6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiFntM+!<2He!;Z*`!:fOX!;c0a!9rtP!7:3/NWB+Tn,EC&n,EC\mfNNXRXtKis+13$s3L`F k6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF8>;)!<2He!;Z*`!:fOX!;c0a!9rtP!7:3/Mu`nRn,EC&n,EC\mfNNZS:U]ks+13$s3L`F k6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiF8>;)!<2He!<;Nd!<;Nf!<;Nd!<2Hc!<;Nd!;u !s&AiFntM+!<2He!<;Nd!<;Nf!<;Nd!<2Hc!<;Nd!;u !s&AiF8>;)!<2He!<;Nd!<;Nf!<;Nd!<2Hc!<;Nd!;u !s&AiF855'!<)Bd!<;Nf!#4l%!:Kmfn*^5Vmf3@Vmf3@Vmf3@an,ECfn,ECfn,E@fn,<;)mf3@V !!)KV!!)KV!!)KV!!)Hf!:T@V!:Tme$1@iomf3@Vmf3@Pn,J@CXoJFsn,ECfn,ECfn,EA%mf3@V mf3@V!!)KV!!)Hf!:T@V!;u !s&AiFnkG)!<)Bd!<;Nf!#4l%!:Kmfn*^5Vmf3@Vmf3@Vmf3@an,ECfn,ECfn,E@fn,<;)mf3@V !!)KV!!)KV!!)KV!!)Hf!:T@V!:Tme$1@iomf3@Vmf3@Pn,JFE0`V1Kn,ECfn,ECfn,EA%mf3@V mf3@V!!)KV!!)Hf!:T@V!;u !s&AiF855'!<)Bd!<;Nf!#4l%!:Kmfn*^5Vmf3@Vmf3@Vmf3@an,ECfn,ECfn,E@fn,<;)mf3@V !!)KV!!)KV!!)KV!!)Hf!:T@V!:Tme$1@iomf3@Vmf3@Pn,J@CA,lT)n,ECfn,ECfn,EA%mf3@V mf3@V!!)KV!!)Hf!:T@V!;u !s&AiF8#)%!<;Nf!<;Nf!"A;r!:Kmfn*^5Vmf3@bn,ECan,ECfn,ECfn,E@omf3@Vmf3@V!!)ob rrE)frr/qQ9etq="=`s6osfs6osf!q-*hr9sXcs6osf!:Tme q="=`#4DNln*^5Vr9sXcr9sXcs6osf%IX8sn*^5Vmf3@Vmf3@cmfNNZSF?IX!:0Xb!:^!g!;uis !:g'h!9*qX!;uis!9sLg!<<'!s8N'!p\t3nr;Q`sJcC<$JcGTHs5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> !s&AiFnY;'!<;Nf!<;Nf!"A;r!:Kmfn*^5Vmf3@bn,ECan,ECfn,ECfn,E@omf3@Vmf3@V!!)ob rrE)frr1qCqsLq="=`s6osfs6osf!q-*hr9sXcs6osf!:Tme q="=`#4DNln*^5Vr9sXcr9sXcs6osf%IX8sn*^5Vmf3@Vmf3@cmfNNXRd^7V!:0Xb!:^!g!;uis !:g'h!9*qX!;uis!9sLg!<<'!s8N'!p\t3nr;Q`sJcC<$JcGTHs5sRcmuEG.s7Yp]NrT+^mre)A !.Y~> !s&AiF8#)%!<;Nf!<;Nf!"A;r!:Kmfn*^5Vmf3@bn,ECan,ECfn,ECfn,E@omf3@Vmf3@V!!)ob rrE)frr/qIBR*q="=`s6osfs6osf!q-*hr9sXcs6osf!:Tme q="=`#4DNln*^5Vr9sXcr9sXcs6osf%IX8sn*^5Vmf3@Vmf3@cmfNNZSF?IX!:0Xb!:^!g!;uis !:g'h!9*qX!;uis!9sLg!<<'!s8N'!p\t3nr;Q`sJcC<$JcGTHs5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> !s&AiF7o#$!!)Kb!!DZi!:Tdb!q-*hqsXObqX=Fas6osfs6osf$1@ion*^5Vmf3@bn,ECfn,E@s mf3@Vmf3@V!!)KV!!*#erW)0Ns,?fVs8Vo`rrE)frrE)frr<,h!!)rcrrE)frrE&erW)iarr<8l !!)KV!!)rcrrDucrrE)frr<;m!!)KV!!)Kb!;u9es.#VJrr<&ss8E#ts8;rrs8;p!rrE)u!<3#s !<3#r!<<'$!<3$!p&>!lmf37d"9/B$s8E#ts82lsrr<&qs8E#ts8;rrs8;rtrr<&urrN3#s8;rs s82lsrrW9$!!%TMJcC<$rVuo\"on%MN;rqOn,J@Hrrhe3mrJJZ~> !s&AiFnP5&!!)Kb!!DZi!:Tdb!q-*hqsXObqX=Fas6osfs6osf$1@ion*^5Vmf3@bn,ECfn,E@s mf3@Vmf3@V!!)KV!!*#erW)0Ns,Qq0s8Vo`rrE)frrE)frr<,h!!)rcrrE)frrE&erW)iarr<8l !!)KV!!)rcrrDucrrE)frr<;m!!)KV!!)Kb!;u9es-fDFrr<&ss8E#ts8;rrs8;p!rrE)u!<3#s !<3#r!<<'$!<3$!p&>!lmf37d"9/B$s8E#ts82lsrr<&qs8E#ts8;rrs8;rtrr<&urrN3#s8;rs s82lsrrW9$!!%TMJcC<$rVuo\"on%ONrT.Qn,JFJrrhe5mr\V\~> !s&AiF7o#$!!)Kb!!DZi!:Tdb!q-*hqsXObqX=Fas6osfs6osf$1@ion*^5Vmf3@bn,ECfn,E@s mf3@Vmf3@V!!)KV!!*#erW)0Ns,?eas8Vo`rrE)frrE)frr<,h!!)rcrrE)frrE&erW)iarr<8l !!)KV!!)rcrrDucrrE)frr<;m!!)KV!!)Kb!;u9es.#VJrr<&ss8E#ts8;rrs8;p!rrE)u!<3#s !<3#r!<<'$!<3$!p&>!lmf37d"9/B$s8E#ts82lsrr<&qs8E#ts8;rrs8;rtrr<&urrN3#s8;rs s82lsrrW9$!!%TMJcC<$rVuo\"on%MN;rqOn,J@Hrrhe3mrJJZ~> !s&AiF8>;)!<2He!!;Th!;u !s&AiFntM+!<2He!!;Th!;up@&$As8N5j FmjGQJ,~> !s&AiF8>;)!<2He!!;Th!;u !s&AiF8>;)!<2He!$1M.!:T@V!:Kmfmf3@Vmf3@V!!)KV!!)KV!!)Hfr9sXcs6osf!:Tme'(5f# n*^5Vmf3@Vmf3@Vmf3@VrW")0!!)KV!!)Hf!:T@V!:Kmfn*^5Vn*^5Vn*^5Vn*^5Vp$_p>qQ9et q="=`s6osfs6osf$L[rpn*^5Vmf3@VrW!/k!!)KV!!)rcrr<8l!!)KV!!)rcrrE)frr !s&AiFntM+!<2He!$1M.!:T@V!:Kmfmf3@Vmf3@V!!)KV!!)KV!!)Hfr9sXcs6osf!:Tme'(5f# n*^5Vmf3@Vmf3@Vmf3@VrW")0!!)KV!!)Hf!:T@V!:Kmfn*^5Vn*^5Vn*^5Vn*^5Vp$_p@qCqsL q="=`s6osfs6osf$L[rpn*^5Vmf3@VrW!/k!!)KV!!)rcrr<8l!!)KV!!)rcrrE)frr !s&AiF8>;)!<2He!$1M.!:T@V!:Kmfmf3@Vmf3@V!!)KV!!)KV!!)Hfr9sXcs6osf!:Tme'(5f# n*^5Vmf3@Vmf3@Vmf3@VrW")0!!)KV!!)Hf!:T@V!:Kmfn*^5Vn*^5Vn*^5Vn*^5Vp$_p>qIBR* q="=`s6osfs6osf$L[rpn*^5Vmf3@VrW!/k!!)KV!!)rcrr<8l!!)KV!!)rcrrE)frr !s&AiF855%!<2Hc!<;Nf!<;Nd!<2Hc!<)Bd!;l6b!<2He!"85q!:Kmfn*^5Vn*g2TrU9ad"RcqQ9etq="=`rpTdcrpTdcrpTje"Rc !s&AiFnkG'!<2Hc!<;Nf!<;Nd!<2Hc!<)Bd!;l6b!<2He!"85q!:Kmfn*^5Vn*g2TrU9ad"Rc !s&AiF855%!<2Hc!<;Nf!<;Nd!<2Hc!<)Bd!;l6b!<2He!"85q!:Kmfn*^5Vn*g2TrU9ad"RcqIBR*q="=`rpTdcrpTdcrpTje"Rc !s&AiF+Wl\N;3FNmfNNZSF?IX!<)ot!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!s&B$!<2uu!<2uu !<3!"!<3&urr<&mrr<&frr<&urrW9$rrE&u!!*#u!!*#u!W`6#rr3'#s8N)urrW9$rrE&u!s&B$ !<3!#!<<'!qu6Wrrr2rurr2rurr3$"rrE&u!!%TMJcC<$rr<#]"on%MN;rqOn,J@Hrrhe3mrJJZ~> !s&AiFb9)^NqiXPmfNNXRd^7V!<)ot!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!s&B$!<2uu!<2uu !<3!"!<3&urr<&mrr<&frr<&urrW9$rrE&u!!*#u!!*#u!W`6#rr3'#s8N)urrW9$rrE&u!s&B$ !<3!#!<<'!qu6Wrrr2rurr2rurr3$"rrE&u!!%TMJcC<$rr<#]"on%ONrT.Qn,JFJrrhe5mr\V\~> !s&AiF+Wl\N;3FNmfNNZSF?IX!<)ot!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!s&B$!<2uu!<2uu !<3!"!<3&urr<&mrr<&frr<&urrW9$rrE&u!!*#u!!*#u!W`6#rr3'#s8N)urrW9$rrE&u!s&B$ !<3!#!<<'!qu6Wrrr2rurr2rurr3$"rrE&u!!%TMJcC<$rr<#]"on%MN;rqOn,J@Hrrhe3mrJJZ~> !s&AiF+Wi\N;*@MmfNNZSFQXV!<<)u!<)rs!!E6$s8W&u!ri9#r;cfrrW!!!!<3#t!!*&u!!*&u !;?Em!:Tsd!<3#t!;ulr!!*&r!<3#t!<)rs!!E6$s8W&u!<;rsr;Z`r!WN0!s8Duus8Duus8E"L s+13$s8W-!k6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiFb9&^Nq`ROmfNNXRdpFT!<<)u!<)rs!!E6$s8W&u!ri9#r;cfrrW!!!!<3#t!!*&u!!*&u !;?Em!:Tsd!<3#t!;ulr!!*&r!<3#t!<)rs!!E6$s8W&u!<;rsr;Z`r!WN0!s8Duus8Duus8E"L s+13$s8W-!k6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF+Wi\N;*@MmfNNZSFQXV!<<)u!<)rs!!E6$s8W&u!ri9#r;cfrrW!!!!<3#t!!*&u!!*&u !;?Em!:Tsd!<3#t!;ulr!!*&r!<3#t!<)rs!!E6$s8W&u!<;rsr;Z`r!WN0!s8Duus8Duus8E"L s+13$s8W-!k6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiF+NeNmfNNZSCRW>!65$=!.k0$s+13[s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> !s&AiFb0"PmfNNXRaqE !s&AiF+NeNmfNNZSCRW>!65$=!.k0$s+13[s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> !s&AiF+NeNmfNNZSCRW>!65$=!.k0$s+13[s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> !s&AiFb0"PmfNNXRaqE !s&AiF+NeNmfNNZSCRW>!65$=!.k0$s+13[s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> !s&AiF+NeNmfNNZSC[`>!6Y?@!.k0$s+13Zs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> !s&AiFb0"PmfNNXRb%N !s&AiF+NeNmfNNZSC[`>!6Y?@!.k0$s+13Zs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiFb0"PmfNNXRXtKis+13$s3L`Fk6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiFb0"PmfNNXRXtKis+13$s3L`Fk6:nSNfO/>p@&$As8N5jFmjGQJ,~> !s&AiF+NeNmfNNZS:U]ks+13$s3L`Fk6:nSN/[f:p@&$?s8N5jF74/MJ,~> !s&AiF+NeNmfNNZS>uSh!;ulr!.k0$s+13Rs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> !s&AiFb0"PmfNNXR]?Af!;ulr!.k0$s+13Rs8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> !s&AiF+NeNmfNNZS>uSh!;ulr!.k0$s+13Rs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> !s&AiF+NeNmfNNZSBLp4!9*qX!;c]q!.k0$s+13Rs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> !s&AiFb0"PmfNNXR`k^2!9*qX!;c]q!.k0$s+13Rs8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> !s&AiF+NeNmfNNZSBLp4!9*qX!;c]q!.k0$s+13Rs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> !s&AiF+O@ss6T1Us.#VLs8;rsrrE-"rW)rtrW!'#!<<)u!;6?l!:Kmd!!E6$s8W&urr;lrrr3$" rrE&u! !s&AiFb0Rus6T1Us-fDHs8;rsrrE-"rW)rtrW!'#!<<)u!;6?l!:Kmd!!E6$s8W&urr;lrrr3$" rrE&u! !s&AiF+O@ss6T1Us.#VLs8;rsrrE-"rW)rtrW!'#!<<)u!;6?l!:Kmd!!E6$s8W&urr;lrrr3$" rrE&u! "9AJjF8pf][%%0sn*Z,:n,JoJmJd.drr2rur;Q`srr3'#s8N)urr<&nrr<&err<&urrW9$rrE&u !!*#u!!)or!W`6#rVlitr;Q`srr3'#s8N)urr<%Ms+13$s2P*=k6:nSN/[f:p@&$?s8N5jF74/M J,~> "9AJjFoR#][$h$qn*Z2p@&$As8N5jFmjGQ J,~> "9AJjF8pf][%%0sn*Z,:n,JoJmJd.drr2rur;Q`srr3'#s8N)urr<&nrr<&err<&urrW9$rrE&u !!*#u!!)or!W`6#rVlitr;Q`srr3'#s8N)urr<%Ms+13$s2P*=k6:nSN/[f:p@&$?s8N5jF74/M J,~> "9AJjF8pf][@@<]s6oE8"TRrjS=K*Kr;cis!!)rs!!*#u!!*#urW)]m!!)orquHNl!!*#u!W`9# quH`r!!)rsquH`r!!)rs!!*#u!!*#urW%NLJcC<$`W,u$"on%MN;rqOn,J@Hrrhe3mrJJZ~> "9AJjFoR#][@.0[s6oE:"TRrjR[WaGr;cis!!)rs!!*#u!!*#urW)]m!!)orquHNl!!*#u!W`9# quH`r!!)rsquH`r!!)rs!!*#u!!*#urW%NLJcC<$`W,u$"on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF8pf][@@<]s6oE8"TRrjS=K*Kr;cis!!)rs!!*#u!!*#urW)]m!!)orquHNl!!*#u!W`9# quH`r!!)rsquH`r!!)rs!!*#u!!*#urW%NLJcC<$`W,u$"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lF8qc#JYflQs5sLamu35%mf8=Cn,NCin,JoJnc&Rhrr2rurr2rur;Q`srr2ruqu6Wrp\t3n mf*7err3'#s8N)qrr<&srr<&urr<&urr<&srr<&urr<&rrr<%Ms+13$s2P*=k6:nSN/[f:p@&$? s8N5jF74/MJ,~> "p"\lFoRo!J\JY.s5sLamuEG)mf8CEn,NCin,JiFnc&Rhrr2rurr2rur;Q`srr2ruqu6Wrp\t3n mf*7err3'#s8N)qrr<&srr<&urr<&urr<&srr<&urr<&rrr<%Ms+13$s2P*=k6:nSNfO/>p@&$A s8N5jFmjGQJ,~> "p"\lF8qc#JcE7[s5sLamu35%mf8=Cn,NCin,JoJnc&Rhrr2rurr2rur;Q`srr2ruqu6Wrp\t3n mf*7err3'#s8N)qrr<&srr<&urr<&urr<&srr<&urr<&rrr<%Ms+13$s2P*=k6:nSN/[f:p@&$? s8N5jF74/MJ,~> #6=emF8qc#V1D7M8d6a-kPt"0N;N&Es,?gCs8N2is.#VLrr<&urr<&urr<&srr<&urrW9$rrE&u !!)`m!!)Kf!!*#u!s&B$!<2uu!<2uu!<3!"!<3&urr<&urr<&srr<&urrW9$rrE&u!!%TMJcC<$ `rH)%"on%MN;rqOn,J@Hrrhe3mrJJZ~> #6=emFoRo!^4CR@Gm6k'kPt"2Nr/8Gs,QsEs8N2is-fDHrr<&urr<&urr<&srr<&urrW9$rrE&u !!)`m!!)Kf!!*#u!s&B$!<2uu!<2uu!<3!"!<3&urr<&urr<&srr<&urrW9$rrE&u!!%TMJcC<$ `rH)%"on%ONrT.Qn,JFJrrhe5mr\V\~> #6=emF8qc#s+/J,c3AXYkPt"0N;N&Es,?gCs8N2is.#VLrr<&urr<&urr<&srr<&urrW9$rrE&u !!)`m!!)Kf!!*#u!s&B$!<2uu!<2uu!<3!"!<3&urr<&urr<&srr<&urrW9$rrE&u!!%TMJcC<$ `rH)%"on%MN;rqOn,J@Hrrhe3mrJJZ~> #6=emF8qc#V1D7M8d6a-kPt"0N;N&Fs,;p6n,NCin,JoJnGiIf!ri9#r;cfrr;cisrW)Tj!!)Kf r;cisrW)lrrVururVururVurur;cfrr;cisrW%NLJcC<$`W,u$"on%MN;rqOn,J@Hrrhe3mrJJZ~> #6=emFoRo!^4CR@Gm6k'kPt"2Nr/8Hs,N-:n,NCin,JiFnGiIf!ri9#r;cfrr;cisrW)Tj!!)Kf r;cisrW)lrrVururVururVurur;cfrr;cisrW%NLJcC<$`W,u$"on%ONrT.Qn,JFJrrhe5mr\V\~> #6=emF8qc#s+/J,c3AXYkPt"0N;N&Fs,;p6n,NCin,JoJnGiIf!ri9#r;cfrr;cisrW)Tj!!)Kf r;cisrW)lrrVururVururVurur;cfrr;cisrW%NLJcC<$`W,u$"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oF8qc#V+OAXs7K"as8P^errPgms7f4ds7f4ds6E;Ws8P^gs7f4ds8P^ks.N$h.Hfmomu35' n,NFfN;N)Drr_`iS=JL:!!([O!!(pV!!%TMJcC<$^]4>s"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oFoRo!^3P#%s7L[;s8RB?rrRKGs7gm>s7gm>s6Ft1s8RBAs7gm>s8RBEs.O]B8a#::muEG+ n,NFfNr/;Frr_`iR[W.6!!([O!!(pV!!%TMJcC<$^]4>s"on%ONrT.Qn,JFJrrhe5mr\V\~> #lt"oF8qc#s3Apfs7O\;s8UC?rrULGs7jn>s7jn>s6Iu1s8UCAs7jn>s8UCEs.R^BHfsSlmu35' n,NFfN;N)Drr_`iS=JL:!!([O!!(pV!!%TMJcC<$^]4>s"on%MN;rqOn,J@Hrrhe3mrJJZ~> $3:+pF8qc#V+UdfnOii]s%<=kqF^efpe(Sdpe(SdlUq3Ws%<=kr_!4jq+C\es%<=kTh5M $3:+pFoRo!^3TbYnTk07s*=YEqK`,@pj)o>pj)o>lZrO1s*=YErd"PDq0E#?s*=YETm6i6kNDm6 NfO&+s8N/hNfO&+s8N2is-fD6rr<&Orr<&Vrr<%Ms+13$s1eU6k6:nSNfO/>p@&$As8N5jFmjGQ J,~> $3:+pF8qc#s3CZEn]q17s3CZEqTf-@ps/p>ps/p>ld#P1s3CZErm(QDq9K$?s3CZEU! #6=emF8qc#V>^E"9)no`s8P^ks8GXjrru*qs%5o`s8>Rirrbsos%5o^s8GXjrrl$ps%<=kr_!4j r(?qfr_!.hr_!4j#"npq8kT-`r_!4j!)!4is%<7i"\Sgp9)npe8d6a-kPt"0N;`5Fs8VQfN;W/E rr_`iS=JU=rW([PrW(pWrW%NLJcC<$^An5r"on%MN;rqOn,J@Hrrhe3mrJJZ~> #6=emFoRo!^A\';H2mnis8RBEs8I "p"\lF8qc#r;R&Js8UCEs3CZErm(QD#1!8KcHcIirQbHC"O@&IcHcCgrm(QD"j[/JcN!qDcN!qB cMdeBcMdeBcN!nKcN!picN!qDcN!nEcMdeCcMdbHcN!pis8Sn?#(,Ors6ko*rU9dds6ouHr9s[c "7Q8[SDsSJ!8@JP!9*tW!.k0$s+13as8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> %flXuF8qc#V+Udf8kT-`9)ehp9)no`s8P^js8P^ks8>Rirsh[$s%<=k8kT-`8kT-`9)ehp9)no` 9)nqi9)nqk9)nnu9)no`9)no`s8P^js8P^ks8GXhs8P^ks8P^ks8P^jrrPgms.r %flXuFoRo!^3TbYH$TGiH2dgJH2mnis8RBDs8RBEs8@6Crsj>Ss*=YEH$TGiH$TGiH2dgJH2mni H2mpCH2mpEH2mmOH2mniH2mnis8RBDs8RBEs8I %flXuF8qc#s3CZEcHcIicMmhJcN!pis8UCDs8UCEs8C7Crsm?Ss3CZEcHcIicHcIicMmhJcN!pi cN!qCcN!qEcN!nOcN!picN!pis8UCDs8UCEs8L=Bs8UCEs8UCEs8UCDrrULGs/"!FHfsSlmu35( n,NFen,J@Fn,NCin,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3mrJJZ~> *WZ6/F8qc#V+Udf8kT-`9)no`9)no`s8P\`s8P\`r;R^.s8P^ks%<=k8kT-`8kT-`9)no`9)no` 9)nqi9)nqk9)nqh9)nns9)no`9)no`9)JYd9)nqk9)nqk9)nqk9)npf8d6a-kPt"0N;i;Gs8DEd N;`5Frr_`iS=K'J!!)orrW)6`rW)osrW%NLJcC<$N;rq@"on%MN;rqOn,J@Hrrhe3mrJJZ~> *WZ6/FoRo!^3TbYH$TGiH2mniH2mnis8R@is8R@ir;R^]s8RBEs*=YEH$TGiH$TGiH2mniH2mni H2mpCH2mpEH2mpBH2mmMH2mniH2mniH2IX>H2mpEH2mpEH2mpEH2mo@Gm6k'kPt"2NrJMIs8DEd NrAGHrr_`iR[W^F!!)orrW)6`rW)osrW%NLJcC<$N;rq@"on%ONrT.Qn,JFJrrhe5mr\V\~> *WZ6/F8qc#s3CZEcHcIicN!picN!pis8UBis8UBir;R_]s8UCEs3CZEcHcIicHcIicN!picN!pi cN!qCcN!qEcN!qBcN!nMcN!picN!picMRY>cN!qEcN!qEcN!qEcN!p@c3AXYkPt"0N;i;Gs8DEd N;`5Frr_`iS=K'J!!)orrW)6`rW)osrW%NLJcC<$N;rq@"on%MN;rqOn,J@Hrrhe3mrJJZ~> +9;H1F8qc#V+Udf8kT-`9)no`9)no`s8P\`s8P\`s8W$is8N0ns8P^gs8P^krsDBus%5o`s%5o` s8>Ris8P^ks8P^hrsDBus%5o`s%5o`s8,Fds8P^ks8P^ks8P^ks.r +9;H1FoRo!^3TbYH$TGiH2mniH2mnis8R@is8R@is8W%Cs8N1Hs8RBAs8RBErsF&Os*8nis*8ni s8@6Cs8RBEs8RBBrsF&Os*8nis*8nis8.*>s8RBEs8RBEs8RBEs.suF8a#::muEG-n,NFcn,JFI n,NCin,JiFl2L_`jo5;\qu6WrJcC<$JcC]/s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> +9;H1F8qc#s3CZEcHcIicN!picN!pis8UBis8UBis8W&Cs8N2Hs8UCAs8UCErsI'Os3Apis3Api s8C7Cs8UCEs8UCBrsI'Os3Apis3Apis81+>s8UCEs8UCEs8UCEs/"!FHfsSlmu35)n,NFcn,J@G n,NCin,JoJl2L_`jo5;\qu6WrJcC<$JcC]/s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> +9;H1F8qc#V+Udf8kT-`9)no`9)no`s8P\`s8P\`s8W$is8N6ps8P^ks8,FgrsDBus%5o`s%5o` s8>Ris8P^krt.m's%5o`s%<=k8kT-`8kT-`r(@"hs%<=ks%<=ks%<=ks%<=kV+M(DkNDm6N/[5o s8Vubs,?sGs8N2is.#VDrr<&\rr<&rrr<%Ms+13$s,@!Xk6:nSN/[f:p@&$?s8N5jF74/MJ,~> +9;H1FoRo!^3TbYH$TGiH2mniH2mnis8R@is8R@is8W%Cs8N7Js8RBEs8.*ArsF&Os*8nis*8ni s8@6Cs8RBErt0PVs*8nis*=YEH$TGiH$TGir-A>Bs*=YEs*=YEs*=YEs*=YEV0ND>kNDm6NfNSs s8Vubs,R*Is8N2is-fD@rr<&\rr<&rrr<%Ms+13$s,@!Xk6:nSNfO/>p@&$As8N5jFmjGQJ,~> +9;H1F8qc#s3CZEcHcIicN!picN!pis8UBis8UBis8W&Cs8N8Js8UCEs81+ArsI'Os3Apis3Api s8C7Cs8UCErt3QVs3Apis3CZEcHcIicHcIir6G?Bs3CZEs3CZEs3CZEs3CZEV9TEpkNDm6N/[5o s8Vubs,?sGs8N2is.#VDrr<&\rr<&rrr<%Ms+13$s,@!Xk6:nSN/[f:p@&$?s8N5jF74/MJ,~> )$'^*F8qc#V+Udf8kT-`9)no`9)no`s8P^js8P^ks8>RirtnB.s%<=k8kT-`8kT-`9)no`9)no` 9)nqi9)nqk9)nnu9)no`9)no`s8P^js8P^ks85Lhs8P^ks8P^krr>[js8P^ks.rUHqs8E#us8N*!s8N)trr<&rrr<&ms8;rsrrE-"rW)rt rW!'#!<<)u!.k0$s+13Ss8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> )$'^*FoRo!^3TbYH$TGiH2mniH2mnis8RBDs8RBEs8@6Crtp%]s*=YEH$TGiH$TGiH2mniH2mni H2mpCH2mpEH2mmOH2mniH2mnis8RBDs8RBEs870Bs8RBEs8RBErr@?Ds8RBEs.suJ8a#::muEFs n,NFan,JFJn,NCin,JiFnc/RgrVucqq>UHqs8E#us8N*!s8N)trr<&rrr<&ms8;rsrrE-"rW)rt rW!'#!<<)u!.k0$s+13Ss8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> )$'^*F8qc#s3CZEcHcIicN!picN!pis8UCDs8UCEs8C7Crts&]s3CZEcHcIicHcIicN!picN!pi cN!qCcN!qEcN!nOcN!picN!pis8UCDs8UCEs8:1Bs8UCEs8UCErrC@Ds8UCEs/"!JHfsSlmu34o n,NFan,J@Hn,NCin,JoJnc/RgrVucqq>UHqs8E#us8N*!s8N)trr<&rrr<&ms8;rsrrE-"rW)rt rW!'#!<<)u!.k0$s+13Ss8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> +9;H1F8qc#V+Udf8kT-`9)no`9)no`9)no`s8P\`s8W$is8N3os8P\`rVujhs8N?ss8P\`s8P\` qu6XgrVujhrr3C!s8P^ks%<=k8kT-`qb$kf%8-[#8kT-`9)no`9)npf8dQs0kPt"0N:6fHq="?B s6p!f"7Q8[SF?IX!;uis!;6Bl!<<'$!<<'!rr2rurVlitqu6Wro)A[irr2rur;Q`srr3'#s8N)u rr<%Ms+13$s0;V(k6:nSN/[f:p@&$?s8N5jF74/MJ,~> +9;H1FoRo!^3TbYH$TGiH2mniH2mniH2mnis8R@is8W%Cs8N4Is8R@irVukBs8N@Ms8R@is8R@i qu6YArVukBrr3CPs8RBEs*=YEH$TGiqg&2@%=/!RH$TGiH2mniH2mo@GmR(*kPt"2Npm#Jq="?D s6p!f"7Q8YRd^7V!;uis!;6Bl!<<'$!<<'!rr2rurVlitqu6Wro)A[irr2rur;Q`srr3'#s8N)u rr<%Ms+13$s0;V(k6:nSNfO/>p@&$As8N5jFmjGQJ,~> +9;H1F8qc#s3CZEcHcIicN!picN!picN!pis8UBis8W&Cs8N5Is8UBirVulBs8NAMs8UBis8UBi qu6ZArVulBrr3DPs8UCEs3CZEcHcIiqp,3@%F5"RcHcIicN!picN!p@c3\j\kPt"0N:6fHq="?B s6p!f"7Q8[SF?IX!;uis!;6Bl!<<'$!<<'!rr2rurVlitqu6Wro)A[irr2rur;Q`srr3'#s8N)u rr<%Ms+13$s0;V(k6:nSN/[f:p@&$?s8N5jF74/MJ,~> #6=emF8qc#V1D7M8dQs0kPt"0N:6fHq!\6A#4MTln,JoJn,E@fr;Q`sp&>!lrr3'#s8N)urr<&t rr<&rrr<&ls8;rsrr<&srr<&urr<&us8E"Ls+13$s02P'k6:nSN/[f:p@&$?s8N5jF74/MJ,~> #6=emFoRo!^4CR@GmR(*kPt"2Npm#Jq!\6C#4MTln,JiFn,E@fr;Q`sp&>!lrr3'#s8N)urr<&t rr<&rrr<&ls8;rsrr<&srr<&urr<&us8E"Ls+13$s02P'k6:nSNfO/>p@&$As8N5jFmjGQJ,~> #6=emF8qc#s+/J,c3\j\kPt"0N:6fHq!\6A#4MTln,JoJn,E@fr;Q`sp&>!lrr3'#s8N)urr<&t rr<&rrr<&ls8;rsrr<&srr<&urr<&us8E"Ls+13$s02P'k6:nSN/[f:p@&$?s8N5jF74/MJ,~> #6=emF8qc#V1D7M8dHm/kPt"0N;rqNN!AbNs6ouXSF?IX!;uis!;6?l!<3!#!<<'!rr2rurVlit qu6WrpAY*mrr2rurr2rur;Q`srr2ruqu6WrJcC<$JcE"Ts5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> #6=emFoRo!^4CR@GmI")kPt"2NrT.PNX"tPs6ouVRd^7V!;uis!;6?l!<3!#!<<'!rr2rurVlit qu6WrpAY*mrr2rurr2rur;Q`srr2ruqu6WrJcC<$JcE"Ts5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> #6=emF8qc#s+/J,c3Sd[kPt"0N;rqNN!AbNs6ouXSF?IX!;uis!;6?l!<3!#!<<'!rr2rurVlit qu6WrpAY*mrr2rurr2rur;Q`srr2ruqu6WrJcC<$JcE"Ts5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> #6=emF8qc#V1D7M8d?g.kPt"0N;rL.s8N2is.#VJrr<&srr<&lrr<&urrW9$rrE&u!!)ut!!)or !!)`m!!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!.k0$s+13Ts8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #6=emFoRo!^4CR@Gm?q(kPt"2NrS^2s8N2is-fDFrr<&srr<&lrr<&urrW9$rrE&u!!)ut!!)or !!)`m!!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!.k0$s+13Ts8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #6=emF8qc#s+/J,c3J^ZkPt"0N;rL.s8N2is.#VJrr<&srr<&lrr<&urrW9$rrE&u!!)ut!!)or !!)`m!!*#u!!*#u!!)rs!!*#u!s&B$!<2uu!.k0$s+13Ts8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #6=emF8qc#V1D7M8d6a-kPt"0N:QH;rr_`iS=K-LquHcsr;cWmrW)uurrE*!rW!$"!<;or!<;or q#C #6=emFoRo!^4CR@Gm6k'kPt"2Nq2Z=rr_`iR[WdHquHcsr;cWmrW)uurrE*!rW!$"!<;or!<;or q#C #6=emF8qc#s+/J,c3AXYkPt"0N:QH;rr_`iS=K-LquHcsr;cWmrW)uurrE*!rW!$"!<;or!<;or q#C #6=emF8qc#V1C)+.KAQ5s6ko*nG`UZs.#UWrr<%Ms+13$s/Q,!k6:nSN/[f:p@&$?s8N5jF74/M J,~> #6=emFoRo!^4Akd8cRrUs6ku.nG`UZs-fCSrr<%Ms+13$s/Q,!k6:nSNfO/>p@&$As8N5jFmjGQ J,~> #6=emF8qc#s+,O-HiN72s6ko*nG`UZs.#UWrr<%Ms+13$s/Q,!k6:nSN/[f:p@&$?s8N5jF74/M J,~> "p"\lF8qc#JcE7[s5sLamu34srs"G^s6ouXS>ZAe!.k0$s+13Ms8V6cs6ko*s8Vf]s,@!X"RgF# Er^^~> "p"\lFoRo!JcE7[s5sLamuEG"rs"M`s6ouVR]$/c!.k0$s+13Ms8V6cs6ku.s8Vf]s,R-Z"RgL% FT?p~> "p"\lF8qc#JcE7[s5sLamu34srs"G^s6ouXS>ZAe!.k0$s+13Ms8V6cs6ko*s8Vf]s,@!X"RgF# Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJWrN%uJcC<$JcD_Ls5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFWrN%uJcC<$JcD_Ls5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJWrN%uJcC<$JcD_Ls5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#nc/Uhrr;uuiW&oXo`+pks8W*!q#C?onc/RgUAt8V"on%MN;rqOn,J@Hrr_`iS=J[? rrBJ,rW) "p"\lFoRo!nc/Uhrr;uuiW&oXo`+pks8W*!q#C?onc/RgUAt8V"on%ONrT.Qn,JFJrr_`iR[W=; rrBJ,rW) "p"\lF8qc#nc/Uhrr;uuiW&oXo`+pks8W*!q#C?onc/RgUAt8V"on%MN;rqOn,J@Hrr_`iS=J[? rrBJ,rW) "p"\lF8qc#nc/Uhrr;uuiW&oXo`+pks8W*!q#C?oo)J^iT`>&T"on%MN;rqOn,J@Hrr_`iS=JjD !!)rs!!(XN!!(mU!!)?b!!)Ng!!)rs!!%TMJcC<$m/R+K"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!nc/Uhrr;uuiW&oXo`+pks8W*!q#C?oo)J^iT`>&T"on%ONrT.Qn,JFJrr_`iR[WL@ !!)rs!!(XN!!(mU!!)?b!!)Ng!!)rs!!%TMJcC<$m/R+K"on%ONrT.Qn,JFJrrhe5mr\V\~> "p"\lF8qc#nc/Uhrr;uuiW&oXo`+pks8W*!q#C?oo)J^iT`>&T"on%MN;rqOn,J@Hrr_`iS=JjD !!)rs!!(XN!!(mU!!)?b!!)Ng!!)rs!!%TMJcC<$m/R+K"on%MN;rqOn,J@Hrrhe3mrJJZ~> %flXuF8qc#s8N'!rr<'!s8;rts8;rts8N'#rrE)u!!*&u!<<*!!!<0#!<3#s!<<*!!!*&r!<<)t !<3#u!"T#/!<<'!!<3$!rr<'!s8;rts8;rts8N'!s8)frs8;rss8;rss8;rss8;r1s8V6cs6ko* s8Vf]s,@!X"7Q8[SE^%R!;uis!8%5N!8d_U!:0Xb!:^!g!;uis!.k0$s+14:s8V6cs6ko*s8Vf] s,@!X"RgF#Er^^~> %flXuFoRo!s8N'!rr<'!s8;rts8;rts8N'#rrE)u!!*&u!<<*!!!<0#!<3#s!<<*!!!*&r!<<)t !<3#u!"T#/!<<'!!<3$!rr<'!s8;rts8;rts8N'!s8)frs8;rss8;rss8;rss8;r1s8V6cs6ku. s8Vf]s,R-Z"7Q8YRd'hP!;uis!8%5N!8d_U!:0Xb!:^!g!;uis!.k0$s+14:s8V6cs6ku.s8Vf] s,R-Z"RgL%FT?p~> %flXuF8qc#s8N'!rr<'!s8;rts8;rts8N'#rrE)u!!*&u!<<*!!!<0#!<3#s!<<*!!!*&r!<<)t !<3#u!"T#/!<<'!!<3$!rr<'!s8;rts8;rts8N'!s8)frs8;rss8;rss8;rss8;r1s8V6cs6ko* s8Vf]s,@!X"7Q8[SE^%R!;uis!8%5N!8d_U!:0Xb!:^!g!;uis!.k0$s+14:s8V6cs6ko*s8Vf] s,@!X"RgF#Er^^~> $3:+pF8qc#rr<'!rW!<*!!*'!!!*'!!!*#urr!lr;Z`rrr;osrVufr!ri9#rW)rt r;cisquHcs!s&?$!.k0$s+14=s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> $3:+pFoRo!rr<'!rW!<*!!*'!!!*'!!!*#urrp@&$As8N2is-fDAs82lsrrW9$!!)utrW)uu!!lr;Z`rrr;osrVufr!ri9#rW)rt r;cisquHcs!s&?$!.k0$s+14=s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> $3:+pF8qc#rr<'!rW!<*!!*'!!!*'!!!*#urr!lr;Z`rrr;osrVufr!ri9#rW)rt r;cisquHcs!s&?$!.k0$s+14=s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> (]aU)F8qc#rr<'!rr<'!!!*'!!!*'!!!*#urr (]aU)FoRo!rr<'!rr<'!!!*'!!!*'!!!*#urrp@&$As8N2is-fD@rr<&ss8N*!rrW9$rrE&u#6=f(!!*'!!;HKn !;uis!<2uu!<2uu!;uis!<2uu!<2uu!;uls!<<'!!;?Em!<)ot!<2uu!;lcu!<<'!rr3'#s8N)u rr<&rrr<&urr<&ss8N*!rr<%Ms+13$s7$'gk6:nSNfO/>p@&$As8N5jFmjGQJ,~> (]aU)F8qc#rr<'!rr<'!!!*'!!!*'!!!*#urr %KQOtF8qc#rr<'!rr<'!qZ-ZrrrE&urr=# %KQOtFoRo!rr<'!rr<'!qZ-ZrrrE&urr=#p@&$As8N5jFmjGQJ,~> %KQOtF8qc#rr<'!rr<'!qZ-ZrrrE&urr=# &-2b!F8qc#rr<'!rr<'!!!)orrrE&urr=#s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> &-2b!FoRo!rr<'!rr<'!!!)orrrE&urr=#s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> &-2b!F8qc#rr<'!rr<'!!!)orrrE&urr=#s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> $3:+pF8qc#rr<'!rW!o;!!*'!!!*'!!!*$!rr<'!!!*'!!!*'!!!*&u!"Al-!<3$!s8N'!rr<&t s8N'!s8E#us8N'$rr<'!rW)uurrs8V6cs6ko*s8Vf] s,@!X"RgF#Er^^~> $3:+pFoRo!rr<'!rW!o;!!*'!!!*'!!!*$!rr<'!!!*'!!!*'!!!*&u!"Al-!<3$!s8N'!rr<&t s8N'!s8E#us8N'$rr<'!rW)uurrs8V6cs6ku.s8Vf] s,R-Z"RgL%FT?p~> $3:+pF8qc#rr<'!rW!o;!!*'!!!*'!!!*$!rr<'!!!*'!!!*'!!!*&u!"Al-!<3$!s8N'!rr<&t s8N'!s8E#us8N'$rr<'!rW)uurrs8V6cs6ko*s8Vf] s,@!X"RgF#Er^^~> %flXuF8qc#s8N'!rr<'!s8;rrs8N*!s8N'1rr<'!rr<'!rr<'!!!*$!!<3#s!<<*!!;uls!<<)t !<3#u!"Jr.!<<'!!<3$!s8N'!rr;uus8W#ts8W*!rVultrr;rt"9/?$s8;rss8;rss8;r1s8V6c s6ko*s8Vf]s,@!X"7Q8[SEU"P!!*&u!!*&u!<<)u!<<)u!<<*!!;ZZn!<)rs!;ulr!<3#t!!<0# s8;rts8E#us8N)ps8)frs8E#ss8E!#rrE*!rW!$"!<;utrVuis!WN0!s8Duus8Duus8E"Ls+13$ s7--hk6:nSN/[f:p@&$?s8N5jF74/MJ,~> %flXuFoRo!s8N'!rr<'!s8;rrs8N*!s8N'1rr<'!rr<'!rr<'!!!*$!!<3#s!<<*!!;uls!<<)t !<3#u!"Jr.!<<'!!<3$!s8N'!rr;uus8W#ts8W*!rVultrr;rt"9/?$s8;rss8;rss8;r1s8V6c s6ku.s8Vf]s,R-Z"7Q8YRcseN!!*&u!!*&u!<<)u!<<)u!<<*!!;ZZn!<)rs!;ulr!<3#t!!<0# s8;rts8E#us8N)ps8)frs8E#ss8E!#rrE*!rW!$"!<;utrVuis!WN0!s8Duus8Duus8E"Ls+13$ s7--hk6:nSNfO/>p@&$As8N5jFmjGQJ,~> %flXuF8qc#s8N'!rr<'!s8;rrs8N*!s8N'1rr<'!rr<'!rr<'!!!*$!!<3#s!<<*!!;uls!<<)t !<3#u!"Jr.!<<'!!<3$!s8N'!rr;uus8W#ts8W*!rVultrr;rt"9/?$s8;rss8;rss8;r1s8V6c s6ko*s8Vf]s,@!X"7Q8[SEU"P!!*&u!!*&u!<<)u!<<)u!<<*!!;ZZn!<)rs!;ulr!<3#t!!<0# s8;rts8E#us8N)ps8)frs8E#ss8E!#rrE*!rW!$"!<;utrVuis!WN0!s8Duus8Duus8E"Ls+13$ s7--hk6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lF8qc#r;Zcsjo>>\JcFR+s5sRcmu35*s7Yp]N;rn[n,JoJJcGTH!!%TMJcC<$fDkm6"on%M N;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!r;Zcsjo>>\JcFR+s5sRcmuEG.s7Yp]NrT+]n,JiFJcGTH!!%TMJcC<$fDkm6"on%O NrT.Qn,JFJrrhe5mr\V\~> "p"\lF8qc#r;Zcsjo>>\JcFR+s5sRcmu35*s7Yp]N;rn[n,JoJJcGTH!!%TMJcC<$fDkm6"on%M N;rqOn,J@Hrrhe3mrJJZ~> %06FsF8qc#rr<'!rr<&\s8N(Ms5!_Tk6:nSN/[f:p@&$?s8N2is.#U1s8)`q!.k0$s+14%s8V6c s6ko*s8Vf]s,@!X"RgF#Er^^~> %06FsFoRo!rr<'!rr<&\s8N(Ms5!_Tk6:nSNfO/>p@&$As8N2is-fC-s8)`q!.k0$s+14%s8V6c s6ku.s8Vf]s,R-Z"RgL%FT?p~> %06FsF8qc#rr<'!rr<&\s8N(Ms5!_Tk6:nSN/[f:p@&$?s8N2is.#U1s8)`q!.k0$s+14%s8V6c s6ko*s8Vf]s,@!X"RgF#Er^^~> #QXnnF8qc#s8W#tjT#5[JcFR+s5sRcmu35*s7Yp]N;rn[n,JoJJcGWIrW%NLJcC<$f`2!7"on%M N;rqOn,J@Hrrhe3mrJJZ~> #QXnnFoRo!s8W#tjT#5[JcFR+s5sRcmuEG.s7Yp]NrT+]n,JiFJcGWIrW%NLJcC<$f`2!7"on%O NrT.Qn,JFJrrhe5mr\V\~> #QXnnF8qc#s8W#tjT#5[JcFR+s5sRcmu35*s7Yp]N;rn[n,JoJJcGWIrW%NLJcC<$f`2!7"on%M N;rqOn,J@Hrrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJj8])YZi:"*r;ZcsrVlitci4(Irr<&as8N)S rr<&Mrr<&ts8E#ls8E#bs8N)bs8N)rrr<%Ms0r%.k6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFj8])YZi:"*r;ZcsrVlitci4(Irr<&as8N)S rr<&Mrr<&ts8E#ls8E#bs8N)bs8N)rrr<%Ms0r%.k6:nSNfO/>p@&$As8N5jFmjGQJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJj8])YZi:"*r;ZcsrVlitci4(Irr<&as8N)S rr<&Mrr<&ts8E#ls8E#bs8N)bs8N)rrr<%Ms0r%.k6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJiVrlXg&D$Ph>[HTqYpNqo)J^is8W&uiVrlX rr2rul2L_`g]%6Rk5PD]m/I%co`"mkli-qbnG`Igr;Q`sqYpNqJcE7[s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFiVrlXg&D$Ph>[HTqYpNqo)J^is8W&uiVrlX rr2rul2L_`g]%6Rk5PD]m/I%co`"mkli-qbnG`Igr;Q`sqYpNqJcE7[s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJiVrlXg&D$Ph>[HTqYpNqo)J^is8W&uiVrlX rr2rul2L_`g]%6Rk5PD]m/I%co`"mkli-qbnG`Igr;Q`sqYpNqJcE7[s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJiVrlXg&D$Ph>[HTqYpNqnc/Uhs8N'!i;WcW rr2rul2L_`g]%6Rk5PD]m/I%co`"mkli-qbnG`Igr;Q`sqYpNqJcE7[s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFiVrlXg&D$Ph>[HTqYpNqnc/Uhs8N'!i;WcW rr2rul2L_`g]%6Rk5PD]m/I%co`"mkli-qbnG`Igr;Q`sqYpNqJcE7[s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJiVrlXg&D$Ph>[HTqYpNqnc/Uhs8N'!i;WcW rr2rul2L_`g]%6Rk5PD]m/I%co`"mkli-qbnG`Igr;Q`sqYpNqJcE7[s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJl2U__r;Q`sr;Z`rrVuisp\t6os8E#ts8E#t s82j(rr<'!rr<'!rrE)u!!<0#s8E#krr<&ss8;rts8E#srrE-"rW)uurrE*!!W`9#r;cltrW!!! !<)rs!;6?l!<)p"!<3$!rVuisrr;osrVufrq#C9mrr3!!s8E#ts8E!#rrE*!rW)lr!!)6_quHcs r;cisrW)iq!!)Zk!!)rsrW)rtr;cfrr;Zp!!<<#urr;osrr;lrs8N0$rr<&srr<%Ms1/10k6:nS N/[f:p@&$?s8N5jF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFl2U__r;Q`sr;Z`rrVuisp\t6os8E#ts8E#t s82j(rr<'!rr<'!rrE)u!!<0#s8E#krr<&ss8;rts8E#srrE-"rW)uurrE*!!W`9#r;cltrW!!! !<)rs!;6?l!<)p"!<3$!rVuisrr;osrVufrq#C9mrr3!!s8E#ts8E!#rrE*!rW)lr!!)6_quHcs r;cisrW)iq!!)Zk!!)rsrW)rtr;cfrr;Zp!!<<#urr;osrr;lrs8N0$rr<&srr<%Ms1/10k6:nS NfO/>p@&$As8N5jFmjGQJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJl2U__r;Q`sr;Z`rrVuisp\t6os8E#ts8E#t s82j(rr<'!rr<'!rrE)u!!<0#s8E#krr<&ss8;rts8E#srrE-"rW)uurrE*!!W`9#r;cltrW!!! !<)rs!;6?l!<)p"!<3$!rVuisrr;osrVufrq#C9mrr3!!s8E#ts8E!#rrE*!rW)lr!!)6_quHcs r;cisrW)iq!!)Zk!!)rsrW)rtr;cfrr;Zp!!<<#urr;osrr;lrs8N0$rr<&srr<%Ms1/10k6:nS N/[f:p@&$?s8N5jF74/MJ,~> #lt"oF8qc#rr<&us8E#ts8;rms8)eIs4@;Nk6:nSN/[f:p@&$?s8N2is.#VErr<&urr<&trr<&t rr<&urrW9$rrE&u!!)cn!!)rs!!*#u!!*#u!!)rs!!*#u!!*#u!!)rsrrE*!!!)`m!!)ut!!*#u !!)ut!!)rs!!)rs"9AH%rrDrr$3:,+!<3'!!<<'!rr2rupAY*mrVults8N0$s8N)urr<&rrrW9$ rrE&u!!)Zk!!*#u!!)rs!!*#u!s&B$!<2uu!<)ot!;-9k!;6?l!;QQo!<)ot!;lcr!;-9k!<)ot !<2uu!;lcu!<<'!rr3'#s8N)urr<&rrr<&urr<&ss8N*!rr<&trr<%Ms1/10k6:nSN/[f:p@&$? s8N5jF74/MJ,~> #lt"oFoRo!rr<&us8E#ts8;rms8)eIs4@;Nk6:nSNfO/>p@&$As8N2is-fDArr<&urr<&trr<&t rr<&urrW9$rrE&u!!)cn!!)rs!!*#u!!*#u!!)rs!!*#u!!*#u!!)rsrrE*!!!)`m!!)ut!!*#u !!)ut!!)rs!!)rs"9AH%rrDrr$3:,+!<3'!!<<'!rr2rupAY*mrVults8N0$s8N)urr<&rrrW9$ rrE&u!!)Zk!!*#u!!)rs!!*#u!s&B$!<2uu!<)ot!;-9k!;6?l!;QQo!<)ot!;lcr!;-9k!<)ot !<2uu!;lcu!<<'!rr3'#s8N)urr<&rrr<&urr<&ss8N*!rr<&trr<%Ms1/10k6:nSNfO/>p@&$A s8N5jFmjGQJ,~> #lt"oF8qc#rr<&us8E#ts8;rms8)eIs4@;Nk6:nSN/[f:p@&$?s8N2is.#VErr<&urr<&trr<&t rr<&urrW9$rrE&u!!)cn!!)rs!!*#u!!*#u!!)rs!!*#u!!*#u!!)rsrrE*!!!)`m!!)ut!!*#u !!)ut!!)rs!!)rs"9AH%rrDrr$3:,+!<3'!!<<'!rr2rupAY*mrVults8N0$s8N)urr<&rrrW9$ rrE&u!!)Zk!!*#u!!)rs!!*#u!s&B$!<2uu!<)ot!;-9k!;6?l!;QQo!<)ot!;lcr!;-9k!<)ot !<2uu!;lcu!<<'!rr3'#s8N)urr<&rrr<&urr<&ss8N*!rr<&trr<%Ms1/10k6:nSN/[f:p@&$? s8N5jF74/MJ,~> "p"\lF8qc#r;ZcsrVults8W*!q>^Hprr;uuJcFC&s5sRcmu35*s7Yp]N;rn[n,JoJlMpb^rVlit r;Z`rrr;lrp\t3nr;ZZprr2rur;Q`srr2rurr2rur;Q`srr2rupAY*mrVlitrr2rurVlitr;Q`s r;Qm"rrE'!rr;oss8N9'rrE'!s8VuspAY*mrVlitrr3$"s8Vusrr;oss8N'!rr2rup](0lrr2ru r;Q`srr2rurr;rtr;Q`skPkM^qu?TprVlitqu6Wro`"mkrVlitrr2rurr;oss8N'!rr3'#s8N)u rr<&us8;rsrr<&srr<&urr<&trr<%Ms1/10k6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lFoRo!r;ZcsrVults8W*!q>^Hprr;uuJcFC&s5sRcmuEG.s7Yp]NrT+]n,JiFlMpb^rVlit r;Z`rrr;lrp\t3nr;ZZprr2rur;Q`srr2rurr2rur;Q`srr2rupAY*mrVlitrr2rurVlitr;Q`s r;Qm"rrE'!rr;oss8N9'rrE'!s8VuspAY*mrVlitrr3$"s8Vusrr;oss8N'!rr2rup](0lrr2ru r;Q`srr2rurr;rtr;Q`skPkM^qu?TprVlitqu6Wro`"mkrVlitrr2rurr;oss8N'!rr3'#s8N)u rr<&us8;rsrr<&srr<&urr<&trr<%Ms1/10k6:nSNfO/>p@&$As8N5jFmjGQJ,~> "p"\lF8qc#r;ZcsrVults8W*!q>^Hprr;uuJcFC&s5sRcmu35*s7Yp]N;rn[n,JoJlMpb^rVlit r;Z`rrr;lrp\t3nr;ZZprr2rur;Q`srr2rurr2rur;Q`srr2rupAY*mrVlitrr2rurVlitr;Q`s r;Qm"rrE'!rr;oss8N9'rrE'!s8VuspAY*mrVlitrr3$"s8Vusrr;oss8N'!rr2rup](0lrr2ru r;Q`srr2rurr;rtr;Q`skPkM^qu?TprVlitqu6Wro`"mkrVlitrr2rurr;oss8N'!rr3'#s8N)u rr<&us8;rsrr<&srr<&urr<&trr<%Ms1/10k6:nSN/[f:p@&$?s8N5jF74/MJ,~> $3:+pF8qc#rr<'!r;cltrrE#trr $3:+pFoRo!rr<'!r;cltrrE#trrp@&$As8N2is-fDArr<&prr<&prrW9$rrDZj!!)rs!!)lq!!)rs!!*#u!!*#u!!)rs!!*#u !!)`m!!)ut!!*#u!!)ut!!)rs!!)rs#6=f(!!*'!!<3!*!<<'!rrE'!s8N)irr<&trr<&urrW9$ rrDrr!!*#u!s&B$!<2uu!;QQo!<2uu!<2uu!;uis!<2uu!;lcr!<)ot!9a@^!;uis!<2uu!<)ot !;lcr!;-9k!<)ot!<3!#!<<'!rr3'#s8N)urrW9$rrE&u!s&B$!<2uu!<2uu!;uis!<2uu!<)ot !.k0\s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> $3:+pF8qc#rr<'!r;cltrrE#trr %06FsF8qc#rr<'!rr<&us8N)ts8N'!s82iurr<&us7cTos8N'$rr<'!rW%NLlMpnI"on%MN;rqO n,J@Hrr_`iS=JmE!!*#u!!)ut!!)ut!!*#u!s&B$!<2uu!;HKn!;uis!<2uu!<2uu!<3!"!<3&u rr<&urr<&srr<&urr<&mrr<&trr<&urr<&trr<&srr<&srs&Q(rr<'!rrE&u$3:,+!<3'!!<<'! rr2rupAY*mrVlitrr3'#s8N)urrW9$rrE&u!s&B$!<2uu!;QQo!<2uu!<2uu!;uis!<3!#!<<'! rr2rurVlitkPkM^rr3$"rrE&u!!)ut!!)or!!)Zk!!)ut!!*#u!s&B$!<3!#!<<'!rr3'#s8N)u rrW9$rrE&u!!*#u!!*#u!W`6#rr2rurVlitJcE:\s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> %06FsFoRo!rr<'!rr<&us8N)ts8N'!s82iurr<&us7cTos8N'$rr<'!rW%NLlMpnI"on%ONrT.Q n,JFJrr_`iR[WOA!!*#u!!)ut!!)ut!!*#u!s&B$!<2uu!;HKn!;uis!<2uu!<2uu!<3!"!<3&u rr<&urr<&srr<&urr<&mrr<&trr<&urr<&trr<&srr<&srs&Q(rr<'!rrE&u$3:,+!<3'!!<<'! rr2rupAY*mrVlitrr3'#s8N)urrW9$rrE&u!s&B$!<2uu!;QQo!<2uu!<2uu!;uis!<3!#!<<'! rr2rurVlitkPkM^rr3$"rrE&u!!)ut!!)or!!)Zk!!)ut!!*#u!s&B$!<3!#!<<'!rr3'#s8N)u rrW9$rrE&u!!*#u!!*#u!W`6#rr2rurVlitJcE:\s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> %06FsF8qc#rr<'!rr<&us8N)ts8N'!s82iurr<&us7cTos8N'$rr<'!rW%NLlMpnI"on%MN;rqO n,J@Hrr_`iS=JmE!!*#u!!)ut!!)ut!!*#u!s&B$!<2uu!;HKn!;uis!<2uu!<2uu!<3!"!<3&u rr<&urr<&srr<&urr<&mrr<&trr<&urr<&trr<&srr<&srs&Q(rr<'!rrE&u$3:,+!<3'!!<<'! rr2rupAY*mrVlitrr3'#s8N)urrW9$rrE&u!s&B$!<2uu!;QQo!<2uu!<2uu!;uis!<3!#!<<'! rr2rurVlitkPkM^rr3$"rrE&u!!)ut!!)or!!)Zk!!)ut!!*#u!s&B$!<3!#!<<'!rr3'#s8N)u rrW9$rrE&u!!*#u!!*#u!W`6#rr2rurVlitJcE:\s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> %06FsF8qc#rr<'!rr<&us8N)ts8N'!s8E#ts8)crs8E#us8N*!s8N''rr<'!rr<%Ms6BXak6:nS N/[f:p@&$?s8N2is.#VDs8E#ts8)frs8E#ss8E#ms8;rrs8E#rs8E#ts8E!"rrE)t!<<)u!<<*! !;?Em!<)rs!!<0#s82lss8;rts8E#urr<&us8Duus8E!&rrE'!!<<)u!;-9m!<<)u!!*&u!<<)u !<)rs!!E6$s8W&u!WN/ps8E!"rrE)t!<)rr!<3#t!<)ot!;$3j!;- %06FsFoRo!rr<'!rr<&us8N)ts8N'!s8E#ts8)crs8E#us8N*!s8N''rr<'!rr<%Ms6BXak6:nS NfO/>p@&$As8N2is-fD@s8E#ts8)frs8E#ss8E#ms8;rrs8E#rs8E#ts8E!"rrE)t!<<)u!<<*! !;?Em!<)rs!!<0#s82lss8;rts8E#urr<&us8Duus8E!&rrE'!!<<)u!;-9m!<<)u!!*&u!<<)u !<)rs!!E6$s8W&u!WN/ps8E!"rrE)t!<)rr!<3#t!<)ot!;$3j!;- p@&$As8N5jFmjGQJ,~> %06FsF8qc#rr<'!rr<&us8N)ts8N'!s8E#ts8)crs8E#us8N*!s8N''rr<'!rr<%Ms6BXak6:nS N/[f:p@&$?s8N2is.#VDs8E#ts8)frs8E#ss8E#ms8;rrs8E#rs8E#ts8E!"rrE)t!<<)u!<<*! !;?Em!<)rs!!<0#s82lss8;rts8E#urr<&us8Duus8E!&rrE'!!<<)u!;-9m!<<)u!!*&u!<<)u !<)rs!!E6$s8W&u!WN/ps8E!"rrE)t!<)rr!<3#t!<)ot!;$3j!;- %06FsF8qc#rr<'!rr<&us8N)ts8N'#rr<&ts8N)ss8N)us8N*!s8N''rr<'!rr<%Ms6BXak6:nS N/[f:p@&$?s8N2is.#UCrr<&:rr<&@rr<&nrr<%trr<&\rr<%Ms1&+/k6:nSN/[f:p@&$?s8N5j F74/MJ,~> %06FsFoRo!rr<'!rr<&us8N)ts8N'#rr<&ts8N)ss8N)us8N*!s8N''rr<'!rr<%Ms6BXak6:nS NfO/>p@&$As8N2is-fC?rr<&:rr<&@rr<&nrr<%trr<&\rr<%Ms1&+/k6:nSNfO/>p@&$As8N5j FmjGQJ,~> %06FsF8qc#rr<'!rr<&us8N)ts8N'#rr<&ts8N)ss8N)us8N*!s8N''rr<'!rr<%Ms6BXak6:nS N/[f:p@&$?s8N2is.#UCrr<&:rr<&@rr<&nrr<%trr<&\rr<%Ms1&+/k6:nSN/[f:p@&$?s8N5j F74/MJ,~> %06FsF8qc#rr<'!rr<&us8N)ts8N'#rr<&ts8N)ss8N)us8N*!s8N''rr<'!rr<%Ms6BXak6:nS N/[f:p@&$?s8N2is.#UBrr<&:rr<&Arr<&orr<%srr<&]rr<%Ms0r%.k6:nSN/[f:p@&$?s8N5j F74/MJ,~> %06FsFoRo!rr<'!rr<&us8N)ts8N'#rr<&ts8N)ss8N)us8N*!s8N''rr<'!rr<%Ms6BXak6:nS NfO/>p@&$As8N2is-fC>rr<&:rr<&Arr<&orr<%srr<&]rr<%Ms0r%.k6:nSNfO/>p@&$As8N5j FmjGQJ,~> %06FsF8qc#rr<'!rr<&us8N)ts8N'#rr<&ts8N)ss8N)us8N*!s8N''rr<'!rr<%Ms6BXak6:nS N/[f:p@&$?s8N2is.#UBrr<&:rr<&Arr<&orr<%srr<&]rr<%Ms0r%.k6:nSN/[f:p@&$?s8N5j F74/MJ,~> %06FsF8qc#rr<'!rr<&ts8N*!s8N*!s8N)ts8N)ss8N)us8N*!s8N'$rr<'!rW%NLlMpnI"on%M N;rqOn,J@Hrr_`iS=G01T)\ciScAZhJcD8?s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> %06FsFoRo!rr<'!rr<&ts8N*!s8N*!s8N)ts8N)ss8N)us8N*!s8N'$rr<'!rW%NLlMpnI"on%O NrT.Qn,JFJrr_`iR[Sg-T)\ciScAZhJcD8?s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> %06FsF8qc#rr<'!rr<&ts8N*!s8N*!s8N)ts8N)ss8N)us8N*!s8N'$rr<'!rW%NLlMpnI"on%M N;rqOn,J@Hrr_`iS=G01T)\ciScAZhJcD8?s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> %06FsF8qc#rr<'!rr<&ss8;rss8N)ts8N)ss8N)ts8;rss8N'#rr<%Ms6BXak6:nSN/[f:p@&$? s8N2is.#U1s+13$s+13rs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> %06FsFoRo!rr<'!rr<&ss8;rss8N)ts8N)ss8N)ts8;rss8N'#rr<%Ms6BXak6:nSNfO/>p@&$A s8N2is-fC-s+13$s+13rs8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> %06FsF8qc#rr<'!rr<&ss8;rss8N)ts8N)ss8N)ts8;rss8N'#rr<%Ms6BXak6:nSN/[f:p@&$? s8N2is.#U1s+13$s+13rs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lF8qc#dJs4HJcG$8s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@H rrhe3mrJJZ~> "p"\lFoRo!dJs4HJcG$8s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJ rrhe5mr\V\~> "p"\lF8qc#dJs4HJcG$8s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@H rrhe3mrJJZ~> "p"\lF8qc#ec5XLs8W*!JcG$8s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqO n,J@Hrrhe3mrJJZ~> "p"\lFoRo!ec5XLs8W*!JcG$8s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Q n,JFJrrhe5mr\V\~> "p"\lF8qc#ec5XLs8W*!JcG$8s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqO n,J@Hrrhe3mrJJZ~> "p"\lF8qc#eGoIIJcG!7s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@H rrhe3mrJJZ~> "p"\lFoRo!eGoIIJcG!7s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJ rrhe5mr\V\~> "p"\lF8qc#eGoIIJcG!7s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@H rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#lMpkaq>^Hpq#C?oiW&oXM#[M<"on%MN;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sRc mu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!lMpkaq>^Hpq#C?oiW&oXM#[M<"on%ONrT.Qn,JFJrr_`iR[Sg-JcC<$JcF'rs5sRc muEG.s7Yp]NrT+^mre)A!.Y~> "p"\lF8qc#lMpkaq>^Hpq#C?oiW&oXM#[M<"on%MN;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sRc mu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#lMpkaq>^Hpq#C?oiW&oXM#[M<"on%MN;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sRc mu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!lMpkaq>^Hpq#C?oiW&oXM#[M<"on%ONrT.Qn,JFJrr_`iR[Sg-JcC<$JcF'rs5sRc muEG.s7Yp]NrT+^mre)A!.Y~> "p"\lF8qc#lMpkaq>^Hpq#C?oiW&oXM#[M<"on%MN;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sRc mu35*s7Yp]N;rn\mrRr=!.Y~> #lt"oF8qc#rrE)u!!*&u!<3#s!<3#u!"T#/!<3$!s8N'!rr<'!s8;rss8N'#rrE)u!!*&u!<<*! !!<0#!<3#s!<<*!!!*&r!<<)t!0@0[k6:nSN/[f:p@&$?s8N2is.#U1s+13$s+13rs8V6cs6ko* s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!rrE)u!!*&u!<3#s!<3#u!"T#/!<3$!s8N'!rr<'!s8;rss8N'#rrE)u!!*&u!<<*! !!<0#!<3#s!<<*!!!*&r!<<)t!0@0[k6:nSNfO/>p@&$As8N2is-fC-s+13$s+13rs8V6cs6ku. s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#rrE)u!!*&u!<3#s!<3#u!"T#/!<3$!s8N'!rr<'!s8;rss8N'#rrE)u!!*&u!<<*! !!<0#!<3#s!<<*!!!*&r!<<)t!0@0[k6:nSN/[f:p@&$?s8N2is.#U1s+13$s+13rs8V6cs6ko* s8Vf]s,@!X"RgF#Er^^~> *!$$-F8qc#rr<'!rr<'!rr<'!!!*'!!!*$!!<<#u+TDEAs8N'!rr<'!!!*'!!!*'!!!*$!!<<'! !<<'!!<<#u$NC)+rr<'!rr<'!qu@*(!!*'!!!*'!!!&,\s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$ JcC<$ci=%."on%MN;rqOn,J@Hrrhe3mrJJZ~> *!$$-FoRo!rr<'!rr<'!rr<'!!!*'!!!*$!!<<#u+TDEAs8N'!rr<'!!!*'!!!*'!!!*$!!<<'! !<<'!!<<#u$NC)+rr<'!rr<'!qu@*(!!*'!!!*'!!!&,\s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$ JcC<$ci=%."on%ONrT.Qn,JFJrrhe5mr\V\~> *!$$-F8qc#rr<'!rr<'!rr<'!!!*'!!!*$!!<<#u+TDEAs8N'!rr<'!!!*'!!!*'!!!*$!!<<'! !<<'!!<<#u$NC)+rr<'!rr<'!qu@*(!!*'!!!*'!!!&,\s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$ JcC<$ci=%."on%MN;rqOn,J@Hrrhe3mrJJZ~> :&t=_F8qc#rr<'!rr<'!rr<'!!!*'!!!*$!!<<'!!<3$!s8N'!rr<'!!!*'!!!*'!!!*$!!<<'! !<<'!!<3$!s8N'!rr<'!rr<'!rW)rtrrE*!rW%rXs5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ ci=%."on%MN;rqOn,J@Hrrhe3mrJJZ~> :&t=_FoRo!rr<'!rr<'!rr<'!!!*'!!!*$!!<<'!!<3$!s8N'!rr<'!!!*'!!!*'!!!*$!!<<'! !<<'!!<3$!s8N'!rr<'!rr<'!rW)rtrrE*!rW%rXs5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ ci=%."on%ONrT.Qn,JFJrrhe5mr\V\~> :&t=_F8qc#rr<'!rr<'!rr<'!!!*'!!!*$!!<<'!!<3$!s8N'!rr<'!!!*'!!!*'!!!*$!!<<'! !<<'!!<3$!s8N'!rr<'!rr<'!rW)rtrrE*!rW%rXs5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ ci=%."on%MN;rqOn,J@Hrrhe3mrJJZ~> .KKM;F8qc#rr<'!rr<'!rr<'!!!*'!!!*$!!<<'!!<3$!s8N'!rr<'!qZ-Zrrr=# .KKM;FoRo!rr<'!rr<'!rr<'!!!*'!!!*$!!<<'!!<3$!s8N'!rr<'!qZ-Zrrr=#p@&$As8N5jFmjGQJ,~> .KKM;F8qc#rr<'!rr<'!rr<'!!!*'!!!*$!!<<'!!<3$!s8N'!rr<'!qZ-Zrrr=# /-,_=F8qc#rr<'!rr<'!rr<'!!!*'!!!*$!!<<'!!<3$!s8N'!rr<'!!!)orrr=# /-,_=FoRo!rr<'!rr<'!rr<'!!!*'!!!*$!!<<'!!<3$!s8N'!rr<'!!!)orrr=#p@&$As8N5jFmjGQJ,~> /-,_=F8qc#rr<'!rr<'!rr<'!!!*'!!!*$!!<<'!!<3$!s8N'!rr<'!!!)orrr=# *!$$-F8qc#rr<'!rr<'!rr<'!!!*'!!!*$!!<<#u"9/?$s8E!9rr<'!!!*'!!!*'!!!*$!!<<'! !<<'!!<<#u%0$;-rr<'!rr<'!!!)utrr<'!rW)uurrA/\s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$ JcC<$ci=%."on%MN;rqOn,J@Hrrhe3mrJJZ~> *!$$-FoRo!rr<'!rr<'!rr<'!!!*'!!!*$!!<<#u"9/?$s8E!9rr<'!!!*'!!!*'!!!*$!!<<'! !<<'!!<<#u%0$;-rr<'!rr<'!!!)utrr<'!rW)uurrA/\s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$ JcC<$ci=%."on%ONrT.Qn,JFJrrhe5mr\V\~> *!$$-F8qc#rr<'!rr<'!rr<'!!!*'!!!*$!!<<#u"9/?$s8E!9rr<'!!!*'!!!*'!!!*$!!<<'! !<<'!!<<#u%0$;-rr<'!rr<'!!!)utrr<'!rW)uurrA/\s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$ JcC<$ci=%."on%MN;rqOn,J@Hrrhe3mrJJZ~> '*/($F8qc#rr<'!rr<'!rr<'!s8;rss8N'/rr<'!rr<'!!!*$!!<<)t!<3#u!"f/1!<<'!!<<'! !<3$!rr<&us8;rts8N)ss8N*!s8;qYs8V6cs6ko*s8Vf]s,@!X"7Q8[S:U]ks+13$s3L`Fk6:nS N/[f:p@&$?s8N5jF74/MJ,~> '*/($FoRo!rr<'!rr<'!rr<'!s8;rss8N'/rr<'!rr<'!!!*$!!<<)t!<3#u!"f/1!<<'!!<<'! !<3$!rr<&us8;rts8N)ss8N*!s8;qYs8V6cs6ku.s8Vf]s,R-Z"7Q8YRXtKis+13$s3L`Fk6:nS NfO/>p@&$As8N5jFmjGQJ,~> '*/($F8qc#rr<'!rr<'!rr<'!s8;rss8N'/rr<'!rr<'!!!*$!!<<)t!<3#u!"f/1!<<'!!<<'! !<3$!rr<&us8;rts8N)ss8N*!s8;qYs8V6cs6ko*s8Vf]s,@!X"7Q8[S:U]ks+13$s3L`Fk6:nS N/[f:p@&$?s8N5jF74/MJ,~> "p"\lF8qc#a8c/>JcGBBs5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@H rrhe3mrJJZ~> "p"\lFoRo!a8c/>JcGBBs5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJ rrhe5mr\V\~> "p"\lF8qc#a8c/>JcGBBs5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@H rrhe3mrJJZ~> "p"\lF8qc#a8c/>JcGBBs5sRcmu35*s7Yp]N;rn]n,JoJs8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vusec5[4"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!a8c/>JcGBBs5sRcmuEG.s7Yp]NrT+_n,JiFs8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vusec5[4"on%ONrT.Qn,JFJrrhe5mr\V\~> "p"\lF8qc#a8c/>JcGBBs5sRcmu35*s7Yp]N;rn]n,JoJs8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vusec5[4"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lF8qc#a8c/>JcGBBs5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@H rrhe3mrJJZ~> "p"\lFoRo!a8c/>JcGBBs5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJ rrhe5mr\V\~> "p"\lF8qc#a8c/>JcGBBs5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@H rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqMN;rn\mrRr= !.Y~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.ONrT+^mre)A !.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqMN;rn\mrRr= !.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."TRqLN;rL.s8N5jF74/M J,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."TRqNNrS^2s8N5jFmjGQ J,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."TRqLN;rL.s8N5jF74/M J,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#j8]&Xr;Z`r"TJH%s8Vrr!<;or!<;orJcGWIs5sRcmu35*s7Yp]N;rn[n,JoJJcC<$ JcC<$ci=%."97hKN:?iMmrRr=!.Y~> "p"\lFoRo!j8]&Xr;Z`r"TJH%s8Vrr!<;or!<;orJcGWIs5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$ JcC<$ci=%."97hMNq!&Omre)A!.Y~> "p"\lF8qc#j8]&Xr;Z`r"TJH%s8Vrr!<;or!<;orJcGWIs5sRcmu35*s7Yp]N;rn[n,JoJJcC<$ JcC<$ci=%."97hKN:?iMmrRr=!.Y~> "p"\lF8qc#jT#5[s8W*!rr;uurr;uus8W*!r;Zcsr;Zcsrr;uuJcGZJs5sRcmu35*s7Yp]N;rn[ n,JoJJcC<$JcC<$ci=%."TRqLN:6E=#E8]_mrRr=!.Y~> "p"\lFoRo!jT#5[s8W*!rr;uurr;uus8W*!r;Zcsr;Zcsrr;uuJcGZJs5sRcmuEG.s7Yp]NrT+] n,JiFJcC<$JcC<$ci=%."TRqNNplW?#EJiamre)A!.Y~> "p"\lF8qc#jT#5[s8W*!rr;uurr;uus8W*!r;Zcsr;Zcsrr;uuJcGZJs5sRcmu35*s7Yp]N;rn[ n,JoJJcC<$JcC<$ci=%."TRqLN:6E=#E8]_mrRr=!.Y~> 'EJ1%F8qc#rr<'!!!*'!!!*$!!<;utrr;uu#6+Z's8N'!rVult!<;uts8W*!s8W*!r;Zcsr;Zcs rr;uuJcGZJs5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%.#64.NN:6fHq!\6A#Oh]mmrRr= !.Y~> 'EJ1%FoRo!rr<'!!!*'!!!*$!!<;utrr;uu#6+Z's8N'!rVult!<;uts8W*!s8W*!r;Zcsr;Zcs rr;uuJcGZJs5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%.#64.PNpm#Jq!\6C#Oh]mmre)A !.Y~> 'EJ1%F8qc#rr<'!!!*'!!!*$!!<;utrr;uu#6+Z's8N'!rVult!<;uts8W*!s8W*!r;Zcsr;Zcs rr;uuJcGZJs5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%.#64.NN:6fHq!\6A#Oh]mmrRr= !.Y~> #6=emF8qc#s8E!#rr<'!q>gQqrr<0$!!*&u!<<*!!<)rt!<<*!!<3#u!<<*!!;uls!;uls!<3#u !.k1Js8V6cs6ko*s8Vf]s,@!X"7Q8[S:U]ks+13$s3L`Fk6M%UN/[5os8Vo`s,73Os8VP/mrJJZ~> #6=emFoRo!s8E!#rr<'!q>gQqrr<0$!!*&u!<<*!!<)rt!<<*!!<3#u!<<*!!;uls!;uls!<3#u !.k1Js8V6cs6ku.s8Vf]s,R-Z"7Q8YRXtKis+13$s3L`Fk6M%UNfNSss8Vo`s,I?Qs8VP1mr\V\~> #6=emF8qc#s8E!#rr<'!q>gQqrr<0$!!*&u!<<*!!<)rt!<<*!!<3#u!<<*!!;uls!;uls!<3#u !.k1Js8V6cs6ko*s8Vf]s,@!X"7Q8[S:U]ks+13$s3L`Fk6M%UN/[5os8Vo`s,73Os8VP/mrJJZ~> %KQOtF8qc#rr<'!rr<'!rW)uurrE*!rr %KQOtFoRo!rr<'!rr<'!rW)uurrE*!rr %KQOtF8qc#rr<'!rr<'!rW)uurrE*!rr &-2b!F8qc#rr<'!rr<'!!!*#urrE*!rr &-2b!FoRo!rr<'!rr<'!!!*#urrE*!rr &-2b!F8qc#rr<'!rr<'!!!*#urrE*!rr &-2b!F8qc#rr<'!rr<'!!!*#urrE*!rr &-2b!FoRo!rr<'!rr<'!!!*#urrE*!rr &-2b!F8qc#rr<'!rr<'!!!*#urrE*!rr #6=emF8qc#s8E!%rr<'!!!*#urrE*!rr<0$!!*&u!<3#u!<<*!!<3#u!<3#u!<<*!!;uls!;uls !.k1Es8V6cs6ko*s8Vf]s,@!X"7Q8[S:U]ks+13$s3L`Fk6(bQN/[`(s8W&ds,?sGs8N5jF74/M J,~> #6=emFoRo!s8E!%rr<'!!!*#urrE*!rr<0$!!*&u!<3#u!<<*!!<3#u!<3#u!<<*!!;uls!;uls !.k1Es8V6cs6ku.s8Vf]s,R-Z"7Q8YRXtKis+13$s3L`Fk6(bQNfO),s8W&ds,R*Is8N5jFmjGQ J,~> #6=emF8qc#s8E!%rr<'!!!*#urrE*!rr<0$!!*&u!<3#u!<<*!!<3#u!<3#u!<<*!!;uls!;uls !.k1Es8V6cs6ko*s8Vf]s,@!X"7Q8[S:U]ks+13$s3L`Fk6(bQN/[`(s8W&ds,?sGs8N5jF74/M J,~> &-2b!F8qc#rr<'!!!*'!!!)utr;cisrr<-#!!)utr;cfrrrE&urrE*!rrDusrrDusrr@WMp](9V "on%MN;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sLamu35(n,NFen,J@Fn,NCjmrRr=!.Y~> &-2b!FoRo!rr<'!!!*'!!!)utr;cisrr<-#!!)utr;cfrrrE&urrE*!rrDusrrDusrr@WMp](9V "on%ONrT.Qn,JFJrr_`iR[Sg-JcC<$JcF'rs5sLamuEG,n,NFen,JFHn,NCjmre)A!.Y~> &-2b!F8qc#rr<'!!!*'!!!)utr;cisrr<-#!!)utr;cfrrrE&urrE*!rrDusrrDusrr@WMp](9V "on%MN;rqOn,J@Hrr_`iS=G01JcC<$JcF'rs5sLamu35(n,NFen,J@Fn,NCjmrRr=!.Y~> #lt"oF8qc#rr<&cs8N(Ms3grIk6:nSN/[f:p@&$?s8N2is.#U1s+13$s+13rs8V6as6ko*r9s[c s6ouHrU9dd"RgF#Er^^~> #lt"oFoRo!rr<&cs8N(Ms3grIk6:nSNfO/>p@&$As8N2is-fC-s+13$s+13rs8V6as6ku.r9s[c s6ouJrU9dd"RgL%FT?p~> #lt"oF8qc#rr<&cs8N(Ms3grIk6:nSN/[f:p@&$?s8N2is.#U1s+13$s+13rs8V6as6ko*r9s[c s6ouHrU9dd"RgF#Er^^~> #lt"oF8qc#rr<&gs8N*!s8N(Ms3grIk6:nSN/[f:p@&$?s8N2is.#U1s+13$s+13rs8V6as6ko* r9s[c!q2),r9s[c"RgF#Er^^~> #lt"oFoRo!rr<&gs8N*!s8N(Ms3grIk6:nSNfO/>p@&$As8N2is-fC-s+13$s+13rs8V6as6ku. r9s[c!q2/0r9s[c"RgL%FT?p~> #lt"oF8qc#rr<&gs8N*!s8N(Ms3grIk6:nSN/[f:p@&$?s8N2is.#U1s+13$s+13rs8V6as6ko* r9s[c!q2),r9s[c"RgF#Er^^~> #lt"oF8qc#rr<&fs8;qKs3^lHk6:nSN/[f:p@&$?s8N2is.#U1s+13$s+13rs8V6as6ko*qsOOb rf$dDs8N5jF74/MJ,~> #lt"oFoRo!rr<&fs8;qKs3^lHk6:nSNfO/>p@&$As8N2is-fC-s+13$s+13rs8V6as6ku.qsOOb rf6pFs8N5jFmjGQJ,~> #lt"oF8qc#rr<&fs8;qKs3^lHk6:nSN/[f:p@&$?s8N2is.#U1s+13$s+13rs8V6as6ko*qsOOb rf$dDs8N5jF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN;N&Fs,;p6n,NCj mrRr=!.Y~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."97hMNr/8Hs,N-:n,NCj mre)A!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN;N&Fs,;p6n,NCj mrRr=!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN;E#CN;N)Drrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."97hMNr&5ENr/;Frrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN;E#CN;N)Drrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN;DuCN;E#Crrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."97hMNr&2ENr&5Errhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN;DuCN;E#Crrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJ`hUIJ`hUIc0#3/mu34prrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJ`hUIJ`hUIc0#3/muEFtrrhe5mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJ`hUIJ`hUIc0#3/mu34prrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rnZn,Jo/kCMfIkCMg?k5t\PN:6cLmrRr=!.Y~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+\n,Ji-kCMfIkCMg?k5t\PNpluNmre)A!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rnZn,Jo/kCMfIkCMg?k5t\PN:6cLmrRr=!.Y~> "p"\lF8qc#l2Ub`s8Vlpq#C?or;Z]qk5Y5W!ri6#q#C?oq#C?oli6tbs8Vrrq#C?os8W*!g].<: "on%MN;rqOn,J@HrrDM=s+13$s+13ls6T1VF74/MJ,~> "p"\lFoRo!l2Ub`s8Vlpq#C?or;Z]qk5Y5W!ri6#q#C?oq#C?oli6tbs8Vrrq#C?os8W*!g].<: "on%ONrT.Qn,JFJrrDM=s+13$s+13ls6T1VFmjGQJ,~> "p"\lF8qc#l2Ub`s8Vlpq#C?or;Z]qk5Y5W!ri6#q#C?oq#C?oli6tbs8Vrrq#C?os8W*!g].<: "on%MN;rqOn,J@HrrDM=s+13$s+13ls6T1VF74/MJ,~> "p"\lF8qc#l2Ub`s8W*!rVultq#C?orVults8W*!kPtP^qZ$Qqq#C?oq#C?oli6tbs8W*!rr;uu q>^Hps8W*!g].<:"on%MN;rqOn,J@Hs+0Wimt'qYn$DHbF74/MJ,~> "p"\lFoRo!l2Ub`s8W*!rVultq#C?orVults8W*!kPtP^qZ$Qqq#C?oq#C?oli6tbs8W*!rr;uu q>^Hps8W*!g].<:"on%ONrT.Qn,JFJs+0Wimt'qYn$DHbFmjGQJ,~> "p"\lF8qc#l2Ub`s8W*!rVultq#C?orVults8W*!kPtP^qZ$Qqq#C?oq#C?oli6tbs8W*!rr;uu q>^Hps8W*!g].<:"on%MN;rqOn,J@Hs+0Wimt'qYn$DHbF74/MJ,~> %06FsF8qc#rr<'!!!*&t!<3#s!<3#u!!`H'!<<'!!<)rt!<<)t!<<)t!<<*!!;uls!<<*!!!E6$ !<;ut!<;utrr;uus8W*!rVult"TJH%s8W#trr;uu"oeQ&rr<&us8N)ss8;rss8;rss8N''rr<'! rr<&us8N'!s8;rts8;p$rr<'!!!(mUs5sRcmu35*s7Yp]N;rqXmt$FKN.Hq=N6@1GmfRY"Er^^~> %06FsFoRo!rr<'!!!*&t!<3#s!<3#u!!`H'!<<'!!<)rt!<<)t!<<)t!<<*!!;uls!<<*!!!E6$ !<;ut!<;utrr;uus8W*!rVult"TJH%s8W#trr;uu"oeQ&rr<&us8N)ss8;rss8;rss8N''rr<'! rr<&us8N'!s8;rts8;p$rr<'!!!(mUs5sRcmuEG.s7Yp]NrT.Zmt$LMNe*4ANm!IKmfR_$FT?p~> %06FsF8qc#rr<'!!!*&t!<3#s!<3#u!!`H'!<<'!!<)rt!<<)t!<<)t!<<*!!;uls!<<*!!!E6$ !<;ut!<;utrr;uus8W*!rVult"TJH%s8W#trr;uu"oeQ&rr<&us8N)ss8;rss8;rss8N''rr<'! rr<&us8N'!s8;rts8;p$rr<'!!!(mUs5sRcmu35*s7Yp]N;rqXmt$FKN.Hq=N6@1GmfRY"Er^^~> #6=emF8qc#s7u`qs8N'+rr<'!rr<'!!!*&u!<<*!!<)rt!"/`+!<<'!!<<'!!<3#u!;uls!<<*! !!*&l!<3#u!<<*!!<)rt!"T#/!<3$!s8N'!s8N'!s8E!&rr<'!rr<&ts8N*!s8N'+rr<'!rr<'! !!*&u!<<*!!<3#s!<<*!!<<*!!<<)u!!<0#!8mhVk6:nSN/[f:p@&$?s8W,fJW,/=JW,/=b_uQ% lgFpsmrJJZ~> #6=emFoRo!s7u`qs8N'+rr<'!rr<'!!!*&u!<<*!!<)rt!"/`+!<<'!!<<'!!<3#u!;uls!<<*! !!*&l!<3#u!<<*!!<)rt!"T#/!<3$!s8N'!s8N'!s8E!&rr<'!rr<&ts8N*!s8N'+rr<'!rr<'! !!*&u!<<*!!<3#s!<<*!!<<*!!<<)u!!<0#!8mhVk6:nSNfO/>p@&$As8W,fJW>;AJW>;Ab`2]' lgFpumr\V\~> #6=emF8qc#s7u`qs8N'+rr<'!rr<'!!!*&u!<<*!!<)rt!"/`+!<<'!!<<'!!<3#u!;uls!<<*! !!*&l!<3#u!<<*!!<)rt!"T#/!<3$!s8N'!s8N'!s8E!&rr<'!rr<&ts8N*!s8N'+rr<'!rr<'! !!*&u!<<*!!<3#s!<<*!!<<*!!<<)u!!<0#!8mhVk6:nSN/[f:p@&$?s8W,fJW,/=JW,/=b_uQ% lgFpsmrJJZ~> #6=emF8qc#s8E#us8N*!s8N)ss8N')rr<'!rr<'!s82iurr<&ss8N*!s8N)us8N)ss8N*!s8N'! s8E#us8E#ts8N'#rr<&us82j9rr<'!!!*$!!<<'!!<<'!!<3$!s8N'!s8N'!rVults8W*!r;Zcs #lal)s8N'!s8Vrrr;Zcss8W*!s8W*!s8W*!huE`>"on%MN;rqOn,J@Hs8VQfN:ZK=s6kO=JcC<$ JcGHDq="@`o^Dh[lgFpsmrJJZ~> #6=emFoRo!s8E#us8N*!s8N)ss8N')rr<'!rr<'!s82iurr<&ss8N*!s8N)us8N)ss8N*!s8N'! s8E#us8E#ts8N'#rr<&us82j9rr<'!!!*$!!<<'!!<<'!!<3$!s8N'!s8N'!rVults8W*!r;Zcs #lal)s8N'!s8Vrrr;Zcss8W*!s8W*!s8W*!huE`>"on%ONrT.Qn,JFJs8VQfNq;]?s6kO=JcC<$ JcGHDq="@`o^Dh[lgFpumr\V\~> #6=emF8qc#s8E#us8N*!s8N)ss8N')rr<'!rr<'!s82iurr<&ss8N*!s8N)us8N)ss8N*!s8N'! s8E#us8E#ts8N'#rr<&us82j9rr<'!!!*$!!<<'!!<<'!!<3$!s8N'!s8N'!rVults8W*!r;Zcs #lal)s8N'!s8Vrrr;Zcss8W*!s8W*!s8W*!huE`>"on%MN;rqOn,J@Hs8VQfN:ZK=s6kO=JcC<$ JcGHDq="@`o^Dh[lgFpsmrJJZ~> #lt"oF8qc#rr<&us8)frs82j(rr<'!rr<'!rr<&ts8N*!s82lss8N)us8N)ss8N*!s8N'#rr<&u s8N)ts8N'#rr<&us8N)ts8N'$rr<'!qZ-Zrrrn,NCgN:2>tJcC<$JcGKE !0$aBrVuT[s8VER"* #lt"oFoRo!rr<&us8)frs82j(rr<'!rr<'!rr<&ts8N*!s82lss8N)us8N)ss8N*!s8N'#rr<&u s8N)ts8N'#rr<&us8N)ts8N'$rr<'!qZ-Zrrr #lt"oF8qc#rr<&us8)frs82j(rr<'!rr<'!rr<&ts8N*!s82lss8N)us8N)ss8N*!s8N'#rr<&u s8N)ts8N'#rr<&us8N)ts8N'$rr<'!qZ-Zrrrn,NCgN:2>tJcC<$JcGKE !0$aBrVuT[s8VER"* #lt"oF8qc#rr<&us8N)ss8N*!s8N'+rr<'!rr<'!rr<&ts8N'+rr<'!rr<'!rr<&us8N)ss8N*! s8N'#rr<&us8N)ss8E#ss8N)ts8N'&rr<'!!!)orrr #lt"oFoRo!rr<&us8N)ss8N*!s8N'+rr<'!rr<'!rr<&ts8N'+rr<'!rr<'!rr<&us8N)ss8N*! s8N'#rr<&us8N)ss8E#ss8N)ts8N'&rr<'!!!)orrrp@&$As8W,fs,QjBrr<"Y !q60hJa\0YJa\0YqX=HEq="4\q!\7_lgFpumr\V\~> #lt"oF8qc#rr<&us8N)ss8N*!s8N'+rr<'!rr<'!rr<&ts8N'+rr<'!rr<'!rr<&us8N)ss8N*! s8N'#rr<&us8N)ss8E#ss8N)ts8N'&rr<'!!!)orrr #lt"oF8qc#rr<&us8N*!s8N'+rr<'!rr<'!!!*&u!<<*!!<)rt!##;3!<<'!!<<'!!<3'!rr<'! s8;ots8E!"rr<&us8N)ss8E#ss8N)ts8N'9rr<'!!!*'!!!*'!!!*$!!<<'!!<<'!!<)rt!<<*! !"/`+!<<'!!<3$!s8E#us8N)ss8N*!s8N*!s8N'!s8E#us8N)Vs8V6cs6ko*s8Vf]s,@!Xs6ouH q=":^"n.D/n,NE=mt'qYmt's(n,J@Bn,NFfn,<:_n,NFRmfRY"Er^^~> #lt"oFoRo!rr<&us8N*!s8N'+rr<'!rr<'!!!*&u!<<*!!<)rt!##;3!<<'!!<<'!!<3'!rr<'! s8;ots8E!"rr<&us8N)ss8E#ss8N)ts8N'9rr<'!!!*'!!!*'!!!*$!!<<'!!<<'!!<)rt!<<*! !"/`+!<<'!!<3$!s8E#us8N)ss8N*!s8N*!s8N'!s8E#us8N)Vs8V6cs6ku.s8Vf]s,R-Zs6ouJ q=":^"n.J3n,NE=mt'qYmt's(n,JFDn,NFfn,<:_n,NFRmfR_$FT?p~> #lt"oF8qc#rr<&us8N*!s8N'+rr<'!rr<'!!!*&u!<<*!!<)rt!##;3!<<'!!<<'!!<3'!rr<'! s8;ots8E!"rr<&us8N)ss8E#ss8N)ts8N'9rr<'!!!*'!!!*'!!!*$!!<<'!!<<'!!<)rt!<<*! !"/`+!<<'!!<3$!s8E#us8N)ss8N*!s8N*!s8N'!s8E#us8N)Vs8V6cs6ko*s8Vf]s,@!Xs6ouH q=":^"n.D/n,NE=mt'qYmt's(n,J@Bn,NFfn,<:_n,NFRmfRY"Er^^~> #lt"oF8qc#rr<&ts8;rss8E!,rr<'!!!*$!!<<'!!<)rt!<<)u!!`H'!<<'!!<)rr!<<*!!!WB& !<3$!rr;uuqu?ZrrVultrVult"TJH%s8W#trr;uu#lal)s8N'!s8Vrr!<;utrr;rt%0$;-rr<'! !!*'!!!)orrW!E-!!*'!!!*$!!<<'!!8mhVk6:nSN/[f:p@&$?s8W,fs,?jDrVulcs,7$Js8RZ= Ja\0YJa`I(s,?dBs8W&drVufas8VER"* #lt"oFoRo!rr<&ts8;rss8E!,rr<'!!!*$!!<<'!!<)rt!<<)u!!`H'!<<'!!<)rr!<<*!!!WB& !<3$!rr;uuqu?ZrrVultrVult"TJH%s8W#trr;uu#lal)s8N'!s8Vrr!<;utrr;rt%0$;-rr<'! !!*'!!!)orrW!E-!!*'!!!*$!!<<'!!8mhVk6:nSNfO/>p@&$As8W,fs,R!FrVulcs,I0Ls8RZ= Ja\0YJa`I(s,QpDs8W&drVufas8VER"*O'T!.Y~> #lt"oF8qc#rr<&ts8;rss8E!,rr<'!!!*$!!<<'!!<)rt!<<)u!!`H'!<<'!!<)rr!<<*!!!WB& !<3$!rr;uuqu?ZrrVultrVult"TJH%s8W#trr;uu#lal)s8N'!s8Vrr!<;utrr;rt%0$;-rr<'! !!*'!!!)orrW!E-!!*'!!!*$!!<<'!!8mhVk6:nSN/[f:p@&$?s8W,fs,?jDrVulcs,7$Js8RZ= Ja\0YJa`I(s,?dBs8W&drVufas8VER"* "p"\lF8qc#[/U++LB%;:"on%MN;rqOn,J@Hs8VQfN;`5Ds8;?cMurJJs+0Wimt'qYn+uMQN;;rB s829`s8MKes6K+UF74/MJ,~> "p"\lFoRo![/U++LB%;:"on%ONrT.Qn,JFJs8VQfNrAGFs8;?cNWS\Ls+0Wimt'qYn+uMQNqr/D s829`s8MKes6K+UFmjGQJ,~> "p"\lF8qc#[/U++LB%;:"on%MN;rqOn,J@Hs8VQfN;`5Ds8;?cMurJJs+0Wimt'qYn+uMQN;;rB s829`s8MKes6K+UF74/MJ,~> "p"\lF8qc#[K$7,LB%;:"on%MN;rqOn,J@Hs8VQfN;rAFs8)3aMurJJs+0Wimt'qYn+uMQN;;rB s7u-^rrVZhs6K+UF74/MJ,~> "p"\lFoRo![K$7,LB%;:"on%ONrT.Qn,JFJs8VQfNrSSHs8)3aNWS\Ls+0Wimt'qYn+uMQNqr/D s7u-^rrVZhs6K+UFmjGQJ,~> "p"\lF8qc#[K$7,LB%;:"on%MN;rqOn,J@Hs8VQfN;rAFs8)3aMurJJs+0Wimt'qYn+uMQN;;rB s7u-^rrVZhs6K+UF74/MJ,~> "p"\lF8qc#[f?@-L&_29"on%MN;rqOn,J@Hs8VQbN;2lAMurJJs+0Wimt'qYn+uMQN;;rBs7l'] N;rqDmfRY"Er^^~> "p"\lFoRo![f?@-L&_29"on%ONrT.Qn,JFJs8VQbNqi)CNWS\Ls+0Wimt'qYn+uMQNqr/Ds7l'] NrT.FmfR_$FT?p~> "p"\lF8qc#[f?@-L&_29"on%MN;rqOn,J@Hs8VQbN;2lAMurJJs+0Wimt'qYn+uMQN;;rBs7l'] N;rqDmfRY"Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqXn,J@Hn,84An,J=Jn,NE=mt'qYmt's(n,J@Bn,NF` n,81Hn,NFRmfRY"Er^^~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT.Zn,JFJn,8:Cn,JCLn,NE=mt'qYmt's(n,JFDn,NF` n,87Jn,NFRmfR_$FT?p~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqXn,J@Hn,84An,J=Jn,NE=mt'qYmt's(n,J@Bn,NF` n,81Hn,NFRmfRY"Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqXn,J@Fn,84Cn,J=Jn,NE=mt'qYmt's(n,J@Bn,NFb n,84En,NFRmfRY"Er^^~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT.Zn,JFHn,8:En,JCLn,NE=mt'qYmt's(n,JFDn,NFb n,8:Gn,NFRmfR_$FT?p~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqXn,J@Fn,84Cn,J=Jn,NE=mt'qYmt's(n,J@Bn,NFb n,84En,NFRmfRY"Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqXn,J@Dn,84En,J=Jn,NE=mt'qYmt's(n,J@Bn,NFd n,84Cn,NFRmfRY"Er^^~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT.Zn,JFFn,8:Gn,JCLn,NE=mt'qYmt's(n,JFDn,NFd n,8:En,NFRmfR_$FT?p~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqXn,J@Dn,84En,J=Jn,NE=mt'qYmt's(n,J@Bn,NFd n,84Cn,NFRmfRY"Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqXn,J@Bn,81Kmu34os8RZ=Ja\0YJa`I(s,?dBs8W,f rJ^UAs8VER"* "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT.Zn,JFDn,87MmuEFss8RZ=Ja\0YJa`I(s,QpDs8W,f rJpaCs8VER"*O'T!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqXn,J@Bn,81Kmu34os8RZ=Ja\0YJa`I(s,?dBs8W,f rJ^UAs8VER"* "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqXn,J@@n,/+Gn,NE=mt'qYmt's(n,J@Bn,NFdN;2lA s6K+UF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT.Zn,JFBn,/1In,NE=mt'qYmt's(n,JFDn,NFdNqi)C s6K+UFmjGQJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqXn,J@@n,/+Gn,NE=mt'qYmt's(n,J@Bn,NFdN;2lA s6K+UF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqXn,J@>n,A7In,NE=N.Hq=N.Hr_N;;rBs8S&On,NFR mfRY"Er^^~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT.Zn,JF@n,A=Kn,NE=Ne*4ANe*5cNqr/Ds8S,Qn,NFR mfR_$FT?p~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqXn,J@>n,A7In,NE=N.Hq=N.Hr_N;;rBs8S&On,NFR mfRY"Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqXn,J@ "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT.Zn,JF>mfJO "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqXn,J@ "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqXn,J>ts+13$s+13ps6K+UF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT.Zn,JE!s+13$s+13ps6K+UFmjGQJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqXn,J>ts+13$s+13ps6K+UF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqXmf8;ts+13$s+13os6K+UF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT.Zmf8B!s+13$s+13os6K+UFmjGQJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqXmf8;ts+13$s+13os6K+UF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/mt'qYmt'r6mfRY"Er^^~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT-1mt'qYmt'r6mfR_$FT?p~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/mt'qYmt'r6mfRY"Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/mt'qYmt'r6mfRY"Er^^~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT-1mt'qYmt'r6mfR_$FT?p~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/mt'qYmt'r6mfRY"Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/mt'qYmt'r6mfRY"Er^^~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT-1mt'qYmt'r6mfR_$FT?p~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/mt'qYmt'r6mfRY"Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<_ds+13ks,?CKF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT-1n)<_ds+13ks,?CKFmjGQJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<_ds+13ks,?CKF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<^8s+-\kSB@?%s,?CKF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT-1n)<^8s+-ViR`_'!s,?CKFmjGQJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<^8s+-\kSB@?%s,?CKF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<^8s+-\kSBIE'kPpM0"* "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT-1n)<^8s+-ViR`h-#kPpM0"*O'T!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<^8s+-\kSBIE'kPpM0"* "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<^:s.#U1s+13qs8V6^s,?CKF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT-1n)<^:s-fC-s+13qs8V6^s,?CKFmjGQJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<^:s.#U1s+13qs8V6^s,?CKF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<^:s.#U1s+13qs8V6^s,?CKF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT-1n)<^:s-fC-s+13qs8V6^s,?CKFmjGQJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<^:s.#U1s+13qs8V6^s,?CKF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<^:s.#U1s+13qs8V6^s,?CKF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT-1n)<^:s-fC-s+13qs8V6^s,?CKFmjGQJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<^:s.#U1s+13qs8V6^s,?CKF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqSn,37En,EC`n,<=Qn,ECfn,EC@n,ECXn,ECYmfi`] SH&Thr;Q`smJd.dq#:UNss8N(Ms.fVok5bPWn,*1\n,ECXn,ECMn,ECXn,ECM mfRY"Er^^~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT.Un,37En,EC`n,<=Qn,ECfn,EC@n,ECXn,ECYmfi`[ RfEBfr;Q`smJd.dq#:UNss8N(Ms.fVok5bPWn,*1\n,ECXn,ECMn,ECXn,ECM mfR_$FT?p~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqSn,37En,EC`n,<=Qn,ECfn,EC@n,ECXn,ECYmfi`] SH&Thr;Q`smJd.dq#:UNss8N(Ms.fVok5bPWn,*1\n,ECXn,ECMn,ECXn,ECM mfRY"Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqTn,ECfn,ECHn,ECan,ECPn,ECF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT.Vn,ECfn,ECHn,ECan,ECPn,ECFmjGQJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqTn,ECfn,ECHn,ECan,ECPn,ECF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqUn,ECcn,ECfn,E@imf3@Vr;Zrg!!)Kd!<;Nf!!M`j !:TCT!;u "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT.Wn,ECcn,ECfn,E@imf3@Vr;Zrg!!)Kd!<;Nf!!M`j !:TCT!;u "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqUn,ECcn,ECfn,E@imf3@Vr;Zrg!!)Kd!<;Nf!!M`j !:TCT!;u "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqUn,ECcn,ECfn,E@fn+?\\n,E@fn,<:kmf3@Vmf3@a n,ECfn,ECfn,E@fn,<;)mf3@V!!)KV!!)KV!!)KV!!)Hf!:T@V!:Tme!q-*hr9sXcs6osf!:Tme &+9Jumf3@Vmf3@V!!)Hf!<2He!#4l%!:T@V!:Kmfmf3@Vmf3@Vmf3@dmg&l_SH&ThrrE&u!s&B$ !<3!1!<<'!!<<'!s8N*!rr<'!rrE&u"p"]'!<<'!rr4DIs8N'!s8N'!rr<'!!<<'!s8N'!s8N*! rrE*!!<<'!s8N*!rrE*!!<2uu!.k0Ms8V6^s7l'^!<)Bd!<;Nf!#4l%!:Kmfn*^5Vmf3@Vmf3@V mf3@bn,ECfn,E@fn,<:tmf3@V!!)KV!!)Hf!:KmfrpTje&FTT!n*^5Vmf3@V!!)KV!!)ET"* "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT.Wn,ECcn,ECfn,E@fn+?\\n,E@fn,<:kmf3@Vmf3@a n,ECfn,ECfn,E@fn,<;)mf3@V!!)KV!!)KV!!)KV!!)Hf!:T@V!:Tme!q-*hr9sXcs6osf!:Tme &+9Jumf3@Vmf3@V!!)Hf!<2He!#4l%!:T@V!:Kmfmf3@Vmf3@Vmf3@dmg&l]RfEBfrrE&u!s&B$ !<3!1!<<'!!<<'!s8N*!rr<'!rrE&u"p"]'!<<'!rr4DIs8N'!s8N'!rr<'!!<<'!s8N'!s8N*! rrE*!!<<'!s8N*!rrE*!!<2uu!.k0Ms8V6^s7l'^!<)Bd!<;Nf!#4l%!:Kmfn*^5Vmf3@Vmf3@V mf3@bn,ECfn,E@fn,<:tmf3@V!!)KV!!)Hf!:KmfrpTje&FTT!n*^5Vmf3@V!!)KV!!)ET"*O'T !.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqUn,ECcn,ECfn,E@fn+?\\n,E@fn,<:kmf3@Vmf3@a n,ECfn,ECfn,E@fn,<;)mf3@V!!)KV!!)KV!!)KV!!)Hf!:T@V!:Tme!q-*hr9sXcs6osf!:Tme &+9Jumf3@Vmf3@V!!)Hf!<2He!#4l%!:T@V!:Kmfmf3@Vmf3@Vmf3@dmg&l_SH&ThrrE&u!s&B$ !<3!1!<<'!!<<'!s8N*!rr<'!rrE&u"p"]'!<<'!rr4DIs8N'!s8N'!rr<'!!<<'!s8N'!s8N*! rrE*!!<<'!s8N*!rrE*!!<2uu!.k0Ms8V6^s7l'^!<)Bd!<;Nf!#4l%!:Kmfn*^5Vmf3@Vmf3@V mf3@bn,ECfn,E@fn,<:tmf3@V!!)KV!!)Hf!:KmfrpTje&FTT!n*^5Vmf3@V!!)KV!!)ET"* "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqUn,ECcn,ECfn,E@fn,<=en,<=en,ECfn,E@pmf3@V mf3@Vmf3@an,ECfn,ECfn,E@omf3@Vmf3@V!!)obrrE)frr "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT.Wn,ECcn,ECfn,E@fn,<=en,<=en,ECfn,E@pmf3@V mf3@Vmf3@an,ECfn,ECfn,E@omf3@Vmf3@V!!)obrrE)frr "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqUn,ECcn,ECfn,E@fn,<=en,<=en,ECfn,E@pmf3@V mf3@Vmf3@an,ECfn,ECfn,E@omf3@Vmf3@V!!)obrrE)frr "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqUn,ECcn,ECfn,E@hmf3@en,ECen,!(lmf3@Vmf3@V mf3@an,ECfn,ECfn,E@omf3@Vmf3@V!!)obrrE)frr "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT.Wn,ECcn,ECfn,E@hmf3@en,ECen,!(lmf3@Vmf3@V mf3@an,ECfn,ECfn,E@omf3@Vmf3@V!!)obrrE)frr "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqUn,ECcn,ECfn,E@hmf3@en,ECen,!(lmf3@Vmf3@V mf3@an,ECfn,ECfn,E@omf3@Vmf3@V!!)obrrE)frr "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqUn,ECcn,ECfn,E@hmf3@en,ECen,ECcn,ECfn,ECf n,ECan,ECfn,ECfn,E@omf3@Vmf3@V!!)obrrE)frr "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT.Wn,ECcn,ECfn,E@hmf3@en,ECen,ECcn,ECfn,ECf n,ECan,ECfn,ECfn,E@omf3@Vmf3@V!!)obrrE)frr "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqUn,ECcn,ECfn,E@hmf3@en,ECen,ECcn,ECfn,ECf n,ECan,ECfn,ECfn,E@omf3@Vmf3@V!!)obrrE)frr "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqTn,ECfn,34dn,<:gmf3@en,ECen,ECfn,E@rmf3@V mf3@Vmf3@V!;u-!<<'!s8N*! rrE&u&cht3!<<'!s8N*!rrE*!!<<'!rr2ruJcDbMs5sC^q="=`rpTje*U`t.n*^5Vmf3@V!!)KV !!)Hf!:T@V!:T@V!:Kpdn,ECfn,EA!mf3@Vmf3@V!!)KV!!)Hf!<2Hd!<2He!<;Nf!#=r&!:Kmf n*^5Vn*^5Vn*^5Vn*^5Vq "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT.Vn,ECfn,34dn,<:gmf3@en,ECen,ECfn,E@rmf3@V mf3@Vmf3@V!;u-!<<'!s8N*! rrE&u&cht3!<<'!s8N*!rrE*!!<<'!rr2ruJcDbMs5sC^q="=`rpTje*U`t.n*^5Vmf3@V!!)KV !!)Hf!:T@V!:T@V!:Kpdn,ECfn,EA!mf3@Vmf3@V!!)KV!!)Hf!<2Hd!<2He!<;Nf!#=r&!:Kmf n*^5Vn*^5Vn*^5Vn*^5Vq "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqTn,ECfn,34dn,<:gmf3@en,ECen,ECfn,E@rmf3@V mf3@Vmf3@V!;u-!<<'!s8N*! rrE&u&cht3!<<'!s8N*!rrE*!!<<'!rr2ruJcDbMs5sC^q="=`rpTje*U`t.n*^5Vmf3@V!!)KV !!)Hf!:T@V!:T@V!:Kpdn,ECfn,EA!mf3@Vmf3@V!!)KV!!)Hf!<2Hd!<2He!<;Nf!#=r&!:Kmf n*^5Vn*^5Vn*^5Vn*^5Vq "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqSn,37dn,E@kmf3@V!!*#errE#dr;cldrrE)frrE&e rrDrbrrE&err "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT.Un,37dn,E@kmf3@V!!*#errE#dr;cldrrE)frrE&e rrDrbrrE&err "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rqSn,37dn,E@kmf3@V!!*#errE#dr;cldrrE)frrE&e rrDrbrrE&err "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n,DbU!9NYNs.#U1s+13qs8V6^s0_:q!86fCF74/M J,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT-1n,DbU!9NYNs-fC-s+13qs8V6^s0_:q!86fCFmjGQ J,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n,DbU!9NYNs.#U1s+13qs8V6^s0_:q!86fCF74/M J,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n,MkV!9NYNs.#U1s+13qs8V6^s0hCr!86fCF74/M J,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT-1n,MkV!9NYNs-fC-s+13qs8V6^s0hCr!86fCFmjGQ J,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n,MkV!9NYNs.#U1s+13qs8V6^s0hCr!86fCF74/M J,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/mfMqX!9ESMs.#U1s+13qs8V6^s0qIs!8-`BF74/M J,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT-1mfMqX!9ESMs-fC-s+13qs8V6^s0qIs!8-`BFmjGQ J,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/mfMqX!9ESMs.#U1s+13qs8V6^s0qIs!8-`BF74/M J,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<^:s.#U1s+13qs8V6^s,?CKF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT-1n)<^:s-fC-s+13qs8V6^s,?CKFmjGQJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<^:s.#U1s+13qs8V6^s,?CKF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<^:s.#U1kCMg?k5bO@mfRY"Er^^~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT-1n)<^:s-fC-kCMg?k5bO@mfR_$FT?p~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<^:s.#U1kCMg?k5bO@mfRY"Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<^9s."Z'J`k5>!<8#H"* "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT-1n)<^9s-eN%J`k5>!<8#H"*O'T!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<^9s."Z'J`k5>!<8#H"* "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<_ds+13ks,?CKF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT-1n)<_ds+13ks,?CKFmjGQJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/n)<_ds+13ks,?CKF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/mt'qYmt'r6mfRY"Er^^~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT-1mt'qYmt'r6mfR_$FT?p~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/mt'qYmt'r6mfRY"Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/mt'qYmt'r6mfRY"Er^^~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT-1mt'qYmt'r6mfR_$FT?p~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rp/mt'qYmt'r6mfRY"Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rnXmt(Lis+13$s2k<-mfRY"Er^^~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+Zmt(Lis+13$s2k<-mfR_$FT?p~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rnXmt(Lis+13$s2k<-mfRY"Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rnYn,Is/JXh:]JXjoR!WVWVN!/TjmrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+[n,Is-JXV.YJXXcN!WVWVNWefnmr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rnYn,Is/JXh:]JXjoR!WVWVN!/TjmrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rnYn,Is/JXh:]JXjrS!pBUPmu.GMmrRr=!.Y~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+[n,Is-JXV.YJXXfO!pBUPmu@SOmre)A!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rnYn,Is/JXh:]JXjrS!pBUPmu.GMmrRr=!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN;DuCN;E#Crrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."97hMNr&2ENr&5Errhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN;DuCN;E#Crrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN;N&Es,?gCs8N5j F74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."97hMNr/8Gs,QsEs8N5j FmjGQJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN;N&Es,?gCs8N5j F74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJe,KCJo`"mkmJd.d_uB]:JcC<$JcF[.s5sLa mu35&mfNNJN;N)Drrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFe,KCJo`"mkmJd.d_uB]:JcC<$JcF[.s5sLa muEG*mfNNLNr/;Frrhe5mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJe,KCJo`"mkmJd.d_uB]:JcC<$JcF[.s5sLa mu35&mfNNJN;N)Drrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn\n,JoJs82ljrr<&Arr<&:rr<%Ms+13$s4IAOk6(bQ N/[]'s8W+XqsXRb"RgF#Er^^~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+^n,JiFs82ljrr<&Arr<&:rr<%Ms+13$s4IAOk6(bQ NfO&+s8W+ZqsXRb"RgL%FT?p~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn\n,JoJs82ljrr<&Arr<&:rr<%Ms+13$s4IAOk6(bQ N/[]'s8W+XqsXRb"RgF#Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn^n,JoJs8N)urr<&nrr<&Arr<&:rr<%Ms+13$s4IAO k6(bQN/[]'s8N/hN/[]'s8N5jF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+`n,JiFs8N)urr<&nrr<&Arr<&:rr<%Ms+13$s4IAO k6(bQNfO&+s8N/hNfO&+s8N5jFmjGQJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn^n,JoJs8N)urr<&nrr<&Arr<&:rr<%Ms+13$s4IAO k6(bQN/[]'s8N/hN/[]'s8N5jF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn^n,JoJs8N)urr<&us8E#ts82lrs8E#trrE-"rVuru rW!!!!<3#t!<3!!!<<#urr;rtr;Z`rrr;lrs8W&ur;Z`rpAb*ls8N*"s8E#ss8E#trrE-"rW)uu r;cisquHcsrW)lrrW)uu! "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+`n,JiFs8N)urr<&us8E#ts82lrs8E#trrE-"rVuru rW!!!!<3#t!<3!!!<<#urr;rtr;Z`rrr;lrs8W&ur;Z`rpAb*ls8N*"s8E#ss8E#trrE-"rW)uu r;cisquHcsrW)lrrW)uu! "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn^n,JoJs8N)urr<&us8E#ts82lrs8E#trrE-"rVuru rW!!!!<3#t!<3!!!<<#urr;rtr;Z`rrr;lrs8W&ur;Z`rpAb*ls8N*"s8E#ss8E#trrE-"rW)uu r;cisquHcsrW)lrrW)uu! "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn^n,JoJs8N)urrW9$rrE&u!!*#u!!)rs!!*#u!!*#u !!)rs"9AH%rrE#t!!)utrrE*!!!)ut!!)ut!!*#u!!*#u!!)lq!!)ut!!*#u!!)fo!!*#u!s&B$ !<3!#!<<'!rr2rurr2ruq#: "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+`n,JiFs8N)urrW9$rrE&u!!*#u!!)rs!!*#u!!*#u !!)rs"9AH%rrE#t!!)utrrE*!!!)ut!!)ut!!*#u!!*#u!!)lq!!)ut!!*#u!!)fo!!*#u!s&B$ !<3!#!<<'!rr2rurr2ruq#: "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn^n,JoJs8N)urrW9$rrE&u!!*#u!!)rs!!*#u!!*#u !!)rs"9AH%rrE#t!!)utrrE*!!!)ut!!)ut!!*#u!!*#u!!)lq!!)ut!!*#u!!)fo!!*#u!s&B$ !<3!#!<<'!rr2rurr2ruq#: "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn^n,JoJs8N)urrN3#s82lrrr<&ss82lrrr<&srr`?% !<3&trr<&trr<&urr<&trr<&ss8E#srr<&qrr<&trr<&krr<&urrW9$rrE&u!W`9#quH`r!!)or r;cis!!)lq!!)ut!!*#u!s&B$!<2uu!.k0$s+14>s8V6as6ko*rpTmerU9cFrU9dd"RgF#Er^^~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+`n,JiFs8N)urrN3#s82lrrr<&ss82lrrr<&srr`?% !<3&trr<&trr<&urr<&trr<&ss8E#srr<&qrr<&trr<&krr<&urrW9$rrE&u!W`9#quH`r!!)or r;cis!!)lq!!)ut!!*#u!s&B$!<2uu!.k0$s+14>s8V6as6ku.rpTmerU9cHrU9dd"RgL%FT?p~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn^n,JoJs8N)urrN3#s82lrrr<&ss82lrrr<&srr`?% !<3&trr<&trr<&urr<&trr<&ss8E#srr<&qrr<&trr<&krr<&urrW9$rrE&u!W`9#quH`r!!)or r;cis!!)lq!!)ut!!*#u!s&B$!<2uu!.k0$s+14>s8V6as6ko*rpTmerU9cFrU9dd"RgF#Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn^n,JoJs8N)urrW9$rrDoq!!)rs!!)lq!!)rs"9AH% rrE#t!!)ut!!*#u!!)ut!!)ip!!*#u!!)lq!!)ut!!)Zk!!*#u!s&B$!<3!#!<<'!qYpNqr;Q`s rr2rurr2ruqYpNqrVlitrr3'#s8N)urr<%Ms+13$s7$'gk6(bQN/[c)s8W#cs,?sGs8N5jF74/M J,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+`n,JiFs8N)urrW9$rrDoq!!)rs!!)lq!!)rs"9AH% rrE#t!!)ut!!*#u!!)ut!!)ip!!*#u!!)lq!!)ut!!)Zk!!*#u!s&B$!<3!#!<<'!qYpNqr;Q`s rr2rurr2ruqYpNqrVlitrr3'#s8N)urr<%Ms+13$s7$'gk6(bQNfO,-s8W#cs,R*Is8N5jFmjGQ J,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn^n,JoJs8N)urrW9$rrDoq!!)rs!!)lq!!)rs"9AH% rrE#t!!)ut!!*#u!!)ut!!)ip!!*#u!!)lq!!)ut!!)Zk!!*#u!s&B$!<3!#!<<'!qYpNqr;Q`s rr2rurr2ruqYpNqrVlitrr3'#s8N)urr<%Ms+13$s7$'gk6(bQN/[c)s8W#cs,?sGs8N5jF74/M J,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn^n,JoJs8N)urrW9$rrE&u!!*#u!!*#u!W`6#rr2ru rr2rur;Qm"rrE'!rVlitrVlitrr2rurVlitrVlitrr2rurr2rurr2rurr2rurVlitrr2ruq#:s8V6es6ko*n*g;VqsXQDrpTme"RgF#Er^^~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+`n,JiFs8N)urrW9$rrE&u!!*#u!!*#u!W`6#rr2ru rr2rur;Qm"rrE'!rVlitrVlitrr2rurVlitrVlitrr2rurr2rurr2rurr2rurVlitrr2ruq#:s8V6es6ku.n*g;VqsXQFrpTme"RgL%FT?p~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn^n,JoJs8N)urrW9$rrE&u!!*#u!!*#u!W`6#rr2ru rr2rur;Qm"rrE'!rVlitrVlitrr2rurVlitrVlitrr2rurr2rurr2rurr2rurVlitrr2ruq#:s8V6es6ko*n*g;VqsXQDrpTme"RgF#Er^^~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn\n,JoJs82lqs8E#rs8E#ts8E#ts8;rts8N'&rrE'! !<;rs!<<#us8W*!!<;rsrr;rtr;Z`rs8Vusrr;rtpAb*lrr;osrVuisrr;osrVuis!WN0!s8E#u s82lrs8E#us8E#us8N(Ms+13$s7--hk6M%UN/[5os8Vras,@!Hs8N5jF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+^n,JiFs82lqs8E#rs8E#ts8E#ts8;rts8N'&rrE'! !<;rs!<<#us8W*!!<;rsrr;rtr;Z`rs8Vusrr;rtpAb*lrr;osrVuisrr;osrVuis!WN0!s8E#u s82lrs8E#us8E#us8N(Ms+13$s7--hk6M%UNfNSss8Vras,R-Js8N5jFmjGQJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn\n,JoJs82lqs8E#rs8E#ts8E#ts8;rts8N'&rrE'! !<;rs!<<#us8W*!!<;rsrr;rtr;Z`rs8Vusrr;rtpAb*lrr;osrVuisrr;osrVuis!WN0!s8E#u s82lrs8E#us8E#us8N(Ms+13$s7--hk6M%UN/[5os8Vras,@!Hs8N5jF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJQN$pbJcC<$JcE@^s5sUdmu34os8Vo`s,@!H s8N5jF74/MJ,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFQN$pbJcC<$JcE@^s5sUdmuEFss8Vo`s,R-J s8N5jFmjGQJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJQN$pbJcC<$JcE@^s5sUdmu34os8Vo`s,@!H s8N5jF74/MJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJQN$pbJcC<$JcE@^s5sUdmu34os8Vl_s,73O s8VP/mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFQN$pbJcC<$JcE@^s5sUdmuEFss8Vl_s,I?Q s8VP1mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJQN$pbJcC<$JcE@^s5sUdmu34os8Vl_s,73O s8VP/mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJQiI$bJcC<$JcEC_s5sRcmu35*s7M "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFQiI$bJcC<$JcEC_s5sRcmuEG.s7MBWn,NFV FmjGQJ,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJQiI$bJcC<$JcEC_s5sRcmu35*s7M "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."TRqLN;rL.s8N5jF74/M J,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."TRqNNrS^2s8N5jFmjGQ J,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."TRqLN;rL.s8N5jF74/M J,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:?iMmrRr=!.Y~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."97hMNq!&Omre)A!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:?iMmrRr=!.Y~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:[&SN;rqHF74/M J,~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."97hMNq<8UNrT.JFmjGQ J,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."97hKN:[&SN;rqHF74/M J,~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcC<$ci=%."on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcC<$ci=%."on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sRcmu35*s7D9Mrr_`iS=G01JcC<$JcF'rs5sRcmu35*s7D9Mrrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sRcmuEG.s7D?Orr_`iR[Sg-JcC<$JcF'rs5sRcmuEG.s7D?Orrhe5mr\V\~> "p"\lF8qc#JcE7[s5sRcmu35*s7D9Mrr_`iS=G01JcC<$JcF'rs5sRcmu35*s7D9Mrrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sObmu35*o8N_L"7Q8[S:U]ks+13$s3L`Fk61hRN/[f.N;rn\mrRr=!.Y~> "p"\lFoRo!JcE7[s5sObmuEG.o8`kN"7Q8YRXtKis+13$s3L`Fk61hRNfO/2NrT+^mre)A!.Y~> "p"\lF8qc#JcE7[s5sObmu35*o8N_L"7Q8[S:U]ks+13$s3L`Fk61hRN/[f.N;rn\mrRr=!.Y~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG!n,NCin,JiFJcC<$JcC<$ci=%."97hMNq2Z=rrhe5mr\V\~> "p"\lF8qc#JcE7[s5sLamu34rn,NCin,JoJJcC<$JcC<$ci=%."97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu34prr_`iS=G01JcC<$JcF'rs5sLamu34prrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEFtrr_`iR[Sg-JcC<$JcF'rs5sLamuEFtrrhe5mr\V\~> "p"\lF8qc#JcE7[s5sLamu34prr_`iS=G01JcC<$JcF'rs5sLamu34prrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sObmu34oo`#,Ss8VQfS=G01JcC<$JcF'rs5sObmu34oo`#/Ts8VP/mrJJZ~> "p"\lFoRo!JcE7[s5sObmuEFso`#,Us8VQfR[Sg-JcC<$JcF'rs5sObmuEFso`#/Vs8VP1mr\V\~> "p"\lF8qc#JcE7[s5sObmu34oo`#,Ss8VQfS=G01JcC<$JcF'rs5sObmu34oo`#/Ts8VP/mrJJZ~> "p"\lF8qc#JcE7[s5sUdmu34os8Vl_s,70Ns8VQfS=G01JcC<$JcF'rs5sUdmu34os8Vl_s,73O s8VP/mrJJZ~> "p"\lFoRo!JcE7[s5sUdmuEFss8Vl_s,I "p"\lF8qc#JcE7[s5sUdmu34os8Vl_s,70Ns8VQfS=G01JcC<$JcF'rs5sUdmu34os8Vl_s,73O s8VP/mrJJZ~> "p"\lF8qc#JcE7[s5sXemu34on,NF`n,J=Nn,NFVs.#U1s+13$s+13rs8V6es6ko*n*g;Vq="?B #Oh]mmrRr=!.Y~> "p"\lFoRo!JcE7[s5sXemuEFsn,NF`n,JCPn,NFVs-fC-s+13$s+13rs8V6es6ku.n*g;Vq="?D #Oh]mmre)A!.Y~> "p"\lF8qc#JcE7[s5sXemu34on,NF`n,J=Nn,NFVs.#U1s+13$s+13rs8V6es6ko*n*g;Vq="?B #Oh]mmrRr=!.Y~> "p"\lF8qc#JcE7[s5sXemu34on,NFan,J@Hn,NCin,JoJJcC<$JcC<$ci=%.#QO7ON:668s8)3a N;rAHrrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sXemuEFsn,NFan,JFJn,NCin,JiFJcC<$JcC<$ci=%.#QO7QNplH:s8)3a NrSSJrrhe5mr\V\~> "p"\lF8qc#JcE7[s5sXemu34on,NFan,J@Hn,NCin,JoJJcC<$JcC<$ci=%.#QO7ON:668s8)3a N;rAHrrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu35)n,NFbn,J@Hn,NCin,JoJJcC<$JcC<$ci=%."97hKN;i;Gs829b N;rAHrrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG-n,NFbn,JFJn,NCin,JiFJcC<$JcC<$ci=%."97hMNrJMIs829b NrSSJrrhe5mr\V\~> "p"\lF8qc#JcE7[s5sLamu35)n,NFbn,J@Hn,NCin,JoJJcC<$JcC<$ci=%."97hKN;i;Gs829b N;rAHrrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu35)n,NFcn,J@Gn,NCin,JoJJcC<$JcC<$ci=%."97hKN;i;Gs8;?c N;i;Grrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG-n,NFcn,JFIn,NCin,JiFJcC<$JcC<$ci=%."97hMNrJMIs8;?c NrJMIrrhe5mr\V\~> "p"\lF8qc#JcE7[s5sLamu35)n,NFcn,J@Gn,NCin,JoJJcC<$JcC<$ci=%."97hKN;i;Gs8;?c N;i;Grrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu35(n,NFdn,J@Gn,NCin,JoJJcC<$JcC<$ci=%."97hKN;`5Fs8DEd N;i;Grrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG,n,NFdn,JFIn,NCin,JiFJcC<$JcC<$ci=%."97hMNrAGHs8DEd NrJMIrrhe5mr\V\~> "p"\lF8qc#JcE7[s5sLamu35(n,NFdn,J@Gn,NCin,JoJJcC<$JcC<$ci=%."97hKN;`5Fs8DEd N;i;Grrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu35(n,NFen,J@Fn,NCin,JoJJcC<$JcC<$ci=%."97hKN;`5Fs8MKe N;`5Frrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG,n,NFen,JFHn,NCin,JiFJcC<$JcC<$ci=%."97hMNrAGHs8MKe NrAGHrrhe5mr\V\~> "p"\lF8qc#JcE7[s5sLamu35(n,NFen,J@Fn,NCin,JoJJcC<$JcC<$ci=%."97hKN;`5Fs8MKe N;`5Frrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu35'n,NFfn,J@Fn,NCin,JoJJcC<$JcC<$ci=%."97hKN;W/Es8VQf N;`5Frrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG+n,NFfn,JFHn,NCin,JiFJcC<$JcC<$ci=%."97hMNr8AGs8VQf NrAGHrrhe5mr\V\~> "p"\lF8qc#JcE7[s5sLamu35'n,NFfn,J@Fn,NCin,JoJJcC<$JcC<$ci=%."97hKN;W/Es8VQf N;`5Frrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu35'n,NChmu35'n,NCin,JoJJcC<$JcC<$ci=%."97hKN;W/ErrVYJ N;W/Errhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG+n,NChmuEG+n,NCin,JiFJcC<$JcC<$ci=%."97hMNr8AGrrVYL Nr8AGrrhe5mr\V\~> "p"\lF8qc#JcE7[s5sLamu35'n,NChmu35'n,NCin,JoJJcC<$JcC<$ci=%."97hKN;W/ErrVYJ N;W/Errhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu35&mf "p"\lFoRo!JcE7[s5sLamuEG*mf "p"\lF8qc#JcE7[s5sLamu35&mf "p"\lF8qc#JcE7[s5sLamu35&mfNNJN;N)Drr_`iS=G01JcC<$JcF'rs5sLamu35&mfNNJN;N)D rrhe3mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG*mfNNLNr/;Frr_`iR[Sg-JcC<$JcF'rs5sLamuEG*mfNNLNr/;F rrhe5mr\V\~> "p"\lF8qc#JcE7[s5sLamu35&mfNNJN;N)Drr_`iS=G01JcC<$JcF'rs5sLamu35&mfNNJN;N)D rrhe3mrJJZ~> "p"\lF8qc#JcE7[s5sLamu35%n,J@Dn,NCin,JoJJcC<$JcC<$ci=%."97hKN;E#CN;N)Drrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG)n,JFFn,NCin,JiFJcC<$JcC<$ci=%."97hMNr&5ENr/;Frrhe5 mr\V\~> "p"\lF8qc#JcE7[s5sLamu35%n,J@Dn,NCin,JoJJcC<$JcC<$ci=%."97hKN;E#CN;N)Drrhe3 mrJJZ~> "p"\lF8qc#JcE7[s5sLamu35%mf8=Cn,NCin,JoJJcC<$JcC<$ci=%."97hKN;DuCN;E#Crrhe3 mrJJZ~> "p"\lFoRo!JcE7[s5sLamuEG)mf8CEn,NCin,JiFJcC<$JcC<$ci=%."97hMNr&2ENr&5Errhe5 mr\V\~> "p"\lF8qc#JcE7[s5sLamu35%mf8=Cn,NCin,JoJJcC<$JcC<$ci=%."97hKN;DuCN;E#Crrhe3 mrJJZ~> "p"\lF8qc#J`jK)"97hKN:?iLn,JoJJ`hUIJ`hUIc0#3/mu34prrhe3mrJJZ~> "p"\lFoRo!J`jK)"97hMNq!&Nn,JiFJ`hUIJ`hUIc0#3/muEFtrrhe5mr\V\~> "p"\lF8qc#J`jK)"97hKN:?iLn,JoJJ`hUIJ`hUIc0#3/mu34prrhe3mrJJZ~> "T\SkF8qb]kI'ISs6kp8rrVZhS:TjSkCMfIkKN)js6kp8rrhe3mrJJZ~> "T\SkFoRn]kI'ISs6l!:rrVZhRXsXQkCMfIkKN)js6l!:rrhe5mr\V\~> "T\SkF8qb]kI'ISs6kp8rrVZhS:TjSkCMfIkKN)js6kp8rrhe3mrJJZ~> !s&AiF+O@ss6T3*s+13$s+13ls6T1VF74/MJ,~> !s&AiFb0Rus6T3*s+13$s+13ls6T1VFmjGQJ,~> !s&AiF+O@ss6T3*s+13$s+13ls6T1VF74/MJ,~> !s&AiF+Ne2mt'qYmt'qYn'LM*F74/MJ,~> !s&AiFb0"4mt'qYmt'qYn'LM*FmjGQJ,~> !s&AiF+Ne2mt'qYmt'qYn'LM*F74/MJ,~> "9AJjF74[=[#F;=JW,/=JW,/=bDbcU"* "9AJjFmjmA[#XG?JW>;AJW>;AbDtoW"*O'T!.Y~> "9AJjF74[=[#F;=JW,/=JW,/=bDbcU"* "9AJjF74[=[>Y+clL0:_JW,/=JW.g3!<;BR"* "9AJjFmjmA[>k7elL0:aJW>;AJW@s7!<;BR"*O'T!.Y~> "9AJjF74[=[>Y+clL0:_JW,/=JW.g3!<;BR"* "p"\lF75'HoBu_[mt(MkrrVZhs7Gd[s6B(QN:ZK=s6kO=JcC<$JcG3=!q60ho^Dh[lgFpsmrJJZ~> "p"\lFmk?NoBu_[mt(MkrrVZhs7Gd[s6B(QNq;]?s6kO=JcC<$JcG3=!q60ho^Dh[lgFpumr\V\~> "p"\lF75'HoBu_[mt(MkrrVZhs7Gd[s6B(QN:ZK=s6kO=JcC<$JcG3=!q60ho^Dh[lgFpsmrJJZ~> "p"\lF75'Hp$_q\!K?Jus4RDQN:6`Fp@&%]lL4b3p$_q\!K?Jus+13$s+14>rrJ)IrVuT[s8VER "* "p"\lFmk?Np$_q\!KQW"s4RDQNplrHp@&%]lL4b5p$_q\!KQW"s+13$s+14>rrJ/KrVuT[s8VER "*O'T!.Y~> "p"\lF75'Hp$_q\!K?Jus4RDQN:6`Fp@&%]lL4b3p$_q\!K?Jus+13$s+14>rrJ)IrVuT[s8VER "* "p"\lF75'Hp[A+]s,7$Js8RZ=h!b9%!:Tgbq!\7_lL4b3p[A+]s,7$Js8RZ=Ja\0YJa`4!s,6sH qu?H[s8VER"* "p"\lFmk?Np[A+]s,I0Ls8RZ=h!b9'!:Tgbq!\7_lL4b5p[A+]s,I0Ls8RZ=Ja\0YJa`4!s,I*J qu?H[s8VER"*O'T!.Y~> "p"\lF75'Hp[A+]s,7$Js8RZ=h!b9%!:Tgbq!\7_lL4b3p[A+]s,7$Js8RZ=Ja\0YJa`4!s,6sH qu?H[s8VER"* "p"\lF75'Hq=":^"n.D/n,NE=n(dC3N!/VLs6oFTs8)3as6B(QN;;r@rrqkMN:6fHJa\0YJa\0Y oC)^<"RlBjn*g5TqX=IalgFpsmrJJZ~> "p"\lFmk?Nq=":^"n.J3n,NE=n(dC3NWehNs6oFTs8)3as6B(QNqr/BrrqkONpm#JJa\0YJa\0Y oC)^>"RlBjn*g5TqX=IalgFpumr\V\~> "p"\lF75'Hq=":^"n.D/n,NE=n(dC3N!/VLs6oFTs8)3as6B(QN;;r@rrqkMN:6fHJa\0YJa\0Y oC)^<"RlBjn*g5TqX=IalgFpsmrJJZ~> "p"\lF75'HqsXL`rpTlG!q60hJa_C_s,7$Js8W&drVufas8VBQs,?jDrVulcs,7$Js8RZ=Ja\0Y Ja`4!s,7$Js8W&drVufas8VER"* "p"\lFmk?NqsXL`rpTlI!q60hJa_C_s,I0Ls8W&drVufas8VBQs,R!FrVulcs,I0Ls8RZ=Ja\0Y Ja`4!s,I0Ls8W&drVufas8VER"*O'T!.Y~> "p"\lF75'HqsXL`rpTlG!q60hJa_C_s,7$Js8W&drVufas8VBQs,?jDrVulcs,7$Js8RZ=Ja\0Y Ja`4!s,7$Js8W&drVufas8VER"* "p"\lF75'HrU9^br9sZE!q60hJa_C_s,7$Js8VubrVulcs8VBQs,?pFrVufas,7$Js8RZ=Ja\0Y Ja`4!s,7$Js8VubrVulcs8VER"* "p"\lFmk?NrU9^br9sZG!q60hJa_C_s,I0Ls8VubrVulcs8VBQs,R'HrVufas,I0Ls8RZ=Ja\0Y Ja`4!s,I0Ls8VubrVulcs8VER"*O'T!.Y~> "p"\lF75'HrU9^br9sZE!q60hJa_C_s,7$Js8VubrVulcs8VBQs,?pFrVufas,7$Js8RZ=Ja\0Y Ja`4!s,7$Js8VubrVulcs8VER"* #QXnnF75'Hn*g5TqX=HC!q60hJa_C_s,7$Js8Vo`rVlrfs8VBQs,@!HrVu`_s,7$Js8RZ=Ja\0Y Ja`4!s,7$Js8Vo`rVlrfs8VER"* #QXnnFmk?Nn*g5TqX=HE!q60hJa_C_s,I0Ls8Vo`rVlrfs8VBQs,R-JrVu`_s,I0Ls8RZ=Ja\0Y Ja`4!s,I0Ls8Vo`rVlrfs8VER"*O'T!.Y~> #QXnnF75'Hn*g5TqX=HC!q60hJa_C_s,7$Js8Vo`rVlrfs8VBQs,@!HrVu`_s,7$Js8RZ=Ja\0Y Ja`4!s,7$Js8Vo`rVlrfs8VER"* "9AJjF79!bq!\6A!q60hJa_C_s,7$Js8Vl_rJ^dVlL4V/q!\6A!q60hJa\0YJa\0YoC)^ "9AJjFmo3fq!\6C!q60hJa_C_s,I0Ls8Vl_rJppXlL4V1q!\6C!q60hJa\0YJa\0YoC)^>!q60h q!\0As8VER"*O'T!.Y~> "9AJjF79!bq!\6A!q60hJa_C_s,7$Js8Vl_rJ^dVlL4V/q!\6A!q60hJa\0YJa\0YoC)^ #QXnnF75'Hn*g46qX=HC!q60hJa_C_s,7$Js8Vo`rJUgHs8VBQs,@!HrJ^UAs,7$Js8RZ=Ja\0Y Ja`4!s,7$Js8Vo`rJUgHs8VER"* #QXnnFmk?Nn*g48qX=HE!q60hJa_C_s,I0Ls8Vo`rJgsJs8VBQs,R-JrJpaCs,I0Ls8RZ=Ja\0Y Ja`4!s,I0Ls8Vo`rJgsJs8VER"*O'T!.Y~> #QXnnF75'Hn*g46qX=HC!q60hJa_C_s,7$Js8Vo`rJUgHs8VBQs,@!HrJ^UAs,7$Js8RZ=Ja\0Y Ja`4!s,7$Js8Vo`rJUgHs8VER"* "p"\lF75'HrU9]Dr9sZE!q60hJa_C_s,7$Js8VubrJ^aEs8VBQs,?pFrJ^[Cs,7$Js8RZ=Ja\0Y Ja`4!s,7$Js8VubrJ^aEs8VER"* "p"\lFmk?NrU9]Fr9sZG!q60hJa_C_s,I0Ls8VubrJpmGs8VBQs,R'HrJpgEs,I0Ls8RZ=Ja\0Y Ja`4!s,I0Ls8VubrJpmGs8VER"*O'T!.Y~> "p"\lF75'HrU9]Dr9sZE!q60hJa_C_s,7$Js8VubrJ^aEs8VBQs,?pFrJ^[Cs,7$Js8RZ=Ja\0Y Ja`4!s,7$Js8VubrJ^aEs8VER"* "p"\lF75'HqsXKBrpTlG!q60hJa_C_s,7$Js8W&drJ^[Cs8VBQs,?jDrJ^aEs,7$Js8RZ=Ja\0Y Ja`4!s,7$Js8W&drJ^[Cs8VER"* "p"\lFmk?NqsXKDrpTlI!q60hJa_C_s,I0Ls8W&drJpgEs8VBQs,R!FrJpmGs,I0Ls8RZ=Ja\0Y Ja`4!s,I0Ls8W&drJpgEs8VER"*O'T!.Y~> "p"\lF75'HqsXKBrpTlG!q60hJa_C_s,7$Js8W&drJ^[Cs8VBQs,?jDrJ^aEs,7$Js8RZ=Ja\0Y Ja`4!s,7$Js8W&drJ^[Cs8VER"* "p"\lF75'Hq="9@"n.D/n,NE=n(dC3N!/VLs6oFTN;E#Cs6B(QN;;r@N!8[/N:6fHJa\0YJa\0Y oC)^<"RlBjn*g46qX=IalgFpsmrJJZ~> "p"\lFmk?Nq="9B"n.J3n,NE=n(dC3NWehNs6oFTNr&5Es6B(QNqr/BNWnm3Npm#JJa\0YJa\0Y oC)^>"RlBjn*g48qX=IalgFpumr\V\~> "p"\lF75'Hq="9@"n.D/n,NE=n(dC3N!/VLs6oFTN;E#Cs6B(QN;;r@N!8[/N:6fHJa\0YJa\0Y oC)^<"RlBjn*g46qX=IalgFpsmrJJZ~> "p"\lF75'Hp[A$=!q60hJa_C_s,7$Js8W%Vq!\7_lL4b3p[A$=!q60hJa\0YJa\0YoC)^ "p"\lFmk?Np[A$?!q60hJa_C_s,I0Ls8W%Xq!\7_lL4b5p[A$?!q60hJa\0YJa\0YoC)^>!q60h rJp[As8VER"*O'T!.Y~> "p"\lF75'Hp[A$=!q60hJa_C_s,7$Js8W%Vq!\7_lL4b3p[A$=!q60hJa\0YJa\0YoC)^ "p"\lF75'Hp$_m=!q60hJW/reppIs8RY/JW,/=JW0,X"RlBjN/[K! s8VER"* "p"\lFmk?Np$_m?!q60hJWAHE"RlBjNfNi%s8VBQs,Qd@rf.'Ks8RY1JW>;AJWB8\"RlBjNfNi% s8VER"*O'T!.Y~> "p"\lF75'Hp$_m=!q60hJW/reppIs8RY/JW,/=JW0,X"RlBjN/[K! s8VER"* "p"\lF75'HoBua>n,Irtfo-"$s,?U=s8VBQs,?R "p"\lFmk?NoBua@n,Is!fo?.&s,Qa?s8VBQs,Q^>!flaLJW>;AJW>;An;[S=s,Qa?s8VER"*O'T !.Y~> "p"\lF75'HoBua>n,Irtfo-"$s,?U=s8VBQs,?R "p"\lF75'HJcE1YlL4b3JcC<$JcC<$c2[+u"* "p"\lFmk?NJcE1YlL4b5JcC<$JcC<$c2[+u"*O'T!.Y~> "p"\lF75'HJcE1YlL4b3JcC<$JcC<$c2[+u"* "T\SkF75'=s0_mlmf8;ts+13$s+13os6K+UF74/MJ,~> "T\SkFmk?As0_mlmf8B!s+13$s+13os6K+UFmjGQJ,~> "T\SkF75'=s0_mlmf8;ts+13$s+13os6K+UF74/MJ,~> !s&AiF+Ne2mt'qYmt'qYn'LM*F74/MJ,~> !s&AiFb0"4mt'qYmt'qYn'LM*FmjGQJ,~> !s&AiF+Ne2mt'qYmt'qYn'LM*F74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs+13$s+13$s3UcJFmjGQJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs+13$s+13$s3UcJFmjGQJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs+13$s+13$s3UcJFmjGQJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs+13$s+13$s3UcJFmjGQJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs+13$s+13$s3UcJFmjGQJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs,d9Y!<3#u!;HNn!7LoI!.k0$s+p[WFmjGQJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs,m?]!<3#u!<<*!!;HNn!7LoI!.k0$s+p[WFmjGQJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs,m?]!<3#u!!*&t!<<)t!<<)t!!rT)!<<'!!<<)t!<3#u!;uls!!E6$!<;utrr;os rr;uu"oeQ&rr<&us8N(Ms+133rr[E4FT?p~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs,d9[!;uls!<<*!!<<*!!<<*!!<<*!!<<*!!"/`+!<<'!!<<'!!;uln!<<*!!"/`+ !<<'!!<3$!s8E!"rr<&us8N(Ms+133rr[E4FT?p~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs,R-Y!<3#u!;lfr!<<*!!<<*!!<<*!!!*&u!;6Bk!<<*!!<<*!!;uls!"Jr.!<<'! !<<'!!<3$!JcC<$O8f<)mr\V\~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs,I'X!<<*!!<3#r!<<*!!<<*!!<<*!!<3#t!;HNn!<3#q!<<)s!"Jr.!<<'!!<<'! !<3$!JcC<$O8f<)mr\V\~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs,m?]!<3#u!<<*!!<<*!!<<*!!<<*!!<<*!!<<*!!<)rs!;QTo!<3#u!;uls!<<*! !!`H'!<<'!!<3#t!.k0$s,R*]FmjGQJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs,m?]!<3#u!<<*!!!*&u!<<*!!<<*!!!*&u!!*&u!"/`+!<<'!!<<'!!;uls!<3#u !<<*!!"/`+!<<'!!<3$!s8E#ts8E"Ls+131rr[E4FT?p~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs,d9Y!<)rt!<<)u!"])0!<<'!!<<'!!<3$!s8W#trr;uur;ZcsrVufrrr;rt#lal) rr<'!!!)utrr@WMJcCc1"*O'T!.Y~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs+13hrr<%Ms+130rr[E4FT?p~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs+13is8N(Ms+130rr[E4FT?p~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs+13js8N(Ms+13/rr[E4FT?p~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs+13$s+13$s3UcJFmjGQJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs+13$s+13$s3UcJFmjGQJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !s&AiFb0RDs+13$s+13$s3UcJFmjGQJ,~> !s&AiF+F=B!.b-$!.b-$!71]JF74/MJ,~> !W`8hJTHB`JTHB`JTHB`c>s'UEr^^~> !W`8hJTZNdJTZNdJTZNdc?03WFT?p~> !W`8hJTHB`JTHB`JTHB`c>s'UEr^^~> !!)He!-<_kJcC<$JcC<$JcG?A!-@T.!HS6k~> !!)He!-NkmJcC<$JcC<$JcG?A!-R`0!HeBm~> !!)He!-<_kJcC<$JcC<$JcG?A!-@T.!HS6k~> ! !_Ja\0YJa\0YJa\0Yo^;g's6mu/FT?p~> ! ! !_Ja\0YJa\0YJa\0Yo^;g's6mu/FT?p~> ! ! !_Ja\0YJa\0YJa\0Yo^;g's6mu/FT?p~> ! ! !_Ja\0YJa\0YJa\0Yo^;g's6mu/FT?p~> ! !!%RkJTHB`JTHB`JTJtT!!%N~> !!%RmJTZNdJTZNdJT]+X!!%N~> !!%RkJTHB`JTHB`JTJtT!!%N~> !<7TMJH16$JH16$JH3gm!<7Q~> !<7TMJH16$JH16$JH3gm!<7Q~> !<7TMJH16$JH16$JH3gm!<7Q~> %%EndData showpage %%Trailer end %%EOF pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/currytest.eps000066400000000000000000007067461323431571100255460ustar00rootroot00000000000000%!PS-Adobe-3.0 EPSF-3.0 %%Creator: GIMP PostScript file plugin V 1.16 by Peter Kirchgessner %%Title: /home/mh/currytest.eps %%CreationDate: Tue Jan 18 16:58:39 2005 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%Pages: 1 %%BoundingBox: 14 14 630 342 %%EndComments %%BeginProlog % Use own dictionary to avoid conflicts 10 dict begin %%EndProlog %%Page: 1 1 % Translate for offset 14.173228346456694 14.173228346456694 translate % Translate to begin of first scanline 0 327.39907180476615 translate 615.40157480314963 -327.39907180476615 scale % Image geometry 906 482 8 % Transformation matrix [ 906 0 0 482 0 0 ] % Strings to hold RGB-samples per scanline /rstr 906 string def /gstr 906 string def /bstr 906 string def {currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} {currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} {currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} true 3 %%BeginData: 231891 ASCII Bytes colorimage JH16$JH16$JH16$JH5EEJ,~> JH16$JH16$JH16$JH5EEJ,~> JH16$JH16$JH16$JH5EEJ,~> !!%RRJQdV.JQdV.JQf9]!#Wr[!HS6k~> !!%RqJU)flJU)flJU+JF!%?(k!HeBm~> !!%SqJ^/hlJ^/hlJ^1LF!(+p0!HS6k~> ! !<@Cr ! ! !<@Cr=b0_,=b0_,=b0_\=TKr>l*^Tll*^`pn*bB!J,~> !l*UNkl*UZon*b;tJ,~> !!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ 6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ 6:+jB6!bPZ6:+lU6@N*)6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB65pp<>!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB 6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB 6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+lU6@N*)6!bPZ6:+jB6!bPZ 6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ 6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB65pp<>!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+jB6!bPZ6:+lU64@$a 6!bPZ)"4ltCB=ICl>$P&n*b;tJ,~> !<@Cr?,0`pH!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$ ?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$ ?!V_]?$T^]H!O^$?!VaU?%.')?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^] H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^] H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H2h0!H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_] ?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_] ?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!VaU?%.')?$T^]H!O^$?!V_]?$T^]H!O^$ ?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$ ?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H2h0!H!O^$?!V_]?$T^] H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^] H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!V_]?$T^]H!O^$?!VaU>mu!a ?$T^]H!O^$..=V0D#s[Fl>6\(n*bB!J,~> !ICB=ICl>$P&n*b;tJ,~> ! !<@Cr@D?6"1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL @:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL @:;!$@5MD$1gsfL@:;"m@=C%A@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$ 1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$ 1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$2#h!51gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$ @5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$ @5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;"m@=C%A@5MD$1gsfL@:;!$@5MD$1gsfL @:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL @:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$2#h!51gsfL@:;!$@5MD$ 1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$ 1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;!$@5MD$1gsfL@:;"m@14u$ @5MD$1gsf@n$[*#rrfcIs0ce3rs#oKs6oE!!.Y~> !+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*d S=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*d S=EcQS6DGQ>+D*dS=Ed_S:4Y3S6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ >+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ >+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>5t+A>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQ S6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQ S6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=Ed_S:4Y3S6DGQ>+D*dS=EcQS6DGQ>+D*d S=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*d S=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>5t+A>+D*dS=EcQS6DGQ >+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ >+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=Ed_S.&Sk S6DGQ>+D*Ln$Qrurrf`Fs0ZY0rs#lHs6oDt!.Y~> !8d$""[;5g1pB@s?s0ZYBme6pnC]EklEr^^~> !<@CrBn9uLBn9uLBn:!'B`ojQ[Vc'4o*)R>s0ceEmdgXkD?'(nFT?p~> ! ! !<@EBD$3F9F_OkOD?!lA7=f<,D1QPTD1QPTD9$Jr..=T]s6f=Z[Vc&QD?'%m#.ACKn*bB!J,~> !(NN$V1GIoV1GIoV8oD86LV !!)k!"]AO;c>un\=p%ZD;Gr'LJQdV.JQdV.JQg)t";pU8C]Ehk"gr.G[;5g1mfp18s6oDt!.Y~> !<@EBE ! !!)gu"]BE3X\r'p=or2L9&*STA$+V^s7b*7g044MlWO@CN/[O8pAa>[s8N)nr*"Om>$<(Q=s7'Q +^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q +^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s

    $<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q =s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q =s7'Q+^/%ms&sjp>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m >$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m >$<(Q=s7'Q+^/%m>$<(Q=s$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q +^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q +^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%ms&sjp>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q =s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q =s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s7'Q+^/%m>$<(Q=s$;d3[;5g1k688/ s0ZYBmcOe^C]EklEr^^~> !<@EAFTl>jSt]5%r,i'LD-bq>#CX&@p](!BY1e$ls6Fe/R\$,GFnYk!FoVIAp\]/_1j*ptF`fN` FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN` FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fP@ Fac/iFYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*pt F`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*pt F`fN`FYn5`2#h]I1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5` 1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5` 1j*ptF`fN`FYn5`1j*ptF`fP@Fac/iFYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN` FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN` FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`2#h]I1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*pt F`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*pt F`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fN`FYn5`1j*ptF`fP@FU^0MFYn5`1j*phn$[*5mcOb^ D?%%]s6f%S[Vc'5mr\V\~> !-4o1XfYd/X]hj/ >-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/ >-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYe,XaXHU X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/ X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/ X]hj/>5t^R>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1 XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1 XfYd/X]hj/>-4o1XfYe,XaXHUX]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/ >-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/ >-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>5t^R>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/ X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/ X]hj/>-4o1XfYd/X]hj/>-4o1XfYd/X]hj/>-4o1XfYe,XUSI9X]hj/>-4nnn$Qs2mcOb]C]CeX s6f%S[;5g2mrJJZ~> !H[A*X@ffPL6L\Lb!;p=,!;0h&K^\d;g10jVlXL"js8Vk(pAa>ds8N)nJRa7@JRa7@ JRe+X";pU8C]Ehc"gr.G[;5g1k6A>0s6oDt!.Y~> !!)e>"BfGaGtn6_!aTqCn9P$6r-88Bom$S$oD8L@H1q:(Glma?s7gm5s6+b.rrDeEH%C6lH%C6l H1#q\..=T]s6enN[Vc&QD?'%a#.ACKn*bB!J,~> !0s6oDt!.Y~> !%:07@o@A?mpcD!rrE%.rrDb&$$5k@s1NbhF.DFEA,lQ/pZH#fp](9cA,lQ/pZ,ia rrDeE@tA-@@tA-@A+!h0)"4kJs6f%R[;5fMC]F:p!!)u\!!)lY#.87Hn*b;tJ,~> !<@E?JcS_Sr`T8Q!blXGmt(T@rrE%MrrDbE$'+c[s3$R[NjA!=JcLQ%JcLPrK)biNpZI,0p](9c K)biNpZ-r+rrDeEJq8N)Jq8N)K'n3n..=T]s6enN[Vc&QD?'Ln!!)uX!!)lU#.ACKn*bB!J,~> !%;oe[?P`Bn$N2srrE&+rrDc#!58C3"m !"W;nCB=M9s8E!!rrDb."24a7`qaEMrrDfmC]FDLpM4REs7_c@s3>E[s7_c@ s3?;ts2P%R"0MV'SGd7'rrDfjCBf.*n,N.-K`5`mF1q&Bs7bBXC\n)*C]FD7p\S_2F1pc:s6$e2 rG)XZ^$#FqkI#C1C]FD7p\elV>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nW CMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nW CMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR,RCOTH&CKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh >&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh >&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>5rAe>&.nWCMR*hCKbLh>&.nWCMR*h CKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*h CKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR,RCOTH&CKbLh>&.nW CMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nW CMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>5rAe >&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh >&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh>&.nWCMR*hCKbLh >&.nWCMR,RCCXN`CKbLh>&.nW)"4kJs6e_I[;5fMC]F=hrW)uTrW)iP#.87Hn*b;tJ,~> !<@E?L&ci(70I1I@821=L&qATs8E!!rrDbI"3:HAchrM$MM?lcs7cMIs8Ni.L5,a.pT!QZdt[o& pT!QZe"6U>ci/Y$])Vf5rJ(@P!;HAF#*R=(s7b-6re:]=bO>K2pZ&uBqZ$;Es8N)nqh>?9a7&p& lbeVYL'NaZn,*"J_i"GJs8N)nrJ#cHL5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'! L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'! L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3`fRIX-[&H%q'!L5'u.L3\N.H%q'!L5'u.L3\N. H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N. H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!s+YuJL5'u.L3\N.H%q'!L5'u. L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u. L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3`fRIX-[&H%q'! L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'! L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'! s+YuJL5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N. H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N.H%q'!L5'u.L3\N. H%q'!L5'u.L3`fR%XEe`H%q'!L5't%n$[*5mb\2VD?%%]s8:dR!<:sU!;kXX[Vc'5mr\V\~> ! !$CQ6qu6m$[K!Z7[Jp7#CBNc"s*OQWs8N)nrbMQ6!r$JGqu6]BC]",=c>2;: pN(+ckPt;SC]FD7p\\e-Hggn4"S[RbCY&C_!U"7ps7^=/rrDfkCB8eNqu6i_F),Q,+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/ CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/ CE[J/+_tj:CMP)/CE[J/+_tj:CMP*nCORFBCE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj: CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj: CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+oc>,+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/ +_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/ +_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP*nCORFBCE[J/+_tj:CMP)/ CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/ CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+_tj:CMP)/CE[J/+ochYR !<@E>M?ePq77BLFIs-ib@s8N)nregaU!r%S0rr3,us8UQ*rr3K* s8UQ*j8]">MMgTspQ#30s8N)nr/(N@oDJUkpR6tshu!ESl\bQ=pPT"N!;HDK!LE3Orrq_OMMd_g qu6ldP)>.ss7cGKIPcq>1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6J MDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6J MDU3J1l@/IMMa6JMDU3J1l@/Is,)7^MMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/I MMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/I MMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDY?jIPcq>1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J 1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J 1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/Is,)7^MMa6JMDU3J1l@/IMMa6J MDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6J MDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDY?jIPcq>1l@/I MMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/I MMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/IMMa6JMDU3J1l@/I s,%7BMMa6JMDU3J..=T]s8(LK!;Y@Q[Vc&QD?'LfqZ-KI#.ACKn*bB!J,~> !]a(Z+;G'hsA"<2)qu6m$[K!Z7[Jp7#]`\$/s2OlJrr;u2rr<#3qu6][^&.g:kIp?as2Mac p](9k^&J'0]`?(Krr^9S^$kju!Va;(s7a5+s89P2`qTB1"o$$M]uKgDrr`#8]tOFFr4RP_]tIU_ ]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_ ]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_ ]itHLITjFu>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ ]tIU_]ir+_>.qUQs1Nkb]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_ >.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_ >.qUQ]tIU_]ir+_>.qUQ]tIU_]itHLITjFu>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_ ]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_ ]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQs1Nkb]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]ir+_>.qUQ]tIU_]itHL%9gHY>.qUQ]tHc$[;5g= hYdHMh?C<&s0ZYBqqh2MqVDFaC]EklEr^^~> !rsdhtt !<@E=NW !^[8#6;13[K!Z7!;=G3s7jV5s8L%;s8U+ ! !<@E=Q3C\c6![c-o9T4Qs0`%1[K*`9p6GdWs82SWs8N)nrg*Ta!r&"Hrr2tmrKdH_!2BCW#P7u] QHT=.VYlb[rrDfkQ2p[UrsARgQLk.VhoE0srg!W[s8V_Ws8N)nr0A8qs8S[VQDX]^n!9:6s8S[V QDX]^n!9:>s7_)1JX1kQJX1kQmZmu(n$[*5qU>BCq9oMUD?%%]s8(4C!;Y(J[Vc'5mr\V\~> !^V,s0Vt0[/dT7p;[+3pr<=5rl4s;s2P'1s89n9rs6oi`m4VapVt5Prs6oi`m4VapVt5Ps+/1@`du-\ `du.t`WSWs[;5g=f)5UEeciHss0ZYBqUYTFq:5bXC]EklEr^^~> !Q"9!s8N8sH[Gemp\]C'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU" H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU" H[AqCHWkcC>5rqu>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC >'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC >'kU"H[AqCHWkcC>'kU"H[ArrH[].FHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqC HWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqC HWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>5rqu>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU" H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU" H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[ArrH[].FHWkcC>'kU"H[AqCHWkcC >'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC >'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>'kU"H[AqCHWkcC>5rpZ>'kU"H[AqC HWh9T[;5g=cM[b=c3:Uks0ZYBqp,'=qT];QC]EklEr^^~> !<@E>RKn+,"h&:J[Vc'Achd_=cN^gps6oE!!.Y~> !!)`<#FnD%>#J6bV=)V0!4D\(p !p]'FNHO?"6cN!q5H[GMes7C[ !<@E?Sck'F7@&],70&M>T)J`hT)SfaScdIAs4@1?&>Gbfs8VtfSuVhjqjsDZs82_cs8N)rqjn"d qu>jZs24`*s8N)rr13uas6KEN$Eh+ps8VPZT(i9boUc*_!;l\c)Ya:3VOjBZs8VPZT(i9bVOjBZ s8VPZT)\ifr18?oSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9q St7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9q St7d1Si!%11nL9qSt7d1Si$J=IPdXf1nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%1 1nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%1 1nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qs.4ZrSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1 Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1 Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si$J=IPdXf1nL9qSt7d1Si!%11nL9q St7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9q St7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qs.4ZrSt7d1Si!%1 1nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%1 1nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si!%11nL9qSt7d1Si$J=% 5aZJ1nL9qSt7A![Vc'4b6>=ks0ceEr6,'>s3(BAqo]2PD?'(nFT?p~> !!)c=$,'M?`iVj";Gt3scMdhCcMmn0bDs cH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDs cH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDs cH]Vnc@/sBc0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c5uls>0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V= c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V= c0bDscH]V=c0bDscH]Vnc@/sBc0bDscH]V=c0bDscH]V=c0bDs cH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDs cH]V=c0bDscH]V=c0bDscH]V=c5uls>0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]V=c0bDscH]Vnc4*t&c0bD[n$Qs2 m`l!DC]CeXs8:1A!<:@D!;k%G[;5g2mrJJZ~> !:/mt?Ags8SUBcN!q=KS9C*p\]^ErrDfi KE0V2U)(s8VhHK_PNHSFqR8rrDfkKGr/9s43-fhZ*Vq KS7YNs43-fhZ*VqKS9C*pOS!KKRnf-KRngEKEN.\[;5g1`W`bcs0ZYBqo/U9rPeg;qSi`IC]Ekl Er^^~> !<@E@U'dJp8WKO>I7[.5?14Nf!;rPk!;<-)WqZPnf<1jJa7#asp](9%U>,_JqkBhbs82_gs8N)r qP!uArr3#rVYd+frrDroU);Ybs3IR>ZHr-:U>*D^U:1+%pS+DVs8TCtUAt5nqu!0,g].<2WiG+Z s3m^:g].<2WiG+Zs3m^:s8VtIU4K%iU4K%iU@+`Y..=T]s6do2[Vc&QD?'LR!!)u !`W-#;`W-#8`Wihds6oDt!.Y~> !q!A,V&`>'k=;A))_ !<@E@V?1mKH2XTCD/jQkrrDrmV?!q$rrCsQVZ6Yr qu!;lY4MMis/,Ym"5B]Mj8ArOVZ6Yrqu!;lY4MPj"n/IgVQTOfrs%qlVPaCnqgkVqVLbUqVLbW4 V?A=9[Vc'4`s&ngs0ceEm`,O?D?'(nFT?p~> !17s8U[Ls8:IIs8(:HhZ!NTn+tW7s8:FJhYI3Of)#CK n(-(ar;ZNBrr;oI!8dSP"S^d(f&$9'"8C['f)G]#eq)D'eq)D'f'_)l6LV !5O6]CRg?BF52]jPfDnds7b]iN/X"Ps8V8as8VhPN;rqPr/C[U!;H;J"5a(XV>?/N rrDfjN"D6!n,NF^hR/<$cKFs%s6mu,MufI*rVuVNs8N)nqhtcEcL:f5n&CUjN!GTmn,NFV`g$I] s8N)nrJZ2/N/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur! N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur! N*;1!>)\DDN/Ur!N*?7?ITh\h>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DD N/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DD N/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDs,;D1N/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1! >)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1! >)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*?7?ITh\h>)\DDN/Ur!N*;1!>)\DDN/Ur! N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur! N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDs,;D1N/Ur!N*;1!>)\DD N/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DD N/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*;1!>)\DDN/Ur!N*?7?%U+gM >)\DDN/UpWn$Qs2m`#F !<@EAXoaK+D>UI=Fcqc:NngcRZIeRBs82-.Y-,(fqu?-&s8Vu!Y5eP!r3$)"!;lSp"6]^a^A>#4 rrDrnXqnJ#oDejbkKC$2g[G%>s7=jJY-,4rqu6WiY5eM%qtmN$ZJ5!Ns7=jJrN6C2g[kIFo@L;I Y5eM%qu*[HH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;q Y-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;q Y-*&QY'I1QH*4;qY-*'MY'tZ!Y'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1Q H*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1Q H*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH2k$rH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&Q Y'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&Q Y'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*'MY'tZ!Y'I1QH*4;qY-*&QY'I1QH*4;q Y-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;q Y-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH2k$rH*4;qY-*&QY'I1Q H*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1Q H*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*&QY'I1QH*4;qY-*'MXq#`[ Y'I1QH*4;q..=T]s6dc.[Vc&QD?'%A#.ACKn*bB!J,~> !m ! !<@EBZ3-\HBs.?="f@HkU5ktUZ3'Lpo;&[@1pXDDZEc !3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'P kN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'P kN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>6!c7>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3 >3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3 >3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%KkC-Utk?@'3>3G'PkN?%3 k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3 k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>6!c7>3G'P kN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'P kN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'P kN?%KkC-Utk?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3 >3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3>3G'PkN?%3k?@'3 >3G'PkN?%3k?@'3>6!ap>3G'PkN?%3k ! !<@EB[K;%tUA;5#Sq_i>ICHWfp\Y!jc[iNU[Xkl<[XklQ[KJ#I[Vc'4\coNZs0ceEm^`V2D?'(n FT?p~> ! ! !<@D=])Vd2qqH\5J\$EDJ\$EDQ+@)Hn$[*5mC!.7s0ceEmC!18s6oE!!.Y~> ! !+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*d S=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*d S=EcQS6DGQ>+D*dS=Ed_S:4Y3S6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ >+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ >+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>5t+A>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQ S6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQ S6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=Ed_S:4Y3S6DGQ>+D*dS=EcQS6DGQ>+D*d S=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*d S=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>5t+A>+D*dS=EcQS6DGQ >+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ >+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=EcQS6DGQ>+D*dS=Ed_S.8_m S6DGQ>+D*d)"4kJs6[2sC]CeXs6[2tC]EklEr^^~> !<@Cr_na0=H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF _o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF _o$c;_g0/;H,IOF_o$d"_gZmK_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/; H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/; H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H2kd2H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c; _g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c; _g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$d"_gZmK_g0/;H,IOF_o$c;_g0/;H,IOF _o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF _o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H2kd2H,IOF_o$c;_g0/; H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/; H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$c;_g0/;H,IOF_o$d"_[^t0 _g0/;H,IOF..=T]s6d/r[Vc&QD?'%0#.ACKn*bB!J,~> ! !n$Qrt[0(4E[;5-:"`+/,mrJJZ~> !<@Cra1oZD1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWn a2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWn a2^$Wa#(iW1rmWna2^%:a*okca#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW 1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW 1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW2#kUF1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$W a#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$W a#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^%:a*okca#(iW1rmWna2^$Wa#(iW1rmWn a2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWn a2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW2#kUF1rmWna2^$Wa#(iW 1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW 1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^$Wa#(iW1rmWna2^%:`safF a#(iW1rmWbn$[*"[KCCH[VbB>"`=;.mr\V\~> !5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bp p\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bp p\.kcpKI=c>5.bpp\.kkpO65.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c >5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c >5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>6">G>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kc pKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kc pKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kkpO65.bpp\.kcpKI=c>5.bp p\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bp p\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>6">G>5.bpp\.kcpKI=c >5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c >5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kcpKI=c>5.bpp\.kkpC(7" pKI=c>5.bXn$Qrt[0(4E[;5-:"`+/,mrJJZ~> ! !<@CrbCRifbCRifbCRjAb5s*\[d%]1s0h30"TRrZFT?p~> ! ! !<@Crc[jDnc[jDnc[jEIcN,H_ci=%6!HeBm~> ! !WZCYJTHB`JTHB`JTHB`JTLd2!q111J,~> !W[L3JTZNdJTZNdJTZNdJT^p6!q173J,~> ! !ruLZF1(Jfs2j`\s3L/?s+0Wimt'qYn(I.3F74/MJ,~> !s!U4Fg^\hs2j`\s3L/?s+0Wimt'qYn(I.3FmjGQJ,~> !s$VfF1(Jfs2j`\s3L/?s+0Wimt'qYn(I.3F74/MJ,~> !ruLZF1(H:s4E81s2j^0s4@;Os3L-6s0[dcs-`>Ys8VP=s8VP=s763in&k[gmfRY"Er^^~> !s!U4Fg^Z3s2j^0s4Eb?s3L-6s0[jes-`>Ys8VP=s8VP=s763in&k[gmfR_$FT?p~> !s$VfF1(H:s4E81s2j^0s4@;Os3L-6s0[dcs-`>Ys8VP=s8VP=s763in&k[gmfRY"Er^^~> !ruLZF1(H:s4NA2s2j^0s4@;Os3L-6s0dmds-`>ZrrS/Jmt1Q@N:64ds7?6lN:65YrrA#9mfRY" Er^^~> !s!U4Fg^Z !s$VfF1(H:s4NA2s2j^0s4@;Os3L-6s0dmds-`>ZrrS/Jmt1Q@N:64ds7?6lN:65YrrA#9mfRY" Er^^~> !ruLZF1(H !s!U4Fg^Z>s,N,pn,E@/mfNNXRb[rCk5bP.mfNNLNk+WXs-`?Us0D+nNrSSJs+TqANrSSJs+0Y4 n,JFJn,NF5n,JF+mfR_$FT?p~> !s$VfF1(H !ruLZF1(H !s!U4Fg^Z>s,N,pn,E@/mfNNXRb[rCk5bP.mfNNLNk+WXs-`?Us0D+nNrSSJs+TqANrSSJs+0Y4 n,JFJn,NF5n,JF+mfR_$FT?p~> !s$VfF1(H !ruLZF1(H !s!U4Fg^Z>s,N,pn,E@/mfNNXRb[rCk5bP.mfNNLNk+WXs-`?Us0D+nNrSSJs+TqANrSSJs+0Y4 n,JFJn,NF5n,JF+mfR_$FT?p~> !s$VfF1(H !ruLZF8kY(!:oUY!7C6:s,;p9n,<=cn,<=On,E@cn,!+]n,E@hmf3@Fmf !s!U4FoLk*!:oUY!7C6:s,N-=n,<=cn,<=On,E@cn,!+]n,E@hmf3@FmfNNXRf !s$VfF8kY(!:oUY!7C6:s,;p9n,<=cn,<=On,E@cn,!+]n,E@hmf3@Fmf !ruLZF8PG+!:TCV!7C6=s,;p*mf<@U!s%fY!<2Ee!:'%Ps8DEd!;#[Z!8m5Fs4@;Os8DEd!<2He !<;Nf!;Gs^!:'"Vs,;p*mf;qI!!(73rr8DTs8TCns,@!Hs8RfAs,@!Hs8RZ=p@&$?s6p!fcL:dl i9pbhmrJJZ~> !s!U4Fo1Y-!:TCV!7C6=s,N-.mf<@U!s%fY!<2Ee!:'%Ps8DEd!;#[Z!8m5Ks-fDVrrE&u!!)'Z s5sC^rU9adrpTjes6osfp[A+^lL+oVNfNSs!:oRY!6jp2s-`?Us0D+nNrSSJs+TqANrSSJs+0Y4 n,JFJn,NF5n,JF+mfR_$FT?p~> !s$VfF8PG+!:TCV!7C6=s,;p*mf<@U!s%fY!<2Ee!:'%Ps8DEd!;#[Z!8m5Fs4@;Os8DEd!<2He !<;Nf!;Gs^!:'"Vs,;p*mf;qI!!(73rr8DTs8TCns,@!Hs8RfAs,@!Hs8RZ=p@&$?s6p!fcL:dl i9pbhmrJJZ~> !ruLZF8PG+!<)Bb!<2Hc!<;Nd!;l6`!<2Hc!<2Hc!<2Hc!<2Hc!<2He!<)?fs,;p6mfNRYmf<@U !!) !s!U4Fo1Y-!<)Bb!<2Hc!<;Nd!;l6`!<2Hc!<2Hc!<2Hc!<2Hc!<2He!<)?fs,N-:mfNRYmf<@U !!) !s$VfF8PG+!<)Bb!<2Hc!<;Nd!;l6`!<2Hc!<2Hc!<2Hc!<2Hc!<2He!<)?fs,;p6mfNRYmf<@U !!) !ruLZF8PG+!<2He!<;Nf!"//p!:T@V!:T@V!;l6b!<;Nf!$CY0!:T@V!:Kmfn*^5Vmf3@Vmf3@V !!)KV!!)KV!!)ud!rn4 !s!U4Fo1Y-!<2He!<;Nf!"//p!:T@V!:T@V!;l6b!<;Nf!$CY0!:T@V!:Kmfn*^5Vmf3@Vmf3@V !!)KV!!)KV!!)ud!rn:@rU9adrU9^cl0nWOrU9adrU9ads6osf%IX8smf3@V!!)KV!!)Ka!<;Nf !"//p!:T@V!:T@V!<)?is-fDVrrE&u!!)'Zs5sC^r9sUbr9sXcs6osfs6osfs6osfs6osfs6osf $L[rpn*^5Vn*^5VrU1$lNfNSs!:T@VrpLa*n*^8Fmf;hF!:T@Vn*^5Vn*^8Fmf;hF!!(jDrr8DT s8TCns,R-Js8RfAs,R-Js8RZ=p@&$As6p!fcL:dni9pbjmr\V\~> !s$VfF8PG+!<2He!<;Nf!"//p!:T@V!:T@V!;l6b!<;Nf!$CY0!:T@V!:Kmfn*^5Vmf3@Vmf3@V !!)KV!!)KV!!)ud!rn4 !ruLZF8PG+!<2He!<;Nf!!)Ke!;uj_s,;p6mfNRY mf<@U!!) !s!U4Fo1Y-!<2He!<;Nf!!)Ke!;uj_s,N-:mfNRY mf<@U!!) !s$VfF8PG+!<2He!<;Nf!!)Ke!;uj_s,;p6mfNRY mf<@U!!) !ruLZF8PG+!<2Ha!<2Hd!<2He!;l6b!;l6_!<2Hd!<;Nb!<2Hd!;Q!as,;p6mfNRYmf<@U!!) !s!U4Fo1Y-!<2Ha!<2Hd!<2He!;l6b!;l6_!<2Hd!<;Nb!<2Hd!;Q!as,N-:mfNRYmf<@U!!) !s!U4Fo1Y-!<2He!;Z*_!<;Nf!;l6b!;u !s$VfF8PG+!<2He!;Z*_!<;Nf!;l6b!;u !ruLZF8PG+!<2He!<;Nf!"A;r!:T@V!:T@V!:Kpdn,ECfn,EA0mf3@Vmf3@V!!)KV!!)Hf!:T@V !:Kmfn*^5Vn*^5VrU0piN/[5o!<2Eh!:T@VrpKgelL4`PrU9adrU9ads6osf$1@iomf3@V!!)Ke !!;Th!<2He!<;Nf!"//p!:T@V!:T@V!<)?ds4@;Os8DEd!<2He!<;Nf!!)Ke!<;Nf!<;Nf!!)Ke !!)Ke!"//p!:T@V!:T@V!<)?ls,;p*mf;hF!<2Et!:T@Vn*^8Fmf;hF!:T@VrpL'ln*^8Fmf3@D n,E?Tn,NFYn,ECen,E@mmf3@Vmf3@VrW!#g!!)obrrE)frrE)frr( n*^5Vmf3@V!!)KV!!)Hf!:T@V!:oUYN;rAHs75XY!;u !s!U4Fo1Y-!<2He!<;Nf!"A;r!:T@V!:T@V!:Kpdn,ECfn,EA0mf3@Vmf3@V!!)KV!!)Hf!:T@V !:Kmfn*^5Vn*^5VrU0piNfNSs!<2Eh!:T@VrpKgelL4`PrU9adrU9ads6osf$1@iomf3@V!!)Ke !!;Th!<2He!<;Nf!"//p!:T@V!:T@V!<)?is-fDVrrE&u!!)'Zs5sC^rU9adrpTjes6osf!:Tme s6osfs6osf!:Tme!:Tme$L[rpn*^5Vn*^5VrU1$lNfNSs!:T@VrpL?tn*^8Fmf;hF!:T@Vn*^8U mfrj]mf;hF!!(jDrr8DTs8VZYrrE&err<;m!!)KV!!)Ke!!;Th!;l6b!<;Nf!<;Nf!"//p!:T@V !:T@V!:fOXNrSSJs75XY!<;Nf!!DZi!:Tme"7H3in,<=an,ECfn,ECfn,E@pmf3@Vmf3@Vmf3@b n,ECfn,ECfn,E@pmf3@Vmf3@V!!)Ke!"eT!!:T@V!:Kmfmf3@Vmf3@Yn,JFJn,NFYn,ECcn,E@t mf3@Vmf3@V!!)KV!!)Kc!;u !s$VfF8PG+!<2He!<;Nf!"A;r!:T@V!:T@V!:Kpdn,ECfn,EA0mf3@Vmf3@V!!)KV!!)Hf!:T@V !:Kmfn*^5Vn*^5VrU0piN/[5o!<2Eh!:T@VrpKgelL4`PrU9adrU9ads6osf$1@iomf3@V!!)Ke !!;Th!<2He!<;Nf!"//p!:T@V!:T@V!<)?ds4@;Os8DEd!<2He!<;Nf!!)Ke!<;Nf!<;Nf!!)Ke !!)Ke!"//p!:T@V!:T@V!<)?ls,;p*mf;hF!<2Et!:T@Vn*^8Fmf;hF!:T@VrpL'ln*^8Fmf3@D n,E?Tn,NFYn,ECen,E@mmf3@Vmf3@VrW!#g!!)obrrE)frrE)frr( n*^5Vmf3@V!!)KV!!)Hf!:T@V!:oUYN;rAHs75XY!;u !ruLZF8PG+!<)Bb!<2Hc!<)Bd!;l6`!<2Hd!!DZi!:TjdrpTdcrpTdcrpTjerU0gfN/[c)rW)oc rW)3Orr;rcrrDucrVurer;[8p!!)KV!!)Hf!:KmfrU9[brpTdcrpTjerU0adfDkpOr9sO`rU9ad s6ope&+9Jun*^5Vn*^5Vmf3@Vn,37cn,ECdmg/rPN:638!:TCU!<)Bd!<2He!!M`jn*^8Umf3@e n,E@gmf;24rr8DTs8VZYqZ-ZbrrE)frr<8l!!)KV!!)obrrE)frrE)frr<&frW)lbrrDTXs,@!H s8VZYrrE)frr !s!U4Fo1Y-!<)Bb!<2Hc!<)Bd!;l6`!<2Hd!!DZi!:TjdrpTdcrpTdcrpTjerU0gfNfO,-rW)oc rW)3Orr;rcrrDucrVurer;[8p!!)KV!!)Hf!:KmfrU9[brpTdcrpTjerU0gfR[X6UrW(sXs5sC^ r9sO`rU9ads6ope&+9Jun*^5Vn*^5Vmf3@Vn,37cn,ECdmg/rRNplE:!:TCU!<)Bd!<2He!!M`j n*^8Umf3@en,E@gmf;24rr8DTs8VZYqZ-ZbrrE)frr<8l!!)KV!!)obrrE)frrE)frr<&frW)lb rrDTXs,R-Js8VZYrrE)frr !s$VfF8PG+!<)Bb!<2Hc!<)Bd!;l6`!<2Hd!!DZi!:TjdrpTdcrpTdcrpTjerU0gfN/[c)rW)oc rW)3Orr;rcrrDucrVurer;[8p!!)KV!!)Hf!:KmfrU9[brpTdcrpTjerU0adfDkpOr9sO`rU9ad s6ope&+9Jun*^5Vn*^5Vmf3@Vn,37cn,ECdmg/rPN:638!:TCU!<)Bd!<2He!!M`jn*^8Umf3@e n,E@gmf;24rr8DTs8VZYqZ-ZbrrE)frr<8l!!)KV!!)obrrE)frrE)frr<&frW)lbrrDTXs,@!H s8VZYrrE)frr !ruLZF1(H !s!U4Fg^Z>s,N,pn,E@/mfNNXRb[rCk5bP.mfNNLNo'4)!8[,Cs-`?Us75XY!<;Nf!<;Nf!<;Nf !!_ll!:T@V!;l6b!<;Nb!<2Hd!<2He!:fOXNrSSJs75XU!"JAs!:T@V!:Kmfn*^5VqsXObs6ogb rpTgdrpTjeqsXObs6osfs6osf)".G)n*^5Vmf3@Vmf3@V!!)KV!!)Hf!:Tdbo'cU=s6p!fo'cSY r9sXc!:Tdbs6ojc!q-*hq="=`s6ogbrpTgdrpTjeqsXObs6osfs6osf)".G)n*^5Vmf3@Vmf3@V !!)KV!!)Hf!:TdbrpTgdnaHL !s$VfF1(H !ruLZF1(Hn!!)KV!!)HfoC)^ !s!U4Fg^Z>s,N,pn,E@/mfNNXRb[rCk5bP.mfNNLNoBI+!8R&Bs-`?Us75XY!<2He!!DZi!:Tme #4DNln*^5VqsXOb!:Tmes6osf%.=/rn*^5Vn*^5Vmf;tJs,R-Js8V]ZrrE#dr;ZidrW!&h!!)Ke !;l6b!!)Ke!<;Nf!"A;r!:T@V!:T@V!:Kpdn,ECfn,ECfn,E@pmf3@Vmf3@V!!)Ke!!DZi!:Tme $1@iomf3@Vmf3@Yn,JFJn,NFXn,ECfn,34tmf3@Vmf3@V!!)KV!!)Hf!;Z*`!!)Ke!<;Nf!"A;r !:T@V!:T@V!:Kpdn,ECfn,ECfn,E@pmf3@Vmf3@V!!)Ke!!DZi!:Tme&FTT!mf3@Vmf3@V!!)KV !!)TYs,R-Js8VZYrrDucrrE)frr<>n!!)KV!!)HfoC)^>i9pbjmr\V\~> !s$VfF1(Hn!!)KV!!)HfoC)^ !ruLZF1(H !s!U4Fg^Z>s,N,pn,E@/mfNNXRb[rCk5bP.mfNNLNk+WXs-`?Us75XY!<2He!<;Nf!"&)o!:Kmf n*^5VqX=Fas6omdrpTdcrU9ado'cU=s6p!foC)\ZrU9ad%.=/rmf3@Vmf3@V!!)larrE)fr;cic r;cfbrrDucrrE)frrE)frrE)fr;cicrr !s$VfF1(H !ruLZF1(H !s!U4Fg^Z>s,N,ms2j^2s-fD1k5bP.mfNNLNjetUn,NEnn,JFJn,NEAn,JFJn,NE=n+Q5MNrSSJ s3C*5No9@.FmjGQJ,~> !s$VfF1(H !ruLZF1(H;s,>V1amT60fDkpOcgLo7N4&\Rn,NEnn,J@Hn,NEAn,J@Hn,NE=n+Q5MN;rAHs3C*5 N8X.,F74/MJ,~> !s!U4Fg^Z=s,Pb3amT91Rb?j(s3L-7s,OMeRIC1UZL@gRs6p!fL%#&%s6p!fJa`=$s,R-Js8UC5 s,Q%+"*O'T!.Y~> !s$VfF1(H;s,>V1amT60fDkpOcgLo7N4&\Rn,NEnn,J@Hn,NEAn,J@Hn,NE=n+Q5MN;rAHs3C*5 N8X.,F74/MJ,~> !ruL)F1(Jfs2j`\s3L/?s-`?Us0D+nN;rAHs+TqAN;rAHs+0Y4n,J@Hn,NF5n,J@)mfRY"Er^^~> !s!THFg^\hs2j`\s3L/?s-`?Us0D+nNrSSJs+TqANrSSJs+0Y4n,JFJn,NF5n,JF+mfR_$FT?p~> !s$UHF1(Jfs2j`\s3L/?s-`?Us0D+nN;rAHs+TqAN;rAHs+0Y4n,J@Hn,NF5n,J@)mfRY"Er^^~> rr<)gF+Ne2mt'rBn,NEnn,J@Hn,NEAn,J@Hn,NE=n+Q5MN;rAHs3C*5N8X.,F74/MJ,~> rr<)gFb0"4mt'rBn,NEnn,JFJn,NEAn,JFJn,NE=n+Q5MNrSSJs3C*5No9@.FmjGQJ,~> rr<)gF+Ne2mt'rBn,NEnn,J@Hn,NEAn,J@Hn,NE=n+Q5MN;rAHs3C*5N8X.,F74/MJ,~> !s&AiF+Ne2mt'rBn,NEnn,J@Hn,NEAn,J@Hn,NE=n+Q5MN;rAHs3C*5N8X.,F74/MJ,~> !s&AiFb0"4mt'rBn,NEnn,JFJn,NEAn,JFJn,NE=n+Q5MNrSSJs3C*5No9@.FmjGQJ,~> !s&AiF+Ne2mt'rBn,NEnn,J@Hn,NEAn,J@Hn,NE=n+Q5MN;rAHs3C*5N8X.,F74/MJ,~> !s&AiF+Ne2mt'rBn,NEnn,J@Hn,NEAn,J@Hn,NE=n+Q5MN;rAHs3C*5N8X.,F74/MJ,~> !s&AiFb0"4mt'rBn,NEnn,JFJn,NEAn,JFJn,NE=n+Q5MNrSSJs3C*5No9@.FmjGQJ,~> !s&AiF+Ne2mt'rBn,NEnn,J@Hn,NEAn,J@Hn,NE=n+Q5MN;rAHs3C*5N8X.,F74/MJ,~> !s&AiF+Ne2mt'rBn,NEnn,J@Hn,NEAn,J@Hn,NE=n+Q5MN;rAHs3C*5N8X.,F74/MJ,~> !s&AiFb0"4mt'rBn,NEnn,JFJn,NEAn,JFJn,NE=n+Q5MNrSSJs3C*5No9@.FmjGQJ,~> !s&AiF+Ne2mt'rBn,NEnn,J@Hn,NEAn,J@Hn,NE=n+Q5MN;rAHs3C*5N8X.,F74/MJ,~> !s&AiF+Ne2mt'rBn,NEnn,J@Hn,NEAn,J@Hn,NE=n+Q5MN;rAHs3C*5N8X.,F74/MJ,~> !s&AiFb0"4mt'rBn,NEnn,JFJn,NEAn,JFJn,NE=n+Q5MNrSSJs3C*5No9@.FmjGQJ,~> !s&AiF+Ne2mt'rBn,NEnn,J@Hn,NEAn,J@Hn,NE=n+Q5MN;rAHs3C*5N8X.,F74/MJ,~> !s&AiF8bS)!;c0a!!;Th!;5g\!;l6b!:]IW!.jTimt's,n,NElN;rAHs+?:1n,NE=N:`)/n,NF3 N8X.,F74/MJ,~> !s&AiFoCe+!;c0a!!;Th!;5g\!;l6b!:]IW!.jTimt's,n,NElNrSSJs+?@3n,NE=NqAA3n,NF3 No9@.FmjGQJ,~> !s&AiF8bS)!;c0a!!;Th!;5g\!;l6b!:]IW!.jTimt's,n,NElN;rAHs+?:1n,NE=N:`)/n,NF3 N8X.,F74/MJ,~> !s&AiF8bS-!;#[Z!;5g\!;l6b!:]IW!.jTimt's,mfHs+640mf !s&AiFoCe/!;#[Z!;5g\!;l6b!:]IW!.jTimt's,mf !s&AiF8bS-!;#[Z!;5g\!;l6b!:]IW!.jTimt's,mfHs+640mf !s&AiF8bS-!;u !s&AiFoCe/!;u !s&AiF8bS-!;u !s&AiF8bS-!<)Bd!<;Nf!"eT!!:Kmfmf3@Vmf3@V!!)Ke!;l6b!<;Nf!<;Nf!"//p!:T@V!:T@V !;l6b!<;Nf!$CY0!:T@V!:Kmfn*^5Vmf3@Vmf3@V!!)KV!!)KV!!%T=Ja\0YJa\0YJa_mm"* !s&AiFoCe/!<)Bd!<;Nf!"eT!!:Kmfmf3@Vmf3@V!!)Ke!;l6b!<;Nf!<;Nf!"//p!:T@V!:T@V !;l6b!<;Nf!$CY0!:T@V!:Kmfn*^5Vmf3@Vmf3@V!!)KV!!)KV!!%T=Ja\0YJa\0YJa_mm"*O'T !.Y~> !s&AiF8bS-!<)Bd!<;Nf!"eT!!:Kmfmf3@Vmf3@V!!)Ke!;l6b!<;Nf!<;Nf!"//p!:T@V!:T@V !;l6b!<;Nf!$CY0!:T@V!:Kmfn*^5Vmf3@Vmf3@V!!)KV!!)KV!!%T=Ja\0YJa\0YJa_mm"* !s&AiF8bS*!;u !s&AiFoCe,!;u !s&AiF8bS*!;u !s&AiF8bS-!;u<`!!_ll!:Kmfn,!(hmf3@Vmf3@bn,ECfn,!+an,<=dn,ECbn,ECbn,*1bn,<=e n,!+an,<< !s&AiFoCe/!;u<`!!_ll!:Kmfn,!(hmf3@Vmf3@bn,ECfn,!+an,<=dn,ECbn,ECbn,*1bn,<=e n,!+an,<< !s&AiF8bS-!;u<`!!_ll!:Kmfn,!(hmf3@Vmf3@bn,ECfn,!+an,<=dn,ECbn,ECbn,*1bn,<=e n,!+an,<< !s&AiF8bS-!<)Bd!<;Nf!!r#n!:Kmfmf3@cn,ECfn,ECbn,ECfn,EC`n,<=en,ECbn,ECcn,ECf n,ECdn,<:gmf3@`n,<< !s&AiFoCe/!<)Bd!<;Nf!!r#n!:Kmfmf3@cn,ECfn,ECbn,ECfn,EC`n,<=en,ECbn,ECcn,ECf n,ECdn,<:gmf3@`n,<< !s&AiF8bS-!<)Bd!<;Nf!!r#n!:Kmfmf3@cn,ECfn,ECbn,ECfn,EC`n,<=en,ECbn,ECcn,ECf n,ECdn,<:gmf3@`n,<< !s&AiF8bS-!<)Bd!<;Nf!"eT!!:Kmfmf3@Vmf3@V!!)Ke!;l6b!!)Ke!<;Nf!"A;r!:T@V!:T@V !:Kpdn,ECfn,EA0mf3@Vmf3@V!!)KV!!)Hf!:T@V!:Kmfn*^5Vn*^5VJa\0YJa\0YJa\0YlL+gr mrJJZ~> !s&AiFoCe/!<)Bd!<;Nf!"eT!!:Kmfmf3@Vmf3@V!!)Ke!;l6b!!)Ke!<;Nf!"A;r!:T@V!:T@V !:Kpdn,ECfn,EA0mf3@Vmf3@V!!)KV!!)Hf!:T@V!:Kmfn*^5Vn*^5VJa\0YJa\0YJa\0YlL+gt mr\V\~> !s&AiF8bS-!<)Bd!<;Nf!"eT!!:Kmfmf3@Vmf3@V!!)Ke!;l6b!!)Ke!<;Nf!"A;r!:T@V!:T@V !:Kpdn,ECfn,EA0mf3@Vmf3@V!!)KV!!)Hf!:T@V!:Kmfn*^5Vn*^5VJa\0YJa\0YJa\0YlL+gr mrJJZ~> !s&AiF8bS-!;u !s&AiF8bS-!;u !s&AiFb0"4mt'r?n,ECcn,EC\n,EC`n,ECTn,EC[n,ECWn,ECWn,EC[n,EB=mt'rBmfR_$FT?p~> !s&AiF+Ne2mt'r?n,ECcn,EC\n,EC`n,ECTn,EC[n,ECWn,ECWn,EC[n,EB=mt'rBmfRY"Er^^~> !s&AiF+Ne2mt'r?n,<=dn,<=en,37cn,E@tmf3@V!!)KV!!)Hf!:TCT!<2Hc!;l6`!<;Nd!;l6b !!;Th!<2Hc!;l6`!<;Nd!<2Hc!<;Nd!<;Nd!<2He!!_ll!:T@V!.jTin&+SrF74/MJ,~> !s&AiFb0"4mt'r?n,<=dn,<=en,37cn,E@tmf3@V!!)KV!!)Hf!:TCT!<2Hc!;l6`!<;Nd!;l6b !!;Th!<2Hc!;l6`!<;Nd!<2Hc!<;Nd!<;Nd!<2He!!_ll!:T@V!.jTin&+SrFmjGQJ,~> !s&AiF+Ne2mt'r?n,<=dn,<=en,37cn,E@tmf3@V!!)KV!!)Hf!:TCT!<2Hc!;l6`!<;Nd!;l6b !!;Th!<2Hc!;l6`!<;Nd!<2Hc!<;Nd!<;Nd!<2He!!_ll!:T@V!.jTin&+SrF74/MJ,~> !s&AiF+Ne2mt'r?n,<=dn,<:omf3@Vmf3@V!!)Ke!#P)(!:T@V!:Kmfmf3@Vmf3@V!!)KV!!)ob rrE)frrE)frrDucrW!8n!!)Hf!:T@V!;l6b!<;Nf!<;Nf!#G#'!:T@V!:T@V!:T@V!:T@V!:Kmf n,<=en,EB=mt'rFmfRY"Er^^~> !s&AiFb0"4mt'r?n,<=dn,<:omf3@Vmf3@V!!)Ke!#P)(!:T@V!:Kmfmf3@Vmf3@V!!)KV!!)ob rrE)frrE)frrDucrW!8n!!)Hf!:T@V!;l6b!<;Nf!<;Nf!#G#'!:T@V!:T@V!:T@V!:T@V!:Kmf n,<=en,EB=mt'rFmfR_$FT?p~> !s&AiF+Ne2mt'r?n,<=dn,<:omf3@Vmf3@V!!)Ke!#P)(!:T@V!:Kmfmf3@Vmf3@V!!)KV!!)ob rrE)frrE)frrDucrW!8n!!)Hf!:T@V!;l6b!<;Nf!<;Nf!#G#'!:T@V!:T@V!:T@V!:T@V!:Kmf n,<=en,EB=mt'rFmfRY"Er^^~> !s&AiF+Ne2mt'r?n,34dn,35.mf3@Vmf3@V!!)KV!!)Hf!:T@V!:Kmfmf3@Vmf3@VrW)`^rrE)f rrE)frrDucrrE)frr<8l!!)KV!!)obrrE)frrE)frr<&frW)lbrrE)frrE)frr<8l!!)KV!!%T= Ja^AB"* !s&AiFb0"4mt'r?n,34dn,35.mf3@Vmf3@V!!)KV!!)Hf!:T@V!:Kmfmf3@Vmf3@VrW)`^rrE)f rrE)frrDucrrE)frr<8l!!)KV!!)obrrE)frrE)frr<&frW)lbrrE)frrE)frr<8l!!)KV!!%T= Ja^AB"*O'T!.Y~> !s&AiF+Ne2mt'r?n,34dn,35.mf3@Vmf3@V!!)KV!!)Hf!:T@V!:Kmfmf3@Vmf3@VrW)`^rrE)f rrE)frrDucrrE)frr<8l!!)KV!!)obrrE)frrE)frr<&frW)lbrrE)frrE)frr<8l!!)KV!!%T= Ja^AB"* !s&AiF+Ne2mt'r?n,EA0mf;eVmf3@V!!)KV!!)Hf!:T@V!:Kmfn*^5Vmf3@VqZ-WarW)f`rrE)f rrE)frrDucrrE)frr<&fqZ-N^rrE)fqZ-WarW)rdrrE)fqZ$ih!!)KV!!%T=Ja^AB"* !s&AiFb0"4mt'r?n,EA0mf;eVmf3@V!!)KV!!)Hf!:T@V!:Kmfn*^5Vmf3@VqZ-WarW)f`rrE)f rrE)frrDucrrE)frr<&fqZ-N^rrE)fqZ-WarW)rdrrE)fqZ$ih!!)KV!!%T=Ja^AB"*O'T!.Y~> !s&AiF+Ne2mt'r?n,EA0mf;eVmf3@V!!)KV!!)Hf!:T@V!:Kmfn*^5Vmf3@VqZ-WarW)f`rrE)f rrE)frrDucrrE)frr<&fqZ-N^rrE)fqZ-WarW)rdrrE)fqZ$ih!!)KV!!%T=Ja^AB"* !s&AiF+Ne2mt'r?n,E@fn,<;-mf3@V!!)KV!!)Hf!:T@V!:Kmfn*^5Vmf3@V!!)i`rW)iarrE)f rrE)frrDucrrE)frr<,h!!)c^rrE)frrDl`rW)uerrE)frrDucrrE)frr@W=Ja^AB"* !s&AiFb0"4mt'r?n,E@fn,<;-mf3@V!!)KV!!)Hf!:T@V!:Kmfn*^5Vmf3@V!!)i`rW)iarrE)f rrE)frrDucrrE)frr<,h!!)c^rrE)frrDl`rW)uerrE)frrDucrrE)frr@W=Ja^AB"*O'T!.Y~> !s&AiF+Ne2mt'r?n,E@fn,<;-mf3@V!!)KV!!)Hf!:T@V!:Kmfn*^5Vmf3@V!!)i`rW)iarrE)f rrE)frrDucrrE)frr<,h!!)c^rrE)frrDl`rW)uerrE)frrDucrrE)frr@W=Ja^AB"* !s&AiF+O@Bs+14#s6/qO!<;Ku!:T@V!:Kmfn*^5Vmf3@VrW!&h!!)Ke!"eT!!:Kmfn*^5Vmf3@V mf3@bn,E@fn,<=en,ECcn,<:nmf3@V!!)KV!!)obrr<&frW)uerr !s&AiFb0RDs+14#s6/qO!<;Ku!:T@V!:Kmfn*^5Vmf3@VrW!&h!!)Ke!"eT!!:Kmfn*^5Vmf3@V mf3@bn,E@fn,<=en,ECcn,<:nmf3@V!!)KV!!)obrr<&frW)uerr !s&AiF+O@Bs+14#s6/qO!<;Ku!:T@V!:Kmfn*^5Vmf3@VrW!&h!!)Ke!"eT!!:Kmfn*^5Vmf3@V mf3@bn,E@fn,<=en,ECcn,<:nmf3@V!!)KV!!)obrr<&frW)uerr "9AJjF8pdkJH16$f)PjOn*Z/4n,ECfmfid\mf3@Vn,37cn,E@tmf3@Vmf3@V!!)Hf!:TCT!<2Hc !;Z*`!<;Nd!;l6b!!;Th!<2Hc!;Z*`!<;Nd!<2Hc!<)Bd!<;Nd!<2He!!_ll!:T@V!.jTin&+Sr F74/MJ,~> "9AJjFoR#]JXV.Yf9ua?n*Z56n,ECfmfid\mf3@Vn,37cn,E@tmf3@Vmf3@V!!)Hf!:TCT!<2Hc !;Z*`!<;Nd!;l6b!!;Th!<2Hc!;Z*`!<;Nd!<2Hc!<)Bd!<;Nd!<2He!!_ll!:T@V!.jTin&+Sr FmjGQJ,~> "9AJjF8pdkJH16$f)PjOn*Z/4n,ECfmfid\mf3@Vn,37cn,E@tmf3@Vmf3@V!!)Hf!:TCT!<2Hc !;Z*`!<;Nd!;l6b!!;Th!<2Hc!;Z*`!<;Nd!<2Hc!<)Bd!<;Nd!<2He!!_ll!:T@V!.jTin&+Sr F74/MJ,~> "9AJjF8pdkJH16$f)PjOn*c28s+0Wimt'rBmfRY"Er^^~> "9AJjFoR#]JXV.YfU;m)s6oE:!<7W=Ja\0Y^[D8Imr\V\~> "9AJjF8pdkJH16$f)PjOn*c28s+0Wimt'rBmfRY"Er^^~> "9AJjF8pdkJH16$f)PpQmu35%mf8=Cn,NE=mt'qYn%\;nF74/MJ,~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG)mf8CEn,NE=mt'qYn%\;nFmjGQJ,~> "9AJjF8pdkJH16$f)PpQmu35%mf8=Cn,NE=mt'qYn%\;nF74/MJ,~> "9AJjF8pdkJH16$f)PpQmu35&mfEHIqX=IaJa\0YJa^AB"* "p"\lFoRo!JcC<$JcFL)s5sLamuEG*mfEHKqX=IaJa\0YJa^AB"*O'T!.Y~> "9AJjF8pdkJH16$f)PpQmu35&mfEHIqX=IaJa\0YJa^AB"* "9AJjF8pdkJH16$f)PpQmu35&mfNNJN;N)Ds+0Wimt'rBmfRY"Er^^~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG*mfNNLNr/;Fs+0Wimt'rBmfR_$FT?p~> "9AJjF8pdkJH16$f)PpQmu35&mfNNJN;N)Ds+0Wimt'rBmfRY"Er^^~> "9AJjF8pdkJH16$f)PpQmu35'n,NFfN;N)Ds+0Wimt'rBmfRY"Er^^~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG+n,NFfNr/;Fs+0Wimt'rBmfR_$FT?p~> "9AJjF8pdkJH16$f)PpQmu35'n,NFfN;N)Ds+0Wimt'rBmfRY"Er^^~> "9AJjF8pdkJH16$f)PpQmu35'n,NChmu35'n,NE=mt'qYn%\;nF74/MJ,~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG+n,NChmuEG+n,NE=mt'qYn%\;nFmjGQJ,~> "9AJjF8pdkJH16$f)PpQmu35'n,NChmu35'n,NE=mt'qYn%\;nF74/MJ,~> "9AJjF8pdkJH16$f)PpQmu35(n,NFfn,J@En,NCfmt(Lis+14#s6T1VF74/MJ,~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG,n,NFfn,JFGn,NCfmt(Lis+14#s6T1VFmjGQJ,~> "9AJjF8pdkJH16$f)PpQmu35(n,NFfn,J@En,NCfmt(Lis+14#s6T1VF74/MJ,~> "9AJjF8pdkJH16$f)PpQmu35(n,NFen,J@Fn,NCgn,Is/JXh:]f:2mAn*Z,;mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG,n,NFen,JFHn,NCgn,Is-JXV.Yf9ua?n*Z2=mre)A!.Y~> "9AJjF8pdkJH16$f)PpQmu35(n,NFen,J@Fn,NCgn,Is/JXh:]f:2mAn*Z,;mrRr=!.Y~> "9AJjF8pdkJH16$f)PpQmu35)n,NFdn,J@Fn,NCgn,Is/JXh:]fUN$+s6oE8"on%4mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG-n,NFdn,JFHn,NCgn,Is-JXV.YfU;m)s6oE:"on%6mr\V\~> "9AJjF8pdkJH16$f)PpQmu35)n,NFdn,J@Fn,NCgn,Is/JXh:]fUN$+s6oE8"on%4mrJJZ~> "9AJjF8pdkJH16$f)PpQmu35)n,NFcn,J@Gn,NCin,JoJJcC<$JcFL)s5sLamu35%mf8=Cn,NCj mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG-n,NFcn,JFIn,NCin,JiFJcC<$JcFL)s5sLamuEG)mf8CE n,NCjmre)A!.Y~> "9AJjF8pdkJH16$f)PpQmu35)n,NFcn,J@Gn,NCin,JoJJcC<$JcFL)s5sLamu35%mf8=Cn,NCj mrRr=!.Y~> "9AJjF8pdkJH16$f)Q'Umu34on,NFbn,J@Gn,NCin,JoJJcC<$JcFL)s5sLamu35&mfEHIqX=Ia "RgF#Er^^~> "p"\lFoRo!JcC<$JcFL)s5sXemuEFsn,NFbn,JFIn,NCin,JiFJcC<$JcFL)s5sLamuEG*mfEHK qX=Ia"RgL%FT?p~> "9AJjF8pdkJH16$f)Q'Umu34on,NFbn,J@Gn,NCin,JoJJcC<$JcFL)s5sLamu35&mfEHIqX=Ia "RgF#Er^^~> "9AJjF8pdkJH16$f)Q'Umu34on,NFan,J@Hn,NCin,JoJ])Vd1q>UEpf`(pOpAb*lJcC<$jo>AD "97hKN;N&Fs,;p6n,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sXemuEFsn,NFan,JFJn,NCin,JiF])Vd1q>UEpf`(pOpAb*lJcC<$ jo>AD"97hMNr/8Hs,N-:n,NCjmre)A!.Y~> "9AJjF8pdkJH16$f)Q'Umu34on,NFan,J@Hn,NCin,JoJ])Vd1q>UEpf`(pOpAb*lJcC<$jo>AD "97hKN;N&Fs,;p6n,NCjmrRr=!.Y~> "9AJjF8pdkJH16$f)Q$Tmu34os8Vo`s,@!Hs8N2is.#VDrr<&drr<&rs8E#frr<&\rr<&Urr<%M s+143s8V6as6ko*r9s[cs,?jDs8N5jF74/MJ,~> "p"\lFoRo!JcC<$JcFL)s5sUdmuEFss8Vo`s,R-Js8N2is-fD@rr<&drr<&rs8E#frr<&\rr<&U rr<%Ms+143s8V6as6ku.r9s[cs,R!Fs8N5jFmjGQJ,~> "9AJjF8pdkJH16$f)Q$Tmu34os8Vo`s,@!Hs8N2is.#VDrr<&drr<&rs8E#frr<&\rr<&Urr<%M s+143s8V6as6ko*r9s[cs,?jDs8N5jF74/MJ,~> "9AJjF8pdkJH16$f)Q$Tmu34os8Vl_s,70Ns8VQfS=JjD!!)Ed!!)rs!!*#u!!)Qh!!)-\!!(mU !!%TMJcFj3s5sLamu35'n,NChmu35'n,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sUdmuEFss8Vl_s,I "9AJjF8pdkJH16$f)Q$Tmu34os8Vl_s,70Ns8VQfS=JjD!!)Ed!!)rs!!*#u!!)Qh!!)-\!!(mU !!%TMJcFj3s5sLamu35'n,NChmu35'n,NCjmrRr=!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7MAD "97hKN;`5Fs8VQfN;W/Errhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7MBVn,NFVs-fDAs82lrs8E#ss8E#ts82lsrr<&urr<&u s8E#us8E!!rrE&ur;cisrW)rt!AD"97hMNrAGHs8VQfNr8AGrrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7MAD "97hKN;`5Fs8VQfN;W/Errhe3mrJJZ~> "9AJjF8pdkJH16$f)PsRmu35*o8N_L"7Q8[SE^%R!;uis!<3!#!<<'!rr2rurr2rur;Q`squ6Wr rr3<*s8N*!!<3'!rrE&u!!)ut!!)utrrE*!!!)or!!*#u!!)rs!!*#u!!*#u!!)lq!!)ip!!)ut !!%TMJcFj3s5sLamu35(n,NFen,J@Fn,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sObmuEG.o8`kN"7Q8YRd'hP!;uis!<3!#!<<'!rr2rurr2rur;Q`s qu6Wrrr3<*s8N*!!<3'!rrE&u!!)ut!!)utrrE*!!!)or!!*#u!!)rs!!*#u!!*#u!!)lq!!)ip !!)ut!!%TMJcFj3s5sLamuEG,n,NFen,JFHn,NCjmre)A!.Y~> "9AJjF8pdkJH16$f)PsRmu35*o8N_L"7Q8[SE^%R!;uis!<3!#!<<'!rr2rurr2rur;Q`squ6Wr rr3<*s8N*!!<3'!rrE&u!!)ut!!)utrrE*!!!)or!!*#u!!)rs!!*#u!!*#u!!)lq!!)ip!!)ut !!%TMJcFj3s5sLamu35(n,NFen,J@Fn,NCjmrRr=!.Y~> "9AJjF8pdkJH16$f)PpQmu34rn,NCin,JoJl2L_`r;ZZprr;rtrVlitr;Q`squ6Wrrr3<*s8N*! !<3'!rrE&u!!)ut!!)ut!!*#u!!*#ur;cis!!)rs!!*#u!!*#u!!)lq!!)rsr;cfr!!%TMJcFj3 s5sLamu35)n,NFdn,J@Fn,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFl2L_`r;ZZprr;rtrVlitr;Q`squ6Wrrr3<* s8N*!!<3'!rrE&u!!)ut!!)ut!!*#u!!*#ur;cis!!)rs!!*#u!!*#u!!)lq!!)rsr;cfr!!%TM JcFj3s5sLamuEG-n,NFdn,JFHn,NCjmre)A!.Y~> "9AJjF8pdkJH16$f)PpQmu34rn,NCin,JoJl2L_`r;ZZprr;rtrVlitr;Q`squ6Wrrr3<*s8N*! !<3'!rrE&u!!)ut!!)ut!!*#u!!*#ur;cis!!)rs!!*#u!!*#u!!)lq!!)rsr;cfr!!%TMJcFj3 s5sLamu35)n,NFdn,J@Fn,NCjmrRr=!.Y~> "9AJjF8pdkJH16$f)PpQmu34prr_`iS=JjD!!)rs!!)cn!!*#u!!)rs!!*#u!s&B$!<3!*!<<'! rrE'!s8N)urr<&trr<&trr<&urrW9$rrE&u!!*#u!!)rs!!*#u!!*#u!!)lq!!)ut!!*#u!!)ut !!%TMJcFj3s5sLamu35)n,NFcn,J@Gn,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEFtrr_`iR[WL@!!)rs!!)cn!!*#u!!)rs!!*#u!s&B$!<3!* !<<'!rrE'!s8N)urr<&trr<&trr<&urrW9$rrE&u!!*#u!!)rs!!*#u!!*#u!!)lq!!)ut!!*#u !!)ut!!%TMJcFj3s5sLamuEG-n,NFcn,JFIn,NCjmre)A!.Y~> "9AJjF8pdkJH16$f)PpQmu34prr_`iS=JjD!!)rs!!)cn!!*#u!!)rs!!*#u!s&B$!<3!*!<<'! rrE'!s8N)urr<&trr<&trr<&urrW9$rrE&u!!*#u!!)rs!!*#u!!*#u!!)lq!!)ut!!*#u!!)ut !!%TMJcFj3s5sLamu35)n,NFcn,J@Gn,NCjmrRr=!.Y~> "9AJjF8pdkJH16$f)PpQmu34srs"G^s6ouXSE^%R!<3!"!<3&urrW9$rrE&u!!*#u!!*#u!W`6# rr3'#s8N)ursAc+rrE'!rrE*!!<2uu!<)ot!<)ot!<3!#!<<'!rr2rurr2rurr3$"rrE&u!!*#u !!)lq!!)ut!!*#u!!)ut!!%TMJcFj3s5sXemu34on,NFbn,J@Gn,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG"rs"M`s6ouVRd'hP!<3!"!<3&urrW9$rrE&u!!*#u!!*#u !W`6#rr3'#s8N)ursAc+rrE'!rrE*!!<2uu!<)ot!<)ot!<3!#!<<'!rr2rurr2rurr3$"rrE&u !!*#u!!)lq!!)ut!!*#u!!)ut!!%TMJcFj3s5sXemuEFsn,NFbn,JFIn,NCjmre)A!.Y~> "9AJjF8pdkJH16$f)PpQmu34srs"G^s6ouXSE^%R!<3!"!<3&urrW9$rrE&u!!*#u!!*#u!W`6# rr3'#s8N)ursAc+rrE'!rrE*!!<2uu!<)ot!<)ot!<3!#!<<'!rr2rurr2rurr3$"rrE&u!!*#u !!)lq!!)ut!!*#u!!)ut!!%TMJcFj3s5sXemu34on,NFbn,J@Gn,NCjmrRr=!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJkl:V^rr;rtrVuisr;Z`rrr;rtrVuiss8W*! !ri9#rVururW)rtqu?`srW)uurrE*!rW!!!!<3#t!<3#t!<3#s!<3#r!<3#t!!<0#s8)eIs+146 s8V6es6ko*n*g;VqX=HCs6p!f"RgF#Er^^~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFkl:V^rr;rtrVuisr;Z`rrr;rtrVuis s8W*!!ri9#rVururW)rtqu?`srW)uurrE*!rW!!!!<3#t!<3#t!<3#s!<3#r!<3#t!!<0#s8)eI s+146s8V6es6ku.n*g;VqX=HEs6p!f"RgL%FT?p~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJkl:V^rr;rtrVuisr;Z`rrr;rtrVuiss8W*! !ri9#rVururW)rtqu?`srW)uurrE*!rW!!!!<3#t!<3#t!<3#s!<3#r!<3#t!!<0#s8)eIs+146 s8V6es6ko*n*g;VqX=HCs6p!f"RgF#Er^^~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sUdmu34os8Vo`s,@!Hs8N5j F74/MJ,~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sUdmuEFss8Vo`s,R-J s8N5jFmjGQJ,~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sUdmu34os8Vo`s,@!Hs8N5j F74/MJ,~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sUdmu34os8Vl_s,73Os8VP/ mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sUdmuEFss8Vl_s,I?Q s8VP1mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sUdmu34os8Vl_s,73Os8VP/ mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7M "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7MBWn,NFV FmjGQJ,~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7M "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sObmu35*o8N_L"RgF#Er^^~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sObmuEG.o8`kN"RgL% FT?p~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sObmu35*o8N_L"RgF#Er^^~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJWW)quJcC<$[/^0h"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFWW)quJcC<$[/^0h"97hMNq2Z=rrhe5 mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJWW)quJcC<$[/^0h"97hKN:QH;rrhe3mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`mJd.drVucqJcC<$P5kRF"97hKN:?iM mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`mJd.drVucqJcC<$P5kRF"97hM Nq!&Omre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`mJd.drVucqJcC<$P5kRF"97hKN:?iM mrRr=!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`mJd.dr;Q`srr2ruJcC<$PQ1[G"97hK N:[&SN;rqHF74/MJ,~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`mJd.dr;Q`srr2ruJcC<$PQ1[G "97hMNq<8UNrT.JFmjGQJ,~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`mJd.dr;Q`srr2ruJcC<$PQ1[G"97hK N:[&SN;rqHF74/MJ,~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJlMpb^rr;rtrVuisrr;lrs8N'!rr3!!s8Duu s8;ots8E#ts8;rts8E!!rrE&urW)lrrW%NLJcEC_s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFlMpb^rr;rtrVuisrr;lrs8N'!rr3!! s8Duus8;ots8E#ts8;rts8E!!rrE&urW)lrrW%NLJcEC_s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJlMpb^rr;rtrVuisrr;lrs8N'!rr3!!s8Duu s8;ots8E#ts8;rts8E!!rrE&urW)lrrW%NLJcEC_s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`r;Q`srr3'#s8N)urr<&urr<&srr<&u rrW9$rrE&u#6=f(!!*'!!;ld$!<<'!rrE'!rVlitrVlitrr2ruJcC<$^&S,q"on%MN;rqOn,J@H rrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`r;Q`srr3'#s8N)urr<&urr<&s rr<&urrW9$rrE&u#6=f(!!*'!!;ld$!<<'!rrE'!rVlitrVlitrr2ruJcC<$^&S,q"on%ONrT.Q n,JFJrrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`r;Q`srr3'#s8N)urr<&urr<&srr<&u rrW9$rrE&u#6=f(!!*'!!;ld$!<<'!rrE'!rVlitrVlitrr2ruJcC<$^&S,q"on%MN;rqOn,J@H rrhe3mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`r;ZZprr;rtrVlitr;Q`srr3'#s8N)u rrW9$rrE&u!!*#ur;clt"9AH%rrE#t!!)ut!!%TMJcE:\s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`r;ZZprr;rtrVlitr;Q`srr3'# s8N)urrW9$rrE&u!!*#ur;clt"9AH%rrE#t!!)ut!!%TMJcE:\s5sRcmuEG.s7Yp]NrT+^mre)A !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`r;ZZprr;rtrVlitr;Q`srr3'#s8N)u rrW9$rrE&u!!*#ur;clt"9AH%rrE#t!!)ut!!%TMJcE:\s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`r;Q`sp\t3nrr2rur;Q`srr2rurr3$" rrE&u!!*#u!s&B$!<3!'!<<'!rrE'!rVlitrVlitJcC<$\c;]m"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`r;Q`sp\t3nrr2rur;Q`srr2ru rr3$"rrE&u!!*#u!s&B$!<3!'!<<'!rrE'!rVlitrVlitJcC<$\c;]m"on%ONrT.Qn,JFJrrhe5 mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`r;Q`sp\t3nrr2rur;Q`srr2rurr3$" rrE&u!!*#u!s&B$!<3!'!<<'!rrE'!rVlitrVlitJcC<$\c;]m"on%MN;rqOn,J@Hrrhe3mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`rr3$"rrE&u!s&B$!<2uu!<2uu!<3!" !<3&urr<&us8E#trr<&urrW9$rrE&u#6=f(!<3'!!<)ot!<)ot!<2uu!.k0$s1SI4k6:nSN/[f: p@&$?s8N5jF74/MJ,~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`rr3$"rrE&u!s&B$!<2uu!<2uu !<3!"!<3&urr<&us8E#trr<&urrW9$rrE&u#6=f(!<3'!!<)ot!<)ot!<2uu!.k0$s1SI4k6:nS NfO/>p@&$As8N5jFmjGQJ,~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`rr3$"rrE&u!s&B$!<2uu!<2uu!<3!" !<3&urr<&us8E#trr<&urrW9$rrE&u#6=f(!<3'!!<)ot!<)ot!<2uu!.k0$s1SI4k6:nSN/[f: p@&$?s8N5jF74/MJ,~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJkl:V^rr;rtrVuisr;Z`r!<;rsr;Q`srr;rt s8W*!s8W&u!<<#u"oeT&!!*&s!<3#t!.k0$s1JC3k6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFkl:V^rr;rtrVuisr;Z`r!<;rsr;Q`s rr;rts8W*!s8W&u!<<#u"oeT&!!*&s!<3#t!.k0$s1JC3k6:nSNfO/>p@&$As8N5jFmjGQJ,~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJkl:V^rr;rtrVuisr;Z`r!<;rsr;Q`srr;rt s8W*!s8W&u!<<#u"oeT&!!*&s!<3#t!.k0$s1JC3k6:nSN/[f:p@&$?s8N5jF74/MJ,~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJ`W#o "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiF`W#o "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJ`W#o "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJ`W#o "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiF`W#o "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJ`W#o "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJa8c/>JcC<$QiI*K"on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFa8c/>JcC<$QiI*K"on%ONrT.Qn,JFJ rrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJa8c/>JcC<$QiI*K"on%MN;rqOn,J@Hrrhe3 mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`mJd.dr;ZZpp\t3nJcC<$T)\iR"on%M N;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`mJd.dr;ZZpp\t3nJcC<$T)\iR "on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`mJd.dr;ZZpp\t3nJcC<$T)\iR"on%M N;rqOn,J@Hrrhe3mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`mJd.dqYpNqp&>!lJcC<$T)\iR"on%M N;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`mJd.dqYpNqp&>!lJcC<$T)\iR "on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`mJd.dqYpNqp&>!lJcC<$T)\iR"on%M N;rqOn,J@Hrrhe3mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJlMpb^rr;rtrVuisrr;lrrVlitrr3!!s8E#t s82lrs8E#ss8E!#rrE*!rW)rt! "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFlMpb^rr;rtrVuisrr;lrrVlitrr3!! s8E#ts82lrs8E#ss8E!#rrE*!rW)rt!p@&$As8N5jFmjGQJ,~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJlMpb^rr;rtrVuisrr;lrrVlitrr3!!s8E#t s82lrs8E#ss8E!#rrE*!rW)rt! "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`r;Q`srr3'#s8N)urr<&urr<&qrr<&t s8N*!rr<&urr<&srr<&urrW9$rrE&u!s&B$!<2uu!<2uu!.k0$s1871k6:nSN/[f:p@&$?s8N5j F74/MJ,~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`r;Q`srr3'#s8N)urr<&urr<&q rr<&ts8N*!rr<&urr<&srr<&urrW9$rrE&u!s&B$!<2uu!<2uu!.k0$s1871k6:nSNfO/>p@&$A s8N5jFmjGQJ,~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`r;Q`srr3'#s8N)urr<&urr<&qrr<&t s8N*!rr<&urr<&srr<&urrW9$rrE&u!s&B$!<2uu!<2uu!.k0$s1871k6:nSN/[f:p@&$?s8N5j F74/MJ,~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`r;ZZprr;rtrVlitqYpNqrVlitrr2ru rr2rur;ZZps8N'!rr3$"s8Vusrr2ruJcC<$])Vfn"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`r;ZZprr;rtrVlitqYpNqrVlit rr2rurr2rur;ZZps8N'!rr3$"s8Vusrr2ruJcC<$])Vfn"on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`r;ZZprr;rtrVlitqYpNqrVlitrr2ru rr2rur;ZZps8N'!rr3$"s8Vusrr2ruJcC<$])Vfn"on%MN;rqOn,J@Hrrhe3mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`r;Q`sp\t3nrr2ruqYpNqrVlitrr2ru rr2rur;Q`squ6Wrrr3'#s8N)qrr<%Ms+13]s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`r;Q`sp\t3nrr2ruqYpNqrVlit rr2rurr2rur;Q`squ6Wrrr3'#s8N)qrr<%Ms+13]s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`r;Q`sp\t3nrr2ruqYpNqrVlitrr2ru rr2rur;Q`squ6Wrrr3'#s8N)qrr<%Ms+13]s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`rr3$"rrE&u!s&B$!<2uu!<2uu!<2uu !<2uu!<)ot!<2uu!<2uu!<3!"!<3&urrW9$rrE&u!s&B$!<2uu!<2uu!.k0$s1871k6:nSN/[f: p@&$?s8N5jF74/MJ,~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`rr3$"rrE&u!s&B$!<2uu!<2uu !<2uu!<2uu!<)ot!<2uu!<2uu!<3!"!<3&urrW9$rrE&u!s&B$!<2uu!<2uu!.k0$s1871k6:nS NfO/>p@&$As8N5jFmjGQJ,~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`rr3$"rrE&u!s&B$!<2uu!<2uu!<2uu !<2uu!<)ot!<2uu!<2uu!<3!"!<3&urrW9$rrE&u!s&B$!<2uu!<2uu!.k0$s1871k6:nSN/[f: p@&$?s8N5jF74/MJ,~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJkl:V^rr;rtrVuisr;Z`rs8Vus!<<#us8W*! rr;rtrr;rtrVufrrr;rtrr;osJcC<$]`8#p"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFkl:V^rr;rtrVuisr;Z`rs8Vus!<<#u s8W*!rr;rtrr;rtrVufrrr;rtrr;osJcC<$]`8#p"on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJkl:V^rr;rtrVuisr;Z`rs8Vus!<<#us8W*! rr;rtrr;rtrVufrrr;rtrr;osJcC<$]`8#p"on%MN;rqOn,J@Hrrhe3mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJY5\J%JcC<$YQ+Xc"on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFY5\J%JcC<$YQ+Xc"on%ONrT.Qn,JFJ rrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJY5\J%JcC<$YQ+Xc"on%MN;rqOn,J@Hrrhe3 mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJY5\J%JcC<$YQ+Xc"on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFY5\J%JcC<$YQ+Xc"on%ONrT.Qn,JFJ rrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJY5\J%JcC<$YQ+Xc"on%MN;rqOn,J@Hrrhe3 mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJZ2ae'JcC<$Y5eOb"on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFZ2ae'JcC<$Y5eOb"on%ONrT.Qn,JFJ rrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJZ2ae'JcC<$Y5eOb"on%MN;rqOn,J@Hrrhe3 mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJ`W#o "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiF`W#o "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJ`W#o "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`mJd.drVuismJd.dJcC<$V>pSY"on%M N;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`mJd.drVuismJd.dJcC<$V>pSY "on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`mJd.drVuismJd.dJcC<$V>pSY"on%M N;rqOn,J@Hrrhe3mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`mJd.dr;Q`sm/I%cJcC<$V>pSY"on%M N;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`mJd.dr;Q`sm/I%cJcC<$V>pSY "on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`mJd.dr;Q`sm/I%cJcC<$V>pSY"on%M N;rqOn,J@Hrrhe3mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJlMpb^rr;rtrVuisrr;lrs8N'!qu?Wqr;Z`r rr;lrJcC<$W;ln\"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFlMpb^rr;rtrVuisrr;lrs8N'!qu?Wq r;Z`rrr;lrJcC<$W;ln\"on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJlMpb^rr;rtrVuisrr;lrs8N'!qu?Wqr;Z`r rr;lrJcC<$W;ln\"on%MN;rqOn,J@Hrrhe3mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`r;Q`srr3'#s8N)urr<&urr<&srr<&p rr<&trr<&urr<&urr<%Ms+13Hs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`r;Q`srr3'#s8N)urr<&urr<&s rr<&prr<&trr<&urr<&urr<%Ms+13Hs8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`r;Q`srr3'#s8N)urr<&urr<&srr<&p rr<&trr<&urr<&urr<%Ms+13Hs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`r;ZZprr;rtrVlitr;Q`sq>UEpr;Z`r rVlitJcC<$V>pSY"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`r;ZZprr;rtrVlitr;Q`sq>UEp r;Z`rrVlitJcC<$V>pSY"on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`r;ZZprr;rtrVlitr;Q`sq>UEpr;Z`r rVlitJcC<$V>pSY"on%MN;rqOn,J@Hrrhe3mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`r;Q`sp\t3nrr2rur;Q`srr2rurVlit q>UEprr2ruJcC<$V>pSY"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`r;Q`sp\t3nrr2rur;Q`srr2ru rVlitq>UEprr2ruJcC<$V>pSY"on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`r;Q`sp\t3nrr2rur;Q`srr2rurVlit q>UEprr2ruJcC<$V>pSY"on%MN;rqOn,J@Hrrhe3mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`rr3$"rrE&u!s&B$!<2uu!<2uu!<3!" !<3&urr<&trr<&trr<&urr<&urr<&urr<%Ms+13Ls8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`rr3$"rrE&u!s&B$!<2uu!<2uu !<3!"!<3&urr<&trr<&trr<&urr<&urr<&urr<%Ms+13Ls8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`rr3$"rrE&u!s&B$!<2uu!<2uu!<3!" !<3&urr<&trr<&trr<&urr<&urr<&urr<%Ms+13Ls8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJkl:V^rr;rtrVuisr;Z`r!<;ors8Vusrr;rt r;Z`rJcC<$W;ln\"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFkl:V^rr;rtrVuisr;Z`r!<;ors8Vus rr;rtr;Z`rJcC<$W;ln\"on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJkl:V^rr;rtrVuisr;Z`r!<;ors8Vusrr;rt r;Z`rJcC<$W;ln\"on%MN;rqOn,J@Hrrhe3mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`mJd.dqu?TpnG`IgJcC<$V>pSY"on%M N;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFl2L_`mJd.dqu?TpnG`IgJcC<$V>pSY "on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJl2L_`mJd.dqu?TpnG`IgJcC<$V>pSY"on%M N;rqOn,J@Hrrhe3mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJnG`Igqu6WrmJd.dr;Q`srr2runG`IgJcC<$ V>pSY"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFnG`Igqu6WrmJd.dr;Q`srr2runG`Ig JcC<$V>pSY"on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJnG`Igqu6WrmJd.dr;Q`srr2runG`IgJcC<$ V>pSY"on%MN;rqOn,J@Hrrhe3mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJn,E@frVucqrr;rtrVuisrr;lrs8N'!qZ$Np rr3!!s8E#us82kJs+13Ks8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFn,E@frVucqrr;rtrVuisrr;lrs8N'! qZ$Nprr3!!s8E#us82kJs+13Ks8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJn,E@frVucqrr;rtrVuisrr;lrs8N'!qZ$Np rr3!!s8E#us82kJs+13Ks8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn]n,JoJs8Vuss8Vusr;Q`srVlitr;Q`srr3'#s8N)u rr<&urr<&ss8E#srr<&urr<&urr<&rrr<%Ms+13Hs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+_n,JiFs8Vuss8Vusr;Q`srVlitr;Q`srr3'# s8N)urr<&urr<&ss8E#srr<&urr<&urr<&rrr<%Ms+13Hs8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn]n,JoJs8Vuss8Vusr;Q`srVlitr;Q`srr3'#s8N)u rr<&urr<&ss8E#srr<&urr<&urr<&rrr<%Ms+13Hs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJmJd.drr2rur;ZZprr;rtrVlitqZ$Nps8N'! rr2rurr2ruqu6WrJcC<$V>pSY"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFmJd.drr2rur;ZZprr;rtrVlitqZ$Np s8N'!rr2rurr2ruqu6WrJcC<$V>pSY"on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJmJd.drr2rur;ZZprr;rtrVlitqZ$Nps8N'! rr2rurr2ruqu6WrJcC<$V>pSY"on%MN;rqOn,J@Hrrhe3mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn]n,JoJs8Vuss8Vusr;Q`srVlitr;Q`sp\t3nrr2ru q#:Ers8N)urr<&urr<&rrr<%Ms+13Hs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+_n,JiFs8Vuss8Vusr;Q`srVlitr;Q`sp\t3n rr2ruq#:Ers8N)urr<&urr<&rrr<%Ms+13Hs8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn]n,JoJs8Vuss8Vusr;Q`srVlitr;Q`sp\t3nrr2ru q#:Ers8N)urr<&urr<&rrr<%Ms+13Hs8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJn,E@fr;Q`srr3$"rrE&u!s&B$!<2uu!<2uu !<3!"!<3&urrW9$rrE&u!!*#u!!)or!!*#u!!%TMJcD_Ls5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFn,E@fr;Q`srr3$"rrE&u!s&B$!<2uu !<2uu!<3!"!<3&urrW9$rrE&u!!*#u!!)or!!*#u!!%TMJcD_Ls5sRcmuEG.s7Yp]NrT+^mre)A !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJn,E@fr;Q`srr3$"rrE&u!s&B$!<2uu!<2uu !<3!"!<3&urrW9$rrE&u!!*#u!!)or!!*#u!!%TMJcD_Ls5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJnG`IgqZ$Nprr;rtrVuisr;Z`rs8W#trVuis rr;osr;Z`rJcC<$W;ln\"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFnG`IgqZ$Nprr;rtrVuisr;Z`rs8W#t rVuisrr;osr;Z`rJcC<$W;ln\"on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJnG`IgqZ$Nprr;rtrVuisr;Z`rs8W#trVuis rr;osr;Z`rJcC<$W;ln\"on%MN;rqOn,J@Hrrhe3mrJJZ~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "9AJjF8pdkJH16$f)Q!Smu35*s7D9Mrr_`iS=G01JcC<$g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7D?Orr_`iR[Sg-JcC<$g].<:"on%ONrT.Qn,JFJrrhe5 mr\V\~> "9AJjF8pdkJH16$f)Q!Smu35*s7D9Mrr_`iS=G01JcC<$g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> "9AJjF8pdkJH16$f)PsRmu35*o8N_L"7Q8[S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!JcC<$JcFL)s5sObmuEG.o8`kN"7Q8YRXtKis+14)s8V6cs6ku.s8Vf]s,R-Z"RgL% FT?p~> "9AJjF8pdkJH16$f)PsRmu35*o8N_L"7Q8[S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "9AJjF8pdkJH16$f)PpQmu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^mre)A !.Y~> "9AJjF8pdkJH16$f)PpQmu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "9AJjF8pdkJH16$f)PpQmu34prr_`iS=G01JcC<$g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sLamuEFtrr_`iR[Sg-JcC<$g].<:"on%ONrT.Qn,JFJrrhe5mr\V\~> "9AJjF8pdkJH16$f)PpQmu34prr_`iS=G01JcC<$g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> "9AJjF8pdkJH16$f)PsRmu34oo`#,Ss8VQfS=G01JcC<$g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sObmuEFso`#,Us8VQfR[Sg-JcC<$g].<:"on%ONrT.Qn,JFJrrhe5 mr\V\~> "9AJjF8pdkJH16$f)PsRmu34oo`#,Ss8VQfS=G01JcC<$g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> "9AJjF8pdkJH16$f)Q$Tmu34os8Vl_s,70Ns8VQfS=G01JcC<$g].<:"on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sUdmuEFss8Vl_s,I "9AJjF8pdkJH16$f)Q$Tmu34os8Vl_s,70Ns8VQfS=G01JcC<$g].<:"on%MN;rqOn,J@Hrrhe3 mrJJZ~> "9AJjF8pdkJH16$f)Q'Umu34on,NF`n,J=Nn,NFVs.#U1s+13$s4dSRk6:nSN/[f:p@&$?s8N5j F74/MJ,~> "p"\lFoRo!JcC<$JcFL)s5sXemuEFsn,NF`n,JCPn,NFVs-fC-s+13$s4dSRk6:nSNfO/>p@&$A s8N5jFmjGQJ,~> "9AJjF8pdkJH16$f)Q'Umu34on,NF`n,J=Nn,NFVs.#U1s+13$s4dSRk6:nSN/[f:p@&$?s8N5j F74/MJ,~> "9AJjF8pdkJH16$f)Q'Umu34on,NFan,J@Hn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sXemuEFsn,NFan,JFJn,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp] NrT+^mre)A!.Y~> "9AJjF8pdkJH16$f)Q'Umu34on,NFan,J@Hn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "9AJjF8pdkJH16$f)PpQmu35)n,NFbn,J@Hn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG-n,NFbn,JFJn,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp] NrT+^mre)A!.Y~> "9AJjF8pdkJH16$f)PpQmu35)n,NFbn,J@Hn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "9AJjF8pdkJH16$f)PpQmu35)n,NFcn,J@Gn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG-n,NFcn,JFIn,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp] NrT+^mre)A!.Y~> "9AJjF8pdkJH16$f)PpQmu35)n,NFcn,J@Gn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "9AJjF8pdkJH16$f)PpQmu35(n,NFdn,J@Gn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG,n,NFdn,JFIn,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp] NrT+^mre)A!.Y~> "9AJjF8pdkJH16$f)PpQmu35(n,NFdn,J@Gn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "9AJjF8pdkJH16$f)PpQmu35(n,NFen,J@Fn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG,n,NFen,JFHn,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp] NrT+^mre)A!.Y~> "9AJjF8pdkJH16$f)PpQmu35(n,NFen,J@Fn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "9AJjF8pdkJH16$f)PpQmu35'n,NFfn,J@Fn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG+n,NFfn,JFHn,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp] NrT+^mre)A!.Y~> "9AJjF8pdkJH16$f)PpQmu35'n,NFfn,J@Fn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "9AJjF8pdkJH16$f)PpQmu35'n,NChmu35'n,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG+n,NChmuEG+n,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp] NrT+^mre)A!.Y~> "9AJjF8pdkJH16$f)PpQmu35'n,NChmu35'n,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "9AJjF8pdkJH16$f)PpQmu35&mf "p"\lFoRo!JcC<$JcFL)s5sLamuEG*mf "9AJjF8pdkJH16$f)PpQmu35&mf "9AJjF8pdkJH16$f)PpQmu35&mfNNJN;N)Drr_`iS=G01JcC<$g].<:"TRqLN;rL.s8N5jF74/M J,~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG*mfNNLNr/;Frr_`iR[Sg-JcC<$g].<:"TRqNNrS^2s8N5j FmjGQJ,~> "9AJjF8pdkJH16$f)PpQmu35&mfNNJN;N)Drr_`iS=G01JcC<$g].<:"TRqLN;rL.s8N5jF74/M J,~> "9AJjF8pdkJH16$f)PpQmu35%n,J@Dn,NCin,JoJJcC<$JcFL)s5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG)n,JFFn,NCin,JiFJcC<$JcFL)s5sLamuEG!n,NCjmre)A !.Y~> "9AJjF8pdkJH16$f)PpQmu35%n,J@Dn,NCin,JoJJcC<$JcFL)s5sLamu34rn,NCjmrRr=!.Y~> "9AJjF8pdkJH16$f)PpQmu35%mf8=Cn,NCin,JoJJcC<$JcFL)s5sLamu34prrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG)mf8CEn,NCin,JiFJcC<$JcFL)s5sLamuEFtrrhe5mr\V\~> "9AJjF8pdkJH16$f)PpQmu35%mf8=Cn,NCin,JoJJcC<$JcFL)s5sLamu34prrhe3mrJJZ~> "9AJjF8pdkJH16$f)PpQmu34prr_`iS=G01JcC<$g].<:"TRqLN:6E=#E8]_mrRr=!.Y~> "p"\lFoRo!J`hUIJ`k_L"97hMNq!&Nn,JiFJcC<$JcFL)s5sObmuEFso`#/Vs8VP1mr\V\~> "9AJjF8pdkJH16$f)PpQmu34prr_`iS=G01JcC<$g].<:"TRqLN:6E=#E8]_mrRr=!.Y~> "9AJjF8pdkJH16$f)PmPmu6`8"7Q8[S:U]ks+14)s8V6ds6ko*n,NF_n,J=On,NFVF74/MJ,~> "T\SkFoRn]kCMfIkLer!s6l!:rr_`iR[Sg-JcC<$g].<:#64.PNpm#Jq!\6C#Oh]mmre)A!.Y~> "9AJjF8pdkJH16$f)PmPmu6`8"7Q8[S:U]ks+14)s8V6ds6ko*n,NF_n,J=On,NFVF74/MJ,~> !s&AiF+O@Bs+14#s6T1Us.#U1s+13$s4dSRk6M%UN/[5os8Vo`s,73Os8VP/mrJJZ~> !s&AiFb0RDs+14#s6T1Us-fC-s+13$s4dSRk6M%UNfNSss8Vo`s,I?Qs8VP1mr\V\~> !s&AiF+O@Bs+14#s6T1Us.#U1s+13$s4dSRk6M%UN/[5os8Vo`s,73Os8VP/mrJJZ~> !s&AiF+Ne2mt'rCmfNNZS:U]ks+14)s8V6es6ko*n*g;VqX=HCs6p!f"RgF#Er^^~> !s&AiFb0"4mt'rCmfNNXRXtKis+14)s8V6es6ku.n*g;VqX=HEs6p!f"RgL%FT?p~> !s&AiF+Ne2mt'rCmfNNZS:U]ks+14)s8V6es6ko*n*g;VqX=HCs6p!f"RgF#Er^^~> "9AJjF74[=JW,/=f8T%a!rnd\JcC<$JcFL)s5sLamu35)n,NFbn,J@Hn,NCjmrRr=!.Y~> "9AJjFmjmAJW>;Af8f1c!rn^XJcC<$JcFL)s5sLamuEG-n,NFbn,JFJn,NCjmre)A!.Y~> "9AJjF74[=JW,/=f8T%a!rnd\JcC<$JcFL)s5sLamu35)n,NFbn,J@Hn,NCjmrRr=!.Y~> "9AJjF74[=JW,/=fSfh1lgFoTS=G01JcC<$g].<:"97hKN;i;Gs8;?cN;i;Grrhe3mrJJZ~> "9AJjFmjmAJW>;AfT#t3lgFoTR[Sg-JcC<$g].<:"97hMNrJMIs8;?cNrJMIrrhe5mr\V\~> "9AJjF74[=JW,/=fSfh1lgFoTS=G01JcC<$g].<:"97hKN;i;Gs8;?cN;i;Grrhe3mrJJZ~> "p"\lF75'HoBu_[mt(Lis+14IrrVZhs7Gd[s6K+Ts.#U1s+13$s4dSRk6(bQN/[`(s8W&ds,?sG s8N5jF74/MJ,~> "p"\lFmk?NoBu_[mt(Lis+14IrrVZhs7Gd[s6K+Ts-fC-s+13$s4dSRk6(bQNfO),s8W&ds,R*I s8N5jFmjGQJ,~> "p"\lF75'HoBu_[mt(Lis+14IrrVZhs7Gd[s6K+Ts.#U1s+13$s4dSRk6(bQN/[`(s8W&ds,?sG s8N5jF74/MJ,~> "p"\lF75'Hp$_q\!K?Jus+13$s8;ltN:6`Fp@&%]lgFoTS=G01JcC<$g].<:"97hKN;`5Fs8MKe N;`5Frrhe3mrJJZ~> "p"\lFmk?Np$_q\!KQW"s+13$s8;ltNplrHp@&%]lgFoTR[Sg-JcC<$g].<:"97hMNrAGHs8MKe NrAGHrrhe5mr\V\~> "p"\lF75'Hp$_q\!K?Jus+13$s8;ltN:6`Fp@&%]lgFoTS=G01JcC<$g].<:"97hKN;`5Fs8MKe N;`5Frrhe3mrJJZ~> "p"\lF75'Hp[A+]s,7$Js8RZ=Ja\0Ys6ouH!:Tgbq!\7_lgFoTS=G01JcC<$g].<:"97hKN;W/E s8VQfN;`5Frrhe3mrJJZ~> "p"\lFmk?Np[A+]s,I0Ls8RZ=Ja\0Ys6ouJ!:Tgbq!\7_lgFoTR[Sg-JcC<$g].<:"97hMNr8AG s8VQfNrAGHrrhe5mr\V\~> "p"\lF75'Hp[A+]s,7$Js8RZ=Ja\0Ys6ouH!:Tgbq!\7_lgFoTS=G01JcC<$g].<:"97hKN;W/E s8VQfN;`5Frrhe3mrJJZ~> "p"\lF75'Hq=":^"n.D/n,NE=mt'qYn,MkVN!/VLs6oFTs8)3as6K+Ts.#U1s+13$s4dSRk6(bQ N/[]'s8N/hN/[]'s8N5jF74/MJ,~> "p"\lFmk?Nq=":^"n.J3n,NE=mt'qYn,MkVNWehNs6oFTs8)3as6K+Ts-fC-s+13$s4dSRk6(bQ NfO&+s8N/hNfO&+s8N5jFmjGQJ,~> "p"\lF75'Hq=":^"n.D/n,NE=mt'qYn,MkVN!/VLs6oFTs8)3as6K+Ts.#U1s+13$s4dSRk6(bQ N/[]'s8N/hN/[]'s8N5jF74/MJ,~> "p"\lF75'HqsXL`rpTlG!q60hJa\0YJa`X-s,7$Js8W&drVufas8VER!rnd\JcC<$JcFL)s5sLa mu35&mf "p"\lFmk?NqsXL`rpTlI!q60hJa\0YJa`X-s,I0Ls8W&drVufas8VER!rn^XJcC<$JcFL)s5sLa muEG*mf "p"\lF75'HqsXL`rpTlG!q60hJa\0YJa`X-s,7$Js8W&drVufas8VER!rnd\JcC<$JcFL)s5sLa mu35&mf "p"\lF75'HrU9^br9sZE!q60hJa\0YJa`X-s,7$Js8VubrVulcs8VER!rnd\JcC<$JcFL)s5sLa mu35&mfNNJN;N)Drrhe3mrJJZ~> "p"\lFmk?NrU9^br9sZG!q60hJa\0YJa`X-s,I0Ls8VubrVulcs8VER!rn^XJcC<$JcFL)s5sLa muEG*mfNNLNr/;Frrhe5mr\V\~> "p"\lF75'HrU9^br9sZE!q60hJa\0YJa`X-s,7$Js8VubrVulcs8VER!rnd\JcC<$JcFL)s5sLa mu35&mfNNJN;N)Drrhe3mrJJZ~> #QXnnF75'Hn*g5TqX=HC!q60hJa\0YJa`X-s,7$Js8Vo`rVlrfs8VER!rnd\JcC<$JcFL)s5sLa mu35%n,J@Dn,NCjmrRr=!.Y~> #QXnnFmk?Nn*g5TqX=HE!q60hJa\0YJa`X-s,I0Ls8Vo`rVlrfs8VER!rn^XJcC<$JcFL)s5sLa muEG)n,JFFn,NCjmre)A!.Y~> #QXnnF75'Hn*g5TqX=HC!q60hJa\0YJa`X-s,7$Js8Vo`rVlrfs8VER!rnd\JcC<$JcFL)s5sLa mu35%n,J@Dn,NCjmrRr=!.Y~> "9AJjF79!bq!\6A!q60hJa\0YJa`X-s,7$Js8Vl_rJ^dVlgFoTS=G01JcC<$g].<:"97hKN;DuC N;E#Crrhe3mrJJZ~> "9AJjFmo3fq!\6C!q60hJa\0YJa`X-s,I0Ls8Vl_rJppXlgFoTR[Sg-JcC<$g].<:"97hMNr&2E Nr&5Errhe5mr\V\~> "9AJjF79!bq!\6A!q60hJa\0YJa`X-s,7$Js8Vl_rJ^dVlgFoTS=G01JcC<$g].<:"97hKN;DuC N;E#Crrhe3mrJJZ~> #QXnnF75'Hn*g46qX=HC!q60hJa\0YJa`X-s,7$Js8Vo`rJUgHs8VER!rnd\J`hUIJ`k_L"97hK N:?iMmrRr=!.Y~> #QXnnFmk?Nn*g48qX=HE!q60hJa\0YJa`X-s,I0Ls8Vo`rJgsJs8VER!rn^XJ`hUIJ`k_L"97hM Nq!&Omre)A!.Y~> #QXnnF75'Hn*g46qX=HC!q60hJa\0YJa`X-s,7$Js8Vo`rJUgHs8VER!rnd\J`hUIJ`k_L"97hK N:?iMmrRr=!.Y~> "p"\lF75'HrU9]Dr9sZE!q60hJa\0YJa`X-s,7$Js8VubrJ^aEs8VER!WS[@kCMfIkLer!s6kp8 rrhe3mrJJZ~> "p"\lFmk?NrU9]Fr9sZG!q60hJa\0YJa`X-s,I0Ls8VubrJpmGs8VER!WSU>kCMfIkLer!s6l!: rrhe5mr\V\~> "p"\lF75'HrU9]Dr9sZE!q60hJa\0YJa`X-s,7$Js8VubrJ^aEs8VER!WS[@kCMfIkLer!s6kp8 rrhe3mrJJZ~> "p"\lF75'HqsXKBrpTlG!q60hJa\0YJa`X-s,7$Js8W&drJ^[Cs8VERJcC<$JcF:#m-b$tmrJJZ~> "p"\lFmk?NqsXKDrpTlI!q60hJa\0YJa`X-s,I0Ls8W&drJpgEs8VERJcC<$JcF:#m-b%!mr\V\~> "p"\lF75'HqsXKBrpTlG!q60hJa\0YJa`X-s,7$Js8W&drJ^[Cs8VERJcC<$JcF:#m-b$tmrJJZ~> "p"\lF75'Hq="9@"n.D/n,NE=mt'qYn,MkVN!/VLs6oFTN;E#Cs+0Wimt'r-mfRY"Er^^~> "p"\lFmk?Nq="9B"n.J3n,NE=mt'qYn,MkVNWehNs6oFTNr&5Es+0Wimt'r-mfR_$FT?p~> "p"\lF75'Hq="9@"n.D/n,NE=mt'qYn,MkVN!/VLs6oFTN;E#Cs+0Wimt'r-mfRY"Er^^~> "p"\lF75'Hp[A$=!q60hJa\0YJa`X-s,7$Js8W%Vq!\7_Ja\0YJa]W-"* "p"\lFmk?Np[A$?!q60hJa\0YJa`X-s,I0Ls8W%Xq!\7_Ja\0YJa]W-"*O'T!.Y~> "p"\lF75'Hp[A$=!q60hJa\0YJa`X-s,7$Js8W%Vq!\7_Ja\0YJa]W-"* "p"\lF75'Hp$_m=!q60hJW,/=JW0Pd"RlBjN/[K!s8RZ=Ja\0YWp^%2mrJJZ~> "p"\lFmk?Np$_m?!q60hJW>;AJWB\h"RlBjNfNi%s8RZ=Ja\0YWp^%4mr\V\~> "p"\lF75'Hp$_m=!q60hJW,/=JW0Pd"RlBjN/[K!s8RZ=Ja\0YWp^%2mrJJZ~> "p"\lF75'HoBua>n,IrtJW,/=r/:^Gs,?U=s8RZ=Ja\0YWp^%2mrJJZ~> "p"\lFmk?NoBua@n,Is!JW>;Ar/LjIs,Qa?s8RZ=Ja\0YWp^%4mr\V\~> "p"\lF75'HoBua>n,IrtJW,/=r/:^Gs,?U=s8RZ=Ja\0YWp^%2mrJJZ~> "p"\lF75'HJcC<$JcFF'Ja\0YJa]W-"* "p"\lFmk?NJcC<$JcFF'Ja\0YJa]W-"*O'T!.Y~> "p"\lF75'HJcC<$JcFF'Ja\0YJa]W-"* "T\SkF75'=s+13$s4IA5n,37Ln,E@hmf3@_n,ECfn,EB=mt'qYn+c>RF74/MJ,~> "T\SkFmk?As+13$s4IA5n,37Ln,E@hmf3@_n,ECfn,EB=mt'qYn+c>RFmjGQJ,~> "T\SkF75'=s+13$s4IA5n,37Ln,E@hmf3@_n,ECfn,EB=mt'qYn+c>RF74/MJ,~> !s&AiF+Ne2mt'r>n,ECfn,ECLn,EC_n,EB=mt'qYn+?&NF74/MJ,~> !s&AiFb0"4mt'r>n,ECfn,ECLn,EC_n,EB=mt'qYn+?&NFmjGQJ,~> !s&AiF+Ne2mt'r>n,ECfn,ECLn,EC_n,EB=mt'qYn+?&NF74/MJ,~> !s&AiF+Ne2mt'r?n,ECbn,37dmf !s&AiFb0"4mt'r?n,ECbn,37dmf !s&AiF+Ne2mt'r?n,ECbn,37dmf !s&AiF+Ne2mt'r?n,ECcn,ECfn,E@qmf3@Vmf3@Vmf3@VrW"&/!!)Hf!:Kmfmf3@Vmf3@Vmf3@V mf3@V!!)KV!!)Ke!!;Th!;u !s&AiFb0"4mt'r?n,ECcn,ECfn,E@qmf3@Vmf3@Vmf3@VrW"&/!!)Hf!:Kmfmf3@Vmf3@Vmf3@V mf3@V!!)KV!!)Ke!!;Th!;u !s&AiF+Ne2mt'r?n,ECcn,ECfn,E@qmf3@Vmf3@Vmf3@VrW"&/!!)Hf!:Kmfmf3@Vmf3@Vmf3@V mf3@V!!)KV!!)Ke!!;Th!;u !s&AiF+Ne2mt'r?n,ECcn,ECfn,EA(mf3@Vmf3@Vmf3@V!!)KV!!)Hf!:Kmfr9sXcs6osfs6osf% IX8sn*^5Vmf3@Vmf3@cn,ECfn,ECfn,E@mmf3@Vmf3@VrW)ocrW)c_rr !s&AiFb0"4mt'r?n,ECcn,ECfn,EA(mf3@Vmf3@Vmf3@V!!)KV!!)Hf!:Kmfr9sXcs6osfs6osf% IX8sn*^5Vmf3@Vmf3@cn,ECfn,ECfn,E@mmf3@Vmf3@VrW)ocrW)c_rr !s&AiF+Ne2mt'r?n,ECcn,ECfn,EA(mf3@Vmf3@Vmf3@V!!)KV!!)Hf!:Kmfr9sXcs6osfs6osf% IX8sn*^5Vmf3@Vmf3@cn,ECfn,ECfn,E@mmf3@Vmf3@VrW)ocrW)c_rr !s&AiF+Ne2mt'r?n,ECcn,ECfn,EA*mf3@Vmf3@Vmf3@V!!)KV!!)Hf!:Kmfn*g/Ss6osfs6osf% IX8sn*^5Vmf3@Vmf3@cn,ECfn,ECfn,E@fn,!+an,<=cn,<=dn,*.jmf3@Vmf3@VqZ-WarW%N !s&AiFb0"4mt'r?n,ECcn,ECfn,EA*mf3@Vmf3@Vmf3@V!!)KV!!)Hf!:Kmfn*g/Ss6osfs6osf% IX8sn*^5Vmf3@Vmf3@cn,ECfn,ECfn,E@fn,!+an,<=cn,<=dn,*.jmf3@Vmf3@VqZ-WarW%N !s&AiF+Ne2mt'r?n,ECcn,ECfn,EA*mf3@Vmf3@Vmf3@V!!)KV!!)Hf!:Kmfn*g/Ss6osfs6osf% IX8sn*^5Vmf3@Vmf3@cn,ECfn,ECfn,E@fn,!+an,<=cn,<=dn,*.jmf3@Vmf3@VqZ-WarW%N !s&AiF+Ne2mt'r?n,ECcn,ECfn,EAEmf3@Vmf3@Vmf3@V!!)KV!!)Hf!:Kmfmf3@Vmf3@Vmf3@V mf3@V!!)KV!!)Hf!:T@V!;u !s&AiFb0"4mt'r?n,ECcn,ECfn,EAEmf3@Vmf3@Vmf3@V!!)KV!!)Hf!:Kmfmf3@Vmf3@Vmf3@V mf3@V!!)KV!!)Hf!:T@V!;u !s&AiF+Ne2mt'r?n,ECcn,ECfn,EAEmf3@Vmf3@Vmf3@V!!)KV!!)Hf!:Kmfmf3@Vmf3@Vmf3@V mf3@V!!)KV!!)Hf!:T@V!;u !s&AiF8kY(!:oUY!9`hN!:'%Q!.jTimu6`8!<;Nd!<;Nf!"85q!:T@V!:T@V!:Tme'^l#%mf3@V !!)Hf!:T@V!:T@V!:Tme%IX8sn*^5Vmf3@Vmf3@cn,ECfn,ECfn,EA0mf3@Vmf3@V!!)KV!!)Hf !:T@V!:Kmfn*^5Vmf3@VrW!Q!!!)KV!!)Hf!:T@V!:T@V!.jTin&k)$F74/MJ,~> !s&AiFoLk*!:oUY!9`hN!:'%Q!.jTimu6`8!<;Nd!<;Nf!"85q!:T@V!:T@V!:Tme'^l#%mf3@V !!)Hf!:T@V!:T@V!:Tme%IX8sn*^5Vmf3@Vmf3@cn,ECfn,ECfn,EA0mf3@Vmf3@V!!)KV!!)Hf !:T@V!:Kmfn*^5Vmf3@VrW!Q!!!)KV!!)Hf!:T@V!:T@V!.jTin&k)$FmjGQJ,~> !s&AiF8kY(!:oUY!9`hN!:'%Q!.jTimu6`8!<;Nd!<;Nf!"85q!:T@V!:T@V!:Tme'^l#%mf3@V !!)Hf!:T@V!:T@V!:Tme%IX8sn*^5Vmf3@Vmf3@cn,ECfn,ECfn,EA0mf3@Vmf3@V!!)KV!!)Hf !:T@V!:Kmfn*^5Vmf3@VrW!Q!!!)KV!!)Hf!:T@V!:T@V!.jTin&k)$F74/MJ,~> !s&AiF8PG+!:TCV!9`hN!:'%Q!.jTimu-Z5!<;Nd!<;Nf!<;Nf!<;Nf!"SGt!:Kmfn*^5Vmf3@V n,<:pmf3@Vmf3@V!!)KVr;cldrrE)frrDucrrE)frrE)frrE)fr;cicr;cicr;cicrW!;o!!)Hf !:Kmfn*g2TrpTdcrpTjeJa\0Yb3oFRmrJJZ~> !s&AiFo1Y-!:TCV!9`hN!:'%Q!.jTimu-Z5!<;Nd!<;Nf!<;Nf!<;Nf!"SGt!:Kmfn*^5Vmf3@V n,<:pmf3@Vmf3@V!!)KVr;cldrrE)frrDucrrE)frrE)frrE)fr;cicr;cicr;cicrW!;o!!)Hf !:Kmfn*g2TrpTdcrpTjeJa\0Yb3oFTmr\V\~> !s&AiF8PG+!:TCV!9`hN!:'%Q!.jTimu-Z5!<;Nd!<;Nf!<;Nf!<;Nf!"SGt!:Kmfn*^5Vmf3@V n,<:pmf3@Vmf3@V!!)KVr;cldrrE)frrDucrrE)frrE)frrE)fr;cicr;cicr;cicrW!;o!!)Hf !:Kmfn*g2TrpTdcrpTjeJa\0Yb3oFRmrJJZ~> !s&AiF8PG+!<)Bb!<2Hc!<;Nd!;u !s&AiFo1Y-!<)Bb!<2Hc!<;Nd!;u !s&AiF8PG+!<)Bb!<2Hc!<;Nd!;u !s&AiF8PG+!<2He!<;Nf!"//p!:T@V!:T@V!;l6a!!DZi!:Taas6osfs6osfs6osfs6osf'^l#% n*^5Vmf3@Vmf3@V!!)KV!!%T=Ja\0Yq!\4_Y4)Ajs6osfJa\0Y\F0N@mrJJZ~> !s&AiFo1Y-!<2He!<;Nf!"//p!:T@V!:T@V!;l6a!!DZi!:Taas6osfs6osfs6osfs6osf'^l#% n*^5Vmf3@Vmf3@V!!)KV!!%T=Ja\0Yq!\4_Y4)Ajs6osfJa\0Y\F0NBmr\V\~> !s&AiF8PG+!<2He!<;Nf!"//p!:T@V!:T@V!;l6a!!DZi!:Taas6osfs6osfs6osfs6osf'^l#% n*^5Vmf3@Vmf3@V!!)KV!!%T=Ja\0Yq!\4_Y4)Ajs6osfJa\0Y\F0N@mrJJZ~> !s&AiF8PG+!<2He!<;Nf!!)Ke!;u !s&AiFo1Y-!<2He!<;Nf!!)Ke!;u !s&AiF8PG+!<2He!<;Nf!!)Ke!;u !s&AiF8PG+!<2Ha!<2Hd!<2He!;l6b!<;Nf!!;Th!<2He!<;Nf!<;Nf!<;Nf!<;Nf!!;Th!;u !s&AiFo1Y-!<2Ha!<2Hd!<2He!;l6b!<;Nf!!;Th!<2He!<;Nf!<;Nf!<;Nf!<;Nf!!;Th!;u !s&AiF8PG+!<2Ha!<2Hd!<2He!;l6b!<;Nf!!;Th!<2He!<;Nf!<;Nf!<;Nf!<;Nf!!;Th!;u !s&AiF8PG+!<2He!;Z*_!<;Nf!;l6b!<;Nf!!;Th!<2He!<;Nf!<;Nf!<;Nf!<;Nf!!;Th!;u !s&AiFo1Y-!<2He!;Z*_!<;Nf!;l6b!<;Nf!!;Th!<2He!<;Nf!<;Nf!<;Nf!<;Nf!!;Th!;u !s&AiF8PG+!<2He!;Z*_!<;Nf!;l6b!<;Nf!!;Th!<2He!<;Nf!<;Nf!<;Nf!<;Nf!!;Th!;u !s&AiF8PG+!<2He!<;Nf!"A;r!:T@V!:T@V!:Kpdn,<:jmf3@V!!*#errE)frrE)frr<&frW)ue rr !s&AiFo1Y-!<2He!<;Nf!"A;r!:T@V!:T@V!:Kpdn,<:jmf3@V!!*#errE)frrE)frr<&frW)ue rr !s&AiF8PG+!<2He!<;Nf!"A;r!:T@V!:T@V!:Kpdn,<:jmf3@V!!*#errE)frrE)frr<&frW)ue rr !s&AiF8PG+!<)Bb!<2Hc!<)Bd!;u !s&AiFo1Y-!<)Bb!<2Hc!<)Bd!;u !s&AiF8PG+!<)Bb!<2Hc!<)Bd!;u !s&AiF5QHd!.jTimt'rgmf !s&AiFl2Zf!.jTimt'rgmf !s&AiF5QHd!.jTimt'rgmf !s&AiF5QHd!.jTimt'rgmf5kPt#>N!97MF74/MJ,~> !s&AiFl2Zf!.jTimt'rgmfNWoIOFmjGQJ,~> !s&AiF5QHd!.jTimt'rgmf5kPt#>N!97MF74/MJ,~> !s&AiF5QHd!.jTimt'rgmfNNZS:U]ks+14)s8V6as6ko*qX4ECqX=Ia"RgF#Er^^~> !s&AiFl2Zf!.jTimt'rgmfNNXRXtKis+14)s8V6as6ku.qX4EEqX=Ia"RgL%FT?p~> !s&AiF5QHd!.jTimt'rgmfNNZS:U]ks+14)s8V6as6ko*qX4ECqX=Ia"RgF#Er^^~> !s&AiF+Ne2mt'rCmfNNZS:U]ks+14)s8V6as6ko*qsORcN;E#Crrhe3mrJJZ~> !s&AiFb0"4mt'rCmfNNXRXtKis+14)s8V6as6ku.qsORcNr&5Errhe5mr\V\~> !s&AiF+Ne2mt'rCmfNNZS:U]ks+14)s8V6as6ko*qsORcN;E#Crrhe3mrJJZ~> !s&AiF+Ne2mt'rCmfNNZS:U]ks+14)s8V6as6ko*qsOUdN/[Z&s8N5jF74/MJ,~> !s&AiFb0"4mt'rCmfNNXRXtKis+14)s8V6as6ku.qsOUdNfO#*s8N5jFmjGQJ,~> !s&AiF+Ne2mt'rCmfNNZS:U]ks+14)s8V6as6ko*qsOUdN/[Z&s8N5jF74/MJ,~> !s&AiF+Ne2mt'rCmfNNZS:U]ks+14)s8V6as6ko*r9s[cs,?jDs8N5jF74/MJ,~> !s&AiFb0"4mt'rCmfNNXRXtKis+14)s8V6as6ku.r9s[cs,R!Fs8N5jFmjGQJ,~> !s&AiF+Ne2mt'rCmfNNZS:U]ks+14)s8V6as6ko*r9s[cs,?jDs8N5jF74/MJ,~> !s&AiF+O@Bs+14#s6T1Us.#U1s+13$s4dSRk6(bQN/[]'s8N/hN/[]'s8N5jF74/MJ,~> !s&AiFb0RDs+14#s6T1Us-fC-s+13$s4dSRk6(bQNfO&+s8N/hNfO&+s8N5jFmjGQJ,~> !s&AiF+O@Bs+14#s6T1Us.#U1s+13$s4dSRk6(bQN/[]'s8N/hN/[]'s8N5jF74/MJ,~> "9AJjF8pf]JXh:]f:2mAn*Z,:n,JoJJcC<$JcFL)s5sLamu35(n,NFfn,J@En,NCjmrRr=!.Y~> "9AJjFoR#]JXV.Yf9ua?n*Z2 "9AJjF8pf]JXh:]f:2mAn*Z,:n,JoJJcC<$JcFL)s5sLamu35(n,NFfn,J@En,NCjmrRr=!.Y~> "9AJjF8pf]JXh:]fUN$+s6oE8"TRrjS=G01JcC<$g].<:"97hKN;`5Fs8MKeN;`5Frrhe3mrJJZ~> "9AJjFoR#]JXV.YfU;m)s6oE:"TRrjR[Sg-JcC<$g].<:"97hMNrAGHs8MKeNrAGHrrhe5mr\V\~> "9AJjF8pf]JXh:]fUN$+s6oE8"TRrjS=G01JcC<$g].<:"97hKN;`5Fs8MKeN;`5Frrhe3mrJJZ~> "p"\lF8qc#JcC<$JcFL)s5sLamu35%mf8=Cn,NCin,JoJJcC<$JcFL)s5sLamu35)n,NFdn,J@F n,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG)mf8CEn,NCin,JiFJcC<$JcFL)s5sLamuEG-n,NFdn,JFH n,NCjmre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35%mf8=Cn,NCin,JoJJcC<$JcFL)s5sLamu35)n,NFdn,J@F n,NCjmrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35&mfEHIqX=Ia"7Q8[S:U]ks+14)s8V6as6ko*rpTmer9sZE rpTme"RgF#Er^^~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG*mfEHKqX=Ia"7Q8YRXtKis+14)s8V6as6ku.rpTmer9sZG rpTme"RgL%FT?p~> "p"\lF8qc#JcC<$JcFL)s5sLamu35&mfEHIqX=Ia"7Q8[S:U]ks+14)s8V6as6ko*rpTmer9sZE rpTme"RgF#Er^^~> "p"\lF8qc#cN!kDqu6WrJcC<$R/d3L"97hKN;N&Fs,;p6n,NCin,JoJJcC<$JcFL)s5sXemu34o n,NFbn,J@Gn,NCjmrRr=!.Y~> "p"\lFoRo!cN!kDqu6WrJcC<$R/d3L"97hMNr/8Hs,N-:n,NCin,JiFJcC<$JcFL)s5sXemuEFs n,NFbn,JFIn,NCjmre)A!.Y~> "p"\lF8qc#cN!kDqu6WrJcC<$R/d3L"97hKN;N&Fs,;p6n,NCin,JoJJcC<$JcFL)s5sXemu34o n,NFbn,J@Gn,NCjmrRr=!.Y~> "p"\lF8qc#rr;rts8W&u!ri6#gA_-Qmf*7eJcC<$V>pSY"97hKN;W/Es8S&Tn,NCin,JoJJcC<$ JcFL)s5sXemu34on,NFan,J@Hn,NCjmrRr=!.Y~> "p"\lFoRo!rr;rts8W&u!ri6#gA_-Qmf*7eJcC<$V>pSY"97hMNr8AGs8S,Vn,NCin,JiFJcC<$ JcFL)s5sXemuEFsn,NFan,JFJn,NCjmre)A!.Y~> "p"\lF8qc#rr;rts8W&u!ri6#gA_-Qmf*7eJcC<$V>pSY"97hKN;W/Es8S&Tn,NCin,JoJJcC<$ JcFL)s5sXemu34on,NFan,J@Hn,NCjmrRr=!.Y~> #lt"oF8qc#s8N)urrrK'rrE*!!87AP!:Kje!.k0$s/#bqk6(bQN/[]'s8N/hN/[]'s8N2is.#U1 s+13$s4dSRk6CtTN/[6*s7u-`N;rAHrrhe3mrJJZ~> #lt"oFoRo!s8N)urrrK'rrE*!!87AP!:Kje!.k0$s/#bqk6(bQNfO&+s8N/hNfO&+s8N2is-fC- s+13$s4dSRk6CtTNfNT.s7u-`NrSSJrrhe5mr\V\~> #lt"oF8qc#s8N)urrrK'rrE*!!87AP!:Kje!.k0$s/#bqk6(bQN/[]'s8N/hN/[]'s8N2is.#U1 s+13$s4dSRk6CtTN/[6*s7u-`N;rAHrrhe3mrJJZ~> #lt"oF8qc#s8N)urriE&rrE'!nGiIf!WN0!s8;rts8Duus8E#trr<&ts8E#rs8E#ts82kJs+13K s8V6as6ko*rU9dds6ouHr9s[c"7Q8[S:U]ks+14)s8V6ds6ko*n,NF_n,J=On,NFVF74/MJ,~> #lt"oFoRo!s8N)urriE&rrE'!nGiIf!WN0!s8;rts8Duus8E#trr<&ts8E#rs8E#ts82kJs+13K s8V6as6ku.rU9dds6ouJr9s[c"7Q8YRXtKis+14)s8V6ds6ku.n,NF_n,JCQn,NFVFmjGQJ,~> #lt"oF8qc#s8N)urriE&rrE'!nGiIf!WN0!s8;rts8Duus8E#trr<&ts8E#rs8E#ts82kJs+13K s8V6as6ko*rU9dds6ouHr9s[c"7Q8[S:U]ks+14)s8V6ds6ko*n,NF_n,J=On,NFVF74/MJ,~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr`?%!<3&rrr<&urrN3#!;uis!;lcr!<)ot!<2uu!<2uu !.k0$s/#bqk6(bQN/[`(s8W)es,?pFs8N2is.#U1s+13$s4dSRk6:nSN/[f:oo'.Es8VP/mrJJZ~> #lt"oFoRo!s8N)urr`?%rr<&qrr<&mrr`?%!<3&rrr<&urrN3#!;uis!;lcr!<)ot!<2uu!<2uu !.k0$s/#bqk6(bQNfO),s8W)es,R'Hs8N2is-fC-s+13$s4dSRk6:nSNfO/>oo9:Gs8VP1mr\V\~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr`?%!<3&rrr<&urrN3#!;uis!;lcr!<)ot!<2uu!<2uu !.k0$s/#bqk6(bQN/[`(s8W)es,?pFs8N2is.#U1s+13$s4dSRk6:nSN/[f:oo'.Es8VP/mrJJZ~> #lt"oF8qc#s8N)urrN3#s8E#err`?%!<3&us8;rrrr<&rrr<&rrr<&ss8E#srr<%Ms+13Hs8V6a s6ko*rpTmerU9cFrU9dd"7Q8[S:U]ks+14)s8V6bs6ko*s7;3Lrrhe3mrJJZ~> #lt"oFoRo!s8N)urrN3#s8E#err`?%!<3&us8;rrrr<&rrr<&rrr<&ss8E#srr<%Ms+13Hs8V6a s6ku.rpTmerU9cHrU9dd"7Q8YRXtKis+14)s8V6bs6ku.s7;9Nrrhe5mr\V\~> #lt"oF8qc#s8N)urrN3#s8E#err`?%!<3&us8;rrrr<&rrr<&rrr<&ss8E#srr<%Ms+13Hs8V6a s6ko*rpTmerU9cFrU9dd"7Q8[S:U]ks+14)s8V6bs6ko*s7;3Lrrhe3mrJJZ~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!n!<3'!!<<'!rr2rurr3$"rrDus!!)or!!)ip!!*#u!!%TM JcDSHs5sLamu35)n,NFcn,J@Gn,NCin,JoJkPtP^rVlitfDkjNq#C #lt"oFoRo!s8N)urrrK'rrE*!!:^!n!<3'!!<<'!rr2rurr3$"rrDus!!)or!!)ip!!*#u!!%TM JcDSHs5sLamuEG-n,NFcn,JFIn,NCin,JiFkPtP^rVlitfDkjNq#C #lt"oF8qc#s8N)urrrK'rrE*!!:^!n!<3'!!<<'!rr2rurr3$"rrDus!!)or!!)ip!!*#u!!%TM JcDSHs5sLamu35)n,NFcn,J@Gn,NCin,JoJkPtP^rVlitfDkjNq#C #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh#6=c(rrE*!!<3!#!<<'!rr2rurVlitqu6WrrVlitrr2ru rr2rurr2ruJcC<$WW3"]#QO7ON:668s829bN;i;GrrhfjS=KWY!:'Ra!7CfH!;?Em!:Kjg!<3&t rr<&drr<&ts82lGrrN3#!.k0As8V6as6ko*o'cVY"RgF#Er^^~> #lt"oFoRo!s8N)urrW9$rrE&u!!)Qh#6=c(rrE*!!<3!#!<<'!rr2rurVlitqu6WrrVlitrr2ru rr2rurr2ruJcC<$WW3"]#QO7QNplH:s829bNrJMIrrhfjR[X9U!:'Ra!7CfH!;?Em!:Kjg!<3&t rr<&drr<&ts82lGrrN3#!.k0As8V6as6ku.o'cVY"RgL%FT?p~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh#6=c(rrE*!!<3!#!<<'!rr2rurVlitqu6WrrVlitrr2ru rr2rurr2ruJcC<$WW3"]#QO7ON:668s829bN;i;GrrhfjS=KWY!:'Ra!7CfH!;?Em!:Kjg!<3&t rr<&drr<&ts82lGrrN3#!.k0As8V6as6ko*o'cVY"RgF#Er^^~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup](6n#6+]'!!*'!rVururW)rtrr<'!qZ$WrquH`rrW)lr rW%NLJcD\Ks5sXemu34on,NFan,J@Hn,NCln,JoJs8N)`rr<&Hrr<&mrr<&errN3#!<)ot!:Bdd !;uis!<2uu!7_#M!<3%Ms.98jk6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!rr;rts8W&us8W*!rr2rup](6n#6+]'!!*'!rVururW)rtrr<'!qZ$WrquH`rrW)lr rW%NLJcD\Ks5sXemuEFsn,NFan,JFJn,NCln,JiFs8N)`rr<&Hrr<&mrr<&errN3#!<)ot!:Bdd !;uis!<2uu!7_#M!<3%Ms.98jk6(bQNfN]!s8N5jFmjGQJ,~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup](6n#6+]'!!*'!rVururW)rtrr<'!qZ$WrquH`rrW)lr rW%NLJcD\Ks5sXemu34on,NFan,J@Hn,NCln,JoJs8N)`rr<&Hrr<&mrr<&errN3#!<)ot!:Bdd !;uis!<2uu!7_#M!<3%Ms.98jk6(bQN/[>rs8N5jF74/MJ,~> "p"\lF8qc#JcC<$JcFL)s5sUdmu34os8Vo`s,@!Hs8N;ls.#VZrrDoqrW)rtr;cfrr;cltrW)rt ! "p"\lFoRo!JcC<$JcFL)s5sUdmuEFss8Vo`s,R-Js8N;ls-fDVrrDoqrW)rtr;cfrr;cltrW)rt ! "p"\lF8qc#JcC<$JcFL)s5sUdmu34os8Vo`s,@!Hs8N;ls.#VZrrDoqrW)rtr;cfrr;cltrW)rt ! "p"\lF8qc#JcC<$JcFL)s5sUdmu34os8Vl_s,79Qs8VQfS=KWZ!;lcr!<2uu!;lcu!<<'!rr2ru rVlitrVults8N0$s8N)urr<&ors&Q(!<3'!rrE&u!s&B$!<3!#!<<'!rr2rurVlitrVlitrr2ru nG`Igr;Q`srr3'#s8N)urr<&urr<&srr<&urrW9$rrE&u#6=f(!!*'!!;ld$!<<'!rrE'!rVlit rVlitrr2ruJcD,;s5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sUdmuEFss8Vl_s,IESs8VQfR[X9V!;lcr!<2uu!;lcu!<<'!rr2ru rVlitrVults8N0$s8N)urr<&ors&Q(!<3'!rrE&u!s&B$!<3!#!<<'!rr2rurVlitrVlitrr2ru nG`Igr;Q`srr3'#s8N)urr<&urr<&srr<&urrW9$rrE&u#6=f(!!*'!!;ld$!<<'!rrE'!rVlit rVlitrr2ruJcD,;s5sLamuEG!n,NCjmre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sUdmu34os8Vl_s,79Qs8VQfS=KWZ!;lcr!<2uu!;lcu!<<'!rr2ru rVlitrVults8N0$s8N)urr<&ors&Q(!<3'!rrE&u!s&B$!<3!#!<<'!rr2rurVlitrVlitrr2ru nG`Igr;Q`srr3'#s8N)urr<&urr<&srr<&urrW9$rrE&u#6=f(!!*'!!;ld$!<<'!rrE'!rVlit rVlitrr2ruJcD,;s5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7M "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7MBYn,NFVs-fDVrrDrr!!*#u!!*#ur;clt!!*#u!!)ut !!)ut!!*#u!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut!!)utquH6d!!)rs quH`rrW)os!!)rs!!*#u!s&B$!<3!#!<<'!rr2rurr;oss8N3%rrE'!rVlitrVlitJcCu7s5sLa muEG!n,NCjmre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7M "p"\lF8qc#JcC<$JcFL)s5sObmu35*o8N_L#4MS^SH&Thrr3'#s8N)urrW9$rrE&u!s&B$!<2uu !<)ot!<)ot!<3!#!<<'!rr2ruq#:R!rrE'!s8N)urrW9$rrE&u!s&B$!<2uu!<)ot!<)ot!:9^c !;uis!;HKn!<2uu!;uis!<2uu!<3!"!<3&urr<&urrW9$rrE&u#6=f(!<3'!!<)ot!<)ot!.k07 s8V6as6ko*o'cVY"RgF#Er^^~> "p"\lFoRo!JcC<$JcFL)s5sObmuEG.o8`kN#4MS\RfEBfrr3'#s8N)urrW9$rrE&u!s&B$!<2uu !<)ot!<)ot!<3!#!<<'!rr2ruq#:R!rrE'!s8N)urrW9$rrE&u!s&B$!<2uu!<)ot!<)ot!:9^c !;uis!;HKn!<2uu!;uis!<2uu!<3!"!<3&urr<&urrW9$rrE&u#6=f(!<3'!!<)ot!<)ot!.k07 s8V6as6ku.o'cVY"RgL%FT?p~> "p"\lF8qc#JcC<$JcFL)s5sObmu35*o8N_L#4MS^SH&Thrr3'#s8N)urrW9$rrE&u!s&B$!<2uu !<)ot!<)ot!<3!#!<<'!rr2ruq#:R!rrE'!s8N)urrW9$rrE&u!s&B$!<2uu!<)ot!<)ot!:9^c !;uis!;HKn!<2uu!;uis!<2uu!<3!"!<3&urr<&urrW9$rrE&u#6=f(!<3'!!<)ot!<)ot!.k07 s8V6as6ko*o'cVY"RgF#Er^^~> "p"\lF8qc#gA_-QpAb*lqu6WrJcC<$R/d3L"97hKN:QH;rs%rlS=KWZ!<3!#!<<'!rr3'#s8N)u rrW9$rrE&u!!)ut!!)ut!!*#u!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut !!)ut!!*#u!!)Ng!!*#u!W`6#rr3'#s8N)urr<&urr<&urrN3#!<2uu!<3#t!<2uu!<3!#!<<'! rr33's8N*!!<3&trr<&trr<&urr<%Ms-Widk6(bQN/[>rs8N5jF74/MJ,~> "p"\lFoRo!gA_-QpAb*lqu6WrJcC<$R/d3L"97hMNq2Z=rs%rlR[X9V!<3!#!<<'!rr3'#s8N)u rrW9$rrE&u!!)ut!!)ut!!*#u!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut !!)ut!!*#u!!)Ng!!*#u!W`6#rr3'#s8N)urr<&urr<&urrN3#!<2uu!<3#t!<2uu!<3!#!<<'! rr33's8N*!!<3&trr<&trr<&urr<%Ms-Widk6(bQNfN]!s8N5jFmjGQJ,~> "p"\lF8qc#gA_-QpAb*lqu6WrJcC<$R/d3L"97hKN:QH;rs%rlS=KWZ!<3!#!<<'!rr3'#s8N)u rrW9$rrE&u!!)ut!!)ut!!*#u!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut !!)ut!!*#u!!)Ng!!*#u!W`6#rr3'#s8N)urr<&urr<&urrN3#!<2uu!<3#t!<2uu!<3!#!<<'! rr33's8N*!!<3&trr<&trr<&urr<%Ms-Widk6(bQN/[>rs8N5jF74/MJ,~> "p"\lF8qc#rr;rts8W&u!ri6#gA_-Qmf*7eJcC<$V>pSY"97hKN:QH;rrhfjS=KWV!<3#t!<)rs !!E6$s8W&u!ri9#qu?`srW)uurrE*!r;cZnrr<9'!<3$!s8W&urVuis"9/B$s8E!"rrE)r!<<)u !:Kmd!<3#t!<)rs!;ulr!!*&s!;uis!<3#t!<<*!!<<)u!!*&u!!WB&rr<'!quH`rrW)Zl!!)or !!)or!!%TMZ2aje"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!rr;rts8W&u!ri6#gA_-Qmf*7eJcC<$V>pSY"97hMNq2Z=rrhfjR[X9R!<3#t!<)rs !!E6$s8W&u!ri9#qu?`srW)uurrE*!r;cZnrr<9'!<3$!s8W&urVuis"9/B$s8E!"rrE)r!<<)u !:Kmd!<3#t!<)rs!;ulr!!*&s!;uis!<3#t!<<*!!<<)u!!*&u!!WB&rr<'!quH`rrW)Zl!!)or !!)or!!%TMZ2aje"97hMNq2Z=rrhe5mr\V\~> "p"\lF8qc#rr;rts8W&u!ri6#gA_-Qmf*7eJcC<$V>pSY"97hKN:QH;rrhfjS=KWV!<3#t!<)rs !!E6$s8W&u!ri9#qu?`srW)uurrE*!r;cZnrr<9'!<3$!s8W&urVuis"9/B$s8E!"rrE)r!<<)u !:Kmd!<3#t!<)rs!;ulr!!*&s!;uis!<3#t!<<*!!<<)u!!*&u!!WB&rr<'!quH`rrW)Zl!!)or !!)or!!%TMZ2aje"97hKN:QH;rrhe3mrJJZ~> #lt"oF8qc#s8N)urrrK'rrE*!!87AP!:Kje!.k0$s/#bqk6(bQN/[>rs8N2is.#V,rr<%grr<%M s+14As8V6as6ko*o'cVY"RgF#Er^^~> #lt"oFoRo!s8N)urrrK'rrE*!!87AP!:Kje!.k0$s/#bqk6(bQNfN]!s8N2is-fD(rr<%grr<%M s+14As8V6as6ku.o'cVY"RgL%FT?p~> #lt"oF8qc#s8N)urrrK'rrE*!!87AP!:Kje!.k0$s/#bqk6(bQN/[>rs8N2is.#V,rr<%grr<%M s+14As8V6as6ko*o'cVY"RgF#Er^^~> #lt"oF8qc#s8N)urriE&rrE'!nGiIf!WN0!s8E#trrE-"rW)lr!!)utrW)lrrW)rtquD #lt"oFoRo!s8N)urriE&rrE'!nGiIf!WN0!s8E#trrE-"rW)lr!!)utrW)lrrW)rtquD #lt"oF8qc#s8N)urriE&rrE'!nGiIf!WN0!s8E#trrE-"rW)lr!!)utrW)lrrW)rtquD #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr`?%!<3&trr<&ts8N*!rr<&trr<&rrr<&trr<&urr<&u rr<%Ms+13Hs8V6as6ko*o'cVY"7Q8[SCITrs8N5jF74/MJ,~> #lt"oFoRo!s8N)urr`?%rr<&qrr<&mrr`?%!<3&trr<&ts8N*!rr<&trr<&rrr<&trr<&urr<&u rr<%Ms+13Hs8V6as6ku.o'cVY"7Q8YRahB:!1a)h!.k0$s763ik6(bQNfN]!s8N5jFmjGQJ,~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr`?%!<3&trr<&ts8N*!rr<&trr<&rrr<&trr<&urr<&u rr<%Ms+13Hs8V6as6ko*o'cVY"7Q8[SCITrs8N5jF74/MJ,~> #lt"oF8qc#s8N)urrN3#s8E#err`?%!<3&trr<&trr<&urr<&trr<&rrr<&ss8E#srr<%Ms+13H s8V6as6ko*o'cVY"7Q8[S:U]ks+14)s8V6as6ko*o'cVY"RgF#Er^^~> #lt"oFoRo!s8N)urrN3#s8E#err`?%!<3&trr<&trr<&urr<&trr<&rrr<&ss8E#srr<%Ms+13H s8V6as6ku.o'cVY"7Q8YRXtKis+14)s8V6as6ku.o'cVY"RgL%FT?p~> #lt"oF8qc#s8N)urrN3#s8E#err`?%!<3&trr<&trr<&urr<&trr<&rrr<&ss8E#srr<%Ms+13H s8V6as6ko*o'cVY"7Q8[S:U]ks+14)s8V6as6ko*o'cVY"RgF#Er^^~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!k!<3'!!<)ot!<)ot!<2uu!<)ot!;lcr!;ZWp!<2uu!.k0$ s/#bqk6(bQN/[>rs8N2is.#V&s8N)Ss8E#^s8E#Gs8E#Wrr<%Ms/Z2"k6(bQN/[>rs8N5jF74/M J,~> #lt"oFoRo!s8N)urrrK'rrE*!!:^!k!<3'!!<)ot!<)ot!<2uu!<)ot!;lcr!;ZWp!<2uu!.k0$ s/#bqk6(bQNfN]!s8N2is-fD"s8N)Ss8E#^s8E#Gs8E#Wrr<%Ms/Z2"k6(bQNfN]!s8N5jFmjGQ J,~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!k!<3'!!<)ot!<)ot!<2uu!<)ot!;lcr!;ZWp!<2uu!.k0$ s/#bqk6(bQN/[>rs8N2is.#V&s8N)Ss8E#^s8E#Gs8E#Wrr<%Ms/Z2"k6(bQN/[>rs8N5jF74/M J,~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh"9AH%rrE#t!!)ut!!*#u!!)ut!!)or!!)ut!!*#u!!*#u !!*#u!!%TMJcD_Ls5sLamu34rn,NCjn,JoJs8)fUrr<&hrr<&nrr<&\rr<&]rr<&lrr<&drr<&k rr<&]rr<%Ms.fVok6(bQN/[>rs8N5jF74/MJ,~> #lt"oFoRo!s8N)urrW9$rrE&u!!)Qh"9AH%rrE#t!!)ut!!*#u!!)ut!!)or!!)ut!!*#u!!*#u !!*#u!!%TMJcD_Ls5sLamuEG!n,NCjn,JiFs8)fUrr<&hrr<&nrr<&\rr<&]rr<&lrr<&drr<&k rr<&]rr<%Ms.fVok6(bQNfN]!s8N5jFmjGQJ,~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh"9AH%rrE#t!!)ut!!*#u!!)ut!!)or!!)ut!!*#u!!*#u !!*#u!!%TMJcD_Ls5sLamu34rn,NCjn,JoJs8)fUrr<&hrr<&nrr<&\rr<&]rr<&lrr<&drr<&k rr<&]rr<%Ms.fVok6(bQN/[>rs8N5jF74/MJ,~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup](6n"oeT&!!*&s!!*&u!<<*!!!*&r!!*&s!<3#t!;ulr !.k0$s/>ttk6(bQN/[>rs8N;ls.#VZrrE&u!!)$Y!!)Qh!!)cn!!)-\!!)0]!!)]l!!)Ed!!)Zk !!)0]!!%TMU]:AW"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!rr;rts8W&us8W*!rr2rup](6n"oeT&!!*&s!!*&u!<<*!!!*&r!!*&s!<3#t!;ulr !.k0$s/>ttk6(bQNfN]!s8N;ls-fDVrrE&u!!)$Y!!)Qh!!)cn!!)-\!!)0]!!)]l!!)Ed!!)Zk !!)0]!!%TMU]:AW"97hMNq2Z=rrhe5mr\V\~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup](6n"oeT&!!*&s!!*&u!<<*!!!*&r!!*&s!<3#t!;ulr !.k0$s/>ttk6(bQN/[>rs8N;ls.#VZrrE&u!!)$Y!!)Qh!!)cn!!)-\!!)0]!!)]l!!)Ed!!)Zk !!)0]!!%TMU]:AW"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCnn,JoJs8N*!!<3#t!!*&t!!*&u!<)rs!<3!!!<<#u s8Vusrr;rtrVufrq#C6lrr;rts8N*"s8E#krr<&ss8E#us8Duus8E#us8E#rrr<&ms82lrs8E#s s8E#ts82lls82j'rr<'!rr<'!!<<#urVuisrr;lrs8W&ur;Z`rs8N*"s8E#ss8E"Ls2"a8k6(bQ N/[>rs8N5jF74/MJ,~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCnn,JiFs8N*!!<3#t!!*&t!!*&u!<)rs!<3!!!<<#u s8Vusrr;rtrVufrq#C6lrr;rts8N*"s8E#krr<&ss8E#us8Duus8E#us8E#rrr<&ms82lrs8E#s s8E#ts82lls82j'rr<'!rr<'!!<<#urVuisrr;lrs8W&ur;Z`rs8N*"s8E#ss8E"Ls2"a8k6(bQ NfN]!s8N5jFmjGQJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCnn,JoJs8N*!!<3#t!!*&t!!*&u!<)rs!<3!!!<<#u s8Vusrr;rtrVufrq#C6lrr;rts8N*"s8E#krr<&ss8E#us8Duus8E#us8E#rrr<&ms82lrs8E#s s8E#ts82lls82j'rr<'!rr<'!!<<#urVuisrr;lrs8W&ur;Z`rs8N*"s8E#ss8E"Ls2"a8k6(bQ N/[>rs8N5jF74/MJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCkn,JoJs8W&ur;QfurrE&u!!*#u!s&B$!<2uu!<2uu !;lcr!;uis!<3!#!<<'!rr2rup\t3nr;Q`srr3'#s8N)urr<&mrr<&trr<&urrW9$rrE&u!s&B$ !<2uu!<)ot!;6?l!;uis!<3!#!<<'!rr2rurr2ruo`"mkr;Q`srr3<*s8N'!s8N*!rrE&u!!*#u !!)lq!!)ut!!*#u$3:,+!!*'!!<<'!rr2rurVlitJcEdjs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCkn,JiFs8W&ur;QfurrE&u!!*#u!s&B$!<2uu!<2uu !;lcr!;uis!<3!#!<<'!rr2rup\t3nr;Q`srr3'#s8N)urr<&mrr<&trr<&urrW9$rrE&u!s&B$ !<2uu!<)ot!;6?l!;uis!<3!#!<<'!rr2rurr2ruo`"mkr;Q`srr3<*s8N'!s8N*!rrE&u!!*#u !!)lq!!)ut!!*#u$3:,+!!*'!!<<'!rr2rurVlitJcEdjs5sLamuEG!n,NCjmre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCkn,JoJs8W&ur;QfurrE&u!!*#u!s&B$!<2uu!<2uu !;lcr!;uis!<3!#!<<'!rr2rup\t3nr;Q`srr3'#s8N)urr<&mrr<&trr<&urrW9$rrE&u!s&B$ !<2uu!<)ot!;6?l!;uis!<3!#!<<'!rr2rurr2ruo`"mkr;Q`srr3<*s8N'!s8N*!rrE&u!!*#u !!)lq!!)ut!!*#u$3:,+!!*'!!<<'!rr2rurVlitJcEdjs5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCnn,JoJs8N*!!;lcr!<)ot!<3!#!<<'!rr2rurr2ru qu6Wrr;ZZps8N'!rr2rup\t3nr;Q`srr3'#s8N)urrN3#s82lqrr<&ts82lsrr<&urrN3#s82lq rr<&lrr<&ss82lrs8E#srr<&krr<&srr<&urrW9$rrE&u!s&B$!;c]q!;c]q!<)ot!<3!#!<<'! rr2rurr;rtJcERds5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCnn,JiFs8N*!!;lcr!<)ot!<3!#!<<'!rr2rurr2ru qu6Wrr;ZZps8N'!rr2rup\t3nr;Q`srr3'#s8N)urrN3#s82lqrr<&ts82lsrr<&urrN3#s82lq rr<&lrr<&ss82lrs8E#srr<&krr<&srr<&urrW9$rrE&u!s&B$!;c]q!;c]q!<)ot!<3!#!<<'! rr2rurr;rtJcERds5sLamuEG!n,NCjmre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCnn,JoJs8N*!!;lcr!<)ot!<3!#!<<'!rr2rurr2ru qu6Wrr;ZZps8N'!rr2rup\t3nr;Q`srr3'#s8N)urrN3#s82lqrr<&ts82lsrr<&urrN3#s82lq rr<&lrr<&ss82lrs8E#srr<&krr<&srr<&urrW9$rrE&u!s&B$!;c]q!;c]q!<)ot!<3!#!<<'! rr2rurr;rtJcERds5sLamu34rn,NCjmrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)qrrN3#!<2uu!<3!#!<<'!rr2rurr2ru qu6Wrr;Q`squ6Wrrr2rup\t3nr;Q`srr3'#s8N)urr<&mrr<&trr<&qrrN3#!<2uu!;ZWp!;6?l !;uis!;HKn!<2uu!;-9k!;uis!<3!#!<<'!rr3'#s8N)qrr<&qrr<&trr<&urrW9$rrE&u!!)or !!%TM_Z0Z!"97hKN:QH;rrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCln,JiFs8N)qrrN3#!<2uu!<3!#!<<'!rr2rurr2ru qu6Wrr;Q`squ6Wrrr2rup\t3nr;Q`srr3'#s8N)urr<&mrr<&trr<&qrrN3#!<2uu!;ZWp!;6?l !;uis!;HKn!<2uu!;-9k!;uis!<3!#!<<'!rr3'#s8N)qrr<&qrr<&trr<&urrW9$rrE&u!!)or !!%TM_Z0Z!"97hMNq2Z=rrhe5mr\V\~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)qrrN3#!<2uu!<3!#!<<'!rr2rurr2ru qu6Wrr;Q`squ6Wrrr2rup\t3nr;Q`srr3'#s8N)urr<&mrr<&trr<&qrrN3#!<2uu!;ZWp!;6?l !;uis!;HKn!<2uu!;-9k!;uis!<3!#!<<'!rr3'#s8N)qrr<&qrr<&trr<&urrW9$rrE&u!!)or !!%TM_Z0Z!"97hKN:QH;rrhe3mrJJZ~> "p"\lF8qc#jT#5[q>UEpJcC<$KE(u7"97hKN:QH;rs%rlS=KWZ!<3!#!<<'!rr3'#s8N)urrW9$ rrE&u!!*#u!!)or!!*#u!W`6#rr3'#s8N)urr<&nrr<&urrN3#!<3!#!<<'!rr2rupAY*mrVlit rr2rurr;rtrr2rurr2rurVlitp&>!lrr3$"rrE&u!s&B$!<2uu!<2uu!<2uu!;QQo!;uis!<3!# !<<'!rr3'#s8N)urr<&urr<&urr<&urr<&trr<&urrW9$rrE&u!s&B$!<2uu!.k0es8V6as6ko* o'cVY"RgF#Er^^~> "p"\lFoRo!jT#5[q>UEpJcC<$KE(u7"97hMNq2Z=rs%rlR[X9V!<3!#!<<'!rr3'#s8N)urrW9$ rrE&u!!*#u!!)or!!*#u!W`6#rr3'#s8N)urr<&nrr<&urrN3#!<3!#!<<'!rr2rupAY*mrVlit rr2rurr;rtrr2rurr2rurVlitp&>!lrr3$"rrE&u!s&B$!<2uu!<2uu!<2uu!;QQo!;uis!<3!# !<<'!rr3'#s8N)urr<&urr<&urr<&urr<&trr<&urrW9$rrE&u!s&B$!<2uu!.k0es8V6as6ku. o'cVY"RgL%FT?p~> "p"\lF8qc#jT#5[q>UEpJcC<$KE(u7"97hKN:QH;rs%rlS=KWZ!<3!#!<<'!rr3'#s8N)urrW9$ rrE&u!!*#u!!)or!!*#u!W`6#rr3'#s8N)urr<&nrr<&urrN3#!<3!#!<<'!rr2rupAY*mrVlit rr2rurr;rtrr2rurr2rurVlitp&>!lrr3$"rrE&u!s&B$!<2uu!<2uu!<2uu!;QQo!;uis!<3!# !<<'!rr3'#s8N)urr<&urr<&urr<&urr<&trr<&urrW9$rrE&u!s&B$!<2uu!.k0es8V6as6ko* o'cVY"RgF#Er^^~> "p"\lF8qc#rr;rts8W&u!ri6#nc&RhoD\djrVu]oJcC<$PlLdH"97hKN:QH;rrhfjS=KWV!!<0# !<3#u!!*&t!<)rs!<3#s!;ulr!<3#t!<)rs!!3*"p](3mrr;rtrr;osp](*js8W&ur;Q`sr;Z`r rr;iqp](3mrr;rtrVuisr;Z`rq#C9mrVuis!<;uts8W*!s8W&ur;Z`rs8Vusrr;rts8W&us8W*! s8W&ur;Q`sJcEdjs5sLamu34rn,NCjmrRr=!.Y~> "p"\lFoRo!rr;rts8W&u!ri6#nc&RhoD\djrVu]oJcC<$PlLdH"97hMNq2Z=rrhfjR[X9R!!<0# !<3#u!!*&t!<)rs!<3#s!;ulr!<3#t!<)rs!!3*"p](3mrr;rtrr;osp](*js8W&ur;Q`sr;Z`r rr;iqp](3mrr;rtrVuisr;Z`rq#C9mrVuis!<;uts8W*!s8W&ur;Z`rs8Vusrr;rts8W&us8W*! s8W&ur;Q`sJcEdjs5sLamuEG!n,NCjmre)A!.Y~> "p"\lF8qc#rr;rts8W&u!ri6#nc&RhoD\djrVu]oJcC<$PlLdH"97hKN:QH;rrhfjS=KWV!!<0# !<3#u!!*&t!<)rs!<3#s!;ulr!<3#t!<)rs!!3*"p](3mrr;rtrr;osp](*js8W&ur;Q`sr;Z`r rr;iqp](3mrr;rtrVuisr;Z`rq#C9mrVuis!<;uts8W*!s8W&ur;Z`rs8Vusrr;rts8W&us8W*! s8W&ur;Q`sJcEdjs5sLamu34rn,NCjmrRr=!.Y~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!;$3j!<)p%!<<'!s8N(Ms+137s8V6as6ko*o'cVY"7Q8[ SFQUZ!5ng:!.k0$s/Z2"k6(bQN/[>rs8N5jF74/MJ,~> #lt"oFoRo!s8N)urrrK'rrE*!!:^!g!;$3j!<)p%!<<'!s8N(Ms+137s8V6as6ku.o'cVY"7Q8Y RdpCX!5ng:!.k0$s/Z2"k6(bQNfN]!s8N5jFmjGQJ,~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!;$3j!<)p%!<<'!s8N(Ms+137s8V6as6ko*o'cVY"7Q8[ SFQUZ!5ng:!.k0$s/Z2"k6(bQN/[>rs8N5jF74/MJ,~> #lt"oF8qc#s8N)urriE&rrE'!n,N=drr;rtrVucq$NC,+rrE*!!<3'!rW!9)!!*'!!!*$!s8E#s s8E"Ls+13Qs8V6as6ko*o'cVY"7Q8[SFQUZ!5ng:!.k0$s/Z2"k6(bQN/[>rs8N5jF74/MJ,~> #lt"oFoRo!s8N)urriE&rrE'!n,N=drr;rtrVucq$NC,+rrE*!!<3'!rW!9)!!*'!!!*$!s8E#s s8E"Ls+13Qs8V6as6ku.o'cVY"7Q8YRdpCX!5ng:!.k0$s/Z2"k6(bQNfN]!s8N5jFmjGQJ,~> #lt"oF8qc#s8N)urriE&rrE'!n,N=drr;rtrVucq$NC,+rrE*!!<3'!rW!9)!!*'!!!*$!s8E#s s8E"Ls+13Qs8V6as6ko*o'cVY"7Q8[SFQUZ!5ng:!.k0$s/Z2"k6(bQN/[>rs8N5jF74/MJ,~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr<&urr<&trr<&srr<&qrr<&srr<&srr<&ursAc+rr<'! rrE*!!<2uu!.k0$s0)J&k6(bQN/[>rs8N2is.#VMs8E#;s8E"Ls+13Os8V6as6ko*o'cVY"RgF# Er^^~> #lt"oFoRo!s8N)urr`?%rr<&qrr<&mrr<&urr<&trr<&srr<&qrr<&srr<&srr<&ursAc+rr<'! rrE*!!<2uu!.k0$s0)J&k6(bQNfN]!s8N2is-fDIs8E#;s8E"Ls+13Os8V6as6ku.o'cVY"RgL% FT?p~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr<&urr<&trr<&srr<&qrr<&srr<&srr<&ursAc+rr<'! rrE*!!<2uu!.k0$s0)J&k6(bQN/[>rs8N2is.#VMs8E#;s8E"Ls+13Os8V6as6ko*o'cVY"RgF# Er^^~> #lt"oF8qc#s8N)urrN3#s8E#err<&urr<&trr<&srr<&qrr<&srr<&srr<&urrW9$rrE&u!s&B$ !.k0$s/Z2"k6(bQN/[>rs8N2is.#U1s+13$s4dSRk6(bQN/[>rs8N5jF74/MJ,~> #lt"oFoRo!s8N)urrN3#s8E#err<&urr<&trr<&srr<&qrr<&srr<&srr<&urrW9$rrE&u!s&B$ !.k0$s/Z2"k6(bQNfN]!s8N2is-fC-s+13$s4dSRk6(bQNfN]!s8N5jFmjGQJ,~> #lt"oF8qc#s8N)urrN3#s8E#err<&urr<&trr<&srr<&qrr<&srr<&srr<&urrW9$rrE&u!s&B$ !.k0$s/Z2"k6(bQN/[>rs8N2is.#U1s+13$s4dSRk6(bQN/[>rs8N5jF74/MJ,~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!<2uu!<)ot!;uis!;c]q!;uis!;uis!<3!#!<<'!rr3'# s8N(Ms+13Ns8V6as6ko*o'cVY"7Q8[SDjJJ!87DO!8@JP!8.;O!8IPO!8@JP!8RVP!8IPQ!8@JP !87AP!;ulr!<3#uk6(bQN/[>rs8N5jF74/MJ,~> #lt"oFoRo!s8N)urrrK'rrE*!!:^!g!<2uu!<)ot!;uis!;c]q!;uis!;uis!<3!#!<<'!rr3'# s8N(Ms+13Ns8V6as6ku.o'cVY"7Q8YRc48H!87DO!8@JP!8.;O!8IPO!8@JP!8RVP!8IPQ!8@JP !87AP!;ulr!<3#uk6(bQNfN]!s8N5jFmjGQJ,~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!<2uu!<)ot!;uis!;c]q!;uis!;uis!<3!#!<<'!rr3'# s8N(Ms+13Ns8V6as6ko*o'cVY"7Q8[SDjJJ!87DO!8@JP!8.;O!8IPO!8@JP!8RVP!8IPQ!8@JP !87AP!;ulr!<3#uk6(bQN/[>rs8N5jF74/MJ,~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh!!*#u!!)ut!!)rs!!*#u!!*#u!!)rs!!)rs!!*#u!s&B$ !<3!#!<<'!rr2ruJcC<$YQ+Xc"97hKN:QH;rr_`iS=KTY!!)Ed!!)rsrW)Wk!!)Ed!!)rs!!*#u !!)cn!!)Ed!!)rs!!*#u!!)cn!!)Ed!!)lqrrDcm!!)Ed!!)rs!!)Wj!!)Ed!!)or!!)Zk!!)Ed !!)rs!!*#u!!)cn!!)Ed!!)rs!!*#u!!)cn!!)Ed!!)rs!!*#u!!)cn!!)Ed!!)rsrW)os!!*#u #QXo)kNDm6N/[>rs8N5jF74/MJ,~> #lt"oFoRo!s8N)urrW9$rrE&u!!)Qh!!*#u!!)ut!!)rs!!*#u!!*#u!!)rs!!)rs!!*#u!s&B$ !<3!#!<<'!rr2ruJcC<$YQ+Xc"97hMNq2Z=rr_`iR[X6U!!)Ed!!)rsrW)Wk!!)Ed!!)rs!!*#u !!)cn!!)Ed!!)rs!!*#u!!)cn!!)Ed!!)lqrrDcm!!)Ed!!)rs!!)Wj!!)Ed!!)or!!)Zk!!)Ed !!)rs!!*#u!!)cn!!)Ed!!)rs!!*#u!!)cn!!)Ed!!)rs!!*#u!!)cn!!)Ed!!)rsrW)os!!*#u #QXo)kNDm6NfN]!s8N5jFmjGQJ,~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh!!*#u!!)ut!!)rs!!*#u!!*#u!!)rs!!)rs!!*#u!s&B$ !<3!#!<<'!rr2ruJcC<$YQ+Xc"97hKN:QH;rr_`iS=KTY!!)Ed!!)rsrW)Wk!!)Ed!!)rs!!*#u !!)cn!!)Ed!!)rs!!*#u!!)cn!!)Ed!!)lqrrDcm!!)Ed!!)rs!!)Wj!!)Ed!!)or!!)Zk!!)Ed !!)rs!!*#u!!)cn!!)Ed!!)rs!!*#u!!)cn!!)Ed!!)rs!!*#u!!)cn!!)Ed!!)rsrW)os!!*#u #QXo)kNDm6N/[>rs8N5jF74/MJ,~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup\t6os8E#ts82lqs8E#us82lss8;rrs8Duus8;rts8N*! s8E"Ls+13Qs8V6as6ko*o'cVY"7Q8[SGrNg!:Bdd!;c]q!;6?l!:Bdd!;uis!<2uu!;HKn!:Bdd !;QQo!;HKn!:Bdd!;lct!<3&mrr<&drr<&srr<&jrr<&drr<&srr<&jrr<&drr<&prr<&mrr<&d rr<&srr<&urr<&nrr<&drr<&srr<&urr<&nrr<&drr<&qrr<&trr<&urs/W)s6&SFmu34rn,NCj mrRr=!.Y~> "p"\lFoRo!rr;rts8W&us8W*!rr2rup\t6os8E#ts82lqs8E#us82lss8;rrs8Duus8;rts8N*! s8E"Ls+13Qs8V6as6ku.o'cVY"7Q8YRf< "p"\lF8qc#rr;rts8W&us8W*!rr2rup\t6os8E#ts82lqs8E#us82lss8;rrs8Duus8;rts8N*! s8E"Ls+13Qs8V6as6ko*o'cVY"7Q8[SGrNg!:Bdd!;c]q!;6?l!:Bdd!;uis!<2uu!;HKn!:Bdd !;QQo!;HKn!:Bdd!;lct!<3&mrr<&drr<&srr<&jrr<&drr<&srr<&jrr<&drr<&prr<&mrr<&d rr<&srr<&urr<&nrr<&drr<&srr<&urr<&nrr<&drr<&qrr<&trr<&urs/W)s6&SFmu34rn,NCj mrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCkn,JoJs8Vusrr;rtrVuisrr;lrrVlitpAb$jrr;rt rVuisrr;lrs8N'!rr2ruq#C6lrr;rtrVuisrr;lrqu6Wrq#C6lrr;rtrVuisrr;lrrr3$"rrDfn quH`rrW)osrW)rtquHcs!!)ZkquH`rrW)osrW)rtquHcs!!)ZkquH`rrW)osrW)rtquHZp!!)cn quH`rrW)osrW)rtquHcs!!*#u!!)foquH`rrW)osrW)rtquHcs!!*#u!!)foquH`rrW)osrW)rt quH]q!!)ut!!*#u#QXo)kNDm6N/[9+"RgF#Er^^~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCkn,JiFs8Vusrr;rtrVuisrr;lrrVlitpAb$jrr;rt rVuisrr;lrs8N'!rr2ruq#C6lrr;rtrVuisrr;lrqu6Wrq#C6lrr;rtrVuisrr;lrrr3$"rrDfn quH`rrW)osrW)rtquHcs!!)ZkquH`rrW)osrW)rtquHcs!!)ZkquH`rrW)osrW)rtquHZp!!)cn quH`rrW)osrW)rtquHcs!!*#u!!)foquH`rrW)osrW)rtquHcs!!*#u!!)foquH`rrW)osrW)rt quH]q!!)ut!!*#u#QXo)kNDm6NfNW/"RgL%FT?p~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCkn,JoJs8Vusrr;rtrVuisrr;lrrVlitpAb$jrr;rt rVuisrr;lrs8N'!rr2ruq#C6lrr;rtrVuisrr;lrqu6Wrq#C6lrr;rtrVuisrr;lrrr3$"rrDfn quH`rrW)osrW)rtquHcs!!)ZkquH`rrW)osrW)rtquHcs!!)ZkquH`rrW)osrW)rtquHZp!!)cn quH`rrW)osrW)rtquHcs!!*#u!!)foquH`rrW)osrW)rtquHcs!!*#u!!)foquH`rrW)osrW)rt quH]q!!)ut!!*#u#QXo)kNDm6N/[9+"RgF#Er^^~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJrr2rur;Q`srr3'#s8N)urr<&urr<&qrr<&l rr<&srr<&urrW9$rrE&u!!*#u!!)ip!!)`m!!)rs!!*#u!s&B$!<2uu!<2uu!;c`q!;?Em!;uis !<3!#!<<'!rr2rurr2rur;Qj!s8N)mrr<&srr<&urrW9$rrE&u!!*#u!!)rsr;cQk!!)rs!!*#u !s&B$!<2uu!<2uu!;ulq!;?Em!;uis!<3!#!<<'!rr2rurr2ruq>UEppAY*mr;Q`srr3'#s8N)u rr<&urr<&rs8E#lrr<&srr<&urrW9$rrE&u!!*#u!!)rs!!*#u!!)cn!!)rs!!*#u!s&B$!<2uu !<2uu!;c]q!<)ot!<3!(!<<)^kPt"0N:[&SN;rqHF74/MJ,~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFrr2rur;Q`srr3'#s8N)urr<&urr<&qrr<&l rr<&srr<&urrW9$rrE&u!!*#u!!)ip!!)`m!!)rs!!*#u!s&B$!<2uu!<2uu!;c`q!;?Em!;uis !<3!#!<<'!rr2rurr2rur;Qj!s8N)mrr<&srr<&urrW9$rrE&u!!*#u!!)rsr;cQk!!)rs!!*#u !s&B$!<2uu!<2uu!;ulq!;?Em!;uis!<3!#!<<'!rr2rurr2ruq>UEppAY*mr;Q`srr3'#s8N)u rr<&urr<&rs8E#lrr<&srr<&urrW9$rrE&u!!*#u!!)rs!!*#u!!)cn!!)rs!!*#u!s&B$!<2uu !<2uu!;c]q!<)ot!<3!(!<<)^kPt"2Nq<8UNrT.JFmjGQJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJrr2rur;Q`srr3'#s8N)urr<&urr<&qrr<&l rr<&srr<&urrW9$rrE&u!!*#u!!)ip!!)`m!!)rs!!*#u!s&B$!<2uu!<2uu!;c`q!;?Em!;uis !<3!#!<<'!rr2rurr2rur;Qj!s8N)mrr<&srr<&urrW9$rrE&u!!*#u!!)rsr;cQk!!)rs!!*#u !s&B$!<2uu!<2uu!;ulq!;?Em!;uis!<3!#!<<'!rr2rurr2ruq>UEppAY*mr;Q`srr3'#s8N)u rr<&urr<&rs8E#lrr<&srr<&urrW9$rrE&u!!*#u!!)rs!!*#u!!)cn!!)rs!!*#u!s&B$!<2uu !<2uu!;c]q!<)ot!<3!(!<<)^kPt"0N:[&SN;rqHF74/MJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJrr2rur;ZZprr;rtrVlitqYpNqp&>!lr;ZZp rr;rtrVlitqYpNqp&>!lr;ZZprr;rtrVlitq#:UEp pAY*mr;ZZprr;rtrVlitr;Q`srr2rup\t3nr;ZZprr;rtrVlitqu?Tpp\t3nr;ZZprr;rtrVlit qYpNqrVlitrr3<*s8V9Fs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFrr2rur;ZZprr;rtrVlitqYpNqp&>!lr;ZZp rr;rtrVlitqYpNqp&>!lr;ZZprr;rtrVlitq#:UEp pAY*mr;ZZprr;rtrVlitr;Q`srr2rup\t3nr;ZZprr;rtrVlitqu?Tpp\t3nr;ZZprr;rtrVlit qYpNqrVlitrr3<*s8V9Fs6ku.s8Vf]s,R-Z"RgL%FT?p~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJrr2rur;ZZprr;rtrVlitqYpNqp&>!lr;ZZp rr;rtrVlitqYpNqp&>!lr;ZZprr;rtrVlitq#:UEp pAY*mr;ZZprr;rtrVlitr;Q`srr2rup\t3nr;ZZprr;rtrVlitqu?Tpp\t3nr;ZZprr;rtrVlit qYpNqrVlitrr3<*s8V9Fs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJrr2rur;Q`sp\t3nrr2ruqYpNqp&>!lr;Q`s p\t3nrr2ruqu6Wro`"mkr;Q`sp\t3nrr2ruq#:!l r;Q`sp\t3nrr2rur;Q`srr2rup\t3nr;Q`sp\t3nrr2ruq#: "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFrr2rur;Q`sp\t3nrr2ruqYpNqp&>!lr;Q`s p\t3nrr2ruqu6Wro`"mkr;Q`sp\t3nrr2ruq#:!l r;Q`sp\t3nrr2rur;Q`srr2rup\t3nr;Q`sp\t3nrr2ruq#: "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJrr2rur;Q`sp\t3nrr2ruqYpNqp&>!lr;Q`s p\t3nrr2ruqu6Wro`"mkr;Q`sp\t3nrr2ruq#:!l r;Q`sp\t3nrr2rur;Q`srr2rup\t3nr;Q`sp\t3nrr2ruq#: "p"\lF8qc#jT#5[q>UEpjo>>\JcC<$U&Y/U"97hKN:QH;rr_`iS=KTY!!*#u!W`6#rr3'#s8N)u rr<&urr<&urr<&urr<&lrr<&urrN3#!<3!#!<<'!rr2rurr2rurr3$"rrE&u!!)cn!!*#u!W`6# rr3'#s8N)urr<&urr<&urrN3#!<2uu!;HKn!<3!"!<3&urrW9$rrE&u!!*#u!!*#u!!)ut!!)`m !!*#u!W`6#rr3'#s8N)urr<&urr<&us8N)trr<&nrr<&urrN3#!<3!#!<<'!rr2rurr2rurr3$" rrE&u!!)cn!!*#u!W`6#rr3'#s8N)urr<&urr<&urr<&urr<&lrr<&urrN3#!<3!#!<<'!rr2ru rr2rurr3$"rrE&u!!)cn!!*#u!W`6#rr3'#s8N)urr<&urr<&urr<&trr<&mrr<&urrN3#!<3!# !<<'!rr2rurr2rurr2rurr2rurVlitrr3<*s8V9Fs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!jT#5[q>UEpjo>>\JcC<$U&Y/U"97hMNq2Z=rr_`iR[X6U!!*#u!W`6#rr3'#s8N)u rr<&urr<&urr<&urr<&lrr<&urrN3#!<3!#!<<'!rr2rurr2rurr3$"rrE&u!!)cn!!*#u!W`6# rr3'#s8N)urr<&urr<&urrN3#!<2uu!;HKn!<3!"!<3&urrW9$rrE&u!!*#u!!*#u!!)ut!!)`m !!*#u!W`6#rr3'#s8N)urr<&urr<&us8N)trr<&nrr<&urrN3#!<3!#!<<'!rr2rurr2rurr3$" rrE&u!!)cn!!*#u!W`6#rr3'#s8N)urr<&urr<&urr<&urr<&lrr<&urrN3#!<3!#!<<'!rr2ru rr2rurr3$"rrE&u!!)cn!!*#u!W`6#rr3'#s8N)urr<&urr<&urr<&trr<&mrr<&urrN3#!<3!# !<<'!rr2rurr2rurr2rurr2rurVlitrr3<*s8V9Fs6ku.s8Vf]s,R-Z"RgL%FT?p~> "p"\lF8qc#jT#5[q>UEpjo>>\JcC<$U&Y/U"97hKN:QH;rr_`iS=KTY!!*#u!W`6#rr3'#s8N)u rr<&urr<&urr<&urr<&lrr<&urrN3#!<3!#!<<'!rr2rurr2rurr3$"rrE&u!!)cn!!*#u!W`6# rr3'#s8N)urr<&urr<&urrN3#!<2uu!;HKn!<3!"!<3&urrW9$rrE&u!!*#u!!*#u!!)ut!!)`m !!*#u!W`6#rr3'#s8N)urr<&urr<&us8N)trr<&nrr<&urrN3#!<3!#!<<'!rr2rurr2rurr3$" rrE&u!!)cn!!*#u!W`6#rr3'#s8N)urr<&urr<&urr<&urr<&lrr<&urrN3#!<3!#!<<'!rr2ru rr2rurr3$"rrE&u!!)cn!!*#u!W`6#rr3'#s8N)urr<&urr<&urr<&trr<&mrr<&urrN3#!<3!# !<<'!rr2rurr2rurr2rurr2rurVlitrr3<*s8V9Fs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lF8qc#rr;rts8W&u!ri6#nc&RhoD\djr;Z`ro)A[iJcC<$U&Y/U"97hKN:QH;rr_`iS=KQX rW)rtrW)osrW)lrrW)uuquHHjrW)rtrW)osrW)lrrW)uuquHHjrW)rtrW)osrW)lrrW)rtrW)Wk rW)rtrW)osrW)lrrW)osrW)ZlrW)rtrW)osrW)lrrW)uur;cNjrW)rtrW)osrW)lrrW)rtrW)Wk rW)rtrW)osrW)lrrW)os!!)ZkrW)rtrW)osrW)lrrW)rtrW)WkrW)rtrW)osrW)lrrW)uurW)Tj rW)rtrW)osrW)lrrW)uuquH`rrW)rts5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!rr;rts8W&u!ri6#nc&RhoD\djr;Z`ro)A[iJcC<$U&Y/U"97hMNq2Z=rr_`iR[X3T rW)rtrW)osrW)lrrW)uuquHHjrW)rtrW)osrW)lrrW)uuquHHjrW)rtrW)osrW)lrrW)rtrW)Wk rW)rtrW)osrW)lrrW)osrW)ZlrW)rtrW)osrW)lrrW)uur;cNjrW)rtrW)osrW)lrrW)rtrW)Wk rW)rtrW)osrW)lrrW)os!!)ZkrW)rtrW)osrW)lrrW)rtrW)WkrW)rtrW)osrW)lrrW)uurW)Tj rW)rtrW)osrW)lrrW)uuquH`rrW)rts5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> "p"\lF8qc#rr;rts8W&u!ri6#nc&RhoD\djr;Z`ro)A[iJcC<$U&Y/U"97hKN:QH;rr_`iS=KQX rW)rtrW)osrW)lrrW)uuquHHjrW)rtrW)osrW)lrrW)uuquHHjrW)rtrW)osrW)lrrW)rtrW)Wk rW)rtrW)osrW)lrrW)osrW)ZlrW)rtrW)osrW)lrrW)uur;cNjrW)rtrW)osrW)lrrW)rtrW)Wk rW)rtrW)osrW)lrrW)os!!)ZkrW)rtrW)osrW)lrrW)rtrW)WkrW)rtrW)osrW)lrrW)uurW)Tj rW)rtrW)osrW)lrrW)uuquH`rrW)rts5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!;$3j!;c]q!:p-i!.k0$s.TJmk6(bQN/[>rs8N2is.#U1 s+13$s4dSRk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oFoRo!s8N)urrrK'rrE*!!:^!g!;$3j!;c]q!:p-i!.k0$s.TJmk6(bQNfN]!s8N2is-fC- s+13$s4dSRk6:nSNfO/>p@&$As8N5jFmjGQJ,~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!;$3j!;c]q!:p-i!.k0$s.TJmk6(bQN/[>rs8N2is.#U1 s+13$s4dSRk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oF8qc#s8N)urriE&rrE'!n,N=drr;rtrVucqrr30&rrE*!!<<#urVufrJcC<$U&Y/U"97hK N:QH;rr_`iS=G01JcC<$g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oFoRo!s8N)urriE&rrE'!n,N=drr;rtrVucqrr30&rrE*!!<<#urVufrJcC<$U&Y/U"97hM Nq2Z=rr_`iR[Sg-JcC<$g].<:"on%ONrT.Qn,JFJrrhe5mr\V\~> #lt"oF8qc#s8N)urriE&rrE'!n,N=drr;rtrVucqrr30&rrE*!!<<#urVufrJcC<$U&Y/U"97hK N:QH;rr_`iS=G01JcC<$g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr<&urr<&trr<&srr<&rrrN3#!<3#u!<<'$!<<'!rr2ru JcC<$U&Y/U"97hKN:QH;rr_`iS=G01JcC<$g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oFoRo!s8N)urr`?%rr<&qrr<&mrr<&urr<&trr<&srr<&rrrN3#!<3#u!<<'$!<<'!rr2ru JcC<$U&Y/U"97hMNq2Z=rr_`iR[Sg-JcC<$g].<:"on%ONrT.Qn,JFJrrhe5mr\V\~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr<&urr<&trr<&srr<&rrrN3#!<3#u!<<'$!<<'!rr2ru JcC<$U&Y/U"97hKN:QH;rr_`iS=G01JcC<$g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oF8qc#s8N)urrN3#s8E#err<&urr<&trr<&srr<&ss82lsrr<&urrW9$rrE&u!!%TMJcDGD s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> #lt"oFoRo!s8N)urrN3#s8E#err<&urr<&trr<&srr<&ss82lsrr<&urrW9$rrE&u!!%TMJcDGD s5sLamuEG!n,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> #lt"oF8qc#s8N)urrN3#s8E#err<&urr<&trr<&srr<&ss82lsrr<&urrW9$rrE&u!!%TMJcDGD s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!<2uu!<)ot!;uis!;uis!<3!#!<<'!rr3'#s8N)urr<%M s+13Ds8V6as6ko*o'cVY"7Q8[S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urrrK'rrE*!!:^!g!<2uu!<)ot!;uis!;uis!<3!#!<<'!rr3'#s8N)urr<%M s+13Ds8V6as6ku.o'cVY"7Q8YRXtKis+14)s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!<2uu!<)ot!;uis!;uis!<3!#!<<'!rr3'#s8N)urr<%M s+13Ds8V6as6ko*o'cVY"7Q8[S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh!!*#u!!)ut!!)rs!!*#u!W`6#rr3'#s8N)urrW9$rrE&u !!%TMJcDGDs5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> #lt"oFoRo!s8N)urrW9$rrE&u!!)Qh!!*#u!!)ut!!)rs!!*#u!W`6#rr3'#s8N)urrW9$rrE&u !!%TMJcDGDs5sLamuEG!n,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh!!*#u!!)ut!!)rs!!*#u!W`6#rr3'#s8N)urrW9$rrE&u !!%TMJcDGDs5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup\t6os8E#ts82lqs8Duus8Duus8)frs8N*!s8E!!rr@WM JcDJEs5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!rr;rts8W&us8W*!rr2rup\t6os8E#ts82lqs8Duus8Duus8)frs8N*!s8E!!rr@WM JcDJEs5sLamuEG!n,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup\t6os8E#ts82lqs8Duus8Duus8)frs8N*!s8E!!rr@WM JcDJEs5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^mre)A !.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^mre)A !.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^mre)A !.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^mre)A !.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lF8qc#jT#5[q>UEpJcC<$KE(u7"97hKN:QH;rr_`iS=G01JcC<$g].<:"on%MN;rqOn,J@H rrhe3mrJJZ~> "p"\lFoRo!jT#5[q>UEpJcC<$KE(u7"97hMNq2Z=rr_`iR[Sg-JcC<$g].<:"on%ONrT.Qn,JFJ rrhe5mr\V\~> "p"\lF8qc#jT#5[q>UEpJcC<$KE(u7"97hKN:QH;rr_`iS=G01JcC<$g].<:"on%MN;rqOn,J@H rrhe3mrJJZ~> "p"\lF8qc#rr;rts8W&u!ri6#nc&RhoD\djqu?WqJcC<$P5kRF"97hKN:QH;rr_`iS=G01JcC<$ g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!rr;rts8W&u!ri6#nc&RhoD\djqu?WqJcC<$P5kRF"97hMNq2Z=rr_`iR[Sg-JcC<$ g].<:"on%ONrT.Qn,JFJrrhe5mr\V\~> "p"\lF8qc#rr;rts8W&u!ri6#nc&RhoD\djqu?WqJcC<$P5kRF"97hKN:QH;rr_`iS=G01JcC<$ g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!;$3j!;uis!<2uu!.k0$s-*K_k6(bQN/[>rs8N2is.#U1 s+13$s4dSRk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oFoRo!s8N)urrrK'rrE*!!:^!g!;$3j!;uis!<2uu!.k0$s-*K_k6(bQNfN]!s8N2is-fC- s+13$s4dSRk6:nSNfO/>p@&$As8N5jFmjGQJ,~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!;$3j!;uis!<2uu!.k0$s-*K_k6(bQN/[>rs8N2is.#U1 s+13$s4dSRk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oF8qc#s8N)urriE&rrE'!n,N=drr;rtrVucqs8N'!rr3*$s8N*!rW%NLJcD2=s5sLamu34r n,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> #lt"oFoRo!s8N)urriE&rrE'!n,N=drr;rtrVucqs8N'!rr3*$s8N*!rW%NLJcD2=s5sLamuEG! n,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> #lt"oF8qc#s8N)urriE&rrE'!n,N=drr;rtrVucqs8N'!rr3*$s8N*!rW%NLJcD2=s5sLamu34r n,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr<&urr<&trr<&srr<&srr<&urr<&urr<%Ms+13:s8V6a s6ko*o'cVY"7Q8[S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urr`?%rr<&qrr<&mrr<&urr<&trr<&srr<&srr<&urr<&urr<%Ms+13:s8V6a s6ku.o'cVY"7Q8YRXtKis+14)s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr<&urr<&trr<&srr<&srr<&urr<&urr<%Ms+13:s8V6a s6ko*o'cVY"7Q8[S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urrN3#s8E#err<&urr<&trr<&srr<&srr<&urr<&urr<%Ms+13:s8V6as6ko* o'cVY"7Q8[S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urrN3#s8E#err<&urr<&trr<&srr<&srr<&urr<&urr<%Ms+13:s8V6as6ku. o'cVY"7Q8YRXtKis+14)s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urrN3#s8E#err<&urr<&trr<&srr<&srr<&urr<&urr<%Ms+13:s8V6as6ko* o'cVY"7Q8[S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!<2uu!<)ot!;uis!;uis!<2uu!<2uu!.k0$s-Ncck6(bQ N/[>rs8N2is.#VBs8N)trr<&Ns8N)os8E"Ls+13Ws8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urrrK'rrE*!!:^!g!<2uu!<)ot!;uis!;uis!<2uu!<2uu!.k0$s-Ncck6(bQ NfN]!s8N2is-fD>s8N)trr<&Ns8N)os8E"Ls+13Ws8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!<2uu!<)ot!;uis!;uis!<2uu!<2uu!.k0$s-Ncck6(bQ N/[>rs8N2is.#VBs8N)trr<&Ns8N)os8E"Ls+13Ws8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh!!*#u!!)ut!!)rs!!*#u!W`6#rr2rurr2ruJcC<$QiI*K "97hKN:QH;rrhfjS=KWY!:'Ra!7CfH!;?Em!:Kjg!<3&trr<&drr<&ss82lkrr<&VrrN3#!.k0A s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urrW9$rrE&u!!)Qh!!*#u!!)ut!!)rs!!*#u!W`6#rr2rurr2ruJcC<$QiI*K "97hMNq2Z=rrhfjR[X9U!:'Ra!7CfH!;?Em!:Kjg!<3&trr<&drr<&ss82lkrr<&VrrN3#!.k0A s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh!!*#u!!)ut!!)rs!!*#u!W`6#rr2rurr2ruJcC<$QiI*K "97hKN:QH;rrhfjS=KWY!:'Ra!7CfH!;?Em!:Kjg!<3&trr<&drr<&ss82lkrr<&VrrN3#!.k0A s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup\t6os8E#ts82lqs8E#ts8E#ts8;qKs+13As5sRc mu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!rr;rts8W&us8W*!rr2rup\t6os8E#ts82lqs8E#ts8E#ts8;qKs+13As5sRc muEG.s7Yp]NrT+^mre)A!.Y~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup\t6os8E#ts82lqs8E#ts8E#ts8;qKs+13As5sRc mu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)qs8E#ts8;rrs8;rts8E#trrE-"rW)os rW!!!!;c`p!!3*"rVuisrVufr#6+Z's8N'!rVlitr;Z`rpAY0orrE&uquH`rrW)osrW)rtquH]q !!*#u! "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCln,JiFs8N)qs8E#ts8;rrs8;rts8E#trrE-"rW)os rW!!!!;c`p!!3*"rVuisrVufr#6+Z's8N'!rVlitr;Z`rpAY0orrE&uquH`rrW)osrW)rtquH]q !!*#u! "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)qs8E#ts8;rrs8;rts8E#trrE-"rW)os rW!!!!;c`p!!3*"rVuisrVufr#6+Z's8N'!rVlitr;Z`rpAY0orrE&uquH`rrW)osrW)rtquH]q !!*#u! "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)rrr<&urr<&rrrW9$rrE&u!!)ut!!)ut rrE*!!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut!!)ut!!*#u!!)Ng!!)rs !!*#u!s&B$!<2uu!<2uu!;c]q!<)rt!<<'!!<2uu!;uis!<3!#!<<'!rr3'#s8N)urr<&urr<%M s- "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCln,JiFs8N)rrr<&urr<&rrrW9$rrE&u!!)ut!!)ut rrE*!!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut!!)ut!!*#u!!)Ng!!)rs !!*#u!s&B$!<2uu!<2uu!;c]q!<)rt!<<'!!<2uu!;uis!<3!#!<<'!rr3'#s8N)urr<&urr<%M s-p@&$As8N5jFmjGQJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)rrr<&urr<&rrrW9$rrE&u!!)ut!!)ut rrE*!!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut!!)ut!!*#u!!)Ng!!)rs !!*#u!s&B$!<2uu!<2uu!;c]q!<)rt!<<'!!<2uu!;uis!<3!#!<<'!rr3'#s8N)urr<&urr<%M s- "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)rrr<&urr<&us8;rtrr<&urr<&trr<&t rr<&urrW9$rrE&u!!)fo#6=c(rrE*!!<3!#!<<'!rr3'#s8N)urr<&trr<&ts82ldrr<&ss82lr s8E#srr<&qrr<&trr<&urr<&urr<&ss82lsrr<&urrN3#s82lrrr<%Ms- "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCln,JiFs8N)rrr<&urr<&us8;rtrr<&urr<&trr<&t rr<&urrW9$rrE&u!!)fo#6=c(rrE*!!<3!#!<<'!rr3'#s8N)urr<&trr<&ts82ldrr<&ss82lr s8E#srr<&qrr<&trr<&urr<&urr<&ss82lsrr<&urrN3#s82lrrr<%Ms-p@&$A s8N5jFmjGQJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)rrr<&urr<&us8;rtrr<&urr<&trr<&t rr<&urrW9$rrE&u!!)fo#6=c(rrE*!!<3!#!<<'!rr3'#s8N)urr<&trr<&ts82ldrr<&ss82lr s8E#srr<&qrr<&trr<&urr<&urr<&ss82lsrr<&urrN3#s82lrrr<%Ms- "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)urrW9$rrE&u!s&B$!<3!#!<<'!rr2ru rVlitrVlitrr3'#s8N)urr<&ors&Q(!<3'!rrE&u!s&B$!<3!#!<<'!rr2rurVlitrVlitm/I%c r;Q`sp\t3nrr2ruqYpNqrVlitrr2rurr2rur;Q`squ6Wrrr3'#s8N)qrr<%Ms- "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCln,JiFs8N)urrW9$rrE&u!s&B$!<3!#!<<'!rr2ru rVlitrVlitrr3'#s8N)urr<&ors&Q(!<3'!rrE&u!s&B$!<3!#!<<'!rr2rurVlitrVlitm/I%c r;Q`sp\t3nrr2ruqYpNqrVlitrr2rurr2rur;Q`squ6Wrrr3'#s8N)qrr<%Ms- p@&$As8N5jFmjGQJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)urrW9$rrE&u!s&B$!<3!#!<<'!rr2ru rVlitrVlitrr3'#s8N)urr<&ors&Q(!<3'!rrE&u!s&B$!<3!#!<<'!rr2rurVlitrVlitm/I%c r;Q`sp\t3nrr2ruqYpNqrVlitrr2rurr2rur;Q`squ6Wrrr3'#s8N)qrr<%Ms- "p"\lF8qc#jT#5[q>UEpJcC<$KE(u7"97hKN:QH;rs%rlS=KWZ!<3!#!<<'!rr3'#s8N)urrW9$ rrE&u!!)ut!!)ut!!*#u!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut!!)ut !!*#u!!)Ng!!*#u!W`6#rr3'#s8N)urr<&urr<&urr<&urr<&trr<&urr<&urr<&urrN3#!<3!# !<<'!rr3'#s8N)urr<&urr<%Ms- "p"\lFoRo!jT#5[q>UEpJcC<$KE(u7"97hMNq2Z=rs%rlR[X9V!<3!#!<<'!rr3'#s8N)urrW9$ rrE&u!!)ut!!)ut!!*#u!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut!!)ut !!*#u!!)Ng!!*#u!W`6#rr3'#s8N)urr<&urr<&urr<&urr<&trr<&urr<&urr<&urrN3#!<3!# !<<'!rr3'#s8N)urr<&urr<%Ms-p@&$As8N5jFmjGQJ,~> "p"\lF8qc#jT#5[q>UEpJcC<$KE(u7"97hKN:QH;rs%rlS=KWZ!<3!#!<<'!rr3'#s8N)urrW9$ rrE&u!!)ut!!)ut!!*#u!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut!!)ut !!*#u!!)Ng!!*#u!W`6#rr3'#s8N)urr<&urr<&urr<&urr<&trr<&urr<&urr<&urrN3#!<3!# !<<'!rr3'#s8N)urr<&urr<%Ms- "p"\lF8qc#rr;rts8W&u!ri6#nc&RhoD\djrVults8W&uq#: "p"\lFoRo!rr;rts8W&u!ri6#nc&RhoD\djrVults8W&uq#: "p"\lF8qc#rr;rts8W&u!ri6#nc&RhoD\djrVults8W&uq#: #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!;$3j!;uls!<<'!!;HKn!.k0$s.98jk6(bQN/[>rs8N2i s.#V,rr<%Prr<%Ms,-jVk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oFoRo!s8N)urrrK'rrE*!!:^!g!;$3j!;uls!<<'!!;HKn!.k0$s.98jk6(bQNfN]!s8N2i s-fD(rr<%Prr<%Ms,-jVk6:nSNfO/>p@&$As8N5jFmjGQJ,~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!;$3j!;uls!<<'!!;HKn!.k0$s.98jk6(bQN/[>rs8N2i s.#V,rr<%Prr<%Ms,-jVk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oF8qc#s8N)urriE&rrE'!n,N=drr;rtrVucqs8W*!s8N'!rr;rtrr;lrJcC<$U&Y/U"97hK N:QH;rr_`iS=J",!!%]P!!%TMMZ<_>"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oFoRo!s8N)urriE&rrE'!n,N=drr;rtrVucqs8W*!s8N'!rr;rtrr;lrJcC<$U&Y/U"97hM Nq2Z=rr_`iR[VY(!!%]P!!%TMMZ<_>"on%ONrT.Qn,JFJrrhe5mr\V\~> #lt"oF8qc#s8N)urriE&rrE'!n,N=drr;rtrVucqs8W*!s8N'!rr;rtrr;lrJcC<$U&Y/U"97hK N:QH;rr_`iS=J",!!%]P!!%TMMZ<_>"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr<&urr<&trr<&srr<&srs&Q(!<3'!rrE&u!!*#u!!%TM JcD>As5sLamu34rn,NCin,JoJeGoLJLB%5QJcCT,s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> #lt"oFoRo!s8N)urr`?%rr<&qrr<&mrr<&urr<&trr<&srr<&srs&Q(!<3'!rrE&u!!*#u!!%TM JcD>As5sLamuEG!n,NCin,JiFeGoLJLB%5QJcCT,s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr<&urr<&trr<&srr<&srs&Q(!<3'!rrE&u!!*#u!!%TM JcD>As5sLamu34rn,NCin,JoJeGoLJLB%5QJcCT,s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> #lt"oF8qc#s8N)urrN3#s8E#err<&urr<&trr<&srr<&srs&Q(!<3'!rrE&u!!*#u!!%TMJcD>A s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> #lt"oFoRo!s8N)urrN3#s8E#err<&urr<&trr<&srr<&srs&Q(!<3'!rrE&u!!*#u!!%TMJcD>A s5sLamuEG!n,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> #lt"oF8qc#s8N)urrN3#s8E#err<&urr<&trr<&srr<&srs&Q(!<3'!rrE&u!!*#u!!%TMJcD>A s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!<2uu!<)ot!;uis!;uj%!<<'!!<<'!rr2rurr2ruJcC<$ T)\iR"97hKN:QH;rr_`iS=Ie&rrCjSrW)0^rW(@GrW(pW!!%TMX8i4_"on%MN;rqOn,J@Hrrhe3 mrJJZ~> #lt"oFoRo!s8N)urrrK'rrE*!!:^!g!<2uu!<)ot!;uis!;uj%!<<'!!<<'!rr2rurr2ruJcC<$ T)\iR"97hMNq2Z=rr_`iR[VG"rrCjSrW)0^rW(@GrW(pW!!%TMX8i4_"on%ONrT.Qn,JFJrrhe5 mr\V\~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!<2uu!<)ot!;uis!;uj%!<<'!!<<'!rr2rurr2ruJcC<$ T)\iR"97hKN:QH;rr_`iS=Ie&rrCjSrW)0^rW(@GrW(pW!!%TMX8i4_"on%MN;rqOn,J@Hrrhe3 mrJJZ~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh!!*#u!!)ut!!)rs!!*#u#lsu*s8N'!s8N)urr<&urr<&u rr<%Ms+13Es8V6as6ko*o'cVY"RlA\SH&Hdir8uYnc&Rhp\t3njo5;\k5PD]p&>!lmJd.do`"mk k5PD]JcDMFs5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> #lt"oFoRo!s8N)urrW9$rrE&u!!)Qh!!*#u!!)ut!!)rs!!*#u#lsu*s8N'!s8N)urr<&urr<&u rr<%Ms+13Es8V6as6ku.o'cVY"RlAZRfE6bir8uYnc&Rhp\t3njo5;\k5PD]p&>!lmJd.do`"mk k5PD]JcDMFs5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh!!*#u!!)ut!!)rs!!*#u#lsu*s8N'!s8N)urr<&urr<&u rr<%Ms+13Es8V6as6ko*o'cVY"RlA\SH&Hdir8uYnc&Rhp\t3njo5;\k5PD]p&>!lmJd.do`"mk k5PD]JcDMFs5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup\t6os8E#ts82lqs8Duus8E#urr<&us8E#rs8E"Ls+13D s8V6as6ko*o'cVY#4MS^SH&Thrr2ruir8uYnc&Rhp\t3njo5;\k5PD]p&>!lmJd.do`"mkk5PD] JcDMFs5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!rr;rts8W&us8W*!rr2rup\t6os8E#ts82lqs8Duus8E#urr<&us8E#rs8E"Ls+13D s8V6as6ku.o'cVY#4MS\RfEBfrr2ruir8uYnc&Rhp\t3njo5;\k5PD]p&>!lmJd.do`"mkk5PD] JcDMFs5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup\t6os8E#ts82lqs8Duus8E#urr<&us8E#rs8E"Ls+13D s8V6as6ko*o'cVY#4MS^SH&Thrr2ruir8uYnc&Rhp\t3njo5;\k5PD]p&>!lmJd.do`"mkk5PD] JcDMFs5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCnn,JoJs8N*!!<3#t!!*&t!!*&u!<)rs!<3!!!<<#u s8Vusrr;rtrVufrq#C6lrr;rts8N*"s8E#krr<&ss8E#us8Duus8E#us8E#rrr<&ms82lrs8E#s s8E#ts82lls82j'rr<'!rr<'!!<<#urVuisrr;lrs8W&ur;Z`rs8N*"s8E#ss8E"Ls2"a8k6:nS N/[f:p@&$?s8N5jF74/MJ,~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCnn,JiFs8N*!!<3#t!!*&t!!*&u!<)rs!<3!!!<<#u s8Vusrr;rtrVufrq#C6lrr;rts8N*"s8E#krr<&ss8E#us8Duus8E#us8E#rrr<&ms82lrs8E#s s8E#ts82lls82j'rr<'!rr<'!!<<#urVuisrr;lrs8W&ur;Z`rs8N*"s8E#ss8E"Ls2"a8k6:nS NfO/>p@&$As8N5jFmjGQJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCnn,JoJs8N*!!<3#t!!*&t!!*&u!<)rs!<3!!!<<#u s8Vusrr;rtrVufrq#C6lrr;rts8N*"s8E#krr<&ss8E#us8Duus8E#us8E#rrr<&ms82lrs8E#s s8E#ts82lls82j'rr<'!rr<'!!<<#urVuisrr;lrs8W&ur;Z`rs8N*"s8E#ss8E"Ls2"a8k6:nS N/[f:p@&$?s8N5jF74/MJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCkn,JoJs8W&ur;QfurrE&u!!*#u!s&B$!<2uu!<2uu !;lcr!;uis!<3!#!<<'!rr2rup\t3nr;Q`srr3'#s8N)urr<&mrr<&trr<&urrW9$rrE&u!s&B$ !<2uu!<)ot!;6?l!;uis!<3!#!<<'!rr2rurr2ruo`"mkr;Q`srr3<*s8N'!s8N*!rrE&u!!*#u !!)lq!!)ut!!*#u$3:,+!!*'!!<<'!rr2rurVlitJcEdjs5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCkn,JiFs8W&ur;QfurrE&u!!*#u!s&B$!<2uu!<2uu !;lcr!;uis!<3!#!<<'!rr2rup\t3nr;Q`srr3'#s8N)urr<&mrr<&trr<&urrW9$rrE&u!s&B$ !<2uu!<)ot!;6?l!;uis!<3!#!<<'!rr2rurr2ruo`"mkr;Q`srr3<*s8N'!s8N*!rrE&u!!*#u !!)lq!!)ut!!*#u$3:,+!!*'!!<<'!rr2rurVlitJcEdjs5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCkn,JoJs8W&ur;QfurrE&u!!*#u!s&B$!<2uu!<2uu !;lcr!;uis!<3!#!<<'!rr2rup\t3nr;Q`srr3'#s8N)urr<&mrr<&trr<&urrW9$rrE&u!s&B$ !<2uu!<)ot!;6?l!;uis!<3!#!<<'!rr2rurr2ruo`"mkr;Q`srr3<*s8N'!s8N*!rrE&u!!*#u !!)lq!!)ut!!*#u$3:,+!!*'!!<<'!rr2rurVlitJcEdjs5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCnn,JoJs8N*!!;lcr!<)ot!<3!#!<<'!rr2rurr2ru qu6Wrr;ZZps8N'!rr2rup\t3nr;Q`srr3'#s8N)urrN3#s82lqrr<&ts82lsrr<&urrN3#s82lq rr<&lrr<&ss82lrs8E#srr<&krr<&srr<&urrW9$rrE&u!s&B$!;c]q!;c]q!<)ot!<3!#!<<'! rr2rurr;rtJcERds5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCnn,JiFs8N*!!;lcr!<)ot!<3!#!<<'!rr2rurr2ru qu6Wrr;ZZps8N'!rr2rup\t3nr;Q`srr3'#s8N)urrN3#s82lqrr<&ts82lsrr<&urrN3#s82lq rr<&lrr<&ss82lrs8E#srr<&krr<&srr<&urrW9$rrE&u!s&B$!;c]q!;c]q!<)ot!<3!#!<<'! rr2rurr;rtJcERds5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCnn,JoJs8N*!!;lcr!<)ot!<3!#!<<'!rr2rurr2ru qu6Wrr;ZZps8N'!rr2rup\t3nr;Q`srr3'#s8N)urrN3#s82lqrr<&ts82lsrr<&urrN3#s82lq rr<&lrr<&ss82lrs8E#srr<&krr<&srr<&urrW9$rrE&u!s&B$!;c]q!;c]q!<)ot!<3!#!<<'! rr2rurr;rtJcERds5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)qrrN3#!<2uu!<3!#!<<'!rr2rurr2ru qu6Wrr;Q`squ6Wrrr2rup\t3nr;Q`srr3'#s8N)urr<&mrr<&trr<&qrrN3#!<2uu!;ZWp!;6?l !;uis!;HKn!<2uu!;-9k!;uis!<3!#!<<'!rr3'#s8N)qrr<&qrr<&trr<&urrW9$rrE&u!!)or !!%TM_Z0Z!"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCln,JiFs8N)qrrN3#!<2uu!<3!#!<<'!rr2rurr2ru qu6Wrr;Q`squ6Wrrr2rup\t3nr;Q`srr3'#s8N)urr<&mrr<&trr<&qrrN3#!<2uu!;ZWp!;6?l !;uis!;HKn!<2uu!;-9k!;uis!<3!#!<<'!rr3'#s8N)qrr<&qrr<&trr<&urrW9$rrE&u!!)or !!%TM_Z0Z!"on%ONrT.Qn,JFJrrhe5mr\V\~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)qrrN3#!<2uu!<3!#!<<'!rr2rurr2ru qu6Wrr;Q`squ6Wrrr2rup\t3nr;Q`srr3'#s8N)urr<&mrr<&trr<&qrrN3#!<2uu!;ZWp!;6?l !;uis!;HKn!<2uu!;-9k!;uis!<3!#!<<'!rr3'#s8N)qrr<&qrr<&trr<&urrW9$rrE&u!!)or !!%TM_Z0Z!"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lF8qc#jT#5[q>UEpJcC<$KE(u7"97hKN:QH;rs%rlS=KWZ!<3!#!<<'!rr3'#s8N)urrW9$ rrE&u!!*#u!!)or!!*#u!W`6#rr3'#s8N)urr<&nrr<&urrN3#!<3!#!<<'!rr2rupAY*mrVlit rr2rurr;rtrr2rurr2rurVlitp&>!lrr3$"rrE&u!s&B$!<2uu!<2uu!<2uu!;QQo!;uis!<3!# !<<'!rr3'#s8N)urr<&urr<&urr<&urr<&trr<&urrW9$rrE&u!s&B$!<2uu!.k0es8V6cs6ko* s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!jT#5[q>UEpJcC<$KE(u7"97hMNq2Z=rs%rlR[X9V!<3!#!<<'!rr3'#s8N)urrW9$ rrE&u!!*#u!!)or!!*#u!W`6#rr3'#s8N)urr<&nrr<&urrN3#!<3!#!<<'!rr2rupAY*mrVlit rr2rurr;rtrr2rurr2rurVlitp&>!lrr3$"rrE&u!s&B$!<2uu!<2uu!<2uu!;QQo!;uis!<3!# !<<'!rr3'#s8N)urr<&urr<&urr<&urr<&trr<&urrW9$rrE&u!s&B$!<2uu!.k0es8V6cs6ku. s8Vf]s,R-Z"RgL%FT?p~> "p"\lF8qc#jT#5[q>UEpJcC<$KE(u7"97hKN:QH;rs%rlS=KWZ!<3!#!<<'!rr3'#s8N)urrW9$ rrE&u!!*#u!!)or!!*#u!W`6#rr3'#s8N)urr<&nrr<&urrN3#!<3!#!<<'!rr2rupAY*mrVlit rr2rurr;rtrr2rurr2rurVlitp&>!lrr3$"rrE&u!s&B$!<2uu!<2uu!<2uu!;QQo!;uis!<3!# !<<'!rr3'#s8N)urr<&urr<&urr<&urr<&trr<&urrW9$rrE&u!s&B$!<2uu!.k0es8V6cs6ko* s8Vf]s,@!X"RgF#Er^^~> "p"\lF8qc#rr;rts8W&u!ri6#nc&RhoD\djrVuis!<<#uJcC<$PlLdH"97hKN:QH;rrhfjS=KWV !!<0#!<3#u!!*&t!<)rs!<3#s!;ulr!<3#t!<)rs!!3*"p](3mrr;rtrr;osp](*js8W&ur;Q`s r;Z`rrr;iqp](3mrr;rtrVuisr;Z`rq#C9mrVuis!<;uts8W*!s8W&ur;Z`rs8Vusrr;rts8W&u s8W*!s8W&ur;Q`sJcEdjs5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!rr;rts8W&u!ri6#nc&RhoD\djrVuis!<<#uJcC<$PlLdH"97hMNq2Z=rrhfjR[X9R !!<0#!<3#u!!*&t!<)rs!<3#s!;ulr!<3#t!<)rs!!3*"p](3mrr;rtrr;osp](*js8W&ur;Q`s r;Z`rrr;iqp](3mrr;rtrVuisr;Z`rq#C9mrVuis!<;uts8W*!s8W&ur;Z`rs8Vusrr;rts8W&u s8W*!s8W&ur;Q`sJcEdjs5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> "p"\lF8qc#rr;rts8W&u!ri6#nc&RhoD\djrVuis!<<#uJcC<$PlLdH"97hKN:QH;rrhfjS=KWV !!<0#!<3#u!!*&t!<)rs!<3#s!;ulr!<3#t!<)rs!!3*"p](3mrr;rtrr;osp](*js8W&ur;Q`s r;Z`rrr;iqp](3mrr;rtrVuisr;Z`rq#C9mrVuis!<;uts8W*!s8W&ur;Z`rs8Vusrr;rts8W&u s8W*!s8W&ur;Q`sJcEdjs5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!;$3j!;uis!<2uu!.k0$s-*K_k6(bQN/[>rs8N2is.#VL rr<&:rr<%Ms+13Ns8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urrrK'rrE*!!:^!g!;$3j!;uis!<2uu!.k0$s-*K_k6(bQNfN]!s8N2is-fDH rr<&:rr<%Ms+13Ns8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!;$3j!;uis!<2uu!.k0$s-*K_k6(bQN/[>rs8N2is.#VL rr<&:rr<%Ms+13Ns8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urriE&rrE'!n,N=drr;rtrVucqrr3$"rrE#trW)rt!rs8N2is.#VLrr<&:rr<%Ms+13Ns8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urriE&rrE'!n,N=drr;rtrVucqrr3$"rrE#trW)rt! #lt"oF8qc#s8N)urriE&rrE'!n,N=drr;rtrVucqrr3$"rrE#trW)rt!rs8N2is.#VLrr<&:rr<%Ms+13Ns8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr<&urr<&trr<&srr<&qrr<&trr<&urr<&urr<%Ms+13A s8V6as6ko*o'cVY"7Q8[SFZ^Z!6,!;!.k0$s/c8#k6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oFoRo!s8N)urr`?%rr<&qrr<&mrr<&urr<&trr<&srr<&qrr<&trr<&urr<&urr<%Ms+13A s8V6as6ku.o'cVY"7Q8YRe$LX!6,!;!.k0$s/c8#k6:nSNfO/>p@&$As8N5jFmjGQJ,~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr<&urr<&trr<&srr<&qrr<&trr<&urr<&urr<%Ms+13A s8V6as6ko*o'cVY"7Q8[SFZ^Z!6,!;!.k0$s/c8#k6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oF8qc#s8N)urrN3#s8E#err<&urr<&trr<&srr<&rrrN3#!<2uu!<2uu!<2uu!.k0$s.98j k6(bQN/[>rs8N2is.#U1s+13$s4dSRk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oFoRo!s8N)urrN3#s8E#err<&urr<&trr<&srr<&rrrN3#!<2uu!<2uu!<2uu!.k0$s.98j k6(bQNfN]!s8N2is-fC-s+13$s4dSRk6:nSNfO/>p@&$As8N5jFmjGQJ,~> #lt"oF8qc#s8N)urrN3#s8E#err<&urr<&trr<&srr<&rrrN3#!<2uu!<2uu!<2uu!.k0$s.98j k6(bQN/[>rs8N2is.#U1s+13$s4dSRk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!<2uu!<)ot!;uis!;lct!<3&urr<&urr<&urr<%Ms+13A s8V6as6ko*o'cVY"7Q8[S>?2a!.k.Orr<%qrr<&ms8E#Grr<&]rr<&ms8V6cs6ko*s8Vf]s,@!X "RgF#Er^^~> #lt"oFoRo!s8N)urrrK'rrE*!!:^!g!<2uu!<)ot!;uis!;lct!<3&urr<&urr<&urr<%Ms+13A s8V6as6ku.o'cVY"7Q8YR\]u_!.k.Orr<%qrr<&ms8E#Grr<&]rr<&ms8V6cs6ku.s8Vf]s,R-Z "RgL%FT?p~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!<2uu!<)ot!;uis!;lct!<3&urr<&urr<&urr<%Ms+13A s8V6as6ko*o'cVY"7Q8[S>?2a!.k.Orr<%qrr<&ms8E#Grr<&]rr<&ms8V6cs6ko*s8Vf]s,@!X "RgF#Er^^~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh!!*#u!!)ut!!)rs!!*#u!W`6#rr3'#s8N)urr<&urr<%M s+13As8V6as6ko*o'cVY"7Q8[SGrNg!:Bdd!<)rq!9jF_!:Bdd!;ulp!<)ot!9a@^!:Bdd!;ulp !9sL`!;-9k!:Bdd!;ulr!<)ot!:9^c!:Bdd!<)rp!:^!g!8d_U!;6?l!:Bdd!<)rq!7_&Kk6:nS N/[f:p@&$?s8N5jF74/MJ,~> #lt"oFoRo!s8N)urrW9$rrE&u!!)Qh!!*#u!!)ut!!)rs!!*#u!W`6#rr3'#s8N)urr<&urr<%M s+13As8V6as6ku.o'cVY"7Q8YRf<p@&$As8N5jFmjGQJ,~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh!!*#u!!)ut!!)rs!!*#u!W`6#rr3'#s8N)urr<&urr<%M s+13As8V6as6ko*o'cVY"7Q8[SGrNg!:Bdd!<)rq!9jF_!:Bdd!;ulp!<)ot!9a@^!:Bdd!;ulp !9sL`!;-9k!:Bdd!;ulr!<)ot!:9^c!:Bdd!<)rp!:^!g!8d_U!;6?l!:Bdd!<)rq!7_&Kk6:nS N/[f:p@&$?s8N5jF74/MJ,~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup\t6os8E#ts82lqs8Duus8Duus8E#us8E#ts8;qKs+13C s8V6as6ko*o'cVY"7Q8[SGrNg!:Bdd!;uj"!<<'!!9sL`!:Bdd!;c]q!;lcr!9a@^!:Bdd!;c]q !9a@^!;-9k!:Bdd!;c]q!<)ot!:9^c!:Bdd!;uis!<2uu!:^!g!8d_U!;6?l!:Bdd!;uis!<2uu !7h,Lk6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lFoRo!rr;rts8W&us8W*!rr2rup\t6os8E#ts82lqs8Duus8Duus8E#us8E#ts8;qKs+13C s8V6as6ku.o'cVY"7Q8YRf<p@&$As8N5jFmjGQJ,~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup\t6os8E#ts82lqs8Duus8Duus8E#us8E#ts8;qKs+13C s8V6as6ko*o'cVY"7Q8[SGrNg!:Bdd!;uj"!<<'!!9sL`!:Bdd!;c]q!;lcr!9a@^!:Bdd!;c]q !9a@^!;-9k!:Bdd!;c]q!<)ot!:9^c!:Bdd!;uis!<2uu!:^!g!8d_U!;6?l!:Bdd!;uis!<2uu !7h,Lk6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCkn,JoJs8Vusrr;rtrVuisrr;lrs8N'!rr2rurr;rt s8W&u!<<#uq>^?mrr;rtrVuisrr;lrrVlitqu6Wrr;Z`rrVuis!WN/qs82lrs8E#ss8E#ts82lq rr<&ss8E#ss8E!$rrE'!s8E#us82lls82lrs8E#ss8E#ts82lrrrN3#!<3#s!<)rs!;HNk!<3#t !<)rs!<3#r!<<''!<3'!!<<)t!<)rs!<3#r!<3#t!<3!!!<<#us8W&urVufrr;Q`spAb$jrr;rt rVuisrr;lrs8N'!rr3$"s8W&urr3!!s8E#ss8E#us8E!!rrE&urW)osr;ciss5sRcmu35*s7Yp] N;rn\mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCkn,JiFs8Vusrr;rtrVuisrr;lrs8N'!rr2rurr;rt s8W&u!<<#uq>^?mrr;rtrVuisrr;lrrVlitqu6Wrr;Z`rrVuis!WN/qs82lrs8E#ss8E#ts82lq rr<&ss8E#ss8E!$rrE'!s8E#us82lls82lrs8E#ss8E#ts82lrrrN3#!<3#s!<)rs!;HNk!<3#t !<)rs!<3#r!<<''!<3'!!<<)t!<)rs!<3#r!<3#t!<3!!!<<#us8W&urVufrr;Q`spAb$jrr;rt rVuisrr;lrs8N'!rr3$"s8W&urr3!!s8E#ss8E#us8E!!rrE&urW)osr;ciss5sRcmuEG.s7Yp] NrT+^mre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCkn,JoJs8Vusrr;rtrVuisrr;lrs8N'!rr2rurr;rt s8W&u!<<#uq>^?mrr;rtrVuisrr;lrrVlitqu6Wrr;Z`rrVuis!WN/qs82lrs8E#ss8E#ts82lq rr<&ss8E#ss8E!$rrE'!s8E#us82lls82lrs8E#ss8E#ts82lrrrN3#!<3#s!<)rs!;HNk!<3#t !<)rs!<3#r!<<''!<3'!!<<)t!<)rs!<3#r!<3#t!<3!!!<<#us8W&urVufrr;Q`spAb$jrr;rt rVuisrr;lrs8N'!rr3$"s8W&urr3!!s8E#ss8E#us8E!!rrE&urW)osr;ciss5sRcmu35*s7Yp] N;rn\mrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJrr2rur;Q`srr3'#s8N)urr<&urr<&srs&Q( rr<'!rrE&u!s&B$!<2uu!;HKn!;uis!<3!#!<<'!rr2rurr2ruqYpNqqu6WrrVlitrr3'#s8N)u rr<&nrr<&srr<&urrW9$rrE&u!!*#u!!)lq!!)ut!!*#u!s&B$!<2uu!<2uu!;lcr!;-9k!;uis !<3!#!<<'!rr2rurr2ruqu6]trrE&u!!*#u!s&B$!<2uu!;HKn!;uis!<3!#!<<'!rr2rurr2ru r;Z`rq>UNss8N)urr<&urr<&srr<&urr<&urr<&qrr<&prr<&trr<&lrr<&srr<&urrW9$rrE&u !!*#u!!)rsr;ccq!!)utrrE*!!s&B$!<3!'!<<'!rrE'!rVlitq>Ud%s8V9Fs6ko*s8Vf]s,@!X "RgF#Er^^~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFrr2rur;Q`srr3'#s8N)urr<&urr<&srs&Q( rr<'!rrE&u!s&B$!<2uu!;HKn!;uis!<3!#!<<'!rr2rurr2ruqYpNqqu6WrrVlitrr3'#s8N)u rr<&nrr<&srr<&urrW9$rrE&u!!*#u!!)lq!!)ut!!*#u!s&B$!<2uu!<2uu!;lcr!;-9k!;uis !<3!#!<<'!rr2rurr2ruqu6]trrE&u!!*#u!s&B$!<2uu!;HKn!;uis!<3!#!<<'!rr2rurr2ru r;Z`rq>UNss8N)urr<&urr<&srr<&urr<&urr<&qrr<&prr<&trr<&lrr<&srr<&urrW9$rrE&u !!*#u!!)rsr;ccq!!)utrrE*!!s&B$!<3!'!<<'!rrE'!rVlitq>Ud%s8V9Fs6ku.s8Vf]s,R-Z "RgL%FT?p~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJrr2rur;Q`srr3'#s8N)urr<&urr<&srs&Q( rr<'!rrE&u!s&B$!<2uu!;HKn!;uis!<3!#!<<'!rr2rurr2ruqYpNqqu6WrrVlitrr3'#s8N)u rr<&nrr<&srr<&urrW9$rrE&u!!*#u!!)lq!!)ut!!*#u!s&B$!<2uu!<2uu!;lcr!;-9k!;uis !<3!#!<<'!rr2rurr2ruqu6]trrE&u!!*#u!s&B$!<2uu!;HKn!;uis!<3!#!<<'!rr2rurr2ru r;Z`rq>UNss8N)urr<&urr<&srr<&urr<&urr<&qrr<&prr<&trr<&lrr<&srr<&urrW9$rrE&u !!*#u!!)rsr;ccq!!)utrrE*!!s&B$!<3!'!<<'!rrE'!rVlitq>Ud%s8V9Fs6ko*s8Vf]s,@!X "RgF#Er^^~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJrr2rur;ZZprr;rtrVlitr;Z]qrr2rurr33' s8N*!!<3&nrr<&ss82lrs8E#srr<&qrr<&rrr<&trr<&urrW9$rrE&u!!)cn!!)rsquH`rrW)os !!)lq!!)rsrW)rt!!*#u!!*#u!!)or!!)Zk!!)rsquH`rrW)os!!)rsquHcs!!*#u!!*#urW)Zl !!)rsquH`rrW)os!!)rs!W`6#r;Z]qs8N'!qYpNqr;Q`srr2rurr2ruqYpNqr;Z]qrVlitp&>!l r;ZZprr;rtrVlitr;Q`srr2rurVlitrVlitrr3'#s8N)urs&Q(rrE'!rrE#t!!)rsr;clts5sRc mu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFrr2rur;ZZprr;rtrVlitr;Z]qrr2rurr33' s8N*!!<3&nrr<&ss82lrs8E#srr<&qrr<&rrr<&trr<&urrW9$rrE&u!!)cn!!)rsquH`rrW)os !!)lq!!)rsrW)rt!!*#u!!*#u!!)or!!)Zk!!)rsquH`rrW)os!!)rsquHcs!!*#u!!*#urW)Zl !!)rsquH`rrW)os!!)rs!W`6#r;Z]qs8N'!qYpNqr;Q`srr2rurr2ruqYpNqr;Z]qrVlitp&>!l r;ZZprr;rtrVlitr;Q`srr2rurVlitrVlitrr3'#s8N)urs&Q(rrE'!rrE#t!!)rsr;clts5sRc muEG.s7Yp]NrT+^mre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJrr2rur;ZZprr;rtrVlitr;Z]qrr2rurr33' s8N*!!<3&nrr<&ss82lrs8E#srr<&qrr<&rrr<&trr<&urrW9$rrE&u!!)cn!!)rsquH`rrW)os !!)lq!!)rsrW)rt!!*#u!!*#u!!)or!!)Zk!!)rsquH`rrW)os!!)rsquHcs!!*#u!!*#urW)Zl !!)rsquH`rrW)os!!)rs!W`6#r;Z]qs8N'!qYpNqr;Q`srr2rurr2ruqYpNqr;Z]qrVlitp&>!l r;ZZprr;rtrVlitr;Q`srr2rurVlitrVlitrr3'#s8N)urs&Q(rrE'!rrE#t!!)rsr;clts5sRc mu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJrr2rur;Q`sp\t3nrr2rur;Q`squ6Wrrr33' s8N*!!<3&nrr<&srr<&nrr<&urr<&qrr<&rrr<&trr<&urrW9$rrE&u!!)cn!!)rs!!)cn!!*#u !!)lq!!)ip!s&B$!<2uu!<2uu!;lcr!;-9k!;uis!;HKn!<2uu!;uis!<3!#!<<'!rr2ruqu6Wr p\t3nr;Q`sp\t3nrr2rur;Q`squ6Wrrr3'#s8N)qrr<&srr<&urr<&urr<&qrr<&trr<&urr<&t rr<&lrr<&srr<&nrr<&urr<&srr<&urr<&trr<&trr<&urrW9$rrE&u#6=f(!<3'!!<)ot!<)ot !<3!*!<<)^kPt"0N;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFrr2rur;Q`sp\t3nrr2rur;Q`squ6Wrrr33' s8N*!!<3&nrr<&srr<&nrr<&urr<&qrr<&rrr<&trr<&urrW9$rrE&u!!)cn!!)rs!!)cn!!*#u !!)lq!!)ip!s&B$!<2uu!<2uu!;lcr!;-9k!;uis!;HKn!<2uu!;uis!<3!#!<<'!rr2ruqu6Wr p\t3nr;Q`sp\t3nrr2rur;Q`squ6Wrrr3'#s8N)qrr<&srr<&urr<&urr<&qrr<&trr<&urr<&t rr<&lrr<&srr<&nrr<&urr<&srr<&urr<&trr<&trr<&urrW9$rrE&u#6=f(!<3'!!<)ot!<)ot !<3!*!<<)^kPt"2NrT.Qn,JFJrrhe5mr\V\~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJrr2rur;Q`sp\t3nrr2rur;Q`squ6Wrrr33' s8N*!!<3&nrr<&srr<&nrr<&urr<&qrr<&rrr<&trr<&urrW9$rrE&u!!)cn!!)rs!!)cn!!*#u !!)lq!!)ip!s&B$!<2uu!<2uu!;lcr!;-9k!;uis!;HKn!<2uu!;uis!<3!#!<<'!rr2ruqu6Wr p\t3nr;Q`sp\t3nrr2rur;Q`squ6Wrrr3'#s8N)qrr<&srr<&urr<&urr<&qrr<&trr<&urr<&t rr<&lrr<&srr<&nrr<&urr<&srr<&urr<&trr<&trr<&urrW9$rrE&u#6=f(!<3'!!<)ot!<)ot !<3!*!<<)^kPt"0N;rqOn,J@Hrrhe3mrJJZ~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJrr2rurr3$"rrE&u!s&B$!<2uu!<2uu!<3!" !<3&rrr<&urr<&urrN3#!;?Em!<3!"!<3&urrW9$rrE&u!!*#u!!*#u!!*#u!!)or!!)ut!!*#u !s&B$!<2uu!;HKn!<3!"!<3&urrW9$rrE&u!!*#u!!*#u!!*#u!!)ut!!*#u!s&B$!<2uu!<2uu !;lcr!<2uu!;QQo!<3!"!<3&urrW9$rrE&u!!*#u!!*#u!W`6#rr3'#s8N)urrW9$rrE&u!!)cn !!*#u!W`6#rr3'#s8N)urr<&urr<&urrN3#!;lcr!<3!#!<<'!rr2rurr2rurr3$"rrE&u!!*#u !!)lq!!)ut!!*#u!!)ut!!)]l!!*#u!W`6#rr3'#s8N)urr<&urr<&urrN3#!<2uu!<)ot!<)ot !<3!#!<<'!rr33's8N*!!<3&trr<&trr<&ursAc+s6&SFmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFrr2rurr3$"rrE&u!s&B$!<2uu!<2uu!<3!" !<3&rrr<&urr<&urrN3#!;?Em!<3!"!<3&urrW9$rrE&u!!*#u!!*#u!!*#u!!)or!!)ut!!*#u !s&B$!<2uu!;HKn!<3!"!<3&urrW9$rrE&u!!*#u!!*#u!!*#u!!)ut!!*#u!s&B$!<2uu!<2uu !;lcr!<2uu!;QQo!<3!"!<3&urrW9$rrE&u!!*#u!!*#u!W`6#rr3'#s8N)urrW9$rrE&u!!)cn !!*#u!W`6#rr3'#s8N)urr<&urr<&urrN3#!;lcr!<3!#!<<'!rr2rurr2rurr3$"rrE&u!!*#u !!)lq!!)ut!!*#u!!)ut!!)]l!!*#u!W`6#rr3'#s8N)urr<&urr<&urrN3#!<2uu!<)ot!<)ot !<3!#!<<'!rr33's8N*!!<3&trr<&trr<&ursAc+s6&SFmuEG.s7Yp]NrT+^mre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJrr2rurr3$"rrE&u!s&B$!<2uu!<2uu!<3!" !<3&rrr<&urr<&urrN3#!;?Em!<3!"!<3&urrW9$rrE&u!!*#u!!*#u!!*#u!!)or!!)ut!!*#u !s&B$!<2uu!;HKn!<3!"!<3&urrW9$rrE&u!!*#u!!*#u!!*#u!!)ut!!*#u!s&B$!<2uu!<2uu !;lcr!<2uu!;QQo!<3!"!<3&urrW9$rrE&u!!*#u!!*#u!W`6#rr3'#s8N)urrW9$rrE&u!!)cn !!*#u!W`6#rr3'#s8N)urr<&urr<&urrN3#!;lcr!<3!#!<<'!rr2rurr2rurr3$"rrE&u!!*#u !!)lq!!)ut!!*#u!!)ut!!)]l!!*#u!W`6#rr3'#s8N)urr<&urr<&urrN3#!<2uu!<)ot!<)ot !<3!#!<<'!rr33's8N*!!<3&trr<&trr<&ursAc+s6&SFmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#rr;rts8W&u!ri6#JcC<$JcG!7s5sLamu34rn,NCin,JoJrVuisrr;rtrVuisr;Z`r !<;utr;Z`rrVlp!rrD`lrW)rtrW)osrW)lrrW)uuquHcsqZ-ZrrW)osr;cQkrW)rtrW)osrW)lr rW)uuquH`rrW)osr;cltr;ccqrW)ZlrW)rtrW)osrW)lrrVururVurur;ZitrW)osrW)WkrW)rt rW)osrW)lrrVurur;ccqrW!'#!<<)u!;ulr!<3#t!<3#s!<3#r!<3#t!!<0#s8)fjs8E#ts8E#s s8E#rs8Duus82lrs82iss8E#us8N*!s8E#us8N'&rrE'!!<;rsrr;rt$NC,+kNDm6N/[f:p@&$? s8N5jF74/MJ,~> "p"\lFoRo!rr;rts8W&u!ri6#JcC<$JcG!7s5sLamuEG!n,NCin,JiFrVuisrr;rtrVuisr;Z`r !<;utr;Z`rrVlp!rrD`lrW)rtrW)osrW)lrrW)uuquHcsqZ-ZrrW)osr;cQkrW)rtrW)osrW)lr rW)uuquH`rrW)osr;cltr;ccqrW)ZlrW)rtrW)osrW)lrrVururVurur;ZitrW)osrW)WkrW)rt rW)osrW)lrrVurur;ccqrW!'#!<<)u!;ulr!<3#t!<3#s!<3#r!<3#t!!<0#s8)fjs8E#ts8E#s s8E#rs8Duus82lrs82iss8E#us8N*!s8E#us8N'&rrE'!!<;rsrr;rt$NC,+kNDm6NfO/>p@&$A s8N5jFmjGQJ,~> "p"\lF8qc#rr;rts8W&u!ri6#JcC<$JcG!7s5sLamu34rn,NCin,JoJrVuisrr;rtrVuisr;Z`r !<;utr;Z`rrVlp!rrD`lrW)rtrW)osrW)lrrW)uuquHcsqZ-ZrrW)osr;cQkrW)rtrW)osrW)lr rW)uuquH`rrW)osr;cltr;ccqrW)ZlrW)rtrW)osrW)lrrVururVurur;ZitrW)osrW)WkrW)rt rW)osrW)lrrVurur;ccqrW!'#!<<)u!;ulr!<3#t!<3#s!<3#r!<3#t!!<0#s8)fjs8E#ts8E#s s8E#rs8Duus82lrs82iss8E#us8N*!s8E#us8N'&rrE'!!<;rsrr;rt$NC,+kNDm6N/[f:p@&$? s8N5jF74/MJ,~> #lt"oF8qc#s8N)urrrK'rrE*!!.k0$s+146s8V6as6ko*o'cVY"7Q8[S #lt"oFoRo!s8N)urrrK'rrE*!!.k0$s+146s8V6as6ku.o'cVY"7Q8YRZd[N!6Y #lt"oF8qc#s8N)urrrK'rrE*!!.k0$s+146s8V6as6ko*o'cVY"7Q8[S #lt"oF8qc#s8N)urriE&rrE'!mf37ds8W&u!<<#us8W&us8N*"s8E"Ls+135s8V6as6ko*o'cVY "7Q8[S #lt"oFoRo!s8N)urriE&rrE'!mf37ds8W&u!<<#us8W&us8N*"s8E"Ls+135s8V6as6ku.o'cVY "7Q8YRZd[N!6Y #lt"oF8qc#s8N)urriE&rrE'!mf37ds8W&u!<<#us8W&us8N*"s8E"Ls+135s8V6as6ko*o'cVY "7Q8[S #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr<&urrW9$rrE&u!s&B$!<3!'!<<'!!<<'!JcC<$PQ1[G "97hKN:QH;rr_`iS=GlErW(+@rW%NLK`D)8"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oFoRo!s8N)urr`?%rr<&qrr<&mrr<&urrW9$rrE&u!s&B$!<3!'!<<'!!<<'!JcC<$PQ1[G "97hMNq2Z=rr_`iR[TNArW(+@rW%NLK`D)8"on%ONrT.Qn,JFJrrhe5mr\V\~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr<&urrW9$rrE&u!s&B$!<3!'!<<'!!<<'!JcC<$PQ1[G "97hKN:QH;rr_`iS=GlErW(+@rW%NLK`D)8"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oF8qc#s8N)urrN3#s8E#es82lsrr<&urrN3#s82lsrr<&urr<%Ms+136s8V6as6ko*o'cVY "7Q8[S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urrN3#s8E#es82lsrr<&urrN3#s82lsrr<&urr<%Ms+136s8V6as6ku.o'cVY "7Q8YRXtKis+14)s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urrN3#s8E#es82lsrr<&urrN3#s82lsrr<&urr<%Ms+136s8V6as6ko*o'cVY "7Q8[S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!;c]s!<3&urr<&rrr<&urr<%Ms+136s8V6as6ko*o'cVY "7Q8[S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urrrK'rrE*!!:^!g!;c]s!<3&urr<&rrr<&urr<%Ms+136s8V6as6ku.o'cVY "7Q8YRXtKis+14)s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!;c]s!<3&urr<&rrr<&urr<%Ms+136s8V6as6ko*o'cVY "7Q8[S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh!!*#u!!*#urW)rt!!*#u!s&B$!<2uu!.k0$s-*K_k6(bQ N/[>rs8N2is.#U1s+13$s4dSRk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oFoRo!s8N)urrW9$rrE&u!!)Qh!!*#u!!*#urW)rt!!*#u!s&B$!<2uu!.k0$s-*K_k6(bQ NfN]!s8N2is-fC-s+13$s4dSRk6:nSNfO/>p@&$As8N5jFmjGQJ,~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh!!*#u!!*#urW)rt!!*#u!s&B$!<2uu!.k0$s-*K_k6(bQ N/[>rs8N2is.#U1s+13$s4dSRk6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup&G!kr;Q`sr;Z`rs8W&us8W*!JcC<$PlLdH"97hKN:QH; rr_`iS=G01JcC<$g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!rr;rts8W&us8W*!rr2rup&G!kr;Q`sr;Z`rs8W&us8W*!JcC<$PlLdH"97hMNq2Z= rr_`iR[Sg-JcC<$g].<:"on%ONrT.Qn,JFJrrhe5mr\V\~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup&G!kr;Q`sr;Z`rs8W&us8W*!JcC<$PlLdH"97hKN:QH; rr_`iS=G01JcC<$g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^mre)A !.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^mre)A !.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^mre)A !.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^mre)A !.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lF8qc#g&M'Pr;ZcsJcC<$N;rq@"97hKN:QH;rr_`iS=G01JcC<$g].<:"on%MN;rqOn,J@H rrhe3mrJJZ~> "p"\lFoRo!g&M'Pr;ZcsJcC<$N;rq@"97hMNq2Z=rr_`iR[Sg-JcC<$g].<:"on%ONrT.Qn,JFJ rrhe5mr\V\~> "p"\lF8qc#g&M'Pr;ZcsJcC<$N;rq@"97hKN:QH;rr_`iS=G01JcC<$g].<:"on%MN;rqOn,J@H rrhe3mrJJZ~> "p"\lF8qc#rr;rts8W&u!ri6#k5PD]qu6WrJcC<$N;rq@"97hKN:QH;rr_`iS=G01JcC<$g].<: "on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!rr;rts8W&u!ri6#k5PD]qu6WrJcC<$N;rq@"97hMNq2Z=rr_`iR[Sg-JcC<$g].<: "on%ONrT.Qn,JFJrrhe5mr\V\~> "p"\lF8qc#rr;rts8W&u!ri6#k5PD]qu6WrJcC<$N;rq@"97hKN:QH;rr_`iS=G01JcC<$g].<: "on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oF8qc#s8N)urrrK'rrE*!!9O4\!;lcr!.k0$s,@!Xk6(bQN/[>rs8N2is.#U1s+13$s4dSR k6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oFoRo!s8N)urrrK'rrE*!!9O4\!;lcr!.k0$s,@!Xk6(bQNfN]!s8N2is-fC-s+13$s4dSR k6:nSNfO/>p@&$As8N5jFmjGQJ,~> #lt"oF8qc#s8N)urrrK'rrE*!!9O4\!;lcr!.k0$s,@!Xk6(bQN/[>rs8N2is.#U1s+13$s4dSR k6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oF8qc#s8N)urriE&rrE'!mf37drVufrrr;osJcC<$N;rq@"97hKN:QH;rr_`iS=G01JcC<$ g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oFoRo!s8N)urriE&rrE'!mf37drVufrrr;osJcC<$N;rq@"97hMNq2Z=rr_`iR[Sg-JcC<$ g].<:"on%ONrT.Qn,JFJrrhe5mr\V\~> #lt"oF8qc#s8N)urriE&rrE'!mf37drVufrrr;osJcC<$N;rq@"97hKN:QH;rr_`iS=G01JcC<$ g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr<&urrW9$rrE&u!s&B$!<2uu!.k0$s,@!Xk6(bQN/[>r s8N2is.#U1s+13$s4dSRk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oFoRo!s8N)urr`?%rr<&qrr<&mrr<&urrW9$rrE&u!s&B$!<2uu!.k0$s,@!Xk6(bQNfN]! s8N2is-fC-s+13$s4dSRk6:nSNfO/>p@&$As8N5jFmjGQJ,~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr<&urrW9$rrE&u!s&B$!<2uu!.k0$s,@!Xk6(bQN/[>r s8N2is.#U1s+13$s4dSRk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oF8qc#s8N)urrN3#s8E#err<&urrW9$rrE&u!s&B$!<2uu!.k0$s,@!Xk6(bQN/[>rs8N2i s.#U1s+13$s4dSRk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oFoRo!s8N)urrN3#s8E#err<&urrW9$rrE&u!s&B$!<2uu!.k0$s,@!Xk6(bQNfN]!s8N2i s-fC-s+13$s4dSRk6:nSNfO/>p@&$As8N5jFmjGQJ,~> #lt"oF8qc#s8N)urrN3#s8E#err<&urrW9$rrE&u!s&B$!<2uu!.k0$s,@!Xk6(bQN/[>rs8N2i s.#U1s+13$s4dSRk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!<3!#!<<'!rr3'#s8N)urr<%Ms+13/s8V6as6ko*o'cVY "7Q8[SEKqP!<)ot!8%8N!;QTn!5ng:!.k0$s7?9jk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oFoRo!s8N)urrrK'rrE*!!:^!g!<3!#!<<'!rr3'#s8N)urr<%Ms+13/s8V6as6ku.o'cVY "7Q8YRcj_N!<)ot!8%8N!;QTn!5ng:!.k0$s7?9jk6:nSNfO/>p@&$As8N5jFmjGQJ,~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!<3!#!<<'!rr3'#s8N)urr<%Ms+13/s8V6as6ko*o'cVY "7Q8[SEKqP!<)ot!8%8N!;QTn!5ng:!.k0$s7?9jk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh!!*#u!s&B$!<3!#!<<'!rr2ruJcC<$N;rq@"97hKN:QH; rrhfjS=KWY!:'Ra!7CfH!;?Em!:Kjg!<3&trr<&drr<&ts8E#crr<&rrrN3#!.k0,s8V6cs6ko* s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urrW9$rrE&u!!)Qh!!*#u!s&B$!<3!#!<<'!rr2ruJcC<$N;rq@"97hMNq2Z= rrhfjR[X9U!:'Ra!7CfH!;?Em!:Kjg!<3&trr<&drr<&ts8E#crr<&rrrN3#!.k0,s8V6cs6ku. s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh!!*#u!s&B$!<3!#!<<'!rr2ruJcC<$N;rq@"97hKN:QH; rrhfjS=KWY!:'Ra!7CfH!;?Em!:Kjg!<3&trr<&drr<&ts8E#crr<&rrrN3#!.k0,s8V6cs6ko* s8Vf]s,@!X"RgF#Er^^~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup&G!krVuis"9/B$s8E!!rr@WMJcC`0s5sLamu34rn,NCl n,JoJs8N)`rr<&Hrr<&mrr<&errN3#!<)ot!:Bdd!;uis!:9^c!;lct!<3%Ms,$dUk6:nSN/[f: p@&$?s8N5jF74/MJ,~> "p"\lFoRo!rr;rts8W&us8W*!rr2rup&G!krVuis"9/B$s8E!!rr@WMJcC`0s5sLamuEG!n,NCl n,JiFs8N)`rr<&Hrr<&mrr<&errN3#!<)ot!:Bdd!;uis!:9^c!;lct!<3%Ms,$dUk6:nSNfO/> p@&$As8N5jFmjGQJ,~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup&G!krVuis"9/B$s8E!!rr@WMJcC`0s5sLamu34rn,NCl n,JoJs8N)`rr<&Hrr<&mrr<&errN3#!<)ot!:Bdd!;uis!:9^c!;lct!<3%Ms,$dUk6:nSN/[f: p@&$?s8N5jF74/MJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)qs8E#ts8;rrs8;rts8E#trrE-"rW)os rW!!!!;c`p!!3*"rVuisrVufr#6+Z's8N'!rVlitr;Z`rpAY0orrE&uquH`rrW)osrW)rtquHcs !!)orrW)lrrW)rtquH`r!W`6#JcCT,s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCln,JiFs8N)qs8E#ts8;rrs8;rts8E#trrE-"rW)os rW!!!!;c`p!!3*"rVuisrVufr#6+Z's8N'!rVlitr;Z`rpAY0orrE&uquH`rrW)osrW)rtquHcs !!)orrW)lrrW)rtquH`r!W`6#JcCT,s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)qs8E#ts8;rrs8;rts8E#trrE-"rW)os rW!!!!;c`p!!3*"rVuisrVufr#6+Z's8N'!rVlitr;Z`rpAY0orrE&uquH`rrW)osrW)rtquHcs !!)orrW)lrrW)rtquH`r!W`6#JcCT,s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)rrr<&urr<&rrrW9$rrE&u!!)ut!!)ut rrE*!!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut!!)ut!!*#u!!)Ng!!)rs !!*#u!s&B$!<2uu!<2uu!;uis!;ZWp!<)ot!<2uu!<2uu!.k0$rs8YfkPt"0N;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCln,JiFs8N)rrr<&urr<&rrrW9$rrE&u!!)ut!!)ut rrE*!!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut!!)ut!!*#u!!)Ng!!)rs !!*#u!s&B$!<2uu!<2uu!;uis!;ZWp!<)ot!<2uu!<2uu!.k0$rs8YfkPt"2NrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)rrr<&urr<&rrrW9$rrE&u!!)ut!!)ut rrE*!!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut!!)ut!!*#u!!)Ng!!)rs !!*#u!s&B$!<2uu!<2uu!;uis!;ZWp!<)ot!<2uu!<2uu!.k0$rs8YfkPt"0N;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)rrr<&urr<&us8;rtrr<&urr<&trr<&t rr<&urrW9$rrE&u!!)fo#6=c(rrE*!!<3!#!<<'!rr3'#s8N)urr<&trr<&ts82ldrr<&ss82lr s8E#srr<&srr<&prr<&ss8E#srr<%Ms+11Us6&SFmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCln,JiFs8N)rrr<&urr<&us8;rtrr<&urr<&trr<&t rr<&urrW9$rrE&u!!)fo#6=c(rrE*!!<3!#!<<'!rr3'#s8N)urr<&trr<&ts82ldrr<&ss82lr s8E#srr<&srr<&prr<&ss8E#srr<%Ms+11Us6&SFmuEG.s7Yp]NrT+^mre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)rrr<&urr<&us8;rtrr<&urr<&trr<&t rr<&urrW9$rrE&u!!)fo#6=c(rrE*!!<3!#!<<'!rr3'#s8N)urr<&trr<&ts82ldrr<&ss82lr s8E#srr<&srr<&prr<&ss8E#srr<%Ms+11Us6&SFmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)urrW9$rrE&u!s&B$!<3!#!<<'!rr2ru rVlitrVlitrr3'#s8N)urr<&ors&Q(!<3'!rrE&u!s&B$!<3!#!<<'!rr2rurVlitrVlitm/I%c r;Q`sp\t3nrr2rur;Q`srr2rurVlitq>UEprr2ruJcC<$#lj)Ns6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCln,JiFs8N)urrW9$rrE&u!s&B$!<3!#!<<'!rr2ru rVlitrVlitrr3'#s8N)urr<&ors&Q(!<3'!rrE&u!s&B$!<3!#!<<'!rr2rurVlitrVlitm/I%c r;Q`sp\t3nrr2rur;Q`srr2rurVlitq>UEprr2ruJcC<$#lj)Ns6ku.s8Vf]s,R-Z"RgL%FT?p~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)urrW9$rrE&u!s&B$!<3!#!<<'!rr2ru rVlitrVlitrr3'#s8N)urr<&ors&Q(!<3'!rrE&u!s&B$!<3!#!<<'!rr2rurVlitrVlitm/I%c r;Q`sp\t3nrr2rur;Q`srr2rurVlitq>UEprr2ruJcC<$#lj)Ns6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)urrW9$rrE&u!s&B$!<3!#!<<'!rr2ru rVlitrVlitrr3'#s8N)urr<&ors&Q(!<3'!rrE&u!s&B$!<3!#!<<'!rr2rurVlitrVlitrr2ru nG`Igrr3$"rrE&u!s&B$!<2uu!<2uu!<3!"!<3&urr<&trr<&trr<&urr<&urr<&urr<%Ms+LFP k6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCln,JiFs8N)urrW9$rrE&u!s&B$!<3!#!<<'!rr2ru rVlitrVlitrr3'#s8N)urr<&ors&Q(!<3'!rrE&u!s&B$!<3!#!<<'!rr2rurVlitrVlitrr2ru nG`Igrr3$"rrE&u!s&B$!<2uu!<2uu!<3!"!<3&urr<&trr<&trr<&urr<&urr<&urr<%Ms+LFP k6:nSNfO/>p@&$As8N5jFmjGQJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)urrW9$rrE&u!s&B$!<3!#!<<'!rr2ru rVlitrVlitrr3'#s8N)urr<&ors&Q(!<3'!rrE&u!s&B$!<3!#!<<'!rr2rurVlitrVlitrr2ru nG`Igrr3$"rrE&u!s&B$!<2uu!<2uu!<3!"!<3&urr<&trr<&trr<&urr<&urr<&urr<%Ms+LFP k6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCjn,JoJs8)fqs8E#ss8E!#rrE*!rW!$"!<;rs!<<#u s8W*!s8W#tq>^Hp#6+]'!!*'!rW)osrW!'#!<<)u!!<0#s8)frs8E#ds8E#ts8E#ss8E#rs8Duu s8)frs82lrs8E#rs8E#mrr<&rrr<&rrr<%Ms.',hk6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCjn,JiFs8)fqs8E#ss8E!#rrE*!rW!$"!<;rs!<<#u s8W*!s8W#tq>^Hp#6+]'!!*'!rW)osrW!'#!<<)u!!<0#s8)frs8E#ds8E#ts8E#ss8E#rs8Duu s8)frs82lrs8E#rs8E#mrr<&rrr<&rrr<%Ms.',hk6:nSNfO/>p@&$As8N5jFmjGQJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCjn,JoJs8)fqs8E#ss8E!#rrE*!rW!$"!<;rs!<<#u s8W*!s8W#tq>^Hp#6+]'!!*'!rW)osrW!'#!<<)u!!<0#s8)frs8E#ds8E#ts8E#ss8E#rs8Duu s8)frs82lrs8E#rs8E#mrr<&rrr<&rrr<%Ms.',hk6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJdJj1HJcC<$N;rq@"on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFdJj1HJcC<$N;rq@"on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJdJj1HJcC<$N;rq@"on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJdJj1HJcC<$N;rq@"on%MN;rqOn,J@Hrrhe3 mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFdJj1HJcC<$N;rq@"on%ONrT.Qn,JFJrrhe5 mr\V\~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJdJj1HJcC<$N;rq@"on%MN;rqOn,J@Hrrhe3 mrJJZ~> #QXnnF8qc#s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8W,^"97hKN:QH;rr_`iS=J+/rW%NLJcCZ.s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> #QXnnFoRo!s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8W,^"97hMNq2Z=rr_`iR[Vb+rW%NLJcCZ.s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> #QXnnF8qc#s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8W,^"97hKN:QH;rr_`iS=J+/rW%NLJcCZ.s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCin,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^mre)A !.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCin,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr= !.Y~> #QXnnF8qc#s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8W,^"97hKN:QH;rr_`iS=Ie&rrCjSrW)0^rW(@GrW(pW!!%TMX8i4_"on%MN;rqO n,J@Hrrhe3mrJJZ~> #QXnnFoRo!s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8W,^"97hMNq2Z=rr_`iR[VG"rrCjSrW)0^rW(@GrW(pW!!%TMX8i4_"on%ONrT.Q n,JFJrrhe5mr\V\~> #QXnnF8qc#s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vuss8Vus s8Vuss8Vuss8W,^"97hKN:QH;rr_`iS=Ie&rrCjSrW)0^rW(@GrW(pW!!%TMX8i4_"on%MN;rqO n,J@Hrrhe3mrJJZ~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCjn,JoJs8)fUrr<&hrr<&nrr<&\rr<&]rr<&lrr<&d rr<&krr<&]rr<%Ms.fVok6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCjn,JiFs8)fUrr<&hrr<&nrr<&\rr<&]rr<&lrr<&d rr<&krr<&]rr<%Ms.fVok6:nSNfO/>p@&$As8N5jFmjGQJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCjn,JoJs8)fUrr<&hrr<&nrr<&\rr<&]rr<&lrr<&d rr<&krr<&]rr<%Ms.fVok6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)urr<&Yrr<&hrr<&nrr<&\rr<&]rr<&l rr<&drr<&krr<&]rr<%Ms.fVok6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG!n,NCln,JiFs8N)urr<&Yrr<&hrr<&nrr<&\rr<&]rr<&l rr<&drr<&krr<&]rr<%Ms.fVok6:nSNfO/>p@&$As8N5jFmjGQJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34rn,NCln,JoJs8N)urr<&Yrr<&hrr<&nrr<&\rr<&]rr<&l rr<&drr<&krr<&]rr<%Ms.fVok6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lF8qc#JcC<$JcFL)s5sLamu34prs8)nS=KWZ!<3&us8Duus8;ots8E#ss8E#trrE-"rW)uu quH`rrW)osr;cWmquH`rrW)uu! "p"\lFoRo!JcC<$JcFL)s5sLamuEFtrs8)nR[X9V!<3&us8Duus8;ots8E#ss8E#trrE-"rW)uu quH`rrW)osr;cWmquH`rrW)uu! "p"\lF8qc#JcC<$JcFL)s5sLamu34prs8)nS=KWZ!<3&us8Duus8;ots8E#ss8E#trrE-"rW)uu quH`rrW)osr;cWmquH`rrW)uu! "p"\lF8qc#JcC<$JcFL)s5sLamu34srs4S`s6ouXSH&Wg!;uiu!<3&urr<&urrW9$rrE&u!!*#u !!)or!!)rs!!*#u!s&B$!<2uu!;HKn!;uis!<3!#!<<'!rr2rupAY*mrVlitrr3'#s8N)urrW9$ rrE&u!!)ut!!)]l!!)rs!!*#u!s&B$!<2uu!<2uu!;-9k!;uis!<3!*!<<'!!<<'!s8N)urr<&u rr<&qrr<&trr<&ursAc+rr<'!rrE*!!<2uu!<)ot!.k0js8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG"rs4Ybs6ouVRfEEe!;uiu!<3&urr<&urrW9$rrE&u!!*#u !!)or!!)rs!!*#u!s&B$!<2uu!;HKn!;uis!<3!#!<<'!rr2rupAY*mrVlitrr3'#s8N)urrW9$ rrE&u!!)ut!!)]l!!)rs!!*#u!s&B$!<2uu!<2uu!;-9k!;uis!<3!*!<<'!!<<'!s8N)urr<&u rr<&qrr<&trr<&ursAc+rr<'!rrE*!!<2uu!<)ot!.k0js8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> "p"\lF8qc#JcC<$JcFL)s5sLamu34srs4S`s6ouXSH&Wg!;uiu!<3&urr<&urrW9$rrE&u!!*#u !!)or!!)rs!!*#u!s&B$!<2uu!;HKn!;uis!<3!#!<<'!rr2rupAY*mrVlitrr3'#s8N)urrW9$ rrE&u!!)ut!!)]l!!)rs!!*#u!s&B$!<2uu!<2uu!;-9k!;uis!<3!*!<<'!!<<'!s8N)urr<&u rr<&qrr<&trr<&ursAc+rr<'!rrE*!!<2uu!<)ot!.k0js8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn`n,JoJs8N*!!;lcr!<)ot!<3!#!<<'!rr2ru rr2ruqu6Wrr;ZZps8N'!rr2rup\t3nr;Q`srr3'#s8N)urrN3#s82lqrr<&ts82lsrr<&urrN3# s82lqrr<&lrr<&ss82lrs8E#srr<&krr<&srr<&urrW9$rrE&u!s&B$!;c]q!;c]q!<)ot!<3!# !<<'!rr2rurr;rtJcERds5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+bn,JiFs8N*!!;lcr!<)ot!<3!#!<<'!rr2ru rr2ruqu6Wrr;ZZps8N'!rr2rup\t3nr;Q`srr3'#s8N)urrN3#s82lqrr<&ts82lsrr<&urrN3# s82lqrr<&lrr<&ss82lrs8E#srr<&krr<&srr<&urrW9$rrE&u!s&B$!;c]q!;c]q!<)ot!<3!# !<<'!rr2rurr;rtJcERds5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn`n,JoJs8N*!!;lcr!<)ot!<3!#!<<'!rr2ru rr2ruqu6Wrr;ZZps8N'!rr2rup\t3nr;Q`srr3'#s8N)urrN3#s82lqrr<&ts82lsrr<&urrN3# s82lqrr<&lrr<&ss82lrs8E#srr<&krr<&srr<&urrW9$rrE&u!s&B$!;c]q!;c]q!<)ot!<3!# !<<'!rr2rurr;rtJcERds5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn^n,JoJs8N)qrrN3#!<2uu!<3!#!<<'!rr2ru rr2ruqu6Wrr;Q`squ6Wrrr2rup\t3nr;Q`srr3'#s8N)urr<&mrr<&trr<&qrrN3#!<2uu!;ZWp !;6?l!;uis!;HKn!<2uu!;-9k!;uis!<3!#!<<'!rr3'#s8N)qrr<&qrr<&trr<&urrW9$rrE&u !!)or!!%TM_Z0Z!"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+`n,JiFs8N)qrrN3#!<2uu!<3!#!<<'!rr2ru rr2ruqu6Wrr;Q`squ6Wrrr2rup\t3nr;Q`srr3'#s8N)urr<&mrr<&trr<&qrrN3#!<2uu!;ZWp !;6?l!;uis!;HKn!<2uu!;-9k!;uis!<3!#!<<'!rr3'#s8N)qrr<&qrr<&trr<&urrW9$rrE&u !!)or!!%TM_Z0Z!"on%ONrT.Qn,JFJrrhe5mr\V\~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn^n,JoJs8N)qrrN3#!<2uu!<3!#!<<'!rr2ru rr2ruqu6Wrr;Q`squ6Wrrr2rup\t3nr;Q`srr3'#s8N)urr<&mrr<&trr<&qrrN3#!<2uu!;ZWp !;6?l!;uis!;HKn!<2uu!;-9k!;uis!<3!#!<<'!rr3'#s8N)qrr<&qrr<&trr<&urrW9$rrE&u !!)or!!%TM_Z0Z!"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lF8qc#iVrlXfDkjNq#C!lrr3$"rrE&u!s&B$!<2uu!<2uu!<2uu !;QQo!;uis!<3!#!<<'!rr3'#s8N)urr<&urr<&urr<&urr<&trr<&urrW9$rrE&u!s&B$!<2uu !.k0es8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!iVrlXfDkjNq#C!lrr3$"rrE&u!s&B$!<2uu!<2uu!<2uu !;QQo!;uis!<3!#!<<'!rr3'#s8N)urr<&urr<&urr<&urr<&trr<&urrW9$rrE&u!s&B$!<2uu !.k0es8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> "p"\lF8qc#iVrlXfDkjNq#C!lrr3$"rrE&u!s&B$!<2uu!<2uu!<2uu !;QQo!;uis!<3!#!<<'!rr3'#s8N)urr<&urr<&urr<&urr<&trr<&urrW9$rrE&u!s&B$!<2uu !.k0es8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #6=emF8qc#s7u`crr<&Err<&mrr<&^rr<&drr<&ts8E#crr<%Ms+11Us6&SFmu35*s7Yp]N;rn\ n,JoJs8)ctrr<&us8N'!s8;rrs8E#ts8;rqs8E#ts8E#ss8E!!rrDfnrW)rtrW)rtr;cTlqZ-Zr rW)lr!!)rsrW)rtqZ-BjrW)rtrW)osrW)lrrW)`nr;cfrrVurur;cltrrE*!rW)lrrW)uuquH`r rW)uurW)uurrE*!rW)lr!!%TMa8c2&"on%MN;rqOn,J@Hrrhe3mrJJZ~> #6=emFoRo!s7u`crr<&Err<&mrr<&^rr<&drr<&ts8E#crr<%Ms+11Us6&SFmuEG.s7Yp]NrT+^ n,JiFs8)ctrr<&us8N'!s8;rrs8E#ts8;rqs8E#ts8E#ss8E!!rrDfnrW)rtrW)rtr;cTlqZ-Zr rW)lr!!)rsrW)rtqZ-BjrW)rtrW)osrW)lrrW)`nr;cfrrVurur;cltrrE*!rW)lrrW)uuquH`r rW)uurW)uurrE*!rW)lr!!%TMa8c2&"on%ONrT.Qn,JFJrrhe5mr\V\~> #6=emF8qc#s7u`crr<&Err<&mrr<&^rr<&drr<&ts8E#crr<%Ms+11Us6&SFmu35*s7Yp]N;rn\ n,JoJs8)ctrr<&us8N'!s8;rrs8E#ts8;rqs8E#ts8E#ss8E!!rrDfnrW)rtrW)rtr;cTlqZ-Zr rW)lr!!)rsrW)rtqZ-BjrW)rtrW)osrW)lrrW)`nr;cfrrVurur;cltrrE*!rW)lrrW)uuquH`r rW)uurW)uurrE*!rW)lr!!%TMa8c2&"on%MN;rqOn,J@Hrrhe3mrJJZ~> %KQOtF8qc#rrE*!!<<'!nc&RhcMmkEpAY*mkPkM^mJd.dr;Q`sm/I%cJcC<$#lj)Ns6ko*s8Vf] s,@!X"7Q8[SFQUZ!5ng:!.k0$s/Z2"k6:nSN/[f:p@&$?s8N5jF74/MJ,~> %KQOtFoRo!rrE*!!<<'!nc&RhcMmkEpAY*mkPkM^mJd.dr;Q`sm/I%cJcC<$#lj)Ns6ku.s8Vf] s,R-Z"7Q8YRdpCX!5ng:!.k0$s/Z2"k6:nSNfO/>p@&$As8N5jFmjGQJ,~> %KQOtF8qc#rrE*!!<<'!nc&RhcMmkEpAY*mkPkM^mJd.dr;Q`sm/I%cJcC<$#lj)Ns6ko*s8Vf] s,@!X"7Q8[SFQUZ!5ng:!.k0$s/Z2"k6:nSN/[f:p@&$?s8N5jF74/MJ,~> &-2b!F8qc#rrE*!!<<'!s8W&urVuisrr;lrs8W&urr3!!s8E#ss8E!!rrDoqrW!!!!<)rs!<)rr !!`H'!<<'!!<)ot!;ulr!:^$d!<3#t!<)rs!<3#r!<<'!!;lfq!;ulr!<3#r!.k0&s8V6cs6ko* s8Vf]s,@!X"7Q8[SFQUZ!5ng:!.k0$s/Z2"k6:nSN/[f:p@&$?s8N5jF74/MJ,~> &-2b!FoRo!rrE*!!<<'!s8W&urVuisrr;lrs8W&urr3!!s8E#ss8E!!rrDoqrW!!!!<)rs!<)rr !!`H'!<<'!!<)ot!;ulr!:^$d!<3#t!<)rs!<3#r!<<'!!;lfq!;ulr!<3#r!.k0&s8V6cs6ku. s8Vf]s,R-Z"7Q8YRdpCX!5ng:!.k0$s/Z2"k6:nSNfO/>p@&$As8N5jFmjGQJ,~> &-2b!F8qc#rrE*!!<<'!s8W&urVuisrr;lrs8W&urr3!!s8E#ss8E!!rrDoqrW!!!!<)rs!<)rr !!`H'!<<'!!<)ot!;ulr!:^$d!<3#t!<)rs!<3#r!<<'!!;lfq!;ulr!<3#r!.k0&s8V6cs6ko* s8Vf]s,@!X"7Q8[SFQUZ!5ng:!.k0$s/Z2"k6:nSN/[f:p@&$?s8N5jF74/MJ,~> "p"\lF8qc#rVlitrVlitrr3'#s8N)urr<&urr<&qrr<&ts8N*!rrW9$rrE&u!!)fo#6=c(rrE*! !<3!#!<<'!rr3'#s8N)urr<&trr<&trr<&urr<&trr<&lrr<&srr<&urrW9$rrE&u!!*#u!!)rs !!)ip!!)ut!!*#u!!*#u!!%TMJc?#UkNDm6N/[f:p@&$?s8N2is.#VMs8E#;s8E"Ls+13Os8V6c s6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!rVlitrVlitrr3'#s8N)urr<&urr<&qrr<&ts8N*!rrW9$rrE&u!!)fo#6=c(rrE*! !<3!#!<<'!rr3'#s8N)urr<&trr<&trr<&urr<&trr<&lrr<&srr<&urrW9$rrE&u!!*#u!!)rs !!)ip!!)ut!!*#u!!*#u!!%TMJc?#UkNDm6NfO/>p@&$As8N2is-fDIs8E#;s8E"Ls+13Os8V6c s6ku.s8Vf]s,R-Z"RgL%FT?p~> "p"\lF8qc#rVlitrVlitrr3'#s8N)urr<&urr<&qrr<&ts8N*!rrW9$rrE&u!!)fo#6=c(rrE*! !<3!#!<<'!rr3'#s8N)urr<&trr<&trr<&urr<&trr<&lrr<&srr<&urrW9$rrE&u!!*#u!!)rs !!)ip!!)ut!!*#u!!*#u!!%TMJc?#UkNDm6N/[f:p@&$?s8N2is.#VMs8E#;s8E"Ls+13Os8V6c s6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lF8qc#rVlitrVucqrr;rtrVlitqYpNqrVlitrr3'#s8N)urr<&ors&Q(!<3'!rrE&u!s&B$ !<3!#!<<'!rr2rurVlitrVucqnG`Igr;ZZprr;rtrVlitr;Q`sq>UEpr;Z`rrVlitJcC<$#lj)N s6ko*s8Vf]s,@!X"7Q8[S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!rVlitrVucqrr;rtrVlitqYpNqrVlitrr3'#s8N)urr<&ors&Q(!<3'!rrE&u!s&B$ !<3!#!<<'!rr2rurVlitrVucqnG`Igr;ZZprr;rtrVlitr;Q`sq>UEpr;Z`rrVlitJcC<$#lj)N s6ku.s8Vf]s,R-Z"7Q8YRXtKis+14)s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> "p"\lF8qc#rVlitrVucqrr;rtrVlitqYpNqrVlitrr3'#s8N)urr<&ors&Q(!<3'!rrE&u!s&B$ !<3!#!<<'!rr2rurVlitrVucqnG`Igr;ZZprr;rtrVlitr;Q`sq>UEpr;Z`rrVlitJcC<$#lj)N s6ko*s8Vf]s,@!X"7Q8[S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lF8qc#rVlitrVlitp\t3nrr2ruqYpNqrVlitrr3'#s8N)urr<&ors&Q(!<3'!rrE&u!s&B$ !<3!#!<<'!rr2rurVlitrVlitm/I%cr;Q`sp\t3nrr2rur;Q`srr2rurVlitq>UEprr2ruJcC<$ #lj)Ns6ko*s8Vf]s,@!X"7Q8[SDjJJ!87DO!8@JP!.k0$s3^lHk6:nSN/[f:p@&$?s8N5jF74/M J,~> "p"\lFoRo!rVlitrVlitp\t3nrr2ruqYpNqrVlitrr3'#s8N)urr<&ors&Q(!<3'!rrE&u!s&B$ !<3!#!<<'!rr2rurVlitrVlitm/I%cr;Q`sp\t3nrr2rur;Q`srr2rurVlitq>UEprr2ruJcC<$ #lj)Ns6ku.s8Vf]s,R-Z"7Q8YRc48H!87DO!8@JP!.k0$s3^lHk6:nSNfO/>p@&$As8N5jFmjGQ J,~> "p"\lF8qc#rVlitrVlitp\t3nrr2ruqYpNqrVlitrr3'#s8N)urr<&ors&Q(!<3'!rrE&u!s&B$ !<3!#!<<'!rr2rurVlitrVlitm/I%cr;Q`sp\t3nrr2rur;Q`srr2rurVlitq>UEprr2ruJcC<$ #lj)Ns6ko*s8Vf]s,@!X"7Q8[SDjJJ!87DO!8@JP!.k0$s3^lHk6:nSN/[f:p@&$?s8N5jF74/M J,~> "p"\lF8qc#rVlitrVlitrr3'#s8N)urr<&urr<&urr<&urr<&trr<&urrW9$rrE&u!!)fo#6=c( rrE*!!<3!#!<<'!rr3'#s8N)urr<&trr<&trr<&urr<&grr<&urrN3#!<3!#!<<'!rr2rurr2ru rr3$"rrE&u!!)ut!!)ut!!*#u!!*#u!!*#u!!%TMK`D)8"on%MN;rqOn,J@Hrr_`iS=KTY!!)Ed !!)rsrW)Wk!!)Ed!!)rs!!*#u!!)cn!!)Ed!!)rs!!*#u!!%TMJcF0us5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lFoRo!rVlitrVlitrr3'#s8N)urr<&urr<&urr<&urr<&trr<&urrW9$rrE&u!!)fo#6=c( rrE*!!<3!#!<<'!rr3'#s8N)urr<&trr<&trr<&urr<&grr<&urrN3#!<3!#!<<'!rr2rurr2ru rr3$"rrE&u!!)ut!!)ut!!*#u!!*#u!!*#u!!%TMK`D)8"on%ONrT.Qn,JFJrr_`iR[X6U!!)Ed !!)rsrW)Wk!!)Ed!!)rs!!*#u!!)cn!!)Ed!!)rs!!*#u!!%TMJcF0us5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "p"\lF8qc#rVlitrVlitrr3'#s8N)urr<&urr<&urr<&urr<&trr<&urrW9$rrE&u!!)fo#6=c( rrE*!!<3!#!<<'!rr3'#s8N)urr<&trr<&trr<&urr<&grr<&urrN3#!<3!#!<<'!rr2rurr2ru rr3$"rrE&u!!)ut!!)ut!!*#u!!*#u!!*#u!!%TMK`D)8"on%MN;rqOn,J@Hrr_`iS=KTY!!)Ed !!)rsrW)Wk!!)Ed!!)rs!!*#u!!)cn!!)Ed!!)rs!!*#u!!%TMJcF0us5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> #QXnnF8qc#s8Vusrr;rtrVuisr;Z`rs8Vus!<<#us8W*!s8W#tq>^Hp#6+]'!!*'!rW)osrW!'# !<<)u!!<0#s8)frs8E#rrr<&ks8E#ts8E#ss8E#rs8Duus8)frs82lrs8E#rs8E"Ls+C@Ok6:nS N/[f:p@&$?s8N2is.#VYrr<&drr<&qrr<&lrr<&drr<&srr<&urr<&nrr<&drr<&orr<%Ms+13u s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #QXnnFoRo!s8Vusrr;rtrVuisr;Z`rs8Vus!<<#us8W*!s8W#tq>^Hp#6+]'!!*'!rW)osrW!'# !<<)u!!<0#s8)frs8E#rrr<&ks8E#ts8E#ss8E#rs8Duus8)frs82lrs8E#rs8E"Ls+C@Ok6:nS NfO/>p@&$As8N2is-fDUrr<&drr<&qrr<&lrr<&drr<&srr<&urr<&nrr<&drr<&orr<%Ms+13u s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #QXnnF8qc#s8Vusrr;rtrVuisr;Z`rs8Vus!<<#us8W*!s8W#tq>^Hp#6+]'!!*'!rW)osrW!'# !<<)u!!<0#s8)frs8E#rrr<&ks8E#ts8E#ss8E#rs8Duus8)frs82lrs8E#rs8E"Ls+C@Ok6:nS N/[f:p@&$?s8N2is.#VYrr<&drr<&qrr<&lrr<&drr<&srr<&urr<&nrr<&drr<&orr<%Ms+13u s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lF8qc#dJj1HJcC<$N;rq@"on%MN;rqOn,J@HrrqlkS=KWZquH`rrW)osrW)rtquH]q!!)`m quH`rrW)osrW)rtquHcs!!*#u!!)foquH`rrW)osrW)rtquHWo!!%TMJcF0us5sRcmu35*s7Yp] N;rn\mrRr=!.Y~> "p"\lFoRo!dJj1HJcC<$N;rq@"on%ONrT.Qn,JFJrrqlkR[X9VquH`rrW)osrW)rtquH]q!!)`m quH`rrW)osrW)rtquHcs!!*#u!!)foquH`rrW)osrW)rtquHWo!!%TMJcF0us5sRcmuEG.s7Yp] NrT+^mre)A!.Y~> "p"\lF8qc#dJj1HJcC<$N;rq@"on%MN;rqOn,J@HrrqlkS=KWZquH`rrW)osrW)rtquH]q!!)`m quH`rrW)osrW)rtquHcs!!*#u!!)foquH`rrW)osrW)rtquHWo!!%TMJcF0us5sRcmu35*s7Yp] N;rn\mrRr=!.Y~> "p"\lF8qc#dJj1HJcC<$N;rq@"on%MN;rqOn,J@Hrr_`iS=KTY!!)rs!!*#u!s&B$!<2uu!<2uu !;c]q!;6?l!;uis!<3!#!<<'!rr2rurr2ruq>UEppAY*mr;Q`srr3'#s8N)urr<&urr<&qs8N(M s+13ts8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!dJj1HJcC<$N;rq@"on%ONrT.Qn,JFJrr_`iR[X6U!!)rs!!*#u!s&B$!<2uu!<2uu !;c]q!;6?l!;uis!<3!#!<<'!rr2rurr2ruq>UEppAY*mr;Q`srr3'#s8N)urr<&urr<&qs8N(M s+13ts8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> "p"\lF8qc#dJj1HJcC<$N;rq@"on%MN;rqOn,J@Hrr_`iS=KTY!!)rs!!*#u!s&B$!<2uu!<2uu !;c]q!;6?l!;uis!<3!#!<<'!rr2rurr2ruq>UEppAY*mr;Q`srr3'#s8N)urr<&urr<&qs8N(M s+13ts8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lF8qc#eGoLJJcC<$MuWh?"on%MN;rqOn,J@Hrr_`iS=KTY!!)rsquH`rrW)os!!)lq!!)]l !!)rsquH`rrW)os!!)lq!!)]l!!)rsquH`rrW)os!!)fo!!%TMJcF0us5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lFoRo!eGoLJJcC<$MuWh?"on%ONrT.Qn,JFJrr_`iR[X6U!!)rsquH`rrW)os!!)lq!!)]l !!)rsquH`rrW)os!!)lq!!)]l!!)rsquH`rrW)os!!)fo!!%TMJcF0us5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "p"\lF8qc#eGoLJJcC<$MuWh?"on%MN;rqOn,J@Hrr_`iS=KTY!!)rsquH`rrW)os!!)lq!!)]l !!)rsquH`rrW)os!!)lq!!)]l!!)rsquH`rrW)os!!)fo!!%TMJcF0us5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn[n,JoJrr2rur;Q`sp\t3nrr2ruqYpNqp&>!l r;Q`sp\t3nrr2ruqu6Wro`"mkr;Q`sp\t3nrr2ruq#: "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFrr2rur;Q`sp\t3nrr2ruqYpNqp&>!l r;Q`sp\t3nrr2ruqu6Wro`"mkr;Q`sp\t3nrr2ruq#: "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn[n,JoJrr2rur;Q`sp\t3nrr2ruqYpNqp&>!l r;Q`sp\t3nrr2ruqu6Wro`"mkr;Q`sp\t3nrr2ruq#: "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn[n,JoJrr2rurr3$"rrE&u!s&B$!<2uu!<2uu !<2uu!<2uu!;6?l!<3!"!<3&urrW9$rrE&u!!*#u!!*#u!W`6#rr2rup\t3nrr3$"rrE&u!s&B$ !<2uu!<2uu!<3!"!<3&urr<%Ms+13us8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFrr2rurr3$"rrE&u!s&B$!<2uu!<2uu !<2uu!<2uu!;6?l!<3!"!<3&urrW9$rrE&u!!*#u!!*#u!W`6#rr2rup\t3nrr3$"rrE&u!s&B$ !<2uu!<2uu!<3!"!<3&urr<%Ms+13us8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn[n,JoJrr2rurr3$"rrE&u!s&B$!<2uu!<2uu !<2uu!<2uu!;6?l!<3!"!<3&urrW9$rrE&u!!*#u!!*#u!W`6#rr2rup\t3nrr3$"rrE&u!s&B$ !<2uu!<2uu!<3!"!<3&urr<%Ms+13us8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> "p"\lF8qc#rr;rts8W&u!ri6#JcC<$JcG!7s5sRcmu35*s7Yp]N;rn[n,JoJrVuisrr;rtrVuis r;Z`rs8VuspAb*lrr;rtrVuisr;Z`rs8VuspAb*lrr;rtrVuisr;Z`rrr;rtJcC<$dJs70"on%M N;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!rr;rts8W&u!ri6#JcC<$JcG!7s5sRcmuEG.s7Yp]NrT+]n,JiFrVuisrr;rtrVuis r;Z`rs8VuspAb*lrr;rtrVuisr;Z`rs8VuspAb*lrr;rtrVuisr;Z`rrr;rtJcC<$dJs70"on%O NrT.Qn,JFJrrhe5mr\V\~> "p"\lF8qc#rr;rts8W&u!ri6#JcC<$JcG!7s5sRcmu35*s7Yp]N;rn[n,JoJrVuisrr;rtrVuis r;Z`rs8VuspAb*lrr;rtrVuisr;Z`rs8VuspAb*lrr;rtrVuisr;Z`rrr;rtJcC<$dJs70"on%M N;rqOn,J@Hrrhe3mrJJZ~> #lt"oF8qc#s8N)urrrK'rrE*!!.k0$s+146s8V6cs6ko*s8Vf]s,@!X"7Q8[S:U]ks+14)s8V6c s6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urrrK'rrE*!!.k0$s+146s8V6cs6ku.s8Vf]s,R-Z"7Q8YRXtKis+14)s8V6c s6ku.s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urrrK'rrE*!!.k0$s+146s8V6cs6ko*s8Vf]s,@!X"7Q8[S:U]ks+14)s8V6c s6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urriE&rrE'!mJd.dqu6WrJcC<$KE(u7"on%MN;rqOn,J@Hrr_`iS=G01JcC<$ g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oFoRo!s8N)urriE&rrE'!mJd.dqu6WrJcC<$KE(u7"on%ONrT.Qn,JFJrr_`iR[Sg-JcC<$ g].<:"on%ONrT.Qn,JFJrrhe5mr\V\~> #lt"oF8qc#s8N)urriE&rrE'!mJd.dqu6WrJcC<$KE(u7"on%MN;rqOn,J@Hrr_`iS=G01JcC<$ g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&krr<&rrr<%Ms+13&s8V6cs6ko*s8Vf]s,@!X"7Q8[S:U]k s+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urr`?%rr<&qrr<&krr<&rrr<%Ms+13&s8V6cs6ku.s8Vf]s,R-Z"7Q8YRXtKi s+14)s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&krr<&rrr<%Ms+13&s8V6cs6ko*s8Vf]s,@!X"7Q8[S:U]k s+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urrN3#s8E#es82lss82kJs+13(s8V6cs6ko*s8Vf]s,@!X"7Q8[S:U]ks+14) s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urrN3#s8E#es82lss82kJs+13(s8V6cs6ku.s8Vf]s,R-Z"7Q8YRXtKis+14) s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urrN3#s8E#es82lss82kJs+13(s8V6cs6ko*s8Vf]s,@!X"7Q8[S:U]ks+14) s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urrrK'rrE*!!:Kje!;lcr!.k0$s+C@Ok6:nSN/[f:p@&$?s8N2is.#U1s+13$ s4dSRk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oFoRo!s8N)urrrK'rrE*!!:Kje!;lcr!.k0$s+C@Ok6:nSNfO/>p@&$As8N2is-fC-s+13$ s4dSRk6:nSNfO/>p@&$As8N5jFmjGQJ,~> #lt"oF8qc#s8N)urrrK'rrE*!!:Kje!;lcr!.k0$s+C@Ok6:nSN/[f:p@&$?s8N2is.#U1s+13$ s4dSRk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Kf!!)or!!%TMJcCB&s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$ JcFL)s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> #lt"oFoRo!s8N)urrW9$rrE&u!!)Kf!!)or!!%TMJcCB&s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$ JcFL)s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Kf!!)or!!%TMJcCB&s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$ JcFL)s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#rr;rts8W&us8W*!rr2ruJcC<$JcG0 "p"\lFoRo!rr;rts8W&us8W*!rr2ruJcC<$JcG0 "p"\lF8qc#rr;rts8W&us8W*!rr2ruJcC<$JcG0 "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^ mre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\ mrRr=!.Y~> "p"\lF8qc#h#I?RrVuisJcC<$MZ<_>"on%MN;rqOn,J@Hrr_`iS=G01JcC<$g].<:"on%MN;rqO n,J@Hrrhe3mrJJZ~> "p"\lFoRo!h#I?RrVuisJcC<$MZ<_>"on%ONrT.Qn,JFJrr_`iR[Sg-JcC<$g].<:"on%ONrT.Q n,JFJrrhe5mr\V\~> "p"\lF8qc#h#I?RrVuisJcC<$MZ<_>"on%MN;rqOn,J@Hrr_`iS=G01JcC<$g].<:"on%MN;rqO n,J@Hrrhe3mrJJZ~> "p"\lF8qc#rr;rts8W&u!ri6#kl1V_qu6WrJcC<$MZ<_>"on%MN;rqOn,J@Hrr_`iS=G01JcC<$ g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> "p"\lFoRo!rr;rts8W&u!ri6#kl1V_qu6WrJcC<$MZ<_>"on%ONrT.Qn,JFJrr_`iR[Sg-JcC<$ g].<:"on%ONrT.Qn,JFJrrhe5mr\V\~> "p"\lF8qc#rr;rts8W&u!ri6#kl1V_qu6WrJcC<$MZ<_>"on%MN;rqOn,J@Hrr_`iS=G01JcC<$ g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oF8qc#s8N)urrrK'rrE*!!9a@^!;lcr!.k0$s,-jVk6:nSN/[f:p@&$?s8N2is.#U1s+13$ s4dSRk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oFoRo!s8N)urrrK'rrE*!!9a@^!;lcr!.k0$s,-jVk6:nSNfO/>p@&$As8N2is-fC-s+13$ s4dSRk6:nSNfO/>p@&$As8N5jFmjGQJ,~> #lt"oF8qc#s8N)urrrK'rrE*!!9a@^!;lcr!.k0$s,-jVk6:nSN/[f:p@&$?s8N2is.#U1s+13$ s4dSRk6:nSN/[f:p@&$?s8N5jF74/MJ,~> #lt"oF8qc#s8N)urriE&rrE'!n,N=dr;Q`squ6WrJcC<$MZ<_>"on%MN;rqOn,J@Hrr_`iS=G01 JcC<$g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oFoRo!s8N)urriE&rrE'!n,N=dr;Q`squ6WrJcC<$MZ<_>"on%ONrT.Qn,JFJrr_`iR[Sg- JcC<$g].<:"on%ONrT.Qn,JFJrrhe5mr\V\~> #lt"oF8qc#s8N)urriE&rrE'!n,N=dr;Q`squ6WrJcC<$MZ<_>"on%MN;rqOn,J@Hrr_`iS=G01 JcC<$g].<:"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&irr<&trr<&rrr<%Ms+13-s8V6cs6ko*s8Vf]s,@!X"7Q8[ S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urr`?%rr<&qrr<&irr<&trr<&rrr<%Ms+13-s8V6cs6ku.s8Vf]s,R-Z"7Q8Y RXtKis+14)s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&irr<&trr<&rrr<%Ms+13-s8V6cs6ko*s8Vf]s,@!X"7Q8[ S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urrN3#s8E#ds8;rrrr<&rrr<%Ms+13-s8V6cs6ko*s8Vf]s,@!X"7Q8[S:U]k s+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urrN3#s8E#ds8;rrrr<&rrr<%Ms+13-s8V6cs6ku.s8Vf]s,R-Z"7Q8YRXtKi s+14)s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urrN3#s8E#ds8;rrrr<&rrr<%Ms+13-s8V6cs6ko*s8Vf]s,@!X"7Q8[S:U]k s+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!<2uu!<)ot!;lcr!.k0$s,-jVk6:nSN/[f:p@&$?s8N2i s.#VBs8N)trr<&Ns8N)os8E"Ls+13Ws8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urrrK'rrE*!!:^!g!<2uu!<)ot!;lcr!.k0$s,-jVk6:nSNfO/>p@&$As8N2i s-fD>s8N)trr<&Ns8N)os8E"Ls+13Ws8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!<2uu!<)ot!;lcr!.k0$s,-jVk6:nSN/[f:p@&$?s8N2i s.#VBs8N)trr<&Ns8N)os8E"Ls+13Ws8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh!!*#u!!)ut!!)or!!%TMJcCW-s5sRcmu35*s7Yp]N;rn\ n,JoJs8E#`rr<&Hrr<&mrr<&errN3#!<)ot!:Bdd!;lfp!:^!g!;lct!<3%Ms,$dUk6:nSN/[f: p@&$?s8N5jF74/MJ,~> #lt"oFoRo!s8N)urrW9$rrE&u!!)Qh!!*#u!!)ut!!)or!!%TMJcCW-s5sRcmuEG.s7Yp]NrT+^ n,JiFs8E#`rr<&Hrr<&mrr<&errN3#!<)ot!:Bdd!;lfp!:^!g!;lct!<3%Ms,$dUk6:nSNfO/> p@&$As8N5jFmjGQJ,~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh!!*#u!!)ut!!)or!!%TMJcCW-s5sRcmu35*s7Yp]N;rn\ n,JoJs8E#`rr<&Hrr<&mrr<&errN3#!<)ot!:Bdd!;lfp!:^!g!;lct!<3%Ms,$dUk6:nSN/[f: p@&$?s8N5jF74/MJ,~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup&G!k!ri9#qZ$WrqZ)3IJcC`0s5sRcmu35*s7Yp]N;rn^ n,JoJs8N)`rr<&Hrr<&mrr<&errN3#!<)ot!:Bdd!;uis!<2uu!:^!g!;lct!<3%Ms,$dUk6:nS N/[f:p@&$?s8N5jF74/MJ,~> "p"\lFoRo!rr;rts8W&us8W*!rr2rup&G!k!ri9#qZ$WrqZ)3IJcC`0s5sRcmuEG.s7Yp]NrT+` n,JiFs8N)`rr<&Hrr<&mrr<&errN3#!<)ot!:Bdd!;uis!<2uu!:^!g!;lct!<3%Ms,$dUk6:nS NfO/>p@&$As8N5jFmjGQJ,~> "p"\lF8qc#rr;rts8W&us8W*!rr2rup&G!k!ri9#qZ$WrqZ)3IJcC`0s5sRcmu35*s7Yp]N;rn^ n,JoJs8N)`rr<&Hrr<&mrr<&errN3#!<)ot!:Bdd!;uis!<2uu!:^!g!;lct!<3%Ms,$dUk6:nS N/[f:p@&$?s8N5jF74/MJ,~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn^n,JoJs8N)qs8E#ts8;rrs8;rts8E#trrE-" rW)osrW!!!!;c`p!!3*"rVuisrVufr#6+Z's8N'!rVlitr;Z`rpAY0orrE&uquH`rrW)osrW)rt quHcs!!)lqrW)rt! "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+`n,JiFs8N)qs8E#ts8;rrs8;rts8E#trrE-" rW)osrW!!!!;c`p!!3*"rVuisrVufr#6+Z's8N'!rVlitr;Z`rpAY0orrE&uquH`rrW)osrW)rt quHcs!!)lqrW)rt!p@&$As8N5jFmjGQJ,~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn^n,JoJs8N)qs8E#ts8;rrs8;rts8E#trrE-" rW)osrW!!!!;c`p!!3*"rVuisrVufr#6+Z's8N'!rVlitr;Z`rpAY0orrE&uquH`rrW)osrW)rt quHcs!!)lqrW)rt! "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn^n,JoJs8N)rrr<&urr<&rrrW9$rrE&u!!)ut !!)utrrE*!!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut!!)ut!!*#u!!)Ng !!)rs!!*#u!s&B$!<2uu!<2uu!;ulr!<)ot!<2uu!<2uu!;lcr!.k0$rs8YfkPt"0N;rqOn,J@H rrhe3mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+`n,JiFs8N)rrr<&urr<&rrrW9$rrE&u!!)ut !!)utrrE*!!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut!!)ut!!*#u!!)Ng !!)rs!!*#u!s&B$!<2uu!<2uu!;ulr!<)ot!<2uu!<2uu!;lcr!.k0$rs8YfkPt"2NrT.Qn,JFJ rrhe5mr\V\~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn^n,JoJs8N)rrr<&urr<&rrrW9$rrE&u!!)ut !!)utrrE*!!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut!!)ut!!*#u!!)Ng !!)rs!!*#u!s&B$!<2uu!<2uu!;ulr!<)ot!<2uu!<2uu!;lcr!.k0$rs8YfkPt"0N;rqOn,J@H rrhe3mrJJZ~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn^n,JoJs8N)rrr<&urr<&us8;rtrr<&urr<&t rr<&trr<&urrW9$rrE&u!!)fo#6=c(rrE*!!<3!#!<<'!rr3'#s8N)urr<&trr<&ts82ldrr<&s s82lrs8E#srr<&qs8E#urr<&urr<&urr<&rrr<%Ms+11Us6&SFmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+`n,JiFs8N)rrr<&urr<&us8;rtrr<&urr<&t rr<&trr<&urrW9$rrE&u!!)fo#6=c(rrE*!!<3!#!<<'!rr3'#s8N)urr<&trr<&ts82ldrr<&s s82lrs8E#srr<&qs8E#urr<&urr<&urr<&rrr<%Ms+11Us6&SFmuEG.s7Yp]NrT+^mre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn^n,JoJs8N)rrr<&urr<&us8;rtrr<&urr<&t rr<&trr<&urrW9$rrE&u!!)fo#6=c(rrE*!!<3!#!<<'!rr3'#s8N)urr<&trr<&ts82ldrr<&s s82lrs8E#srr<&qs8E#urr<&urr<&urr<&rrr<%Ms+11Us6&SFmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn^n,JoJs8N)urrW9$rrE&u!s&B$!<3!#!<<'! rr2rurVlitrVlitrr3'#s8N)urr<&ors&Q(!<3'!rrE&u!s&B$!<3!#!<<'!rr2rurVlitrVlit m/I%cr;Q`sp\t3nrr2ruq#:Ers8N)urr<&urr<&rrr<%Ms+11Us6&SFmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sRcmuEG.s7Yp]NrT+`n,JiFs8N)urrW9$rrE&u!s&B$!<3!#!<<'! rr2rurVlitrVlitrr3'#s8N)urr<&ors&Q(!<3'!rrE&u!s&B$!<3!#!<<'!rr2rurVlitrVlit m/I%cr;Q`sp\t3nrr2ruq#:Ers8N)urr<&urr<&rrr<%Ms+11Us6&SFmuEG.s7Yp]NrT+^mre)A !.Y~> "p"\lF8qc#JcC<$JcFL)s5sRcmu35*s7Yp]N;rn^n,JoJs8N)urrW9$rrE&u!s&B$!<3!#!<<'! rr2rurVlitrVlitrr3'#s8N)urr<&ors&Q(!<3'!rrE&u!s&B$!<3!#!<<'!rr2rurVlitrVlit m/I%cr;Q`sp\t3nrr2ruq#:Ers8N)urr<&urr<&rrr<%Ms+11Us6&SFmu35*s7Yp]N;rn\mrRr= !.Y~> "p"\lF8qc#bl@YBrVlitJcC<$R/d3L"on%MN;rqOn,J@Hrs%rlS=KWZ!<3!#!<<'!rr3'#s8N)u rrW9$rrE&u!!)ut!!)ut!!*#u!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut !!)ut!!*#u!!)Ng!!*#u!W`6#rr3'#s8N)urr<&urr<&urrN3#!<3!#!<<'!rr2rurr2ruqu6Wr rr2ruJcCE's5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lFoRo!bl@YBrVlitJcC<$R/d3L"on%ONrT.Qn,JFJrs%rlR[X9V!<3!#!<<'!rr3'#s8N)u rrW9$rrE&u!!)ut!!)ut!!*#u!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut !!)ut!!*#u!!)Ng!!*#u!W`6#rr3'#s8N)urr<&urr<&urrN3#!<3!#!<<'!rr2rurr2ruqu6Wr rr2ruJcCE's5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> "p"\lF8qc#bl@YBrVlitJcC<$R/d3L"on%MN;rqOn,J@Hrs%rlS=KWZ!<3!#!<<'!rr3'#s8N)u rrW9$rrE&u!!)ut!!)ut!!*#u!s&B$!<2uu!;QR!!<3'!!<<'!rr3'#s8N)urrW9$rrE&u!!)ut !!)ut!!*#u!!)Ng!!*#u!W`6#rr3'#s8N)urr<&urr<&urrN3#!<3!#!<<'!rr2rurr2ruqu6Wr rr2ruJcCE's5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#rr;rts8W&u!ri6#g]%6RJcC<$OT5@D"on%MN;rqOn,J@HrrhfjS=KWV!<3#t!<)rs !!E6$s8W&u!ri9#qu?`srW)uurrE*!r;cZnrr<9'!<3$!s8W&urVuis"9/B$s8E!"rrE)r!<<)u !:Kmd!<3#t!<)rs!;ulr!<<)t!<)rs!<3#s!;ulr!;HKn!;lcr!;lcr!.k0?s8V6cs6ko*s8Vf] s,@!X"RgF#Er^^~> "p"\lFoRo!rr;rts8W&u!ri6#g]%6RJcC<$OT5@D"on%ONrT.Qn,JFJrrhfjR[X9R!<3#t!<)rs !!E6$s8W&u!ri9#qu?`srW)uurrE*!r;cZnrr<9'!<3$!s8W&urVuis"9/B$s8E!"rrE)r!<<)u !:Kmd!<3#t!<)rs!;ulr!<<)t!<)rs!<3#s!;ulr!;HKn!;lcr!;lcr!.k0?s8V6cs6ku.s8Vf] s,R-Z"RgL%FT?p~> "p"\lF8qc#rr;rts8W&u!ri6#g]%6RJcC<$OT5@D"on%MN;rqOn,J@HrrhfjS=KWV!<3#t!<)rs !!E6$s8W&u!ri9#qu?`srW)uurrE*!r;cZnrr<9'!<3$!s8W&urVuis"9/B$s8E!"rrE)r!<<)u !:Kmd!<3#t!<)rs!;ulr!<<)t!<)rs!<3#s!;ulr!;HKn!;lcr!;lcr!.k0?s8V6cs6ko*s8Vf] s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urrrK'rrE*!!8@GQ!.k0$s,d9\k6:nSN/[f:p@&$?s8N2is.#V,rr<%Ms+13/ s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urrrK'rrE*!!8@GQ!.k0$s,d9\k6:nSNfO/>p@&$As8N2is-fD(rr<%Ms+13/ s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urrrK'rrE*!!8@GQ!.k0$s,d9\k6:nSN/[f:p@&$?s8N2is.#V,rr<%Ms+13/ s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urriE&rrE'!nG`Lhs8E#trrE-"rW)rtrW)rtquHcsrW)rtrVururW%NLJcDJE s5sRcmu35*s7Yp]N;rn[n,JoJdJj1HJcC<$N;rq@"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oFoRo!s8N)urriE&rrE'!nG`Lhs8E#trrE-"rW)rtrW)rtquHcsrW)rtrVururW%NLJcDJE s5sRcmuEG.s7Yp]NrT+]n,JiFdJj1HJcC<$N;rq@"on%ONrT.Qn,JFJrrhe5mr\V\~> #lt"oF8qc#s8N)urriE&rrE'!nG`Lhs8E#trrE-"rW)rtrW)rtquHcsrW)rtrVururW%NLJcDJE s5sRcmu35*s7Yp]N;rn[n,JoJdJj1HJcC<$N;rq@"on%MN;rqOn,J@Hrrhe3mrJJZ~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr<&urr<&urr<&srr<&urr<&urr<&qrr<&srrN3#!.k0$ s.KDlk6:nSN/[f:p@&$?s8N2is.#V/s8E"Ls+13.s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urr`?%rr<&qrr<&mrr<&urr<&urr<&srr<&urr<&urr<&qrr<&srrN3#!.k0$ s.KDlk6:nSNfO/>p@&$As8N2is-fD+s8E"Ls+13.s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urr`?%rr<&qrr<&mrr<&urr<&urr<&srr<&urr<&urr<&qrr<&srrN3#!.k0$ s.KDlk6:nSN/[f:p@&$?s8N2is.#V/s8E"Ls+13.s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urrN3#s8E#err<&urr<&urr<&ss82lrrr<&qrr<&rrr<%Ms+13Bs8V6cs6ko* s8Vf]s,@!X"7Q8[S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urrN3#s8E#err<&urr<&urr<&ss82lrrr<&qrr<&rrr<%Ms+13Bs8V6cs6ku. s8Vf]s,R-Z"7Q8YRXtKis+14)s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urrN3#s8E#err<&urr<&urr<&ss82lrrr<&qrr<&rrr<%Ms+13Bs8V6cs6ko* s8Vf]s,@!X"7Q8[S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!<2uu!<2uu!;uis!;c]q!;c]q!;uiu!<3%Ms+13Cs8V6c s6ko*s8Vf]s,@!X"7Q8[S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oFoRo!s8N)urrrK'rrE*!!:^!g!<2uu!<2uu!;uis!;c]q!;c]q!;uiu!<3%Ms+13Cs8V6c s6ku.s8Vf]s,R-Z"7Q8YRXtKis+14)s8V6cs6ku.s8Vf]s,R-Z"RgL%FT?p~> #lt"oF8qc#s8N)urrrK'rrE*!!:^!g!<2uu!<2uu!;uis!;c]q!;c]q!;uiu!<3%Ms+13Cs8V6c s6ko*s8Vf]s,@!X"7Q8[S:U]ks+14)s8V6cs6ko*s8Vf]s,@!X"RgF#Er^^~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh!!*#u!!*#u!!)rs!!*#u!!*#u!!)lq!!)ut!!*#u!!%TM JcDGDs5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> #lt"oFoRo!s8N)urrW9$rrE&u!!)Qh!!*#u!!*#u!!)rs!!*#u!!*#u!!)lq!!)ut!!*#u!!%TM JcDGDs5sRcmuEG.s7Yp]NrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7Yp]NrT+^mre)A!.Y~> #lt"oF8qc#s8N)urrW9$rrE&u!!)Qh!!*#u!!*#u!!)rs!!*#u!!*#u!!)lq!!)ut!!*#u!!%TM JcDGDs5sRcmu35*s7Yp]N;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7Yp]N;rn\mrRr=!.Y~> "p"\lF8qc#rr;rts8W&us8W*!rr2rupAb'krr;osrVuisrr;osrr;lr!ri6#rr;uuJcC<$UAt8V "on%MN;rqMN;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7D9Mrrhe3mrJJZ~> "p"\lFoRo!rr;rts8W&us8W*!rr2rupAb'krr;osrVuisrr;osrr;lr!ri6#rr;uuJcC<$UAt8V "on%ONrT.ONrT+]n,JiFJcC<$JcFL)s5sRcmuEG.s7D?Orrhe5mr\V\~> "p"\lF8qc#rr;rts8W&us8W*!rr2rupAb'krr;osrVuisrr;osrr;lr!ri6#rr;uuJcC<$UAt8V "on%MN;rqMN;rn[n,JoJJcC<$JcFL)s5sRcmu35*s7D9Mrrhe3mrJJZ~> "p"\lF8qc#j8T)ZJcC<$JcGTHs5sObmu35*o8N_L"7Q8[S:U]ks+14)s8V6bs6ko*s7;3Lrrhe3 mrJJZ~> "p"\lFoRo!j8T)ZJcC<$JcGTHs5sObmuEG.o8`kN"7Q8YRXtKis+14)s8V6bs6ku.s7;9Nrrhe5 mr\V\~> "p"\lF8qc#j8T)ZJcC<$JcGTHs5sObmu35*o8N_L"7Q8[S:U]ks+14)s8V6bs6ko*s7;3Lrrhe3 mrJJZ~> "p"\lF8qc#j8T)ZJcC<$JcGTHs5sLamu34rn,NCin,JoJJcC<$JcFL)s5sLamu34rn,NCjmrRr= !.Y~> "p"\lFoRo!j8T)ZJcC<$JcGTHs5sLamuEG!n,NCin,JiFJcC<$JcFL)s5sLamuEG!n,NCjmre)A !.Y~> "p"\lF8qc#j8T)ZJcC<$JcGTHs5sLamu34rn,NCin,JoJJcC<$JcFL)s5sLamu34rn,NCjmrRr= !.Y~> "p"\lF8qc#jT#2ZJcC<$JcGWIs5sLamu34prr_`iS=G01JcC<$g].<:"97hKN:?iMmrRr=!.Y~> "p"\lFoRo!jT#2ZJcC<$JcGWIs5sLamuEFtrr_`iR[Sg-JcC<$g].<:"97hMNq!&Omre)A!.Y~> "p"\lF8qc#jT#2ZJcC<$JcGWIs5sLamu34prr_`iS=G01JcC<$g].<:"97hKN:?iMmrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sObmu34oo`#,Ss8VQfS=G01JcC<$g].<:"TRqLN:6E=#E8]_mrRr= !.Y~> "p"\lFoRo!JcC<$JcFL)s5sObmuEFso`#,Us8VQfR[Sg-JcC<$g].<:"TRqNNplW?#EJiamre)A !.Y~> "p"\lF8qc#JcC<$JcFL)s5sObmu34oo`#,Ss8VQfS=G01JcC<$g].<:"TRqLN:6E=#E8]_mrRr= !.Y~> "p"\lF8qc#JcC<$JcFL)s5sUdmu34os8Vl_s,70Ns8VQfS=G01JcC<$g].<:#64.NN:6fHq!\6A #Oh]mmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sUdmuEFss8Vl_s,I "p"\lF8qc#JcC<$JcFL)s5sUdmu34os8Vl_s,70Ns8VQfS=G01JcC<$g].<:#64.NN:6fHq!\6A #Oh]mmrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sXemu34on,NF`n,J=Nn,NFVs.#U1s+13$s4dSRk6M%UN/[5os8Vo` s,73Os8VP/mrJJZ~> "p"\lFoRo!JcC<$JcFL)s5sXemuEFsn,NF`n,JCPn,NFVs-fC-s+13$s4dSRk6M%UNfNSss8Vo` s,I?Qs8VP1mr\V\~> "p"\lF8qc#JcC<$JcFL)s5sXemu34on,NF`n,J=Nn,NFVs.#U1s+13$s4dSRk6M%UN/[5os8Vo` s,73Os8VP/mrJJZ~> "p"\lF8qc#JcC<$JcFL)s5sXemu34on,NFan,J@Hn,NCin,JoJJcC<$JcFL)s5sXemu34on,NFa n,J@Hn,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sXemuEFsn,NFan,JFJn,NCin,JiFJcC<$JcFL)s5sXemuEFsn,NFa n,JFJn,NCjmre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sXemu34on,NFan,J@Hn,NCin,JoJJcC<$JcFL)s5sXemu34on,NFa n,J@Hn,NCjmrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35)n,NFbn,J@Hn,NCin,JoJJcC<$JcFL)s5sLamu35)n,NFb n,J@Hn,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG-n,NFbn,JFJn,NCin,JiFJcC<$JcFL)s5sLamuEG-n,NFb n,JFJn,NCjmre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35)n,NFbn,J@Hn,NCin,JoJJcC<$JcFL)s5sLamu35)n,NFb n,J@Hn,NCjmrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35)n,NFcn,J@Gn,NCin,JoJJcC<$JcFL)s5sLamu35)n,NFc n,J@Gn,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG-n,NFcn,JFIn,NCin,JiFJcC<$JcFL)s5sLamuEG-n,NFc n,JFIn,NCjmre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35)n,NFcn,J@Gn,NCin,JoJJcC<$JcFL)s5sLamu35)n,NFc n,J@Gn,NCjmrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35(n,NFdn,J@Gn,NCin,JoJJcC<$JcFL)s5sLamu35(n,NFd n,J@Gn,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG,n,NFdn,JFIn,NCin,JiFJcC<$JcFL)s5sLamuEG,n,NFd n,JFIn,NCjmre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35(n,NFdn,J@Gn,NCin,JoJJcC<$JcFL)s5sLamu35(n,NFd n,J@Gn,NCjmrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35(n,NFen,J@Fn,NCin,JoJJcC<$JcFL)s5sLamu35(n,NFe n,J@Fn,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG,n,NFen,JFHn,NCin,JiFJcC<$JcFL)s5sLamuEG,n,NFe n,JFHn,NCjmre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35(n,NFen,J@Fn,NCin,JoJJcC<$JcFL)s5sLamu35(n,NFe n,J@Fn,NCjmrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35'n,NFfn,J@Fn,NCin,JoJJcC<$JcFL)s5sLamu35'n,NFf n,J@Fn,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG+n,NFfn,JFHn,NCin,JiFJcC<$JcFL)s5sLamuEG+n,NFf n,JFHn,NCjmre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35'n,NFfn,J@Fn,NCin,JoJJcC<$JcFL)s5sLamu35'n,NFf n,J@Fn,NCjmrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35'n,NChmu35'n,NCin,JoJJcC<$JcFL)s5sLamu35'n,NCh mu35'n,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG+n,NChmuEG+n,NCin,JiFJcC<$JcFL)s5sLamuEG+n,NCh muEG+n,NCjmre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35'n,NChmu35'n,NCin,JoJJcC<$JcFL)s5sLamu35'n,NCh mu35'n,NCjmrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35&mf "p"\lFoRo!JcC<$JcFL)s5sLamuEG*mf "p"\lF8qc#JcC<$JcFL)s5sLamu35&mf "p"\lF8qc#JcC<$JcFL)s5sLamu35&mfNNJN;N)Drr_`iS=G01JcC<$g].<:"97hKN;N&Fs,;p6 n,NCjmrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG*mfNNLNr/;Frr_`iR[Sg-JcC<$g].<:"97hMNr/8Hs,N-: n,NCjmre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35&mfNNJN;N)Drr_`iS=G01JcC<$g].<:"97hKN;N&Fs,;p6 n,NCjmrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35%n,J@Dn,NCin,JoJJcC<$JcFL)s5sLamu35%n,J@Dn,NCj mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG)n,JFFn,NCin,JiFJcC<$JcFL)s5sLamuEG)n,JFFn,NCj mre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35%n,J@Dn,NCin,JoJJcC<$JcFL)s5sLamu35%n,J@Dn,NCj mrRr=!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35%mf8=Cn,NCin,JoJJcC<$JcFL)s5sLamu35%mf8=Cn,NCj mrRr=!.Y~> "p"\lFoRo!JcC<$JcFL)s5sLamuEG)mf8CEn,NCin,JiFJcC<$JcFL)s5sLamuEG)mf8CEn,NCj mre)A!.Y~> "p"\lF8qc#JcC<$JcFL)s5sLamu35%mf8=Cn,NCin,JoJJcC<$JcFL)s5sLamu35%mf8=Cn,NCj mrRr=!.Y~> "p"\lF8qc#J`hUIJ`k_L"97hKN:?iLn,JoJJ`hUIJ`k_L"97hKN:?iMmrRr=!.Y~> "p"\lFoRo!J`hUIJ`k_L"97hMNq!&Nn,JiFJ`hUIJ`k_L"97hMNq!&Omre)A!.Y~> "p"\lF8qc#J`hUIJ`k_L"97hKN:?iLn,JoJJ`hUIJ`k_L"97hKN:?iMmrRr=!.Y~> "T\SkF8qb]kCMfIkLer!s6kp8rrVZhS:TjSkCMgKk5t\PN:6cLmrRr=!.Y~> "T\SkFoRn]kCMfIkLer!s6l!:rrVZhRXsXQkCMgKk5t\PNpluNmre)A!.Y~> "T\SkF8qb]kCMfIkLer!s6kp8rrVZhS:TjSkCMgKk5t\PN:6cLmrRr=!.Y~> !s&AiF+O@Bs+14#s6T3*s+13$s4./9mfRY"Er^^~> !s&AiFb0RDs+14#s6T3*s+13$s4./9mfR_$FT?p~> !s&AiF+O@Bs+14#s6T3*s+13$s4./9mfRY"Er^^~> !s&AiF+Ne2mt'qYmt'qYmt's-mfRY"Er^^~> !s&AiFb0"4mt'qYmt'qYmt's-mfR_$FT?p~> !s&AiF+Ne2mt'qYmt'qYmt's-mfRY"Er^^~> "9AJjF74[=JW,/=f8T"`JW,/=JW/3>lgFpsmrJJZ~> "9AJjFmjmAJW>;Af8f.bJW>;AJWA?BlgFpumr\V\~> "9AJjF74[=JW,/=f8T"`JW,/=JW/3>lgFpsmrJJZ~> "9AJjF74[=JW,/=fSfh1lL0:_JW,/=fSfh1lgFpsmrJJZ~> "9AJjFmjmAJW>;AfT#t3lL0:aJW>;AfT#t3lgFpumr\V\~> "9AJjF74[=JW,/=fSfh1lL0:_JW,/=fSfh1lgFpsmrJJZ~> "p"\lF75'HoBu_[mt(Lis+14IrrVZhs7Gd[s6B(QN:ZK=s6kdDJa\0YoC)_Zo^Dh[lgFpsmrJJZ~> "p"\lFmk?NoBu_[mt(Lis+14IrrVZhs7Gd[s6B(QNq;]?s6kdDJa\0YoC)_Zo^Dh[lgFpumr\V\~> "p"\lF75'HoBu_[mt(Lis+14IrrVZhs7Gd[s6B(QN:ZK=s6kdDJa\0YoC)_Zo^Dh[lgFpsmrJJZ~> "p"\lF75'Hp$_q\!K?Jus+13$s8;ltN:6`Fp@&%]lL4b3p$_q\!K?K(rrA"/mt's!n,<:[n,NFR mfRY"Er^^~> "p"\lFmk?Np$_q\!KQW"s+13$s8;ltNplrHp@&%]lL4b5p$_q\!KQW*rrA(1mt's!n,<:[n,NFR mfR_$FT?p~> "p"\lF75'Hp$_q\!K?Jus+13$s8;ltN:6`Fp@&%]lL4b3p$_q\!K?K(rrA"/mt's!n,<:[n,NFR mfRY"Er^^~> "p"\lF75'Hp[A+]s,7$Js8RZ=Ja\0Ys6ouH!:Tgbq!\7_lL4b3p[A+]s,7$Js8S&Hs,;NtJa`4! qu?H[s8VER"* "p"\lFmk?Np[A+]s,I0Ls8RZ=Ja\0Ys6ouJ!:Tgbq!\7_lL4b5p[A+]s,I0Ls8S&Hs,M[!Ja`4! qu?H[s8VER"*O'T!.Y~> "p"\lF75'Hp[A+]s,7$Js8RZ=Ja\0Ys6ouH!:Tgbq!\7_lL4b3p[A+]s,7$Js8S&Hs,;NtJa`4! qu?H[s8VER"* "p"\lF75'Hq=":^"n.D/n,NE=mt'qYn,MkVN!/VLs6oFTs8)3as6B(QN;;r@rrqkMN:6fHN:6e* Ja\0YoC)_Zs6opdqX=IalgFpsmrJJZ~> "p"\lFmk?Nq=":^"n.J3n,NE=mt'qYn,MkVNWehNs6oFTs8)3as6B(QNqr/BrrqkONpm#JN:6e, Ja\0YoC)_Zs6opdqX=IalgFpumr\V\~> "p"\lF75'Hq=":^"n.D/n,NE=mt'qYn,MkVN!/VLs6oFTs8)3as6B(QN;;r@rrqkMN:6fHN:6e* Ja\0YoC)_Zs6opdqX=IalgFpsmrJJZ~> "p"\lF75'HqsXL`rpTlG!q60hJa\0YJa`X-s,7$Js8W&drVufas8VBQs,?jDrVulcs,7$Js8S&H s,;NtJa`4!s8W&drVufas8VER"* "p"\lFmk?NqsXL`rpTlI!q60hJa\0YJa`X-s,I0Ls8W&drVufas8VBQs,R!FrVulcs,I0Ls8S&H s,M[!Ja`4!s8W&drVufas8VER"*O'T!.Y~> "p"\lF75'HqsXL`rpTlG!q60hJa\0YJa`X-s,7$Js8W&drVufas8VBQs,?jDrVulcs,7$Js8S&H s,;NtJa`4!s8W&drVufas8VER"* "p"\lF75'HrU9^br9sZE!q60hJa\0YJa`X-s,7$Js8VubrVulcs8VBQs,?pFrVufas,7$Js8S&H s,;NtJa`4!s8VubrVulcs8VER"* "p"\lFmk?NrU9^br9sZG!q60hJa\0YJa`X-s,I0Ls8VubrVulcs8VBQs,R'HrVufas,I0Ls8S&H s,M[!Ja`4!s8VubrVulcs8VER"*O'T!.Y~> "p"\lF75'HrU9^br9sZE!q60hJa\0YJa`X-s,7$Js8VubrVulcs8VBQs,?pFrVufas,7$Js8S&H s,;NtJa`4!s8VubrVulcs8VER"* #QXnnF75'Hn*g5TqX=HC!q60hJa\0YJa`X-s,7$Js8Vo`rVlrfs8VBQs,@!HrVu`_s,7$Js8S&H s,;NtJa`4!s8Vo`rVlrfs8VER"* #QXnnFmk?Nn*g5TqX=HE!q60hJa\0YJa`X-s,I0Ls8Vo`rVlrfs8VBQs,R-JrVu`_s,I0Ls8S&H s,M[!Ja`4!s8Vo`rVlrfs8VER"*O'T!.Y~> #QXnnF75'Hn*g5TqX=HC!q60hJa\0YJa`X-s,7$Js8Vo`rVlrfs8VBQs,@!HrVu`_s,7$Js8S&H s,;NtJa`4!s8Vo`rVlrfs8VER"* "9AJjF79!bq!\6A!q60hJa\0YJa`X-s,7$Js8Vl_rJ^dVlL4V/q!\6A!q60hN:6e*Ja\0YoC)_Z q!\0?s8VER"* "9AJjFmo3fq!\6C!q60hJa\0YJa`X-s,I0Ls8Vl_rJppXlL4V1q!\6C!q60hN:6e,Ja\0YoC)_Z q!\0As8VER"*O'T!.Y~> "9AJjF79!bq!\6A!q60hJa\0YJa`X-s,7$Js8Vl_rJ^dVlL4V/q!\6A!q60hN:6e*Ja\0YoC)_Z q!\0?s8VER"* #QXnnF75'Hn*g46qX=HC!q60hJa\0YJa`X-s,7$Js8Vo`rJUgHs8VBQs,@!HrJ^UAs,7$Js8S&H s,;NtJa`4!s8Vo`rJUgHs8VER"* #QXnnFmk?Nn*g48qX=HE!q60hJa\0YJa`X-s,I0Ls8Vo`rJgsJs8VBQs,R-JrJpaCs,I0Ls8S&H s,M[!Ja`4!s8Vo`rJgsJs8VER"*O'T!.Y~> #QXnnF75'Hn*g46qX=HC!q60hJa\0YJa`X-s,7$Js8Vo`rJUgHs8VBQs,@!HrJ^UAs,7$Js8S&H s,;NtJa`4!s8Vo`rJUgHs8VER"* "p"\lF75'HrU9]Dr9sZE!q60hJa\0YJa`X-s,7$Js8VubrJ^aEs8VBQs,?pFrJ^[Cs,7$Js8S&H s,;NtJa`4!s8VubrJ^aEs8VER"* "p"\lFmk?NrU9]Fr9sZG!q60hJa\0YJa`X-s,I0Ls8VubrJpmGs8VBQs,R'HrJpgEs,I0Ls8S&H s,M[!Ja`4!s8VubrJpmGs8VER"*O'T!.Y~> "p"\lF75'HrU9]Dr9sZE!q60hJa\0YJa`X-s,7$Js8VubrJ^aEs8VBQs,?pFrJ^[Cs,7$Js8S&H s,;NtJa`4!s8VubrJ^aEs8VER"* "p"\lF75'HqsXKBrpTlG!q60hJa\0YJa`X-s,7$Js8W&drJ^[Cs8VBQs,?jDrJ^aEs,7$Js8S&H s,;NtJa`4!s8W&drJ^[Cs8VER"* "p"\lFmk?NqsXKDrpTlI!q60hJa\0YJa`X-s,I0Ls8W&drJpgEs8VBQs,R!FrJpmGs,I0Ls8S&H s,M[!Ja`4!s8W&drJpgEs8VER"*O'T!.Y~> "p"\lF75'HqsXKBrpTlG!q60hJa\0YJa`X-s,7$Js8W&drJ^[Cs8VBQs,?jDrJ^aEs,7$Js8S&H s,;NtJa`4!s8W&drJ^[Cs8VER"* "p"\lF75'Hq="9@"n.D/n,NE=mt'qYn,MkVN!/VLs6oFTN;E#Cs6B(QN;;r@N!8[/N:6fHN:6e* Ja\0YoC)_Zs6ooFqX=IalgFpsmrJJZ~> "p"\lFmk?Nq="9B"n.J3n,NE=mt'qYn,MkVNWehNs6oFTNr&5Es6B(QNqr/BNWnm3Npm#JN:6e, Ja\0YoC)_Zs6ooHqX=IalgFpumr\V\~> "p"\lF75'Hq="9@"n.D/n,NE=mt'qYn,MkVN!/VLs6oFTN;E#Cs6B(QN;;r@N!8[/N:6fHN:6e* Ja\0YoC)_Zs6ooFqX=IalgFpsmrJJZ~> "p"\lF75'Hp[A$=!q60hJa\0YJa`X-s,7$Js8W%Vq!\7_lL4b3p[A$=!q60hN:6e*Ja\0YoC)_Z rJ^O?s8VER"* "p"\lFmk?Np[A$?!q60hJa\0YJa`X-s,I0Ls8W%Xq!\7_lL4b5p[A$?!q60hN:6e,Ja\0YoC)_Z rJp[As8VER"*O'T!.Y~> "p"\lF75'Hp[A$=!q60hJa\0YJa`X-s,7$Js8W%Vq!\7_lL4b3p[A$=!q60hN:6e*Ja\0YoC)_Z rJ^O?s8VER"* "p"\lF75'Hp$_m=!q60hJW,/=JW0Pd"RlBjN/[K!s8VBQs,?X>reppIs8Rt8Ja\0YoC)_Zs,?[? s8VER"* "p"\lFmk?Np$_m?!q60hJW>;AJWB\h"RlBjNfNi%s8VBQs,Qd@rf.'Ks8Rt:Ja\0YoC)_Zs,QgA s8VER"*O'T!.Y~> "p"\lF75'Hp$_m=!q60hJW,/=JW0Pd"RlBjN/[K!s8VBQs,?X>reppIs8Rt8Ja\0YoC)_Zs,?[? s8VER"* "p"\lF75'HoBua>n,IrtJW,/=r/:^Gs,?U=s8VBQs,?R "p"\lFmk?NoBua@n,Is!JW>;Ar/LjIs,Qa?s8VBQs,Q^>!flaLM2m/UJa`4!!WS2Pn,NFRmfR_$ FT?p~> "p"\lF75'HoBua>n,IrtJW,/=r/:^Gs,?U=s8VBQs,?R "p"\lF75'HJcC<$JcFF'lL4b3JcC<$JcFF'lgFpsmrJJZ~> "p"\lFmk?NJcC<$JcFF'lL4b5JcC<$JcFF'lgFpumr\V\~> "p"\lF75'HJcC<$JcFF'lL4b3JcC<$JcFF'lgFpsmrJJZ~> "T\SkF75'=s+13$s4IA:mf8;ts+13$s4IA;mfRY"Er^^~> "T\SkFmk?As+13$s4IA:mf8B!s+13$s4IA;mfR_$FT?p~> "T\SkF75'=s+13$s4IA:mf8;ts+13$s4IA;mfRY"Er^^~> !s&AiF+Ne2mt'qYmt'qYmt's-mfRY"Er^^~> !s&AiFb0"4mt'qYmt'qYmt's-mfR_$FT?p~> !s&AiF+Ne2mt'qYmt'qYmt's-mfRY"Er^^~> !W`8hJTHB`JTHB`JTHB`JTLd2!q111J,~> !W`8hJTZNdJTZNdJTZNdJT^p6!q173J,~> !W`8hJTHB`JTHB`JTHB`JTLd2!q111J,~> !!)He!-<_kJcC<$JcC<$JcDJE!-@T.!HS6k~> !!)He!-NkmJcC<$JcC<$JcDJE!-R`0!HeBm~> !!)He!-<_kJcC<$JcC<$JcDJE!-@T.!HS6k~> ! !_Ja\0YJa\0YJa\0YU[J5+s6mu/FT?p~> ! ! !_Ja\0YJa\0YJa\0YU[J5+s6mu/FT?p~> ! ! !_Ja\0YJa\0YJa\0YU[J5+s6mu/FT?p~> ! ! !_Ja\0YJa\0YJa\0YU[J5+s6mu/FT?p~> ! !!%RkJTHB`JTHB`JTHB`q/ZN9J,~> !!%RmJTZNdJTZNdJTZNdq/lZ;J,~> !!%RkJTHB`JTHB`JTHB`q/ZN9J,~> !<7TMJH16$JH16$JH16$q#CEpJ,~> !<7TMJH16$JH16$JH16$q#CEpJ,~> !<7TMJH16$JH16$JH16$q#CEpJ,~> %%EndData showpage %%Trailer end %%EOF pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/distribution.tex000066400000000000000000000024631323431571100262130ustar00rootroot00000000000000\begin{figure}%[t] \begin{center} \includegraphics[scale=0.85]{pakcs_overview.jpg} \end{center}\vspace{-5ex} \caption{Overview of \CYS\label{fig-pakcs}} \end{figure} \section{Overview of the \CYS Distribution} A schematic overview of the various components contained in the distribution of \CYS and the translation process of programs inside \CYS is shown in Figure~\ref{fig-pakcs} on page~\pageref{fig-pakcs}. In this figure, boxes denote different components of \CYS and names in boldface denote files containing various intermediate representations during the translation process (see Section~\ref{sec-auxfiles} below). The \CYS distribution contains a front end for reading (parsing and type checking) Curry programs that can be also used by other Curry implementations. The back end (formerly known as ``Curry2Prolog''\index{Curry2Prolog}) compiles Curry programs into Prolog programs. It also support constraint solvers for arithmetic constraints over real numbers and finite domain constraints, and further libraries for GUI programming, meta-programming etc. Currently, it does not implement encapsulated search in full generality (only a strict version of \code{findall} is supported), and concurrent threads are not executed in a fair manner. %%% Local Variables: %%% mode: latex %%% TeX-master: "manual" %%% End: pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/downloaddoc.sh000077500000000000000000000024741323431571100256100ustar00rootroot00000000000000#!/bin/sh # The documentation of the tools for PAKCS or KiCS2 packaged by CPM # is usually stored in the package directory `src`. # In order to generate a single manual for PAKCS or KiCS2 including # also the description of the most relevant tools, we download and # copy the current tool documentations with this script into # the documentation directory `TOOLDOCDIR`. # Hence, this script should be executed whenever some tool documentation # is updated. # use local Curry executable if it exists (e.g., we are inside the distro): CURRYBIN=`pwd`/../../bin/curry if [ -x "$CURRYBIN" ] ; then CPMOPTS="-d curry_bin=$CURRYBIN" else CPMOPTS= fi CPM="cypm $CPMOPTS" # the directory where all tool documentations are stored: TOOLDOCDIR=tooldocs # the tool packages where documentation should be downloaded: TOOLPKGS="currybrowse casc cass cpm currycheck currydoc currypp ertools peval runcurry spicey transbooleq verify" README=$TOOLDOCDIR/README mkdir -p $TOOLDOCDIR echo "This directory contains the documentation of various Curry tools." > $README echo "It has been automatically generated from the tool packages." >> $README for T in $TOOLPKGS ; do echo "Downloading $T..." $CPM checkout $T rm -rf $TOOLDOCDIR/$T cp -r $T/docs $TOOLDOCDIR/$T rm -rf $T echo "Documentation for package $T downloaded!" done pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/extensions.tex000066400000000000000000000225071323431571100256740ustar00rootroot00000000000000\section{Extensions} \label{sec-extensions} \CYS supports some extensions in Curry programs that are not (yet) part of the definition of Curry. These extensions are described below. \subsection{Recursive Variable Bindings} Local variable declarations (introduced by \code{let}\pindex{let} or \code{where}\pindex{where}) can be (mutually) recursive in \CYS. For instance, the declaration \begin{curry} ones5 = let ones = 1 : ones in take 5 ones \end{curry} introduces the local variable \code{ones} which is bound to a \emph{cyclic structure}\index{cyclic structure} representing an infinite list of \code{1}'s. Similarly, the definition \begin{curry} onetwo n = take n one2 where one2 = 1 : two1 two1 = 2 : one2 \end{curry} introduces a local variables \code{one2} that represents an infinite list of alternating \code{1}'s and \code{2}'s so that the expression \code{(onetwo 6)} evaluates to \code{[1,2,1,2,1,2]}. \subsection{Functional Patterns} Functional patterns \cite{AntoyHanus05LOPSTR} are a useful extension to implement operations in a more readable way. Furthermore, defining operations with functional patterns avoids problems caused by strict equality (\ccode{=:=}) and leads to programs that are potentially more efficient. Consider the definition of an operation to compute the last element of a list \code{xs} based on the prelude operation \ccode{++} for list concatenation: \begin{curry} last xs | _++[y] =:= xs = y where y free \end{curry} Since the equality constraint \ccode{=:=} evaluates both sides to a constructor term, all elements of the list \code{xs} are fully evaluated in order to satisfy the constraint. Functional patterns can help to improve this computational behavior. A \emph{functional pattern}\index{functional pattern}\index{pattern!functional} is a function call at a pattern position. With functional patterns, we can define the operation \code{last} as follows: \begin{curry} last (_++[y]) = y \end{curry} This definition is not only more compact but also avoids the complete evaluation of the list elements: since a functional pattern is considered as an abbreviation for the set of constructor terms obtained by all evaluations of the functional pattern to normal form (see \cite{AntoyHanus05LOPSTR} for an exact definition), the previous definition is conceptually equivalent to the set of rules \begin{curry} last [y] = y last [_,y] = y last [_,_,y] = y $\ldots$ \end{curry} which shows that the evaluation of the list elements is not demanded by the functional pattern. In general, a pattern of the form \code{($f$ $t_1$\ldots$t_n$)} for $n>0$ (or of the qualified form \code{($M.f$ $t_1$\ldots$t_n$)} for $n \geq 0$) is interpreted as a functional pattern if $f$ is not a visible constructor but a defined function that is visible in the scope of the pattern. Furthermore, for a functional pattern to be well defined, there are two additional requirements to be satisfied: \begin{enumerate} \item If a function $f$ is defined by means of a functional pattern $fp$, then the evaluation of $fp$ must not depend on $f$, i.e., the semantics of a function defined using functional patterns must not (transitively) depend on its own definition. This excludes definitions such as \begin{curry} (xs ++ ys) ++ zs = xs ++ (ys ++ zs) \end{curry} and is necessary to assign a semantics to funtions employing functional patterns (see \cite{AntoyHanus05LOPSTR} for more details). \item Only functions that are globally defined may occur inside a functional pattern. This restriction ensures that no local variable might occur in the value of a functional pattern, which might lead to an non-intuitive semantics. Consider, for instance, the following (complicated) equality operation \begin{curry} eq :: a -> a -> Bool eq x y = h y where g True = x h (g a) = a \end{curry} where the locally defined function \code{g} occurs in the functional pattern \code{(g a)} of \code{h}. Since \code{(g a)} evaluates to the value of \code{x} whereas \code{a} is instantiated to \code{True}, the call \code{h y} now evaluates to \code{True} if the value of \code{y} equals the value of \code{x}. In order to check this equality condition, a strict unification between \code{x} and \code{y} is required so that an equivalent definition without functional patterns would be: \begin{curry} eq :: a -> a -> Bool eq x y = h y where h x1 | x =:= x1 = True \end{curry} However, this implies that variables occuring in the value of a functional pattern imply a strict unification if they are defined in an outer scope, whereas variables defined \emph{inside} a functional pattern behave like pattern variables. In consequence, the occurrence of variables from an outer scope inside a functional pattern might lead to an non-intuitive behavior. To avoid such problems, locally defined functions are excluded as functional patterns. Note that this does not exclude a functional pattern inside a local function, which is still perfectly reasonable. \end{enumerate} % It is also possible to combine functional patterns with as-patterns.\index{as-pattern}\pindex{"@} Similarly to the meaning of as-patterns in standard constructor patterns, as-patterns in functional patterns are interpreted as a sequence of pattern matching where the variable of the as-pattern is matched before the given pattern is matched. This process can be described by introducing an auxiliary operation for this two-level pattern matching process. For instance, the definition \begin{curry} f (_ ++ x@[(42,_)] ++ _) = x \end{curry} is considered as syntactic sugar for the expanded definition \begin{curry} f (_ ++ x ++ _) = f' x where f' [(42,_)] = x \end{curry} However, as-patterns are usually implemented in a more efficient way without introducing auxiliary operations. \paragraph{Optimization of programs containing functional patterns.} Since functions patterns can evaluate to non-linear constructor terms, they are dynamically checked for multiple occurrences of variables which are, if present, replaced by equality constraints so that the constructor term is always linear (see \cite{AntoyHanus05LOPSTR} for details). Since these dynamic checks are costly and not necessary for functional patterns that are guaranteed to evaluate to linear terms, there is an optimizer for functional patterns that checks for occurrences of functional patterns that evaluate always to linear constructor terms and replace such occurrences with a more efficient implementation. This optimizer can be enabled by the following possibilities: \begin{itemize} \item Set the environment variable \code{FCYPP} to \ccode{--fpopt} before starting \CYS, e.g., by the shell command \begin{curry} export FCYPP="--fpopt" \end{curry} Then the functional pattern optimization is applied if programs are compiled and loaded in \CYS. \item Put an option into the source code: If the source code of a program contains a line with a comment of the form (the comment must start at the beginning of the line) \begin{curry} {-# PAKCS_OPTION_FCYPP --fpopt #-} \end{curry} then the functional pattern optimization is applied if this program is compiled and loaded in \CYS. \end{itemize} The optimizer also report errors in case of wrong uses of functional patterns (i.e., in case of a function $f$ defined with functional patterns that recursively depend on $f$). \subsection{Order of Pattern Matching} Curry allows multiple occurrences of pattern variables in standard patterns. These are an abbreviation of equational constraints between pattern variables. Functional patterns might also contain multiple occurrences of pattern variables. For instance, the operation \begin{curry} f (_++[x]++_++[x]++_) = x \end{curry} returns all elements with at least two occurrences in a list. If functional patterns as well as multiple occurrences of pattern variables occur in a pattern defining an operation, there are various orders to match an expression against such an operation. In the current implementation, the order is as follows: \begin{enumerate} \item Standard pattern matching: First, it is checked whether the constructor patterns match. Thus, functional patterns and multiple occurrences of pattern variables are ignored. \item Functional pattern matching: In the next phase, functional patterns are matched but occurrences of standard pattern variables in the functional patterns are ignored. \item Non-linear patterns: If standard and functional pattern matching is successful, the equational constraints which correspond to multiple occurrences pattern variables are solved. \item Guards: Finally, the guards supplied by the programmer are checked. \end{enumerate} The order of pattern matching should not influence the computed result. However, it might have some influence on the termination behavior of programs, i.e., a program might not terminate instead of finitely failing. In such cases, it could be necessary to consider the influence of the order of pattern matching. Note that other orders of pattern matching can be obtained using auxiliary operations. \subsection{Type Classes} The concept of type classes is not yet part of the Curry language report. The recognized syntax of type classes is specified in Section~\ref{sec:syntax}. Although the implemented concept of type classes is not fully described in this manual, it is quite similar to Haskell 98 \cite{PeytonJones03Haskell} so that one can look there to find a detailed description. %%% Local Variables: %%% mode: latex %%% TeX-master: "manual" %%% End: pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/external_ops.tex000066400000000000000000000211331323431571100261720ustar00rootroot00000000000000\section{External Functions} \label{sec-external-functions} \index{function!external}\index{external function} Currently, \CYS has no general interface to external functions. Therefore, if a new external function should be added to the system, this function must be declared as \code{external} in the Curry source code and then an implementation for this external function must be inserted in the corresponding back end. An external function is defined as follows in the Curry source code: \begin{enumerate} \item Add a type declaration for the external function somewhere in the body of the appropriate file (usually, the prelude or some system module). \item For external functions it is not allowed to define any rule since their semantics is determined by an external implementation. Instead of the defining rules, you have to write \begin{curry} f external \end{curry} somewhere in the file containing the type declaration for the external function \code{f}. \end{enumerate} For instance, the addition on integers can be declared as an external function as follows: \begin{curry} (+) :: Int -> Int -> Int (+) external \end{curry} The further modifications to be done for an inclusion of an external function has to be done in the back end. A new external function is added to the back end of \CYS by informing the compiler about the existence of an external function and adding an implementation of this function in the run-time system. Therefore, the following items must be added in the \CYS compiler system: \begin{enumerate} \item If the Curry module \code{Mod} contains external functions, there must be a file named \code{Mod.pakcs} containing the specification of these external functions. The contents of this file is in XML format and has the following general structure:\footnote{% \url{http://www.informatik.uni-kiel.de/~pakcs/primitives.dtd} contains a DTD describing the exact structure of these files.} \begin{curry} $\textit{specification of external function~}f_1$ $\ldots$ $\textit{specification of external function~}f_n$ \end{curry} The specification of an external function $f$ with arity $n$ has the form \begin{curry} lib pred \end{curry} where \code{lib} is the Prolog library (stored in the directory of the Curry module or in the global directory \code{\cyshome/src/lib_src}) containing the code implementing this function and \code{pred} is a predicate name in this library implementing this function. Note that the function $f$ must be declared in module \code{Mod}: either as an external function or defined in Curry by equations. In the latter case, the Curry definition is not translated but calls to this function are redirected to the Prolog code specified above. Furthermore, the list of specifications can also contain entries of the form \begin{curry} \end{curry} for functions $f$ with arity $n$ that are declared in module \code{Mod} but should be ignored for code generation, e.g., since they are never called w.r.t.\ to the current implementation of external functions. For instance, this is useful when functions that can be defined in Curry should be (usually more efficiently) are implemented as external functions. Note that the arguments are passed in their current (possibly unevaluated) form. Thus, if the external function requires the arguments to be evaluated in a particular form, this must be done before calling the external function. For instance, the external function for adding two integers requires that both arguments must be evaluated to non-variable head normal form (which is identical to the ground constructor normal form). Therefore, the function \ccode{+} is specified in the prelude by \begin{curry} (+) :: Int -> Int -> Int x + y = (prim_Int_plus $\$$# y) $\$$# x prim_Int_plus :: Int -> Int -> Int prim_Int_plus external \end{curry} where \code{prim_Int_plus} is the actual external function implementing the addition on integers. Consequently, the specification file \code{Prelude.pakcs} has an entry of the form \begin{curry} prim_standard prim_Int_plus \end{curry} where the Prolog library \code{prim_standard.pl} contains the Prolog code implementing this function. \item For most external functions, a \emph{standard interface} is generated by the compiler so that an $n$-ary function can be implemented by an $(n+1)$-ary predicate where the last argument must be instantiated to the result of evaluating the function. The standard interface can be used if all arguments are ensured to be fully evaluated (e.g., see definition of \code{(+)} above) and no suspension control is necessary, i.e., it is ensured that the external function call does not suspend for all arguments. Otherwise, the raw interface (see below) must be used. For instance, the Prolog code implementing \code{prim_Int_plus} contained in the Prolog library \code{prim_standard.pl} is as follows (note that the arguments of \code{(+)} are passed in reverse order to \code{prim_Int_plus} in order to ensure a left-to-right evaluation of the original arguments by the calls to \code{(\$\#)}): \begin{curry} prim_Int_plus(Y,X,R) :- R is X+Y. \end{curry} \item The \emph{standard interface for I/O actions}, i.e., external functions with result type \code{IO~a}, assumes that the I/O action is implemented as a predicate (with a possible side effect) that instantiates the last argument to the returned value of type \ccode{a}. For instance, the primitive predicate \code{prim_getChar} implementing prelude I/O action \code{getChar} can be implemented by the Prolog code \begin{curry} prim_getChar(C) :- get_code(N), char_int(C,N). \end{curry} where \code{char_int} is a predicate relating the internal Curry representation of a character with its ASCII value. \item If some arguments passed to the external functions are not fully evaluated or the external function might suspend, the implementation must follow the structure of the \CYS run-time system by using the \emph{raw interface}. In this case, the name of the external entry must be suffixed by \ccode{[raw]} in the \code{pakcs} file. For instance, if we want to use the raw interface for the external function \code{prim_Int_plus}, the specification file \code{Prelude.pakcs} must have an entry of the form \begin{curry} prim_standard prim_Int_plus[raw] \end{curry} In the raw interface, the actual implementation of an $n$-ary external function consists of the definition of an $(n+3)$-ary predicate $pred$. The first $n$ arguments are the corresponding actual arguments. The $(n+1)$-th argument is a free variable which must be instantiated to the result of the function call after successful execution. The last two arguments control the suspension behavior of the function (see \cite{AntoyHanus00FROCOS} for more details): The code for the predicate $pred$ should only be executed when the $(n+2)$-th argument is not free, i.e., this predicate has always the SICStus-Prolog block declaration \begin{curry} ?- block $pred$(?,$\ldots$,?,-,?). \end{curry} In addition, typical external functions should suspend until the actual arguments are instantiated. This can be ensured by a call to \code{ensureNotFree} or \code{(\$\#)} before calling the external function. Finally, the last argument (which is a free variable at call time) must be unified with the $(n+2)$-th argument after the function call is successfully evaluated (and does not suspend). Additionally, the actual (evaluated) arguments must be dereferenced before they are accessed. Thus, an implementation of the external function for adding integers is as follows in the raw interface: \begin{curry} ?- block prim_Int_plus(?,?,?,-,?). prim_Int_plus(RY,RX,Result,E0,E) :- deref(RX,X), deref(RY,Y), Result is X+Y, E0=E. \end{curry} Here, \code{deref} is a predefined predicate for dereferencing the actual argument into a constant (and \code{derefAll} for dereferencing complex structures). \end{enumerate} % The Prolog code implementing the external functions must be accessible to the run-time system of \CYS by putting it into the directory containing the corresponding Curry module or into the system directory \code{\cyshome/src/lib_src}. Then it will be automatically loaded into the run-time environment of each compiled Curry program. Note that arbitrary functions implemented in C or Java can be connected to \CYS by using the corresponding interfaces of the underlying Prolog system. %%% Local Variables: %%% mode: latex %%% TeX-master: "manual" %%% End: pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/libraries.tex000066400000000000000000000433701323431571100254520ustar00rootroot00000000000000\section{Libraries of the \CYS Distribution} \label{sec:libraries} {\setlength{\parindent}{0.0cm} The \CYS distribution comes with an extensive collection of libraries for application programming. The libraries for arithmetic constraints over real numbers, finite domain constraints, ports for concurrent and distributed programming, and meta-programming by representing Curry programs in Curry are described in the following subsection in more detail. The complete set of libraries with all exported types and functions are described in the further subsections. For a more detailed online documentation of all libraries of \CYS, see \url{http://www.informatik.uni-kiel.de/~pakcs/lib/index.html}. \subsection{Constraints, Ports, Meta-Programming} \subsubsection{Arithmetic Constraints} The primitive entities for the use of arithmetic constraints are defined in the system module \code{CLPR} (cf.\ Section~\ref{sec-modules}), i.e., in order to use them, the program must contain the import declaration \begin{curry} import CLPR \end{curry} Floating point arithmetic is supported in \CYS via arithmetic constraints, i.e., the equational constraint \ccode{2.3 +.~x =:= 5.5} is solved by binding \code{x} to \code{3.2} (rather than suspending the evaluation of the addition, as in corresponding constraints on integers like \ccode{3+x=:=5}). All operations related to floating point numbers are suffixed by \ccode{.}. The following functions and constraints on floating point numbers are supported in \CYS: \begin{description} \item[\code{(+.) :: Float -> Float -> Float}]~\\ Addition on floating point numbers. \item[\code{(-.) :: Float -> Float -> Float}]~\\ Subtraction on floating point numbers. \item[\code{(*.) :: Float -> Float -> Float}]~\\ Multiplication on floating point numbers. \item[\code{(/.) :: Float -> Float -> Float}]~\\ Division on floating point numbers. \item[\code{(<.) :: Float -> Float -> Bool}]~\\ Comparing two floating point numbers with the ``less than'' relation. \item[\code{(>.) :: Float -> Float -> Bool}]~\\ Comparing two floating point numbers with the ``greater than'' relation. \item[\code{(<=.) :: Float -> Float -> Bool}]~\\ Comparing two floating point numbers with the ``less than or equal'' relation. \item[\code{(>=.) :: Float -> Float -> Bool}]~\\ Comparing two floating point numbers with the ``greater than or equal'' relation. \item[\code{i2f :: Int -> Float}]~\\ Converting an integer number into a floating point number. \end{description} As an example, consider a constraint \code{mortgage} which relates the principal \code{p}, the lifetime of the mortgage in months \code{t}, the monthly interest rate \code{ir}, the monthly repayment \code{r}, and the outstanding balance at the end of the lifetime \code{b}. The financial calculations can be defined by the following two rules in Curry (the second rule describes the repeated accumulation of the interest): \begin{curry} import CLPR mortgage p t ir r b | t >. 0.0 \& t <=. 1.0 --lifetime not more than 1 month? = b =:= p *. (1.0 +. t *. ir) -. t*.r $\listline$ mortgage p t ir r b | t >. 1.0 --lifetime more than 1 month? = mortgage (p *. (1.0+.ir)-.r) (t-.1.0) ir r b \end{curry} Then we can calculate the monthly payment for paying back a loan of \$100,000 in 15 years with a monthly interest rate of 1\% by solving the goal \begin{curry} mortgage 100000.0 180.0 0.01 r 0.0 \end{curry} which yields the solution \code{r=1200.17}. Note that only linear arithmetic equalities or inequalities are solved by the constraint solver. Non-linear constraints like \ccode{x *.~x =:= 4.0} are suspended until they become linear. \subsubsection{Finite Domain Constraints} Finite domain constraints are constraints where all variables can only take a finite number of possible values. For simplicity, the domain of finite domain variables are identified with a subset of the integers, i.e., the type of a finite domain variable is \code{Int}. The arithmetic operations related to finite domain variables are suffixed by \ccode{\#}. The following functions and constraints for finite domain constraint solving are currently supported in \CYS:\footnote{Note that this library is based on the corresponding library of SICStus-Prolog but does not implement the complete functionality of the SICStus-Prolog library. However, using the \CYS interface for external functions (see Appendix~\ref{sec-external-functions}), it is relatively easy to provide the complete functionality.} \begin{description} \item[\code{domain :: [Int] -> Int -> Int -> Bool}]~\\ The constraint \ccode{domain [$x_1,\ldots,x_n$] $l$ $u$} is satisfied if the domain of all variables $x_i$ is the interval $[l,u]$. \item[\code{(+\#) :: Int -> Int -> Int}]~\\ Addition on finite domain values. \item[\code{(-\#) :: Int -> Int -> Int}]~\\ Subtraction on finite domain values. \item[\code{(*\#) :: Int -> Int -> Int}]~\\ Multiplication on finite domain values. \item[\code{(=\#) :: Int -> Int -> Bool}]~\\ Equality of finite domain values. \item[\code{(/=\#) :: Int -> Int -> Bool}]~\\ Disequality of finite domain values. \item[\code{(<\#) :: Int -> Int -> Bool}]~\\ ``less than'' relation on finite domain values. \item[\code{(<=\#) :: Int -> Int -> Bool}]~\\ ``less than or equal'' relation on finite domain values. \item[\code{(>\#) :: Int -> Int -> Bool}]~\\ ``greater than'' relation on finite domain values. \item[\code{(>=\#) :: Int -> Int -> Bool}]~\\ ``greater than or equal'' relation on finite domain values. \item[\code{sum :: [Int] -> (Int -> Int -> Bool) -> Int -> Bool}]~\\ The constraint \ccode{sum [$x_1,\ldots,x_n$] $op$ $x$} is satisfied if all $x_1+\cdots + x_n \mathrel{op} x$ is satisfied, where $op$ is one of the above finite domain constraint relations (e.g., \ccode{=\#}). \item[\code{scalar_product :: [Int] -> [Int] -> (Int -> Int -> Bool) -> Int -> Bool}]~\\ The constraint \ccode{scalar_product [$c_1,\ldots,c_n$] [$x_1,\ldots,x_n$] $op$ $x$} is satisfied if all $c_1 x_1+\cdots + c_n x_n \mathrel{op} x$ is satisfied, where $op$ is one of the above finite domain constraint relations. \item[\code{count :: Int -> [Int] -> (Int -> Int -> Bool) -> Int -> Bool}]~\\ The constraint \ccode{count $k$ [$x_1,\ldots,x_n$] $op$ $x$} is satisfied if all $k \mathrel{op} x$ is satisfied, where $n$ is the number of the $x_i$ that are equal to $k$ and $op$ is one of the above finite domain constraint relations. \item[\code{allDifferent :: [Int] -> Bool}]~\\ The constraint \ccode{allDifferent [$x_1,\ldots,x_n$]} is satisfied if all $x_i$ have pairwise different values. \item[\code{labeling :: [LabelingOption] -> [Int] -> Bool}]~\\ The constraint \ccode{labeling $os$ [$x_1,\ldots,x_n$]} non-deterministically instantiates all $x_i$ to the values of their domain according to the options $os$ (see the module documentation for further details about these options). \end{description} These entities are defined in the system module \code{CLPFD} (cf.\ Section~\ref{sec-modules}), i.e., in order to use it, the program must contain the import declaration \begin{curry} import CLPFD \end{curry} As an example, consider the classical \ccode{send+more=money} problem where each letter must be replaced by a different digit such that this equation is valid and there are no leading zeros. The usual way to solve finite domain constraint problems is to specify the domain of the involved variables followed by a specification of the constraints and the labeling of the constraint variables in order to start the search for solutions. Thus, the \ccode{send+more=money} problem can be solved as follows: \begin{curry} import CLPFD smm l = l =:= [s,e,n,d,m,o,r,y] & domain l 0 9 & s ># 0 & m ># 0 & allDifferent l & 1000 *# s +# 100 *# e +# 10 *# n +# d +# 1000 *# m +# 100 *# o +# 10 *# r +# e =# 10000 *# m +# 1000 *# o +# 100 *# n +# 10 *# e +# y & labeling [FirstFail] l where s,e,n,d,m,o,r,y free \end{curry} Then we can solve this problem by evaluating the goal \ccode{smm [s,e,n,d,m,o,r,y]} which yields the unique solution \code{\{s=9,e=5,n=6,d=7,m=1,o=0,r=8,y=2\}}. \subsubsection{Ports: Distributed Programming in Curry} \label{sec-ports} To support the development of concurrent and distributed applications, \CYS supports internal and external ports\index{ports} as described in \cite{Hanus99PPDP}. Since \cite{Hanus99PPDP} contains a detailed description of this concept together with various programming examples, we only summarize here the functions and constraints supported for ports in \CYS. The basic datatypes, functions, and constraints for ports are defined in the system module \code{Ports} (cf.\ Section~\ref{sec-modules}), i.e., in order to use ports, the program must contain the import declaration \begin{curry} import Ports \end{curry} This declaration includes the following entities in the program: \begin{description} \item[\code{Port a}\pindex{Port}]~\\ This is the datatype of a port to which one can send messages of type \code{a}. \item[\code{openPort :: Port a -> [a] -> Bool}]~\\ The constraint \ccode{openPort p s}\pindex{openPort} establishes a new \emph{internal port} \code{p} with an associated message stream \code{s}. \code{p} and \code{s} must be unbound variables, otherwise the constraint fails (and causes a runtime error). \item[\code{send :: a -> Port a -> Bool}]~\\ The constraint \ccode{send m p}\pindex{send} is satisfied if \code{p} is constrained to contain the message \code{m}, i.e., \code{m} will be sent to the port \code{p} so that it appears in the corresponding stream. \item[\code{doSend :: a -> Port a -> IO ()}]~\\ The I/O action \ccode{doSend m p}\pindex{doSend} solves the constraint \ccode{send m p} and returns nothing. \item[\code{openNamedPort :: String -> IO [a]}]~\\ The I/O action \ccode{openNamedPort n}\pindex{openNamedPort} opens a new \emph{external port} with symbolic name \code{n} and returns the associated stream of messages. \item[\code{connectPort :: String -> IO (Port a)}]~\\ The I/O action \ccode{connectPort n}\pindex{connectPort} returns a port with symbolic name \code{n} (i.e., \code{n} must have the form ``\emph{portname@machine}) to which one can send messages by the \code{send} constraint. Currently, no dynamic type checking is done for external ports, i.e., sending messages of the wrong type to a port might lead to a failure of the receiver. \end{description} \paragraph{Restrictions:} Every expression, possibly containing logical variables, can be sent to a port. However, as discussed in \cite{Hanus99PPDP}, port communication is strict, i.e., the expression is evaluated to normal form before sending it by the constraint \code{send}. Furthermore, if messages containing logical variables are sent to \emph{external ports}, the behavior is as follows: \begin{enumerate} \item The sender waits until all logical variables in the message have been bound by the receiver. \item The binding of a logical variable received by a process is sent back to the sender of this logical variable only if it is bound to a \emph{ground} term, i.e., as long as the binding contains logical variables, the sender is not informed about the binding and, therefore, the sender waits. \end{enumerate} \paragraph{External ports on local machines:} The implementation of external ports assumes that the host machine running the application is connected to the Internet (i.e., it uses the standard IP address of the host machine for message sending). If this is not the case and the application should be tested by using external ports only on the local host without a connection to the Internet, the environment variable \ccode{PAKCS_LOCALHOST}\pindex{PAKCS_LOCALHOST} must be set to \ccode{yes} \emph{before \CYS is started}. In this case, the IP address \code{127.0.0.1} and the hostname \ccode{localhost} are used for identifying the local machine. \paragraph{Selection of Unix sockets for external ports:} The implementation of ports uses sockets to communicate messages sent to external ports. Thus, if a Curry program uses the I/O action \code{openNamedPort}\pindex{openNamedPort} to establish an externally visible server, \CYS selects a Unix socket for the port communication. Usually, a free socket is selected by the operating system. If the socket number should be fixed in an application (e.g., because of the use of firewalls\index{firewall} that allow only communication over particular sockets), then one can set the environment variable \ccode{PAKCS_SOCKET}\pindex{PAKCS_SOCKET} to a distinguished socket number before \CYS is started. This has the effect that \CYS uses only this socket number for communication (even for several external ports used in the same application program). \paragraph{Debugging:} To debug distributed systems, it is sometimes helpful to see all messages sent to external ports. This is supported by the environment variable \ccode{PAKCS_TRACEPORTS}.\pindex{PAKCS_TRACEPORTS} If this variable is set to \ccode{yes} \emph{before \CYS is started}, then all connections to external ports and all messages sent and received on external ports are printed on the standard error stream. \subsubsection{AbstractCurry and FlatCurry: Meta-Programming in Curry} \label{sec-flatcurry} \index{AbstractCurry} \index{FlatCurry} To support meta-programming, i.e., the manipulation of Curry programs in Curry, there are system modules \code{AbstractCurry.Types} and \code{FlatCurry.Types} which define datatypes for the representation of Curry programs. \code{AbstractCurry.Types} is a more direct representation of a Curry program, whereas \code{FlatCurry.Types} is a simplified representation where local function definitions are replaced by global definitions (i.e., lambda lifting has been performed) and pattern matching is translated into explicit case/or expressions. Thus, \code{FlatCurry.Types} can be used for more back-end oriented program manipulations (or, for writing new back ends for Curry), whereas \code{AbstractCurry.Types} is intended for manipulations of programs that are more oriented towards the source program. There are predefined I/O actions to read AbstractCurry and FlatCurry programs: \code{AbstractCurry.Files.readCurry}\pindex{readCurry}) and \code{FlatCurry.Files.readFlatCurry}\pindex{readFlatCurry}). These actions parse the corresponding source program and return a data term representing this program (according to the definitions in the modules \code{AbstractCurry.Types} and \code{FlatCurry.Types}). Since all datatypes are explained in detail in these modules, we refer to the online documentation\footnote{% \url{http://www.informatik.uni-kiel.de/~pakcs/lib/FlatCurry.Types.html} and \url{http://www.informatik.uni-kiel.de/~pakcs/lib/AbstractCurry.Types.html}} of these modules. As an example, consider a program file \ccode{test.curry} containing the following two lines: \begin{curry} rev [] = [] rev (x:xs) = (rev xs) ++ [x] \end{curry} Then the I/O action \code{(FlatCurry.Files.readFlatCurry "test")} returns the following term: \begin{curry} (Prog "test" ["Prelude"] [] [Func ("test","rev") 1 Public (FuncType (TCons ("Prelude","[]") [(TVar 0)]) (TCons ("Prelude","[]") [(TVar 0)])) (Rule [0] (Case Flex (Var 1) [Branch (Pattern ("Prelude","[]") []) (Comb ConsCall ("Prelude","[]") []), Branch (Pattern ("Prelude",":") [2,3]) (Comb FuncCall ("Prelude","++") [Comb FuncCall ("test","rev") [Var 3], Comb ConsCall ("Prelude",":") [Var 2,Comb ConsCall ("Prelude","[]") []] ]) ]))] [] ) \end{curry} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Definitions in order to LaTeX documents generated by "currydoc --tex" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\currymodule}[1]{\subsubsection{Library #1}\label{Library:#1}} \newcommand{\currytypesstart}{\subsubsection*{Exported types:}} \newcommand{\currytypesstop}{} \newcommand{\currytypesynstart}[2]{{\tt type #2}\pindex{#1} \begin{quote}} \newcommand{\currytypesynstop}{\end{quote}} \newcommand{\currydatastart}[1]{{\tt data #1}\pindex{#1} \begin{quote}} \newcommand{\currydatacons}{\end{quote}% \begin{itemize}\item[] \hspace{-4ex}\emph{Exported constructors:}} \newcommand{\currydatastop}{\end{itemize}} \newcommand{\curryconsstart}[2]{\item {\tt #1~::~#2}\par} \newcommand{\curryfuncstart}{\subsubsection*{Exported functions:}} \newcommand{\curryfuncstop}{} \newcommand{\curryfunctionstart}[2]{#2\pindex{#1}\begin{quote}} \newcommand{\curryfunctionstop}{\end{quote}} \newcommand{\curryfuncsig}[2]{{\tt #1~::~#2}} \subsection{General Libraries} \input{lib/AllSolutions} \input{lib/Char} \input{lib/Combinatorial} \input{lib/CPNS} \input{lib/Debug} \input{lib/Directory} \input{lib/Distribution} \input{lib/Either} \input{lib/ErrorState} \input{lib/FileGoodies} \input{lib/FilePath} \input{lib/Findall} \input{lib/Float} \input{lib/Function} \input{lib/FunctionInversion} \input{lib/GetOpt} \input{lib/Global} \input{lib/Integer} \input{lib/IO} \input{lib/IOExts} \input{lib/List} \input{lib/Maybe} \input{lib/NamedSocket} \input{lib/Nat} \input{lib/Profile} \input{lib/PropertyFile} \input{lib/Read} \input{lib/ReadNumeric} \input{lib/ReadShowTerm} \input{lib/SetFunctions} \input{lib/Socket} \input{lib/State} \input{lib/System} \input{lib/Time} \input{lib/Unsafe} \input{lib/Test.EasyCheck} \input{lib/Test.Prop} \subsection{Data Structures and Algorithms} \input{lib/Array} \input{lib/Dequeue} \input{lib/FiniteMap} \input{lib/Random} \input{lib/RedBlackTree} \input{lib/SCC} \input{lib/SearchTree} \input{lib/SearchTreeTraversal} \input{lib/SetRBT} \input{lib/Sort} \input{lib/TableRBT} \input{lib/Traversal} \input{lib/ValueSequence} } % end setlength parindent %%% Local Variables: %%% mode: latex %%% TeX-master: "manual" %%% End: pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/manual.bib000066400000000000000000000377241323431571100247150ustar00rootroot00000000000000% BibTeX bibliography file @InProceedings{AlbertAlpuenteHanusVidal99LPAR, author = {Albert, E. and Alpuente, M. and Hanus, M. and Vidal, G.}, title = {A Partial Evaluation Framework for {C}urry Programs}, booktitle = {Proc.\ of the 6th International Conference on Logic for Programming and Automated Reasoning (LPAR'99)}, year = {1999}, pages = {376-395}, publisher = {Springer LNCS 1705} } @InProceedings{AlbertHanusVidal00LPAR, author = {Albert, E. and Hanus, M. and Vidal, G.}, title = {Using an Abstract Representation to Specialize Functional Logic Programs}, booktitle = {Proc.\ of the 7th International Conference on Logic for Programming and Automated Reasoning (LPAR 2000)}, year = {2000}, pages = {381-398}, publisher = {Springer LNCS 1955} } @InProceedings{AlbertHanusVidal01FLOPS, author = {Albert, E. and Hanus, M. and Vidal, G.}, title = {A Practical Partial Evaluator for a Multi-Paradigm Declarative Language}, booktitle = {Proc.\ of the 5th International Symposium on Functional and Logic Programming (FLOPS 2001)}, year = {2001}, pages = {326-342}, publisher = {Springer LNCS 2024} } @Article{AlbertHanusVidal02JFLP, author = {Albert, E. and Hanus, M. and Vidal, G.}, title = {A Practical Partial Evaluator for a Multi-Paradigm Declarative Language}, journal = {Journal of Functional and Logic Programming}, year = {2002}, volume = {2002}, number = {1}, publisher = {EAPLS} } @InProceedings{AntoyHanus00FROCOS, author = {Antoy, S. and Hanus, M.}, title = {Compiling Multi-Paradigm Declarative Programs into {P}rolog}, booktitle = {Proc. International Workshop on Frontiers of Combining Systems (FroCoS'2000)}, year = {2000}, pages = {171-185}, publisher = {Springer LNCS 1794} } @INPROCEEDINGS{AntoyHanus05LOPSTR, author = {Antoy, S. and Hanus, M.}, title = {Declarative Programming with Function Patterns}, year = {2005}, booktitle = {Proceedings of the International Symposium on Logic-based Program Synthesis and Transformation (LOPSTR'05)}, pages = {6-22}, publisher = {Springer LNCS 3901} } @INPROCEEDINGS{AntoyHanus09, author = {Antoy, S. and Hanus, M.}, title = {Set Functions for Functional Logic Programming}, year = {2009}, booktitle = {Proceedings of the 11th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming (PPDP'09)}, doi = {http://doi.acm.org/10.1145/1599410.1599420}, pages = {73-82}, publisher = {ACM Press} } @INPROCEEDINGS{AntoyHanus12PADL, author = {Antoy, S. and Hanus, M.}, title = {Contracts and Specifications for Functional Logic Programming}, year = {2012}, booktitle = {Proc. of the 14th International Symposium on Practical Aspects of Declarative Languages (PADL 2012)}, doi = {http://dx.doi.org/10.1007/978-3-642-27694-1_4}, pages = {33-47}, publisher = {Springer LNCS 7149} } @INPROCEEDINGS{AntoyHanus14, author = {Antoy, S. and Hanus, M.}, title = {Curry without {Success}}, year = {2014}, booktitle = {Proc.\ of the 23rd International Workshop on Functional and (Constraint) Logic Programming (WFLP 2014)}, doi = {http://ceur-ws.org/Vol-1335/wflp2014_paper5.pdf}, pages = {140-154}, publisher = {CEUR-WS.org}, series = {{CEUR} Workshop Proceedings}, volume = {1335} } @INPROCEEDINGS{AntoyHanus15LOPSTR, author = {Antoy, S. and Hanus, M.}, title = {From Boolean Equalities to Constraints}, year = {2015}, booktitle = {Proceedings of the 25th International Symposium on Logic-based Program Synthesis and Transformation (LOPSTR 2015)}, pages = {73-88}, publisher = {Springer LNCS 9527} } @INPROCEEDINGS{AntoyHanus16PADL, author = {Antoy, S. and Hanus, M.}, title = {Default Rules for {Curry}}, year = {2016}, booktitle = {Proc. of the 18th International Symposium on Practical Aspects of Declarative Languages (PADL 2016)}, pages = {65-82}, publisher = {Springer LNCS 9585} } @INPROCEEDINGS{AntoyHanusLibby16, author = {Antoy, S. and Hanus, M. and Libby, S.}, title = {Proving Non-Deterministic Computations in {Agda}}, year = {2016}, booktitle = {Proc. of the 24th International Workshop on Functional and (Constraint) Logic Programming (WFLP 2016), to appear in EPTCS} } @INPROCEEDINGS{AntoyHanusLibby17EPTCS, author = {Antoy, S. and Hanus, M. and Libby, S.}, title = {Proving Non-Deterministic Computations in {Agda}}, year = {2017}, booktitle = {Proc. of the 24th International Workshop on Functional and (Constraint) Logic Programming (WFLP 2016)}, doi = {10.4204/EPTCS.234.13}, pages = {180-195}, publisher = {Open Publishing Association}, series = {Electronic Proceedings in Theoretical Computer Science}, volume = {234} } @INPROCEEDINGS{BrasselChitilHanusHuch04PADL, author = {Bra{\ss}el, B. and Chitil, O. and Hanus, M. and Huch, F.}, title = {Observing Functional Logic Computations}, year = {2004}, booktitle = {Proc. of the Sixth International Symposium on Practical Aspects of Declarative Languages (PADL'04)}, pages = {193-208}, publisher = {Springer LNCS 3057} } @ARTICLE{BrasselHanusHuch04JFLP, author = {Bra{\ss}el, B. and Hanus, M. and Huch, F.}, title = {Encapsulating Non-Determinism in Functional Logic Computations}, year = {2004}, journal = {Journal of Functional and Logic Programming}, number = {6}, publisher = {EAPLS}, volume = {2004} } @INPROCEEDINGS{BrasselHanusMueller08PADL, author = {Bra{\ss}el, B. and Hanus, M. and M{\"u}ller, M.}, title = {High-Level Database Programming in {Curry}}, year = {2008}, booktitle = {Proc. of the Tenth International Symposium on Practical Aspects of Declarative Languages (PADL'08)}, pages = {316-332}, publisher = {Springer LNCS 4902} } @InProceedings{CaballeroLopez99, author = {Caballero, R. and L{\'o}pez-Fraguas, F.J.}, title = {A Functional-Logic Perspective of Parsing}, booktitle = {Proc. 4th Fuji International Symposium on Functional and Logic Programming (FLOPS'99)}, year = {1999}, pages = {85-99}, publisher = {Springer LNCS 1722} } @INPROCEEDINGS{ChristiansenFischer08FLOPS, author = {Christiansen, J. and Fischer, S.}, title = {{EasyCheck} - Test Data for Free}, year = {2008}, booktitle = {Proc. of the 9th International Symposium on Functional and Logic Programming (FLOPS 2008)}, pages = {322-336}, publisher = {Springer LNCS 4989} } @INPROCEEDINGS{ClaessenHughes00, author = {Claessen, K. and Hughes, J.}, title = {QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs}, year = {2000}, booktitle = {International Conference on Functional Programming (ICFP'00)}, pages = {268-279}, publisher = {ACM Press} } @Misc{Hanus02Curry, author = {Hanus (ed.), M.}, title = {Curry: An Integrated Functional Logic Language (Vers.\ 0.7.2)}, year = {2002}, howpublished = {Available at \verb+http://www.informatik.uni-kiel.de/~curry+} } @MISC{Hanus03Curry, author = "Hanus (ed.), M.", title = "Curry: An Integrated Functional Logic Language (Vers.\ 0.8)", year = "2003", howpublished = "Available at \verb+http://www.informatik.uni-kiel.de/~curry+" } @InProceedings{Hanus00PADL, author = {Hanus, M.}, title = {A Functional Logic Programming Approach to Graphical User Interfaces}, booktitle = {International Workshop on Practical Aspects of Declarative Languages (PADL'00)}, year = {2000}, pages = {47-62}, publisher = {Springer LNCS 1753} } @InProceedings{Hanus01PADL, author = {Hanus, M.}, title = {High-Level Server Side Web Scripting in {C}urry}, booktitle = {Proc.\ of the Third International Symposium on Practical Aspects of Declarative Languages (PADL'01)}, year = {2001}, pages = {76-92}, publisher = {Springer LNCS 1990} } @INPROCEEDINGS{Hanus04WFLP, author = {Hanus, M.}, title = {Dynamic Predicates in Functional Logic Programs}, year = {2004}, address = {Aachen (Germany)}, booktitle = {Proc. 13th International Workshop on Functional and (Constraint) Logic Programming (WFLP 2004)}, pages = {62-73}, publisher = {Technical Report AIB-2004-05, RWTH Aachen} } @INPROCEEDINGS{Hanus05WCFLP, author = {Hanus, M.}, title = {A Generic Analysis Environment for Declarative Programs}, year = {2005}, signature = {nocopy}, keywords = {functional programming, logic programming, program analysis, programming environment}, booktitle = {Proc. of the ACM SIGPLAN 2005 Workshop on Curry and Functional Logic Programming (WCFLP 2005)}, pages = {43-48}, publisher = {ACM Press} } @INPROCEEDINGS{Hanus06PPDP, author = {Hanus, M.}, title = {Type-Oriented Construction of Web User Interfaces}, year = {2006}, booktitle = {Proceedings of the 8th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming (PPDP'06)}, pages = {27-38}, publisher = {ACM Press} } @INPROCEEDINGS{Hanus06WLPE, author = {Hanus, M.}, title = {{CurryBrowser}: A Generic Analysis Environment for {Curry} Programs}, year = {2006}, booktitle = {Proc. of the 16th Workshop on Logic-based Methods in Programming Environments (WLPE'06)}, pages = {61-74} } @MISC{Hanus16Curry, author = {Hanus (ed.), M.}, title = {Curry: An Integrated Functional Logic Language (Vers.\ 0.9.0)}, year = {2016}, howpublished = {Available at \url{http://www.curry-language.org}} } @INPROCEEDINGS{Hanus97POPL, author = {Hanus, M.}, title = {A Unified Computation Model for Functional and Logic Programming}, year = {1997}, signature = {eqlp, books}, keywords = {functional programming, logic programming, residuation, narrowing, lazy narrowing}, booktitle = {Proc.\ of the 24th ACM Symposium on Principles of Programming Languages (Paris)}, pages = {80-93} } @InProceedings{Hanus99PPDP, author = {Hanus, M.}, title = {Distributed Programming in a Multi-Paradigm Declarative Language}, booktitle = {Proc.\ of the International Conference on Principles and Practice of Declarative Programming (PPDP'99)}, year = {1999}, pages = {376-395}, publisher = {Springer LNCS 1702} } @INPROCEEDINGS{HanusKluss09PADL, author = {Hanus, M. and Klu{\ss}, C.}, title = {Declarative Programming of User Interfaces}, year = {2009}, booktitle = {Proc. of the 11th International Symposium on Practical Aspects of Declarative Languages (PADL'09)}, pages = {16-30}, publisher = {Springer LNCS 5418} } @INPROCEEDINGS{HanusKoschnicke10PADL, author = {Hanus, M. and Koschnicke, S.}, title = {An {ER-based} Framework for Declarative Web Programming}, year = {2010}, booktitle = {Proc. of the 12th International Symposium on Practical Aspects of Declarative Languages (PADL 2010)}, doi = {http://dx.doi.org/10.1007/978-3-642-11503-5_18}, pages = {201-216}, publisher = {Springer LNCS 5937} } @ARTICLE{HanusKoschnicke14TPLP, author = {Hanus, M. and Koschnicke, S.}, title = {An {ER-based} Framework for Declarative Web Programming}, year = {2014}, doi = {http://dx.doi.org/10.1017/S1471068412000385}, journal = {Theory and Practice of Logic Programming}, number = {3}, pages = {269-291}, publisher = {Cambridge University Press}, volume = {14} } @INPROCEEDINGS{HanusKrone17EPTCS, author = "Hanus, M. and Krone, J.", title = "A Typeful Integration of {SQL} into {Curry}", year = {2017}, booktitle = {Proceedings of the 24th International Workshop on Functional and (Constraint) Logic Programming}, pages = {104-119}, publisher = {Open Publishing Association}, series = {Electronic Proceedings in Theoretical Computer Science}, volume = {234} } @Article{HanusSadre99JFLP, author = {Hanus, M. and Sadre, R.}, title = {An Abstract Machine for {C}urry and its Concurrent Implementation in {J}ava}, journal = {Journal of Functional and Logic Programming}, year = {1999}, volume = {1999}, number = {6}, publisher = {MIT Press} } @INPROCEEDINGS{HanusSkrlac14, author = {Hanus, M. and Skrlac, F.}, title = {A Modular and Generic Analysis Server System for Functional Logic Programs}, year = {2014}, booktitle = {Proc. of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation (PEPM'14)}, doi = {http://doi.acm.org/10.1145/2543728.2543744}, pages = {181-188}, publisher = {ACM Press} } @INPROCEEDINGS{HanusSteiner98PLILP, author = "Hanus, M. and Steiner, F.", title = "Controlling Search in Declarative Programs", year = "1998", pages = "374-390", publisher = "Springer LNCS 1490", booktitle = "Principles of Declarative Programming (Proc. Joint International Symposium PLILP/ALP'98)" } @INPROCEEDINGS{Johnsson85, author = {Johnsson, T.}, title = {Lambda Lifting: Transforming Programs to Recursive Functions}, year = {1985}, signature = {type-func}, keywords = {functional programming, implementation}, pages = {190-203}, publisher = {Springer LNCS 201}, booktitle = {Functional Programming Languages and Computer Architecture} } @MASTERSTHESIS{Krone15, author = {Krone, J.}, title = {Integration of {SQL} into {Curry}}, year = {2015}, school = {University of Kiel} } @INPROCEEDINGS{Leijen05, author = {Leijen, D.}, title = {Extensible records with scoped labels}, year = {2005}, booktitle = {Proceedings of the 2005 Symposium on Trends in Functional Programming (TFP'05)} } @inproceedings{Lopez-Fraguas07, author = {L\'{o}pez-Fraguas, Francisco Javier and Rodr\'{\i}guez-Hortal\'{a}, Juan and S\'{a}nchez-Hern\'{a}ndez, Jaime}, title = {A Simple Rewrite Notion for Call-time Choice Semantics}, booktitle = {Proceedings of the 9th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming}, series = {PPDP '07}, year = {2007}, isbn = {978-1-59593-769-8}, location = {Wroclaw, Poland}, pages = {197--208}, numpages = {12}, url = {http://doi.acm.org/10.1145/1273920.1273947}, doi = {10.1145/1273920.1273947}, acmid = {1273947}, publisher = {ACM}, address = {New York, NY, USA}, keywords = {constructor-based rewriting logic, functional-logic programming, local bindings, non-determinism calltime choice semantics, sharing, term rewriting systems}, } @INPROCEEDINGS{Norell09, author = {Norell, U.}, title = {Dependently Typed Programming in {Agda}}, year = {2009}, booktitle = {Proceedings of the 6th International Conference on Advanced Functional Programming (AFP'08)}, doi = {http://dl.acm.org/citation.cfm?id=1813347.1813352}, pages = {230-266}, publisher = {Springer} } @InProceedings{OderskyWadler97, author = {Odersky, M. and Wadler, P.}, title = {Pizza into {J}ava: Translating Theory into Practice}, booktitle = {Proc.\ of the 24th ACM Symposium on Principles of Programming Languages (Paris)}, year = {1997}, pages = {146-159} } @book{Peemoeller2016, author = {Bj{\"o}rn Peem{\"o}ller}, title = {Normalization and Partial Evaluation of Functional Logic Programs}, publisher = {Department of Computer Science, Kiel University}, year = {2016}, note = {Dissertation, Faculty of Engineering, Kiel University} } @BOOK{PeytonJones03Haskell, title = {Haskell 98 Language and Libraries---The Revised Report}, year = {2003}, editor = {Peyton Jones, S.}, publisher = {Cambridge University Press} } @INCOLLECTION{Wadler87, author = {Wadler, P.}, title = {Efficient Compilation of Pattern-Matching}, year = {1987}, signature = {books}, keywords = {functional programming, implementation}, editor = {Peyton Jones, S.L.}, pages = {78-103}, publisher = {Prentice Hall}, booktitle = {The Implementation of Functional Programming Languages} } pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/manual.tex000066400000000000000000000120221323431571100247410ustar00rootroot00000000000000\documentclass[11pt,fleqn]{article} \usepackage[T1]{fontenc} \usepackage{amssymb} \usepackage{amsmath} \usepackage{csquotes} \usepackage{latexsym} \usepackage{makeidx} \usepackage{url} \usepackage{xspace} \usepackage{graphicx} \usepackage{syntax} \usepackage{textcomp} \input{version} % define home dir of the Curry system in order to locate tool manuals: \newcommand{\curryhome}{../..} %%% ------------------------------------------------------------------ \usepackage[colorlinks,linkcolor=blue]{hyperref} \hypersetup{bookmarksopen=true} \hypersetup{bookmarksopenlevel=0} \hypersetup{pdftitle={PAKCS: The Portland Aachen Kiel Curry System}} \hypersetup{pdfauthor={Michael Hanus}} %\hypersetup{pdfstartview=Title} \hypersetup{pdfstartview=FitH} \usepackage{thumbpdf} %%% ------------------------------------------------------------------ \setlength{\textwidth}{16.5cm} \setlength{\textheight}{23cm} \renewcommand{\baselinestretch}{1.1} \setlength{\topmargin}{-1cm} \setlength{\oddsidemargin}{0cm} \setlength{\evensidemargin}{0cm} \setlength{\marginparwidth}{0.0cm} \setlength{\marginparsep}{0.0cm} \newlength{\figurewidth} \setlength{\figurewidth}{\textwidth} \addtolength{\figurewidth}{-0.4cm} % font for program texts \renewcommand{\tt}{\usefont{OT1}{cmtt}{m}{n}\selectfont} \newcommand{\codefont}{\small\tt} \usepackage{listings} \lstset{aboveskip=1.5ex, belowskip=1.5ex, showstringspaces=false, % no special string space mathescape=true, flexiblecolumns=false, xleftmargin=2ex, basewidth=0.52em, basicstyle=\small\ttfamily} \lstset{literate={->}{{$\rightarrow{}\!\!\!$}}3 } \lstnewenvironment{curry}{}{} \lstnewenvironment{currynomath}{\lstset{mathescape=false}}{} % Curry w/o math \newcommand{\listline}{\vrule width0pt depth1.75ex} % program text in normal text \newcommand{\code}[1]{\mbox{\codefont #1}} % program text in normal text with apostrophs \newcommand{\ccode}[1]{``\code{#1}''} \newcommand{\pindex}[1]{\index{#1@{\tt #1}}} % program elements in index \newcommand{\todo}[1]{\fbox{\sc To do: #1}} \newcommand{\CYS}{PAKCS\xspace} % name of the Curry system described here \newcommand{\cyshome}{\mbox{\textit{pakcshome}}\xspace} % symbolic installation directory \newcommand{\curryrc}{.pakcsrc} % name of the system's rc file % allow underscores in programs: \catcode`\_=\active \let_=\sb \catcode`\_=12 \newcommand{\translation}[1]{\bigskip\fbox{\begin{minipage}{15cm}\textbf{Translation: }{#1}\end{minipage}}\par\bigskip} % produce an index: \makeindex \begin{document} \sloppy \begin{titlepage} \pdfbookmark[1]{Title}{Title} \begin{center} \fbox{ \begin{minipage}[t]{\figurewidth} \begin{center}\vspace{10ex} {\Huge\bf PAKCS \pakcsversion}\\[4ex] {\huge The Portland Aachen Kiel Curry System}\\[5ex] {\huge User Manual}\\[2ex] \pakcsversiondate\\[4ex] \Large Michael Hanus$^1$ [editor] \\[2ex] {\large Additional Contributors:}\\[2ex] Sergio Antoy$^2$ \\ Bernd Bra\ss{}el$^3$ \\ Martin Engelke$^4$ \\ Klaus H\"oppner$^5$ \\ Johannes Koj$^6$ \\ Philipp Niederau$^7$ \\ Bj\"orn Peem\"oller$^8$ \\ Ramin Sadre$^9$ \\ Frank Steiner$^{10}$ \\ Finn Teegen$^{11}$ \\[2ex] \normalsize (1) University of Kiel, Germany, {\tt mh@informatik.uni-kiel.de} \\ (2) Portland State University, USA, {\tt antoy@cs.pdx.edu} \\ (3) University of Kiel, Germany, {\tt bbr@informatik.uni-kiel.de} \\ (4) University of Kiel, Germany, {\tt men@informatik.uni-kiel.de} \\ (5) University of Kiel, Germany, {\tt klh@informatik.uni-kiel.de} \\ (6) RWTH Aachen, Germany, {\tt johannes.koj@sdm.de} \\ (7) RWTH Aachen, Germany, {\tt philipp@navigium.de} \\ (8) University of Kiel, Germany, {\tt bjp@informatik.uni-kiel.de} \\ (9) RWTH Aachen, Germany, {\tt ramin@lvs.informatik.rwth-aachen.de} \\ (10) LMU Munich, Germany, {\tt fst@bio.informatik.uni-muenchen.de} \\ (11) University of Kiel, Germany, {\tt fte@informatik.uni-kiel.de} \\~ \end{center} \end{minipage}} \end{center} \end{titlepage} \pdfbookmark[1]{Contents}{Contents} \tableofcontents \clearpage \include{preface} \include{overview} \include{usage} \include{extensions} \include{syntax} \clearpage \input{tooldocs/transbooleq/manual} \clearpage \input{tooldocs/cpm/currysystem_manual} \clearpage \input{tooldocs/currycheck/manual} \clearpage \input{tooldocs/currybrowse/manual} \clearpage \input{tooldocs/currydoc/manual} \clearpage \input{tooldocs/casc/manual} \clearpage \input{tooldocs/verify/manual} \clearpage \newcommand{\curryppdocs}{tooldocs/currypp} \input{tooldocs/currypp/manual} \clearpage \input{tooldocs/runcurry/manual} \clearpage \input{tooldocs/cass/manual} \clearpage \input{tooldocs/ertools/manual} \clearpage \input{tooldocs/spicey/manual} \clearpage \input{tooldocs/peval/manual} \include{preprocessing} \include{problems} % Bibliography \addcontentsline{toc}{section}{Bibliography} \bibliography{manual} \bibliographystyle{plain} \appendix \include{libraries} \include{markdown_syntax} \clearpage \input{tooldocs/currypp/sqlsyntax} \include{distribution} \include{auxiliary_files} \include{external_ops} % Index \addcontentsline{toc}{section}{Index} \printindex \end{document} pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/markdown_syntax.txt000066400000000000000000000117501323431571100267420ustar00rootroot00000000000000Markdown Syntax =============== This document describes the syntax of texts containing markdown elements. The markdown syntax is intended to simplify the writing of texts whose source is readable and can be easily formatted, e.g., as part of a web document. It is a subset of the [original markdown syntax](http://en.wikipedia.org/wiki/Markdown) (basically, only internal links and pictures are missing) supported by the [Curry](http://curry-language.org/) library [Markdown](http://www.informatik.uni-kiel.de/~pakcs/lib/CDOC/Markdown.html). Paragraphs and Basic Formatting ------------------------------- Paragraphs are separated by at least one line which is empty or does contain only blanks. Inside a paragraph, one can _emphasize_ text or also **strongly emphasize** text. This is done by wrapping it with one or two \_ or \* characters: _emphasize_ *emphasize* __strong__ **strong** Furthermore, one can also mark `program code` text by backtick quotes (`\``): The function `fib` computes Fibonacci numbers. Web links can be put in angle brackets, like in the link : Currently, only links starting with 'http' are recognized (so that one can also use HTML markup). If one wants to put a link under a text, one can put the text in square brackets directly followed by the link in round brackets, as in [Google](http://www.google.com): [Google](http://www.google.com) If one wants to put a character that has a specific meaning in the syntax of Markdown, like \* or \_, in the output document, it should be escaped with a backslash, i.e., a backslash followed by a special character in the source text is translated into the given character (this also holds for program code, see below). For instance, the input text \\_word\\_ produces the output "\_word\_". The following backslash escapes are recognized: \\ backslash \` backtick \* asterisk \_ underscore \{\} curly braces \[\] square brackets \(\) parentheses \# hash symbol \+ plus symbol \- minus symbol (dash) \. dot \ blank \! exclamation mark Lists and Block Formatting -------------------------- An **unordered list** (i.e., without numbering) is introduced by putting a star in front of the list elements (where the star can be preceded by blanks). The individual list elements must contain the same indentation, as in \* First list element with two lines * Next list element. It contains two paragraphs. * Final list element. This is formatted as follows: * First list element with two lines * Next list element. It contains two paragraphs. * Final list element. Instead of a star, one can also put dashes or plus to mark unordered list items. Furthermore, one could nest lists. Thus, the input text \- Color: + Yellow + Read + Blue \- BW: + Black + White is formatted as - Color: + Yellow + Read + Blue - BW: + Black + White Similarly, **ordered lists** (i.e., with numbering each item) are introduced by a number followed by a dot and at least one blank. All following lines belonging to the same numbered item must have the same indent as the first line. The actual value of the number is not important. Thus, the input 1\. First element 99. Second element is formatted as 1. First element 99. Second element A quotation block is marked by putting a right angle followed by a blank in front of each line: > This is > a quotation. It will be formatted as a quote element: > This is > a quotation. A block containing **program code** starts with a blank line and is marked by intending each input line by _at least four spaces_ where all following lines must have at least the same indentation as the first non-blank character of the first line: \ f x y = let z = (x,y) \ in (z,z) The indentation is removed in the output: f x y = let z = (x,y) in (z,z) To visualize the structure of a document, one can also put a line containing only blanks and at least three dashes (stars would also work) in the source text: \------------------------------------------------- This is formatted as a horizontal line: ------------------------------------------------- Headers ------- The are two forms to mark headers. In the first form, one can "underline" the main header in the source text by equal signs and the second-level header by dashes: First-level header ================== Second-level header ------------------- Alternatively (and for more levels), one can prefix the header line by up to six hash characters, where the number of characters corresponds to the header level (where level 1 is the main header): # Main header ## Level 2 header ### Level 3 #### Level 4 ##### Level 5 ###### Level 6 *********************************************************************** pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/overview.tex000066400000000000000000000167051323431571100253460ustar00rootroot00000000000000\section{Overview of \CYS} \subsection{General Use} \label{sec-general} This version of \CYS has been tested on Sun Solaris, Linux, and Mac OS X systems. In principle, it should be also executable on other platforms on which a Prolog system like SICStus-Prolog or SWI-Prolog exists (see the file \code{INSTALL.html} in the \CYS directory for a description of the necessary software to install \CYS). All executable files required to use the different components of \CYS are stored in the directory \code{\cyshome/bin} (where \cyshome is the installation directory of the complete \CYS installation). You should add this directory to your path (e.g., by the \code{bash} command \ccode{export PATH=\cyshome/bin:\$PATH}). The source code of the Curry program must be stored in a file with the suffix \ccode{.curry}, e.g., \code{prog.curry}. Literate programs must be stored in files with the extension \ccode{.lcurry}. %They are automatically converted into corresponding %\ccode{.curry} files by deleting all lines not starting %with \ccode{>} and removing the prefix \ccode{> } of the %remaining lines. Since the translation of Curry programs with \CYS creates some auxiliary files (see Section~\ref{sec-auxfiles} for details), you need write permission in the directory where you have stored your Curry programs. The auxiliary files for all Curry programs in the current directory can be deleted by the command\pindex{cleancurry} \begin{curry} cleancurry \end{curry} (this is a shell script stored in the \code{bin} directory of the \CYS installation, see above). The command \begin{curry} cleancurry -r \end{curry} also deletes the auxiliary files in all subdirectories. \subsection{Restrictions} \label{sec-restrictions} There are a few minor restrictions on Curry programs when they are processed with \CYS: \begin{itemize} \item \index{singleton variables}\index{variables!singleton} \emph{Singleton pattern variables}, i.e., variables that occur only once in a rule, should be denoted as an anonymous variable \ccode{_}, otherwise the parser will print a warning since this is a typical source of programming errors. \item \CYS translates all \emph{local declarations} into global functions with additional arguments (``lambda lifting'', see Appendix~D of the Curry language report). Thus, in the compiled target code, the definition of functions with local declarations look different from their original definition (in order to see the result of this transformation, you can use the CurryBrowser, see Section~\ref{sec-currybrowser}). \item \index{tabulator stops} Tabulator stops instead of blank spaces in source files are interpreted as stops at columns 9, 17, 25, 33, and so on. In general, tabulator stops should be avoided in source programs. \item Since PAKCS compiles Curry programs into Prolog programs, non-deterministic computations are treated as in Prolog by a backtracking strategy, which is known to be incomplete. Thus, the order of rules could influence the ability to find solutions for a given goal. \item Threads created by a concurrent conjunction are not executed in a fair manner (usually, threads corresponding to leftmost constraints are executed with higher priority). \item Encapsulated search\index{encapsulated search}: In order to allow the integration of non-deterministic computations in programs performing I/O at the top-level, \CYS supports the search operators \code{findall}\pindex{findall} and \code{findfirst}\pindex{findfirst}. These and some other operators are available in the library \code{Findall} (i.e., they are not part of the standard prelude). In contrast to the general definition of encapsulated search \cite{HanusSteiner98PLILP}, the current implementation suspends the evaluation of \code{findall} and \code{findfirst} until the argument does not contain unbound global variables. Moreover, the evaluation of \code{findall} is strict, i.e., it computes all solutions before returning the complete list of solutions. Since it is known that the result of these search operators might depend on the evaluation strategy due to the combination of sharing and lazy evaluation (see \cite{BrasselHanusHuch04JFLP} for a detailed discussion), it is recommended to use \emph{set functions}\index{set functions} \cite{AntoyHanus09} as a strategy-independent encapsulation of non-deterministic computations. Set functions compute the set of all results of a defined function but do not encapsulate non-determinism occurring in the actual arguments. See the library \code{SetFunctions} (Section~\ref{Library:SetFunctions}) for more details. \item There is currently no general connection to external constraint solvers. However, the \CYS compiler provides constraint solvers for arithmetic and finite domain constraints (see Appendix~\ref{sec:libraries}). \end{itemize} % Layout rule: % (from Sergio's email of June 2, 1998) %This is the general rule. There are two kinds of syntactic %constructs that rely on the offside rule. One kind has a keyword %indicating the end of the construct. "let ... in" is the only %representative of this kind. Upon recognition of the keyword %"in", all the constructs relying on the offide rule nested within %the "let...in" are closed. The other kind has no closing keyword. %"where" and "choice" are the only constructs of this kind. %Constructs of this kind can be closed only by indentation. Any %line, including a comment, indented less that the construct %terminates it. The indentation of "where", "choice" and "let" is %the indentation of the first token following the keyword of the %construct. % \subsection{Modules in \CYS} \label{sec-modules} \CYS searches for imported modules in various directories. By default, imported modules are searched in the directory of the main program and the system module directory \ccode{\cyshome/lib}. This search path can be extended by setting the environment variable \code{CURRYPATH}\pindex{CURRYPATH} (which can be also set in a \CYS session by the option \ccode{:set path}\pindex{path}\pindex{:set path}, see below) to a list of directory names separated by colons (\ccode{:}). In addition, a local standard search path can be defined in the \ccode{.pakcsrc} file (see Section~\ref{sec-customization}). Thus, modules to be loaded are searched in the following directories (in this order, i.e., the first occurrence of a module file in this search path is imported): \begin{enumerate} \item Current working directory (\ccode{.}) or directory prefix of the main module (e.g., directory \ccode{/home/joe/curryprogs} if one loads the Curry program \ccode{/home/joe/curryprogs/main}). \item The directories enumerated in the environment variable \code{CURRYPATH}. \item The directories enumerated in the \ccode{.pakcsrc} variable \ccode{libraries}. \item The directory \ccode{\cyshome/lib}. \end{enumerate} The same strategy also applies to modules with a hierarchical module name with the only difference that the hierarchy prefix of a module name corresponds to a directory prefix of the module. For instance, if the main module is stored in directory \code{MAINDIR} and imports the module \code{Test.Func}, then the module stored in \code{MAINDIR/Test/Func.curry} is imported (without setting any additional import path) according to the module search strategy described above. Note that the standard prelude (\code{\cyshome/lib/Prelude.curry}) will be always implicitly imported to all modules if a module does not contain an explicit import declaration for the module \code{Prelude}. %%% Local Variables: %%% mode: latex %%% TeX-master: "manual" %%% End: pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/pakcs_overview.eps000066400000000000000000000333161323431571100265130ustar00rootroot00000000000000%!PS-Adobe-2.0 EPSF-2.0 %%Title: pakcs_overview.eps %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Mon Feb 23 14:31:21 2004 %%For: mh@petrus (Michael Hanus) %%BoundingBox: 0 0 491 748 %%Magnification: 0.7900 %%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 748 moveto 0 0 lineto 491 0 lineto 491 748 lineto closepath clip newpath -27.0 748.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.04976 0.04976 sc % % Fig objects follow % % Polyline 7.500 slw gs clippath 9442 5460 m 9547 5460 l 9547 5283 l 9495 5433 l 9442 5283 l cp eoclip n 9495 4950 m 9495 5445 l gs col0 s gr gr % arrowhead n 9442 5283 m 9495 5433 l 9547 5283 l 9442 5283 l cp gs col7 1.00 shd ef gr col0 s % Polyline n 8595 4050 m 10395 4050 l 10395 4950 l 8595 4950 l cp gs col0 s gr /Times-Roman ff 270.00 scf sf 9495 4590 m gs 1 -1 sc (Curry Printer) dup sw pop 2 div neg 0 rm col0 sh gr /Courier-Bold ff 240.00 scf sf 9495 5670 m gs 1 -1 sc (prog.cint) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 5535 6705 m 7335 6705 l 7335 7605 l 5535 7605 l cp gs col0 s gr % Polyline gs clippath 6382 8115 m 6487 8115 l 6487 7938 l 6435 8088 l 6382 7938 l cp eoclip n 6435 7605 m 6435 8100 l gs col0 s gr gr % arrowhead n 6382 7938 m 6435 8088 l 6487 7938 l 6382 7938 l cp gs col7 1.00 shd ef gr col0 s % Polyline gs clippath 5550 7207 m 5550 7102 l 5373 7102 l 5523 7155 l 5373 7207 l cp eoclip n 4995 7155 m 5535 7155 l gs col0 s gr gr % arrowhead n 5373 7207 m 5523 7155 l 5373 7102 l 5373 7207 l cp gs col7 1.00 shd ef gr col0 s /Times-Roman ff 270.00 scf sf 6435 7515 m gs 1 -1 sc (Interpreter) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 270.00 scf sf 6435 7065 m gs 1 -1 sc (TasteCurry) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 240.00 scf sf 6435 8325 m gs 1 -1 sc (Results) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 240.00 scf sf 4635 7245 m gs 1 -1 sc (Goals) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 6255 4005 m 8055 4005 l 8055 4905 l 6255 4905 l cp gs col0 s gr % Polyline gs clippath 7102 5415 m 7207 5415 l 7207 5238 l 7155 5388 l 7102 5238 l cp eoclip n 7155 4905 m 7155 5400 l gs col0 s gr gr % arrowhead n 7102 5238 m 7155 5388 l 7207 5238 l 7102 5238 l cp gs col7 1.00 shd ef gr col0 s /Times-Roman ff 270.00 scf sf 7155 4545 m gs 1 -1 sc (FL Printer) dup sw pop 2 div neg 0 rm col0 sh gr /Courier-Bold ff 240.00 scf sf 7155 5625 m gs 1 -1 sc (prog.fl) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 4139 2204 m 5939 2204 l 5939 3105 l 4139 3105 l cp gs col0 s gr % Polyline gs clippath 4987 2220 m 5092 2220 l 5092 2043 l 5040 2193 l 4987 2043 l cp eoclip n 5040 1710 m 5040 2205 l gs col0 s gr gr % arrowhead n 4987 2043 m 5040 2193 l 5092 2043 l 4987 2043 l cp gs col7 1.00 shd ef gr col0 s % Polyline gs clippath 4987 4020 m 5092 4020 l 5092 3843 l 5040 3993 l 4987 3843 l cp eoclip n 5040 3105 m 5040 4005 l gs col0 s gr gr % arrowhead n 4987 3843 m 5040 3993 l 5092 3843 l 4987 3843 l cp gs col7 1.00 shd ef gr col0 s % Polyline gs clippath 9037 8115 m 9142 8115 l 9142 7938 l 9090 8088 l 9037 7938 l cp eoclip n 9090 7605 m 9090 8100 l gs col0 s gr gr % arrowhead n 9037 7938 m 9090 8088 l 9142 7938 l 9037 7938 l cp gs col7 1.00 shd ef gr col0 s % Polyline n 1440 4005 m 3240 4005 l 3240 4905 l 1440 4905 l cp gs col0 s gr % Polyline gs clippath 2287 5415 m 2392 5415 l 2392 5238 l 2340 5388 l 2287 5238 l cp eoclip n 2340 4905 m 2340 5400 l gs col0 s gr gr % arrowhead n 2287 5238 m 2340 5388 l 2392 5238 l 2287 5238 l cp gs col7 1.00 shd ef gr col0 s % Polyline gs clippath 2287 4020 m 2392 4020 l 2392 3843 l 2340 3993 l 2287 3843 l cp eoclip n 2340 3555 m 2340 4005 l gs col0 s gr gr % arrowhead n 2287 3843 m 2340 3993 l 2392 3843 l 2287 3843 l cp gs col7 1.00 shd ef gr col0 s % Polyline n 4138 809 m 5940 809 l 5940 1709 l 4138 1709 l cp gs col0 s gr % Polyline gs clippath 9037 11220 m 9142 11220 l 9142 11043 l 9090 11193 l 9037 11043 l cp eoclip n 9090 10755 m 9090 11205 l gs col0 s gr gr % arrowhead n 9037 11043 m 9090 11193 l 9142 11043 l 9037 11043 l cp gs col7 1.00 shd ef gr col0 s % Polyline gs clippath 9037 12615 m 9142 12615 l 9142 12438 l 9090 12588 l 9037 12438 l cp eoclip n 9090 12105 m 9090 12600 l gs col0 s gr gr % arrowhead n 9037 12438 m 9090 12588 l 9142 12438 l 9037 12438 l cp gs col7 1.00 shd ef gr col0 s % Polyline gs clippath 9037 8970 m 9142 8970 l 9142 8793 l 9090 8943 l 9037 8793 l cp eoclip n 9090 8505 m 9090 8955 l gs col0 s gr gr % arrowhead n 9037 8793 m 9090 8943 l 9142 8793 l 9037 8793 l cp gs col7 1.00 shd ef gr col0 s % Polyline gs clippath 9037 10365 m 9142 10365 l 9142 10188 l 9090 10338 l 9037 10188 l cp eoclip n 9090 9855 m 9090 10350 l gs col0 s gr gr % arrowhead n 9037 10188 m 9090 10338 l 9142 10188 l 9037 10188 l cp gs col7 1.00 shd ef gr col0 s % Polyline gs clippath 4987 825 m 5092 825 l 5092 648 l 5040 798 l 4987 648 l cp eoclip n 5040 315 m 5040 810 l gs col0 s gr gr % arrowhead n 4987 648 m 5040 798 l 5092 648 l 4987 648 l cp gs col7 1.00 shd ef gr col0 s % Polyline gs clippath 9037 13425 m 9142 13425 l 9142 13248 l 9090 13398 l 9037 13248 l cp eoclip n 9090 12960 m 9090 13410 l gs col0 s gr gr % arrowhead n 9037 13248 m 9090 13398 l 9142 13248 l 9037 13248 l cp gs col7 1.00 shd ef gr col0 s % Polyline gs clippath 9037 14820 m 9142 14820 l 9142 14643 l 9090 14793 l 9037 14643 l cp eoclip n 9090 14310 m 9090 14805 l gs col0 s gr gr % arrowhead n 9037 14643 m 9090 14793 l 9142 14643 l 9037 14643 l cp gs col7 1.00 shd ef gr col0 s % Polyline n 3915 4005 m 5715 4005 l 5715 4905 l 3915 4905 l cp gs col0 s gr % Polyline gs clippath 4762 5415 m 4867 5415 l 4867 5238 l 4815 5388 l 4762 5238 l cp eoclip n 4815 4905 m 4815 5400 l gs col0 s gr gr % arrowhead n 4762 5238 m 4815 5388 l 4867 5238 l 4762 5238 l cp gs col7 1.00 shd ef gr col0 s % Polyline gs clippath 9135 6693 m 9161 6639 l 9024 6574 l 9120 6653 l 8998 6628 l cp eoclip n 7155 5715 m 9135 6660 l gs col0 s gr gr % arrowhead n 8998 6628 m 9120 6653 l 9024 6574 l 8998 6628 l cp gs col7 1.00 shd ef gr col0 s % Polyline gs clippath 6446 6654 m 6495 6689 l 6583 6566 l 6489 6647 l 6534 6531 l cp eoclip n 7155 5715 m 6480 6660 l gs col0 s gr gr % arrowhead n 6534 6531 m 6489 6647 l 6583 6566 l 6534 6531 l cp gs col7 1.00 shd ef gr col0 s % Polyline gs clippath 9465 4020 m 9525 4020 l 9525 3869 l 9495 3989 l 9465 3869 l cp eoclip n 2340 3555 m 9495 3555 l 9495 4005 l gs col0 s gr gr % arrowhead n 9465 3869 m 9495 3989 l 9525 3869 l 9465 3869 l cp gs col7 1.00 shd ef gr col0 s % Polyline gs clippath 7170 4020 m 7230 4020 l 7230 3869 l 7200 3989 l 7170 3869 l cp eoclip n 7200 3555 m 7200 4005 l gs col0 s gr gr % arrowhead n 7170 3869 m 7200 3989 l 7230 3869 l 7170 3869 l cp gs col7 1.00 shd ef gr col0 s % Polyline n 7920 6705 m 10260 6705 l 10260 7605 l 7920 7605 l cp gs col0 s gr % Polyline n 7965 8955 m 10305 8955 l 10305 9855 l 7965 9855 l cp gs col0 s gr % Polyline n 7965 11205 m 10305 11205 l 10305 12105 l 7965 12105 l cp gs col0 s gr % Polyline n 7965 13410 m 10305 13410 l 10305 14310 l 7965 14310 l cp gs col0 s gr % Polyline gs clippath 7935 13957 m 7935 13852 l 7758 13852 l 7908 13905 l 7758 13957 l cp eoclip n 7380 13905 m 7920 13905 l gs col0 s gr gr % arrowhead n 7758 13957 m 7908 13905 l 7758 13852 l 7758 13957 l cp gs col7 1.00 shd ef gr col0 s % Polyline gs clippath 2942 6640 m 2971 6693 l 3103 6621 l 2984 6652 l 3075 6568 l cp eoclip n 4725 5715 m 2970 6660 l gs col0 s gr gr % arrowhead n 3075 6568 m 2984 6652 l 3103 6621 l 3075 6568 l cp gs col7 1.00 shd ef gr col0 s % Polyline gs clippath 2782 10365 m 2887 10365 l 2887 10188 l 2835 10338 l 2782 10188 l cp eoclip n 2835 9855 m 2835 10350 l gs col0 s gr gr % arrowhead n 2782 10188 m 2835 10338 l 2887 10188 l 2782 10188 l cp gs col7 1.00 shd ef gr col0 s % Polyline gs clippath 2782 8115 m 2887 8115 l 2887 7938 l 2835 8088 l 2782 7938 l cp eoclip n 2835 7605 m 2835 8100 l gs col0 s gr gr % arrowhead n 2782 7938 m 2835 8088 l 2887 7938 l 2782 7938 l cp gs col7 1.00 shd ef gr col0 s % Polyline n 1710 8955 m 3915 8955 l 3915 9855 l 1710 9855 l cp gs col0 s gr % Polyline n 1665 6705 m 3870 6705 l 3870 7605 l 1665 7605 l cp gs col0 s gr % Polyline gs clippath 1725 9502 m 1725 9397 l 1548 9397 l 1698 9450 l 1548 9502 l cp eoclip n 1170 9450 m 1710 9450 l gs col0 s gr gr % arrowhead n 1548 9502 m 1698 9450 l 1548 9397 l 1548 9502 l cp gs col7 1.00 shd ef gr col0 s % Polyline gs clippath 2782 8970 m 2887 8970 l 2887 8793 l 2835 8943 l 2782 8793 l cp eoclip n 2835 8505 m 2835 8955 l gs col0 s gr gr % arrowhead n 2782 8793 m 2835 8943 l 2887 8793 l 2782 8793 l cp gs col7 1.00 shd ef gr col0 s /Times-Roman ff 270.00 scf sf 5040 2745 m gs 1 -1 sc (Typechecker) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 270.00 scf sf 9090 7065 m gs 1 -1 sc (TasteCurry) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 270.00 scf sf 9090 7515 m gs 1 -1 sc (DefTree Generator) dup sw pop 2 div neg 0 rm col0 sh gr /Courier-Bold ff 240.00 scf sf 2340 5625 m gs 1 -1 sc (prog.ast) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 270.00 scf sf 2340 4545 m gs 1 -1 sc (AST Printer) dup sw pop 2 div neg 0 rm col0 sh gr /Courier-Bold ff 240.00 scf sf 9090 8325 m gs 1 -1 sc (prog.def) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 270.00 scf sf 5040 1350 m gs 1 -1 sc (Parser) dup sw pop 2 div neg 0 rm col0 sh gr /Courier-Bold ff 240.00 scf sf 9090 10575 m gs 1 -1 sc (prog.pizza) dup sw pop 2 div neg 0 rm col0 sh gr /Courier-Bold ff 240.00 scf sf 5040 135 m gs 1 -1 sc (prog.curry) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 240.00 scf sf 9090 15030 m gs 1 -1 sc (Results) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 270.00 scf sf 9090 11565 m gs 1 -1 sc (Java/Pizza) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 270.00 scf sf 9090 11925 m gs 1 -1 sc (Compiler) dup sw pop 2 div neg 0 rm col0 sh gr /Courier-Bold ff 240.00 scf sf 9090 12870 m gs 1 -1 sc (prog.classes/) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 270.00 scf sf 9090 9315 m gs 1 -1 sc (Curry2Java) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 270.00 scf sf 9135 13770 m gs 1 -1 sc (Curry2Java) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 270.00 scf sf 9090 14175 m gs 1 -1 sc (Runtime System) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 270.00 scf sf 9090 9720 m gs 1 -1 sc (Compiler) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 4680 7470 m gs 1 -1 sc (\(FL Syntax\)) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 240.00 scf sf 7020 13995 m gs 1 -1 sc (Goals) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 240.00 scf sf 2835 10575 m gs 1 -1 sc (Results) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 270.00 scf sf 2835 7065 m gs 1 -1 sc (Curry2Prolog) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 270.00 scf sf 2835 9315 m gs 1 -1 sc (Curry2Prolog) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 270.00 scf sf 2835 9675 m gs 1 -1 sc (Runtime System) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 270.00 scf sf 2790 7470 m gs 1 -1 sc (Compiler) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 240.00 scf sf 810 9540 m gs 1 -1 sc (Goals) dup sw pop 2 div neg 0 rm col0 sh gr /Courier-Bold ff 240.00 scf sf 2835 8325 m gs 1 -1 sc (prog.pl) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 270.00 scf sf 4815 4545 m gs 1 -1 sc (FlatCurry Printer) dup sw pop 2 div neg 0 rm col0 sh gr /Courier-Bold ff 240.00 scf sf 4815 5625 m gs 1 -1 sc (prog.fcy) dup sw pop 2 div neg 0 rm col0 sh gr $F2psEnd rs pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/pakcs_overview.fig000066400000000000000000000040261323431571100264650ustar00rootroot00000000000000#FIG 3.2 Produced by xfig version 3.2.5b Portrait Center Metric A4 79.00 Single -2 1200 2 6 2475 6615 5895 10485 2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 1 0 1.00 105.00 150.00 4815 9765 4815 10260 2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 1 0 1.00 105.00 150.00 4815 7515 4815 8010 2 2 0 1 0 7 100 0 -1 4.000 0 0 -1 0 0 5 3690 8865 5895 8865 5895 9765 3690 9765 3690 8865 2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 1 0 1.00 105.00 150.00 3150 9360 3690 9360 2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 1 0 1.00 105.00 150.00 4815 8415 4815 8865 2 2 0 1 0 7 100 0 -1 4.000 0 0 -1 0 0 5 3645 6615 5850 6615 5850 7515 3645 7515 3645 6615 4 1 0 100 0 0 16 0.0000 4 180 795 4815 10485 Results\001 4 1 0 100 0 0 18 0.0000 4 270 1665 4815 6975 Curry2Prolog\001 4 1 0 100 0 0 18 0.0000 4 270 1665 4815 9225 Curry2Prolog\001 4 1 0 100 0 0 18 0.0000 4 255 2025 4815 9585 Runtime System\001 4 1 0 100 0 0 18 0.0000 4 270 1155 4770 7380 Compiler\001 4 1 0 100 0 0 16 0.0000 4 180 630 2790 9450 Goals\001 4 1 0 100 0 14 16 0.0000 4 225 1155 4815 8235 prog.pl\001 -6 2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 4139 2204 5939 2204 5939 3105 4139 3105 4139 2204 2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 1 0 1.00 105.00 150.00 5040 1710 5040 2205 2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 1 0 1.00 105.00 150.00 5040 3105 5040 4005 2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 4138 809 5940 809 5940 1709 4138 1709 4138 809 2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 1 0 1.00 105.00 150.00 5040 315 5040 810 2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 3915 4005 5715 4005 5715 4905 3915 4905 3915 4005 2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 1 0 1.00 105.00 150.00 4815 4905 4815 5400 2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 1 0 2 1 0 1.00 105.00 150.00 4815 5715 4815 6615 4 1 0 100 0 0 18 0.0000 4 270 1560 5040 2745 Typechecker\001 4 1 0 100 0 0 18 0.0000 4 195 765 5040 1350 Parser\001 4 1 0 100 0 14 16 0.0000 4 180 1650 5040 135 prog.curry\001 4 1 0 100 0 0 18 0.0000 4 270 2100 4815 4545 FlatCurry Printer\001 4 1 0 100 0 14 16 0.0000 4 225 1320 4815 5625 prog.fcy\001 pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/pakcs_overview.jpg000066400000000000000000000440111323431571100264760ustar00rootroot00000000000000ÿØÿàJFIFPPÿÛC    $.' ",#(7),01444'9=82<.342ÿÛC  2!!22222222222222222222222222222222222222222222222222ÿÀFÂ"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?÷ú(¢€ (¢€ (¢€ (¢€ (¢€ (¢€9ˆ:õÿ†Ö¼6ö¿oþÍׯ>¤aÑ!(!ª0‘¤y˜y €>ÐIQ€IÛ]晡hú'›ý“¥XØyØó>Én‘oÆq g=}MG¦økAÑ®ãKÑ4ÛÙ 4–¶©È8%@8È€9½\ñ$Þ-Ó4ËýO×v·ZSj.tèdßÃ"€¤ÊG–L€¬˜ù¶0Ú:×h'…®ÝeŒÎˆ®ñ†•X¤Ž ¬ï´úWᇧÃ~!»Ög¾±šIbxa‚ÃI†Æ8‘ÝYÙ–|l@»˜àg©9®Â ;{Ë›Èm ŽêëoÚ&HÀyvŒ.æ¶=(‡Ò¼KâMSGÐußí_ AcªÝÆ¿e”Hcv?ºI¼ÌIpÛ·bÁ½9§¦øã^¸µ¹šîçFìüP4&ŒZº›¥2Ä™3®¤||ü/A‚OiÿŸ†ÿ´´áÒ¾Ýæùÿiû~g™Û÷c;³Îzæ‹ï øoS¼’òÿÃúUÝÔ˜ß4öQÈí€Ë“€ü(êóÆÒø«SÒôÛÏùöIw\ÙM¸´*Çm›ÄGsÜabêóÆÒø«SÒôÛÏùöIw\ÙM¸´*Çm›ÄGsÜamÏøDü7ý£ý£ÿþ•öï7ÏûOØ£ó<Ìî߻ݞs×4Â'á¿ííøGô¯·y¾Ú~Å™ægvýØÎìóž¹ OÄ^2×¼=©júdçM{Ë„ü8‹lãílòùm–‘Tº–;Xa[~Ò2£Ð -¼Kq$rN 4(¬Øä…$3Û'¦¸ù|«ÞüCÓüO¨xŽ9í4לÙéÉ`#,±ì#ÌÞKºI#¨8 i@Q@Q@Q@Q@Q@Q@Q@Q@Q@eø—R›F𮯪[¬m=•”׬€•,ˆX‚2=EjW?ã¿ù'ž%ÿ°U×þŠjè(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢³õmjËDŠ /Zô‰|˜R i'w}¬ø ³}ÔcÓµhQ\ÿü&Z_üúëŸø"½ÿã4Âe¥ÿÏ®¹ÿ‚+ßþ3@ÏÿÂe¥ÿÏ®¹ÿ‚+ßþ3Gü&Z_üúëŸø"½ÿã4ÐW'ã»ÙæÑ¯<9a¦]ßê¶™v°¬-ªª…œÈëºdé“׎*çü&Z_üúëŸø"½ÿã5ÏøÇĆëCûNƒcªÉ­ØJ·V+>‡|œe]Oî±óFÒ'8ûùÊv.¬šÞ˜/c¶žÛ÷²ÂðÏ·z ÑtmÇK··ñAeo¼m&…zXª(PN!8‚®Âe¥ÿÏ®¹ÿ‚+ßþ3@ÏÿÂe¥ÿÏ®¹ÿ‚+ßþ3Gü&Z_üúëŸø"½ÿã4ÐQ\ÿü&Z_üúëŸø"½ÿã4Âe¥ÿÏ®¹ÿ‚+ßþ3@^ÂúßSÓ­¯ìäó-n¢I¡}¤nF©ÁädÖŠ±EPEPEPEPEP\ÿˆä9á?û Éÿ¤WUÐW?âùxOþ²éÕtQEQEQEQEQEQEsþÿ’yá¯ûZÿ襢É<ð×ý‚­ôRÑ@Q@Q@Q@Q@Q@sþ!ÿç„ÿì+'þ‘]WA\ÿˆä9á?û Éÿ¤WTÐQEW'ãmBM6] ÛÄRh–w¯ou8òí0K"’Ó#;£P:}â98ÇYXúÆ“y¨êz-Õµìñé×fæHä¶2³Ç´0uÛòÈüá¹Úz?¡øƒV5k}WÄ6-¨,mÔqD’M·Wg9X£òC ($9`bÒ7Ä>K /RÔYI¡µkr¬ð’%BÍ(]§æ«qµš¶¸¶×4-Jã[ûWö=Þ¡p­¼Âï$‡`Ûw+3ª€rÕÇ š'‰¢×¯o¡µÓîÒ +‰­dºw„¡–7ØÉµd.q¹G=Æy»/‹š.¡gssm§ßJ¶ú{ê.‘Ïi#ˆP¦ìªÎJ0µö“µ€É­GðŠê%¿¿Ôì´ÑŕŌ²Z«$·±LcâS€T¢ÆÍ»q#ËûµNËÀº¢ø5¼7¨ø“íPG§ÉcjðÙùCÆÑ†” ›±N|£»nm¬ '‡µ¡â Q,.ìà¸E’º1î’6PÊãc°ƒÐx9µ+?BÓ?±<=¦i>wöH­¼Ý»wì@»±“Œã8É­ (¢Šçü ÿ$óÃ_ö µÿÑKEÿ’yá¯ûZÿ襢€: (¢€ (¢€ (¢€ (¢€ (¢€ çüCÿ!Ï ÿØVOý"º®‚¹ßÙ隇…¯/îà´µU}óO 6w e$øÐQEsÿðø?þ†½ÿ0ÿñTÂwàÿúô?üÃÿÅPAEsÿðø?þ†½ÿ0ÿñTÂwàÿúô?üÃÿÅPAEsÿðø?þ†½ÿ0ÿñTÂwàÿúô?üÃÿÅPAEsÿðø?þ†½ÿ0ÿñTÂwàÿúô?üÃÿÅPAEsÿðø?þ†½ÿ0ÿñTÂwàÿúô?üÃÿÅPAEsÿðø?þ†½ÿ0ÿñTÂwàÿúô?üÃÿÅPàOù'žÿ°U¯þŠZ(ð'ü“Ï Ø*×ÿE-ÐQEQEQEQEQEQEQEQEW?ã¿ù'ž%ÿ°U×þŠjè+Ÿñßü“ÏÿØ*ëÿE5tQEQEQEQEQEQEQEQEQEQX~"¿Ô­eÑí4¹m!ŸP½6í-Ô 2¢ˆ&—!UГ˜€ëÜÐåÏýÆôÐÿðM7ÿ%Qö?ÐwCÿÁ4ßü•@ÏýÆôÐÿðM7ÿ%Qö?ÐwCÿÁ4ßü•@r~1²ŸTºÓ4y5;»=/UK›„´X‹Êíuȵ<¸ç®Y=ȹö?ÐwCÿÁ4ßü•Y~#ð§ˆ|SáûÍRÖôcit_ËÒ&VRe`~ÕÔ0œŽ9q@¹»¾ð…íåÔ—OtqÒª+˜]‹Ä FÈhÆAÆzÊçþÇãúèø&›ÿ’¨ûŒ?è;¡ÿàšoþJ ‚ŠçþÇãúèø&›ÿ’¨ûŒ?è;¡ÿàšoþJ ‚ŠçþÇãúèø&›ÿ’¨ûŒ?è;¡ÿàšoþJ ‚ŠËðÖ¥6³á]#T¸XÖ{Û(n$XÁ Ð1$œdúš(RŠ( Š( Š( Š( Š( ¹ÿÿÈsÂö“ÿH®« ®Ä?òðŸý…dÿÒ+ªè(ª÷×özeœ——÷pZZÇóO $–< ’ãYpxÓ·W[Ûø—Fšy\$qÇ3±8Ù$ž1@”QEQQÏ<6¶òÜ\K0D…ä’F ¨ d’OÎhJ(¢€ *ž£ªØé)n÷÷1À..#µ‡wY%vÚ¨£©$þ@p5r€ (¢€9ÿÉ<ð×ý‚­ôRÑG?äžxkþÁV¿ú)h ‚Š( Š( Š( Š( Š( ¹ÿÿÈsÂö“ÿH®« ®Ä?òðŸý…dÿÒ+ªÜšnP$ñG*W êV §žá€ ö óÿ A ÏÅ¿ˆ‰ÓœçÌãçÎæëŸ¼}hÍüKâïxSZ×ô濟QÙá¦ÔâhìãÝoqç³þ¥w!Ë©Ç2OâsÃÖ¥µ]j;¨µ±K{«y"¹Ke•–K™%[xcD*G–\0,§ïÀz'öÿ@«øôûü{§ü{ÿÏŸêÿÙéíE®…£ØéÓéÖzU½Œû¼ëhmÑ#“pÚÛ” €ÏQ@gñ jv› Ô¤ñ å¿‹lÚe0Ã"·”Y`vEU“¸1Q Î@ÉÐÕüK¨6›áuѺçþ¯øÍtW?ÿ –—ÿ>ºçþ¯øÍð™ióë®àŠ÷ÿŒÐAEsÿð™ióë®àŠ÷ÿŒÑÿ –—ÿ>ºçþ¯øÍtÉøîöy´kÏXi—wú†­¦]¬+ Dª€*¡g2:àn™:dõ㊹ÿ –—ÿ>ºçþ¯øÍsþ.ñR:ÓQÑô}rÿSÓnÒæÞÐè÷q,Ù ŠY¢Àýܲ{0^¿t€v.¬šÞ˜/c¶žÛ÷²ÂðÏ·zk#6Øæ!J°RTƒ¶½#PñF“¥ê&ÆîiÒe‰g‘–ÒWŽذ$Š¥#\£òÄ“ÀÍszv6«ðbÎÓN‚ÓûCPð彟›;ÆÖ‡hÜʬH]îÀc©#Œ“RxãÂú߉þÛgnÖ/a>ža„]\Ê« çÌÜí .Ùs˜¶³·îÙ7ª“Ã#ñûé‘kVVn³kw •„SnXn¥™a*<ÂnbL{·Œž#BïNñUªÛËg¯}±žîÜÝÃ5œJ/5<Ñv.Âü9•°7Ìsî|'ªjí¬Ez¶6k»ƒS³½‚_>[;¸¢ñe |Ù•±¸ãbÂçÅ’}šßPÓ´¨$]†êî§’6dGEmÇ 0Ä „åj/ÐôËon®äOzÚ|^]¼²3Ü+ºª–'tn:`㎣9ãâO…›Ãï¯ Û¿ì”uCxtë‘X•>_#r•$pÁ =OÁ~$¼ºÓlÕô¦Ó,¢¤¢€<ïÁךôºµ´ó^i³a?´µ[h¬ž6±e… ò·™›kù‘…ÚÊ3åOÈ)¶½±ôŸ[é:Ʊ¨ÄÙ“R•h,H«÷Î9‘¦ZVÎO5©<ðÚÛËqq,pÁ’I*¢’I<9  (ªzn­¦ë6íq¥ê—Ð+”i-fYT6Á*HÎ8÷r€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€<\ñ}Ö•â¯i—¾.×,äYR=Þ×H‚q4 HcVò˜Á¤A°”8)—%‰[—'¹—[ÐcÔ|u‡ÞçL7Z¥ƒ D6³lƒlKæ¡xÉ2;aËŽ£°Ñ¼‹â]O[‹YÖnQwym.nƒÛ«1^U6ŒTT“…®’€<ï\×gÑ5›m?^ñ”šE¥¶Ž³›ÈìâFÔg VR ˆè …Cå Ü|î2ÏÚx×\ºÒì&ñ'ˆ£ðšI¡-åµÂÃæþSÒ1hödäGó‘0ù¸ÀöJÃñ/‡Ä–ð@5ÝgJHœ¹:]ÂÂÒ`nm¤àsÀ sÎp0OB×’Çá®™âê™VÓ⻺»Uyu €@êÛT“Àäžrþ)¶žÚ®£¯G§Å=í²µ¼o¶á>Óö"Tl„_›Ž?¼âºK¡ŸGÓá’4wŽÄ#€1º…$’@Ydó~§R€<îîm?Ã>ÒG‡µ›KM&óSXï5«[KvTC¿.|¤©.‘ý”…Ü3’3Ysë×ëý¯ªhg×­49mnol¢±µ9µå¦_8*«±EvÆÂ§,A±\ÿ‹<(ž.Ó–ÂãXÕl-~a*ió,^xa®J’Wü¼žAÀÀÞê:Åþ³uy<¶×nú\2ƪcµßêѾ~XnÝò䜓ÔU='M‡FѬt»v‘ ²·ŽÞ6‚ÅQB‚pΠ«”QEQEQEQEQEQEQEQEQEQEÏø{þCž,ÿ°¬úEk]sþÿç‹?ì+þ‘Z×A@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ÿ‡¿ä9âÏû Çÿ¤VµÐW?áïùx³þ±ÿé­tQEQEQEQEQEQEQEQEQXsøÓ¶·ÛÜx—F†xœ¤‘ɲ08 ‚Ù1QÿÂwàÿúô?üÃÿÅPAEsÿðø?þ†½ÿ0ÿñTÂwàÿúô?üÃÿÅPAEsÿðø?þ†½ÿ0ÿñTÂwàÿúô?üÃÿÅPAQÏ2Û[Ë;‰ F…ØG;xU±ö“Ú°ÿá;ðý zþ aÿâ¨ÿ„ïÁÿô5èø1‡ÿŠ   øŸMº×52‚ù#Öµ›Nšm>â(îPYCÊ» _ùc!<…ÈãÜW•øWÄÞµ×¥‚ïÄ:4Vz»ØiÒÿhBX¥HÛ˜G v©¸ó A.FGiÿ ߃ÿèkÐÿðcÿ@ÏÿÂwàÿúô?üÃÿÅQÿ ߃ÿèkÐÿðcÿ@ÏÿÂwàÿúô?üÃÿÅQÿ ߃ÿèkÐÿðcÿ@ÏÿÂwàÿúô?üÃÿÅV†™®èúß›ý“ªØßù8ó>Ép’ìÎq¤ã8=} hQEQEQEQEQEÏø7þ@w?öÔ¿ô¶jè+Ÿðoü€îì+©élÕÐPEW¿ºûsyöyî<ˆž_&Ý7É&ÐNÔ^ìq€;šâüá‹M[ÁÚV¯®<š†µ}n·o©—x®#óx#ŽEmÑ"†Ûµ ©¸ˆ òŠãáÔÿáðõî“äý¯þ¿Ásæîòþѵ&]¸ÁÙÿùÎOßöç?Oø¬jú冕aáû%>¦è7Ú¥ o˜1#О Àô +ÎôωW×Þ ÓüWq¡Z[iww±[»O›hšV‰æ“tj0¬€NCd•Á­Ë¸ôïh÷²êÒOm£[Ëuo,bõ IV61Èò²m!AI@]ÅJÌ3€€EåçMºÑ~º¼Õc´Mn±†'Š{{»HÒ‘¼×ÌLHVù†ð¸ ƒê:ö¡à«]gÄö•ׇb·µE·ÕïnY%2º¼‘ùÅÝß•t]ßx(Þê”W.ž"Ö.u´«-7J›S²Š9oãmQÄpù…üµVf*…ˆeL\nÎF>£â].×VÒEÀ´Ûó…“ÍWË Ï‡áþv俤Ò|¦èÚÍŽ©o=ÛOe£Ç£F²:•0£ p ïÈë=«SSÖôíÊ[Û³MŸ&Þ4if›ݲ$ß‚vƒÉÀ¨ô¯éÝÅž}ÄöÈq‚å€We_(À¡Ã.9"€9óá¡á¿¯ƒô]2ïT·šÞâÝd¹š0‘ù…Žf!‘öfCŸ,À8çÔ›Âp?‡´ßQ¾µ‡Kò|™bò™ßÊM©¼:26îðʬ0@®‚Šæî<%%Þ–öW#Öew½Šôܱ€¸höEVÅ@Ñ«`(ÉÎIÉçŠ|7gâï]èwòO­ÖÍïãk«ŒꣵlV׌4 'Ö’ëRŽ¢¤o½D‹¹9ưè'$¤ “PÑ®&ÔMþ›¨}‚êh–ÚåÌ"]ñ)b»A8Y»íc¹~s¹åÛ]ü¥ÉäÂÞy°‡J“HŽÇîÖØæÇ™¸ˆÑs» õ$×AErz®«¾«\.£%î´ºeÍž™$J-š=ê$†Á•™#%þUÕO›4ü¤Í¦j/Ÿöë}!b´ÚÞiöÖ¿éd¦6bMûU\3‚Èw&Öl½ÅW?gÿ%Yÿ°U‡þ»®‚¹û?ù(zÏý‚¬?ômÝtQEQEQEQEQEsþ ÿÏý…u/ý-šº çüÿ ;Ÿû ê_ú[5tQEÃÛyVÿ¯åÕ<ˆî®´¨`ÑœoXUî“ò´ö1›O÷«CÄ׉¥»Üéã­ä¶FêÏo— ‰!F8àÉ.Óµ²Äd2©Ææ¥¤éºÍºÛêš}¥ô áÖ;¨VU ‚23‚F}ÍGk¡évZtöX@-n7„dßö‚à ғ“#036Kw&€<ïǺçˆ|-áß ~îK6ÞÆò©à·.Þ|òÂñ°„(PÙÎXŽ+C_›]Ó-üI(Ô‹é8Ô¡• µ-#°ŸäÜã`û:‘´ó¶IùvöøsHM.m6Kî­'}ó¥é7&fÁ‘¤,\ªbp@à Xm'Mg½vÓí ß KÆ0®n)P$ãçI9àâ€<ÏPÖ´ŽêÊ4·µ#/˵‹BIPTÈ8êIæ¬k:Þ£}'Å&æã}Ž›¥GöH¶(òüËIù'$g’qÚºKOÚEã}gÄ·W2\Aíž;\ºGB›Ae ¶SK/ÈFG<Ö寅£Ýý³í:UŒßnÙö¿2Ýí>癑ómíœãµp~&Ö¼IyãkIÑ5hô”ÓtÈ®7^Í ±o0´ã|™"_‘X†@ ‘žsW<+ªêÚ¿ÄZÍ­_>™¦ý’[[I-¢‹+q 9Y3m8À$0Æ<×au¡h÷ÚŒæ•cq}ß&ækty#Úw.Ö##’1ÐÕˆl,íï.o!´‚;«­¿h™#åÚ0»˜rØ ô  QEÏÙÿÉCÖìaÿ£në ®~ÏþJ³ÿ`«ýw@Q@Q@Q@Q@Q@sø/·WÜ\xkFšy\¼’Ia3±9$’¹$žsQÿ àÿú4?üCÿÄ×AEsÿð‚x?þ…MÿÐÿñ4 àÿú4?üCÿÄ×AEsÿð‚x?þ…MÿÐÿñ4 àÿú4?üCÿÄ×AEsÿð‚x?þ…MÿÐÿñ4 àÿú4?üCÿÄ×AEpz‚ü+6±ât—ÃZ3¤:š$JÖ‹öKvÂü¼ Ìǹ'½n àÿú4?üCÿÄÑáïùx³þ±ÿé­tÏÿ àÿú4?üCÿÄÑÿ'ƒÿèTÐÿð]ÿ]Ïÿ àÿú4?üCÿÄÑÿ'ƒÿèTÐÿð]ÿ]Ïÿ àÿú4?üCÿÄÖ†™¡hú'›ý“¥XØyØó>Én‘oÆq g=}MhQ@Q@Q@Q@Q@Q@Q@Q@Q@G8™­å[y#Žr„Fò!uVǨ ‘žÙõ%ç~¼×Ž­a=Íæ›!×ÒMJþÙ,ž&µh¡†‰\Ìß:Éå)V^Òd©kÑ+FðÔ:6³«ê\HâýÔ¤°(g‘€=X´³Lä“Æð µ¹@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@¿ÄzÿøÖ4élb’ÞXC›èd’="ÆIòÈaá²p¤`“Æ^‡ãSÅW>ƒ]ðþ¬í¦5ä7št/¶ÝÕÂm‘<×õ#lŠ~RS[ž0Ð5èðÙiº×öLÑÝÅrgû*Ï»Ëmê»XŒ|á?ìã¡5cFð冓áäÒ>Çbñ¼A/6qÃÓ” îѨÛóc‘éÇJåí¼Cã }T×ïßC¸°Óe¿m¼ÐË,vþj†dp¬ÒF>]¤9Ýž*ž¡ãíkÃoköÿìÝxÜhóêF‚£ G™‡ÀÈ핵Üi¾Ðtk†¸ÒôM6ÆvB%­ªDÅr P2ǰ£MðÖƒ£\5Æ—¢i¶3²i-mR&+pJ€q=…sz6¹âI¼[¦i—úŸ‡.ín´¦Ô\éÐÉ¿†EI”,™Y1óla´u®Âi¼Ï´ZÚÜÀ—Ëpoò÷nÌ€‚T•nã;HŠãü#ðôøoÄ7zÌ÷Ö3I,O 0Xi0ØÇ;«0;2ψs õ'5Ô\éiåjRé¢ Nú-~–êϼ)X݇ñíϵyž‡ñJöòÃ÷·Z߆.§Õ/b´›I´ŠXî!ó¦A.Ç*pNä @ 1Ê–ë?±4ë‹Vúµµ¾ËíKJºû\»Øùž[Ú*pNÇg½Ià Ùm¼º´ÔµE5Óã·”[ª"¤LË’Àl’OOAZø/·WÜ\xkFšy\¼’Ia3±9$’¹$žs@”QEQEQEQEQEQEQEQEQEQEQEcè××z¯ˆažMñÚj hÚÁ!uù>¾˜­Šçü=ÿ!ÏØV?ý"µ®‚€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ +ŸÖouøHtÝ'I¹±¶ûE¥ÍÌ’ÝÚ¼ÿêÞ ȘϜNI=cñ‡ýt?üMÿÉTÐQ\ÿØüaÿAÝÿÓòUcñ‡ýt?üMÿÉTÐQ\ÿØüaÿAÝÿÓòUcñ‡ýt?üMÿÉTÐTsÆÓ[ËM$èUeŒ)d$}ḑ×G¨5‡ö?ÐwCÿÁ4ßü•GØüaÿAÝÿÓòUrþMKûcOv×o®.®â–ï^†H­Ìks¥©ä‰J|èÛX6[>d°ôŠâôß x‡JÕ5-FÛ[Ñ„úƒ«J‘6Ä “µíXPYäsÜ´ŽI9ãSì~0ÿ î‡ÿ‚i¿ù*€: +ŸûŒ?è;¡ÿàšoþJ£ì~0ÿ î‡ÿ‚i¿ù*€: +ŸûŒ?è;¡ÿàšoþJ£ì~0ÿ î‡ÿ‚i¿ù*€: +ŸûŒ?è;¡ÿàšoþJªz•ÏŠ´h­®î5=æ½µ·’(ô¹bb²ÏD†7 óÐô ²Š( Š( Š( Š( Š( ~óþJÿ`«ÿýi]s÷ŸòPôoû_ÿèÛJè(®OKñ…Þ¿`ºÆ‡¡É{¢³º$¦å"¸Ÿk”-M…Ù‘ürFØ òðt—ö¿nÓ®lþÑ=¿ŸÅç[¾É#ÜÜÙ†rc\…õñáÿYè:í…õþ™Y*Òi㻢…xù›”nØ>u ù\!4ÔhZŸö߇´Í[Éò~ÝiÏ•»vÍènp3Œã8¡^oã¯þ-Ú.ªßÛ^[ko"ÔÜl¸O´f<­Û[÷éƒ÷æâ°ü3à¸n|k¡>±á¨å´ µIÚîÀ2 ¥d\6åÇšcæc¥{%eëz¥Þ›o?G»Õo¢‚H×ür9 £%Gv䬱å~ðgÙ¾Y]I¥A§x‡N”êª÷ù Ó[Í#Æ&$§ÊP•Ëœ*¾{ í-µ ÝÁÖ×íavu-^àÜL œ³µ£Mº@&HÁ‘ÄH!ÀÎÄ_݃•’ÏÇð\øpêÙÏu º]íŒ-=µÑqÍÌê®»Ùe?Æ æÛ©¥xš-GY¸Ñî4û½7P†Ý.…½ÛÂZH™™w¯—#äL˜ÊúŠåõY ]6ÛÄ„Ö-‰¸m._´HÿiŽæk…ŒÆN2d9(r•  ÓøŸàß7áÆ¸öÐßkZÜÿfÄÒ¯3ys|»#E ›RIÈ«ÌNI$€z…eÉ«´~*¶ÑMœ›'²šì]]¹ãBzç÷€’p:c9;y;ÝÃú_ˆg_Ó4¯ì/²Bš=³X+G»å3G|ÀÌå£8UV`c§aâit½.ÊØ]¯ˆ ð•Ì2ܺ³rÿf|ýÁ|Ö1Ƀ¼@bêé”W™Þ¦‹oo«ßxY#Ótø4+á¨M¥ÛZñˆ2 ™f; ™ÃlÞ3'Ãø4Ø|C<Ï£ØéZ½Æž‘‹{=*âÚ6Hœ™eF–þóM(3€‰–nÀ‘\ÿŒ¿ämÿa]7ÿKa®‚¹ÿÈÛþºoþ–Ã@Q@½Þ©ªjž-ºÐt‹Û[{H¥¾¸)çN¯+0DEÈT`ˆÍ¹÷ýôùÎc°ñÓ!¼}sZ´ÔÝõ3in4‹9$1²Â¬Ð˜£ó\•ˆ%°Q ý"ù5™5­&ò5»’Þ;y­n“0L‘´Ž 2üñ¾da¿æ”cŒc\¾¢á™ 1u º0Œ@%€¬ýCųi¿æÒîæŽÏÃ’j³°Œ³n,q“…U8ëÆ3õO…«}¥Ígý¢Ǽ¸¿7V-p’\ÜlÌñ!”•C–*òI$ìOà鮼U/ˆ./m&ž]é[ÉdZbûÌ…Kä¡–uŽì@ŸcÚJ’ásŸÝ2‡Ï ¹ºçþ¯øÍXðÞŽú6$R>iLÂÝ%g†Ô†܈Ô(ÀÀ$…@B.Åsÿð™ióë®àŠ÷ÿŒÕ8ücs}¬ÜÚéZÝݽ¥¼3NeipL"¨Ž)Ñåä±u'#ÖV>¡ámVÔMî¡gö™%†Hä•Ì2¢–eEŸ-ö—b7)Á9@Þ™âÝ#ÄŸím,&“íšv™}õ´‘•ky Ö£a?uˆ(Ã*XqÁ#÷•ÍÉ6¾:ÐmíâŽ"Ñï’8ãPªŠ%³81]ð­Í¼°9$ˆQŒr20c†R ŸpA¨J+Çü%pÚÜþ·ÒµmrßV‚Ò×SÕfÔ.î;¨dD†gù÷>?x©±G!³µOaâoÂ;áïjßÙßhþÅ»†ÛÊóöyÛÒݧn<ücîûðØQ^o¬|P¼Ñ5¥ÎƒØøz[Qw4wäÈñܱ‘ @ä©`3ÀcÖ«øç\xü=ãq®ijÚݼKÛ ”µ`Ÿ"}ÐÒݸœü¸Ç4èž‹e¬yBùg’8ò +s$qÈ2²"°Yã\‚F0Nt+ƒ—ÇÚ”:ߊ,ÛC´6žDžòq¨6÷…‘¤4òp_bŸ”°ãv9«—ž2¼Ñ¬üA.·§XÛI¤éñß ‡P2$þa•V=ÍmbÑmïø Šæü/â=C]¸½Š÷E’Á-Ò&ŽR·e,_*<è"9] œ>qÍs~4GÓµ‹­C\³¾»Ñn" mªiA…Þ†BâFùNV279‘FN 8eØ(Ò(®>o¤Z¶£b- }‘YM¦H—ªÂý.d,€JF²RÃw €lCâדÇw>’ +iŒÜ^2OrýðÄbÛ"†§ÆÆ$è/ìmõ=:æÂò?2Öê'†dÜFä`C ŽFA=*ž›¡Ã§\5Ã]]ÞNÅ —r r–§ã Í—l.æm«Ž>ÛÇz­‡ƒ?ÖΣáÝ=|3wZßÚÄku},Y€¶K·Ýµ+)*Í‚2@=¹ÿÈÛþºoþ–ÃTì|W©\ßé©6“iíìúš—Ìò$ФÆOÄMÐ8p$%A%EÏÈÛþºoþ–Ã@Q@Q@Q@Q@Q@ýçü”=þÁWÿú6Ò·'¦·–$šHЪËRÈHûÃp##¯ PkŸÖÆ¡kâ­+T´Ò.õ"²»·•md…YG·e'Í‘‰úÚ¤ÿ„‡Tÿ¡3\ÿ¿Ö_ü‘@æð ”š6ƒ`ºž¥ ú©±Ô"1 „P¥vòö”+€Fߘ(ÝžsˆþØx“ûN9µ]VÒ×Tòí­´±ùr¼xÚøtb…@v•ÈEÈ8­øHuOú5ÏûýeÿÉÂCªЙ®ßë/þH  ýcáÆ­ÿÂKö››äÿ„‡ì¿kòÝϳãfÌ©ÆqÎs튓\ð —ˆ-õ»K½ORK=aã’âÚ#U‘@:`q  #“ÆpEÏøHuOú5ÏûýeÿÉÂCªЙ®ßë/þH  ÷~°»ŸÄó ÛèdñQCxchþD xMÈq¹I9ëÆ \Ö<)¦ë‰«%ð‘ÓT²ŽÊeùHE¤dtÈ8pÒ’ Î ©Žcÿ„‡Tÿ¡3\ÿ¿Ö_ü‘Gü$:§ý šçýþ²ÿ䊱£x}4’M¨_jwQÄ ŽêýÕäH¸ùAUQɳ¹ˆ‰Ú¸ÏÔ¼!-ìZ¥”ÄöºV­¿í–« 1Më‡òŒG¼îgܯ’ÌWcÄ·ñ}ÝÜ÷pÁáqä´”C8ó,ÆÇ(²ÍÇ?+©ã××5cþSþ„ÍsþÿYòES(Ô|Y£ÝM:ÓÃÉ:Z;°Óݽö˜óÈ%gRnd™;Ëòòv¨.Р( $ÿ„‡Tÿ¡3\ÿ¿Ö_ü‘Gü$:§ý šçýþ²ÿ䊒ÇÂöÖVúlFîîw°½žùe”¦ée”M¼¾Õ¿rÐ~1øËþ@vßöÓô¶?á!Õ?èL×?ïõ—ÿ$V~±w«ëvÖ¶QøWU¶ÿ‰…œÏ4óZlDŽæ9³³}Ô= Š( Š( Š( Š( Š( Š( Š( Š( Š*9ç†ÖÞ[‹‰c†¼’HÁU ’Ià9Íaø{þCž,ÿ°¬úEk]q~ñ.ƒ{âOÛÚkzlóÝjjöñÅtŒÓ(³· ,GîŸC]¥QEQEQEQEQEQEQEQEQEQEQYúî§ý‰áíOVò|ï°ÚKsånÛ¿bÛœgÎ hTsÁ Õ¼¶÷G4¡I#‘C+© ƒÁqŠãôOêZ…ÿ‡¡½Ðc‚ vÉï-¦´»k%Uÿ| H ¾b|×Agâ]P·º¸²ÖôÛ˜-}ÌÝ#¬+‚rä(““è}(›ðÏÛ/¼B,¯ü÷ÿ„j)-|Ùó'Ÿ$ŽDR<…²FÌÃ'ý-‡ÉÊžâ©ÙêÚn¢=Ž¡it“£¼-ÊâEF åpy ÄGB@5Ëê>†ÇÅSY,QÏ¥ÛørMuî`pí*‡D|…ÆÐÇ9çrò1ÈiEg¦»£Éykg«b÷Wq í¡[„/4d9eÀ'#Ž hPEPEPEPEPEPEPEPEPEPY~%ÓfÖ|+«évíÏ{e5¼m!!C:àŒŸCEÃéÿ &ÑôØmté-!SÓ#Ó|Cn„ªÍˆŠˆa+(,ÜÚû²v·'CCð†¡sm­Øi·wrée5ÌšÅÄ÷¥”S; x"$±C ¾F üÅkâ ìiÏ¡k-¤ÿe·Ôï) ¶Ÿìï™'20’Kd‚ø.ûw6\?uæBg—MGÿ„5¼:Nì<íÇkäÆ>B¸'¸$Œd”PAs¥7‹ô¶Ù™«\Û‰.eµ¼iâ’Ö ²ð²|{\aæIó›eí(¢€ (¢€ (¢€ (¢€?ÿÙÿØÿàJFIFPPÿÛC    $.' ",#(7),01444'9=82<.342ÿÛC  2!!22222222222222222222222222222222222222222222222222ÿÀFÂ"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?÷ú(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€?ÿÙpakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/preface.tex000066400000000000000000000050251323431571100250760ustar00rootroot00000000000000\addcontentsline{toc}{section}{Preface} \section*{Preface} This document describes \CYS (formerly called ``PACS''), an implementation of the multi-paradigm language Curry, jointly developed at the University of Kiel, the Technical University of Aachen and Portland State University. Curry is a universal programming language aiming at the amalgamation of the most important declarative programming paradigms, namely functional programming and logic programming. Curry combines in a seamless way features from functional programming (nested expressions, lazy evaluation, higher-order functions), logic programming (logical variables, partial data structures, built-in search), and concurrent programming (concurrent evaluation of constraints with synchronization on logical variables). Moreover, the \CYS implementation of Curry also supports constraint programming over various constraint domains, the high-level implementation of distributed applications, graphical user interfaces, and web services (as described in more detail in \cite{Hanus99PPDP,Hanus00PADL,Hanus01PADL}). Since \CYS compiles Curry programs into Prolog programs, the availability of some of these features might depend on the underlying Prolog system. We assume familiarity with the ideas and features of Curry as described in the Curry language definition \cite{Hanus16Curry}. Therefore, this document only explains the use of the different components of \CYS and the differences and restrictions of \CYS (see Section~\ref{sec-restrictions}) compared with the language Curry (Version 0.9.0). \bigskip \subsection*{Important Note} This version of \CYS implements \textbf{type classes}. The concept of type classes is not yet part of the Curry language report. The recognized syntax of type classes is specified in Section~\ref{sec:syntax}. Although the implemented concept of type classes is not fully described in this manual, it is quite similar to Haskell 98 \cite{PeytonJones03Haskell} so that one can look there to find a detailed description. \bigskip \subsection*{Acknowledgements} This work has been supported in part by the DAAD/NSF grant INT-9981317, the NSF grants CCR-0110496 and CCR-0218224, the Acci\'on Integrada hispano-alemana HA1997-0073, and the DFG grants Ha 2457/1-2, Ha 2457/5-1, and Ha 2457/5-2. Many thanks to the users of \CYS for bug reports, bug fixes, and improvements, in particular, to Marco Comini, Sebastian Fischer, Massimo Forni, Carsten Heine, Stefan Junge, Frank Huch, Parissa Sadeghi. %%% Local Variables: %%% mode: latex %%% TeX-master: "manual" %%% End: pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/preprocessing.tex000066400000000000000000000064361323431571100263630ustar00rootroot00000000000000\section{Preprocessing FlatCurry Files} \label{sec-pakcspp} After the invocation of the Curry front end to parse Curry programs and translate them into the intermediate FlatCurry representation, one can apply transformations on the FlatCurry files before they are passed to the back end which translates the FlatCurry files into Prolog code. These transformations are invoked by the FlatCurry preprocessor \code{pakcs/bin/fycpp}.\pindex{fcypp} Currently, only the FlatCurry file corresponding to the main module can be transformed. A transformation can be specified as follows: \begin{enumerate} \item {\bf Options to \code{pakcs/bin/fcypp}:} \begin{description} \item[\fbox{\code{--fpopt}}]\pindex{-fpopt} Apply functional pattern optimization (see \code{pakcs/tools/optimize/NonStrictOpt.curry} for details). \item[\fbox{\code{--compact}}]\pindex{--compact} Apply code compactification after parsing, i.e., transform the main module and all its imported into one module and delete all non-accessible functions. \item[\fbox{\code{--compactexport}}] Similar to \code{--compact} but delete all functions that are not accessible from the exported functions of the main module. \item[\fbox{\code{--compactmain:f}}] Similar to \code{--compact} but delete all functions that are not accessible from the function \ccode{f} of the main module. \item[\fbox{\code{--fcypp cmd}}]\pindex{--fcypp} Apply command \code{cmd} to the main module after parsing. This is useful to integrate your own transformation into the compilation process. Note that the command \ccode{cmd prog} should perform a transformation on the FlatCurry file \code{prog.fcy}, i.e., it replaces the FlatCurry file by a new one. \end{description} \item {\bf Setting the environment variable \code{FCYPP}:}\pindex{FCYPP}\\ For instance, setting \code{FCYPP} by \begin{curry} export FCYPP="--fpopt" \end{curry} will apply the functional pattern optimization if programs are compiled and loaded in the \CYS programming environment. \item {\bf Putting options into the source code:}\pindex{PAKCS_OPTION_FCYPP}\\ If the source code contains a line with a comment of the form (the comment must start at the beginning of the line) \begin{curry} {-# PAKCS_OPTION_FCYPP #-} \end{curry} then the transformations specified by \code{} are applied after translating the source code into FlatCurry code. For instance, the functional pattern optimization can be set by the comment \begin{curry} {-# PAKCS_OPTION_FCYPP --fpopt #-} \end{curry} in the source code. Note that this comment must be in a single line of the source program. If there are multiple lines containing such comments, only the first one will be considered. \end{enumerate} \paragraph{Multiple options:} Note that an arbitrary number of transformations can be specified by the methods described above. If several specifications for preprocessing FlatCurry files are used, they are executed in the following order: \begin{enumerate} \item all transformations specified by the environemnt variable \code{FCYPP} (from left to right) \item all transformations specified as command line options of \code{fcypp} (from left to right) \item all transformations specified by a comment line in the source code (from left to right) \end{enumerate} %%% Local Variables: %%% mode: latex %%% TeX-master: "manual" %%% End: pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/problems.tex000066400000000000000000000034041323431571100253130ustar00rootroot00000000000000\section{Technical Problems} Due to the fact that Curry is intended to implement distributed systems (see Appendix~\ref{sec-ports}), it might be possible that some technical problems arise due to the use of sockets for implementing these features. Therefore, this section gives some information about the technical requirements of \CYS and how to solve problems due to these requirements. There is one fixed port that is used by the implementation of \CYS: \begin{description} \item[Port 8767:] This port is used by the {\bf Curry Port Name Server} (CPNS) to implement symbolic names for ports in Curry (see Appendix~\ref{sec-ports}). If some other process uses this port on the machine, the distribution facilities defined in the module \code{Ports} (see Appendix~\ref{sec-ports}) cannot be used. \end{description} If these features do not work, you can try to find out whether this port is in use by the shell command \ccode{netstat -a | grep 8767} (or similar). The CPNS is implemented as a demon listening on its port 8767 in order to serve requests about registering a new symbolic name for a Curry port or asking the physical port number of a Curry port. The demon will be automatically started for the first time on a machine when a user compiles a program using Curry ports. It can also be manually started and terminated by the scripts \code{\cyshome/currytools/cpns/start} and \code{\cyshome/currytools/cpns/stop}. If the demon is already running, the command \code{\cyshome/currytools/cpns/start} does nothing (so it can be always executed before invoking a Curry program using ports). If you detect any further technical problem, please write to \begin{center} \code{pakcs@curry-language.org} \end{center} %%% Local Variables: %%% mode: latex %%% TeX-master: "manual" %%% End: pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/syntax.sty000066400000000000000000000044261323431571100250420ustar00rootroot00000000000000% This style file contains an environment and commands for type setting % context-free grammars in EBNF notation. % \usepackage{amssymb} \usepackage[dvipsnames,usenames]{color} % Removal of leading and trailing white space \newcommand{\trim}[1]{\ignorespaces#1\unskip} % Syntax extension % This annotates the new/changed parts of the syntax. \definecolor{extensioncolor}{named}{DarkOrchid} \newcommand{\extension}[1]{\color{extensioncolor}\trim{#1}\normalcolor}% \newcommand{\removelinebreaks}[1]{\begingroup\def\\{ }#1\endgroup} % Grammar environment \newenvironment{grammar}% {\parindent=0pt \small \itshape \parskip=.5\baselineskip plus1mm minus1mm}% {\par\medskip} % Head of a rule \newcommand{\head}[2]{\makebox[1.0in][r]{#1}\makebox[2em][c]{#2}} % Production rule, takes Nonterminal (#1) and rule (#2) \newcommand{\production}[2]{\head{\nonterm{#1}}{\gmeta{::=}}\trim{#2}} %TODO: \\ at the end? % Alternative \newcommand{\alt}{\\\head{}{\sor}} % meta symbol \newcommand{\gmeta}[1]{{\normalfont\textrm{#1}}} % Nonterminal \newcommand{\nonterm}[1]{{\normalfont\textit{\trim{#1}}}} % Terminal \newcommand{\term}[1]{{\normalfont\texttt{#1}}} % Inline alternative (no linebreak) \newcommand{\sor}{\ensuremath{\vert}} % Optional \newcommand{\opt}[1]{\gmeta{[}#1\gmeta{]}} % Grouping \newcommand{\group}[1]{\gmeta{(}#1\gmeta{)}} % Repetition \newcommand{\many}[1]{\gmeta{\{}#1\gmeta{\}}} % Removal \newcommand{\without}[2]{\ensuremath{\text{#1}_{\langle \text{#2} \rangle}}} % Sequence \newcommand{\gseq}[3]{#1$_1$ \term{#2} $\ldots$ \term{#2} #1$_#3$} % Offside rule \newcommand{\offside}[3]{\term{\{} \gseq{#1}{#2}{#3} \term{\}}} \newcommand{\nextline}{\\\head{}{}} % Comment in right margin \newcommand{\margin}[1]{\hfill\ensuremath{(#1)}} % Margin text \newcommand{\margtext}[1]{\margin{\textit{#1}}} % Margin text + specification \newcommand{\margcomb}[2]{\margin{\textit{#1},~#2}} % parenthesized entity \newcommand{\gparen}[1]{\term{(} #1 \term{)}} % backquoted entity \newcommand{\gbackquote}[1]{\term{\textasciigrave} #1 \term{\textasciigrave}} % reference to lexicon \newcommand{\lexicon}[1]{\production{#1}{\text{see lexicon}}} % backspace \ \newcommand{\bs}{\textbackslash} % caret ^ \newcommand{\caret}{\textasciicircum} % underscore _ \newcommand{\us}{\_{}} % backtick \newcommand{\bt}{\textasciigrave} pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/syntax.tex000066400000000000000000000553261323431571100250300ustar00rootroot00000000000000\section{Recognized Syntax of Curry} \label{sec:syntax} The \CYS Curry compiler accepts a slightly extended version of the grammar specified in the Curry Report \cite{Hanus16Curry}. Furthermore, the syntax recognized by \CYS differs from that specified in the Curry Report regarding numeric or character literals. We therefore present the complete description of the syntax below, whereas \extension{syntactic extensions} are highlighted. \subsection{Notational Conventions} The syntax is given in extended Backus-Naur-Form (eBNF), using the following notation: \begin{table}[hbtp] \begin{tabular}{rl} $\nonterm{NonTerm} ::= \alpha$ & production \\ \nonterm{NonTerm} & nonterminal symbol \\ \term{Term} & terminal symbol \\ \opt{$\alpha$} & optional \\ \many{$\alpha$} & zero or more repetitions \\ \group{$\alpha$} & grouping \\ $\alpha$ \sor{} $\beta$ & alternative \\ \without{$\alpha$}{$\beta$} & difference -- elements generated by $\alpha$\\ & without those generated by $\beta$ \end{tabular} \end{table} \noindent The Curry files are expected to be encoded in UTF8. However, source programs are biased towards ASCII for compatibility reasons. \subsection{Lexicon} \subsubsection{Comments} Comments either begin with \enquote{\term{-{}-}} and terminate at the end of the line, or begin with \enquote{\term{\{-}} and terminate with a matching \enquote{\term{-\}}}, i.e., the delimiters \enquote{\term{\{-}} and \enquote{\term{-\}}} act as parentheses and can be nested. \subsubsection{Identifiers and Keywords} The case of identifiers is important, i.e., the identifier \enquote{abc} is different from \enquote{ABC}. Although the Curry Report specifies four different case modes (Prolog, G\"odel, Haskell, free), the \CYS only supports the \emph{free} mode which puts no constraints on the case of identifiers in certain language constructs. \begin{grammar} \production{Letter}{\textnormal{any ASCII letter}} \\ \production{Dashes}{\term{-{}-} \many{\term{-}}} % Ident and Symbol \production{Ident}{ \without {\group{Letter \many{Letter \sor{} Digit \sor{} \term{\us} \sor{} \term{'}}}} {ReservedID} }\\ \production{Symbol}{ \term{\textasciitilde} \sor{} \term{!} \sor{} \term{@} \sor{} \term{\#} \sor{} \term{\$} \sor{} \term{\%} \sor{} \term{\caret} \sor{} \term{\&} \sor{} \term{*} \sor{} \term{+} \sor{} \term{-} \sor{} \term{=} \sor{} \term{<} \sor{} \term{>} \sor{} \term{?} \sor{} \term{.} \sor{} \term{/} \sor{} \term{|} \sor{} \term{\bs} \sor{} \term{:} } % Identifiers \production{ModuleID }{\many{Ident \term{.}} Ident}\\ \production{TypeConstrID }{Ident}\\ \production{TypeVarID }{Ident \extension{\sor{} \term{\us}}}\\ \production{ClassVarID }{Ident}\\ \production{ExistVarID }{Ident}\\ \production{DataConstrID }{Ident}\\ \production{InfixOpID }{\without{\group{Symbol \many{Symbol}}}{Dashes \sor{} ReservedSym}}\\ \production{FunctionID }{Ident}\\ \production{VariableID }{Ident}\\ \production{LabelID }{Ident}\\ \production{ClassID }{Ident} % Qualified identifiers \production{QTypeConstrID}{\opt{ModuleID \term{.}} TypeConstrID}\\ \production{QDataConstrID}{\opt{ModuleID \term{.}} DataConstrID}\\ \production{QInfixOpID }{\opt{ModuleID \term{.}} InfixOpID }\\ \production{QFunctionID }{\opt{ModuleID \term{.}} FunctionID }\\ \production{QLabelID }{\opt{ModuleID \term{.}} LabelID }\\ \production{QClassID }{\opt{ModuleID \term{.}} ClassID } \end{grammar} \noindent The following identifiers are recognized as keywords and cannot be used as regular identifiers. \begin{grammar} \production{ReservedID}{ \term{case} \sor{} \extension{\term{class}} \sor{} \term{data} \sor{} \extension{\term{default}} \sor{} \extension{\term{deriving}} \sor{} \term{do} \sor{} \term{else} \sor{} \term{external} \alt \term{fcase} \sor{} \term{free} \sor{} \term{if} \sor{} \term{import} \sor{} \term{in} \sor{} \term{infix} \sor{} \term{infixl} \sor{} \term{infixr} \alt \extension{\term{instance}} \sor{} \term{let} \sor{} \term{module} \sor{} \extension{\term{newtype}} \sor{} \term{of} \sor{} \term{then} \sor{} \term{type} \sor{} \term{where} } \end{grammar} \noindent Note that the identifiers \term{as}, \extension{\term{forall}}, \term{hiding} and \term{qualified} are no keywords. They have only a special meaning in module headers and can thus be used as ordinary identifiers elsewhere. The following symbols also have a special meaning and cannot be used as an infix operator identifier. \begin{grammar} \production{ReservedSym}{ \term{..} \sor{} \term{:} \sor{} \term{::} \sor{} \term{=} \sor{} \term{\bs} \sor{} \term{|} \sor{} \term{<-} \sor{} \term{->} \sor{} \term{@} \sor{} \term{\textasciitilde} \sor{} \extension{\term{=>}} } \end{grammar} \subsubsection{Numeric and Character Literals} In contrast to the Curry Report, \CYS adopts Haskell's notation of literals for both numeric as well as character and string literals, extended with the ability to denote binary integer literals. \begin{grammar} \production{Int}{ Decimal \extension{ \alt \term{0b} Binary \sor{} \term{0B} Binary } \alt \term{0o} Octal \sor{} \term{0O} Octal \alt \term{0x} Hexadecimal \sor{} \term{0X} Hexadecimal } \production{Float}{ Decimal \term{.} Decimal \opt{Exponent} \alt Decimal Exponent }\\ \production{Exponent}{ \group{\term{e} \sor{} \term{E}} \opt{\term{+} \sor{} \term{-}} Decimal } \production{Decimal }{Digit \many{Digit}}\\ \extension{ \production{Binary }{Binit \many{Binit}}\\ }% \production{Octal }{Octit \many{Octit}}\\ \production{Hexadecimal}{Hexit \many{Hexit}} \production{Digit}{ \term{0} \sor{} \term{1} \sor{} \term{2} \sor{} \term{3} \sor{} \term{4} \sor{} \term{5} \sor{} \term{6} \sor{} \term{7} \sor{} \term{8} \sor{} \term{9} }\\ \extension{ \production{Binit}{\term{0} \sor{} \term{1}}\\ }% \production{Octit}{ \term{0} \sor{} \term{1} \sor{} \term{2} \sor{} \term{3} \sor{} \term{4} \sor{} \term{5} \sor{} \term{6} \sor{} \term{7} }\\ \production{Hexit}{ \term{0} \sor{} \term{1} \sor{} \term{2} \sor{} \term{3} \sor{} \term{4} \sor{} \term{5} \sor{} \term{6} \sor{} \term{7} \sor{} \term{8} \sor{} \term{9} \sor{} \term{A} \sor{} \term{B} \sor{} \term{C} \sor{} \term{D} \sor{} \term{E} \sor{} \term{F} \sor{} \term{a} \sor{} \term{b} \sor{} \term{c} \sor{} \term{d} \sor{} \term{e} \sor{} \term{f} } \end{grammar} \noindent For character and string literals, the syntax is as follows: \begin{grammar} \production{Char}{ \term{'} \group{ \without{\nonterm{Graphic}}{\term{\bs}} \sor{} Space \sor{} \without{\nonterm{Escape}}{\term{\bs\&}} } \term{'} }\\ \production{String}{ \term{"} \many{ \without{\nonterm{Graphic}}{\term{"} \sor{} \term{\bs}} \sor{} Space \sor{} Escape \sor{} Gap } \term{"} }\\ \production{Escape}{ \term{\bs} \group{ CharEsc \sor{} AsciiEsc \sor{} Decimal \sor{} \term{o} Octal \sor{} \term{x} Hexadecimal } }\\ \production{CharEsc}{ \term{a} \sor{} \term{b} \sor{} \term{f} \sor{} \term{n} \sor{} \term{r} \sor{} \term{t} \sor{} \term{v} \sor{} \term{\bs} \sor{} \term{"} \sor{} \term{'} \sor{} \term{\&} }\\ \production{AsciiEsc}{ \term{\caret} Cntrl \sor{} \term{NUL} \sor{} \term{SOH} \sor{} \term{STX} \sor{} \term{ETX} \sor{} \term{EOT} \sor{} \term{ENQ} \sor{} \term{ACK} \alt \term{BEL} \sor{} \term{BS} \sor{} \term{HT} \sor{} \term{LF} \sor{} \term{VT} \sor{} \term{FF} \sor{} \term{CR} \sor{} \term{SO} \sor{} \term{SI} \sor{} \term{DLE} \alt \term{DC1} \sor{} \term{DC2} \sor{} \term{DC3} \sor{} \term{DC4} \sor{} \term{NAK} \sor{} \term{SYN} \sor{} \term{ETB} \sor{} \term{CAN} \alt \term{EM} \sor{} \term{SUB} \sor{} \term{ESC} \sor{} \term{FS} \sor{} \term{GS} \sor{} \term{RS} \sor{} \term{US} \sor{} \term{SP} \sor{} \term{DEL} }\\ \production{Cntrl}{ \term{A} \sor{} $\ldots$ \sor{} \term{Z} \sor{} \term{@} \sor{} \term{[} \sor{} \term{\bs} \sor{} \term{]} \sor{} \term{\caret} \sor{} \term{\us} }\\ \production{Gap}{ \term{\bs} WhiteChar \many{WhiteChar} \term{\bs} }\\ \production{Graphic}{\textnormal{any graphical character}} \\ \production{WhiteChar}{\textnormal{any whitespace character}} \end{grammar} \subsection{Layout} Similarly to Haskell, a Curry programmer can use layout information to define the structure of blocks. For this purpose, we define the indentation of a symbol as the column number indicating the start of this symbol, and the indentation of a line is the indentation of its first symbol.\footnote{In order to determine the exact column number, we assume a fixed-width font with tab stops at each 8th column.} The layout (or \enquote{off-side}) rule applies to lists of syntactic entities after the keywords \term{let}, \term{where}, \term{do}, or \code{of}. In the subsequent context-free syntax, these lists are enclosed with curly braces (\term{\{ \}}) and the single entities are separated by semicolons (\term{;}). Instead of using the curly braces and semicolons of the context-free syntax, a Curry programmer can also specify these lists by indentation: the indentation of a list of syntactic entities after \term{let}, \term{where}, \code{do}, or \code{of} is the indentation of the next symbol following the \term{let}, \term{where}, \code{do}, \code{of}. Any item of this list starts with the same indentation as the list. Lines with only whitespaces or an indentation greater than the indentation of the list continue the item in the previous line. Lines with an indentation less than the indentation of the list terminate the entire list. Moreover, a list started by \term{let} is terminated by the keyword \code{in}. Thus, the sentence \begin{curry} f x = h x where { g y = y + 1 ; h z = (g z) * 2 } \end{curry} which is valid w.r.t.\ the context-free syntax, can be written with the layout rules as \begin{curry} f x = h x where g y = y + 1 h z = (g z) * 2 \end{curry} or also as \begin{curry} f x = h x where g y = y + 1 h z = (g z) * 2 \end{curry} To avoid an indentation of top-level declarations, the keyword \term{module} and the end-of-file token are assumed to start in column 0. \subsection{Context-Free Grammar} \begin{grammar} \production{Module}{ \term{module} ModuleID \opt{Exports} \term{where} Block \alt Block } % Block \production{Block}{ \term{\{} \opt{ImportDecls \term{;}} \gseq{BlockDecl}{;}{n} \term{\}} \margcomb{\extension{no fixity declarations here}}{n \geq 0} } % Exports \production{Exports}{\term{(} \gseq{Export}{,}{n} \term{)} \extension{\margin{n \geq 0}}}\\ \production{Export}{ QFunction \alt QTypeConstrID \extension{\opt{\term{(} \gseq{ConsLabel}{,}{n} \term{)}} \margin{n \geq 0}} \alt QTypeConstrID \term{(..)} \extension{ \alt QClassID \opt{\term{(} \gseq{Function}{,}{n} \term{)}} \margin{n \geq 0} \alt QClassID \term{(..)} } \alt \term{module} ModuleID }\\ \extension{ \production{ConsLabel}{DataConstr \sor{} Label} } % Import \production{ImportDecls}{\gseq{ImportDecl}{;}{n} \margin{n \geq 1}} \\ \production{ImportDecl}{ \term{import} \opt{\term{qualified}} ModuleID \opt{\term{as} ModuleID} \opt{ImportSpec}}\\ \production{ImportSpec}{ \term{(} \gseq{Import}{,}{n} \term{)} \extension{\margin{n \geq 0}} \alt \term{hiding} \term{(} \gseq{Import}{,}{n} \term{)} \extension{\margin{n \geq 0}} }\\ \production{Import}{ Function \alt TypeConstrID \extension{\opt{\term{(} \gseq{ConsLabel}{,}{n} \term{)}} \margin{n \geq 0}} \alt TypeConstrID \term{(..)} \extension{ \alt ClassID \opt{\term{(} \gseq{Function}{,}{n} \term{)}} \margin{n \geq 0} \alt ClassID \term{(..)} } } % Block Declaration \production{BlockDecl}{ TypeSynDecl \alt DataDecl \extension{ \alt NewtypeDecl \alt FixityDecl } \alt FunctionDecl \extension{ \alt DefaultDecl \alt ClassDecl \alt InstanceDecl } } % Type Synonym \production{TypeSynDecl}{\term{type} SimpleType \term{=} TypeExpr}\\ \production{SimpleType}{TypeConstrID \gseq{TypeVarID}{}{n} \margin{n \geq 0}} % Data type \production{DataDecl}{ \extension{\term{external}} \term{data} SimpleType \margtext{external data type} \alt \term{data} SimpleType \extension{\opt{\term{=} ConstrDecls} \opt{\term{deriving} DerivingDecl}} }\\ \production{ConstrDecls}{\gseq{ConstrDecl}{|}{n} \margin{n \geq 1}}\\ \production{ConstrDecl}{ \extension{\opt{ExistVars} \opt{Context \term{=>}}} ConDecl }\\ \extension{ \production{ExistVars}{ \term{forall} \gseq{ExistVarID}{}{n} \term{.} \margin{n \geq 1} } }\\ \production{ConDecl}{ \extension{DataConstr} \gseq{SimpleTypeExpr}{}{n} \margin{n \geq 0}% \extension{% \alt TypeAppExpr ConOp TypeAppExpr \margtext{infix data constructor} }% \alt \extension{DataConstr} \term{\{} \gseq{FieldDecl}{,}{n} \term{\}} \margin{n \geq 0} }\\ \production{FieldDecl}{\gseq{\extension{Label}}{,}{n} \term{::} TypeExpr \margin{n \geq 1}}\\ \extension{ \production{DerivingDecl}{\term{(} \gseq{QClassID}{,}{n} \term{)} \margin{n \geq 0}} } % Newtype \extension{ \production{NewtypeDecl}{\term{newtype} SimpleType \term{=} NewConstrDecl \opt{\term{deriving} DerivingDecl}}\\ \production{NewConstrDecl}{ DataConstr SimpleTypeExpr \alt DataConstr \term{\{} Label \term{::} TypeExpr \term{\}} } } % Qualified type expression \extension{ \production{QualTypeExpr}{\opt{Context \term{=>}} TypeExpr}\\ \production{Context}{ Constraint \alt \term{(} \gseq{Constraint}{\term{,}}{n} \term{)}\margin{n \geq 0} }\\ \production{Constraint}{ QClassID ClassVarID \alt QClassID \term{(} ClassVarID \gseq{SimpleTypeExpr}{}{n} \term{)} \margin{n \geq 1} } } % Type expression \production{TypeExpr}{\extension{TypeAppExpr} \opt{\term{->} TypeExpr}}\\ \extension{ \production{TypeAppExpr}{\opt{TypeAppExpr} SimpleTypeExpr} }\\ \production{SimpleTypeExpr}{ TypeVarID \alt \extension{GTypeConstr} \alt \term{(} \gseq{TypeExpr}{,}{n} \term{)} \margcomb{tuple type}{n \geq 2} \alt \term{[} TypeExpr \term{]} \margtext{list type} \alt \term{(} TypeExpr \term{)} \margtext{parenthesized type} }\\ \extension{ \production{GTypeConstr}{ \term{()} \margtext{unit type constructor} \alt \term{[]} \margtext{list type constructor} \alt \term{(->)} \margtext{function type constructor} \alt \term{(,} \many{\term{,}} \term{)} \margtext{tuple type constructor} \alt QTypeConstrID } } % DefaultDecl \extension{ \production{DefaultDecl}{ \term{default} \term{(} \gseq{TypeExpr}{,}{n} \term{)} \margin{n \geq 0} } } % ClassDecl \extension{ \production{ClassDecl}{ \term{class} \opt{SimpleContext \term{=>}} ClassID ClassVarID \opt{\term{where} ClsDecls} }\\ \production{ClsDecls}{\term{\{} \gseq{ClsDecl}{\term{;}}{n} \term{\}} \margin{n \geq 0}}\\ \production{ClsDecl}{ Signature \alt Equat }\\ \production{SimpleContext}{ SimpleConstraint \alt \term{(} \gseq{SimpleConstraint}{\term{,}}{n} \term{)} \margin{n \geq 0} }\\ \production{SimpleConstraint}{QClassID ClassVarID} } % InstanceDecl \extension{ \production{InstanceDecl}{ \term{instance} \opt{SimpleContext \term{=>}} QClassID InstType \opt{\term{where} InstDecls} }\\ \production{InstDecls}{ \term{\{} \gseq{InstDecl}{\term{;}}{n} \term{\}} \margin{n \geq 0} }\\ \production{InstDecl}{Equat}\\ \production{InstType}{ GTypeConstr \alt\term{(} GTypeConstr \gseq{ClassVarID}{}{n} \term{)} \margin{n \geq 0} \alt\term{(} \gseq{ClassVarID}{\term{,}}{n} \term{)} \margin{n \geq 2} \alt\term{[} ClassVarID \term{]} \alt\term{(} ClassVarID \term{->} ClassVarID \term{)} } } % FixityDecl \production{FixityDecl}{Fixity \extension{\opt{Int}} \gseq{\extension{Op}}{,}{n} \margin{n \geq 1}}\\ \production{Fixity}{\term{infixl} \sor{} \term{infixr} \sor{} \term{infix}} % Function Declaration \production{FunctionDecl}{Signature \extension{\sor{} ExternalDecl} \sor{} Equation}\\ \production{Signature}{Functions \term{::} \extension{QualTypeExpr}}\\ \extension{ \production{ExternalDecl}{ Functions \term{external} \margtext{externally defined functions} }\\ } \production{Functions}{\gseq{Function}{,}{n} \margin{n \geq 1}}\\ \production{Equation}{FunLhs Rhs}\\ \production{FunLhs}{ Function \gseq{SimplePat}{}{n} \margin{n \geq 0}% \extension{% \alt ConsPattern FunOp ConsPattern \alt \term{(} FunLhs \term{)} \gseq{SimplePat}{}{n} \margin{n \geq 1} }% } \extension{ \production{Rhs}{ \term{=} Expr \opt{\term{where} LocalDecls} \alt CondExprs \opt{\term{where} LocalDecls} }}\\ \production{CondExprs}{\term{|} InfixExpr \term{=} Expr \opt{CondExprs}} % Local Declarations \production{LocalDecls}{\offside{LocalDecl}{;}{n} \extension{\margin{n \geq 0}}}\\ \production{LocalDecl}{ FunctionDecl \alt PatternDecl \alt \gseq{Variable}{,}{n} \term{free} \margin{n \geq 1}% \extension{% \alt FixityDecl }% }\\ \production{PatternDecl}{Pattern \extension{Rhs}} % Pattern \production{Pattern}{ ConsPattern \opt{\extension{QConOp} Pattern} \margtext{infix constructor pattern} }\\ \production{ConsPattern}{ \extension{GDataConstr} \gseq{SimplePat}{}{n} \margcomb{constructor pattern}{n \geq 1}% \extension{ \alt \term{-} \group{Int \sor{} Float} \margtext{negative pattern} } \alt SimplePat }\\ \production{SimplePat}{ Variable \alt \term{\us} \margtext{wildcard} \alt \extension{GDataConstr} \margtext{constructor} \alt Literal \margtext{literal} \alt \term{(} Pattern \term{)} \margtext{parenthesized pattern} \alt \term{(} \gseq{Pattern}{,}{n} \term{)} \margcomb{tuple pattern}{n \geq 2} \alt \term{[} \gseq{Pattern}{,}{n} \term{]} \margcomb{list pattern}{n \geq 1}% \alt Variable \term{@} SimplePat \margtext{as-pattern} \extension{ \alt \term{\textasciitilde} SimplePat \margtext{irrefutable pattern} \alt \term{(} QFunction \gseq{SimplePat}{}{n} \term{)} \margcomb{functional pattern}{n \geq 1} \alt \term{(} ConsPattern QFunOp Pattern \term{)} \margtext{infix functional pattern} } \alt \extension{QDataConstr} \term{\{} \gseq{FieldPat}{,}{n} \term{\}} \margcomb{labeled pattern}{n \geq 0} }\\ \production{FieldPat}{\extension{QLabel} \term{=} Pattern} % Expressions \production{Expr}{ InfixExpr \term{::} \extension{QualTypeExpr} \margtext{expression with type signature} \alt InfixExpr }\\ \production{InfixExpr}{ NoOpExpr QOp InfixExpr \margtext{infix operator application} \alt \term{-} InfixExpr \margtext{\extension{unary minus}}% \alt NoOpExpr }\\ \production{NoOpExpr}{ \term{\bs} \gseq{SimplePat}{}{n} \term{->} Expr \margcomb{lambda expression}{n \geq 1} \alt \term{let} LocalDecls \term{in} Expr \margtext{let expression} \alt \term{if} Expr \term{then} Expr \term{else} Expr \margtext{conditional} \alt \term{case} Expr \term{of} \offside{Alt}{;}{n} \margcomb{case expression}{n \geq 1} \alt \term{fcase} Expr \term{of} \offside{Alt}{;}{n} \margcomb{fcase expression}{n \geq 1} \alt \term{do} \term{\{} \gseq{Stmt}{;}{n} \term{;} Expr \term{\}} \margcomb{do expression}{n \geq 0} \alt FuncExpr }\\ \production{FuncExpr}{\opt{FuncExpr} BasicExpr \margtext{application}}\\ \production{BasicExpr}{ Variable \margtext{variable} \alt \term{\us} \margtext{anonymous free variable}% \alt QFunction \margtext{qualified function} \extension{ \alt GDataConstr \margtext{general constructor} } \alt Literal \margtext{literal} \alt \term{(} Expr \term{)} \margtext{parenthesized expression} \alt \term{(} \gseq{Expr}{,}{n} \term{)} \margcomb{tuple}{n \geq 2} \alt \term{[} \gseq{Expr}{,}{n} \term{]} \margcomb{finite list}{\extension{n \geq 1}} \alt \term{[} Expr \opt{\term{,} Expr} \term{..} \opt{Expr} \term{]} \margtext{arithmetic sequence} \alt \term{[} Expr \term{|} \gseq{Qual}{,}{n} \term{]} \margcomb{list comprehension}{n\geq 1} \alt \term{(} \extension{InfixExpr QOp} \term{)} \margtext{left section} \alt \term{(} \extension{\without{\nonterm{QOp}}{\term{-}} InfixExpr} \term{)} \margtext{right section}% \alt \extension{QDataConstr} \term{\{} \gseq{FBind}{,}{n} \term{\}} \margcomb{record construction}{n \geq 0} \alt \without{BasicExpr}{\extension{QDataConstr}} \term{\{} \gseq{FBind}{,}{n} \term{\}} \margcomb{record update}{n \geq 1} } \production{Alt}{ Pattern \term{->} Expr \opt{\term{where} LocalDecls} \alt Pattern GdAlts \opt{\term{where} LocalDecls} }\\ \production{GdAlts}{\term{|} InfixExpr \term{->} Expr \opt{GdAlts}} \production{FBind}{\extension{QLabel} \term{=} Expr} \production{Qual}{ Pattern \term{<-} Expr \margtext{generator} \alt \term{let} LocalDecls \margtext{local declarations} \alt Expr \margtext{guard} } \production{Stmt}{ Pattern \term{<-} Expr \alt \term{let} LocalDecls \alt Expr } \production{Literal}{Int \sor{} Float \sor{} Char \sor{} String} \extension{ \production{GDataConstr}{ \term{()} \margtext{unit} \alt \term{[]} \margtext{empty list} \alt \term{(,}\many{\term{,}}\term{)} \margtext{tuple} \alt QDataConstr } % Identifier \production{Variable }{VariableID \sor{} \gparen{InfixOpID} \margtext{variable}}\\ \production{Function }{FunctionID \sor{} \gparen{InfixOpID} \margtext{function}}\\ \production{QFunction }{QFunctionID \sor{} \gparen{QInfixOpID} \margtext{qualified function}}\\ \production{DataConstr }{DataConstrID \sor{} \gparen{InfixOpID} \margtext{constructor}}\\ \production{QDataConstr}{QDataConstrID \sor{} \gparen{QInfixOpID} \margtext{qualified constructor}}\\ \production{Label }{LabelID \sor{} \gparen{InfixOpID} \margtext{label}}\\ \production{QLabel }{QLabelID \sor{} \gparen{QInfixOpID} \margtext{qualified label}} % Operator \production{VarOp }{InfixOpID \sor{} \gbackquote{VariableID} \margtext{variable operator}}\\ \production{FunOp }{InfixOpID \sor{} \gbackquote{FunctionID} \margtext{function operator}}\\ \production{QFunOp }{QInfixOpID \sor{} \gbackquote{QFunctionID} \margtext{qualified function operator}}\\ \production{ConOp }{InfixOpID \sor{} \gbackquote{DataConstrID} \margtext{constructor operator}}\\ \production{QConOp }{GConSym \sor{} \gbackquote{QDataConstrID} \margtext{qualified constructor operator}}\\ \production{LabelOp }{InfixOpID \sor{} \gbackquote{LabelID} \margtext{label operator}}\\ \production{QLabelOp}{QInfixOpID \sor{} \gbackquote{QLabelID} \margtext{qualified label operator}} \production{Op }{FunOp \sor{} ConOp \sor{} LabelOp \margtext{operator}} \\ \production{QOp }{VarOp \sor{} QFunOp \sor{} QConOp \sor{} QLabelOp \margtext{qualified operator}}\\ \production{GConSym}{\term{:} \sor{} QInfixOpID \margtext{general constructor symbol}} } \end{grammar} %%% Local Variables: %%% mode: latex %%% TeX-master: "manual" %%% End: pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/000077500000000000000000000000001323431571100245735ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/README000066400000000000000000000001761323431571100254570ustar00rootroot00000000000000This directory contains the documentation of various Curry tools. It has been automatically generated from the tool packages. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/casc/000077500000000000000000000000001323431571100255045ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/casc/Makefile000066400000000000000000000004761323431571100271530ustar00rootroot00000000000000default: curry-style-guide.html # Generate an HTML version of the style guide. curry-style-guide.html: curry-style-guide.md style.html ifeq ($(shell which pandoc > /dev/null ; echo $$?),0) pandoc -s -N --toc -H style.html -o $@ $< else @echo "WARNING: pandoc not found, Curry style description not generated" endif pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/casc/README.txt000066400000000000000000000006331323431571100272040ustar00rootroot00000000000000This directory contains some documention for the Curry style checker: manual.tex: A short description to be included in the main manual of the Curry system. curry-style-guide.md: A description of the preferred style to write Curry programs. style.html: A style sheet to be included in the HTML documentation of the style guide. Makefile: Makefile to generate an HTML version of the style guide. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/casc/curry-style-guide.md000066400000000000000000000317751323431571100314400ustar00rootroot00000000000000% Curry Style Guide % Björn Peemöller, Michael Hanus % October 06, 2016 This document contains a description of the preferred style for writing Curry programs. The described style is oriented to the [Haskell Style Guide von Johan Tibell][HSG], but it has been adapted in various points. In principle, this style guide is a guideline from which one can deviate _if there are good reasons for it_. [HSG]: https://github.com/tibbe/haskell-style-guide # General Formatting ## Line Length The maximum line length is *80 characters*. ## Indentation Tabulator stops are not allowed in source programs, since the actual indentation space of a tabulator stop might influence the semantics of the program. Instead, use blanks for indentation. Code blocks should be intended with *2 spaces*. Most text editors can be configured so that tabs are automatically replaced by (at most) two spaces. ## Local Definitions The keyword `where`{.curry} is indented by *one space* and the subsequent local definitions by a further space. Hence, the local definitions are intended, as other code blocks, by *2 spaces*. If there is only one short local definition, it can be written directly after the keyword `where`{.curry}. Several local value definitions should be aligned at the equality symbol if they have a comparable number of parameters. Local definitions should be aligned like top-level definitions (see below): ~~~ {.curry} main :: IO () main = do line <- getLine putStrLn $ answer line where answer s = "Your input: " ++ s f y = x + y where x = 1 g x = x + val1 + secondVal where val1 = 1 secondVal = if isZero x then 1 else 2 -- local operation isZero x | x == 0 = True | otherwise = False ~~~ ## Blank Lines There should be one blank line between two top-level definitions. There are no blank lines between type signature and the defining rules. Similarly, comments of top-level definitions are not separated from the actual definition with a blank line. ~~~ {.curry} -- f increments the argument by one f :: Int -> Int f x = x + 1 -- fInv decrements the argument by one fInv x = x - 1 ~~~ ## Spaces Binary operators, like `(++)`{.curry}, are surrounded with a single space on either side. ~~~ {.curry} -- bad "Not"++"good" -- good "Very" ++ "good" ~~~ It is allowed to omit the surrounding spaces from simple infix operators, like `(+)`{.curry}, or the infix list constructor `(:)`{.curry}. However, this is not required. ~~~ {.curry} f n = n * (n+1) / 2 head (x:_) = x ~~~ Similarly to written texts, a space follows a comma, but there is no space in front of the comma: ~~~ {.curry} aList = [1, 2, 3] aTuple = (True, "True", 1) ~~~ One _can_ put a space after a lambda, in particular, if there is non-variable pattern after a lambda. If there is a variable after a lambda, one can omit the space: ~~~ {.curry} map (\ (_:_) -> True) map (\ x -> x + 1) map (\x -> x + 1) ~~~~ # Formatting of Specific Language Constructs ## Module Header If the export list fits into one line, it can be written as follows: ~~~ {.curry} module Set (Set, empty) where ~~~ Longer export lists should be aligned as follows: ~~~ {.curry} module Data.Set ( Set , empty , singleton , member ) where ~~~ Optional, one can also put several names into line: ~~~ {.curry} module Data.Set ( Set, empty, singleton , member, union, intersect ) where ~~~ If there are types exported with constructors, one should separate the type name and the constructors with a blank: ~~~ {.curry} module Tree (Tree (..), BinTree (Leaf, Branch)) where ~~~ ## Import Declarations The list of imported modules should be ordered in the following three categories: 1. Standard library modules, e.g., `List`{.curry}, `IO`{.curry} 2. Third party libraries (often not used) 3. Other local modules (developed with the current application) The list of imports in each category should be sorted alphabetically. With the exception of the prelude, all used entities from imported modules should be explicitly or `qualified`{.curry} imported. If the list of imported entities is long, one can omit this general rule. ~~~ {.curry} import List (isInfixOf) import qualified Set as Set import SecondParty.Module1 (fun) import ThirdParty.Module1 (($$$)) import MyUtilsModule -- import everything ~~~ ## `data` Declarations The constructors of a `data`{.curry} declaration should be vertically aligned: ~~~ {.curry} data Tree a = Leaf | Branch a (Tree a) (Tree a) ~~~ If there are only a few constructors that fits into one line, one can write the `data`{.curry} declaration as follows: ~~~ {.curry} data Bit = Zero | One ~~~ Records (`data`{.curry} declarations with named selectors) should be vertically aligned as follows: ~~~ {.curry} data Person = Person { firstName :: String , lastName :: String , age :: Int } ~~~ ## Type Signatures In type signatures one should put a blank before and after the function arrow `->`{.curry}. ~~~ {.curry} map :: (a -> b) -> [a] -> [b] ~~~ The type signature should be written in one line if it fits. If the type signature is long or if one want to put a comment after the individual types, one should align the function arrows: ~~~ {.curry} uncurry10 :: (a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k) -> (a, b, c, d, e, f, g, h, i, j) -> k area :: Int -- width -> Int -- height -> Int -- area ~~~ ## Argument Patterns If an operation is defined by several rules, one should vertically align the parameters with the same position: ~~~ {.curry} and True True = True and _ _ = False ~~~ The equal signs `=`{.curry} should also be aligned. ## Guards Guards should immediately follow the patterns or they should be indented in the following line. In any case, they should be vertically aligned: ~~~ {.curry} f x y z | x == y = z | otherwise = z + 1 g x y z | x == y && not z = 1 | otherwise = 0 ~~~ If the conditions are very long, the equal signs can start in the next line below the condition: ~~~ {.curry} f x y z | thisIsAVeryLongConditionWhichNeedsAllTheSpaceAvailableInTheLine x y z = 42 | otherwise = 0 ~~~ ## `if-then-else` As a general rule, one should try to use patterns and guards instead of `if-then-else`{.curry} expressions. Short `if-then-else`{.curry} expressions can be written in one line (if this fits into the maximal line length): ~~~ {.curry} f x = g (if x then 0 else 1) 42 ~~~ Otherwise, one should indent the `then`{.curry} and `else`{.curry} branch, which are vertically aligned: ~~~ {.curry} foo = if ... then ... else ... ~~~ If the condition is short, one can also write the `if`{.curry} and `then`{.curry} part in one line, but align the `then`{.curry} and `else`{.curry} parts: ~~~ {.curry} foo = if ... then ... else ... ~~~ ## `case` Expressions The alternatives in a `case`{.curry} expression should be aligned in the following form: ~~~ {.curry} foobar = case something of Just j -> foo Nothing -> bar ~~~ or ~~~ {.curry} foobar = case something of Just j -> foo Nothing -> bar ~~~ The arrows `->`{.curry} should be aligned to improve readability. ## `let` Expressions Short `let`{.curry} expressions with a single local declaration can be written in one line (if the line is not too long): ~~~ {.curry} squareSum x y = let z = x + y in z * z grandfather g c | let f free in father g f && father f c = True ~~~ Long `let`{.curry} expressions or `let`{.curry} expressions with more then one local declaration should be aligned so that the keywords `let`{.curry} and `in`{.curry} are in the same column: ~~~ {.curry} qsort (x:xs) = let (l,r) = split x xs in qsort l ++ (x:qsort r) doubleSquareSum x y = let z = x + y sq = z * z in sq + sq ~~~ The equal signs of all local declarations should be vertically aligned. The same rule is used for `let`{.curry} expressions in `do`{.curry} blocks (where there is no `in`{.curry} expression). ## `do` Blocks The statements in a `do`{.curry} blocks should start immediately after the keyword `do`{.curry} or they are indented in the next line: ~~~ {.curry} echo = do name <- getLine putStrLn name greet = do putStr "How is your name? " name <- getLine putStrLn ("Hello " ++ name ++ "!") ~~~ ## List/Tuple Definitions The element of long lists should be aligned as follows: ~~~ {.curry} exceptions = [ InvalidStatusCode , MissingContentHeader , InternalServerError ] ~~~ One can also omit the first line break: ~~~ {.curry} directions = [ North , East , South , West ] ~~~ Short lists can be written in one line: ~~~ {.curry} short = [1, 2, 3] ~~~ The same rules apply to tuple definitions: ~~~ {.curry} t = (1, True) ignored = ( InvalidStatusCode , MissingContentHeader ) ~~~ ## Brackets Superfluous brackets should be avoided: ~~~ {.curry} seven = 1 + 2 * 3 f x = if cond x then 0 else 1 ~~~ instead of ~~~ {.curry} seven = (1 + (2 * 3)) f x = if (cond x) then 0 else 1 ~~~ In case of specific infix operators (e.g., not defined in the prelude) or if one is not sure about the precedence or want to document the predence, one can write brackets. # Comments ## Language Comments should be written in correct English. The identifiers used in a program should be also meaningful in English. ## Top-Level Declarations All top-level operations should have a comment and a type signature. This is a must for exported operations. One should use the syntax of [CurryDoc] for the comments of exported operations so that the program documentation can easily be generated. [CurryDoc]: https://www-ps.informatik.uni-kiel.de/currywiki/tools/currydoc ~~~{.curry} --- Splits the list argument into a list of lists of related adjacent --- elements. --- @param eq - the relation to classify adjacent elements --- @param xs - the list of elements --- @return the list of lists of related adjacent elements groupBy :: (a -> a -> Bool) -> [a] -> [[a]] ~~~ The comment of an operation should contain enough information so that one can use the operation without studying its implementation. Data types should be commented in a similar way. Exported constructors should have individual comments: ~~~ {.curry} --- The data type for representing XML expressions. --- @cons XText - a text string (PCDATA) --- @cons XElem - an XML element with tag field, attributes, and a list --- of XML elements as contents data XmlExp = XText String | XElem String [(String,String)] [XmlExp] ~~~ For records with explicit selectors (labels), one should add a comment for each selector: ~~~ {.curry} --- A natural person --- @field firstName - First name, may contain several ones --- @field lastName - Last name --- @field height - Height in centimeters data Person = Person { firstName :: String , lastName :: String , height :: Int } ~~~ ## End-of-Line Comments Comments at the end of a line should be separated from the code by at least one space: ~~~{.curry} foo :: Int -> Int foo n = salt * 32 + 9 where salt = 453645243 -- Magic hash salt. ~~~ # Naming Use camel case for names that consists of several logical units (words): ~~~ {.curry} data BankAccount = ... thisIsTheAnswer = 42 ~~~ To improve readability, one should not capitalize all letters in abbreviations. For instance, one should write `showXmlDoc`{.curry} instead of `showXMLDoc`{.curry}. An exception are abbreviations with only two letters, like `IO`{.curry}. Parameter names and names of local declarations are usually short, but one has to take the following rule into account: > Entity with larger visibility regions have longer names. The name `x`{.curry} can be used in a one-line operation but never as a top-level declaration. One should also take into account the following *conventions for short names*: * `f`{.curry} denotes an operation of type `a -> b`{.curry} * `n`{.curry}, `m`{.curry}, etc. denote natural numbers of type `Int`{.curry} * `x`{.curry}, `y`{.curry}, `z`{.curry} often denote values of polymorphic types * A name with suffix `s`{.curry} denote several values like lists. Here are some examples: `xs :: [a]`{.curry}, `fs :: [a -> b]`{.curry}, `xss :: [[a]]`{.curry} * `p`{.curry} denotes a predicate of type `a -> Bool`{.curry} * A name with an apostroph, like `x'`{.curry}, denote modified values: ~~~{.curry} let acc' = updateAcc acc in ... ~~~ * `k`{.curry} and `v`{.curry} are often used for *keys* and *values* in a mapping. # Compiler Warnings Code should be compilable with the parsing option ~~~{.curry} :set parser -Wall ~~~ without producing any warnings. If one uses a more logic-oriented programming style, operations are often defined with overlapping rules or incomplete pattern matching. In this case, one can explicitly omit the warnings by the parsing option ~~~{.curry} {-# OPTIONS_CYMAKE -Wno-incomplete-patterns -Wno-overlapping #-} ~~~ in the beginning module header. However, this should be done *only* in a program that depends on these features of Curry. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/casc/manual.tex000066400000000000000000000036771323431571100275200ustar00rootroot00000000000000\section{\texttt{curry-style}: A Style Checker for Curry Programs} \label{sec-casc} CASC\index{CASC}\index{style checking} is a tool to check the formatting style of Curry programs. The preferred style for writing Curry programs, which is partially checked by this tool, is described in a separate web page\footnote{% \url{http://www.informatik.uni-kiel.de/~pakcs/CurryStyleGuide.html}} Currently, CASC only checks a few formatting rules, like line lengths or indentation of \code{if-then-else}, but the kind of checks performed by CASC will be extended in the future. \subsection{Installation} The current implementation of CASC is a package managed by the Curry Package Manager CPM (see also Section~\ref{sec-cpm}). Thus, to install the newest version of CASC, use the following commands: % \begin{curry} > cypm update > cypm install casc \end{curry} % This downloads the newest package, compiles it, and places the executable \code{curry-style} into the directory \code{\$HOME/.cpm/bin}. Hence it is recommended to add this directory to your path in order to execute CASC as described below. \subsection{Basic Usage} To check the style of some Curry program stored in the file \code{prog.curry}, one can invoke the style checker by the command\pindex{curry-style}\pindex{style} % \begin{curry} curry-style prog \end{curry} % After processing the program, a list of all positions with stylistic errors is printed. \subsection{Configuration} CASC can be configured so that not all stylistic rules are checked. For this purpose, one should copy the global configuration file \code{cascrc} of CASC, which is stored in the main directory of the package,\footnote{% If you installed CASC as described above, the downloaded package is located in the directory \code{\$HOME/.cpm/bin_packages/casc}.} into the home directory under the name \ccode{.cascrc}. Then one can configure this file according to your own preferences, which are described in this file. % LocalWords: CASC pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/casc/style.html000066400000000000000000000032241323431571100275330ustar00rootroot00000000000000 pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/000077500000000000000000000000001323431571100255245ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/Demand.md000066400000000000000000000003411323431571100272340ustar00rootroot00000000000000Demand analysis --------------- This analysis assigns to each operation a list of argument positions (e.g., [1] for the first argument) which are demanded in order to reduce this operation to some constructor-rooted value. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/Deterministic.md000066400000000000000000000013151323431571100306510ustar00rootroot00000000000000Analysis of deterministic operations ------------------------------------ This analysis checks whether an operation is deterministically defined. Intuitively, an operation is deterministic if the evaluation of this operation applied to ground terms does not cause any non-determinism. The determinism analysis returns `nondeterministic` for a given operation if its definition contains overlapping left-hand sides or free variables, or if it depends on some non-deterministic operation. If calls to non-deterministic operations are encapsulated (by the use of set functions or operations from module `AllSolutions`), then it is classified as deterministic since the non-determinism does not occur at the top-level. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/Functional.md000066400000000000000000000011711323431571100301500ustar00rootroot00000000000000Analysis of functionally defined operations ------------------------------------------- This analysis checks whether an operation is defined in a pure functional manner. An operation is functionally defined if its definition does not contain overlapping left-hand sides or free variables, and it depends only on functionally defined operations. This analysis is stronger than the `Deterministic` analysis, since the latter classifies an operation as deterministic if calls to possibly non-deterministic operations are wrapped with encapsulated search operators, whereas this analysis does not allow the use of any logic features. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/Groundness.md000066400000000000000000000006321323431571100301760ustar00rootroot00000000000000Groundness analysis ------------------- This analysis assigns to each operation the conditions under which a ground (non-free) result is computed. The analysis results can be "always ground result", "possibly non-ground result", or "ground if arguments x1,..,xn are ground". The idea and details of this analysis can be found in the [ICLP'05 paper](http://www.informatik.uni-kiel.de/~mh/papers/ICLP05.html). pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/HiOrderConstr.md000066400000000000000000000003421323431571100305720ustar00rootroot00000000000000Higher-order constructor analysis --------------------------------- This analysis is a simple analysis for data constructors. It associates to each data constructor a flag indicating whether some argument contains functions. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/HiOrderFunc.md000066400000000000000000000004331323431571100302160ustar00rootroot00000000000000Higher-order property analysis ------------------------------ This analysis analyzes the higher-order status of an operation. It classifies an operations as higher-order since if it has functional arguments or results, or or it processes data structures with functional components. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/HiOrderType.md000066400000000000000000000003241323431571100302430ustar00rootroot00000000000000Higher-order type analysis -------------------------- This analysis analyzes the higher-order status of type constructors, i.e., it shows whether some constructor of a type constructor has functional arguments. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/Indeterministic.md000066400000000000000000000005431323431571100312020ustar00rootroot00000000000000Indeterminism analysis ---------------------- This analysis assigns to each operation a flag which is `True` if this operation might be indeterministic, i.e., calls directly or indirectly a select or committed choice operation. Thus, an indeterministic is not referentially transparent since it might deliver different results on different program runs. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/NDEffect.md000066400000000000000000000012471323431571100274700ustar00rootroot00000000000000Groundness/non-determinism effect analysis ------------------------------------------ This analysis assigns to each operation the conditions under which the evaluation of this operation might perform non-deterministic steps. The non-deterministic steps might be due to a `choice` (overlapping rules) or narrowing steps, where the latter might depend on the non-groundness of particular arguments. For instance, the operation not True = False not False = True is performs non-deterministic steps if the first argument is non-ground. The idea and details of this analysis can be found in the [ICLP'05 paper](http://www.informatik.uni-kiel.de/~mh/papers/ICLP05.html). pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/NonDetAllDeps.md000066400000000000000000000025321323431571100305040ustar00rootroot00000000000000Analysis of dependencies on all non-deterministic operations ------------------------------------------------------------ This analysis is useful if some operation has a non-deterministic behavior and one wants to find the reason for this behavior. For this purpose, the analysis computes for each operation the set of operations with a non-deterministic definition that might be called by this operation. An operation has a non-deterministic definition if its definition contains overlapping left-hand sides or free variables. If the non-determinism of an operation is encapsulated by a set function or an encapsulated search operation of the module `AllSolutions`, it is considered as deterministic. For instance, consider the operations last xs | _ ++ [x] == xs = x where x free coin = 0 ? 1 lastCoin = id (last [coin]) Then the operation `lastCoin` depends on the non-deterministic operations `last` and `coin`. Now consider the operations f x = x ? lastCoin g x = f x Then the operation `g` depends on the non-deterministic operation `f`, and also on the non-deterministic operations `last` and `coin`. In the long analysis output (produced by CASS in batch mode), the non-deterministic operations are shown together with the sequence of operations (limited to a length of 10) which calls the non-deterministic operation. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/NonDetDeps.md000066400000000000000000000030221323431571100300460ustar00rootroot00000000000000Analysis of dependencies on non-deterministic operations -------------------------------------------------------- This analysis is useful if some operation has a non-deterministic behavior and one wants to find the reason for this behavior. For this purpose, the analysis computes for each operation the set of operations with a non-deterministic definition that might be called by this operation. An operation has a non-deterministic definition if its definition contains overlapping left-hand sides or free variables. Non-deterministic operations that are called by other non-deterministic operations are ignored so that only the first (w.r.t. the call sequence) non-deterministic operations are returned. Moreover, if the non-determinism of an operation is encapsulated by a set function or an encapsulated search operation of the module `AllSolutions`, it is considered as deterministic. For instance, consider the operations last xs | _ ++ [x] == xs = x where x free coin = 0 ? 1 lastCoin = id (last [coin]) Then the operation `lastCoin` depends on the non-deterministic operations `last` and `coin`. Now consider the operations f x = x ? lastCoin g x = f x Then the operation `g` depends on the non-deterministic operation `f`, but the dependency on the non-deterministic operations `last` and `coin` is not reported. In the long analysis output (produced by CASS in batch mode), the non-deterministic operations are shown together with the operation which directly calls the non-deterministic operation. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/Overlapping.md000066400000000000000000000006411323431571100303350ustar00rootroot00000000000000Overlapping rule analysis ------------------------- The overlapping rule analysis checks whether an individual operation is defined by overlapping left-hand sides. For instance, the operation not True = False not False = True is not overlapping, whereas coin = 0 coin = 1 is overlapping. Note that f = coin is not overlapping, although it calls an operation defined by overlapping rules. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/PatComplete.md000066400000000000000000000015151323431571100302650ustar00rootroot00000000000000Pattern completeness analysis ----------------------------- This analysis analyzes an operation for a pattern-complete definition. An operation is pattern complete if each pattern match is defined for all constructors. For instance, the operation not True = False not False = True is pattern complete, whereas the operation head (x:_) = x is incomplete. If an operation is defined by overlapping rules, it is complete if there is one alternative with complete pattern matching. For instance, the operation por True x = True por x True = True por False False = False is not complete, since it corresponds to the following definition: por x y = por1 x y ? por2 x y por1 True _ = True por1 False False = True por2 _ True = True Hence, each alternative is incomplete. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/Productive.md000066400000000000000000000013001323431571100301640ustar00rootroot00000000000000Productivity analysis --------------------- This analysis computes some information about the termination or productivity of an operation. An operation is considered as being productive if it cannot perform an infinite number of steps without producing outermost constructors. This analysis assigns to an operation an abstract value indicating whether the function is terminating, looping, or productive. In the latter case, the abstract value contains the top-level calls, i.e., operations that are called at the top-level without an outermost constructor. For instance, consider the operations loop = id loop ones = 1 : ones `loop` is classified as looping whereas `ones` is productive. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/README.txt000066400000000000000000000004111323431571100272160ustar00rootroot00000000000000This directory contains some documention for the Curry Analysis Server System: manual.tex: A short description to be included in the main manual of the Curry system. .md: The documentation of the analysis registered with name in markdown syntax. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/RequiredValue.md000066400000000000000000000022351323431571100306250ustar00rootroot00000000000000Required value analysis ----------------------- This analysis checks for each operation in a Curry program whether the arguments must have a particular shape in order to compute some value. For instance, the negation operation `not` defined by not True = False not False = True requires the argument value `False` in order to compute the result `True` and it requires the argument `True` to compute the result `False`. This property is expressed by the following abstract type: not : (True -> False) | (False -> True) Hence, each abstract type is a constructor which represents all expressions rooted by this constructor. Moreover, the abstract type `cons` denotes any constructor-rooted expression and the abstract type `any` denotes any expression. The abstract type `_|_` denotes an impossible required type, i.e., an argument which is required but for which no applicable value exists. For instance, the operation f x = solve (x && not x) has the required value typing f: (_|_ -> {True}) A detailed description of this analysis and its application can be found in the [LOPSTR'15 paper](http://www.informatik.uni-kiel.de/~mh/papers/LOPSTR15.html). pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/RequiredValues.md000066400000000000000000000021571323431571100310130ustar00rootroot00000000000000Required values analysis ------------------------ This analysis checks for each operation in a Curry program whether the arguments must have a particular shape in order to compute some value. For instance, the negation operation `not` defined by not True = False not False = True requires the argument value `False` in order to compute the result `True` and it requires the argument `True` to compute the result `False`. This property is expressed by the following abstract type: not : ({True} -> {False}) | ({False} -> {True}) Hence, each abstract type is a set of constructors which represents all expressions rooted by one of the constructors in this set. Moreover, the abstract type `any` denotes any expression. The empty list denotes an impossible required type, i.e., an argument which is required but for which no applicable value exists. For instance, the operation f x = solve (x && not x) has the required value typing f: ({} -> True) A detailed description of this analysis and its application can be found in the [LOPSTR'15 paper](http://www.informatik.uni-kiel.de/~mh/papers/LOPSTR15.html). pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/RightLinear.md000066400000000000000000000006521323431571100302610ustar00rootroot00000000000000Right-linearity analysis ------------------------ This analysis checks whether an operation is right-linear, i.e., whether its evaluation does not duplicate any argument. Hence, this analysis returns `right-linear` for a given operation if it is defined by right-linear rules (i.e., rules that does not contain multiple occurrences of argument variables in its right-hand sides) and depends only on right-linear operations. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/RootCyclic.md000066400000000000000000000005441323431571100301230ustar00rootroot00000000000000Root cyclic analysis -------------------- This analysis assigns `True` to an operation `f` if its evaluation might result in an expression rooted by `f`. Hence, this analysis is useful to detect simple loops. f x = g x g x = h x h x = id (f x) id x = x Then `f`, `g`, and `h` are root-cyclic whereas `id` is not root-cyclic. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/RootReplaced.md000066400000000000000000000007241323431571100304340ustar00rootroot00000000000000Root replacement analysis ------------------------- This analysis returns for each function `f` all functions into which `f` can be replaced at the root. For instance, if there are the definitions: f x = g x g x = h x h x = k x : [] k x = x then the root replacements of `f` are `[g,h]` and the root replacements of `g` are `[h]`. This analysis could be useful to detect simple loops, e.g., if a function is in its own root replacement. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/SensibleType.md000066400000000000000000000024101323431571100304510ustar00rootroot00000000000000Sensible types analysis ----------------------- The `SensibleType` analysis is a type analysis which checks whether a type is sensible, i.e., whether there exists at least one value of this type. This analysis associates to each type constructor the following information: * sensible, i.e., there is exists some value of this type * parametric sensible, i.e., it is parametric type which is sensible if all type arguments are instantiated with sensible types * not sensible, i.e., there may be no values of this type For instance, the list type constructor "[]" is sensible and the pair type constructor "(,)" is parametric sensible. For further examples, consider the following type declarations: type Pair = (Int,Int) data RTree a = RTree a [RTree a] data ITree a = ITree a (ITree a) type IntRTree = RTree Int type IntITree = ITree Int type ITreeRTree = RTree (ITree Int) Then this analysis computes the following information: Pair : sensible RTree : parametric sensible ITree : not sensible IntRTree : sensible IntITree : not sensible ITreeRTree : not sensible Note that function types are classified as not sensible since it is not known whether some operation of this type exists. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/SiblingCons.md000066400000000000000000000004471323431571100302650ustar00rootroot00000000000000Sibling constructor analysis ---------------------------- This analysis associates to each data constructor the list of sibling constructors, i.e., all constructors of the same type without this data constructor. For instance, the sibling constructors of `Prelude.True` are `[Prelude.False]`. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/SolComplete.md000066400000000000000000000007141323431571100302760ustar00rootroot00000000000000Solution completeness analysis ------------------------------ This analysis assigns to a function a flag which is `True` if this function is operationally complete, i.e., does not call (explicitly or implicitly) a rigid function. For instance, the operation not True = False not False = True is `solution complete`, whereas the prelude operation `putChar` is not solution complete but may suspend if it is called with a free variable as argument. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/Terminating.md000066400000000000000000000015661323431571100303370ustar00rootroot00000000000000Termination analysis -------------------- This analysis assigns `True` to an operation `f` if all its evaluations on ground argument terms are finite. The current method used in this analysis is quite simple. It checks whether the arguments in all recursive calls of an operation are smaller than the arguments passed to the operation. Indirect calls are not considered. Therefore, the operation length [] = 0 length (x:xs) = 1 + length xs is classified as terminating, whereas the semantically equivalent operation length [] = 0 length (x:xs) = incLength xs incLength xs = 1 + length xs is classified as possibly non-terminating. Operations containing free variables in their definitions are also classified as possibly non-terminating since a free variable might reduce to arbitrarily large constructor terms (in case of recursive data types). pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/Total.md000066400000000000000000000005201323431571100271260ustar00rootroot00000000000000Totally definedness analysis ---------------------------- This analysis assigns to each operation a flag which is `True` if this operation is completely defined on its input types, i.e., reducible for all ground data terms. Thus, an operation is totally defined if it is pattern complete and depends only on totally defined functions. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/TypesInValues.md000066400000000000000000000016531323431571100306260ustar00rootroot00000000000000Analyzing types occurring in values ----------------------------------- The `TypesInValues` analysis is a type analysis which assigns to each data type defined in a program the list of data types (type constructors) which might occur in value arguments of this type. For instance, no type constructors are associated to `Bool` since Boolean values have no arguments. The type constructor `[]` is associated to the `[]` since a list occurs in the second argument of a non-empty list. Thus, this analysis can be used to check for recursive types: if a type constructor is associated to itself, the type is recursive, i.e., can have values of arbitrary size. For instance, consider the following type declarations: data List a = Empty | Cons a (List a) data Tree a = Leaf | Node (List (Tree a)) Then this analysis computes the following information: List : List Tree : List, Tree Hence, both types are recursive. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/main.tex000066400000000000000000000036101323431571100271720ustar00rootroot00000000000000\documentclass[11pt,fleqn]{article} \usepackage[T1]{fontenc} \usepackage{latexsym} \usepackage{url} \usepackage{xspace} \usepackage{graphicx} \setlength{\textwidth}{16.5cm} \setlength{\textheight}{23cm} \renewcommand{\baselinestretch}{1.1} \setlength{\topmargin}{-1cm} \setlength{\oddsidemargin}{0cm} \setlength{\evensidemargin}{0cm} \setlength{\marginparwidth}{0.0cm} \setlength{\marginparsep}{0.0cm} \newlength{\figurewidth} \setlength{\figurewidth}{\textwidth} \addtolength{\figurewidth}{-0.4cm} % font for program texts \renewcommand{\tt}{\usefont{OT1}{cmtt}{m}{n}\selectfont} \newcommand{\codefont}{\small\tt} \usepackage{listings} \lstset{aboveskip=1.5ex, belowskip=1.5ex, showstringspaces=false, % no special string space mathescape=true, flexiblecolumns=false, xleftmargin=2ex, basewidth=0.52em, basicstyle=\small\ttfamily} \lstset{literate={->}{{$\rightarrow{}\!\!\!$}}3 } \lstnewenvironment{curry}{}{} \lstnewenvironment{currynomath}{\lstset{mathescape=false}}{} % Curry w/o math \newcommand{\listline}{\vrule width0pt depth1.75ex} % program text in normal text \newcommand{\code}[1]{\mbox{\codefont #1}} % program text in normal text with apostrophs \newcommand{\ccode}[1]{``\code{#1}''} \newcommand{\pindex}[1]{\index{#1@{\tt #1}}} % program elements in index \newcommand{\CYS}{Curry\xspace} % name of the Curry system described here \newcommand{\cyshome}{\mbox{\textit{curryhome}}\xspace} % symbolic installation directory \begin{document} \sloppy \input{manual.tex} % Bibliography \begin{thebibliography}{10} \bibitem{HanusSkrlac14} M.~Hanus and F.~Skrlac. \newblock A modular and generic analysis server system for functional logic programs. \newblock In {\em Proc. of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation (PEPM'14)}, pages 181--188. ACM Press, 2014. \end{thebibliography} \end{document} pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cass/manual.tex000066400000000000000000000362431323431571100275330ustar00rootroot00000000000000\section{CASS: A Generic Curry Analysis Server System} \label{sec-cass} CASS\index{CASS}\index{analyzing programs}\index{program!analysis} (Curry Analysis Server System) is a tool for the analysis of Curry programs. CASS is generic so that various kinds of analyses (e.g., groundness, non-determinism, demanded arguments) can be easily integrated into CASS. In order to analyze larger applications consisting of dozens or hundreds of modules, CASS supports a modular and incremental analysis of programs. Moreover, it can be used by different programming tools, like documentation generators, analysis environments, program optimizers, as well as Eclipse-based development environments. For this purpose, CASS can also be invoked as a server system to get a language-independent access to its functionality. CASS is completely implemented Curry as a master/worker architecture to exploit parallel or distributed execution environments. The general design and architecture of CASS is described in \cite{HanusSkrlac14}. In the following, CASS is presented from a perspective of a programmer who is interested to analyze Curry programs. \subsection{Installation} The current implementation of CASS is a package managed by the Curry Package Manager CPM. Thus, to install the newest version of CASS, use the following commands: % \begin{curry} > cypm update > cypm install cass \end{curry} % This downloads the newest package, compiles it, and places the executable \code{cass} into the directory \code{\$HOME/.cpm/bin}. Hence it is recommended to add this directory to your path in order to execute CASS as described below. \subsection{Using CASS to Analyze Programs} CASS is intended to analyze various operational properties of Curry programs. Currently, it contains more than a dozen program analyses for various properties. Since most of these analyses are based on abstract interpretations, they usually approximate program properties. To see the list of all available analyses, use the help option of CASS: \begin{curry} > cass -h Usage: $\ldots$ $\vdots$ Registered analyses names: $\ldots$ Demand : Demanded arguments Deterministic : Deterministic operations $\vdots$ \end{curry} More information about the meaning of the various analyses can be obtained by adding the short name of the analysis: \begin{curry} > cass -h Deterministic $\ldots$ \end{curry} For instance, consider the following Curry module \code{Rev.curry}: \begin{curry} append :: [a] -> [a] -> [a] append [] ys = ys append (x:xs) ys = x : append xs ys rev :: [a] -> [a] rev [] = [] rev (x:xs) = append (rev xs) [x] main :: Int -> Int -> [Int] main x y = rev [x .. y] \end{curry} % CASS supports three different usage modes to analyze this program. \subsubsection{Batch Mode} In the batch mode, CASS is started as a separate application via the shell command \code{cass}, where the analysis name and the name of the module to be analyzed must be provided:\footnote{More output is generated when the parameter \code{debugLevel} is changed in the configuration file \code{.curryanalysisrc} which is installed in the user's home directory when CASS is started for the first time.} \begin{curry} > cass Demand Rev append : demanded arguments: 1 main : demanded arguments: 1,2 rev : demanded arguments: 1 \end{curry} The \code{Demand} analysis shows the list of argument positions (e.g., 1 for the first argument) which are demanded in order to reduce an application of the operation to some constructor-rooted value. Here we can see that both arguments of \code{main} are demanded whereas only the first argument of \code{append} is demanded. This information could be used in a Curry compiler to produce more efficient target code. The batch mode is useful to test a new analysis and get the information in human-readable form so that one can experiment with different abstractions or analysis methods. \subsubsection{API Mode} The API mode is intended to use analysis information in some application implemented in Curry. Since CASS is implemented in Curry, one can import the modules of the CASS implementation and use the CASS interface operations to start an analysis and use the computed results. For instance, CASS provides an operation (defined in the module \code{AnalysisServer}) \begin{curry} analyzeGeneric :: Analysis a -> String -> IO (Either (ProgInfo a) String) \end{curry} to apply an analysis (first argument) to some module (whose name is given in the second argument). The result is either the analysis information computed for this module or an error message in case of some execution error. The modules of the CASS implementation are stored in the directory \code{\cyshome/currytools/CASS} and the modules implementing the various program analyses are stored in \code{\cyshome/currytools/analysis}. Hence, one should add these directories to the Curry load path when using CASS in API mode. The CASS module \code{GenericProgInfo} contains operations to access the analysis information computed by CASS. For instance, the operation \begin{curry} lookupProgInfo:: QName -> ProgInfo a -> Maybe a \end{curry} returns the information about a given qualified name in the analysis information, if it exists. As a simple example, consider the demand analysis which is implemented in the module \code{Demandedness} by the following operation: \begin{curry} demandAnalysis :: Analysis DemandedArgs \end{curry} \code{DemendedArgs} is just a type synonym for \code{[Int]}. We can use this analysis in the following simple program: \begin{currynomath} import AnalysisServer (analyzeGeneric) import GenericProgInfo (lookupProgInfo) import Demandedness (demandAnalysis) demandedArgumentsOf :: String -> String -> IO [Int] demandedArgumentsOf modname fname = do deminfo <- analyzeGeneric demandAnalysis modname >>= return . either id error return $ maybe [] id (lookupProgInfo (modname,fname) deminfo) \end{currynomath} %$ Of course, in a realistic program, the program analysis is performed only once and the computed information \code{deminfo} is passed around to access it several times. Nevertheless, we can use this simple program to compute the demanded arguments of \code{Rev.main}: \begin{curry} $\ldots$> demandedArgumentsOf "Rev" "main" [1,2] \end{curry} \subsubsection{Server Mode} The server mode of CASS can be used in an application implemented in some language that does not have a direct interface to Curry. In this case, one can connect to CASS via some socket using a simple communication protocol that is specified in the file \code{\cyshome/currytools/CASS/Protocol.txt} and sketched below. To start CASS in the server mode, one has to execute the command \begin{curry} > cass --server [ -p ] \end{curry} where an optional port number for the communication can be provided. Otherwise, a free port number is chosen and shown. In the server mode, CASS understands the following commands: \begin{curry} GetAnalysis SetCurryPath ::... AnalyzeModule AnalyzeInterface AnalyzeFunction AnalyzeDataConstructor AnalyzeTypeConstructor StopServer \end{curry} The output type can be \code{Text}, \code{CurryTerm}, or \code{XML}. The answer to each request can have two formats: \begin{curry} error \end{curry} if an execution error occured, or \begin{curry} ok \end{curry} where \code{} is the number of lines of the result text. For instance, the answer to the command \code{GetAnalysis} is a list of all available analyses. The list has the form \begin{curry} \end{curry} For instance, a communication could be: \begin{curry} > GetAnalysis < ok 5 < Deterministic CurryTerm < Deterministic Text < Deterministic XML < HigherOrder CurryTerm < DependsOn CurryTerm \end{curry} The command \code{SetCurryPath} instructs CASS to use the given directories to search for modules to be analyzed. This is necessary since the CASS server might be started in a different location than its client. Complete modules are analyzed by \code{AnalyzeModule}, whereas \code{AnalyzeInterface} returns only the analysis information of exported entities. Furthermore, the analysis results of individual functions, data or type constructors are returned with the remaining analysis commands. Finally, \code{StopServer} terminates the CASS server. For instance, if we start CASS by \begin{curry} > cass --server -p 12345 \end{curry} we can communicate with CASS as follows (user inputs are prefixed by \ccode{>}); \begin{curry} > telnet localhost 12345 Connected to localhost. > GetAnalysis ok 57 Overlapping XML Overlapping CurryTerm Overlapping Text Deterministic XML ... > AnalyzeModule Demand Text Rev ok 3 append : demanded arguments: 1 main : demanded arguments: 1,2 rev : demanded arguments: 1 > AnalyzeModule Demand CurryTerm Rev ok 1 [(("Rev","append"),"demanded arguments: 1"),(("Rev","main"),"demanded arguments: 1,2"),(("Rev","rev"),"demanded arguments: 1")] > AnalyzeModule Demand XML Rev ok 19 Rev append demanded arguments: 1 Rev main demanded arguments: 1,2 Rev rev demanded arguments: 1 > StopServer ok 0 Connection closed by foreign host. \end{curry} \subsection{Implementing Program Analyses} Each program analysis accessible by CASS must be registered in the CASS module \code{Registry}. The registered analysis must contain an operation of type \begin{curry} Analysis a \end{curry} where \code{a} denotes the type of analysis results. For instance, the \code{Overlapping} analysis is implemented as a function \begin{curry} overlapAnalysis :: Analysis Bool \end{curry} where the Boolean analysis result indicates whether a Curry operation is defined by overlapping rules. In order to add a new analysis to CASS, one has to implement a corresponding analysis operation, registering it in the module \code{Registry} (in the constant \code{registeredAnalysis}) and compile the modified CASS implementation. An analysis is implemented as a mapping from Curry programs represented in FlatCurry into the analysis result. Hence, to implement the \code{Overlapping} analysis, we define the following operation on function declarations in FlatCurry format: \begin{curry} import FlatCurry.Types $\ldots$ isOverlappingFunction :: FuncDecl -> Bool isOverlappingFunction (Func _ _ _ _ (Rule _ e)) = orInExpr e isOverlappingFunction (Func f _ _ _ (External _)) = f==("Prelude","?") -- Check an expression for occurrences of Or: orInExpr :: Expr -> Bool orInExpr (Var _) = False orInExpr (Lit _) = False orInExpr (Comb _ f es) = f==(pre "?") || any orInExpr es orInExpr (Free _ e) = orInExpr e orInExpr (Let bs e) = any orInExpr (map snd bs) || orInExpr e orInExpr (Or _ _) = True orInExpr (Case _ e bs) = orInExpr e || any orInBranch bs where orInBranch (Branch _ be) = orInExpr be orInExpr (Typed e _) = orInExpr e \end{curry} % In order to enable the inclusion of different analyses in CASS, CASS offers several constructor operations for the abstract type \ccode{Analysis a} (defined in the CASS module \code{Analysis}). Each analysis has a name provided as a first argument to these constructors. The name is used to store the analysis information persistently and to pass specific analysis tasks to analysis workers. For instance, a simple function analysis which depends only on a given function definition can be defined by the analysis constructor \begin{curry} simpleFuncAnalysis :: String -> (FuncDecl -> a) -> Analysis a \end{curry} The arguments are the analysis name and the actual analysis function. Hence, the ``overlapping rules'' analysis can be specified as \begin{curry} import Analysis $\ldots$ overlapAnalysis :: Analysis Bool overlapAnalysis = simpleFuncAnalysis "Overlapping" isOverlappingFunction \end{curry} Another analysis constructor supports the definition of a function analysis with dependencies (which is implemented via a fixpoint computation): \begin{curry} dependencyFuncAnalysis :: String -> a -> (FuncDecl -> [(QName,a)] -> a) -> Analysis a \end{curry} Here, the second argument specifies the start value of the fixpoint analysis, i.e., the bottom element of the abstract domain. For instance, a determinism analysis could be based on an abstract domain described by the data type \begin{curry} data Deterministic = NDet | Det \end{curry} Here, \code{Det} is interpreted as ``the operation always evaluates in a deterministic manner on ground constructor terms.'' However, \code{NDet} is interpreted as ``the operation \emph{might} evaluate in different ways for given ground constructor terms.'' The apparent imprecision is due to the approximation of the analysis. For instance, if the function \code{f} is defined by overlapping rules and the function \code{g} \emph{might} call \code{f}, then \code{g} is judged as non-deterministic (since it is generally undecidable whether \code{f} is actually called by \code{g} in some run of the program). The determinism analysis requires to examine the current function as well as all directly or indirectly called functions for overlapping rules. Due to recursive function definitions, this analysis cannot be done in one shot---it requires a fixpoint computation. CASS provides such fixpoint computations and requires only the implementation of an operation of type \begin{curry} FuncDecl -> [(QName,a)] -> a \end{curry} where \ccode{a} denotes the type of abstract values. The second argument of type \code{[(QName,a)]} represents the currently known analysis values for the functions \emph{directly} used in this function declaration. In our example, the determinism analysis can be implemented by the following operation: \begin{curry} detFunc :: FuncDecl -> [(QName,Deterministic)] -> Deterministic detFunc (Func f _ _ _ (Rule _ e)) calledFuncs = if orInExpr e || freeVarInExpr e || any (==NDet) (map snd calledFuncs) then NDet else Det \end{curry} Thus, it computes the abstract value \code{NDet} if the function itself is defined by overlapping rules or contains free variables that might cause non-deterministic guessing (we omit the definition of \code{freeVarInExpr} since it is quite similar to \code{orInExpr}), or if it depends on some non-deterministic function. The complete determinism analysis can be specified as \begin{curry} detAnalysis :: Analysis Deterministic detAnalysis = dependencyFuncAnalysis "Deterministic" Det detFunc \end{curry} This definition is sufficient to execute the analysis with CASS since the analysis system takes care of computing fixpoints, calling the analysis functions with appropriate values, analyzing imported modules, etc. Nevertheless, the analysis must be defined so that the fixpoint computation always terminates. This can be achieved by using an abstract domain with finitely many values and ensuring that the analysis function is monotone w.r.t.\ some ordering on the values. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cpm/000077500000000000000000000000001323431571100253525ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cpm/README.txt000066400000000000000000000003561323431571100270540ustar00rootroot00000000000000This directory contains some documention for the Curry Package Manager: currysystem_manual.tex: A short description to be included in the main manual of the Curry system. manual.tex: The main manual of CPM as a separate document. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cpm/currysystem_manual.tex000066400000000000000000000046331323431571100320500ustar00rootroot00000000000000\section{\texttt{cypm}: The Curry Package Manager} \label{sec-cpm} The Curry package manager (CPM) is a tool to distribute and install Curry libraries and applications and manage version dependencies between these libraries. Since CPM offers a lot of functionality, there is a separate manual available.\footnote{\url{http://curry-language.org/tools/cpm}} Therefore, we describe here only some basic CPM commands. The executable \code{cypm} is located in the \code{bin} directory of \CYS. Hence, if you have this directory in your path, you can start CPM by cloning a copy of the central package index repository: % \begin{curry} > cypm update \end{curry} % Now you can show a short list of all packages in this index by % \begin{curry} > cypm list Name Synopsis Version ---- -------- ------- abstract-curry Libraries to deal with AbstractCurry programs 2.0.0 abstract-haskell Libraries to represent Haskell programs in Curry 2.0.0 addtypes A tool to add missing type signatures in a Curry 2.0.0 program base Base libraries for Curry systems 1.0.0 $\ldots$ \end{curry} % The command % \begin{curry} > cypm info PACKAGE \end{curry} % can be used to show more information about the package with name \code{PACKAGE}. Some packages do not contain only useful libraries but also tools with some binary. In order to install such tools, one can use the command % \begin{curry} > cypm install PACKAGE \end{curry} % This command checks out the package in some internal directory (\code{\$HOME/.cpm/app_packages}) and installs the binary of the tool provided by the package in \code{\$HOME/.cpm/bin}. Hence it is recommended to add this directory to your path. For instance, the most recent version of CPM can be installed by the following commands: % \begin{curry} > cypm update $\ldots$ > cypm install cpm $\ldots$ Package 'cpm-xxx' checked out $\ldots$ $\ldots$ INFO Installing executable 'cypm' into '/home/joe/.cpm/bin' \end{curry} % Now, the binary \code{cypm} of the most recent CPM version can be used if \code{\$HOME/.cpm/bin} is in your path (before \code{\cyshome{}/bin}!). A detailed description how to write your own packages with the use of other packages can be found in the manual of CPM. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/cpm/manual.tex000066400000000000000000001527011323431571100273570ustar00rootroot00000000000000\documentclass[11pt]{article} \usepackage{url} \usepackage{syntax} \usepackage{listings} \usepackage{amsmath} \lstset{aboveskip=1.5ex, belowskip=1.2ex, showstringspaces=false, mathescape=true, flexiblecolumns=false, xleftmargin=2ex, basewidth=0.52em, basicstyle=\small\ttfamily} \lstset{literate={->}{{$\rightarrow{}\!\!\!$}}3 } \renewcommand{\tt}{\usefont{OT1}{cmtt}{m}{n}\selectfont} \newcommand{\codefont}{\small\tt} \newcommand{\code}[1]{\mbox{\codefont #1}} \newcommand{\ccode}[1]{``\code{#1}''} % The layout of this manual is adapted from the KiCS2 manual. %%% ------------------------------------------------------------------ \usepackage[colorlinks,linkcolor=blue]{hyperref} \hypersetup{bookmarksopen=true} \hypersetup{bookmarksopenlevel=0} \hypersetup{pdfstartview=FitH} \usepackage{thumbpdf} %%% ------------------------------------------------------------------ \setlength{\textwidth}{16.5cm} \setlength{\textheight}{23cm} \renewcommand{\baselinestretch}{1.1} \setlength{\topmargin}{-1cm} \setlength{\oddsidemargin}{0cm} \setlength{\evensidemargin}{0cm} \setlength{\marginparwidth}{0.0cm} \setlength{\marginparsep}{0.0cm} \begin{document} \title{CPM User's Manual} \author{Jonas Oberschweiber \qquad Michael Hanus\\[1ex] {\small Institut f\"ur Informatik, CAU Kiel, Germany}\\[1ex] {\small\texttt{packages@curry-language.org}} } \maketitle \tableofcontents \clearpage \section{Introduction} This document describes the Curry package manager (CPM), a tool to distribute and install Curry libraries and manage version dependencies between these libraries. A distinguishing feature of CPM is its ability to perform \emph{semantic versioning checking}, i.e., CPM provides a command to check the semantics of a new package version against an older version of the same package. \bigskip\bigskip \section{Installing the Curry Package Manager} CPM is part of recent distributions of the Curry systems PAKCS\footnote{\url{https://www.informatik.uni-kiel.de/~pakcs/}} (since version 1.15.0) and KiCS2\footnote{\url{https://www-ps.informatik.uni-kiel.de/kics2/}} (since version 0.6.0). If you use an older release of PAKCS or KiCS2 or you want to install the most recent CPM version from the source repository, this section contains some hints about the installation of CPM. To install and use CPM, a working installation of either PAKCS in version 1.14.1 or greater, or KiCS2 in version 0.5.1 or greater is required. Additionally, CPM requires \emph{Git}\footnote{\url{http://www.git-scm.com}}, \emph{curl}\footnote{\url{https://curl.haxx.se}} and \emph{unzip} to be available on the \code{PATH} during installation and operation. You also need to ensure that your Haskell installations reads files using UTF-8 encoding by default. Haskell uses the system locale charmap for its default encoding. You can check the current value using \code{System.IO.localeEncoding} inside a \code{ghci} session. To install CPM from the sources, enter the root directory of the CPM source distribution. The main executable \code{curry} of your Curry system must be in your path (otherwise, you can also specify the root location of your Curry system by modifying the definition of \code{CURRYROOT} in the \code{Makefile}). Then type \code{make} to compile CPM which generates a binary called \code{cypm} in the \code{bin} subdirectory. Put this binary somewhere on your path. \clearpage \section{Starting the Curry Package Manager} If the binary \code{cypm} is on your path, execute the command % \begin{lstlisting} > cypm update \end{lstlisting} % to pull down a copy of the central package index to your system. You can use the same command to update later your copy of the central package index to the newest version. Afterwards, you can show a short list of all packages in this index by % \begin{lstlisting} > cypm list \end{lstlisting} % The command % \begin{lstlisting} > cypm info PACKAGE \end{lstlisting} % can be used to show more information about a package. There is also a command % \begin{lstlisting} > cypm search QUERY \end{lstlisting} % to search inside the central package index. Section~\ref{sec:cmd-reference} contains a complete list of all available CPM commands. \clearpage \section{Package Basics} \label{sec:package-basics} Essentially, a Curry package is nothing more than a directory structure containing a \code{package.json} file and a \code{src} directory at its root. The \code{package.json} file is a JSON file containing package metadata, the \code{src} directory contains the Curry modules that make up the package. We assume familiarity with the JSON file format. A good introduction can be found at \url{http://json.org}. The package specification file must contain a top-level JSON object with at least the keys \code{name}, \code{author}, \code{version}, \code{synopsis} and \code{dependencies}. More possible fields are described in Section~\ref{sec:reference}. A package's name may contain any ASCII alphanumeric character as well as dashes (\code{-}) and underscores (\code{_}). It must start with an alphanumeric character. The author field is a free-form field, but the suggested format is either a name (\code{John Doe}), or a name followed by an email address in angle brackets (\code{John Doe }). Separate multiple authors with commas. Versions must be specified in the format laid out in the semantic versioning standard:\footnote{\url{http://www.semver.org}} each version number consists of numeric major, minor and patch versions separated by dot characters as well as an optional pre-release specifier consisting of ASCII alphanumerics and hyphens, e.g. \code{1.2.3} and \code{1.2.3-beta5}. Please note that build metadata as specified in the standard is not supported. The synopsis should be a short summary of what the package does. Use the \code{description} field for longer form explanations. Dependencies are specified as a nested JSON object with package names as keys and dependency constraints as values. A dependency constraint restricts the range of versions of the dependency that a package is compatible to. Constraints consist of elementary comparisons that can be combined into conjunctions, which can then be combined into one large disjunction -- essentially a disjunctive normal form. The supported comparison operators are $<, \leq, >, \geq, =$ and $\sim>$. The first four are interpreted according to the rules for comparing version numbers laid out in the semantic versioning standard. $\sim>$ is called the \emph{semantic versioning arrow}. It requires that the package version be at least as large as its argument, but still within the same minor version, i.e. $\sim> 1.2.3$ would match $1.2.3$, $1.2.9$ and $1.2.55$, but not $1.2.2$ or $1.3.0$. To combine multiple comparisons into a conjunction, separate them by commas, e.g. $\geq 2.0.0, < 3.0.0$ would match all versions with major version $2$. Note that it would not match \textit{2.1.3-beta5} for example, since pre-release versions are only matched if the comparison is explicitly made to a pre-release version, e.g. $= \text{2.1.3-beta5}$ or $\geq \text{2.1.3-beta2}$. Conjunctions can be combined into a disjunction via the $||$ characters, e.g. $\geq 2.0.0, < 3.0.0 || \geq 4.0.0$ would match any version within major version $2$ and from major version $4$ onwards, but no version within major version $3$. \clearpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Using Packages} Curry packages can be used as dependencies of other Curry packages or to install applications implemented with a package. In the following we describe both possibilities of using packages. \subsection{Creating New Packages} Creating a new Curry package is easy. To use a Curry package in your project, create a \code{package.json} file in the root, fill it with the minimum amount of information discussed in the previous session, and move your Curry code to a \code{src} directory inside your project's directory. Alternatively, if you are starting a new project, use the \code{cypm new } command, which creates a new project directory with a \code{package.json} file for you.\footnote{The \code{new} command also creates some other useful template files. Look into the output of this command.} Then declare the dependencies inside the new \code{package.json} file, e.g.: \begin{lstlisting} { ..., "dependencies": { "base": ">= 1.0.0, < 2.0.0", "json": "~> 1.1.0" } } \end{lstlisting} % Then run \code{cypm install} to install all dependencies of the current package and start your interactive Curry environment with \code{cypm curry}. You will be able to load the JSON package's modules in your Curry session. \subsection{Installing and Updating Dependencies} To install the current package's dependencies, run \code{cypm install}. This will install the most recent version of all dependencies that are compatible to the package's dependency constraints. Note that a subsequent run of \code{cypm install} will always prefer the versions it installed on a previous run, if they are still compatible to the package's dependencies. If you want to explicitly install the newest compatible version regardless of what was installed on previous runs of \code{cypm install}, you can use the \code{cypm upgrade} command to upgrade all dependencies to their newest compatible versions, or \code{cypm upgrade } to update a specific package and all its transitive dependencies to the newest compatible version. If the package also contains an implementation of a complete executable, e.g., some useful tool, which can be specifed in the \code{package.json} file (see Section~\ref{sec:reference}), then the command \code{cypm install} also compiles the application and installs the executable in the \code{bin} install directory of CPM (see Section~\ref{sec:config} for details). The installation of executables can be suppressed by the \code{cypm install} option \code{-n} or \code{--noexec}. \subsection{Checking out Packages} \label{sec:checkout} In order to use, experiment with or modify an existing package, one can use the command \begin{lstlisting} cypm checkout \end{lstlisting} to install a local copy of a package. This is also useful to install some tool distributed as a package. For instance, to install \code{curry-check}, a property-testing tool for Curry, one can check out the most recent version and install the tool: % \begin{lstlisting} > cypm checkout currycheck $\ldots$ Package 'currycheck-1.0.1' checked out into directory 'currycheck'. > cd currycheck > cypm install $\ldots$ INFO Installing executable 'curry-check into '/home/joe/.cpm/bin' \end{lstlisting} % Now, the tool \code{curry-check} is ready to use if \code{\$HOME/.cpm/bin} is in your path (see Section~\ref{sec:config} for details about changing the location of this default path). \subsection{Installing Applications of Packages} \label{sec:installapp} Some packages do not contain only useful libraries but also application programs or tools. In order to install the executables of such applications without explicitly checking out the package in some local directory, one can use the command \begin{lstlisting} cypm install \end{lstlisting} This command checks out the package in some internal directory (default: \code{\$HOME/.cpm/app_packages}, see Section~\ref{sec:config}) and installs the binary of the application provided by the package in \code{\$HOME/.cpm/bin} (see also Section~\ref{sec:checkout}). For instance, the most recent version of the web framework Spicey can be installed by the following command: % \begin{lstlisting} > cypm install spicey $\ldots$ Package 'spicey-xxx' checked out $\ldots$ $\ldots$ INFO Installing executable 'spiceup' into '/home/joe/.cpm/bin' \end{lstlisting} % Now, the binary \code{spiceup} of Spicey can be used if \code{\$HOME/.cpm/bin} is in your path (see Section~\ref{sec:config} for details about changing the location of this default path). \subsection{Executing the Curry System in a Package} To use the dependencies of a package, the Curry system needs to be started via CPM so that it will know where to search for the modules provided. You can use the command \ccode{cypm curry} to start the Curry system (which is either the compiler used to install CPM or specified with the configuration option \code{CURRY_BIN}, see Section~\ref{sec:config}). Any parameters given to \ccode{cypm curry} will be passed along verbatim to the Curry system. For example, the following will start the Curry system, print the result of evaluating the expression \code{39+3} and then quit. \begin{lstlisting} > cypm curry :eval "39+3" :quit \end{lstlisting} % To execute other Curry commands, such as \ccode{curry check}, with the package's dependencies available, you can use the \ccode{cypm exec} command. This command will set the \code{CURRYPATH} environment variable and then execute the command given after \ccode{exec}. \subsection{Using Packages Outside a Package} \label{sec:meta-package} In principle, packages can be used only inside another package by declaring dependencies in the package specification file \code{package.json}. If you invoke \code{cypm} in a directory which contains no package specification file, CPM searches for such a file from the current directory to the parent directories (up to the root of the file system). Thus, if you are outside a package, such a file is not available. In order to support the use other packages outside package, CPM provides a meta-package which is usually stored in your home directory at \code{\char126/.cpm/$Curry system$-homepackage}.\footnote{% Use \code{cypm config} and look at \code{HOME_PACKAGE_PATH} to see the current location of this meta-package.} This meta-package is used when your are not inside another package. Hence, if you write some Curry program which is not a package but you want to use some package \code{P}, you have to add a dependency to \code{P} to this meta-package. CPM does this automatically for you with the CPM command \code{cypm add --dependency} (short: \code{cypm add -d}). For instance, to use the libraries of the JSON package in your application, one can use the following commands: % \begin{lstlisting} > cypm add -d json # add 'json' dependency to meta-package > cypm install # download and install all dependencies > cypm curry # start Curry system with JSON libraries in load path ... Prelude> :load JSON.Data JSON.Data> \end{lstlisting} % \subsection{Replacing Dependencies with Local Versions} \label{sec:cpm-link} During development of your applications, situations may arise in which you want to temporarily replace one of your package's dependencies with a local copy, without having to publish a copy of that dependency somewhere or increasing the dependency's version number. One such situation is a bug in a dependency not controlled by you: if your own package depends on package $A$ and $A$'s current version is $1.0.3$ and you encounter a bug in this version, then you might be able to investigate, find and fix the bug. Since you are not the the author of $A$, however, you cannot release a new version with the bug fixed. So you send off your patch to $A$'s maintainer and wait for $1.0.4$ to be released. In the meantime, you want to use your local, fixed copy of version $1.0.3$ from your package. The \code{cypm link} command allows you to replace a dependency with your own local copy. \code{cypm link} takes a directory containing a copy of one of the current package's dependencies as its argument. It creates a symbolic link from that directory the the current package's local package cache. If you had a copy of \code{A-1.0.3} in the \code{\char126/src/A-1.0.3} directory, you could use \code{cypm link \char126/src/A-1.0.3} to ensure that any time \code{A-1.0.3} is used from the current package, your local copy is used instead of the one from the global package cache. To remove any links, use \code{cypm upgrade} without any arguments, which will clear the local package cache. See Section~\ref{sec:internals} for more information on the global and local package caches. \clearpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Authoring Packages} If you want to create packages for other people to use, you should consider filling out more metadata fields than the bare minimum. See Section~\ref{sec:reference} for a reference of all available fields. \subsection{Semantic Versioning} \label{sec:semantic-versioning} The versions of published packages should adhere to the semantic versioning standard, which lays out rules for which components of a version number must change if the public API of a package changes. Recall that a semantic versioning version number consists of a major, minor and patch version as well as an optional pre-release specifier. In short, semantic versioning defines the following rules: \begin{itemize} \item If the type of any public API is changed or removed or the expected behavior of a public API is changed, you must increase the major version number and reset the minor and patch version numbers to $0$. \item If a public API is added, you must increase at least the minor version number and reset the patch version number to $0$. \item If only bug fixes are introduced, i.e. nothing is added or removed and behavior is only changed to removed deviations from the expected behavior, then it is sufficient to increase the patch version number. \item Once a version is published, it must not be changed. \item For pre-releases, sticking to these rules is encouraged but not required. \item If the major version number is $0$, the package is still considered under development and thus unstable. In this case, the rules do not apply, although following them as much as possible as still encouraged. Release $1.0.0$ is considered to be the first stable version. \end{itemize} % To aid you in following these rules, CPM provides the \code{diff} command. \code{diff} can be used to compare the types and behavior of a package's public API between two versions of that package. If it finds any differences, it checks whether they are acceptable under semantic versioning for the difference in version numbers between the two package versions. To use \code{diff}, you need to be in the directory of one of the versions, i.e., your copy for development, and have the other version installed in CPM's global package cache (see the \code{cypm install} command). For example, if you are developing version $1.3.0$ of the JSON package and want to make sure you have not introduced any breaking changes when compared to the previous version $1.2.6$, you can use the \code{cypm diff 1.2.6} command while in the directory of version $1.3.0$. CPM will then check the types of all public functions and data types in all exported modules of both versions (see the \code{exportedModules} field of the package specification) and report any differences and whether they violate semantic versioning. It will also generate a CurryCheck program that will compare the behavior of all exported functions in all exported modules whose types have not changed and execute that program. Note that not all functions can be compared via CurryCheck. In particular, functions taking other functions as arguments (there are a few other minor restrictions) can not be checked so that CPM automatically excludes them from checking. Note that the results of non-terminating operations, like \code{Prelude.repeat}, cannot be compared in a finite amount of time. To avoid the execution of possibly non-terminating check programs, CPM compares the behavior of operations only if it can prove the termination or productivity\footnote{% An operation is productive if it always produces outermost constructors, i.e., it cannot run forever without producing constructors.} of these operations. Since CPM uses simple criteria to approximate these properties, there might be operations that are terminating or productive but CPM cannot show it. In these cases you can use the compiler pragmas \verb|{-# TERMINATE -#}| or \verb|{-# PRODUCTIVE -#}| to annotate such functions. Then CPM will trust these annotations and treat the annotated operations as terminating or productive, respectively. For instance, CPM will check the following operation although it cannot show its termination: \begin{lstlisting} {-# TERMINATE -#} mcCarthy :: Int -> Int mcCarthy n | n<=100 = mcCarthy (mcCarthy (n+11)) | n>100 = n-10 \end{lstlisting} % As another example, consider the following operation defining an infinite list: \begin{lstlisting} ones :: [Int] ones = 1 : ones \end{lstlisting} % Although this operation is not terminating, it is productive since with every step a new constructor is produced. CPM compares such operations by comparing their results up to some depth. On the other hand, the following operation is not classified as productive by CPM (note that it would not be productive if the filter condition is changed to \code{(>1)}): \begin{lstlisting} {-# PRODUCTIVE -#} anotherOnes :: [Int] anotherOnes = filter (>0) ones \end{lstlisting} % Due to the pragma, CPM will compare this operation as other productive operations. There might be situations when operations should not be compared, e.g., if the previous version of the operation was buggy. In this case, one can mark those functions with the compiler pragma \verb|{-# NOCOMPARE -#}| so that CPM will not generate tests for them. \subsection{Adding Packages to the Central Package Index} \label{sec:adding-a-package} When you have your package ready and want to use it in other packages, it must be added to the central package index so that CPM can find it when searching for packages. For this purpose, you can use the \ccode{cypm add} command: % \begin{lstlisting} > cypm add --package mypackage \end{lstlisting} % In this case, \code{mypackage} is the name of the directory containing you package. In particular, the JSON file \ccode{mypackage/package.json} must contain the metadata of the package (see also Section~\ref{sec:reference}). This command copies your package into your local copy of the central package index so that it can be used in other packages. If you want to replace this copy by an improved version of the same package, you have to provide the option \code{-f} or \code{--force}. Note that this command makes your package only available on your local system. If you want to publish your package so that it can be used by other CPM users, follow the instruction described next. \subsection{Publishing a Package} \label{sec:publishing-a-package} There are three things that need to be done to publish a package: make the package accessible somewhere, add the location to the package specification, and add the package specification to the central package index. CPM supports ZIP files accessible over HTTP as well as Git repositories as package sources. You are free to choose one of those, but a publicly accessible Git repository is preferred. To add the location to the package specification, use the \code{source} key. For a HTTP source, use: % \begin{lstlisting} { ..., "source": { "http": "http://example.com/package-1.0.3.zip" } } \end{lstlisting} % For a Git source, you have to specify both the repository as well as the revision that represents the version: % \begin{lstlisting} { ..., "source": { "git": "git+ssh://git@github.com:john-doe/package.git", "tag": "v1.2.3" } } \end{lstlisting} % There is also a shorthand, \code{\$version}, available to automatically use a tag consisting of the letter \code{v} followed by the current version number, as in the example above. Specifying \code{\$version} as the tag and then tagging each version in the format \code{v1.2.3} is preferred, since it does not require changing the source location in the \code{package.json} file every time a new version is released. If one already has a repository with another tagging scheme, one can also place the string \code{\$version\$} in the tag, which will be automatically replaced by the current version number. Thus, the tag \ccode{\$version} is equivalent to the tag \ccode{v\$version\$}. After you have published the files for your new package version, you have to add the corresponding package specification to the central package index. This can be done with the \ccode{cypm add} command (see Section~\ref{sec:adding-a-package}). If you have access to the Git repository containing the central package index, then you can push the modified version of this Git repository. Otherwise, send your package specification file to \url{packages@curry-language.org} in order to publish it. \clearpage \section{Configuration} \label{sec:config} CPM can be configured via the \code{\$HOME/.cpmrc} configuration file. The following list shows all configuration options and their default values. \begin{description} \item[\fbox{\code{REPOSITORY_PATH}}] The path to the index repository. Default value: \code{\$HOME/.cpm/index}. \item[\fbox{\code{PACKAGE_INSTALL_PATH}}] The path to the global package cache. This is where all downloaded packages are stored. Default value: \code{\$HOME/.cpm/packages} \item[\fbox{\code{BIN_INSTALL_PATH}}] The path to the executables of packages. This is the location where the compiled executables of packages containing full applications are stored. Hence, in order to use such applications, one should have this path in the personal load path (environment variable \code{PATH}). Default value: \code{\$HOME/.cpm/bin} \item[\fbox{\code{APP_PACKAGE_PATH}}] The path to the package cache where packages are checked out if only their binaries are installed (see Section~\ref{sec:installapp}). Default value: \code{\$HOME/.cpm/app_packages}. \item[\fbox{\code{HOME_PACKAGE_PATH}}] The path to the meta-package which is used if you are outside another package (see Section~\ref{sec:meta-package}). Default value: \code{\$HOME/.cpm/$Curry system$-homepackage}. \item[\fbox{\code{CURRY_BIN}}] The name of the executable of the Curry system used to compile and test packages. The default value is the binary of the Curry system which has been used to compile CPM. \item[\fbox{\code{BASE_VERSION}}] The version of the base libraries which is used for package installations. In the default case, the base version is the version of the system libraries used by the Curry compiler. These system libraries are also available as package \ccode{base} so that they can listed as a dependency in the package specification. If the base version of the package is identical to the base version of the Curry compiler used by CPM, the installed copy of the base libraries is ignored.\footnote{Since the system libraries of a Curry compiler are usually pre-compiled, the usage of the system libraries instead of the \code{base} package might result in faster compilation times.} If one uses a different base version, e.g., enforced by a package dependency or by setting this configuration variable, then this version of the base package is used. Thus, one can use a package even if the current compiler has a different version of the base libraries. \end{description} % Note that one write the option names also in lowercase or omit the underscores. For instance, one can also write \code{currybin} instead of \code{CURRY_BIN}. Moreover, one can override the values of these configuration options by the CPM options \code{-d} or \code{--define}. For instance, to install the binary of the package \code{spicey} in the directory \code{\$HOME/bin}, one can execute the command \begin{lstlisting} > cypm --define bin_install_path=$\$$HOME/bin install spicey \end{lstlisting} \clearpage \section{Some CPM Internals} \label{sec:internals} CPM's central package index is a Git repository containing package specification files. A copy of this Git repository is stored on your local system in the \code{\$HOME/.cpm/index} directory, unless you changed the location using the \code{REPOSITORY_PATH} setting. CPM uses the package index when searching for and installing packages and during dependency resolution. This index contains a directory for each package, which contain subdirectories for all versions of that package which in turn contain the package specification files. So the specification for version $1.0.5$ of the \code{json} package would be located in \code{json/1.0.5/package.json}. When a package is installed on the system, it is stored in the \emph{global package cache}. By default, the global package cache is located in \code{\$HOME/.cpm/packages}. When a package \emph{foo}, stored in directory \code{foo}, depends on a package \emph{bar}, a link to \emph{bar's} directory in the global package cache is added to \emph{foo's} local package cache when dependencies are resolved for \emph{foo}. The \emph{local package cache} is stored in \code{foo/.cpm/package_cache}. Whenever dependencies are resolved, package versions already in the local package cache are preferred over those from the central package index or the global package cache. When a module inside a package is compiled, packages are first copied from the local package cache to the \emph{run-time cache}, which is stored in \code{foo/.cpm/packages}. Ultimately, the Curry compiler only sees the package copies in the run-time cache, and never those from the local or global package caches. \clearpage \section{Command Reference} \label{sec:cmd-reference} This section gives a short description of all available CPM commands. In addition to the commands listed below, there are some global options which can be placed in front of the CPM command: \begin{description} \item[\code{-d$\,|\,$--define $option$=$value$}:] This option overrides the configuration options of CPM, see Section~\ref{sec:config}. \item[\code{-v$\,|\,$--verbosity [info|debug]}:] The default value is \code{info}. The value \code{debug} provides more output messages in order to see what CPM is doing. \item[\code{-t$\,|\,$--time}:] This option adds the elapsed time to every info or debug output line. \end{description} % The available commands of CPM are: \begin{description} \item[\fbox{\code{config}}] Shows the current configuration of CPM (see also Section~\ref{sec:config}). The option \code{--all} shows also the names and version of the packages installed in the global package cache. \item[\fbox{\code{info}}] Gives information on the current package, e.g. the package's name, author, synopsis and its dependency specifications. \item[\fbox{\code{info $package$ [--all]}}] Prints information on the newest known version (compatible to the current compiler) of the given package. The option \code{--all} shows more information. \item[\fbox{\code{info $package$ $version$ [--all]}}] Prints basic information on the given package version. The option \code{--all} shows more information. \item[\fbox{\code{list [--versions] [--csv]}}] List the names and synopses of all packages of the central package index. Unless the option \code{--versions} is set, only the newest version of a package (compatible to the current compiler) is shown. The option \code{--versions} shows all versions of the packages. If a package is not compatible to the current compiler, then the package version is shown in brackets (e.g., \ccode{(1.5.4)}). The option \code{--csv} shows the information in CSV format. \item[\fbox{\code{list --category [--csv]}}] List the category names together with the packages belonging to this category (see Section~\ref{sec:reference}) of the central package index. The option \code{--csv} shows the information in CSV format. \item[\fbox{\code{search [--module|--exec] $query$}}] Searches the names, synopses, and exported module names of all packages of the central package index for occurrences of the given search term. If the option \code{--module} is set, then the given name is searched in the list of exported modules. Thus, the package exporting the module \code{JSON.Data} can be found by the command % \begin{lstlisting} > cypm search --module JSON.Data \end{lstlisting} % If the option \code{--exec} is set, then the search is restricted to the name of the executable provided by the package. For instance, the command % \begin{lstlisting} > cypm search --exec show \end{lstlisting} % lists all packages where the name of the executable contains the string \ccode{show}. \item[\fbox{\code{update}}] Updates the local copy of the central package index to the newest available version. This command also cleans the global package cache in order to support the download of fresh package versions. Note that this also removes local copies of packages installed by the command \ccode{add --package}. \item[\fbox{\code{install}}] Installs all dependencies of the current package. Furthermore, if the current package contains an executable application, the application is compiled and the executable is installed (unless the option \code{-n} or \code{--noexec} is set). With the option \code{-x} or \code{--exec}, the executable is installed without installing all dependencies again. This is useful to speed up the re-installation of a previously installed application. \item[\fbox{\code{install $package$ [--$pre$]}}] Installs the application provided by the newest version (compatible to the current compiler) of a package. The binary of the application is installed into the directory \code{\$HOME/.cpm/bin} (this location can be changed via the \code{\$HOME/.cpmrc} configuration file or by the CPM option \code{--define}, see Section~\ref{sec:config}). \code{--$pre$} enables the installation of pre-release versions. \item[\fbox{\code{install $package$ $version$}}] Installs the application provided by a specific version of a package. The binary of the application is installed into the directory \code{\$HOME/.cpm/bin} (this location can be changed via the \code{\$HOME/.cpmrc} configuration file or by the CPM option \code{--define}, see Section~\ref{sec:config}). \item[\fbox{\code{install $package$.zip}}] Installs a package from a ZIP file to the global package cache. The ZIP file must contain at least the package description file \code{package.json} and the directory \code{src} containing the Curry source files. \item[\fbox{\code{uninstall}}] Uninstalls the executable installed for the current package. \item[\fbox{\code{uninstall $package$}}] Uninstalls the executable and the cached copy of a package which has been installed by the \code{install} command. \item[\fbox{\code{uninstall $package$ $version$}}] Uninstalls a specific version of a package from the global package cache. \item[\fbox{\code{uninstall $package$ $version$}}] Uninstalls a specific version of a package from the global package cache. \item[\fbox{\code{checkout $package$ [--$pre$]}}] Checks out the newest version (compatible to the current compiler) of a package into the local directory \code{$package$} in order to test its operations or install a binary of the package. \code{--$pre$} enables the installation of pre-release versions. \item[\fbox{\code{checkout $package$ $version$}}] Checks out a specific version of a package into the local directory \code{$package$} in order to test its operations or install a binary of the package.. \item[\fbox{\code{upgrade}}] Upgrades all dependencies of the current package to the newest compatible version. \item[\fbox{\code{upgrade $package$}}] Upgrades a specific dependency of the current package and all its transitive dependencies to their newest compatible versions. \item[\fbox{\code{deps}}] Does a dependency resolution run for the current package and prints out the results. The result is either a list of all package versions chosen or a description of the conflict encountered during dependency resolution. Using the option \code{--path]}, only the value of \code{CURRYPATH} required to load modules of this package is shown. \item[\fbox{\code{test}}] Tests the current package with CurryCheck. If the package specification contains a definition of a test suite (entry \code{testsuite}, see Section~\ref{sec:reference}), then the modules defined there are tested. If there is no test suite defined, the list of exported modules are tested, if they are explicitly specified (field \code{exportedModules} of the package specification), otherwise all modules in the directory \code{src} (including hierarchical modules stored in its subdirectories) are tested. Using the option \code{--modules}, one can also specify a comma-separated list of module names to be tested. \item[\fbox{\code{doc}}] Generates the documentation of the current package. The documentation consists of the API documentation (in HTML format) and the manual (if provided) in PDF format. The options \code{--programs} and \code{--text} forces to generate only the API documentation and the manual, respectively. Using the option \code{--docdir}, one can specify the target directory where the documentation should be stored. If this option is not provided, \ccode{cdoc} is used as the documentation directory. The actual documentation will be stored in the subdirectory \code{$name$-$version$} of the documentation directory. The API documentation in HTML format is generated with CurryDoc. If the package specification contains a list of exported modules (see Section~\ref{sec:reference}), then these modules are documented. Otherwise, the main module (if the package specification contains the entry \code{executable}, see Section~\ref{sec:reference}) or all modules in the directory \code{src} (including hierarchical modules stored in its subdirectories) are documented. Using the option \code{--modules}, one can also specify a comma-separated list of module names to be documented. In the default case, modules contained in packages used by the current package are not documented. Instead, it is assumed that these packages are already documented\footnote{See \url{http://www.informatik.uni-kiel.de/~curry/cpm/} for the documentation of all packages. This default location can be changed with the option \code{--url}.} so that links to these package documentations are generated. Using the option \code{--full}, one can generate also the documentation of packages used by the current package. This might be reasonable if one uses packages which are only locally installed. The manual is generated only if the package specification contains a field \code{documentation} where the main file of the manual is specified (see Section~\ref{sec:reference} for more details). \item[\fbox{\code{diff [$version$]}}] Compares the API and behavior of the current package to another version of the same package. If the version option is missing, the latest version of the current package found in the repository is used for comparison. If the options \code{--api-only} or \code{--behavior-only} are added, then only the API or the behavior are compared, respectively. Using the option \code{--modules}, one can also specify a comma-separated list of module names to be compared. Without this option, all exported modules are compared. As described in Section~\ref{sec:semantic-versioning}, CPM uses property tests to compare the behavior of different package versions. In order to avoid infinite loops durings these tests, CPM analyzes the termination behavior of the involved operations. Using the operation \code{--unsafe}, CPM omits this program analysis but then you have to ensure that all operations are terminating (or you can annotate them by pragmas, see Section~\ref{sec:semantic-versioning}). \item[\fbox{\code{exec $command$}}] Executes an arbitrary command with the \code{CURRYPATH} environment variable set to the paths of all dependencies of the current package. For example, it can be used to execute \ccode{curry check} or \ccode{curry analyze} with correct dependencies available. \item[\fbox{\code{curry $args$}}] Executes the Curry compiler with the dependencies of the current package available. Any arguments are passed verbatim to the compiler. \item[\fbox{\code{link $source$}}] Can be used to replace a dependency of the current package using a local copy, see Section~\ref{sec:cpm-link} for details. \item[\fbox{\code{add --package $dir$ [--force]}}] Copies the package contained in directory $dir$ into the local copy of the central package index so that it can be used by other packages in the local environment (see Section~\ref{sec:adding-a-package} for details). The option \ccode{--force} allows to overwrite existing copies in the central package index. \item[\fbox{\code{add --dependency $package$ [--force]}}] Adds the package $package$ as a new dependency. This command adds a dependency to the given package either in the package description file (\code{package.json}) of the current package or in the meta-package (see Section~\ref{sec:meta-package}). The option \ccode{--force} allows to overwrite existing dependencies in the package description file. \item[\fbox{\code{clean}}] Cleans the current package from the generated auxiliary files, e.g., intermediate Curry files, installed dependent packages, etc. Note that a binary installed in the CPM \code{bin} directory (by the \code{install} command) will not be removed. Hence, this command can be used to clean an application package after installing the application. \item[\fbox{\code{new $project$}}] Creates a new project package with the given name and some template files. \end{description} \clearpage \section{Package Specification Reference} \label{sec:reference} This section describes all metadata fields available in a CPM package specification. Mandatory fields are marked with a \code{*} character. \begin{description} \item[\fbox{\code{name*}}] The name of the package. Must only contain ASCII letters, digits, hyphens and underscores. Must start with a letter. \item[\fbox{\code{version*}}] The version of the package. Must follow the format for semantic versioning version numbers. \item[\fbox{\code{author*}}] The package's author. This is a free-form field, the suggested format is either a name or a name followed by an email address in angle brackets, e.g., \begin{lstlisting} John Doe \end{lstlisting} Multiple authors should be separated by commas. \item[\fbox{\code{maintainer}}] The current maintainers of the package, if different from the original authors. This field allows the current maintainers to indicate the best person or persons to contact about the package while attributing the original authors. The suggested format is a name followed by an email address in angle brackets, e.g., \begin{lstlisting} John Doe \end{lstlisting} Multiple maintainers should be separated by commas. \item[\fbox{\code{synopsis*}}] A short form summary of the package's purpose. It should be kept as short as possible (ideally, less than 100 characters). \item[\fbox{\code{description}}] A longer form description of what the package does. \item[\fbox{\code{category}}] A list of keywords that characterize the main area where the package can be used, e.g., \code{Data}, \code{Numeric}, \code{GUI}, \code{Web}, etc. \item[\fbox{\code{license}}] The license under which the package is distributed. This is a free-form field. In case of a well-known license such as the GNU General Public License\footnote{\url{https://www.gnu.org/licenses/gpl-3.0.en.html}}, the SPDX license identifier\footnote{\url{https://spdx.org/licenses/}} should be specified. If a custom license is used, this field should be left blank in favor of the license file field. \item[\fbox{\code{licenseFile}}] The name of a file in the root directory of the package containing explanations regarding the license of the package or the full text of the license. The suggested name for this file is \code{LICENSE}. \item[\fbox{\code{copyright}}] Copyright information regarding the package. \item[\fbox{\code{homepage}}] The package's web site. This field should contain a valid URL. \item[\fbox{\code{bugReports}}] A place to report bugs found in the package. The suggested formats are either a valid URL to a bug tracker or an email address. \item[\fbox{\code{repository}}] The location of a SCM repository containing the package's source code. Should be a valid URL to either a repository (e.g. a Git URL), or a website representing the repository. \item[\fbox{\code{dependencies*}}] The package's dependencies. This must be JSON object where the keys are package names and the values are version constraints. See Section~\ref{sec:package-basics}. \item[\fbox{\code{compilerCompatibility}}] The package's compatibility to different Curry compilers. Expects a JSON object where the keys are compiler names and the values are version constraints. Currently, the supported compiler names are \code{pakcs} and \code{kics2}. If this field is missing or contains an empty JSON object, the package is assumed to be compatible to all compilers in all versions. The compiler compatibility of a package is also relevant when some version of a package should be examined or installed (with CPM commands \code{info}, \code{checkout}, \code{install}). If a newest package should be installed, i.e., no specific version number is provided, then only the newest version which is compatible to the current Curry compiler (see also Section~\ref{sec:config} for configuration option \code{CURRY_BIN}) is considered. Similarly, the current package is executed (CPM commands \code{curry} and \code{test}) only if the current Curry compiler is compatible to this package. \item[\fbox{\code{source}}] A JSON object specifying where the version of the package described in the specification can be obtained. See Section~\ref{sec:publishing-a-package} for details. \item[\fbox{\code{sourceDirs}}] A list of directories inside this package where the source code is located. When the package is compiled, these directories are put at the front of the Curry load path. If this field is not specified, \code{src} is used as the single source directory. \item[\fbox{\code{exportedModules}}] A list of modules intended for use by consumers of the package. These are the modules compared by the \code{cypm diff} command (and tested by the \code{cypm test} command if a list of test modules is not provided). Note that modules not in this list are still accessible to consumers of the package. \item[\fbox{\code{configModule}}] A module name into which some information about the package configuration (location of the package directory, name of the executable, see below) is written when the package is installed. This could be useful if the package needs some data files stored in this package during run time. For instance, a possible specification could be as follows: % \begin{lstlisting} { ..., "configModule": "CPM.PackageConfig", ... } \end{lstlisting} % In this case, the package configuration is written into the Curry file \code{src/CPM/PackageConfig.curry}. \item[\fbox{\code{executable}}] A JSON object specifying the name of the executable and the main module if this package contains also an executable application. The name of the executable must be defined (with key \code{name}) whereas the name of the main module (key \code{main}) is optional. If the latter is missing, CPM assumes that the main module is \code{Main}. Furthermore, the executable specification can also contain options for various Curry compilers. The options must be a JSON object consisting of compiler names as keys and an option string for the compiler. For instance, a possible specification could be as follows: % \begin{lstlisting} { ..., "executable": { "name": "cypm", "main": "CPM.Main", "options": { "kics2" : ":set rts -T" } } } \end{lstlisting} % If a package contains an \code{executable} specification, the command \code{cypm install} also compiles the main module and installs the executable in the \code{bin} install directory of CPM (see Section~\ref{sec:config} for details). \item[\fbox{\code{testsuite}}] A JSON object specifying a test suite for this package. This object contains a directory (with key \code{src-dir}) in which the tests are executed. Furthermore, the test suite must also define a list of modules to be tested (with key \code{modules}). For instance, a possible test suite specification could be as follows: % \begin{lstlisting} { ..., "testsuite": { "src-dir": "test", "modules": [ "testDataConversion", "testIO" ] } } \end{lstlisting} % All these modules are tested with CurryCheck by the command \code{cypm test}. If no test suite is defined, all (exported) modules are tested in the directory \code{src}. A test suite can also contain a field \code{options} which defines a string of options passed to the call to CurryCheck. If a test suite contains a specific test script instead modules to be tested with CurryCheck, then one can specify the name of this test script in the field \code{script}. In this case, this script is executed in the test directory (with the possible \code{options} value added). The script should return the exit code \code{0} if the test is successful, otherwise a non-zero exit code. Note that one has to specify either a (non-empty) list of modules or a test script name in a test suite, but not both. One can also specify several test suites for a package. In this case, the \code{testsuite} value is an array of JSON objects as described above. For instance, a test suite specification for tests in the directories \code{test} and \code{examples} could be as follows: % \begin{lstlisting} { ..., "testsuite": [ { "src-dir": "test", "options": "-v", "script": "test.sh" }, { "src-dir": "examples", "options": "-m80", "modules": [ "Nats", "Ints" ] } ] } \end{lstlisting} \item[\fbox{\code{documentation}}] A JSON object specifying the name of the directory which contains the sources of the documentation (e.g., a manual) of the package, the main file of the documentation, and an optional command to generate the documentation. For instance, a possible specification could be as follows: % \begin{lstlisting} { ..., "documentation": { "src-dir": "docs", "main" : "manual.tex", "command": "pfdlatex -output-directory=OUTDIR manual.tex" } ... } \end{lstlisting} % In this case, the directory \code{docs} contains the sources of the manual and \code{manual.tex} is its main file which will be processed with the specified command. Occurrences of the string \code{OUTDIR} in the command string will be replaced by the actual documentation directory (see description of the command \code{cypm doc}). If the command is omitted, the following commands are used (and you have to ensure that these programs are installed): \begin{itemize} \item If the main file has the extension \code{.tex}, e.g., \code{manual.tex}, the command is \begin{lstlisting} pdflatex -output-directory=OUTDIR manual.tex \end{lstlisting} and it will be executed twice. \item If the main file has the extension \code{.md}, e.g., \code{manual.md}, the command is \begin{lstlisting} pandoc manual.md -o OUTDIR/manual.pdf \end{lstlisting} \end{itemize} \end{description} % In order to get a compact overview over all metadata fields, we show an example of a package specification where all fields are used: % \begin{lstlisting} { "name": "PACKAGE_NAME", "version": "0.0.1", "author": "YOUR NAME ", "maintainer": "ANOTHER NAME ", "synopsis": "A ONE-LINE SUMMARY ABOUT THE PACKAGE", "description": "A MORE DETAILED SUMMARY ABOUT THE PACKAGE", "category": [ "Category1", "Category2" ], "license": "BSD-3-Clause", "licenseFile": "LICENSE", "copyright": "COPYRIGHT INFORMATION", "homepage": "THE URL OF THE WEB SITE OF THE PACKAGE", "bugReports": "EMAIL OR BUG TRACKER URL FOR REPORTING BUGS", "repository": "THE (GIT) URL OF THE WEB SITE REPOSITORY", "dependencies": { "PACKAGE1" : ">= 0.0.1, < 1.5.0", "PACKAGE2" : "~> 1.2.3", "PACKAGE3" : ">= 2.1.4, < 3.0.0 || >= 4.0.0" }, "compilerCompatibility": { "pakcs": ">= 1.14.0, < 2.0.0", "kics2": ">= 0.5.0, < 2.0.0" }, "sourceDirs" : [ "src", "include" ], "exportedModules": [ "Module1", "Module2" ], "configModule": "ConfigPackage", "executable": { "name": "NAME_OF_BINARY", "main": "Main", "options": { "kics2" : ":set rts -T", "pakcs" : ":set printdepth 100" } }, "testsuite": [ { "src-dir": "src", "options": "-m80", "modules": [ "Module1", "Module2" ] }, { "src-dir": "examples", "options": "-v", "script" : "test.sh" } ], "documentation": { "src-dir": "docs", "main" : "manual.tex", "command": "pfdlatex -output-directory=OUTDIR manual.tex" }, "source": { "git": "URL OF THE GIT REPOSITORY", "tag": "$\$$version" } } \end{lstlisting} \clearpage \section{Error Recovery} \label{sec:recovery} There might occur situations when your package or repository is in an inconsistent state, e.g., when you manually changed some internal files or such files have been inadvertently changed or deleted, or a package is broken due to an incomplete download. Since CPM checks these files, CPM might exit with an error message that something is wrong. In such cases, it might be a good idea to clean up your package file system. Here are some suggestions how to do this: \begin{description} \item[\code{cypm clean}]~\\ This command cleans the current package from generated auxiliary files (see Section~\ref{sec:cmd-reference}). Then you can re-install the package and packages on which it depends by the command \code{cypm install}. \item[\code{rm -rf \$HOME/.cpm/packages}] ~\\ This cleans all packages which have been previously installed in the global package cache (see Section~\ref{sec:internals}). Such an action might be reasonable in case of some download failure. After clearing the global package cache, all necessary packages are downloaded again when they are needed. \item[\code{rm -rf \$HOME/.cpm/index}] ~\\ This removes the central package index of CPM (see Section~\ref{sec:internals}). You can simply re-install the newest version of this index by the command \code{cypm update}. \end{description} \end{document} % LocalWords: CPM versioning pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/currybrowse/000077500000000000000000000000001323431571100271615ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/currybrowse/README.txt000066400000000000000000000002231323431571100306540ustar00rootroot00000000000000This directory contains some documention for the tool: manual.tex: A short description to be included in the main manual of the Curry system. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/currybrowse/currybrowser.jpg000066400000000000000000004021641323431571100324420ustar00rootroot00000000000000ÿØÿàJFIFcbÿÛC  !"$"$ÿÛCÿÀ´9"ÿÄ ÿÄi  !"1•#2ASÑ6QTUVWu’”³ÒÓ$347BDFafrsv‘¢´ÁÂâ%5q„…¡±²CR¥&bc¤ÔetG‚ƒ£ÃEHd†“áÿÄÿÄJ !1Q¢Sdâ"AaqÑÒ35R‘¡ð2Tbrs’±²Áá#BU£ãñC‚ÿÚ ?Öö?mwµ;àö£W G2#‚Ñ´*ªª£ªª®«Þ»ƒZÉFÍeT$ÔU 1Ý>¼ª®Ûùø-…ݨ»­Ì~ k÷˜9q´Ú˜QQv OnÍI"õíÿå/…>ßOU‰Wz¢*ŠvyýNE3§TÓ}©Ç­MŠ‘Ùì¢)ëU€Â'ý•úônÛõÏìö«¬ñŠòW%ZŒ:"6^ø‹D^ÿ¼¿åêï®_Âù¬Ãšk‹ÄlaUSNËík¯Fí¿Q,þÏgñ)èÝ·ê%ŸÙìþ%\ÞÚÄÕ˜L[¸‘ŒÌ~MÎ RfÓ4]–M»)¦ÜV…ÆÔT×ÌŠ‰¦¿/ö)ö»¬W!Ƨ5⥂Úú¼ìFç'0ÅSèä5ò"¹ÝtÞ›~¿†dó\Qfl·¼âÅ:R‡ônÛõÏìöžÛ~¢YýžÏâVÅðŸþD­¡–D³à…ÇoÅì×'Ö0».]Æ?8œ%UO/tÚ—Õûßí[ñ+¦™Šb›Ì«¦f¨™™Ù5z7mú‰gö{?‰OFí¿Q,þÏgñ+v½†±qÅ.™{&Ü0nz´­DP”±î쉿M4ø+0#l²ö,4ˆŽÛ’o?¤õy”vmßûÚë¯þ•ŒãàÓ¿øpÞ˜¦¹Üó×£vߨ–g³ø”ônÛõÏìö·Í†ÖËÆBÝžJÓä‘ÍÇÝnmlÄ‘6&âMÉßß'ÐõWâÝëUÊäå®Ý“5*hÅ7DB! £ëm‰5EõîDõkÚ“ƒÿ„û ÿÑ>Û~¢YýžÏâSÑ»oÔK?³ÙüJÜ—  ⯒el‘1òm¨jÏ}ƒª)©kÛºz´øRª8-a€ô\Ù–ëL—Yˆ'®,‰´Ñè}ÉU;dÕSàJW‹‡M\Eíÿ…1UUE7yÏÑ»oÔK?³ÙüJz7mú‰gö{?‰^˜â)k—kƉ˜˜³çIä¿*Ð×èE-M4E_WôNå7ƒgž¶¶/íNºÍ6ÌAŠ@¤‡¦ŠEªˆ®«êÕ{h¿•xøUÄlÛ>Ž ªŠéó´O£vߨ–g³ø”ônÛõÏìö½ï XWäÛ!äQdÞâ³ÎvF14EÑUÑWº|}+¡iᧉ[ls˜¸¢É÷V?R¨!*¯¾óyD—ੌ| _ú}f†%ìÑ^Û~¢YýžÏâSÑ»oÔK?³ÙüJÞ—~-²×z"à:[åŒf‘ú¥Kj¢ë»Ëå$_†»÷γAW'd*29Ô¶ºLªèº5o}>)ßðvz}Ž#ÏžÛ~¢YýžÏâSÑ»oÔK?³ÙüJß8¯ \»ØÛ¼Lœpã¼âƒÌ%hªŠªïGTTÕ~‡û5ý[¸S!ìÙüfdöã+l+á æ!Ž©§mSO_Ñø)8ø3ÜE“]~†•üʰø™GÎÁCƒn‰oŽºãl ¢í÷äH)©¤ƒÿ¥WFï‹o¿¢ÛÍy¥çFí¿Q,þÏgñ)èÝ·ê%ŸÙìþ%o\»†.Ylãw‰4æEG9Nó¡9ÀUõ.Óî£ðk\¹g m˜ó²2VŽK‘Ñèñú2BqUUP•>‚ª÷ïÛµeø5ZÞC¦¸½üÞ–…ônÛõÏìöžÛ~¢YýžÏâW ïœ)…f‚®NÈTdr9¨!mt™UÑtj.Þú|:W¸›²xcfr;ÒzUÓ! É"^b"ۼê{ÝàïÚ¢1ð¦"cuí¹:5ÄÚZÑ»oÔK?³ÙüJz7mú‰gö{?‰^„w„¬+òmò(²oqYç; #Žš"èŽ*è«Ý>‡¾•ѵpâß#‰Ür­Ì?!Y18¤{tRDÓjù—·«DíªëÛ¼÷ü_úcCñ-èÝ·ê%ŸÙìþ%=¶ýD³û=ŸÄ­Ášá.ã7Ó¶8ðIDq·DvîýíWEÕᬅ‡‘dcÍßow¶mŸyYŽ«ž' 5ײ*h—¿ï-e8˜QLUæŸCW¥4ðhÿFí¿Q,þÏgñ)èÝ·ê%ŸÙìþ%zsá­¶ÙŸ¿oÈ 4åf2?•eI¹J©½uì›tÓj몯ïT.u܉×í©£l‡b6½»ûšªèºü:÷¬hÆÃįF˜ó^쪦ªi¼ËNú7mú‰gö{?‰OFí¿Q,þÏgñ+Óø›l‚Ùvró†Øí–8ñ‹d¶Øð¹ÛAGu%Ó_WçѬ/ ¹3-Ö&ðË%Á½ë×J“˜ï-IUKrö ¢º'¯]èÖ=ú-W“»Ô±åoyëÑ»oÔK?³ÙüJz7mú‰gö{?‰^cáÄ›¤¸QX“b¶²ùF›Û=¡Ø;öQW>ŠWnÕlµãœ9‡‘†×u¸\¦Mam¶ÑM4õ"ù}¿ûÉS8ÔE­Nû}èŠg‹Î~Û~¢YýžÏâSÑ»oÔK?³ÙüJõK¦'dâÁõq-ÍÚdÛ:‘fh4Ñ‘"h›û'½UOöö©Ž$Y.Ii‚ë¶lM¸o;«RìqÐPËEMŠ_ zû}ýêÆŒ¢ŠêˆŠw¦ª*¦&fw<ûèÝ·ê%ŸÙìþ%=¶ýD³û=ŸÄ­ûxfߎdQàµZîA·7Á}” 9+¡›„‰ÜÕTQk3™c›„ Y¹6x6KõÂP7&<&ѱH”P”>÷«ß¿uOƒ¶SLL^’›íÜóO£vߨ–g³ø”ônÛõÏìö½\˜þ9tË.Ø0c6¸±#CÖ4ÆÚÒH¸‚bs]U5/‡èwõÔÝžÕjÆxm +¶íp¸L&˯gš ¶*I §À¾O_ïþõaM“¶mÃÎÊh˜óþ!ç_Fí¿Q,þÏgñ)èÝ·ê%ŸÙìþ%zÎØâºGnxbÛüG£BT-Ûvkð&îÿòõVˆ–nãÍËnɉ7d¢$« ùƒ²§-Âý—­;éëDú54å8uU¼œ:©‰™—ý¶ýD³û=ŸÄ¢c¶½è‹bµé¹w†Çõiª¯«èöù+~ç˜ì X~7’Aƒ#’XÒÁ†…±7U7è(‰ªèZÿéZÿŸ¯Lÿéºîæù}çbÓw½ø4ÓßwÓöU~TbEíø…UÌÓ6º1ëjŠ/€[TEtðèý•Wºz¾î¿òÖ¿¥[UKµtß§ú:?}=ïÁðÿËáúv“Ø ÑËDØÒh¯ê©æõ/Ÿº¬¿ó'Â^ªþ¨ùgúRùìè«©z‘wúËÖ+ð'mGÕYèÓÁŽœñC&;kÞˆ¶+^›‘7xlVšªú¾o’¿)[TQ|ØŠ¢+§‡G쪽ÓÕð'uÿ–µáGÏצôÝws|¾ó±i»Þüiï»éû*ü¤ötrÑ64š+úªy½Kçî£ë/üÉ𗪚4ð4犱ëbj©`¶®›ôÿGGï§½ø>ù|?B¿©ŽÚ÷¢-Š×¦äMÞÕ¦ª¾¯£Ûä«“µ,ÿAÊ_#½‘ýu/R.ÿYzÅ~í¨ú«“Ÿ¯Lÿéºîæù}çbÓw½ø4ÓßwÓöU:4ð4çŠ1ëjŠ/€[TEtðèý•Wºz¾î¿òÖ¿¥[UKµtß§ú:?}=ïÁðÿËáúv“Ø ÑËDØÒh¯ê©æõ/Ÿº¬¿ó'Â^ªþ¨ùgúRùìè«©z‘wúËÖ+ð'mGÕQ£ONx¡“µïD[¯MÈ›¼6?«MU}_G·É_”Ç­ª(¾lEQÓãöU^éêøºÿËZ¿ð£çëÓ?ún»¹¾_yØ´Ýï~ 4÷Ýôý•~Ò{:9h›MýU<Þ¥ó÷Qõ—þdøKÕMxsÅXõ±5T°[WMú££÷ÓÞüü¾¡_ÔÇm{ÑÅkÓr&ï êÓU_WÑíòUÉÚ– å/‘ÞÈþŠº—©¬½b¿vÔ}UÉáGÏצôÝws|¾ó±i»Þüiï»éû*xsŘõµEÀ-ˆª"ºxt~Ê«Ý=_w_ùk_ÒÇ­‰ª¥‚ÚºoÓý¾ž÷àøåðý » Iìèå¢li4WõTóz—ÏÝGÖ_ù“á/UÔ|³ý)|ŽöGôUÔ½H»ýeëø¶£ê¨Ñ§§ªäð£çëÓ?ún»¹¾_yØ´Ýï~ 4÷Ýôý•N< 9â€LzÚ¢‹àÄU]<:?eU;¯üµ¯écÖÄÕRÁm]7éþŽßO{ð|?òø~…]…¤ötrÑ64š+úªy½Kçî£ë/üÉ𗪿‡j>Yþƒ”¾G{#ú*ê^¤]þ²õŠü ÛQõThÓÀÓž(dÇm{ÑÅkÓr&ï êÓU_WÑíòWå1ëjŠ/€[TEtðèý•Wºz¾î¿òÖ¯ü(ùúôÏþ›®îo—Þv-7{߃M=÷}?e_€´žÀNŽZ&Æ“EUO7©|ýÔ}eÿ™>õSFžœñB=lMU,ÕÓ~Ÿèèýô÷¿Ãÿ/‡èWõ1Û^ôE±Zô܉»Ãcú´ÕWÕô{|•rv£åŸè9Käw²?¢®¥êEßë/X¯ÀµUrxQóõéŸý7]Üß/¼ìZn÷¿š{îú~ʧFžœñ@&=mQEð b*ˆ®ž²ª÷OWÀ×þZ×ô±ëbj©`¶®›ôÿGGï§½ø>ù|?B®ÂÒ{:9h›MýU<Þ¥ó÷Qõ—þdøKÕ_õ,ÿAÊ_#½‘ýu/R.ÿYzÅ~í¨úª4iàiÏ2c¶½è‹bµé¹w†Çõiª¯«èöù+ò˜õµEÀ-ˆª"ºxt~Ê«Ý=_w_ùkWþ|ýzgÿM×w7Ëï;›½ïÁ¦žû¾Ÿ²¯ÀZO`'G-cI¢¿ª§›Ô¾~ê>²ÿÌŸ z©£ONx¡ ¶&ª– jé¿Oôt~ú{߃áÿ—Ãô+ú˜í¯z"Ø­znDÝá±ýZj«êú=¾J¹;QòÏô¥ò;ÙÑWRõ"ïõ—¬WàNÚª¹<(ùúôÏþ›®îo—Þv-7{߃M=÷}?eS£ONx ¶¨¢ø±DWOÙU{§«àNëÿ-kúXõ±5T°[WMú££÷ÓÞüü¾¡Wai=€´M&ŠþªžoRùû¨úËÿ2|%ê¯áÚ– å/‘ÞÈþŠº—©¬½b¿vÔ}U4ð4çŠ1Û^ôE±Zô܉»Ãcú´ÕWÕô{|•ùLzÚ¢‹àÄU]<:?eU;¯üµ«ÿ >~½3ÿ¦ë»›å÷‹MÞ÷àÓO}ßOÙWà-'°£–‰±¤Ñ_ÕSÍê_?uYæO„½Tѧ§õWðíGË?Ðr—ÈïdE]KÔ‹¿Ö^±_;j>ªxsÅ ˜í¯z"Ø­znDÝá±ýZj«êú=¾Jü¦=mQEð b*ˆ®ž²ª÷OWÀ×þZÕÿ…?^™ÿÓuÝÍòûÎŦï{ði§¾ï§ì«ð“Ø ÑËDØÒh¯ê©æõ/Ÿº¬¿ó'Â^ªhÓÀÓž(BÇ­‰ª¥‚ÚºoÓý¾ž÷àøåðý þ¦;kÞˆ¶+^›‘7xlVšªú¾o’®NÔ|³ý)|ŽöGôUÔ½H»ýeëø¶£ê®O >~½3ÿ¦ë»›å÷‹MÞ÷àÓO}ßOÙTèÓÀÓž(Ç­ª(¾lEQÓãöU^éêøºÿËZþ–=lMU,ÕÓ~Ÿèèýô÷¿Ãÿ/‡èUØZO`'G-cI¢¿ª§›Ô¾~ê>²ÿÌŸ z«øv£åŸè9Käw²?¢®¥êEßë/X¯ÀµUF< 9â†Lv×½lV½7"nðØþ­5Uõ}ß%~S¶¨¢ø±DWOÙU{§«àNëÿ-jÿŸ¯Lÿéºîæù}çbÓw½ø4ÓßwÓöUø Iìèå¢li4WõTóz—ÏÝGÖ_ù“á/U4iàiÏ/qÜuedVŠÝ_7íqb·rµ°M‚¼ìÜšm×AUTEUDM}I¦çù˜ÛþÅü"öpÿøj×¼&ޱ¯×V͵[ˆ´2Ü¿«%w×Uì¾´O4MÔ››%ÉÙ°c—;ìÀyÈÖØŽËxDS lÉQtEÓUOöטˢ<"§['›áÂoæcoûð‹ÙÃÿá«'Ţșn‘ž­Á™P#µÊ´2L—RF(ªJÊh¢ž¤_†³<%⟉xä‹íŠ5Æ4f%”B  jbj¨€dšhâ|?Gµ..+¹d—áºØõj.~~f6ÿ±½œ?þŸ3Ø¿„^Îÿ ]Ž,æ-ƒMȱëDK³Öý²eG‘)Yý ¹âÑu4-tÓ׿T@9þ ñváÄÛ•âçm±tX”N\h²¥>‰-ÙHˆN‰4*B€‚a¢îí¢{íÊ’å„áÇfËàܸi€Å™m¶£­=ÐÁ'º4ò¢¡B¨¨­§t¯œ5ôö{ŠèqÅøl¬~U|¢ãàõ¿ŸÂÜiÝ=õ¹Ÿûk¸8ÒÞîk6åÒA3¡¦å^Êá"þ÷d×ÿú¼Ÿ™}.™Ų́ڴ†G'ÆP×]M_ƒÕ§þ»gÑ+ÇÕ»o³òõèq2ÌgF©ŽLdø³3U1½¥¬ø›˜ÕÁõŽr_†ù¢ò¹dæ‰ð**"è©êïëOùVxOïUï¢W«vßfåéè•ãêÝ·Ù‡ùz¯ -À‰ˆ™·ðN&O\Þb.ÕùF ÕþÊí­ésa#†Ûƒ"ˆÛÍn ‚@J‹¢¡ wÒ±p¸YŠ[îv›•²ÎžM¯z2qÅ\m[Qq}nv]u/6©ëîZîOD¯Ví¾Ì?ËÓÑ+ÇÕ»o³òõ3—dÓ:S¿ÔÆ2lx‹B Âzªë|HÍ_¬M\ÞŒ¶Ÿç“F¢ž¤-¾ú²¾‰^>­Û}˜—§¢W«vßfåé^]“×kßbiɱéÝf"Ýuf5²ál~ÊÃð¥Èê„p€[.Ú'nêžQúªÈ.Rk•7}ð¤B]/)íï”·k·÷ýZW?¢W«vßfåéè•ãêÝ·Ù‡ùz®rœ’ffb~öQƒ”ÆïèœÃd®9w[€ÅêZ&ös6zÕ]t_¡\X±Ör²—!²hç1óÚ'­5ýôÕ4ªD¯Ví¾Ì?ËÓÑ+ÇÕ»o³òõYvO7˜½åŒdØñm›˜Ž#<Ýêú2¢ÄŒ¶¶¦‚«ë"Oö¯ýºø”ÆìlÜzßÖ39¤iÀç+~]º"úпz³þ‰^>­Û}˜—§¢W«vßfåê#,É£0öÙ3“ãééì»>îŶÀƒiP I"Ê<¦DHª¾ùS÷×èúë¡~õË(;óLôÏ)¶àíÛHQ]_{¯ª©}¼}[¶û0ÿ/OD¯Ví¾Ì?ËÒœ³%¦oÿÒ¬Ÿ(«{ªy2 ©7(¶F#ݤ³ÊrZ­Û}˜—¬ëËð+µævmcNKOšÜ.üþ9è‰e¹Íos›ye¦Š¾¥×TÓèα¸äÙÖ[ã—V‘uä$xOÿ u^éê]QZ¤ôJñõnÛìÃü½=¼}[¶û0ÿ/Xø^Kz¦Û÷§¼e=˜|†æKqCf ¨èf„jíÁ×Ñtø4%Ñ+©˜I\†àIJ‹Óòc y›õÑIu×DÿÍT~‰^>­Û}˜—§¢W«vßfåêiË2Zm1}…Y>QVû}άL…ˆjÝbéÍæ•µÝ5ÇD_ Úö¬XÜo·ÙØËr Ä–Ûûõó"’¢mÓÿ›èüžôJñõnÛìÃü½s¦zÚ*·û@îMQÜiÿñ«ʲHã÷¦pr‰üCy2 ©7(¶F#ݤ³ÊrZ¸lþÎ?ËTøfK£m´#Áò)«Ï,Tl–Xe‡‘^Ÿ§m‘=¨®©ßEýÿé© ýêØž…^>¸lþÎ?ËSЫÇ× ŸÙÇùjÊŒ·&£òoÿˆ«&Ç«{q¾Ún#À“‹ë:{“!<À÷ôMW÷×è¯Ñ®µ†ïÙŽ˜ì|áuW¨u¹JÑ=ÝtEQtD]4×þµ™ô*ñõÃgöqþZž…^>¸lþÎ?ËU~’hèí·×ígÞr›ßgÝìL?áãi¹G·B(k9Ö‘ZÞ® 4 ª¦å¢×%¢{qì‰f¹Ú›¹Âmîs N“jþÔõ§uíûëT~…^>¸lþÎ?ËSЫÇ× ŸÙÇùjÊrÌšbÓv>xˆNM¸ÎüýÎókjsn6 ÂlQ{m$î‹ëþ•®á]bH+T¶Œ< #Ù+¤Dšªj«¦½Õ¦²þ…^>¸lþÎ?ËSЫÇ× ŸÙÇùj‰ÊòY¶ý‰ïG¡1a˜6ü•ëä»xNyÂ3#Û±Â-w"è½Óºë_¼†T;”¡ŸÒä;Š>.¬’˜nªéêM4Nú³M+4ö5=¹ár[9J6•ähm¦¤€Šˆ¤¾íÙ5TNþ¾úz—OߢW«vßfåë/ É´´¶ßëGƒå¶Ï¹Ó$"rTèöv#Ý¥1Éz`ºK¨è‰ª©²|?V>Ñ=¸öD³\íMÜá6÷9'IµÿjzÓºöýõ¬ç¢W«vßfåéè•ãêÝ·Ù‡ùzÆ2¬’"Û~ôÎS3c·Ûšåk+m©¨r•žû9ù¿_£ýø»\‘b[%²Ôݶ»ÎtQÒqL¿Ú¾¤ìŸÐ•›ôJñõnÛìÃü½=¼}[¶û0ÿ/Sáy,LOwŒ£o¥ˆÊ:g1Û5ŠˆëqW4EÓ˜^´Oöj_ÓPåe>¥ѯ/»Ÿ™dyVûšûÅõ(éïüÛWßÖÏôJñõnÛìÃü½tׇÒÉÕqn¶õUpœQXíU!ÚI·¨Ój§u6©y´ÝÞ³ÃËò|8´L¢¬—©¼Ã\5e-_ œ)¤uóKÔ“E__u!ýšê»‡¶§ïkòvCäxLÅ^K©´%è«ç÷¢»ÓE_|ÚöÚš¦­ú«c‡%†Ý/1UG•¡,WÔµoÞ’ªÈÕIS±÷1ò’’v¯ÉpæB´­x¼1lÛòÄ}4-Ý•$vÚ¾ñS¸zƒjv¬þ3Àã,|‚¬§Ô¯ú5å÷só,"êßbÓ_x¾¥=ÿ›jûúãjÊZ6¾8SHëæ—©&о¿:êCû5ÕwmOÞÖÇ^K'UźÛÕUÂqE`;µT‡i&Þ£MªÔtÚ¥æÓwzü‡%†Ý/1UG•¡,WÔµoÞ’ªÈÕIS±÷1ò’’v§Æxdð<^ pvCäxLÅ^K©´%è«ç÷¢»ÓE_|ÚöÚš¦­ú«˜¬§Ô¯ú5å÷só,"êßbÓ_x¾¥=ÿ›jûú¿.ÈV•¯†"­›~X¦‚E»²¤ŽÛWÞ*wPmNÕȼ>–N«‹u·ª«„âŠÀwj©ÒM½F›U;¨éµKͦîõ?àq“Àñx5ÃVRѵð¹ÂšG_4½I4Uõù×RÙ®«¸{j~ö¿'d>A'„ÌU些B^оz+½4U÷ͯm©ªjߪ¶8pòXmÒóTyZÅ}KVýé*¬T•;/s))'jü—d+J׋ÃVÍ¿,GÓA"ÝÙRGm«ï;‡¨6§jŒð8Éàx¼e>¥ѯ/»Ÿ™dyVûšûÅõ(éïüÛWß×VRѵð¹ÂšG_4½I4Uõù×RÙ®«¸{j~ö¶:ðúY:®-ÖÞª®Š+ݪ¤;I6õmTÕ/6›»×ä8y,6éyŠª<­ b¾¥«~ô•VFªJˆ—¹””“µ>3Àã'âðkƒ² “Âf*ò]M¡/E_?½Þš*ûæ×¶ÔÕ5oÕ\Åe>¥ѯ/»Ÿ™dyVûšûÅõ(éïüÛWßÕùpæB´­x¼1lÛòÄ}4-Ý•$vÚ¾ñS¸zƒjv®Eáô²u\[­½U\'V»UHv’mê4Ú©ÝGMª^m7w©øÏŒž‹Á®²–¯…ÎÒ:ù¥êI¢¯¯ÎºþÍu]ÃÛS÷µù;!ò <&b¯%ÔÚôUóûÑ]颯¾m{mMSVýU±Ã‡’Ãn—˜ª£ÊЖ+êZ·ïIUdj¤©Ø‰{˜ùII;Wä¸s!ZV¼^жmùb>š îÊ’;m_x©Ü=Aµ;T|gÆOÅà€+)õ+þy}ÜüË#Ⱥ·Ø´×Þ/©GOæÚ¾þ¸Ú²–¯…ÎÒ:ù¥êI¢¯¯ÎºþÍu]ÃÛS÷µ±×‡ÒÉÕqn¶õUpœQXíU!ÚI·¨Ój§u6©y´ÝÞ¿!ÃÉa·KÌUQåhKõ-[÷¤ª²5RTìD½Ì|¤¤©ñž<ƒ\ùž1W’êm z*ùýè®ôÑWß6½¶¦©«~ªæ+)õ+þy}ÜüË#Ⱥ·Ø´×Þ/©GOæÚ¾þ¯Ë‡2¥kÅራfß–#é ‘nì©#¶Õ÷ŠÃÔSµr/¥“ªâÝmêªá8¢°ÚªC´“oQ¦ÕNê:mRói»½OÆxdð<^ pÕ”´m|.p¦‘×Í/RM}~uÔ‡ökªîÚŸ½¯ÉÙIá3y.¦Ð—¢¯ŸÞŠïM}ókÛjjš·ê­Ž<–t¼ÅUV„±_RÕ¿zJ«#U%NÄKÜÇÊJIÚ¿%Ù ÒµâðÄU³oËôÐH·vT‘ÛjûÅNáê ©Ú£ã<2x/YO©_ôkËîçæYEվŦ¾ñ}J:{ÿ6Õ÷õÆÕ”´m|.p¦‘×Í/RM}~uÔ‡ökªîÚŸ½­Ž¼>–N«‹u·ª«„âŠÀwj©ÒM½F›U;¨éµKͦîõùK º^bª+BX¯©jß½%U‘ª’§b%îcå%$íOŒð8Éàx¼àì‡È$𙊼—ShKÑWÏïEw¦Š¾ùµíµ5M[õW1YO©_ôkËîçæYEվŦ¾ñ}J:{ÿ6Õ÷õ~\9­+^/ E[6ü±M‹weI¶¯¼Tî Ú«‘x},WëoUW Å€îÕR¤›z6ªwQÓj—›MÝê~3Àã'âðk†¬¥£kás…4޾iz’h«ëó®¤?³]WpöÔýí~NÈ|‚O ˜«Éu6„½|þôWzh«ï›^ÛSTÕ¿Ulpáä°Û¥æ*¨ò´%Šú–­ûÒUY©*v"^æ>RRNÕù.ÈV•¯†"­›~X¦‚E»²¤ŽÛWÞ*wPmNÕàq“Àñx Ê}Jÿ£^_w?2Èò.­ö-5÷‹êQÓßù¶¯¿®6¬¥£kás…4޾iz’h«ëó®¤?³]WpöÔýíluáô²u\[­½U\'V»UHv’mê4Ú©ÝGMª^m7w¯ÈpòXmÒóTyZÅ}KVýé*¬T•;/s))'j|gÆOÅà×d>A'„ÌU些B^оz+½4U÷ͯm©ªjߪ¹ŠÊ}Jÿ£^_w?2Èò.­ö-5÷‹êQÓßù¶¯¿«òáÌ…iZñxb*Ù·åˆúh$[»*Híµ}â§põÔí\‹Ãéd긷[zª¸N(¬vªí$ÛÔiµSºŽ›T¼ÚnïSñž<ƒ\5e-_ œ)¤uóKÔ“E__u!ýšê»‡¶§ïkòvCäxLÅ^K©´%è«ç÷¢»ÓE_|ÚöÚš¦­ú«c‡%†Ý/1UG•¡,WÔµoÞ’ªÈÕIS±÷1ò’’v¯ÉpæB´­x¼1lÛòÄ}4-Ý•$vÚ¾ñS¸zƒjv¨øÏŒž‹ÁVSêWýòû¹ù–G‘uo±i¯¼_RŽžÿ͵}ýqµe-_ œ)¤uóKÔ“E__u!ýšê»‡¶§ïkc¯¥“ªâÝmêªá8¢°ÚªC´“oQ¦ÕNê:mRói»½~C‡’Ãn—˜ª£ÊЖ+êZ·ïIUdj¤©Ø‰{˜ùII;Sã<2x/¸;!ò <&b¯%ÔÚôUóûÑ]颯¾m{mMSVýUÌVSêWýòû¹ù–G‘uo±i¯¼_RŽžÿ͵}ý_—d+J׋ÃVÍ¿,GÓA"ÝÙRGm«ï;‡¨6§jä^K'UźÛÕUÂqE`;µT‡i&Þ£MªÔtÚ¥æÓwzŸŒð8Éàx¼á«)hÚø\áM#¯š^¤š*úüë©ì×UÜ=µ?{_“² “Âf*ò]M¡/E_?½Þš*ûæ×¶ÔÕ5oÕ[8y,6éyŠª<­ b¾¥«~ô•VFªJˆ—¹””“µ~K‡2¥kÅራfß–#é ‘nì©#¶Õ÷ŠÃÔSµGÆxdð<^²ŸR¿è×—ÝÏ̲<‹«}‹M}âú”t÷þm«ïë«)hÚø\áM#¯š^¤š*úüë©ì×UÜ=µ?{[x},WëoUW Å€îÕR¤›z6ªwQÓj—›MÝëò<–t¼ÅUV„±_RÕ¿zJ«#U%NÄKÜÇÊJIÚŸàq“Àñx5ÁÙIá3y.¦Ð—¢¯ŸÞŠïM}ókÛjjš·ê®b²ŸR¿è×—ÝÏ̲<‹«}‹M}âú”t÷þm«ïêü¸s!ZV¼^жmùb>š îÊ’;m_x©Ü=Aµ;W"ðúY:®-ÖÞª®Š+ݪ¤;I6õmTÕ/6›»ÔügÆOÅà× YKF×Âç i|Òõ$ÑW×ç]Hfº®áí©ûÚüùž1W’êm z*ùýè®ôÑWß6½¶¦©«~ªØáÃÉa·KÌUQåhKõ-[÷¤ª²5RTìD½Ì|¤¤«ò\9­+^/ E[6ü±M‹weI¶¯¼Tî Úª>3Àã'âð@”ú•ÿF¼¾î~e‘ä][ìZkïÔ£§¿óm_\mYKF×Âç i|Òõ$ÑW×ç]Hfº®áí©ûÚØëÃéd긷[zª¸N(¬vªí$ÛÔiµSºŽ›T¼Únï_áä°Û¥æ*¨ò´%Šú–­ûÒUY©*v"^æ>RRNÔøÏŒž‹Á„ÅX™L¶•‡^¶Â» Íú~Ž™ÝUò¯­¶ˆ¨šš%tÉQæDzÆZ‘öÉ·™tÁÀ$Є…{***¢¢úë·†Î0ôÂ;œÛ–ÛM7Ð[ä¸ó€ £!t'˶º" ¢""Wgæ~_MÂÿïÿümqr¬HÄŪºwK§LÑDS,Š=šÃáØíVû\cq\&aÇ@QIDQWDD×÷’¿Qç^œsèÝlÚ_¬ïÌü¾›…ÿßÿøÚýŽCD^u¬›m›Ø˜DªÚ’‚¡,½Ã¢™/eO]k­Gg–[>m­ŠûÕ}§œm‰&×3a¡l=ª›tÑQÚš 'WÄñl_&¹_±øíņ™~,SVâûš®†ŒŽ€†º¢k§mMJãæ~_MÂÿïÿüm>gåôÜ/þÿÿÆÐc";δçŽ}+_öK¯™Õô× ´ÉÅñû‹l¹Æ®±Ÿ!E© æC€¨NÈsDEEì‰û%¯™TüüÅ_:×/ÿ5¶ÿf¬5¦áy±dXR^s{ÄïÈ´‹—Úîo\­7¡7¤ @z'1„dŠØ ¶¨ªŠ§,”s?˜«çZåÿæ¶ßìÕ³m¼*Á-Ó`ɉfx[·Í)ðaÂIÁ‹ ”טÔRqXmQ\5 ›UuJØÊ¾Z¦‘ &ßó̯‡Ó.Ѭ3l»Xoά˜6©¬-Œã´êÆ%œJ­HRå¨êÚ6¢zz•6«ã^xÕ»}–ÈöA*ÁaÇÝz2Z¦Ï—w9QÛuòY-.ÈÊ€J¨® ©’÷÷©¹˜àÿ™çc¾âäi‘[ŽSdZ—¯P1ÚSÙz*¢«H ¢ª&ˆºQþðéîHž;î-ƇÈã6@±)¨štã!¤=’v"""º†º""ꉥk³aðLË;Ìr[ô‹cÛ6+W"Å&€xe ¡È J jd„+Hšj*â/šº™šã“Ü~h~‘ß|[£ÌçCcPq9\½›…½îžÆ{ŽÆ“Þh^bÝÚÃæe„zKé‚~ŒñåõOt½nÍOM¿“ÎÓ¿3fí|ÚîïY+&Y/÷+õªÒÌ[…ÍÂvS€E¢™ìæ‚®ÖÕÎ[jj*â€)îQE@Óò¸Å˜”ÝñcXZ‹ó@{å¹Ósz«œ™›ÑäM¤&vêj¨àoDŒYë*µàÑãXb^_ɯVYSˆë±”-싨àÆG„…\æh¯Â^û‘g|̰¨Ÿº/I¿U=þ²øÿýOyÿË\.ð«7\g£J;¬‹ÇWá%‰!.@ >`ón#€†(ˆ@$€º'—²Pi3ãžcš`O5i¶Ûm2œáýÊý9ñè¹½§Ü‰úÇ»**Ù<›ÕWkz‡wiiãvchá&W9¶Î•ŠXq‡b?0]qÉG:;*ù>\ÄS]IU6®¾½Õ¹¥ð{†’m°­®bpÆ$+s–ÆšiÇBŒe¹[si"»ç÷DSÜ¢çº ¡ù«†ëÁ^]!,)Ø«.G(Qa$—Á ¸Éµ‚]¦š¸¨#«î›ƒvÒTPÓøß²›>UtÆÂcÒœ»q ŒÜɥݖ XŒ²bËQY$p‘IÄÓi ‚!.ÕEUMÙ€e—Û¿ce™=œvòžvd+‹‡–M¥1Üá©2ÙlCÕD”D¿g¦ªw…X!ºä€³=QÝd^:¸· ,I ró›q1DB$Ñ<½’³Ö\_³âmbvë<6lMF(©[Chš$T!4-wîÔ””µRRU]UVƒÎ·ÿÍ—Y¬—sl7iLã0¯±%štÚ»5¨î6È4rCj/! ‹§½^è”—Î3f6¼ªé†HµØBòÞMe³Ç˜ë‘£…Å’uw6¤$òµË1Ü„Ò9¸Kkz(­´îpÊ}µ›tÛ ÉØŒ‘¼ÍRéЛ!Ž¥Îܬ‰4-*¨"¢*ª®bñÃ,"ïrºÜçÙ9“®ÒbJ•$%<Û¨üQQŽëF&ŠÉ‚*¦æÔUQU]V‚Wó4]ï·xYùä3~T\Þã)‡%¸ (ÖŒ´fˆ¼±U$(¦ö¦ºV±áçs)X(µ=‰0ɹJ»7¬ÌéæÊd㪻'™ç@iPÉÂÙ´Ói! ¢°¬;ÂáMƒ‹ZYµÅ›5ÉϰÉ/œh(J"ª¨  Š Ž‚ˆ‘+hàÿ­-¿ä²å•û[ µ‚ó¦ó­j¦«ÜÜ5Ýï“]QƒRæ\}ÌlI³‚Ûa}ÉX„ ªØŠÃ¢‘BLÖØ(Ï{¯»ª ¨¨èò“Q_&‹¢f/œfÌmyUÓ ‘k°…弚Ëg0×#G ‹$êîmHIåk–c¹ ¤sp–ÖôQ\÷8)iɸ{6Չ‡ûà±,PdË”ÿ)¨,Jiôh´ß¯é}‹j’®ˆ«¥U/ 8}ÑKˆ8Û-Œ©¬N'Z}Ðy§˜D—D‘ÆQ¡M -ˆ Š"¢†¥ù¶q"fKkÄlV n}éìŠù`y×UÖp¡DÜ”Mä­€£ªFÞ®#j€¨¤šsb7î0GÏx¸È·&¿Û!YÒ-™§f ržaI…yílyv'”QQ[^Õ¶¬ü2Â-+UΓ—:Ó&\¨²NSÎ:¯Êºdj¯¢"nqIQ4Ñ)’ðÇÉ.Wó‡:EÎ0ǘ®)myHAÅ]¼à!‘9‚$¢$‰Ú‚?Ïs,ãÉS¸aòr;t–a©ÐæA(¦¨*ó3b™´`¨è‰¶ë€d*¶»‚¢_áV &Á{±Ë³=2-õÆ\º9*á%é2Õ¼¤9⺨hïÑ;è×[j)J)J)JsKÿÂþI+†¹¥ÿá$”5râ® n›:4»ËÂݾhÀ4mòN Y œ·e jÃjŠà!n4Ú«¡hºÕµy‰ÖûË’25Å0‹Å³ s"AvÂõ±ë‹(`ÜŽ©)íÍô‘̶‰“ˆbc±Ä2Ü[„= ŒdÖ<›Å<oWáW­“}ÈÕ%­9ù‘7i¹;¦¨ºöU¬ÅyF‘ÿ•þ.=~fæ¼k7’@G}-NjŽº)êEÐÜDAq”‡…8æUëµ^ñ[Ã’6GˆÞˆô~¹©Bл/AI{”…EAÇ4ÜšmÕÖ”¯úÅoGù= Ïð_™·;ÃÏfÏßÖiÊýAÑû—Q¦ýýöþν!ÄÜfÖ<¸b‘adžÜÜQ‰:+=c7±¦•ÕÐõÚBªªc¸Sq"…å+ȱ±¬¤±ƒ„x;Þ7³¿tzÝi— ›Ý½°Úë§hq5EEFUÔi­†^¤$g}w0¼o+²ç¸®P8ùq¨9~LvÈlà r<9LÄŽ[V3fà;§1RÜjHJ®¥xÏü!—‘^ñK^yäì±ðÉ!1‡~O¿ã #¼H‚¾£5EU˺'z®ã3âðì­«„åQø°–«óro­´ì4êqÞZ¿0Œ–¦JʶHOmQߨ î@õ+ο™{ŸiÉâÜJ ÊÖØb!\bŽ0í¦!ËCBBtžwt©Cî¨N‹[Kß –ÒôU¿ÿ¥_øÿǬ¶O~³ã —ûýÁ›}²|É^ž¤Mºªª¢ ¢*’ª""ª¢V'ÿÒ¯üÿã×_ s¸]~ipßLÅc&û*=Ê)A¸wl-PÅ51Ú›÷móiAÓŸÅìÝå"ëw™kðÈÍJ”ÌûL¸Ï‹;ÉE—b ©’"ªk¦©W•ãþ+ãùmÖÍŸÀÇ­&MbvË -³.Ö vŒêÜÛp 6óà2d²‚Ž:ªHh-¢ª**žK4Ãr8™îU=~‘…7—ã3æEïÉflD`ÒkœµÜ²Õ\FIÝÃ"#ÕGTWR¼¯mŲ{&4ÎyjÇ/ ú;ÄI³ìöæ¡9Õx£Ÿb4"sߪ’‹j(„h£®¥˜üÏü8Éìyå’Ñ”E߇öWÙ‡$[p#¿pŸ!ÇMèÎ(8:‹F…ïÔ?² ô…+ÏšŸzázbïÁx¿NfÊû1 Ê³¹r³È%GZDŽ‹"$ÂÜÙé°UÞžm±9ΘÝó,„î–[õ¶TèXÿ€<Å©ÛäèØ5¸×}¶ã+o¡«Ž:ૈªz÷ÔƒÔXÆMcɼSÁ&õ~qzÙ7ÜŒ9RZӘߙv›“ºj‹¯eZÌWäbo¦JŸŽÌ\q8‰‘K–ÜüzEÒ+‚ìv’,‚„Ú¡¾ ¨ê£å-uï¢÷,8kÖ·q â)˜e¸£¨ãJ²¹"SrÊj˜¶Œ2ottêЩ†ˆ;ADÓž“Xý4ô7­ÿNøw‰ô¼£ýMÌås7é³ßöÓ]~4ïYŠó1 ä~,½ãØ]㬹píëm®SjJv×`“ÒÕÅFÞ _7u47 A]zΘŸ /éŒZïÐî„@ƒ:ß vÎ̇†Kfê:òÉHÒH iDÄÔQQMƒ×V¬šÇtÉoXä ¼ë¥‘â,rŒy<ðSk̨‚[…|ªº|:Vb´Ÿ¬Ï[¸¹Å „ljñd±Nð•µ$øÎ4.4ÜEFõÚªh×ehTAAµƒ¯eawÙSzéXÉù_6'šç¹n2sÀžWáÜ£¯DjëªIúQ+‡®»—Põutï—86K,ëÍÍþDœ•%Ý„\¶›#-WDE]~…y^ÑŠ^aæö²,Fñ'‡öÌó#Rµ­¡éQ[Žäpè¸`¤Îõ{a€( ™wE.ø8V~Öj•bÙUÌ“†×(V¦æ:ä9Å,ÌÊZ°½"´*$¢¦Ø«&¾ä¡ìkÎ îËólŸ|fåFwa1§ BDTÕED_£]1šÜgpþäôX“bŒW,yܽ&Àm^nÖöÄaÁM„é6 »´ÝÊÕvuû;ðŸIø70Ÿà=/ê+g7Äyú~¤ó'7—¯ºz¶è¾º á%¸pŸ–ð¼M°Ù8bË&늂šª)öì"Šª½‘kš”6~)a÷{ûÖ yß¹Çq–äÇ\rà ]îÚ¼¤Â#HIÝÔSDU×DÖ­«FµaÊ׈~‘i·Ü¢Ê»Z­íØå¢ü·º¬¼º¢âŠ)!yWMU+OÎÂóð««&'~µ6¼6¶Á»°Õ¹Ûj̹„°'Ó–bÚÉs’HP÷!¨jªh$ºÉòk3á~77¤ñ[‹6È^ägÍ’î¼¶ü¨»uÚ½×DM;ªVb¼—qÅ//q gbøâ\DÆåÛâ·hzL‹1\’1“@„­¡: "J‰ÝvöÏpgŸaã4àâ7éònâs/¸núÂt‰7„©-iæÛŽ z+¤<ÍÚŠ4š‡¥©QöïŽÿàÜÂu_«mœ¯äkú¯Ì¼®fžçëݪz«1†_}&Æ¢^üñfêwþ‚»Féå5´È|íê»uÛ¹;÷EEøh3?‰8œ<–åŽso.–¾W\Ä Ù?47·¸™d…7 êþú V¦p¼g /ÍÄËÚοYm޹f6I¨¬¤k¢UC ï2JH*›W”B©½u]tÐ6—8ÆîùXìY3»»n+˜Ã—n‘ÔŒ+*á ­Š4D]SBDÚ¨µI^´`\H[~+’Eó;~!H뤷óyØúª&¦Q÷¯+߈‹¹w¿ ì>”±aÉ'ÚÞ“cÚ,ø‹–¶‰Ôl[páÂuåquBm\2EVÕQOo”7Å*>ýøO¤¿ü˜Oð—õ³›â<ý?Ry“›Ë×Ý=[t_]XP*&ÛÅ\ã6 h——‰»„Òi[ä„RM9mJ&чU³AÚk¹SAÕt«jó¦ßy‹ \o¼Y?ø‹[î!r¶=6ÓmzA,ø’ÝlY`ÅŒR1 ’›h(»U =9Qðø›„LƬ{Þû^Cq e­þ•äê$‘˜ {T7¤Ù¦¤ˆ½}Ò´°;èäøÀåv»“W8íÞšÉ@ñ£çƒæB£>àëÈÜä"P6Ѱu4EײoLmŸ‡“™àŽjºpÞaNÆ36¤dJV‘tÝŽR^ö¢¹(9cr¶&´E.Y ­-w(÷«§n`t²N3D7XÜc¦ªÁ`wìc¨/}tZîW‘pÌ"ûxã ¢NC…ߢÚdfùLÙmËŠbØ0ôXü¤xÁU²mÂ|Mºˆc©Šª,äɵU½f(¥(¥(¥(¥(3‰¸D(¬«æš"’fƒ£~­7jº¬>“Xój&GŽMë­s7òå{öyM“BNéðW›íxnNç%K¹Ã¼Fºåt|yÇŸrÚ¦Á;¡< „5gVÕ„Ühº {ÄÖX¦7><8øýó¿?sN\Á»pÃu^jAÝ%tæä~Æi¼›QòÒ&ÝÐP9€õ¥kÜ[#¼cØÅªÁã™UÂómĹ\%³©nD†ÁÈÂöõæÊ"T|ȺîïYëYâ—¨6ÏF²H=]•»·S2-†w’Jáî]²G]U½;"*ëAÑâÏú¯÷¿ì«å•}MâÏú¯÷¿ì«å•¿8WdoáÆ0ÍžãsŒíî‚LÙ%EÂ'Ù‘¨ŽÝDD@Q=@Š[‰H—hz;'ë»)öŠü• ‰üáð÷í>/ø 5°±Øù+ÿHnÖ‹†í¼Ž‚ØäMž½Û·¾îí|ºi·MׯoþóŽW“ç?ò±¦Ÿ&6^vÿO¶aÓÈè¦hÛ[Þ]‹Yî÷‹TÜï:)VFÁÛ¢Fbl€†ß0IÇd€QCRÕWà_ ºV³õÐØ› 6É$ÅØºËÌÝwƒ€I¨’&ŠŠŠŠŠžºÑ\@µ_<ãIfpÛ½Zâ3m e„åGº˜À VÍΙݨ„H‰·ï˾©¨ã¬|$¼]îùÔ›Ž?wµÜíøýq葦= ÜÚ¶ ´îý6 ‚já ï-ʺëZa×9=8³—WG“ESyÒ¼Õwˆ#uUÍæ&«Dm´²¾Ûhþ6½è쟮ì§Ú+òSÑÙ?]ÙO´Wä¯9â<6—’Å—aƒŒË³[%pÚ$ ‚K€ýµ‡/ÀîöÜpTž0!RWDM4ÕWv‹ÅÎòÙñýh¸„\þeœïá* Œ+lZØ!–v‚têûÂÎÅMÉëP×Jªrlª*ª'8Ìhï¾ûlÚ[ôbº­ôÄ_ÊògJ>‡ãñg¤}“õÝ”ûE~Jz;'ë»)öŠü•¤ÇgÀãä{…³¾^ VH¯O‘u†ë2!',´“äÆœ.Q t¯¯¹ lÔ×l67ƒeÃ϶_ÉcØòF®Áty¼  ©äê Õ'³i?Õ½# &Êë¢+œá1x¦~تwi^"&˜)ˆ‰š¢ÄÕLOä=/’³ °Ì¾ßsÌ’¶|Çßväº z‘4AÕUUQQUUUQ+%ÆñAs=Ía=j·•Îdyé*#ãwnxZu¡7A EÑ=jˆºÝ¾»cá&‘Yì÷y·ø -û Žû¦äé ÅhõŽÓF¨(m ªÒl] ƒ©"-=Èsl¿%Êlé÷Çñ+Ö'=˜§z´t!äf ê±ÛyݪH[¼ú)Ü#Ó£–WTDÌMZZ6ј¾ËWy³Mê‹Ç¦&ÿåXÍÖÂô¬f+|AÊIì¢9ɳTêu-ƒBé»4 ‘t=«ßO_jíáçn˱ȹ=e3m’÷òë\o~à /)‚hBIÝ> Õœ8bñ‘e¼F2+8áxü¡º»wµ½²p£·Zhˆt3Uf“bë®ä!KŸÌ­k¹Y¸ ÛoévéÌõ\ØÒ™& eŽÉúîÊ}¢¿%=“õÝ”ûE~JÏRŸç>ž¯¶NõGÑÙ?]ÙO´Wä§£²~»²Ÿh¯ÉYêSãüçÓÕöÉÞ¨àÀú;'ë»)öŠü”ôvO×vSíù+=J|œúz¾Ù;ÕGdýwe>Ñ_’žŽÉúîÊ}¢¿%g©OóŸOWÛ'z£ƒè쟮ì§Ú+òSÑÙ?]ÙO´Wä¬õ)ñþséêûdïTpMÝY—"N#iñ›³A!¹hóÍË$yÍždR%×^éðú‘tM)ØÑÇ2lŸ¥r`Gç]Ù¡!- WDAD-šªü ¿•ØŠY6)ÝTg"}ÊÕeþk½ûTÝÆÕ²ìš¢¯ì“T]º}D¯¨subf¼šª¦ó4Q݇<º½lE£óFK—ü‚R2ŠhÓó•[%OVäDMSáÓ]Nú¦©YkÅÖ×Ö›r‡ÅdIçÄSºk¢¯«²ÿEc° ò$[dÛî­ÊÚ…NªºžžñÎë¹P‡EܺjºÖ$`ܲ ÒD{&ðÆœäNdØî¥ËÑUS]|»SÿOUuX3>‘cÿWm}·òÓÒ,êí¯ï¶þZÅz'zúßÀþõwä§¢w¯­üïW~J ¯¤XÿÕÛ_ßmü´ô‹ú»kûí¿–±^‰Þ¾·ð?½]ù)èëëûÕß’ƒ+é?õv×÷Û-="Çþ®Úþûoå¬W¢w¯­üïW~JéD´»2é:× äO·òúØ­ ±¹ƒ¹¾`'pÜ(ªš¢jÒ‚‹Ò,êí¯ï¶þZzEý]µýößËX¯Dï_[øÞ®ü”ôNõõ¿ýêïÉA•ô‹ú»kûí¿–ž‘cÿWm}·òÖ+Ñ;×Öþ÷«¿%=½}oàz»òPe}"Çþ®Úþûo姤XÿÕÛ_ßmüµŠôNõõ¿ýêïÉ\1ñë„—¤³ÑÃ׊ê3 dÈ™54D÷¥°À´^ú¯©Rl9ÜPW¡KbSieڦˈh‹Ï×MSáîŸÓUõ=É º¯B´áq\QÚ¦Ë/ªzôÕ>ÉýË=sdNœö#$f‰çßy×Á¶€SR2%]QUU{"%r•Šés¯‹Åÿ¦E:\ëâñé‘A•¥`æ®a ‘zcØŒf‰ÖÙu×ÀTÜ4U_|FB(žµRDNë@\Àç;ÄJ[-Î°Ž¾®’¨ëª +fˆ«ÙT ORÐg)X8 ˜Oƒt±Q$´/0û.¾mºš‰‰"èB¨¨¨©ÙQkŸ¥Î¾/þ™ZT¾Iw½ãPBvGyÁ,ÑuçÌv;djЍFHŠZ .ž½~…dú\ëâñé‘A•¥bº\ëâñé‘N—:ø¼_údPeiX®—:ø¼_údS¥Î¾/þ™ZV+¥Î¾/þ™és¯‹Åÿ¦EV•;{™’Øío]/sð«d6óeL’ó-7¸Sq’¢&¤¨‰ªúÕŒÌÉ_oÌü)Önzt—”eêÙ:œ¥EÐõlHüºùEWÔŠ´T©x÷{ÜœŠN9ó‚=zŠÒ="ÜÜÇJK »U ÚBÜ#çêšy‡è¥dú\ëâñé‘A•¥bº\ëâñé‘N—:ø¼_údPeiX®—:ø¼_údS¥Î¾/þ™ZV+¥Î¾/þ™és¯‹Åÿ¦EV•Šés¯‹Åÿ¦E:\ëâñé‘A•¥bº\ëâñé‘N—:ø¼_údPeiX®—:ø¼_údS¥Î¾/þ™ZV+¥Î¾/þ™és¯‹Åÿ¦EV•/Ýïy,Ž^pKÌFÝVMøØš"*‚¢„+§¯EO£Y>—:ø¼_údPeiX®—:ø¼_údWJÉ3%¾ZÙºY'áW8îåJ‡%çšsi(®ÓT] Eõ¢¥+Òç_‹ÿLŠt¹×ÅâÿÓ"ƒ+R¹—q,ºjN¾[^rRÂrÞãñg?Ç¢¸¨¦Ã„É‚¸Úªk°õU]ºëÞž¹„2'N{‹3Dóï¼ëàÛ@)©®‚(ˆªª½‘0Ÿ<è/b2¢Ih^aö]|Ût 5EÐ…QQQS²¢Ðe Å‹`Æf,Xí‹L0È 6Ð h""‘;"%sV+¥Î¾/þ™és¯‹Åÿ¦EV•Šés¯‹Åÿ¦E:\ëâñé‘A•¥bº\ëâñé‘N—:ø¼_údPeiX®—:ø¼_údS¥Î¾/þ™ZV+¥Î¾/þ™és¯‹Åÿ¦EV•Šés¯‹Åÿ¦E:\ëâñé‘A•¥bº\ëâñé‘N—:ø¼_údPekèÍÓOLº/ôï‡xgUÍ?ÔÜÎo/f»=ÿ}t×à×NÕûés¯‹Åÿ¦E~ã3–·6?ˆŽ>‘MÔ„}OOÞÕQ?õø>‚ú¨2T¨èW\Âé.åábñ';z„u v/­vª§©Sþt79‘6d0,aˆ`.Š«Úù€LWM}J…¦«ð¢ý çÔ ½ÿ`•_,«éþ~Ýôqfܾµ\2—Êbz ¤ Zª©/uUø;ië]{|À ú#‰üáð÷í>/ø 5¶kSb8|=ûO‹þMmšùóáGçjVl‹äÊÄdY>5ò=!Èm~£w#¯šÛݺnÛ½S]7ºzµO£Pü?¼qFgòÈ5–$|z?GÒÈ5iÌŸLâÆ•© ïÜ£Ë^ɻԸŽ47rw\"nÏ.$IËã\§¥E) èP×sbãjZ¦¨šhª‹ßMÉdùž<62|zâÚ]é›îÜK^"m;-;&Þků|ây7Ž6ûìÛv{¥¶ónjåg¸Ä¸Á{^T˜¯ ­Š¢ºª¢è¨¨º|(©\³eFƒ ù³d3,vÉמxаԈ‰{"""ªªú«Ìöþd4Ë k‰9º%êÏ#%¼- Ö(¹!ÙÊ;X#äiµOS5!×iè’6Œƒ0»áÒŽí•kswÉ}#µ½t—*K»[u› ZV-ü£@Aó7¹ Dõì^Í=ÉacU¥”ETìÓxŠ¢©öú3ˆß4ÌÄDÎ}þc|= TiÐØ› C2bÈl]eæM MD„“²¢¢¢¢§®¸®WKm³¦ñ+ŒH]\€‹¨x[çÈð˜¶ç­i^aüÏùawÌqC»eZÜÝñHío]%Ê’î× › ZV-ü£@Aó7¹ Dõì_OWœÏ9¦¼Õ”wŠêЦӻÑTÓõÄÚñ<&/i¼EØx‘\^ R•ÈXR” R” R” R” R” R” R” Â¸Ò?“ál‘8ãwUlÔIA}JÑ};¥w½Áþ¤½÷ß]Fþ{°âÏÿ±j²¾µî朗öt,88¿)W­Ç ã¶<©ûE–ß&;îÛJK΂ QCAÚªº®»»öÓà×UÓŽÂýýˆ7ãÇ-–ËŒµÈd!µ>àq@Ñ5$0eÕR×jmÚ‰¢ªëÛEþÄýu]þo/áë—»Z¬ñò {œ+{%}™£’Ÿ…v7Í>䨞VÛp×è¯dU®Â·~\Üømp\‰Œã.Ï>gZùí´Î…î|·+šŽªº€m^É»×T QÁŽs™e‰dЫí2êºØžaQ!EÕ”EU;螪ÂÈÍð¸ØìlŽF_³e”ê³âåÉ‘Œñ¦äPT¶‘y².¾Rú \÷\³´ß"X®™-–ÚfΖ ™Í7!ýä "B-ÄŠ)¢.ªŠ‰ÞƒÏòÅmÜOÌòøÓpÈ–ÛFoo´¨‘ ¬.kÀŒe£›[då)¶ø&àY¾u=F¬ðÜ»2¸ñ}ûdûÝ”c%Ê|g¬]b¸ñW’<Ž”"#¬s¶œô’h…ï(¢ºÈŸøjÄîk_Ye‘v¹\¡Eð×î‚ĵbL„cžÓ[HÚEªŽ‚Š"k¹t\f3Ř7¼Š”±L‚ÚìÙÏÀe=…·™ê·!ƒRMÁ(2„OfÒV—EÓ½¿Æ¸“˜2õä"]ÙÈÝ,~|»| ’£É¸Ç¸²qàÉ,~Dƒ¡J:“¦«ÄhÔ«xM:Û+Šy#Ð3ßLÙ•d· yæü77/ÌWšŠÛ`\´‘‰4R¡½Ë¡‚Un#–J›%<¦²Âî;9cLq«’ÈŒÒ1'š®¸Ó[EôEÔQj®ºRëÄ|.xÍãäVË­–ÒÑ”‡íóYxTÄQQ‘$=¼ÒÜ ¤ŠªbŸ Pt¸×w›fÅcHƒzzÆë“¥¸,˜ñ¢°›-d¾üwÅ–—j 6ª®“!ª!ªÖ¹Å³|ƒ-É1\Pø™ Ír•äíÁ«r“!ñŠö؄Һ֟¢Xxd«œ®M@E[NG±§m1§ã³YÊÊdå·ÄbÉ-‡ÉùÑ<õß"¶G‰ºCYÍd F îr™"µ ˆïSs­'ì‘h5•ÆðýÒíÃüß#ÎÞÁÚ“‹Lq}¥†Ìh—v»J[NluLh‰M:EDÚ¢îîéIÄfñë2ö/NþAkwdY¼¤I‘œÅ—ÏDD­·ÕÌ Z/—f2Ë‘­²,׺ Ï­YÛ`Š"›Ô£Ôsxª*iÝ΃LØó+Œ{æ-b¹æüë´l’ço½Á’‘CT¥„ä6-‰5¸†¶`‹‹$BW»¼-Ê"äÖ ýéÞ,õmÀë¡ÈF·+Pi÷Zby(³¨™´Ç;SUd”ÍD6ˆì FYŠÞ.‹k´d¶[„ñŒÖ,YÍ:ê0bìUØBãj…¦Š†*‹Ý+‚>o…ÉzK1òü}çbÁKŒ€näÉ1TÒA¢•­†½|º®º*Pk;ï$Ë8$¾9ÄKœû£­C¸O…ibß%aª»2vús.o-ÂÁÒ#Þ ¡"š•Ÿ.7<† Û+z÷sŸb»Î'±ö'Cn91 h´µÃæ)©*³ÈUДõæÅ²ü{‰Ø‚Iòî•çãGé[ߊôÛw1Ñ·[$tÕP…}E§tÕ2lÍÄp¨6 Xî¶Ë3DÓvû<9SDy@lk˜[œ$Ô¶«©&½Ö‚ó­°r>Ç=ôDsÒI¢¼¢Šë";š”üGg"¾#-è¹ Atí†Ò2¤²T›ç 7´‰Wrz‰tQ] !¸O•\owKöMpÊ&ž#o¶Ç–zÄm¤=¦êÊ3Z1æCX2UPe¸ š†ÖöÍCbÜK°_ò,ž,;®?&Ëbƒi^!^C;çïG•’o§%_9&ÒUt@q·$W‰r\•œ}^»Â„²6T$<,º©ÎÍ´n>Ÿ+¤„Ú;*k¤Ê|o¯ýEp’ìt9û„ÞœÏÜÄ•6p.ú*×rÉvµ_-lÝ,—8W8îåJ†ø¼Ó›IEv˜ª¢èH¨º/­+»A©¸² Àâž7}¹çópÛJY.1vèMGÉøf-s%2c½Ñ-ªºªFÔQݳ-·H £ÿv(ÍJ(Î5!¶ÝË'4CoUMQuOXª'v” ÑrŒšóÃKÜë.{6neèÛ—6XvèÏ»f¹ ¤AAiU¯tæ2¬IG4ØBM8K¼éA¤ò¾'Ljϯ¶,þÙ>×nÇã\ìä";¬hÞG≈êàšô"à)+ƒÕ†Òm\oLž]”EÇxaý‹>#uî,VoR_·(O>1Þ&Ù—’ óèº*¡²ª{›Û4 Ói2Dã/‡PÔPä6JÚ >jjà{˜¦ÿ¥™¹Üm¶þ3ÍÉ¥ñm²Óu²Z]µ3!¸ÕåÙŠQ£¢°nÈìm–Ö ]U”ˆ‹¡4ƒ¹©J 'dâ=€\â³Ø†Eß2g;6Çn4$¹p6¬°ÔQ¶›=îŽöŒWg}@“TT]9“.—à_‚ç“rkLÖ÷"äqN+^}Ð}§n:ÆYa×H™3i§œ5Üœ´MÍJ aâòN2‘o¥²$Vò‹+&…6,‘fÜpæåu¸Ê%1²ˆŽ+‰´šº*usÀ'Y,æ[ºx¡·{º‘É"mMávsï´érÐCÝYu§…DDHÚC[”gŠ™•ÆÃ—ä6èÙ¿‡Ï…dv°YI"n¼Kqd¶ µuÐSŠÖ‚Ñ »¤¸›û´ðñ9¾cüQåÅÉ<èA*ÓuŸ•r)òº™Qã¤^{±ÚhÝpŸY l?¸TQ-™™íÏ.KÕÍ×nX„pF:fÁ’2mCFÑÍÈN¼½ÍQy¥ÛD 3d¸Ûq)fäÜF›nêoc1‹<¤†#21[â‡Qµç«-(¸*èš R' v:KŒüÏ9hƃÌaüÖÙuÖÔ·U€X‡#´ÛL ¯0‰Edó9„j§ÅhDÁ7Í(:Vi=T7ñSöÉ}¾lAÐcƵóœ6ì5Õ50/(ûÔîÒ” R” R” R” R” R” R” ë\?kÿ.?ß]šë\?kÿ.?ßAÃpCs ÝïF÷$‹ý‰¶¿™!­£)‹‘'’$µHw;ëúS«êO*ùT‰{"¢"V;bí*-ù‹UØ-…ãòI×*ý§Åÿ&¶ÍjlO燿iñÀI­³_>|(üíOêí‘|™JÖ?â6Eñ_,Äm)Â(üØ¼Ö ÅêTdåÙÉBÑÏ¥tøßú7ˆÜ4ǯ^|Bép”—FòÆ“%¶Pá´évBÕÔU•tqG¸–ÔÓÆÑ™±c+Œ›¨‰štöLUäèiì´í™Ñx¼Ìm´Ý±ß#Fñøó6Ý+ʼLHåÃ.2â6œ&?:Ñá§1gžì˜Žï&ÜWg”صµ¦ÑL„vÕR×nµâŒ¨×Ž'çwKD†nᦕÑÖ›7\7Z1ÕM¿8¢¯˜|ɪw®¥ËÍV™Äµïæ‰Ù£…U3²©+¾lÛæã6Šûÿ£ñ·Øôm*K‚߬îüßýœ*¶¼ÖSƒÞ1«Â½ôfcì›/¦o)JU )JP)JP)JP)JP)JP)JP)JP)JPbùîÁÿ‹?þŪʓoç»þ,ÿû«+ënçþiÉgGòËò•zÓÑ?]W›ËøzÂÝ-7ûÞ5w…ŽF¶?-¬Í™¦3æföF”Ä•D iÅR%dCÞ¢"–«·if¢~º®ÿ7—ðõ’á÷î‡íìŸð×][ÄL>û‘ÎÇoìÇd®6ø2bÉ€ÎK6ØÚ,…ŽdC.3|Ã(ûP ´CCÜ»TW œpºûvÅ`âùÌ¥”qöì¨ Ý¦Û›·ª6r–ÔúÑ VôbCš 1¦õæ™&ß­YÄ,ÊÃ2Û•®á3"Ý SB[ç8ÌÇÜEiZA­Ó4÷EB.@ªŠ8dÐ/8†i)ëšG‰«W{½» N\Þ* CTŠ‘טќNz¨£Ä¼¢PA>ï0»Ž//"¸Þ¬ý¾éxœô§åÚî.È)hä¹R]a¤Bi$òÐÓrš"kµE1–lŽ÷Žfy“oÄñ hrèp’C÷‡—Ù‘ ¶Ó6CÉGä¡*#À€&{CÊ"\ØŠåwŽ0d³nq[u–î°#›Y4°YX :°…¡aò%z›…¸ÅRF›U{Ÿ‰­OËUè¸Í—Ò9')«„;³³]¶ºŒÙ DlÐ㉪‚hJôóc-\2¾¿3‡r&me8úÙÌ—!›{r*‚>€ê !.­Í[EdU•ÒåÖa3ædMeÖËí·ÂæÆ¹t3 îD€]ð£8†Ëª >G…4lGCB4]Ĥ³øæPX‡'Ýå%ÎðPr ¶(<ûòŸqVðôHÀF¨ãÆ#¹¡UDpö”L´ Úן^Óy—>ÇrI­\Ÿq©Æ“ÅrZ°ŠY(H(Áh¬è¤¼ÝZH±g Ü,™8–ñ|‰ãD92Î$pj\†^ƒSä vÙEV…\ES]Š›WNÉ_´ÚŽ'Þ[¥ÊîV†£K’ü•äi$s„¤ÆmÕŽŒ …#V¹Œìq zsÞx›r`¶Ï¶ãð¥Í‘&lIP TÇmجw‰‹ ÷eNihˆMnA'P81ŒC4ÇnØ#QâcómØÞ>í†Cî\Þiç@ÝŠˆø4‘Èwr¡rÔÑ7:A¿@C:v¼ª?î—î‚ÊV öØpyÞ$êKo§YNoäò6.㓳Njh!»UUØ‘—N:t&ÜõŹ–96Hw¸²ᤢaøÒ¥›<½€bÌ z":HGÉE3j‚ãÄÙ q%ÜV)sŸ$èð&Ìb4· ·žm§‡drÊ}¢2qöÈQTÐ9†Æ­²¥ñG %ÒÙxDZ×^¹Z¡ Û¹|ð’˲ÁMw6¼ó&ÔA.=ÇFÙDÌðK ¸ðû†> ~á¶L`Ü](× Åiž{„L ²N+I¹Nåç"-v5Lãy#×[]Ç$qž]‘¾bCa¨î;4‘’1xÜl5!5!QHèÐÙ¡èá+M·çØþ)u‡.ÉŒ¹<®RçB¯«NõS^à8k¾XºˆŠ‚{Õ; TÌ\6“Ã|G»B²µ'é:OÉfGñ\7¢é GböuMˆîíDU*Ù¸ÆKnȺzg§Û¿ÄlÒàk»]6õ ÿzºí×NÚéªk?Ç÷û~ Úã ÉH—w·@y\œq ‘1¦MÆÛ2.bñÐ ŒWp¨anØnW‡vlkµãæëWvnÓ:»Ü´Í»‹s¹bë<ãäd†$é¨*ªï@D.XðåX.U’Ý3i²íxÌG¯Ø@Ø!Iî¼ìwÔ_'UcŠ£$ä„ET]U#¶J–ÐÉÜå_qG…4lGCB4]Ĥ³øæPX‡'Ýå%ÎðPr ¶(<ûòŸqVðôHÀF¨ãÆ#¹¡UDpö”L´ìŒ E·hÄâ3k}ÙËp»Ãnù-¢¸¼à’º‡rYH\ÂçmÜhȶ¨ jƒÒ²`¹-›±1-’.6‚]â,yG͹)(%!´ä“hœBl§:ˆâƒŠê0$H é#|96_’^¸!”å’õ†^,1¥Ék²I3]©:(²ªB„¼¦Ë{f"ª)¸³7{îYŽ_,xmªÛétû„i’åu¹µ cL’s‰îLmB~(6Ù)o%-›7LåX.}Hͦ˵á‹>ÿˆ‚‘žø”]Î>N ªÇ%؃%U9…²Po™µÁ¥ç9–X–M ¾Ó.«­éæ5R]Q DUS¾‰ê­s…åÇxËîyÙØØ›˜ªûðŒÓPÆRÉS3qzm«¹ÂSsÖ›väî¹ä¨yƲ2í–Ûw…eŸ,¦¨ÉRº~W)ŽZ‰´d}ÄN'ºh´w„gz¬À¢\`ÊÇÞǬ9•öàÄÈW5”ü“uùí‹fÒ6€Ð¨LGPÑÓUmvèæ£sÂ{^Ue´O·äÐ,±·Ü¦NŽv듲wuRß@Hl5·g4E7nÑWAõV2ÝĹq%¬Nm•ž’déa\`»-ö‰æ›uÅ8­ÇBAaÑ!mçHÚdÿ3Ìré콚ڟ{‰/‡w[Õœ£] Q:Œ'Ø7â:ÏNÓ»] -¼ÅTtÅòPm>Ù²¬rÇlÆnƒeKM’ÚÕº,ˆÏºì‰Ü¡ŒHcùAU[E{Uq44@÷Lg°Ëþsd‡h²•±¦«Š¼ô¹&õ¶TF„D[-§+qª( vBUí†År̺ß2¸Jvçy²ÀvY%åҳȔóˆ‚û-Gæ8(JÒ6© Ç&‡~ˆT¹ñ/%»pøî˜ý•›}êSm³Ï5×㶈ôˆª¨ üQuDÂK`ªl¶¢†á†í€®rψf–+›7˜11ùÒáξƒž¹¼ÃoE¸Ïn`ºN$sPt´mZ@!T-ÜÄÓjôæp¾ÿ s´L¶M‰sÃaâsæJpã¹#„†ú¦šq"ID¼¢6Ñ´Më½T;—«Ži‰ØÁ±fe۽ùŒ«ky ÞÚ³*¶ñ™4žd\áMIÑò"˜ì N÷%Åm9Þn%Ö 3X‘ÁA P‘Q BMtUM~ îÀ)G9Îe–%“B¯´Ëªë`zy„MDT…TBQTï¢zªÍ‹¯ˆnfìHÝ<ä¿%CÁímùžCB÷fâ Ù¯uwq~ÉKR×÷e@Ïfãli–šbîöåE¸«ÄàAq@š ¥¾éPÜ©§P»•[{5jÏ%LÈ¡°å‘–¬·+¼Û, c5JIJ‹Ôsy¬rÐA¥èäm!tÉ}ÏPŰ(3»¥=ûêºO¶ÈƒÔr÷ò¹­oÛªnÓvºjšéëJ…ºb¥úçs¼Ü¢cöùrZµ+Q£ÜÞÞûdõ˜È“…åuÆÈZFđޢ8nG{É8§_‰áÖ;æ#2l¼<ÿ=¤~ ²ãñ•±i—„$*‚¸«¼‡z Š®Ù ™À¬×[qß®—±„ÌûåÉ';äûQ¶Æb2º@ æ£ U@tSQÑvî*j×<1jÿ3€ø;Ö»»Åt“Ó6d»Œ“’ãÀfËÓMÍä¤m«Â?© ‚"(ÙâlÞcb¶˜ù¶f^š‚È\d2š6ô„GLQt=ÊžQ쾤õPdéZ³ŠË•Üø‹`Æ-1‘k~Ñ:{¦M.Ðã2ôVÑUØ­›@_ì¶š¸JHŠÐ)S·”^fe· m«fe®Ó9¨%påÉœe—·4ʆÇÒ‘+ ]œÚ¢(àVRµ—ˆyT륢Öö%ef|«ÜËlø­ß]qØ F%”@±QTv¨î@EIw»¦ÊlFeñtw%»B›ÍÝL!5ú2a¦ík õ¯™£ú*FԨΠ“Þ„ºËÓ&Ëé¯wˆ­;2S’å5r’ÛbN8De´E•WDJ³ R” R” R” R” R” R” R” R” R” R” R” R” R” WZáû_ùqþúì×Záû_ùqþú~þè~ÞIÿ TT¿ÿt?o$ÿ†ª(%8¿ó­ý÷û ªùW_U8¿ó­ý÷û ªùWAôGùÃáïÚ|_ðklÖ¦Äþpø{öŸüšÛ5óçÂÎÔþ¬:ÙɕԼZí·›s¶Ûź%Æ ÚscJd]hôT$Ü$Š‹¢¢*kð¢-CaSe9>-ðêÑšï<"‰Ä‰ßf#Ï1ißkJùħFñ·Íý>1A·=m…Z"Á~:Åz30›œgS.Y &Šºêí^Ú¸kû%׊Շb6˜s¡Z±[·ùSYoi ’mpDQ 4"M_|¿EkAaœRÉíìöv¥¼èß²KÐE[”9W[…žTB’#4Hù¿¸µ]΀**êšmÎݸÁšÆÂí÷9–ûF?{ô~eÎe¢Uª|Édã+h¤Ë{:Hç·r<éªyÑ4T5êãw;iÄЊïOÛiª/1¶öš&&×µ¢gdÄÎE®ÞТƃ ˆP£³,vŦYd°ÐDE;"""""z«š¼·ÅN/eÙ' ó)™°EµZì2Ö&:3@çòßRmàÑ4TiCjnB#ÞšrËÔ•ÈÎY›(ÍøTbeULůy‹SE[gÓÂÊ1"¹´~?)JWaJRJRJRJRJRJRJRJRƒßÏvüYÿö-VT›=Ø?ñgÿصY_[w?óNKû:?–_”«Öž‰úê»üÞ_ÃÖK‡ßº·²ÃXØŸ®«¿Íåü=d¸}û¡û{'ü5×V¨©<ƒ‡}þãp¸^mL‘piNO‘·bG‘kcÊ—%4ÕÒ/}¡%eh0úlÆ}‘Ný3^Uµ¢ÇXqPAºHNKe«%îÑíh\´Q".QkÎt 6œb°çG˜Ü{›Î²è¼£*ñ2Co¼+¨<ð8é Lj¦U°ÛÍÇñ{¥ï+ˆ®¦o2TñIóf ¥´u Œ¦b¦‚Уa¹P¶ƒZË2—’¯ØÈ,i“Bi$À’1|>ñ$&Ûôd¥;³š‘#3ÔLã ú›[9޵¢Ík¹@â˜ÌÇó2ŠI$~éãÓ%x”9iN/“®l6ܪ'¯C®ÕêÉ(.°LC [K™5/ z&K^)ä Co4Ú ÈŽ¼¤òÁ´GÁADEM4®kW q l9pã³z8Ò·“ŒÉ¿Îá<+À.‘îjýªq\#¼·‰ŠéÈPFÕÇ]Ý ¹iÊNjžêÚh £]+Nƒ_lÃp´%Í"K*{3"]¦Æp‰÷7>¬º ¤wLQÍ€¨Ë‹±ÁEÔJ³,55y­ \UTZ«FÚ”r\ÖyÐÛmø×G— ÅHÎû¯8A<Ê‚¡äTæá-ò4)9Œ>FrVæ',ëi^-—gœXƒ*¶r\2ç£ú2Ц«ªˆªPSâñ±\Ÿ‡Í÷•Î}”Ýu¡+‹Ó:°y©„ªr$­¼ ´•P€€TU6ŽœÑ0M‚z Â"QOR"®ˆˆˆš""']‹X²Ëx[ò=d`çmi·§6;±Üî ‹Ý§ÝÞݪh¨Š“üE¶ñnKŒ¿ˆÞímÌN"ž 8ò¢t²‡{›dµÍky2ˆÒ¨{\ܨ 4×áW dË·M93¤œ§¤%ÖP»Í'"¸¤Ž!7¡A‰µQD¨ª‹“…†ã°ò"¿1 á—Íqàl¦Ã¯x±¦”Ó‘œlPßË02yn& ¤ˆ Hº**VŸÆý>ð9~ é7¥ˆÌñŸçôþmg§éº¿Ðû9gêopÓfï/*²˜$C2Éea§Ajãh€Ì9ÙL¤¡G£?$Ÿn6êÉ,íMâ$¤jÕ·Qÿ‡ X¦cÆ&\¸»i‚Ô!”Ôe`]…ALô-ˆ:ù•uTDEÑ;·ù¶kpÅzº³mi‡\u£zoNÙ(°é™Á‘ÓQ-Q7èŠI®|‹ŸÓÁüv¦¾ ÊßÓ9ÔoèöòyýVW7öÖíš÷åü5gsÄ£døÜ{^v0¯/7Ïæ6ž„ÑsYz9miêÃîêkÜ”“EÓhs^0ë×*·äòÒæ—K{\˜ÎG»Ja±1p€šmÁlĈrª¡j‚ˆ˜l†& Î{ çF¹È½Iu‡Ê4&æ¿ze°Ææ‘[DßTéÑD½Å6Yœ–ÂsPÔ^æºÑº$Œš¶ˆ (¨¦‰´KΚ ª)"¢* i«×k‘ù£®òe1™¶ã–ÛbFÁÝZ·¹!’–ã€FÚ¤bcÈK±HÍÉÄP¦Æq›‰yu>Õe‰>ã‹s%Ý]q†MÒGœu[CpM¡&Ór FoÎ}lëVc‘¤Mʧý–r7§ç\Z˜L½-›j[ˆÞHª&ª‘À¹+BŠ©!îJžïXÎÚïoåý5Ùü™¿Aã–Só/ÏHjù1ÅGFY5Ï$M0qÄ-b6Š0-Æáõ‚V5xdëƒ7 nN›5ù ÆXí‘É”ì‚AmLÔEÕÔ‰tO]PV¿ãṴ̀·IÉ¢Ê~å?Q`!éL°ã¨œAdÞÆ'Õ…PM‡Ýº™¸xÄî˜ãÞ™ž3lÉêcÄ–v·mˆcÉ”ÉK‚è\£3ò–Ö»Pn âÆz32$²Ë²VcƒŽ “Æ€F ¾ø¶–‰ßA%õ"×5i;å†uÏÂ.ùYk‘,ù÷œXrgŒöíŽÖ¡™·’A»°á *¢¼(Ns4ÕívÎ*óoã°ˆ—8¬#[ ’šÉVÇÊç0‰ÍÄ(…î‹ÌóyÐOp pÝr{E¶ùÈùÍz|­ŠD€ü®H™(¼­#D„ˆn(Šì=ÈZfkS ®×#óG]äÊc3mÇ-¶Ä!ƒºµorC%-ǵHÄÇ—b‘š")“ˆ¼6È×Ù¹¨C–YhÜ_»Üš¾½5˜)g!”‘ƒEHÀî‹oóGT}z’¢ó¨6ý+Îw[ž[·>Û|@,†Õ„=lœÂ¹:'}m#9PU¹ºÌ¤'Å £AtÔ*fûdpǬRó›…¡ÛE–à3'¤×å¸ÚÌ0º*<àó±µéÛPpIUYlMVƒfzeŽ¥§"º¹1æbcN¼Õ؆óeYh^5A B1嘚!!!"Š®µ“»Ý­Vxé"ïs…od·èä§Å¡]›§Ü•ÊÛnýU습¨-–4—Ã^.Yíqò#ßõµÛÌ{ƒ¯¸Û–Æ£n.xƒ$z;ÉËМA@Q ¦Öí§—bÖ,²Þü‚Y9ÛCšméÍŽìw;‚¢÷i÷G÷·jš*" w§¤äóös¹Úû¯;vÝ{r¶ö¬¼Œ¾õ'Þ=;,ËmÖË?‡x{,|'mçFÞç0’#äžm7*zËMtíۜٞ#N<"|(›U\Úªfšj¦Ñ31ß#lDÓ13j§j­<>ý_2¶O¸c&ÜvùÏ:1Çf9‹“ä’2ª¬ªª¹ª˜"¨ ë¸[UmË[µ‡ÍNåéß þ…KñÿåtüòÙàú­y¼¾^Í|¼­Û·yuÝÚ¤±Ž-fVÌW6½ävOð¼ÂE©”†fM@` Òxš¹#²«ÎØfjZ(e]LLÓž2Ú"qªš­i¦*®&gNmNÙÙ6»/èe˜tîoÊTï29N8—ibEÖC¬¶p®MN ÔQÖ^oMÀºzˆ@‘P‘E4Õh«Îãà׉V{âm;b~øØº&ñx)JUI)JP)JP)JP)JP)JP)JP)JPbùîÁÿ‹?þŪʓoç»þ,ÿû«+ënçþiÉgGòËò•zÓÑ?]W›ËøzÉpû÷CööOøkõÕwù¼¿‡¬—¿t?odÿ†ºêÕ¥(Œ³Øm–©× ÑyeÜæI~D—p‘”[p‰A¡S5‡@2Ú)¹uÉÒJRƒ¥~º@±ØçÞîôð-ñœ•)Ý„\¶›#-WAE]~…LÛò(ØÆ1k<¦Ûá+Ÿ6Q[­vפì}ÃW\`Q>sÃÌ""îòÞyOeYd‹’â·lrs7ëèO›*ˆàƒ  J*¨¨…¡.š¢¦¿Ô•ÚÅœd–ü>äåÊË`¾Xä¹*kO[lwäôîÅRkd–ÔYQyÓ%ST&÷lQ!PÍ]sÌf×Òuò¦±ÔF g­¶Jôl»]•£¡Ê~gùhœ·5_!íæ›˜ØádCb˜·8Ò ÖÙÚe574Ø )[än%!Mú©’y—mLñ…vì»*KóÍãîºô I[µ…«‹Œ²ÙºbQÂAeÕ繩:*¢Ö¡ ªi¿HròÈFu—œ’cMŒüû/W6ñÕ²i¸ò9 ­EW6Pu.d ÔPlŸˆR9°cø²3<¥Î™ZI·Kn1¼Ô9·3•E⌢fGe‘e¶$‘³:Ù—N’n,’@ÕÙ.Š  Žº¢šóâ8åþÍ–ä·I—ÛdËuîrÍZÍ—˜4e†Õ|ÄÅŽ:û˜ª’©"Šyh'òž2cðq½Ø#M»I~É"ûo"ØmJ‡>yG!oÊšŽôMÊã>¤t y°n%Ⱦ[®—k••³Äi£‹qÇÝ—wfj¬‰ÜÐb¶fM›®Á4Úà»UfqþÊÈ1\î,;¥Î ÃNÙñµ¼Û×ktŸm˜¤ŒºÈó\}±TòF‹Ø°Ý³!Zïð±"ƒáƽ®O“Ú1Þœn'5ǤîVcA€üÙ#¦óF˜=‚¤§·j)‚*¢¢Æ|Ï2¯˜‡ÌÓÒÛ/ú·ÁúÿwõMÈÓ—Õ~û.fí¿/á¦YÃk®Yá³òi¸eâímêYŽ“±b~0ÿ%KXç)Kœ„Àèê:ˆ‚F;Wr)Èíø—‡Ü܉ çoºÆNŠä‡Üèf,ƒíEFÊ9ordfyâhîÙKÿ„&µ@GÃË*wK›ÃtaÐfKe@·Ü2m yÕ[DéòÐÈUÔ&Ô7#€¥ ˜ð1œ‹Åš‘7y—ñ¸Ö S“q†Þ‘lwû»d¶j;Ù¦ÚTgDѵCÍ/2©¼¹ùm•É÷{ݺöËìXm¨ïÄ(º 6²‰\m&ˆ`¨ªkªêˆ!Í“ñ @g6 Fg”¹Ó ËI6émÆ7š‡!á爫BìumÁDt“Sò¡6I].ñ~.e'Nk…m*ûöëêNnÚ€¤ÔâVšHÎèj¢+¹ ºrû÷^áýý‰Ì£'¶G‰o»Ë½ZÚ•g7œnT¥Î1ëZK’‚"-ª´ªe°‘Δ.JVÍŽMÉY8ŒbÒq{¹Ä·+\"G4Ut‘·YD=ÑÑÕ綈o]œ8‹Š¬e¹"çtq‰6yŒHq ”¼ƒiÚá6ÙmÑÇ– N* szyŒø‹õSy}OIÒølž»Ÿ·+¤åõù~ë·—¯/Ý4Ùæ­e˜aoaX §-,£s{³1…8Üv†4æßW]œyÍ¢.©):‚¨" €dªåŸ 7^WŠúC Òñ¾¯ÃK¡çô]Þ›ÌÙÓüíyžmvûj^yŒÆµÁ¸”©®³?˜1†=¶Kî¸ãeµÆyM¶¦ ïÜÊŠ8(ÓÊ¢ˆÓŠ8Ë÷-6|ªËe~Õ:ÕÖÐõÌ^cœó  M6Áó‰IEmDPÑÁ®”¾ßÙƒ“'¶E—h»Í½Hveœä7&T¤“ÌØ!µm¤Y¨Š‘–œ´S]¤§A–c×Y÷ËnAÝá[nÐ#I†%:KŽl>L›ˆ­ƒ­èíh[ôDÞŠ*ªŠ!MS6Ló¼Ý·B•5p²R-²c´ë‚*FȺãbð žöP•ÀVBVÍ‚.Fƒ;ÒÞ˜ëM‡Ç•E2@%õ®ÑÕ{"'jÔÜ!²ÝïdÝÞç%è–»NSx¹[mò,`Kß!ùhã—º4LÌ"DP”QKVÌH.mYÖ?têÖÞ7§Â$c’ëƒc›³@Ó{bJֆ𒨪蘘(¡"pð³9…žâ°oQm×8¿4§™•C-‚º¶´ë­€¾)Ý7·ª*h½“W ñËþ1n›õ}¶]š~t™¬¬KYÄ&ÎD‡d:…¹÷w÷t6ª ÷RUÕ>Åï8¼vy3l¶¨!׫%ÄdD CŠgÍu76ŒŠ©8ª ¨læ_™c¸“Öæò C‹¦Óto8Ȩ™«Ž€(4"f¤âŠ –»@•8eç˜Ì{\‚J›('s9 B¶É•)yeµÝÑÚlYª›…9f¨´•qœ_ÀågöȶÀ½³lˆÓS‘Ýa+ÎÈ"0PDIšŠ¢©* "‡u^”ßíRÆågÉíÜXw8§*Îo21n2Â[ €#t]lP]CÛª+jª„€âçácXÊëŽÏf}Ð-u‚¬Û$\£(*`o,nÍ4êˆ:f#؉‘²J¦{”Ö{'¸6Ê5" \-O6Š„è r[4Õ|Í™°[×jIAUhÉdçð£m1û-û¥´ÊÆãc1—¨ìàeÁ6ŧ”d=©8:ìTAT* ]¢ó'=nûzFPmV ŠëËo>M;-î^óPkV#‹h¤„ŠîÜ*Ù¨VV3°Û1è'ØÓÈ.º¯<ì‰.I}óTAÞãΑ8á ˆŠ)ª¦‚(‰“¥”¥”¥”¥”¥”¥DŠœ™o4 ºú6ˆá€)(—­DUÃTEìŠe§­kš” R” R” R” R” R” R” R” R” WZáû_ùqþúì×Záû_ùqþú~þè~ÞIÿ TT¿ÿt?o$ÿ†ª(%8¿ó­ý÷û ªùW_U8¿ó­ý÷û ªùWAôGùÃáïÚ|_ðklÖŸ±þ¶x/Úkû<š×þ3xú«?ïƒùkÅç?ƒyî¿.ÄÆðžõÞ☶†•ïúTØÄΑ‘S£{úmý‰µãv[fGyÈ`Âå\ï\šeÎ䂃~UUÐUSʉ¯Ã­u/Ø…¶óšcYd§å„ìwªélÅ>¡´lùˆ¢ªº"vÑS¿¯ZÐ>3xú«?ïƒùjݬ~ñ;³^-×éàüˆ³%Îê%Ÿ-¶˜|RRì'¹Sºª èšè‹­_À~.q‰Vs›Ìhß½ù´f›|¦í'Õ±]þ+¼Fí»ý>®*_™5þ¯ë®þŒx‡ˆú3ÍoÃ9¾½»6oäó=ב¿•¿¾Í;Wm΃Y¥û,³åÙšuû§ë›Š0Í¢ä7ËoDz;Š:&ºè½ÕW÷´…•åŒÇãy I&­ÉtÛ–úÑ݇p¢"&ª›ID¼« ¯myî¸vsD¸Á{ ²b?—™p5!êF‹Í¢").ÝP“²éµP–éø!Ǫ|¬ë{ŦøQ1;i±5Úff)¼ÎÙ˜»ާ¡ûÿ·­Qó Æ½#ô“®»øß¤9â\ÖúŸy³¢æìÝÒlòòµõv×JæZcL»K´dE™Ë•ÑnÚ@¸òÁ‰D ®šŠ‹¨ç,wÈè&¤€ „ºÊ1†æRn,Ç“3'|÷­Î:fCM«„¸—QÑE ;zÓµsž3pƒŠdîy‚­ÊØÔsHñg¸è°fá 4öÑTߨ¨¢ v^ä¨*‹QWÁ&Qx‰ÎÓ;¢Ýêû/²-ß7_î¼n³æz¿Ñê]p×±àí$y[“1Ù²uUÇœÓUØØ‹`ˆ""‚"ˆ)Û]Uj+Bäö\§ŽkrÈÀ%´-°º×EátQ܈.¢*(ª¶G¢úû"ªLøÍãê¬ÿ¾åªkø ¯-®qêÎZS;ç½ØÆ{¡ï~Lá[ëþÏPR¼¿ã7ª³þø?–ž3xú«?ïƒùkðý?îñØeŽïþÏPR¼¿ã7ª³þø?–ž3xú«?ïƒùiþ§ýÃþ/û eŽïþÏPR¼¿ã7ª³þø?–ž3xú«?ïƒùiþ§ýÃþ/û eŽïþÏPR¼¿ã7ª³þø?–ž3xú«?ïƒùiþ§ýÃþ/û eŽïþÏPR¼¿ã7ª³þø?–ž3xú«?ïƒùiþ§ýÃþ/û eŽïþÏPR¼¿ã7ª³þø?–ž3xú«?ïƒùiþ§ýÃþ/û eŽïþÏPR¼¿ã7ª³þø?–ž3xú«?ïƒùiþ§ýÃþ/û eŽïþÏPR¼¿ã7ª³þø?–º÷;Ýè-²Œ.÷!dÕ$š*.Õýú‰ÿùþb/ñ‡ü_öÝ$Oÿ?¿û="ßÏvüYÿö-VT›=Ø?ñgÿصY^«¹ÿšr_ÙÑü°ÚÅùJ½i蟮«¿Íåü=d¸}û¡û{'ü5‰úê»üÞ_ÃÖK‡ßº·²Ã]ujŠR” R” R”玙ÿ¶Z¯6¶=›-gÆ•ÉLjfmiÁpQ¢$ŠMî q\BÑv(œÌi7ü‰XÅâÐö?jÈFÑ‘ZçÍ‘j9-ÉW8‘ü /¶`$bN“†£„>eU:Û7¬zÁ{y—¯V;eÉÖy–N\@x›ƒc *Hº ‡”‘;v]R±“8{€ÌëzÌ‘×IIs9¶¦¨}7è뚜Әç™u_9wî´Êü7^(ß8{'—Œ·i¼â2o^|³Ö;O©A]Ê<æ„ÌFFÀ=¨¢Š÷­Ð6Òî¬qžßo––Y%Ù'È„co ›”ìqµ}]$0pBT@ÒÛ×všÖjë‰â·käKíӲϻCÙÒΓ§$1°”Ãc„*C´•I4TÑUU;×Ü# ›‘G3ÇäÞ…ÖÞ‹¶ÖNJz :£»pí]Sjiê ŸÄí6«Oó? ¶BÖY-2åtÌ |÷ÎMÏ{§µq–‰©.ªº&«Q–^+çob²»¦7 ÆÝÉ­Í¿Èl†Q§J8ì–ëoiݽB´Ê6[š.b6›7æ{€øçŽúŒø·SÕõÞÇQÏÝ¿›ÌÛ»~ï6íu×¾º×1á[ŒÝY^À\×w v^aêžeÔ!®\DÍ䯲ZñË3/R]»„·™ŠÛÍém˜0ÌÅ—¥ÇÚ.™‰§»‚y4sUpvf'tr÷ŠÚoOGf3³à³(ÙfPImµp”EÐò¸)®ˆcØ“ºvZéOÂ0¹ðdAˆcò¢IœWØzÚɶì¢M A Ž„ê¢ª)¯™Q}uA@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@®µÃö¿òãýõÙ®µÃö¿òãýôü?ýÐý¼“þ¨©~þè~ÞIÿ TPJqçZûïöUò®¾ªqçZûïöUò®ƒèUõ³Á~Ðã_ÙäÖ°­«ŠŠÃá$E³c¨©Ù}ÂM]z†}hØ=šÏâוË>r~ä²ÜLl ÄœH¦vLE­ó°ÇÍue´Ó1U­wŸ®·‹½Û—â—IÓùZòú™æÍt×Mʺk¢BUU«?èqF,^ÌåZçÛùÝFšõ. ïÛ·ö;tÓ^úúÒ¶¿¡8gÖƒÙ¬þ-u"ãœ9•q™m‹aÅgW¸‘ÉØûÓpsPÜÓ]5NéZÕ|9fÜZm9 v§oåFÏ5öG§ïUN`Ʀo‘·ÐÖ~Ÿÿù'÷1àª?ý÷½þ¯üꋈ9ì{v_{ h2ÊT¨”Ñ®´êGApQWßoòª¡i´tÚ…©/㈠cù¦'‰ÙøiŠ\çdg)ÉHÜV™éÛr‹*ꄺhž´O£Ú^ÏÄþ^mùu‡Ç/VIÅ›mÉ ZyÞÂÊ+¨ª¨»v¡¦†ª;EJ·p¾p²Š)ÇÁ͸•S1{STLÌiZ'F/U´¨˜ÝkýIø§˜šg>ÏG÷f ñ=›}Ñ©P¬Œ­ÚEÚCoMC#yÖ‰½¢HÚ ‚!ªè¨J½»¥Jã9Úl÷‹L‹pN‰tTÅ]&Õ £ÞªwPUÕ ET^Ä+Þ«n™g³\æZ¬6 ŒˆÖùóa6V~CŒI]ò ž[Ú(÷VÔôMKEDZYòÎ Häd7K ‚ÛáÖûtÛ»ÍèºÖÀÙÂϺk½PEÓáA©§á_ š&c6bí˜ûo}›7þTÚ'£~Æ3™ñfvâÇŸÍèÛ÷0—LÎ<Œ1Üf—¦Žë­<‚ì¥}¸¦)çXèC½½åª®ã=‰ß*ÔullÃ+áEšýk±ÚñLjñ>^IÁ%°†ÛIÜý0ÄÕ¥•­[C_"¸(J*¨‹œÇ®\¿ÞcÚmV«ò%óú#+'-‰¼‚ÚïNñ´¿µ}|².È«êEZÎ>0ò|û·)ªó{Äýs²ñ²/yß–5f*븱³ÐÓ´¯Gú†}hØ=šÏâÓМ3ëFÁìÖ´¼~ä™×ûÑì5oéÇØó…+Ñþ„áŸZ6f³ø´ô' úѰ{5ŸÅ§Üƒó:ÿz=†­â}8ûp¥z?М3ëFÁìÖž„áŸZ6f³ø´ñû~g_ïG°Õ¼O§cίGú†}hØ=šÏâÓМ3ëFÁìÖž?rÌëýèö·‰ôãìy•èÿBpÏ­³YüZz†}hØ=šÏâÓÇîAù½ÃVñ>œ}8R½èNõ£`ök?‹OBpÏ­³YüZxýÈ?3¯÷£ØjÞ'Ó±ç W£ý Ã>´lÍgñièNõ£`ök?‹O¹æuþô{ [Äúqö<á]k·úª_òÿjצ= Ã>´lÍgñièNõ£`ök?‹Q?™ż¿ÞaÎbGúãìv[ùîÁÿ‹?þŪʓoç»þ,ÿû«+³ÜÿÍ9/ìèþXoâü¥^´ôO×Ußæòþ²\>ýÐý½“þÆÄýu]þo/áë‚ݳŒÚï— &Ìmܙآy{¹®ƒ#ç1O;¤ÛHºè„è©m3º¶Á¥küËŠ¶|>×i‘’ZæÚçÝ9ÄͶdë|wD!C"uÉ#ömªºF¨â*”öðå¼cÅ1¨6[¼ñylW˜!>-ÑeDa²eQ UyðáƒmhbˆŠK¶ƒcRµŸó[Œ{„K~7ô=Iiƒu¸°#}Dˆâq]G‹œ»™’Ù!2 ¡yÓG0¼1Ï3ì“8~Í%Ë,ÈÖ«”ˆ·”bÄü.[íÁ†_eçeš;¹Ø „"Ù ó¶îUÚš• €N¾F\Þ ÆåsÉݱÝшjëqZ’ð-¾$ŽRrÅ–·)¼hŠ[SºjZ&µ?'6ÛŸ 3L‹…Ö]±»iL(K2¡DPq[pÜ ÚPEiÅ GÝ­®ƒ©7¼6Í*ó•äND²C‡`{º^®åm`¯`Ì‘e#Ò•ån,…G‘‚mš Š[—TBæ¶e·v. c×ìjjßÛ:sE˜éç YΡ=«fàºÃ¢.ÐGUÅP%@³¥C3Ĉó Ø$Yñl‚êíúÐÝâ xë(ꀮ)+¯€‰7ÍŽ„›»«ã³z Š9Yi†^xÌ\jõ:K<‡$¼ÁF£ÇyUJãÂJ @øí#E`ÕCBmL)©Zå®&?rƒlŽA]æï2Ç Ùa ÖãJŽŽoqà h¤Ð«@-ÄŒ&››SŸà‡sŒÚÞ—É¡\mÛHå1 Ðvù ÏXðä´Ãk"Q# mÊqÅÅU¤-ÛHƒsR¤ñ©Ïæ83²!ܲ ‡gK`žu¸k2!³1ÆÍ¤DXQl›EÐÕAT”¼Õ?nâ\<‚fa˜KçͼÛ`ê¼Èñº™NÆGOÎé´Ã}…Âó—hêJ"¡³)Zgˆ|mµYñ _2³ßl­[.Rd ñ&6.¿!¸Èe$Xp$!Š2ë@B6ãÎ0ˆH†´×¾+Y-—G£¢õq…Ú7‰WH ˰˜¶¢ŒÅs𛀴{h¥Óº¢ÚŽÂ0Ø­gļÖãáßǽA’Z`Ýn,EˆßQ"8œWQâç.æd¶HL‚èFtÑÄLg x…•Þ3&ì7wí“Ýë®qd3—oY†ûŒ,°’óÎ5 TÅ€&›Ôd¢©hÙj~•«,\wÁoLÜ߀ëÏ1o‚W36¤ExŽ#²U¶ž'ÅÀ5mámåETÈÄ(ˆPÙ‡q[µ†õh¹Aé?ÑrzsÿVò±a4é³î¯ 6›œª*§° BΕ硳c~àý†ô̘·&ís-ÅÓ¬ˆÒž&%GU¢æ«ñ„H „V@oPAq[ée¹ÖAh<9c`—§\¾\Ÿ‹* ; d2!C¢(]J5¼•¤4]ä;Ä]¦ *•Ãç$Á!èCuÖ„Î;Ê ã*©ª( ’z—ij•S½I9Ä(lß·¿a½3-É»\ˉtë4§ˆ†ÉÕt¹¨üb!Ô\FÂΕ3jËNå“˲EƯJdœYÓˆ£$x® #€$œîaohÙpT‘àBÚHà†3…9¥ó-(îØ}ÎÐ,θ02r*°HÄÇ´nCŽsPCB]»€ÔKjŽ¡sJŸÏrqĬÌ\ÎËs»‹Ó£ÂF`+à›î Mªóœlv«†ÙuE4UM¨J˜hP°],1î–Xw;£Òç (PYl~Qœn­µtÁ±ˆ©!7˜ª íTGun‚æ• pÏ#ϳEbÇlÈ%]îmM‰b ¸kÄ$Ô¤¸‘Ô™|À=ñ¡¢Š8•døOtŸ|áf%{º?ÔO¸Y!J”îÁc®0e ¢"jJ«¢"'Р¦¥k;ÎC”Ìã9ã0 dÑí6¸ÖùN=mðÞT„ëèe!d»ÉDcj#".ê//tV–©±ì„îYÅþÈü Õ½ëlh®#RúeŽóN;$BC*Ñ‘ùÕ’EU@RÔ)©Zÿ¾I±ÂÏœÊòI·8ÅÉGÌŽÊ:ÜQ·D’{†;@…´uS@ݦ‰Þ±xçŠMÇnwˆ.sØë ɉov%ÁäYÂ6Þ•÷‰×ƒ’ $¦„B¦ Úó(6*çĨ6ìV}öeŠç­s†Ò‰p#¹ÈÀWvHÇQ!u…MŽ’êð¦›q‰ÆŒyв½Ïz¸E¼Æuز¢”Si^nHD(û¹ýÏ©y†ÇsJ®‰£ŠÚˆlÊV³Ê¸ã€ãÞ䫇65ÊÚÍØ_ç0Ç.ºòÞå¾ãn»ª¯-qÄÛ¢‚)Ì R§áeö™yXZ‰ ±uÆ•ÇqùÍFÔ5ÕRA²Œ¨ùWBß¡vÚ«ªk“¿] XìsïwGúxøÎJ”îÂ.[MŠ‘–‚Š« ¢®ˆŠ¿Bƒ»JÕ–œòí2ËœÈm™¾x6s·Ú&Œ{¨”ü˜Â ”wvºãlŠsò’’ª€wK¬O!g 1RÛlØzYÐfrÕØÎòÁÑ&ŒÛ-[u£E$ÐÑBB Í)J)J)J)J)J)J)J)J)J)J)J)J)Ju®µÿ—ï®Íu®µÿ—ï ‡áÿî‡íäŸðÕEKðÿ÷CöòOøj¢‚S‹ÿ:Ðÿ߰ʯ•uõS‹ÿ:Ðÿ߰ʯ•tDq?œ>ý§Åÿ&¶ÍjlO燿iñÀI­³_>|(üíOêí‘|™Zï á\ _ˆÙ^Íêï+Å:nDg®“Êd›.i›ÅÔë»Qæ"òôÐtõÖÄ¥~–ãäôbaáU1ŪŽ1xŸãÆ7L¶¦˜™‰Ÿ3]ñ+‡ž™q½N‹hd±ø‡ˆCžß3ŸÏdE½ ¢¢[LP—r¦š"¦«\6îF·q¾co¶ØáØ cel‡†³$¤›¤ã`°AÇIw’i¢ªÖw6΢c?x-Þïs¿õ=9 ¯ ÜÜO:ا”µNýô_Þ×§aâuŠuÇ%x‹/{é|H¯/Fm¦ú”UkGtú"zÕ;§¯²vp±³¯‚SGùqDÄGèÕ\ÄÎﶺ¦›ÛЮb-»ïý®ÃÀ;ý»¥cVû]â ›×I°q¶Ô"êŒDM®{¦Ô{vÔÑ5óW ߀ù¹aÙ ‚ÛwÇWÇìö(ÒNA<œ§­íƒdØmx{ÑÕM{låù¹ƒ¶²þ+áͺÁr•z‰. úà0bI‡)“i;¨›ÄJhœ–Õ43Mvª¢*w®l—ˆp-Wé–+mŽù“\­ðúË‹fZua6½À\Sp˜iªƒB¤á ª é¢¯VŒûŸê®14*fvÆËÓ\U;çdF%¶lˆ™´o²¾õ…»ñ»Ø×rø=—%øR%ÎÆvâ(f N«£ À´SkDPБ;—3r*«[vŸ787vï8߉ ¢d|s¯é®+sœóîóÈyqH†<]@×~œÝÊ)ðùÓjÂÌ1iØ–ÕþÜ-¿0`<ø´i,“TŒ@z¿ß»DˆiêQE®s¼!çàÇg2Ç\zã§BØÜÙR“©«iËMÚž¦$]|©ëJÑÄÏy㬠¦m1iµ3j¢ooDÕxž‘lã&ê*VÕ˜â7hs¦Ú²«ø¶öù³^piÐŒîp„•4]WOz¿Ak- TiÐØ› C2bÈl]eæM MD„“²¢¢¢¢§®¼Ö&&ÌWLŸŗDÄîsR”ª’R” R” R” R” R” R” Â<ï#&ÂÞ囪 ÏTÓq.Å욪&«êØñ¬·ë+ÿtk䮬¯ž\+ø³¿íZ²¯­{Ÿù§%ýË/ÊUëLã,ß%æ²/7;7†²–’Œ)Õº—1 ö=ýJ¿Á]f±Ël×»aÞ®vg*Y¨ôa\#aÆÝmœÛƒµ>ɪ¨"*íREµ‰ÿ‹ü’Ö+‡ßº·²Ã]…oÕï;—…Jo%½[ïØÇ.ц2Èy§9jè˜8É3ç&Z5QlUh© ô²Z¯›[­ê$i6Öí7F.øœ&ù›Y}ÇÅÇ}O<Šãf/4•MUFε7²«î?|‚–œ¢»de}»cŠ È¹8„¾äÀ:Éõæ»DR3.Æq… Äç¶M†fé[e]:Gs+Ógò®2"‰ÃB. °=EXRCl›ˆJ-ígp6„Ú¡žk‡ø‘âæD–õyfL—e ÜF2ruçx…Yeµó¸é¡j‰Ùjv©›†im´ñî7+ˆp•›…¶B9d“&ô³ÈC@·º.¼He»ºŠh°¸n^ÜÞ/¿k‹½{crŸ‹*8ûே,êf;ms4Wœ É´6sš [lïmÝ3LšõÿÌñˆ57|aŒ»‰˜Í¸äÛhœ³à‹ð®½ØÜ=†~/ã×ëÖEã6ÒµÜzî¾¢/›ckÓ´ÖÝœÙèKÏ=Ê[[ÙÀl»2Èï„™îË/mY3푦$‰‰{›Ò9€Dk¤Ós¬ÈuçU[D^[¤»O*zóšþ=™w@kX캾R_‡DR"DÕPÛBTAWESŸw91Ûrve“L»G’2a]]8Èì2ÝoÜÙ7p}ñU&H•Jáì6aÛ’Ó~½Z.Pz¿ô¤nœä?Õ¼ÊÞ.´lû«Â..ÖÇjŠ lQ^{d»ŠaP$adÎJéº\ׯ—'b8K¸ùÊj,8@軨«¶ÑµBÐ+?drêõ­—/p¡Bž»¹¬C–RZ2éµÂmµ-GE]A4UT寧LcÂ$cW¹üE›ŒÛlQŠÑofd¨-E8æà;Ӽʙy#´Ú*ÆwoS2  vË{s#táõRº‘p`S’é;+¾Ô-T v"©^üÓ—Èć N[E¥FÎÓФ(×:²N¨ hêí$4I »U½¹~5 ¬á–î´ìKœ(%H â³w{5díœPhŤmI²BÙ-þkfÍ›8Ãq9&c¼Ç^2%""]RUTAMES\ãø…Úíľ~@¶ÊîAã ¹b\êð‹‹µ±Ú¢ˆTVƒ²EÆñØVmÊlù=TéÓ9hì—y`Б @ Ž´Ð" h«©)æi@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@®µÃö¿òãýõÙ®µÃö¿òãýôü?ýÐý¼“þ¨©~þè~ÞIÿ TPJqçZûïöUò®¾ªqçZûïöUò®ƒèŽ'ó‡Ãß´ø¿à$ÖÙ­M‰üáð÷í>/ø 5¶kçÏ…©ýXu²/“+Xpÿ‡9=Å|³,¸eÒçÁ»ô|¦Ècóer˜&שAŽ(;T“g%GTO>µ³é^&Ëqr|<\:-lHÑ›ÄNËÄì¾í±ûm©¦&bgÌÖT®YOøurn4µ³Z¼OĤŸGXæ°Ö„Ùƒ¾bgÁª/e¨ËÿóˆyÎcw±Y•MÓz ‰.G—5XŠÁ6û±–Q¤ Õ ý5E5ERTZÜfkŽâ×e¶ñ&ZNºózÑmò%ºÿ)œÐY_**ëðj¿ÓÍqܦãs¶ÙäËYÖ®W]U¾DGX梓{…àó ª¦Ÿ‹ð¥w2\éœòlšš©Â¾4hí¦©§G¾éÞvÛòü›î·“¿jª¨¢g~ßìÑÐøožG³9ͳK™"'ceãÍ•›Å7¶›L[Iºï嶪‹Ë"M*á›Viˆq*Ëàâž’zUo†áÆqe®†dVyhÉêÞöOrª<)¹6ª+^¥]‰’ä–\oÃಭ¶Šºo-t]²éeYã8eÓ£Þ"¨®&-ÕåE陈´ßeTÄ옴ìݰïtSçiAá×Âã+øÔBex¢ÖY&T{›fÐF4Tm Ï–»ÐÔ„T ‚hD¡ˆ´~gù2ÓpÂ"xÿ¥ HɨkŸÐsNr»9\Ÿ#eëU¯RB•t6&Â̘²Yy“C“Q!$쨨¨¨©ë®jÏ\³ŽE4DSi‰Ù¥3Tmò¿JöãÁDïyß<>jcY°e‰bƒšic¾Zí®„#r#N$—%2Ø ‰´/¶f{¼®ˆ ®þþ‚…4lB…˜Ñc¶-2Ë € €¦‚")ÙÕ\^mñŸðèž'Óô½g$yüÛ¹{ôݳw›nºkÞ±ÙV[aÆ]€ÅÞ[Ã*âá· ,h®Ê‘!@TÍA¦DŒE5"DÑ5MU5MyyVpÊ3–MLMSDO¦jž3ÆÔÄDz#ìΚ"‰™g)XŒS$²å6ç'Øæõ,³!ȯ‰4m:ÃÍ®†Ûš!¶h¿±$EÑQ}J‹Yzäba×…\Ñ\LLo‰Ù0²&û`¥b3 ’ˈ㒲†oEl‰³žÿ(ÜÙ¼Äʤº‘ vO†»–ÛŒ{‡SÓ·,:i΢#¬jc¦ªÁá߱ޢ¿®•—xÄï}÷FtokÛeâ׋î¼^>Øâ^/gn”¥T’”¥”¥”¥”¥ WÏ.üYßö­YTl¯ž\+ø³¿íZ²¯­»Ÿù§%ýË/ÊUësDÿÅþIkÃïÝÛÙ?ᬬOü_ä–±\>ýÐý½“þë«TV~YŠÛîŒZçä¶X“äIHŒÅ~s@먶HЂ–ª{^iv¢k£€ºy“\Íi<ÛªÊx³`V)XûŽÝ°Ø6û‘H¹¨I€äñ'8¶|â’Ù¨4žv¼ÈŽ" m9ùf+oº1kŸ’ÙbO‘%"3ùÍ®>¢Ù#B Z©íy¥Ú‰®ŽéæMq–.#áwœ¶çŠCÈ­‹z·Î(E¦³Î|ÁtÕ¦ÐÔˆCqvEBiÄTòë\íyT~/Ý/Ý”¬í°àó¼IÔ–ßN²œßÉäl]Ç'fœÔÐCvª«±¬ÙU§3¼Èµ•ËMòäÍÆT©/º’#l9² mspÆEGÐÚ®ª¨7£M~º@±ØçÞîôð-ñœ•)Ý„\¶›#-WAE]~…c0ËõÎôÌ ½b·˜¡7µrÜ'Î’óÙÕT]éµKBÓ`V¹â7›Î3Û;™9Þ1X։Ф ÙÔ¶ô’eQÆATŽ‚†Ž'8•4؛™œÛr ‚aävÈÍdM6íœeHîNG si/0<¨š¢’"¦«\þ–b¾“ú-é-—Çþ¥õÍu~ó™úVíþóÍê÷½ýU«.ü2̲cKÉÊÙqº\1øö[ڵχ“‘ºBµI‚êHRV’µ@OCRLÏpl®ý•uÑä³.#3¡\ ó¯Òâ7b›O$R†Ð‹Ž²J²ÔÁìÈ  ¾qÕˆØþe–tû”—cÍŒ7AI°vÅrKn,tRÕUCMíªnÝÛ'`ˬ¨2®poøüË[s›†ÄÈW@Ù™£H dš:®8€¢’ª+k®§µ$ááÙT;å©–Ú²»i´d“o¬I)ÎŒ‰aJG&y*-òÆsª$Žõ`Q´uI¼eÇâMÏâUªEŸŒî^Ó«Û¿Hpc›£ÂQ=aŽ¢€É¹¹;ªí McZ²ÌVíc—}µä¶Yö˜{ú©Ñ§4äv6 ïpIDvŠ¡.ªš"¢¯jæ°ä6 û(õ†ùlº´­ Èp¥ƒÃ±LÁPUò©´è¢úµlÓÖ+¦¹É°ë«NÍ»r±›¦=’Èç/®&ãÃ~Ó5Éœy"#„ös´Em^Q'dÉð:|«ÊæWélå\²z;Ö¹Ë6àøM)³![h¡´bª‚ˆ†=ÔUh2y¶~Þ/’@±1z¹½>1Haè¯Âi¥ÚóL«{¤Hiwó$0(šy•ÑAÕw"pÄÏ%N“‚΃dd±ìÁ V%=5B\s8oË&²Œ¢)#º¡©Q5^—°»ŽIÄìRö탺Yì¡M¸ºÌ˜òTW‘öD$Rm"¦‰¼wóHKhë»»Ä[ni?%Æfã–¬~TK,â¸O»½ÇL¢ÊŒ­ „gQ@žýÚªŠŽÔ÷Ô–b¾“ú-é-—Çþ¥õÍu~ó™úVíþóÍê÷½ýUŒ±q ¼å·˜äÉy’ýࣂê¯$©¡Y²«Ngy‘k+–›åÉ›Œ©R_u$FÙ#n¹]a˜Óâoh9àHá+c¬ˆú Èѯ8QT$eÈl :d¾[\c³-…–Èæú¢0º8ªˆº)*¦šëZþÛåÏðéî\îvÈXø³Øìwâ‘Irj“ Ësm¾A/$\q ^TS÷1Ráʱ,û!µæÎ;nÆaÏÉq±±6ÀÞq¦6û]W:QRÔf¼ª;Ea´Ô¹ª­Ì,ß ›i+¼<¿“n\d¥µrdÙCm¥xÁM náhIÅMuA%ìš× |BÀ\äróŒdúˆÎKcmÕ…æ°Þþc£æîÊwq'dåž«å]1™Õ·4È0k|hö¬}›Ð]à͑˻Ý0Y!HÛˆ‹’ݱAÞKªíD,/Îò âÒì—»eƒ<’ê[˜e¯#$Ù ¼–[WE…äÉW6&‰7 šPlk%ÚÕ|µ³t²\á\à?»•*âóNm%Úbª‹¡"¢è¾´T¨Ë÷­Px–Æ ~2“Ã¥Y£r¾ŒGS¨2ÛŽÒ«ïm%my}œgE^f£gbµÀ±ØàY-ltð-ñ›‹­ä\¶›IUWADMUU~LõåQø¿t¿tR°O¶ÃƒÎñ'R[}:Ês'‘±wšsSA Úª®Ä Õ“#µ^o—[u®íeŸá›”1.ôˆï©8&ÛÍ {–›ERÕWz(ŽÍK¥d7[áß¡Þí­“ì×$‚èCžRÚstf$!‰“M/½ˆ¨£ë³ÛsF¸³v¿ÌµcíÙgÁo»¼r@#9-ÀqZXÂ*GÔŠ(s4 ª¨Gê©ñijë¼,òË{·c6ØŸ?›.áùNÁßnj"mh¢´Žù™B]L;§ì{†ÆÆòKçc—Ëeæ#n«&ü a!±4DU UD-WO^ŠŸF¹¯wkUŽÖõÒ÷s…l€ÆÞl©‹-7¸Sq’¢&¤¨‰ªúÕ¤ø_‰Î°ÎºÝ.p™‰.sQãíL‚}áÅUÒYöª¯‹h‚»‰H÷¢O=³]n'aºYÓìw%œÔY“ IÝøÊè«z …4TÕADݸCÄN%Ø1KMŽP]q÷¿»¶ÖäûÀD†è#Jé<•ˆôV'4n¶ú „­!j‡µ—Wj¦º6k§•tæØ$äRqÈ÷Ëcר­#Ò-ÍË’È.ÕC6‘wùú¦žaú)Z›&ážiqÌ®™D㥹ÅÕÂÑMu- Š€!ݼÞâÚ®6H2x¼Î(QÕ´E1Žô…SÕSAØÁ§mWUÚj©Œ¸f¶¨9Ü<9ØóJ|¾G-Áå'9©ÎŽ«»^Ão{^Þ²oת¨ÓRƒ„%Å9ÎÁ ,”¶ZaEpÔ GÖ‚JÙ¢*öUÓÔµÒ¹ä6 \ó®wËd(–çE™ÏÈ– ·ÉD"T@%GTBÑU ó%OÚ¸{n·ñ.ã›·s½8ôÈÌ´‘\ºË6€Ää‘’< @©!ZPØÒ‚¨").“7®9â Lfã6eË*Œìháw¾M8ñÁجÇ%53{˜cÊ#G7è¨Ö¢ ­ÆØ$ÚdÝãß-[¢´H–ܰ&Yh^C3EÚ#Ê0sU]6—©Qk‡ÒÌWÑJ}%²øÕN¹®“ßòÿMݳßù}~û·®µ”nåQîW×EÛ)³6KʲBWã_æ\ÚdÓ”¨ ãr@ ÄRVÈW@q4×5èvUÏôŸ•eñÿIûÜôÓÝ((8yšÅÉðh¹<¶@iùÏÂbà’#8a0â‚´òˆsÓÙåE]∊«ÞšD¸±žŒÌ‰,²ì§U˜àãˆ$ñ ¨/¾-€e¢wÐI}Hµ¬…Ò/˜{Vl†sÐ$1á³µ]¥‹dŽÜ{­³¸„ÕÆAÅEQA…‰[Ö]Ã;NEqÆ¥»uÈ#ÔÐZ¾N}´Žû(Š@øª;«ÈJÿw @‰D–ƒ'pÍmPs¸xs±æ”ù|Ž[‚ÊNsSWv½†Þö½½d߯UQÉÆ½Å*ŸŽo$¸0cMtÕ– ù¾ˆºë¹1ëª"h£¢®«¦N” “™œE‰iËïÎÁxì¸ÃN«’Y$#–l4®H‡°¨‡f·oך rõ*Ê“áÌIVb¿cò£<"ÅÞTø²•µFå35÷%j‹ÜPÇ]eCr– Š‚.‚Pdí5ªá`›}'ºdÍ%é„-‹}#î²ë„Z蹓$UTòè«§tLœÙqa2/L’Ìf‰ÖÙuÄSpÐWöDd"‰ëU$Dîµ?Å >6uƒÜñ™æÀë#:Ór#Iy¾Y›FF-˜s7ê­¨‰ªz´Æf<3´ä8ղƗ\‚3VéÌJiÕ¾N7 SO˜¸|ô' yj fD­*¡Š(”׌†Áfoƒw¾[-ÒîNò`1*X4ä£ÔScBJŠe©Šh:®¤ŸE+ Žf±gd·|rîVË]Ò%ÝÛ|ÉpG¸EbW1±!ÜÈà(H ‹æTÑjˆü?¹^¹1,­Bä´mÇ6UÚcrÜ‚o¶›Â膤ŒIÐuæ¡#ç·yÁóG§eÓ Ù1.®ñ”Ún¬>åÕàqȰV:‹N’EUBUˆŠ"›„VKüžèì³bépµ½’ÙZŸlŒ²çÅ9Í#±AW]-@HWq"&„‹¯t® fo…Ý'@ƒlËñù²î-ÐXreÇ%©¡b$ªbŠÛˆª:¢(þU©›6‹‘[VIJÚ2 ú<¶äI’rúÍX6´Ä:ã÷DtÔ¹#ä볇…œ:ºâ·Æd\î½d+]´í–vÒA8­0¤ÓZ¢¸@€j¢s˜ºm A >\XdN%˜±#4O>ûÎ 6Ð jFD½„QUU{"%OÝóœV ™39N2°$ïnÉWv˜…%ôCѾ¡7'¾EQBTÚ^UÑR»¹µ­ëÖ1.݈O¼{ ¶å›šhãj†Éê>GƒRhö¸‚J+¯çàù‚p“*Æmñ¬¥rÉz†M¹—™/ &ˆ‘÷Ã`Ÿ˜h †œÑA4m  Ô6O–b¸¿Oé6Ke²u;ºœÔ~nÝ7mÞI»Mîž­SèÒNYŠÆðާ%²³ã{|'™9¡ë÷mÛÈÔ½×]á¦ÝuÞ?E*K5²f™ 6G]Ʊ'Ô’ÝÞ ·—€]6Ô)ˆãŸ- æ¹m¡¨6$¤Ú¹†Ìøm‘äó›¹]BÙ.]׋i¼´Íöã#Ú¾N¸,°¨³Z%’h:m* zoNa(†Ù9qBsPNK#-ææ˜W03Aõ¨Š¸ª‘Luõ¥\Sœì’ÉKe yÖÄW IÔ}h$­š"¯eP-=KRW^Û®K·fî\ïM½3Í,Vî²Á£28Ä€/ "GT&6:¦Šhª)ªÕÃÛu¿‰wÝ»éǦFe¤ŠåÖY´'$Œ” åI‚҆ƔAItî#šÚ²{ÅÒ×<Öž¶nçà(%¤É‘n„ª¾éÕî‰å _Zª ‰9W¡–÷ט„på,÷¥Mé†+¾ «û” a8$¢J µ w&ˆ‹MSM^]&mf—&Tgš+»Ý PUUETO]a®œ]á´´ôK¤ça5-›¤ra£m‚xÕÃß Š"®šªÍ"§¤³Û}×Âï™|ɶ[ne"ö7«0t¥4s›‚F [‘¢’reÖô@E»I±5¦{ ºÛ1¼Xlò!\ï “·GÖa”F®rŸfKr\"qXÞä·^A1EDAE§“–b±¼#©Él¬øÞß æNhzýÛvò5/u×xi·]wÑJæ‘Ø#dQ±ÉËc7©M+ÑíÎK’ð&åS•wùº&žRú ZÏ5á¶G”]ž¹ÜÂÙ%Û½¡»]Æ;WÛŒÐÀ’i«qÔ|@vJآⰅÊUNZ<¢Þg%Ân÷,õ«œV-ŒA)Ñ&½,n@µ`›U`hQ¤ºHÒÉ5m µÝ‚·¾ø•Òñi“£Ÿj’€m+›‘æ w³ 5DUEWMÖžSåî\ÍIâÑ%JÏr|™øÏDŽóQmÖÔIðˆO™HD-D”ëhŠš*0Ž º:SB)FÉ,ÆYeÞkˆ"Óªà¨!ª*¨Ž„¡µTtÐUUIr‡5u®µÿ—ï®>e×ÀùÝ/é·tÝYtüýºìçr÷lÝÛ/];ì×Ë\—ÚÿË÷ÐCðÿ÷CöòOøj¢¥øû¡ûy'ü5QA)Åÿhï¿ØeWʺú©Åÿhï¿ØeWʺ¢8ŸÎ~Óâÿ€“[fµ6'ó‡Ãß´ø¿à$ÖÙ¯Ÿ>~v§õaÖȾL­aÃû?añ_,Ÿ“^¢HǤt} ŒsFžÚÁ!ôͬ“XºŽýÈ\Åî›}i³é^&Ë+Éðñpé¦&+‹Mâ&clMã„ì·ªxÚcji¼ÄðjN/X/Wž4pºE¬îð£Äñ~¦ç09ÑÆÍ±Þ¨¢›Ç¾«§} rÜw!œñ ×ñKŽG]Ó—2î²ëM0¢ô£—× ÝÌ—q!(èW ²,ŸÆùä6‹?Q»‘×ÍmŽnÝ7mÞ©®›‡]=Z§Ñ¦;“ãY'?Ñì†Ñxéöóú ­¿ÊÝ®ÝÛt×ii¯¯EúÞȳÖW’àQT`ÞŠhѽ¦?ú÷ËéG§e¯oFøUV5LíüZÏ0ŽxïˆË›ËÄ–®ˆÈØž‚Ç%‰#G$"FH—SŠŒ³‚Š‹[>ß"å„q_6Ë/¾E&So. vÈ9Ö݊¶äW‘ÈÛʦ›UW”I¯ºvZÛw+¥¶ÙÓx•Æ$.®@EÔ<-óž=v¶•7èº w]+§‘døÖ7Èô‡!´YúÜŽ¾klsvé»nõMtÜ:éêÕ>YÝQ——V ⸘´^ó4×6Ù¿J›ÎÉٳ҈ŠvÝæÁ±å©qF‘0óœak!t–*8Ôxn ¨8Ùe-ÊÚ˜‚‚¡ª‚íƒË…7¹½iËbå/å Çœð«á&ÑžþªÛzhÀ  ½¼‡±¸¥®…¥{2•±OvÙV1NNØ™´ÎÛEQoW•{z"&ûe Lïy›‰\7“€ÝǸe ëmƒˆ-µŽÜÁ¡YK îjšÉÑÒ' )KPASREÛ¥ów âݧ îÞ0¸zâñÞ´D9Òm®6ï5£&¶8Jhž×z""**ìùXÝ–VU(• ŸvƒãÄyÇL†8ùÕ¶Õv’vSABQòªéÚ¸² ÇǦ+þUc´Ê6ÑÐfuÁ¦ UQ ÉSQT×÷—èV¬çü§*§)œJ´jŠöyULì¼ÎÛÍ4Å11æÛfùwªi¼îh'¢æ×Œ¯›ÄKUó!Ä­¹%ØH%Y9Êì7 ´¶÷]ˆË(¦º“žekV̈KayRJ—3†ÚÙÍñ[åÑ´áÕÆ¥‡mîÜV%Èå0›Mc¹ÈV6  êŠ ƒìR£N†ÄØR“Cbë/2h`àj$$•=uÍ[w_‹ƒE81LGš6ZÓ\ìÙ²fk-›b"-¼ã9bç,:hĦÓTßõ¦öˆÙ÷Ï ˆØ²Œ(¢v¥+†´¥)@¥)@¥)A‚•óË…wý«VU+ç— þ,ïûV¬«ënçþiÉgGòËò•zÜÑ?ñ’ZÅpû÷CööOøk+ÿù%¬W¿t?odÿ†ºêÕ¯ó<úë]/í·B—¶·x¹>W"mÞ„ÅÞì·ÉT7·F’œ²0¥æ{¡#{µÍË‘~âÍÖûDeÜyëDH,4Åò[e!Yqã1“y£êLv¸N&ûÕGI3Oäw÷3ÙŶÅly¨mE—.T‹¡´Còp€ƒÞêy:¶¤# ´»ÕL‘¾•«<•3"†Ã–FZ²Ü®ól°%ŒÕ)%*/QÍæ±ËA—£‘´…Ó%÷=@wÌÈaÖ0Í]ÌA.cxy eÒK´¤`À„có9*#Ì5DPÑȓ̪´…†ã°ò"¿1 á—Íqàl¦ö9_î·«9Fº¢u8O°oÄuž§vº@[yЍéŠ9å­Áè2—ϳ[’’z¶Á»”‘ŽËê[‰ÖØG9M™ªžòEqu Iq ?„Ø4Ø2 Èséh˜ä7{šÛmG$У4"ò#1É6¡0ÞÖÉoQ^Xm g­yeþÑv\Î哲nŒÆ‡:KPîQb\2W 6 8ØE4Øf‹©¢¢Ÿ?—ÝìÜÁ/¨Û7«¤ëE½ ²äóåÅC2b<‡žwʦ¢€«µ5T@ZºôjÝèÇ£Më¢øß—Õûýÿª¹¼ÿ_oï|¾÷µam¼1Ä-Ö1²Äfôšåt¢WùÆp¹B@3„òœ!/)CpŠê=¨&fñ*¼Ûð¦%g„/{›n¸Ã¹Kv.®G1 ­J18!ÌŒf† ÛžæØ0Ð;¹=×,“|¼Fc …Œ½`Æâ]ÔÆŽ²^)ha)çYSéAb´dö›Š«®Ý™™xÆ<Qð›®’ä¨$“å©$÷BjJöÞ0W LMÔ)&»÷D¯ïSp·¸¢ŠHÓj´Lù™Yu²ûmð¹±®] Àƒ{‘ |(Î!²êƒFÏ‘áMÐÐq).NŇXì™ÎýnK˜ÎººOLæÝ¥<ˆ[z2ã„Ø’ `(¢(¢"‚šj騏yÙ¹½ns n­s ÜŠàñ8¤ÄW-® 6ŽŽ†((ˆH”æPX‡'Ýå%ÎðPr ¶(<ûòŸqVðôHÀF¨ãÆ#¹¡UDpö”L´²Wí6£‰Ã÷–ér»•¡¨Òä¿¥yIá)1›uc£!HÕ¤.c;BÞ™7°\ °\$K+ÓV“Ôå,«åÂKL¾.” ÒFL]ÑÕ’›IµBqLQ«(:ÅAëSéæ¯Ú§Â;Ëx˜®œ…m\xÕÝÒ –œ¤æ©èÞ­¦€ª4÷ž&Ü£Ø-³í¸ü)sdI›T•1Ç[v#ëâd"Ã}ÇYG“š@Ú"[IÄÂÝ8éЛs׿XäÙ!ÞâÈK†’‰‡ãJ”Blòö‹0%èˆé!$upÍ«§xuŠ›.6îq‰ÉÒgs¢Þ&Gxhoˆ:Û¢`Ñš!“"¨Ú’!m܈µÒw„˜£(²<ãRšä“Gq’­´Ï"KË@®me¡jd‘ÛAG<¨Š"¨+d1Ä—qXX¥Î|H“£À›1ˆÒÜ&Þy¶œB‘Ê?(öˆÉÇÛ!DqP@ælj™K¤kŠÅšãÑù%µÛ”“i÷ž}¢qA÷…½tMÄVÛ]Ú€ªSP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP+­pý¯ü¸ÿ}vk­pý¯ü¸ÿ}?ÿt?o$ÿ†ª*_‡ÿº·’ÃUœ_ùÖ‡þûý†U|«¯ªœ_ùÖ‡þûý†U|« ú#‰üáð÷í>/ø 5¶kSb8|=ûO‹þMmšùóáGçjVl‹äÊÖ?¼qFgòÈ5–$|z?GÒÈ5iÌŸLâÆ•© ïÜ£Ë^ɻԻ>•à2l¦ŒýÐý½“þë«TV¦ãsy _ ½c›“7%¨ÊPcA‰(ãÊ“¹UŽâ4Áª£h§=·£¢* ÈÛ4 Ó7ØÙ³œjqä¼Þ¢Æ”? Õ1øîÛѶVF÷†@A O«Eç¶o¢"+{•cŠp·.s\I°Ûî²rÖ/W¦s3Dœžçmí·6L h“Hˆ[„¤*8HŽ šî|WvV Æ-륞år ¥&Ë%eAV'¾Àƒª;Tˆ1<ªC¡¡&Ó1õ"†f´æYZøwzD››XyÚ3u8.?Ô›2î-¬ùÞ%¶Ë`Aq7îH\h6nÊŸËpÜw)g—x†ò’»Òz$Ç¢RÊJCEeA ".’XÓ~ß/6®eXx‹5ˆ¶‹ÓÊÇv0#^Ú7 G…Ûs¯.…ª”­Ä«®ð×Ë[“㌓§ÀMy–7"Æn{ìÇ|KMÀûM˜ƒà¨š(:$*ŠI¦„H¹š sÃÄY¬µ»Þž,VC²AXföÐ8,˜š6‚-[šx 5enMwžži.]%_,vËÛ¯ær \1%e.È ˆó'¸1ɲ‚†ˆ©¨¬ÕD‚ˆ?¥éÿƒ[¶|fæÁ‘ âxZ}¢hÉ—— 4UBïØ…QQ{¢¢×K°Û1Œv?eiæmÐZäÆiÙ.>M‚z Â"QOR"®ˆˆˆš"" jÌcÆ%pT/ úf9Ï ô”&øƒrG+JÃÚ+^ää½ Žªˆy€éG¿v~†zIÿåð¿ö‡úÇÿ×ÙÿЭÍ]+ݲ5âÖõº[“Zeí»Š×¢ºšmu’èšèIªj‹ª*¥ ³K+§ìG“s~ë3;VmG9Çúf%ÅÐ0Õï;$–؉¡m'=ÕsŽžýÙXË=‚Íhf#p-̶Qu¦^$æ<ˆé‰ºªéjdN‰™ª™&âU.õ“ ŒÊ=ËŠø[ó{Àr5Ê4d/0¥Ä—T€úfg¢9¢h*àêœÄBÃ`¼©üOÉúßLÁÛuÉÏ êüM˜Xg›¦ý#½ú%Ù[7n$_¹¶ÞÝ6$Y¬‹3#3%¡u·„m PÛ404Eý˜‰"úÑE;¥sPi> [s)3¤±—^òÝ•h6¯±Îøm³8•´UjKÒHT“ôB [Á¶tój(Œ%c1 <«7 ,V‹]¿ˆ _,> ýí\•qéÚX¯²2Ø`sd€&V^Å4lQW…¿éA£/;€Xò)QÛâÆ›—A“n@…uYn|Xjj óZ@¸ª6¨<µV´(ä¹Kš4ü÷°CŸÄhØóÖ‰3d¨K»6.½¸V+reó-®Ì%p U¶EÍPZ Ûô ™áMÎëxá¦7q¿75«ÃÖÖè…¦‚‚©¢Ž¢¨µ®\—9Þ$ß­ö©9k÷«vS˜B.O;sV÷…&h:K¬E-ÍQGU\VŽ6°)»+ ã‹ Òñr¶„Ñ“z’’§+óß|MÔ¨B ~TÐShú€Q3åOâ~OÖúfÛ®NxOWâlÀ8ªÃ<Ý7éïÑ.ÊÙ»q  òýͶöÌc~Ÿx¿ô›ÒDfxÏŠsúH6³ÓôÝ_è}œÎ³õ7¸i³w—•[ΔgºbÍ_3a–þLæ#hÆãÊ—$ “š å/«"jj+Ž‚µ”DÚBš8¢¸êÆá¬kÌ.cPò2x¯LZ"µq'žç8²‘GTw–ô-KUÕ{ê´²á¸í©—›jÓI÷YuÇ®s¸/ø 5¶kSb8|=ûO‹þMmšùóáGçjVl‹äÊÖ?â6Eñ_,Äm)Â(üØ¼Ö ÅêTdåÙÉBÑÏ¥lúW€É²Œ,,æ$Ò¢h+¹R½1mÆ1«eæMêÛZ!\åïêfG„Ûo½¼‹yŠ!¤ˆKª÷TÖ¸¦áØŒë»÷y¸­ŽMÊCdÓÒÞ·´o8ß(„Gr¢¶ª Š½Ç·«µY¬ye^…4ͨòfb*®tfi˜›LU¥¾ŠgGÍÞj¶Ù¿ãñö´ŸÍ#4ôÅ|gô'ÍGÑ éYéº=›y›¶s¹Úù÷s6ëû¾ZÁÙøÁžÇƱ<¶MÙ™å’ZòI[ŸˆÒEŠpAÇFyb.éîh+½ÃÕ{¢è©èßF1¯Hý$ôzÑãTº&úŸy³ôÝ7{Ï/¯ÕÛÕKn1[/2oVÜzÑ ç/S2<&Û}íä„[ÌQµ$B]Wº¦µŒgì×ZrH™· ~QkÛQV—åN¦<éïUý'Žxƒ’ÞMé¹ÛÕºûu>[$<²mñFMû”GI§šQV‰Sš¤:¶:7ÙI9…µm¼CâÃ;’ôy[-‘¸‚xóŒÈrÞŽaŠ (¸C(å÷æ" ¨¯©tÙ[›ÐL#¥é= Çz~Ÿ¥åxc;9<Þw/Mºlæû¦ßVï7¯½výƽ#ô“ÑëGýRè›ê}æÏÓtÝï<¾¿WoUme=ÔfülÃðh™ˆª"f)óÅ1·äÎØÝ}—ÚÆœ âo¤Óü1Îr·x‘h²e™[3 ðÜס•¶+ì· ¦ÐiÆv¸su@×TS­ïX‹n1[/2oVÜzÑ ç/S2<&Û}íä„[ÌQµ$B]Wº¦µ—¯1²ÌŸ+Ʀ¼ =µ¦"""÷™½£×ïõE©‹°éšbÓ%)Jå¬)JP)JP)JP)JP)JP`¥|òá_ÅÿjÕ•FÊùå¿‹;þÕ«*úÛ¹ÿšr_ÙÑü°àâü¥^·4Oü_ä–±\>ýÐý½“þÊÄÿÅþIj^Ãs›jƒ~‘¹ß,†@,xG4EÞªû­ŽÔѱ*êIÛMU:ê×t©™y5é‹\p÷&’ôžg6R-ÈìM¥¢s¥ .äî›û{í«Ú—\šõ¤éø{“\yñç:iáé̵ՓæJ Lt;¦„½è)©Sóo÷f2!µµ„d¢+­‚Ýz FD-55’/mW_s×Ê»P»j…»?‘­Ü# ‹pèëÐV2 ë¡ „’{ihš{ž¾d܃ß@ ¥LÚ²kÔί¨áîMnäF7›êd[‹¨1ÓFC—(ô2ײžÐ캒v¤Lšôý®tÇx{“Fz7/• Ùåv^âÑyj2”jw]ä½îåíAMJ™ôšõà~!ó=ɺž§“áÝE»¨Ù·w;^«•³_.›÷ëû;Ò^Mzb×c\=ɤ½'™Í†Ô‹r;ihœÅ)H ¹;¦Â>Þûjö ¦¥LÝrkÔ>“§áîMqçÆœé¤[‡§2×VO™(51Óº†àîš÷®i·û³ÚÚÂ2 QÖÁn=#"šš‰É¶Ž«¯¹ëå]¨]µ Tü+ýÙüˆ­náXˆë€—G^‚±•] $“ÛKDÓÜõó&äúpÚ²kÔί¨áîMnäF7›êd[‹¨1ÓFC—(ô2ײžÐ캒v ¦¥LÄɯOÚçLw‡¹4g£rùPÝ‘nWeî-–£)A6§uÞAÛÞî^Ôôšõà~!ó=ɺž§“áÝE»¨Ù·w;^«•³_.›÷ëû;ÐSR¦eäצ-pf5ÃÜšKÒyœØmH·#±6–‰ÌR”€»“ºl#íﶯj]rkÔ>“§áîMqçÆœé¤[‡§2×VO™(51Óº†àîš÷ ¦¥OͿݘȆÖÖJˆ®¶ tiè)´ÔÔNH½´u]}Ï_*íBíªþìþDV·pŒ‚,DuÀK£¯AXʃ®†‚Ií¥¢iîzù“r}‚•3jɯS:¾£‡¹5»‘Þo©‘n. ÇM\£ÐË^Ê{C²êIÚ‘2kÓö¹ÓáîMèܾT7d[•Ù{‹Eå¨ÊPM©Ýwv÷»—µ5*gÒk×ø‡Ì÷&êzžO‡uî£fÝÜíz®VÍ|ºo߯ìtïIy5é‹\p÷&’ôžg6R-ÈìM¥¢s¥ .äî›û{í«Ú‚š•3uɯPúNŸ‡¹5ÇŸs¦‘nœË]Y>d ÔÇNꃺhKÞ¹¦ßîÌdCkkÈ%DW[º4ôŒˆZjj'$^Ú:®¾ç¯•v¡vÔ()Sð¯÷gò"µ»„db#®]z ÆTt4’Om-Os×Ì›{éÃjɯS:¾£‡¹5»‘Þo©‘n. ÇM\£ÐË^Ê{C²êIÚ‚š•3&½?k1ÞäÑžËåCvE¹]—¸´^ZŒ¥Ú×yo{¹{SÒk×ø‡Ì÷&êzžO‡uî£fÝÜíz®VÍ|ºo߯ìtïAMJ™—“^˜µÁ˜×ri/Iæsaµ"ÜŽÄÚZ'1JRîNé°·¾Ú½©uɯPúNŸ‡¹5ÇŸs¦‘nœË]Y>d ÔÇNꃺhKÞ‚š•?6ÿvc"FA*"ºØ-ѧ ¤dBÓSQ9"öÑÕu÷=|«µ ¶¨Wû³ùZÝÂ2±×.޽c*ºI'¶–‰§¹ëæMÈ=ô TÍ«&½LêúŽäÖîDcy¾¦E¸ºƒ4d9rC-{)íË©'jDɯOÚçLw‡¹4g£rùPÝ‘nWeî-–£)A6§uÞAÛÞî^ÔÔ©ŸI¯^â3Ü›©êy>Ô[º›wsµê¹[5òé¿~¿±Ó½%äצ-pf5ÃÜšKÒyœØmH·#±6–‰ÌR”€»“ºl#íﶯj jTÍ×&½Cé:~ä×|`yΚE¸zs-udù’ƒS;¨né¡/zæ›»1‘ ­¬# •]lèÓÐR2!i©¨œ‘{hêºûž¾UÚ…ÛP ¥O¿ݟȊÖîEˆŽ¸ tuè+PuÐÐBI=´´M=Ï_2nAï§ «&½LêúŽäÖîDcy¾¦E¸ºƒ4d9rC-{)íË©'j jTÌLšôý®tÇx{“Fz7/• Ùåv^âÑyj2”jw]ä½îåíOI¯^â3Ü›©êy>Ô[º›wsµê¹[5òé¿~¿±Ó½5*f^Mzb×c\=ɤ½'™Í†Ô‹r;ihœÅ)H ¹;¦Â>Þûjö¥×&½Cé:~ä×|`yΚE¸zs-udù’ƒS;¨né¡/z jTüÛýÙŒˆmma¨Šë`·Fž‚‘‘ MMDä‹ÛGU×Üõò®Ô.Ú¡_îÏäEkwÈ"ÄG\º:ôŒ¨:èh!$žÚZ&žç¯™7 ÷Ð()S6¬šõ3«ê8{“[¹æú™âê tÑåÊ= µì§´;.¤©&½?k1ÞäÑžËåCvE¹]—¸´^ZŒ¥Ú×yo{¹{PSR¦}&½xˆ|Ïrn§©äøwQnê6mÝÎתål×˦ýúþÇNô—“^˜µÁ˜×ri/Iæsaµ"ÜŽÄÚZ'1JRîNé°·¾Ú½¨)©S7\šõ¤éø{“\yñç:iáé̵ՓæJ Lt;¦„½ëšmþìÆD6¶°Œ‚TEu°[£OAHÈ…¦¦¢rEí£ªëîzùWjmB‚•? ÿv"+[¸FA":à%Ñ× ¬eA×CA $öÒÑ4÷=|ɹ¾œ6¬šõ3«ê8{“[¹æú™âê tÑåÊ= µì§´;.¤¨)©S12kÓö¹ÓáîMèܾT7d[•Ù{‹Eå¨ÊPM©Ýwv÷»—µ=&½xˆ|Ïrn§©äøwQnê6mÝÎתål×˦ýúþÇNôÔ©™y5é‹\p÷&’ôžg6R-ÈìM¥¢s¥ .äî›û{í«Ú—\šõ¤éø{“\yñç:iáé̵ՓæJ Lt;¦„½è)©Sóo÷f2!µµ„d¢+­‚Ýz FD-55’/mW_s×Ê»P»j…»?‘­Ü# ‹pèëÐV2 ë¡ „’{ihš{ž¾d܃ß@ ¥LÚ²kÔί¨áîMnäF7›êd[‹¨1ÓFC—(ô2ײžÐ캒v¤Lšôý®tÇx{“Fz7/• Ùåv^âÑyj2”jw]ä½îåíAMJ™ôšõà~!ó=ɺž§“áÝE»¨Ù·w;^«•³_.›÷ëû;Ò^Mzb×c\=ɤ½'™Í†Ô‹r;ihœÅ)H ¹;¦Â>Þûjö ¦¥pÀyÉ0cÈz#ÐÝu¡3Žò‚¸Êªj JB¤ž¥ÚDš§eTï\Ô R” ë\?kÿ.?ß]šë\?kÿ.?ßAÃÿÝÛÉ?᪊—áÿî‡íäŸðÕE§þu¡ÿ¾ÿa•_*ëê§þu¡ÿ¾ÿa•_*è>ˆâ8|=ûO‹þMmšÔØŸÎ~Óâÿ€“[f¾|øQùÚŸÕ‡["ù2µÞÅHG² A›-Þ/…ô܉/[å;šÉ8\Ð6G¦ÓnƒÌTæk¨ëê­‰]H¶»l[ŒË”[tF'NÙÕÉm‘dlM¡Ì$MOjvMuÑ;%x ›&§1¨šª˜òf&Ú3x›Ï—¯¦6¦&ñd£_%ÏÆÚ²^Ùæ’ÞsKÙÚ¤^ÐX-¢Ì†ýѲT%À»‘ME¡ðž#ϲXm·„¹Ün8‘å“-w”¾Äu»–>ŽméÙuÓt…[mÂ÷G2TQ“jnl«°äÎÀ~ïâ•npÜ…*4§bÈŽ¦*€ë$&(Bº¢èº&¨º&’ù—c»Ã+–ˆÛmÙ½H%¸Hº²y¥¹Ùj¥¸ßŠˆ¡¼ÇB@]È€‚¾ƒ7ç†rl<“(¦ûm3hˆˆ™ªó{ÌÌÄULÚ*¼Zfiˆ¥UtUyªEÄþ"=‚@ÍC‰ Ÿp“!Éç×Þ¶ZPc¼üDx Ã5Up£!‡r kÛ¨æ]•_¸ÁI±2[BA½Ç¸œÆmE!Èr‰¦QMWq6¥ªv0ÜÛ·+ši[R~ŠMµØíîÛži»hÕ©ØÓ_" #\­ ûf.è¡¢nóhšê¨•Äç pW,ÖK:ãq r[Ú!å Š‹€J‹«€â£€jB櫽 ³£;æº"fœOù‘²˜›SU5ÓNú¦ó4Ïš-¯yª'¾íûºlO){’îM» žpùžh†?î'\fã”ÇɈÍÊרí)ì½QU¤ÑUD]+¹ó7Âþ£~çýýT÷ú»â=ÿõýÿÿ5]‹³œÎO1wÄn¼ÌGåy¢Ñ±p"¾Ù*‹Fð<À˜è„-ù¥iœ7½[¸¾þE>=褭Ê|—®|ÛpD‘Õ{§¼YÏòÁÆ’ñ BLê$¨Ó"[füÓ/Øç³"×âì¹ÁrÖË«EkGw'—CTýÕU ÆaY8åPVçËs‡ky¦ß·Î”¬#w\E u¡ Á¥£¢ÙhiåÕ 5ç$Á!èCuÖ„Î;Ê ã*©ª( ’z—ij•S½jna–»˜µ]x:ψŒQ/´‹m7.ï2-êò—;”à¡©š+¦%¨’骦½$²dŽþgüG›Ã»œ‹½™ÛL90\~ÞDl° ³YµiÖCT!!@"Z Ù]'®¾E²8þÙòã=)†¶¦I¡pµÓDПi4UÕwv×EÓYñ·Üñ zÝoÀfµl½ß µ5jR„㈅µbÌB„]ÕÍÎ+€]Huk‡'ÀEùØuÿ&áõ³6—nÇݵ\â² JqdÆ0tN{‚®4 Ô”B7Í_×EÞâ múŸ“Œ¼¶M‚–ç-¨N£îM«#Êȼ‚éƒ.­¶cZ¡íÍ@)G9Îe–%“B¯´Ëªë`zy„MDT…TBQTï¢z«Ypóƒ Š™…îo Y¶È•wrm²úäx J ; nÀN82î(ŠŽ’¡Æzl–ãÜ L×N&¼–€ÙÝ7FÄÓ•©¢&¤ªè¡æ×AЗ§…ä,廳m¿ôL˜®Æ™Ëæ´ìwÜaÁ.Y˜.†Ñh¢JŠš-Bð–$üjNbÌ^\ñÛ\¹Ët¶Äd­­¶H0Ⲭ3!D7t“]EÔt¬3vœÎïÂûÞ"îXß“w—s'Ü“n1‘Û¹J8 ˆû¢N¹ÃocÁÉ%R-‹ª†ì¥CpSÅdÂrÎN7ãCžpÑÈà Ø¨£P€c°*bg±½Èªjd[Ü!/ð™·\ŠÑ—XqËeêé «|†$ÇŽ¤ôsÚò¶¦ö¨‚ê0ì?RìK‹Žz€ƒfÈyÆžŒçÅçT ÛPAa6o=ÄŠ£¨ ùP—SÛwp3t€õòU‘·÷O‰™Oµ°¼è“®GpÛØðrIT„Ëbê¡»)Pܯ߯1Y0œ‡s€ÃÓøÐçœ4r8(6*(Ô ì ˜™ìor*š™÷G¥Ç]rx6ÆœÇîw¨ì:ápÞó€j‰µV=ÄV1Žˆ^éÙÐ]5]Ð65Oܲq•3ŽA²Üî²ùL¿4â«Ü^3Ýu]p…U§»4Ž#k¨¦¡»Ve|=¾¿cÈ-ob°®ÓrìFßh™*+Àäx·(à z¹)Ä}Ày…{FU7nÍAÅâÜxå/(¼p›FåÛm«í1‹s¥cC†d¨ñ:†ˆqÚC/3)ß`‰¨\ÇÉÆ^[&ÁËs–Ô'Q‰÷&Õåd^F Át‰AÆ—VÛ1÷QE-Pö棼ã¯Iˆó˨n((¾›·†ÒUAÔ”|È+¨m»Iu—10¸©˜^æðÅ›l‰Ww&Û/®G€¤ ±£°â6á<ãƒ!Þ∨á)*(Ö³I¶XsÛXp)â´\g ÊÙbym!BŒhl£$ùƒeÎdÝUQTAMÉ©è ²¸g¼äh2$3鎴ÑGeAyQ5@2B_Rn!MWº¢w­s¬œ'—1˜O©Ûc£Y3,¶Ù¨€6LJª†òbÃ$Ú÷ Ôuîçæ‚°žMÂËÅ’>éDùqŸjÞÖØß¡$› ru`°‹MÀªi»²/}`Rµ6EŒ·œñ/¸ä¼2švv­³:ѹœ'nVô¼öóG¶7Õìò¸ ²ÑSBSP³áH_Yá¦7(6=ò5µˆ÷™ tßl Âp Ð÷©¢îUT$×EÕ3,Ý =|•dmýÓâFfSíl/#O¢Ùk¦‹©0êh‹ªm囹¯O ÈYÊ,wfÛè™1]3—ÍiØï¸Ã‚\³0] ¢ÑD•4Z…ÉðØñø³+2g†ÖÌš\ø0[‡-[ˆdw^{Î:¨à ‹‘Ñd]q…òyBŸÃ±¼‚×|°ß‡·¨W7òë´›¼£›Ü d’”m6D’Iy(ä–VÕ9Œ:{TÔIÀÞuҽ͓oµ½2%¦mÝæöí‡ Ù\Ô‘j¼`‘UWRNȺjº"ên`7¬RøS.ÑïMÍKjƺ̒í¸cÝ%©6« +hüŽàê£Ó u|¤N¸£¶osdÛíoL‰i›wy½»aÃ6E×5$EÚ¯dUUÔ“².š®ˆ¡Ã‰Þâ中§#‚ÛÍĺÁfkò"8 è!Š"ª!hI®Š©¯Âµ“­'g²d’¸S…c—ÞÜÞcj7‹D§íî·y‚ë PMƒêÃÚ>­¦¡¦(5Á’púé? Çà\ñ/‹MÅЉªTûkOIW"Fo¯BŒ ¶Â£N jª„ÓÚ“bKA¶³œ…œOºäÒ`MŸ×åHf/š­jd(ီÑE%MȪ‚¨š®ˆ¹šÐ7rkî 6lŸôžç#fÃ|Ç£HUÉ´Û×'œÞ ò¹Ôq¡7ˆYMà&"+¾`<ä˜1ä=ènºÐ™ÇyA\eU5P%!RORí"MS²ªw æ¥hÎØMì’ûFá’^Y›}AŒØÏ·´ôØÌAlÕò—¥AmÀÄb¦Õò6Šáw®–l¼Îá‰tV›…¶M¾û ˜v¦-Rq@…ÆZŽ‚ë±E}±êžD’ÚmП! ›pÍmQñ‹M<Û¦÷& 1äFXL0^1t€mÓzytEÒš¼òÎv³p®ß†Ú8HóØvÌÝêãj—×3‡%‡ öœÂŸTqÂiÑ'ZÐ<Î[´Í´ÄÏ,é‡ÜíV.¸ÎÇ ˜ñÅØë¦Ì"r_Nœ‰æÞq5V´WÐõBSÚ”¥”¥”¥”¥”¥”¥º×ÚÿË÷×fº×ÚÿË÷ÐCðÿ÷CöòOøj¢¥øû¡ûy'ü5QA)Åÿhï¿ØeWʺú©Åÿhï¿ØeWʺ¢8ŸÎ~Óâÿ€“[fµ6'ó‡Ãß´ø¿à$ÖÙ¯Ÿ>~v§õaÖȾL¨lOŠøFQš\ñ;=ê#ó ò¹N ¦I©ûÛW¦Q5Wv ®ý6­\Ö"×Ùm™ç!ƒ •s½r¹È¬G7KÀ8ÞŠón èºë¢wE_ÞÒ7ïÖÉ Þ[zã2Í3#·Ìz3Ffæ¶È‚ðºãj˄ڞäM1A-WÌ*€›ƒ6Ábdù?øÕÞÑs°u=ð9 §<Ü/4௔tNݵ_ÞÒvw°ÙPm‘y÷vŠ {“NHOÎr{™2$‚«*wB숺&›Q=6o˳=9>WDM©ª&ÔíÒ¾-¦j‹L쪈³»Í£¦ºq/3Lþ6t¼n?ÜLqç.+8ô\‘¾m®uöúÜH®l©¾FHÙh†­‹j¡î¨â“².GãtÜÄ-1ðÜ3®¹ÍÇÞ½½uÑ"ˆ‹r7%§³C2tE4lvíUTÕPkfpÊÎìA¨wK½ºv!cZ®1Í’|[Vƒ&‹pˆê»5EO.Þè½I\&¶›ðçBʲÛ}Ú=œìÏ]¸ ÒåF3æ/1ÇÁÅCÜHmìQÝ¢*" ¬§¹úéòptjÛç®cdÕkÅïi ¼Mô¯² ÑÅ?ðNÞ¸‹“Ù¸Û6%Ê#ƒƒ9“oæ6RA@×qùAQ^EEk–Ž«zy÷ëå¬ußóAI²ãÒ.\5””XÜ,Ž®Êà;Dcc†LŠ¶à«‚º š/2hšßd\-Æ/·–.s\»¡ œ¬’› ƒ‰×BRCFžqU]] 7) ‰¤†¦*£S³8ŠÏ±ÉµÜïyîmž-‘‰;‹ ;Âð4ÞÆDWSÔŒL´NÊš®¹äÙWsÕÆå8{´b«EQ²'lì«|Æûù­i½íN,^Ò[¸Å6.FÌLë —†ÚgÛæ\-s%ÌGßÜ`MŽÐ)2hÊ©¨’êŠ*)¹j熹 ܳ´dÓìþõÎ:IJ?±²UVËz""î §¦ˆ©»Eî‹RüÂÜâ†Ï‰-™é1_º5"MÈf )mi¿Ó u'6ÉÆÀv¢žâQÚšìªãç ò òL:ð0âŒJ¦oTÌDSx‹^f|«íжÄÑzmMK(Š´¦&v¥+†´¥)@¥)@¥)@¥)@¥)@¥)A‚•óË…wý«VU+ç— þ,ïûV¬«ënçþiÉgGòËò•zÜÑ?ñ’ZÖùCwÆðËü» ²æKËÛ·¡DäsYdœ|Ä7è{CváGÅA SdDÿÅþIjUŽûÈš¸äsqèPrc¹½61Ç 1ƒà¦O¶` &Ø®‰ïUÚ¤‹×Vï?Ý,¦>—˜™¹6å,™Ò<)dE'f¶ÓC Z4iAÅpCVÉUWaù«Ÿ*â]»ȦÙåãùãnƒâw±Øh£CƒôÉ’¸Š£¨¾ˆØ¡<½;ª¨íRàÈ­–|× ²>Ç&…¥©1ˆ.vçíæ MIkDdÁ¶¦’AmHÉEESANyü7r{";¦SM‡ Ðq"£" :Guyòõ¨êéyvˆ†3‰y­Æ=Â%¿zƒ$´ÁºÜX‹¾¢Dq8®£ÅÎ]ÌÉl™ÐŒ<飈˜^ç™öIœ?f’å–dkUÊD[Ê1b~-vàÃ/²ó²ÍÜìBlyÛw*í É°Ûgš;¾ys¶ ÚtMàëКÕ lcHMìëÔ"Æ`‘¦Ô[%e5h…LJƒ‡ø‘âæD–õyfL—e ÜF2ruçx…Yeµó¸é¡j‰Ùjv áÄooå12Xü¼‚Ã:,å„ã3R=Ê# ²­+­ít\Nbšî"EM¨‚˜\s4{„óò\Æðôá¶Ýî0 [ÂÃN>ÜÞ‰ Ed¶´*k°Wq(ޤœÖ n.8ymÐøz‘ÏÞåÝé…nƒ!#2‰ ”# 6`Ãlª êUuÖºx~g¸bŽ·ˆ÷¬–Ç:K³£:ÛÜi¹½oUÕ4ãÇq„‘"ÚJMë¨*&Ô ¿\¾p{!Î0–ÆäcíIv[Ú í’±^VPâÈåî!&—x8â ŠŽä$ÕÓ2¹ã3­ÝÖÉsÊ2‹N¼ÑX 7‡Aµ%pô~J£"Ú+J㈄O¶¹T„9¯¸Þ°yø´ìË& ¹óã;|e‘%§V‰­¤Â´ÐlÑ4e¶×QÝ®â2.xX[ìåVlŽfa\eÚàÉ„!¸bÜ|ÄÍ\Fã‚îÕ¶4Ø š2=»žðéa¹]Ç#Ïg7ál•Šž?n¼[I¸·$Òa>‚¦dæ›Q#iÊ÷QEÓbïîÜsËt,‰ÛY[.nÄ:=ºmѱk¦‹.G+’ÁЏQÌ '8u$Ú{$™à„Vlr¬ñ3ìŒØkm»Ï‘t[g^“TÐ_u7"î]ÝÕtM+n8ºnDíЮw6¢Iã6ÖÙ5ÓJ—•É|É[W„‡§å’:Šî=áÒ…Äû¼I,dg­÷‚uÆ£ƒ³a:O¨¶®¢£L¾o¶$ГˆN¶ ¦ˆª„B+ ˜q;&Yò,]©°¬ã„\¯¶ä»ÅŒì+LäW}±eÔ’ÚxÅQÒoMí¯/pš.Ào‡°Ù¾1pbýzf4[“—HváéÖɹR¸f`váƒc`¹Üñ·lPVÝDi׈¨Ò ’[tHWÊîQß«i¡")!4¬´Ã/…wr|³ÅúI²[-“©ÝÓøŒæ£óvé»nòMÚntõjŸF¸8kd•pëÇ'8Ë’íVˆ°Ÿ6UU²6™%TEQÔWMQO*‚‚~ñ”E·A·ß•Ék˜ýÖ;èmÆAVŸ$DУª*îu @ETåón‚±—‹$[´ë{óœyÖ »Ïj©ÈqäQVÝptÔɵE E]¨J‡µL ÉÐCYîY£¼Y»X&]q÷,° Ƹ mZ &\–Ø6®¬’ é…TùzåDõ×K‡þ÷;;¸Û &S¹~€ÔXæÓ–ð‹î™8i •& sZMZUÙçD Õ· ~{3.\à ’ìÆ‡ :Ü>™Ylž&šM±ÑÄÊCŠ‹¿röÜD‰¥1 ÝN!‹ÎkVè%n´G”Mrí± [Ua¥ÄŒWÂnxœ=O6ªjAYZfíĬ’ɉáùÓÉ e$¹9"\WPr¤¢»%·@Å}û1£«®¶¢ê¸á8-¦Ä­ÍZæ? †M¦ÇcºÝ^KF59å¶D`q™P£e¸òAæMT[Žó±»©ºo$Fà eâÝÚÛÃèÙNy`f³nóàôÑnc·nXòdcºô¹m‹î¯%ÅÞÖˆ¨+åDRÌÍâí¡˜7›œ¦1sd0†®·ÉVC{yNùÜhvyIw·¿ºça½|~àýúôôiW&î“-ÅÓ¤y2™ &%F‘Ñå#„D D’8oCRq\îÙ°æm7Ç'D¾^’É~cVŽkc©‘›®j ޹¸Ýt¶8á‚ê"›Ø<²å*ÍŠÝ®ðmo]¥Á‚ô– 3¯2Q€) C¢î%DÑu_Rú«V3ÄëØpó;É¡_1œ±ë´Þf$ kÖùp䶯‹£6,‰ m€«BIæ!PEUvÙ¿[üZÇ>×ÖÍÖFr?U Þ\†7Š1³Ñv˜ë¨®‹¢¢-`!àvâƒ|¹ÜòGo°RÝ>Dòi§ˆˆê ‘›hDSžòîAß«‹©*  ‚nhý»ÅÛÈ-Ês›„r¼Fî€Ê§.A×6ÙMIÑM´'ƒ"ËeÀ´Y%ÎÆ²kX\nQ¢¾M”8$ä¶™l_Nq¢ƒ¤h*¬ó ‰|„ˆ©Ãváã÷[1@¸g¹kï¬è³:Õ(hà¬g9Ì‚6‘ù(ê!©#hf¢"D@()ÝÌp·òk5²Ù#0È! X}Ç¢·™-æiÖw|r!q¡=@UTQQÑ:YWíØîE6Ï/Èt¸ÍŽÃE¦L•ÄUEôFÅ åéÝTmGj—5ÿˆPí7I°Û°Þ®,Á’ÌS"ôèÓS^Õˆº8蛊ütBAVÑ^Æ(.(pÏá¼{“ÙÝ2œ‚hä8øXfƒ‰pQÐØÀª;«Ï—­GWKË´@F0¯Oä–øvi3ŒÉ¹Z®—y޹-òÞˆó n>›RH¼MDmXkw/TW‚ƒ†°­ØÖE“aVûU²ÞÄgY»EK|&£G•¼FÄE]#> þ”,jF{Ö®j²J‹‘_r £Œœë“­°À´ª¢Ä&7# *è;‰MÇÞUÛª+êÞãÀ–‚JRJRJRJRJRJRJR]k‡íåÇûë³]k‡íåÇûè!øû¡ûy'ü5QRü?ýÐý¼“þ¨ ”âÿδ?÷ßì2«å]}Tâÿδ?÷ßì2«å]ÑO燿iñÀI­³Z›ùÃáïÚ|_ðkl×ÏŸ ?;Sú°ëd_&V"×’Ynyçƒ7›s²òÔh[4%17QMK]SºwÇ9Æv×.!ÞõÖÕXÊT„¶Ä)Sœ/4*ËHÙ*": ¨¢*&'¹DEV©ø…èY¦[Þ.S4ƒhq&-F72? ‡˜&ŠÞ‰ªêˆªºüºŒ›À&äÇ} Ì®1Ü‘‰•†D†Û%y÷Î_Tô£2qT‘×÷µð‰¡¢/oKW˜g&§)¼bhÌU²my®©‰Ùf(´p´ÆÛÓ0¦®ûy¶ï좕ÆLz³£Ýì÷Ëd«eÒºèÔ†ØT·¤±ÜÌ—I¡a}JHj¢º"t×Ä>3·g»³Áoz[q2È+¤³ˆRqmÃx#rIHßob ÕQ"DÚJ©]9<)´âöæmÉ–n¬ŽÖÓ7 >=Žl4}­ÂÉÃe ÄÐÑt$-Nj˜ *"ÃÁ»Œža¶K•ùë]þÝ|k$ºNͽ!ùŠ®‰ ¸<ÄisyHª*‹¢_‡ƒ˜0æ1¦fi¼S·JÛi‰ªb-3jj½6Û²ªfóiDÎ,ìQEã&=1Ø6ø{ä»ì»¤ÛRYÁ¶COÄòŒÝF4P]EÕ×ziª¡ ×`YU§6Ä-ÙMŒÞ(ÛSmoa‚‰(˜}!!]QtÕSE]^÷ã:ìKœ‹Íºáwnùq¼É™$[dÑp:Uu ym(ªºZ’®º¢ÐÀ±áÅq u$³$¢6¨o3 ˜€á‘)‹,ˆ€"‘.ˆ‰þÕ%Ô—•póE89S5ßmïºõ^×±m n˜Û{ßÉÏq/å3”¥+ή)JP)JP)JP)JP)JP)JP)JPaQL£ SMGlíSÿÕZ¹yXlÔz}SÖŠ†½Ò¡%|òá_ÅÿjÖo6¼=m°HÑ;p’ðȈ¢š8h»UT»hš³ÔŸ©õ·sÿ4俳£ùaÁÅùJ½nÝŠñâ·K«QbƒPà©GW”Ô‰çQIM¨=Ñ{.íQQSE×XqFT8¸ ÅɹO£m¯`i'›7i:9wÀ‡È"Oz»ru-A Wib–ÆlÖV­Œ.áb:Š—tÜKÜ‹EUÓUU]5í­pðû÷CööOøk®­Äl¢.%ŠbwOšÎœû”%¦?n¼ÃzltxÉQ‘EØt• 𠡝®°¹Îwq\Ÿ/‘‹ñÂÆñÉcÛ#Gú× ‘³=ª}*  hâõȨ芴‰¼éA¡¸”Ç»]I9Ë0âCÈ,’ív–ˆŒÝ-€ìnÜL ãh5’JëN B1UWÞ8«ŒüÎXŽuË.y5šfó6kÜ×­MØ£F q„å]Û$Á—u’kBÚÐ Š )9èʙDz¬ÌâÿŒÝ-¡ølh³"È<Ÿê}Ù bM,Ó¦UQE4ó&„ºPIp—?±M“˜Û¥q2Ù’5fœ¯G˜ôØHâ@Hq\qâéŰVçsnˆ©µWT©›íÍð’þVM;·\Ÿ nâÑXoߘz#œ¶—¹¼âlÛÚd&>UܲÌVO‹ôÙ-•ïÝâܹÍA·vî~…îZl=wi¦Âú KVYŠÝ¬rï¶¼–Ë>ÓU:4朎ÆÁC=î (ŽÑT%ÕSDTUíA¤³[½ºóù™³ A½bWÄm©­X.%©-¿#¢"iZ}c°ÓÒÉáŽÚhƒ³UpZ ~íg‘œbO øƒeÇl+lÙÃÂÕ½Îg!ݨ€Ày†óæk´õè‰QÒZlSŠØ­Ú>A2}ûƒÕrr+3›½´ìyL qGB–Ód)¹ÕrêšÐ^3|.Íß:ï—ãöè—&¹Ð•re¦å‚»Ú"$C WQÕ4$ú)A£pŽ+ðÚ6Exâeêé‰3z•‚YåM2#Œ—¥'Xrb´„{‰ß$på©nò²…ê¹Èrë¼^!Ë€M=‹Ý¾·ØÇúNÞòEêfì YËçK^cF-IæØîêܧˆø^-•BÇ2<ŠÙi—2 ³@æÍe†ÀÛBS4T#S-´$iÞþZc™¬YÙ-ß»•²×t‰wvß2\Ç.X•ÌlH@·#rx ¢ù•4Z nÎo‘¸Êձ̑—­.ò K¶\§ÅIGQ—V3Q[q–œ|Xm—\}Äp$³åSxTuÏoÖÛÞ!:ï–æ®SdðþîÍÂÕ4¡‹VK»© æ ˆ €÷1‡ym¼Fî±UQT€Ö½e](—Hî“­±ŸæÉËIH J-Žá=6ïÛ¡(k¹Û%DC Òx­µÌo ̳[ Ì~Éh½;ãa“ÂE¾´H˲Éç™VUÑóú6Ôu%C1U®“÷Ëæ[»‹7½’vÇ”Údø­¦\Y‚õ¹$Åp¥›Ë&š4”ªè²Ø Â!=èÛ»ý ]+ÝÚÕcµ½t½Üá[ 1·›*câËMî$Üd¨‰©*"j¾µD Òw –Åpâ.+ ÙÅötÞŠUõÅ„¯¾Ê=íY>XÆQDeÄW£±¤gͽ§Âœ›Ó.cyI= ×®vÖ$IèËVõæ¶=ÕSk›ÅQUUUº-sMÍð¸V‘»ÌËñøÖâu¶F[·&A•7G€Ô¶î&ˆ\D×UBNË­tòž#áx¶U Èò+e¦\È.Í›5–l LÑPL¶vБ§{ùh#‘ïÍ9|€Hzå´ZTlí=JBÍpã¨$ꊎ®ÒCD«¹[Û“ÃóKiñŸ%Ĉp¯_¡£;²aócIWf¤˜Í£@\°e•Q=æ)Ü—¾µY‹äã~¼ä6Á²ÜàŠpÂyéJÇ.A«bê+\· ¶òÜhüè+£ˆšnBAîÇÈlr)8ä{å±ëÔV‘éæåIdj¡›H»„|áÝSO0ý ÔÖN#ØÎ+=ˆdXýó!vs³lvèóBK—jË Ei³ÞèïhÅvwÔ 5EEÒƒwëíëÆç”YrXLr4ËuÄ'íp¹œÆÊC1#1Ù¥FÄIÁÞ¤k´ÛJ³–b²|_¦Él¯x&ïåÎhº »·sô/rÓaë»M6ÐZà“E¿ã²nx ÃÉiÔdywTHÛÓjÍ»I·iµW¸ú‘u@ÆqŠë>ψu6ü‚>áIÎtdž€Ut)ËÍFÕQ ÖŒIUDp c-y•ŀǮyNoàÖ;¥’çÛŒ„ˆÄ^µ©-Y ¾ãh¬“î*#ohè°Ún­¶ñeXp ™cw7 4i…dbºÁ·ÜÔ¨ºNd¢‹¥¸UQ¥ì„¢%M’d6 jNÈï–Ë4GFAùòÂ;djЍF¨ŠZ .ž½~…Œ‡}[ÞeÃ/|P{ÈfᲚËGom‚2­>ÉíuÇàVôÕ *ˆ ¨¸…NÔˆ/~iËäâCÐ'-¢Ò£giè Rk‡@Ù'TP4uv’$…]È*ÞÝuË1[Mò%Šé’Ù`]¦lé`ÉœÓrÞJ±²$"ÜH¢š"ꨨë Ä> Z±;…š×ÖYd]®W(Q|5û ±-X“!ç´ÖÒ'v‘j£ ¢ˆšîE&m™Íœ8—šbÓ8¯ÙnÚÔˆ¼ÙvñvØþùÝSmèÚ"òe¢TyPDÔõE]gàåùTH.\½2¹ÝdJÇç\°Ût‹|1L‘GÝpmæ ;F[V”€EÍ7Í1s‹qJêùoµÊÅ2k'‰I› ©ÌÇ8îʈF/°¦ÃÎì4å<©½M5]Z >o…Þ`Ü'Z2ü~ãÚ×:{ñnLºÜPЗ{¤$¨ êZ&‚¿Ah5ž#–å0¬®SÙÞ?rf#QÖ%â,Ѹ·ÌŒ]d±˜íˆŠ6[•§U„%yä6”lø){¹ß1Y/\î¬ÞJ<ãa›Œw[}‰A±³Ü܆›i¹$d bËH$Ú‰jáô¢ñnÁzÄ­#"ÙzjTë\{„O“n Ï ®h掉¸š¶J(»OBÔt[›%ÚÕ|µ³t²\á\à?»•*âóNm%Úbª‹¡"¢è¾´T ™âmÃ;áþ…[:íüÞ¯ýÄšlÙúlø›uÔý\Ítï·DÝMbr{Ö8ÝåO8Í”¦ùbÞÇTSzmAеìŽ'ÀEë^í(4g¯ÆöI6ß0ð É,ÏB±)FlgÛÚz—ç8 ùKÕ)8Ù‹b1WryUÍcÙuÞWâ@<©žýîá ålcýoe%tÓv$€ærb/1Ó&Ë«òŠoknÙ¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥º×ÚÿË÷×fº×ÚÿË÷ÐFðé &² ݉ãÒGÞëÿ–ª9l}3ýE©Žþ¡Èœ2è5CAÄ‹ŒK¶|3ŒáOḞj’ 9c®Ÿ.š¦½ôõéꯖÕô¶_ë3aÿ‰f›_4¨>ŒàÏZØáþwH÷ 8Î:QÛ…§1^Hò6ö_Zw^Éß]?~¬|r7Öîk÷²T."൅pñÒBQ 2J‚*K¢2ÿ©º¯ï'zÜVkÕ’æã­Åœ/Hd”\Ž¢M¸*šk¨š!""®šéë®>]˜3npÄï¹N UVëÊÊqk¦-L¦÷—DÇ3eÿdd¯ß‹7õ³œýéY;ü—K=ĘPa\”JتíRF´ETøUU5ýõú5Hû®£Æˆá¢!/ì—èÖž§æOÍ©ûxF/ÒDx³[9ÏÞ”ñfþ¶sŸ½*ÓœïÆŸÝ-9ÎüiýÒÓSó'æÔý‡„bý$_‹7õ³œýéOoëg9ûÒ­9ÎüiýÒÓœïÆŸÝ-5?2~mOØxF/ÒEø³[9ÏÞ”ñfþ¶sŸ½*ÓœïÆŸÝ-9ÎüiýÒÓSó'æÔý‡„bý$_‹7õ³œýéOoëg9ûÒ­9ÎüiýÒÓœïÆŸÝ-5?2~mOØxF/ÒEø³[9ÏÞ”ñfþ¶sŸ½*ÓœïÆŸÝ-9ÎüiýÒÓSó'æÔý‡„bý$_‹7õ³œýéOoëg9ûÒ­9ÎüiýÒÓœïÆŸÝ-5?2~mOØxF/ÒEø³[9ÏÞ”ñfþ¶sŸ½*ÓœïÆŸÝ-9ÎüiýÒÓSó'æÔý‡„bý$_‹7õ³œýéOoëg9ûÒ­9ÎüiýÒÓœïÆŸÝ-5?2~mOØxF/ÒEø³[9ÏÞ”ñfþ¶sŸ½*ÓœïÆŸÝ-9ÎüiýÒÓSó'æÔý‡„bý$_‹7õ³œýéOoëg9ûÒ­9ÎüiýÒÔ×$Éo¹«rQUTÔIÁEOö**¢þòÓSó'æÔý‡„bý&5oqÓMqÌÙ5MSXÉ_Ïõ»šýì•~óªÐ(‰‚¶Š¨©XkÕúÅk’Äis•™2?Jކ]ôMWºöM}z/Ц§æOÍ©ûÅúN8bH;MÑÈ2ØzNôìËTCo­M¶º| êÕuM}Ysq³ #‹‰²Ü ­ê¢º*jŸAtUOö*×êwê£ÿÓþ•Ã^ƒŒ :p°âÔÓ"6B©™™¼¹–Bí$FšÉ¢ª•Šá÷î‡íìŸð×~º>ýÐý½“þ± ŠR” ×ðíùô~)Ý2ÆJÓ>4;vï}$6Äwå;—ÒmS!“ú^ôDPÓz¢ê›µf"¹]ãŒ,ÛœFVÝe»¬æÖM,–V‚,!hX|‰_Þ¦ánqE‘¦ÕAŠàyt6È's¶ZÇ1iížåŠ[«‰c¬¸Ø D % Ô%qQMu•cV¼1ËCV[¤üjÈýX•9Ø­H`Š6É<ÁeÅÛ µV¶*"ºHŽ/-ð²ð\øý&™áxc÷k¾Igºu=øüö t˰ӧp›Ô¢j!¹Ä¥Ï1(jínu£q¹ÇseÙWw`He»ƒãæRÝ=ÔCއÊ"Þ[ÔwyG¾ˆ‰]+d1Ä—qXX¥Î|H“£À›1ˆÒÜ&Þy¶œB‘Ê?(öˆÉÇÛ!DqP@æÆ©œozÕk¸ãn=̲9ÌXoµ!ƦŠ<×_ŽÚ#Ò"ª +ñEÕ -‚©²ÚІ¶¸\w¾ä¸½‹(“–ÔìzF2Y¶Æ]fmÍ_Ú™¾c­mh[At]<»Eäñ+݃Ñx´[,ç±û#¶NŠL§¡G&œéW˜miµb åTqU\Ô|øËÕÇ4‰Äì`س2íÞáÜÆUµ¼…ï mY• [xÌšO2®ðަ¤èŠùLv'{‹’â¶œŽ o7ë™¬Èˆàƒ †(HЍ…¡&º*¦¿ ÐkûE—‹ûÍà¼H»äçɸ3px\Hí7 ‡Äcc'ZŠz ¼»íÉCz÷lØeþ.ElbA[ËhÈ.7èòÛe&IËë5`ØVÐ[ëÝÓRäw®Î•Ùr»¿d[#.Ùlðm“YåäÒà#ÏIG]6Xkl’^Ÿo%ÒPDhtT渃OŽ^.2¸‹’Ynv¶a» )ÞuvCoÇué‚Ú“DØ .û‰)mݪ¢™ …Ä1<º×ŠÆÇMì~Úí“+-žù d²]€H&ÜGÜ@É„'PËj)¢7©ô°¬O2Æn×»ôkU±éw1¢Œ)¹|ùâ+×Kª‘œA1’ö  +!¦îq+|øµÎ6jâ|É’¯Sí8ÕÈäIžôÙÀZ¡È6Àä8¤º‘8¨ŠHš’ú’³<2Ì®Y_ˆ5tÆ&Ù^‡Ê!pãÌï ïì*4s#܈ڊ!·¡*’ „e—â»áõ§ÀpÇ}å{§¤rS¬Ùoz«¡÷=yÛýeïtøuJ¬¼Cn]›(’Þ?rÈaµuˆô.1cË–ÓÍl1”ˆšn;-謎ýÄJH£ç¦Ïï·s;•²ÆõáôtC’Ú:¢¾³4e§^Qø=ͧRPCy„ýƒ>ºÞ®ÈQqè@åÊÉ>s íȇl¸’aÈî's`¤ð.òDtt!q†ÌT(&r®ä3°{VóÕÚXÆÙ°“¾+*ÛÒ˜´­9/Æá™¼T§xÄ“¢Žš¦Nóˆf’ž¹¤x˜úµw»Û² åÍá(Ò¢5H ‰yÁçª ÞK¤ ˆÐè©Íq)áÌ‹MúVE–Ù-‹znuÂUºL{ì¹íÇI²\yÑm—›m¸ä‚@ m®"®ÝUƒ`Ù]§=…‘Þ¤³9ØðdÛåJrý.IMG‰§ PFp9PË|`ýÊìÑâÐôdè-W«ÛùÆWhvÉ ©ðm±$ÀT½<äym8ìÁg˜ Ê$cÜÉoPBÔö Tü)^Q›ôë®-loÆ`É•|8—Þ¥áVNRmŒß$QáTŒ>r&‘Üm}ч@CuÁsçøaiá÷…á— M£Ã#i6{ÿé6!¾Ã›Üœ…ãa3£È¼õ^fhíÖ i¿Ûr\ÎmÞ5±¨—{¸M€QfÎ( V#hè“@€ZFò‘¦®(ëåB,.9ÄKíӾ͹³>ÖÓn´ÈGš ÊCÜš IŠËÄA±IÁm—Cb:e˪eev7¦K¶xlÈÒJ4ˆûÜ]¤‚&žW›iàÔLWGZl¾B )©PÜcŽAj²Ýãιė ´²ÚŸ>ÃfÜ¢´è:Ø¢@D:8„ˆ„ºiªÓ;Ï%c“®ÁÈÌø– @^¯N»5Xp"’¿§NÙ£ÎéõÚdÐëËMþbP šV¹É¸—"Þµb~ÊÌ»YΉæÂv[ÎÇzI6 ‹È‘zv‹{­ª‰ÉBåš ©€ý’ä·Œç¸Ùm̱k ‚ëjaNüû%9æ!ÏnD`eZF•ø›…Å'HPDL…oҵ͇‰2®X2Ñl¶ÄºãïäWä]•(­#*½i+(‘KI,*ìçŠ'3Ì»|ý׊™ þqD ‚ä¸õ‘n-sÆSm#fìtz¸¬wKb²­’ˆÿ1òÃsRµfkqÍ#]pYò,̳xs ‘-ÖÌ…ã‰)“¶Ê4Ym4*"ã@k«N j­¡l[¬.ûé€n%¤x$ɇ%”s˜ üwÜaÔу˜Ñí%UDUTP34¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(Ö¸~×þ\¾»5Ö¸~×þ\¾‚;‡ÿ¨rç Ÿú PÔ÷ÿPä?Î?ô¡ Õ²ÿY›üKû4Úù¥_Keþ³6ø—öiµóJƒè¶ËÒ1N6ÃFáø&4[E5]‰ «þÄDUUø+mÞñxw§.&’ÑZ’Ñìy¥MtQ4ïÙUUuM{éPü ùÏÆ™6À»[‚f./‘ÇËl’äξ»µÇ4ÛmE´ìh›GÍï•IuM=]™WÁe:¬áM)®Â;£"J:öUD×EýíWýµ¥÷ˆf¿Xßû³?%a#ñWæò[ˆ:¯(|ã1}ÝåšµÌ%Rå ·®ÁLÎg‡Xòöb³|K™5Ôy ‰v• w‰’0ào!6À…KUMGEÖ¨)A'}áæ7{zØõÅÌ€µ4-Ã6²+ƒ$Úˆs[xw: áŠºZ™!*)*W0àxÊ]#\V,×É-®Ü¤›O¸Ðˆ´ó튼( èó¢n"¶ÚîÔRš”iÃÌm2)Ù¹ Æ{ḞG"¸ 3@@G¶ˆ9ÅDmKPÚº-t§p››ŽÛ1÷à\ü:ÙûtV›½Íl’+Û9‘ÌÅä'^[i°Ô…®iA†ôbÐXÇ£o„Ùp=h²ç¾ü„$>`š>᫨bzàQ£§J&ŒÆµÎ· Y®³?–RJEÊKî¸ãe¹·¹®8¦ ìÚò8(Ó(„ˆÓh4Ô Œ‹ÃB5Ð.Œ3z áøË)/󹮂â™óµ3QÑ%Se”ENS{h1[ ³ÇacöVžfÝ®Lf’ãäØ'¨Ü"%õ"*興‰¢""déA>uŒ3WsK˜Þht’í)0!XüÎJˆó Q4B2$ó*­pÀÁqø9{ùdr½x´QÓrù5ÆŒuqP’uZØ*ëŠ!·h)*Š Õ5(#-\1Ä-Ó%Éi›Ôž·ZÌëü鑿oe.s/Jhºã]È"‹ØGN˜÷ :N“Ñ8}?‚ø+˜æÎ›ÎÛ¦í7ó}Ó›úfÿ6í{ÐkÙ¼_Ï ºV©Qɹ5ªËi¾L±M·Fx%«®tš8jÑ4b¨ŽŠ.ñ^Èž~n6\xm¶à ɾÙ퓤ç‘`›Ö ’L`Èù$ëj訆ˆ¨ä}î!.ÕGM+a/ °B….3Ög¤92kÞšýÂK³–CˆËƒ(œWÅAAÚiµ‘;kÍó2Â=ôÁ?AøŠó:§º®·~þ§©ßÎçkÛ™¿vž]vö Öö¾0æWLþT f7×ZâfgŽIÏ1Ãf0"Î9ªÀíqP•• P5/ÙÖ âNc›ñƒ·Én3l³d_Ì`A’è¡-˜RWkʱ4s²*¸H†ÍOpAáG Þ¹ÁÆÙŠQæÁˆŒ¾èAjP·ËÆ"!ADÐÐ7"¦ºëÞ–NpúË·_­XÛ1.Ç$¹ÆßwHèþî`nÚ-ùÍE´M€¦j"*Dª¼VâNO`Í/Øå…«;~†9”‹óc8ÿ3’ã qÔAÐÓ~*¾]§¨žäÙ“qÿ'Çm3çÈ³ÙæõXd<¦Ö ‹tL Ž1ÞU2çìç)+vÂM£¹weóůw©×›¯Ÿ:}•Ë—z‡G™ÂR6´DMUUw"!}¬lÎpúcB̼m™ „1á_tÑ ¡ƒZ)zÄ„I÷訊…ªPk{ç³.UtÁ¤F°Ë¼±“Yl±î¡Ö£ \'UÂŒ¯·Ë4Ñ-â½¶ªƒ¼IÌC‰ã‰ÝœfSw¬ß#%’쥄#0ëlÆp”tm‰;‚"§¨EV·ð«(Rã=fzC“&±=é¯Ü$»9d0ˆŒ¸2‰Å|T4¦›P‰±¼1¸=ÃHÑÂãBDë,:-¨>ð 9«-¸ŠÛ‰·P$Nñ{Ì<¶árµdLõݧ5>ã­üÉ&ól²ÎÖžSØÛDÚBhË»›LT…[ų€Ýc]r.C`[îSï–¶‘:Ôéc'z¾â<ˆó(STlA¢Ó–Šç””ûhâ– uµ­Î÷X£%™»öT"æ˜"ˆ¸Ó†Jˆ´óNš‹n—;\EÅM–Ü98ÄäèÐy2¬ó#¼H5Úq¡0hÍâDmIwnEJÔ¹_ .8w ooÛo/^ ZmaG²:óòÕëe¾hÚ4á6ÞÙª¨š ºHº ó+`1…\rtÛÝâþË·‹›V·b¼Å™ØL°dȨäW7ws\.`©‚¨è(’)(wrÎ&Øì–iw"Üî ‹b˜ÃVÙ\Æ^uÆP—j4¤B¼. "(ºª¤c®N^uŵÁžðÞ“®æ,xƒcšsH[-¦kWÄTQL7·ßÎ:áCº¿k¾7sÈa=>ër…xçǶ“M5:)1Ê^Y<¨f뙌GÕ§ÐFÈQÒ/0¸ŠºvM^æI™c¸ôà‡u˜ón«HóÄÔ7žn#*ªˆôƒlc´»OÝPquÐ NŸ1ËþOn…Ë}¶ZZbti¯,»YË'<†¤4ƒµö¶Žö´-w*¡vQTÕp¹ï÷Ön ?'¶ ·ëBYrbÎb/E¡Ò¢È^Ý’E'ñU@TDQ ¦›˜ØádCb˜·8Ò ÖÙÚe574Ø )[än%!Mú©’y—mOÞ8€4lc²;ÔF›r•ägi’­nn+îûŒÎÑÔÁÈêÙ¶Šeª’y²®ži¿HròÈFu—œ’cMŒüû/W6ñÕ²i¸ò9 ­EW6Pu.d ÔPîGÀn±o^ÂKM¶÷&÷ 3–Ò)ü¢}d #È& 2å "6 ­)+ˆ.îéËkzét§„ÆÕyå!hT‘ÍQhº‘®‚ŠD¨(ª˜h™Ö?*×:{#z^‡–²"ŽhMp¶¤Ui %BD1Øç!iÒã ¼ç38ѡ͙&U’\XñáÅrC®ºëD؃b¤º‘&«¦ˆšªèˆª˜Æ°«ŽGf»\¯Wö^¸ß Áe ›3°£¤xî8ûl¿çMÂ'Ý›# í—/@]Ä¡ÝÉx›c´âMdQbÜç´Wx–·£ ¶PIŽo<Ø/5ŽRºÙ 8Ž˜ ¹¹´+§X·fV o7a¼Ú&¿3–)ƒt)QŸŽ §4ÅAã-ˆÎä‰ÍÊéÃaá_…ck4yÖX]}Ê%á µÙzH‘§F6HXGKÜK¥¹´$%.r£‰Ìo¸Þ#œ_ &•šÙdI‹m› \|Å¡) Ê¢‚$ÈQ˜%#"UyÅ ´h. K‹> yÐd³*$–…æeÄ6ÝMDÄ“± ¢¢¢§eE¬(d°ÏS /5-¸/I8ïZ¤¾‚L'1™$ˆÉˆsQ Gzêà÷¤ŠáÅ‚V)Xñ‰—n.Ú`µe5XA¡@PS= b¾eE]UtLe×Ê¥q.Ý•FÈì¬@ƒèaË3®:L>qäW’H¦õ(É´¹z ê'¦´øßðü†òv‹MÍçeƒªÁ#°$2ÚHFÑÒÌp:ÜLkÌÜ)°´¦Ÿ.,2'N’ÌX‘š'Ÿ}çh5#"^Â(ˆªª½‘µý“‡÷øPlA+'¶H—jÊeß¹­YÍ¶Ý I+œÆÅJ%¬ÇT\ܨ(€Š¢©Yå–H¹.+vÇ'8óq.°^„ù²¨Ž: ¢ªŠˆZéª*kð-2&uʵΞÈÞ—¡å¬ˆ…cšD\- iZGÈ P‘ AEv9ßÈZ=<Æ|Åú©¼¾§¤é|6O]ÏÛ¿•Òrúü¿uÛË×—îšlóWJáŠä—ÌbékÉ2ˆRž™ÊF†©cÃlÐö:É:Ἧ¹¼ ê µäR2ŸµðËv+w±Æ“‰{¤æ§¿oLX<(žˆV"¼¾ä Ó‚. #Í‘©Ÿ)¶^yŒÇµÁ¸$©²‚w3Ä+l™R—–[]ݦÉÐåš 9¸S–j€{IQ‚¸³àÇK2¢Ih^aö\CmÐ$ÔLI;ª***vTZÖW®EŸfÇ£›¸ýÂ]•©l´»O·€Ip0f74‘mZÙDp‘¶‘[]ý‰65ŠÜÍžÇÑ·33q›^Smê ()älD²z€DSÔˆ‰¢Pc&æXì<ˆl/Ìxeó[dÜof^sN[.È@VZt··µ³1"æ7¢/07LسÉ×Î*\ñè¼è–ëLâ·¼Ó¸Ôó)&1åq&ùX`uqĔЄ• ;·\TÌŠcíÞÙjËr»Â½OˆP”¤”¨½?+”ÿ1^Ž>á&Œ—Ý41Ü;;¸Ž9³e¹-ÒeöÙ2Ý{œ³F#V³eæ a€Eu_11F£Ž¾æ*¤ªH¢žZ ýîéËkzét§„ÆÕyå!hT‘ÍQhº‘®‚ŠD¨(ª˜ /ðûÆ:õú Íî…¦™{ÝàHaçîÌl¸ã¢éy[PG Cq"¥w8`••àWÌbÁ›s·h.Â)NÆWÅ tT PÃRØ¥§™ETTM~û€Ýo‰WI9 zM¶ÖÙ‹vÒAIÖù‡-—ÓW•y$㊄λ”tDtW½v0«}­‹„ÛŒØí¿%!¶Ë–©C#©Rm:±Ëæ£ÄŽ‹J(f ®¨"’SY./V¶nV×ùÑ܈ª$$¢``H„$„$ˆBB¢HŠŠ• ?¿¥öÕ|<žØSšÈ ùtÒÎhÔ“èR¶Èõ ¬ G×U"uUÅBì)Ë^í¯†–-Ò åÖ¬)hn÷ …½fÙÀÊ(KR ¿tSÔÍQLv! †£ªj¡ÝÊ®×ûVs‰Æ&ØV[Ìç-ò#¹ ÖH˜Ã•!‘ÔpØ­ª÷%ÝêDîM̱ØyØ_˜ðËæ¶É¸0Þ(̼朶]€¬´éookfbEÌoD^`nÃeØuþmÇ,“ÀA½»oR1UáÆ±{ÍŽìëldL®<³¥Ï#oÒI=%×p]¦¢M#8B Ód›[E2D>dÆ%™XÆEãÖ»¦> È€À©&`;´¹³ÝÐ¥Hæ²Á«¾æ…«éµÑ&·†W›­óY—²„sع\ ºpØ&Zs¦šôt13QÜ-"ª)u^õÃÅŒ´°ÌI.Gyé'E·ÇVà¿,Z7Þ‘Ãm”R! Ê[5qP[B1®c9V0!Ýò;-ÒÒfL@‹fv+¢ü™' ×yIqqv¢é·R]ww‰8õ×'°G·Z.ð­o3r‡9^•¥ tσàÖÕ5q¦õ]Ëå܈ˆª„!Œg3HXÕëÍÅáuœÜ`–¸Â3 ¥(FÜdÔŠ)ñl ãDR$4B-frLÆÇÎ7¹œ·G›b¦TÇ UÄYlÔ„U S°+nÛÌov3=Ær¬’Áj·DÈì°&$ɯ;fuñ}øÏ²ûjØ$V\iu'D´BEMÊŸŒåRsŒ{& ŽÊ߆Û\ƒ2:Ù.§œë Û.¥9ZôÍ "£›5-UÍS@ÉÍ̱ØyØ_˜ðËæ¶É¸0Þ(̼朶]€¬´éookfbEÌoD^`nÆco|šÂ¥j\o‹®òÔÍîózºÏ‰b\møî3v‰ÖX©¿Ëe|ªÙ¼§¹;'­ùâ¬~?âºðW¡ž?Ìé®êzþ“‘¦ížÿÉêÓw}û;ÐoŠV±•Ƭr³­× 5ú%þÖ¥l¦Û%Ù|tUP×Ru4ØZèª(XÞ"ñnùd¶â’íUá§®™[V9Ñ.±A§[E"E•^3q·D·/j ÁJƒãæu;‡.ºe–ë?‰È±°1™' \wÌ„@„B›CRUTO*jc{ŒÐ1ËVæ[ äíÏnÞw‘‰¦P–nŠÐ4 %ÄÔ„OW5EQUEJ µJÖ0øÛŠH¿•¤í×èâ1âç1ØƒÓ ä×–;ÕIQ$EU\FÐK¹ˆñVVÓìX®U.Ù5¹gl¸ŒFºiËÔH¹š°¦¢[:„e M5EíA°©Z‡¼y•rÆ0{Ö^Ë6¾7y~YG·+¬¸Ì'ÖÉ$+" **n’"m"ÏMüÐx•¾Å*ëu±d9VX—Ö#:Ìsv\‹ë|·ˆC0Ô\ - TEÑt ÁJÕwŽ;áVˆ÷U¹G¼C™m¸Ä€P¤Çt¥¶®ÇsW [h ±3^q¶@€Hb ­æ%}ô‚Úì²³^,ï3%ÈÏD¹Æå:¦¨¨¤¦Š&Ù*/eÕ3¥(­mÅž!ÎÂîqØb,g™u‘5Slˆ·)|‰¦ƒ\œ!ή¹Ü›ƒ„Ì(Ñ-âß9’G œÜ‚ƒçTDòªª¯ï&õE—ÆK8Sù1çlZT3©Ü8áuÓ,·YüNDm€™ˆ´É8Hã¾d""Ú’ª¢ySS ®3@Æš+…r“*ÄÜ#É'B‚Ó1­k0ýÄ ²’ㄨ*;¹*òzÕö(PÛT¨;_íwL–U¦Ù䓡ĽŽMÚ<1r+3ŒLDÕáU@WU¾Z*¦¥·ÍX{wð©v\Zòì{Ä89$kœ¨î½§jÞ$O“¨KêQ@CUýê ©J‰á§àg5"ßa¿A‹"M‰.S-i ©(‹Ì8ãbàèM ‰¯½ìZM߸ÓgƳÛí‚òÕÊSpî¶«S Á´ïq·f°ã¢ªHñéîkØEÐP\UÖƒmR¦ø}™Zó[lùvæ&DzÛq~Ù>$°v4–KCl”€»(ª(&„õÕoã=y¶øëvl’>4q¦Êbüär­D"GIyDn5ª¨£ÀÚ–ÕDÔ´ ‘JÔ«ÇÜ:5ž]Êóm¿Y…› ve0ÓŽL†óˆÓfß%ÓUp›®(*)¢®ˆ„£ƒÇ>Ÿ7ËmË$ÆY·Ülö«<¢ìžüÉ­“.)¸Œö&ËG…µÔLÐ…H7eE5yºÛË]¡3>ù—˂ԩŒíFÛÙ*dИ+šŒuD1ÑM UÛ´²<>Ì­y­¶|»s"=m¸¿lŸX ;K%¡¶J@]”U“BNúê‰ÇÉé1–Ù¹6Wº‹ëÞK½·¯ˆ»M²ó±¼7ûÞÞdд^úh¡5+ˆ\AÛe’Ó áv—&î&äXà¶Õ¶KpÜ^SÓXOutÕÔTuU±QokŠŠíwdݳ‹þqƒË±^¬¶VnØŒÉïBz9Üã‹¼Ø ^èÌ–íäp{"s7#©²šÁÃlV »Ù,·˜¤½1#ȶ´±[}×\tÕ–I 'œUD4"îªÏ^Ç®û%•á>9ë%F$¹‘bȄܠa÷v8|Ä>S.èHÚ™wuD 7ïˆ7|êöíúlËdœ’ X¹q~ltQ “"Â)€ó QAt1õÞk6g•‘[6ŲÝò †=`‘IÈãØíŒÞ¥4ŒÈ¸·KÀ›QÝDÜCäʺyGè%6=›^ÞÁÇ/¾Þq›| ž6åþIå‘mhZmÅæ6ŽªÍ… Ûä.¢(ƒî©Ë`÷;¾e# ¸™ŠBs¥b³2ÞÀµ!§œ} “(iÅRBW5UTòÔ# ¶ú5aâ+Ö+f(Ͷã}‚õÚEÊ,Fnj²ðˆé £„ê‘-HtTqt%]É\Íp÷fÖå­¬n›¹‘FÔÂ4{‰¢-Cn‹©0ʯnêÓkûÐ5Î'À?3òŒëœqq¨l¼Ü[ƒñÛ|Ìûèƒf"àó#´º*hŠžô‰Îí•Ün÷ë]‡ ¸[#»-«›®ÎŸÙ-‚À’ÌW™FEÆKrºòù÷èˆÒè$†„<žðvÏ ¹wáŒ2ä–"‰xrÕ×ÞZµ_3ŽëêMu]kžu§;µ³†30c–¾…û´\¶Å+p+N€:€Öºƒ¨²„µå¢*8Z®ä ŒÉø±”7ŠÛòìvÔÌÈ‹FÉ.ö”„.9—AÇYÊeIt[aâh‰Aw/7åÝrƒ¥•»N1›Ø"òŸ·“ÒÜ|ä@wžÓüÑ<³9j<³U?2#šÓ¼cÖ Ìë|뽎Ùq—mwùQ×"ž¢»Ú"EP-@WQÑuú XËŽ'€õ–ßƱž§¦[M»ŸüŽKšÅkQ×g+«cÛfþÚkA«8Om˜Π̶®Z6X7{üK´ë¶FS"NŽÜ·™ŠË1Ýu×Ð oÝUÐZq\æ%Ppû9̯·Æí3Z„Q¯6IKëÂR4wA²`AÎBMy×ÒSg´Ö9Šš*’òö1‰â¸¿QèÎ5e²u;z‚Ô~nÝvîØ)»MŦ¾­WèÒ'ŠÛîÝ cVX“äIYoJb @머*éª{^u7*룆šù—PÒHýþoði™ÛÈ/O;ŒÜìl¾ÁÇ’†“aŽ:ù¸ñ/Pob©Í-Eyˆ5¸0+ÍÖâwë]ì¡=>ÇrH.ʆÁ0Ôј’†-š· È@TS-TµMÛE3‡¸ η¬Áñ™t”—3›j`ú‡Ó~޹¨ùÍ9Žy—Uó—~ë\Ë Êeé›U²ÎíÚtv¦I‹AÉr}i]VÇq’ºö›‹]ÕUQ5Z grëÆ+áþŽøÏUÍæ{À¹[viú’Ÿ^å÷û=]·wÛMb˜õÂÇ|ˆý3Òc6óŒèârÈ…GG²®žpú"+ª'N^Oh‹—ÁÄÞ9©vÉQÀ`>mM®†Jò´;UE‘QM´õ˜ë™ Ó±±l™|ÔPѦT=Ô¶¨ª÷ÕW¯ÌåïØ’²žX»Š ˆºK;EIÉ5$ mmlC˜š+H(ª:êæåR­³éž-õ`>÷{ñ)éž-õ`>÷{ñ(5Ü !#ݬ6Ëœkô ÔÆY…“ˆ„‚ÛŒó^Bæ:ª¤þ¨¤›v¢{'áÍó&Æ­qïyŸW}µdLßáLð°­8Ѫ¶ÇN&†L wUÅUܦ©åªŸLño«÷»ß‰OLño«÷»ß‰AˆâÆæ{‰ø+××£¹1¸àw'£ƒ®´ën),UK—ßnÔE.É¢iQüNàk™|ÜÑØ9ƒÖˆù{võžÊÛÁõGa®èJC£j:j ¡o-ûw6[Ó<[êÀ}î÷âSÓ<[êÀ}î÷âPkð›ÿÒ'¦ß¨?û_Ó?ýçõ+1žß0–Ë \Ϩŭ]_MoXïó'¨|Œ·ò÷–œ gUTUÕjÔúg‹}X½ÞüJzg‹}X½ÞüJ Mó:2Ì|~Õ'4˜ýŠÅó ,A‚Ø:±î ¸ªî«îÃÍ]OnÂ@FÁP”øo?™ÚUï‘n»f¬”¡Æ`ã0_‹hVÛj,i-ÈÞãdù+Ž´#¨ &¾UÕ4Ûþ™âßVïw¿ž™âßVïw¿‚BãÂû‘eY¶ClÊÙŠæTå¹]‹"ÐܨÊÌfI—#¾^êÛ¢K®Õh‡¶„©ª+‡Ü0¼`Øm·dzg¢¶ÅùnR…`óY8„J§€uÃ&_*ïÞf…¼µU5Ò¿Ó<[êÀ}î÷âSÓ<[êÀ}î÷âPc½ÍþÈ?º/ÿS3þ­úëÿ÷þÿ÷ªÂ°™âßVïw¿ž™âßVïw¿‚g‰¼9;½´N]׈Àˆò³Î#4'<¨(I¢"ªª¿CD^údxMÃÆx~ÅÜFûâ‹qäþÔVy|µ?þb×]ÿ½ê¬¯¦x·Õ€ûÝïħ¦x·Õ€ûÝïÄ©¼îmF[“Å^Dù­¿[Æl'æ‹Ã[¶â~âŸÑ\Žw/–ð;ï7ºìÓÖž½z£øÁ?J¯Yk­dÝ ¯1ðߌP9¯§DI·§w˜"ÖáEÞÛš.«ðè›Ó<[êÀ}î÷âSÓ<[êÀ}î÷âT5RØÇo˜ÎKt‘dÌúK×"zÿ6…ÊuÇAÆ:‚5eLP»4Ž"&Ô4_5M✑\±"çs'â­ÛsHè74OBW IàW5RPVÉ:žÍôÏú°{½ø”ôÏú°{½ø”/ád¬G9¼f7 ‰™× ´&£ÌjßoX1¥<%¸¥¼×5Á'Ëÿ0#b›œ]ºš­crN øÇ¦f^“r:œŠË{éz Û|=—åoæ&¼Îf»´ò馅®µ°}3ž¬Þï~%=3ž¬Þï~%;†8O¡^”¤úÿÈ¥ÞÿHår9û=Ëßí»}÷muõ%Jâ| ¹Y0ÒÀ7yÌ0a\a(öÖÛ–èK#TW¤¶ŽÞ[m"–ŠH¨›VïÓ<[êÀ}î÷âSÓ<[êÀ}î÷âPji¿™ãÆlR­ùaÏy1H˜Ä [zqeˆï‹àã¢n¸®š›mëµ[M¨HˆŠHCÍ~à—ëÅö÷zËY¸\.—[UØBEœ » ·VœeNk.˜ nAAÜn.â-µsÉìVèåÌž­±4H£’°çtUÓn©ëOZw×µcý?ľ«öîþ-ç†8€á–íÜëk®Išì·<:Òͺ0)è‚ ²Òz„DGq‘šéÜ•4DÍðû÷CööOøkṉˌ֡BžoÈutÎê¿ÕìˆÕW²"jµ‘á÷î‡íìŸðÐTV¿âk¹¥xƒÖŒ2õ{h¹ÂKðäBÚP¦FåŠ?!²SBy²^ÛvªèJ©¶¶Cq+‰ö.NˆÞGæ Éi]Ië6mŠ û¢#N¾º@Š$¢ÓN*¡ .Ú ›ž1|¹æ§wAÍF…£v>é Åm’UÅe±u9b‹Y¦xb²8FýŽF2ô¦™È"]áÚ/ o'–]`že¶£D`ä ’‰+êN«® SaÙ)d¤]ñÜë=!ØÏ[V$HŒ7x9D 0l¶Óš8ªÀêú4¨†¶ –Þk‡í¶ÛÒçtÇïVõµÉjÆ$¹ ¾L‡FÍå4L¹¼Ü^{m‰ª­ `!úÏ™X.6n\íÖ+u¢ã˜6ÙÆÉ¥’üGs}@6º3Ĩi¡¶[·ƒ},ÏÌ2X-μâ,ÍÈnX´X°eÈêÞ/xÑõ~P“Žohw»QÈü×"ü* îÛ8­î.GŽÂ¾AmæãÌk˜ê&äOWeQ1íØÀˆ 4 "\“â~•ÅJmXãÝtyХƸZ£ÛGâ³Ê'ÙûÚLê}‘FÌYP6ÔE^T'v·f°r™ë×KÕ« Ÿs‘|ŽPy÷(oŒ¶˜ŠÛ®¼©4£¢ƒ¨ ˆÆ$-­!îÊPi>ðîù‡Hõî-Íüª.-èì;vNüW­Œ$À†ª%DZ"ssÄ Š/ÿ62ÅÂû£ø†yŠ7`›Ó‘Y9ø×¦-LµàÚ;£äÕ¹9I¹]Ž¢â9¬RÜ¢€Êÿ¥“¹âËr“ŠZmüzÃŒ1,Û”V·ÇBB‡"9›Ì°þÓiyÌ¢¢«€¶‚€ŽÜðn=Þp/)¶3rœ‘"IuƒåÃ9.9’〠›m j›yj(›PUlé@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@¥)@®µÃö¿òãýõÙ®µÃö¿òãýôÜ?ýCÿ8dÿÐj†§¸ú‡!þpÉÿ Õ ­—úÌØâ_Ù¦×Í*ú[/õ™°ÿÄ¿³M¯šTDqÖÏ þncÙä×öv6Q­ Ü|‚åpœ¸ùÞœxnn0Ђz¶¶Lª’.©¦¦*»KTÕüÆ?[Øœ…1d¢’"è(¦„£ôGO߯ľ!Çs’‘ì„ Œo¦«1Lœ?YùtNë¢*"hˆˆ¨«©/bÙmQ1Ãu¸EüünоO6ŸãÇØÊÜìSZŸ}‚Ì|ª/†Å—%™S®Ê Èm…DSHþ}w 脉¢ûäì´ÉpÛÜlšd;vM"5¸'Ç·Ev|ÇHÞë"æÏrÓMÞµANéÝ{Ô¬,¿¦¿d÷OßãÑeÇåó´äsËvºíómú&¿½TRø¬ræN7ms£Ç•=©¨n¥ÍA‘h›75 $]Q~V‰ÃË(ª4bño¿gõú¯¨Û>o©ý±âyÚÆ€©ñ¯ž<í¬›zirŽN–ª(«»QTÕSþµøÅq›ÔÌŸ…v¿Ë;màd(?z’¡2'¼5TTÔHQ5DQT_)/®º˜§È ómQåë¡VI¹\`šPÔ‹¶íÛ•UWMè×9ŸøG¢¿èž£ýgí½GQ¯ÿ*íÛ¯ïëûÕ5Ó–yq¾öݯOµÕäÌÏñãÒìuŒ†ïãpLÈPmÂÙI“"K»E\- :*ªëêMEÕS¶¹UÇ2–¯¯ÙgåQ`ÍncpÚm냤O›ˆŠ "D€¨£æ$ó"zõDè[²[ =ÒÍÇqX7Ai%o¹‚º„Ñ¡‚#ˆžùK]SEM;æŠrÎãr¸%³¦‘*{SZ8’•¥÷&ö/.ÕWšÑTSfª¥¢¦îÖâNU5N…;<Û½¿Òú¬ÂžõhÒ«o×éþÎæ‡dS¯¶ØÙî\(òß”Ï%»†’ §EC!õŠ¢8ˆ:j¤©ª¢mE$æÇ1÷çØ1iÄYtò¼>ëRÞ‡5E¨b/rÐÉ9EÛEUîIïW¿Ðê1Å8íÞ \—æ SŽ%9u“©8Ѝ ©!ªèªš ®Š*ZGÞ/þ#ŠXl]'+Â:vækÍæ¸‡ïtò馞µ×÷ª¨ÃÊñ*ò¼Ÿ³ô¸Mþþ3šðh›ú=j ¶è­ËÃ38·E‚òɨóÌœ(ÀæÞf£«hºh[7îDTí¯j¢,M@0ÆWr|+¸ªM&ÇžŠˆ*¤àŠ %¯mU 4]Ê=µÀ[¸ÓYXµ­þ-glÃyL8ÙnÕÑob ¾ªI©ª’/›ËæíÆÇ„mªÃÖ0rZãåcY$…®û EMt_2*®ª‰¢‚jŠ®Œ²|ßÃñÿ©¦¬óÿ#%o#°ËŽÌ«Ô‡‚TVåÆy™N(:Ѧ¢H…¡'©SBD^Þ¯RÖ+ÆoUgýð-wrÛÿøGèN›Ã­lÛÿLßÌåëçõ&šëêï§Ñ¬tpb­Ó­Jæ4§Fv;þ3xú«?ïƒùiã7ª³þø?–º«tcƒ )âïøÍãê¬ÿ¾å§ŒÞ>ªÏûàþZèRš1ÀÒž.ÿŒÞ>ªÏûàþZxÍãê¬ÿ¾å®…)£ )âïøÍãê¬ÿ¾å§ŒÞ>ªÏûàþZèRš1ÀÒž.ÿŒÞ>ªÏûàþZëÜïw ¶Ê0»Ü…“TT’h¨»W÷낺×oõT¿äþÕ¬k¦4e1TÝê\ƒç×þ,ßû+¿œŒ¨Ö&.°üÒ-òb·Ù9¸:¯½Ô —]ÕÛ½t2ÌñR@çm"ÑÕtDEU_ ˆš­r?™óRL['Dõ x©>ê¿2zå-¦C2âuQÏ{/Gæ6Z*j*ˆ¨º/RÖ?‡ßº·²ÃX^¾óCsµ-¶ã*nÁê£j’ê­ëÝ5_Z’ª¢üvÍpû÷CööOøh**38ì—Ë¢”ûäÛgÆKDèŒ:Èâ8 Î$bæh)u`›=¦k»È*6u¬ø›š[q>#b?ˆp¬ñ¦I6®6‰’a¶ÒÆéfÉ%0ç¯6Ð!! *¢šªêöYñŽ!½Þx™5›•â4{cVë‹ööBåÈCA`\#æI7$󺉦͠˜ÏD.ÁÅKAÛ Z®ò¯· ­¸Ü‘Hº±ök3š¯Ë"TuQ´NnÝéµ" ßšrù8ô Ëh´¨ÙÚz”…šáÇP6IÕ ]¤†‰!Wr ··i_e‹÷¤]¤mˆB-2›Ñ¢F‘ MÄ<]†-Ù½è3L˜<Èõ’á„Z0æß1k¹*>Õõ{€nBÜæù˜y•ÆOíVw³~žípÉ&Ûåcb‘áÁŒ’eñl›YÎn,}ÆdB¡(Õ´&ˆ;¼#ʯ·lâãnŸ”B¿ÆXξc@¼=ÁtZy¤e§`!ž‘Ÿ)/(Ñ\dÕР‰Ç³p»Ñ¹äÈöÖ˜;b™Dl,^YÆ•m¢ 6[!ç"¢—g…U+aÙYïÒ.÷ÌšÓpº^ÒåS®Âñ„a±kàÀCג惴Çi6K££¨ìÊPc1{$\zÌݲ#<(믺óÊŠãï<á:ó¥µPÃ3TE-DQ2t¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥º×ÚÿË÷×fº×ÚÿË÷ÐGpÿõCüá“ÿAªžáÿê‡ùÃ'þƒT4¶_ë3aÿ‰f›_4«él¿ÖfÃÿþÍ6¾iP}áè˜g›pDÀ¬˜Â’jŠŠÌŽËYh9?æs›t‹nŽÆ¯KêÊ9˜§Š$O¼Ž“h‘FÜÑíܲVÜA"P$LW~søyö›ü ŠÓX¦&W»Ï¸alÉí—8–È9uµçáÃ}%ÛÂCn·ÔMŽîÃŽJo hÉ"&àìéó(ªªwJ&˜íÝrË88…öùfÃì÷6»'5ÜeȮˌH¨Û­£‘Љ’$DW„Hq*'zÅžiÂøñ8upŸÂû+v_hŸt—!Ûh‰[$Dæ«OŠù‘PP‘‡rW6 ÀëÄ[Îß}, 2p…ÅBãëpºH-â¢n"H&Úe”TÑT´1NËÒÉ8)Ÿ_qlÛ&ጴö5ݬ†-¼þÕê-a ’CVõ=\p—hmAD5 Ç=ò¾2 x)ædŸ™þ/[ͰÙË£Œ“]åbn¹º"ïýÞØëÍ‹îeú 74šŸÎ:§dÿ™ÎÒUºCj=¤)6`6›nP‰0òº-¨rIoW·rÅ\m…LQp¿1L«ê…—õ¤ô+ôçW|gé¤ÿó{ïþZÖVåY ߊ<*r²ÇÛmÃí×i.#¥Ëéâ4Dó ‰îšrLQ²@ßÌÞMß+ã&…<ÓÄxé?£ž u¾%á<ßGÿBuÛ7ô½W+‘ÎÓ·/~íÞ]7v­›qó<ÚðÉw¼SƲ¹ìF AobȬû’Éqc’1¡.¨Ž")j~˜ ¹Ÿ˜¦Ué?Oâ_ù¤úuÖóêýæ½'OËÙïü¼Þw½ól×ËKWî¬þdi|!re–þV÷ß›£¾úKGÛS-¢k¨M©¨ªŠ"h„‚ˆ®ù_4)à¡»^øiœPîV;WZj+²ÉÌdÑ»zJ]IgÉÛ‹Tò¾ ¨ŠŠ¨‰X\Û-àÕ"´cöœ3½Üfe1qÙmšÆïé†&¬¨¼Lîm]A\5$EÅå<Ër¿*¼Ý‡¸³—xiLaË­Ê4{N»H; ?FÐMÇó¢’hºW4Þ f‰‘ C»cçe&·›:¯ —´SeD ½ ¹#»ÑUYÙ´Ýò¾2hSÁØÇs~ Iº]-yXæÇÉ.Vs)jEq(BÚ‘Œ¹¢‚×r"TÞJ‰\ÓrÎkÃë‹°^íÙ«RbéÌŠÛØùSj0»Ëz¸;…XDÜâ WÁLªÏÆ+~c&áe8²ìŠöm¶óªê±pŽÓLŠ"¶‰¼IµÜšè‰¦Š^ªàÂ8%šcï =Û+ÖíÜ$ ŠñÆ0ŸÌDtHɽÀ¼¥@Có'04BW|¯ŒšðP±“~g—ùÄݳä·l¦ä–8£[PõêJ3ªÎÉ;U#]U5DÖ¤ò¾*p$Ɉaö ¶ã*t(M³ÂbÃg)77Ítc…±Ü€MÕ!PÙ¨žÞŽ;ùœò;f*ãÅÉ+m¢÷ Ýv~ïquÇh:ÛJR<1ÚïºíGÔ”SDÝçK›— .¥ÃNbÖÒ²Ä{½Únw=Š@ÓÝ8P­m HÍÃ"Ôw*ª’¢­;å|dЧƒ±çÁ#¼ÇÇçcø›‚œ6§ù6Uv\y{ÊÌV’u;¢¨š¯m¨^ZZoŸ™öé8bÅ·b`.5)æ%H±¤x’‚*é Ø’ãBËÂÞŠ¤­™" ){ÔU©ìÓ„|E¾åå{~ý íáÙtlŠÎ³/2Ùk§i[A·”Al˜gjs% ’¢j>èJ=Ì…¹õ“…pŠMËgðÛ´º¶¿6OTn«&Œ*6 mGT‰9nÚ‚Š:îG|¯Œšðw¢dß™æE®uÈí˜Ô(Э­Ý\[†8°ÉÈnÐ} y‘'€‹AEm R!îB‹AˆAáVõÆ=—°»c Ôèr±ä‰&2˜!‚›/4®¢J:‹¢®‹¦¾Ã¸'‘ÚìÒ:û6 *édŠ·i—Û §ÅGAâm¶#©4 -6Ù()"è;ë€Ø>UƒÇ¾C½Þ9–wä¶¶;2\]¸ ¥m[ .¶Ù*è‚ÚŽ€-§r"%§|¯ŒšðSüϰ/¬ŒkÙL~->gØÖF5ì¦?©iNù_4)àšùŸ`_Yײ˜üZ|ϰ/¬ŒkÙL~-RÒò¾2hSÁ5ó>À¾²1¯e1ø´ùŸ`_Yײ˜üZ¥¥;å|dЧ‚kæ}}dc^Êcñió>À¾²1¯e1øµKJwÊøÉ¡O-Ëçû þ,ßÁ­SõOügü’¦._?Øgñfþ j†°dĵrœïÜä“Xd7‘¤Ñz¼ƒ¹tõ®‰¢kêï§­kŸ‡ßº·²ÃXØŸ®«¿Íåü=d¸}û¡û{'ü4¥($ßâ>=‘„LÈ­ïLµ…‰Ylž9â *{‰ß ’†Ýtu¥MwS‡Ù¬\–7K8­–ü…·f‹ö–n !ÁÓˆO¢M)´º€¦«§®¸/vlª.q3 ÆFÊÿŠ[bÛ¤Å÷[èzwd˜¼-€Q¯TZ¶¦ÏéH›üú„ž5ƒæ–×±÷ŽÉ‰Gv>erÈ.‡êò“¡($€è½(ó–£æÚŠ‘›Mȇîa±¢e˜¬É£ÄÉl²·Én$ÖÚœÑgÜs”ÛN" dâ( ®Š¥Ù^ÕÍä6 – ÎÇ/–ËÌFÝVMøÂCbhˆª @ªˆZ®ž½>i˜|Èà`WlzVǧ&,þ5o™7#¸ÈÁái³{”à“p‡kBjË@êìp5=‹c×[^píÓÃl°-21»u»¥…$—£~+²K”Ør„I²tÔ9h›4_(S]îÖ«+Zo÷¼j,,r5±ùm]íóLgÌ8Íì)¹*ˆ@ÓŠ¤Jȇ½DD5-WnÒÂñ¾äs±Ûû1Ù+¾ ˜²`3’Ͷ6‹!c™ËŒß0Ä >ÔmÐ÷.Õ ÖSÄ|/Ê¡c™El´Ë™Ù sf²Ã`m‚!)š*©–ÎÚ4ï-dý,Å~¹l¿ë/ ý\×êï¥}÷éßý?}ûÕ0x•îÁ茼Z-–sØý‘Û'E&SУ“Nt«Ì6È4Ú±P rª8ª®j>|eç Í ë£ËžÕÒïn¿H–䇢ʆô`FÝ÷'{¢º¤Ú<^G´æNçpÂ};p¼ñ&AçÍf‘q†ÛPͦžŽûâ‚"ñl–'Ì3^n¨Š ²¶ÏØ/3®mËeÆ]µÞLö"Ë\Šz’ltEU@µM EÔWè-LãÜÒÕ’æ³^µcîD»Î+…¸‚î÷0Œ"ÆŒÓnŠÆÑ±$¼ŒHÔ¶ ž›— Ã<ÿŠ³Ã¶N>ÃV ~m¢èåÕ7N)Œ†“’<Â3Œ¤h[Ò]Æ©æ {rêÍ­ç,¡Mž›yLL–Qš?2k¹ÁmÅUMuTDí®©†Çó;TÎYó«Ü˜V lYΔÉb-Fç€:[Sß *éªéÛ¾•™½¹ufÖó–HP¦ÏM¼¦&K(Í™5Üà¶âŽƒª¦€ºª"v×TÖxÖ%Ÿ@Âð»l»v3×á]7D-^&®[ ¿ Îa¬TXú Èâh.ꣵv뺂æñ›ávh6ù×|¿·D¹5΀ü«“-7(4ÞÑ"èbºŽ©¡'ÑJÆqˆ®bo2æYzöã;"ºátE?”ˆN6Ò¨’‘íTÑWR!EÓv©?3ÊÚÆ­Ñ"ÉfQu×óí¬ß¥Ú[W¦J9"£20+Æ,ói@EÔs˜H5Œù˜åQq±ˆŽÙd3rÄcb3e;)ÖÊ+’KmËm´h‘Ó6å)« M mGM zÍo,Å\¾1bo%²ÚG3‘g4²呃›[ݹv“N‰h•³Eî+¢Õ–b·k仯%²Ï»CßÕA9§$1°{bJC´•uDÑU{Ö¥Æ ë™æyµŽ3˜ÈÆ—Z®7g£^JDˆ¯Ånp™Q”Cv!³Ì#mQQÅÙ«j @æ •»Ä›~G*K3Z¶Ýݜ̇oÒÐ^eÖÞaH;Ë2GAHVvÅ|Èž_±Y¸&Gâ-ú}Š4ÙnÚ–ìÓn¸ÄGHu9|Õ@! Í’Ž„†Þª;µKûUÚÕvêü.ç G$âJéŸ9†›Ú=ª»LuMEtTÕ5JÖy&Ÿ9‚exE‘¬dà]üTš›2sàë{¯¸ M *rŠJª›Ñ”MÍÜÕ`¿Û3Ù×9|~Ùe{·[cÇ·Î7 9Æ'Í@[VkôI€ª*. íMê 4¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(Ö¸~×þ\¾»5Ö¸~×þ\¾‚;‡ÿ¨rç Ÿú PÔ÷ÿPä?Î?ô¡ Õ²ÿY›üKû4Úù¥_Keþ³6ø—öiµóJƒè÷~søyö›ü Ч›ÇL6;8Ã-Óo3¦ëLIðxLÃy:’zt6ÔÝUH—h¢’ Ç~søyö›ü ŠÀp…¹ÝƒæâÖ.›Ñ_H|kô[Òõ[ùô×~íSÞnÓáÒƒißøÁ`µÎ½Œ{6Axµã΃7ÛŶ(=Üj¾è»ÑÇ ¡ÐÝFAÅlWÍ¢ê‰LÖo…ºólµ—ãî:ë±™läÊ‘œSŽ›»“ Š@ž³DÔuJÔ0¬ï±ñG ³ã=9¹Lð3؈ 4ðI.jr7¢´.óQ4ÕÁ¾³Žñk!½åWVmöÛrë$-åm¼ð3¸•£GiP‰7'}¥¢’¨PY¿4)7°e7AaÆ/Ó–;ÕˤÈ÷º¦Ž#r ÆÇs&›ÈSMUP{ÕÌ®!`1cœ‰9Æ2Ã-ò7¸åÕç¶®³ª©hœÆÅLó *¦¨šÖŒÂx ðþeßɬdfQ­·5‡m“zqøŒÌs©æ ó–(ž×EPÑi–¨Z­sãÜ›ƒIàÞQ`Œ¹;ƒ$2x°Ž3äH“jš¸ë€ˆ<®'w|¨h€Š> ß2òÌVx2%ä¶XìÜ#9.ŽÎhFK ·ÍqÖÕKCmPÔ“TAî«§zÉÀ—|ó ÉfTI- Ì>ˈmºš‰‰'bEEENÊ‹^&>dX>õºùºNo…8ó­Ëse]·/ˆ;4d8ÙjD!¹ ¡4綃¸GkÕœ ýd0?æÝ»û3tt¥(¥(¥(¥(¥(¥(¥(¥(¥(!n_?Øgñfþ j†§®_?Øgñfþ j†‚z'ëªïóyY.~è~ÞÉÿ cb~º®ÿ7—ðõ’á÷î‡íìŸðÐTR” ×7&Èc‰.â°±Kœø‘'G6c¥¸M¼óm8„;#”~P í“¶Bˆâ .ÌîâÑÊrè,ι½ÛE²z1*àü–ÚyéqZL‘¡Tm´ØEDM+37 ÇfdC~~Å/šÛÆØÌxc<ózrÞv:2룱½®-½9a·¦<ÆÃ*w'2º<è8뉑\³@2pV¹ÜµhIÃÑ¥ˆ†Hƒ¢ªPOÃâ«ÌzHîIŠÍ´3e¶Ê¹£{œêf?飵æš4B4w$2нÝ&•ÜÏ ³+–Wâ ]1‰¶W¡òˆ\8ó;Â{ûJÈÅAw"6¢ˆmèJ¤¨=ÛV‰Ûz±bÓÎfTc†±¥ÈvTvc›ã²Ó¤@Ã$ˆ(­6" €£  'wÆ-ïPVàšãÒv£ÒgO~lƒ×`+¯™žÁR5@ݵÍQH•Cƒ=¿ÊÆìÌ\"ÛÙžNÎ –ì•eä8,2º —œãH]µS$C!FÎg5â÷fÉo“г/!¹µ&AE„ôÙq™eƒlIy‘á8ò’óÙÓV{š)¢ ï­Ì1‹FYkjÛ{ §©-J‹=ø„޶[›-ì˜í$BDUÑD½bŠœŒ:Çuƒo‹-.hVö¹1¥G»JbX‚ ¡ImÁxĶ’ª‘jBŠ'uËs‰9Æ(Î7`„.øÜ»“°/sŽ †Ýa¦×Pc¼­›bþݨª„®9»NX©w&g×X¾+ÌÇ¡/…åЬí¹™‰]/.HûsN±­Í.ˆ›OGDÖ‚ñ†ã·86øg è-[ZäÂ+\Ç­îGgAEd9#K°5mj«`ªš€éӛÌ>KÂilz#BÓm¤h3äD«`€Óœ†L[æ¶ Ú»w‡)¥l6‡›*¹ßïvëf9e6lÒ\‡!é—[#/°‚‘@›z>òRE'QÄ':\7âüªE­n8σF¿[_»Y®» ·òE“1’Áˆ »Ø EGBÍAÁqø7KÝÊ!^š“|æ,õKäÕ#0wkF‚"m  ŠŠ"%,x3eôÃbÍgÑØÏD¶n¹Is”ÃÛw´[œ^h{›{EÍÈjÔÐ)«YâùUÕ¾ã7Ƙñkæq%%B2i37:3’Á‚qöQ™å¡^è`†B*é’lÊ“‡‚[,zk¯?n9É6®C®D‘nÕQ¦žhÄ€C˜ëAËå¢0¢Ò¢¢˜Bâ—̆ÓÃ+1Ïâ,¦\ý²{Žä’ŠD]o«„mÒmNP¨¢£„Þà ¤Š„¢—YNGƒ•BÇ,V+eÂ\è.ÍdæÝ+h `úƒª,ˆû4EBBwU ƒÌàŸÃBu­‹cÌÞ‚RX4Åþs(¯îlù¥±äR>cBîâÕyªnk¼Ì‹»'Çä_-·Jô³ìñ†,7Rù4tiIEÄGt{q)«ˆJæÁß»DÐ56Y˜æ°2ü‹s,›™u²’{1"« ¬•ÕÆU²÷9êã‚®ªGyLˆAP¬Ç‰·%ÎËL~ýT™P­scʘQÞ’ËNº¼ñC³ £NCèXTVži Õ!Aѽ¨ ( ŠƒIü:ÅfN‘1È÷6]yÒy-âdvØx—SymÑ=Os ‘£®¡*£‡¸#18źXeݯëÖñ‰½|q¸’’J¨5,§E!oRäω¢öE>p®‚nÖpË2¹e~ ÕÓ›ez(…Ã0#¼'¿°¨ÑÌŒTr#j(†Þ„ªJ‚·p··œb‹bÚãDhå¾m8ÁÆb)´ëdj‚³8íq 5m Mڒ汌bÑŽõn ®='j=&t÷æÈ1vºù™ì#T ÛQLÕ‰TÝ÷Ñ|ý“t½_„[dNéù›9¼¦ˆönÑvë·Mt]5õ-kùlåXÇ1m²DÜžë+¸Œò›vv,'ßnL#YN6ªê5æyñi³Qæƒh‚Т·´çÄ‹> ˆ3£3*$–‰—Øy´6ÝMW± ¢ª*/eE©+mÉár¯;ÕÎíl¶»ibâ—YqÜ8§¨ª¸€ò `ÆÍÕ•sF®ðFÀ÷4FC(jj„ˆ÷¾#'Ïß¼ò’’ºæàVÞ,¥¥d¼üå¡éàËŽ*ŒG¢8ÃN(k¯•Дϑ6ˆ«Z):kU•?eÆ[·äO^˜ô²,Û­àù…8w?tpˆÍ×OEqÍSz4Â)7¼¨(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(Ö¸~×þ\¾»5Ö¸~×þ\¾‚;‡ÿ¨rç Ÿú PÔ÷ÿPä?Î?ô¡ Õ²ÿY›üKû4Úù¥_Keþ³6ø—öiµóJƒè÷~søyö›ü ŠßU¡xsóŸÃÏ´Ø¿àdVºán®|Ä}#ÁæŸQù+ëíD¼ÖýBÔíãÜ”Ï$]윶ö'•4_Ö6ÊlX^1/&ɧt˜{:‰£sfó("’êD)Ù×ô+ÆvLG0sµs‡d×VC†×k]ž4»<™Ç í×;ÈDiÊ1ò9‚lD-Dæân Ä9®m#ÄòÛîG+ƵÉ̘ Œ€$ð'@• z„"&u%#Qb s@=¿Xl')±f˜ÄL›×Úfoéär½û €¼¦ˆI¡ 'tOWЯ/ÍÆrè¹ÙOÈ/›“yËj`€æŠÛÊâv!TRUQÕبâ¶JPØïóÂq¨™>/zjÒ˜EÖLHÄäÝÝ‹<îOòc Å”M$¹´UUDÔC×ù8pã(Î#áY5¢Ë{¿Æ¶•Òl§uå·äEÛ®Õó‚šwT¬ÍyçÀûe«„Ü2ȹÞ/Cw±LË kM˜0µXéÕ¹MïÕ–Ã]†ä-š¦Mœ~ëÖûÝ¿ɧ½qÉUÑoÐÉ™¶­Y%çźD%aÈHÑ£k×Oô”mTÕD=MJRJRJRJRJRJRJR‚åóý†oàÖ¨jzåóý†oàÖ¨h'¢~º®ÿ7—ðõ’á÷î‡íìŸðÖ6'ëªïóyY.~è~ÞÉÿ E)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)Ju®µÿ—ï®Íu®µÿ—ï Žáÿê‡ùÃ'þƒT5=ÃÿÔ9ó†Oý¨h5l¿ÖfÃÿþÍ6¾iWÒ٬͇þ%ýšm|Ò ú=ßœþ}¦Åÿ"·Õh^üçðóí6/ø£püë4{‡Xĸ9Æ[pºIŲǯÉ"SƱ™a— êyEDA’Š¥½I®f€{²•äkCWû"ðzñ›qS-“ŽeðNNA&]ààCŠmÛÔá4/¶@Mï-Ú¹«æÖòETí39âØ5¦F[–e¶²^\çZ_k˜Ë³g„Ã%Ú:È.‘%"BVÛ%„îÈÌÉ25'dwËeš#Ž£ üùa²5ET#TE-—O^ˆ¿B“r,tr9—Ëdk)4ÛÃqvXe4@4uWnÒÜ:.º.äÓ×^yÄ®ÞÄ>gA¹ò¬¸m4½ÙýÑÛ¼¯*ºj¨ËÎ0…î„¢®"(¢’¢¥CK°”Œ+–ãW8XõÓ ö4ÓR_†ØÚ$’“fË"B¬ ¨‘6»Dň6£Š¤²\ß H3'._¤H-Gz[ërg—DV ÂÝ  ˆ¨ «¢*i®µÓ&ðØà»88…‰F]]}/1Õ°3BP-ú!6jˆ½Õ´õ-yó@ýNÿþ'ÿðëfþi(ÙSv>³t¼Ùe]‹‰6®–LkS¬GkQu{% Èô-Utp5EDMª›”.qŒ—ƒ8¤„ë.g‰B‰|»ÉŸ%õ¿´mÉšHÚ¾¨F⢄Ҩˆ(CÙ7w¹²]­WË[7K%ÎÎû¹R¡¾/4æÒQ]¦*¨º*.‹ëEJѼZ•|ݸ!Æl¾?þŸýáNôŸ©ASõýç—ôï}æõykfp—ô×zm막Ͼ^å^ç¾ù sß$ÔZmHÔE4#5×U׺")J)J)J)J)J)J)J)J[—ÏöüY¿ƒZ¡©ë—ÏöüY¿ƒZ¡ ž‰úê»üÞ_Ã×òÃX2X7è9ŽÙyˆÞC!àb|@Øš"" ¢¢„I¯¯E_£_ØŸ®«¿Íåü=d¸}û¡û{'ü4©|=ÀfZàÚåàøÌˆþgEÛSÔnans– :âDUÑUî´ºð÷»tž)ƒã3ú8Á/SjaÎC®Æƒp®ÐWAM5]©©A?7ÂæäC‘ÌÄ1ù7¡u·†âíµ“’†ÞˆލîÜ;GE×TÚšz© ÂádE‘ÃÄ1ø×¢uÇŠâÕµ’¦æ¨f® îÜ[‹U×Uܺúê‚”6®à6ž¯Âð|fYâJé­L7Ï`ôÞÑíÜ¢j+ª.‰ªR'pv¹Ö¸˜>3×ÖÅjÔÀµ'–[›æ‡´•U5EÑ{¥SR‚gæ{€øzŒøOSÕô>ÇOÏÛ³›ËÛ·~ß.í5Ó¶ºR_p–¸6¹x>3"¿™ÑEvÔÁ5˜[œå‚ޏ‘tDÕ{­SR‚fëÃÜíÒx¦ŒÏèãH½M©‡9 » »@u]4DÕtJ曄asr!Èæbü›ÐºÛÃqvÚÉÉCoDGTwn£¢ëªmM=UAJ øXF ",Ž!ƽ®ÇOÏÛ³›ËÛ·~ß.í5Ó¶ºU5(&eð÷™kƒk—ƒã2 [ùWmLQ¹…¹ÎX(è‰WDMWºÒëÃÜíÒx¦ŒÏèãH½M©‡9 » »@u]4DÕtJ¦¥üÜ# ›‘G3ÇäÞ…ÖÞ‹¶ÖNJz :£»pí]Sjiê¤,# …‘GÇã^‰×+‹VÖBJ›š¡šºƒ»qn-W]Wrëëª PLÚ¸{€Úz¿ Áñ˜dc‰+¦µ0ß=ƒÓ{G´Sp‰¨®¨º&©Hœ=ÀaÚçZâ`øÌx_[«SÔžYno˜:ÒUTÕEî•MJ Ÿ™îà~è>3á=OWÐøS??nÎo/nÝû|»´×NÚéI|=ÀfZàÚåàøÌˆþgEÛSÔnans– :âDUÑUîµMJ ›¯p·Iâ˜>3?£Œ"õ6¦ä0ìh7 íÕtÑUÑ+šn…Íȇ#™ˆcòoBëo ÅÛk'% ½ QݸvŽ‹®©µ4õU('áa\,ˆ²8x†?ôN¸ñ\Z¶²TÜÕ ÕÔÛ‹qjºê»—_]pÚ¸{€Úz¿ Áñ˜dc‰+¦µ0ß=ƒÓ{G´Sp‰¨®¨º&©TÔ ™‰ÃÜ®u®&ŒÇpåõ±Zµ0-Iå–æù€ƒ¡í%UMQt^éO™îà~è>3á=OWÐøS??nÎo/nÝû|»´×NÚéTÔ ™—ÃÜe® ®^ŒÈoætQ]µ0MFæç9`£ n$E]5^ëK¯p·Iâ˜>3?£Œ"õ6¦ä0ìh7 íÕtÑUÑ*š”ópŒ.nD9ÌC“z[xn.ÛY9(mè€hêŽíôt]uM©§ª°Œ.DY3×ÖÅjÔÀµ'–[›æ‡´•U5EÑ{¥>g¸ø øÏ„õ=_CáLtüý»9¼½»wíòîÓ];k¥SR‚f_p–¸6¹x>3"¿™ÑEvÔÁ5˜[œå‚ޏ‘tDÕ{­.¼=ÀnÝ'Š`øÌþŽ0D‹ÔÚ˜sÀk± Ü+´UÐSDMWDªjPOÍÂ0¹¹äs1 ~Mè]mḻmdä¡·¢£ª;·ÑÑuÕ6¦žªBÂ0¸Ydpñ ~5èq⸵md$©¹ª«¨;·âÕuÕw.¾º ¥Í«‡¸ §«ð¼ÖF8’ºkS óØ=7´{E7hšŠê‹¢j”‰ÃÜ®u®&ŒÇpåõ±Zµ0-Iå–æù€ƒ¡í%UMQt^éTÔ ™ùžà>à^ƒã>Ôõ}…1Óóöìæòöíß·Ë»Mtí®”—ÃÜe® ®^ŒÈoætQ]µ0MFæç9`£ n$E]5^ëTÔ ™ºð÷»tž)ƒã3ú8Á/SjaÎC®Æƒp®ÐWAM5]¹¦á\܈r9˜†?&ô.¶ðÜ]¶²rPÛÑÑÕÛ‡hèºê›SOUPR‚~…ÂÈ‹#‡ˆcñ¯DëÅ«k!%MÍPÍ]Aݸ·«®«¹uõ× «‡¸ §«ð¼ÖF8’ºkS óØ=7´{E7hšŠê‹¢j•MJ ˜œ=ÀaÚçZâ`øÌx_[«SÔžYno˜:ÒUTÕEî”ùžà>à^ƒã>Ôõ}…1Óóöìæòöíß·Ë»Mtí®•MJ ™|=ÀfZàÚåàøÌˆþgEÛSÔnans– :âDUÑUî´ºð÷»tž)ƒã3ú8Á/SjaÎC®Æƒp®ÐWAM5]©©A?7ÂæäC‘ÌÄ1ù7¡u·†âíµ“’†ÞˆލîÜ;GE×TÚšz© ÂádE‘ÃÄ1ø×¢uÇŠâÕµ’¦æ¨f® îÜ[‹U×Uܺúê‚”6®à6ž¯Âð|fYâJé­L7Ï`ôÞÑíÜ¢j+ª.‰ªR'pv¹Ö¸˜>3×ÖÅjÔÀµ'–[›æ‡´•U5EÑ{¥SR‚gæ{€øzŒøOSÕô>ÇOÏÛ³›ËÛ·~ß.í5Ó¶ºR_p–¸6¹x>3"¿™ÑEvÔÁ5˜[œå‚ޏ‘tDÕ{­SRƒ†H° ǃ31bFhYa†[@m Ð@E;¢"""vDJæ¥(¥(Ö¸~×þ\¾»5Ö¸~×þ\¾ƒ^ã3.‘­÷Á´ÙººY ¥1Á¡Dê¥ëUUõ"}tí¯{Å3?¬Sö›%~øhzDÞå;Ü”Õ>òé\ù½Ît[xÛ ~í7ºòóvyGSgvè=eJó5Ï5âŇ'‚’²Ío(/Xò^‚+;mfrßéPU¥ä¬gƒašœÝGÞ¦¼öèá\ýôÞåÌ·â8dHÒv„8:<ãoÍc1¸¶›‰ÉS-­ ’ù•Ó4¯ cyuß2Éÿ3¾y•ä} ÎÆÈ sÀ 3 8é)‚ ó[GWTDUm^õÍù•r|¢Ãfà®>V_±e-_Úv ÄHéÃtG5ÞN©©¢ªªÅFÐ…\ õÍ)J)J[—ÏöüY¿ƒZ¡©ë—ÏöüY¿ƒZ¡ ž‰úê»üÞ_Ã×{y¸Ë~GÔ›æ^¤˜j+æQ5O£Ý?ô®ŒO×Ußæòþ±¶§rÛÔ»³‘òÂÌ[“Ñ›k¢mÍU4îº/©tÿÒƒaõñ>7ú«òS¯‰ñ¿Õ_’£›³fÎwäôOY-µ½þuÖ±GÉo ¹Äâ Ý3†`Ù¥´Ý´”uÓ]t]S^úiª'ª‚믉ñ¿Õ_’|Oþªü•#àÙ_Ù ý’ßËOÊþÈgì–þZ î¾'ÆÿU~Juñ>7ú«òTƒed3öK-<+û!Ÿ²[ùh+ºøŸýUù)×Äøßê¯ÉR> •ýÏÙ-ü´ðl¯ì†~Éoå ®ëâ|oõWä§_㪿%Hø6WöC?d·òÓÁ²¿²û%¿–‚»¯‰ñ¿Õ_’|Oþªü•#àÙ_Ù ý’ßËOÊþÈgì–þZ î¾'ÆÿU~Juñ>7ú«òTƒed3öK-<+û!Ÿ²[ùh+ºøŸýUù)×Äøßê¯ÉR> •ýÏÙ-ü´ðl¯ì†~Éoå ®ëâ|oõWä§_㪿%Hø6WöC?d·òÓÁ²¿²û%¿–‚»¯‰ñ¿Õ_’|Oþªü•#àÙ_Ù ý’ßËOÊþÈgì–þZ î¾'ÆÿU~Juñ>7ú«òTƒed3öK-<+û!Ÿ²[ùh+ºøŸýUù)×Äøßê¯ÉR> •ýÏÙ-ü´ðl¯ì†~Éoå ®ëâ|oõWä§_㪿%Hø6WöC?d·òÓÁ²¿²û%¿–‚»¯‰ñ¿Õ_’|Oþªü•#àÙ_Ù ý’ßËOÊþÈgì–þZ î¾'ÆÿU~Juñ>7ú«òTƒed3öK-<+û!Ÿ²[ùh+ºøŸýUù)×Äøßê¯ÉR> •ýÏÙ-ü´ðl¯ì†~Éoå ®ëâ|oõWä§_㪿%Hø6WöC?d·òÓÁ²¿²û%¿–‚»¯‰ñ¿Õ_’|Oþªü•#àÙ_Ù ý’ßËOÊþÈgì–þZ î¾'ÆÿU~Juñ>7ú«òTƒed3öK-<+û!Ÿ²[ùh+ºøŸýUù)×Äøßê¯ÉR> •ýÏÙ-ü´ðl¯ì†~Éoå ®ëâ|oõWä§_㪿%Hø6WöC?d·òÓÁ²¿²û%¿–‚»¯‰ñ¿Õ_’|Oþªü•#àÙ_Ù ý’ßËOÊþÈgì–þZ î¾'ÆÿU~Juñ>7ú«òTƒed3öK-<+û!Ÿ²[ùh+ºøŸýUù)×Äøßê¯ÉR> •ýÏÙ-ü´ðl¯ì†~Éoå ®ëâ|oõWä§_㪿%Hø6WöC?d·òÓÁ²¿²û%¿–‚»¯‰ñ¿Õ_’|Oþªü•#àÙ_Ù ý’ßËOÊþÈgì–þZ î¾'ÆÿU~Juñ>7ú«òTƒed3öK-<+û!Ÿ²[ùh+ºøŸýUù)×Äøßê¯ÉR> •ýÏÙ-ü´ðl¯ì†~Éoå ®ëâ|oõWä§_㪿%Hø6WöC?d·òÓÁ²¿²û%¿–‚»¯‰ñ¿Õ_’|Oþªü•#àÙ_Ù ý’ßËOÊþÈgì–þZ î¾'ÆÿU~Juñ>7ú«òTƒed3öK-<+û!Ÿ²[ùh+ºøŸýUù)×Äøßê¯ÉR> •ýÏÙ-ü´ðl¯ì†~Éoå ®ëâ|oõWä§_㪿%Hø6WöC?d·òÓÁ²¿²û%¿–‚»¯‰ñ¿Õ_’|Oþªü•pk$‡> â Ç&q2hoMT‰Uuì‰Ù>ŽªŸ¾©ÛbÏ™ºê§fšü>ßËAc×Äøßê¯É\2e0ñ° åG…tÑR¥\²æÀ›½:"üÃmmSþµÏiµå4]›™=&;h¦lŒÛW4ø7wÑ5õéßOVž´¿¢Iåß\VMËÜ¢$Ñ 5DÕ5õ¦¨©¯ÑEúÜfÇt‘šM½\S{-6 Û›S@E柩v×]tÕ¶••¥¯€ƒˆ$š*u¿Ø%Wʪú›ÅŸõ_ïØ%WË*£Ü9ùÏáçÚl_ð2+pú'Šú1è·£V_ú—еÒ{þgé[v{ÿ7«ßwõÖžáÏÎ>Óbÿ‘[ê‚~F…ÉÇcc’1 }ë,WUèöç-¬”fMw*˜4£´KÎ}Ñ5óÑZ;„an¼ãÎâûŽºì—œ2¶²¤g$$®Þäè" ¯¬Ñ4-R¨)AŒX N: ŽÙ\h#naöb8ÔQ]F8’&¢Ò*" '•=UÒŸ„asàȃ;ÇåD“8®/°õµ“mÙDš‚ ÕETS_2¢úê‚”oDñ_­«/úËÅ¿Pµú»é¯{úwÿSß~ý.¸ž+v¾D¾Ý1«,û´=,é0ZrC L68B¤;IT“EMUS½fiA>î…ºó;ˆcî:ë²^pÊÚÊ‘œ@j»{“ ˆ&¾³DеJî†=`mëSÁc¶ ¶f‰›Y¤@B‚ ®žæ*‚¨:"¢"z«'J 3Ãܙų[½É™­[`œK‚Uí½CÊꩺ|±QØ‚‡BR"\üKMªÒuÒ%²y÷_[)¦]“Ë­ó SÚ*¨šªè’»´ Ÿ…„ap™&aâüfŠ –â­¬€¬W L㪠þ”FDJõT•U5ZGÂ0¸Øìœr>!³e”ê="Üݵ‘Œñ¦ÕC6v‘yº¦¾Qú T Ãz'ŠýmYÖ^-ú…¯ÕßM{ßÓ¿úžû÷ë¥ó=À|sÇ}Æ|[©êúï c¨çîßÍæmÝ¿w›vºëß]jš”ö|# ³A¸A´býº%É®Lö"ÛYi¹A¡&ÇDEÇC$еM ~Š×Ì÷èú?Añž›¦é9>ÆÎG;ÊÛ·MœßtÛêßæÓ^õMJ 7¢x¯ÖÕ—ýeâߨZý]ô×½ý;ÿ©ï¿~¹²LzÁ’Á9ŽÙyˆÛ¨ð1> HlMQ ÑQ B$××¢¯Ñ¬(0Þ‰â¿[V_õ—‹~¡kõwÓ^÷ôïþ§¾ýú[ñ/×N]íüZzë§.ö‚~- *{Ðø¿]9w´ñiè|_®œ»Ú ø´4©ïCâýtåÞÐOŧ¡ñ~ºrïh'âÐPÒ§½‹õÓ—{A?ž‡Åúé˽ Ÿ‹ACJžô>/×N]íüZzë§.ö‚~- *{Ðø¿]9w´ñiè|_®œ»Ú ø´4©ïCâýtåÞÐOŧ¡ñ~ºrïh'âÐPÒ§½‹õÓ—{A?ž‡Åúé˽ Ÿ‹ACJžô>/×N]íüZzë§.ö‚~- *{Ðø¿]9w´ñiè|_®œ»Ú ø´4©ïCâýtåÞÐOŧ¡ñ~ºrïh'âÐPÒ§½‹õÓ—{A?ž‡Åúé˽ Ÿ‹ACJžô>/×N]íüZzë§.ö‚~- *{Ðø¿]9w´ñiè|_®œ»Ú ø´4©ïCâýtåÞÐOŧ¡ñ~ºrïh'âÐPÒ§½‹õÓ—{A?ž‡Åúé˽ Ÿ‹ACJžô>/×N]íüZzë§.ö‚~- *{Ðø¿]9w´ñiè|_®œ»Ú ø´4©ïCâýtåÞÐOŧ¡ñ~ºrïh'âÐPÒ§½‹õÓ—{A?ž‡Åúé˽ Ÿ‹ACJžô>/×N]íüZzë§.ö‚~- *{Ðø¿]9w´ñiè|_®œ»Ú ø´4©ïCâýtåÞÐOŧ¡ñ~ºrïh'âÐPÒ§½‹õÓ—{A?ž‡Åúé˽ Ÿ‹ACJžô>/×N]íüZzë§.ö‚~- *{Ðø¿]9w´ñiè|_®œ»Ú ø´4©ïCâýtåÞÐOŧ¡ñ~ºrïh'âÐPÒ§½‹õÓ—{A?ž‡Åúé˽ Ÿ‹ACJžô>/×N]íüZzë§.ö‚~- *{Ðø¿]9w´ñiè|_®œ»Ú ø´Ïæ)þùø$ªè?ªƒÿ_úTí»¶Ä»Å¹¹w¿Îz.þPË’. ný޾¥øàJ¢Uca#nHhÔUÅTUSMSTTÕ?}(0w\¢ßh’‘Q×¥O/{ s^.ȽÅ=]—^úvEÓZæÅädrÜ•"õÝ’h¹1ØÜn~ÛËvßR'½Núüi\ök=†ÍX¶B(¾ùEH»ª¦â^릫¦«Ú²"qÀOb;© }(:ô¥(#x³þ kýïûªùe_Sx³þ kýïûªùeAô{‡?9ü<ûM‹þEoªÐ¼9ùÏáçÚl_ð2+}P)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JPBܾ°ÏâÍüÕ O\¾°ÏâÍüÕ ôO×Ußæòþ»9nMcÅ-­\/ÓzV^’ÜV7]}÷ @i¦›B7 Wö"Šº"¯©S­õÕwù¼¿‡¨Î1Z®Œq+‡Yô{l˯“9›“0'åKdY…‘MÎjhš"ê‚Z.y‰dÖ<®ÚíÂÃ7ªe™.E|M£iÖl´6iÄlÑbH‹¢¢ú•sæ>%9äæO”[ðÁm×^ܱëw2Ú¢ì‰ ‹r·»{  Jb#fh*€$J"Qö.Ë¿Ù3éy.7’s á–e³B&ße©ìè;‘´DWžhÁ[Aïµ]1QU.ÁìÊW‘\á+øý·…W†¬·)Ê„§–xµ®Ué±vÄíàHJŒïy–öŠr“jëïºpxk}8ÎF¸Øò««xK5ˆGr€m¸Rº·Ž4shp9€Úƒ*D@ ÙmAWzMcôÓÐÞ·ý;áÞ'Òòõ73•ÌߦÏÛMuøtÓ½på™~?‹»ox–ðʹ8m‰#Ò¤ÈP3Pe‘' SR$TÕST×IàXÝâ߯l0½â7)’'pþ93Š÷‚ê„Ø¼ä‡EiÁ`‰ÜT"&Çyy«Šx·Š~hŽÞÇë£Äñ>¾jBæ;BÍsj íuH›Ü½UG½à¥x¬G5kÁ1§pœfX,¹„Iæ–ó&‘÷ã¿Êluß»PÚi¨¸ˆd†ƒÜÉ0Lî&.õ»°dŒþ[†à ²&·1¥y——ÎðÇW›F•T‘¿sÛ ÐzÓ3ɬxv5/#Èæô6¸{9ïòÍ›Ì@| ŠK©§døk¹åMÊm½¶æ й|Òv­´[ÇTåºB€ïo^Å-«Ø´^Õç¾+á¶<—‚™üðÚñí?m8mI}®Z¸ì8ލ“fŒî!iµuuæ-JäxÕö~{”\``÷è¸{™6(ëð–ÒbÜ«Lv# *ºØ¯$•„ M»ÀI=uJò^^gq+ž+xoô¯)‘;±aˆ¶×YkÙµ « ¸bâr\ACB$QQ5EÚœ‰“Âü˶Ø{Eáëë鬅ºT— Ê=®¼Œ²Ž–†Æ ˆm‰µSDD Ü¯ e¸¦\¸•Å«Fr‰ óˆB„VÛ6-:#cqb|g‰·Û5pÝp'4”z ‰¸ET’¶>MŒÞí9Wí°°›•×zý޾ËrZ™&''ôTÒŽÙ‰ÜU [WCq)žÓsvÊE]rk¯%²ã“æòn—·1Ê2çr ß2"ˆíEó*kðkYŠñþ„ßæq7Çò,fðvïY)žËL¨p¶Ï€ß$Z×´`5WS’‡½²UÐýtœ0Är›®Ku²e‡xpxge‘`±H·#Qß”ì =²cº„ ÛɦmÂ402Q-UCÒ«”{EµÛ„¦æ8Ë[w HnÊuu$DÚÓBF]×¾ˆº&ª½‘V»•â{¾Ngs‡×‡`–Ú0g%šU¾{úOlÒ,¸ˆ"Ô©-‚ž²ZÐ[Ôyº&‘Ϸþh8÷^#~¼”¼™_¸I»Cu™0S–ZI‰scFŽ(:GWÜ‘½ššíL±ú{ÆOúÔ0vé­Xa]ó{ìKÕí©NŠ—‘ÍÄ Qu!Û®ª›•A-;Ü)cŒþIà˜ÍâÃÍÉ%97Ä[0뤪‡2S;ˆµdûmTÚ‹µt©Û63é$¬9© ÍMY.Ä“cêYCr·?•7¡±¼DÑD¹E¨¡%ºÅá2åc”:õ²JE˜=i'-Õe·uPÑ}ÍæËTÕ<ÚzÑQ;¾‡ ²h–µsvÛü¦îóÌYç ®dÓù &-ç24ÖFÂËëQÅ9Ö`´@›H‡h‘ˆg³»á-Þoxœ|“zM‰ˆ9±dsHÍÇvåà0ë%åHè*ÝsåI¤Ø÷ë Ž}îé˜åà[ã9*S½i-¦ÅHËAUÐQWDE_¡]ßC¿…YG´?ËZ;0²^î\,TÉqŒšû|—ÃhQ­ žv\{š1'®Ü樬 ÇGPÈV@Š´ˆò¢·TÙ={“Æ©rÞkcÇ{·ÉµLozT¶à6Ü^{mÜÑáf#$MË`¼Ä&ê š¾A}f±@¼Cr]»1Êe¹/Å"ëHtu‡—GB_+˜ëê]5MQQk»èwð«(ö‡ùkG$`C†Î' ‚%ï#°æàòn±NC“Û(.Œ6vþ…äŠjÖ¨¤‰Y¬ ºÈÆòù[¯W{Ä^ք( ÇdNäÜï(€r´pQTIÂ|„MEÕÞ_ÐïáVQíò× ]¹°cÌg'Ë…§Ú@^”l¸ˆIª!‚~âHŠ‹ÙQ¡ì˜´Ë/Y‘nƒzn9qFmÃvC­¸¬Jë‹©ª¦Ç'.÷ÿÅ|EMHÄU$âa7¸u2d¬ræW«_ ,íYÄã»Ìsi™êŠÐ|Ú5ki"s[W4bî Ém÷¤´>\…ÔhÕÉFª '¨)!ކžaÕ5Bw "tŸ¶[»H´®_—9:3Q^y–ŸqÂ’ë4kµµò©´æ«ê"Ú=êS0±½%3W.Ù®Bs.(Û—HrZKDF·? \”Ê8Šˆj ð6kåhôÃ]1·½1Ië„M…x™mÃÜyÄŽäÓl˜¼"ÌiÉÈ*Ž›mŒu2#Ü`Кê!¨†×ô;øU”{Cü´ô;øU”{Cüµ)€Ûm‘s)%rÅ®~˜x½ÉÙ·¸Ø¬#}òŒŽÍTä4Œ`ÜPToÜÇ’ªÞÓ —ô;øU”{Cü´ô;øU”{CüµQJ C¿…YG´?ËOC¿…YG´?ËU —ô;øU”{Cü´ô;øU”{CüµQJ C¿…YG´?ËOC¿…YG´?ËU —ô;øU”{Cü´ô;øU”{CüµQJ C¿…YG´?ËOC¿…YG´?ËU —ô;øU”{Cü´ô;øU”{CüµQJ C¿…YG´?ËOC¿…YG´?ËU —ô;øU”{Cü´ô;øU”{CüµQJ C¿…YG´?ËOC¿…YG´?ËU —ô;øU”{Cü´ô;øU”{CüµQJ C¿…YG´?ËOC¿…YG´?ËU —ô;øU”{Cüµýg[|ز} È$ ¾:´üå /ö¢"kþÏWѪzë\?kÿ.?ßA¨›opKŒØ1¢^^&îJ¥o’eH4åµ(›FUVÍi®åMUÒ­«Ìv›}är,)q¼"ñdÿâ-o¸…ÊØôÛM´Aé³âKu±eƒ"1HÆ‚Jm ¢íT0ô…òçÉey¹¿Èƒ3’¤»°‹–Ób¤e ¢ªèˆ«¢"¯Ð¥Žç÷eƒy¶?σ>3r£;°‡˜Ó‚„¡"*jŠ‹¢¢/ѯã8b8ÁŒû]ù¬ž=‡&jð±§AÉæø: 2îò å'£iWTïêÞ‚Àó"äk¥®ýSÖ]«¦1§gΆl²Ú:1¤+Í7oP} \GHQT»zÈ=¥X|c&±äÞ)à“z¿ ¸½l›îF©-iÌỏ»MÉÝ5Eײ­i<ïÏeØ>IpÊ_Ï$L´ÝãÄu:{y2(Éœä!mc h@±ù…ë@å*ùk=ùœq·1 ÿ¬îâ/ZJNM.dyMãå¬FÁÄÑ 4'T@7#z-HPƒsR¼¯˜Ú2Qâ‰d0ð¹–ɼò<Ùr¢ZfÌŸ*×´7Æz Œ˜¹µ`²:€¢¦ÝëÂÜ3-Çì¼)™Éävì•›ÓìˆN¨™EŒëË¢Æ4o¸Š8Jà¦åRPõFg“Xðìj^G‘Íèmpösßå›7˜€ùA—R!NÉðÖb¼-–â™râW­EÊ$+Î! [lØ´èʼnñž&ßlÕÃuÀhœÒQè.&áRBJÚyÞ xù¯ #²ñ`™íÔrK’ƒ{Ñ¥Œ›æ°J‹ÍyÔ†¼ÝÀ€¦"º’(zZºv[”{½µ«„Væ6Ë»¶Œ¸nÅu4%EÜÓ¢&=Ó¶¨š¦Š•¼ë#ŸoüÐqî6¼Fýy)y2¿p“v†ë2`§,´“æÆ.Q t¯¹#{55Û¯aᘜĜ‡d“/°¬·[³ÝlM¶:'5õ6•¶S©‡0ÄÚpNXª6½r {b•+•i„Å®v• ¨xÈÝŸFEg¶† ´ Œ•-_•ª.ˆ½Í<Û»ÖJÇ–x¥ê ³Ñ¬’WeníỖËaäƒÒ¸{—l‘×UoNÈŠºÐtx³þ kýïûªùe_Sx³þ kýïûªùeAô{‡?9ü<ûM‹þEoªÐ¼9ùÏáçÚl_ð2+}P)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JPBܾ°ÏâÍüÕ O\¾°ÏâÍüÕ ôO×Ußæòþ¨jz'ëªïóyS·+Ý® ÆQdcÙw©P 1j.R¶<͈,4æÒÙ¼‘MD Q4Ð6+d±@½ZÙ¹[s¡èÎîDUš@BBJ&@bHB@H„$*$ˆ¨©G¬P¾E²9˜å>\g¥0×Z^v™&…Â×f‰¡>Òh«ªîí®‹ g)]C¿…YG´?ËOC¿…YG´?ËAߥt=þeÐÿ-pÂÅ}’7oùtRG\n ¤¨&¢†›7&ÒDBNúèI¹µ ­+?r4¿åÓi¢0ŽÍÄÇ•TSÚ(KêMÄ)ª÷TNõÍèwð«(ö‡ùh;ô¬Ö( ß"ÙÌrŸ.3Ò˜k­/;L“Bák³DПi4UÕwv×EÓœñGsQÒÿ—FÑ™HKˆrÛQQDEón-Ê© ªhª¢íB ­+¡èwð«(ö‡ùièwð«(ö‡ùh;ô®‡¡ß¬£Ú姡߬£Úå ïÖÆlx¥µÛ}†JËÒ\”ù¦ë¯¾ájnºëŠFáªþÈ•WDDõ""v}þeÐÿ-=þeÐÿ-~•ƒfÅëä«#yŽPSâFfSíu¥äiât[-vhº“¦ˆº¦Þújšó†(áNv:ßòáh q[ŠJH ˆžmõuM tU]È!—eP]^È„ŠµÒÄ¢I±ãÑ-e&+¤ÊâA=5"RTNߺW¡ß¬£Ú姡߬£Úå ÌuR>2/ô:©ú°þ‡ ²h–ž‡ ²h–ƒ1ÕHøÈ¿Ðtê¤|d_è:Ãúü*Ê=¡þZzü*Ê=¡þZ ÇU#ã"ÿAÓª‘ñ‘ ëèwð«(ö‡ùièwð«(ö‡ùh3TŒ‹ýNªGÆEþƒ¬?¡ß¬£Ú姡߬£Úå ÌuR>2/ô:©ú°þ‡ ²h–ž‡ ²h–ƒ1ÕHøÈ¿Ðtê¤|d_è:Ãúü*Ê=¡þZzü*Ê=¡þZ ÇU#ã"ÿAÓª‘ñ‘ ëèwð«(ö‡ùièwð«(ö‡ùh3TŒ‹ýNªGÆEþƒ¬?¡ß¬£Ú姡߬£Úå ÌuR>2/ô:©ú°þ‡ ²h–ž‡ ²h–ƒ1ÕHøÈ¿Ðtê¤|d_è:Ãúü*Ê=¡þZzü*Ê=¡þZ ÇU#ã"ÿAÓª‘ñ‘ ëèwð«(ö‡ùièwð«(ö‡ùh3TŒ‹ýNªGÆEþƒ¬?¡ß¬£Ú姡߬£Úå ÌuR>2/ô:©ú°þ‡ ²h–ž‡ ²h–ƒ1ÕHøÈ¿Ðtê¤|d_è:Ãúü*Ê=¡þZzü*Ê=¡þZ ÇU#ã"ÿAÓª‘ñ‘ ëèwð«(ö‡ùièwð«(ö‡ùh3TŒ‹ýNªGÆEþƒ¬?¡ß¬£Ú姡߬£Úå ÌuR>2/ô:©ú°þ‡ ²h–ž‡ ²h–ƒ1ÕHøÈ¿Ðtê¤|d_è:Ãúü*Ê=¡þZzü*Ê=¡þZ ÇU#ã"ÿA×äÝqÓošã h~T-{éXŸC¿…YG´?ËOC¿…YG´?ËAߥt=þeÐÿ-=þeÐÿ-~•Ðô;øU”{Cü´ô;øU”{Cü´úWCÐïáVQíòÓÐïáVQíòÐwé]C¿…YG´?ËOC¿…YG´?ËA߬í¢{/,I²ÜyV16ñ;/’/r¤"ší-Ïꀈg·oÒƒIÎÀòIü\o'ºA¹¬³TiP%[Ö%¾;m0ÅY/3× “É÷6D[t^D._5勊Yžm>ûÂn¬L—mßbÜï:1Æi·c5«ÊmóÞ)n¨š<ÉÅp’¶Í(<óÂ,*ÄK¾ôË;¸û¶ùð#¿ ÚqRßl$lÛ7D JH]E=i̒鮂ñ¸¼ò1kÔ® »†Ÿ oQÛo$9 Ãb]¹¶é'žy¶I¹IÊýã‘ɇ^~ÄÔÉ7ý(4fu„Ksâ†~)L•,R; bB'm ß5uÐärä‹ÄJ"%¹ý‡¸Õ(8«c“›ã¶gçá9‹nºN[Û;L‰1ÏÞŠ›ÕØf*ˆKÌæ·¨ˆù\yiÒƒPdø¿;¿äÜ>¶fÒíØû¶«œVA‰N,‚XƉÏpUÆZ’ˆF⹫úè»ÜTî, ´n6Úòf¸fóN»hzæíè*ÛÏ HlMQ ÑQ B$××¢¯Ñ¬“ºaóâ⸱ü ç”Ä:aÜaÈzÚóÀyZŠà™2Š:PÍi¦Ö( ‘rš"q¯‡ï“£3ã¬Å(Ö€…c¸Úá[AËdW÷d¼Ìvõd›èýÐU]7r«vRƒS^q6þig|Êá^§Ý-¶ôŒR»kœÁ¾Jä‡H•GÊìqæGç’$uÑkh]Ü>Ý.ÓÆ|–|.ͳÚo1£4íÅ¥€ ?%‡f¸ä—·ÕÒæ£í"‚š¯¿ADÖ¶e(<òæ•F§ƶáOG¿3‹?o-—á¶åúôEc\ÅÄuÉ—Z}äzG-áWw©‘"lcˆåR ر±üVN?o&Xå±5³‹¢‚lã¡:›ÐÑžî.Ñ×cRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJR]k‡íåÇûë³]k‡íåÇûè#xlˆ…‘:^õ»Ü•ÿjùt¯ÎjÂ~&SÝ€J’Ä»±‰|é¢{åó&ª‚š*­t±{¦÷øÝá—Ÿe¬†RƒbñîTê‚©ªéô}Z®žµ¬‡ ?Ô—¾øsñ¨:\Yq·±2à¸ÙŒÂÕ ¥EEøR¾WWÓܶT)œ2´¿mŽôxéa·W @bKÕUWàOV«§©;%| ú=ßœþ}¦Åÿ"·Õh^üçðóí6/ø¾¨¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(!n_?Øgñfþ j†§®_?Øgñfþ j†‚z'ëªïóyY.~è~ÞÉÿ cb~º®ÿ7—ðõ’á÷î‡íìŸðÐTR” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” WZáû_ùqþúì×Záû_ùqþúîþ¡Èœ2è5CSÜ?ýCÿ8dÿÐj†ƒVËýfl?ñ/ìÓkæ•}-—úÌØâ_Ù¦×Í*£Ü9ùÏáçÚl_ð2+}V…áÏÎ>Óbÿ‘[êJRJRJRJRJRJRJRJRJRJRJRJR‚åóý†oàÖ¨jzåóý†oàÖ¨h'¢~º®ÿ7—ðõ’á÷î‡íìŸðÖ6'ëªïóyY.~è~ÞÉÿ E)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)Ju®µÿ—ï®Íu®µÿ—ï Žáÿê‡ùÃ'þƒT5=ÃÿÔ9ó†Oý¨h5l¿ÖfÃÿþÍ6¾iWÒ٬͇þ%ýšm|Ò ú=ßœþ}¦Åÿ"·Õh^üçðóí6/ø¾¨¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(!n_?Øgñfþ j†§®_?Øgñfþ j†‚z'ëªïóyY.~è~ÞÉÿ cb~º®ÿ7—ðõ’á÷î‡íìŸðÐTR” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” WZáû_ùqþúì×Záû_ùqþúîþ¡Èœ2è5CSÜ?ýCÿ8dÿÐj†ƒVËýfl?ñ/ìÓkæ•}-—úÌØâ_Ù¦×Í*£Ü9ùÏáçÚl_ð2+}V…áÏÎ>Óbÿ‘[êJRJRJRJRJRJRJRJRJRJRJRJR‚åóý†oàÖ¨jzåóý†oàÖ¨h'¢~º®ÿ7—ðõ’á÷î‡íìŸðÖ6'ëªïóyY.~è~ÞÉÿ E)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)Ju®µÿ—ï®Íu®µÿ—ï Žáÿê‡ùÃ'þƒT5=ÃÿÔ9ó†Oý¨h5l¿ÖfÃÿþÍ6¾iWÒ٬͇þ%ýšm|Ò ú=ßœþ}¦Åÿ"·Õh^üçðóí6/ø¾¨¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(!n_?Øgñfþ j†§®_?Øgñfþ j†‚z'ëªïóyY.~è~ÞÉÿ cb~º®ÿ7—ðõ’á÷î‡íìŸðÐTR” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” WZáû_ùqþúì×Záû_ùqþúîþ¡Èœ2è5CSÜ?ýCÿ8dÿÐj†ƒVËýfl?ñ/ìÓkæ•}-—úÌØâ_Ù¦×Í*£Ü9ùÏáçÚl_ð2+}V…áÏÎ>Óbÿ‘[êJRJRJRJRJRJRJRJRJRJRJRJR‚åóý†oàÖ¨jnòëLg{Ï8 4ÛsˆÌÉDQ¥UUUõ"W§ø—ÕoþÝßÅ ç‰úê»üÞ_ÃÖK‡ßº·²ÃSØÍâÝzâ\‰VÉöBÄM‘l!Бä]4$Eõ*U¿t?odÿ†‚¢”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥º×ÚÿË÷×fº×ÚÿË÷ÐGpÿõCüá“ÿAªŒÇ/¶›¶øåÒ`GGr)HÚ(©h#®ˆ(«¢vÕ}Iª}®ß§ø—ÕoþÝßÅ •—úÌØâ_Ù¦×Í*ú[/õ™°ÿÄ¿³M¯šTG¸sóŸÃÏ´Ø¿àdVú­ ßœþ}¦Åÿ"·Õ”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥ð¶çi*"¢ ÎËðù*Á÷³ÑeESQ]ž´¨Üƒç×þ,ßû+½œNžÍ‰˜6Æ÷M%"2æâNJ’‘ùS_* ®¿¯àÑC³‹Ýå^æ\å²Ý­•6"+a¢¾©¢Š]Їr* Š¢w-STM?\>ýÐý½“þíãð#Û-¡oŠ;Yb>Á숫§­WDDÕWº¯ÂªµÔá÷î‡íìŸðÐTR” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” WZáû_ùqþúì×Záû_ùqþúþ*/¤a°–÷%GrkßËÚ²YEóÁì¯K¬»!tn3HÞªë¥ØTUïÝQ;è‹Xnª‰d•/²U?«_¹õó=sœÆËm›i¶Šª¨ô—KUEMb*éð¢ª.º.ˆ.(¤¤Âíýi¶rU&«ªÚhKRªdò§©5ï¢&º®«_,kê§þu¡ÿ¾ÿa•_*è>Žpþâì 2´·tuÌcn;&÷/GV<„×ÕôS¿Ñ×à«¿Éþ°ƒÚÁZã" +‡†-“¤6ÊNèºy]KÔ¿i§}µvÜÓVöÝn`Ⱥñ¼æÑMLÉu"Uõªÿr"z‘+³Õ?ñŸòJá¥qÛ;Ë]:½;ý„ªù]_Sx³þ kýïûªùeAôo‡eOÅ8zÜV•ÅjÁ¼âúX¤J¿'ýtDî©[‚çgƒsˆQnK+û]t]5Eõ¢è«Ý;¥yÚ?Î~üÉ´~«ó^3;w]ñ~W^MÞt´m·JÛâ'vŒñ~žûºø«.¯$ïZ6Û¥kÞ"whÏ-Û 8-ªáô®Á‚n(DæõhLtlý{S@Dõh«®¾¾Y-gŽItÙsÈÕ@I×ÉE5슺&«ûú'û+FÒ¹úûÕù».OŒÞ«ÏØnˆýÛôéøñøÝ¿ZF”×Þ¯ÍÙ?û·éÓñãñ»~´)¯½_›²xÍê¼ý†îéøñøÝ¿NŸˆˆýÛõ¤iM}êüÝ“ÆoUçì7wOÄÄ~íútü@øüGîß­#JkïWæìž3z¯?a»º~ |~#÷oÓ§âÇâ?výiS_z¿7dñ›Õyû ÝÓñãñ»~?>?û·ëHÒšûÕù»'ŒÞ«ÏØnˆýÛôéøñøÝ¿ZF”×Þ¯ÍÙ]M}ißÔ©Z2”×Þ¯ÍÙ?û·ëHÒšûÕù»'ŒÞ«ÏØnˆýÛôéøñøÝ¿ZF”×Þ¯ÍÙ?û·éÓñãñ»~¼ï‘dqlÓí¶å‰.tû™¸1cF@ÜhØn2Rp„4õ–«ªh‹ßL+üLÆ£CŽü‘Çn¥ju‡•±8ïèdk¿o,uS$Mãðö­¼>벌Zbª2Y›îò½£»dÅ÷^,ÞÁîï+Ʀš°ò)˜Ö¯×¶Ú7µâbû¯Þ¢éøñøÝ¿NŸˆˆýÛõ ¼jÍâþâР9Þ÷w¼×w½ïêõw¬N9œãWÞ¯¥¸Çk¦¸xzsŸm9î/¼Vô%Ü'¡m_Ym-µWOvxÕS5FK6‹«ŽïôùÕÓðƒ”UD×Ú-?•æÓùw¤ú~ |~#÷oÓ§âÇâ?výyúNC`É2o–ÆYjBÅqÇ%€ˆ<‰ª¶ª«¢'}¾ºì ÒÚG ±¸ÄSž pÅd «}ü肨º¦½—ZÂ{·Äˆ¼äÓûÝ•sð‹yÈç÷¸mŸôpožŸˆˆýÛôéøñøÝ¿Z áz³[6®hm¤|Åù -© !ª*ö%A×Õªéë¤;ÕšmÁët;´ 3XÝÎŽÔ€7Ú»Kp¢êš*¢.¾¥¦»âhéx4Ûõ»'Œl]?›qÒÙüûÓñãñ»~?>?û·ëÏÐrøòdÁ¾[%37Éq™`bÈè«©ª.‚š ®«ôèWBß™Ø&ÞçZ‚cmœSŠûŽ‚5$¤6¦Ò2[¼ê¢ž­;üÖqÝž4é[%Ÿ'•»wèúcíYOÂQ:VȧÉÛ>VíÑô=1ö½!Óñãñ»~?>?û·ëE16ó$Cb\wdÆÛÔ2"›[“QÜ)ÜuN鯮¹ê™îîcdäüÝ–½_ “LÚr^~Ãwtü@øüGîß§OÄÄ~íúÒ4¨×Þ¯ÍÙcã7ªóö»§âÇâ?vý:~ |~#÷oÖ‘¥5÷«óvO½WŸ°ÝÝ?>?û·éÓñãñ»~´)¯½_›²xÍê¼ý†îéøñøÝ¿NŸˆˆýÛõ¤iM}êüÝ“ÆoUçì7wOÄÄ~íútü@øüGîß­#JkïWæìž3z¯?a»º~ |~#÷oÓ§âÇâ?výiS_z¿7dñ›Õyû ÝÓñãñ»~?>?û·ëHÒšûÕù»'ŒÞ«ÏØnˆýÛôéøñøÝ¿ZF”×Þ¯ÍÙ?û·éÓñãñ»~´)¯½_›²xÍê¼ý†îéøñøÝ¿NŸˆˆýÛõ¤iM}êüÝ“ÆoUçì7wOÄÄ~íútü@øüGîß­#JkïWæìž3z¯?a»º~ |~#÷oÓ§âÇâ?výiS_z¿7dñ›Õyû ÝÓñãñ»~?>?û·ëHÒšûÕù»'ŒÞ«ÏØnˆýÛôéøñøÝ¿ZF”×Þ¯ÍÙ?û·éÓñãñ»~´)¯½_›²xÍê¼ý†îéøñøÝ¿_ÛŸ#g+rÿvzÆãƒo(­5ç·îÊBº&ºê©¯û´…)¯½_›²xÍê¼ý†ó‹†Gv@Ì¿ÜFù,uÚ²í¢íi<©ªi®º÷M{-R´Ú4.*ºÒê ˆˆUæzS_z¿7dñÕyûGÒ¼áJkïWæìž3º¯?a·x³þ kýïûªùe^ô‹úyÿù”ßìoׂë×flçñžMFŽŽÙ‹^û¾¨{¾çóÇÇeZ™‹^û½6à÷”œüù“hü Wæ³8þ?*í€`“"϶´ˆZ™0n‰!$t-|­’*hið×gÐÛ§Õ;ÿî‘ù ñÐw?œr¼ã‰ƒ‡zfÖ›Ó©ˆóËó®ê{–ι~uÅÊ2|-**Ñ´éS©ˆóÌNøNÒ¨ca—™7FíÑåÙÜtØqýÈûÈ" MŠ¢êκª¸šh‹ê_Wmr?3L›é«ß/~F¸Ú©º.j}¯=©󠿣ÞFÒ¬¾f™7ÓV?¾^ü>f™7ÓV?¾^ü5S;t\ÔûMHÏ5ò6•eó4ɾš±ýò÷äió4ɾš±ýò÷äiª™Û¢æ§ÚjF|è9¨÷‘´«/™¦MôÕï—¿#O™¦MôÕï—¿#MTÎÝ5>ÓR3çAÍG¼¥Y|Í2o¦¬|½ù|Í2o¦¬|½ùj¦v蹩öš‘Ÿ:j=äm*Ëæi“}5cûåïÈÓæi“}5cûåïÈÓU3·EÍO´ÔŒùÐsQï#iV_3L›é«ß/~FŸ3L›é«ß/~Fš©º.j}¦¤g΃šyJ²ùšdßMXþù{ò4ùšdßMXþù{ò4ÕLíÑsSí5#>tÔ{ÈÚU—ÌÓ&újÇ÷Ëß‘§ÌÓ&újÇ÷Ëß‘¦ªgn‹šŸi©󠿣ÞFÒ¬¾f™7ÓV?¾^ü>f™7ÓV?¾^ü5S;t\ÔûMHÏ5ò6•eó4ɾš±ýò÷äió4ɾš±ýò÷äiª™Û¢æ§ÚjF|è9¨÷‘´«/™¦MôÕï—¿#O™¦MôÕï—¿#MTÎÝ5>ÓR3çAÍG¼¥Y|Í2o¦¬|½ù|Í2o¦¬|½ùj¦v蹩öš‘Ÿ:j=äm*Ëæi“}5cûåïÈÓæi“}5cûåïÈÓU3·EÍO´ÔŒùÐsQï#iV_3L›é«ß/~FŸ3L›é«ß/~Fš©º.j}¦¤g΃šyJ²ùšdßMXþù{ò4ùšdßMXþù{ò4ÕLíÑsSí5#>tÔ{ÈÚU—ÌÓ&újÇ÷Ëß‘§ÌÓ&újÇ÷Ëß‘¦ªgn‹šŸi©󠿣ÞFÒ¬¾f™7ÓV?¾^ü>f™7ÓV?¾^ü5S;t\ÔûMHÏ5ò6•eó4ɾš±ýò÷äió4ɾš±ýò÷äiª™Û¢æ§ÚjF|è9¨÷‘´«/™¦MôÕï—¿#O™¦MôÕï—¿#MTÎÝ5>ÓR3çAÍG¼¥Y|Í2o¦¬|½ù|Í2o¦¬|½ùj¦v蹩öš‘Ÿ:j=äm*Ëæi“}5cûåïÈÓæi“}5cûåïÈÓU3·EÍO´ÔŒùÐsQï5' ˸¥¾!ã‘/öc7Rá¶u!«j¸Ê™€Š¢ª¢®»‘ 6ü*’^Œf.b–´œ²îZò†îQãË”ÙÌX@Jˆæ» ß2—sÓEÑ4AOD|Í2o¦¬|½ù|Í2o¦¬|½ùé`f|÷‡N8h›í˜ôþ—žö›Zmn¾M˜{¢É°©Â£&¦ÔÍöÕO§ôö^ö™‹LÄFÝ7ݱ¼ÎUÐ$½hl&FÅÝ"ÛŠ(Åy±Û¹D‰Ó‘Ü•IÍ ¨+¦žT¤¼C)fD‘fÔÜ–XÌÓ  @…!•Qò6$¨›Ñ·oPNɵO^ÞùšdßMXþù{ò4ùšdßMXþù{ò5±}ˆˆŒž›G¦=ÿÅýVÛ§6÷ILDFKM£ÓO£ôÿŸE¼ÙÈÚjtù) ]‹ 6»}ŵvº-¨¸j ¼Ù+{\P-«ï{®•¸¾íߊFºb¶‚–ËOõRâ£M ¸•5M€‰Üœ×Cåè;·/tÒ·7ÌÓ&újÇ÷Ëß‘§ÌÓ&újÇ÷Ëß‘ª²Œ×žñéѯ-úÑÂcéîÛ{n¾ø›Íèʳ/tYMä´Ûoú£„ÆÏó7F•íºûf&õ_HÞ°æï\]bõw³ÇhbÉÉlŸQ0êyĺ+j¾o!’÷EOýQ*[Á2(Qí0gÛœ}ë<{ˆ0s$Ç[r“ÈB(€+ÎîE$qCDEÓÿ-z_æi“}5cûåïÈÓæi“}5cûåïÈÖXy»?Q‡Þ»ÌLZ"<¨Ùhª6y[/Mø²ÂÍ=ÓááwžñM¢"õS²ÑTlòöLÅS~/*ß0\ÖíÂrß ŸnÜ û‘iöŸÚÊ £%´€=d…ï¶Ž…YçðÙÓŸÏ.1ñæçt³­’z–ǧ}2WHÇ^Y!/œ“ÿ1í"O2ú3æi“}5cûåïÈ×Ä÷«Œ3‡pLr\g4ÞËî¸`Z**j*΋¢¢/þ•±9&~ª"™ÀˆDÓ³m3²4íþ˜ú½m©È{¦ª"‰É©¦?FiÙåQVÈÓ·ú"6ù¯Æe¨8=Jã‘ÜÛÒít§É%$-—Ü@Wº£hÞÕU]»•;z’Ò¬¾f™7ÓV?¾^ü>f™7ÓV?¾^üqò®æó¾QV,àÚó»J‘æû¢6C…–w%Ÿr¬zñ§'µçv•#ÍånˆÙ„m*Ëæi“}5cûåïÈÓæi“}5cûåïÈÕ©º.j}­]HÏ5ò6•eó4ɾš±ýò÷äió4ɾš±ýò÷äiª™Û¢æ§ÚjF|è9¨÷‘´«/™¦MôÕï—¿#O™¦MôÕï—¿#MTÎÝ5>ÓR3çAÍG¼¥Y|Í2o¦¬|½ù|Í2o¦¬|½ùj¦v蹩öš‘Ÿ:j=äm*Ëæi“}5cûåïÈÓæi“}5cûåïÈÓU3·EÍO´ÔŒùÐsQï#iV_3L›é«ß/~FŸ3L›é«ß/~Fš©º.j}¦¤g΃šyJ²ùšdßMXþù{ò4ùšdßMXþù{ò4ÕLíÑsSí5#>tÔ{ÈÚU—ÌÓ&újÇ÷Ëß‘§ÌÓ&újÇ÷Ëß‘¦ªgn‹šŸi©󠿣ÞFÒ¬¾f™7ÓV?¾^ü>f™7ÓV?¾^ü5S;t\ÔûMHÏ5ò6•eó4ɾš±ýò÷äió4ɾš±ýò÷äiª™Û¢æ§ÚjF|è9¨÷‘´«/™¦MôÕï—¿#O™¦MôÕï—¿#MTÎÝ5>ÓR3çAÍG¼¥Y|Í2o¦¬|½ù|Í2o¦¬|½ùj¦v蹩öš‘Ÿ:j=äm*Ëæi“}5cûåïÈÓæi“}5cûåïÈÓU3·EÍO´ÔŒùÐsQï#iV_3L›é«ß/~FŸ3L›é«ß/~Fš©º.j}¦¤g΃šyJ²ùšdßMXþù{ò4ùšdßMXþù{ò4ÕLíÑsSí5#>tÔ{ÈÚU—ÌÓ&újÇ÷Ëß‘§ÌÓ&újÇ÷Ëß‘¦ªgn‹šŸi©󠿣ÞFÒ¬¾f™7ÓV?¾^ü>f™7ÓV?¾^ü5S;t\ÔûMHÏ5ò6•eó4ɾš±ýò÷äió4ɾš±ýò÷äiª™Û¢æ§ÚjF|è9¨÷‘´«/™¦MôÕï—¿#O™¦MôÕï—¿#MTÎÝ5>ÓR3çAÍG¼¥Y|Í2o¦¬|½ù|Í2o¦¬|½ùj¦v蹩öš‘Ÿ:j=äm*Ëæi“}5cûåïÈÓæi“}5cûåïÈÓU3·EÍO´ÔŒùÐsQï#iToa7¶'¿éVp&iÂ5}åGÄM×_r-{iê¯ç¡·Oªv?ÿÝ#òÕLíÑsSí5#>tÔ{Ì _ÓÏÿ̦ÿc~¼_DÆf[âÌŸ&ãj&˜ƒ-TY7ˆÉJ3 ˆˆM zÉ=k_;ëô^æ²,|‹!Œ,zmUçÏü.ýg¸üÝ”æìÛM:5^f׉ßꙆýÌxÛž`¹eÛ³É‚í³˜íš ÉŠ$ñGŠJÃ[ÈtE-Žªˆš®«¢V'óËq3ãmyš”®ûÓ¿q4ßâÍIŒ=hÑ¢e ¢×ÈJ$©¢®ž°èÿmw=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRùì8¿ôõ£ÙãòÓóØqéëG³Çå¥(žÃ‹ÿOZ=ž?-?=‡þž´{<~ZRƒ©#óOqJCî¾óö‚qÑl zMPÔS×ðsúy+‹óËq3ãmyš” ã•ù¤8&3±Ÿ+A´è(ôzj*š*v*ôçç*ágÕüÏïÈßþ”©KÿÙpakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/currybrowse/manual.tex000066400000000000000000000122011323431571100311540ustar00rootroot00000000000000\newcommand{\cb}{CurryBrowser\xspace} \section{\cb: A Tool for Analyzing and Browsing Curry Programs} \label{sec-currybrowser} \cb is a tool to browse through the modules and operations of a Curry application, show them in various formats, and analyze their properties.\footnote{Although \cb is implemented in Curry, some functionalities of it require an installed graph visualization tool (dot \url{http://www.graphviz.org/}), otherwise they have no effect.} Moreover, it is constructed in a way so that new analyzers can easily be connected to \cb. A detailed description of the ideas behind this tool can be found in \cite{Hanus05WCFLP,Hanus06WLPE}. \subsection{Installation} The current implementation of \cb is a package managed by the Curry Package Manager CPM (see also Section~\ref{sec-cpm}). Thus, to install the newest version of \cb, use the following commands: % \begin{curry} > cypm update > cypm install currybrowse \end{curry} % This downloads the newest package, compiles it, and places the executable \code{curry-browse} into the directory \code{\$HOME/.cpm/bin}. Hence it is recommended to add this directory to your path in order to execute \cb as described below. \subsection{Basic Usage} When \cb is installed as described above, it can be started in two ways: \begin{itemize} \item In the \CYS environment after loading the module \code{mod} and typing the command \ccode{:browse}. \item As a shell command (provided that \code{\$HOME/.cpm/bin} is in your path): \code{curry-browse mod} \end{itemize} Here, \ccode{mod} is the name of the main module of a Curry application. After the start, \cb loads the interfaces of the main module and all imported modules before a GUI is created for interactive browsing. \begin{figure}[t] \begin{center} \includegraphics[scale=0.7]{tooldocs/currybrowse/currybrowser.jpg} \end{center} \caption{Snapshot of the main window of CurryBrowser\label{fig-currybrowser}} \end{figure} % To get an impression of the use of \cb, Figure~\ref{fig-currybrowser} shows a snapshot of its use on a particular application (here: the implementation of \cb). The upper list box in the left column shows the modules and their imports in order to browse through the modules of an application. Similarly to directory browsers, the list of imported modules of a module can be opened or closed by clicking. After selecting a module in the list of modules, its source code, interface, or various other formats of the module can be shown in the main (right) text area. For instance, one can show pretty-printed versions of the intermediate flat programs (see below) in order to see how local function definitions are translated by lambda lifting \cite{Johnsson85} or pattern matching is translated into case expressions \cite{Hanus97POPL,Wadler87}. Since Curry is a language with parametric polymorphism and type inference, programmers often omit the type signatures when defining functions. Therefore, one can also view (and store) the selected module as source code where missing type signatures are added. Below the list box for selecting modules, there is a menu (``Analyze selected module'') to analyze all functions of the currently selected module at once. This is useful to spot some functions of a module that could be problematic in some application contexts, like functions that are impure (i.e., the result depends on the evaluation time) or partially defined (i.e., not evaluable on all ground terms). If such an analysis is selected, the names of all functions are shown in the lower list box of the left column (the ``function list'') with prefixes indicating the properties of the individual functions. The function list box can be also filled with functions via the menu ``Select functions''. For instance, all functions or only the exported functions defined in the currently selected module can be shown there, or all functions from different modules that are directly or indirectly called from a currently selected function. This list box is central to focus on a function in the source code of some module or to analyze some function, i.e., showing their properties. In order to focus on a function, it is sufficient to check the ``focus on code'' button. To analyze an individually selected function, one can select an analysis from the list of available program analyses (through the menu ``Select analysis''). In this case, the analysis results are either shown in the text box below the main text area or visualized by separate tools, e.g., by a graph drawing tool for visualizing call graphs. Some analyses are local, i.e., they need only to consider the local definition of this function (e.g., ``Calls directly,'' ``Overlapping rules,'' ``Pattern completeness''), where other analyses are global, i.e., they consider the definitions of all functions directly or indirectly called by this function (e.g., ``Depends on,'' ``Solution complete,'' ``Set-valued''). % Finally, there are a few additional tools integrated into \cb, for instance, to visualize the import relation between all modules as a dependency graph. These tools are available through the ``Tools'' menu. More details about the use of \cb and all built-in analyses are available through the ``Help'' menu of \cb. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/currycheck/000077500000000000000000000000001323431571100267355ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/currycheck/README.txt000066400000000000000000000003231323431571100304310ustar00rootroot00000000000000This directory contains some documention for the CurryCheck tool: manual.tex: A short description to be included in the main manual of the Curry system. main.tex: The manual as a stand-alone LaTeX file. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/currycheck/main.tex000066400000000000000000000057111323431571100304070ustar00rootroot00000000000000\documentclass[11pt,fleqn]{article} \usepackage[T1]{fontenc} \usepackage{latexsym} \usepackage{url} \usepackage{xspace} \usepackage{graphicx} \setlength{\textwidth}{16.5cm} \setlength{\textheight}{23cm} \renewcommand{\baselinestretch}{1.1} \setlength{\topmargin}{-1cm} \setlength{\oddsidemargin}{0cm} \setlength{\evensidemargin}{0cm} \setlength{\marginparwidth}{0.0cm} \setlength{\marginparsep}{0.0cm} \newlength{\figurewidth} \setlength{\figurewidth}{\textwidth} \addtolength{\figurewidth}{-0.4cm} % font for program texts \renewcommand{\tt}{\usefont{OT1}{cmtt}{m}{n}\selectfont} \newcommand{\codefont}{\small\tt} \usepackage{listings} \lstset{aboveskip=1.5ex, belowskip=1.5ex, showstringspaces=false, % no special string space mathescape=true, flexiblecolumns=false, xleftmargin=2ex, basewidth=0.52em, basicstyle=\small\ttfamily} \lstset{literate={->}{{$\rightarrow{}\!\!\!$}}3 } \lstnewenvironment{curry}{}{} \lstnewenvironment{currynomath}{\lstset{mathescape=false}}{} % Curry w/o math \newcommand{\listline}{\vrule width0pt depth1.75ex} % program text in normal text \newcommand{\code}[1]{\mbox{\codefont #1}} % program text in normal text with apostrophs \newcommand{\ccode}[1]{``\code{#1}''} \newcommand{\pindex}[1]{\index{#1@{\tt #1}}} % program elements in index \newcommand{\CYS}{Curry\xspace} % name of the Curry system described here \newcommand{\cyshome}{\mbox{\textit{curryhome}}\xspace} % symbolic installation directory \begin{document} \sloppy \input{manual.tex} % Bibliography \begin{thebibliography}{10} \bibitem{AntoyHanus05LOPSTR} S.~Antoy and M.~Hanus. \newblock Declarative programming with function patterns. \newblock In {\em Proceedings of the International Symposium on Logic-based Program Synthesis and Transformation (LOPSTR'05)}, pages 6--22. Springer LNCS 3901, 2005. \bibitem{AntoyHanus09} S.~Antoy and M.~Hanus. \newblock Set functions for functional logic programming. \newblock In {\em Proceedings of the 11th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming (PPDP'09)}, pages 73--82. ACM Press, 2009. \bibitem{AntoyHanus12PADL} S.~Antoy and M.~Hanus. \newblock Contracts and specifications for functional logic programming. \newblock In {\em Proc. of the 14th International Symposium on Practical Aspects of Declarative Languages (PADL 2012)}, pages 33--47. Springer LNCS 7149, 2012. \bibitem{ChristiansenFischer08FLOPS} J.~Christiansen and S.~Fischer. \newblock {EasyCheck} - test data for free. \newblock In {\em Proc. of the 9th International Symposium on Functional and Logic Programming (FLOPS 2008)}, pages 322--336. Springer LNCS 4989, 2008. \bibitem{ClaessenHughes00} K.~Claessen and J.~Hughes. \newblock Quickcheck: A lightweight tool for random testing of haskell programs. \newblock In {\em International Conference on Functional Programming (ICFP'00)}, pages 268--279. ACM Press, 2000. \end{thebibliography} \end{document} pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/currycheck/manual.tex000066400000000000000000000576471323431571100307570ustar00rootroot00000000000000\section{\texttt{curry check}: A Tool for Testing Properties of Curry Programs} \label{sec-currycheck} CurryCheck\index{CurryCheck}\index{testing programs}\index{program!testing} is a tool that supports the automation of testing Curry programs. The tests to be executed can be unit tests as well as property tests parameterized over some arguments. The tests can be part of any Curry source program and, thus, they are also useful to document the code. CurryCheck is based on EasyCheck \cite{ChristiansenFischer08FLOPS}. Actually, the properties to be tested are written by combinators proposed for EasyCheck, which are actually influenced by QuickCheck \cite{ClaessenHughes00} but extended to the demands of functional logic programming. \subsection{Testing Properties} To start with a concrete example, consider the following naive definition of reversing a list: \begin{curry} rev :: [a] -> [a] rev [] = [] rev (x:xs) = rev xs ++ [x] \end{curry} To get some confidence in the code, we add some unit tests, i.e., test with concrete test data: \begin{curry} revNull = rev [] -=- [] rev123 = rev [1,2,3] -=- [3,2,1] \end{curry} The operator \ccode{-=-} specifies a test where both sides must have a single identical value. Since this operator (as many more, see below) are defined in the library \code{Test.Prop}\pindex{Test.Prop},\footnote{% The library \code{Test.Prop} is a clone of the library \code{Test.EasyCheck}\pindex{Test.EasyCheck} which defines only the interface but not the actual test implementations. Thus, the library \code{Test.Prop} has less import dependencies. When CurryCheck generates programs to execute the tests, it automatically replaces references to \code{Test.Prop} by references to \code{Test.EasyCheck} in the generated programs.} we also have to import this library. Apart from unit tests, which are often tedious to write, we can also write a property, i.e., a test parameterized over some arguments. For instance, an interesting property of reversing a list is the fact that reversing a list two times provides the input list: \begin{curry} revRevIsId xs = rev (rev xs) -=- xs \end{curry} Note that each property is defined as a Curry operation where the arguments are the parameters of the property. Altogether, our program is as follows: \begin{curry} module Rev(rev) where import Test.Prop rev :: [a] -> [a] rev [] = [] rev (x:xs) = rev xs ++ [x] revNull = rev [] -=- [] rev123 = rev [1,2,3] -=- [3,2,1] revRevIsId xs = rev (rev xs) -=- xs \end{curry} Now we can run all tests by invoking the CurryCheck tool. If our program is stored in the file \code{Rev.curry}, we can execute the tests as follows: \begin{curry} > curry check Rev ... Executing all tests... revNull (module Rev, line 7): Passed 1 test. rev123 (module Rev, line 8): Passed 1 test. revRevIsId_ON_BASETYPE (module Rev, line 10): OK, passed 100 tests. \end{curry} Since the operation \code{rev} is polymorphic, the property \code{revRevIsId} is also polymorphic in its argument. In order to select concrete values to test this property, CurryCheck replaces such polymorphic tests by defaulting the type variable to prelude type \code{Ordering} (the actual default type can also be set by a command-line flag). If we want to test this property on integers numbers, we can explicitly provide a type signature, where \code{Prop} denotes the type of a test: \begin{curry} revRevIsId :: [Int] -> Prop revRevIsId xs = rev (rev xs) -=- xs \end{curry} The command \code{curry check} has some options to influence the output, like \ccode{-q} for a quiet execution (only errors and failed tests are reported) or \ccode{-v} for a verbose execution where all generated test cases are shown. Moreover, the return code of \code{curry check} is \code{0} in case of successful tests, otherwise, it is \code{1}. Hence, CurryCheck can be easily integrated in tool chains for automatic testing. In order to support the inclusion of properties in the source code, the operations defined the properties do not have to be exported, as show in the module \code{Rev} above. Hence, one can add properties to any library and export only library-relevant operations. To test these properties, CurryCheck creates a copy of the library where all operations are public, i.e., CurryCheck requires write permission on the directory where the source code is stored. The library \code{Test.Prop} defines many combinators to construct properties. In particular, there are a couple of combinators for dealing with non-deterministic operations (note that this list is incomplete): \begin{itemize} \item The combinator \ccode{<\char126>} is satisfied if the set of values of both sides are equal. \item The property \code{$x$ \char126> $y$} is satisfied if $x$ evaluates to every value of $y$. Thus, the set of values of $y$ must be a subset of the set of values of $x$. \item The property \code{$x$ <\char126 $y$} is satisfied if $y$ evaluates to every value of $x$, i.e., the set of values of $x$ must be a subset of the set of values of $y$. \item The combinator \ccode{<\char126\char126>} is satisfied if the multi-set of values of both sides are equal. Hence, this operator can be used to compare the number of computed solutions of two expressions. \item The property \code{always $x$} is satisfied if all values of $x$ are true. \item The property \code{eventually $x$} is satisfied if some value of $x$ is true. \item The property \code{failing $x$} is satisfied if $x$ has no value, i.e., its evaluation fails. \item The property \code{$x$ \# $n$} is satisfied if $x$ has $n$ different values. \end{itemize} % For instance, consider the insertion of an element at an arbitrary position in a list: \begin{curry} insert :: a -> [a] -> [a] insert x xs = x : xs insert x (y:ys) = y : insert x ys \end{curry} The following property states that the element is inserted (at least) at the beginning or the end of the list: \begin{curry} insertAsFirstOrLast :: Int -> [Int] -> Prop insertAsFirstOrLast x xs = insert x xs ~> (x:xs ? xs++[x]) \end{curry} % A well-known application of \code{insert} is to use it to define a permutation of a list: \begin{curry} perm :: [a] -> [a] perm [] = [] perm (x:xs) = insert x (perm xs) \end{curry} We can check whether the length of a permuted lists is unchanged: \begin{curry} permLength :: [Int] -> Prop permLength xs = length (perm xs) <~> length xs \end{curry} Note that the use of \ccode{<\char126>} is relevant since we compare non-deterministic values. Actually, the left argument evaluates to many (identical) values. One might also want to check whether \code{perm} computes the correct number of solutions. Since we know that a list of length $n$ has $n!$ permutations, we write the following property: \begin{curry} permCount :: [Int] -> Prop permCount xs = perm xs # fac (length xs) \end{curry} where \code{fac} is the factorial function. However, this test will be falsified with the argument \code{[1,1]}. Actually, this list has only one permuted value since the two possible permutations are identical and the combinator \ccode{\#} counts the number of \emph{different} values. The property would be correct if all elements in the input list \code{xs} are different. This can be expressed by a conditional property: the property \code{$b$ ==> $p$} is satisfied if $p$ is satisfied for all values where $b$ evaluates to \code{True}. Therefore, if we define a predicate \code{allDifferent} by \begin{curry} allDifferent [] = True allDifferent (x:xs) = x `notElem` xs && allDifferent xs \end{curry} then we can reformulate our property as follows: \begin{curry} permCount xs = allDifferent xs ==> perm xs # fac (length xs) \end{curry} % Now consider a predicate to check whether a list is sorted: \begin{curry} sorted :: [Int] -> Bool sorted [] = True sorted [_] = True sorted (x:y:zs) = x<=y && sorted (y:zs) \end{curry} This predicate is useful to test whether there are also sorted permutations: \begin{curry} permIsEventuallySorted :: [Int] -> Prop permIsEventuallySorted xs = eventually $\code{\$}$ sorted (perm xs) \end{curry} % The previous operations can be exploited to provide a high-level specification of sorting a list: \begin{curry} psort :: [Int] -> [Int} psort xs | sorted ys = ys where ys = perm xs \end{curry} Again, we can write some properties: \begin{curry} psortIsAlwaysSorted xs = always $\code{\$}$ sorted (psort xs)$\listline$ psortKeepsLength xs = length (psort xs) <~> length xs \end{curry} Of course, the sort specification via permutations is not useful in practice. However, it can be used as an oracle to test more efficient sorting algorithms like quicksort: \begin{curry} qsort :: [Int] -> [Int] qsort [] = [] qsort (x:l) = qsort (filter (x) l) \end{curry} The following property specifies the correctness of quicksort: \begin{curry} qsortIsSorting xs = qsort xs <~> psort xs \end{curry} Actually, if we test this property, we obtain a failure: % \begin{curry} > curry check ExampleTests ... qsortIsSorting (module ExampleTests, line 53) failed Falsified by third test. Arguments: [1,1] Results: [1] \end{curry} % The result shows that, for the given argument \code{[1,1]}, an element has been dropped in the result. Hence, we correct our implementation, e.g., by replacing \code{(>x)} with \code{(>=x)}, and obtain a successful test execution. For I/O operations, it is difficult to execute them with random data. Hence, CurryCheck only supports specific I/O unit tests: \begin{itemize} \item \code{$a$ `returns` $x$} is satisfied if the I/O action $a$ returns the value $x$. \item \code{$a$ `sameReturns` $b$} is satisfied if the I/O actions $a$ and $b$ return identical values. \end{itemize} % Since CurryCheck executes the tests written in a source program in their textual order, one can write several I/O tests that are executed in a well-defined order. \subsection{Generating Test Data} CurryCheck test properties by enumerating test data and checking a given property with these values. Since these values are generated in a systematic way, one can even prove a property if the number of test cases is finite. For instance, consider the following property from Boolean logic: \begin{curry} neg_or b1 b2 = not (b1 || b2) -=- not b1 && not b2 \end{curry} This property is validated by checking it with all possible values: % \begin{curry} > curry check -v ExampleTests ... 0: False False 1: False True 2: True False 3: True True neg_or (module ExampleTests, line 67): Passed 4 tests. \end{curry} % However, if the test data is infinite, like lists of integers, CurryCheck stops checking after a given limit for all tests. As a default, the limit is 100 tests but it can be changed by the command-line flag \ccode{-m}. For instance, to test each property with 200 tests, CurryCheck can be invoked by % \begin{curry} > curry check -m 200 ExampleTests \end{curry} % For a given type, CurryCheck automatically enumerates all values of this type (except for function types). In KiCS2, this is done by exploiting the functional logic features of Curry, i.e., by simply collecting all values of a free variable. For instance, the library \code{Test.EasyCheck}\pindex{Test.EasyCheck} defines an operation \begin{curry} valuesOf :: a -> [a] \end{curry} which computes the list of all values of the given argument according to a fixed strategy (in the current implementation: randomized level diagonalization \cite{ChristiansenFischer08FLOPS}). For instance, we can get 20 values for a list of integers by % \begin{curry} Test.EasyCheck> take 20 (valuesOf (_::[Int])) [[],[-1],[-3],[0],[1],[-1,0],[-2],[0,0],[3],[-1,1],[-3,0],[0,1],[2], [-1,-1],[-5],[0,-1],[5],[-1,2],[-9],[0,2]] \end{curry} % Since the features of PAKCS for search space exploration are more limited, PAKCS uses in CurryCheck explicit generators for search tree structures which are defined in the module \code{SearchTreeGenerators}. For instance, the operations % \begin{curry} genInt :: SearchTree Int$\listline$ genList :: SearchTree a -> SearchTree [a] \end{curry} generates (infinite) trees of integer and lists values. To extract all values in a search tree, the library \code{Test.EasyCheck} also defines an operation \begin{curry} valuesOfSearchTree :: SearchTree a -> [a] \end{curry} so that we obtain 20 values for a list of integers in PAKCS by % \begin{curry} ...> take 20 (valuesOfSearchTree (genList genInt)) [[],[1],[1,1],[1,-1],[2],[6],[3],[5],[0],[0,1],[0,0],[-1],[-1,0],[-2], [-3],[1,5],[1,0],[2,-1],[4],[3,-1]] \end{curry} % Apart from the different implementations, CurryCheck can test properties on predefined types, as already shown, as well as on user-defined types. For instance, we can define our own Peano representation of natural numbers with an addition operation and two properties as follows: % \begin{curry} data Nat = Z | S Nat$\listline$ add :: Nat -> Nat -> Nat add Z n = n add (S m) n = S(add m n)$\listline$ addIsCommutative x y = add x y -=- add y x$\listline$ addIsAssociative x y z = add (add x y) z -=- add x (add y z) \end{curry} % Properties can also be defined for polymorphic types. For instance, we can define general polymorphic trees, operations to compute the leaves of a tree and mirroring a tree as follows: \begin{curry} data Tree a = Leaf a | Node [Tree a]$\listline$ leaves (Leaf x) = [x] leaves (Node ts) = concatMap leaves ts$\listline$ mirror (Leaf x) = Leaf x mirror (Node ts) = Node (reverse (map mirror ts)) \end{curry} Then we can state and check two properties on mirroring: \begin{curry} doubleMirror t = mirror (mirror t) -=- t$\listline$ leavesOfMirrorAreReversed t = leaves t -=- reverse (leaves (mirror t)) \end{curry} % In some cases, it might be desirable to define own test data since the generated structures are not appropriate for testing (e.g., balanced trees to check algorithms that require work on balanced trees). Of course, one could drop undesired values by an explicit condition. For instance, consider the following operation that adds all numbers from 0 to a given limit: % \begin{curry} sumUp n = if n==0 then 0 else n + sumUp (n-1) \end{curry} % Since there is also a simple formula to compute this sum, we can check it: % \begin{curry} sumUpIsCorrect n = n>=0 ==> sumUp n -=- n * (n+1) `div` 2 \end{curry} Note that the condition is important since \code{sumUp} diverges on negative numbers. CurryCheck tests this property by enumerating integers, i.e., also many negative numbers which are dropped for the tests. In order to generate only valid test data, we define our own generator for a search tree containing only valid data: % \begin{curry} genInt = genCons0 0 ||| genCons1 (+1) genInt \end{curry} % The combinator \code{genCons0} constructs a search tree containing only this value, whereas \code{genCons1} constructs from a given search tree a new tree where the function given in the first argument is applied to all values. Similarly, there are also combinators \code{genCons2}, \code{genCons3} etc.\ for more than one argument. The combinator \ccode{|||} combines two search trees. If the Curry program containing properties defines a generator operation with the name \code{gen$\tau$}, then CurryCheck uses this generator to test properties with argument type $\tau$. Hence, if we put the definition of \code{genInt} in the Curry program where \code{sumUpIsCorrect} is defined, the values to check this property are only non-negative integers. Since these integers are slowly increasing, i.e., the search tree is actually degenerated to a list, we can also use the following definition to obtain a more balanced search tree: % \begin{curry} genInt = genCons0 0 ||| genCons1 (\n -> 2*(n+1)) genInt ||| genCons1 (\n -> 2*n+1) genInt \end{curry} The library \code{SearchTree} defines the structure of search trees as well as operations on search trees, like limiting the depth of a search tree (\code{limitSearchTree}) or showing a search tree (\code{showSearchTree}). For instance, to structure of the generated search tree up to some depth can be visualized as follows: \begin{curry} ...SearchTree> putStr (showSearchTree (limitSearchTree 6 genInt)) \end{curry} % If we want to use our own generator only for specific properties, we can do so by introducing a new data type and defining a generator for this data type. For instance, to test only the operation \code{sumUpIsCorrect} with non-negative integers, we do not define a generator \code{genInt} as above, but define a wrapper type for non-negative integers and a generator for this type: % \begin{curry} data NonNeg = NonNeg { nonNeg :: Int }$\listline$ genNonNeg = genCons1 NonNeg genNN where genNN = genCons0 0 ||| genCons1 (\n -> 2*(n+1)) genNN ||| genCons1 (\n -> 2*n+1) genNN \end{curry} Now we can either redefine \code{sumUpIsCorrect} on this type \begin{curry} sumUpIsCorrectOnNonNeg (NonNeg n) = sumUp n -=- n * (n+1) `div` 2 \end{curry} or we simply reuse the old definition by \begin{curry} sumUpIsCorrectOnNonNeg = sumUpIsCorrect . nonNeg \end{curry} \subsection{Checking Contracts and Specifications} \label{sec:currycheck:contracts} The expressive power of Curry supports writing high-level specifications as well as efficient implementations for a given problem in the same programming language, as discussed in \cite{AntoyHanus12PADL}. If a specification or contract is provided for some function, then CurryCheck automatically generates properties to test this specification or contract. Following the notation proposed in \cite{AntoyHanus12PADL}, a \emph{specification}\index{specification} for an operation $f$ is an operation \code{$f$'spec} of the same type as $f$. A \emph{contract}\index{constract} consists of a pre- and a postcondition, where the precondition could be omitted. A \emph{precondition}\index{precondition} for an operation $f$ of type $\tau \to \tau'$ is an operation \begin{curry} $f$'pre :: $\tau$ ->$~$Bool \end{curry} whereas a \emph{postcondition}\index{postcondition} for $f$ is an operation \begin{curry} $f$'post :: $\tau$ ->$~\tau'$ ->$~$Bool \end{curry} which relates input and output values (the generalization to operations with more than one argument is straightforward). As a concrete example, consider again the problem of sorting a list. We can write a postcondition and a specification for a sort operation \code{sort} and an implementation via quicksort as follows (where \code{sorted} and \code{perm} are defined as above): \begin{curry} -- Postcondition: input and output lists should have the same length sort'post xs ys = length xs == length ys -- Specification: -- A correct result is a permutation of the input which is sorted. sort'spec :: [Int] -> [Int] sort'spec xs | ys == perm xs && sorted ys = ys where ys free -- An implementation of sort with quicksort: sort :: [Int] -> [Int] sort [] = [] sort (x:xs) = sort (filter (=x) xs) \end{curry} % If we process this program with CurryCheck, properties to check the specification and postcondition are automatically generated. For instance, a specification is satisfied if it yields the same values as the implementation, and a postcondition is satisfied if each value computed for some input satisfies the postcondition relation between input and output. For our example, CurryCheck generates the following properties (if there are also preconditions for some operation, these preconditions are used to restrict the test cases via the condition operater \ccode{==>}): \begin{curry} sortSatisfiesPostCondition :: [Int] -> Prop sortSatisfiesPostCondition x = let r = sort x in (r == r) ==> always (sort'post x r) sortSatisfiesSpecification :: [Int] -> Prop sortSatisfiesSpecification x = sort x <~> sort'spec x \end{curry} \subsection{Checking Equivalence of Operations} CurryCheck supports also equivalence checks for operations. Two operations are considered as \emph{equivalent} if they can be replaced by each other in any possible context without changing the computed values (see \cite{AntoyHanus12PADL} for a precise definition). For instance, the Boolean operations \begin{curry} f1 :: Bool -> Bool f2 :: Bool -> Bool f1 x = not (not x) f2 x = x \end{curry} are equivalent, whereas \begin{curry} g1 :: Bool -> Bool g2 :: Bool -> Bool g1 False = True g2 x = True g1 True = True \end{curry} are not equivalent: \code{g1 failed} has no value but \code{g2 failed} evaluates to \code{True}. To check the equivalence of operations, one can use the property combinator \code{<=>}: \begin{curry} f1_equiv_f2 = f1 <=> f2 g1_equiv_g2 = g1 <=> g2 \end{curry} Each argument of this combinator must be a defined operation or a defined operation with a type annotation in order to specify the argument types used for checking this property. CurryCheck transforms such properties into properties where both operations are compared w.r.t.\ all partial values and partial results. The details are described in an upcoming paper. It should be noted that CurryCheck can also check the equivalence of non-terminating operations provided that they are \emph{productive}, i.e., always generate (outermost) constructors after a finite number of steps (otherwise, the test of CurryCheck might not terminate). For instance, CurryCheck reports a counter-example to the equivalence of the following non-terminating operations: \begin{curry} ints1 n = n : ints1 (n+1)$\listline$ ints2 n = n : ints2 (n+2) -- This property will be falsified by CurryCheck: ints1_equiv_ints2 = ints1 <=> ints2 \end{curry} This is done by guessing depth-bounds and comparing the results of both operations up to this depth-bound. Since this might be a long process, CurryCheck supports a faster comparison of operations when it is known that they are terminating. If the name of a test contains the suffix \code{'TERMINATE}, then CurryCheck does not iterate over depth-bounds but evaluates operations completely. For instance, consider the following definition of permutation sort (the operations \code{perm} and \code{sorted} are defined above): \begin{curry} psort :: Ord a => [a] -> [a] psort xs | sorted ys = ys where ys = perm xs \end{curry} A different definition can be obtained by defining a partial identity on sorted lists: \begin{curry} isort :: Ord a => [a] -> [a] isort xs = idSorted (perm xs) where idSorted [] = [] idSorted [x] = [x] idSorted (x:y:ys) | x<=y = x : idSorted (y:ys) \end{curry} We can check the equivalence of both operations by specializing both operations on some ground type (otherwise, the type checker reports an error due to an unspecified type \code{Ord} context): \begin{curry} psort_equiv_isort = psort <=> (isort :: [Int] -> [Int]) \end{curry} CurryCheck reports a counter example by the 274th test. Since both operations are terminating, we can also check the following property: \begin{curry} psort_equiv_isort'TERMINATE = psort <=> (isort :: [Int] -> [Int]) \end{curry} Now a counter example is found by the 21th test. \subsection{Checking Usage of Specific Operations} In addition to testing dynamic properties of programs, CurryCheck also examines the source code of the given program for unintended uses of specific operations (these checks can be omitted via the option \ccode{--nosource}). Currently, the following source code checks are performed: \begin{itemize} \item The prelude operation \ccode{=:<=} is used to implement functional patterns \cite{AntoyHanus05LOPSTR}. It should not be used in source programs to avoid unintended uses. Hence, CurryCheck reports such unintended uses. \item Set functions \cite{AntoyHanus09} are used to encapsulate all non-deterministic results of some function in a set structure. Hence, for each top-level function $f$ of arity $n$, the corresponding set function can be expressed in Curry (via operations defined in the library \code{SetFunctions}) by the application \ccode{set$n$ $f$} (this application is used in order to extend the syntax of Curry with a specific notation for set functions). However, it is not intended to apply the operator \ccode{set$n$} to lambda abstractions, locally defined operations or operations with an arity different from $n$. Hence, CurryCheck reports such unintended uses of set functions. \end{itemize} % LocalWords: CurryCheck %%% Local Variables: %%% mode: latex %%% TeX-master: "main" %%% End: pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/currydoc/000077500000000000000000000000001323431571100264255ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/currydoc/README.txt000066400000000000000000000002231323431571100301200ustar00rootroot00000000000000This directory contains some documention for the tool: manual.tex: A short description to be included in the main manual of the Curry system. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/currydoc/manual.tex000066400000000000000000000170511323431571100304300ustar00rootroot00000000000000\section{\texttt{curry-doc}: A Documentation Generator for Curry Programs} CurryDoc\index{CurryDoc}% \index{program!documentation}\index{documentation generator} is a tool in the \CYS distribution that generates the documentation for a Curry program (i.e., the main module and all its imported modules) in HTML format. The generated HTML pages contain information about all data types and functions exported by a module as well as links between the different entities. Furthermore, some information about the definitional status of functions (like rigid, flexible, external, complete, or overlapping definitions) are provided and combined with documentation comments provided by the programmer. \subsection{Installation} The current implementation of CurryDoc is a package managed by the Curry Package Manager CPM (see also Section~\ref{sec-cpm}). Thus, to install the newest version of CurryDoc, use the following commands: % \begin{curry} > cypm update > cypm install currydoc \end{curry} % This downloads the newest package, compiles it, and places the executable \code{curry-doc} into the directory \code{\$HOME/.cpm/bin}. Hence it is recommended to add this directory to your path in order to execute CurryDoc as described below. \subsection{Documentation Comments} A \emph{documentation comment}% \index{documentation comment}\index{comment!documentation} starts at the beginning of a line with \ccode{--- }\pindex{---} (also in literate programs!). All documentation comments immediately before a definition of a datatype or (top-level) function are kept together.\footnote{% The documentation tool recognizes this association from the first identifier in a program line. If one wants to add a documentation comment to the definition of a function which is an infix operator, the first line of the operator definition should be a type definition, otherwise the documentation comment is not recognized.} The documentation comments for the complete module occur before the first ``module'' or ``import'' line in the module. The comments can also contain several special tags. These tags must be the first thing on its line (in the documentation comment) and continues until the next tag is encountered or until the end of the comment. The following tags are recognized: \begin{description} \item[\code{@author}]\pindex{"@author} \emph{comment}\\ Specifies the author of a module (only reasonable in module comments). \item[\code{@version}]\pindex{"@version} \emph{comment}\\ Specifies the version of a module (only reasonable in module comments). \item[\code{@cons}]\pindex{"@cons} \emph{id} \emph{comment}\\ A comment for the constructor \emph{id} of a datatype (only reasonable in datatype comments). \item[\code{@param}]\pindex{"@param} \emph{id} \emph{comment}\\ A comment for function parameter \emph{id} (only reasonable in function comments). Due to pattern matching, this need not be the name of a parameter given in the declaration of the function but all parameters for this functions must be commented in left-to-right order (if they are commented at all). \item[\code{@return}]\pindex{"@return} \emph{comment}\\ A comment for the return value of a function (only reasonable in function comments). \end{description} The comment of a documented entity can be any string in \href{http://en.wikipedia.org/wiki/Markdown}{Markdown's syntax}\index{markdown} (the currently supported set of elements is described in detail in the appendix). For instance, it can contain Markdown annotations for emphasizing elements (e.g., \verb!_verb_!), strong elements (e.g., \verb!**important**!), code elements (e.g., \verb!`3+4`!), code blocks (lines prefixed by four blanks), unordered lists (lines prefixed by ``\verb! * !''), ordered lists (lines prefixed by blanks followed by a digit and a dot), quotations (lines prefixed by ``\verb!> !''), and web links of the form \ccode{} or \ccode{[link text](http://\ldots)}. If the Markdown syntax should not be used, one could run CurryDoc with the parameter \ccode{--nomarkdown}. The comments can also contain markups in HTML format so that special characters like \ccode{<} must be quoted (e.g., \ccode{\<}). However, header tags like \code{

    } should not be used since the structuring is generated by CurryDoc. In addition to Markdown or HTML markups, one can also mark \emph{references to names} of operations or data types in Curry programs which are translated into links inside the generated HTML documentation. Such references have to be enclosed in single quotes. For instance, the text \verb!'conc'! refers to the Curry operation \code{conc} inside the current module whereas the text \verb!'Prelude.reverse'! refers to the operation \code{reverse} of the module \code{Prelude}. If one wants to write single quotes without this specific meaning, one can escape them with a backslash: \begin{curry} --- This is a comment without a \'reference\'. \end{curry} To simplify the writing of documentation comments, such escaping is only necessary for single words, i.e., if the text inside quotes has not the syntax of an identifier, the escaping can be omitted, as in \begin{curry} --- This isn't a reference. \end{curry} % The following example text shows a Curry program with some documentation comments: \begin{curry} --- This is an --- example module. --- @author Michael Hanus --- @version 0.1 module Example where --- The function `conc` concatenates two lists. --- @param xs - the first list --- @param ys - the second list --- @return a list containing all elements of `xs` and `ys` conc [] ys = ys conc (x:xs) ys = x : conc xs ys -- this comment will not be included in the documentation --- The function `last` computes the last element of a given list. --- It is based on the operation 'conc' to concatenate two lists. --- @param xs - the given input list --- @return last element of the input list last xs | conc ys [x] =:= xs = x where x,ys free --- This data type defines _polymorphic_ trees. --- @cons Leaf - a leaf of the tree --- @cons Node - an inner node of the tree data Tree a = Leaf a | Node [Tree a] \end{curry} \subsection{Generating Documentation} To generate the documentation, execute the command \pindex{curry-doc}\pindex{doc} \begin{curry} curry-doc Example \end{curry} This command creates the directory \code{DOC_Example} (if it does not exist) and puts all HTML documentation files for the main program module \code{Example} and all its imported modules in this directory together with a main index file \code{index.html}. If one prefers another directory for the documentation files, one can also execute the command \begin{curry} curry-doc docdir Example \end{curry} where \code{docdir} is the directory for the documentation files. In order to generate the common documentation for large collections of Curry modules (e.g., the libraries contained in the \CYS distribution), one can call \code{curry-doc} with the following options: \begin{description} \item[\code{curry-doc --noindexhtml docdir Mod}~:] \pindex{noindex} This command generates the documentation for module \code{Mod} in the directory \code{docdir} without the index pages (i.e., main index page and index pages for all functions and constructors defined in \code{Mod} and its imported modules). \item[\code{curry-doc --onlyindexhtml docdir Mod1 Mod2 \ldots Mod$n$}~:] \pindex{onlyindex} This command generates only the index pages (i.e., a main index page and index pages for all functions and constructors defined in the modules \code{Mod1}, \code{Mod2},\ldots,\code{Mod$n$} and their imported modules) in the directory \code{docdir}. \end{description} %%% Local Variables: %%% mode: pdflatex %%% TeX-master: "manual" %%% End: pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/currypp/000077500000000000000000000000001323431571100262775ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/currypp/README.txt000066400000000000000000000004571323431571100300030ustar00rootroot00000000000000This directory contains some documention for the Curry preprocessor: manual.tex: A short description to be included in the main manual of the Curry system. main.tex: The manual as a stand-alone LaTeX file. sqlsyntax.tex: A specification of the SQL syntax recognized by the code integrator. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/currypp/diagram.pdf000066400000000000000000000266011323431571100304030ustar00rootroot00000000000000%PDF-1.5 %µí®û 3 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream xœW]S9 }ï¯Èc+¶!±ã8y‰EB â£o€Fe¦ e§¡ÓYvÿýçÞ–v[¦Ì !J®“ØÇÇÇηAðRÇ䂯¹dRü(YÙ­.Ýãip—·ƒàìÏÛçø¦TEªû޵øûuðþ#Vƒ»$÷ÒQðTª“Z¼²º’}¦êÆ9y•âV3÷Ô.”jFßfÈÁO¹º…‹A=Ǽ]¹rïú»áËÓÉ úT ´%üGSÄñ±úR™IœÆè£VÂÕ“ÅàñçqÝäóàýðÃ0þ?ŒF'/ê !ÂjŒ  Œ.šQð~9ó°·G_²óÒ‘R´3œŒbÎÃéŸóåe³³¸%çâÆÉ³Ô(ÔÙ=ú2½=›vG©Uxꊗ šÄL†>Í®®——·gëëÑäëàÙäDJvrQj¨)ä `+@"“¡žàHÍ^áwz&‚ï0eÏ™ Éâ1ÌcÀ oW1Ï=ÜÙ¥ì uõsÍùéw뻋Ùr½ÁOƒ"æ1yà|ÃWÓÅÌ‚ H€'é ú}¤q8_Ý®—SK,°»&/§ëWw‹Ãõg‹éüê¿ËÃ'—³ ¢;˜ƒoðÔÆöOIHq© σÌ>×PªÕ( ê2%G‰}bǽ14K-lp*y†½¾€DÍ>¦èr(>sÆIÀ^¶¿od€¢€`á};Ji8»½»ê&™“eX+çX:PžŒb®×³ÅÍú±ç«éÅ€_X†×óåú¶}{'ñ&FÄ@ÁD¥Æª¾r:¨xík’F=ôØ.Ü炚# ±‘1” 18DëCav¾¾[µRŠf‘´ÇJ+j×WG€±z¯Ãë›ùùƒÁ§D¥7+¹ÌÒTèh@e$m…×£“‘Po¥Eá‚8`jø±r?:¨æ”MmÀ>(E,|Õž+Æ”P 6’YGެΔýé#p%á§€ÑèƒúÇg6ì ˫攡›®ê–\2&MPþ¬ýýQ³SÈ7‡¶³³Á¸[2 ZDe së È~ Ýd5k&ŠÝÀ 4ws„Ák‘AúÁ z"è ƒ¹µ6W{¬Ý½},›ºqM¥>°Ôï3¾0öYm²’Äü†¥»‚¥­ƒØ¶Õ6Ó+z\Rº·Ò( Ñº6N,&xï#RüÚÄcºZÏÏç7ÓõüzÙ•\…6S'Ȳ„í`þèfkjýhvqö韶!ªOs7jPÑI~bß´¢üPsd}HÑÒtü…`˜Pðšpcä™Ôôù¸eõ\eL.ÑÄyo¶˜MÏ¿l^vREýƒxª`nïìÚ¬šŸÝ€6Fr^D8á)D‹7–Ó»Ëf¹Þ0nœM˜.q(tA¶~î>Œª=¥K 5nPÚµahrˆÈ­‚)þ4ÜqƒR¬(Bă–›$ð±'Ï¢+!ÌcV£à²Ó8Ú¬»…ê/Ùz6VÀè 4hJ±3½=›/ûGÞÀÁ3hÒéÙõçŽ`qµR´ÙžÓ¦É…òÊ(·l9LTIñÙ£8”C  h±ÈÙ†©¶+f:Qݶ¶Ý+ì BÓªÇPE"$ý ¥=˜Ïnö®!ÓK<±‰a2]9=ÞâœÐåc¡Cì·uÓѨ#¢í¹ $XCQÌÐ*ÕTõnºæ§]Ýùz$†(.*„{éŒD-¯ÃGÐãt´Iƒ¦…•Jæ¢? 5§R¥{U²†‡7ƒÿÛ) endstream endobj 4 0 obj 1741 endobj 2 0 obj << /ExtGState << /a0 << /CA 1 /ca 1 >> >> /Font << /f-0-0 5 0 R >> >> endobj 6 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 595.275586 841.889746 ] /Contents 3 0 R /Group << /Type /Group /S /Transparency /I true /CS /DeviceRGB >> /Resources 2 0 R >> endobj 7 0 obj << /Length 8 0 R /Filter /FlateDecode /Length1 10408 >> stream xœåz{|UÅõï̬™ý:Ï}rNÞ“ÇIŽ(ÈÃÒ(ˆ@‹ ¨–‚bÀ¹"PPHxˆ˜" ĈŒ¯yˆh[ÀÖŠ•Xê5bÚVr&¿µÏIðÑþ~¿?ïç~îÞ™ý˜Ù{Ϭµ¾ó]kÍ ¡„ƒT þY÷Í,ÿvþ“Ä©„°é³–Üï's“ŠI>L•eå÷Ü·`à’y„øñžì¿çÞ¥eý¾h¸ ¯’p`Î왥¬lÈ7„¤–`Ý 9XaoR–ãýV¼Ï˜sßýžÊí‡÷-xßxïüY3 Ëy´{ñþð}3,çÛ”„¤ûñÞ_¾pvù0õox™$DÌ!Œ”É:^&vãhU´ó«D¹J5QÉ8Ém=Û~qŸm?Ûže¦šT3µŒ“®EÐõ™¬Sßþ}¡’M(i”gЇ8Èà KÙJ¶8*B¢ §ûü„ƨÉS›‰Ñýúi]ák2­-¿Ý,*ºÚó¨Â|^OLz&+èÌ*V?²rU}]íæ-Šç/rÄ¥KrØg_Ðc_ ­íØß'„ðéâœõ™ oÔsV/V¨¤^×R”D )Ôæ>ÛÓµzjoíBArÛó¯X¢L˜4uZ=ìg3§š¢0P`¦úR%/·ÑÙoÓñ]»ø¢±Mc;Ï5 ª(ÙÙí¡oI‰ Úa'Y©§q$VÁ¡Ÿ}'"Áà¤GuœÙ½â6y@¾NƒøÞnÔËü°^R‚.ÕÒ‹J‰Íã4‚z~å;ù£ ¢=>/SÓy ²Ý(zm]ýª•+O»~ác9ô‹Ïè[—.Ñßâx©î¾È7ˆb#1hÈ(¥ÞCêíyÖÅꉮdHô%Äâ7¯X¶k»ÒGÓ˜éöä{L7ËÊ'¦›¤§YG¶vÇ“Oâß“O^¥ºüæêUù ÕE±<-ßÁršà>ÔËErµ¬–‹èzº”>D×[:ùQ'@Ì—ÈJf©ƒ»#j¶t‘þá™3RâsGÑV¥¼‚D‘AÁ8Ð 8©Rí4›ì-e™èÐ5Û/¾™o 8wxÛ•ÖvÓS”w¸Ä÷žÑÔL7f¦§)>¼(ð ùѼ´iÙ²ÚÍÍ£^\üÆ1¶;ôs¶ó©¯îU󒃳K¿"´»ûý1¢’ñA§ÂjÉ NƒH‚BsŸmëjþ®´ççÑ Æä©¯XÓˆ†(5™Œ"z qS7KQÝzP/ןÒõ€0ÁQ¤*ü«ÐåS¡Ëâ\Cç9‘cÙ¤mÒå4H€´³âRl1º“<£4;Mÿꔣ‰ÍéMæº;‰XKæм£3Qîwζçç‡ÛÚv¥ vì²û²YdyŠò‚¿ÌKÊKÎKÉóç¥æ¥Ì &“ƒ)A05˜VœTœ\œRì/N-N+Î*ÏZ•T\Rí¯N]•¶1«>«#+¹÷ÕÞ—z_(I.I)ñ—¤–'—§”ûËS«’«RªüU©±3PߨiotAþ ëé`3½ÐIÓÓ2 *H- [A- [€½záÀŠùÛš›šF¶¬9p*t•²g¶”™<ûÕéÿÑÁ Ê*î^ôÁáì[B+Êf¾±ë•×=•k hÈÊê"=˜Ø¡xQW-ÁlÍŠPME`rÁ™)¥ ÐB¶èŠ \ѨFÆØ,Œœm5-E ooC„àDVÝüKÕ-z ÿrZÚ!·ÒÁ»83´h–ŲEŽ6…•±{´Eìñ«¿Ò6±:±E{šyt¡+̆ڲx‘£ä¨Aû(±×À*^#Ö+Ôí°Em€gÄõ-õ}õè€oxŸ±€Ìˆ*0iNÓ¡G›Yà‹ÐAö‹ŽÐñfÅÛ5—^ ] `é¡o ÐKQ^‹cs¯òH TãdŒæîÞž2µ! mÖŠõÄ› VäÓßh—\­W¼Ÿ[X[ §ðéˆ5éƒèN³'éžÕQÑÍ.hÎLoÊjÑ›]¯Ä'eÆÍ~³âñøGg»»Z‘òóà k·æ˜[ž»lzŠŠòŽ”ô­ê[ßÐò‘i6~Œ›¥¦ef&Ó0,D8$:¦°ví©Ý¼gÏæÚ=MRvÎåHšD§;TÌÇIŒ¡ø4»û|×pÔ ù,ž[ó¨Ù3û SM8Èú‡Îì aýi°.Xÿ^¾A]G‘?ä›-ÿžoÚ{ùæP‰þ˜mÌÿmoh§E7Øïüî‹pm’E.‡;ìÌi›”’¬éL5&¥¤$2lÉ)ÜGVÓî]í«‰m6ys ¡O²aKIPÉm šSÕ¼i£ûX¦:ÛÞfÙ&ì, —__v}ÙÓ‹yç—fL‘>"àI–øûD[¢}€ÞÏègëg¦3†Ù†Ùm~⧬ÑÇÖ7*×›ëëÝ'¹OJ¶?;5#kµ±Ú¶Ú¾Úá±¼cŠ¡ØÀp‚ Üñ‰|öÌã?c•Я†¾Pñéî~§â…¡ÍÍ,÷Ô¥K§°°ÛJgÊù-î-3K÷áhpÞâ¸*#^’@ʃÄGõÕÚá{–Šf;}9¶ÙÓd_—˜àcšO#˜Ç5:1ìÈ[ $´¹Ñ7¸¯X37/˜=2©<©>éwIIb$IG²‘¾‘ ¢Ÿš«å" æ“ùt>›ï›Ÿ £±f šÂ¶ìÃÉì·Ü?Ф†M¨òÊ®CöÓ/Í;~÷¬ßýB^‘Çiv×§Tmb{Ölov²;§¿z|àÀƒ}ûÑ!Ô QôFùQë–ÃwZ¸ÿŽÛÒ^"[˜ÅÔ׆Ã-‚¢X”ˆrÑ!”¡!™)Þ¶“},óX òX”Òì!Íö&+Žñ¸noôâ˜`úȸ R¡Tª•Z¥^iTÚ*앎Jg¥«Ò]iVxêã:âÌïy0„áÂE›ì¯ÝtàÀ¦ê‘—;þ&¿¢&\¸tò䥿ž8þùyB¶Ë/Qø"”ÑK‡„c¿Á8п‹È'ˆ$§Ð\ð,1i‹VmØpvs¢¹=N‹O†·â_~Ø·_ÞÚn¹ô¼CÏG8Å".oô0ê³|):UtÐ ¹j¢W^9·«ºZ씿ݪ¯™¸ý©?°’ tDóá8oÆyYäáNaÉ=¤Â¾#J|¿önŽ­5y-Ùxì;NIKˆsöWã¼i}Üç[Û»~À)m¨Ï\v3È)î^RqeãÀ¤dçfÿ4füxªóÔêSŽ]ôÎ]{^|`ïCŸþQ~$/Íûªª¢}ás-ÕÛ+>}›Æ|=÷Ïb÷[ƒU-™5;%.çƒ#|œ—û»ÑcÖ<üËe)±ý_߬-ÓÂÅA”{j8fô’aÁÄïX|A[¼Mväp¯m"²ùŸ¢ˆÿlË¿:Î÷½n…ŽQÈà àEO(CZdþ\SÓ/,~ã}e{C3ŸzêÕݬâjý²Y°¯›Ó×î‡Ä7§·YhëœMt Ä ÝÙͦÇ6:)ŒÐ°cpHë8äZ¿,<ߢi/.Q›°«©iè ËNu“îSË^G6Ù·ް;ÿÙ¾¯t&½‰bäCoš)}=¤‚˜8‰>³ãZ, &«&e”™ŠªŒRç5œd*KäƒÔD ZW$Å@7‡Ðü.` J)6Ëoä bCÔ±ìfu.+S«˜ªP]ñÑxe §ÜA§*³é\e©²Š>ªÔÒíÊS67RTª%ÒOb€\×*;BóZŹ«)ü“ÎþÉÕ”ˆV“Іidz0Sñè±.¢$©>{u’šZâÜ*1]š¦›š«81é8Ý¢ã®.²'‡)Ú4}¶6O_¢-ÕWÐõPKŸou:µâ¿pÀ}’ö§Ëi%íÿ–¬<%+}]|Û™#Rº'Ÿ\³ßZ”ÝF}=öÓjùs† zØ„öˆ Ã6ì1bŠãûFÄrCñìx¨ˆ}Û5²䘆Ðņpœá¶ÖPðû 3™ßo@¿@z3T+Äd0»0W¬JÝC³FPk)¬ÀüCSŽ 'º0lî³­=·m÷|§æžôF\Sv¯òQéþp¶3ÊE]Ìe)žL%KH9YGt•jLGÓ86…NeÅö{èö ]–ÁBþ€ú VM×°*ûV¶ êx *Õ‹ :¤B:k‘—Y@V|ÆŠþ°&tךsŠƒƒ9´R®ËnñÐd”= ùñ…`!ʆbar£N|À}µº·Ö±ÂÆ…¦N£Âˆ‹ãæH¯‘hçáø ÑŽ2‹"4e-ÐxЬý;‰—L‹úPDP©Qû¨—E#!H€X&d)™j¦–©û“ÑAl ÃæˆÅ|±x j²FݪlUSPTôb1Qé0€æXª?ÃWä´5Ãú*Fœþàµñk<ÿ6=AI×ÊP|¼¶öqÖ½ña9‡VÖݪçÞÿÓú£ì§¡ËÕ+W® ǘ—íÆ¹mùŒÁ„^ŸÑä\G_–$ô7‡=Ç÷"Ow[[¯Ûê¿ñq2§3×fyOØùƒptÎøkQ'Ò‹î TŒ†ïÅô‹^Çž‹º/еO$‘¢ ŸˆZ µšç׿A_­ó1m]2#‰æ@^gs'[ó¾­«5|Y9ÈÙËVHç_ „©ù<ÆŠ znñ7åæY,ÿR/wÉÅt-½óqªÎ/ïZ+/Ë/1ªòübß9úØÞPå¤Ûé6zý%Ý6vÌï*‘ïÊßË?Èw½Øâë[¢kh0–ÖºI­¾Âã64 ¸Dœc¤IuNâz©)¼²´¹|)¾‘¾»|ÏûDØûF ÀabÐbÙšn’ë·o_/‡ÐW)•ÝWåÛ"7ôÞãÕ«ß{ñÃ> íëáyØ¿  =²t”C ·Öû¬È¶ »ÒóÔbµ ª8‡µQ¼ÍþØu—8g­R+~€Kˆ…822˜€yßî\íXcXy_ æ}ñªÇAÆzGÇ»»Úò{#\yÅJó,1Ü U ê,1®_½Ñ{ZDÛÑpiâ“Å/;öbñ“²gFH¾¬¨Ü¾‹ÈɹxúôÅœœ†Œ t’Nê¡CÓÆ²-å%ÄFo ŽVèÀqÖªÖ Y‹Q0£6Ÿ4LÝ ÖÉf ×ÐMôè'8åyM°ž+¦)vk±Õ˜l-¸þlB£Û:˜“6µ™(ÖÚë„F¯µ«X«¿­g[{I{þ¿w#ÿêVhp«Á¹Ï}F¦q=¿Î¸ß¡N5ÊŒ%ô!¾D½ßXÏ1¶ñ§øõqc£±—>ËŸç{Ô§z#Ñ.„nØâÁ'|z¼-2E@ïkó;†Ò",ªƒô"[žcŒ£õñ¶ c™B§±ip‡˜¢LS§hSôi¶bÇ|ǃ´ÒñݬÕFÇ{Ž ŽnG®E™,]§øW S^*A>GåÑè‹rá4›fó’ЅдIŽeãY´\@7X6¸mP‰6PÈÕ`VϪeÂ:S2:íQн&aycNÔˆ’Q“¤W«}a5“°jÃzÅ(ïß;güÕX6U°J¶šU±ÇØn4v¤£ƒ°84ây&ɤÙÍýZ!)¤Ca(ÏÓÆŒa#Æ*AmŠ¥˜Æ‹µ2RFçÂ\~˜£”h‹Éý´*eRV‘U´jxX­Ô‘:º…m‡­|«Ø¢ìÏ(ÚëÚ­[aùsTº›ëߤwÒ;ß”?ïä%]“áÀÕú0N¯G.µtä¢kƒ7ªÓMâ² HˆËiºˆËaÚÄ:9†Í°›6›1ÊaÓÝÄ&ªá§­ÅítØ ]¢¹¸Ëæî©Ö™í{д…õA¦“ˆöžµ× OÍòÃ1ù–F;"4EG´ãp;Ò…ŽqÆO‰ŽéútcžQí¨rlrx ‚ƒ° »ÍisÅPss·ˆ1¼6¯=ÞïÊ"4ƒù¹_dcô02lö,G_g_—ߌV(dyÎÓít݉{}Ï~ ÷ô¶çüËó2Þü¿ßRHßð9™$`®Ø»e`ŒgýL}4Zèßmcnf’‰%’zq"r¬__£HYMNA't<)ÀZB>Œ\¡“ÉaüFõÒ"Œ*ŸÈóÛx¿ÄO“Á|?ÍKø"Z»Ä±K¼Å<8SH½@‘£ð9@ ¿‰;É8 ä3ìÅÂÕ)²ì&8/O*Ñ݆5ÇÅi²÷ùØ~QzGw”®$çÈVàl,ÙIÏ¡\§È?ÈJ˜Ì*1ÿ.`e8þãø­Óøþv²£ÊsÔ ’å`Žûº;|L‚þâ\xïÀYVA&“ÝJ“âUÓ±Kc{é›´]ÙDêÉø9,€é*žÎ÷ñ±dCDPB6à··[ï(e#¯ð^a}=ÀKhùœ—¨wã·ß²$Â>³ÛP¢2Ò‚åÅ2 £« Gjµ&‘Óêxž‹ïãÔå(5!ó¡Ìë r"ý¡ŽlÀ/…åU‹à›;ø'(óºžýƒœ†›p®”ñ˨kœ"¤Ž—TE„³Ð~~w# Œ+m Þ:ÕbZjÿ~?ºõ»U#)nt,õ7uwOå bZ£Hl„€ÖÈéŸüWŸôï7¡xª¿14ú¦ž¯Ž.¹ ë&MÅK뫱~ôMá6«ÓFÀ¿q%þYsüºMú¨{öÐþ$Ì€ìã—3úó]®á_“”9¼ûõ©%½çoÞï:èX¨ßŽ·V#€õuŸLBzúô›÷;ou,ì©ÿnë‡-ƒÒ(bÈ'l-ى׻ñº¯?r”_ìîä—HßE޲"ò†ð’ÊaĽՖCæsÒÝŽuGy;Y`µóÏÈH'ƒ±®Ÿ9h=/ºÈIõ>³œ„ñä¨r‰œN,K‰[lÀ3¾¯ &Ï“|1–2²€·aX®· û=ÉËÉISïv“…0Ëϱà5‚¥ËŸïcÑÏÝd\ŠÛ”eX~‡ÚÀzm–³H£èª l³ù± ºì›QW±X qNÅ`+K9–‘zÏb'ăýDÝ‚¥±„ÏûP>|Ö×AH ö»•xì7¾Ëú–p±´Þ&£ï˜ƒŒm­¢l³¬Ä}ÌâyÞĪ‚˜–A§þ€oóá›:ø‡¾–pEÂàïNø[tà«Go_I¸\_ÖA{'|Ñ ÿGÂçCá¯£à’„¿äÃgm“ÄguІ¶M‚‹ŸæŠ‹ði.|"ác òá{á£:8/áCüy9|ð2üIÂûøøûËáÜٛŹåpöf8ó‡qFÂà÷~'á= ïJ8]ïœJïH8• oçÃI ÇV™âX"¼ ­Þ”ð[ oHx]Âk^•ðŠ„ /K8jBóê€h–ÐôÒË¢IÂKGfˆ—^†—ªø‘ßÄ‘Án8ä¿ Àa /ÖÁ! /Hh”𼄃¥ðœìˆ¥°¿Á#ö ÁÏâ Ÿí„}ž‘°WÂì–ðô.§x:v9á×¥PÔ×ÁSv>i;%à‘`¢¬æ(p/W)8%8ìÑÂ!ÁŽOÛ£Á&Ápƒ.AÃÇ4 ª”RàØÈ>ÀZè•Ü‚õê"6ÑÒUëiÎÿ ù¿=€ÿvKúOÚ ¥ endstream endobj 8 0 obj 7456 endobj 9 0 obj << /Length 10 0 R /Filter /FlateDecode >> stream xœ]SËNÃ0¼û+|„C•4õ¤¨‚K÷ öçyþ¦#¥E×j»Õ‘†b÷ÜÍ/Ý‘t%Í«],çãrY•¶?ÅÇe&ÝÈó‘Âé4wr—¤ÚºÞêv¶ŠRüwf6hé‡ðÕeÕ6wEZ×¥¨v³\JáøÀøøž5545óž vÀޱ5‚K)<<{º¸g OÇžÎ{ö„¦ ²9Îæ7‚K)þüÖ4Ð4Œ-°eŒüŽó;èë=²yÎfáiÙÓ£×K/4Ž5÷2rÇ>2ïÀ;îEÏ 4F4ð4ìi0Ãs°Ð[Ö{ÌÓó< æ`x¼w1rdv’óñ2äñ’³õ2[ðŽyƒ÷~oÿRxI®ÛÀëÂ{ý»‡áœsYAY~Ù=Þº1Ñï÷1O3wÉï0ÔÆ endstream endobj 10 0 obj 418 endobj 11 0 obj << /Type /FontDescriptor /FontName /ITMYDI+DejaVuSans /FontFamily (DejaVu Sans) /Flags 32 /FontBBox [ -1020 -415 1680 1166 ] /ItalicAngle 0 /Ascent 928 /Descent -235 /CapHeight 1166 /StemV 80 /StemH 80 /FontFile2 7 0 R >> endobj 5 0 obj << /Type /Font /Subtype /TrueType /BaseFont /ITMYDI+DejaVuSans /FirstChar 32 /LastChar 121 /FontDescriptor 11 0 R /Encoding /WinAnsiEncoding /Widths [ 317 0 0 0 0 0 0 0 390 390 0 837 317 0 317 0 636 636 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 684 686 0 0 631 575 774 0 0 0 0 557 862 748 0 603 0 694 634 610 0 0 0 0 0 0 0 0 0 0 500 0 612 634 549 634 615 352 634 633 277 0 579 277 974 633 611 634 0 411 520 392 633 591 0 591 591 ] /ToUnicode 9 0 R >> endobj 1 0 obj << /Type /Pages /Kids [ 6 0 R ] /Count 1 >> endobj 12 0 obj << /Creator (cairo 1.13.1 (http://cairographics.org)) /Producer (cairo 1.13.1 (http://cairographics.org)) >> endobj 13 0 obj << /Type /Catalog /Pages 1 0 R >> endobj xref 0 14 0000000000 65535 f 0000011036 00000 n 0000001856 00000 n 0000000015 00000 n 0000001833 00000 n 0000010557 00000 n 0000001965 00000 n 0000002193 00000 n 0000009744 00000 n 0000009767 00000 n 0000010263 00000 n 0000010286 00000 n 0000011101 00000 n 0000011229 00000 n trailer << /Size 14 /Root 13 0 R /Info 12 0 R >> startxref 11282 %%EOF pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/currypp/main.tex000066400000000000000000000071301323431571100277460ustar00rootroot00000000000000\documentclass[11pt,fleqn]{article} \usepackage[T1]{fontenc} \usepackage{latexsym} \usepackage{url} \usepackage{xspace} \usepackage{graphicx} \setlength{\textwidth}{16.5cm} \setlength{\textheight}{23cm} \renewcommand{\baselinestretch}{1.1} \setlength{\topmargin}{-1cm} \setlength{\oddsidemargin}{0cm} \setlength{\evensidemargin}{0cm} \setlength{\marginparwidth}{0.0cm} \setlength{\marginparsep}{0.0cm} \newlength{\figurewidth} \setlength{\figurewidth}{\textwidth} \addtolength{\figurewidth}{-0.4cm} % font for program texts \renewcommand{\tt}{\usefont{OT1}{cmtt}{m}{n}\selectfont} \newcommand{\codefont}{\small\tt} \usepackage{listings} \lstset{aboveskip=1.5ex, belowskip=1.5ex, showstringspaces=false, % no special string space mathescape=true, flexiblecolumns=false, xleftmargin=2ex, basewidth=0.52em, basicstyle=\small\ttfamily} \lstset{literate={->}{{$\rightarrow{}\!\!\!$}}3 } \lstnewenvironment{curry}{}{} \lstnewenvironment{currynomath}{\lstset{mathescape=false}}{} % Curry w/o math \newcommand{\listline}{\vrule width0pt depth1.75ex} % program text in normal text \newcommand{\code}[1]{\mbox{\codefont #1}} % program text in normal text with apostrophs \newcommand{\ccode}[1]{``\code{#1}''} \newcommand{\pindex}[1]{\index{#1@{\tt #1}}} % program elements in index \newcommand{\todo}[1]{\fbox{\sc To do: #1}} \newcommand{\CYS}{Curry\xspace} % name of the Curry system described here \newcommand{\cyshome}{\mbox{\textit{curryhome}}\xspace} % symbolic installation directory \newcommand{\us}{\char95\xspace} % underscore \begin{document} \sloppy \newcommand{\curryppdocs}{.} \input{manual.tex} \clearpage \appendix \input{sqlsyntax} % Bibliography \begin{thebibliography}{10} \bibitem{AntoyHanus12PADL} S.~Antoy and M.~Hanus. \newblock Contracts and specifications for functional logic programming. \newblock In {\em Proc. of the 14th International Symposium on Practical Aspects of Declarative Languages (PADL 2012)}, pages 33--47. Springer LNCS 7149, 2012. \bibitem{AntoyHanus14} S.~Antoy and M.~Hanus. \newblock Curry without {Success}. \newblock In {\em Proc.\ of the 23rd International Workshop on Functional and (Constraint) Logic Programming (WFLP 2014)}, volume 1335 of {\em {CEUR} Workshop Proceedings}, pages 140--154. CEUR-WS.org, 2014. \bibitem{AntoyHanus16PADL} S.~Antoy and M.~Hanus. \newblock Default rules for {Curry}. \newblock In {\em Proc. of the 18th International Symposium on Practical Aspects of Declarative Languages (PADL 2016)}, pages 65--82. Springer LNCS 9585, 2016. \bibitem{BrasselHanusMueller08PADL} B.~Bra{\ss}el, M.~Hanus, and M.~M{\"u}ller. \newblock High-level database programming in {Curry}. \newblock In {\em Proc. of the Tenth International Symposium on Practical Aspects of Declarative Languages (PADL'08)}, pages 316--332. Springer LNCS 4902, 2008. \bibitem{Hanus01PADL} M.~Hanus. \newblock High-level server side web scripting in {C}urry. \newblock In {\em Proc.\ of the Third International Symposium on Practical Aspects of Declarative Languages (PADL'01)}, pages 76--92. Springer LNCS 1990, 2001. \bibitem{HanusKrone17EPTCS} M.~Hanus and J.~Krone. \newblock A typeful integration of {SQL} into {Curry}. \newblock In {\em Proceedings of the 24th International Workshop on Functional and (Constraint) Logic Programming}, volume 234 of {\em Electronic Proceedings in Theoretical Computer Science}, pages 104--119. Open Publishing Association, 2017. \bibitem{Krone15} J.~Krone. \newblock Integration of {SQL} into {Curry}. \newblock Master's thesis, University of Kiel, 2015. \end{thebibliography} \end{document} pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/currypp/manual.tex000066400000000000000000000673551323431571100303160ustar00rootroot00000000000000\section{CurryPP: A Preprocessor for Curry Programs} The Curry preprocessor \ccode{currypp} \index{Curry preprocessor}\index{preprocessor} implements various transformations on Curry source programs. It supports some experimental language extensions that might become part of the standard parser of Curry in some future version. Currently, the Curry preprocessor supports the following extensions that will be described below in more detail: \begin{description} \item[Integrated code:] This extension allows to integrate code written in some other language into Curry programs, like regular expressions, format specifications (\ccode{printf}), HTML and XML code. \item[Default rules:] If this feature is used, one can add a default rule to operations defined in a Curry module. This provides a similar power than sequential rules but with a better operational behavior. The idea of default rules is described in \cite{AntoyHanus16PADL}. \item[Contracts:] If this feature is used, the Curry preprocessor looks for contracts (i.e., specification, pre- and postconditions) occurring in a Curry module and adds them as assertions that are checked during the execution of the program. Currently, only strict assertion checking is supported which might change the operational behavior of the program. The idea and usage of contracts is described in \cite{AntoyHanus12PADL}. \end{description} \subsection{Installation} The current implementation of Curry preprocessor is a package managed by the Curry Package Manager CPM. Thus, to install the newest version of \code{currypp}, use the following commands: % \begin{curry} > cypm update > cypm install currypp \end{curry} % This downloads the newest package, compiles it, and places the executable \code{currypp} into the directory \code{\$HOME/.cpm/bin}. Hence one should add this directory to the path in order to use the Curry preprocessor as described below. \subsection{Basic Usage} In order to apply the preprocessor when loading a Curry source program into \CYS, one has to add an option line at the beginning of the source program. For instance, in order to use default rules in a Curry program, one has to put the line \begin{curry} {-# OPTIONS_CYMAKE -F --pgmF=currypp --optF=defaultrules #-} \end{curry} at the beginning of the program. This option tells the \CYS front end to process the Curry source program with the program \code{currypp} before actually parsing the source text. The option \ccode{defaultrules} has to be replaced by \ccode{contracts} to enable dynamic contract checking. To support integrated code, one has to set the option \ccode{foreigncode} (which can also be combined with \ccode{defaultrules}). If one wants to see the result of the transformation, one can also set the option \ccode{-o}. This has the effect that the transformed source program is stored in the file \code{Prog.curry.CURRYPP} if the name of the original program is \code{Prog.curry}. For instance, in order to use integrated code and default rules in a module and store the transformed program, one has to put the line \begin{curry} {-# OPTIONS_CYMAKE -F --pgmF=currypp --optF=foreigncode --optF=defaultrules --optF=-o #-} \end{curry} at the beginning of the program. % If the options about the kind of preprocessing is omitted, all kinds of preprocessing are applied. Thus, the preprocessor directive \begin{curry} {-# OPTIONS_CYMAKE -F --pgmF=currypp #-} \end{curry} is equivalent to \begin{curry} {-# OPTIONS_CYMAKE -F --pgmF=currypp --optF=foreigncode --optF=defaultrules --optF=contracts #-} \end{curry} \subsection{Integrated Code} Integrated code is enclosed in at least two back ticks and ticks in a Curry program. The number of starting back ticks and ending ticks must always be identical. After the initial back ticks, there must be an identifier specifying the kind of integrated code, e.g., \code{regex} or \code{html} (see below). For instance, if one uses regular expressions (see below for more details), the following expressions are valid in source programs: \begin{curry} match ``regex (a|(bc*))+'' match ````regex aba*c'''' \end{curry} The Curry preprocessor transforms these code pieces into regular Curry expressions. For this purpose, the program containing this code must start with the preprocessing directive \begin{curry} {-# OPTIONS_CYMAKE -F --pgmF=currypp --optF=foreigncode #-} \end{curry} % The next sections describe the currently supported foreign languages. \subsubsection{Regular Expressions} In order to match strings against regular expressions, i.e., to check whether a string is contained in the language generated by a regular expression, one can specify regular expression similar to POSIX. The foreign regular expression code must be marked by \ccode{regex}. Since this code is transformed into operations of the \CYS library \code{RegExp}, this library must be imported. For instance, the following module defines a predicate to check whether a string is a valid identifier: \begin{curry} {-# OPTIONS_CYMAKE -F --pgmF=currypp --optF=foreigncode #-} import RegExp isID :: String -> Bool isID = match ``regex [a-zA-Z][a-zA-Z0-9_']*'' \end{curry} \subsubsection{Format Specifications} In order to format numerical and other data as strings, one can specify the desired format with foreign code marked by \ccode{format}. In this case, one can write a format specification, similarly to the \code{printf} statement of C, followed by a comma-separated list of arguments. This format specification is transformed into operations of the \CYS library \code{Format} so that it must be imported. For instance, the following program defines an operation that formats a string, an integer (with leading sign and zeros), and a float with leading sign and precision 3: \begin{currynomath} {-# OPTIONS_CYMAKE -F --pgmF=currypp --optF=foreigncode #-} import Format showSIF :: String -> Int -> Float -> String showSIF s i f = ``format "Name: %s | %+.5i | %+6.3f",s,i,f'' main = putStrLn $ showSIF "Curry" 42 3.14159 \end{currynomath} % $ Thus, the execution of \code{main} will print the line \begin{curry} Name: Curry | +00042 | +3.142 \end{curry} Instead of \ccode{format}, one can also write a format specification with \code{printf}. In this case, the formatted string is printed with \code{putStr}. Hence, we can rewrite our previous definitions as follows: \begin{curry} showSIF :: String -> Int -> Float -> IO () showSIF s i f = ``printf "Name: %s | %+.5i | %+6.3f\n",s,i,f'' main = showSIF "Curry" 42 3.14159 \end{curry} \subsubsection{HTML Code} The foreign language tag \ccode{html} introduces a notation for HTML expressions (see \CYS library \code{HTML}) with the standard HTML syntax extended by a layout rule so that closing tags can be omitted. In order to include strings computed by Curry expressions into these HTML syntax, these Curry expressions must be enclosed in curly brackets. The following example program shows its use: \begin{curry} {-# OPTIONS_CYMAKE -F --pgmF=currypp --optF=foreigncode #-} import HTML htmlPage :: String -> [HtmlExp] htmlPage name = ``html Simple Test <body> <h1>Hello {name}!</h1> <p> Bye! <p>Bye! <h2>{reverse name} Bye!'' \end{curry} % If a Curry expression computes an HTML expression, i.e., it is of type \code{HtmlExp} instead of \code{String}, it can be integrated into the HTML syntax by double curly brackets. The following simple example, taken from \cite{Hanus01PADL}, shows the use of this feature: \begin{currynomath} {-# OPTIONS_CYMAKE -F --pgmF=currypp --optF=foreigncode #-} import HTML main :: IO HtmlForm main = return $ form "Question" $ ``html Enter a string: {{textfield tref ""}} <hr> {{button "Reverse string" revhandler}} {{button "Duplicate string" duphandler}}'' where tref free revhandler env = return $ form "Answer" ``html <h1>Reversed input: {reverse (env tref)}'' duphandler env = return $ form "Answer" ``html <h1> Duplicated input: {env tref ++ env tref}'' \end{currynomath} \subsubsection{XML Expressions} The foreign language tag \ccode{xml} introduces a notation for XML expressions (see \CYS library \code{XML}). The syntax is similar to the language tag \ccode{html}, i.e., the use of the layout rule avoids closing tags and Curry expressions evaluating to strings (\code{String}) and XML expressions (\code{XmlExp}) can be included by enclosing them in curly and double curly brackets, respectively. The following example program shows its use: \begin{currynomath} {-# OPTIONS_CYMAKE -F --pgmF=currypp --optF=foreigncode #-} import HTML import XML main :: IO () main = putStrLn $ showXmlDoc $ head ``xml <contact> <entry> <phone>+49-431-8807271 <name>Hanus <first>Michael <email>mh@informatik.uni-kiel.de <email>hanus@email.uni-kiel.de <entry> <name>Smith <first>Bill <phone>+1-987-742-9388 '' \end{currynomath} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{SQL Statements} \label{sec:integratedsql} The Curry preprocessor also supports SQL statements in their standard syntax as integrated code. In order to ensure a type-safe integration of SQL statements in Curry programs, SQL queries are type-checked in order to determine their result type and ensure that the entities used in the queries are type correct with the underlying relational database. For this purpose, SQL statements are integrated code require a specification of the database model in form of entity-relationship (ER) model. From this description, a set of Curry data types are generated which are used to represent entities in the Curry program (see Section~\ref{sec:erd2cdbi}). The Curry preprocessor uses this information to type check the SQL statements and replace them by type-safe access methods to the database. In the following, we sketch the use of SQL statements as integrated code. A detailed description of the ideas behind this technique can be found in \cite{HanusKrone17EPTCS}. Currently, only SQLite databases are supported. \subsubsection{ER Specifications} \label{sec:erd2cdbi} The structure of the data stored in underlying database must be described as an entity-relationship model. Such a description consists of \begin{enumerate} \item a list of entities where each entity has attributes, \item a list of relationships between entities which have cardinality constraints that must be satisfied in each valid state of the database. \end{enumerate} % Entity-relationships models are often visualized as entity-relationship diagrams (ERDs). Figure~\ref{fig:erd} shows an ERD which we use in the following examples. \begin{figure*}[t] \begin{center} \includegraphics[trim= 0 320 120 0,scale=0.7, clip=true]{\curryppdocs/diagram.pdf} \end{center} \caption{A simple entity-relationship diagram for university lectures \cite{HanusKrone17EPTCS}} \label{fig:erd} \end{figure*} Instead of requiring the use of soem graphical ER modeling tool, ERDs must be specified in textual form as a Curry data term, see also \cite{BrasselHanusMueller08PADL}. In this representation, an ERD has a name, which is also used as the module name of the generated Curry code, lists of entities and relationships: % \begin{curry} data ERD = ERD String [Entity] [Relationship] \end{curry} % Each entity consists of a name and a list of attributes, where each attribute has a name, a domain, and specifications about its key and null value property: \begin{curry} data Entity = Entity String [Attribute] data Attribute = Attribute String Domain Key Null data Key = NoKey | PKey | Unique type Null = Bool data Domain = IntDom (Maybe Int) | FloatDom (Maybe Float) | CharDom (Maybe Char) | StringDom (Maybe String) | BoolDom (Maybe Bool) | DateDom (Maybe ClockTime) | UserDefined String (Maybe String) | KeyDom String -- later used for foreign keys \end{curry} % Thus, each attribute is part of a primary key (\code{PKey}), unique (\code{Unique}), or not a key (\code{NoKey}). Furthermore, it is allowed that specific attributes can have null values, i.e., can be undefined. The domain of each attribute is one of the standard domains or some user-defined type. In the latter case, the first argument of the constructor \code{UserDefined} is the qualified type name used in the Curry application program. For each kind of domain, one can also have a default value (modeled by the \code{Maybe} type). The constructor \code{KeyDom} is not necessary to represent ERDs but it is internally used to transform complex ERDs into relational database schemas. Finally, each relationship has a name and a list of connections to entities (\code{REnd}), where each connection has the name of the connected entity, the role name of this connection, and its cardinality as arguments: \begin{curry} data Relationship = Relationship String [REnd] data REnd = REnd String String Cardinality data Cardinality = Exactly Int | Between Int MaxValue data MaxValue = Max Int | Infinite \end{curry} The cardinality is either a fixed integer or a range between two integers (where \code{Infinite} as the upper bound represents an arbitrary cardinality). For instance, the simple-complex (1:n) relationship \code{Teaching} in Fig.\ref{fig:erd} can be represented by the term \begin{curry} Relationship "Teaching" [REnd "Lecturer" "taught_by" (Exactly 1), REnd "Lecture" "teaches" (Between 0 Infinite)] \end{curry} % The \CYS library \code{Database.ERD} contains the ER datatypes described above. Thus, the specification of the conceptual database model must be a data term of type \code{Database.ERD.ERD}. % \begin{figure}[t] \begin{curry} ERD "Uni" [Entity "Student" [Attribute "Name" (StringDom Nothing) NoKey False, Attribute "Firstname" (StringDom Nothing) NoKey False, Attribute "MatNum" (IntDom Nothing) Unique False, Attribute "Email" (StringDom Nothing) Unique False, Attribute "Age" (IntDom Nothing) NoKey True], Entity "Lecture" [Attribute "Title" (StringDom Nothing) NoKey False, Attribute "Topic" (StringDom Nothing) NoKey True], Entity "Lecturer" [Attribute "Name" (StringDom Nothing) NoKey False, Attribute "Firstname" (StringDom Nothing) NoKey False], Entity "Place" [Attribute "Street" (StringDom Nothing) NoKey False, Attribute "StrNr" (IntDom Nothing) NoKey False, Attribute "RoomNr" (IntDom Nothing) NoKey False], Entity "Time" [Attribute "Time" (DateDom Nothing) Unique False], Entity "Exam" [Attribute "GradeAverage" (FloatDom Nothing) NoKey True], Entity "Result" [Attribute "Attempt" (IntDom Nothing) NoKey False, Attribute "Grade" (FloatDom Nothing) NoKey True, Attribute "Points" (IntDom Nothing) NoKey True]] [Relationship "Teaching" [REnd "Lecturer" "taught_by" (Exactly 1), REnd "Lecture" "teaches" (Between 0 Infinite)], Relationship "Participation" [REnd "Student" "participated_by" (Between 0 Infinite), REnd "Lecture" "participates" (Between 0 Infinite)], Relationship "Taking" [REnd "Result" "has_a" (Between 0 Infinite), REnd "Student" "belongs_to" (Exactly 1)], Relationship "Resulting" [REnd "Exam" "result_of" (Exactly 1), REnd "Result" "results_in" (Between 0 Infinite)], Relationship "Belonging" [REnd "Exam" "has_a" (Between 0 Infinite), REnd "Lecture" "belongs_to" (Exactly 1)], Relationship "ExamDate" [REnd "Exam" "taking_place" (Between 0 Infinite), REnd "Time" "at" (Exactly 1)], Relationship "ExamPlace" [REnd "Exam" "taking_place" (Between 0 Infinite), REnd "Place" "in" (Exactly 1)]] \end{curry} \caption{The ER data term specification of Fig.~\ref{fig:erd}\label{fig:erdterm}} \end{figure} Figure~\ref{fig:erdterm} on (page~\pageref{fig:erdterm}) shows the complete ER data term specification corresponding to the ERD of Fig.~\ref{fig:erd}. Such a data term specification should be stored in Curry program file as an (exported!) top-level operation type \code{ERD}. If our example term is defined as a constant in the Curry program \code{UniERD.curry}, then one has to use the tool \ccode{erd2curry} to process the ER model so that it can be used in SQL statements. This tool is invoked with the parameter \ccode{--cdbi}, the (preferably absolute) file name of the SQLite database, and the name of the Curry program containing the ER specification. If the SQLite database file does not exist, it will be initialized by the tool. In our example, we execute the following command (provided that the tool \code{erd2curry} is already installed: % \begin{curry} > erd2curry --db `pwd`/Uni.db --cdbi UniERD.curry \end{curry} % This initializes the SQLite database \code{Uni.db} and performs the following steps: % \begin{enumerate} \item The ER model is transformed into tables of a relational database, i.e., the relations of the ER model are either represented by adding foreign keys to entities (in case of (0/1:1) or (0/1:n) relations) or by new entities with the corresponding relations (in case of complex (n:m) relations). \item A new Curry module \code{Uni\us{}CDBI} is generated. It contains the definitions of entities and relationships as Curry data types. Since entities are uniquely identified via a database key, each entity definition has, in addition to its attributes, this key as the first argument. For instance, the following definitions are generated for our university ERD (among many others): % \begin{curry} data StudentID = StudentID Int$\listline$ data Student = Student StudentID String String Int String Int$\listline$ -- Representation of n:m relationship Participation: data Participation = Participation StudentID LectureID \end{curry} % Note that the two typed foreign key columns (\code{StudentID}, \code{LectureID}) ensures a type-safe handling of foreign-key constraints. These entity descriptions are relevant for SQL queries since some queries (e.g., those that do not project on particular database columns) return lists of such entities. Moreover, the generated module contains useful getter and setter functions for each entity. Other generated operations, like entity description and definitions of their columns, are not relevant for the programming but only used for the translation of SQL statements. \item Finally, an \emph{info file} \code{Uni\us{}SQLCODE.info} is created. It contains information about all entities, attributes and their types, and relationships. This file is used by the SQL parser and translator of the Curry preprocessor to type check the SQL statements and generate appropriate Curry library calls. \end{enumerate} \subsubsection{SQL Statements as Integrated Code} After specifying and processing the ER model of the database, one can write SQL statements in their standard syntax as integrated code (marked by the language tag \ccode{sql}) in Curry programs. Since the SQL translator checks the correct use of these statements against the ER model, it needs access to the generated info file \code{Uni\us{}SQLCODE.info}. This can be ensured in one of the following ways: \begin{itemize} \item The path to the info file is passed as a parameter prefixed by \ccode{--model:} to the Curry preprocessor, e.g., by the preprocessor directive \begin{curry} {-# OPTIONS_CYMAKE -F --pgmF=currypp --optF=--model:$\ldots$/Uni_SQLCode.info #-} \end{curry} \item The info file is placed in the same directory as the Curry source file to be processed or in one of its parent directories. The directories are searched from the directory of the source file up to its parent directories. If one of these directories contain more than one file with the name \ccode{\ldots{}\us{}SQLCODE.info}, an error is reported. \end{itemize} % After this preparation, one can write SQL statements in the Curry program. For instance, to retrieve all students from the database, one can define the following SQL query: % \begin{curry} allStudents :: IO (SQLResult [Student]) allStudents = ``sql Select * From Student;'' \end{curry} % Since the execution of database accesses might produce errors, the result of SQL statements is always of type \ccode{SQLResult $\tau$}, where \code{SQLResult} is a type synonym defined in the \CYS library \code{Database.CDBI.Connection}: % \begin{curry} type SQLResult a = Either DBError a \end{curry} % This library defines also an operation % \begin{curry} fromSQLResult :: SQLResult a -> a \end{curry} % which returns the retrieved database value or raises a run-time error. Hence, if one does not want to check the occurrence of database errors immediately, one can also define the above query as follows: % \begin{curry} allStudents :: IO [Student] allStudents = liftM fromSQLResult ``sql Select * From Student;'' \end{curry} % In order to get more control on executing the SQL statement, one can add a star character after the language tag. In this case, the SQL statement is translated into a database action, i.e., into the type \code{DBAction} defined in the \CYS library \code{Database.CDBI.Connection}: % \begin{curry} allStudentsAction :: DBAction [Student] allStudentsAction = ``sql* Select * From Student;'' \end{curry} % Then one can put \code{allStudentsAction} inside a database transaction or combine it with other database actions (see \code{Database.CDBI.Connection} for operations for this purpose). In order to select students with an age between 20 and 25, one can put a condition as usual: % \begin{curry} youngStudents :: IO (SQLResult [Student]) youngStudents = ``sql Select * From Student Where Age between 18 and 21;'' \end{curry} % Usually, one wants to parameterize queries over some values computed by the context of the Curry program. Therefore, one can embed Curry expressions instead of concrete values in SQL statements by enclosing them in curly brackets: % \begin{curry} studAgeBetween :: Int -> Int -> IO (SQLResult [Student]) studAgeBetween min max = ``sql Select * From Student Where Age between {min} and {max};'' \end{curry} % Instead of retrieving complete entities (database tables), one can also project on some attributes (database columns) and one can also order them with the usual \ccode{Order By} clause: % \begin{curry} studAgeBetween :: Int -> Int -> IO (SQLResult [(String,Int)]) studAgeBetween min max = ``sql Select Name, Age From Student Where Age between {min} and {max} Order By Name Desc;'' \end{curry} % In addition to the usual SQL syntax, one can also write conditions on relationships between entities. For instance, the following code will be accepted: % \begin{curry} studGoodGrades :: IO (SQLResult [(String, Float]) studGoodGrades = ``sql Select Distinct s.Name, r.Grade From Student as s, Result as r Where Satisfies s has_a r And r.Grade < 2.0;'' \end{curry} % This query retrieves a list of pairs containing the names and grades of students having a grade better than \code{2.0}. This query is beyond pure SQL since it also includes a condition on the relation \code{has\us{}a} specified in the ER model (\ccode{Satisfies s has\us{}a r}). The complete SQL syntax supported by the Curry preprocessor is shown in Appendix~\ref{app:sqlsyntax}. More details about the implementation of this SQL translator can be found in \cite{HanusKrone17EPTCS,Krone15}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Default Rules} An alternative to sequential rules are default rules, i.e., these two options cannot be simultaneously used. Default rules are activated by the preprocessor option \ccode{defaultrules}. In this case, one can add to each operation a default rule. A default rule for a function $f$ is defined as a rule defining the operation \ccode{$f$'default} (this mechanism avoids any language extension for default rules). A default rule is applied only if no ``standard'' rule is applicable, either because the left-hand sides' pattern do not match or the conditions are not satisfiable. The idea and detailed semantics of default rules are described in \cite{AntoyHanus16PADL}. Default rules are preferable over the sequential rule selection strategy since they have a better operational behavior. This is due to the fact that the test for the application of default rules is done with the same (sometimes optimal) strategy than the selection of standard rules. Moreover, default rules provide a similar power than sequential rules, i.e., they can be applied if the standard rules have complex (functional) patterns or complex conditions. As a simple example, we show the implementation of the previous example for sequential rules with a default rule: % \begin{curry} {-# OPTIONS_CYMAKE -F --pgmF=currypp --optF=defaultrules #-} mlookup key (_ ++ [(key,value)] ++ _) = Just value mlookup'default _ _ = Nothing \end{curry} % Default rules are often a good replacement for ``negation as failure'' used in logic programming. For instance, the following program defines a solution to the $n$-queens puzzle, where the default rule is useful since it is easier to characterize the unsafe positions of the queens on the chessboard (see the first rule of \code{safe}): % \begin{curry} {-# OPTIONS_CYMAKE -F --pgmF=currypp --optF=defaultrules #-} import Combinatorial(permute) import Integer(abs) -- A placement is safe if two queens are not in a same diagonal: safe (_++[x]++ys++[z]++_) | abs (x-z) == length ys + 1 = failed safe'default xs = xs -- A solution to the n-queens puzzle is a safe permutation: queens :: Int -> [Int] queens n = safe (permute [1..n]) \end{curry} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Contracts} Contracts are annotations in Curry program to specify the intended meaning and use of operations by other operations or predicates expressed in Curry. The idea of using contracts for the development of reliable software is discussed in \cite{AntoyHanus12PADL}. The Curry preprocessor supports dynamic contract checking by transforming contracts, i.e., specifications and pre-/postconditions, into assertions that are checked during the execution of a program. If some contract is violated, the program terminates with an error. The transformation of contracts into assertions is described in \cite{AntoyHanus12PADL}. Note that only strict assertion checking is supported at the moment. Strict assertion checking might change the operational behavior of the program. The notation of contracts is defined in \cite{AntoyHanus12PADL}. To transform such contracts into assertions, one has to use the option \ccode{contracts} for the preprocessor. As a concrete example, consider an implementation of quicksort with a postcondition and a specification (where the code for \code{sorted} and \code{perm} is not shown here): % \begin{curry} {-# OPTIONS_CYMAKE -F --pgmF=currypp --optF=contracts #-} $\ldots$ -- Trivial precondition: sort'pre xs = length xs >= 0 -- Postcondition: input and output lists should have the same length sort'post xs ys = length xs == length ys -- Specification: -- A correct result is a permutation of the input which is sorted. sort'spec :: [Int] -> [Int] sort'spec xs | ys == perm xs && sorted ys = ys where ys free -- A buggy implementation of quicksort: sort :: [Int] -> [Int] sort [] = [] sort (x:xs) = sort (filter (<x) xs) ++ [x] ++ sort (filter (>x) xs) \end{curry} % If this program is executed, the generated assertions report a contract violation for some inputs: % \begin{curry} Quicksort> sort [3,1,4,2,1] Postcondition of 'sort' (module Quicksort, line 27) violated for: [1,2,1] -> [1,2] ERROR: Execution aborted due to contract violation! \end{curry} % LocalWords: preprocessor %%% Local Variables: %%% mode: latex %%% TeX-master: "main" %%% End: �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/currypp/sqlsyntax.tex�������0000664�0000000�0000000�00000016642�13234315711�0031100�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������\section{SQL Syntax Supported by CurryPP} \label{app:sqlsyntax} This section contains a grammar in EBNF which specifies the SQL syntax recognized by the Curry preprocessor in integrated SQL code (see Sect.~\ref{sec:integratedsql}). % The grammar satisfies the LL(1) property and is influenced by the SQLite dialect.\footnote{\url{https://sqlite.org/lang.html}} \begin{lstlisting} --------------type of statements-------------------------------- statement ::= queryStatement | transactionStatement queryStatement ::= ( deleteStatement | insertStatement | selectStatement | updateStatement ) ';' ------------- transaction ------------------------------------- transactionStatement ::= (BEGIN |IN TRANSACTION '(' queryStatement { queryStatement }')' |COMMIT |ROLLBACK ) ';' -------------- delete ------------------------------------------ deleteStatement ::= DELETE FROM tableSpecification [ WHERE condition ] -------------insert ------------------------------------------- insertStatement ::= INSERT INTO tableSpecification insertSpecification insertSpecification ::= ['(' columnNameList ')' ] valuesClause valuesClause ::= VALUES valueList ------------update-------------------------------------------- updateStatement ::= UPDATE tableSpecification SET (columnAssignment {',' columnAssignment} [ WHERE condition ] | embeddedCurryExpression ) columnAssignment ::= columnName '=' literal -------------select statement --------------------------------- selectStatement ::= selectHead { setOperator selectHead } [ orderByClause ] [ limitClause ] selectHead ::= selectClause fromClause [ WHERE condition ] [ groupByClause [ havingClause ]] setOperator ::= UNION | INTERSECT | EXCEPT selectClause ::= SELECT [( DISTINCT | ALL )] ( selectElementList | '*' ) selectElementList ::= selectElement { ',' selectElement } selectElement ::= [ tableIdentifier'.' ] columnName | aggregation | caseExpression aggregation ::= function '(' [ DISTINCT ] columnReference ')' caseExpression ::= CASE WHEN condition THEN operand ELSE operand END function ::= COUNT | MIN | MAX | AVG | SUM fromClause ::= FROM tableReference { ',' tableReference } groupByClause ::= GROUP BY columnList havingClause ::= HAVING conditionWithAggregation orderByClause ::= ORDER BY columnReference [ sortDirection ] {',' columnReference [ sortDirection ] } sortDirection ::= ASC | DESC limitClause = LIMIT integerExpression -------------common elements----------------------------------- columnList ::= columnReference { ',' columnReference } columnReference ::= [ tableIdentifier'.' ] columnName columnNameList ::= columnName { ',' columnName} tableReference ::= tableSpecification [ AS tablePseudonym ] [ joinSpecification ] tableSpecification ::= tableName condition ::= operand operatorExpression [logicalOperator condition] | EXISTS subquery [logicalOperator condition] | NOT condition | '(' condition ')' | satConstraint [logicalOperator condition] operand ::= columnReference | literal subquery ::= '(' selectStatement ')' operatorExpression ::= IS NULL | NOT NULL | binaryOperator operand | IN setSpecification | BETWEEN operand operand | LIKE quotes pattern quotes setSpecification ::= literalList binaryOperator ::= '>'| '<' | '>=' | '<=' | '=' | '!=' logicalOperator ::= AND | OR conditionWithAggregation ::= aggregation [logicalOperator disaggregation] | '(' conditionWithAggregation ')' | operand operatorExpression [logicalOperator conditionWithAggregation] | NOT conditionWithAggregation | EXISTS subquery [logicalOperator conditionWithAggregation] | satConstraint [logicalOperator conditionWithAggregation] aggregation ::= function '('(ALL | DISTINCT) columnReference')' binaryOperator operand satConstraint ::= SATISFIES tablePseudonym relation tablePseudonym joinSpecification ::= joinType tableSpecification [ AS tablePseudonym ] [ joinCondition ] [ joinSpecification ] joinType ::= CROSS JOIN | INNER JOIN joinCondition ::= ON condition -------------identifier and datatypes------------------------- valueList ::= ( embeddedCurryExpression | literalList ) {',' ( embeddedCurryExpression | literalList )} literalList ::= '(' literal { ',' literal } ')' literal ::= numericalLiteral | quotes alphaNumericalLiteral quotes | dateLiteral | booleanLiteral | embeddedCurryExpression | NULL numericalLiteral ::= integerExpression |floatExpression integerExpression ::= [ - ] digit { digit } floatExpression := [ - ] digit { digit } '.' digit { digit } alphaNumericalLiteral ::= character { character } character ::= digit | letter dateLiteral ::= year ':' month ':' day ':' hours ':' minutes ':' seconds month ::= digit digit day ::= digit digit hours ::= digit digit minutes ::= digit digit seconds ::= digit digit year ::= digit digit digit digit booleanLiteral ::= TRUE | FALSE embeddedCurryExpression ::= '{' curryExpression '}' pattern ::= ( character | specialCharacter ) {( character | specialCharacter )} specialCharacter ::= '%' | '_' digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 letter ::= (a...z) | (A...Z) tableIdentifier ::= tablePseudonym | tableName columnName ::= letter [alphanumericalLiteral] tableName ::= letter [alphanumericalLiteral] tablePseudonym ::= letter relation ::= letter [[alphanumericalLiteral] | '_' ] quotes ::= ('"'|''') \end{lstlisting} %%% Local Variables: %%% mode: latex %%% TeX-master: "../../../docs/src/manual" %%% End: ����������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/ertools/��������������������0000775�0000000�0000000�00000000000�13234315711�0026262�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/ertools/README.txt����������0000664�0000000�0000000�00000000223�13234315711�0027755�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������This directory contains some documention for the tool: manual.tex: A short description to be included in the main manual of the Curry system. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/ertools/manual.tex����������0000664�0000000�0000000�00000010620�13234315711�0030260�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������\section{ERD2Curry: A Tool to Generate Programs from ER Specifications} \label{sec-erd2curry} ERD2Curry\index{ERD2Curry}\index{database programming} is a tool to generate Curry code to access and manipulate data persistently stored in relational databases. The Curry code is generated from a description of the logical model of the database in form of an entity relationship diagram.\index{entity relationship diagram} The idea of this tool is described in detail in \cite{BrasselHanusMueller08PADL}. Thus, we describe only the basic steps to use this tool. \subsection{Installation} The current implementation of ERD2Curry is a package managed by the Curry Package Manager CPM (see also Section~\ref{sec-cpm}). Thus, to install the newest version of ERD2Curry, use the following commands: % \begin{curry} > cypm update > cypm install ertools \end{curry} % This downloads the newest package, compiles it, and places the executable \code{erd2curry} into the directory \code{\$HOME/.cpm/bin}. Hence it is recommended to add this directory to your path in order to execute ERD2Curry as described below. \subsection{Basic Usage} If one creates an entity relationship diagram (ERD) with the Umbrello UML Modeller, one has to store its XML description in XMI format (as offered by Umbrello) in a file, e.g., \ccode{myerd.xmi}. This description can be compiled into a Curry program by the command\pindex{curry erd2curry}\pindex{erd2curry} \begin{curry} erd2curry -x myerd.xmi \end{curry} If \code{MyData} is the name of the ERD, the Curry program file \ccode{MyData.curry} is generated containing all the necessary database access code as described in \cite{BrasselHanusMueller08PADL}. In addition to the generated Curry program file, two auxiliary program files \code{ERDGeneric.curry} and \code{KeyDatabase.curry} are created in the same directory. % \begin{figure}[t] \begin{curry} import Database.ERD blogERD :: ERD blogERD = ERD "Blog" [Entity "Entry" [Attribute "Title" (StringDom Nothing) Unique False, Attribute "Text" (StringDom Nothing) NoKey False, Attribute "Author" (StringDom Nothing) NoKey False, Attribute "Date" (DateDom Nothing) NoKey False], Entity "Comment" [Attribute "Text" (StringDom Nothing) NoKey False, Attribute "Author" (StringDom Nothing) NoKey False, Attribute "Date" (DateDom Nothing) NoKey False], Entity "Tag" [Attribute "Name" (StringDom Nothing) Unique False] ] [Relationship "Commenting" [REnd "Entry" "commentsOn" (Exactly 1), REnd "Comment" "isCommentedBy" (Between 0 Infinite)], Relationship "Tagging" [REnd "Entry" "tags" (Between 0 Infinite), REnd "Tag" "tagged" (Between 0 Infinite)] ] \end{curry} \caption{The Curry program \code{BlogERD.curry}\label{fig:blogerdcurry}} \end{figure} If one does not want to use the Umbrello UML Modeller, which might be the preferred method since the interface to the Umbrello UML Modeller is no longer actively supported, one can also define an ERD in a Curry program as a (exported!) top-level operation of type \code{ERD} (w.r.t.\ the type definition given in the library \code{\cyshome/lib/Database/ERD.curry}). % The directory \code{examples} in the package \code{ertools}\footnote{% If you installed ERD2Curry as described above, the downloaded \code{ertools} package is located in the directory \code{\$HOME/.cpm/bin_packages/ertools}.} contains two examples for such ERD program files: \begin{description} \item[\code{BlogERD.curry}:] This is a simple ERD model for a blog with entries, comments, and tags. \item[\code{UniERD.curry}:] This is an ERD model for university lectures as presented in the paper \cite{BrasselHanusMueller08PADL}. \end{description} % Figure~\ref{fig:blogerdcurry} shows the ER specification stored in the Curry program file \ccode{BlogERD.curry}. This ER specification can be compiled into a Curry program by the command\pindex{erd2curry} \begin{curry} erd2curry BlogERD.curry \end{curry} % There is also the possibility to visualize an ER specification as a graph with the graph visualization program \code{dotty} (for this purpose, it might be necessary to adapt the definition of \code{dotviewcommand} in your \ccode{\curryrc} file, see Section~\ref{sec-customization}, according to your local environment). The visualization can be performed by the command \begin{curry} erd2curry -v BlogERD.curry \end{curry} ����������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/peval/����������������������0000775�0000000�0000000�00000000000�13234315711�0025702�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/peval/README.md�������������0000664�0000000�0000000�00000000310�13234315711�0027153�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������This is a partial evaluator for Curry implemented in Curry implemented by Björn Peemöller (CAU Kiel), based on the preceding work of Elvira Albert, German Vidal (UPV), and Michael Hanus (CAU Kiel). ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/peval/manual.bib������������0000664�0000000�0000000�00000002710�13234315711�0027635�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@book{Peemoeller2016, author = {Bj{\"o}rn Peem{\"o}ller}, title = {Normalization and Partial Evaluation of Functional Logic Programs}, publisher = {Department of Computer Science, Kiel University}, year = {2016}, note = {Dissertation, Faculty of Engineering, Kiel University} } @article{AlbertHanusVidal02JFLP, author = {Albert, Elvira and Hanus, Michael and Vidal, Germ{\'{a}}n}, title = {A Practical Partial Evaluator for a Multi-Paradigm Declarative Language}, year = {2002}, journal = {Journal of Functional and Logic Programming}, number = {1}, publisher = {EAPLS}, volume = {2002} } @inproceedings{Lopez-Fraguas07, author = {L\'{o}pez-Fraguas, Francisco Javier and Rodr\'{\i}guez-Hortal\'{a}, Juan and S\'{a}nchez-Hern\'{a}ndez, Jaime}, title = {A Simple Rewrite Notion for Call-time Choice Semantics}, booktitle = {Proceedings of the 9th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming}, series = {PPDP '07}, year = {2007}, isbn = {978-1-59593-769-8}, location = {Wroclaw, Poland}, pages = {197--208}, numpages = {12}, url = {http://doi.acm.org/10.1145/1273920.1273947}, doi = {10.1145/1273920.1273947}, acmid = {1273947}, publisher = {ACM}, address = {New York, NY, USA}, keywords = {constructor-based rewriting logic, functional-logic programming, local bindings, non-determinism calltime choice semantics, sharing, term rewriting systems}, } ��������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/peval/manual.tex������������0000664�0000000�0000000�00000017154�13234315711�0027711�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������\section{\texttt{curry-peval}: A Partial Evaluator for Curry} \label{sec-peval} peval\index{peval}\index{partial evaluation} is a tool for the partial evaluation of Curry programs. It operates on the FlatCurry representation and can thus easily be incorporated into the normal compilation chain. The essence of partial evaluation is to anticipate at compile time (or partial evaluation time) some of the computations normally performed at run time. Typically, partial evaluation is worthwhile for functions or operations where some of the input arguments are already known at compile time, or operations built by the composition of multiple other ones. The theoretical foundations, design and implementation of the partial evaluator is described in detail in \cite{Peemoeller2016}. \subsection{Installation} The current implementation of the partial evaluator is a package managed by the Curry Package Manager CPM (see also Section~\ref{sec-cpm}). Thus, to install the newest version of the partial evaluator, use the following commands: % \begin{curry} > cypm update > cypm install peval \end{curry} % This downloads the newest package, compiles it, and places the executable \code{curry-peval} into the directory \code{\$HOME/.cpm/bin}. Hence it is recommended to add this directory to your path in order to use the partial evaluator as described below. \subsection{Basic Usage} The partial evaluator is supplied as a binary that can be invoked for a single or multiple modules that should be partially evaluated. In each module, the partially evaluator assumes the parts of the program that should be partially evaluated to be annotated by the function \begin{curry} PEVAL :: a PEVAL x = x \end{curry} predefined in the module \code{Prelude}, such that the user can choose the parts to be considered. To give an example, we consider the following module which is assumed to be placed in the file \code{Examples/power4.curry}: \begin{curry} square x = x * x even x = mod x 2 == 0 power n x = if n <= 0 then 1 else if (even n) then power (div n 2) (square x) else x * (power (n - 1) x) power4 x = PEVAL (power 4 x) \end{curry} By the call to \code{PEVAL}, the expression \code{power 4 x} is marked for partial evaluation, such that the function \code{power} will be improved w.r.t. the arguments \code{4} and\code{x}. Since the first argument is known in this case, the partial evalautor is able to remove the case distinctions in the implementation of \code{power}, and we invoke it via \pindex{curry-peval}\pindex{peval} \begin{lstlisting}[mathescape=false] $ curry-peval Examples/power4.curry Curry Partial Evaluator Version 0.1 of 12/09/2016 CAU Kiel Annotated Expressions --------------------- power4.power 4 v1 Final Partial Evaluation ------------------------ power4._pe0 :: Prelude.Int -> Prelude.Int power4._pe0 v1 = let { v2 = v1 * v1 } in v2 * v2 Writing specialized program into file 'Examples/.curry/power4_pe.fcy'. \end{lstlisting} Note that the partial evaluator successfully removed the case distinction, such that the operation \code{power4} can be expected to run reasonably faster. The new auxiliary function \code{power4._pe0} is integrated into the existing module such that only the implementation of \code{power4} is changed, which becomes visible if we increase the level of verbosity: \begin{lstlisting}[mathescape=false] $ curry-peval -v2 Examples/power4.curry Curry Partial Evaluator Version 0.1 of 12/09/2016 CAU Kiel Annotated Expressions --------------------- power4.power 4 v1 ... (skipped output) Resulting program ----------------- module power4 ( power4.square, power4.even, power4.power, power4.power4 ) where import Prelude power4.square :: Prelude.Int -> Prelude.Int power4.square v1 = v1 * v1 power4.even :: Prelude.Int -> Prelude.Bool power4.even v1 = (Prelude.mod v1 2) == 0 power4.power :: Prelude.Int -> Prelude.Int -> Prelude.Int power4.power v1 v2 = case (v1 <= 0) of Prelude.True -> 1 Prelude.False -> case (power4.even v1) of Prelude.True -> power4.power (Prelude.div v1 2) (power4.square v2) Prelude.False -> v2 * (power4.power (v1 - 1) v2) power4.power4 :: Prelude.Int -> Prelude.Int power4.power4 v1 = power4._pe0 v1 power4._pe0 :: Prelude.Int -> Prelude.Int power4._pe0 v1 = let { v2 = v1 * v1 } in v2 * v2 \end{lstlisting} \subsection{Options} The partial evaluator can be parametrized using a number of options, which can also be shown using \code{--help}. \begin{description} \item{\code{-h}, \code{-?}, \code{--help}} These options trigger the output of usage information. \item{\code{-V}, \code{--version}} These options trigger the output of the version information of the partial evaluator. \item{\code{-d}, \code{--debug}} This flag is intended for development and testing issues only, and necessary to print the resulting program to the standard output stream even if the verbosity is set to zero. \item{\code{--assert}, \code{--closed}} These flags enable some internal assertions which are reasonable during development of the partial evaluator. \item{\code{--no-funpats}} Normally, functions defined using functional patterns are automatically considered for partial evaluation, since their annotation using \code{PEVAL} is a little bit cumbersome. However, this automatic consideration can be disabled using this flag. \item{\code{-v n}, \code{--verbosity=n}} Set the verbosity level to \code{n}, see above for the explanation of the different levels. \item{\code{--color=mode}, \code{--colour=mode}} Set the coloring mode to \code{mode}, see above for the explanation of the different modes. \item{\code{-S semantics}, \code{--semantics=semantics}} Allows the use to choose a semantics used during partial evaluation. Note that only the \code{natural} semantics can be considered correct for non-confluent programs, which is why it is the default semantics \cite{Peemoeller2016}. However, the \code{rlnt} calculus can also be chosen which is based on term rewriting, thus implementing a run-time choice semantics \cite{AlbertHanusVidal02JFLP}. The \code{letrw} semantics is currently not fully supported, but implements the gist of let-rewriting \cite{Lopez-Fraguas07}. \item{\code{-A mode}, \code{--abstract=mode}} During partial evaluation, all expressions that may potentially occur in the evaluation of an annotated expression are considered and evaluated, in order to ensure that all these expressions are also defined in the resulting program. Unfortunately, this imposes the risk of non-termination, which is why similar expressions are generalized according to the abstraction criterion. While the \code{none} criterion avoids generalizations and thus may lead to non-termination of the partial evaluator, the criteria \code{wqo} and \code{wfo} both ensure termination. In general, the criterion \code{wqo} seems to be a good compromise of ensured termination and the quality of the computed result program. \item{\code{-P mode}, \code{--proceed=mode}} While the abstraction mode is responsible to limit the number of different expressions to be considered, the proceed mode limits the number of function calls to be evaluated during the evaluation of a \emph{single} expressions. While the mode \code{one} only allows a single function call to be evaluated, the mode \code{each} allows a single call of each single function, while \code{all} puts no restrictions on the number of function calls to be evaluated. Clearly, the last alternative also imposes a risk of non-termination. \item{\code{--suffix=SUFFIX}} Set the suffix appended to the file name to compute the output file. If the suffix is set to the empty string, then the original FlatCurry file will be replaced. \end{description} ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/peval/structure.dot���������0000664�0000000�0000000�00000007121�13234315711�0030453�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// This graph contains the module dependencies of the partial evaluator digraph G { size = "11,8"; nodesep = .1; ranksep = .5; // program nodes { rank=same; peval; TestDriver; } { rank=same; PeLetRW; PeNatural; PeRLNT; Abstract; Renaming; PostUnfold; NameChange; } { rank=same; Heap; NDState; State; } Configuration; FlatCurry; FlatCurryGoodies; FlatCurryPretty; Instance; Normalization; Output; PevalBase; PevalOpts; Subst; // utility nodes + edges node[style=filled, color=gray]; { rank=same; GetOpt2; Pretty2; Set; Utils; } Abstract -> Pretty2; Abstract -> Utils; FlatCurryGoodies -> Utils; FlatCurryPretty -> Pretty2; GetOpt2 -> Utils; Heap -> Pretty2; Instance -> Pretty2; Instance -> Utils; Normalization -> Utils; PeLetRW -> Pretty2; PeNatural -> Pretty2; PeNatural -> Set; PeNatural -> Utils; PeRLNT -> Pretty2; peval -> Pretty2; PevalBase -> Pretty2; PevalOpts -> GetOpt2; PevalOpts -> Utils; PostUnfold -> Pretty2; PostUnfold -> Utils; Renaming -> Pretty2; Renaming -> Utils; Subst -> Pretty2; Subst -> Utils; TestDriver -> GetOpt2; TestDriver -> Utils; // program edges Abstract -> FlatCurry; Abstract -> FlatCurryGoodies; Abstract -> FlatCurryPretty; Abstract -> Instance; Abstract -> Normalization; Abstract -> Output; Abstract -> PevalOpts; Abstract -> Subst; FlatCurryGoodies -> FlatCurry; FlatCurryPretty -> FlatCurry; Heap -> FlatCurry; Heap -> FlatCurryGoodies; Heap -> FlatCurryPretty; Instance -> FlatCurry; Instance -> FlatCurryGoodies; Instance -> FlatCurryPretty; Instance -> Normalization; Instance -> Output; Instance -> Subst; NameChange -> FlatCurry; NameChange -> PevalBase; Normalization -> FlatCurry; Normalization -> FlatCurryGoodies; Normalization -> Output; Normalization -> PevalBase; Normalization -> Subst; Output -> PevalOpts; PeLetRW -> FlatCurry; PeLetRW -> FlatCurryGoodies; PeLetRW -> FlatCurryPretty; PeLetRW -> Normalization; PeLetRW -> Output; PeLetRW -> PevalOpts; PeLetRW -> State; PeLetRW -> Subst; PeNatural -> FlatCurry; PeNatural -> FlatCurryGoodies; PeNatural -> FlatCurryPretty; PeNatural -> Heap; PeNatural -> NDState; PeNatural -> Normalization; PeNatural -> Output; PeNatural -> PevalOpts; PeNatural -> Subst; PeRLNT -> FlatCurry; PeRLNT -> FlatCurryGoodies; PeRLNT -> FlatCurryPretty; PeRLNT -> Normalization; PeRLNT -> Output; PeRLNT -> PevalOpts; PeRLNT -> State; PeRLNT -> Subst; peval -> Abstract; peval -> FlatCurry; peval -> FlatCurryGoodies; peval -> FlatCurryPretty; peval -> NameChange; peval -> Normalization; peval -> Output; peval -> PeLetRW; peval -> PeNatural; peval -> PeRLNT; peval -> PevalBase; peval -> PevalOpts; peval -> PostUnfold; peval -> Renaming; PevalBase -> FlatCurry; PevalBase -> FlatCurryGoodies; PevalBase -> FlatCurryPretty; PevalOpts -> Configuration; PostUnfold -> FlatCurry; PostUnfold -> FlatCurryGoodies; PostUnfold -> FlatCurryPretty; PostUnfold -> NameChange; PostUnfold -> Normalization; PostUnfold -> Output; PostUnfold -> PevalBase; PostUnfold -> PevalOpts; Renaming -> FlatCurry; Renaming -> FlatCurryGoodies; Renaming -> FlatCurryPretty; Renaming -> Instance; Renaming -> Normalization; Renaming -> Output; Renaming -> PevalBase; Renaming -> PevalOpts; Renaming -> Subst; Subst -> FlatCurry; Subst -> FlatCurryGoodies; Subst -> FlatCurryPretty; Subst -> Output; TestDriver -> Configuration; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/peval/todo.md���������������0000664�0000000�0000000�00000003335�13234315711�0027175�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������Possible Extensions =================== - Improve partial evaluation of addition with the following rules: ~~~ l1 + (l2 + e) -> (l1 +A l2) + e l1 + (e + l2) -> (l1 +A l2) + e (l1 + e) + l2 -> e + (l1 +A l2) (e + l1) + l2 -> e + (l1 +A l2) ~~~ - Extend implementation to also consider function declarations of imported modules - Integrate algebraic optimizations such as, e.g, map-fusion: `map f (map g) xs => map (f . g) xs`. A concrete example for its usefulness is in `test/papers/wflp/scanl`. - Implement let-rewriting semantics: Derive an operational semantics based from its denotational semantics and implement it - Think about a generalization that may introduce new higher-order arguments if some substitution contains locally bound variables. - Investigate the problems resulting of the partial evaluation functional patterns constructing bindings of increasing size, e.g., `test/funpats/list/init`. Presumably this requires the following steps: - Investigate the example by hand and try to find a implementation that does not use functional patterns but has exactly the same semantics. - Think about the necessary transformation steps and whether they can be incorporated into the partial evaluator. - Often, this will require additional techniques such as strictness analysis to enable certain transformation steps, I suppose. Known Limitations ================= - Functions that use polymorphic recursion, which is an extension on standard Curry on its own, can currently be partially evaluated without further problems, but the subsequent type inference fails since the type annotations have been discarded. An example for this limitation can be found in `newtests/PolyRec.curry`. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/runcurry/�������������������0000775�0000000�0000000�00000000000�13234315711�0026464�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/runcurry/README.txt���������0000664�0000000�0000000�00000000240�13234315711�0030156�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������This directory contains some documention for the runcurry command: manual.tex: A short description to be included in the main manual of the Curry system. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/runcurry/manual.tex���������0000664�0000000�0000000�00000010620�13234315711�0030462�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������\section{\texttt{runcurry}: Running Curry Programs} \code{runcurry}\pindex{runcurry} is a simple tool to support the execution of Curry programs without explicitly invoking the interactive environment. Hence, it can be useful to write short scripts in Curry intended for direct execution. The Curry program must always contain the definition of an operation \code{main} of type \code{IO ()}. The execution of the program consists of the evaluation of this operation. \subsection{Installation} The implementation of \code{runcurry} is a package managed by the Curry Package Manager CPM. Thus, to install the newest version of \code{runcurry}, use the following commands: % \begin{curry} > cypm update > cypm install runcurry \end{curry} % This downloads the newest package, compiles it, and places the executable \code{runcurry} into the directory \code{\$HOME/.cpm/bin}. Hence it is recommended to add this directory to your path in order to use \code{runcurry} as described below. \subsection{Using \texttt{runcurry}} Basically, the command \code{runcurry} supports three modes of operation: \begin{itemize} \item One can execute a Curry program whose file name is provided as an argument when \code{runcurry} is called. In this case, the suffix (\ccode{.curry} or \ccode{.lcurry}) must be present and cannot be dropped. One can write additional commands for the interactive environment, typically settings of some options, before the Curry program name. All arguments after the Curry program name are passed as run-time arguments. For instance, consider the following program stored in the file \code{ShowArgs.curry}: \begin{curry} import System(getArgs) main = getArgs >>= print \end{curry} This program can be executed by the shell command \begin{curry} > runcurry ShowArgs.curry Hello World! \end{curry} which produces the output \begin{curry} ["Hello","World!"] \end{curry} \item One can also execute a Curry program whose program text comes from the standard input. Thus, one can either ``pipe'' the program text into this command or type the program text on the keyboard. For instance, if we type \begin{currynomath} > runcurry main = putStr . unlines . map show . take 8 $ [1..] \end{currynomath} % $ (followed by the end-of-file marker Ctrl-D), the output \begin{curry} 1 2 3 4 5 6 7 8 \end{curry} is produced. \item One can also write the program text in a script file to be executed like a shell script. In this case, the script must start with the line \begin{curry} #!/usr/bin/env runcurry \end{curry} followed by the source text of the Curry program. For instance, we can write a simple Curry script to count the number of code lines in a Curry program by removing all blank and comment lines and counting the remaining lines: \begin{currynomath} #!/usr/bin/env runcurry import Char(isSpace) import System(getArgs) -- count number of program lines in a file: countCLines :: String -> IO Int countCLines f = readFile f >>= return . length . filter (not . isEmptyLine) . map stripSpaces . lines where stripSpaces = reverse . dropWhile isSpace . reverse . dropWhile isSpace isEmptyLine [] = True isEmptyLine [_] = False isEmptyLine (c1:c2:_) = c1=='-' && c2=='-' -- The main program reads Curry file names from arguments: main = do args <- getArgs mapIO_ (\f -> do ls <- countCLines f putStrLn $ "Stripped lines of file "++f++": " ++ show ls) args \end{currynomath} % $ % If this script is stored in the (executable) file \ccode{codelines.sh}, we can count the code lines of the file \code{Prog.curry} by the shell command \begin{curry} > ./codelines.sh Prog.curry \end{curry} % When this command is executed, the command \code{runcurry} compiles the program and evaluates the expression \code{main}. Since the compilation might take some time in more complex scripts, one can also save the result of the compilation in a binary file. To obtain this behavior, one has to insert the line \begin{curry} #jit \end{curry} in the script file, e.g., in the second line. With this option, a binary of the compiled program is saved (in the same directory as the script). Now, when the same script is executed the next time, the stored binary file is executed (provided that it is still newer than the script file itself, otherwise it will be recompiled). This feature combines easy scripting with Curry together with fast execution. \end{itemize} %%% Local Variables: %%% mode: pdflatex %%% TeX-master: "manual" %%% End: ����������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/spicey/���������������������0000775�0000000�0000000�00000000000�13234315711�0026067�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/spicey/README.txt�����������0000664�0000000�0000000�00000000311�13234315711�0027560�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������This directory contains some documention for the tool: manual.tex: A short description to be included in the main manual of the Curry system. main.tex: The manual as a stand-alone LaTeX file. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/spicey/main.tex�������������0000664�0000000�0000000�00000005100�13234315711�0027531�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������\documentclass[11pt,fleqn]{article} \usepackage[T1]{fontenc} \usepackage{latexsym} \usepackage{url} \usepackage{xspace} \usepackage{graphicx} \setlength{\textwidth}{16.5cm} \setlength{\textheight}{23cm} \renewcommand{\baselinestretch}{1.1} \setlength{\topmargin}{-1cm} \setlength{\oddsidemargin}{0cm} \setlength{\evensidemargin}{0cm} \setlength{\marginparwidth}{0.0cm} \setlength{\marginparsep}{0.0cm} \newlength{\figurewidth} \setlength{\figurewidth}{\textwidth} \addtolength{\figurewidth}{-0.4cm} % font for program texts \renewcommand{\tt}{\usefont{OT1}{cmtt}{m}{n}\selectfont} \newcommand{\codefont}{\small\tt} \usepackage{listings} \lstset{aboveskip=1.5ex, belowskip=1.5ex, showstringspaces=false, % no special string space mathescape=true, flexiblecolumns=false, xleftmargin=2ex, basewidth=0.52em, basicstyle=\small\ttfamily} \lstset{literate={->}{{$\rightarrow{}\!\!\!$}}3 } \lstnewenvironment{curry}{}{} \lstnewenvironment{currynomath}{\lstset{mathescape=false}}{} % Curry w/o math \newcommand{\listline}{\vrule width0pt depth1.75ex} % program text in normal text \newcommand{\code}[1]{\mbox{\codefont #1}} % program text in normal text with apostrophs \newcommand{\ccode}[1]{``\code{#1}''} \newcommand{\pindex}[1]{\index{#1@{\tt #1}}} % program elements in index \newcommand{\todo}[1]{\fbox{\sc To do: #1}} \newcommand{\CYS}{Curry\xspace} % name of the Curry system described here \newcommand{\cyshome}{\mbox{\textit{curryhome}}\xspace} % symbolic installation directory \newcommand{\us}{\char95\xspace} % underscore \begin{document} \sloppy \newcommand{\curryppdocs}{.} \input{manual.tex} % Bibliography \begin{thebibliography}{10} \bibitem{BrasselHanusMueller08PADL} B.~Bra{\ss}el, M.~Hanus, and M.~M{\"u}ller. \newblock High-level database programming in {Curry}. \newblock In {\em Proc. of the Tenth International Symposium on Practical Aspects of Declarative Languages (PADL'08)}, pages 316--332. Springer LNCS 4902, 2008. \bibitem{HanusKoschnicke14TPLP} M.~Hanus and S.~Koschnicke. \newblock An {ER-based} framework for declarative web programming. \newblock {\em Theory and Practice of Logic Programming}, 14(3):269--291, 2014. \bibitem{HanusKrone17EPTCS} M.~Hanus and J.~Krone. \newblock A typeful integration of {SQL} into {Curry}. \newblock In {\em Proceedings of the 24th International Workshop on Functional and (Constraint) Logic Programming}, volume 234 of {\em Electronic Proceedings in Theoretical Computer Science}, pages 104--119. Open Publishing Association, 2017. \end{thebibliography} \end{document} ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/spicey/manual.tex�����������0000664�0000000�0000000�00000011157�13234315711�0030073�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������\section{Spicey: An ER-based Web Framework} \label{sec-spicey} Spicey\index{Spicey} is a framework to support the implementation of web-based systems in Curry. Spicey generates an initial implementation from an entity-relationship (ER) description of the underlying data. The generated implementation contains operations to create and manipulate entities of the data model, supports authentication, authorization, session handling, and the composition of individual operations to user processes. Furthermore, the implementation ensures the consistency of the database w.r.t. the data dependencies specified in the ER model, i.e., updates initiated by the user cannot lead to an inconsistent state of the database. \subsection{Installation} The actual implementation of Spicey is a package managed by the Curry Package Manager CPM. Thus, to install the newest version of Spicey, use the following commands: % \begin{curry} > cypm update > cypm install spicey \end{curry} % This downloads the newest package, compiles it, and places the executable \code{spiceup} into the directory \code{\$HOME/.cpm/bin}. Hence it is recommended to add this directory to your path in order to execute Spicey as described below. \subsection{Basic usage} The idea of this tool, which is part of the distribution of \CYS, is described in detail in \cite{HanusKoschnicke14TPLP}. Thus, we summarize only the basic steps to use this tool in order to generate a web application. First, one has to create a textual description of the entity-relationship model in a Curry program file as an (exported!) top-level operation type \code{ERD} (w.r.t.\ the type definitions defined in the module \code{Database.ERD} of the package \code{cdbi}) and store it in some program file, e.g., \ccode{MyERD.curry}. The directory \code{examples} in the package \code{spicey}\footnote{% If you installed Spicey as described above, the downloaded \code{spicey} package is located in the directory \code{\$HOME/.cpm/app\us{}packages/spicey}.} contains two examples for such ERD program files: \begin{description} \item[\code{BlogERD.curry}:] This is a simple ER model for a blog with entries, comments, and tags, as presented in the paper \cite{HanusKoschnicke14TPLP}. \item[\code{UniERD.curry}:] This is an ER model for university lectures as presented in the paper \cite{BrasselHanusMueller08PADL}. \end{description} % Then you can generate the sources of your web application by the command\pindex{spiceup} \begin{curry} > spiceup MyERD.curry \end{curry} with the ERD program as a parameter. You can also provide a file name for the SQLite3 database used by the application generated by Spicey, e.g., \begin{curry} > spiceup --db MyData.db MyERD.curry \end{curry} If the parameter \ccode{--db DBFILE} is not provided, then \code{DBDFILE} is set to the default name \ccode{$ERD$.db} (where \code{$ERD$} is the name of the specified ER model). Since this specification will be used in the \emph{generated} web programs, a relative database file name will be relative to the place where the web programs are stored. In order to avoid such confusion, it might be better to specify an absolute path name for the database file. This path could also be set in the definition of the constant \code{sqliteDBFile} in the generated Curry program \code{Model/$ERD$.curry}. Spicey generates the web application as a Curry package in a new directory. Thus, change into this directory (e.g., \code{cd $ERD$}) and install all required packages by the command \begin{curry} > make install \end{curry} % The generated file \code{README.txt} contains some information about the generated project structure. One can compile the generated programs by \begin{curry} > make compile \end{curry} In order to generate the executable web application, configure the generated \code{Makefile} by adapting the variable \code{WEBSERVERDIR} to the location where the compiled cgi programs should be stored, and run \begin{curry} > make deploy \end{curry} After the successful compilation and deployment of all files, the application is executable in a web browser by selecting the URL \code{<URL of web dir>/spicey.cgi}. \subsection{Further remarks} The application generated by Spicey is a schematic initial implementation. It provides an appropriate basic programming structure but it can be extended in various ways. In particular, one can also use embedded SQL statements (see \cite{HanusKrone17EPTCS} for details) when further developing the Curry code, since the underlying database access operations are generated with the \code{cdbi} package. The syntax and use of such embedded SQL statements is sketched in \cite{HanusKrone17EPTCS} and described in the Curry preprocessor. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/transbooleq/����������������0000775�0000000�0000000�00000000000�13234315711�0027124�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/transbooleq/README.txt������0000664�0000000�0000000�00000000237�13234315711�0030624�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������This directory contains some documention for the Curry optimizer: manual.tex: A short description to be included in the main manual of the Curry system. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/transbooleq/manual.tex������0000664�0000000�0000000�00000005475�13234315711�0031136�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������\section{Optimization of Curry Programs} After the invocation of the Curry front end, which parses a Curry program and translates it into the intermediate FlatCurry representation, \CYS applies a transformation to optimize Boolean equalities occurring in the Curry program. The ideas and details of this optimization are described in \cite{AntoyHanus15LOPSTR}. Therefore, we sketch only some basic ideas and options to influence this optimization. Consider the following definition of the operation \code{last} to extract the last element in list: % \begin{curry} last xs | xs == _++[x] = x where x free \end{curry} % In order to evaluate the condition \ccode{xs == \us{}++[x]}, the Boolean equality is evaluated to \code{True} or \code{False} by instantiating the free variables \code{\us} and \code{x}. However, since we know that a condition must be evaluated to \code{True} only and all evaluations to \code{False} can be ignored, we can use the constrained equality to obtain a more efficient program: % \begin{curry} last xs | xs =:= _++[x] = x where x free \end{curry} % Since the selection of the appropriate equality operator is not obvious and might be tedious, \CYS encourages programmers to use only the Boolean equality operator \ccode{==} in programs. The constraint equality operator \ccode{=:=} can be considered as an optimization of \ccode{==} if it is ensured that only positive results are required, e.g., in conditions of program rules. To support this programming style, \CYS has a built-in optimization phase on FlatCurry files. For this purpose, the optimizer analyzes the FlatCurry programs for occurrences of \ccode{==} and replaces them by \ccode{=:=} whenever the result \code{False} is not required. The usage of the optimizer can be influenced by setting the property flag \code{bindingoptimization} in the configuration file \code{\curryrc}. The following values are recognized for this flag: \begin{description} \item[\code{no}:] Do not apply this transformation. \item[\code{fast}:] This is the default value. The transformation is based on pre-computed values for the prelude operations in order to decide whether the value \code{False} is not required as a result of a Boolean equality. Hence, the transformation can be efficiently performed without any complex analysis. \item[\code{full}:] Perform a complete ``required values'' analysis of the program (see \cite{AntoyHanus15LOPSTR}) and use this information to optimize programs. In most cases, this does not yield better results so that the \code{fast} mode is sufficient. \end{description} % Hence, to turn off this optimization, one can either modify the flag \code{bindingoptimization} in the configuration file \code{\curryrc} or dynamically pass this change to the invocation of \CYS by \begin{quote} \ldots{} \code{-Dbindingoptimization=no} \ldots \end{quote} ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/verify/���������������������0000775�0000000�0000000�00000000000�13234315711�0026077�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/verify/Double.curry���������0000664�0000000�0000000�00000000344�13234315711�0030400�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������module Double(double,coin,even) where import Nat import Test.Prop double x = add x x coin x = x ? S x even Z = True even (S Z) = False even (S (S n)) = even n evendoublecoin x = always (even (double (coin x))) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PROOF-evendoublecoin.agda���������������������������������������������������������������������������0000664�0000000�0000000�00000002401�13234315711�0032517�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000�pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/verify�����������������������������������������������������������������������������������������-- Agda program using the Iowa Agda library open import bool module PROOF-evendoublecoin (Choice : Set) (choose : Choice → ð”¹) (lchoice : Choice → Choice) (rchoice : Choice → Choice) where open import eq open import nat open import list open import maybe --------------------------------------------------------------------------- -- Translated Curry operations: add : â„• → â„• → â„• add zero x = x add (suc y) z = suc (add y z) coin : Choice → â„• → â„• coin c1 x = if choose c1 then x else suc x double : â„• → â„• double x = add x x even : â„• → 𔹠even zero = tt even (suc zero) = ff even (suc (suc x)) = even x --------------------------------------------------------------------------- add-suc : ∀ (x y : â„•) → add x (suc y) ≡ suc (add x y) add-suc zero y = refl add-suc (suc x) y rewrite add-suc x y = refl -- auxiliary property for x+x instead of double: even-add-x-x : ∀ (x : â„•) → even (add x x) ≡ tt even-add-x-x zero = refl even-add-x-x (suc x) rewrite add-suc x x | even-add-x-x x = refl evendoublecoin : (c1 : Choice) → (x : â„•) → (even (double (coin c1 x))) ≡ tt evendoublecoin c1 x rewrite even-add-x-x (coin c1 x) = refl --------------------------------------------------------------------------- ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/verify/README.txt�����������0000664�0000000�0000000�00000000317�13234315711�0027576�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������This directory contains some documention for the curry-verify tool: main.tex: A short description of the tool. manual.tex: A short description to be included in the main manual of the Curry system. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������TO-PROVE-evendoublecoin.agda������������������������������������������������������������������������0000664�0000000�0000000�00000001633�13234315711�0033053�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000�pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/verify�����������������������������������������������������������������������������������������-- Agda program using the Iowa Agda library open import bool module TO-PROVE-evendoublecoin (Choice : Set) (choose : Choice → ð”¹) (lchoice : Choice → Choice) (rchoice : Choice → Choice) where open import eq open import nat open import list open import maybe --------------------------------------------------------------------------- -- Translated Curry operations: add : â„• → â„• → â„• add zero x = x add (suc y) z = suc (add y z) coin : Choice → â„• → â„• coin c1 x = if choose c1 then x else suc x double : â„• → â„• double x = add x x even : â„• → 𔹠even zero = tt even (suc zero) = ff even (suc (suc x)) = even x --------------------------------------------------------------------------- evendoublecoin : (c1 : Choice) → (x : â„•) → (even (double (coin c1 x))) ≡ tt evendoublecoin c1 x = ? --------------------------------------------------------------------------- �����������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/verify/main.tex�������������0000664�0000000�0000000�00000004151�13234315711�0027546�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������\documentclass[11pt,fleqn]{article} \usepackage[T1]{fontenc} \usepackage{amssymb} \usepackage{amsmath} \usepackage{url} \usepackage{xspace} \usepackage{graphicx} \setlength{\textwidth}{16.5cm} \setlength{\textheight}{23cm} \renewcommand{\baselinestretch}{1.1} \setlength{\topmargin}{-1cm} \setlength{\oddsidemargin}{0cm} \setlength{\evensidemargin}{0cm} \setlength{\marginparwidth}{0.0cm} \setlength{\marginparsep}{0.0cm} \newlength{\figurewidth} \setlength{\figurewidth}{\textwidth} \addtolength{\figurewidth}{-0.4cm} % font for program texts \renewcommand{\tt}{\usefont{OT1}{cmtt}{m}{n}\selectfont} \newcommand{\codefont}{\small\tt} \usepackage{listings} \lstset{aboveskip=1.5ex, belowskip=1.5ex, showstringspaces=false, % no special string space mathescape=true, flexiblecolumns=false, xleftmargin=2ex, basewidth=0.52em, basicstyle=\small\ttfamily} \lstset{literate={->}{{$\rightarrow{}\!\!\!$}}3 } \lstnewenvironment{curry}{}{} \lstnewenvironment{currynomath}{\lstset{mathescape=false}}{} % Curry w/o math \newcommand{\listline}{\vrule width0pt depth1.75ex} % program text in normal text \newcommand{\code}[1]{\mbox{\codefont #1}} % program text in normal text with apostrophs \newcommand{\ccode}[1]{``\code{#1}''} \newcommand{\pindex}[1]{\index{#1@{\tt #1}}} % program elements in index \begin{document} \sloppy \input{manual} \begin{thebibliography}{10} \bibitem{AntoyHanusLibby17EPTCS} S.~Antoy, M.~Hanus, and S.~Libby. \newblock Proving non-deterministic computations in {Agda}. \newblock In {\em Proc. of the 24th International Workshop on Functional and (Constraint) Logic Programming (WFLP 2016)}, volume 234 of {\em Electronic Proceedings in Theoretical Computer Science}, pages 180--195. Open Publishing Association, 2017. \bibitem{Norell09} U.~Norell. \newblock Dependently typed programming in {Agda}. \newblock In {\em Proceedings of the 6th International Conference on Advanced Functional Programming (AFP'08)}, pages 230--266. Springer, 2009. \end{thebibliography} \end{document} %%% Local Variables: %%% mode: latex %%% TeX-master: t %%% End: �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/tooldocs/verify/manual.tex�����������0000664�0000000�0000000�00000020674�13234315711�0030107�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������\section{CurryVerify: A Tool to Support the Verification of Curry Programs} \label{sec-curry2verify} CurryVerify\index{CurryVerify}\index{verifying programs}\index{program!verification} is a tool that supports the verification of Curry programs with the help of other theorem provers or proof assistants. Basically, CurryVerify extends CurryCheck (see Section~\ref{sec-currycheck}), which tests given properties of a program, by the possibility to verify these properties. For this purpose, CurryVerify translates properties into the input language of other theorem provers or proof assistants. This is done by collecting all operations directly or indirectly involved in a given property and translating them together with the given property. Currently, only Agda \cite{Norell09} is supported as a target language for verification (but more target languages may be supported in future releases). The basic schemes to translate Curry programs into Agda programs are presented in \cite{AntoyHanusLibby17EPTCS}. That paper also describes the limitations of this approach. Since Curry is a quite rich programming language, not all constructs of Curry are currently supported in the translation process (e.g., no case expressions, local definitions, list comprehensions, do notations, etc). Only a kernel language, where the involved rules correspond to a term rewriting system, are translated into Agda. However, these limitations might be relaxed in future releases. Hence, the current tool should be considered as a first prototypical approach to support the verification of Curry programs. \subsection{Installation} The current implementation of CurryVerify is a package managed by the Curry Package Manager CPM (see also Section~\ref{sec-cpm}). Thus, to install the newest version of CurryVerify, use the following commands: % \begin{curry} > cypm update > cypm install verify \end{curry} % This downloads the newest package, compiles it, and places the executable \code{curry-verify} into the directory \code{\$HOME/.cpm/bin}. Hence it is recommended to add this directory to your path in order to execute CurryVerify as described below. \subsection{Basic Usage} To translate the properties of a Curry program stored in the file \code{prog.curry} into Agda, one can invoke the command\pindex{curry-verify}\pindex{verify} % \begin{curry} curry-verify prog \end{curry} % This generates for each property $p$ in module \code{prog} an Agda program \ccode{TO-PROVE-$p$.agda}. If one completes the proof obligation in this file, the completed file should be renamed into \ccode{PROOF-$p$.agda}. This has the effect that CurryCheck does not test this property again but trusts the proof and use this knowledge to simplify other tests. As a concrete example, consider the following Curry module \code{Double}, shown in Figure~\ref{fig:double-curry}, which uses the Peano representation of natural numbers (module \code{Nat}) to define an operation to double the value of a number, a non-deterministic operation \code{coin} which returns its argument or its incremented argument, and a predicate to test whether a number is even. Furthermore, it contains a property specifying that doubling the coin of a number is always even. \begin{figure}[t] \begin{curry} module Double(double,coin,even) where import Nat import Test.Prop double x = add x x coin x = x ? S x even Z = True even (S Z) = False even (S (S n)) = even n evendoublecoin x = always (even (double (coin x))) \end{curry} \caption{Curry program \code{Double.curry}\label{fig:double-curry}} \end{figure} In order to prove the correctness of this property, we translate it into an Agda program by executing % \begin{curry} > curry-verify Double $\ldots$ Agda module 'TO-PROVE-evendoublecoin.agda' written. If you completed the proof, rename it to 'PROOF-evendoublecoin.agda'. \end{curry} % The Curry program is translated with the default scheme (see further options below) based on the ``planned choice'' scheme, described in \cite{AntoyHanusLibby17EPTCS}. The result of this translation is shown in Figure~\ref{fig:to-prove-evendoublecoin}. \begin{figure}[t] \begin{curry} -- Agda program using the Iowa Agda library open import bool module TO-PROVE-evendoublecoin (Choice : Set) (choose : Choice $\to$ ${\mathbb B}$) (lchoice : Choice $\to$ Choice) (rchoice : Choice $\to$ Choice) where open import eq open import nat open import list open import maybe --------------------------------------------------------------------------- -- Translated Curry operations: add : ${\mathbb N}$ $\to$ ${\mathbb N}$ $\to$ ${\mathbb N}$ add zero x = x add (suc y) z = suc (add y z) coin : Choice $\to$ ${\mathbb N}$ $\to$ ${\mathbb N}$ coin c1 x = if choose c1 then x else suc x double : ${\mathbb N}$ $\to$ ${\mathbb N}$ double x = add x x even : ${\mathbb N}$ $\to$ ${\mathbb B}$ even zero = tt even (suc zero) = ff even (suc (suc x)) = even x --------------------------------------------------------------------------- evendoublecoin : (c1 : Choice) $\to$ (x : ${\mathbb N}$) $\to$ (even (double (coin c1 x))) $\equiv$ tt evendoublecoin c1 x = ? \end{curry} \caption{Agda program \code{TO-PROVE-evendoublecoin.agda}\label{fig:to-prove-evendoublecoin}} \end{figure} The Agda program contains all operations involved in the property and the property itself. Non-deterministic operations, like \code{coin}, have an additional additional argument of the abstract type \code{Choice} that represents the plan to execute some non-deterministic branch of the program. By proving the property for all possible branches as correct, it universally holds. In our example, the proof is quite easy. First, we prove that the addition of a number to itself is always even (lemma \code{even-add-x-x}, which uses an auxiliary lemma \code{add-suc}). Then, the property is an immediate consequence of this lemma: % \begin{curry} add-suc : $\forall$ (x y : ${\mathbb N}$) $\to$ add x (suc y) $\equiv$ suc (add x y) add-suc zero y = refl add-suc (suc x) y rewrite add-suc x y = refl even-add-x-x : $\forall$ (x : ${\mathbb N}$) $\to$ even (add x x) $\equiv$ tt even-add-x-x zero = refl even-add-x-x (suc x) rewrite add-suc x x | even-add-x-x x = refl evendoublecoin : (c1 : Choice) $\to$ (x : ${\mathbb N}$) $\to$ (even (double (coin c1 x))) $\equiv$ tt evendoublecoin c1 x rewrite even-add-x-x (coin c1 x) = refl \end{curry} % As the proof is complete, we rename this Agda program into \code{PROOF-evendoublecoin.agda} so that the proof can be used by further invocations of CurryCheck. \subsection{Options} The command \code{curry-verify} can be parameterized with various options. The available options can also be shown by executing \begin{curry} curry-verify --help \end{curry} The options are briefly described in the following. \begin{description} \item{\code{-h}, \code{-?}, \code{--help}} These options trigger the output of usage information. \item{\code{-q}, \code{--quiet}} Run quietly and produce no informative output. However, the exit code will be non-zero if some translation error occurs. \item{\code{-v[$n$]}, \code{--verbosity[=$n$]}} Set the verbosity level to an optional value. The verbosity level \code{0} is the same as option \code{-q}. The default verbosity level \code{1} shows the translation progress. The verbosity level \code{2} (which is the same as omitting the level) shows also the generated (Agda) program. The verbosity level \code{3} shows also more details about the translation process. \item{\code{-n}, \code{--nostore}} Do not store the translated program in a file but show it only. \item{\code{-p $p$}, \code{--property=$p$}} As a default, all properties occurring in the source program are translated. If this option is provided, only property $p$ is translated. \item{\code{-t $t$}, \code{--target=$t$}} Define the target language of the translation. Currently, only $t = \code{Agda}$ is supported, which is also the default. \item{\code{-s $s$}, \code{--scheme=$s$}} Define the translation scheme used to represent Curry programs in the target language. For the target \code{Agda}, the following schemes are supported: \begin{description} \item[\code{choice}] Use the ``planned choice'' scheme, see \cite{AntoyHanusLibby17EPTCS} (this is the default). In this scheme, the choices made in a non-deterministic computation are abstracted by passing a parameter for these choices. \item[\code{nondet}] Use the ``set of values'' scheme, see \cite{AntoyHanusLibby17EPTCS}, where non-deterministic values are represented in a tree structure. \end{description} \end{description} % LocalWords: CurryCheck ��������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/ui.tex�������������������������������0000664�0000000�0000000�00000002342�13234315711�0024105�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������\section{UI: Declarative Programming of User Interfaces} \label{sec-ui} The \CYS distribution contains a collection of libraries to implement graphical user interfaces\index{user interface} as well as web-based user interfaces from declarative descriptions. Exploiting these libraries, it is possible to define the structure and functionality of a user interface independent from the concrete technology. Thus, a graphical user interface or a web-based user interface can be generated from the same description by simply changing the imported libraries. This programming technique is described in detail in \cite{HanusKluss09PADL}. The libraries implementing these user interfaces are contained in the directory \begin{curry} $\cyshome$/tools/ui \end{curry} Thus, in order to compile programs containing such user interface specifications, one has to include the directory \code{\cyshome/tools/ui} into the Curry load path (e.g., by setting the environment variable \ccode{CURRYPATH}\pindex{CURRYPATH}, see also Section~\ref{sec-modules}). The directory \begin{curry} $\cyshome$/tools/ui/examples \end{curry} contains a few examples for such user interface specifications. %%% Local Variables: %%% mode: latex %%% TeX-master: "manual" %%% End: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/docs/src/usage.tex����������������������������0000664�0000000�0000000�00000062036�13234315711�0024602�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������\section{\CYS: An Interactive Curry Development System} \label{sec-curry2prolog} \CYS\index{\CYS} is an interactive system to develop applications written in Curry. It is implemented in Prolog and compiles Curry programs into Prolog programs. It contains various tools, a source-level debugger, solvers for arithmetic constraints over real numbers and finite domain constraints, etc. The compilation process and the execution of compiled programs is fairly efficient if a good Prolog implementation like SICStus-Prolog is used. \subsection{Invoking \CYS} \label{sec:invoke-kics2} To start \CYS, execute the command \ccode{pakcs}\pindex{pakcs} or \ccode{curry}\pindex{curry} (these are shell scripts stored in \code{\cyshome/bin} where \cyshome is the installation directory of \CYS). When the system is ready (i.e., when the prompt \ccode{Prelude>} occurs), the prelude (\code{\cyshome/lib/Prelude.curry}) is already loaded, i.e., all definitions in the prelude are accessible. Now you can type various commands (see next section) or an expression to be evaluated. One can also invoke \CYS with parameters. These parameters are usual a sequence of commands (see next section) that are executed before the user interaction starts. For instance, the invocation \begin{curry} pakcs :load Mod :add List \end{curry} starts \CYS, loads the main module \code{Mod}, and adds the additional module \code{List}. The invocation \begin{curry} pakcs :load Mod :eval config \end{curry} starts \CYS, loads the main module \code{Mod}, and evaluates the operation \code{config} before the user interaction starts. As a final example, the invocation \begin{curry} pakcs :load Mod :save :quit \end{curry} starts \CYS, loads the main module \code{Mod}, creates an executable, and terminates \CYS. This invocation could be useful in ``make'' files for systems implemented in Curry. There are also some additional options that can be used when invoking \CYS: \begin{description} \item[\fbox{\code{-h}} or \fbox{\code{--help}}]: Print only a help message. \item[\fbox{\code{-V}} or \fbox{\code{--version}}]: Print the version information of \CYS and quit. \item[\fbox{\code{--compiler-name}}]: Print just the compiler name (\code{pakcs}) and quit. \item[\fbox{\code{--numeric-version}}]: Print just the version number and quit. \item[\fbox{\code{--noreadline}}]: Do not use input line editing (see Section~\ref{sec:readline}). \item[\fbox{\code{-Dname=val}}] (these options must come before any \CYS command): Overwrite values defined in the configuration file \ccode{.pakcsrc} (see Section~\ref{sec-customization}), where \code{name} is a property defined in the configuration file and \code{val} its new value. \item[\fbox{\code{-q}} or \fbox{\code{--quiet}}]: With this option, \CYS works silently, i.e., the initial banner and the input prompt are not shown. The output of other information is determined by the options \ccode{verbose} and \ccode{v$n$} (see Section~\ref{sec:options}). \end{description} % One can also invoke \CYS with some run-time arguments that can be accessed inside a Curry program by the I/O operation \code{getArgs} (see library \code{System} (Section~\ref{Library:System}). These run-time arguments must be written at the end after the separator \ccode{--}. For instance, if \CYS is invoked by \begin{curry} pakcs :load Mod -- first and second \end{curry} then a call to the I/O operation \code{getArgs} returns the list value \begin{curry} ["first","and","second"] \end{curry} \subsection{Commands of \CYS} \label{sec:pakcs-commands} The {\bf most important commands} of \CYS are (it is sufficient to type a unique prefix of a command if it is unique, e.g., one can type \ccode{:r} instead of \ccode{:reload}): \begin{description} \item[\fbox{\code{:help}}]\pindex{:help} Show a list of all available commands. \item[\fbox{\code{:load $prog$}}]\pindex{:load} Compile and load the program stored in \code{$prog$.curry} together with all its imported modules. If this file does not exist, the system looks for a FlatCurry file \code{$prog$.fcy} and compiles from this intermediate representation. % If the file \code{$prog$.fcy} does not exists, too, the system looks % for a file \code{$prog$_flat.xml} containing a FlatCurry program in % XML representation (compare command \ccode{:xml}\pindex{:xml}), %translates this into a FlatCurry file \code{$prog$.fcy} % and compiles from this intermediate representation. \item[\fbox{\code{:reload}}]\pindex{:reload} Recompile all currently loaded modules. \item[\fbox{\code{:add} $m_1 \ldots m_n$}]\pindex{:add} Add modules $m_1,\ldots,m_n$ to the set of currently loaded modules so that their exported entities are available in the top-level environment. \item[\fbox{$expr$}] Evaluate the expression $expr$ to normal form and show the computed results. Since \CYS compiles Curry programs into Prolog programs, non-deterministic computations are implemented by backtracking. Therefore, computed results are shown one after the other. In the \emph{interactive mode} (which can be set in the configuration file \ccode{\curryrc} or by setting the option \code{interactive}, see below), you will be asked after each computed result whether you want to see the next alternative result or all alternative results. The default answer value for this question can be defined in the configuration file \ccode{\curryrc} file (see Section~\ref{sec-customization}). \textbf{Free variables in initial expressions} must be declared as in Curry programs. In order to see the results of their bindings, they must be introduced by a \ccode{where\ldots{}free} declaration. For instance, one can write \begin{curry} not b where b free \end{curry} in order to obtain the following bindings and results: \begin{curry} {b = True} False {b = False} True \end{curry} Without these declarations, an error is reported in order to avoid the unintended introduction of free variables in initial expressions by typos. \item[\fbox{:eval $expr$}]\pindex{:eval} Same as $expr$. This command might be useful when putting commands as arguments when invoking \code{pakcs}. % \item[\fbox{:define $x$=$expr$}] % Define the identifier $x$ as an abbreviation for the expression $expr$ % which can be used in subsequent expressions. The identifier $x$ % is visible until the next \code{load} or \code{reload} command. \item[\fbox{\code{:quit}}]\pindex{:quit} Exit the system. \end{description} % \bigskip % There are also a number of {\bf further commands} that are often useful: % \begin{description} \item[\fbox{\code{:type $expr$}}]\pindex{:type} Show the type of the expression $expr$. \item[\fbox{\code{:browse}}]\pindex{:browse} Start the CurryBrowser to analyze the currently loaded module together with all its imported modules (see Section~\ref{sec-currybrowser} for more details). \item[\fbox{\code{:edit}}]\pindex{:edit} Load the source code of the current main module into a text editor. If the variable \code{editcommand} is set in the configuration file \ccode{.pakcsrc} (see Section~\ref{sec-customization}), its value is used as an editor command, otherwise the environment variable \ccode{EDITOR} or a default editor (e.g., \ccode{vi}) is used. \item[\fbox{\code{:edit $m$}}]\pindex{:edit} Load the source text of module $m$ (which must be accessible via the current load path if no path specification is given) into a text editor which is defined as in the command \ccode{:edit}. \item[\fbox{\code{:interface}}]\pindex{:interface} Show the interface of the currently loaded module, i.e., show the names of all imported modules, the fixity declarations of all exported operators, the exported datatypes declarations and the types of all exported functions. \item[\fbox{\code{:interface $prog$}}]\pindex{:interface} Similar to \ccode{:interface} but shows the interface of the module \ccode{$prog$.curry}. If this module does not exist, this command looks in the system library directory of \CYS for a module with this name, e.g., the command \ccode{:interface FlatCurry} shows the interface of the system module \code{FlatCurry} for meta-programming (see Appendix~\ref{sec-flatcurry}). \item[\fbox{\code{:usedimports}}]\pindex{:usedimports} Show all calls to imported functions in the currently loaded module. This might be useful to see which import declarations are really necessary. \item[\fbox{\code{:modules}}]\pindex{:modules} Show the list of all currently loaded modules. \item[\fbox{\code{:programs}}]\pindex{:programs} Show the list of all Curry programs that are available in the load path. \item[\fbox{\code{:set $option$}}]\pindex{:set} Set or turn on/off a specific option of the \CYS environment (see \ref{sec:options} for a description of all options). Options are turned on by the prefix \ccode{+} and off by the prefix \ccode{-}. Options that can only be set (e.g., \code{printdepth}) must not contain a prefix. \item[\fbox{\code{:set}}]\pindex{:set} Show a help text on the possible options together with the current values of all options. \item[\fbox{\code{:show}}]\pindex{:show} Show the source text of the currently loaded Curry program. If the variable \code{showcommand} is set in the configuration file \ccode{.pakcsrc} (see Section~\ref{sec-customization}), its value is used as a command to show the source text, otherwise the environment variable \code{PAGER} or the standard command \ccode{cat} is used. If the source text is not available (since the program has been directly compiled from a FlatCurry file), the loaded program is decompiled and the decompiled Curry program text is shown. \item[\fbox{\code{:show $m$}}]\pindex{:show} Show the source text of module $m$ which must be accessible via the current load path. \item[\fbox{\code{:source $f$}}]\pindex{:source} Show the source code of function $f$ (which must be visible in the currently loaded module) in a separate window. \item[\fbox{\code{:source $m$.$f$}}]\pindex{:source} Show the source code of function $f$ defined in module $m$ in a separate window. \item[\fbox{\code{:cd $dir$}}]\pindex{:cd} Change the current working directory to $dir$. \item[\fbox{\code{:dir}}]\pindex{:dir} Show the names of all Curry programs in the current working directory. \item[\fbox{\code{:!$cmd$}}]\pindex{:"!} Shell escape: execute $cmd$ in a Unix shell. \item[\fbox{\code{:save}}]\pindex{:save} Save the currently loaded program as an executable evaluating the main expression \ccode{main}. The executable is stored in the file \code{Mod} if \code{Mod} is the name of the currently loaded main module. \item[\fbox{\code{:save $expr$}}]\pindex{:save} Similar as \ccode{:save} but the expression $expr$ (typically: a call to the main function) will be evaluated by the executable. \item[\fbox{\code{:fork $expr$}}]\pindex{:fork} The expression $expr$, which must be of type \ccode{IO ()}, is evaluated in an independent process which runs in parallel to the current \CYS process. All output and error messages from this new process are suppressed. This command is useful to test distributed Curry programs (see Appendix~\ref{sec-ports}) where one can start a new server process by this command. The new process will be terminated when the evaluation of the expression $expr$ is finished. \item[\fbox{\code{:coosy}}]\pindex{:coosy} Start the Curry Object Observation System COOSy, a tool to observe the execution of Curry programs. This commands starts a graphical user interface to show the observation results and adds to the load path the directory containing the modules that must be imported in order to annotate a program with observation points. Details about the use of COOSy can be found in the COOSy interface (under the ``Info'' button), and details about the general idea of observation debugging and the implementation of COOSy can be found in \cite{BrasselChitilHanusHuch04PADL}. % \item[\fbox{\code{:xml}}]\pindex{:xml} % Translate the currently loaded program module into an XML representation % according to the format described in % \url{http://www.informatik.uni-kiel.de/~curry/flat/}. % Actually, this yields an implementation-independent % representation of the corresponding FlatCurry program % (see Appendix~\ref{sec-flatcurry} for a description of FlatCurry). % If $prog$ is the name of the currently loaded program, % the XML representation will be written into the file \ccode{$prog$_flat.xml}. \item[\fbox{\code{:peval}}]\pindex{:peval} Translate the currently loaded program module into an equivalent program where some subexpressions are partially evaluated so that these subexpressions are (hopefully) more efficiently executed. An expression $e$ to be partially evaluated must be marked in the source program by \code{(PEVAL e)} (where \code{PEVAL} is defined as the identity function in the prelude so that it has no semantical meaning). The partial evaluator translates a source program \code{$prog$.curry} into the partially evaluated program in intermediate representation stored in \code{$prog$_pe.fcy}. The latter program is implicitly loaded by the \code{peval} command so that the partially evaluated program is directly available. The corresponding source program can be shown by the \code{show} command (see above). The current partial evaluator is an experimental prototype (so it might not work on all programs) based on the ideas described in \cite{AlbertAlpuenteHanusVidal99LPAR,AlbertHanusVidal00LPAR,% AlbertHanusVidal01FLOPS,AlbertHanusVidal02JFLP}. \end{description} \subsection{Options of \CYS} \label{sec:options} The following options (which can be set by the command \ccode{:set}) are currently supported: \begin{description} \item[\fbox{\code{+/-debug}}]\pindex{debug} Debug mode. \index{debug mode} In the debug mode, one can trace the evaluation of an expression, setting spy points (break points) etc.\ (see the commands for the debug mode described below). \item[\fbox{\code{+/-printfail}}]\pindex{printfail} Print failures. If this option is set, failures occurring during evaluation (i.e., non-reducible demanded subexpressions) are printed. This is useful to see failed reductions due to partially defined functions or failed unifications. Inside encapsulated search (e.g., inside evaluations of \code{findall} and \code{findfirst}), failures are not printed (since they are a typical programming technique there). Note that this option causes some overhead in execution time and memory so that it could not be used in larger applications. \item[\fbox{\code{+/-allfails}}]\pindex{allfails} If this option is set, \emph{all} failures (i.e., also failures on backtracking and failures of enclosing functions that fail due to the failure of an argument evaluation) are printed if the option \code{printfail} is set. Otherwise, only the first failure (i.e., the first non-reducible subexpression) is printed. \item[\fbox{\code{+/-consfail}}]\pindex{consfail} Print constructor failures. If this option is set, failures due to application of functions with non-exhaustive pattern matching or failures during unification (application of \ccode{=:=}) are shown. Inside encapsulated search (e.g., inside evaluations of \code{findall} and \code{findfirst}), failures are not printed (since they are a typical programming technique there). In contrast to the option \code{printfail}, this option creates only a small overhead in execution time and memory use. \item[\fbox{\code{+consfail all}}]\pindex{consfail} Similarly to \ccode{+consfail}, but the complete trace of all active (and just failed) function calls from the main function to the failed function are shown. \item[\fbox{\code{+consfail file:$f$}}]\pindex{consfail} Similarly to \ccode{+consfail all}, but the complete fail trace is stored in the file $f$. This option is useful in non-interactive program executions like web scripts. \item[\fbox{\code{+consfail int}}]\pindex{consfail} Similarly to \ccode{+consfail all}, but after each failure occurrence, an interactive mode for exploring the fail trace is started (see help information in this interactive mode). When the interactive mode is finished, the program execution proceeds with a failure. \item[\fbox{\code{+/-compact}}]\pindex{compact} Reduce the size of target programs by using the parser option \ccode{--compact} (see Section~\ref{sec-pakcspp} for details about this option). \item[\fbox{\code{+/-interactive}}]\pindex{interactive} Turn on/off the interactive mode. In the interactive mode, the next non-deterministic value is computed only when the user requests it. Thus, one has also the possibility to terminate the enumeration of all values after having seen some values. The default value for this option can be set in the configuration file \ccode{\curryrc} (initially, the interactive mode is turned off). \item[\fbox{\code{+/-first}}]\pindex{first} Turn on/off the first-only mode. In the first-only mode, only the first value of the main expression is printed (instead of all values). \item[\fbox{\code{+/-profile}}]\pindex{profile} Profile mode. If the profile mode is on, then information about the number of calls, failures, exits etc.\ are collected for each function during the debug mode (see above) and shown after the complete execution (additionaly, the result is stored in the file \code{$prog$.profile} where $prog$ is the current main program). The profile mode has no effect outside the debug mode. \item[\fbox{\code{+/-suspend}}] Suspend mode (initially, it is off). If the suspend mode is on, all suspended expressions (if there are any) are shown (in their internal representation) at the end of a computation. \item[\fbox{\code{+/-time}}]\pindex{time} Time mode. If the time mode is on, the cpu time and the elapsed time of the computation is always printed together with the result of an evaluation. \item[\fbox{\code{+/-verbose}}] Verbose mode (initially, it is off). If the verbose mode is on, the initial expression of a computation is printed before it is evaluated. If the verbose mode is on and the verbosity level (see below) is non-zero, the type of the initial expression is also printed and the output of the evaluation is more detailed. \item[\fbox{\code{+/-warn}}]\pindex{warn} Parser warnings. If the parser warnings are turned on (default), the parser will print warnings about variables that occur only once in a program rule (see Section~\ref{sec-restrictions}) or locally declared names that shadow the definition of globally declared names. If the parser warnings are switched off, these warnings are not printed during the reading of a Curry program. \item[\fbox{\code{path $path$}}]\pindex{path} Set the additional search path for loading modules to $path$. Note that this search path is only used for loading modules inside this invocation of \CYS, i.e., the environment variable \ccode{CURRYPATH}\pindex{CURRYPATH} (see also Section~\ref{sec-modules}) is set to $path$ in this invocation of \CYS. The path is a list of directories separated by \ccode{:}. The prefix \ccode{\char126} is replaced by the home directory as in the following example: \begin{curry} :set path aux:~/tests \end{curry} Relative directory names are replaced by absolute ones so that the path is independent of later changes of the current working directory. \item[\fbox{\code{printdepth $n$}}]\pindex{printdepth} Set the depth for printing terms to the value \code{n} (initially: 0). In this case subterms with a depth greater than \code{n} are abbreviated by dots when they are printed as a result of a computation or during debugging. A value of \code{0} means infinite depth so that the complete terms are printed. \item[\fbox{\code{v$n$}}]\pindex{v}\index{verbosity} Set the verbosity level to $n$. The following values are allowed for $n$: \begin{description} \item[$n=0$:] Do not show any messages (except for errors). \item[$n=1$:] Show only messages of the front-end, like loading of modules. \item[$n=2$:] Show also messages of the back end, like loading intermediate files or generating Prolog target files. \item[$n=3$:] Show also messages related to loading Prolog files and libraries into the run-time systems and other intermediate messages and results. \end{description} \item[\fbox{\code{safe}}]\pindex{safe} Turn on the safe execution mode. In the safe execution mode, the initial goal is not allowed to be of type \code{IO} and the program should not import the module \code{Unsafe}. Furthermore, the allowed commands are \code{eval}, \code{load}, \code{quit}, and \code{reload}. This mode is useful to use \CYS in uncontrolled environments, like a computation service in a web page, where \CYS could be invoked by \begin{curry} pakcs :set safe \end{curry} \item[\fbox{\code{parser $opts$}}]\pindex{parser} Define additional options passed to the front end of \CYS, i.e., the parser program \code{\cyshome/bin/pakcs-frontend}. For instance, setting the option \begin{curry} :set parser -F --pgmF=transcurry \end{curry} has the effect that each Curry module to be compiled is transformed by the preprocessor command \code{transcurry} into a new Curry program which is actually compiled. \item[\fbox{\code{args $arguments$}}]\pindex{args} Define run-time arguments for the evaluation of the main expression. For instance, setting the option \begin{curry} :set args first second \end{curry} has the effect that the I/O operation \code{getArgs} (see library \code{System} (Section~\ref{Library:System}) returns the value \code{["first","second"]}. \end{description} % \bigskip % \CYS can also execute programs in the {\bf debug mode}. \index{debug mode}\pindex{debug} The debug mode is switched on by setting the \code{debug} option with the command \ccode{:set +debug}. In order to switch back to normal evaluation of the program, one has to execute the command \ccode{:set -debug}. In the debug mode, \CYS offers the following additional options: % \begin{description} \item[\fbox{\code{+/-single}}]\pindex{single} Turn on/off single mode for debugging. If the single mode is on, the evaluation of an expression is stopped after each step and the user is asked how to proceed (see the options there). \item[\fbox{\code{+/-trace}}]\pindex{trace} Turn on/off trace mode for debugging. If the trace mode is on, all intermediate expressions occurring during the evaluation of an expressions are shown. \item[\fbox{\code{spy $f$}}]\pindex{spy} Set a spy point (break point) on the function $f$. In the single mode, you can ``leap'' from spy point to spy point (see the options shown in the single mode). \item[\fbox{\code{+/-spy}}]\pindex{spy} Turn on/off spy mode for debugging. If the spy mode is on, the single mode is automatically activated when a spy point is reached. \end{description} \subsection{Using \CYS in Batch Mode} Although \CYS is primarily designed as an interactive system, it can also be used to process data in batch mode. For example, consider a Curry program, say \code{myprocessor}, that reads argument strings from the command line and processes them. Suppose the entry point is a function called \code{just_doit} that takes no arguments. Such a processor can be invoked from the shell as follows: \begin{curry} > pakcs :set args string1 string2 :load myprocessor.curry :eval just_doit :quit \end{curry} The \ccode{:quit} directive in necessary to avoid \CYS going into interactive mode after the excution of the expression being evaluated. The actual run-time arguments (\code{string1}, \code{string2}) are defined by setting the option \code{args} (see above). Here is an example to use \CYS in this way: \begin{curry} > pakcs :set args Hello World :add System :eval "getArgs >>= putStrLn . unwords" :quit Hello World > \end{curry} \subsection{Command Line Editing} \label{sec:readline} In order to have support for line editing or history functionality in the command line of \CYS (as often supported by the \code{readline} library), you should have the Unix command \code{rlwrap} installed on your local machine. If \code{rlwrap} is installed, it is used by \CYS if called on a terminal. If it should not be used (e.g., because it is executed in an editor with \code{readline} functionality), one can call \CYS with the parameter \ccode{--noreadline}. \subsection{Customization} \label{sec-customization} In order to customize the behavior of \CYS to your own preferences, there is a configuration file which is read by \CYS when it is invoked. When you start \CYS for the first time, a standard version of this configuration file is copied with the name \ccode{.pakcsrc}\pindex{pakcsrc}\pindex{.pakcsrc} into your home directory. The file contains definitions of various settings, e.g., about showing warnings, progress messages etc. After you have started \CYS for the first time, look into this file and adapt it to your own preferences. \subsection{Emacs Interface} Emacs is a powerful programmable editor suitable for program development. It is freely available for many platforms (see \url{http://www.emacs.org}). The distribution of \CYS contains also a special \emph{Curry mode}\index{Curry mode}\index{Emacs} that supports the development of Curry programs in the Emacs environment. This mode includes support for syntax highlighting, finding declarations in the current buffer, and loading Curry programs into \CYS in an Emacs shell. The Curry mode has been adapted from a similar mode for Haskell programs. Its installation is described in the file \code{README} in directory \ccode{\cyshome/tools/emacs} which also contains the sources of the Curry mode and a short description about the use of this mode. %%% Local Variables: %%% mode: latex %%% TeX-master: "manual" %%% End: ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/�������������������������������������0000775�0000000�0000000�00000000000�13234315711�0023044�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/README�������������������������������0000664�0000000�0000000�00000000700�13234315711�0023721�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������This directory contains a collection of (mainly small) example programs for Curry and PAKCS. An index and a short description of most of these programs are contained in the file "index.html". Further useful files: test.sh: a shell script to test PAKCS. In order to test the system after some modifications, run > ./test.sh This shell commands run a couple of tests and report the difference to previous executions. ����������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/TESTRESULT.txt�����������������������0000664�0000000�0000000�00000017401�13234315711�0025326�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������Loading program "rev"... append [1,2] [3,4] [1,2,3,4] rev [1,2,3,4,5,6,7,8,9,10] [10,9,8,7,6,5,4,3,2,1] Loading program "higher"... g1 [1,3,2] g2 [1,3,2] g3 3 g4 120 g5 120 Loading program "quicksort"... qsort [2,3,1,0] [0,1,2,3] Loading program "qsortlet"... qsort [2,3,1,0] [0,1,2,3] Loading program "inflists"... goal1 [1,1,2,3,5,8,13,21,34,55] goal2 [2,3,5,7,11] Loading program "family_rel"... goal1 child {child=Susan} True {child=Peter} True grandfather g c {g=Antony, c=Susan} True {g=Antony, c=Peter} True {g=Bill, c=Andrew} True {g=Antony, c=Andrew} True Loading program "family_fun"... (father child) =:= John {child=Susan} True {child=Peter} True grandfather g c {g=Antony, c=Susan} True {g=Antony, c=Peter} True {g=Bill, c=Andrew} True {g=Antony, c=Andrew} True Loading program "horseman"... horseman m h (int2nat 8) (int2nat 20) {m=S (S (S (S (S (S O))))), h=S (S O)} True horseman m h (S (S O)) f {m=O, h=S (S O), f=S (S (S (S (S (S (S (S O)))))))} True {m=S O, h=S O, f=S (S (S (S (S (S O)))))} True {m=S (S O), h=O, f=S (S (S (S O)))} True Loading program "first"... goal1 [O,S O] goal2 x y {x=S O, y=O} True Loading program "member"... goal2 x {x=2} True {x=3} True Loading program "colormap"... goal l1 l2 l3 l4 {l1=Red, l2=Yellow, l3=Green, l4=Red} True {l1=Red, l2=Yellow, l3=Green, l4=Blue} True {l1=Red, l2=Yellow, l3=Blue, l4=Red} True {l1=Red, l2=Yellow, l3=Blue, l4=Green} True {l1=Red, l2=Green, l3=Yellow, l4=Red} True {l1=Red, l2=Green, l3=Yellow, l4=Blue} True {l1=Red, l2=Green, l3=Blue, l4=Red} True {l1=Red, l2=Green, l3=Blue, l4=Yellow} True {l1=Red, l2=Blue, l3=Yellow, l4=Red} True {l1=Red, l2=Blue, l3=Yellow, l4=Green} True {l1=Red, l2=Blue, l3=Green, l4=Red} True {l1=Red, l2=Blue, l3=Green, l4=Yellow} True {l1=Yellow, l2=Red, l3=Green, l4=Yellow} True {l1=Yellow, l2=Red, l3=Green, l4=Blue} True {l1=Yellow, l2=Red, l3=Blue, l4=Yellow} True {l1=Yellow, l2=Red, l3=Blue, l4=Green} True {l1=Yellow, l2=Green, l3=Red, l4=Yellow} True {l1=Yellow, l2=Green, l3=Red, l4=Blue} True {l1=Yellow, l2=Green, l3=Blue, l4=Red} True {l1=Yellow, l2=Green, l3=Blue, l4=Yellow} True {l1=Yellow, l2=Blue, l3=Red, l4=Yellow} True {l1=Yellow, l2=Blue, l3=Red, l4=Green} True {l1=Yellow, l2=Blue, l3=Green, l4=Red} True {l1=Yellow, l2=Blue, l3=Green, l4=Yellow} True {l1=Green, l2=Red, l3=Yellow, l4=Green} True {l1=Green, l2=Red, l3=Yellow, l4=Blue} True {l1=Green, l2=Red, l3=Blue, l4=Yellow} True {l1=Green, l2=Red, l3=Blue, l4=Green} True {l1=Green, l2=Yellow, l3=Red, l4=Green} True {l1=Green, l2=Yellow, l3=Red, l4=Blue} True {l1=Green, l2=Yellow, l3=Blue, l4=Red} True {l1=Green, l2=Yellow, l3=Blue, l4=Green} True {l1=Green, l2=Blue, l3=Red, l4=Yellow} True {l1=Green, l2=Blue, l3=Red, l4=Green} True {l1=Green, l2=Blue, l3=Yellow, l4=Red} True {l1=Green, l2=Blue, l3=Yellow, l4=Green} True {l1=Blue, l2=Red, l3=Yellow, l4=Green} True {l1=Blue, l2=Red, l3=Yellow, l4=Blue} True {l1=Blue, l2=Red, l3=Green, l4=Yellow} True {l1=Blue, l2=Red, l3=Green, l4=Blue} True {l1=Blue, l2=Yellow, l3=Red, l4=Green} True {l1=Blue, l2=Yellow, l3=Red, l4=Blue} True {l1=Blue, l2=Yellow, l3=Green, l4=Red} True {l1=Blue, l2=Yellow, l3=Green, l4=Blue} True {l1=Blue, l2=Green, l3=Red, l4=Yellow} True {l1=Blue, l2=Green, l3=Red, l4=Blue} True {l1=Blue, l2=Green, l3=Yellow, l4=Red} True {l1=Blue, l2=Green, l3=Yellow, l4=Blue} True Loading program "account"... goal1 b {b=250} True goal2 b {b=150} True goal3 s {s=[Deposit 100,Balance 100,Withdraw 30,Balance 70,Withdraw 30,Balance 40,Deposit 70,Balance 110,Withdraw 30,Balance 80,Withdraw 30,Balance 50]} True Loading program "maxtree"... goal2 Node (Node (Leaf 3) (Leaf 3)) (Node (Leaf 3) (Leaf 3)) Loading program "assembler"... main [9,4,9,0] Loading program "ralign"... goal1 [[O,O,O,A,B],[O,A,B,C,D],[O,O,A,B,C],[A,B,C,D,E]] goal2 [[O,O,O,A,B],[O,A,B,C,D],[O,O,A,B,C],[A,B,C,D,E]] Loading program "tctest"... f :: Int -> Int i :: a -> a k :: a -> Int Loading program "rectype"... h :: ([Int],[Bool]) Loading program "iodemo"... dialog Ihr Name? Hallo michael, rueckwaerts lautet Ihr Name: leahcim Loading program "england"... q1 x {x=Gloucester} True {x=Bath} True q2 x y {x=Bristol, y=Bath} True {x=Sherbourne, y=Shaftesbury} True {x=Dorchester, y=Sherbourne} True {x=Cirencester, y=Cheltenham} True {x=Cheltenham, y=Gloucester} True q4l [Bristol,Taunton,Bath,Bournemouth,Gloucester,Torquay,Penzance,Plymouth,Exeter,Winchester,Dorchester,Cirencester,Truro,Cheltenham,Shaftesbury,Sherbourne] q5l [Salisbury,Gloucester,Cirencester,Cheltenham] q7 x {x=Somerset} True {x=Gloucestershire} True {x=Avon} True q10 6 Loading program "queens"... queens [1,2,3,4] [2,4,1,3] [3,1,4,2] Loading program "diamond"... diamond 10 1 11 2 21 12 3 31 22 13 4 41 32 23 14 5 51 42 33 24 15 6 61 52 43 34 25 16 7 71 62 53 44 35 26 17 8 81 72 63 54 45 36 27 18 9 91 82 73 64 55 46 37 28 19 10 92 83 74 65 56 47 38 29 20 93 84 75 66 57 48 39 30 94 85 76 67 58 49 40 95 86 77 68 59 50 96 87 78 69 60 97 88 79 70 98 89 80 99 90 100 Loading program "chords"... run sounds Proposed chords: Amin/8 (0) Gmaj/8 (0) || Dmin/8 (0) Gmaj/8 (0) || Gmaj7/8 (0) Fmaj/8 (0) || Amin/8 (0) Cmaj/8 (0) Fmaj/4 Cmaj/4 (0) || Fmaj/4 Emin/4 (0) || Amin/4 Cmaj/4 (0) || Amin/4 Emin/4 (0) Cmaj/8 (0) Fmaj/4 Cmaj/4 (0) || Fmaj/4 Emin/4 (0) || Amin/4 Cmaj/4 (0) || Amin/4 Emin/4 (0) Fmaj/8 (0) || Amin/8 (0) Fmaj/8 (3) || Amin/8 (3) Fmaj/4 Cmaj/4 (3) || Fmaj/4 Emin/4 (3) || Amin/4 Cmaj/4 (3) || Amin/4 Emin/4 (3) Cmaj/8 (4) || Emin/8 (4) || Amin/8 (3) Cmaj/8 (7) Gmaj/4 Fmaj/4 (0) || Gmaj/4 Amin/4 (0) || Emin/4 Fmaj/4 (0) || Emin/4 Amin/4 (0) run nicolas Proposed chords: Cmaj/8 (0) Gmaj/8 (0) || Dmin/8 (0) Fmaj/8 (6) || Amin/8 (6) Gmaj/8 (0) || Emin/8 (0) Cmaj/8 (0) Gmaj/8 (0) || Dmin/8 (0) Fmaj/8 (6) || Amin/8 (6) Gmaj/8 (0) || Dmin/8 (0) Cmaj/8 (0) || Emin/8 (0) Dmin/8 (0) Gmaj7/8 (6) || Dmin/8 (6) Cmaj/8 (0) Cmaj/8 (0) Gmaj/8 (0) || Dmin/8 (0) Fmaj/4 Gmaj/4 (0) || Fmaj/4 Emin/4 (0) || Amin/4 Gmaj/4 (0) || Amin/4 Emin/4 (0) Fmaj/8 (0) || Amin/8 (0) Loading program "arithseq"... l1 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] l2 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] l3 [1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93,97] l4 [1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77] Loading program "multgen"... goal1 [(1,4),(1,5),(2,4),(2,5),(3,4),(3,5)] goal2 [(1,1),(2,1),(2,2),(3,1),(3,2),(3,3)] goal3 [(3,4,5),(5,12,13),(6,8,10),(7,24,25),(8,15,17),(9,12,15),(9,40,41),(10,24,26),(12,16,20),(12,35,37),(14,48,50),(15,20,25),(15,36,39),(16,30,34),(18,24,30),(20,21,29),(21,28,35),(24,32,40),(27,36,45),(30,40,50)] Loading program "psort"... goal 6 [1,2,3,4,5,6] Loading program "Default"... pabs 0 0 pabs 3 1 swap [3] [3] swap [3,4] [4,3] swap [3,4,5] [3,4,5] Loading program "casetest"... swap [1] [1] swap [1,2] [2,1] swap [1,2,3] [1,2,3] f [1,2] 152 g (Just "xyz") True g (Just "ab") False h [1,2] True h [1,3] False h [2,((_impl#div#Prelude.Integral#Prelude.Int) 1) 0] False Loading program "addserver"... addClient "localhost" 3 4 Answer: 7 stopServer "localhost" ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/account.curry������������������������0000664�0000000�0000000�00000002510�13234315711�0025564�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- Concurrent object-oriented programming in Curry: -- a bank account implemented as an object waiting for messages of type -- Deposit a, Withdraw a, or Balance b: data Message = Deposit Int | Withdraw Int | Balance Int account :: Int -> [Message] -> Bool account _ [] = True account n (Deposit a : ms) = account (n+a) ms account n (Withdraw a : ms) = account (n-a) ms account n (Balance b : ms) = b=:=n & account n ms makeAccount :: [Message] -> Bool makeAccount s = account 0 (ensureSpine s) -- create bank account -- goals: goal1 :: Int -> Bool goal1 b = let s free in makeAccount s & s=:=[Deposit 200, Deposit 50, Balance b] goal2 :: Int -> Bool goal2 b = let s free in makeAccount s & s=:=[Deposit 200, Withdraw 100, Deposit 50, Balance b] -- send a message: sendMsg :: msg -> [msg] -> [msg] sendMsg msg obj | obj =:= msg:obj1 = obj1 where obj1 free -- send a message -- client process for bank account: client :: [Message] -> Bool client s | s1 =:= sendMsg (Balance b) s = if b==50 then s1=:=[] -- stop process else if b>50 then client (sendMsg (Withdraw 30) s1) -- buy else client (sendMsg (Deposit 70) s1) -- work where s1,b free goal3 :: [Message] -> Bool goal3 s = makeAccount s & client (sendMsg (Deposit 100) s) -- simulation ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/allsols.curry������������������������0000664�0000000�0000000�00000003132�13234315711�0025602�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- Some examples for the use of the module AllSolutions import AllSolutions import Combinatorial import Integer -- The famous non-deterministic function: coin :: Int coin = 0 coin = 1 -- Principal use of getAllSolutions: all1 = getAllSolutions (=:=(coin+coin)) >>= print -- This example shows that no sharing is performed accress encapsulated search: all2 = let cc = coin+coin in getAllSolutions (=:=cc) >>= print >> getAllSolutions (=:=cc) >>= print -- Example for getOneValue: first1 = getOneValue (coin+coin) >>= print -- Generate search tree of depth 0 (similar to getAllSolutions): tree0 = getSearchTree [] (=:=(x+y)) >>= print where x=coin y=coin --> (Solutions [0,1,1,2]) -- Generate search tree of depth 1: tree1 = getSearchTree [x+5] (=:=(x+y)) >>= print where x=coin y=coin --> (SearchBranch [(5,(Solutions [0,1])),(6,(Solutions [1,2]))]) -- Generate search tree of depth 2: tree2 = getSearchTree [x,y] (=:=(x+y=:=1)) >>= print where x=coin y=coin --> (SearchBranch [(0,(SearchBranch [(0,(Solutions [])), -- (1,(Solutions [True]))])), -- (1,(SearchBranch [(0,(Solutions [True])), -- (1,(Solutions []))]))]) -- An application of getAllFailures: -- -- Place n queens on a chessboard so that no queen can capture another queen: -- (this solution is due to Sergio Antoy) queens n = getAllFailures (permute [1..n]) capture capture y = let l1,l2,l3,y1,y2 free in l1 ++ [y1] ++ l2 ++ [y2] ++ l3 =:= y & abs (y1-y2) =:= length l2 + 1 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/assembler.curry����������������������0000664�0000000�0000000�00000002766�13234315711�0026122�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- a one-pass assembler: -- translate arbitrary `Jump` instructions into machine code -- use logical variables to resolve forward jump addresses -- we consider only two assembler instructions: jumps and labels data Instruction = Jump LabelId | Label LabelId deriving Eq -- we consider only a few number of label identifiers (could also be strings): data LabelId = L0 | L1 | L2 | L3 | L4 | L5 | L6 | L7 | L8 | L9 deriving Eq -- implementation of the symbol table: -- list of pairs consisting of labelids and codeaddresses type SymTab = [(LabelId,Int)] assembler :: [Instruction] -> SymTab -> Int -> [Int] assembler [] _ _ = [] assembler (Jump l : ins) st a | lookupST l st label st1 = 9:label:assembler ins st1 (a+2) where label,st1 free assembler (Label l : ins) st a | st1 == insertST l a st = assembler ins st1 a where st1 free -- insert an address of a labelid in a symboltable: insertST :: LabelId -> Int -> SymTab -> SymTab insertST l a [] = [(l,a)] insertST l a ((l1,a1):st) | l==l1 && a==a1 = (l1,a1) : st insertST l a ((l1,a1):st) | l/=l1 = (l1,a1) : (insertST l a st) -- lookup an address of a labelid in a symboltable: lookupST :: LabelId -> SymTab -> Int -> SymTab -> Bool lookupST l [] a st1 = st1=:=[(l,a)] lookupST l ((l1,a1):st) a st1 = if l==l1 then a=:=a1 & st1=:=(l1,a1):st else let st2 free in lookupST l st a st2 & st1=:=(l1,a1):st2 -- Example evaluation: main = assembler [Label L0, Jump L1, Jump L0, Label L1] [] 0 -----> Result: [9,4,9,0] ����������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/benchmark.curry����������������������0000664�0000000�0000000�00000011237�13234315711�0026070�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- Standard Prolog benchmark: naive reverse: append [] ys = ys append (x:xs) ys = x : append xs ys rev [] = [] rev (x:xs) = append (rev xs) [x] rev30 = rev [1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10] -- LIPS = 496/exec.time rev60 = rev [1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10] -- LIPS = 1891/exec.time rev120 = rev [1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10] -- LIPS = 7381/exec.time rev180 = rev [1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10] -- LIPS = 16471/exec.time rev360 = rev[1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10] -- LIPS = 65341/exec.time rev720 = rev[1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10] -- LIPS = 260281/exec.time -- constraint style: cappend [] ys zs = ys=:=zs cappend (x:xs) ys zs = let rs free in zs=:=x:rs & cappend xs ys rs crev [] ys = ys=:=[] crev (x:xs) ys = let rs free in crev xs rs & cappend rs [x] ys dotimesrev n l len = if n>0 then length (rev l) =:= len & dotimesrev (n-1) l len else True dotimesid n l len = if n>0 then length l =:= len & dotimesid (n-1) l len else True dotimescrev n l len = if n>0 then let rs free in crev l rs & dotimescrev (n-1) l len else True goal1 n = dotimesrev n (enumFromTo 1 500) 500 goal2 n = dotimesid n (enumFromTo 1 500) 500 goal3 n = dotimescrev n (enumFromTo 1 500) 500 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/benchmark_pakcs.curry����������������0000664�0000000�0000000�00000003307�13234315711�0027250�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- Benchmarks for PAKCS import Profile -- Standard Prolog benchmark: naive reverse: append [] ys = ys append (x:xs) ys = x : append xs ys rev [] = [] rev (x:xs) = append (rev xs) [x] -- start naive reverse benchmark with a list of n elements and report -- space usage: nrev n = do let l free doSolve (l =:= [1..n]) profileSpaceNF (rev l) -- LIPS = (n+1)*(n+2)/2/exec.time -- compute LIPS with naive reverse benchmark: nrevLIPS n = do let l free doSolve (l =:= [1..n]) garbageCollect garbageCollectorOff pi1 <- getProcessInfos seq (id $!! (rev l)) done pi2 <- getProcessInfos garbageCollectorOn let rtime = maybe 0 id (lookup RunTime pi2) - maybe 0 id (lookup RunTime pi1) -- LIPS = (n+1)*(n+2)/2/exec.time putStrLn $ "LIPS: " ++ show ((n+1)*(n+2)*1000 `div` (2*rtime)) main = nrevLIPS 4000 -- Result on a Sun Ultra-10 (chevalblanc, with Sicstus/Fast code): -- 2.5 MLIPS for (nrev 1000) -- Result on a Linux-PC PIII/650Mhz (with Sicstus/Emulated code): -- 0.94 MLIPS for (nrev 1000) -- Result on a Linux-PC AMD Athlon/900Mhz (with Sicstus/Emulated code): -- 1.12 MLIPS for (nrev 1000) -- Result on a Linux-PC AMD Athlon/1.300Mhz (with Sicstus/Emulated code): -- 1.43 MLIPS for (nrev 1000) -- Result on a Linux-PC AMD Athlon XP 2600+/2.000Mhz (petrus, Sicstus/Emulated): -- 2.95 MLIPS for (nrev 1000) -- Result on a Linux-PC Intel Core i7-4790 / 3.6Ghz (belair, Sicstus 4.3/JIT): -- 13.45 MLIPS for (nrev 4000) -- as nrev but double evaluation nrev2 n = do let l free doSolve (l =:= [1..n]) profileSpaceNF (rev l, rev l) -- as nrev2 but with test equality instead of unification: nrev3 n = do let l free doSolve (l =:= [1..n]) profileSpaceNF (rev l == rev l) �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/best.curry���������������������������0000664�0000000�0000000�00000000450�13234315711�0025066�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- best solution search: shorter l1 l2 = length l1 <= length l2 first g = head (findall g) g1 s = (head (best (\x -> let y free in x ++ y =:= [1,2,3]) shorter)) s g2 s = (head (best (\x -> let y free in x ++ y =:= [1,2,3]) (\l1 l2 -> length l1 > length l2) )) s ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/casetest.curry�����������������������0000664�0000000�0000000�00000001344�13234315711�0025747�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- Some tests for case expressions swap :: [Int] -> [Int] swap l = case l of [x,y] -> [y,x] _ -> l -- swap [] -> [] -- swap [1] -> [1] -- swap [1,2] -> [2,1] -- swap [1,2,3] -> [1,2,3] f :: [Int] -> Int f l = case l of [] -> 0 _:xs -> 100 + case xs of [y] -> y + 50 -- f [] -> 0 -- f [1] -> undefined -- f [1,2] -> 152 g :: Maybe String -> Bool g x = case x of Just "abc" -> True Just "xyz" -> True _ -> False -- g (Just "xyz") -> True -- g (Just "ab") -> False h :: [Int] -> Bool h x = case x of [1,2] -> True _ -> False -- h [1,2] -> True -- h [1,3] -> False -- h [2,div 1 0] -> False ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/chords.curry�������������������������0000664�0000000�0000000�00000050733�13234315711�0025424�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ -- This Curry program has been written by Michael Hanus and Pierre Rety. -- -- The user has to provide a melody, and the program proposes an accompaniment -- composed of chords. More precisely, for each bar the program yields -- one or several chord choices (frequently, one major chord and one minor -- chord), among which the musician can choose according to his/her -- sensibility. -- The main program as well as three examples lie at the end of this file. -- The main function is called 'run'. -- Some optimizations to improve the efficiency could be done. ------------------------ Restrictions ------------------------------------ -- The current program can only deal with melodies written in the C major -- scale (or A minor), without accidentals. This could easily be extended -- to any tonality by performing a translation over the integers that -- encode notes. -- The current program can only deal with bars of type 4/4. import Findall(allValues) ------------------------ Data type declarations ---------------------------- -- The notes (C major scale, R denotes a rest) data Note = C | D | E | F | G | A | B | R deriving Eq -- The chords data Chord = C_maj | D_maj | E_maj | F_maj | G_maj | G_maj7 | A_maj | B_maj | C_min | D_min | E_min | F_min | G_min | A_min | B_min deriving Eq -------------------------- Auxiliary functions ----------------------------- -- Absolute value. abs :: Int -> Int abs x = if x<0 then 0-x else x -- The minimum of two integers. min :: Int -> Int -> Int min x y = if x<y then x else y -- The minimal value in a non empty list of integers. minValueInList :: [Int] -> Int minValueInList (x:l) = foldr min x l -- Maps a two argument function on two lists. map2 :: (t1->t2->t)->[t1]->[t2]->[t] map2 f xs ys = map (uncurry f) (zip xs ys) ------------------------- Generation --------------------------------------- -- Generates a list of (chord, duration). This list corresponds to -- one melody bar. -- A duration is an integer in the interval [1..8]. The duration 1 -- is a eighth note, so the duration 8 is a whole note, i.e. a note that -- covers an entire 4/4 bar. -- Thus the duration sum of the generated list is equal to 8. -- There are three generation functions : the first generates chords -- covering the entire bar, the second generates chords covering the -- half-bars, and the third generates chords covering the quarter-bars. one_chord_bar :: [(Chord, Int)] one_chord_bar = [(aChord, 8)] two_chord_bar :: [(Chord, Int)] two_chord_bar = [(aChord, 4), (aChord, 4)] four_chord_bar :: [(Chord, Int)] four_chord_bar = [(aChord, 2), (aChord, 2), (aChord, 2), (aChord, 2)] -- Versions without demand-driven generation of the search space: --two_chord_bar | [(aChord, 4), (aChord, 4)] == bar -- = bar -- where bar free --four_chord_bar | [(aChord, 2), (aChord, 2), (aChord, 2), (aChord, 2)] == bar -- = bar -- where bar free -- Generates the major and minor chords of the C major scale, -- (all their notes must belong to the C major scale). aChord :: Chord aChord = C_maj aChord = F_maj aChord = G_maj aChord = G_maj7 aChord = D_min aChord = E_min aChord = A_min ------------------------- Dissonance checking ------------------------------ -- Given a chord bar (a list of (chord, duration); let x be its length) -- as well as a melody bar (a list of (note,duration)), -- returns this chord bar if it fits the melody bar, i.e. -- the dissonance between each chord of the chord bar and the -- corresponding part of the melody is not too great (local criterion), -- and the sum of these dissonances is not too great (global criterion). -- Otherwise returns nothing. -- -- The global criterion applies if x = 2 (resp. x = 4), in this case the -- dissonance sum must not be greater than 6 (resp 4). -- -- The melody is first split into x parts, then it is -- compacted to put together into one note the identical consecutive notes, in -- order to consider the melody parts containing only one or several times -- the same note as a particular case. checkBarDiss :: [(Chord, Int)] -> [(Note, Int)] -> ([(Chord, Int)],Int) -- This formulation does not work due to restrictions in the current parser: checkBarDiss chordbar melodybar | (x == 1 || dissonance_sum <= 4 || (x == 2 && dissonance_sum <= 6)) = (map fst chord_and_dissonance_bar , dissonance_sum) where x = length chordbar durations = map snd chordbar split_melody = splitBar durations melodybar compacted_melody = map2 compact_melody split_melody durations chord_and_dissonance_bar = map2 checkDiss_wrt_one_chord chordbar compacted_melody dissonance_sum = foldr (+) 0 (map snd chord_and_dissonance_bar) -- checkBarDiss chordbar melodybar = -- checkBarDiss_aux chordbar chord_and_dissonance_bar -- where chord_and_dissonance_bar -- = map2 checkDiss_wrt_one_chord -- chordbar (compact_melodies melodybar (map snd chordbar)) -- -- checkBarDiss_aux chordbar chord_and_dissonance_bar -- | (x == 1 || dissonance_sum <= 4 || (x == 2 && dissonance_sum <= 6)) -- = (map fst chord_and_dissonance_bar , dissonance_sum) -- where x = length chordbar -- dissonance_sum = foldr (+) 0 (map snd chord_and_dissonance_bar) -- -- compact_melodies melodybar durations = -- map2 compact_melody split_melody durations -- where split_melody = splitBar durations melodybar -- Given a (chord, duration) as well as a melody part of the same duration -- (given by a non empty list of (note, duration)), -- returns this (chord, duration) as well as the dissonance between it and -- the melody part if this dissonance is not greater than some bound. -- Otherwise returns nothing. checkDiss_wrt_one_chord :: (Chord,Int) -> [(Note,Int)] -> ((Chord,Int), Int) -- Particular cases : the melody part contains only one note. checkDiss_wrt_one_chord (chord,td) [(C,_)] | ((chord == F_maj) || (chord == A_min)) = ((chord,td),0) checkDiss_wrt_one_chord (chord,td) [(D,_)] | ((chord == G_maj) || (chord == D_min)) = ((chord,td),0) checkDiss_wrt_one_chord (chord,td) [(E,_)] | ((chord == C_maj)) = ((chord,td),0) checkDiss_wrt_one_chord (chord,td) [(F,_)] | ((chord == D_min)) = ((chord,td),0) checkDiss_wrt_one_chord (chord,td) [(G,_)] | ((chord == C_maj) || (chord == E_min)) = ((chord,td),0) checkDiss_wrt_one_chord (chord,td) [(A,_)] | ((chord == F_maj) || (chord == A_min)) = ((chord,td),0) checkDiss_wrt_one_chord (chord,td) [(B,_)] | ((chord == G_maj) || (chord == E_min)) = ((chord,td),0) -- The general case. -- If the melody part is [(n1,d1),...,(n_p,d_p)] and if diss_i denotes -- the dissonance between the chord and the note n_i, -- the dissonance between the chord and the melody part is -- 3*(diss_1*d1 + ... + diss_p*d_p) + (diss_1 or diss_2). -- By adding diss_1 or diss_2, the first non rest note has a stronger -- weight (diss_2 instead of diss_1 when the first note is a rest). -- -- The bound is d1 + ... + d_p, among which the d_i's corresponding to -- rests are replaced by 0. Indeed, the dissonance between any chord -- and the rest being equal to 0, we must not consider rests when -- computing the bound. -- Note that if there is no rest, the bound is equal to the duration of -- the chord. -- checkDiss_wrt_one_chord (t,td) ((n1,d1):rem) -- | (not(rem == [])) && (diss <= computedBound) = ((t,td),diss) -- -- where diss1 = dissonance(n1,t) -- partialDissList = map (\(n,d)->dissonance(n,t)*d) rem -- partialDiss = foldr (+) (diss1*d1) partialDissList -- diss = if n1 == R -- then 3*(partialDiss) + dissonance(fst (head rem),t) -- else 3*(partialDiss) + diss1 -- computedBound = bound ((n1,d1):rem) checkDiss_wrt_one_chord (t,td) ((n1,d1):rem) = checkDiss_wrt_one_chord_aux (t,td) ((n1,d1):rem) partialDiss where partialDiss = foldr (+) (dissonance(n1,t)*d1) (map (\p->dissonance((fst p),t)*(snd p)) rem) -- (map (\(n,d)->dissonance(n,t)*d) rem) checkDiss_wrt_one_chord_aux (t,td) ((n1,d1):rem) partialDiss | (not(rem == [])) && (diss <= bound ((n1,d1):rem)) = ((t,td),diss) where diss = if n1 == R then 3*partialDiss + dissonance(fst (head rem),t) else 3*partialDiss + dissonance(n1,t) -- Computes the dissonance bound w.r.t. a melody part. bound :: [(Note, Int)] -> Int bound [] = 0 bound ((n1,d1):rem) = if n1 == R then bound rem else d1 + bound rem -- Computes the dissonance between a note n and a chord t. -- This is the dissonance of the minimum interval between n and -- the notes of t. An interval between two notes is the minimal distance -- that separates them modulo the octave. dissonance :: (Note, Chord) -> Int dissonance(n,t) = interval2diss (minInterval n t) -- Returns the minimal interval between the note n and the notes held in -- the chord t. minInterval :: Note -> Chord -> Int minInterval n t = minValueInList (map (notes2interval n) (chord2notes t) ) -- Computes the interval between two notes. This is the minimal number -- of 1/2 tones that separate them modulo the octave, i.e. modulo 12 -- when working with notes converted into integers. The interval between -- any note and the rest R is 0. -- n1 and n2 must not be both a rest. notes2interval :: Note -> Note -> Int notes2interval n1 n2 = if dist>50 then 0 -- rest case. else if dist>6 then 12-dist else dist where dist = abs(note2int n1 - note2int n2) -- converts a note into an integer. note2int :: Note -> Int note2int C = 0 note2int D = 2 note2int E = 4 note2int F = 5 note2int G = 7 note2int A = 9 note2int B = 11 note2int R = 99 -- Converts an interval (a number of 1/2 tones) into a dissonance. -- The unison produces no dissonance, -- the 1 interval as well as the 2 interval produce a dissonance. -- An interval greater than 2 produces no dissonance. -- Note that unlike classical music, the 6 interval (tritone) is not -- forbidden here, and produces no dissonance. interval2diss :: Int -> Int interval2diss 0 = 0 interval2diss 1 = 1 interval2diss 2 = 1 interval2diss 3 = 0 interval2diss 4 = 0 interval2diss 5 = 0 interval2diss 6 = 0 -- Gives the list of notes held in a chord. chord2notes :: Chord -> [Note] chord2notes C_maj = [C,E,G] chord2notes F_maj = [F,A,C] chord2notes G_maj = [G,B,D] chord2notes G_maj7 = [G,B,D,F] chord2notes D_min = [D,F,A] chord2notes E_min = [E,G,B] chord2notes A_min = [A,C,E] -- Split a bar of the melody (given by a list of (note, duration) in the -- second argument) into several parts (sub-lists). -- The first argument is the list of intended durations of various parts. -- Thus the number of intended parts is the length of this list. -- The total durations of the first and second argument must be equal. -- Note that the case where a note overlaps over both -- parts is dealt with : the call of splitBar [4, 4] [(C,3), (D,2), (E,3)] -- returns [[(C,3),(D,1)], [(D,1),(E,3)]]. splitBar :: [Int] -> [(Note, Int)] -> [[(Note, Int)]] splitBar [] [] = [] splitBar (d:drem) ((n,t):mrem) = if d==t then ([(n,t)]: splitBar drem mrem) else if t>d then -- in this case, the note n is too long : it is shared between two parts ([(n,d)]: splitBar drem ((n,t-d):mrem)) else -- t <= d ( ((n,t):(head sp)) : tail sp) where sp = splitBar ((d-t):drem) mrem -- Compacts a melody part given by a non empty list of (note, duration). -- It puts together into one note the identical consecutive notes of the -- melody part. -- It removes the other notes of the melody part if the identical consecutive -- notes last at least more than the 3/4 of the melody part. -- The second argument is the length of the given melody part (this avoids -- to compute it again). -- For example, [(A,3),(A,1)] is replaced by [(A,4)], -- however [(A,2),(A,1),(B,1)] is also replaced by [(A,4)]. -- Indeed, from a musical point of view, (B,1) is a short note, -- just used here as a transition to reach the next melody part. -- Thus, it must not affect the chords. This is why this note is removed. compact_melody :: [(Note,Int)] -> Int -> [(Note,Int)] compact_melody ((n,d):rem) len = compact_melody_rec n 0 ((n,d):rem) len compact_melody_rec :: Note -> Int -> [(Note,Int)] -> Int -> [(Note,Int)] compact_melody_rec old_n sum_d [] len = if (sum_d >= three_quarters) then [(old_n, len)] else [(old_n,sum_d)] where three_quarters = div (3*len) 4 compact_melody_rec old_n sum_d ((n,d):rem) len = if (n == old_n) then compact_melody_rec n (sum_d+d) rem len else if (sum_d >= three_quarters) then [(old_n, len)] else if snd (head compacted_remainder) == len then compacted_remainder else ((old_n, sum_d):compacted_remainder) where three_quarters = div (3*len) 4 compacted_remainder = compact_melody ((n,d):rem) len ------------- Main program, encapsulated search, and printing -------------- -- Yields chords that fit the given melody bar, encapsulated in a list. -- Chords that cover the entire bar are first sought. If there are not, -- chord pairs, each chord of which covers a half-bar, are sought. -- If there are not, chord 4-tuples, each chord of which covers a -- quarter-bar, are sought. compute_bar :: [(Note, Int)] -> [([(Chord, Int)],Int)] -- this definition computes one/two_chord_solutions twice with the old parser: compute_bar mbar = if one_chord_solutions == [] then if two_chord_solutions == [] then bestOf (allValues (checkBarDiss four_chord_bar mbar)) else bestOf two_chord_solutions else bestOf one_chord_solutions where one_chord_solutions = allValues (checkBarDiss one_chord_bar mbar) two_chord_solutions = allValues (checkBarDiss two_chord_bar mbar) -- Filter list of pairs with a minimal (up to variance 1) snd component: bestOf :: [(a,Int)] -> [(a,Int)] bestOf bars = filter (\x -> (snd x)-minDiss<2) bars where minDiss = minValueInList (map snd bars) -- formatting functions for bars: format_diss_bar_chord :: ([(Chord, Int)],Int) -> String format_diss_bar_chord (barc,diss) = format_bar_chord barc ++ " (" ++ posint2String diss ++ ")" -- format_bar_chord barc format_bar_chord [] = "" format_bar_chord [t] = format_chord t format_bar_chord (t1:t2:ts) = format_chord t1 ++ " " ++ format_bar_chord (t2:ts) format_chord (chord,d) = chord2String chord ++ "/" ++ posint2String d chord2String C_maj = "Cmaj" chord2String F_maj = "Fmaj" chord2String G_maj = "Gmaj" chord2String G_maj7 = "Gmaj7" chord2String D_min = "Dmin" chord2String E_min = "Emin" chord2String A_min = "Amin" posint2String n = if n<=9 then [chr(ord '0' + n)] else posint2String (n `div` 10) ++ [chr(ord '0' + n `mod` 10)] ----- -- Prints disjunctive chord answers on one line. These are the various -- chord propositions for one melody bar. print_chord_alts :: [([(Chord, Int)],Int)] -> IO () print_chord_alts [x] = putStr (format_diss_bar_chord x) >> putStr "\n" print_chord_alts (x:y:rem) = do putStr (format_diss_bar_chord x) putStr " || " print_chord_alts (y:rem) -- The main function. -- Prints chords that fit the given melody. A melody is a list of melody bars. -- Each printed line corresponds to one melody bar. run :: [[(Note, Int)]] -> IO () run melody = do putStrLn "Proposed chords:" mapIO_ (print_chord_alts . compute_bar) melody ----- Example : The Sounds of silence (Simon and Garfunkel) -------------- -- The chords given by Paul Simon are: -- [[(A_min,8)], [(G_maj,8)], [(G_maj,8)], -- [(A_min,8)], [(A_min,4),(C_maj,4)], [(F_maj,4),(C_maj,4)], -- [(C_maj,8)], [(F_maj,4),(C_maj,4)], [(C_maj,4),(F_maj,4)], -- [(F_maj,8)], [(F_maj,4),(C_maj,4)], [(C_maj,8)], -- [(A_min,4),(C_maj,4)], [(G_maj,4),(A_min,4)]] -- -- Our program finds this solution, up to a few slight differences. -- The melody. sounds :: [[(Note, Int)]] sounds = [ [(R,2),(A,1),(A,1),(C,1),(C,1),(E,1),(E,1)], [(D,8)], [(R,2),(G,1),(G,1),(B,1),(B,1),(D,1),(D,1)], [(C,8)], [(R,2),(C,1),(C,1),(E,1),(E,1),(G,1),(G,1)], [(A,2),(A,1),(G,5)], [(R,2),(C,1),(C,1),(E,1),(E,1),(G,1),(G,1)], [(A,2),(A,1),(G,5)], [(R,2),(C,1),(C,1),(A,3),(A,1)], [(A,2),(A,1),(B,1),(C,3),(C,1)], [(C,1),(B,1),(A,2),(G,4)], [(R,2),(A,1),(G,1),(E,4)], [(R,1),(A,1),(A,1),(C,1),(G,4)], [(R,1),(B,3),(C,1),(A,3)]] -- agamemnon/strict: 3.2 secs -- agamemnon/dd: 1.36 secs ----- Example : Nicolas and Bart (J. Baez) ------------------------------ -- The chords given by J. Baez are: -- [[(C_maj,8)], [(G_maj,8)], [(A_min,8)], [(G_maj,8)], -- [(C_maj,8)], [(G_maj,8)], [(A_min,8)], [(G_maj,8)], -- [(C_maj,8)], [(D_min,8)], [(G_maj7,8)], [(C_maj,8)], -- [(C_maj,8)], [(D_min,8)], [(A_min,4),(E_maj,4)], [(A_min,8)]] -- -- Our program finds this solution, up to one difference. -- The last but one chord E_maj includes the foreign note G sharp. -- However replacing E_min by E_maj is frequent, though not systematic. -- This scenario is not included in our program. It then yields E_min -- for this half-bar. -- The melody. nicolas :: [[(Note, Int)]] nicolas = [ [(E,6),(C,2)], [(D,6),(B,2)], [(C,2),(B,2),(A,4)], [(B,6),(R,2)], [(E,6),(C,2)], [(D,6),(B,2)], [(C,2),(B,2),(A,4)], [(D,6),(R,2)], [(G,6),(E,2)], [(F,6),(D,2)], [(D,2),(E,2),(F,4)], [(E,6),(R,2)], [(E,6),(C,2)], [(D,6),(B,2)], [(C,4),(B,4)], [(A,8)]] -- agamemnon/strict: 1.1 secs -- agamemnon/dd: 0.7 secs testbar1 = [(C,2),(A,1),(G,1),(B,1),(F,1),(D,2)] -- compute_bar(testbar1) ----- Example : Homeward bound (Simon and Garfunkel) --------------------- -- We only consider the chorus, instead of the entire melody. -- The chords given by Paul Simon are: -- [[(C_maj,8)], [(F_maj,8)], -- [(F_maj,8)], [(C_maj,8)], -- [(C_maj,8)], [(F_maj,8)], [(F_maj,8)], [(C_maj,8)], -- [(D_min,2),(C_maj,2),(B_flat_maj,2),(F_maj,2)], [(C_maj,8)], -- [(D_min,2),(C_maj,2),(B_flat_maj,2),(F_maj,2)], [(C_maj,8)], -- [(D_min,2),(C_maj,2),(B_flat_maj,2),(F_maj,2)], [(G_maj7,8)], -- [(C_maj,8)], [(C_maj,8)]] -- Our program finds this solution, except for the third bar, for which -- Paul Simon kept on purpose the same chord as for the second bar, -- i.e. Fmaj, though this causes a big dissonance with the melody. -- On oberon, the runtime is 22507 ms. -- Without demand-driven generation of the search space, there is no answer: -- only 'managing allocation failure' after a runtime of a few minutes. -- The chorus. homeward = [ [(C,4),(B,2),(C,2)], [(A,8)], [(R,2),(G,2),(A,2),(G,2)], [(E,1),(D,1),(C,4),(R,2)], [(C,4),(B,2),(C,2)], [(A,8)], [(A,8)], [(E,2),(R,3),(E,1),(E,1),(F,1)], [(F,2),(E,2),(D,2),(C,2)], [(E,2),(R,3),(E,1),(E,1),(F,1)], [(F,2),(E,2),(D,2),(C,2)], [(E,2),(R,3),(E,1),(E,1),(F,1)], [(F,2),(E,2),(D,2),(C,2)], [(D,2),(E,2),(D,4)], [(C,2),(G,6)], [(G,8)]] -- agamemnon/strict: 65.9 secs -- agamemnon/dd: 1.6 secs homeward1 = [ [(C,4),(B,2),(C,2)], [(A,8)], [(R,2),(G,2),(A,2),(G,2)], [(E,1),(D,1),(C,4),(R,2)], [(C,4),(B,2),(C,2)], [(A,8)], [(A,8)], [(E,2),(R,3),(E,1),(E,1),(F,1)], [(F,2),(E,2),(D,2),(C,2)]] --, [(E,2),(R,3),(E,1),(E,1),(F,1)], -- [(F,2),(E,2),(D,2),(C,2)], [(E,2),(R,3),(E,1),(E,1),(F,1)], -- [(F,2),(E,2),(D,2),(C,2)], [(D,2),(E,2),(D,4)], -- [(C,2),(G,6)], [(G,8)]] -- agamemnon/strict: 21.5 secs -- agamemnon/dd: 0.8 secs -- critical bars: homeward2 = [[(F,2),(E,2),(D,2),(C,2)]] -- dadealus/strict: 51.7 secs (no GC) -- dadealus/dd: 0.7 secs (no GC) -- agamemnon/strict: 20.5 secs -- agamemnon/dd: 0.3 secs homeward3 = [[(F,2),(E,2),(D,2),(C,2)], [(F,2),(E,2),(D,2),(C,2)]] -- dadealus/strict: 1293 secs (including GC) -- dadealus/dd: 1.4 secs (no GC) -- agamemnon/strict: 42.5 secs -- agamemnon/dd: 0.6 secs ---------------- Example : a french song ------------------------- -- The chords given by the author are: -- [[(C_maj,4),(D_min,4)], [(A_min,2),(E_maj,2),(A_min,4)], -- [(C_maj,4),(D_min,4)], [(F_maj,2),(G_maj,2),(C_maj,4)], -- [(F_maj,4),(G_maj,4)], [(D_min,4),(C_maj,4)], -- [(D_min,4),(A_min,4)], [(D_min,4),(E_maj,4)]] -- Our program finds this solution, except that : -- -- it finds E_min instead of E_maj, because the chord E_maj -- (that contains the foreign note G sharp), is not included in our program, -- -- for the last bar as well as the last but two bars, it generates one -- chord for the whole bar, with the dissonance 7, that is to say -- a dissonance value close to the bound 8. -- The melody frenchsong = [ [(E,2),(E,1),(C,1),(D,3),(E,1)], [(C,2),(B,2),(A,1),(B,1),(A,2)], [(E,2),(E,1),(C,1),(D,3),(E,1)], [(C,2),(D,2),(E,1),(D,1),(E,2)], [(A,2),(A,1),(A,1),(G,2),(F,1),(E,1)], [(F,2),(A,2),(E,4)], [(D,2),(E,1),(D,1),(C,2),(B,1),(A,1)], [(C,2),(D,2),(B,4)]] -- agamemnon/strict: 48.5 secs -- agamemnon/dd: 2.0 secs �������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/colormap.curry�����������������������0000664�0000000�0000000�00000001606�13234315711�0025751�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- constraint solving (simple generate and test) in Curry: -- graph coloring {- This is our actual map: -------------------------- | | | | | | L2 | | | | | | | L1 |--------| L4 | | | | | | | L3 | | | | | | -------------------------- -} data Color = Red | Green | Yellow | Blue deriving Eq isColor :: Color -> Bool isColor Red = True isColor Yellow = True isColor Green = True isColor Blue = True coloring :: Color -> Color -> Color -> Color -> Bool coloring l1 l2 l3 l4 = isColor l1 & isColor l2 & isColor l3 & isColor l4 -- correct coloring: correct :: Color -> Color -> Color -> Color -> Bool correct l1 l2 l3 l4 = l1 /= l2 & l1 /= l3 & l2 /= l3 & l2 /= l4 & l3 /= l4 -- generate+test solution: goal l1 l2 l3 l4 = coloring l1 l2 l3 l4 & correct l1 l2 l3 l4 ��������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/colormap_nd.curry��������������������0000664�0000000�0000000�00000001271�13234315711�0026430�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- graph coloring with non-deterministic functions -- exploiting the demand-driven search due to lazy evaluation in Curry -- This is our actual map: -- -- -------------------------- -- | | | | -- | | L2 | | -- | | | | -- | L1 |--------| L4 | -- | | | | -- | | L3 | | -- | | | | -- -------------------------- -- data Color = Red | Green | Yellow | Blue aColor = Red aColor = Yellow aColor = Green aColor = Blue -- correct coloring: correct l1 l2 l3 l4 | l1/=l2 && l1/=l3 && l2/=l3 && l2/=l4 && l3/=l4 = [l1,l2,l3,l4] -- solution: main = correct aColor aColor aColor aColor ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/daVinciTest.curry��������������������0000664�0000000�0000000�00000010460�13234315711�0026350�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������----------------------------------------------------------------------------- -- Some examples for the use of the DaVinci library ----------------------------------------------------------------------------- import DaVinci -- display a simple graph with 3 nodes and 2 edges: test1 = dvDisplay $ dvNewGraph [dvNodeWithEdges node1 "Node1" [dvSimpleEdge edge1 node3 dvEmptyH] dvEmptyH, dvNodeWithEdges node2 "Node2" [dvSimpleEdge edge2 node3 dvEmptyH] dvEmptyH, dvSimpleNode node3 "Node3" dvEmptyH] where node1,node2,node3,edge1,edge2 free -- display a simple cyclic graph with 2 nodes and 3 edges test2 = dvDisplay $ dvNewGraph [dvNodeWithEdges node1 "Node1" [dvSimpleEdge edge1 node2 dvEmptyH] dvEmptyH, dvNodeWithEdges node2 "Node2" [dvSimpleEdge edge2 node1 dvEmptyH, dvSimpleEdge edge3 node2 dvEmptyH] dvEmptyH] where node1,node2,edge1,edge2,edge3 free -- display a simple graph and color the nodes with an -- initialization handler: test3 = dvDisplayInit (dvNewGraph [dvNodeWithEdges node1 "Node1" [dvSimpleEdge edge1 node2 dvEmptyH] dvEmptyH, dvNodeWithEdges node2 "Node2" [dvSimpleEdge edge2 node2 dvEmptyH] dvEmptyH]) (\dp->dvSetNodeColor node1 "red" dp &> dvSetNodeColor node2 "blue" dp) where node1,node2,edge1,edge2 free -- display a trivial graph with one node with can be extended by -- clicking at the node: test4 = dvDisplay $ dvNewGraph [dvSimpleNode node1 "Node1" eventH] where node1 free eventH dvwin = let node2,edge free in dvAddNode node2 "New Node" dvEmptyH dvwin &> dvAddEdge edge node2 node1 dvEmptyH dvwin -- display a simple graph with changing event handlers: test5 = dvDisplay $ dvNewGraph [dvNodeWithEdges node1 "Node1" [dvSimpleEdge edge1 node2 eventH3] eventH1, dvSimpleNode node2 "Node2" dvEmptyH] where node1,node2,edge1 free eventH1 dvwin = dvSetNodeColor node1 "red" dvwin &> dvSetClickHandler node1 eventH2 dvwin eventH2 dvwin = dvSetNodeColor node1 "blue" dvwin &> dvSetClickHandler node1 eventH1 dvwin eventH3 dvwin = let edge2 free in dvAddEdge edge2 node1 node2 dvEmptyH dvwin &> dvSetClickHandler edge1 (eventH4 edge2) dvwin eventH4 edge dvwin = dvDelEdge edge dvwin &> dvSetClickHandler edge1 eventH3 dvwin -------------------------------------------------------------------------- -- Next we show the visualization of graphs with a different structure -- by transforming them into daVinci graphs: -- Here, a graph is a list of nodes and edges: data Graph = Graph [Node] [Edge] -- A node is identified by a string (we assume that these strings are unique): data Node = Node String -- An edge consists of a source and a target node (identified by their ids): data Edge = Edge String String -- Now it is simple to convert this representation into the daVinci -- representation by grouping edges to their source node: showGraph :: Graph -> IO () showGraph (Graph nodes edges) = dvDisplay $ dvNewGraph (map (\(dvid,label)->dvNodeWithEdges dvid label (map (\(Edge _ n2)->createEdge n2) (filter (\(Edge n1 _)->n1==label) edges)) dvEmptyH) idnodes) where idnodes = map node2idnode nodes createEdge tlabel = dvSimpleEdge e (fst (head (filter (\(_,l)->l==tlabel) idnodes))) dvEmptyH where e free -- transform node into node with a DvId: node2idnode (Node label) = (dvid,label) where dvid free -- ...and now a simple test: testn1 = showGraph $ Graph [Node "n1", Node "n2", Node "n3"] [Edge "n1" "n2", Edge "n3" "n2", Edge "n1" "n3", Edge "n3" "n3"] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/diamond.curry������������������������0000664�0000000�0000000�00000001507�13234315711�0025550�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- Curry's solution to the "diamond" problem of the -- Prolog programming contest at JICSLP'98 in Manchester diamond :: Int -> IO () diamond n = lineloop1 1 1 >> lineloop2 1 (n*n-n+2) where lineloop1 i j = if i<=n then line j i >> lineloop1 (i+1) (j+n) else done lineloop2 i j = if i<n then line j (n-i) >> lineloop2 (i+1) (j+1) else done line s e = tab((n-e)*(size(n*n)+1)) >> lineloop 1 s where lineloop i t = if i<=e then putValue t >> tab (size(n*n)+1) >> lineloop (i+1) (t-n+1) else putChar '\n' putValue v = tab((size(n*n)+1)-size(v)) >> putStr (show v) tab :: Int -> IO () tab n = if n==0 then done else putChar ' ' >> tab (n-1) -- number of characters for the string representation of a number: size :: Int -> Int size n = if n<10 then 1 else size (n `div` 10) + 1 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/digit.curry��������������������������0000664�0000000�0000000�00000000413�13234315711�0025230�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������digit :: Int -> Bool digit 0 = True digit 1 = True digit 2 = True digit 3 = True digit 4 = True digit 5 = True digit 6 = True digit 7 = True digit 8 = True digit 9 = True -- goals: arithmetic functions as passive constraints: goal x y = x+x=:=y & x*x=:=y & digit x �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/distcurry/���������������������������0000775�0000000�0000000�00000000000�13234315711�0025074�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/distcurry/addnamedserver.curry�������0000664�0000000�0000000�00000002655�13234315711�0031156�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������------------------------------------------------------------------------------ --- A simple "addition" server to test the NamedSocket library. --- --- @author Michael Hanus --- @version April 2007 ------------------------------------------------------------------------------ import NamedSocket import IO import Read(readInt) -- The symbolic name for the server socket: addSocketName = "addserver" sendTo host msg = do h <- connectToSocket (addSocketName++"@"++host) hPutStr h msg hClose h stopServer host = sendTo host "TERMINATE\n" -- An "addition" server: addServer = do socket <- listenOn addSocketName putStrLn $ "Serving socket: " ++ show addSocketName addServeSocket socket addServeSocket socket = do (chost,stream) <- socketAccept socket putStrLn $ "Connection from "++chost serverLoop stream where serverLoop h = do l1 <- hGetLine h if l1=="TERMINATE" then do hClose h sClose socket putStrLn $ "Socket '" ++ socketName socket ++ "' closed" else do l2 <- hGetLine h hPutStrLn h (show (readInt l1 + readInt l2)) hClose h addServeSocket socket addClient host x y = do h <- connectToSocket (addSocketName++"@"++host) hPutStr h (unlines (map show [x,y])) hFlush h answer <- hGetLine h putStrLn $ "Answer: "++answer hClose h {- Test with PAKCS: :fork addServer addClient "localhost" 3 4 stopServer "localhost" -} �����������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/distcurry/addserver.curry������������0000664�0000000�0000000�00000002501�13234315711�0030137�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������------------------------------------------------------------------------------ --- A simple "addition" server to test the Socket library. --- --- @author Michael Hanus --- @version February 2006 ------------------------------------------------------------------------------ import Socket import IO import Read(readInt) -- Choose a free port number: portnr = 32145 sendTo host msg = do h <- connectToSocket host portnr hPutStr h msg hClose h stopServer host = sendTo host "TERMINATE\n" -- An "addition" server: addServer = do socket <- listenOn portnr putStrLn $ "Serving port: " ++ show portnr addServeSocket socket addServeSocket socket = do (chost,stream) <- socketAccept socket putStrLn $ "Connection from "++chost serverLoop stream where serverLoop h = do l1 <- hGetLine h if l1=="TERMINATE" then do hClose h sClose socket else do l2 <- hGetLine h hPutStrLn h (show (readInt l1 + readInt l2)) hClose h addServeSocket socket addClient :: String -> Int -> Int -> IO () addClient host x y = do h <- connectToSocket host portnr hPutStr h (unlines (map show [x,y])) hFlush h answer <- hGetLine h putStrLn $ "Answer: "++answer hClose h {- Test with PAKCS: :fork addServer addClient "localhost" 3 4 stopServer "localhost" -} �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/distcurry/addtimeoutserver.curry�����0000664�0000000�0000000�00000002754�13234315711�0031560�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������------------------------------------------------------------------------------ --- A simple "addition" server to test the Socket library with time limits --- on socket connections. --- --- @author Michael Hanus --- @version March 2006 ------------------------------------------------------------------------------ import Socket import IO import Read(readInt) -- Choose a free port number: portnr = 32145 sendTo host msg = do h <- connectToSocket host portnr hPutStr h msg hClose h stopServer host = sendTo host "TERMINATE\n" -- An "addition" server: addServer = do socket <- listenOn portnr putStrLn $ "Serving port: " ++ show portnr addServeSocket socket addServeSocket socket = do conn <- waitForSocketAccept socket 1000 addServeSocketTest socket conn addServeSocketTest socket Nothing = do putStrLn "Timeout" addServeSocket socket addServeSocketTest socket (Just (chost,stream)) = do putStrLn $ "Connection from "++chost serverLoop stream where serverLoop h = do l1 <- hGetLine h if l1=="TERMINATE" then do hClose h sClose socket else do l2 <- hGetLine h hPutStrLn h (show (readInt l1 + readInt l2)) hClose h addServeSocket socket addClient host x y = do h <- connectToSocket host portnr hPutStr h (unlines (map show [x,y])) hFlush h answer <- hGetLine h putStrLn $ "Answer: "++answer hClose h {- Test with PAKCS: :fork addServer addClient "localhost" 3 4 stopServer "localhost" -} ��������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/distcurry/httpget.curry��������������0000664�0000000�0000000�00000001424�13234315711�0027642�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- A simple example showing the direct connection to Unix sockets. -- This example does not use ports but more low level stream operations. -- On the positive side, there is no requirement on the implementation -- language of the server. import Socket(connectToSocket) import IO -- An I/O action that shows the answer of a web server to the -- request of a document: httpGet host doc = do str <- connectToSocket host 80 hPutStr str ("GET " ++ doc ++ " HTTP/1.0\n\n") hFlush str showStreamContents str -- Show the complete contents of an output stream: showStreamContents str = do b <- hIsEOF str if b then done else do l <- hGetLine str putStrLn l showStreamContents str -- A test: main = httpGet "www-ps.informatik.uni-kiel.de" "/index.html" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/england.curry������������������������0000664�0000000�0000000�00000016320�13234315711�0025544�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������import Findall(allSolutions) -- Geographical database (from John Lloyd's Escher report): data County = Avon | Bedfordshire | Berkshire | Buckinghamshire | Cambridgeshire | Cornwall | Devon | Dorset | Essex | Gloucestershire | Hampshire | Herefordshire | Hertfordshire |Kent |London |Northamptonshire | Oxfordshire | Somerset | Surrey | Sussex | Warwickshire | Wiltshire | Worcestershire deriving Eq data City = Bath | Bournemouth | Bristol | Cheltenham | Cirencester | Dorchester | Exeter | Gloucester | Penzance | Plymouth | Salisbury | Shaftesbury | Sherbourne | Taunton | Torquay | Truro | Winchester deriving Eq neighbours :: County -> County -> Bool neighbours Devon Cornwall = True neighbours Devon Dorset = True neighbours Devon Somerset = True neighbours Avon Somerset = True neighbours Avon Wiltshire = True neighbours Avon Gloucestershire = True neighbours Dorset Wiltshire = True neighbours Somerset Wiltshire = True neighbours Gloucestershire Wiltshire = True neighbours Dorset Somerset = True neighbours Dorset Hampshire = True neighbours Hampshire Wiltshire = True neighbours Hampshire Berkshire = True neighbours Hampshire Sussex = True neighbours Hampshire Surrey = True neighbours Sussex Surrey = True neighbours Sussex Kent = True neighbours London Surrey = True neighbours London Kent = True neighbours London Essex = True neighbours London Hertfordshire = True neighbours London Buckinghamshire = True neighbours Surrey Buckinghamshire = True neighbours Surrey Kent = True neighbours Surrey Berkshire = True neighbours Oxfordshire Berkshire = True neighbours Oxfordshire Wiltshire = True neighbours Oxfordshire Gloucestershire = True neighbours Oxfordshire Warwickshire = True neighbours Oxfordshire Northamptonshire = True neighbours Oxfordshire Buckinghamshire = True neighbours Berkshire Wiltshire = True neighbours Berkshire Buckinghamshire = True neighbours Gloucestershire Worcestershire = True neighbours Worcestershire Herefordshire = True neighbours Worcestershire Warwickshire = True neighbours Bedfordshire Buckinghamshire = True neighbours Bedfordshire Northamptonshire = True neighbours Bedfordshire Cambridgeshire = True neighbours Bedfordshire Hertfordshire = True neighbours Hertfordshire Essex = True neighbours Hertfordshire Cambridgeshire = True neighbours Hertfordshire Buckinghamshire = True neighbours Buckinghamshire Northamptonshire = True distance1 :: City -> City -> Int distance1 Plymouth Exeter = 42 distance1 Exeter Bournemouth = 82 distance1 Bristol Taunton = 43 distance1 Bristol Gloucester = 35 distance1 Torquay Exeter = 23 distance1 Plymouth Torquay = 24 distance1 Bristol Bath = 13 distance1 Exeter Taunton = 34 distance1 Penzance Plymouth = 78 distance1 Taunton Bournemouth = 70 distance1 Bournemouth Salisbury = 28 distance1 Taunton Salisbury = 64 distance1 Salisbury Bath = 40 distance1 Bath Gloucester = 39 distance1 Bournemouth Bath = 65 distance1 Truro Penzance = 26 distance1 Plymouth Truro = 52 distance1 Shaftesbury Salisbury = 20 distance1 Sherbourne Shaftesbury = 16 distance1 Dorchester Bournemouth = 28 distance1 Salisbury Winchester = 24 distance1 Exeter Sherbourne = 53 distance1 Sherbourne Taunton = 29 distance1 Bath Cirencester = 32 distance1 Cirencester Cheltenham = 16 distance1 Cheltenham Gloucester = 9 distance1 Dorchester Sherbourne = 19 distance1 Bath Shaftesbury = 33 distance1 Winchester Bournemouth = 41 distance1 Exeter Dorchester = 53 distance :: City -> City -> Int distance city1 city2 = distance1 city1 city2 ? distance1 city2 city1 isin :: City -> County -> Bool isin Bristol Avon = True isin Taunton Somerset = True isin Salisbury Wiltshire = True isin Bath Avon = True isin Bournemouth Dorset = True isin Gloucester Gloucestershire = True isin Torquay Devon = True isin Penzance Cornwall = True isin Plymouth Devon = True isin Exeter Devon = True isin Winchester Hampshire = True isin Dorchester Dorset = True isin Cirencester Gloucestershire = True isin Truro Cornwall = True isin Cheltenham Gloucestershire = True isin Shaftesbury Dorset = True isin Sherbourne Dorset = True -- Some queries and their expected results: q1 x = solve $ distance Bristol x < 40 -- {x=Gloucester} | {x=Bath} q2 x y = solve $ distance1 x y < 20 -- {y=Bath,x=Bristol} | {y=Shaftesbury,x=Sherbourne} | {y=Sherbourne,x=Dorchester} | {y=Cheltenham,x=Cirencester} | {y=Gloucester,x=Cheltenham} q3 x = (neighbours Oxfordshire x ? neighbours x Oxfordshire) -- {x=Berkshire} | {x=Wiltshire} | {x=Gloucestershire} | {x=Warwickshire} | {x=Northamptonshire} | {x=Buckinghamshire} q4 x = solve $ let y free in isin x y && y/=Wiltshire -- {x=Bristol} | {x=Taunton} | {x=Bath} | {x=Bournemouth} | {x=Gloucester} | {x=Torquay} | {x=Penzance} | {x=Plymouth} | {x=Exeter} | {x=Winchester} | {x=Dorchester} | {x=Cirencester} | {x=Truro} | {x=Cheltenham} | {x=Shaftesbury} | {x=Sherbourne} q4l = allSolutions (\x -> let y free in isin x y && y /= Wiltshire) -- [Bristol,Taunton,Bath,Bournemouth,Gloucester,Torquay,Penzance,Plymouth,Exeter,Winchester,Dorchester,Cirencester,Truro,Cheltenham,Shaftesbury,Sherbourne] q5 x = solve $ (neighbours Oxfordshire y ? neighbours y Oxfordshire) && isin x y where y free -- {x=Salisbury} | {x=Gloucester} | {x=Cirencester} | {x=Cheltenham} q5l = allSolutions (\x -> let y free in (neighbours Oxfordshire y ? neighbours y Oxfordshire) && isin x y) -- [Salisbury,Gloucester,Cirencester,Cheltenham] q6 x = solve $ let y free in y `elem` [Devon,Cornwall,Somerset,Avon] && isin x y -- {x=Torquay} | {x=Plymouth} | {x=Exeter} | {x=Penzance} | {x=Truro} | {x=Taunton} | {x=Bristol} | {x=Bath} q7 x = solve $ let y free in distance Bristol y < 50 && isin y x -- {x=Somerset} | {x=Gloucestershire} | {x=Avon} -- the further queries require encapsulated search: -- implementation of Escher's forall-construct: forall :: (a->Bool) -> (a->Bool) -> Bool forall domain cond = all cond (allSolutions domain) q8 = forall (\x -> (neighbours Avon x ? neighbours x Avon)) (\x -> isin _ x) -- True | True | True q9 = let x free in isin Bristol x && forall (\z -> distance Bristol z < 40) (\z -> isin z x) -- No solution. q10 = length (allSolutions (\x->neighbours Oxfordshire x ? neighbours x Oxfordshire)) -- 6 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/escher_cond.curry��������������������0000664�0000000�0000000�00000000577�13234315711�0026417�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- Module "conditional" from the Escher report: data Alpha = A | B | C | D membercheck :: (Alpha , [Alpha]) -> Bool membercheck(_,[]) = False membercheck(x,y:z) = if x==y then True else membercheck(x,z) -- goals: goal1 = membercheck(B,[A,B]) --> True goal2 = membercheck(C,[A,B]) --> False goal3 = membercheck(x,[A,B]) where x free --> suspend ���������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/escher_higher.curry������������������0000664�0000000�0000000�00000001266�13234315711�0026736�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- Module "Higher" from the Escher report: data Day = Mon | Tue | Wed | Thu | Fri | Sat | Sun map_ :: (a -> b , [a]) -> [b] map_(_,[]) = [] map_(f,x:xs) = f x : map_(f,xs) filter_ :: (a -> Bool , [a]) -> [a] filter_(_,[]) = [] filter_(p,x:xs) = if p x then x : filter_(p,xs) else filter_(p,xs) next :: Day -> Day next(Mon) = Tue next(Tue) = Wed next(Wed) = Thu next(Thu) = Fri next(Fri) = Sat next(Sat) = Sun next(Sun) = Mon weekday :: Day -> Bool weekday(Mon) = True weekday(Tue) = True weekday(Wed) = True weekday(Thu) = True weekday(Fri) = True weekday(Sat) = False weekday(Sun) = False -- goals: goal1 = map_(next,[Mon,Tue,Wed]) goal2 = filter_(weekday,[Sun,Mon,Wed]) ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/escher_perm.curry��������������������0000664�0000000�0000000�00000001144�13234315711�0026426�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- Module "Permute" from new Escher report: data Day = Mon | Tue | Wed | Thu | Fri | Sat | Sun data Person = Mary | Bill | Joe | Fred permute([] ,l) = l=:=[] permute(h:t,l) = let r,u,v free in permute(t,r) & split(r,u,v) & l=:=concatenate(u,h:v) concatenate([] ,x) = x concatenate(u:x,y) = u:concatenate(x,y) split([] ,x,y) = x=:=[] & y=:=[] split(x:y,v,w) = v=:=[] & w=:=x:y split(x:y,v,w) = let z free in v=:=x:z & split(y,z,w) splitc(l,x,y) = concatenate(x,y)=:=l -- Goals: goal1 = concatenate([Mon,Tue],[Wed]) goal2 x y = split([Mon,Tue],x,y) goal3 x = permute([Mon,Tue,Wed],x) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/exchange.curry�����������������������0000664�0000000�0000000�00000002405�13234315711�0025715�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- Curry's solution to the "exchange" problem of the -- Prolog programming contest at JICSLP'98 in Manchester -- Prolog-like solution: exchange l = maxList (findall \x -> value (swap l) =:= x) -- solution using best solution search: exchangebest l | sol s = s where s free sol = head (best (\x-> value (swap l) =:= x) (>)) -- basic value of a list of integers (alternating sum and difference): value [] = 0 value [x] = x value (x:y:xs) = x - y + (value xs) -- possible swappings of the integer list: swap [] = [] swap (x:xs) = x : swap xs swap (x:y:xs) = (swapValue y) : (swapValue x) : swap xs swapValue x = string2PosInt (rev (posInt2String x)) maxList [x] = x maxList (x:y:xs) = max x (maxList (y:xs)) max x y = if x<y then y else x rev [] = [] rev (x:xs) = (rev xs) ++ [x] posInt2String n = if n<=9 then [chr(ord '0' + n)] else posInt2String (n `div` 10) ++ [chr(ord '0' + n `mod` 10)] string2PosInt s = string2PosIntPrefix s 0 string2PosIntPrefix [] n = n string2PosIntPrefix (c:cs) n = if oc>=ord '0' && oc<=ord '9' then string2PosIntPrefix cs (n*10+(ord c)-(ord '0')) else 0 where oc = ord c goal1 = exchange [1,2] goal1b = exchangebest [1,2] ---> 1 goal2 = exchange [12,56,34] goal2b = exchangebest [12,56,34] --> 78 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/family_con.curry���������������������0000664�0000000�0000000�00000002512�13234315711�0026252�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- Database programming in Curry: family relationships (constraint style) {- Structure of the family: Christine --- Antony Maria --- Bill / \ | / \ | Monica --- John Alice --- Frank / \ | / \ | Susan Peter Andrew -} data Person = Christine | Maria | Monica | Alice | Susan | Antony | Bill | John | Frank | Peter | Andrew female Christine = True female Maria = True female Monica = True female Alice = True female Susan = True male Antony = True male Bill = True male John = True male Frank = True male Peter = True male Andrew = True married Christine Antony = True married Maria Bill = True married Monica John = True married Alice Frank = True mother Christine John = True mother Christine Alice = True mother Maria Frank = True mother Monica Susan = True mother Monica Peter = True mother Alice Andrew = True father f c | married m f & mother m c = True where m free grandfather g c | father g f & father f c = True where f free grandfather g c | father g m & mother m c = True where m free -- goals: goal1 child = father John child goal2 g c = grandfather g c ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/family_fun.curry���������������������0000664�0000000�0000000�00000002542�13234315711�0026266�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- Database programming in Curry: family relationships -- (functional logic style with explicit functional dependencies) {- Structure of the family: Christine --- Antony Maria --- Bill / \ | / \ | Monica --- John Alice --- Frank / \ | / \ | Susan Peter Andrew -} data Person = Christine | Maria | Monica | Alice | Susan | Antony | Bill | John | Frank | Peter | Andrew deriving Eq husband Christine = Antony husband Maria = Bill husband Monica = John husband Alice = Frank mother John = Christine mother Alice = Christine mother Frank = Maria mother Susan = Monica mother Peter = Monica mother Andrew = Alice father c = husband (mother c) grandfather g c | g == father (father c) = True grandfather g c | g == father (mother c) = True -- A is ancestor of P: ancestor a p | a == father p = True ancestor a p | a == mother p = True ancestor a p | a == father p1 && ancestor p1 p = True where p1 free ancestor a p | a == mother p1 && ancestor p1 p = True where p1 free -- Example goals: goal1 = father Peter goal2 child = solve $ father child == John goal3 g c = grandfather g c goal4 a = ancestor a Andrew goal5 a p = ancestor a p ��������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/family_nd.curry����������������������0000664�0000000�0000000�00000002474�13234315711�0026103�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- Database programming in Curry: family relationships -- (non-deterministic functional style) {- Structure of the family: Christine --- Antony Maria --- Bill / \ | / \ | Monica --- John Alice --- Frank / \ | / \ | Susan Peter Andrew -} data Person = Christine | Maria | Monica | Alice | Susan | Antony | Bill | John | Frank | Peter | Andrew female = Christine female = Maria female = Monica female = Alice female = Susan male = Antony male = Bill male = John male = Frank male = Peter male = Andrew husband :: Person -> Person husband Christine = Antony husband Maria = Bill husband Monica = John husband Alice = Frank mother :: Person -> Person mother John = Christine mother Alice = Christine mother Frank = Maria mother Susan = Monica mother Peter = Monica mother Andrew = Alice father c = husband (mother c) grandfather c = father (father c) grandfather c = father (mother c) -- ancestors of a person p: ancestor p = father p ancestor p = mother p ancestor p = father (ancestor p) ancestor p = mother (ancestor p) -- example goals: goal1 = father John goal2 c = grandfather c goal3 = ancestor Andrew ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/family_rel.curry���������������������0000664�0000000�0000000�00000002520�13234315711�0026254�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- Database programming in Curry: family relationships (relational style) {- Structure of the family: Christine --- Antony Maria --- Bill / \ | / \ | Monica --- John Alice --- Frank / \ | / \ | Susan Peter Andrew -} data Person = Christine | Maria | Monica | Alice | Susan | Antony | Bill | John | Frank | Peter | Andrew female Christine = True female Maria = True female Monica = True female Alice = True female Susan = True male Antony = True male Bill = True male John = True male Frank = True male Peter = True male Andrew = True married Christine Antony = True married Maria Bill = True married Monica John = True married Alice Frank = True mother Christine John = True mother Christine Alice = True mother Maria Frank = True mother Monica Susan = True mother Monica Peter = True mother Alice Andrew = True father f c | married m f && mother m c = True where m free grandfather g c | father g f && father f c = True where f free grandfather g c | father g m && mother m c = True where m free -- goals: goal1 child = father John child goal2 g c = grandfather g c ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/first.curry��������������������������0000664�0000000�0000000�00000000360�13234315711�0025260�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- Lazy functional logic programming with infinite lists data Nat = O | S Nat first O _ = [] first (S n) (x:xs) = x : first n xs from n = n : from (S n) goal1 = first (S (S O)) (from O) goal2 x y = first x (from y) =:= [O] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/higher.curry�������������������������0000664�0000000�0000000�00000001201�13234315711�0025372�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- apply a function to all list elements (predefined as `map'): map_ :: (a->b) -> [a] -> [b] map_ _ [] = [] map_ f (x:xs) = f x : map_ f xs -- accumulate all list elements (predefined as `foldr'): foldr_ :: (a->b->b) -> b -> [a] -> b foldr_ _ z [] = z foldr_ f z (h:t) = f h (foldr_ f z t) -- increment function: inc x = x+1 -- goals: -- increment list elements: g1 :: [Int] g1 = map inc [0,2,1] g2 :: [Int] g2 = map (+ 1) [0,2,1] -- sum of all list elements: g3 :: Int g3 = foldr (+) 0 [1,0,2] -- product of all list elements: g4 :: Int g4 = foldr (*) 1 [1,2,3,4,5] g5 :: Int g5 = foldr (\ x y -> x * y) 1 [1,2,3,4,5] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/horseman.curry�����������������������0000664�0000000�0000000�00000001264�13234315711�0025751�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-- HORSEMAN: relation between men, horses and their heads and feet: data Nat = O | S Nat -- translate integers to nat-terms: int2nat :: Int -> Nat int2nat n = if n<=0 then O else S(int2nat (n-1)) -- addition on naturals: add O n = n add (S m) n = S (add m n) horseman m h heads feet = heads =:= add m h & feet =:= add (add m m) (add (add h h) (add h h)) -- How many men and horses have 3 heads and 8 feet? goal1 m h = horseman m h (S(S(S O))) (S(S(S(S(S(S(S(S O)))))))) -- How many men and horses have 8 heads and 20 feet? goal2 m h = horseman m h (int2nat 8) (int2nat 20) -- Relation between men and horses feets with 2 heads: goal3 m h hd = horseman m h (S (S O)) hd ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/index.html���������������������������0000664�0000000�0000000�00000044660�13234315711�0025053�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<html> <head> <title>Curry Examples

    Curry: Example Programs

    Here is a collection of (small) Curry programs. References to larger applications can be found here. Usually, each program contains some example goals at the end in order to see its intended application.


    The programs are sorted by the main language features they use so that people interested in the various features of Curry can look at these examples:

    Purely functional programs:

    • rev.curry: list concatenation and naive reverse
    • higher.curry: some standard higher-order functions: map and foldr
    • quicksort.curry: functional quicksort based on filtering the smaller and larger elements
    • qsortlet.curry: quicksort based on splitting the unsorted list into a pair of lists with smaller and larger elements
    • inflists.curry: functions defined on infinite lists, like fib and primes
    • escher_higher.curry: implementation of module "Higher" from the Escher report

    Purely logic programs:


    Functional logic programs:

    • nats.curry: a basic example: natural numbers are represented as S-terms and the substraction between numbers is defined by reversing the addition
    • family_fun.curry: a database for family relationships (functional logic style)
    • family_nd.curry: a database for family relationships (functional logic style with non-deterministic functions)
    • horseman.curry: a puzzle from equational logic programming (solving questions like "How many men and horses have 8 heads and 20 feet?")
    • first.curry: lazy functional logic programming with infinite lists
    • last.curry: compute the last element of a list using a flexible append function (i.e., inverting list concatenation)
    • member.curry: list membership defined by a single conditional rule based on a flexible append function (i.e., inverting list concatenation)
    • mergesort.curry: merge sort: sorting two lists by merging the sorted first and second half of the list
    • assembler.curry: a one-pass assembler: translation of a sequence of arbitrary jump-instructions into machine code where logical variables are used to resolve forward jump addresses

    Non-deterministic functions:

    • nondetfunc.curry: some "classical" examples for non-deterministic functions like non-deterministic list insertion, permutation, and permutation sort
    • family_nd.curry: a database for family relationships (functional logic style with non-deterministic functions)
    • colormap_nd.curry: graph coloring with non-deterministic functions exploiting the demand-driven search due to lazy evaluation in Curry

    Passive constraints (logic programming with coroutining):

    • colormap.curry: map coloring with test-and-generate (corresponds to logic programming with delays)
    • digit.curry: small example for the use of arithmetic functions acting as passive constraints
    • rigidadd.curry: small example from the POPL'97 paper for the evaluation with residuation: the addition of natural numbers acts as a passive constraint waiting for the instantiation of is arguments

    Residuation and concurrent programming:

    • see also all examples for passive constraints
    • infresiduate.curry: an example for a potential disadvantage of residuation [Hanus JLP'95]: with residuation, the program has an infinite search space but with narrowing, the search space is finite
    • account.curry: concurrent object-oriented programming: a bank account implemented as an active object ("account server")

    Input/Output (monadic I/O):

    • iodemo.curry: some demos of the monadic I/O concept
    • diamond.curry: printing a regular diamond of numbers on the standard output (an adaptation from the Prolog programming contest at JICSLP'98 in Manchester)

    Arithmetic sequences and list comprehensions:

    • arithseq.curry: some simple examples for the arithmetic sequence notation
    • multgen.curry: a few examples for list comprehensions with multiple generators
    • psort.curry: an implementation of permutation sort using list comprehensions
    • default.lcurry: an implementation of Haskell-like default rules with list comprehensions

    Encapsulated search:

    • allsols.curry: a few examples for the use of the library "AllSolutions"
    • search.curry: a simple example for encapsulated search
    • prolog.curry: a simulation of the Prolog top-level shell with different search strategies
    • best.curry: a simple example for the best solution search strategy
    • england.curry: a relational database with encapsulated search examples
    • sportsdb.curry: module SportsDB from the Escher report showing the implementation of Escher's "forall" construct by encapsulated search

    Modules:

    • ModConc.curry: a module defining list concatenation several times to be important by the example modules below
    • UseConc1.curry: a module importing module ModConc
    • UseConc2.curry: a module importing module ModConc qualified in order to avoid name conflicts

    Comparison with Escher:

    Here are a few examples that are implementations of programs from John Lloyd's papers on Escher.
    • escher_perm.curry: module "Permute" from new Escher report (computation of permutations with a concatentation and a split function)
    • escher_higher.curry: implementation of module "Higher" from the Escher report
    • escher_cond.curry: module "Conditional" from the Escher report (check membership in a list)
    • relational.curry: module "Relational" from the Escher report (computing with relations)
    • sportsdb.curry: module SportsDB from the Escher report showing the implementation of Escher's "forall" construct by encapsulated search
    • england.curry: a geographical database and some queries from the Escher report

    Functional logic programming with constraints:

    Important note: The programs in this section work only with implementations of Curry that support real arithmetic and finite domain constraints, see, for instance, PAKCS.
    • mortgage.curry: a classical example for constraint logic programming over reals: define a mortgage relationship between the principal, the life of the loan in months, the interest rate, the monthly repayment, and the outstanding balance. Due to the constraint programming features, one can solve various problems with this simple definition.
    • circuit.curry: a further classical example for constraint logic programming over reals: analysis of electrical circuits
    • queens.curry: a classical example for constraint logic programming over finite domains: solving the n-queens problem
    • smm.curry: a further classical example for constraint logic programming over finite domains: solving the "send+more=money" puzzle
    • sudoku.curry: solving Su Doku puzzles in Curry with finite domain constraints. This examples shows the use of higher-order functions to set up a set of constraints in a compact way.
    • magicseries.curry: an example for constraint logic programming over finite domains where lazy evaluation is exploited: the computation of magic series

    Distributed functional logic programming

    Important note: Most of the programs in this section work only with implementations of Curry that support distributed programming with port constraints as described in the PPDP'99 paper.
    • accountport.curry: the same program as account.curry (a bank account implemented as a concurrent object) but with the use of port constraints
    • counter.curry: a simple counter which can be incremented and queried from any machine connected to the Internet
    • nameserver.curry: a name server storing an association between names and numbers which can be queried in a simple manner from any machine connected to the Internet
    • talk.curry: a simple program implementing the kernel of the Unix "talk" to enable a conversation between two partners on different machines connected to the Internet
    • sema.curry: an implementation of semaphores in Curry
    • philo.curry: an implementation of "dining philosophers" problem using semaphores implemented via ports
    • httpget.curry: a simple example showing the connection to Unix sockets (not implemented with ports but with more low level Socket library)
    • addserver.curry: an example showing the implementation of a simple client/server application (the server provides a service to add two numbers). The implementation does not use ports but the more low level Socket library.
    • addnamedserver.curry: an example showing the implementation of a simple client/server application (the server provides a service to add two numbers). The implementation does Unix sockets with symbolic names based on the library NamedSocket.
    • addtimeoutserver.curry: an example showing the implementation of a simple client/server application (the server provides a service to add two numbers). The implementation uses the Socket library and shows the use of time limits for socket connections on the server side.

    Examples for meta-programming

    Important note: The programs in this section work only with the libraries of the PAKCS environment for meta-programming (see library directory pakcs/lib/meta of the current PAKCS distribution).
    • Imports.curry: Example for using the library CurryStringClassifier: extracts the names of all imported modules from a Curry source file.
    • putModuleHead.curry: Example for using the library CurryStringClassifier: adds a standard module header to a Curry source file if it is not already there.

    Examples for the GUI library "GUI"

    Important note: The programs in this section work only with the library GUI which is available for the PAKCS environment. A description of the ideas behind this library can be found in the PADL'00 paper. Most of the programs have a function "main" to start the GUI.
    • hello.curry: a simple "Hello world" GUI
    • counter.curry: a simple counter GUI
    • temperature.curry: a converter from Celsius to Fahrenheit and Kelvin where the Celsius value of the temperature in Celsius is fixed by a slider
    • calc.curry: a desk calculator showing the combination of GUIs with local state where the state is stored in an object
    • checkbutton.curry: a simple demo for the use of checkbuttons
    • config.curry: a simple demo to show the dynamic reconfiguration of widget parameters
    • events.curry: a simple demo to show the handling of different events (e.g., left and right mouse buttons) inside one widget.
    • inputmask.curry: a demo (simple address database) to show widgets in a tabular orientation by exploiting the Matrix construct for widget composition
    • hilbert.curry: drawing a Hilbert curve in a canvas widget
    • sierpinski.curry: drawing a Sierpinski curve in a canvas widget
    • fractal.curry: drawing a fractal curve in a canvas widget
    • mail.curry: a simple mail widget to write and send an email
    • menu.curry: a simple counter GUI to demonstrate the use of menu buttons
    • radiotraffic.curry: a simple demo for the use of radiobuttons: traffic light controller ensures exclusion in traffic lights.
    • scrollbar.curry: a simple demo for the use of scrollbars
    • textappend.curry: a simple GUI demonstrating the use of appendValue in TextEdit widgets
    • textstyledappend.curry: a simple GUI demonstrating the use of appendStyledValue in TextEdit widgets (where text can be shown with colors and font styles)
    • counter_controlled.curry: a simple counter GUI which can be controlled not only by the user but also by external processes that send messages to the GUI

    Examples for functional logic parsers

    Here are simple examples for the use of the functional logic parser combinators which are defined in the parser library Parser and are adapted from the paper "A Functional Logic Perspective of Parsing" by R. Caballero and F.J. Lopez-Fraguas (Proc. FLOPS'99, Springer LNCS 1722, pp. 85-99, 1999).
    • expr_parser.curry: a parser for arithmetic expressions over natural numbers
    • palindrome.curry: a parser for palindromes over the alphabet 'a' and 'b' showing also the possibility to generate correct sentences with functional logic parsers

    Various example programs

    • chords.curry: this program is able to generate appropriate chords for the accompaniment of a given melody. There is also a paper which sketches the implementation and describes the advantages of Curry to implement this application.
    • daVinciTest.curry: some examples to show the use of the library DaVinci for the visualization of graphs

    Back to Homepage of Curry
    Michael Hanus
    pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/inflists.curry000066400000000000000000000014011323431571100257610ustar00rootroot00000000000000-- some functions generating infinite lists: -- the list of natural numbers: from n = n : from (n+1) -- Fibonacci numbers: fibs = fibgen 1 1 fibgen n1 n2 = n1 : fibgen n2 (n1+n2) goal1 :: [Int] goal1 = take 10 fibs -- the list of primes generated by the -- Sieve of Erathostenes: primes = sieve (from 2) sieve (x:xs) = x : sieve (filter (\y -> y `mod` x > 0) xs) goal2 :: [Int] goal2 = take 5 primes -- Hamming numbers: ordMerge (x:xs) (y:ys) | x==y = x:ordMerge xs ys | xy = y:ordMerge (x:xs) ys hamming = 1:ordMerge (map (*2) hamming) (ordMerge (map (*3) hamming) (map (*5) hamming)) goal3 :: [Int] goal3 = take 10 hamming pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/infresiduate.curry000066400000000000000000000007361323431571100266220ustar00rootroot00000000000000-- Example for potential disadvantage of residuation [Hanus JLP'95]: -- with residuation, the program has an infinite search space -- with narrowing, the search space is finite! conc xs ys = append xs ys --> finite search space --conc xs ys = append (ensureSpine xs) ys --> infinite search space append [] ys = ys append (x:xs) ys = x : append xs ys rev [] [] = True rev l (x:xs) = let lx free in conc lx [x] =:= l & rev lx xs goal l = rev [0] l pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/iodemo.curry000066400000000000000000000035501323431571100254110ustar00rootroot00000000000000-- Some demos of monadic I/O: import Findall -- a simple echo: echo = getChar >>= \c -> if ord c == (-1) then done else putChar c >> echo -- a simple dialog: dialog = putStrLn "Ihr Name?" >> getLine >>= processName where processName str = putStr "Hallo " >> putStr str >> putStr ", rueckwaerts lautet Ihr Name: " >> putStrLn (rev str) rev [] = [] rev (x:xs) = rev xs++[x] -- a call to "nondet" is not allowed since it would duplicate the world: nondet :: IO () nondet | generate x = putChar x where x free generate 'a' = True generate 'b' = True -- ...but is allowed if the non-determinism is encapsulated: det | findfirst (\x -> generate x) =:= y = putChar y where y free -- copy a file: copyFile :: String -> String -> IO () copyFile from to = readFile from >>= writeFile to -- reading and writing integers: -- write an integer: putInt n = if n<0 then putChar '-' >> putInt (-n) else if n<=9 then putChar(chr(ord '0' + n)) else putInt (n `div` 10) >> putChar(chr(ord '0' + n `mod` 10)) -- parse an integer: parseInt l = parseIntPrefix (dropWhile (==' ') l) 0 where parseIntPrefix [] n = n parseIntPrefix (c:cs) n = let oc = ord c in if c==' ' then n else if c=='-' then - parseIntPrefix cs n else if oc>=ord '0' && oc<=ord '9' then parseIntPrefix cs (n*10+(oc)-(ord '0')) else 0 -- read an integer: getInt = getLine >>= \s -> return (parseInt s) -- factorial function: fac n | n==0 = 1 | otherwise = fac(n-1)*n -- an interactive factorial computation: facint = putStr "Factorial computation: Type in a small natural number: " >> getInt >>= \n -> putStr "The factorial of " >> putInt n >> putStr " is " >> putInt (fac n) >> putChar '\n' pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/last.curry000066400000000000000000000003451323431571100250770ustar00rootroot00000000000000-- Compute the last element in a list using append: append [] ys = ys append (x:xs) ys = x : append xs ys last :: Eq a => [a] -> a last xs | append _ [x] == xs = x where x free goal :: Int goal = last [1,2,3,4] pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/listcomp/000077500000000000000000000000001323431571100246765ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/listcomp/Default.lcurry000066400000000000000000000014361323431571100275300ustar00rootroot00000000000000Application of list comprehensions: Implementation of DEFAULT RULES by a syntactic transformation Consider you have a Haskell-like function definition with default rules: f p = r f x = s (where p is a pattern and x a variable). The sequential reading of these rules can be implemented by the following syntactic transformation: f x = let l = [r | p <- [x]] in if l==[] then s else head l Example 1: Consider the Haskell definition pabs 0 = 0 pabs x = 1 We implement this as > pabs :: Int -> Int > pabs x = let l = [0 | 0 <- [x]] > in if l==[] then 1 else head l Example 2: Consider the Haskell definition swap [x,y] = [y,x] swap l = l We implement this as > swap :: [Int] -> [Int] > swap z = let l = [[y,x] | [x,y] <- [z]] > in if l==[] then z else head l pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/listcomp/arithseq.curry000066400000000000000000000006721323431571100276110ustar00rootroot00000000000000-- A few examples to test the notation for arithmetic sequences: l1 :: [Int] l1 = [1..20] --> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] l2 :: [Int] l2 = take 20 [1..] --> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] l3 :: [Int] l3 = [1,5..100] --> [1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93,97] l4 :: [Int] l4 = take 20 [1,5..] --> [1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77] pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/listcomp/multgen.curry000066400000000000000000000015521323431571100274420ustar00rootroot00000000000000-- Here are a few examples for list comprehensions with multiple generators: pairs :: [a] -> [b] -> [(a,b)] pairs xs ys = [ (x,y) | x<-xs, y<-ys ] goal1 :: [(Int,Int)] goal1 = pairs [1,2,3] [4,5] -- Result: [(1,4),(1,5),(2,4),(2,5),(3,4),(3,5)] triangle :: Int -> [(Int,Int)] triangle n = [ (x,y) | x <- [1..n], y <- [1..x] ] goal2 :: [(Int,Int)] goal2 = triangle 3 -- Result: [(1,1),(2,1),(2,2),(3,1),(3,2),(3,3)] -- Pythogorean triples: pyTriple n = [ (x,y,z) | x <- [2 .. n], y <- [x+1 .. n], z <- [y+1 .. n], x*x + y*y == z*z ] goal3 :: [(Int,Int,Int)] goal3 = pyTriple 50 -- Result: [(3,4,5),(5,12,13),(6,8,10),(7,24,25),(8,15,17),(9,12,15), -- (9,40,41),(10,24,26),(12,16,20),(12,35,37),(14,48,50), -- (15,20,25),(15,36,39),(16,30,34),(18,24,30),(20,21,29), -- (21,28,35),(24,32,40),(27,36,45),(30,40,50)] pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/listcomp/psort.curry000066400000000000000000000012021323431571100271260ustar00rootroot00000000000000-- An implementation of permutation sort using list comprehensions: -- compute the list of all splittings of a list: splits :: [a] -> [([a],[a])] splits [] = [ ([],[]) ] splits (y:ys) = ([],y:ys) : [ (y:ps,qs) | (ps,qs) <- splits ys ] -- compute the list of all permutations of a list: perms :: [a] -> [[a]] perms [] = [[]] perms (x:xs) = [ ps++[x]++qs | rs <- perms xs, (ps,qs) <- splits rs ] -- is a list sorted? sorted [] = True sorted [_] = True sorted (x:y:ys) = x<=y && sorted (y:ys) -- permutation sort: sort :: [Int] -> [Int] sort xs = head [ ys | ys <- perms xs, sorted ys ] goal n = sort [n,n-1..1] -- Result: [1..n] pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/maxtree.curry000066400000000000000000000013671323431571100256060ustar00rootroot00000000000000--- Change in a binary tree all leaves to the maximum value of all leaves --- (in one pass!) max :: Int -> Int -> Int max x y = if x>y then x else y data Btree a = Leaf a | Node (Btree a) (Btree a) pass_tree (Leaf n) mx = (Leaf mx, n) pass_tree (Node t1 t2) mx | (mt1,m1) =:= pass_tree t1 mx & (mt2,m2) =:= pass_tree t2 mx = (Node mt1 mt2, max m1 m2) where mt1,mt2,m1,m2 free maxtree :: Btree Int -> Btree Int maxtree t | (mt,mx) =:= pass_tree t mx = mt where mt,mx free --- goals: goal1 = maxtree (Node (Leaf 0) (Node (Leaf 1) (Leaf 2))) goal2 = maxtree (Node (Node (Leaf 1) (Leaf 0)) (Node (Leaf 3) (Leaf 2))) pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/member.curry000066400000000000000000000005041323431571100254000ustar00rootroot00000000000000-- MEMBER: list membership defined by a conditional rule based on append: append([] ,ys) = ys append(x:xs,ys) = x:append(xs,ys) member(e,l) | append(xs,e:ys)=:=l = True where xs,ys free -- Goals: goal1 :: Int -> Bool goal1 x = member(x,[1,2,3]) goal2 :: Int -> Bool goal2 x = member(x,[1,2,3]) && member(x,[2,3,4]) pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/mergesort.curry000066400000000000000000000015111323431571100261370ustar00rootroot00000000000000-- merge sort: sorting two lists by merging the sorted first -- and second half of the list sort :: ([a] -> [a] -> [a] -> Bool) -> [a] -> [a] -> Bool sort merge xs ys = if length xs < 2 then ys =:= xs else sort merge (firsthalf xs) us & sort merge (secondhalf xs) vs & merge us vs ys where us,vs free intMerge :: [Int] -> [Int] -> [Int] -> Bool intMerge [] ys zs = zs =:= ys intMerge (x:xs) [] zs = zs =:= x:xs intMerge (x:xs) (y:ys) zs = if (x > y) then intMerge (x:xs) ys us & zs =:= y:us else intMerge xs (y:ys) vs & zs =:= x:vs where us,vs free firsthalf xs = take (length xs `div` 2) xs secondhalf xs = drop (length xs `div` 2) xs goal1 xs = sort intMerge [3,1,2] xs goal2 xs = sort intMerge [3,1,2,5,4,8] xs goal3 xs = sort intMerge [3,1,2,5,4,8,6,7,2,9,1,4,3] xs pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/mergesort_or.curry000066400000000000000000000013341323431571100266420ustar00rootroot00000000000000 goal1 xs = sort intMerge [3,1,2] xs goal2 xs = sort intMerge [3,1,2,5,4,8] xs goal3 xs = sort intMerge [3,1,2,5,4,8,6,7,2,9,1,4,3] xs sort :: ([a] -> [a] -> [a] -> Bool) -> [a] -> [a] -> Bool sort merge xs ys = if length xs < 2 then ys =:= xs else sort merge (firsthalf xs) us & sort merge (secondhalf xs) vs & merge us vs ys where us,vs free intMerge :: [Int] -> [Int] -> [Int] -> Bool intMerge [] ys zs = zs =:= ys intMerge xs [] zs = zs =:= xs intMerge (x:xs) (y:ys) zs = if (x > y) then intMerge (x:xs) ys us & zs =:= y:us else intMerge xs (y:ys) vs & zs =:= x:vs where us,vs free firsthalf xs = take (length xs `div` 2) xs secondhalf xs = drop (length xs `div` 2) xs pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/meta/000077500000000000000000000000001323431571100237725ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/meta/Imports.curry000066400000000000000000000013331323431571100265150ustar00rootroot00000000000000module Imports (imports) where import CurryStringClassifier import List import System main = do args <- getArgs case args of [name] -> readFile name >>= putStr . maybeSpace . imports _ -> putStrLn "usage: imports filename" isImport x = isPrefixOf "import " x isImported x = case x of "qualified" -> False _ -> True imports = unwords . map (takeWhile (/='(') . head . filter isImported . words . drop 6) . filter isImport . lines . unscan . takeWhile isModuleHead . filter (not . isComment) . scan maybeSpace "" = "" maybeSpace (x:xs) = x:xs ++ " "pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/meta/putModuleHead.curry000066400000000000000000000017521323431571100276250ustar00rootroot00000000000000module putModuleHead where import CurryStringClassifier import List import System import IOExts main = do args <- getArgs case args of [name] -> readCompleteFile name >>= putHead name _ -> putStrLn "usage: imports filename" isModuleDecl x = isPrefixOf "module " x maybeModHead name conts hs | length hs == 1 = putStrLn $ name ++ " already has module declaration" | length hs == 0 = writeFile name ("module "++woCurry name++" where\n\n"++conts) >> putStrLn "module declaration added" | otherwise = error "more than one mdule declaration?" putHead name conts = maybeModHead name conts $ (filter isModuleDecl . lines . unscan . tokTakeWhile isModuleHead . tokFilter (not . isComment) . scan) conts woCurry s = case reverse s of 'y':'r':'r':'u':'c':'.':wo -> reverse wo _ -> error "not a curry file" pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/modules/000077500000000000000000000000001323431571100245145ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/modules/ModConc.curry000066400000000000000000000004601323431571100271240ustar00rootroot00000000000000-- This module defines list concatenation several times module ModConc(conc,(+),(.+.)) where infixr 5 +,.+. (+) :: [a] -> [a] -> [a] a + b = a Prelude.++ b (.+.) :: [a] -> [a] -> [a] a .+. b = a + b conc :: [a] -> [a] -> [a] conc = (+) goal1 = [1] + [2] goal2 = [1] .+. [2] goal3 = conc [1] [2] pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/modules/UseConc1.curry000066400000000000000000000002161323431571100272210ustar00rootroot00000000000000import ModConc hiding ((+)) -- prelude.+ should still be visible main1 = [1] .+. [1+1] main2 = [1] ModConc..+. [1+1] main3 = conc [1] [2] pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/modules/UseConc2.curry000066400000000000000000000003421323431571100272220ustar00rootroot00000000000000-- Due to import qualification, the name "+" from the prelude -- is still visible without qualification: import qualified ModConc main1 = (ModConc..+.) [1] [1+1] --main1 = [1] ModConc..+. [1+1] main2 = ModConc.conc [1] [2] pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/nats.curry000066400000000000000000000007711323431571100251040ustar00rootroot00000000000000-- natural numbers defined by s-terms (Z=zero, S=successor): data Nat = Z | S Nat deriving (Eq,Show) -- addition on natural numbers: add :: Nat -> Nat -> Nat add Z n = n add (S m) n = S(add m n) -- subtraction defined by reversing the addition: sub x y | add y z == x = z where z free -- less-or-equal predicated on natural numbers: leq Z _ = True leq (S _) Z = False leq (S x) (S y) = leq x y goal1 = sub (S(S(S(S Z)))) (S(S Z)) goal2 | leq x (S(S Z)) = x where x free pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/nondetfunc.curry000066400000000000000000000022761323431571100263040ustar00rootroot00000000000000-- choose is the basic non-deterministic choice function choose x _ = x choose _ y = y -- Non-deterministic insertion in a list insert x [] = [x] insert x (y:ys) = choose (x:y:ys) (y:insert x ys) -- Non-deterministic generation of permutations permut [] = [] permut (x:xs) = insert x (permut xs) -- In the following definition, 'ys' (i.e. 'permut xs') -- is lazily generated, as much as the filter 'sorted' demands it. -- The filter may reject 'ys' without fully constructing it. sort xs = rId sorted (permut xs) -- restricted identity: rId p x is x if x satisfies (p x)=True rId :: (a -> Bool) -> a -> a rId p x | p x = x -- this version of sort looks simpler but its behavior is not so -- clear due to the interpretation of where (sharing or not sharing?) wheresort xs | sorted ys = ys where ys = permut xs strictsort xs | ys =:= permut xs & sorted ys =:= True = ys where ys free sorted [] = True sorted [_] = True sorted (x:y:ys) | x<=y = sorted (y:ys) goal1 = sort [4,3,2,1] goal2 = wheresort [4,3,2,1] goal3 = strictsort [4,3,2,1] data Nat = o | s Nat coin = o coin = s(o) add o n = n add (s m) n = s(add m n) double x = add x x goal4 = double coin pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/optmatch.curry000066400000000000000000000005041323431571100257500ustar00rootroot00000000000000-- Example: leftmost pattern-matching is not needed reduction: g 0 [] = 0 g _ (x:_) = x h x = h x -- The following expression does not terminate in Haskell, -- but terminates in Curry since the program is inductively sequential. -- It terminates also in Haskell if the two rules for g are swapped. main = g (h 0) [1] pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/prolog.curry000066400000000000000000000047501323431571100254420ustar00rootroot00000000000000-- Simulation of the Prolog shell with different search strategies: -- print a list of solved goals: printloop [] = putStrLn "no" printloop (a:as) = browse a >> putStr " ? " >> getLine >>= evalAnswer as where evalAnswer as ln = if ln==";" then putChar '\n' >> printloop as else if ln=="" then putChar '\n' >> putStrLn "yes" else putStrLn "(\";\" for more choices, otherwise ): " >> getLine >>= evalAnswer as -- Standard Prolog with depth-first search: prolog g = printloop (solveAll g) -- Prolog with breadth-first search: prolog_bfs g = printloop (bfs g) -- Prolog with depth-bounded search: prolog_depth n g = printloop (allbounded n g) -- Prolog with iterative deepening search: prolog_id n g = printloop (all_id n g) append [] ys = ys append (x:xs) ys = x : append xs ys goal = prolog \(l1,l2) -> append l1 l2 =:= [0,1] -- breadth-first search: bfs g = trygoals [g] where trygoals [] = [] trygoals (g:gs) = splitgoals (map try (g:gs)) [] splitgoals [] ugs = trygoals ugs splitgoals ([]:gs) ugs = splitgoals gs ugs splitgoals ([g]:gs) ugs = g:(splitgoals gs ugs) splitgoals ((g1:g2:g3s):gs) ugs = splitgoals gs (ugs++g1:g2:g3s) -- depth-first search with depth bound: allbounded n g = if n>0 then evalall (try g) else [] where evalall [] = [] evalall [g] = [g] evalall (g1:g2:gs) = concat (map (allbounded (n-1)) (g1:g2:gs)) -- iterative deepening search: all_id n g = depthLoop n n (toDepthN n n g) False where depthLoop n m [] True = depthLoop (n+m) m (toDepthN (n+m) m g) False depthLoop _ _ [] False = [] depthLoop n m ([]:gs) recomp = depthLoop n m gs recomp depthLoop n m ([g1]:gs) recomp = g1:(depthLoop n m gs recomp) depthLoop n m ((_:_:_):gs) _ = depthLoop n m gs True toDepthN n m g = collect (try g) where collect [] = [[]] collect [g] = if n>m then [[]] else [[g]] collect(g1:g2:gs) = if n==1 then [g1:g2:gs] else concat (map (toDepthN (n-1) m) (g1:g2:gs)) -- Examples: p (_:xs) = p xs p [] = True g1 = prolog \x -> p x g2 = prolog_bfs \x -> p x g3 = prolog_depth 10 \x -> p x g4 = prolog_id 5 \x -> p x pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/qsortlet.curry000066400000000000000000000006341323431571100260120ustar00rootroot00000000000000-- quicksort using a split function (demonstrating where/let declarations): split :: Int -> [Int] -> ([Int],[Int]) split _ [] = ([],[]) split e (x:xs) | e>=x = (x:l,r) | e [Int] qsort [] = [] qsort (x:xs) = let (l,r) = split x xs in qsort l ++ (x:qsort r) goal :: [Int] goal = qsort [8,6,7,5,4,2,3,1] pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/queens.curry000066400000000000000000000012021323431571100254250ustar00rootroot00000000000000import SetFunctions -- Place n queens on a chessboard so that no queen can capture another queen: -- (this solution is due to Sergio Antoy) queens :: [Int] -> [Int] queens x | y==permute x && isEmpty (set2 capture x y) = y where y free permute :: Eq a => [a] -> [a] permute [] = [] permute (x:xs) | u ++ v == permute xs = u ++ [x] ++ v where u,v free capture :: [Int] -> [Int] -> Bool capture x y | l1 ++ [(x1,y1)] ++ l2 ++ [(x2,y2)] ++ l3 == zip x y && (x1-y1 == x2-y2 || x1+y1 == x2+y2) = True where l1,l2,l3,x1,x2,y1,y2 free queens4 :: [Int] queens4 = queens [1,2,3,4] queens5 :: [Int] queens5 = queens [1,2,3,4,5] pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/quicksort.curry000066400000000000000000000002631323431571100261570ustar00rootroot00000000000000-- quicksort using higher-order functions: qsort :: [Int] -> [Int] qsort [] = [] qsort (x:l) = qsort (filter (=x) l) goal = qsort [2,3,1,0] pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/ralign.curry000066400000000000000000000021201323431571100254010ustar00rootroot00000000000000-- right alignment of strings so that all strings have the same length -- (= length of maximal string) max x y = if x>y then x else y data Letter = A|B|C|D|E|F|G|H|O maxlength sl = foldr max 0 (map length sl) rjustify n s = replicate (n-length(s)) O ++ s -- right alignment in two passes: -- 1. pass: compute maximum length -- 2. pass: right alignment ralign2 sl = map (rjustify (maxlength sl)) sl -- right alignment in one pass: ralign sl | (rsl,mx) =:= pass_ralign sl mx = rsl where rsl,mx free pass_ralign [] _ = ([],0) pass_ralign (s:sl) maxall = (rjustify maxall s:ralignsl, max (length s) maxsl) where (ralignsl,maxsl) = pass_ralign sl maxall -- goals: -- two-pass right alignment: goal1 = ralign2 [[A,B],[A,B,C,D],[A,B,C],[A,B,C,D,E]] -- one-pass right alignment: goal2 = ralign [[A,B],[A,B,C,D],[A,B,C],[A,B,C,D,E]] -- ...and two larger goals to see a significant time difference: -- ralign2([[a,b],[a,b,c,d],[a,b,c],[a,b,c,d,e],[a,b],[a,b,c,d],[a,b,c],[a,b,c,d,e],[a,b]]) -- ralign([[a,b],[a,b,c,d],[a,b,c],[a,b,c,d,e],[a,b],[a,b,c,d],[a,b,c],[a,b,c,d,e],[a,b]]) pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/rectype.curry000066400000000000000000000007421323431571100256100ustar00rootroot00000000000000-- This program test whether the Curry implementation can -- deal with recursive types provided that they are given -- by the user (cf. Section 4.2 of the Curry Report): -- -- This program is well typed but traditional Hindley/Milner -- type inferencer cannot derive the types if the type definition -- of 'g' is omitted: f :: [a] -> [a] f x = if length x == 0 then fst (g x x) else x g :: [a] -> [b] -> ([a],[b]) g x y = (f x , f y) h :: ([Int],[Bool]) h = g [3,4] [True,False] pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/relational.curry000066400000000000000000000017761323431571100262770ustar00rootroot00000000000000-- Module Relational from the Escher paper: -- computing with relations data Person = Bob | John | Mary | Sue | Dick | Kate | Ned parent Bob John = True parent Bob Dick = True parent John Mary = True parent Sue Dick = True parent Dick Kate = True age Bob = 24 age John = 7 age Mary = 13 age Sue = 23 age Dick = 53 age Kate = 11 age Ned = 23 mappred _ [] [] = True mappred p (x:xs) (y:ys) | p x y && mappred p xs ys = True con2bool c | c = True forevery _ [] = True forevery c (x:xs) | c x = forevery c xs -- Queries: q1 = map age [Bob,Sue] --> [24,23] q2 x = mappred parent [Bob,Dick] x --> {x=[john,kate]} true | {x=[dick,kate]} true q3 r = mappred r [Bob,Sue] [24,23] --> r(bob,24) /\ r(sue,23) q4 w = mappred (\x y -> con2bool (age x =:= y)) w [24,23] --> {w=[bob,sue]} true | {w=[bob,ned]} true q5 y = forevery (\x -> age x =:= y) [Ned,Bob,Sue] --> no solution q6 y = forevery (\x -> age x =:= y) [Ned,Sue] --> {y=23} true q7 = forevery (\x -> let y free in age x =:= y) [Ned,Bob,Sue] --> true pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/rev.curry000066400000000000000000000006571323431571100247360ustar00rootroot00000000000000-- Concatenating two lists: -- (predefined as `++' in the standard prelude) append :: [t] -> [t] -> [t] append [] x = x append (x:xs) ys = x : append xs ys -- Reverse the order of elements in a list: rev :: [t] -> [t] rev [] = [] rev (x:xs) = append (rev xs) [x] goal1 :: [Int] goal1 = append [1,2] [3,4] goal2 :: [Int] goal2 = rev [1,2,3,4] goal3 :: [Int] goal3 = rev [1,2,3,4,5,6,7,8,9,10] -- end of program pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/rigidadd.curry000066400000000000000000000004721323431571100257040ustar00rootroot00000000000000-- First example of POPL'97 paper: evaluate addition by residuation: data Nat = O | S Nat add :: Nat -> Nat -> Nat add x y = add' (ensureNotFree x) y add' O n = n add' (S m) n = S(add m n ) isNat :: Nat -> Bool isNat O = True isNat (S n) = isNat n goal = let x free in add x O =:= S O & isNat x pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/rigidor.curry000066400000000000000000000003061323431571100255700ustar00rootroot00000000000000-- Example for suspending or-branches (similarly to POPL'97, Example 3.5) f 0 _ = True f _ 1 = True g x = g' (ensureNotFree x) where g' 0 = 0 h 1 = 1 goal = let x free in f (g x) (h x) & x=:=0 pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/search.curry000066400000000000000000000010621323431571100253760ustar00rootroot00000000000000-- a simple example for encapsulated search: import Findall(allSolutions) append [] ys = ys append (x:xs) ys = x : append xs ys -- compute all solutions to equation append [True] l == [True,False]: g1 = allSolutions (\l -> append [True] l == [True,False]) -- compute all solutions for l2 to equation append l1 l2 == [True,False] -- where l1 is arbitrary: g2 = allSolutions (\l2 -> let l1 free in append l1 l2 == [True,False]) -- compute the list of all splittings of the list [True,False]: g3 = allSolutions (\(l1,l2) -> append l1 l2 == [True,False]) pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/sportsdb.curry000066400000000000000000000011701323431571100257710ustar00rootroot00000000000000-- Module SportsDB from Escher report import Findall(allSolutions) data Person = Mary | Bill | Joe | Fred data Sport = Cricket | Football | Tennis likes :: Person -> Sport -> Bool likes Mary Cricket = True likes Mary Tennis = True likes Bill Cricket = True likes Bill Tennis = True likes Joe Tennis = True likes Joe Football = True q1 s = likes Fred s --> no solution -- implementation of Escher's forall-construct: forall :: (a->Bool) -> (a->Bool) -> Bool forall domain cond = all cond (allSolutions domain) q2 x = forall (\y-> y `elem` [Cricket,Tennis]) (\y-> likes x y) --> {x=Mary} | {x=Bill} pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/tctest.curry000066400000000000000000000006361323431571100254450ustar00rootroot00000000000000-- This is a test of the type inferencer. -- To type this program, the dependence graph must be correctly built. {-# OPTIONS_CYMAKE -Wno-missing-signatures #-} f n = g n + h n g n = j n + f n h n = i n + g n i n = n j n = k n k n = j n + l n l _ = 5::Int -- "Goals" in an interactive Curry environment: -- :t f (should be Int->Int) -- :t i (should be a->a) -- :t k (should be a->Int) pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/examples/test.sh000077500000000000000000000041321323431571100243620ustar00rootroot00000000000000#!/bin/sh # Shell script to test some Curry examples CURRYHOME=.. CURRYBIN=$CURRYHOME/bin LOGFILE=xxx$$ $CURRYBIN/cleancurry -r cat << EOM | $CURRYBIN/curry -q :set parser -W none :set -interactive :set -time :set +verbose :set v0 :set printdepth 0 | tee $LOGFILE :l rev append [1,2] [3,4] :: [Int] rev [1,2,3,4,5,6,7,8,9,10] :: [Int] :l higher g1 g2 g3 g4 g5 :l quicksort qsort [2,3,1,0] :: [Int] :l qsortlet qsort [2,3,1,0] :: [Int] :l inflists goal1 goal2 :l family_rel goal1 child where child free grandfather g c where g,c free :l family_fun father child =:= John where child free grandfather g c where g,c free :l horseman horseman m h (int2nat 8) (int2nat 20) where m,h free horseman m h (S (S O)) f where m,h,f free :l first goal1 goal2 x y where x,y free :l member goal2 x where x free :l colormap goal l1 l2 l3 l4 where l1,l2,l3,l4 free :l account goal1 b where b free goal2 b where b free goal3 s where s free :l maxtree goal2 :l assembler main :l ralign goal1 goal2 :l tctest :t f :t i :t k :l rectype :t h :l iodemo dialog michael :l england q1 x where x free q2 x y where x,y free q4l q5l q7 x where x free q10 :l queens queens [1,2,3,4] :l diamond diamond 10 :l chords run sounds run nicolas :cd listcomp :l arithseq l1 l2 l3 l4 :l multgen goal1 goal2 goal3 :l psort goal 6 :l Default pabs 0 pabs 3 swap [3] swap [3,4] swap [3,4,5] :cd .. :l casetest swap [1] swap [1,2] swap [1,2,3] f [1,2] g (Just "xyz") g (Just "ab") h [1,2] h [1,3] h [2,div 1 0] :cd distcurry :l addserver :fork addServer addClient "localhost" 3 4 stopServer "localhost" :cd .. :q EOM ################ end of tests #################### # The SICStus Prolog interpreter: SICSTUS=`pwd`/../bin/sicstusprolog # The SWI-Prolog interpreter: SWI=`pwd`/../bin/swiprolog # Check differences: DIFF=diff$$ diff TESTRESULT.txt $LOGFILE > $DIFF if [ "`cat $DIFF`" = "" ] ; then echo echo "Regression test successfully executed!" /bin/rm -f $LOGFILE $DIFF else echo echo "Differences in regression test occurred:" cat $DIFF /bin/rm -f $DIFF /bin/mv -f $LOGFILE LOGFILE echo "Test output saved in file 'LOGFILE'." exit 1 fi pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/frontend/000077500000000000000000000000001323431571100230455ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/frontend/.gitignore000066400000000000000000000000571323431571100250370ustar00rootroot00000000000000# intermediate files *~ *.bak # binaries bin/ pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/frontend/LICENSE000066400000000000000000000027561323431571100240640ustar00rootroot00000000000000Copyright (c) 1998-2004, Wolfgang Lux Copyright (c) 2005-2016, Michael Hanus All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - None of the names of the copyright holders and contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/frontend/Makefile000066400000000000000000000061761323431571100245170ustar00rootroot00000000000000############################################################################## # Makefile for installing the Curry front end ############################################################################## # the root directory of the installation export ROOT=$(CURDIR) # binary directory and executables export BINDIR=$(ROOT)/bin # The frontend binary export CYMAKE = $(BINDIR)/curry-frontend # GHC and CABAL configuration (for installing the front end) # ---------------------------------------------------------- # The path to the Glasgow Haskell Compiler and Cabal export GHC := $(shell which ghc) export GHC-PKG := $(shell dirname "$(GHC)")/ghc-pkg export CABAL = cabal # Because of an API change in GHC 7.6, # we need to distinguish GHC < 7.6 and GHC >= 7.6. # GHC 7.6 renamed the option "package-conf" to "package-db". # extract GHC version ifdef GHC GHC_MAJOR := $(shell "$(GHC)" --numeric-version | cut -d. -f1) GHC_MINOR := $(shell "$(GHC)" --numeric-version | cut -d. -f2) # Is the GHC version >= 7.6 ? GHC_GEQ_76 = $(shell test $(GHC_MAJOR) -gt 7 -o \( $(GHC_MAJOR) -eq 7 \ -a $(GHC_MINOR) -ge 6 \) ; echo $$?) # package-db (>= 7.6) or package-conf (< 7.6)? ifeq ($(GHC_GEQ_76),0) GHC_PKG_OPT = package-db else GHC_PKG_OPT = package-conf endif endif # Command to unregister a package export GHC_UNREGISTER = "$(GHC-PKG)" unregister --$(GHC_PKG_OPT)="$(PKGDB)" # Command to install missing packages using cabal export CABAL_INSTALL = "$(CABAL)" install --with-compiler="$(GHC)" \ --with-hc-pkg="$(GHC-PKG)" --prefix="$(LOCALPKG)" \ --global --package-db="$(PKGDB)" -O2 # Directory where local package installations are stored export LOCALPKG = $(ROOT)/pkg # The path to the package database export PKGDB = $(LOCALPKG)/pakcs.conf.d ############################################################################## # Retrieve all Haskell modules as dependencies for the front end: DEPS := $(shell find curry-base/src/ curry-frontend/src/ -type f) # install front end (if sources are present): .PHONY: frontend frontend: ifdef GHC $(MAKE) $(PKGDB) $(MAKE) $(CYMAKE) else @echo "GHC missing, cannot build front end!" @exit 1 endif # create package database $(PKGDB): "$(GHC-PKG)" init $@ $(CABAL) update # install the sources of the front end from its repository $(CYMAKE): $(DEPS) $(MAKE) unregister mkdir -p $(@D) cd curry-base && $(CABAL_INSTALL) $(MAKE) transformers # see below cd curry-frontend && $(CABAL_INSTALL) --bindir=$(@D) # Temporary workaround for https://github.com/haskell/cabal/issues/1855 # see also http://www.haskell.org/pipermail/cabal-devel/2014-May/009795.html .PHONY: transformers transformers: $(CABAL_INSTALL) transformers-compat -f transformers3 # unregister previous version to avoid cabal install failures .PHONY: unregister unregister: -$(GHC_UNREGISTER) curry-frontend -$(GHC_UNREGISTER) curry-base .PHONY: clean clean: cd curry-base && $(CABAL) clean cd curry-frontend && $(CABAL) clean .PHONY: cleanall cleanall: cd curry-base && rm -rf dist/ cd curry-frontend && rm -rf dist/ rm -rf $(LOCALPKG) rm -f $(CYMAKE) && rm -rf bin pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/frontend/README.md000066400000000000000000000006511323431571100243260ustar00rootroot00000000000000Curry Front End =============== This directory contains a front end (lexer, parser, type checker etc) for the programming language Curry. It is used in the Curry distributions PAKCS and KiCS2. The front end translates a Curry program into various intermediate formats, like FlatCurry (used for program analyzers and back ends), AbstractCurry (used for program manipulation tools), or HTML (used for program documentation). pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/frontend/curry-base/000077500000000000000000000000001323431571100251215ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/frontend/curry-frontend/000077500000000000000000000000001323431571100260265ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/include/000077500000000000000000000000001323431571100226515ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/include/currydoc.css000066400000000000000000000026401323431571100252170ustar00rootroot00000000000000/* Changes to default bootstrap style: */ /* Use always white background */ body { background: white; color: black; padding-top: 60px; padding-bottom: 40px; } .hero-unit { padding: 20px 30px; } .hero-unit h1 { text-align: center; } /* padding for in-page bookmarks and fixed navbar */ section { padding-top: 30px; } .anchored { padding-top: 40px; } /* type name at header positions */ .typeheader { font-size: 24px; font-weight: bold; } /* function name in the documentation of a exported functions */ .opname { font-weight: bold; } /* style for constructor comments" */ .conscomment { padding: 5px 0px 0px 20px; } /* style for explanation categories like "Constructors:" */ .explaincat { font-style: italic; } /* specials for HTML source code: */ /* Show hyperlinks without underscore */ a:visited, a:link, a:active { text-decoration: none } .linenumbers { width : 40px; text-align : right; color : grey; padding-right: 10px; border-right : 1px solid grey; } .sourcecode { padding-left: 10px; } .pragma { color : green } .comment { color : green } .keyword { color : blue } .symbol { color : #C0C0C0 } .type { color : #ff7f50 } .cons { color : #ff00ff } .label { color : #90EE90 } .func { color : #800080 } .ident { color : black } .module { color : #800000 } .number { color : #008080 } .string { color : #800000 } .char { color : #800000 } pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/include/currydoc.tex000066400000000000000000000026241323431571100252310ustar00rootroot00000000000000%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Definitions in order to LaTeX documents generated by "currydoc -tex" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\currymodule}[1]{\subsection*{Module #1}} \newcommand{\currytypesstart}{\subsubsection*{Exported types:}} \newcommand{\currytypesstop}{} \newcommand{\currytypesynstart}[2]{{\tt type #2}\pindex{#1} \begin{quote}} \newcommand{\currytypesynstop}{\end{quote}} \newcommand{\currydatastart}[1]{{\tt data #1}\pindex{#1} \begin{quote}} \newcommand{\currydatacons}{\end{quote}% \begin{itemize}\item[] \hspace{-4ex}\emph{Exported constructors:}} \newcommand{\currydatastop}{\end{itemize}} \newcommand{\curryconsstart}[2]{\item {\tt #1~::~#2}\par} \newcommand{\curryfuncstart}{\subsubsection*{Exported functions:}} \newcommand{\curryfuncstop}{} \newcommand{\curryfunctionstart}[2]{#2\pindex{#1}\begin{quote}} \newcommand{\curryfunctionstop}{\end{quote}} \newcommand{\curryfuncsig}[2]{{\tt #1~::~#2}} % for downward compatibility: \newcommand{\currytype}[3]{{\tt type #2}\pindex{#1} \begin{quote} #3 \end{quote}} \newcommand{\currydata}[3]{{\tt data #1}\pindex{#1} \begin{quote}#2\end{quote}% \begin{itemize}\item[] \hspace{-4ex}\emph{Exported constructors:} #3\end{itemize}} \newcommand{\curryfunction}[3]{#2\pindex{#1} \begin{quote}#3\end{quote}} \newcommand{\currycons}[3]{\item {\tt #1~::~#2}\par #3} pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/lib-trunk/000077500000000000000000000000001323431571100231355ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/pakcsrc.default000066400000000000000000000051211323431571100242210ustar00rootroot00000000000000############################################################################ # PAKCS configuration file # # The syntax of this file is # # property=value\n # # Lines starting with '#' are comments. # ############################################################################ # Default parameters that are always passed as initial parameters to PAKCS # (e.g., ":set +time :set +interactive") defaultparams= # Define path for searching modules in addition to standard PAKCS libraries: # (this path is placed in front of the standard PAKCS library path) libraries= # Default value when asking for more solutions (values: yes | no | all) moresolutions=yes # Allow Curry extensions (currently: function patterns and records) # (values: yes | no): curryextensions=yes # Show warnings for non-trivial overlapping rules (values: yes | no) warnoverlapping=yes # System command to edit the source file of a Curry program # (if not defined, the value of the environment variable EDITOR is used) editcommand= # System command to show the source file of a Curry program # (if not defined, the value of the environment variable PAGER is used) showcommand= # System command to view dot graph specifications that come from stdin # (e.g., used in the Curry browser and the erd2curry tools) dotviewcommand=dot -Tps > /tmp/dotxxx ; gv /tmp/dotxxx # Optimize Boolean equalities (==): transform them into binding # constraints (=:=) whenever they must be evaluated only to True. # possible values: # no (do not optimize) # fast (optimize w.r.t. standard Prelude) # full (perform full program analysis to optimize more occurrences) bindingoptimization=fast # Show the results of loading pakcsrc and $HOME/.pakcsrc (values: yes | no): verboserc=no # Show messages related to dynamic predicates (such as loading, # waiting for lock files, etc), compare lib/Dynamic. Values: yes | no dynamicmessages=yes # Show parse errors when parsing terms with ReadShowTerm.read(sQ)Term # (values: yes | no) readtermerrors=no # Create smaller saved states without the interactive system and compiler # with the command ":save expression" (take slightly more time) # Values: yes | no smallstate=no # Create stand-alone executables when saving states via ":save" command # (works only with Sicstus 3.10 or higher). # Values: yes | no standalone=no # Should the generated main Prolog file (containing hnf and other generic # clauses) be kept (in /tmp/pakcsprogXXXX.pl.main)? # (values: yes | no ) # Usually, it is deleted, i.e., "yes" might be useful for debugging keepfiles=no ############################################################################ pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/scripts/000077500000000000000000000000001323431571100227155ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/scripts/Makefile000066400000000000000000000012771323431571100243640ustar00rootroot00000000000000############################################################################## # Installation of PAKCS shell scripts ############################################################################## # the scripts to be installed BINS = $(BINDIR)/pakcs $(BINDIR)/pakcs-makecgi \ $(BINDIR)/cleancurry \ $(BINDIR)/pakcs-fcypp .PHONY: all all: @if [ ! -d $(BINDIR) ] ; then mkdir -p $(BINDIR) ; fi $(MAKE) $(BINS) # install some script of PAKCS in the bin directory: $(BINDIR)/%: %.sh mkdir -p $(@D) cat $< | sed "s|^PAKCSBUILDDIR=.*$$|PAKCSBUILDDIR=$(ROOT)|" | \ sed "s|^PAKCSINSTALLDIR=.*$$|PAKCSINSTALLDIR=$(PAKCSINSTALLDIR)|" > $@ chmod 755 $@ .PHONY: clean clean: rm -f $(BINS) pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/scripts/cleancurry.sh000077500000000000000000000051521323431571100254260ustar00rootroot00000000000000#!/bin/sh # delete all auxiliary files of all Curry programs in a directory RM=/bin/rm RECURSIVE=no if [ "xx$1" = "xx-r" ] ; then RECURSIVE=yes shift fi ALL=no if [ "xx$1" = "xx-a" ] ; then ALL=yes shift fi PROG= if [ $# = 1 ] ; then # remove possible suffix: PROG=`expr $1 : '\(.*\)\.lcurry' \| $1` PROG=`expr $PROG : '\(.*\)\.curry' \| $PROG` shift fi if [ $# != 0 ] then echo "Usage: $0 [-r] [-a] []" >&2 echo "-r: apply this command recursively to all subdirectories" >&2 echo "-a: remove all auxiliary Curry files (even those without a source file)" >&2 echo ": remove only auxiliary Curry files for program " >&2 exit 1 fi if [ -z "$PROG" ] ; then CURRYFILES="*.curry *.lcurry" LCURRYFILES="*.lcurry" else CURRYFILES="$PROG.curry $PROG.lcurry" if [ -f $PROG.lcurry ] ; then LCURRYFILES="$PROG.lcurry" else LCURRYFILES="" fi fi for F in $CURRYFILES do if [ "$F" != "*.curry" -a "$F" != "*.lcurry" ] ; then F=`expr $F : '\(.*\)\.lcurry' \| $F` F=`expr $F : '\(.*\)\.curry' \| $F` $RM -f $F.ast $F.cint $F.fl $F.def $F.pizza $F.profile "$F"_flat.xml FDIR=`dirname $F` FBASE=`basename $F` PAKCSDIR=$FDIR/.curry/pakcs if [ -d $PAKCSDIR ] ; then $RM -f $PAKCSDIR/$FBASE.pl $PAKCSDIR/$FBASE.po FDIRFILES=`ls -A $PAKCSDIR` if [ -z "$FDIRFILES" ] ; then # pakcs directory is empty rmdir $PAKCSDIR fi fi CURRYDIR=$FDIR/.curry if [ -d $CURRYDIR ] ; then CURRYF=.curry/$F $RM -f $CURRYF.cy $CURRYF.acy $CURRYF.uacy $CURRYF.fcy $CURRYF.fint $CURRYF.icurry $CURRYF.tokens FDIRFILES=`ls -A $CURRYDIR` if [ -z "$FDIRFILES" ] ; then # .curry directory is empty rmdir $CURRYDIR fi fi $RM -f -r COOSYLOGS $RM -f -r $F.classes fi done $RM -f prelude.pizza if [ $ALL = yes ] ; then for i in *.fcy # look for fcy files not deleted in the first step do F=`expr $i : '\(.*\).fcy'` if [ "$F" != "*" ] ; then $RM -f $F.fcy $F.pl $F.po $F.pl.main $F.state $F.profile "$F"_flat.xml FDIR=`dirname $F` FBASE=`basename $F` $RM -f $FDIR/.curry/pakcs/$FBASE.pl $FDIR/.curry/pakcs/$FBASE.po fi done fi # delete also .curry files if there is a corresponding .lcurry file: for F in $LCURRYFILES do if [ "$F" != "*.lcurry" ] ; then F=`expr $F : '\(.*\)\.lcurry' \| $F` $RM -f $F.curry fi done if [ $RECURSIVE = yes ] then # delete .curry directory: $RM -rf .curry PATHNAME=`(cd "\`dirname \"$0\"\`" > /dev/null ; pwd)` for i in * do if test -d "$i" then (cd "$i" ; "$PATHNAME/`basename \"$0\"`" -r) fi done fi pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/scripts/configure-pakcs000077500000000000000000000100141323431571100257170ustar00rootroot00000000000000#!/bin/sh # # Configure PAKCSHOME/pakcsinitrc with correct environment variables # and define the appropriate symbolic links # PAKCSHOME/bin/sicstusprolog (if SICStus-Prolog is available) # PAKCSHOME/bin/swiprolog (if SWI-Prolog is available) # # Compute home of PAKCS installation: PAKCSHOME=`(cd "\`dirname \"$0\"\`" > /dev/null ; pwd)`/.. # Distribution version of the pakcsinitrc file: PAKCSINITRC=$PAKCSHOME/pakcsinitrc # Initial repository version of the pakcsinitrc file: REPOSINITRC=$PAKCSHOME/scripts/pakcsinitrc.sh # Name of user-local pakcsinitrc file (if HOME is present): if [ -n "$HOME" -a "$DISTPKGINSTALL" = "no" ] ; then HOMEINITRC=$HOME/.pakcsinitrc else HOMEINITRC= fi # Generate installation-local pakcsinitrc file (if not present): if [ ! -f "$PAKCSINITRC" -a -f "$REPOSINITRC" ] ; then # The following is only relevant for repository checkouts: cp "$REPOSINITRC" "$PAKCSINITRC" elif [ ! -f "$PAKCSINITRC" ] ; then echo "ERROR: Incomplete distribution: $PAKCSINITRC is missing!" exit 1 fi # if both SICSTUSDIR and SWIPROLOG are undefined, try to define them # from installation-local or user-local pakcsinitrc file: if [ -z "$SICSTUSDIR" -a -z "$SWIPROLOG" ] ; then echo "Try to use definitions from $PAKCSINITRC..." . "$PAKCSINITRC" fi if [ -z "$SICSTUSDIR" -a -z "$SWIPROLOG" -a -f "$HOMEINITRC" ] ; then echo "Try to use definitions from $HOMEINITRC..." . "$HOMEINITRC" fi # if both SICSTUSDIR and SWIPROLOG are still undefined, try find a system: if [ -z "$SICSTUSDIR" -a -z "$SWIPROLOG" ] ; then # try to define SICSTUSDIR if it is not defined: echo "Try to find SICStus-Prolog..." SICSTUSBIN=`which sicstus 2> /dev/null` if [ -n "$SICSTUSBIN" ] ; then SICSTUSDIR=`expr $SICSTUSBIN : '\(.*\)/bin/sicstus'` fi if [ -x "$SICSTUSDIR/bin/sicstus" ] ; then echo "halt." | $SICSTUSDIR/bin/sicstus > /tmp/sicstusout$$ 2>&1 if [ $? -ne 0 ]; then SICSTUSDIR= fi rm /tmp/sicstusout$$ else SICSTUSDIR= fi # try to define SWIPROLOG if SICSTUSDIR is still undefined: if [ -z "$SICSTUSDIR" ] ; then echo "No SICStus-Prolog defined or found, looking for SWI-Prolog..." SWIPROLOG=`which swipl 2> /dev/null` if [ -x "$SWIPROLOG" ] ; then echo "halt." | $SWIPROLOG > /tmp/swiprologout$$ 2>&1 if [ $? -ne 0 -o `grep -c SWI-Prolog /tmp/swiprologout$$` -eq 0 ]; then SWIPROLOG= fi rm /tmp/swiprologout$$ fi fi fi # if both SICSTUSDIR and SWIPROLOG are still undefined, give up: if [ -z "$SICSTUSDIR" -a -z "$SWIPROLOG" ] ; then echo "Please provide a correct definition for SICSTUSDIR or SWIPROLOG" echo "as a parameter for 'make'!" exit 1 fi # store current definitions of SICSTUSDIR and SWIPROLOG in pakcsinitrc files: mv "$PAKCSINITRC" "$PAKCSINITRC.bak" cat "$PAKCSINITRC.bak" | sed 's|^SICSTUSDIR=.*$|SICSTUSDIR='$SICSTUSDIR'|' \ | sed 's|^SWIPROLOG=.*$|SWIPROLOG='$SWIPROLOG'|' \ > "$PAKCSINITRC" rm "$PAKCSINITRC.bak" if [ -n "$HOME" -a "$DISTPKGINSTALL" = "no" ] ; then cp "$PAKCSINITRC" "$HOMEINITRC" fi ORGMAKESTATE=scripts/pakcs-makesavedstate.sh MAKESTATE=scripts/makesavedstate # Create symbolic links in PAKCSHOME/bin and create scripts/makesavedstate: rm -f bin/sicstusprolog bin/swiprolog $MAKESTATE # delete old definitions if [ -n "$SICSTUSDIR" ] ; then ln -s "$SICSTUSDIR/bin/sicstus" bin/sicstusprolog # store the value of SICSTUSDIR in script scripts/makesavedstate : sed "s|^SICSTUSDIR=.*$|SICSTUSDIR=$SICSTUSDIR|" < $ORGMAKESTATE > $MAKESTATE chmod 755 $MAKESTATE fi if [ -n "$SWIPROLOG" ] ; then ln -s "$SWIPROLOG" bin/swiprolog cp $ORGMAKESTATE $MAKESTATE chmod 755 $MAKESTATE fi # Report current values: echo '======================================================================' if [ -f "$HOMEINITRC" ] ; then echo 'PAKCS installation configured with (saved in '$HOMEINITRC'):' else echo 'PAKCS installation configured with:' fi echo "SICSTUSDIR=$SICSTUSDIR" echo "SWIPROLOG=$SWIPROLOG" echo '======================================================================' pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/scripts/pakcs-fcypp.sh000077500000000000000000000051761323431571100255050ustar00rootroot00000000000000#!/bin/sh # This is the shell script to invoke the FlatCurry preprocessor # which applies various transformations on a FlatCurry program PAKCSBUILDDIR=`echo PAKCSBUILDDIR must be defined here!` PAKCSINSTALLDIR= # Define the main directory where PAKCS is installed: if [ -d "$PAKCSINSTALLDIR" ] ; then PAKCSHOME=$PAKCSINSTALLDIR else PAKCSHOME=$PAKCSBUILDDIR fi export PAKCSHOME QUIET=no while [ $# -gt 1 ] ; do case $1 in -q | --quiet ) QUIET=yes ;; --fcypp ) shift ; FCYPP="$FCYPP $1 " ;; --fpopt | --compact | --compactexport | --compactmain=* ) FCYPP="$FCYPP $1 " ;; * ) echo ERROR: Illegal option: "$@" >&2 ; exit 1 ;; esac shift done if [ $# != 1 ] ; then echo >&2 echo "Usage: pakcs-fcypp [] " >&2 echo >&2 echo "Apply FlatCurry preprocessor transformations on Curry program stored in" >&2 echo ".[l]curry" >&2 echo >&2 echo " is a sequence of:" >&2 echo "-q|--quiet : work silently" >&2 echo "--fpopt : apply function pattern optimization after parsing" >&2 echo "--compact : apply code compactification" >&2 echo "--compactexport : apply code compactification w.r.t. exports" >&2 echo "--compactmain=f : apply code compactification w.r.t. main function 'f'" >&2 echo "--fcypp : apply command to " >&2 exit 1 fi PROG=$1 PROGDIR=`dirname $PROG` MODNAME=`basename $PROG` # check existence of source program: if [ -f "$PROGDIR/$MODNAME.lcurry" ] ; then SOURCESUFFIX=.lcurry elif [ -f "$PROGDIR/$MODNAME.curry" ] ; then SOURCESUFFIX=.curry else echo "ERROR: Source program '$PROG.[l]curry' not found!" >&2 exit 1 fi # find options in Curry source file: OPTIONLINE=`grep '^{-#.*PAKCS_OPTION_FCYPP' "$PROGDIR/$MODNAME$SOURCESUFFIX" | head -1` OPTIONS=`expr "$OPTIONLINE" : '{-#.*PAKCS_OPTION_FCYPP*\(.*\)#-}.*'` # add source file options to current preprocessing options: if [ -n "$OPTIONS" ] ; then FCYPP="$FCYPP $OPTIONS" fi if [ $QUIET = no -a -n "$FCYPP" ] ; then echo "Executing FlatCurry preprocessing options: $FCYPP" fi for T in $FCYPP ; do case $T in --fpopt ) TCMD="$PAKCSHOME/tools/optimize/NonStrictOpt" ;; --compact ) TCMD="$PAKCSHOME/tools/optimize/CompactFlat" ;; --compactexport ) TCMD="$PAKCSHOME/tools/optimize/CompactFlat -export" ;; --compactmain=* ) TCMD="$PAKCSHOME/tools/optimize/CompactFlat -main `expr $T : '--compactmain=\(.*\)'`" ;; * ) TCMD=$T ;; esac $TCMD "$PROGDIR/$MODNAME" EXITCODE=$? if [ $EXITCODE -gt 0 ] ; then # just to be sure that there is no buggy file: rm -f "$PROGDIR/$MODNAME.fcy" exit $EXITCODE fi done pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/scripts/pakcs-makecgi.sh000077500000000000000000000174271323431571100257660ustar00rootroot00000000000000#!/bin/sh # Compile a Curry program (using the HTML library) into a cgi script PAKCSBUILDDIR=`echo PAKCSBUILDDIR must be defined here!` PAKCSINSTALLDIR= # Define the main directory where PAKCS is installed: if [ -d "$PAKCSINSTALLDIR" ] ; then CURRYROOT=$PAKCSINSTALLDIR else CURRYROOT=$PAKCSBUILDDIR fi # Standard suffix that will be added to the main script: CGISUFFIX="_CGIMAIN_$$" # Name of the main function in the main script (should not be in conflict # with any exported name of the Curry program) MAINCALL="main_cgi_9999_$$" CPMEXEC="cypm exec" ERROR= HELP=no CURRYDOPTIONS= CURRYOPTIONS=":set -time :set -interactive :set -verbose" COMPACT=no DEBUG=no DEBUGFILE= ULIMIT="-t 120" MAIN=main CGIFILE= WUIJS=no WUIMODULES= SERVERTIMEOUT= STANDALONE=no LOADBALANCE="-loadbalance standard" ARGS= while [ $# -gt 0 -a -z "$ERROR" ]; do case $1 in -help | -h | -\? ) HELP=yes ;; -D* ) CURRYDOPTIONS="$CURRYDOPTIONS $1" ;; -cpm ) echo 'Option "-cpm" deprecated.' ;; -cpmexec ) shift ; CPMEXEC=$1 ;; -compact ) COMPACT=yes ;; -debug ) DEBUG=yes ;; -debugfile ) shift ; DEBUGFILE=$1 ;; -servertimeout ) shift ; SERVERTIMEOUT="-servertimeout $1" ;; -multipleservers ) LOADBALANCE="-loadbalance multiple" ;; # backward compt. -loadbalance ) shift ; LOADBALANCE="-loadbalance $1" ;; -standalone ) STANDALONE=yes ;; -ulimit ) shift; ULIMIT=$1 ;; -wuijs ) WUIJS=yes ;; -wui ) shift; WUIMODULES="$WUIMODULES $1" ;; -m ) shift; MAIN=$1 ;; -o ) shift; CGIFILE=$1 ;; -* ) ERROR="Unknown option: $1" ;; * ) ARGS="$ARGS $1" ;; # collect non-option arguments esac shift done if test -n "$ARGS" ; then set $ARGS fi if [ $HELP = yes ] ; then set "1" ; shift # to show next usage message fi if test -n "$ERROR" ; then echo "ERROR: $ERROR" set "1" ; shift # to show next usage message fi if [ $# != 1 -a $# != 3 ] ; then echo "USAGE: $0 [options] " echo echo "MAIN OPTIONS:" echo "-o : name of the file (with suffix .cgi) where the cgi program should" echo " be stored (default: .cgi)." echo "-m
    : Curry expression (of type IO HtmlForm) computing the HTML form" echo " (default: main)." echo " : name of the Curry program (without suffix) containing the script" echo echo "FURTHER OPTIONS:" echo '-Dname=val : define pakcsrc property "name" as "val"' echo "-cpmexec : set the command to execute programs with the Curry Package" echo " Manager (default: 'cypm exec')" echo "-compact : reduce size of generated cgi program by deleting unused functions" echo "-debug : include code for showing failures" echo " (= PAKCS options '+printfail/+allfails')" echo "-debugfile f: include code for storing failure trace in file f" echo " (= PAKCS options '+consfail file:f')" echo "-ulimit : set 'ulimit ' when executing the cgi program" echo " (default: '-t 120')" echo "-servertimeout : set the timeout for the cgi server process to" echo " milliseconds (default: 7200000 / two hours)" echo "-loadbalance : start new server process if load for one server is" echo " high where specifies the kind of high load." echo " Current possible values for :" echo " no: no load balance" echo " standard: some standard load balancing (default)" echo " multiple: new server process for each initial call to" echo " a cgi script (only reasonable with short timeout)" echo "-standalone : generate standalone script (i.e., copy programs" echo " required from PAKCS system to local directory)" echo "-wuijs : generate JavaScript support code for WUIs" echo "-wui : consider also imported module (that contains WUI" echo " specifications) when generating JavaScript support code" exit 1 fi # Try to locate WUI/JavaScript translator: WUIJS_PREPROCESSOR=`which curry2js` if [ ! -x "$WUIJS_PREPROCESSOR" ] ; then # try to set curry2js to the CPM standard location: WUIJS_PREPROCESSOR=$HOME/.cpm/bin/curry2js if [ ! -x "$WUIJS_PREPROCESSOR" ] ; then WUIJS_PREPROCESSOR= fi fi if [ -z "$WUIJS_PREPROCESSOR" -a $WUIJS = yes ] ; then echo "No support for JavaScript possible!" echo "Please install the Curry->JavaScript translator curry2js by:" echo "> cypm update && cypm install curry2js" exit 1 fi # remove possible suffix: PROG=`expr $1 : '\(.*\)\.lcurry' \| $1` PROG=`expr $PROG : '\(.*\)\.curry' \| $PROG` if test -z "$CGIFILE" ; then CGIFILE=$PROG.cgi fi MAINMOD=$PROG$CGISUFFIX MAINCURRY=$MAINMOD.curry # compute (relative) name of cgi program: CGIDIR=`dirname $CGIFILE` if [ $CGIDIR = "." ] ; then CGIPROG=$CGIFILE else CGIPROG=`expr $CGIFILE : "$CGIDIR/\(.*\)"` fi # name of the server: CGIFILEPATHNAME=`(cd $CGIDIR > /dev/null ; pwd)` CGISERVERPROG=$CGIPROG.server CGISERVEREXEC=$CGIFILEPATHNAME/$CGIPROG.server # unique key for this cgi script: CGIKEY="$CGIFILEPATHNAME/$CGIPROG `date '+%m/%d/%y/%H/%M/%S'`" # generate server program implementing the cgi script application: rm -f $MAINCURRY echo "module $MAINMOD($MAINCALL) where" >> $MAINCURRY echo "import $PROG" >> $MAINCURRY echo "import HTML.Base" >> $MAINCURRY echo "import HTML.CgiServer" >> $MAINCURRY echo "$MAINCALL :: IO ()" >> $MAINCURRY if [ $WUIJS = no ] ; then echo "$MAINCALL = runFormServerWithKey \"$CGIPROG\" \"$CGIKEY\" ($MAIN)" >> $MAINCURRY else CGIBASE=`expr $CGIPROG : '\(.*\)\.cgi' \| $CGIPROG` JSFILE=$CGIBASE\_wui.js $CPMEXEC $WUIJS_PREPROCESSOR -wui -o $JSFILE $PROG $WUIMODULES if [ $? != 0 ] ; then rm -f $MAINCURRY exit $? fi chmod 644 $JSFILE if [ $CGIDIR != "." ] ; then mv $JSFILE $CGIDIR/$JSFILE fi echo "$MAINCALL = runFormServerWithKeyAndFormParams \"$CGIPROG\" \"$CGIKEY\" [FormJScript \"$JSFILE\",FormOnSubmit \"return submissionAllowed()\"] ($MAIN)" >> $MAINCURRY fi # compile main module: echo "Generating saved state for initial expression: $MAIN" echo if [ $DEBUG = yes ] ; then PRINTFAIL=":set +allfails :set +printfail" elif [ -n "$DEBUGFILE" ] ; then PRINTFAIL=":set +consfail file:$DEBUGFILE" else PRINTFAIL= fi if [ $COMPACT = yes ] ; then FCYPP="$FCYPP -compactexport " ; export FCYPP fi $CPMEXEC $CURRYROOT/bin/curry --nocypm $CURRYDOPTIONS $CURRYOPTIONS $PRINTFAIL :l $MAINMOD :save $MAINCALL :q # now the file $MAINMOD should contain the executable computing the HTML form: if test ! -f $MAINMOD ; then echo "Error occurred, generation aborted." $CURRYROOT/bin/cleancurry $MAINMOD rm -f $MAINMOD.curry exit 1 fi # stop old server, if necessary: if [ -f $CGISERVEREXEC ] ; then echo "Stop old version of the server '$CGISERVEREXEC'..." $CURRYROOT/currytools/www/Registry stopscript "$CGISERVEREXEC" fi SUBMITFORM="$CURRYROOT/currytools/www/SubmitForm" # copy executable from the Curry system (if required): if [ $STANDALONE = yes ] ; then cp -p "$SUBMITFORM" $CGIFILEPATHNAME/SubmitForm SUBMITFORM="./SubmitForm" fi # generate cgi script: rm -f $CGIFILE echo "#!/bin/sh" >> $CGIFILE echo "$SUBMITFORM $SERVERTIMEOUT $LOADBALANCE \"$CGIPROG\" \"$CGIKEY\" \"$CGISERVEREXEC\" 2> /dev/null" >> $CGIFILE chmod 755 $CGIFILE # move compiled executable to final position: if test -n "$ULIMIT" ; then TMPFILE=TMPCGIPROLOG$$ echo "#!/bin/sh" > $TMPFILE echo "ulimit $ULIMIT" >> $TMPFILE cat $TMPFILE $MAINMOD > $CGISERVEREXEC rm -f $TMPFILE $MAINMOD else mv $MAINMOD $CGISERVEREXEC fi chmod 755 $CGISERVEREXEC $CURRYROOT/bin/cleancurry $MAINMOD rm -f $MAINMOD.curry echo "`date`: cgi script compiled" > $CGIFILE.log echo echo "New files \"$CGIFILE[.server]\" with compiled cgi script generated." pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/scripts/pakcs-makesavedstate.sh000077500000000000000000000057771323431571100273740ustar00rootroot00000000000000#!/bin/sh # Transform an existing saved state of a Curry program into # a saved state that is executable independent of the # generation environment, i.e., # - add path information to the saved state # - add locale information (LANG, LC_ALL) to the saved state # Directory of the SICStus-Prolog installation, i.e., # $SICSTUSDIR/bin/sicstus should be the name of the interpreter executable: SICSTUSDIR= STANDALONE=no if [ "$1" = "-standalone" ] ; then STANDALONE=yes shift fi if [ "$1" = "-error" ] ; then echo "WARNING: option -noerror no longer supported!" shift fi if [ $# = 1 ] ; then STATE=$1 TARGET=$1 elif [ $# = 2 ] ; then STATE=$1 TARGET=$2 else echo "Usage: $0 [-standalone] []" echo "-standalone: transform saved state into stand-alone executable" echo "saved_state: existing file with the saved state" echo "target_file: target file with transformed state (if different)" exit 1 fi # add $SICSTUSDIR/bin to path so that command "sicstus..." becomes executable: if [ -n "$SICSTUSDIR" ] ; then PATH=$SICSTUSDIR/bin:$PATH export PATH fi if test ! -f "$STATE" ; then echo "ERROR: saved state '$STATE' does not exist!" exit 1 fi if [ $STANDALONE = yes ] ; then if [ -n "$SICSTUSDIR" ] ; then SPLD=$SICSTUSDIR/bin/spld if [ ! -x "$SPLD" ] ; then echo "ERROR: SICStus Prolog application builder '$SPLD' not found!" >&2 exit 1 fi mv "$STATE" main.sav "$SPLD" --static --main=restore --resources-from-sav --resources=main.sav=`pwd`/main.sav --output=$STATE rm -f main.sav chmod 755 "$STATE" echo "Stand-alone executable '$STATE' generated." exit 0 else # we have SWI-Prolog and nothing must be done (everything was done in saveprog) exit 0 fi fi # Patch the Sicstus saved state to suppress startup infos like version# # and add current local and PATH information: if [ "$STATE" = "$TARGET" ] ; then TMPSTATE=$STATE$$ mv $STATE $TMPSTATE else TMPSTATE=$STATE fi if [ -z "$SICSTURDIR" ] ; then # patch SWI-Prolog saved state with unlimited memory option # so that the generated binaries have the same behavior as PAKCS: sed "3s/-x/-L0 -G0 -T0 -x/" < $TMPSTATE > $TMPSTATE$$ mv $TMPSTATE$$ $TMPSTATE fi TMPFILE=TMPSAVEDSTATE$$ echo "#!/bin/sh" > $TMPFILE if test -n "$LANG" ; then echo "LANG=$LANG" >> $TMPFILE echo "export LANG" >> $TMPFILE fi if test -n "$LC_ALL" ; then echo "LC_ALL=$LC_ALL" >> $TMPFILE echo "export LC_ALL" >> $TMPFILE fi if [ -n "$SICSTUSDIR" ] ; then # add SICSTUSDIR/bin to path so that SICStus can find its binary: echo "PATH=\"\$PATH:$SICSTUSDIR/bin\"" >> $TMPFILE echo "export PATH" >> $TMPFILE # check whether --noinfo parameter is accepted (e.g., not for SICStus 3.7): $SICSTUSDIR/bin/sicstus --noinfo --help > /dev/null 2>&1 if [ $? -eq 0 ] ; then # suppress "restoring" message of SICStus-Prolog: echo "exec $SICSTUSDIR/bin/sicstus --noinfo -r \"\$0\" -a \"\$@\"" >> $TMPFILE fi fi cat $TMPFILE $TMPSTATE > $TARGET rm $TMPFILE $TMPSTATE chmod 755 $TARGET pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/scripts/pakcs.sh000077500000000000000000000100711323431571100243540ustar00rootroot00000000000000#!/bin/sh # # Start interactive read-eval-print loop of PAKCS PAKCSBUILDDIR=`echo PAKCSBUILDDIR must be defined here!` PAKCSINSTALLDIR= # Define the main directory where PAKCS is installed: if [ -d "$PAKCSINSTALLDIR" ] ; then PAKCSHOME=$PAKCSINSTALLDIR else PAKCSHOME=$PAKCSBUILDDIR fi export PAKCSHOME # Add PAKCS bin directory to path so that currypp can be found: PATH=$PATH:$PAKCSHOME/bin export PATH # The directory where CPM installs the binaries: CPMBIN="$HOME/.cpm/bin" # check whether some tool is installed by CPM. If yes, execute it, # otherwise inform the user to install it check_and_call_tool() { TOOLPACKAGE=$1 shift TOOLNAME=$1 TOOLBIN="$CPMBIN"/$TOOLNAME shift shift if [ -x "$TOOLBIN" ] ; then if [ "$TOOLNAME" = cypm ] ; then TOOLOPTS="-d curry_bin=$PAKCSHOME/bin/pakcs" else TOOLOPTS= fi echo "Executing CPM installed tool:" "$TOOLBIN" $TOOLOPTS ${1+"$@"} # Extend CURRYPATH with system libraries of this installation: if [ -n "$CURRYPATH" ] ; then CURRYPATH=$CURRYPATH:$PAKCSHOME/lib else CURRYPATH=$PAKCSHOME/lib fi export CURRYPATH exec "$TOOLBIN" $TOOLOPTS ${1+"$@"} else echo "Curry tool '$TOOLNAME' is not installed!" echo "Please install it with the Curry Package Manager by:" echo "> cypm update && cypm install $TOOLPACKAGE" exit 1 fi } # check whether the real program name and the first argument is a tool # in the distribution and, if yes, exec the tool DISTTOOL=`readlink -f $0`-$1 if [ -x "$DISTTOOL" ] ; then shift exec "$DISTTOOL" ${1+"$@"} fi # check whether the first argument is a tool packaged with CPM and, if yes, # exec this tool or require its installation (for backward compatibility): case $1 in addtypes ) check_and_call_tool addtypes curry-addtypes ${1+"$@"} ;; analyze ) check_and_call_tool cass cass ${1+"$@"} ;; browse ) check_and_call_tool currybrowse curry-browse ${1+"$@"} ;; check ) check_and_call_tool currycheck curry-check ${1+"$@"} ;; cypm ) check_and_call_tool cpm cypm ${1+"$@"} ;; data2xml ) check_and_call_tool xmldata curry-data2xml ${1+"$@"} ;; doc ) check_and_call_tool currydoc curry-doc ${1+"$@"} ;; erd2curry ) check_and_call_tool ertools erd2curry ${1+"$@"} ;; genmake ) check_and_call_tool makefile curry-genmake ${1+"$@"} ;; pp ) check_and_call_tool currypp currypp ${1+"$@"} ;; run ) check_and_call_tool runcurry runcurry ${1+"$@"} ;; spiceup ) check_and_call_tool spicey curry-spiceup ${1+"$@"} ;; style ) check_and_call_tool casc curry-style ${1+"$@"} ;; verify ) check_and_call_tool verify curry-verify ${1+"$@"} ;; esac # check whether we should call CPM to compute the correct load path: if [ -x $PAKCSHOME/bin/cypm ] ; then CYPMBIN=$PAKCSHOME/bin/cypm USECPM=yes elif [ -x $CPMBIN/cypm ] ; then CYPMBIN=$CPMBIN/cypm USECPM=yes else USECPM=no fi for i in $* ; do case $i in --help | -h | -\? ) USECPM=no ;; --version | -V ) USECPM=no ;; --nocypm | --numeric-version | --compiler-name | --base-version ) USECPM=no ;; esac done if [ $USECPM = yes ] ; then # set CURRYPATH with 'deps' command of CPM CURRYPATH=`"$CYPMBIN" -v quiet -d CURRYBIN="$PAKCSHOME/bin/pakcs" deps -p` if [ $? -gt 0 ] ; then echo $CURRYPATH exit 1 fi export CURRYPATH fi REPL="$PAKCSHOME/src/pakcs" if [ ! -x "$REPL" ] ; then echo "ERROR: executable '$REPL' not found!" >&2 echo "Run: cd $PAKCSHOME && make" >&2 exit 1 fi # use readline wrapper rlwrap for SICStus-Prolog back end # if rlwrap exists, we have tty as stdin, and we have a home directory to # store rlwrap's history: USERLWRAP=no if tty -s ; then RLWRAP=`which rlwrap` if [ -f "$PAKCSHOME/bin/sicstusprolog" -a -x "$RLWRAP" -a -d "$HOME" ] ; then USERLWRAP=yes fi fi for i in $* ; do if [ $i = "--noreadline" ] ; then USERLWRAP=no fi done if [ $USERLWRAP = yes ] ; then exec rlwrap -c -f "$PAKCSHOME/tools/rlwrap" "$REPL" ${1+"$@"} else exec "$REPL" ${1+"$@"} fi pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/scripts/pakcsinitrc.sh000077500000000000000000000010711323431571100255650ustar00rootroot00000000000000##################################################################### # Set up the default variables according to the local installation: # Directory of the SICStus-Prolog installation, i.e., # $SICSTUSDIR/bin/sicstus should be the name of the interpreter executable: SICSTUSDIR= # Executable of SWI-Prolog (if you don't have SICStus-Prolog) # Note that the complete functionality of PAKCS is not available with # SWI-Prolog and the efficiency is also slower than with SICStus-Prolog. SWIPROLOG= ##################################################################### pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/src/000077500000000000000000000000001323431571100220155ustar00rootroot00000000000000pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/src/Makefile000066400000000000000000000062761323431571100234700ustar00rootroot00000000000000######################################################################## # Makefile for the Curry->Prolog compiler system of PAKCS ######################################################################## # bin directory to store executables of PAKCS: ifndef BINDIR BINDIR = $(dir $(CURDIR))/bin endif # The SICStus Prolog interpreter: SICSTUS=$(BINDIR)/sicstusprolog # The SWI-Prolog interpreter: SWI=$(BINDIR)/swiprolog # Standard options for SWI-Prolog SWIOPTIONS=-q -L0 -G0 -T0 -O # library directory of PAKCS: ifndef LIBDIR LIBDIR = $(dir $(CURDIR))/lib endif # names of run-time libraries: PRIMLIBSRC = `cd lib_src && echo *.pl` .PHONY: install install: $(MAKE) uninstall @if [ -x "$(SICSTUS)" ] ; then $(MAKE) sicstus ; elif [ -x "$(SWI)" ] ; then $(MAKE) swi ; else echo "No Prolog defined to generate Curry->Prolog compiler" ; exit 1 ; fi ../scripts/makesavedstate c2p.state rm -f pakcs mv c2p.state pakcs cd $(BINDIR) && ln -s pakcs curry .PHONY: uninstall uninstall: rm -f $(BINDIR)/curry # make everything if we have a SICStus-Prolog system: .PHONY: sicstus sicstus: $(MAKE) libsicstus echo "[sicstusbasics], generatePrologBasics." | "$(SICSTUS)" $(MAKE) c2p.state # make everything if we have a SWI-Prolog system: .PHONY: swi swi: $(MAKE) libswi rm -f prologbasics.pl ; cp swibasics.pl prologbasics.pl $(MAKE) swi.state mv -f swi.state c2p.state # # generate a saved state of the Curry->Prolog Compiler System w.r.t. SICStus-Prolog # c2p.state: prologbasics.pl basics.pl version.pl loader.pl evaluator.pl c2p.pl \ compiler.pl external.pl readFlcFromFcy.pl \ lib_src/prim_readshowterm.pl \ readXml.pl $(LIBDIR)/.curry/Prelude.fcy echo "compile(c2p),c2p('$(LIBDIR)/Prelude'),compile('$(LIBDIR)/.curry/pakcs/Prelude'),loadAndCompile('$(LIBDIR)/.curry/pakcs/Prelude.pl',[],create),saveprog_entry('c2p.state',user:pakcsMain)." \ | "$(SICSTUS)" # # generate a saved state of the Curry->Prolog Compiler System w.r.t. SWI-Prolog # swi.state: prologbasics.pl basics.pl version.pl loader.pl evaluator.pl c2p.pl \ compiler.pl external.pl readFlcFromFcy.pl \ lib_src/prim_readshowterm.pl \ readXml.pl $(LIBDIR)/.curry/Prelude.fcy echo "compile(c2p). c2p('$(LIBDIR)/Prelude'), compile('$(LIBDIR)/.curry/pakcs/Prelude'),loader:loadAndCompile('$(LIBDIR)/.curry/pakcs/Prelude.pl',[],create). saveprog_entry('swi.state',user:pakcsMain)." | "$(SWI)" $(SWIOPTIONS) $(LIBDIR)/.curry/Prelude.fcy: $(LIBDIR)/Prelude.curry cd $(LIBDIR) && $(MAKE) .curry/Prelude.fcy # # generate correct versions of run-time libraries for SWI-Prolog # .PHONY: libswi libswi: @mkdir -p libswi @for i in $(PRIMLIBSRC) ; do $(MAKE) libswi/$$i ; done libswi/%.pl: lib_src/%.pl echo "[block2freeze]. transFile('$*.pl')." | "$(SWI)" $(SWIOPTIONS) # # generate correct versions of run-time libraries for SICStus-Prolog # .PHONY: libsicstus libsicstus: @mkdir -p libsicstus @for i in $(PRIMLIBSRC) ; do $(MAKE) libsicstus/$$i ; done libsicstus/%.pl: lib_src/%.pl echo "[sicstus_processing]. transFile('$*.pl')." | "$(SICSTUS)" # clean up everything .PHONY: clean clean: uninstall rm -f c2p.state pakcs $(LIBDIR)/.curry/pakcs/Prelude.pl prologbasics.pl rm -f pakcsversion.pl rm -rf libswi/ libsicstus/ pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/src/basics.pl000066400000000000000000001117071323431571100236250ustar00rootroot00000000000000%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Some basic data and predicates that are used by diffent modules. :- module(basics,[exitCode/1, setExitCode/1, failWithExitCode/0, noLoadMessage/0, lastload/1, plprofiling/1, setVerbosity/1, verbosityQuiet/0, verbosityNotQuiet/0, verbosityIntermediate/0, verbosityDetailed/0, verbosemode/1, setVerboseMode/1, quietmode/1, setQuietMode/1, rtArgs/1, compileWithSharing/1, compileWithDebug/0, compileWithFailPrint/0, hasPrintedFailure/0, printConsFailure/1, evalToken/1, worldToken/1, writeNQ/1, nlNQ/0, writeLnNQ/1, writeErr/1, nlErr/0, writeLnErr/1, writeErrNQ/1, nlErrNQ/0, writeLnErrNQ/1, writeBlanks/1, onlySICStusMessage/1, checkSICStusAndWarn/1, onlySWIMessage/1, checkSWIAndWarn/1, putChars/2, writeChars/2, assertPakcsrc/1, writeRCvalues/0, evaluateDynamicPredInfo/3, checkDynamicAccessMethod/2, resetDynamicPreds/0, clearDynamicPreds/0, isCharCons/1, isString/1, char_int/2, cp_string/2, string2Atom/2, atom2String/2, atomic2Atom/2, removeShares/2, term2partcall/3, isCompleteList/2, getNewFileName/2, mainPrologFileName/1, extendPath/3, path2String/2, pathString2loadPath/2, getLocalCurryPath/1, getCurryPath/1, setCurryPath/1, getSysLibPath/1, shellCmdWithCurryPath/1, shellCmdWithCurryPathWithReport/1, loadPath/2, findSourceFileInLoadPath/3, findFlatProgFileInLoadPath/2, findPrologTargetFileInLoadPath/2, findFilePropertyInPath/4, toAbsPath/2, split2dirbase/3, stripSuffix/2, isIoType/1, isId/1, constructorOrFunctionType/4, flatName2Atom/2, decodePrologName/2, isTupleCons/1, isLetterDigitCode/1, isOperatorName/1, isOpIdChar/1, getHomeDirectory/1, rev/2, concat/2, take/3, drop/3, splitAt/4, memberEq/2, deleteFirst/3, replaceEq/4, union/3, diff/3, foldr/4, foldr1/3, intersperse/3, appendAtoms/2, split2words/2, codes2number/2, isDigit/1, retractAllFacts/1, prefixComma/3, isWritableFile/1, tryWriteFile/1, tryDeleteFile/1, deleteFileIfExists/1, ensureDirOfFile/1, prog2DirProg/2, prog2PrologFile/2, prog2InterfaceFile/2, prog2FlatCurryFile/2, prog2ICurryFile/2, hierarchical2dirs/2, readStreamLine/2, removeBlanks/2, skipblanks/2, numberconst/3, readFileContents/2, readStreamContents/2, printError/1, prologError2Atom/2]). :- use_module(prologbasics). :- use_module(pakcsversion). :- (swi7orHigher -> set_prolog_flag(double_quotes, codes) ; true). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% :- dynamic lastload/1, plprofiling/1, quietmode/1, verbosemode/1, rtArgs/1, compileWithSharing/1, compileWithDebug/0, compileWithFailPrint/0, hasPrintedFailure/0, printConsFailure/1, exitCode/1, user:dynamicPredInfo/2, orgDynamicPredInfo/2. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % hook predicates to influence message printing from Prolog: noLoadMessage :- \+ pakcsrc(_,_), !. % no messages for initial state creation noLoadMessage :- \+ verbosityIntermediate. :- multifile user:portray_message/2. :- dynamic user:portray_message/2. % suppress loading/restore messages if not desired: %user:portray_message(I,M) :- writeErr(I/M), nlErr, fail. user:portray_message(informational,_) :- !, noLoadMessage. user:portray_message(informational,loading(_,_,_)) :- !, noLoadMessage. user:portray_message(informational,loaded(_,_,_,_,_,_)) :- !,noLoadMessage. user:portray_message(informational,created(File,_)) :- !, noLoadMessage, atom_codes(File,FileS), append(_,".po",FileS). % do not show creation message for .po files user:portray_message(warning,import(_,_,_,_)) :- !, noLoadMessage. user:portray_message(informational,imported(_,_,_)) :- !, noLoadMessage. user:portray_message(informational,foreign_resource(_,_,_,_)) :- !, noLoadMessage. % do not show any restore messages: user:portray_message(informational,loading(_,restoring,_)) :- !. user:portray_message(informational,restored(_,_,_)) :- !. % do not show saved state creation messages: user:portray_message(informational,created(_,_)) :- !. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% lastload("Prelude"). % program in last load command quietmode(no). % yes if environment should work in quiet mode (option -q) plprofiling(no). % perform profiling with Prolog profiler rtArgs([]). % run-time arguments from script call or ":set args" option compileWithSharing(variable). % if it should be compiled with variable sharing scheme %compileWithSharing(function). % if it should be compiled with function sharing scheme %compileWithDebug. % include if it should be compiled with debugging code %compileWithFailPrint.% include this if it should be compiled without code for % printing failure of reductions (predicate "failprint") printConsFailure(no). % print failures because of missing constructor cases %pakcsrc(name,value). % definitions from PAKCS rc file %dynamicPredInfo(Pred/Arity,Directory). % info clauses for dynamic predicates evalToken(eval([])). % token send through eval arguments for correct concurrency worldToken('$world'). % token send through world arguments in I/O actions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% exitCode(0). % standard exit code when terminating PAKCS setExitCode(C) :- retract(exitCode(_)), asserta(exitCode(C)). % set exit code to 1 and fail: failWithExitCode :- setExitCode(1), !, fail. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% verbosemode(no). % yes if program should be executed in verbose mode setVerboseMode(V) :- retract(verbosemode(_)), asserta(verbosemode(V)). setQuietMode(V) :- retract(quietmode(_)), asserta(quietmode(V)). % verbosity/1 is defined in prologbasics.pl setVerbosity(N) :- retract(verbosity(_)), asserta(verbosity(N)). % verbosity level = 0 (do not show warnings or messages)? verbosityQuiet :- verbosity(0). % verbosity level > 0? verbosityNotQuiet :- verbosity(N), N>0. % verbosity level >= 2 (show intermediate messages)? verbosityIntermediate :- verbosity(N), N>1. % verbosity level = 3 (show all details and intermediate results)? verbosityDetailed :- verbosity(N), N>2. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % writing outputs: % write on standard out if not in quiet mode: writeNQ(T) :- quietmode(no) -> write(T); true. nlNQ :- quietmode(no) -> nl; true. writeLnNQ(T) :- writeNQ(T), nlNQ. % write on user error: writeErr(T) :- write(user_error,T). nlErr :- nl(user_error), flush_output(user_error). writeLnErr(T) :- writeErr(T), nlErr. % write on user error if not in quiet mode: writeErrNQ(T) :- quietmode(no) -> write(user_error,T); true. nlErrNQ :- quietmode(no) -> nl(user_error); true. writeLnErrNQ(T) :- writeErrNQ(T), nlErrNQ. % write n blanks on standard out: writeBlanks(N) :- N>0 -> put_code(32), N1 is N-1, writeBlanks(N1) ; true. % write a Prolog string (list of ASCII values) to a stream (Arg 1): putChars(_,[]). putChars(Stream,[C|Cs]) :- put_code(Stream,C), putChars(Stream,Cs). % write a Curry string (list of chars) to a stream (Arg 1): writeChars(_,[]). writeChars(Stream,[C|Cs]) :- char_int(C,N), put_code(Stream,N), writeChars(Stream,Cs). % check whether this is a SICStus-based implementation and provide warning % if this is not the case: checkSICStusAndWarn(Feature) :- prolog(sicstus) -> true ; onlySICStusMessage(Feature). onlySICStusMessage(Feature) :- appendAtoms(['"',Feature,'" not available ', '(only available in a PAKCS implementation based on SICStus-Prolog)!'], Message), writeErr('WARNING: '), writeErr(Message), nl. % check whether this is a SICStus-based implementation and provide warning % if this is not the case: checkSWIAndWarn(Feature) :- prolog(swi) -> true ; onlySWIMessage(Feature). onlySWIMessage(Feature) :- appendAtoms(['"',Feature,'" not available ', '(only available in a PAKCS implementation based on SWI-Prolog)!'], Message), writeErr('WARNING: '), writeErr(Message), nl. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % handling pakcsrc settings assertPakcsrc(prop(Name,Value)) :- assertz(pakcsrc(Name,Value)). writeRCvalues :- pakcsrc(Name,Value), writeNQ(Name), writeNQ(' = '), writeNQ(Value), nl, fail. writeRCvalues :- nlNQ. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % some auxiliaries for dynamic predicates: % evaluate an initial dynamicPredInfo clause generated by the compiler % and replace it by the evaluated clause: evaluateDynamicPredInfo(P/N,Exp,Dir) :- assertz(orgDynamicPredInfo(P/N,Exp)), evalToken(Eval), user:nf(Exp,NF,Eval,E1), user:boolEq(NF,NF,_,E1,_), % groundness required string2Atom(NF,DynAccess), checkDynamicAccessMethod(DynAccess,Dir), user:retractClause(dynamicPredInfo(P/N,_),_), asserta(user:dynamicPredInfo(P/N,Dir)). % check the access method for persistent predicates (currently: "file:") % and remove it: checkDynamicAccessMethod(AccName,Name) :- atom_codes(AccName,AccNameS), append("file:",NameS,AccNameS), !, atom_codes(Name,NameS). checkDynamicAccessMethod(AccName,AccName) :- appendAtom('Illegal access method for persistent predicate "',AccName,Err1), appendAtom(Err1,'"! (must be "file:")',Err2), raise_exception(Err2). % reset all persistent dynamic predicates to their initial form, % i.e., retract all facts and reset dynamicPredInfo clauses: resetDynamicPreds :- user:dynamicPredInfo(Name/Arity,_), retractAllFacts(Name/Arity), fail. resetDynamicPreds :- % finally, reset dynamicPredInfo clauses: resetDynamicPredInfos. % reset dynamicPredInfo clauses to their initial compiler-generated definition: resetDynamicPredInfos :- retract(orgDynamicPredInfo(Pred,Exp)), retract((user:dynamicPredInfo(Pred,_) :- _)), assertz((user:dynamicPredInfo(Pred,Dir) :- evaluateDynamicPredInfo(Pred,Exp,Dir))), fail. resetDynamicPredInfos. % clear all non-persistent facts about dynamic predicates occurring % in a dynamic initialization directive: clearDynamicPreds :- user:dynamicPredInfo(Name/Arity,Dir), clearDynamicPred(Name/Arity,Dir), fail. clearDynamicPreds. clearDynamicPred(Name/Arity,'') :- retractAllFacts(Name/Arity), !. clearDynamicPred(Name/Arity,_) :- prim_dynamic:retractDeadDynamicFacts(Name/Arity), !. %clearDynamicPred(Name/Arity,_) :- user:retractDeadDynamicFacts(Name/Arity), !. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Auxiliaries for temporary files: % get a name of a temporary file (for the current PAKCS process) % with a given (possibly empty) suffix (and delete an already existing % file or directory): getNewFileName(Suffix,NewFile) :- currentPID(PID), number_codes(PID,PIDS), append("/tmp/pakcs_file_",PIDS,P1), (Suffix=[] -> ProgS=P1 ; append(P1,[46|Suffix],ProgS)), atom_codes(NewFile,ProgS), append("rm -rf ",ProgS,RmCmdS), atom_codes(RmCmd,RmCmdS), shellCmd(RmCmd). % determine (for the current PAKCS process) a file name % where the clauses for the main predicates (hnf, constrEq,...) % should be stored (and delete an already existing file): mainPrologFileName(MainPrologFile) :- getNewFileName("pl",NewPrologFile), appendAtom(NewPrologFile,'.main',MainPrologFile). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Auxiliaries for handling load paths: % extend a path with a prefix, e.g.: % extendPath(test,current,'test:current') extendPath(Path,'',Path) :- !. extendPath('',Path,Path) :- !. extendPath(AddPath,OldPath,ExtPath) :- appendAtoms([AddPath,':',OldPath],ExtPath). % translate a string containing a path into list of these directories: % (e.g., ".:pakcs/lib" -> ['.','pakcs/lib']) pathString2loadPath(SCP,LP1) :- append(SDir1,[58|SDirs],SCP), % 58 = ':' !, atom_codes(Dir1,SDir1), pathString2loadPath(SDirs,LP), (Dir1='' -> LP1=LP ; LP1=[Dir1|LP]). pathString2loadPath(SDir,LP) :- atom_codes(Dir,SDir), (Dir='' -> LP=[] ; LP=[Dir]). % transform a path into a string (e.g., ['.','pakcs/lib'] -> ".:pakcs/lib"): path2String([],[]). path2String([D],DS) :- atom_codes(D,DS). path2String([D1,D2|Ds],DS) :- atom_codes(D1,D1s), path2String([D2|Ds],D2S), append(D1s,[58|D2S],DS). % 58 = ':' % compute the path for loading modules w.r.t. a main directory: loadPath(MainDir,LoadPath) :- getCurryPath(LCP), getLocalLibPath(LocalLibPath), getSysLibPath(SysLibPath), append(LCP,LocalLibPath,LocalP), append(LocalP,SysLibPath,LP), lastload(ProgS), atom_codes(Prog,ProgS), split2dirbase(Prog,LastLoadDir,_), (LastLoadDir='.' -> LoadPath = [MainDir|LP] ; LoadPath = [MainDir,LastLoadDir|LP]). % store a local setting of CURRYPATH: :- dynamic localCurryPath/1. localCurryPath(""). getLocalCurryPath(LCP) :- localCurryPath(LCPS), atom_codes(LCP,LCPS). getCurryPath(LCP) :- localCurryPath(LocalCP), (LocalCP="" -> (getEnv('CURRYPATH',CP) -> atom_codes(CP,CPS) ; CPS="") ; CPS=LocalCP), pathString2loadPath(CPS,LCP). setCurryPath(CP) :- retract(localCurryPath(_)), atom_codes(CP,CPS), asserta(localCurryPath(CPS)). % get a shell command for some given command where CURRYPATH is exported % together with the system library path getCmdWithCurryPath(Cmd,ExpCmd) :- loadPath('.',LP), path2String(LP,FullPathS), concat(["CURRYPATH='",FullPathS,"' && export CURRYPATH && "],Export), atom_codes(Cmd,CmdS), append(Export,CmdS,ExpCmdS), atom_codes(ExpCmd,ExpCmdS). % execute a shell command where CURRYPATH is exported together with % the system library path shellCmdWithCurryPath(Cmd) :- getCmdWithCurryPath(Cmd,ExpCmd), shellCmd(ExpCmd). % call "shellCmdWithCurryPath" and report its execution % if verbosityIntermediate: shellCmdWithCurryPathWithReport(Cmd) :- getCmdWithCurryPath(Cmd,ExpCmd), (verbosityIntermediate -> write('Executing: '), write(ExpCmd), nl ; true), flush_output(user_output), shellCmd(ExpCmd). getLocalLibPath(LocalPath) :- pakcsrc(libraries,LocalLib), atom_codes(LocalLib,LibS), pathString2loadPath(LibS,LocalPath), !. getLocalLibPath([]). % define the system libaries directories getSysLibPath(LP) :- installDir(Root), appendAtom(Root,'/lib',Lib), LP = [Lib]. % findFilePropertyInPath(Path,Pred,F,PF): find a file name w.r.t. to path % satisfying a given predicate % Path: a list of directory names (atoms) % Pred: a predicate that should be satisfied by the file name in the path % F : file name (an atom) % FP : file name prefixed by directory found in path findFilePropertyInPath([Dir|Dirs],Mod:PropPred,File,PathFile) :- (atom_codes(File,[47|_]) % already absolute file name? -> DirFile=File ; appendAtom(Dir,'/',DirSlash), appendAtom(DirSlash,File,DirFile)), Pred =.. [PropPred,DirFile], (call(Mod:Pred) -> PathFile = DirFile ; findFilePropertyInPath(Dirs,Mod:PropPred,File,PathFile)). % findSourceFileInLoadPath(F,PF): find a source program file w.r.t. to load path % Prog: program name (an atom with possible file path and suffix) % Ext: name extension ('.curry' or '.lcurry') % PathProg: file name prefixed by directory in load path findSourceFileInLoadPath(Prog,Ext,PathProg) :- split2dirbase(Prog,ProgDir,ProgBase), prog2DirProg(ProgBase,ProgDBase), appendAtoms([ProgDBase,Ext],ProgDBaseE), loadPath(ProgDir,LP), findFilePropertyInPath(LP,prologbasics:existsFile,ProgDBaseE,PathProg). % findFlatProgFileInLoadPath(F,PF): find a program name that has an % existing FlatCurry file in the current load path % Prog: a program name (an atom) % PathProg: directory/module name of the Curry file corresponding to Prog findFlatProgFileInLoadPath(Prog,PathProg) :- split2dirbase(Prog,ProgDir,ProgBase), loadPath(ProgDir,LP), findFlatProgFileInPath(LP,ProgBase,PathProg). findFlatProgFileInPath([Dir|Dirs],Prog,PathProg) :- (atom_codes(Prog,[47|_]) % already absolute file name? -> DirProg=Prog ; appendAtoms([Dir,'/',Prog],DirProg)), prog2FlatCurryFile(DirProg,FlatFile), (existsFile(FlatFile) -> PathProg = DirProg ; findFlatProgFileInPath(Dirs,Prog,PathProg)). % findPrologTargetFileInLoadPath(F,PF): find a file name of a Prolog target file % w.r.t. to load path % Prog: a program name (an atom) % PathProg: file name of the Prolog target corresponding to Prog findPrologTargetFileInLoadPath(Prog,PathProg) :- split2dirbase(Prog,ProgDir,ProgBase), loadPath(ProgDir,LP), findPrologTargetFileInPath(LP,ProgBase,PathProg). findPrologTargetFileInPath([Dir|Dirs],Prog,PathProg) :- (atom_codes(Prog,[47|_]) % already absolute file name? -> DirProg=Prog ; appendAtoms([Dir,'/',Prog],DirProg)), prog2PrologFile(DirProg,PrologFile), (existsFile(PrologFile) -> PathProg = PrologFile ; findPrologTargetFileInPath(Dirs,Prog,PathProg)). % transform a path name into an absolute path name: toAbsPath(Path,Path) :- atom_codes(Path,[47|_]), !. % already absolute path? toAbsPath(Path,AbsPath) :- atom_codes(Path,[126,47|RPathS]), % home dir path ~/...? !, atom_codes(RPath,RPathS), (getHomeDirectory(HomeDir) -> true ; HomeDir='~'), appendAtoms([HomeDir,'/',RPath],AbsPath). toAbsPath('~',HomeDir) :- !, (getHomeDirectory(HomeDir) -> true ; HomeDir='~'). toAbsPath('.',CurDir) :- !, workingDirectory(CurDir). toAbsPath(Path,AbsPath) :- workingDirectory(CurDir), appendAtoms([CurDir,'/',Path],AbsPath). % split a file name into directory name (possibly '.') and base name: % (all parameters are atoms) split2dirbase(File,Dir,Base) :- atom_codes(File,FileS), rev(FileS,RevFileS), append(RevBaseS,[47|RevDirS],RevFileS), % 47 = '/' !, rev(RevDirS,DirS), atom_codes(Dir,DirS), rev(RevBaseS,BaseS), atom_codes(Base,BaseS). split2dirbase(File,'.',File). % strip a suffix (the last suffix starting with a dot) from a file name (atom): stripSuffix(FileName,BaseName) :- atom_codes(FileName,FileNameS), rev(FileNameS,RevFileNameS), append(_,[46|RevBaseNameS],RevFileNameS), % 46 = '.' !, rev(RevBaseNameS,BaseNameS), atom_codes(BaseName,BaseNameS). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % is a type expression IO? isIoType(Type) :- var(Type), !, fail. isIoType('TCons'('Prelude.IO',_)) :- !. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Union of functiontype and constructortype: constructorOrFunctionType(QName,Name,Arity,Type) :- user:constructortype(QName,Name,Arity,_UnqualifiedName,_Index,Type,_), !. constructorOrFunctionType(QName,Name,Arity,Type) :- user:functiontype(QName,Name,Arity,_PrologName,_Fixity,Type). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Further auxiliaries: % get home directory (fail if it does not exist): getHomeDirectory(Home) :- getEnv('HOME',Home), atom_codes(Home,[_|_]), existsDirectory(Home). % linear reverse: rev(Xs,Ys) :- rev_acc(Xs,Ys,[]). rev_acc([],Ys,Ys). rev_acc([X|Xs],Ys,Zs) :- rev_acc(Xs,Ys,[X|Zs]). % concatenate a list of lists: concat([],[]). concat([L|Xs],LXs) :- concat(Xs,Ys), append(L,Ys,LXs). % take first n elements of a list: take(0,_,[]) :- !. take(_,[],[]) :- !. take(N,[X|Xs],[X|Ys]) :- N1 is N-1, take(N1,Xs,Ys). % drop first n elements of a list: drop(0,L,L) :- !. drop(_,[],[]) :- !. drop(N,[_|Xs],Ys) :- N1 is N-1, drop(N1,Xs,Ys). % split list to first n elements and remaining ones: splitAt(0,Xs,[],Xs) :- !. splitAt(N,[X|Xs],[X|Ys],Zs) :- N1 is N-1, splitAt(N1,Xs,Ys,Zs). % is there an identical member in a list? memberEq(E,[F|_]) :- E==F, !. memberEq(E,[_|Xs]) :- memberEq(E,Xs). % delete first occurrence of an element in a list: deleteFirst(E,[E|L],L) :- !. deleteFirst(E,[F|L],[F|M]) :- deleteFirst(E,L,M). % replace identical occurrences of a term in a list by a new term: replaceEq(_,_,[],[]). replaceEq(X,Y,[E|L],[Y|M]) :- X==E, !, replaceEq(X,Y,L,M). replaceEq(X,Y,[E|L],[E|M]) :- replaceEq(X,Y,L,M). % compute union (without dups) of two lists: union([],Xs,Xs). union([X|Xs],Ys,Zs) :- member(X,Ys), !, union(Xs,Ys,Zs). union([X|Xs],Ys,[X|Zs]) :- union(Xs,Ys,Zs). % compute difference (without dups) of two lists: diff([],_,[]). diff([X|Xs],Ys,Zs) :- member(X,Ys), !, diff(Xs,Ys,Zs). diff([X|Xs],Ys,[X|Zs]) :- diff(Xs,Ys,Zs). % foldr: replace '.' and [] in a list by a constructor and constant: foldr(_,E,[],E). foldr(C,E,[X|Xs],T) :- foldr(C,E,Xs,XsT), T =.. [C,X,XsT]. % foldr1: replace '.' in a non-empty list by a constructor: foldr1(_,[X],X). foldr1(C,[X1,X2|Xs],T) :- foldr1(C,[X2|Xs],XsT), T =.. [C,X1,XsT]. % intersperse: puts a separator (first arg) between all elements in a list: intersperse(_,[],[]). intersperse(_,[X],[X]). intersperse(Sep,[X,Y|Zs],[X,Sep|Xs]) :- intersperse(Sep,[Y|Zs],Xs). % concatenate a list of atom into a single atom: appendAtoms(As,A) :- map2M(prologbasics:atomCodes,As,Xs), concat(Xs,Ys), atom_codes(A,Ys). % transform a list of ASCII digit codes into a number; % fail if the list does not contain only digit codes: codes2number(Cs,N) :- Cs=[_|_], map1M(basics:isDigit,Cs), number_codes(N,Cs). % Is it a digit code? isDigit(C) :- C >= 48, C =< 57. % split a list of characters into list of words: split2words([],[]). split2words([32|Cs],Words) :- !, split2words(Cs,Words). split2words([C|Cs],Words) :- split2words_word(Cs,[C],Words). split2words_word([],Word,[Word]). split2words_word([32|Cs],Word,[Word|Words]) :- !, split2words(Cs,Words). split2words_word([C|Cs],Word,Words) :- append(Word,[C],WordC), % slow, but doesn't matter here split2words_word(Cs,WordC,Words). % retract all (user-module) facts for a predicate: retractAllFacts(P/N) :- length(Args,N), Pred =.. [P|Args], retractAll(Pred), !. retractAll(L) :- retract(user:L), fail. retractAll(_). % put N commas before a string: prefixComma(C1,N,C1) :- N=1, !. prefixComma(C1,N,C2) :- N>1, N1 is N-1, prefixComma([44|C1],N1,C2). % is an atom an identifier (and not an operator)? isId(T) :- atom_codes(T,[F|_]), (65= tryDeleteFile(File) ; true. % ensure that there exists the directory (usually, .curry/pakcs) of the given % file name, i.e., create it if it does not exist (and catch/show any errors): ensureDirOfFile(File) :- on_exception(ErrorMsg,tryEnsureDirOfFile(File),printError(ErrorMsg)). tryEnsureDirOfFile(File) :- split2dirbase(File,Dir,_), (existsDirectory(Dir) -> true ; makeDirectoryWithParents(Dir)). % create directory and also their parents, if necessary: makeDirectoryWithParents(Dir) :- atom_codes(Dir,DirS), (DirS=[47|Dir1S] -> makeDirectoryWithParentsFrom([47],Dir1S) ; makeDirectoryWithParentsFrom([],DirS)). makeDirectoryWithParentsFrom(PrefixS,DirS) :- append(Dir1S,[47|Dir2S],DirS), \+ append(_,[47|_],Dir1S), !, % create first subdir: makeDirectoryWithPrefix(PrefixS,Dir1S), ((PrefixS=[] ; PrefixS=[47]) -> append(PrefixS,Dir1S,SubDirS) ; append(PrefixS,[47|Dir1S],SubDirS)), makeDirectoryWithParentsFrom(SubDirS,Dir2S). makeDirectoryWithParentsFrom(PrefixS,DirS) :- makeDirectoryWithPrefix(PrefixS,DirS). makeDirectoryWithPrefix(PrefixS,DirS) :- (PrefixS=[] -> CompleteDirS = DirS ; append(PrefixS,[47|DirS],CompleteDirS)), atom_codes(CompleteDir,CompleteDirS), (existsDirectory(CompleteDir) -> true ; makeDirectory(CompleteDir)). % generate the name of the program file for a given Curry program name, % i.e., replace all dots in a module name by slashes: prog2DirProg(Prog,ProgDir) :- split2dirbase(Prog,ProgDirPrefix,ProgBase), hierarchical2dirs(ProgBase,DProgBase), (ProgDirPrefix='.' -> ProgDir=DProgBase ; appendAtoms([ProgDirPrefix,'/',DProgBase],ProgDir)). % generate the name of the Prolog file for a given Curry program name: prog2PrologFile(Prog,PrologFile) :- split2dirbase(Prog,ProgDir,ProgBase), hierarchical2dirs(ProgBase,DProgBase), appendAtoms([ProgDir,'/.curry/pakcs/',DProgBase,'.pl'],PrologFile). % generate the name of the interface file for a given Curry program name: prog2InterfaceFile(Prog,IntFile) :- split2dirbase(Prog,ProgDir,ProgBase), hierarchical2dirs(ProgBase,DProgBase), appendAtoms([ProgDir,'/.curry/',DProgBase,'.fint'],IntFile). % generate the name of the FlatCurry file for a given Curry program name: prog2FlatCurryFile(Prog,FlatFile) :- split2dirbase(Prog,ProgDir,ProgBase), hierarchical2dirs(ProgBase,DProgBase), appendAtoms([ProgDir,'/.curry/',DProgBase,'.fcy'],FlatFile). % generate the name of the InterfaceCurry file for a given Curry program name: prog2ICurryFile(Prog,ICurryFile) :- split2dirbase(Prog,ProgDir,ProgBase), hierarchical2dirs(ProgBase,DProgBase), appendAtoms([ProgDir,'/.curry/',DProgBase,'.icurry'],ICurryFile). % translate a hierarchical module name (atom) into directory/file name, % i.e., replace dots by slashes: hierarchical2dirs(HModName,DModName) :- atom_codes(HModName,HModNameS), map2M(basics:dot2slash,HModNameS,DModNameS), atom_codes(DModName,DModNameS). dot2slash(C1,C2) :- C1=46 -> C2=47 ; C2=C1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % read a line from a stream: readStreamLine(Str,[]) :- atEndOfStream(Str), !. readStreamLine(Str,Line) :- get_code(Str,C), (C=10 -> Line=[] ; Line=[C|Rest], readStreamLine(Str,Rest)). % remove blanks at the beginning and end of a string: removeBlanks(L1,L5) :- skipblanks(L1,L2), rev(L2,L3), skipblanks(L3,L4), rev(L4,L5). skipblanks --> " ", !, skipblanks. skipblanks --> {true}. % parser for numeric literals numberconst([45,C|Cs]) --> [45,C], % 45 = '-' { C >= "0", C =< "9" }, !, numberconstrest(Cs). numberconst([C|Cs]) --> [C], { C >= "0", C =< "9" }, numberconstrest(Cs). numberconstrest([C|Cs]) --> [C], { C >= "0", C =< "9" }, !, numberconstrest(Cs). numberconstrest([46,C|Cs]) --> ".", [C], { C >= "0", C =< "9" }, !, floatconstrest(Cs). numberconstrest([]) --> skipblanks. floatconstrest([C|Cs]) --> [C], { C >= "0", C =< "9" }, !, floatconstrest(Cs). floatconstrest([C|Cs]) --> [C], {C=69 ; C=101}, !, % exponent intconst(Cs). floatconstrest([]) --> skipblanks. % parser for integer constants intconst(Cs) --> ( "-", natconst(NCs), {Cs=[45|NCs]} ; natconst(Cs) ). natconst([C|Cs]) --> [C], { C >= "0", C =< "9" }, !, natconst(Cs). natconst([]) --> skipblanks. % read contents of a file: readFileContents(File,Cs) :- open(File,read,S), readStreamContents(S,Cs). readStreamContents(Stream,[]) :- atEndOfStream(Stream), !, close(Stream). readStreamContents(Stream,Cnts) :- get_code(Stream,C), (C = -1 -> Cnts=[], close(Stream) ; Cnts=[C|Cs], readStreamContents(Stream,Cs)). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Conversion functions for characters: % During (Prolog) runtime, characters are represented as atoms % with a leading ^ followed by the character or an decimal % value for special characters, i.e., either three (for ASCII) % or five digits (for Unicode) % is the argument internal representation of a character constructor? isCharCons(S) :- atom(S), atom_codes(S,[94|_]). % a list is considered as a string if all elements are % character constants: isString(L) :- var(L), !, fail. isString([]). isString([X|Xs]) :- isCharCons(X), isString(Xs). % relate a Curry character representation with an ASCII value of a character: char_int(C,N) :- var(N), !, (atom_codes(C,[94,N]) -> true ; (atom_codes(C,[94,N1,N2,N3]) -> N is (N1-48)*100+(N2-48)*10+N3-48 ; (atom_codes(C,[94,N1,N2,N3,N4,N5]) -> N is (N1-48)*10000+(N2-48)*1000+(N3-48)*100+(N4-48)*10+N5-48 ; writeErr('INTERNAL ERROR in char_int: unknown char "'), writeErr(C), writeErr('"'), nlErr))), !. char_int(C,N) :- ((N<32 ; N=96 ; N>126) % 96 = '`' -> cause problems in SP4 -> (N<256 % decimal encoding for special chars: -> % ASCII: N1 is (N//100)+48, N2 is ((N mod 100)//10)+48, N3 is (N mod 10)+48, atom_codes(C,[94,N1,N2,N3]) ; % Unicode: N1 is (N//10000)+48, N2 is ((N mod 10000)//1000)+48, N3 is ((N mod 1000)//100)+48, N4 is ((N mod 100)//10)+48, N5 is (N mod 10)+48, atom_codes(C,[94,N1,N2,N3,N4,N5])) ; atom_codes(C,[94,N])), !. % relate Curry strings (list of chars) and Prolog strings (list of ints): cp_string(String,Ints) :- map2M(basics:char_int,String,Ints). % translate a Curry string (list of chars) into Prolog atom: string2Atom(String,Atom) :- map2M(basics:char_int,String,Ints), atom_codes(Atom,Ints). % translate a Prolog atom into a Curry string (list of chars): atom2String(Atom,String) :- atom_codes(Atom,Ints), map2M(basics:char_int,String,Ints), !. % translate a Prolog atomic value (atom, number, empty list) into a % Prolog atom: atomic2Atom([],'[]') :- !. % for SWI-Prolog >= 7 atomic2Atom(Atomic,Atom) :- number(Atomic), !, % transform number into atom number_codes(Atomic,AtomicS), atom_codes(Atom,AtomicS). atomic2Atom(A,A). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % auxiliaries for handling FlatCurry names in the Prolog code: % transform a FlatCurry name (list of character codes) into an atom used % in the Prolog target code: flatName2Atom("Prelude.:",ConsAtom) :- !, % translate Curry list cons into Prolog list cons: (swi7orHigher -> ConsAtom='[|]' ; ConsAtom='.'). flatName2Atom("Prelude.[]",[]) :- !. % keep name of list (type) constructor %flatName2Atom("Prelude.[]",'[]') :- !. % keep name of list (type) constructor flatName2Atom(Name,Atom) :- % keep name of tuple (type) constructor isTupleConsString(Name), !, atom_codes(Atom,Name). %flatName2Atom(Name,Atom) :- atom_codes(Atom,Name). flatName2Atom(Name,Atom) :- encodeName2Ident(Name,EName), atom_codes(Atom,EName). % encode a (qualified) name into a regular (qualified) Curry identifier: % start checking module prefix: encodeName2Ident(Name,EName) :- Name=[C|_], ((isLetterDigitCode(C), encodeName2IdentMod(Name,EName)) -> true % the identifier was a qualified one ; (isOperatorName(Name) -> EName=Name % don't encode standard operators ; encodeString2Ident(Name,EName) % encode unqualified name )). encodeName2IdentMod([],[]) :- fail. % no module prefix found encodeName2IdentMod([C],[C]) :- fail. % no module prefix found encodeName2IdentMod([47|Cs],[46|TCs]) :- !, % replace / by . in module name encodeName2IdentMod(Cs,TCs). encodeName2IdentMod([46,C2|Cs],[46|TCs]) :- !, % module qualifier found, encode remaining name: (isLetterDigitCode(C2) -> encodeString2Ident(Cs,TCs2), TCs = [C2|TCs2] ; (isOperatorName([C2|Cs]) -> TCs=[C2|Cs] % remaining name is an operator -> don't change ; encodeString2Ident([C2|Cs],TCs))). encodeName2IdentMod([C1|Cs],[C1|TCs]) :- (isLetterDigitCode(C1) ; C1=95) % allowed module char? -> encodeName2IdentMod(Cs,TCs) ; fail. % encode a string into a regular identifier by replacing all special % characters c (i.e., characters different from letters, digits, '_', '.') % by 'cx where cs is the 2-byte hex value of (ord c): encodeString2Ident([],[]). encodeString2Ident([C|Cs],[C|TCs]) :- (isLetterDigitCode(C) ; C=95 ; C=46), !, encodeString2Ident(Cs,TCs). encodeString2Ident([C|Cs],[39,H1,H2|TCs]) :- % encode special char: C1 is C // 16, int2hex(C1,H1), C2 is C mod 16, int2hex(C2,H2), encodeString2Ident(Cs,TCs). % is the argument a code of a letter or digit? isLetterDigitCode(C) :- 65= H is 48+I ; H is 65+I-10. hex2int(H,I) :- H<65 -> I is H-48 ; I is H-65+10. % transform an atom of the Prolog target code into the corresponding Flat name % (i.e., inverse of encoding in flatName2Atom): decodePrologName(PName,FName) :- atom_codes(PName,PNameS), decodePrologNameCodes(PNameS,FNameS), atom_codes(FName,FNameS). decodePrologNameCodes([],[]). decodePrologNameCodes([C1],[C1]). decodePrologNameCodes([C1,C2],[C1,C2]). decodePrologNameCodes([C1,C2,C3|Cs],Ds) :- (C1=39 -> hex2int(C2,I2), hex2int(C3,I3), C is 16*I2+I3, decodePrologNameCodes(Cs,DCs), Ds=[C|DCs] ; decodePrologNameCodes([C2,C3|Cs],DCs), Ds=[C1|DCs]). % is a list of character codes a tuple constructor % (i.e., of the form "Prelude.(,,,)")? isTupleConsString(Name) :- append("Prelude.(",Cs,Name), isTupleConsSuffix(Cs). isTupleConsSuffix([41]) :- !. isTupleConsSuffix([44|Cs]) :- isTupleConsSuffix(Cs). % is an atom a tuple constructor? isTupleCons(Atom) :- atom_codes(Atom,String), isTupleConsString(String). % is a list of character codes a Curry operator name? isOperatorName(Name) :- map1M(basics:isOpIdChar,Name). % is a character code allowed as a Curry operator character? isOpIdChar(126).% ~ isOpIdChar(33). % ! isOpIdChar(64). % @ isOpIdChar(35). % # isOpIdChar(36). % $ isOpIdChar(37). % % isOpIdChar(94). % ^ isOpIdChar(38). % & isOpIdChar(42). % * isOpIdChar(43). % + isOpIdChar(45). % - isOpIdChar(61). % = isOpIdChar(60). % < isOpIdChar(62). % > isOpIdChar(63). % ? isOpIdChar(46). % . isOpIdChar(47). % / isOpIdChar(124).% | isOpIdChar(92). % \ isOpIdChar(58). % : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % some auxiliaries for handling expressions at run time: % remove all share structures in a term: removeShares(T,T) :- var(T), !. removeShares(makeShare(T,_),UT) :- !, removeShares(T,UT). removeShares(share(M),UT) :- !, get_mutable(V,M), (V='$eval'(Exp) -> true ; Exp=V), removeShares(Exp,UT). removeShares(T,UT) :- T =.. [F|Args], map2M(basics:removeShares,Args,UArgs), UT =.. [F|UArgs]. % translate term into partcall term with missing arguments % (used in the compiler and in dynamic predicates): term2partcall(Term,Missing,TermOrPartCall) :- Missing=0 -> TermOrPartCall = Term ; (Missing>0 -> Term =.. [F|Args], rev(Args,RevArgs), TermOrPartCall = partcall(Missing,F,RevArgs) ; Term =.. [F|Args], append(FArgs,[LArg],Args), M1 is Missing+1, FTerm =.. [F|FArgs], term2partcall(FTerm,M1,FTermOrPartCall), TermOrPartCall = 'Prelude.apply'(FTermOrPartCall,LArg)). % is the argument a complete list structure, i.e., ends with the empty list? % if yes, second arguments contains list without share structures isCompleteList(Xs,Xs) :- var(Xs), !, fail. isCompleteList(makeShare(T,_),L) :- !, isCompleteList(T,L). isCompleteList(share(M),L) :- !, get_mutable(V,M), (V='$eval'(Exp) -> true ; Exp=V), isCompleteList(Exp,L). isCompleteList([],[]). isCompleteList([X|Xs],[X|L]) :- isCompleteList(Xs,L). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Print an error message: printError(Error) :- prologError2Atom(Error,ErrorA), writeErr(ErrorA), nlErr, seen, told, !, fail. % Transform a Prolog error term into an atom: prologError2Atom(error(IsoError,_),ErrA) :- isoError2Atom(IsoError,ErrA), !. prologError2Atom(error(_,Context),ErrA) :- errorContext2Atom(Context,ErrA), !. prologError2Atom(ErrorTerm,ErrA) :- prologTerm2Atom(ErrorTerm,ErrorTermA), appendAtoms(['ERROR: ',ErrorTermA],ErrA). % Try to format a meaningful ISO error term: isoError2Atom(existence_error(ObjType,Culprit),ErrA) :- atom(ObjType), atom(Culprit), !, appendAtoms(['EXISTENCE ERROR: ',ObjType,' "',Culprit, '" does not exist'],ErrA). isoError2Atom(permission_error(Op,ObjType,Culprit),ErrA) :- atom(Op), atom(ObjType), atom(Culprit), !, appendAtoms(['PERMISSION ERROR: ',Op,' ',ObjType,' "',Culprit,'"'], ErrA). % Try to format an context error term: errorContext2Atom(existence_error(Goal,_,_,_,Message),ErrA) :- nonvar(Message), Message = past_end_of_stream, !, prologTerm2Atom(Goal,GoalA), appendAtoms(['EXISTENCE ERROR: ',GoalA, ': attempt to read past end of stream'],ErrA). errorContext2Atom(existence_error(_Goal,_,ObjType,Culprit,_),ErrA) :- atom(ObjType), atom(Culprit), !, appendAtoms(['EXISTENCE ERROR: ',ObjType,' "',Culprit, '" does not exist'],ErrA). errorContext2Atom(permission_error(_Goal,_,ObjType,Culprit,Msg),ErrA) :- atom(ObjType), atom(Culprit), atom(Msg), !, appendAtoms(['PERMISSION ERROR: ',ObjType,' "',Culprit,'" ',Msg],ErrA). errorContext2Atom(system_error(Msg),ErrA) :- atom(Msg), !, appendAtoms(['SYSTEM ERROR: ',Msg],ErrA). prologTerm2Atom(V,'_') :- var(V), !. prologTerm2Atom(A,A) :- atom(A), !. prologTerm2Atom(N,A) :- number(N), !, number_codes(N,Cs), atom_codes(A,Cs). prologTerm2Atom(T,A) :- T =.. [F|Args], map2M(basics:prologTerm2Atom,Args,[ArgA|ArgsA]), map2M(basics:prefixComma,ArgsA,CArgsA), concat([[F,'(',ArgA],CArgsA,[')']],Atoms), appendAtoms(Atoms,A). prefixComma(Atom,CAtom) :- appendAtom(',',Atom,CAtom). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/src/block2freeze.pl000066400000000000000000000076731323431571100247440ustar00rootroot00000000000000% Translate Prolog programs containing block declarations into % SWI-Prolog's freeze predicates. % in order to avoid read errors in SWI-Prolog: :- op(1100,fx,(block)). % Translate a single Prolog file stored in subdirectory lib_src into % corresponding result and store in in subdirectory lib: transFile(FileName) :- write('Translating Prolog file: '), write(FileName), nl, appendAtom('lib_src/',FileName,InFileName), appendAtom('libswi/',FileName,OutFileName), open(InFileName,read,In), open(OutFileName,write,Out), read(In,Clause1), % put a setting of the no-singleton-warning flag at the beginning % of the module (but after the potential module declaration) (Clause1 = :-(module(_,_)) -> translateClause(Out,Clause1,[],TransNames), writeClause(Out,(:- style_check(-singleton))) ; writeClause(Out,(:- style_check(-singleton))), translateClause(Out,Clause1,[],TransNames)), processClauses(In,Out,TransNames), close(In), close(Out). processClauses(In,Out,TransNames) :- read(In,Clause), (Clause=end_of_file -> true ; translateClause(Out,Clause,TransNames,NewTransNames), processClauses(In,Out,NewTransNames)). translateClause(Out,(?- block(B)),T1,T2) :- !, translateClause(Out,(:- block(B)),T1,T2). translateClause(Out,(:- block(Decls)),T,[Pred/NewPred|T]) :- !, analyzeBlockDecls(Decls,Specs), summarizeBlockSpecs(Specs,Pred,Arity,Positions), genBlockDecl(Out,Pred,Arity,Positions,NewPred). translateClause(Out,(:- RHS),T,T) :- !, writeClause(Out,(:- RHS)). translateClause(Out,(?- RHS),T,T) :- !, writeClause(Out,(?- RHS)). translateClause(Out,(LHS :- RHS),T,T) :- !, translateLHS(T,LHS,NewLHS), writeClause(Out,(NewLHS :- RHS)). translateClause(Out,LHS,T,T) :- !, translateLHS(T,LHS,NewLHS), writeClause(Out,NewLHS). translateLHS(Ts,LHS,NewLHS) :- LHS =.. [Pred|Args], lookupTrans(Ts,Pred,NewPred), NewLHS =.. [NewPred|Args]. lookupTrans([],Pred,Pred). lookupTrans([P/NP|Ts],Pred,NewPred) :- P=Pred -> NewPred=NP ; lookupTrans(Ts,Pred,NewPred). analyzeBlockDecls((BlockSpec,BlockSpecs),[Spec|Specs]) :- !, analyzeBlockDecl(BlockSpec,Spec), analyzeBlockDecls(BlockSpecs,Specs). analyzeBlockDecls(BlockSpec,[Spec]) :- analyzeBlockDecl(BlockSpec,Spec). analyzeBlockDecl(BlockSpec,(Pred,Arity,Pos)) :- functor(BlockSpec,Pred,Arity), minusPos(Arity,BlockSpec,Pos). % compute position of minus symbol: minusPos(0,Lit,_) :- !, write('minusPos: no minus position: '), write(Lit), nl. minusPos(I,Lit,Pos) :- arg(I,Lit,'-') -> Pos=I ; I1 is I-1, minusPos(I1,Lit,Pos). summarizeBlockSpecs([(Pred,Arity,Pos)|Specs],Pred,Arity,[Pos|Poss]) :- collectBlockPositions(Specs,Poss). collectBlockPositions([],[]). collectBlockPositions([(_,_,Pos)|Specs],[Pos|Poss]) :- collectBlockPositions(Specs,Poss). writeClause(Out,C) :- writeq(Out,C), put_code(Out,46), nl(Out). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Write a block declaration for predicate PredName of arity PredArity % where the positions in the non-empty(!) list GroundPositions must be instantiated. % Furthermore, the last argument is a possibly new predicate name corresponding % to PredName which should be coded instead of PredName (this depends on % the implementation scheme for block declarations). genBlockDecl(Out,PredName,PredArity,BoundPositions,NewPredName) :- appendAtom('blocked_',PredName,NewPredName), functor(Literal,PredName,PredArity), Literal =.. [_|Args], NewLiteral =.. [NewPredName|Args], genFreezeLiteral(BoundPositions,NewLiteral,NewLiteral,FreezeLiteral), writeClause(Out,(Literal :- FreezeLiteral)). genFreezeLiteral([],_,Literal,Literal) :- !. genFreezeLiteral([P|Ps],Literal,FreezeLiteral,NewFreezeLiteral) :- arg(P,Literal,Var), genFreezeLiteral(Ps,Literal,freeze(Var,FreezeLiteral),NewFreezeLiteral). % concatenate two atoms: appendAtom(A1,A2,A3) :- atom_codes(A1,L1), atom_codes(A2,L2), append(L1,L2,L3), atom_codes(A3,L3). append([],Xs,Xs). append([X|Xs],Ys,[X|Zs]) :- append(Xs,Ys,Zs). pakcs-v2.0.1-bbe3454dece2ba6f0ad680fbb6bed8bf5c09b24f/src/c2p.pl000066400000000000000000002414271323431571100230500ustar00rootroot00000000000000%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Curry2Prolog interactive system. % :- use_module(prologbasics). :- use_module(pakcsversion). :- use_module(basics). :- use_module(version). :- use_module(loader). :- use_module(evaluator). :- use_module(compiler). % compiler from FlatCurry into Prolog :- (swi7orHigher -> set_prolog_flag(double_quotes, codes) ; true). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% :- dynamic compileWithCompact/1, parser_warnings/1, parserOptions/1, freeVarsUndeclared/1, varDefines/1, addImports/1, safeMode/1. compileWithCompact([]). % parsecurry options for compactification parser_warnings(yes). % no if the warnings of the parser should be suppressed parserOptions(''). % additional options passed to front end freeVarsUndeclared(no). % yes if free variables need not be declared in initial goals addImports([]). % additional imports defined by the ":add" command varDefines([]). % list of top-level bindings safeMode(no). % safe execution without IO actions at top level? % Read the PAKCS rc file to define some constants readRcFile(ArgProps) :- installDir(PH), appendAtom(PH,'/pakcsrc.default',ConfigFile), getHomeDirectory(Home), appendAtom(Home,'/.pakcsrc',HomeConfigFile), % first, try to install local .pakcsrc file: (existsFile(HomeConfigFile) -> readConfigFile(HomeConfigFile,HomeProps) ; appendAtoms(['cp ',ConfigFile,' ',HomeConfigFile],CpCmd), shellCmd(CpCmd), writeNQ('>>> '), writeNQ(HomeConfigFile), writeNQ(' installed.'), nlNQ, HomeProps=[] ), (existsFile(ConfigFile) -> readConfigFile(ConfigFile,GlobalProps), updateConfigFile(ConfigFile,HomeProps,HomeConfigFile) ; GlobalProps=[]), concat([ArgProps,HomeProps,GlobalProps],AllProps), deletePropDups(AllProps,UniqueProps), map1M(basics:assertPakcsrc,UniqueProps), !, (pakcsrc(verboserc,yes) -> writeNQ('>>> Reading RC files:'), (existsFile(HomeConfigFile) -> writeNQ(' '), writeNQ(HomeConfigFile) ; true), (existsFile(ConfigFile) -> writeNQ(' '), writeNQ(ConfigFile) ; true), nlNQ, writeNQ('Current configurations: '), nlNQ, writeRCvalues ; true). readRcFile(ArgProps) :- % maybe the environment variable HOME is not set since the system % is not started by a regular user: installDir(PH), appendAtom(PH,'/pakcsrc.default',ConfigFile), (existsFile(ConfigFile) -> readConfigFile(ConfigFile,GlobalProps) ; GlobalProps=[]), concat([ArgProps,GlobalProps],AllProps), deletePropDups(AllProps,UniqueProps), map1M(basics:assertPakcsrc,UniqueProps). deletePropDups([],[]). deletePropDups([prop(Name,Value)|Props],[prop(Name,Value)|DProps]) :- deleteEqualProps(Name,Props,Props1), deletePropDups(Props1,DProps). deleteEqualProps(_,[],[]). deleteEqualProps(Name,[prop(Name,_)|Props],DProps) :- !, deleteEqualProps(Name,Props,DProps). deleteEqualProps(Name,[Prop|Props],[Prop|DProps]) :- deleteEqualProps(Name,Props,DProps). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Start main interactive environment: pakcsMain :- getProgramArgs(DArgs), processDArgs(DArgs,Props,Args), readRcFile(Props), pakcsrc(defaultparams,DefParamA), atom_codes(DefParamA,DefParamS), split2words(DefParamS,DefParamsS), map2M(prologbasics:atomCodes,DefParamsA,DefParamsS), processArgs(no,DefParamsA), % process default parameters from .pakcsrc processArgs(no,Args), % process current parameters rtArgs(RTArgs), exitCode(EC), (EC=0 -> true ; halt(EC)), % halt if error occurred ((RTArgs=[], \+ verbosityIntermediate) -> true ; writeNQ('Run-time parameters passed to application: '), writeNQ(RTArgs), nlNQ), (verbosityNotQuiet -> printPakcsHeader, nlNQ, writeNQ('Type ":h" for help (contact: pakcs@curry-language.org)'), nlNQ ; true), flush_output, main. pakcsMain :- halt(1). % halt if failure (in parameters) occurred % extract the initial arguments of the form "-Dprop=value" as a property list: processDArgs([],[],[]). processDArgs([Arg|DArgs],[prop(Name,Val)|Props],Args) :- atom_codes(Arg,[45,68|Def]), !, % [45,68] = "-D" append(NameS,[61|ValS],Def), % 61 = '=' atom_codes(Name,NameS), atom_codes(Val,ValS), processDArgs(DArgs,Props,Args). processDArgs(Args,[],Args). % process the remaining run-time arguments: processArgs(Halt,[]) :- Halt=yes -> halt(0) ; true. processArgs(Halt,['--nocypm'|Args]) :- processArgs(Halt,Args). % ignore since already processed processArgs(Halt,['--noreadline'|Args]) :- processArgs(Halt,Args). % ignore since already processed processArgs(_,[Arg|Args]) :- (Arg='--version' ; Arg='-V'), !, % show version and quit: printPakcsHeader, processArgs(yes,Args). processArgs(_,[Arg|Args]) :- Arg='--compiler-name', !, % show compiler name (pakcs) and quit: write(pakcs), nl, processArgs(yes,Args). processArgs(_,[Arg|Args]) :- Arg='--numeric-version', !, % show compiler version number and quit: printVersionNumber, nl, processArgs(yes,Args). processArgs(_,[Arg|Args]) :- Arg='--base-version', !, % show base libraries version number and quit: baseVersion(BaseVersion), write(BaseVersion), nl, processArgs(yes,Args). processArgs(_,[Arg|Args]) :- (Arg='--help' ; Arg='-h' ; Arg='-?'), writeMainHelp, processArgs(yes,Args). processArgs(Halt,[Arg|Args]) :- (Arg='--quiet' ; Arg='-quiet' ; Arg='-q'), setQuietMode(yes), !, setVerbosity(0), processArgs(Halt,Args). processArgs(Halt,[Arg|Args]) :- % command option atom_codes(Arg,[58|CmdS]), !, % 58=':' expandCommand(CmdS,FullCmd), extractReplCmdParameters(Args,Params,RArgs), processReplCmd(FullCmd,Params), exitCode(EC), (EC=0 -> true ; halt(EC)), % halt if error occurred processArgs(Halt,RArgs). processArgs(Halt,[Arg|Args]) :- % run-time arguments (starting with '--'): atom_codes(Arg,"--"), !, retract(rtArgs(_)), assertz(rtArgs(Args)), processArgs(Halt,[]). processArgs(_,Args) :- writeErr('ERROR: Illegal arguments: '), printArguments(Args), nlErr, nlErr, writeLnErr('Run "pakcs --help" for usage infos'), halt(1). printArguments([]). printArguments([Arg|Args]) :- writeErr(Arg), writeErr(' '), printArguments(Args). % extract REPL command parameters, i.e., everything until next REPL command % or parameter "--": extractReplCmdParameters([],[],[]). extractReplCmdParameters([Arg|Args],[],[Arg|Args]) :- atom_codes(Arg,[58|_]), !. % 58=':' extractReplCmdParameters([Arg|Args],[],[Arg|Args]) :- atom_codes(Arg,"--"), !. extractReplCmdParameters([Arg|Args],[ArgS|Params],RArgs) :- atom_codes(Arg,ArgS), extractReplCmdParameters(Args,Params,RArgs). % process a REPL command parameter: processReplCmd("quit",Args) :- !, (Args=[] -> exitCode(EC), halt(EC) ; writeErr('ERROR: Arguments after ":quit"!'), halt(1)). processReplCmd(Cmd,Params) :- !, combine2cmd([Cmd|Params],CmdS), (process([58|CmdS]) -> true ; true). % due to failure loop of REPL combine2cmd([],[]). combine2cmd([X],X). combine2cmd([X1,X2|Xs],CmdS) :- combine2cmd([X2|Xs],X2s), append(X1,[32|X2s],CmdS). % Show the main options of calling pakcs: writeMainHelp :- nlErr, writeLnErr('Invoke interactive environment:'), nlErr, writeLnErr(' pakcs [ -- ]'), nlErr, writeLnErr('with options:'), nlErr, writeLnErr('-h|--help|-? : show this message and quit'), writeLnErr('-V|--version : show version and quit'), writeLnErr('--compiler-name : show the compiler name "pakcs" and quit'), writeLnErr('--numeric-version : show the compiler version number and quit'), writeLnErr('--base-version : show the version of the base libraries and quit'), writeLnErr('-q|--quiet : work silently'), writeLnErr('--nocypm : do not invoke "cypm" to compute package load path'), writeLnErr('--noreadline : do not use input line editing via command "rlwrap"'), writeLnErr('-Dprop=val : define pakcsrc property "prop" as "val"'), writeLnErr(': : command of the PAKCS environment'), nlErr, nlErr, writeLnErr('Invoke some tool:'), nlErr, writeLnErr(' pakcs '), nlErr, writeLnErr('where is one of:'), nlErr, writeLnErr('browse : browse and analyze'), writeLnErr('check : check properties'), writeLnErr('doc : generate documentation for Curry programs'), writeLnErr('frontend : Curry front end'), writeLnErr('makecgi : translate Curry HTML program into CGI program'), writeLnErr('pp : Curry preprocessor'), nlErr, writeLnErr('To get more help about the usage of a tool, type'), nlErr, writeLnErr(' pakcs -h'). % Compute the prompt of the interactive loop: pakcsPrompt('') :- quietmode(yes), !. pakcsPrompt(Prompt) :- currentModuleFile(MN,_), currentprogram(CPS), atom_codes(CP,CPS), split2dirbase(CP,_,BaseProg), addImports(AddImps), intersperse(' ',[BaseProg|AddImps],AllMods), appendAtoms(AllMods,CurrMods), (MN=BaseProg -> appendAtoms([CurrMods,'> '],Prompt) ; appendAtoms([CurrMods,' (module: ',MN,')> '],Prompt)), !. % main read-eval-print loop of the environment: main :- prompt(_,''), % clear standard Prolog prompt repeat, pakcsPrompt(Prompt), write(Prompt), flush_output(user_output), flush_output(user_error), readLine(Input), (Input = end_of_file -> true ; removeBlanks(Input,ShortInput), process(ShortInput)), cleanupAtEnd, exitCode(EC), halt(EC). % things to do when leaving PAKCS interactive environment: cleanupAtEnd :- % ignore connection errors: (on_exception(_ErrorMsg,cleanSourceCodeGUIs,true) -> true ; true). % Expand a command that may be shortened to its full name: expandCommand(AShortCmd,Cmd) :- map2M(user:isLowerCaseOf,ShortCmd,AShortCmd), allCommands(AllCmds), findall(FullCmd,prefixOf(ShortCmd,AllCmds,FullCmd),FullCmds), (FullCmds=[Cmd] -> true ; (FullCmds=[] -> writeErr('ERROR: unknown command: ":'), atom_codes(ASC,AShortCmd), writeErr(ASC), writeLnErr('"'), fail ; writeErr('ERROR: ambiguous command: ":'), atom_codes(ASC,AShortCmd), writeErr(ASC), writeLnErr('"'), fail)). prefixOf(Prefix,[Full|_],Full) :- append(Prefix,_,Full). prefixOf(Prefix,[_|FullS],Full) :- prefixOf(Prefix,FullS,Full). % all possible commands: allCommands(["add","browse","cd","compile","coosy", "edit","eval","fork","help", "interface","load","modules","peval","programs","quit","reload", "save","set","show","source","type","usedimports"]). % Expand an option that may be shortened to its full name: expandOption(ShortOpt,FullOpt) :- (append(OptFirst,[32|OptRest],ShortOpt) -> true ; OptFirst=ShortOpt,OptRest=[]), map2M(user:isLowerCaseOf,LOptFirst,OptFirst), allOptions(AllOpts), findall(FullOptF,prefixOf(LOptFirst,AllOpts,FullOptF),FullOpts), (FullOpts=[Opt] -> (OptRest=[] -> FullOpt=Opt ; append(Opt,[32|OptRest],FullOpt)) ; (FullOpts=[] -> writeErr('ERROR: unknown option: '), atom_codes(OF,OptFirst), writeLnErr(OF), writeLnErr('Type :set for help'), fail ; writeErr('ERROR: option not unique: '), atom_codes(OF,OptFirst), writeLnErr(OF), writeLnErr('Type :set for help'), fail)). % all possible options: allOptions(["+allfails","-allfails", "+compact","-compact", "+consfail","-consfail", "+debug","-debug", "+free","-free", "+interactive","-interactive", "+first","-first", "+plprofile","-plprofile", "+printfail","-printfail", "+profile","-profile", "+suspend","-suspend", "+time","-time", "+verbose","-verbose", "+warn","-warn", "path","printdepth","v0","v1","v2","v3","parser","safe","args", "+single","-single", "+spy","-spy","spy", "+trace","-trace"]). isLowerCaseOf(L,C) :- 65= true ; ShortCmd=Cs, Rest=[]), expandCommand(ShortCmd,Cmd), removeBlanks(Rest,Params), (member(Cmd,["load","reload","compile","quit","eval"]) -> true ; ioAdmissible), processCommand(Cmd,Params), !, Cmd="quit". process(Input) :- % ignore inputs starting with a comment: removeBlanks(Input,[45,45|_]), !, fail. process(Input) :- processExpression(Input,ExprGoal), call(ExprGoal). % check whether arbitrary top-level IO actions are allowed: ioAdmissible :- safeMode(yes), !, write('Only initial expressions of non I/O type are allowed!'), nl, setExitCode(3), fail. ioAdmissible. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % process a given main expression: processExpression(Input,ExprGoal) :- processExpressionWithType(Input,none,ExprGoal). processExpressionWithType(Input,InitMainExpType,ExprGoal) :- parseMainExpression(Input,InitMainExpType,Term,Type,Vs, _,DfltTypeAtom,Overloaded), processOrDefaultMainExpression(Input,Term,Type,Vs,DfltTypeAtom, Overloaded,ExprGoal). % If the main expression is overloaded, try to default it to some % numeric type: processOrDefaultMainExpression(_Input,Term,Type,Vs,_,false,ExprGoal) :- % we can directly process non-overloaded expressions: !, (isIoType(Type) -> ioAdmissible ; true), (verbosemode(yes) -> (verbosityQuiet -> writeCurryTermWithFreeVarNames(Vs,Term), nl ; write('Evaluating expression: '), writeCurryTermWithFreeVarNames(Vs,Term), write(' :: '), numbersmallvars(97,_,Type), writeType(Type), nl, % print free goal variables if present: writeFreeVars(Vs)) ; true), ExprGoal = evaluateMainExpression(Term,Type,Vs). processOrDefaultMainExpression(Input,_,_,_,DfltTypeAtom,_,ExprGoal) :- \+ DfltTypeAtom=none, !, (verbosityDetailed -> write('Defaulted type of main expression: '), write(DfltTypeAtom), nl ; true), processExpressionWithType(Input,DfltTypeAtom,ExprGoal). processOrDefaultMainExpression(_,_,Type,_,_,_,_) :- (verbosityDetailed -> write('Overloaded type: '), writeq(Type), nl ; true), writeErr('Cannot handle arbitrary overloaded top-level expressions'), nlErr, writeErr('Hint: add type annotation to overloaded entity'), nlErr, fail. % translate a flat type into an atom in Curry syntax: flatType2Atom(Type,CurryType) :- % small hack to avoid redefinition of writeType/2 to writeType/3... getNewFileName("maintype",NewFile), tell(NewFile), numbersmallvars(97,_,Type), writeType(Type), nl, told, open(NewFile,read,Stream), readStreamLine(Stream,TypeString), close(Stream), appendAtoms(['rm -rf ',NewFile],RmCmd), shellCmd(RmCmd), atom_codes(CurryType,TypeString). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Check whether the first argument is the (FlatCurry) representation % of some class contexts and return the context type in the second % argument and the qualified class name (string) in the third (module) % and fourth (class name) argument: classDict(T,_,_,_) :- var(T), !, fail. classDict('TCons'(FCDict,[A]),A,ModS,DictS) :- atomic2Atom(FCDict,FCDictA), % hack for SWI 7.x if FCDict == [] atom_codes(FCDictA,FCDictS), % dictionary argument types are prefixed by "_Dict#": atom_codes('._Dict\'23',FCDictPrefixS), append(ModFCDictPrefixS,DictS,FCDictS), append(ModS,FCDictPrefixS,ModFCDictPrefixS), !. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % process a given expression by writing it into a main module % and calling the front end: parseMainExpression(Input,InitMainExpType,MainExp,Type,Vs, MainExpType,DfltTypeAtom,Ovld) :- getNewFileName("",MainExprDir), makeDirectory(MainExprDir), parseExpressionWithFrontend(MainExprDir,Input,InitMainExpType, MainExp,Type,Vs, MainExpType,DfltTypeAtom,Ovld), (verbosityDetailed -> write('Translated expression: '), writeq(MainExp), nl ; true). parseExpressionWithFrontend(MainExprDir,Input,InitMainFuncType,MainExp, Type,Vs,MainFuncType,DfltTypeAtom,Ovld) :- getMainProgPath(MainProgName,MainPath), appendAtoms([MainExprDir,'/PAKCS_Main_Exp'],MainExprMod), appendAtoms([MainExprMod,'.curry'],MainExprModFile), splitWhereFree(Input,InputExp,FreeVars), writeMainExprFile(MainExprModFile,MainProgName,InputExp,FreeVars, InitMainFuncType), (verbosityIntermediate -> PVerb=1 ; PVerb=0), workingDirectory(CurDir), toAbsPath(MainPath,AbsMainPath), getCurryPath(CP0), path2String(CP0,CP1), atom_codes(LCP,CP1), extendPath(AbsMainPath,LCP,NewLCP), setCurryPath(NewLCP), setWorkingDirectory(MainExprDir), (parseProgram("PAKCS_Main_Exp",PVerb,no) -> Parse=ok ; Parse=failed), setCurryPath(LCP), % restore old settings setWorkingDirectory(CurDir), Parse=ok, % proceed only in case of successful parsing loadPath(AbsMainPath,LoadPath), setCurryPath(NewLCP), setWorkingDirectory(MainExprDir), readProg(['.'|LoadPath],'PAKCS_Main_Exp',FlatProg,_), setCurryPath(LCP), % restore old settings setWorkingDirectory(CurDir), FlatProg = 'Prog'(_,_Imps,_TDecls,FDecls,_), length(FreeVars,NumFreeVars), FDecls = ['Func'(_,_,_,FuncType,'Rule'(RuleArgs,RuleExp))|MoreFs], !, ((MoreFs=[], simpleFlatExp(RuleExp)) -> FlatExp = RuleExp ; setCurryPath(NewLCP), compileMainExpression(MainExprMod), setCurryPath(LCP), map2M(compiler:varIndex2VarExp,RuleArgs,RuleVars), FlatExp = 'Comb'('FuncCall', "PAKCS_Main_Exp.pakcsMainGoal",RuleVars)), flatType2MainType([],FuncType,_,MFuncType), copy_term(MFuncType,MainFuncType), defaultTypeExpr(MFuncType,DfltType,DfltTypeAtom), stripFuncTypes(NumFreeVars,DfltType,Type), flatExp2MainExp([],FlatExp,EVs,MainExp), replaceFreeVarInEnv(FreeVars,RuleArgs,EVs,Vs), length(FreeVars,FVL), length(RuleArgs,RAL), (FVL=RAL -> Ovld=false ; Ovld=true), !, deleteMainExpFiles(MainExprDir). parseExpressionWithFrontend(MainExprDir,_,_,_,_,_,_,_,_) :- deleteMainExpFiles(MainExprDir), !, failWithExitCode. % get the name and path to the source code of the currently loaded main module % (or fail with an error message if there is no source code): getMainProgPath(MainProgName,MainPath) :- lastload(MainProgS), findSourceProgPath(MainProgS,MainPath), !, atom_codes(MainProg,MainProgS), split2dirbase(MainProg,_,MainProgName). getMainProgPath(CurrMod,MainPath) :- currentModuleFile(CurrMod,_), atom_codes(CurrMod,CurrModS), findSourceProgPath(CurrModS,MainPath), !, (verbosityQuiet -> true ; lastload(LoadProgS), atom_codes(LoadProg,LoadProgS), writeErr('*** Warning: module loaded from : '), writeLnErr(LoadProg), writeErr(' main expression parsed w.r.t. source module: '), writeLnErr(CurrMod)). getMainProgPath(_,_) :- lastload(MainProgS), atom_codes(MainProg,MainProgS), writeErr('Source program for module "'), writeErr(MainProg), writeLnErr('" not found!'), !, fail. % delete all auxiliary files for storing main expression: deleteMainExpFiles(MainExprDir) :- appendAtoms([MainExprDir,'/PAKCS_Main_Exp'],MainExprMod), prog2FlatCurryFile(MainExprMod,MainExprFcyFile), deleteFileIfExists(MainExprFcyFile), prog2InterfaceFile(MainExprMod,MainExprFintFile), deleteFileIfExists(MainExprFintFile), prog2ICurryFile(MainExprMod,MainExprIcurryFile), deleteFileIfExists(MainExprIcurryFile), appendAtoms(['rm -rf ',MainExprDir],RmdirCmd), (pakcsrc(keepfiles,yes) -> true ; shellCmd(RmdirCmd)). % compile and load the "main expression program" since it contains some % functions generated from the main expression, e.g., let bindings: compileMainExpression(MainExprMod) :- prog2PrologFile(MainExprMod,PrologFile), c2p(MainExprMod,PrologFile), currentModuleFile(CurrMod,_), on_exception(ErrorMsg, (addImports(AddImps), loadAndCompile(PrologFile,AddImps,create)), printError(ErrorMsg) ), curryModule(CurrMod). % Try to default a type by instantiating type context variables % to default types (e.g., numeric types) and removing such type contexts. % The defaulted type is returned in the second argument. % The third argument contains the defaulted type as an atom % or 'none' if the type is still overloaded. defaultTypeExpr(OrgType,DfltType,DfltTypeAtom) :- defaultNumType(OrgType,DefNumType), removeDefaultedTypes(DefNumType,DfltType), (isOverloadedType(DfltType) -> DfltTypeAtom=none % can't default ; flatType2Atom(DfltType,DfltTypeAtom)). % try to default overloaded numerical types: defaultNumType(Type,Type) :- var(Type), !. defaultNumType('FuncType'(AType,RType),DType) :- classDict(AType,TVar,ModName,DictName), ModName="Prelude", member(DictName,["Num","Integral","Fractional"]), !, (DictName="Fractional" -> (var(TVar) -> TVar = 'TCons'('Prelude.Float',[]) ; true), defaultNumType(RType,DType) ; (var(TVar) -> TVar = 'TCons'('Prelude.Int',[]) ; true), defaultNumType(RType,DType)). defaultNumType('FuncType'(AType,RType),'FuncType'(AType,DType)) :- !, defaultNumType(RType,DType). defaultNumType(Type,Type). % remove type class context of defaulted types: removeDefaultedTypes(Type,Type) :- var(Type), !. removeDefaultedTypes('FuncType'(AType,RType),DType) :- classDict(AType,TVar,ModName,DictName), ModName="Prelude", nonvar(TVar), ( member(DictName,["Eq","Ord","Read","Show"]) ; DictName="Enum", member(TVar,['TCons'('Prelude.Int',[]),'TCons'('Prelude.Float',[])]) ), !, removeDefaultedTypes(RType,DType). removeDefaultedTypes('FuncType'(AType,RType),'FuncType'(AType,DType)) :- !, removeDefaultedTypes(RType,DType). removeDefaultedTypes(Type,Type). % Is the type overloaded, i.e., does it contain class dictioniary parameters? isOverloadedType(Type) :- var(Type), !, fail. isOverloadedType('FuncType'(AType,_)) :- classDict(AType,_,_,_), !. isOverloadedType('FuncType'(_,RType)) :- !, isOverloadedType(RType). isOverloadedType(_) :- fail. % strip the first n function types (except for class dictionaries) % from a type expression: stripFuncTypes(0,Type,Type) :- !. stripFuncTypes(N,'FuncType'(_,RType),Type) :- N1 is N-1, stripFuncTypes(N1,RType,Type). replaceFreeVarInEnv(_,_,[],[]). replaceFreeVarInEnv(FreeVars,RuleArgs,[(EVN=EV)|Env],[(EVN1=EV)|TEnv]) :- atom_codes(EVN,[95,120|Vs]), number_codes(V,Vs), replaceFreeEnvVar(FreeVars,RuleArgs,V,EVN1), replaceFreeVarInEnv(FreeVars,RuleArgs,Env,TEnv). replaceFreeEnvVar([],_,V,NV) :- !, number_codes(V,Vs), atom_codes(NV,[95|Vs]). replaceFreeEnvVar([FV|FreeVars],[RA|RuleArgs],V,NV) :- (V=RA -> appendAtoms(['_',FV],NV) ; replaceFreeEnvVar(FreeVars,RuleArgs,V,NV)). splitWhereFree(Input,Exp,Vs) :- append(IWOfree," free",Input), append(IWOvars,Vars,IWOfree), append(Exp," where ",IWOvars), !, splitWhereVars(Vars,Vs). splitWhereFree(Input,Input,[]). splitWhereVars(VarsS,[V|Vs]) :- append(VarS,[44|Vars],VarsS), !, removeBlanks(VarS,VarS1), atom_codes(V,VarS1), splitWhereVars(Vars,Vs). splitWhereVars(VarS,[V]) :- removeBlanks(VarS,VarS1), atom_codes(V,VarS1). flatType2MainType(Vs,'TVar'(I),Vs1,TV) :- number_codes(I,IS), atom_codes(VN,[97|IS]), addVar(VN,Vs,TV,Vs1). flatType2MainType(Vs,'FuncType'(FT1,FT2),Vs2,'FuncType'(T1,T2)) :- flatType2MainType(Vs,FT1,Vs1,T1), flatType2MainType(Vs1,FT2,Vs2,T2). flatType2MainType(Vs,'TCons'(TNameS,TArgs),Vs1,'TCons'(TName,Args)) :- flatName2Atom(TNameS,TName), flatTypes2MainTypes(Vs,TArgs,Vs1,Args). flatTypes2MainTypes(Vs,[],Vs,[]). flatTypes2MainTypes(Vs,[FE|FEs],Vs2,[E|Es]) :- flatType2MainType(Vs,FE,Vs1,E), flatTypes2MainTypes(Vs1,FEs,Vs2,Es). % is a FlatCurry expression simple, i.e., does not contains Let/Case/Or/Typed? simpleFlatExp('Var'(_)). simpleFlatExp('Lit'(_)). simpleFlatExp('Comb'(_,_,Args)) :- simpleFlatExps(Args). simpleFlatExp('Free'(_,Exp)) :- simpleFlatExp(Exp). simpleFlatExp('Let'(_,_)) :- fail. simpleFlatExp('Or'(_,_)) :- fail. simpleFlatExp('Typed'(_,_)) :- fail. simpleFlatExp('Case'(_,_,_)) :- fail. simpleFlatExps([]). simpleFlatExps([E|Es]) :- simpleFlatExp(E), simpleFlatExps(Es). % translate FlatCurry expression from fcy reader into internal format: flatExp2MainExp(Vs,'Var'(I),Vs1,V) :- number_codes(I,IS), atom_codes(VN,[95,120|IS]), addVar(VN,Vs,V,Vs1). flatExp2MainExp(Vs,'Lit'('Intc'(I)),Vs,I). flatExp2MainExp(Vs,'Lit'('Floatc'(F)),Vs,F). flatExp2MainExp(Vs,'Lit'('Charc'(I)),Vs,I_Atom) :- char_int(I_Atom,I). flatExp2MainExp(Vs,'Comb'(_,FNameS,[FA1,FA2]),Vs1,Exp) :- atom_codes('Prelude.apply',FNameS), !, flatExps2MainExps(Vs,[FA1,FA2],Vs1,[A1,A2]), (compileWithSharing(function) -> Exp = makeShare('Prelude.apply'(A1,A2),_) ; Exp = 'Prelude.apply'(A1,A2)). flatExp2MainExp(Vs,'Comb'(CType,FNameS,FArgs),Vs1,Exp) :- flatName2Atom(FNameS,FName), flatExps2MainExps(Vs,FArgs,Vs1,Args), FExp =.. [FName|Args], ((CType='FuncCall' ; CType='ConsCall' ; CType='ConsPartCall'(_)) -> Missing=0 ; CType='FuncPartCall'(Missing)), term2partcall(FExp,Missing,ExpOrPartCall), (compileWithSharing(function) -> Exp = makeShare(ExpOrPartCall,_) ; Exp = ExpOrPartCall). flatExp2MainExp(Vs,'Free'(_,FExp),Vs1,Exp) :- flatExp2MainExp(Vs,FExp,Vs1,Exp). flatExp2MainExp(_,'Let'(_,_),_,_) :- writeLnErr('ERROR: Let not allowed in main expressions!'), !, fail. flatExp2MainExp(_,'Or'(_,_),_,_) :- writeLnErr('ERROR: Or not allowed in main expressions!'), !, fail. flatExp2MainExp(_,'Typed'(_,_),_,_) :- writeLnErr('ERROR: Typed not allowed in main expressions!'), !, fail. flatExp2MainExp(_,'Case'(_,_,_),_,_) :- writeLnErr('ERROR: Case not allowed in main expressions!'), !, fail. flatExps2MainExps(Vs,[],Vs,[]). flatExps2MainExps(Vs,[FE|FEs],Vs2,[E|Es]) :- flatExp2MainExp(Vs,FE,Vs1,E), flatExps2MainExps(Vs1,FEs,Vs2,Es). writeMainExprFile(ExprFile,MainProg,Input,FreeVars,InitMainFuncType) :- (verbosityIntermediate -> write('Writing Curry main expression file: '), write(ExprFile), nl ; true), fileOpenOptions(FOptions), open(ExprFile,write,S,FOptions), % suppress parser warnings: write(S,'{-# OPTIONS_CYMAKE -Wnone #-}'), nl(S), (MainProg='Prelude' -> true ; write(S,'import '), write(S,MainProg), nl(S)), addImports(Imps), writeMainImports(S,Imps), (InitMainFuncType = none -> true ; write(S,'pakcsMainGoal :: '), write(S,InitMainFuncType), nl(S)), write(S,'pakcsMainGoal'), writeFreeVarArgs(S,FreeVars), write(S,' = '), varDefines(VarDefs), writeVarDefs(S,VarDefs), putChars(S,Input), nl(S), close(S). writeVarDefs(_,[]). writeVarDefs(S,[Var=Exp|VarDefs]) :- exp2Term(Exp,[],Term,_), write(S,'let '), write(S,Var), write(S,' = '), writeCurryOnStream(S,Term), write(S,' in '), writeVarDefs(S,VarDefs). writeFreeVarArgs(_,[]). writeFreeVarArgs(S,[V|Vs]) :- write(S,' '), write(S,V), writeFreeVarArgs(S,Vs). writeMainImports(_,[]). writeMainImports(S,[Imp|Imps]) :- write(S,'import '), write(S,Imp), nl(S), writeMainImports(S,Imps). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% processCommand("quit",[]) :- !. processCommand("help",[]) :- !, write('Commands (can be abbreviated to a prefix if unique):'), nl, write(':load - compile and load program ".curry" and all imports'),nl, write(':add .. - add modules to to currently loaded modules'),nl, write(':reload - recompile currently loaded modules'),nl, write(':compile - alias for ":load "'),nl, write(':eval - evaluate expression '), nl, %write(':define = - define variable binding for subsequent expressions'), nl, write(':type - show the type of '),nl, write(':browse - browse program and its imported modules'),nl, write(':interface - show interface of current program'),nl, write(':interface - show interface of module '),nl, write(':usedimports - show all used imported functions/constructors'),nl, write(':edit - load source of currently loaded module into editor'), nl, write(':edit - load source of module into editor'), nl, write(':modules - show list of currently loaded modules'), nl, write(':show - show source of currently loaded Curry program'), nl, write(':show - show source code of module '), nl, write(':source - show source code of (visible!) function '), nl, write(':source . - show source code of function in module '), nl, write(':programs - show names of all Curry programs available in load path'), nl, write(':cd - change current directory to '), nl, write(':! - execute in shell'), nl, write(':save - save executable with main expression "main"'), nl, write(':save - save executable with main expression '), nl, write(':fork - fork new process evaluating (of type "IO ()")'), nl, write(':coosy - start Curry Object Observation System'), nl, %write(':xml - translate current program into XML format'), nl, write(':peval - partially evaluate current program'), nl, write(':set