ocsigenserver-2.2.0/0000755000000000000000000000000012060404165012555 5ustar0000000000000000ocsigenserver-2.2.0/Makefile0000644000000000000000000001261712060404165014224 0ustar0000000000000000include Makefile.config ### Building .PHONY: all byte opt doc all: ${MAKE} -C src all byte: ${MAKE} -C src byte opt: ${MAKE} -C src opt doc: $(MAKE) -C doc ### Testing and debugging : local execution and toplevel ### .PHONY: run.local run.opt.local top run.local: byte CAML_LD_LIBRARY_PATH=src/server src/server/${PROJECTNAME} -c local/etc/${PROJECTNAME}.conf run.opt.local: opt CAML_LD_LIBRARY_PATH=src/server src/server/${PROJECTNAME}.opt -c local/etc/${PROJECTNAME}.conf top: cd src/server && ${MAKE} top ### Cleaning ### clean: clean.local ${MAKE} -C src clean clean.local: -rm -f $(PROJECTNAME)-*.tar.gz distclean: clean.local ${MAKE} -C src distclean -make -C doc clean -rm Makefile.config -rm -f *~ \#* .\#* ### Installation #### .PHONY: install partialinstall reinstall uninstall purge.files install.files install.META: $(MAKE) -C src install install.META.byte: $(MAKE) -C src install.byte install.META.opt: $(MAKE) -C src install.opt reinstall: uninstall install reinstall.byte: uninstall install.byte reinstall.opt: uninstall install.opt install: install.META install.files @echo @echo "## Run \"make doc\" and \"make install.doc\" to build and install the ocamldoc." install.byte: install.META.byte install.files install.opt: install.META.opt install.files # BB If install is not run by root but OCSIGENUSER, OCSIGENGROUP is somebody # BB different, make files universally accessible, we cannot chown. INSTALL_CAN_PUT_PERMISSIONS=yes INSTALL_USER_GROUP=-o $(OCSIGENUSER) -g $(OCSIGENGROUP) INSTALL_MOD_660=660 INSTALL_MOD_644=644 INSTALL_MOD_755=755 INSTALL_MOD_770=770 INSTALL_MOD_750=750 ifneq ($(shell id -u), 0) ifneq ($(OCSIGENUSER), $(USERNAME)) INSTALL_CAN_PUT_PERMISSIONS=no endif ifneq ($(shell groups ${USERNAME}|grep -q ${OCSIGENGROUP}; echo $$?), 0) INSTALL_CAN_PUT_PERMISSIONS=no endif endif ifeq ($(INSTALL_CAN_PUT_PERMISSIONS), no) INSTALL_USER_GROUP= INSTALL_MOD_660=666 INSTALL_MOD_644=666 INSTALL_MOD_755=777 INSTALL_MOD_770=777 INSTALL_MOD_750=777 endif install.files: @echo INSTALL_CAN_PUT_PERMISSIONS: ${INSTALL_CAN_PUT_PERMISSIONS} ## Command pipe $(INSTALL) -m ${INSTALL_MOD_755} -d $(dir $(TEMPROOT)$(COMMANDPIPE)) [ -p $(TEMPROOT)$(COMMANDPIPE) ] || \ { mkfifo -m ${INSTALL_MOD_660} $(TEMPROOT)$(COMMANDPIPE); \ if [ "${INSTALL_CAN_PUT_PERMISSIONS}" = yes ]; \ then $(CHOWN) -R $(OCSIGENUSER):$(OCSIGENGROUP) $(TEMPROOT)$(COMMANDPIPE); \ fi; } ## Configuration files $(INSTALL) -m ${INSTALL_MOD_755} -d $(TEMPROOT)$(CONFIGDIR)/conf.d ${INSTALL} -m ${INSTALL_MOD_644} ${PROJECTNAME}.conf.sample $(TEMPROOT)$(CONFIGDIR)/ [ -f $(TEMPROOT)$(CONFIGDIR)/$(PROJECTNAME).conf ] || \ { $(INSTALL) -m ${INSTALL_MOD_644} $(PROJECTNAME).conf.sample \ $(TEMPROOT)$(CONFIGDIR)/$(PROJECTNAME).conf; } -mv $(TEMPROOT)$(CONFIGDIR)/mime.types $(TEMPROOT)$(CONFIGDIR)/mime.types.old ## Log directory $(INSTALL) -m ${INSTALL_MOD_644} src/files/mime.types $(TEMPROOT)$(CONFIGDIR) $(INSTALL) -d -m ${INSTALL_MOD_755} ${INSTALL_USER_GROUP} $(TEMPROOT)$(LOGDIR) ## Static files $(INSTALL) -d -m ${INSTALL_MOD_755} ${INSTALL_USER_GROUP} $(TEMPROOT)$(STATICPAGESDIR) $(INSTALL) -d -m ${INSTALL_MOD_750} ${INSTALL_USER_GROUP} $(TEMPROOT)$(DATADIR) $(INSTALL) -m ${INSTALL_MOD_644} ${INSTALL_USER_GROUP} \ local/var/www/*.html $(TEMPROOT)$(STATICPAGESDIR) $(INSTALL) -d -m ${INSTALL_MOD_755} ${INSTALL_USER_GROUP} \ $(TEMPROOT)$(STATICPAGESDIR)/ocsigenstuff $(INSTALL) -m ${INSTALL_MOD_644} ${INSTALL_USER_GROUP} \ local/var/www/ocsigenstuff/*.png local/var/www/ocsigenstuff/*.css \ $(TEMPROOT)$(STATICPAGESDIR)/ocsigenstuff $(INSTALL) -d -m ${INSTALL_MOD_755} $(TEMPROOT)$(MANDIR) $(INSTALL) -m ${INSTALL_MOD_644} src/files/${PROJECTNAME}.1 $(TEMPROOT)$(MANDIR) uninstall: -make -C doc uninstall -rm -f $(TEMPROOT)$(CONFIGDIR)/$(PROJECTNAME).conf.sample -rm -f $(TEMPROOT)$(MANDIR)/${PROJECTNAME}.1 -rm -f $(TEMPROOT)$(COMMANDPIPE) -rmdir --ignore-fail-on-non-empty $(TEMPROOT)$(CONFIGDIR)/conf.d -rmdir --ignore-fail-on-non-empty $(TEMPROOT)$(CONFIGDIR) -rmdir --ignore-fail-on-non-empty $(TEMPROOT)$(LOGDIR) -rmdir --ignore-fail-on-non-empty $(TEMPROOT)$(DATADIR) -rmdir --ignore-fail-on-non-empty $(TEMPROOT)$(MANDIR) -$(MAKE) -C src uninstall purge: purge.files uninstall purge.files: -rm -f $(TEMPROOT)$(CONFIGDIR)/mime.types $(TEMPROOT)$(CONFIGDIR)/mime.types.old -rm -f $(TEMPROOT)$(CONFIGDIR)/$(PROJECTNAME).conf -rm -f $(patsubst local/var/www/ocsigenstuff/%, \ $(TEMPROOT)$(STATICPAGESDIR)/ocsigenstuff/%, \ $(wildcard local/var/www/ocsigenstuff/*)) -rmdir --ignore-fail-on-non-empty $(TEMPROOT)$(STATICPAGESDIR)/ocsigenstuff -rm -f $(patsubst local/var/www/%, \ $(TEMPROOT)$(STATICPAGESDIR)/%, \ $(wildcard local/var/www/*.html)) -rmdir --ignore-fail-on-non-empty $(TEMPROOT)$(STATICPAGESDIR) install.doc: ${MAKE} -C doc install ### Install logrotate configuration files ### .PHONY: logrotate logrotate: $(INSTALL) -m 755 -d $(TEMPROOT)/etc/logrotate.d cat src/files/logrotate.in \ | sed s%LOGDIR%$(LOGDIR)%g \ | sed s%USER%$(OCSIGENUSER)%g \ | sed s%GROUP%$(OCSIGENGROUP)%g \ | sed s%_COMMANDPIPE_%$(COMMANDPIPE)%g \ > $(TEMPROOT)/etc/logrotate.d/$(PROJECTNAME) ### .PHONY: dist VERSION := $(shell head -n 1 VERSION) dist: DARCS_REPO=$(PWD) darcs dist -d $(PROJECTNAME)-$(VERSION) ### .PHONY: depend depend: ${MAKE} -C src depend ocsigenserver-2.2.0/LICENSE0000644000000000000000000000041312060404165013560 0ustar0000000000000000The Ocsigen application core, and other portions of the official Ocsigen distribution not explicitly licensed otherwise, are licensed under the GNU LESSER GENERAL PUBLIC LICENSE with openssl linking exception -- see the 'COPYING' file in this directory for details. ocsigenserver-2.2.0/CHANGES0000644000000000000000000007041112060404165013553 0ustar0000000000000000==== 2.2.0 (2012-12-07) ==== * Relative filenames when not running as daemon * Small change in ocsigen_lib: encoding of parameters with '~' * fix Ocsigen_http_client.get_url (and other) first "/" was missing (close #311) * Installation: Do not try to chown files to a different user * Fix error on make logrotate * redirectmod: fixing default to permanent (as written in manual) * Minor additions in the API ===== 2.1 ===== ===== 2.0.4 (2012-06-02) ===== * Rename and split Ocsigen_pervasives into Ocsigen_lib and Ocsigen_lib_base * Adapt to lower-case module names in TyXML ===== 2.0.4 (2012-03-08) ===== * Fix licencing problems of staticmod icons * Server: ** Add a notification for connections closed by the client ===== 2.0.3 (2012-01-31) ===== * Staticmod: add a "cache" option * Cgimod: fix use of old $1 notation instead of \1 * Fix problem with etags, post and safari * Add charset to content served as something/xml * Licence of polytable and ocsigen_cache changed from GPL to LGPL ===== 2.0.2 (2011-11-18) ===== * Server: ** The command line options where not parsed when the server was not compiled with -linkall. ** Improve error messages when the log firectory is not present. ** Add a Cross-Origin Resource Sharing extension. * Libraries: ** Allow Ocsigen_sender.{Html5,Xhtml}_content to choose the returned content type (close #53). ** Ocsigen_extensions.get_port: do not return the actual request port if an Host HTTP header is present. ===== 2.0.1 (2011-09-28) ===== * Directory listing: do not use URL encoding for displaying the current path in HTML. ===== 2.0 (2011-09-20) ===== * Small fixes in documentation. ===== 2.0-rc1 (2011-07-15) ===== * Fix installation without dbm * Option to compile without preemptive threads * Get rid of C stubs: they are now included in Ocaml standard library * Log files are opened with the right UID ===== 1.91 (2011-04-08) ===== * Split the ocsigen package in three : tyxml, ocsigenserver and eliom * Rename into ocsigenserver * Revproxy, Accesscontrol: Handling {{{X-Forwarded-For}}} and {{{X-Forwarded-Proto}}} headers * HTTP parser rewrited ===== 1.90 ===== * New module {{{Eliom_client}}} for client/server Eliom programs using js_of_ocaml. * Eliom client: calling a service from client side code. * Eliom: Services taking Caml values as parameters. * Eliom: services sending Caml values. * Eliom: new implementation of forms and links to be compatible with client side programs. * Eliom: sp parameter has been removed (now using Lwt's thread storage) * Eliom: {{{Eliom_predefmod}}} renamed {{{Eliom_output}}} * Eliom: New module {{{Eliom_output.Customize}}} to create your own register functions from another registration module * Eliom: Module {{{Eliom_sessions}}} replaced by {{{Eliom_state}}}, {{{Eliom_request_info}}} and {{{Eliom_config}}}. * Eliom: new implementation of user cookies. * Eliom: Client process cookies. Like usual browser cookies but for one client side process. * Eliom: Client process server side state data. Like session data but for one client side process. * Eliom: Client process session services. * Eliom: Session group data. Like session data but for all sessions in a session group. * Eliom: Session group services. * Eliom: session replaced by a more general concept of "server side state". States have a scope: client process, session or group of sessions. * Eliom: session tables and request cache now deprecated, replaced by //Eliom references// * Eliom client: Possible to call another service without stopping the client side program, with bookmark support and back button support. * New extension Comet to allow server -> client communication. * Eliom: client/server communication channels. * Eliom: client/server reactive programming using React. * Eliom client: syntax extension for separating client and server code. * Eliom: New module Eliom_output.Eliom_appl for registering pages that belong to the same Eliom application. * Eliom client: syntax extension and wrapping/unwrapping mechanism to access server side values in client side code. * Eliom client: Relinking the DOM on client side after loading a (portion of) page. This allows to use directly nodes created on server side in client side code. * Eliom client: XHR redirections for Eliom applications. * Eliom: safe unmarshaling of caml values sent by client side programs * Xhtml: Xhtml5 support * Atom module and Pubsubhubbub * OpenID support * SVG module * Documentation: New tutorial * Documentation: New Eliom manual * //and many other things ...// ===== 1.3.4 ===== * Eliom: Now supporting list of lists in service parameters ===== 1.3.3 (2010-06-13) ===== * Eliom: Fix some typos in Eliom's tutorial stylesheet * Server: Fix usage of {{{accept_n}}} to avoid file descriptor leakage * XHTML: Adding missing elements and attributes in XHTML.M * Cleaning Ocsigen_cache * Eliom: Fixing actions with uploads ===== 1.3.2 (2010-04-30) ===== * Add dummy findlib packages ocsigen.xhtml*, that depend on ocsigen_xhtml*, for compatibility with previous versions. These packages might be removed in a future (major) release. * Port to Lwt 2.1.0 ===== 1.3.1 (2010-04-23) ===== * Split out ocsigen_xhtml findlib package * Configuration file: when no protocol is specified in {{{}}}, listen on IPv6 (if possible) and IPv4 (always) ===== 1.3.0 (2010-01-22) ===== * Server: Each request now has a polymorphic data table (called //request cache//), where you can store the data you want to keep during the whole page generation. * Eliom: actions now return {{{()}}}. Use the request cache to send information to fallbacks. * Eliom: CSRF-safe coservices * Eliom: the number of sessions without group by IP address is now limited * Eliom: efficient implementation of limitation of sessions by groups (or now IP) for large limits * Eliom: the number of anonymous coservices by session is now limited * Eliom: the number of anonymous coservices without session by IP address is now limited * Eliom: now possible to unregister services * Eliom: New (very) experimental module {{{Eliom_obrowser}}} to use Eliom with Obrowser * Eliom: Now possible to have constant parts in suffixes to allow URLS like {{{/param1/something/param2}}} * Eliom: services with optional suffixes * Eliom: form towards a service with suffix: it is now possible to choose whether you want the redirection towards the suffix form or not * Eliom: lists and sets in suffixes * Eliom: Now possible to create services sending custom HTTP header values or customizing the content-type * Eliom: New notion: "Non localized parameters". Can be sent to any service. * Eliom: changing the order of parameters for user type form widgets * Eliom: changing the order of parameters for user type form widgets * Eliom: Eliom_tools.menu and hierarchical_menu now compare the URL strings (was: compare the service) * Eliom: textarea now take a string (was pcdata) * Eliom: The type of the iterator for lists in parameters has changed * Eliom: New options in configuration file to set session timeouts * Server: now possible to give the config file name to reload server command * Server: now possible to do a "graceful shutdown" of the server using the "shutdown" server command * Server: now possible to add custom commands for the command pipe * Server: EXPERIMENTAL now possible to observe HTTP headers before sending the result * Xhtmlpp: the parsing now fails if a quotation for an Xhtml element contains superfluous elements. (This can cause the parsing of previously incorrect code to fail) * Staticmod/Eliom: attempting to access a file whose name contains a NULL character will result in a 403. * Server: HTTP headers containing newlines are now properly escaped. * Server: correct missing xmlns in Xhtml DTD * Server: now send last-modified and etag headers when returning a 403 * Server: Now accepting several requests at a time (as explained in "Accept()able strategies" by Tim Brecht & all) * Rewritemod: more rewriting possibilities (still very basic) * Eliom menus are now more robust when finding which item is active * Fixed handling of incorrectly-sized multipart requests. Thanks to Mauricio Fernandez for noticing the bug * Upload directory and maximum file size can now be configured on a per-site basis * Renamed the field of Ocsigen_http_frame.t * Javascript events support in Xhtml.M ; Thanks to john @ 5070.info for the patch ===== 1.2.2 (2009-10-17) ===== * Add react and lwt.unix to the list of built-in findlib packages ===== 1.2.1 (2009-09-26) ===== * Lwt 2.0 compatibility: ** Adapt to Lwt.t/Lwt.u splitting ** fix Makefile to deal with lwt.unix findlib package * Fix ocsipersist-dbm Makefile * Fix for pcre-ocaml 6.0.0 * Fix typo regarding --stubdir in configure script ===== 1.2.0 (2009-03-25) ===== * Native code version now compiled by default * Now possible to link extensions and Eliom modules statically, for example to use a native code server on platforms where native dynlink is not supported * Server: Partial requests implemented (Range HTTP header) * Build C stubs into a shared library so that bytecode executables may be not linked in custom mode; new {{{--stubdir}}} option in {{{configure}}} script * Eliom: non-attached services now called "named non-attached coservices" and created using {{{Eliom_services.new_coservice'}}} with the optional {{{name}}} parameter * Eliom: now possible to create named attached coservices using the optional {{{name}}} parameter * Eliom: now possible to write libraries for Eliom sites, loaded inside {{{}}}, but not generating any page * Eliom and server: EXPERIMENTAL now possible to make extensions that can use Eliom's data * XHTML.M's pretty printer: now possible to set the DOCTYPE manually * Eliom: now possible to set manually the DOCTYPE when registering an XHTML.M service * Redirectmod and Revproxy: now possible to do more complex rewriting * Accesscontrol: add support for {{{}}} and {{{}}} conditions * Config file: {{{aliases}}} attribute now called {{{hostfilter}}} * Revproxy and Redirectmod: now possible to filter on server, port and protocol * New extension extendconfiguration to allow dynamic changes in the configuration (mimetypes, charsets, followsymnlink, directory listing, ...) * Server: new module {{{LocalFiles}}} factoring the common parts for sending static files (with Eliom and staticmod for example), while checking that the files can safely be sent. * Now possible to use XHTML pretty printers without Ocsigen, using the {{{xhtmlpretty.cma}}} library * Add {{{Ocsigen_lib.register_exn_printer}}}, better error messages * Now possible to use the same configuration file in native code and in bytecode (.cmo/.cma filenames are internally translated to .cmxs) * Signature of Ocsigen_extensions.register_extension is now more complete and more lightweight * Userconf: the options set in the local .userconf file are kept in the enclosing {{{}}} tag * Server: possibility to ignore or to supply an alternative command-line * Ocsigen_http_client: timeout when the distant server does not exists * OCaml versions < 3.10 are not supported anymore * Extensions are now much more strict w.r.t. the syntax of configuration files * Staticmod: accessing a directory for which indexing is disallowed returns an error 404 (instead of a 403 previously) ===== 1.1.0 (2008-07-15) ===== * Lwt removed (now distributed separately) * {{{XHTML.M}}} pretty printer: fixing pretty printing of empty tags (for browser compatibility) * Eliom_duce: New pretty printer for XHTML fixing pretty printing of empty tags * Eliom: secure sessions, secure services, (absolute) https links/forms, and using secure cookies * Eliom: Adding special "void action", without any parameters * Eliom: {{{Eliom_predefmod.Redirections}}} now called {{{Eliom_predefmod.String_redirection}}}, and adding new module {{{Eliom_predefmod.Redirection}}} that use GET services without parameters as data type. * Eliom and XHTML.M: Small changes of types in interfaces * Eliom: New session ID generator * Eliom: Adding types {{{int32}}} and {{{int64}}} for parameters and forms * Eliom: Adding functions {{{lwt_get_form}}} and {{{lwt_post_form}}} for creating forms using cooperative functions * Eliom and Staticmod: now possible to give GET parameters to static pages * Eliom: Bugfix in Makefiles for native code version * Eliom forms: Adding missing types in interfaces * Eliom_tools: current page is now optional in menus * Userconf and Eliom: there was a bug when loading both Eliom and Userconf together * Reverse Proxy: Now sending content length when available * Web server: The default content-type is now {{{application/octet-stream}}} * Creating and installing a cma file for all Ocsigen libraries not installed elsewhere * Ocsipersist-dbm: fixing bug when removing data * Deflatemod: fixing memory leak * And small bugfixes in XHTML.M, Eliom, ... ===== 1.0.0 (2008-04-01) ===== * Config file: findlib integration * Eliom and Ocsigen: changing namespace convention for modules * Access control: simplification of config file syntax * Eliom: Allowing (module dependent) parameters for registration functions * New xhtml output without pretty printing * Web server: Bugfix in HTTP/1.0 with keep-alive * Reverse proxy: Bugfix GET parameters were wrong * Reverse proxy: Bugfix memory consumption when the connection was closed by client ===== 0.99.5 (2008-01-11) ===== * Revproxy: pipelining of requests * Access control: simplification, generalization of filters and syntax changes in config file * Eliom: EXPERIMENTAL session groups * Eliom: non-attached services * Eliomduce: new functor {{{SubXhtml}}} for creating registration modules * Eliomduce: new module Eliomducetools with same features as Eliomtools, but for Eliomduce * Web server: now possible to split the configuration file into several files using the {{{}}} option. * Web server: now possible to have {{{}}} option inside another {{{}}} in configuration files, and the the first one is optional * Web server: EXPERIMENTAL user configuration files, with restricted possibilities (for security reasons) * Web server: IPv6 support * Deflatemod: now possible to filter on file extensions * Eliom: new option to keep GET non-attached parameters or not when doing a POST form towards a non-attached coservice. * Eliom: bugfix path of session cookies * Eliom: bugfix POST non-attached coservices called from a page with non-attached GET parameters were not found. * Lwt: now catching exceptions raised after timeouts * Cgimod: bufixes in path handling * Web server: bugfix - some files were not closed ===== 0.99.4 (2007-11-21) ===== * Ocsigen: Changes in the extension mechanism. The extensions are not tried in the order in which they are loaded any more, but in the order in which the options are specified for each site in the configuration file. * New experimental extension: access control * A few small enhancements ** Eliom: internal cookie management rewritten (+ bugfix) ** Eliom: Small changes in function names ** Eliom: now retry all extensions after actions (not only Eliom) ** Eliom: cleaning {{{Eliommod}}} interface ** Ocsigen server: Internal changes in server (removing "send" functions, debug messages lazier) ** Lwt: Adding a few functions in {{{Lwt_chan}}} interface ** Staticmod: Allowing to personalize default error pages for HTTP errors ** Ocsipersist (dbm and sqlite): better handling of database errors ** XHTML: New pretty printer for xhtml using streams (up to 15% speedup on requests) ** XHTML: Allowing any value for {{{}}} rel attribute (for example {{{shortcut icon}}}). ===== 0.99.3 (2007-11-07) ===== * Ocsigen: New module Deflatemod to compress data before sending to the browser. * Ocsigen: EXPERIMENTAL - New module Revproxy (reverse proxy). * Eliom: New session mechanism, with the ability to name the sessions and thus have several sessions for the same site. * Eliom: Now possible to have one site with session inside a subdirectory of another one. * Lwt: New module {{{Lwt_timeout}}} to implement timeouts, new module {{{Lwt_chan}}}, new module {{{Lwt_mutex}}}, new function {{{Lwt_unix.abort}}} to make all threads waiting on a file descriptor abort with an exception. * Ocsigen: New implementation of lots of Web server internals. Better management of Ocsigen's streams, file descriptors, exceptions, timeouts ... * A lot of enhancements and bug fixes: ** Eliom: Single {{{}}} in forms, by Stéphane Dalmas * EXPERIMENTAL: The Web server is now extensible. It means that you can add modules (like Apache modules) for generating pages, filters of requests, extensions of config files. For now there are two modules, one for static pages, and one for dynamic pages. The only changes for users is that they need to dynlink staticmod.cmo and ocsigenmod.cma from the configuration file. The syntax of config file for modules and staticdir also changed. * It is now possible to specify the encoding of characters for each sub-site. * Now usable with Ocamlnet 2.2 or 1.1.2. * EXPERIMENTAL: If OCamlDuce is installed on your system, you can now use it to do the type-checking of your pages (see the documentation). Warning: This is broken with OCamlDuce 3.09.2 patch level 2. You need at least OCamlDuce 3.09.3 patch level 1. * Removing Ocsimore from the default distribution. That version of Ocsimore is not supported anymore. Ocsimore has been rewritten from scratch by Piero Furiesi. ===== 0.5.1 (2006-12-14) ===== * Bugfix Konqueror: Multipart forms with now work correctly with Konqueror * Bugfix Internet Explorer: getting around a bug of Internet Explorer while displaying page * Bugfix NetBSD: Makefile * Bugfix Debian for HPPA, Mips, Alpha: Makefile * Bugfix: preemptive.cmi was missing in the installation directory * Adding manpage (S. Mimram) * Adding logrotate configuration * Daemon mode: adding setsid and redirect stdout/stderr to /dev/null. Closing stdin. ===== 0.5.0 (2006-11-23) ===== * HTTP 1.1 improved (HEAD, ETag, keep-alive implemented, If-Modified-Since, ...) * HTTPS support * Pipelining of requests * Server can listen on several ports * Multiple servers: you can now define several servers in the config file. * Virtual hosts: filtering on hostnames/ports (with wildcards) * Asynchronous file upload with multipart support * Large file transfer improved. * MIME types are now parsed from a file * Changes in the syntax of config file * Accessors for server parameters. Use ({{{get_user_agent sp}}}) instead of {{{sp.user_agent}}}. * Page generation is now using {{{Lwt}}} cooperative threads, to make it possible the generation of several pages at the same time. Practically, add {{{Lwt.return}}} before the page you want to send, and use cooperative input/output functions. * Typing errors of parameters are now catchable. * {{{static_dir}}} is now a function * Most of global references have been removed. You now need to give sp as parameter to {{{register_for_session}}}, {{{static_dir}}}, {{{close_session}}}, etc. * Links and forms now take {{{server_params}}} instead of {{{current_url}}} ({{{sp}}} is shorter than {{{sp.current_url}}}) * EXPERIMENTAL: Use of preemptive threads for non cooperative libraries ({{{detach}}} function). * EXPERIMENTAL: The {{{Ocsigen}}} module now contains a functor {{{Make}}} to allows the use of several ways of generating XHTML. The default way (using {{{XHTML.M}}} or the syntax extension) can be used by doing {{{open Ocsigen.Xhtml}}}. There is also an untyped xhtml generation module called {{{Ocsigen.Text}}}. * EXPERIMENTAL: extension of forms. * Reorganisation of the code * Bugfixes in makefiles * Bugfix: escaping of strings in xhtml with syntax extension (thanks to David Mentre) ===== 0.4.0 (2006-06-06) ===== * Full reimplementation of the core using Generalized Algebraic Data Types, * {{{_int}}}, {{{_string}}}, etc. are now called {{{int}}}, {{{string}}}, etc. * The type {{{_http_params}}} is now called {{{server_params}}}, * Services functions now all take 3 parameters, one for server parameters, one for GET parameters, and one for POST parameters. Note that {{{**}}} is used to create **pairs** and not tuples. * The {{{a}}} and {{{post_form}}} functions now take a fix number of parameters, correponding to GET parameters. * //URLs// are now called //services//, * //state URLs// are now called //auxiliary services//, * {{{register_post_url}}} does not exist anymore. use {{{register_service}}} instead (idem for all other {{{register_post_*}}} functions). * Changes for prefix URLs * Small changes for actions * EXPERIMENTAL: sums, bool and list types for services and forms * small bugfixes ===== 0.3.27 (2006-04-27) ===== * Change the way to get server parameters ===== 0.3.26 ===== * Load unsafe modules * Other small changes ===== 0.3.25-2 (2006-02-24) ===== * Small bugfix for 64 bits processors * bugfix for static files * {{{action_link}}} is now called {{{action_a}}} ===== 0.3.24 (2006-02-07) ===== * More documentation * Change types {{{internal_url}}} and {{{external_service}}} to use polymorphic variants ===== 0.3.23 (2006-02-07) ===== * Better handling of static files and "403 Forbidden" message ocsigenserver-2.2.0/README0000644000000000000000000000767112060404165013450 0ustar0000000000000000Ocsigen server ------------------------------------------------------------------ Requirements: ============= Compilers: * ocaml and camlp4 (need version >= 3.12.1) * a C compiler (tested with gcc-4.4.5) Libraries: * findlib * react (tested with 0.9.3) * ocamlssl (tested with 0.4.6) * lwt (need version >= 2.4.2, with react and ssl support) * ocamlnet (tested with 3.6, with netstring and netsys) * pcre-ocaml (tested with 6.2.5) * cryptokit (tested with 1.6) * ocaml-text (tested with 0.6) * tyxml (need version 2.2) * ocamlsqlite3 (tested with 2.0.2) OR * dbm (tested with 1.0) Optional libraries: * camlzip (tested with 1.04) Ocsigenserver supports both dbm and sqlite3. Note well, that dbm isn't part of the distribution of OCaml>=4 any more, but an external package. If OCaml 3.12.1 and the needed libraries (findlib/react/lwt...) are not installed on your computer and not available on your favorite linux distribution, you may use the Ocsigen bunble GODI to install them automatically, see: http://ocsigen.org/install#bundle http://godi.camlcity.org/godi/index.html To run the native code version of ocsigen server, you may need to generate cmxs files for the libraries you need, if they are not included in your distribution, see: http://ocsigen.org/ocsigenserver/manual/misc ------------------------------------------------------------------ Build instructions: =================== * run "sh configure [options]" to generate 'Makefile.config' - For the full list of options, run "sh configure --help". * verify that 'Makefile.config' suits to your needs. * run "make" to compile * run "make install" as root to install * [optional] run "make logrotate" as root to install logrotate configuration files in /etc/logrotate.d * [optional] run "make doc" to build the ocamldoc * [optional] run "make install.doc" as root to install the ocamldoc * run "make uninstall" to uninstall (almost) everything * run "make purge" to uninstall everything (even configuration files) ------------------------------------------------------------------ Local testings: =============== * run "make run.local" of "make run.opt.local" in the ocsigen source directory. * open http://localhost:8080/index.html in your browser * if it does not work, look at the logs (see 'local/var/log/' in the ocsgigen source directory) or run ocsigen with options -v or -V (verbose and debug mode). ------------------------------------------------------------------ Authors: ======== Vincent Balat (project leader, Web server, Ocsigenmod, Eliom, Eliom client, Staticmod, XHTML syntax extension, documentation, Ocsimore, extension mechanism, Ocsidbm, Ocsipersist with DBM, ...) Jérôme Vouillon (Lwt, Web server, js_of_ocaml, O'Closure, ...) Boris Yakobowski (Ocsimore, module Extendconfiguration, Ocsigen server...) Benjamin Canou (O'Browser) Jérémie Dimino (Lwt) Raphaël Proust (Ocsforge, Eliom client, Comet) Stéphane Glondu (Configuration file, Findlib integration, access control, HTTP authentication, Debian package, ...) Gabriel Kerneis (XHTML syntax extension for OCaml 3.10, Ocsipersist with SQLite, CGI module, forms in Eliom, deflatemod, ...) Denis Berthod (HTTP protocol, Web server) Grégoire Henry (safe unmarshalling of client data) Pierre Chambart (Comet) Jaap Boender (Ocsimore, NetBSD and Godi packages) Gabriel Scherer (Macaque) Gabriel Cardoso (O'Closure) Jean-Henri Granarolo (Ocsforge) Simon Castellan (HTML5, OpenID, SVG) Piero Furiesi (Ocsimore) Thorsten Ohl (most of the functions generating XHTML (xML and xHTML modules)) Mauricio Fernandez (Xhtmlcompact, static linking of extensions and Eliom modules) Nataliya Guts (Web server, HTTPS) Archibald Pontier (Atom, Pubsubhubbub) Jérôme Velleine (CGI module) Charles Oran (O'Closure) Pierre Clairambault (Lwt_lib, Gentoo package, configure script, ...) Cécile Herbelin (HTML5, Benchmarks) ocsigenserver-2.2.0/COPYING0000644000000000000000000006543712060404165013627 0ustar0000000000000000This program is released under the LGPL version 2.1 (see the text below) with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. As a special exception to the GNU Library General Public License, you may also link, statically or dynamically, a "work that uses the Library" with a publicly distributed version of the Library to produce an executable file containing portions of the Library, and distribute that executable file under terms of your choice, without any of the additional requirements listed in clause 6 of the GNU Library General Public License. By "a publicly distributed version of the Library", we mean either the unmodified Library, or a modified version of the Library that is distributed under the conditions defined in clause 3 of the GNU Library General Public License. This exception does not however invalidate any other reasons why the executable file might be covered by the GNU Library General Public License. GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! ocsigenserver-2.2.0/Makefile.options0000644000000000000000000000236012060404165015710 0ustar0000000000000000 BYTEDBG := OPTDBG := THREAD := ifeq "$(DEBUG)" "YES" BYTEDBG += -g OPTDBG += -g endif ifeq "$(ANNOT)" "YES" BYTEDBG += -dtypes OPTDBG += -dtypes endif ifeq "$(PROFILING)" "YES" BYTEDBG :=p ${BYTEDBG} OPTDBG += -p endif ifeq "$(PREEMPTIVE)" "YES" THREAD += -thread endif ## ${SERVER_PACKAGE} is not only used to build the 'ocsigenserver' executable ## but also to generate src/baselib/ocsigen_config.ml and src/files/META ifeq "$(PREEMPTIVE)" "YES" LWT_EXTRA_PACKAGE:=lwt.extra endif BASE_PACKAGE := lwt SERVER_PACKAGE := lwt.ssl \ ${LWT_EXTRA_PACKAGE} \ netstring \ findlib \ cryptokit \ tyxml \ tyxml.parser \ dynlink \ SERVER_SYNTAX := tyxml.syntax \ INITPACKAGE := \"$(shell ${OCAMLFIND} query -p-format -recursive \ -separator '\";\"' ${SERVER_PACKAGE})\"; \ \"${PROJECTNAME}.commandline\"; \ \"${PROJECTNAME}.polytables\"; \ \"${PROJECTNAME}.cookies\"; \ \"${PROJECTNAME}.baselib\"; \ \"${PROJECTNAME}.http\"; \ \"${PROJECTNAME}\"; \ ocsigenserver-2.2.0/VERSION0000644000000000000000000000000612060404165013621 0ustar00000000000000002.2.0 ocsigenserver-2.2.0/boring0000644000000000000000000000127012060404165013760 0ustar0000000000000000\.cmi$ \.cmx$ \.cmo$ \.cma$ \.cmxa$ \.cmxs$ \.o$ \.a$ \.annot$ ~$ ^Makefile.config$ ^src/baselib/ocsigen_config.ml$ ^src/http/http_lexer.ml$ ^src/http/http_parser.ml$ ^src/http/http_parser.mli$ ^src/server/ocsigenserver$ ^src/server/ocsigenserver.opt$ ^src/extensions/ocsipersist.mli$ ^src/extensions/ocsipersist-dbm/ocsidbm$ ^src/extensions/ocsipersist-dbm/ocsidbm.opt$ ^src/extensions/ocsipersist-dbm/ocsipersist.mli$ ^src/files/META$ ^src/files/META.ocsigenserver$ ^src/extensions/files/META$ ^src/extensions/files/META.ocsigenserver_ext$ ^ocsigenserver.conf(|.opt).sample$ ^local/var/log/(access|errors|warnings).log$ ^local/var/lib/ocsidb$ ^local/etc/ocsigenserver.conf(|.opt)$ ^doc/api-htmlocsigenserver-2.2.0/configure0000644000000000000000000003347312060404165014473 0ustar0000000000000000#! /bin/sh # Adapted from the ocamlnet configure script. ####################################################################### # Helpers: test_binary () { # $1: the name of the binary echo -n "Checking for $1 ... " if which "$1" >/dev/null 2>/dev/null; then echo "found" return 0 else echo "not found" return 1 fi } fail_binary () { echo echo "Required command '$1' not found!" [ -z "$2" ] || echo "===> $2" exit 1 } check_binary () { # $1: the name of the binary # $2: an URL if test_binary $1; then return else fail_binary $1 $2 fi } test_library () { # $1: the name of the library (findlib) echo -n "Checking for $1 ... " if ocamlfind query $1 >/dev/null 2>/dev/null; then echo "found" return 0 else echo "not found" return 1 fi } fail_library () { echo echo "Required library $1 not found!" [ -z "$2" ] || echo "===> $2" exit 1 } check_library () { # $1: the name of the library (findlib) # $2: an URL if test_library $1; then return else fail_library $1 "$2" fi } ####################################################################### # Defaults #--- Options --- # value 0: off # value 1: on # defaults: set_defaults () { name="ocsigenserver" enable_natdynlink=1 enable_debug=0 enable_annot=0 with_sqlite=1 with_camlzip=1 with_dbm=1 with_preempt=1 prefix="/usr/local" bindir="" logdir="" libdir="" mandir="" docdir="" sysconfdir="/etc/\$(PROJECTNAME)" staticpagesdir="/var/www/\$(PROJECTNAME)" uploaddir="/tmp" datadir="/var/lib/\$(PROJECTNAME)" temproot="" root="" ocsigen_user="www-data" ocsigen_group="www-data" } set_defaults my_pwd=`dirname $0` version=`head -n 1 $my_pwd/VERSION` full_pwd=`pwd` ######################################################################## ## Option parsing ## Which options exist? eoptions for enable/disable, woptions for with/without: eoptions="debug annot natdynlink" woptions="sqlite dbm camlzip preempt" print_options () { for opt in $eoptions; do e="o=\$enable_$opt" eval "$e" uopt=`echo $opt | sed -e 's/_/-/g'` if [ $o -gt 0 ]; then echo " --enable-$uopt" else echo " --disable-$uopt" fi done for opt in $woptions; do e="o=\$with_$opt" eval "$e" uopt=`echo $opt | sed -e 's/_/-/g'` if [ $o -gt 0 ]; then echo " --with-$uopt" else echo " --without-$uopt" fi done case "$bindir" in "") bindir2="/bin";; *) bindir2=$bindir;; esac case "$logdir" in "") logdir2="/var/log/";; *) logdir2=$logdir;; esac case "$libdir" in "") libdir2="\$(shell \${OCAMLFIND} printconf destdir)";; *) libdir2=$libdir;; esac case "$mandir" in "") mandir2="/share/man/man1";; *) mandir2=$mandir;; esac case "$docdir" in "") docdir2="/share/doc/\$(PROJECTNAME)";; *) docdir2=$docdir;; esac echo " --name $name" echo " --root $root" echo " --temproot $temproot" echo " --prefix $prefix" echo " --ocsigen-user $ocsigen_user" echo " --ocsigen-group $ocsigen_group" echo " --bindir $bindir2" echo " --libdir $libdir2" echo " --sysconfdir $sysconfdir" echo " --mandir $mandir2" echo " --docdir $docdir2" echo " --logdir $logdir2" echo " --staticpagesdir $staticpagesdir" echo " --uploaddir $uploaddir" echo " --datadir $datadir" echo " --commandpipe $commandpipe" } usage () { set_defaults cat <<_EOF_ >&2 usage: ./configure [ options ] --enable-debug, --disable-debug Enable/disable debug output --enable-annot, --disable-annot Enable/disable .annot files generation --enable-natdynlink, --disable-natdynlink Enable/disable nativecode dynamic linking --with-sqlite, --without-sqlite Compile ocsipersist with SQLite for persistent storage --with-dbm, --without-dbm Compile ocsipersist with DBM for persistent storage --with-camlzip, --without-camlzip Compile deflatemod extension, requires camlzip --name=NAME The name of the server binary and ocamlfind package. --ocsigen-user=NAME The name of the ocsigen user --ocsigen-group=NAME The name of the ocsigen group --root=DIR Root directory to install the package, every other options are relatives to this path. (usually /) --temproot=DIR Temporary root directory to install the package (usually always "" but for package makers) --prefix=DIR Subdirectory where to install binaries and libs (usually /usr or /usr/local) --bindir=DIR Install binaries into this directory --libdir=DIR Common directory for Ocsigen server's libraries --sysconfdir=DIR Create configuration files in this directory --mandir=DIR Install man pages in this directory --docdir=DIR Install documentation in this directory --logdir=DIR Use this directory for Ocsigen's logs --datadir=DIR The directory for data written by the server --staticpagesdir=DIR Install default static pages in this directory --uploaddir=DIR By default, files will be uploaded in this directory --commandpipe=FILE The name of the named pipe used to command the server Defaults are: _EOF_ print_options >&2 exit 1 } check_eopt () { for x in $eoptions; do if [ "$x" = "$1" ]; then return 0 fi done echo "Unknown option: $1" >&2 exit 1 } check_wopt () { for x in $woptions; do if [ "$x" = "$1" ]; then return 0 fi done echo "Unknown option: $1" >&2 exit 1 } echo "\n\tWelcome to Ocsigen server, version $version.\n" >&2 while [ "$#" -gt 0 ]; do case "$1" in --enable-*) opt=`echo "$1" | sed -e 's/--enable-//' -e 's/-/_/g'` check_eopt "$opt" eval "enable_$opt=2" shift ;; --disable-*) opt=`echo "$1" | sed -e 's/--disable-//' -e 's/-/_/g'` check_eopt "$opt" eval "enable_$opt=-1" shift ;; --with-*) opt=`echo "$1" | sed -e 's/--with-//' -e 's/-/_/g'` check_wopt "$opt" eval "with_$opt=2" shift ;; --without-*) opt=`echo "$1" | sed -e 's/--without-//' -e 's/-/_/g'` check_wopt "$opt" eval "with_$opt=-1" shift ;; --root) root="$2" shift shift ;; --temproot) temproot="$2" shift shift ;; --prefix) prefix="$2" shift shift ;; --bindir) bindir="$2" shift shift ;; --logdir) logdir="$2" shift shift ;; --libdir) libdir="$2" shift shift ;; --mandir) mandir="$2" shift shift ;; --docdir) docdir="$2" shift shift ;; --staticpagesdir) staticpagesdir="$2" shift shift ;; --sysconfdir) sysconfdir="$2" shift shift ;; --uploaddir) uploaddir="$2" shift shift ;; --datadir) datadir="$2" shift shift ;; --name) name="$2" shift shift ;; --ocsigen-user) ocsigen_user="$2" shift shift ;; --ocsigen-group) ocsigen_group="$2" shift shift ;; --commandpipe) commandpipe="$2" shift shift ;; *) echo "Unknown option: $1" >&2 usage esac done case "$bindir" in "") bindir="$prefix/bin";; esac case "$logdir" in "") logdir="/var/log/\$(PROJECTNAME)";; esac case "$libdir" in "") libdir="\$(shell \${OCAMLFIND} printconf destdir)";; *) libdir=$root$libdir esac case "$mandir" in "") mandir="$prefix/share/man/man1";; esac case "$docdir" in "") docdir="$prefix/share/doc/\$(PROJECTNAME)";; esac case "$commandpipe" in "") commandpipe="/var/run/\$(PROJECTNAME)_command";; esac check_binary ocamlc "See: http://www.ocaml.org/" check_ocamlversion () { echo -n "Checking for OCaml version... " version=`ocamlc -version` echo $version n1=`echo $version | sed 's/^\([0-9][0-9]*\)\..*$/\1/'` n2=`echo $version | sed 's/^[0-9][0-9]*\.\([0-9][0-9]*\)\..*$/\1/'` # n3=`echo $version | sed 's/^[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\)\..*$/\1/'` if [ $n1 -eq 3 ] && [ $n2 -lt 12 ]; then echo; echo "OCaml >= 3.12 is required. Aborting."; exit 1; fi } check_ocamlversion check_binary ocamlfind "See: http://projects.camlcity.org/projects/findlib.html" check_library react "See: http://erratique.ch/software/react" check_library ssl "See: http://sourceforge.net/projects/savonet/files/ocaml-ssl" check_library lwt "See: http://ocsigen.org/lwt" check_library lwt.unix "Missing support for 'unix' in lwt." check_library lwt.react "Missing support for 'react' in lwt." check_library lwt.ssl "Missing support for 'ssl' in lwt." #check_library lwt.extra "Missing support for 'extra' in lwt." check_library netstring \ "See ocamlnet: http://projects.camlcity.org/projects/ocamlnet.html" check_library netsys \ "See ocamlnet: http://projects.camlcity.org/projects/ocamlnet.html" check_library pcre "See: http://ocaml.info/home/ocaml_sources.html" check_library cryptokit "See: http://pauillac.inria.fr/~xleroy/software.html#cryptokit" check_library tyxml "See: http://ocsigen.org/tyxml/" # Check Sqlite3 case "$with_sqlite" in 1) if test_library sqlite3; then with_sqlite=1; else with_sqlite=0; fi;; 2) check_library sqlite3 "See: http://ocaml.info/home/ocaml_sources.html";; esac # Check dbm if [ "$with_dbm" -gt 0 ]; then if test_library dbm; then echo -n elif [ "$with_dbm" -gt 1 ]; then fail_library dbm else with_dbm=0 fi fi # Check Camlzip if [ "$with_camlzip" -gt 0 ]; then if test_library camlzip; then zipname=camlzip elif test_library zip; then zipname=zip elif [ "$with_camlzip" -gt 1 ]; then fail_library camlzip "https://forge.ocamlcore.org/projects/camlzip/" else with_camlzip=0 fi fi # Check Lwt.extra if [ "$with_preempt" -gt 0 ]; then if test_library lwt.extra; then echo -n elif [ "$with_preempt" -gt 1 ]; then fail_library lwt.extra "Missing support for 'extra' in lwt." else with_preempt=0 fi fi if [ "$with_sqlite" -eq 1 ] && [ "$with_preempt" -eq -1 ]; then echo "preemptive threads are needed by sqlite, enable it with -with-preempt" exit 1 fi # Check rlwrap or ledit if test_binary rlwrap; then rlwrap=rlwrap elif test_binary ledit; then rlwrap=ledit else rlwrap= fi ###################################################################### # Summary echo echo "Effective options:" print_options echo #Convert 0/1 values to YES/NO if [ $enable_debug -gt 0 ] ; then enable_debug="YES" else enable_debug="NO" fi if [ $enable_annot -gt 0 ] ; then enable_annot="YES" else enable_annot="NO" fi if [ $enable_natdynlink -gt 0 ] ; then enable_natdynlink="YES" else enable_natdynlink="NO" fi if [ $with_dbm -gt 0 ] ; then with_dbm="YES" else with_dbm="NO" fi if [ $with_sqlite -gt 0 ] ; then with_sqlite="YES" else with_sqlite="NO" fi if [ $with_camlzip -gt 0 ] ; then with_camlzip="YES" else with_camlzip="NO" fi if [ $with_preempt -gt 0 ] ; then with_preempt="YES" else with_preempt="NO" fi ocamlinclude=`ocamlfind printconf stdlib` ###################################################################### # Write Makefile.conf echo "Writing Makefile.config" cat <<_EOF_ > $my_pwd/Makefile.config # The name of the server, the ocamlfind package, etc. PROJECTNAME := $name #### External binaries #### OCAMLFIND := ocamlfind OCAMLLEX := ocamllex OCAMLMKLIB:= ocamlmklib CHOWN := chown CHMOD := chmod INSTALL := install CC := gcc # optionnal RLWRAP := $rlwrap ### Options ### # User who will run Ocsigen server (not root) (eg, for debian, www-data) # (This user must exist on your system) OCSIGENUSER := $ocsigen_user # group who will run Ocsigen server (not root) (eg, for debian, www-data) # (This group must exist) OCSIGENGROUP := $ocsigen_group # Do you want deflatemod? YES/NO (requires camlzip) CAMLZIP:=$with_camlzip # The name of camlzip package: CAMLZIPNAME:=$zipname # Do you want ocsipersist with sqlite? YES/NO OCSIPERSISTSQLITE:=$with_sqlite # Do you want ocsipersist with dbm? YES/NO OCSIPERSISTDBM:=$with_dbm # Do you want preemptive threads ? YES/NO PREEMPTIVE:=$with_preempt # Do you want debugging information (-g) ? YES/NO DEBUG:=$enable_debug # Do you want annot files (-dtypes) ? YES/NO ANNOT:=$enable_annot # Profiling (always put NO here - but if you want to debug ocsigen): PROFILING:=NO ### Paths ### # Temporary root directory to install the package (usually always "" but for package makers) TEMPROOT := $temproot # Do you want to use dynamic linking for native code? YES/NO NATDYNLINK:=$enable_natdynlink # The directory for ocsigen server (binary): BINDIR := $root$bindir # The directory for ocsigen manpage: MANDIR := $root$mandir # Where to install the libraries LIBDIR := $libdir # ocsigen's logs: LOGDIR := $root$logdir # Config files: CONFIGDIR := $root$sysconfdir # Where to put static pages: STATICPAGESDIR := $root$staticpagesdir # Where to put dynamic data: DATADIR := $root$datadir # Default directory for file upload: UPLOADDIR := $root$uploaddir # Where to put Ocsigen documentation: DOCDIR := $root$docdir # The name of the named pipe used to command the server COMMANDPIPE := $root$commandpipe # The source directory SRC := $full_pwd include \$(SRC)/Makefile.options _EOF_ ###################################################################### # Finish echo echo echo "Please check Makefile.config." echo echo "You can now compile Ocsigen Server by invoking:" echo echo " make" echo " make doc" echo echo "You may want to test the server before installation:" echo echo " make run.local" echo " make run.opt.local" echo echo "Finally, if you want system-wide install, (become root if needed and) do:" echo echo " make install" echo " make install.doc" echo ocsigenserver-2.2.0/predist0000644000000000000000000000020512060404165014147 0ustar0000000000000000#!/bin/sh chmod a+rx configure if [ -d "$DARCS_REPO" ]; then darcs changes --last 100 --repodir "$DARCS_REPO" > CHANGES.darcs fi ocsigenserver-2.2.0/doc/0000755000000000000000000000000012060404165013322 5ustar0000000000000000ocsigenserver-2.2.0/doc/Makefile0000644000000000000000000000164712060404165014772 0ustar0000000000000000include ../Makefile.config include ../src/Makefile.filelist OCAMLDOC := ${OCAMLFIND} ocamldoc ODOC_WIKI := odoc_wiki.cma LIBS := -package lwt,tyxml,ssl \ ${addprefix -I ../src/, baselib http server extensions } doc: api-html/index.html api-html/index.html: indexdoc $(addprefix ../src/,$(DOC) $(PLUGINS_DOC)) mkdir -p api-html $(OCAMLDOC) ${LIBS} -d api-html -intro indexdoc -html $(addprefix ../src/,$(DOC) $(PLUGINS_DOC)) wikidoc: api-wiki/index.wiki api-wiki/index.wiki: indexdoc $(addprefix ../src/,$(DOC) $(PLUGINS_DOC)) mkdir -p api-wiki $(OCAMLDOC) ${LIBS} -d api-wiki -intro indexdoc -colorize-code \ -i $(shell ocamlfind query wikidoc) -g ${ODOC_WIKI} \ $(addprefix ../src/,$(DOC) $(PLUGINS_DOC)) install: ${INSTALL} -d -m 755 $(TEMPROOT)$(DOCDIR) $(INSTALL) -m 644 api-html/* $(TEMPROOT)$(DOCDIR) uninstall: -rm -Rf $(TEMPROOT)$(DOCDIR) clean: -rm -f api-html/* api-wiki/* -rm -f *~ \#* .\#* ocsigenserver-2.2.0/doc/indexdoc0000644000000000000000000000072612060404165015047 0ustar0000000000000000{1 Ocsigen server - API reference} {2 Persistent data, writing in the logs, configuration file extension, polymorphic tables} {!modules: Ocsigen_lib Ocsigen_messages Ocsigen_parseconfig Polytables Ocsigen_cache Ocsipersist Ocsigen_config } {2 Extending Ocsigen} {!modules: Ocsigen_extensions Ocsigen_local_files Ocsigen_headers Ocsigen_senders Ocsigen_http_frame Ocsigen_http_client Ocsigen_http_com Ocsigen_stream Ocsigen_comet Authbasic } {2 Indexes} {!indexlist} ocsigenserver-2.2.0/doc/manual-wiki/0000755000000000000000000000000012060404165015540 5ustar0000000000000000ocsigenserver-2.2.0/doc/manual-wiki/cgimod.wiki0000644000000000000000000001062612060404165017674 0ustar0000000000000000=CGImod= CGImod is a module for running CGI scripts with ocsigen. It is in beta version. Submit your bugs, feature wishes (or any enhancement/mistake in the documentation) [[site:trac/|here]]. == CGImod == ===What is cgimod? Cgimod is a module for Ocsigen that allows you to run CGI scripts on your server. It is also the only way to run PHP scripts on Ocsigen, through php5-cgi. ===What do I need to use cgimod? You need a working Ocsigen installation. If you want to run PHP scripts, you need php5-cgi too. ===How do I use cgimod? First, load the extension in the configuration file: {{{ }}} Alternatively, if you do not want to use findlib, you need to load cgimod explicitly: {{{ }}} ===How do I configure cgimod? You can set the timeout value for CGI scripts globally, using: {{{ }}} Next, you have to specify which scripts you wish to execute, in which host/site, and how. There are several ways to do that. Choose one which suits your needs and stick with it --- it's very easy to get lost so keep things as simple as you can! + The easy way: useful if you just want a "cgi-bin" directory. {{{ }}} When someone reaches {{{http://yoursite/whatever/cgi-bin/exec.sh}}}, then {{{/usr/lib/cgi-bin/exec.sh}}} is executed. + The regexp way: useful if you want to specify the name of the script to be executed. {{{ }}} This is the same example using regexps. The "regexp" part matches the url, "dir" is the physical directory containing the scripts and "script" is the name of the script to execute. Here, "\1" makes reference to the first (parenthesized) subexpression in "regexp" (and of course you can use "\2", "\3", for the second, third, etc.). //Warning: until recently, the syntax was $1, $2, etc.// //End your regexps with {{{$}}} if you want them to match the full URL.// Here is another example: {{{ }}} Note: [[http://blitiri.com.ar/p/darcsweb/|Darcsweb]] is a clean web interface for darcs, written in Python. + The exec way: useful for PHP (and other script languages) {{{ }}} Just like the previous one, but you can execute the script through some interpreter (here, php5-cgi) instead of launching it directly. ===How do I set my own environment variables? Use {{{}}} inside {{{}}}. Here is an example for setting up trac: {{{ }}} ===Limitations The [[http://www.w3.org/CGI/|CGI spec]] is very short and ambiguous. We tried to follow it as closely as we could, but this was not enough. Some environment variables are expected by most scripts but absent from the spec, and some variables present in the spec are very mysterious ({{{PATH_TRANSLATED}}} for example). We did our best --- don't hesitate to fill a bug report in case of problems. The regexp part is quite intricate and some mysterious bugs happen from time to time for some users. Once again, report any reproductible problem! Morever, cgimod does not support FastCGI, which makes it barely usable under heavy load (particularly for PHP). //Page written by Gabriel Kerneis// ocsigenserver-2.2.0/doc/manual-wiki/quickstart.wiki0000644000000000000000000000646012060404165020625 0ustar0000000000000000<
> >> == Installation == The easier way to install Ocsigenserver is to use the installation tool from your distribution. Ocsigenserver is available for example in Debian, Gentoo, FreeBSD... If your distribution is not shipping any package we recommend to use Godi to install Ocsigen and all its dependencies (including OCaml) or to use the [[wiki(2):install|Ocsigen bunble]]. It is known to work on Linux, MacOS, FreeBSD, Solaris (but has not been tested on Windows). If you need to install it from source, [[wiki:install|download the package]], and read instructions in the README file. == Launch the server == Distributions usually provide a default configuration file called {{{/etc/ocsigenserver/ocsigenserver.conf}}} (and possibly other configuration files in {{{/etc/ocsigenserver/conf.d}}}). If you are root on your system, and if no other server is running on port 80, just launch the server using the configuration script from your distribution, usually: {{{ /etc/init.d/ocsigenserver start }}} or just type {{{ ocsigenserver }}} A default Web site should be available at URL {{{http://localhost/}}}. If another Web server is running on port 80, just change the port number in the main configuration file. If you want to run Ocsigen as an unprivileged user, you need to adapt the configuration file to your rights. An example of configuration file for users with restricted rights is given here. Copy it in a file and adapt it to your needs. Use a port greater than 1024, for example 8080. Then run: {{{ ocsigenserver -c //your_config_file// }}} and go to the URL {{{http://localhost:8080/}}} to see the default Web site. == Personalizing my configuration == Have a look at the page <> to learn how to personalize the configuration file and adapt it to your needs. The main extensions you need for basic use are: ;<> :for serving static pages, ;<> :if you need to restrict the access to the sites, ;<> :if you want to use dynamic Web sites written in OCaml with Eliom, ;<> :if you want to use dynamic Web sites written as CGI scripts (for example one way to run PHP pages), ;<> :if you want to redirect some requests to another Web server, like Tomcat or Apache (another way to run PHP pages). == Writing my own dynamic sites with Eliom == Eliom Web sites are OCaml compiled modules (.cmo or .cma, possibly .cmxs with native code version) that are loaded dynamically from the configuration file. The first section of the first part of Eliom's tutorial explains how to write an "Hello World" with Eliom. == If something goes wrong == If something goes wrong, first have a look in the logs to see if there is an error message. The directory of logs is set in the configuration file (usually {{{/var/log/ocsigenserver}}}). If you can't find the solution in the documentation, [[https://sympa.mancoosi.univ-paris-diderot.fr/wws/info/ocsigen|register to our mailing list]] and ask your question here. If you find a bug, a mistake in the documentation (even a small one), or if you want to make a suggestion, [[site:trac|register to our bug tracking system]] and fill a ticket. ocsigenserver-2.2.0/doc/manual-wiki/outputfilter.wiki0000644000000000000000000000260512060404165021176 0ustar0000000000000000=Outputfilter= Outputfilter allows to filter the output and rewrite some part of it (for example headers) before sending it to the client. It is in beta version. Submit your bugs, feature wishes (or any enhancement/mistake in the documentation) [[site:trac|here]]. For now it only allows to rewrite HTTP or add headers. == Configuration To use this extension, first load it from the configuration file: {{{ }}} === Rewrite headers When you want to rewrite one header (after having generated a page), do something like: {{{ }}} Here we rewrite the content of the header location (this line is useful when you are using the reverse proxy). === Add headers When you want to add a header (after having generated a page), do something like: {{{ }}} This will add the header "X-Frame-Options" with content "SAMEORIGIN" to the generated page. The replace attribute is optionnal. * If replace is "true", the previous headers are replaced. * If replace is "false", it will be added even if there was a header with the same name. * If not set, it will be added only if there was no header with the same name. (This line is usefull when you want to avoid clickjacking)ocsigenserver-2.2.0/doc/manual-wiki/staticmod.wiki0000644000000000000000000000503712060404165020421 0ustar0000000000000000=Staticmod= Staticmod is a module allowing to serve static pages (files). ==Configuration ===Basics To use that extension, first load it from the configuration file: {{{ }}} Then configure your hosts as in this example: {{{ }}} Note that when running Ocsigenserver as a daemon, a relative path is interpreted starting at ##/##. ===Rewriting URLs You may also want to filter or rewrite URLs, as in this example, that allows user to have their home pages: {{{ }}} {{{regexp}}} is a regular expression using PERL syntax (PCRE). Actually, for user's pages, it is better to do: {{{ }}} {{{$u(toto)}}} will be replaced by the home directory for user toto. You can also specify the option root as in {{{ }}} This will wave all symlinks checks above the directory {{{u(\1)/public_html}}}. This option is not permitted inside userconf files. ===Catching HTTP errors Here is an example on how to set a default error page for all 40x errors: {{{ }}} {{{code}}} is a regular expression (here matching 400, 401 etc.). {{{regexp}}} is optional (matches the URL path). Note that if you want to catch errors from all sites, you need to put this configuration in a separate at the end of your configuration file. ===Max-age and Expires Here is an example on how to set up the {{{Cache-control: max-age}}} and {{{Expires}}} HTTP headers: {{{ }}} The {{{cache}}} argument is given in seconds. (1 month in the example) When the {{{cache}}} argument is {{{0}}} or {{{no}}}, the {{{Cache-control: no-cache}}} header is sent. ===Staticmod and userconf (version 1.2.0 and greater) Staticmod is authorized inside userconf files, but all paths specified by dir or dest must be relative, and cannot contain "{{{/../}}}" or end by "{{{/..}}}". The relative paths are concatenated with the result of evaluating the attribute localpath of userconf. ===Other options See also module extendconfiguration for some options, like the ability to follow symlinks or to display directories. In particular, the old syntax {{{readable="readable"}}} is no longer available in staticmod (but can be simulated by the option {{{listdirs}}} of extendconfiguration). ocsigenserver-2.2.0/doc/manual-wiki/revproxy.wiki0000644000000000000000000000470312060404165020327 0ustar0000000000000000=Revproxy= Revproxy is a reverse proxy for Ocsigen. This module allows to transmit some requests to another Web server using the HTTP or HTTPS protocol. For example if you want to use Ocsigen together with another Web server (Apache, Tomcat, etc. or even another Ocsigen). ===Configuration To use the reverse proxy, first load the extension from the configuration file: {{{ }}} Then configure your hosts as in these examples: {{{ }}} regexp is a regular expression using PERL syntax (PCRE). The destination URL is built from dest, where \i corresponds to the i-th part between parenthesis of the regular expression (was $i in older versions). Add the attribute {{{keephost="keephost"}}} if you want to send the original {{{Host}}} header to the distant server. Otherwise, it will be computed from {{{dest}}}. Add the attribute {{{nopipeline="nopipeline"}}} if for some reason you don't want to pipeline reverse proxy's requests. With that option, the reverse proxy will open a new connection for all requests, instead of trying to reuse connections. You probably don't need that, but if you do, please contact us to tell us what is the problem. Thank you! You probably also need to rewrite locations in the output (if the server is doing redirections). For example: {{{ }}} Note that if you are using ocsigen behind a reverse proxy handling X-Forward-For and X-Forward-Proto headers ( like the revproxy module ), you should allow ocsigen to use those informations, using accesscontrol extension {{{ }}} ===Technical details * The reverse proxy does no caching for now. * The reverse proxy does pipeline the requests for server it trusts for pipelining. But current trusting criteria are probably too strong. They will probably evolve soon. The old syntax was (before 1.2): {{{ }}} ocsigenserver-2.2.0/doc/manual-wiki/userconf.wiki0000644000000000000000000000344612060404165020260 0ustar0000000000000000=Userconf= Userconf allows users to have their own configuration files. It is in beta version, and requires some cooperation from other extensions to disallow unsafe options (for example, in version 1.2 it is not possible to have Eliom sites for users). == Configuration == To use this extension, first load it from the configuration file: {{{ }}} Then, if you want to allow users to have their own configuration files, put in your hosts something like the lines below. (Unless you understand Userconf well, you probably just want to use those lines as is.) {{{ }}} The configuration file specified in {{{conf}}} will be parsed for each request matching the regular expression {{{regexp}}}. Here, as in staticmod, {{{$u(toto)}}} is the Unix home directory of user {{{toto}}}. Extensions inside the user configuration file will behave as though executed in a {{{}}} tag of root {{{prefix}}}, while {{{url}}} is used to match the remainder of the url (the path {{{prefix/url}}} must be equal to {{{regexp}}}). Finally, the option {{{localpath}}} is used to specify the files the user is allowed to send: in userconf mode, all the paths used in <> must be relative, and are appended after the evaluation of {{{localpath}}}. The syntax of user configuration files is usually the same as the one of the part between {{{}}} and {{{}}} in the main configuration file. However, the extensions can choose to disallow some options that are unsafe in user mode, or forbid user mode entirely. See their individual documentation for details. ocsigenserver-2.2.0/doc/manual-wiki/deflatemod.wiki0000644000000000000000000000655312060404165020542 0ustar0000000000000000=Deflatemod= Deflatemod is in beta version. Submit your bugs and feature wishes [[http://ocsigen.org/trac|here]]. == Usage == === What is deflatemod? Deflatemod is a module for Ocsigen that allows you to deflate content, using HTTP/1.1 mechanism. It supports gzip as well as deflate. === What do I need to use deflatemod? You need the camlzip library by Xavier Leroy and a working Ocsigen installation. === How do I use deflatemod? First, load the extension in the configuration file: {{{ }}} Alternatively, if you do not want to use findlib, you need to: * load camlzip {{{ }}} * then load deflatemod {{{ }}} === How do I configure deflatemod? Again, the options are in ocsigen.conf. You can set a few options globally, in the extension tag: * the compress level: from 0 (no compression) to 9. The higher, the better compression rate you achieve. Conversely, the lower, the faster it is. Default is 6. * the buffer size: default is 1024. You shouldn't need to change this one, but you can still try a few other values (any feedback welcomed). For example: {{{ }}} Next, you '''have to''' specify which pages you whish to deflate, in which host/site (otherwise, deflatemod won't compress anything). See next question to do that. === I want to deflate only some files. Is it possible? To some extent, yes. You can '''exclude''' some files and deflate every other, according to their mime-type or extension (''ie.'' the end of the '''url''' in fact, not really the file name on the disk). Here is an example: {{{ .tar.gz image/* }}} As you can see, you must put the tag at the very end of the element. Indeed, Ocsigen deals with extensions sequentially, so if you put or other elements '''after''' , they won't be compressed. Conversely, you can choose to deflate '''only''' some files, based on their mime-types or extension: {{{ text/html }}} Warning: you can use only one contenttype tag! So you must choose, either the "only" or the "allbut" way. Limitations: you cannot filter by directory or by filename extension (remember extension is the url's extension). If you really need it, please fill a bug report or send a patch. == Technical questions == === How can I choose the content-encoding (gzip or deflate)? You can't. Deflatemod follows the RFC and chooses automatically the right encoding, based upon Accept-encoding header sent by the client. === Does deflatemod support transfert-encoding? No, it doesn't. Content-encoding is definitely a better solution, providing end to end compression at the content-level. === How does deflatemod deal with the content-length header? As it cannot compute the new content-length, deflatemod uses chunked-encoding. This is the recommended way to go. //Page written by Gabriel Kerneis// ocsigenserver-2.2.0/doc/manual-wiki/misc.wiki0000644000000000000000000000255412060404165017366 0ustar0000000000000000=Miscellaneaous= ==Native code version Ocsigen can be used either in bytecode or in native code (requires OCaml >= 3.11). The same configuration file can be used for both versions, but in order to use the native code version, you need to create a {{{.cmxs}}} file for each site or extension you want to load at startup. For example: {{{ ocamlopt -shared -linkall -o site.cmxs site.cmxa }}} Note that, if your site or extension depends on external library, you also need a .cmxs for each library. If they are not included in your distribution, you may build them without recompiling the whole library. For example: {{{ cd $(ocamlfind query sqlite3) && sudo ocamlopt -shared -linkall -o sqlite3.cmxs sqlite3.cmxa cd $(ocamlfind query lwt) && sudo ocamlopt -shared -linkall -o lwt-react.cmxs lwt-react.cmxa }}} ==Improving performance If you are using persistent data using Sqlite or or Dbm, for example if you are using Ocsipersist or Eliom persistent data, it is possible to improve performance by using a dedicated partition for the database (typically in directory {{{/var/lib/ocsigen}}}). Do not use NFS for that directory. This is due to the fact that these databases are calling the fsync system call at each request, which is very slow on journalized file systems. It is also not recommended (for performance) to use NFS for static pages (including user personal pages). ocsigenserver-2.2.0/doc/manual-wiki/launching.wiki0000644000000000000000000000145012060404165020375 0ustar0000000000000000<
> To run the server, use the command {{{ocsigenserver}}}. It has the following options: {{{ -c, --config Alternate configuration file. -d, --daemon Daemon mode (detach the process). This is the default when there are more than 1 process. -help, --help Show summary of options. -p, --pidfile Specify a file where to write the PIDs of the servers. -s, --silent Silent mode (error messages go in errors.log only). -v, --verbose Verbose mode. -V , --veryverbose Very verbose mode (debug). --version Show version of program. }}} One initialization script should be provided by your distribution for launching the server automatically each time you launch the computer. ocsigenserver-2.2.0/doc/manual-wiki/wrapping.wiki0000644000000000000000000001473412060404165020265 0ustar0000000000000000= Wrapping = == Basics == The server side of Eliom can communicates to the client other kind of data than the raw XML contents of the pages. The wrapper mecanism is used to allow the browser side to access to the contents of variables declared on server side. For instance when we write <> the contents of the {{{text}}} variable is sent along the page for the client code to access it. Server side, when <> is executed, the variable {{{text}}} is registered into a table and an id is associated to it. This table will containt all the datas references by variables annotated with % in a page, and will be sent marshalled to the client. On client side the id will be used to retrieve {{{text}}}. Since all datas are sent in one table, if a variable is referenced multiples times, it will be sent only once, and sharing will be preserved: <> This code will display 42. After being sent, the client and server side values are distinct: the server side version of {{{a}}} won't be modified by the client side affectation and conversly the client side value won't change if {{{a}}} is changed later on server side. == Special types == === Specific wrappers === Usualy, client and server side values are represented the same way, and it is sufficient to only copy their content ( marshalled ) to the client. But certain types can't be transmitted this easilly: for instance, services. Those values must be transformed before marshalling: We need for this to use specific wrappers. This wrapping mechanism is defined in <>. Before sending, the values goes throught <> wich transform marked values. A value marked is a value which have as its last field a value of type <>. For instance <> but not <> A wrapper is created by the <> function. It takes a function as parameter wich will be called to transform the value during the wrapping. There is also a special wrapper <> wich does nothing. It is usefull to stop calling the wrapper on a value: If there is still a wrapper in a value after its transformation, it will be called another time, potentially leading to an infinite loop. For instance < int | Value of int type wrapped_type = ( v * wrapped_type) let wrapper = Eliom_wrap.create_wrapper (function | Value i,wrapper -> Value i, Eliom_wrap.empty_wrapper | Fun f,wrapper -> Value (f ()), Eliom_wrap.empty_wrapper) let v = ( Fun (fun () -> 1), wrapper ) let _,(v', empty_wrapper) = Eliom_wrap.wrap v>> At that time {{{v"}}} will be {{{Value 1}}}. Notice that <> does not enforce the output type of the wrapping function to be the same as the input type: Eliom_wrap is to be use with much caution! Do not use it if you don't understand how it works, it may lead to unpredictable segmentation faults and corrupted memory. === Specific unwrappers === We may also want to modify the value at unwrapping time. It is the case for instance of the type <>. On server side, it is transformed to a service, and the service is transformed to a function wich call it on client side. To do this, we use specific unwrappers. A value is marked by an unwrapper the same way as with wrappers: A value is marked if its last field is a value of type <>. An unwrapper does not contain functions, it only contains an identifier of type <>. On client side a function can be registered to transformed values marked with an id: <>. < i + j ) let id = Eliom_client_unwrap.id_of_int marked_int_id let () = Eliom_client_unwrap.register_unwrapper id marked_int_unwrapper }} >> When the client will receive the value {{{v}}} it will transform it to {{{fun j -> j + 10}}} Thoses id are globals, take care of not using an existing one, you could for instance use the name of you type hashed as id. Consider those below 1024 to be reserved to Eliom internals. == Eliom specific types == The Eliom types that are marked are: * <> transformed to <> (but the client side representation) * <> transformed to <> * <> transformed to {{{ 'a -> unit }}} * <> transformed to {{{ 'a React.E.t }}} * <> transformed to <> * <> transformed to <> (but the client side representation) === Additionnal notes for XML === Client and server side behaviour differ: * On server side XML is a tree wich allow sharing. i.e. it can be an acyclic graph. * On client side XML use the internal browser representation wich doesn't allow sharing This can affect the behaviour for instance when doing: <> when the value was sent, the node {{{a}}} was copied 2 times and only the second one is referenced by {{{%a}}}: the node {{{c}}} will be added as a child to the second {{{a}}} not to the first one. ocsigenserver-2.2.0/doc/manual-wiki/redirectmod.wiki0000644000000000000000000000235312060404165020731 0ustar0000000000000000=Redirectmod= Redirectmod is a module allowing to define HTTP redirections from Ocsigen's configuration file. Submit your bugs and feature wishes (or any enhancement/mistake in the documentation) [[site:trac|here]]. To use that extension, first load it from the configuration file: {{{ }}} Then configure your hosts as in these examples: {{{ }}} The syntax of regular expression is PCRE's one. //Warning: the syntax recently changed from {{{$i}}} to {{{\i}}}.// According to the RFC of the HTTP protocol, dest must be an absolute URL. By default, the redirection is permanent. For temporary redirection, use: {{{ }}} Old syntax was (before Ocsigen 1.2): {{{ }}} ocsigenserver-2.2.0/doc/manual-wiki/lwtoc.wiki0000644000000000000000000000067712060404165017567 0ustar0000000000000000=Cooperative threads Ocsigen is not using the usual preemptive threads model to handle simultaneaous requests. Instead of this, it is based on a model of //cooperative threads//. Ocsigen's cooperative threads are implemented in monadic style by Jérôme Vouillon, which makes them really easy to use. If you want to write an extension for Ocsigen or a Web site with Eliom, you must use this thread model. See [[wiki(21):|Lwt's documentation]]. ocsigenserver-2.2.0/doc/manual-wiki/comet.wiki0000644000000000000000000000571212060404165017541 0ustar0000000000000000= Comet = //Available from Ocsigen server version 1.90// This extension provides an easy way for the server to send messages to the connected clients. It can be used as such or wrapped in a high-level module. Such a wrapping is provided in Eliom. The whole implementation is in the {{{extensions/comet.ml}}} file, the corresponding interface is in the associated mli file. ==User interface== The user interface for the extension is quite simple. It is divided into two distinct modules, namely {{{Channels}}} and {{{Security}}}. The former allow channel creation and tampering while the latter gives a few functions to interrupt normal execution flow. The interfaces of both modules are pretty straight forward. Documentation is provided for each function in the mli file. The {{{Channels}}} module important functions are: {{{create}}} for channel creation, {{{write}}} to actually send a message and {{{get_id}}} to get a channel identifier. Detailed description is available in the mli file. The {{{Security}}} module is accessible from Ocsigen's command pipe. The different commands are{{{deactivate}}}, {{{activate}}} and {{{set_timeout}}}, the meaning of each of them along with their arguments are given in the mli file. ==Specifications and client implementation== If not used with the Eliom high-level wrap, it is up to the developer to create a compatible client code. This task requires one to know the protocol used by the extension. It is the client's responsibility to open a connection indicating the channels it want to be registered to. This is acheived by making an Xml Http Request (XHR) with the following characteristics: the content-type header field must read {{{application/x-ocsigen-comet}}}, the {{{registration}}} POST parameter must be included with a list of channel as value. The said list should be made of channel identifiers separated by newline ({{{\n}}}) character and encoded according to the escape Javascript primitive. Following is an example of list for registration: {{{ randomstringblahblahtotofoocoucoubardfhkqjsdkjdfgqf nicely%20encoded%20channel%20identifier foooobaarfoofoo }}} When the server receives an XHR with a comet specific content-type it decodes the registration list, and waits for one of them to be written upon. Then it either times out sending an empty answer or answers with a list of values written on channels. The said list is newline separated and contains channel identifier-value tuples. The reserved value {{{"ENDED_CHANNEL"}}} marks channels that no longer exists on the server (their identifier is no longer relevant). An example of answer the server can make to the example client XHR is: {{{ randomstringblahblahtotofoocoucoubardfhkqjsdkjdfgqf:ENDED_CHANNEL nicely%20encoded%20channel%20identifier:42%2043%2044 }}} In this example, the first channel identifier is no longer associated to any channel on the server, the second channel receives the encoded string value {{{"42 43 44"}}} and the third channel hasn't been written upon. ocsigenserver-2.2.0/doc/manual-wiki/eliom.wiki0000644000000000000000000000020612060404165017530 0ustar0000000000000000=Eliom= //Eliom// is a powerful framework for programming Web applications in OCaml. See the full documentation [[wiki(15):|here]]. ocsigenserver-2.2.0/doc/manual-wiki/authbasic.wiki0000644000000000000000000000400212060404165020364 0ustar0000000000000000=Authbasic= This module implements Basic HTTP Authentication as described in RFC 2617. It can be used to add an authentication layer to sites with no built-in authentication (e.g. static files). Beware, passwords are transmitted in cleartext with this scheme, so the medium should be secured somehow (by e.g. SSL). This module implements only the HTTP-related part of the protocol, and is meant to be extended with various authentication plugins. A very naive one is provided as an example. See the developer's documentation if you want to make your own one. In order to use it, you must first add the following line to your ocsigen.conf: {{{ }}} This extension defines one action, {{{}}}, and one authentication plugin, {{{}}}. ==The {{{}}} action== To add an authentication layer to a site, add the following lines before the actions defining the restricted part of your site: {{{ ... }}} The realm attribute is some name identifying the protected resource. The client is expected to send the same authentication info to all pages protected with the same realm on the same hostname. When a request containing the right authentication token arrives, this action doesn't do anything (and therefore grants access). If the authentication info is missing, an HTTP 401 Unauthorized is immediately returned (no other extension is tried) to request the client to provide this authentication token. On most interactive browsers, this is done by popping up a dialog box asking the user for a login and a password. The {{{}}} element expects one child element, specifying which authentication plugin to use. ==The {{{}}} plugin== To protect a resource with some fixed login and password given in the configuration file, you can use the {{{}}} plugin. Here is a self-contained example: {{{ }}} ocsigenserver-2.2.0/doc/manual-wiki/extend.wiki0000644000000000000000000001347112060404165017722 0ustar0000000000000000 =Writing an extension for Ocsigen server= <
> This page describes how to extend Ocsigen's server. This can be used to create new ways to generate pages (like Apache modules), to filter and change the requests (for example, rewriting of URLS), to extend the syntax of the configuration file. Remember to program your extensions in cooperative way using Lwt! These features have been introduced in Ocsigen 0.6.0. The extension mechanism will be improved in the future to fit better the needs of developers. As very extensions have been written for now, all this is somewhat experimental, and we look forward to feedback from developers about missing features or problems. //Ocsigen is a collaborative project. Contributions are welcome. For example a proxy, a fastCGI module~ ...// ===Filtering the requests or writing a module to generate pages You can take as example the files {{{extensiontemplate.ml}}} or {{{staticmod.ml}}} from Ocsigen's distribution. The type of request is {{{Extensions.request_info}}} (have a look at it in the interface of the module {{{Extensions}}}). Each extensions loaded in the configuration file tries to handle the request and returns something of type {{{Extensions.answer}}}. If the page is not found by the extension ({{{Ext_not_found}}}), the following one will try to handle the request. If the page is found, the answer is {{{Ext_found r}}} where {{{r}}} has type {{{Extensions.result}}}. An extension can also modify the request before giving it to the next one (answer {{{Ext_continue_with of Extensions.request_info}}}). To write such an extension, just write a cmo or cma, and use the function Extensions.register_extension to register you extension. This function takes four functions as parameters: * a function that will be called for each virtual server, generating two functions: **one that will be called to generate the pages (it has type {{{string option -> request_info -> answer Lwt.t}}}), where the {{{string option}}} is the encoding for characters possibly specified in the configuration file, **one to parse the configuration file (see next section). *a function that will be called at the beginning of the initialisation phase (if you need to initialize your extension, otherwise, put the identity). *a function that will be called at the end of the initialisation phase of the server (if you need to do something here, otherwise the identity function). *a function that will create an error message from the exceptions that may be raised during the initialisation phase, and raise again all other exceptions. That function has type {{{exn -> string}}}. Use the raise function if you don't need any. Example (from {{{staticmod.ml}}}): {{{ let _ = register_extension ((fun _ -> let page_tree = try find hostpattern with Not_found -> let n = new_pages_tree () in add hostpattern n; n in (gen page_tree, parse_config page_tree)), start_init, end_init, raise) }}} While writing extensions, be very careful about site reloading. The initialisation phase will start again at each reloading, and the function you register will be called for each virtual at each reloading. ===Filtering the outputs It is also possible to create extensions that will filter the output of the server (for example to compress it). It is very similar to the previous one. Basically, use {{{Extensions.register_output_filter}}} instead of {{{Extensions.register_extension}}}. Have a look at the file {{{deflatemod.ml}}} for an example. ===Extending the configuration file ====Extending the configuration file for an extension The parsing of Ocsigen's configuration file is using a very basic xml parser (module {{{Simplexmlparser}}}). The function to be registered by the {{{Extensions.register_extension}}} function takes two parameters: the path of the web site and the xml subtree. {{{ let parse_config path = function Simplexmlparser.Element ("tag", attr, content) -> ... (* Do what you want here *) | Simplexmlparser.Element _ -> raise (Extensions.Bad_config_tag_for_extension t) | _ -> raise (Extensions.Error_in_config_file "(my extension)") }}} The module {{{Parseconfig}}} defines functions to parse strings or sizes (in bytes, GB etc). ====Giving parameters to an extension //Warning: This is experimental. Please report your experience if you use it.// Extensions may take parameters in the configuration file. During the loading of the extension, the function {{{Extensions.get_config ()}}} returns the xml tree between {{{}}} and {{{}}} (or {{{}}} and {{{}}}). Write a parser for that tree. ===Catching the request before it is fully read For some extensions of the Web server, it is necessary to catch the request before it has been fully read (especially before the body of the request has been read). For example it is the case if you want to write a (reverse) proxy. //Warning: This is experimental. Please report your experience if you use it.// ===Observing the headers to be sent by the server //Warning: This is experimental. Please report your experience if you use it.// If you want, for example, to log the headers of outgoing HTTP frames, use the function {{{Ocsigen_http_com.set_result_observer}}}. It takes as parameter a function of type {{{(Ocsigen_http_frame.Http_header.http_header -> string -> unit Lwt.t)}}}, the {{{string}}} being the set of headers already pretty-printed. ===Adding new commands for the server If you want to add your own commands for the server command pipe, do something like: {{{ let () = Ocsigen_extensions.register_command_function ~prefix:"yourextensionname" (fun s c -> match c with | ["mycommand"] -> ... | _ -> raise Ocsigen_extensions.Unknown_command) }}} ocsigenserver-2.2.0/doc/manual-wiki/staticlink.wiki0000644000000000000000000000463512060404165020602 0ustar0000000000000000=Static linking= ==Compiling Ocsigen without native dynlink support If Ocaml's native dynamic linking is not supported by your platform (or if you are using caml 3.10), it is possible to build a native code version of Ocsigen without dynlink support, by giving the option {{{--disable-natdynlink}}} to the {{{configure}}} script. ==Creating and running a statically linked executable By default, Ocsigen is linking extensions dynamically (and also Eliom modules). From version 1.2, it is also possible to create a standalone program, in which all modules are statically linked. This allows to use native code even on platforms where Ocaml's native dynamic linking is not supported. It also makes possible to create self-contained Ocsigen applications that can be run without needing a full OCaml environment at runtime (with no Ocaml dependencies). To create a standalone server executable that includes all the extensions you need, use a command like: {{{ ocamlfind ocamlopt -package ocsigenserver.server,ocsigenserver.ext.ocsipersist-sqlite -package eliom,ocsigenserver.ext.staticmod othermodule.cmx server_main.cmx -o myserver -linkpkg -thread }}} Do not forget to link {{{server_main.cmx}}} to launch the server's main loop. If you do not want to read the commandline when the server starts, add {{{-predicates nocommandline}}} to this command line. Alternatively, you can provide a package containing the command-line you want to be parsed (with the same signature as {{{baselib/ocsigen_getcommandline.mli}}}), then make the appropriate changes in {{{files/META.in}}}. If you still want to use dynamic linking, add option {{{-linkall}}} while compiling, otherwise the compiler may remove some modules from packages {{{cma/cmxa}}}. All statically linked extensions need to be initialized from the configuration file. To do that, replace the lines like: {{{ }}} or {{{ }}} by {{{ }}} This will not load a new module, but merely initializes one which must have been linked statically. Thus it is possible to give configuration options to extensions as usual. //Warning:// If you are using Eliom with static linking, the registration of your services must be delayed until the configuration file is read. See how to do that <>. ocsigenserver-2.2.0/doc/manual-wiki/rewritemod.wiki0000644000000000000000000000112112060404165020601 0ustar0000000000000000=Rewritemod= Rewritemod allows to rewrite the requests.It is available from Ocsigen version 1.2. It is really basic for now, but for most uses you don't need it, as staticmod and others already have sophisticated configuration features. It is in beta version. Submit your bugs and feature wishes [[site:trac|here]]. To use that extension, first load it from the configuration file: {{{ }}} Then configure your hosts as in this example: {{{ }}} The syntax of regular expression is PCRE's one. ocsigenserver-2.2.0/doc/manual-wiki/cors.wiki0000644000000000000000000000443512060404165017401 0ustar0000000000000000=Cross-Origin Resource Sharing= = The CORS extension = This extension is used to allow other servers to serve pages requesting datas on that one using XmlHttpReauest. It adds headers to the server response and handle preflight OPTIONS requests to indicate if some client side code has the right to access resources. See the [[http://www.w3.org/TR/cors/|CORS specifications]] for more informations. In order to use it, you must first add the following line to your {{{ocsigenserver.conf}}}: {{{ }}} == config == The extension is activated by the {{{}}} tag. The extension must be used after the extension serving the content (like eliom or staticmod) since it adds headers to already answered requests. The attributes of the cors tag are: * {{{max_age}}}: this is a integer telling the browser how long the preflight information are valid: it prevents doing the OPTIONS requests. This option adds the {{{Access-Control-Max-Age}}} header. * {{{credentials}}}: Adds the {{{Access-Control-Allow-Credentials}}} header to the preflight request. * {{{exposed_headers}}}: This is a comma separated list of header names. This is the list of user defined headers accessible from the client. it Adds the {{{Access-Control-Expose-Headers}}} header. * {{{methods}}}: This is a comma separated list of method names. If there is a requested method header in the preflight request, it adds the {{{Access-Control-Allow-Methods}}} header if it match, otherwise there is no cors header added. Note that the extension should be used with <> to limit the application having access to the resources. This is done by checking the "origin" header. == Examples == * minimal configuration allowing all requests with no credentials. {{{ }}} * A configuration allowing access to an eliom application at path "eliom_site", from localhost:8081 {{{
}}} ocsigenserver-2.2.0/doc/manual-wiki/accesscontrol.wiki0000644000000000000000000001101612060404165021266 0ustar0000000000000000=Accesscontrol= Accesscontrol is in beta version. Submit your bugs and feature wishes [[site:trac/|here]]. = The accesscontrol extension = If you want to restrict access for some sites, this extension is for you. This is still quite experimental, so don't hesitate to test it and report bugs! In order to use it, you must first add the following line to your {{{ocsigen.conf}}}: {{{ }}} Here, we call ''actions'' elements that can be put in a site configuration. Actions include {{{}}}, {{{}}}, etc. This extension defines several actions. == The {{{}}} action == It takes as children a condition followed by a {{{}}} element and possibly an {{{}}} element. When a request reaches an {{{}}}, if the condition evaluates to true, then the whole {{{}}} behaves as if it had been replaced by the contents of the {{{}}} element, otherwise it behaves as if it had been replaced by the contents of the {{{}}} element. A missing {{{}}} is considered as an {{{}}} with no children. === Conditions === Atomic conditions: * {{{}}}: {{{value}}} can be an IPv4 or IPv6 address, with an optional {{{/n}}} suffix indicating a subnet mask; true if the IP address of the client matches {{{value}}}. * {{{}}}: {{{value}}} can be a number; true if the request was received on port {{{value}}}. (new in 1.2) * {{{}}}: true if the request was received by HTTPS. (new in 1.2) * {{{
}}}: true if the header of the request has a {{{name}}} field that matches {{{regexp}}}. * {{{}}}: true if the HTTP method ({{{GET}}}, {{{POST}}}, etc) of the request is {{{value}}}. * {{{}}}: {{{value}}} can be {{{HTTP/1.0}}} or {{{HTTP/1.1}}}; true if the protocol specified in the request is {{{value}}}. * {{{}}}: true if the part of the path concerning the site matches {{{regexp}}}. Combining conditions (all their children must be conditions): * {{{...}}}: true if all enclosed conditions are true (true if empty). * {{{...}}}: true if one of the enclosed conditions is true (false if empty). * {{{...}}}: true if the enclosed condition is false (there must be exactly one enclosed condition). == Other actions == * {{{}}}: stops immediately (does not try other sites) with a 404 error. * {{{}}}: stops immediately (does not try other sites) with a 403 error. * {{{...}}}: tries the enclosed actions if some action has already answered. * {{{...}}}: tries the enclosed actions if noone has answered so far. {{{code}}} is an optional regexp matching the current error code. * {{{}}}: stops parsing current site. If the page has been found, answer. If not, try next site. ''from Ocsigen 1.2'' * {{{}}}: stops parsing current host. If the page has been found, answer. If not, try next host. ''from Ocsigen 1.2'' * {{{}}}: stops parsing configuration file (answers now whether the page has been found or not). ''from Ocsigen 1.2'' * {{{}}}: if there is an X-Forwarded-For header in the request, the informations of the request are changed to match the announced ip. * {{{}}}: if the X-Forwarded-Proto header is set to https (http), the connection is considered as secured (unsecure) even if the connection is not in ssl (is in ssl). == Examples == * I want some actions to handle only requests from localhost, for users using the browser Konqueror: {{{
}}} * I want some actions to handle requests that respect at least one of the following conditions: * they belong to the subnet 123.123.123.0/24, * or they want to access a page beginning with the letter 'c', * or they are not doing a {{{GET HTTP}}} request: {{{ }}} * I want to deny access to 192.168.0.0/24 except 192.168.0.42, and to 192.168.99.0/24: {{{ }}} ocsigenserver-2.2.0/doc/manual-wiki/extendconfiguration.wiki0000644000000000000000000001075712060404165022516 0ustar0000000000000000 =Extendconfiguration= Extendconfiguration allows to configure some options of the server inside a {{{}}} tag. (This extension is available starting from Ocsigen ≥ 1.2) ==Loading the extension To use that extension, first load it from the configuration file: {{{ }}} == Options === Following symlinks For extensions that access files on the filesystem (<>,...), you can decide whether symlinks should be followed or not, using the tag {{{ }}} where {{{VAL}}} can be: * {{{never}}} entirely disallows following symlinks. * {{{always}}} always follows symlinks (more efficient). Note that this setting is not permitted in userconf files * {{{ownermatch}}} symlinks are followed only if the owner of the symlink and of the target coincide. (Default value) Notice that staticmod partially overrides this setting when it not used in a userconf file. When used with the syntax {{{}}}, the checks start only after the directory {{{dir}}}. In regexp mode, the checks only start after the value given by the {{{root}}} attribute. See the documentation of <>] for details. === Hiding or forbidding local files Again for extensions that send local files, you can selectively disallow sending some files. The syntax is as such: Using the tag {{{hidefile}}} results in 404 error codes. To have 403 errors, use {{{forbidfile}}} instead. === Index of directories When the user requests access to a directory of the filesystem, Ocsigen can automatically try to find an index file. This is done through the following option {{{ index1 index2 }}} Ocsigen serves the first file (according to the order given by the index tags) that exists. === List the content of directories If you want to list the content of a directory that does not contain an index file, use the tag {{{ }}} You can also deactivate this option with {{{value="false"}}} instead. === Charset The charset of the text files that are sent by the server can be set using the tag {{{ }}} This sets the default charset for text files to {{{utf8}}}, while files whose extension are {{{txt}}}, or that are named {{{bla.text}}}, or whose name contains {{{text}}} are sent as {{{iso8859-15}}}. Multiple extension tags can be specified. Both the default attribute and extension tags are optional. Extension tags are cumulative between the various sites. === Content-type The content-type for the files sent by the server can be specified using the tag {{{ }}} The options are similar to the ones for the {{{charset}}} tag. ===@@id='upload' File uploading //From Ocsigen ≥ 1.3// You can specify the directory in which the files stored in POST requests are uploaded, as well as the maximum size for these files. The two options are named {{{uploaddir}}} and {{{maxuploadfilesize}}}: {{{ /tmp 1MB }}} The arguments are the same as for the global corresponding options ; see the <> page for details. In order to disallow uploading for a specific host or site, use an empty path: {{{}}}. //Warning// POST arguments (including sent files) are read once and for all, by the first extension that attempts to decode the POST parameters. This means that the POST-uploaded files are stored //according to the settings local to this first extension//. Changing the {{{uploaddir}}} and {{{maxuploadfilesize}}} options later will have no effect; plan accordingly when you write your {{{ocsigen.conf}}} file. Currently the only extension supplied with Ocsigen that reads POST data is Eliom. == Visibility The options above are visible until the end of the tag they are part of. ocsigenserver-2.2.0/doc/manual-wiki/config.wiki0000644000000000000000000005312212060404165017675 0ustar0000000000000000<
> >> The main configuration file is usually named {{{/etc/ocsigenserver/ocsigenserver.conf}}}. It contains the port(s) on which you want to run the server (usually 80), the protocol to use (HTTP or HTTPS), the location of log files, many settings for the server, the extensions to be loaded, the OCaml libraries you need for your Web sites, the configuration of each Web site, etc. One default configuration file should be provided by your distribution. If you compiled Ocsigen yourself, two default configuration files are generated: * one for "system-wide" use, saved as {{{/etc/ocsigenserver/ocsigenserver.conf.sample}}} (generated only if you did {{{make install}}}), * one for testing without system-wide installation, saved as {{{local/etc/ocsigenserver.conf}}} in your compilation directory. You can use it without beeing root (do {{{CAML_LD_LIBRARY_PATH=src/server src/server/ocsigenserver -c local/etc/ocsigenserver.conf}}} or simply {{{make run.local}}}). ===Basic layout of the configuration file The configuration file is an XML file. Its layout is the following: {{{ 80 ... ... ... ... ... ... ... ... ... ... ... ... ... }}} Here is a simple example: {{{ 127.0.0.1:80 /var/log/ocsigenserver /var/lib/ocsigenserver /var/run/ocsigenserver/command www-data www-data utf-8 }}} Here is another example, for use as unprivileged user toto on port 8000: {{{ 8000 /home/toto/var/log/ocsigenserver /home/toto/var/lib/ocsigenserver /home/toto/var/run/ocsigenserver_command toto toto utf-8 }}} === Details about settings === ==== {{{}}} : port and protocol ==== The port on which the server is listening. You can have several {{{}}}lines if you want to listen on several ports. {{{}}} has one optional attribute called {{{protocol}}}. Its value may be either {{{HTTP}}} (default) or {{{HTTPS}}} if you want to use HTTPS on that port. The default port is 80 for HTTP, and 443 for HTTPS. You can make the server bind on a specific address: {{{ 127.0.0.1:80 }}} To make the server listen on all IPv4 interfaces (and only them): {{{ *:80 }}} To make the server listen on all IPv6 interfaces (and only them): {{{ [::]:80 }}} To make the server listen on all IPv4 and IPv6 interfaces: {{{ 80 }}} **Warning:** with versions < 1.3.1, the two previous variants were equivalent and would make the server listen on all IPv6 interfaces, and on IPv4 interfaces as well depending on the operating system (more specifically, the default value of IPV6_V6ONLY). This OS-dependent behaviour has been fixed in version 1.3.1. You can also make the server bind on a specific IPv6 address (it must be between brackets): {{{ [2001:660:3001:4002::10]:80 }}} If you want to use HTTPS, you need to specify a certificate to use, and a private key, as follows: {{{ path_to/cert.pem path_to/privkey.pem }}} Use the tools provided by openssl to create a 1024-bit private key to use when creating your CA.: {{{ openssl genrsa -des3 -out privkey.pem 1024 }}} To create a master certificate based on this key, to use when signing other certificates: {{{ openssl req -new -x509 -days 1001 -key privkey.pem -out cert.pem }}} If you don't want to be asked for a password at start-up, you can uncrypt the private key (if you consider it is safe ...): {{{ openssl rsa -in privkey.pem -out privkey-unsec.pem }}} ===={{{}}} : log files directory The directory for log files. Usually {{{/var/log/ocsigenserver}}}. Ocsigenserver is using three log files: {{{access.log}}} where all requests are logged, {{{errors.log}}} for error messages, and {{{warnings.log}}} for warnings. Example : {{{ /var/log/ocsigenserver }}} ===={{{}}} : directory for server data This directory is used to store data used by the server or extensions (for example persistent data). Usually {{{/var/lib/ocsigenserver}}}. Example : {{{ /var/lib/ocsigenserver }}} ===={{{}}} and {{{}}} : user who runs the server If the server is launched by root, it will change itself the user and group for the process, for security reasons. Create a group and a user for Ocsigenserver or use an existing user of your system (e.g. {{{www-data}}}). Example : {{{ www-data www-data }}} ===={{{}}} : default charset for pages Example: {{{ utf-8 }}} ====@@id='upload'{{{}}} : directory where files are uploaded If you want to allow the users to upload files on the server, add this option. Example: {{{ /var/upload }}} By default, no directory is specified and uploading is forbidden. Note that the server will remove the files after the request has been served. If the service (the script) want to keep the file, it must create a new hard link on the file itself. You can specify the maximum size of uploaded files using {{{}}}. For example : {{{ 2MB }}} The value may be "infinity" or written using SI or binary units, e.g. 10 10B 10kB 10kiB 10MiB 10TB ... (or 10o 10ko ...) (default in bytes when no unit is specified) //Warning:// the maximum size of files is also limited by {{{}}}. Starting from Ocsigenserver 1.3, you can redefine the options {{{}}} and {{{}}} on each host or inside {{{}}} tags. The syntax is the same as above. There are however some limitations; please read carefully the documentation of the module <> before using this functionality. ===={{{}}} : maximum size of the body of incoming requests Example: {{{ 100MB }}} The value may be "infinity" or written using SI or binary units, e.g. 10 10B 10kB 10kiB 10MiB 10TB ... (or 10o 10ko ...) (default in bytes when no unit is specified) ===={{{}}} : MIME type file The file associating file name extensions to their MIME type. Example: {{{ /etc/ocsigenserver/mime.types }}} ===={{{}}} : Error messages in pages Use this option for debugging your Web sites. Full error messages will be written in Error 500 pages. Example: {{{ }}} ===={{{}}} : Do not trust Host HTTP header for absolute links //(From Ocsigenserver 1.2) //Use this option if you do not trust the Host HTTP header for building absolute links, CGI scripts and redirections. The default hostname set in the configuration file will be used instead. (Same as Apache's UseCanonicalName option). Example: {{{ }}} ===={{{}}} : Maximum number of simultaneous connections Example: {{{ 500 }}} ===={{{}}} : Timeout for connections Written in seconds. If the client does not say anything during that amount of time, the connection will be closed. Example: {{{ 20 }}} ===={{{}}} : Timeout for Keep-Alive Amount of time (in seconds) the server will wait for subsequent requests on a persistent connection. Example: {{{ 10 }}} ===={{{}}} : Timeout for graceful shutdown //From version 1.3// Amount of time (in seconds) the server will wait for current requests to terminate before ending the process, when you use the "graceful shutdown" server command (see below). {{{ 10 }}} Other possible value: {{{notimeout}}} if you don't want to wait all connections even if it takes time. ===={{{}}} : Size of the input buffer Size of the input buffer (sockets). It is also the maximum size of headers and post data. Example: {{{ 8192B }}} ===={{{}}} : Size of the buffer for sending files Size of the buffer for reading files to send. Example: {{{ 8192B }}} ===={{{ }}} : Size of the preemptive thread pool Even if Ocsigenserver is implemented with cooperative threads, web site programmers may want to detach some computation to other preemptive threads. To do that, Ocsigenserver has a pool of preemptive threads running, waiting for computation to do. This options allow to set the size of this pool. Example: {{{ 10 1000 }}} ===={{{}}} : Size of the queue of waiting detached computations If the pool of preemptive threads is full, new detached computations will wait for one thread to become available. This is the size of the waiting queue. Only integer values allowed here. Example: {{{ 100 }}} ===={{{}}} : Maximum number of retries for the same request To prevent looping requests, for example after a rewrite of the request, the number of retries is limited to this number. Example: {{{ 10 }}} ===={{{}}} : The pipe used to give orders to the server Ocsigenserver is waiting for orders on a pipe. Write the orders on the pipe. This option allows to set the name of the pipe. Example: {{{ /var/run/ocsigenserver_command }}} Each extension can define its own orders. Predefined orders: * {{{reload}}}: will reload the configuration file. Extensions will not be reloaded but all other modules will be reloaded (for example Eliom web sites) //(see below for more information)//. * {{{gc}}}: will trigger a heap compaction * {{{shutdown}}}: will shutdown the server when all the current rerquests are fulfilled //(see below for more information)// * {{{reopen_logs}}}: will reopen the logs files (see logrotate configuration for an example of use) * {{{clearcache}}}: will empty all the caches defined by the module {{{Ocsigen_cache}}} ===={{{}}} : Splitting the configuration file If your configuration is complex, it is recommended to split the configuration file into several files. The following command will include all external configuration files matching {{{*.conf}}} from this directory (in alphabetical order): {{{ }}} ===Loading extensions and libraries ===={{{}}} : Loading extensions and libraries Ocsigenserver does not do anything without some extensions loaded. For example, you need the extension staticmod for serving static pages. Extensions are loaded dynamically when launching the server. Specify the extensions and libraries you want using the tag . Warning: The order in which extensions are loaded is usually not significant (from 0.99.4) (but if you have dependencies between the modules). Extensions will try to handle requests in the order in which the options are written inside {{{}}}. If you want to run a Web site with Eliom, you probably need the extensions Staticmod and Eliom, the first one to generate static pages, the second one for dynamic pages. If you don't have any extension, no page will be generated. Extensions will not be reloaded if you ask the server to reread the configuration file. And they will be loaded only once, even if you have several times the same extension. For example if you are using {{{}}} to configure several websites in several configuration files, you can put all the dependencies in each file. Some extensions take parameters between {{{}}} and {{{}}} Example of use: {{{ }}} (From version 1.0) Extensions can also be loaded using Findlib. If you specify a package which has dependencies, these dependencies will also be loaded, without parameters. Dependencies are always loaded only once, so you can safely load several extensions which have a shared dependency. If you don't want to clutter your installation with a lot of Ocsigen-specific packages, you can put them outside the default search path (for example, something below {{{/usr/local/lib/ocsigenserver}}}), and extend the search path in the configuration file. Here, "search path" has the same semantics as in Findlib. For example, you might have the following line in your configuration file if you compiled and installed Ocsigenserver on your own: {{{ }}} Extensions shipped with Ocsigen Server are available as subpackages of {{{ocsigenserver.ext}}} (this package is in an extended search path). For example: {{{ }}} This will load deflatemod, and its dependency camlzip (if not already loaded). ===={{{}}} : Loading libraries From version 1.0, {{{}}} is a synonymous for {{{}}}. ===={{{}}} : Loading libraries If you want to load other OCaml libraries for your extensions or Website, use {{{}}} if you do not want them to be reloaded each time the configuration file is reread, or {{{}}} if you need them to be reloaded every time. Extensions like CGImod or Staticmod or Eliom can not be loaded with {{{}}}. Use {{{}}} only for the modules you want to be able to reload without shutting down the server. Libraries may take parameters between {{{}}} and {{{}}}. Example of use: {{{ }}} As in {{{}}}, you can also use {{{findlib-package=}}} instead of {{{module=}}}. However, remember that dependencies will always be loaded only once (only the last file of the package itself may be reloaded several times). ===Virtual host and site configuration ===={{{}}} : Virtual host setting It is possible to have several virtual hosts on the same server. For example if your server has two host names, you may want to serve different Web sites for each of them. Note that this feature is based on the {{{Host:}}} HTTP header, which is not mandatory in HTTP/1.0. The attribute {{{defaulthostname}}} is just an information about the hostname, that can be used for example by services to create absolute links. If you want to create virtual hosts for several domain names, use the {{{hostfilter}}} attribute to filter on the {{{Host}}} HTTP header. You may specify several hostnames, and the optional {{{hostfilter}}} field may contain '*' (wildcard). Example: {{{ ... }}} The {{{charset}}} attribute is the default charset for your pages. All attributes are optional, but we recommend to set at least {{{defaulthostname}}}. If you do not want to send any charset, explicitely: {{{charset=""}}}. In that case, browsers usually use html meta-data (when present). //Warning:// Before version 1.2.0, {{{hostfilter}}} was called: {{{name}}} (or {{{aliases}}}). It is also possible to set the default ports for http and https using {{{defaulthttpport}}} and {{{defaulthttpsport}}}. These arguments may be used by extensions (like Eliom) if they need to create absolute links. Example: {{{ ... }}} Inside {{{}}}, write the configuration for your main (root) site. These options depend on the extensions loaded. See the documentation about the extensions to know what to put here. It is also possible to define here several subsites, using {{{}}} (see below). ===={{{}}} : Configuring sub-sites In each virtual host, it is possible to define several sub-sites (in sub-paths) between {{{}}} and {{{}}}. {{{}}} has an attribute {{{dir}}} to set the home directory for the site. You can also set the default charset for the site using the {{{charset}}} attribute. The options between {{{}}} and {{{}}} are exactly the same as those you can can put between {{{}}} and {{{}}}. They depend on the extensions you loaded. It is also possible to define sub-sites inside sub-sites. Example of use: {{{ ... }}} ===Reloading the configuration file To reload the modules of the configuration file without stoping the server, write the command {{{reload}}} in the server's command pipe (usually {{{/var/run/ocsigenserver_command}}}. For example: {{{ echo reload > /var/run/ocsigenserver_command }}} Form version 1.3, it is possible to give the name of the configuration file as parameter: {{{ echo reload /etc/ocsigenserver/ocsigenserver.conf.2 > /var/run/ocsigenserver_command }}} Most distributions have a special command to do that automatically (for the default configuration file), usually: {{{ /etc/init.d/ocsigenserver reload }}} The configuration file will be reloaded, and the changes will be taken into account if possible. For example it is not possible to change the port numbers without stoping the server for now. Extensions and libraries loaded using {{{}}} will not be reloaded. ===Graceful shutdown //(From version 1.3)// To end the server cleanly, use the {{{shutdown}}} command, for example: {{{ echo shutdown > /var/run/ocsigenserver_command }}} No new connection will be accepted, but all current requests will be terminated (with a timeout). Then the server process will end. You can specify the timeout as parameter (in second): {{{ echo shutdown 10 > /var/run/ocsigenserver_command }}} It means that the server process will end after at most 10 seconds, even if some connexions are still alive. If you do not want any timeout, do: {{{ echo shutdown notimeout > /var/run/ocsigenserver_command }}} In that case, the server will wait for all the connections to terminate, even if it takes a lot of time. The default timeout value can be set in the configuration file (see {{{shutdowntimeout}}} option above). ocsigenserver-2.2.0/doc/manual-wiki/menu.wiki0000644000000000000000000000142712060404165017375 0ustar0000000000000000=Ocsigen server ==Usage ===[[quickstart|Quick start]] ===[[launching|Launching the server]] ===[[config|Configuration file]] ===[[misc|Misc]] ==Extensions ===[[staticmod|Staticmod]] ===[[eliom|Eliom]] ===[[extendconfiguration|Extendconfiguration]] ===[[accesscontrol|Accesscontrol]] ===[[authbasic|Authbasic]] ===[[cgimod|CGImod]] ===[[deflatemod|Deflatemod]] ===[[redirectmod|Redirectmod]] ===[[revproxy|Revproxy]] ===[[rewritemod|Rewritemod]] ===[[outputfilter|Outputfilter]] ===[[userconf|Userconf]] ===[[comet|Comet]] ===[[cors|CORS]] ==Developer documentation ===Developing with the Ocsigen framework ====[[lwtoc|Cooperative threads]] ====[[staticlink|Static linking of the Ocsigen server]] ===[[extend|Writing an extension]] ===[[libraries|Libraries]] ===[[wrapping|specific wrapping]]ocsigenserver-2.2.0/doc/manual-wiki/libraries.wiki0000644000000000000000000000204312060404165020400 0ustar0000000000000000=Libraries ==Ocsigen_cache ==Ocsipersist <
> is needed in {{{ eliom.cma }}}, thus you need to dynlink it in the configuration file before {{{ Eliom }}}). There are currently two implementations of {{{ Ocsipersist }}}: {{{ ocsipersist-dbm.cma }}} (uses the DBM database) and {{{ ocsipersist-sqlite.cma }}} (uses the SQLite database, and depends on {{{ sqlite3.cma }}}). >> It is possible to customize the location of the database on the file system. For example, with sqlite: {{{ }}} And with DBM, you can customize the location of the database and the name of the {{{ocsidbm}}} process you want to use: {{{ }}} ocsigenserver-2.2.0/local/0000755000000000000000000000000012060404165013647 5ustar0000000000000000ocsigenserver-2.2.0/local/var/0000755000000000000000000000000012060404165014437 5ustar0000000000000000ocsigenserver-2.2.0/local/var/lib/0000755000000000000000000000000012060404165015205 5ustar0000000000000000ocsigenserver-2.2.0/local/var/log/0000755000000000000000000000000012060404165015220 5ustar0000000000000000ocsigenserver-2.2.0/local/var/www/0000755000000000000000000000000012060404165015263 5ustar0000000000000000ocsigenserver-2.2.0/local/var/www/index.html0000644000000000000000000000006012060404165017254 0ustar0000000000000000

It works !

ocsigenserver-2.2.0/local/var/www/ocsigenstuff/0000755000000000000000000000000012060404165017762 5ustar0000000000000000ocsigenserver-2.2.0/local/var/www/ocsigenstuff/source_py.png0000644000000000000000000000202512060404165022477 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs „ „ªâcytIMEÚ 3:9âŽñ•IDAT8Ë­•Ïk]EÇ?3÷æ%y­MÒØÖÚ¢P„Z¤­ ‚nÛ´Ð>ÁRôopW\ºqW".ta‚ÕT([j)*i,6Mó’¾¼ÜwïÜùy\ä‰&±ˆ_8 3 ÎùsŽh6›VUõ"ñß›Í敪ªæÖ¶äÐZæË«XètÐZ£” ‘iæJϽ"PùÄ voÏÙ;2ˆ Y¡ááUÎZ0Y–¡´F\óþÕ‚mËî‘~\m©LMw±äà@ä½Ï`C‚eðߥ×m´^éËͶåã“{™™ž§ìêžAlÍÕ;~¾=·TÝš ×j]Æ+—”RØ ¥h}ô+N)L·Â×[•ÝEJëÑJ!J‘6xÉõVhM»pÜœµÔÎs´Q‡Iߌáw°¥Å”†`ç vI9ùà‘­ÁW¦ >¼åéW‰²tTµÆÚˆw o3¢s$Ñ(az“l©(f?c`àôæàOnöè#§(kÊÊQ»€÷‰$*Ce Tæ kk©€PÓŸÝÞ:ã' Hð€ ”& •ƒ!¥Çwlç…§fH6@²ä} ’¹³1ظHž¾Q)Dx~æäáû4t ¥„D‡N5Ï>ÙaàÖ uº×É÷Û<ØÈS !qp¨Á­[ÈàcHÔHìÃ"É÷ˆnºÛ&™ûˆí‘LIÿîþÍ­x¢˜5$qdW z)gˆ® ølõ€Úxç Q‘| Ôî|äéCûü†à·_ÞÇ;ŸÞ Ë : Å÷ˆ×DŸ¨ëÀƒÇé.‹EÄùDôrvî{M~øîÛ.pmCð+G0q`”?ÛÛòâ<É-ïÝÛÆµ_vðú[ßBBkMŒ‰E.~ñ¹9uâøi`rCpŒ‰‘á!F†‡è´ 8‹¸Œ`Ì«9’@ŽÚŠÅE¹té’9;6vøzS$¥¥¿Ÿ:=’ ¬àmÂAl]Ó+ .OLÔgÇÆNã[6!D`¹¡ŒŒìdʿ˼_!Á¢$€@ÙëÉå‰ óÆ™3-à+þ­W¬d,J¡DØèUºÅ1¦¦®Óö“Tým‚¯7gÇÆZÀÅÍÆI¾>aY²AbŒ4²ÀèžT®çöæÂ… å›çε€/f^m9šÊ²”é»wåüùósÀñ‡ªåaº«ªª—þáùzà'à‡ÿZqx…fÁvIEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/tar.png0000644000000000000000000000177712060404165021272 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs „ „ªâcytIMEÚ  :oМIDAT8Ë•Ïk\UÇ?ï½)3­ã,Ò61•"Õ¢UÖj¨X¡þ.mR[Áƒ ׺qåJpQÅMÁváÒ@ÁÌÄ”¤1‘Ò„4µIó g&3yóî=縘I&\î}ï¾÷yß÷=÷žP'“@Šÿ˜Ö[wÒétŸªš÷Þ¼÷&íMd«u˜÷Þ›ªZ:îk2Sf™*•r™  ¶úæ“AcdÖè¶z3#›ÍbfÑpóŠЀ`xùáCF~æÁ_÷úìóÜÌ0 hŒ[ÞÂ0lïNßeb,G*Yáä±Ãl¬,,,ÉdÈd2ìÏdHíÛ×úH{ì7TÞc}6Ïéç»ÙŒÓÄqLåïe¾þòSN†ÇÍ'žçN½Ëé×{[öì ÂjµÊä­œë=A±T"_ø#㬬yçíSô9HO×!ØÏ¯·~æ…_"›Íþ8¸~õ;º~¸vÂØ˛ĉ'ŒÒLݙƻ„ãÏåé®C¼ñÊ1~¼ö=ï0XÏI'pk¢2χŸâì™×x³÷UD”8qÔjUP¡¼zÉÅï—Á]>ïÚÙl–î®#­¥äEqΓ$ç⼫!.A|ÂrIQÕ½Á͉J5Fµžii½ª©`*¨‰œs¤R©=¬h´ê¦£Vs(†ª"¾ïP©Û¡"¨ ¦†sBecco0P_ðÔ‡ša¦¨hK©x‡zW¿VCÍË‹DQdªê;{lÞ9Ô³ºjk*õßP¬˜Á#Ù,•J…‰‰‰;Þû™Ž[š À%‡™bªu?E0Sξ÷!"™8!—ËÍ}<8ø!0ßÙ 3ª›1µZŒK Û«ÖëI˜Â‹R‹cJÅ"ùÑѹO††Î¯­­6Üì¼ÜV‹5~»=[ON£Ð Úð3✵¸F¹Tâf¡0ÿÑåËýÅb1hçä™_}s•`[9L’„JµÊÒÒNM¡å27 …¹‹—. ”Ëå‘vhGÅ4Unƒ›*â=éL†$ŽÉåó³. ÄqœïÛ=¦ÚØ(‰síéá§áá™óýýýqçù×Ã*N÷™ÙÎ#HÄœsV­VmueÅf¦§åÛ+WÆ£(z«]P§h–¤ƒÀˬ±¶Ãr¸¿×ïoɶ¨ÄÝT{IEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/tex.png0000644000000000000000000000202212060404165021264 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs „ „ªâcytIMEÚ ô9Ù!’IDAT8ËUMHcWþ^^ž¬ .D*L1;7‚Y u×î±.t1…Ž“¡ºq-¤hèl] fÀVŠ •fá¦A\8±'YLKGjüImÞ»¹ïÝûuaþ“¶´çÞ÷Îýî¹ç|ç^wò€1þ¿¸~ð{í‹eY´Öô<žçQµªRuíðßóøÈ шOê ‰®6h‚ÔK£ XÚ¦t{ÙînéÞ¾Ýï63>Ж[M<ÉääÌL~sfΙsw¤x°ùÿýÀÔÂŒmÛ»•R:Š"E‘–÷)ïŽëQi¥”¶m{÷<Óšgk¥p+„ Ä]=·AJiŠg´Ö Zkã8,¾±µ°S„i"!JÃ¥þ[d¦]F2%²ù*Z ÚZâlÙØÎ«¯¬&‘°s`„¸ç]¬Å†a`l¼È‘“7èZÓAVZŒ†‚‚²hMZ çëÌü–ã|†·_Šç·v-x¿4X†F ;?Bª«5%>ëqÅÕÄbIÚÛƇ¦˜¸]#e›|qô:¥²ÏkÛ×>6µZȱӃ4­ZÁcë;°›Ì“ÐIb>”$_«†L”}Æ 5¢xœ‡~fx¤ðïà3}ƒ$Û[ˆ·8<ÝÕŒ6 Z—%ذª…gO“«Ø©8Ò¶(Õ2SEr3.‡¾X,¥ââÀ8u YžÀ"©H‚UÍq.O)…’²/‰HC M‹u[Vsu¸H>_m »Í…IÆ .E7@K…Кe– S¨Ðl d$ç2`.åИ¶ISÚá—_GofÆ%ŠŸ®f ’ Ú[Sü1Yʼn›õ€NÇ"#À"´ŒÐJ‹†F‚ìt©1ض ŠÈõ¹|}šŽÖ]mM M–¸6QF!ÅÙ QÝCú>*ôqKŠå)ƒÀ-cšíÁé´C\K¼J#ãôÅ^ÜÔÁÉ ~Q)º„5åºÈj Y÷˜ÊÕ( â˜+vmD)<îìlaU[Š¡’O< &ø¾”/?Áæ'Ó gr\øñÃ·Æ‰Ü Úó‘^ÛlÛ¾ßÏH)/?BðήgùøÓK”§ËÄ›“`›¬mKaȈe–dÃJƒãŸìÇ4î|&)%2 8qâT®··»¸Ñ0ߨ±‰çÖ·`™‚°R'˜u9úíLâØŠ¤ðHÆ-lË }J³3>|$¿ïƒÞ÷²ÙìI@5[–Ágv°.mc;I¬Tœl®Bv²H*f°4RI|Ï£R.süþ>ÜS*•N,†Þ Ö´&vøúó7Ù¹õaB±¼³ÑcjÖ%“¯ 4T+Î÷õå÷í{¿ÛuÝã€ü×"4@ª)FïžmlãÔƒœ>÷;^m–U|ßãÌÙ³ùîžž½A|Ó sȶíw}ÏûÒó¼;PJSBJU™ÛE2™ ÍN‚á¿ÿÊu÷ôì¢èøRÐÅ­é-­õ½-HJ†¡®ÕjºÏë›7oªƒŽš¦¹0ÿ«Ηý•ÀK‹žF/Ñ,ÿïT#ùãSë êØFIEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/sound.png0000644000000000000000000000166612060404165021631 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs „ „ªâcytIMEÚ %2]uæ…6IDAT8Ë­•Mh\U€¿{_òf2L;)UkA+þ¬$Kt'fQlAƒšRRZtUЂ q…Ø‚.Ä…PºèÂ*Ž&!‹?‰qaµ¦ZÒŸ‰eB›ùy÷¾Ÿ™{\¼71ó‡xàp/çž÷½sï¹çP(î3Æ< xüwi …ËÆ˜åµÆaùî{²QÔîÝCiR ûv„ˆƒÌ&"«Zêï_åtM´ç¡µNÕóVµ˜ß…zGqmùºÇûÇÏóð2]/Ýàt¢á¡½»yóÒôù…®µÎ·«Žc¦Z)TöµÏ™aüÏ/»Ö;ð­ÁJ¡”JTk ò=9n]7¼µp‚zÔH£Ìr ·ë JÜI"Æ!¿¾Ê­ë ‡¿z ¿×O}µFmp÷º¥’EN–u²yNû<ñÀãÜ>YáÇ¥Yæï̧¾Ùw[ƒ×‰R*…yK«Àµ¹pðgçÏ¢Ñ8çpÎí ¼ö~Š´¡Wõàœch`ˆ™¥”S$IBœ$Û€EÒsÍ¢ìØ0­ÚG.n£EZ‹µÓlþ ܳA¸HÀ‰à9!hED&b¥^§ÑnRÔEþªÞÁÆ–( Ù]*$‚;ÉJ#Öøô¦{r`ÚÕj•«üÊ÷ÕŒ¹üÝ·000 SSS5`v}œ¯ŠˆXkÅZ++æ®\¬},¯ÿ|H?Ú//¾7$¹#žLOL‹ˆH«Ýq"q‹5Æ?w.žßô(D„J°È'·ßåÙÏ¡÷„ÔrKL/,Õ Z­""$qBÃÖiÔë2>>nŽ.m ö=Ÿ3_Ÿ`Áû‰_rßPí¿IÿþábÄc>Œ±çQÒl4˜˜œ ޾ ”·¼N%·‡•ZkëŸ'‰cÊå²=:2ò ð٦ŵ&yŸš H!­Óª‡ -õFƒ›7nàû>sssÁÉS§†ÏwÒ¯¶lMAH¥R‘±±±eààN€*k¦÷cžÙæíhóÀâNÀ÷qîV¥½IEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/source_pl.png0000644000000000000000000000213112060404165022460 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs „ „ªâcytIMEÚ )œ0gaÙIDAT8Ë­ÕKlTUÀñÿ9ój‡L;˜ò°öEjZ´BR!Æm0Ñ`$!D¡1°`kܸ2lêFta4A­F6.€jb„¨@¨(}Ñ¢-méLïsî¹ÇE‡é@imŒ_rs‹ßùιç|ŸˆF£¦i>øï¡¢ÑèiÓ4oLèÿ!€Äm0˜¿K€‹é4¶mSSWG´¤„@1›‚Öøùg¿Êãñ‚S °ª¾ž€”øZs›RÎâZ£ó ,Bu~°â(Àžç1|ý:…BÄb1,ËÂu]lÛFJI8ÆWŠp$BY,F(BóÃÁ`ššš™ …@HI(ÄËy)Pžƒ—³ˆ”Æ YúJ¡ß÷çÀ²øECaZW/žáÝ·¶151D àð§xÿí½)g§/Ÿ@ ¸0,„@ k[¤éäѧŸe|ì2_$ñi}¾•‰Wgf$“c#¤:?¤¯7…ò² ÃŽ“e|ô<ÍëÖQV^ޝl¦346?Žãæ¸1r–Ì­}WR´¿ÓÁçwðGoúÞk s ~üþ3î¯\Áñ®š×ÖQ‰ \ ÏÊYR† p.uˆ¥Ukøîð—lßÔÄc^£±éÉùá_þ±¡~2£Ãütú—/÷R’””FK›¢¾a=§ÎSVVŠ‘æÚç߃×.ÑÿgýM²#¹ŸO>x‘¡[Ä—DœôXµ,„D`ºýÜWÁ0Ê++„Êÿåçbë¢å…]¼¸y _}Ûñq{’ç6<ÃdÖæ¥Ä\¹G…YZ×ÄúWÞdp Ã0rs26²£œJ}Í#««Ø±sŽãðPÓV?̇¢d˜eÕM´n®Dkc[¤Ó¨®®Ö'OžœÎÎÿ-ë ^mÛY@µÖø¾Ö0Øw…Úš*Ö·´ ”BR åyúè‘#ÖÖDbpm)ñúþ7˜í+ äO•ëæˆÇãØ~ß÷ÉårØ–E6“Ñ'Nœ°v'“[€ã÷\ãåËWb›Ó(ó&®c „˜ÁµÆórÄ+*¹pî RJÛf:›%ÕÝmïN&·]ó•µ¬œ2¨®ob||¥&B`˜&™©)ªêײñå J)ŒéiRÝÝÖ®¶¶Ðy¯ªÇv«««/ª3Ëà8VEÃÃÃŒ¯˜$çº|ÓÕeîI&ÀÑùÚɰçyˆ¢¢®”Bù~¡l664ÐÑÑaìÝ·/[L¿Z°5†¡GFFt{{ûM`Ób@‘o¦ËLÓ|êîsWxÀy``1ð?óS5aÚ䆎IEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/readme.png0000644000000000000000000000156112060404165021730 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs „ „ªâcytIMEÚ  òò×ñIDAT8Ë•Mo[E†Ÿs]âR'@Y°$øHlÒ¢°D‹E"Uý3ù ,Z±©`ÑHn“8ݱ"bÉUMè&‰"û~ÌÜ™sXŒíØ„¸QÏÕÜ#tŸsæ÷Î@³Ù¼^ŧ@ƒ×Øl6+Šâdz²mÓìµhWF9¨Ã9G6Pl95/ÈT –^)f†ªÒZy{™ðÕ­[üôëcê¢@ "|‚LˆJkeV—ðÎÎÎUdï,ÁÕ ‘ŒKiÒ)jªvNð°dY¢ÐÈD@$;S “ÎL1${øæUî>xBÝ/Qm £Ç°Ižôm†’ ˜/-] Þíîj,/a­"#´ÈlÇb–1I2Ùy; de2Ù-}8Îi>™-|¡÷=Å÷ëÑòHÎ<œmœ™aÑøäý…WHjäÚ¬\ALÎL5^:†FÅ0L8ªÎïøœ@cýTÕH U%FÅ4Õˆ1p­Õš'Å î=|Bè;B¨'K6UBxïñÞêJÔH‘ªªøâÝëõRt©½GZ‹Ðj@L¿k¢ôœ ÿáøà~¿¯ëTÜàƒ>´Ýn·üþßÅÿ0>HœwVV×Î|UZ™çÖ;=µçÏÿ²­­GffcLgUæ½×_îßÏ/çJq÷A?tDMn1à*GïtÈŸ‡Ç| xï©Ê’á``ÛÛÛåío§s\ÑÅ{‡¼µ€-7°¨xŸQ4Ühe5f†«*Š<§ûìYu{cã; s9W¤Fv2µä†˜lUä¹íîíUëëëm`kž±ø|u•£ÊxÙs¼è•ô+þ—ã*N§\[[ûxxÑu"S›÷3€«JÈk ï=ƒáÃÃßd?ÿñÎ6ðø2÷U{ޕ㜳££#ÛÜÜ<¾¹ PF—é{EQ|öÿ‡Ò$ððâ2à Š^$¿Œ¹­IEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/pdf.png0000644000000000000000000000216412060404165021244 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs „ „ªâcytIMEÚ ¦õxôIDAT8Ë…•MhTWÇ÷Ýyó‘LjTbéDëBÈ"X¡ËŠK]DE° »ÈB¤1‰´±ˆ ®\ ’®Üˆ ¸Ð„V,Ä(tU·¢1R¥´*&Î$Ú—™÷1ïãž.&3ÍÇh¸\.¿sîÿœs¯¢n_ß6«Ì²,%uûoOke’DV€ßÙæŽmÛGŒ1DZÄq,n©$ïŸ?—7““Ru©Tª’$IÝãXªÕª$qÜô8ŽÅ#¶mi0S ¶ƒ[©9γglÚµ‹|g'oÇÇùlï^°F&“|ßGŒ@Dòù<Ëol5ÓV ¥5¦V£t÷.–eawt`mmm$qL†X–ÕtµlR+%\¥'íÝÝ$ss¼½~½O¥ÐA@®­8Iðƒ­õŠ–e­.MSŠ:X)PŠ¯ÆÆx|ð êÃÚ·m#ž%×Û‹ÖÏ÷‰“+ŽIÛ6¢ˆ¬¯¥, K)²]]|=>NejŠÒ… ˜ùy,Ë"mÛ¤Ói,­ ÃÏ÷1Æ Vɰ¬TýRd zoß&ßÓûáa*×®b ù<Ùl#‚çûA€Y*æp3jXmml8p€u}}TÏŸçý¾}ðä ™L†|{;¶mÇ1žï<ãVfææXwô(Ÿ?|ˆêéañðaÞŒP›ž®H§Éår¤´n ^>Yµˆ@©„µa²~=Ö¹s¬›˜ ò<Þöõ1;0@õÑ#’$A{^ë®PKÞX#RïÍr:; 𨷗ö‹±_¾¤|æ åC‡`Ó&Ú»»?Þn(D)ÔRÆIb×upp&'Yœ˜ æyè“'‰´&纘b1l ¦AãºÛ& CÜwz•¿oÞÄíêBíÙƒÚ¾”ÖtoÞÌŸŽó:I’ÇkÁKmÖÈ zú >\ºÄÜ•+¼Þ¸‘ÓÓ¨L€$Ik5îÝ»WúqttxÞZ ‘f«‰ÁƒT._ÆïêB‰ ¬lc µ `Ñq¸ÿ~ù§S§¾wçWÀ´–¢Ñ žÇâÙ³TïÜA’ïï'ö<ÔÌLZY\¤X,–=îºîåЕ`‘ºÆÕ*ÿ Ez÷nÒÇŽ!€xb "BµRá·b±<|âİçy¿É'!Á9}½?Z„xëV2™ ¾ï“Ä1™l–0˜šš*Œ …aøs+èšÉ«©;èèï§63CnçN”Rõ"E_nÙÂÍ[·JƒCCÇ?]þ5}'"Ô^½’…7¤úæDQ$žçÉ|¹,/^¼0ccci­¿ôÿ=a+»€”ª?o"bZ}–O?Vª•ý {&OuJÑ¿IEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/source_java.png0000644000000000000000000000211512060404165022770 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs „ „ªâcytIMEÚ 0Å zÀÍIDAT8Ë­•ÍO\U‡Ÿsνwî¾Ê‡Q†Áb0e¡‰ÕDWÝhÚº1Ñ nÊÎþ+ü uÓ4ºP—š%M´uDʇѤt(È´f`†{ï™Ë½ç¸€N iŒorò&gñœßù÷=¯Èçó½QŠÿY>ŸEÑöñÍ û?0ñèe °ôð!Zk††‡Éû>¢¥@JI–eXk±G«³««Å9àõ‘””kyRž€+¥iŠ1¦={2Zà4Mù{c ¸®‹ 4›­5qãº.¾ïs$¸®K¡PÀu]¤RgƒÇahhå8ìÖvH“&"K¨m=¥¶»ƒ— xcôAà“Äù!$Ƙ³Á]÷Ï•%æçfùö»ïùceǾ~.\èæòå÷°6#Ž"ŠCƒŒ¿Ï¥·ÇQç)BÒy¡‹_üÆâÒ"ímmÚódÙ!ìÑ£¿ð=8lP¯>ã­wÞ¥\~ŒRÅbñ¤Æ£QXÇb1ÖÒQè" Cæçç¹råÊÙàÙÙY¶··)–^Ãs%RJå3M´êÚUŠÇ«kŒ!Ž5Ñ ðÊÊ QÑÙÙI؈éè%MS”rR´ÂdæH}B±XÄq¤”$Ipp ìº.B”R à8¾ï£”BIIf õ½:ÕZ•§•gdÙáAÝÝÝŒŒŒØ………:0w \*•ØÚÚjµg¡P \.ã>èyy­ÌG^Ń‚,ËhjmïÝ»§¯]¿þ°z ìyccc„aˆ”¥ÃÃÔËejÕI’Œ1$I‚Žcõºýõþ}ýùää'ÀÏg>^àûTwvH’„¾¾>FGGI’„z½Îòò2ÆšZ³ßhpwfFߘšúøéÌγֲ¶¶F.—#jµK‹‹Ô ê{{„QÄÆú:×®^%ÜßçîÌL|cjjøñ¼ßÒZk›Z[ÇVkm›ZÛ8Šìn­fŸV*vnvÖÞ¹sÇÆQd¿ºu+>>xŠ4MOÔc–edÆÐl6‰ã˜7GG¹}ûvøåÍ›À/3¯ÎMaÚÍÍM;==½ \{ 8¦}Q}p|´üK¤ÀïÀÚË€ÿ7 ß8çIEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/COPYING0000644000000000000000000002272412060404165021024 0ustar0000000000000000The Oxygen Icon Theme Copyright (C) 2007 Nuno Pinheiro Copyright (C) 2007 David Vignoni Copyright (C) 2007 David Miller Copyright (C) 2007 Johann Ollivier Lapeyre Copyright (C) 2007 Kenneth Wimer Copyright (C) 2007 Riccardo Iaconelli and others This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . Clarification: The GNU Lesser General Public License or LGPL is written for software libraries in the first place. We expressly want the LGPL to be valid for this artwork library too. KDE Oxygen theme icons is a special kind of software library, it is an artwork library, it's elements can be used in a Graphical User Interface, or GUI. Source code, for this library means: - where they exist, SVG; - otherwise, if applicable, the multi-layered formats xcf or psd, or otherwise png. The LGPL in some sections obliges you to make the files carry notices. With images this is in some cases impossible or hardly useful. With this library a notice is placed at a prominent place in the directory containing the elements. You may follow this practice. The exception in section 5 of the GNU Lesser General Public License covers the use of elements of this art library in a GUI. kde-artists [at] kde.org ----- GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. ocsigenserver-2.2.0/local/var/www/ocsigenstuff/rpm.png0000644000000000000000000000212112060404165021262 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs „ „ªâcytIMEÚ 0"u1®¬ÑIDAT8Ë­•ohÕeÇ?Ïïwww»»»sµ´X¶½qË 1Œ"³U/Z„š+±Ú Ť7EH½±wõÆPQÐXDPdP(ÚÈ—àl,F‹"Ê?­y·åõÞ»Ýû»¿¿÷÷üž^¸-¯Î%ÑÃy8>œçð}ž#‰DÒ4Íf@ç¿›¬©©ù­P(ä¯N¶ªÿÁ€ÖY`d&jù©)„¦!„@ÌD%ÑŠ üR ¡ PJÍy²¶vŽSvÐtMÓ®¸®£ë:ñê}½½ì{÷mª -ù§n¦FׯŸ`¤ <Û­ 4¾øürc?òè-LÅ4]Ç0Œ¹zǶQB@. žÃØÅß|º—MëÖ2µô^<Ï#Ÿ¤sc+w/k"Y[K ¡íÙ455‚¦].Ë!0 ƒ#ígÓúVü’d,u‰žûøúøîjX̪M¬]ÝLû«ùòðA Ã@›\Ö±®ë¼ßsˆ§Ö¶ÐÛ÷-ÇNœæÜèš¡2ç÷ócÔ$âD£•ÄãUtnxˆ÷`û˯, ŽF£äþ8ÃhPË“¼ôÜ“x~€íúØ®†"”6ÃCƒü0(¹µ.ÉÅTŽŠèk ƒn_RÏ}«–F2D)…íxXއ® \dž0Às’\Þ™÷µ”ÛÚÚ(d'ÈdóþªŸ•˹œÉSYYÁ;otÑõê>V,k`øç <þ` Ãgq}ÉÎÝ’È5’ÓÊGQIÛ#+Ù¼n “é¯oÛÀž·¶’Í™¤ÆÓ8®Ç‹íkhj¨§©¡Ž»6sþÏ¿pm›ðÉ••RÄãUX¶KuU ]×0-›%õIÒ™a’¬Ž¡ Å¢Dž«¬`||«X7˜±B ðýEËűm4àRvšE‰Jç°Š&®cQò „€éü4ã)àì¼à¢eQ*ù(éSWgÿ‡}¸~‰ ]㶺8–UàáνœèØB Ivû!úz{3ÛÛŸ&ç÷Ÿ<É›;Ú‘A@Hvnm£`ÚB¦¦òÞ½íJ×®‡ë:˜…ß:•íÞ²e0´ ÜΦùåL³ÈÐÈ9<¯„R (òày.EÓäôÀÀ,tpA¹9¶ÍŸçr&Ùçwáz>¥ „ã8¤ÓiFF~B…«Xd`` óBGÇÓÀ÷ÿªc€*#FãÒ;çþ[ßó°, ÅôÒ|Ïãdº«»û†Ðyå6•"”’0 ‘Râù>ÍÍÍ9zt²«»{ýBЛZM¡”Ê4M•J¥TOOϯÀý7W-Ó{®½ÁÌš­ € @úfÀ}>"p¬-ÀKIEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/source_c.png0000644000000000000000000000202212060404165022266 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs „ „ªâcytIMEÚ .-Œ=’IDAT8Ë­ÕÏkeÀñïûÎd×ì&™Í&æ‡én« b"E*Šõ BY1±ý¡áœçme×ËÞÕ.¿5ª9Ë]ÓdâÄ(O艊Å"cÐZ777Éçó(áÖ¯ÑH",‚FѯûxoôžëŸÂˆEÁƒáááaþh®rÁÿâåÁG93ô}ÊåzXå³õ_ø ö=O¾ÄÉT«ÊÚÃaÅÉ2iNe&xâ4Æ”R<ž¦öXl¯ ´v@,V©#ÀJ³èÿ‰q5Ïv<*• CCCt:´ÖxuŸ7Ò# *‡Z³†ëº <Fi›àŠË““Ç™êÜÕ¯ù|c "‚µ!îvéïï?îõåCFaSŠõ$ä'‹b-ÆŒ1`,]±ˆ1L’à ž±µ†Sù?G«|]»ANNuc”R4 Ö³pŽÇS~š©N‰1h¥Ü‚»ûÂ"B¢,¯3Å¢]᪪qrx‚WÒºAÄmiñÑÝ+æ‘0‹E( ²°°àKÛí­o‹ÈçQÐç8|Û¾Ã'õE¶Ò°Ø8¡y§Ê¯^@ŒE)E×$˜$‘K/†gK¥7oÌXkÍï7oòôØŸ¾ÀÕà/~­.ÓXo×X¡Ó‰ÂÍfSæææÂérù­èþ]!±cÇp]— Îôgx1[¤6°ÊÕEŒX:QDks“ËóóÑt¹|˜ÝË轨ˆÐã­õn-c-Ý$Az'¬ÝjÉåùùðsçJÀWûÝúîý ™l–J¥B*•" Câ8Æ÷}´ÖDaÈììl8].—€K“]?/h·Q½ãÇ1Æ’$accƒµzT*ÅOKKíwÏŸ/_e^<š¬•Z­&¯¬ÈÌÌLxí( ê Ó‡ƒ xþ¾šïޏ,þäˆ3«¦ÃšIEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/video.png0000644000000000000000000000230412060404165021575 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®Îé pHYs „ „ªâcytIMEÙÖ@bKGDÿÿÿ ½§“DIDATxÚ¥”kL[elj™É>‰\ÛÁXé (-½Ò–:F[JKK[`¸ŠD ¬À7;a€ãf@‚²2¡,Ólc5.qfLL&¦£$ûàPÁe°}à‰ Û.ŸÖN]¤Ë¦oòÏ{Îsž÷wþçyŸ÷„ýßà‰û[·fÿ;Ìápüu½½½53óM¥!'ï+΄K?a<3ÈçóýóöE‹%ßa4æwuõ®‚ÁqîCtÙ6”¾î¬}f°Á`Ðuww½ à6 MM-àóÅ; …Í'OcâÆÄJggç ©TÞBé1ÿ„‡‡?®‹Ô@úúÈX,.˜ŒÄžž>4™Fè´¶¿c÷îãMr E¡ÁbqFÐM J^+ÅÈÈ(är5ÄbÒÒ$4Ë¡Tj P¨‘&ƒËMŸ— ¡0ÖðŸâX¡!‡¹ð7ü… éSAŸ»Í»#0Û¬¯Âb.„Ñh‡!ÇÈÏ:¨ƒT’Üß?ˆÁA7úû‡07÷#ÖÖÖpfØ÷ðX@Cn‡F1ðÞú>@oŸÝ.žA¸š;Cƒ¥%ÕP ™LƒÕÕU\¾äE{{¬ù~·%°Ñl1“Ûäè-P«²©D2°ð°?!)4X&SC£ÑÃb)·ç褵áÚµ ØüPk Æ<C¯·"ûPÕ9 ±šÀr$óE`³“Ÿ———æ‘‘sf19ÎPDm­ Þ+ŸR íÔ ÷¨ŽùhmíÂÆÆê뛡Vë)ïP,ÛlµZ÷TUU}Gÿ„õÒÒ2Úa††Îè4-ÌÄòò2TÊ,.þŠ‚Þ¹³‘P™TC$Aâ~ŒHH`ÿ 6™L¿™Íf•••oºÝg÷ºÝÃØÇLÂää$Ìy…H2νޫ˜šò‘;%|¾iTWÕ#=]‰›7§¼¾¾§óXè··wСÐ`~þgÚ >jŽ5àÑ£‡0æÚ‘.RÁd²ca~wï.ÁõÖID¾ÌDÄKшŠd„·µ½q¯ÓÓ38^{®­hjîÀõë_¢®±®ÔÔ5ã³Ï¿À©Ž^8«]8Z݈²£ x£üxhpDD4A&Ð×7€øx6ØI)à°SÁ&q9"ð¸ià²`%ò¨Å¸ôUl0™‰ˆGTTlhpLô>TT8QPPèMNR*U…àñ„t„ý:€ÅâÑÆqÈã·;86†ùøòR8)ŽÄ"%“$QP‚`ŒÌ ® ‹ŒŒ û Ðo6BaŽIEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/folder_open.png0000644000000000000000000000107712060404165022771 0ustar0000000000000000‰PNG  IHDRÄ´l;sBIT|dˆ pHYsvv}Õ‚ÌtEXtSoftwarewww.inkscape.org›î<¼IDATxÚÕ“=kAÇÿÏ<ÏìÜìÞ%¾'ØI; 6~!e>…µm¾‚…ŸA âK"žhÍååörÙÙçŠ$)Âþà~<üf—Bø¨8ÿ—Xš‡¥•÷ï~ª…æl ï^¾dï=^¼ÖÅünüðÉÛÑý[3™Ñ czßJ¬÷úã·g¤m¤¿òhþâ³RPŠÐp}6 œ‘§«_/œH¡5SU¤|%Y–lÌœa0tÍÖ!̧‰…#"L ‹œ*ÆÁÈ0y Q ts¹ëcWÂ_„€ Š‹wæö§‹l*¤ ±³_õŸu?“V¦Ýë­*\9oá½G J)ìì a2q’[S²-A]§‰9Š~ìó–)¥cÍ.3¹œRrhˆ¼´­Ù–Na¶¸jµGE5(Vž*Z_âÆüqxTÝ6\‘–BØCÁs‘ëžX:Ú<ŽÕm¸‰EAÚ¿m¯ Ï¢®]òåD†Ê5ù¼öâùÜÝÞÚi&"¤B@Çûï¯^®Òø… y»}‘PÂâËÃÃèüЈ5€Ò q¢ÓýõDpø6¼IEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/txt.png0000644000000000000000000000175612060404165021320 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs „ „ªâcytIMEÛ 3 Ú·nIDAT8Ë­•ÏK#gÇ¿3IM˜`µhcíéAF×ñÅ“'7àŽxA’Rš¦I×qè¹.}Ï£çºô\—B ßoä}Ÿžçѹ®³LóÆŠw*VT@ÿ¤Ó­J‰P8 ˲ !¥„¦i¨V«PŸSQ044t¿â±±1’¤”’»»»$I_J)Kˆ¦r!D³¦V«u(¾&IǶoŠ:¾º”²½ H’žçu€Õö7t…B˜ššÄb1$ D"är9äóyÌÍÍaii €ÁÁAÜÛÜ·¬hW¼°°ÀÅÅE&“IöõõuÔø¾ÿïVxžÇ““ a<;;c*•âÀÀûûû¹··Ç‚a0•Jyzzúç¶škÿ†‡‡‰DX.yU.ÓqœfMîüüaÇÇÇÑÕÕ…ö\YYA4E"‘ÀWOŸÂv… w~Žl6 ×uÀ{Pq©X$ÎÌÌp}}øûû÷|÷ö-£Ñ('''¹ººJåææ¦ÜÚÚ*øò^°mÛB0Nsccƒûûû<::¢®ëÜÞÞ&I !nuáOoÞ˜¾ivX …pxxˆZ­†‘‘„ÃaT*躎d2 p]åR ÙL†ñW¯êSÓÓÓ~¹·ÝH²^¯Ó÷<ú¾OÇqhš& …ÿJ&Ç)¥d¹Tb6“á¯_[¾½ lO¨Š‚|>jµ )%ºB!\\\ X,"ŸÏCQX¦É_wvìùùùY[MÿÆòìI6§›ã8¼ªT˜=;ã>pmm®ë2›¾{¨´€Ƕ¡ë:„¾EUqyy‰ó\±X ™ß¿|9 àçÇœWM¾ïÓ0 .//÷yz§bMÓ>·,ë뻆RKøþ~ ø#b´W(8„3IEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/tgz.png0000644000000000000000000000216412060404165021277 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs „ „ªâcytIMEÚ 0!ì8ÿôIDAT8Ë­•[l”EÇ3ß×m¿Òv+±) ”m¹‘ÃCSÅA@ѤÄJŒñÁøÂƒ!ÆÁDc"„¢¼¡\ˆ "ÐJ¤Á„˃-bƒ°K¥.½ìåÛï>>Ð]nKCŒ'™œÉÉÉ/3ÿsfŽ(-- '“É ñßÍ/++ëJ$ƒ·Õÿ`@c¨y 0Øß!`È+!à¸.B) ”Ê­pyyŽsÛ@jRÊKÓÐ4%¥ìß·>x‡bÃ@êúͼ¡M»[Aý6pö´B€ìøîkú.ŸáñÇjé/òš†a¹üŒi¢„€ œ•áò•(¶Ȳ… ôWMǶm¯÷ðÒ’Fê&×./Çóá©ç×PSS RÞ¾-"„À0 v}ñ1Ë5â¸>—£×hùr?ßê`üØJfN«¡¡>ÂÒyõìùf#†a ó€ÅB)u`ËæMÔWtœ8ÅGŽsñÒU¤Ô),Á¤‰ÕÔ?RǬªÇF×tžŽ³ºù B!„sÖ»Àソž¢Ìª+ „Ôð¼Ûñ0-Ór(ßÇq‚ÀçÁ‘aº£}¬ßr {ã8§qgg'm­GQÖ?l|»M“¤Ò§Ï_dæŒItuǘ\=]xŽïÙ8ŽMo_:ïkÉkkk©¬EÃô:t]#™Îмv¯½ü Ÿï8LÇo]ìøäuÞxwºX¶Màû<9g®ëQP ß»xJô ¤±—¶Žó,˜[ÏÔÉU4/ŸG2ebfLÞ|u1k×,Àv\V¿Ø@*ãN¥îh9=_-mÛe aRÒq\‰Q"ð\|6lùžžE¸Ä@×4b±«hšðó‚ MJ×ed¸˜®?cH|b=qLËF¨€­;óðCa&Œ)ñLB!þÁzOÿþÈ ®DøjûV¦O¬àÑ)Uì?ò+6ïetE#ÃÅt_ºÂ¶½'‡d×ó™ütð@|ÉÒ¥Ï=yÁë֭úvŽpI!‰$+ŸÃ” £°‡_NuQñ@1 °3–•!™Hðó±c×›V­ZœFcè¼øã*Jp=—Ow¶R^ZD¤qvç.\c®Û¶H%“ooÏBOûWdL“Ͼ=D<GóW½…çyX¶E,ÖÙ³gQO:•¢½½=¾|ÅŠÅÀ‰aû8kÅFã«Æåþ[ǶI§Óø®Ëøª±8¶Mk[[ïʦ¦{Bóô±ºéÕç¾ïc;‘H„]»w÷¬ljZ4ô¾FSàû*™Lªh4ªZZZ~fßPÜ2L§Þyƒ¡ ”Íó€n ÷~Àÿ]7#&²™9ªIEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/dvi.png0000644000000000000000000000163512060404165021257 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs „ „ªâcytIMEÚ +$[î"IDAT8Ë­•ßk\EÇ?3»›Ä»µ¦UiÁw)>5iI¡/D”JJQÁ‹ý üÒþÖ">Ú’ E̺j^´¾XÈCBÒeIªÙn×ì½sÌÌñáîÆmÚÝñÀa˜{á3ç~Ï÷ÜQA¼EÑ@ÿ.‚_¢(Úé8+ÿC³=`±»j›$DqŒR ­5J©'kAº«÷ç=ãÇŽíqúÁœ;žŸj5êõ:kkkxö°½Dº‹ ”âõ“'yæÈ‘úÌõ>gscCVVVDDÄwsX|zåŠÜºyS†sO­à{÷˜žžfó~BA£t­¹:¥À{Ïĉ\»zõ©•êþÍÔÔc££ù‰Å"E<Ÿ }JAR´KÑ.A»„’XšÛ šìl7ž?VqµZ¥R©0¦Ÿý˜òÜH_ÏP·­»ÏÃ:Ï;“n0¸ß#¥"ÁÄ+†›W€ÌAyü)Êårþ"–ÌöRH{™ iæI3O–y2ë±n¸Z­†áž½Š ´’¼.”x”xD,ˆC¼E\†·)ûí>PŠ‚Ö<ŒÁy¡¤¡¤<Ê;âñÞw‡CSG˜Ž —"‚½FM”a|ʇ– ŸÒèoÌn ³Û$Þm’´6ëÍK̺bii)+ÅËe¡„àœ# ¤ÉVý>áî#¬ÍðÎRRŠS¯½ÊúÏß·_Jño»/•A{Íabøkkk¿Ùõ‚<ˆÈ×ßÜ63ï^¸¬è Aq|ÆG„gK–11ØÎŸÄq£V‹­zC>ÿâK33sá=àÛá®ètò&jH¼d‚Iq’Æ1&Šøny9þèÃ.w†N^¿+œ(N?a³ ¶­ÁÍÁÆùay9~ÿÒ¥Y 2l€æDDΞ9#›RY\|ìÖ CY]]•……ñÎÉë×Càía@Õþ 1†ßîÞ¥V«a­%sŽ4ŽyØj199‰‰¢ð“Ë—gÅÃÜW^Mív[æççw€·TÝËôÅ(ŠÎîoæ¾°ÀïÀæaÀÿ},L2Ϻ+MIEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/deb.png0000644000000000000000000000220012060404165021214 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs „ „ªâcytIMEÚ 0-Yâ½IDAT8Ë­•klU†Ÿ3³»í´Ûî±¥Q¨DTjÕ„Á Ñ‚E›môÆT¢‰ñøÃˆýaL ñ¹(D0"ÆI‹–€EÛ …í¶ËÎìîÜvæø£)[+1žä䛜|yræwÞO”••E èTþûòÊËËÕu=}íaüP7 ŒT J!!`¤J!ƒ8®‹ H)Çv$ãŒ{PTEQ†·ª¢ª*¥á2ÚöícËæ·)Ñ4”@àムU-T00¤qeŽëÑ¿Bë—mì=tœÊYÓY8¿ŠÅ5Õ¬^^Ã7Û>BÓ4” Àb¤>"¥<â8Ÿ¶•E>]]]ì=ø#þ¸„¢(*.eγ©Y0ÚûæqëÌéÕßu&Y¿¡™`(„b)Ð^ E(bèâqúÅM|²³·^l@ÏXä,‡œå  ªÏmz‡–µKˆ”‡é‹ mš\c€Òp)Ö>€Vz˜šE 0-›T:‹e»‡™gʞ꺇þËIRº5áß2ÜÒÒBïùÓôüÇuóø¾ÏÖß3˜ÊPTÀÈäxéù(¶|zPPáȉs¼²Y;i¢gY†nðpÍ|^^ß@*m5mNþ|žW›WÓ¼v9ét†Á”ÎÐÕ žYLlU-•3§pªëþu–»ñÀÀ·Ì˜ï_!gÚDÊÂ\º<„žÉñæ{Ûð|`P%“É.)$nÞ# ÓÓsž¹sçxàiÓ¦Ñ××ÇÔÛÃ8®Cbð*Ѳb•×›Waš{/-ô_I §utä$¦³³3ô€‹ŠŠ¨¬¬`÷þ=tŸ9Ëô›ËÉ;6õKîåµw· k8v–oŸa é< žçñøFÁýmɥ˖=ôOèc€7^hdõ£ q]ÓrH‚…|ÞÅ2s¬Øø1¶iaY&†®óñcƒ±¦¦'€““ÚíÜ…?éœ:,ÇpŒ §¤ç³B‚m[d ƒŸ::cMMõ×C Àf.ÇÖ‡H&“ø¾ÄÍ»˜¦I"‘ »û4Ò÷Èf2ttt$Ÿ]³æIàÄ¿ú D+¦²â¶±¼ul›l6‹ŠäjÅ,Û¦ýèÑĺXì¡!$GC\Jßóð}Ïó°‡êêjvíÞÝ¿.[9ô†F“ïyÒ0 ÇekkëYàþŠk†é]׿ÁÈíË¿‰ÿÍ&•;ì«IEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/cdimage.png0000644000000000000000000000204312060404165022060 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs „ „ªâcytIMEÚ „=6£IDAT8Ë­•Ûk\U‡¿}=sfšLgr‘¶¦‚/ZZ‚}ðA´Ð7AQнШþ9ý'DôYljßE%ЇC¦ ih;™ÉL&Ós?gû0Smš‹E\/›½¾½öï·öZ \.Að øï‘—Ëåß‚ h½xxÉý\zÔÃUt¶¶R"…@H‰”c4[Ý.v£ÇOœÀ9G–eEÁÑZío΋àÁFk„”@J‰VŠÅûKìôüòÆê5Œ1H KË ü’¡Z¡::ºG¹k#%R*Œ6´:Ûüpûw´©29ùcõZ+”Xk89u’©©“Xϧñàáð®ŒÅðé×Y[optâM 'ÐÚ ”Bk…1cÖ.9Ze|¬F³¹yxÆaðh}ñqcõm¢B!•Æš ÆŒQh­‘R’¦““ÀÀš=`c K ÷9ÆžKðlÄDm‡Ð)´ÑxžÁóì:xEžçdIv¸­­6 E^ÁÛ)£Ý3T½‡5>g£yŒ1­¥R<ÏȲœ,ÿðÆúcFGº !Aº ¶’ÙuÞxý]*%Ÿ<Ï‘RÒl6©TŽ dyAšƒŸ##cHé!Í ž‹¢BEcµ¡ÑhÐl6™žž¦Z­Ò|º‰Š0ŠHSw°y8PJ 44í—È=[­"œ#Ï2Μ>MãÁŠ"§½Õ¡·Óg§·Cgì„ÃZRr¨¥ÄKžç„Q„çùl¶ÚxÖ²¹ÙæÉú´oéõû”J€t_°gÖ”’”J)RB«Õ¦ì{AŸ‡kkôz=66VˆÂmŠd”Sg¦Ý“§úÀÂþà’edÄÇ9‡snø•J™••U–—ÿàÚµ«/€›¹õ}|þü¹ @c_O½ý÷î-"„~M'A„RŠVk €(ŠØîvy¼±á¾ýæëøãO>û¸s°y¬•äEŽ1š$I‰ã˜8JÂ0 Hâ˜0Üìì\üÅ—_]nÚ„Š¢àìÙw¸;7‹s¦)IœÅ I”¦o¢0t³ssÑå«W>~Ú¯ë¿TnŽ,ÍøðÜÌÌÜ¢Ûí‘åI†¾ïpûç;á¥Ë—/3“çMãŠsî» ßôc!Rrw~žv{›z­N§³ÍÄdÕÕ•àÆë_e^:šþ\Yv¿ÌÿênÞ¼Ù>z Ó‰ Þßkæ®È€E`íUÀ•]álD¶!zIEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/style.css0000644000000000000000000000000012060404165021622 0ustar0000000000000000ocsigenserver-2.2.0/local/var/www/ocsigenstuff/image.png0000644000000000000000000000164012060404165021553 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs „ „ªâcytIMEÚ 97k÷ð IDAT8Ëí”OhœUÅïû¾ù›1m&ŽfZÚNl3•T0QD+‚`Ó,¤Vhªˆ;\èBDu¥[] PQ”‚”vÓT‰ÑÚ`›¬8IRbœ4fæû÷îu1ÍX;Z+¸<«Ë{—óÎ;ïÜÿ5˜R©”ªT*½€˜«÷ÿdÍù›-‹Ó(«ê™U­1;½uOevîªufXœ¾‹$–ÁX~à} Þ½ÍLõ½Ædo?N`T0jÁ \®WÖ|rh€ñÖOéè[!—撚u±Ó9:2I(e™ÜÜÅ«Ã7±)½çÝ/øù–2qÂT1.­Úsv¿NçÓù$ctÍdÈZ—ósÎvífjyžÛz-~/[Šë‹E&/m$Ô*¡#•¥{5Á›sOrjÌgæÖ_èܹ‡K?z$5Ĩ‚*¨ *Tµ]q÷ϰå;“›XÈ 7Ǥðèô ¾^ä¶þ}ŒÎîÂC@EUDATAl+-âÌàƒ$J>y.°fÏs¸¾ÂW§ñf• Ï µ“=¬AQT,ˆEÅ¢£6" ýuº¤(€õ<Öž;ÄÖÑ—¸;ú‰û—&¨n½}9೚ϱ¥qMŒŠûuæ/̇ \c±hä3¸£G.Î-³-±BªPâ̳£|þÆÃ”ïé£øÞªm Š\¦§"ÌUÎqìíÇ©×ü¦¯ªt¤zbüûÚ–m½C@µE¬(¨Á]œâ釶ókùEÔÉ#Qˆ‡…–Bù€‹ãºDAH½^ãøØµ½ÃCCÀDûx:ñ©whœ;Š« âX®Hi*FñœAà!õZo&¾]Ý;<´8Ñ·¦Þ}¯0_=H.» cƒË/°~'EUQcP±4êu¾_~dÿþÇ€£WRy̶ì,ÌåAãöPPT-étŠÃÇTGFŽ\ÝÚ"^ P‹QiæÒÆUÔÆhaÀí=|üѧGF<|ùWƒXÖˆ?xï4°ëZ?œW(fŒ1÷îuþŠpXæ\~9Z­© ~«%IEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/back.png0000644000000000000000000000133712060404165021374 0ustar0000000000000000‰PNG  IHDRójœ sRGB®Îé pHYs¼ÏtIMEÙ  ±\Ö*5PLTE}} ­­­®®®µµµÿÿÿŸŸ ¶¶¸¨¨©©©¯¯¯±±±±³³···¸¥¥©ÌÌз·¹ÅÅɾ¾Â««±²²µ··½¦¦«žž¢ÌÌϬ¬®­­²´´¶ÊÊβ²µ   ¦ÞÞßãããääåååæêêêíííííîîîïïïïïïðïïñðððššžššŸ¡¢  ¤¡¡¥¡¡¦££§££¨¤¤§¤¤¨¥¥¨¦¦©¦¦¬§§ª§§¬§§­©©®ªª®««®­­³®®°¯¯±¯¯´°°³²²´µµº¼¼ÁÂÂÈÄÄÈçççèèèêêêëëëìììíííîîíîîîïïïððïðððñññòòñòòòóóòóóóôôóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ >¢É,tRNS-::::::;;AABCCCDEpš¥Ëýþþþþþþþþþþþþþþ´ú¯öbKGDf,ÔÙ%ëIDATÁW[‚`з½÷Þ6µ,³ŽljC$*‚”„ïýÿ?¡O.¼ŸžÎþÖô jlyQ±'DL–ÖµZÍ7*F-¦ï6uͺFS'¤©ü–m_kÙl6§(J.¿iö4áUËp>ßM›¤úr `.µÇ ^smÓЊÀzV€ÞÃ$IáÿTÝ ¼rùu@z› ¢^óI ³¢¾¥ŒíPB¾®kVRÿyœ’`èÛuÜ4 dâ”VÏ.¤Ki¡Á«É šººÙ% ˆ¾OòQ#±´Ñ·4Ž6ºñ¿É]9›ŸèÝIEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/ocsigen5.png0000644000000000000000000012200412060404165022203 0ustar0000000000000000‰PNG  IHDRX´ÇÅ[ pHYs\F\F”CAtIMEÖ 2)é:,tEXtCommentCreated with The GIMPïd%n IDATxÚì}yœÕ¹öYªª×éYÙWQ$¢¸¡ˆw jÜ¢£&Ñè5FQÑH4¨7&1š˜èÕÄä3Þ\ ‰KLÜ÷ATT@aØfï­¶³}œªêêžžîž™žafè÷7âLOõ™ªS§ÏSÏ»ùäk¯½VÙ8*V±! ‡ÜŒ J9cœ2!¿ÒÈw|¤BžÙ¶Ý²L»¸"/y Ç]ºÇEÖx \8é‘ÍΧ†J¼Úù÷°ÆîêŸL[­íiJ¹¦b#ïŠâ AUÁ#ð›ÛRz>.‹Ýâž2eÊ%—\R®Ñ8ç7ß|3ç¼²kT¬bƒö|~Ñ €pÁœ”‡š¡ƒ„q]tqBô2“ãŠn€ª« – Lò úe®‚;@Îý˜ƺBÁ.‘/Ÿ³´âAËéåì1.)³¹5•Ò-!„‚QPST«*RU¤iXS1„€POÍm©”nw5yƒ,F(­±±qÊ”)º®—kÀ§Ÿ~zÞ¼y•­¤b@è9„r›0‹0âºIS:Ié$‘¶“i;‘¶ºÒIÚ ºIýBÇYʽ,ÍÎ\³xŒqÏÅš?w´‘Íá‘yÐ(ßßG] ]N0Cž²ÒÿöÜ·dÇØ:†eÓ¶ ‡Ó¾y䥡Œ+~ìØ±_|q¼ãŽ;ÝÓ@Å*V±®è ÜÝŒPÁX† Êå6å„rJuI!÷“B‘¿ží »üUñ ÝÇȄޗWà ² BˆJà|…è`Á3ÌŠºA80÷J‘}ÓeŒµÄ÷¢Aºî.\ˆ1.×ho¿ýö;ï¼SÙM*V±AˆYi2‚qA¹¹£ÔÅ?B¥Ò/Ê)uK)¸àBr½¬ÌÌž!!¥¢ü)Œ–Z­æ‡Cágˆ¾ý=5;C“ŒêÐ?™Q"qv…u…ÏOÁØP‹% V Ü{ï½Ë˜>*„¸ÿþû+›HÅ*6tè Z“Ù1œ2‰‚Ì&ܦܦŒNœ`¡“Mã öÖeù28zŠ…9۔Ȧ€¨à@ð€ë0„Èy#F#„Pfÿ(ÇC,u~WÂdW\qEG{â‰'víÚUÙS*V±!B¹p³C9¡Ü&œ‰‚æ!ãÜqŠL…xz`œ‹Îa¶NXØ 0”NQä¾ ;¹Ê5ÐÍœt¾É…d€ <œ]Œ9 òF+@èÚñÇ_ÆZx˲yä‘ÊVR±Š 1:H\w¨M¹-±0‰‹™¡ðG{ëPÆÈö@æ ¼ùHcÙLÖ ¸ú3bºÈ)͵òÈ#•”™ŠUlAQ”zøg&}¤R>†2YG(\¾½LgÅ—熺úp¨¬(èA‰„ÈçGõÐ×_JÉßñÉÐôL&´„}hóçÏ/ãhüñš5k*ÛJÅ*6¸è †nºLe,‹Z>.èb¡[)!ŵ9¾b‰ÞG áK¿£¿bÂNÜÐËaé%úÝ¡þW`Ö_)VJ2g˜C% Ú¤Â˜í·ß~p@¹Fãœ?ñĕͥbD(èiT{RdŒ ƹ䂄dè e3‹8ˆHˆWV/¨/Ûž—Ã/*Í´ˆŠ€YDÍŸz‘¼îR@?ÂyЋ\*šI•Å:É2ž,ð³FG æsêʉ˜ëÁ#»=x¤Ü@!üú׿^ÆŸzê©ÊþR±Š 2DÀ“(ã :…ƒ2.hÙ̲™í  ³)³)“u„Œq¯ˆ°,i2žåˆnËmÚG»`a`ó6ôÎeÙÇøË5— Ê-A”9Éöä¾YŠk;€³Êíý§*AÔ43tA iÕUÁªH@Á»JŒjb¡áõUÃê¢õ5‘†Úh,D¨xˆûgàk_ûZG[¹reSSSeg©XÅtrdã‚ Y>ï8E%øÉ/Ó…CI:BîÏ-”fÙ £¬=6‹ºcÕˉêå}ŸÀ$²9DÏe{òÈCP·TÈæJ9#ÃL”ÑûCÝ´åOª‚ëjÂÃë£ µ‘PP­Ž…‚u·¬MÅu5‘PP„´ªp@S1çBSq}M¤txô@8}úôaÆ•k4ÎùK/½TÙe*V±Aƒ‚ ÓœÁ‘ñÇ™ŸÚ„[„Û”Ù”Kn'e” ¯×k3æ ‹h*ÎËùüVÞÌQ§¾"“)ã*v©¡ƒ‰ÈˆîÁ@„<çmvhHg²¼UÅ‘zàäa‡O9¬6 ¨ŠT÷óJ@VW 5á¯L¬›ºwý¨aÑPP‘O45±P‰S;èPÓ4;òÞÛ믿^Ùh*V±Áˆ 7GÆ ZÄ¡ƒ¦!…6a$SJïFÝ:zÎ3}þÊbŒqÎy碅΅½„C7Ð`&;‚¬b–›'Øæ‘ÔLÑ¡O±ÓßÒ#˜Ö-ù£‚c\ba4¬ª –G†‚J?/€HHcL¨ ª«í=¶zòØšu‘€¦ „„ª‚ZI§„†À‡áØc-ãho½õV¥ˆ¢btP89”sÙhPnS‡š–ü—Êoœ¬Qê&‹ú£ƒ~:X¾ ¥ÛšŠ ðu~%ofi×øý¸…|æÔz(èdÊg2eP&§Ô‡ ~Pô©›n!BˆsOš«¿hù೦ö„éVLöwµ½¢`YðB(Ké$©Û¦Må=”M2jI@¨ ƬY³Ê8Úúõë[[[*;NÅ*6 QÐ畵€N\r›È–ôÙŒÐf’&RêdÓø£ƒe§ƒÒ,›FðsŽç&Ívë"³´KB“•0“QVƒ>nïg¡D|ù N/ NïCÖJÖ¨™F„°HXK¤,J¹ªbcMU„ýŸP*/€PÖܦK5ŸŽ„iÙÔ+„¥¥Ì F¸ß~ûÅb±rFYµjUeÇ©XÅ. vÎÍI±ä3­ ”®ÑLozÎ=:ÈEŸÐAiiÝ’Á³þÏœLÑîìŒ.šfuYrÓg|á¿NI§~<Í1¥ÛÞrΣa Bȹ@` aF¾ž·}¼$‚RžHY»’[w&:’c„Ä–(‹:€0xàeð£>ªl:«Ø@FDák=O¹ì#Á åí$4mjÚ4«|Г¥\¦˜æÔöEPÄ´©Ü¯[„P¸5’‡ˆyòDAýÀõaB¡Û”ºAA÷Gçy¯³íwivþ»änå°Ù´a&‘Íß9I£¥#ÝÿA%Ã$ªŠ!„”qÓ¦¦E…š‚5+ è¥a3ŒC=´Œ£}òÉ'•½¦b t0;4Ș Ô-¤Ü&Ü´˜iSË¢¦ÅL+S5!+]¡í<µƒ¥#aw7üxÒT}é£EáУþ‰ìò‰<¹6~u˜®\«Bt†:QHkJyÚG=ÓMÒÒžÞÙœØÑ”ˆ'Í¢ ‡ûÂL›Z6U„±“  ôöAGÂ܃! ¼Œð³Ï>«ì;«ØEÁœÐ w\ĉ RÓf¦Å ‹–ÃMÛÉ‘‘ÑAÆ;õ]Ý€7Ñ}ÞH7-¢(Yûm)pèÒßÌW~¸êt†0óºÈÆwá óõ“ðgŠ"Œ)³àl€Ý›[O†EŒŒ 1‚@Êx[‡žrÓ\‹š24>'S§N-ãhëׯ¯l=«ØÀDÁLÿq_‚Œ—cÚ̲©iSÃ…@Ó¦ÒY*}§ÔMuý«8ˆ.hÆÐû4”n×ׄ1‚,›9å4ï|"¥D =ä·(Ïw°s—_!„ÿU·í!@¦t{€«l âI3­ÛÁ€ª*H@3,Ò-†:D€pŸ}öQ…Òò¨ÁÆãñÖÖÖúúúÊT±Š ÌNa²ï¼d2MÔ²©åpAfZÔtG¥šŒMe‚1îUß ºf§m3¨)‘H@U¡œR–6lJ9è¾_Ôƒœö„ÑP±ÍÛü×Ó  Hì||&ïÓÁË]1ù+!„3¬óùx0ôÓ\w(D+LŽQÆKçCjjjZZZÊ2clÛ¶m Üóö\±nݺW_}õ‹/¾`ŒMœ8ñ„N˜:ujù[ÆU¬(˜“ ÃYm›Jd¦M ‹65,j˜Ô‰ÚNÕ¡Lveòrd¼’‰¼tPSq8¬QU nkNµ´ë±h0‘2 e½ØXx{Æ •¹Ú((Ì‹ Ú¾ì ê¦d„N€Ð‹z­ýNQ$:#!ç\UQ2mmÜÚ±j]sK‡éôð+““<ž4ýXè¹ü¥]uòÕæ4cò¹T3AO¹¦8ë”Z3Á¶Ž´iÑ=jÉ  5jTGkoo¯ìG{ˆ]{íµÉd²ÈÎ/\¸°2W»wzÊ¢xODÍ´¨‘õ%«&¼ÖƒÜ¥ƒ"GGÆñû‰®Î**Nv"mq.4« Jå+§ë1šéª]ƒ—ùR°Ž°‹àµþ yë¥W¹" mq}OCÁ!„Ç/ãh‰D¢²%í ¶aÆÝžÏ<óÌÆ+3¶{¸ ŒqÊq=¢6‘\úé`† ÚÌ"^—‰,Aµud ÓV0 ‡´€†‚Œ‹DÒ(¯„X2m%ÓV@SÊ›%² !r $ý-«rÂá€æ¶ôˆ‚`È$ËÊ+“]ÀQV±¡do¾ù&ç%ÅB(¥¯¿þú¤I“*“Öÿ((ÑãDB åpAÓÍ•NQùeÙÔ"9ÑA·‚>'ST:™DÒT0Ò4,´mÚ›|Ѯ̴缺*È9ä\ˆrÕ¦‹ìvó^3 ãô£/FÐ&¬-®ï9Ù1Ckjjʹ@M³²1í ¶}ûöÒþòË/+3¶;¸ `\Ê a–¬$ÔM*¿ Óçµ³BƒŒsæàŸè®šeœôHM¦D³ kíЫ£AUUe=“ëtA³Óm„›> sPfrh ÀÆSfº|^ß îN+c €mÛ•½iO°@ PúÁªªVf¬ïPЛN(˜©$\&ÈxäO7©n:]&ltûë%z,®Ý§jÒœ‹ö„ (ÕU!™ÚêÕBø»äºòªú{ Wf¸õõò'Œ¡eÑÖ”I÷¤Ñ!„‘H¤Œ£1Æ*ÛÓž`ûí·_éO™2¥2cý†‚Nv wµeš¨Eu‹¦t‡Ý畞R˃@Ê©› ã uŠæ…œ~˜Ó¢–ІµPP•ç ê«åªj{M'`>¾˜ÝlaÄo¦E*+pHa(ªÜΊu׎9æ˜X,VJnT4=î¸ã*3Öw(è‰z((µ`$ š6³,jXRPÛï•X˜á‚Ä傜ç ö€öTU jB˜aIÝ5‘L[iÝŽ„µpPBPÎAçºw2W 5ñ…Ù5Œã<ž0L‹ˆÊúsmèdvËÇUÔ0ƕű'XUUÕ÷¿ÿýR޼üòË+ª{å…ÀìÎJ 2 æ”Ì{(hXT7IÚ¤i“èM›D¶˜0mjfn»™¢²O¡£MÊ3ò-ÝE5Þ70†ÕFFÔGjªB¡V a·p ‘L[Mm©´a#5MÁA!‚‚¬ê ÙŒæÇ?”i 0B F„ò¶¸ÞÜš2*(8TPQÊÉn5M«,Ž=Än¾ùæƒ:¨ð1Ó¦M»í¶Û*sU^":õ”`™ªy'GÔ‰ f£ “#cùeE™e3›2P”½–\§(nÕ`wA­œ¢šŠ„c†WÍœ6zÊĺP@VW…²§H¤ »¥=ÝÒž²l P0ÒŒ°[?óƒr!R6QÂÊ“i³©-Õ×-›V 0| ™+)o-N0¬,Ž=Ä¢Ñè3ÏF+sÕw((Õ´=µŒŽ¨íÖ šÔ°¨DÁ´A¼LQ¯Ñ’çeÜé»ÛËÐgNQŒ‘BUq8¨4Œ‚¨*Fv.` ”ËMU4cŒTa„@Ž7@.„mSÙÈ&¬/ª>*@8p­Äj°­¼©7à6zôè7ß|óÞ{ï½ï¾ûücÆŒ¹êª«,XPy0*/ æ¤Æx=%dŽ(¥œ0î6Ž`ºI¥|LÚ…@‰‚º“ #EdxN»Á^&È€¾Ì‘Ø„moJZ6Ó b&%cŠNeS˦~˜§'oe‘íÉ@XÞ<ÏòcTlà[(Z´hÑ 7ÜðÉ'ŸH™I“&M›6­-î;"(üen—]Ƹ¶¬J IÍ|((ûKF¨Ó\‚ù:÷öA_–LÈ‘›ÚÒ)ÝÆI.Èï¾çTp¯„9„r*ÕÕÕUÇhãƒ>øàƒ®LEÿ  “NQ&(w(Ón>£#ê„uà 梠—&*ü:jþ™ ïËÊAÓ¢µ±€@ÙÛã¦X+üñDª‚¤XÞ#!@jàQÊ,›Ú¤'Œhè¡ae­¼‚m«X=w¨¯Ñ¼l.è æ‰ º %² ç™mÊ a:è¢`Ïd@ßû…I#ÒÂ! Ah˜$™²L›V–JW¦*8Ö0FŒ ƹE¨»š€çýF†CZ4 eiÝîÖ£ÌÐÂt:]ÆÑFŒQY|«X9‰ ¯R0'5†2áIiçpÁ´I<)Q7Xè4`²$ììbƹ¢Û•ER¢0Š„ F”qN9„C$Ëd˜ („ .dcT[² Kév‰÷²„ùm̘1•%X±Š• » z©1^PÐòõš7<)Q‰‚¶ÔÔv²cŠ£`ïN»ß6zMÅš¦_£z!¥œPfíÙ41¨)‘H€RNCaB¡‚ Á™àœ3΂1n0¡ª¨¦*˜L[¥È  ,cAŒq+V±rAv¨ß*¹ íÂ3‹0Ób†MM7èÏ‹1,fÚÔ”îP7;¦ <§hf“A0Ò‚…¹ò7n½¿ëòƒ P£aPn˜d¬‚ˆ†š†m›b„0ƪŠU)ØiÌ…së erÆ9!À™ åÁÚêPGÒ$Ň Ìc±X¬¢!R±Šõä¾2‰LPÐ4òÇÒÉ4Úõu´ £¾ì˜ò¢`?ÐA„`8¨4…snæµ€ÀqñÉàÂ&Ô&!hB€´nï9p ÂBŠ‚šPq@STK 7;FVž0@€`@n)°hu4OÁ¡„---åjŸ}ö)oy~Å*¶gAá"“—êAN=)mÛႦtŠº©¡^‹ ù+Y&aG;†•A¿8EUWW)ã”1¡‚1D@R!€¼È‰L]Ó¢¡XUÐ0ˆaÚC>µ4ÒTÊ0‚CMUB%TCA5PTŒŒqÓ¢ºB‘I‰>ãA! ÎC„À"´¦*ÔÚ‘.ÐmqèáŽ;Ê5Ô@h2@)mmmmkk3 Bêêêêëëx' JiKK˶mÛZZZ‰„išŒ1„¦iUUUõõõcÆŒ5jTyõðúᢶnݺ×^{ @¶m·´´Äãq˲@ Ö×׃Á¾¨ŒôCHôòbü©1²æÁvú R×#Êœ¼P¯¡„Í|AAfî*¨9Uó~dŒ1Û V’3 ÆJP VA„(é¡–÷= †CZ(¨Z„!eù ‚‘‚%ºRãÜi£È9+p",¸0L¢i8 …:’¹…‚3j%ˆ™œB¤(ˆŒ•~íÊ$ÿ3mŠ1‚ª h8P#a-ÑÂAUSÀ&\7 Â'äÌ…àœ  „þùØ„ÕÄBíq½«›ñÄHjëÎ;_yå•7ß|såÊ•ŸþyÑNÑhtêÔ©G}ôœ9sŽ9æ˜+Ú’N§_{íµýë_ÿùÏvîÜyï½÷^uÕUvý'“É·ß~û7ÞX¹rågŸ}¶}ûöΕµºººI“&pÀ3gΜ={öäÉ“{ïü(@ýy1Œ;Ù¡Ôu‡Ú„›Ý( Ç% š³ljî : j¾ªùTë––Mïvlÿ4ݾ…Z©¬ëE8©׌¯>¥zÌ‘º‰¢Ýˆ‚M‘/EAšŠ5U hXÁ2ýp.eaq³mçö Ëv}±¬}Û'9gâaçÉ2㚪`GÒ0[oþâ¶/ßK·nd$«~ a56¹fÌÁ5cFJ ‹†¦E B8ZᚊCA¥*¬Å¢êˆÔ0À°©ª .¥œN0£ "BÞéþª4µ«¶S’’ª}üñÇ¿úê«eê¹çž;å”SúóämÛþßÿýß_ýêW_|ñE‰oÑ4íÈ#üÆ7¾ñÝï~w·´ ²,ë‰'žøãÿøæ›oö¸ñðáÃÏ;ï¼+®¸¢[}ûÔZ[[Ÿ}öÙýë_/¾øb<÷^¿ñÆñ‹_ @¶úâ‹/þéOzî¹ç’Éd·Þ‹š:uê…^øío{øðáå‚@?¸y1‚1';Ô)“pÜ¡²R‚> ”¾PÓb^*ScüjÚ¼mûê/Wþ#¾cµ¥È+ÂPläð}1å$EËPì‡Ð`8¤4Õõõ¡ ¦†‚J( JPÃ# €MÈö-ë6|òÖæ5oµïÜÀ¹ó3î€yû|õ{Àíµ‹ T0‚|ñéë›Þý#1:Šs¬`ÕðÉ'ŒÞÿ4%X5À·qUÁ‘fÚTÁa¨©J8¨ÆÂZuU°¾&ÔP¬­ `Ø´=i·ÆÍ¶¸OYiÃÖ "U×媓 Gò!Cê×i*níHç½×C'Nœøå—_–ƒ˜+ýI¶^}õÕk¯½vÕªU={ûwܱhÑ¢þœjÎù’%Kn¹å–Òa»°Í›7ïé§ŸÞ‹'‘H¬Zµê7ÞxñÅ—-[&݉96Ѐs¾téÒŸþô§«W¯îåP‘Hä¿þë¿-ZTºŽDg_(p•>:A©F}(hÚŽX¶é?‡ÚÌtÝ¡aDîw¤ IDAT–I0Î|(¨ÇwmXöpóÆe=*èØÏ5u.DJÿ  ‚QuUд)BHA0 )¡  iѰVQ­TóÖõ­_½lý§Ëâm;;¿}Ü´y“¿z™€rF7¯øÛ¦ïÖ©«ÁØÄ#¾S¿×Ñy¯‰…¼Z@Œ ¦)‘ ‹jc†Úð°š`mU T„†ÉÚ’VK‡Ñ7;’f*m§MB(£”s!8sâ9@˜6lÃ$CÖ5šN§wíÚU–¡öÚk¯aÆõÏioݺuÑ¢EK–,ébøòåËûsªwíÚõÝï~÷™gž)çꯩéÏ¥²uëÖÆÆÆÍ›7oܸqݺukÖ¬Ù¸qc^ð°¶fÍšË/¿ü­·Þ*לÜ}÷ÝùË_~ýë_Ÿy晊¢ ä¸c”RÛ¶ÛÛÛ››››ššb±Ø1ÇÛôRC݈ CÝzyW>Íñ|Rë—põbd^Œe;æe¥  2!lËØ²ê©->ÎhïµR›Wü¹uó»“]¨Þ,  œ2JÓÍöD‡Ùf$¶%š7ïܲ6Þ¶‹sVŒ»CÆ}[oýô…»Û·wû釘‰õ¯ÿÞ¾eÜ!烙 (•Ç9zy2 Ü 6 !EY™T'ÀÉ“ñ…C-ržyIþŸq ¨C7nÜhšfY†:ꨣ¼] OýŠ÷Ýwßí·ß^JoôÂv衇öÛ<¯[·nîܹR“º+oÛþûïÐA;6‰BvìØ±víÚ>ø@×õ®ÞU[[Ûo—pæ™g¾øâ‹ƒzµ?üðÃW^yea‰‘#Gî¿ÿþuuu†a|þùçëׯ/:lSSÓ·¾õ­H$E‘„˲LÓôžÕ.»ì²cŽ96¯/ÔÛ­¼ˆ u‰ ¡2/†Y¶D»L\Ðô"‚n„e3B3©1­ä¼iãŠõïüÉHììý&›×òŸ›§œðÃè°É}z³4KÔµ/ßÓôÅ;¥yqó8îdûÝöÆ×¼üKïq©˜ØöñX žvÆÀô‹2Æ=ŒnÞ,c‚R.cÆiƒ2&Ò‘ Õ…$@ºúêÂE˜õŒ!¨jþ½}ˆáš5kÊ5ÔìÙ³ûúl_ýõ+¯¼²÷-i‡rHÿLrccãI'´eË–ü½±Ø‚ ¾÷½ï;¶sþ…®ë/¿üòƒ>øÌ3ÏtîÒŸ@X^qö~6!Äm·Ývûí·ð‰rÊ)‹/>òÈ#½ç9!ÄÚµkúÓŸ.Y²¤¨3-N†Ø†††œ¼PÏšÓY׃@B¸é–IXn‚¨iQß7²Žº¾SN(“™5EôdÛÚ×ÿвyy^_h06ªfô¡êÑX 2jñíÛV™‰ÅR|í‹?›zÊ-‘úI}wË"!Í´(„€3»g((wqØ–߸âQÁ{[J¸õÿÇFmØg -ʄðøªà‚Ë"Ó¦iƒ(1!*X²ÒÔ$aT†¹ƒŽ·€| Œ¦âÎÂÜC{`ë´ÞàñÇßwç™J¥-Zôûßÿ¾«¦Q‘#GÖÕÕqÎ[ZZZZZ ï\ÂþÉqeŒ]pÁ]¡à´iÓžx≽÷Þ»«·‡ÃáÓN;í´ÓN{çw¾óï¬[·nw¹Fµýìg?ûÉO~R`1ü÷ÿ÷Í7ßœãÒ€N:õoûÛ¬Y³®ºêª^6,«¯¯ïì •ßP7ŸS¦†:îPêAG8Æç•^PÓ‚47(ȹhÝúñ'/ýÆÎGƒÔ`Õ^3/­ŸpDY5!‚³–MïlZöµ :³õu¯üê€ÓîPƒÕ}q¿0BJ=èž;™ ÄL~úÒ=-›W”çqг-ïÿuêœ[\qzyò¡„qL˜eÓ´€„0UAB¹aÒ”AL‹Ú”1ƙȨóxZu™Ý„˜¼iÒCW¬(Ï™:uêøñãûè$?üðÃùóçöÙgy{ÄG\yå•sçÎõ',´··¿÷Þ{ÿþ÷¿ÿþ÷¿·¶¶æÝ•FŽÙ3üÐC½ñÆy5bĈçŸ~Ô¨Q¥ŒsÔQG½þúë‡rÈÎ;w #œ7o^CCC{{{{{{[[Û®]» øl”-]ºôÖ[o-pÀe—]¶xñâ\qÅ;vì¸ýöÛ{„ <Ÿ/”{•òLHǦ×PIAY//d¤Xš[!qSC !ƒ‚Û?}í+÷y)”Ù(Ûî‡kÆæÙQ¶÷¬pÍØOŸ»Ù…nÙôî÷=na_ܲ@@!„ ¦«Z˜Ùif§©Ò“­¶Y’ú裲 uÚi§õÑI.Y²ä{ßû^*•Ê÷i üú׿¾üòË;W:×ÖÖΙ3gΜ9?ÿùÏï¼óÎ_ýêW„dEz'Mš¤iZ_ϰeYwÜqGW¿ýñ\" J9räYgõ»ßýn·áõ×_ïÿ±££ãšk®yøá‡ø"oll¼âŠ+ $U544ÜyçEǹùæ›—,YRJȰ+««kàÜ@Ÿ/T0Æ3ªiÙ­$d]ÿ7¦M­ì&9ÅòŒsÆÅÎ ï¬yåºpÂIG^š3nÉú½&~Ñoÿ¾ðµ}ù^|ûÇÕ£,û]ÓTì® 0vÿ9œ§b *ÑTÙÊ—þ¸üåG‹Ò¶íÓ¬1CÕÃöšQ3ò+¡ª‘ zӎ͉Ÿ%v~Ê)¶m^–‚±h0Ö „¦EÃ!5™¶zÖä¯D'\,¨ŽcÑ€aQʸª`Ã"2ß 'À„” Œ©”£“^òá‰P&]èÂmÌ$GÎAÁ6€pÍš5eÑWƒžqFŸÄï¹çž… æÝÅEùûßÿþõ¯½ðÕÕÕ?ÿùÏ?üðsÏ=×åÚwß}ûa†ŸþùÍ›7ç_@Šræ™gvwÀÍûzPS"Aõ+ëÃAuÝ–¶æv=V숥ôpè iÖ0`üÈØÔIõ_îH®þ¢Ù°i(¨: €PÆ\pB¹_@ ñ0&5Ü”~Q=‡(Ìù¼Ó3€°+—]wmÒ¤IÓ§OïOüèG?*Š‚žyæ™çwÞ_ÿúWÿ9÷à ÿë_ÿêêW±X¬¾Ùœ¸f2¼ u̘1]!ý@°O?ýtéÒ¥…ŸáÎ9çœG;çœs®½öÚ¢YÖÆ¿÷ž{s2bäv#ròh¡œnùk$<Øs“B½ÒËí á  ãÔçå\Pb¯yå7j$FL9©Ü‚Ÿ|ü—ïÿ¥ðaÉ¦Ï » {fœ ½XäBÊ‚AP«Ƶî(©7Z?aÚœ›"5#Aöe !äZ¤~ÒÑÿ®›¸yùÿ•¢šªwlåŒ œ%ÙˆâBƒêÈúH,ªmoNµÅ !@8¤&R}R_Ý0žLû@„ BÁ‡p@cb$(ãò ÷¸.:í åÇÁqŠB vˆÌ+8ŠÀà·^x¡,ãœþùe×À|â‰'®¿þú®Ppâĉݭ…?ꨣü?öæÛo¿Ý¥‡Å˜.ݦL™âMݽ@!ì™®J¿Ù¡”11‰ÑÞÉÁƒ(åiÝ^¿µý“ -íIÓÅ•¾J«Ašݺ3¾üÓ›¶Å)"ïÏɪAι,¢ Ô[0”RF)§®SÔñ£B!D@ßÌgNB @ÞƒS©TY!B袋.*ï¹mÚ´é’K.)¤wÕUW…Ãán™“Ë3a„¾žaÓ4 &‰mÛ¶uwÌÚÚÚ±cÇz3‹Åvï*ŠF£v…Û¶ýØc>fß}÷íV¨øðÃ/zLSS!Ôu@9zÙ.:¿AEAª‚‚œ Š cœyŠ£R¯AÝŠ@˜J¥žzê©Þ³Ï>ûœzê©å=·»ï¾»0~Ìœ9³ÃÖÕÕE"I‚«ªªªªú\N¾hû:˲N;í´Ë.»ìºë®+=y'ìv"8(lÆ E)Å/ê_ŒÕ5%å—rl½¤/#ƦÉ4yóC usj¼ºC檒z%‰#Ñ”n+¢žˆWö«ik‘’ÄÄm½½¼@hSЛø=}€ Dy"™…MQA¿Ðu»B¡›)’M"ö†²áùr‘„‰”™Ò¡L°ì£dÑœG®´a§ [‚[]MÄEúü-–ýÚ1ÀMAa„¤T·@Bê”ʧ+gCH7ì®|¼ƒÿñ”Å/zÝuו·¯±±±¨ åЃ‘!„S¦L‘Uù”\Êh5559OµòÛßþö˜>}úqÇ7sæÌÃ;,¯ÖZźkMMMÅ™GA±˜ÜNhjñÕ‹U&cÔW ( þ¼>Jíœ\P_É„åcË^qNu`—DPˆŒ`iǶUE Š Áäô”PJ (æ´ôë½Y„4B™,¢Èò‘ !,%ò†R0–Urˆ,_†Étw®ªEj°°’ ¯Lw†},xã@J·ª"Ó¦.ý®^LÎNè£ÈÞ‹™mR@ ‚ D!˜Ò»t}b B<øàƒ½gܸqßþö·Ë{nÏ=÷\Ѻ´'|¾ùæ›–úÇ¡×ÐÐP]]] Øéûðð+VHWÆxܸq3f̘9sæGqÐAE"‘ ªõh3-ž¶îï›Xå?¥¨¬3–2@¥TØ”QÊ¥ø‹W‘õ¯ÛDÞ²™ %JeYè¹C½êÃÎDP¸ß$›‹û+hao[îñZI¾÷ÞËxv>Y,Á¹ð}>½ò’2®1‚šŠ‡²m=ðùú¦•Ì Âj°º(–ýz˳àm ¨š‚m7½ÓCÄ®¸|οäb’<J„PÁ¨µ#]`¶1¾óÎ;Ë–-ëý87ß|sÙÛ–’ÈÚãfOýìQ„Θ1ãùçŸïÖ»c›7oÞ¼y³ â†B¡iÓ¦}õ«_=þøã9æ˜~ðè+eqæ$îæ|Þs:Eâ‰â-|§|eÓb„9ŽM¯‰’‡v~ ´³4bœDêµÒeœq¯¡n.n;{yæzûÖ¢K²«¬È®š îÆþìiÝ®‰…L›B8º•s%BPU1d@e—]_éjs/-qt€Zû†@G…JˆÏ³»t¶`0tèŒcS±ýÙ¡>wh&ÆÍµ ó¡®ôhÆ* ÂåÂGß¼¤N­R@ËN·¢;˜HYÃj#¦›ë/O/eå»ìÙÕÏ„ bÔ× ê ÿL ÚFM,¤©˜2Þ9L˜]Ué<áq päj†šŠ‡×…'­± ßÕš¶l kyÊÕçºßŒs~ÓM7õžžqÆóæÍ+?¯ÇKéÌ9,^__ã7–}صk×Ο?ÿä“Onll¬^W6kÖ¬¢¼™sþÜsÏ àö&uóå2ÞHWF¦½,¯HLáøSNWUR&™&É´p¿¼Á”AÒf–XŒa3Ór´Óá4§Rž{5‚9(èôQu?ÊŒšÝQŽ,{ºhOUq*Ûº½Ý "ûí¹î>EA)Ý"„ ük‡J]u¸¡6R_®«‡ƒj‰S „hëiÃV¬(BˆPæ+GïÊêJ'w* ¤u{{sê“/Zw´¤ç:Uöùðšk®\ÝJÿóŸÿô¾Éxuuõ=÷ÜÓ\$N—2Ÿ†a ¢9¿îºëŽ9显ù¥—^:ꨣ֮][Á¼¼6~üø3f=ìÏ~X¸*² ÏéîíŠÂ0æ´ Ü±£iÅòå† ‚gÍ¿"©Ûù4Ié$­;µóiƒê&Ñ ª»ú2¦M%A$”½Ð sJï(È—ψÙÿ3ŒÕPläþc<«ïºÕÊâI# *Èqp:_%!¥\vü\P7ì Ç„5ÕášX8TÃ!UUA$¨¯‰`TêÆk˜¤¥=mYTU°œ??ʺ_B@j*†t$ Ã"É´µuG|ÍÍ-í:BHÁ]f*ÒÍxï½÷.\¸pPì ‰Dâꫯî=¼ûî»û¨õ ¥´¶W.Ocÿ˜ªª?þøœ9sÞÿý²¾uëÖ¹sç¾÷Þ{#FŒ¨ _g»úê«ßyçÂǼÿþûÏ<ûìœ9s×2×û×—¨É˜øóŸÿdY…ðæÜ‹®ªªL;;h¹se©lŸK}ŽPx€¬¤˜œˆ`Àûö‰a ka-\¬¬ª©ŸŒ‚°Ï°mÂâI£&"„yb¥ B²¦àdÚJéÖ X·±ª ‚Q$¤Žjˆ5¥5n4·§ “@k«Ã­éwq!DJ·Ò†­©8PUÉp¸ã.v¤´…À´H¦^Ó¨HX£ŒÕTÐ0G"Þav „€[o½uîܹžêÕ@¶E‹•+lgœqF_äÈ8Ï)B‹Bµ¿3í °úúú—^zéòË/_ºtiÙ{u~ùå— ,X²dIö:ÛYg=}úô•+W>ìš Þz{Fm]ð¡¯e Ôilܶíw÷ý¦À Ógüi'õ J­Q…“ãÈ{áÀÎy¡YÁ^¯è°ÉãýfÉŸFŒ°ŠÔ ¢E@J `¯+,lmOWW…4SÆ„( A@kGÚ Q€¦bÙ2©¾:´ïøÚXDݸ=¡›Ä²™BQp( v•ÃÙZ6µl ÀØ«rAu.|´lŠ1Š„4y”ñDÒÔ »¦Óé /¼ð­·Þ*{!AyíñÇÿÃþÐËA&L˜ðàƒö]ž|b)Zª5ûþteÕÕÕ>úèù矿xñâO?ý´¼ƒÿãÿ¸ñÆ9ä ò冢(¿ÿýfÍújáØóÆ_œwî9KþñXU4Æ„d¶qÁomm»ì»ttt銘rÀaß¾úÃâ>"˜ ²û„ãöd®LŒÈ*È›Z€f`«´\Gˆ”بã=e\´Åõ€¦DÄ!,©“T0Jvb‰hÁ€ÊWì&ø8 © "ìfMciz7ºa&Ñ ”È€Á|pÍ5× ä‰^»ví÷¾÷½^昄Ãá%K–444ôÝy†Ãᢲdòrã'Y¶/þðß~úésÏ=·”f°%çüÿþïÿ*ø'œ¤—ŒgLqèôCï¹çž¢Ooo¾ùÆìYG?ó쳦I,Â,›Jñ³tÚ|î¹gÎ:ý„?ê’V4ã¸Ë~xZ"m'Ón:ŒAÒÑM¢›Ä°˜a1Õá@î%ÅøÃžï¯«¤˜® «¥tcÔL ê[lÙ´µ#O¥h¬QÊšÛRiÝD(@ ç ó‹­k6µ56% ‹Ìêì—¼V!„E¨eÓÂB9YÏ_>øàÔ©S,X0§µ¹¹ùÌ3Ï,ܤ»”Müw¿û]ÏD>K·X,¦išm‰fðÁƒ÷“¬(ʼyóæÍ›gÆûï¿ÿú믿ñÆï½÷^/ï^|ñE!ÄžYM‘¿ dª .¹ô{ñxâG?ZTøYpýúuç㌉{Mš~ØÌá#FJ¶oküpåŠÛ·v}7Õ9g_vì¼o-ËöÔDi¿#Ôen]`Vu ð#_wˆ`• DJÑH!1‚SˆwªMX)™Ÿ„òA…€Þs­Ý ã)Ó"!D(£”K S„  誔ð\¸pá¨Q£Î=÷Ü5§§žzêçŸÞËq/^|ñÅ÷õÙbŒGŒ‘J¥ öÉ'ŸtttÔÔÔ ês(š5kÖ¬Y³–e­Zµê7Þxã7–-[ÖÒÒÒÝgØõë×§ÓéܰÿñÏ_Au͵×5úê«ïè(<ìæM7oÚXÊ ìý•CO¿àúac&ë÷ d;øWÐu8°dth„P´1‹ßP;E­¤ª0¦©8 )Ó¢„2Ó"µÁ°,¤aœ@„ªŠ„Œ Aý¢}Â_s~fŒ]tÑEO>ùäÀ9Ŷ¶¶¹sç./˜ð]Š]~ùå·Þzkÿœs):¢„—_~y(}ÀŒ3®¿þú§žzª±±ñÃ?¼çž{N:é¤Ò¥(¥Û·oßCð¯³ÿÓÑ¡t«ýUÜé (Î>çÜwÞ}ÿ¼óç÷^”gÒ”C¾}Ío¾}ý±á“RnyÙ8P·¨nQÓb¦Åò:B©ÛD׫Vì\QŠ/4×gƒ°®/eúÒ­›+Ø3@ B‹‡ÕE‡ÕE¢á@¬*X Êl›ª*Î4e„ ;È[6íª5à€Bù\Þyç ü½7Ξ=»÷š¢_|ñoûÛ~k;Wbþm¹š)ÄÇCM;è ƒ,Xð /lܸñ?øA‰p˜L&‡êœxà×]üó e9üÈÑcîàï®øøêk8nü„nîYhøè‰Çzñ‚Ûýöõ¿7åÈ´AS:I›^,Щ ´lf9 •º G˜ñ1T—Ôk0¾ã“  ”'`MQ0š4¦æˆFS0 hJ8¨u$MB˜ª Ù'A$‹\M“¶´§”¿7ÿC¥mÛ^xaccãÂ… wcÀæå—_¾à‚ жç.jßýîwÿð‡?”’ÀR.+1õñé§Ÿnjj>|ø_èü㮬(Ò IDAT½dÝE‹}öÙÝzûرcï»ï¾yóæ}öÙEe†^€°ó¾°ÿÓ«N¿ž :r¸ŒqÎÅð‘c/¾äûŸ~òñÖ-™j¢±ã' RÉ„žN1ÆU †"±êººa£‡œ0z”±“¦EkFPá)ƒú] ŒrÊ2^PêÖJ¤ëÊ zç íl‘ú½Z6½]ÜQôå{ã§_ÛÝtˆ1ªŠhÃj‚MmFq©iÃn‹ëÁ€jŠ‚„6áiÝ6m’e­¤Ø!Q¥€“ê†nøøãûÛßö¿<´a?ùÉO~ùË_–Ò/¦ð®ºpáÂ;ï¼³Ÿ[}ôÑ¥”¦Óéßýîw·ÝvÛ_ëëׯ÷êè{©;wî­·ÞºhѢ‡Åb±!°;?ßÝÂ?Î3m(ã~°òº\²­ÑAAEQ._°ø´³.¢8- ˜Ó Э‚ç„0ÂxÚ`Ž"¨Û)ײÂ/ÃE?A ´ªáû–r˜•jno\Y7~Fïÿ"‚0TŒç¦Eã b¥ï±,‹lÞoOZmqƒq|]M‹šÍtÚÍ3…´HHÅÉõO(Kévjȇ¿üå/3fÌ(ªjQÖD¼üòˇvØ/~ñ‹^¢ ªª¿ùÍoîºë®~FAÀ¤I“JìÕ~ï½÷677ðµîwWö&q÷ÒK/-ÜCJUÕQ£F jüó{>A>ç§WçîWAóû?‰+]mçË"Ì´¨aQY½6Èÿþñ÷ª‡‚ÂÜðó“O¿0eФî(‚&R®:hš$]uPŸÔ –ÛY×v*‘L¥L7y¿#T^i/Ãyf.D¸~ï[m[õXï;ê© ®« ¨Öׄ#!­¦*(3>*V¢q!Ý֔ظµ-‘²TEvÙ7· „°&ŠE¡€ kÁ€*€ÖU‡CÁþkKP!>ûì³c=öûßÿ~)²{i+V¬8ýôÓO:é¤5kÖôr¨úúú§žzjÁ‚»ÅÕ†1>õÔSK9²££ã†nàBþ ØÖÖÖÞÜ”ÂiDûì³O8\AÈ_ÞàŸ÷ÅÜüæÃ?ÙÒÖéöçáŸéü«›dWSÛuW]ú‹ŸüÈò×ï½ï´#f=‘².þ%ÓvR'I$u;©Û $mÒ´I “&5-*sa\üc²L"£Êc¼ øZ "¬ÖŒ9¸”·¤[75­{©—#MÅѰvàäaÓ÷QWƪ‚#P±’Í´iU4!”-“0BDª$ÙØªH@Qp(¨N]³ÿÞÃö]] ÈZ‹êªªö“뻤ûM)}à¦L™rË-·ô…0˜eYO>ùäÉ'Ÿüè£ ¿qÊ‹Ïæ&u›´ŸÄ¼DJ dÛ ~ºÒIÚ i“ꆃ†I ›™65Ý΂²nÆGê–Ixý"„ãí+äÙ-úö.UÞ}ËÊ¿êm=\”íîšR TGšŠ¥¨s(0hZ¤õÖ±éum€=oÜDKë6BPS„ a’æ¶’¤à0FšŠ…±H`ÜȪ¯L¨?2 kR›œs‹ûgºáèèè¸ýöÛï¾ûî³Î:뢋.:öØc{ÙÉÏ4Íwß}÷ñÇüñÇË•4¯(Êõ×_Ûm·õs÷ÎvØa‡vØa+V¬(aW—]vÙ„ Ž>ú脽a„€x<^à·gžyæÇ¿Î›x–÷§‹ÌïE‰ˆž™W—…‘ÌÑEóü¥’¥½ôÜ¿~yûõ¦‘§]_ÓÎ퉔-~N<ËŽÿQ©êôôÊÝ “ ã^—¥ñ |±@ÐuCùš1ªFXÉâYrŒ˜Ÿ¿r×Ô9·¢=É8Ã2.:æ'Z0‚ñ¤å¡Âž`Á€Z[fL!do#ƸnB»íp–* R,¦ôdMÁœ Œã´Yʤ†MN; Tò-·2¡4]×yä‘Gy¤¾¾þ„N8öØcg̘±ï¾ûVUU]>¦iîØ±cíÚµ+V¬X¶lÙ;ï¼ÓK!’;à€þð‡?uÔQãQ ÞxãçœsNINžtúk_ûÚÒ¥KO>ùä!ìÇãV'Mšt 'ì– ,E·Ï;&/øìÎã~üsR`\ï¨à™!sR$>e26™ðj$qܵkgW(X»êåo=?ù Ù„rƼR‡LÑ…ƒ|ÙBhΙ”– Ó?è|v2zÿS7-{¨¤-8Õ¼úÙ[§C¤~RwOæ,Ô¶oÝÐÞ„k†OT¬©X@û+_Fˆþè«“¡”¥ÝvNr!#ˆÂ! ‘L[…5ÉòFºéÌ“%†œ‹DÚÚ´-ÞÜ®§u’JÛœ$©*¥dî ôoˆK—.••pÁ`pÔ¨QãÆ1bDmmm$Q…sNÑu½£££µµµ±±±©©©0!è±E"‘›nºéºë® ƒ`ÀØgœqä‘G¾ûî»%‚Äi§öãÿøÆoì%ÕîSF¸aÆ¿ÿýïçw^Æù÷¿ÿ]@6ú†n(½ô¾¼VJ#eÃ4s:¿ƒ¢äÁòÇ…/ù3‹:¢Øh9–Iéä”òçŸ~¬+pÎþñÿn3é 1“ņˆ)¥”JmBlF %6£6¥„›1›S˜ͨÍqÚÜA‘ªha5T¬®mØÇSþì7ôlØäãw¬yÆLì( ÏÒ­«Ÿ½uÜ¡çüÊœnTñ_.{jÇ篣 _ýæ¯c5u!Ý´M«Ÿú³–Ò…˜÷Yk*Á‰ª`¼0B˜ÁÕÆÂñ¤Ñ×”ñ0F”2Ã$»ZS-ˆsΘÀ áðª>*¦€hš¢*ˆqaYT)×>²iÓ¦M›6õÿ¦(ÊüùóúÓŸŽ7n )Œñý÷ßä‘GÕu>϶}Ë-·<ú裋/>óÌ3 ƒ:cìý÷ßøá‡÷ߟfÆúRzÑE1ÆæÏŸß­AÒéôí·ßÞÕo§OŸ~É%—ì®;UJà³­µÍ¼ðó>®]’??ôüŸÂmã—ao™Þ·s½Ÿ|ø^QnÑøÅ‡_|X¶)Õ£ö>ù¸ú G”EÕ³Dt¸V÷šyég/þL”Ƈ8µ¾\þpóúWÆxvíøÃV Mì\»kÝ‹í[VȼS3Õ ¨Á¹H¦dÚê·ä5f¥Š£…Ùg4©îã—lÎ „Œqò««Bmq½O§Â&B€â\X6•-‹U+2.ñdŸt/ÇÅ¢ªp`X4Tq¢0ÆøôÓO¿å–[>øà{’‡zèm·ÝvÓM7•þ–µk×Ο?Ô¨QóæÍ›={ö0vìØªª*!D2™lll\½zõÛo¿ý /lÚ´IQ__×]wõ©>gŽnªmÛ]tÑgŸ}¶xñâ9!ä’K.Y·n]W„þOúSÒAÿ§Û0Œ-[¶}˺u뤳(9¾ š/òç‘?ÑÉùéoŠäíÜZáö¹åR·”¢y×¶~^º‚ÓŽm«:¶­ ׌Ýkæ%Õ½h{Ô-ô¬zô´QûŸºýÓ§J‹Þ¾uýë÷¨¡ÚÚq‡ÆFî® Eê°œQ[·Ó-zÇÖä®ÏâÛ?¶õ¬GŸÚñ3’¬*ÙœìÏüm!¸™,ž{X"-î‘ÔÎq#«uƒt¤LÄ0žñgË&U‘@‰ÉŸ=þÆ“fmuØ;xm© ‚À´i*m÷Åß hJ$¤í7©!ÀŸojkîÐ%ƒÁo|ã7ÜpôiÓþÙþð‡?\½zõ_ÿú×n½kÇŽ=ôÐC“\vÙe}Š‚BˆÎ⌱Ûo¿ý™gž¹ë®»Ž;î¸Âáá 6\~ù导òJÞߪªúðÃ÷õ­ìj@<ýôJñدZõÑêÕ«¿²ßÔà'|ü/Ó“ˆ šU«îÈXÓ.ˆ ƒ…™ï¡œÒÝÖŽUïh\óüí¿pôþ_+­“lo!гq‡~ÓHìhß²¢[ï"F{Óº—›Ö•.ä Gpzÿ—0Å·­"%ô“2;RÍë£Ã&—ývmùtLµe×Ôˆí‚RΘœ{!9Æ…¦!™XÛw“`Ù´#®×T‡D™%Ã97,ÚÚ‘î ¿¨‚g<P‡×…"AuëŽ$tÙQ&LøÎw¾sÉ%—Œ;v¶eYßüæ7Ÿx≲‡×­[7f̘¾;ùt:]]]Ý•¸„ðàƒ>ÿüógÏž½ß~û…B!)eG)moo_¶lÙÒ¥K{ì±®‚pš¦=ôÐCßúÖ·ú ülÛ¶l+‘H$‰];w¾õÖ[wß}w‰¡ëñãÇ_½àºƒ>¸¶®¡*‹„#Šª!„e„%'òÇ]‰ü/C½r=ʉ[GHó ¾È—üöš-ëÞß‹½º|ľ¥f3õý>Ïõ¯ßÓ¾ueß]Yõ¨iû²¸6£³uFtb$’ÍŸï\ý4µÓ¥¼W ÕŒÚÿkц}”@ÖÂX a%X8ºú™Åɦâ"P#F?úäoÙê(ƒ¨B¬ÉNhB#!@J·úzr‚Á€ª9½)¸aBXï—lˆ!k(e¦M9MaŒ7ÔFƪÖ´£%•LÛpÁ<õÔSY츺ºúÔSOýÖ·¾u 'ì®|Š^šmÛ×_ýý÷ß_ÞÏK/½ôÁìÓ3ßµk×èÑ£KÉ«T¥¾¾>KÙÚÚZøbGŽùÈ#”1S´íó¾Ÿ7wÞ /<_–»€ºüŠ«oºåöLðÏüùÉãY œ2øGÝïÝW|~QÆ)•^ÓŒøÙû¯üõ½çܽk+ƒÎ¸;X5¢ Ð!_®øËεÏõE"=ÂÚ”o¬Õç¾¥u¯üªmËòr6r¿¹øNï°óóδ9?ª˜ÌçD5¥µCtû-‚°: h ‚P¢ ¼œDʲ 5JY4P0BBÀ#<’L&Ÿ{î¹Çü¥—^jiiW!5jÔ)§œ"µf"‘̦iÚ½÷Þ;kÖ¬ ìØQ§ÿ˜1c®¿þú¾>óT*UâÆF)-Q!!ôo|ãÞ{ï1âÿ³÷Þñq\ç¹ð{Ê´íè@ö"RÕ,‰²,Ér·ãÈŽ[±ó%Nœûå'þ¾$7¹¹×iN®Ónš'qï–äȲìHV Õ›(Š`It`ë”Sîgwvvwv €$HÊ8?þø°³³3³3ç9Ïó¾ïóv\läS¿—þǹ`©Bˆ‚mlVò§*¨/Hþ*j!JÈÇ*ëXMÍCÑÛEHÎÅÒ«ÞöÚ æÓ—Ò3çÔ®ûnùoóũӥ×<Ù¹îØK_qrlvÂÔh_þæÎuï6¢­ópõä­‚«¦BÈR%%BÍMœDY&5u ¡bY¾àºóåŠjJZ„àxDoNZRʉi{:k3&’qs:c€ijŒ )Á2)Á¥d°x<~Ï=÷ÜsÏ=Žã¼üòËO<ñÄÖ­[·mÛ–Ëåæùakmm½ñÆ·lÙrûí·¯_¿þü›®]>!tÏ=÷¼å-oùÜç>÷ùÏþ|(x__ß§>õ©_þå_ž‡¶ÝÝÝ_üâï»ï¾­[·zžwþáÎ;ïü£?ú£›o¾ùBÁ^cäƒÊ<Ï Ë*<&s…VÁsw©) !c¯ú ²2¡F )%¶nzÿgžÿÁŸä§‡/á=|xbbb&Ù̇a‹-Z½zõúõë7nܸyóæþþþùì—t©Æäää7¿ùÍoûÛÛ·oŸ9º$“É»îºëÞ{ï½ûî»ç‰0>>þØc=úè£O?ýôñãÇge‰Ž1xßûÞwï½÷ΰYã…C¾Š<Ï?ùãÿuðàAMÓu]£TÓ4M×uªéº®kšF©®iÕ4Bc\㹞ë:®[üÏuJÃuœÍ7n¹û]ô«à}4ˆpµÕå—„úKø•û?¨ŽKo6ÏÉÞöÀÉ=?u Ó—êÖ]yûÿ×Ò{ý|B`5gÎÄñ—ÇŽ>—Þ˽Yä4R=šì¾ªµïM©Å›.HAȬÆé=å'cLQé&¥0E¥Ÿ ¼í—’KÁgR°Òžàžà^bÑÚöåonðq§vÝçdG150Ñ1Õ Õc±8Š1)Ar)<É])˜`ó\æ9œ9½W½;Þ>à«–¡åòÂH£#Tp<Ûñ™! Ô’Š`Œš“‘ŽæBht2?>•w=N)¶vQÓPÕhiŠ !“1såÒæ5}ÍBÈ×'ŸœÈ< Q<1·†B.D# ¬^üzÞèèèÑ£G?~òäÉÓ§OMNNNOOg³ÙB¡àº.cLÂëºnšf4Çã©Tª¹¹¹­­mÑ¢E]]]K–,YºtiOOO2™üYq4 gΜyî¹ç¶mÛ¶oß¾cÇŽ §ÓiUwhšf*•êìì\¶lÙúõëoºé¦ë®»îrˆ…CCC»víÚ³gÏÁƒ?~æÌ™‰‰‰l6«„G]×ãñx{{{ooïÊ•+7mÚtã7ö÷÷7.vœìÍù‚>aª0¼èŸÅ:¿bægÀZ³ªò/Pü'‚hUUð¾Zÿ+mP ûYc0¡Tø{ö¹K½)d©*Q‚˜kŸÜ5´÷±ñ¡)$P-B4SCÍ­R R&¹Ë=›{9W«Ðî ïí½æçÿB¤Z¯;’;’Ÿ:éd†ÝÂw²œ9Rr„0&:5bš•2ã‹"ͽñ¶åÑÖe˜è?³SM2n9.S_› Œ©†ºãRJ¥†"„|§!$BˆRl;žï2£k„’+8õ<¢ÝÔ©eê=M«–6c ŽO99™Í»€FðèDö¢¦¡*$f\D-½³-ÞÝBžÎŒNæ—#ãLÎÎæÝÊgà2o}°0Þ£ñMJøæŒ|E¨ƒR©»(<°eð!¹ Äü‚U ~µv0µBhÕ–â§,î¶Ô‰^ÊŠº ¨Â?Õ°T)¸wêµÛy?w‹Y D³š—\\´ÖJõ˜±6ÍJù)…¡¦0R ¯0íæÆóÓ§²£‡¦†^µ33U\[–Þ¸ü¶ß^¸¯¸¡”@q¥yZ¦¦jç1FcB.ÅýúŠ‘ãñÒ"|¤1uªZÖbGs*"„LD%Í«—6!Œ›<¬€€RœÎع‚{QÏ´µ)ʸ [¦15`»Ìñ˜:XJðdº¯<†…Î[ ãc^؃J'³ÆÈc¾ÉK¹à¯²£B¨çµ¨t¾®"‚e´SAæG«˜_yã ÷VÆ×2ù+ƒ± ¸Ò(“¶@徘8µûð _ÉOž,O=K6¼éW5«©ú6Ò¯°iÒ#M±¶öÛ¤Ó§w{åùÉs xNfá–¾GÁöš’ÆÆ(bj*u…¬¬iD£˜`eš þ--…DT¦ Èç…¶Ët4%¬Ét!ˆ…ª[=€ô˜ÌŒÁÈD^UâÌ<´¸âBŒ…Ûs]0B%j6@\¯šÎ.á¸԰WCøjaffõ8_cä“uh_ÀöÌÏùl$ª¨^-/,ã_)Y´b²ÔÞVÅÏrÝ¡,:=*3šâñC™ÿÏ |éëcG_ B\çš»û®ÿ8Bx&ø×SÝ7t¬Þ÷ø_NŸÙsޝO°…›ü ù‚‹@ù™©.H¦N ¥c„$cÜõ„ã1×ã%ãBHŒqQF‘!ä1N ®ÂBY´­×ããSù\ÁÏãŒK‚Œ.l–IèÈäìÖT”•|ä˜`$€lÞeL,á¸,0¯ÎYEø`jg=äSx#«¬®¿úâ$«a,˜&вÊLÑŠ·—˜¯´Ø0ÑâÉâñW4©(™H Üs†öüèä«ÿQ•Ò¼äÚ¾ë>†¾ ù°˜ËoùwþÇos¯‘Áãü§™,Œ 5<Æ B$Bc¤Qlê4bjK³ jêT‘6—ñ¼ÍˆÔ¯RJO ’`ÄÊeîˆ ‰LÄ U †ë1ÓÐ8ŽÇ=&B#’ÒÒÙîE_H1&¦3v*a­Ä!\HŒPÁö¦Ò!·÷Â=½0. æÍ„ê5`{焽b‡<(ÅÌœùj[=Yv{µšg4È ëdxÓ^„¿ÛÝ ’?)J±É`ð/àÙÄ?õûô™½‡žýBaººö”hÖ²›~0¹€!~=ÚÒ¼dóè‘§lCØÂãp…ŽxÔ(8ÂÈ4¨” è`ÄÒQ=Ñ-ƒR‚¹‡i#²ø¼(gYlÕX^v!ÕÖ8bjy»˜úžË»–©ŠË›»þ"Î:µlì¢èÀŽÇ&EÁ<\ºÃW#«üK°’+½´Ôɯüü:‡¸²gù«?ëá_QäÜóèŸ âqÕ±òNÍj¾€U‘êkw¬n „F´má1¹‡F BˆqN¸.7 ªQbè$bjñ¨žŠ1K£s.²†bB2¦šŸpŽŠì#Ä¥@ËYÏãшQpŠù¨Bʉ©|K*Š)’åí‚ern;Îý˜Ê—J$ q{Å \@»‹ˆyÙ”bZÁŸ,kƒ©’àWÊü¬Êv|ä žU¶}¨ KaÀóÃ{AL о²ò)Jɨ*òWf±ê¬kÄO¨m[|U}ñ«¡(€Ú¶\@üó?܈ç"©Å OЕ8¢–î¸ *Ê…cª°ÐÐâ-Õ5‚=.TÐvXž`B0ÆcT‡\¨Æxsµtß’”q1:‘Xšeê#Î¥íðlÞu\v)æ:9ÓÒ \¼Þ¬0/Hõˆœ ö*tÎRICƒR§”RWꢼ²ÉQŸÈç'¿Qy¢> Qî!d5ìUåydX()Ÿ̵œÈz.òW ‡ù©¡éá}áf$e%Ï×i=´kçhmk_±ðd]t°(u"•ŠB€1Œ(Æ”b]#††)ÁF1¥˜`„1B0@È"ŽV¡–©å åj !e6ïfó®JC½ü ô€ðgíêÞÜ0¯LtÂ`¯‚íù°åŸO¤|RL-©J<©„¨"ò••Òe¥ ZQ –ÛR›äR ~>ís *Ÿa‘¿úä/ä«™:ýZ½o׈u̪û9ñ¯üjÞéF¼ÃLt. ·È•r瀺™¡]èçV‘<¨Ñ6¡2¤†yTO!S:‹Ì¯öd@ç &XËì|ÙS@.˜äse…³¢FBV„KhÇj ÕÊRg0æ7{ð›ù ­`nÝö73ìc³÷ÍŽ¬÷¤}Åí Ïì70B„`õx"¤YÄ…à\(Ìä]„Ë%ˆs™wX6ïÚó÷˜þê5p‡*D¥Ÿ…¦A39ç ½D @x9âÜ9 î¼Ñ®àU‘¼’ò‚y²FôóYªóøaHQ‚ ê„d©çFHJ©&ço$f!$”>ÕCÍxŒ#¤š‚ç‰Å#!¥Ç„çqÇã¶Ë+Å–&:øFŽP킯h.,ÎÕ;°™ ]p²ö%M¨<€rKÙº³Ü¢¡‚óU€„¨øµŠK…BNHÂKhPTy’ÕDïêÖ0T!_‰ÿUJ²å‘ÊȬXêŒk^XðƒÙ™¿D[ú¼zæõû@xAzA0'srÇwë½Ú½á}V²ëJÆ /µâ IDATÁ1K×4¢î(å·é?;ê;%E#:FÈcÿ|}Ú§®Om©Ã<ƒ_p$­!šUÏðlâäöñ/7õl¾0w¸`‡Ÿù'¯N‹Öt­ï• E#†F B1!Œ&Ø_" ‰”¦RU¼‚S Ëóx.ïŠ+œâq“„€1’Rõ`b\R‚ .úÆ­¥”~·zõ³Yý §´ctvÓ‹Zz2n¦â&ãb2mk”frN•ã6BµŒËçíN“³š™ä,þ\;!Ö;©z8õs eå⿊Ûù?‡¢]Îù…}5€W+ ú„)˜ÞYæ¥<(x¦œðÊ—B‹‚>,¡)+6ƒ`@QŠšêõä«:¯ O[ÚWq…g~0Wçë¹[´öÝ8|ðÉzŸsäÙ/¬~k[´yéy£ ?òìç§Ní }ÕŒw,ßò©9Wk\CÓH"j0!ç!L )õRN‚K! ‘ å.&l.)Å©„•ÎÚµ‹ÞÅžò0FUJ)Bª~<)0’ª‚¨Äˆ¹ªÑ, „`ŒQy}pùQBhkŠlZÕ‘Í»;÷LeídŸȗ5†N…sÂËgm$aŽ9—³z%<ͯÁNfrõp®ŠÕOS––åúž©ÜàÑ.H€ &¤"·%'+æ¶Ô¸¥pQ®mo,~ YMædi³j¼¬.Ô«¶ ­*]¨*i¨à|UçXIJúѾ*Ú×ø›º䯾 ùþ±Áçx¸¹ 0'»ïÑ?¸õ7SÝçüNnìÈ3ÿ”>»7ôU#Úºê®ÿ¡Y©+-C‹FtÇecJ¥X£„¬æ}!‹å4ˆsÎ…„q %#Ó©¤•É:ΕY t`Eéü?r.$V–¤Dˆ‹’“¨ ˆ¨*’Š1âB:.³]¦!!¤D’R¹@!Çõ.3q!¡â¬ˆ`„4øß#ˆZzÁñœË„íÒãÖll&¯ÏØê5¨Ÿ®9ƒJœ þê³:¶Ü ;h„v ç{Z*)þD‹šR¹Z¦èÛ.ÃOJr%„@`’ÕXq†Hš5åz¾igé*j3‚ç":ph’'T65lLû. øŸ)áìÞŸ{ù«¢?˜´/¿}ñÆ{f W‚»ÃÚu½b +Õ³êŽß3bíW0 ššihŒqŒ%ÄЉ®QS'šFTû=.$cÜñ¸ëq•$ÉXq1YŠ=£M¦³Nm+»+b$b¦ÿ´VH¦¥¸ ¯l*wP €ŠGôXD7 ĸÈÛžò‹Q‹•°”’R<±Ïs¡ `ø~õŒ‰Ö¦ˆjXŸÎ:ªÔÄtÞ?N’DÌÌÛ..æ‘òË ³U£éi&¶Ñõ£trfYp³¹Ò´[Þý9qBTÍ ¾fè\¥ ú™ 5€W à)` “ À‚Ûœ“ÌÞîF8ìÉÊC‚šJ|_Ô­B¾*ΔöÍøÕÜÃrðù9øÄ9‚@Ôhí¿¹uÙ­ñ¶ç’1eaúôøÑçG>áæ'êmÔÜ{ý²7}’è‘+MƒF,Ýu9&ˆblèTµ,·LjT£8—¶Ë 6+8^Áa®Ç=+”qá›kªI?bjã“ùy0/¤8lÚ®ç/ðSDz…‡@0âB&cFSÂjN˜‰˜¡Ql»l*ãL¥í©Œí÷šPo§a‚GƳsKÙ"G#š®Qõô1.r÷ü›Th14ªkD×PJ@1<–á%î—Œ›ª ™Îù©žÛTpÎ+5«+yΘœœñöäÊl ·òµr3Å9€ VîÏ"Ãð¯Ú•ýÌ‚Sá“Yç²礨fµÉ)p ‰Þñ°£ª.º¨ô]“ ¥ÎÚ8ßï²¿Š…rß ¿‚0ÞÿÓ!˜3rð‰‘ƒOP3k]mî5âš™$š‰0•Ü󜌓-LžÌŒ°3à >±%×~´}à¶+:5ž`±tÛa#Œ¥ØÐ‰eÐhDKDõ¨©éA\Oäm` Åû¿$Úc„ªJ(l—¥ÖÄt^^i¹3žÇE±”$ÈREé/¥‰!©Ìe4‚#¦–ˆí͑֔©k$Wð(Æž'ÔrA­ú‡PÁöævM ¦FH£XH鸜´¤¢Ùœ“+¸çÅ/¢=5A鬃 €©¬í£ B@ q=TùÄl¢Îÿ¨›e7˺‚oŸ°…b[cxƒ°É7¸UÈ€Á-ëøuÎR7¢€èWU«^-x†Ò©Ú:¹ †xÁ—ªîÊÉ2…•¹šåëLº)Ãö¹`¯–ð…f¸ÔS;çŒ|—øU‹Ÿ}7ür´¥ïø+_çõífŠC;3ujÇÔ©s8*L´¶Ûoü€f%á шá8LMÓ!Jˆ®Ó 1KODdL·t9.×5E Ë#Î%‰êF‚Œ˜ÚyÎÑ—däòNYSÌ Kî- ‹Éœê-ezWSQP xh’WüˆB%Ï«ê—[j¨$J¼ ÝhæžöJ_v=Âu¬ËfÎù®ð«z´eà–ßìÞðþá?|Ö³Óç¹C„IbÑš–¾75÷^Oõ(¼QF4¢;S½ƒÔ?ŒBGƒb]æNÔ}¢i„RLp1TmÅŠ¹»ƒ µ´lþÊ#…é¬Ý’ŠÚ®ï¥È`Þ¤!.¤çñ¼Ã¦³ŽF°®áœÍ29×v™ÇTè#ŒëñlÞ‰XÆhVy—!B‰àETö‹óQ ¥ Å”`«fË`*]ØsxŒ<±U3`M#…R°“€–¬[Wߥ&>–fFñê–Ô©%—•»%2¬¡¼ãJ`+ïSÖI` À[mŠfႳ¿r ëDõjz2Ô$¹TÆU‚PÉ÷h¦h'+ äCûçU‘¼b•RÎ-¥J‰1b\ØÏNelT€”šób]£„bTš¦P‰Ër!—;.SÙ§ñ¨¡B¡JÈ;®] :R‚ƒü•€¯™Êú@ظö®63¥J­b„ ².«xbuë×J0+Ñ‹€©XÐKº¶ / Ø‚ §Â6(&¶TLèÁí…¬kÔR¨B»F|œ }K2‹[ 0ȺTR†uKVÖ^É«Lá©ây˜Nõ 2¶7[Ø›5ò]ù´ov‹kjX©+Õ À0(cBÊb]š)EÑNÓqyÎö(ÅRBÁ *r–+xyÛs\î1¡Êç÷p™|=¦¥C§¶s‰KÈ‹µPiÒ¥òÇÆX8‘Î7%"ªSðA#‹bÚ ’Rfr®ërbŒ1‚1áq¡P„11™Î+,A5 n ‚kŒ ‚±²à2×ã€%ØÐˆ’»¦3n>ºF¢CA²’{ÜŸü !¤k$biœ‹\ÞMs;1(BžÇ' …|ÁóXJq0Á‡@Þa!z§l¨pÖr;YWÛ”u&>› +jÏk\T*¦]¨Æ³ ív΃ªÎJ‡-¨œî¡ž?Kýª† ÔYW•FB¢†•ÈQóËš cݺà à u…Í*’ç)U˜W˹ëQ½ {óÆù.7ä[–)¶Wºu‘’1áá¸,_@J:Ó5Œy\ØËæÝ‚Ã\ÆUcK!üEzø÷-ªvYøC§:%šFd‰Z©Û—Ä>ÆEÁö4Ð`LŒMæQC-D™@KŒq@Ì“¶Ë\¯ìØ­"©Ùœ“·Ý¢×h€áÍö\2Y»%-&©”|¼ (ç¸Ù¼ãƒV,b¨T^õÍ’ÒÕ/-ô‘ú_5ñÇ%b¦r:S=0Î+a®ÀÂcw3)³;WöJÅìYÅd5ù«b{Ð -³2Ô䤬׼2¼•ÀPDÏQÉRÛÆ¢*Ò>k ÈÏ(‘58'CY]¨âZz!D¥,}DÕÕ(!\Í¥hxP}‘ky^­x0Ì;/Ø›Gä[¿+qˆ@…\‘q޲]¸¶Ã‹õBxžp<æ¸Üõ8cÂÇ•#,7[(íV¢K¦®E,ç^ÌI)/£hDÇlÏv¼z¶þÓY›p,¢«ø™ —’ ƒh9›QŒ%@ÁvsyW×I"fzž!AUaÎI§“éBS2¢-*õøe\¨Ð#˜†µtsÉ%Ƙ`¬tiTb,B.ü ࢠ*8%$•°²9Gµ©º˜AŽG “sëÌ5 œÓT%Èá* ³ª½rú¬ UI  ôÏÚä—*Tƒ~IUMô÷VÙÂѱê½U¸X©>º¢¦P„Š˧5PWe®-b¥áhW’|^ÕŠ$4í¶æÁ ìfY™ä[€½7ÒPs¢-Ïã¨,$„)YQM»ª»Ç‚ e}$Q~_ÎÓÐ5Bã!„q1ŒæÏE (š†h艘z6_×%•s1±B¦AMCÓ¦”pè(cœq‘/¸¶Ã¤”£ˆ¥›õ<Á…dLÍÛsLr\6:ž‰Xºih!.„ã²lÞU41Ñuºžò‰ÅšF4ŠU£ õ¨2.˜Œ Æã<è«V9Ò“MɈëqÎyÁažWN– >é2¥ô§zÊghVghñŸ¬#{V÷O¨,T¯íŸPK« ¨+©LeBie:~ÕdíóI}¶ÕkÈ•ŪÚùÚ\› ÈAÏsmdSKVaA` .ü£mÈíªÅäªUH-Ãk xu‚ ‚yó { È÷WGËPöÒŒ @ÅÆ³Êt[Ý¢\õ|ªç¥¨|Ë”(Šó¬‹F#º¡S „ÁX{”<²¥ ]ÄAE‚[06†Š,£‚_Tvº8(hb‚çaJ°iPC§¦NuPŠ !„Ç„j„<)™BJ¬TS„‚dÌܰ¼ ¹çð¨ª#ŸÌ5rÆ…ˆ˜Z¡&¾¨® çÂó€R¬Pð‚—‘P‚MÚ.Sm#5J ˜†艨µ4C# |b Á@V5wCaBHB±ePË ”`sËЗlOÙpW!œËÃ:øªë°’YS“)S] XC«` Âú£JîZѽªÙTÊ¡!«¦ `u\5£­¦qPǶ¦¶§î9pB4ÌŠ‹}h3¶lóý=ÏToð-ŒªyÜï¶|ú…À :¬#$ƒú˜ÿ”¡R"5í˲@Z.¢Pø(.~Ѝ¥‚„ J®QS×¢–±´ˆ©i#œË‚Ãò¶¯ô‚” 8GP¬iàBIÅ ]#” Ò4h°ƒDˆ\É…`™çÒ󸬨AņA=Ogì9œд¢6-Aº.¯Båhİ]OE(±âÁ”XYZ2f$¢ºe`{\£¸È‰=á’€O,B€$dsîÞÁqC#é‚‚bì!ãª;³ú‚+’eBЭÆò,Ü´:´ECmu|5} c“µ X?¹ÝÀC+ ¡q„¬²ç„úX†åÍV%ì@˜…Mè©5âÓ•fí×QêÎíÎð.æ-ÀÞÂh0„Båø…‹„(0¬|TΟ"¹*+””„0F*[ò¢Åÿ N‘Ñ"+RÝ3ŒxD3uЏLä %H9 r.¹\(Rª&}rº°ëਔ2“w1F)@ ±0_”àˆ¥)#)LöŸÄ™†&¸àBº%镬c$K픓˜Á€R¬iØ4hÔÒQ-bPÐ].Ø.ÓFhµO¬R™¨MSBT%¾P ž”ë2%’ U²ŒœÌjâF5ZS}糊×eYþ\jkuQ¨Ln •d«à;ä¨d%¾×)è–¬®9@ðØ!\ÍÕ ½€ XݬÛ…B»K¢m.`Þ˜óÈåÝXÔ(E¹PY)*åÄAË)Ê£™¬z² !9FŒ ^²cVÕë”àÉRrÿE¤ƒ#o{*%#¤”=Ó QSKDõT\!äzœÄ¥t=ázÜ£Å*:ßRJBðtÖ±]NU– AhæÝþ¾™8Ÿ` ©S@ˆ1®kD/Ù™z*ec15Çå1Ëp\Vê’XôBSV±ÅÅ:-¶THF1&}bKœ@*w<ËÔ”¯žZÁxœû:€àVÛRÈ)Ž\gÒ eP¿ÿCHl& ª”Ò€æY±² '@rFnm3)ð¨8rYæ­s ËÆWÏÔ?Ú]ZÀƒKØÃµ5[·lìzàÉÃó ·Ë{RÇÏf.jÀ)Õ“1ýäpöRÁ’ïÆra‡®‘µýͦA^Ø}¶ê%×ã c\Ü¢ª ˆÊçOù>c„A#‚±Ä*ÒV.OR·Ší²sº·œ?,:qbHµT$H%OF-³´¨©!Ž‹™¶ÃóšG&«9àR´è-®‡ƒÇÅÜ&Šóù#¦Æ¸°tšˆEu`„„¶Ë39'fR—±±);o{†N1AÂñý ?oÛz ¡²|€ñ²V©Ø¥ôUJ@žÇ¥”¦A)Á ¡`{ç†N³9ý ùk4Êð+rΦ¸šˆ.­G¡~NcØ^«Q¹â0ê^q¸žÏêŹ‹uó xɘñÞÛú{;ãM #¸²A‡Òÿø½W/9Õ[Ñ›ºëú%?ÿ–ÙûŸ8<Ÿ}ÝÚŽ¿ûô-ñåm?{ìâÐÿùô-Sû…?x䢞ˢ–Èoܳ¡½Ù’BžN?¸uðЉ)õÒÝ7õNL;/í)ÂU*nüÒ;Wõw')Á[·Ÿºïñ¹\ówÝÚwûµ‹oX¿èm{èÙ¼£úøø•á!w]×sÕŠÖ¶”¥ RQ‡lÁÛupü™g#‘¥ÔJç‡ê¶ËP©C©'F ÆÁ”"ˆI0"©~Chà ¥@¶Ë” ÁHi»œ1‹èópe.hh.㱈ќ´QÃ25JÇD®à%ãúßþÖMÛ÷üáç_(’ £ Q¾qŒ Ûåy›ëÔSU.¶Ëó¶g{Üeœ½˜Áotƒ$Æ…Š†ª¸/ÆHIÍØ„*½FÏ9w7拵 ÕíªÞ]OmÄεM8tÍ ØÎ}âsÕ!Dþ.0Ú] †ÓYç«ï½çŽßþð¦{ÿ×cjrÔ(¾ec׿µ—ƒÚyðøÔÁãSwݰäõ#óN•ÐÑ¡ô®ƒcñ#å ì¹WÏ\ìs9;žÿ³/½òÿ}ÇÐH^n L0úÈÛVnÛ;âáTÆùûï¼ú§Ÿ¼áèéôÜP~ôôÑéŒsÃúE{ŽŒ‡nàzÜõ¸®7PC aѱÇ_9µuÇéïþù]gÆsô…—™€%‹b¿pçÀûùµ=Ñ/?´¿ø^ÁSÓ…‹MUœR †Ê¬¨ä.ãBÕKxž@yL0.•÷XU%Uþ8.ó/™’ÆH×ȼ™†Œ…”àdÌLÆÌÖ”Õ”04J ›˜¶—MgÝçvŸ)A&u±RJêšPµ»YÎÔçµÂ7“³ÐÁ5¦—1{ÚZc`;66¯ w‰pn†_h{SÄõøÉ³õ«ÇÄëG'–tÆáòɘޜ4÷o |iÏY.ÒRþæ_=5?§ãz|d¼P4·lêêïN*6ã‹Q£5}Íÿúƒ=çóq}ÝÉ\Á;~&SoƒtÖN%,Æ…¬ÿ"eèlÑ×g %øØéÌß÷µ5}Mo¹¶ûë?>à”œ¦ó¶gש®» ÈD‰Ó”&Yêž!m—çm¦Q̹ŽËs¯à2×+9†K" ì~žs«¿ÙM#ŽË’qÓ2h"ª·7YmM–®‘lÁ€Ó£Ù?øÂËÓy˜¥Î!Xá”2@ ˜Û.ÇØS·™®a€bçŠlÞ³æzŒqÕxN†L@å tV•¢RÖïG8“i}&hTÏý®¢F=ö9£ƒŸ›V~1î2ar3¼™ŸôҮę±|pÉ51m?ñòÉËäŒúº¡ùg„o¼1s:š#ÁùçÞw¬zjûÐ-Wwu´DÎŒåÔßWô6eòîy†-—÷$Ÿj<}Mg ɸE)Vé!u:AWk„|ìL¸Rò\A æVö¦Ô[(ÁÛKgíy¸†ºNM!¤ à\ºEV„•È™×Bà1‘·Y.ïÙó˜`ŠÉŠº¬àIûéƒýÙ/*»U‘4•nªkÄ2iÔÒLHË :%cåücÏ“+5îqd;ž²Ì±F•O,®ÇÒ:€ Y•À¬U?û>´A,¤Àø932䬠qè5Ã9¿q@î<æBÂä,8Üår¡üþü/òÅɃÇ'«:gÖ›;[£ïÙÒ÷ÍŸÈÙÞ×-a\ü×¶Sá‹MŠ·\ݽayëá“S?zæhèq¶7YwßÔÛÞ9|rêÑNzxÙ¼{r8£„£Û®éÞ´²í¿·{n9,ÅoÙܳn e:ãœ˽¸çìØTÈ¿ÏÌ IDATšˆêzëŠÁ¡ôc/ÝÏê¾æ›6,úÒ÷jßsÇÀÎcûfÉY‚›6tÞ¾yñg¿¼‡™`¥bÆ=w<³óôþc“Ð’4ß}kŸë‰o=r`Ž@˜uû»“~³ò›7vÍ}÷§‡¶\Ó}ÝÚŽ>5¨6Ûruד¯œj|äkúš·\Ó͸üÞOúµÎ@¸$õÔŽ!hMYï¸yigkä‹?Ø3™vªnÝét!™°Ô¼_&TSb_WNœÍ–°‚DTÏ;§ç (hôçn_¶}ßÈþc“kû›7­jûæO¯X,¢Ýyý’e‹“ÃãùŸ¬2v®ã¶è×/iM™'ÎfŸxåTQ,©|„Ûa£ÅmÑ+›ŸÞy–|íª–Ã§Ò§G³·š!W´Ü°~‘”òÈ©ôðx~ïÑI_'ðÑÑÐÉûn[vz4ûôÎÓÐÛÏ–þ§¶½zh Rqã}·õNÙ?s4ô°Wô¦Þ~ÓÒ/<ðšãrâ»nXÒßT±uûݼ©ó_Ø£à™ ©<]1 !ä5«[¢fÇ¿<°§êöBJ-Ö{¶ôß÷Ä‘lހΖÈ×->~6»}ÿ”b‡+ZÅr!„±ˆ¶åêîÞE±3cùÇ^>5]ãzS1…Ê@xá%﹑¹‹÷¹C ¿‚€m¶Jæ[’æÑÓé™LÜoÓÒ_yïÚöfëÁ­ƒwßÔû;¿¸é¾ûjèÆëZ®[ÛñÔö¡UK›þûǯÍmß7RµÍí››:}â•Sý݉Oÿâ¦W^ žÔÁSÍ‘_yïšÖw6%Œ/=¸w@¸dQüÿyÏšgwy}püÝ·ö¯ìM½óS?ªÝì†õ‹ÞuKßí›ÿÓ÷v‡BéGß¾êCw¯ð<ñå‡öþî½W¿ó–¾OþåÖY‰ÚwܼT…Uj7¸eS×îX~íšö#§¦÷›¼ãºžwÞÒ·ieëàPú|€0bREY0B÷¾cÕ_|eûñ3驌sݺ2Þ²©ë÷ÿñù7Ì/ܵbûþ‘m{Gþöwn‰G´¿ùæÎªm¢–ÖÙ}}pâ¶kºï¾±7SðÞyóÒÃ'§kÓ$ÀTº`Zx×ò®Öèƒ[›ÆŸþú ·o^¼ÿØäÈdáÁ­ƒŠ"q!<ÆuŠïØÜõö›–H€‡ž:ö;úoÚÐñwßÙ“·=WuÏàB飖AíçÖ<1ýú‘‰ë×uüþ/]ýûÿô"”»g”[¾{Å×õ|ù¡½Ïî:ó o]þ–Í=kú›OM¿zhì¶kºß}kÿýÇ©BâÞµü½·-kMšÿöàë‹"ŸxßÚk×t8ÿÇzŒé{×ê·lîik²¾ôà^ÇãŽÇso"í Ê%îúµ­›V´<1åzÜ?&\tGÃï~Sï»nYºlqòÇϛκ¥wóšöµýÍÿµ}Hav±õ—¼ôÿ5«Úî¸nñOî9<þ[ºêíoê}îÕ3£/ýp_°J UªÊi©òß G@ŸÑ¿9n0;Ç¿úþ†Ë çªþ©¼*ÿ_Ź\ÌÑÓ×(>v:sÎ-W-m>|rú»?=81mÇ£ú­Ww}ñ{ö ¡A×­íø_Üôõ‡÷95½ïØdèÞÖ´Ü´¡ó'ÏÉ>³óôCO™ Ï”èI¾>8±¼'õÖ—|îë;¶n?56U˜š½ƒbĤõ[oúÚÃû{éÄ>w|phúà‰©¼] ½¦N 6ûÂý¯I ;Œ†žÝÃÏ}n×™½G'î¸n‰¡Óoüd¿a¹ýµ‡÷½vd|çÁÑÚ¯¸9aNgÝ/þ`”°wpâ½·õ»ÿÔß<=4š;rjzîÒhÖ1uª:ݰ~ÑÙñüàÐ4ò•½Ã׬jW_Ú•p\~j$\HÅŒÏÿþmO¾rjÛÞ‘×׫xëíŒŒš¦¡“ÿþÏÏÿï¯nÏäÜæ¤YïÀlÇ›ÌÙ¶§Q¢QR¥‘övƇÇóŽËU–f*n|êCöüæî›ÌQ03Z’æ_}c=þä=ë¿ôýÏì<]û‰×¬nÿ½_ºæó÷¿vôtzû¾‘ï>zhMóê¾æÚ-ï¾±÷-›{þþ;¯=Þ±ô‘O¬ío>z:½wp¢$Õ‚JY¹4õÄ+CÛö¥Wô&5Šü܉£§ÓÛ³]VbE>õ¡ OL?ôôÑgvyeïˆÇÄþÀc‚JÓš2?ûåmêøØ»V¿²wD­;÷›¼çމ´óÙ¯¼"„Üy $ŸkåÒ¦Gž?þÄË'O§»Z£o¾vñÿÛËûMîœX²(þž-ý_|`ÏÖíCC#Ù±©BÁöò7sF'ó'‡³'Îf\}û‘Ãig÷áñ‚íùw¨*œXÚßy`ô¡§N¦áñü‡îرô?ÿ’”rðTºà0Ûa¶Ã\{Œ3&¸ý݉ßþðUÿðÝÝûOJÿ±C=±¼Ãw ªâc)¢êA%Ëœç<(ç1óO^Ä­¯¤!A^X¥ú¢ŽþîÜsÇÀ[o\‚P1iís_Û>8TÍ•ôwç =ŽO½ûÖ¾ßû‡çC•Lâßû¥kî{ü0ãBɆ/í9»³QnÚÐi´´þƒïþô`htӆΩ¬sóÆÎ¿þÆÎa ‚ѧ?²é¿¶Ê–ìJNŽd 9aÔª yûÊÇ^:éÅùc\<öÒIÿ°¹ƒðÒž³”àdL?=šëiþÍ·^UB¨rÀQ¬HJèïN\³ºío¾½ ¨{àð©é‚êºg)ŸÙyº¯+Á¸èëN<þòÉg3ï¸yétÖ½vuû˯=¾vM»Ø}(äqØsx\2ŽNo^Ûþõï€ÅíÑgwÙru÷7r@H9ГܱTéŽSi!äy<“££gÓ–A:š­—÷ ûÑJÇeшÁ¸8z:͹¸ûÆ%ûM¾ýMKŸxåÔ™±ü@O!´ûð¸ßM©ä-¥„÷ÜÚwàøTÎ.ãç/ì>sâl6è ”©"3*I‡Â…õ¹,v´r—.NÚ.ÿä_n¡Ò¸¬;ÙÕý?ßÞŠ‚põª¶ÎÖ讃£×¯[ôî-}Ïì8ýýÇÕ6‚9q6ó±w­þZǯ{íðx(&)13jiýÝÉ¿úÆ)A×Èšþæ¿ûÖÎÙž&Bðî-}~=À²ždog|gáSãúu¯«˜À-íŠK)ÿÿ¿nÎzRÍ sÇþ‘dònsÂP‰Kkû›5J^=rŽt΀XDïëNŒNæ}rùÊÞaÆÅ ë½~düÖ«»ÿ翼úvJðÝ7öÞÿÄᾮĻ·ôÅ,íãüøðD>”ÄOeœ‡ž.êuM 3jiÃVµp踬èæE0Â(Õ›æO_<ñøKÇ_zítÌÒÎŽçß«ý‹œËÁ¡ô‰:4ýª­}]‰þ~Y÷64 §ö”—v%ìÀ­¾¸#VÅÀT') DO{”ô'_Úf;ÂoqZÒÃ@Jy× Kvì³®,inÞ¸èñ—NYFÈWhzRBÈ3cyu.Ë—¤AgÆó*–±ieÛ©álèW îùždÞfùÕíRB,¢u¶Ez’ÿ|ßn!¥©“Õ}Í=u´´þóƧdÁÔtŒ¸·nêÌÛÞîCåû“q‘oxË'MžΞÎbŒÖö7góÞàдzjü5®B¾îÄÉá,ÁH)—,ŠL†FrU>±BøýE `{Kw^冺vuÇ7~²¿ÞÞÚš¬æ„ù/ì©·˜É¸nmÇØT¡AÁ꾦¨¥ý°4Um\Ù66U™{2§ÊjIÄô¼}Õß{cSö¡“Óׯíxø™£BH?}´ZïkJÆôTÜèíŒíGû¨Ó=©­Û‡ü›jݲætÖ %. ã8t4[ŇNL{Ÿ˜æÓçN ]ÕÛ4uëåpÀ†å­™»Úb¶Ëkdg.d&çnXÞú½Ç)‚µa åO¾´-Xç§* $Æ )a4'Ío?z(“u}(6[ÅÝ´~Ñ·=¨lqÞzCOsÂ|íÈxaŒlÇóïá‰üÖÒ¹¬^ÚtòlæÙ’Ø{Íêö ©XD_ÜûÜ×¶«/bUoFèûRäÚe-Å~†Ž”à¸Ìó¸ò±B®ëoz}p¢àp„#,¥”B )F˜`,å²ÅɃǧ^zý¬”À¹\?вÿø”íò`¤Ó¿JÓYwUoÊ4‰ Q|÷ K¾ðÀYÙ6„쟸" ñ˜¢ ua±maaQ;ã/íŠ×ÃÚÑÕkN˜¼p¢Á6+{S'ÏfÏY‹1úÑÓGôôQŒÐ‡Þºâ7îY¯iØq«ñxý@Ëö}#þÒþÚ5#ùS³ƒM+Û2y÷ôhnÞØeäàñ©z0¶¢7Õ”0”j:Ö-kq\¾uûÐù\|E:y¦©Å+{›¾þð~N6­l{íÈ8?&«*IoËÕ]ãSvUzÔ »Ï|ôí«ÞyKßÖíuuÑU½MðG æ| Á¨¿;q_@2}óµ‹ïò°Çæ’÷׿8 GOÏ42Ьéo~ø™c ºÑ¶¦,˜ ð¿ Ë[žß}¦VkB~ñ{~ûÃÿü7n<5’mŠ¿ó·Ïdlî·K l)ÐÊޔ뉧wžæBV›ÞK u¶FÚ›­#CiBpgKdEoÊcâÀñ©+B¨w,¾wý²–­Û‡Ô—nêd 'õ…û_SëÅXD[Ó×|ýM}_[KZËšþæñiû…×Îúë°¡‘ìèT‘M‚#¦F0fœ†®^Õvßã‡@ÔÒMCs=ž/¸ù‚]m‘æ„ñO ‚D€¼¶¿ù‡O !Õ"!çÅï±CÿóW6ÿÙ¯_àøT*®ó‘CÛ÷*Om(ùÄŒTcÞâ%UÍýœ™ŸY$kü¯*»¤A²É¼%ž\q#Ó[’ÖLRF‹šÒòÖlÁ;p|²Á6­)+¨(bŒšjB/£_yïÿv?p|òà‰)Ï ™(7 ´ø.\»º}×Á1!¤Êì˜ñ]œÏ )×ô7S‚Lƒî<0Š12tÊÕ¦2Îàдe„/F7®h=tbªqЫñˆZÚºe-;öb„̰cèëNÄ"Ú3»ŠkS'«—6½zp !˜í¹WI£ïÙÒÿµ‡«“/íVy†OÕG÷–¤ •]­©ü—Ž–H"ªŸ.®]:[£KÅ¿óÈC›Ë'—äf¸}gk´£9R›¢\Í5¹-Is㊶¯?.<¸uð=Ÿþñ©‘ì™±Üg¿²MyÏRB”­ZÐ"U©òh&ÒŽ“ÅéHJ„ ¿; “·5eÝ´aÑø”}ìL&“÷,ƒ›L‘r÷Œ¨¥-ëIúçÒ¿81é˯ûÏÁh×Á1Õò)T>p|ÒƒnXÞºëÀ¨W,Ù„Ö-Ú±”siÔ4hK*ÒÑkIE,SOÅ­•K›ZSÖŽ£ºN¢–nèÔ4(¥˜óbçuËZr6Û}x\iš=‹bÍ ãµÃ#ŒÊ=§J °ïèä'>ûÔ3»ÎD-íßÜ¿÷è$Á“¢k9Œó¯jù’/xÅøgÃ#Ù¤]À±¦¯!89<ÓŒÇkW·>9]ËÛ‚cd2ß¿8ÙÝ€ÞÎø¯¾wmÄÔª8ª÷v&ÔÓ‹1ºyS×g¿²­VmMY=‹âûKêeО$ãâÞw¬ºjEëì ?ª7'ÌÞ¹|Å’Ô3;O¯^Ú”ˆê{ç꘥…Jgy›½÷¶þ·ÝÔ:Å\½ªmÏàøù\ùå=IË mMÖ¯ÿüºÐtÊ«W¶§³®ÿÕô/NF--bÒ_}ߺÎÖèÜ>4W`ðì®3µKŸÇ'ó6É6`{*u˦.ˆYÚ‡ï^šf¹´3=qHÅOüÜÚÿñ…ç¬!¯ék›¶gþö+Úã‘*ás˦.5IâçÖýûƒ¯7XÞõw'~ñm+Q½4;»”âRà¢w¨W´î;:©2h¸B ?a^Íø©˜wl^üþ7÷?öò©UK›„?÷æþÞθÚÅ8›w|]T׈Ÿw½a 5[ð|9äêUí¶Ë7­lýè;V…"áÕ«Ú| Jð꾦ý¥sLFe=I)å‡ï^±qeÁ¸)a^³jѦUí©¸ 6¯]¤8åÇßµ@ºSÊ„iÐ|Á34²qyëá“ÓœKŒBhMt´X窈¥ï¿ŠQ) ˆL|äm+’1Ý樓QQEXYÈ:µK×å´Ä7¨¶9oÐñëï_·qeÛðDþm7-]Þ“úáSƒÍDFë—·üä\ÔÿòÀž?ûä _ûã;÷|éõ³_~ho­&–ˆêË—¤¾ö™;÷›žÈ瑃¡ÿ+Z‡Çó~M×°š[¿ôýõâXõ†J±›Ì8?}ñ„©ÆeÁaßzä@=POçÜǧBÃZ‹Z"m)«p:“AVüìßëD®hy~÷ÿé³ ê¸¼5e}áþ×ronj»LJøNX¢ãòƒ'¦‡ñ}áÄ›¯]¬*ÀŸúêÃû†ÇC¾µ=GÆ_=4ö™O\÷;—¿vxìï¾µ+='ê|ã†E·nênk²„ŸþȦg33ñ>ݼ¶}ç±ÆÀùä+§¶\Ýýé^}ãUSçÙ]§CK,|zÉ¢¸í°_{ÿ:‚Ñ×Þ/„t¦Q̸PÅJÉlKYÍ‘oi2êbj”4ÈQ R«í#¦6gôw’ŒÓ9'ôÌ¢–¦<±ï!Ñ=&Ÿ>F(Ñl—_ÔV¡#fiy›3•WÕ#"@S§ÁÆ[®é¾~mÇOŸ²ÿà—¯½eS×þëÈ_cB¨9q½ŠîícJÀ®¼¯JfÚ ºGiIÆ µ4d\ Ûe¥4KD0 à®í­CoZ%íֻªe•¿UMƒKÒ˜U|–Mƒr.[›£ÍQ!åÄtÁõ8Á8o»•…@£D×2_Šáµ5E„•  ûçî'À¨Ÿz’ï»­ÿÉmC‡ONøîåï¹uéÞ£“ò¥mù“”àLÎÉê®–,Þxϼ0.“áÎ,ßA5”i<I ŽË'‰šÖl.›£Ñ’Jlóå EÃC¥Žkç9§½Ô¾ê± ð¡v}ø÷˜˜I&Žãñsž¾p<~>y=çs‹ÎðSm‡Ö`ãÛ®éþèÛWýáç_Ÿ¶m—?ñò)Ó ¸cùëƒ'‡³\Ȩ¥s!Qù“\HT9À¯ @Ũ"çBÅ•¥™ïº©Q<1UÑ=£êVÝ´J}mðWªê?üQB`h4o»y‡ÙC©h:ëH ”bËÔ(%¶Ã‚­ò¶§ÐQ©ª)jÏ]UDôtÄþô×®ÿ‹¯î8v&ãq±ëÀØ™ñü;oYê1±çÈ„FI¶! ‚r–Y ca,Œ…1ÿãw.zÇúBÊÏß÷ÚÈd~QK—er¶©S¿K{iò÷IgqàbB ¹.ã®Ç¢” ª<¶ç§ãDÕ`L`‚¢–®V1BCÁö¥”äm/ 9¶tÖv=nè4¬àÜÊ ãm7-9trz2ãHY´{ò•¡—_îhŽP‚Ó;W8‡r¾P>±0ÆÂX—fxL ô$ƒIÆôtÎõËfl‡؉˜é¸\Jì¢P;ŠÕuBr) â%h„Lg Ç»H'‚T÷Äz%%Ù¬cYzÔÒTû§lÞÉÜ™ ÒY[×h"fÆDè©{\.YÓa%#YM#‰¨~ßãƒc“¹™ˆ+ 1Â…±0ÆÂ¸4cÙâäÿÚõƒCé'_9YpXOG¼½ÙºÿñÃU¦¸†N1ƒ³CA¥ÎøeâÖm—òGÁ µmçbuRÔušˆšF®Çry÷b4r° -ÑB¾Ÿ*”"…‰¨þ»÷nÒ5òè‹'¦²nG“ÕÙ}ô…㯞©ÁÂ.Œ…±0Æ%£ÞÎx[“•·Ù±3™z•££xÄ0 ʸhPÈ|ºˆ@ù«/“sÄE ¦jIÆÌ®¶x*nœÏO@ÊéŒ}1°(Å–¡é¡”@)™`ŒÚš¬¶&˶½Á¡éÚ”obB0ç2T^FÆÂX ã’ .äàPºÖ€¾j!§³6É£XÔÐ5P$FÁr{•=Š1"#¶Ã&§ \ˆ‹zü!”âþÅ©ÞEñ]GÓY‡ ‹SéÂÅø8ÆD†9PrŠ)§œˆúfŒã1#jéRJÕ©*µÿo{÷ÒÛÈqļªº{f8|¬öáØ 6 @|Ï÷ÿ>F¬ g_’(’3ÝÓ]U94EreE»kS† Ôï"€ HÞþªé®ª;ÿXcÌ&5×›XïvmhƒGªUѾ\E§\6SÊ…åñ¯Ô:G…™Y߯GGx³›êÎ÷ß`f™è§6Àw_ÍÛ¿ý ¾ÿñz³OW³Ëõxšš„ÆóGR+›ß¾òÞ:µküf¿uõÃëMÎLˆH ü{’¼Öå¼­eß\î¶C"Ä®õõÚª¡1Ƙ_Éu¥ÃÍ6…PºÆ×¦øÍ.ýN~¡s˜ o‡é_¯®Aa7æÚjygbœ¡1Ƙ_h7N«®ñ¾¶ô‰êvHC|¨o›àÚÆ;:žò©@fÎç®t™5x÷îj—rqDªûaúwN-1Æüò¢ðj=Ö`€˜Ê=ûÞѼo‚w¢Ê,,·{3ç³f9§1M1•Ï=ã<Ýàx ÷³ ªcÌÞ¹¾óD˜2šIBpËykAhŒ1æWùè™%".ú¦kCaÉEö³àPUåv 3+”&¸¾k¶Cú”ÞÇàÝ¢o‚w ª …e7¤ÓaÛaz²ì‚wŽPbâËõPçÎaß…/žö„Æc‘#¼Xõ š ;¢Ð8Gˆˆ *¢Ì"Rg¨*³ â”9îgMüf( ç³f¹h © Ä¢1"|v1ßlg™åòzÞ9‡"zØmã Ëó BcŒ1Æ;z²œ±"¶o‚óŽœ#B¨\aÉ…sa EU©4Á]¬f×›xoƒ`×ú~ÖxG/¿X>Ò ±üôv{½‰¹ðjѲÈéï\8ßW^ ëÕM´ 4Æó(ˆðb5+,„Ø6¾®¡oƒóŽêÍšRdʧBÈ…c‚”¹ nµh×›xç“a>kYdÑÏþòåò¯^]ݤ˜Ênœ$+‹®Ý»ËíÃÇŒ„˜rùéÍÆ‚ÐcÌ£X-ºÌBõ6Í|úY˜µ¾ñ®á”yŒ¥.—¨k2TY´ÎÍ)EÚÆõ³0|¸)³NÏ©yÉ¢¥È~„ÀíŠïêƒ7nâT–ó¶°XcŒ9¿®õDÈ,λ&¸¾óóYXÎÛÕ8‡9 "LY†T‚wÞ“sHŒ ˆ5±YtÖz7à¡(uD¢§2e®#XC º¬*¦|„ˆØwaÞ7  1®Ò¨m¨7Æsv³.ì;ë‘Ã}uè)xj×6®ñ<Ö»®žõ>IDAT3D¸ß0xºQ±¾À,]¯+ÀÍ6†@Žˆp¿¿¾n¤¨‡‡wî×,úæùEÿÍË'_½X4_ÌÛ¾;~š¡1ƘsªÉ§¢'ÔTU¥Þ†QPUaeQ¨Ýôªp¼Ø¢‡Ï9~fam‚;ý–)óõzô޼'"r„(*…åíûÝaÀ vmÑ?=›ÿóÛ/¿ýÛóŬ€Å¼u´ÿ{4jŒ1朼#Þ/æEP¨+å kÎR=íkFçY4N<Ä<ħ’ 3+Ë~ç.Þæ_ýƒˆ p{ƒæãšàáë—«|óô»_®7qÊ|³K"Òµä̇‘¤„ÆcÎ ë9Ÿª¢K½Õ €…uʼ#˜2§Ì1å8•RD¤ÖÜö„“žÂ×þÿïGU½Þ¤Wo¶W›T„"Õ:òêæ¸¤Þ‚ÐcÌ9‰¨wTTUTD©(u¸hšÈ;ÂìÑ")s.ÌõѨÞÔÓ8üÄrT£Ý8ýçÇë×ïw¹°ˆÖË¥u Û0N§íù„ÆcΉYÚÆCfUUÁ À Z ‹wHXƒPëÞ áÛ5z¼4úA9ø‰K @E›à6CJ¹´Á·Õõ&ÞlãÏßoAhŒ1æœ Kí ¬:ATEIY´DâÃtÑú SNjAúðèmbáÏX^?¦¼Zt]ã÷¿d§Í.Ýûf BcŒ1ç$¢¸¯äj„ (+‰Ö¡Øûa¡ûž‰zànc°^:=\™q„§k•>^*¬7qçiÖHSy`u°¡1Ƙ3‹©xç]íª*ˆ °o<ŒŒÙwY¨:"¢ý”U`Q‘ã¢yçhŒù³kÓ"›’>ú¶ÿO®B"þIýÙIEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/postscript.png0000644000000000000000000000164712060404165022712 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs „ „ªâcytIMEÚ )3ðÌŽ'IDAT8Ë­•ÁoE‡¿™Ýµ½ëݸIcHÄ …BÏ­8!QŠª"HÕöNÿçüœ\ UI)Eq%.PR9pƒJ‘¥8‰ãµ×»3ƒ]+»q¢ñ¤Ñ®žf¿yû{¿™QALÇq| pøïa‚ ø%ŽãÃÉ%ùXztGO °Ûn£•Âõ<´R¨Ñ#Å "€"‚ Õß÷K½^/ÀqJ¥wÖîã¸iš’ R¦¢kíˆÊ-¡”B+ÍÂËs„aÈs°>;K­v†ngÇ¿?"îv)—}*åJnìïí±ñè7²,%ËRŠR Wך§Û;ÔggÑŽæÛo¾f퇻DaÈ~§ƒˆ="ŠRŠZ­ÆTè†íöîQ°ë:Xc™™9‹Öšé™W®~À`P £‚#µEˆã.¯-¾A’ô©Xi¿Â gÏ ”âÊ;oEÕa£Nœ;7M’ Ž+¬@še€ðÊ©M\ ‚Qƒ™ìŠïÿD½^‡‚ÉòUK.§\¸ð:¥’7l­eqq‘¹¹—FIη"2Ö5Ÿ1昊‚µ‚µ!ŠB´Ö ÜÁ3|·‹Œæ—<7ç7ÿƒjØ åJ™fs3ÒíŸgÏ(yƒAJ–eX±ãPðÞÕwÑÚÉ&‚ ©•Æ÷^=k-<Þ ¬†]^¾|wÒ6øDD¾Š»]677iµZc½Ó4%îõØÞÞf~~ž§­V÷³Û·—€ïO³ÕO¼šânW¶¶¶deeexÿ4@5ºLgâ8~ëh3s‘À_§ÿ :rûX*IEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/AUTHORS0000644000000000000000000000147412060404165021040 0ustar0000000000000000Oxygen Icon Theme has been developed by The Oxygen Team. Art Directors: Nuno F. Pinheiro David Vignoni Naming Coordinator Jakob Petsovits Designers: David J. Miller David Vignoni Johann Ollivier Lapeyre Kenneth Wimer Nuno F. Pinheiro Riccardo Iaconelli David J. Miller Thanks to: Lee Olson: Contributed drawing used in application-x-bittorent icon. Marco Aurélio "Coré": Improved audio-input-microphone icon. Matthias Kretz: Contributed "audio-input-line" device icon. Mauricio Piacentini : game icons mashup Erlend Hamberg: "text-x-haskell" mimetype icon. ocsigenserver-2.2.0/local/var/www/ocsigenstuff/unknown.png0000644000000000000000000000156412060404165022175 0ustar0000000000000000‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs „ „ªâcytIMEÚ )FÕåjôIDAT8Ë­•ÝjGÇgfeIëè«© In}ŸÞúSH|Ñ€Ñù B_!”R\|!_öªÐ0Å®J.bYµ¾fW»;sz¡•bGNK,3Ì¿ùÏÎÌ€8Ž¿tÎ} Xþ{ø8ŽuÎ Öôàh ŒÊÖ܇k¬Iš’¤)EQP«Õh4›  ª( !TQUÚΊ³Ñ°Q„µ–<Ïé¿ÏÔ9ªÕ*f“õû8ç°• ÆL•ßDZ1bŒažeŒF#ž>yBc ¨íîÒl6‡Ø(b7ŽWj á°µŒF#öööðÞScD€ÙlÆs3Ðh4À{T„pÏInîA•jµJð~嵈 €³ð-vvv^‹ ª‹]}#"‚5†,ω–àÅD„"!²Œ³˜³l íN‡f«ET©,üY´Àd<ÆZ‹­T°%|¹ðv+Ö”/[UÅZËåå%V‹,˨×ëEQº§«…¯O4ÆÐï÷iÓéa2Ÿ“g¾(ð!P‰s<}ö ¿¬k)€Ô9Úí6I’B`psßWWü}{Kžçy"h¯×¿Ý¯x™KU©Cž¦Ìœãââ‚ÃÃÃ;{üñÝ»ä»/^|Rñ2Ùµ<¢(P MS®¯¯¡ìÏÓ7›éÙÙYrÜí¾ζz¬!¬ÒÍ{Ïl2!Í2Š<'›ÏÈæsç蟧ÇÝî+à—­„5ç0å‹ç½'”i˜&‰öÎÏ“ïß¼9~æÁ·¢T¼¼ÂÆZjÕ*F„"ωËGéôô49îv€Ÿ>UNÌhéoJ1N™L&$ó9_=ÎoßÎŽ»Ý×Û ÿª4Çc=99ß~PÊbºçœûæŽç›Q¿WŸþRXòzpŸ¨IEND®B`‚ocsigenserver-2.2.0/local/var/www/ocsigenstuff/scalable/0000755000000000000000000000000012060404165021530 5ustar0000000000000000ocsigenserver-2.2.0/local/var/www/ocsigenstuff/scalable/application-rtf.svgz0000644000000000000000000027234312060404165025552 0ustar0000000000000000‹ì}Y—£J’æ{ÿ æÎK×QFÎ^Ý5s@H $Іà¥;›Ä"@¿~œˆ\™ÊX2#ïÒsSuO)ƒ;ææfßgnîþßÿ·Mäìå>Ïþõ~ý†ø™›{û,ü×o›õøŽý )+;óì$Ïüý–å¿ýßÿóÿý¿îîaáÛ•ï!;ŠI—®}ô‘ÿŒªêøOmšæ~ÿñâ}^„è?»»ÿóÿñßå9üA`½YùOÏý×oo8ÖEòPÐsQ?ñS?«J¿ÇÑß¾w¿wûÚ÷gßÍÓ4Ïʇ;³ò_.¼àsé¾5 ñPç8Å À,qWvYe·wOo…m¼u+À0 …¿})ùºRÿl(Šï6æá×ëÚ¡øð¿Ï7|ºp_æuáú¼Ó¿Ïü ×âçï°{¯ò®óIúOê}Ò%™úåÑvýýtýáþfïUÔÀ>üùû0ª¾ü½÷þõ|?@côÃߟZðÏÏz„Ýà±èÇÇ^ÿD²÷Rp4E>y¢|OçånßÂýVùmuW†ir«½<}p^WǺú7,ágÏovõš??Üwÿä??ÀoyQÝûĬ òÔGû ¾w‘Ã/n‰æmúÙÝÞ…ª†ÂûÛI|4ݧ~Õ¡øÊÔN¨R-è—Ö³ðf]­w„Kã÷,CÝ,Ð]ø?°Ä{~Pö%¥ßÿÅÏ>ü… äÛ…TØÞ›Çr%ŸþBãþñxWYåÇOe?ö*¼Ë¿}¹œAéÃÎÇ®®•U—ø¥ïÜ<É‹þïÀí?ÿõp)‡*µ¯ºâ¿!èw*»õ¶ÿ|ý„ ¹§`(‚a»Ùxêûµ~)EÞ~2ÃCáã>þCÕ27ªÅŸ¯Íõ]Çu¾×¡ÿ>U¬çõð“vÃG'¾ ë¶“ÆîÊÏ x0€ÿŒ ìÿ}Cc¿¯ÐË}é¬ðãÅM¶¯ e®K¿XõÖm‘mJÿ›RëÂÎJhJÓý–ÚU±oÿ çXŠý€ÁÏ—¿ ee9Š"1†ê¿s,ƒS4ý/ÍÇÿõKß3sÕ˜^äˆ{à$ýES[¯R÷$üª,¼Šcàž æ‹úþwßP;yOiNÜQOäù´X€»*à¶°¹pX\]é`SqìP€û¢ÌÁ7å‚›å x‘…Å ‡¯ê£‚d>vȧ¿îsÏ4¿Ä=‹³$‰ÿã•jðYº?¨«7tðQ¨o°tÿ¾ÈÏÛÜO£ÖFÝ‘o³¬7êÃnՇ߮¹c^øn²?jv}V“??û:>•$X–»£¿Hñxõ´+Låޣ˅w–ý§t¯ý¥÷² ö^^ܹuq¶«ºð¿çñ¡Z¿Rx×SÇÁÜSàXqì Ç,E`8rîŽ!¹ô=‰q;êÀKðŽ{Œ#h@õWpŒ¥ÈDÆ"w8yÏAIâý%P ŸÇ ÀûP £ X »ÇXüuϰ8NqvÓKÀ)Ø’â8䎸‡Ã €ðæÞ2ð~OñÀ|X@>4‡Ã¨þ9K³ rÇÞCHʰŸ/@Cƒ³ñCÈ{†ì[BÀE#Ì=Å’øpG¦,Žp÷ÐWrp ±÷ðo†@pæÖ†÷÷Ð÷ÐÛ¨{8.qø¾w ¯œc"8ÆÁët/J¾|}úQ°ô=ǰ û•”/ßú#ˆÉ’BZðŸ_›1hõÿñ_ý¯W㧬Š<ö¡‚dWƒý¤^ÿ†÷T~ñYKûñq·Ïà¥cž@:‘gw% z•KIøíMfáñV‚Þ(ràKv]–{;’º¸©«·Ù‹Áýóþ¡aÈ™ÀH £¸¯ôøi ½šÝqW"xlÖ/óа3zñ¬¦îÞÓKÃqG†øèHÇi–ƒ*KßSԌǯ°N~å¤Á=ôÜýÔIC²Ââ F?uÒ$|=ý7Nz ÑÜ’B/¦7X훈ú•N‚å¸çœÄãŽ=µ~Ï‚ìWƒö79§Û`ú&:Á0ߨÿÇ!îÀ›*þœ¾U1Ëa€ä¸Ûî£îž¡¯FÖ¯õÆsÕ±¿ÌÓГ]këSoüz7{Óo»½×vÝÞVÛƒ›¯½1sõÿð,ô‰ XÀ|€à¡ »‚^ÌE „N‡í]qQ;‰C G*F±ÐÇq½£¡G‚~ˆc1†&>às18F#wÏ‘•4ÐãqÒÿˆsF~`9hà¯Ä£3#8º÷^Ч‘Ýö…VÜûÅþ/èÌåñëwýÙ'8öÔ}}ße½? €V|e±ŸV °w_º±gô—^é) ñôEà‹Žö€& 6"î ¶ïiÉ@|D²ä;S<\¤^eì¡i'ñáÃ!‚_i8hˆq n¡p ï ;Ǽïmع$NãÜG >Êøw"°6²Ôþ^¤ÖGCŒó‚úÀ䀸ݽþ×oPQHˆ.¡ýú¢áŸâ™÷Å@Óð¥|÷PžÂ¡«ƒ*õùò§€'¸ÇEa©¿?šƒÜ'1†$¾ïÓ àûWûËÁIáìVûV¯I WºGUÌ—áÞã©/úÙã¨ë{…÷´ »r¥ï´Áè6Ð`œÀ6²7ùÐBÀÞð*4Фô?ÞŽÛ>Jä ¸Â÷¡‡ÿ1ÜŽÝ=ƒŸ¾Œ?š{â'¿`{ô•/à6²ÿün£* ~ ÅÀ×O(Ê+ÌÇŒ‰ƒ_1b{kðuÌùéÃaÅÔ÷Æê¿ d!_8œîà WÜä³#G`8ù•lG}cßz*Ũß_X=}"HˆÔžÆ~—©þ°À ›#…Á¾‡Ð‘¡IêÙ7‚•Óß{£¯aù“ð}eŸÇë?Ê¿Ž®D¥ 1†ä˜dBflC4ÖG¤pò27ð@‘8/p4õñõëk¶Q €0ÿøw4,ƒ÷1':ˆ !”§ÁÃ5Žcõ~Â!Ø$¤”š&û˜\?4¨ëúYVpŒ¢?×E!ý£’b¯ªïA#Dø\Ï!ú_±>ò+fÎÐW—¾Üñ¥Þ;² Š ŸF±>ÇiîÉŒÒíXfÿ¿ï³€çuçÊËþî|nRß8 ÷9uù*°Aî•êòE yK =Ñ Hüž"pöæï=ó `Ÿ,AÝ*PÀ @6ÈpÜÍý´ ¡:r_«1Õ‡|0Žá>|®±‘ÏOûðñ6C õC Ý  ÷è7T˜ï•zRèZ5ªopÌGU"È@'à]ðy8¤ ,MÐîÈ>ËAýÇ÷Õä6ªé‘$\,‡Ñà‹Üzx†SÈøÕÕÂáÄ=ñUYü±,ÕG߈Ýn`*†ú2 ž -ÒWNë»ûí¡8¼ÐÙLÿùÑé¼bB–º5E =7´R4ËRßÇë:LÿyûÌp?toVKPP÷ Å|D‚þóújo<‚¥úÏ«‚pÐAÐËÜŒŠÑÄ+@3,u3±òhÙ©§ãFSb?õ¶6Ù^r$9èȾa‡ßãmG†ê?¯«Z=ðÔv^U˼JÈßÉq€æ|A¡8¶ÿüœˆÝþóŠw½­Gä¦8Ü028xƒ‘ñˆþóÃFM°ŸÆéÛF†8AqàùÎñÉþóSãýçu£À1ú{Šˆ¿-Ôåbýç‡u`o·?gÔÕ|Ó ì©öý”òëɧÀžºìoA{êíØžºîá³o¢{ï~)º§æO£@3Ã÷e†s“¦¼ŸîPìÏéÎïÍ )úæôáßÌðÿfx5mó0C ã~7fHá¯!-~›´übfHá·ÓBþjÌÂ_CZ(ü6iù«1C ¼mç˜!ˆ×ÜV©¿3„ïþnÌäØßRöš®ÁÀm#óc†ö¶ÌèŸc†öb ijàŒd2lÿ73üs3C’½9Íñn螤‰?ýÍ ß—Â&ýZݹZnö—`†äSŒð73üÿ^ü?€Ü[–xý3$¸×‚»MZ~13$±ÛkgÿjÌÄ^CZHì6iù«1C{F¥~3$1î5BÆo«Ô_‚’8ñnÌ`Éß,ý#ò·Ì_ŒBßô;2Ã~ ÄÛ²[¿¤{‚«üb’âËIõ/'B~›• ȧÎãé*D@³”òuÂÊË~ö ™sµôäoZü?̳ñ#Ôæéèù’ÏL`À¯2ióŸq ñ+Xø9]Ç@\y˜Çôê¾í8C\ÅÄ®‡çÕ:‘?jx2øw‡'~Oö °ŸLI¿çè„•ÿ=ý?4æûö§g£¿ëÖð×в_;nð'>ëk·{žÅ¡gûUníšÿ%.OsRÿ¸üâ€Ë­Â׌™³þ¸›©ÅÏ÷ÇEd?’Q|3(ñÂj´[µaÿõc¬êÏ·ºŠ üq+œzKêÏÅ­ Ô^¡"8ý4Ô_·ÂŸdýuãV8ýÌ>W¥n/ý«Å­pöm»z¼SÜ gžI1¾jÜm•úKÄ­pêÅÙë×™ß1n…¿&nE2Äÿˆ\wšfžyÛw[õ{#ü`܊®Xýðažn¡ùÕîYd/dîÚ¿¼oÜ ûó¬àý;nõ+âVØO/ãý.=¦ùØú™ÑÃb$ ¾Úë]ãJäŸ'®ô÷èyÿÑ;ø—.u ˆ«Þ‹¯<ªÅg ¥OSý®˜ÿõ=M¡ðÍ>”_kÇÁÜ“gÂneˆ{œ‚$a÷ôÛ± ¨ûí…)‡ßïÞ *þäÒã—^Ðpv´B4ñÐÁ{Ò$‚ßã4Ks,Ô? ö@àÿ3 ‘¿À{9ú¾g³Þod BîpÁ'sývZ}XñžÁIŠfvÚ >êIÓXÿª{ÏÒ4Fâ»kQ4‹3 ïa¨‡]x9بë\¿%N’,T’žmC›‚ã}s†" ^÷"ÅaåP‹a›ôp ‹s4,Cr,þ°ñ(Gð7Øhƒ5Ã2Õo&Â=¼s/7Š„„¡—€FéaKæ2úøíêÊ-M„½ö+öC›Ù•›Ù¹Ïéí«q4`¿»üà3FÜK» ÝŒ°Ð¬ÍýkÜ­å/ÄsXÜñoìeöNlªÐ‹›ØÃ2?°‰ýJ Öv+Kä—Héöv€ýÆÚT,v•6ø°7€cf¯K¿QÓ}Øè«ôÑ›eÝ›eŸÛŒ‹íÚÇø(üÆ@–KCk­ K2€ü€c÷ ‡±$xíæ|ךðµýÅ_µÄƒÆ¼ˆ®~pk°»ï&ó?ÝÕëîf¶Ö <ôæ^boÚ¦ëæF_·XèÞn7öÜþªOwöº»Å½_Ú‘ìæ~b?‘^ÿ¸…éÝÏ®|yçίþ_·ÒOŽòq7Ö»sØoìçú‚OýyOù°›ò÷÷åûì¿6B¾»¦{Aÿš<îÐ|÷š|Ї-ïn§kÝØ:ù6yÜù樿¹yò;nò¸!òÍ·þœ<z8Áàîggy_ÞúþîùÍï¿¶GŸeð‡žeð9|ôpÒÄkú“ÔãÓù?oMN0¹{EêÅÑØNr{GùLÏíí_1þûãIîn-_| pÜÞù‡à÷Ïobû#ÝÜ×|û8¥ÛG/Ý:¥éýƒúÑ>ø ç'ލè™{ ¬éOtû²ø3Qñír_^„ÄßxRÄލ¸q„Ü•¹»7Î"þÄýqs/oîüþ§<%ùßZ­ë½Þ^ÿPœãv8åvèåv˜ævHçIôç÷¢ˆ‰·æKýÅEü NSz’v#%üÖy=/âÛélßI}»&÷$¥î|yê­CøÒË_ážÿÿ^þÍ'Fü²—‡£û$ÙŸŸÅ~ÛÑJƒ}ª¤ ýì©þ¡ŸÀãH@ö‚œ‡¥IôóÆ8Ù¹ó0_99À îçï¤Ä GÀ€!8‚F ñ'¨çn4´SCFMôÜ>†Ðw ЄB’!,Ù5ËAºàä;dOâïúYƾsšÃpÏÃ9èxúKÐè³ýÜ7è'<9š¹ºDÜà X¢_ìЇ0œz L ¯‚w;‹éûÜäjÍZ¯M$ûDå®…^#ñœÄ¡ÁGú{x8”3tyt×xÈ:çî=ØI}'Ky§*ñß$öï÷¡pWi.½œÀS9á8øA‘LšùHžûD’†ïewÇÞC¾‹xÀëÈIÓ?OÍ^~Wöӻ ãƒâèÇwÅ9¨ÿøí9‘“Ï‹œüVäo—ùJY]e]ÿ0}ûÙ\}ô2ÄöŸLW…u½‘zݨíÕçrÁÚ^Là|G1Rôï'Fê{>ÿ¤_ÜóùmA•»ó:ã!w?°VçO2Sõ¨y.Âñ4rw3AãVågªc!ß™$»CyÇ™ªÇ¸Èï6Sõþý³&?cù‚˜wo%*ï…½ìýN\øv ùI¼ùÆT>EÈŸ=óSÈý:›á•ýo#ÿ·gnN&¼÷ŒÅóêðþžþJ¸o°†?sç§°çN_~ïÓ8?Íݽyúú¸ëÇIî묧ï,S¾5Uù#D÷ë Ô'Ó‹Oqÿ ¦¸_•³pG=›µðn)AwßMý%‡¬ßa¯LÎyHãùtØú{÷ÌÞ^¿øÀõ;úwœÑú”ct÷â¦Nïuð:¬‹þÝ#„ŸÒýžóÿ!)ïôû~:ðö»ž|Ç=‡5¾NáýËŸ G>ùãÜü1šI3ÿ~3GyœOxJ&îž‚´ã 0?Î$<¥ „sßÎ]]ÁꇽF»òÿ‚âÃMþã{ZôʰÀøáß 9BñK%)þÝ|ü{ôûï+Bô¶Ã读©¿v¥ÝÝ„CÆQ_÷¼FrßÖýKûÊ·ûÏ3®ñ³p!~Æñ½²ïh¼ÿÜ|<„i/n ðtëË‹Q¯»÷ãrWòj3ŽÏ-±?ù\äz «ø™÷¥¹Nÿç¿~Ë`oØÉW¯ñ±0¬áÉÑÓìÜU^®_æí¯` Ý#tsuRíI÷½Õ«/©,Áýû–î—O~µ#ÍSsòu‰~Ö仿•úÆxþ,Åý´zfÍÇ+•M‹ÜM;Dÿ´•¸ž•zƒÈ{‚Å=+ò¯J¼‡ÈGXÿ¹%†gPôkm1Ùn<›ù‰ã,?Šÿ5­÷ ϧ·«£(;ð¹Ä/ñs{hü´ˆtÂ勈Á;ˆ÷$ÅRÏÉøS‘Ÿ2‹9Ä«LûÌöÚ?k:Xê÷ߘú¾ú ö¹~y&/àiÖÀÏ…F¿GF^\ õ‘CÜœy³ü©Ö&¾bÚéx‰o¼×âÄ·Ïíc9øÇ„GŽ©̨¡)ŠÂÀ‡~g0ŒcYâÍ)óxŸ§8øjÛž^aŸfª0àYÝ}¸€¾=z¾£/Å7«:%õdjäGW¯ô[@BúþcáGW¯Àé'KÆþ¢«Wh–#ñ°u X ï3Æî1¨«Pqñ~vˆ‚l«SSÌâ8ƒsÛHÐ$¤!Ü“-$sÿt¦ ^ É^íHÞÏhÑÄ=Ã=l³þ™†ôÛŽ’ýVØÕöý,ÙuBηKÈáhºÃ®ˆ>£Ã¯W´ï& ÞõýäN/P¾{q_™?pòËûy<Î"Ü Ë½`þy§6^³_âã¼Áí~—Ê·O9ü]V(ÿÀ¶¸ï˜÷ñ)gɯÂ`ý†Êz]m)ÿ&Ý,Î\Ò2*à(úê<ûg1èâc~ Í>ôîHh8–#¿BˆCà们ž£ ¼xù24ßÇŽœÿÉíË^3‡úü ê×fþïIñ?Óºoâ ÞçwöÞë¾™—ÂëÖ}ÿHòâÏ­ûþ‘fþTÈù¯·î›{•}µfý½î›»N˜|)ÿò-NëM)Êo9÷þ§×}¿âàû‡tâ›åO™-óºï·¾÷Žë¾ßöÆ?½îûHK~ºŠäÛ ‹½uEËë—ßÐ5° Ç}ä⟧ÈÏ-µù6Ü/Ôù…K,Ÿ®Lº!'ü=Ó¶¿Z’…CkMàa=ßGQ§²zn%ØW Å~…¬^ëgñ÷T¥›Ëûpú:º‡Çw ÇÛ$Î°Ï êÅ †_¹j÷[&uChïº)ÀwX% ¨^åˆwT¿K1 ¹¯|M]¿Ãro3â'ìù.ø6Âø #YòÛüüß!r öžã0Œí¿ö§aþtÛ…+ór;{;p{;Èû)ü+ â7S7”—|×µ,ß™ßzH“D¿q1òT¿©7ùT{¿?GóÕΓYžÏ²ƒ4´ò‹ì¡A·íÆý[¯ìÌCþÓÙW©}üÇy”ð—?þðùú§ãÁ•ãýx¤âõ¥µ>/®…®¤›–øýI[Ð_A’G|øòõ*ÍêÝÝ!+ßN¿,‘Êo{ꌋü¼÷|q:d\øþ§ëÇßË{7O‘»»'Qö®Ÿ•þ?·ðíjöX(ͳ-+öNÝ'4]ß´OíÐÿ®̳+ûŸ¿£‡£þ—c—>M~@¹Jò¼¾Š­é2ä^Ÿð“†?𼈂Fy~¯½î?äµy]~|øû<ìÛ‡7<¿ò£¯ë"¿šðÁÚ‘€²:/ë<χ“ÇÚ¯þ ¡;Â÷øXàÏèˆM`É ¼´×FCøä1ߌ&ßl$w¾ ·ãßMõÉr<4³ÉzcNEk<ºŒˆe¯ôí֘ǸµÖÉ%îEVêÈ´·}#$}¡Â×üú_¨ÂîÐÇ}¡EÛšÀŠÔ¾‚–ô7êq´œŒF݈ŸF5môd!*¦Ž§ãéÞ5G؆’¢r¹=¸ÙbØTrÄj¨Íó |m~8ÒÕ%/²|º!K¥ð zp9³ãC0UÌ s, õj"¢&sù8èf…Íjé8DC“#Ì4»Xõù¨.PuBþ4 YqÐhûUq”YO<ð5³¦ìùCÀª2öÎ&½ÉV[s.P§ÚÒ&Kuød;ÕùîÊÑh˜•\RfsnêÎ@ƒ„ ù o¶c9¤ÑÐÈñ rÐ0">äÚ`†æÖY¸ZZ¯Ze6Ce dƒ9—¢Ì°ˆx<`Ús²› ö„ç)ȼrS¸GÎ=ïψOùÛm5­éÕj¯WÌ„óËŒUh}3“$‘ ³ò@ "ȸj¡xú÷vÖé²X4«âÔ¡H¡Y#^ÈnÙ™kD2,àM.“8Ž«9_9“í~×ÔD‰5¬¤KEbMJ‡Ú\Zà )ÙGC“˜2²#5%9,´üuŠ+âÙhæLŠ;nÎC7IÙYë ÀO¡ºâ—¡”ÕÂÐb‡NGùÁ0·å*#krÁk>Ï«Jž÷Ì\ådj›O9âXQj‰‘ƒrÊ·Ñd/€hNQcu4q¨aT˜®KêÛY3Ÿ¦Ìœ,­&Hñ“’\xb£Vò c’L c•ÌËiå£:ahNÐý9»ÐÃp_‘š0lÜæâòØ)©Ü fœ'–‚=^œˆNÙU.º­_áFr™ÈvЇ|H ‚UÌYbm2K¯sM+5åg¡ÓÈe‚7NRmñYæGûN–ìðƒl;êÒøç†™ÈøD ×²4òD¤`9!ÚI>‡cŠcŠä…8¶Ž«Ö";ž*T›3yð£,jc0ÛÙX.oö»‘š®¦!µÂÅ¢ôWˆzÙîÈú~>ò\›j#t™PI'j6?2ÑÍȬյ 4ºÑh T±(\â‘ °RŠ10.‰a ër†A™šÒN< ÈiO¥aº#lw9V²;øj{e¨óQ±#“ù¹*æôbŒÙÌڃéuç˜+ø&éÌ·ÖÑÔT`ëiÝ’‹ÖüÌnGŠÐÿ’Z0S!Ã9ã°1«‘£{ñÅ:›s”\ 'ÃÓd^VÂc¶Ì1ízè.èͱªÂŸ¯[« ;¹5”뉟j§•eZ„PQN]ÎÁÐCp¨–kKjcŸw¤¤Å`‡ØcjÑÉ^ã%#|Љ†à»³3eú¹/5Ò¸lÌTM/!ÅíR&Åó³·óyÀó+D¸xŽ÷F¬EÓy¸EfN9‹M7KÆ>‘®sb cŒŠæ¸j‚q-U‡Ëh\•âHêò¦e8Pêxæ4¼Øú~n•C9ñf^²D`³k)]ã4&»’kÈ©´v‡ÜÙŒ3)Èæ q’jÒœçÊ4Te´¦ßeņQñN>v™¼—³í`š"ü®¸Ùì„ "˜UV˜(nüÝh[gÊåÛÎRɇ¸c¢acè×úðj¥;Fz€AtÌÉ’’âÂ휿ã<™þ…Šçͺ%-Róè :Èi6œú³”9”‡æ]¢µã\<òî"`y‰q´KŽj s`)67ñÔâ›*"Äxˆ y¥8 ЕD°—j9]­­Ë=dl4à7µm=JG^¾fâél¥Wt„¸£¹fNmÙìœ]Žd½á¶ Æ…(ª€kÚé9ƒø’ ¢ua—DÆ®µ¬³.­æôlé@,ý†¸m¸v¬ö âf9¾Luk¶Øï-õh€Lr(Œ5h{»u³l†îk}NÓÝNÔ“1ÃX—mUàIL’‚TÇ Á˜é¾“Šo»ôE¾Éª}ÇfªëC"¡1èBECÙDæ˜6NQFqÝ(ªÓ½k&Æò2Ž¶Ë «!6#Çì©.yÎ9Ç‹´ ‰Ë1ñ)'‘F¨jÊJÍ~åT˜PÊ»ìœädi(Ò9©fÇ©¶’–±i5Ù`(âͺñ9:œHŸè2se!Kù¡HhY¤eަÄ!ðù 6ð7­|^¯¥î¶Z„ªElW ?ut­£ËThTœy¹8C-I7½…ás5! øPf77—óEmØ—Ù~!Íü4õ†9Ñq+vA’ÇCÛ n- ç$§¶ñP^Wê©Ö¹n6ÈŠ¹qh9i¹žÕø4æ ÂÁ›yRÏ''ÖÙ|’Ø“QW¶d!à¸äÒtvF´™{ÌITU*^Øzê²9œyT8Î Czè7ÐG2ß0S-CnmíÉ‹dG5©C9ë{ŽÊL!AU¥]+¦¦º? a±&²=³ÌŠ%Ði–?ŽKeÇtª`S§ ØáÙF° Ç‚X•‡Ã!+—ÖIºÂlΣóÞ­ :XèŒÎç Õ&G¾ üœ1´„.C¼ÐXU¥1•ñÐë8Õ1OÄŠ™Î8ÌWAÃ"»ÙQÚD@oÖêæþ j~t©eVF%[¶gªºX´å´œˆ&?^jGô8Œ"WijÆ'ë+“IM¼Ò:)Ù:r6Qã–•-!¯¶bÛímÉ·mÙ§U˜Yš^ÒnG¨em Õ©ñVxeÍbrë/–êÑêDmYÄù{i®/.éhqºŒƒÂT¶ŠË©2L×ÁØ59_Ns’”¿ñ£–44¤U¤Ù¦Ú¨ÕÀ¼œIăìªö÷3¶ph™ ¿¡«¼…£ŸAïHJý O̺]Z£pãT£–ZÅÖÞÔ Õ:ÛWÔ ¡uƒ°Â½ânÄp†'šX­hNO'ÍU”œsŒe6›—DIp¦.¸Z¦÷t¸ó"i:;ñÚ™Cæ€ eøÈU¼žT‡áÒ5º…©8r[W€ÏX±¥sÛ˜¦jµ®þ˜Á‡øÔœgol“çy߬çs.Á 4·ëéyuæ‹12Ý¥ÑÉRø²›YaâÂÒ&ެ&ju&¬ï zg·u¤b’CÉmdnM±ƒ³‰õÑ"÷Áa¨Ô޵ÄÑÜŠ©Žëºš²ÃpÒ«†]µZËkœ''çõ9+ÒŒOk±žSêb¸Ø—FIhèÌÖïìSµ¨m\L‹Qœp+î‰9©m(uë¾e×3I³¦ƒ¸m¸r¸óõôùOF¾ñEÓP£ܺ¢™±ÅéÒ™€vâ Ó1Xtè8‚6]ÒØ¸>S +ÉCG˜'hðOëM'zz^'Þ<€½3”|®ÀjÐ Ÿè¶•¬«DžŸ6HîCâ¾”4CGŠw˜Vá÷eæœQñÐb¹3[ ˜\R¥Z™kˆ¤¡eQŒyØd+ˆªâîÆÐ°‘5¥õyAlx#Â{šÁâYµªr;lèd4ßB·N4§‹(C€Z°KS†¶M ºx-œO“Ü%ìѲ¾¬Úƒ¬¦‡²«Ù¢¥Hkeæ'Ö’Àx·ãt9öNëu}4ÖhÒ–ÁöpxÌx1hÕßzàÃ%£9à&Þô¸( $Únâ0ÚüFéˆÍIŠùn&Û"£Fõ¸ÑÂ9ÎÕ©γó1°:S«÷SŸ/7à!¤sä‡aÕbì`IÁhÌ­±_ž=~8°]©ujïü‚Ñs÷ûç¤Û¨;æ0uÕQ-E+6ÉDâT²¾åÁ¹¤J9ÐU-O¹2œ%G”’xpI ýxŽÝˆÒ+ؤº‘kŒ[UÁ¹¾”­jD‡9Û´Cºk*8h¾G£ñ”df”ë”Û*±¸sl'Kfyœaî[ãbƒe‘ •-ÈE8­äFŽbccæÊ2µÈùqѲ¶O÷P„žhzÏk–$çR«f™ùÆ@õ:Œ¢xÓÝ™ùQZ-'5¸&¤–•¹“Ç´´Ý€=›{Þ!R×ì z4µX c´ÃYÜÜ,šz”BS§à\u£‰Àj,ÞåtM }´¥C=8 ü¤¼õ ¥â$TLö(ÃV d{1–^¼i7…yfcsƹ œÖ7sÙ0ò-HIˆ…Ð ‹•P…—ƒœ P–Ù@´ô7]'ëùÐ ‚¹t0¡Ìz¶Á< “—Qnæ‘æÆkŒ‹ÅTZ™zÔl‚7_v§Žk¢á°(ÇÌœæU'ÍÄm(;Ë`h!qÞNZѬ1"§Gº,¤±¨¢â5 qÚžC‡ÌÎB”ìù¢óp¿QH(BÒ†¦³0[ÏMšº‰MÕ: +zLrxya·LkšÇß›ªb&Y:³r©ºTÝÒ7§¹d∗:?õ /ÜYÁi uX™ŽÂ™mÍO6j#jÅM8ãÞi·¦#fQѱ(’Ù™–Œ–5P oa–%€Ãš` †Ú hÄ£S&¡ŽárÄa*½šë …Ô;iºÀ`“]!áòž¦ðÍ”‹×Êvf3è6žHÙ¢'él.*ࢅ˜á¬à¹ÁîÂ-=•9ó›RÊÒCš9;ª¦–έÃÆp»m@é9sNv Î9ðyêÓâp.šŠ=”ë}6‚H ÆÓ2òsM„è=ódä’j³B^7ó}:Á‰M½Ï4Ûñ«„¥]&fv@ˆ&;Ga¤†ÂgÒg“dWñ™Ã´¶6ÏæB5Ocdo¶+HDöëeDšS瀱Ùb%¸Û3I‘Êf½ÛžŠ;â4¢gJ¡„>HÒ¢Û3jçì·”ÏÈ<nËȬŸ{.m!|‡ü/˜È‹]îpŠ·fÃCŠG¶Þ.:>)!U«x0n/„¸èbîè­ýµ2ÍFÙ&T°…ˆ_À¶/ÎSºs°S°€Ë©¶æ#¿ÔdLdÓi Ç3b9]oÜŠ7&h^Ä…rP´âx¬#aê.Û%ˆºÄ‹¨Kq¬/G‡i«êÃø´ÍÖ®ÆXgÌÛ¬ÇÁ1sØ£mfƒ55–Q8Œ†Ž³j=?òŒÊ_ ú±FØ wÖ[‹:]LÒgt²ØMM¡Ó²fêùeêÅSåÌO0âxE'¥#ip@kªÈ4¤Ù@ÏkÁžÛT0 Z ÚŠ‘:û ÂØÝÎÏ$8Šê‘šÉ[FRëŲ*£u:lm½8ï}R˜;S6p&Ù®F³Ä—‡ù8a·­zäšÉ5¡„Ê/ÂlÒÔà( ‰¤Ûóᘠì0®ä•ÝžçÜ=õ"]†WƒäÕa€ ŽÛ]›Ä<= S°ç5yF€4›)Ô^£dZc4!UÔéä˜ö¯~—»ù±Û×6A¢ªU@èÆ`Â1Å&B« œá.¥Pfg^ñôÍHظuxg*¬ª)ãUã ÀÚªÎÆJ‘²{|§Ã‡aGY¦îκËÜl£êD W Óf«Y–.6ÛèÄž¢CnËjtDÕñÉÁȳì̬Éä‘\òü 1¡Éy}¶K-ÔimN~'³æt¶ cË,ôב éã2¯Y#m¤…åíìÒšeMÊ„LÀÞ92Èl3këUº*ƒr…óBÜ2ÛK)nu„&ÏšCµ:’xÄ@¾ða犃Æ öÑB¼ÇÜu†;xO“'wAmê(Ê«H=lÇ©DîuYÇÇŸ„–-›¸¶ DW\¤l[®x©ºeXËÝTÀð UÍr=>Må-än­3ƺÐ×Ýe-:´³q¶šOC™-B™$}r\ã#½æ!/=¸sy’NšŽœ8Ó¢EœCE»k.lå`êçÇ•%N'ö‘â.»É´cl€Ç‚N;š8UvŶ–(¨ ·Ùä3‰=Ì èŒ!ž›R("4œ(æÌÜy¼›]ª¢žgj"žk©ÄI)œ{á‚m‰d,‹éx‹¥ÝeFì ¢ë;ÚÈÔh.ÇJ`e˜#¬Ì Íh™ùb¶.¼|œºçÕa7=EM’Y[‡™'ž¬` É®S*(Õ­lyñÛbÄ“kÕËU®‘,âu1”4´â!KŸIKãÄæ+] µ0-qYu‹]Í‹³c“l˜*¦om•ç¶ ÷'ƼÌȳ{Ɇƒ@¨¥¼™uyojßPN¬Ï[-taÌ¡g•Iõ%4ˆìxðÈ¥aIž-xRWIû0>è…^8„±™Ç.:W’V'h%Z™’=k+‰áWXF‡ŠKLó$W·ûd\¡ ÔT4§=¾a7iÊã#Yêp†ºm²he¨E49WÛ=ÆŒ‡(3”Ž×‹t ŸÙÓD %M^&Y¾9ÕZ*ŽìTkˆ%ë/‹Æ!JêÂMp¶A—ÜC&G‡e£ÔÑÄ/Ó“´R܆/Gú"m-°¡aº¢’ ÞaC9©fy¢å¨:Þ©öÎg2øÙ0@ˆÁjÇÖ Yͳ¤‹q(†jÇ“ƒnÚNÀò© l.ªêhÞ¾i®òÜ .M¬9 å¯Ö Œ…˜›^1Ã.ƒqFJ¤Ò—;^véŠøi,U,wlçCI„gÊ…ó°ÑôÌò{žfè¡Ûá>Û5ò¼äEvQ–U$£{™EJ9u­;…Pý§¡ëGÕNDùi'•ç9të¥)§ÓRâ íD$ìWÝÈ?ÓÅvó˜u¶údd9w=?š äJnhRSÑÒ¸¨”TÉ,c7_O™ÉÈ }-œ‡ƒsª¥d"ÉfdÒ¾cºÕ&;ÇÎ(UIn _XKVI©A¿Ñ;ˆÒq¥5Ë9NB°§³±dIB4ЉA! ºFÐCc"³áü°)W­²‰6î¶f¢ts&¡–»¦4Kk™o|Üœ^Ìš´Èn™‹9üú•µ~ÌÔCSà>°ºqHŠU5 r¿É†§¹‹­³âvªQ „2ò­yÄ´BBÁŸØ]yËtî‹V9aÝAÊ2½ óïêÌ´ØÒ&›)MLJ ÛVÐÀ¼>ó°Õ­dlZuÉõ–ð0ž×˜Ï{ȲJØl=<§{*v35Í8X@'B»êvæ›» _ÕÊÈQ:B#fŽŒS¢Ó¬Ý•Ž©»‡ ôx ¢»†=H3{sNX¥Ql­°Ñlydôj?1ŒºÆÄy4±zjFÊ¡eòõî.ÑúðY-mª2/E5Æi¸ÚZ 1²“xÁ^¤”δ¥NC*…еÕ$Īe§x¶vô ЬµÕt$àÎ Úæ9ÝT\„kz=¸hèãfvEµ4YƒOx”œÑñÄX,jš[­Ì._8MÕÕ4çu’M=â<,/>¤çP(Ñü%¦º9ò×m”Öx½ÙÖõît|ƒ6èZ,óÙ”¢™bPîq!ɂњh†HQªø.&«*lë¤ qbÊ—‰*i®56%²iFÞ!c„ ÉŸ9 gÅ.Ñ­ÔÞj»:ã&AVéŒsI×'Ýk˜Ø¯Â!¥×r‘Ù59®uB‘¡°ð J_Æ&É,š%I>ÐýÀ›rŽ?öim¡Z‚z¨4˜îÃŒ0¸ÅB\n ³¨Äén0#Öœ«îƒõ%r·"Y´¨öòj¨^à‹@7x”zv·­f¨ÁÆÒܯj£‘x!.ð†Ù¹R;.óŒÔRbgj(S½°áü¤1ÊR-ojþÅorm2´P&Ñ,q,\T:BÖÄy?Yüq][há´3´æf0÷.k!Ž/z3á‰rül°º•ÌnA0©rŽA¬OK±’UqFí¬‰ŽÈ~«ÆØAV¡N»vwYc›$q±,ÇUXé$_ <¿Pì ª·*eO/hÑÈÁ]Z¹TÂ!¶ðci¬ÌÒ µX6Ýá+k¶øn\ Ž*M³©À^ª™Þf&ÔA…4ËéÐ츞&²èTËñú29.µZWãNŸ9']WL¤Öx¾ åÙž>ÐgH—UžŠuÊð´3îhp öªÊ¥V*¤¨À B((á„ó[6¡vPÃÅ6=ñä‰fƒªŒÃÒLªñzOyGºìÎ3Hõ)ËäVLlnyÌUÃÕ2/5® …‹@æìÃp²›&¾á]ªDµó-BXI¡uÕF›§±Zo"f^‡õ%ñ­IÇ*dѲhìA‹±L¢“–ŽyˆâG qD·ã#sb5Øb09e:µF\Y­ñyµ›¯ÁÚ4ø!˘ûs’„´åâK(å¡ìáBpÆkþ ß8Žˆ¹=¬#,ÍBÏ^#ì@pƼ@Õd‰¬pb©”±­¹dûªn}l˜ýÊ[\Ô‘K”‰œ5㚣]Uwt¥˜ÇDn1ƒQ¡]Ù%Q³´hp¤’-dmæ§dMý¬]9X[r$CI­䥷ô4õdo–-4%• q¡†Ç8†HòàHbI¦±j+}ÅmŠX.…Fò>®"æ´&†ÙÈ8ž);ªl¼Ã~Èk˜„j-9è‹v 7¬^Ö#XFÙLjdhªhàú©°@á£]u¹Ѿ^,Tg3!¦%Qo¨¦ºCg±Ö1–7vpàT€n×e£ÔÙ¯f‹@"†|2sÀŒUSK7lއÄ’'¬Ù¤GgJî&Ô&yÛž‘Ð äEs‘¥IÆSY±¬`Íê@QÊ$Ù+oi}`ÎÜ£kl­±ÌŠª4®œ5Xe+‘ü3 µ4Ë!ƒf^{Hi 5s_P3‹Éœ¯=ÿà„­;Uj„5޳¹r§(öì,–ÂÞ„^ô0ÝwÚ˜5OÇG4ôòmf`û¸ Ðí}Ÿ3«Ò²ì9.m2ßëxl ËYº­c¬§>6ßáÖêtÖ¯©®žj“?j¦!ã2ÝèY›¢>]ûÆÔYÜÏ5Ä)YXåi5™¸.BÅ•[Âa™––S—ùX›ÁΙ N¸ °T,¤³—#n7Û£ ¢rÁÂd’‹G—”ŽSu|ê€1Š˜k!ÛÁŠ_Å%»Ôaª’<.{(Áª²ö—@Ô×åeXKhÆkt; ÆF 4îóãNp÷áÎb!ÄGܽ:vŽ“@L¦GeâîÖ~F@ ä5ÑQ6E•Màr…­¨þ.šUÞì<"kQ“×vÉn˦ã"Mç%Òx\xaá“3#hÌ™$f†šáœö–ZFÚ:W(S»j Âs˜Œï@‚j+¡Âág^M-ÍDf…6^…;dSÂ"tò–;¸m ·­ê6én(CÙRÃr(\DgÖžž°CÀ[Ü@;_X=žÖX¹[#Bf¥ªHcl†â¸<Œ%Ãø“¦òð½#3..Í¡; p‡iÍaÙP*Feèv¬ÜºåzqqqÍhTA,8ô“¤lh{#:adàη,ðXLX¡ÉðŽT;µ@½¶5èK™!*"g'«ñ|U+ŠŽ»íÙºè>24ÆGÔ¸ŒóÍÁmŽÀq«æˆ®%S§2(ódWÝqzY(lºÄ’é0(¸Át}8,Ý ógƒ£#¸âÎt#7éìÚ£QWe¢Ñ$Ú}ël ¬ —±Z*:mœ°:á:§+Š>P´Å(ž0ƒ@CuŸç mIŽ}^c³·æÈ¡Ãm)ÜÏ4”L¨b Ãhœƒ’Þ…EÖ×!Ÿç7hÊ´ä•AÏRyv¦2OM|æˆ@MÎùáúÝÍb+Áý™—J ,Ϻ2y‰îãîÜꨒ!+bi+#ö/àóH(2?…~JjFìv,¬wãÒHÑÖÅ8í*£ ?«°ñ @wà½ÎMvàÃ-ÖÓ¼B&¸ët²+»QnBvJ‚Ó„§â K ý›“åPyJêxÏø›#|zßò;(„p‡ 2Ñ©çÞ"C^Û·ÛYG¶þ½4È è÷vÁ»zï1[Å >¤MÔ(EšEÓ[gg¹RäåcÒBn4ýö‘Ð!Üx )£Œï~uÓ eÁÂîÎk‚âp¾‚Vdzca!ÒŸl”ß™3›Nr|(ÙɯÁèÓÜí¨èó-oÀ§9îM™É”¿Ñû÷¹Øšî†r:Al±úõ¦%±õ23ÙŒIмhˆ5‡Áò/ÂAêýô‘w&7@Ó@?+WAØÛIÌSí&ȪHn¨Õ^z¾íñxÝ^&çç‚d"‡2¦EŽÓî*óYÊ’ëTŽ›_01D’ÄO/;6øP¤éP­ßˆ2}3̳!±¹ÞSNB8ÿŒ"knuÎ_̺Áñ‚}..ºü÷¼±‡k9<Ëæ‚—g]¾×“‡¡Oý(›þcÕs[ æÀdRo(’Œºñ»lÇÅ YyuÉZüPG$ry~¼:›Ï8ôµI4+G¢*cy;}BsÃZ÷‚Å»cŒÇ×’ÏãD¸¹™©b"9ŸÊöb‰=êÉnI_›TDCÈn±êNí磖¦µJ?ä^ºñÄHLs»:}ÉN;bÒƒI4ͽqš:¯ÎaCô+»çeò‹Vóp’ßi2q'"ÅRã«(5ùu‡hsL“LûÂ|=~wZR'R`ã‘tñ°ƒËÒFÖ3hÇÁå,@Mlk° 4‚¡Vvì-ղ½Sï#„©ù—¯…I ‹Æ$‰0¯Ü¹¿þæ[¿Këø×­ç²d±ÞWi<á³Wcb–ÞšÎÉ9²ã/é&B[Mf#>›a <ѳà ^ž±v®=7,¿;ĺb¦Õ÷‡d:ûä/ßÙK•Ëò=sãÊiûʯќÍ轓"Áð˜‘`n¥Ðñ^dnšV;:÷ÝG'”okýÜ.®qÉëÿ†µÁ 6Ü]C¹õ*¶N¾EWðoîgBÀ~ýg±P¾E¾µRÈV‰ M4ûbØß¼“]ù|è­%ô‘†Ñ 2›8öÍúô{ü=Ûæ¬©zú“̳£» ò_;Y4f}@áÖñðÑKâ<¢YIðÏü7Ân·ýc%âó¥úûû~JÅ¡ƒf ÷—qü;BÝróØFãdä^¤ÛÆ8<ØóàOõ ÕѤ¥Êµ“[JÞHLVßÑk¨ #æKºc¿âˆ ÀÏ;ž¢.LêÃIbjÆX©¾³¬-6/pV†Ìfí{ô½ñò%Ñ „}yƒŽ}‰ßŠ¤Â´_äŽoBb¥‰ÿMή¿!U`Õ«†>]ŸÅÖý²‰K´è¼± µ£2ÍãYî™´{P‘…´öñlÒhgÊŠž#~Ë]Érª°6Ù’ÓS D…~ÊÉôåá«<Ëøe¯Ø©M‡©Â:›étÙ£öKË,Q Ù9®aé"è‰ØxÂñ@QSÕ¶Õ7Ðé€*ò‚Çõ;¡©ç"q&4â0X4äš<³°üc¸?ømÝw ^áÉä;Ý“)ô¶Ÿ`]´û³WëKl‹;7P¯hváp‰6¦eQ49ÄZ—Š_G¼^Õˆ– ˆøþ³T—‡®þ¶½r˜ŸÑÂ×ïÈ3=ÐCUÕÈ¢¶µwÎêKØGËóí4jJþ}iíSBÉXå¼CY®üW\Ÿ Œ–`Ñ6¤!¶oæû’»¯>Rw¤ô½ë7»©°ô]ù챺4µç*8¶š‰Ä†» Œo0ȸÌ’„é?†óÀä¨"&æt ÐÐÜ È¡êáÎîiM„ë6ݸÐo^æåë”7:)»LÚ œKˆÓî‡8š^¦šÅV͆ödAêñš.«xÙÖm?M±v"ê):¸ØcÕ¥MyëäÄ¿¹Ä"Eþ4ÆÕÿ¶}öd~Ðt1ƒ"‰“¾˜ P®†Ví@² 3•”6Îí\”ðt‰Ÿì<3dŒÃëÓkMB¼‘Љ®&eƒü'X÷› ^®.³ÀïvR?@¾ºt/¾¾X·Lòm¢§ÑçU-3ï.Ï•ŠMröû=Îsø†Ô¦ŠÎñ.‚„õF›·…ã¶ý¡&àgv#þÙm!žÃÎ "éƒaƒ(ZÜRã;+šÎ+wÕ€•Œ.i…Uq4Dl«`˜ã ¹'­ô`ažÖt”=ÐÇZþ ­ouí™îy‘Ïx’‘f³9÷U‹í Ê£1»44³ÜÃ/?vƒŒH…Sðüråu¶$HLÆËå^–kåYr¼Ty+ˆßÜAÙPR2ÐÉ8Ú +BEÎP©›W%­'®xôÁ¸1Þ8zƵÌx`6M­åËÀRSss•Û«ÝB†môo¼HcPȨÁì7+çªLƒ†Pœ¨3•d ¿Gó‘Ö:>ü,¾ä@læï— $S ´ŸÍ4]ó´œw Éh~¿kµüʃeÁ2ñÝñIé¼íÀ{{Ú4¡ý7iâ$ȤÀ@bÄ6Wk.#Dloñ[„ü×PÜêÐö>÷DK Zœô,oZxª}Þ,PNÎ)~†Öv™p€× ò/@ØŒFÁÖa–)_U(*‰cÁå³Uà2Ѿ?w7Ø•L˜ÌÒ!lEU„ /7  ŸžiaàîgZ!Þ D ûùý%½•XUÓžðù—?Ëßù*Qö] çNG—ÛNNgÄúÍóB2Ûz¯Æ=7—U^>ç4³*Òd0oì¯öøºÕÁ%Âbº™ vóÆ<”i i‚Æ(õÞ7ŠazØëu`>)ô“ÉÄðI}H’í’UwÄ;S³¤|èÜx—Jë» ˜Ò Š]— «ÜºÎõ-‘Hžgâ…} ñrmwȆPÕ2pQÓãœï˜R»° ¦Z35¿ ±„7¹„f !·üíp‡ž¡½ ÈÛYâÐþHÛ£#ohq¢éržÛœ`:… úï¸XÜq»8 ¶GO’Yþtס´¨:î 8ß"Ó= ²âôÉpZÂßCU‰‚´”ï1B-ˆ&ÊmN‰1¹EèH2—cìçäu=Uwý ,Áè‹ TÇ'¨wnô;=NÏDî”5*~”úò¶Uï@Õ"•õ4i"w}rx,ñec~ ®jáI®2 ç¼µ;a•¦ˆ—†”ŽúJ¹ƒ‡¸Þsê÷(gœôõfaëÏ?@Ñ,"™éN«ØîSŽŠ@ãß&3ùBûÄ¿ÀóÇ¿Öt†hñ4IÖ Ì÷³òó‘$Zxï}™ñ°Å.Á[UÖöó¾9JRÖaa„[ ¸Pi•NbrïÈ0Úb‡s4ÿ6 }ì„dÓ\!\õæ]ˆ;r4¸@×Ïæ‡òÒQät}4Oyx²ßº ㈥ñÙ¹ f–…æo¢dçi#¶A¦¡…åpr¤ëëÃJðd ®Ãж|üdÕüzÀÇ `¤¾Šô3´—p£—„–…A] ñ ©‘{´õ Y¾_Ç÷+’fÌÿÁñ (TbE¶DçÒ–«ÕÍïÌ‚tm´íKáo}¹$-¥t£‘cBÇþgLˆ£ú—Ûðü3¡§­|’uçÊ›©¼I%Ó…ÂŒ\®Û €A—'Û“á¡gLÊÝ{{_ð2qšr±˜ßi–àÞÉÞŽðôÊ»s³ QËí4­‹N¤M:Â>Öasîž6ÃåsZ}s; “}FÈ¡O›ÊuæÉRC÷c`£ààKÕ«þ:XŒÛa5Ta°óÆán ÈÎ) ¹ }gG>=ºð¶ùÜ.Ÿ5™‹Wë ÓñvžÞ^Ÿf¹<'Þ½/ñÀ†Jô éEÈí¾·›å½;5Ïî‘‚Ø…›‰ß_¨†žlË\JÅ_|ûÆâö“kÊe­‡7\€!¢*Ò(`Ïe¯Œ½igÔtˆÆÃ« ùÌØ4ëœv:½Ë4HaÌÁùÁÁWŠfí™yãlúêpèuP¿ÒGÜã-åÂzLãaݭݨÑá\ñíBJß?¼?HGÆé °`§ÍœtÌbœ‹Ëms|rMÍ.ŠB–”VæªÞLÔ­²Z‘o㣇ˆÔ «€8ᩘ, ‰!‰¨q·µ¡,3e¨0T›íGuÆ+:ût#=0„|D/ŠŽ9F=ÊI˜²Ïƒ³¨‘Y&þWÆ$Þ¬‘-L$­þÈÙœŒîR:xÔB\¥àÊvW»ZoÒi¯cÌ,Q¡0-´Fg3‚®qé”ë¡kÚ AôÇ®/) 8=—.ë·;H…ìLÉMd›Í­Ÿ¨íaé}7:•Ö¥´_b@6gz=8|%ú‘@Žz¢žmsaIã¶ÔF¾8ØG‚E»¦]Í»_”V¸š”ÌŸNžæ^õQôC~_¬H-ÓnV›ú”§}ñ÷P¿§`Ähÿ …!>Ðì‡Ókêë8üî8]j+ÀÏÍ\¤m”6ɳ9¦·D2&Y [ƒC¡!úýäÂõ7‡v.I/ê›Mßwã,uÁ˜ïwl? Kû6ÉÜ…Tµ©Åƒó*®ò?ߧ޶/ùtüé§:ñEÅmCf,íAåËw­ª:m/RMB§Fx}aXFa-¹dÊ¥×NŽË½a [kMØè®šä óïÝO¿â5>««inÒ”Dø}»dGy+°üm©oabà½éÓÀòj":g"ç[wÕÓ‚ÕÒK¢²Ó µ•›I³½‚4^íØy7J ”JþÄ(îÖÀ OzEd%Cf΃IsÇhÈÀ®)Ôï®ÃIL‘Oyä$D¿:s4κ¦=š£\yÄ0E飗‰sï¶êj%Ô”M9’ òÎ5H:Ÿb’ƒ~ÐäÁe ÜȰX3²Ìâ­I´‰]½ôm©l5"˜Åž·Y—Éy„Ä»kŒJÿÑÙ×Ó* OßyØx]F½K¸\{®&Y,WA•¯hî!{Xò:Ëèè~HøóŠ×ìz)UìüÍXþõÜ”å|R¨2ß^yðq·€ýßšoÇ(±Ë\ʪ6§1Šà)3d9 4~3mšBÃ__kXØ%ä8û{âaNÓ&-]–a]„(ÁÏXi¼±ùd)ÁüÆê%eëoã¡[J¦öÞ3 ù§æ#_Ùäp*ž:#3šˆ/˜Ò3 ¤ý‹½¼´ý|+{œ_¡^»¦$¨ó:/Õ.´#{Vÿƒ¡”1=äaj^öc_¿ñ迃ú&Òo~ —O¥Ä»DË’Ø­0CÍ"½Úò¾_Ià~Î[0EÿÈ –Ÿ%{#™*mʉ¿C*¸ÈÈÌŽdxÒ÷(A]I!·˜U×UwtÜBcݼ‰%DMµðµ’!²µA•¦9¤ê—TÉ'ßT…¼t;f…×Å%hK² îõÒdQ“NÍÝÑ^a tf .káUìµzñ‰è åo‘fJ->¥²¾^ËcíRñ±›!íxèAy_Û 9Zz'àö¶ð†©?IRìwyõ?œ‘Ä€²„b’tOï•·Ök!Üßõc‡XfÉkµO2)¿™GÃ_:2¿@VH+÷º05÷³÷Ì!7¡{|¯5{œÉw‚»Ì‰ßk}÷aW[¶E¡Ï¿ï`”ÍNìÃñLà)Ô«XÓ²£¨+/‡_%Ìÿì-OU?Md‹×n«êÙXP¬Mí¦Òí=‰]á9®0qRóØ¸˜'TŸ¡R,Ò ÌPY•îƒæfùÊi`wˆ´[øìaÙ§¼ŠÐSµ©E…½@Õ™t+×zÌÁ‚E1Á:ðS'1|H=熸\È;ÄIxV¢8în„¯„ýÝB˨ c'’ýÚ{îçv09¹ èæáåðaL÷ú"yŒ6»9ó9oZâxR¤œðìé—*;mÉ)šðCÜ}£Æ cØ9êJ7|:áÓÚø%e¢Á¡·Í‡eaˆPÒ˜ÞyÂñ'w–s¦›§¸uæ¢3n/'/ÌÁôÆ¡çÞe貋ok¶ŸÅÝçãº;°†®pým(0\NÝ‘—ë2gçj¹ k.8™D]gÚø ጃ$Š¥ÖÈæ½#~´ ƒ™×ŸtŒ&^ÐÐd÷úL‰|Àµ:°–™r’-Õ…>ê! YôÅg‡£ÂA#ú„”H*àß)„F°Þ]ÛPshÝ’Ù~Êyhò,î“= n}½˜ûâ° » ‰(Ÿ¤*—¸p°íYªÙ•%JO¨ÔÑõ¢ðvõÎÞU>Šíþ¦2^¤´]ýÊÏÀíò™Ë:Ëýåi÷3•Ô¹©¨@¶U˜ù!ŠÐÁ½1‡ù~Sò'Ž‹}«Rl=õ\·X¨«Í°¿Y0•ïS9Dƒ¡s xWµ'ãà—«×»n­ñ;Økp# X—>üÅ“ƒý©­¤–XÞü)/ó1 ,á¶Ùãá|#UP¾ƒ‡‰:œÈÉ¢lç¦C:mc‡LÔ„-RάÒ|ËÙGáý¦Ïhåäi¸вZV>f”ù“&ü©ýf¹’Ó_蘊Áå7fåj’¢¦•FQüшàk®™¨r¨tJwð‘üw$šü¾Àú£¯éØ®˜ù—ƒòwï†öèÚ– z#L?åcš6–:¼zlè=†pᱨOv{'×5SÈçÉ+ù#I^òâlfc¤Ø0ï<{ T(©öCÄÈ}~_øÙæe|682-yºP\_÷;ß2¬<é,›Úø>òꟗaE@,Ýqá½Sù‡×Mm#ÖBGg¡E˜!ÿL—¢.…ùð†)> \óô4„]ÀåP\™ðÛ?ƒÆJÒÃ÷à5÷´eÃèoŠ$I§h×^ÎËø2¨–ÍOu>YƲ­ÏK2` ñ<\ŸÐÔ•E‰î÷…¡@ "zã†yr ws‘Ÿ.¾0l+7ñEÍøÏ>Ï4®A}¯ Üx31_!]¿à¤ÜÜà j12·’z#Í©?/F(ìM´ÇÔãVöZºÞÍkÆ‹vq}îßyõ¤ÜÙ€áà qlüZ>pWýnIÇ$ äbp8Ëþí–ËQ’‘(m&Ñ<Ùcyu ?wœpRŽLÕ4@U;ÉßA?ô¯ 2ðÕó°$¼½tÇ4žIàw§æo¨2»JJø€˜¯üt”¹òÙ÷Šà ˜Ær´¸/QÖo—óó½þžÍÇѲÙ?ýã`¨Ûc€û÷ìÏßöÑò« 6?iw„?Ÿž >Ò܈_–ENˆÿ6Go4qžÛ§Lqà˜…ÒÁ‘¹9H6#*54TH-k–°iMÜÙO–×P´—é –ÏO47žÕ—8ÒõùxË9â‡ÌÛ'ŽŸ„‰oÈBꥀã1xöÖù{ œq%2ÍÕ­$ƒ¨òõßhTd%pˆ=¡g~Zox5¡/ý3ÒýCìSfñÄhßê4÷Éœ=rŸò±·Ö¦ï>³AÕVVáöa+Òˆõq,"#54ñë¬Ï0mýàn§[®`Ÿ°ìR þMyè½¢‡¼ðãlº Ôégƒ_^«®äùßÂZpˆÆ à…™x.L¸I˜WßDþ „q¯»2‚÷Çm¼4]àÜ&4ÛŽ¦ìU0Ôhÿ ƒÛ(©›–ÆeÇmã §däy Æ³Š¬fˆôwžb¹í0²)çuà>•ΰQ÷e¯dwTL[pжR÷,¯ä5Yçí3Gú¡ 7!6¥ù¦éGgÇÆ•kÜ ¼¬UZÒeFÄ óD<ߨjòJ÷"Rµn‘ªDL³ºdš\± °O„K¸—¬F?r˜'DÒVÈ'qò5Þ2«Õh(í >¼ÖˆÉ2\ãëÿê¦Â3½·'°í¹@Ò¸Ã,‘BÃúúœ I‰p>ÆcÚȨLaœè¡ šÍé0Нë8Az8ª,;Võ…åNü+䬿}·Û¹çzAÇ`ž? Í„ìöä$ɬÞ|ÐÎ%a­Ù£±N̈ U¢OfÍ™äáu‘ެA̦/ÕE®RCµ¬Äõ‘ú¼;¬…ùº˜Z‚7wwÀ…êfÓÏœf¿ÉîžÃj¹C^Ä8mýL”!¯K£ÞSé¯}mh}‹±™ZŽLv~æ!@(IÓVN‘Ñ€¿z#E&[ŠÓïW)ei|LÒõÔˆ½"&gé4^ªoàÃB&ÚŠ­X¾9ó‚ ©Š™¿Ûß7(NÒ'—”Èùî:¾=ÖöiqF‰j©{æ ×ÂÕ¾UüN~¥Éuñ.År«|3"¼æ.ÖÀQWŒ_StÀ€‘” ó묇GáèÔ†dmÍøË<ÒÄYr-ìêšž{x…’OÈ–ÅÅ1^P‹‹ž¸çŠ{/ I@þ·'Ù€ÇP P®ˆ½àÍ|ôþü˜÷M<~ÖêWv}HKJ:ÔÁÁ7Nà‘¶€ŽÁ+þ÷çÓ¢h(Ç¢{’ë!º“µ3^²Sã[»E½ÙëÈÉ0³óÏå!l‰é>Ø]Šh Õ‡„ ¥zão3»þ»-ÈFm šÏ\xÆæ·gžÒ?º¤X¿Ó:æ¿"ƽ\€spÝÞºKB–%Ü›§úS¤ÆEÓ_¦#^äIÉCãÇÕGaDÃâÏÍÓ9xS›äÚ û^ŠäÔ‰+çv\~ÝÅaÂaÌüé@ËrØÃ#ab¥mTöÂ$Â~»óPň£ã1¬¼tšñ+F1ž}Ê*C<ô‚4ä‚ÇÛ,Éo(NÞðÒ:ªãåÄõF½ þjB©⹚Á¤j` Îù\.ˆ9%õôÆÎoöš´[Æï=Ü!<5_Ò€G’ù~:y¥…go7‰È}s’>s;ɘõž+Ó—'å…¨žÕ`Æx7ÀÜL’pzÁåðI—'(›ó8Pàï:r:ÕÊ{f$•/ÃÚ ÏÞ£ÝÃîg6®‰$͸¡´ðZp·œ\Ùa“Cg½¡˜$׿lþµˆ˜È“Kû ~ô:êŸVîŸýŽòdfcç¼ßQš®”½ þ»ÒGþ‚EØÀgVãwÃÚ®›|ÕZ£1V Ûïô†¦tì¬õ<-¢×稞̽QRz_²?‹œÿ¤Óõ(œí¼¶[b ¯†£ô›  k Ç"ÌÄ,)ðMb½µ‘ ­Q ØæuÊ`BðÊöãؾ#Á¯°Hê·?Ý;-Y ÈÓþü aEëYoÉ먹¢ˆÌåjæ2î¬K¸ZNìØTë¼– öK[nj>,QZž¯ßÁÑbÔÏ—^ã÷¶ùõKYýýc!Í·IÒ ùN>PNž)Šæhìf™ EP^CVnJm`~ Ò}ÇhíEZ^ߚ̻ø¥hG»ÙRµ²È2…É=: ì•ÁHðÕ%¨V•¡áûÿÝ/¢ƒ˜†hu|š_ÒÅ^\¸\?…³£úGÌRõïdµÝgp[B NýV(l°iX†÷N@m×/ÁmßCAT}ÐTy-î’k‹”§‹ƒp‹Bp IY&¾Y²Ñ¼äq{Xœœ{5âË„lêIñû{‡‹œ¬èÁàß}|°ü{ŠÑí«–¦Eö$B{>këØÒ•¡vÚ '¹ÕŠYI]/œÃ2GLŸ|*‘uz:NÍ‚þAJoùxTVL\XU…O“\zúuL¾ùøs4Þˆ•æ¼€Qù¦TíË Â€ßYßç¿í"㡼^ ‹¨_ÆdE.ùwc7Î{zJnU›.•Šãv}òE1!¦{?ýûÖ­6ñ&ÕŠ"‘™½Ánî Á3mt?I2' 4§ ö8·­Ëâc”¦½sWg¦{üfT,@6¶æö€à_gÐiŽÍ¦‹—†0__Y.#>ì´Àÿ–¹ÕÄÁ´+Òœ­Ÿ×ÒÆsz½¶ùÑ‹QdjÔ€ŸsÝGÕÍ@ë=sð&ͤIǶt8Bǃj-ôݹƒ{#Q„0ˆ›ô·½õ”Šb8Oˆó«fToÔYñ?:…)ˆ2BÅÑŽ •WpÍW}ÔßÙIã õi²éFÚ{ûZÝðº¾Q+uEQW™²z€L=KÚ™ òU€c]WÍǾ̯Lí:ïïœ勬í(ûH«£xEÝÀI¢iMF¨’MŸ&íØîðTÙõŒoÞV+d›é£iÌo¤\KQÔMÿº$ácPƒ«pÒøF9$[WÌ­È9··¶|°÷¬È&Ýê)è`s醎ÀvV“ µÕqŒÀØÖD:d!f;¡ªÖ0’ k_Nç‰ö­háÅ5nc¨õžªÕÏ@ò7a´û>\vI6p6-í¬ƒªÝ<–ñ×xxXö¸Zó¸ÎeÁu V8×3Íc3ÅÙ&±€X"³b/ç;7øéå³CC‡ä:ÆW)c6òi'扷¾RPÛþ,NwÄpE†9øžfÝÆËI›`‡m‹ŠiׯX6¿'F1²÷’ã¬#Ne”Þ%VN5\;çªo|µÕp•:Ÿaœs~zI#E¹ˆ$`¶Ê-ZYÐë;ýTÚr‰ÉÝÝ¡!<-Pa˜SF‚3œæ:½EcpÑBߑңÎ5)cQfBÃÂSd\ðzGSçé$=L”•ufóJ éð Ñ?,M ótCóebn#l5&rå«´Ë«}MÑ C!ùLÔ—ïa‡p8¤+_—}Zé&~ÿ¶%9½_Vy07!­!‡~ß3HˆÆònWQú»ãÜRý}m€Rbí§i/;¥BSsFµ0Cô>÷ßÆä ®®GÄ“# ˜7ghØ&½Ž CMÛRˆÓ :gÞ8þæíAð«“G’P8g)ï’ÜMøÒp„¿BªwYñQ÷q®¤)œ•af/‘õúÍiš\Óü–Òä6:Çâ1ó®ñ¤›ó!¾>e÷ï0{È·¿2wÚPL]¼yDd²$†xn½J^óô N®š¦Ž[žçä½3{‚"M¡Ç±¥Ö ¦£ œÎŸÅ<”l_ÚE,’‰V›Î:r´GaL¸ƒ\¹‰|ZˆþDjü£ïx²ÀdèïH`m——9³q–\ÆPö³!í/Ü™`¯àÔÊ:ÎiÇceÈX0_‹–g/ƒ™¢ðh¶»KÔ¾ìW©YP†_?*VmÑ#2ÑMÈ{þ“äɳnUz:ùlû40Þ´ü÷U¯»-kÜ—ØhÃFRjÌãÆÒÁ8Ö5sVMC8ÕšŸÁzÄ7~4k\K‹Éÿé‰òÅdEþu’¬°ÙܪlKÿ,ç:­ÊÏ<öXš4ØÏR!m‡˜ÁÑ ÝÐϬ}ÆÅ¢îEê¹è(Ü}YˆlFíïPÊG5Ö%`1^=Æ2L}g5¿_àM\uid¯~Ùì&sËÁ¡§Ha[_ éœb[. ú*Ìqw1½’7u@pUˆÖ® ¼i ¦S"%}.k ¡ ïÅÁ¼`YHº©‰2¼‡°VçÎ=¤ÇÜ`¹P›sÅ(-½“~ ø‚¡ñ_áW߈?¶€OZ;,·›¼À[ü7ÌFg8ÒIICÐc¨™Z`Ú1cÂKzQæ|!Çøô¥ü~óãÒ¹ˆ*â ÅÜYl  H ¬§Œ Út‘ßÅ©iµOü{ýUÏæ9²AàŸúºK3çO ¶_UL25­¬›’Ö`³¦™h±sáo§J°¡ú–ˆø4ö¼á!XJ…õ’»zÏ*m%€Ì¹HçÒ:ô<ž°—_ºH(Â(ÓtIZ­`bßÃ%áÉô³˜7ÑŒÖ1×äptßÁK`–kADú[­A%OóéW!IYt¼¯…ðÖXäñé|™MM£7l]àí*2O6¥«û3~¸”eê ´KÄvè ÒF0ŽÊ .“¢½öV¬Ð]ï@®'Ò¿³ o•: ætú1Ú--Bä¶×wˆ ðu«ÛÌ>L¦P“Èëq qK”Y=¢­PË%Hœ½·Ãø‹&š¦:Ž쥭t¶k- e!•j/Ý‘Z/XGjÃañ¯M=SËÜÜj1y.•µåB+‚M!4óš%F 2Þ<$ê_ªŒ|b>‡´¿[¢ô•‡Æ@ ¸¾á`w±Û¼…$8-’)1Eç¾m£Ê…ÎÉL·gZ”͇¯‡° q‘<´>"Î9ç Aš1ðËG˜à ™ò³Aü 迟҅…þ’µ’Ðg²aOw#{DЉB¼ó!Ë õ‡ ,BõÇ-e%œR=€LÓÆtÈ~–÷ }àÔ«ŽœL ê…ý}<•Rà§’Ö%É@ÜZËIó¹ò0 üûË×k’¼|°kãX© %nȹB&_ÕK*“I˜ ÅÕnû0 ø:ˆ³ƒ_*q4×[„«FbU™’è×à—Xˆ`þžÉÐÂ6½æh9v\œc€È‚ÈþâëŒÎ<¶p²˜Z\jN ÏBÛZ‰ÊTŸy@)ÈbFÀ‡zñemj.*L­Þ1-ê)H‡Ç†M ¨xZï 3¤3ôFžþD*viL]#>ˆ3Æ¢ÀUS‘t48’èsŠ“šd¦Ó¢’«…d0ýF¤¥Ï¸ž#¢³Ó®K…ªÑ!<'éÀè†re,àRaC_Û9@îirýVæŒ\ "¯Á׫ãïNÉœ}#ûñ·°îæÄW¨ÈÌO‹Bƒ‚~"²µ}—òÙÛM«D7¸R¸WÓ?Ÿ©rÇÕÂd¨6´Wÿ7ÍT““,}Ÿ~¤öËúmùù´ø=i9fD'4‘Åê¬ò%ª£k„¿Û®†ô³¢–À{ûo»Ý"vQ¸ þÔ8Ÿ²šì+¾pYàw:•€àµ‰ê<+±ëú32þž¼ý™*ªSüý$0?eÆçC’ÌDàVËhsvTÿ?ãEÿ]˜Õ<§¶Wœ¢íÃuÕjÖÈùv€ºªæ>Žçgª\™ZüÅÑTÍÏKÝØ\‹žÂYΛ£˜%½…b“”ݪ¢¶ÔŸM!Ã¥¡cYªDËŸX5ç9Ñ,ÊŒKÍAX‰¶@â÷t}/o9Rl?”üÃØ<ï¡)`h9Õ^÷@Áø‡ë—¾EºžJW¾ì¯¤þ€Û¼±Mõ\`ê>þ­”j p‹Éó9UôAKðXÓolðvõRÂ&¾¤_L Ä‹]¯æa’]hÞûvÛBýðaJ†·ˆ­ÕCº/ù Z3w¯A³½|ÇÑfê¢ãéþpûÁžXB iN›i ¬$Ja{$)é‹ð¾PÈïB l0Ó³ãäþ½TëWÞqT%¼é}*ÃÔøzøÉDøÊp:ØŽ3ÿ¤óØrT ‚诰gp–á­ðìðNxÏ×?zÞô¬æœ¡Q‘Ueñ¾úÌ%/{‚çßqB¦Ø—GDɬçCû_° 0h‡ltœÞ2 `ïHƒxÙ'LÎàÛB”g?F/¸=½y̸š¼ÁŸkj .D3ZØ ‡ö ±hšiîJþŒ²?X…Šu¾½€ðæ,ìAåDæ ¨œÕPVfwL³TÁ»˜%}‹1=Þ¿îÛ§R»ËÐ__/šZVÆImUZ ™‘ïÕÆI’5#Ûy_Œ:°wº‘6_(w£«Ãkâ!ù3\ =70Áˆˆûú)µÌ‡ž2+s¶>ã‘ÖÕ9%Û{Õ ×E¼E¦)¹y€3¸!适’ ~þéˆon2~Äûà%O[×…í áª&Dt¢XÕ× ·.Œ£é8CK©Ö¥Oj,’–IÞlñ}ÿ¼T{BPŽpƧƒè„öçY;Kë-Ð%§’_®ìKÑëàî½…‘Ea·”óö/³‡• Uµmõ¶íÖtÓè›uã[jý–«Y’ƒ(B.ësvœ 1Ù @ÉQ¦eMêOb5ž_ÜX¤ Õj âMº=ƒL -PƒbÉvÊýáAzŒìÁîüÀ¬fÉÞïEž¦%Q~ϵÏ4©oÓÕ¾í( ò¯ýÌÜ{Пâ'i SÍs¤oÿä: Záë¨ÙS/<àŒ þ?¼»ÆÁÀYý£{9˜^þ÷ÓÕH•ÿXÒþèF!ÅHÿ$¿¢=ßêȽ\"ÌKëoÕDÿÄ5Ї´«µƒ‘JkaAuwŒ k,¡é‘—à|ΔÃ}ˆCFÛz’¤– Ä5Ë:fg¦H<— ŸˆÅg=àÍ[ çzì·=|ή­öqùWî¯$ç¾ôkZËŽA™—ÌH¾Ë ­Wòñëü2¿!HМ1"ú­šð—Û’p1!åMxÝ+i®DQ€O¿o÷å,䟿ݹUéô*8ßó=sÿ6åûm“´G²ô£”K›˜Û†=$™~½]*ó¡mš’uõÅ÷ÊW­Åÿä9ŸÚ½qÄü”z™‚o=½®æ'fHZиÛ|öZõ§|rÝŸþkUOÎ¥ q£nF_úé¼ ð8ŽÞÉÕdŽÒ)±gJîÏ­ÏñGA«—1YìÀÀºÑø”Û˜"_{1õÚŽdÕÊU†‘\1ír“…™Çn·{ELëŸV£c9¨Kùïîoÿ ¬Ö1 Ï)•©ðƒÁê è`l>7oÑn§lFíi]bÒš~ÿØpïÎU†IzÊ+%†yÇ͹sbÚà@âr2"ÀÎ'FdÖážß‘Šº kzû´y=¶YšKâtp⇉ÜĕݟT^jÓ þº=Ç;̾?­¥Îö¦­YŠXé¿Ø’ú†^Þ¯½/žW O¾Ÿ8ê¸]Õf•ö1wÀ/*|eR¶æ»0Mû¼®_Èã™~b‰pOº'‚¡h¥s¡Ñªgè9h~•ý&µ8nýHÅ$àBBzølÞ+]`6tK1¶z>í B•ª4ƒ5•ý½¼Ï[w" ÎtÒ³ë-lò¦ØbÉò¿¢l^¾Pê‡p?ιbTÁæäNiá5W4ðWDÚzá`Ž„˜)gþZå«ÐØgsiN~­U£Œ?·&¥Æ¥Jhe†°Ë´‚ûÔ½—þBü¹»¼ˆ{M´dÐܼHÊ;P¥O£›¶Öë·xo 4ü ©œ$B…”y‹\¤ˆé罿ç>5 CŸÀ·é7Ki®<´ˆKe-E©®¹jmI[œmì³þ·Î<"…±Ž¡ïÏ×sGäó³õ-,eáýñ 7 i”"Ë´EÊÈ``ƒ64&<2 Z‰âèÃÏkï4IÚéî Œü}Ê“?&¼=kÕìt䉿n—Ю[!”8ø$o¸ÉÒ{K §Þ¸…Æ3ߦ,+ -F“øO㹨Ú÷;¦œê×Mœ•ðACäe÷ûå~¾ÒÕtÊ‚ ðQåý†çê/ù…»Ìe†ÉÚñ8qÌNpã`¢5Ñ£ž‚d°@á0OKñÝG@” ƒ t03¾ÜÑ só)ŒO¬igéÓ†‰Ô\(ív“ë»W†©eokõƒ03iø~®ÚŽDóÉ ºüŠ? WÀv F}¿8Õü±”ʼ~ ÌÊ2)é7ET„5ìíßïܼb–¡‰Ö\—ûÀ ‹4(8^ž0¬8Oà0iŸk ÇtÈS¼“R–Ÿn[ð™Î­AT‡qñØé½CyîÎ’àâV™^&LÄÜä¯ç˜ç¬‘ïüBš2§K"hƒ)U]ù㳌ä壮Ji;¾£±vä<óÁüÚx`î@šy·HVçÝt¿îkNÌü:"„-~h)qäWRXÏè:6n^};9XuWëíîïÖ{ "äs·'<ݱŸK¬Ü+ÈÍ 6ôWÆŒÂÜQªH ZôË%ÁSŒ„â¬f€IÜÏUÞu¢½1>'ÕÑd¤9ŽMÓZ%Š/=åúд¬œV÷rçø¹z¸»Â?Ñ!+Óþ@a'¼f|t®óÎG˜Ì÷ª6€8ûDð@8²l›ú²”¶ê€Í‹Œ7Gx=hR­ûª&qz'>‡3R~·/û?¦ ƒX·&VƒPf?Àf{%Ö wË..Ú!Úyÿí\¿ÊŒTä0ZÙ½R`>3 ˜ŽçðÊ"Çý·'¡€¾‚ûòËD fÞçë„™E Ê&‹NüíO é‡´P^°ªûV½[9«tqµ´K¡èo›¢T˜HÎGé°¾H`ÞwÝ,œ†Ž‘ÈK®R ô$·CãM…ÿ °eæpð:ñ¨’ç gâÄIÕº}£UÇÅþõ'­èõ ´¨É ¹âeK ùw@uA•4ëf§éÈþK+Ó²ËÛͧæ¹Q‚Ã<…\U¯Ëħi_Eb†\¨Ÿt £ÛUÌ=S7º%6/\jÒú ñ~³.èµO%çÊ…TH†r£ìuWÕSC¾WaóÄ Ú F’!Äå-€øS…ëEÒy§?Ô§Š9¬é¾­ ±:ƒ—±ñ|±iTñça:QWz à¡±ìß2èEt ×jÄÐHFƒßv*»§] fUáá#Ÿ¿~³B1™CÜø&\8,ÉÐáW üËô/±4{£éþ—[ëúÑ“¯ñ&A=ŽÌ5oÂï}P•ÚØcIžõzók€pFúŒÉl¢`wø®<2 "æß¶!Ptìû»'Æ{Õä,Q!Æû ’®¥%`òüªíxMHÍ9Ü‘ÍIdmûÕF»kÞý„;ȞЯ\>þ†Zd¦ýsÈ=mv 3H}’URW&_âÍ%ÿ<Í«ê¥\‰D¨ÿÖŽ b¼ pbêýˆ2ü:Ú´¹á‹K®ðžÝ. ‡S¶=yX¯—sÀ¦¤ý’NJÕŽ©¼ò±í±Â›g"]@·y^˜¾ý€4]ì¨Û½£.T†´Ð|w»U€ËC››ao³Ä¢T¥çtvOaãý¢ b5œÐ@4fÄ—: ,Zµ?hæ…Ïá_óŽxš]DXa…”y9Ö{Ö–Ú™ŸÀS×=ú.ì‚Ù1[˜è''§ZT& !‡øï„K‚y1í=êè*„ú$™? •…œ_í×°´Á+þ…tðÌ_@ËÔŸøÇ“¹Oé{¢‰*<ÎóǽôŸìåðwJ›í@Ì`–*,@Fã^Ð6.xe¦\××/“ƒbET´óë*– z.R8(1ê7QÚ\Æe¼ýpÛq~(Géz°Þ¦= /+ë3Q†ùů­sPSÖ`aEÂÔ^¦ËòŠÑ)ˆ4o_Zƒ¾¸åM ‘Ú {#•YÈÜÆ$Àc¡ñ 4-¿žâ>ü—Ù<ñîx¦U#Ž~-;m!I®Ñâß"y¶QaµÃ†G_èäËn?i©‘4( ,zZgñy|@Mèê©r,k5:FM$±; Î<Ñ@"ˆS°‹ó0KñŠ+Ïó>‘íGò§†™¼M@SÛè›v“®D•7O!g¡¿M˜n¿ýÃ…×Õ+¹þb> ¯òhRr yp ¾t¥¯ûw•ì h^wU@«éÌNÔè¿¡õk¾Î÷`ßâ¨Uµ@6”‡ÙpýŒÔÿºàˆP²á%ýï@_žu¸)ùz>y&Ìîô{dXž_'RX )¯MZýãô·Æú[vVpC&>c7$øJÄ!Š›xj¬‡LJùZÁÜs[¼NÂkö€Úžùþ5š°«|#©(–ØB}b -vCj¬„òÌ)î ¦ñ@©üX>„CõZÏOi kúygʈ˵úXu+B‹Ï7XSŽO<¹ÄgP¿Rø¢‰ Å73(ü¨þ;ÿ·'¤JzÁ³O“ÐyQÿ¸i¢yEûˆ/‹‘HãÖ·üVrÛWwµ“^•¯qï¯ÁzŠS©ÒìŒøœèì{ö–ð—x·W¤7°ìYmB—ûW2†Þå+yb7§úÑí‚Ls^˜v·‚?âñ׆þëP¯ß7m÷7&GîdëôOØÅÝr΂ýL~ÿôi>?­Æ;|X\û ÉšüÛ*²T VxdÿÈåä%¼úǺ6†Àß~TÎC„(Ð 6Ó™w‚ºþA%]ä†ß´ºWÁ=²ƒ÷C¤ø Àš›mÅß‚óâíIôUÕÞ J{ÜÄ9»Är Äbðd^m£-Ñìq£÷ÐÆ#U]‘ŠàAëÐ3Qß¶„ 䀈ú8DÝù" àäE¡ž`}Ù[äI‚S5D P>µp½øúš¢¼]¶õÓÕóêÒþ\݈¦ði8+ø^˜]¾`ê1‰ ìVDÌï6°DÏpÄ"ÏxDã¤Vh62Dy#4‡v_®2  tЄÿ5;÷鿉o…Âñ1U[738ä¬ý”ßÊþç%«’Ànîõ†}Ì£ #Ž£ÃÕY(¿}‡ä~éPe§ØÙ_G~’yånàQo-F9;^E‚.ë/BœE£õyÍ»¯~§ƒ—¹†Ä—+©¾Q:¼]ä•v ¢AÿAHÿHñUL+§xž†²Ëõ‘b1”ï *ö¿ÆâÙ|>óãÁ·ã+$Ѫߦ—Ò&•Ef›°í´ºÆû ׯm+_1¢ŠJd #?ºùϦcÊÀÜd[Uµ§‚)%;òm<º¨#zp+^Qv2ž7ò¨ÃgA…‰=S®öŠÅÈ•OžA ¡j¯X¨–¿w’×OŠiïa®’y8€°6NOïN¼_SZOš 3§µ 8©Ë¬ªçļ@s7R™ÂȳÑéSµª†o±÷¨Øéß Nº8ߨVRæÄþCۨʎ Ü­7:()ø-~÷Ûëê]t æqqåkÁh+#9?¦óƒVÎj›L@`ߟ‰ûy#gwÙêL3j÷¨è½ÙKùÐ|ÍR±·é¿ïR¬'íÑ D%¹‰hæÝ±øJÂKSó1yào'-ƒÈÊ:WVKܪ~"ÏV¢G~Â4¾Zôó‚š=Þa#à‚n;t›qµÙ4ºŽgîÔ',{´Òïßd™òÇÇW¹z3\ñÎFVôÕ²ÓÙ éw´¹1­ ?uWÓ•2(¤åœõ Þð!é~Ì&‡Ÿú°4Àƒh¨^–ô²ëշǧÞIxA,ËÜÙs_r1ª«;IëUäõ×ÖF|X—=‚3›rÇËϬíbÄGÏP Ú1æßþ% q:TiÌ«w®ÆÖKÃ\ñ_rÍ‹“XË‹R8„Gæ7áy‚2¾‚9›2µîQú¬:…`Æ_[ˆòïØÅàuzT2óNßvrM]æÜú`]}üu²ÅW?–Xðr%Û:ëQ¶ùúÏY}RHR¤˜[ÚÔÁ0¾%™Ž§s&×p6ø,»øhˆMŸ%Ÿ°++´á®Oð9‰¹®ëm&õ¶|€i’Ç)o3":vû“Ç­Pcd`5Ö#­þ8*K™ëTpèS*\¡RÄ.Ù-¨¤ Òe|Øl¢Êb1€‚þˆÓõÊÁâ0¡;Ê) Y€X—ý(ü‹¨EPpn« ^ÿ Ï>z‰ÞI e7}Ýk$xõ€ï€škI›8„¾#.z>¼ÐBØvåF¾iðäí†ÒçoÞ}aVή<¯o»±ëµæ0bĘžGG 2ˆÁLP4›?c¬V /_ÖJ^¡]~ Ê.‘¾é÷ˈ)¡‡œ )= SsEÁŠˆ!G X>Ë–'¨ìßQ2²¨‰³u´­%Nužúà×T¢ß‚™5`©-ÄÚª+ÙŤ;IsÚr¹|wüÜnÓÜ9^àr1 oT•ÍFª95ÂGî7Ê4ÝEµ N[“Îß_øZî5h:¨¿ãØ87ÚجLa<ÅHJY¹{K²Va™ˆX\ƒ`vÿ÷™y<òGnnùq•uLc'D5Î%6[Ú Æ}q¤›¿_-rŒ?@¿:õÙÍ‹ïåÏ£¢…P‚“ ø ù™­_´dÚ“ Ñ W¦tJûŽÁKÓK¯¨àÞíöÖ3v,xK¿B~ŒÂ˜½j‡¥óéV¼vðÅM)߆óJ_7W;w(”Oæ Ÿé—=9®Èž÷HŒ!» kîÑô[6î­iN²/™S¦³L{örä«õS Ä÷»ëªˆ„nÿ~IØ EüÆs ÷L^x›~>°pPÉnÏ‚¢ƒŽMàœÃ‚óÞ.”2íxS^R‚ûÄëûÉ{ô‰áÉDá‚÷ü#ÝР>â³Åö ¶ß_Ÿ²5öÁ÷/d5Z´PSö‡².LVp.jj±râø„&VŒ{¦ }WÞÿzˆïÀ%C>¼=××#>oÂlPy‰SZ ¶þ:Ιà’jbùø1]x9¤öè"¼?eî ‹Ì­|™¦ñºy¡Ã¿A;–û{«£Fêa!ŽÑ¿c Wåð=V!¯y#•³…ú'׿c9%+“0ØL’¸6¼ü—Q2t~þ ZDè<èñ Ìgf] æ"H»Fšl}ûë^ÛË”ÄsÆ3ãU@â:qåºt^þ4=§û> °œ)Tß°&‹uÂYŠéÜ}EÚtÔêg hëùÛ¹ »†eS•‘¬â¹´'"€‚Ê„¦¬Ž$Qêªò-–Ìß®¾¢¿£Dij‚y€óç5]-mp‚ʆŒ*åÖû2¿H¦Guks”÷ b¼®I´³`V™` ZIP|÷0Ul­A„0]1e~Öñù¼øÈ>óËí†óåÂܖɳµNò©5î¬îÉ·úoÖ„vƒàï Ï¿-áržPù…’*?“NDE¸Ÿ[ô£Î]§cÕÄÁ‹:ιžù ¾¥VСdHéàÎL°’ðH$b¨ŒëC Í”tBÇÛl5«cä²0Š&V3K¾ðÝ ÄT9÷¤ì™}ú\Tà2 ÷rލŸjX!䘳\~kª'õLˆ Ýe{5tI“}TuÃ67'ã²`òhúUÇß\³Ö[…µwÿêi¦~T¨ÈiÀZõ SÿŽé«qÿÕ^¶ëžríåħ¤*ë%Q‡¡j;÷Î/ƒÎwÄN)¤á%Ú:¾ãèüEPiPÓ¼øû*$œé¹­1ï=w}å'0k±€=ÜSð™”îUƒ×Ñyχ>™k'ĉúeStkïîøk×î×<ç,4wYÇ\êÔtÏU÷‹fm:Ì!¨´‚ÓPºÂÔ¤ ç¢å¿ÅOØæÈ…ý·Dú€Pï6R*`ÎìãdÁÉq^@.D×/0\D?¾—Ö‡Gýv¬|cžAª_Ä6¸F‚'õÈÅ›^ÞïôG uKkÐÑ¿$Þö„|iJ Z6g$^ŠÎØâŽ¥¼˜4ŠÖYP%MŽÕõùHâan‡¤°ª#|ÍG‚ßt$sb¢È à°óë‚% d‹¶U0Áxÿä ´˜#S ã°Ëá'Ç ¬Ì¡ÇÍ-ñÆ>̉”HVnvà|»y”¯ø™èÖ/ŸHã®Þ_M°+‰:¯Ž(.,ü‰4yHξåo qÌwŒþׂæE¨Zõ2ƒ¸ï4¼HG `Ÿ›—˜K3}‰œíK«cªMÎø£‹‰ÏØåø>îdX†É ˜T‡ˆ­4ÌýGåÝéFàî Ïï:p&€ô¿¿ýªf9f²¾Ð¡¬í/™¶Ú¡2AáÐÄ23/Çy†EqãuÒ¢DéKd#oD9KWÒ.k¨cµ»è¢Ú†uy}FE,p>ÊJàã…ÂÒf~ú¬¬ž*êàßÛ„L~<[w9ôÇß7}Ïë_™ŸŽ£H¸ÙÉóï†_Š¿=l_àÐÃÔè÷kãIÏ…µ-ü(bа­¸îø·±Qü[w›ÚC#˜iõë„.’%;?NijüšúwpÃwµM€h~UŒ—s¤sÛ¨LÖ0/âñ¦$$âÚ‘Ÿådß5½žŒ«[ûayÎßµ”IËK}°%ÝU³f°i€ â>IÎqKà£ø­ã)«6ç)EÌÓI‡4¿•4÷¿öû•0èºCªÿõòŸ*­#:‡gâ©$Wsõ‰eH ßÖw!N{ºÆC^®-¾ýÔÆß¾0,3³pAƒb×$J=f–ÑÑ×NÓùª° {õy´+Æj™u-$¤z2¨2áÝØD3{VUIŒ"­iÜH?ðâø¨€ÐæÚöŸ®œYKÌ RÇ ·>Eµ)n~Ù.AøÈ«uâ}Æüºú÷˜KKæ3oM„)7}D›T)ƒœì§è†Ÿû8Ä Ñ9å<©ÉAo)½Eèw-S0ÓlŠwî‚/xyÚÍ \aæ&ƒŠ4TÁO\—Ë>ªO€&:˜§ aQú­%ÉT'kz WvI|ü¬RUØ{ wÂïù¿#ùB£ÈBêÄ¿5B_9Œè.uöòDp²¶†ºr_ò(8,ñê\D‚M.u¥#"A£} ?Ðëé œ&>Á,o‘vCh›¹V¬›ï¯â\ÒS_Rj„ýöÁíæŒŠŒxl@ÀT™ªDa„^c$®°^¨=¼ÕHâ"Lr×ì'Ç ô¿œEHœuBýdJVžB1ß°­~¿ïº(ÿ_‚.Zíôƒ§Ö‰c»º®+ W,Ùœº 0z×áá\»â$R6™Zú%ýÉudäÕæíç Òçç ‘’$¬_p9±b‘Æ•›Êœ¹|Ü2ÀÒßrHÓ!|(Fû¼âŠh¡ùáéjaHºxD¤m gØ´i¤Ñ­™7Üv»('䉩Ô©$'ܵyae°òA Hƒ^™Åȃ?D"/‚Âþ­/*eY4âF@PUÎn½·£6ð^6ʼgWñ×HóŒÕÉÌ9ÈG! =WüG‘¦T¿ŸŠÏ³†™O –ÿ´íPgGËä9^©iXM}ãÑÏjs\ðHI@„«÷XãÒšý¯°ŠÒÙŽz,‡B}UËã½0ðæHˆQ¡Á-™:W$Ä:Ír¼ˆóþä 3}£ð­~²ŠºK÷ Ș6Sé ËœÕ?£øDÛ€èBø{-Æ<ˆ("L{ï³ûn2>rg¦}lÈÅçŨ®G<•] ÈK,ïoæcŒÃl Àßy9§Y QF†4q¢–ªñ¥yÔ-ˆz“µHÃ_Û£õ¥Ë2£5qãØ·cíå Ž Kw£5ÜÇ[/fŽC¾OÕ]CÊqgSxiÚÂFóV=?/Á…C š·W:éuÂí'o>ùð¯AFçý³¨¼­Ö_ß²ËHÃ^éÆŒl^œƒKSÙ±Èá8ÉÐI·Ÿ³^·¿³.8+ ŒÝ{(„ö÷ÜF©þLåÍ}9"$*—ËäÆðGL—a÷î.¨³v»°ÓF6œÊúšrûÞ1­¡‰¯í$'`ÜM}i1tcÚn=çu¿71›ú…|zí>åèƒ[¾Äi+B±3%)kÒœ¾û£Óx8_š1ïP¬¡œž´¿¥(‰š‰ 2£Âhl@oº ü´•N¸™»¸ˆ¾aà½ó‡à$¡[Z©¼DZ/õA3ýÄLÙ1£0QüµS'‹7œôãñÝ’ôóÏÍ#Ó¯xDö&27D›ø™ŒÌ©1ãµÒbÀ-¾MA&Á÷Õ£Rèf9¬ô^0ª¯÷{ ñ LBŽú~ºøqë6å¸Ê'd­j¥\M&z62 G­ðNVÖ=ì‘oæÑ&ˆPü—.6І{{K!É3fX½Ù áì.y©JÐJô×Öâè©ùÇ­VÑF8ëûÊÙGF3Æž<)¢Ä#á`úÉ7œWý3zùn.§@sÉzŽp¹g®ô¯ÝÞÊøSÄÕʯ¬B,¤OÓÁÈpŠlrŒâIIÂ% øêåBè[ŸÆÐlãÒ®ðÏÁŠ YñÛž^Â÷e¼,0ù‰G‘9'ÖW£Õ#³µGÑ£o4ƒè¢hí0[ß2ç ~ÜZæïKeÆó?„dFäÜ`>zý˜JÁ  .Zf{=ˆ¨éÏŽKÇÖÓ{œ!>\ðHš²r&ö«_ŽÜF0t(q«•@ ÍNÌ,ôqªd%Ä0þºKŒ_â`3|éíÜ)Õ»Uæ‰$m[P©½ôkéÁ>¹­æ±Ç9¨„IRÐ5ˆÇƒ}ÜÙ2{òïÕ* •ªÁ¼›Í`¾Y·Ö–ÚQÑ)YÅT'±Åá(ºOÓËà™ÊW¤iZ{ëW|„¥_å6ÔŽ¿cåé&ô àQ.èï¼U«(Æä«DÖ˜óò°z²ÒØê4†§8/¼ði VžSÚ%åö•¨uéØu@û¶Q¿Äù(y$í£GßSDóÕiai[ãÄéë³Î[/Aæ=’QLƒC8} /€*H‡I&­3=“&8cúªÜ÷lwÀh­‰ðávP˺N>å"R6ʶ°@Çz!š|m*W¾û}"ßÞI/6ŸV”/ÉkS®©×Ÿk~¾Gi^¸èÓ˜è¼ÃV}Í-%–òö9^ æF³Þþ‡a¾­¡ÄבZ{‚à¼Ó÷›)<-ñUÙN\üoSÆwþÀ Š„‰‹Áç÷`«´”¯[š ô[NïæpMlA³®*ÒXä“$Œè¤U5_7­÷/U…{b¦Tz 6L!o‰°Ãü>bª_*%•ooþTt¨‘loþ¸^þcEÄZU/êL JèÞ·mî-ŠÖ)ˆ à$Áâ›÷ÙjŽ2º—v"­kƒFØÉThÕ—ü^Š-|2ÇÂã¿ -‚´UZ©DNÆ~t5èïh(:a~â!u² ¼)•ýŒ—m_YK ?@ó0ÇEâv 7[<šP±¨’bÕ’ƒ‹ké„!DXê%ú8RÂÌáu¾'š:lC°é$ÔJ|ç][×·‘]Ñ´üM^.EbÓTŠŠ›Ê3i.ŠJUkfÚ‘ÕwÆËzS“imŽÃG’¿„tÍáÞw¶¨?:*A¡G¬jÿµ+¤î#ŽÞÙL´ÑoÀ>$V2®hH ‡0Zço{}›BÛ‚žæ#Ç1mg%û³i!/©¸ùÁ »?±<®Hû‹Ef™àg‹cNqGÂàÐä`Û*¶œøÚQú¢Çà1ŸG(do‰×}„µ‰ðS÷æCâ磙M­I„Šç!ŽöœžlðÑŽÍ¡.ÚbKv‹ƒßAVÔ‹»±¸ï-"–xôB“rFIRˆ‰]×÷Ò¤G£cFd>|c•$,,ecÿ­îÕöm+=x–(&bZàá=ÁkÒžŒ²p¨§¬ýdÃÐ×6—ò(äDÇJpÎ9Ï#ÏÖ}r@ï–IeœštT\ôow[ÌX&ž/tH±cYîoÌÞø"aÂ` øn»kéK’ü@ XYÔáâÑm‰ÉWÊäjÕ¬Ãò£ 9§ø[¡JÀc6kY $S¼^„yDƒrlâ™åŠ™Ó%ýTÃG”¬?ÉB̼•n/ÿ#ÚÁ½þndôô ®Ýé¬8H›[öÐ×t¶ÎœY=”gZ2LñÆhf¡qÞ>߉xŒ¸¬§<[5&_ê_¦øßzóËõC€7q©[Ä2cº(#¶08ªñë—¾0•¦¥zù×ð¯GaO}HXð‰#Xxå]–R›m—£¶6°¤Ùä+§³æ®HLÎDÿ¼‚irWú}PYëÁ€ÃÎôÜsƒYõÃÛˆ•z•5>f«°»©7ȧGàì>‹0šRbD‘êVÛçJsç†'ùýºûÄ\øU šÃ!’>Póê¼lq°‡v¿ßôòvå{˜©ºäTqU ¶»ÒžGÁxî³+¾2é4E磖"u8£À¿ƒQž‹å‡²üøMck„ÃÒÈ"£ 27öð=ò%?$X·áx°~Õ^»}¨î ZbʾË[UÄIó¿Õ}ÇFYêýבz}ž|dgéK—Ϻ6Uòkucrbö +Ê\* €ÈbAç3¨ þá®äÑçÑ—#Å=ÚWqá7ðoÌq´:îÚØ©÷…ÌÆwIL˜Cæ‘•CƸß±˜rOÚæ"óÅ%á2MPíI#<„rÑ  %¯Š+²¿´'åæt%½ðqÃ#IMJ&´›'^ÐØ#ŽØ™ÕÎÇ>=z~wKÞ‰Þf‹æü;¼®?¸ù+ÜHvl5çž[ð%c®š˜@ÜÌäqÒºè?ÜêÃ: sòN!ÃÕ5ˆ–¨5O¦¦÷ÎÒÈ늫W³?Fc¦m·)s.2ËÀTBj†Ú†ëƒö}è]$ôØÃ!\ÇJøÖj\8TæŸÈŠÒIh›ÓßñÃùR2:„GZ_R6=äI=mXîoÝÒ“ÏÒ^°’%AŸ?Cç84æ{ê\iœ–á“׳ïbN—¿ 1»¨í>Ç:$R±¢ÿ¤×}ÈQ¿Æ&[ Æ“™ª°g¿­ø"ëÆ vˆé… ó“¸aøñùÞã_æèõÅWÂôfŒ¢Þ'Jý£«Ørˆ¢¿Âž`‰»‚íp‚·¯zΙYuš®P¯®À“óDŠ ðüéžòRŠ QY°«ëÇ‹¯Š%aœ ¤o—Öå¨Z•×c8^ž¯o>¡.ÿEЂ u%ä’ÛgDc %rä ¿Þ“š©-³ìSâEQ£˜îbu±Ë‡2ÍŽdùv|8c!“︆ÅÛ®Gꤢ¢³õíF*XÂ]–%¶c V|dV%6ΤĭÌÏ"9Êi1C!Åú6J!\zxàDO´¬›EŒýº>’\¥Y}=‚¢ñ¿$E·“÷¶@œâó™ûø‘¹J€¬Êsfšôz¸ÕÆÉIî÷’WCGx–Ð Ö’ÿ7‡ž%̈”‘òÑýÖe—¬ÒP‹¥˜AŠu-.3ôv—ˆ,fe?_ŽÂ[ä÷oQ8DܸSZìr]ð@šD)û¦}I²‹ç‚‘—íÕJ,Y9\žnš‚æç+jPÆÍ “±Þ÷ê!Í×)p2ÞHœòß08®?Hn0ô=F^©G~A5rtèÖ[¬ÌŒÚùÛˆ¿’‹hVÉ,Òñ¥vk™ê:õã¼ˆË øÕ\¾n¨Hñ؈ãl1ÃtUqeü\é¿°…Öþ v¶™þ A?+ÊÇÍê.A2»NåNÿ×§ü§üx½Æ˜Y›i[ÿ:Ô°'ɦãáÚ}Œ¥ÈÑÈÁÉ/ñF—$oˆ’€QÁ°\ÉÆV†z\×§:‘Ñ£’ž ‚_óêaˆˆ¿Åg®ó/ß_áפô«JÒaÔïÚ`æ9‡¿øÀÎÉêÜ [„Ð@T9OÕÜd†D¦ÜËÙ6­ÛÑð7±,­£Äþ1Ëqmaº\ø;¶–«©R"¬›Ñ»o ôõ¢R¿¯ÄÒdZ4Q¶&Ï>¾Ø4oƒÈ˜_–šCõø ·x.ÚðÑØÞ|ÌI”= »p ŒOñÔa7¡Â¶KÂÆžÁ37kMâ^ÓñÏÜÜ|¬‹;«`14YãÇÿ-<ÃYܺ JÛÙºZ~j¯ÿ2“ê7NOëÊÜ4lû›äç”K©iãRáèÉ¢ðÑ‘}0^Ž}ñ©‡Pn¦OâO˜•±Iù—WqØ“SöãÕÖù½’cêÛo;Ç÷8ÖèGë6$/0M"ÿ4&NéµåXv:† Zz³X;Úu²H¶ÙB~9Ž~8Ø?=-(]ÉÛœÙtHæ·þ–*ñ«à–!^¼ uší µw‹€X=ãL”¯m¼TºòL{–Ãß_ŽT==ËÚhÿª·*ž>:ôÂŒÕLöð#®@«ƒ4Ïü$·•©æçQŠºšö\ŠÃü²Ä5^OrëVícYÞŒî(|èâu}SCFÙ@ImXJzn½ù¹ÛKÐã6ݾ)'A§ˆD¿ ~)Êú¾ù{Oº’g§+p¸êŽI]*•Ý…ê­ŠíØ¢çâr/¾†„•âx>Bªã˜²´>¦œžÿGxŸ´²ª4IN€:îpkY=Ásn~,jÝ[fŽFÄÅrð ô‹Ñσ¨¡’Èøé¯ª…± Dx‰¬–²eþ Ħ΋ìÅvk¨zˆ¶TÅ ‚ûˆ³W/ÓÕ¬¾¹lB届¨f»Ub¢"ßéwÓÑ/~óûn_# ¡Šãœ#ã¨QÌÊ‹üúNcËÞÄÉîÊÇ ™H3îK˜ï{È+Ç<0ï#§G ÆÒ»=±¶F³ÝãiŸNQ7ÌÖä;t×ì!«ù^² ~ì9eηåAK‘Ø^ß=â]8>¾ óùeAÆ8›Ö3.³•صÂr€L þÀ)M#œ­sq_~ÀÒʸ¼WþêOS%u™„cËI8ìÊ**]ôÃHŠ?­ià³üðŠˆ» ;ž.rWCÄþáS·°{”©T±ƒï¤ùŠ]ì_q‚¹Ëösrî¯]7ŽÑz9 üÚ>:1[£LZ,²é©ú-ò#zÑ´Á†ôMѺNAYmÖ¹\Lwó]ö Œ­–z]™ã/}()˜TÐ-?uº¥]ÍHV8ø„,½ ÖDæ|”E÷c0'ñÀz¢Ь‚Ï£ž5 F¼æPL{6à$ÎØ‡úu‡šy£6n…grRãÏ5`tusk¥aÖ…î_ï„wV´æì´æ&âGÝÞ_W|u7(Ì“{Dòqáïõ¼¦Š¿(+³í½¿‚›3ÍôË I£/Ý3²Ãez–J&ËV_žqÝò ˜cÞUÖ1s®Ö¸xÊ¢p¸ÊÉŸñu ç¯÷!ÃC=éRWÜî¡è—†×£!4¿_~¸£ú¨ÆïÅl;æ7À ¼/¿ÅuÍjÚêSìí]¯qæbKMûJ]r”³'“>ÀIÆSøÚHÕïžuƒ’…VšW _1‘¶»Vö±ð@ ‘ŠJ=ä  )â`"RÕgcäãrÖÆ]¯(”§i®žÜÍí³/¸;^VѬM y¤o wú×`$¤|])ezDüÁ?#Q6À‹1SÍn¿¾Ä¬©#´3ž0•¾(=ý›iT'a©šÛV44)P~¿tŠÍGÌa¢CÕÀ¥NŸŒÜíåLßÃò›}Ý­ìºb<;œ´™W£$À½5NcœF’1’aïÇC¥ojCµ©¦T†¤\óëIi‰ÅÆ:ÔóÅî/îoçÕ#ŽÁÚL|vv9¦šƒÝà•êýÕÉ 4×Aâó+v¿rRÓ‡atéãqKš¾«$P ±ýïóûZøžQ†M7…4Ö¤±ëbÆTƒi“=;—@m{¤¢½»âß¶¼†²#tcÃY ß aÛ–d‹7¡ó{_ó5ÑŽ¬-^‰3F ù9&[xIÓk¸:ìhu‹‘%¦R.Âß4lxºœÇ1lØb úkø“«œZ%u§ƒµ¿ÏxÒf}~ ,j¡ög™Ø~^P¦ÿ›NÿR7rz ‡âZʯ€ö À>U²åfáÆÅ*R´O‰øi牽kûChy ú¨ÓÀŽw†ÕÁþm›§ç™AI—f¢Ú¤ñMÞ¨À³|Rkz¸Àì$»G¯åmR¦‘á—³v<,»8WàöúÆ[ްôW·øc¦ÞÇ_ÇŒ|| ç3¯ç"åp|³0‹øBâùõyËB™Ó 70ktÕD¬ýïaVpÙ0»q;ÅxØõn~†¯-øšœ®æ‰4n?¤U«@¡ìCö)K¿œ‹ðÀ¡:tøµ‘ѼtµF×Á;û¦“À ½S…õíàå«d°1ƒDýLƸ-è‹ldyHF0ùú`ÇžñJÌ­4!j < @=ˆ±ws>4&Ÿˆ/-Ç«€ß蛦1B%¯²#¸EoQË×;õ],Xì’V$púÌ›iª¢$ ø˜TܵRÛ·Ã!Û͈­’ œô•:¸4‘Ê¢þ ¼Ry#¾ç‹H••’tg“³×§6[E9¢²d[œÆ=½a°\‚N9ÃUöoâSZâ„K8²bõ•Ð…4éXÉæ¼¯Í%¾¸Ö/ôØ+«ÜÿPO×c[RÞ ŠÝq~l]‰­®:³>=Æ\IžÍýC ì_‡ÎÎþ45OÿZ"¯^踆÷ý‘¥,ô4–¬TÝðp<üIÇ8Ö!F¿¹×àNñZK͇:® wóa}üpy’Yñy¾ ±X–< DgºTç pÑC¾–ÅZnàlï´m¼~|\ ÏÈRû›q·»xd ÞU4çt­œIÛüœª|Mñ¬ð;›ÉMx#¦Ga¬ œúÛ«b)%©Ãù¿•Lt?œhÍ©Ôa;*bžxI¸“M1‡"ûï·µ¨Ôhýu¶ž˜Qw5ëήG²¹Ö´$ÓŠLhnü>Á`ÄÄññ_jÑïz¥¸ï±oé =åón*o¨ÊùKoÔö:;;Q“šµõÂÙ…ž!½Œ‹GŠ}Sª°¶ØŒÇy›¶«+Ñ­7µäš'ׯ%3éô´ûЈjþ-oÿÓ/î[¼«0mí]9û9ÚÐ9òB•š!€Q ){ì‚\¿ˆÙ…“î½T¨ÙÌ!coÎAè/ÕÁÜ&¯FÕ8¯a¨Gn}8Ð×^â‚‹ñ‹ð@1br;“ÏtõÚ¯5úÐÁLΛá¸${,úª*ž¤iåùOüâs ù©'=ïTŸyµJv¹Å¼¿ }ì ÑÖÓ š®¿t:’u“´|•g?çáaª§ZºÊ¿ÛUr·B#­Z9©5‡+9³îÓä”O% WQÈ^ã¦/3ü® Ô¾†VQ;RtËi ôÈ™ø5nWŒøã²ìºg@Á8ŽÈt n?@ÃÏ×TR‚•õ £¿ù`|Û†«@yß÷ÇÎ&1Õ˜¢7êÇëÖOÛ¦MÞmûnÆMl­PVrE¾øuYÊÐ#ñ ×r2cè¾ø hiîÓŸrÉÎç#©~«7Œ.æÓ>y&ßââas"ÃCHS±ï‘<Æ-RÕ—Ô¦˜¿rÕoµcï:¤Íä«Mûw°[­{<=—Îb_e)ÕEýª¾­|zƒ}D;v’äáà*^2æýWŽ}CV}þ:16F©5æà¡þ!UqI€H‹Å²ÁÌÍݽ}v–DÍo,ÕóÏ}éØBÄ5:œë{yØÞŸôÐ5ÂêO9üy홆}[øšnÑ”„I{ØN¤+‹_TNH$ÇÂËÙ“=ÐøBÚó{­ú|½¿¼Ì¿ˆ¬J}§éKlwÜ¥´¯ó0¤yÞh«V},wÉ+ŠðÕ›¢¯|Ì©c]à¨+õ*º’þú¾[JnšÉRÞdõEv>G jU© ¸{Gèiy½…`жü³R¼^AßÜkéÆnÃ_ñ´(ŽÀþºu¾®Çà^ý-ÏÃA†‚¶Gs*aý0±êF‘tÉ1þ{ô¿‡˜¶—t3LÁéJ"­ÃÉÎ1‚XQtÖ½4x](Aö_ŸV~'ñ-=|u“‘³¸%«ä èû…ͦ»7<>å‰`¼sè°W`ÄŸ‘®"?Ê .Â/Ü|݇HW„=9ðiöGç³]Ià…Üü‹¶ã‡hE&ÁG«)†óýŽ.ÅæiD‰rJ–Ä€Á»¦â’«Í$­û\$h?¡@ˆÍC÷®‘—Ënè?>Wâz›ž>|qôA5Ã,ª›öh÷A{;_A»c¿i§¯kéîIÓ `1ë:'ŠyûgîA‰_HÊ©×Í ë û톕1ÉßKÒ•XIkêâjÈÆªáªè™5_ÚÍsС¿LÊѯ(àjÒ#ñ³€TÌBÝŒÎóNt¶zeâ3nX„7•"lËó·‰{ˆî5ÒßiX7ë‡fïÌ_±û~ˆ*€ ±Ëž#*½ù­ÿµ;*ÆÛÏ/ýìô\9/¹ÞFˆgó~ÔÙ©Jñâí5AP‚¨¬ìà¯{ú‡E(Ê:Û`˜|wþNèÈ2×d³ºƒÞ†•ÞñŠÑ¨Ø§WI–"k2¡$.6Æ+îß¹3|%A$KÐðóOé:]îM¡ŸX¯e4b:BOyýašþ¥îø«}¤ÑNp­ê"Ôë¶ãˆ7ŽSá×"K^5LSðKeß)¨¤BÊ¿ÅD…ÿDü7þÊÑëýY‚dG6ù/W»^8 ñHæðý%<³ðbëAÿc% FîšIQÔ.`O/Á8=÷ùY—Ú¾G龿N€Ñ•XU­;Ÿ&\w9!¨¿*)UZ$?¡È„0êa=£æ'ðP “’9Ê!ŠùX© u.káÎÕd›—Z’ù¹$UZv`J¼I}58…R '+ö¸¥XSÔeQÒáú‡Œ~¦W*÷5è4 ©•ýaˆ^I(žoü‚.zUWaµBÆZ]Ú_«$#2܃>88?ž)65Ïj—“#° £„m,Zº¿æ8ªôÙX#$‚ÏÁøÞËÛŠŠÖ÷UæšévŠÃì¼3Ɇ¥åæEì£6¾æHnžÌü(Ùα²ÌïP€<ÓqÖ`i¿5$}G n;â¦#©6aÔÄíS¸cd—‰®Éž—ÄÞ€.R0gäç˃ãIéü¾eÞ·ýä9 `káÍ|Ü6c™Å^Ð×+O\Îü[/š¯&‡æ•4ƒg—hûõÇüej•7ä÷ï°m´YGe©¹ºu*β¥Ãðî^b~E¬‡í:œ~©øÈ‹ºä©RÔ=V÷›%“%ùª‰JYö×àöü5±e®jŠõ¨Ç±`ò‰Ra=éVm“A™¯¨ˆÔæ>§æyÉÀWjùÓÖüð‡ÏP³ãY5àE‡pR¶Õ»¾q°}P©þM·ÖoAE¦aPÚÄ_ÃK [$þ^õ;¦02cËÚœ)I&~§Ìôúżܱr¹sî9ÚÈàkӫõµ>cÞ¸cÃúykÔßhÝ8ñ‚kÚ&Œt=ÛÛðExP:‚Wù G•¬À^áBS+‡vÀbH¹ü¥üZ#ºüŽ`%nÖ Þ<ž/ÄA9SØËäÇŠÔ*jÛwÌGÆ/ÎM|SI`½õ¼ý –ˆÜes@åêÑ5KÀiÁcs± p].€ÛÆùÜìRÜéüŠ×fuú›®\9?¤ÓL‚‰L³×ø^©Ë RyÊ€ëlÎø·÷WÀÉ™˜ÞšœéLp”ÄX0ø}Hû^ÒQ,ÎÏp`C?\ö{7µõ;©íp7·ÓãØ‡`‹ïc‘>øž¡Q=–"Ê‘Ø5YØ~˜`mŸ˜áKfêÞàù"Iû¢ ‡æÜÚ‰d4Quõ³Œå«ØnÄeäoçèô¾hʻ̴dA])¯éÛ„¥¿ºNJAƒFŠ# 5z\†ÿ3Véöv^Ma‹µHÂÁ,†².•ºÉy§ð,_ž ·íšOTxœ­˜ <ÞJ4ªR¡ÂøøÏG˜¹¨ ·®óß¿)0npD­Mà”üñÎqp–yC›¼n¼¬õAn™0,y«í…ðŒ"~¼2Äæ…$gé£Z­¸èi&ÀË«äG:õ.™ª}Š’·è¯è ”&[ ûˆ^pT½ÝÙlmy²õ‹ü Ó›ÂÖ÷q­h¼ølw0kDã_ñq*`ÝiÒ‚ã=ÏXî\¿_ïx(¿Ô½ßGÒ¼;J°ŽÎº¶ é Ä–3TÅ/ ¾ùVÜÇ×RMúœ™aù½ÄMU¸µ™KDÇáØÞsË©0qùÁÙüµ ÆèPVqVé›9tù¡ù:iVüÁIBCÁ‹uÕO È~D33´T¸Õ^E ”íci™¿NÝHÒ|ÒH|Å¿r …¤íqEê!wÉœ`꼃%9ã￟òR§Š%(”MøFð7T³ÎF3Ù)Ῥ¡†6žy*/¢äÜGCý®½^-I‹m±dÑ‹“ôfª¡WòV’¼»KQÛ nWV*ºZ†6ãqŽ!èËA2F@ÉW³S=:ûî:ü¤Ü«Z«%`#WÿŽÜÎÊ^IJ?Î;÷¤²7¨ãwW ½G·­ÂÛ ÃË«¸0,ËöpO²LàxžB}ßÞùV*ûlmÓ÷µà4˜¢œ“n©:ÚoFŽóß{ÊåW²/ý~dµÛ†»œýEø#_p7añÕ&ä¢Pƒstö}®¡¸aÛ°XýoâE1æà0—7À³lнv·_÷}ôÞc[ÈÃXpð˜eû ¾!æÙ(uÉÁ¯Ò5ŽôÌùÎú—p—ñó³l°F6½4 h³€ëÕýõëî$lÁªòÿPb‰¢\_˜«2"Ÿc‰é>š­…Ån°Eb«æÏnˆTäú¯R˜\ѧˆw_M·®^sÕ,T”‚¬M>23ñ"áƒ"²«Õé'6^>û:¨Ä}¥¹¥àùbúaIùR"?Ê“ÒNü tcÖÿ{¥M:T¢“úë‚Ø§Å nz“PN™—e%—…ûs†ïè*TíºÄ˜åÅëV÷µ> AI§W^i«—È·±ñÐ}é²ÖgÒË3ѵ»i0n.
½XÞ}6\ùJ¾ã'ŠAÈŽ:fO7’Ð-*¥ò7ß{òöïÊXûïi*£ëHUꎱphò T¥ÉÆ¢ RÚÂRD¬î¿ž?1¡€;a"3’Äë·6\iËm¼×ã J”oåà-­-\ ¿.ùiðÉ=69øë-gä¸/Ü‘zÞèE )õ4pð*½R=׋ìe‚o¦öêˆÜ÷|boHº>ið<^|c·,yïµ]žX»id3èy<á“@˜¼ñuR#ÔГ ÙnHJ²”ŠàCFаҶ ò™öqdùš¡^÷¦âËûÓŠ–f]f{úEAšÿ>yéF³ˆM¹b «Š´ Ý{ͼPÎÒW»‘ÄÂDØIú{êKۥѿ"\5D~€Ü-…BN[ÛhŽ3'³!»3h™yÈYHVúÃY8 –x¥~ùá~첿”=æàu™Ö«>hÍ4,ìßßãÍÚÆë˜ƒ/• ìº©`c7ö9©|…xOÙ%Ã6uuÈè€]Aò ou¡PÙ<‚øk˜rtyí‘…¦_aTôßSòi=2N0d;|ÁëÛVgÝÑ7²#¸•w’ªžÚ8Ã9DÒ¥Xö²ûciÖ¿Äî ähiÔ™]kê3uS Æ‹¹âY&—Lë®G†•>’Å ô×Xùo–01|‹âhâJHÝæ½Pt†¥÷Ý/ûCìßÚÛJÊæ­Bd¥†ÚàmeËOY]{™Ù¡H௠FäìY]¬®ÂŒTìݯyýÕ±wý¥}:ÛTîÒ±e;KÈÅle™ë‡4âí“þ<ô3ŠÌŠ‚ä»SLE™ÿ1C{M¯QDûÀ´.þ+Ìêlûüò×°ºÃ‡ '²(Ì^Šúz¢cRJݦWç ì¶±å ÚPó™ 2]tüA©ôl@ª<^§õzÆ‹ Ù„(6ñdNB씟ռ_7&œ‰ ô*§‚ëv=džjÛë—De{j]€†oáß±ÊòhNeâZyèÄ8Ÿ¿(}Ì'bGää{4QÚA†gØýXîkº#µà©FΣ-™GÃÛãù²¯»aÔ˜à,rM;>ühR*‚̲¬;ƒ¦Kóc~xJrûÀtck?Üîôx»“!Ù>ª¿`Ö¯ŠÅ+—’™ÔÂÉû]a d¹ßÍPAÁ•cù¯Z |H!eˆeÛ ^öé! o$=ǯ4`qäSùi ã³ñ¸˜Sêã—V)±*Á¤~ƒÝw|Ó6Ê€å1ÿ"Fç6<(‰Ùȵc¼Î²(‹hsWv CmçC¢;2Þæd*"Án{ÔØ>™aù/þÆé=¢+‘iÏQ‹B~à> Ž.æâ&¬¬™RYüX1Ÿá]ðœl€’[ Ž ˜¡’ã×U+,R} *ÿ&0î›P¥&'äX™Û:–ŽÍ|E­ŒÖÜ7CSit7J–aÊ•¯Ð§êÄ8VP% £Yop“)m£”B{ŒöãZ–}}¿Ÿ[°\ã"ÚÐ„Ó —zê ;ÕrväÊ›myen…Ø ~ÓìŸGa+§l­Ó8ŒãÓ½ §CªB+WtÙÍŸRÀ® í‘2)ð1CɃžk§ÛÛ¨`,d²ü{Z=‡0=|kPB@3Ÿ/Åô ƒW7"$ÝG^g—ý5t°<%È9p&e‡ Ù_R‚Ûß‰Û ý°‹¨ƒ0qÊS;öÃÝh•Çþ$û Ÿ¦ó¢'š¯!ãøø‰‘¿ÝÀPˆ IÅG× 5UK†%Ìy¤Uu¼‚8¿?ºF5îqaœè>ºÀHãf8›0ÑÈù1?]űró6²Œr¯“•ÇÒ˜îö†“…m…Üœ$§o÷ŒÙÊ7Hò{i÷¯3.ßü3‹>¾¶Þ: O0Žá `ª`Q —$e>éöåMÚ ¨-h?kƒ7Å„Eg7ÌO8}~íÒpÑ–ZÊô@Ã*…©³ 0TE™J¿ÞöD”ŸªEðœ(’ˆ IF&Ø—ª+ïGpŒß"já¡=«Œ!Y½~Sk…GÁñØ^J¶ñÇ(Œ*€Çµ¼ãAŒÙ¼ÀãoŽ“uŒï,œuÞsÃD´b¤™pýp¨¬„nPþâ9†QòCû}ð>Žä'ùù‹ß@¼ró•ÜK/ÿ•öQ ]½öÜqß«õu£[*,¹À¡]æK½eK^)’<·Î¬u*„¬RÙù€Ù£¶oˆHB€Ý#P"=E -MVÔºf ú<|ÈVw&j°ü]ð#^ˆF¯’ S~ÞcmDsgc·¨4÷í6]4žS#‚¸p½sË«ûoGçù‘dæò]~yT»¼ŠbÒš¿Ûüó ôkËÛòýÏÝa¸8ÙWJú>c>:2ð†ŽœšU½O†¯øêbåñòxÍÞóZêCpÒTÂì­¦{KU¼áIv‡c4‚Í#%%Úx¬Ñ¼^g6‡ì µ‡½ùýÌ,B†ƒÇðÜꇸÆO~ÅDb ÖÓMÙʨ“W(Ãè|6˜÷7\îê£ÐQ$É@r ë@µ½G+—“¼á&Áò†¯áG³¼ V2bðW¢§,çf˜AhO·lÈúfUr²ÅÆ –#ÍZ™É®ÜÀ,Eï>&'ˆ.¯/On`‰A/^A ‘Oµ·H¹Ÿ!Ÿ#ãG¬›ü›¶ð‹_À|_¥Bµà噄ÿ'Ý`MÅñ¾ y8 2 }r,î ×Þ7ª‰Òä>°ÇÔYFŸ'2·×j’ÍÏ­ ÿÇàÅ"pˆgÞþÕ˜û°ÿ% Éÿ—ÀËæ?…}ËnBhz2¹‹Øí¤Œ™yL{†6Å·—ÿŒ†¹‚w@Tï‹þ*öp‹uo±üD.3_·Qèo¸èsaVEÃÊðHÿ2(À=Ô!/V ˆ@Ý:‘¿ØèÕ¼Ïk‰k£ù5Ë÷ë♥—K¥ò JyS„áÅùàáÙwŒº$g¯õzlf/Ây;n[ mI÷± c[§aèt˜ÞÕ|Ùê&C ÆD6âÀy­Cö8yaJ-ÄøÊ—–ÎÏìH†M·¿vNbù–ÐwìÛムJ7i<þóøNÇê8“±Ùø™d±B‹òŽ]Cý HŸàü— ¨SØIò\l©í½FÓ·Ú¨Ï5w;Ù*$]mìŸlRŠÑ}/CO.±¼`lòÉåÁªzv¶}Å )¥7oQGuù²ß1­Õ#W«äW¯í½ž£ŸÁ£îm\X#_ÎÜ|¤øêÕ6û'lhá)0°|Ú=€¢…á¹÷ã\WMQ CøìÛ=<Éêú^„P–ŸÑ µðr—~êÿÔñˆa ‚­G5-P • t`^O†À¬q`ÚêMÇ»Öó:~ó…üìÞ ÊI-øcéö/'¢oÞM϶Üe]wá°x#Ö?Ÿ¬âOÌtwD&dƒÏ là.· (1pè·ò9}ÏÕÝ·ÿe²6µyôúKÂØéy"›¡T©¹7ë™{­ÎÇ6I-d"©ésíy·#yΩº/dè¯Ï´ òÑÈ`ñþŽæ/±D¦!»G8xÉùzÙò£¿™G–¤õ¬ë#ÄÛœÅ:<­üåi¦$PÒe¯šÒGv$¯ûWªõ×"%(/™h¿8`žÜ"ù°µE˜¹ëÜÄûbðê›`¤ŠAÉVêƒi›Ç•™èÛU1¡N%üɰñ—ÒP|"Ù¼ÇØú‚Š¿I+Êñm5õ·õ$vùŽ¡ÞÄÉKü¾W'4.}~Zª‚í=ú× RŸ#:~4égüXþºó Môç` p!#Æ—­j8 dêN䯧úßËVX'%}s5øá¸õpCÛ…‘:Sòð¢÷¶÷G 2Ð Óo1©\Î=5àsKH¦¸ŸSÕ/. ‘P´Cåc{ev{R¡ÌáBÅW;6ªñì׸ I¾ƒ2óG~ml¨hß>sÇ ›O»x¥XÔE%T=z»çpƒ}ð·"œL$‘ öÞÊ,{Ï_Ô` X Œ÷_k†±‡ƒ§ÊÏ’o ;¹¥ô®Š£×¹go؈g&"?™Ý1½™ïÅö<í¹®Ã[!Z¬ï³ãét@󦸙³[ö#Ï©‡f¤%¼&z|×óª¸Ý~Üù‹§•üw(?ƒÊ¡  BÝYk7–d]¬P `E`Y1,øÂ$žÙöeuß/&%É#yI³™}'×&ÅQº£`àâJZ²®‡nRRƯBtÌPÌ 4‹s¹²÷lcmx¥ïNm—óà‘/i#ü“­|ÀœùðäwT¼`ý·L8>iÚL†€fƒe@ÂЧŽïëœY£ ›}aaWŒ©µ6…ú ½ê¯=‚›N—.íÕ’ÕaÉ-ZælÆ}Ù€~ï‘£dG9ç0ªÀ2[š7ÅùÔdIû¾ÞH`á«MnYQ*ôú(=/r—ñÝ.Õ”Ð,ë­GÂû÷Œ`‚l÷’:š6õfYR÷ÁÚb[nçl0úÄÉù Ò‡{9Öx¹¸ÔÕ[ÇQ°åFµ•,›µ}K>²`çÙÕÍ6ÖoÝÖ4åLèå5…Ò‰þ"½Æ#ƒ[#:ù@¯eÍšˆøuº,Wùoua¢»ÚØ+ ŽÂA’‘F¸ó]Çãí¬R¬®Ž4ù÷BvÙ(*xþ•©2s;þ>w¤óϼ"ªïÔ_û ö‘lu^²3.¿WÄvüc;#Õ9ÿ-Ä _?êº,Áb Æ£UÞà[–Ä=oìΆíÇÆ-³¶Áù-çêoDú~0°p\ËÈþ~Í“éÊ{áÿõ^Ê ‹0a.K„/¢ë¨dƒyD¼èßÚßઠŒÙm¸•,ÇõÓº¢Šà:1Í– ÎW滸P#úØcLq zÚ]>\ro.-‡tR½šzÑ9Sò6pþŽþQ“ÔÁ¿ã/qþ'JiÉ硪Y̤G‘cäC#ý֩ḹݾ« á{V’^ìü9Ì¿ÜÖe£)FHza«s Ô”úôš,˜:Þïoz¤ÄÒÐXù³íTÁ¶í}¦ý|ÐTˆ¨ÖåZæ•1kÎCßï©-$‡þ¥úö³Û®É¿÷Ö?}»/VžïæËÉÔ3ö}%8Þ³éu«7J.ÛÎ}ÕÄ]ÑDù ×ŸÑìK¾ÔçѰ´Ø× ›>à]±Ikª_¯Q_x¼„3É©Ü èÐÑ·ÔÍä>|O\íˆlˆðÞ ³r޾N-Ê(–1/iOñÑZ¥Çrh»8«0J~úÌîÿ½à†ñÌë4Ñ][5ËotÚâ„AÝñIÇãà˜3ŽÄ«¤Ï±R6O×£j(ޝ;)æµ,† ƒaiÓ` “]\Pbv˜a4ÓþÓ&$!åïäUëéVß1"™9E9ÌŸ`à55zûh§Äý×ÎõYvaÿìÊjöwâ·3JK«¬>±g'UWzpM¥…ûnî–‹&Žòv4úº–ƒ¾€+cÛ8!D”³‚\j”Uû0yíO,:æÕŽ«sé$ËgÑtŸ:ŠËÁkííÞ¿žß°ý_Üÿ¾b%_[vxÌÂc#TÆU,«˜pNq`Kü-FÎïU ëO»p.™±³÷U­/ùp®ZÒ ÔW€3¨/²zSÐ'8dºzeâ÷^{›SHò.¾žŒå»vF=XÒ?ŽÎ#ËM  WaÏ‚œ–äœ3;2Dáôf¼²ŸßX£iºªþuWµ` ÚQùå•\4ë퀡P{¡5URž€V_º2“`"äÍr“—á³ ­àmj ¶#§Ï/hÞy€ú5aE‰¦‘2Š)!m:èT&zTÈÇß85Y°¢øšŠ»Ã¿ÜS:˹̜ÍÏóï jýìø­<Âcæv¦n6µòâR[0µg;úÎyµRž·-g°€Ž~;ì;¹äÙí·WÔS!¯Û³9ÝÐÓäâÀ¿/Y#».eŠkI»ÓEËoÞ©lõ¬¯ð‰Z›ÂÍתÿÂ¥u:à@övRMF»°m’(Ó›ú½÷krë¦àÖ¾ Ý‘Z'–÷®Á,3Ü•8´goé5 ?ÖŒå#'ßâ=SÚWz|Öº´hÍnÕ>*ËÏpb|Õ¨£,ÇÑ[P%tý•t ®¥ „OµÕê‘ù0¸|<òºž88MCÌLiM þOÉ79$Y›¨r‰.Ëõ§Y¨û7GàåGûÑÑÛMúº[É߬šh6,‹H´ožã0KÖ9“9ŠX›ÿ­Ý8Êý÷§_—]m?ê.U;‹:ø>x;ïXÏÚ4xG+U…díÆþ” Q¿ÔèáÔ­Q°±b#u­v‘‡Šw$K¡¯m˜$.ð‹z{ÿ;«!Àk¾îÐYIrºTÚ[ÊÌÛ»ûÌpïI}ë^¹vqÙƒ³ñ>ѸÉ9+Ÿ&ìüˆ0ˆ|Fš<8Vçnñî+°¹WõøB)M/|¿­þ´hc@f¢$Žúñ³Ÿ_$Èð‰—ç èêpXï’ÞŽÜ£Ÿ`ÜA°N¿K^s}®7ãÎLÎqMË +}‘lDª> ß§aKÈ«ÐWî5á¤;½E$˜A=+- âhShÂ¥>à&¤°ŽíNðÿ©ÈÔùk„6ÄëÔÁÙ”A@Ùk=Êã ’þ铹ƒß—ˆ¿Ñï‡ G CñÉðÀ÷½ƒÜL DôÓp¹÷ñÓÑ8¬˜1—ë¸ÀqÓZ÷EuÙ¢ãý|‰–óãIÿ£ÆÜ=1QDk…ž‡‹ÛaTƒÌ'o q¸/íçd¬Š¥ WÄ$6íFñ¿6é­çš= 1ðh~(D3šÁ"!K˜—Eõ§Xñ8œ‡ÀùšË4‰˜Žõ»¶ÞpÔ;AAv:eTØ syQæbÁš0­Û°•ý*öék}ö«Î?ÎGu‡ ]ÃTŸpÊàaõÏÆ¼ì]µ—)§1ʶ.ó8z²b–R‘È·•ý^£œ‰Vfóó7o‚.“ˤæ³÷Áh'¿-ëií^v—ÒŽ4ìæ–ãú¢œ˜k2{ wŽ‚Xƒy5Íý…Ýž©_ì-ãF]ìÀa5À2„@TÅž(=z/K6¡¨Ð<оß?ùº uö~V<ìQÿU†VEµàƱ•És¾;FšZÆ—Û³ é¨û*?çÜÑkž%g­´w¼ZYÆíoP‚`ím±[®=JÓ‰Åc©Ï†&¡ƒãLkøVØê†¯cKù—^–Ô:ô¦é§â¶úÞ})UnX W¼š]*²#¿åŒŽ°©a߉æÝ´ÇøC猷m±À}wß{€¶¡²y”`l†²bXÚuÖèzO\¨a4¼d½ Unù°Ã8qøôV×4+ã§ž…%s¶Ý_• ¤²4€~ŒãÚ¯ ô3¡nŒÅ:õ¢†Œ£­oÌŸxNù½ìmáœy™ÄJ¥íýw«Áh=Fí…êEÕI_iÈ@ëåmxŒ •:FMuÿrŽ"±7'Wî®Ñ „üÌïl<Ç»8X ºI`.ô+ĸX‰køIç$¨nÿk’|õÆÎ>½1eõÜ‹¿Ï&J[p~ŠEn^ª)Ž^8šŽ%8ëÆÏб2Ç6ƒþaë“çˆ Ü­Š3\‰"¼ÄkcæLn“ ’àRn#„¨´#ëËS57(gî‡á©tZ¶q˪ dM Ä °ó¦öy(S¯Mñ™D(Í(4ƒº>Ôû$C°°å‡Xa¦É"yìé6‡ð+V/f©¼W¹û®í8ÁzëÔ~QÀx ˜Î•vêm8lê:Ð)Z )ÒùcÇè:ùlXì}ͨ©œåç´Á XfX8“p¾Û%çPÜM5 ðžçgµ<ñðXòeóhxØe† m¨¤ý¹ÊýäÃTÑYýoX4ȇè<Á€f¼µ*|ª]ìúåÍúJš½âã¸Ìgã¾7‹}? ŠjA´Jw‹ BQ4(ïQš)k}²Ïúð¼óÐÑ".áMË[%6N5Ô´Œ´ðÈóGþh6ÔÚqz«Ÿn”AœÔs)꧘ˆ¢1›>#¯þ-: æ»m¤¦¢2tM­A†µjR_;›5äJ Šäêxh»ïˆôÑ•!kcOÚ~ë”!ÿ#˜Þy=ÁéíÅû’tN7ã9˜‡‡‹oa Ô¯‡È®¼¦äµó ‰|Óx¾«öa&mn šm3¼‹…RÖgÖ6Ú丢ü¤Œú»Åv´ý,©> ÁõZ6cz~T¥–mÙº@Ç ›yZÜêˆ0ÕÙ ÞQd/¿XªÇNÔÚªìÑìÓØøÖ-Úèºh@s~]»õ÷:àþ¸Aª‚Æä8>F–z)*GTƒXéݹqÈÀï/Õ_ ÄêÂúX,éAÅtÒÛÖ0æðRO¿vƒc ?~[òàvSjV‹¿Ë •–Bàq{óš™oöÈVT8©G3[„¾Ãáæ$læy*oÀ5aô飶"­f ^¶±E•rÔƒˆP_p1dÄÊÄVY:B/ËWE›54BOv,¹4ʾÍÌÌUnOý©'’¸—õŒ|¦õ‚Ðs § ÷1{Þa•ŒzÅ® =öÉòØ”b): Ÿú‰Éæ¯ore„M)¤`ß‹ 5ˆÒ½_²sn&CTL¸-^Ji4¬à_ßû_vâ'XaÎ=˜ì›A“¢µ•‡Æ¿8Ô¿™òjWx*‰¾e Н_ú|]öƒªC6P%kœ[fѹ¨OèÒ,¤:øËÁWÅÇ:ÔUÌ…¶T‰R©"EwSM4,5#õS].ôÀyhæìµøÂ*m! ýß”/ìÇW¡Ò =nE¥Í+Š6¼|ô7Ÿõ„&/‘½V…F¼dú.ï0¾‹—éå±×å\GzL¯<Ñ($¦,÷¦Rêoaš¯£Ð9ä¶¶lĪÔ_déÁ"uîêžš­™•RÓQ8½¥‡üùºZ´ŸLräË÷rµè Çšl£Â»#„R x$Ìqäëø8´ØÖû¨ìÞ›Ój4‰#bB½œÂeY×ôàÑS¯KÑà,‚Àˆ*r°l©,ºÄ9ÇH€ƒX7Cã­‘>` ;ö¶Ô#ôãC{B9ÿÞ3¹w StŒÏË™ *Ì3ô*ÑŒ^øX°Ê:ªÃ°­¤;ª´dÝ\Dõ1¢Ó}È—Ö݈#×(“JƒýÍ?3xò¹ì Ž2õ];ÞW˜kKy¯üuÃ!áߘ¼öÈry²jŠcË‚{ˆUußyñ¢ùùIÊ5Ö-°Õ¹T§`E-‚ø`É>SféWWÅø(æ&¸¦ÂjÿCÉsiû¸6£ûV²á„7r'$Ów´0–ÇÈ!|¶F]#Ò®TÌ'KZ«zßn>&Ø#$q.7ݵMwRbv îWÜÃÅxÞtÞwÕ(Á×S4CŒtŠØþ»y¡>¿q°°¢Æ­¨ã‚{ðîë0KD__U+»ámoxÖ9É·ãŒÆ¶vñÕî`&|ø!_Û4!Dz÷Ç~éïáãå8gB?%°smPS‘ßæ™Ÿäú„_Aúȃt}:ˆ½>oE^õzÞæ–C1ÙŠËäà± ¢‡_TÞ?Í ÷¥RyŒŒ"J>• ý ~Êúê-‹âÁÓ{rÏÄpãåñèOÕ<>Ô>ûW›ò¬ž¤Tâv·°&ÛD¡é¬Gäሆ“nli\žX®Tà£f`_÷y*<e½¼v-%µÄzkÌI»^Ž˜|ÂvÊÀWŠ¿Z)ër4ºìŸÍt¨4} áUc…8÷¼í‘—j‰H¬}¬;ºÍmŽ{›|®Ûùó†úƒÐ ÐW“kâð^'•ç¨ +ã$zÐk„BB“-æ³E:ý ÍV~°ê±*¯¢"æëgÃd:5µÂLÕ0дê³yÿFãŠ)O;ül¬9æÊsï½Ò¦lù¥Ö* äü~Këß@óýòØ« 7œ­b¨< —YQX†-qŠ©Y”ƒâÏåÞVr¸®VR>Üž[毋6»GE‡N|5ĕþ ýµe\Ö‰Å>4¦O@>0O™6 ’öc3] µ´(»µzÍW.+ñ³]ŠÖšóÆÛ}l¹êpã°²Çð¥´}ó¯go>£T@x}Û{îI@×*ägg‡pðïñ5›0ótM™ë}R!›o Ó¬£úg"ŸGñloãûŽCÊT4Í€°Ø…ãWú&Xø,Ò‹õ’ʳ·Ç 2vô˜†B…˜sº,¹ÌÐÖoW½UV„g\!¬};-™0)t(›¢ýRD˜™LnÈøÇÑl»üÍöà]Ò‘Î"ŸŸoÇ–ÊéÀûœõÝ`¢íd¸O\ 3¹ü^ÛÁm´"lѲÈ);ìôæ­Øäóúá ¨µùyó’Õ»2y>b{Æç' ]nMÊ- õõGcyÓ”s³” (ÑÆT¸î?E´Ñ0 ôKú)ªí¦ƒnÈÇ*<3üàõïYÆü©Ëø˜‡âD`üp×Í/»÷ú1hÅS¶Mƒ)Cb~ÂJ8äuýdc-kQzô£ù±•œ¢â"úwûΞæÈÔ˜J1†÷Úó°¼-«¯Îàh4RÜÆvá(ÚK@ Mz·—æž‹µH#h{‰ù˪˜°æ‡Lcè³w¨x\’dw'×(øóÝëã’8ñz‚™GdáµgÞ+Jæùª;¤AÔŽ‹ è­v´>yîÖhv¥WÐæ3£8ê‚V» ê¾6Žâ¸a•/ ­"Idš”a¬ÒßU“z¦½5øg¿$󃇯!l]‡‹Šw+=?‚ð¦‹):¿3ÿ’8(7u):ºW«ŸÀiøéùÙ³¯(év£€PôÓvûž—ÝÏ”Æ.Ÿor¢¾rö„-{{Ïa ·"ŸQ¨<¸š—ŠBµ{5ßõW*ÇŒ«ƒ>ý?Ë’wG¯^h+_ïïyp88H]ß]\³‘ ÷“‡kE:}1FKp±€l %˜¼tÕ£'ôŸÀ6JûŽ%dÝ]¡ž/˜…Á¿èã_HÛ;S—gBS ‘]Mïû³’9aXÆoQöˆß¦gþCCçõsI¢Ñ§×¢øRîAô}ö%p³pY°CñJZûP äZ"áBÿÙ½LºzÆ2²ÞP,ï½pR1ÕÓµ˜Ì›hDí2ÔÍ£!M*‘ÏDá—‰dЋî'éïÊw 94Ä”u½¬Gm1úÝ[²S»VìM9ØÚýPÞŽmŠËš—û^¹‰ñb@Ö‚µ˜yïlOG4vD}àÜ|Ç{› ð;MNŽ ê(Á®Íy÷ÒØòWuYx&ª'3³Xç£j9ý53¬ “ëlñ§ä*ؤ ’õQmAQbJF@ð]Ã.txÁjE $óžZ+ã±óHíÝ(œ“=êšw=]ýÃo>„ìñ¼š‰E)Ç7´€ Ê öAª­À^= Ά/²”¤ìöý‡ì)Óõµ•¨õp.ê/…W(ub¦Š8Â'Y-?ûï£a¯Y6Áþœ‚GéŸñ­0‰^Ó0cykˆå ÉD™0CN"Ìn»xmØaO¸AʈZ}•¸÷è¼?u‰m(.\€°ÊÍ/,y–¸Rö£ÚVÚ®ë:Ÿg^i> A}Žq¨ðŸëk¬‰âß':9Ì 9zß}ýù¨7„¨»oÙé{íd¶ÉO=ª\üîQâ Ž[îhðNäñhÿÞzÆÆë×qÇÚO*«Ý˜Öß?*¯vÙÔ×p+·4ç†ÊW ›#ë÷ô2ÞB[ä5úìáv$µ!/X·~Ñ13þ²ÉÁ¨V6c¸v58ÃkèŒÕ¯ÚÇ•)îG•Úy­OëøÍâ fp²>°OǢ魌vš¿‡N[µ‚Ùz‡\)i3ú7$1®A€³(îïcy¬j1hBº"l¬PÎù7Yóß¶rÔ–±õÑ’E¢ŽC5)&ø»b†àQ?Ìû1Í4fÂ"®Z°‡ \IJ˜@gƒ|¸Ö\~o³cø¦8™ˆ(¨ï·Ðk›( š ÂZ'îy'æÈV¥ƒgZSo¢m– |äèEÝ+èÊ™>•3ÇOÖ"õ‹ºu#³+n‰Ñú–ô%5Ôy¤XŸÓ[[¢ƒÑM ˆ3ˆBéÇlµ}¨Tá0§4ð„ž¬5ß`VpL?m+­ëÐãÎüÒ1 •¶rxY^AŽ`=q8‹È´ŸòØ4­ÒÚC‘0kŒß½ÏMDâ"€›0DwBˆMk.×i“J*æ¾Ð¶+)ù7•ÃÂp@E£1À&œrÂ]íïŽ Ý -ALÌRätÔƒµ <)i!‘ øí\ÖñæÍ©)ú2X_l÷ i*gÍO´•IO=•û<\aœÖ,#Hø¨r•~R\DLߣÓ„WxÙÁÛ„ßwlxú_»˜÷³i¸“ w¹|¿>>¥‰ÅžÁ³¤¬w‘2ÞoK\T,‡™‡Ü§Ü‡hÌ¶Ðø¼Æ^”9ºƒ{hγY' ƒiƒNÏnmCfÑ£¾ (ÿXð‰ò§Â: +GBîzƒOvžÊÅ´'ÂçפÆÝgŒÀnt™b©¡]Äùéo€Ã€Y´nØïv7ýSzŠ[º­Â(B£fÕ3!`‹½NÆ2cãæy÷¤äuËŒƒcÂè‚Ö“Ôäþ8öL¤õ6^†È Áâ¨4½.ªn“«•·S*óm•VYÛ¯B~­=›ŽîÁüCk§ß‡>GP¢GÌðp!Œfd#p¯kTœÐû®ÐîvSzo°ý,Ã+ŧû}\ynoµõ-ÆÛÓ“ ¡8{uÉæ¯áË™it§Ë„ý[rÂ*Ã6$#;£wÔD®µÐþÖf¾W¶»’¯ ϳû-Ž"`]+œT¦C«5'W¡•c@\ü1Žæüû¹ˆñ‘‰A¢›½¨w Z¾ä,g)èúu G/MÍÑÁ%¨t $Ì ©)Í䱂ùL5÷³n¿Â"-ýˆVüúz3– s£s±ç`õ*‡¸R¿¯îΤi#­B@²¢h^W”síMúŲ§€ªÐ:•0}™óû¨±Y„^¥§¦üä&Ù?²– þþÄ–©j ´Ø¡ñ€€õõª><”#l¿õ‡¶ÍK›g{k'g߈Lr «.Éû†áA„úQ¶*G&&hÊTÛu6¨úàS„Ü¥oÉÒ SjÇz!£/¹¶Î$O‡b2¤Z—_å^Χ+±+]íí–«u)7Й9 ³È!ák º¨‡-Ä(-ä=gÉ.Ú¦öSÒ¥ X«ÜQ#]³63Íù£s r­ÚðFÀ+È¡çÿï¸H8¦(-‹Dqç­©äLó,¯hjè72HYÔ,÷wÅåþ?kF8ßqÜ™ÙÇo¾,åÎêÜÝÂþ í&båw)Õ´¹ŽNµw_Ôè³¥³Ÿö™Á›:Þ/Àvz¾ÌùÏòXÌ©¥l£òb!¨^þ9JkÐÎÀ#òA‡?î+ékžòÛÝëKµøÑÒ»cÉ+ˆ(w=2ÌCƒ†f)æxÞÁ|Œ7ÚaÌ08ÂE?ÿ7ŽOZÎ>ø:¾® ë™÷¥ôê>Ö‹±×ëôµd[Ñ%i,¸Ö•û¾‘¯{ñ1MåíŒÎØÊL˜qÿ¥Lãë~õºïNÔA´Ó:\Y@i¥Ô Y¢ñ°p͈¼Ý1îuÚ˧ÂþP¢ 3Ñ®;(ßÌmóZ¤î.ÖŠ~I»Cëxç‡"¡êN¿V*ìƒÖÑÉØ».6²¢'¥<@óùëÐoA1 Æ.ÇÑÞ´KçW÷b‡Ýß(ѹ´Æž±wtQœvî­hÊ«>Ø ÓàâµwýðÓ³fl6¤ðè•c†kFš.ü4¡J¬Ô¸àWµŽcþ¿5¦‹qG©cÏCµ§Ž1j“Jh9ÛÞøßèÑÁæïÌJùÛ9%Âñˆ–ˆ  ùâÚöÁÐß»Z·Ù{8v!FŠ FßÐÄ7½ÔýMu„JÐŒq}¬¢ž+má K‘Tx´?°SŽ–ð~¾ŒWpbpTg6…:¢NU¼¶;G•ü=ã.ð¹wt˜Æ´³J³§ƒ§ÓòÝÇøByX_GìûõD†áV®@Æ£0$"éy£0O°gþ<8ÓRÑ4€¬ødô|ïýþe›†1´à·p‡4ùs!<¿d.Ëmü~í;8i* {ÈtϪc¢Á@´Î‰9šŸÁªœžõ¥š»»Ù.ËŽ3ά~õM5ôn Í£ÁMò­”mìÁ®ª& •&`ñ™îÚ›Gkú®AAÙëO7ÌUFsßU…Ò­\+†H‘¢óEœ÷OÕígN‰MëûoÚ“¨¼€˜±«ôo®ö— 7ŒanÙÓ@På îÛ¨ä×çi>Ø%O”`—~óÂÞ£Gyç ›ÈnÇÖ¬Á1'LsZï!:ýhécøêvZ¦¾hÒaEÉßÁaÌk*èhÑ:tgº¿…u5‘5ûá)ÏîgÐM)ð¡É øÕÜ|ÂqäãÒxI{ÖÝ{ÃWlÂÕ ¥´+mʵ'wЬ¥snÈÀ󲬵øäÿ¿ÏŸZ¤Û.Õßóò) ªÿÚJ $²¸¢žÆN¥ô稢s}_§X?A¢2ürÜa”^Ú~Vì𕪗{Tä~X¨^ îÊ~<¡¦™³Àú2v@yÐài»0»ð ‘/LPmZf°˜ÏïÙU­*¤¢ã^Ùÿ"¦É3©‰Jô‹¸š™­%kJ2c»|ã#Iñªñ¢›ËúÉ•i;'âG¯i*¹‡Qà£rø€ûØÛ!0pþ-¯Ã`*ï³H ŸRsåõñl¡ÅƒÁB{iÃÞû%z“Ýpf,Õº÷R5¯ˆõ̲ä¯U1< ¢Àçß(•ƒ¨`ô—`í罚ßó7U/Øiԓ핎×£}æ{~¨oúÔ¾fh‚ëí§_`ƒ­ø×ÖôaÕziÈ:Fr^)rT¢¼–"`¶è©û稛ØT®Â:_§T[Ò—È,T=3³¡ÐUi*ç¦*DAÄ_`Ì‘ßQø!Š <Îg›‡Xÿô=M^èøM’÷¾`öBMЧõDªÿN9Ev··ãHp–qЋº)¦ø9ƒÈ!Å›«rBP7Ý‘ÏØFÏ‹L3{”™öNnx#°ü½PSئ éÈ»îp­‹ù›ò%›½}oµ9LyJ߃œÛ¬Í…i½Éö7³&%Ã8À B^\P¹­‚÷l/tëN±‰¶+Žuqr†À®eÊ4®5*7€œ}{Cf®«8Ér=݉ò¼rÃW“l„ì /X™š€ä Z‚÷Ép>J< N8ã/ó´g‘Þ*7Þ/çõûA °Ðµõ'Z3ßë;4³m×¶uU]á‹O~×n:ê;ÈÖ¬ÛÎ2"›­tÆð»Éïáò¾¤ù?ÊÒÏ»o~ìß)÷Ó7Ô’‹4è[ÛÒ[ñ Ê” imOcÃ[ÜCjj-Ú”E'f»Oiµ_š`KU‘AA'ŸpŠ7ÊÞ“BF´ÎpKhõÝüT–Ÿ—ššvÂ(ˆ¤Q6j³mx®UôK˜ÉÞ°TÃB¦HdD ]Ø! ýÞIô¹ÇšþNqZ3atÿ{[¨i8ŸÌÇ…b›aÓ a—ƒR\o=bÜ/ñÙ|ÚP¢mj‰9¦üÔ ½îÃ^Î)ß—ÔîTb8„*¶p—1ÂOúwÀ_c³ÐÚý‡„9쓘ãËŸ¼fu»èô$Ö>r@ô„r»ÆÜ ´*ÐÐC‰Íª.úvM·ù ä%ÅuáL牰”oÏ¢Ú7'.ßió–·ËmåÏqRpRò¥9ɜű}æ‹FG„áó€–ŸCß+‹p%ÀþèÝüËFrt*rì!›2ûž‰†fwq4M•¥U é(<6U3f­o ]ãS£slüZΜ6¿òç/ÃRÖ][ÃÎ_¼’ïOü8Š"ô–õv~Â*àΰ\è Xõ<Íì½½Ù»•0K4€ìb]Fi ½8F“šÉ=SÕjàð´NBFQn­¢Å‹8ÐY¬¸G˜˜öÑ£… ¾Ê:><Uß^°N àe3ï!z T¼qùhÌŧǩD‹Œϧ,C,ÿ×xM¼Vë Ìšäp^ÈßræêcVD||—O¬cÚ¾{²‚2CEàý}vÞçtcCû@|Páß°ë*@XE)wGšàW0{~3–NKü=Λàì£CvYé¾”òݬhêyÚQPµ£¡ƒ³æ[²¼üTõM#¨—ççIBÛ™úî`ÿî®Ç0CÏ»œŽÑþå=µñRb}—±|Á>|êr¯gz#+ ¶¾'Ÿ“`¸g û}a4o-Zr¿Ûzâ.>Œ H8°o—ãmLKôlΕ2‡ëWëý34t6̉™¨¡s”_C~K”¶—áX¢0žj›jý×&õå:’pnÍ:A€TQÄK~¤ÂÝレ'!úf³ãR›fïOdˆAT9ª-k¯•ë6lF½Bܤ¥—¦¡Rªlé¿Pô¡Ùˆ9ÞQˆ‹K^äL8^ÆÑb9’¡ÐÒöáÈWÌõœ’Kneù"~UÙLx£ìÈ—|ON€¿Xüë{ «ù;¢£uóüY°­îzù‚aJõú øZ°+^6¥€X O¯£ùø—ݸëç>D  r›u,‚8°i%Ï #­ä:ŽýÖ?çtÌŠéM¹úÛÃTÝWæË4"8cÇÑ- ê⢺òw8j ¹º+¿èpgìÁÂæe,SþóOòç-’®}á×øý¤=r¶ ý¸¿7Z´~Vãˆ#ÈŒÂ÷K§ÿÓ$(áÁô@}¡<¸áeñ_îÅ/5ßå Á­§4ä[þÚQ`èô|ßéU *Yï¢NmFx[PJ°«"rPäuýõüi%-¨µ8R‡Uµizü¢š”²çŽBÊ£PFt é¼d³¦ÜüƒZÌ¿ €{pÚR|Ž—aC3åòžD2¡ô7ë × k‡(Ll|báòIÈrR4ψޕð#ß~ïâ^›÷47X‡;wáÆÈº­}g '‰ úÿð·³UY¤v’­WëKÄ®œ*-_hCûè |ÂÍ^3q\QGÈû—fSe¢™o+מQ¡^EgEs°@2¦·aàËÀÐUŸz ¥Ø4༽Úi«9¯îòé¯Ùl‰*_^‘µwÙQ”ö¿£Ž¿Ò&"ŽŽ$½ ÕT©¯ ýµÕ¥<Ëg¦µ·OÔ”l *'Ô}‚-StË2/¯Â®Yy%*á¼êÔ¥ÂFvÇÔ¡sràG~tñ™/÷ûßãæx2Á¢^ühn´+ïx¾Ä™¡Ò9ÂLV<{±Qऱ‘QæŠLjŽ{ÀëúùyìÕ8|aõ ±S Ýâ­SB«Ðëfä‡_4¾ÜŒHÏßKÊkGl®”i/œw®‚òHLµm,°ß öÒcÈri2Š—˜9êìñƒB¥ô=[’ †Ï÷D8ËõýV b³Q}gCü”ø2O§õ=G‰éÞ,ˆ°©tÌ!aåÜämÐR4ëþ> ²§@}v_ÞóÝ.ºeÌÒ½dŠ7Í>JG/f¬œÏ%c_J½l)Zzv›d hëgÅäD]1 ÐGëqGÙ zd•ec¤š¯¿ñ/Q´"SÊ[:b&$œ³˜ç3~§8"–MÃd2v¸ïè uœº7•cx]òë7£ÝH'ðÁ‹³XägŒ³Pñg÷É¢ˆÁš<·>ÊKÈe[¶ÀˆJ¾º½ª \¸Ö²[›—«¥"6æÛHã ñÕÒàñ7³> ­ðÎ}L`Ú,ÏF?»œ;ç¥Ñr¸%ñû_!°7s˜þõs+Ååñƒ5]¾R›C±üw±‹ Y·L²S²Úƒ‡N‹¤ðÁ+ÓT¤ùïrÁ Ry£<;ñ#aälüç°5ûwnœì‹Ô~‚µ"Ʀ$Í"„ŽÇ´!Ò9fñ+Ÿ3€¥jÑN¿WÅã¨0GÕKh–1;Z?JN³u9­(û Úœ!}rdBƒ]áÐú£¾[rŠ™äŒÈ¶M€qL—Z»¥`AŠÉeEÏYË'ñ¦ž6o\ÓÿÝ4oElòá,~†Ø—¢ÃÚ»Ù‘.üJÅO3/Eôp<¢µµ¬ÔÒ\³OûÄq—¦°©Z(Júw¸<$9Sqì=4Mõý‚ÑˈĚÇ"€.ʵ¹ßïóµ|x¨êĨ³¬ % §Õ ºca8N,r¿²›u›$—s­Š<)Å2fÚ™6Ç~uÙKÉAµ£ùR•„Ò~}né¢ùgg=úvÜYl6,µ½eìz‚;ìÕßB”éñš‹zš@@Ž!ÆVÆ»¡*£È ãSwc6›`'eYªdï‚+®à‘ñfeÝ€?ûßð¾ùðLòÀ2úžIøB}kó€^`"§:¿|J"ýKŸ´ÆÁšÁØ §uV iü§Ÿ]K§-VˆÆ ¡ÉÍü”Cñ4¯š]I(˜~[$Óٖ„‹$}Žõ«A”ÃL½ë=v«gÅ>9FÛ0K…Üʳˆl*ÓوKäíÃaöoç§7ô×ö@ÌQ¼n®Š¾ýØŽ–è-k8¥Ûù˜G¶B®ô“F9ÖY)_ïa/vöÜÞUo—8ÝÚc4*þn‡Êêå^¦h·"´Ur}ëo–<ž|Óh:½Mº‚+\€¼Çh.â8Ãg›»€BÁ£|IŽáàtcâwÎFªóV&¦NYNCÓyjg!óÙú3ÙtH2‹ØKä\9®ê‡4ƒCÊÿ]ÝgY×)f¿©ü|—l4¦hˬ­”>ów:Æ×†o¯—«yÅñæTÇ_ÇY½±j®À)ã^ý;Rý~8º@ÖŠp#ªŸz^ è—;ÉQÍ;ìJ ‰áûyÛQ •Êù׉jnL®l–€¼V:© “éó€ 9üï#Vàž´Ù_~°¨Èó^ÔÔᱤËFŸ¸ Š(nÄŠ=íí?B{ÎQ5xòŠTÚâˆ9!*¡i¶Sj¾€äÁPb1³iÖ]9[¨%`J(oVN'¹QÚS\i_Ôû©âégŸFAn¨¤ŽÓª‚eçoUæ -‚ËÕš½ŒrkªEõðÁþº¦g9î%´Û2ÉÅn›|iR¾‹6t³ÜDl­ú¤¡UV¹Åòjœô7Dïø› ØÂß¿×fu;›ñ1ï±d/‹tˆÇÉ×O›ð‡ü8AzËÈF{p¿&³¬ ¦µUAjY£ €5¬ÒûrM0?Õv¹U瑌ãpéykã÷,3Äx-ߦ|NofãFïe˜5ÖfP¬tü_ û èØË”5gÖI$B¦–j~Ç·®‚ên•Xæ°µKj¸½ö&"rŒ ]×yARß™š2»3Úº+jC™›£Ä»ƒ9¿t8Rïñ×e>Œ€ÜÅ/‰"•Ægº«N©Gù.åÇîúßQe¸µÂÛNÑ62`‚nÈŒââ ¥—FÉÄ#Sd #•ªA1®³ùhð÷Qµƒ/5%­õß=-Ž”(45#´Mÿî.É7ðâÙä¸g7ι¤ŽÉ†e!-žðÔÛì=lr,;þa¨/_L9DN)j‡Y™Ì:4ÓLójN-–hVZù›]øä=Ù Ô|ïÕð˜JÇÃù‹ö=ì¹÷yæÖu-Ú}“­†,oÆ%¥¹­k _û±Æ ЧV&IAÒÒpø9²¸ð>"<5uŸèÕü>ýУEb\¿ó 4év0Í28ÏŸWØ@ åÄYm:,Èd¶Iç§áŒ-GÆÒÌ]ÇX‹ŸDÂ…[ 2©EºžZÆáʉMJý*ýbÅN€;ÙZYá3ë‘“.!$¬5i¤R¡@=âeóüÔFüµ?h:Þ‚4¸˜ O¸>OÚZ2‹øÔ ô&ndû©ÀçË+ \ñ|¢Ka„Ña?š¨2×W¤YÔ†äßiZ ÍÿÚk„½M Wf\X8û†­ðèpR¶äõPÑ SÏãÆÉâ%•Oœ ÷ûw[OV¾Ûëx? ¨ák0óQZÔ?<ÉR¦§‚¥¶3ZÔ„\ZÄ¢TÀÓšÙVš¬M׈‚Á®Nº<]‰‹­¬myŠi×Ü™í3ô=F<¤í2gñѼì—Nø€lrÕ‰¥Ñ»Ëa]1”i7~ƒë(d¢ßÀ§WÂ}¿~º©5 3é™3Í.Ú þ^Ý{sÖ¿{š¿j BÁ ÂÎl=Ì·hƒFT¦½xÒù¡˜9$Þ»{è} ÆkBϘàÝí»x ªUƒ„!Rsõ~XCÈ_r¯¢Ö%R×'“|ã0˜+0pBö× ”g#ìÄY“ŒhöLÝ­âáý}¿P{@®eM§#1 ÷´Deè¼^¥[{¯½ƒAË՟z¥åAˆ-YVX¨1Iwœ™ë/öÔK‹ŸPÍLDÙ0ü“Ò/™ƒyÇêV”²/Ë;k?8µEaËê•0 ´ðØ”5#Ôþõúlÿz}¹Ÿ¬µ„h;…NˆÙâ}ÜÌôÂt¥ìÇ,eRlr±_Ú60ö¢Ê!X#q(ËÑÀ’l@Õ_›¾ö/f¬½ñxú-ÑËè„¢̹€éAòðTy\ðR¶g¼Ð2)¢v›Á¹À2kJ.¿¨Žövå…0a«¶Ùg„]B;Žûg=5Eqó+y9CadÈêÒ:¡êxÖ E±§gnÞßÑ@š51‹†ßdýjø|§¢t+hƒ!†K©`†%؉å­Êè(˜»7‚x3¦ÅEÌ (¿†b5™dÅãkpç˜"𮕣Bù¬C•'ÓFP[ç4Å)†òn–V‹"{×ÓæJ7Z]O¿ÕÄc¯® ›~\só¨÷Oè¢í>5®‘6—@¬9:ærš–P‡û¥@Š,[rÎÄ@-ïùÀg§24MÕ,cTC_õ/ä;üÂx8iìð%ìe>¯ØÒåCTùîÇÌ×/ðëhÆŸsÞ^#]ZÞ‘,UãÏ Õám9Pâ9gñC»Ë4±ëÞ’€¥—Fb6ÞÌ0÷ëì›+¼Ú¿Ôź•ÿk¡1†n€×NíP÷ܶz¤ø"òŠBáæG¾ ÷0†_tà„3ˆHÛN¦ìòpÚPû \Пñè¶y*:ÔUö~I€ùMÌk4…ÜÒ¯ V­^Éä¤öN ¾¨ú®‘œnåhh’óp¹¼ÔŸã0TTÏ»b¹¿æ*~æRe®Rk~òs¹øè'u-y•¬ñrª|[³IÊy<"ž^±«Ä ׿OÕûW#A©øî+hÙYeŸò¦´fÆZ€g¨«ëba8z‚ˆ×ûyü<È¡ŸCówÙ(çà}±Rp¹^v æ>êg«í!Ô*Ö߉!LÒÚUSßoùÏêÂ^a»Ñr>â[GŒ¼Öªá©i·þ 2´¯w|ÁŃ›-Óf+WÈËR,^ä¾ö©yk‚¥¦B<Õh¼åüú€Êe!t>RÊÊ{Ì­;ÛE ûÃP !Õ`V>sOæ£IÄÁÀb”×ÏÔL«U†iðèê¡Öe*j%¿\™`ÜìÂÿXºŽ%W™ü*ìY ,ÉÉdLÚ‘3˜`ÒÓÿ̹·j–¶k薾Ш%°I_ÏP{ów•µà>B9áK=æˆßâX:äÕ--‰‰e•ù)çñaRþ•‚î;Aqë‡Õwÿ~“i‹•÷úA±œB> OÐUÝ¢„‘ÌÎY«M@SD-̘PjÉþ&Iá«‚À$¾Ü4KÖN×Ç]ÚþÍ/jûå§ö´Ëé’•:ÀµXBŽëìIVíâã¶m³K©¸÷!_·yù+~£åQ´Ìw¦£c š/1ædªÚ÷N8nÉ&]¬€¿nÕÃA;DÒÈIÚá4ÇFHÝ:, c4{w Í1Å6µ“ÓÖbìñÐGlá m· d²z%ôp«-ù¨û¯Fò<0hÁX˜ØÞk}ëb§îÂEyßRSHØ gêøÖ³Y»èO)¾O}kì‡ÜH7Ï­Ñ‘Àô|ª„‡bX‹fUî’jc)‰à¾ÜGù§+‚Ú…‡V/6ÐÏÎj~ÉXÜR G;ƒ&tO¹ô&6ƒPàïJç‘s êtcN4Ô¬‘‚ûáA–,7‚Ó×6¤±sŒƒ¸µÖIN@_.ôÙåüœänú´3ïqK„÷Ñ=NXNÆÈb<üz~2àxìÝЭJ—·@ó_P†f#NŠ‚\XǼŒîÜ0’ª¿f¶Œ"µ2÷-ú;T­ù§ÿ Ú2ú…Tuê-]÷.Y×*]iЗ~'Õ ÷Ç¿“ýÃF3«’ÿªú š1ORÈÛ¿±|ĺ¡ßþ aý’c´§×ÁqÛX³ü0$ÕÃxÒs;©CÆ+{Àƒ¿‹yhí7}ð_ jšn­¸¸AviÉ ùíÙ|\î¬Ãl¦îïcj]»`6]iª×ÐYˆ_²škZr¢@‡R|ì €fGg“}9Q Q £×®ÎD(í(΋vŽ« Ä(ŒuX‡¹h‰O3›újAµ_‰åꈀ&€ø})“Fÿ’Á†æE‰_v X08ÀÉwµAVuÙ/çF ²žÂ¬±Ç8ýV ‰wI‡­`þÑïwò}bçŽ@µoˆaÅ‘!7eûw¤©M ï6>ì·Tƒ[/|Öà3S½{è ߫ؤqT×}ú˜»ûøñ2È6·Òç¢3€ˆÚ¤#ÃŒÜbÉF,=¯R2•âT5ÿñYè—‰~Žú‡?ú°©á›•ÔX1’u–FïAùͼ‡ú@s¼ö`Y½[ÐM;cJ»(ùº¥è›ˆqk¾üé«Yä’;IÃÇf$S®äl?÷J“• ö¤‹ëoÑÕóøNÙ «ñk€©R_Ê®UyEÒˆu…мîàh‚­‡# •±¥ò([𱄇 Î/\&ºïÓ¤d´ÂPãUïs®Ñ+ròw)›¢PŒŒ³;A=ÂÍú•O¦ 9_‡¿€ú¬l2³QZ­æå'ê›l?Fê‡=ÕKÁÖ|ƒg%'¾¯§Ñ²±zLì%Ã>œùX‡ªbéó•yv&:°ä Å~ }½/¾ÒO1ÎùôVìè¥Gjàάa(Ýæ%.ƒŸÃ¡EÕr+½œ¿[ý!ëOm6˜îJÈ‹Wú8úmœ™‡ÕWƒU¸Eì×鳨|3p‚A *Ñj²#qr\'û赉CŽ,Œb-í~­§@uÓpœ#K[IõkŠ]'rë/ßÖ_Q'‹gå#ö«ÃcÃ#~±±­š_ðÖ“TÚ%þù…Ë”ôXþ£`‘æÖ£LúÖÕhûL5]ú‘õ_1îdT ^R‘ÊÊT·0nF6¯Üv7ò©e[w¶„²:. ü}¬&püÿäWŽÓ°*æ¿+ÑTþÓgz¾»"¡ÜŠìU~V±?ST,Ðéæ$!v?kûž)zN‰K…éÌßÁ©ÉÐ"û¦¬o‰Ï~E!q}!ûØý7iú‘ª’VºF8ó·Ž8ærÿLã$U2}gþ¡YàÓ1k?‡¨Ðiþk ± µ'ì·snRË|e›Ó‡{óhµ V]cdg)œê…Ñ6áWN¤s<±Gÿ½L¬JØì0º–:û¤F”£~ǨógVû Ï]/u}²ýµ‚“>eœrlWlL> XÊAÔk}ÒLi{ ¶¼?Aù½‡f¯ÆuÂ%‘»ßËÒazçìñUáï—¥œ‚¤†éY^  cš<`|¸¿™fxº‰*»ŸXA;xø¶©{íö[ОS¦ :òÍÄ0)àÇ-Ôf}W ý E&±ÝDäÓZ²²î³J ƒŒ`«@•à‘oÉ¿«$Æ>’}?Œ6'Fa>Ð…E"ÜFd7_«¬íçǺœ—žÉ‡“'r‹èqõJm °Ÿ~×=o3Üu=aսΠòybÔ=² 5OµQ„6.’©Û€ë<1TòÕt÷˜e»ÜR+ÊÀ'Ûñ\êù¤.ÆW’!ˆ‘oz²oÒª™˜¢Œ|Þé’ˆTâ¢ÂùGÈB††wÜr\ºAM@nyDËà)µ]Ù]ºŸ°#á˜A“•#Δ#Se”š†˜þÈÊõ²íb·ËÛc¾~þ.›ô«êPLÁüëë ê’xþµè%Ô Ñát¸S¥-&eW†ö½¨”¨½^ÿî÷VÞ)¤ºøÛýÖ'ôOÞã'Îï´Ú:u$ì'©¯·ÑoÌ&Þ`Òàn,ÇÌ §=쌇¦ßËØ>c[„Í·]FÞ®äOb̧« ˜? oÕ‹ Šyô×{w|¯A1CÇÑ?á« ”$ÖccÂ5AÅ܈Y¢m3Ë{|1PHØë`@øÄuj{ñŽz EO¶&URì(œ1Ä,‘Òå©àì-vFw„"2ŽWÆ©3c‚GàuÇØé‡k·+‘ܳ…äÔ––ð/¸P¤+±Èø6Ýjö©¹ ”Hnñ¾"+ë)Á·½‘ÆθCûbKìÑh‹Ã:iÖÎx¨Rqiìùk(šÏà /Yj†96‰>kä…Fk£ÌÍš ¸Þ˜õ²¤F"'¬„ýHÍc¡¿[v,~}_A¥»G)c½—Ú1+¹,ã=23ÑNû¹™-ÁøêñþÊx‘dë…6.æo˜phœC~CîC:3ô(œ&Û|tàFõáÛcÞÝAQ6•™äÎ'„];™˜J‰ä¼º«‡’ØBQÊìx†¸ÔÞ|lÓ¯w=ÖËî“¥–W_úw‰I¢ÔÄ=&êÚŒÕ ”æ)¯4_F¿ç³ Æã `Çùƒ¥KTxöáÝöªKåxЦnÿ™û÷Ã%gv›$Õ_TÊ ì)#?&™¯Ì@êæŒhZX²´ Ÿþ ƒ—ad^Ó2ëˆ$)“Á_ôèW:a+M}4a‡]`‰dqUFg çÁþz<$x=Ò¢ö“ ¸9(‰UM*þ™2úëŠ×õ<ÞŒ…~®øVkøL… ¬Ù Ñb•ŒvË–S+—9Gæ3t´ã@?OÜ¿éÛ¥±ðõ×&üb6јIkH¤®ßN>:¨««Ãª·H´ð…W;¤¤öªªl¬… ™#õ!êv=¤ ÙDÐ)ÒX]XZTyÕoâcºŽHùÑïçVá d!׸h÷¬ké“…3ÏîU#,GüËbÉ¡Ö5ƒýÅbûvÎÍ[Ù9˜Çï?¡®®~·±OuKv’Qã¥WwóÚ[ÔäJ„}T÷£™rO VòYê,Ože¯pÕ·œÄjÚ>øõöœ·ãõÁS“CJ§ç%g|Ù¨ïÙ–Ù§W‹‡ÖZú÷hLÀÊåú=«±z@´äøpúråXa¸¯²|× ÉS5Õ îQGAÝ•¾~TÞu…eE'ï÷½—•)’geÂ?®Ž!±«?ÑM<"¢rй Í—$vþ¥áþtx–¶†wÞñ¤² ň†˜‚_ Ĩ:‹>Ž´KÇ“- ,;0ÖdióZn$ ©–;³™ºb{õ•‹:”eâ•™òß›ÇTT’Ué\¿súÚ æJiK^õ¡ÅÒàƒ¸@ÁUpà›ÁÛ¶~’,“OŽá]ù!«Øøž©³DýÁ^œÄUo2¡”ôòlzuæ…«ÍìMRáxŠØõàáyÏ̽$«ÚB´oK3ÃÇ ”{P­¶×ìKÔý+©[ÞµQ³¨Úùô›®ß¬ÓE ùÚz¢)¬úÁÔW‘ñoݧ؈M7Ï»’ië¯=#CÕÚ\s;µ×·š¿–2®›ï]Õ}4#dwÂÀ±‡a¸Â„ªÔJ#Âjh¤$}Ü ]m ü›F÷ŒÀ(=ÏÔH ·•ä.{%ê'O0ª5?¼×‘Ê10ˆQ‘Ù;0@–‚TZV¡“?6ó(7¿´*åù$zp  ‚P`»u/àý;ÑØµªÈ†AÕ éxgºÕÆ‚^]™ 23NFMÇ~…a»ã„Áõ²·}Ò¥TJß%»ÔåïYÅ¿)!È—.ÝÀæØ† 5ù ©˜¡ŽÃZëÙÆxϥ؇8T¼Úñ*¥Çs{e‹ ž^íIqÒ>"£@õi§Ñ;ÃÏcÄÂNg{xÄ’¿Y°Àt¹9bzâO8"ïKV ŽÞÔøóè’“j#ǃÆ¢ßpÖ4Ñü*±Aß…˜ø4jš505ű?‰/ë³=‘ܵúû8¿J˜]Ò'õ3P³7Õ9X‡8ßE€eÝv3dêŸP.7ÿD™ÝÖWÙ­Õ°ÑcgâÅBÚMxýu»ž×WôP_Ë,Ë7V™O˜h,&V=y Doz'hyH#íp«wgZï†ÏõWCZu %ôW¼£9¼DZïœÊÝodß| •zå¥Ë"!˜›@±±K!!ϼü œGûT$S>F‘bÒwí Ãʇ šë¯ZÜRÄÝ|=:ÉÐ÷÷»@A«§Í˜bIÀŽ ˆj˜iræø,Û»Ñò0ÆÃƒ÷Ȇte|£!Ïr›¼“úQ"ÜæüqS- ryT‰\Û§kÙ3 õäÌMŸ´€Í¶í‘ˆhÁÂí¼èÂÛf7?WÍ¿ m`\›õåßå[Q’üÔ«pï½ò?®ŒÅJofV–÷z}÷D:…åÉœå9Öþô×{ð¿}7­n:.ÆâíÙ\¢zÛ4¸ g§›v)y¿¯Ÿ`» R¨Ðüwžo$ ½ØòÑXæ`C쀤Äð—ó&:\ü­žfT_=qeýVò?&§¼ƒ®<&‘ŽCnùê¶á4â ’@¨²J åäÎcã¦ÑÖ»bÕ¾æ¥êeõ:B}:ru$^æ®f‡ I˜èÓtTB…¾Y˜>²³2óp“w€Ö¸µ“³BETÕ“ß´ü)9™a·ƒ®«ßÚ¼13"Ò™obÿ޾}ˆ¼êìrCQÝ(W oœçG´5zˆ9Jéœ$oîHëv±ß™ÂæïCAÚ%Úêh÷»L¬–?¡ò‰ú©'˜29b°±€%õaûÛìpI ÷÷ÎÅeñ½0r1Œù8úF<Ï“alÉdøÏN¿UP /ˆ×À Æy_ d=)wÃ÷‹¶=û¯·xg¤E¼ p£?!lSj‚5jfšW´_<4“$îâÅï}†(²Ì,çý5òøí±§‘O±K§C¨•7rÒmH1 ·c.ü}]íL8Ø¢c|PrÛ®,)Vçù˜ëhlÑ0œ“ Ýþ¼kÇ—+þ@GNVÿr îÔû7‡!ž´ aâ .€/2Dcß–ËÎI› >À/bGÉ%Í«6ëúí2[pû‡š.Ú&IÄ-?É"ü„xz;Wšo塺›—ª®REO#2!ñí«Y—SC€¤z¹üùîlùPûrÊÜ/!¹Ÿ¡ôf2óú€¡| wXÍÂaÏkEFý;~Ç¡U†~qÛó ¥ õÞý@j‹²"òIã|[¤xÿûÁòWF´!|‰5Žd'ƒc¶ÃÇE:‘s:Õƒi视AÔ4cö ®Ý_¾ýG‰œ÷ü²¢»æÖcr LU^a¦(™r}©r?²ãÇ®é@‚¼ßªÐ UEžmªÎ4ðû!»?«ÉÎŽÜ»þƒ¥X¢ïBú«Óÿ?2ÔÕãs9OÓí.zç8 ë7•ol:{|"<™“¢€ù•ÃØÏnúÁ›p~ѽåëp”ûÃÀÏ*Ï™i“ҷ؃:ËçžÊvê™î¾4ޯͯøž”¥ñµ›=šÝõ Íæ°_E3.ÏâÖÏCëà#™ìx±ÒZæ},#¾¡ñ†yiÎõö~ÜÙçXsÚøKFËcLK·#~Äw³#q9[7(þä2AA5A1ƒìÍÑ SWhŽ% oÔµ¯MTÿJ5@cvFñÛÖ¶îåg¢^³Úk;Âd­t³ýÎaš—ÛqœÙlÇöc_p„ÃNá+@ŠÙåŒÙyO©Õ;>nìã#ˆúÐÒóÀWÇõÝ*×r–é#Ï—4ú;Hzñð°ÞîÂÂouúýb• }úA¹5° F„£`z0𝡽‚F>á­è!ýV­pWÖýxúò†¼%6´Ëá“ßÂG˜ ¶,~i@E<˜ºŽ;+®È [’ŽG±Ú0e=[;ßÞ þ7öc¡ˆ2~( U È#*+¥Úvÿ¦ÿ§ëùÀQ€%­nWû¬ dw~{eé8º !Û%½›Ú-wã}w—)¸S@ã“äÁE१·“ÐçaNÏ…%'ÀÊ{0X”2íg™C®?=}K9¦ãO¤ýX•–…Ž8 ¡4ƒòœ#XNYíYU’[ëï.)|étAJ×f®/òðåÝÉ't/obÔûq3ç”°#–Ïã=Ñe!Lž¦J¡-Ýß+ä‚ä_Ó0žë‚ý€ß9oå„Á9§ÜêUDõ aÞ-ßb:þÇœfந¿Ó ”ÿÖÝIo¶žr¹ÆËÿùŸ­ å`Õ‹NWŸ•áúY>êuTÄ ©ÍÔkC¦ÞÃÜyUŠ)1‹J^ë †ϸóìG®k$Vk’‡ 4¦|¶¨$ªSU—Éa|}‹ÔÝ8n,áVÛñkP#øÈœŸ…¨kâw Ï΢Þ$µ'¥œ°UJc# äFêóª^ÃX8ø£/”ªCÓ1š6A||+ éÄígЀ ´œ9ªÿ=}¬ê± 4Ú&éƒ¯Ö í'Å!U}w†Uª·øÒ&Noív0c£BŒ`ËJ¦¡O}™—T¼ï8‚ôç[B¼ÄõÝï‹æ×ˆS{ƆՔQ{üâ4¹&WIcx­uµoƒ‡mh—èßeªƒaYë¾0?«/ù Yo³·Ú´›˜^ºÏyc¤à²ö ÈÒm=.¦î §ö9¸'Œ¡œg™ŽE­­zv>׾Ǘ½ô;J%ol†”jX5Xht«åmÖ… àš¢Ú‘Â‚DD=¶MÛgkøñVE©¼Y‘·p¶ñR uþàš’¼Õ—âšÎEªpò‰¥ì¸î¤I³dHÅÅ›,’ú<Á9ίةVÝzfÍ‹Es•øþø¯“g„‡I+ŸïÌ(øòÃÒ€‘ƒh”&58ÓzSaDÏdn‡_Ä(ÐpÈ©E[—²é µ%Å´)H>$L˜­ðR)@À ùjo­-«›þ;„Á ˆ¤B£ðîû^3Æyêo@*#¸Z>½í)ÑÏÏX…á±±{™AÅ#àf6¹ÓvuûüžÌu¨C…°þ˜Š/ÿ›¢ø*±¡õfïï.Ìã³2ðù×ìÚ^mhFQì[HÞ­‰»Rk®¸Ù±g’¶¼²Ô‡çŠÈ>cW„†ÈKIè… Y–Ê©TŠ9•†»Înx=lѦݘüQ*ô]ƪûp޾A»£¨3 _yÖ¿¦$)’â 8¶£¾çØp#¤–^ºO{Wš+}Òe«ã³½å>%"gÇwjË:ÊοuÃ÷÷‘‰ËháÃ! rÌÔƒUÇ$iÌÒê䊞Vp¤i"ÂÇÈÝ<Óq6KÛxPˆýùø¾Ó:<ÀîålúøüwQ¯Ýo£q‚÷:ünMõ©•ÿ;Ë ‚ ¨íLŒt‘"ÔêN×” öïJô`†U$×AÚœ ú'8z>‰8À–Q´ð)è-ãWéD^…gßÀ•–æŠo Õ¡gX¤±žÞøB«“r‡s7'Îæn]Vñð˜¼@Þ9úþ‰ÈÉ„ò»½¢^(g "ÔÊ{XbÅ&\à$ÈZ¥#+D¬» à#Ï?/2ñúïÄäÖvyðŠâcŸî÷ÏÅh}s.IÎ0¾Á¾¶7w]^ö9ÅÓ}ó_¡Åâ±°}_'EÙ¯GÓ V‡ÁèðD¾gÓ<€(É; ä¥iÞ%£Ï+^_zÊV͉Gé¯~þäq™ýÔ7>ÿ]*^>V\ݱæÃŽUðb(†y%­„Ô9âïô~(€×KvÓßÚ ø…›ÄÑñ·`çIN硎\|ŧš¯n!ŠêÌv~CÑ¥EHwPg»ùmS9Leí‘DBv*‘Ö«ßøH!YK1ÂFW×(sú¥®p†®¶ROA1¯T7ùÀ}`k–7³®äÂ3æòˆ»œOr†èq•Gn¾oH^ò|…{%KëDð‹}fz T²‡ÔÁºÁ=>†õ®|Á•cªm†t?úU†sȶì_ÎÕ]÷üÍÈ~N2~üë,µ‚Y–ˆ(ç¤7›ôú"i$€1grê Þó-ÕkÖˆÝÔ³˜h ¥nz/‹<%.°4 »Ñ¨`ÊýEk ‹$µõßeI\…ónÐÊ·÷îæ ŽIÚëãáXÁ8I=Éþƒz<ß#0ÂñŠÿ×’cǹÓ;l-yçŽÈœn_û90׫{y0ò¼…a§O„Ãõ­ ÓÙZ ?îâ‚2“¡Ú/~ Õ2ñŠ>ËÄœ»² Üî-‘Ã&Ñ™ yÒXûŸòˆ`xÚx FМª‡Ëò#à”A3nœŒþ1MO¨ð:NéE!Ÿ®63–0[¶Ø’¿1Ôµ@þ\/9ÍÏ,}—ƒµ¶•çØ!N„ÞÆcàÇ|v[£zŠ!:áMåðÈP[^ÜHîåþw ú7–5/‡…”ú0ŽA¥®')ªÏÃ*ua}ÂË^§ª+^2ÊAÍ£a PN¹ÐÃã©ïø %×Éùþ“oæ Ç…®¿úÙ¨šÄW¥8êÓQáµ,‡(¹ÿ¥­únzÛê3Ÿ)‹V(ß™ýÁE‹v´“”õ2gú›³B5Ôf´ òüÐ^øÜÛھȚ!Ûïøê3QE)Çà~‡›¾ ¼‚:woŽCq×=d«xÔ`°„>÷ßíSFW:¨Ü*¨¼!E|-=›ÚT©1ß·šI îüÑZû´ñ8QûÔJÁRÆYò•RÔ»„ çó%’¸ÓGQõ‘ïwô¿dÖÒ·Ü@—Ì ÿDHÿåup™2 ðÎR^\c:3_M™÷é#x†’]m()Ùþ›Ï”?d^\è®8]Ê&†ºïIþ#Ž;I+WbZä±~¨`œ`áiME´  ˆS”ÉëëL8ª{|€Ì“ÿZû<÷Í)»I“˜n„øã‹Â|Ÿ2U—ëÇËiVÐÙMp›·Ä¼3Wªùû8¸dÌ.,b’ß‚~gÃøó? ñYT1½>®¼ãf÷׉{º3¾àÇ}*“o:ŸðÎk»–õé Þõæž(P‹¸ÂNÊWº´oÿâVÿõ¼ý&ºË¢|å«øãž•nC™rÒªzˆºˆú83 ÎV_æ—®oƒf'SöøðÊ!ðß Êvå{Ýc½ªSÑü9–ÕDp4þÊšìá—ù×j¼”¬ìtÑ÷ˆ¢¶:¥¥±¼‚’_.w»j É þîã"—ìÚCzëŒ1Aè@0) à¨\ïÊËÓˆñ§Ós,Äqi­—Y1šL™Kõö6S¡`¨ ÷¦oï.2¶Ú8#ªëÎè«là³FÍŒ‹wëÇuT’‚àÊŒuëtÓÊÓ;£äê‰L%¹Ñ)óÌÀJ[›4Œl6Š—q¿">np åRüñØEQ$Š„Aì;¿ ^l^“Л_Ï¿àÕMíOü½O±wnЉMÒó*6NùK8×$ígt¨@m[»)Õ[O‡«äÚXðÙ‚‰ÐuUŠ6¸¥­¥ÿ÷Vïß¹ôÙh1ó}UËwåÊ á"m‹.¡ e|Ì$†Ÿc»Ë¾Z[°½üÉbe¿…œ‹Ì‰Ñ’¢Lò¯w„ü¸Je«Q✶RâýMÃîtøÊB£×TùŸ ‹ær0%0°ÕéѳzWò˜•ëöñ®ÄHx{C%Õê`©¿JR‚ ùè•mk3rl, ݱçÙÇ›xI¦t pµ±ÚéÒun14²ƒ¸ €±ÿr\:Š×¥ªýÆÔ:’ CñNˆÞõw!ÆÜ0æŒ8Ì$Ïu|äL"J(tŒÅ]SÌ‘2 TVüÇé«ZŽ€üiJ¾0l²[ÑÞ nQŽŠ'z6ÉÆ‚z¥Ä*k?X¯K/õ÷[zàiPŠa$æ‰4r¼ñ/Ìð#Ó¾ 4Ç^˜,=n^¦XžJÞVþ“ÃÃ÷ùM€mf¢Ó›‡If¡8>3‰Ö†õÛ¨RÔã#A`ª‘†"þ†g>½›2æl¼ë7ß ²¯§%;ª.w¦*öÀ-€—†•‚EC4Eº$pàÆ.Ì„ü`Ï›Úâ¯`Œï÷“V"ê±cðŽ;Óæ… ôZZÛî“+c¾Ws¦èó×1¥j[_núílüÏ`ÜíN~ì/ɇéz½øœÄ·ö©è u¾:âq¶PÿÊRx¼þJ“†ök%ÛtÜ]ÚÐ1+}_g)¤¥eL$UZ}ð%––.¾àd+{MMpú }ØpÃ¥Òà‘öS#-¸Ü¡ñ6)é.è”}¾o19¡•Ei|-Ó§Á'Ó@ëÑ›¦Çýkü"ö«a›)UùÕâ·¤eÓãÍéîÇr_ŒJ—EµL½¤Üš†[¾YóUñ-x¤ da˜M)Â;BøP*ÁQ<¬I¤ï(xaJ(ô¤<ÏÍwÅæXl’âú©niú†„h1†’Mu}^Ñ/aîoÆlZG›æ:ì«Ç§½Ë¹šCh“?D½d@»‚8ѵiïÄaëcˆçÎ`?,±smŒSmUjýãüè¾zaó¢éišâ³†¸øVl ÔD[kS^*Iq½I_¼mzüuŒ )¿™âRMÿk 5Åϰ{¿b%æÍ±æç×Ñ#~€Yå.(ZZLT»°ÚWì {$ÑhãY±U¯^þlìÇRPgÓ Ò»ü ɰÀ‘ə¸yè©5M ®X«0Ú¯âm“qé¶DH§¨ƒ–<ö÷Žìï•äÎÖ±fp?OÈÇgü½½§LÆ!äoÞYhá®’: ¨ ïX]äÇ‘›¾àþ†fVѪ$)5¹Àc:Yãu¼ÛQzLá++Üñ‚¦¤As”è‘ÞXÖÛ„4k%S3eÙŸI½%㜻gkäO™_¦þŽì/M¿ÇIÞ÷U Äïè‹‚>È—O”–ïüçKRÛºà'Í_[&ÅYeT˜k¬ŠÇN/oÏ]¯ ˆ|Ëh@±h<øW£ß)šrÑÿ:o²ày¾2áB¸öWCîîÞ«»‚JŽ­ëólñÀðÁ£­šhPܾY^xd&Ÿ²ütœ9½.þYÒç„S™õæ-[š¼…h½ì ì¹/0v¾m7# >ßëp’=ø(Éì­÷²,…¨%gé|4Žÿê†J„"A¬^øû]"¥š?fÍ€/8øJý‚ßDŽ¢¯ÚíÒJaQÛâùáÍÆºÂבùBEjøYf?©Š‘ MñcÖqo'~wŽFaòÔF ö¡ |é›tM¾æ'W†Âa'KñHØ9¤!„k2Â/QH÷¤ ò'f®…0ý¡r 4ïºlã²!pÂΠN¯û:à‡ëpQŽ¥dE[Òä¸TGøo˜Ï{ìtu¦ÙH+kÈ?³4…(—¶'夽ºøW÷¦Ñazm ;–k>RÉÓO®ÛL¢:F¬Š¥« KxŸQ¨ÙjBhi& Ÿ‰[s|Í’agøå%l {ÎnkÉ„$¸oP9‘î:C'rª1>jPØ@ nñÊ¿Gð_{ßÕ:²­û~~…Æ:/g ¨TAUkwï1È9g^öB€H"ˆ_g cc‡Õ½º÷¹÷.»”Jfüæ¬àCÒav€£÷bÛ©[Æ«I¾Ôfá½œÕÆ#¦ó•ŽN´çµZY'½`¹?–ãJ7,Ž»¥5²«ž!b-$&›ê¤Ü7kfØ‹ye¨NÖ™Â9[ñöÇRNæÉG£R9yL‡bÇrê¦ß×ü\~7(+¥éšYa7;-N ±Úi­Ý¾P¬UÍÓ<»;Q¾?8mXæ´¬,ÁcÑ{’™›®9ëÅFÞõ·³”°[NÛ”ÞU›£~3ämfƽ>ïžsÍLa¼1¤ÐÒûÝjmÐYtÜüŠÆz­i[ÞÇzN–jÍÒ\ÍÌ¡XÊ”“Ër]¯Xè–¹¼ÐíôÄ’B³å†a³£Õƒ\ÖW5¶ì˜´Óˆe&i6o÷K<=Ô÷A;ªþI3=l;ÊyL'hÖZ¢®÷¶±›™õøiÇÂÒtvô—™áÒxáäåQ…²âÎŽ*o^<3AÌ©¯ülÇ›¬”Fê„ëåí§–íÆ6}\»¹}±•´¥j6‹ü¦1Ÿ®öàOzÙñô˜êMy!›±‹''Ù®’“¬˜q2U! Ù {?YÜõ÷{×µ‡)½VŸ r d•7½Ýãýá¦Çc¥–æ÷z^¬‚î M²eì—Ö±³HS{à S½‚2œ6°XÓÌn{ÖÏûû¼MÕß޾¬jsµV*”²ÉÕ׃9›a:+JMÉÃ¥cׂÙtµ.6ÍtÓ£ŠˆR©ÊÚîôó¶Zɲœj¹ìÀ¢­Zý±b­‡Ž 7,—z­}¥\ óõ}mD÷é¹6Tå…Þ• cKo®ŒÓl=J“Ll jG|:Öí^2Vâ¡_ÚNú»Z•vuœ³)ºÚ‚iª?èÓñîÐRÇã#ÊéèÐÖw}¼hf˧j/·ØíWÁ®’­73í¡î×ÛZÑÐm.SmÙEÞÚðÚ²Ü&Ö¾xjúá¾ÅÀ8Ùôª½iÐ̻ʡÈRM‘,¹;ò»5oÄÚ&sÒû*åZ k`.A3ê©‚S5*…bfœí:a!–+ˆbë$ lî5y{=öð¯6x9*êó2ÚÔj–T¶çâ¸3,†­´ç˜Ô˽Yu3¨WFã.)vu?Ë«®¹©…“*ÅBR-Õ¼Ú¶†Ê²$† äºòï.7õd X]6w¶Û¬ÄŒSªÉxس֥¼Ü¹©‹%¬OšÅâyÚOj1Ë9ÊõíVPW’‹0Ö úN}}Úi]'«ŽýcÛØ¶*–³1fòVx1¯¥(Míä¡>܉ñ²¾ê˜Ygžé&ÈÜҳԌޚ(³Å`XIåü1±êg21ʨG75´—«b7é¬b˜^ÍÏ,9KµÌ±pÛ~ד<ÕÍæR3-•âÓ†á Q¯ÖçÊ6§—:ÓN5g³]’?úKu-›'IŸÍZ1'˜”j+’96׿Á®/wÕü¡\£S§¾\ðd¯-714Ø*·o(€L‹A+—Ñ;ë}ˆ‚€4ô~…LI¥BMÓÞǪlÆC¡_ßfÝcÅ-âÚ êŸGç™…Š‡£¼˜¤˜je2I¥}tS´v2êÅn¶Ñ;hÝÆÖ À$Y†SÖù`6îffÙÖüãóVlZó£ÅaÖ¬æþXO§F`æ–#Jû¹¶ªÍÌ ^pÓËÊy¾œ cõ¾ÌR•hÙ]+a_/•ʼ>ÙôœlÑx²‹Í ”:gìeã\LmêZ)™²f“ôdÝÑr7Ú¬§ý ìôEƒ§Ï«Nêtj7R¨ 4;åiWíï–ý>Nû‹Ê!•l´¦³ü:Ó˜äc WþÌñÎ)´ÀÞÞê¼]j•þnV?õWYûú6ßc Y™¥Ò=t+MËh,^æ«Ç±ŠË•núˆs'VÊÍ€úˆ-Vû»ó¥Xã솜§æ)ÆÂc^¸eG/©nN-£Q¬iéP®ŒõtÑZŽÇÕÙélWzVÆ‹™¹V[¥L82³å³×sÕ°bg»3mÝ)QcØXCœ>Î/WF];ÕÐ`Ãᄚ§žƒã`:lUN¤\Êœ*nÚ›§R½îI]jùÙpx{Ç›õæ­°<:W†«Ôb)dÊçfxš¯ÅöÏ*)»×¬/VúŽ7ôv2²(ß]gë9pw¸;<ÜÙÚCØWÌÚ!Ôžq¥wî•·ÉàX(­Jl~dË^¥]nç´½æhÓòûÓ^Âúý~Ò¯ô6‹pŒs6éú]>‚`içùy†T5¿¦6«…Ö’ ŸQËŸžŠ%2³m&oÖZÇüáXØ›jvØ:¥2m#•g»ó0ïp°JïNŲ@¹í4·…Jß*ùäñ0Ïs-GÏswV ÷3ç}åd–ªõp¸É…™Ú"S“±+¿›§£Sg9O'½™6—t0-É©¶Š­–Badp˜ïÚs=¥Ö«=³™YôzýMÅÜÎE¯ÓtªÐ^XÇš`5–NÅJU««†+.™éTûµªìÇÎ@™®=Köµ“Õ]‹am_“ñ,›]ñ\Ît¼+a±ìøáîÜ>ÃÉh—Q­5H—sWÔ‡­Ã±±›Cw¡ƒU ÜݾºræÄk8£ÝèÜLSÛONóÞj(ŒM?ïG§êh†Ö)w¾eùRÍX”µq£päáè&Û+Ë©*ÇÂNâ< sðÖÚ+øÉî–î¨ç¤ŒŸÚÌ^(b‹p€§†ŸÚ5Ó±%„Ãu1kÐ3 úÓU‰lª¥W&nª‘?šÁ4slm†Î`ZØ6´F÷T¬)¯í Õl²8¹X{ìŠQ'ÕL¥ÈðX‰¥ÑlÞXŽ7­M’²Uk˜ß+ûÓB†:¬…Óá54õç|ð[>-{ÓÍ2Ã(ë7·„•Z;½ÙzWk×5·×štKðC­ZIŒ¦µ|2P—--Ÿ×‚Öyïæ7ÕÊäl—h«d·z«Î ”m¼žm÷-ù÷™w=C¯Ò¢w^–Ç©Üxßqè©Ø<§W­j¦ëÏZŠg-Ahú^mÃñf7eáhã혿[tÌ8ƒ}f­ŸÁS2ÏÄzQî$wÖá”n-“V~C“[§XrýŒ¥€ã*¹C?3<´8ÚŽë꤃}³°†õ¬¶û³¾C»#æRõÆÄŸræqlR³ÔM ÌcÏòë} ¡š«8l9ÓlˆÚª»*ž–YÂmª±mòS’Ïg±Æz«¯a¼Œ˜2õ:zê4©VòiSµ·1;ã±MXßxåÆ$³´æt`ƒîÜ–×ïC4;LE‹ Ç4ïwÚ!Âb±™óadÛe3ñµzwÖ´ êÊ;z“¥WRz\Õ#ÑŽƒ3Ú.FZÊéWL[–‚j¹ÑÎ ÉV×^®³e‡NMoßu”Î<6[åù¨0šduÇ_¦†…³ó6—J¯–þ튷Y3æ&›ý@/7qáØÔÓ»ãL­¦}s·fµFrwj/œ­PòFª”¯ýjzhVP©–2Ý]{“j ËìxòUcÔá 3ÈŠ£ÍÁïäf›KæÛni’®ô×]uÉ›ÝCiÖP>])ûêÂb 9(9Dëó¡»gý}lµ íl­Q]2ÞN#U°Æëóf=¶‹-~®7ÉFõ—•õ8¬ 3…§úóÚÙkmª¨8Õ¶½p¸ð‹£qyä’ ˜±Õ³ÛƦ\Ûl}yMÕ&Ù¨Çfg.zaP¬–=OŸœPi<™ V“R›šV–Aß-º CÑÚ÷õq"Ö~³4³hQܶS£å¬m·N2\Ÿæó~¡gŠšQvÚºË6b¤¬OxÙ9ÆÎÛØm¦‡ÞÚëë&óú£RúTÛζsô»™,¶ÓúǹiWØdevα•eÙ'»ާGÓj¦àØVô²`9ú¥´æ š>ÍNV–O›Kª6v‡M°=Åœ^Ó>&³ÕñiVë¹iy™\œjo‡“äÚÖ¢L¥4 Ád@JÞØÛ¥Ù¸W¶—§Î)³0ýåª0^™Ëær½hf#/S7Öͺ-¯i,nÃãÉ>­×ûñq®Šâ¤0òb/öÁÈž¹~²µ•¼T¸K– ±bÍÙæf„Œ±¿Ln|³ft©­Í*ÇF²»ÞÌ5·•óÖ9½›ÍÓ£…Ö Z ÷NÐĬ٣"é%gØšγÍbF½íÞ-/ÞiuZa«8!Ál%&\›N&Ù‘›lŒEk½¯çN»]g§ZÇóRö9ëXÍv;¶[Óâ¾[_hjHôÕùØ9Þ"æÕ¦#=W¨.¾]·^%·+î^ÁèF?hvö‘Qů6×§E%¨Èš÷†íSe<<7óyð•íå¹0Ì +ÑËÝ| ŒI×­Ïú™¥Wèe{ª}°½Š¯7zK?]­Ÿ}¦œwíTpª¡ŸN|«nŪÆN«y¶,–i¹1ì0_L¥R)¿9”Y i‡åfƒ{Ía¯³ñ6ûuùˆòKWþ]‚NirâËpT+ÕéVT+{v•V¦Zé궘íjËIªQÞéÒ~4öÓBþµã~±Fµ¢›4+[D¦»â¾n‰rJÔ+Q>'Ç­õz›S¦¿0¤ ;=O{¿5 {þl“â®Óا-ÑÞePiÇW‡”‘®ív·›³ªž‚‰ñýQ•ÌyÏíê¾kýðT­Seä­´r¹>0vg•ä’]V\ñB++ÒSÊòô.¨;$`MvµÙiuôdsYÁ»qGäKÆpÚ¬ó>/õWv=mgÁ ·¬ý¶»!ƒ4Ëánh§|5 ·óLªY‹Öª=8™Öu©Ïõ|?gÄÔë‹Q¦¥× jª¸—ì°² ÝXÏ]åçV}e”Btîú^iµÝ~1W[-ªÎ†Å6Ùn,½ª2vlæò‡jžöôRnsÚLÇhï;]6¶;ƒI³l+“ñΨxe õù`vF+3uv;éñ>‰õY¼k~›Í|q˜ËBE Ö#\ª¶Ïf_Ë£ì¢0pô’zî/&Ue2wUä\¼ò¶½•ÚEƒ)K—ãF¥Ä!ª©wí•]µ;çüxt¨žÝm‹Ãr0žŸµ-ùÚÚ%ýUmU\Háãq{[MmòëªE³•tq“çÕ¬m¹£êª]ÞYh ¼m Ú¥\Ç·g ·ã•Ð6É^g>sSÛV‘¤’ÅZî÷kªµ ¬uíS„¼žÌ4Ërèq^äb̈åcA¯8ƒ› ¢THÕj1ÓIùõUˆ™”a€<ö*=[)iah™ƒ>ZVSvs•iï[¥¥n×Ï…úå^i{ëír]wìuÞY© k?·wÊqöê½Úzœ*xýêNçÜzîÌÎUn8•ž¾:àíètÂj£[K‹Fo4ð¹æÕ'3,õDÁlU‚`,¤u™;”–¬Wèžr)>olç³N¹·FV:¨Ãkìq@R/Óé웇 ߯bûf¹Xšë\¹Zëtv«¦e™XJnQ2)V¿+ßþK¹þ„¿So¾ž^~µ§¿³7ÆÜ7… Ëž/‚ß¿iì¶êÑž‹K¡’üWTþ[rkå9_¿]ß±•o[ë»é®×– -ë£úOžÖPåû³f¿ûoßp¦ÿžØÁÆØ>UÃ{l©ã§…]Ïpü™ëm~ÿ¶1Ï>ýš@ºŽˆ®êªüMÀ{œpÄ(NP&àç“„*GÿxžÈÆðW×¶åçžcþïßö¾åuÀ[ §ç[/†%kAÛšøö¯Çâß<˜ã3½ü \[¿›Ùëõ÷½·þŸÿ¾È?þ)Ëã.´máwôO?ðÜ•õÝqë{d«òô–<¡ëºX»Ã<$Q5¢¿d¾.XGB/E³„θFØMqð–¸qô€.„½!^RÒâñ3pÔ2¼‚gLmËy¢F¨AÏ,!T•ˆç @‹,¦O…!ЉT•©ÏS>!Y•DÅO…óÇ^n¤ óÚ¬ÿ‰#‚âŒüãMõÏyûr˜hô¾ÈkÕRöߌÿ;®ÇŸyð®Ø?ìC"B¯ˆ„_Ó‡RÆTí}ð€4Ú‡¤Ñÿ§?4ÿ×ÊúK~Þ! â¿äçs"ý²?ï’ÿ’ŸÏ‰„~ÉÏ;¤QÙŸ/‰ý’Ÿ÷HC~ÉÏçDú$þ-?CÃ_òDÂø~~4Ú/ÿõ"ýò_ï’æoñ_?8¿VÜ~ÜHS-NŸÓ|~àn¯µ/õe Ô"ñÛ¬ÚcþO>‹¹\ïû[òb6ãŸQÑsêïæw6ó­@¦h¯ý¨?'÷Çü½Ó>ºIÞ½œì_ÀÆŸª?Î<òֽȒÞ!d>úù£Œ"ŸˆE6úùO³é¶aþ†©§¦í—ž}Î6ô9ÛnVpþ=Ãô—žýHVš|Î0ýzvféÙ{lCúçlCŸxœ?§gú¥g?Â0õ ûÄÃü\=C¿pã23øs¶©4þ‰üsš¦êñ_ºö#á¬`Ÿ2 ‹O¼ÌÏÕ5õ¤úK×€m\|mŸhŸÒ4,>A¦¿ôì%ôÏÆ?ñ2?UÏ0gñ_šö9ãôϳ!Xÿ+³!Xÿ• ù†±Ï³!Xÿ;³!Xÿ• ùÛ>φ`öWfC0û• ù†Ñϳ!˜þÙLeC>gù<‚?Ë¿ÿ9=£¿"´örõjjÅÙg!õÏÔ2Mà8eŸÙÿ_jÚËàÏèÈ Tû q£øžÄ?A\Õfö:°¼ë‹×3(AT®Ñgš‡¿‹« M%HÏzóx%0ˆ“z“\;EÕ#Œª:zAÝK‡Ðüm†çÝåõ'â̬‚±÷}ÛpÒë½÷’L/ŸAÓâC¦Yë`í:¿# M“ ÷[Š~¾ºŸ¼ û.Ñnf…4çͬöZÌng¥%Ôk?:£ûêúÖïŠxÇ?… „jjŽ+ô[9Ë2-ó••{_Oî´0#ò÷u wRýÜ>¼Î€ &@ñ¾ ¡0W-.^lIxV¿ÊftFß›êi¬JÕ›]á•¥HÓ©ÊÄ[T'ˆóW:Kt®«ëwt–!ÅùÍVO¹Eӌۼ¼uב¨Æ/möÛ…ôÑ(Ù+‹x« ,Qu‚ÿ} ‚kàßÕÐùûB ˜ûq}™E?oPÁ§b =âˆó? ¶wzTÿù™Üšk{Û4‚Å-1¯e D.~ë®î{ë§™moÚ{yðð:È—§ oæ%O2*HO\ ÀWÔ„ÎÁ-è© ÕôAUL%˜N5Žá N $@eäÙJ®R®„xˆC%£pž\Õ~@ªž¢2Ey‘è‚%(áHPE>(£’.ÀÁS e"Á°`\E „Á' Ù±Ž/ß´Uª—Êù•¹Ú^(HÁ\½DüîÔÞ¿ßwjáÖJš¦éûðŸûºá8 ² ²æÞ;ÁÞ³n!ÊoÉ+W~PI0z¤$Ÿ…\H“«ÿ0åïŸò\þ~Åg€µ×)ÖùŸ…Š rö…ðI¨8®Åù=õIÔd2’~¾ÍTkfý͇¾) óžÃR\¨Ÿ­9XØBúC]ëÀbüãF0ÁÄœü)_ùìÊ`"~»‹ð?ãʰ@èrxéÊÀc@Ê IøQ_ö‘áÅœ¿$ÄŸ6¼Ñ‰ï7úãâ‹'¿/vi‘ÉS5pR`…Õ’€Xb %®%t¡ñq¡*Õ”8MhPo$À0ʤrJ°|Kå „– !©-‹°F1ƒv¤šjŽj© C-5¡rô@Á D…"#ÊÙ¢0B…Pâ8¡ ¡ið2Ca(À1Ó´á`ңဂÉv0g\Wâ'UçOZƒ‘.l<‘#€FdF‡)àv8Qµ‡8¡€ÏP`$ôh¾Ko ' 7$ßa „)¦ŠFÁIaók²sð|RäXÀ£a8L¦Ï.„e (¿¢ò=¯œC¯ÂÛϼÅ'îÇ—¿¾ùœŠ@Xí :ü©MBÒuRíïÃ^Ð¥ôˆ÷¢£¿{ÉoÆú½lÌÇ)‘;9›Ç[@hUaœàˆ‚ž“:Ì‘¶ØõLñD+nˆî³­›AL"@MŸédÞ­g¾©ÝñbÒ@ròòΩÙ?,[_8TPx‚oF'3X‚‚mR5ô2%p‚iˆ°›° J%2ĺøð”ÄOT@©œòGž\¿Å¥g§â"*? ®#ÊØO8HÙö¯UÚˉÿ£};„džëÝE‹+ÿUs¡3Ï5꽇°îÈ/Ò‚´÷áá]¼©ªã›”Ÿ'BP\ÿÑ~Þ볦©„Ü'µøˆÔ_‰Ù›îô8ûcyí»ðçèè%Óo¶”ü« ` ôh!ˆŠ©®ÊÑ8ØUÚ h ê¨7©øÈ i 0‚½´X* ¤ßž”–ÖM¦YU~“û½ZBðê n¿ï™þ =ߦdÞú~³íôÏÓ&/!~¤aBà#º ×Áêèl1„úLš` %4ÆÀ>“Xz1vƒÄCù5¡þ¿Ùw,]"Ã1/Ý'ÑNžM¬ÒO-êŸ öS>ø#qs‹ÇŸ'¶ †U{önXc@aÆ|Sbˆ@š5³—¢{³uC ­úBXoJ)E2´PÅUJKN­™}z†´ÆÆšlëø_O³žO3Øs+²H@¯ `{|0q½©å]±èçÅ£G£%ó³×1>±G¶úô\½ÿÜ_S÷øû7íõóënd–˜C¸¡é¯ŸJÑCšÌ8‰'KóüP "„@º<åóŸN]s¿VÅ÷ŽnOo^ß{ž¬°6B fýï*Ï×d´ÆŸÞ{Z‚º)óîqîI"ÞÞzÝ|ߺ›û/*Doíí©å¿óž|ŸLÜÓýçGÛZƟƨ½¡Ìc§›ÇèÂ>Ö¸¹|îõ#yǯúޱÏ×îÄX8¸q²7öÙšÞé jC Åc FàÝnÕ¶ßóž»iz–JXÇ Û™?[ÁýþíÊמ ]ÏžÛŽœÞ³®…áËB_J®3‡ªT†èí£ðΣ«ªÈ$í“)ŠµÙ¾óäFA´Ûê7åä¶ü±ïgQ”ƒíÛ“µõ‚îP×1 púªTÒø±¾¤‹´|¾ë¬ÃÇjO–÷ÉpDBwC(ÐŒë²ÅóUÚº¾})3þ  ™³7á’dWÔ¡à1~B/üÓ4¬?€yM¨T'oûœŠê ,ô¾0OPp 2ƒ¡“ãðùNg?]·ø[ò­ÙÊ7V`LÀx¶Áסë6´ß¼éì{;›‘¦ù}àzO—‚›„ ÆÄ݃?Poj~—®ÇþÝ™ôóØi³oðôàEe©Ï^šõ@öž ²´‚í÷dr»÷Ö ×›C#ðÏÆ–/%;½^—d'7`÷±Q;X[ÿŠú¼|¼Î"ù8+X½™åoÉ+¢oóWfamL,0*Uû`­×®‚ÞšSw¿Ý¸SëÑV{&ï£í~ìó6øˆÅŸ2 L•1AÿyY¹¬³¾Î^Ò”—”áó ú³ç¾äq"™<ÃŒ( SˆÃG•(D$mEá,tÅSt‰(¥$¦b…@¬Å!î—ù5]GL(ºÌ¬iT.ö@OQE¢)€ƒåš!‹Rq ªD`W“PM¦uù¤É—ˆÊˆLr¬!®GÑ54ƒ¡ùüJ©¢C¯Ð j]&+™¦h BoLP”©—"“Š˜\ªGÙU^Ô)[&šÊ¢¹ÉDv…4õ±'„ £ÇÑÁÙŒŸe‰Ðƒáë É®ÁçCüß…œÅCl¬Ì‘V£ôŸN/íÈ5'5tíJèó ”¼†±Þ]çü0 x ÊÖ ÌÛu¨·—n"ÉCUÐÇûLÖv¡ZÄLlV”2¡ N©~s+ç ¹¼vñ^O£¾‚og#çÞà—¦ƒäÜÙÌqñnÒ/פlFÔAÈšQ&]˜@ru©B#LÉlerÁéªÊ£¢èzÉ In\‹@.LòäÒÅœËBˆ~Y$ `f$*#LÊ~låR£öØ£üÞfˆV#v?•´ã4©GeA0(ƒP0’*MN' A5©U²r‚5E¿:—c¹Ô@é]}š‡T¹6*×KaDJÌ‚Â|O ¦!¡+BµBœEéêË48zÔ¸L$•*Cú’÷·EQ+Ñ t=Át¢Sí¦H®Ò})º’8s)R —†AÒ¯¨ŒhXÓ#r..~RÔèWîÏÒ¢8õYrU°L®‡èˆË,P¬ ãËõ™´Ž(– W¢®¯Y¶ñQwê¥',s lãDDU„Ž. ï"*€°–Cã.ÿû¸ÕËèTá—×WíÁŒ–XT¹áK@ÿš ½Á(_f„Gsø¸-jTn~‹ø ŸêQBU¥Hz„»Dÿ³D¦úöU&Bô‹×@²iEnÊaº½AN"otí…EÎIƒe4+·Üé4r=`?pTCö&w+°‹ý¿ª ‡¨èâ 1Öåw]0ö8NåÂmùE\Â#o¢jˆD/ëâ2)¢ÊÖit[Ÿ_žkìÒDÙÏ?UŠ\G“á»/žKÅà˜®<‹Ü6Ô0y5" h8Ö@«4]:c¡ƒß–9)PS^`#xHðù‘·ÓR#F°‚¯$Äҽ頉O%ðb$§q¦ƒýåŸqü2ÐGuâUÈ?Œ Ü#ŽÊT¦òHÅÀp©øbE.³’j—ú yétq4 8ØÀˆ…R`/}ÊGÈE®sJò ¤Þu%~¥²zY¨$=Ö†D»-©ì0*â`¦ã‘ª7Žü/r±_ßuó¸¶ Ž‘ëòbr¹J¤ê,²!L‚:qu„ÉÅU“¥ÉfÑþzA#Q*ÀPèRzu9ÞèŠsL°€~€_Àu(Ü N1ÅPGú#i@ŠdàÄe!0Aº‰ްL„ P6èjK’Jã‡Á8>—000 F¾V.,ˆ„‹‚„Àko‘&Ÿà¡W{r¾¼#ç=>ÜY„¶’8y½ÿŠ5º4˜? °HgâF¢)o ‚¤„EÖPzQDä »vq *x>@¢ºˆ–墨*mxpw¢ ëŒàè+xiƉt9ìjÉTþhr±‚XqzÂÒ'EVI<7òXd—cÄ’kz1w:Q±ôÒb¡} r"G¢R È&²¹œr.WÕ!4ÅBZ!¹Š ‰H¬æ@=HÎXK/ ­1i ¡å¡àu"kU4ö\B€€†´G“Ä$œ'—=’ÒH¿è2Ö/q†¤(¾™ÝÝ‘2—?ŸGýX}Õÿð(žC ®þ½"‰E’Hdœâ»2 Ɖa¨]èT ‘àgÅA.@hžÜ¯*Ð)„aTJ,Kȸ],‰†å–€çš|>b,›®`šÐAz¤_…¼ ê‘£³É®F$(“ÁµP#ñ€QQ$‡L£Hšu€°äQ¸ÀÌåÖùŸ‘®7‘=—qüóÙÒ¼\]&ò¸úÆÒ|î<.Xø–ÿoD† ÷[’ÛHâ²à÷oј^n-ýÇûóa* +Ì?LTÜlUºƒÍ/£_§-ðúÝML2˜é r;X%^QZ™ç °?›˜€õÏ»˜@tpEä’ËNJ\“Kàª/É Œ€¸³“ Ë“G¸Üƒ¤cú\¤É…E(óA“;ƒ¤`‰À ´Ç TF—‡¡>¹-’™„©DîTbNx ,›ÜÝ àÁ<å¾иh/’[HIãIr»ª‘Ð#°Ö\:ñÈ ëðÁ²3.Í1øjö”&°©Ä‰P Mm’­"äÈ , ‘¦ÄQº„éÐ×CÉnÏý)CyÝÍôÂÒ(¸íqÁJƒ9cªG`¸¦K=Ôd,LTõ`ÝþE¹üÓº¹Úèôû7pI€rŸqÅu "Ê Ë}qOO®2E ü2Ó*{Áü¦•7ÊfIêÇ5GLa˜ø¥vHã$«q)÷ökë»u°€NÓ{üîNî/íñÎ\ÙkºPP¦‰/òÕ5\.»bü.ë¤×P‰ý)湃œð{â3ó>…¯uâG1o"p§ïšRÔ h”Ì@!·ÎC×.7i2¹–V9*ƒ(jMR %Q%·¨a¹¹%"zD…:Ã2ÕúÚ˜‚m‚Øq¹ B3 ð%X“!ÌêB<%Ø}¡€9ÀI$÷©ê`Aå¨tAÀ$<—¼kQ¥Ñ}iRù»&•€'ò4%–ˆ—FIf5 y„ phò¼¶¨Ü’H[fƒ™<"9À:2ÚKqü"ÄyëN K#âOøSy8ðf[Äû=Û‹)8;F¯û™Œ‘µtL À!*S+_ˆnïom¦ñ¯ýQ«GQ aBéƒËí!˜|`÷"ÿB"dðÃze2 äGHSJg(*pÁ)èÄ9€#±Õ%zà€dxA¥(KŸ!Ó42pF<ÂyÉ|–”7è„E‡^4Uà ¸RàT¹q8.O´ ¶@.Þ AÞEdàªG«`P"‚¨G©z‰#Àbò(’z+QRÆ}Ic™8&X¦Õ/™cvÉKG/Ä/oÜCßÚÝ{Õÿ˜†]sg_гÈÛÙÁmÙÒµïÜ×µ4ú²¶áßɵìµzǧ†¿0<Ïßs†—£J/‚ËOðàØ5ãya3™^Ÿ¿©êúûo¾ùnöñú›ªªÐîÝìíåÅ»³ù÷Ó©xyq>ºÝŽîfçºÑçg«ê«êl}üqt1¹½ÜÍäÉ»ÙZ•§—WËÚìÍ'+•tÎù\™scjÔ¨gŸï†Ou÷Qô±ïQ£”:ǽUÍÃj½}ºÁPlíŒÜm·Žá¿ÇÿËÍlò8½]áÉQs7z8ÿñï?.oÖª¹|¸l½f1úv;Sr7¼ÍÙù¢\žÿ4¾|øj0I.?ŒÆ×V×ãËwgø>TëEÞ.éH5Ö”ªó×¶o¹Ô¨jšƒwR¥C|×]N.ØÃwgÃÇËñ¤~ª‡—÷· šþÒ}ùäñáþñáçÑÓÃ讼 _×úT¹-Ï5ï\¾`ôt?™>ÔWã›QiñüÃävt~?¾Ã·O'øq1;Ÿ<}¾ÝÕã Û9ž»¾¿ߎoGŸï1„³ÛáÍ Èêɘónïï®{Û{º¼Ç$ݤè{+|nWø5¾»]ÍX³Ì¯0 Iîá.i4œþy:¼ƒ}J½R³{'h«çÏà©ÙÃä~Qw>»(A{¶*ž\]ÍF Õ*›=|¾•ÚõÅäf2}û‡« þýVŠ& ­ñÃç·ú¬:ßÒXßÿ®¿¡§#7&zÓYoçýöVWµ\ÿ›ct>ÚÎ÷÷õT®FWk=ýöfmîm6+mŒrnw³#;Ò#ý¬fcO³zwk£‹÷ï·Mèwç]ÂÚM‡ êÆ«oFh{xóiøy¶ì€·¦#î?ôPìv‚¶)¯&ëz^ø»ñ$ôãl4ý¥Üÿ½ûÇl´QëïÓáÝ "õöÝÙíða:~ú#‘Ö9ù4Pø»º‚„MÙ{§¢çö!¼Yu_¿;K¡‰6¶:ó…Ù6ÁhV”údPê”Ñ­º(ÕÊ4ÖÙ¸"ßïØÑáÍ)GÓfmkßÏn#¨[.žÐ]°E«ä3ºªUc¼É+b¾Ú¨wÕ[oŠÂ„jÐ”æ  ±*Dëâ|BWµ‰M²Aã—µMÒÉ9ýæ@2XŽî3iµ‡Ë !éäÏ#ï–¹ nFk¾vÇIÖžöT_{º¿½XÇ}Œq3¾ÿáÇ%™Ì¯w³"ÛXÔ´)å:¬Fñ¾õ¶6¸›\µ‹'gü;»hwz5{ww˜½É´¾xœ~>ŸÊÀ†&ÇÓÚ(ÙÔGÀe7oaüq]ŒAê¿ù–w[ü3{˜Nþ9ܵ˜ü|A^ók<ó0š.©”üQïPt?¹Y1¹«K ×ì?ÿüïgG‰…ò¨ÍªCÈW£?g³ñðîßo§½´ÚÿJÃå£cé˜ h«œR>¯Ñq·’Y[CPºõj“A±SGûú”Z|çL´s¥à´Ö!elh|e”ŸÆ$«Ýš’6 4w]% £%é¨BWI;¼AAÓo(ih¥÷ª‘¾Qà0!µ{õJ"å¼KI¬„»êJ¿ û`Ð~”rêÓ½èÜXãùÏ?ÄÖæ¨†·À龆SVÆåܯ•¯w˜#ëCµ±Š­‰}5m ÉÚÔÚÕÆ‡«Ù^½}A­}qÑ£Ñ,Áͺ6Žâ=HЉ1™dâà²òPWÐbt ”N¢J³ P»ÓÀðàTåt\¦~ ÐHÐC9©ì@«Øƒ«PåÜd§*3Ä4^öo꜕¤ )€»¶(3›µtš³êK 4(¦^ä”Yõ×òs«>[À±®úÚ®²No@Jš5‰ÝmR½šFZa5+4ðt‘YÑ(M€`¬Í+lO3ÀEà#—ÜJÎL¥Ð$ì!Ú±ÁF&) <„Ÿ|€q€[¼öšˆÅcÂµŽš³Éu:èüËó1þJFZsôØ~-£í`œ=bè+€-Ø€ºn™×ïÎ@(èòkEá ¿f“}„hXÕÿ,õ½†ªI-‹ŽOÓ(㽂¥~z4ÛX;]Þnø>ÛšØWsÎëÔÂj›tí¼q- MTWìN<µ¢Oâ¨öM(M³IµTé œ6ÊBm¤sÀ¤È‡„Àì”B\@¤ÙðæxÜ6‘#pÅh ÿ<܆ޫz~Zñ_È=¹Â*N]¹·9þ}n WþÊ?Åà3MÇD9@|!œ6¯Á±”ë>çîËÑ°ßÆ«ÏÿX!kNºZ¶ÉRÀY“­ÒnMÀ…že¿!ßhJ%@}úÁ¢ùdÚîSi«¥úìƒ5ç^C`7€Ž18¿ó‹ÐxØöEýH®€! H§V‚—¸ÉÓ¯„iîB,×X—|îzd7ª^ôVÝ%Eµª]y¾}Ò6ÁÆo˜>!è‚<µ6 ª¶ãKkZNýÚ(ùÃm°×o_º}]à¶OÁ±‹\Ëùòr<’3Zùb28È=˜4R °Mh2DŸ’  î;/*Z:5!€.í›5z³g9þ·ÃÙ?7ù{?±†Ëlõ“zYÒE“è¶v1|»ò¥nþº/uÝ· VwÈ!  Ü :ªñ¹É9ØÛÄÏ^{`Õ´¸ôÕMA¢`p‡½¸Ðѹ>`¸`ÓAýäl`oã-–st°ë³´óVÅÕ9ÇDG5ŠU¢½·–{ÒwAÁF´¨æmªL“‚ÉAjcç-!ŒrÈïDëТ]àÂŒ2˜ !yqøàX 6¤-%0+­Ž¬ãm櫚”`Wt“~Å0Èòac¢Ž®åŒ –ù2òëË/ÊÒƒSm÷R§ÊLœ*ô«¬ø›är$Þ™{¸4JògM5àí1E‡ Á„©Þz“wªï…M[%ØÇ] ç'ùÌ>é‹Ï4__úvµhôm¼Tú’·u6in¥¸D— ʪà BLB¥´.hÂ5ý¨-upÕrп†O¹ô*Ë?6*‘¸€ ªã(‡ß¯Ãjj-ÕËB?W4[¨Cj`¿ë`T7(ã¿~úë_~üY»Ÿ$¤c–®®’:$*ÈZíÖ ßßÅã–B›J€°HíΦdú—$LjuÇþ„̾9ö›<ƒ;ž’ǃº_ðx¹p¾QÄOÐàšR©ºþ ;~‘M·^ØwÒƒåè:ŽígéÈr«Kz²×*©´…° œœ­[ÇxXÒS{D¶·»;ï $C“½ýMØCš Ãt_1mkbÇjYkÉ­m"niÂÿi[q{ßî~Üöö#=W¯eôkE„œ3.®}üšŸ#]oõtôó«8€³@çÜå-oš ´ÝÞd@˜d”ªën¦1°5Ô±.ä3ßZSo»K“2­Îû¨…Ñøv­ µÙÓ^ Vð8ìØ|5R-žJ¡–UR=k1ÚÐP+£¸6mV&µ"pW¾J‘âCèaØw®V¯Â Ñ—£ ;™í‡c™a“ñ–T»#°Ñ…½º ‡PAŸ3É«–þö†XlÝ:ÔöA{¦Þký|Éé½ï,èœRrje²Ê»}ÞÞ‡öÏAý0 G3(ÑÕµ—t$piCv†áv[-È@¬)Ì.Ê_Ç”V·5P¿4C-[ï ":Üz89¾1°¹J)À´ê^ø„¸kq½U¯¼ò2çíÓá•·6ÆCǘM¹mà_0ër;Âøöns ^iÝÉAëÐŽ‘8åJ )¦u9´¾¶®ÓÑkë=ëÃN%µ¾ÓNÀ¿{Ø™zFïko8Ühž™èĶ€†Þ†©bŸç¼ZyÔÏk» Œ]—4b¶ 7-Bßèì‡|/³ÈLŠæ¿E¶3Q ÁÕ{Ì%{qµ·Ä"`=í5mìð ïs¶jØ+†·ÌÃæŽý–ù&Øßbôƒã¥vú&Äï§ vPÅÁs´Ç hµöËÅaU<•QªÂv¤ÔÚóVT7»Û Xé íbz1>`›nï²9eX}ð1íöª¢uÛA¯ÏÓ0nê­„ØKC£6W.Ô6ïÔ­z©îÛ!¸K]Ë _¸°2¼ºrqC;Y“¹w°v²Ùí‹Þ>ME;å¶rúy´J/òêTàw{‘÷Ш–™ý:ÞCcv…ó¿Ô{hܱa³ÇDŠ9cÖd³ ÎX«mŽ×ôZlàxcœÉÉ»Ùì¸èÖ :Û¯H^)Ë¿ÙÓ}y¼¬žCTûs}l4Ê¿(RIiW¬é©‘ŠV®öÇÑþFœâ­®…5n‚Ü5Ù±lùx·’å~‚î q¬ýV‚î“Üéö\S•¡Ìû=Þ% ¹îÍU°›úcŸŠnë Lî“ñ=ÎÝðè]ûÁº‘Èuèia_uoüó³È{µÍ Kßû¶îcزïa}ŸDkYa¯ä=…tß²¡VÛå{ß®ˆ#Ùa}÷Ûæ¾¶–Cr÷Ö¸ÝQv»¶s­*ÿF¶°u·èuýœnòÛà¶uÜq[l·oÖè{cÉö0ý¯#ËMÙ¶» mw÷Åvð;÷Óž0ÛMÙÛ+Z{wÔž0ãMÙ%ÛûÕ¯‘õf °¯ehï´üE„nI°¶2±?±À ¥nÉíÑöü¾TênI QïN ±.”Ïòñ‹fùèæ`©O ½È ór•"¹}Z]ÛolILÛÓŸkáø%ÃÄ ÷t"I…¶ý‹”ÏZûyùvŽç¤€êÍ3ÕŸ’j3uUŠ«ÍTXÛ²gµþÞT\‡PÖž(Ènò°¶›¡'ÑXR²¾üe§O“öÜ0­"ØS ËŒèfæ/>æ½ y 0‚í˜ëp ¼ú5&oÙL­¸ú§Ì¡rDò–žäŠ­Ì»Ê'NÞÂDŒû·=ý 6º°~ˆpxÎFÒ¯¹ä„1÷WqïÀž0íÕ<ÜÞ„ˆA¥:Lš"˜öÝq´™ÖUð¦3ŽÐÖBºÎ@nֽꭋ‘„–ÁY¿?*ÿ#ÙYyëÑmÍöòí &EÊÇ<QòÑ„A&×Îõƒ”²õÙ­å{ÙJßIÇ­wayç»D>ØÁ0€ÙÓý`X2™‹JºûÝ›uK5P«jýŸl6pã«Ý²“n¸M/ö½X­aõX7ˆ‘Ñr ¡Aà†RØöÍÆ(ê¨Ö—†`°¹Ü.]ŒâZ]”&`6qub"ê ÊêÅt:ý‹ÖØ8Eï¬ÑÞ ll £aG¬i †ÐtÇP8ÏáÿÎjÅô/­íC2„¶É&B2v ‘&(èо*–`Àcy¬JxŽË)yõÚ×K0MN럟¸:ÐùúUÕ“êÁÞˆà] 1Rއ@)™Æ†‰)óD?*Èrîø‡³Á•=ã!:£<ˆ ƒˆº:Ó8t4k:“±«!ùµpjèL €ÝÕ™°Ÿ”±íº%Èú“9Ï÷ ìîÓíúÓ2Ž&¸ˆ>@M6Óü¦±f³~‹[`„Çh=¬á;C1•K1Ö3B§YgŒ7ë^õÖåë&g±ó_‘¯ç;…vòõé4MzµžEch“ºâÐÈš¡ÖÝÔ[&s‹¥ÖÝh£›˜`‰wsl¸­…Q™¿ž;a0nÆÕn‘Ì©”Wvcm6) ¼½F—הЇ²å¦Õ®R±$_¥SW1K©k«BŽ¢ÕÉÞûø*öÅÎ=½ÄÓY¿ž=½¯@mNŸ.½ }\I¨ãEÂ9¨’ÛøHBh‚ÚJæÕ¨í+‚igN©¼}‚ÞÈKŠƒQ ­íÓ2ŒQ¨Yí«ò¿–ÞKŠæ”Ipò-. Ùä4Ì/ä6`‹QŒÇ°®$¿;ö@ÄÙcwün‚lËcó½ü–LgO© ~7Aö˜ Ða¿› _Çq­ìXÿª&ÈWtÎ;w:•ò+tÎÍ‘ô§äñ_ÝH~EtNÇÁ¿ txì*‡{Ö&ÓõUŽtÿó ³ýF8).üŸma„cÂoʈ'•â¿[{,ŒxJ÷»…±‹¯ãéÍo‘ÃÅß®Ûù«-r¸x:Ûâk/r|wÎsºå×*J}x;ºü8}úfùÅï‡ËÞ߯Ghˆá)QØóï'ÓËÑtq+ȟέy,âê4õÖlð­ËûªÿþìÃðrò ß°~óËdr+Œ$Âúm‰ÜË 3î/×öW7©_sµo¼örrñx‹YªËdÞ?m<ü8²ÂÍðó-ÿ,èruPýò¹Öaõ˲هɧë)Çøaú8Zo€wêûÉøŽí·*ÈSãËÑlËs¼W¿?yê¿ÿi|‡¡¬—}\b´õ‹.Ç¥B]¯ñ´Š^¿Å¡Ýxlv7¼¯¯o&ï‡7ïή†7³m»>oÇ_F—= ÈKHóÏ›³|gÜÚûg\ÿi:¹ýéH¹ð·ÑÃÃøîzÅóÜ“ñîìé3[N¦ãëñ?o9Y‹ÂÏÝ ÷îš|È0½yësÏ­§pÏå’‰ªjt{¿åN‹?L»z«ÜµËçm¯¦ª>Žgã÷7£Q îÝ…—k¥ãy}Ž 5Çlrwóy^m)g—rCˆ®5PàŒÅ–ÙÁ nÞOfãRZ±Ø¬ñ¹µ‚Ó%or¾•¤è­@CŽB¹ ´…õÑm¶À˜jK tO[6A7iÏ=IÑA¦àwOcε¿›RWÊoGÃËáÃp%‚%À zAïÓË«·ÿù㟖¡áoÿßdº<¯†ï'ààåÎÔ»¼xK­3|ø~| &:Ÿ}¼þßO·7PËÊäÕKËk§ †ÇéhéÃÃÃýÛóóûÇéM3™^ã%øïv̇Îÿö0¾¹ù i…°Ï_:~¸}/m–Ÿ‹¯8ŸÆ2©×ê+¿;_ ƒ\]¯‰…›áû¤Ê_ÇG77“JoŠÓÉãýíär4—Õg«áËîy›í]}ç•€0Pœ/ç•,²K¬íé+Ë&ÀÕ‘_+­]v÷Ù&8·ÃÁ@âa$ÐØÖ*W9Ø6Þ•óaBHÕEÅLUÀ7óãElå÷S–“$›uÈUä^9ÃH¢Ä|Öüáœáñ ܯds`»¯äŒaãy`7ãó‡-g‚8·ü%ktвe¯±x‘CGX꫈V-}.uäöÃ`*@‹ kCËÞ;æf̹²®T—PJÔ3Û2*È·ñ‡cSÚ¨yKZó€“Ò;ü`Sè?ÌGÙèr ÝA³iƒNFž¥’ùƒÚóP•²7Ü0TZÞÃ-ä´M¢Y ô—Or®Ñוì8tcßž3NVûÊŽ?0,N¤mØ¡ËEóE{-{]¶wl~ 1çã¬d0‹ œžc«Šv£bþ‰´)£B³ƒúC¥ UXÖÜìT6.°ˆ;Ð|àþÿåÜ3À—í^œEè’§Ø,ÞæmJ,tŠÙ;eýì¤ÌÒ‚¿¥”$y_˜Óo«ð‡*Ø&[%Ó½, ƒWF)‹4™«ä`”ðs¤+(B5r i]˜*Bçy;†ÉšÀôUTËï 30ÕÓÐ#DŠÃWx|O¦ùmtŽU6<ù;Ù€Z>#é9Çý T ›(¡­ÌóžBÒòéTŒ<·!zÓ*ÂPèu—¢ÅÿPŠ`§S0p “ÊRæŒ5Qæ0Á:“–3ú×Õè¶&™{Ù) ˜`­ØìLj—t(ãKu¶&+Œ< ïÍKò¬Œ i)c7€9Y +ÒqRÆ„ÁòW¥ä¯ä†åOjE¹ ’"p‡sÔ‰[ÏxØ’ƒuší@Bðt”kü`1¨7 ÌwìjN•–l9J'—¥JŽºäÑÈR³MhA&nPþÙýÖÒûBG\*Í“p”MÓŠ™y²œmD(—‚Iò »0òRzíôü,Â#Ù%©¼¦V o©xî`³ˆ¨n?ÀT\*­¡ùêŠ aBŒò„Óщ6Z´D9¼0y øET䇕lMß*òÁnèŽSºhCk#¯#¶*ý¬Êló"—›øÆX¼dÚÉÃ1—rŠoŸQ»~Js¯Zi,š¸zù²ú¼+Ü/)"m™î¢¹”…bZÌ™¨mÔfŠj%g:ÉÊD*ã¡· ‘‚ æÙeÔÐù¢í¢–£áæ?leCHŸ©‰àÄeIšŸbV‡8?Ål7¡Ö-ž Ïx•AÿèÔ£•2`%“Å4,+R¤|Ùîÿìx=•®•Õ2…ªœÄ†çcž#f.àðè¬É7ÆXÕ‹QV%õ€Ëz^;ør^™gƒåd5ˆéZèPµù+©ØÃ“è̳5@1&î¿ñÜù­bêru.aÈó‚“)²ƒ¤ÓÉà /cä}† ˆ¤ÞÈþZ.€ZWAýÐÍÂÁK* 5½õV΋ÃTj ¨ˆ†Sb!&ê' 9—´%`rNƒÙ*+)…Ÿ…p\•˜€žßTe „¸<(ÄúäÔZš>(ÇÎÁv¶ÍCOZràóÖ—Ù(‚ÉqÝü@&?›FÐÓõÆu/ N‘cÎ 3?2šH4æÅ™**Ê>hp'ÂÝEÓç eäÁB1î¨rÂB’©´8CÐ@B¸rˆ øš:I¤R^½d^Ÿd«Ãü™³¦1¡EÜE§,µ´…m¢í{Ð {¢¼×åÀ?“|JÌ“ÓÔfJ!f&€@rÄê¿õ œ¬©%ñ¶„k,ˆ Ì ¢ËÆÈI†ÐBäþe‰ãñ…)™¹H „ó.,ÏÔq~ö`,vGÔ.9´Šz¨,‡Þ5ÏÅç³î!„½°zËÉ…Çöbeb$õuIÒÎIÒ‘Cò¶—&!œ‚å1™Ü™œu‹$üF5èD³T¿ŠÊ'G3¬mÚºHc™Ô%p±Äðü´’-VÖ7ÔC½ŠŸ¨(Šb_h×8‚2×Y y W^[9Û2ѨDß# ¬›Ä$wL/¡®ãO"Å$¦ZmHšýÊ£`áöüoM†þ711LÍ‚wgÒ§n¦¸7Û¿'( +›v:*Zɇz°yIÊ·î¶Ð˜ë­i‰hÌ€:AÊT ·"%øEf§@KSë ˜¬E‚(O¶EâןçôÚ^CÏ›¸Hµ¸Ë&³ ÉK@¹o¶æëú‡ÓvRË ô¼»‘’N.§7£·£#0ç徇ú~Ójs©ÔLèdøYô“k² 2Luн÷%Ì„Ò8˜Þ Ó§v l_®>2¹ ðiU3OkÉ‘0od.„1…·ñÔ×`þŽª^¶¶*â‰ì̦@®uŸ9ël úh•-R¼ÍV€î—,ïö<Ðndu»4aªÍ^µÓ×mRî°b ׂ覂ì å³avM¹Ë#4аýx‘{ÓZ¿92é¡ êÍúxCd˜ #¾tfZÔ Æ(â>øæÅ6˜³tl$è›Ü|¾žÜuNÀÛbŒ>+ÛëvvÛñrùLÇ<¹‘Q0Ç ‘ì!uå![˜Œ¿$®–ß -uÉNËMÉÉõÞTFެ'ôm ’ø#Ò«YžÁE$¾åóš1¬“ „ͦã+iqgOö­Öcßî˜RÓ'2Ö„B9åÍNzd¾G«“ŸÇZ)•ˆ/$ZØ1Ð]ŠKAÁ„7§˜½B€\Àʆ™Q˜XÔÔâ3b¾>Mï%햚ƭ3ºd¦TZЫç–XÏÐ䉯³,šÅ;šy¤\%&¹ÑŵééÂrlBë¬p_‚B†Á$h´nwàEPþ€ÊÞ(#SÎ…ë]rý¹){²3¶€ß5‹Û&[±Ù³YèºÛók—UÜCÆ{(RÚE€æ@ü‹V1JºÚ#Ò‘&dˆÌºˆ‹´…ß´—¼»$0';Ò'Õ?à~¤¼pÀV@ÍÒ#D ;ôà0”¨ •–ÄN[æ äxòtçêz¿´MK+jr¾S¼_¸‡4t ôLRŸú )Ð=¾µxޱ ¶'j}>Û?Qß²§Ï £î°ý ÿƒ3ÅjIL5°kè6H¼EW¦Ÿ‚‡AeÎÚ”¸O×9ý7˜"/”£!­(Ci˜:põ¯Œ„Û \NwȇÚ-xQmíÔÌî…Z¬à&GÇ• ´˜(—¸DÉú(W3DÛN_v²šo]¤[)Â&AÑwÜBM%0=MáA¼™6 ÒÄeWÑ·Ðú¦ìpšÚyYáu"‹(§¶Oî#ž•0Ê»„Q/ ÝðGð<Æ7¯KbQE(!·ˆÁ„Ðg¼3ƒÓsâî$hd°î›Ý_›¶ú‘€˜Mµ}Ó;ÔQ­Sø-]¸PÊ”뽂ĤZ„3Ë+ŽÖ¸Û’v"”˜¡ó‘é›­8|$UÊ&H3„¢!Ö í{ Ë­ò…tû2Dú›îh18E1ÎgYMo4ÃÜŽá2²XnQœ ©äSÅB§Š‘ë.W¥‡dé!w¤¥JûËé û-IÚi颼_úæLfCq‚³›švÔ˜âgì Ë4äî|oBbÂlöÖcúÒY“¬¤Ì6`]ÏñC½MëÔrÔÚ)ñ5pWat±¬°B (âcÆmàd/‰–…,®*é=ô¸Ý¯É Ðc9Äz =šMzt[`7¯r!DMÄOd#$è+Þ:aè.5FjDú¢é¤†få „’g¬‘ ¨Ã˜K!<ˈRÎjº4`H(ùe ßE]ÂÏ+6(–-Ò«S¸²eCš¡ÙÈ‚b,–¶ÉË6ëÒh]Z¥t-SÜÑVh ˆƒD$Þ9ØTPnC8ž\j@d“×t  ë(á{u`Ë ²–i¾eX›6§ÂD Yø´¬RÀ&>¡VêðÌíŽgD¨S^’o2Wiõ"ôEPlö’džãHÕ§yÜÇ9éÒ](q_º¬oË´ð ¤âNYIjz£Ä1¦ˆœEÒ;L,“W +IZÂ0ë1k¤®íV¤¡TBŽÍCM£Œ©îuf§JŸ–]â(:’Ñõº’“¨ ·‡ðMu3ùvzËÇ9\Slnh9€3-€pž«¿;¿Þb+- £çŽ]Þ… ‹ñrw»“m†Y3¾ƒ8¸ìþbœD Ú­|–C ¢x%_™OãMÃp+ï(ð—”)ÔÒ%k­ 4­2æ€&óÀáõ1Hm`+ˆZê'Ãå Ì1×A¹9›&Ÿ–Š–.[Ì5£áÃ<÷RñvæùU]‹‰É=Æß)_0Ö:¨rí=b ×ýl†‰l)“Œo©’Œ¬ã¡”>(–1ʉ.ï ™ÍXFgMñ•b\—Õ$3cøgÁl‘ 5 ŠÄY¨8X¤!á£Óøа ¨8G†Ü¼ôà¨å!þS•ÝžN¬ `pˆk†ºçk T*CÀƒèýÀ/GLÍá^ÕWÖ³Ãg—_¦—A·Ç ><&úò×x¨È|1„‡—:ȸ¨èÜÈ¡ø>m à ]‹Ñ8EˆsSV„é+…ù%%€(‰24YÊIYøˆ\åÏ…J‰ÖÉ\ʶ0ÀE'ñ‰ÀêMZÎ(A#AΚ‚µ ã׫)ÙA\&K\Iy'NjкqY‰ \‘ "Wäw¼Ë&ì|á†þ³E æX&y ã Š…ë&’ùéÈaè”À¦ ÎÈV¾:<£2ŽñŽ4jS6/›bcû”Ër6è—‡™„h¼8…2¬&`æb ß®"ˆV%šø!G|kÏ^ç(úS¬á=3¸i ˆåA€òøæPPsTÍtìG9P½:,À³,Ya’i'‰[N­ñÑÒ0Å”“ÅE:êpÆ DŒ&… ó8F;-ËÁEäYI"ƒ )Æ{ •NBFK˜-î66ñtìÓÏf ï¹¼]£°EAR†cHó <ì°4æMÑYÇ“j@& X~`L-Å4²$-R–èmñ\|iGÉ‚™Šµè’/`.0ó‡£Êz?S.HÄ Æ»’àÓàæ›b,Ûyħ %~T¨Ë}«ä¦÷˜ÁçqØ"Æí>“Õ³9Wõ)h9œåͼFÙž÷ÒÊDÅð‹rÊôøíûLJ‡vÙOÆwooÇÐè‹R¹¸㟷nQ¶ÎÞõåpöa8?o[Ü+‡„u‚@~‚ð$„çñ}^%L(—ÕÖ¼ÄÀiŽcoSãèóOílu{»Zn¤åró»QåõÕõ®6góÙJ%s>WæÜ˜5êÍãr;}¨÷›bާš¥Ô9Þ 5_Wëâa­xr2òv<:¶ÿÿÛ5è šÍê~=k¯Ñ²m–íöü‡ü°{Y«æj{5ê¦ßý½q÷Žd9½m7wÓY»9ïË¥ýçùÕö#¤Á$yüØÎo>n‡çùÕ‡3¬Ï也ÁÅNŽTcM©Úu;~åR£ªuÞI•=áÛëîj5ã ?œmÛ‡mýP_Î/ñ«ÁÐ_ö;_Ýoïî·ÿ‹Zí²ô…Õ–*¯¥]³·Î]íÃÝj½­¯ç‹¶ŒxþquÛžßÍ—Xûz…³Íùêáñ¦]ÖóÄííÓËE{~;¿m·wØÂÍít±€X=s¾?ã»åÍÉñ®îpÈA7)ú“ǾC÷Wíõ†5Ë)ð ÇäÞBÚéúÇõôjõ)õJÍý7A[ݵA«Ívu××íN%¨cφâÕõõ¦…¨QÙfû¸hKíz¶Z¬Ö¿»žñï·R´‚hÍ·ú¬:b°S=$þ=ìáÄDoLô6¦³““÷O:Ôr§{ŽÑùh÷Öj¦ª½n¯fúík†µùä°Yic”sÏÛÚV·úg O «ŸmÖÎ.g—Oèûó}Áz^{éF׋v†±§‹ÏÓÇÍn„×-€ûw'$öi¶)‡uÓþs9ß¡ï7íúïD¹ÿ^þsÓÕúÇzºÜRo?œÝN·ëùÃïDZçäÓDáïð„MÙ{§¢çö!¼¦¯?œ¥ÐDG“yDa¶M0Ú…AR J}ã‚2zT¥Z™Æ:ñ}ωN_s7mÖ¶ö{û¹?*äQ…Ù¦ µ•Y¦öü†©ô¤§ú³7 Þœû5»uŒÁùgW„ÁÃëVô{8Èþe3ùòÚ"¸ôäÊ%P¥½{KjôS‹ÎŒ•ü<‚ém{õiÞ~þf7§Ëéòï¦7­ìLT¡*Ý‹ËÕúª]÷¯‚üÙ{ÕÑWÍ•½îÞ«Óï7§W«ÏP÷×_V+˜wX,ìØ7É*oÚ+ƒ˜:íÝÎoݽ¼ZÍî™î®ï‹í»{8j~¿^³ÂbúØb¹òO¯õC²v×n”°Ý•m>®>߬¹»Ûõ}{8ßÔw+Háf¯‚´ºŸ_µ›'Úñ]}y¹z8ýþó|‰M¬ws4GÛÖÕè§}|¢ÆÃ`*_asm²‡/7Ëé]}³X]NóébóÔìn§óÛù—öêÄÒ Å¡[_'Ó{7ÖÏñü§õêö¯ëV¹ð÷v»/o0¡ëûáìá‘Ív…«õüf¾äúv§Õ>î2YþPÕ3Ý¡_=žxÕ+ ùÀNªª½½{âÍH5̸ú¨ÜË»±]©ªOóÍürÑîIê.™3¿:(åwõ¹/$›ÕrñØUÛÉ2DêFÕèÁy2Щ»Õf^Jë&&3àžGù&—ôä|p_cmà¦ÂÜʼn¶¾Qð1ŽÇ²Éç7¥&úÄX65>Ááu“::øÆø}b0gƒê{~ ¸R~Ûn§WÓít@ß¾ÄÝ_x¿¾º¾øÛÚY”ÙìâVë f€¦—«{¨ðÎîðºÂì‚,}ºýn~ %ⵘÿ|¸]Àì^ìU¦~ –n×m¹örò¦ÐÕìvÎFçß΋?s}í:oíw2fùÙ¯â¼[Fo¨F«|Þoƒ<ÝÀÂbzÙU~šj‹U¥ñtuw»ºj;°>¶·ïnÌq@­c×;/¼`ª²ÿ¶Œ £?ÌwëZÒ#ï"%tfk-3?6¸ 2¥~*W¹Ü$Ø$‰«„ªYe Ï$Ž¢KU¹Æ›”%œÒĨC®"ÓBÆ3‡‘¤bÔΙ <’®lBA9y+!Lq*Á@R— ­s [ž{M&dI‹fè…—=ò¼&AU6:r¾ØÒ­«€`?8/œz@'•…ŒÞz‹:´GJck Etœ q4?ɹ¤- “sʆQ›[Jð³Ç¡$`f¾¨ÊˆpyHš3'ë^àCÙä—ÈÕ‹çpâÂQÉz^9:8šHаi¢H ³ ¸"š–AÎNð°ƒÞAS°½Wäx=Ì£ `ùÀDc–»gŠ‘GEìƒwî.‚ðVXpVaQãŽ&'ôH¦R¹Ö!\[ûB…i“•òÐIW²›¬]™§¦q î¢S–VÚÂ7ÑÂö=ä„3QÞƒÙæ&Ÿ¯„Á5µ™(Äš$G®ø¼ c ±¦•Do!ˆÖX”B— S¾hˆ*& %;6d:H ¤ó®\ÐãNëXtÙÆâgpGm¿ÉaTtBÊ@.¿&?Šþ­>Íêß<‹ÁÅHê·IÛ‰¤£†äíI™8‹:"ú¬G" â×Ö ÍÎü*Ÿ=ܰ‰§Ä††~£.Hb,ï/†ï à§@¶XYßDHí*~4PQ =`_d×8’2:×Y‰x`V^sÊ„\‹4GPX× `ÈÓ/‘®#Ï>ñ)ØÉ·Òœºzq„4/Â…Çç$ tN÷Ä+'5 >œÉœö¯½{z=AYÙôl bt1ó7/üð…ÆY?y—Î ¤Ãñ.,P¦ªa‰:Œs0@üénàâè‡+¸¤SäJ@Þ§…7fiªK0Ãò‰k¸–Ù6Ð‘Ä ´Ñú¡ÈÐE Â2'†×Z)$– ® 3(hG…ɳ¨ïÆEŒŒhëÉÜ=9'ZÙxéäWcü¢'y5-v¦¤%2ÉDßU‰Ðk u¢@hç,K„cØjÀ= ¡à¦ä‰»f³© M¼%,Ì19 æÆÂÓ$ФéëP¸د”‡×·O1,ãaLwÓÓ`ÍÖG!#8µH=4ô…R/Æ0žù­H vÄËZO ,©3/¬‚š×°ùäÌ{c(JPÞㆈÀKä¬YpyÔÂÉ+çpU~ä`yÿÖ§¤¥0Ë€Ö¡ÈBàèÄ{â ÀPÒB‰I;kÍáÄÕqXÜ£­y•=BN9«×<ŒJž”[Šö¾à¦'×ASñÆY\Žž*/¡<%Ä2“Fz!–‡r+F|†1·À›H¢Æ°(ôi2k²{Dò´¦e\þ¨Å¤ü€Y¯…ÏSn= %øþ —@OGëL Þ"IŒŽ§û âôey_?]þ@”±CÖy?‰"ÄdOx¥ZPB’I1SjÁäÛŠ=§$ø],„ÃËaÃ^ƒ»Rl#1:‘IâJ¬€"2îeÅaõ…­1“ø+ØïJB‡˜w ·Y†çœeð²ÄçB‰þIƒº´8ÅqŒùzÖG(^¡gbm:­:ᔯ3ßu5ÊíŠ  h\sß—ÿ1ã‹Ëûív\ö«ùòâvóÕ—ÊÃbŽ.\_v¨ÞõÕtóqº^OŸ2†å‹§= ÿ€'ìƒÜÑN4ÿ Ê4D=Ï^ÂÞñ¿¿œ½hŸË7‡/Øç æÖÙgȸMö¼y¨/F€òÈ>ßìåäÁËOú\2ó•~fŒ’'Bo»P#?É3Ö”°TS8™çÝ/ÿh£? =¾&¸=#‚PÀ = °/ I˜…íôpí•‘D²ƒf~cÑÖ ‡@?X²$´,úˆ“X,œ˜ogï 3²¡ÑoGV‹‰† ]– çä„iËšaß(Âub’ÓCSƒ†Ñ©‹wåeÐIð^ª5ÌjÆÝÌ|VŠ0{Î'új†8l™w ä‰ÉVÊçÛËèðÅØk¿ã  Ãè¶ÐH/¢)é«à"EàE ñeÈ´eçhîö¶¢È¿C¦ˆHr­È! †Žr9Óz·— ݤºÓáÎÐî\N§×„£ÞÕq”1h9}[ÆxRPÐ;P@œzÓOMF*@d²“=6Ì“x¸R‰ûL)·¼ëbƒ‘Ä•3ac93šYÐÐpòÖfqy0I–tÇ=îb·K@ïa+ˆ,#¨Šk„²¬k¨c3‰íâ"ºf°Öj½d”ú³"bÓBúKDx-Á¨’*Ø€Ã5Æô.2ÃIia,ØØÍƒH ¨ß+‹ÝÕ %^õ\™>=®–åÅ’¤–ÿ€qa—7ÍšŸñQ;Û’)£Ér2ýáCÄïYØnLJ8uÝs7—"¥•|›ð£“yÇŠÖ¡dÀwl%·–éõÂCá%K¯ÑAQJ¸‡Ûå öô mp†íçEd¼Ñ¨*_»ŒvzŒò§àGt&‚L[˜»¬`]¹ eä€xy#+xxh;Ê쀯r¯Â@xúåRYqÚà 9$ªHd¢ƒÃ̼1ɮ䥅èýIö ‡y"›¢aƒa~&$;1r9‹û&’ ÷ 8†C©4Š0Š«Ÿ¦¹—ÆzÔdqD`ºsqÀ êVíÄ_m±$3*Šý-°bÍáÝBMg[k)Ó”€(†Ù6åvLÊ‘î’|d4W‰q\SÓ«`1¬`! µ|䎮»9¿¸~÷Ý‹¿ýõ§&½XÜ?œ^ŸŸ^Þ\¯¿{q}óâß¿ÿÍ·ÿ£i¯ïÖ§ëóÅÇ‹‡÷‹?^ÿãþìôv½ø·÷·¯NN>~ü¸º¨…«›»w'/Móýo~óíýÏï~³X,Ðîõý«ó³ï^Ôn?Ü]JÅó³“õåúj}ýp¢WúäE_ý¬¯~ÆÖ/~^ŸÝ\]Ý\ßË›×÷¿T¾;ÛÕfo>Z©¤sÎ'ʜӠFsÿùúáôS3~}œ{Õ(¥Nð¬¯yX­WŸ.AŠ­‘§ÃÖAþ[ü¯{¡-XÝß|¸;[¿Å›ëÕõúáäÇ¿þØ=lÔêüá|ð™–ú£vGSr}zµ¾¿==[ߟ´åòþÇ‹ó‡÷à“äçûõÅ»÷ýï‹óï^`|&¨ ¿Û¼êøH­¬)Uëg‡\Z©Å]ÞI•ó>w~sÆ~÷âôööòâ Ó}sÝ|jNïVhþ˸›·þ¾þô°¾.ßÃÕÇòÞj4ÖîëO·7wÍÛ‹ËuiõäýÍÕúäöâã¿»Ág÷'7Ÿ>¿[_7g`¹¼wyúær}ruqµ~ø| 2Þ_^^‚µ>s2î5:}{ýn¶ÉOç·˜ë W)úÙ Ÿ‡¾GoÏ×oïY³La6’<ÃSðÓúôîw§çXE¥^©9~´Õõ¼uÿpsÛÖ­“ŒÔ±/úâ›·oï×à5(»ø|¹.µ›³›Ë›»W¿}{Æ¿‘¢pØÅÃçWúÅâdKcs_Hüwú…™Ž¬¼1ÑÛ˜^ÌvÞooµ¯åæ¿£óÑŽÆ?×Sµ~»~;éé7‡4kól³Yic”s»›]Ûµ^ëG5gšÕ»[;[Ÿ½9{³mB¿=3Ön>l¹Ÿ¾\Ÿ¡íÓ˧Ÿï»ˆ<|õþn ùýÛŽÝÎÐ6å~²ÞÕ¿]_<@P¸_ßý…Âî_ÿí~½Që¯w§×÷¬Wß½¸:}¸»øôoGZçäÓRáßþmÊÞ;=ÿÎ)jÂ˾ûú»)¬¢ƒÎ|Fa¶«`´ =§~2(õ+”уº(Õʬ¬³±gßoÙÑÓ˧¤¦ÍÚ6~DÏq#¨Î>¡»Xƒ’ÏèªV+ãMî™ùíF½·³õîP˜P Ó4!V…h]¬ÒþjL\%4þ²v•trN¿< :ê>’Wgx°õI'ÿl,äÝ2·]ÍhÍ7î8É:ÓžškOÏ·›¸oáŸ]^ÜþÇéÃûŽMêïÝK‘m´5mJ¹ =o_@„ë›ó¢yñæ=ÿ½?vºŸ½ëkÌÞÍ]söáîçÓ‡wëMrÞJ³Y~±@ùÕBk³Lfå•É),Îjé°f½UzјUÌÑåeX9•³7‹Æ¯ ŠðÆJeŒg‰VÉ»¥å[*-íV”Ô,²ÆÛ€ï`½e’ÔRÁ¢–Z©¤—~“Ö>/ÔJŸÂR{ôÄùœ]a9³ÄË”ŒEz°âÒgã¤;Yy~Ǧâ¢I+ Ô˜º”]ª…[EÇà# +,âÊ'§Ì²qèŠKz‘WЕ -­ð;Ú…Ž+´¦ùNXAÛZ¿0~…u©1ÞÆ°ñˆ5¿x½Ð*£<” ÀðC!lXå˜bšPù˦>4»|+áߦb Rÿå7|:X?÷w7ÿXƒA®‹ü¤e¯úï<¬ï:.åúh.®Qt{sY€[©öºÿÏ?üðâ(±P^µYùíú§îï/N¯¸üp7Ë«óŸ$Î\ÿ|! m•SÊç [ ›5y@‚Ò­gÓИ ˆ:Ú7O©¥±îœ‰¶*§µ)ƒeÃÊgpFùÓ˜dµ›(i³‚æÎa¬¤a»$U+i‡/(hú % m£ô^52G’é©=‹¨T)ç]J¢îj,ýv‚ìƒAûQÊiLÏ¢scmŒì_bsTÃ[àô\Ã)+ãržWÊ7;LŽƒ‘õ¡ÚXÅÁÄ>›6ÐdCnkãÃÕì¬Þ>£Ö>;›ÑÆh–àfªãJñ½LЉ1™dâàrá¡® ÅÎÐP:‰*Í®€Ú†ÇJU>AÇeê·=”“ŠÁ.µŠ+`p9¯²S•â/û꜕[¦ )€§¶(3›µtš³êK-4(¦^ä/(³ÅŸÊŸ[õY ÇÆêk»Êzz+RÒL$ö¸THM?´B?+4ðt‘éy”&@°ÀFÖæÛÓ pøÈ%×Ë™;)ô {ˆvgìR°‘IJáÏ€u€q€[¼öšˆÅcÂµŽš³Éu:èüë•Æ¿Q€Ö·¿”Q€ö0Î1ô €-Ø€º˜×ß½£8 KȯžÃ[÷æ*ûÑÐ×ÿ,õ½†ªKuÅ­ÿÓ¬”ñ^ÁRz4ÛX;wÜÆgûì`ÎyXm“¯7n ¡‰ªb¿Ü‰§zþ$Ž>$€Ò4›Ô@•>ÓFY¨ AƒtÎø¡“ù˜=ƒRˆ ˆ4^Û*EŽÀë54üãp:®šø©_!ôdUœ*ºrnsü÷«p[xëßúÇ¡ ÓŒL”ÄÇBÁió+–Ò`ês ûmkõñ£2p:Э0°M:gM¶J»‰€3 =Ë~C¾Ñ”J€úé‰EóÉ: µÝSi«¥úh‚ÁšsÏ!°W€Ž18¿sDhÞÄ<„ÌÑ´6œ& ߨ(àWgmœ—>i D"­§œMNì†;ªMÐÅþN‰ÆÜ¾e 6Ì ’”ø¬£$O¶/9è›HgôØFá`¡ 9ÒoJN@·ÂÚg+ᔟt%_&kK<´èߣ\¼ó¶çý½8ù/mЭf×Á!U¯¶úþ»¦üøjQä‡Çûüh #Fš9íÃв„ÁœÇ‡g{øÍ>h0o%ƒ‚pÃ07MÚ‘¦ô9Ñîš©éÿýóŸþøãßµÿû¾9wMÜ=òx¥8‹áL4;|YÁ›°»…×ñ•~7½; NžF¾Á™Þä|tÞédrÎ;ŒÔ¶U½g]¼P ù0Ç´ñšÝžºtêéГ3fÓ‚EŒ#Fw\¿ˆ>‰ÇHªŸXÕ´ð̦;e?®¨Ü÷r³ÙãN?…¬™•qûÐ{æÛ®ÍZO-ùù>€§íž‰Þ:’Çn~ØŒ¤ï£·µvŸÍøcÐÚÜ–Ÿg݇ëUëŽäh.„¬W>«ÜhÉ8—<’í\[ÁpçSc…$òf«Åß3 ëžUñ»óë4gçcpaû´ š0ÚyíaÙŸ~ú}øáõ|3;Dß ™8Û³íéµûAÍÆ@‚w;–yß €ª *îiæÇß¿N¿sóÍìЊ2í6ÿ>ÎÓÊí«λ.=‚wçaÔÛ çje]Îc­àaø(ëÇ|K@mÝÞ÷D|ëšiå,¾Ù3Ó;øÖ0Óh6WTaÏ”ïà[¿#F:à[˜†ÉíB;ØÖ°Ö϶>=ŽmÉ3¸Ì¥üÔnES*U¬¿<ÆZqW–‰Gr{=ŒÝ‹=´sû.ÖîkûûÇÁíB“¤þWb‚JzŸ`oè éíÊÂ0Ÿ’~ZU—ªiXõhÒ»ý¤÷{øò«ï÷ȯ\²?Ì}|et8ÀBÒ~¸ñd¶ çìóÀuåì®…Û·÷Yzæ'óƒ™X\R!ÒÆØÛ?Ó†¶Z«Ù‰X¥ÀÅ:è}Ö^|O¾ BPj¢ßìJç ñ5WÁh Æéã×½ö[ò:ìQ—[ÅÃ!‹ ªf¼ÛºÆž^úPÕédá˜rKŽ&|ØOø¸‡!¿JúÄ=«ö©¹}&´hƒÚëF²aÞ¬ÞÙ÷·oÏß¾yÄ ´6UÜLœiíцàñ[-¢Ýn­n$ï¦qK ´uÜf¯-FònZÛ»óúÉÈÙ?fûW­…#÷Í})Ñ^Ú¿q{äîžÙy­(šPäð%y­(¿VÓhæ@´ý‰Ý9(ÑGoG[ú°Ê!•(–œ³òw.ûÂB ßñ‡6Œ Âx)ÕœT+a¼å‡<ÑÖH5?¨¦ê×’T3¥š´SB…JBjªDaQö?´E–¥†õ²Ô(ÑÂe©ÑýèªEþHY~h³,íÉ7¨&Kåx@Ù׈Î÷ï»òŠ–}q©4#±W’bP[_óìbóæôìïîn>\ƒÂ×ë|2áèn=ŠËëTûÀ`;Üÿ1ƒ*¶@¬25ûLú#aÅ ¶­<Ö–ßHÒØÇ‹¨Ð6ÇšãóPz ìÞ„ç#ÿu¤ßêçßµ¡ý@Òï˜YõÕ„woŽÁÌÚñ;x~Ã;ð‹p½×»¶ÖOŒòÝmL-ú/`˜å;ÛØ°èÞ€CZ“|g öüÀpH bïlaÚxžQþ„¯0m:w^ó˜°Í†q‹ËqÖ;9rd>×"p_/}¶ 7·w/õvS¾õûi´˜$ÌÄ7ã7CÛñ0~°Ï“µ|˜D.؈â;F6B3±‹Crûü‹Á‡™èÅ! …fçnÄ6ㇴ“ö93ŸÃÞ†\‡,<œäÎ}ÏÆ–)öÒÉîÝ|óllS³Çó¸‹APÃC 4äÔ¾†v±q<>¤¡½ s·áãCÚ»0Ÿšç÷y4[QÙS;T¸cäȼ_åPáž‘ý{ø÷áÿÞlf‚8ÄTÜ·)jfïÔ`‹Õס„=Bý6©æ øøø·wÇS¿uj—_è@X²u4Ö4{cË[N'wJ¢«Ó•óû.çvhîfý¦ wTî<Óí˜7ì ³ÄïÛ°±³V‡|¿Û=¹³½Û1»™)íæÉÝmîÛÙoë<ÄŠÜë{·aöû9Gçgwb>ÅÉÚ9.ßé±AŸ]°ƒ$äfUš~•` 77=Cr±òÚIÌc#ÜÏAÌ`aßX?É.¦%å˜(1ýóJÈíɦVNÏLJ1œv‘2=Ý¡ßÇ“2Ó2bÞ¦}fåÞýÁÏJL—v¦Ô1m}ò©ˆÅršìôDCÎ Äо-«Ï iÆŽÈY þ3hš§ó{> GYþ3¨š§  < Gá¸Yþ3h˜§Šþ=GÑä9 >a6‰¯ÁŒO¼~FÅR÷­ì$汊…ƒ÷fŠ˜3l ít;u'õ¨ 0!¬ ÿ+ã¼ü”Ú ¥$ñˆðPŠ)‡Ä“Ñ<5žM0KdzÐ`¦IÙ°qÖØX›1‹@ƒaBFÇ4¨æY‰(Ûìv’ðé”n³¹d@­Ècùqe³nzÍ|¯>lj¹WÚÀZ˜È/fžŠn|ºa¦ª‘\Û‘çñËïëÓ58;ŒÊÿB9ÔÐèÐõ-û¨Ç蟊Z/AI§‚↥ÈÌÓQ‡…¥üvÙÕ\j æàì Úɾ(ë´‰ Ç|[ÆqGT¦-<º Ñ$IžMN WÙBn2‹þVLÈ´€ â¼rÊ¡ÐØfS3ý€×QyÉHPR`~aK0GYEeT¶ƒ"Çt>ùÅeÝgÅ\¦hMû§É¸öí “«Ë_=áO¯Öç?_¬?þ¦£ô›ÓnÎoOß­Å=…%SZªÞÜܯïÚGAþ=ª}é3áØ‚_íž«ùç÷ïOÏo>BˆN~¹¹¹¢RO&ASéécú‚—!lrï·ìŸ~‹3¤èÝÆ—ÏoÎ>ð¦†æCY·Ÿ6^ÿpwÇ —§Ÿ×·ü§íAÏ@÷Þà®®ìþýÍÇww$óÃ݇õ´>ino.®Ùþ ‚¼õáâ|}¿å=>kÞ¼¹ù4ÿüãÅ5¨Ùt}4nK¶ËÑÇ-5>õ+xúĵVìÞ_ŸÞ6ï.oÞœ^‚iO/ï·õîêôÓÅÕÅ—õùL òòE_eïá†bêøýÓÝÍÕÜ­±*ÿ²~x¸¸~×늚ï^|úÌ׺›»‹w×_7[máçq!ï™À÷>Ñ „ÈÖ›>Ïœöb¸-1A·šöÛ»ó·¯þóÇŸ:½{vöêÿÜÜý£× ¬púææ–p§QïüìAÈéÃ÷WXD¼Ñå}ºº„BèŒ*s}ô-Ÿ½[—/¹9?»ºàK'y€&ú#DêG/.×ßK›åÏv'u]D£å·'-ä×»‰X¸<}³†TùÓÅÏë˲ņ6àfàÛ+`‹*¬_ôä­Â»¶90Ù¦À˜*„ìK¶©6¶<ÉÑ]Òa•\T}®¶Ê XѰÑarù…¦h-q ·€ÆJÐW²ý:È~p`ÁÑmZ&·ò°§%(SH…¼ˆ ’J*¢%©µsf!©‹¢“$F6Ûì’š»È ó¸GI?…’²˜Éqgy²F§’R Ÿ!6áø”úED«øT’¤N*™°Ê ØIR£wæ¼°®T—Û MÆ,©®T(©ð7¤Ð×äMZk&j*½Ãl ýÎIâ&—cè~ Ú nJ6&üÎQY % †ëU¾Ãôµ5¢i ýe´&9×èk/;ū۳.•zõr|*ÇЦrô>R9Žø²m¾h¯þ¶ ‰/nކ&ȇ{A`04†ŽþUÑnTÌ&o õÁh´Ë˜åÞP…eÍDÃAeã‹xë…Ìû¢RIŠä_.ùàl´EàKn:m¿æmJ,Ö€g,ÊúÙI™ ä[¿RJ’|/Tþ¾^Çe«dº»Ò†€ª¢”Ep½IðJŒ’|5±W =à¼YÄÂè‰}_,ú¬ˆv\ L³ÌÔË„#Çaì9­t0:ÇE6LÙž‚¤T.ÃHº®¸×•*è„¶ðFÒòéTŒ«]ôfPdÅ@.Ü]ŠZ¿.EÜr̉ “¤OCûÆŠ-CRçÒ@7£ê©;˜döØ) ˜`­ØìL–Œ8ãKªbd‹*™Åðå7½|0²´Ÿ@Éfù[*ä\Ú•_œÒ 3I–Ý_ %ÿÊyQ=3+À;)"Ìl2i ˜²å¼ ¤ä ó˖Η­Œæ7v5§JK¶äI0,Y%G]Òzg)ˆ0æ2m>v­üg÷WKïa®^.\*¯ÕœàÁƒWåš Ål”Lh`ªRNA²$ÃîŒ|” ñdŠ¥û>–#F^Òj›ƒsåRé=|™ah—#Eü4ó ꣼át,ÉúÚV‚)™‹% –h#ˆ+5Ø)…¢ÚÈÍ«Ji­wŠ9„ÚÏE™m9¼TbŒ¢`˜fF^޹ž›RrªÐhX?•ç&”Æ¢‰ýÇ»êµ+¼ËDN&•³Z©(3eCèæL49jg ^ ±è­ÁB3‘ú9Ó÷c(›dó‚HJ3¯ŠŒZ+™CùÃ.lKBK±8»¼(|Ú„È£dûf¼t´® ,§ÄÌ‹àô ÓJ™ *Ƀ,S¶–2*.»ßíø<õ°•5‹2…ªfô:æ fT9>t–` c\4-•U¹,Æe]k9+¦ƒgƒR”” “yn­»ßÛ2–PXœ¼\#@ˆ$ÿD†â¼\žK Ó¶+™RÖ”LIß…>_j,kÙÆbz¢¶%rÍpY^zÈ>I’:‹´çþѽ譎Á¶ù_„%meIæD–4›< á¬ãÁ\}Ö–´%g0þ“:õ«¨|rô°Ì–žËø!r‘$ÆÒ!Vxnø7BDH¶¸°~Á=Ô«øÓàEÑCì ïGPF{;—cÉè•×ì²F×ÂÍ‘áðÊ\™é^Qò5Üu|jérƒÈ†¤Ù¯<&‡Ó0ÿ B+bþKôã7,øî…ôi|›ÍËíã Èʦ¾‹Áýb3p½\D1õdhÌõÖ‹äh߀;¯tcø¢V¤Ô¡ëƒ>ù.Éaêû›äÀHªÈÏ€ ¼š¥ª.þ !gn“³ÌC 8’x\´¾/âö0c- og#“X"0X[PÌ€ ™§Ñe¿Ðê ˆÎm=‘»'æ´ÇáÝ9¿ãä.5¬8¹NScgrZ"’L4g•0½†´NTâ"Ð#Þs–IÎmèj€=)BA’èôl6 ¬&^v'È19LÂÂø$ŽŠ’…[§A†Ù§¾JPNo!œCXÆC%˜za™Á˜­F0k‘ëÐÐ<< ËþßÍÅõ+ÉÕÑ–^]`Ú./ðŸW®-›Îvs~zÿþôîîôs¹ ³AÙ À;sc0ìè‚KCÚ;®äPk$î#ªË:ò"«Š•`yY¤QEZÞDOx‰ Ð'ïlìJ`aæñ.DiÛDŽæ¯¶~*ð… iTT¾ ãÖT¤(/=1¼…³-ø²¸¢ª€Jâa¡3ÒËSŒe˜xNƒOÆ ³R•~ˆ5-÷ w5ïYÈJyVà· ü•˾\æPöƒõ…’þ¥jjrîŽXR.ºD”Gì %FœÇát5ú ³ßgÃÿl;¼8ÿ”KY­£i»e&}Æø3¯yM¼¶>ÝÑmI ¶NÊ ½ZR êŒy#/ÓÙn)òŸ’P„Ïh@ÑÊÁ¸ÊtÈáSº‚ooƒ:o§rÒóåi¢ußni‘ÇG“ÜfúÏ·à/]æ¥-¼q63$–[QíÓ=ŒF´%ùúVЙÌ+D…«x;wM§#_o»xñ¿,þŒ×¡À´JqN¸¨ÛkK´µbl¨‰›­zb ’²\¡‘·ÐDKRØ*P<9’±°]CPYâîsÜAÉäŒ+ZòDˆ3"cÂØbuœZá¶].ÑèZ§ÏÂI¢ i¿0 z_½Ò¾Ø&Aôhí]’¼3VŠÐ -w§€qijÑõB:u¥>F^|Uš¬çB'§¦¸l$!‘«wˆï 5²¸= "ÎÃ,öd^J÷~S·Oë|×DÀ,rF®‹1t«Ú®AnÛÓ=–öl¹²$ò.’qƒ©m°¾?n0U.†²#kcR£Ûl°Ž0ØãnŸÕ]sÜb5 /)£[$º(×mãKvDQÈò¼­ÅÙv ÚÌÈ’1ÊìrÛ¢ë[,>[Cƒ£8møàãt‡ÐTü‘†õÄX™¦¢-.qã|ñWc1IŒÅD ¬­0»âý#\Öº–ëóöq™G˜Ù” eÉ«]„ÕEÜô¬c«cü8Êr&!EÄ…ÚMåp˜]ƒ\œ£ƒÙÁ;[›óÙú£ªs3‹1ÕÕX¤²âK#³Ú`ì¢eÈv.ã`”fs2ãvŽÚÆÑ1Ñ?z˜©—åafI–qZÈR¹Ë¨h6X'Sž »™6tÓÉa¶Ói7æ3š²GR¥äÊHÑi 到4wµÒ–·CRóˆ4@[y³Þ´°·¤P ¡Œ½8Êa…y7•Ó^´¦@àÆŠ¤üV™»ÌŒç”Ïí"ï …yÉž··jµ1£Vþ#'6&7Uñv,z\Æ«†kÜX5ÆݎáéP¹iN¯´íºVîvíz»)xãîñF2e#,Ó ÝË áD3Í&šiá„­pFÀñV‡gX¢Å3☤èšLõˆfÐÔøÏÔöMg*š‰=š©ˆ*ÑLéAÐ0Ã%âRA3ܬKè­S× Šü,º– (ü§ºåÝ ²(ÓLõÃPnÎ4–Jk­óË2ùȿњâŠf¢ç§H¦™ŠŽ:8] ‹°›è¶nd6F‡å¬r¨ËÙtÐ.m ÏÛQsÜÔ5A »šK#e;%æFc±ÈÀ®µ”âñSGä…ÔbŽ”ÕÕlÊÒ ªÓWYÅXóbVÝÞ©öMf¡ö•ç}§{䪾l·²Ë`„S~sgškb •¶Ò`¶~ëüíš¾¹µÐ5–Z+Ö'³%Sn'Tâ4gz+G/u û/t›!"äv½äÄP‡µÌn.Ï0©œcMXH#Fÿy2ΰ›Q[•Cרó-Þ6;XG…ïhg{u3ûkß´BǯŒ-µüZ6 lªJy4RSâµó#[$½Ž›ˆœ03ÖªwœÖE®ñæZ6k™~mÒlÜÝlœã¥9É»B"x¸íŒôêN%:¦{¤¯bÌnJÚCšœPÖnmQ÷a{ÐsëTεWˆÊ‡–ÖÐ’—4÷]H3ªl²RÕ‡  P‚))Bs×MY…®ªì–2.ÙžC ¶¾[ªŠªT½Ûµ­Z¿[˜Bù’ó™–}Z%ÞðZ+—wµ­û ŠYÓþöryêR*’-À_m«6µn[uð›_–ŸV6ÿØš$ZÈÅ~”ÊiTÙ•o'W~ÊCŽoð%]I«X>KHE(W ÷gŒÑÑ |•"$¯g(2¬‚7^«zƒ¯’têCB/µ~]¬aB7,ÆY¸¯’{°¸[®8TDe%ÏòE/Yê,¿ÄH‰KÅA€¸ó†$w&éÂP¼D–Û,Ñ6 Ù¨mð¾"ç¡ D)CÞ3ê4: 6¿áæ ÚMÏñϳ~»ü3(žɆ 01™„@qĆkÞÀBq¦FI¥ÊØ7?=úxsùùÝÍõ8`³mÞŸ„[™j¾gÖmbÀÌN1vEÊ ç\þîéB në!ɹíb&ú—¿©‚×áñÄz’øÈ±„Š;.R4ݺ/ÎÄ]ô V¦0Ã11½?†sÔÈóŽ‘ÿ: ð˜î'½!¯F ÊdÙŽ< `Ñô|‹§n¸‘¦`qO QKb‰mbËå_Š"Ãe–w =ÖÇ%(µo –•c÷GÕµ€1ð %®ƒ?r5%û4bgo;cñVW›viJ—¸¢ˆDs߆‚G[×Õ4XüV~Ñ9ÎXgÎG‰tØA°)^«$N«aÎø€%±>½ Å‹_ëÑ‘ÀÚÒ nøò„³Ôïkñß옱8;ca#ã bTX¯Ìù“ƒ™õïvÊ‘Où_ÊÎ1ôlÊ£…¿B€’£Î÷µ'>©¬ªglVqQ·†´0…°ªÚ)œ‰·üwMšÎ+Ó üí(‘ØdÚ5Ì4毛4óùü±Éð•¡É áwHhr޾}h2¦”G`·¶±‡‹Ž MŽ…ìÓ…&ç¸÷ÈФßšô Mšq»ÞN%à‘É_çåYÔÍþµrưwôZÉ¿$m‘^³õš­!Òìu(köšy´×"Íîm¢½iTéţä҇ô«"½¬ççlÓfaþ’ä”÷rº´ÓsA²g ßÎÈÚ£Ímȱ à¶+Ó/{ݲ=€›æýý~(÷pó¶ñý+€[6»¸vÈ,ÆêÇŒnÀµ3ìòß'€+š_å›vl.Ø:{OºòmF Ýú!×üÿº-Í>qèÖÎôŸ,tû˜8êêÎ…nÓ I†n§3êw6éwÅçB·qØ^6~* ö†nÞý;=ºjê {k§ç|º›ˆ‡(bóLÑqù~©ºÆÈfr6(þûbø¼0ÙŽÊÿuÍñ\s<¦ôá|wò®GªÅ%¾‡W PQl“Ó:XÁ‘çp@-ì0ž—‚Í€B5®Û`¯œÉ«ÇÃæ!°}99/uzÎCbƒü0×&Ý,WŸðÔp„‰;ý¥ø+3F·pýŸjPç!ì2ü4ô´ýüÝìA¸a Ç%èõ4Ú‡Àì“m:ZÏ£esÛd[j· Aá¹ÞŒ÷Ü#ƒ7ä÷}lŒ-ì ¨Ùitm„1·Ð¯J´f(ªkîTH´4 x·9S…Ð0†k–Ùh!o“ë oÑbb\&ÚØÞFÿnzxts©ò#Ö!AÊ’'ÚÛ_Ï«y"uÙèaçF³‘àíÍõCsñeýÊ€?ˆ1cô·Ÿ¾)å¬jÜ]^–’ŸOï.N¯Fee´£"Ðqýpö¾-#åk"ÙWÚøÿùÍåú‹¶©éI_)4øñæî|TP´K`úæÝ}ÙàÛÓ«‹Ëϯþtñf}'ù9™¾iZVjJ·n×go/ΤƴòèÄøÃúÓƒ5Æ}BkY|Ör¸aÒ nG‹Ÿ]dü¥f«0¾¢2¨”âV3º˜÷ ÿ-gÇStŒ™uSטßvsU}‡‰;òæKUqÕ$[^«rºH³l£ï£n­2&IQDGm½g˜®nüžn7êvïAR8Å·’µ÷-øâW(V\.ÎBÍcÓJ2C”¨”|ÎZWƒ*µÛ-xÐ1° ¶ŠN·Nìc™¨‡ß4ÌœßtÁÕ-Êm#|ÅõÝ2 òBºI8¦$'k <]…B‡vXÚ9_1ø`ŒI)TàIb3L¿%ý¥*áQ G1éÁžØ[ÃW±7"caˆ«šÓû”‹“RS§CRípò,óG5¥Ó‹:åe2”ч°@a8â BL €è¨5xW5„ì}[Sí§œÞ4%‘5Q[I¤Ç«ØzÌ•80fÀ‹Jar-v8b¾Ö`»ÖcÊiõ+NBÉU³J‰ÞçâÿÓÌVT7%ÖÌ^Y!°(¸²J¤YÄ\=޹æx3e× MI•¬ äX³m‘]ÔyËÜÚ€UµIs¹ 2Å“ýbˆ Ó^g_éàœ#œM1(˜`v»ÐÆT(“ìt{žŠêÔÉܸòž(j©FÝQ…<Œ§-¨ìË®1ÆÓêLƒé$}WVÄAͼ ÙËyÉl9 (“Š›?—@À\Tƒ—Ååc‹ã“”™°fç¼NJ\F½¨¤Ä•fYKLãD]â[Ø/«èñ$‰TØ\$Á2±ª>ß•8&ž‚,EaK¢„;5xIÁgÌS3J«ö%9€™(×p7Ü¢7åN®ûØ#¿º¦t‹À Іª¥“Ö2¼ж«¢l;ƒÙt°l25AYit×Å"óµò‚ÊKª¸•Ë= 19ÀTd‡AEý –Ö ÷$” ÔŠ?¹räHX@ ꤸr]ë"Q´ž²<2źnsðP$Ù‚Uk‚M[y}—« ‹ÌˆFìS±³)P,3¡µ·;| ©Æz,†É÷(ÝùåË;>ëh6Þé\ô¡m©&šè 7S¡˜@É‘ïD”ÿØÂ`vÍ`ÝA11q{ˆ›@1[òMt°‰ğ˜\Q³?T€Ì‰ C§ s…¥ÁÅS0VC£uš`jëÞØŠÅ'Pµ¢îbþ = lI¶Ú~£ 1¤Ü"HÂV YÌsJÆEÑÔ¦[^‚¨Ic7ƒälàˆXS¼/"²°j‹è$¨.µk®xÛbxw½ ºÔMJÞ¦â`q0zd T#iì1¼/$| Ä3V—|±„H ä‹ÑucË&ò*‹a4¹#)@,U 0¬|1f(ä=•] ¼”ED^Làè4O× Y¡1Ü€¬½7£§«Ø#ºfWÓ¥ötÍ)Ù1] ‹¬t¥È*yž;²ÊÍ!´†T¥6tª $Öõ#²ª\ÅpGÕPvuTE-GlKÃ[e”$8¢ø•>KuËA´;ó—‰(2ÌkK¢jÉY`©®ü"’°Xê‹bµH¦w½Þ-€þ¢Kü«^-™ˆ‰Å(-rШziؼ´ô3•$ÄiEøPrn­)7ÐaPLñ>…;P‰Å¡ã°°óP‰É½³J¬xÝtÙèáƒ&NìuE—õòŽUXCÈ ¶‹ÝÌr¤¼o/öSÛ*±Ø"·Ø*1`úb6÷: ¢«î'€“=CÔa¾kÞnè0?Õa%a6 —nU–¶’¬‹)ÞFJ,pŸÝT‹•éE\ö˜#qžÝEf³@íëÀYt:"Û>à°oìAµš|—‹ÎíG¡3˜O @Àò‘¼Æ¼æšIñÏaÉ‘ðH¥jJÎÚ´”`$O/¥D»‘Y¥ÓÒJÚy9L¦ö‡³ä… º¦ôѼç„rƒ.[O"–5„‘‘sÝžžÆg%/å×É™·}ÊKŽj¦rhxFJ·œÉtÕI¢`ެЖXÊd+<¦ß–μ蓷Œj%·bŽz"IÞ8cV¼€–ò“¡X%E²å.”Ä+q¸Õˆ×¹znp°”–‘0Þ@aþ"¨édË4äo×èÊÔRgÉÜ*'hлàï­Ï‰ŒŒ–(F¬-yWÅ[+wÇæ%ó·J8#0}Wñ i^´5­=r3Kpë/ýT`#0$OÈU²4 x­ÓŠ[õ$ù°´(ê2[v×0âPLYF:¨W`$Ó]1b uÈ¥m©æÞÇ·yRÝcÚW]X¯ø£JU‡oKŠâ… žŠ‹&èȯ^dÅñÀ݈%úäB¹¯H^hÊsYÙyºvVïT9`mìÅç5€¸ÉŸìÆÑt¤«è”?(³lÊùŠ:sw„Ah5atéÀŸ!<¡b%&,O’Ç—2;>xQ—D[7¯Ò{¢«Cöfßæ½kÃŽÏfφþÙ6£8xÜËJö¼‚:p½8(9ô_v‡BMË‹;¿ÿÍbVáéÚocsigenserver-2.2.0/local/var/www/ocsigenstuff/scalable/application-x-tarz.svgz0000644000000000000000000007472112060404165026204 0ustar0000000000000000‹ì½[sÜÆ’.ú>¿¢æe»ÑªûEkyvX’=1kÅžØ3³ÏysPdKæ^© )[ò¯?_fèP  ›hJ–iÎuW(TVVæ——Êúëÿüôþjõëööîòæúûgr#ž­¶×ç7—×ï¾ößÿõSž­îîÏ®/ήn®·ß?»¾yö?ÿõŸþúÿTÕêÕíöì~{±úíòþ—Õ¿_ÿãîüìÃvõ/¿Üßxñüùo¿ý¶¹¬77·ïž·ªªý§úëݯïþiµZ¡ßë»—ß?«¯¿¾Ûœ]ܼÙnÎoÞ?ÿ>ýûÕÕÇ»ûÛ³û›ÛçRlÄóg»ûÎFîûÏÿóoÿçrûÛööÇO÷ÛkØÝsݽýâ¼½ÿÃÇÛ+~¿‹óçÛ«íûíõýÝs¹‘ùåç»ËÏiЗ¿nÑÛ{<˜ï¼¾ûçìâÛ‹·íÕD„ß4_$cŒÏ…z®T…+ª»Ï×÷gŸªî­ MéV%„xŽßvWλêŧ+ÌÀÞ—á_óÞ1ëð¿ö†¦aswóñö|ûwn7×Ûûç¯ÿëuûc%6÷ÙcšIïôÛá„ë³÷Û»gçÛ»çM;ßÿÛåÅý/`Bøë/ÛËw¿Üï¾_^|ÿ ãSN8þÞ¼Á‹–}ÅF«tiýØü'6bu5|I‡ç;»¸9§7üþÙÙ‡W—ç˜î›ëêSå¯0én·wwÛ‹ ^ä÷nW7ï?|¼ÿyÛ0Ý÷Ï0Ölàü3߷錺}ÀöÓ‡›ÛûêíåÕ6õÿü—›÷Ûç.¯A‰Û|8¿{~óéó»íuuyN\û®ÎÞ\mŸ¿¿|¿½ÿü½{vu&û¤Ôó±÷ÿpý®Øû§‹`'7ÁÛâŸó þWüõbûöŽ®L3Dß0Eï`²íÙí¿Ýž]\bi¥ëÒ•Ý_œÔ²¾wÝÝß|h®­g-¸F?Û5ß¼}{·ƒˆ¬íîþóÕ6]á^Ýܾøç·çô÷nºÛ]Þ~!Ÿ­žïé¬ô„@ý'^dc•òVûð¬øòv¯»«LùÉÞëugü¥7Û·Û·½7ýËœnu,v…TJ3ÞíVoåVÕ­/t+Ç{;ßž¿9³oBÿú¼ËXã|Øp7}µ=GßgW¿}¾k_€…ä‹_n·êÿ\àØý ­CÜMÖ»ºñ¿¯/ï!½?Þmoÿ“$àÿºþï»íàªÿº=»¾ƒ¸}ÿý³÷g÷·—ŸþBJÊlX üí¾Aú†h­ÞÒç¼´Î}·{}ùý³à6^ûìe>£1êSÒ¸§~Rhµã„’Ùµh•Bm´Ñ~Ǿ¥=»Z’š:J]Ù=»à‚˜]pþ ¯‹e‘µ|Æ«((«âޙ߮{[¼î—A‹ªY¢…óÚøzBšo•ò› Ä'­7Acäw3Ù ¥î‘¼ZàÁDÔ$ÿ7XÈã2·YÍèÍVæ0ÉZèO”ú“åþ|å§þùÕå‡ÿ8»ÿ¥e“úûøR¤>š+u±r;*~Èž–á†ë›‹¤„qçýÝç/½›½ëkÌÞÍmuþñö׳û·Û!9?p·Qf ¿Z¡ýýJJµjc…ŠÁ­ÎWbm°f­rU©ÞĵÛ£U«ÊnšpÇFD픥)‚5kMw‰°ª¤ÙDPRR“VV;<ëE ø*á4®þrm7>HiãJl¤³Á­¥Å›ãªÒ,'¥Ö¸™$£F“Ü8¬¿V_J~(,=Güª ÀVÚ„^‹•ÙxCo€‡h,,·òŒPëÊàUL«¸®ŒXhaƒï^¯¤ß 7I÷¸ ´­¶+e7X—ã­uî±æW¯VRD´;"eÀ0|—ë6ÑzTþ}¨€Ò®^Àtø—¾ƒÔÿî/ôk¶~`ÅÜüc ¹Îùó†½êï¸ç~{Ûr)­êòMn®†KW€½îþ÷¿½|vXH·ê(:Œüvûogïî.Ï®_^}¼-òjù‘D†‹×Û_/ùÅ]ka„°±ÇÇ݈ͪ˜‘ ½ÖÉ44&ƒč޶ՒZëÎ(¯k¥`¤”.D°¬ÛØÎH• Zšž’VhîèºJM^¸®’6x‚€¦(ih!'ÕH‰ D¦¤vQÏT!Æ1%±î¢+ýFAölÐ~r*ƒé":WZ{?`ÿz ºRu¼N—:Q(cY= [˜³‘õ\m,|6±'ÓÆš,çÖ®6ž¯f‹zûœ´öùyA£[7}mì7‚þ“ëèƒ Ê¯.Wê Zì|¥H¥é P»‘ÀðX©Âè¸HúÍA#AÅ ¼Ók)ü\¸UŒ›h@e„ø€Æ‹vE?Ê…Y‡)€_uRf::Ò^ÐiFK¨/±Рè˜ô"}ƒ2[ý-}Ü«Ï8ÖU_ûUÖòV¤¤êIìn'¸ T»i$+Àíf…L|]¤vi¤6N0öZªG Öœ9…ÀÞ:zgìèˆÐ¹Û7¢œdÉê¹ÈÒmuù&ÇÊx÷—¥çìUnàF`o·qÎá2C¸BMZàmð”Ö’=åôÙpĬRQ “·ð¿‰“•s^­Y8êÇaù:!%û»„ÖôÝ{,%4ÀÎ÷Ö/žüžhPÎ’èø7‡Ìi§}¤'àF p\èb$Œh”u««•r-=žKâ5¶-ªnÁsÎñ$¨z@G»QÛÊpGÑ’—‹^Qã»X*j÷]+ µC~1ŸnðJhòH;úŠ÷°^(zSºœ¼ÂMZ)båÂÆ©sèÁãÝùÆÈêð‘ÞKj¼~]9@]­È¥OQY¼>îÄ<¸H#_¤“RÑ4aøJx¿2Je,¿“¤&ð„ˆ'ë)F½† ½¨TN& ø;ÐH$æÖÑ] jÓð¼ q‹Ò[Oä‰ÚÑMúF¢3ÞX{‰á`¡ ;4’ß”8]3WH5‡S[´|Ò¶üÞ[[ì¡Åûåâ-Ûžwwì4¦?²A÷š]³CªVìõý·8Lùá!Õ¤ÈçÇûf>´† #MÍEû0´ôŒ0#˜óð0cñ ÿ2 Ê6ñ<(I1(ˆ“‡¹É¤ iBæÈ‰ìÞÜL¥‘þÿÛ¿¿þYÚŸ§æÜT~|ä¯_¾ÂR,b8åÕˆ/«%xåÆ{xå_ŠðC%Z3#N:¾ÁBob±ÇHj7 d` .“Ì3CwÊ4®¨¹ÙOr³šð‡ŸÜK­Š2nÚ =1ßz«¶²oi”ç{O뉉Þ;’c“†‘€ô)zk­§lÆ4FÖ[)åç$¢{¾^Õæ@ަ…åÆz¥…é,à;²Ö–S”ycD×E¡‰¬Úkñï˜ ubUüð:¾ %;ƒsû§%ëBIä5Á²?ýô£{ùªÜ͈è˺qžgiO¯ÌKQŒ8kF–ù®Uᄟèæõ¯Â¦Ü͈VœÉ´/uüÑ—ie&ã*óyׄ#xpF½îq®ÚÄØÕ †Ð¶Ë·dˆ½é} ñ­5ÓÂh }51Ó#|kgÌ4ºÍå…›˜ò¾µ#1ÒŒoa3…FØÖÎXëdz­ DZ-ñŒ#\fB&?5©hB„#âRë/vq‡”•¥üܾÃJObiÌÒÅÚ}¥<~Hãªx õˆ jÒÛ{CöH¯7†yŸôýKeº4ä—Lz3Mz;Á—"¼V˜ _–¾QÒͰ¤ÍOŠ}£_—ëÆè±…»ëÃOYzê'õR•-)ççôÑõöúZJQœˆMð~.–NNY{ ð-¾ œ¢§ßôFÆøñ’VAg (ŠÓû×¼¦-yé&Ôå^ñ0gxQMÀ»½klyéCªNÎ=?À”9,9˜ðnšð~‚!$}üĪ]šÛ ¡EíĤI»²Y=úîoß^¼}sÄôVŠ*N ½mžjáõ~km¾‘^Dµ€¶:Ô/Cé=°{Ï;0þa¤ßëçKhŸIú‘™&¼ù¹:4S´ãGx~àx®·r,µ¾g”÷Ñ·è3_Àèå£} ,úÌ0§6ÉG{Øó™/`Nlö0°æ3OÀ å{€iÓºóªcÂ6?â—cÑ;Ùqdžj˜‡KŸýÂÍLæRï7å¿N£A| I(Äæ›ñÃÇ~DœÇ¦¢s:rÕçâÃøÅœ~”3ó¾ð&äš³p!8[䃾dz±¦“tÒ“É7 °±Õ„çqŒAPE›ftdÄTGclÜçt4¹0ÇØ¸ Ïéhra.ÍÇå¡b©óVF‰y¨b¡Á[ÕG̶†42tº½ëH(`BXö 㼸¤6!8.<Â<|ˆ.ÐÎhÚ5•SkC{¡ÁL½"²n°×°±T]„ç]Œ†Ê ª“‘ÓìFI¸œ2M5—¨åi[¾ßhCU7­¤z¯6úž¹á7RÁZèÉ/ª<åMwwCáRŵ¶=íÇÏ–ßÃË5G婆:Í]ßœGUŠþ /å”4 JXòTyÚK·Ò$¿M4u-5óßÑEU¤á¼(m¤ò+Cõ¶”¡Œ*¨ Úš¶²XèÚy¸x‚W1¬dÜD ¹IUðYPA¦Lc…Jo0›’ÊXé…助æ¶Õ(P/”ˆ:k2TÁ»ºªó¬¨Ö#„)z“v±Šk½Ê#ma‘@7'—R;ß{+ І„înÏ~ÙO Õjó²U#½T)êKïCé—úŽ{Ã÷­³TƉÒCrÂñô©FÝ’âä”CõÁ;Rœñ‹oHAîôïGA3}¢í(_lC\53½ 7ƹ®Èù²ûâegJo”œÎPêÐŒ¢Cf@ME­¾­-YúOnÁ5zÈæ,:¼áÈÙ¤)}¾­¾«t¦ A°Ýóûçõ¤ÿz‡úÔsÔ…‘Ÿ†yx2ºÊ‡XŠÙèŸ÷C¥Ý±4é‰ô\ö¡^\ò÷^Vÿ+þîÒw@úæ}äoAñ7ëk#}õ1]ùRoùRÉŸ…OJaé»s:}ãû €ù›ä‡Zoêki黪å;¡ëóo:4×víÞÙ{n·×îuÞ¶;’î ûð6§s9ív”ý=OìŸýÿ!1`žM³:‡m¥ÍªZK{Øc©Ãÿî{,'¬'1s:â‹WT—ŽÛ¡DÖ’j®™¨$Z½#¿€Å±k}E­kÑ›¬ÕÃÂh4éJ­LtÔæÀÁŠjÝ)2„À'T¶Ž5jí#³€¢#¨˜›QÒ¯}šÖQ!iEa¡Mj%‚ÌÛ脘[žÙ´–Õìïʼn–Öí_Ýåù-WLJÁ2C“ÂÉ•ödŠlÓ8E Гw^ 5rÉwA×  ;è°`•ûµô ¯ƒ!¹®4¸<¸èfù’ójwHNf…::²ˆcãÏòçiƒoFIYz˜,Ü|çì° ÅSºŽÅJ»¸é:†ÀU —éRqÞ*ä}~—JÂø’î² ·°ß=4_*„‚í±]àg%×á§Š6½ ?†Ò¹Ëgfœ‰|Á^þðê‡rr^õm&Rk_ÙWîU©„H˜Õ‚^ïàõKü•r¬ýZL­_Ò_©ƒyYTr ïþäñçJÌJ£‚q;Qêã§×ôWê`M$/ýÄÿž'7íO³ ª²ÌÝ# ‹Âü1O¬=ps†¶ÖúýfV¹òäF›ÊÓ ²ª´Ic^+%&äȯè¯(Gf=â|‚Ë~ ¿R³Öàt¦ä^66óÖ –G`^Þ¢1‹Bª<sª[M,òåêÇÒæ°¬¤Õaùˆm.­ï®q™y©Ò±|ä¥Ê” %ói€;;ÕáaëS«}IvÊyÅî&« ÉàtQÍí§È·DØ ‡.xõC) XÍ+{Ý„¿ Ä~zU⎱‚¯9†°“Ûs^½z]Á¼Rg^O•­5àïÒ¨Y“¬r¿Òù“ú©É«7« £'d<ÄË«¢’wBŒlÇZDH¢ =%æï0‡T>)ùB§«•›¿ÑDV·ãaÇOjql ”!¹”z¼c:•‰£”2Û·ô7«Àp±·lÅéSI<Ú¹EèkdI—"W–þŽå%XHKQ ¬t•Þ˜hÔÙ‘TRjl×wésq~Þß“1“HJ=dxŸHzoDwy"éÃv¿=ŒHúÈÛ…õ&ìd˜I WÜJ:®ƒâ™w<@`«Ï.æmI¤ã)"¬Ÿ’qŽ×Ÿ·†¤/ï—µÂhé'°áÛ·çªìÒœÚו‹ðGi½ÔaJì!МnËEÆÇWH c½=t¹Ú8ðúN,‰í9qÏ#ŠüR„]zNv†Ðå½ÇS;`Ö¡;œ &ê¼/}ž–îq²àyƾïìì¥d;Øo™Ó¡¬§8ŠRé´b„16$Kç ïÒÛ :'A· ëÔr™Ó’NOµšdv|Ðy¥è$éÂZ)–¢i°›6‘¥Štø˜êîO”vã•ÙÎòkØ@EÒ\¶×àmñÚ·Åko)%l™IñËB˜»cÒ¼”!fUÓÓ±jÚÚhlXia£Ë£íÛ&pyôÁf; M"ìUFê²'ì‘Ôir¸ß»~g)Þ{G1xI׺^ÖˆãØx)k§#ô.¥Ö9Âõ:aL8rLƒÅ0ß³}ÒûõaÈ÷•2#œ{xxèç»g»îåù¯Dªa½„/K#=N#» èPæ z›Êœ§Ã˜mì9,âŒñ˜n’o ‰I_–|rœ|f)òAç»B™|a£óšmD¼@¹'Áå‰xZÚðµ­Ï,šW$ž^h}FÐD‹^V¨3PyªŸç UþôK6;xÍW¶póµT"žZ†x`(§´º¿r”ao庸Éw¶$qGvõ×¶lý„fX q„‰§6!8ñX½nGD?’†ìª Ê‹"‚_ý&´†XJìi::öÉg¤‰½Òb Ÿ“Jõ.tZ8[íËo\gظñhïNS¼ÖI×Û)j='tH7¼ò« ž×f!¡~}T½•ìFÝ,*llWßCUâü¬œ *@vTÚS›¨Òf6ÖëÊŠµ¶‹r\ƒÈ¥ _âÃ.ô3tÔ/LÍ^íÐ!ã𢯃Ç•‡YHóMÅ»²Œåeì3 v´¯ú ¹uð³™öM{ªoî¢u.û·þÁ8JEPÌ‚Á+½%ÇÕˆ\ =Ë@ò­ÇXµ¤›ã¤$^ùu°á¸1 aKÕ9¥êé0¢ŽVfÌÅûÍ&JÝßÔC6‰£ÚµóÑØ 4ÕÆwÒy—ý[ÿcFGgu›HÇvÇ%ˆiÇÕŠ\H­Ô²°·­žv‰ëI6ì]öUð W!f!È[¥ê£hi«¾í—ltmìñ 5¼­ÿk[Ãv\•È…TIÍv]ØÆvÎÍ€Ã+¿âk½Žö’v¾KÑ-{ÓÎÛþkŒ2ö”0nV.jeŸ  á>mŒ²!ÿPÿ5¿ãó. ½ )Çu‰\H—|sPÐLX#OPp6%'Œ‘'(8F¼ ‹ä BÌ £ä –É6aŽì”ä3F¿.ËÕÑvÆyÒú)­ª~R/U ºÒÒr3н´qª©¥Å©Øïgméd5qì×·uL{½ì9äÂ=ä€véÅ”:þ„öƒåІlŽR'$;îŸM|÷sµ÷è¯uì~|òþt|_r˜ÕC,Ü{¾<]âÉ;¯6ëðó‹§³éõlú½þ¼¹HµöÂN¥VøÇ@ªsÁçÆÄ@À«¹Ç–Q@µš¡O1ÐXè#BäÒ$©ÝJœ>ïbßÐT阜Ùèí+$£Îý7óô)›H%—”îÂa6Ð?²_ÛÙ)*wcòÂØhUPlVíÕ6ù®röþð:¾ ¥ÓÛ0Ÿ“M¨õ ±ñ¦ \zµ­ ÔUës"„••¡a.vM‡œ–‹­“ÔY'FGÔTìa?[UÍ: Wx%(4[Ìý<6ʆ©ÓÕG¸Øº9ëòx&¶!0åag&Ýí¸¦x–Üø,¦ û!)½3~ŽòræˆåÎÕ¹½ðË,8’ñ‚÷r-µY‹ï:ëó”¹³=Δ1åpÖ~B<üHÿ•zŠ@Né0Á%!„:'Sí*<ýìÅûË‹ÿ¸¹¼¾ÿÏ)¤zÀ;/óT{ä#gŒü`sþ$ùR³yÎL§(«'œ(ç9«'lù·Ã@ì.ƒ§Ìyœ/þâ ñ' ÷ÃYш mõ$þFF¾ø;*;y¾Ðó3„žš“o.ÞlÏͼég A5~}Úý'> j<áÖ„Ù¼L»¦EÚDj ©9KŸ¤æÈÈ—š§ÛŒ5__ËúÚL80W¦¬þ'Îù£HÉÓìRϨj£Ú £wFµfÔ£ŽŒü`yª=ù³OαhÔÉ-­Ÿ,šãGþòdÕJæËÈ0Rë“ÃH­Ÿ`äñ#?\Fž¬:Ó|ÆÓs”óÔ&“”ó„~b¼‘‘?4雲)ç'¶¼yóf{~¾?JUü³á”£Ó‘f)ÙÞé3;Ï]êÍ/¯RÄ&DCÇI™ wÿPAi]WÊl´º«pNtÌ|`4ÃtTS9 _ôÊ?™ŽÇüXWïòg7Íw–Íäf*»gg™äÇü`¾;å™kóEÞ '„šŠ¼/ ò“âø‘+ò–<%q~”kNdÀŸ>20•±òÄq##_*Úè¡C¡Âînt õºÒsZª.V<å©©ó¥ç +Q…“[‰*ù±è³'?åFh¹Ý}º¶›˜2¼èpÑ9Ãà1ñä‰OÏñ#_Nt*kéäûè\ØýÃÊn¬ö ÂÓ=æ…ôˆ‡Ñ(}T½ÔÔÛÈè¾øTPø=ÑihGÍÃD§ ˜Ê] @!&PÆŒüXÑÙ5z´Þøœèn³/AÏᕇËÏ&‰'7yÌTÆõߌüˆÄ>½‰Aõ"²ac$t¥êðó'U|­w„hýºWv†Üº©º’þMŽvSµ°ŒvZŸ09z¤àãørä©Çò¥µÖÛ©’‹òeP›@¶tè3fˆRôk¾x\k]†õÙép­°”n†GÓº ‘¸Ÿà³¸pBj¯ƒv_„ ¿qÔ§´ï¹ÒÁjJ°‡]ĵ½í"Š©~ˆBv3|AÖOØÐã¾)oýH¹X ­0«‹©ý¥¯~|½GªàgIò©(×kûÚ½.éU*Ó©fÔÄBSeŸìK÷²¸Aœ3§ì­Ê%ÊèàUx½§Øhóæ"LL·ýÁ¾²å’©1è%>ÑÅT©¸é¥üõÊ/çÝ×$½ßX­Toc©Î>õΈ9yttßÉ ±Wà.ïúzœO3}8@q]Nëî’ò]{Þ=‡Ìð©;õÉ?ϧäÔÔ™úµUî"j5¯‹)3ai÷éÆMuq—yê×äç ¤ïHf^q– ¡Æ^¹D/éZ×˪r\4õ!e|¥›QpÊMíO\`NíOÜ;§Þ52Ézô­xJڑǽÌg®nÏÑOsɇǴ÷?äàÁG?)¤û.éøA|¢È#Uv¤U¶ëŒ7v£m]\7§u.}À˜÷œ*Y<Öc‰ÁÉ30úƒ? =•±Ð˜¿ØÑƒ12y:¢b¡1¡#=85DpÂY~”Âþý1gõXKcæ–³_Ê›Ê7w|yÑöŽm3,ï^.ŸjL‡WØ´; “Ì¥Z§Âý—¢[]&¼Ã¨ýrâ”KAçã»Ñ! [ïbÇdXt‡£L.ƨ֩¦þPª¿&HÏÂxé* «ú ?Ât‘Ff;38¥s]‰Y2—×ȰqXÍ_@LŸ~‡«Tñ4º ‡ÙÛ·oßì?]t¬?SQÖ»ÔßÑgRì£qqºèXÀ£ŸåÏc³­Ä¡sÆ1†ŽF%×ÒÞ¶.b©{ ^ŒÞ|×áE÷ -áî6¦J»¸é2·Žš¶éeåÜi!àBª(©ä.WapjÑøiÞ9aš+-tðÞÃv3p}¸¹­Î?ÞþzvÿñvÛc½›‹Ëøß‹ë›‹íýç[t~~~~w‡ÿ÷¬Ë^R§¹ÒGëû•´t¨ŽD¿µ"xcVÀn´!,è ðÍ„ ž¦AóÕùJn謠/„(#ì;Ây’Ö¯Ü&(^z–ñÒ…UéŒt€‚œY©VÇ*Z!,®´³Q8·Òa£!P%5zHÜ@WÂÌ tÌQ…ž:‚ZS0Ö•¡*w>îè $£­\]­[ ¼ñ‚ëH³ú}¸xÒIçu•×îIçÙªÉÏ+úëó‹íÛ;þ´£úÙûíů—Ûßþ©%ó›³vÂ?œ½ÛòúÄ2I=Õ?¼¹¹½ØÞ6?9þ¯óSý.„›Ùny‚žÚþ.Ê¿ßýrvqódxÿÇßonÞšÉÐ ÒføãgÞà^^lïöÜG¿UoÞÜ|*ÿþÛå5ˆXµïØb½þÍ+û¶vRÿŠO»UÛÿ‰ˆÛêÎöÇ»ë³Õ»«›7gWàÕ³«»}o÷þìÓåûËß·…ø!Äõøj®î.Mÿ†ï?ÝÞ¼ÿÛ­0î?·÷÷—×ïvbŸÄË÷Ï>}¦ÛÚÆ›ÛËw—×4¾v¶šÆÏÝÆ;âÙëwŸRäð§Ï…ŸšEBG.µëgµÚ¾ÿ°ç—li¨üò¬Ýäíuß»E±ZýzywùæjÛáŠæh¹‹^+Ѹ¾žèBjïîæúês}Y+JZ‘Á\— K£6Ëäz'Ù?ÜÜ]¦ÖÊ…µŠ­lž”NÓÅO2Ö™%z¡òdN)í×k]äÉ•m_:ØxP_Ð"…¾4í–ÀŒÑP¬Ÿ >«;ûëó¡Àåö÷Ûû³‹³û³ômZ,ë†ßo/Þ¾øß¯juíùù‹ÿ÷æö;•@œ½¹ùˆ%Üjd\wqþ‚pÇÙý¿^¾Ç"z~÷ë»ÿñéýô@ûCçbZ»‡¦ÇÞ‚>Þžƒ—~¹¿ÿðâùóo¯67·ïðüßûKºéùÞCý;u’!Äú¡—÷WÛå>ÓÇfÏëa4ª*å_Ÿ7dàoïzbáêìÍRåo—¿n¯®nVr(Oo>~xÓÕ«•T¤Â¢ hs"*ã¨ÉªMÑy/ÜÄ7ðæJϳÑ4/éÐãæiV‡@f#|´†š¢‚~6Üfñ‚®Ÿ’Z?ÏÕü›5¾Z9½‰Zðt·­Îfoq€¶C`;s•Rì4¦[]F«Š-à¶ZùÄèÞ|©°èW^´ã Å€;ƒ‘0CGç†b<0É€6a«­¢Â²’d¢âÕ<Œ ë÷йR8Ð~õÖÉOá—òžP)VºkÒì¼NÜš¿JMtb6MhDä6£´ò<‡!ÄÔA;£ÛQ7›d lÒK‘€qZsƒŽF…¼¥Ã¿ïN í˜ s#L!óÝ_vòÕÓ¶ ˆó5,žer®aß­ÎVÄÚA(åÖí§•à?rc+ª³ vÌ, <œÁ­^«@&IÆ…¨×` ¥g"n캡óU#£éc݉ԓ†à¦Óø‚‰|Iô’Äs Ð1|Ô=ð\®Ó?ãOMoëôŠ ×>³Ùê,x_°”uðt`DíXN'A²ÃxŠʱ šb~}‹'“Ö‰½¢dUr#¬™ ¥w~þÅrKŠDÒ£Ñb¥óžï0ÒVPM/Žõ•½ã‡` ±6‚HÑ|õV"‰ 6Æ™øtü IAjíé»ÎÕï¹J³M_búcd#”4|³iPFÐÓkåׇô»r©3Ÿ\éáíåõ«ˆÀñ çéNÊLhèªfÎX“ãêˆÁ &`¤-–XhÊ“~Žª\‘lÍä5 ¥ À ÐK:Ú¸ª?è•nHÈå=gÛ‚™O+çé”â©O/Z¯ ,§ ¬ˆà¼4¦æ6áDà%Y&t,iT´ì~y<éaÍ/TA,òæ>iÄ f„ä'#U £_U •yí ¬ Y_ !Ê;KrS€äæâ¸ø÷SkÝi'KWBaqŠ€!ü½câçÅ„ôL (E³’IŠ'Tĺ°L#k#…'îõô¾ڌڬh㤇*¦Y§£“WšÑ[m5Ug³D‚¬©6&4ù—¨Ð«& eŒÄbC‡¸šHJÂOC8îZèHm‡7ß¹ À\‚Û†`*K™åÄ›Â[“óÀº¤ç–µÊTÐ*£SãIhè°–H@¸@½Ìš2!ÖŒ ZãXš˜ÈNX’|y¬í¿¡<™\Í ’}ŽÜ}$ÜFÀ½@7š¿B£7¤r\#ÉD¨E®Vf[Ù„ŽI'±TŠ»‡Ô׃wƒ–®~@¤Y“˜Ð$î<¬¡4ÌÉ€¥ºï´b­Øa™l†æl ö•*ò}B ‚ï¿Àùàœ„µIKrU^5L…ÅKiÐ:,p‰r»J:H=‰$G¸ñ< È€´–¹rGMQÝÙeM.‹ÙÝ ;£ö ¤]ú¿ÅÎêÈ61> Kêš% ±  VyÂÉiC5¡•·Qf, ,¸­À`šVý R>Ñ[XfkKëh„’I’(<™†ø]±Ã÷l~¥íƃ{H¯â£Â ³¢‡ØgÞ¥ø!µò1»@LIzeŒ.™›=å#ÕÌéXz´<„»Æ~0Ôõî/;IÓMMÄ$†J $Í´òHð8ŸÿƒQ~¹ï+jøþ¿Sã·2Еÿnÿxœ²ÒaÔwqw{ó-¸ýz[€ëNzY…¾'Cb®×ÖPnH œ¬0ËÊìpPE„ý ­HR‡\ä3€ü©(i éÁc¸ LUAIZUd’g@¸W 4Mª:ù7„@LAâYž‚*äaH€¦]TÎk»k¢ÆhZÃÜÄ`M Ö3 hF­8†´š5‘³DjKÈÝæÄ]lx“ð+1NJûÀŠ£7Ñ’4v$N „$™³‚™^BZÅ!"tûŒ¦Î‰cèjå€=I„›NT šŽj…Õû &ÂÂø$å ¦£¯‚ „r)fY.(ïèïnܯ¡,T‚J9R ð‡õ F0kžÖ¡"óØ1éÖëùPI 6ÀeZ{– ³òzM;p.ˆ­ ~Me) 3"³ì8®–…–ÇUt š±†±*& s ¾¶Å,InôN“«Ï²”ƒéaw¯`,Ò‰ 8’; ¨5¢‰ð!¸œkÀ.†87P€S‚é˜t~+kÝe-{ù–X»Ë¸a/ã¬Tüb43®F+ËÞ=ÁÀ2Œ´ ,û|ËJð ¹á ÞAmZÆÐ(dÓD Ö ;@r(´ ^K™ø©š‰Å¹â³ÄáÚÚ^³¸vd‰`j Åta-èÒ±dÀf,þ®&´£Ðbñí:Ô6dT‚]•¯@w‘,}JrzP,ýÝÞ€|½B  {Œ&9WÕíÇ«í‹í¯[,Ö‹fšëÓ×e|¡š¯„Ó±t_¼ùxŸ·ýß›Ëë·7¯›çTï/1oW—øç…iÚúÓ]]œÝýrv{{ö™'¾Ÿ@nçࣃeG>8ð4Ľ¡¥€jA^ŠÄkÝ€u ¬ šÀŒ#Ë«Ô O¦7Á'ÜD+Ðk ¦šØD†Ž¼ˆª±n±4}k® ¿ÐJê4¥g GÂñ‹Ê“,Oo¢6N“׺mø}õžtå7²‹…<˜žÜ<ÉZ†Çñ4˜ð¤ÔhÅ®é=Øœ6xúî à<ú]Xº€žMÈ_˜‰H5žvàRÓ¨0¥FIª-jA €y^)Ç@†Ó^±» ø|ê˜Æ_ìÒëÀGO‚H²m9wBñ;cüÀÊÂlÝþ:Ò#†ê!PbHQà­Ö$Q¥ÈõPKÂÞ@’ùÙ£8a#:dæ`\i:+òÁD†‘ ?›jH`l[²ÑÚg7´ˆÝ‡£KÀvïv#à‚O2ÍKÓì@S(Q•ËlHï“HMäÛõ‚—‰²a®‚á´Ú=ÝíìÆÿ}õwÜ & V’wÂxikOÔš­ 5ö³Õ®ȤH¾4IÙˆ5F | À?t »rhHJÃ$ ä‚ÎbŸ¡”|ZAF±µ4è½eoDÄ„±ùÚsª™¨oÅnŸ¶wrZ˜ÀøžúOLƒ·Ož^îŸÇŠ´~òIê˜Ô/½„L…werm´oÁ/áeM}òYvVIb=ã"{9¥SÉgC¯™Æ¯bí%ÙmCaïad27³¥½¿ªn~­çÀ–Pì"Í*@Òt4lwŸúÓüÆîwšëû»†š‹ah¸h8·)’«bÐa=ÂbwG¸|Z¶Ý9Ó €ÙD~o<{\÷/èE!Ë㾋l;Ô‘b k RF›Í®Çä´Udq$¯­IÉ_Îúþ çД’Š@eéz_3Ínˆ:ùÄ•±ÉaÅÀµõ¥Žg\`vÙýGxYftM=Ö¿7?§y„GF}°bŒ°2‰›ëèÚ3~e—ÿHaèv*óa¶ÒâìtèÔïìíÎFåÈ!U 9SXŒ¡^IÚÍÎ4bVí”^5 ÙÌ¥ÏF©†“é÷slQHí; Dy{ô0ÃN–»Â’LãÔ¥ÁtÖIŸgÝ8Óºv:i˜ÍtêÁ|zS¯!˜4Rí¸Å±°íuêÇÆZÓlHó°T´yx]ÿ-`pñ[@1¸4öä)‡fM_Bôߢ‘°í€eVa÷Ê<fª;§‘ŒÄòØÈ•%{Üß«–Juz5PøGN*Œ:IÜT‹w7²hÈåÒ]5°\ý`Õ䛑á&éPsSI¯4ýšFî¶ýZ=¼~|¼ž¡ Ab`¦‘(Ã2Ðm°L'˜©†h¦º†3 &oµx&à žaÏ$‰¾. iÀÔÑ Mý¶Å3uÿª…35šñ;4S#*Ÿ£™ôNöÀ -š¡Œr™bo­ºnYågÒµ:òìÜ.ï +@™ª¯r¹Yè,¤Þf×iòk ãì 7㊪§çûH¦ê‹Žzp2Af7Ö 2ì]d£ÃrÑÕËYµÐ. †gu§;Êêꡆ±îBGÙö‰9èÌ'Øö‚?|êˆ#T›#iuUC¹‘:õôÕ¬=†˜µnoUûYHû°Ê³¶Õ=tŸŒz/»d#ìóK—;C©C3è6(wh¤æ£¶{çolúJk¡í,0Ôš­O°2äŒL1nöš£ErSï áî íUŽ)_/6Ôa-Óg LJ 1¬Î¤FÃ_ìÓ3j£rÈ7jlƒ·Õë×áiôNÝdb°öm¦Z~¥àRï)S`ÏPEˆ‘ª°-´´Hv:®'r\a¬µÞ1R&¹Á+SëÐ@R5l±[_⥒ä]Á!<*S,ί T3B`¹ŸÂ-kú–Fšf•RSe>«Â:³Ÿ‘Ž¡n_¢cº;úÊûhú¤Óe²zovÏû‹€ž{§²Ô_"*¥j²†ÖKXRâw#R–•¨}"%˜’Ü)4w••è*Rº1s±p 0èúÞt)[¡B¤¸{iýÜÄÂêt-ÔcØ·­ê·HòOH]'$³¦ùn£‘)ë ðÅQ¬Êºµ¹´ª¯m.;ӓù«æìJ‰«ê©ß#]:›ôì`ÒWþ‘Æ—=‰Ç_}z°O1¦\M¸¿cŒ†\ ÀWÁCòZŠE:Úg¥H®0#8ó¼ú¤ÐK_k˜ Z(±’’°(].9TD9Áʘ’‘…Uæ¸ZQ¨Ä„ä tÀ”zc-ûÄ,é>b(møf‰¾ap¦¶ÂýÖ±œ‡6`¥ yOa§Î&°rÆÍ¬ÿš,ˆSüwÒg§ÿ²–|ƒàÌì¢AddaÔûÖïúñ†H§Û+GÜ³ÒØÀ`b,2ŽÂ×<åkT&åKº¾ùþ~Ç›«Ïïn®»›}ó¾)ö2UùÍ´bÀÌFPðŠ(€èŒ/¹üÍr¡…ý›#KùbÊÛᄅœ•îxb-9”P~oZÝèÖ¦¼åÇèAZ™¬€B G b8r:†sÐÈãÈÈ¿Ì<äõƒÈ«Ž‚R‘ó‘;,r‡;Y`ѶʤÙ°(©ŒHÛ…”Ý'¶L|,ŠäË,Ž o,ŽSPj_Q4˜WŽžŽªj/bàJ\:{àj z±3ÙOW¼Õ«MšÁ¦y¿!ÿ I‰Ö1m\Wý8`ò[ÙUë8£Ï8³¬8Ò¡³0`•¼VV^ÑÉ'œcb‚ã‡q@7+˜üZGGë÷H¯A©¿/8K»Äû—‘óÅsº?c´g£ÂzåsŸœ*úwÛeǧü lC' PÎŒ~%ŽZß×D|RhQoFÐQø¢î ia aU5SXˆ·üÙc“ªõÊT™ÿ å£Ä&ÃØ0C>Ì/›Tƒù<}lÒ=049~sB“%úîB“¡3¥´vo\tHh²+d— M–¸÷ÀФMÚcB“ªÛ¯Õ} 8#2ù88/QƒWü«y“`oè5’$m^5€zÕÞi öZ”•½ªŒö¤¹ƒ{C´×’ ¹::LÊï¾(Ò‹²t[Œò #‹‡„nmÎ5ßzè6u»pèV—Fú•…n‰£ŽP·º Y—ºíϨíÒŽÅK¡[Ÿ÷•íKƒÉÐíq0á]WÑ¿“1w"§JlÕ›³ó¼ã½0ß?»ÞþF¿dõ÷ùÔÕÔýÏ9Šn*"¨DµÖ\]þ í ½[´aWPm)O¢*£Y­®.²éí Šþžå¿·¦sd a¬¦8íÚ:*NQO c¶íeª ªÔRñ²«c؆ù_&Ÿ^RŠ2yF6»LÔOcÞª‹’$çIÚP,L b§vâúôE’Q»NW0¢är¬cѤAèŠöK{KQG°%gsk]¬³ËøautšãÚ²Þ—‘îO›”Á¬ëDŠ*Ñ‚IÑ¥ô|¾{þn‡T“K|‚WPίÀ ö´TãýRthrð¢ƒ]÷Á^Þ”Wo+C`ý]o¿T´—8蔛IJ|ˆkªnR¹mÐ>Rnev¹•ŠJÁðMçÔ¿`"¸1ÁöCOû÷ß7Âå ×C'Ê ôҤז¶–•Ò8-µMCø]ã=·àHgÕŒ¢¾Çɨ‡‚ªQ£kÆÜC¿f(^«\T×ÅS#¢uŽqnЦ2¡a(äkö]¦Ý»Ñç‡QA\ª´°a³*½ïŠ»G©zÛx™NM²„w6ߨ< í(´ŽöØSt+No¥bÎû7>´šs)_£Ù;ä¾àštnm"t»æªH”ÝŠ=Ðé&\GÊM­Ôšr°éh†àm­ùÉ9A;¹t§¼•¤b‡uY©º*›é#žÓ¯«@aO·IŸ¢£o,¸‚[z…éé.Yhã¦Tœ MÜ1×a[ TÏ¿óg~#®d!k¨<»M›QW”b¼£J<Ä"ä¯,FíI‰¥öŠö´Òî>³¦#N l¨‹±v_ ʬºe½Éúâìðm_Y‹°B6ÁÃP—[[“jô¯xϦ¤Àó¸I5<+ *Bè8—LšTŸ 1pµ+*ÅÍ“PÿË4a±VûTrf ÑõNuˆ0CÁÞšô&UÅ”0îpºÞ÷”L¨Ä°¿!uÌŽ.¾Ãzò¨‘ —*‹8â9:e‹ÀRXI-¶)E*€†{“ÓXŠÚMCµ7¹‚×ʱud$øt>½…áêÄÇ2? –ŽÁX©]¡NºÈH_ã4ûÞ=»¼è~ØNŠ*„6ËÀ¥[¨XCêQsÉÚ»t*D¾aÒMA¶D)Øu 7Øcl޵£4õ( ©2hK:t›2q(½y}Cª)Ú\ÅaÕ_Ky‰©°aF^NÕqѲe`_ÂS‘Êi wý…†neÐTôd Võý€ïÈ2Ãâó—]gáù!0wŠÊ9)×T“*¡Lã u&ª¦ÚŸŒ”ëú­2P–Íž&€Õ*ùÑ‘Œ1ªæ§tí)nO3TÏ{j»â²FRyˆz?=~¡¤Múè] ê¼òpM§)}`!ªé"2êýüéÑt—‘!»¶t·ßÔM¬:Ò­œa__ZµçMYçœJêR)",E/¼ ”Nr@ .õG…B<9Ø›Oy{Ä,¿e-I*–“\ò.¦ Ti‚Lª(»9'˜éÿ¸¾9ÿ×}þ_YñŒÿ÷óIGWGÒ–®ÕZ›¤B8…<•ƒšT\ Ó¥½oÖétº ¹ôìÈ ™CEl\˜qýw{\§RŽZ/¯µ-¬1kØ{‘ª(ÕÊQEð¹l¦ÏÅ6ä[™6Ôº­?y ‹C†w½¶ú3WŸT°(UØÓÎÇ´íïæ„­ÅþNtÚ’ºI]/¨FódM­ºéˆº/¢/;ÚºƒÒ«º‹þºP— Y—ëšB¹ãʰ*hê «LVC…XMhIJB|ø4”KU¦~ºSLQH’@À”Sº/þI½é5T•|ÝÕn Ô*8“ä æ©—”½cøÕX˜PIÐ$àx?[*»NÕ¿ëBÍ.®j›V7[Ð’`ƒeOU©)¨b°Í¤»m5îx°Sµ¶ÇUF.¯ M!¬³³é¤Iˆl©ž¬Ç'ëñ”Ó”pZk=Zò #Û?›õH»OAí>i­G+¹F½ó_ŸõX0ŸÌǯÒ|ôöѵc\^;Ú’›¥ò–Á2-¨|2ŸÌÇE¸®„ɺ\çêÊ >óÑû“¨D[vÕæ#Ý쌳¶•4r†õ8ChiëQ˜ØÐD¶þiGÀLãQžÐz &ë1>¶~´þú±ätÙYŽJ¨<ÙŽO¶ãIÕ¥+´íʼn¡iýg³ƒ<‰¢t%p²³ýÆÃþ³ö$¶£ïÙŽþ)òø šŽA?¶jt'HËq£1 y/¾}²Ÿ,Ç%™®Ë™N™´Ë÷Ïg9†Ó¤âø²¨¶àŒzžLÇ'Ëq6~ôÄ‚Ä_ò·´–££Ólèè¼'ÛñÉv<¥Âô%”ÖÚŽÄÒZ%ÿt¶ãirt| ž´¶#>AþÐÖ§¸ã“ñx$çÆGÏÊ 'ÈÊ £ Gûv¥k1å“õød=.Âu£ÉÒÄu!ØTÌãÏg=ÆÓ¤â„²›¨±A}Kƒ|²Ÿ ññ£'æ„$æÄ’Óeg>Æ”¶:Ïz,·tmÇ04íÐr´ŽÃ‰ÎÍÆL Ú¨À4àPv ÆÜ^,X‹cqÌV,XŠLÝX*“Š‘T‡ù©¹bÔC+qh$ŽÙˆ1W‡eñDöaô‚óR;i©CëphžØ6ÌÌÁÁÇ}z¡ ƵBAV”ÂÜ&Ü™„›<Ì ,؃v9X°Ý|ô$›x‚$›8Ôñ*%¡NØ‚¹Ÿ³7oK°oÚ¾F ˜€~Ô û/vÙc+¾$*mn÷Ù‚ÙWZ³x£/`ýMr—Ó…\Ó®fZ|ƒoÜÞš{®(j·ÓØzJœ"u¤.{uj[¤Þ›c:4ëÊ-;/Ì<;°òìF^fãåxñX oxðv%Ê¡}×3ù:ÄGÐâ rí#çÍ€¡Ï›Á3GËÙx;?¥Ô–[zAÁBL°|2ìAÀoòîÃqúhß²Óã–Xvz¿eçú†ž4ììi ;%N‘#„-Wã'º?˜a‡*ÁU‚?P%ø²açw†jí:Ýr‰þ’v]xd»N‰GN/žƒgކ[|˜•!z¬]g ñ½Bx¯Ý;ж ™,ÓydoIݧžl»"‡ °Ôßû‚¬• ƒéàÖ>nšªaߪiwŠÌPz´ú ÈJI f1Ó.,jÚ©e§¶ìþž+òû<vËñ¬|äœX‹ç´à™£•f‚äŒÏxRËî¡!;U@k_™e'‡¦]švñ ˜?½öûËÅå݇«³Ï/.¯‰ûO!¢Õh‰ð§zþI"xJêïƒæ£…f‚J Ÿ™Ýv_‡Uká=i÷-µQð« è•ì¾'xí>óõÚ}ÒŽ0í£èÅÅSY‚(–òmAz0œë9Y¡ôd~©Ÿù˜ ”õhr11¥y"~zÂ,ÔC³P™…n`ê)«ÐžÊ*”þ1´ážbĵ‘H§†Ôç¶~sFâ ÿÍËî‰áe$Æ/¬õâ©/xæh}™àŸlÆ'›ñ”ÛŒ––ÿý©lF%CK+ïlÆðd3>ÙŒ‡0혣ã1ô¢9A’L±€o á£x²ŸlÆen4™îOg3ª1gÔb„ßS¸¶£|²ŸlÆãYxÌíñºÑž ­¦XÉ·µ£~²ŸlÆ“JìÑ’2à¿?—Í8æ–ZŽæ£…e¢y²ŸlƘV9:r½øÐc³ƒp½sÑ߯¤ðõÑæ&Ö‡ŽŸÓ@š˜ÏðaUYè%“&#ñJ¨¯¦óÑÓÁÉt9VÑõ¹äthx{ 9¸Óêd®É@§YODלâ̇4?ÆQË ppò8VlHgZc¬JÑñÑ ‡V>¸]*±²6GMŸ³«ÿ ¶Ýÿ}¥ê£)¦Ù~µ’ª²‹ZŒµRÇæØx»û@J!¤»¡¡øóuóaUÀ]ƒ¥k¤$§n7¬Â—ºæqf6édO$ ƒ—\³£9˜Ö{v>Ö¯õ–ÿë½V_¢4 LÒQ Jj\’ÊNƒ†¨—XŠ9·ÿ•–›Ý`ýªÖ”U†ž€KAÉ(üʸ5¯ˆi̼ÒÞp!{¥$Ër‹… ¥É¿%œWu:‘b[aÆTÜèv¨JB|*Æ1ù¿]—•tP)Áßן n4Ì&bj4R…÷Ⱦ#Óôs#˃#´ ÔÊçãæâòþ‡ ¾ØÞþ°½ûþÙyýßÂrÒï—“~ '}.'}#'}’“r[9ÌÓkúˆ¹#Ôi°rÓli€t}þÍÕ;u9œ9—OœyGn%®0(Í À ý<„)'5Ä  ¾°hÓŠÔ‚¼ì›S`0Âwòˆ©œpÎIHHƒ0ßIÔ8¹´t¢–Ñ“é¾ ¨Xx"' 죂K¡S»VËeæGöfí|žü\0Q3Rfšª`]ïÎ1»³, =ƒU5«EØ»Iâ[L;ñv%¿`DËv€LBhª¨ ¬Øôx†I¥´N:SÁ0gûÆ©àP„9—a¥6¥›þ¤^Ž Èナife: Ÿ‹µZvu±]r?(z¯DµÖ’´Õ+°té¼+­„æ@„²Â$_±&+8$¯'¸‡‡&’‚ßM!5ë$Þ‚IhcI8¯ÌZÁöƒ=Ìö8UX|ûÈ[–œ…HL &Um…æ±½%ÉC}µr6t4-ØTÒ뜡 d"?uU?#…Gø±«æ! "ø¹DÚÀöÄ ð~íïõüÎøÈO¤BÄön¼®Šæ4fÁŽIVY*€ÊBz›D$ðqCšT°ë‚ yE%ÓREš¬ßû,ÚJ[¯;–ý §l§Ùï_1Е¦@PcÈÆ@>óìÓ©%Šäó‰¾:’í Ü–¼rÂC)]tÌ Íå«¡N0ùª¹<áX/Úuê ¤NLoU\5W¯ëp¬«qúÐë€Í±h[VJœ$8„f40ýªšUåª]>U»~FæÉ>þ<ù#æÉQd’„%[ +ŸkÜÖS“‰ˆ˜ÊœÖk‰–V¯Ê"uíR"ý=Ë -;ë1QÒs<–dZi=°Þ1JØ´ÐØE© GS=Eçhù°3Ää(Š–*έ¹Yû6lt0ÓÙF0^¦ðJ$¿‹O«ê²‚X«|7 &‹:rÆäh¢7ɹª„o!2Al`¯ÈòÃsý1C£§–€ŸL(0ÞvW2\",Àôo™dÙ ¿¸‚}ìÉõÖ(™œ_Ä]µ¿ä2µ‡ŠÜÏ­g_„‹ŒÉÝ`t¨ë:G0??£OUh“Ok‡è”¦Ä$; ö¢;$X•"[ÁQ¸ZH|,ßuAîü9ûA\ì^%È¢„& óPFC6Tò:Å Øž]{PU‰™ Ø%ÙqÐíõN7:Ó;Ðtàn_;1e²›ø'¹>%õPÛó©bE©ÉiÜ™´¼©ï´,/SP,Ê˃˜ÔLy •$}4£ ¨Á³{µ¾ª}ô\ÖOq =ÎWJIІV­Tã˜tsèŒV0Ä]41éfÀvŽvJ2ªIuJ‘Ô>?ž–;0±¡÷‚x…eNËEÍ΋T³Å«Ù¤ÁhÍË)‘ô"?–´¹ÐN éV:vó|'Hªæ5V9±øE¸;î—´ˆ%ûž;Nxˆ^eÕtÍ«Q±%xÕø Òë$€[Ï €l÷¦ú3kŸ¼F$y´Tòײƒ¼¸A$gH Ú@IŒ ¶ýª:áƒ1®g¨$¸è%Wô‚SFŒ÷Áök|¬Vg/Î.nÞl«7WÛë‹ËëwÕ{ØàâW÷—®>$÷—Ø:ý(ú,ƒ;V‹ÙWŽp,&“Â4pŽ´×ÀѲÁî0ÝR& +š$ñ`àkFXG*þädŽgúº}­ÐǺ}ª¾:è Âȃ™kݲVÅ\OP'±=³¯BÆõ2Ô@%§u®ñܱyÌ<¬Ø›–¤¯‰XÉà§ Ù¶2O»ø“ÓÁPõ=±æ@¾®X£}ù,0pµJâI™Z‚ $ q“­‹² Mx%:Ñu’‡`“ÆV-ÞpÒ†u§J» l“°PWÍ›¦Ç&Û^3{6Að' ÂÏ3´m—!'žbˆ?ÈõŒáBÌ¡É 2ÀH[Ë©]ô ¼bG¯`kÞ§çŽË‚á `~¹dGº@.\ ³ëA‘é$%€r8 à,òÃjˆ³X#2°[òà­¥M¥Î€†Sºp‹¨+Ú”­NŠÎ)ˆjž0ˆ;‘ìT2—S²Él–˜ãÁ1ªHÕh^VF2ð„Su‰ËÜ’Yö@ üÉ€H,.Š S%q³>Ö@ÄaþœÞæà#ã”!Žc²Æ‘ä'æ…‚Jœª)'dW¯€€š Ø-o"ÀŠG¤“-„wŒàyÚšÌDÍ.uÁËÂĤO±hSR g¶dª,Í£Ô\ÈÃLX‡j›Sï®v6xKaê.†ÀÉg™£ e«9M¨M»´džó":PlÝ7ð’aDP ÍÅS)ɲ"Oƒ¸.ð m8Í® í8,B¹pŒ}ÈÓÂPZš×lK˜äpI¬ù nN) x ¬òƒXA+¤^G‘ó=` Ih«â“S¡aj¸…›R°†ÞfÅÆ@Hˆ"½5QD&é~ŸUÓ{×”ºOŸ^)±†"™[5ï´úÛÊB÷é0½ŠV#ða\½¢VÜ I·f‡&àñ©#Ã<ÃmV©y¢¤áÝáRü3b£Ñ‰„$¡Û(˜ ÙPJȆ—ÌÖB’ |‹i}XAp\ F+ùÀYÿ8 †.P ‘u…p5¿¦g¬øúÚp!_ìüúòd‚ÿ¢bó@锸>‰¤j^®YÛ®«ª^XK«nU¯Ü1YåãÏÔQÞ-QÁ–'®ä%i‰ÙY>$ ’áØà ÷ÉY›„A& ZËNšihðd£|Jf*WÙf!Qf-GO›lÊ\°òÀ ëÐ5˜æ¡H`"û&y4ÀféH!h' û8 ëøÝŠ#ç¬+=9tëÔmUŠçrŠ….’A§¤K‡—hð’nnfU%ÀÔ,s ªIŽÐ­$w0Ej#ÛŠÐp<žÝA2^P ÅRé†#s¢³Áv05Ë?€I¾:¨N¾ M…Û)†ë^ÒRSÔ C-ɧÊ/¾ó;IK&.ëH¬=·¯-þ“Ab›ŸÇà0¹çIp¯Z)<¾*Ä~rigèÁJ´§+Ñ—8߸QŠr‘¥ÛPKÕn\J>%.„p©ò¥Éûï±¥] 8†© àüT6Ð@Ùójà çä"¡ãéF“’ѳ¦è5ëf†"Þ$°¢“–®<+ä]æŒ3®¨Ëøb‰LŠH&¯+¬(¶ÀE}Ša¿b˰‡R_'u«AäêÄžðÊy²) -í÷=²“ªŒà¨iZ´2J¸F<$ udièÈDâq‰Ã  ‰1åÁ ¸R,wŒ Uš–Aȼ£·"¤7®IÁyÁB2{Cé8~•,É]„’%’¯ ä-Ýú" 4ÄŒÆà>Çù£„þ8¿Æ¥§e®ï¢! Úî×Fœ9Ñ<ÆTRR˜ “¶’Jù’7è6ŠÏŽŸ Òã™û¥æa†ciî(݃Cá‚ßRd8’µOøÞiÜ¥hÛ€¡8¶%¢ [3„WÖt<‰˜)Ôdb»¥6(s“ÂO"x»;ö) ˆú ( "Ø´1ˆµÓÞå&…܇šöl¯)g¬ô³\dç(aNMÅa ¥ˆÓ¦gí³"nË•^rÂÀP€98ä¤8“¢äžRZžRZ¾hJËÃR͵°¦ÍNÙ]ûçÌl™=]Etb{g½,:O²ßÊlyÊlY2³å  °í”gGvŠá?V‚lÁè<„ ‡ÉOi8Oi8Mߌ4œLç,žß™=»Øÿ¤™-»ö”¸£ŒŸ2[ž2[Va9’`Dk´!WÅPÎê*pH@ ”ãrè)¼bˆš5SÔ<á(1£2Ôœš– 'eÕëeiÁíOˆ“LÓ’*õ ×-Yö R“R™ÝÄàÉ “÷“’Tâ8 Û|ÎK‘Îh€R-Jêb½õAc¢„ÜÃ,J€¾£¡­Nù‡–¼ªô2&eáÕ}w&¦¤"ƒ|†-–DqZ{yú@Zyä¶Áªr­Ÿ„XÉ5pÏå-In%Ôçbú ÙŠbé$| «8ôšè±ªš ÂP;\DŠxÍ~”ÖÑ$<–€8²^êÞq褎X“ƒ™–r!S°@BÎBü%Øià±/õÈÞJ1˜ö4& åÙTë /ešuÀVÔº.±é9Í…%N¶LÿäP ä’Ö1ƨIY l˜ú5DZÔÇ7¸N4vg´1Us.µ)`R™ÀYñ)FFU'…oì8Òª—w/õ©ŸL&KÆæ’4ûZ¤ð,Fæ¸Z£€¬Òds µùå έ‘Åsk4-x0˜ ”)"j§g]¦¸vÍÔ8ˆTGžÜŠ`:á¡r¸€ª’3H ð:µ¯ÃÒW¶nBD‚#ÒäªWûxeªeß…d <8‚WyŠ’q%lrѯ²cÀ4 É‚“¤`=°‹˜Ä=ËŠÌnÓ¿¸r®Óiå¦:×TêÑ‘×?P@§û¹>/gÕÛoJ‰¯ú‡å¤$I>áÀôËÎÚÙÕåož³ê—êO„ ü[è—`5ŸÞA/ƒÕªåÂîªÝR64ÎÕfí‚!jy™êŠ´%O1…=’#æ [ø5«:ãÏtš¢”¿+Ö‡ngÜV)Ky§¦l:±CËÕq5iHN¥Q›@Ç’°ŠŠåc¶ð “ÂcOh›l Ä )¬ÊYUJ/·$»µfʸnÞ¯mH'˜#‚ÑΧ„I›ôà©Ú†íº;ʤòdHÌYÏÝÃpê2òÍSªì1;GMö˜ì)ÙC.™¾‹ƒÃ ¥#ê"ºEæåwQÕÓÓ×ê·Ë‹û_^P5S/œ2ªiy¿½½ºÄ?/LÓ–Õí5@˜N4–Zuqv÷ËÙííÙçt²^w§WIŸƒV½­G%!))”\¬IHBíщ3UdtmCJ…Þ‹ÑõdòB2±pvõ¤ˆ9;Ú’hevöM{H—JjÙZÈ^ŒœaË’ÞS„f ª—Ô2@ªœ§¢MdƒÈzï5+á(‡ÂA´×ÂíZ e)%™SÁ0¦§µ9ó81Ñà  Å¡ëúlT:<˜ ;ŒWÕOži¡êÓFˆ}9ÁW‘‡˜Ã˜äßç;g#W»·ÛOÔ‰`˜&ÅžpO™ë)6E1ZŸhÑÃXœü©:aJòØóÜ惀 /9#‡Ý-v–°#õ°kÓœbæXw`‘Szi2ÎcÀ-¸k¾,µäñ¾Ÿ±» #–Žš¢”1Fdÿw £Sü Unmhɹ S"¹¬r|0Ìö2ÐÖ2{ÅíH}™½k1°kLZŸV³j3¯3éÖ=×B9oÿI7ºÓÔ<‘Cè0>LÚê@{͇P .ÝL –4ÔîÉ(ÓC yS˜‰FJ¨ÓkZbT-5ª]î*q…Aù0  n Û[JJà-,déCÞ¦hIùtÞ‡\5Š`6™¶¾š¬½|IÆëûñb¼Ò‰Ÿ¢Ø6¬µ£,ygêÐØ E#¤Fî ZˆU“wÈD«=Ðÿµa'|{S:†jH§*ö`Šd7ÀȈ‘’¶ ÄTU€6ʆ&eò!ìŒöʦÓÑRvû½nŸR'¥Jñ‘·Ò`Îi¯Bæàá·æX_zé«U è‹a^rýwEmiÍi¦·t ‹ùùìVšüGÊ¢òŸª5r›ˆ'™æ€ÈCU.gÏÒTW5<Îzo°jnÌ®œtÈϨ²w ÄØ^TËDç2¥¬ø-m‘¢ãÀªNsÕ¶Ó3ÚŸ$%‘ù^Ó¦IWÙù\»¨“nóéX˜èÚ›dlåe©²§ä ³yJöìKòqßH^ˆ_ˇ«FØHX‰;†­:ìSí?Î-Ú†Újȼ)»÷¨ìÊ컓½cNe6„]%µ;ÉŒ²ÿi;fcä¤Tì|/Û#¹Ó4¥³÷4íN8É™ÞÙÕí£ºmí#DÚª4û Å.|·£ ½ºø€Î+ìÞ {ݺÿÒÈ|¨;gÛŒÂÀ!Èîìîˆ[ m6?ùÊÛÃ_UÁzSÜpIo†ól}ËŸÐy‡“ y¬ÓÛý‚ë>ôs¯Z÷¥Cä,82œuè󮿬Ã'33»ŸÌúà¾#ç²ó GÌeÓû’SÙ7en1]ýé¡6BÙGÿ²½|÷ º¬_ªóû¾ÖŒwöë~þþ™&ëÓRÉïü‡Oß?kŽ4°™[ßíîCλOÓ!ÚJ7'pŽA“”dGÑÏ;McÍ9ŽJ#Pº©ÞÀ„•v6QSâ¹Ù4m7^Kr´sŽœЦò¼Y%²ùA[蜡 âB —+Q#éÀ™5¯*Ó&XI§[)<¼g.ù#ÙÛŠfFÐfq:!IX/$y¹¢Óv`c(XqìdÚ³y+že`Šk>€Š3ˆÚM®îj‚‡œpzí(è)`×òËPÖ£›ŒÓÉå!S—K 8òaY †bcÕÒž,Í!>G ÕP$ mtx5e¡i:5Ëh. P· JpƒžÕl`[ŠÖ)ŽXØG=a¶( ¡iO?çÅÓöKŠ+°v€ÐUä”i;™äÝõ0ã(!MP–Ž¥„yIâÆ—£: )V¼¥ƒ·hŸ—Á0Ü#û»ar ´–ÎÛ¤LkJ,d”wJÛå¤:Ú[H¬)„ÏçtIò}kNhg†¥¨3ïwßµ)Ò<´‡gõÿ·wm;rÜFôWòKl¯y¿(r,;@ È›!Ë+Åñb×Ðʉå¯O*v7»Éžž]Éõƒ5==¼‹dyê|bòË¡7ýHM ÀIœÑ;¤æ£×9€@ÎÈBŽ|šÌa€%kç5ÖqÎ*†ž½§µ@ìù6gÊŸ”¤pyE¶F²ŸÁu% ²–‡Iv¶^‚[ŠÇ+PwáÐv ÌÐT™h_D´ía´¯E´ÖŽ2r £ÅJm÷;I0›uê-›€‹D bЀ¯69 òU¶"%ÇœAüÉóŠ_qìIËbý¥š(¢âd¹Ù3dàG–ÊØ˜ãË5œº—žž¦o#oT_sï™Yµ{«OÚsÞÞþ|óýöœ•¾À× õ £ºiO‚Ж¶`2--¸‹µÁL®·Ž)ó1Lä—±=w }ªžà%‚”§Sº¤u¹L—w¡a4U…4`zT~¯ø4˜Ìàf¦fŒíšŸàÀÇlЧ&?Í#a?Æ€ ÇünÜ8Òùv˜¿Æ¶”ã`”EF,£øB‚G6=¦gÚJ€Z£Âå/’·’+ÂÇÙã·Ó—båÈJõ‹Ïä>fÅ€ 2µ‡ýhùAÒÀNEDQ•ï6Kg'Acc Ž,p¡­MN @.GÕÖ Ñ€á€ÏEhæ#6øîX‰¥× ÉØž|Op1$>µã©BS‚1u7‡”’£"š1LeJµ|KHŽfä„ÚUq$92Ó-;&ôµ© •~ c9"±3+m†Ú1#ªnäð úób»Px uȶ‰²ÂYªO[9îÉ|›HŽ’Ó“`±6%ö’ëJåÃTû ÕËþ¤#–Tñ7JÌ€ …¨ÈñµÀ–p,j‚¾¨Z0ŒMO7¢bRHìwåsó•‹£a¢´QÓÂü¥ 3wF‚LT iÀ½œÍ‚KÊ×Ó·å8p?Åñý´(h¬Oœ ¢œ§:Oö° ëúÒX°ª.•"9ÊånÈÞ®+ôZ*Ì|U5÷O‹[Ó¯¯î_^VÈ·’|ÝÈD M%mzHç ÉyŒgtpóÆß 3¶®P¨á ­›Ì°  ’7ì8žU¡"çdÙÁZeÈm)Šñàš÷'‰´7†fC³¥4ÆË NJã%ÞRÒ^Ëúˆ!äsîblº8¢wN/* y[¤G{èI’ºÚ4šy(¹é#yÝVÔ&ŠÚX8õE;£¨§*]OOÝö0Ž3_{·TÔVÿH¬§¢¸0´Š*_÷ÑÓ®Ò ãIs¿üm c©/&!N)q$H{N›û­¢ÚÀLU @×¾µnГ-+Ž-Ö2ùój¯ ãì×À¹ã05 8t)Ó2Š1øåú 2„óf?¢ºõæ>Vhuê"rîÌܪ´šü E-ž/Ù ‹™õ¸‚çûLþ¡Ìþ­|¬ÎÙq/õy-¼·@‚O:!`8÷imlƒµiPY&“ePL1 „HªØ&CÏ8)¦_Z'£e4›'u2¶`6NÖ¶‰˜&f6MÆúÛȯ “r9µ£K¬UR5‰zõÌêiæTÃÐNÝ¡·XL£ÞÖ&sOöŨçcµåUmCk—luLúPWHƒákÅ=Ö¿qO£¶‡2m{µI÷<‡Ú̵Ÿá\iÆ}iFãR]]ŠóÞrê ‚>`éM—üÔl‹³˜£º˜ÏêŸìe³×î-¼•©²H0ƒ–kué ^n¯VÎÎT2ö•˜t–C«½O>œ#ÎݹÀŒÔ§äeãd²@Å:kôÀö°®ƦêÜÑO'D¦^‰"è¸UžÝ{õМ´NFó–ºPß«‹NÑŸ7ßIAaÃn+hé!-¥±î¡öœ–&[aÊ#¡oÊpØ @éù¼)±£4Âz/!kå=@ ‡-Á—й€äÅù£¼-ÀËÁ^T‰;wzŒ[[¾,%ûT^æhVîÝ\ nþ–7ɂ㳩”q­kÄéL‘áNra"›åh#(Ñ%6J¾Æ%ñô½¢È¿Šƒ\CúïøxÇ3¢I”7DÝ´WPÓq· RÔ ÍAeZ3@3?.¤s.˜‡#…µÄ±ÍÓ1zz OÆ}RÓñ2;ÊÊ]Íôp„ ͧè#Phq֎µ­Hèš›:q€•JðÓ¤b>~¿¹½ùõêím7aÖyw[{×V8¿¦ªvš±¼ÝrޝqÎ Â7ÏG)Ì“OÎc~§v®ìL {·!s·ßÔ?ãh=>rw »<0ál6´“ÉFFNô¥¦™s´ >UWÀíýª¾ÞÚN#¶ß}äF½ Ô½¬œÔÖ\&P *òÍ×u“«·9 Ñ¥GªëáÿŽŸ<@[àUF„#y>sçÀ?Z‡#ë½ü«£ö´ö«öÖäcò ¨i|ùäRfsÇó”4-&7gqZ¡aOÇÂ6cþ¸yõl‹C¼ß}#FJƲ}ñØJ8¥ê@PA¶%²2&D़%73ªŒ_Ú;:h x‹)pP3±?˜ t®ó¤ùt}²›‹xë!~™¶:0¬ð'üï©l„H”q4^ç~laõ¬ߎ»MÜ–zä*ºz««o†|ED.$H9¿ýÂX˜Á¦ ÏÜy¶ÇBNdLÜÍø Fÿ“ zâ¬nXr4æxz22`–xî^ øDìØ‚ñ®Å' äù¡ŠO—¼S‹ û2×—òßpw‚Â¥ ÷ÔCj_›ÿ-n•GS÷öúý›Û›åÛ‡ÃO4ÞÑ jåHË.Œ7ÁA+86™¼IpÉOÿT‹wê_Ф®mNËØQóÚ'¹Â_GÁßô |Ó’ÕÝkúÓê·Ï—"Z—,•®ÅXšÌoÊ×ßÜü»ã绫·§y~õ×›oîÖì˜øûEÃ8Ë]ÃÝ¿÷Ç1 Œ×¹Ýèç?QåKU?7üs,]Ê4½¦~ß½»ý©ýÙápûúõÝÕ»Þ㯠~<¼º½¾}ûìïÜ ûe÷mȯ’ÄR3¾'µ¢ëV|nó—ñÅñVx¥:­xþérx›ï{óãþ3¤Lÿœ/¯ó8,—·rÚÍŒ ™h´0sú#ŒQ|€ÉâÞBœ®z9ÎQÂNS {L¶6"øPôáÎI¾€ýíwÈÑ'«3ÄË’O±Úݱ…–½m¦Ã¸Y^ÖËPBnY §o(è±Ç}جK1c)Ãdþ·­‘ˆ )ÇúÝæ²­M¯=¡j=¡[®Û­¤«bÒN1€!sаêu,TrÞkدfÕ"N(Ey@­÷;’îÑ ê1FN mÎuD#ó* SŒì®tÌebÆ™Õpq 2A‡FNQ­÷J‚“ŠÂž”]%e½§‡/׎·ÈÙªEz¯o}Ⱦxz‰dÏ5ç8 û&ò=íNϤc}=4³„L>¯_’|¤RhsÊ kú%í©J ÇJ9º?çÎ%õ=­÷¬Ï²Þ¯n^~w}5|÷òÕoÙôÙ“›«ÿà›îÍÓÚã´‡úß_½¾ëKßèä{q{9gƒ‘ªþñõWùâ[m¿í¾qáoL Â1@1Rðê| óRrW(Χ£¦lʇaΞ¥ÒrÀ Tªä.øo_½¦Ji¼´ê’Ï]Pä%ù¦€Ä^àæ³o%Áˆr5:<ëÁ](N œ{|ÁÜIòÖ–¬E¶Â„—׸°$Á{’Š~DŽóï% K"… ŠAd!¢øµkv@'š§#óR_ÆoÉ”‰=]"£³7Š¿ÐüúñÙ?ß^½þìÉ'ÇõµP)TAo3¼¯zï·¾Áà¦çEÎèqÝ5Ÿ:v¹ù¦™ý-•tÕÄo‡òàžsAŒ¬‡®àsÿÎ=œÛTnÞ£²í`/ð·@$ƒÿºZ¹ÞŠšÃÒ1»aþ Þqü„;AŸÙ$Šœ:˜V‡·6Õ†&o Å aE’‡„­söÑ-†AäcœCëM?2s•eo9LOz"îgoT£x|jÀ‡´Ñ6úÓ"u€æ„Ó`H¦é2¬G®Cô^Ll²-MöhSÀÚF; Coì¯{ÀÐq7+)ïó>9ò럽'éŸÊ­Hÿ†œ/s64M¬œ ¢<á@T1xF™½)‘@1"ïIš,/ $“Mn_“—0rÏÛ'Ì•˜“Óû9•y4ªy¦ØË6œ=šü܆ÎLÕ>ë0Õe3 º°n†¹)½] ç–¡ÀYÑ=ØYbã0°…­>Þ*#Š0@rì‘Ç<,e¿½] ~-÷FìK©Gúm ÈCG€ËÖŸGi‹&ð—©ù|„ÜnµòvÈíîÌl׃έetRµÐKçÜ¢DJb¿Æcï4KÅ"«Xuï9çÞªÒÛ?Üß,«Oíf»X¯Þ]èF]Tíj¶ž/VÞ]üóªÓEµÝMWóér½jß]¬Öøî›·ÿQ×Õ÷›vºkçÕçÅîcõçÕ¿¶³ém[ýþãnw{uyùùóçfÑ6ë͇Ë7U]÷Í7o·Ÿ>|SUÚ]m¯æ³wÝ ·w›¥TœÏ.Ûe{Ó®vÛKÝèË‹¾ú¬¯>cë‹Oíl}s³^måÎÕöwƒÊ›ùõ¡6{óÙJ%s¾TæÒ˜5êíÃj7½¯oEÇn5J©K\ëk¾¬ÖÕýCñhgäê°u ÿ-þw¸a_Ðl×w›Y{;ÛfÕî.øÇ‡‹µjæ»ùà1ûÑ?j÷hJVÓ›v{;µÛË}¹Üÿy1ß}„5˜$_?¶‹wý÷ÅüÝÞÏäû¾W;R5¥j÷Øá%—UmrðNªßÑãæë{øîbz{»\Ì0ÝëU};¿nÐøÏÇ_ßínïvÿÛÞïÚUyÞoð²rYîkŽÞôð€öþv½ÙÕ׋e[Ú¼ü¸¾i/o+¼ýf³íåúþáC»ª3Ü%î[Nß/ÛË›ÅM»{¸Å no¦Ë% ëÞ˜ËÓ>ß®>Œ¶x?¿ÅDݤèG+< +|‡oçíõ–5ËLð¦"É5\…1µÓÍ›é|*õJÍã+A[Ý݃»¶»õí¾n7Ã(A{ѯ¯¯·- A ʶ»‡e[j׳õr½¹úÝõŒßJÑæµØ=\é‹êò‘ÆÆžøwú„‘Ž4Þ˜èmL£÷·Ú×rãOŽÑùhÞ¬§ª½n¯OzúíKšµy´Ù¬´1ʹ§›mm«[ýEÍÆ‘fõÓ­ÍÚÙûÙûÇ&ôíå±a=m‡{ëÆ£—í mO—Ÿ§ÛC ¯>nZ€÷ïF,öqƒ¶)÷“õ¡+üçj±JßmÛÍ߉tÿ½úç¶=«õÍtµ¬Þ¼»¸™î6‹ûߌ´Îɧ‰Â_ÿ (›²÷NEÏÏ9EíCxÓw_¿»H¡‰6:ó€Âl›`´ ½¥Þ”úÆeô .Jµ2u6öæû–.¿æhÚ¬míÆó¸Tȃ ³{tn1(y@WµjŒ7¹7æë³z×£õ6(L¨¶4/š«B´.v²ÿV›Ø$4>YÛ$œÓo^h‡ÑýB[±Á2¨¯@:ùwæÈOcîޛњ¯Ýëu¤=5Öžo/Öñ9ÇŸ-·î>̤ûþ´+²}M›R®C?Š·ƒ§ ôÁj=/Ä‹;·üÛΆîgoµÂì­7õìnóiº»Û´çÃy+Íf=0øªBùM¥µ™$Óxer Õ¬RŸõVéª6MÌÑåIhœÊÙ›ªöAîhT¶Áx–h•¼›XÞ¥RUk×dŒ¤f‘5Þ<þb”IRK‹ZªQIO|“Ö>WªÑÁ§0Ñ=q>窶 Üɘ n&2Zé&ÀâÄ@dã¤;Yy>ǦbU§ò4¦C€F'e'ªrMtìbáX¡ŠON™IíЗt•pe†£¥ߣ­tlКæ=¡ÛZ_ßÀ/5Þ·6l<Âç«ï+­2ʇ2áðú¡ lhrL1ŒòÏç|e¶¼BˆðûSê¿ù–Wþ³ÝmÖÿja «“_îÍ«ûŽ{víæ`¥ôz±BÑízYt[©óÚþíÇ?^¼ Ê­6«#C¾nœÞm·‹éê˻ͨ­Ž?’Ã0ÿ¡ý´Ž‰Š¶Ê)åó‰·@3«ó`J·~5†Æd žäh_M–†ß9mG NkR†É†ÆgXFùhL²Ú´iÀÜ9“4—¤£ Ç$íð¦?#i°ÒÏÒÈØ(p˜^Ú£Šú…$‘r~Š$zpWÇè÷¤È~±h9‹éQun¬ñÌü»±µyUÃÈ鱆SVÆå>Êg{9vL_SÖ×€’æ±A…T÷ÓÈ( ô³Â @€‹Lo£ ‚…6²6÷Úža€‹ÐG.¹g6Rè_ö€vgìD´‘IJCác€h诽¦bñ˜p­£ælcr:ÿÿÝÿFAZsÌÚþVAÚ Ð8ÏÀÐo ¶êz^¿»€¡8¨KàWoáûÜf“}4ôõ¤¾× :˜Ô¡xŸü42Þ+Dê__Í!6ÖNEgO†÷¸¼ŸLì¯.æœ×i ÕÎíÚyãMU{w§žêí“:jx‘J3lR*ý IeA¢™œðC' ù@ÌžA)àfÛ×ë¶nD^¡+Ú ÿeº Wõú©÷¿x²×*N®|F·9þý"Ý®ýµÿ2ƒ×4G!Ê àã à´ù5<–hpšs>~8öùê—¿ ¢€Ói…Alr8k²UÚœQèYögøÆP*ê¯?X Ÿ¬ƒR{zÀTz4RýâC4ç~ Àn cpþÉ7Bãá·ƒëÅóX#^ʯZºIÌ©ªcX7(êÀ-QrdfÊêã(¥˜{5ˆ—/Pé,Pé/X Ê3u­^±h3†ìˆt~QÄxj$¼'ªô„D¼ÝX@þÜjÍœÙÀGßîUË5ÇSøÌtZƘ ½ÌüFò&*Ú×»Âc>Uäí%PåS NoÚù§Eûù›CGÞO=»~he¨ÑnQÎÝ…÷ëͼÝì/ùwt©›~©{Ð;>õp]_ß~œÎן1 §^¯odñ°ûwz½Dm ‚¦hÎ/b€vɇӫóõìŽ{1ê»2Y·÷g÷ßm6¬°œ>´xqùÏ~øû‡û» eÛëÏ6çÝæ®=m€WêÛ5Â…íQ¹ën1o·ÜÇkõû÷ëûñëŸ+ g}è£qÔØw9úøHûsN/atm²§·«émýa¹~?]‚6¦Ëíc½»™Þ/n?·ó‘ä!4Œîý:W>¸¡7ýˆïÚ¬oþºi• ow»ÅêCO.Ìɼ»¸àm‡Âõfña±âûfk_øp\È$xªzú»>¿ô0riï.ªOªªöæö‘+'1Ãêƒr7,ïÚª>-¶‹÷ËöÈ*PwÅíó“RŽqWŸãB Ù®Wˇ®ÚUà!V7(¸Æ^5Lz^º]o¥´ib2W‚ò"9]ò$çƒû­h£›'ÚúF!ø=oË&Ÿ_Õ–šè‘¶lj|ÒžëBÑ5!áóHcÎuÀàsè•ò›v7OwÓ‡÷%&ÄÁÛÍüúêo?üé@¦³ÙÕÿ¬7ÿêI’¦ï×wpრà>šÙÃÇéî»Å œˆ{¶þóþf F8\8ªLÿèZ»iËž¬ÑmlóÙÍ‚7]þ}·X.ÿÌF¤ß=t±[¶ßI›åãþ-.»×سöà-ß^î‡A¾}8…åô} Tùiñ©].ו>ÇÓõÝíÍzÞv`}ÑoÞ]›ÃLo'4顆©BÈþÛ’É,¡æéB\ѼeÝ®ÈúT\ÉéÚÆZË%I\›Ò •«\n’w²ÑM¥jV™’ÈsuQ1Ö¯\ãMÊ’çkbÔ!W‘ë•Æ39Œ–¤bÔΙ s,A8³Í¾’ ƒÇ.ÖFÞãP¢ or*8.»&ktвï±x ïÀÿ£ÔW­âQ –Î¥¨`*šœ¬Ó²þ NáR­u¥ºlQPÂÐl˨ ïÆŽMi£º–´FC]ïðM¡ÿÁ9YŸu9†€îÇ Ù´A'cÂ÷Ì·˜ÔÀX®<ÿ$‹ªÑ—ç0G­Q#šý@ÿ|䓜kôµÇŽ—&öÇÓú[Iëφ©ýÝëó5aŸ¯ñ>ò5Gv¹o¾°W¿#PÄòùÛP"ÞmE‚™ËIçU »‘˜ÿB۔ч¡YDô\Ê6¤°¬¹šT6.°ˆ[[|àCˆJ%)’|ÙÉÃÙØiªdÎIyš·)±Ð5*fïX”¥'e.Ðl÷”R’äy¡³ßAá÷U° ¢~™îCi€A<2JYt) ,5r J»“[«Ñ«X蓳¦ŠÅÐû»4pú*ªÃ{и–"ê1±ï輊ï“S£ƒÑ9VÙp]6Y7)¯‘tçqß‹Uª ÚÂÕèCÒòéTŒMˆ.z3(ÂPè½u—¢ý_Š”KŽaRYÊœ±&ʦ”K‡ý©ÝÁ$ss;E€ ÖJÍΤaÉ‘eü\]œ`å뀑©Š7g.ií ƒ³GK»‰m|5­hLj­L˜>UJþ¨éÊÞr"p—IÔ‰«º  IHÙrW ÷÷Ȉ5~²ÔåùŒ§šS¥%Ë-2ÒÉe©’£. uY b¶ -ÈÄMÊž~jéýD¡#.•ÛºU¾àa˜²qE1¿”Ѿ±A@¹ `$É;<Ý€‘‡25&ó)Ý÷Q¶ú)¯É Úæà„J´ToPÜ k0Ì5—BŒr‡ÓÑ í[ BNŒAê~X©ÁÖ¸º þïÝ ÝA^ØÐÚÈï1‡Ðõ³*³Í/¹\Ä; ›(£Üsy)§øônŒ†õS¹nBi,šØ?üP½ë w'ñ"&\¦»0—² ¦ýœ m£vÆË+@x¸5ð*IÆ9‚· Hˆ+ÊF0dn ÛE­•Ì¡|°•Ý¡%½Exâ¡7ŠÖ!Ós3^:ÚùÜ)¯2ì==Z)SA%q1—²EÊ[Ñíþë‰Ç“t­t¨ÊÒ`K›|cQ.Ü=ÆáÑYÓo0Œ±ª÷£¬Êö/—uW"©^Ï¥(¦k±C5 ò_‰bŸ_±>F(8'·Ë€H‚ÊA0$PÔå"ë\Âç½'²ƒ¬×gø…—1òÜ¿CW6:²¿Ò­«€P?˜/ÌzÀC* ŒÞz‹:ä#¥14°"N‰…˜ÒO†@r.iKÁ䜆³¡AÔæü,À±/ ˜€ž/«2b\‚ÛΕ“uÏè¡“mω«gçad'\YŽ;Ý w25‘ aÓD‘ g!qÅ4-³ïáa½ ‚¦P!ú¨Èqߢ)¤ À|P¢1˦HÅ”¸"öÁ€»‹Ìgå+…0îH9ad*uk µµ/R˜œ$¨”û‡tõa»ÉêÐ= sÖ4&´À]tÊ’¥-b-jßÃNØå=”`nò)q¯"BS›‰BÜ: @rÔê€ßÈc¶k²$ž‚x…QÁyatÙp/nDú‡‘€2$ÊyWvŽr¤u,¾lc‰38¢v?ÈaP4be—_SŸ‹DFV«úW÷¢1’úmMÒv&éh‚!y;j“§`QMDŸõÀ$!üÚv£9Я"ùäè†M<-64ŒuAc¹±64¸nx>Úd‹•õM„õWñÑà…èûb»ÆQ”1¸ÎJ̽òš]väZ¬9Bºθs@î˜~‰uEö‰Û›¡N¾í‘flOÐÒ\KˆçÖzçÀÚž›âá I ¹[¬®'ø”es:tü sƒ@š€!¨%¹¥ŽI‰ÊLe-#s„¾þßWqFàñ…ûƒˆªŒë¨ËiÈ MÙÜŽIñ ÄTЪA(L…Ÿ¹Lfé·tbhàÆÓsà~}€À„74hH ‹1 ”I¤y`Üu‰è)W¹é©P 'M€Ñ‰ŸD@ „Ô‰¨G£ÉÎ;'±7 gP!ň62õ7L„þІQN¼i²òA66š‰Ç{˜æÈ[1Ί†0ŸEdbø™ÈD©Ï™GTɃv“€ÏrÞA{%ñ ¢q–„h›¼ƒ€Ç(”žG°4¤Ù„ú²±“n»LšJBãÀ\D^šg! 8DŠŸ#d¼×ülÙÔ™0öá`â¡S=ÞT‚=iTK0»< Ó£|šÍ ¥˜ ΰ׺‹œP›*0Ç®hå!2DivôÈŒ»Q¯‚Ž(q;»dà€‘7?Ãu²§/©±]£=HÃË}„:éÒ¯¦…M†á’òWݦ[ÄÂ>¥÷ì¿S•0Ìg8s •7•ƒ7&p¦ŒºR‡âàÜÏéhdbE«Ÿ[˜IŸCo8Z6;|ix°)1°¦¢€vCŒ´,'Z…LXˆÜö »Â­Ñ‘²¡ø`N‚`_fÜÏu]p¯#¤‚‡b§éO“D·¡8$ñ䘋‹ÌUÈcâÉ´ÊZ>.Áù4ܬõ²œ˜aØI®§iž:ðÙËQDÝtcöÏ!„R `‚a-?;Há$“3¹¸2Ÿ†TáÒa\Á¯˜£rTVÝ<«âvaMÛðB®Ì%Ó!ÊË`ÌRGÔ0¿¨˜Á ÐóÅ,¤ä# _ŽÞå`$aãIAz¼4´@wâ»uò{ž;° ê†Lýã‰EÜuÃ2Àh1¸U•¹¢d l-Dnæ€ö'§Œ± ”ŽêÎUA ñï$¦â–zžaåÈ‚2r’¡²LÍKØå„3;j½™§¬!e˜z±FÞ+iŽ+"H#•É\{’“†g©€¡‘ -á²C …6aËPvUò ù$"0ölB”ÜžŠ‰àJÅHAB[r>Øv‚7 ˜ÑñB€®'$- ÊQÈ5õ&f‹9`jЀÄoÀ›TX€ŒÌó"LËfx' Ë›h3æª-xZ”a¡ÖÑ£‰Àã˜NR‚Ša$Ó]ÒÜÏãݨb5¤Q¯4\Ì_ÄY¦ˆøˆøê9òE2SÏÉŠ2 ˜k¹DˆÃÞŨ#BÕw¦î{Ã>>‘0 IbÚÌQYzaœ™¢à&EÊk¨R^äÙSÒ\SÒPf0–6e]JkŸ±~\±- ¬|b„(³c…êÇÓœ§H+È`Žç^`MP§Ð1†ÒH™2‹ ³})qµH%8#'$Q`C‰Ë±`.YÐÔr¢;1‹ãÕ8ß3z¸ß À–™ÿãÒìÒqÕ l˜Fg=À@ïBùr@0úÁ€-å|,”ú\bíÀ«b¬4 UDKÁoC4<‰`(–A€™”®0YwÙÂHÖ‡’†aT5U‚(M¸æ"`ù5ÇY—Ö—F"lžªYðîBx|nëÍãq>1dkzrp’vdͪ¹8]ΧtyôÈ4ùÀ±Ž‡—U¿Ö‚á\8OidÚÆÁ™iÐ.#´B ZÈŽ†k¢uÓ a•GÎM[nR· \ìû" Œˆù†ç™<±\™€¨£”1 )3ŠúnXD5 -aƒ¬+ábÃSbð{àYÅŸ€p9ÊÉkÍLvf†DS'®é*IiÄ’+V€`²:KLSZà&¦ú$²®’E÷òX·¬¨$D¼À ~b^ƒ²E3>O íí×I žž·KÆC™s\ ÄŒBÄ+IzÌZd~ÊpØFŸ[Ûªå×f Ámgëà³G –KJ×g&k©3èÖÈœ´,qA…{J C©AÎÎú["vΚ¿=%#½Š ß0(yÔniÚdž›5\OÅgÅp!tmbb KÉ‚KæòŠ——S»•d¯)9F¿"“—X®õeòˆ=Z`9-c õü P‹‰Ž³^ ŸcnA Ì6u?I¸B‡©E”géEÑ 6yÁÚÚø¯øúéß781eŒ$ ¸È˜4gž”°¢=ér ÓË„—ä¹i´¤D‹Ôa:TkÄl#1šª•‹¡e1"Ç —í c$ñ¬¹šN{C#AŽè„Í9Î1âf8 Hš`jùá ¦ MŸöÛÍ¢îð,D-ÙvnÇõ»}‰•ƒý²ŒHfˆ`“ ¹d£dí• 2žÒœû¨ „ª¡AþzФ<™}¥‘^—Yzï1I?“ îEdÏüB”LW’¨ Ò½ûŒ¤etÇXoMÿrþÂ%Ûgl(ÅDŒkeE†)n rÓT? O€š BE@ à`’ã„?ÂÝ2ò$€ÂqˆØÌü ÀJ;J ¨ ]˜O1×—)fk#€,É~ „†ã©áE¢¡%ÌÖÄZ:›×»JÔŸ‰‘<;” &K† KóÜN4bz¶ ¥è)öÀ0#& ³1¢²iŽ1ŒW–¹ÂÉ*¡Q-Û³Ü9¢lÙYH²3rB&n(”½y |†å\ZÔ%‰¨;Êjô¾Ìú-×O“älJ,®yp‹© ¸”“ÏÜazàöa¯Ü.€ˆ7äèdÖ¥²Úé8Ô×ÁÆ’ÜRÜtB¦¡ßJ¶+eÉ€Hd›"ÃtF9tm[Â:4pÌ;„Ú“"72´™h|æ£"9[Ç4B1]LÆ0Ì’=H±!h/+ ¹¾¨5 f’u<%¹5.X¸nŠå¶g¹©§ì[ eWŒÜP—;Æ4Ž1_ÏÃö+÷/ð3a›Î«FÍÊÏi½éj”SW@+È>f|öåÄôøêýÝn7,û¿õbuu³}íKåËrÿ\¹}Ù©{×óéöãt³™>?½\_¯Þ¼¸^¿øï¾yý?ªjñövuz¿:_|º¸ÿyñçëÞÞ¬¿ÿùþþæÕÉɧOŸê‹¦°^ß~8y¹¨ªï¾ùæõÝ/¾Y, {}÷êüì͋慛·—Rñüìdu¹ºZ]ßßèZŸ¼è«ŸõÕÏHýâ—ÕÙúêj}}'o^ßýnPùöü}W›­ùd¥’Î9Ÿ(sbL…ÕÝçëûÓ‡jü*Ú8õªQJàY_ó°Z¯.1;#O‡Ô1ü7ø¿î…¶ ¾[¼=[½Ç›«úzuòÃß~èVª>¿?|¦ýÝÑ”\Ÿ^­înNÏVw'm¹¼ÿéâüþgpƒIòóçÕŇŸïûßço^ &¨ ¿Û¼êøHÕÖ”ªÍg‡\ªÕâ6ï¤ÊˆùFŸ;_Ÿ±…o^œÞÜ\^œaº××ÕCuz[ƒú—ñ÷×ïo>Þÿcõp¿º.ŸC½•Çò^=êj÷ÕÃÍúö¾zq¹*DO~^_­Nn.®ÑýÛ5þ8»;Y?|þ°º®.ÎÀq'xïòôÝåêäêâjuÿù£xwuzy Îz0æd«Ñ7×&I>œß`ªƒ®Sô“>+|‡¯ÏWïïX³Ìa2’<ÃS°ÓêôöO·§çXD¥^©9~´ÕÍ;xëî~}ÓÖmæ%¨c_ôÅë÷ïïV`5(»»ÿ|¹*µ«³õåúöÕïÞŸñß·R´ƒ]Ü~¥_,Nv›úBâ¿Í/L4¤öÆDocz1Ùx¿›j_ËM9Fç£õª¥jõ~õ~£¥ßBÖæI²Yic”sódWv¥WúQdãY=OíluöîìÝ® }}2f¬y>l¹Ÿ¾\öéå§ÓÏw]D¾úùvñý» ŽÝÍÐ6å~²>4…¿¾¸‡œþx·ºý+eÝÿºþûÝj«ÖßnO¯ï X¯Þ¼¸:½¿½xø=Ä‘Ö9ù´Tø×ÿ‚œMÙ{§¢çß9EíCxÙ7_¿y‘Bm4æ3 ³­ƒÑ.ôœú`Pêk”уº(ÕÊÔÖÙØ³ïk6ôôò)GÓfm+?Ï1Tȃ gh.–Å ä3šªUm¼É=3¿ßª÷~²Þ- ªA_šƒ&Ī­‹Í„´¿*ëdƒÆ_ÖÖI'çôËÙ ÝGòê–A=BÒÉ[ y^æ¶«Ô|厓¬ôÔ==M/VqßÂ?»¼¸ùÏÓûŸ;6i~Ï/EÒhkÚ”rúQ¼|m€®×çEóâÍ;þ»;6ºŸ½ëkÌÞú¶:ûxûËéýÇÛÕöpÞÙ¬ ¿X üj¡µY&S{er ‹³…Z:¬Yo•^T¦Ž9º¼ µS9{³¨|mP„7j•m0ž%Z%ï––o©´¨´«3FR³Èo¾ƒõb”IRK‹ZªVI/}“Ö>/T­ƒOa©=Zâ|΋ÊÖXNÆ,ñ2%£E‘®ÖB\À,cœ4'+ÏïØR\T©@©+€ ÑIÙ¥Z¸::¶±XXakŸœ2ËÊ¡).éE®¡+3Zªñ;Ú…Ž5¨i¾jh[ëÆ×X—ý­ ‰G¬ùÅÛ…VåC™Ðt?” uŽ)¦Qþ²­Í._ÁHøý¦ƒÔù-ŸÖÏÝýíúŸ+0Èõ`‘Ÿ´ìÕüÆ;÷«ÛŽK¹>ª‹kݬ/ p+5À^wÿõ§ï_%Ê«6«#¿_ýéôãÝÝÅéõ÷—o'yuú“†óV¿\HÃG[å”òyƒÇÈfU AiÖ³ihLĬŽöÕSji¬;g¢m”‚ÓZ‡”Á²¡öœQþ4&Yí6”´©¡¹s+i˜.IGÆJÚá š~KICÛ(½WL‡é©=‰¨T)ç9%Ñ w5–~³ û`Ð~”ršÓ“èÜXãû7±•9Šð8=E8ee\ÎÓêQùjÆä8YªULì³iãM6äÖ±6>\ÍNêí3jí³³ m ²7›Ú8ÖŠÿée‚NŒÉ$—— u-v¶€„ÒITi¶jw+Uù—©ß4ôPN*»Ô*ÖÀà*,r®³S•â/û꜕[¦ )€§¶(3›µtš³êK-4(S/ò”Ùâ/åÏú¬…ccõµ[e=½)i6$ö˜*¤ªŸFZ¡ŸšøºÈô¾7°B6œt+ l“NÀY“­ÒnCÀ…–e¿%ßhJ%@ýôƒEóÉ: µùSi§¥úèƒ5çžC`×€Ž18?Û#»zôN²Ñdm¸ÈÊítyè±r1|Û»Q6œ½&l¹Q¶°w¨C@¸€Ì®P“xc©˜þ·5j‡~±X^ˆFYz¤¢>*Ö²:½*8K­”±racèZ[(D´ÝÐ7F«#f¶K[4 OP׺4ðW6ÍÇ›˜‡ù1ú"ƒÖ†Ó„îüê¬óÒ&Í"ð„H¤õ”³É‰Í@·“cCµ ºxÁ߉=јÛÀ· Ô¦“y@’Ÿuô‘ÓmàKúÆ&Ž3Zl£Fw°P@…ô›’SЭp…öÙJ8¥°EÇ']É—µ%Z´ïQ.ÞiÛóîNœÆüGt§ÙupHÕ«¾ÿ.‡)?>¤Zùáñ¾?±† #ÍŠöahÙÂŒ`ÎãÃŒ“-üv4˜¶‰ƒ’ŒAA¸a˜›&m‚HSzˆœh÷ÍTöôÿüô—?ÿðíÿ±oÎ]ç{þÃ÷o±'1œ‰fÆ—Õ xæ)¼ß«ô‡i”èÝqò4ò NPx—óY8Ðy§“É9Ï©-U½g]¼ƒP ù0Ç´ñDÍ<ÑS—Ný!=zrÆl:+XÄ8btÇõ‹èA<Î@Rý,ÐÀÚª¦…g¶Ý)ûqEÃÍq/7›=~àôcøÞšI·ß ½g¾íʬô¦¥1=ßð´Ý3Ñ;{òØÍÛ‘€ô}ãm­Ýg3>ÆP›Úòó,¢ûp½jݑͅuí£±Ê–ŒpÉ#Ùε wÞ85vQ@"ovZü=³²îYø!¿MSv>:vOË€„ÑÈkËþøãÃ÷o§É̈¾™8Û³íé­û^MÆ@‚w3˼' ª‚Š{ÈüðÇ·énšÌŒV=ŽmÉ3¸Ì¥|h·¢)•FŒˆªÖ_ã­¸+ËÄ#¹½ÇÆîÅÚ¹}Hk÷­ýããà‡v¡ÊGŽþWb‚fè}‚½¡7†ÞÖ†ùæÐoVÕ¥jV=zèÝþ¡÷{øò«Þï‘^¹d¿Ÿúxmt8ÀBÒ~¸ñd’†sö‡iàZ;;·p{qŸ¥g~4ß›)€Å%â!4ÆÞþ Új­&'¢N1€‹uÐû¬½øž|„ Ô†~³µÎ[â'j®‚Ñ0ŒÓÇ!®;zì·äuØ£.wЇCATÕx·s=½ô¡ªÓÈÂ0å–=ðaÿÀÇ= ùUÒ'îYµOÍí¡EÔ^7’ ÓfõlÛß¿?ÿî'@m*ª¸/˜8Aíцàñ[-¢Ým­n$Ïq;@ uÜf¯Fòü¨íÝyýdÃÙ?fûW $¨…#÷Í}ÕP‚^Ú¿q{äîžÉyØXQT3Päð%yØXQ T~ßXmF3¢}èO|ìÎA‰>zË8ÚÒ‡:‡T¢tZBpÎÊß¹ì %|ÇÚ0*ã¥TsR­„ñR”òD[#Õü šj¾–¤š)Õ„N * ©©I„EÙÿÐ-X– ÔËR£D —¥F÷£«ù#eù¡Í²Ð“'nPM>–Êñ€²¯ïßwå-ûâR!#±WÅ0 ¶ºæÙÅêÝéÙ??Ü®?^c„¯WŸødƒ »õ(.ph¬SíƒípÿǪØA&°ÊÔì3é„@2ضòX[~ X Ie/¢:@[kŽOCé°{ž`ü× ýN?@øÜ†ö‡~ffÕW¼ûGul fÒŽŸáù-ïÀ¯Âõ^Ïm­ß0ÊçilZô_ÀØ0ÊgilYôoÀ!Ä$Ÿ¥°eÏ|‡Pƒ|––5?ð<£ü _aÚtî¼ê1a›-?â—ã¤wräÈ|®Eà¾^úìnnï^êݦ|ë÷ŽÑV|`:’0s8ÜŒßyìFÄÃøÁ>OÖVða#rqÀFoöÙ =LÄ.!äöù·‚Ñ‹C…jçnŶã‡ÐIûœ™Ïá oC®CžÎNr'ƒ¾gc˃{ÇÉîÝ|óllSµÇó8ÇÆPÃC rj¡96nƒÇ‡Ú»0çØ¸ BhïÂ|j>žÞçQíDeOíP᎑#ó|•C…{Föïá߇tüGµ âSqߦ¨‰½Sƒ-V_‡¶öõÛ¤ªƒâã{àßÞOýÖ©9¿Ð°dgo¬©öÆ–wœNî”DW7wTNﻜڡ9ÏûM<›Û1;oØAf‰ß·?`k3f'¬ù~·{r–ÆÞí˜ÝÆÎƒÌ”vóä<Í}»1ûm‡X‘{xuï6Ì~?çè|âäŅ8Y;ÅåÛj™®àH)·ûĸÍñ Hh޼9’³vYÙPû J—Ñ×Vƒè ÿÁñKïkÅNÓHÜOøÕM<Ö…òÔãôÚåIGnTÌá±î¿çB‡bŸôØ Ï‹.ØÁÆNävUš¾N° †››ž!¹X yÍæ±îçÌ`aßX¿‘]LKÊ15PùÅe³Ïй!LAMû§É¸öú„ÉÕå¯~àO¯Vç¿\¬>}Óô»ÓnÎoN?¬Ä=…%S(5Þ­oÏW·í£ ÿ5méáØ‚_íž«éçw?Ÿž¯?Aˆn>ü²^_ˆ’w[é ²’&"¨í‡LÙ¸¡¬ËVÞ=;_Ÿ}ä5 ÕDzn¶Þþx{Ë —§ŸWèµüO»ÒúKº÷ tew?¯?}¸å ßß~\mà“êf}qMúƒ òÖÇ‹óÕÝŽ÷ø¬z÷ný0ýüÓÅ5ƲêÚhÜŽm“£;j<ôëwóÆÖv:±{xw}zS}¸\¿;½Ëž^ÞíjÝÕéÃÅÕÅ—Õùù¹¢é_ÃÜ£ ©?á÷·ë«ÿ¼]aMþuuqý¡×4o^<|æk]áúöâÃÅ5û×ÍV[øy\ÈK&ð½r!¶Þ~ôyâQ»V—ê–Ñb±ººÙñd°B̰ú Ü ËÚý’Y,~¹¸»xw¹qE»Yò|£”cÜÔç¸PÞ­¯/?7Õ:‰ÒIáºÁ@ai´é„–½Œ¿Yß]”Ò*¤¥ÉLÕØQ*_r>¸§ ¢®ƒ16.µõÜbë¶iÙ4Økt-µÔ´l®Õ’J'º:$ü=ALŽBb¯O¶å®”_­îOÏOïO{!Ü–˜ [=ûúöüý«ÿúáÇNëž½úßëÛöšNß­?b wºõÎÏ^‚œÞwq…EÄë\þçÃÕ%ÔA÷`T™ë£ÿhùìíª\×2yÃÍùÙÕ_:ùë=ôПIdi>zq¹úNh–?Û^œ4Ýèâ}/_Ÿ´Ã ¿>lˆ…ËÓw+H•¿\ü²º¼\/ô¶<]¼¹²h„õ‹~xáÝЗ­\S`LBö%×TYÞÈÐ]’a•LT}¦¶È TѰÐap÷ƒ¤h-Q ·p¹†.+¶ƒìÝ&erµ‡5- @™@*äE$dDR”¤bÔΙ…$.ŠNRÙl³_Hjhî!7Ìâ%ùJÊ>p &Ç}åÉJB%|†È„oàÿ£Ô/"¨âSIR:© ldB“$F'êÌya]©.w(ŒY]©P!ánGœoR7i­™¦©´Úœ“´M.ÇÐü´Ô”lLøÙ b²J .t¶«|‡Ék5jDÓô—Ñšä\£­½ì8­îιTþëÕËñ‰C›ÈÑû8Hä8âË–|Ñ^ý]A]Üî w‚¿`f Ýý«¢Ý¨˜"oÊèƒÑh•1ǽ¡ Ëši†ƒÊÆñÎ ˜õ+D¥’É ¾\ñÁÙh‹À—„ií×¼M‰…@º1{Ç¢l Ÿ”¹@^°ÍWJI’ï…†…oÁ2ï˜LwWÀ0BU”²è­!Õò *f$_M¬ÆUÅB0o±0zb[À—‹~¢í“,3ñ2:áÈqèázNµFç¸È† ÛS„Ê¥I7+î­p¥ :žÂ¼HZ¾"бÑEoEVÌãÂÝ¥¨â·¥ˆŽ9Ã$ÉÓ@ßX±d8Ô¹èfô/ýè&™a=6Š&X+6;“†%#ÎøÒŸ©Y"‡ Fæ0|ùm/_#L,í7 dG³ƒl­•á\ÚÚ/NiΙ¤Œ Ë’rZ†ETÏÌ Â#ðFŠ#Û`˜4LHÙò ÞR2Ðùe;Η­Œæ7æÈ©BÉ6ÇxÌJVÉQ—¤ÞY "L¹L‹M+ÿ3ÿÕÒz«— —ÊkMFðàÁ«rÉ…b.J& 40T)§ËA²$éÃ<#e:<™bi¾å€‘—¤„Úæà\9~”Dz_`^D˜Ùå@?Íl‚:Ä(o8Kª¾–J0%Ï¡s±$áÃm‘b¥©ñR(*¡]ܺªtQÖÊa§˜ChÚ¹(³-G—ÊCôQ “ÌÈË17§¦”*c4¬ŸÊs ±hbÿñ®zÓÞd"ç’ÊI­T”™²!ts&šµ3:¯d±è­ÁB3‘ú9Óóc(›dó‚HJ3×EF­•Ì¡üa¶BK±8»¼(|Z…ȃdûf¼4´YXN‰yÁÿh4¦•2T’%Y¦l,¥W\v˜ù<õ°•U‹2…ªÉ…iuÌ ˜QåðX€.9$5æ jGY•«b\ÖMí 'Åtð$(EIɱ0ùø—çÖºû}-c …ÅÉ«5„HðAdH ÎËé¹Ä m»’)ŃäöÏX^ÆÈó®.e£#ÛK§h¶n@T2s2%ኣÊz:ñ©¢”ÆÐ€‹hK%b¨‘2Ý].iK åœÆbAÔæRøYǾDò¢ÆÐz¢¬0—‡X?¦[rçíÃ[{çaâÖœ’º{gÂ×óöªŠ`f{@¸.7Ù^™©·a<Œ wA¤)€‰9ÞqdŠRPP†§QÒ«Ò®¢¢ìƒRw"Ü] Ñ•ŸÐ(ãŽ*'´’L5?½5nUù‚Ž©“D*åþ#M}ðn²:4Èœ5 -â.:&,uµe‚W1<ø¤¤lõº¤x5ɧ´({PlÎâ°L@,h°%ªCSQh Ö¦–Ä×BUcÁTX¼ ¨Þ[`éÿçêïJ³±¦d‘ˆð]賥Ʋ–m,¦GÔ¶ƒE\–G—ž²o¤HDÚÓ@ÿèVôVÇ`Óü¯Â’¶aIfD–$ÂÛ< á¬ã±\}Ö–´%c0þ'uêWQùäèa™-=9–ÑC ä"IŒ¥;<Ôxnø·ADH¶¸°¾ŽàêUüið‚Š¢è!ö…w#(£½Ë¡d´Êk6Ù£káæÈ`xÃ\™É^Qò5Üu|bérÈ–¤Ù¯<6ަaþ·„VÄô—èůXðæ…´i|—ÍËÝý ÈʦYßÅàv± ¸^®¡ØôdhÌõÎkäh߀;/tcð¢‚V¤Ô¡ëƒ>ø.×Èaêû{äÀHªÈÏ€ ¼š¥ª.þ !'î’³ÌB 8’x \´¾/âæ0c- ïf#“X"0X[PÌ€ ™gÑe·Ðê ˆÎm=‘»'æ´ÅáÍ9¿ýä5¬8¹NScgrZ"’L4g•0½†´NTâ"Ð#Þs–Ä$ã6tµ Àž¡ŒIì z6›V¯º䘜ƒ æÀÂø$ŽŠ’ƒ[§ A†¹§¾JPnÞA8…°Œ‡J0Íue}¶> Á¬E®CCóØ)µ×­1GùXI ¶…Ë ´v2,¡3o]4§\Ãà3#›@‡T#äÜÄbLÍj,ÒFYq¦‘Ym0vÑ2d;—qÐK³=™q7ÇNŠmãh˜èÝÍÔËò0±$K?-d©\eÔw4¬“Mž óLºéd7Ûé´[óMÙ"©Rr¥§h´ÄrDØns}mÆ–—CRóˆ4@[y»Þf+`pI+ Bé{ñ”à ónSBl¶¢•°í€wV$åwÊ<ff<§¼wnnx'Ø(LKö¼›ªÕÆŒ¨:(üGN*Œ:MnjÄ{˜Y4t¹ŒW ,׸µj†„ÝLw‹th¸iJ¯´t]+w;ºÞn Þ8ßß(P¦² a áa„eZ¡Ûb™!œ(`¦ÚF3-œ° œ0A¼Õá™–hñŒx&)úÆ€¦S=¢Ù4M |‡gú¦ƒ3 š‰=šiU¢™Ò‚ 7À —ˆKÍp?².±·N]w,(ò³èZ2 ðŸê–w/È& Lµ©†rs‚X*ÔZæ—eò ü5;ÄÕ†žßD2Õ¦èh:§ tvÝ Ó®Þ €ÌVï°œUÍr6´K[ÝóvDŽ»º6Pù4R¶›ƒ¹E,ØQK)?uä@ÞG-æHY]Õ¶Ü(U3} «k3˜nïTû6³PûˆÊó¾Ó=rS_¶;ÙeÐÃM~sgš"H1‚°A… ÓVfëwÎßÜôM­…ŽXh­XŸL”L¹œP‰×œÙ­ÝÔ=$ì¿Ð=¬†ˆûõ’CÖ2¸¹<Á¤rŒ5auv  ÿòF?Ã<£¶*‡¾Qç[¼mfXG…ïhg{u3û[kß´Bǯ .µüZv ìèªJyÔSS¶Ó=Z$½ŽÛ9a¢¯ÞqZ¹Æ‹kIÖ2ûÚÙ8O6NñÒ”ä]!!<ž¹-ì¯àV73Àz÷wÜŒïTOˬrkªΪòÁíf¤ÇŒî¦DÇtôUŒÙmí!$7FÖî¤Ç°û^ôÜ9•SôÊ rË¡¥5´ä¹%ÍBF•]Vªñ!¨”`J QhîfWVWU¶K—dϡۼ[ªŠªTsµk[µùna åKÊgZö©N¼àµ©\ÞÕ¶ÙhPÌšö·—»S—R‘læøj[µjê¶U¿ùeùie÷mrD«¹ØŽR9*»òíäÊOyÈþ ¾¤›<Ò*–ÇS‘‘kî'ôÑÑ |•"$¯g,2ÔÁ¯Us¯’ôêCB/µ~]¬aB7,Z¸±’›°¸]®8TDeƒ%òE/Iê,¿ÄP‰KÅA€¸õ†ç#·&éÂP¼C–û,A†€ìÔ6xß‘óТ”!ïv›ÞqsÐí.ˆçøïY¿]þ” ¸»h+2²µÃh;ÍÑËÍxCº†!7Á¬t>ÉŽ 01™Ä@qÄ–kÞÀBq¦ “J•±o~óäãúòó‡õõ8`³kÞŸd(v2ÕtË¬Û Ä€™bðŠ#€\œrù»§ -¸g$§ö‹™è_þC¼¬'‰;PqæõG[·åÅ™87ÔÊ´&b8f+†£÷ÇpŽêyžéùo³i~Ò[òj¤ L–ýÈ£ÝáAO°xì†;iú7Õ€µä•Ø%¶\þµFd¸ÌòL×Ñb p\‚rPû†Ñ`Y9vT P xÏPâ:ø#WS²O#vöÒ‹·fµi—6Ç%ÖôQ€hnÜðAðhëºÚŒ¿•_tŽ3DÁ™ÓQÀJ"v¬Š×*‰Ó*B˜3>`9ØŸÞŽ†ƒâ€Å¯õèH`ÓŽÒ nøò„³ÔolñßÎÌXœœ±°•ð€gÑ+¬W¦üÉÁLúw»åȧüïeçz¶åÑÂß @ÉÀQçûÚŸTV5‡lVqfPw†´0…°ªÚ)œˆ·üwMšÎ+S üm/•Ødšëfvó·Mš­ù|þØdøÊÐä–ð;$495¾}h2¦”g`wÒØÃEÇ„&ÇBöéB“SÜ{dhÒχ&ýcB“fL×ÛM x@dò×Áyy5D³…­òì½VòoI[¤WmA½jgˆ´{Ê€½jíµH³‡{Ûho3HªôâÑaRiCúM‘^ÖÓs¶m³0IrÊ{9Þƒ±ÓSA²g ßNÈÚ£Ímȱ à¶+Ó/{ݲ;€›¦ýý~(÷pó®þý;€Ûlæ¸vÈ,ÆêÇônÀµìòß'€+š_Nå›f6윽§ÝNFù¶#‹Ç„nýkþݲOºµS=ý Ý>&Ž:3ºS¡Û4 ÉÐíæŒúY’~6(>ºCzÙøMi°7tû8˜ða¬è?èÑMS][»yΧ»ˆxˆ"¶—îw«kŒl6Î%Ã/†Ï;“í¨üß·?Á-Çã‘>œïN>ôHµ¸Ä÷ðŠ*ŠmnZ+8ò .¨…ÆóR°P¨FØuì•CyÍñ°il_nœƒŠŽ:=ç!±A„~ˆk³nj¥˜X$3·pýŸRʤR0|Ëí(Ó¿Ž0œ‰à7CO»ÏßM„z\‚^O£}L/°± AGëy´lj‚lKí¶!(<×Ûñž[pdðæ€ô¾ ’‘ÂÌ€šY£k+Œ¹cüÚ®Dk†¢ºIžê- ÞmÒTh Ã5ûðæå­cvá%ZÌ‹ËL;ÃËè?ŸùÄb&+{PßšƒÐtM9Ìd¤Ât„Qv’CìJ„À˜Ã†OfwȰºn³;€Ç½¬dÞÛF.]òzh3¶/»$ÎPÓ¯™Dù»oþ;Vö^ÜÎ?ÌÚ§–{ì;•à¸Ô5’ã¤^~8/P|öf–µ÷[/ð_•ŸNX¤›Ëw×'‹×åÌEºXÜûo?UÎ ÞžÞ»Ìý¦Ý®I.æo7Wó“ÅÍñº¼ž_,zzûcaùòðÇÅÙ›o›ã³Ó¯ŽŠ~d`Ëãõ¼üÄ#HL˪õeïW‰ýÇéâýâ¼ ´¨×¾ØéåI¹¿r÷?½=û0{vº¸L¥Õ_Ú×½|w{õîö‡Å‡ÛÅÅêBE±FËUõò¼O…í ,>\]^ßÎ^Ÿ/VÍÿxùvq|uvQÔ¾¾,;'7Ç—>¾Y\ÌÎN ÓŽËyçóWç‹ãùÉíÙ²àíüüüíÚñ½›½ºxÓÛÔ‡Ó«bZÃäY{>Þøc‘øòtñú¦J®°¯Gdà˺R[賘_ÿùz~zVœ¦–­%Û5‚@«sêY7·—Wu¿‘®%‚ GMñåë×7‹bzhÊJ8øx¾XIÏN.Ï/¯_þnauûòè²êìöãKüÃÑäx¸5ëi ··&Q·NkŸûò¸­õ]é'¯ ã®'5v,kîsîöcu—¶(¯|jÒbóÕ (“—“ò?ì•ø¸’@€ú½2¿,½jó:Ý[˜]^Ÿ½9+ì^Ê %«ŸÜ:§‚zO9R*˜l¥È›»ã\Ï/nJTyûÕÑÛùíõÙ‡ßãÊ6ÃÉŒ¢|“Y’,øâScé«£'eO¥J);%ÂÌ(.E5eÉÞˆbK´}Cÿ¼8»-±õÝÍâúï5>ýï‹Þ,Ž>Ïldv¢v¢íÌz½ütyÜçÚáæäáÍA_sƒì.áëvq½ÁžÒÎùâ¤\`~þóüãM~±$P¥5(MàOˆ€ —òʪkk7ý%ȈÞ²Ðê–Dü^üyþîææl~ñ§ówõv‡o¸ïôÛÅû³y ¹µI0?jßn@$ør«;Ú ±F#·hI²;fÚ®’ƒ{¿J]'O†š~¼üñzQÒ¥ßý¿¿ýõ/ßþÀúÃ6oCáÜrd¯ÎˆÚrúŒ‰%a+>¸$ÖÌ­X¢žœ)@ÇÅ‚‚*5?ïëüVªÜÓä¤Ð^ssXXMMX¾.·IU8|äMt#@7H$‚<Ô—}òý÷G›á#Ü*w›` h"û·ß{:¦ 5ÊÛ›`ÍúŽû›ÈcšpŒ Ðõ»o¨¿‰nbàê¢_[ïÕóýàÛfÛó/Gô¡NÊ‘àáù׫“º=<ÿr$È¿Æ÷’Ý.jG”r&B©ÈèÃQ‚¨ÛJûé±!9öôÞ~ 'gÆý¶g(жk¤P<‰¨·ÂêŒÁÛýèŠE’üh8ý„:…²Í–{3rJÆeÏ,Q±§=:ÿ$_kî±`ÅÁöuêç3—÷}…“¬Gã)ž_ÕmDÜwã&9?È¡æ^·­ak±³‡H³O‚6Ô'Ùî$?åŒxôy/dâÁÉĺ}:W7ßÏ`‡‰‡R`æÓ1†Þ‘÷MÆ?Œ ­V%…æv+Õj9¢=ÀÅà*ÑJ`Q"ˆ>2â|¿üôp,û£Î×ò |'½Wwð¤AÜ%vÁÝ4¹RDn!ÏœXP;ÈHfmÏš¼Å!Ïøhà}'Âc Ql¯”X-v(UØÛÀ«$ Æ8 òpHä|ÞyáÄÙ9¢…¼I n#ïT…ÛЛ¦Ìv@Î+yåG#o;!)"c‡ó¦5žSxy¨ÂÖ>'#Îä¼Ð!‘y4òºòšbyHY¬Ëx©¢]Ü) ’væCÂÎúhØeǬF8¢›×D&Ùò\…£ä!ûùNrHàÉ <ï”ÖX2po§5”‚6Ò­Âà™Sd= ãQ <æÇÏ;„øñ??Q#:ð£Ö¿’=Êf¯Îç'?u'pú0V†ÃMA2í0¶n[P~xÌ\8>‡¹"R´CÚ ‡fІíÄ=vrˆg(2Žça(ˆƒ m(úáß“¯ÕNtH;<ÖN;iNJÒõ'¢¤"¹e'ÒäìcýiÕAòl1ùd©²gœH=žÚR’Gx¤Ìa»šKüñn¥=nEJ1Ò¯ˆåyøñ!ýŠô±S» ;¥„9§ ˜Û)!yNÁÌí”0<vRB¡„!þd)áïâU¼žkwö¼ßlÄÚ¤ê˜ûZ •ÄX=ƒ?š;áq2§qZú¾~oF Èø}lNuÛñ÷1ÚÌ1öcìo=½Œ´‹Ó…µÜ AZŽæž£=¥¶.}œ»¸û×®=€ø¨55™øÆ¿óèk@G5`™FÖúú›¯{Èc@–¼½oôûFúÕc“)iè´¿ýSÙ¾îi#pLœM L¶7òÝŸêÖ×È([‹gr˜FÉe³¾FFÙÛ˜Úø¶n}mŒ09î8 ñØA¾·s'jeMˆ”:I.GRu_%ß)«üUŒèUd+Ñ]$XùMÝú忤%Xõëºõ5£ü ‘rÞ‘:: .eäµÐQì"1!úm¡Ÿý¿£Þ•š’ÝÝÖlc”OÏ’mvŽòé¬ÙÆÀˆØ\´ÝœÐ³ÄÙ,ò–8c ‘l[W8›E|n…óÉùÙÕÍo\Ÿ¿>þ{µd—Fµ«RÒ5oÅà|=ŽùC=h¢ÆêðúÝùâåâýââò´.h¹¾üiñòâòbq·?[šä%^}XÔ¸ZzùêÝííý²ÿ¾<»xùö¬èwWÚ´t¢r÷›dšºOþ:˜"AÙajv¼~çæ»HþÒÁøj¥»ÝCv I+Îïcõ¸ÿ°eíRç£}-ÃÂ)Ô-E„™ò”3›r4pñÅŒ_ìÞ7¤ö¸®¾o̱uL‚ÜN§=fáèdÕ–EÚƒØÀDä™s;·ŽD*‘eô ûg¼‚‘"-¡«B1f.eÇ?B†±“)ãÉýÖŒÆ>Öh¢¾ÍfÀ¡ƒ6Ž|@›G<{›‘qŒµ™CÄVGcÄaGcäƒ:êów4pÜ“£!£°ÁAmFôümF<ºG#¥G#c´|X£*:ŽŸÏEaz† À«^\*U/o{›SG!yŽ‹Á«bvP#ïÏôü–jVµê¶G¸<Çe›U1;¨|Ÿ~í9.ᬊùacpøgØØç„êÉûÚü‹¾mÚ“í1Qe VäeºŠ ³#-'ÒÐHC¦‘(Â<㋜¬É=ÀÛ>AÒ±G¨–椬À•±û'm%©øÞàÔQh•ëcb#0µéŒ1'ÐÌ\v ’©¨¾8Äâä'žœ$ÕØ7šk8•X¼BHžŒHi:Ôdá]45eÌ;p"$Æè੉s˜´¥ðdʇ`¥Òö#µQÄ)!q6ŠŒYSŽ€îú¨ÐÄ¡má./³5KÆ÷ú{Ŷ4Ó>ccÖìâ¾Ê» DõoˆD’)OgÄ‘$«Pû(Åyc"&Kb¡­+=_÷^àuë‡ô{“¬ÛùºSÅ©3¨Æv óvÎä‡ìfd@Gß%_O¦dâí|]s2°Üv ¼)JèÓÚ×áùÛ×iÉ“jfk‡HÑÆŠ ²ÔÈ>µ…倅wŠR‘ÜÉ¼Ó ¢%Gpo+,¸!L-áä É„ûNzBc‰žrŠñ *ûÊô¤Oz8ˆÎ:¤³?Ý$æA–í ÀSNDeR™žr‚î*³©¼KWŒàI˜Z*gHØ!6X2iû²F— ~¥w雃’;³JÛ—1¡A;û NZJg¬¨©ÆÓ(íÿ•FøŸ¨4='¥{ž±½M}Ιö8Ÿ¥Àu[Oh ±átFT-$OÑ8cw>Ër)å€v·à˜Hȸ•É÷É–R±$l€Tð|Ô¶‘H=zk‰böî¶ÍQ5r϶‘ûk£ êAHÍd¢[Wk×Öó“?Z4ïn4¹˜jÛñrò@l;ž&tʹۗruEh‰:±}÷‡M2ý´ÓÔ¹Õ]†²Ë4k¼x‚P&ºÛ¯m‘”Û€j$‹°Î|¼kbŠPë"šÝQòsDÔþMÑýÏÐǾ¨€Yé ý‚;:jðÖŽYåðýÅ6ŽP¶SïNej5H¸RËò¹Õ”Ÿ¹Ú3Ѻ­ÖŒ6G3ÌeŸm:#N”É…+~}ðøßàíž>sð¶´s[wÏç·‹ßCÊì9"—ØF ìÅh5$±ål-¨”dj£ê ¤…~K´ßbœûí}rv}r¾`uü‹Í83WÕ'¿ñªrÔ¸‰Y§k²hû¥iÉ;C!©¢Ò±HÊ”­eƒUP–}`‡O€ÝþýkoÈbnBj?f‘Ÿ!f’‚;kTóf§Jþ`Ä<<Â=\åL 7~,᪶ï‘Å* ) “nSÞ‰F)ï8^ù½ÿ½2zÙç†Úþ“µœEräÖê4Ó„ÊÝ•lȉ˜Z¦ì=Ùí㉌ö¦ùp¾ßüt¿ÑzÌ97æ®ý¨vŸ!Ñÿ*ÑùõÉQÿ&ÊÛŽß]žs~ÑyâÄýçKô<ÒsqÝžÖ ¬M¢ÓS]m! ¢¯úúCãß}Õûª+|“»$lzwñÉ|r'8½ûžÀË6cInSøŒ@Sÿ˽Y„jŽ­žp½yg¯{t}ÝO&}0Žït7­»O ÿ ã€;àpðn!RdÁA…ä¤ÈÒHb#¹m„i#ûCÃ]0>ƒÕõ‚ûæh†”„-g)»˜åÌyõhBpæm#û¯Ã[ó'å­' 6ƶ‘}¶ ¾^»¼:Zr5E QAÙ+Ê™÷­=!´•Š 8 m#;Ú§ïÊÜà‰ÃmfŒá¬‘}L ÆÎf²¦íòH—Ëì#‹MgÉbÐêØˆðô‹Ïf”2›Øt½çuuºÕÝûû2Å€”¦h U´µB()”OÛÖ\P +tÒ:i mÅyä"?‘C® ½#HÔÏtƉ³Vܘ2ÛXBí}xÖ¿.Rè ^!‰˜‡;«®ìpD}úWÎòÔ4BÛˆ>* p$XQ}TóOj!Œe7z„ë^¥±È>“…‡d¥/ü8¶°¶ÿc¤ÄUs*Š'6Ðz'ƒV·$íšî ˜ÚÝ’l]›i4.c2¢öIâjq}sUDÎÞ/î߼â{kŸÅ§³Ëë³7gEm™¼œ%«Ÿ\öqóœ÷W?üRK^ªM>+SX µ ~A¯Lá8´®Ò·Â½{³Cl©jï€éЛmØHŽþžèyݺ¯†-* ·f=­á¯Tß×[ØT‡AÒ¼Hp C m½Ä)-^z™¼õÝ·ñ£h<Ü(U7†C%ƒ %ƒ?Ü('øZv`nFx8Hšm±ÙÚþP";O&Yô©>a£?ùƒ¨ ` Â߿ϙa( sIèá\z­ó¹$òp.E?$—TÀ¥…Õmg.©=ˆKYê¶3—Ô÷†’óp\rÞ!.Õm.¹ì—Üêv.Ÿ¶VÌãéIÝv‚Ñ`ÙìÆPï 4Ì ]]2 ä’'X·Nkc=2Œö˜¾åáôÍàáT‚úy\ú†V·Q雑2ƒçþ,ÎÇ0rï•3±*o×–¥nÒö••mœ¶N˜‘¨_Y¥lô^8\ ”¥WuÛeøbÔÇña"´ãÆáôFy‡ôfùÙ%½Qýí¡døø.)Û¯ £é®cåƒuI޶‡žýðá¸i`W6®g=°1‚E#ô·£E/Jã‡þ8<G&JŒ]´v˜™) 0ÿo’ìàŠ@GÛ`woÏGUmÏ&Cf§èlœþîúº œÏ?.ŠÚ˯b…Ö3ËÉ—ç5%o—Ýüxùó›ëŠòíõ»E·Z3»º<»¨í¿žŸW;4§½;;]ÜôŸ¸¬›½zuù¡¿þ糋‚æl}“€ö‰õ=[Ðg$J 𙪂®w+o.æWË[kTÚ¬¿¸lt»sÎ*÷}ëÏåøûëË·ÿu½±¿/noÏ.Þ4Þ¹úÁåÃÇzÚ§ÂÕoCõÞ‹)Ú…Û…7…˜åzET“£ãfÕÇžªµ'@ù¬¤|o¯>Ssÿt_ü^¹Ü/¿k{íõóþìæìÕùb…Z#{1/…k‚­Óß—åo·óÓùí¼qþu âÚ×§¯_þŸo¿ÿÔ žœ¼ü¿—×?5X˜¿º|Wˆ³:g%wzò²FéùíÏÞ—>¾yÿæ?>¼=ÿò¸©h WË•‚Öe¯7—ï®OŠ–?ÞÞ^½<>¾*„J—×oÊEÊoÏêIÇ¿-ƒúKi¤jܹèÙíùâ¥ÍõîZ‹ã;5ÖÝm£e9Xð l}v ¶:¼~w¾x¹x¿(Qæôþ£Âjííâzõ”±Õ¾H`ƒ_ÏsÊš%%5øbÜ#Ë4SsÕ¢(E‚jݦ¯€bÊà»/Â.Âà=o¼È$SD;«wFâÜÜë›Ï¢Ç`Qÿ5ásûKs)(ùÝÊ!W.{¨I •_´îã@À’ëýÙÖ–œ³ÑhtÆÔŸ3õgMýyS_æTï¾ü÷F¿š¾›ò‡T3 ·ÒÜøÀêû[±¦•Þ¡E›Òý¤ÞLj—önX-9`´Á/,Õd°râµ+Ì+jwÈ݈7´ˆû?ï¼Yó»E;2ÂÇñY­îRÃçÇÓúo€ß> °¯KÖr;Ç6/CT.ÁûèSm’729ÙŒïÀòÆCÆS¼-|€]ÂP¼ë£Ý ÉŠ_u9Þ$ ýl¤?|özœ3uŸ—ÙN’ŠËT9bL`*œŒË&“o&e_³ó48y¦ò™h$‹©Gb›dOè$âS§†’mR)n’¦Ù*s΄œ²3Å4c‚\Äl‚)Sœš¥,èJ“ó oä”3ódÐÑÉVYIÇŠH†2²ƒîyË|¤ÁþZ–7Œ*ã;lĨÜÓaGõ“c7¹{I)k"RÜüdùÙÈ”²EnÛV ¡8)N™Ò2‘IÁ>ÈpŠÉ‘P ¬ëH`ËZžµzþ½DÈÒ˜Bl"w•°º`c‰M^ê^“3·Û#;¢k¶õR ãš<“gFÊJ¢/ÆcÝ5B0·±ÎžÄCdõ¬ Vä jÒì§PQWd¬8®kV« ©ÔÏrr²l>m ²ãL!ÜåoǺ| ÓÍ|2Eýdë2Ú8-+¸ÅJAÖûž‚‘$Ü?O  E×ìÌJ-³ïð¡ök; Ú'+uX0lÜQk|S¶ûTd@ÅÔÐ"¥œ•ùZ è#^>$lÛú[G™¦AêRá#uÇœÞßm$ >Ÿ`|LÕh z0'%#É÷IÄšD¸|>DÍ>D56{ˆðlŠ¢9ŒŠ‘€ò-¹¨UãfÖ³œQ‹OÃÒ¢ȉÙrDµ=‚(¯†ñÁ2ራ­‰ÃM¹ÏØÃÆ~t0CjkQ‰Ë(S¢„hèy¯@2ÙTp%G£n£ïRÝÈÂVÊŠ [)ƒ¤sL‹ J®ÚŽ·um³³•y»•«ú”s o–m2»³‘ÆôÎjÅòw{8]×Zµ©åÈž«+UñÈk½×ŠÇgÌ,ÃfÞYgئóß&›Ä”"™¨Xž¨%Bã¢qU*³ùD4eÌ:%I"ÕªÉݦI£ïbýã¡4¦0r¤jNÆm]5ôöÕÀý}uWÇËóo./HÁ†µÜ5g1©D);ŠoÆWJî,àñµ2›Ü}3¾’r'Á‘¬—(ôôê(¨Úº¦õã­$#'g³ìîÙ«ùÉOu¦õ¢ÜÛÅâçZó™¬%h³ Iì¥OEkr·‚QB0S´Vz¡ž,ÂdÇô©ÎA>(WîŒç8i8+Oëž“MRHμLò³£Of›…1™IR0GYæþ ®XeLHÙmò©’÷x¶Aà0å+ç{'o²oÁ¿Iê;)>%V uŠú¢ÿíýIdPwªW­Šk.k½ ¯ÇMÀôiï›úËŽÝb’ˆ(N &šàÕý´x!aWB6³/”eÀq†ýmØMçþ퇥‚.¢³L^t½zg2Óî–mœIzÜnÐ?«=©f¶Î„±HrdÅ¡€Ah$]Ž©š½¦º—±Ì“‘“˜ cŒŸã.~®‰ }_½·ÈŠHeÿÝ{õÞ™²?(Xf{úÞ[ dWËûœm„ËYÖ»ÃdÎ’E§ÍÞº¶§7לX-wÜ_“)™x<²/·ûòì»÷å£f11„æÕü+¹zMy(H}Š)XÙÀ§3æ”L¢¸<&¥›Óx‚Ãc¶þaÞð±hÙ?Ý}h;bðWá^Cßc<÷wõ«µ{/5U2©¬Ëë)…ò/—jÞ/üﲎ°]úö¬ÜÛùYùz¹>½!źàt^–^^_Ï?¶w8-™Ñ4,‘Y&ž p 1µZ&„a8 LĈÈSK(â:ÉžÕ2ORFÓ‰irº/¦œÀ%ÇT5‘3¸,çã,¸TôääÊÉ”|ê9AF+r()ØÅ|Zé@4¡daj˜ëÍ!…oŒV)hÌhµ±®Ü¢¬¨{_¾þ?SIüLêlocal/var/www/ocsigenstuff/scalable/application-vnd.oasis.opendocument.presentation.svgz0000644000000000000000000003316212060404165034007 0ustar0000000000000000ocsigenserver-2.2.0‹í}Y“ãF’æ»~7û¥Ë†@Æ}”T›–ºÛÆL²›ž¶Ý7+“UÅmæay¨ªôë÷ó@ÀÀE‚yHLv«È@ððð3Üý»ÿrµžýº¼»_Ý\¿;ã9;›-¯/n.W×ßýóþ–¹³ÙýÃâúr±¾¹^¾;»¾9û÷ï¿ùîeÙ쇻åâay9û¼zø4ûÏëÝ_,n—³?zx¸}{~þùóç|U6æ7wÏß̲ìûo¾ùîþ×ßÌf3Œ{}ÿöòâÝYyÃíãÝ:t¼¼8_®—WËë‡ûsžóó³m÷‹m÷ }õëòâæêêæú>Üy}ÿ§¨óÝå‡MošÍg:qïý9çBdè‘ݽ~X|Éê·bŽ©[cì×¶=‡õzûe P´N&\GøoñÿÍ UC~óxw±ü€;—ùõòáüÇÿùqs1cùåÃeô˜ úµqkKr½¸ZÞß..–÷çU{¸ÿóêòá°A¸ðóÓrõñÓÃö÷êòÝÞOfÂïjo7xÄr)Š®åcãKÊålvçV¡K ùj»¼¹ ¾;[ÜÞ®WXî›ëì×ëËüfq¿ÂŠß.¯Ñå‘0%¿\<,Þ/î—9&ö[}è›Ç‡ÛLJ_–_–×ÅHx÷ár¸/¯Aaó€å—Û›»‡ìÃj½,æsþéæjy~»ºdînðåâþüæË×Ëëlud<Ç}ëÅûõòüjuµ|øz ß_-Ök Ý!μÏíÝòÿ†>ùíõÇ䌾\ÞI ÏÕÉ_ãߣÇw—Ë÷Ô³XEú…etá®—‹»¿ß-.W¼èWô¬_1\òòÜuÿps[õ-±-è#϶Í7>Ü/D,j»øº^½³‹›õÍÝÛ?}¸ Ï·¡é¨¹zøú–ŸÍÎ[K=Áѧù„ÄDr-„ÕÒº³ääuû¨Û^*ýdk•¶²öþ©™²å‡å‡ÆL¿2¬ôÉa=ãB0¥º‡]Ê%_ò½†µ‰ay÷hË‹÷ïÛô»ó:buãa…Ýxôzy±ëÏ‹¯÷› BúöÓÝ„ÿO ŒmGhéüv±>–ÿ¼^=€Â?Þ/ïþATò_ÿó~¹Óëî×÷ ÉWïήw«/!ãÜ;íæ Ÿí/PhçµVÌjúîåÚ˜7ÛéówgÎäVÚh2_ÑèenWf‹©_Zu® <ê‹VÎD.•´[ôýŽ&ºXO Mé¹Ìt žõAÐÁG.¾`ºØQËWL•³\há·Èüa§ß‡d¿;4:t§ƒD2c¥²å‚T¿2as' Ç7)sÇRüÍ@4Ø@wO\Mà`Ô”.üílänš[ífŒ¦35޲&Æc©ñxz<›Ù¾±^Ýþ×âáÓMÊßÝ[‘ƨzJç|f¶P¼žÉ×7—cÆ÷ô¹¿ˆ'½]½ëk¬ÞÍ]vñx÷ëâáñn¹ ÎÛ0¬çÂÏfh¿šq.æNäš ïÌìbÆæ {VKÆg™È­·ÊÏM®˜÷ZÌ2 4᎜yi„¦ΜVsIw17˸Ê= É©I - žƒý"˜p¡3½XΟëÜ:εŸ±œíÌœkÌDiïg™Ì±„˜ãf¢ŒM<7Ø v.   ¡Ât<Óô錳³Ìåm­Û4€ÐpÇäœÍTnÍ‘ØXffsíóLa*Êñ™ÏÁ+=6šËñÛÊ·9FãtÉÁm¥ž c_r¼o&hp‹=?ûaÆ™G»!P:¼^߀5¹·Îº”ÛåGÜÖo¡^ü¹IÆ@õß|KW£ýsÿpwó¯%ä:Úäçz•¿qÏÃònƒ¥´?²Õ5šnoÖ…\WôzÝÿ÷ßÿr6Š,·JÏjˆüaù÷Åãýýjqý—õã]WÓ$0\þ¸üu&$pÉcÚ7ð¸>¡Yæ#Ó:‡ÆbèäÑ:›’Kcß)aeÉçÜ8”5¹öÀŒâ«NrÕ`Ò"çö¦Î¤¡ô8n™©3i…'0pú& nÃx/IAÀ4‚j'%êLÂyßÅ$¶ÄÕ©_§=XhÅœÒÂtR:RZ»ƒþå‹ÈLŒ¸EœN ì<Êû4{d:ëP9KÖC¹1³ÑÂp²[ëÜx8›Mòí âÚ nŒaI¸irc›3úãsžhpÂÎ!\Î4ظØÅ <LÇK“9¤vÅ!Ãc§2íÀã<ñ7Ž>ä³FÎ9³9dpffÞç^1•äÏë]äÞ35wTWeÁ̤7ĽÀÓ”ä`_lîÀA10ñEúf6û©øÚÊÏ*q¬Î¾ÚYÖôZ¨¤hPìú èà²í2’`¶«B*€|^$¶8J*€‘¤ô[ÙžÔe!)§¶tæ.4êAĤ] 9²‘pŒCÂWƒ}` ã@nÑ\s’X4œsËiµ±¸ŠîŸO)(aüDJFSdñ}*¥ãÈ8=dè „-è€<‹Ôëwg@éôk‹á•]4÷Ú‚4lû ý5«Jmš+éșКASŸ^šƒn̳J6À[ï'£…=º0§4w‘¬¶‹×J Qh’ªìv»“<µÅO’£â‹$@qR›XÄJ'0Ú0 ¶¤A2Î@ðÃ$‰äƒB`õZA.@Ò¤y3^n+!2B®X.Áá÷“Û0q–uÈOÛýg|OneÅ ^Ù#·)ú$·™úƒÞOŠÁkŠšŠ2€|Œ Š‹cìX¢M›sýáX·íÕýßZHƒÀqCf…H7Ù8)¼d\5œ`˜™×;ôT)' PO,RŸ¤‚¤Ö 0æZ5Õ½mNƒ`ç­Qºó0¸i{£¦X^3™ˆ&vËë‡ åMëJ]úêñNëJC<"± V)c(ÇÊ“„mHcd‘â*‡æ&æ þB+ÎÐ$±›È¾·AlÓV@ÌÏÄ23èÃÉæä!ÐA‚„(oDhóÞ ]˜Ÿ8„M9[“¥L£È&G[CÇ㻆œi³KÏèÑVi OB#$|O:]edùÇÀNpk¢¦íÛq3mBKS·bmlŒÆ×ÇM<Âiú 2ÂAJp™¤UÌÈB3z%6@Oe×u‚‘˜j°uô¶ EŸa&GåÁÈv´Ãò=Æ­¦Ï°aAõDvFÃÚA@n9ãò¦zÊ;úâ ú x×4©}8$ˆ #ˆÌ¥¤ÏÞD†1önÒDÆ.µÝ‹³Tô9hq.?ÐgØn—œ™6DäãL]Œ>{ã„`cíí5áLGþ¦çìõ¾‚=¹”Ÿ_®WuÁ^'$û”h¯ÇËö:!ÜãÙIéâÝQ¥{mí‹A “f8­f¨mRM™w´; wžZ3Ô&é>Äo¢¬ü]ÄZc;Þvr¿ åæ9NŠá”(Ø“ño!Æ‘‘Ãø·½)âÚD@ÍìsÛª0….[•R„«>fÓÓºŸØËIÄqr?ÃýÄÎÆÑª@ñì ”] ”cJÈF*ËI]$êå¸HN»gú݃>jÄ¢–Q(Î~Æò-6\Ð7š’[Û†)ZŠtÒMìȤ͡ð[,«•9×€ ÂòPö@'½¨©J€ö OIØ$¼ÖT|!@ϹÃb€ 8¤06jÆsnœñø§±b†­•LÍ‹/¸×›œL“šS>rEƒ3<ÙSVLòå–C}·!a&—î)cæn™5\îŒaЇ$™Ú8ng ÷X’é{L¸î)³*WÊIÈt šÂ9MGZ-×RŽÁÅ"äÚóÖqoÐGyÇCþpo$®aÒœadô‘šr‚ùðÎ7­ wŒˆR¨¬P¨üµ¤0«ÖBÅöÊI{rÒ^táí`u„Lp}º›ðÉ3o}ærã~ãƒð©(Âã¼ãï— ‘w"¥ (Ô[‹}ö¨E³/”0Zê°çQ ”ÎêKõ146•cÑéÿPJC`/I.”o×ÒÞǤ£(dß‹dß®œšN0ºV:»ðÍ:ï ¨¨ SV¨9g¹õÌ)14ÇnŒ MúË¥ƒ Ó+]í™á3kÉÛ GHΙ%]÷¨óÉ” £ôÁd¾Î”2ŸÈÿY½@‘5´+Mzôª"£*£wC:-èQrE&òìÐ4ý ¸ ÿõ'¯e‘T=ë EK¤eïᩇsÊP¡=½î†…zYÒÚÙƒ/£.YQh!Ö*déS׉ Ö'+j$w}²„5ÊŠºÉ·>F²NP(D”zd§¿‚MÖ]æIN%‰žµ$ÑÆ| FÕ¨éªGUÆêpj ‘e,P½»‘jŒ¥ Ãôž´•|Àþ§*cY* AŸÀ‘¶”ï%~ž‹~ŸzuÉ¢xéúy»uöÒõøvëöíJÝE©¿lXºÁ˜Õ#}×+nFNWELWPL[œ¾¦ã¾‡¾ Â>¦D,'€èîÊp¨4EÕb‡ˆ5T˜µE²x‰•¦vëÀn_Dñ‘ŸFTšJT‚ è³‘ÎØ*MQÕØþ i:zP’š’¿Kµâ”ŇÓë½ìisJÚô’6Ó¤M:5ëÏðÏb9öðë ÄM†I‡ :A<]AD0å"ÔŤY°þ3c Pù.Œw\B7ÜHK¾)GB?äc]‡¹Wb·ˆNXÌ5$lgYäÛ ‚ˆâÐ 8¯[*•"!>kM0çx,ôßËÍ9Òí¤ÎÔGA Ã`~{·\\þ¼|øtCK¸ü@SªI";á$´( …ÌWpv»¢ÑÍGÊã"#ÁìDF;!2Ù4T8]8¤HÖu:RÞ3NÍœi`#h€'A2D0«rLC8ÛÀGÈŠÀ(ÞÀGÁ¡B¶nÆÍ¾„úŸ‚âËc|,B_Ž vÕö)99/”·%™µÐÈ©T^Æiï2~.ÉÝëMsÇsÉ‚/ÑÕ ¬$ð’©è¤ì‡dßɾiaÇÇ{,µãÕXF"@„pd¸PµM ìÍI±µMèK»ÚYìj§‡;ÂË×ÂFR/?–ŤÃ_ZBeÒa5µœçä¯j,­ï"iJ0ɬ‡-(™&=û=eÿ¶dyòP÷=m8 °õÚ›!£fÊ »ÌyRz£0­@Ç„ÂFUÍ*šÚä“wY‚¯>SÓ±×@Çž›§ã'iq ´¨ÇòŽ?Š´˜8Bp’{•ÕÓq´×@eŸAZÔcùØïIZÔcYÌïIZ4Ó¼NÒb3Ó±×@Çž›§Ô}NÒâ iÑŒåiÑL©ºœ¤Å¡TÖNéÂyùTö¤E»—yíw"-Ú±,æ÷$-Ú)Ý%'i±Ö,É3`³›R÷9I‹ƒ¤E7–wüQ¤E7¥êr’‡RY÷Çòà<ƒ´èö2¯ýN¤E¿—þw"-&Ž)Ÿ¤Å#Ñ1ÿÇò‘4غ#•bÀms{?A&Žá„Ue;á–¦p @˜è•0rÆæ„i½ÕŒ0‘s…`!çØw@|ÊA 8ó‚öƒ°ÒK3“¹’Z‡´ViÔLåRKIñxŒñä3®)ÐHZʃ¡sá<„²!1Sˆ”Q¦šEÈËà­õáyÜ+¨IAB ü‚’6xc£&IÔÙIÊ=ö(×!ìB0w¢S4 *uª]Qù ¢ª.ÆWñS¸A{ºeVA€Ξ9C±Y! ²·~Š y:kÄàÿþüÓþø‹b¿œõ“!a(«$8‰:œ8ûJY /+€(™Š}Ѐ]†-mö –ߥÃL@?/éWW½+ûCë¡wåø°}ßÈU7ÈÕ.ÈÇCK „U”€sïPœñIèÂèpôÙ3 Æ>’mp:Œöt¹üÂò=uGnÎ#€‘í Æ–À°¬77MÓ•í‘<þ…DÛÁf]QZõh®ˆžöDMm_Äsµú'âÀ&Œ¶/b»ž,Ú~zsƒÉ”?bfS*ûE’&V[b[Óq°µ˜ÙcªWe”o´óÛÆãŒ,£’w£—ÓQÎɀ讅Ù'꺦çôpŸ*élÅŸ=eêø2Ž?‚cݵLÔgnj©›“J·°¢ÛLQK‘pJÓñÒt Ê»’éÎÌ+“¥5ÊZÜM…_åG˜`(¤"J§÷x‘Ñø»YšÙ’²Ž2ÇEä'ò5ó%=aT~•')ë­/{8}­2¯eæÉ-„Uʲš`þ;IË6½Ñ¯=¥a6&Ã}:Ká@¥¸ÌØ%k4ÓÖr(u&0œqJf*¨•—ù³Þ<ûí+VX3ýe´ŽRxÇêÊ„õ¹†Ú Ì…_¬®FXˆ‚ý®32«Cñ»õâaùgržõ¦ ‹šþþp„Ñ¥¥TJ ÉÇO±Bî—l¯À­òàym,µEØ],‡ÆÏts­Ð¦üîØG]«å‚>¬q\ˆÀŒoàÚNŸäã!¦õVˆ©'âïO¨/o™²_Eu™6 m½x¿\oºÄyøÿ²^^_n§ûž~¾;»Æj,Ö×(;c„z¹g,î?nï.–x™ÛO«˜^=‚Í=®V·ë¯#k˜mPVú_ö@XC'f%ëä¤Ùƒ¼&­f ¾ÙË÷¼SÅÝ­:òÖD¶¿üíGŸ¤Cæ`*{¥F€œ,ß òF)@þWFŸ:¤è¡´XÑ'ñl»¯™p b¾ˆn½ÏºÅ-*×þUlz Ä]å”ñ¾—-ˆÅ *Wºqä°ãªËa@vì½D:œ<épú)Ìß ×wBè—®k]:ÎÔO fmSFz“<—:DÒ!Ò#³¼¨üêÜN•þЧoL•`}¼oŸ1 ¼<û䀤^ž¨1ZkFg¹gÞ99úÈGðgp2‚2_—ƒ£Òc„°õ“*Vtâ¾ sIïž|ìÝŠ£Q]R5×Ⱦx©&9Ô÷=ö¾x1¢©¥½~¥xóJÈp:Ò ÇèȾW¸œ¼CÚÙ©5„YÎ-÷¡ŽQPC|-)¯²y# ÀæÂ*¥"–‘¹õRF‡$Éûe9gQ‰ò’™zX@X—±(É}G´Ö S_”iñTda¯" ½µ±ž±ÈBM¢Â‹4Ëõ€—qî£tm )[ø Ò#ªã Ü©†Ì«œõF¡Ëá˜Ë¥ã62¤…x€6Þ â Š'XYžP ûàóL.xçeñ"Žäj’ àâÅ Qd»5§¡ã¥KüÀŒC|¨ÝÔ&™?9Å_Rí 9‚ûô°³©kWØþÐKãxýÓSծاXÖ‹’œ__í ?ˆÆƬSí ˜ì;9†i:¢Ü*¨£vE‡˜Z;Nœ$(/ò´LO튎#BÇ­]1î®]ñ Ç’ëQ$»F*ÇÆF´ ¿1œ 9‚,ê'»BmvÁ¨sÄ€ázdRN|Ò8ÎzHµ–J„x¾T¢«®H°F Ø1`5ÈÖïø”¨” ïã”Áxœ ’··®P½†cÆ ïjR  MZؤE«RÊÉy¦©Òº0¾ ÐT][´Ü´F\Óž °kaܑ”S»çóŸÀr+¤Ë½gÌÑ×\8ï‡`Gä%mŒMnÓFÞÊ|L‚¸ã’H ï„)íÛý;ÀC£$_Ç–×€ŽTuìm÷Ñ485/Ï0ë…ŒâCŸÈÊÒs $›sA…°¥)ðÜÃèo&}ÃÆ.ãΕóeØ9´¢  ç¬É\++ƒA[Ók :W^’’±ƒ;hÿ”/@CWÒ…¶zj9Åœ •Ô!ŠÚ)È, Ê}Em¸ÅK~6™u!æ8”‰š(äÝaÔbÎUî´Ú¦mRÄëó« Iœ#HhU§|ºNe=2XïÚýF+;R ò´7L¬Ü¢=šúnÑõ­¤ï8–¶¦Þ1’º˜'ðkuîkÁ±¼Å>®zk¬1x[C^Ð:wNû8— Oõm§cPÀ<6Œ%!3 ò\KÚÊÒ;¦ä\A ±š«) »’2ê ïãJ¦ýÐL3ob;[| 6Ìûf²)Î@•œ‹Ð^$û^$û¶Ã–R´Ypa`KFNϤ“PáAˆˆ¾;!å>ÀmXt$Wiàâ°ûe ‡ý,z‡$r ˜±2yƒ–5)]ƒÖˆå”I`”ª…%Žó@Nëò|[œ\-n-¾KnM%Í ¬øçÇ»9«çšºÀ,ÀÛ C?¹ ™`è· ?Šžä5s«Á!q™Í¤>·äÎ7””Eš\C—ñèågÊÑ5¥—a–)úa!uÓ©ÝãXùÈŸèk5ÔáG5©™õ9Ñ„”éá^ÇE˜8Ø/0”s.Íu±qj^Ç6¾{qt¾[çEMÒŸ}hI2>‡¬ÅµXÓ•bµS(»¶¡ÏŸVËAA±ý¶{¥DÍr?h´–pؽݡÏ$).1´ñ"PýXþ hé˜4l'õîŒÄY-´ˆ(>âóêòá@žsFÊ_t>:ÜÀ48¥éý´\}üDkÒ™™È¼Ô2ýÿûâñþ~µ¸þËúñ.Â¥¾×#¬ºüqùë*<žf¡(ѦmZJë®V€·0ÕçN´‡ö=Õ¿ÚR}CN3F@Í"¥‡ç zƒ8\gý¯ÄSð€5tA:&9sÒ×õfr¤isš—sÚÌ­úd©þ¨, ¢$=T™‡“´ÝÎÓ ™†³<ëöÿ~¹€áîIá”`ÀÅ—ÓžíŸCq52!Æ…YšAã%¶ï b;Ä¡OxI±ŸN×3sÒYTš±Ðÿ:ógJß’±yémÖs2Ž\•Ü•4é}ÏÖüÓOŸA>JîœæLuÄ9mŽñ¾ýÛÐ'9Ж;È!ƒ’=´n7€v;˜–ÚH÷HÖ]o¤%±}ƒüõ/ýá¯?$qjàÚøšC>5ÿ«øk*¯WL¡ëøŸ^·‘¢Æ ȧ8¥`¹#b ue¥.VZÁ¸Qq~"]+÷Ü¥ŽO?X }FÆAPI±Zj“¹¶÷Ÿ.ÝSaRÁÕÂß¾\M Ùw4p¼áiž¤ÐÙdy KƒéI czlÆ–ƒ$(¨Ù –"ûj_ÔïãSSr~e³žô‡GáûÊ? ××¼p,ž¯eŸðt0Ç׺ǀv8¿×6ë9a·?·o×Çvp¤su¤Óz¤2€$œ-©ãvJŸ´CF“QªN 52ÊìäIg§iä°y:ЈNÐP:žé@ójñ§Å"pÂÕæQ?áO ¤ýiMK>úþÄ@â'üi ;ÑŸ@jñkžðG±Îc6'ü)€Ô-$þ¡ñ§[4<áÙþäI~n8ñ¯@:ñ¯VÐ< ÿù:ÇE·½J„õ{r•V½žÜ¾d°£ŽÚiÓgÑÝÉ{ొý–qÒ ±GŲK§z¼ŸíÆãAg"{Ðb'áò³,Ó‹Ùm²5[h|¨õ)wšêñ-œö-[kuŽ- ûжÏdÏA‰Ó>«[¥[K%nA*z|QÓî3Ñã–:í32æµV¼ŠÉõù\Úg¢Çm}ÚgõkM0-X‡™vŸñ“Ü8À2Ó{€#œì!‡í4fûŽˆœöZMõýQÒ÷p™i÷ë‘TO{ Ëæú“©Ê¾,ží4é{$ÓÓ>«/XëùÂ-H]_¹Ý)÷™t¦ïhÖi§aáì€{Lkˆ´'kȘ3ýÖiŸÒ"íÉ2`Ùú­!ÒÓ"ÍÉ2fÁt¿5Dê§´†H}²†ô/›ê·†È>ûûaûLŸ4´®«ûX{ Š ö©ÔSî²¢,bŸ’ý‡Üiup©òh_ á!û,Ôí‹ñØ«µ)²!AŠû„²ÎÐCE•ê…< =ÜfìÀÀB73|¦¸ð‰„ „Å©¤Š„ † Di4k‹mVƒ¬¦r{’ AL´è­¸£ÊPx+.š'~+‘³šWdì ,Sfö AUeêdµûºý¢ÊÊ ™+ÊÊ¥ ø¼ªr\j±Mg/e‘ã¹æ¤6†d—’Yi”{Rè˜5寕@{[’$UöÖ,®%H˜æÂjfü.ÉóÚ*î\ƒä)ë,óÒ&Hžá–gnHÂǪÃQ‚Ù1 *Q/Ú¹ erbVµÔ+™”œ”鎥 GÖ)+÷¥ª·r_ªV૪?bÝ^©"´V\*]$€¶”³‹@{4ZJ÷I#¤¥”¸ã.J,õ|¥ûZNï‹icJ÷E“=•îÛ«t_]é~YµûúòEé¾}ª½¬Ò}‰¢®T»Ï¥ÞïK–H|šâ}é ÷Î_wñ>i%WœWe˜Ô–¿¢+`ôUæJȸzëÞæ¹¢v_KˆfËÖÜWâ‹’çxFeûž;»UÔk¨u R¥gdµÝ5V"P¿pÂ*mõ ý©~á«­_hGpà–>yýÂ1Æ·6: j±/?¬‚᫯ýýú*ã4ÃqëTÂhû †Jƒú`ˆîN¡|ðùùІ‰ß¢~mRëk,a8.}Û„5 ÇåØ;¸†aoÚ¸¤<¼ëÜdQ™µ ¨vRÀ÷dƒøA  î+.£ÆºXDà Á9ØŒÈnÓ @‘þÄ"î+®¢ÖUZ°Þ­}s@µ„?䢷 à—VL[Am MÕÔIख़®¼ß~Õ„Ò5‹ÒõÒµÒu“ŠÚJGDÅf ¨"šé6ý^e°Òµ¶Zêr¥kxÕê}³¸g£>Y šcú4J¬5 °5ʳÅÛž·¼”{úòRß_.?܇o[õyqµ¼üuµüüÍf¢ï›Ao—AúÁÊayáýÍÝåò®ºdÂ_íR) ‘G³"‰€ÒS7×Yúúý§ÅåÍçwg¢yñ·››«¢èŠ‚~£›—‰Æd ¼Í:¾!Û«_æ/Ù&±ôæâåÍÅãV!{,–áöËÎíwwÔa½øºÄ{‡*þY9p…ÛÜ·9õµÝºùüñŽÀüp÷¸l@W²Û›Õ5uw=®.—÷-÷ѵìýû›/éëŸW×€f¶™ã&íF³G5e«w`Wöø²åqÍK.˜@óâýõâ6û¸¾y¿XwNîjñeuµúmy™ <ƒÐ¢|B¹qkp‹÷Úßñûow7Wÿu·dÊücùð°ºþ¸Ý¹d/zwöå+ݶi¼¹[}\]Óëm«jüZo¼'ܽþˆ®š |÷Ò×Ä¥j³›m³f³åÕmË•h‹ˆ¸{Ô®âörìíž™Í~]ݯޯ—5¸£ïõ—V‚qÙŸàBäêþæzýµì¶¡–Ò.vFåêŸoÅ Û›ûUÑš7ž,¤¾‘´:â!øßÕŠn:ÿÇÃj½þO$R­Ë‡®ÖËïØÅ×ê-ÎËרTãè-¿;¯À~}l…õâýDå§Õ¯ËõúfÆwÉéÍãíÕÍ岤Õg[ð–´»3ö8”šÿÆþ™1™1^[øÓËTû Ãn…,:´·•Ï ÏƒÌ¥”dª—FÍ€SÜá+S3ås(wÁx†¡¨2” ººPü˜œ©ª‰çÁÏn-7~fÉŽ/4¹ë1Rèh!Šx#³ g±¤—^Ï‚n-B!+:DD÷(´pA7)f¹#Ä2gƒ- E‹‹‚Å¡ö•Ũx”¦“kĈ™0T4YñàK!†TE÷`›eEÉeŒ XQ[™¾(Š VŽÄ©îq9;^”ÙÂüRÁo¡¼5Ó·†ÓГ´¿=½Å<5¢8 ¨ÄWxàèaEèßj{’ÖsMzú:éS÷áA­º×È Ýx5,3£âèÆ3ï´¶o¶”©†—Õð÷Ú̺0;í¾ É”÷A˜“8?Zp7âË?nè+JʯAß óœÎwæ…2ÔD¶qmèȇ±Œ¹ÐnÐ…šV£j^æ†Ö¤xš–PDð…¤3*©M%ºø³ mÊ.Èò)EKQΔø5þ032‡–{Ój€´¡Í*gÐq/`•¡®'Ýê¨í*jÔNI1³¢;š ðR(ªÊ6ïÁ‹Št.Ôp4wLžY÷ñ²àÞμÀ¶âÎçXñŽ—;•Ìp'¨Ü(š •ç夨XUV‹¨  àvMˆ(š˜rD†ŽùЦ„6¬¡s¾`³¢?m¡-29iRD`Œ”¡Az%\ÜRÃŒßfg Z9Ž0JЗ7;[²V2¸¢–vs™ëÙbFxì˜dô*¿ÍXøÐ‘pÌb[Ìe †¼¯–;²‰ &ÆyIÞ^r‘ˆåz^u]dzF×p¬I† òdñ¡‹·¼8:åCƒõÒa„¢–lñO÷S‹ÙÏ&¢\q[yîÊh fpè2:cî1>Õ“'¢\(T©§wè@„‡f¬$éaúÚ÷ £jó£ô¦06r*JO÷D70²»Ú‚kpzôŒ²kÊ[¸Q5Š ÌIàtƒNù[Xè‡ =h4:of ú_m7LG…š÷ié·õÆ”óœ«M?|qï¸ \…›­/^J1zz £¸¿+® S f…Ý>|Ó½œ yíé"<,wÁ¹˜cªÖ,°môöxyˆ.v•°ÄŒ½ßDˆñŒÄFpHðüÀí,ç,¬aø"g²¡$öf±7-¸±(bi,è¯ë[ñb¢åžÀvrB3üÇÌÀehc†¹°Å@¸˜,¨HñV´íþ£ãñÄte˜P¨M‰°Å˜ôÆAr¡Sî9í€Ñβ ʬ8¡SÙ¶‰#?ÅQþ摟ÆÒX"ÒÍ9(ÄYˆ¸5)åº/¤gDM!…ðZ“¢ó<¢` œ’¨õá°¤fÑ>ppˆ»²èQ2üG!2®ˆå˜Š’1W’\)@!Ô2Ó…(L<)P%¿}HÙ¸ë$7å<­Ç‚äÎ*&‰KKè&¼ˆ¼žÐL˜ÖlÍuÚ9:ÃÕTz¢BtfI‘¬ò ¡˜SÖÄ%ñ4c®‘@*l^ × Ô]„Ù¶(@Ò(I’!q^'ªÒÜ{YÚBÏ ˆÊ È&jJ`™ŒþÈçEõÝn±:-ÕžÅVň ±> JÊ%¡ qZ&qÄÉHôÁV{¡$¿e¼ÒlØ/#æã­†6ׄ±&'½‘”DH:pfr\t¾J ÊfgRçØC|_n`60zý€»B‘PFʵg=0+ÍiÊ 9Øl!ª¹¨Æ³CË!ص£Ù;:öéäÛ-¥IEìPš "}¬{H•ïàP…?GÌ!}äF:š$Ô¯=ñ£•p½"K'™iÃ|6g)%976“ÍÀåÐ 2ñ’‡–È^аںØñPâ~Û‰ê/[)|üw÷ßœÁçµónþ r~Z #‰>Ê3’ ‰¬8lK'³2 LˆYÆm¶f# ‡B= øPˆµggß²o·B -©Ç'ÐJð€Mci,b<6­•鎦Ɖ£B(£"¿KmGÑ ä~†µsÖN\Ò§¾vA"¢?‘äÀH±È½…sŠÂu+`R®¸HcQµ¤™¡)JILvQF Î(…‚¦r(%àº2ýžõ.=Ï£˜&h¬œ©®ùµ¿Lëûo ¡4½œ#–à¸ë YyúõÔcMTøöéÖÓôï¶œQ-½—ºœjúåt”"@ö‚ÿËYVkŽ· fº}:þgy²Qý&Îíã÷ß|GqfßóÿðÔðÝ”ocsigenserver-2.2.0/local/var/www/ocsigenstuff/scalable/draw-arrow-back.svgz0000644000000000000000000000444312060404165025433 0ustar0000000000000000‹íY[oÛF~ϯà*/ *ç~Qâô¡A‹]t±m°MŽm")T$å×÷›Ñ…b,§Î¥,°TlÍœûùÎ949yùývY'ï|×Wms5c„ÎßmY5·W³7¿ÿ˜ÚYÒySæuÛø«YÓξõäå?Ò4ù¡óùàËdS wÉÏÍÛ¾ÈW>yv7 «E–m6Rˆ¤ín³çIš¾zòäeÿîöI’$ðÛô‹²¸šV뮎‚e‘ùÚ/}3ô#,›âÅ(^ïÕ;_´ËeÛôQ³éŸž wå ¤Çh6" 1ç\FyÆy ‰´ß5C¾M§ªˆñ’*§”fà’“Zlk@ñ`0‘{îð¯ðsR8Hß®»Âß@Ó“ÆÙëß_Ÿ˜)%åPž™9¢3”¤É—¾_å…ï³#=êoªr¸C7p·w¾º½Æ}U^ÍŸt¿?F°8õ%‚GÖÑì9KêïJÿÎ×A`ÒzSce[ >D_vù&Í»®Ý¤×yñ–Àõû©ñv=¬ÖÃ~;øfo Ù©îÙQïDœðÛUÛ éMUû½Ïì®]úlU5Ƚk³¼6m÷6ûu»»õMÖ]u½î3(×ùuí³~™×uÆô–éìÃpWÍíEgÛrU!mF¸ºÈßñ_Aàeéoz| vB2yàžÔW@tå‹0‘sŽé° í0ûžI&ÕZý±E©’E¢%~±‹»½£4|Ñ‹2ïc×\²3 !m»ê¶BᢜäD‡ËLuõYrÜÌ’ì<ÈçÝO]^V¾î9)Úºö:8¯7ù®ŸXœª qBfû¡]a}DqØÕ@/SXl»ÅÓ›x½ˆ¤ƒT »{1uÚ››ÞÃqDgôÀG _æ^òÆ.{“#`Ù4í‹0~ %íþ{(™‡PšJÉK‰äÊjÜì3"|”[}Ñ­²ŽËþÂ+ ŸGz½lÂçáóh‰¥œ9ÄtcûInË|SÑËÞìWëD#9ŸýE‘ s±7>^œk‰þ¢â¸Â9{TqÔœ”ŸV•¢,Ê’}fU€’~°*_v›Ï7‹»Îãyìé…ú=\^.ÄX¦ÛñMS xðZ÷¾û Yú_›7½¿'õ{—7=ž”–W³e>tÕö%ÔRg˜àsжÆRÔœ3ˉ‘Òêyª‰Ãœp®Ÿá³«™¤Š8é´=Qw Â”$Æ8>Êò«™pD©õ(¨Ö§X´¿ N!ýè_7þx8Çä¹Ò\MRçÓœ™„‹€&í#ŠÂˆà†r#bMJ$”³lž FŒ°Ú™9wDb„xþ÷B§ÝG;QÍN4NrÁ¬9t¢´L9ÇçB£)©àz.áNqk¦}˜2†Zh)Ý´¥"Zqå¦Ea|Rnˆ —ý–8Z&¾&Ž(Ù#ŠñRs<©Å Ï…"*\ßů_´Ì|ûnœBöÀFRËÅGt?˜û¶m(ÿ?Î_¥íÿŽ—…”Ke}ù2 ïØquz§å»ÊoÆñëü”Ü*¿õñY 0ÞÄëÀ¸n»ÒwG–Ž×„ux\;ƒL«¬žøô2¿¿ËËvƒžøù¾m— Ë­ä†}È.¶pI)aB3u VJ¹Q÷ —m±gtéz_íÕöžúºë‚@ï<ÒŽ_1€é‘ÒI1ž:MIý]»‰AèÖþCžþM^÷þL÷¶«ÊËš›ªFzôɸx@â©¥ô @(åCê¡dç­«Ò÷—CмôúºÝ>l“¯Ò¦…þ!Ñ{G?!ÝóYý û»vù¯ÎS©óÀcÝqì÷§AÛ]P;÷1¢ SânJ '‡°QE,³ì>kwuŠë8¸ürõç¬õù¹ø]žÓ¾ÇYÀ!cÕW8¦›À Ù&ñЧ™¿?ꑾôC^æC>Îý‘"$ÇJà@yñï×?ž^ÙŠbñœŽo[A ¿n×h¨¨s+‹E¸æÃ«j‰v§Çßá÷e62&¡r LÌv~:|é@ÿ–UPÊ~ªºþNbÆS£ÕPûWðyXž²Èi€·c–Øaˆ»ÛZ§£¾¾šýRḷnv¯å»v½Z¢¥·‡#¿<ìÙØU>Ü=™¾ùÞ ‘R|öôþŸ¤ç/w| Þo»uí8yÆ •xKîÚ·~Ñ´ÍØ¡ª‰’Ä0kÔœq¢•æ*)’”c™ o)„;NµMRAc:Èfµ6ÌîÎÎ篗ãrþ¯WïA &É×÷ó«wï×߯.~|…ç3Aù¾¼ƒ7+:R5í¡‹Ëvr©QÕ}ÞÉ!=âë]îâöœwøã«³»»ë«s¼îÛ›úS}÷þ®Áô¿õ'¸ýøx÷ññÿÌ?=ÎoÚëá ;+?ËyMïYW˜º»½¬/¯®çí¬¯ßß~˜¿¾»ºÁóßßâÃùÃëÛOŸßÍoê«sÜkœw}öözþúÃÕ‡ùãç;,ãdzëkÖ'c^?â^p»ÿ÷ì—³æîæ]q¶OwxÍA7)ú⟻ü„#~¸˜_>ðÈö=ð^D’ßð+Hi~vÿO÷gWØ@íqí‘ý_‚¶zqÎzx¼½[»x¿Á1öÕzøöòòa2P±‡ÇÏ×óöèúüöúöþÍß]žóï{ºq]=~~£_U¯G&+]!ñoó …i¼1ÑÛ˜^oÞϺ>Ê•¯£óÑöž¿t§j~9¿Ü¸Óï§LksqÚ¬´1ʹíÓÎí\ÏõAÓÆÂ´zûlçóó·çoÇ^è¯û„µ—ÔK_ÏÏ1÷Ùõ¯gŸV7 ¬ðÍûû9X÷ß(vœ mÊë—õn1ø7WàÑæ÷ÿF>÷¿nþãa>8êßïÏnÀT?üøêÃÙãýÕ§?ƒi“O3…¿õ7ðØ”½w*z~Î)jÂwëÛ×?¾J¡‰6vnæ3³m‚Ñ.¬)õ“Á¨o\PFwŽÅ¨V¦±ÎÆ5ùþÀ=»>æjÚ¬mí{ëÙŸäÎçŸp»Ø‘ϸU­ãM^óåà¸Ëâq÷L8 ²ÒLz!V…h]\¼å·ÚÄ&Ù ñÉÚ&éäœþn"¬V÷@Z-Ð`»¨{p:ùo°‘·óÜånÆl¾vûqÖÂ|ª4Ÿ.Ïë¸kãŸ__ÝýËÙãû™,¾oߊœcy¤M)×a½Šw«u´ƒ›Û‹VèâÌþ=œwozýönnðönïëó÷¿œ=~¼Ÿ—óN¦ÍºCðU…ñ•Öf–Lã•É)T畚9ìYo•®jÓÄ]ž…Æ©œ½©jß áŒFeŒçˆVÉ»™åY*UµvMÆJjYãmÀu°_Œ2IŽRÁâ(Õ¨¤g¾‰IkŸ+ÕèàS˜i;q>窶 ¶“13œLÎh1¤›€½g*–1Nn'+ÏëØR¬êÔ@9i5F£“²3U¹&:Þ.b±±BŸœ2³ÚáV\ÒUn +36Zjð=ÚJdzižH[ë+ãìKç­ 'ØóÕÏ•VãK™ðxüÐ.lhrL1m¬òoCy­ìú „?o²1pýï¾ç¯ýóðxûŸsÈMg“¿^’×â;Îyœß¯¨”û£¾ºÁÐÝíu«i¶G€¼þõŸþáÕ^l¡=ÕfÕ#äËù?}|x¸:»ù‡ë÷EZ-_’Ëpñ—ù/Wrc¢C[å”òyƒŽû3ÌêÜY‚ö¶N&¡ñ2È ¶Êh_SJcß9íB(8­uH$ŸAíGc’ÕnCH›’;‡¾†Ù’tT¡/¤®  éBÒFéb¤´ \¦=¸vQ£ž($RÎÛ„Äš¹«>÷ÛªdOVÚ÷Neeº¨kcÿâAlmöšxD.Mœ²2.ç²xT¾ÞbrLÖ¬§Jc;/ödÒ8@’u©µ/§‹Ù¢Ü>§Ô>?/HcLKåfSÇFñ?=K‰1™dâ Êeå!® ÅÎ+È@D‘fhíNC‡ÇNU>AÆeÊ·‰9”“ŠÁÎ´Š tpªœ›ì”Ê ö‰—}ÅuÎÊÍRÀ¯¶f6J/È4g5Ä—š%HPLL¹ÈofÕ_Û£òl©ŽõÅ׸È:¾.i68vêõk¤Öo…&@€~YdÖ4J XèFÖæµnO3ÀEèG.¹5Ÿ¹—A?‰Ùƒµ;cg¢™¤4ô!| Ø:ô¯½¦ÆâÁÇµŽšo/×é óË‹5~&£³9úlŸË(À|:Î6ô Êl@]wÌë_P´Kð¯5…/=›Mö¬a}üg9Þkˆ:Ôjxéú42Þ+XêÇ׿`k§¢³ËÛŸÏg;/öäÊœó:utµ!];o\‡CS«ŠëíN}jMŸÔ£º?RÒ4›TG”Ái£,ĆhƒtÎ@ñÃM’åƒCà팂]€¥ÙðÝþzÛbEöÐ+æsHøÃô6ܸª·èOëýrON®u§ZY¹Cosü{’Þ.ý¥?L‹Ácšž‰2}ìÁœ6§Ø±ä›>çþÅ1±Û«‡? ¬ §Ý ÛdÅà¬ÉVi·ÁàŒÂe?ào4¥’B}üÅ¢ùd4µí ¦Ò¨¥zð‚Ášs§`Ø TÇœßúD˜<™]lI(Eû¨êò2©-É÷µç†“©‰|“ÙÃB ”-ÑÒWe|ßÛ!õmÇ1-&¿iŒÕ]Ù+rlãÈi’© úùN$g›ã„oq'¬–cÓ¨ë9OMGçÞnííã`…FCmÃVÛßÇjòÀ¦s¦…etœ9׸¬ÀÑ`Ç o‹°óaÈ‘o¹NKNû˜uo¨ýP]WjÍ?Á֋⨥ô.:XŠÖzh.DE+ù€{™-?àlcç ,BÚ;Ïk€ÏÓ"ÎkOÓ“û(ˆ²¹¢´²3{<ÀÒդìQCÿª†Q˜q,t¦‘ð<•Îä°Å:1^Û(ƬI)´& C2`È€‚éâýjŸ#â''7@ëÊ$Þv“1·„?¼ÉÚÊ£óŸMÔ­'Yy W-jùÉuÆ &êjË6‰oÜñ÷k/ìF¬Èä°é…êyH íkT¾Èþô¬'l³Ýò¢(¼zγ pç.Ÿ$1F”Ô:íŠí·úe]ŒBoWËZí^‚¡¨rNTaûŠï6O__ǬÃÑ3Y³ÝKY;,ÎQ uĢݴ€k³›ÄWòa§!~Àfh ÕZn‡¢½»çvØ&[eÇp˜Üí¨Ûd¿çdßùÚ3+§ºow¨£Ba¿àɸÞ{Ô%}ó÷‘¿Ôd:ñöm¡[›:g(DJŽ˜ÇÔÆ<Ьµ+9b.Sÿ(>õ)ò™6lÐoׇþ"L· õöwì„ñ¹n›µÑÍz*× ÷×Ûþ›Lù[þÆ‹æoô³kzúÄØá2ççé"E²¶:·¶Û4cILÈ*GÑwðßrÈgdJVmög‚#AŸ\°|ºãþä¾ba9Ùp˜”XN^&9ŽåEvþÎ$Ë)”µ#ÑO ]Í\N!-§›–2SŸ{¨§¬eìSÖ”Ìò+ZΈ¯Ý3¥å0µ~ŠnÇ,öõêKLË&Íwí÷ÌŽÙ#-§6ßMµï¨O–ÃûÝ­ñ]L°É;Lé“iY$þF|µp,w98‚÷PL¦msC×ë2ƒnù­ÎÐm˜Y¡eÇÞì¶¹×Ó§é$á=…iŽ,§¢8ñÒg[N V°sÝQsÇ<ñbBA0G=e1c„jë’(‚Ê‹©½ \Ks¼µTù XË%Ìc.¦ÿŠ Ú©6Î.2MV_qh‡PÆf³Ð: Ïìø¿¿¾m>¾šÚÀbõ:¸£®¦Ë_óFnÚtù‹ç'R&­¦jBÒYÃrù‹à›/¨l×xçBžœ¯»m5Ó´ä‹o«9m5Õq5uƒ &y1cø#.æ©H³ó_ßjnQ˜¦–­›úLãqq.ü1s-Ñ»š_3×|öÕìft~ÓÝŸ¼š_‚újìJÿEh›_ mþÑ¥ÐQíJÿ|RèI½(<‡q{.ÆÑeWùUE™„zävüzS§ì>QÌ6ÃöÀjS̵_h­4ÛäZSÌ–‹¬ñ KR¨‡xCÛiˆ¯ÜÄи˜]î½òÚ6*(—7Þyá`RBu}k­ó#?^Ÿ=Îÿœ!¥TÖ®-g6:“­Ž¬óÄ$“”ÿ ëªíø;|Z:Ia.XŽIï ®o†²Ü©›%.Ù»´»Ü÷8Ò0T¬¦ö…L‡+x È¤ÑÆ˜IÅrÌW[·Û—…™4Vt™´«êñkÁLR»i|yÀ)1“òè~x&̤õå¿a&†™Ô{…_fÒ(RèhRNxÇ®ÿ¢@“¶àŸo€&4{ФhÇ3&•Pÿ^4i‚tR®»Mn|.Фx<¶;šä¿&ýnA“F„þ—š4÷lhR©/åiA“Áýšô$Фi­É”õ 4)w{xîMÚb|*X\øA“&¯šTd(¿GФ-(Q§MÚ š´S›I ~J¦ÊoáZÞ/Wš,Šl44eÁ¡97Ô¡|†M[‡Ó”ºw€~cm‡o“É&¨£>×gÈ—p¾›ƒzY<ö²x,åÔ+§’]#i¿ÄJ;õœ+è!hWZC‹{¹•~þŒUïÒÑVz´Ð*FÌÎq…¡Ž@-÷Þ|•ù¿Þï[M²u5c„°\ÌöKÍ2X%ühA@ÞGýuæR{? èy-µ…ž ƒË|õkŽÇO¿írŽWw8a5¡¦Ú`£Sþ «9L™ørVó$(G- æÑåf1/g!;ê‹YÎxT´‹8¡ØÈj~¤*‚v²MÕùô \ó:ýòaë~²À¦.ŸŽ¹¿±ë`†Yiªå¡½æ4¯—Ói¥tä:ƒ#;ò±Í$¼õ&ͼoB6Áç¾j?±Xô²xè宺ң’îjµÍV’ÍÇ“ôªI>i“kiv–=‹Þ:¨¡ºI4ˆsŸVYý’?oãséÓÉËŒ£Å·ZÓ›K³š³7ú÷ÉESؾ˜êE‘ëRxÀrt… ðÖvˆðáî~~vñ·ùãû[²¢ù%Ÿ¦·ªÁ6:æ¤ú«jC£UÞô ³›9޽UÍMð¡ÛÐuÏŽ¤‹D«˜U2ë+¯ó²¸é|çEÊáLf€ïÖ'¬ó¾´7Q›RÊ–Mi}Â1¢¦û7Ge!K›~¾Íæ¨éؽ¬Kþñ°Oæ“ú®3´ø|]×mŠj—»ôù÷}¶Ghæý5íûζì2õ—Ø– ªLdßÑím˜qŸûîËaL(t̤CøˆÝ±õŽÆl¥®=' oÉŒNLIvf#X ÊL*…~ft²¢*t6$IžJš7]Àð­;LQ«ŽÌx8JyƒŸ–û<>Æö\Ó㥻®áÆS6aÛe¡æô¼:ns6rXw%ýfSLJ;ÍžÃl¥DÃçÞs95:„nŸnŒZ‡”cÇÊãž‹Ž¡ BÆ=çBfŠAº 欘5ÿÑÊ›Æc޲ñ&ÕcN#’š»MT!Ù¾]lm‚®òÚö§ #øTÏJ9/{^MnG±G7’ïH·µGÐ:u§XÿóÂ娬ïÚI+Ÿ£¢G¼cô¶.J¥a²€(&ô×<íVõ[ågÆËòΆçŸþâÓ?«øô_€øô¾[†,òÓÙÆ˜Ô)o¢üĻĦÓ]Y<ö¼xìnù©2KU$ ›?[­òv äç$oÇ4Ú-?»Ó½Ô¦Ôq˦ÔÉ€¥¸ø›R©g„¸VûA+¸3{n.&ÌV†¸VO€V°66Y»NøÎ Çj)•: ¸âËpn ×®Sðv¸SbH”¼Ëƒ÷Ç>øNØù…<ð ¦u›…«›x¯Ÿº?,œuW6 “Î.ÎÒÙ& Á™TªP0ó‹ÍBr…‚ñ…-‚ßoCÎÏçy>¼çÒ„#óM©'/Œß¾¤—±9U.!Ž;&œ«‹‹‹!0ù” pØžŸŸû·Ã×}83z¹‰=§³Æî²nƒÅ å`by\ÊCW ‘ZñŠ¥šŒ1Añ<JŒ×ÓŒFO0šŸÎ ò¼ÑÔuÝz›¢ªŧê\Ó]´1ÅÍüÅóFÜø~YOä˜o /^eËœêd¼3–¹ñ©x#¢ôˆßxã¼qðíÓxãšõ¹dw_æ´v•KÛ (b`4!÷¶ß1“]à0ø‰"ÐQúO}×ÎÖ}•sÐh˜³:˜jºò­wö?hT¼ƒlµ¡'F}HÁ™Î $ôÐ=è§¢u¸f£|6vfaðçˆÏ¡Z°ƒ:^­æÐj^Ë!–GÜÁ'“;cÓj9|V/æ³ˉTVŽ¥0ËÛ©Wg®†~òƒ-`I#'Ç êAhìóÒùz0Ã×ùþ{ìQÑõò2Åç}£±…ûe£:å&©˜6|^ƒcÏ‹ÇnK>v:•#ˈ”)ƒŸ²Ð@{å•%ºV¢Š$UC'ºµ)ÎjŸt“B°þŽ15-°4‰Êv3p]ô‡‡¤°™'þmZi©û‚VþpðŸ؈X2—¾¸Þê÷ÁhŸíñÃÉT*œÒq¡ §’ò·¦Ÿ îÞx£]Aô þnÓ°–¾¨UÔÖš&d§íLE˜æ¦UG¢F=ÁÛ{bZÑ㸚P'tr&d{tZ)¹i!GÔ³Êõ|rä ÚrÙÑDPúH;n¢ã÷8;ÎÙ À6'VàÝqZ@+M|JbÁt¿¯‹¬Ý™®<ò~*càâ¿MÒ¯Y7n÷ñǺ)þXëKlcÇF¾˜óïx™¦Mʪ“»ÍìC£Sìï㑚ˆ!ž1ùíH׃<Ä&›ó £³ÊèãäÓœ•JíƒÙµoï‰6é ÕE§´ÕmªË2$¸aoÉ×û×ó7ó_æ°f/¶‚$ª&™h›a×A½1Áj…ë- ÃÆì+˜’&ªàìÌÅÆE¨çD Tb•Î@ >G+—ÊA×ôÄ6ôN;K… !ZËŒ?ð—Ô »i4uÜJó_)&vD¶Õ°M™¥¡ÍÃ>…p12›×7Ð|s&ÛÄAÛsÁŽ Øž½VvM̸íl7˜XPm”îWšZ|„Nã{ûjŽƒá£ °m{“¿ËÓ`ëBÞ'οü;îç#ºdzïmh¨)d~íµ?X€ .ªMNÎ[ìG?¡33¼J´©@ªÎ˜hˆÚ,¨„ úŒíWn1vyHváž!¼¦ÕDÔ3Ø6¥ÅÑu{xmIœ v¬)†\–$3a¸r£B ditéòèyr&ïQ/ALM¯üŒ>lirÿØÏ+e9°ÝÀ_y^8r«Àü-‹“£RV‡8sÄ(U ÜLsM™‚{W€ËÓÚÇÀ¼­÷ɘ®A&íÔT y—Bä 0÷S‚¨VëÂl»ôuaàzOÒK I‚ݨzÉ%1t´r10" Îø>ƒÝ‹àt̼fAq<ÜÅn­-ávsÂÆLZÙ#¨+.O2øÉGŽa~äðâyY9ŒçeÑ–™zªðAîTzŸ½ ±«÷DЇAìàÓ$ûD¡Àd*C …ª9k¢H×¶qPx° 8!$“¥L®Œ¦be¢àˆ…D˜ç…&'ÊW²&U©qÎ$dëÛÈ€&ž(ÏÁ˜(0CƘ Ešá•.žÚ¢V µ[µ`¤Þ“¯Ò5_6%ɂтùªÍ±™­éžž‘†~7¹·^g¶´c_?ƒ›ÜæL—‡ë#%‘ýFº³ ž´nÞýkÐc)€‡€e6=Ѱ@¥0Nc%g9E/v]”¬'ìù‰~·)ä³[‘UîÅa”O„åƒöyÄ8º"«ô}Ž+åHõê$D%4©ÅÏl}êìV).PMs›ãb¡&eRЬsK €ª†vgÁ…¬K3ka—‡è cBÉË9§™àΈ+OÜ/hú&ÍèùÈʘ*{H"(¡¹3ÖN1] —ÐhÖ·iÎkc(º”^xOäx‚ÒéÖj2Uí2½,¹m0ÑÞQÙÇ$B›ì ’]ÖþXc ƒñ ìÂñþ…俨Ý^sˆ×àË £`³å)Œþ wÅAa”QÓ#T³µ€£Ï |–æK§àH|fšý/sfí¼xìyñØqîo(1Z{©­Í4©fZÓ:Øä¥Õ-´<Ã6NÞZmÖ³¡Ü1ŠÍ\š–¹_ fK®—vj°SÙ¨,E{ÇŽKÏTMSp†v¹ý’=€]Œ®ív2&wÀ®é |¸z3{ruS·RÓç²áe4l~¡{¹:TÏè^I)lõ3ž:üé&¶@ŸD&»·^ì8e׆’aš‘šr¶c»¯ ±hØ}¢c ·ÙoàE¦›UòB[;ö26Í.h;¡›˜~\5JØqšœ~ -ïZ޾§Ý?{h¹ÀÚ'Ålw1ÛpH!åÁ¬=äŠûOÁÚ'Gè©ÙM¤BíéTïÚ\O`ÐÓ>ûèG´U/ dc­Þd|JÚª^\é‰@6ß’ON0Ç—™Ì 'æw1-Ì!]¥f’xu)ìr›<ØlýC%z¤Iñ‰Ó%z0š¿“*Â!™ä‡&zèp@&ùK&z€et?upè—”é‘&9È÷Ìô˜Lr9ûÝÍs±é“´µm³ÐÙ}“Ý—ë±ãnð¶“’"Î:£a èØ~ÒìÇ­ÞpÖ Ž=/»%ÂŽaßÐ Õ°Æ6–;(:»ÉýâÄÎÆy‚[mB¤¥¿GÒƒáß¡mü6€õQ¶(íw%=\hþ=É=>ùéŠm¼=°­y-!ÙcJ¦Ø(åbŸ×ÕÒm€Ù8z˜³\ì1“²–fqm™Å72ˆÝi(©ø—eÏGa´qš ¬ërz‚…åâKG"­‹Û"‘’-¤§”[nDzu KJòÏ÷t± MÜ]÷Á[Ubׯ-&ôAµðž`ÃT:ÛÄ(H”­ºL 6Øîˆük«kÖï[a&€àp>é:‡Cú†õ•AÓ1å*ù7-¾§ŒS‰×îécÑsÈ<»axqˆýɈL°R­T†¡‡³¢n‹ÐŒAßì³j•Ëâ. ŠÎ,¨ÇN¯-¯®éS‡å&WÀQ˜ÚfšmmªÑÛ fª8Ô¼}¦{Ž±Ó }Ÿ`î…ˆûŒ˜rVS2‰@|Jzf“Ò6pQt6-^Éò[MuÉ{ØöžŸ3ô޾àìS•ܲvò®÷Žý.¯¼‡]ÔÁ·oÿåÞÅl¶žÿÅq¾è,ªå“Õü½ …²Ú]Ôã£#Rƒ->°ƒ’²_}VYé.M 3zl?£o½‚¹Ž{M\V½·sÙÎt±ö‡éé»ËÆ÷Òk‡®Qm†ÀLJóí²Žm@ŠÁ.bjœsÙuÊ¶Š†ÄˆÍQ¶Oz¶ÌŽŽÀOYСÃg˜­¢Ã°ùèéiÐI›ÙOÑå|bl½ÀN¯²g¬ìE+{Ü–~¹] õ K=tÃH7 á$_êrLCûÈúK•Cƒ¿úà|ŸtÇÃ1‹^`ã„K×O)-Û¾ýÇŽœ)SNÇ)g|ºù@'Üïý”²Â^ÇÛëfÕ•“÷ʉ~å¤Àra/×ð”ÄÚK-kj§G[â‰)´ÅLÝ‘¤Þbþo/Uø”ôº‘^¢Ø}K‚Žœ_J³/'ä—R÷ËIþj€SRj¯Â©D©C<ðíK[®Ô©ê*W€õªÅNùði#=xø#È”‰µÆåÚå‘:çrMt¯~ú„²PØŽéxä8 eä†2ÊC¢ŒÑš8¥ÞØÃë)j:¡<™ˆYTÆFÁQ*c.õð™N¹œ=ȳÒrUž†ûV˜£+×õ@î^RÝ)4•x ugSðŽ`Õ~éÚN:¦¥óMÛéjÞWr ÇÀÌ¿¬º3Ûƒ§?‚ÙGÝtªéjQêÑë”qÒEKÛy[>‚¬ØÑV§Üžg¤•O±ëO¯AЋ®Ö$Á®¾_§Z®hÒzc¹6Y}¡­êSçqºü•û –{–û–{öÚ!ž’H{m`‡DjÔì—‰-oË-tËÝvËy»=|_tÑŽ+<¾ŽESj«ÝfԾƒnRÀš8¿ Q q«»y…·1ñF¥M+kuì)™›Ofs3êxV^è¯*;ÁÖW3KãÊêM/ux(enƒoIOß”û^åá±—ÅcïE=±^J¾N¹ iׂOZ,Ô;þ>¡mE¯œë/(,.ßÉTåö…|é›Ãc/‹ÇRÀ éÄÒw×zê#=¿­§3…2õ¯g=Oá¦êôô*I½‘Ðv­gÍ´ò¦±Álø¢\ÈLÌJ}_,ß&xgú`1–µÕ9æ¾Jrjt]ÿÉñ-týŒÅE;ª¢è—ŽLA Éžåå¦Ûq ö~3’öŒN¡W j ÄÏi]")l«}Ôˆf¦LŽNt½õÞÚŽùáî~~vñ·ùãû[²ù%Ÿ¦·ªÁ6:æ¤6|¡Ñ*o& 2ÄE߉ –µ>¬Öô‡×óËù´N¿=û0¿øåjþëŸV‹òölõ€wgïæ’>…¥lÓK?¼½½¿˜ß/ ò_ï§E†‹"—ûzõæxÕÕïªüûÃû³‹Û_Á{6üíööYR2É™U¸{M´ÁTáÙUºËúÇÏ’1©Àû×½¸=ÿøo²þؾð»Oƒ³?Þßó€ë³Ïs<µü³œYjÒê¼UÙ|gìáýí¯ïî¹È÷ç›ð—úîöê†ów³>^]ÌFÎãoõÛ··ŸÊ¿ÿzuƒµ¬W÷¸b`›G,o9ú8rħuzÌæO”+wõãÃÍÙ]ýîúöíÙõ¯.Ï®ÆîîÃÙ§«W¿Í/ 3ÈEH‹ç[0ˆÞÂu·õ?áû?Þß~ø—û¹ráßæW7ïÖ‚éæ?¾úô™§­oï¯Þ]ÝðùVok9ø¹?ø@Ò½y‡CJzøÓçÂO˽Â:½Õ6ªªù‡»‘_:;Ätîøbîõ–©ª_®®Þ^Ï{TcoÎ0x±1Ê5^Ïu!g|¸½¹þ¼8lÅ•WœC¨®³PØËRáÙZ”ßÝ>\µ£uH3˜¡Öø¬úª“\ÉùàŽ1‹f2clœiëé`qùlòy¯¹ (æ‚®ä“ö,·ˆ® Ÿ “9ÔŠù®Œ˜?ž]œ=ž­™ðrÄPÄ/µØ‹Ë7ÿú—\¥¼žŸ¿ùß·÷ÿ¹œº8{{û[x•ñŒã.ÎßP4=þtõ›èõÃ/ïþǧ׫zs¬/Ú^öÔðñþ´ôþññîÍë×wﯛÛûw¸þïÃOzýoW××ÿÌI:©¹‹‹^=^Ï’9Û˧x½xŒejmç)x½\ùönƒ-\Ÿ½ƒ«üõê—ùõõm5ïîo?Þ}¸½˜/˜õ«õò.˜÷bÎnÅÒ1„©BÈ~|õãü¾-pZÃ~¬…}[¸Ä&'–•>68¢ù@A°V¹J2>¤ßcªËZk¨N®…ä±Ä^¥.…º0ÓC®¤§žñ¬÷ÅLr Ìwg* ¥CE'¸:6Ûì+ÉÌ5žÚ›(Ý£Lz’ä«™’5š>P|Âe,.Ã3ðÿŠ PÄ¥˜þË á`*C`XIP0¾La”uíáRÜ¡2ÿ«$häÙøÁq*mÔb&-(ÚíÝi‰zðþ¡6KÙ”§pû1,pc“ ß3Ÿ‚ˆD‰]•Z%zXy–³;K4Ë…þ­·'ù®q¯ccbÍÒШu-òãþpa ·á=4ëgêÑårúVz­îºM[> Ó¢™Ê)”F¶Ò‚ùo¤MY}šÕXÔŸ+†Ø5hŽâ ʇX\ãkÆCT*ÉœàÛJ¾åè²Õ?Û«y›¡©ÂZr‚ч—-c.ìâ*íH’ë…ýv® g«äu¯FÂà’QÆ¢KcI€Œ1ÂÇ‘[Áã®â OÎö$å&Þ Áå±é«¨VÏÁÍÀòx–Ìã!)Oáñåö}”0å5¥‚¶98%0Z„UwO`S*[©¡yiBºé£k“ÔØº•+°˜%ˆp°:Agù^Dø‡•#8+BËÿ—Ûí”n¥¡µ‘ßcaqŸUû¶ù%·?âEš(£œÌŽ^µ\…W_¬Q÷øÔþnB;™´¬]^|uøâVXôËñÂåu·’KÙVï¬n±ôªŒ‡W²€ØáÖ`W™Haœ#ä¶!#R`ÄÕF3o¥]ÔZÉ;”¶²Ë%´o;q5‚…Nkf[ÛN¨ugO`;%zö@ÿ¸3ˆG+c*(É,ô`\ʶ\¤}*n»ÿ¹åò‹x{â‚Ê+T-ª!Î 0A)Êæò謹o°Œ±ª—«¬Úªj—õâh¼ˆó ?¬¾Œ?ÓG|?‘ˆ¼²(Dg¸ Ú˜H‚–O$Æ DØ2½Uë\Â’çåN&ËÁ’±/¼¬‘'t·²Ñ‘÷‹% Ù²‰]‚öè5©,Ä`ôÖ[©c¡³ K*¢á”8ˆ—@ñ“¡ úÙRarNc³aBmÚ$lÐ`×#ìqpç×Uû „¸<(§ 5§Nlm.ËdT–Çù§ÇÁ•Å]šµZ©ÿÖ»žb|§]Íî ]‹´öÁ&a5ê@nÝÞ<ÖW¿Íß°øÞëìbºûô};ÌCðh°Ž®Û‘_Îî¯În{c¿ŠÃ¤7ôðx?<¿ãMÖg×WïnÞ<<žÝ?~ÏgZ8ZÞð‘¾ÿõþŠî‰š†Ê›ëûúñí⤛ó÷·÷‹³ÖæHü~JÁûaׇŽB{—g®®?¿ùëÕÛù½X·Õßnon×ëõáú —Ës›o~ÿËüÕO?1ï\ °}ÖÓt^ƒË€­ Eõ8Ga xò¿Ðгµl¶f‰¨ünx>ÚÝ+V,›/¢æ'¨(¦H¶-'4ìmDsÅ/@«qWĺÆzºÆ½GÙnÁª ˆA·”FtóªýѪ[°Ãq¼êQõ¶µÖ»ï@ tj”¯DTžš?¾’{êã~7þÓ'¬<.• bªJ+g±»‡ÚfŸXÓbW<³õmÙ?ÞZä>4ôÖ±6 c¾ë…lœë@ÜíÌÀl¾%ˆNû¥Ö û:a ôÁÁ€ê¤æŒl62øn 7m85+Vm—Fn ˜ÊÛL &Gb]gn^îξFM„a:K ”æªì¦zÚÛƒb ˆYgAi‚vX»BÁ ïŽz#F¾Zà†,)lŠÞàú<%½Þd6_-'óë#tU8MWÝÙVw³˜*TƒûÓý+IÏ\„å!Å>1“~1éÉX®]ñAé`ë‚°iµ¶s¿Áç&s¤ªíÁ—žÀÙä»Ò­µAƒ³ûóN\nƒàöÀnÛaKé÷Áó5"ÛÅ™‡Q‘ I™"«-¬ ¡±H8>~h‚†üÍ!bÞ #ZŽÒùxÓ`HÖÎ$lIpP,”ì Y¨!K¼ù,¼Œ`€B߯‡Hª4]8y)/µP–è@Å-€#âÝÉm™˜Äñ´,縱ô¢z¯‹…÷ô÷µ¦4C6?ÞRv¿Wà ß²«®W—WhHHH%³t;‘¨ÌËθ OGò RËIdCZª676TkHÁj}Âjh1…à%¶¿²$’ÎgÆ“ÖCë3j-=FÚyb¦½˜ˆ¬{uuçÄÕ`1G{ŒW´Ö¹¢pî̺êœ4¯¡™¶Œ;Q7­"8uCæ„`¨³G(¼” å<3*œ¨ñPwùæ rPÇ[z‚D%ç¬Éz9¢é€6ƒ9Ù»S3ùÔ-Ä›8V—gåâô؆‹ËBK¬ÙâNè‹dê ‡ŠÕ[ßÞuEALØôÞBÃÆM-‡DY^Œš»Œó!0Ãýº áM–äö„*^Æ]¯ðc\o`‹Ù"—o»¢W݃–»x™^¯šuÈPÃHO–“1 p Ög*¬X¨è8³ØíµûÞE.^a™‘ùï¿· poèç­š¸'Ùàå¾yûññ±;öo¯nÞ|¸‚\]ŽÊ—ë+üóÆ-Ç6d}qöðþìþþì󨔶*}÷‚´V¨ßBlPwÛy™Ø\¯¡hËÌÈþ¦ QiÛÚÀÔÌ.Á&ˆ ½Ãì‰Ê æù´I"ÐA%`.žj>LsûÆÀȇf°1i'H¾ôŒHbâ†ä‰° EY3!*€³Šï_K÷±µoTAdÑcöã6%ʈLéfʈØäDúçBB‚ÀfJß•Þæ:+tõ6¥cÖ&Ë*f»PÝ4…íˆ@‹Œ&n€ø‰0VÉ(4³6ê`éÅPÅ׈m)2êVÐî­ÄiCkzçN´[§Fy+rb§© “FÐP&µù"´û_$J/š¿ÔH± ‚t90^«›6¢y¶ñÔkhtãvL%MÇk‘"7³þ ¶%¡Î Íâ–•T…Ûõˆq˨º<¢‚Á(žç[! jrË@©<²¤^<•B·êå%z„Í¿…G [¥ýw;¨‘…zm1‹„w-¬IâðÚQÔã5&fx&@å‡f¡UZµFÈ š`(GX^Ij¸"$¶³ ­eª ›î˜À§™˜…ú–DуV>öW§)y‘íLˉôêw_ ÏÃWf¢a³¾“Å<©Üœ·g—÷Q´$hÏ®{FìÙ!Ìφ=;DêÙ0v›:6„JÚ“üØXäôæìúq¼ùÃ6;uê4Ô©Ÿ_ƒ^Á4­eW¥ikŽB‘ u§eÚžÍ.ÍHÁ’+3 c¡ì:&XHDBeïÀ²¯’æÇž P©y«ÁæÊJ‡ºOƒt(ˆtG¸EÙ…äTP‘3lHjtΆx –…²»-€ =Ø®Tœ-sÜp–£_ÛŠð&ºÑCØ›†™ÖÊ»‘6 ^|Ä¿1ô&gOs¾pËè#¨²œ7Bç£/ƒ >Sfê„\¨;Ѻ2í¨*šv[L iÞ#ÑÛ¥”"×Û…“+_ðïÉjhá(jÓ½œ˜S.»¹Ž Êh—™‰+–®ôŽ€²Âú(Þ !ìn:ÚIÎ.r2AȲs§®²Çk® òð2Ó9º ‘ACË1Ç´&).P°;SÊy†i}Ôn²Ñòj™PÈþ,QlÔ"éŽL' Þ¥²ÄÄà-€† ÿIÛx›V‚lÄAËÌH"3¤l’ÄÓôYâ€,ªcÈ ´!Eo™zwâ&mïăM–LÑ3éoAéÀ6¡LA[’ÿ²üÐg[´¨œôwÛö’ Kmób/éKþ=u/¹ü@ÍJ„ZŒÌö QÎYh4 WÃ?z࿚­N$žåENÚ¦i-´¨”ɧ$'A³7|G'IxdÜ*U Waõf†‘©h­p"<ªŠ4IJV™§Â;K‚äLV(‰ÛÁᦘnÎx,K),û—%ñJ9´ä‰ç¤B"3Ú]À¦q¢»yÏ*BÏØ‚A8¤f.¹ÈS×Ò=}o`ì`¤ÖKZ'PcCÆBÐü–ˆa_vCS˜ÌyžÃiŸö4_¿¹)'º)×¾bOâ· PY‡ö}íöˆ¥¼ás ,ZíT~YØïÝ/¹~ÑvçÖîëS=½;—™€#Õç§ ? U³†-ž‡<4ýóý>݉Ê(¦ÀŽûR§ºe‹é–Ì´Å»dÑ{dxy&ÍÉè)sP™µ”™ M°aì6wÏéÝö&´ž-¤µÕ -i8Îæ!}ód¾˜'³³9üæûɽ,;RØ$*<“è$Hdzعè )9Xˆ4Ǥyní“@™ë¶¾¯|Æ0YÒ¶é†]ͨÊJ)çLèØƒTáÒ±¯éiUB•°´ZAá14á|`ºµúšÚ>‚*³ŽÌÚôg€eUôl)'µ †¾¡|†¶€ ²Ûïi’˧µ9+’Jd!Y-©<Û6²}²!°:ÖŸï½*ê¼Õ›²O µ‹1}0œ4d¦W‰ºô$òÒCúÒÇ"°ÕÒºè¦ÞÜz_‡Xß½Ä:-™K;sà–Бh·R»Ð|–ÞV·±ŒÌ'-5pt¨i%CkeFæoiÔ#R.S;€Àâq"Ò{D‡±¸†IßY`ÉîŒæ=h0¶e¶PR˜ŸÎúó,~$+Á[™PhEÒV–ψ”q¶8—LËÌ2\Px½£ Ð-AÌ)¼rM?«wV”?*ø1åÈ—€E_•åv`Ë팑è‰8wUÑ÷YÓn! kŸ½µo"ÓdŠ’)årVÝz#ñmt½‘:·½.ý.¸¶.ׇ´ª‰ÐL4,7[ͱ¬Æ Ñœ`Á&{j·W ‰*S­ˆUåÚŠëö7×z‰ø²Y®f‹ä í“K/~ì¼îÁ¡j/ÍÜÃå¬Ë ÷O•xgÕ5hréCcœ˜[µ›)1Àª}j$ág 'ÜóÚ˜µ\›=-rÁ3ö5¾´7™xwRÿØþé컴φ×{~Ÿ´Ï§ñ&½w,iŒ7u1n¿ñ¦çæM£úQ‚Ê|ªG™ ;ìÓö;ж £]RÓƒ’.K¾+l–Zˆ ÓA{WE}šÀY›!ÑuOûˆZsœZå¥ÓÑ^J&2á†P²Iü×1hÉ·Àò1þ¹„—eål«ï$ÚtYb0d¿:ÖêÖ¢ e­™Ü!áD+8b¨/ò -1ˆ®o¬o3w ªÄ… EÂs‹0èoÕ‡6cž@Ž~ñ˜ hHk/AÐSQN´Ä2ÑÑD™sY`u BdlM wÒ¯LИ٠,)³‚å&÷ñQIéT ð?b7ITÉ0]ˆ«›¼Œ,p õNS2¶¹|n‹)©TË6žŒÜWhp‚@ÙðÔßMp‚="LsïSúß*fXƒ3ðÕ.ºMd(¤˜¼Å£U‰¥M†T©¡hŒµ™ÒÖ1nNÿ?HÊw«ãaÐ6tjƒÉ$áÕ3Üî¹wñôSÉTó‘3x|0Ì#(‡R¬ÝI˜ª{¥²}„ 2oOÇÑb€ºÅ$—å+^|ÕÑKxŸi #Jå’P´Ébd‘>yâ–€Z-ð×0Ôˆê™Po-ÑM ¾3¸;Æ`³2Î(|' Wp’[ÁŒÕ“*¬¢!J‰g¯ˆ„¡ê#~…D8[°w̵ g  „ä 1Ë“}ÝmfеpÄ´°æø–S\]E¬Ù6ãÐq>жSJÀS˜=$h2-n!ÏZZI„ެ_°Uðbº, ×z­ÉtZC.¿òc¹YÂT´l㱄·ù+‘áÄIhQm!|i®ò ËX¬fˆÎ¸>8˜hOÛ ÿ”<²+¼AÊ^&¯z ÎäÄS°!ˆÛ´ÄŸYI½^AŒ/€.™õÎgµLôä BÑ "7$t¥˜ŽÒ2r¦lÒrø$BÉê,5ÎUÒ_Ûãþg‘¡Ü‚.’Ëv‘ym‡.ã[ú®“žÁ+D™×ï¦âxm‚Úì âT€’Ú&b!7/+ê™eª‘ÅHÙGJ­V >¾oü¤Þa›·Þö£OPc˜C`èRñ±\ƒOÍ} 4ÁXÓÌú«ò¡Åƒ%j*ãUö™©Õ t&: sjé]Í"±8©ÜUÌû~=2 ‰¤õ&&RÅD’ÒÂ$Þ-eºÆŽð’Ò¤U5K4OPU7!‘’À‹œ'2O„(…¥–:,Áºº‚ˆ‡å,#oË þC _˜Ú¾jh™«l¥1ÄàÈFP‡˜±0c\Šƒ«µ£àôÒõ©À­ÔìVƒ `F;½µØL+¦7Wp ŸH0²5‚û]Ã'æÓ ·^7ØËõüÏÜÄ L!kT+>Šj€“¸ Ã0÷+ŠïqäMv`q™¢#¯ÎøÓåÇ›syf, Öüßoÿ῞Ýüù¿bà©è¯6e_o¯kÜొ2Î{ÑÁ+EiQL5‚ŒÆ^Ýie&i"<«C쉉•ÆL—22Sp3]™¸tb¸PÐjIMšå,¯3,sû‚ a`b:Q×26Ì©H1—‹’€²±(1€qÛVYp’öF”;2:0Õ¬èÏÃHt#‘tV/G¤¨kI 8æÉk‚»*±º˜Lã›Qõ¡õXcm³PÍ=õqvWà™l¹&gÑ3ËU¡ÛE°Ø%hÃòDM« Ì™<žWW‘rg=ÒV.F_kƒáJ¬u)Ü€ŠÔÛ ²·Á¿~üþïïÞß•Û'ÀÍäp¸ùá+Åë7±aw.ç [²ÛCäpó.ûÝ4W¼Å)DEïifÔIYfZ5É|÷ÓŸ~`“ÊŸþôÿÞøÆ±ocsigenserver-2.2.0/local/var/www/ocsigenstuff/scalable/application-x-cd-image.svgz0000644000000000000000000002661012060404165026664 0ustar0000000000000000‹í}Yoɵæ{ÿŠúÅÂT&c_äۆ 6æâÚÆÌ›Q"KlŽIAR-©ý|_D.‘K-\$zi®<‘±8[œsâÛÿøt}Uý´¹»¿ÜÞ|w"qRmnζç—7ßüõ/¿«ÃIuÿ°¾9__mo6ßÜlOþãûo¾ýu]ýp·Y?lΫ—?V¸ùûýÙúvSýúLJ‡Û·§§?~l.[`³½»8}SÕõ÷ß|óíýOßTU…voîßžŸ}wÒV¸ýpw• žŸn®6×››‡ûSÙÈÓ“¡øÙPüŒ­_þ´9Û^_ooîSÍ›û_…ïÎß÷¥Ù›:’1ÆS¡N•ªQ¢¾ÿ|ó°þT«¢KU•âǕzûé S±³3émÙ:¦ÿÿõ:@s¿ýpw¶yš›æfópúÛ¿ü¶Y‹æüá¼øL7û£vGKr³¾ÞÜß®Ï6÷§<Õÿxyþð#°A…ôøãæòâLJáùòü»ŒO9áÒs׃·=‰F«\´ýlùÊ„FTwÑY“ŠŒoô¹óí{øÝÉúööêò ˽½©?Õgçõåõ3€>üßb.ï¯×WWÀ¯OJîèúíÍÅbßÎo±ìN6ÁÛÅŸËߣķç›÷÷,™×…OX˜Þá-Pk³¾ûýÝúü*—Ë%ÇoœÔ²­ƒZ÷ÛÛ®l»Þ€ Œ>ÀÛ÷ïï7@ QÀî>_mréúl{µ½{û«÷güûMml—ŸßÊ“êtGcK_ü›~a¡#UÊ[íÃÉbçíîV‡RfùËÞëõhüK=›÷›÷“žþæ˜fu\l6 ©”0f³½‘ù¤fýB³rkg›³wgïv-è·§cÄÚ‡vãÓW›3´½¾ú¸þ|ßw ‘Æ·?Þm@ʵ€±»Z‡8,ÖE üëÍåhö‡ûÍÝŸI÷þ÷Í_ï7³R¹[ß܃È^wr½~¸»üôk&)c°a%ð7<æ†h­Þòw ^ZçÞ Ý—ß×xí‹Î|0êÆ)iÜ€©Ÿ ¶1N(Y”T Õh£ý€¾ß²£ë«—œM¥®íh>Ç @, œ}Bw±- ÈgtUŠFYd~?+÷~±Ü€ÅÀ;ÕQ ¢…óÚøvAº§Zù&h'ñKë&È`Œ|s$ô³ûD\]ÀÁ<© téßl#ï§¹ÝnFk¶6£¬ 퉥öär{¾ö‡6þÙÕåí­~ìѤ}Þ¿ÙFWR‡k7ÌâmñµBZ¸Ùžgþ‹š÷ü»?+;=¬ÞÍ Vo{WŸ}¸ûiýðán3ŸÎÛÔl”ÂWàו”jTc…ŠÁUg•XìY«…¬jÕøèM\¹Æˆ­ªjÛ(€P£Q;e ‘"X³Ò¬%BUKÓD̤$H+«¾ƒý¢„ ©”p¥D#‚\ÙÆ)m¬D# n%-zblŒU­l'¥V¨Lʨ’Ã^ð+‘K)“º…åwtpÁWuh ¬úÐ@hdz%*ÓxÃà#ËU¾±Áµª ºb‚¬b^±ÑBƒg¯+é´&YÇ5à¶ÚVÊ6Ø—ã­÷ØóÕ•pÇ© †ïòĺ&úàÃd–žó#hWo¡0üzJÆ@õßü†o‹ýsÿp·ýûrSlòÓ½ÚgÔyØÜõXÊýQ_Þt»½Êâ[.ôºÿïßÿçÉ£ÈB®ª£!òûÍï×îï/×7ÿyõánW—?Éi8ÿíæ§ËÔ±$Ska„°q‚Çãˆfu,¦ wë‹qh, Ä^më—äÒØwFyÝ2#¥t!e]c#0#ÿT*hi&LZ5àÜÑ™4Ô˜ ½pc&mðN?cÒà6Bd#K³ÀizÕ^”¨d!Æ}Lb îbLýö ÙG íbNËÂô¢t®´ö~†þí@t­Õðqz©á…21.³Gaë=*ÇÑ’õ±ÜXøba¿7vàd%¶Ž¹ññlv‘oŸ‘kŸ-pc4KáfÊ}#øO®x¢*(¿‚pYY°+p±³ <L'¥éR»‘á±S… àq‘üÍ#Å ¼Ó+)|\¸*Æ&¡2‚|€ãE[ñ¥ŒQ˜Uˆ x«33ÓÑ‘{§-Á¾Ä*€ƒ¢aòE>™UÌ?wò³N³¯Ý,ëåµPI5¡ØãFP ÔÃ2R pêPpÀ‹Ô€£Tœ†l¤ud{ªÆC>2Á tæ.íQĤÝ(½J²‘ BBÂO‡}à ã@n±ÒJJ,t\J/¹ÚX\#Œ¯§´sü•”´fhÃýZJÚsq¡¯ lA”u¡^wD1.A¿ ï,M´¤a(ÿ9•·¬(Õƒ;S¨j„²V@Syiº±4Â=™ÞqŸ.ö‹ sÆÊPÈjs¼6V™‚BSªòÃv§<5à'å¨ò%(IµI¬ôŒ6Bƒm$iÆ~è$I>(VO r’¦Ý›ÇËmíŒÖë}ùÐö°ö1sñüæÐ±ÍÒ¡mã@U$öÔAÆ·ìJp—ýš¢”~|p"T$éÜø¿ö, œj``ôP_ÑŽ‡k)m#œó¿â(ï?}›_‹•j,Oö£ÛÔîØãûrù'þÌÁúBîÝçÆ–åàÎé§øz}ÿ÷²a>£9]È1-÷x—cMm\2 d~Í“½”«Ú[úÄxi˜´® ZI› °XÊ€±¨•q ]ãb K mtP±«¶š6Š ã_u%«q•j‹›Hûk÷œíXÙ¹´¯&V]ÿè­ÚvÊÇ\¢íK=­Ù³Ö…Æg„£+® M´ÏÙ mm½Q‘.²F+eë~)ÚšÛj’öÑ\V±€ŠZÑ<ªÕ»:œÖŒ™Gum„¢]{µÄª¯'M• ëU]tfT«îõ~]Âé½þ¯‹tõ€e—Ⱥ—¸fÈFc§ŒŽøý“µО^ƒ„ðRøþÓU@™Ø'ã>bОëƒK8¡Fûîdß9/,ýšƒ £u´+CŸd … ¡RAНÍ.RñÿôÇ?üöoÒþíáâñ®¡@öÃæWó5ù“1Kö‰§p§§ €+ÖZÁÂT«éˆ³/ŒW)ꃑþ(¥j{àÄéL©ó£Nv“´åC‚§8Á]wÇø[¨ Ää°gÖè;ýN½Û1Âò€y<ßÏöñTªä-¯ãßfVÆŽr,‰Ã*î>iÿ6#Âï¶ÁðeœÐÑ õ›X“=ŸÓ‹“A”&ŽB?—Ò7^8O—1 W#Bp¾ú`ó…`V"9rõ/êò ­҈ƻ(W ®w^Ó0Ã(%Æhº‰¸ŠÅœ6ÅË…òùûe†E õ ÄR~>õˆ`UÝ5P¼¯êü<ÁÿdCO2ªì ?~ö• „j@s•rû£ÑQ¿û\ðùô AËù/â ñE!ðýÇYÏ¡³@^Ø^Œëز#lddrŒ©í)4â´Å@‘/ån“b¹Žp¸IaXOQö—ƒ¿Wµ™µ$K/DzãÃŽòEK¡XOq [{”±wg9ÆïY`æÎ@ΟÓ@ÑW÷ÆÌñœ{ÇÃB¹–LãÀþÂ&³Ÿg²#ž}ÂHÿùcøÇ9 ÆÖË#³|ñ(‹”cdw´ê8=È“þ1Òüå¼%EZªÝCM‰AFgé{м`º¿œd9že)¥È ¦üËiBGý%Òþít÷K©ÊT¯ã–2"íuÉZʬô‚T7'7+ë=—êîÈŠUïÏ‹5%Ê¿¤9{Õ4gã$t#}fŠ.5ÞóYJJnxŒýû IbÞÂådS_èh:e.üzhϱû¿tÌÅD›Ë99ç¹;—s|Îs.¸Û¥ô¡Á?˜‹ôjÆÙSû–—3­.ge]JàúòybŸzH• û1sJbùE\”Ú?BÌ{Fö:f >F¶c²çâÕ?böºynéa F>2‰Ü#²×-d—.f0‡ÂÇ4üœìuÌD}8ïËK8",‡îÙaÆÎž‘ ÒxïDGº'¥ ÖeäJcQ<¤ª0NO‰Ù!·nL®jÈXP[­;5hÈZ6ÚÂP@:èÆ=7£ÙóÜ:0Ÿæùó¹Ãc4e/âòê“å¾Êd=×#íÕ§)ü»OS/ºo’œxÙI¢PAÆKaÇÓ”²¥`ç…Ñ4YÓ%\§¼GYšò¢Š£I3ð‡“é>kÆì(iÆ^€ô;cž:ªš8M*ÀBºé”¥HLFSfÁC 8‡}íI{aúþÏ?imŠ›½“öt~ð“ > TŸø°}ÄÄ?È{4•ž…úñŒ*&²zBß0Gšaic J1“¶-¥#ΧbÀ´Ð"ñKxþxñÕ£ÑÒ>¬b‘öœÀ ’’†­`äœJn¶’RÅDJwuV1ãm>n J:K# GÉÓæ>"iT«TÊ\KíPÆÆJ­|åïfi›ò¼3)eÓGŒ†]CS– •¥JÃÌU4’yhº•cË‚¹¸réÂ01í!uVWÉÚ&˜¦ÊÒ«Zµ;Óþ£2{ÊKˆÒ¯aÎ××›óŸ.7¿é'ùݺ_îÛõÅ&)Ø:¹¥öÅ»íÝùæ®{åÒ¿Ñ«¶/ÃåQFð«ý{±üþþÇõùö#ðvúòçíö:G|Å›ƒ&¯S#MÀÖî£ò‡·ÌmŒif5Ï·gx·Yý!ãÿí§Yíww,pµþ¼Á°Óÿ:e¸™«¯WÜÎÕÃîÜ~¼¸ã,?Ü}ØLà›úv{yÃö‹©Ö‡ËóÍýŽz|W¿{·ý´üþãå &³îû¨ÌŽ]—½õ;JžÌÓW˜[ôôåýÍú¶¾¸Ú¾[_g×W÷»zw½þty}ùóæ|¡…ô¢E;¾»GW¨ßãùwwÛëÿºÛãþ¼yx¸¼¹X‰Ìw'Ÿ>³ZÜÞ]^\Þp|ýjuÀÏc ofÃ÷PÔÒŠ'ç¯>/¼ê6 Tû}TU›ëÛoŠ-¢ÊâÜ”ð¶íaÏTÕO—÷—ï®6#¬@ÙÞ‹v>rŽÛòœ2ÂûíÍÕç¶XORzÒ‘°®˜(lîD|5Ð÷Ûíýe†Ö.БJ+ÅXRI_‚Je^¢©Hì•ö+PqoæmÆÇGµ%Vr¡-Í(WiyäàMã~/4f´ëŠ¿=Þ¿Þ<¬Ï×ë wådçþíÝùû·ÿýÛßõ÷ììíÿÙÞõ!ÍUÅëwÛØÂ=_F¹ó³·”DÖß§Kîxâÿüt}~пæþ>š?{·Éw.^ y~v}ÉJ§~#ú),TíG/®6ß§6óÏn§í0z?ía”ßžvÓž.&dájýnªòÇËŸ6WWÛJÎééöÃí5¤Š–XŸ ÓÛï¶ÍRt™;$Z'œ‹v¯Cb>WÌg|CJãAŠË‡wØ4O»´KÎë´¦‚V¬I&h4 ¤@Ñ•ÖòàŠÂ€® „‰S¦üÆ{†ˆ3ý$=ºf ¥TÐKCD†bùäÝ×hF_Té…Ï+žzÖ1€HÅJ Ûâ‰ýƒOR½¤s!d¢,j+Vñ©Lçé¢S•r`5EÈ–à)<dœ4‹§ùmA»Lcãæ [¶-I]]ïðƒM¡ÿÎ$ÅÆDïºïdÓ ôÏ‘£ `x¨ùÇt^çmþŽLâ^ä±g;Ñ?ö$×}hDZ’겜zŸäÔ³RV}x|Æs×e<·ÖK#¼ìšÏÜk¸Z3Yo磡òá> `ÊsrødîFÆü'âfš} š–˜Ô*I÷aà}yœˆÐ+âÄkCž!R›Os¸ˆæÇ5É_ƒLΩÖø³I0㈠ºýJ†„ô=×âoü¡rº‰Z¤åî¡¡ðIŸ`Þg™6½£šòÀB1î*!ÉkUùŒè}ɾ¯®‚x߃›žL4‰`†‡QÐA6R­U2ú**Þl\:_ÎàoqÚq?$¬N´…·Þº ÓWR§¼‡c¼US!;ìΠnŠÈ a ç0ÐU0£¨¡˜4Õ17Яè‡Ù-™çöì ŒÓ:t4*”fü\Lhåã#“}¿™mI­ ç׎Z¦¹[éÆVëŠx„RnÕÿªDú£Ÿ,臠\ßᚥpt`€&Æ“%̨‰ QÓa‚çÌiÆ»ê&õª#ÈüƾæDnIÓû¢2˜˜ŠDº™ÓM.&€: …´p«ü¿ý_ͽ‡VzU™«µ>vΆœXU@é#ÚWÌ^ ¢œ'd$¤1ìo@¥Ò 9­gê¾õéÊ.¹‚ÔÑ™ÄJ ´$R]V¼_Ëg®!ùéŠþžÎûTê¬IܨkÅ%æ¤cíÓG°_ëýЩ[£o¡Ëô¿ÛnèŽ2sC µY^8×ö³Ê«]§ÐÂôcLÜD(iReó Œà×Û9*ˇü^¹Ü˜W~øx_¼í _ø ž–;s.¡Á˜º5Kl¥#/Òb‡k…]¥<™qdîEB$@ˆ+Šà±ÉÜÎK™,ù‡¦}"O¡&{ó؉=žÖ΃þ†C+ž;Úî l§ ¬ˆÀô ìQ'˜p"¤-Â%t¦"yTÜvÿkÏçÉtuêP ˜–›Û䈓äBÇ$NdR$Ö îfYdÏ"e[ ’¼Þ-L 2]'<#ÿB,öxÙÖ Œ1@[Ñnä„w‰†8 u1‹u&`Êc·“I²]ò–Ø6Í‘å xÜÊJzöSê¢64NAú¡ýˆÃP 6è­¶LMC~$$¦XDÅ)ˆE û‰ÍFAj LÆHl¶ŠA¾‚SJâ§AˆqƒÝI'ä²Àm$§"‡ÝQv»£hw­Ã‚×\¾ÐfgNüÞy™$x%A‘ Κ˜Q“ÁбE<Ì 5.QSH!r2t‰S™)p>H¢>&;ÁK%ÔƒåDwã!ÐÎÁQHÆ YŽë(™-ÉÕ Âlj›Eaò¤D•âð‘¶ëœQÝM²+@ XÝ¢êSåó$¢«—¥úG÷bP1‚˜ ¤cv­/‡’ºEICtÁêEœqreЄ·Q( ÁoS/€4=ûd>Ñ[¨a+KŒuÌ/§d¦$JÓgÓ5xÏTf5~jÊæ+mì!_ÅO… Â'F²ŸpW1~šÂA ]@¦$»l Ë„Í"¬i‘ d”Û‡ç`×L³ôœ…tò›]y»ò­z3JÓ#ÒÅôÓ?mîÞ_m?¾m iccxÙÃÁÐcÐfhÔ®åaý#7((²€ÔdƒM°Ñ š&þš(÷ÝIBy:óæq·3§½2¾ŸynAóÑ÷XsH ‡}S|9mŠ è‘¬É¿‚a IT)æp1ô± f´²€õŒº ³ŒÒ†!îq)ì±€-FsÖm8§p%pÐY·ÁuÑ™z©¦^޲$ÍœAæË0Ä@.DX h)†³²”%h)Ìrã¬â8FYÆ2=Á.dÍAÂ%z<,:×Ö“¨ií’1‹wÅi]Ö:VÞ˜mˆ§5wüp†X$)ëY¬U¹ °Ã½‰&|™m`¶=° ââ6°¿lƒÃÛ`F>•Ä&ŸL7òDL¿XDóží8$¢c;ýc-5U~í5£: ó™8Åè è*¢d„rK3(–ƒ¦c·,¤¬]㽊iª°å™9¶‡ñ—ëçÊBé@Ä)Ðí®€‡°>­DXj'/ ^kןóo XQ§]~´äbÈ«Âôv}v¦žÕ$4c` TÛKÑhÐ5B¤ËßTò†¡ýER<ÇZú˜~y"sÊ’›ÔÏh«K›DˆC ª™³j¶q´í{»Jµ¡³ê0ÀŠ*ÐoX‰¸ ªÜ/~µèK=«wa  £p¢ŠÜì\^Û–lTžÆ@Õz™·Òòü,1Næ‰Z½9™a-Ó‡‘̤޴ÖÞœFØ™ò;§$ÌÉ g,)š±€u?riÖÁöï oçåÛÒ¡Í -µ¹b ÑìaE ¹[¤ÏU[”:^_ ^¨”ÑT´VÍ*ÅÈ<éßçu2”j2^Ut1=*Oó~û.о-5Ò¶.4múÐþ9L_ʳ'¥ô™ÿHzÙô‹.›@w°ØÿlÇÇŠªÊEi4Þ/VÚœÞÙäñWêÂó15¤~KÓ¡í£D;"?f'ÊÆBˆÔ¦ƒ__BЏºÄÿÞö°iÄi}¾¾ÿq}w·þ<=ÝqhØOkÅìæù”à0RÛX›®W졜ö|HWã T÷°~!(€Ð­£PZ|I>Qš`DwkùñªuwÄ“¿(œ,`EÓ0õÈäLñÅa0KÃþ¹O-㓹5 Ï§câ± ZE߃FýÈ `´ƒB 6ÜF¢b§bøˆïhñQLêöP½ûV*'½ƒõ ÃÇr×§c+NGèÑ;Sº$Í>Ž1|ÿ1ö/ü{‘G˃g£Ù’ÉÛU$-(ë àÅô,x~çK }–cY1H—"œ{$©m f<«G`jÍ¥S‹îujJ¡¯¨¨ÖÆv´L!è©! EWêi5—)¤õËäŒ}/“]¦Ð7OçéÓ>]8yHžp'‡¤¸|l<æJ­”¤KƒwÙ{FJ”|SèVt£Ú¼¿/?žûD¨ÓÅ5};¶OW¾È-;}ÝËtRNWÚ&+„k ™ä»‚!?0†Äåßøö†ô¾Ê/¬{××$ N|þkæOswæº \÷º+}ucÒµÅöb¾ÜÁ”0Ú˜Ø?¦ÿ¥¤n,Xå·¬cUÂS*B8?¯ÚOµOm!ênl²Ê-ùUn¡.J™ æ.âD˜y –®Û=dê¾?¬oof²’ NŒRç»ò/¡ªã«zön’à8ÿû¼Ü™29ÿ›g[žNÄ8+B ½gj–+²<¿9™OØEºÃx2SKã¿ðcã]þ7[&1Ìr–ïcnîéÒ¾¿™ w¿l@Ã}ý Gô«»ááÍd¶vP›côýÙµ(³a$²ô§ª ò³éº'˜NŒ´ j¶(i[•. ‡èÁ !!õ¨6Ö:“÷ÒB‚œoÖ–Ùl¯>_lo¼åô臱|Ö}¶ô±GmlbôÅÁ‹ÇñÃ!qˆé%L>\–¾=ãÀ3ÆÝ ‹^bÛ âA!Š!‰ B)uÌeBwÈq‚û%ÒQ‘éU¥sÁ¿±ª”ŽÍÁ–^\Qz Õ¿Á’&ß ¼úßÏ>åj±_žT_È>õ ®ýÛášY&”Ç)Sù¶­¯g‡h #p“vmKJˆ—àïŠ*%³2Cnã(“Ú=j9‚NZ»AÚ¡@rúžTRUÛOBóëTw¶cÜ*jˆäËÉvèÍZ· é¢LèúFÀV»ÑŒ£6R˜VŒÂºPwšzCFiG˜Õ#pÉ”1˜LzÐ.‹É`Ç(úRO«¸ŒÚN„é>Ê–öiÅ¿C½¹Z¯½k<¼[¯Õ†k"ߨ=*bZ¢9hðšÁ« {ò˜0@y ¼3zb˜ÿm×­9FõŸu—}õBüEÊ÷~jn6‘§Õ2L„¦ÛO‹Ú¯²jXýU˜"%ÛÒ+—‚ð+Y„2†#6M„ˆNU›Ç!œ"›$7D÷hV†qÚ†Çs)¾Ç)ççÊö| :o“Ö`xJL¹ã…!ÛùhŽÖ­ ,­Ú‹v}˜¤0Ÿ¤n•d#¼ËÄõ0d÷ž¾útÝc쌀`ÀÔ‘Ìãm K™•ÕUÆ'2èWz—´dn·q¤õˆn3õ²¦CbPto>éxôk/ÓÑ­M|ÌýÆo¦£×ÒÓIæ˜ÁçÛÃ÷í¸týVM¨`…«˜ô&‚Ø¥S.¡yHG°pJxÊAÖHIàBÞ¬T€æ,Ì¢æ< Sœz^qÿq·’7sƒÁÂV² ìΤù¥á÷ê†|¿-Óa³¬i%ÁÁ¹õè:N£€t«—(Þ˜dlú3ÏA¥r‡ý´g‹0D,q¥Œ¦Ó‹c«¡ j"¶4/º€Ø£ðž!/ÚZ­¹HÂ(›ÎÛ´;pzþW(uR>‡ébp¡¯½nO¤æý{1£þ‰*™£èŸõZÌmº­Á0KVJ™ jéÓ º¶¤’¯…áI†§ôŠ Z #‡–*ï!€ÞªÉ9ÿýã‘À§-Ó2“ÖLÅ9ÿ9Lº[§™C*ÌUÍ+·™vš‹b];V¡1‚wüèåÊ»WÊz;'ׯ¸NSëïDÀŸ÷¬–©K5- *]“`/„9^<Ý€hvÔÙࢽn—¨Ù}èôŠËÑG)ÚCp#S¸?¤ÎÑDR§†F+Šî@‘ÿ ÅÁi&élèö£Ž:ˆ“êƒ ~ÏAˆ›|…áJ»×gŸÝß…È 57´ì›˜™kæQ£A¢Õ>U0®‰8"62P@5FÆÙÁ]TžlLQK¢^Ò:tr´ˆÊó"­â‰ÂÔËjŒ†þßVDÅdª}[ *Ô/%„οµBälA­²U2G\IfJHɘ‚ÁGJ@Ú1q?¿‰©Ë _Д{,çò_QJµÑîVÊç»Dƒ-Š”ÆB} ŒòXÚ%/µ²2É öh#ócìgƒ/´|8L=2½Ê¨¯[ŠxOq‹q¹àØgÒ´Žt),7»-*ÏF7ÀïÑH®­ËF‰¸Åì[Ø=c“Šàœ4Åw˜?3¨o®¡ªa†BQ΄6ËJñ¹Ö59†nõßêû>avŽì¡®ÏcÂÊ.D# Bû©:“ÂX{H׉üùÑÑ&_éò£1§gΕohKìK¨.±Qñ•ÖOpúÒhèð|`çȃNnv¬²ã˜Òu8Œ½gZ×­¶/+esÒ*ðÒ­tE:ïò4ÙAÂJA[ùYêÖT¬RYëì*¯ߥïô%svKdŸÂ5Š—g†Ô«Ü G—@¸yŸßæfëQ ß:Ôfðì?}†•Ë9&Ú„4Lº`C:kü¿Êƒ@YÁã;zŸCià+Õ7Õn!,m£k§§MF…ŠVå¶ÖWIÃQÜ#LÊ‚œüÛsë£â ù8P²úídÊ€kx`ã“RïJo ‚šŠïŠZ;ÅÒ65F÷(7®¦Åð$í1±X1¶ò·Z†qû"Á'×8ÒJå¦ü¿Å|†éy,õf@0Ù ÚБ2MGª¢±Æ¦AÆdþĦa°/xdhxÄ<Õ$º=§âDzñø¡5¨jwII~H·8AÑ 9÷›`¬â›Åþ1Áïtfþ”˜‚u "U¼ÑÏñÌ2’„RóòÌ<% qEC˜ç¥Iø¡kþ¼“²=gQ˜.ê#»0üØ™Ô%ÇJô a~úßý"3`y1UÄ® ‘/hº?·ù ëtoò;x£ñ å»0§é¡ ›·1É-ȼ—+H›­ü6æd⾺ÛÀ´/®Ê{£s>Á =€kì(Í:9É ŠÎÇ…+Á4oªuÔÆ xmbê0—²?A4Ž%S™M Ÿ¦x›ò©tí73p¶¹¦:å—G žæDË0*ÁÄgP-^Q}8OÉ”|.a¸¶ )Îvª9fc¼$S€ð¦“Ç„´L,wDn¯å›í‘71¶¨ŒâIéÊ£a ¤K©t Yƒi’JI"S?1+0 ð[§<;Ä€à²M $qî[¨°¦[ʤ4É ÏДL5£Áwð+y£Y܈"$#ŠÍÞŒG÷¤£÷@BT±>å@5!åPDe«S"9›¥5PÌòˆa¾«”ÒÓ™6 ¦fÚL£™T4çÍt9+gªPçK2ŽZ¼›ýi;¬ËxÄ>+]ú’vå-ßL½üÄ>趃“þ£Çoß}xx(aÿo{yó6<#"`IÉI7+Dø?U¼(.‚±IÞyq š2š@<§o°¤”+¼ŸÍ½þ…ä˳ƒü9ß„|€?GHnFvü8nÓN¶<ºuÜ/Æð4Ý»¸ƒ?=ˆ'¨sõâ·Ìÿý7ÿ)­•bÑocsigenserver-2.2.0/local/var/www/ocsigenstuff/scalable/text-x-csrc.svgz0000644000000000000000000003055412060404165024633 0ustar0000000000000000‹í}is#É‘å÷þ9”­¬k„LÆ}°Ž±>$혵lÆFÒÎ~“¡Àd$à`«×ö¿ï{‘82Áªºš’ˆÌˆððpîááñêßïn³åd:^_ÈB\dåh0¾ŽÞ½¾øë_þ‡‹l:ë®û·ãQùúb4¾ø·7ß¼ú—<Ï~˜”ýYy}ÎÞgÿ>úÇtп/³oßÏf÷W——?~,†óÂbüPÆwwãÑ4=9šþ¦Vyr}³¬ÍÞ|Ô©’Œ1^ u©TŽùôÓhÖÌ›¢m*!Ä%~[ÕìVëêñ¤ØÚ™ôk½uÿÿ_>°((¦ã‡É ¼Á“e1*g—?þåÇå¹(®g×µ×,¨ßh·1%£þ]9½ïÊéå¢<=ÿqx={nP!}}_ß½Ÿ­¾¯__`|Ê —¾/zpµä#QhUU¿¶þ“ …È&ÑY“ª4˜¯ñºëñ€=|}Ñ¿¿¿0ÝãQþ˜ÿ\NÆÓáÏe>üÜleü0»˜ý­|œ•£ê¥fmÌéçô\Ñðòåãýx2Ëo†·eÕôåûñ]yy?“1> ¦—ãÇOïÊQ>€ï.ñÜmÿímyy7¼+gŸîAËé]ÿöüõ¨Ôåc>¾¹Êƒy O÷£w­m>^ßcÆ,‚·­>Õ+¼AW×åÍ”5«)á7ÌIH¿áWpUÙŸüqÒ¿¢Ýª^U³ù‹“ZΟÁSÓÙø~Qw>Õ(A}±*Ƙ¦%8BÔʦ³O·eU;ŒoÇ“«ßÜ ø÷2ÁgÃÙ§+y‘]ni¬í ëohéHa•òVûpÑÚy»½ÕU-Óþfïõº1þ¶žŠò¦¼YëéË.ÍêØÚlR)aÌîfK]ÊRÕ¬oiVînmPÞÞn›ÐW—MÆÚ͇ îÆ«oËÚîß~ìš.;¤âÕûI )þ›ŽÝÎÐ:ÄÕd½›þu4œA\?LËÉŸ)òþcô×i¹Që/“þh ùz÷úâ®?› ¿…T’2z«o·!Zk„·üƒ—Ö¹«îË×Á^ûZg>¡0êÂ)iÜŠSJmaœP²V¥R¨BíWìûŠíßž’š:JÛ=› B¬U<¢»Xµ’O誅²*®˜ùf£ÞMk½ ªAmªN¢…óÚøù„,¾åÊA;‰OZAc䋎l°¤î‘¼ÚƒQté¿…¼[æ.V3Z³¹9L²¶´'ÚÚ“ííùÜï[øƒÛáýögï—l2ÿ¾{)²EMBÌÝŠŠ÷µ·Õ€Âh|]©^<9åßtPïôjöF#ÌÞx’&ú³‡I¹IÎûÔl”5†Ï2”ßeRª^P…*— 2Ñ3X³V ™åªðÑ›Øs…1Z•å¶P(Â…ˆÚ)Ë)‚5=ͧDÈriŠJJieµÃ{°^”P!ÕN£–(D=[ø ¥™(¤³Áõ¤EOŒ1Ëuå¤TS2jÉÂa-øžÚRʤîDaù\ðY àT–42Ý™)¼að…å2_Ø`„êå]1Af±€®ŒXh¡Àw¯3é ´&ùŒ+ mµÍ”-°.%Æ›+6î±æ³2)"ÊI0 ßU„uEôÁ‡5*ÿ¼©€Ín¯`+|».Æ õ_¼ä¯µõ3MÆÿ(Á £Ú"¿\°×ü;ž™•“%—r}äÊîÇ·è¬j€½¦ÿõÇï/ Õ£:Š#ß”ì?L§ÃþèûÛ‡I+¯¶¿’d¸þ±ü0LKpZ #„k|Üll–Ç ªn=›†ÆdP@ìÔÑ6?¥–ƺ3Êë¹R0RJ"XÖ6‚3ªJ-Íš’V4wtM% &H/\SI¼A@Óo(ih!÷ª‘6*LHíVDÝQI„w)‰•pMé·dwí)§v0݊ΕÖÞo°ÿ| :W5¼N·5¢P&Ævõ(l¾Ãä茬»jcákûlÚØA“Õ¹µ©»«ÙV½= Ö Z´1š%¸Yׯ¾üOöt¢*(߸Ì,Ô´Ø ƒ„Ò Tiºj7+UØ©ß4ôP Â;Ý“ÂÀàÂe1Ñ€ÊñmÆeŒÂôB„À¯ºRf::j/è4£%Ô—èhP4L½ÈoPfÙOÕÇ­úlÇšêk»Ê:½)©Ö$v³Tùji¸Õ¬ÐpÀÐEjÅ£4œ6Ò:®°=ÍãL0+93I…¶“°‡h7J÷6RAHà!|tX¸ÅJ+‰X,&\J/9Û˜\#Œ_Î(˜Óø3hÍÐ}û¹Œ´ç€qöˆ¡Ï¶`ʼf^¿¾£ Kȯ‡/œœE´¢aUÿSªo%TXjY¼ð‚ªB(k,õÓ£9ØÆÒoôy› `|º6±Ï挕¡†Õ6ùÚXejš¨Ê¯–;ñÔŠ?‰£ê?@IšM¢¦JOà´j#¡A:güÐIŠ|HÌžB)ÄDšv/ÇmsŠ€+Êþ8܆ދ|~Z­?zr…UŒ¨tåÜfø÷$Üænì=Å`˜ªa¢t#Õs¬XJƒuŸsóåhØn[«ÇVÈš€“Žn…šm²pZE-¤YpJ gÑnÈ7šRAPŸžX4Ÿ´RÛM0¶ZªG Öœy]:zgìΡqw˜¸¦Xt €Eûš§ôQUþSÜš|m©KÓÖÒN»]"sÆP½å·JE°rRª® i»ŒTƬú¸ËU jVöÖ Ø#¢¿ ½½rÊqº“ÐKœ9½d(¤Åb8½t8szÁ¼„] ³õDôrçO¯c<¹Ì™“‹ËÑ8N$îõ¯@Ü»h©ԣþˆ{áEè™SPK»°—âD„:w)2B½|?¡Î]°ƒPâ$„ú|ýI›³JºãÐ*lzáw#=F¨X‹fã)WÈ‹ß6'H …ªí´Ywç´åQõr½ß{÷$J‰]”²ÞnF,ì³l" KwBa´sôîo_)UõEé%NM¯MüœèeÂIéÕj€Ÿ½6EþSèÕj€Ÿ½Ì©éµa€Ÿ¹N+î[ ð³¢×ÉÅý¦~NôÒ'÷ëøYQë´Â¾i.¡N+åϘP'–ï¿hBµY~ÂÔP¤ŒsÅ´µÖ96Iñ¼Íg?§´ŸßN«›~ŒÏÍo›'ëaÏí†ÆÜÁ*O vcsúHŽjYwò³­;´uXLà“ÖVJœŽJÂ<‘J­ýn§’Ø!j´Tm/,T=¤kß /lJûÇ7Ѳhmùˆ†w=¢ïm½òëñ1ó1vd퉜(ŽÕœ(…‡„ñöÿŽ\°l,>Y°µ6×F'4'=Ò‹Wüï?ýôï?þMª¿¨Ø¨¬ÖÎàHaú)FüËú)ºEéu<«Bø.´±iÐÛ‰¿âp!¼ÚÓÀá÷¡í˜JØqR¤Ö€ó{N ÷ýw?|×Ú€ïÒ€ÔÆïnàûƒûÁ´5°ƒ?kBÑYe½ÛÝÆßãï»–6âå¾jC{gœp{Íÿþ{þµ5Òi®MðF¨°g$ðøsmtšo§•qOÄî~ä_[¦|ß»ÓmïÞ¤Ëo-§S–â!¬¤‘ÈÚ¹ïê(¹*´¨q#OˆëXXjç¼vË•§ ƒ·þmxwHÐeÐr'®”!XH³¸‡+à_[#Ö/Ö– rßþÃwükk¤ÓÖBbvü¾F¶±ŽíD.«åQ·u¶Ófï\|¿e.l‡Å»gaý^þ^ý~ý„GzwýD}s ì ŸÁl=O_?6[kç©Ó×ÉÃmyU~(Gãëëú ëùç<ž_ÉûÇE…lè«·³Y½ìïãáèên8+'‹Ò¶CèýŸ2ž¤ÙO™=©>hµúø¯¯ýÛÁ”Ïc°“PÊJR÷­CÔ¡fÍœñlñeÉvÒÍ(Ø UÊõc…ƒŒd3V ë:-^_„ܲx¿œ \îÔ>I~¹Nð§‘ꤢ¦ýøÍðâRWJ!ÿ&1âu …1Æ7•X®],š‹@GUDSëì'êé"ÆØr´å”g:Þ™Ë^ޥɧ°:±_<—'ÀïpWÄ`ê>ªçñ:ŸÙЩ%å_åVW@ؑӣaªì™‡­n€Ði¢T{Øê;œË5;Èù=fÊVû?tࣣíÿ½ýíö?E‹uÉBPoá«ÑÒ kÏ$Z¢¦&)s&ˆÍÜAˆnbíib’ÜZßB?ÝmƒVš=k$DȪVŸA·E(öÈ‘í>‰NkPAœëè´•ß»·±±é¶÷E˜Nóü_D‡9>Ú¡öù"Ž?Šm…}–Lh~]­Â¶¢î`9͹rëÅsœ+gúW­4·bv ÉzqàÁòÃq l1åµìê•í ²¹›Ãt>sÁ-­*¤0ÞA†+@HXM¶ Žœº°ÑÕB^çˆÅ*YƒÆ[ô×Á¤kjº–Īº³?{?åÀ2†æ£©hǯÁ8çAC ô¯-?‚¡Š(}¬Ç+à/g{éº^ùçœyVBz–çŸ9¤íI„:±1¾„:ÌúUÊŸØ“vÎÑÜ Öi%ú™ŸÐÚŸX°Ÿ÷Y&‰=)½Îû¨ÈuZ)æ'é´'öç|Rô:¹¸?ç“À ×‰Åý/a¯ééeN}”î\ Dsâ3šg çÍ©ÿž/¡¾7ìH¨`=kÑœ8ƹˆæÄ¹VÎÝ@4'Îås梱'OrÖ¢±'ögm {rqÖ¢q'÷çn †¯b7BůbGB}5;ê«Ø‘P_ ÄC¨õÕ@<„^V|5£×Wñ r}5£×Wñ0z}5¢—üj F¯ȯUT³‘·ùíÔó/š·œ y—{ŒÈìL y‚…º“’×:J¯À‹B/˜3åHu²‡#ƒ4Á»…5•PÍP{ç Þµi›Ñö.ѸP Mt\Öý¢t<¦ÝIÇÜQYãŹsä)XZس'äó+› !¡lôY+›SÄýìS6Î éÎ^mŸ"ÞeKzt4¡ç gƒ æ<Söqû¤$þÁsÞ„0Ö/§~‚†XÄÉçaáòCnÉ…¬í$µ[¥µùŽœdõ‹Sò60A˜î ã÷¤=T:ZoŽáO©òv™½¬Ià˜·ÛqLÒöýÍÍõ®|ö»oN‘&WOXйˆŒTë¸IÃèÈn. ]¿<§‚L¾J½ûô!ëæð.™©žcA˜(º «Õ é¶L”ŒÔj7"ZÌ“îöÎ!|¹Åiµ0<$¥nX=µqìÈÊßÝ鈧jÍa‹ARnâ n«­í½wãT¶‹ô ··µ[•f"ÂR‡E´.Dßm!Ö2’r!í]¦umüsØ.èýŽQ«Õ® Ÿ×vA³­¸ð™míñóØ.¾pÌÄo×m Ó"Ô–ae»†–G-_Ye¼XhΠ7= ¿@ãEÆN¾‹g2^àÝÇ-®]7>ñ‚ÖÚüj¿fãEÆnöíó/ ~&Ómí¸µ¨V«Ýõú¼f šm׿p£ý~\R…ÅŒÖòǧ…àS*ÚuƒE1Õ<äió.ÈÒÓY-ÝÌøÃ¬–fÆã÷åðÝû.¤$N\Cä•'6]“ÆéŽ'¨Ò˜º>{Lõ%/~U5´¹Ê˜lB-DgïÞlâ…|8ƒ÷ãÛ”9¯ÞNÿëßwH¾¼‘6ÙÓäÍÔË:*ã]ãî½ýôÜ•OºA]ëj#–ÔõAÔS—@|“ºÐ˵=º:uka;_ŒºæKPWÀ/ZÖx±¢.Ô•o¡®ÙkYEæÄõ=m¬kE<ò¬ÄEôâc‚“Ûvo nmðº¶÷÷…¯µßÅYVÑh=ÝàWœeGœ\—ŠDÎêmp– X5ãµb-B#8­bÑÖ³¨)ò*¹•¼RÇïâ¨{ןþ£>r~G£+†fÁa‘$­ 5híåžð…eüCsýšJå Èõ,ÐÖØì‡Œ§`´^õ¬-„±FÆÌ„€TÒöœ¡ã3JÙZöSfbÁ‹Aag°˜“Q¡™bWBσ¿ CR!;ç=¯ÝÑX¿‘±"Q³â³Ú}v—$y— Q¿¤õ3ýáöýÀ –Îázf D½÷U’†·¤ *+aáJ„‹¢ôAe·™æ iizÖ8&ÅÊ*ÌGA¢0dzAgÔ&°…t.mØÈYú×Y[8Ç) í” }õ­Mì©*ZÈ©è+ã[›ÑÚ6œñKäÀOjŸ1=–³/a×ÃþÖ®—K`Êè,Z¡K]Gô²Ç­ÌífØ é’âƒ+²»^¨hS¨WxN0û¿uu‚ÒÂ+°aÀÚö¼\—4Ä¿BÄEðÚ¹6%…"ôò%ÅVD\•µ aŽZGmÓ`¦.ª·Ê®cX» º.8£CtÏxаª]!1×J@)ªæ`YÁ𑨹oçxÇaŠZ®òÁ|Þ!zä8’Å|»¶£+¥ö@ÔÑù31 ¾Â©a~Ô…í0'jV"wž\Óœ]Ã𶹨ÉÝ]¡ª9­Ó9‡EŽ×Õî´z‚Ù²ÃàZ7I`V «ÇÃ>Åøž”"³ž‡­y‚ÂV¬)1y<Þ!ƒ°!ƒy˜Bþa\†ÀÍBïtF;¡„Ë"оÆ÷¢+¬ 2ò„/dŒÂôBl¯:c¶§ÁÁñh¼Ñ2cš¬` 6ìuõM¥S éc+tmnQK[ îÊ@ùO> C4…0Ùv"Â1Bçéÿº@œçt2Ç,tˆ0‹Bç*oéͪ½·{¶ôoDyS|…E'Û¢P&Æ=·Ô¥,‰„ŽÂc‚K€};XÖ8~ÏÆ8–°MŒiÉÀŒª]õÎËây KúÚÙ²t’ /°®%ç[›NÐ^K#å0¡éâî冿@Gð£.ŒÒõ{êÞ‚ ºÜ[.ÌcáÞ ajcϊÆt”°‘v˜u€”jQاøFwi2 ¡O§É’·mcâtn×ýmuo↢“*é¡€³’ÇÈôé ™å øÁ›Ø£Ý#ÝE¼J’ŽÒP@/;eY" gzšO‰Ñ¿E¯–d‘VV»Œ(Æ+XÍ©–p:ù¢D=fkbRF† ާñ­06ÆŒ1¤1*ÕÃÃNj©QÄ#yÚùž*L€ŽLÝá¹¼G|–‡B áò@™:JÓ°´Áè°Ì Ç±ÐÏfŠ%œEÀq}/ÁwªWæ%Ÿq,;myêÏaÍZzöØ8q¤™š*„ †ï*º‚»úaÊmj3G!п{ú”Óœ×ÃpÀTù¶‰yi·ˆùg2Ð"ÙŠå—ew;~Û¿ÝÙ¹»þãðnøsyÝÒ@z™bþ†9‡7èV¯Ä÷?LÆwÿ9)…q.g³áèÝÊ"Ž{}ñø‰- Ç“á»áˆÃ[NÖ¢ðS³pJνCUKh 7úÔòÓb©Ð÷µ\EYVÞÝoù¥¶@T½z­ÜÔËçm¯VL–}N‡ooËÝQwÔGáõZ)i<¯OºPxLÇ£ÛOójK±²‰éj„ÂÊXøß{+Ås?ž«ÒÜ…žŠ´\¢h7ëÌ)Z‘ŠÇCò±Ò…] 'JïÓÁƃÚiiKÃ$ ÒÒŽñ†g¤miÌh·ð轺Ü»©ü®œõ¯û³þJ/JÔ*ÿÕäúæê¿~üÃR Wÿ=ž,c†LQ¡ÿvü€¼D¨w=¸"ÄêÏÞ ï°ˆ.§ÞýîñîÚ`ùC£2×Çê¥Õk'à†‡É¼ô~6»¿º¼¼‡‘\Œ'ïðüïnȇ.ÿ<ƒyüïl¤¦öæ/ÎnË7©Íêãb—óa,ÔVm”¯.dHßÞ­‰…ÛþÛBå§á‡òövœÉMq:~¸¿ƒá6—Õ+òÎe÷¼Íº'`#Œ)œ‹¶ ÄùMµÝºîØŒ$â>ú VØíZÓ„Ö Hé1 µÖÂT‘N&áZÁ€’Ìkɘ‘yÎ #Û*رÉùí½t1ó´¯ãe*í«²Ôf<ò†W†{º,œÊ”£52ÙëP)t-hSUOV“Hê9Å —ÆÆ Ä R‰yKR2oOÕ;ÆzügLò'˜èÍC=›Vè$L~Õ¯Ùd,=%?%'€·Õ{èÊ'8`ÐYEèŸk2ÝÄÚ­-]{nVþýY›M#˜Ø5™4´]” ƪ4™Ó,J]0t¬¯…Ÿ5ørÑ|¥½–½® áæhû¦ ~)Îiq9VÚzùOäÍD}æx*ï)ª°(¹éâDTƱˆV«u܇q>%sRóle"r6EàK&gZ¼ÍêXh á£5,Š€ÎΤ2UI+$½¥* é}nοµÂ2§‹¨SÚªÔ!^éS™DYHÙ¦PÂ᤮ Õ¸ªXhƒÑ*ó£3”bª+,úÌ‹å8¸¸åÄm( Âã0 ‹ñÄPHX¼ÑgQaYÉà’ÓªFó÷CâJÁàãÌãWF™Éô–Ô)ï ç·ªVRÈwWE ÿP (Hà b*3J+Ÿæ0„X5°œÑŸVÔ­M2ìŒÓ:èhT¨—48ãçìbMV&5äË‹%©u-ôj!-í˜<ë3P¡7tçŸ2‘þ¥¥Ò–ïŠs$…£WÔË@s”€4q°õé…¥ó*Q¬°½Qo™ïØÕœ¨ZÒUࢠ&¦*ÑËj?3¦u@ iâzÕ?»ßZõ¾'ЪÇ曡Φw˜Á°¯˜òµ¹$”+1Z1awéÀM [”ó¬n„Gɳ"¬¤V€ÁêªtØ,IT×Ü«ñ•Ö|uÆèÓ; w §Q½~¨~W®jÌ+¿zù²ú¼+ô¦óÇ/Šé®4?—s–Ô6jG ^$b…k…U¥<•qôÐÛŠ‚H@g„ÐÐùIÛy)EšÃôAgzABMõæ™ÿnQæ©ùrçç©ùv3j^[XNAY{HÆacž¥ I)ü4„ãªÄAÀ8ÏÈìj sYpˆ¶-È©–àªS¬CçH‡móвW…×m }_F™P÷$$ଉóÄ—Œ¬3(È`JS Ù(â£æy0¡ù€D}\$Â^PöAƒ›$ÜgöIK(“òbzhŠqC•ã’L„EbL aªXw¬kê¤$•âê%óú’ÙÝ¥›¿ rÖ$&´wÞM-­a›È*|žke•ÊRRFM˜¦:R q7É«CüÔƒs*`M-‰·9—VSañ‚é"´N’F¨¢Üª„)ü€†Ô\$9Âyã–‰5—Y5}eg¢zAdW+já²èZw.ŽÅçÓfDü¬|œm<• Šâ4zÅG°ä‡çŒã'hÕÕæO¶bþ£©%Xpóx4˧ßË+ U4Ã>î_VŬ‚~ÿ­J>ô'ÃþhÖ(û˜œs¢élRÎïeìeÞ¿¾]MgýÉì%5wê]qL/?N†ô…å´Š¯n'ùìíü¡Ñàýx2jeûú—[÷ñNví†Wý»éß o?]ý4|[N’+%ûÓx4^ÑëîöŠ4yî'å´œ|(/Þ¼š¡h´á&ßÙ‘š;¼ub¶LÍ|nÙ&·qxnÁ“1g“o†£Y6|ùê2=ðÿ‚r»,µ-'3eì•ÕZË,üY¤œžK9C©æB•íwCÌAß9ÍlÂ…ò6Êš”ƒ-Qæ5̱@t‚x&z ˾Jìx¶KÉJ9ñä.] ø]ñÅ?P–>Ó̯!$¡>*< |Ž̾‘ðâ|úk¢H½²R§,À~ ôÝÃ*2syÍ 0àÃSÖ§¶RÄç†òj•MmËã쥊zºTIK]CaÖNÑ%N‹Ê Û&Ùã¦ÙÔGÈ&õbTi•ErSt­gmDo†³o‡¯ÅËløú··³—è/>þîw/ö‹«M#¾.e6Ä}í¸Q09 ^_$b4C_l_5NÀ$Ôa§‡u÷¹Íêhº¿UB¢lÁ¢2ˆ‡#àQÆ$`„KtÐÒ³ à4Á‚€YaäÚTþK†žgÌT®icT^Xô[±4’ÁŽ )É|:9/Rô­¸d÷›(Š4MG+‰ÉÉD„q ¬®QßÔ‹èÒ•š·¤<ÿÍsš€dŒv†Õ.1NF^@®§P.IS#RžšÀN7‘D«Ì ´>õxÎ0ÿ Ä‘02”ƒÑLì£Ú¤Ó—0¢Êx•“H; 0gM:âÉO«‘®bañªÐ‚ð€ŠõiÞ"k—iÈÌOÐ U@‰Â˜µõɊ¬yJ{E'ž¢n›Gp<½ôÑZU—OÚq¶d-­Ñ¹Ês~!(±~1Ä–‰Ù25MÉl÷¡Äû pâÍ·¿ý?ãÙËÿ™v¦þ{<¹½þ—ªd?~ì¼6YF@8CØÈí,³ÆIàš›ëA?v¦ï‡32Tÿ.û_˜®ìÏXnM±k¬÷ xn‹žBîh¥ jE™sö¨ª0!L]î.8[ï+ÿZÊ‚Bìæµ ¡ò'š´WFÿ´L‹6ÞŠŽiØEé¥Ð &÷ÀèìŒ ô ¦%஄vH¢ ºÿ£1í„#z„ÐL> òé¸ °Ýù*XÓ>ºtâE†6±@3Üœ’…ªŠ„Á€àÑ;σê‹Â„Å!=ªÒ«æ%ìnJlÈk™‚9ƒT%ê-”;etŒ"8ň\ÃJªÇszP &Åí &?à¥1tJήA2HpèI]Ä€Z'鯣‹ˆçù¹7mÍ«-ŒÏSêËÙHЄ¤H¢V$5ÁK»”Œ¦:Aå¼ÀÀs^‚!jµ(«"—¡$yø3ë)ÿ½Òs‡­g>Bk¬*Þe5'?[¤+¢:!?ŸÉÈ6AÄ´I—¤4¼”„^4™0=8e!Ñx&:äûœ"98L €ý ¥à Ù7¬oãtòÈâG’Q25¥ÙÃR©Tò×ÓÓëé õIÓ§2ãšA¤0èļ•¥¢¸]ã€ÇÌRl3=3èGã9 Ï$ž<ÒÉKkk‚ŠZÑ·CJ«Œ!Ú‘Îçè»KVž<ïÒÖ­e· +é d ¯6&2všê€Å¥‘ÃÂQŽ.c %\Ee;GôÇÙOnAañçÒfôyÅÜ,s:ù&#¹ ï¢yÆPmXsÜu…Ò`•¿‘t}aÈB€}UJ“è¹Q¬çcá¥3@«®Ær@H´Ã-¦vHÕè87˜:ZŽª9’&‰ÃyåTä:N7¿(à&²exŸÎ¸µh`˜qE +ú;¹ŸÄ›ÓèÊÆ²¸MðF..–Aàí“nn,ƒ8Uø:¨“V(e†HR‡¸.`D, h4Øš°àâVèdµuOdB7ê "Iúk%}!hî,·èØwô“ ÅÞðT€ÆÚM¢ bˆælšd]¨Í9“Nóê²ÌŽ lƒ-:-ºÓ ,?‡ªÂ$k„5Î{*pvQ˜ Ko€‹•O(Ø'›_p¾óäñ‰+Ñ€Bv "Î1g9;è„• x\sã î, Xeù*¥nÒ6x Ò‰t„â‚ÄòÆzŒéƒ³0¶)65E]²ÌÁØÜ4°Œ‘¨ÈÏ0BàmPF%êGŒŠÚpЉ°•7†¡ÎÚvt–Iæ‰ÉÅ¡1·<ü€eh+¥RôèÑFÕ4EÅOj΃(ÏŒë[IW¤æ9THˆ>,uàHåe¤6[˜ )ö‡·¶P,YX!1P´‘ÐÓšÝÒzÛ±´‘"@¥Kv%Ì}Áï¸{•š'Ž…ÊÃè !ŒÉó¥ á”J6¹`ÞaÆ]D&|N{Ðl‘v$+ðG‚Ä´e qé)kì—¢má'K‡Á¯)ŽTÒ²ÐisZµìúVGw_ÌkT±®˜cÒ o„]”³OXWof³zÙßÇÃÑÕÝX|Qš¾ÜñÏ•Y”­OZ~ÝŸb(“þ§mȾJ!ÑØ5ûS–îýJ—L˜cE€à`ÈrÔ†1 ‘UôÓní¢-Á^c£Jù°Ç؈0CÍ"4`>5ìLKiˆ† faÀ׌ :[G2†qæ26rŒ«è¡BêW0,ÎÍ­¶8k× _¥é×ÉjuZïƒÃà^îB éëä!É—ÑÏådÜÀ ­vÓ¡{ [[çutPÌC¶w£ _4ÏË3Ó3$Ûr/QôR Cg+·=ç7•‡ªßÀ´%êp5êwõÇßWËe¿É%y±½ åo Ö…T¡·°ç-L »c÷Úº1µnéÃöº§íÓb¬îD}Ͷ%ž W0ö¼3 ×Ñmcn_Ë"ÿ´¶:ÐþÉ\_ò¿Á:ÙŒ¾:öhdL׸Îbä¿Rì±õ¥°‡XÃ›Ó {4’‰µaÿÛŠ0Ž;hd:Ü™‚¢j$ÙŠ‚‘¤Äù§ê_ ’ÕëHvsb¶LM#ì yõ@7ý¿½ÜôktréH•jr¢T¦þÓiZ)}ËZ¬]ÚpR'—G…6îkhÏÚˆÞ o²o‡Ùk¢=‚ðh1¥J• £œ5kä†ñ+Ðyê—B¯ÖCè7ç¥}fšlv•wœÒód0ÑþâùÁÅænœ$z3¢-M0-²X3lWKTËç‘^ê¸`èFV§-z5CðþãñÓ»r”MƃœV’é&AÓÖaôNWˆv®¢LþRâ<åzœçæÄl™š&Óí= ô÷ìõëmÇŽä)ž'lø£åIQ©Õ¯R=ÊÏâ[ ½Wßq²öù—á[ múñÕå»7ß¼bΞ7ßüÕT&ocsigenserver-2.2.0/local/var/www/ocsigenstuff/scalable/application-x-mswinurl.svgz0000644000000000000000000060327412060404165027105 0ustar0000000000000000‹ì½ks$Ç‘-ø}~E-õE´ TG„Ç“’æÚŽd#3]Û±yØî·1 ’¸ÓÝhÐ"©_¿~ŽGVe¡t6™Bì¶î\"²²*òááîLJûïÿçoßìþzu{w}óî_ø½ûbwõîòæõõ»oÿðÅþÇ?Ÿ×/vw÷ï^_¼¹ywõ‡/ÞÝ|ñ?ÿñ~ÿœŸïþx{uqõz÷ýõýw»y÷ßw—ï¯v¿ýîþþýW¯^}ÿý÷ûë~psûí«/wççÿøÿðû»¿~û»ÝNç}w÷ÕëË?|Ñ¿ðþÃížøúòÕÕ›«·Wïîï^ù½õÅñôËãé—˜ýú¯W—7oßÞ¼»ã7ßÝýfvòíëogãj¾žä[k¯\x¹žq~÷ã»û‹ÎO¿ª×øØWƒsî•~v„ÛýãòîÕÍ?~{õîüúRåî•~ïÍÅ×o®^½½~{uÿã{}–wo/Þ¼Qùú!„WO\úûwß>:ñ¯ßëkÏ~_Kzô„ç'ü£žñû×WßÜáL{/é‹©üL?UѺº¸ýóíÅëk]PvžyúIöâûwô[w÷7ï§sûûÖ#zŽ|q<|óÍ7wW*nvìîþÇ7WvöùåÍ››Û¯~óÍ%þ÷;ºQa»¾ÿñ+ÿÅîÕ“=ö ÿ{ø \È>…P’”úÅ£ŸžžõxV|ü—K‰©ÈÉý?v¥îꛫo\éï–L+íÑi›ó!¸ŸŸöJ®ü•ÿIÓ–G¦õÏÏvyuùõå×O½Ðß¿:¬çåp’nýé7W—:÷Å›ï/~¼;\UãWßÝ^©*ÿÍ#û´@KmÇ—õm?øŸï®ïUg¸»ºýwè½ÿëÝÞ]}tÖÜ^¼»S%ûö_¼½¸¿½þá·ªš¼o5Õ3§ÿ;ŽTçÖ–Rt%áïV‹O9y¼|ÿ‡/jÞ)³‹ùQ6Ùçàc>JêA¦}Ì.øÙ¹zÔ»°—(å(¾¿Ç…^¼ù%Ÿ¦4/çéäyžN¢'´Ù —?èå겘ùQ/Õ»}H¡…ù›ÎûæÑónõ`ÕÓÔv†E/D\.K!Óè<”}•ìõ/‘}õ5FÿåB18<ÝŸ(«È =ÔÏÐtü÷ÑB~^çN«YgKçñó4ë#ó¹ÇæóÏWÎ˧þå›ë÷ÿzqÿÝALúøù¥ˆ9¦3¥ÖvžOñýì×fÞ»›×fõ›wøßÝåü¢oïÝ;}{7·ç—nÿzqÿáöêãÇùžÓ6?øÝN¿ÝyÎjØ'ZÍ»Ë;‹ºf“8¿;ûÒJlgy]k)ìÎÓ>è!ýÆÞ5É!áˆw5Å3Á·\Ýû¸oú$=IH’õwt½*ÏrYô,·wÕŸ¥}©Þ§¶s{ŸSÍg>é•ÄÔÚî\öºœB8Ó/C3Šòû¬k¡œu¹Bˆ¼œæ~Gj®ew^÷ꬖz8 ŠÆW'gn÷%â ôGDVÞ•}ªÑ…³ó¨—«ßµ½Úʦ ­îu\dçË^góøNÞ«µ•´ i¯ëÒëýžL^tÍïþ¸ó®éñŒGYõôö³=ؼo¥–úà)ÿíc{¤Ú›¯Ô‘úíC5¦ZÿËßáÓÙú¹»¿½ùï+w³Eþj¯>ÖïÜ_ݤëãüúzóÆÜ7;CÅëîßþüO_|–Z°¯Js'‚üÍÕŸ/>ÜÝ]_¼û§7n•ÕÇáõŸ®þzÍ £O-.:—Ú9>bvÞfÀ.ëW³Ðú2  žµÑéü—´Òºîb(ÒBôÞçÚTdó>5• û3„*>>0Òa¯–»åS#­0¦úâò©‘Žú N-ýGFZ­óŸ4#=<¦ÏÐÚzÔ Dmí9#qTîîTû=ëd/vÚ?Ë8=îL?ê‘R>ÿ~#r>kâ'ÜéÇ&®Í…ØÚãæÑ¥óg ÇbÏz©5veöb5kœÕ’Í¥õÔ/7³ÚíKXíËËG¬±N çæ¡5.{‡þ¬ªM,5ÔPÎÔ¹Ü%5WjÅ.wjÕèT˜4Ù«×½úðºR]ªjãì[V‹¤v¨UW²œyWöꃻ¼kmߢS§²©úP‹×ÒúÖ\<«Mµ€~*f̤eX/µiQ¼š/wVÕ‚êİ‹©1ÛýÅþ|ÒžMîØ©ùzÚdýò(@µdx ±O'Ñêùñ5äã[Èê¨- GÈ¢¾‘H;úö€±¨k<ê™[L‹”½ªö䌾Q¨Î«?¤f]Y}õ[’OKÒî}ñxÛúr£Ï¾m ú3^ èl1ܵ@ΗÕÇù„ZÁÙR èÏgðú_¨ Dõ.U%|Štî[*ªŽçÿÈó“WS§"u8<…BÃÞ…”œ"õ_Þ›Slì£+Q<ÞÓ ôþdöbug.&_g¾ÚÇrSˆ3 ¯ª—;ü©£|šÊ6¹™)ý‚6NÔlÐDpF?½H¨|Õúö‚Uu¡*Mò—Ÿï·õ'ò~ÅÕ•ZøŸæ·é…»ógü§ãúËíÄN}•èÌV~Âo‹øßÏòÛò7é›ôÓ¼½ÍpQ¨ÏP ч_cÅB<Œ9Ÿþ¸NœžZ«?ýn…#¬0Ã&'¡‰óñ‚ N¯¬¥ô T êPÿò ðI¢zjÏ?0WŸDª?ù)š‹¿†ÂÞ«ëXrLÏÞ‘NžŸº£Ÿï–—*íÉÙÌÇDd ˆüÆBžST¾Ò›¢/ï˜>Á"Ô'òÕ×îïçÇþ÷Íõ»¯Þ^ë}LG[ïôÔϽSçLª:lêNÇVJõ»óT©–ý™ú뮩Em ©¹Ý¹ú×¢F0Ÿ!h¥nvØó{9·Ù!õÆõ;pîÏ}nêü1 ¥݉„Òž8Š |.*â) ~%û¦Î=#XjRaP+íâû¦¨!¤ ZRϱî¼^›^µú‘dN\{âè߈Ä{¾ªŽéçB&Ä:/?$¨ŸÝ<äG‘y§žº 3¢‹ü "®6ó¨níWW½ÔSNÀKÕS[ý\3þ1Ô()ä¹(“GUòäÚýü¨ ~öSA5µÏ[X¹¼ôWWŸÏÖélùfô‘Ù|ô_—‡NÇï~5 ›³ŸÁÃO:ö¿F,´†›KñYm¬×žÒÆO.™ÔslªN—ŒÕééÕT77ãò.=÷òÑsŸñj»;ë3þÿR¨€!ø¼Ó>»ædÑš«Áýk?»ÜÑô^.òÃãb¶Lí΂5WóãÎtúĪ»Êòõƒ¢zà­:i!<³Ø—þÖb’®†O?s±›§éôfËññ\M×ZV[þÐÕTœ¥NÒQ¾Ž¾fRw Í<è¹Ç–·U'aŸ]Jõ“¾]~R›<.ü€¼ÁÃñ¨þøÛÀÅpBÎT°³:I{WšM¶÷êÅuo~ÂÊ?½.]ùiÑÊ¥ý ØÛŸH¦?i’Y7îʽÎùçéî³Öécó}™þ™q³Ï¢gÎÔëH¥7EÉñyÔ§—)Ÿ¿Ž¤4õ·‹?M¦9÷€eîŠb!E…­…vº9ùg¬¤²l%…²Í: Ÿ}Žß¼Î?#%%´ÏZCÍökH>™‡ömDˆùh»Ž¶®æÖüC[§ž ܹãû=ÚºJt¡<¶FçIbÛØºZýüÚ]¢¥=Ézz‰ªMS°ä”J?WP‰‘xÊ»«¢Pð\9]¢Mau™ÑñxÉ÷øSŸ×Õo›4ÐvIñ¸ÂÙ} .þù£ÅÝ-î4C†k.nÌ»V¾YŠy=bIg«¿žyLqk7Y‹Ï3>z‘?ÁÉ”’öÙ·ð`åÅ÷¹Æ™çÈ•§k&º6wi]Mû–ê³+¯ãSuô}VY:NFðTÕþ·|vîF'ïSø%Öc~"Hôÿü¯¿üËŸþ+ü×g¬Â'øtô£j Ûc¬³þyhŠÛÌAj+•3€ó ¿®ODAÔi0á< Ž8O´îQ× ±‚xþ§8Òኾô)·L[sv.>!X–>í'ôÂèÖ?óß# 8„ghè…Á¬æ_˳ä0™¸ó¹™:}µŸ^4–Ý?4W%Eµ#aön¹hœZõšæ¹ÜX4A_OŽ5ÿ].š'¢<¿è¢y9âf¡‚ÿù<%áO.}~ÏXÛ_zýèlõ§/ŸPê^=ÿYz?–OJØ Ó©³÷ȹ8ª+*Ç4 âþ a_ØÈÙÿÛÇûª²_Í!Ó¹ž‘ãY!<öƒŸ i>ê½ýÄæx<ù­œt¶²Ô#ÔÛý¤GøbdtQÈàW’Ñäb^-ÍÅgÜ€ãYÉ !£z#a]„|5M«m¤Ò¹Ê"}|ÏæË“Ñü·oþýÉhY”2ð«Éh^ÍÖë\ l½žU‘Ñ↑ÑEû¯&£åsRV¦Œ–[îõ¬Ç6¡¿Hýdæê‹‘Ñ-1SrõsxÞŸ)£uÁn8=ë±Ô«—(£uÌT¶ÅLíÉz)¿¼Œ6Y"£í‰ýš/NFÛ'« ¼Ý3y÷9ét?OF½[N§gý¤tº¿?õî“É:/EF릘ɻ¶žŒú%;¨ü û’eÔ§adtSÌä}]OFÃ3Y‡³³Æˆáë|2=ùÅÈ覘ÉVVßÏ•Ñg²úŽg‰DFE†‘ÑM1*V“QYÂ3ù8Ïäã0Â3ù4 ÏÔ¶ÅLi=žÉ§%<“OƒðL>Ã3µm1S^gòy Ïäó <“ÏÃðLm[ÌTÖã™|YÂ3ù2ÏäË0Â6U¿-rJë±M>-Ò¥i¶É§Qئy×-d4¯Ç6ù¼„mòy¶ÉçQØ&ôòÙRFËzl“/KØ&_FñHË(lSõÛ"§ºÛäë¶É×AØ&_‡a›Â¶˜©®È6µElS…mjðMa[ÌÔÖc›‚[Â67ÛÜ0±§°)f n=¶)¸%lSðƒ°MÁÃ6…M1Sðë±MÁ/a›B„m a¶)lŠ™BXm aÉ®¦0{ /[Fe”]MU6ÅLAÖ㙂,ᙂ Â3…8 Ï$›b¦×ã™B\Â3…8Ïâ0<“l‹™Òz/Ú«Å5u®qM=kŒ¸fiÃôoa[¬“WÄ:yÖÉ£`< Ö Ûb²"Ö)‹°Në”a°Žl‹uêŠX§.Â:u¬S‡Á:²-Ö©+b¶ë´Q°N&ïS¶å‡ÚzyŸÅ-Éû,n¼Ïâ†Éû”M1Sqëå}·$ï³øAò>‹&ïS6ÅLů—÷Yü’¼ÏÉû,a˜¼Ï¸)f*ëÅGu®%yŸeøh.?5>º<öî‹ì£¸z*É¥í[m±ÅI~ä\=šÂ¾JC碇³?{o^¼‘3¿w-ù>{«åÂé\ ráô¬1òŒôF†É3Š›b"+b¸ëÄQ°NëÄm±N\ëÄEX'‚uÒ0X'n‹uÒŠX'-Â:y¬“‡Á:i[¬“WÄ:yÖÉ£`2L.HÚ”*e½=n¥,ÙãVÊ {ÜJf[Ú3Õõö¸•ºd[©càz½‘ap}Ú3µõrêÔ÷^"£mœºÒ†É©K›b¦êÖË©SqY £Õ ’SWÝOÌ©[{Ïu/ÁÏ;Ÿ@’[ ûª7N$ù‘sõ¨šñ}õ©æ$ù‘Ø{‰!¥tæ÷µD`àçcïy5ÙҹȖž5†lé “¯™7Å:uÅþÄuQâ:Jâ:Lâ¹ÚØBFWìO\õ'®£ô'®Ãô'†EØRFWìO\õ'®£ô'®Ãô'ny[¬³b⺨?q¥?q¦?q+›òCuÅþÄuQâ:Jâ:LâV¶ÅL+ö'®‹ú×Qú×aú·²-fZ±?q]ÔŸ¸ŽÒŸ¸ÓŸ¸•m1ÓŠý‰ë¢þÄu”þÄõ§ö'þŒ¼÷ {ãÜó¨ßÇ:OÖdÞûÇç"öÞö>…TÕœi^JVϼ÷(¹”çcïe5]Z]`£õ¬1l´ÞÈ06ºn‹uÚŠX§-Â:m¬Ó†Á:u[¬ÓÖÃ:Í-Á:ó†L/ZF›GnŠuš[ë4¿ë4?Öi~¬S7Å:(彞Œ.Á:ó¢¸/[FÃ0û‡ê¦üP ëíjaÉþ¡&ƒìj2Ìþ¡¶)fBY¦ÕdT–ìš8yÙ2‡Ù?Ô6ÅL-®—S×â’œºÉ©ki˜œº¶-fJëåÔµ´$§n¾Yå…ËèOÌ©[{/®í£á4ö^õ¾ÝIó5Hò#ç">ísôeF={—}¬¾I gNÅ¿ø–%?{o«a‚úIÙªÎuôF†Á:m[¬“WÄ:yÖ)£`2Ö9Q[ÈhYë”EX§Œ‚uê X‡aK­+bºëÔQ°NëÔùVÌ-d´­ˆuÚ"¬ÓFÁ:mýC*£[òCŹÕöé\ öéYcìÒdÿÊè–˜©8¿Þ~vç—ìgw~ŒýCz#ƒìªÎo‰™Š «åÔé\ rêô¬1rêôFÉ©«Îo‰™ôA®—›ìdIn²“1rêôä_½×ª¯ûÔ’ŸU©`Þ»ˆÊlÈõD’9G}ÚçCúH’?нû}*)¹v¦Bbñ)¶çBïq%Ѫs›õLèÝ2ª. 2òÛB¸"Ô‰‹ NêÄa ŽßꤡNZuÒ(P' u¶P'¯uò"¨“G:y¨¶…:yE¨SA2 Ô)ƒlRÝ’Ò¹Úö¡âê‚íCzÖÛ‡ôFÙ>¤2º-fªë¥Ô¹º ¥®¸6FJÞÈ )uÕ…m1S[-¥NçZRW¼#¥Nod˜”:Ù3y·Z|TçZճƈïõV«¡ì›Kóh$YBÚ׿c} É«GÅ•}H±-H{÷û² Î+ħÖÂó±wY-ͨÎyŽgbï2Fš&FÿmŠu@E­¦ÿ¬ãà XLJa°ŽlŠu|Xëø°ëxëxëȦXÇËzXÇË"¬GÁ:q¬·Å:qE¬a8 ÖIÃä‚ÄMù!ŸVÛ>¤s-Ø>¤g±}¨ø<Ìö¡¸-fÊ«ázk®×³ÆÀõz#Ãàú¸-f*ëåÔù²$§Î—Arê|&§.n‹™êz9u¾.É©óuœ:_õV«êí]róªE<š÷r.Éœ‹£±ì[šç1>{{ç½Â§3<Ö‚€½>ô¾^ºf]”®YGI׬¥k¦m¡N[ê´EP§ u‚ê¤M¡NpëAà–@à:Á uÒ¦P'øõ NðK Nðƒ@à‡:iS¨ÂzP'„%P'„1üQ½‘aüѼ)=d½íCA–l 2Èö¡ ÃlÊ›b¦ ëm qÉö¡Ù>â0Û‡ò¶˜)®—RÒ’”ºI© i˜”º¼-fJë¥Ô…´$¥.äARêBþÕ;­†Xöùt·¹ma_‹÷N%ùãsõhÍû()-*öî|Ì!Ä3·ñ ¤Ÿ¼¯·Á·.Úà[GÙà[Úà[¶E:eE¤S!2 Ò)à ²-ÒY±_uXÔ¯:ŒÒ¯:ŒÒ¯šaK­+"¶é´QNé”m‘Ί½‡Â’ÞCEé=¤72Ìæ¡²);$n½ÍCâ–l?Èæ!ñÃlª›b&Y¯¬Îµdó RH¶È8…d릘IÂzu–dÔI$£Nd˜Œºº)f’õŠ‚è\K2êd¢ z#¿zŸÕöj‹œJ²”¶ÏNÜ©$?r. η¯Q¥ùÓ¡w·o¾…˜b<ó{WKµ<{_¯(\]T®ŽR®T®n‹uâŠX'.Â:i¬“†Á:m[¬“VÄ:iÖI£`< ÖiÛb¼"ÖÉ‹°Në”a°NÛë”±NY„uÊ(X§ ³{¨mÊI]o÷Ô%»‡¤²{Hê0»‡Ú¶˜©­·{HÚ’ÝCÒÙ=¤çþtõ¡îëIsæa¶}‰~^G«Gƒrlí4 3ï³Ï¾•gƒAo/îo¯ø­ß{ýWk:sú¿ã輩ôçJ<Óñ>—4KÐü©Eî­Dù5D~ÙÏ~BJõGÕ¤Ÿ/£þÑœÍö˜ÿëŠøÝ§Dò›ë7÷W·Ÿ|>óçk_‘<{$¼„óëwzüýÍ›‹ûë›wçvšŠÊÝ¿ýùŸŽø›«?_|¸»»¾x÷Oo>ÜÎnþSSã¦_ÿéê¯×üy¨Ÿc)-”«ñt½Î¹í°«úÿðz,ókú…–ãï_½¾úæŽÝݼ¾~¯ÿ÷Õ»‹·W¯ÿz}õý?.äë‹Ã•½¿øöŠB£óšàö¾¾¹}}u;}”ùïä£.ÚúŠöÓò;\~õð¹{üó»ï.^ß|¯6ýᇻ¹y‹oµþïáç—?üá‹sJ—CAøã§:cx¥Æ‡¾¾¹üðVŸéù{Yïøèënoq›‹¯ôÆùŸI ¾¿~}ÿEòð½ï®®¿ýîþôØÝw7ß{‹ç|ûáêáøäüý.Ñ»“ø­ׯ¯îžø>;ÿúë›ÿüûëwú8Ï×>ºù~ÆtÉå°Uàá:C:ì·zø¡>Þè?zêwï.ÞŸûææë‹7ºî/ÞÜ=u}o/~¸~{ý·«×G¥}ú#~‡]9œ<ºùzú³Žÿùöæí¿Þ^¹˜ÿýêþþúÝ·G=uÿã{ý¥~Ä×on¯¿½~§wèïk:øãéÁ;Èï»oñ0öÕWÿñG?>òÑ´`àÈÖÒnwõöýŸÌ–I˜Ÿ>;çÇûÜÇu³Ûýõúîúë7W'r¡ç¾»Ðƒ¯Å3îçã¹@ÕÜݼ{óc?í Ÿêƒr7{Pº8ºÞ÷gG³ûþæîÚŽžçzÚ^Bjîx‰x]ü%õóã/1‹z3û‚”3/iïÒ,Ùþ0—ÔÙ6¥%s©Îd.©ûT}òñì¼Ä}®Õ§G&SÇÄ´ðÇÊ—Çß^Ý_¼¾¸¿8jâéHÈ~¿¿}ýÍWÿö§>êË˯þï›Ûÿ>ÚVœpñõÍ]Äs®ç½¾ü Öìâþ¯ßê"zu÷×oÿÇoߨM8|pr2ÖÇñGígoU>Ü^ª,}wÿþ«W¯Þ¸}³¿¹ýVDÿßÛk|éÕ¿ß_¿yó/˜dæCõ½¾sõœÓþœîâU¿ÉþÏîò÷¯¦ÇÀÑ·Ô›‹¯¯T«üåú¯WoÞÜìüÇõæÃû·7¯¯ººþâøx»úîs¾¿¸ÿî°Ìo›!–”]Î-ýN“7(‚ÁÌe4§å+}&¿ýý}£/€7ºó²‘³¤ÿŽ;•)_õOw±íkŠêN¨E̹î.wA]Œ¤p–‡œìâ>…Ú|;;÷û‚Ê™»rv÷!íܾèL<±øÃÎïct%fœª¯%üXÊA>ì]“‚ïD=⾺Fz¤JðµàHÕŸý|Cÿ=švEgÕŸª*éú–Ã.ä}«½þjÚ«UI­í$Úégç":þa®à2ï DL¥6ºÏä½NÔ¯NÿÀTzý9ƈqTO(ëå—ì1uЋ,UÇ wqv®:V¿¸ûËÎë­”d¿£?轞QÂô ÿv²&ñ®õZºcæ9½{§ž“ºÉjëÿzqÿáöj ŽKW% Ò®öøòòîîîÒþÍË#C×Ì{T÷¤†Pc |™Y_3ÛÌäæZM©|yÔL'r9MoÖëpÕ†=>¾8‰îè„…ÒæÕ¾Ž_¥uƒaþ_M>}4ñúPÿ¸ó&¬ùªÇ²k!fJ¡µ”õPËŹÊCü‚>ìÙúËñÊ¥:Çyúµ$ê2ëqïJK‡ZPûy,fÈ‚ô_±#•¿—»üÎþq—eßÄñuŽfˆ ?Yx¬Äšõ˜z唪€Ûá¥è!= « SvŽâZT.ƒ.ú]q‡ûÀbÐoVE4Uo"Bâô.’ÞO«Šr‚âˆ] º¬|ÕÇäZ¿êûŠû#¥Òe_u.ý´¤\=…UŠb‡XR˜ÒGá'é¶CÓ#þ£r±B1àV×x, …ï°ÖfÞè_ŽOwö’e. &‹ð€´êüȉdüm÷Å]ùyŠQT¿|ùÑ’™…Ó&mÉgw&û´»ØAŽ« !ŸþÚ9þO‰^—® w”\§š"Gý*Ê|}&Ú$×&g*-Ò|áÛ§³é¡¾™2~ã¹éœÍ$ª¥õ_cã)­xèb•,(MªÎÀwfÿyþWíêÏœ^H¬ö5§S¨3““ ¦tݨ_£¿®¡d*e{@ªF*ïáù TŸ–©t^~Ò_†‰IVÁKË‘¦Ä#œŠï̾ ÿÕµeVÃã§õHò¹~#úi¦Y2SÐ,™?¢ë…¦Gõ‡ð ÌVwÎt˜€éåDçÍŠŒK˹_çÎÞ6Í>Ô{¤5qÁG~¹4»©èðëýÍϯöyÈ6Y åøã‡Óû¥¸êù¡¾p¾n³\NÔ0MïŒf[ÏnzóŽPW¸]U¡À·¢v;@9UÄ;¸j!ÕæÓÚïß!ÿLP`ÞŠ®ÄÃý"åô<Õ¿õSoÜ.´¯ ]N5$×TþõÊÔ< ¹ì*—˜*.'¦Eì®°ìþÏg~FWxAçªù !°6'‹ó<’}C=W§±ìΧ§Ìµëtù~¶¾<ùœ0!UUÓç”C73ä¿’‰«³¬;Ug4”.NWÕS%RÕË/™:$ékæÖŪ¼M+*[¯C_hÓu‘øŒRjª( ¤·àzõ‘æ&q§:@½}_çˆ0©¶5ƒ%I=öÈy}4*ENõ%Àü4ub¬^à0Åèu±í°±ßá‘Bù‰*Ç㑬 &ë•¿ÙÙ+ p%•ýÚÇžÓ,âô¸?tIh±sõÉ÷@Ãq÷Ò×Ïã—Ï¿š¥!õÌ«FRwV]\Ц¨Nh]ðô ¦˜©MÕ ñ'‡T$½úÒ4 N-Ÿz¢?ÙRà ûÔ‚G*÷XÔ!Ø£Ý`Õ¢@G˜œm<Ìž¿ÿáøKßN¿½¸ûï?|ñîæÝÕ3ÆPßGµ“¹; ½"_Ôå=SX"A ⃶¥ßæ¹`^¾¹F`aÞ>ÆÿªCU;íË##4¿ÏèÅíq•<¢»OŸ¨º€þáóüÝÝýíÍ_}urÓ³N õfG´ß«ÑS§ªúGOøÑÊΗǿûËè¨ØÍ æÌOøññ¸šƒÚ`•ꪫͦ d&¸!ÑåÝy„Í­œM¿ ^’ý%³Cýü§`úœ‹Ë¾O¾¦+`ú¢‚½~êásO$úàKzpº6êp%‡y^›žÿ·Ù-?&‚YATέKà4R% x%X–jwœš«Ú¾œ3ªß~$,Ç©ê0L"q¤L14COxW/?MÇ? nl${wª%v_>¯oÕ(¦OܧfU•Òïs©%¥!,ª]a•aùrt}óæGø-ó@*Eº×™ç´(âÊFýàï€è‚º×.«6 Õ]Ôa݇¨*]‡ž  C…:Ô RÝËpHÖaÔÇ Û¯ö^GY‘®@Q÷Aèº@åùÕ¦Z¾ñ2²xQk¼:©‚aÅÔ˜®¥:™úux*å竟)zRQU+@j¶}Ö¹th!ô’wø¦upèÓ‹ äWˉõƒ °A¬ü81¢nh‰îJ=Ø >Ž~«ê¢Q›†8éNÔE½¬¨çóN!ã*ÕØ©Toá«Tð˜Sðg’TkªƒQEÑó¢A+**Ê–„)»¨W*ø~½:\§Z‡•?2ru¦Þ?ÞØN¯ â:³>=˜Û„ŸÊBò\º(æìYáÜêÝ«–P<­Ndb®M¡?±.²U—âtb¦>ËW·7Þ½žüß*j§G?^A§üÒÜž”fõ ¯„³ت^®Þ³Zfê«…ÍOáñ,„ˆ1Ö‡—0“ãu ßÓëA/uR¤cõMÔIN¤®:Vñ«:ÄÚ)¼ŸñK }‹>eEàê6ìSÓ **øŠ¾……:nXh:V$úyU!ÑwîõJ“z8ŠªUWŽ®•ŽõŠ3Ô+I¸¢Š¨dµ9õr’Ãw"<(ëoz£&Ø:Öß|®~¡.TXî¤r«.M][¾â=Ç8]¿–¯ÅªKUÕ¾¯êCl »myýL=1=æ÷ R6zÛªÔÕw×±>Hu@£þW1¦ŽõRœ^R‹˜JÇ‹,êa@šàÜu¨‚¯Žgpª_ðšô,„;©,Ô xP­"$¢c=7TŽ+HÕXWÝ M¨ÊJê&ýi•†+îÑÔõ8÷¦oZ;дfÈF9vú¬Uu˜¨Z2áUª€[-ž¦jÙ¦þ¼>ĉQEª€~ç=¼¨ª´áuò…èë…Ju]Ò4‚&T©qú*ñ>TC&,-WÕqE©?×=¬Y„VÜy};ó«BTÆX"A‘*0L1$ ê8aùè8©èb¯0'd½¡˜iRUq×1â䌮ƒ›R«H"Z^@TÐRcà·ˆý”ø4#<§C½+laD/W5€ËøµEªcµcÓ"¨o=›¤_YÑùT)8Àt<µJQõµT·3b1:FxŸWðk:ˆ°©®r¶ì²^È5< ‘¡1Ô™zÇo …‡êî˸<­ÒAÂù³áŠà1꟪~òVÏPŠÑ Nlꇒ úœÑÌ“ƒ:„zIPø Ã„?!¸-¦r—m„Æð©J„Á}ý© ¿\«~šƒÅU#&ÐaTUè1D’V@”"àÑL‡¬o›Ia9Ó'—¡º…:Tµ©Ö€s+ŠÅm=“& Ò«Ã ë!XO¤&gY†“r*/F ztdêÀÃ)Ñs+X5AT ¨óªžU2†S«ÒOIºVß#ÔVÂñuC±pv\^zéªVà?¨#§b§C8væË;¨&ÁúÜêl8¡iqðùUß{(Q®‹êýÔ }Á’œž”dº’ œ¬…ÓJ?.ˆþŸ9¡:B€,˜‡ŠAysañ©>`þ-FºèÕ³6ç—¾Hôæë‡6Óôq4W쎵‡¸J0¯[¡e†TÔÉ'W(^Á¼výjA=L>=œ’šÍá׋T—‘ߎàÄ®¢‰ðu=8ñXÂúãê8¨Ž5|uæâ›xH¯/Y>‰¶¦{ìë@'QÔ¦Uâ+´ºŸÖÒ=¡µÏ«Áž6{Úp¼à€aq껀¿5-\8]*6ó¥ ¿K`Þlñ{u–¼b‰I58}PºZ9UW+ºZ‹ Á¤st©‚œ4’3sÔWžé,'ÍÛâŸt¥ž1iDýYŸ»¾Ä°á´)î¾Öƒ®dtù ‰!g¡ô4Ä4¥MJ7º¦ëaÍ}>XC6BW_lá`A%ì Pc=AžY3³¤ˆ±»&§6ë‹òÓPëœT¥V8„²ñ;8Y¨¦RJ ú0„¯“v D¿j{Ø8U:ªå€]m\R° . ¨“–wØ›£ò&H‰h&ÍÐ|ªy¤Â=;U} rnËþp²Â˜¤6îFe3v´Ù:Um R¨ÄL IIYª öN?Êt¥l”êD‡ˆ†Z<°§ˆ«·- K9%ê5µFá)È«RïÍ!Œc¡ðK‡ú0Œpku8”vê Âúá§°:Õ‘uhdi¦YU&Må6 9$é’‹ÞóôJU‡ÈrI; 9Üô·Õs(¬êVb}éÓD‰îªN«.yuì+üFœÛ¨€*À§N¬Ëˉ- ã劲FéCÜ#[NŸIа %ǪvRÛt¬.úptÞjæ8AO#óÇÙç$˜Š´L‚jtCÓ Çú’8=œGW 9_*ÃM¥)á­T¾"¶†kÀ¢Pç!©ÞÉ–XU—¾GŒ‘áæªÎÔq ~ <ƒqèÁ§ h[ Øäª¿#A<Æ>€p.:vˆYè9{c‡ (¨÷©RÕLE4NÍFRÕ_ÛUo¶hcp.œS ‚ïè³mú, yq*ê-Á(\쇆ø£<]Iá$44T»^§Ž‘~„1¶DŽ® †¯â÷‘ #Rñ!ùL~afJâ!$VÀeÁùú¼ð®‡ ø§!l³z~|qa\}¸ÈðÄØã¡Ê÷—3Â1äÄ8ö‹A§ñ%£7* ö‘h×à FŽ‘Šªª÷ÈâÄ‹,°Üб|qz.à.6±@¡ÈK°HlºÎŸH"ÇÁ# źG|‘ Ö¸"$]ù"ë!¦× Õc³êUÇs(È žá¾#ÊŒ­U) !Ñ›P^²…˜¼Xl.7 C ƒ©‘a*¬{N‰ø^ Œd©Ãø_bà+Â2DȨCƒçRBŒ@ýê¨~žFà 1_D #¿~Ò3ByŽ. ç€@0¤"&J3%Æïðz=BÃ¥0Þ‡¬VaïËŒKûw‡áÁýKù§±¤aS}4UÕe… Æ‚°êÑ  ʪõ9Ø8DƒõyAR²…ŠÕÇwq$õRtm4ÄÖ,.¤â 3ýbQæî6$µà׬õŒ†à0ÃBQ*è2÷u1¬V,Vc pÃ]$¦Ž*T2¥"Éî,hš3 ä~¼GSõL4h¨·­I%€a4ôd|`M¥ƒño„¤àègaø©Aˆ ÜM[Š@(ðꮬYu„ø7P=g pÞ ƒàtš2‚µG<1ÉkÒ3ž†SC×ÿ.ô›u ¶lñoFÉÀéõøw` fáï8…Ý@º4†À+âÓˆ(â¹Ôh±èaÄûi¡ àœÂEöà‘¨¨F­ȤÁ÷,ª®ÕÌ#Ë":¨– âÈãqA3Kƒ®&s+Œ6‚Ÿ©òÃäPÄ7aþ-’úDҼȋ–Ù ?›Û 7!ó,ÐíT³Ÿ>àC¢ —>%s;ÊtñÔjn'r ‹”g &ÖêÒg,_È<|Š+Û:´R‰H½‡ ˜š-´­?ž!¡muÿ»èHC ¨˜am&a#~ Ùœõûìú9ºDáÓº‘BW¤ 2ÐÆ^€\TDR·ì`ŠpÇú.Bb&v.™ñl¤À©tcßÂÙN¯Ò5éœïQ`/XŠŸ†Âu‹àeeÆ;W:òÕÍeì’Y©ˆÔÌP°>Ö°u&eˆXflp10^‰ uœ+£•pY"õ ‚•ÉÛÖãŒuVdéHáʈ“£“¯€Ê¬«TGZ5`.4sÄ(gc˽JµZRåð™2]~0åH`ÈUGbaz•hPizw…A&ƒ¬¨Œz2å*Vº`€Bui ïŠKŠ` ‰›dÈ“zߨàICVøKòã‚0³úJª@[tôáub]Ñ¢KHZ0‡½‚É–îàa¿^r`à›YxC"‚Ø/X4ÃÓðôER°%º˜sbÊãUÇhœnÄ6& ô ”§hY`… ‘B¡ºÓ'å+BˆˆxâR) ž»[ÉsJ‚Cɸb‰™²ˆú¼¦¼!¬…9!ƒó49b W,؈ ÈsÃPÑ«Ø@,‹J2¼3¬!’ªF)Q¤G‡dÙˆd`oTÆjСÊ0æ‚ã¨$.JXùŠNaÎEh¤óPÁQ¥«g¼êN˜8ªÃ@Æ„ª ˜rñoD¤rRÇn ‘ЖH÷>2ˆƒüb}ÀˆÊÀê7ddÄ’s<‘¡RÏ(NSïIÌ’ÂÉX~`J_°4?€OáÐçnIŸ† õõ~’Êq)‰uÐl ÉÉô‰cì£ „ • ˜@tâíóد*PD<&àëaÕý&€ÿ6rQgPçºx‹° u(ôïÚk ÙPF Õ&¶"sëC4fc—¦Xb¸±Ç`ÛðYŸfì¢!¦Áq@ú{x~$$2ŽqN .€ÏÇ‚xŒŠ´G:>Tz_¹ˆeÀ—eŒÆB¹zCª e¨cÎLEöÝÆ1²ãvÉ>wQ,˜‘¢…kÀàR²EkRgvøÕÄM®ÍÕ"8wýø¿`á~꩞…kH’ËÂÐæíU}mC{OOu ÃÐÑü=8¬B… µŸ BG:{Mí7ƒÐ•é °ó™þ|½Úß6bÐøi$6ª…g ºÑß«êa0 ÷/R¼„öô÷ ÐÆÓ¹£¯€(t`âB C‚Õ¦+‡úºJ°÷ÎHteîB176"â›"!“‰5ÂM T–H\@hqèFpêÔaºœ"[‰qèÈ”E]ˆCg ˆÿáãÐUT ‰.D¨à”‰¶”…*b‘h¨ªþ-]N±©‘hæ¸k†¢ š–HLŽä9BÓÞa(º£Sÿ’³ÂÓÀÎ2:, ÆÄ)f|d†½ZîI!‘ÃàSO±(ÃE=©¯LÇÒ\ñªØ/jþÇ®LÉÈ[±°ôÔ”ÖÒT™#øÇÌ—dQ¯Òc¢¼\ê‰3®Š¤¦ÕX€«!“‡i7‘c]Å6#Ss ƒ^È2öŒÉ!Ë9õ¬žÄ€vÙySØ vdÙ03¨0ØÅ˜3‡2ƒ]!Ǹ!‚]üœyG@è‡ó37)2bÀ´@ä.  ¼f6,Hã‚󂬿FYË“©Sñ pHÌ«ò ¨§fIW™Ñ‘ÔÓ²ƒ(ª,i+XŒEÏGÈŸÆ}t‡¥ÓgëÏܽÂqñåÛ‡qD*0sÿ„c3k–ïðÉÒ½ù'*1»ÐƇl1f V: Œu1CÑH›Œì!éµû¥'8úÈWd¤¹ Š™"i yÕ²<é-àÇ™aiÞÂ$óLÂ,ôJ›’4Ç‚uÃ$ÎlÞ@=Ç 3ÔÈ„E¦DQŒ fÀóšþҳŘkZyÈ#ㇹ¨Bo\ sUÅsŒ| Kgõ û ByLwµ°AèŽÙ°c]æ=[60ì§Ì)fÔ& û3_ Á#óI1#×ølš}¨ï^®¼ËÓ`¾e²8šê×)|é±7YÎx`Mqœ%÷0šh&ŒW†ÑràŒ]„… BËlÉÆ8ZU¿› ã‘q4ÂðIã8¤ÚWµŸú‰a´lãdv3B†þ£hŸÎ½ªüVžE]©x&BM¬/¤¿ÎX_Ö]›±¾•>à‘õµ|Ã#ëkGÖ }ÇÃõmÅë8†ñ4Ö×~¹ˆÖ7 ðz$}ƒ;%}Üþéà}v¢y"}+@È€¤o°qž‘¾·Îù ‡ ¼48ßþí–;åk3 ëÃ(ß>FÂù6ÿ„‰:ß‹CþH÷⊡¹'ºwÄè^~Þ©^{¨¯Aª×žwaîTf®>Æ [U:ыǟÍY%Ùí Ö|`v^°T?†l`Æ ,ˆVë813ŸcÈü'¾Á¬P<#ç[>$.ƒ`'ØæPì|¤ÓÀ6«®âX}>{Îàpù’ !ì3€Æ šiŸ‰d4I ïÓÙœ<òüèYé'ÐV#\‹qO[¼}ž»\Ã^gÿHQ,f°k±ïÎ,[c‡¸ýA\C"±TjÃ0‘Ž Ðc,Lv5c7¹?ÞH7&ch šð*£üLxEŒ!0<¢cVrá{r‘U‰àT Ð4ȳSSÀW˜¹Ã9‘Fœí~"'&â'ăûö´Cž&½ˆ­f„=|f [~ôD^¬È?ƒ™°®£!”LŠYžšî~>n`pVE:-7§Ûº€DVÀä½Ðÿ/ÆÁ'žôÛJH¢˜ÀÞ R à§W`ï–·ö-5Ø0ü‚Ÿó3›«“OÕäß3‹ìäÌ âà‘Éeôêá¡ÂzuõË ÉwŸ¹™Á\ÅeÔWbYÝ©æ–sÓ6öz0 *‘eDªƒ ë!ÜËT‡Ðqhšˆ½…¾‡é<ñ²óÂÅw¼Ì[ÜÆ9ÕAóŒÓỄ̙6ÚÓOòFÓO€EJi@mDذ@Z"}hØ çÈ|#õ2 =7ó IøCyyK¤I“b ±'ç0ªÉÒV\âªdk‹,Õ’e@9±*R*éô aå<ˆÑ[ˆ^¿gæC¬wÅDÛlI1ÉüÛIÌïsʆÀ“ dlJ{°à^®´Çç“-ã®2yþ!Ÿ#½lW¦¯Ó¿CÄ{k÷Ý ø’F†Å-ø‹Ø¼mª¹ÅÈ z¥ªöü}ΉÍÅÔ;Ò7wRùæÑ]¬flª@O̾ ÍPן«f^"âͺþµX‰Ã¢êž_æ!ªŠÄýÖ=&¬7oǰÞ£T3ƒÞEz1šÙ¦f°cœ™BÝÆµ™û˜“YiD:fG¨l’tÚITõÇq ifí‹·P{ë–]-<]J—Í›pô!u½æò¿æS2M‘•ù”ÒÇ2eâ¡GûN㆙º×ƒ½Ì¼¨,áÏ æMACYb‘xÓç¾ôüP8çxˆIÃx·ˆHe•Û?2âa&¬BÙ­d¤)Ò³AË®kÀ'ó¨ › ÿ‰Ý6RþKìâ…ßteîÀ (éLæø)øî‡vÈ•l7+Ž!îƒU¡EǶÇÎ5á;ªÀUQ«Öœb*A\f6ò 9['¨]!¼šn"R£9‚Œ¤6’Qèªû¾U¢Í$ɨÊó·³cÕ ˆ˜HƒF[5xlL€t¢Ò ¯I€Ä´`ž*Š,`(@«¸\,s Ü.Ò]ÒKFøñ,ôà&¡)"ĉϯQS L ÆØÃ‚%Ý`L‚Îh ±ÑJƒŠ ¢BÔ^9Ó>6DœÃo¼bâ;¹ÇPcBR1£Àºh,@ßJ¶€¢yxŒ™©Û˜Éq‹ê¤{kSÐð0zÚÇX§p¢M ªÙ¾Rú献z‹Œb ý Ç€Ò }‹HiO±ÆxÚü‹$G±ï‡`Ot6n ~\íd×-ؼý$ò kmvמ»Á‘x°Þrƒ[òöàôã¼Xüï†ùÀ–W1Â¥Õ¶aèá³W1߯…ñ\ävšø»— ýã38èôaûŠ)¥YÂ4·ƒn΃áVÒb;C0V7h[¡”³¥Åâ_,±³qè§Ô•Ò#6Hú‡{ ¨™nÔ—A€‹h&tgm–`M©p¶é"nH…ÔUL³T F5jî&# ¡t÷ä%ç~ÄgÈl£2·Õr= zˆ¢™ÉŸL:w”ŽÙXÚ¼ÒäW¬ÌÀJ»ÇLø˜Á|€Lß-Úö dŽÐeÖœé'l £–˜YÉl1ÿ®2PZ¿ûƒìþÞif µÒ߬¯–mbCˆbªHæ†å2ùÑžU2(xmòÌÀ‚pd2J6Y.n„Ofo£EauId͸-˜.)ô2ºÃ Õ3ÍȺÂc¨Á·"Mz)2Èã§Å[z‚{Péd®½JZn¸§PÿF„N]{”¨&¼4 …ò"࡞ìÏ GŠVõåÊvz£=¸IÀ&"EoŽSôÆÓÁáÊžÀù‹¶é`È3B’.D ~^P £ÝØ-[9n´’¹‰9Eé‰CØÏ’8Np ^á’âÒR¢_F±Á;3BΊá ö!{âÌ ×q†dD»9Dè“S¢ÿŒSyD¶p¢#T©ÃÀoä~ÓÇlyGX {°FI÷Ø×ñ <êìcd‡ÃËI¾ÆÄ]6##_<Ö Àûrª —ø`²í FF\c`[$‚a½q\èE^r¶;@Ž$4{´´¦ØoÇ¢ò;ºE´E¸&ÀLä95»E§Û ö™Oc} vÇ/zWz­=¸I¸‚„¬ØíŒDOµ‹ à8áöŒ\3RP­òsDÆä¬%¦\ÍÇ6éèÌQºc–‘>çÙ¨#0§ùÉŸN/ ±zÜ|ŒÜÞÃËZd6.q6%–g'ãXO†¨¸u2eb¦àɘ‘¾Ù¸HÿI¬™ýÉ|ÓÙ0–“anóï1½ö05! `>‚5 MùaËÉÙÔ³aNm>,áädT{0uiu>¬/:ù??ÇatUl¥Žã`URc¤φÁ¼ˆIwTgrB"Ìd |W:-nˆšI'襹´ñgÃÆüäÃXëÇ(Â1"§“‰“ù9bõEãÈô˜ã8íÓl„°ðluÁU édÜæW 9½€Æ@Ýq;Û6×*³±·¢ÃXŸz–“q›…µONu†.''ãêçcSj/X¸Ÿ&ÈcnG× l|JG× Õ»|98o¬|ZÎ6³©ç clùœœ7q¶{rÞðO&. ;pسœ7q½ä“ó†qÊ©;o¨E¹ÛdrÞ0Î9tç Ÿ'Ûç­Gq¬¤£ǽµûÝ{ؘ©{oÂä‰Ô½77„ãhÚ»qÉ_tï cfƒwïÍælÜþ;ypÂ=î¾{o‰ã”ëÁ}´Ôjñà¾aŒúÊ“ûÆŠØpœ»û†1 COîçD©ž.ƹæî¾aN¼æÖ¶ÌqqÓx‡½Âè}`.Ì‹VçÏ • 8bqÔµ,ùˆÅkß27aqT‰`Šƒñ,wãUŒÿ›À8ÓôãÛŒúÔË‘c\²?¢ñж]34Ž¢Êä“+«M°œæ£ÈrÍG4Ž 5:·9‘Uˆc#;gRYîhœÃVsã;–çÌáˆÅ›7Ù›°xóìXÜ4I@†ǸæobiJo±3§Œ·Îhw0Ž‚?)Á8¶¹„C\ÕfÌŸƒm };òÀíEùÆOuÝß«t?Nòrt‚¥\‚€BŽø$?¨×|Ò—ÿßçSùôš/ÏìŽàƒøh oze±ªÄGGXzäû)˜»#‡(¾°j¢øV;á4Š/uÊ{Çžü â s𦠾^©«Ðƒøz P1õ >ίV«ñQwÁ¢O‘…)9%¾…™bk­)Œ¯fÊÀIãc ¼˜âéa|a&‡…¼a³à§0þ•b<⣿jMYçTV”ž¢øhx|â£-Ëþö ½Ú4xod:0Ö¯ãyFâ£%BêS¶Öm92_úE#˜> Ü•Ôù¨‘‚ô@¾>(øÝÃÆ)M˜ÿ/;’_žÁ,°j’Ž”lõ–ÞÓ9Y”EhþÈÉV´côGN¶2ÅáÈÉÖÜ3ô;'[{h©s²6eå¦Eãe3MJNùÈÉ6ד;'ÛX`õÈÉr÷f;r²…3”lç N–S¢˜?SUŒ—…‚g?9ÙDo–»Ï&N¶5îß0JÎ*ýFÉÒ/-­S²b~h J~fp§”,üJé4-(Yø‘1Y¸wcdá%r>²ð‹„! °ÊDÈzúMÂDÈ «Á–NÈöÕw©”}¨æ^°h?SâúÁú•81¬ AЭ ©þ@R |ôÖ©Mà‹D¨“Tø\Ø÷¥“Th”BÞ~FR¡PJð¡“T/¹ntyÎ/ö¬¢vHÕÄv•¾Š©š•ký˜ªYÓA‡´®˜7Ùs5Qþ¶úc®&ê'9ÍՄ˘Ë1Wf{º0s5Q]:¶c®f+¡¦\Íf ª§júžÅ‹zç¨Ûè¦=C*Ãþ¶vÈÕĪ&WÞs5±‚I%ô\MÖ]9äjrÕ:ËÍtô°7Ö|qäj•ñ˜«Ë”4SÏÕ :æišçAÈwÜ$ÊœG™ò4UøJëJ#²2´°Ïb:³†¾ŸÇ^)¬Zg=T&¯Ó6ÆŠô¦sã•S§Òj¾ïêBá‡ÌM‡ØÄˆj­ð¬¬4J<ø¾é‹{u$ÇõRdpÖPªŸ±gìa,8¿ö °L{éy¨{Ùß,75ÛÃèQ(B¬‚7Ї5|ž•ï›Ñy0³¡mcĸ² mcÄùíX•6áAÁog,~‡úZ¹ïbì§4Hîb ;ÙJ¬-©TPDÕÁã.FŒ+ë=Ù.Æ m1›‚›õ)#öã§MŒz}(³…—ÄMŒfmXk‹}êXBcÇb[¨òÚD=©È$ÚÐw1æÖÛ –ö§ƒ°“Cጨê+–ÔOŒY\¯QJ‰^ 3Ù¬¼Ò+IÑ8^bVlƒ6BólòSÇÏ^²ƒEúŒÕ÷Œ½Èts˜dÖ®g!€@“ìÛT@hŽ›m̤§ÅRøÆb4œÍwB ¿CC3¸áT#loÁþL£›lˆªW°·¡Wý¨¨§ù@é½`Yf§Cõ&~ÓŽ]¼Ÿ;vAåävܱ‹ž0}/7NÕÖi}ÇnóæIM;v›µ­9Ù± &DlÃwì6+-vز‹RbcìÙ &ˆiH°¶NYEÂähUMú¦]’Ÿ¸‡¾i—ï¾—4›6î"8…nNÓ¦]’b" $Ö ælÚ´+¬£YϦM» ¨¿@H’-*¦ú¬=smãnd„<¸iÓ.Q¬6Äž] X'}Ù"ö_ÑÀ¾C3ìdEE<r¶Ï!¾œQ¬¸²mÛ5TgwQŒ>E2BW6ìŸvªè^®„·§±<‡’§jYð$à V«¨ šÕÖCßû3î{ù–4O!†^V´iíÕ½„j¯Ø­*›iI¯O¢ I£—¤c ÕŒ(ê¨À1ðS? è T¬•úViåwìê}¯(tB¶>²Ý‘P¤Ž½³V0Ð`9LÖDq{áV«˜iõ}­½> º&g+.Ïú€‰V?Õ©> ÜhÇ®,Ø+ƒ'îºgu@×èX#±ÞʆîY Ë‚U†gýIV Ÿ#š{@ÔÙrl“cwìÿÉ& å`@PN«ËÊêE±ãÃT#Uú3É+¨7~ŸÙ÷*/9*Ôž£I¼uˆ™ tèær,Ð…¦1 tÕj‹©@W륬¦]ìëºZÜ÷Ü‚C}®†ðJíõ¹z‚Í fI«Êò\– c*õ­+‡lì{fJéÕ²]†ød˽€Jž²FÌÞt Ž‚íX‹ª:õq£¦ÎÞº¨ÎMMæˆ[²õ‚`(Ï…€£A²ò\à-C/¿%Sü»ózÍ04OG´Ù=„`ª9÷2ÞïX¸IÓQ%[Ác«Ð…¨š ñP¢ Q5ßKd Ž°®ô]ýŽ‘è\äP¤ëÀ xC/X´ŸÆ €]4S{êC,ö¬À^“¶³’Бµù<úe =ªc+WH;v cí>a ËR–Ð+ÿ…‘&ÚM°0 …<­XwêµqNå†j+-(;[±WD­ä^H0]9 ÷º…ú}x(B̲†/Z=Ógå¢E±âH]¡ãoE‹²ÁÖPÖ4FMÅH^ÐJcŒªÒVY?¨{¤X½ä]ì‘@«¦ÜcÅJCXÁe5.ÕNYMfýÅÊæ^²e#·Å[Eg5‡è‚ˆFÚÉJçÃì5+ ãH#™{­è>#¨a4Ea³~£|²bÓ:cç…¬õ–›¢Çdîí< _W{ ±yo¥®½Î·}MR¯÷©36*p+– /†îHêµ´ÑKÒ¶gX©í¸ƒwƒ V[%j˜E¿œFLpŒ¥¼uNÄ @ÞFK™°Õ€ÖepPÀß± «®ÒB ½#:VÐÃû‚¥ýæîÞçæ6Öåíx¿—Àd6'sÏ[¯Ë+ÄúÜÀßëòë·uyí]o´(½‰:¾wùP—ß—Üëò&£!d*öŸ‰îC/ìß`¯¸ÛÍ óÌK/ìÓH1Ä© Ø”pZ¬_«ó—ÖÛˆ%¥Gö:þS„I*,Í[ç™<ÊÒ¼M·ÏÕøÆxúT˜71|•<äÞ#› 5 ¼ó"Y˜7½s2n 5–â²¢¼;ö-­×äÕåÇöxÒkò £“ÁxÖäM OZœÍvÎr½!¨—í#hpbNÖäÍ¡Œ+ë3ìN4{a•ŒCƒ%èbõÙ=˜èž—©ES¦"ƶЩƒSdHhð™{šýŸ€Zl‡öP¦ZßûÔAŠÊت7˜‚:ŽPÞ½TqëÝ©€° ÎZWeªa0$Ö×*²-]íM¯ð©y¢SO,S³…;§¶YP»È2ºjAí:Öx˺(æc[.g•’¬kW Ú-l%Û›z¹Äœœ©åפf¥ÆcW0lJÎÇ–aDv ë ŰÌ£@Ó`={/2 n§Þ¨,Ñ#bË,NZé562³&gœÜ³3ÌÔÍ´N;tI£C“£—ÞùÅ»gH%ìć=îÝðØéÏ­7Ë‹ôêÒ¡™^´0½á^%üìÉ~|Ñ*¶ÚõÁ:¼ÀÞÎS²¢AèÿCìÉÑ;FnS9v d ý‹{WA˜q!¶®ƒXQœÂšbÁÁ€Öÿar¬£a÷`à[Àûí]±Ä#ˆÞ‘] AsõƉðd}(k¬HO½÷]„'„ñÔ–Þ“µÉ‡d3úWôˬµ#ü/6.ìmq·ðW¸õ¿÷¹…¯‚œÞæ´?NÇÍ,xQíØæ–Í´B;´¹VMj‡6·$ê¡Ë-¸æuõ.·`˜%ջܢ :ºÎ˜nîYSØåÀs¬Ë-܇N*ÍÄî <ª©Í-éþ4µ¹-tP¨{›[x'\½Í-½µ·œn|)‡6·äïdz6·Ð¹È žÚÜFî2vZ"½âÓÞå^ ûÈô.·èsÎÏ{‡[ÓdÖSÁºÜmš$ºÜ‚6e·™Þåö¡æ{Áâþ|^`é/P—eJž{15ØJê²±We‡¡³Cc/¦ýÖ³Cc/„a㬱òz›}~hì…<ÞÔ›k hК3§Þ6ŒqMôÆ^Ö6ÑzsÕÚ3øÌ›ÏŒYÇYkíUmŸUôgSk/$ÖÒݵöºúÆ—3ÙÉ÷½µ—p³ÐÙÔÙ‹Ì…hI¬üÙ{¹°-FÖØ Ìë£Ï{!&Ævlìe11n¼ï½KŒsYg/ÄŬJ±uöUÑ’õö@g/ÆÅ¬“{!,&½Ñ×ÔÙ‹‰ò6·šY3ëìõ@Ͻ`á~Ž>tÐFDCÃÞ½*uDÍýÈ…èý‡v‡M­Á©µ©k Ȳ&íÐS™ð9ZòÀA—CSB¦¥¢ý&}#üœm ‘ªaêzȪ©'"†ž¼óÔ2‘Y¤ùÐPù\)¶C¿E^€ºJê¡Z22#²L]1FÝ:™z:Zv`9t|D2û¬$7{…©]䎹ëhcÉf’;䥳Õh:ÖîÀ1l“a3J57܂Ӫµ«TPƒ-5°vÖͲpŒTkv©×Ç-"±÷ÂĘ»»z«Ì¸³Ý¼µwÒ,}N6c²^›z•Ü^|³Qu ŸôÓ{d!cAPÖM/cí5Þå°²ó.ø}DV¶Ü{öŽ"dC_7Í™:b-+ÇÐüÖؾƒ0!÷:&ûMdŸ³Ÿ°Ã8±Æ)“åùýÄ6°ÖŠ8q ck}ŠûJ‰E¹«´Ùwán]Ž#Ç ö¬òKvRüÓÔb§hD[˜¤3±õ!ÁÍÌd¦žB£€‰íV?—Îv@Ë¡¦C<°/¹4¶Zˆ‰;öà;ÛÁ”$hN²š tb;˜Ò䤳™šŠ1gââJMEUÚÙäK¡D-l‰ç縶™ 䲡/0:dŽ+Û.CÑšôÓ‚{€< æN(€ãV>Xd:Ø2Æ>u˜TÄ2æ§Êz®â\ilÐc ¸t⚺1q£0kJdë]‹çùØXÅ 4R„ñ á1UZ lKˈŠÉbãg !AWÀ¡* w6õ¼¦ró'7ž`Œ°ÐOi4IȹÁ:F9ˉ[Çõ³FÞ?Cïõ›dSŸi‡]±éŒxbÔ“bOšÔ ³:ìYÁîo9CO›FG¢Ñ5`ÝdšUäDÔ3”UÎîhªõÝ uN„s¡C¤©¡P3˜'XnáW°cO8Vp†âÏŽÖ_ßß÷ ]Ô6m«ªCQ@xÆÄœ±† -RÀÏXr°WÔOl>¦?ˆŒRhGì¡PÓÒB;nÐ$x#y¸]«àüLÞc,z”’Dî ‹\>oä¸#Le¥)›ë-X£%_¡¤%Šerë,4eá‚é°„BE pÔ¥Õô¾úà¥ñ×5øtÚažÁX¶Êñ=ËCëkƲ ëèÑXo'º£5;E?JBÌÆj°(z£“¶™DïY³±š,:s±ÚU ŠÄ\,»ŠôÞº¥.ÙQ*©!d¤© E¤®4µ¡€OïÁX62¾{0–|Å\”ËÅQd”éÁØÔªjnJ3¹]¨çb•]Ïd,Ü$M¿Äd¬Šà=Ý1íñK! ÁÜ“±]…ð5ödlS!¬kh26«.tÚ5ÛUõ.tW)%ăbõdlS œ"±Úƒ±Ô†tª<k:;D+OÆšÎ>58kuXÑÙ?ynð.ƒþÒY¦´ñq€=ÑkNfZ"¹6uMwhF76uéùâPM]ŽÂc©/Ï,+qw­É½çKÎaa$ºæøÂbý1ïÚ(v˜¢b€bÑÔ«ÁåI“ ûücaPÚž’FeÄ ¨›ô*ŸðP•ÙŒ?3ûÒ%5Æ;ÞRyx±_C$5U‡×,_o”ȽƥҊG é>PQ+N1t/¯)êŸx™xRô$Wó>à•z.8ð©5´DC¿îš‡S<Š=÷ަÎ,_zIýcAn¢¥—{ƒ…òKœ:r}-Vjè#CGî…Íø^$ìãC´aW’³i òM5WÞ”T?yýü{adA¢z ð4ÕǪ%ÀCÜ}ÌUâÄAŽÝC¤^äI|h¹^å]üÜc™Ï©î½4z´ÈÕ¼÷"o_V“œ^åÓÍû:÷¬k}¨ßJ¬õd¦ð¹{5ͨX«½ˆ‚Czçå>ÄÁéýƒ3Rù¥<Š´ ñ=ÎrÒꡜçI +[;-HäV´´œP5‹Î (‡Äwˆ¼€RèšÑ¶Snpÿ:XsçC}–“P ©™Š!á3Î (†R9™µÐ‚ßàÌ€2hêÙÎ (ƒz‹–qd”B÷ÅOf@)Tt2;3ÀK×S²N ðft§´ò5%©­ü©OàÔ€VþØ­ÊÈ’T6ÛÉ ’€´´s<“iv:7ÀQYÃŒ‘àÂ\ô›Dn€žfkOnpeÝò;7¸êI‰w~puu‚Nnp¹«òÊ ~)÷~¤ùVýòØê”ªWv9X­cÕ¯ªÖU«~-µ¶üø¿´[[#t¿ªz[eÍÒýZ #îWVƒKƒ-JØ’ÆÁF Ý/w·àå[÷«k Eë~­¯†ÌÖý*êníizé~i0|¡’º_C-®”·îWÑ`¹0`é~y°œTÒº_Uƒå‰Æ&º_S@8[»T¿–Çʃ÷!é/ª>Ö)“g(4 ×ë—¨¾ð² Ó‰ì—fÈŠ¶Ë~ÁàP­û5 ƒ36á4çWìW ¾Õp,ûÕ…Ó>²ìWNëÞ²_]c_9ùqÊîr¯¿·ìܳêÉ#…toos¼¤º¨Ë’©hG )!Û2)$úm£=RHPõ¶«…¤‚Ÿë#…D_-G ‰±>)n‡’(î`€m¨ŒG 鲯øQBÒ< 5<ªÓã $žy•Géj’S;Æ’tIž-!ƒ$izdh30ö»e˜Å qßéÑ›„»£‚„\% QÈ UÏD$Cé)d,A·å’’GmÊ´Òt¾¤tÛ<*Ã=Ü ¶R(èl$óuåàZ¼¼©ô~dg€pU h¸8êt¡)‚P°F…&í–I¨:]™´ºHÏîµ…àENÁ|——bx »—•%ƒÀO.¾Å*¦®ã$ÁN‹,'©8m`õ¶<¥Âª¢+àîÈ™’b‹æ ™>£ZcnA5¨]„#_7HU»¬‰ͧ¦™eáGî š ¬LL[dº|}+›Ðã»Õ¤+Ô%¤´X»HWø0óŸ¦Òò¦D»Ã†¯³ˆW`-Ñw ƒO)ëÉ·$ÒUÕ)˜—HWÞ =‰«‹t%â—úÜC´«²³1¼³¨W´>ˆiuB½BpJ=:hÕ ÙÊ ¸a˺~Ž`[¼à)M¿Uß^îwÞNÔL@ëýÎ /•bg½'‰kîõN|ïî$+±Þ“hé¬÷ÄÖšû·õžØŽiÅzOÚ½S¬÷ûqšÚ$7±Þzê5–;aSj¾×{‚C‚ªªÖ;ñ’ÊÈ{½'¸œåžØxá×ÇrO f0BµÜïÌX²võ,÷”­$±|ºïê~µ³àF,—Ô‚¿ÿ q|‚A$é‘&ºD’Ëû8 >!´ ¬‡ÌyŒdD¼à¦z,øû=àU3Ë·ŸŽQ›Û >¡2¾ö‚¿¿Y—ÔÏ‚OŒuHìç{ÕöÁ þáMoº×¿‚A×–{ýKÉð’©= ê0’aj*P Q6Lª!Ø8«Õ¸:Ïj@ÕH{ ½DöKšÓÙÉ1Í 5¯¡}ÀÖaš‰ïb‘\2¨Ƶ6ÌÒ•´nÊ¥ ÓSB€Šššžº¨•ÞŒþ†ÙÑýŒj"jÉd‡t:ƒŒ¨ý4•PgáUoŠ…Ì1ƒ¹÷n&cp§—i`…Q¢'l[¹O£œ›Ñ–Y,¿É×@f/jӲ…öngè W=¿H5†Ó’Î 9ŠÈœ”{’®šúeÉ$* ”™"¥4Ç Š*ârÒÞ}X2W朽y~(ô’ÿ…Sr@y³ü7'`ÐIÜÈë>J:V-œ÷ÏÝѬ`À Gæ²€ÁýMƒ?“L ^UÈÆ¼aš”D¿fÓÎZ›õj_¦Y ¦‡V(‰¯K¥R0¸K8XÒ·3¼Ž% æ]„9W14—öSòÛ ÝI)œyˆÔ#ÎëýÓkXÝ”Mà—KyàŸ€7¸ñ±1y¿8Í×'xƒ(HµÈBö1‡+!À;ÇÜÖÉ0í:äDêÕ—ÊÑ%ü4ë”ÊöñHŸJ5^±K}'1®Ìw!lU‡ÜÔÓ‡Ü0“ôï6ü:Ü›GUå0H‡N¹9?™AÚ~Ûùñ!¥‡©!Ûeª£[Ûêûwdàv˜J‘˜ÛXVa›`bÐ#Ù¨‡½e8µ7Ê=.ÍHé€ï¢ÂÒ B b€6tn“ðƒiß»&Ç6“[ļ~MÑÏÉêÅsb‹< ä$Ñë‡!p`ÊÊÞ7Œ=QOèÐuªfžÐY‘ŠÐ„žn S˜0†ŽœÄ“ÓFOMÐâ»ÄþJÜ,Ù1Õ¨jÞªó´¶f¶zé5˜½%ns%¯²ÀZ‡HMÄÈ>$dE–csÀUÆa¤à˜øa&DW÷ þ6§ÁÕ«„âȸʇâdpµ|4ç¨ýR›BÕbì;Ë&I M“bÙ&éáSšþ¯ƒ¨‘Sâáý±„"Òa’–‘T0Š&²ïUß'büX”ô-ô»|ɾ,Ö\²ßJÆ4ï]ê#ÓÇ@ò®` >XW§%ŸB.zT×Þ†~a>Ž ÈBÂ"ß$\üi–,LýÔèóÛzeXs uY¯4ÍÐN³õŠ˜"ÚÖ+5Û–G×”õÊÒNô²^/Eü}… @s6¬d÷•lŒ#<á8†W´xkÂW%M'ïëkAéÑ¥Ó’D7–W8\’ªÖâCÈze bM’†_¾àÉaÍJ­¢"Z‘¥¬…¦×w²¬VÈÖz‘ RÕV²9ŒQÎ8­ò*fqo‰eNºÅ27¯¸HÄšužÕ8­ŠYèê›2Mpùì"»yáWɆÐ7Exö,uú¦ìuZëU}S©Zý¨.>xµÿ¥„zîhWP, EE2ê'š š„Üå>{yDõÑÊ<î(žªi‘^Ú_š‹œ.*§J+«ŸÂ‰šF¯æº ÅPš(›<âÉQ51ûCµ¡¢ ‰cqÂw½ÔªWV”K 9m¨˜š¤1NÁDM¦ïz‰Ññ‘£\º_}y³V¹4¿ºÔ–](å/Æ„ò®“ÆTµ%»«ºÞ[øL…Rù¢|¼ž:©w'å*“úÔr¾pUI÷¿Ÿ6\Qt_kÉjÀõÑ‚»ÂÞÕÑÈ>FU¥/íágö£vøàõü÷úh.€G͘Ü%’½;ç©‘˜ýQK_EšMͬ(’4:TVTI<·ù%ðÍ%Ÿë]'ÑÚP;- %Z’¯J |Tü •JCøè¼žZ |Úû.–4”º¨˜ÀH¡Ïï’ |´ôõÒÆGË)˜ÀG“´âU12Ä%S&Cd)EÉ”¡ï1(›2ŒuʦÜm£²Iƒ© ‡i×L°ÿÔ²SÍdöŸ÷£fÊ6“:5Ü?S­\3円›’rÿ%Ër—MJmÄ®Œ”¨&î÷ µ£}r®Ò±‰“'bû2Q¥SD¹Ì¦ˆË|a™9Ûn ðþ6Eu!®0E„j³d7mSDY„o˜"jè};™"Zyq&S¤‡‡j^áŠh-l ÀÉ1d¯¶ˆæ«'[Äf~ðž“kD-äðd‹h¹k±sm‹(¥Ez‚²E,ŒÅmeÛ"rOhô$|u_!ؾˆRlÜ$ì.=^ne¤Öm‹è¹X+l‹ØDèh ÷ÂŒˆ„+â2O@’€[»º‹|¹mÙÏõ†¯†jlÛòÃÙ’ÞY–®ˆY49€Ê±iê•bðgÖúÁËýo#xÏ=½‚,§ß!Èð+FÙA¦z‘a†‚\¦ó7B%5B±%‹ôÕâùB ´|*š¾„ç•õ€Bàäô ³8÷ÿÏ ýßËÐÇÌyH{å1sVnú˜9§&sÚcæL‘—çãæÌ°sÌœ©÷d9fÎÉ.ƺä6s¦ló1sÖðrµ™s3Ùâƒ~›9S©¥—Y;2ã"g„›3D†£åæ²§%&1¶›óµ=ÛÃÍïöñrs¦ÀÜfΖ1]2ˆ¶™³¸}3gu mr5¥(:¤§+†—³”K³¼œï›ÒfDÚYÃÏYjٳ̇8 ÂÎYÔ ¹§ í]4ÔebU `—W GgÍÖ2¯nΚ¿e&&Üœ¡—ô\œê¼¾ñäÀb§ÔL²B̾ÀvŒ‚£©t4–™E‘²zF¡dzŠ ¢ó ×0€Œ¸K¸0å=%4ŽñˆábÕL¶D çXNYÀè MQƒ×XôË‹xšŠš„®Ý%sPšF(4:¿iœ_4namc¹2}*ö6ò{Bvø eI|8CÜÅ&“@ž.ÚžÕ @BX%w¾¥€RZrÂÈHJbĊŬZœY"‰‰#¨¹SÝ%·b´ÙƒËjÈiJbF!&Ë·ªHFŒÅyÚÂuWÉØl÷arؕξ’K Ÿ¦ÒYyâñTˆEç§€\åæ[æ8g/Fü§XÖ:5"¿,|eë(1³Îq+% †_ù•𓬽$æ.>xŠÃк10å+–˧ ˜¦ºZf÷]'ï•{o“‡µž)9™‰ß’›­²O!S¡®‚PçíÞÒ½çP¥ö–ýB¶VºŽÚÓ‹o¨ÝgI–m‘š!_Ü}LHê¼( Sa.uuÎ"¾%Éì6õ1Òµ…^ª¤w붉çÚ(†p2òÕÕnc¨l´¬TKÐr%‘ù±ï}ðzÿ÷¢s`Ð%ó°¶î¯:!æ6¶ˆzm‡ÛÈþ™À™Ô»ìÌCna ö¢¾ HAž–î'¦>C¢í¶I.žQèn­À`ËŒ!N[ßkTàÝ{9F’#·“û,šeûÌ1¤@ˆ–5%|>aQu’u‡„8’z3tïòPÚ‚ê˜3%†r»Tõm2¹Ú}oÔî¡ÔÄ}™Y$©¸äf…ª yióhIëùÚHhÔš¹\Èg3*hþ$ÕõUBj—sG”Ȧ{A‰w¨‰dSB€’ºªéçÆÆ%M:­ú8,|ÁÝHaßrØ‘cf—[¼Ô«9/- Í3õÆ¡ÁÕU‚îsÖö2PÉ£TÔɃˆ6ËZQ’B„‡ªI…”e}a?vêÔÞ‚Àg 6pM bÁŒ*»¦”A±¶Õ´J˜¤²lŒ,k‚a!«žûÎ"·¤t_Vx«Z-QÅÚË–7-6­*Hál ˆtWuØísÉ£i†zVþFï÷ÈwèeÝu€/:dY%¤ÜÊà‡æÐ©©’!ÓÆþÙþ S‘¨Œ^–y"7"ñJÒVr¹8·EhˆâAçÒ©[Ô*–݇ÕygÚßõ^ݯ8wvæ’³‰©)S‡¨9É…ó«è~,‹WEb‰Ýeg·Z4ìe×V‹ÞƒO§ø„–ÛsTžELÍþª“\ÐçÐR*!¿ “II‘Å»Ê[È€cùñ Ÿ¯¼)$FîÄ”µºdÂD ô7;D HÕ³ÑÄI,ý*913EpEÞ¢Xºš8sÇ áR1Ù|-ç[°5—cƒI0—æ÷€ä$óÖm¶C[ÑÀuÞœ­¬ëúÑ{ûü‹çý+=ÛKžÆ gæ^òt^RøB±ä_cœ%иD0bÉ#D®¤9–È^òÜ—Œ%o”3÷³äXÚ^òîµ€&ž%?•ä÷–Û¯¥_Š 6#Ÿamr?&Icó$=E–|.ˆÑ\“/¨ß’mÂ$-KÄAßo`AêƒB{åíU òÑó¶®íBFz¼ݦõɸÝú¥¨û~dÂ4òû$ZjûáQèönNv–RËÈX”þª­“xôàð“Öb4.ƒCÚöð÷K¨’«CÌÝ¢Ù?gr IÙ„‰Œ¤ÀìdIL:J¥y9Ö¿'ŸçOIuö”UñA²¢ª?œC½ÊjQ±†'茅ƒ9þiu¼JR'Õ_pôDs”„,Ù˜„Î`±ùƒú×­¹8÷§ìò]v7Ðf&8ZH§W}rÍJªØpg^Ž,ºîÜU™™ &™·³BçÈ®.‰Õ]DãgîMe†¯]Ìâ4«à¦š½¯¡† ß;ª‚ûÞ/÷ß,&´ÜYTkyµ³ôxµËxœÅÎW­¯/‡+ƒŽ[-u’±T÷B§Ý’í,ttXëÁ뜹Š·Xæm/1¯rd×µÁ{‘7惞5N%ª$ÔKœñšt8›$Ó±¶õßkÏ«»WÉãxu·¯n‹£½¸™HÏÚfx@g›×¶Ô·ÏÊM)å,jÕ‹ë¬i¸×›óËš3C'©WõˆäÙk>O,g&Dà¢Æjž`”å,äY¤¼·×19·~&/cºR×¶(÷JžS`Ý/ä_jÎïgÓst‰~“-yµîƒ’g´çp,vñÙG'-½ú¬T¥=ï]uæ¤ôá<¤YTâ¬Ôá ?vÖçpÇÅ>ÇÑŸ¥«0ú+=`‹ôBéÆFs=éEZšÝÚ—T "0¶=) ¥G«O #\½>)Z¼%¥A)†¤wš$³Ð'‹’œß^I‘iѵŠÜMM*3'O“òÞjRJMª˜UŸCÓQbDªA[•'£X›ÄO 9~ÁdÉå[ñ!›]Ú½3à „Ýº‰ù ß(°pÉ(^âqÐf$¼b eî¥ÕQõ¨·»‹ÍU ¡‰eE ÜÚèæ#„©K ®Ñ¦Gy˜x]¶ªÒ)–Ý5²D€ã)JêÆèKú8—ŽT-YÅÚ‚ZÇÀé'жïòÛX&7Âà” Îžç¯”cH¶’€ÐͶ åP–ö6g4â2œRNÙlHŽÛ²BÕÔPàbûØÕ~×€ÿ¬ü(®%Øì¬„k€‡H¬—9B²YÑD¸Æ^ªØªlI%LY(1c¥Ñáf·m&0ˆ’تh”éB”®›±Ší¦HEÜ,$ÞR9åb¬.n> Ï ÑU ÉÚŽ¨BɃí͸—è¬E’CÄè¢BWMAù“-/ŠìöÙƒ7³x†±‹è44×%­ãd–ҒͧÔÅRª²ù,Ò6&^`LN£¹Ñy>n{ç’ô3‹ªci¬ Kcw ÒÆÙ£=b0XNBP+€)Ž9î’!¤™¢<É= =ŒŠÕ‘a ëŠ÷KKeC™Ÿd6%²êósËûà•þKÍé›™Ý\óÁÆË)K®zàòAÛh9Jå0æ,GK|¨\R(G?¢ƒ‘gnMw6LŽÂUˆÚ‚’çp ˜x)ÿROF Ò¤ÙïdɇuH@Gúì‘|Ü5Ý·z4{G1‚óÕ]’FÆa»‰oÐDI‘mÜÅÙ½çÄùF—€øÎ6 õÈ5ʉy²Œa¨Í9†&›O†1=ù…%õvv1%ÀïÜ¢~a PJdtGúÉ+h]—rò ¶Xvg¥äß'£H? …¤3ò НñH'º«û²Ê&Èó(#™@kGIÖ ”ï¦H%èØJžà½ù|ð¢ü÷Ú&+Mßî ‹,³^!€Á ¿B~ŠúP?a×À+\»Y³ÿt¯ö'˜ú!O¸$Èÿ Õ‰P2Õ)BíÕ­Ö'´ÖÈ ÙÐëëÊ zš™}…÷N‰é‰t¿>¡ñ–¢KôD–JÜ¡6çof~åzž=bz=Ÿ†ùëQô犘ò„]Ù ßpªÿ¾¶ì”?y5ÿÒpOùõÛBkèýõ[/±~žxH´å‰­µöíšì¾W_nòZMÆÉž¸3ˆöŠ«Õ'NƯŹ´â¾¯_K>1˜ïkÉsÂæ×çªBZ^·Ä<òÄÝõĉ‹øo×ýºÉ4nôЇØêOŒåëcg›;;ž‚¡ûÙL¦ èÍkzþfCÙ'&Mx½‡Áõz ˜©½â!Êç®ùôK-R~öÏw€ýx…—Òv8$ð„tÅêvÕ'¬Ê-÷/8Tì}[âÌ=¿9ð³ˆú”–Ï ‡ª§’ò!Í£çZ°_K±Õo7SÍó¹—îÚózݾÂ5Ë·k Ñ{^pùzÞ,Âçãù(Õ#J;ªÿ{m7ˆªW˜U%ŸŸßï÷à§oáéß ¾Ÿ÷ì7qž¸ˆõÄé?K«)t¸ž¸Kv÷‰«,oßפi^ÖxŨ“=פiΔÆ79u?qÑÄÓ3ÓòÜup’{8 <¯¤eÚî¸ÎW\dŒôÄI°ï‰q¾^×èV0|â†ÄÖ÷kÒñɯkt™Ø<±xŒ¯Ç[óñ‰±œ~?žåõÄ×1 8£6_ÿFžT¯k¢Ÿ_ßCõØÃ_!.ð±‹þ—ÁÆòĈ7ÖwŒTØëÇ–'ökQZ´×Ew²¾O¦éðýwÉãu~OM«Pö=q‘}ëSx½.™/uÞNLµú^Ïò¦k߯åÖçÿìÌM—õ:Þ6Ï×ké Q^—€ªý¾í®"‘Øo—¼<)üĮ߱\;žhÈá„&žjèy;øŽ¼’æÓêüvñiÄï„Cwä eÚøóÿàuþ·j3‡rHyÅUz~O,±W¬QÆ'x›_±•Šž¸êño×Ä™ëüÆEVjëÖù}6 "_ðñ'Ö0à+fѾÿ=]Í×%‹Ô~Ñiw\¥öû*²™¦l×|ÅY¸Û_òl=±ÌƒÊ+ˆ~¯ó*¹µ^¯1Òë›®’ µ¿â1å Q y?á…÷Óé}/ß¡¹_éõœÖÍ"Ÿ{øÄoÞ{Ô¡Þ^q‘³ìËûå‰ïßþ)ÒÇH㽟WÍ+¬þ~ν¿/ êV^»-8pzǠ诟ßÉ;˜Dïu{Mé3—ñ åìûŠñÁ{AuLbö×ã×{CïšVXc|¿$#lùÆùŽ¥êœßÐc—ûWå>q~íð]Ê09ý€•¦|ü^qû†1ʈóùÀXo8ÍðÛ/ù¿¨—]HÇÞ=/O5´}º3BÀHîΗ§P»<ÕpííPñõäAXâ‰<לk(©¾â!Ëô'nÏmuÙ´Î÷ãê9¿bþÞÏç+ß®É`ÃÁFca^éwi½>qótƉ‹Dqž8ËUî‰Èþ~Éiïí'bÓ>qá:c˜í9Ça}\L•äçœ×«aA‘ò¾å¤–ÆórxìçXŒ“üƒ×ößêÐüU^mE}¾£Õ_Qªùåk¼£÷‹”õ~bK¯Ôùý½Ïò‡y²#¢'׿óöWÅKTNÊBÔÓ;šýIKÑt­¯¨~ÛôøËxåÖ  í•ùŽF}^ih®ö‰Zj¯håçÄ™ŒŒ?Áüž¹ã—Ø_Ñ“R¨+š_§';Å|5ÜP¾ïp¾nîì}ðzý¥žÌ”Ó\/åa3bž²)NkÏSÞß'œ ô_ªÏmzð4Nyùp0äS˜%iGŒ-¸Ç)7AÇ"Sr‰&‰jSÅÕÙ‰²‹ÜìÂ[¢EAB9÷\‰qƒ¦¸PF« ÿ8æ?x½ÿÖ¡¤ XÍä-Ê|4KPëGÿwk–,z$K0"›ã‘,Ju•G²vGÞŠ%“Q`©•lx[¨G±D–HùQ,~†4R,‘'ÓK±ä>F˜<Š%²ëG²Ùm<¨¬W²!ˆ;žãÑ,‘ùÙK³äŽ¥’%=§$KØ0ìd §Ô,AÇ[“v[¬DJU¡U+±79¿[¯¤)ÖM¾õJ˜Gaé•tMm†^IQœq ½ŽÁÁÝ2B«¤»ÞZ%{ckøäH¯¤ýc£ûàÕýK ¹Kµ›ö.£«mî]eOi´S„k†cœ2½XÃU¼|bpØ5>ióœ4Žìä1PY < ã'-0†æác9&WÒQ$©™À0«ºxCÔýèG÷¸LÜRÆG4O3zÖÃÎàŠ¦qzà/ų:éÀ3šä)½ÉñÜàN¶™j@?ÚW68¤!¢r°#tI3HøÄ€R{°)¦—ú äªz¶é¶4ù°W÷XÔ¾ò¤î¬¿Ô˜m]-Û[Ä#Û»c|ØT_Æã ¾k²=;FãW‡îrŒ0…[)q(î¦Ýh¾œÁh¾½øßà¼áÙv_#3­¢Ùv_Á)Ͷƒd]®;=Ü^׺b¸]!»¹gÛû¹$‚Ùžo÷?Ñ|¼fÛýoUöl{r|ßJžmw<ÇŒÙv?Ÿ»Þ³í¼žVœgÛ7䇯vë1àžëc^fÊÀOÓ;œ{]q{ºÝ1»+Óí4 EÈ®žoO gõx»Ÿ{žËü?oS—~XM¸W…h´jº}(ÄÁEÓíùdáL·ò:ÿ­â|}Â]„HÃâT(¸¨§~‘üEÚÕÍtjå„3Ê©ŽÈwÖ<ÅÓ0Àê˺¾’"Ç©¾$ÙÑOq&Aqj7É}œêø˜»öëVÒÞ•¡TDÚ)»‡Ý|a•–ú×:…§8«ãԥݦc.]¥o¢ÏèÂVê'QöfK£Œ]3v%ss½ê뺪–îÊ8E·”Yʩ˥ÛROÙ.U—|ªzI¾´SôK&&Ð,ÓdP^ÿ'ó¯ã_jÉïõò¾-––Ïm.±4-ïKÛÛ„¥ÒúÞC¬”v6+¥•³ÿÀú^{PgïQRJ+Ï‘¯Ìg“TZ}ö@I¥ågŸ”TÚkE*m®gŸ•LZ>{·öbI¥½öjI¥¥g/—TZzözI¥Õç<8TžãBRiõ9NÐIÛ0á>r¤•ö:’¤•VŸ#KZiõ9Ò¤•öœz’J{E¤ÒÆ|Mi¥ÕsE¬´ÝÖz¼KuÍs03FµêçàþàÕþK%ÉjÏù”–dËÇtO?-%{˜î±ì;ãüaº‡,;N3aºÇ]0ªÛt•öQ¿›îqo ö´M÷Pn—Fc˜îq³E¸l9¡À®®{YñµM÷êÝL-<÷ú&*riá¹ç+¢BH;i{î%ë¥Úsï¾bœþ˜îqïaq"ϽñGÂðõñÜK²,öÜËëBñ[Ðd–—¼µ4Ãz×…¼m÷î­1ùB·rZ]P·o}|÷—ï2Ö³ï^’GɱÝ#¼rß= Ìy¨ð¤VÏ‘šµìK\¶×²Ø=/×eÁ.9ü¬ŠQbù„Ch^·ó!64LþÜ9??¬h‰ð'…+gKôÿ±SA³zÜ„t…@®ºŽ±Ï]ÐíomÍ ˆ©­ž•Nn'IÚ”](“$ém4|²ÂI’¤lkå$YÝr$ë 'IZŒ2i|YIj·%æcc½.P9 çc½nÕã¬×•Õ?ÖzÊu¬õÀ€%®zÀ¿ÇSÏoà²'jøê5¡-ÇXÖÉPøêÑ©B†dûêч¢o°}õè;Éf=<õh4)} O=]‘Ê:Œõh$ÕùëÑ8Ò; c=Gy>Æz4‰;߯z4….2Ê0Õ£Á³f;¦zÞÔª$~¶±ÞÏMîƒ÷¿ž?ó/â¹BÎz(Î šta¬Ç˜n[)ŒõþP«MÍ8€öVÅWÇW Þ ¥ïå«—èaS¾zÔw˜¶ÈWïÞúˆ‘³±¯A†°ÂXç‹ÿ…±^‘ËX¯+N01^ÆzÔˆ˜öÚXƒ:J8둵Ç•ÊYïþÜq£g½@³Æ±Ö#¾Â  ÛóÈ´Ã]S'Î%¾[ì^êí¯G Zy ùëÝ«W1¶Áq’ÕÃ% %jëá¯wÿ0]Qᯙ}`ý­ˆ“I+¢ 7ö’%M¨5ÏE¬©L¥‡¿^޼¥|¾¿Þ½ÿüûrÿžœé¸Ïy™ÞwASêÂØáúû“ÜAÕ/Æ×+uâ¢'ó °ëŠªé߇]P}Aý|è ŠÚçK£7L{^3Oúý‹T“qêÐòÀk›ÒÕk‡“ZjmZ]Ô÷~©—ž%}IuÙk¯&è#ÜNZºV‹&V·´,]x²ø© £ÈãÞà~‘h`Ü>Üœ}wá”)…fß|¸¨ˆÜ®{3©5•)tëNõ¦rkóù$ê³rÜûRýzþéY^®/Ø=pÁY‰´¹ ¼ÍZ‹­ÇêBåäèÒÞ—ä Ü^»9ÊðÚ+Ò^»>XÉ/ìµ›ã NöÚç‹ý"fºÕ6Û}ojH›íÖHr¸íF¾^»;öÚM3Ò^»;% «ÝKµÕnwö‘®6»ûC“ô$ÉZV¾’¢j«]nW%M=¼v{$UÝ’V‘˜¹š"Hb+»¯#777KÛ{¶’ìpÛuòÖä®KiŸ"9lá¶»“Å'yüàÿKÁBÉä w5.Ýpªjøû;Q£zyÂïDÞ©?ÒS²W"y'™˜¬e"÷‡LŒPºðú×Mm@Øauž®jj•Ù÷/§Ø³àÄIvŠY“+¨1UY'^NÁÉæ8¬A¾È31vCHbMÞ]!±–Ïæ™åçÀ›aXëο™<¬6£‚’½¦±qºáôeÝ·kxãΗVx4A‚½Sÿ%ªF/¶7˜Ür­z/cšõ?Ë bï¹—Î{º«’˜; û#BSQ—sCþSUà:êsœþ¨©Ý&ï:ä5Í_³æŽ8 =W¹`ô*{1mëcWö_j?0,hJ`VUœ|I©oئB¤ï•B.vY _¦©s+ìNxYRç–1+ 0èžEèrl1àgøK0\“ïÅȘUx¨:Lú§ÙRHÜ]Ån6 ‡ZûšìíFñ”¦?ð!nyÔk(°•Cñ;pVÍ-_|¬,«Í-«í[·]»?föº>Ô×UÏÏNÀaÈ‚~09Çî dGÏœ)¸ý*Óñàò –ƒx:5¸Œ„&% öȪh“`˜o†¬ ¹ªÉ¦’U¹o`ÒðÎÜ…Š ðÖ…-V×Ãt øÝHÎöõ³jK)•sÄÉmZHbÒõÍ[J¼øìqŸ»ÜÇ/…Ÿ€ê¡1dŒÀÚ½SÑÍb€“–¢‡n–úËcxê±h”äÉÍ1»qðB£®â[8Pk dl¤ú ¢£MòÅÆ)y ‹:1–]'ŒN7Ô’,„ÛIUýnCŸ¸ù÷ïV²!_>Q2ЭKBןU*oƒÕM¿’Ożn–CD“å¥å/4!pL;ÂSQyÌ\f5Q%ZåÜ‘2¯;´*Z8D•©–÷`Õ·Kíq¯$Õ·TÌ OFõ-+W‘›¢oT¬Ô~uZôMØyu/·¸¤ð%«^Jªov+äXžõ4’Ⱦi@§ÃkŸWäß÷¾^ñ¿õ™»¥µhŽè´:ÕZ…ÞùèDZ·œVdËn-6Hš’¨WdAÈáQ•RÕˆ¤˜ÒëP3rApë6¿%ýÍ=Ü÷ ûÑsïIS¿Í¤¶èV5&5ÅŒÛOc’v:®ÇW“#š® HA?UF8IÝÁKs@Åre€]½JͨᰶԔB!ê€êK~òêó ÒˆVÍz%ã ë_452»Êd½j…äž2=rM¯ˆOûr[$µ/%ýR$–¥v¥äuHØq¸‹»àÒ›Ö%tïB3¦¨s™éc9ÑYœ¡ÍX.{!&…€¨&ܼìŸÜU¿0^¿Æf4h%Fšeè–(‚!’«ÎÔªmßü Fn˜cÊPsR†EMfö`F«è8DO™y‘ËcLxõRÄ9ü¢=ÓfÛÏÁ®S¤¼{Íë^"¥ôË$Ü=Á™FdE*éª%tÍkx~V }çK[¿h)F%¤œéNÍU·z'Ô°@N\[¨´îÃêË&Ê2 2fñ)„›ˆ'dßK cqUz»ð’žG &¦œ­òõ3‚3¦™*ìÕVÖ·æ(M\Õ3y½f\’ŽU3SðNEU¹²Yô¢ªL³y:)0ÿgû/ø¯D¿—$lÌRU/ 5à6†{uÃñU‹»ªÆ£Ã½!4c©w*ô ­j%0 A%Tôêm Í­énò’õÆh@©PTøí„´6M=¨UP÷“/j¼, ¯?³»jKÖŠ  >äF °:`6L£y¤• ÅýŒ¦v¢&.îÍr‚7‰æÎê`¹ÌrgúF†ôI$wx!bšÚ"ä^-XîwZ1eP"T(Fe>£wµ†Šq– 8%ê½æfµ«_,UÖ~nz.€³ØÚ£Aì"ÊV8/Ùᵄm$fz¯bY—Ov¼¾oï¿+°9ÑàpIR1@P1ifüK ôŒzF^.gœÝ‘.« Jbs’û©^’•n…“¬b*Áäܦ뮷ʗv9Ö`sª™G±voÛ ºÂ—U-—5C­ro@î„÷¡b0Ãí,ÔªÜNÔW]JÈ)èü®6¡`ÜáZ´kPx(JU2z"ªfôÊÅnK²Þµ0–²$îQ*«S¢’NbìNºŒØ 4É<Á¥¸¼àÖF±¼›£”‡ZP¨„¢Ð78€Èxs&"ðu Eð kÛX¦“íš‚Oó©«yþ{uùãŽÝ÷ôXš?Øw<~w­Û⇽ž½R|)g'I&Ÿ{›Q©˜Ï&ÄXx¸ìmJ¤½|ö±Î´ÓÜ»u C·±RRAÆIÕ‡³™öÏ*O‚æÛíH0xcÞy·!Áko¦_ˆÝ^ìÞêõÝõEìíªßÖÙùi<ƹà¶xݧ†pî¹|¦¸çoß>qº{þ‘vÇ™¤¶ÿ}Æ©¥u|3EŽö„N¼¬~?ÞDqr õU÷iÉý†Dlœ¥Üù´Ü¸mã£:‰¹ÙýE|ìzþ¥uøýžuý E(§Õ5“(ñpñÜ’óAÕæ zÐTsd¨Âb)»ºÏš^¿¢ö7=¨o~Ȇj4§3i%!¬í.EM؃Œ¯«ßW_àÖDwNddÛ~Ý­6ÃÞ]ãÌsmLœ‹b!æYŽèpž®³vÖ®c9rôÀâÕ¹ÿ$ ¾‰l™P¾:¼@¿™&\‰.€‰&tð¢G@'â>1¢ FĽkD{º$œ™Õ(GžNÊ0Ë:½‹û‘FgcÙŸp÷=ø‚ÖéŠ0Ø ¿ š&ôD8ý./è{›I¡ÇµÛ.TÔ°Œ¢3C—VF4n¦JÿÓ×™QÉDc1ØBʱ{B`M-:Fš†Õ¯¯“A•IÕ—þ–}ðþe€OŠ ð&iŸ§P Q˜5e1™ˆUÕvËKdK¢$Ù±F4ޝXºä5ñã}+}Jø¤øoé%Œâk ÆE­¢º”¾$>zTÒ„$ž[˜ÅÏ_n‹Â-3N#ü¬†jsH¿(Ö €¥aˆ5Àò1Š¥®nHB±„÷C~†ÂYÒçLOûõóFÃDòŸ4-@VKÖ6p”Ú¥PÉñK9BYC‡P&EV„R,•à!Þ£ìRé‰#íéPñ!–š±aB˜W ñK.[ñG/÷ßäE=<ÚàØæ-ÿ¤p0XSÂÓb²z'Iaª)–¼¨²âRB J‘%‡ ž¦vþÖ£¢ð79mr Wÿù‰H#ËW€Ü"-¬¾še¶ºâœGÈp),€LR骊ë–U:”ô7Í6KéK¡Œá$懥µ ±0¿ÄrÈqÒª ñ,5VËáNRdIqÞ¶ÍÞÏüºÚrfŽeý"µ3¿.ÁDÓÊ+p¸C0ÍKòD‚j Gè«A+!¦ïçK.+XAAÑ”ÉÂT»ÀUZ(ºy_Òœòmïsûú÷R¨(Ãë‚Ø+nŘ÷±\—üfå_1 ¹Ã·!FXƒ˜é)ü|‰ºBÌFLŸ¹ˆü× ÑOo{ü­È6¡B5çDð"î8< Æ_rԖθaý©°Ñ§#1¹üpaÚÊEüs2Úª‰Ú°>†ù”£ OÕÄ#¦h&f‹˜ŒƒÒ›„¾†cibAX»ø–ªÁdòªªPˆþªGP±h×HúÛˆ"«oòík‰¹(FJÝo™Fœ—c0VâËSUìÓô·Ý†(êÒùŠÙSSdŽc(¦ÿ¢É«œä,¾²}°&îúâ({ûúÀE±'=ÏÏŸ[µœÿ¯×XΤA¬P’$Š‹bƒHÂ8)¤²Ì±cÉìIÙÏ×h+çâš:¯=¯+)宿©=#©å¦¸ÐÕý4WéF~?ä?x±ÿ¦33$Þ Q#À 1—!¦èHçŽì/OÿNÝéñé„“a¶»¸'–V4Rwñä!rrSmgVZq¬ß¼Ô£²Ú]Rܤh'¢€â¡VŸ<î×?¦ïŠb%Å’¼KŠ¥>ˆKú"5<“uéoKVY+:Ù-‘â[·PϺwI±n ßeÅv&¸·`¦ÆèÛÒ„ºv[,$é+‚bOý­ÑéCT›ù²BÕ’±&ôïȨ˜R³Çml’>q[Žû¬¡§ð¸–£ƒG:_¢u.¿©XÝRÂóÎÖJ -¼¤X6?v¾^ñÿ^ª2zºLYСÛL÷"FÏSqX ÁhÓ¤êò¬5u£b@|$i˜Ýe »ÄR³Ø+–‚þ†åÀ¥ŒT± CúZ÷òRœ_~‰îéíá tîŽ;„¨^”«wÅ÷ÙíX¦ËÍiR¼œ/8}L–cÓƒ—ª8<®ê×ÈÙB© Í'*ÕKaНæÇ•‰,©9i~ü®_ˆµ™3g,oþ6â9EÙÊò)tÙO—¸éYÄ#⪩Ñ.ÅåòLzIqâŒÄ†iúõt;¡°BŽdž‹º úmrf:ìÜt)ícR˓샟êGbûÁËýßKÕ²µÛâ#iŸr÷÷ x˜Ó9‰GÄØ_aÛ–£–…ô@<Ò>iù÷3¶©Cfô·¾Ú9­KèŸîÓœ¸3G§½hõIˆ»2.' %G= ±n%±Þî-œIó”·´“–®xÍÐ0§ mÂùNR ƒØùÐS1G¤L]±Ó §TŒ}çžNÊå7 ã·•Áîdø$r¶¢ÝûIé$gÇ)_UŒÄ«²BîÀ¬ËÈyƒ“-<’ÊWœšžqâÉG^ÒW&/mKa›3òÖûCp|*Gªÿûd!±rýÅcñ…>Áq¿ÖF«ºâ>úƒ^Íärƒ[°‹j}À¯)êÏÈddòÐtÍ)*å²Í*© cp GÏD§]} <¤–r >Úlñ@ññ¹æƒú’,ÓùóÁ gœÌI¯‡¤=öÆ)ÑИýÁ1-u°NÌ…RM …ÿ£ÃH©ÞÀʰšº<*uÐÖU\l0vÕøÞ¬ÅQ~–è2ü bá|©ªX©Û`õ$&µ´Ö*Síçþ€Î€ëó±™»®ù›ù^!Œæ"r!’ µËhÓ§x8YnÔ'ÑYƒ¹HnÄþ-LãR¥«+²g 2¸´õ‰&/á”%öcÑž¼w]ößì˜t‰ wùé *eÑqjØ…XÜ39œ>’*²ÌK¨ò'òñ'õ&»eŸ0âˆ)t®ºb’Zb1ähA'Çá“È$ª8ü€,ÜfìšäÊž‰[h •¥KÐ S(Ò(â–s)FòŽ8?‰˜‘ÄÞdV¥¨œ2gRˆj^ÕøO‡‰²ccFœ#Ž[7#ro$',ôÖºbêoííó ¢÷áú—µžO©ºÁ)â¢ÅíŽV¾ö·Z­ó€_ÄT?ÈfaaJL_iƒ‚Ëoœí,ApMq]ã tÄpÈŒàñ–ØIÀG8ÈA$®5 B?œ&h±)!éf$FÐÙ0dV\u¦$NÄlÔ³¹ÐYû+3Ú4÷›(­Š£9»¡Ô–“X"j%®ú ÅÃË5RËó/ õm4·)‡›í%.í€Á„׬ø«% NÄ0œÌßZ ´9+„}í¤‡Å:ýä¥þKúãCžÊ…ÄZ¹ ›$•¼§î¹cŒ]yP%ÜS;ÁÊÔwµ¹}}ê5Õ_ÉÓb§>“¢G 2·ø7Jù’–¢3LˆqÉn3}Q§ª±Ü÷Ô¢ùLœ™ä9ÍiâÞü¸áƒ¢Tm¿$aÚÓü.RX§9N¬º9šç?‹Ï]ïéÿG/•D£)–ѦzžfaðÕ½‹êé=ž¤¼[%'í¤ÑµGHÒÑqÞ.'<É›=:,žŸ‘(?Ø ÙÓ]]7hºb¦RÝÄž·‘Úê`*õœÑòó½< »Gv.¹:vÑ»ˆwIºelg‰&TV,Ë5©<äÔÈŠ—\X­°„µQ Oî…ùOyµh•uÅU— NÍŠ=›EjžìŽÔ{tâB2Œ õ¥h6nå%ǵíK^¢qó7y±ÊZ!È’»…E©ùµ} ³SõÜÆf´ë¾Íÿb•~ìàMê`Åã"1Á8šÏÃHRLC¬¥xœÓ@¬¦æ¸n§ò&quýMÄ)£Ë!½ª¯E,FŒˆUÕ1=&ñ®üž-X¸YŽÔ­¥8og.Ñ»| Ù݈þ±è^Þ¶æqÚô±ˆ[‡ùå0ÐüŽjéAPŽçæÀ¸ï=1l’›?U©­‹TM,;qäü–:Ä#qèü͉vÞa£ºù·½ÃˆÇ¾dø‡ ëm=þaá .ªßt,ÞEH4d:ö_ñ»Ï©¿¤39>d hj>_Еä®ãK´Už/1à¯ó%/+ÁíÂðY;?”¯Y%«·K¸¸©ôS‡ðÒY BðʳT„òÍXJ%@Àr–›AÂg9ê’dzdÓYÐÀåYî)ós;ÃTèèzî' ¯ÛMéw¬pÖúÜÑÀ°3=w¼`Úñì‚rëÙ5õÆý§]eZ‘gï:¾f²ëÛÞ™'ï*¸ùÙÙ¾m|¼ÖóîÊ{ A¶`ôAšAPiÁ8¤å€f”BšA0¿fô![0iA?¤ }cæ¤Af#ƒ4} Yƒ:0ß$ÂÁÏd þ@:¤ø,ga›?p HÓúÁ M¨ƒ4u à M(ƒ4{  Òì~0H³ÊÁ sôŸ6)ößjhX™:ÐéKŽøÚDš=p0H‘üe1¿BZÛÞ ŒÇ½qî2eéû¹a+;,ÛÍÔЖüÅÆÆ½4î* N¨˜Tôpš-;Œ¤¶u÷ÕöØ­ÚblôËy=P;[HËÜËÀžä×F ÜÏ“ëB$dWUŸpÃFc*úòE3˜‚ý|¬ŒJz2~ÍZÚ[,ç|M{¥>m¢=®Àhص›îKZ6ac«v èu†ãØAfå86æ^aN?Ià®­ZÞØï°ç˜Þ€Œ?l:¦À¸ßÀæ·ñåþªÔç.òüKaúzX;3WëxXGCTŒé¥XëP.Ö Ñ‰4çÚO×ÂNv•éK,íàmËDRþæu¯`};•²iµYáè8 §º™ãĂނY^e!_óœ¸lö¼Èéö³mbŠ›¼N̰SpÛewËÔwbD`7=¾JX+L¬û’Ô„,€ƒ]Oœ6ᲆWz)Aß±M© åK—d˜ÌTÑ´ŒIY¾„$>­nÁ^¤ Á×ÜtÇæÂsLYPkA%Ë´ý²†lô+Ë6šúØjÿ·ƒ’éŸ l2îB_MûÒ:ß±ªu¾#cYþŽÈEŒvåó çwØhÙþ™|Iµ~~ʸíŸÚˆÜÜ+AxŸŠñ¼|’0¿™Îb+áz·£.)Ü0Ÿk\qÄ‚;ŽXð-pÉ÷C زžûEÐfJçž2ô¹ï¹ uV1Œ÷}¹áÓ}ß^íq_€_KÜõgSl +ðÛgÛ0¾;϶²ñß½íhýƒÏgc ùl\‚˜û³±ý(Ù>x¹ÿ훾åêe<ü~ƒýðÿ}LÖ3°Ñ=?àc¶œŸÂõÌ øšM’ñ{LÁZ óŒ1øœ/{ÊÁ©@:CNÊ’P*! ©B‰TcY8ég Ão h€mOj8—9ƒÊuDhð ‡s¡gĹҙq*õÌ’8ÓšgÖD‰X_{Åo€\­içríL³dYÿxº¥…ûlKó ÄìdqÌ(•Ô%óˆóÜ{J‘ÀÙrŠê¨gKª¢zœËBöÏç¾j>&gÏûà…þË*ptsJ¢Ñ¢¡ÁKÅB"„¸;ߘ Á ´™_HÍ4ayz~¬ß1wŠ &`f2o›Œb] WQŽ@O´€Ôè|O2…$&‘$y‚l; 4‹É=íÇëtà~‡tÖ«ÏûÆ8É4‡‡8í!TDùÌÁèN%V–Ï‘Nb&‚Âr‹‚/‡ÜWºó<Ρ£>m÷6œŠÚbF%Òy–:¡¶•^^Q|ñ¹–·z«b¸sÊ$Ç å”!U£—{ׯe…ì’4x=|ŠÝ+áÏß4 @?™>È’k½ÛÏôQÖˆ×LjàQ“ÛÝð•ˆET¦ýýÑ`{ýÇwÈýà ¸lP*!.œDÚ¥^#nÙš&R-@›"äRaÊ<¤n.æ#ÔKŒ[áÖò„ÑÕ!ÔâWÅ*¨&ÐvÿqºÈÿaˆ7öBI4 Ó,¹ Ób².¶VýˆV‡Ðõ“Ž‚¬ÄvÙìä%@%!“è>íu½y¾Y+}8.Öðïz¿Ù„߬âX±ªMþN“4k«…˜# SVæÖðç£e[°è]ñe BªY~ŠÞ¬xM7ú«l]ª‰Ô¨IëaXÜЗ@‘íö‚o²ÖÑ5Á£ôÍôZ˱ÙI:~Äœ³ÁJ†i†^í¿M¢ÆÈrÀÝóC5&«Ij5«Sb¨˜þ®ÙË#ƒ ¿…™vL÷bù¤­P.ÂÄU¼jx\[W£¹ÊcDƒº¸…äcGW)ONgO…4†ÍkkXvÊPÁÕJ2K$ÌFà­3<*BîYõÐæÓÀ_Ï:íVÀã+ÉÝTxÜq5¦"¥Ý?ØdéZ†×C¢²hhýÆZ.Ë—\‡‰­05Àè70ÿÊþäÉ¢ Žq©%„9Fò—È^A¯Y^ÞÕL3 ë°K•€}\Î-H#ºæœRà<¡¡ZCf€o‰4®Y©ÉÞŸ'ý¯ö_©#ºðÉæí¢°ÓÒSY—îÛYYómÝýøÕSÜöíÉê´5Ì'ë›qEf襜ÌÑ[G•*õN.µ7Í'÷ÔÞµžÜ”½­¦Wîú=·ýàõþ‹Ê?Üc3swܵ€qïÉ#VO£ˆ)sÙy§x}áYOLƒ;ÄcªF–—brJÚž3¤hO0%™ŸÚÇǤѤ©¸cá‹iMóãtªV Ó_öäÓøð'~.Ë ÁĨ%Ê×ܽ$”è}Ilþ¸£è¡b8G2û9I×ð^‹#.²«ø¤nHQ<6DWtLg5a;¤2"Ä;ˆ°ŠÈra¿¬8mMòÜ/È‘x41Œ§ø=¹!¸K,Ž"DØiyxaBCæK§*¶A7Û:ã5Tä­H5 Îr< °-ÈŠËT änÁ·ÿ 6Ó~QNú·bì‹?4³I³ÜY"¿Ýò$S!—¾.ár0ˆæ]&alIžé¬+ÉöâgkH²1îdbŒˆYÝù;.}Å´(H«ÄL$Á©*\B9†½k³c9©)íïð/ʯ‹\\¤–<°—Ä×Òr0 íÄ,pܶ¢X/™¥@ƒEr™–j¡5SeÍiŠ›*‘Y–qäÎÄ=âmV‹í2C¤°OúÕ—5÷)Æ] U)—Œ«ˆU]¨c/sï9UdKdzoUoÄqUÒ }'¬Ðù“”ÈuTªHs†œs(¬Ý|! ÎŸ5Ü/õ¿)'=÷3zS¨)‹­V¼Ê-°Ú%Ŭ&ÚX®$ºj¼7¿j;xpv˜^ìkÞ¿ ‡ƒ0å)‡Xòœ»™!an2Ê4J‘C¦íŒQ×6™E˜`ïdvL2L~T²8K„Ag‰Îÿ)u#ëYüL¶¼%Èà=É´—”v/&t[íwqŸ5áп®hYµh,±•ÅõßÂ_Ìî ‰¿<£‘‹4µÝ|¨â+óQs¢®ÞsÿBÔâí£#»<*¬HU¸ŽÝ!1U¸¬ÝAi¢—€bÊ(ÿHj?xÅÿ{¥ºoë ø®ï ±*ŒMâuÕØ2†â"P» ~ÄÓa’eq H"øÖYدˆr(î ÿbØ®Þðªb´H÷†ˆŸ1h°7Ì®rŠ6UÀ‡.¥oº³ö½)/ù×X‰Ú¸y“Ì"Æ>/yƆ;ãŠ}CctFÖ9ˆk:G‡,“W9G 1“AûèÁBù.gã’>žø5Ÿ^\²É–yŸnÄEÇY¶{'x˜JœÄ “‡Z¨Œõ}À—Wô\©RK=g4qÙGx–i3G´Žx}Æ®³ŸºÔû¿©?‘§™2‘âA®L¶x-s1äË\óFû g»ÒÿóBØL9œÙ" ™d>^NÀ'BJy@@óUFh6ËFƒêâëGY,:Ì rÓeÖR›F æH‡qC,uø€2Ö:ƒôÂbEV+bQ=hî&m´W¼¤`ð2mÉXqJÓF(&›öT6·´¨ñsËûàµþK?õÇ m …]ÙçHA±Š I†(8®/mô¢h,Ti‚Æ‘åâ¾8KEó(vuA5SAîïé㵩"M±ÎWQIK+WT“&'øF»‘±AEâÈ} 7¦Ûé[¸q]NoÃÍízzn~÷èìþ:ÞiŸ¸ÞO{ÅíõÓ}q÷½œæŒ»óOG |0hð¸ÁŸOÈW\Z.»IdŽ@{šHâ”§É$Ž;gô±DA(§OešB{úXrIŸÑçÚ>­ÃÍåÝ ¢E¯lS"Všˆãé´‰hQN7ÎdŒ§YÇF³[›ÉÑO§Oo@lòtÅIO·Pl‘Ý]l?›¼ÚÿæCótÑ\«;†ªQ"7'-Uµ¾îŽÀxnXh¬ *–ü½ …îÒ—¼g±I!ŠþÆtÑŠ;8À ÇrsØÑK¢9‘fBI&S±6E‰ý.mpº$‹Œs—V†!™¢¸ æ²qLE'DG‘}šg¼*8 …= #ôØ(5áešcÓžÙTq§‘ÍÉaéò€Šì«lUÛnhKaš#/®Ø=n.dL¡%È›ÚwÄ[êÁàšÿ–òßl42áÒÃüÜ…>þ½HMýrP‰;öËèž*õ~Ç É…<w\H+Tèç;F!?m,€°PkTpß÷’7’ +¶è 6›±Üiνàæ#ˆóÜ`E½ãjñà3ˆK€‰KÕyb1˜Ä CËj¢ Sað‚ÛšÌ$0â«mLfÜqŒI€Ù0¹ÕÜë×IÜx¨€ûÐ@ãFc°D¸ßÚ˜ÑâXÒ¥6®Ôgz¹Â˜Ò˜4/—JŠ…ÁvÏ'MÚÙJøæY™áL \l7Ðj”þÂÎ4»£4]ÐZV,±`!oíçlÏ/ö_Ú¨?{G´1»Jågî[óT©ÄªÜU¥ÞßYÏfßU*ñR;µg¥^dMô®RïŸí~ÍqªTâyjÔÔ›eU]§J%–Ø«JMcEí1ÕIè{ŒUêP=©å¬îÅ?:ê¼ÞP¢™‘Ï f©ž'ÜŠQ€'`‹Q§d¨ɸÀ§¨Ç z²3ÆfÂ[>hÄ©é}Å# 5Îñ#3Îù#ý䛨¹B?S‘Jì¡ '¡¯ÁŒŒÌ3·©ŠÇ:úÉdö؇3|FC” Í´'Gœ,Í3X²“)]1†OvÂåá”z2FW ûì„Í£--ò¹£/ýä|{:f焞ži'eô5]uî´Ò8N95œ“w:fÁ‘¾Z¿ï{ñöÁ«ý—éTnéLþeŽLOÁôÁ‘YŠk0dbNàPd9öóËÜŽJØ÷|s‹„½Ä t”ÝRÏ5¶Nþ¦YîlìÂ)ûŒ9ë锽ç˜Ãç˜ÓÎÎÙ[Œq·HÙ{Œz÷HÙWŒ‚Çí¥´}ĸøŒ”Ý&ôx59eqóûFo‘±÷VÎØñÔ<ûpÆÎ&¥y÷}I|^SÌÄ÷ÈØ{ÌÌÏÈØGÌÔ·ÈØ[ÌܯŸÇû¯÷_ TN°jmúï -MKqbï–ÄŽ±§`¤è(û™*ºî_VuöRA«¹aÙ1U—Éô1ÉŽåØçÈá/Ï:‘ó§4B3+ O)D±²ðä$†}µRii4óæ*½ ý"ó£b±}©áÅ!9‹$N‰qÊ ™„_C¬§®l–1’©I³J㋆ TRÅUK•GfMq:é\Ò-§¦Ê‹=ª+†Þ¯°%ÅÈ’îÑ£©Ö#݃æG\”2Nõgˆ¯Héj½_¯yíð_“9þÆKا&œä « 6špLñÜ9”kÂ*Á´¡”8DëðÞ¡E7­y7æPØbœ¸\»x,bÝñ7¹šÃëCªÞ„ŽBHªYŒ¬07—–8Ic#m£G pÈdBÒ¸„’ÈÝV\öüÀ:?,íê:dS¯Xdo㈩¸t5ÿ½ŽZÉÖÃ΀šísHßX“[öòé÷–‡¢Y¶:W¢­^OéÌ’+!oŠ˜f­ïq¯rè¢ÝÌs¢šl›8&Ü`™ŠÖ½W yYX9÷¥ºI;÷­Yy´[3|š-½ü»­g¿´$#iZ ݸðrûÞƒ„sXã»t]–ÃÇÍä^I œ˜[ƒRzܲë3òpikƒã(Dvw‰\¨)G†ßˆ½K_’«ÒÝ~ÕªNNÐ,/¶¾f§&ipe)Ê%ª¥eYjéöšWKYOäª &†u#×bOGw5A~lêByóçáóÁ‹ûßË'~s~IÊž;u"RÉ ˜¢@wï_YËÃà0íw(jö]ˆp.2€£5›E3¼éŸŽl‚ä&2àC”Ê|ß ³FCÂj˜xÖ´qzŒIfÞÛ †%òŽ*êhÔ{çšR Wó‚Ûd6“ò´±i6nEhîL§¨ÕÉóÍdMõ*î*ìÏ ƒrœÐø$]^)„–ãñ“Ô—]QËîU’s˜ðÜ›sçÐ@†Mˆi ÍÝt˜ºÕÕcè÷öÊ üŽw\¿ß‰EGáÑ!ÚÈí"­¯KtG¹%+ïÎõ¨d‘öÈ0±_ª+1*ÿcûÜå¼~)tÏÞgð “]º§2V¨Ûžv‡=íäIi\QUkÛHŠ¥¦måÞb0^Û[6‰Àµ·ªfŠéeW1o]U1^MÞÞˆEŠíç£ÒáÝQ/Ùã’É­4Cí½•·4]Z_"qÇ„JìÕ“­ Ü”¼u3>È71¼¹Á ‡wÅÆÏ¾ŽÆó½êX_fd.°µÿOq¤0œXU-êÀù›4n$MTýiôªÓªyRñNêtœy4Äa…Œ?¡¥ù(¬ QÐAéyÕ§h %¤œ}Ɔ´Ñ<‹Ywn_÷~®µ4/Ñó'[µ­¿C¯µ-c;Ý4·4ª¡;9¼Ué&s舱Jp5tçŸü®´²T ñzM~Å®†²â+½«!žSµ¸â5Šv,UCdÄËìdY/qIATñï¡Ìßÿžq“4S(èçã’HâÞaÆ“4Ø@‰©›{ÇäOJ&˜ä¹ÿÁœn<ÓÚпLPÞ1”´¦Xð_: Ê´JÂöŒ¬Ú(eé+æéœåŸ×ó(éù–`¡£‰_7P¤¹“¨Îo€þà}4~ù‘îŽVÂ%÷>çÄ4‚)Lʼn‰þÜÅç»T*ù’6xço%½Ä8ótë¦R.¡}r¯nýM£‡jé²ü<¬z•—h°´ _,±,^«œLw[Â&?—…Ý9ùi!/¦!ÙòË×èÓÂ4+ÿ»·[–%9®ô^¥Œº˜Õ†2þ#8šk]é!` ¨¡ $h P6äÓ+¾µ<²ö9Ýg·F¸€ŠM£DUíʬÈ_îË—W_BjdÄ®˜.·ÃêM2ÆCëΠ¨ }7nùÏ©g0}ºå|»ŽÀ™Ûɱï`T©?üͶkÒ”+ò©¬ŸC¢—1·LL· )˜Èúªù4?3‰BHž™q3ãp”¢¡z†’ÕìJÔ¢šöÏxE=y1­VE“›òhU3%Ô¬¶ÓÍÙúüäå4é9$꺊ÓK#¨¸ÕãI*.n\?ë’ÅšŸ¥YŽôbÓ$W"ÿ§˜ëWZ$ÿF×ïÑœ¤„»Lç‘S  ÃL¤Ó8͎èj–Ý'ÝJ?…&ÂݸÊý”tEúzÙó$§| O‰'Äï»ÒYC‚8FZ,È=$ÇP½˜²%è9åµ¶¬ ‘c%f)Hh/§W«ÇsöbF!b{­#±ªØ ˆ˜)ßÛE=£b»k;I b¼¶Û±u´µÒT31^Ûu)ˆá±;êŽO›}¹åÎm ¦š“ÜCÒ«¼ì @cõÛÞèŠSåÎ/›4õ@^6‹C }2ißš¼7^ê_<§Ró䢿¯€¢NÂÙ•å¢é óü(´ ˜ãq“D±Qc …$•¯«6V*Šñ†™†YþÌŒ¢Ê×Qý PÚÔX ®â²Æ£Œ·o`ß'bþ†€Ic…J³Æ5J&‘1ô d7„Ä,¨Ä Êß—aHe\ŠÇ—î©Ö6­jwž'Å4<ö%‹ùGj/Òs€ZÃQ̆c/*o«ÜnÛîOQy£šv\â¶® Ö»›t+¶ÓÜ»ÅÝ~Ï:k\¹ZU2ÈXòŠÝÏŸEo¼Ú ¤\v½n´Hx†æ.ŒKµ´"G%|cºü÷ªçÐ%¡Û4%}}ZƒåÆ©† 0ƒnž×©ñ_M6’êp"Ô¨ø×»Ž˜£cF¦F9“4¬¯ò|@‘vVú”hîŸXgd¦§Ê<“à™é¬²NÅÉ”š^*étôaHÝ”Ρê®O¯V srz¨6hÿuÕ{éšÐ kä¦]q¤Ø™rÓIIÛ°GrÚLC·ÝB'g©'Dd§©‰êìUâ¹e”ÒñU½T¨¯¢š×ÙéS"UĽpvº«d«Õ“^ß¡ê7^ê_ ©ï¼è—“:¹·Þ…¿tZÑŒùräé53_n>¤T!¥€Ä…Î!{ ÏÑÚ%ˆ­ƒ4\ƒÁýF"ø¾7TQéB{!™bÉéÐñ+­"°”šÂÑr­ø*¦ªÕüRͶB°¯½YQ1Ê °•¬Ð……ôȫ߀*îHGFåvÊ/И—Ì®eTabâT/°¨´¸ªzjUú¢‹ß~£ZzÊæpÙz¤ÿ¨uDþDÀ¸jœäPœ—t¦$-rœå@Þ8P¶Œ_qÝO¤¿Œ;R£¨ë¤@ V¤@†!ü™HAU§@ÆÀªß¤@ŒÁ"Ò Ñ0Α1„›‘)ñzd@Z@Àì +¼H·ùd@XèT²9HšjlÝté) ;sž‘îÃ$Ô4­¼ÈÊ8 Â%Õcéä@XÈßF9Þy4r ±ÀóI941X¸ò—¦ë¢µp™(eAöwPÚOø|ƦÊM>eAx›~®‘á]xy-’ ”ÉÁ­R"dߥ(¬%!èÊ,iÅŸ$ˆ´hW$AFú™[ûÆËý ¤úÝž6€)‘ö/€#U·À?3ò¦å…‘”V u’®= VÈñGo ðiÛ0­GR7Œ;9ß(oDZ¸Ì‘4®{ä”{Éå”ó¹ä夺’Ò=°hœu3VíwBÛP¶D¾;¿àn°ë ‡K$Ìç–#Ÿ®+@9÷p;%/<ôR/¥@ë)2ú%Ðüº3þFü-XÓ,Ò@E ‚Ràë_î‹pI¯-ý¦%8 у¶0~fõÞx­ÿJïÈOYMš¿uA6ž£zÑQâ{`ªºåá ¦ªÎ# Õ¥RÇ@P*1¯ç¥ª&c žÊÔftÁÔEФYS»j$”û˜JEDÓ%²š©¢¼`*UpÌL¥‚ºQ}Í%ÁT˜¯=ÐSaè_W»q* }AaÒáD¥GÀÔ!6þòÁXŠlŸÄ£¡º>VëHÕ7ÐWÐjIG.qçyÔ"²|­¤f凰‘A*LøýÕR]»*†¨ªkWuïá^A¸À ¤‡“ˆ¼T§KRÄű±_Krò.Ïz¶Z€ü!éÈê‚yð¸EŠçpZ$ÚEÕ’s#O^j›KÎ -Èø£àQ`è%åX,bÌsêrOPã€Ú½Ý“m¯··ÞY¨w»Ñ¿Â¾Kñ#³Øw,- *UŠ„èå^z‰Šà,rç:‚½£è|ÂÍç¥ 4t ÐŒ‚çü9Î}œZÓäd]&þëúà% -E¥x ÈOïëo·V”|z¨ëRúÄå‡ÁJM\†>Õ5¾Ì{CÂ6P¨!¾áƒÃ˜§Ó/}å™RÏ¢¶]PF. ê%´ú@²ôò  OP–÷q’¨mdlDÝP¿c±95ÎËÝÁÅŒt¦®‰l;z¿æÄM•Côþè(z‡l_êþ«Êœ'ôIc4ÑžÐ?–„ih÷»4–{BÝk®OšƒEÒ5·O’×jqµ*Ú›ðEPuP5jÍSX¢)ôAçýWû¯¥H_[ºF[5/÷®@ í¿Ïr甄 ìõ>4Q FëÝQQ½‹%™g¹ëŠeª7×üR`äÒjòz—2$w ¿IDwcÁãŒô«Ç‚¯Šz¤³Üñq>õro oà8x¹‡ÑËB¸±Ü—b²Å,w¬ .ÇjŸCð«½(~¡ˆ‰V{U¼êøYínSbµ¥ÝZ¬óÓ€|O,õª¼G—úTž U/ukm¯5ï¥.]í–c©/ e¯³Ô—²j—¶Ë< ÷E¹ÒôRÎcÆJÏ¡b;ÿ3,õãNªì=ëÖk¥*Fš¶cÃ:æîAQÿ0vé­h˜ ]¨5F ñÔ{Ý—1Áe§’¨ ¤I†'ÄZé #cÂJþŒÌ¥4¦êššŠ \bÈ.‰~ÎËl¦i5N%Uø®¤œ{QCÃ+™ZÙ" y$›:ØÉ¬CAKÊQº?Ÿ)iÚ×Ë©R]„ƘSeqM«âš=ƒB‚ƒ©Œã8P£‰U©ýEXA^¬n¿[¥J̸:¾Jo=®PTÝe‚^d—Ëg‚ þÒÊDÑ·!µ„K9Un^ªxº"Ì=>c…½Ÿ¹±o¼Ê 7½Ê± FÅxªÿÏQ¿‰ÀénÑž Eî_§±[Tl³­‘ã‚Kbd¾!"ŒUCi­o;ÆÒ˜ÕM¤?…‹KŸoÞÏrÒ³B‹¨3VˆöR鍯`ÜK]ããŠÓm[!‰ee%ýu]"TjLa4´°¾b<•3)ïÜHf/å/ )t·°é…a’ÙâêBŒWéø’Q¨ä6–blÛ¿yàb“„²'´¿°x#S6­I‚€IÜ, ?#Lá©ã²Ö-•¬®/Ã*.ÌP©|­ªEd¨n ÒˆŠ/ˆTÎc*Ñ#)‘©¤‹ƒ}ô6ˆ¶|ÕuI¼ %Uä¥Q{õqwRGŠ~»0­¶+3E‰NwšHÍC¶›‘•Ew*©¾˜œ“PfrÍ÷CúQÑ‚2YM8lÇ·Ákî’Ä i16ðžÐ¤Wç%Œ½rluêÃSIŒm\‰s”ð\ò»qtÒ!)xõþkºü~¿q_Ûóp6þ™¦cÎ,†í8s|LËyÇôè å—m¹”ˆðC<æë<ãcÞÎ2ëwÉ1^Cý6Ÿg‰ózV /i|é1Ñg î%¾ÂÂgï‚’îÀ›¤Þ§„÷ÐŒCdÆ«q͛ڻðDÞ¤ÓUM±‡ç}-~:Yga Q㬬aBÎÌæ;ûˆó¶‡jq¯°Qý>¯mÂÖϼÖ7^ñ¿ÖEã…?Ô%ce© bec¨ä€•ÊRF§ kIWu´€µ§ÖžU=â”zàÿj™ qíº˜)´ô¤ógwÓ‰$•¤À*¬ŠìǑͿ3bº‚j†2ê¾£‰7/úEh ŠþCúXŸâ¥›¶)¤w(R\¬’Ñ5Ü^‚Èg+Þ¾`ø‰²¯¨=5Å<#AÀYhPJbl½2€ Œ!.§M㈹ˆn¦?±Ï$¬14T[æB»¬6=UÔ2ï·Pñ(èpM)^¢à¦6 á?‰£y|EÆ<@ EfO/·q#‰ÄXm8öA—5Mû_±ÓöáãáõÖéÏòMwÒcïH²Ü´¡¨(ÃQóÍH¢ÀbºSEÂm¾Ü 6ÜÀFÐ ò|Ä„yT¼…xXjŠA¢ÐŒ´fuþeF’ú(C}àÞx®¿èÝÀ15R,¨b ÖÎzD-¯J)§¶®ñÞLY-1¦K²89Æ—j‡Ät³Î æšE}º“ž’MM¯UZ#û¥‘% ( !»¨Ž²ð¶=½,h:4îªô¼¤î˘XP¶±Æ´Î£¶Ó?@Ur¾‰Øê¥kºÿDaÏa±(õTÙNÓx7—€¾Ïx ^¤ŽKc’'Ú'·@Ñ•0O«†5ê˜i±¦/Q¨¥>–ÖºŒêgg¼/eYrÊÅ—Hêü@3è¤ñè&¡±J‚…#Ÿ4d8D&Ê~Á¥z­SL¾¿y¬2á¡lˆÆwÍ]|Ç;×ÜÕòúÖ;¾ýgÂð®ûñ½œ Ï\‘ÂëöÛGÇñê WëñùšÕµ xÛÁ ÂÃÓ ¢Zî†åÆÓH¶‰&®‹Wƒ™P½ê”@òZÊ¿íõ»ÁRH@3”Š8A uB â;¹¢Ûòç‡7"L1 ðÜ3’¿B€óîÏy7)µŽ¤û…vl=ø²D e}.ÇY` ¬Ž(àê?DWEÙ"„Øóó)ò¾k¹~Ñêþ[_ Hz…évk6ŽénjÄ! Ó=“8ãCîˆ+ÜIÏ0ÕȈ’&ÀiÓîJ¶ÞºM·ë±S)a¼—º‘@¦·õŽúkì–¬wy8S»Âz7GÁÊz/[·Æ;|2ȨaÀ‡ê­»¼*¬7ãKjÁ¶ÞC֣ϰÞYÕÕ3çÛz+Ñ1SXoÊ©©@·õÖ5%jœÃ„SR½Tfs›oH´«¾Ì÷r¤Úæ{©ž:ʼnÀ¡‰ËÖ^Ö›r˜°öW/¼V¨©Ç‚gÑO“Ç I¹|2ÞS¶þïúc)ž«\€ü€ ß^ ‡`XŒÇh¶ìÅ¥Y¨’οb GUįØßú1»b?M õ0+¢†x ãÜì XY N‘+öP|gs+.1b”¶Èn¥-°Ð‚Z!ŠPÍfZÀ˜„k^fȧ§Â[øT­â!qð¤Š.u ñ2ªÜ„%%– Tt©‘YÏ‚%ˆ]âx¸–Gr™BêHíP) ×á6˜Ùoù¥Ã¦h!×Tͦô]qx/EÛÒ7$|‚N‚”d%Å¥ÀÔ "E“:e&RDü;žÁ¯é/¸žßåÐ%T N°O¢9BO0°¯â5 ô Ø» Èì_P5Åwì%\”êÌbÝè’”y`QöP,Tˆ’Ùg¦GÈÞÄE˜gFöY¤Å” Ý%×ËîÀ Ú'ÉëÃô1´?ø@åih?­¢OÃØ¾H÷ôŠ÷ÙaID¿ؾKó´¯î³4OÉÎÜOIÜ‹™0µÑ}M2r#¾tR×'tߤs:Iùï±Ú”ž_=à}’¦©è>IÓ´*íÕRT<¡Þ[%Sˆ…†øV2½„FŠx樘ÒE×ð¾HÅ”~'†÷?Cco¼â 9¿·âÉF·3?s$)óƒÆ•Ø(|å´ÔýÀy#ùÏQf8óJ€–"íäGRߎܩ×`Ww¤WÛ£K2À ØúPÃÊqçgÅÝŸNß>"P©];qÐ(ïûè‘4&)Ü Bª3Æ‘Tž 9©Ü*NÚ™ÔRëÎÖ½hEOÊXÃ|mf‡:¡Qï|÷x4kë9Þ¬ˆ\yxÀÍ­¼NÏŽwX%XùÀ¬ŠÀî¶Û •8WÏ}eZ¤ò‹£,-ýÁ˜>X–5‚"ppη§7^Ä?Æ‘æ&¤•à. ÇŽæ zÃŒèR öCŽàS vDØT'ºKóx~âV¨ï+ {è~• g”ˆåŸ%¶ßwâÛ©àªXôŠúk¬òô¦N©91¡š‚\É»æbev@—ßoɼÎ5)Q8{R?ÔWÄ&¤‘ƒ‰'…§65µ$ãµ9…Ø ™Ì #þýF×t:jÍ|ÇÚÎÙ¥B³:ÕYh‚a'×ÄëÑpDPe©Ú×öÌjèôÖûaAx^ì„wéŠJÎâRñˆ "³XbU}VN•¢Ð*ÅYp;iTÂH{ÊáÀ¥Ðy­ëHêÊ—Ú')îIjü·¬¸™TÒù!<6Ña[8«ütE ¼ÃWO \zVÀílø{›ä œ×_g)€lÈíãuaî}Sh‚U…â§b˜¢JI¶± Ø[K!J¡³6´¨Ë“V·ùù´õÞ§C3]ZË#‘?¥'I9]w-ÂEƒÀfQÒKUz ½›µÃÐÛ *8ýºè–¤Úª¤~v¨¶Hütd´€Œ ÷;ƒƒöE’IÝû  N*þØå`Q;òj¹à±`C‰!r«’º"ÄÃlRXN† óØ'Eõ-ãÓ±A,ž2ý­ºè!…¸;À0=¤bqÈÌ,ÓC¨GËÑ= V»‚6)ôÄ–ÀþÐx/HK”¢ÐUEMÆ1«YÃvÚ’ÐØ¯]\`&õÅpD£‰ B[eÆâ1Œá=«¶hCÂDëhLç C…£&©C„ˆ ™•ßK þL^C]…»Ì[S¡CÉÎ&,3&½¯óSA™,²Ç"uM}>»[@Kcòêúö$¢³šýrK u½1Pò©„…(YMãë­qpÿ¢Ìm¦Â G´"0HR%T@¹1‚IEi#ƒ sª7¢€ *’†ª€:Rä.äÆâº¡§£„ ÇÛøŒÂ(õM6zÓ0‡`Ô¥¼JÇøvÚÒt(M\Ëõ׉b6×\ [RR¥q†ž4$ddúÖáêþcØõù¦#¯êÖ†e{/ Ëi'Àê Oùõô¡‚yn?L÷Nïh(ïucl‹’@ŠxèÓõøtšsUQ²3ŠaYÎ.ÞÒ?5@ £&à!ˆn¥yá¡xpí %=ÕXêÔÅù¹gk•je´ŒiÍô¯iEÎõ–ÝÚè¬ÆƒZªùÆŠg!”ü¼Ô‹å§Ïf8z¶ŠÀj¾7’¡ìÙeƹg ŸíY¬ŽPpþv?û¿·]Æ_@«ïð#c¡M50y¨õïXáÇ4Ev¿¦%Ð!/¦X1\N’Ç™T™|¨ˆÞ©áa 7 Ô›œ‡–V4N#…Ÿh¦¸¹…·ïAýRxyûòS×NàÔ˜ š|Ä€íê™Ã‰ä+ºÉ]ø˜Š7Y;» û”U¬á¥)ŵËßäÂÁåmÐZ¸¿|[ЪØs¾Ëηügè¿ËGâÔ=©ne…çíš’Ö{8ç®Aic…ï~̑ϮŠ_4]’ý’S`3Ž•xtXb×Àëgûû¯èkxTC™=ùhæ֥^n«6„K«º‡âDâÓQ‰L ·©"eu§¿#íwÈm‘Q£±l¸ï`‘×e} ³ôºrÂtžv÷å€ÈcH MˆTÓ\Üø p%Z¼Õ×…L%±œûÑÇ’àÁóîݲïº47’ÇY5¾Ô‡Å CÖƒ’òI’V„€¬šòŽ7KRå% ’¨¡ 0æi¸ÉêCžß· CARVöÚAU NÀZµqÓº^–!Ta¬æ˜äÜXö´-,)zC"yëuþcØeÌþÍäVJGF!Í¡™#ÆâÐtµVÓxðy+}ªÁøå¾Jø2®U}sÌ80ÖXÏf¿vv1½†3ˆC4s×¾ÓåÚBÆkLõvÐǧŠê8ÐaÉ*¥Ý€Bm3=ÎQׇ7µ0‚™ó&>”¸GT‡£«ÆÕ~_Ú»BT¾ÆLK”+Ú§çËp_-1ˆÃÁÀ¨bl»®Cœ{¨ÉÆÅI…±®Jö_ôÙDÓ1£öjñQ`Õ¥ÃQ´6Œl­hhcúí}슦FF5ÒF%ð›“ÛêˆO†¡b½ìSÑ n(„à¨áÿÓ ¯ñ…þã§xYU–^iŠ “UºUlX¹_M*(Zþ %˜&âÏ« OåDa’ÒCabžtD[áIDXÕl‹¢Â…Œx¹ƒÂtyçN&¯N ‡„39x Þ_´#$üз·ˆÛ¶Ó!S®p0ä*È žPkŽjÑêšØµBÁpŪ‚´] %3"Ü`‡±ž69l°·€hØ3bÀ‰tÕˆ—üÉñß ¬á¦þ"ƒ‰ë®ð¯È_ó~ä/Ñ ÷•šî•¢¾ŸŸÜo¼Œ¿håöíÁ„Š Uü•YÄD'gU²8•e‰˜€¹*+ž#%îP?\= PYПšÌ–Ceà|Vh©+3ã áÇÊŠW°êrHI"%×ʈ`™dã[òA“õ›b 銒ò­0«&X¥ˆ•™_ÙÛ±2ó«äËs‘œ¼b…ʪZLØQ¨ вaÜ¿Beê(ÝÇŠH™¯ÏòÙnEé².2u3”%‘©Ï”5©”â PÆ©¬éC¶‚8•,ªàÓÁ¾F¸¬¹!t9¡²$òT--‚eýáÓ`†É~ç¥þE·o£¦¢Î8µ¶û‘ÔâØ‡ZQGk‡“"¦ùø­:ÝÃZf—sS=¬‹Úžú*A*֮У—Kæ³Ò8š“ªs:‰%ÜDó“º4ûd/jR¦í¦“?«J§½ÕâP7+סDŸîª3%Ü‹âzœ¾ÂýªÇA4ØîIR-ŽrŠr_Š:·]ºä”{.³š[¸@Œ#0,)XwÍ!»QI 厴—5\}“Òí…qÜÈß>^Òc=ßN\‡¶n?ƒ°òuI5aj/_qX®Ì¾dR±ê-¯9!{ù¢ßùªo¼à¿Hé}—·DŽD“IŠoÿ[èsZ@—¼†Ü»*¹7”ú?›äÞ’Ò¢Ð&¹[aÐàžYµß 4[â ³#ü9$ñíÊøÓ lV©@ëÛfÐ"ñ'•Õ €v«jñKJI;§5‘ñg±J6 ZøsH%[º\ŸCjOÐ=Œ?«$¯Àþ´º­…?#e]Ôz& ¨e­Óœ?«%¬W Ï)Åjñy?§ªG¯?‡äœÐé6ü´F5ÚÆŸ!½‡¦S;´IÓ ~›ñg{Xyþ\jÒuP‡2ýw)±7^ï_åý†Š2,e»$ܽ'÷)ŽwµPNŒòL+õ¤ª×ôÅ݃ÃÅÏeñPóÃX¢E,®Âw4Åà%&ÊPš|Z›9{<%"âPz&Q9£”¬ºÍ+DsIWJÿ¬jŒ RHæ0ÜÎÑÓòŽŠ0ž|æŽ÷%ÄR˜&TIý´×`SSE„uI×Q-»4-d±ËžWz6L·h¹ÀÏrK¦¢¢jÆ+”¼9æPè’¢ìÆ«G˜ZBÁ|Q2ÈŠ'•ìtQ6hʘÔeÆ­”‚ ß/w—€À$äù×uKÔ)_¡•¿É‚Ÿ_`PWSrþ£u_¬¤ˆw±Ô‘GåøR‡„:‘±ýøƒð*Xp+Mïa9IÖÒ"¼2DŸ¥[@ZnƒÛöÒýì–¸4@RiP}n'uš†Á»Hç¦]À¡‚5_Ò«K’NÏJC[yС{ËÇK|‰ÐÒ®AU Gz]žXs‰B ãñ+‡n_|¾œƒ­=Çþ×E^þÖëý ™q¥[÷¦P ~.DRš¹'õ©ÐXr —Îûε+ƒãU-©¤\½i\ð8Ûãóé:±+a©[ x=ìÛbã3,Ylê;¥‰‚›ÂpûÒD)˜ÂjEiú˜%¨ü0mö9?Ù(;´hY¯žõN.°\Mv½„4ŠÃŒ·ëû¯þÎK¡vâÞÈKX%O€¾D»é¢À¸G`“ˆùHK¯5)§t‘Æ„& ¼äx¿08æ~;+°RÔ ZcB^ÿÜ—„0Nà%멇/9W×kD´ˆŠ¯¼TßTg¥1Z-Cž†WºÃ.¤O­“ò¾«ý‹â´ïö4´‹6s8æC´Œù2Ø+9Y")»­cÖíÍb}Pì!ç<‰"Þ‰œs“HV„§W¤ý!š,оô)"Ф$ä¡'sWýÅG_â¶(('ÝÜ—Iþ\nú7f´ã¨Oqi¤K®æZalq•[ wÝ*Öl·^0­ÃDºÅYw IJ‘eW‘J·$Üõ¢ŠZ"Ø_*•|öH„>ÛÂkï.|G˽ ÀJü†*pK¹8íÓ…7 1É]§t‘×ÞUÆCï<ûí§ö¨F´iIè1W¸Œ+“JøîQ%ІxÙï¼Ü×W%ßþJÆ]QÄ¢:Ù¢Ž¢Œ<æjÚ b’šc·"ÊòÌ«Æ#j1$cMü‚d'žuŒ;±·öÒ­n—“üÍ]» ƒ (Vâ£dàåúî•Õ"l]PÆ¥^˜•׺Wß³\ÕB==c¥EÛ¼Û¹ðšî¿}·éQÜ[<]šHwÓÚ_§]—ÆôwRà›-OÛPš$`™µ]Êð¶Àhêñ”îþÉÉtWô3ÖžíÛ‹ÆK %òj47•&J–Î{Sk±ÈX³›u2Hh×|f–ªþ$ºuv ñ§F·Öt»âzÍ¿2kô·^Þ_4 ø6ÈÂñ»‚¾±¤åäõ'©V8óW¥¾¤$þa“¾O÷øÄŠç½pUrØ÷<þ«:ä¼jAÁ—÷ÚTONðDÎ-IÊ£ìÿb~pÃî1®+€pž+Jªì[«jy{ÞQ«¯0Z8çê—vÝÅú´º°c_a‹±ï/v´A–JEjû¬A42¬hZ`Žh0$²nTÒ­1Ó´<Ô"­¬ÉGTF¨g[s)\L”á ÐÅ×)¡C5¾Õx¨¾È€+…|µ%åÀd]•×ßz5‘ý΃¤…jÌí¡¡œQ^þ[ôв·ÄÑ¢í£Ý¿$ŽÖ¼^.¢dPZ½]H]rIôçåf. ßÝnè’i¿½T±z{ /vI1Šºz{¹]ŠRì g)NÍëxÊMInj&_šú­¤°HøÚ°¶\™h_+ºS/ûêÖɺ.¿]—e´hWù=’ÙªÝßá ªù\¢6+žpCèTrÀ “² aÁ‘)VVk3ÐJ+k;T?‹ÜlÄÓÌÈ€1Ñœ  4Iª´«¬7׈•5ª1!©oÃmï¼ÚŒ;¿ œ3ÓqMêƒ1¤Ï5!°YƒnÛ%µI^Ÿ|¿Ì4ÜX- û%ù±œ¨—WRDgì’„>Õ?EI}Lul¶;² ‘lÚIŒc WdÛ,‡¨åˆl»ª˜¡ÝG7õZ>H{@Ú)/÷ã·«…ïáƒÃaŽp>|èàzì#;ø^ö;ª Åò:ú`•ásÔ ¡ 7T3{D¾&Ock®â ?CKQG‘=½v$‘Ÿ±—®«}åeìuã&ü‹ÌHkl§G°lä[¼upý)~wä@ˆÕáw‰Ô“(GŠ«=ÿX¡-ãTJ È‚UN¹Ž3hÐÊq”^ƒTîO6ñMùÌù­üÜ@h,ÆUú®KhLÆOé½,b9Z(Nÿñ¾kP"Ë92ˆU¤r…1È0îÅ‚´àÑH]ŸŽeä(ݯŒ“¹›¡œ¦êNpf5,[J‚fÈÇF`N’fÈá_)‰J…NÎŽt+ÇšE GéÚ9Ø“PÁGé‘§Å0LµpR†©ú•"×[E Ÿ¸8Êw1È'OŠ4 X‹"ä‘Inj@Ö±½Ê4Ÿ&f¤(Rd£«»Ì¶éîo¼ÂÛõEâw¿ÒmÕRÄû»Úª)åàæ/ddª²Cli'Xj¤Šˆ•¨±RMD¿ßa?DB¤;Ó&!*º(Ÿ8‰€HcO§=L@lÄáššÀ˜€ˆÏ£Ô‰ø‡]ocÀD?N»h´ì7(+sšÊ&U|;s“D?¤žÀ™¦Æ´wòGj§\brCÔq ´Iä› ©DZ—³¿”[ê–r+'÷åó¸D°·–äܺÜ)"Y’”ÜŒìŒBuGw¬Y¾°òcliÄ OúŒ[\Á¤Pz-d¤ÉÍ)8(…"ÐhLá0géš$ðÒÏbÀï¼Þ¿(Ð ’!Ù”›b8…LÃn·íE0¤¸R\ð Ñ!­/z!ín׋]8¿‰…t¯8Ä¿àJßòfâ¾§±&½x…ô¿Í/Z!DÖz³ §Û(B!z¨×‹O8åIøÊA)””·Ù„t»í/2¡h¼¸„´ô¢ª½m¾Y„:_$BÔý®‡p’gŠPtÐ%*Òo!fÞ$BFùÅ!$1+2èƒ Ë‹=Èðz‘U¯òâ2 ¡úƒ¢ôÒ³ÛõEŽ2(c¸C]M)ÃP7¢ œ1žÊÜš’FÍY!ƒ”5ưœ­ ÷¡©ó¡ioÒ)½;šÇkhþê.Yù`Ö1$®}ˆwI,Ïzó’ÔÜ^Ü=Õµ­ n.I-¯nâÀÉ嶃ÈxÐâ'øƒø,ýA/¤Žr¶Ã>d웡ˆWCw”Ã`¤ ëa±–#¯MôS‚©Ò98[Á’Äóa÷¥„ö}Ü…é`!¥hÄÌÍÂOœQÚÜJ‘ZƒvRœ®Á%ÕÖWÛ]DgHYFm½P¡¾Âµ÷¸ï¾‚kó…2u.ßÇ¡'ÍÕý­ý\Ò ø÷¢ƒ„B@R3­z+àïçP˜Â*—¼€Ý¸4G¥ ©Sƒ)_Ž„@(€ˆ—X ¡*  f˜¡”h€PB ®Yj·Î‚$¡Ó_‡1ÿ¶Ë=}1 ³£’¢†mjŒà"¶=)ô@©ˆmjŒÜÛ)b#s²N [cx qº„M‰”tW¯í!ýÖt}°í¿®ÞŠú5Ô¯ó)_+ÏÕéãêµÊ(=²õT÷ߣt-3TWr•­§'JT­†õT¡Gåi™È¢ìGàÅ‹à©,M»ëÖ nÍS¶VÖ»h· ä(XCô»¾êÕÐ'?¿Y%kû.CܨX#Ç3OÁšÞEöÏõjÛ_Šžr5l³p¢b0O5e8•j Ì´æ«PM Òo|†Xo¼¢ "¿=£–;iÊKëhFØS›G3ÂŽ\hFŒðóB3¢‡+øÒŒ°«8nÍy’õ“ffKÞf ͈ÞhhF”pVShFd9³øØÒŒ(9Þ£QÃ!>š-æÓi )(Ÿú%a—»†dÄ —üHFÔpÙó-a·þHFÌpûdÄX 8$# ^’†G2"òxiF™ÔÐŒ˜F/èI4bºI!‘ý„|•D#V ¤ÐŒ¨ º5#¸²bºßÛµ7^ê_6›ûìt‹®J?²“öTnÙI;*Ų“·›bÕI;)õ¨NÚG ÕÉîÉݧÕAA<©NÊcZªæ‡k4V¸'ùèNÚ;9²“vNnÙI;']²“úSS­;i¯$˜æE¢óvLnÝIù%éÖ´[’CwRNIÖÌᔄîddZw2¼‘[vÒΈí¦e'íŽÜ²“öFê‘´3bÕÉãŠXt²‡r‹NÚéGtÒ.H9¢“>}¾´òÖ6û׊-_ùˆÈz”[dÖÀ$‡m Üòª5ªI·Ž­@O¾enSê’!…kÔt¤rW`ªtKévÕ[jר,ßr¼Ælã–ë5¤·œ¯߉Єä¯1áKX±ÜŠÁÆ“)…‹!g¿E‡Gó‘$ZM·`±±l=zƺÁbÉccávK"Nm(&HÏ[PÙX{ޢ˘Zp©5™©¿$›ãêV®ÕŽì³#õV…V  þ {½ñZÿBéçÛý,Â.j Á©NñpH¿„ a’LÙ­BHÆb’³ ¡ø>ROPœüÅB bºXd]âòŸT“ØEXÔP!$¡ÁóBÜSµœ± !¼¥‚ï,¨æ$žß‹UÇ;qóW=ê,Åm~¬êf÷|ª<ízVå†Ï[}•í}K³âÀçt ·âÞ·[ÖU¾_BùUè Þ°ÂóÖ]P Ò²Â%”g›p‰$Ÿ-L«r“ºµÅ˜fܲ¶˜•£J+åÛnLÔna\¡¦q¤s©ú-¬+Àõ’Ý•K½Ž(¯ Z½%{…ãÚ­è+”{ˆþ Ö[¤¸nÑ`ÁÈzk dö[rX´ßŠÄF¨õ,6‚]· ±nˆ0|®ãåüE׉ïâ§-Lq¦h[`Ûójm`ãÓïÖ¶>ýîŒ`ós:'̰?§ù‚š+ÈÕ»õ‚í)åÀÙŸÍV e†ù•Âå»õƒmи[CؽõSûuÎadËŽ.\äÓŽ,ÿÌ…›NŽ4áN¢.$ᦛ±E¸“ä 18e£B&áäé¼ôà”E|ÉÁM«…\$ œÒ“åÖ‚›nwdà”Ú|©À)ñªi!7UsëÀ)qú’SZõ¥§¤ë:*pJÈæ[NéÚ—þ›’¹/ù7¥zãÒV€S*8ßp$‹ë­ÿ¦LòKþ ‚í-þ¦t¹uß”¡~ɾ)ÝnÕ7%·CïÛÓæó”BuE|ªÎiŠÉ´Ô¨Òû…É´ ŸÁ÷ÉfH.wј6€do$¹ÿ}£ÅD\ŠfKsÛ*Q‚eWD{ÈØÓòtŠÛ #Ö="߯Œè‰€jÚ3é ö¹ þ)Ð4†æ§¸Å¥Ò J¿ð¿€£k2,Á+ÅÓ§Ú–·¨MMá(ð-¥BÃñú$èI“JÂÛ5èîŒ$×=w†°cÄÆÝÖ} „Å%,SJ¨¹ ŸB™:ºÏU,^"ye/8"°ÉQÝÜáé2è{q6 ¾cº< ”*x2CìçÔtÞ? ìidˆÆ¡ÈG{ãC’ä¶zéÊïzÉ?öâÕP>*‚ÑP½\ÕÐÞD­ë4L—Ë{ÕPq¬´—kô$ôýY}›†ôHU­}ÎBœ,:[þ¹ "q9N€ITùt$¶—÷âŽ^€I¥ºý4dB¥¢ ×bWnÌ­v€DgLª c‘ƒÚ…*;un¨h$UÝ9- ÷¬§ ;W'·Û*’J¹MÕRf#çwÖ“ÚøÿWz¥Þ›BäÇí75N©“¡(h<äíj31%ØšCCgE¦ÈFÑ#@mRÃL$TRד"«qR„;/.¦©û’KÜ"u2”ú®’ËO‰+”èºÿôòµð78 #ètã ¹-õEÏj)N]yJÕŒ—”-¢3ê>?Ŧ¾¨¹T·E Á2§+ju7DíÏh+tú¡ÖáÊ‹h‡ nŠQõRiã4D­nÂã~¨ë©*âíPC6ì鄊Q•zèjߘšoß}PU>°î6¨*§ŽKG+T*šæ_G¿þ¯ç/GÜÀŸ´¤H Æ$ #„¦ˆ ¯žRñZâ§UÓëÎ#ÔV¨1]6²æ¹ñhܺ„Îð<¸p”è)º½?¬á5‹†<¾^Ë¢lcñ´h¬dBþ±ZAm@ù°Ûö‚´‹FÅ8P©•Ž!ƶ—ÕÌ TMX„Û’5Mü&ZUE‘àé}bIä°´‹¦÷FLÞcî7C5¢(®ÝÄ–ÙGÄ¿wŸ/ì_6nylpP¹"ÞþïKMdfÑñd:Ü;‡vîz5¬0;T½¨­v–Q:­y¦Š×dµÞ¸U]+_dQp¼÷œÈ+]ý¢uø •b¿ ]³Ñå–#ù…–Á¶™0%`›­½„†Û¸‹l¶ÏÈ1ÍÒÓ)¸?¼Dþ¨ð²·}äéŸ,9x——i‚VÄÆIMG ž!¬¤:;xgÁ´tË`hg„A€ïÄ= +5#0’8];Üé@„}N oŠ ;ÉH:"lY‡‰u– «N‹<ˆÃÚ[Ñ8®ÈUÅž#p"S!f;™ð;£b@]‚,W¾ýb¢ïI¡'õŒc‚¶½¤Mxh¡bDJg>xXâ.k!»ÞåH Ö²'°‘”]œk!j·O€°0\GVXçXÑxëåü…\È·‡2P(¨“®K«3lA.R 5:{˜ôaðÉþ[w„} FdÀÀ>ØRÒÇÁ¢.Ö«ÊHöc» à`‰€t:PL"Jo‡âe‡Ö¸, ç[s}F#$iÝt¦Ëªf”"ÌDaYá¼q•ä?ú¾·Ë’¿-Kžª^bŒR=–¶ý$¡¼ªt?¨íÖ0¤ÆL#}v©«xÜK è,€Ì"ÅAmØô'²ôWÉ‚èË3mÚÁ‘+1´(xA×"_IÙAd"(Ö‚}·×ÇA’½‹ºo[oÕŸ¢ØÆµ‡zzéWóqÖwP%ˆ;¦Ñ&¢YYìNaÑm .§Aª$® Bá»NM á‚S=¥÷¢¸0‡êRÀ‹°p/Ó9²Ü)Ë" A©oísv†•·Œ½³d·à ãlÀ8NNËwSEåžFõäsRÊÌoÍ}Ö+pÄJ«Œ¼"¸ÍºîumÓ§¢E,«‰'¯æft;TÑEç†éÊì"sJU”.wSù‰b ñcQ…ÝËKA’.f7u…QÐæd8ÄÒE릊0]J›xYŠÎPÇ_ºÉ¡±9ØYÒØ„û1j4ûÙü¾ë¸þþ W~œxAQ]—¦úëèCKeúìr4HÄ]þ™N».&pVŠ¥m¼>ðû|H6Áû¬ô Za#’Ç+ÿͤ(G0Œ`’é:ëCÑÝ8º÷{²Ð¹ÞEÎɇ¾J*!vÈ#Øïá»§ˆ+¼J¶/Ñá`áîÊÙˆnÙe Mf¤×í©d8YÅåÆÔÇêJÉÇI9¤á‰ÕÂ9J^â¦És*ª»Ä_—o%jVeE.iÀóŸ»ù»fEÄ,Êv†U´‰¦ ‰(·®‹§E[m9}YU˜ð[å¦ï¢˜o¼\¿¨Äúæd!逮 FUIHmç`" ?“-RÀ¨zjʉê|”ÄA’\Æ9Y¡>{sØ?h¢pÎStïVõ‰[•ƒ¸|€rÓ£ ºNë"ñƒU†ò&íz)V{¥H°+ä)Œ>í$DêŽÜUíFä‡Ûù5;E9‰6 )ÊI´$Uƒd@90])‰Ò—Ý›Ð@Xú07Å.5{F.êEvwršÐb JJRf–ã••  ˜&¯Ìj(`á³U·¨á„”G7”¢ÐMñk‘Bš É—þÈ¿ñjþŠ'÷Ùë¯s(öãhí+§ÀÑ'\ÛDÊ ôr…v·EÀ¶KÌ‘\„"¶E$«GÀvh¸D—$bЀîtB¶Ö{캠ƒ¶h=Š@w9õ•§è;Ø:KTñP/Ém0d98n»Dëq`6IoÆ—ŒÚ ÅoéŸ~ a9xkHI>+zëféb7)|Û­©J­®²v¸?ìJpÝ€ˆ¢#¸Q‡CiûŠ(î;gcëà DŽÛm¥ROJœY›@ô›N2ˆªU!{³Â2"nªU¶|3€Hª)T ©ýQ(ø°È¿Þ­§]—Ðü+E@³SàNý^8êŽ*(Þ‹² "ñø‹´×áÏÙ‘{*K¥)ƒGÖ„– PÊ¢ÊÒ -¿ ê#[KÐÅŒÁäfi¬#’AQÊ™YÈJÇüð£Ô¸¬¬›@ßx-­ËHÊMÙÇ„H5=Pˆ'dʼnœÎävÔ<‘=Ênò3T#BÄR ˆ.Æ&Z™ÕyÓœ$Êëf™’ÕÔ•§Kö2J/ÓêÌô_XŠ Á”ràŠvߎáSÖjN"qWà&íÅ©bV+7BëÜ  i~Ëéêk¯)8VL‚‘Œs¥ë¬ÇàK„kŠÃ#àË‹&ðUµ"ÑœyïQM–H±d#`“=Æñ+ùgs'¨ƒÀ¹7JéÒGrNÜ(.'s psQGr†5ȰÕweJ¨±¹Àé—Ä9*¸Ûɇu´v¤“Ø´ÜæKJ7¿Í{ÓЄºãƒ¡|€Ÿlj6«œhÉáuÍ$N4;9Ò¢~Ó茛i ù'KpHEsddžª´ÈŽQÔ3•],âK£êG %ÇT¯n©,ºÄC'VE²+ù°•èPP‘Üg\™àæÐ'h¼Œð¿út¹ ÊÿêUq)hKî p%pâäí­VÉ3´€²óÂ…V:Q‚´‡Ü<©« 7—tšû׉'"âjÑprf´¦AEQ—j’iì)þð=É6HlÖ­EG–÷ƒúPJ®!²”‰u$ÑZ¥ÞÙTæñ gٯ棊B#kj(k³¨e¤@¤H›<Ѧ”ŠO–æEÏ=*V"h¶˜û,}µÛ-òÛU°¨>!ÓÓ•!df?Xôlª*z²Ê`_‚е.ŠòôMÍRDü@CS*rI=ª%¸‰Èð¥E„ Žô@÷rlÁ)#kPUè`D7 Êr,x²þ# Ò7Be”h‘6KQHâRù ‚¹”KLmp’ødíµ •Ã'ñ© ^/›]ËdIaFÅî=7T²M@UV¥´0ÈdSŒ¡;“diÛ‚@;%@X÷µ“Öº‹>tíoQƯæ/Ô·6!¦”Ž Nõ¡*N;è☖Û}‡Ë¹ºû¬€S]Å®VÀéšý6§pÅñíOYMÀ йj\q±œF,éŽ?ÕuƒJhÊ0¢qü)çn´“D‰ ê¢íPbÕgIA.Û©+*ܬl5NýqFBRLI‘º3,Ù‘ÒºD9‘ë†+ŠMYºÂG 8Qå>êðDlêJ ÃBBšä`¨*(µJ?_]£D¡UmV¬âURý-NuŽø…ž0jUj)ñ…®V6æ-Š\ÑxDÎþ7‡ð¯å#)(§D×›%}“R<ÙžVW…-˜B~˜é§H}ÉK«âŸŽlî‘ÔgA„**®’´Q«À,2*Kçðôd“?ä>ŠžJ'ù–MôTÀPµÛ¢J5ÜX©ÒŠ­Ê—5õè‘(Ÿ99jNO%f-vy› t‰5È!Žx:î$×*®©\áP'éõ•ãn7QY‘@«¡rÈ¿ÕéÚ·>­û¯h÷½~£Ôo$¯šâgÙmªzB¼]uwO¹áÞ®dxÁ**/~™ b—Ê: ’Á:&¢Ó‡¡&* .9“O+v/\7U³{)ù)n&Ý¿"ÄK³Ⱦk{¾ÀMd_æjYÂfìžÙÑ2®÷µºZ•[Ý?Nèc•¦‡°»8³w{k=¤í•ö‹òXi4)a!+â£,‰èÊò¢ø:eaA¤QÔ¡‰9fÄ$’ OwˆEÝ®<Ýa†¤Pu°6Y¤k:RňTCŠ&²Š®ýgöÆËùÇP*ò—E´,¡ñÆB’/Tðm?ºâfߪÖ%¦ÒÔk莞@,4ñü‰›g§:¡7Â"`Ý=ŸJI?Áj9¤chåžùóKò ]ü r"tbBdŸÖJ˜ é¥_ƒá7¨g‘¿%j5¢Id_P¦C™²*R!Z5'ß!ü‘‚×ZN¢ B·"ø#±ˆÕz°Á-òî,í©¨‹8ü¼K¼\­ãµÉÍì=ÛcC&Ü£B̪ª J—N’XEyºUW7ïguIÓŠ}GKH=qZð¶·Ç\B¶MEùû³d4óápe"ÒCÜ}þT]ÂueÔ´Ú¾ÁüÉYA÷0H¡HŒ §³•§ª€D÷&#ˆ?D/NØà UèÑnaÛ¾½HqS8ÜP~ª¼(Dm)1 Ëz»Ô‰±ªž*I¢uŠ ‹‹ˆ‹•—]¿ÄPâ΋²FäUëD;‹F ‘÷0 þÕ•³;OSÃo]²£OURQóœÜ{BuHz·ÐŸjº—8ºfÈ,£‡Oã ŠžR…¯zWâÑ“ACno°–¤€ó_;N[I¢Ñ•4Ï^ö]CzIãGWW':{TË=‹ž·tCJqíéœB¨‡o §qÚijŽ /¥úÎîþ`Vžž¸èRp× 4NYÊÇ,®Œö=ãÔœæÇ‰.êô05–5…pÔZˆ&Óú¨{ÅöÙã\Íõž½c–+6SªÆ˜ I¤<‹*—FÚRËÙZÉÅpª€7K-š ˆªi©Š"çÈþeyGØE‚(˜©¹dmÉ[vNpº d+R/½©4S㬰|³ª jŠ{÷â­‚O³5¤!~¦Œ¶sÛÝ$Ѓ·ÀàOq˜÷^%U‰Uœ® 2sÿµ“ÚÎFûEÄF2ÇZö1@ã†"ýò CD†Pφ| úónUWs]“ÊKðFJp%ܬÊ0sÆÀPÚˆŒŽ…9Ã\•ýYQ2C6µTÐZ(…"zµCçizy´¨›L È^UÔbÚ»k5¼ì Rr«A§2Cì MÄ÷ð¦MÎB îÆ“›$òŸE^•X:Z¬T†ºi—íy¨g¥‡C¡©QC‚ EjøÝ †–ëG™[:ÌÉý=¸VÖDɳ­ðâ‚Y¤}ƒÍò•‡eɉFB21À÷‹Šæß6IOâš—ûŽPWJä¢ÑHSý%!Ñý yž“‘Ð,ÃÄÙU“èÔº2 oß8AÖÁ®&X$N¿óJÞØŠ}Q3©¨,Å(Éà€᥃D.9@m _£Ò£äO•„xl㌠·F´ÂAœµ°JCˆZWD»[ùŽfüѲ)®ÕÕ¸Âﻵ#åƒä>Qw•0–·2æñ ¨¾aP‹R¡+õ3t¡:êN6“B$Ñà\yö­PdS%g ‡¤†b˜ÜŠXÎ]áð‰”„8ÉEyxÍsIí)‰Lg…Qñ!¿t Â.mQ²Sã«AI21B¼äÊ.æ, èì^G`æÆÌã©Þå Í]]– ³éG^%¨˜\. 1¨Û”#wÄÄÈV7õgU ÜÊú=euÄ2ÞßsDöj„?i(iŸRØ¥:Q^¢[†uÀØå²„ÄûBZ„b20«lšã<“k‹pmèÈ8)ÿcløt³(W†äú¬ÑÛ7 ŒÛ2­Ö§js‡Æˆ90V™5áÃre…ˆá/ r÷aÈ—Õ Oié‘N¥ûã‹¿¿æ« 'œ`|ªë`n11xÁEjCÐÜÚêŒ/ñĪèpdà–‹òRU¨lj»¢hL$ñþqÅܲ$#ã"[Ò¹-±6&Jü5WB›ù}9¸Ï¯Õ-Á©3ã2e«çÏ›7¶{?ª}ß:ìÐSë°\5ìî;§‡JdYšB@÷šU¾ü¢ MÝÂ(‰dHnF¨þ´=T.h1,ÁåfaT2,î„+ú–û"RHqt½ÂômSCáR† Ì¢/Œ¤ÔÔÂÕCÉJ%ø>§(‡VGSÕ Ór²BF$§)äêë 2lvP[w×aš<ªy„å8Êrï5ÒŸÐ3§†CÊB]6;®=õ÷ÄwõíÒ——Bâ‚ ÔB”ξ3, ?•u쨋‡V&"µ$E¹.É3œ\B„üÄí.Ð[)Å4›–ÕÔ,N—¦{°ègEÇ5Á‘rÏ*£Â%½0é¸U¥À|ˆ U¨øÈÚ IÀÅls€Y·–mwš@qhÒÈSÿ4b SCÏãÛŸ©î”‚ú#ÅŒÑ(…¦U=‰$l7HÍ7·˜èY&E×T“.Þäg©S»Tó&_}àhRÄtE³Ôø£")nå-À:zãÑ}ˆ¶ªž‘Sò}"­pЉûQÅ K¥b¥þ¹X³’c!øa%]\EJB' ³äN¦Sn· ²RÿS:®qú¡>"q>јø>¿rއåÓtwgõúì£Ä°çs0’'ÔèS“¼yíέ†óåc.Ü´t|>’IÿÎlëX q “Q/ã>î“T&ng ©Ðåv”¤í·#GÖÊífÀ­>'¾uDÞØf}Uï1TÑ…=`HqŽú›tŒ«jéÊÀ¸«uy•ábLXK êOCí¤¦0•÷’EÏEz½‰hRÔC±O4ó ªGžãXeEú«Æ¹»–¦ÞÞÉ×»†œÖX+j×/¹«ÍÅþyD\é÷€‡HU„dgf³ÛÞ€ŸøÑIu>’šUoCW†JûgœŠÖ6$7ÛDÝt!)ÂŒS4v_t–TÊ1d¨„2†ÃÝl‚š¼ÚÜë¤qƒ#.364&-C¶mo#ªˆüКúÇËM—T-ìž6|áËäoš/2.ð0çºF‡ŽY× ™X“<éó 6˜xæ@kèý"TT‘i5N/fú†¸OªD^Å£'DÕÀ—º*EDm°sˆ40¦#–m!Ž„Ý±jô¬cœi!D.šÊLqsƒ!ƒÜªz-¯¥ÇdÊ—´jdŠÆè¤—U­1xðwÃâÁ$¢¶bl§“G‚‘qn§ITw¡ áß2Ä㡹 cUG[±ŠjŽîÊj(çUõL]œ ¡To ìž2Œ/U^'HOOjE†nè²T…DQÎ «z-S &z †d.õf“1&Jб$£À¸RŒœì^0Nü€4ûQðô­-ÛÿklgB¤•úÉ“H~ãï,ŠÁÍ;Ç"±ÚÚ?In•<"ý­¤×~.J+ÃEž|(hFBk[5'Õ»êÓÕθ«z-Äø•’w‘Û¤¥9ßb•2‚·=˜}—„ý†yHSµ ‡DpuÜÆ  0¼È*Ì ™œ?njH—\bèYŠVMç,Êb¥>ˆ¢W¥±»û¤w÷§AAí”A˜ºôvR Æ™7$¥’™ÅŽA„ ΈBé–qpu—¬3c©÷~—Iÿÿ¥Õûßþ×ÿóþŸÿú»¿ü÷×þùOÿðOÿºÿÿïÿòïÿºïów?ýþÓí¾ùûéÿåùéwÿðO¿ûãÿÎ?ø—¿Œ o~ó_y÷¾z:¿O¿u¿õ—?üä?õÿÞXçúͧ+ÈîîÚ‡äü»_¸«ßÿÿöwä#Û¸¾éÎõúÀ¿ÿ·¿ÓvÚÓ¶~é?íoP‚d¥ôËà`>¥olì;ûg=ýµ±‰Ûcè"ß?®'žÏõñ¡6õR¸õWäÇÇ¹ÚøôZ‘ž-Q—ëõõüP^gŸ_»ÿêz~ø:žø2ùÓÛ¿ô'Ÿ¯óº_e=~áÎþãÓ/þËO¿û—?ÿãŸ~úçýË÷—ŸþéüHÉe»?Û”_üá¦mt¶™úP…Ñ$º }±O†ö›Ï+îÛeöK_½ïdIð7ŸÑ!·«\¥îÿÙˆ’÷¹~óýs!³w¥–JZ4?â«u€Ø DÇÃl0%>â•O/Åç7*¹î÷Sž¿îß¼xÿ%þPái}ô~?Éûî ¯uoûR÷Ü×ùþÞöçÿãGkõÜGúÑjÿòÚ/ž²í·ä‚ð™~iŸn;ýñÙºiÇc§~÷Ó'cÑ~ó­¹ÃÐîc+×þÿÁÞýó?msòÇÚÿü}ýÞ+ôñ¿ûóÿÝO?ýîß?ß^ýÓ?þãŸÿð—¿O¦ŒµÖü%cµZúÍ/ÍÒËVþpÁÇÌ|²ÊÛgZÛeþ¯/kú³ ÿ³Öt¬ò³­ñ‘8Ö¹2“ûÌìøÐPؼFÊÆÊsû4±÷øìykÌË^¯CºîSûq¬~ ”µçÇùä•f¢ãá™Ñ%胈eû²Äú“×?¹—mºþð±7Z× =žªLƒ§ôqnèãþ«ÿø¥¹ýÎ_±ac/ø2ó Céi¨0~ˆPÒÕñYÿËŸþá<ïíÿÿþÏûÿ>ß¿ü_Þ«õÿû?ýË^·ùÓO¿ÿ·Ÿþïßýåß~ÚþúŸXÛ=_uïÇúÙâø…Ñêõ³!1мA§è(¹Îûýãƒ^¬}ÀÛ~βÁî>ڞчšHÕÅ+#ᶨ½îvð>äú FŸô-µ@0ÿ@Nf®Æ+%úã´±¡z»¦É sâbACʺò^±=ñ')£íÆ·eâJ\v ß‘®©oÝïlÀ W PĽ j•ÛlºÙz‘Iaq&ÿÀívs#ÄÊÑZþEpÖ24$.uò8´Õ5–î®Ñæ!±RáußïJY÷»ý–Ú>CÓã§](œe¶>ÔŒu&~@§#‹~c¡&J_G_2} ªdŸ_ٛߤPÙ¥ç;Í£M@ö¥D¾’G‚ó­Eƒ(|ÂÁÍ‚î¥æà»ûáy‰P…÷hb­}ß.-š²]Z¯´¤O´BÊíC ÖË&Ó^ýƒhÉ~z0ü¯äAÿñÕ…ã@[`¶$_ÌZD±š8凴ð·«öAs\*Ô †£›Êó\ñÞNëë>qíßx=H¯x@DȧJ'|ë§±@ýÐc²xé{ÒÆç*êþÞâ_Ÿ‰Š^š1ýøŒÈwÝVl˜òÓ.(ÝóƒÑôè{#»Lz=w}ÇE–@1ñêt0 ¡ŸéÙ›W׿¨•pӇʖ{Õæ G³™I`z¡Wvöå¥vñVÉâYÜ ùPž,jüq¢&T£{À+Dò²Xê5@ÖÒ|Í}’ldF DgqæÉþÀ$Ä–j‰êmôkêyïs¢i­•\³^É×Þ“,ܯâ¦ùÙšŠTìËåJ|d¯J›…íÞïùÿ *zÄ~Îû•C%­¤ýXk×ÐGøa] ·Õm8Hâ\‚ˆŸ†}ðŒ/MÑ©F7ÕÛ•5Tƒkï†íƇáºèÖÎï»8‡¨%‡c–Þ ûC"Êú@åFu7{]¬Õ{ÏêK»rŸœñ.ªÊ´PIoʤRW%a ?Ę¥_%Ì=«æ¡0C ¥:¾Ý×îQ |Æž$}ͤøq$ÚØ“¦õ²Øk­½Æ´FÃ~pü΂XØÜ†„åA$YÄÕ*[ÕÈ)&ྸŒ×ž3ÏøREé=9ú«óEå°QÕ©þ%–zšCkmä›A»‡BL¨ß%=Õ‘¼?¤ Úõá혲P÷ìíyãUÒLÐi/0’¦tú¡ Ö°%Xò«´ôm¨·™êú‹mPºïµëŠ{Õ- uÎ:§R©˜oD«µîSÁ'{1…Pîq– ¾üÀ2·–FÓ¦ëW|²ÌmPxät”F_ÑϾâBQAr$Û¶>åÜÉ^%弟~x¥ó¯ÖGNºí‹¬ Ëp¢DÀ)U}>pÐê§_t…æ—X˜œ¡þÀžˆª$qtÚÒ¬”‹ÛÑæ‡—)z÷¤L›Q,wŸúÒ;,úT­oÙ‘¼ ºNG`~,êIìÔ2¼Àh&¥ÏuÖ:ïoüÙf,ŠyYs¡«Ú°w4̸0É%¾I7²'‰"œ¦p].µ×¤fÇë-ͪ}U/Oüö&.oÖŠŸÅñjk}5=ñ5Ôr“TLÂ’TBжÚÚ¥··ïÄQƒß̮܀}°µJ²ôûÀ›á²‘þéÛ÷³ÕÚ®Ië†À&SõÛ·m'˜É<š0:¢ r´.Øú’iÁvÛpÌâÃeÆŠß+³4=œ:›ŽÍÓ"úð$}ŽþÚ‡J„àØ ðJÙN<:¨(%û À¹ÓMîå Õܺßß°‡ü)ùȲäu:[‰g•‡]ÈÒ¸‰Ù¯ä›j¤9ñ‹&?£R<Ï~›:·5IMˆÁXÐ"äù~2d´¶‰º£\štó&Ï>¯¥9‘ã­˜åÏž“½3¸û”(e/’+ÉjÕL~ÆþžÅÞK—[õ¡»Rõ޽ìï%Êûõb/~þ¾,uĬ ?o/×$ÿy¡ ƸŠ*dm˜Þ糆uÒSLæµeÝèZ, q‰Pâ†Ì´zØÖ_;íxÊÝ#î˜bi¹m;³Zã{a,{Ÿh–©]ÔÔýsã;‘zÞE]Ún“Ÿ»ýP;{o‘O§óö gÕO 9TÈþ(¶È(¤±:‘U‘‰ØG‘ö-þ¹ìòÞP|á6¿UWØ_y“P\öÙá×Ð"Þ§ôwÈ£Ûáé61°ÔÛ"ÿña‡(i·n{Å:Ù‹pé;ZPgÂuà9/mÏý|dözH²|}?R=,7S¶WìSä;NøzbÔr}Ø>%0Ðl)“ìC¢;¬¼r—hõé_•µ¶³ßôÂö>dp`°2 ¥É´?÷lã¾>}D{!´då#¤t)|÷DwPÝÛöå¼@Œó’pñ¡@žšIÞ“HÆ '¯¢õ–)¶–Ï_1ûôJñPµï¶G´vÅ€gäùoÏ ÛÀuù½ }ÙÖ|Ül˜»„Ͳ~%Þ9Z<éíiš&^îdS£Q Î¥?¹:Úx8òšqZu A6Á Ø8`Û­øû…1äU²®!¼ŸypÝ»C·s±]?Ô—~=)¬ P>(¹½"?×YÿPm.½Q背7¹NàmÄ?`Ï]Ç^²ŽÈ 6¬Pª è>Ðd‚Ó ûÂ/®(¹ËKÅpúÒJ5<Ì—ŽŠýÛ’æ„3$ÙðoÀ/â(aFg÷¾Ö–Ù[ªz 7ƒ:Àô5êvyá¾ü÷áòVÊ~#f ¨zìS;)¯tLrl¡wõ‡¤ “M:?T‰8“r¹]›ñ cž·ÕùX{¾÷ú¤¬¥ ;N¤<;»Œ&*Á dC\lOð>ìŠL¾ȤÑó W vÁ SžVS. Êo&ÏNÓ„É’%!Fž jϯ z#Õþ)C€0'ä.ˆ^e0´ ÎOu´i¢ã ¢§ré—f„| $X2Ì á¹÷¤ú°3ÜfÁ›c!¹\{ácÌUìi öÊ”Ši$B/¨üÊc½ª:ú8Q B!•Â2{Øwä[~OSLÛ¤P”ûfÜïªÄÇ>¬ 1¸º ¡ƒFmD„`O¼ö,è]ÏbéK¶m?¼î§sÙQ¼†7ûß@zj2Hø¡É£’Ð5s1’°ä ƒSéÈq%Ÿï'G ÕŒÀÛþøªvb|ÈWÚ2hŽasè¡é†6ø^L(Zp{æÈ¯Jn$a®kCð%]žý˜0ž‘!4Ë…ž˜`àE P\}&Gœ—"ág¢3{#.üŽK2ªœMÐ=éÚSX(ghã?j*i©–žÄ.0>°ðþãñˆ°¸OA)H“ ¦¾LÁÅÊ·ÙѧÖ^¡Îg…@  W¶Î^¶ºË1©ýàš,L®±(·ñJúš}8,@PI~» áU±lëòÛ&ñ›WD7:žGfp6 ŒSi4½~ac•ìѾelÖÀnËnÛ^]Kl;²Å\¤È=Ž™ù¦æþ)øÔeÕ·«îL+:üe äšî¡TP.ƒ¡ ~}pm",¿A§ÎÙ̱ªÀMÍ:J(WÅÅ’]N´?€êØ›Ñw'|°?¥·šõ¡WhnD :‹œ"ÚËÙ½±¶•|Oí*Ã; o—£ëInÃ_å%biõÈ>6ÚõiÇæVJáq ÐËßÝ=fýj‡1U/-¬ýyжIð¹K@CFåêÙ!èû•í\¼S90 àxÕÑ.\“¾}eûüŠ b Ëåñ^J¾ÑxE‘îrâ‚c¦ðòsQ/½@èÝ¡mçCQ÷![—Ï«‡ã¯;å(–7Åú&x‰(´D0VqìnÊCÌyßÚ‰$Ë2§Ñ}ìv¹|CqP µªÒ÷Áxu¹¶8óÓËAŽ£šäÅײt(W€FðÚ¦ÞàjÊ=êLµé\Ðérž÷­CÁ„«¢xUJ8%«pÁg(ÙŽß¶ nW3'?~jäA8ªk¯~ü‰d‚Åûkÿ¢Zb¾|Zìsijÿïí*¤wùxTÓ­ù[m}óÊ>_VFóC@iÿTÇmÊ‚%)/m´× ìM8—²)nj õÍ+’mÉUÙ–ÇwÝè‡ÃÊ“× º­Îo¿€w¬Ó’އ§hÐy½Îž’½®©›C7kê9mĸd_¯õˆ„o çaqXxeÃ}cÚ`Lo Ђ4€w¿·‰iaÚYˆ½iTÍÄÞj䙺xÂì„tìØÎœÏ,¸Äs#ZO»+Âx#£${ñ=;'¢¢z¼zGkÇJ u_½°·› —¸ý6ýáC+/“àhZÊšOjìRÕ׃rˆèßvÓÞ¸—B—Ûõ¥ ¶¯«*å³=¶a(X/9ùäô4éÛ–ì§P„–ín•ÏVŠÙθx7•Ý¢¸ÍîyÌS¡Ò^6˜HÁÿOGB¶W ÙðÁ ÐUp£žÐ OŒ€ºdÔÄè=¬´¦ÃAMá ½}œ,ÛKx,Gi«<.ͪ"ÍU¤CÖ AÈ0"ŒµøZ’É 2HûèÞ"{Cè3û*ÓKÑÐmÿ²0Û\žn,ÅÙ‘¼=;ÂG++SÙÅíŠrVaŽå’îßÌQ&+úžK„N“•äš4´3>¤ÑÉ܉ýBÀN-äìR‘a±o_£:®»2ߟÒüAtHˆŽÀÕt9é´½3A6a~Èí cR2Ʊ; x·Õ°3¿W|ä¥rÄØ÷RÒu7òò$\Õ4¢wŽ¢¶’œrv6êT'uÃQžZŠQïÍáÌTiZïÛñÉÊ×ì±âíÛã´Cë^¹d¤ý°ö‘šl¹"òÖºªû…íÚæò^º^)>¶cÒt=´~X€‘Ù­GFÓ˜p/ª$£%@ar\–§¼ßÚÍ“ÕX]ðliGSL{/¼%3SŠs·û·;RG“Mçn‰hóMᄽK7ÂX;úx‡Ã„ÎÖURäbò´-k¾Ï!·×‰'ë#¾Y œ[°Rú­¬°Êo˜°ñÑŒo)2(Ûh£n_s{a GmÄ0µû'ª#hŽPS&c­GœQ!TÿÛùkE º(Š>%mýâ.V ÒÙãNŽ4_Š¡I¥×²BÙùÊvcÌ*ì §ÈÁö ngé&‘QMb³k?ê4Nž‘ Î Ú¨*©(<Ó¨Îôy±»Šêö‰Ì‘|ß®ðž:Ŷ÷¯¶÷¸ ¬Ý3Â#Ú&¥kIa€œ#é£jøù€gyÎéLf!iTyc­ÆªxAòº#À‰6Ö˜ÝNõv)‹wù Ä™ö³”í–gdÛråˆF ïi?=ÏorØ;•¤ ÙÞ˜t½Î~?œIéÇõH‚÷Y4 o¦ì ÑU×çöñ<ä»ÚT`íÀ¾íÊWü?ùæµ3B9&!¡eLÙk‰&Ô=l}K ‰§JîEYAÙ#’ UNúu$Š$Ò ›ª³ÒÛ&(U· wÌFnNzÁ¨ŽŽ>ÌÇ(ŠªnûZe}“Î3h4SE€SÎæoL•/݈Snf!±ÊÙ\l,÷’ËY§àÒÓke æm»¢‡×»S{ÆœÁ½²œêíÅÄÉÝÔ’ˆÀÑŠ½)½ŽY•BjÙ¥é[Ë‘~+K`d^ß‚?ì‡}ޤ¡tä>å*ó¯îq¤H´­Æk^‚@V]ÃÉvÕ;+ó8 ¼ÈÉ<ÈöÖ«7Q=ÆêPe¥\ˆùHŠ»ïí¤ÇšL¶ …c–½íS¹P°“Õ)±‘äµNæïÓ¸,¨ö—^giŠSa€ 'g‰)ʸœ6é )åõÕäè´ `yð B=œóuÖiŒm¾5]st! ‰g òNmšú=OTÚAˆ¢ÚDßTq}õ£ÎÄ’±ˆ Sµ—‡Êí\*BMrM7ÏAþ|á"?ØÞmS«æ5]^Ã-k=AÄó†k¥›F2}Zî= µ¼ÊòœÚo¡*„­eM«Ò?““Pg9µI_ÎÄ'n%¼‚ÐuxïÓñâã^{yÐ9‰¥†3i†}£2–Õh‰³P ƒ¤‘cìôcA^€¤[ƵטÊÇ,øÂ1j?ø¸³í?é¹Ù®lßÏ'Â^'ÓA…«]:G÷á—")²œã%”e8Eâ©#;&H åAdà·ç~\§k9Ó7G')J%"9bð»Öp>¹Ñ/šÓ(]ÚñðJŠƒêh²&…ß:‹—Q|š^{-‡öÂιWØŽeƒF,‚êƒì°D/ãÞAŠEÛ‚¶×ÄÑ \þÑá­¬ü!{Šdˆ‡áɹW D¼ž1·ØÏ§J$,ý@㥜í6'ÉoÖ¸UeŒœ²ü>à½Î–3Å‚ëÊݺ ž3³r[¹ñº’î©pÊÞ'²s°§ŽsÔEÊhfK’D,ƒ 5’]œz9|±q®àÉ^=T’y¶Í}k™D –Xˆ³Ðk‡ó”®9Áë*ý†ýœ—cÙûq]b OÓ67Áb ë6Ks"1¹E”•j½WºÄ¬^UÍáS°ƾæqimåJˆ…¼‘͆Í:êöªŠÎËÌ p”ÿ½ªPV'oîp7âƒf LxæÇuyßì£C§!ùƤT2v?Úx~û ë5z‹Ñ)Eß„sœ[ÜÏ$%UÞPdû½ò‹å{öˆ€Q{Ÿ"ÎðšÓÅæTLëö!Ê}s²ù¹¼‚ùjeÐ÷ÙÚÄ'ïŽÓýñù²-2É÷+Jð8ÄìΘ¬)xI†m#ÏseŸÛi-ÞúˆØ!ŽªîSÉØFWYÎu‚ *ã«UVµ®€3—,ÛÛQôŽM¸îIÎã>ϼÃ:"ÊãNiú)8›ZÙ¸ú$ <â,QLbûµ~ Ûí”_JTÒi³éTlÍüöš4¡ê¼°±‚}!yœºQúUê§Ic{oZ¤Ã¸Ì¬ØîPÜ(î(¾!=»öÞWüþ2МNƒŸ…²Ïè´>/|ùÎA ÞósåÏȈk|ïß4ƒ¥tùDáËlúeŠÝY*þî×R‰Uøy1µÔêçüí1ûÛ7*.ÜÛ>à2Ë 8³®èp‹ .w–ÈC.]ä# “?\ pæþÿaìËv¤Ë²³^%en@Êhö<Ì-ÏÑ*ѢܶÊm<=ëÖ‰È2¨/ºbÿ‘'ÎÙþë°ßô¼fÐÞÕí»+Kúê%”1“»±áDŠ—Ý?¢îè× Üe³æøíNÞ{´üDÖ8ƒ¤€±­Ðó4凗!ðÆ„øõËžmGÅ×p'SžXŸN« Î‘l€ZUŒäsOø¨³ Š˜Öád¿ Á"Ò¦¡üT‹ Y1Ÿ¯"ÎQqÆ;]¥3XɿވÁXc¼ã8œÙ©¬ûùÂonÓ÷ªu‰?ürÄËÓ¥]¥œ`GóÂZYN4è•}©yörŒâ­° ¬/è3> /• ÁޏËL«.ãqÀú;MàTò¨ÞÀN²W:YVü~t¶ƒMô-låqóIUŠ_6Cu <2“+“YmÜVA%—»v±ü…Z‡˜ÍrPÚ¯¦7àÞ€JƒšŸ˜B¨) .n.‚Éè³Nô ,‚¯âØ‚Žž*Øä!6¡Ò$a@}ç„ì—«C«š{^¥\s²º{@û¹ˆï<£¹ƒÔÀuÀ«¿ªlŠ(,v“wgÄ92 &s£Ž6/ñ²qTsÀÉš,g ^tH™õŒÕ@ â¶zôy 2-¥ ¾–Ã;yдвŒ ‰kQ´ÉÖ}üÔ¬ò6i*ò¦÷B¢ªæ &ò3>׉) È2´*ó«tEå6n/ä¯)£Ý?W©Ê˜‡Pîg>c%øº"%2­~ˆdM^Z<¤{׃™s±<ñ½ÈK ~iSI2`GÙW3L >~ƒ8_ Ûž‹PñN,‡V´à¨òxÍÿ¡0f@ ø<+z©¼Øz¢á?„ǪÍ4€Æ"ÛBWàÃlÃfø­BKܲ$iT×ñÿšˆâoÄbžV]JF>n#Ô×¢-Á› ±³Žðœ¥ØˆØáœ8êÏĉ¥<"¶¯XŽí–áÆÐUø|ÕM‹½‘pÆü~ uIp¡ÁîUœ»z>äÂ’’(IÄù V6îä&´´•{.¡«PTTg1Aãm‡%‰š˜p ¢Q»Âò}¸ÃcžTã²«ÏØHy‹â,ЇWQÓ6ÒˆÖ•Ó÷;„—"lèx¸…é`ã¯PפMíu\ ™d¯aö£O§Æ‚õÕ‡ wŒ¾FßêMÄÚW_f€±|‹è5äÅ8KXç›:Q`áú=^¾(tÓœ‡8ˆßä¹²îÙÖZ3#ãA”<ÅÎÇp¯Ê31V8‡.!£7Á¯âÜRü]gá™Öqöð6*Àšš„Úñ;§rÝÁÃ>‹½>Ú—yQ…$ãFа~цÏzLG)rñy_ì߯ͺqe6rzÜs ­ÜK÷Ua€'& /PÆlPÖzQ)¿pÚKçÆîóWèËÉÓP‘®ê¨WУ„VtàJ¤öKhB=“ãfwDDEt“F6\eÝAgì^jÀÍÒ¹7ìfÂmlzPzSƒÉqzè‹qWѯ•M8îüò¤˜Ö<£ã" —áh¬ì4XÂ{@®9ô–¨“O òŒ"gªâv ÎÞü@Dn¤îñ¼Æd%ï‡÷ 5ÅÿKø†>qìx}]G©´!`T!Öƒ{dKÀÚ=D A—ü³-ûù9ÐY«Õósª;B.\¾ö;¿‹ ´\ÿcä?)¨áÇ~ °DüƒÀÑiícBŸüÊ·+åÄsNªí>¹¬"6ãáßr-Eï*(óZ®"üäo݃æ7°±'É-ù¥“핯ñá¼ú,=›þðw%û¥þÜø1‚¨ý‘·bÕ9N6G»jzGF¢Ì¡•ˆ5 –¥ùu²Fɹº3W j´5cå÷kDÝìv Ú¿‹bȵ÷X+çÛyÊ"ºç>sU7üç»tÆöß±×GìüÝ ;}Âú€ÝyÀ^°7Øþÿ<`Ý–¾—:I„Ð> Íežº R>—¬¿8’ )³©wïž;ïîÏÀÊÈ vÅýg«ä€’¥ŠÐUs$vk‚&‹wœá cžÂ×µm–câ2+ýªäV[n l:¯èò7Ù Ê}–—!÷,z|1¶2R­z0ãð™ÌåL,¢dãôªÂCÚ¯©¨ÞUR׈æê\âÀó‚01³Š4¹F( Å€R±¹è÷@Ô‚Ï“MCìA, e±5"•Šâ6Ô8‰,I(éªR~W±dt²ÛeÌÝKUˆv&ʽì74¥e©=¼µ;NSpGï¾,Ç?¨  #˜e•0Ïɦú´²…–;—Ú%< 1Ð"v´?rÌcÃ*L*+’4 Té^ l=UÐwÞAëÈÕ´ž\Qû÷Aëý­¹¦ê¿¶¤î¿³î1+$ÓAaVë¥q!ÿÁUÒ™²Uç¨OÉZó#sÅ )mWX‹L–T‰óWP"åè§N Aüá°4€yÐÍ F³]ùUÝ)aÁFã d½Ëj¬ÎÕ´D¦¦e<0¢Mš(ô`˜·¥î¹Y÷å0IÞŠ,Yýd½duGu»Ëä͉¿‹ÆÂÜEŒ"â9Ä ¸Îfb¹^•®òÀ»EÀ„M(‘^¿Ü4crèðªëd…—À9íûøúÕ´ˆ|XÓ\Ìíwè.5Äò5zÛþpl˜j7“!ñûz«VDˆ§Nþ0‚)o‘a¶ð„´èîÐÌÑÈb"”·‰üblï.jÖïRÎç_D˜.x2¿ƒ9³kðe“ùÜÉPÃc¾‹}³¯òÒ°Òq‚8Üpðg]}¹>D=!ö5º‰Í]ˆ>wÙA‘ó§7ôiÊi„h¢æƒ1­ŽZáÆñTÎWÕq·òêVÄ+\(Ô¿ÈsÛN–)ÇA#è¬[AÕÄçsàÃÝê°ÿwÅ„ÍÓÔg¨Íùÿ V ÎiÕ-ªCɈh›‘ÑM}Å^nàUʶÍÇ?rLðõç說›°hM36Àí}ÂT¢*"ß<4YÕ¬G9Šv@oµR;ÝmP/.G*<ä8Р¨‡éwq(adçzÜ£¡c ¤58Ø,‹÷•ˆ½ºQ›»Hãéƒ_ ’ÁxÛÈ׺5¶Ç©d¥óÀ(EMØÈ ŽšÅGLë²ʼnƒH ½s÷¿Í±_-Ó%ü 1ª IZîgq†¶tŽD´ú 'Š›åtΉéÎX`œ—€óê+­DЍÍÜ7eÐõ:3?@4uDñnõ™b:O* tö»b³m†áªÍ‹¨Oq訿å~ vP~†+8Å/CÄ´C‰ CR&Ûª Oì ”ä¤çÀ¨I¢?ZQÆŸ/õÔ~Å9ÎÛÛl#ŠÉiE¥ÕT†Ž[ªì0N‚dmLœþ/n/ÅBXjJC2S!¦ûýUˆŠ!¡íªw1?`¨&ºïÝ…>W¨Šû#;ÔˆÙ¿Ô$7¬jC0ÂVŒÔ Ä µlÑ¢§ÂÐV7¹íè$žT ñPØîCÿø›>š°§pjÅ–|¬ºA ð9º°e;ö­X(6(¿ñ‰½¤§¡LŽr‰%;b(ü½äñ޵X†ªø¥ñ4^ DŠ œGæ«>L"àSÙ4Îø+†ë„ΊþHß÷€Ò¬êV,ºo_ÙfæÂ½EÀþª&Z£îI56£FÂÅø'kìñ9pÉæS“ôJh.ÖÈo¹ ký$Ñ>ì(®Ô7¸ØÛE°ºð;³ÛæS?¹ê@öþ9€ÂÔО`´4Wøª§´ÿWnåS†XC˜ëÿ/6~œÌËðÿØï$2ŒhÔÆ^ ´àx+çö¦‰µ»ÍE<\¡N)ù–Iõ–Õ(X‚P€ï®—r0ñT eÎÖ¹jQ5í,M”ÁŒ¡£ëÔâwlpQw̸ÔÁ#}¯c ~{|<\€ 5Öv·ÁXü3;¯Ð/”,Е¤CÜ Îƒ*e„HEûŒÅµ‘§F´ƒܪ ‰'Ÿð÷=Àm–’Ì¢†"FÐ~Y¹ÉæQGP›+¬ uîÜ®Mz‘6Q±Òe(¡UEòÅv1ñY¢Œà¼:b¯–”ÑÇ燽Þï}ðñý]δ¡%hž}4Ï+Ó™–TžßQ8‹Z1 .5äßkSPçŠÎéìÒé㉊MÊv…š8@rªÐv×ý@C ÛXÇ­sl툈ã8…rÝë­•SIùQ6­Ï­¢¤*Þ™ê‚CúÃj^±™3"‰ŸoLPñkUåœx>˜ú¥¦YÛ’j•L”+ 9—”gDÛ€§¸-¸)þ~êó ]aIQ"…ÞvÍÔYjCA˜òŠ(¼áýÝê‰HÊØd BÍäI5ŽËà” ¿2Š+uÕ6„IÛMbA…0î­Ù#±Ôø‘{iy¯ ·*,'é ”XW•‚|¦íÄþÄ;±t‘R/àè©o@' u$ѳ…Ù­šYFA§¦¨Ÿ£¦A"ìTeñQÂáSaªÍdàÕã,ôˆ6óHbA@Ãk+ÅÉliÍ@ïw«ˆˆÒy§aÂv§°®Œo÷!&*T'µÝ¹j„.žT\ö9!9ÅÔte†‹ÝNUñüQXé†ùÔu ð$“×’ãK¡gdDÄÇbúÞÚ@+ÃÒw˜š\¡) jµÔ^1¸;rÓª ,/©9Zõ¦# wºxyŽvß_¢cj²GÜ+@×Ð3ƒN¯…‡©Ü½ «?«6 ä1HŽPÑ6SY’›õêƒf'<΃/m줾¢­}§¶%ìî¶´Ô¨JŒÚ:ùoà2­:M(…‹\Ü.Q’g/•H%°©—/¦c…G!ˆÉG¥ (Vó,ëZÌÚ'à@:-ãJUQGÃ÷ùH~Y)®ù°‹kV ÷ª¾•Ðå‰ÄQWxà4ß*ånˈöGÒsc±ñ’a¿;t$;IòDªL‹ò!Z¼ln<‘ÏËîšö×j¸Ó¾’\kUç0=½pCíÊ.(rÉCòîn©‰Ë|ïö2L޳¼oU—;‡ð $êE¯œV{ÕÓD•ŸND: öj‘dÑ3Ë;FïV£YñÝ:SG=DUôØU™\\CB/€Úf;3C¨XôÄòR‘ÉÇnBW>ÕÚ@–$Ô¦©7Œ@ESk„>ôÝ*¾¬•Ѥ\Kw‰–ôŒ€ÈSA±ØRƒÈs•ßúpŸ¼^?…;YYœ2.­Ýrf]%©ëQóí»îçK„D¨ÓÕÒ” ÐÛYÚ_7 M‚ÆÃÞ";à¸Æ•> hPUÂÒêêi×c´ðí´j ºD8| lñRwSñv<•ú¿XÇjêAQeøjSvÖyuN®T)¼4ü  ”´·¢ºLJ÷¶îfÌÞçw‹Õ“Bß<·„RŠ`›\ \­é[·Ü.<ÝV¢”,ê÷‡Nóþ¦£ÏŠù×7n—ÇÌ Ðc\R`\Ð_(à‘‚Õ€ö²¡NïDåìy©ÉMé´U5c"6ð£;”ýúp¬ˆ-¾VÍT ÝO»[û˜›KCÌA ·¤£A ¤‡ñ£ Øw#íÒ}mä{Â-]jGúýEJÌ’XÅM+ö4ö- ÂhõJ¡W¯©!K{tæMœå‚QƒŒ¬Ê®E:M'ìR3æ[±ðµuð†™QTXáYgqƒ õÏœN2‡8Ò±þ%£Ú†E Eûroåliƒf-KžtÖf E<{Ô~å6 ³.tg>f/Ó‚vh!i5]c½ŸÐ^eà¶ßHsŠ‹Í‰…ÑvÕ€cGUÊ1üãÉ"ƙ娂¢ áh›~q¾Ô¥ëi³'­Xqáº=UEÍO“e7ç M8þ=iӚ˭ÖÔVS¥––ÔŸøK"X@©B¤^Ч—å¾ÓÕBcàô%ü+.(MÀ%µHõ‰Ž:_¦uM•^Í2‚MMÍêÞj\4ô•Û¡0DŸWô¿`b›eo;RßíÌ ^‡ˆ“‹äÊ1ìÿ.‹s»w ã9Ò6X*t& ‹Šîi+; •ßH ú”;Ìw;(­REgSꊽy‰@,±cOß‚ûöª`+7ZŠ(nca2€P”!4ª/J6×zÇ#Øà]ÇÊÂz®Ú¶\\ô$¹åî‹T@ˆ“)3jŠã ‡!q£2 Ð®£òø[±JeçÑL=:ª|Œ4PØYj‚2ãB‰°@©ž°_¢ÃX” Æ}NÒ¦°š«Îù*Jx¡5äð–AôlµiŽávïîMj¶§<×'1T†Ô¾M7¹¬œ›s.Ë‘Oíu1ÂÎU9¤ŠƒjÆ8’$0ÿƒŽƒwàï…ÔÕ¼‰¦Äú.wÏ yØ=B@Èùp·®®6Á²ïס;³dÃŒŒü¾”ñ'ì9¦µ¡c%Q᮵ª°ûT ÒÅÕ’i‚ýg¶f'-u¾+oÎê[›r,°¤@…g gƒ ç¦7ˆ“UëÇˉ JõÃr\@¼‚éჴ9ë­Ïë>åŠöúøÖ¶¬ëôŒà“grF[ÄyÚŽ4ä7)u‚l»4V£H=VÝ qP/`H Y”aPjn4ËQìxVWBg˜Â†ÜÍk'­˜¡¶99;@eûfq×èéè>”)¾,ªæEK`eýÒ‡}.HHjã‚òQÕøߊå42õ0b€±0ͪEÈØj•&xæ"°öVâ?ï=ŒBÏkžc·ç>bÕ»šØŽg &Ç] xÏ!̃›Ò¢­/׺YÄ®úÇAmYÏY•ØúåK¶M4áÍ‘‡¤_Y3!ϯïÈIÙå•ä6ëýUý˜Fñ}¶®2Tßú­Ø;¶b–c$Ë3á+Z²6b)^œR ½·eYшo%+;!ƒ®öRGeJš >ÿþÅ&HÃ’¯¨f4‚"èPïüJ]G¯_Ô»ÈRð5Xè˜]-Z¦ÿëü¢ŠmÑݪC³z¬"p3Û|(?EÙ§“ÿÔÝ2z.ÓBCq»OÉ'\ ù|LÛú±iÍÒœÒté$Gì°Lp-[+¤·"}§"ù7N¢ñ¤ö+H…6ÛVÁzWgY;VolWv Ù9Cž&A½eÿ"úbPy’”HZ°Þ©Z ^ó6ê‚$V!ëzYrwè¶c« ©J¤ˆ}IæètÞËH4 J3´&ßW˜‡Nr‰–GqyŠU~y3TbÖ*úûÇH9„>éØ38 |¾»]S׿¹V-¨ö<©€® 1Ó˜Qˆû³¤H|X·œ,¢°2(©R ²µ¢ÊÀ”µ¼cÉä‘â+ X?ÝÍË3¬£uÝÂèKPŒ8÷}sK¦:G¹OÃFºáÿõ¦ÍØVr‡§ÕðªuBb}ôu¿¸[Í÷+¤çÛ:ájÒ¥¨t¾–쎡–l•¡²2ÕBd0мÌ= ŸzYìW kÄå8ì*¢lÏí*´7€bÈ<µˆgfX˜8'ÙŽÂb\GjØ~ŸÙ£VŽt} ÝwT)UHS§X ÂŠŠ¬«¤;«±[BòèeaÈ]ò ‘e°sñßcq-c)Š~PFµå´ÖVÖX§Ê¥GB¨,„R†ƒ¹ßà CRobq^¡¡á¯—@›ý1B\XhÔS]” (´#!•Rˆ.¼)v(¢)_ØSMÄîÔl¦Cð8 Â=@‰^wÜìÀntþá5¦8Sqû¼ÀNŽ»ê£«2ŸÂ1¸ÈOÑëfÃT„º ?¦’ÖÔGe‰±X±XZ³—ШVšx¶…IàÌbc¶²»%l(J…µwS è,wÒ6˃ªD6*Ù[ÎbÝpõ;l™ãòqâÄÚ¸ªÈó‘h¸®Úa•O_ÌéíbCÒXoS¶ÐRåQD±­&×AãqîôÄãö±Ñ]åù$+ˆ^ÏC›áq%¶>¨‘ó‰J¹çÉØlHñ2Ü<•J|ä$oÿE¼aWß©¨ÏtáÇRƒ kd«T¸œµˆvx1sOiŸÈ¾¤)[ùàÿ‚ìã!w-©ñÉS¶ú¨¬Æ4 ®Øy}Ê)ɂև}Èj~ üލü ûæ‘ &JÆÆc)nØÆÿU©qþ ¥ßŸ†Ó§áCÞ> Öb*m¬qNŸ†ÏaXžå®f#äžÔ¾¸‰kAÿÖf¦T€K•W2TÄŸ¼D¨¸9ëDÝj$˜N:ø¾®ÂäZ¶û¶E¡&ÀÂî±UñR‡o¥NÜoõôPK!t§­nÝrÿÚ媿ý\}u in\§™,7W5ùøEŠV"›2žÁn~µvªSÙ)ìœRŒ³¹Š¼6,£ng`Ã~.ó.k†z^JÊÙ›Àö X­ÿýaUÿçÿòwóüë‹5?†ÿúÛÿòOÿõ~ûû¿û›¿ÿã_ûóÿü·L;ãÛâþ~Sxï^±{@% ˹A¸ë¶÷ùùùïÿôËÿñOûË?üå/úå¯ÿðÛë—þíüñ¯ÿüÛŸþîoÊß|ýûÿä7ÿG\Æûÿé¯ÿë×xÇýó¯¿þí?ÿöë¿ý7¿þù/úãoÿù·?þ—?ÿé/‡QÿÝÀ¿¾þáÿøËŸÿú¿þ¶~|mü*2W&õ5"°é=Åv|ÄçPqá-—µ¯» òî±Íò)tИÏg¨@ª1AmÝT šm‹ dÐãU´Xþu¶D£_odSõæØ÷£jT)iZ¨æ:Œ`€v'÷k@œ¿äeLìÁ”Óú‚³ùHS¯›v…ȡ޲¾,š[,âö+‘ºÈ?]ÿЍRq,P< bº´RP¬7…ñISkHhòcÏ@bS•=^à²r yâAïµdëÃÙÔÒšÞD©¶#¡ãÔÔ)íµ¾†À—úêï‘&¸pR2ŠCؽŠÉ!©° ¶/™'X?ÊH´qRaµ»G{.È÷„ø8W>­kÅRVr: 5"þ…-9C@ÅÑ»}C³Ó ‚Ö¥uÜÇ#{•Çú±Id³ÇÝB8éŒJΆð¨²f%³‡Öìl‹î=•;ÙDdžÊ>uam伇2 óÝûLdÀÇó]_kG]‹mF N*ýÝÛªåc~lh£ÍhËCI,)öÓå Žxvz6ó\Eàa9,òX´(­¥Í¯,±•·«òžËj§éLÍ禲1ü·ïNx£¸5’ÛÓ•Ìœºtmp’Ó*MÚUÉuî,Æa—Ÿñô¤Óq³y ªóÀ’µEo‰`Ó5/ÀêÕ?ÝË*ËÓ ôsrßißñ¢\M3ì[]éΰµ9‹²ÿ5Í!P)®Êð±·9,ÉÿBÙ£ñ§½¦ªBKP¼ñäe‡ö€8}+sÀ®œ›yëeΟC‘;Ö™OeIZ•ý൤,\–œaú­þ2S: ˆXNžv lÅ07›”¼ æ Ø=þ ~ˆDH–]$ã!ÂkàõÖmAéIs(ö™‰§»MÀÇ }ߤ2I$¢“§7Iyµ\¶OüwŠ Æ$iJ[¡ ð 5£RAwohXWûçPÃ*Lu6Ç˱ Ué[âVl­\bj;ùZCAJ™v‚‚áŠùWVÄLÅîF!NÃqíÜi¸\6,Î0…·Èl<«!±w{½Vû¨’)oT¸PZi<9`ƒú}hÒ°-̇ŠGŽJØ p1="a*ÂŒƒ’°ãQ-GÝÇîìCTý¬[IxÞô¹è;Á;×Ç+6€Òò ÞÖÀ«UgF¼«VÝ…¬,×R‰ƈk!•¼ T¿þfžjá¼vªi¨*6ÃŒ… 0­pò Ô%;¥aíº(¤ —JG§ØR0m”#VĪê”ãú൞^œÜ ˆ'–û)“Ü€d“z-l |bî5RŸ:Q‰nÑ£ ÈSÜ Ò· õZÅH)¸Ó@MÀn_7¬Viºƒðêem¦ ©-â1bãU¥ZS¬6à9ßÐãŸX*Œ&¤áÉÔ‚››NwÝÀø&ó!c'>~šëãµ6oôŨ܆©Z*€aGä_ÃPÀòëU…LOæÞ¿A$Z ® ­R:þ52¸`äÍJq4°öÑQ`˜¤‚Ï"•Ó‹*dÄÚ"صÃ0€é´Ü±«Ël¨vEqñô¶/˜Õ º|j©ñ´é®ÊƒÛ«ƒ 9µu Ô¤ -žüÇŒ™ìÖ î¤zÍÖš–…È!‘EçûÚznÕcp:$Š@z“G‘¯Ì=,A»qæ~ÉœW!A…(•„š–ˆ‘HêjˆSGS[Klt¹=eö2¾£Uk!!y‘ã] ).äÌg䢒üNP‹R•+ÝŽíA5:CÈŸ‘Z«µ eauRpÝÅ6¥æjßò1.ÛÕ\襰²Qmð¶ÇÅ<Ìp%…ZùÄHåånïPs»æz¼ü$ªÃH}™-îZÛ=j›¥o àSruµÒÔ3Pµ¹)ØËÛ¶ØT8ÂÎ}_ù›TÔc²Kíj+QEdd› ã@±'3ÿ,^Oe^i2LKwŒ…*ò;J%ÃÚ©*þ˜¡WõLE|^d¬%‰ôšºýÅêäG*´Æ櫯_š}&âäv–ÚI Æd¸aÜ““¥¹û1mÕ©a®UŽT’ k*UAMì šŸÇ:uÍál¤g…¸· îóž©2~ °*Í7X¯R_Ô_Âc·ù(+tVúÄ(ˆàxoì­}ï,:lGz°{h>ÙUíh7žÐ¤qßÓÈKìczé¬Õ…m½›ìG^‰rW»ÐhD{.ù]Ú[‹NŠúÅF1xe·Üô ¹ê7A2—ͤáf|·A…+æ‘ùm›;B’W§ÛÍhp+†:¦I墫¢öêš–¬X…˜Xfzå« Ë¸"¥?îv (tÆo×íiJkr”˵Ôô”êÎà ¨™…³Êc­¨ô‹÷ÄB­Qr%»PD" ïî‰ßòvŒD@çÕ¤<²¿6É"cÎâÓL@ ÌÅõ‰ÝѵôFñµôòÅ€Ç  {¨¹§¡ÐÄ| J–W¹(+%(¹°¦"cøê $*\5NnÏÿ!Åßm†G'yés¸Ò•Ö¶$ðbíbãQ›®[Ðv៸AŸá+[2'­¶ùÅn6ÕC›vÈEyn|Y,IûÐ9$¦ÏbªU,1¼Šní$²ÆÔZ 0…ˆ¼r¨tKùƒ$ƒC#ˆóy[‰ _¼#ÎE|§é(ôHD(Ÿ:érÂÙqÄí‡m:%…=Qш‹øåé¸gì¼ÍaIJ?v [ ‡¥„ËÙ˜ú"W–ޱ347YaHJjN7cJ¢›¸XSëÀ–—¶«ê [G–„â<îòAê¼…qÌpŽCzS úL¸4Ä’4ñ™R>EuL8¢R÷-EU¥)¿Y§M•@r®Þ!e›uMÈŽ@]i¨t𿲤X"û<6Ym8/ ˆÑoÖá-P‰¥Ôÿë/+\»¸ÞäxÂÍd‰‚¿ÏØ¢ å$×€µÄ¼AºÉ©èšHÜŒz,K‚˜Ø´ŠÈ_ÛôQq§C²KûA•èz“N›eüšÆ:¾ž,•$æœÐ¶³ ÜYúÆÚ‘U& ¨Að€ÜcÉ)wuûy»Ü`÷ïÒ´¸»­Ð k—ŒWG÷A%¿Ò…¶ƒ‘˜’çÎvö^8Ã|> Î§°…ç£bïågÏ2s²- xÑ ´¥³;%ÁÒ¨H‘”Á Œ +z襢ׄB?ðût†Á¾ö{`±ï/,LÛ[VÐ'bÔÔÔ\ÇÔQäVeî­sîDÍÆ®Û+ü6t +]%2 †¬#Þ°IPËÄãÐlëì@ñ‚7ÞZ‰sq'B=. z¨ß×ÛöP¥h©1Å2Á±#«Ü-Ÿˆ:'ç¥7j‘D²æ—êRYáf,ai.ÙuDCÏÙµõi×:ïCeÙå"6â*KÆõˆû«“`F_ýÇ@lk:€º‚Ù£V²ô^Rªc­;Ý–¾},¬æót\ ŠŠls?¯+H† þ›qòøÐõ9¡ÜGäÇ»TßÿÊØ¦Ù'âìÕ²Ê|u{þnÁú¶]»INÑüJü‡´[W3Vç{,CE¨¡ût ¿V›÷Œk¯Ê£2Žy)(´wtÌfnMþ½Ýµ£HNÔ&ÚÕ¦&Ë6'Kš’‘‚6C¹Î"> šëúZ®a’²T^»*5濼„;èüß™ò‰ˆ9J¦‘-vûÄÜçq¯å>a/Ñ{¯gJ ˆ%벫ÉQç(Øn¯Š Žà±ÈµCnI¨|~¾îtÉüb˶©r ¹zF:â‹“â\CV³^Dz ¬‘2ԽDZT¯ -±¿+‰¬Úb·¤ŠX –Jzcš…†AîrJ’#(„®j*Ú\ ûW—tI¡êRö¢LëÄën[M[Œj’‘((.>^c™)=»ÅºÇò˜%â.Ä–x8xTaçï°Î覙í’öÏÓ€¹ˆh ÌŠÙïÞMX±ûqWɯ*ždóŒw<‰?†w;5Å:W¼ é ¯niÈ¡íâ-.®*q¨n$!YÒ\Þ”Òb÷ﺩ_¬O¤©[·%öÛä7Q^«T¤´P%èW{u;])X|¬Z&iM ¢JzGp©-M ­êg¸Ûñ A½ßQ C W]òPº?ܵLŽ t³&(ÁJv锈äG?Øܰ›þFèǘ@µWÚÓLIÜ»ëŽê Ÿ ¼¬õ1-é~•˜÷Í¢jþôDs)«™%¥XÂyˆì$’Ý{½§NA>¨}KB1¢Ýúæ9¥-;i2‡Æ¨u¡5#ZÓq~•Ru€Ü-™º‚¨Hü^¨¦&>=X3´ïµP+tZ\hÆAyO(»²©v迚Ì/b’Á%*õ6ªÜ"á0@¤!MÀhÀÆuÕ¯Üõ36ƒ gÀл‘)ÔÒÖÞ¾tpáöÞÙ+¯ÙÁÑõD¨v³zL¢h¯Žî@ôg¼Ügöî+Ãùs—»òð€”DÎñô,Š:âæN™ —váîÏ× <¹š)3Ø8ç¬Ë6å¿2°$6~_K?oDpËhH’áÒˤo¶€vjô­Eì"*ܦ}Àä_³VÂä›ë¶eL…Zƒ÷ºŸY’TÁmÔ*ç¬Sò Œr_úÙ›®”@½‚oÙ‰hêÅiÍqH2ûtÊbá†9¼ÕÆ*ŒRÉáNUó—+ÕÀãm£…r¥xVº;Ô·DxkãäÑ(S pSétÌe3Ó7n0ÐmW]ªŠ–”òÒ¥VVì^FDŽ„ŠJuŒŠc +ŠÇu°X»¬ *ÃÖßHó‡5iÝöE—n}Žt¡®Á.‘jVKV¯`ÞeåÝùPÉE~éÿEŽ,Çà›.·NBõ.ˆE…G,k¤PHÄÓ|Ê£OX`¾žªä<:Ñ5ú"rJ ~˜Rvµ]F#À2ò·B¸{Þ–Ïž€ä8¡¾ÈÇ%ŠH<WÖ·\z} 0×첋™«ÄÞ¥¬<òxfÂÖ ŒNËåÖ{[Q$ß·@ÉÕ‚Â㕧¢F¬‡‰|ÚV‚¢-@DÒ +1&]C¨;Qì.6ÃÇQ{¼2eÍHN¢ævDϘpê1˜r[¹J€ß=õð€Záw5Š@˜lÿ»ŠõÇ:wøˆYó³oêFR˼M ]É”rØ{¤¢zéë„Q1›WñTÝ!.AkŠâƃ7rqÁKIîKÄyÀé¼ÜA¨hõÉéÖ2KqÙ06ðÌ’pªJ—¥ÕÞŒGŠ TÏ“ùÑ™vÓ²Á{䤯4v†œñ˜Î,AÎ¥wæ9UAWñ†ú²åZœ^ýÛñ"Xtqê§ šX«‚UÆ7I¶j.Ïáß‘ËH« …jôA NY¶Y­ˆ”T{~x“[¥ˆJa3%ƒJ©a·ëæ²ç cT™¬.`d ãsNÚJ¸îQ¡aˆ´:à¬Âs2c<ךC_v‹4‹KJŽ»Jcû´úítfv…¿ìô.ÞŠõ¤…/4‘ìTÙ®…4öš>ÌšyG° @ì¶ö!yð­ÖQdJj%A† ¾7R©ì·ZԞ݋ÒÏ \¡‚ŒqVîˆ7{LÈh K•22’F;­‘ #8ÉÑE…Ŵލ\µé«!ß`î¹OË4ô­ÅáHÛÞL®l‚HFMGI›z³ŠÐ/n7Ž<ËvT„ ~>ݧ"[[Œì® Ñ2Å6 ’Ûw¿Cª ™5Û+w¡†Ê5ŸH•XÃS3h=äø8‘–ú£6Qz¸ƒË'Ñr­#ã‚Ú˜¢Î®Ü$Âwnæâ¶ÛeS¶ Z39é¢àçÒ‚¡¤”†D˜ÀE°šÌǾY‚Z÷X¤™ït$QëEÇri¶îEFç꯴ǒf|8+£ ýVÅÒ…â’™ÜÐ?þ1Ò àErÕžf-Í€Ér´7v|©®‹>¦ W˜ÇïQ‹,>e¬÷ó5é­Œº­;a ÀÙc1¬ :yª“¡š8ªyР»ÂcÇ„üI:¬$L|W¸npåUEuˆ:Ö-¢;%+ˆ¡³½´¾­8ƒw ýa+ã|êŽ ¦ XKŽ[ªÜ/VšD,&4Ö”/Tï`Ž"2âÕR‡@±ùØtå!ÂÝJp5¥Û£z¿†å½‰sÇòž'KAÖ<Þi† 9ññ2¼ï[¾§Mêr÷ô“™OÁŽ]Ey°€Nô;™ã"^SFM„#snÔÁ©åSO-ì'†¤ë°L¦¹å‚Ù{$Ëü¯w€…*ôøÈóýÛ-A)ë}þÍF䬌<J]/…n€vËÏ:½3R [[1JVÕkU#S‡*Z ºÍŽjÕ‚]‘±Xp´n· ÀôëSÏ9@¦Ú–*š,˜u“É7£:÷ÄÕ–RYTa±ÅÄk¤øU’–+‚2ž€ÿ…%ª!²È¹uI¨RÏÏd@¦8Àâ–\EõŸØ¢† ‹.&oå à_Ú-§ÝÊoK ÖéÖŽ¤Y\&'ª¥Ð>âNn }M—Pa£ ·åsUÀ@ ž>/ÍóéheÇ*.soêHŸɦqx3„Z=Åž³Òþ1D°4x:Y¶y•uµ—ºÆÉSY`¬¦gŒCÆOý^;µ™¼3Öqr¶ä2 Ã;÷a§wheñÑž%ÒZ„ÀÅÛ:¿?†pZ.<Çeäh\Únj ÚÅ¡ä“ïZßnªÏûiPSÍw´ú9TŒ~,…â8ëŒ{sëa—qœP¢«Rçøó™àã[`;õ›Ä„=ØMEUHl£Ï´[”} 9“ W¥( m™Z73‚ÀGï~“½fÊt}^ê#q—ªª‚eIIgìv?à´çâ~œ1„†ÐyIZpn‹Õgk¯¢õ­,¨%H °ÕþH¦½¤ ÷»!زXInÄ“õ}^6`Å9¤¢dP9íWRËæU¯ ºT…(*&Ê ñÆ=EZª– æ>·¦²Þ#¹÷Ø…¦q¼àÄ)^]î/¡ü¥ÓÊfBëJ¿¬Á™I*_ •ðÛ«º;¼ž ¹GùAäÞÏ;}´›‡-y‚³¶¯r:-¡jv‚eQžÏl‚Z rm·ê ^û >‰â^¨M›; /ôl™ˆÜbQ3TŒ]Û¼[²Eµ*¬3ã$VˆâPê´ðàÑT J!Ú ãʃ;D…=ˆ#a Ž^9L/IDàô]ØÿV9«| +TŽXÈvu·aFØÍêˆñ ¾z5 užŠÇ*€KÈDµ©‰Ôaj‚F”`0…ž¨¥Ku7îd;RîGCH§š”Ê5Ðõ•tUQ­-ê©Ê‡±ÙêÅ'µØ%ª-ÛÔ¸7CGuQ£øJï!ëEçßD¦¥Ì#6ôm«*8ôñq¦MX¬­—BL¼ƒîÎ °YɪÇð&“˜%ꣾ”Mêc[bèà¬gž(—Ó4Ï+Ž!õMnžÕP诊ô>í^èX@ 5åxÓíØêlç*‹‹3 ÔŸoÒa— 7r"=…¼Mæ*}Êš´('½YîUÍfôˆ™|l !ù4{ùs*’ÉöÔ]ÀSä 8ÖÉëvÆ0XµbéŒ>ñì¦Ê°,£eG5æ ^šÐõDË+ "w´Õ>di±Uî9UÛ¢tõ(jeÝ—q!Í+Œ’FàÀ€´œDè±LHâ¤3N¬Yéôn-–uˆÀ,V¦‰X£19W˜5‹ÊŒ½—DM1¸¦Há7EÕå)Ÿ£²ÁkDý-òY¾ÍZÇRÉhy¸•‚b¾:‹ ÇD±“X–ç=sYŠæ9°2ò·€Ä]j-«œSÏuËqÔ–Ü@øšt"±Ê­£U+¡ q°õš“{œL’Óxs<§Ž40ÍZ"è\„51²KnWÇx…?Gzð#œbWP yXø”c™Î6·‘Ò3ÛæWgæ²^¢z±Ø½&tZàˆQŠq;Ÿ*Ôjú!_AõîH&‡R‚ø#£Z 1HUªÝîÀ£ôÅÍ2Uu¼WÜjÌOÄ\I´”‰çzJ 'ÝsTÿ®>û⮩­&ÌY,;õ—ì» c Ýù tõYøH’‘¹†3€6Ìæ:éѲ‹©å·™­Šw§PôNŒQð•fíB[Õ”Y•…T.ç!%ý”|½°MãÔC\¸Eµ†ž$ÁwSbæ gž ʬÉÚÇ«¡åF¾‰Û›ÍÚéSЇ‚àTcá¹N9"¹ãæ4R±~0˵2G8¬åöM+_–ä\©^HAEÞ^;Õ×d;Ú(Ôþ¥–¥U–& â·ŠNëL)Yn6b·3BüHÎ?ˆ}Æ5ʇj¬úà]ÈÆ ¦ƒÉÍQxŠ ‰U‚è´õôµ¥WXÄû"æ|P© ™v mT7£ÑeÜPdç§é¸ŸÜÔó¯vÒìC‡÷3€«k9 ìQ#LJм_-ÒFíû¸¤Ùge½•jäǛ؉ ÅSv§ƒ(† K”ÐÂð†ô% €ù hljŒá=À¬eÒ++Ÿˆ¥8£°72ô¸ÕÆö UúÕ‚XÌSRû@vQˆÄ0'FTðgãÖ‹®#E¹ÕØrŠ®G5Í>·n¥Ìú–^›ƒP]_ ^qSÚþ6!XS’yÂ0Ü™ì”"š,ñø{«ãГÜÝä¤õ&KB(g "ï•. zÊs–l‹²ZO;Ú„µo>-+tÆ’³õAO(« ù3Ô…w¬Š9CŠ·Ý¾ˆL±ºâ'‹¡Ì%û«‡Ä!C ×4|@1Ìç:Ùr„%’­ôÄbs †\Ðû;´Ø¤Ò.f.Ôº—Þ‘g×Ïco³7ýÑŠ´ €é.VЮÊ<–EW× ®‡ 5pYE®?T”×ç áqÅB;p¤[n7*ñÒ¾²=×R1‹“¨<²Õ¸‘¨fèC¥W,‘פÊRÐsèÍ=É6¥ñ[–¬)¤ËŠ¡\–ɨðf‰³[1㿹ž±Í6®Z­ €…Õîï©C$ñüb„Áq€H½,Lš°ëiÔýžCU–|¨#ßÛ»nB~­*Øïµ¯¹ðÁ®’©Ù%‹ „C«Á+m í m0VlGà×+ùêÓ’kÀ.«ˆër rh±Td#¶‡˜ ˜›vɸqn“ôwýJQg|à™r€ÓFCdů©nŠ ˆ;Ä¥AëýM±GöV5ô¤G×îpÛ²xl7xÀÕå.­{ø©:U‰ë;õr<(B¡;*àãÌ6Ûi`h¸Ÿ¹&WJ¹¶ë’(t#`Ó¯¥ŒÎ^p£â%·|kº\+e¢˜Á Ý?m¹ÅÚ‡ Ûr¥¥…‹?˜­ÕYùCoÕB¥¼|mâSåË踨Ӓ/ýÆïÏÏù†—šÞ“¯g6šÔ¾}Dê"¦ÞL`D€…J À®o› !½ÓiFš|=Þ›òä(ÍÇQ‘9óñQÁbù¾`mÿTKÁ™yŸ8yxs%B³¢{º8(å«#Ôs¿˜Ýïþn«ºZkÛÌg„œ©q"f6á59¯-w_ºøÞª=B+ªÎŒeéñÕˆß&ª³o–léÞ†ztõyŸ;öi´¡/RØØ˜¾Ò¯•lB`¬‹¬æ 饺ÿvéTnðXr¾›×ï8K]N“`"[tâÛ›¤#Éâå4k2ŽhÊ’Øf}0¶4´$ |Ó.g\ öm©™¦h# Ã$Ëæ!ˆÒ’É`°N>¿õëX|žZRç{4ûCUšåª+ÑU³^jò¸…ÄVc‰AM¸Ýé/µc°¢']O'ØgG›#=ù˜5ɺÏO>¤ÍS•Vå¹>1QIŒôXÈ…3 ¾ÜϨÞLßè⨧--VŠÚ®3 û -ïQ„šÖS_òD‹á¸©tR¾o ÿ¹Á”%ÖžÖ ?•&ØŒú‘Ô[ïr‡TÅν™eÃQ&/˜Œº2ÞÌ^‡ÚIÙ6ï\VVŽðÄÊɦ֩ÚiÅú À%ZžkMË㕳ã”ß Õ#'v5Æ áþcÈ-a ž5-Ÿáo@j+>S³àHŽ$X”@ï3ËâÚUÌÅ_Ý”ßË{zê}mlÊú ‚áWÖÈt‘ÁiU¥{›;ÆÅ§hƨ›ãæ…Äz’ËÌ‚WÊzìk'6îrÄgNCWÊΡ–&Ý­¾­Þ†d²ÞÔ½€ðÕõ´3èÍA2 üÒèÆCTCCûôŠ®„ë$9~K3%ªÊ c"Ì™® 5äcõ®" âV›Ei¨Ê6à¦ø±[8>D«’Ü›!án¢´BÉ_g)ëEz>É·›ÕÖVÐhúahéò‡-Í࿾XØ—2µ ”£Qï¼Åo]Í9!!G 1f;vd—t ~ ϲH{ªtiÚåÙ7YÝ0c%W‚b î‹4uRDì>ò7œmA—“ž6òçl@¶ù~ÄÃl:bP¾­wÎt™¢!×¥ƒz’0)L ‹s}¸Çä‘Õãø ò¨ÆÏ•fT¿Z×%k L*ù—Í8Št@!RÞšu®2åEQ,í¼ Š÷±ÍJù”[ªÚVRo"„²eŒÍ½™3!Œ<Â~”K‘¯ÎÕy_!ð(“ØíÝ!Ž„%Öø4ç |´ñ92j¬Øä¡FJ.ø¹¶„§‹ïÍ  žJ ÉÐSãg¦ö$Ôù H>¤Ì–É{TïÏš­tcoø¡ñË¥ÔB½¶ÁºQõ»+\¶2DŒÿÍb`Ò®"ÃcæÄK56;ŽûAݘ˜ED[Mlüxu)lƒ ô4.r£‘ˆÇSèäæ ‡8ò~™UDÂk«×<–n(Q¾,ÖýóÏ€ñ©)äA; ìûŸaø•Îà¹Ûô²ØTŸ×€±ãÍ ËÆ4žl¤§›èòC*G†"¸­Ûü¤8Ëyƒ•¨u¾†ß!¡Ô& 3e†Íš¿ö¦›&*ÓU“¢FsBbAWc³ØÙ ¿Dbyqc©yèÆu.ŸÀÆ=C‘²S†î›- JÂÅîzóŠ@¤ÓšyRGqÄXÜíî"À­˜ÈULÔîUzãµ²Ü äƒãñÒµX.„ÁFB_wÃ1A`Páèþ©nÅM˜Û£iœÏøœÃª&cŠÙJ¥9æ°]¡aY!HÁì7tc)¯ú–åH§Ü¯QJÁ¯˜Ý ÿ½†)C–O~&ž+Hç~ç­cOÁ&%ç.“·.HT½Éli³Jƒ§³ªÇ99§’wØ‚öŒ­æã{,Š1‹ ·ZÑ ²°)Ïkè"˜p:ë±.×Ò†”ØçÍ…`›P} ÿO´| °.l•·yTu΃â™*ªGŒ¤Æ(üÕÍþ?<)íò­¦¶>þʃI<`!'jÒŽ´³ÁÛZè :¯žuov/†4èqIWJd1T®ŒÑ"â Æ/¥ÛsJÓ9¥]$ݸ÷ë­¥¶¹* ƒm@äq.Žå¢òN>í9B½¶å&eD¤SeZ0Œ\1YV1ŽßoEÄv ƒŒ$̼ÉÕ¤»ñâËb+R±qR”$«`jû>NŽJî´&çF…2†¼æ^×¢sظC¢õ¥\µµS‡ÅT‘ÇèÚ²ë‚*ša´‚‚ÅÔt;øu²Ø‘ i,R¡Œ*g£©¥{(mŽ% °êWµŠÐe§7XÜ=hÜ»¸c G¸öBþÜ^Ä¡ì2Deï@ÃV`è —´¦ÉÓ½a ÑÕ’ïêZD§^kŽ@ ­UW"¡è£t^Z[P&³&w1ØT÷ªšgÝWb×ò>³ kxpR†)¶6…2£Ø£LÚEø¤@®˜bÛö4p ÉÜ9•Qª fñØ‹Ui¦ù³7eÓ¨ªaœ¢b±– ©kÞiÉPº$>^3ÄéRCÁ®•æh¬«(ŸãÖ$…,¤Æé ¦ð:¢Çµ]ñ-˜"®±Ð3 ²´œ¿ÖdD\C‹u¦‚øúS ¦€`k¦ÐàÒ5îa;¯*…pd¿Uºª„¢«¦X[ªcW[·5«„ É Þ‡»žÛþo·Ìa¡uÜ.”²VêéªPUÒ½½Û*²#Ýü1¡V¦7×ß@ç’ØQW9Ê/Óú.úDBìRw·ša(#XYar§z:ûÏ g+"%cžHUè‰ü¯ Ü|hlÓn£ SÓa¯[AèÀÖ<ÕcšÕµ2sl…~Òk§Îc™vÏ<[¾Uå¨ÊÓâ2o,®™!TѪݵ÷dÞ{Ê,ã° ™„ýîax¾›2ÆúŠû*ÞCðU³£tsЊ´MiùòÜ‹ä_F¦=›Ú5#Ö×ZÄ ~x+ÖÙíƒÂœ\Ö÷ŠsL¹N‘i ]g~áN7¥q|–jK"h 6)E¾æOœt×V Q:¨±Ãé€)©²ÝŠâòg$ö®ì½V†¯71ùÑÚ±§7aá–ózæ.ÖÃZbÏcÛ³wHwì¶±N±”#JRµ³çØÒ„‰›§¸ ÐLÓÚSðï¾ûÚˆÈß3ÔQ+Èbq™îR à•ùkBZ7ý,œÌZ“¶àt¬‰XÅÌ‚¢RmôÃúÚý²‰ƒ ÙmáÈŠ$IRE¯Vš?–S‡¤„umJ,,£7üq\sJ6v¬Ý@ãùTmì~ÃßÔ þêâ1šg'¥Šà¦mÀºææFìdiø!öIÝiàã .õ]·¥«¸µkG—ò_ì›6à‰ÐûŠÎ{D–qCŒïæ`*êšsºôÒDT|¶bÃ/Ù€ ­‚ÚhÜz¦óãXžíB“\* e9†Rñ Ò N.™;ë ¨»vÚûÔÚZcúÉöJùûs qŸUt»%ÞÔé»L5"ÂýQ¸iŠ,¥Z?ô©PجI'µÓ…³Ò:âô}ߨöjÚ@b-{Ù3úÅŽE䱇q‘v‰fÁXþjÏv/»Kn^¢Âò v®”°nôð®¶Ö"Y€SÚO& UÕOóû· äà5…ÏK>hŠ~h= Z:º ñÐfáäG.Æ%>É(M½H¼ƒÅËÝ$é Ê,¯s•bQÁa,òóÜ ÿ&@R~‘C*˸’jX²†Ž¶{NE¸Š‘Ÿˆ]Y0sÑj[ä^|ñîPŒÑF[ÌB©·€†€NKd|ojp`•Ù¶tëa@@ú\ªrùy¿R”Ù´!|uk­ÁÛZãˆ4·$ˆcß¼K\m‹@ýÆômlô(¢È¥©üÁ"à£Ú™§ { Á?ÀýJÛ AWÕ¡¬€N¥´ð¯bÎ. ŽG°¯ÚçÆDP¼îs8vÈ£µ‰(ŸWx‡É–¦¬ ›”¤®ÁKUùÙ˜ÀÌ)3Ëøì]õ[ÝÁ„!ØÖS0&p±,©¸ÆiEŠó†N¡¡ÁòIxk¿éb¨[4XÏÉÅb˜ö½g¬$øU)RÔ¥¸¬©4\uhÃ’±’ŒŠoÓYŠn4òÆÙ>_\Á™ íg>ÙIäKL„ä—@PWt¯mÙшћÛì219–óF( æÒÝt}kÁ®èë ,ÓÝU]è)ÒÓAwDÎÛ÷È1†,;œéòëEÍʵ÷6ˆWGaQ=L #?}еã‹6°S²VpXbXàîzy÷VêYO™S Ã峆ZÊ— ÙIV­Õ[iÄázÐ¥i-Çs1(`’ Æ[ey–8Äz¦£ÈªJ¨e+kŠÛ¢6,¿Æúbæø¡že‘Žj¦‰¯%Q„yqÞä@0“Ëc¬™YùVx[,¯QŸ™rÈýøÐû¶=0úi3ûZà JsÝçËu’ÒÖç@…#²eØ\ˆôs…Âc ´@þ9o"X³®+¬š¦VKå/„f>ê_’ *Qöøøe—ºQÓAVÉ/²+Tô_bþBóçP­¦b×öT Š¥ñßÂí9eNé áĵºð½}ó¦Í«Ñä·u£-ú6¥»jÏŠ{ÇŽ-},Wo¶ûf\v/Á~´×ìî‚jßJ"¨ÆÔN%÷l“ßÑ"²¹¼ÐtÅP3ûêH6¦uÓ&ÔI:j%iû\Ì ëíÅJ##ÊS àËeü¸•†@¨W‡©Ã&‚››ûòc.YEˆ¤ÛŒ5;?ü_ÜHÜÃçsü™Ç¿‡À)p9 x¢\½íÈ j…ö¹T~?3²ºÒrƒ ˆŽ×%EâÌžúž­vߟdìÇV*,@]9b<2 @na„çhV˜˜– …¢b† 8­Å$[CáDÎ0É÷Ö“,.¶[mªzŠËœs ïôFé—¿iÈ*ŸºfÃ6¨±è‡qaȪ8b$V§‹Œ¢ÏöJÔo·Å ýîÉט¦S%áEÕH 7LÁƬ†ã‘|³4í)sÕ2CÝʲ^°E׌X‰µS›f“; Ç`ˆs* wЀª²©aSÅ„Xn¶Lé›]º11 FØVãßξv3··˜Ð½^åØî?‡Ø±6k?;$q'E,wºÕèùõ«JkF1ð¾ÂA?Íöh¡ü`êp ©³˜ t³é%Ðþ\VÆŒÓ6zß^‰¥²PÜPî˜Æ}t #Áoøæ4´ê) Jõ…½\œZgdNk#iîÃÇ/´Ë™Ö\²! ,EÅ:ÍdøÜªYêVÀïtZáj¦Àžú4ÃzÌpµÓÔˆ4NÚ¿qê«‘Ç>3Œ6hijffÞ›…ýÞÅ>*„“š¡¿™ôÐ@YÜòn‹5c=r¡)°Gý ©K㸺Å{·VЦÎñbPN„æBQÀt^ —•²R¥ »AÝ´8”Jßa“wIu.ìý>ÄÅrªJS§î«Ëú0 áO¦J}$%=bÒ0RⓉäx‰¥pèF~CÐ ‡m;蹩«ª!¤w=‡tT7+8‰—V-PŽ:”,Ë\»kù9êëÇqÁ;ãcÓï–~4j­ƒx$ ûA®$¨y·%TȘñIÆÞcW²¸R§ë|mÛ†Ù7`ÞY•-°6Ó kJ BÒݼgI4ËTîÁw÷jtÏrZ£°äè¯ Ú6ƒê–9n%:ù«·ÚyyÅšAcxô«£ä›*]ŠœU10.†D[FÊŠ”›X6tXè†8FÔ0½Ï ^èü»Ð[yœÝáš~;Ó¬Ê3csj°®½`ªª’XzM`YœfùÐ/¤ÄñÈ2àô0›œ8<ê1¹Y\Šp®®u ÙTØÌï\ó„öK|eÛØ»o©ÌñÕ/å×÷@væúZ Ttc-°ñÁÓ’kaýª ªÉ‘ëAr û¯A0üŒO‰7`Ÿ9È{â1\ËC!…:”ñ–:PW–>µ4¹ƒ? n@àL0^iO ƒ¯÷ò°4ˆ´ýµNÜ»`*Š»©©„ßî6¢MÜáÛp-º£“ø€y£‰DêrœHæ¹I2!7ë-Å=flöíZ›e¬+Šñ÷µôs.“E¸‰î/W ‡P«Ž›ZreÅUÞØ-˜ò*’€ ¤àVDf—ôµ8Y:-·xŸã³D;Žà=–æA—½QohÿU–¯9¡@L|ǬQãp8×ðÍ1wc³°ZõHeÍÚ)*2ñGçdÓʇ –ÆDPv6&Ï`Íç “è¶-ºá$o-ìh8¥_˜¸›•Ì_…—¤ÎNE¯.ÇÄ/ù ¡©M ±¢0{Óóâ¾±š€"8'¾”rˆVÉ÷óã…`k3KàþAàƒT“W<àáàoØ×[F¶ ÊME4õâ:ÅꜶL¤¬¼ÙÃ{&ŠUº¢¸ÙÇ¢»µY¬ó4ÛÌœkŽÓ5 ê.øeÏÄ,íV ‚(̃Ù°(ŽaÓÀÆ·­†—½Ïš!)Ö.ÝA÷qÏJûïn×BÊÆà›$^¾„#×âÓÚÉØ¨ HßJyU¡†Ö%²òÌ*)yB«€²Ýêp5ºPŽ—Æi0Ô—Ú~ÖÑ[l¾KR;p_cp%¦üvÝ&V•çÇ ÑxNÄB_ ŠA–4¶kAÌ)i-AAè Èd(1•y@C™G5Ÿ&&Ž¡/[ ¬Í$&Z¸œFf§«1jò´ßà˶¹®«K¬:–Ë]]|š£ðN*lµc£Ñi­äV¬fÒЀõY8o”ä~a9ŸäÛ@(ë*°h –‰G¥RF "Ee•š]ªw”¢`¢ÃüTy´Á‚¥cz §Qå,  q6HÛq^R\}†bÝÔûø›Ùë"N ëí-[«ÃõËð¨(ùOáݸµË—¸¤žkdl‚-L:´Å„S£´7­‚Ú£Õ#ÿï €^zžÇ]hU={Øl%‹hK´«SHJt [{wÉ©³ýÖQ›3Æ1UË–Qr3¶}I+GEWÙ}<YtõÔŽ›Tµ? ÑÞ „ÂJ=»VUMVK{“„†¹•­5ÔMТ½M¹>NÒ.[@e<ÍZH°ª–¨6¨t_´Öx¬•!{OmÊ,1䮃9bœ–—N£µHM| ÙKÝ µ­Fe¶;¹PËb µ3Þ%£¿”sÑØ(7_óŽÍ7ç—‡{v—ГSªR¯g .fZ_‚·r½öaY74?¿YOVC¡Š³Ö<—Y‹‰ˆ|wû(O½% QUÔž—  qÎhS@ýŒ#·‰[¥¶‘16ít”@WÏåoóÅ@›Xî8`k€6“‰zØ+é[[´Ê¦—¡Y0å ü†è4ÔÄ‹)ã Z“jMÜ0/@rK¦á–ìLŽ­ltwah*…kW.Èjúd¤ê®9âSDô‹ÕÇØ§ÇL"u¹‚ìTš/sâƒÅ«)ªN1@¨zÓPà–gáÑÖO9áŽNS°¹£Ç%ˆ³‰–àN} ,ãyXQ³Ö=ÓÉÖETÍ%–ccørE[b6ăÃuo²#ý,¥Ì{Ë¥téIäNoò(+% ¸Êу̊—ìÇü4 ;»Ø]´Eì•<Ôsõßê¬5¥ê,ßú¥l—‹ËÝ­‰š”Æa0²"¸+ší}•>“ÂW„õ6ãŽ5 Eç'Ú¢êFl†9÷Ôè:°3 ´ Öõ|Ëå¿KuØ´Ï5ØØ`/èÒ&™0ôÜG»«ÊMðKWS\†žÞKҼà `T.„á?'¾Å®L‚ØÛL4DzÆiž’ ÅåÇ?Ía ànDÝù1R0Ó#+§8ñ/U7mu›Á_ŽØˆæã`€Ì»}ê=_Õl€¯@‚!<6†P¥„Vsá“kOBxoàT|DŠ€‘Øüh²IJ=Ö“\Fâð&]„œ'îdäªW€Ö>g‰µP$UîtÝ]z[µD®3 ù/t/V9³àÔ¦ñ|!‚ñKVi½Á42¶ t⟈‰¥ÆFê²"êt)YÚu¨4ÁÅñud¢~Ÿ)òT·º ²15¤T¡å9Éæ8V h]€°XÕF@dð›µi=NëÌÄéÒ giÌõ½…­£©™giKŸÒ˜í;eèÝ9ŠCÖ$Âë‰ ¼8û±#ïf]¼5§({Â,-2Ä”„šø±ÕÅ¿~£&Þbg&s+~@ST‡˜ð;AÅ~˜—éŠáƒ þV…ê4C[TJÏ1-CBŠë=òDó’g"”?&$X>šnÓÖnòE¬°Š8NBÍP7dw:&ºàF…e åé³A•ßM»kÞÞµZ'¸Z¢Þ¸¹®H¨š}{I\S3=ó»æ8¹¬#ω{*¢šÚ«wø9S$ÇÎé7€Bÿ1Rq9ž>Ø|a¿AR8Þ–ÛrU"Ò–mµ¡,øÚMA‚·°c÷e@ð9ËAµübÝ™‡ÉX*²áò¤E§.ë4¡ª¢e¦6åô^%žZ§È›6}À ˆNºÜ[¼åU€ßô×V„Ù-s ¶Û>†Ø¼Ö¯—Ž>m¹djFFŽ"5ž¥ëHܪÇ1¥²Í—Ð4±Ê“Îp¹®ˆD 5º²·±’ó‹WwTКԵmÕ³,Šÿ(ŽÅI%¹írJR¥•3¿£ƒ‰¬{ºí Ü쇉"“d™ÌSŒCÞ>MËÄY€_k*·'è­&o}ü®m +åÇe`:SU,‡ðî[­v!¶¿v•ëÌ e2äµ Ñsäh·Fu#PÍœ¾TUQPÚâe¼ AÃÏ×8‡Óî=u¥Õ|(W·ñùýÇ@lÝÓ~ŽÂª4$ã6Ó—¾ò !åê5#jŽ)¿©b˾ný’š[¥b)ä=©=r’€ßü#üÅ© àè°Iã7›HîaçÖsý8FNÿ;RH©¡@›‚~§+jF/TeTøÀ ò¤Ø*&fn‘Âeœ“*H˦–i@n›t–¡Ö/ªÑFûo—ŠZz€Ø÷<úñà{YP4Ìþ̧·n0õ4Ÿ¦½ÀÖO³è-¢E—û,åA§°gú{]AÚD1xuâoß+Kª_$qq]-ØÎÀBv¾OìRuCA"«#e¾2عÇ(•/;Cj‹Å-øQfxP+á÷Ã%ÛYA»Ö‹IÚ÷˜Ö C4ª_»šõ ßCÒ“ÐÙÖÔS BŠg‚U£f¹jÏ#1º-¥ðŒ¿ªm$IQ ªH‚6áØs¾X·¥Z @Û/ÙjH÷#1@`@p5שN6ÆSÀ Ê¡(±Sã.ƒN›·Ô£3røÈAYÚ‡¤`Æø,sžž*qQ 7~M±íeÌß~2r2”ý&xÛ3 y·/Bߥ †ÊEf™€Ò<>¼²¸³rÈTøÚ%Æòðþ0pÁ}-ÍÔL½_j¡@ó³³w¶å[aáz¼M©s‹­Û­€˜U‰{ÅtÀšhq¹#µ 6Ec„ç S ˆœDIåxÚ2KÙ@[\;ßí±¥§ ¨Íø É~4Ûô‘øf¸r±èƒ.‰ÐUŠHÍÇÞ׋þ·ì“¶cï°&?ð)—à"»¾rí3£÷7€Û4]»MƒÀCN˜ãèüÐèÝÀå•VŒ¼Žû…V³Zëg ³ êÒÊs‰5±ÃR¥{7#9+1äbš/ò17ª6o ÁÄNH'f açÇT#%‹öOØXC˜…‡4a¢]¨ïyd+öú`t\‰¼ìל²®Ùµ€ÕPÕFäÅÛtXª¼Â¥[*šâùx0aÞ´í¹ò™Œâ¹Ûr(€N€ §Ø_‡C"8ôòfÂ>Tí¹i»ÊŠ”3¯J®#Ⱦ°åuÀà¯ÄH"O(„ Bªí’ØéæŠãÿYéÅ;;ÀÏfJÙs¦Z× VéÄwÙå ZÍn%Æñq6PDQ”´@ Ó!fÖ¦‹Ý‹Å`¹²AÖäºù`YØXlvK…ËIТ*•»¡Héé«ÜXè†üÝ7?GØürÃ;nG·d—Cy@°oÝfD磙’yÆ@d¶±ŸAxªb4!ÑIv3wɰÀm½²/Öžl¦¼ÕRä;ÅTY@ÖñÉä+`€=¯¹…¡ŠaRb;’ˆó\ 1áóiP\z’„ÀÍkÊ!¬ÌDádXmg/Ò{¤¾ÏW@HûÔÚ¸i¿¹¯m‰”ã•f—~-Ë¿53û¶ :ÏÞ ™dg+×1™«R‚r ³9‰=³Æ2CA³Rá1æÅÚЭô}>‚©¾¯ˆ³ ´Ï‚7+ü¸`¡XoΛoÚ%¡ð£w-ƒìB޾„{¾·ð† ´—©>Á3Y`‹òc€Ã™äC‰¦ |#Én*æõl"æ—¤ïOMuzØmð¶DÖã VU'"ô¼Ž=ÿêv;¥U&í Û$bÚ2a\¢…V:çmdÐæª. e>G&V3æÚv5L¨eõÀˆÌ]R‘¯5·Ò~°ÖPJ¶”uIvUßÒ—à0ŸO„&¹€Ìˆ¾g¬Ï‘H“FiYS—"EjûÔª|ø)!<\nT»K]Ä ²b«§@‰žœ?('áø«õmà¡rTx20ûnaW‡>]U¾)ÿo8kÍ|É‹ƒç¤?û€DÎ Û)®5NÏÍÏù®ø´8õlanmr™oGº½ÎcÆ­íh­ü|:1¼K±½7Yë¼q9ò£«ßáåØŸ#½P*ÖjiS@’špTŠK]­'½_1X+™­˜8RÝè*í4¡x&ãÔÖî.“ŒÖlÙIe¡ 3ïGkãodJå_îiÂøt"0d?[Ý7ÉlÒשbÙÿý§[sع¤ów%«\Éå BuZÎx£åadž »IÉDnõƒ¡Œ!Iû•åȈ/³ûÚÇ©ÿÒk©½áäZQU¥¡;˜Ë‡—EÖΔz°IËœzK½ˆ*s`í ©™Û\Ì<Ú`O+ƒI:q‰J@Žo6:_„÷1€oðæä$XGöG{È3ù¾„¡­çsUï–Ýêi­½k–Mz‘¼);yè®mðÞ]ýÊrŠ{=U䌭Ág-O/›5É›¦ÖM6Ç>O'1u<;Ü•9%rÜ8ØnàWÀ¹ÅŠ]O/¤ÊcZ1=tçQ&ëB»`N§3Ë&M[†Û8!—»¢~ä‘$?)ö4(FúÝ]IêØ‘«'•xNË‹HÎÄÐ.´¸TqsËÑSó[ùÖÔ^.û«½ÊŒEòìpC±š@— <‡¹?ÃbŸ±†ªÑ蕺 ¦-= ·¯”Ù»2[Šx%BH,k¯èÖwg6(˜ñ3Y63‚€Ž¶:Õ9Zmñ< xÖSæL£zj•Ùh|Â’ïô»f€cÍ«}Šrñ©}qÒ–ê( §O!‡Ä ´P5%’à!ƒ0 ¸ßš ËZwv=Åÿ%;WmÀ&8TÿŽÃ/Ë4w®QÒš–¸éX ËiÜî$zW–‡[ÒóJ!ÚqE¿@Ë‘ äŠóBmÇòF _Í@Åå9Ò5TΰÈ? Z>ñý ié ÙnÎ"6Ôy4°’—f7’UUv€¨¦fè¼²¹bÜñÔ…¼MI$¼pÀÔ9•Éo-òB[Mk¹È©k£GÀ%uô{ùèqOU»g±úåÿà/ûC™¢Y,Ý|ŽÄV¾„é[l—ØÜ„ØWPªÕQ%§¨TÈ3 NN5£–ø)С,( ¸u\U¯ž °âÈ©;‰$ÝVêf–PÙc€S¡Çp){ÿl`£Ù ¶n—Wu’âÿ•r6@^X.ùA×EÝfýcø ¿áZk©e|ŒðPä#çîÖÉ`HÉ6À;TŸóLj§Xþ£Ø´Ÿùyd¬õø\Û¹-ÿÑí”^Ö‘x÷ñ§×}µ§ÚSÖ†·ÿ8©îò¹ªnóÂ_Q±kÛ‰îÚ>ñ’*”iutU}‡›ÊEŠkÏëÚ9''•-íW`5™7ª K4ŸæÒÄŽïêRoQTL®;E¾(ðØâŠWz›vÎEMnxôˆ@ƽ bÇm5áén½ ?acš†â¥Ø PXT‹~‡Ò|Šs J{êÈïc ·š¸n¯–.žv—Í–—4RÔt`ë4©z].éÇÿ´¼frž€lÛqã(æz–júþöNB‚oŸ¹ÆÞs ¾h ö“ Z6ë>‡°F²;…b!ƒ›GQD$Ò7ª±Òíÿ @/£Û»9cù&ë’—Ü,ß¡ŒªÚá#zwÔþ—ß´Ü™YY{Iõîz$b¬à \LI×0ÓXRnÏk8d%¿•-ane×J³ê`Èäi M’°‚«)66„L*rÂÍÍ÷qK 7JsxùBÁ•©®s¹»‘T7ReO0µ½fwjë·÷f)ý˜N#‡Ž]ØðŠæŽ¿‡%/–Ämš#‰E<ýçÍ£³*%$çPÌŒ‹…Ö ãŠ‘öñ"F¼mÍìF¶Ni*ƒ ƒf""8*úõ›DœnÉ$ufâ?¦ªÂ¢"%fZ­a¶zÖ„ù&Rù®ª†Ït`ZË^sm넵;hÆ»R&k }G×}h¿ÉÍî’Žs{™Bçœx2ŒÚ•¿ÕÝýåÞqXÏòð‹Þqê¤<(æˆÙšÅq<’øgèëíùWõšÁ,ψü±¸Ã¦üË5ÌüÃ,Æ@¿®2óûéJD…Sbï#@üìŸ×þàMs€Ò„r‰ý±ÀøQ÷£Úð8†)Ñú&’¶kuîM €¹]KE„þíÿ÷9;DŠ`a4VYVNuðœ“Õ¯ š ãØvîBÕêK†Šÿ©/Rè¢Í“z*ü'ºŠ)’H¦Ê:1AÔä¥Xø  ÊMFÙ=æKL¤íHa¶!¡méBkM–°Gù_ä]Ân‚ñ HìÞ2Ôg•¦T¾Qê̘ªyö&+ ÁyWÑ«½«Kš6Oβ•  !¬¤¥ºûõ9ÝQ}`‡iÙL?S ŸvuiåÄ%­ ;òUQ (jV›¢(MÂ,TÍ¢|=ÙRÌ“¾ y$U¹ »D>jfŽC븮Úål£ÂÎ~ÆWÖ ÏZ)ãQýý¤ŸérâÐ SñV™í³+‘ú{™E¼â€Š‘ïšÁî€ gÚ m¹KM "”´uDsš!G#rWÌV‡ÔÕLiq›XtZÊ›R¦¨‡rZÆÃä#iŒ'jÓƒFÿ1mÀ·ê<l›Ý82Ô“½˜ØfLíŽ5¼³yAëŸÓÜ9¼U³Ua›úØ{³]Ù®+;ðÝ_q zqqéÕ7²å×ú¢aUʤ@Q®J}ÍÑÌ}â0mÁ/*TºÁëF»÷jf3u7§‘A´,wtþ¤ÆS{Aõ ºÔ`‡í+úƒ;À8Ó“2¿£Ÿ«â¨²FÂØh”åõ´„˜Î/#¿ªk²…òE>,]HX Lµœ^æ4 ?ŸK#®O‰ø¬$ç>ˆ^ÖWªÃ'Çš£Kr¤ ݤã8xŒ#·v™”¨¶¶ÑT4܆îÐÁœ²¾ÇÐCDŒhºÝÖ"!浂ˮÌÍ@ ~oDDbêIy eR¤”ý´O—†\›[(ó} ªpö¡z ÈáC$‚’¦›®"YÞIUޱV1 ¨yΠë ¾õZcÓÁïY¿æ´d$|Li;ºÄ !o/ õÈÍpËhɬA`hO œ >ÚˆŸ+­_"Ýø„¢8ïèú6ËŠ»Œ$Ûx³áÃ=æ˜Âò*Z¨YÞ }(ÃIzjbuÞiþ+Ýaù¯––DãF”»k ðî}Éæåv›r­«®iD£&ø]:Œà&ꤎ/O@ýÞÚ= žÈò/ªáŒ‹@#eÙkòô1KE)嚇ÇPŹE‚W´ä»0…ºÚ,có9Ëü€†DhÚ#/Á†Ë³”4Õ,ØQ0Ùn…’6„3¼á‡'Õ¤&ŧ({Á-‚ç1B{9j¹b˧~Š4ÊÇÒàD–(‹CD’¤ôN”wÌõ«Ê: ¤ðÆZ0°!Ý®›òršBOSêÛÆ üêA‰¢Zî󨍶¤’RYÁ4ž f— Ò–ŽÀü=¹»Á2ž°ƒ‡Y~ì} Ö+NòUëÇÇ(ÖçøcRÙYÚéú˜oúéê•…ÏÑ9òl½ú(®)^¿izgR>”ôt‹Â™Ïo¨Ý¯Z D>.ÕÚÔÂW5Éo5J¬ð´T|P#@Ir àéÞ«[Š`V+ès@±#JÅœs1¨pOêßÿ+nŠ[LŸÜ÷±>¹)ºNÉœ©êkáë*öí–†ûÂMQKç“›¢ íoqS¾µ[ŸË[À+õÇ«qCøG±Üù2€NèfǪ›¸.w Øi½•™ÐÁ愪›o‹­N¶Îõ«â=.Üø2âéԛ߱†¬]Ÿõ¸n"ÍËj¤R\eÜÀ®yþovˆám _táû!´€–çÛ3Âh’Ùk_ÍDyðÙÞ´CÛX¨<ô€c|ÎiÂò b TÀ_ÙÔ¥ ~n&”Z¡±Ñ©€Ÿ`µ¢’ ”Ö?¯ä’€ÐnªG-½™‹ U0–ÚôÅn|±SnA Šˆ °M××±? é‡:bõŠ6vR¿t4HªØª)Øj¤AèM¶ >

a}ñó5×ÛuüÝØ7Ê”»Ü /‰…Ì›ŽRËÐÈ ûÛóÑ–Q*ãù· ESRRç¥^yqV3Ÿr öW«Qƒá¹Ðö<–p³þƒãJa{­ÙA†óžÄf”b-‘¥ž â/+½*h†Y?Å Í_¨L»<·>·JwÛf÷}Öîïf]éèIüøÙø &¦}vVç¦2ÕØHuP-n»ív±Põž4Sòï™=ú=_sY3w/‰\UûK< ݈¦@Gœší¬)÷X9ªö5£–Hô ƒ¢šVÖE@©Än®V­‡.«ð‹Õ)µ£tH7) ÙrÞxF:”ÔP}‡¥ç‹w_(á:ŠK"mèp­ÿWáÕ­ðhed¢E@Ö CVH5oëlt`=æàbäŒS`de¢»Ï}G;ÇF‘0 a¨¢º€€¥U·¯–ÜÜ4µª³È§ þ&ª}(ĸWð¥)æK\wÖ°ÀMøsh+†š¸]ˆ´`pÕ¤û\š Œ«¥qv(ªìÖÑ^`¾Ô?™6Õ•ñ­r[§í=~Èt„_Ìå:ë…eù w4”t›T„e„õy¬Z­YÝÛH$ùDãr׫ÅUª{¤[S˜ók. ¯ŽLµ ?t6*íÚ%e´U¡†Ý= OUˆ,U7’Æw8·ºë—?"GŠŵ±^Õ¥†M«–b/ªds¸(ÿÂy"îm—÷*·‚´Tå„ÓÒjE7kZ <&°48â$Mt/¼±“G5_eÁù÷©#¥ÊÑ,NXÕå:TD M4Ó„5-\§x'(½Ô³9y“^Dß'³µÍó¾Æwzå U®r¤F¹üºû»fœïúàªÒ¶²ø¿Š ¿k(ÃçƒôLB‘tªGœx¯šÔ)Icè¨Ê£ìÓ'¢ßݵE5o7  °5µm?FA6Ád´·{ êØõ¨¤§†*‘¢â{n5EÐÑ4¶ ø{L¦MÜ$D67$8Ó°â>½0€BY–›UU£+ñGö¦M«§96d5-ÆwG‰¨Xõ¦n³Yª%½ Q)}'x#Þ…öÄŸ>Þ ˆè´-Žcæ@lœ#u %ä*~K¥ÁaÖ0ÂÚv·H&¸°³úë?Å…uœBAòŒhû.ÄYiýšÑˆVcQ¡R§ÖîVûXÇ»ý³B«ô¶›dq SmiDÜ[¡ÕÖ#˜•7Y­ÏˆDÁ–úg?ªì'ëäYËÕÌ©öZ™g™àujÚSw—úP’¨Öƒ8Ã&²ñ[fï_"HnMóÊ!gíý}nÊi×¶È,ZŸ‘æƒì£-ìMЀr‰¼ZGê€5Θ}zÉH~×6"ø‹¬:ÆM²ØU#*ůŸùµãSŸß=óëT”»$yÔáw»}¼ÞŸù}+(zÊD®(ÇÌÇlMû€@Þù5òÎ=ÝŠMÛéB$TêñnfÉs>]zªà_AæŠ;¡0øê×z÷é`+nEÚlhIàâ· i) ç·j£"ªÂö‰ J§-üþÂ*xdÊJ´—w*Œ…ýÊOQÞ4±¥ºÓ½WhËNiø&a#x…éj\[>Œ;hsª®RÅü6~ åzLE½ímà›ò¡TÒZySÌ ìÝ>k·dKô¡Ø–×B_v%½K¢X}ÑM ÜQÅŽ™¯qS+¦B „ IŠ2Ês­[e¤|ûõ¤ãÅhªŸÀíFº__dÈ^1ÿ¦pI+&^‹aûUV“…¡kÌ­õÝ•yˆê–n£r$¥f?™%DÞˆcÊq•´>wÑ”ˆWr" \,ÌY\2Ž‚=•ãnkFâ9uï"d›5&š ô,ÛÇÿøÍ¿ûÈ?üÃï~óçßÿò_#ðœoÃùéüsü÷ÛúÿüËŸøËï~óý?þüãÏ?þüãÏÿ·Þ7«ÿù/ßÿþÏ?üöûŸ~üñ‡ïùéçoßÿõçÿþû_þúó¿ûMùÍÇøÏ~òžöíìþñçþõç{EðXÞ†c9ÚžT›½¯HK€ýjGí3@ÔᡦIcå<î!Ð#»¬ TE‹,ßX’àÈ.µ±MšIßYyâÀèåàMábá—Ý3b¨Žâô9vv’³®?«73× Ûf­‘7[Ý1uWج>+~mÚ9½OáV’/Só³ß„Ÿ|ŸE—J×߬z“5çéðîž’cy8­sù“Î&Kòª_/ì«85Èfªfé *ÓðC±èicuWtg-£QEaTáãýå\‚õ»›ú÷’¢’üãFgÕsÞFš¤@³˜ÿP‹íD€êŽ Uh ã{tW¡0ãèY©>Óu³woÖ!&=¤±n—Ø®)4åJ€ËE› XÑ Ñ—å“~¹íqÜŒ*ZÒ¥×sI£tù¦3¬ç—¾ñ1 ©WÊ5JWO“Å ‰½R]¥¹çŸË‰r屿šzR kè±Öç…-ö·È¡ÓË0Ød´ÎÑ¢LÓìöÖì‚ÐqQ™8Ô°IIgËKÕ©3–ÛKÙì\{Æòo^UÀ>ˆÇž™c ÑZÂßd´s›íàkÏ‚JK Žf!ëV5¡KƲ´Ù3ÐQ’~K^9U’$.ÉCÀ(ÃKt$~gšÚ{(7ZÎö£ý#^5,? FÛ™\£ó2'Éùœ‰½TÞûX¼;es޾]ˆÛÒÓ»Ä(àUï>Í’e)„ Wïb‡Ó½Õ8s7b…‘Åi£Rßr"s¡s$˜Ã=öƒžœj6g©qt²g à‡º{§m‹u¾Ÿ‘Z™›kru¡VAK”‰;(:™Š!Mkë”N‰‘O×¶i¾ŒÔÚ·’þÔl$WñËÁ÷Á)¹2Í~‹¶óôŸvà}cu‹†«u«bIÞì•4ëG®<Ò®6wá˜wnÞ,¨v|ŠûÐ/i K5œ)ß¿Z¸G¡Ð†bÈ"êP…­k1¯â2z•e6¿Cʤ>C(1μ-R©ôÇrû¡+ŠÄ!,dÞ%+9ˆ8,Fÿ (-]Ä‹”€×ÌÚ·VéìÍ ƒeÍ"”sqO†ì¿©9m‘^êú°¾gú AqXÆ„¶(Hu» ˲í'I;eºö¼NQ <LJ7Cרα8Cµ¥¦.ó>‡Z#H“ûùÙÚcªRµ Äàͳ€û©µÉ…é«}¿ Á†ÏŠs,ìšlð•)ÂÓ[ð¥™)~NÕO…>ßkqÇRR˜è3ú&Pë«Y:çéꢲìYl‹J’èt »U¼€]™[¶ð½<Ç¢kRc²ò`G?'#]‡'ûì„B ÀRmÉ4RÄ)6¥bgK²7yÕù[ÆLµ!Ÿ2èÄJÇ&ö~+Pª­†N7Îf4£uk-›¶Ñð²@üÄú´I[©Åü 5ZšB×tùÑzÊð>®mucû׫®‹§ót,MlPÄ7®ÍJ_?£1ì¸;Àvé™ÞlÝZ@¼©Ù"^¶¿¤ac/oÐÙåë Û‘„l&ÅýAtdà—˜ÞÕó«¶©yÒÀ(J„òbà3Ò¡¢vYט¢iY Š´(§T`ÁÌÕ~\ŠJ"LÍG@g ~Í eckD‚DÄ¡EÌõÃ7!Îe)µ‹å À‚»ååWáX#Trµ±l:ý\AoYÕ·?¾[0Ö1š‹ h­C< ¹¢5TÐ+ä™Uläs츷K)ÆjÙ½6Î|$kªLjZVü‡ö¯¢‰-i&—–s&%0]]X¼¸‚Äa_áö†¸>´åÂ…=3n0"Û¤Ó=BóÑ,½6€¼âo„t?ú"àêPÙ9)ûeÓ¿‹à¯XÑv¢ÁLrè;T¼‡7‡Ð¢`è± .UíóˆÀ‹!“Ç:3@WŠÞ –®ˆnƸgòX‰•B,E[TÝ·'8Û-Z¿G0ße17tªt7×Ûcí!Þå‹¡}ð•»Å\æ$ÄŠ—¤ò^î’N´)ÙdUø<á¶+ä½xàuM¢Ýf;À_žÝœ‰!Ú˜ÂIÌE/LèHUÚU«Ã/›½[ºÆaû4F"qFÄѱ§Ë· r*kI9 * a§xË0óÞP®›ÂØÖW\›l!hêDbB­¨~4QŸ@|lH’ãK¶T§ øJ©Ÿè1?ò´Á ‘6Àè >zSw1¥§¥8œs*åk Tppü‚'—›ÊÅb*±x4ïÊÕÞ«¨È*i{ÆìeBFD™º !ï2â:pž=# R¯ÏìT´%íq±;ˆg ïgð$÷á×èFJj}§}¸k±ù¹ ‹Ø%Í[Ê.B1⹌±“Dœ+MÌ‘ Q¹™Lî®PêfMz'0¼IœÅ̶-Æÿ 0–Y–½ïžªÝý#aºp¦›Ç ¤”­Xa"äWøømtó&ÇꃛªÒlʲ¿õ‚BãSÚé6WB¯‘ ° R@Vºªôcu•ª»2Ž9W§h'-¦ úyö~ÛUõaåãnÿÁ‘·³ÔˆE,_”êd½K”[«vÈÃ6³|ž‘*áhVTê0äF@öÕ¿•”ÓøV¾ÈuXý¨ßç9SSdü &_FÔžH2l‚»ê¿Øo'§Ã¯b!ùE²!.&Ï•&'®LxAù‘öÇFBNxul8VöŽ“Ç‡²9>¬J­ïˆCj®*ýž2ÛÑ®KÉví®eÈO¯[u|ÅÎݨXF á\–?¤Â·Øò|ÂC‚‹€é!n-:? Ät»Q`GZ¢•î/fúoã+¶E!¡ÿ9UB’œ*sWE¥£|5âžÇúC²àú#aÁÛ"u(*‰=ëµÔj•Þî.¯š•#c±4ø•ô€>#A§ÉŽâ@^Ŷc!áˆh@‰€}ˆ*,i£,’Ü,>¯{ÙÊÁFuå©ni"î‘Æ$VIlºiË5 â„F–`†%««2j×§1ÂM‹ó sÛáb‹»WíR+yZ˜|&xôØZ%G™#ñIŸ¼Íf&Ä.óS.=R>9:4}Dª86ßÚKþ»Õj´f˜yw§›CãUk±ÊWüÔË#z)·™¨Õ«»œÊI.ßE´—¸¢òƒŒSÖòê—?+|Àð¸Um>¤<ç;9ÖcÓy8Ò¯ü¡nãGTÂìt"=™–HÆË©¡ÚLÆxò¦]d1aʨ¸rˆ8ê¶â‘ R„h*C“ªø]tÏûÆ)„Ñ*/B”ÆÚ"•ˆ\QfáòÀ Zåµå©ò©Œ[ÂkO 5@i_lRü«8«}ò€ey¬êP9©# Ÿ.3@0p· pMTæØˆµÏBF–½0%©‚ x}o°ÛXAÝQvÁl0ºÚŒŠRh„ìAª`¨W3ªeHÔ3™Ÿ* YWÕ¼w0™c|Ѥú+Ág«^uÜYyÁßkíBEqP§ga—ˆW¬–ˆœ&Ñwb]lŸfÊÔp6¡ëbñK§CpµïŠP€mÜë²jZ(XÔ›T=1­š•òOZ]GÇ~ž.áÙEŒ¶…—7—ÿÈ ¼ ñVz¿iâq~ÇŠéÖ®ïœ@ŒÉ^;öàó>€Z½.›´>ïI¹Pcón¦e²´LQPµ¼à”ž® fE6á:Ýsnnû­s4I8~ zM¢cÛ6ãI7gµ fŽÝ™äƒr¬¨²€Y#ÜnéŽÄzð´[vì‚Þ6ü(rjU 4±°œ¹'Txv zÁë>ÄDˆ©…x帬çI ²²£RÑRbÖÐL‘$)ã‡8% áBq!¨éÀ•ºTØG€!À;Îݺ2JØ ˜„&²BrUæN©í%›ãcÿ(Ž¡ ùޤ¼sq`|¿cí_ê3Ös_sÞ†T‰Í$÷]<3Ÿ§£¥üîU9cœ÷Ç€GÅÿÍV{¾ d0÷ûñ*Õ¯ÚlŸödZ™ôTTköôÕ¦+QpñùÈ›/Òãe±ðëqë ŒéjÕoûiLbÚæš @bR¹¢˜4æ’Ù³eîô0a–r=²Ò’<[Õ2¶‹æ~¡žå¶¥dº# 5».–Üü4 ü6h¸jÄ]Õ^T=jÌ€y—röÇm9¿röâ0© g®sŸSDhÖH‘0“EÜÆHá'yd‚Üúá›!ÑòÛÜÆ¸æQáÄu×pºâa3‘êËãH/X(,«û©ñ>ÿëc[€³ÚRfwËniÈÅ~¢L扈Ÿ[Ž˜ÈáÄ‘l~?Ãå¹QÆRt aH¸)zØrí-Ë9IŽ ÊŒ˜gàt/vQǯ°ì† I¬þ˜^zÇÞr—(r»Êú`¦ÜŒlFæ]{ä´Ÿò6™H×:Īv#ƒO‡ñ.î»Ak.5¦‡ÎM[jA-õúªpÎ %˧³Dr­!£/1ir»€Ò4Êx{àõ†Y§€®œ¡º‹§§L PÇRý¿[ÜaÛ >¦Õ²Õ¸î3^Ó7’ºôˆÈ <ò"•zKíÕ6ŽÊ¾âmÕ?Yɵ ‚"þf--¨¸¸X'–‹~cYñ5‡bô´"@>¼gILìÛé?½œR$•¼„9ȣ󀈼gYL]€d&ný¢HÒ¼^ÒÛwÔfL2ØÓr8òdÁÁ§bå41nàD—èÊU/$RK:iž"†6„‹Hîšr…­(:CñéxÁkÓ"ûla¼.“WÞRº¸k]škq¸ãøûÚôUÆu«>öj•;á2–»,XÄ~–ÇèÜ ¨&„éˆaG<Þ…âŸÖØmçB›j5¹ÅC¥IÑ8Я”í`ÈÜ †Vi:OÿbŠ‚tªR;©Þ0šÙâuËK&âNwIg-ɍޔû“A@líKP´—…h*i(ˆ?2«ÕÝã™}{M`ú;t–%jÀ¶úS¼Q-Â;š--Fßï#³®.d^{î£ê2Z˜Üåov„ª¬Hƒâ n*\K·F¾/§¸˜x’ÒvB 3¥Û¬ù¾¡q†âAǕͅà¡kèø:ÖZˆ™ÂíÚEÎU­¥Éàö›þoÃ, ®Ãë™ d  5|¼¦z’RL÷‰j;ÒQS®‚ÆÏ –±ALtkf¨H IÔ¢˜£Z.yZègX9²«*‚ìv=¯Wä0SiôJQô¦Så#j'èF)]jbÁ ÕZ﫹RpºõàYFå{G¼9S®Gh.åœ1¬‹€ü~Ø…Çí^è3¬÷‘3©.Ù¸ë5ë¤P›`^ü2(>ålq$ÜWÎî¶­Kc‘˜…b½kú”_’ýž+="iŸLËÆÝz{ÎœÝ ŸC¶P‹«XÅè¹Û H’´—j4S¯Ð¶Áyçý’è΄n ´"Ô¢ȨrI™,¿Ó]pcê…<îƒù{•·åQMrS$šå û[€e5{^¯Z885b¯XäÑÕ´I¥@øP<ø—t• cëaX†EQ‡£ö9ð-SÕŒá¤aulàî˜p¤©3UÚfRé˜Õ:ëÏÊf).€,CJMõu¹À}5IGP­æ{_68™e¾;iÆÁãÄŠšÏüi/]¤’ Iœåº¡äª jE4í2¥…ç3€ú¬¬¹'‡§Ärï "^A!±cé†u>I„ ±U{C¡›ÉUÈ,Ìùø’¹ôÆô“þ „]$†-? w8í—Hz,µÁ.0×VaÍ3îÏ’Á2½pꎨäœõT²+I?žž‹bP8<$„…œÅ%‚8•«4¤ØÚ!¦éÖ‹8{tààöéRel£²›_érã;c®7<˜¹ì…!jWWD »fÙ¦*…¸0ü¥eÄÚ¥}=ö1ÁMbòÍNåÙE¥0Ъê žöÏŽu.qå¢f:êN;Ö…áŽq?§–%¤x–:õ«»UÅcï”P öAŒ/ÒÓE¤;–?À –€÷ÅYÓ±ÊÅ.ö‡Òˆâ9s£Ýxµái«Psæ‰7¯2D ¾;=-ÑÒbPw]F¹‡knÙoÙ%ZU%öz.rñn(Yó¦Ô1Þ$_°"󌪩?ÄäD¹ˆ'Ÿd¼'mÉëIï42u(e1úGÕNŒE\ˆ„ÏW¸-‰*­éA-OO Ö£Ù´öv i/ås@ ð¶Tê&$VéYp¦Dð&€©¶Š:–‹jß ›¿È…l¬´ïhçÊ5©=…9GΗ@Oû5§PˆÛM)”Õö—‘ùJí¸Gp–ˆƒ_PßX­°¹TÐ¥p¹ü@F¡.,9ÉÕoC70]“ ø£:ùÅ3DzŠÁ„æ µ˜fçLÓ§ÎhDh° 7ùXXú9̱ä¨#¯ˆñȃu4o˜47‡®eúJª5Ô#}ÙØ6šoU*ÇåÚ9ƒc‚©ÊÕÚrõ-]u¾¢ÔKµc Lk¥oÉäËENk¬¨JWIÎÍÒëÛcD`ÓE‡ˆó^ím9d'è¹Á‹h1[™ØöðfwËJ¬º…˜]Û‚£’îl‚.ÜïJãh¥$û“RÍN*zWhq´\yIY…-RÇäoŽÉ±µäæ ½wS¾g±ë ¹t»BÙˆFPÆæ~ ¹¾ˆ,1JfëEaç†à©:0.¯RCÆ¥»1Ó/D;€»ÞÇá8 'mÚžCˆøêãòyõ£˜ö¦&ÌÒQ¹zBÈ!•=gåS]HÌ4í矀?9ªƒÇ‹ 0M~Lt0ï|ä@mÚ»‡» ÊͧùÉÅ Ífc~S^1ægŠÿ[Ãóî/hp^üÚÈ-ÃâvqbÙH»_‰h~ŽìˆÉI鯼~ÌË%Ç$um,uèJ ¨´äÑ#kÅ0SÝ·]m.‚…ÌÐ ­U*,Ѧi¬Ò®h5£?¼5ÒØõ¸8Â4T°¯¼·Õ‚½mñâ`ûpuOègè§¹R9vÔ÷蹉ÆÊ´ò¼R~‹,A¥´1,Ã>÷qY¯yAºNK¶,¿ÍÀO»M5ª|øF¸9Ž7 ®Cl¥è Ücµ#ÑÍŽ_0jŽ\NÚÉb«»ãx¯‰x]U»Á'D¤ÛØ™¶Œ <±¬›;e^_jz çD©Fw\æÏãwæµÈýR{ ¼ûm ÝÖrGñÔÔý°Në·ÏŠÙçH–ø¿}†Yò{yÈ#þU>}±€ ø"S¸ö>Ý@#“Ž åÄdÉ (#}ñÄCÉÊZÕ2SÂÓ  ¨°{¦_úN“.p dÔÔI’{Ì<§A€˜;¸×&ÛJæ_ÜŽ$?ý9Ò7¥¯²(ÉÄ>ÂÒGš}zV*d¥g,d,Èt-ŸŒ2õ|¨ô–ZT,†q¥na±úi ‹ ç©Êâ„UZ(5“ÝXµØEwæ}šf«zÆD«=q¸ô•†…½ÎÛ«$êï8íf±ftG#@Ú½HL(v_*ïRìVÂX#£ZîòN+Úìšuî/£{R ñ›|VAïÐS,ßZQ¡¦°{„S1·uÝ5‚нŸT£7ñ•ŸËO9@téb"bæÆæÅ‡.´“åjíthMrgŠÝO‰oì”4=ŒÓ½X2¥Ò5f v@‰h†&\Xijn »ÀVƒêŠÑ#ß@¸Þ°?>†Õç’VÐa†[CeŽˆ´;°£@/°d§qGýåYùƒÇ§&¶Pº¯¨]—ö_LoÁèù@[¨d÷iÐ'FªåBã=ŽtÅ] ëÕð7@Ö%PcÉB%ðö ʺ§pÕ³ 3Œ#uæº À}Ty­:Z3¢sõ&ˆr‘/öä]E@·Ö ÍÞúš¶ÓE*Ì q‡uT5®ô)…÷OᬥÔcéIgϧ҄Ëvwk³fm‰è/ñBî]K•A¨oYúÞeóì"Y®+øJëÝj²ëT¬êL¤º"-è««¼]3ÅøæÚ¸\Ñ\v}s`T6y©¿EÂu·YUÆzº*(éËå#ј(y2©zž3W2øëàò§€Ž$]Á- h,˜+#D+ªŽ‘y¯À¤TQC‡Ãí»íó1§÷8™(—{ÙÏÁ³^áØME!»¨N‰ÂXêDbKÍkã›`¤ :jjÃEØ´÷D~ÆÎ$ø >—´tÀP5NWW#sr»ìbÃ4æ 7[XÛ+š6v\Ô¤z‰È™'È¿2áâI‚ƒŒ²èC«„)úéÅÆxŠQ¹¿!ÝÔ[HȲÀ±×l5{/x7õ7z«!×8:L*_2'­Þ˜u;_Z曓 |Êí\©£p•«bÃcQ®ŠLÃ$Nv(Vr-gÛ/taXÀöª‚äwlÈDewuý U™ä@]9(p2QqAò'„HD(rÄ+®p0=–1¡)Ož;Ï)››Ï%dUºø£.!÷úÐñý ÔGž~¢ºôjço*‰:ötbdPÞ7íÈq6ÏÌ„Q¥K¸ˆ²«;ÓN=ÜÎŒIT¥6ƒ²¦Rj 0vÐ%¨j÷+ƒÞ¶³w¤ÐãVkKWËÃü‰ª˜nÐT8¬3bpc†çŸ,|Oµ Àaž£ª&ôkUæµRæ@£)¥ƒYtÅâ´—EP`ŸH3úš/êo¸w¥‚ëQ4׆EËëâ7ĉ'€­æå€KµÒ3õÈ×ÐÝb$õ•ãø³"Hµž¶\v•¿ŽÄÍû®òÃR!;}Œýâ eµ¿‡º»ºÂ]‡<“û¶vüét¹,ÀñÙÅhQ°ù“°± Íô™ÿ^‹%ÙRêM3 Ù;ç‘%1—‰›÷ʨ†Mí¬$Å=Ê”´rã~6»})ªj)h¾ vXUj,òG¿ña3Œ¹ì<ØNÚ¤‘JŽß¶&àœIŠ" ð­àLáСZ«b=NÞ¾ØÛβŒŠšër RhñS/Û"-ÄI,{å=„AE²aNÍëþYÁªÍoy¤ã±Õ ºâO©î‹ ˆKÄÅ1]àßù"'bXÔH(Pw WéÚ®k„†¸¼Ü%¦o<­Û¢1å»õbJ¡ŒÐ öÑP¢Øˆ›6'÷(­ð³ˆ_EùÅ},÷æc&ƒ•æÔí»¡+Ó†µ…®ŠQ-EHîÛì2^`ï4©8€A},¹>}è•”¿is—/êÛ_¯ös¡6{óí¡Ÿøz{Ë‘ãÆ—>¢ÛY_xq¦-;­™Aèüt)7„…2 q9¡ªˆßm'å1ݘÆïMÅ=ÅÆšŠšb®ù¨`±uP¤"Ü®v«óG™y™8uxsåÙ†9Ñ\48]ô“‹PŽ;¬NE=f^¿ÛgW5Atý~!YEfMˆu9½}ÿ·öÞ,œQj a7ºz6¢· ëŒÀùAG%ÕèêÓ*Þwì?XDÚ”ZÚ˜ºjÍÕJ!ÖÀ(€— G|„%]úììid;|_Dj¾·Š9‚.‘=s^º€vd˜{‰J¼( ¹S.Šðµ§ÊMKhÙø, ¥]!3º†ÙöÚíØh7··‘bb±Æl»ˆÐ¾1fÞ°#’´îŠ=¢/_¶íHf25Ì”ôp]˜(loím­Æê‚:p v…•<;ƒ×¶JR0ް“äaÚÏPYŸ¬yH•‡g8¦­Jj±©,¼KU[aÀÏ!0Œ·Ô@¾RGÚGqÚš `”ÅqdvR‘ûKƒ 3®òc676Ž;JGŸ¸µ989§›Š"±ó/u{xŒª‡”ú(Ö¹3³lNRž¨ùQFCõä¥$b]“±ÛH7FwÓ,Ó•Õna”¾Ü‹nÆÐ9æ£hËâ•”°óä‰ÙÞOª›YÀ‚=áþe(m<ùÏhZ¯û_e¹3›…Fr$‘¢¬û¥™ySq«Úí:V¾ù˶ùN‘¯=»an«ºÍ[5_ªÙo‹T…õV!¼·¹SLX6§†ñ隦V‡µÃzËÌ2Wws·l¥å{ÐVï›ÛúúVWS¾¦"€èŸ¶ëÖ*hÅ„høÈ¿ò/îæL½ î JûRÅÁ=´“,‰ïQ'¶âù•ÝZqƒÍì3•×R½ µcÍÅÎ1ôih¾ a™ˆ+®á±Ov½ÃêSc ›ÚeCÁ´R7b¿±L¤Û“,;øX§iUmú]°ÆåïR=+öùc÷„*A °èÑ•T¤S2H´QCpÙØâ€b%kð[xŠ¡?N9švyèÍby™Øošêè<$*Ã:Ibß×)a{Z9/<{Òrµ±Ó–fp®yº jÏbì–pŒìY’¦ÈïùN°NôŽ/ÙŠ‘?›5!é`™at¸ð΃ÌÉ‚™ì Ž?ÖFç’ãñ(v+qHÉw³cܸÊ#‹²6Gg‘|kϬL¹„—a˃´› S6±hM–T”—fgLÚaTÌ[‹6) xc€Å‚X⢸PXûÛÀ€eŸ …uYüˆ?é?,X†ã&5wÉã×î`nqJK $®ºé&ßH82•ßã5Õ[Ž–4dÂh$Z„HAã´ãçÅ1Ø …õ›Lb+× å šR…ä;¨Ö©€ÆL w]½¥Lh{ŽÓ•Í;c›0qýõ‹Öó×D–në^áÒ¡¨xÿ,Õ©šÎw€„Eg­ò‹’ßÜÆ­4Ú.ž&ëlÙÅZ~$¦n+¼úuÕ•.~o5°ÚQÊ `ž-1׸ö`S‰I¾³Œ~${£[dŒ ¶rStg.ÓîIŽ€õXQ«àÄ„)¼@Öp´‚”ŽÖz±‚ž„*íSgšÝÜ%©ÁÊeÊt"奠²iÏlYé -R´‘×´Ò°õ}Ü͘*Ä[²”ˆ:žø^¤ô_+¥¹Ù§³pd¼‚5u›˜ÌX#BѶ+o¯ KZNHŠ£°éÕ¤ß]y&­7QA蘤!œ-,) æ$`\ŠÄ¨> Û] —Â']q©àhjã¨+‘c4ýæú2'ŒUÅTzBçœqˆïÃsÑ& W1®Ù+Ýè¡|˜«û«.p=5ÁB(ØÙÏÿë»ý·ZµZPøÏÓÖºlýBíÙ×צÖ!Ù.,½nI^:ù;Ú³ãÂZåñRGVÛï4ô_ü\ð©ã[Á^LHËg§fOñžá98øUb¦ç™:Ò#Gu§*zëŠcn u›‡"Ýq‘v_óe(’têνؓ`a?v×dWD H©³}Ð4Žó¦kºKp©¶4õzUñ½ª °Ã¶|¬tŠã >U vCn[ fPºýp­< ?S$Îñþhöæ3RÙ›¾n,WoQ;4¤±ãœŸl2¤ÃùµÐL9:Æs5Ä#†6ܘ[ÏkVª´ÄÞ†„2ŽÚ¹žÇˆQHNc±$Ò ¤#x[6mÎ$Ìê%Êj ÖÁÑì€Å½×v* ^½Ç­¸ËW¬R…»G|ÎsëBU†í„ÊÃï•^Ú_&¦!¶XfÉQnõ;–Š %Ü!0ÛñXí…)ÿw³àzyx2Ÿñˆ¥G©©;¬€ÀéZöc£²gq:íÒÕW$‹®0maBºé"šó,ZXG:ýûñ[5G@àU)6Ÿg(²ÀE¢ŒIгJw'nYÍ÷´³rï ¯LBß=•0fѶu«•ÌD±-ÉkB°àtÖc1®¥m)º™YŸò»<[觸ûh¬ã&Íò6À’°ÅÝæQ½ ðƈ°±–´É”.CÌ aÞÿáb¥žËK½ìIy•{UæYí¿SÓ¼+ ¹’q±úྺ٨Ç,AËå*\¬J)PÎ}š¡~iÄŠ}Šhk÷ˆE4§‹¨wßâQPKÓØ4§ã0 éìdÓcéÚrw2âÒY fÜËõ’uUš€¨ð€í ¬›R/MjkçxjDŽ­wÓZ$.€•åÐ$¶*Jöƒ¡“nÔm«ð 9u­4WŽX« ªïÄ¥ç”0.pa¶OÚª O&7<©‹£¨ù4ÃçaYüMÌ6„/Žg»¡VîÈ/s– œfÚZÂaIJc'B1•‘ÑÀ¨u÷îqD€h/~øíE Ê.ŸmÔ…ð ”1š©ìP~@Î5‹õ°ŠÐ¥ B.6¾èlëîÈá$[œ#ÐeóBþ«%†%°92×U¤ó`@òª&Y÷•ðõOoH]ñÎI†&«ßØ¢—ùmDX®Ät‘=)Œ+öÞ¶‘'“ÅÜ<{t õz­Dh Úøz­ÛtÖî¨ ª ˆ¢¢²–ô¨«JPD½>>Aè’æxÍX§S”‹õ: ÓÑs1a7š*A©ïÚéÊ=yºsÊc¸£€n€`ül6-"¼l„žmEHpèMÀ >þTfUÐéâGuÍ Æ—UBàBÌWiª†®öQm)‹]…^Í!¥¸I °êØ Ê(|™Ãúê¸4\+e­TÒU©ªØ]¿Ja‹klÏHÄ\™è\ÀœK"G]{ȾL‹»Xáy±ÂD¹šc¨$X Ù†ÝèWHll%–A”ˆÔŒ™Ò×µÀAذ¸à€ýŒQð[¼Ìd-m·vÐ…jõl–Õµ(3Ô‚•q¯Å]ˆ OUºUfŒya»hÎz3°øçˆäݼ«ò|ƒƒ¹2û³á o[–ÿ-NãJÆÛ›}úÍÑ+8eôËs/6'iŹR]¼qû2ö¸¾ûá¬XbR£*ÏÔõнs0{#yò¥+^hßJQ‘ô—êK"g :)E>æOñ3“’Èàù]ÇPml”Ô×nEú3™Vjõ^KÂ×{%·PzÊq66Œ›ózæ.ÂZ"Ïcã³kHwü¶×׌hbÒ– Ûš¦Ç­Àdª4{Rçï~vµ­‘ݽg¨³jxÄé&ÅXÍs0‚î’ý>áOKNÚ„M">Ò´±¼nZ‰p U^¯fZ`‘Eª´5ˆÎc%uHJXÔ¦¤±Âê:Iv³7ñ°ˆ:½ÃÓâoíÊ õNø«ëÇhhš”)Š,®«®šÎFô¤òÃaÿìº4îq…¢w-b§R‹…J7›$øÛ¦KÞ}_qyÈò mˆñMã&Ž[˜¡éLKñØŠ?dþá)Ñ öïÎ3å•r®ª”bäÒ`(K Ÿ­2P£…ñî3¤ÒkWv ‘O­Ÿ­%i®9Häï÷ÆmVñí>âkö"øMŸDúÇé)¡]IR}…Ô >âM Ž XÚP4Èaå«rªSͦÝ!§Ö\Qå©e”P©‘˜X窬&m†¾ƒå³¥n/\Ë@Fnÿ-Ù5Ç=±ˆÄøäÀè-îRuº:åT ƒèÁiåCÞf ~h17iV… ¦`Nø©¸”#!J£©^‹gH ©M£/1@qej\¼˜n;è0ÐZ[~Ω=ž­ô>›ø’±6„]̈ýº5ãa*ÞF¾R ÍàJš^Ž 5‹d=3±m.èl‰Önª…d2x¡¬!Z9´^Ý“ºH¶‹<'‚aÍßsÀ†,–íª-† ç}V߀4§]Él¤WæðdÑ«[Käy ŒMU4ûÍ>¥k%Ž•¬#[]Õˆ•f³ú¨GoÄvÿªg5 €áêi­:îŸvмÚõÖ·gÇ<Ûn¯¾ŒfsêÓ|éq•?üo|ÐWËí0=V~Úâ,(y.õjkpè›[§¯º« hqæÙÆ%Ü™Tµ}ÝìnÍ òâ"šGxæo •Pî©ÐjH’;]â½d•I@‚ gâþ(~±"2á!Ÿ‰§"ÿâó‹wˆÄ^=íµÑRn•Q•ñÅu œ2µÔFéÖ'ú€€ê²vœÈꌉº \7‹+¢âF¨ç‚»À»ýùÙ‹œª#ÊC ‡‰‘¿Q2q•ÛåÎT¾³úwÄäÍʶ?ƒw€[–ÅÀ€ØuË æTšÁ÷i _“vIi<¢}UAwÖNžÃq.L€0Ÿ_ñ cp§ZHe–$®µ¶ío36f0“'x®]õcmt+:ÉéN%Ÿ bɤCš61EZvÖ°)G+Ÿ„¶v—¤—&K:¹Xlì3UñÄ€„xgÖ(êZÖL.;´a©X)FÑŠÛ¼Pm[½1‹ÚÛC +”‘@ð™7#޲¹ró`=;bÕ†dµÑÐy„ß$ÝðÆYÐY¡€”Kw/pše—¢Ox`IS Rxhé郘c %Ð)‚5cG30Gcú<‹Kðq˜Pß%GŒFÀ·8;¶âß;Äò¥^Xaù%Tx&ó w(ñýßòF7y=ŒL`U[½‘FîÓ¿)®‹»²½Û’ÆKµ½4âdá}˜NŒ:«Š¡–¬¬î;vÔ‡9¬x1t‹é}(hY¡£*c}F&íÏ”wû%@+Sò.´áCJ¾Úë*FÌgŠò>ÞspRìœW‹;&õ1µ|[IÃ8.×)ŠÕ6s¤ƒ»‘zÀeØUÌs÷)ÇRƒ¦$¼Š`ÌŠ%G‘®£º6E£å•#ª›ÜeØ û‘oQDn6 3äb=hYø ýj¨V̪ ‚y‚™úT@7H'Ì©~޵ìãö¹ê¯Þ¾xÓŠè[[7¿V«KL¡# ¡Ÿ!÷ŽZºYzìŠüg¬:µÝº‘þcÇgXPDШÒœ1eSñŒWÓÞÑ)ÒÉ9WB{ ÇÔ>:riÑ´ e’ŽJ‰÷>À£+Ž% ¬)9¦žŠ•,yÈ@sÄ¥^&îö½Þ @Ë©‚ÌD'!ÂtÍÄÆÌa¼Í}ù6—,!DÊm¦ZD+ËAÒ§ ‰µ }x>¡Éÿ$Z C©" o¤êš¨}8rƒV¡DQÞsCç÷ æ <Å7ë-9̱[u_Ÿnƒ=¸¼¹háÝê‚Õ‘7R C;G3qvZ-®‰ 6|ß´“e aùÁ$ÑXJR½.€mŽzÊÊ»ûQ›Eµ““:mØÚTW@Œ›¹ÅÍ"ciÝ5`ã° ãÌÕUN*èçη»Oì-<ÌI]òS¥ÞE½H 6LàŽh}ßËA·Ñ„‰SD.ž ·K«ˆˆJ«¹Gç/Åt”ÛÍZ ZJ¡›6õºXn:iê&/dغö=‘_†çÆÿ5‡s‡ ŒÔÁFmï#ìÚ"’Ôe+’¸âCÆz3L¬Ñó§*……¿û ýüh€ eßSCu\`šM+êçzs/f„¶)AyÚZwtl(tq«B2|“|ß4i¶Ø~:¦¨u…ÖÚO"1-§¶üÓAB·H‰$ cÒYmÉ&4p­úmr7‚ ßrø¯fLN§Å­¬iT ¤Vb†™]‚¥l‡¾)qê\fÑæOXÖ„LaURꢊ6¢¡×L.IÔÄ-í¶–ÑÚqË#Ü’÷TEÈt͸ț=ùaùlê/ÆæD\.4ÅâBÁïwšEV% —A…îhp(•¾Ã†š’é\ØúmU*…< «:Ô©ëêšþyI¿@V©¤„©‰ÒeU"5^â'º€‘ÙÐE'Áºa C'2V !»ëI8$¡º‹Å(æÕÞ-È$5æ¸cÊUv-_À¸³¦]|Ý¡qª¸ë‡Å1bkô÷ÕJ¬ÕþÙ¨<"ÙŽíS6¥Ð/ã}<‘é{9¦—wÛv†ÓÖe(›h^<°6Óú´ê…–¤ÜÕ‰]ŠdHøØâkZ”f(Z}=Zâk;]«­¸(©˜ ·›YÃÓ¥Z#¦ÇŽ w¤‘%˦jõVñ®ÇŒ>2r3Ø@Àø2¤Ü2TV¤òˆ|YÏêÉ QŠËb½Æ¸?ÑSÜßû¬Êw8/lGüIô¯ÝDrf°® ©’XúM ZœcùÌGÊg#gnA “¾pó¡s›µ¥…s$S¾óÁÊÐ.:§”ø¶.Ö42êO\Š»mÛé¼¹ò×€áy€º‰ бô¦ nÜûHWD™éh †ÝqÁ³0–é­;úÆr l¥í{*O!‚„7|bƒ³Qºø°e÷ñâ0ö 5YÁvÐÁ?ìH ÀW1ˆäÊÎ5OU )[›Ye„.á×>EßxÀ¼ÁŸÚéœ$š’³KH‰+eÞÕ`€^\Ò¼P›Óމ„•{xËDJßh×z¬·[›e:O³·Ì¹–Þ8]5Ô‚ª ~ù­xJi·Ja*â…É‚‹º>ÝÐ\wǼmó{30Îâ£ðÂ1Vϸ¥;U>Ííhˆ—phcz1¿0 ¯Y2Õ-ÁƒH´Û;uï[©¬*ÐкÄWžY%#OhÀ¶[ý­F«JñÒ, n€o¶í¬…¤féK;(W2¸bk5pVæN£+ú0ƒïÑÍUW=´öXĤ’ÈdLn+žcÁé.”yX£ëiBâú°´™„D»D˨¢ìt1FMžöë|˜zÁ:b±+ÖË]!-¼ ‹ax'µµÚ±¿è´NòN•sifÀÚ,Œ7*rß3„œOêí»U]…-±2³(ƒ{Û0¿kqšÕ½¥m½ž§J¦½ |mÿsÓræ"ê.+Ò¦þoüÞýe¤5º)ôܶ¹ˆCÂ:{Ëvê0ú2ÅÒI>¿Sqw¸%,®²Ús ê€;°­´‡ƒ¶˜nÊe@xÓ"¨í1ˆQ!±Ã†È èå9©Š» ̪Ù°#غÕêh£ÛO¨]BR cØÚýåØ+gXýœ“beË¥ËRrJçéß(¹‡¿¬í-þ»$Ùø˜é}Pa¥‹œUòEÀiÉUo’Ô0·r5Pð©ž!‡$Kã¤JgMé§SѥПZrÚðTû ®€c éúGÞú¥*Û#q²1EŒÃò*¥Ý%é놼J_]G.ü¨Èv'×*Y‹‚F |”ÔŠþP"¬j—¿±ó’͇ë+Êy6–Г‘Ÿ2¯g .&Z‚·r¹Æ1%§šEú~s“»Š±Ö€™–9‡òˆˆ{w{«L}*¢¤¨ /u?ã”ÑŽ€ÒGnÛ’ˆ›Nå¡Òb¤}$˜=WOåvÕ?ŠuåÔg6`°/@‚¹D=ì’ô­}"åÂÓÛ©]Ìø£â¾Á9 Õ#a›Š$8 Ð4UiânyœXò ·dOrl¥¢Ðr™ø^õׯ͸ÀÝñ¹H± |çˆNÏ/Vc“3ùÓå ¬Si¸Ìyú®f¨šÄ„þp¤8? FÉ¥ðhãœG§©1ÐÌÛ%€³I– O½.òu—ý)“dc þ€ºº„òí_®ˆK’ä1¦öHò"ù,Á%7‘Æ*¢;öïï¨( œÊÑmÌb—<ÇTû4 Žvl-ÅÎ »è@Ï¥-ÎPSœÎ¢íµ»ëÖËñaÐDNJ·0MYÜÕL4¯íD»¯ŽÎ!ýl)¡ËDGgD—v+Øà sæ™Âé:,婱W銪¤‹ÿªõ÷ì]¥È ¿ñ6ÀM´»œÜ»t!Å0²9ŸŽÒÒ¬ûÆØÅÜ„à?‡½å­ ãÜÛT4DyÆg›Ð%sêHýŒk5š°û>R!À’pÔe*ïªzëö­øåˆýgÞNˆ»Ë«!G`£šÅp˜ªÁ]cM ûsƒˆÓ3ô@Á“z+B¡¢oŒëdR©Ëˆ@œÜ"7›L RÔ+O?{Ÿ€Lùr•S?T¹XQ[Úõ Z¿¢Máz¡ªÊ œÕ¦6ã“bƒ «– iRºÁ42ƒzuÜïæK“ûH1VXüÚÇÕ½W‡J+)Š¥¸˜j*lþñá)”Õ*´_·ßÈ¡3 §žèd+îž1\]@°¹›º$a”ÅÜšék!=›eNјè•z¦b ŬïUÀ³)iLõºóÓ~Ùg™Cx=kgv䥬‹×&Òü—†u ¥¤§§¾-eùtsWñ´;þÂIÜŠŸ´%!&lN@}F•Ðv~cXˆà§à°-c±¶s¹ ¤·ž'†—Ó¤ûÜi$•fÚ´—›|+¼!ŽsOû( ã·Š{˜¹!åj(I(µeB^¦‰¹¸ˆCëZ¨<-RúÎãÛ«"CÅìåå@YLT‡4!5ÀÆ•¦-ýD½Ø³J­U §¾ŽH½ÓEå”’Ò¦ÏHÅ×Q$ru¹‚{ƒšp¼#·uí_Žtʬ CŸ'(´êNh•ÊE¸{Npð,?XmŠ©¶†¯'á9 pE?XcëÑ"Sûqú¬A­d‚H›Žßü&}]ˆXhkÚ∀E¦ÒhKyhë¶·!6,‡Õê¥sD.î04Eh·Aäß'ÞÎv¸LB¶ ãY–ÀÆhË<ø”dI+Q,~F Y—t'PÉö—¨,)¶4Eý7—»9R~­©Ôž@ßÚl‚ÂÌWÈ5|ëq˜NPÅÑ~Qv³ö0ôÎQâ³žÌøe›øžœÅpE‰$@$óƒYða¹¹Ëb¹¹æcœÀiïÖ€èKê9€{æwï#>›6p<¥!·k¶X¸ëˆ§ »zY •Km ɯaˆné–+©Æ,Bs—GÊ@D­Ë( ì’±<¯‘NÐÈ}ÝÃ+-Þl ý|­;«â„7Ên¤jRCYV0¡ Ÿ¤åÐИxؾÊ*@öAœª‚¬"±‘¾ËF–þ I>k»ƒjùî ïÝ‘´ü°Ñ-Hôãs€ÏÓn%´>?•;´¾ê0Ç9Áe9ÝŒ%€StÑåXœ¹í’ä}Ƴ¼²â,ÀðVgü¶º²þ QEŠdÆu™ Bä—E€Š`^3ºÆq-…}Åå9ì2Æ!ì §­´0G™ÛA¥„ŸKlO7KPD†%úøF$ª_»šõ?‡*HJ.©So»L÷Yý A¢*ûDôzïH`nKñ;£®j‰;ZÊàP=¢ ŸSE¶!ÈiXû›|4¤÷p¿ù|<ß´q0¶˜µ›™kIš¡†)Â[)mêZ‚É£Sr”m,öÌcÒÀ™3%7§•»$&%p%tl,gÆ‚ ÞH¹ÛÚêÏôÜpWÀÔå,zŠYš‘œ _^¹:P6%²m*xíTpÿ`ax?–-vAunÅ윒…pÔ‹Ôª|0n=Þ«œ†Ë‡v/«¢ ÁRÌmÜ«°ê·k+%IqIq!Å_„Õê§T'v9yµžtZ”nô”£¤Ä›rÿ.ÑZ™±tÚ ’¼xäå̆À7öah=€„OÑUŠøÌÇ~׋¶·ì‘6‘ŸD}+´”“•5¤é *$B P›fl·M(È:l¯ü"8wI¦7ï.®´bŠ0t Nw[c}wÆp8 ½lgƒ¹ÊDðzt¹7¹ÄœÆ‡¿È5Ìï˜ÇM›×È_Á&$3°ómª1’E{(¬ 'fK}HèEʸ˜I®½ÖŸã2ä›$\Sɺæ×LCxÄ-랦#³ ‘p§÷EUsØbYÿò„=oµ˜Ã•½äMA<ÉQǺÊ ý¯ª)öØáÀhzÛ«p UknZÜ®«¢‚kâ?G}a×뀿_éE®`hÌhxC=XR>öPÁÿYéÅ»;0ÏfHÙh¦>ž2RŽÏR*xòRƒ£Åèm³€"Š"¥*˜2´s0p³Ê‹ Â&×}kÁÆr³CÒ(\O–ò¸ÝP´ôŒÄò¹Ý=…n¨?p}ó}„/oþq9ºÅºÏym`ë6Þf ^}Gâ@5æD8Šq„€&Y–n~@ …9‹æè†lÓfTü€ö–ètr—([¢èÉà+ ~=¹‰¡Ša2b³^Bµ¢bÑ_»ë9ª¸ ó$ù€Y:•ãXùˆÆ¦áMª€ô9R D@ÀöœæëÝ4Þ” U5-8îžõ³bï:mÔ· ZΖÝÑôŒk«vWd,öïƒÞ†Í*gÒÏÎTºÜ©vÄ i7Íf`y±¦Á„Î: ›ô!v [:§hÉ´K ߈ź±Qõ¦Aª>zÖ2¬ÁÖãèH¸Ù{ “Ü!=v8¤²s˜3>(_€4œÉ8{8#èî襹‡Ùoêä¡7¤uº¬¤’N?sjªa\æH¨®êˆ¨:¡ãeõT2yâÓYÞÕÜŽƒä© Ÿ­±ÒyòFmÐÀ‚ÀûȤœjBL†µjY>xô4R‡¯5÷ŽÒpÐP«R²•| HJU‡0Š—Žq4—äâÉèñ0"{F"Q¥e5]B)ì»äù^> y¸Ô¨rt—ªˆ‰cÅ®UOq͸üÙ“Rår,3®DYPÐL½vrz{•ø¦<¿qg>䷃ͤß<ÖûC6Û…”Y¤ÂIT‰–Hœ—ê¬#—ávdÜë<ÜÚ‹>œËÊ®uoòÒùlÁåˆ/Îû¿¡)6ö—gKÎrúN•±áœÛó™. Y´b{G%+°êFŒB£Õ‰FùtË6%[Œ˜òÃ’‰G䔵&k¤·øgò7\K,€á¦#ÒꚘS]–ªNN#µéf™é³¥R,9*ºUN¾½½I×î-Î2Á  ÂZ-Èf¼Þ²®Œ£Ã‡ÐÝ[/¡!ò·gztÐ<úÛÀˆ³éšÇ%)J/é½ÙBÇâ’Š@—ñœ†yÚÁTo±†JÒè”&"DBÝGf‰П"ÑÛ‰¢+žZµWw¿ÖaÏú2]6GZF[™êœt ÁãÒ¦ˆï¸µfH×T¤&òÐxƒÏô ßÒÏiÖ»Ú§(ŸÚ'Í`©Š¢xpª9!$¡‚ï¡i(ƒð ÅÜ<ÂI™±Lå³vª>`Sê å?¾Ë:#ÍkÔµ¦ÕmzWÃ:—Æ)ŒxÚtJrå¿^R„vÜi”Pzœ%YH]nM3¡Ï¯æ`â:FZ…Ê è17ËǾ? }\›“þä‚7‚¨ñÿj ’UUy°Í0ü±­8¢˜02k}åi¡BÈÚ¤!´tˆ4G¤òõEOW|ÀË•AVS-IÛ<¢.Þ×{õ±H¤s–ªá úA â›þ1¥@Y»y‰| ª$[·š ¨÷0†H­N))T»'lBÅŽ i éN¯¢ÎçYžÓÝRà¨e;ЦÞ:K#ñ±ëŠåuÆU)F0Œ6—r¹ô‚»Ÿm; ¸¹nWXEïƒ2ÎVdBt-´µüêÜ'¹í‹IV‘â©ÞZjo#<«u*íÏ,+ —¿IA¾dìôöP°>_ŸžÖº)?s… P%—ª«šôŒÄ³ß=îXWk'YûxÜ"ø °¤ºÎðqæ-–/LÝ‘—ðºDfµÉNFò|ÜUúî*©­=«,¬'I+ Eb 6ubYNÓ:éÒbŒ(¤gh£Á vŠ­ O‘ ö;®we·iá\Ôä†/Èc$“@¥ÃL©v¤vÐ&—Oœ‹¶GWõ7ö”Õå¢Ã¡´žâXBuWm¹ãm¬áR«`}»;¡­°„åµLÈ`¾Ë.¢X§I•Êåp8 ¶ÍåþàŠ-#;n%Aêr“ḗ…”Ô"î€Êkÿ1°á‹¶è~Q[làý Aß=[dÐ(VA±ÙqEEYšE)~Ž àš<‰idÝJž,ñ$ë’”Ü,ß¡ªŒà‘»;ê‚ÃoBîÆÌ¬,¾¤rw=R1Vpé-RA×0ËX"nÏãw“lù¡1¬Øß ³ê`Èj Mz°‚«>),'‰ªœ0p³Þü– 8.”–èòS¦ºÐå&gDRÝDHÕ=ÁÑö¢Ý)c|¬ÝÞ›5ôc>:×;:PoZÑÜ>öHå@ˆÛGЊäVqÓQK'Í‹œX=œC13u¦+VÉAeÅHËx¡#Þ¶f¶¼UJS m4“‹9ÔèK›Cœn?+Ÿ®HT†(Ó* Г†ä0ï/æ›廪>Ów‰‚rLþ¶ÎØY»£è»+a’lO]÷¡m<ÕìºT‡ãØ6Ï­ ¶/7ìíµË¢B¬ÙÅøýH"(¿:²úy.„×y¢&€9b¶f]dþ™ ?‹ÍF8;ÕQ2žå‘)7ØÔ}¹F˜¿Äæ÷n)ù>O¼CßûË?ûëw°¦9@ühB¹°¯÷õÅ·Ü£—_DæáÓU -O }Rf:«©ˆÑ_þ¿OÚ!JK£±Ì²vª“眬MpTÉ6í<ðØõCNÊêjÊ —¬gQš|SR10o’Íuöª gú(©&Ø–Âç¹ßb*mÇ “ëG tŒ®JNBNÀY,€ ¾Ã‹³nËJp ¬ß «¡>‹Ä„­Ç4DšŽÒê5ô>¹Ð)âOhrmˆwWF ÙY\}µ¨ ]®£ºS˜ì0­œéhJʬ).™tpâªVܽAÔU*¯¬’Ò?Š<§ø¥sʹ2&°[ŠªJ´öµnèÐFì2ù¨™<ŽnR;’'^Éb@rµJ(ë‡j÷ê)9(¾Áì'mL—s‡fÄŠG°ÔŠ…\ɰ%ýò-)òÛL‡ECÑÑ›8ófº!4ÓZˆ@!蔢ži§[5|À)å¿Z®à¢1©ÅmbUÒ©©”x¦°°^“pã`“B–܇(Åò’Æ0™ËÆUGªúÄ7N ufÁ.&º“E{¤ãÍÓlžeÐûç9@ÞnÕtU˜¥ªÅ9¢U¹¥ë(õŠ(ثڟb³ ¨_Àä®—aÛʇÿà>0Žõä„ÌïèâªX BjߢšcÔ!Ðf:¿Œ|™ò¨ ×ûc{°˜ jù¼Ì¹?…§Üµîöà¨÷³¢œ[!zY_¹Ÿè.I‘¢Ës’ã2N]ƒg]^Ûh, n#wH`NY^˜c""G5Ý&k‘óZÁ[Wžf` ?‡7"‚1õ¥<ç2½ ^.¦~{ì0êÚE¹[[ó} ªvö¡’ ¸á£k#J³Í2¬k &HRð!ç˜ÃsYÇ…ð«×›ŽACVÂ=- óiݓы¼òVâõp²ú•šF÷–ØÐŽ@qiCÚ¡«lbÑ<øÂꤶAÝä«Ï2mãά¯SHÄÀ qy ­Ô¬ì„nÔ=ï#0¼Ø5û0…å¿ZT2'‰ûDˆ9í×ÔµXÍV([°úú`ÆøîtÃ#2»©ålþjÉcoCWTaJß éȈwÁù€m¦‡ë€ ÎF„Ǥ‚Ø:GªA>ã&‹l›ª•d“ÝnL ¦/òM½E ñ€é—<½»¬05TD:˜Ýáïy)8 \oo¿]‘·KÈæójý+PÍPô2¿$«Ô!x»ý‰¯Ç—’I½ý³Zd9å™Ï;Ö>%|~¿sÄÏ·šÓvÖyÕÓŒ,+«Ÿ³gÖ’êøWhºâ)  ù„ëL±+c·MyǪ5&ŒoÜ3äfÄ-Äe¶Nfs^cv¦™.üþÄ*÷xäËJ·—dL+¼†ýÊOQú4±¯º¾×~*;3`lËP«åá¯í BÔfT_©Bàš,?†R¾K·P~ö6ðMiQªl­¼+&Wö¾J >ªì6ÔŒäB>ö}†ÚL 9Ôßh°º¬ƒ´M(3!Â¥$É™ˆè¹ŽÖ­ENňԯ󎣩ŠÓ¶G7éæ‹\Ü4£ÐÜ`xÅ%_¬ØÎ÷Z#Û¯²Ê,L^ã7¬ï®¤^qWp˯¯WjÄEk'nê™ø7@ظ¹ÔŽY‹)î;ÀÀ1‰kÅœ€#ZL°ˆ¿^÷Â*á#f_„‘–¡7ø±©cüÂÜ‚ÔSÌbdæœyñ¯1Ç åÖ'2s~j¬‹ÈÅbhûõ‹†~›1—Q\‹~<¼H?>¬Lãí Ä)êBšÿŠ5Á~VQ_XAx~LüÂxçX_(F`_à“qí´ÄFw¬G4‚b›™qâaÅ‚í›vx¬f½'œ__Xê(L\Øx·†Ôv|LºÅÉvßǸƒ¿°k@Xex1ÄÃäáo®‚óocÜ¿ã*øÕÕØ&ãZvµq^LHÆÞ YÇ1Q[}qwoã#Žé~x,¥ \’…’ÊÎܱ¾uO ‹7ºØ±ø%Q¯ˆKPÒ…#TGqu§ ä“qD!XŒ·!‚5¾P³8Þ<¾,¼-þÆ®åßÄÞõïx‡[ÅQÓ_qI¡iÐ ö•ûŠ ¡UDÀ(]à¤d[ȧñXɆC+î1ì:*2§| ÄœqèÇ~…Êþ@Bçrìe¨ r¯tÆîw"ST—‹‡¨h6<Œ[\c Ecu§m춨Åè8 c+FP>p+ðäŽc÷9ž;qà!*áuc7¾¯˜-P®àGÇ n !„Œ@õÀæ/M3:TþÓB¯á£"h/Îüx°Qßz œõñ c¿„ ýåït€åЧb“ŒëC ÖEº‚rÄk`ÃÃXà5ÌÇà Ev<„ JägÜo'ä—â<Ã^Üùâëã%°ÇÀUxÅ F×ç~ìþÖŠhÿ6VDÿ{®ˆXq?q—*gyLÜ8Šâ!˜Ô ÇgEqÓPYlqÖ¢úÁõ®qzpÓÂiÒæžk¢“&…ñ°á¬Ó]tXx)a¡Xo5‚Šux';¸-Óîâ!£êˆ5FL¿¸«älG|YL8ÖÕÃîô *øû ôÒ1—‚sè7j9tF˜ CsúHñ6Lz 4bºÛi¿©MúXiˆÔùˆ+Ž‘:Ô—Æð•Ìw¬«…Äq?¾Ä>ˆÖŸ1y`%Íyœ IÆå¤Gu/>ŸÓœË±:«Øî¡»»iÄ’ˆÅ mÏÍrAÄôí½¿ç2éï<ŽKU\™4Ž¢1>c€ tºBüÖý‰rðÂüÙÉMà±ñCnWn²HŽ…íÜûI4Ø93¶ï‘œd™™YÏ$'Àv¦ªÔXižûÓ^ûר VäÑl¡®]/ÿûÛÖ^ßzÆw¤ã£iãï»U8©·Ùé±’¼•½C' û—ÝGGÞÛyÚË{¯Ú~‰Eºcñ½ª¨ä&ª{éïlV„#’ô³— ?*!úå€bßFF–Ð@)š²ú‡ø~oqEµ?@ ™P'E¿Vã&Qœ¯½R'¡LÿÙG D›©-à ¤!QÀؾư+Ti2a"¯_ŠÝ²Fâý!Ç\”³àŠkRµ7v$8ó¥RkÚ§ƒ&‘‘ ñZTØ÷Q²£² ‘n屌rŒ?JÈ£HnÚBUÇ}oL¼÷'*£IºMjL¤Âhæ‹"'…]•LkûÚùÝ¿`˽[ôß‘MÏOfÓû;Ðr){#éUºeoB6xhB”5·©ÝÏ“b).ßWr Û¬ÎÙÚ6;XLL(ûA*ƾžýO)´.õúÁë %r½€0¥­¶9ΕR˜B3µëMžL0CöˆæÁ6ñµ„ÉWÍ«eÿ$’/µ( ×¥a²íoB‰Ø¿q²msàô˜0=v`æRl÷µZrÙ¬«ˆ´SH˜8EÙ ™Ô`ð¶ðÖ>O— ÐWK÷I¸/ý’KéÖît*å•“dï;:å¸ÁÚë¿ì“Vó.û¾#Û]ÖH:ƒö§êTÏ*/ePÀªœW”c ݇æàL'Ú¾ðözvï¼â;ÒéùÉtZuõ‰,uÄ»: Y¤¼Ø P¨º:ÏmDà*«*PÝvYkï°;ÜQ]³œß§ª®Þ0zYו„BíE]*E‰0®gR$p;9kÈ’¼TVçÄʪßnGщ%_HÄep÷2nÝfR±ßѵޢM'ì…ýcBìã„c±:U'ÜΆ €Ÿ¬Žž¦¢¶¦ÐŽÚð|Ž8¨ït&Ø·ø-¢6ÐòPê´*‡6‘Œ_S¼ë¬×mâ׉(މS¿®X¨ÌsÊ!¯Ÿ«ã¢Ê1щç&/Ý¿ ÒÌ$ê©ƒŽ‰÷û{®ÕI—ËÓ!8êWyçß‘KÏOæÒÝ­Ø`Ôu¶‡=ö&…³žK±Aó®ÆïÖáqÆ–—¬~6D"„2ž;&aB!:öžJŒ ÝÙ;.AB^ålÇD ûg³&LÈnÞÊóè7œ>SÊ¢­àc OÈŒíyPì͸Î9Jvä…hdœ3Y}æêCh[ ×9¡2mêVÏùµ?¢â•8Ýò9÷øßýÉG~žŒXAM÷ÙyÑ7½Ö‹öî¼Ý«Òª¹åk@׺l°#Ýç9hË×I¿]c®ság,ðÎ%¾#‰žŸL¢…@È*¬ Ÿ. ‚ +s‡«!V¨`…À|uPÍ0„¡Ê âÓÂ!Ph)*' ‰U[AµDX„ªºJv –,™ª °TZAíNp„¬Ò £ ;=mø„ K•ª8B$UVÐ[’@f¢q%D=ÿ.¬.,TBW©€¸Cˆ„ý=è+l‘ ZAÆ0"ZÁPq€‚ÂLª€o@²P¹0öƒƒb5 a¿ñþðòO „©Z@xuKö=: HØ k,¡ $P|¢Ê7ŒGȪ\3°ßiÿ è>HàÁÎã( °ùÊEoü¢|G½>Ù±v7sP•GTß8µJž_Ò8µE¥ãÔ @ðàÆ© ªòÞÝ:ÈÕµL-´©7L­Q•g¿Lm¨‘Ö@µ¥RPUÎédG‰ûŠS `&é_ýW®QÉ{z$#ÀRš2„HUvÚ±£”y™ î%½-a–ïÈ[×'óÖƒÚgeÙh¡"Ø€àA … 3ÐB‚ Ì«ZhèµZ¨ \n´P*ÀÜ*£… Phx,Ô@ ,°P) dÄRug[P àii°P7YÂ`¡p€á¾,Ô½ã ,TÁ °¹éÊ å?EV(Óú¦]f°ÐPë›O"¸PRë›v´ðBÑú>ˆ!µ¾Ò 1TÕúæ14h}—hg14i}+™bhÐûÓkÄP¡÷-`†C“Þ7M@!†ÔìFO͈¡ügÒüKÊ4¿uJNuÂç¾ØAGü:dß¹Åwd¯ë£Ùk"Hœ^{m£R7TžEó„:|áÀ£Ò€`Áe9¸ѯäOh` Dk› 4 rAè… S>]ãħ˜œIÎ…®K»¬>#Ñágµf@<´(JÛÅPO¦1­&9‚`åÈæã_}; © ÖVV¹ Sªg“¶]6 ¥0A+’±ICË+šDó{¿¤’pNiµ³¶†àIt«¿Q”t¥ ß(#gí\^1Ø ¾HÁ;Óß1?'Eâ­à‚L"8tÈÉúN’…u"{EoÔF{æ^ æ^/"¾eï1Ý›øç:{©ŠÒu½ •ïÈ`×G3XŸòu¯‚½yùÝ+ÕÕ©­JU üÈŠ*{×>XŒ;¦¯Z8 ¶VeßKÄ€»T5j+‰ñŽ$ÿT-#×Þ¦ˆ&ûOæOìë7ŽüíhÄ“+ƒÂMØò½dw@Z·Q^œä”;Ù”…àg@v¥ð½—îLê)Õ!Þ9™3Ä” A!Ô¥éý—!`êöµ¾Óò ‚miˆß•SkGÛCýÝm €ú @T9öWƒX»æü²¿& :'Ö*gïûZJýŠœ±_ŸÌɰ!!IÈ$ªU¯¥`ðf‡¬¡´äëü' •Ó÷ÉŠHU» DÂÉÔEähÞÌ«ê†Å –m-u©øGYd_*' Ó™¼Ål¬n«F««•ÙÛK%m̪90 ©f#ŠÁÒ5ÍK`Ë6T†©åÒf·µϊº·{4}¡¶¿ð%¤NK ¢-$*"€*Œ. ˆ¢ ¼`),®büRZ¡;ZÝ‹áÒnÿtj!ûcRN Zî7(œ}VíåéåCç#q—ª³Óâ26ë¼ÿ¨z³?従Ûázì8°rßhR_Šý«@®Û ¨ñàÄòþÎÿ ¿øŠqŸ_Ÿ¬¥ü>ÏT˜Sýa(·RÙn¨ô`„ºòâü¨r 0Y¥†“ƒ™õÍVAfqéâyUäa”Û#ÎSIB‡nå\Obú$Êñw³nLeK^"û ÖI}§âɪBºÀCí”Tål‚žò'`¥¾&'‹bð“ÜÆ é{Ê„ôÔ— 8±¨¸ìçuAN—ÈŠb³ulÿ¤+ : Ÿk¿$Û%“©µŽÀºQrÕïwÉNêbPÍÝ8ÖœHÔ\â{Q’%¶#âä—£& åTß“Ÿ`E°âæÜèk \±Ùfšà­K6½ªÚP nª©÷Îw¾"î×G!ÑÝ.¼®7>E±'šàC9ÏU(ë¦9‘ÂÊnÈØ©šMx.FhW5[a1´=œr 1œŒu«±½ï°–Ù_ƺ`KP·ÕN´Ö]5¢-°nб"Ü"G†OáVØDCáVVýš <â-B|Æ@òO1WW;Ÿh‹ò5|ÿˆ¶hfã=жx´Ð^"Øšnf“fÌàÒÍÞŸRÑÖp;{,E[Iíì½ úÂD\S=í&P-íì:Ú*êg£¬hËýlô­m%!Û§P´Õ…l£OÑ–mÝÁVd‹†üã`ÉÛó{¾@ýŠŒ¸_ŸÌˆA€A^Е5yAüÞÛ€¼L?ºcA^†­¨…(e`Ð1C‘ê·(Ö1Ú­PDò>[“òÁ¢v¯¼×Ðî…±`l ãÂ& §¡äBb.@0.×%ðÄÂÊ‚Õ,õ–²— `ÿª2Õ6{t2øSßÑÕTRQ Å|ð)ñ ŠW…4¢CRME£ˆ_~1È·*p¨ª©M€°6R‡h•cgâ*¤®¸rcg –Ê®\„ꨯ<ž+©È²íÃ¥Q*©ðÛk/c¯zc P åWåÃsUQ×%Þl&Û®àA×ýT¿óˆ¯H†ûõi*-@„IC¾œûI¯ŸÝÞ7›^?‚KñKÐ쟴 ý;ÑìgBhüŠ4ûw.q~ã¼bõè÷Ï”@‚g©õÁËá)4¯ ¡?Tž³¾. ñý^|ƽ2/{βMRÚ¸×4&œ+V< ‡(ÚŸ 8)óöš$‚âíSY Rr¸´øÞ˜«°IÇUs?Ê‘‰êúíåEª'¿öà~5Ý™P÷6ô•tÐ{Œ ¯ãÞ€ª´¼îÝiÚË;ö®ýåáŠÞ;›€¯?ÿÜúÞxEûŽÄ<}21ÿëTUBL,‰ˆé^ά´éd`9B=™b¦Õ´Ó ÒHÀÍÀús=If.†÷F šwLψ.þE’šÅ1p[… ÓË‹êø`ÃÖº+˜€ÃXO‘g¹@qî<£¢Ìº •Lyw8,G ¢q îDS¹û܉WdöÀò¸óþ¬?/WªðN@ò̃¡[;áfw½¡ ïTãk» Þ €? V`1¦µrÞ‰S,ŠàxoWB²Š²õÔI€;õ}‡£ŠÜIXD×X€;üÏ_[à;×øŽÜ<}27W«›Ý’¶;¼¾’´V’ 6¡Ðü¿TeM˜K&l×’ha“)YóM ×Ñ0,Yì{L”JÍYŸbªŸ·ÿ„!ƒ:o»?™•^~3ˆ"3ujξýzÄïö„´çÔg´‹BH¨ cGWøÔ9p.9Q§žÄN½z—­‰SÁkDb%iÁNÔÈ“cÝK¹É_ö?éß‘©ç®ÿÚV’hÍ*|M(Ü‚…;àx˜Ú+p‘è2-ÄÍì&PÝjkÂõ0Jš€k^2•`‡iUê[{ «—a¢ô)½õà†EŠ’î¼•i²0“Q$<¢xußàúýÉ¢OHnà‡–ÍEäXÁ‡‡ÓÊ;»:pj÷À7‚6¡dªw*Y 5®›z§K™]BçéõûïÌ~áïkÀ;†ëé3€—<Â]¤ã¨†E²ÎצCt¢½¢"d÷ÀÑ+$ð¦Œ?¤1Š:L€’@ÞP U\@!E]Z7§‰5H„§GAßóùõWþÎi¾#‡Ïí¯ûn5"¡qò•!ûRб¬Ù%=… SŒ: K#ç-–¶mŠf'aáÝ)±äHXx7ÍcôÏK»(%÷HYökH*ôžNYÚe¨T¤,íê–Ý‹”¥ImFÊÂË+d™HY©£Î,/¥-ˆž™*zr–v%·OÎÒ.M”ˆœ%ÿ©týòÉYƶ'câ#gáñ¡Ò‡s–¹í‰Õg8iKÝbW)NY€€Ót”rï0¤‡\nÍHY¸Å)Kß¶¦ŸDʲ/AéDœ ŸÈ ÙV‹¨Kl6ãÙ$«¦Ü½¿¦ýP2@Iø6Fbž0HÛ\o›ëý;ýüÑD?vË–›v˽hÀy4Æn‰­£Ú)÷BÍEÒ³U6 ¯”Ø*‹lyš¶JÞ?Ý´Þ.¹Æ%É&o—¶•ÄvÙ(V“¿k«ÄÿiZ±Uîk€Í˜õoç÷‹G¢š?®¦õ*„Ý¥2‹ÞœBíÔNœ2›5ï"\°SN‰ŽÔiLðê6§*ï¡pzÝjk§þG¸xÕ»BHƒíÊwýpo.Șœê"ÉaŸwíåÇ2Oa: µ([ÒE¥ÇEÍz®KÉsŠ‹~;Š¢pQz_Q0•X×)¦JÔûºÒ (XTawÜñ¯Ú«0ª·@kÿUß­ÙâºQ“{"êÃUÛö)I«•å*±¤vêÎ@Wª§*]¡èŸ»f]KQ˜rƒA¼®·Ý±þ¹iþßÈMÏ¡áÜ´½îÔ$t=RÓýsœQÝ‹Ô4ÂÊ'5Åö#7­Â>Ï£yèÜ´ŠÖRïÜ<4M^ç¦KhqN"9-M%§Uè©K89ͪwr @ÚJ_ÒÉ)8èýÑœîå)é¹®ìt-†à”Ö3øNd—YU:¢ÃÉi>Ì´’SУ”µòIN–ÎÀ‹DrZiÄ¡¬è"ÈÔa˜Éi%õOÍÉiªµ9•Kr,\ù$§U$ë|’S ³´"9P{E0’S·åÎMk¤^þŽ2¾#9-MN…cuŒ©°6’3bÌNMZR¶Ž1Ù¥teç]A½jZ®Š))iÃocY°å¥ró¦}¤Ì‚'ļp4 t¨’µ”mVHz|Ù$„îP) rxÓÐ7±µ€™sD:Èè›àGø’¨Å‘$šÐº¦:³; •ª¨{;‚,hibF§Ê"O]ÛÁÔM¹ü‘ì„)›9ÁlÁ‰‚Œ´~Â0 œ4ñ!(¹`Ë䕎ª&èk¸uÊw¦Xóì¥ÏŒ™yâ½p•Ù n=¹ý·&Vé&E@¶ƒ«8*›ÚÀÙHz°X©ÆDž=ß–uÆwd¨åóð¢bã’X•€B 0]Ìž“,£F×Lž3 PÙÏIª6Jö<\‡J#›ìñÄÓ®SJ ßAB-§( K4-[gßÿ”uÌ…ëd"797®3UsdbÛqàR"rÉuºðRådˆá;Y4·—êúZ"º 7¥•¾C©Q+á;ÔsÉ·ï›üfß)ÂMÝCmäʆ&¼D؅Ε™FDÖU߉“ß 2Ñ¡Á…Uq(÷VöC‹x÷tQÝE$ÐÒP©‹áÛÔæúA£1uÄZT¶…ZêêŠÌËâø¨+…—^+Hê%ùÎZ±h†¢¶€îUÖ$šäveµYê~aNãÖ9;·wÒ2¤!Bh—^‡6×0URr¨™srY×>?R•Õ<”h'‹qAÀJã Ý‹a" òÇ´ÆJ %ëý€Ð«FÍQWdÙ'÷Á†z„Ó"©¸7€ÿRË$9ßÉÍÇJm4»¢Lÿ±Z!™ r?,eIõ#]ŸîšãCG²k$ºŠ)¹^«\g¾‹52Ê[øëøŽô¾|2½ÿûX¦ÔÎw#6’£©°¨ØœV+úýŒÿB®˜¤Ø{I¬WµRvA‹ÀôaÂHA_‘ÜT|^)ØïÿfêŒ2U¾A$‰\؈*]“Z–“#˜GËü8PlT¼ü$¥DdSŠÏ ñxšèw§ñ¥i5„€ì®S&[rg+íf ‰’Z£I-å¾"T¡âÇ‹ž_$a¹%¤íÍ•ù‰ýi>ב¹ÝbKAuMÍa°0ÔŠõiÙ#@»\ÜGjbäòÃè(P@0D6owur}É$"R•ÚÃtÑ –âåB…‹`Ý ó~úVóø7¨ññ€òÑ À ^ØŠ®—Ôã’ GRûqAL£ž,_>Y˜#Ò ?;}æˆ8g ú;…9Ò/>ÌCÁ?ÞéÕ5ÉIïxJ: ì9få°Ò- B^UC,•Øq4¢‡ãÁ ®žb|•Àí”ùËáô3jv¤z½F—-I@j(ĸ °%n!"¤¡5[èwuÿPÐâ·o’ÝØßêO©®Í“Hé±K“H×D[ e¼íïhî'!„ðõ\øyñEÝÆj`•4]³ìDŒär‘ɰY—ª"ÝRP×™²"q“*d@N¢Þ7C¥õš€|Ф.x ÝöW¨þÆuæwÔêÇuÂÁì9q€ªöò:r@«Ž×‰\•»sâ ó«õ'N©!ÖGÐÿ|zÔÕ#yÿ—9î#â“´>r`>IŽÌGŽ˜OaräÀ}Ú}è”6b{ö¡ýiòûà­ê߇NËð>t¤ò»Ö}è€WÍ=߇€Ué]êÐIB¬"žt «ÖGú9*õ-߇ŽJõ:Ù}èÅÁë>t(Ö·ÜîC‡j}Ó9çC‡r=óÏ©C½¾àeœ<í›r'Ÿ:eåûœ:(Hc?§Ä'ŸýÿåSg~GQ ~v{vúÓX¯3ps5ÅBm²Qòl^ sš2¯é)X;Rn¬=ˆ„»šlÕ™È;Š¿N~Î…vTµÐQ& bg)WW‘9ÔvtН­ÊÖ:¥Ü:¶­atY°;< »ÃðiñP»¢êoµXäôcC¢ZS3°‹n ð¸ýby× ;'Û{«ßvìÙ)zûªàV÷ @cuý4¥h߈RbŒ]vg¼)<ÿ†€ÿx›ŽÏïHÇëG{ÆÝ.ÇJeÛl(ýŽ•Z è¥b%ÛôÁN¬Ôà÷ÏM»h+¸¸C¥&ºl… •Šþ–„cr°Ô²¹Ò'Xj9æ>E°DÛZCÛ"X¢m­ ‚¥&èm‹`©ªM}ïø,µIU¥K-Õ`ÅJK]j%ZЕܥÎɱ«HDé*eu©™S¨Pi‘R"H2 %_ÕÅ­–²W¤”…JQa[‘R*Åšg² ¢´¦›l.J‰@© €âPƒ§ ÒÆknâF¡H*%P(Ê„(¡P4:ñ¯nÀ;¿ùŽÔ¼~V½ìw%C£`$²)¼TɆG7£j÷*d&î©‚`kþ*\¹ä‰‰´A;!@©øzÌÒOÏ„“ÞEGx;ÍÐycâ¦OäóFUÖæãfj~–ã4qõZqÞxœS.#Î 5¤31G絇5T\çM‘XÃ%=BÎi5\Ò#ôq£µ—è¸É1—hÞÇœ/Çi3¤6|¥×hGNIç§M—BÃã°ñ¦ã³ÝÓyz®ÃÆãˆïÓY3DmIì>k¤ÂvÍsÖHž¡§ÇYÓ,2œã¨ñÈZZç™ï\æ;ÒòúÉ´<«%²¥@†avM O$€N¶Æ…ÃQ•F¢R®îÊÔØÀK:zµ”P]½¿(CѪf‚™Kf®Æ­}@чbìÔ”À¶ªû‹";Þ:ƒ&M¥ŒÓ €!ÞÁè~…hËCŸÅ˜“JÂPƒO“MvºjBådõ’î#FC‹‚ˆ¨À6(BÊúŠ‘ÞS¥ B™"í5¥¢†ÝH®Ó%ü¶KhP˜ú„z‹:€ó4kn-¡š>‚IèEƒ{âŠÙ2Í9© e"ÕÝÿ“Ôèô˜$„²ê¼]ý?É0'TµÔþkaj®k/žŽ“%+M Ez´D4ã’¹z,ÄU1©l&|Íe­O Ò&¤ŠÉ¼Þ“Öw$áí£Ixø q6Ã6ì3Ev×ê²ÏhW1ðì3À¿ÕD“Ï8ðfîÜñ"m¦ÌÙgº"í)qø 6äœð™vY±Ê>Sì–×U°†/ÇððP7û¸}¦ZþöÜzz4`rŸ=Éàp 6HÙe ³.ûZ9\Æ(›>Óí2U“oËX‚t¦qû‹P6ý\R>ScZÃñP65ß.䎬/\ŒMMóv wSwÌ$I06¥—ã4hÎð0<ˆ HU_ÿÒqÄŽ<¼ˆÍµÊí5 ìþæìúŽ"@û|Oþu0«€a•Z›šô“ᮚ!³\ÎCjijÚk.!Ãt¿höÉ԰ܬúÓP&RN@D ý?Ò͆‚Áéˆ;ý¥™øV¿¨HD~¬aZÿbí ÝÔûGG™0^S†å­³éK2¸‚_¬»u€-ÉBhP|Ò=âexÞ–¸ÖÓãO$%]<ìŠd¥p’È5œ K>nÞT0’jDƒãI°Þ¦œDCL‹‹†ä"WØ’RâAóU5”Z6q,¹Õ µhÚöxAú²P\!ËÜ8Ôâð-p 1ý̨‚eµ”š™ÏY®÷^ó%€öùÀëhÆ–in&ì‘ÛØY¿UËA?µ,άØIŠUóº–æ  ¹ ö@s„ܧÆr¢Ê FÅ¥Q$Ø0Ó‘ncæ¨dû4PŠ ¦·oñ{iîêm…ãŒc®K¾M+¨ ±—*lqEoi@~lŠuÌÃz±L·½$6‹\s‘árdT˶]a_1ãLChê[¤üº$¾Mß"Å% Ï!¿Kþ“è[:Í—äHŒçÃ&×ì Ž—kjÒºéWØê®g1üÎ5ðKGþˆÊãXtí!àÊz͸‘€\¦ˆ`udv1 Ò|Ûe\ßQ h­üu<‡çÿ®€Äžþ]µ²ð¯èÅÏ©*ƒŽÛs@»–kÜžڵߋʞâUS Ãs€ÖäúòAk8 Âs„­I·ã­¹Æ<޲Œîq5mœ9öœz¶‡ðœª9ê/ÏZ“˼=§ZŸåöœªC¹ÝžØ}Æ2®MBÕ«ÿö6)¿<nI˜bôeõlnÇ©â§Ûq*È´:_Ž£BûÃq@!PÛq*e¼‡Ê„v¤pØ›óé85v¨ÿªçŒë;jý£5Eb;{ lZ9B±°‰•Š5Ùô׊Á+¥þtbMsMú„5‰ŠÖ„5§Ja~ú=²61þ–ëˆ@¬Ë¾ÒN Æç¹–rÖe7öîˆÁ°)3;£ º|\(+²ï¡ ‡ñ·,`§ã°FÑ ÇQÖe«²qXøwF Æ{± N †]“¹.Ý ®_çk*ãOUwÂqX¡K(y“]õ–ŽÃZ­. F$Ö$Ùî(¬iþw»£°¦@;œW‘˜;¾#—Ša¦ôÞ1¾#ñïŸÚõënzb­ðÆyÊppÄ sY´Û†ØŠÍ¾Ù4Ü·©‹f;Mnä;°Ýôœj|hÊ.½3V÷ÁÚ¢Ù»:Û˜c«ÅÇ]ŸÜ–ÇNºFÕX"õ¶YùŒ3 @IBBH«45fmÉŠ°svW6˜¸RêþÄ+á…q-Ô"tK²:>´fËÕ…VÏ‘//•£¤ºE¨@&3ðÜ…ºx¨‘[¥ï+^‚cÓˆ­D´ÒŸW–³;5ØÛ6ôš®5Y ‰š8MW€ô “µµÐtUeLþ¬®kš§î0Å–”ÀpMtu÷Z—ª'¿ë?ï¼æ;ÿþÑÄÿ™îÙg,¥VHÇgvp’„ϨÔÂA>£êQ¸|fÒ(í*ùŒ!(xŸÉó1~ùŒ ì¤Lá3Yjåö)n±­†Ïh¬µ¼À>“EÅè·ÏÒØo§¢1ŒrœdTã+¼&4K) „×ppÖkÜ^“5ª¾Ý^£~ˆüB^C³å¢ô&¯I:ºÓ®CH°ùìÎ}%òš,é“pš!¥Ò¬ÁWvf¦" §©Ò*UáË>óh¥~ûLfnÖ ÑÂgòð¨Tû BFÅÆ?ú ï|æ;ÒþþÑ´x$Lk"Àÿ¶‰ª¶Z™[M§MÐõ°ÕPxØ%ÐÅÏ¿)#zØÌT}ÙE‚¤O›‘9OîÓγÿ²¯2þº&sY™ÚÝ6DÊ—Í µ~Ù-ý¶ÓóŠÝ¿® õØÕ"ÜO›ñÄO‘‚—=½°¶rÛÒûuMX_ÏÏ¥Áοíëù5ˆüê;=Þq}G¦ß?šéëv¹VjØì…åaãÏÇEX}ØËIó±…fz<Žtsé?¿® Èj>®Ñ‡rŠ—½„»m†UÎÇ5\ÏÇ»T®_6Ê‹å÷5Ë•Ç÷`lÉêTzØ:%ödÐË–®êãýÀÐ\}OÚ>íñ¹ác_kÒI*ë¶©ƒ)‰¹mkX¼lº»ÏçƦÿº&u°µ^Ÿ“:ØšõaSšÉ~NzØ o~ç=é;²ýñÑl?îà±–óöÔÂm«ßV6 žv FnÛ¨óÛÎ×k<æý7ñxÙMÑ^öP3çe³)¿Ìbáì—]ÌʼmÂÁñû’`Šëã9Ì x80ÅŽõ¸"dƒö|úÎÆÖúW¯›séñäVU•ÿu}8%G8Z“·­ªûã=::ÄÄ”Ç&ýû±‡Áþ^×_—4Võa×=ß‘ÖÒc;€ü½ÊÛ-}G1`|´ Û•5Ô·´—Ù¤caSز«•—9Ý S¿×£Kdà—Y\!;f“¤ÒëÚlÙ•Ï Øûz=زZÒÃε\_$áÛŽ’ìm?*÷ßÖãL¬Æ–=Þ" ½ø°«¸f/Ûó6_ö”àám£èuÚš÷ߤ ü°‹4*^v“ËË.nÜö’”ým3M.§‡]þ:b«µ ÝöÚóe››vÛ¨}ç3ßQ -üؾìêüþaçGøO^œž±µ é¿l5Ôn;©‡óû’—Ùáàüm‹öÿÚ)Ã4¶çö<íÔfå¹ïR…k¥=lâÏç%®ÁÄõò|<šõ·½ >öDÚè¯k?£K†&>¿6è›× ÖMm;ÿ:yà»´GQ^PŸÏKvi+ÌúØÊÌFzØ;wÏ”¶ý*”÷ïäï¨Ìÿ Á9¨_v×*xÙMòw/›<óùx1å¶‘`x¾Ó~ÿÄMšÇ{ mò6¨ͧ@˜Û¦àý´‹»±·M=®ÿuÍßÛ<Ú„é‘rƒ’~ìР¤k}”©˜ðÙe)åq²” f¿CE`ÒãÛ“~>“~”ß,Fø(…ÍçÓ…‘†}ý²™ñû´)ý¬–¢ôeï}åY}œ÷¨l‚”¶nÜî<ßQ&˜Ÿ/¼n×˦hû0/£cŽÍþ¬—öñhGt 5Îõ´ë?"( k­>ß<ûã5m©÷²0݇Ý~E\•ÆÏc þóךôqIº$" 2Pó¹¨(¯=,|~ÙIúÝ·ÍÜöúÛYQšÏY4uõaW©ø½lt3פ­û¨†!õ¬"Õê_ÞJ‹ø‘Ø!Ð<ÒãÆÒŒ}Ö­Sÿ¾.¿£V0?Y+ 0.jIǸÈîu3-É^¥3mþ0±0ßÌ´.»J«fZ“=4G×´Ú fZLH(‚J¥ ¦uÙ­§››† ÚäpÓ‰¥ÿpӊȈ=¸iMv뇛f{€*~pÓð¯ý=ÌM+²5A2¸iØu5­Êdˆƒ¹iCö‚Y&n¶ÇR™›Ve‹SÖq¾%DÕÜ´${´§”¾ÁÉo84ÆÔ´${ÿÆÁM³Ý lj›æç#9hnÖSí&§‘Á\â«AN«²1Õì"Œ;ì´"»Š­Ö„I}ç7ßQ'˜Ÿ¬¿9è¤ã7f§ÕÛoÌN˷ߘÖn¿1;­Ü~cvZ»ýÆì´üËoLO+·ß˜ŸnÓƒžVn·1=mÜnczÚí5f§½¼Fì´HŸ×Šš½¦=ÍnQ¥ú\Ä:8nc~Úí5¦§ÝNsØiá4&§õÛaLN+·á4f§õÛmÄNKóvÓÓr¸Íá§ÛmÌO«·Û˜Ÿ–nÇ9µ§ç˜¤–oÏAmÌÛsÌPK·çÿn´ÉÈßQ#˜­0š}yR"0bÆÜ´u‹ä[;`yÂSh Fœk>Úšƒv”ØüA8‡r@ѨÃ_Êhƒq”rÀþÙPKÉG8‹WO=Yã-t°; zéðZ³§nö®@S›“S¦„j@Š‹w‘â$ðÃ@6ùŽföJ=4ø¢Ó“¥0dk˜Vt™à¦ÔšêÿÞb"íÃÍaXÜK¿ã°CGs –n:Ú ÄLGkw f:šLÅaåf£8Ìl´yÇaf£¥;3mÞq˜ÙhýŽÃÀ½t–ŽÃÍ×tfRZ¾ã0Òʈ™6î@Ì„´ˆ ¤;;Œ4bÓŒ´häž@Ì´´;3#­F Œ´|Ça‡‘æ8,#íÃLHˆ… è(‚• ¤ZƒÃ°&BZ‰0¬!íŸw^óiþúdšÿw=ckj¸ªÂ$^kjtÙ+M ž-ÿ¥©Í|ÌÔÀ,f ©žR5ÝÌ’Ã/iL¾To?ËFåÅ’2ÑŸ?Š؈ÏZQ£Ë^<’|RÂò‡¤†>LÏ0Fî=fó¿SÞ)Z 1Æìš‰Åãç䚉ó1ÆO™òÎT4ÆO‰o²ò³Jä¼ûÜÓ¿®Ä,;‡6“³ý°§øÌŠ(§C§+“*Ô4Ư:“š5ÆøegJˆjŒŸ³"Õ4Ư*«aøóãGÊRW9~qI7-Æø5å-Ÿ1~†[ §å1~CmáFcGcü `Só?C!ZïÙdT¢m„‚S `ðñÞ5…ÖÓüÜ3¥·¤A~#ŽP¿‹p®_Q Ø{ö}ål-žã÷Ã$¹KbbUÃz° =mÍñk²5NsüdjxoÐÞuÒ'‹<Ä.ÈxiŽ_ì÷»;«N„°AÇxŽ—hêíxŽ_•MA‚¬§7w,Î5d÷Üc’_‘­)È”Î~Ÿ„†i~<§»ËÎö:†lÍúÖ(¿*»*rêõŠÝø4Êϯïzþ¼d!låA~Y6šµ`gâò°”gŒñ+¶ÑBÓ¿,;!§¦1~C6§®N‰¹d£yª1~ÓâYæøi{9~÷%kŽ$§TÛ-ÆøÙê‘&µöŠqJï}æ+Jãú|)àÞa”nh^hGÊUó7š¦)1¬ª<Œ¿hž¯ù¤Ì7Ng¾qûþÍÎx(å0A™mL Ýë&м%+ªÄ€ Bý©^°¡Ðž1I!iKÍ­‘¿Ÿºõ¾d—ÔEŒØˆ®^çUbÌÆÞŠÁ…2C#6ö×ê*dň}MŠÖÌ´ÐŒ gZ‰¼^*ê1cƒç•5c#EF³ÿ¶bÌŸjzR­FlðŽäxÉ#6È¡¨ysAü¡°¡©!û‡ÈÑ” *Û^ >Ñ”êSOïªmêP&?£6/aþBñ˜ ŽÝÑ}ìŠw°3ž1$ä9o[™í;Šé£Å€X·DÖbÝÆ²Ë6Dz覂 ²ËvÄ$²Xµ)‘X±)‘E-@«¶™Ü‰çhÕ–D–cÕZoM¹¬Ú3ˆÌ«¶Ä ²äU«ÁcËy{ʯ‘EP¤u[b™—mZ1‡,ßËÖsÈZ,ÛƒÈβí1ˆ¬Å²9d#–mAdù±lgL#K±lsL"+±lcÙ¸Wí¿D6Úwdâé#÷ü©™xðPç·2ñ)ÆG%hR&ž…DLD0ÊħP‡”I‰›òAÄ™x ±Dñþdâ ¯Y"ß&£³"o"î¸éÎÃA""ºä<< Ѝ 4òp@RäáE0Ä5ORì<(b›'ßfV`¨,|ˆè”ÙYxGjdáÊŸª68 ¯£KxÂYxqéý$ï¶ý€~Q|²ð"¢êTå–8£NÂ) N×”…7©Ê,ŽÃ9²ðfŽueáC…Ä£ßyòðªù?)òpËóVeúÙšéEËïüæ;òðôÑ<ü¯Ã›É¡vüƒH‘ iÖ1û"7}hÖ±y“žcŠYÇY6ÚÊšuLú °Ä¨ãØyÑ4šV¡ôe–@‘íÝþ²½Æv¼êV׈aÇØÍ’óvÌ%Ùýk ;N²§0b ;Ž”òÜÃŽy-¹˜uœe¢M¨QÇ{ëQΨã}~HÌ#@dMæ”F““¼åœIÇûwb“’Dj‹¶üò¨c2+€mšuÌvUo™rjÀÎ 5ëx›M•g:Þxÿ:š|uÜd÷ÐÌ¡ëQ`.ðšæ± Ø“:a 0‰Œ:ÿ¨e¾sœïHÊÓÿFR~ê}'+÷¨ãtgåuÜÇ•»§<ï´Ü³ŽÛ–{Öñ•{Ôql„NÊ=é¸ÝI¹'¿’rO:Î')÷¤ãt'åžtüJÊ5é˜:q$åžt|ö^'åžtüJÊ5é8¿’r:nwRîQÇwNîIÇíÎÉ=éxÜY¹'Gy[™yò¨ãºîÄÜ£Žï¼Ü“Žû—{Òq¹órO:.w^®IÇeÞy¹'·¸¤ssO:.wbîIÇýNÌ=éøÎÌ5踎ÿNfÞ¾#3OÍÌÿ l}â´ÛâÈi12vÄ‘¢(:|äxdló‘åD3cÇ9r<2¶<Žœ#cK99FÆŽ8rJˆ—ûÈñÈØr9Ûï#Ç#cK9-Fƶ_GŽFÆ’øj0䊙±ÃgN;3cãÌ)12Ö‡ y²gÆžC§ÇÌØ8sbflÌ(ð¹“cplŠ3gxhl;gÎ09›ƒWgÎŒ©±%ΜSck:&f3+͇NñØØ+Š:xjŒŽ3§ÇÔØ8rR Íqäô›ÿ´¿ñœþ™yþdfN½öP#«$ÊÞ‰«Ê¨Ú^£Co™,TLc¢qUÝeÒ ‚š8±:ÁÄR9‚xÚTPÇ9sÆ¥Z„1ËFïXuT¶Êëp!•b²%/•QÉšFr†ÄÙ™CÕèŠn3=´‘£Tu/–ì&G æ>š¤2‰pd/  p[ØÏG¹'¯,]c—i-E hl™Éç|…"ÔtY® `OÚŒ0Ðb:[šcfÞ`b˜HËÑ=À0pÙî.+32p]úÿ}pét¹üÍíÔ¬·­¦äPF&Æ™U¸òµ÷ߦϷ½óÉVØÀñWºí8çÛ.cÿŽª@þdUÀGóPõ}w@myžÖRL$%LU'Eö|y6+Ô¿½xØÏ/Wù-p‚e½Ø#8 °ÝåŒF*Sulj¾E‚›Bf \á é•)¤²ø£1ŽÊ×åüŠ"²º;%W~EJÂ]±äºšù¢Î¯X™º¤vƒ.–Îä-™g—Ü»óäbéPéªVÒ”èçÚéU•úY–è§Z;eªpBzuI(îËKª<:Œüm•®ôŠÑÈ´…&€Ê|Ëê,0 ¢BÃËÒü„t‰8@e2éþrZãFÉT(Ö'o wù£I!iM·ê"…+Cƒæ%?МtI¦»ÅP_M4áLÕóÈ·\üÏýæ;ªù“Uã7D®ãà7F©*âµÛ(ú`—Û$EŒD9~CäA^Á¼ÈõΚq¦¾bg­»Îr‚3Ô–)³Ÿà¬_R”¹Ã3JÊa+D»ZÓ+Fë¯÷SŒÖ]ñô5#P㞯WŒÆíèé£Uûþ=FûŽz@þh=€Å¹·nÖ†hIh#î¡áQ×,F3Ö«h!ü çÍÍMu›SqAQ,À”­b>FÚ¿üLæ¯CµH’8œ)p¾¹$Sëšg±Î³@Í 0¸²™,$±#2t”Wý\Yïëß~°’TÎ)Á1µyy°žûŽW•´°®€øÞZ% РèA÷IxwÆId€e-z¬ÌòX&"ü^ÛÌ×Ed6W—Þ‡0eê©»‚»í*rõO¥$Ðÿ½H4¦€;ÊwH"hŠ¡z£}/w)¨Ãö1…1SåXäAÌ8ipƒ}ˆ _6Õü¬€ô/SË¿±¡ _–NqZE $ŒÙoÉÇwdþ壙ÿ_1X.i¢LKŒ"ÎuI¢äÕ¼-$‹ ½‰O¯ÎRC@ÅH’i9ScenKsã­9l·õ˜ ¬#fIŽÁ_ôÃ\ì•¡Úò¶5¬²#üÃ"«â¾ßÔ@3&«PsæÞ#é`óyéüsIá‘Õ÷[«È”ö⇓È ÷‚ÊZ­Ö:ãô$X"ŸŸžbºÌ((z=bÁ(¨qÍïͬ‚ j«³%xP'àõ)¹æ”d«âÂñÆ 2zª×ºFû 1Ôϸ-ð'’ÄÏ`qcvý¼~NüˆðŠ•CNüŠ)•ÞùÌwäþ壹ÿ_)Ÿ}f§ÒÂT~ä3]B )ÏÛg$Ô@Ê Ÿ±HC‘-Ÿ¡Å¦¶sø íµ@€·ñà‡zœÆ 6û ª=K(âøLÆHíå3C\T`ÏÀ 2|®@>„ðø…€)|&+ò™.aµ®€Ô.ƒ°šª á2Y’·Ç «¦j‰<¦[W-h¾ÇkÐVÓ§ ‘Ö4%“ìƒe!„ã1誵Û_P™î׸ý%k¾A9þ"‘öX+4mŽÏ ~sn ŸAÍ&…­°˜¼9ý#&ç4ß‘ø—ÏÃ^ç²ËŽKØo!R ËUÍ`3I£ø¦:-Æ‚FKge"Ùi—×O‚*¦,\w“Q­9ù’™›êœ¬ô$’:á Y Ó¦cÊ=X-šù˰šƒph©ôû'UIÔ×`ˆl¢×ñpþÂS˜«>Å•„ÔTàQѨ DY@Í&ÒŽòÔdeý¨Ù‚3“€šœÒ©ÅôÇÕ*F» \%`¹jàˆûwa ˆ“@¯"è±C\¦Ç›&e VÃÇïÃÀ”,z‹T0œ¬­EâÐéÐY*O D3u†’<ÛÑ×0Bº D3¶êïÒé;ÇùŽÜ¿|4÷×®¢R@~tP“H7YÇŽ8‹q3ÍÛfüâtWüÞî/uÑ<Öpš{‰Gáüæüíb¯ç÷.î/ÂÙ<¿w3—æþ½›:5ù%¿w¿÷wd­å“Y+e´JlòšXn"ž`þê šØçc*­¹ï45¾CJ»h©×eY9¢ @Tõ”…(ZAÍP‘æRsN×TC·ˆ¹A ¹äà“‘ @»(°žU@mñhïVŽó}貪?Ñ-¤4™¬Ã‘<. Båàý8˜ù˜àâù”Ô¨‚öwHÖ‘‚!¤½ñ4É´O‘8àq©vJQ’íþ‡Êj%Ká0Øy*Õ×Ä›gÊŽ2g6£ãŠÎ=õÚ £I”Á©—.ëòæ&{ï?êG‚š¥þ+šEˆŠIDœº+«|MÙ4€Ä~½°™¹°Ô,×¹ætá•tw'Ô 3?eÒ’=n^&LR¶mé½ëm.;¿#—­Ÿíb «Â43Ük7a‚ ù8¸×î69¡„S,±d(ä(àdÆYs*|9iš³XýĬ Žp°º¥Ôn¬šÔ3X¥1.MeNØAšàž±²@J‹Óõ=˜*vr\Sb‘Ââ-§ N©*C.dà††Õ¿/½ç’†w§jòcV†ÌÃûÛ¾#!H A°d'ÈÓ BU¢DÑjœ*¹*?ÖB‹|¹A—üdžõn•~GöX?™=þíÔš`À*•ÝöÆZU|®¢6*¶*Lbãé–Þ{koß–èMˆíÝŸÆØw˜6ðr€æfÙêàÚ ¹€àÞæyHbK˜òª&0 2 àôbxX`r^l‰(âí¥ÏÓˆ]­ú1²l5fV‡ÖTS dUú WS–Ý=Å”²¹ÂÊêƒFô4m¨šS \2iÇcçÿQ¹îfR)Þ §@É1ÆjüD’F z˜Ò©f*ëâ¦Ð®ªsêbÞ´‹Vv“MŽIÕ”VvËMQ• ›z=ùy;_v XrêëI^`JÆ¾Èæ=9kÓÛbËü޼±~4o\!{u‰¸‰^1\`³ uI¹Šë@%¼‡í2×d$)B0sA,ç¢9°ž[Ub®ëEC¨ D¨éølêÈÓ6jm©¸*­ùèF¿Â‹=<ŽÔÊ´ˆÒT).%¶"Ñf*©]¤æzØ9M‘šiBs³3å·µ9¹4†J*ªk)ôj‰3¸ªÄ¶7õ¬a¾1_N e´r‡ÓÚ‡CÕ/§¶B?iäÁTj«+€ˆà¶C¾jo\{ϱ» ÝB;V”ÚÎc(µk¯1 ™=¸p¶ ƒuYK* Èᮀ­ 6¼$Ô)=ÜyS* ,kâ ‡DQ`IWŸRO2ìQ˜šch$ÔR!9†•„ÊEs ‘©v=À¤Éräª 4'E®ªó‰8™¹*d'³"‡¦øsûGäñÎo¾£"Ð>Ê0WÌÝþ°î'bõ¦?tk=¤fïwP×—êçø£AÖN¤mË %˽0Y`’Û#¾o$ ‚Y îLD€½™‡šU@ 4È×H†¥?šæW„Â÷Ê …½žˆ5„öÒ6=„‘Ì{oç ¡@ †XÑÖ*78‡¶pÕ`7ñÛ_|6a9„rkØJÅjû^€‹¢VF¹`Ljà¢À«Ó/D}­-ôIˆu†pQ )¡;%^ÅÝ l‚ï ;Ô$T]ÆWÀ«èSú[Œ¡Hú²Üö‚ð„‹ºæ;É#U’)júµ€I5óaó´òÖuS¨~§±ï\â;²þöɬõ 4ƒ@fŸþÒ{jR«¥ã€¸†©F÷-ÆÄš£ì…@éª$e(º TFó:)'?QXvü‘T”›ðœ;¡–½„öAŠdÈ-Ñ{Ù²¡ í§JGˆR]ܪ­^‚=…HMâÐùŠÅ¤×ê ìR>©Ž7ªM0 bnïè1јö܉K•>Wñ|iêi|'Ô¢õ «ŠË’§ŽaušUйm:Ú]Ë,–*ì2™&A\§ü¨Š¬¨ïhYð·9âǧÀO‹¶59ö¬Š,Á2~áJYg[aƒÕH†Õ¾óœïÈúÛ'³þã9$¼|4<‡”wÿú·çò*ß ÏÉ·½<‡”\†=§y$ŒV='G õå9]9ïö(Ù3ÄIm?¾CÎKAêøŽG3|g*çÍz½}‡œ7×ÛuÈwÏÜã:伜QÇu4Ù~×!…K$Ñá:¤p)\)ëñ!ÂêqR¸ýS†ë ¥pW}ºNVÇÔ“ã:žëØn×Ñœû>n×´tÂu.Éæ¾|ç2Õ÷ö.ʹføÎeàÛw.óÄ^¾s‰öòìÌÿ¿á;ß‘ù·K»!Ë?¬£,r‘B£ÀZ'Ì%­ò*ýϦž­Â)d£EH¯ÚÙ-^#y4$fvè–å ÄPéZ€¸Õ#~Ö„w"ª=pÓ“˜Poà¯+BÄjѨÚÿôîa‡€ôöçV.bù§<ˆU ,MÔ8ÁMAzß± „Ž킸‘7Fþ'%ÂFzÄLÔç`FÁ<ßË ŸP3iWV̈ èJâÂkÖjVD—° ]+8ß;|C1èèVIì´=V½íªžÞ‹xµcL  fÇ`ôj»%ˆ ›——Áeh¹%‹££‚çø‰ö:dϳ”5’M{×XŸ×w$öý“‰}s…XTéJ§ –¨Ð]|Tc‘’Z˜u“l¿™ÎƒìÔŸ´1HCº ÆÍ 0C«QËÚ6ÕȤ¾”—wKè®ôQÐ!a7V@˜¬¡L“à‡ù윬Q=N­aºÉyÁÊKS;¤/YÔq5‰ZG_ÕÑ'‘‡ÎkšKN”ö€Mi—ÌdêèdÔgÓ¼„Kÿbß­²ïHƒûGaÕŠÕ“”3s¶Š@]nc1ŒYJ³¦=ÕXŠ"ÝÌë°µ$œ¹×å"êåàIɦAwPó!Gã?À†ƒAd/ýÞÔô‚‚“\¡`E!K”àJ›±45°vDDÚÄäÂVtãMa”EQ¥ÖQU$“ú*<>')·°U—´5@lN5T¨Þ€×”è J”Ÿ,TøãѵME2–1 öEd6Ùa’h•Ìf{õK:]8¤rÜ.™Ó#¢¾IK253Ðz´D Pš 8Á¥ÁMÛ>¦î‡Ú±p¡ºaSé,òùDzƒ{[ÝÒàCA¥`~IZE3ƦŸ¼d7ç;@ɼ¾#WTÿ:ËœukK=˜íSu‘B;œ øÞ©W±½èG°ŠX{L[•šH¢7ަYÑPY1.³ÇÂÒo;hcÀØô²¯(ofãÄ«n<'ÕE²¥iW›=Æx(zΣzÎl£vZT‹QDºQÌPbvj‚óEe¾¤Z¾4£F\f1Ê’¢AYk@ì "YÙýþab2×Ô@å# œ:ÄÕȨÖq£ŽË2;‘5¡LbBbŽ?)ªÁ dW§R=5mÞt—¢Î€²Ó;ïW öUQ ½ÿ‚¡ ï Ž½€‡º´çÌÛê¦÷ EsXØß;ç;‡ù޹4Eþk¡´y Ê×t쪊öÒT<Ÿx™ò¯îšóë4鮹Oû—®Ç7Gº4³4†•€h¹±$> “—É7¹YYEù¤€è²!J†¼eö8h”6X#‚o÷ˆK¿PZ—ÔÆê ÒÛ`†û Òr²JŸƒ4&Ü^ù*H#é¦Nî,‚´Ì*æ[G†´aVD6]hàï§ÖQZÖdµyGi¬†ŠÒ¦ðÊ™#JZGQš¥7&5³Ò€ÌÒ"@+‚Œ_3‚´¬Œ?;H3B@°ÜˆÑ$wœM1Ú: ëþ.—¼sïÈûGÁé"¤/m¿k8ªJD¸G†G…yô·ìKÓåÅ裊µ“,¸âNS7ÔJ£âè‡Îk :2Ütx8q¡ÆËxxáPƒ zûåšû \±ùþ.€›/Ý3‰^m¾lð5´ÊØ~ç )AÀpi¦ÆE…Âð+,«õø´ÿŠººâV•»’E¤á½`‹Ž[UãKHÜz-7÷9ÿÚ¶îi‹Ã1"0xã3é;²çñYÙsæ K§^(Á@æ"êJÚfLL+ù³_B NV£P0 ™Yë4ŒO‰Çà9Œ YÂ’Ÿj\7²"¦ßîw—t犕±Ì4­›%ƦkW:VJiÁZ‡´šÎGéÉ0éÏ«tÌö7£rÜû¥B•cÍ|Xwå91 ÖºrŒ…Ôn]9n’%tåXA;¡HŽ üιnLàO¤ºqQà_NÙ8ýÑàó~—•þDѸóOZ¿Q3–ÜKŽrñüÓͿե£b܇ºÁ§`ܧÐF§^,qr±0–’TµX KE†Íè^xû]'dy—‰ÁžJF³FÉàÕ¨bZ}ô(‹;¼¢J¼4Ç4å»L0ê:ÔÔãé¨.ÿÑ$Í~Ã@DzÁ@ªz7 `TDeÆ U¢Çô‡âú¢†@!·f`À@ˆU[ ’oÿJ7¤ºyh2°¢_骞xËŸfaò•Ðg‚¢î(R¹;¬ÁV¨™¤˜keˆJ AíÔìKR ¢H=º¸¿·¿w>ñ©ûü|þÞAN{¸é“N^Ê=Wº–D" ²õtçY*åÕœGß\ê¬îÍÃ(Ô“§ª`ÐÓO£Qyé\.ƼX-úòjT¦Ó•$ÂUz)4å;‰°H)§'pF;¾«EY‘wV;¾( Þg¯/®–¼û”I%å,N!}JIòœ¦<”d(5åÝ£Ä/ï¦<(½=y×ÈÅ»< yªL‡‚¬®üTœa—îʵ)«ÊÁÑ•‡%ÕMTlªWÑÐhÎr)¯¦¼ ¸õÕç˜rîÝ”gR ðE5å—hÊk­hšuÕÉß#¦òw$òó£‰üï»å£›ºÊëÕatC°ÊÝa¤á¥¤™ð¹åV‡1›Ñ½ÆÝb£{½øt”;Åè–‚{Œ4äâcɲãî1ÒQÐ’Šú›: ¤$ê1vµÆ[ÏÌß‘…β­E~« aÍ|kI,1ªˆo*U‹&ÞÛú#¶Y Ú›BÖÜ‚õ–ÿ(f½u‘(Á‰ï6 V5©ëŠò–°þ›¸î;žùY„¯©VL|B:¨V˜ ª¤»È,âZíäÝ2µH|«*’øVYæºùVt o¾•Ì3~Ì|«©?1®V¨b ÝJ­Í¸ÒµÄ0å  ·0=æ\ë–€‹iW3í qˆC»‚È« ³.-Ú\Þ¨ë Bƾb»YWwÁºBý]SÌ̺ғ§†(›u¿?Ö¤\ØVÁº‚-r#„̺‚bó±¬GH­BCa]1hnßÙ¬+æÌéàÖ•ÁÜ_ÙbNæ\ÁàQffÎXK@¾tÌ€*-¿óŒòÏúhÆóûnYf…iv{Å­Y »w™*+€s¾="+PE¤É¢Ö:YM’j%+ ,luå0%$Ë­°¢,GÄßX©!‚/e.nÍ ú§ÅcuB\…¬¥„´ Z —ª ÊyÆ HTe’§ôzðk´#=)¿йQÛBT¥+3Y)DUÔªíQ£ =gÆzŸ¡§¢TDzÌ’­S*‚j»ÕTÔœ]TV"Y)ÌF =Õ^$Fö8©½0SÞb*j¹jœVè¨@S q&2K£Ø¢Ùê@ ª-Y#p†ûöë–cúuT½s‹ïHzÖG¹¹1Sn¤’ê€&S•h-³Ì­€|DŸBðI+ÖÊl—7Gá¯b¯“^-MŒ-UKÓâF [­–¶„@«¥ï ú®µjáe©­b©Z4@$úh¥ZTD\¿Píþ(Sˆ‹ÔBwÒ¬*‹ÔÂlRvpvÊKÌw›9„juôеNíÒù“gÈÔêÄù7¥¥ò©Áú¨ •¦R0Âjÿ4ùžJ‘™K}ÆRСó/¥±z4ÁÇÑX úâMx,?5<–‚yÇ÷z,µp;Õµ5—Ü ²rÏ¥`€—&•Ÿ¹(^2q™¹z=K¥ Ö/ @¥ x¯ÍÑc)šÌÑ$ 4ðH—ÖXŠê?±~†¸UCÝ Þý1–"ǘM¥Ð7A¶ãL¥Èî°y(Åú£Á9fRè[”Èm=”B7¦jŠ…fRdkå{&…¾§gLPjâ†sîy  H@b1 $‰y…~¬>_ã(PÚ=Õ¼ßÛÇ;×øŽj}2‡b|‘jõҤ!ª=3L4©éÓIø°Xnø ·¦vq§Å’Æ å‹&ÃEèF Ê®ôW<ÌK>*%?š…D¿Ž‰Ç¼jhX•è\ªmS?‹$«Œy±»’ €6ÎÒÁߥ&‡¿ûÊ4Úùš O¼ÐíN¢g°˜(·]U•Q3™ýŽib:¬÷ƒ*ô¥éz0e¨:H¾AÛƒŠ IÓì½P†Öë!U‘µfÓnѪ_ ½¢U¿G]5ìsmñÊÕ¼u´¬¯DõŠDJ\œ¬Ê‚¯<…xVä÷¶Å]¾#m]'¦¾îV±t³VÌåL± ÑÉÚ‹Åù¡(:µ3š©Œ,(ÀT’ôS°+‹bQ‚ñXŽ~ó«Ô¯H™æõÉ”Ij]ðöݪ?ð¼› æÏ¢Ü…l‹æf™}êG`c£_®‚°zŽJÁ”‡Sˆ|¨!O©Ñü+æÅžxý1*¾\"¤ÿ¡ö+ƒJárÌxIÌëÏTƒ‹!|Ód¸jï—µw0{ { ±÷_ =€S1Ò ß%¿¦iH§ªÞk[{›„ º£Ð®)»X¤”]³9™›Ñô<”¥DÆi maqÞÿá±}#þRfý'õÑ$;]á/€S“§†)úÃ<<šgMO¬[Š–Eë§>L‰Te-~&Z·¹ƒôöË|¼t©“û²r}=sÞÊF¯¿ÀF;Ö€çö°÷xY@õŽÕ…k}YxÄ˺5qî^×ìò´ò°®5n ÝÀø²J{Z©¬ÛrOêeñ0z*¿®ï©^/kh+·ò°Òó6ö²®ö¼¾+ˆÿù&ð‰Pýxÿ3LÿŸØèÓæœÊ´ \¿åw¼ þì¨ü‡›@½Ö¼ ÌoŸ Õ²éÚ§£‚íòysTdRkW4¿ p);kSÓ‰’$«€¯öaÁ”™~‡ÖT”–D—À‚‘\·Å¤1¦(TYÈnˆÀ†vj/Ñ#tàlgŽb²“°?PÙœã5w}uòéùÇ“Ž°@¶tø€?ÙŽ".ÈšVüê%7:ñ‡‘ik…UV…-"NpàU$Y•IÐûNºÆø5zæ¦{`1ùY%-‹[ÑnÕdÉmÞ-€fÅ ; Æ¢KÓ4nZe¨/û­Þn í;ÂáôÑp˜›Elùý  b]÷üw×d)Q!€‡+l¸…ᩌ¦yé‹Ùû~òÎk‹´„|yž%Ûð¯·åPæPòΨ¾g'ï{½QS+ÓÉ;ïF¶Ü½ï_<Ø"ÊÞ÷癫6ú(y$Ûù/2ØÃiTÁW êGv޾ߖÒíPj¾CÝAð«s^\=øŸvõðú‚(óIxï¤)ÀÊÛ¹î%e â†ý\ ‚zpw}át'öÐ`»Š_޹¿}êں͵ߜöIäíûs¤z¤ú޶ÎÈÛ 7'íû®± €žu\÷ŠlpäßúÃW´ö®òI¸¼y(™Þ÷sg_´]Iµû^$\.í”'_¨+ëÞÃmÝss ¿1j’üa£»×gÊýGùŠêûLŸŒÑÑ)¡0íz,Xz”Q±E  |ÔsÑ'‘Æœ«½ ë[½kÁ¨•@CV¥x›ˆ ôuÊÈÀìÇÊ.2;mFã7g¡÷»!…ï²sáÍW7i%i¸$Ò~Ù|ðökÝõoàöêæ\ân¢3° ¤¸v.•u׿Yz  ¢öÎb+9ªóE‹Mòz®Ý³¼òj§²Ïò¢Tªº¿vˆìÒ»ò¶ÔYNÇ@(ü¹ÜOˆ8íÍÓq`çb'WObjo›.ÝӱȂ %÷3’vÉ9în;*¸9õBªö[ë¨SÂþ ÕN}”øÚÐņÒ^÷Î3¾¢ø¾×Õ'=CS6Öéâ%EŸíôøD®ËÀí8š<ýÁ½\{zEÄò“º¹›Ñ_ ¢Íé>¢]45Ñ@´C]›Y«ÃÍ˽Ü7i~­ZMâݬæÆç~s«–Û¢ù#É,ÒOÚŸm–«ÀTÐoL®*-#òê¢#«+æH—Ó³EÕ(ãKnèBÇ¡çíÞߛǻõô5ë™>™|ú,*ˆ&ÔPª‹Zú¾µx%\vW€¢†Dr²À2[1/Òþ–ªÁ”—¥ø¥öÅóA9:CÒ¡CB¹–ÌL‚“e½ÇRà̵¯ØŠd2¬* ÕdSg@nØl tø i {F„&I4ÁAïÑEèÅ^º˜ä?tîo ;…: #3ûþDPr’Má13ˆ‘M¯õ£A³=&g¾-LöïH@ò'¿î@W°Aš=QöŽF~Ršìµxœ1€CsKA5ø:4×ôÒãCéØ]¯Ÿôp6…´Y%5{^*?Ú  9Ç Û&ÿ"›yªRŠÛ{™Àµ< ÛbÈÜ·à‡ÉGZ‘¹ˆ´§=™É~#Í´1ÇÀW&hgÖsª¤¯½5 ŒEEÁ{³ÈŽá½YŸ «p ÍGT2“¼;ƒ&‚a%woÏ]ë±?ëŠô=‡6è)°RÂË;4X&Îß«z‹n¶£=šF$È»ôþ„€'-©­zéO€Æ¼McÃé,Þ§÷ÑÞ„rì±QOÙð̽SïOLou¼í/öïHUòGS (üAs'·¤ÄÈUa«¤Œx’É1H>-ÖLÖÀ3’ïœü칺Òó±Ïw¸œÈe(™§ÀR=•CjNÓŸÄ€õ™*7•}œ½N²k2-^0ûPi‡MîA(u”MàŠR —šz’ì&å&Õ…(íL—®¨ÉIô9¤h©Ñª’+P¹Œ pÒNªµ¡$ö)„Ƽ_qî„*_¡Ñ¤ù¸U5À…OUÏØ„HÞ†íDŽ—î/dC€Þ5 A*ÒT¬úÔœ:Ù”Ñû’p;vQO€V}·Ý)¥£‡mSÝH:~˜q0ËZ‘ì'ä´—¾•‡‘ÞE~ W¿•]ìß‘IæÏÊ.þk µi vL‚IhÜ´8Û«À©ª%rö‹#KÚÖ u¯€ÔêSyjšÀ'w HjŽ“ý`RGœü#@©9"ƒ¨ÔìÀ¡Î€¥æ.zàR»ƒt&¥X<ÚJtªÃضLuxÓšš#ü9ØÔáQ pj‰ª™Bª×b …\Sa˜ñìþÙËú2kAQ\³¾x"Q”W%Uj(° âÞJŽHÑjRC®O$ l|x¦ˆ6³¸÷¼¢Q‹L%m'D«It|éw)š­ÿØ~ÞùÎwd£ù£m¹¿7͉H¯³O*óã>óÔêyŸ¨=­ù:_¥²Q^Ç/ƒ#æ¼g]r¡;’^G8´ÑQ_G¼¦0Ý$°îYd'ˆ€&ZædD”[!™“¼(P1eÓˆcQâ9aÐÈe'*Z×)"¥!ÈΈ¸GÜ a^‘–.É:Žh ¥€5p€N°ˆ“>¤ƒ¹$'Å …zø33Âê ‹<(E¬XÔTãPR MÂ~…šîÍM…׎2‹ÆaMÅ©£Þ"–͆_§;Ô}ã6ã;RêòQVÐï»e°:÷LZ€Õ»LÆa­>e×€§*£†‚ ÚPxõ*[˜rÖùm.ïíB¬ÙíàDs¬r¤6ú Y—ôÌ5nÌ:Ò48…1ëMíÄuƒÖ›.ôB­#l³Àñl»§~ãÖ›R€À­knèÞ®K/ ä:6Ò¾ºŽ}‰œgì:z;ðÏx»Þèõ)ûб†Â.ñZNêÀ¯c· {“Üè¸ì(1Ë9 ìMÁÙ¸1ìRÏÕ´ƒØ- Ôn;v Ç@²i€~þ+ðxç4ß‘M—OfÓÔej9îfr›©žžÝg"DÑ2¢Ñ4âëÑišúA‹Ml úµ£Š­nÓˆ±¢ÕÔcÁ47›z¬'7›R¬¸½¦+rF·ixÅ6w›Z‰í&ùÌPUGÝeáN9Er¿©ŸYn8Ù­Ôp’ËàuC§Â.#¯œn9‘N‡×ºédWCœÿ —üÎÓ*±-Lµä1Ú6fôFì,ɧØFØyÜyê±3-·žøBÚ¹Š{OŠ’´uMPµÆîWÝšgoü«¤òÎe¾#™.ŸL¦G6·RôŽù™}Ý»LRaÊÐCµ´×â!cüA ]“ìHj?L©@@W#f÷cAíÊ;~ –²VÐ>УF3§KÃçgZÁ‰Á¯HXNG$§´ã#„EáR~¦»Ð?x §•±û ÄuY(£?S*X˜KçC—]’¹F4…@ M¶½`®m2¬ê B^}MúШ‹ì€ Iø°4Ž!¹j(SûY†Ê °2ög”>ygMdÕµ‘áæ2§‰F4Ò"=ËF½$¸’x)¡ Ѓ”7TP ÑNfIÿh e—Eê”äÛûãL¾B%퉖:(MÄÚ¬ó;ßøŽ´¿|TßPò«(– ÛÐÝþµŠ–Ö¶˜>ŒÌ™4<ùü#º0 ±ß¾òP’‹Ý¿#¡5ª™SpØÃig<ˆ³¡éD¶Q¼H¡ Oÿ  ?ÀÆÎ öÖºO% d¥î]kõÜâ¾ã2*ž\Zs ~ˆgDľ°Géb?HðµÝjù~ÎQWFMqêOkÍæš±"¥ó¹¯<:@a'ÚìxÈÒëg;YgT\iv*a\khHî_ûÌ»•÷Isù(í(4PbDáÀ.3…*ö¥FŽe†ì2ú­ 5#)rQÛ°½X`¯‹Ðîh@Üóß4·éhhúu}‰ öD½GêÛ=5ÇväØg{é ón8:˜Ù‘9›5 §PàÈ0;xæÐ(²“”-°4¹û¥ÀDodo™DÉFèðvD·N¦µ «Ôà×ÿGݹ&9šëHv+¹€°¶orÿwªŒšÖô˜]µ™îŸºEHJ‰Àáp¿Œ„£€2ƒâG(@JUå Tî>”tÀB¼ ©€¬PRŠ¡€ Vþ ±D²Ö¢¤Ðõ3²-Àï”A´¯»ÎëùvÀ{~GÍ\?«H.9…Ü3hi‘™ª¸i8²IR…X2÷’™ñãd‘ÎŒQ~ØšiŠ+*5’š™ŠS;â25Ð@´µfÜ€a­™©v™Åf²3Ü)Å{°(ùQ›!öDµåfè p Ho¦(l´ ѵè’âLUó@£¤¡9Óä 8®è ñ†0áes‘Ù·é9¿tgè$ÌüÒ+T‘Jò¼Ôgè.,Àåž!¦-}´gˆ¯â3RK›!>Sê%¥>C³âj6¡AÃÏ„™‡ rl˜@ɳ ÿû}·s¾£p®mCŸ1¢}†Ó‚¤!ƒpWž|ÁÙ®@Ù¢þÖÌ l)&|L·t'¦ÿ–õ¢–s¿™ó<ö>Ý`ƒU%ÎϘÃ]þúŒq>j°Qê ‚]~}*aÆ2Wñ땘·4ÄO½“”ñžåùHÉO&É~kQúR·R¿²€ ›W…òŠz…ŽKœÿê(肱5_9§âH)C6¾h'K=È#Dä{޾$ëüT®"ZÚÂOÑx&æ²,;ÝÅäð*NébjP^ÚOEñÀ¸¶’¤‘ŸüDc(~‡¤¬­SÌ ÖïôÝ®ùŽÚ¹~tì0Yä|\èù~œ`j,$à#Pr:_HSÒÓhSü1ß§`Œ]ëÞhZ‚/µkÿÍÇ9׺K†ñ‹ +J„êç`Ê@…ÌkQjd•X´Uƒ#-—»¨¡ˆ>¤Et ¦{ÖÝ ‰bÛ&K˜yœã#k›°ñ¦Ø©Ý}©Q©Õî¾…Þqv9ûZS[s]¯×‡áQæë`èÅM s¸`0â°ÑáCÑRë=š(SV\HH·tO6ŽÊà^§ßnÞœÓñ×áùn×|GU]?JwþBà`šç¤wþAµ€É÷?IçY¼™‡÷âUÍ·B<¨{#ï.b}Zdåþ!Ä6Reî]ŒX<œØWQ`«^qÊÜ#I‚d¹8HI”W®?•ð¢³çá\YTÑ[+ Òru¦×d»‚Qð¯DÖ/EñÒÅ^}¨–uÂxm.—Uû4³WĄ@®  AŠúi‰¯ZÀ½T^ÅKJœzE 6E»¤î eSªH—a‡Ó²é- <Ó, ×*‡(•O9E"ˤ¶ª‹È a"jª¶ Mó(Qnt!:Å£táJ¡ZÿØ|·E![Ä™|j<ímƒc~.P?Jíþõqá´¡ž´·‹b*V‡²â%Jiâ>'k†aÚÍ‘Ub]D'íY@ÈnâU\ôlUð§^qdÉb9w7…Tø=¹}7…TAåþS|Q#ô4D#Õ˜è¢KëcÈèŸ>ÍkêA£KSU^Ø$igç(a–º2O<>ØÎÓæÑ.bÈERVC¦AôV ECF¦Qbõ`ÒŒ ,Ž rÍ`«‹VÉÚÕyŸô'¸l ‡­ºçÒ”*Šr£ž @€«Ä¢2Ì£\E.5YRkQeF‡Ñ¿¨LŸäNËÒ•Sd’F—eÌ•lùWæñfÛ¬ïÚ'.ðBÑßùDjN6i‘ïS6°KY0Ù&DH:äÐû |ÚÚ×Wã¢IºäO;°é±²d´­ºjñ©×L¢s’ó šíKÖ—’d¹Ål¹07®›%^ž„1Kð£Ó*Æn8Dó>%¼9$f~±eÙcª)gè9[ÜŠˆ‘题¿ënûL½‡¤ ޤç„.ó?~6sàâþäÌÄ 5oo‘Þõ•wû¨¶ÿ/ˆOÖ µjÛäP°.ÑÖ©!a=Üöá÷¥aížLR‰XGË(Yĺ–R¨X·è8…ƒ¢d¬£)•d~¢­¢¾U‘ûÉ`Ù’/ÌQ²AYu½ŠüO®"Nz¼©iíž™ Qº„^󈶂Œ*Ô°¥Y§¶Z20;ìí¢®]³¿£9êéäÊô%»å,ÌPƒz…ðõ†€ŠˆÓññV‘ãÝĽ‡€€h7Úø·#w#³\´Qz˜—ãU¢)/ƒ$q8w;k¸éVµBk´æÉg™s·´Ê/Z5SÃAôZù&Rï6Îwßí“Å÷¢)Fs®i„le9ÓU¹NZµ*ä/ÙþÀleSÎ{ujù2!Iì, ¨lž›¶ê£aãjÑ>ueÕ¥…С:³dÊõÑò 3Ç$y­Øg £jÍn★qJTIÄ«¼äGQÜÜûNzã$ì-mJüæ£9Ê5T*ã:Óe„Œ §jw‡ëLýAÃÔyC’ø4Ý(£ÆÑ&¢V <1(J‹™+ªyŒ¯ó¾[ü³ øFÖ•ÆÎ”‰Âð½¥ØVÞš¤›a|Æ‘UzÔ4ê ¡é%«Õ#eÀÉ´!¥u/A’¦‹çDTà êÈA—ޯ悔ÛGkï_%_Цí ¦äcÕí•GÉ·ºc r’ðLóC)÷fò™¥UÆïq桯“¢‚ÀKyŹǠ&~ZìºÜ욢‘<“kòhà(¥`èCȺ‡v”d·Ðuò²7ä˜÷çÔ,%l’Š6¸jð”G}©FiÙ§»Öy7s™Ø&ö…Eæ7Øä°#ß?QWÚÍ‚`ŽuZãâ+ªI†.Œ®SC5I\@lz^ ÷¬²d%_bš?•¡/±^]ƒ<&À¬q´²”¦¹Ib©CÐ6¬ÝDs¿†âÅ´Ø3ï=*™qå×í„Þoï(½Û'KoÛ6âsÐDlƒq‡«‹Hœ¿ë6)?x±0eáˆp?tX8>¿—™b){3_&ÇØG¦ÂpJW¨Äò3™Yt£‘Äà½8ŽýMÒT}BvˆIÖŠ|¸‹ŒIsè+R¬ïôõµ#Hì,H[žw²£ëùŽ2²¶ŒÔ0 d >-2u"­üG^ó{÷!â1ñ>Å á§ fÀ#TQæQÈ[Ðr$J”!é“–:UÊ×÷ß21Óáÿ€:"+¼X§~"Âæ† Ì{àÏýOFa)Ãðéµ3øÙo‘!ýÄC³?œÛ»ctÛéÉã î ìs¦è܈c?OɸĔ1 ±/«5Vå&óGŽyøí%Í*ðo¥9¶?ØÙÃÀ­ÒPå.®);Ÿ‘'ÚFé‚sþ+©|·¾£víÿ¾tþ¸ò5¦Ó'š3?nŠ&9ÓÅ—ñr¦ÓwÖtþ¯5¾cŒN™¹“Éâ’ê—ÞÀ0ò§URæu§óBzÙÓi™©Ä²AWa¹u^¤ùZÔi «ì³GVx –RøÔy\‹:š¨>âÎ[è:Ôi{µãP×¼ûÆË¡Î›³]‹:íÝ' ɰ©óö.עλ¿„E]óáûð‘ZœI¾Ž\¼Ÿ@ž8}¸É¤·Ó1¥ëögáüJãšÔùx«aR7|úá.Ûµgã;ÁŒ}¢}ÇÎùlçøïÜ+‹m0«q«¦×B+V=Õ˜ˆ8õkùQ¡ÁÈ>e#&ˆYÐiÎͬf`?½bnvûI™=íæÆ%º‚Vµ]÷ßtdóØ•_Ýç"#+ö0¹#óE,‡JêyQ'’'qI&R‡q·šËb7ï/’Œ–É8?¡&ùÃï4ç)ÖP=:4ƒª%ÓH„YŠE–UΫIº­ûñ,âƒÝÎU„ZÝdîoz¼ûrÈèsLÿ ý¯ ”Õý¸d/!Ÿ¿=QÀ„xÑ>÷Çí¸ŸÑþ¾Fž%§w¬‹ÃNr`Ýqž/!^âòôÙ+÷;öÍgçÿ>f޽#s»¾¼öŽð_¡u{GÍËîÑì7f‘Û*×Þ>-í§cïˆûm—Û;ò7Ï®c¯»#ãÏàðvwÄ¡xjÄç¸;ÂH/sDzºr¦cî¨aë‘äyO+ìShLP?…§´*ñ”ËWÖïh"[§xO“–èG3äÍ`&CâƒÔ”¡pg÷xäÁöÂf¨|¤óšK²Npõ:„vÜò0è£Ø¥ZaVa¿Í‰¸fUÌõ¯'ò[v7O)}Í?LPeœ‰¦›dš¨Ú7k!‘{Œ<3G…“…‘ùò¤%ºŸƒ›žîƒ°<ŒÑôÏQ§J”Å´þU‘½Û;ßQÀöÏ[ÎÏÀ~Žå¼´ðœï³Õk:o.Lçg@u3\çʃ¸¶ó†úÒñ7YŒŒçg€…õ:ÏLl×z^`c×{Þ€d½æó,˵Ÿ7 Y®ÿ¼Ï¨Ÿ ½AÑô5@Óz-èªÉWþx-ׄÞÀl¹.ôn뵡°’Mö¢´tÌè—±áÓ ÑÃü³ý xÙVô+Àç|­è…MÃi—ýèº^3zÛ!é}¿,é ÿ+i³kÒwÔüãã~ôê6q̧0¤?(Z‹Áe -M%×ú¦hÿ6¥_ÒU»Òóñ É+¶¥¯è Ç.™Óׇéç Ù>–ØÂ›~֘Ü~™Â>^™ÂŸ~]qœyb!ª\ìW?2ùfÊÊÈt¸Ùµ¾z=¶¾Ý+|ëk ß5Œë:þû}·q¾ŸU6Sr­ËY’²û¶™¾»Q+ºOtµ…SX)Îñ¨¾§Óäf›œtœ9P ìýytOéÔ+íÆŠë,Ë*5À¢ø.Ò±·8×VxÖ-„éGË<*þL‚ ¤\ÿg ThÅ h¨èiAò4£À`AÄ; @ÄXR&w£À*ÐA-›ŠÒG VT Ú‰%SŠ›ÛHªæ'Æ¢LÍN¬gÈwù%i¯€˜$͵䠰pœT›¼‘ÓF–Ô=~åïvÎwÿã£Íë. _5«è5û`r/ 9U$;¢Õ—u/¯°AˆÊ”e´t˜¹£t}3ÚlH‘ÞQ#.J¨5¸Õ«£;KÉâVž š¢¡Ó'¯Í&•®’|Ý%¿oÅwßøw”¬ãwÉš©¬Öþ(ÿG¥@ç. š`œ´éaÚ‚BÃu„‰ Hùðß¡X£û\o?1im±º˜t†ÐÎÐY ;°—m˜’ó+Û]¡|bh3Œ.®ÀÁs“%˜±ßê”bL5‰‹f{Íâ7Ý—SZbðŸE—{Ü××KB>ãmˆÝ¥Àûèwº 8Ù!(ÑÐ]!™"ÈÇ$¯N“ ×e‚ÅNü43*NÒ~” Ø&ñò)4‘¼9ø%€ð‰°pVÆÀÄ®FÝq ue±þH0ªG8KéLi5«ÇH6r8Õ*züìap½7ç/|¯¦mkŽs„À´A¶ÿGŽ‘¿£h¿‹Öÿà¾!u •”è~A’¶'ɶD©I&÷ºã£×mÔ«büò(US.JÀ{Î'>Zž¢üŒA‹™÷¡ï%"$*ü~”г”•«Ï%M ㉉VaëR"Þ•ÀáN¬êÊÑD{ÅÍ‚D=‡wHËC~M×g…´™•½ÓOd… ¢œÖLа½Ò÷§ûÙw“Óùêy}&r4LY­òG2O;RÆH£ô„°%ø¢p7ÖÈð‰´ÊyXñΗ$ûªò Ê0¦J¨h(&A!KÙÐ0nÙ€hP‹æyŠ¦å©Ÿ N^îª ô”\TYᦓTåŠmó¶Ÿ¿£d¿KÖÿà¶)¢pœëÆÆëC½ÙÌB²·róã*Âà"0´‘íÚœºyHE "bt|É Güþ8i2šͽ[²}{PgÅÈØ¹€ ÅÇñZY(èm×Ȱ$hý’eS:ƒ6&¤+‡ÇŽ‹BŒ3v­ÿÔÄ1UäÒ!7VQš%öü­*f´J”1‰ÿBn=]д_²–Ä9{[šH’P=J™t‹~V©wèf'Çðm™ü>Ï!G2vÔÍîºz˜¢ÎF¤þË*ú)WÅ3Tõ²O ÿ ÷›Iíålb&N+ž/wJÅï†kVþŽ‚vþ.hÿ“—ͯ3Fk).n(,~úHºØ%ÈÛ˜Ð)¬´j:5 ' —Ç΋ÊhôhÒ£ e[Yi‰^Ÿ¤¯öHM²e‰þž(<—ÄáœÙTÊ¥GâS;ª$Sr”K–\#yjZfÓ+¹ •È)KæHÀ’õ.GIЦõ0eO]4.Î¥.äм©.Úèbvé@v –;I Žå2Ðj §KSstÈ|zÓÊC“”(sð3xl—IO¤±]²ø¥Ju›`gïüGÌ–IWçÊóÒ' é«-Òélò1"Ýî24 Òñßçç»}óåìü]Îþ'‹›¿ˆ¾Ã=ƒÔžyQÆE^GØ^³ŠcrB.åu vüç=&õ’%àò:J» ×QÛÄx ôõ:©5ývs¹9Ä©™sŒþg²){‰!Ñ_] PÓ…Rä7ÑžT&¹QdݘŽÁ°BøJÜYÐNð;ñ}6¤w ö}\wzI´?ë¹m©!rŒnÌ,âË ¶Ôu¤¯À[ÅQKPr·F|.i_Z¿Ò×—úq…ìr®¬¡+”õRã&Y D»‰ìŸnÒXÙ.šgB9µ)aµ³*ùnðïa,8ÙšÑnÄ)š¬xyœ;I$,,²‡†¢Å÷Ìžˆóò(Üx‘ƒÈ{(Ô™N…Bõ„C„Ô€±ˆ?Båñ¥Ö¯Æ’éËÑ fìá±íIM:c­4Â(ïmÂ%-ÄZ©~㱂À”þÆôŒ_w cq=×* 6ñ| ×ÖG«ÂŒË¿F\–z…±ñ9 ‚0઱ó.ãR⩱sÌÁˆÙm`å ¡Ò.\¹ŠüȾ dª3¾ÅÐòa C¤cªJìuZfHõ™Cï6ÌwÀëƒpÀïãEŽÀ5²ú#§¬HÀdÍ‚…mÈ™,Pö@Õ´‹Êè*QÞ{æYêÖŠñŠ…lšÙ]5 10„¿ 3$eIy›¶—vSâM@p•¤4ïªYއi€7ÅØÄÓëa2០¼ÐN‚ WÙr&]B&}ÇYMiHjêcÏÈ5Âï±¾‘¡ª¢âï^Üéþc×9ž®_ SùN¥!ê"*gErQƒ Kib>.V°ØSIÌH1«æŦÄ-(fé%3ƒS?(A®Þã%Åšü¾ÁÝÂ&£{¨C.QÙ]’÷ ¾ûûà|·k¾X„h+¬ÈÍvY‰ÛIdfSgåe•ãî "÷)'£¢fÆÙÙ.§µp?è&åHÅö!©œ6N””‰íX[B™¨2ça<†X’²°½ÎÀ"Û+—&Cd`{ÑIGϹ¿ÉtæÕþ0NÛ"ïò%ÐÕ‚RæµØ®†•ó®ñG$=g]{“s ÖȹêŸéé@e[íE!œkõ?`~Å©V«ö±ßJ$Zëbβ‚ŽEš‹N‰óëL©9Íb´\~ΰ!R ʰ˜È΢\)ÁÚ/Dù²ë{€oÑãòõüú`=ÿëÃâ#\ç²ÀÒT:xº,»Þ‹wøª‘¨¸v¾+6)»žáOŠo *¹ŸœíŒ«WžØuùž@R‹gñ-!ý#SÅuI0G¬©<_TªîºèŽ(êNÓ\Ð7*!¾"”™/‡#(ý(ÝBÜ%/ž÷Ï]^*º˜?q¹p94ˆXiÅå€ÙÅ’)wƒiXäZ\ œ LåMß ÇüÈ‚;¾€ÚEäóµ/O(Ý P;,û«KA”Kä÷}'ˆ)€O×AÇYM²;º €¼—D<|áÝëàý®øŽb}}°XÿݸÅw¹§èP±œeL”¢Õ¤1ŠyoŒ!Éù9ÍèMINàÝèÙ”ÌÞÃÙ¸¤øêýÀÒ"µQŸÍÒ™=C_mé6­³„ÌÕÆƒ6@BPO«yw9Ü ,R \ÃÌ¿zDä-9¢›X-bØ¢Ù8¥qبÔ‹¬2gj©ñóP Yë´2»¼2Û–Æ…Dªœ„Ü ëdÈj‰–é’ÄCU¦!ÇŒÛD‰~ëDòDǑڱ=}ŠS<|N"AJÕ )M“¨ÝÛþ0àÈïªìLê#8öÞ#ü#8Îè'fn•6û‡ÏÈ!Us¼“0_õ+Šôõ|²sÿ×Ñ´¤%JtúîÊ/Wèh;y|ÖEºX›ˆ »F§‰/Û—èÕ´ÍE:•'íBéq¢çpIòŒ¬Wd9—è$Él¨Ð©=ÈÎ] 3äÔ¤³®ú|gvüT N_T/f×3}v óÀšPHʦráY‘…|«2ßÛ«³‚Oa®ñõ]¯».ŸÌ«çrªò†_EWÑOQÞ˜WWC]õød^½­SŽû,U°EE>5´Îi¤‚¼âw#ÞýŽb»›åxÇá&•SÖû<ÕxÆÏ&S ©×Àú̧w¦úÿ±1¾¢ßßñÿ¬¹2Wö†¦ZºRW0WO½4ŤžŒÉÊeû›ë´.ÍÕ$%g@?ž¹!"Á?9’ø>ƒæ1µSRPh<Ô£.DÚVqfë¹ ÞÌ’}Ñ™RJÃZsEM1€Ú™;"É«Á%÷l’3½Tó]"žÁO%FÚWE>ñü‰"ûg>Š~ú™ŸR&øô;_E*ø”】œA+†Š€9ånëÎpO9r4“Ö±zT\d0î1±î r„ 53ýÇušŒ$° Ç ÚPN‰¦ÇÔ²â%wVad¾W­Yõ+ªñ]|\ð)ÇÇÕ®~–?Îvõµôq¯+¿åo£]‰.a/ /¡5$¾F|áÁ ´ ˜Öbg!¦5³ŽˆXõššéŠŒyÍÕ+D¦u)±e •ÌutÌ´¬ÇIø¬uæ¥ß®š¶ÆÈ¡•Ö½uHøBKÍ[«]½5m?Ä–ÅUï±=×Õk#N‡¿šnÞâýj¾ù¨GÎ'D¿Šq:@æ•ó³BtÎGP± ]œNõ¨Õéè ¦{ÈÙél{ê»óÑ7žOÆq4Mtp¾ß/_Qįç“ó¿?, Ä€0k$õw°ö7´eІÆª3rñ¡G3D ±‘£fHÙ ¡9g‡Ø\‚[;r8„{3Y+§ B$?”tÀ®ÎN¨D›.Tx@œ¸YB¢8Š^©|šÂ'Êëû€`'XÿshvÕæ…rHæ¡+$˜,•£:$så\­IT„¯­,Rð„Ês(ÆIж8'~ôQDÇ+¶R³%«|êGMI^лd­%0AÄECÉ -œ«„0±‡ÂsL,6¢z÷nO|E ¿ž:x‡X È”°œ…äˆCï9ç—FýB§®„÷uHÙi6f¾”îǧë¨áñ³<Ôòdè$o«é ÑáñPÛ#nˆ_†Ÿ™R÷À€ÿ‚£èG\Cp*Dÿøe‰5› ¥.¾5‰3ç{h ‚@1¾w4‰ Øiè ´BF4t ‰I×ô’¡mXäÖÚ¯ô¡lZDì·‰™Äò“«°âÁߣ¬(·ç´B}ј¥úQg,ÀG;F—«ðH,ÐP€µkã DÊpš9š_ùÄ›­Ó¾£œOŸœ?È×´™BÂbsÔÓô–bÈ 9›®ÇÍó‹VÈØçqã×r¨hìs…ƹT6x|ˆN%þ|þW¨ißä:û`íŒÄôùØÇ4¶*”ý’Ùo¸kf úsÄÕ â’á÷›æY$5²Ÿ^tà ˄ Î+ÏU+ÙoZ7M 5“}>S†¯j'û)’Cý.Q°fñãVLÉr"èWQ«–s‰Ñ•¬êû%Ê"]}‰¶dFk¸mBÓÖÝ#ë¾/DÌCF}¬úÒÉrC‹>bhËÐÝšôC{†þ–KÓÐà’HKH×èÒyëK¼ÚwÔûéa|ܧŸñqï›yÆÇ½mÆ×¶)5æÇ½i¦çdz÷LŽñqo˜uÆÇ½a‚+îñqo˜uÆÇµ_îô¸wËôôx÷fÙgiLk¯`èéqm•vÇǽU–ÇÇ›wIL®Çø¸6 cµ¤5öI;ããÞ&óŒ{—t{HâAÓãÚ"Ì–{zÜ»cyz¼xs´ Ëhz\Û£”3=îÝ1Ïô¸6Ç<ÃãÞã kg¤äáñäMŒ‡4½'ºaÈ{âȤÿOs±öõ|úd=ÿþ8¾ŸÃØ5bxàGâÂ×{½¾þSÈd¬HÒ•Ñp ®qVÚp–1®‡³z…:œ¥ä+äá,&_¡g9õŠ8zI…8SŠ— 9gSùÊ8Û 5’ÉX µ’“¬µ«fâd΂'%²½z(%²Áf½”ÉâQ`É^‘PŽ\qB¹öámE– i¹Š-JXõ¸U]œÔŽ«úâ¤w\UçÄ1UÀéµ"m¾º2ΪëÕQÒæwRþ>ûŽº>}²®?lû"u©~uø¾ˆ¥Ë:êî <ÖúóãYôzä ¦c®àèª0¾o9ÁìŸñ”’ôSÀ;r„ôs¦:r…Н ¡º=¼<$_:‚ˆÄí†f"?“¦cÈWãú’‹¥†x(2ë …h#K Ýá#êè9¸«ùHØ‚Kud!ùYáߪ‘Äp|Žª¤:ZŠ­:IŒóÁQ¥$Þoå*W뇲%q Q/«_šŸ…嘵1»b*š£)±…}ïmMbòÏßåì»óÕú¨ù¯ƒæhXøã,WãÂw¾þ:òÕÈð×U¯Ž†¿Ò:3¾òãSj-/‹£Õ±bÙ´òX±¬JH}ôXvÙJ 3Ve±XH¹ ×Z"±®Ï|r#t­µöKÈ‘x¯ÈUr%gïô+gr¶Ö‘;9[ïH¢x{–+™r¶¯^3dUÎ?²+q„(‹‡zE[îñaMŸ.ãʾœèÈÂÜ*dcΦÒ2>äÚ•ž¹‡`HӼɿÑ7;§GñŸ?Zü8Ëü49fPõ‘YD(^Ô8Ò‚6Áxí¤!Ë;8+&I°¬c&]3-êXµ:êÔ!©Ym‹éŽ£ÂYÞ¯}Ôfý…¸M†èÄdöIæU÷;̦­4]»úa†ª™ó¬’·$M'û%ík¯¹«¬ðÂ@ô›Ê©Äý† C;¦z¨<Ü´‰“^¡kò8dØËLº„cwÑXç³|e˜›ÌÈõ`¿+Ø_u\Wî·'™8½ÿÒhœá©À£UnÇw!+Ñ*á˰ÿ= ]óåÛÀ([HâkÌo!뇬ÍΔ£ß¿@ wÛæ;*ÿü©Ê?•Ø-!»C]û¥)b©h»˜:ÏnQHÅ›EáÞ±W@mú˜RvÖ6ì-F{Ø&ǾU“’Þ(8)‘ò>›“5j‡fq;ÙÆÅï@EÏð©zTÌfmq=Ÿ§ÇönU¹åí@´/b‡à *¼ÖdZ©ÅþèG‰í1厣 \ïŒqD´1Z:"HÚ9$mŒè°…´7à/t,bkÌ£‚¤±òQAòÆhGÉ›b„ ’·D;2HÚ%ýFwÞíˆï(úóG›øM6:%&}“¥@Z*A¼„~Ð:êrd 9«ÿ«oåøÅöìµ¹×ǃ7e÷Êå—«Úr,k¾_0‚PNÐÂßë >âSî¶x䣖̖¢TƸ›êA·±{˱{ŸC&Ïüi’û“·+a6?:63¯w:l÷ý^ñCOAFßon/ñGïä'Å¿z¾£ôÍÕL+V褮 Î2v§³Cî3Ù]m?R¸Û4óBd¯c÷ÓFòuȳD†:vÐñd¼ vÌK &D˜ð˜ºRã'«¥ s^^?¦Ää±2ßìœñaùdExl»iÄ€…[obYö…í7± î°Wãf\çpÚ:c¥ë,žÅ*×yœ8?1¢îä4©ñm^ž%«Z¯·91ÄV{ŸOµ•Ždb„Ê5äž>c_tÜÕGcó:A ˆáx³ó3¶Éñn§©¥ùðv'†Ês¼ßÕôâäßÔëbrØ?^r'Äá/Om†¦Ö± çg\!Ç¢^­6æ?da_Ô‰£[p,î‰å[ж×b¡è1Jʽ+ÖkvÇ©>Ì{½& 柩A½º5ˆ6Ô¡ç,0°vÌ0/ï!«Íønã|GMX>Êþžª\˜ì!F;b×5PI«­ýOå ¢¤“Ä ¦ÉðN¢þ*œXðÄQ•jG;Dmm©yYy"èØ‡ù­-ñÕŽâÃ2¶„ÒÍÏ]BA“•ku!.‘eªåIS}Ô4å™ë1»ØÏöÃpÆO?pqç1¬ÆÍtÿ)ìêÀ–ÎoTëú>þ$!²¨ü‘ ÿ@ÍІ¢!ïæ¯ 9í\ÏXêj½}¯Búé±ci™í /%O•Ž„Y”" (ÛþÒxçJ’á̫ƒh¿-•¨ÂÂßrñg ·,Â!™RͺðËpÇ£ü謂×TûÛÄ~|GYX>Ú þûÓ:Ÿ§ ÜãÓÞ+]jÉë~–¯îoj¯†kF½ß#§WKþ–y´¡Žï5ÀSuÙãþs•Ðõ¢ÛwÕ'%4q­2žnÙ5¸åxòŸ€ë`È%D*X¾û¹Zcmï%‰|2ï;{Árþckì= {¡{ïð¸‰=ÚXY!´ë@¹pÙÕ†$Ddx»ò·ËóUUr\1ólõý€º2ÐÕ‡|špÕq±ŸŽ<˜õ­‰Ñ®°î ,°â2¸ÐEC•`ðB¯EMÖ}‚ñÄSöñÒÆùáî¬õ¥±Ï_דּ¼—VßQò–O–¼tö™ðtžU¤Ä)lŠ.oJêAµaL ­wÍø+Sê?xœ"‹Ê í†þ*Ä¡­Æ¸,o~Ä—Æøë˜íWfs%–€¬¶•.­ÆбL¢!%4EꩆrõÄ5jšR‡µÆ_Q§ÓωÀ(Yú V®(1³uÇ%½ÅÉjf°‹—”:—HsS&OÔ.¡í.‘*vªirš_ÃÒVlAÒyab­b¹†AãˆÔ!xŒ•N¿ÞTËÊ“Šƒ2KQÉüŠ~¶ì–€Ä·ØHÉ-«:Bâ6¬¾¿P¾£°/%zÿú¸X7B—ϧ٤y?kì"Z~} ôeˆå—¸$Yx¿OtÉ—¬Ä£¨¬×’°¿ÐkÉÀ´+ó®(8ñ0Tˆ{g¢)°3 tμb— S» ö`~f¬÷xÕ{í àkÛÏžìÖû–ÿ«5ØoÞrâPäÛ²ŠCaª·-À|ïínk½$\½úÚú€ÿSEV×Ћj®u K5T—t…ä{;7»KtÊ1¦×i$QÛ3âWÝz¥ÌƦ¼»í„ {’ÞIUSŠíªÉ@·¬pBf0P'-,\H¯ðá®9Ñ‰Šš`ÌúJÙ¡:.Tò)ó†ÊÇW) º«­¶êûó•}ýde?dÜå¦î^—™ÜòåXÚCgEÉ ;1¾6·‡,ÐÉè5jñÝ'(å•7Ar†u­×)ÒeâÀ9I~*}ÜŸª{ãÍ«ªQ7íÇ:[bÔMé ùÔÈ„B¦¢ÿÈŸ®¨ßšœ4ÜA;²mª Q—„ß°‚æ¦ aÐ[ûÁÛ„ÊLûq©á¢Q7ZEý˜fÝ…'«YƒU85Þq¦-‚ÞhôŒu,W5 ªgE6™y%Q‹²æèrV½élúó{Ìﲈgßw*,‡GS‰ €ð†å4ûƒ{ RÑl¿}+&Im…CÄÿ¸‚™ßQÛ×OÖöúîv ÈÄq)þÞö‡©<œ1 ×ôücÚ­õšô½eÂ"%}o{h`zù{#Dq¹û‹ûá¨íąïî‡Ã¸Y)äŸÈÛ»¯í; ÏúQ‹ª_‡?:?i˜|ùƒ‚"P´ò$™jFˆè´ãÕ6Š¢tOlj¹ž¯Ýħ+…6X°?–aEPwwž±¬;[„ó“Þ/OŠ P÷}]ØïL‘›y¥ìñÏéÁLY‹¡rTÆ¥3'­ô‰¬@üTÌ.I[2- ¤ :@¹ñQÅð4) ’û0™ ëËŒš}®MQ³vHò2™§~ÄÖ¡cØ‘VA22kÍú¥ðw*ÓÔð‰Pߦrw§Š¹éÄ]L ÚuIæ 1zÝ\Q£™3³Öjžd”W»f­©ñˆø×ýõn|G…Y?J&^’¸‹<Ù³$úâÕÉš%Ñ‚UÛ$i–hÜmâ,|Ï­þþïÖ ³%´‰f´nÎ,‰‰³nït»5¬íÏ–ÔrÚCYÃ%ƒº§Ë‹fþj´˜†ÜDhP ªÊ½Å8·¨ŽnÌ ªÕeß nµ¹²ì–ꃥԙy“$ôˆ6™ÆMJIÑIË7iÑeʰ‡v¦ºpaåBN¢bœ Šy°GjäÕ¥ ŽõùlK,vŽú€EÃ'µhVŸ¨T.æ;·'jù¢“D/‰ŠÔð &ø llqΘYµîž»™Ì³ÉD¹ÛÙÿ…Ò½Ù;ë;jÌöÉSF瀒º[’ü­D¢£ðe—¿U„ǃ»#öË”Á‰€‹é ©Y\­•…åø+j£cp…¦°‰®] -¦ÉR”Wü Ûµ»ú¢»ÄÈbÔfY C]ÓÊâG]3s×wv€×Ù©ú/²D`TMdmÆÊ0qŽŸy„øK”˜M‚CèD%è —©!8¤ñg3}PÒe ´ºÊ¼&Eì×G‹“áh‹\¨Ž¶4ŽïÄð‘åŸR¢§3obõ¨Õ“æïx5ŒeC½>u~:r’­,à>6Es¢I ÈrÆ= „ö¯#ôÝ®ùŽú²}²¾ħâ]ŠiJפEt©Qk”¬bK­õ,bgp@8§Õ>˜¢O•jŠ^o±ˆ¹¸)b1hÙ ÏåtjŪÚ΢S 5¡§¸,èªr. fÄ–ë|w¨Ö÷KB ´ ÛqU†Y|•½ÁL/9­ù6Ÿ*UKëýÆùŽ ´}´»üëã’YAO‘üf±Õ4$®Ü8˽@Sâ¤Î鸴Ȭƒ½Æ¹Eâ-wƒÇÝååÑåK­NÝ“mhê+±ç,1çt%õç:ÍíUEl6¥‹*ªœ/G ¦>ïÁ¬§(;Îk&{¥¨2áwŸð*\Š(oÏŒ²&‰ñ¦ A•O•a]?šÀG3IuS—.a&ÑRY—LϾÅ(¼Â,s¤uY•:a­.Û´’QOŠ!˜ý<;æé®ûº [²°Z¬°FÕØ¥UHÓMEeܲÉÏ…§õ ³f`˜–rÒTfAÂ6þ•y¼Û9ß´®Ã0ÀÄŒä˜ó¯µXŒDDƒîytb&*ÍÍ¨Ž¹‚DÎðß‹ÐÔÃø!)•7;#4W’¬\ƒ¢‘¤o²à‰ŸÑ'‰Ÿá‡»žqI²©éÈ4AÃÆ0@>âg8ÆÊ&­†aÌЈ‰(9Š™¥f2†’&ºÍeô]%9ò*b< ;·Zn¥›§3 z>ÇH~… *15ˆJó{MÓ5$ñ"Wð5’MkøHDÖPˆ¯—ÈR€)j¢™­QíiÓÒOHE)fÐÆ| !§$55³6Šba ¢mXâxGÄ îý_¹Ç»}óà@û(¯ü1]À g‹´iê¹"­š{þ#õîÙ^©™€ÏñJÝ@>ÖOj'èóXEú'0©GzXþ<_a7þù¦™³¬ï(QûG'^ÿþ´¼jð4{ì—DÍû©S³ÄžÁÕ,±'s°5{ìÙlºæ9øØÖ3(›#vý¾fõ©Pƒ¯Y_‡†›íu°ˆ±ùƒ§>q(àlöס¬Ísî‰Èiæ¦Ï½zi›çX¬®NïÉÊ>Y‡™›@óçäw3ÝcYÜÍö:µEÞŒõ«ƒý08óëàovLõÅpø›õÞÒ/^¯«EθŠJ8ËëfjÝ8—œG+.7Ñ8ë¿.¿w;æ;ÊÓþyYë¤õ›³*p/&^‘nâe”.§›|Ÿ úÙ2ØPÉ —’O&5²\š -‹e墢yŠ*é/ù©HÊÔÃKºÙØF±¤­«MKœ¼ËfWKªqÒãUî†ä²(­±Æ]zGYóÇ74D,ä®!p™Ãw-ûòT§»L¤UÈ=’çnÚT3X—ÔO¤gÃ4¬$t ÃØF´Meà ˆ§ÂoËǹ´+ªôº]€£+J}ÜŠ/ž¦AÅž²ª'}.¦9 bŠux×øãØkÚšºÚ5å˜˪¾i×Ððp†m2ô¨oº£{×|GmÚ?Z›ÆØÑ¬2è¨]>?T¨`vÝ­'–¨€[ŸCªÿ„,§² 9Õi€K€ßϼ4;þ¾ ±¿¥°wâG Ìhü«ªzÄó]V!ÓÅd[?ˆq`85’êO°$ê8Mv²ª·XüÞž4ÞX×ø ì» #ÂîZuÿã~–ýýÚYs4M¨Ú†q¡5-Ú†¬Õ^–kŠEV…Ôï§[ó$Äh¥i™ 2³š#¸jâmúÈ|Ásaz<_Ý~}“¶$=â¬xo}Î*p~V˜P¦¡XìëÇnñÄLÓõáFˆ w’ë·Cø 1N|^Ù}ÔñR¼Æû|ì;*ÑþÉJLÿÉå§ÙŸOÿ>›9íšvõÿÃaÈ©/¿¤É&.µ úÞ Í¤CÙìo§9‘¢¹@Ó«YÇ霢¡ÚõãÃÜ–­jÛ¡8~öE,£Ó¯þì«ãMu¥ßQ$õOI¿wÀÝ!p½G~í"‡4› àµÏ×&xíýµI=ì嵉¡½WQ)5ÿX6¾Îd­{Vζ×QâTôž4ãÓê ú‰ƒ÷S}ÿ8Ä’„¿Î‘[¢.LÆ‚u ªì“!`”¢_Ç9jã€yYÊ>ôhÏ)L ïCzD xNZÎñ©2°ÒWÒ1ïÂFiZÜT69ˆ.Š¢Xî;qPéH†‘[†R”Jx[—PQ¥“ŽF· ¶›úáÃ73Pwòf…+¦#³YšλÛ{Œ¶O¤ælg†è•¹¯uãg$öûo›TõNÞÙì$Êhí)ІI4ľêŠýä)9¥žÅÌ|Ee2Azê©[@ò œ¹¦†ÑFT<ãGí„r ¢YdéTCB}ZgÓ¯üWrøn[|G:>Y€Ú ÏH+*-4 Šcìw(5ºÌ`?¡¢˜»+<וâ‹äƒ ó"Ód±ž¼ ÿ‘™‰,,ŽÊK–DR2Ùdƒ×7貜ñÊ#›$)ã.ÒøÐKbÑeö7èçŽ$W4NìÎí7b;§:˜Tââ…~‹Ñ >È[è¨ ŠRΔ`¹$–ä£Ðo€ª‚Ökµ[àZ¿³ZHyôÇCñ R_’̹àzý‘£ }-}&cdP³šâ$Ú®Ö%€ݼ\ Xn0>Z+NýØDGA†5û Yî8A+ c<4ÉÔÐ*êÂiÄŒ—L+Ðö·IßQŽJ2éãâþHkƇY•Î>þøÙW®[âÛh΄ã»ÊN•S|•Σ[|ÑN²K,ƒäüL# Õ\¡mî…TÂÇZ›Ý ¾¦œú¿-”ÒwJ㣅Ò/üEåIŸÞeÞêÅ»§Fq3¼Áž¨8Ù´{”G)6hŽê)ÅŽRVŠM^¢þòУ:+猈ڭû!3Pi—â˜)¢j!Šèc¨ˆª7ØÇ”Üà­ë èÄñœsEä-1Ã9¹x÷i-0¿/ç"Båã íbs)Sç E;¡ Ú|S% Ñª6b–"ª^‘ô,N‡y‘Ÿ\éã°—\G68.ƒ,9\}aˆý¥gä#(r—[ë\7E䯥FeñR`'ð!sa‘Èã‡üô¸ÐŠað’}ß™Ò÷áûcð;ªÑñÉjô÷­a_Û¸æ’K‹èu—g†ÞDx½=CÞpBN»ùðúv„¬šG¡×°—{`7p¶Ëw’oQ5„=¥l×$zà?ã¿Í$úaxE¼G"ðwsêyKB—Óî£#ÐC${t„OB÷Œ¤¶ç¾K«£«—5ü ü[F¼u΀ÇüE6#ô|/·éŒí¼~s7"F¤ÎO8ûCOžÔ0[V7¾/ ÿP/ ø¢SéîÀ€Ñ#Ë­ƒf‚ÿtcÁ»u%Ù«õ°¿<Éø§èL4;¥å¨>ßèÏ·'Gõ9?Y}êÓrIÒqTî­®D¹-£Õ‰) 8Õ«» èži¬Zvt,MAÕ‰ %ŒTÃ@Ø«€j=´nAÔþ*y‚®„¡õ´ù@êD„d`Ô¼ð¾'QÆ4¨Ú„Pg"f –5u;ø4RÒó Ó³I IÀ´/;Xû~6ÝÿÈÝ¡ šÖ/—v€éªQ'0= ñ¯0.]™ YŽ&ÿO]ÃÑøÒh´ól¸l}Ò‹°>Íôç´–¡áh ¬vé«’_=íÕ;†Ž0÷¶ÄÌßQbÎO–˜¿NŠå™NÁX»âdù Å"ðò_5­ÿ(Ùòú¯Ñš7€Z£œv «5¡Ž¸€¶AnzŒÀðªwA3ÄW½ ^ƒpÚ+0Âá}Ð !NïOÔñ®lÏHÙÓH5>™´‚³’´œ;Å àÍæÐü,Þ 9°Ñå­pÓê­ÐW]Þ )P×rÖ;÷’pÙá ‘ ÛöäÍ0Ø-w3÷íw3ö çâ5éî†$$ìnaÎí¼ôÿtK|Gù8?Z>2ÃÖ=L‹oy SPb:÷ݲ˜cÌ=tIÚͬt†Ì‘‚X"­3IAF¬<™K|Iàn,ßbéGÎŽ[ˆ0Çý°±?£I’?9vÙ´ýú=`4^€Žš| Ûá—NÉñ”Ù„ô–ʤ†-ý„ÁÉÎŽÁ}‘Q¯à^*É ßA½=wBíK\¬ªÀ%EXP€U£‡³Må{Ñ[AáÉ!~áHvBLÕqâ%Ѿå+œ”Òô’5rÑù¨B!m“@š…V~ƒoï6Íwéóóõs¡ÔØ « üìJc'N‚ð‡+]+v3ÇThì #F¾½šñÀ ßF5†2–*2²1ü5F6†JŒj ?*ŒþŒ #ï.0ö[–iSm±3§áU´|ÿ ¿½y'k‚𳊋ý‚Ÿ\[4øÙ¥E3~•Å0|Ÿ\X¼ß»A%Åvÿ,—ÍØ}vEÑ ÛǨÊO…ÜW×ÍÀ}vIQ ÜWÙÀ}wAьۻ–ÈFíeIM¶*оý¿ÛßQpÏJ4‘ËdÏõHø âÇ)¦$–ÆxèAažTcÄÆ$ÆdÞŽ¡\¤¤I³ÇÎLzL†²ûˆkp&ľC¹ãSô“R‡ôkór ï›i|y%ž“ôk3ó–«`8HPäöDí-\4æD:žÏpbZ¬IþVT7j*z ì‚êé2 )ç ÅY!UXËÿÊÞì˜ò•÷údå Ê}\Ef€{Ÿ“ÁèaûäšÔÆoÃ߈Íë Q£‡Ü«ý…b h¥qá¾õe(á Nhz[œr-¦¹fŸ±°ˆ³;HZwC£Ü~É)er—«Öf‚6€P=ä×tË V>óÝÍ¥ï2!ùî$!6Î{Aëü—Åxx²¯ˆ6._K\yoΦYïÌ””¶®_²†Œ™Æ§Æ½5µ(û[†½=h×^lÁ²F9:šlÁFòщFyºëðé’h”b–§xÅâ”˲Œ˜X®8à’deÀª°Ø6¬®{@ Z=™Ö-“½q¾£l_¥&ÿ‚Â+ee©‘¼J‹¤äv‡U–—΋&¥%a£üx‡I>¯NŸ«§% «ô:ˆ>ܵG Þ5L­2tDj»¹í$ðšµn.p•ä R ¦UÞ¦Ó#=š8d)ÖED4aÐãçW¡‘åu*"ê®ik?Ç®7‚C®Hô*ü¦¦‰ ‡LõD´Iô+„&«N ¥†e¥•R¨9¬à©ÔjòGe§¸ëòG]Ï)ÕŠô,D7V9—¥g‘‹Ë;èÇèYL¾°ðÚÿ´ýiÏ(­qA¯rÒþ©ó–›UUÊUs“¿ÏÐw;ç;ªûõÉêþ×9ƒ4¬ÇóÆŽ6“šOÅ]^…кˆÐlÍ1(©ÃØîÉmÜñ.Ôs{ø¯0[Öy¬ ‡ ¤Ð¨VŽ¿@ÑØê¿À, ÍX©¦iÝY›Ê®'[Ê,Ë—‘ñÉ'¢ZÝLæ½OPñß ÈbêGè ˾‚¡]á¬K6‡3ÑØ†ÈÊâdªéó±ÓTjù a!•­6Œ‘*~Ã1žžBöHÆ!Á†bP–YU\³d/IÀÍ(¤fŸéרr>”ª®cd=9"VtWä‹»í–QüŠÙÚµ©ÿ%=ˆXŒ¼0´ý÷+`þ–ãpà/’ &ŸHÏ.Ëñr¾,©Ù–Б(RªÇ0þÅ@üJê8¼šìãໂ¿`ùÏŠÃ/‹[îÑøWyûnÇ|°>Ú{—æ¬ÚWUš±KýÇJ7¨ mLJƒié ìðy„IªvWÕi¥= ‰ÑoÅeK½5=ÜUÈ?Ç®5 ä?î#ªi¿n§HVB+û¸§Š!. Ϊ( ÑŠRCŽ‹¢ ®3MÁEë¿eMfRÏÈó.ËS“>ÊâfÅ5UÀ¨½_h@Êø°ÙØÁ;àtö;WÀwME¡ƒ¯G&'3Ç%#`UƒóÎ9ålÉ^ilûÂÍ)sR@÷´à€%Ș%V0î*9‡™T9L;S_½ OžmÁ"ÑšFzÀuq_{tÈÚ[œ¬~CÕ?÷"ýxƒ¥ª³eCUˆfÁÙÌQ¥òzL,a\îë§»ñ&Ç ÍP)n„8¸F<à 6í)5œŽÊþ¢Gë’žŒš0”Q´(¤…àúœ&í8f„Y” BÐ`¤8º6sDñn ò ]áQ}HšRð¬ÆdKaRßÜâÓ¦«ènêá¾.f—„Ŧ¨=Ä=“@ES›/“©éS˜ƒ„Ïx|Žº éò±!««ßH;­DgC©[T’˜w-rÛô<×l¶I‚ž@›N‘f@óŸÓ*brE?ªj&%Ý9@ú$°Ä üæ Hn‹²ÎÑ­»~“ïöÍ7ý{ß|²è—~ŸvIÖ㬠OL· ¨FqY4#ж‡÷ÚäÊ\4´òȈÌ`ðm ± ÀÕÍg€ï@\5ò3êÊ]eÓ¿"iz@Ýb§ä}$ÑoQïž—§œmŒŠ9~† ß\-è€Ù; ²CjûŸ‡Å?zúÉ™ ‰Ü5w/‘€ F ApB¹¦RSÃÍ‹K˜ð!  ¥J2)¢ ¬ŽKb=ý ôKŠ!°Ð ÐßÓ¼:ªAXjsøcdƉžðD·ÆoJ¶Q{Ààà¢Ö +‡QûAËå0 æÍbkÞn§5ÑÞ³§I~Ÿ ï6Î7Ôü{ã|²æwýâÙúÅÂ! ¸«žñœ=¼Ã¥‚&‘ŸU©£Ô¨ÿO±ÂÄÜ0oQûdio2c‰O SÌPÀE´.ÿÉ,®wõ!æ –X©ßüæ¬)¿d)uVü9|髲¾`N—>j×W[šë%™Ê~Žªò(ÉøZV3Ê¡éç(8i4ÙÜ+fS¥øD” 4zªß$¥‘`q˜Ï!Æ/Ç”F ·z¬p0ä’¹ÆÂRFêi=„Æçª¼O!štV±ô“?é§ájê™!»È.E¬I¬d©§ðê_§ÿÇqÏoùë7Tý{×|´êÿõq!@¦éžýDå(ÕqrÝiw•ꇱ—­S¨¹›0ÀÂ@Ь=›hÍ´ûrM¹FáE¢‹½‡kxž÷f./ù%íÝøw’¶ØÞEàüšënÿ"û™ÇC5ZO:«ãc­sÄÃï[ÙÑ'P|¯TR'”sA üÖVœbÓÎo#9d´Q…Z-Á.<_ƒ5E¿·c@·s†¾MÔÚw é£|€_ý¥çºÁ鱯 OCd•y³Lõf$¡»?II ’^F$¡@h­§$QÏD2Z‘¦¡©‘è{¢ËÀÝ“9PVïñç“#Ñ;™‘S)‡¢Ý9U±O÷Sþ‘‡AzÉé•§Qý¼²8ÑÁn¢‡Eºª)%‚¶ðS¡qE»Ò+‘\7@$šzX£ÇXŠrQŠ›Ò_¹ª„zo:‹O|ÖxM¤»3,x#žv,¿ÉòÌjÕœDÚ¯˜ø._É6=éZþ‘Œÿ¬¿Û2ß ¤O‚nÿ¦(íxO¥˜Å¨Ñ—*É.F ù+ûKNOxé"ü]Ž”þ üÔ€mâj1ú/h§ŠT{è§üÎ:Þí™ïÀÒçþ?Y|ÁWËvBØ Qeú_È JÙ¶§xƒ”:s2í ¤.Τ‘Z„2H10D‹Mœ¿2ØMA› Y‚-jÀí6CSð>„¬¹‚ü@–©¹Kà^?ÀÛ#01ÈAlD¿®`3~‚â°05.’.+QÃnŒ#kV˨œÂ ¶-ÌŽM _~£5?¦Dåf<ÃüÂiB WøR H„"¡!G®î ’šz6`©5WòbcH%áÂdÊí…†f¹Âé¥Uº°ïÈ=ßîŠï¨÷ÓG)ü¢2Ο2Ü2VßV˜ üüC>®”$DU:‚ôö®)Í•´ vfBÁÀ‚T'a?f(9 ‰0Õ˜ÿP/¢þHNiE«¢æŒòSµE›ƒ(ÓºQd?˜4†é6I#,4‹ÔEÙ>ÊÕdÙé;·‘ޏ“D Š.MýÉZKÑÄI„)»ËÃÑ`û[5h°Ow#éÑÿRp S‰ê¨ÃQƵŠ_™&ÔLTÜ¡‚XÓý‰©‰…·J¼ÔT óXµ›h!/¢›HœgUzXjŸíÊ@~‰æÖ_"1ÿûø{·+¾£žOïäÿcWÐÉ{¡ÏtòÛ*ê|" —¨¿\Rßu¿ºÇ.Mšr{=ÚEu®&Üë¥ÕÄÏ?ð>D"ð|9Çjªïoÿ8n»øûW‹E,FûÊF÷þ§Vilºy?-95ï÷ï¶«=áî}çGD÷~çhVè¸Ð¾Ê8ó©1ªaÞ¢}?ee«~ýCù4ð‰»KýûòÃÖi¤Ó¿ïüHw1ýû(µÇ€À]!ŠÎnáï0ÙÇW-üFÈ”£[øù;üùÔÂ?’[ÑÂÏ„=K7ñ-©¾-Õûw”êù£M|@§ýi k’Æ´Ü8_…UÙÆ¦ÈIÔ ÈU„³©È"¼_‰À[»gœN…O;KŠ.ã]ÈúÛ+y2üµ´`²üZ±Zàøß!Ìûn!ðB?ü‘,Ò4“f\:5KWÛ)ù©èùsw»œ? FòoÌ©±6ÿ£±Åzs™¬'7kѾ øèaùÌ¿âÑ =!n¹Í á’:çP8ŒäLTÏ3î³”¥Ï ª¯ÛF¼Ê€ÊDø1Èmº-ÂRÖýèl™ þ—-‰"Œy[•¾×ÿç®øŽj<V±í/"?Oë@Ø÷›JÔî›þ&²ÂŒ|ß“”»øH|‰R—HÚU™0ôr-Ÿ*ûßi3à× ®è±‚ƒ{ëé±¾ÚÈø9Vß`Æo¬ks"ä•»ì³Ä²V¨ã_‹~2HØ‚4ïmÑùÑ£“m!ƒ‡µöØVšQÔtpl:Fãéö½5ÎGÂ~­„9öëãaÈ^¯-:€Ç8Û‚³ 1;ÙR½§ÎC-ݳd4Ëåù a3×8…¤¨˜uÄU¤é¬þˆ¹šîé&gžûÊÿ8þÞm‹ï(¸óGI÷‚'² ±èÅp©¶ܘ.äýx¢Ì[ŽTÍØIv…x€•äúqî²\]ÆD‡ ™éòó 7Íj `§¹|-Æ~µh6Á”Q +ßÀQw]\Wj®šgÀNQSÛÏâ>˽ÆÀÕtY^Úª®ÙòÕ]ÐWcÌ•M ã 5“s<ªUC% 7ã#ú3Ê hHÆì²‘ˆ¨Þ4N‘ó £$8qÄp©(ã#-àÆO>è”ÿw}Ñ¿£êÎí²ÿQ¸û io—ù´g“Ĕջ…”(dêvvƒì¥¾/ì< ß¶ð£Ñtw!æáóöÇ/eú¸ï\~lâäÆtÚ#Gn[ן%õ4µ—ÚüÔ•ûž‘—¢Ûáûäÿ¯A/C­rƒžÍMœÊôúê´ïK¦pôâ÷yêéælL–s¿¸Ï9®¡|wù÷Áëº9•ÇÄêC`§UnVÀØ|ýÀ¢D2à'ˆú™‚Àoè ´ðÈ÷4ç)úÂΡ”`‰Ú@±€ØŸy;Û—I1)w BT“åi{'|Ga?Ú(O’ÆÖ‡UÝ8MúÓíªòW÷\§>üä†lOúbŠ[¶ûÛç;[·¡Ûe–âvïÒw}šÁKk!¦rÕ.Z+ÃÍä¥eԢќµÄF´¢—–_FuÕÒlÑÆÖ²mÑ㮬è ð©_ÜoÚ èw1¦.ÕaÏÚFêw b°ÁRtç‡6߈ÞýÔÆìÑÙŸÚ´Ë}©lí=L ¨É{>F í!èS¡¹`ų̀Á=>Q<3lÒ4­‡`.LF3ˆ ÅUý}ÿYûã;ŠçòÉâùïƒ"+×ç É¢Y5QT›uà¹ídºJ„F,¸õã V¹ãW+248Ù+Êìºùc3 1„P£¸y‰¿%ãs?M¥›ÚWˆž2‚øWŠäêD ì? Î Ѽð€Uú)Ž‚o¨€‹@dÄùSDôÓË‹²¸~ð«&4‚èÊüÄtGžVc‘!Ñ“‚)Éó2–l%QC›eY~Šˆâaò”ºÛDÒäÓs(™°8yýeSÃÈÈŸ…× ácj(ïý)⨢üVh|G-\>ß™¾y !œ€è¡1fD„R{Ê™–”0læ¤) ÂMˆÖ¨ðoOHËh\à8óÓU¦Ûb¼é¥UÊcëI!ŸªÀ÷ýÒSCšgF[&³÷S#Ü´ ëg…š^%×¼·Æ Õ(”îÃÍ‚¸TÐéÑL`X¼ƒÿš½Á,yɧA´XJI[ žwvD’,ua>œ~MŽªpñ(ë¸krVƒÚ#qŸ ´†h  hdµXš&á™ÊUÿ…'ï’&Rwf)>RïfhŠ^+¾›ÅÂÔ[®‹ƒìÛqÄøs=Ï¿ÍzÆwTÂ壕°>­yáÎÖÚc"æ|Ü10“ãËè1PÓâ»*1pÓâ«,1“Sâ›îžÙë.;Ö“c¥œ±Ÿ‹iÄXP,µ35Ôb%fA}ÐBõr›^Ç=æ’ºW¹žÂblŠe†F›¼m¤:>%o#:Äél~6YLN¥Ø-¦«RlPk'b»çý[c8ëìÃj±b põ8΀W‹"ÇX!5æÃÊ9`Rt×uüè 2bæÃ)æÏJœ\g>-8*:ÜjL°ÅÑR’œ8¿8;ïöÌw”Èå£%²b-n]óÇò¹‘§ yÎm-þÙ:7¹Èi3.ùéþšsÓÚn~ Ò¿HE+F\SVáõ+ÞÜRÒQ‚T×NB"ÊÝ8É „¼žN"#¶ž"Æ­á\ЉÖ0Ï/Ÿ `-'wZÏs^¥å$&a‹¼Ë<é”,8ˆÓµÅ¢Tny‘Çr0Î`=òÃnZdUæ8Ì™¬YYåѬ°Y•u(—5)!mAȤRƒó+¶æR»~Õwï–øwÃå£ÎaÉ^Ó£—„µkÞ¸àM(ÏŠêñc©õÌæÑ䢨å\vˆT“Æš³”|äÖÐs²°Ï£°—p!Jb§zb:Kæ{MÍTw…u¯.–²T}3šÇÆ…“%3- EtÑ î69”f\öœwR¸ïO‡û—ž$„·Î‰*‘¤š§Ì»…:3èE!8ê8"=Z°1Áž³ú<ឥ7DëÎða$†QÌÈ?SDrWÕ}UŒö‰çìy?T¾ÍcøØ&! Jcú]rE]õvSW¦ZÎËSþ”î’/âïÖÐß©À›-2¿£f®Ÿª™ÜU°!÷cšÃ*áM s´rŠÂã¸Ñ3‚íTñ…>Ñ#òSí%A©ú™Õ^z½ô³W±šPþý#®¡ … ];úW –f;îãݯªºšÚbEaž™Ü–;j!†Ev„””e ðEB£®\VJ=;EìK%9]!ŽÚ}þÓ½™Õ Ô?²©Ó Va•Tþj$UíUD;u“B¸^êEf…Éž­2Ÿ”ÉwqÓa²›œE!TCµ@“ÂgOSv$¿OÁwâ;êëúY 8ZêÌÏø,›{÷5>éâÆ~Šï¡ºí¿î·¤‡Í”y¿a V|ÿùÐ Î’`•ˆPc e3æ]aAgðú&;¬»:ƒ q–n%¼°[°(ΪŠÅÙÙ¬‹µæÙ8biŒ»«Äáwωá1ó¦—wk°CÎ^w¤Þ.fI¿›_ …a›⦔{’ˆ¹Òï9#^Ë=„Äy©¯#ê‘+É=ÀLø¾Ç[ŸïuâÅøßïŠï(°ëç ì GøÒíæë帓§ùz5®ìbÂÞº7zö|áaïäýöœ.Löbi:¡_¯DÊÑ~0ØU6RÌÖ[ Š[/E*“L×+‘èóõV¤AÝ|½æ$©ü“®w²¨jF¶ó¬fº^¿Yt½)Z3[¯ßNl½éÝ2[/ßäOt½©á2]/¸HE×[‘^6ÓõêM>qó¹‰iõNÚ*²ÞŒœ6™¬·"ám"ëéšÈr<Yï\‡~ï6ÅwTÐõó£Üƒdã‰>%˜Î° =Lå,£9PÎ"v?ü§0øÈ–Hov¾N[T=Û¹Ï襰dåB+ 'I”…÷¨¸¥¢l‰—*ÓŽ©>NÝ€UÈE@wv…zs³¶î­:ºã }…SÓå]+w±pµáGûZÁŒAý\ÐÍI˜Q€ 5¼Wú0fLßX¼/5…æ Ñá-E6­MròYÆkYù¢žÖp<ú™ZÏB²Ç‘YKj,V˜IŠL"”Þ<±ž²dá‹>õôhr·Ëæå–¸ìaÇtƒ˜8ç!¿À,ŸWÑXÔ»ñwý¨VûÎ/¥ÏÒ¼bœ %Öj5Œålº¢=ؾÕ/£ƒD ²&⸬æ#•PJãXâbF˜¥ýœ Ÿrt2$G@&8b“Ú8Ñd}µ&Ù(@.ˆ¬\a°øO±\£‹¢þUݹ‚áaQ#/L›sÌ^¶,=&©aNu éÁD™A˜žiÇ5›%ž!f¢®ó«EØ ª²’£z§B/¸©˜É!;Jš.Ölæ*B@ ´'‹{inаàs yY5Dý ü˜”¢Hj…ª¦ªŠJRtµGÿ>øÞlŠõ%vûüøu|ZV£åüYÒ<#R¹Š¸´a D˜ó!KK+ MMa*&€.á‡è‚ë«?Cö{ýícO‹# o¤Çˇ´—gº‘§ÐÊt¹lrÁ²$d^Gk6 å\þ]ñ#ÈŒ°¶xUÕ€¢³z?X07¯uv ð)zX±ŸÁVµÛ² Vmô¤y3Bn”Ø©À²þÓÑ“Ï÷ ۇ〠ÝsJx’\v–ù·à_Ÿ/ÉŠ¼5ûô‹qÆ9gÃzI²ÚGËÈŦ±†Úë:ùÞ^ë;jìöQɵ¿/UXjÌÄ w -Š2Í2‹Ð¶„JæBƺ·p|î# þ!¡˜©jFjpg=R¬˜›AŒN¦™eJhýFm¦Ö=š¶U.Å*¡_¢;;4æ,‚⺠[SØÆPå™MßËI…èéˉ¤i<b”Ø~”çK™!Ýñšˆ‚ 5.|»r‹v©›*D¼‚x‰Qȧƒw•…o*uú|uY ª–þ#‡øaÃF7†¦º î¡ôF‹—æÛü±™ƒ¨Œ ]vDèÖ2&ƒ%Ñ]$ªrAáée´s@¿p²Ÿ0¼“ùV?}}G}Ý>ª¥ö÷ùAèÔ¨£ÿôßíd7¥=DÛ ë$Eu¹=GȾªH “Ž’"yˆÎ–XE>EÕ2âžaÈÔ0+û¥JhŒ›ú;ŒYê*@TI¨úw½”­¯yE¥FÓõÇfÁÒe—)ã”r°•xac´›­6[8;—„Y/åL^Yi7n¯Rÿ× øn_|G¹Ý?ÚÓþ´cXQ=WÃzš]4:=×8úŇø@-„ðº^X" Ð3/Òˆ„Ù¥#° ÿ88¥EU’ɰ%¥ÃÁ9G¹éÒl&sÄ IÓ§>E·¢¥ ®5öôê—~ätËŠFB»ŸS¾/fBv—¦Gƒ;°oߙ弘0:‚~W]ËNYÚ›õºû@i†PSµIG|FàÕŒ´By 0»K»ßH÷T˜W¿8xÏ××Ö³†H†Î_Í{qÞlŠôÅöøh±­~J¹h©!ª`¤ÝR‹É¬½T¤À•ŸN+Gsw㟺d½Ó£…9 \¥®„Os°EO‹7ÉKìô€¹R=ýa˜µjê29#šˆ¸ßÔ~Ï·ïlÊmt¥õèRsxW5?æpÇ˪¥´ºÔEB®)Íhˆ3I7¢[.íVZcî¥×+~vÝ3ÚðRÊ™·I¯¿µH÷iãKGÎê4úÑ&µ—mª KŽ€´tPâ0@!ßÕ"ÃSEù‘íJ+H Ùœs5^Õø!lï݆øŽ2{|´ÌÖé‘ΆÐñ‚$¾Ø¥>|´æ¡°êh*WWç–Ôy±hð©6ãC‰#Ï¡ W›Ì¸Ë‹§SϦ¦÷<*΄ûþPËê$FL[C>¦%ó{ŽpKEI€^¿:Ó=üE ÿ¸ü#rCÝR©P»R·‹CÈ|#Ä‹‘+hq3U©T­sm5…ýu©¥ Œqåé„_º¯D=Y‹+Sc7¨ Uÿ"Åê¶ÕoªjŽ»˜°æ¸¨ýËÿ¸Å“H†¾ãý§ù(¬ó®]]ü÷›á;Jìñ¿â æOËÐy>O·Ióý°ÕDõ7S¢ÅÚî÷¤þk½ß¢º³ã~ÇÓc0±ôÒ3ìµ@Ôû±~ÔöJ«§gœïÂSGùµ,£ß|­ºÑÍKzF¯ºï×u7ûl µ»ö½ð|v”åën7µÑ½35üšì7‰ØóíÀËÑ;\÷ÊUító^‹†Ê]ÝýéÓaºõ¿|rØåBþC2È1i`ÝCG”‚é#©áÀ á@Ãb#$Ÿf‘þuÿ¿ÛßQYÏóħoÒq •ºkóe[ê&žAÅì¾§ç¡ir…‹ ޥ͢ >_†§nÿüÏáÜ Î-1D—³‡ÒêübÁ49ûH¦Ÿ¦äÜd75;siÁ\mÎkzÐZ—’V¸H¯Ã)Ñaäf;Ê™Rg‡“ª`Õ.ç[98·‘µ`䮓«™¯;œÉ™·;Ë ¦ïpø*pw†8ƒ+9d &ñ:¦yÆ–Ê—#ß´Ã3ÙiP”ëI]M`nNl[Л-«ŸŽAà?³€wÛâ; ëñÑÂZ,@™@Ì™ƒ|OÔáá@ÌÇ©P%kŸˆ…)B¿Ý#Xz¢û”¡¢«êå ø1(€{RK[¯«Ž­Ü&Pñ°Á |85Š / •‘Ì)XÔI1Í0< [>R€ÄæÅóz4±Pc:¹ŠóÒ8[,~29ê5_!ÁÉÞò‹~‰Ì£iÙF67 i<íŽu¤)aÌ3ô”F_w$$Í;Ús†F}«wªZÇXwæ$°Þ“úî¸J²¿GY’á$¹ì@Ê€Ñcå\P}ovDþŽªz~¶…ýWgÓ¬JÉ Œœ‚2ób%ø˜Y2IÙ!eC–z˜™œC¡@Äó,È-i^F,ÐLØBUÕóÐÿ:ûÞí‹ï(®çG5ÏH[ ¸ÁIØÝ•”cõäPôG le#*ÚEmœÎ*arW–ÙxBÏ¢++ eweç!䑵ÓÔ%âÀ¯fŽq:ÂDXÓE¿˜}£h&£ÇŒp[´š S]îC+B9É=j½.ãžÉ=ìî_À1)šÜwæm¹NØ’Ì(4G¢TmFóœ¨ó"Õr´3µÝ“B 5åË}å1ܵ¯ŠæÓN__!7ݤLÂî9Øx—$¤" øÉ—É~`y¢4‡ÁC÷uùâh×å·lþŽ{~VüÛ,Àp™'dèÌ4¢eU¼!`Ö B‹âq:¡z­¼iH½3È îRŠØ,ÕmêO‘êf55±Ó§_ÚP‰RG¤¢i)TóL9"Ä«E|¤$eT’g±•,”š_\&¿²j³ºB:âC9\ЛšúÃ(«2 \*Bqº`Zeë®ÖuxX„£Š²…¢áb‚U~^ÿÓr(^„²‘²˶~AÁ³W-™¬¸eMÇs1Ïj8~J¸ŸêO¬µóÂ~ï¶ÅwÔÚó£¤ñø´ÔÛL÷óT÷3ßO[½ÑßEsç´ÞoªYÆà|꺞ï¸yäÑ_ÿp¿ö¯õ¡†n”Ýñ-w}Ñ nó®>õŠË]›ê$Ÿ•+eq¯µ®«»Ð)Výpú¼¶÷…ºØåîœèsŸ}¥.xŠ]§†yƒi{Rýó;¶¸»žî~Vï½Ý½ÞÍ;yÓ­ûtÏ 5÷Ë=MÔú/÷¬1 œƒH¬{H‰R0ãK&Ô8ßÚ¡#üó ô»ñÕöü¸0ø«S‚°µš9úÝ•\ w•÷â÷'fÿG}h%ñœ\;¦;8ÀO‹”k¸òL1z]›¶Lpå:bj!ÊÚygTôöxÈ.‰gŒC×ËéÌJD1­WŽa •Û9Æ-ºëñt‡1T­çÕˆZ¾Ý9Uú+¦<ºq€vg@„”˜éÆbOÆ ‰P†3eÒŒC¬;ƒ(…çS`¤;»ð†'[j`gì%pÅ\ÔD/,Öøü”å;JîõÑá쿓Γ•B"˯”ŠY9éìòØÀIu—HÌ7æûxeÉËZ«‘C‹õöW’-Z\»Y¸ˆsýæè¢Õ›Àù“-®³{ÈÝÜ_|½[ˆÌw«˜~÷e©*ļU‡˜‚·"E¹<õŠ8†ãV3b ö[눟XO!$òbºUÌÆ£Vë2JÌÇvë,q#ó­ÂÄœ·F¯²Ü ®EË;ê;q2sTɌ͵á4óÈóÿ•¼ÛßQk¯ÖÚKYÆ.ÖY dÃó,ùàžv)Ñ,LI†Lú” @åŒÑèØ=/åè“Èx§²™wP'«à!ž|ÐøTcAë )jw<(`¤3<$éïñ¢€¡bþ(‡Î1ÃIC VÁ¥a„«ÇXÓ:ø×z28æ(#g)¦¥²Qµ3Z458°›&®¸VfŒ y+`»3­ Þ™åä÷šô xæÀê =%–˜è}ñWùn_|G½½>ênýo_UˆC¦ ÷"ƒÜmaÁC.¾/O²åa­÷[aÊË€Y±á¦¼íÑ£À”Øð²ß èK˜¢ÁÜp!Û†½xUÓÍ–÷nòÄPÂtf†KbÚj8íÂäðæP½T©¸ÉjwIÀ€ «]`4HS~ááÑiö†§£yî©H}o]©¼5ÐñÖÕ?˵=fºøš°£ñ9FÒdè—ñ%ÂL·ÊlxbË‹HþpÖFyC¿Ðö©ƒy¸&¨²ªÜÃÙUòç²(Y{³ðTʦ—ÞX½l›CÂ'œf ‡VXî-ûª‹Ò)a¿‰Fµ„LŒUøòsçb«ð9õ»I¿[…j q™2 ŸáR€E늉§'R´?r SÐ?×ná£O8òGôE3Q]£74ðÊãÎ,ŠzYÏÞµGBÏÏ.zðïKO¥A|hpÓá!]"§ŸQô»òsÂöà]¯Ubj§7=yö L#ÄÌã]e+ªæ%Ë|á‘^ªèÒþÕàÔA¯îþW©ƒ¡{Á‘yݽ‡&§x%á4¥›;%šß“W‘B“Ó{÷3ÁÖ@_€‹7y&fþ§#då;0•õQ sX‰"Å'7|’ Œ…ó)ŽSP!ëd‡MxïŰÇR„ô¡úèIáÂTp}¸@ùç’l›_¹<Íz¼ ²‰ïd¾IT"&e\à4Ï¢–ñßÁƒ›èÖeñ„çÀ35çCíG(MEy«ÅK/Ùë ôÊ©MCìÑxÎ`»S˜N…3.++Ê“,Et…ÙQÑ| zI‰„‡\?K6휄î5éû1‡%MqFT™dòF„p"³È’ä­&ŠE,¾C‰ò°Z9r(ZMVЈ<%N“½ÑI ÷ sÊ1{3ñó sÀîr[(Ù~2Þði*ïûER¸Õy4áÜ÷@fêÜX¼tgêi‡]®W8·òña 7%°)›Pò¢¬QÀZÃx'7OW_RÂõ¨£±Ï²?‰lÆý„öe3жDüì…:ˆðÊñjR/%O›¼bo]³Ì–0„}òt昼6fùn³´ü@ýŸêÎt7Š#ŠÂ¯2"¿|Cuwu-ˆ<R^Á1$Xa“màés¾S3ž±Ç ø‘AÀtÙ=K÷©»ß{НËì$OIƒ<ÛPÀ¾˜m{‘Na^)Zû@V'9=«÷4l¨ƒ<ù§i;8Š¥Ö¼B÷A*^·³RÍ*>jÉtA|»®®mp²2¹ySXÙ\ø7PÊ´¡Í jÖô”Ã:1E¢ÐuKù|Ó¢yHþ?âgýWÆÏ(j¯ž7 kÕ=„€Y¸ LLJµ¶Œ ÃñÁ€ià° LŽb.>f#°#Ó2B¿eÈ@¦à¯×°ëÝc‰RUìD¿ÙjKÊAS^½Øü!Àмejmr¯ÐO–…ŽÞBãêèÃÚa4ï­æÝfxõäÁæ¸ð¼{ëÎ<\–¨sç½â’¶Ñ,i,z©:…z€é–Òx\ù—D¡N¯ÞË(º92´ËSc,vØ›v@3èô£«×ãÔñ|‘ yzð¹õÞm¢±OÜ]*°Ï6aï‘ñX13âAb:ª+*¦¸ë¸£;¡ˆ€H†„ã´¡&gmu­b€[HM‚3rs+½zÝfv‘{×6$Ö%ŸÀ21› ÌË#- #kVB&p•mT7áá|©œD¢ä#'·u‚5:VÿfÞ¯|½}KuÍ%€“¥KÀ¶ÝýÜ1yXZQ^@L.C\Ëtx/?¼:ÿ¨¿º!¯^_}ùøZÛòŒÇá‡xÿï¥6÷ëçgÞk›_}¸ˆ³OŸO¯>]èî§k|¼xöÏöÉ!LÎÞž þxâÍñŸ:,©/Q÷ŸåHJé6ùñCHý–üø>4iÛhû·0šÌÛäƒò ¥iÎ6ÉÄ2+ 9Ö‘k–éŒ%OõŒ>vûf– ÖÓž^Í££Ó¤»›¨fˆÂp%ÈhB(¨C G!a:Õˆ;`¹á@›d"åV?q½D´f)ŒöI'3¶€äPiO¹šeW^‚D[š°•.Í´u¹Ð“†ÄºÑYrˆèC8ê{Ò½á¨[éö‘Ða@êSz4Ä Ù2<߉‚òppc®P²Pלõ„T´3(Y•&dæePR½ô”÷DÕw8°C<Ï<¼¥U…‘dóÊ‹Ôô~ñÔ]ãæ._òçrâã CÒ¯1VšýB¥¼4†lX¼¡í"¨6*èʽ¼ìozçoý××@ø¸ XYc÷Öµ„Œ–ÆT+²¹?b…sÀ(ØÂ@DbMÀ#­RÐYA}qÊ0¦ÙœÉJyݥɋµ,ò:Ž K¢öQ™’Ôfñ¯I1â€Ò^«¼cɽÒ(©v LÓÀ_P“ £¨OU{žËÁʽ¸Ú7Ûî®IÚàʉ—í°šE6%û¸¥tœì»^~W;F2,­€yªmÑýú€ÐÊúX²R~@je2ùO¾W|Þ…p™Iò×-ÄéY 'AáT› „C³ë}XÃËŸ\cyHÇ߆²3.Ì|£Ó)SÌœ$EJ,y§u0tã­yÔeht†™[ÈA±Lü ØVd4,cºÉ¶¨s–‰gêµ>“3LÌÙ¨ìEp ¹,î#÷Xþm˜“¾ª µ?ãR'9M$>x ÌÁܘ"ý{žq0Ƕ£Ö~·âÎ2!þ$ µRfˆÒ&Å^5­*3>¸ÔIé_Œîµ™qÑÒ^<Ût%œ.ñL®pÃe“G.Áž”,%5¬AoËTõK+^ÞäWO•í½_¡é}êdûïÀiš~®~V¿ýíÇ÷a¨@# =‰®kG$Q8hBMÞBÈ6ÆzÀ6Ù=üBÎBÆ«ÑëÖ³¯y…h‹jØy—~Îú—ب®&¢‹Z^ˆšíÖÙnYr$É.ó¶îw•øjYïdšÞ…ͶJß!ftÕÉJÀæ ܱHsš¡Oµûí©3›éëa r“6mž¨€‘„q | >{+ûg}j— l©÷•uЏóY2G((ÇëEÙÙH6T{&H ëÑ&(ljXØQ¢ Cš¦áë52#ÚÆ²®q!556—+“1‹kMeç<¹ ŠšÈŸƒŠ´^3Ÿ²d›¾o3PgvJµ4Nsr1&2{aAhg¤6¦^E^¸3a4ã¶@IÂÀ ¸åCœ s£Ë6ûºy¹1Gt­”„³a´5dt UЄ Új ÉöÒ·ÁVÖš$f“‰¬NhЉ†'Ág®µv¬´ Ùe{BŒ3î²q*x‡éqéßgGn>2üôíµ(ïSÛ‰è}«lËtäèÿõéêêÈÏw.õµ[õÁÛsý÷<ïÖnoïxuzùæôââô˽¡„V”&üK»Ôò-™´€úoº¡›Ú)=k´¼ºn&Õztí—V’}yö¨~^äO~ð;õs—å& l«Ÿ…ñÕ;™ (ÕSÒS-}§Ÿíc½xvùYÿýu׆ÂÜ ocsigenserver-2.2.0/local/var/www/ocsigenstuff/scalable/text-plain.svgz0000644000000000000000000070075212060404165024543 0ustar0000000000000000‹ì}Y—£H’îûü nÍËôQFÎÞÓ}ï!hCðÒ‡±J,ô믹Ed*##2#««f*ÕuZÜ177û>swóü¿.K‘‹_VÇ"ÿçoø=öâçnáóðŸ¿í¶Ó;ö7¤ªíܳÓ"÷ÿù[^üöÿþïüãÿÜÝ!ãÒ·kßCÚc!³<©\ûä#ÿÕõéï(Ú¶íýñÃÅû¢ Ñ¿!wwÿ÷?þãÕ%üA`½yõwÏýçon85eúPÐsQ?õ3?¯+¿ÇÑß>w?w‡Úß-²¬È«‡;óê?.½àSé¡5-ñPç8Å À,qWõymwwOo…m¼u+À0 …¿}.ù²RïR(Šo6æá×ǵCñŸàŸnøxá¾*šÒõx§Ÿû5*nÅO?Þa÷^í=zÌGé?©÷I—ävæW'Ûõ+ôãõ‡ûÛ£WGPûðgäèþü÷ÑûçoðýÑlÁß?évO€÷E?<öñO${#%ÇÐØC‘'Ê÷äq^á-üçoµßÕwnUÝÃZ¯OŸ[4õ©©ÿ øùûÇÀ{ô–??Üwÿä?=ÀïNEYßÇÔ_™žŽ9|í²€_Ü -º>ôó»£ 5 …÷¥¶“úhvÌüº?AéU™¦P£:ЇƞRû˜ßŸòðfew‚Kã÷,CÝ,Ð?.ða‰x~P %ßKø ŠŸ}ø þ È·K©´½#6ïË=zª[¤©ï´ÓÖî«ß>€zz+c䇇ÂÇVuqúXöKݧP>ÃÅ;øÄ¢üûbÿþûáRéX÷Çÿû·Ï÷APù°bìѵõwÀºèßôçjÃnՆ߮ýTÛ?Ч¯ý¼oH‰À¿%¥ÏõÄwqãwø|!ÐW )`‡Ï—O¸Ñ{ †"ö¦°êÛµ~.EÞ~2ÃC©É‡¿ŸŠCK,ËÝÑŸ¥xzô´GÐ*/¼÷ÐÞY ŸÊ}ÜèϽ—ç°÷ŠòÎmÊ‹]7¥ÿµ8OÕrø#…Gx=Cp¼cÁ=…Ž¥ÁÞ‘pÌR†#wàžá’{Gß“ÇQ¹£î¼ï¸Ç8‚Ôp:mŠ|G wa,r‡“÷”$>\"EÐð9p¼ °¥0š€¥°{ŒÅßQ÷ ‹ã‡`÷8M±ô;œ‚-!)ŽCîˆ{8œxo,#/á÷4 Ì;ñ)äCs8ŒžC°4Ë wì=Dö ûé448‹ï0„¼gÈ¡ð!X4ÂÜS,‰ww$l Éâw}%{ÿfgîamøp}½-A!€º‡ã‡ï{†Ê8æ‘1‚c¼N¢dá À×§ß –¾ç–a¿òõk±múwÈ®þëK3­þßþ{øõÑø©ê²H|¨ ù£AŽ~T¯Ã{j¿ü¤¥Ãø¸;æðÒ©H!++ò»÷% zUkIøíUfáý­‡=QäÀ—즪Žv.¤MySWo?rƒ'ú—ãCÑFq_èñÓ5»ã‰à}³~™‡†1ˆg}4u÷–^Ž;0ħ@â8N³TYúžâ f¼ÿ KàäNÜCÏÍÑO4ä|,Î`ôS'MÂ'`ÐÓ夡·Áðﺑ[RÄô «}Q¿ÐI°÷œ“ølܱ§ÖïYýbÐþ*çtLßDç€ æ+õÿð"ÄxUÅ߀ӷ*f9 wÛ=bÔÝ3”ãÅÈú¥Þcuì/óÆ4ôdµõ©7~¹›½é·ÝÁk»î o «ÀÍ—Þ˜¹ Ðø;úD†,`ÞAp‰PÐ]A/æ"ÐB§Ã.¸‡¨Ä!†‡#£Xèã¸Á¿ÑÐ#A?ıCïpŒ¹‡£Ž»çH ‚Jšèñ8 ~Ä9#ß±´ðWâ½3#8zð^Ч‘ÝöŽ…V<øÅá/èÌåû¯ßôgáØS÷õm—õö,ZIð…Å~Z ,ÀÞ}îÆП{e 4ÄÐÏ::Pš€Øˆ ¸ÏØ~ $ñÉ’ŸíLùp‘z‘±‡¦Ä»lX ‡x~¥á8 !Ƹ…Â)|@,ìpgð¡·aç’8sÿ>RðAÆ¿)€µ‘wìïG `}ôý=3ô;€-Èñ»GôúŸ¿AE!!º„ö볆 ßsMÃçòýCy ‡®ªÔ§ËãÆà…A¦þöhrcœÄ’øB¼O+€ïGܱ¿˜#)œ}„Õ¾Ök’ä# = *æópðÔgýpÔã…´ {äJß hƒÐm< Á!8lä`ò¡…€½àUh. I#追·}È+p…ïCÿc¸ 6»{?}4÷ÄO~Æ*äû`ów¢{9|~ ·ÑP?†bàk‚'åæãFÄÁ¯±ƒ5ø2æüôá°bê[cõÇß²/ Na…GÜä“#G`8ù…lG}eß*Ũß^X}"HˆÔžÆ~“©þ°À ›#…Á¾‡Ð‘¡IêÙ7‚•Óßz£/aù“ðýÈ&>×”]yŠþ`¯áÏFW¾€ç€€˜|ˆJAc É1É<„Ì Ø†hlˆHáä=dnà4þ€"q ^"àhâë¯AØF1Âü;àßѰ >Äœ8è ‚„Pž×8ŽÔûðÁ&¤C¤ Ð49Ä䆡A=®ŸE`õÇ(úS]2<š!)öQõh„Ÿ8Äð+6DþaÅ,ÀúÑ¥Ïw|®÷ކl‚"è§Q¬O1Fš{2£t;–9üïÛ,àyÝyäeHw>5ih ¥ûœº|Ø ÷Buù,†¼%h$~O8{ó÷y°OH– n(á d8îfaZÐP¹/Õ˜B>Çpï>UØÈ§§½ûp‚!ú!nP{ À*Ì·J=)ôX5ê¯pÌU"È@'à]ðy8¤ ,MÐïîÈ!ËAýÛ·Õä6ª$\,‡Ñà³Üx†SÈø£«„É{⋲øû²Ô]|%v»©êó€x.´H?rZß4دÅÑà5€Îf†ÏN×ÐàÒ°Ô­)Z蹡•¢Y–úz8>n¡Ã Ÿ×Ï C÷fµuZÌï€H0|^^íG°ÔðyQ:Hz™›Q1šxh†¥n.l€<Zvê©Á¸ÑÔ‡XçO½­MŸ—…I:²¯Øá‡÷x]À‘¡†Ï˪…V<µªe^$äo¬q€æüŽBqìðù9»Ãçïz[È]âpÃÈààFÆ#†Ïü%Á~§oàÅç;Ç'‡ÏOuŽ Ÿ—vÇèo)"þºP—‹ ŸÖ €½6ÞþœQæ›þÝÀžúQ`?L)ÿûq=ùØS7ý-hO½ÛS7À=|öMtáÝ/E÷Ãüaè/fø¶ÌbnÒ”·ÓŠý9Ýù½™!Eßœ>ü‹þoa†¦mþ ̸ßRøKH …ß&-¿˜Røíe!6fHá/!-~›´üÙ˜!^7‰óFÌÄK„ n«ÔŸ‚Âw3fHrìïÆ ) {I×`à¶‘ù“1C {ÝÊèŸc†öÝ%Ï‚3’ýɰý_ÌðÍ Iöæ4Ç›¡{’&þ0 ô3|[f›ôkuçÑv³?3$Ÿb„¿˜áÿ6føàÿ˜!Á½f‹×Ï1C‚{ i!¸Û¤å3C»½wöÏÆ Iì%¤…Än“–?3$±gTê×1Cã^"dü¶Jý)˜!‰oÆ ö5I ~Žì3I •bo™?3„¾éwd†ÃˆŸa†óh÷Å_Ìð3$˜'#ç­Ñ= þš3üŸÊ aßþÚ9ÃÇþOÁ Ÿ.žû‹þbfxk­ÓK8×w—'q7×@>0¾‘Èé‹¡n²§ïl›ùF"§‚<‚ýˆêü6N½f½ÜÏl(µ¨Nc½Ü¯%Øø“%^‚ÓÏlÈTêö>¶?ÁÆÙ×¥x#‚3Ϭ…|Ô¸Û*õ§ Ø8õÝi¶—™ß‘`ã/!Ø$CüX”KÓÌër"þÁ6qÿÁÆþ8»íþ"Ø¿‚`c¿tË È?ÁþKÞ^`ÿR– I)÷s ôA->Ñ(}š’¸ý÷·4…"ÀWiÓ¾ÔŽ;ÈVIˆ6`·2Ä=NA ’°{†,,Á(ê!&Åá°ã‡d¦àO.½ÿ2úÎÂ΀‘&:ø!UM"ø=N³4ÇBý£`_þ?Ãùîýx/i/ä4>äÝ' ¸Çà“¹!ûË_¹gp’¢™‡Ä08Á‡@Ý#iúëßAÕ`ïYšÆHü! E³8ƒð†zHÉÁ¦@]ç† B8I²PIÎEBŸ‹Í!Š€z=ˆ‡•C-†U<ä”àçhX†äXü!OGð7Øhƒ5Ã25ì}çÞyEBØ8ȰPß}ÖG±=ºrKa¯=q?™{©zȽä>§·/FS€ýæjÙOžpßK~q“gÓ¬ÍýwÜ­Õ²ßaõ,îø7Rï¼æ„*ôݜ˰Ìä\þQ)ÁÚnMjþ)ÝÎ^5ä¥à b±G«\RÆ8hö‘óòJ1ÃØ‡~´ÚéfY÷fÙçrǰà]û%ƒßÈuhh  dIïpHE9Œ%ÁKsI=Ö„/í/þ¢mÏóö–÷™lî¾¹öôiš»›‹ ¾ÃFn¦¾yUV™›yinq‘ynžfÇy.àÓD4w·Ø÷èÜLó”ä}ƽ»ŸÝ®óýDs_8ü?r½§Éï¾»äòFúÁïøÔŸ÷”É?¿Fê“ÿzÈÛyw3Xó}ücäߟPôî%Ë—2vÞÝ^]p#ÓçæáŸ³ó樿™ëó sñ¿Ïßyó­E>þgc  ·ï~v®ïû™šïžÏÕü¥=ú+õö¿5õö§ÊCbô'Öô'©ÇÇtí?oMî?jÚO9>äÒ¿ù;¦çv¶ÎŒÿ!›þÝ­Ý6ß·óuþüþùœ‹?r.ÃÍÃnŸñõy·Ïøú|НQ÷û#-î^¶­ôÅšõôýôDO5ß>ýãöI!·yû³K~t¶ø½a‰Lcùýº ü „óÕ‡S‘^k†ˆ¾,þˆÕ¿>ïèó‹ø+›¿"£úI»{å\ÒOdTNGú~.Ò·OÂý”ämµ§æúy{ýCqŽÛá”Û¡—ÛašÛ!'ÑŸ_xÚÑwEL¼vÕÌŸ\Ä¿àð'‹n, #¿v^Ï‹øö¢¦o,€º½XêɪçËS¯Âÿ“^þîùß÷ò¯NpþË^þ Næ–Jþü,öëN!ì«P%íç@5ðwÃGš@°wä´8,M"`˜7ÆÉᄈ‡ùBÈÉñ0 % Á4‰?A}HOÒÐNAB51pø@ß@ I:„l°d×,é>‚sf‡V<Ìir Ã=<ç ã.A£Ïsß`˜ðähæÑ%âVÀêï!ô€áÔeÂhx¼ÙÑ!ßæ&ö— ÚD²OTîñ¯ðÏGYÏŸs€8#ø@?`/‡r†.âk9†{ öARßX«zP–3ñ_$ö¯·¡p€|"'ðTN8~DP$3„f>ça!IÃ÷²»cï¡ßD<àe䌤韧fßWöã»â€€ãƒâè÷ïŠsPþöÛs"'Ÿ9ùµÈ_/-ò…²z´öö‡iìë’yè£W!vøüà¢EX×+©×Ú^|Œ ¬íG6þ1Rôï'Fê•)JRŒßMQúº ÊÝw×u¼‡ÜýÀŽ?ÈLÕû@Ísާ‘»› 4~‡£a#oO’ýúS£ï¸ßm¦êí1ú'M~Æò?1ï^KTÞ> ûg;AÊõ¹óã>†Ü¯føë$é—ž$ý ÜWXß?Múîßp¢ô¸{õôõž* ßýîfÕ_s²ôÓ‹Mqÿ¦¸_´fáŽú±¦_»$èCÉ™ÀwØ ç<,ãùt6ð{÷L*š_|>ðý;Îh}\ct÷ê$?zN0¬‹þÝ#„—û=æÿC–4¾}ÐïÛËï°ßõpË»Lþq ïŸþK8ò¿{\÷·{ì}4“fþõjŽò~>á)™`¸{ ÒŽG€ùýLÂSÁ@èQ0÷õÜÕ#Xýq"µkÿ¿ ø ÞÝÑäß¾¥E/ LþÝ#Dϱô’RñáßÍÇ¿E±ÿzDˆ^7ãƒcýe7 ×i÷ûnÂ!ãǨ/û ^#¹¯ëþ¥}åÛÃç×øI¸?ãø^Øw4>|n>´_w µ÷éVòQJ†O-µ?ýTäñ‰£BêçÞçæ:ßÿü-‡½a§_¼Æ‡Â°†''¥æ°s7ESº>|™St|ì3è¡›kÒúxJûGoÿ’³¡?©,Áýë–¶O~‘—ä©9ù²Ä0kòMóB}c<–â~ Z=³çã…Ê&LEÚJ<ž•z…È‚Å=+ò/J¼…È'Øð¹%†gPôKm19|n<›ù‰Ó×>ˆÿ1­÷ ϧ·G'§õàS‰_$âç2)ü´ˆtÂ峈Áˆ÷$ÅRÏÉøc‘Ÿ2‹9Ä‹LûL6ØŸ5,õ{„¿oL}ßýû\¿<³.à骟 ~‹Œ|wƒÔqsBä;˜åµ7ñÓNùÃ÷øÆ[mN|ýÜ>†ƒXðȱ"õ+jhŠ¢0ðnÈ…q,K¼zÉÇÃ|>A1î)~”8sPا+UýxKÇÀ. ožoèãw‡â«U‚’z25ò£»W†D€¾ÿÀXøÑÝ+°FúÉ–±?éîšåH@<¤Ž`‹áʱ{ ê*T\|˜¢ ÛâÔ³8ÎàÜC š„4„{²¡…dîŸÎTÁ €!á@x2£E÷ ÷ø ’O’C* ìQz‡a–ìñ‚œ¯·ÃÑt‡=Ú úŒ¿\Ѿ¹XðF¨ï'OùkƒòÝwóÊü7(?ŸÇûY„›a¹ï˜€?ƺS/Éš÷~Þàv ¿ËåÛ‡rý.;” 9ê®ûø¸œgÉ/Â`CZ]H½˜§k¤9ìž`qæQ íaE|E?:~ùÙ…Šô ña} Í>ôïîHh8–#Þ…‡ÀÉ7Ù=GAxñ"(òyh¾ÿ0%þ“éË^2‡úü ê—fþ¯Iñ?Ò¾oâÞç;îì­÷}3ß/Û÷ý#‹nß÷$šùC!ç?ß¾oîE6öÅšõ×¾oîñ‚Éï­¿|ÓzÕå×ÓüÓû¾_pNóÃrâ›å¹Zæ;û¾_wVÔîû~Ýÿô¾ïò䧻H¾R±Økw´¼|û Q 1D þyºù¹­6_ƒ‡:¿p‹åÓI7ä„¿å²í/¶dáÐZ$xØÏ÷AT੬žÛ öÅF±_!«ÅúYü-Uéæö>œƒ¾Žàñð6‰3쳂úîïܵû5“º!´7M ð V jP9âÝ5d)4÷åf€/©ë7XîmFü„=ÿÂÍ_G¿Ba$K~½>ÿwˆÜ‚½ç8 c‡¯Ã™7†?M»ðȼÜÆÞÜÞò~ ÿJƒøÕ”Ä å%ßt/Ë7æw Ò$1$.†Cž’z“Oµ÷Ûs4_Là<™åù$;HCk¿Ì¿tÛn2¼õÆÎ=俜cÙ§¿=‘Gù×û>]ücÕÃQNŸN{ôêè饵>/®…I 6-õ‡ó– ¿‚$x÷ùë£eVÿçîÙøv–úU…Ô~7PgäT—£ç{ˆÓ#ÓÒ÷?ؾÿ½ºw‹ ¹»{òåÑõóÊÿ;â–¾]/> eE^!°eåÑi†Mo:fvè†?̳kûï¿£ñÉÿÛ±+Ÿ&ß¡\Œ’<¯ok¾y×gü¬åcžQÐ "ÏOൗý‡¼´ ¯Ëïþ6ûúá-ϯÇüdÂëºÈof<ÂGð‡n" ¬ÎË:Ïóáì}íþ ¡;Ã÷øDà/脟Ì`ɼ´ƒ×&cøä)ßNfßî$w¾ ÷Ó?ÌõÙz:6óÙvgÎEk:¹Nˆu˜lôýÞXL§¸µÕÉ5îEVæÈ´÷C#$}¡À×üò_¨ÀîЧC!µ Í`EÊÐAaK†õ™8YÏ&“~ÂÏâI¬$“žN#DÁ”é|:?ºæÛQRT­÷±›«ã¶–#VCmžoákó㉮¬y‘åKÐé¼\/KŸ G× ;ƒùÒÌ1ÇP¯Ç "²O£~QØÊ TŽC´49ÁLctHŸš2†ªòçEÈŠ£V;nÊ“ÌzbÌ7Ì–²W1†€M5fìƒMz³½¶å\ ÌµµM´–0éñÙ~®óýT“É8¯¸´-VÜÜ;_€)òAÑî§rH£¡Qà;$Ö0"9äÖ`ÆæÞQ]-k6Ýr±@eŒdƒ–r„¯E™!#`ÉtÄt—ô0CíÏSyä¶tOœ{9^Ÿò÷ûzÞЛÍQo˜çW9»¤õÝB’D&Ì«˜©"ȹZ]zú÷Öùªªí¦ŒÓ&)4oÅ+Ù¯{s‹H†¼Ùu–$Ái³âkg¶?Ú†¨°–uƒl½”˜V“²±¶’6À0HJöÑÐ$¶\ù‰š“Zþ6×âÙiæBJznÅC7IÙÙê ÀÏ¡¢ŽñëXÊal±ã˜ÓQ~4.l¹ÎɆTyÍçyEBÉË‘Y)œLí‹ù¨@|++-5 PÍù.š­(jªLf5ŽJÓuI}¿hgÓóœY‘•Õ^h¨ñ&+ÐÆj L±¤)qž]Çž[×D>3ÕH¨fþ)ê#´"lÙZw¢Jr½3Y•Û9!½UÍ·fÌ•I2¥Pb„z›•…Øa>ñåGöX6ÚäMh&!áj›É³Ý!]T{=OêM?Qüè\‹„`Äm¿Ô¬ú`EqËË5JË£ Ñ]î®ÉkwUK¤/h;E°äÝU{š]kyuô`›Ëõ¹ŠñÙñZ.O'rºXkcÖðd8.Úq±Ù+ç]ÒõsÏkíh³‹Ï\p¥‘ ™ ”VÛ`Öå*±&…¦:ïz^QB3O¸d'€Ñ~¡³…k‹¦d3r;B™? IòÄk¯ˆ£\æ×®£‰š†«ÃœgScÔ9»š¯£Ê^˜2Øžñl¡‰@§&vuq¯˜­‚ï»JîX>ÌG<ì Ù’¤Ëý…&®F¬U» —³ù6Ý9³ráìñCµÜz‡­Dƒt(¥äÚEó|²ÊÖÇðD­/W3a„ÑÁCYÑJÔÚ¹×åžìR÷Ë=q½Š¨¹—^¦l_XŒÍbÚâ;‡¦U­{1b’éb\ýª?^…Œ‹ôô¼ó ‚x$rÇÀ\/Î]Õø|º¯”$¾0XoöË™VۛѸºêt+c䮉—%Vuš/Z~Ïê‰ÞQE×Í=$_.zbôáªÙ\¢³”ªá]»ÓI3Ú6bšÅnåì S?,g–,ÂáÍ œý!Þ*ظ;*¢—»"ò.àÓV6e†?— užní«Ä oêlÚu+“ë HÐf (f…/ä‘$—žØê£¼À˜4_†­±IWU‹tòI™14'èñ’_éqx¬IM·n{uHyêTTaP Î+Ážªg¢_jýÞ¯q£…LŽd;ÃC>$Á*W,±5™µ×ˆ…¦Uò‹Ðiå* Ag©±xƒ¬Ï«“}gKvøQ®ÂŽº¶þ¥ef2>è­,M<)YNˆŽDZL'Àᘖ☀"y!I¬Ó¦³ÂNæKª+˜|Œý(º,6VÈ»ãa¢d›yHm°¸T+ƒ(×ý¬°±ï/ŵE©´BŸ µt¦«3ÝœÌ;] B£ŸLFÒhiƒ:…k2ä2¶CJ æÆ% Œt]Î1(SS:ˆç9OÆ]™i÷KsÑlŽªØ˜{Ü¿È]Qx¡5Q´kÇÉ0rvâ´º®Ú<ÃÉ)/,ßN…–÷Ž -m·«ø¿° Ë»Ä¡šÇ4§ãþr©mÒ:,=å#Pô"Ø4ú\¾„¦±O]ðql¬+‡¶"#DZúô´=yGgo¸«½Þo@Ùk¢»÷ª(;âaN9Õ¸¾NÚ•"âh)Oàì&íµèhÅuQ'Mw Õ–×.´Í~}QsºÎ³²8p@:T?cÍ©™/°XU\—ž>˜1#©B '©Kb—=çÄXÖ…[i¿ zÛsäqM˜íEÉòþ䌙͉FíœHO¬7¼ûæd%5|ΠÖÅ›mt ð’ñ¼Ö£ˆ‘jþ­¤.)±- • ê4²~iž½d±‹MoqVíµTŒZ’sòÕ9Ы²OŠ¥u 8Ç+Bm¥%Ç `²…=]ÒéÑØÁÓI¹iäëÍ™|e5n.Óeb°<ÛK½Ž×š5qÇ$×xÕú˜ñ*ÏÕ‘+èA@ÐÈᘋçÊ0Ý v8O+=Ä>ÆFçÆÞÊjRnÔ™Žúf M×%/W8ÉÅ–«_‘xhnQŸØ”H`¥Æš] è …’cIZv'›:X½¤wü!!Úù¢Ü®KÏ'²¸ÔåŠV§˜Íl-1ˆÏ»Â\Á7Igµ·æˆ¦d{Oë×\´åv›:RCÿK hÉÌ…çŒxgÖ#"F÷’«u1W():…ÎÆçÙªª…Æì™5bÚÍØUéÝ©®Ã_m;«¤–:…5–FÛ™Ÿi§UUZ„PQA]/ÁØCp¨Vhkjg_¤¤%à€ØSJíe¯õÒ >êECðÝÅ…2ý—ZiZµf¦d×â )“íÒâÕÅ;ø<àù€"\¼$G#Ñ¢ù*Ü# §Z$¦›§SLH×9³†1EEsZ·Á´‘êø:™Ö•8‘ú¢íØ”&™€•€-/¶‚~\YÕXN½…—®‘%°Ù­”©Æ4KȾâZr.mÝ1w1“\ ò•*Î2MZË*Gù‰¦ƒºJƒÎôû¼Ü1 Þ˧>—r¾Í3„?t37_œ±QD³ŽÀÅ_¢;mï̹bß[ ™àwÌ4l ãV¿^©uÇÈÎ0ˆž9[RšA¼#ÜÁYð{0-ÒYà_©dÕn;Ò"5¢XÎJ´VìØ˜µÌ¡<4ï­VâÙW©ë H“µ´ä¨Á‘ð´r–a+çßÖ!&Ç@TåÍÒQA_õÁ^ëõ|³µ®ô2’±Éˆß5Ft²õ(›xÅ–Iæ‹^ÓâNVš9·e³w5HE8’õ–Û· ¬®íæ—âKr,ˆÖ•]¸Î².º´YÑ‹µ±8ôâ¾E’ƱºXÄÍjzëÖB=-åd€\r(Œ5h{¿wó|]EçÙá°”³±ÀU¬Ïˆ®.ñ€$æ#i‰Ô§ÁÄÌüØKê•â;5g׾ȷy}ìÙ\q}H$4A¨h,w‘9¥s”S\?‰šlDÚ™±¾N£ýzÇjˆÍˆ§){n*žs.‰:’Ö!qŸsi„ËRÉX©=nœ*ù_Ò‚¬Œ¥tIëÅi®m¤ubÚAÍvŠx‹~z‰â؉Œ‹® WòŒ‹„™EVhFÄÁˆ/æh¸d×É—í¶]6ý^‹P¥LìÓ†áGR«,€€`£¾st™ -ƒ ƒ /—çÀb¨5éf× 4|®!„Ę̂õVæz¥6†}]Uiág™7.ˆžÛ°*Ižâ®EÜF¯HNé’±¼­•s£sýb”—+#î8i½]4ø<á ÂÁâÝ*mV³3ë@1KíÙ¤¯Ïû²pZsY¶¸ ÚÂ=$ª(•¨¶ž¹,AÎGN+ ȺÀtõD»3•*ä¶Ö‘¼JvÔp‘2–ó¡ç¨È Š":13•ãyäê–ÈÌz´(×@§yhdXþ4­–ÒÙØz:åÏw‚]:Ö$Š<Y¹²HÚGfCp]Žn]Òª3:_0T—žtúŠò+ÆdÐ º ñJcu Ä\ÆC¯çÇ<f¾àdl´Ú-‹'i½ÝB¨[øg¨ùѵ‘Y•lÙ^(ŠªvÕ¼š‰&?]k'ô4Ž"wÙ6 KÎÖ V&§’’z•u^dïÈùLQ§5©:BÞìgľ?¦ÚšïºjXVaÎdix9Èú¡T)ÔçÖÛ൵HȽgì¼Dj&›3µgc⥕®^³‰z¾NƒÒ\î—.?¥ª0ÛS×ä4~=?­HbDP~ünÂO:BÐxÐ’VK‹]½Sê‘y½ˆÙUãlé´Ð2—~?A7#yG9¾€Þ‘”†A ž™m· ´vÉEŒ;P:j“XGPgpRšüXS „Ö Â Kw'¶p€3<)ÐÄ–èDs~>kîrYpޱÎ«Š¨nÄ4%×Èô‘7cbU¦mocg^»ðSȱ ¹I¶³:¯]£WÍ¥3#÷M øœ;ª5׉Ia¦ÔÛÚCw¼È6ÅL<ųÊ!×1À#y䌎 ‹X”§'ixÉa"ÕÝÑöì®»ÆP‘g‡f…­)Y‰ûÂßïœsi`®Ê§Þ¤Šøv‚S[ON]Ù ”yY’Çõ2$ý|ÇÕœ-où†8ezÎÌÜXr„O°ô¥Ø qk{¤²E“ ¬5Ö§Do§Õ\ž®ØDýNAjÇv®‚SzŽÁÈ≠¥Óœug¶N3LŠ]"€f9 Ñ=ßjÈq°TŠô*‰ Xm,̧%(ÄQJ!éÚAj6Ñ146NMNo»ZNíô¨Cʧ©àC|j.ˆ‹7vK“çyßmW+.Å 4÷ÛùesáË)2?dÑÙZòU?+óÒÄ…µMœXM5:ëÌXßôÞîšH Ä´€ “ÛÉÜ–bGÿšèµðA<^6ŽuÄÑÜš©O­ëºÚò€á¤Wûz³•·8OÎ.ÛK^9•7šž·b³¢u¬îNk £Œ44tfï÷ö¹VÓ‘Ú#K'Ü‹GbEj;JÙºoÙÍBÒ¬ù(éZ®|=‹!ÿ)ÀÄ— ¾h[Jˆ1Êmjš™Q’­h°i§2ŸµG§´éʜƦͅJYI;âÈÚRÜŒb”Ÿ5€ ¾¡T’†K“=ɰµŠì¯ÆÚKvÝ®4/lb.8WÅi}72×-!ŸJJB"„NXn„:¼Ær>@Yf=ÐFÐßô½¬cƒVRlB™ ôb‡y@'¯“:Ü­"ÍM¶—ˆ™´1õ¨Ý©‚·RK»W¦£­ÑŒpeX”áCfΫº—â>”u0¶¤èæ­iÖ˜ó]•ÒÔ q鵪8ï.¡Ã!J©‡è*<ª! EHzãÐtT³óÜ´mÚÄT¬ÙÐS’óÈ ‡ušZó"‰}o®ˆ¹déÌÆ¥šJq+ßœöš‹^êýÌ3¼ð`ç)Ôáå|.lku¶Q‰© 7ã@‚{çÖŽµ¦Q$ó -«Œ–·Poa–%€xM0CmT¶âÉ©ÒPÇp9â0…Þ¬ô–Bšƒ4WñØd_J¸|¤)|7ç’ír;³õ;O¤lÑÀÓl±Wp‘*æ8+8'nt¸rkOa.ü®’ †ôvÅNê¹¥sÛxÜn¿(½`.é¡Å9>OÙbZ®Dsi%u{¦/F‰ÀxZÎA~®É£Ý çžŒ\3mQÊÛvuÌf8±k¶â…f{~“²´Ë$ÌèÑæ—(Œ”°]òùŒôÙ4=Ô|î0­­òØTµÑð´1EŽf·Dä¸]G¤9wbŒÍÕàî/$E.wÛÃþ\VØ™çѽPKJ‚$ºoÑ$§ÎqOùŒÌ€á¶Œ,†ðqä¢ÉÂwÈÿ‚™¬ ‡[z[6Œ3<²ýË^íù´‚T­æÁ´»¢Ú'ÜÉÛúÛå¼U—RÁ~"~ Û®^ætï`ç`3×sc­&~¥É˜Èfó$OÄz¾Ý¹5oÌТLÊe¼ÔÊÓ©‰„¹»îÖ YÒÝ,©YDY‹S}=‰ç¢“ó>ߺc]0o·§ÜaO¶™¶ÔTFá0C8:ÎëíêÄ3 …èÇš`ÜÙî-ê|E2I_Йz˜› GçUÃ4«ëÜKæË ?ÀˆÓ VޤÁ­)"Ó’nRæ#=_Z*{é2eĨ´t5!"-töA„±‡ƒŸ«$8‰Ê‰ZÈ{FRu]WÑ6w¶^^Ž>)ŒÌƒ)8“î7“EêËãbš²ûÞV:³ç(.lY‰N¨2=»!ù¨dÖ½™·¹<‘+žµ&4™² ¡Ï–©ƒ2/£ÝÙÏ’tÑž/v r¶ÊCß9s=¹$}\æ5k¢M´ ¼_;³¦Œ Í˜°• Ø;'9}.b]³É6•cP®pQÅ=³¿6ØÒí£žÐäE×›9‚€G ä+ö®8 @il`ÿ—} $GÌÝæØt„°£€÷–SòìªÔ®‰¢¢Ž”x?Í$ò¨Ë:>:µø,´lÙĵ} º¢š±]3x¸á¥è–a­s4RÃ_4T4G Èíô<—÷»uÎëC_w×èÐÎÎÙk6>e¶L‰å,õÙi‹Oô†‡¼4vWò,›µ=9sæe‡8qM»­kÄW¶v°^ñ‹ÓÆç3ûDq×Âdº)6ÂA§ËMœk»f;KÕmwÅBbãU 1Äss EdBƒ†Åœ…»J‹k]6«\IÅóh+U8)…‹à(\±=‘Ne1›î±¬¿.ˆTtý@¹­¤étXyV+³B;Ef¡.¶¥WL3÷²‰ósÔ¦¹µwÙYxâÙ F’úe-°³¥Cõ[>@ü¦Nx2b­f}°ª-’G¼.†’†Ö*`cÃtE1$UÞaC¹˜(fu¦å¨8Þ¹ñ.2øÅ8@ˆÑæÀ6)Y¯ò´Ëi, ÅNf±nÚNÀò™ ;l%*ÊdÕ–¾inGòÊ ®m¢9êò2k%Æ8:Ä€ŒF^š«ÐšIýA1›ÃZÚ0ŠB<‰wÓÛ'·ŠúÚ- •ÄfÊ¢¨û3‡pmNÊ}ewlWLxÚkYdµª·*ÆBÌMo˜qŸCƒ¸ %rÙ—;]YLE¼JkEëÛ»'u,‰Ðã¨x¹¼r`¶ƒ^XþÈÓ =t7>æ‡V^•¬æ×庎dô¨S³Ì(§iôq¿¤TÿyèúQ}Q~ÞKÕeÝzeŠãù¼’x‚E{ FÇM?ñ/t¹†Ý›˜ÆL.\ÏV¹€šÔ\´4.ª$E2«xêÛ93›x¡¯…«prN½–L$ÝMÌ@:öL¿Ùå—Ä™d Éíá ké&­4è· zQ6­µv="§i¶Ól1•,Iˆ& 1*T×zlÌCd1^Å»jÓ-w À¦ýÞL—ýŠI©õ¡­ um­‹}Ì×À-hµd¶¤EîtËÌYÌáÇЯlõS®Äm‰ûÀêSÄ#–›zD~›kNsÕ½³áŠQ„*ò­UÄtBBÁŸÙ}u «lå‹V5cÝQÊ2}¡«"Lq4E´ˆ:l–Õ|Ÿf· 2·s‹SŒÃ<¿B žò}Æ–´“‚"ʳ3È­Bêʱ,€ŒžÒærZ¶Ò=ëuDoG=ß®Ú`;R@¸#Wm†AÀNY¡çÑC„z,Vu@pY³9¯Ê‰¸i²–2ÙàEá/‹¥Ó„"M8Ö€4Žî-Õ¹µÄVZj«‹E’pˆ­V!B›ûí%3£Š§f{f¶ÙìSÚÁëR²Ó*˜fuB§<å'Eí•ÂïÁß³%·±Cfuí’Ž&œ&v½€ðAÛrÑo7+%J‰ÝäØõÁn5ÎXeQbm°Éb}bôú83Œ¦ÁÄ3y2±zjF* eòõ>×h{™#]”³¢p*ö€êŠ<°aÛÈUÖO¸>[[6t8ÉxÖw{/:fÀîUù:f"xKÎm’>˜ö*;×x»Î`*häúÊfhmE¼h¬£Ykšì4Òqºî¶ôÚ6Ò…$›1ô1“iƒO¬– ]؉­á±›­U‘ðaAÀíì˜ÏiWWE%* gáfo©bd§‰Ê^¥ŒÎµµNC*…ŠÕ$Ä—TÇÎñ|ëè; Y[«éHÀ]´ÌK¶¸¸™¨†[z»Š¸hìãf~E¥2YƒOy”œÑÉÌY,jš{­Í¾Pˆ¦âjZðˆ2ËçqWWR s(ƒhþ sÝœøÛ.ʼÙí›æp>OG¾At#Vñj1§h¦UG\Hó`²%Ú1RV ~„YÍ*K¶s2Uœ™òu¦ˆAVh­MIq>oÁÄ‹sF¸’ü…“pVìSÝJ@ãmö› nÒd•δPl{Ö½–Iü:Sz#—¹ÝÓ:Pf ªOPú:1IFm×$9ø@÷oÎ9þÔ§M´s„z šñÒ Áü€Ä ÂàTU\ïJ³¬Åùa´ ¶œ«ƒí5r÷"YŸµ¨ñŠz¬\àj Øk½Ð»Ü„:¸$Gíz>vGn ‰,zõzº½ÎNk­Ñ•¤×ÎY×—&Rã-^¨´¼8Ò1}tYá©ÈQæ A;ãNF1uT.³2!CfBA W&\mتm ¥‡.vÙ™''H´ÕUVfZO·GÈÒmew•CªOY&·asÏcF¨®¦Ê¼Ôº‚ªÌÙñxvXÄ3ßð®uªØÅ!¬´Ôúz§­²Div³jˆx{M}kÖ³K²ìX4ñ ÅX§ÑY˦:Ô×kUUœÝŒ˜WD³£˜âŽu?n¬hí æ€î·3ç“Ì9nj C>›`¦Š©e;6§ø±äkwÙÉ™“‡Y µIÞw—@$4yÑTó,ÍyŠ"k–¬E,—Uš—’ìi}d.Ü“kì­©ÌŠŠ4­-Øä‘|•ÑZ–A3-¯=,i 5s”\c¨™ålÅ7ž;açΗ Â'ƒYO\¹_.íÅE¬„£ ½hÝøÆ4y2Ì5$YZÕy3›¹.BMÅ“XB¼Î*Ë©/ëbªˆíèàÌP'T),Ké¢$Õ„;,ލJÔî)PM&¸xrIé42…PÇ瘢ˆ¹"°møMR±{1¦â¹rIòL¸¡ëÚ:^QßV×qY®¡oÐý$€5fи¯NÁ=†‹…qÊÔ9Íy4›Ÿ–3÷°õs’h o‰.ˆò9ºÜ.WÚKÅ?Ds È»ƒGäjòÚ¡7Ù]`YÂ|ZfÙªBzOJ/,}r!c9³ÒàÉÂPrœÁÑRªHÛKÊÔ®§X©@a“óà Fíe¸äð ¯d–f"‹R›ªAéŽÙŒ°È@½¼çb· ä®SÜ6;Œe([j\…«èŒÃ†À³3¼Å´Ë•å ÐÓyƒU‡-"äXÖ5iLÍPœVçØX3Œ?kk?:2ãBàÒÆýy„;Lgìâu£T‚:ëÐíY¹s«­zuqÍhA,ˆ‡IR¶ ´£12pW{– x,f¬ÐæxO*½R¢±Fom úJfˆš(ØÙfºÚT㚢“~±®ºŒé 5®Ób»“Ý 8nݞЭdêTîežðª;Í®ê’ÍÖX:%7ºà‚®Ç•[cþbtrW<˜râf½Ýx4ê*L4™Bw윔ä2VGEçÖg\çôåR-5u’̘Q ¡ºÏs†¶¦ Ǿl±;Z+$îq[ %SÏšLÏU/XÏJ_ÝR¸/«À]n÷ÎB—»úå¾Û[E»@™†BpŽ©ʲ­ÉÏê)¸lu²Št¼¯Ç´P¡Uohj^7XXÆÍÁÓ„Y¹l´Öe9 A¼K(r}ÜŸv»cD†Á¬R§ðùãÒ ¤?)5k‹"ÚmKoû05Øp«L›}$_"RšùÅ:qgÞ!jÝQL².™~A¯¬èš]+Öá} —PÏKWTˆŒ ¥«¨âzè±Íæ(0³jšÌ¼àèŽÓ í.(Ûº\x…N¾#ÕÑŠ¢äh9×òcÏ^¤~>Ó sç5“—×{Ø›¨¨\R¾gKõ¼S±™‰m׬¢9“†‘"±š‚%óš—¨R]Q±Þn0-Ü&êu\"\¡q„Ȉ׮l !¨îî›å†Ñ÷W±*Ï#7¡V30±—3¶uä 3g:-“’zÇ­É 6ï-Ë©e`Óò” 6a¶ìƒVG<”â´éLß&–&ÑNhArœsÓ›ó´ÆÜ]{P.¾MrÝÚ±7{Ež(ÇUœ5PXsƒÔæíµ7¦­E¤¶™ kö“æ’÷žÖkÚa´3ïllÝ,1ǜМV ã’l› Ä8ÇF–Šø\Ζ³ŽóêÌ&¤V (ÒʺçªÅÒìKõJ½¯%%ŸïRºîŒ+NWOp¬é¢ Q 2'Øã( 7<-Î`[µ¶Ïª|‚ Åòˆ\:nD¯ú4Û¨îÒÊóPWœÜèv¹»tÚ1Üs‡i„̑޲­¦)ú~Þê×d%‘ÒRšñÖžW4 (DÐ ŠfÎXI‰nŒ•»Åeá<‰{&׋rk§&äv„ž htB¯-ì¾5CŠ[<=91ÅÖ«Yt?Ö­•[¾[\³…zJíM/ˆ×tîú$#Æò².\TÓÈÍ•kìz<ÙT ›â‰¾ïäQ×SlÐYeo_§ûL¨]aÐÈÄ—Ô²ê<´OÎï‹U9Ûåq-@Ó¦´¿Ù«ÞX«ó1%ßýr±˜IÓ“’/ò5z ýŠFØdŽ—«ºVOU0vÍ’é´‡û4ÃeQ8Ó)ìz`¢sÑé’“Ë«œ2¤M|M%~ž¶‡ÿOÒy#8ªDQt+ä' ÄaÂexï=«ÿôül‚i ŠW÷#ª`CJæë•êi3 LGNQ¾ºñG”'|{^ilbW–B»â³ã¸žÑiØdS4 ¬O>SHÓáPËT˜§¸D¾l@ÌU™_ÅtôÇìèÏkef”ψÍ0Gus#Í)²ÞÐlI¡ògŽkL)E Z2yÃå‡Yð’LŨõ³`úJ{W•}¿h{ï:Ä€¡ e”ñݯnš¡,XØÝyMPÎW°Ã ƒLo,,äBú“ò;sfÓé@Ž%;ù5}šû£}¾Åá ø4ǽ)3™ò7zÿ>;PÓÝPN'¨‘-V¿Ò´$¶^f&›1I‘× ±æ0XþE8H½Ÿ"òÎähšègå*b;‰yªÝYÉ-µÚK¯Â·Ý ¯Û«Âäü\‚LäPÆ´ÈqÚ]eþ"KYrÊqóK&†H’øéeÇÆ¢Š´1ªõQ¦o†y6$6×{ ÂIHçŸQdÍ­Îù‹Y78^°ÏÅE—ÿž7öp @"‡gÚ¼Qðò¬Ë÷zò0ô ¢eÓì¢zn‹Á˜Lê E2ƒ±C7~—í¸¸!+¯.Y‹êˆD.σBgó‡¾6‰fåHôCe,c§OhnXë^°xwŒñøZRàyœ773UL$çSÙ^,±G=Ù-ék“*€hÙ-VÝ©ý|ÔÒ´–Cé‡ÜK7þ‰inW§/#ÙiGl@z0©‚¦¹7NSçÕ9lˆ~e÷¼L~Ñj¾Nò;B&îD¤Xj|¥&¿îmŽi’i_˜¯ÇïNK*ðD lœ ’.vcYÚÃzí¸" ¸œ¨‰m ”F0ÔÊŽý °¥ZÖ]–¢²wê}„05ÿòµ0©aÑ8‚$æ•;÷×ß|ëwécÿºõü@–,ÖÀû*'|öjLÌÒ@³Ñ99§Qvü¥q8ÂDh«ÉlÄg3̃‚'zvXÁË3ÖNصç†%àw‡XWlÁ´úþLgŸüå;{©rY¾gn|@9m_ù5š³½wR$¾3Ì­:Þ‹ÌMÓJ`GçÞ£»ãÈã„€òm £ŸÛÅ5.Ùbýß°6¸¢Á†»k(·^åÂÖÉ·èêþ ÃýLدÿ,JÀ·¨±Ñ·V Ù*Q¡É€Fc_ û›w²ë/Ÿï½µ„>Ò0DfÇ~ YŸ~¿gÛœµ35BO’yvt7 A>ðkc'‹Æ¬¢Ï(Ü:>zIœG!+ þ™ÿFØmඬD|þ T¿O©8tÐLáþ2N‚G¨[nÛhœŒÜ‹tÛXÀ‡{ü©~¡:š´T¹vrKɉÉÁêû!ºb dÄ|‰‹‚{³ôé’ˆðºyâݦòåSÍ#·‰p1Kïòƒæ<ÚŠ¤ÇqÜ߉¦Lf];&ã0é¾ÉžB2’œ¦õ§jŸÔx ü{÷+üœ¹îÒË,oó©3 '¶Rå¬ñZ„ŸOs5.wèoÀùˆg¢Žgš›xËpžˆ`ý}3Å!‘Z":êgÚ¤2g¢§aU wgtÙ_?å9¾?â¹z£ÚHZGzÿ Yöß.?=AaU?š¿àŠÏ6¬¦½]#C…]4jŒéâ …x_¦,²ËVØ×9y¯¬yÓõ ÆKÏi›÷kÜ1îÆ!)ÇÅVªÌØóz¤^—¾¶þ]Ï3¸ü}”©óþŽ”óƒb\ã >SÀlûš+ÐýǨ¼ÌÔKoŒk8¦€êh»œ$¦fŒ•ê;«áÁêÑbógeÈlÖ¾Gß/ïQ½@Ø—7èØ—ø­H*L;ðEîÈÒDúÒTÉ´†P*TH´©õ˜Üì«ûÊfãþnæÀü ¯êU¾^]ؾQ‘ÓœÀfÁ†’Å€ˆçm‘R¼¹]Ñ Uûóù_e×µßkÒ>öïü–^'ŸÃ®ö\ÂièsŒÌ{ù7,Ϙ ×Àh]twåµÁ—»ÆÁ öø¨I°úSø~)QªÉa„yCzî±B‘á$òE¾ä_Ó$óq 4çk±>5ãáUÑß|JÊžï̲vÈ×ôj”È,¦¥†õáŠÎ@̆!_íù'ÿMúŠ#úW}bêç#çÞ~à³Âö¥µµ¦yND’E {|ô ¶z㈟è (ˆÅîXßHå‘ó¢=|d«Ï]ÇûÚØ3L“¤§ëSDðÙ¯“ü‚ Š›W¯¥DC2,.rúPF½ O`Þ–ý‘¥ª¥—„?\ð€Ï#Û€l=­Ä(›UÂQâ¿÷Þâè¼m_2#l»U±ø9_”B¾³¿t |–žü½išïit Åiã •Z‹×žJæsŸ }ŽÌz®z²Û1[·X‰ »[Xš…¢³è«Û—öLLæÈÕ†ŸRÓßE™¤Õ L³0¬˜3àÌ”yB²¿EV[[jî!˜â½jñ7‰«r㼦ÁðÐŒ€ã°Â^›aÙ,[ „Ç ˆæ0š9Xeþ¶$í¦¡€îäEó2ê(7ÝÁƒá|¹Õoécä©•Çå÷ 6[%øå¸H]›¬¯Mç´tC ÍÁ Hàw&Ñì=:RºØš ¯Ñ"wĦí`Ö= /ßV“œöðT?Á{¡òÊq0Н„‚A!ÁÇËߣοoŒ©€ù‡ªµ×RYξ†v;úyXx-e˜, š„ _úä»M4Ûµë8ñÏ9Ï}U-£¥‰6ª©u¢3ÛrŽÏ›Xi⓳+ÄoHXõêA„¡O×gr…u¿lDcâ-:o,Cí(¤Lóx–{.Ú=¨È‹BZûx6i43eEÏ¿å®ä9Õ?X›lI€é)¢B?ådúòðUžeü²WìÔ¦ÃÔaŠMˆtºìQû¥e –(†lÈ×°tôDl{2?hº˜A‘ÄI_Ì(WC«¿v Ù†™JJg‚v.JxºÄOvžÓ YãðúôZ“¯D$t¢«IYÇ ÿ Öý&ˆ—«Ë,ð»‡Ô¯.Ý‹¯/Ö­“|›èiôyUËÌ»Ës¥b“œý~ó¾!µ©"s¼‹ a½Ñæmá¸m¨ ø™Ýˆv[ˆç°ó‚Hú`Ø Š·ÔøÎЦóÊ]5`%£KZaUœ Û*æøHîI+=X˜§5e4Ʊ–¿BëÆ[]{¦{>ä3žd¤ÙlÎ}Õb»ÂƒòhŒÀ. Í,÷ðËÝ #RáÆ<„\y- €ñr¹—åZyÆ…/UEÞ â7wP6Ô†” t2ŽöŠP‘3Tê¦ÃUIë‰+=d0nŒ7Žžqí0#˜ BSkù2°ÔÔÜ\åöj·aý/Ò2j0ûÍʹ*Ó !§êL%Èï‘Ã|¤uç_Ž? €/9›ù{³d ”ö³™¦kž–ónô#Íïw­–_y°l"X&¾;>)·xoO›&´ÿ&Mœ™ØHŒØæjmÂr„ˆí-~‹ðƒÿŠ[:Ð>Âçžh Të‚“žéM OµÏ›ÊÉ9ÅÏÐÚ.ðDþ›Ñ(Ø:Ì2å« EB%r,Ø£|¶ \&Ú÷çŽâ»’ “yC:„­H¢Š°`áå†ô³Â3- ÜýL+ Ä”ˆa?¿¿¤÷ «jÚ>ÿòcù;_%ʾk¡ãáÜéÈá2bÛÉéŒX¿y^Hf[ï¸çæÒ! ÊËçœfVEš æýÕA·:¸DXL7³ÁnÞ˜‡2!MÐ¥ÞûF1L{½Ì'…~Ò!™>©oI²]²JãŽxgj–”g.豨’x´T;ÔÔÎê”ÁŠJ|@§@|©ÚväZ¿ìi¶ÃW ¹­Up.¡L<Ô yÆïRIc}£óO$"BX±ë’a•›B7й¾%ÉóL<‚C£°o!^®íÙªúQæ.jzœóSjÔTk¦æ—!–ð2—Ð $ä–¿îÐ3´´y;K<Úi{tä -N4]Îb›³L§0áCÿqã‹Û nÄöèIr"ËŸî:”UÇ=ç[dº‡CAVœ>NKø{¨*Q–ò=F¨¥ÑD¹Í)1&·IærŒý¼“¼®§ê®Ÿ%½q±êøõÎ~§Ò©â¹{¥FŠŸ¥¾¼mÕ;PµHe=MšÈGŸ A|Ù‚ƒ«ÏZ’¾Ê^éõ˜ITÚvº8Ð^ÀYô-=ŒslûEz¼”N@»´h(,ò!¡¯„óž3Á ÉU䜷v'¬ÒñÒRÀQ_ 2wð×{Ný匓¾Þ,l½ãù(šE$3ÝiµÛ½`ÊQhbüÛc&¿SHcŸøxþØãךÎ-ž&Éšù~f~>’D ï½/3¶À%x«ÊÚ~Þ7GIêÃ:,Œp *­ÒILîF{cCìpŽæß&A£ƒlš+„‚«Þ¼ëqGŽæèúÙüP^Ú!ŠœÎ æ)/Cö[7a±4>;”À̲Ðü­CC”¬â…Jì¡È–è\Úrµºù]€Y®¶)21S88>wœ˜’—­ƒÑrA¦÷›ª €æ†¨;î•ú¹8¾©¸)þ}æ1U®+ŸÑ-Dð±ìPðªÄr¢Õµ½YÉà÷AÂ%\Ð%fî4Ì¿Å6q,Ú"ê p•-³ Ÿ¨y¿LW{úª|2?Bj•×EË Ä®IÜwv–"+áß<Ûî7–r½.ÿýá”4ã ðNŒ×,?-éÉeuøÀtÛD1Q.^LŽ‘1.ŸÝ\lm Â6}é]§@‡ÌˆôtôÝ­I¨0af•ç@#å¤C¹m“\ð•^«F‘…·ß)~]ë{Úú.±º £‘¾ 5ýîXçƒw\%m­ |S4ý©%± ðU<æQÖ…ßÒg)ü­/—¤¥”Žc4rLèØÿŒ qTÿrž.èi+Ÿdݹòf*/@RÉt¡0#—ëv`GÐåÉö$GxèÆ“r÷ÅÞżLœ…¦œp,æwš%¸w²·ƒ#<½òîÜ,HÔr;Më¢i“ްu`Øœ»g£ÍpùœVßÜŽCÃdŸ‘rèÓߦrùA²ÔÐ}çØ(8øRõª£ãvXMUì¼q¸²s HA.ÈEßÙ‘O‡.ü„m>·ËgMæâÕzÂt¼§wŃקY.Ï߉wïK<°!ÏØ0ªç°ˆ:ñs¯^€±øJ™¿‡™¬˜szü*Í¢/«} ý×ì_¾“ ªÑõø@„w%'ñ§ \~š^,aü‘ë,¯B™Y)èø.L3þ[D?åÒªæ^VK[:H'å7÷¼û½ÃÞ¾§Æj^¦Äy2ÿéµ¢áakMo¡@8GLÆîU†‡}Czr»/ÇífyïNͳ{¤ 6Fáfâ÷㪡'Û2—Rñßß¾±¸ýäš²EYëá `…¨Š4J#ØsØ+c/dÚÀ5¢ñðªB>WlšuN;Þe¤0æàü`¦{ØÇ—Bv›«o´• ÀëM,•ˆiÍÓqd&†V‘V§¯|g(ÆQÓÜ;,i¹‡¦fE!KJ+sU€No&êVY­È·ñÑCDjÐU@œðÔÆGLÐDƒDÔ¸ÛÚŠP–™2TªÍ‹ö£º?ã}º‘B>¢EÇ£å$ LÙçÁYÔÈ,Hÿ+c’ƒ ïÖÈ&’VälNFw) )T™o¯<ø8[ÀþoÍηc”Xe.eU›ŠÓEð”²P¿™6M¡á¯¯5, ìrœý=ñ0§i“–.˰.B”àg¬‡4ÞØ|²ƒ`~cõ’²õ·ñÐ-%S{ïÐüSó‘¯lr8• O‘MÄ—@Lé ŒÒ~ˆÅ^^Ú~¾•½NίP¯]SÔy—jÚ‘=³ÿÁP ʘò05/û±¯ßxôÇßF}“é7¿„‚˧Râ] ¢eIìV˜¡f‘^mHy߯$p?ç-˜¢ä€ËÏ”½‘ŽL •6åÄß! \ddfG2<é{” ®¤Æ[̪못@:n¡±nÞÄ¢¦ZøZÉÙÚ JÓŒ¿G RõK*ˆä“ÎoªB^º³Âë⃴%Y…÷zi²¨I§æîè¯0:3—µð*öZ=€øDt†Îò·H3¥ŸRY_¯å±v©øØÍ‡aV<ô ¼¯í†-=ƒp{[xÃÔŸ$)ö»¼úÎHb@YB1Iº§Š÷Ê[ëµîïú1ƒC,³äµZŽ'™”ßÌ£á/™À_ +¤Î•{]˜š{Ù{æ›Ð½@>ך=Îä;ÁÀ]fÈÄïµ¾û°«-Û¢Ðçß¿w0Êf§?öáx¦aÐêÕ ¬iÙQÔ•—ïæöƒ€§ªŸ&²Å‚k·Uõl,(Ö¦vSéöŒ‹Ä®ðW˜8©yl\̪ÏP)éf¨¬J÷As³|eŒ´°;DÚ-|ö°ìS^‰ Å@è©ÚÔ¢Â^ êL:‡•k=æ`Á¢˜`ø©Ž“>¤žsC\.äâ$‡<+Qœw·ÂÇWÂþn¡åÔƒ…±É~í=÷s;˜œÜtóðrx‡0¦{}‘ðimü’2ÑàÐÛæC޲0D(iLï<áøÈ;˹@ÓÍSÜ:sÑ·—“æ`zãÐsï2tÙÅ·5ÛÏâîóñ ÝXC‹GW¸þ.§îÈK Žuª†¿Çª$µ_=ß\Ã'ÊX”éÏ>‹ ç¨è‡7…À=Aæáí¥Ì¡‹ã®ðKîìc(g¡νá* ¾òcoÌ’”ø·ü«}®YnÈ(µÍk8÷dTàHö_¥$ÒÇõìíWytÀÍyR]¹%ËÖÃjH~VØœ¹ÃUa‡rˆöÕɸ¢ÙK®ËúgìËûbô¼Gé IAZï¶ŸßpEÐÅÆÅ„k‚YÂáV'Nø’þ½7è)^Ò(Yêsåò`ì!Iõg­¥ê7CbZ’šùð¯ù"K.4;Ñœa•nØ=Äx˜gNKX@1 zÿ{ÌÑÔaÅÇëAJwÛ0dâz&nö£Õ|].ô[Rª¦òˆ¤}Kr %®÷&¯[D u4rËuÏÙy§Z®Âš N&Q×Ç™6>H8ã ‰b©5²yïÈ­Â`æõ'c£ ‡44Ù½>S"p­¬e怜dËcu¡zHCý_ñÁá(‡pЈ~!%’ ø·‹C¡„¬wWã6ÔZ·d¶Ÿrš<“ûdˆ[_/&¾8,È.C"Ê'©Ê%.l{¦jve „RÄ*ut½(¼]½³w•b»¿©Œ)mW¿r„Àó0`»|æ²Îr@ùAÚÃýL%µDn**mf~ˆ"tpoÌa¾ß”üIqïbߪ[O=×-êj3ìÄoDÖLåûTÑ`¨Ä\DÞUíÉ8øåêõÇîŸ[küö܈Ö%‚Ïñä`j+©%–…7`ÊË|gLK¸íFöx8ßH”ïàa¢N'2E²(Û¹éNÛØ!5a‹”3«4ßröQx¿é3ÚE9yn´¬†–•e~Ä$„ *F¿Y®ä´Ç:æ‡bpùY¹š¤¨i¥Q4"øšk&ª*‡‡Ò|$ÿ݉&¿/ð‡þèk:¶+fþÀåà†üÝ»¡=º¶%ˆÞÓOù˜¦¥…¯^z!\x,ê“ÝÞ ÇuÍTòyòJþH’—¼8Û£äX é6Ì;ÏžJ*ÂFý1rŸß~¶yŸ ŽLK.××ýηŒ+O:˦6¾¼úç%äGXKw\xïTþáuSÛˆµÐÄYhfȿӥ¨Ka>¼aÊ£(×<= aGp9T'W&üöÏ ±’ôÀ0Â=xͽ0mÙ0ú›"IÒ)Úµ—ó2¾ ªeóSO–q°lëó‘ è_<×'4ueDQ¢û}a(‚†Þ¸ažÜÃÂÝ\ä§‹/LÛÊM|Q3þ³Ï3kPß+$(7ÞLÌWÈF×o8)77x‚ZŒÌ­$…ÞÂHsêÏ‹ {í1õ¸•½–®wóšñ¢]\Ÿûw^=)w6`øp B…–$ÜU?¤[Ò1ICù»jCù1Š.ŸxÏæ·NŒ¼Ucš‡¤ó¿¯X­ì2Òváç|ê^ Zs¬Ù¸-`x*Ú´åŽ=IVrTÉ¿^ë­x©Ønœ¬*”.‘Á”ål°c®CÆê¢¡—Á\ñ5¯’²ŸéQ¿Ù¢?ÂRƒƒñ M9T+«75y„â _ûµšœ¢É¨ä‘Þ9tŒuZsky¼ALÿ1Gü{ÜtÖÇv]¤øÞ@gò9¥Íƒiô ›å.åäÌÒ=êÁô­TUêT6´ãeVä˰N3ñK´Â¿Œ2}RRôÃÆúÒ]&@sOYÿöGS‡ÉîËzTý!–ÂFÅ¶Õ ËÊ»ääç¤÷÷™ÃŸ8ù é³[¬´¡Êά¹††ÎÁ²«år”d$J›I4OöX^]BÂÏ'œ”#S5 PÕÎ@òwнū‚ ¼Fõ<, o/Ý1gø„ði£ùªÌ®’> fàÆ+?e®|ö½"x¦±-îK”õãÛåüüc¯¿góq´löOÿ8êö˜`Äþ=»Áó·}´üjƒÍOÚÝ@áϧ'¨47âׄe‘â¿ÅÑ@œçö)S8fá‡tpdn’ÍÈ€J` RËÄš%lZwö‚å5íezƒåóÆÍgõ%Žt}>Þ²CŽø!óöߎã'aâ²ziàx ž½µCþ^Cg\‰Lsu+É *‚€|ý7Y bO虆Ö^MèKÿŒtÿûÔY<1Ú7€:Í}2g‡Ü§|ì­µé»ÏlPµU„U¸½EØŠ4b}‹ÈH Mü:ë3L›E?¸Ûé–+Ø',»TFƒ?@Sz¯è!/ü8›®uúÙà—ת+yþ·°¢1xa&ž n’æÕ7‘?ÀaÜ뮌àýq/D8·€ Ͷ£){ 5ÚÃàÇ6Jꦅ¥qÙq›Æ8è)Y y^‚ñ¬"ë…Ù"$ýí§An;ŒlÊy¸O¥3lÔ}Ù+Ù“Æœ¢m…Å…Ô=Ó+yMÖÀyûÌ‘~hÃMˆMi¾iúÑÙ±qå·/k•ÇV t™±Â<Ï7ª‚¼Ò½ˆD­[¤*Óì.™&W,ìáî%«Ñ†æ ‘´òIœ|7† Àj5J;¨¯5¢G² Áøú¿º©ðLïí l{.P„4î0K¤Ð°¾>§BR"œñ؆62*ÓD'zè‚f³G:L âëúNŽ*ËŽG}a¹ÿ 9ëoÝívî¹^Ð1˜çH3!»=9‰ƒCA2«7´sIXköÅèG¬3"C•è“Ys&yx]¤…#k³éKu‘«ÔP-+q}¤>Æka¾n¦–àÍÝ]pᄺÙô3§Ùo²»ç°Zî1N[?¥GÈëÒè‡÷Túk_Zßbl¦–#“ŸyJÒ´•ÓFdôàÁ¯ÞH‘É–âôûUJY“t=5b¯ˆÉY:—jÅø°‰¶b+–oμ hªbæïö÷ Ї“ôÉ%¥r¾»Ž¯Eµý_ZœÑÇc¢Zêžkkáj߯*~'¿Òä:Žx—b¹U¾À^skà¨+Ư©ºF`ÀHÊ„ùuÖÈ£ptjC²¶‡füå iâ,¹võ MÏ=¼BÉ'dËââ¯?¨ÅEOÜó Ž—…$ ÿ[“lÀc(P¨WÄ^ðŠf>z~Ì{ˆÀ&?kõ+;‰>¤%%êàà'ðH[@GàÿûóiQ´”cÑ=I‡õÝÉÚ™F¯ÎÙ©ñ­Ý¢^‹ìudd˜ÙùçÎNÈò¶ÄtŸ ì‡.aE4êCB †Ò½ñ·‡™]„Ýd#ƒ6ÍgH.s;ɘõž#Ó—'å…¨žÙ`Æx7ÀÜL’pzÁåðI—'(›ó8Pàï9jå=3‹Ê—am…gïÑîaH÷3WD’fÜPZx- ¸[N®Àì°É¡³ÞPL’kÈ_6ÿZÄLäÉ¥€‚ý?úõO +÷Ï~Gy2³±sÞï(MWÊÞÿ]é#Á"l àsUãwÃÚ®›|ÕZ£1V Ûïô†¦tì¬õ<-¢×稞̽QRz_²?“œÿ¤Óõ(œí¼¶[b ¯†£ô›  k Ç"ÌÄ,)ðMb½µ‘ ­Q ØæuÊ`BðÊöãؾ#Á¯°Hê·?Ý;-Y ÈÓþü aEëYoÉ먹¢ˆÌåjæ2î¬K¸ZNìØTë¼– öK[nj>,QZž¯ßÁÑbÔÏ—^ã÷¶ùõKYýýc!Í·IÒ ùN>PNž)Šæhìf™ EP^CVnJm`~ Ò}ÇhíEZ^ߚ̻ø¥hG»ÙRµ²È2…É=: ì•ÁHðÕ%¨V•¡áûÿÝ/¢ƒ˜†hu|š_ÒÅ^\¸\?§ÂÙQý#f©úw²Úîsp[B NýV(l°iX†÷N@m×/ÁmßCAT}ÐTy-î’k‹”§‹ƒp‹Bp IY&¾Y²Ñ¼äq{Xœœ{5âË„lêIñû{‡‹œ¬èÁàß}|°ü{ŠÑí«–¦Eö$B{εulé‰ÊPŠ@;mГ\€jEŒ¬¤®Îa™#¦O¾?•È:=§fAÿ ¥·|<*+&.¬ªÂ§I.=ý:&߀|üŠ9oÄJs^À¨Œ|SªöeaÀï¬ïóßv‘ñP^/ETŽ/c²"—ü»±çŽ==%·¿*„M—ÊÅq»>ù¢˜ˆS„½Ÿþ}ëVx“jE‘ÈÌÞ`7÷„à™6ºŸ$™“šÓ{œ[„ÖåFñ1JÓÞ¹«3Ó=~3* {@ð¯3è4ÇfSŽÅKC˜¯¯,—vZàÓƒÜjâ`Ú‚iÎÖÏkiã9½^ÛüèÅ(2µjÀϹî£jÈf õž9x“fÒ¤c[:¡ãAµúîÜÁ½‘(BÄMúÛÞzJE1œ' ÄùU3‚*Ž7ê¬øÂHD¡âhÇ …JŽ+¸æ«>Hêo賈q…ú4Ùt#í½}­nx]ߨ•º¢¨«LY=@¦ž)íÌù*À±®«æc_æ‚W¦v÷wNŽòEÖvŽý ¤U‡Q¼¢nà$Ñ´&#TIЦO“öGlwxªìzÆ7o+‹²Í‰ôÑ4æ7R®¥(ê¦]’ð1¨ÁU8i|£’­+æÖäœÛ[[>ØŠ{VdŠî€õt°¹tCG`;«I€„ÇŒÚê8F`lk"²³€PUkI…µ/'ŠóDûV´ðÎâ·1ÔzOÕêg ù›0 Ú}.»$8›–vÖAÕnËÀˆøk<<¬{\­ùŽN\çβàº+œë™æ±„bž2¹Ò¤ŠšÜ‘ç{ šoÔ˜“‹æ«ÉêÔ”Bh¹ÆÏÔè9 {i.p¼rQZ–H9Cj†O¶I, ևȬØËùÎ ~zy‡ÆìPãÐ!¹ŽñUFʘ|Ú‰yâ­¯Ô¶€?“Ó1\‘áC¾§Y·ñ²GÒ¦ØaÛ¢bÚµ1–Í/À‰QŒ„ì½$Â8ëˆS¥w‰Õ€S×ι*Ç_m5\¥ÎgG真^ÒHQ." ˜­r‹VôúN?•¶\âCrwwhOËT&Á”‘à §¹NoÑ\´Ðw¤ô¨sMÊX”™Ð°ðWǼÞÑÔy:IeeÙ¼’ÂE:üBGôÏK“Â<ÝÐ|™˜Û[‰\ù*íòêF_StÃÇAH…E>õå»A˜Æ!éÊÄeŸVº‰ß¿eE ENï—UÌMH+GHàßéÐï{ ÑXÞí*Jwœ[ª¿¯ PJ¬ýôÂ#íe§TB(bjΨfˆÞçþ[˜ü1ÁÕõˆx`r„ó†ã¬ Û¤×dè¢i[ qºAçÌ{Çß¼=~b`uòèB çñLå]’» _ºŽð—CèÂ@õ.+>ê>Ε4…³2Ìì%²^¿9M“«sšŸÀRšÜFçX|"fþÁ5žts>Ä×§ìþmFbùïö·óAæNŠ©‹7ˆL–įѭWÉkž¾ÁÉUÓÀqË3✼wfOP¤)ô8¶Ô:Át„ÓùÓ ˜‡R‚íK»ˆE2ÑjÓYGŽö(Œ w+7‘O Ñ?HM€ôO˜ ým ¬mâò2g6Î’ËXÊa6¤ý…[8ìœZYÇ9íx¬ ùëÃækÑòìe0S´Íö`w‰Ú—ý*5 ÊðëGŪ-zD&º ùcÏ’på!¥°bòc[£urî²…ó7þĹ#ê#÷†ôpZçÞÈn>øZ_3œÝü+ÁB,žãB¸'䎄'F†ÅÇý*$é"‹Ž÷µÞ‹<¾ ï/³à¡©iô†­ ¼BEæÉ¦tuÆ—2£Lv‰Ø}AÚÆQYcáÁeR´÷ÂÞŠºëÈõDú·ô­RgÁœN?R»%£EˆÜöúQ¾nu›ÙÇ’)Àjy=.!n‰2«G´j¹‰³÷vÑDÓTÇq‚½´•ζc­E¡,d£Ríå¡;²Cëë@m8,þµ©çÒ27ÇŸ·ZLžKe­@¹ÐŠ`ÓAͼfI€臌7‰ú—*#Ÿ˜Ï!íï–(}å¡1®o8Ø]ì6o! N „d E`LѹoÛ¨r¡s2SÄíÄ™esÁáë!lB\$­†ˆóDŽÄy Cf ü²À&8C¦ülÿ…úßûSº°Ð_²VºãL6ìéndH1Qˆw>d´þ„E¨þ¸¥¬¤€Sª aÚ˜ÙÏò¾Ã¤œzÕ‘“ T½Ð¡ÿ¢§R üTÒº$ˆ;Ckù!i>Wf?`bùzM’—Ov-`+õ"¡Ä 9WÈÀä«zIeò# ³¡¸Úm†_Ñ`ÖcðK!ŽæzëpÕH¬*SýáRKÌß“"Zئ×ü-ÇŽ‚‹s P¹@Ù_|љǮSS‹KÍ 2áYh[+QÙ€êsлÅ i ²˜ð¡^|Y›š‹ S«÷@L‹z Òá±a“Å*žÖÃ;ˆÂ é ½‘§?‘Š]ÓA×HbÀŒ±(pÕ”E$ Ž$úœ¢Ä¤&™‡é´¨¤Çj!L¿ié3®çˆèì´ëR¡€jtÏI:0º¡\ ¸TØÐ×v{šÜ_¿•9#ˆÈkcðµÆêø»S2'FßÈ~ü-¬»9ñ*2sãӢР‚ ŸH‡lmße |FövÓ*Ñ î‡îÕôOÅgª€Üq50ª íÕûM3Õä$Kß§©ý²~[~>-¾GOZŽÑ MdD±:«|‰êÅèáï¶+†!ý̨%ðÇþ[n·€ˆ]”.ˆ?5Χìƒ&ûŠ/œDVøÁÁN% xm¢:ÏJìºþŒŒ¿'o¦Ê€ê?É#ÌO™ñÇù$38Õ2ÚœÕÿ_àÏxÑfuÏi€íÕ§hûp]µš5r¾ ®ª¹ãù™*—C¦ÖqôUóóQ76×b€§……p–óæ(æ@ÉGo¡Ø$åE·ª¨-õgSÈpièX–*Ñò'VÍyÎc4‹2ãRsV¢-ø=]ßË[N§Û¥ÿ06Ï{h ˜…ZNAµ—Ç=ÐE0þ!źƒÃ¥o‘®§Ò•/û+©?à6olS=˜ºk¥šÜâFò|GN@}Ð|–Áô¼]½”°‰/)„qÅb׫ùA˜dš·Æ¾Ý¶P?|˜’á-bkõîËF>ˆÖÌÝkÐl@/ßq´™ºè¸Aº€?Ü~°'–CšÓfÚ+‰RØIJzà"¼/2Ä»ÐÀÌôÅì8¹/Õú•wU ïFzŸÊã05þ#‚~2¾2œ¶ãÌO}æ’›>àù÷:!Sê‹#¤Öõ ýl| Ú!§·ÂØ;Ô Añ“3„&—”§³£ë_‡žÜf\MÞ`û35Â-¨‘Úý¤óØrT ‚诰gp– „·Â³Ã{ïùúGÏ›žÕœ34*²"⢪,´‡Pèƒ&Ù˜dŽèÍè§•€•/?ö¯çΘùÝ/íИá•Ò J‹”eiKØw£ o!¢Ç»í~}"6»ýõõ¢¨ùH8©®rÄ3òÛÂJ?I²bø|;Oý‡QöN>TçK¥nt4x]${†‹¡çú Ʋ?/¡–ùÐbŸGfyN×' cÒ8+§{¯8Áº·ðiJªàôoH<à–—Þ˾ñËŒA‚‚¯pœèªëº|z‚¿Ê ì°Våõ€Â­ñãhØöÐPŠyi“ ¤i÷'ÿ½[7QŸ”!¬þí :¡ýyÖöÒx?tÈ©à–+ýQô:¸soAhRØ-fœÕ¦Ö°´­ˆ£º­î¶Ýªfèc}lÞŸ†ZEþQMQòA çã±VêŸ12é @ÉQ¢jy« #%š_ì˜' Õ¨òÂMš5ƒŒ/æ ìS`ñvJ:ýå@zŒìÁöl}`V£%·}‘§Ž©qè'¿síSUì›ãtÔ_3J¼Ô6ß™}ÚSCÜ$d¢º¶øëŸ\'âaÃÿl%}ê…ì±sÀñ‚»«m LÕ;º—íƒÉåý¾]…”Yû!­¯¦çb„ôOòðJÚõÌŽÜ‹%Äl°0ÿVMôO\mHª \;)Õ–TsÆ07Ç q©yñö÷LX܃Xd´Ì'Iª O\³¤aVjÄs©à‰X\ÚÎP¿yr®ÆÞ~[Ã÷ìšÑl—eÞJ²ÎK»¦µè”9pÑ¥‹7À|Å_¯Ê.ðj‚£!¢ß ÚÌyŸ>QPî„W½œdrh9øñûv^®ÿ¼³Ýí[^+ýó=ß3ûõnCºßI»ä‡~”øÐ¦F–n qªÝDoò|¨&dUþð½ôsñ¾YÆ%V¯7%îA&àDO·«¸‰âÔï&Û߀µ–ý)l÷§ÇZVSˆ³ ƒ…ì¨!ËÞ@Ú/(8Ž£·ÓA1˜£° ì™’ûsësô•Ñò¥CÙ0°n4>e¦£ÈOÀ^Lµ6#Y6RYA(•L³ìdbä~¶[„ÝŽ"¦õO«QŠ1mÔ¡¼w÷·PRªÐæ„J•šoa°<ÚŸË ýWa4[Éasš—7†—Áí'Ø»s•`^Ÿr` ‘aÞQ}î¬Ô8;¬„ð°ýéc³ÏïHMó‡5¹=Ú¸Û,rÕ!qÚ?ñÃ@nâJïo"-•áøÝò㤿VmhŸij¹isÃô?lHmC/·mî‹ãdÝåùß7 ;vWÔY¡]BÈlð‡ò?‰”ÌùÎ Ã:¯«í|iÜ# ÕN,æïIs0L¢°/4\µ=Õ+ÓvRòãÖŽDˆ}6 Ä‡Ïæ½ÔxfC·û”ϧ½A¨TdÒ…`0§¢¿—÷ykv¨1þéƒvrv½‰MîéC$šâ•”ÅIJµ‹qãœÉzéovf&^±y ÿT^ màá öàH©|ÆAÛÈ?™Æ¾›CÛpÜv–ZŽþÜš˜è—"¢¥ÀÎç eÜ£î½ðâÏÝ¥EØ+ EfçE”ß¾"~kÕ×?Ic¾ÚÅ}S î•HiÇ!Ê'Ì[`CYH¾ïý=÷‰‘ëø¾åèH¯^ cå  \,*1L4ÕQ*SÜúãl"ïãýªôÀCB–óúþ|=wD>?[ßÀbÜ_/wBLG14 K ô6hc@}ÂC½¦ Å)–>¼¬rOƒ¤íî.ÁÐÛ§,Þ¸c›³rPõÁN[š¸ëvÕwáªá‘…OòÖ€›,Ü·¸°Ê›¯·8˜zeša`2ªÈ}k›Ïźße—m7Ùp:–ü/u“œßm=¹«è„;xàÂ,Ò‹û Ï Ô_Ò íÏÂ3—Äkÿã Ä1+Æõƒ ×X { ’À…ƒ,)„w—,Q ÖÐÁØÌxRGƒÌÍ¥$?>±¦™ÅoÄb}¡´ÓMŽç\)¦%¼­e a fÐðý\µ‰ú›tñæe¶Ìíôê~±ŠÑ~(…yµ ü‘$’?¾b;…TˆÕŸ‡[¿Ã¿9Ù(3̹*ö€ÿ6扟³œ4aX~žÀaÐ[C¶a“§pÇ…$=Ý4à3(ýâ°Ó}ÒÜÁF<½t8ˆ™¹É¶g™ç¬¡g·!u‘Ñ 4Á”¢¬Üñ]FòòPG ĤßáXð;r.¶.Ò²—¤~})£”Æ&ާ ÖgÃ~9²È÷cF‘Íxïœø‰:DByå¶–ì‹””&a (\âÞ¹´ ^°šxÚ¦±Ðõòå]h—–„ÏŒH˜­· /c;Ê kß^°.«ñwFuÊyÒ:ñX`^–X”Nl¢õ¿··±Øõ‚sàÞå¯IÔÀ†šÚfì1«÷¼3ì85‹m $-¨"ÖQÏÌyÌo¹µvÁ̆:%uoÖÍνé~ÝÕO¤ÚÓv4 „È'oÑBdÉŸ(\½ë>Qýê›ÉÆÊË¿ohvo7Ø[>›»=æèî󽄃4¶Êäügt’¹Wf²´ÒJ¤Ÿ«å؇¦SÏk¾ò}; ë°OÌ–öØAe‚%Ý+­ŠM uB`É&¯Cªff§)S$-”󌑯îr`õ¡!{dÕµ––%m½>Ì‚‹H¿æÑÄë!¾B6VTk$Š×“y½îõ#8׊X€]ͯ-çŒKe«ôBt{ETÇÀö:ÿ¢ÎÙÈC+sà&œ¥’ÔÖhC?•C²)ë{kÇsñ!%)vúækD:1™ÿí² HG$+­„Ù3\~½ÞKs½ÏÿHõ¬“j·…gÄèÕgç§ä^útórv÷ªA–|2ï1†Õõ0d‹¤CMP©Cý¼…+l=_›ÇdÎ|>_©Þ×ï#gô9f,üðeÇíEb€f‚;N¹ÐváKÂÂ&[þèô#¦ˆ˜Î—ÛeÝÜU…·* \çûŽæ»[qÙVÖð M.£]3“ómØ0id»B`úðÙ>ߥ1q^¿=âè@e¨£‘Þá¬'ñÜbÐ&ÕIôui+Gæ90é†IKïßHâÝ£M«—«!¢®ÈZ~nãzzdé}ú£êÑ_„•òÖf‘‚F©O•ŒW=¨†{ð·gðrÒ%ðª2Úmb¥Ù²•±_` [N+åY†-" ½[*³õa-vÖ& •ß¾¸«ë]dlÈóÌFUŸÿJ£7ׇǼ.,1ÚpžaR˜¥n­~E­Œ½š\²})²½lô%´ðËn‘?à|ª­ø}9ÚuŸ3w»^Œñ‡tÓ0¼ žƒ %¹$XzÕlÁ êï[(ÇwÁyr¸%ʲ6+¿’¯TZËܾÜER/¹9n+¤OÖ„÷Ú$Oãaå^FnNg°Y§¦çÆŽRy ѯ] žBÈçkÖLâ^¦pŽîµþ=©Ž =ÉplšÖÒ/P|é)ǃ¦eeÕª—:‡ÀÏÕÅn›, ë asªþÕØÎõYab0Ûo¨¬?éDé7 _‡â¡’.Ô|ù|¼·bŸñóq·´,¯/›Qsiµto¯F¯ÌhäÕ×x…²öK<0%vL'L«±¹–ì{2ù Šûì~ºèæ|™†«+Š‘¢•*ö> CéŒ)ö§וRµAQ­ ³\-~§`1º5£.ùÄI³ovyás¤±3œ*½1Åà\Nw1iË MÕH‹O›^}Ÿ°:!– ú·zH»\w]Õ"Bñh|?dÉ¿Þf‚}mbè~ ¾I:dR•ôMîŸa°ÄLõyC8_N“8ó)“Mlh+ 놚^÷Ū’¸Éi' UÙúcZVw/,RÕwvn›:lT&¥‡ÞƒÇ¯í+­1ú8ø‹*XDó€ƒ* '²÷¢›ðŠ/ôðF~ PþÖEŠ™¢_Ày6‚ÀlÙ]‡qÞL«­UÈËêS¶CZ¿rµDL“à›†iû~JBûhK¼"³#,óPÓ_—î³Eç‹oˆiüºNøMhä4jáy„ðÆ0Fíà ¥Í~àÚGêLë=§¹çs"ã½ß³™B4-WÁÀÿ½3Yª•çé}}Ïúc½ûÉ úv¬¶lS)YMŽ(¶|AoƒNtWÿ\ËÊ‹'î”#,u4H7'+‹qÜÆMßówÕ/¬û ƒ°:X²hêê2å¦ì}à“-&m6ÿzÐxU;Ké)_‡®Î`o|¤çUNbËôN|'bÄìn^ÖLæA1oU( Œ~€æŠÍî–]X¾$´C´ýþÛ¹~))KA¸~öR†¹ÔÈa‚? œÅK“÷v=NB=3÷¥M bÞçi„‘† ú‰øÛŸ@Ói¡o–û+{52³ÜEåÒ,¹–¡¿mŠbn ò¤ýañE³ØØëþÀI`ë±´d BOr;Tι/Â3þ§Hm;ò<|äŒí(N¡ª§¯Õò¸>ýIKzý j0CæxÑHNþPSýqRþ[wdÿ£åiÙ¥íÆæÓ³L/Àáž|¦(×eàÓ´¯1CÔOÐÑÍ*Æž*Ý›,i¶C´ßt›§òseÏ\ÌE]¾ÑÏu—åSCž[b:óÄ Z'F’!„å.€Ð*üõ"é¬Ó†¯hSÉÖtß”†˜ÎIØøF~Ø4*øó0í°+=PðP?Ÿ¿eЋàèŽY  ’Œ ¿­DrN«â²ÄƒG>Û~Â}£D!˜Cظ:XX,ÉÀæV üÇô/¡0z£é¾ÍÌuýj€ÁUx£.Kfª»aþï>¨R©­± Ïj½¹5öA8%=Æ`6·:|—™ãoÛ(ØÖýÛcý½ó„bÒ©ã¼ IÇTc0~~Õv¼‘&ÄúîÐbE²²¼r£5ëZþöÓ'ôË—‡¿¡™iï2W]ùHuR›ÄE••É–hsÈ¿O³²|©9[`#ûÊ¿µ#ƒŠè¯œ˜j¢~¶:mNpEÂ+¼§·hAÈMOæëe°!ªm܉‰Ò1¥[<¶] fpsL¨ñè6Ï Ó7_¦óuºwØÊÂ&šíN·¢2bY`±3ìn¦Šø<‚Îê)Ì'#¼_d¾FÌšåkˆæÎ”øQCy£ôͼð9økÞM³ƒð+,€œ#/Û|ÏêRyýbÓòŲݣïüÞÉø³‰ ^|rp¢†E¼’~ÿN¸$˜ÓÜ£†Þ¨L(- JÜy¤¨ÄgÜj½†¥ñ_QÐþ3G„CõZÏoaðkò‹8öe{ŠÍÔêX53DóïÏ_–Kô,¾„gPm! \‹¨Â‡‘ÎÎ J#m Uçÿöà„4aA/xú­Sj‘µ¯“Ī›7ø~0©mÞü¿Rò3ëê®fÒÊâ# î>ð5˜OqÊe’ž!—uÏî´±{»yrËî’åÆw™wÅcà^n¾’‡.ts¢ÝÎK4ëIwËø# `è¿õÚ±Óvÿ2~²¥N’±I¾Ñ€]Ôm k/Xkp{«ûâCB¤ñü4ê'ßáÃd›W@VäßV‘¥\p°„À#U¹'@î(+-ÁÕ?Öµ1ØûQYáC_Ó?©Æ¼cÔñ*Þè<Ó½ºÑÜ"¥À—†Ð\-3úå¬mO¢/Ëæ=TÜKà~è Ê>K$ùr$øOæU7ÚlxÀ7zo>Ý©RV!‰´=õm‰ø°@68 Œ CØ/RNNà« Öðs IÐc¢hJ§¬7P?C¶Ë²Ò~ºzNYšÖѨs†ÓœëùÙár¦ãˆ‚ŽøˆñÛ†Ñ3,±H3Ò8©æj§Ž QÜÍð¡Þ—#(´/âÍÎ=úoâ›| ÅÒŒÔ)m¾Æ5’÷}IŠ(øð„{µa_ãè‚eé`µÊkÞ9ÀƒWØTÑÉVúבŸd^™ã»Ô[PÖŠ€×ÀA!¯IÚ‹fAo£V aÒ›µÍWê1ö&ù÷]Šù¤=©83Õ¸?^ B¸Ib<&üí„£%yBYçHJ›e+pœnÆZèÅ\Nãû¡†­ëWŸãÔ<Îk–M7é•›E£ëxfvuÂ’KË5ðn'Ó¾¾Jå›aów:~O)š9™Û˧iø©»Š.åA&Mû¬nlp‡/I÷c:Ù4øÔ‡©.DCÕ²†™^¯¾9¾Õ‹ü úÀ‘Äž=û#½¼º“4_PI^mm„‡u?‡úR]LÂxy©¹]ŒðèŠA;ÆüÛ¿¤"v'ƒ -€YùΔÈ|©xLƒ+ÞÆ×¼Ø±¹¼(™Eè`anãŸ'(á+˜}¦Ò\J›@£Lÿk Qü»è¿N—Šg£ƒé×LŽ¡I¬SGÛN2¹²ý ^¬dS¥=úéî°¡î{–?Ÿäc€(æß–6eÐõ_A&cÈjl­JÃ5œ5>KN>`ÓwI„'ìJ2­{º£ÃÄ|Nb®ªj›I­Å–/ uü8åm„DGÃN?°Ò¸åJä€ ¬DZ¨V_[ùPÆ:å,ú” ›«º²¹Cv **¼xéßO:QE¾è@N…éze`ÞúLàL‡|òCê#æe= ÿ¢jáeœƒ›ò‚׿…³‡^‚ûF’\Þ OóÞ* ^G5à{ ÆZÐ¡ï ….4ç·]¾‘_â?y{„¡äù›u¿˜Ÿå³+Îë×lŸõšsè6 1Âö˜žCG ÔyˆÁ P0ê?û´µâ_ž¤?B»ô>”^}Ó-Û¦ÄÓCF¼˜º¡ÚÃÞ ‰!CrX¾Ë–'¨ìßQ2µ¼(±½u´¥Ævu®òà×T¤ß¼‘Ö`û‰ÅGêªÉéÅ$;I³ê²™twôÜn]ßžãR22§—¥Åèz¢ÚÂ…Î/Lk4dÍAÕNKÏö¯|%õ*4Ôßql¬·ëMlf*3®¬Ç…$ß½)š+¿LD$¬¾?ó»×~g½‘n\% S?¢èç mûã¾ØâÍݯ9ÆÁŸF}wãâzéû¨hÎàÄK<þBZ£ñò†LzÔ¢f‹„NhÏ6!xÉA}z Âæì»ÙÞüzF¶ o±Í%¿½¸cäÇôUÙ:›ÞhYÂÛ¡c—á”pM0¯ôu³•}|ñdú™~é“ãòôÉÃ&RÉÁk3€v ]P[§áù´¸ëO\ÿÚ&òìH6?¨‚†m;ærí…2, F‰×eôá-VÛlX³!€ã/¼•7.=sM¤ýå°†›é“e‘ßþ™2! ¼O´½ÄKe?’¡ŽD§IXê›=>7¼G€iNûîA8Ê¿ÉW—‰…ÀVªAi]u£¼²íL¥@. —Ô×çõ)…C8[º– éf.¢aÐôÄ$@UÓ=êªåjÙ¾aÿ:Ù6‘,›‡¼ß¥4JŒX¼nS™)ÕDvLíQ³¡Œ#$frºz»æ߆î.Ô¸[OìÇÖÅ §n%]üŸ÷Üòí_ˆÄ[k3Tün4#Ht~‚g¦ã´ŸÕÀá·;Úa!ˆÖm2@M h‹Æ­lü •ü K & dÛ)Iúöqª½0Ô“=\©(DÒ¸:äA+´Š/aáiÓùÒÙƒëÀð¡E¡þð~•ݦYðFÜš­u•Á»ÿ~ ½¨‡ÿ; ’žÜƒ…ŸÅ%ŸäÍ-SjÂãçÌßÓH6Mš­Ï|›ò½ÑèÖ‘VZ•e¿*ô0¨MÏ˹¼|ó—h—uÈÐì*µ×óÔLh‹þz1}<àM>÷HŒÁg凱‡S»l<ܛӧ?2£ {™öôeÈOÑ«§@ˆßo× œnÛ8hø°_JNͼ¢ƒ†MàîŸÃ‚ðóÞ,”<íx]\bŒ{Äcó÷Ízô‰áñDá¼ûü#ÝР<â³äùö ¶×_ߢà}%òÀwñ’®G’+ɧE?L–p&¨J¾²Âø„¦õLxŽ´ÿõß)€É †|x{®®G|Þ„Q# ü¦¤blm;֞௜¨Bñø1]žxÚ¤úè"¼­÷¤eì™}ò\”gSw3–¨žjX!ð¥ˆ5n«Ë'õLˆ‘ÝùôJ`#“*y¨âMï={ý¤'0«=Ü“s©˜ìeW_Á~Ï*‹>™k&Äûetkîîøk×ì×i>q7¡RûLûªe¸ú©òpJ+ø•´yâ·ò<XXk~6_õû‡Ó‚½RŠÕ‡ÏÕrdÃ3ÉBo‚TE¼0ᾤ²ñ ûc·G9ü᣽j'fì+—·²,…ñÃëv=\fÈo0ÌÐ@”Zõ×å‘0¸ÁCÎáècfŸ9×ß%ÓT_ùô ȧ‚,äÈgáˆêe¯¯Öc—‡u¿ç]XYð£§Í ÅÌçCY1|¼PXܬo«Íã”?â/H˜rP¨/Õü´ýJ§yçoØHˆk=X³—r¼­3}s$À'ø‡ß’¿Õ§ßÇÜ󄾘PD(+‹B)qš6‹‘¤ûæö•X-­RgéôÇx4I“²ò”¨j>@SâB]×Uä~çýþŠÒhÛûÊå#› –PœË;äÒl~‚“ÝÝÉó˜á8g6€$£S22mNj2sl1¬n&|2ÐAöz¬ßWAæJ Èg ­‰À~Ç›oàÛ,NÞšò2×ü^% ºß%ÚLŒ2¼›¶~Ï@Aôj‹6¯ p+àKŒ“O’a©xïÉ!¿Iš´)LD|Ähpe{½ ãeåΛék¢dNxniØ(ûFûbÞÉwóú¹ñm.ºÃ@„⯫íÉÖ yuOû˜â–2VØû²óO~§ÆþÚ—9[¢¦ê ÛZ¼I##îÙýеòùka󿕝8Éïllæê·n–lñ.†þ†wE¶1’Ÿ‡ÍæQ›Á©À|I‚t NüÛ²³©¯IGgì[Pݺ%N¯¨.iíd¡çrŸ*ê—}}OyÝüà´I Þ@1%ÿÍÊñ ÙYØ¡[ŽÆmÞà|OhfN¹¿¨\ †0w,nún¾…äÈ|vò6ïKf6ªë‡Ïø‹‰K@2ÙWt#;X#U ;J€4ƾ`õ¶{Ö—ãw_ý&#pð[Ë D&mΕ;­›äzT£/!x$ÆxH¸T¢ûá6DQŽïGRÎ5ðïmB*=ž­9,OzcûKÞóßúW¦ÕCжe 6+ž"î]sKþ·‡íg,z*ý~mé:P¬4¹† 4%Ûÿ66 ënk¨y#)ÛŽïBI´‚ñk‡bÖý¶®Úƒ~«eDÝ–^Ì¡Æn£<‰XͼˆÇ›â€ˆ*C¨n–â}?Öäz2®f>î‡ewWb*./åÁ–dWŒŠÁ¦=JˆÓsø$YÛÑ/ž;ô¼]ÇSRllΊ˜§“hn+hö!µm tœ!Q „û¹Y«ˆëˆÎÁ»ÊFñU_}ìúdü¯±á’†®ñ–ëDó_ÿ0¥þ·/Œ‹ÔÈP§>k&.3Kèèi6ËÉüØø½ü¾@Úu}5ªâyR\ T˜àÆnl¢üùs–eAŒ­ªìæH?ðb{(ÐÆÚôß®˜?¦@¨è‡éNu Jßܲ]<ÿË;SªØ=û”i»/ú÷˜C‹Æ3o „)6mDëD(œ¬§èÛ ÃÏý œâ蜰®Xg2¯5”Ö ô»’(˜©7Ù=wÞãÝ,éfP*1c“@Yʃà&‹¶Ë$_•'@ ÌÓ†|Pú­É”+©6zñWz‰\ô¬TØ}ówÌíÙ¿#ù=OcBì„¿UB[Y é.±÷¢B8^]YÙyä,–xy.ƒ zþ‰/e¥C"Fb½}!¾Ðëñ åŸ&<Á,kfCh©Rb¬›ïŸl_âS_b¢ýöÅ­fõ’ 9l@ÀDžª@a„^cÈë¿^<¨>¼UHì L|WŸ ðv†=èýX“Yó„úÉÍ,"®ÿb_KùýÞU^ü¿]0›é15JÌÇve]W.?d}šèÆSÀè^Cˆs寋éd¨ÉX´'ב¡[g¸Ÿ/dHNœ›SDŒc0[ÿ²#Ù$õ+3J”93é†Yd€¥¿¥€<¦ƒÿRŒú}E%Ñ@óÃÓåÂtþˆI[Î|’ºG§b\wší¢\œ&¦T*¤í`W¿ä¥þ‘’GjôJU(Bü!biáåÏßú¢B’=ªyU¤ôÖz+l|÷e¡ÌÁÂ{zå4ÏHYÔ˜S€|2×2Ù{iJ´û©ø,­‰‘ù&`ñOÛe¶ÕTš£•š†ÕÐ6ý®Ëú”øD°º5.Ñ·9€•”KVØchëÄ+jí¹Ž×GLŒ" N.KÔ¹"Ö©¦íø@œ÷7c˜éoå›¶(ê,aÔ×@,aêL%',±fM´zþ ·ÑÑ…ðöJˆ8‘˜vßg÷Û$|dk×HúH—òï‹Q6\ 9Š$&oô(˜â%ÞÃ5ߪqI 0¤”n¹GP B3õ«Ç ýÔRÏG“ênaKêb„4'`™³Že±‚ÙÂ'„àö‰}0&ÔKg f/öûÛ´Íq;$ÒÜ{¤³[ÓÓ…U¶‡Ñ‘˜(²YŸ™¸®¬¹[O’E˜ƒp[~`*nÊâiÍôœpˆ˜¤êêCç5NùZ¼­XêoT(wH\·öà©è|^Z*dyÿ’ #þD> ü—så¦d@'j]ªKݼ Õi“‚t>üµ=Z_š$1jÕ¶uÛæ^ o°x×jÍ~Ýõbà8¤ûTœ5 lg6ø—ª.ŸpÞÊáçÅoQ8  y{%“&R'ÜìQüæâ/÷êd´ß­IeM¹¶}óYFxt 'b$st£ \êÒŠÇI†ŽC¸ùžÕºýu1Ài‘cŸ½‡hÏM˜hÏTÞœ—-@‚|9L6I…DéVïìÒ—:+§ :uüSA?CjÞ;¦Ö4ñ³ìø„|Œ½©-¢OÛ­…ã¼î÷&¤S¿°€G¯Ý·8}mpŠ—0ÍBIˆ#v&‚(¦u’Ñwt*gKý æ”Ñ“ú·%A#¶@f”õãÓ›f­ºÒ1;SBåá/ðÝwöœÈwK#—@k…6¨†Ië“3j>óÅ_;u2Ãq?¿ !I/ûÞ`dúÉÞ@æšH"£¿“žÚå!¤œêC*B 8¢F·ÁK$ãï¾|Tªœ4ƒåÞõGåõ~4¾q`þ1£|ßÏ|=nÝ$,[z„¤–˜)ñDÏzJá¨Ü ò‘4{ä›y´ "d屢ú´îÜî‡HüŒVmÖBØ»C^Šì7¢ýµµ8zj~gQ£–´ÌÚ¾²Ö߯‘ш°'O (ñH8˜|³ çï _ž“I P_’–!læ+Ý6Û[[YXÍìJKÄÔHúda0 u;O'[ÏŸ”Ä?P ?Á¦^„.°ypIMÀ6.Í ·6–¯P`K²‹ÜÖôâ/ýu`IoT]ŠÌX¡ºjµ™­9ò}£)DçycQ`[Ú®ˆðãÖw_ 3fqí•ˉ±±”o±R`8ŠuU9ú·m»¤ÖãÃÏ+ñã.ÌãTÞAT9û<"%d5ð Úy˜Zm°XÕ¾æïý‹A\àèóÍVAçè[t(ã³uˆŸ9ªî3{qC@¦DÆÆ£×Y |<ê EºWƒ€ÞlË‘xl=½G)â±þ¤!Égl½úåÈ<£Aƒb§\ äÑÐè„ÔD§ŠWB(ý¯»Äøs)6‚—ÖÌ\¾yžHÒ²dóÀM~¦ÖŸ'·Uö83ÉC š q¸¡;›FOþ½Z¥¡BÑ™w½éÌ/M¢ÆÜ+Ì;9-™ò$¶(ç cZá?Sù UUmÎcý °ô«Ôêñw¬<]<Êý·jæùÿäÐ3NVW’kK™Æàæ…ã¿ ñ‘F†cåfIØ}%*M<øÏ: }S+?â|”ÆŽ€,÷Ñ¥óß©ð‚ñêÔ °Ìqbµõ‡™ç­ óÉ0¢Á!˜~¹ëC%¤Á$“T©æq퟾>ýöw6; 7æDxð;¨i^'—°!)éE“› m¾Uº6…-Þ}KŸÈ¯·“ë“M+ÊäµÉ×Ôkvëßß‘„ª›úÅT&<ï Q^sC…±)¿=–ý¹VÍ·÷e˜_£ËÑu$¦ÿ¹Nž·ßÉûÍä®{ŠdÅþ·)ã7áÂÀÿÛ>Ø*.ūÖz½†Õº9Xã[д+ó$¸8B:nÕÓ óÝ& OÌ”²MĆÉ$à.!6c˜×‡LÙ&b\ªÑöæZاÂã‰{*k¥Ž½ºÙç“Ñ‘žf¶žŸÆH¡£éØL!̘ðv,ßnXaŸTCUÇÞ;ñâ8”íxÚ$1±\Ïm½•¥;’Q~Í&ù™á¨ÛsáÒXS¯†nÎÊÛÆné¸g?¢sÉf3–– A¤õi0ôW‰¢Ùñüfpv1,bäï°Ÿo¯º8LP½¦ûNÙ:TÂ@‘20Ýc[áB´–«ÞñFV¢qß÷ú{¯µéü¶$A “¹ ˆ¸|5Á×#BøCà ýuÐb„>pnCæLÜ K4ÛÄáîÃï„ñuÕÅä°…÷ž`\¨»óÒ' ¡÷­zü¹Aô½âfò´\†¢õp7à‰3Ú¼=äÙÍ=æI«…€Ò&2W0(üŒsòÿÐŽ6úËBÿú2ÿh]É5#|ÈôÏóý’ÚÆc%”¬Í×Ë{¬ˆXËòE‰NÉÝ{æ¢ný…á:ù!äŸ$˜?bó>Õ–']s£ÂŠÅ•øX tUjù#¿º›` ÏÿøoM mf¢#¡~~º*ôw43 7q2Y9‹ðî”H^ÊI–ǃ“'¿@ý0ÇEâVñ÷'4¡ü„ B eC®&†A¡èãH13×ùžhê°tÞ¢PJá!te^¿fPDr4DU³7yuš u](*l LjT¨¸ Èe¥Ú˜a…fßé/óMùLª>¶9_Qúâ5{ßY ´tX€|˜åÞ6ê‡OœG'4¸Ó™hÂvÀ¾$V ®h@ó?šg»=‰¾Â ¾i@Wõ㘶³sàÓZ‹¸—Ê”ìü`ÕŸX•¤õÃB£ˆñ³Á1;?ø#fph²±mHŠ=õ(¼/Ñcpƒ˜Ç!²7€Èiòჵ ðS÷ÆCÂçÙ ­H„òç!ŽÖœœÿ«›M]´5D¦d#&)øíA–Ô‹½±¸õß-æ»ôB“,r†ê‰R]×ïRÅG£#F`¾\m$Ì/Emý­îU÷m+\x)&dàá=Þ­“矌²°"¨%ë7Iº®­M&faÀ Žàœ±®KžóÎ%ŸÞ/,‹(1è°ÊÙðß±T8_è`Dzܿèsã‹D1ƒ1à»é®¥/Hò BiR‡ƒ‡·)Ä?1•ÊU5gÈŽ2`íüou„"Ù¬E9LþzÆ.DH‘§¦#ädFôS _A:Òþ$s!uWº¹¼¯`ù÷ÚÞÈèj~Ut§Ó`!un>‡¶&³y†oϪ࢟h¦EÝnŒfšæ ᲈÆM{ʵ}òÄþe¨ð—k×KŸ_޼ KÕ ¦Ñy~r¥j¯zi Sªj¢]ÿz–ðÔWˆˆùß(„ùWÖ¥ µYV1ªk ‹ªE¾28+ö …øŒµï{!˜:sÄö‹Jjú,vîh¨e®óüˬÞFÌÌ×Ê´fñ1]ùÝÁH­F¾=§÷™Ñc= §Ü¾W’Ù7;›'ãN•5.l(RƒS ü;åÉÃ4Ï2îƒbV ;›ªZßý¤kýf'ðhDà3+÷Ï}£‘ц÷Î@ý“$4R’øƒ]9‡öûáMFúÁ>ù»I¶K­[(®‰#ĸ—h±ˆ%ú¼h°9ÃÒUDáßLyxˆË 7ç'ÂñDáÛ>ÄI„=¡A¡©.œº/¹ã”Ù¦=PºMëa5cû.ëøÅÉ(¸ÂE8Êܤ\Udµ^uˆÏBñ¥L/zÓØâ°8~‘W˜{x„¹‚b¬ÛpÜ_Çj­ˆÕ²ÒäÅËw Ç2nMŸìèó yè#Hl"ð€À‚BNg3(#Þá¬äÑgá%…=ÜWaá6ðo̲´2îêØ)÷…ÌúuqDCê’¥MF¸ ß‘°OÚfCã…%æô"‰QõI#<„rÑ ä£§+²¿j´&eçd%ÝàqÃ#IUL&°ê'^ÐØ#ŽØåÎE=º^ wK…Þ±Ö¤‹jÿ;¼®?ØùÇßHzl뜛ÿ##¶œ_ØŒøqÒ*ï¿lKõAå“À9¹'ïƒváÊ—SPë'ÓNÓŽ{1kªäuEå«ÞŸ £2“ –Ó”1ç©©c !ÖCmÃõEû¾´.óãÇFzìá¶„#9x«®…,*qOdEé8°Œéïøál) ôƒ#©.1žò¤ˆž¶¾öoÝÒ“Ï’ž7ã%FŸ?Cg84f{…Ê\ª¬šâ“ÛÞùœ,3~BzQçû²Bë‹ýýÃò¾ÍI·û’_ðÃ~ŒO>èOf*ƒœ½¦ä¾²¤é/Ø&¦6ÌOâ†áǤÛ|£Ûç?Óê1 3xŸ(å<á¬lwº§4çÃ…%l‹CXî]0Ä Ãq¾j#U¿LI.ÒrôÇËv•ÍEÄb+É_ƒ^È?û,‚HÄx W¯ÿ8ºŠ-G(ú+ìYà–¸[ Ø'Xpûú¡çœ™U§é õê $+Ѭ’X¤ãKíÖ2ÕuêÇy3 –ð;«¹8|ÝP‘â±ÇÙb†éªâÊø¹Òa ‡-ýA0ìl3ý‚~V”›Õ \2‚dvÊþ¯OùOøñz1³6Ó¶þu¨aO’MÇõûK‘£‘ƒ“_âŒ.IÞ%£‚a¹’­ )ô¸®Ou"£G%=A ¿æÕËÏ:!\ç_¾¿Â¯IéV•¤Ã¨‡_µÁÌsñ=0,œ“Ô¹A¶¡¨ržª¹È #ˆL¹—³mZ·£áobYZG‰ýc–ãÚÂt¹ðwl-WS¥DX7£wß èëE¥~_‰¥É´h¢lMž||-°iÞ‘1¿,5‡êñ0nñ\´á£±½ù˜“({@vá@Ÿâ©;?ÂnB…m—„)<ƒgie?Ti>’œ uÜáÖ4²z‚æ:ÜüXÔº·Ìˆ‹åà裞==PC%ñÓ_U cAˆð/X-eËü@þˆMÙ'ŠíÖPõm#¨Š÷g¯^¦)ªY}sÙ„ÊcQÍv«Ä,DE¾Óïþ¦£_ü:æ÷ݾF@BÇ9GÆP£˜•?;ùõÆ–½‰“Ý•)Ž(2‘fÜ=–0ß3öWŽy`ÞGNŒ¥w{bmfºÇ!Ò>¢n˜­Éwè®ÙCVó½düØsÊþœo˃–"±½¾ÿzÄ »p||æóË‚8Œq6­g ]„g+±k%„å™@üR<šF8[çâ$¾ü€¥•qy¯üÕŸ¦Jê2 Ç–“pØ•UTºè‡‘;~ZÓÀgù=àÿwAw<]䮆ˆýçna÷(S©b1ÞIó»Ø¿ã.s—íçä8Ü_»'n£õrøµ}tb.¶F™´XdÓSõ[äGô:¢i!‚ 離u‚²0Ú ¬s¹>˜îæ»ì[-õº2Ç_úPR$,0'¨ [~êtK»š‘¬þpð Yz¬‰Ì)<ø(‹îÇ`Nâ=ôD?Y?ŸG=kŒxÍ¡˜ö¾b"mw­ìcá"•zÈAASÄÁxÞB}}Ÿ0Ìš¿1|5Hðr@²É×¢ajTHínÉv{K€ÄФë”ò³TŠX¸ù÷ s…¤ý¤À8ßçà¾3÷‘Ru˜ž­>^p(OÜøÊò°¤†ffÆŠcçVÑžŸ„ŒŠ,9ãËgü#ðÒF©šÎ:~fseÒ#Wô{ŽÑ6S>ec4çgúñ£*y\A¤øGmo òìAΠer«Oá¬!€ûDlÜÅnIñ›Â’ÕIþ0r"[™¨.õ(bCa‘ À&UI¤˜[¯m€„Ò ªþoz‹q-xá§Òí°#§QLäÉ©“(—FÇè,ö¹œÜ\Hò¦ì_eΑõy|‰QÞÀÑýHËù3·¿ª”\;LÓHlåßä®Mfì¼—Ld~¸Û« ñ8)»Pëʲ½AVJ×xæ øØ-öïãë ü«˜¿üóÕÆ‰©pþu}D¤ªÏÆÈÇ嬻^Q(OÓ>\=¹›Ûg_p=v¼¬¢Y›.@óHßîô¯ÁH„Iùº;¹ÛË™¿‡å7ûº/ZÙ!uÅxv8h3¯FI€{kœÆ8ÿŒ4$c$ÃÞ‡JßÔ†jS+L© I ¸æ×“2Ò‹u¨ç‹Ý_Üß"0ΫG=‚µ™øììrL5?»Áyž¤J§øIq©Aý ~‚³}.*Õû«“$h®ƒÄçWì~夦ÃèÒÇâ–4}WI @bûßç÷7´ð1<£0 ›n ÿh¬1Hc×ÅŒ©Ó&{v.ÚöHE{;wŇ?my eÿFè&Æ.†³4@þ¾¶-É nBç÷¾æk¢Y[¼gŒòsL¶ð’¦×pu*ØÑê#KL¥\„¿iØðt9#Žc2 ذÅ@õ×ð;&7V9µJêN5kŸñ¤ÍúüXÔBíÏ2±ý¼ Lÿ7þþ¥näõ;ĵ$†_íA€}ªdËÍ‹U¤hŸñÓÎ{×ö‡Ðò@ôQ§ï «ƒ#üÛ*6OÏ 2ƒ’.ÍDµI㛼Q€g#ø¤ÖôpþØIv^ËÛ¤L#Ã/Ý{UgíxXvq®Àíõ·aé¯n)ðÇL½¿Ž)ùø @Îg^ÏE Êáøfañ…:Äóëó:—…2§n`Ö誉Xûßìþà²`vãvŠñ°ëÝü _[ð538]ÍiÜ~H«VBØ;‡ìS–~9áCuèðk#£yéj®ƒwöM'z§ ëÛÁËWÉ:/`c#ˆú™Œq[ÐÙÈò :Œ`òõÁŽy„Ö*ñIò\²H¦*ÃÁµ°E¯NšøÍú¿œbz¯ŠúQíˆj²÷,?÷!öoä\–ŒÍä\¾"ÛªêºK"']¨“¨6Ä=÷ |<ã+”˜[i:BÔ x€>zcïæ.4|hL>_ZŽW¿Ñ76Mc>„J^eGp‹Þ¢–¯wê»,X°Ø%­Hàô™7ÓTEI@ñ1©¸k¥¶o‡C¶7š[%8é*upi"•Eýx;¤:9òF|Ï‘*+%éÎ&?f¯Om¶ŠrDdɶ8{zÃ`¹r†«$ìßħ´Ä —pdÅê+¡ iþÒ±’Íy_›!K|q)¬_è±WV¹#þ/6" ž®Ç*¶¤¼»ãüغ[]uf}zŒ¹’<›û1:‡@Ø¿ýijžþµD^¼<Ðq ïû#KYèh,Y©º?<àáój%”ìr‹y/@úØA¢!¬§A5]ét$ë&iù*Ï~ÎÃÃTOµt•· ªþ:än…F&ZµrRkWrfݧÉ)ŸJ@¯¢½ÆMyÔ ú×¼ŒüdVDŠhOî„ûl¼ fw‘h.9ð8¿½˜¿Wº6úF1EUF·ñX^z)xÔ‰¹”ÓàÝNبz=ÒÜyLkÞ*…æçoIöÅÄü׆RÅ/ ççóŸVÕ?eòk¢cÌR…FìÑÕeÎàÅ\žùàÑÜŒj$2óšfÔíË»íJ°–4Þ­ñ£žç¤;±ÿª%ù‡\WÝ!Þâ…ç”Á£RÖ__qmZ²OØÕ ¦¬ ùÁÑÈðX¢öQœâûâ:ôwÝÛÅM?6‘‘™¼z=&FI°gáõÞ Í¹6¼&éœa(œ‹Mqœ9ϓת t¥gãy!ŒñŒY}'7‚r›*¥IùoÓ|^fø\¨} ­¢v¤è–Óè‘3ñk0Ü®ñÇeÙuÏ€‚q‘é@Ý~€†Ÿ¯©¤ *ëFóÁø¶; W€ò¾ïŽMb «1EoÔ×9¬Ÿ*¶M›¼ÛöÝ›ØZ¡¬äŠ|ñë³”¡Gâ®å"dÆÐ3|7ðÐÒܧ?å’ÏGRýVo]̧}òL¾ÅÅÃæD†‡¦bß#yŒ[¤ª/©M1åªßjÇÞuH›ÉW›öï `·Z÷xz.žÊRª‹úU}['øôûˆvì$ÉÃÁU¼dÌû¯û† ¬úüu blŒRkÌÁCýCªâ’‘ !?‹eƒ˜%š»{úì,‰šßXªçŸûÒ5°…ˆkt8×÷ò°½?è¡k†!ÔŸrøóÚ3 û¶ð5Ý¢'( “ö°HW¿¨œ 4HŽ…—³5 &{ ñ…´ç÷Zõùzy™Y”úN;Ò—>Øî¸Ji_çaHó¼ÑV­úXî’Wá«7E_ù˜SǺÀQWêU(t% üõ}·”Ü4“¥¼Éê‹ì|ŽÔªRp÷.ŽÐÓòz Á mùg¥x½‚¾¹×Ò)ŒÝ†¿âiQ3üuë|]%À½ú[ž+22†ƒ =l0æ TÂúabÕ"é’cü÷è1m/éf˜‚Ò1”DZÿ†“:b±¢è­{iðºP‚ì¿>­üNâøê&#g3pKVÉAÑ÷ ›Lwox&|ÊÁxçÐa¯Àˆ?#]D~”A\„_¸ùº‘®{<r0 àÓìÎg»’À ¹ùmÇ)ЊL ‚VS çû]ŠÍÓˆå”,‰ƒ;vMÅ%W›=HZ÷¹HÐ~B?€›‡î]#/—ÝÐ7~|®Äõ6=}ø8âèƒj†YT7íÑîƒöv¾‚vÇ~/ÒN_×Ò/Ü“¦AÁbÖu:NóöÏ܃¿”S¯›A×ö5Ú1 +c’¿—¤+±’ÖÔÅÕUÃUÿÐ3k¾´›ç C™”£_QÀÕ¤Gâg©˜…ºçèlõÊ$<Ä+fܰo*EØ–ço÷Ýk¤¿Ó°n×-ÌÞ™¿b÷ýUb9–=5FT6zó[7þjwTŒ·Ÿ_ú;Ùé¹r^r¼Ï8æ=ü¨³S•âÅÛ9j‚  PYÙÁ_÷ô‹P”u¶Á0ùîüБe8®Éfu½ +½ã£Q±O¯’,EÖdBI\lŒWÜ¿!sgøJ‚H– -àçŸÒuºÜ›B?±^ËhÄt„žòúÃ4ýKÝñW!úH£àZÕE¨×mÇo§Â¯E* —¼j˜¦à—ʾS QI…”‹‰ ÿ‰øoü•£×û³ÉŽlò_®v½pâ‘ÌáûKxfá=ÄÖƒÿÇJŒÜ5“¢¨ \Àž:^‚qzîó².µ}Ò}Í£„3$*;°ªZw>M¸îrBPURª´H~B‘ aÔÃzFÍOà¡@@&%s”Có±RAê\Ö«É6/µ$ósIª´ìÀ”x=’újp ¥NVìq K=°¦¨ËxÒV¶ïÀq¶bpñ|[ü&¥!?®±ÞäÔp&¢ µA ¯‰*¯È©ò¡R'ÈÊôûéçŒÿ{ûßa”3\ñu¼Ç걈ù#I=.\mÓ\z¬XVm6*„w$ËUiW¤Ieç}¢¤Ãõ!ýL¯TîkÐiR+ûý’ P<ßø]ôª®Âj…Œµº´¿:WIFd¸}pp~‹R¯u…<ð‰gš?©\Èl9ï‹”Š%™eÆ'ìÁ†RáÛätL¬±6Ÿ{˜ó2ˆè:ÈoNñ{AÇÜ!™ŸÎå#yö^&D»º%v–!zŠ ²‡¯Äyž³…¼ö~ u1‹ ­“ßò˜ðw”>_ézù0D:¾ÚZ»Þ´¸ö£ÚðÖ¨à‰¸WîMPæ©™þ Ôâ\*©šüqÄ^qç‚™e$ªø…‰ty:{Ê‚¼í¯Rü”Ð÷xøF·VÆ~|À-Ö¦W‡kk}ƼqdžõóÖ¨¿Ñºqâ×´Méz¶?¶á‹ð t¯òAþ*Y½Â…¦Ví€ÅԶ_œ›ø¦’Àzë…yû,¹Ëæ€ÊÕ£k–€Ó‚ÇæbAàº\·ó¹Ù¥ ¹Óù¯Íêô7]¹r~H§™™f¯ñ½R—A¤ò”×Ùœño﯀“31½59Ó™à(‰±`ð#úö¼¤£>XœŸá$À†¸ì÷njëwRÛá:nn§Ç±9ÀÞÇ"}ð=C£z,E”#±k²°ý0ÁÚ>1×ÌÔ5¼Á#òE’öE.͹µÉh¢êêgËW±ÝˆËÈßÎÑé}Ñ”/v™i/È‚ºR ^Ó· Ku •‚ G:jô¸ #þg¬Òí-켚4Âk „‚Y e]*u!’ó„ÿNáY¾V™g×ÍNÛóŠÿôYu×Ö•2%ó÷ôĦùˆÖ3ƒ8’q%ôýˆŽÁèNÄZ‡ŽÎ½«Z\V{Œ(ôèR‘{Ì)æ»nQŒþ–…VI-™®þ£ð¬l‘¸Ç<®,IÏŸ´û+ÖšAW~Þ;O¸š›\žhLbŸÏâ4Ì{P©FÛ[ЇæŽŽù«u‰½Þ&¿u„»¢BM'JØK7+˜¿¢¨moò01gû^–0º§×Úëéã1?" ”DÚ¶YÊ~#³–—pY?ÍÍëÓYÅahβnþå"¦E5©¯²z‘#Gw¼X¶}ÐA)L·@=4ö½à¨z»=²ÙÚòd êù¦+6…­ï!ãZÑxñÙî`ֈƿâãTÀºÓ¤Ç{ž±Ü¹~¿ÞðP~©{¿¤yw”`umÒ'ˆ-g¨Š_$|󭸯¥šô93Ãò{?ˆ›"ªpk3—ˆŽÃ±½ç–-Raâòƒ³ùkŒÑ¡¬â¬Ò7sèòCóuÒ¬>øÿ‚“„†‚ꪟýˆffh©p«¼Š(ÛÇÒ2º‘¤ù¤‘øŠå IÛãŠÔCî<’#8ÁÔ)xKrÆ' ß?å¥NKP(›ðào¨fœf²SÂYC ÿlÇÓ-|4[ ‹Ý`‹Ä"V3ÌŸÝ!©Èõ^¥ 0¹.(¢Oレn]½æªY¨(Y›|dfâ/D"ÂEdW=ªÓ5Nl¼|öuP‰ûJrKÁóÅôÃ’ò=¤D~”'¥øèƬÿ÷J›t¨D'õ×±N-Š9Üô&¡œ2/ËJ0. =öç ßÑU<¨Úu‰0ˋ׭îk}8‚’N¯¼ÒV/‘ÿncã¡ûÒe­Τ—g¢kw;Ò`Ü\ÄQ{±¼ûl¸ò•|ÇOƒ:uÌžn$¡[TJåo¾÷äíß”±ößÓTFבªÔcá Ðä¨J“E¤´…¥ˆXÿÜ7~=bBwÂ8Df$ˆ×om¸Ò–Ûx/®Ç”(ßÊÁ[Z[¸@]òÓà“{lrð×-ZÎÈq_¸#õ¼Ñ‹@SêiààTz¥zþ®ÙËßB¡²/xñ×0åèòÚ") M¿$¨迧äÓzdœ`Èvø‚×·­Îº£ndGp+ï$U=+´q†sˆ¤K±ìe÷ÇÒ¬‰#ÜÉÑÒ¨2»$ÖÔgê¦@:Œ/sųL.™Ö]4 +}$‹诱òß,abøÅÑÄ•ºÍ{¡"è Jï»_ö‡Ø‡?µ¶•”Í+4Z…ÈJ µÁÛÊ– ž²ºö2³C‘0À_AÈÙ³ºX]„©Ø»_óúªcïûKût¶©Ü¥?bËv–‹ÙÊ2×iÄÛ'ýy ég<™!Éw§˜Š 2ÿc† öš:9^£ˆöi]üW˜ÕÙö)øå¯a=t‡NdQ˜½õõDǤ”º%L¯ÎAØmcË1&´¡æ3dºèøƒRéÙ€Ty¼ NëõŒ² QlâÉœ„Ø)?«;y¿nL(8ÿÿèUN×ízÈ<Ô¶ Ö/‰ÊöÔº6 ß¿c•åÑœÊĵòЉq>#Pú˜OÄŽÈÉ÷h¢&´ƒ ϰû±Ü×tG6jÁSœG[2†·Çód,^wè1ÁYäšþv|øÑ¤ T*™eYwM—æÇüð”68äöéÆÖ~¸Ýéñv'C²|T1À¬;_7‹W.%3©…“÷»ÂÈr¿›¡‚‚+Çò_µøBÊ˶¼ìÓCÞHzŽ_iÀâȧòÓ @Çg â!p1§Ô#Æ.­RbU‚!Hý>»ïø¦m”ËcþE,ŒÎmxP³‘kÇxeQÑæ¯í†Ú·Dwd¼ÍÉTD‚Ýö¨=°}3Ãò_>üÓ%zDW"Óž£…üÀ}]ÌÅMXY3¥²ø°b>ûà9Ù%·@0C%ǯ«VX¤úTþM2`Ü7¡JMNȱ2·u,›ùŠZ9­¹o†¦Òè n”,;”+_¡OÕ‰q¬ JF³Þà&SÚG)…öíǵ, úú~?·`¹ÆE´¡7¦ ./ôÔvªåìÈ•7ÛòÊÜ ± ü¦Ù?ÂVNÙZ§q/Æ3¦{N‡T…V®è²›?¥€ \AÚ#eRàc*‡’=×N·!·?PÁXÈ„ÿd7ø÷´zazøÖ „€f>_ŠéA¯$nDHº¼Î.ûkè`xJsàLʲ¿¤ ¶¿· ûa%Qÿ`â”§vì-†ºÑ*)ŽýIö>MçEO4_CÆññ#7~»¡’Š®jª– K˜óH«êxq~tjÜãÂ8Ñ}t‘ÆÍp6a¢‘óc~ºŠcåæmd ä^'+# ¥1Ýí ' Û ¹9IOß$oä%öÒî_g\¾ùg}|m½u@>ž`ÃAÀTÁ¢@.IÊ }ÒíË›$´PZÐ~ÖoŠ ‹În˜=žpúüÚ¥á¢-µ”é†U Sg`¨Š2 ”$~½í‰(?U‹à9P$7A“ŒL°/UWÞà¿E<Ô$ÂCzVC²z=ü¦Ö ‚ã±½”lã#PUk-xǃ³yÇß'ëß1X8ë¼ç†‰hÅH3áúáPY %Ü üÅs £ä3†öûà}ÉO<òó¿xåæ+¹—^þ+í£ºzí¹ã¾WëëF·TX>rC»:Ì—*zË–.¼R$ynYëT#:X¥²ó²Gmß‘þ„»G DzŠZš¬¨u)Ì@ôyø­îLÔaù»àG¼^%¦ü½ÇÚˆæÎÆnPiîÚmºh<§Fqázç–3V÷ß>ŽÎó#ÉÌå»üò&¨vyÐp–TÄçÝãGðV•7ð`Gj¼6Ô ˆaˆWiÓÊÙê˜Ø%f ºí÷*{„ô% N’]Æp–¹írõÚ¶Œ÷÷8K‰±íŽ#(Š5jÊqÈu]x„ˆ;dgF¦ýMY ñͽšC2ùo]=îG^Ô«àKºÉ£Í¶7^µì‘ ¦€4€¢¸ó¸=Êþ(Ä­úë2€2q¤i'ôXEMo·*~ º|Ûo+ûzq–±·ƒ˜0ê§Svê«&¨o5NÌ8ð²l›Î¬J»0ç%Ôéçx;:Ê"ùÇ(‰Œ¾»êÛVJ³g{÷) ±»pïe°©VMRÞÿ²ñ)öU²ÀªFH ‚Ñëë)ÊfÒo¬¾Î`hò|-¤ÌL;÷—ö|xŤ 4·ùçè×–·å úŸ»Ãpp²¯”ô},Æ|tdà 95«zŸ _?ðÔÅÊãåñš½ç´Ô‡à¤©„Ù[M÷–ªxÓì=Æh›G KJ ´ñX£#x½0ÎlÙAk{ó ú™Y„: ;Žá¹ÕqŸüЉÄ2¬§›²•Q'¯P†Ñùl0ïo¸Ü%ÔG¡£H’ä@Öj{2V.'yÃM"‚ä _Ãfy#¬dÄà¯DOYÎÍ0ƒ&ОnØõÍ<ªäd‹:-%Fš7´2“\¹)€%XŠÞ}LN]^_žÜÀƒ^¼‚@#Ÿjo‘r?C2>GÆŽX7ù6má;¿€ù¾J…jÁË3 ÿ!Oº1ÀšŠã};òpdúä"XÜ;®½oT¥'È}`©³Œ>Odn¯=Ô$›Ÿ[+þÀ‹Eàϼý«1÷aÿK@’)þ/—Í û–Ý„ÐôÁù/P§°“乨RÛ{¦oµQŸkîvþ²UHºÚØ>ؤ£û6^<†ž\byÁØä“˃UõìlûŠ,RJo>Þ¢0êòe1¾cZ«G®Vɯ^Û{=G?ƒGÝÛ¸( :±F¾œ¹ùHñÕ«möO>ØÐÂS``ù´{E Ãsïǹ®š¢†ðÙ¶{x’Õõ½¡,?7¢jáå.'üÔþ©ãÃ[?ŽjZ *èÀ¼ž YâÀ´1Ô'šŽw­çuü.æ ùÙ½@”“ZðÇÒí_NDß¼›žm¹ËºîÂañF¬>YÅŸ˜éîˆLÈžØÀ]n-@QbàÐoxÖºØUh¥íCú_êüSšs1™5ô ñ…ÕïÄ*òæòbG•` B§¢öc9!˜#År¬•c„pÜî!N½(qÉUœ’û*x>¾­‰åù¶.qåë½ûùa¨‹ ÇL€€ñW­UÝ <ÐXÁÄTì?(Zìž^–¿á.%Q"s·C­aª¾_‘Sòâ¡ø­gâV~è:šõ ‡ä½ B¾ÿTèï :—ö"¿Ë«~‘£BÉÅ×ÎåÃ3#•^}äsúž«»oÿËdmjóèõ1–„±ÓóD6C¨RsoÖ3÷Z3Žm’ZÈ,DRÓçÚó6n+FòœSu_ÈÐ_Ÿ…i"ä'¢‘ÁâýÌ_b‰LCvqð’ó ô²åF3,-HëY×Fˆ·9‹uxZùËÓLI ¤Ë^5¥ìH^÷¯Të¯EJP^2Ñ~qÀ<;¹Eòak Š0s×¹ˆ÷ÅàÕ7ÁHƒ’­ÔÓ6+3Ñ·«bBJ*ø“'`ã/¥¡øD²y/ޱô“V•ãÛjêoëI:ìòC½‰“—øy~¦£ê/u"ê8ýÁ£G×Ö²Ú»­I ô¼BùfD „R¦4nµ“`æ-7¹;×å§pZVŽt»Éjþg—éh×Ç Ï Ä¹:§÷D©ÒlF{’]îô×ÔÆ¤õHÝÐ\jFv}|¯Nh\úü´TÛ{ô¯¤„?Gtü.hÒÏø±üuçšèÏÁ0àBFŒ/['Ôp@ÈÔÈOõ¿—­°*NJú;çjðÃpëá:†¶ #u¦äá%4E)î)lïd  §ßbR¹œ{jÀç–aÂ\ :—_D#ÖQÉóˆxÑ¿µ¿ÁU³Ûp*YŽë¦uEÁubš-œ¯Ìwq¡"Fô±Ç˜âô´»:|¸äÞ\Zé¤z53ô¢%r¦ämàüý£&©ƒ ~Ç_âüO”Ò’ÏCU³˜I>"ÇȇFú­SÃqs»}WÂ÷¬$½Øùs˜¹!­ËFS2ŒôÂVç¨)õé5'X0u¼ßßôH‰¥¡±ògÛ ¨‚mÛûLûù ©Q­ËµÌ+bÖœ‡¾ßS[HýKõíg·]“ï­~úv_¬<ßÍ—?’©gìûJp½/fÓëVo”\¶œûª‰»¢‰òA!®'>£Ù—|©Ï£a#h±¯6}À»b“Ö T¿^£¾ð6x f’S¹?С£o©%šÉ}øž¸ÚÙá+¼få}Z”Q,c^Ҟ⣴JåÐvqVa”üô™=Üÿ{Á ã™×i:¢»¶j–ßè´Å ƒºã’ŽÇÁ1g‰W/HŸc¥lž®GÕP_wRÌkY AÃÒ ¦Á&»¸ Äì0Ãh¦ý§MHBÊß?È«ÖÓ­¾c>D2s>Šr˜ >Á*ÀkjôöÑ*N‰û¯ë³ìÂþÙ•ÕìïÄog”–VY}bÏNª®"ôà*šJ ÷ÝÜ-Måíhôu-}WƶqB‰(ÝCYg¹Ô(« &ö3`óÚŸXtÌ«Wæ†SI–Ï¢é>u—ƒ1ÖÚÛ½=¿aû¿¸;þ}ÅJ¾¶ìð˜…Ç:F:©Œ«XV1áâÀ–ø[Œœß«*@ן6vá\2cgï«Z_òá<\µ¤¨¯gP_&dõ¦ OpÈtõÊÄï¼ö6§ä]|=ËwíŒz°¤ Œ@ËÏFNN£Xú¨Ïq¨ å% @¥Íu‹0ñáŒl•æ¶Ã™’ñ¿65PU¿†ßî•]â¡nA˜~¨ª/ ÅäeØè…šÿ£óÈrèUس §%9çÌŽŒ@ ‘D8½¯ìç7Öhš®ªÿGÝU…|üS“+Н©¸;üË=E ³œËÌéÑ ñ<ÿ¢ÖÏßÊ#pò]!Þ3Õ¨Íq¥Çg­K‹Öì†Pí£²ü,'ÆW:Êr½UòA×_I§àZÚ@øT[­®™¿ƒ+ÀÇó'¯ë‰ƒÓ4ÄÌ”ÖÔàïþkú”|“C’µ‰*g‘è²\š…ºs^~´½ Ѥÿ¡»•üͪ‰V`òˆDû6á9³d]3™£ˆµùßÚ£LÑQqúuÙÕö£îRµ³¨ƒïƒ·óŽõl M3€w´RUHÖnìO™õKýNýØ+6R×jgy¨xG‚°”úÚAI⿨·÷¿³¼æë•ä  K%¡½¥Ì¼½»Ï¬÷ž”ñ×·îÅ‘k—=8 áÛ‘œ³òiÂ΃Èg¤Éƒcµqîï¾B›{U/”ÒôÂ÷ÛêO‹Æ1d&Jâ¨?Û¨!ÑñùE‚üŸˆqy΀ž!¡‡õ. éíXÀÝ1ú &Àë$ü»äe0×·ázc1îÌà×´¼°rÐ×!ÉF¤êÓ˜ð}¶„¼ }å^NºÓ[D‚Ô³Òð"Ž6…&\ênBšëØîÿŸŠL¿FhC¼NlM”½Ö£<"éŸ>™ 9ø}‰øý~˜p2ŸL|ß;ÈÍÄàAD?ýØ ‘{?Ês¹Ž 7­u_T—-:ÞÏ—h9?žô?jÌÝE°Vèy¸È“Ä” 'Vþû¥úa:yŽÂݪ8Õ(ÂK¼6fÎä6 " .å6B˜J;²¾ü7ÕQsƒræ~ž*Aw¡U`·¬Ê@Ö´@¬;1ojŸ‡2õÚŸI„ÒŒB3¨ëC½O2 [~ˆV`š,’Çžns¿bõb–Ê{•»ïÚŽ¬·NíŒ×€é\ya§Þ†Ã¦®¢¥"?vÌ¢ÝÎuG f”¾¦×‰l˜¯Ï¯䪓þaÉS2.AkpÅ"íœûÔ¼,Äv;R·×+i$” Ÿ™¥ÁçÅò”dþ@Á$«H0Â*Oº…^Ÿë¤ú>%Y‰D!$¿LV´iëmR)Í¿¿ß²˜ ŸŸ] >+3H†•“ý˜À KŒÁ æP0Tø²ÄvFNÌéU¸ÑùÁlÜÓ*”‹XÊàƒ®“φÅî¡Ñ׌ú—ÚÉY>pNŒÁ€Õa†…3 ç»]rÅÝTïy~VË%_VQ1†‡]fÈІJÚÑŸ«ÜO>LÕÿ†Eƒ,|ˆÎ hÆ[«Â§šÑÅ®_Þ¬¯¨Ù+>ŽË|6î{³Ø÷#± ¨D«t·*EÓò¥™²Ö'û¬Ï;-âÞt±¼UbãTCMËH <äfC­§·úéFÄ9A=—¢~Љ( ³é3òêߢ£`¾ÛFj**ƒ@×ÙdXÛ©&5ðµ³ PC®” H®Ž‡¶ûŽH?] ²6fð¨í×±Nò?‚éלÞ^œÑ¹/IÇàt3žƒyx¸Xð¶@ýzˆìÊkJ^;¿èÁ7çÛ¸jfÒæÖ Ù6ûX(a}Vamó¡¡MŽ+ÊO ¡Á¨¿[lGÛÏ’êX¯e3¦çGåQjÙ–  tÜ ±™§Å­ŽS­àEöò‹¥zìD­= ÊÁ>_`Ý¢®‹4ç×µ[¯î¤*hLŽãÓid©—¢r$A5ˆ•ÞÝñ—‡ üþRýÕ@¬.¬uÁ’TL'½ a}c/õdðk78–ðã·%n7¥fµø»ÌPi)÷·7¯™IPðflE…“z4³@è;nNÂfž§ò\FŸ>h+Òj¶àeÛ[tP)G=1ˆõCF¬Ll•Å¡#ô²|U´YC#ôdÇ’K£ìÛ|ÀÌ\åøÔŸz"‰{YÏÁÈgZ/=—pšp“!±çVɨWìªÐcŸ M)–¢ú©Ÿ˜lþú)WFØô@ ö½Qƒ(Ýû%;çf2DÅ„Û⥔FSÁ þõ½ÿe'~‚æÜƒÉ¾4)Z[yˆ`Ü(ñ‹c@Ýù›)¯vu€' ’è[¶ øú¥Ï×e?¨:dU²Æ¹eÛú„.ÍBªƒ¿|U|¬C]Å\hK•(•*rXt7ÕDÃòX3R?ÕåBœ‡fÞÉ^‹/¬Ò²ÐÿMùÂÞq|*]°ÐãVT*м¢xaÃËGóðYO@hòÙkUhÄK¦ïòã[°x™^{q]Îu¤gÀôÊIbªÁbpo:!¥þ¦ù: CnkËF¬j@ý@–Œ òP÷á®î©ÉÑê‘Y)5…ƒÑ[zx!ÁŸ¯«EûÉ$G¾|? W‹Îp¬É6*¼;B(Å€GÀG¾î€C‹m½ï€Êá½9­F“8"–!ÔË)\ö˜uM=õº4 Î"Œ¨"' Ë–Ê¢KœsŒ8ˆu3ô8ÞúéºcoK=B?>´'”óï=“{·0EÇø¼œ¹ Â\0Cÿ¨Íè…ÿˆ«¬ã¡: Û:@ ù°£JKÖÍET#:݇üxi=Ñ8r2©4ØßüS0ƒ'ŸË¾à(Sßµã-q…¹¶”wðÊ_7\bþÉkL!—'ë ¦8¶,¸‡XU÷/šŸŸ¤\hÝ[Ku VPÔ"ˆ–¬á3eþwuUŒ`n‚k*¬ö?”<—¶±k3Ú±o%N¸q#wB2qG cyŒÉgkÔ5"íJÅ|"°¤µª÷íæc‚ ð7BçrÓ]Ût'%f×à~Å=1\Œ÷áMç}W|=E3Äh@§ˆí¿›êó+ +jÜŠJ1.ø¸7ï¾~³DôõUµ²Þö†g“|û0îÁhlkïPíf‡òµMrŒ!{¿qì—þ>îPŽs&ôS;×5ùmžùI®ðx@ø¤jöuŸ§ÂCQVÑËk×RRK¬·Æ¼‘´ëå(É'l§<|¥ø •².GC¡Ë~ðÙL‡JÓ·ð^5VˆsÏÛy©–ˆÄÚǺ£ûÑØÜæ¸·Éáº?o¨?ø½}q5¹&ïUpRyŽÊ°2N¢½Fx!$d0Ù‚`>[¤ÓÏÐlå««2ð**b¾~6L¦SS+ÌT M«>›÷ot1®˜ò´ÃÏÆšc®<÷Þ+mÊv_j­ÒÀÐAîÁï·´þ 4ïÐ/½špÃÙ*†Ê“p™µeÐ硘z0E9(þ\îm%·ëj%å“Áí¹eþºh³{TtèÄWC\9,áËÐ_[ÆeXìCcúT”áó”i³ i?6ÓÕPkA‹R±[¡×|å²?Û¥h­9o¼ÝÇ–«7+{ _JÛ7ÿzöæ3Š@•„×g± °çž¤q­B~vöwÿ_ã° 3O×”¹Þ'…²ù¶0Í:ªq&òyÏö6¾ï8¤ÌAEÓ ‹}P8~Å¡o‚…Ï"½X/©1{«q *cGi(Tˆ9©Ë’Ë mývÕ[eExÆÂÚ·Ó’ “B‡°)Ú/E„™É䆌ͶËßl? úÐ… é,òùùvl©œ¼ÏYÿ× &Ú>A–ûĵ0Ó‘Ëïµ ÐF+Â-‹Ü™²ÃNoÞŠM>¯ÿwž€Z›Ÿ7/Y½+“ç#¶g|~ÒðÑåÖ¤ÜÒÈP_4–7M97K©€ÒmL…ëþCQD Ó@±©Ÿ¢Únú1è†|¬Â3Ã^ÿžeÌŸº|€y(NÆwÝü²{¯cP{‡ŠÇ%IöqwòwÒ?ß½>.)€¯×A ˜‘yD^{æ½¢dž¯ºCDí¸ŠÞjGë“çnfWzm>3Š£.hµ ªîkCà(ŽVùÒ*¢á‘D¦IÆ*ý]e±1©gÚ[ƒöK2?xøÂÖu¸¨x·Òó#oº˜¢ó;ó/‰ƒrS—¢£{µú œ†ŸžŸ=ûŠ’n7 E?m·ï)qÙýLiìòùFH! 'ê+gŸAز·÷¼Æ€p+ò…ʃ«yé0 (T»Wó]¥rȸ:èÓÿ³,ywôê…f±òõÎÑùž‡ƒƒÔõÝÅ5Ùp?y¸V¤Ó—cô° ÈfÐP‚ÉKW=zBÿyl£´ïXBÖÝêù‚ùQü‹~à0þ…´½3õøqy&ä0ÙÕô¾¿1+™†eüeømzæ?4t^?—$}z- /ÕáDßg?P7 —;¯Ô¡µÅ@®Å!.ôŸÝˤ«g\ #ë ÅòÞ{'ES]0]‹É¼‰öGÔ.CÝ<Ò¤ùL~™H½Øé~Ðq’þ®|—C³AüHY׋Àzԣ߭±%;µkÅÞ”ƒ­ÝåíØ¦¸¬y¹ï•›/d-X‹™‘÷ÎötDcGäÑÞÁÍ×x¼·‰¿ÓääÈ ŽìÚœw/-U—…g¢z23‹u>ª–Ó_3ú0¹ÎJ®‚Mª )PÕ%¦d¤ßE1ìB‡¬V´@2冀2;ÙÞÂ9Ù£®y÷ÐÓÕ?üæÓIÈÏ«™X”r|C ¸ Ü`¤Ú ìÕ“àlø"KIÊnßhÁžBq0}Q_ P‰ZOç¢þRx…R'fªˆ#ìp’ÕÒù³ÿ>öš…aŒáOÀ)x”þß s‘è5 3–·vðˆXžL”I3äd!Â춋׆ö„¤Œ¨Õ'\é€{ÎûS—؆â«Ü<ðÂò—g‰+e?ªm¥íúˆñ°®óyæ•FàÓÔç‡ ÿ¹¾vÁš(þ}¢“ÃÜ@‘£÷Ýןz3@ˆºûö‘¾×Nf›üÔ£ÊÅïð!%ê¸åŽïDöï­`l¼~w¬Ýñ¤²Úiýý òúaM} ·rKsn¨|²9²~O/ã-´E^£ÏnGR{ò‚uë'3ã/›¬je3†k‡Pƒ£1ܸ€ÎXýª}\™â~äQ©×ú´Žß,b'káût,*ÞÊh§ù{è´UÑQ+˜­wÈ•’6£Cã8‹âþ>–Ǫƒ&¤+ÂÆ å\“5ïñm+×Im[-Y$ê8T“r`‚¿+fõüÓLi&,àªKq¨àÀ…A,‹ Ôq6ȇkÍå÷6;†oŠ“‰ˆ²ñ‡ú~ ½¶‰¢™ ¬uâ~‘wbŽlU:x¦5%ð&*Ðf ÊG@Ž^dÐͱ‚®œéS9süa-R¿¨[72»â–­oI_RC÷GŠõi0°µ%:Ýä°€8ƒ(”~ÌVÛ'ŒJsJOèÉZó fÇôÓ¶Òº=N±áÌ/“Pi+Ç—åôàÖ󇳈Ü@û)MÓ*­= ³Æ¸ñÝûÜ„A$.¸ Ct'„Ø´ær6©¤bî m»’’ÓY9, T4lÂ)'ÜÕþî˜Ð ú×ÄÄ,õ@NG=X Ê“’©€ßÎeoÞ š¢/SõÅöp϶¡rÖüD«X™ôÔS¹ÏCÁUÆiÍ2‚„*Wé'ÅEÄô=j0Mx…—¼M8ð}džסÿµ‹y?›†K0™p—Ë÷;àãSšHQì˜KJ^·Ì88&Œ.h=IMîhÏDZoSàeˆ ‚Œ)ŽJÓ;á¢êÖ1¹ZQy;¥2ßVi•õ·ý*ä×Ú³éèÌß1´vú}èsÄ%zÄ ‡Âh¶q@ö0÷ºFÅ í°ï =án÷0¥÷ÛÏ2Œ°R|ºßÇ•çÖøV[ßb¼==É €³W—lþÚ¾œ™FWpºLÑ¿%'ü§2lC2²3zGMäZ íomæ{e»+ ñšð\1»/Ñâ(ÖµÀiÐHeú7´ZsrZ9ÄÅã!aοŸ‹™¤!ºÙ‹z× åKÎr–‚®_×pÔøÒÔ\‚JÇ@Â<ÁšÒL+˜ÏTs?ëö7ð+,’ÑÒhů¯7c 2G1:g{V¯rˆ+õ qñêîLš6Ò*T$+ŠæuE9×Þ¤?P,{º¨ ­ãQ ã!Зy0¿›EèUzjÊOn’ý#kù°àïOl™ªö×pAk`X_¯êÃC9Âö[ˆ`Û¼4°éq¶·vrö½lÈ$—°ê’¼oD¨e«rôab‚¦Lµ-QW`ƒª>EÈ]ú–,0¥v¬÷2ú’këLòt(&CªuùðUá|ºò»ÒÕÞn¹jQ—r™“0‹€¾– ¬‹zØBŒÒBÞs–ì¢m`?%ÝY ꡵Ê5Ò5k3Óœ?:· ת o¼‚zþ¯ñŽ‹€ãaŠÒ²Hw^КJÎ4ÏòЦ†.p#ƒ”EÍrW\îÿ³fDóÇ™}üæËRÎÝ-ì/Òn!VÎq—RM›ëèT{÷E>[:ûiŸ\±©ãýl§çËœÿ,ÅœZÊ6*/"Œê埣´í <"tøã¾’¾æéÁ!¿Ý½¾T‹?-½;–¼‚ˆr×#Ã<4hh–bŽéÌÇx£Æ ƒ#\ôãðï póàø¤å샯ƒàë ºžy_J¯îc½{½N_K¶]’Æ‚k]¹ïùºÃÑT>ÑÎ茭̄÷_Ê0¾îW¯ûîDdA;­Ã•”VJ ’% ×܉È;Ñã^§½|*ì•! 2íºƒòÁÜ6¯Eêî"`­è—´;´Žw~(òz¡îô{a¥Â8¸a܈±ëb#+zRÊ4Ÿ¿ý£`ìríM»t~u/pØý!Kkì{GÅiçÞŠ¦¼êƒÍ0 .^P{×?=kÆ`Cš^9f¸f¤éÂAªÄJ€ ~Uë8†áÏAñ[cºw”:ö1†¯n eê‹&V”üݼƼ¦‚Ž­Cw¦û[XW#Y³žòì~6Ý”š ŠaPíÀÍ'ŒG>1> —´·aݽ÷8|Å&¬QPJ»Ðö¡\{rÍZ:gᆠ’¯Ú/º¹¬Ÿ\™¶s"~ôš¦’{>*‡x°½çßò: 6¡ò>‹ò)5W^oÁZ0,´—6ì½_¢7 Ñ gÆR­ûw/QóŠXÏ,ÛIþZó |þR9ˆ ÖIïq Ö~Þ«ù=#Qõ‚F=Ù^éx½±1*Ðh¾ç‡jð¦Oík†&¸Þ~ú6ØŠmMV­—†¬c$ç"G%Êk)fÛˆ^‘ºqŽZ°‰Må*¬óuJµ%}‰ÌBÕ303 ]E‘¦rnªBDüÆù…¢ÂãÜy¶y(ЈõOßÓä…Žß$yï ¦a/Ô pZOt¨úï4Sdw{;Žg½¨›bŠŸ3ˆR¼¹*'uÓðŒmô¼È4ó±G™Ùiïä†w1ËOÐ 5…aЎܸë׺˜¿ á!_²ÙÛ÷V›Ã”§ô=Èi±=ÀÚ\˜Ö›l3kòW2Œ¬ áÅ•Û*xÏf1ñB·î$›h»âX'gìZ¦LãZ£rÈÙG°7$`溊“,×Ó(Ï+7|5ÉFÈžð‚•© H® %!¨qŸ ç£ÄÓðç„3þ2Oëqé­rãýr^¿¤Ð ][¢51ó½¾C3Ûvm[WÕ¾øäçqí¦#¡¾ƒlͺí,#²ÙJg ¿›ü.ïKšŸñ£,ý¼ûàÇþr?}CM!¹Hƒ¾5¼ )½_Ñ LÙæÐö¤16¼Å=¤¦Ö¢MYtb¶û”Vû¥ ¶Ttò §x£üç=9 4aDëÜ·„Vß}ÁOeùy©©i7,ˆ‚He£6+цçZE¿„™ì K5,dŠDFÄÐ…ÚïDŸ[q¬éï§9F÷¿·…š†óÉ|\(¶0Ív9(ÅõÖ#ÆýŸÍ§ 5 Ú¦–˜cjÀO=Úë>ìåœò}ÙIíN%†£A¨b w9#ü¤ü56 ­mÑH˜Ã>‰9þ·ü0ñÉkV·‹NObíó'DO(·küÀ@« =”جê¢/A`×4q›H^²AQ\ÎtžKùö,ª¡}sâò6oy»ÜVþà!'%_š“ÌYÛ7a¾htD>hù9ô½²WìÞØÍ¿l$GñG§"GÀ²)³ï™hhvGó×TYZ•ÞˆÂcS5#aÖúÒ5>5:ÇÆ¯åÌió+þ2,eÝu°5ìüÅ+ùþÄ£(BoYoç'¬î\Ë…¾€UÏÓÌÞÛÛ™½[ ³ä@È.Öe”–Ћc1©™Ü3U­Oëô(dåÖ*Z¬±ˆÅŠ{T€‰iÏÖ*㧆—A~…yJìpÔÏfEÄÇ÷÷pùÄ:¦í»)+(3TNÐßgç}N76´Äñ Û¸®„…P”Ñ‘rw¤ ~³ç7cé´ä‘Áßã¼ ÎÎ1:d—•î I)ÿ×ÍŠ¦ž× Uûh0:8k¾% ÀËOUß4‚jqyîpž$´©ïFÑùïîz 3ô¼Ëéí¿QþÐS/%öÐw™kÁìÃ#†¹ÉãÑ@o9‚&.’_žof>“ïþé%1²5ðÓd×[J™Ð9»–Kx¬%šþŠ1áâ¼jë0á ´ÆÕóÎ÷µ´ðäÀ¶QÛGâ¾3\Æ×'õºÚrß“N»g¸¸ŒŽ»R”Îü1C{DûÜA †©s¼•#^5€üðTWZ•gùný^פçÍPnñ-•{±…¹P—·óŽôkéЩ†“ˆ> _5zä2ô’t‹³2[Ó€2BÊS¨Ê™Hƒ>Î\÷ØeΈSGûËG1ÙÍ”kCˆ ’ÏúÊ´åå’fØø|ü¶]Ÿg°àP\· Á ^‰y¥DÕѦyý=;3–Ô{6~ÊgeOd,:ÝúB/[é° â²pP1în@\!žTCÏ/²>›ÊLÙj…ðËnx¤nTë®Ïi(¸7Aƪ¾û£)P¨Å‘°F ]¢BÛJÎÎ''n¾Ä·%ȱ[^™MdÔ6áYG–S|­û;Žß¡Í>àùÕ|ìœxÏÚ­A«W—ºç^Ú1Ê>XåùÁ*ïç.÷zÖ¡7²ò×`ë{ò9 †»q¶°ßFóÖ¢%÷{±­'îâcÁ¸€„sûv0ÞÆ´DïÁæ\)s¸~%±Þ?CCaܘ‰:Gù5ä·D i{Ž%, ã©¶©ÖmR_®# çÖü HõG¼äG*ÜýÞé«y¢o6;1.µiöþD†D•£ÚR±öZù°nÃfÔ+ÄMzQzi!êq!  À–þ Eš˜ã…¸¸äE΄ãµa!–# -mŽlpÅŒQÏ™!¹äV–/âW•Í„7ÊŽ|É÷äôø÷‹Å¿¾²š¿#:Z7ÏŸÛê®—/¦T¯ïÁ€¯»âeS ˆÕð´øú7J‘ÿqÙ-p»~îCª ·ÙYÇ"ˆ›Vò 0RÑJ®ãØo}ñsNǬ˜Þ”«¿=LÕ-qe¾L#‚3vÝ’ .Î!ª+‡£’«»ò‹GqÆ,l^Æ2å?ÿ$Þ"éÚ~¯ÑOÚ#g«Ðû{£Eëg5Ž8‚Ì(|¿ôˆpú?M"ÌA„Ñʃ^ÿå^üÒ(Pó­Q®\ÐzJC@¾å¯FNÏ÷^¥¡’õ.êôÑf„·¥»*"E^×_ÏŸVÑ‚Z‹#uXÕY›¦ÉŸ!ªIù !{î(¤< eDÇpÎK6kJÀÍ¿1¨ÅüË ¸§-Ňàx64S ïI$ÊA³žp}‘°vˆ2ÁÄÆ'6.Ÿ„,'EóŒè] ?òí÷..àµyOpƒu¸s‡nŒ¬ëÐÚwÖðw’È ÿ;[•Ej'Ùzµ¾DìÊ©òБñ…6´®À'Üì5Çud¼/pi6ųFdP"ðb9hhHÕ(ý—©‚Q›}Æ kè·ÞÖ mÒw ×µ³gõÍ*/ꤸ€w L/òÌÚ£m›0-ZÀú·Íyþ¶Ô\-9Þ±¶;û(ø8Ñ9åëS&šIÁáñ¶ríêUtVä1 $cz¾ ]õ©§`PúˆMÎ;Ñ«¶Ú™óê.?þšÍ–¨òå©Q{—Eiÿ;êø+ma"!âèh@"ÜÛPM•úÚÐ_[]úÁ³|fZ{ûDMÉÖ rBÝ'Ø2E·,óò*ìš•W¢ΫN]*ld×yLí:'~äGÏ‘ùr¿ÿ=nŽ'L êÅæF»òŽçKœ*#ÌdųNe®ÈDP¨æ¸¼®ŸŸÈ^ÃV;µÐ-Þ:%´ ½nF~øEãË͈ôü½¤¼vÄæJ™öÂyç*H!”ÁT+ÑÆûÝ`/=¶,—&£x‰™£þÈ?(TJß³%ù¨`ø|O„³\ßoõ§ 6Õw6ÄO‰/ótZßs”˜îÍ‚›JÇIPÎMÞÑ-E³îï£Ñ { Ôg÷å=ßí¢[ÆL ÝK¦xÓì£TqôbÁÊù\2ö¥ÔË–¢¥g·IÆ€¶~VLNÔ }´w GVY6FªùúÿE+2¥¼¥#fò@Â9‹y>ãwˆ#bùÑ4L&c7€ûŽ‚€QÇ©{S9†×%ï°~3Út¼8‹E~æÁ8Ëߘqvÿ—,Š\¡Éƒq{ࣼ„\¶õh Œ¨ä«Û;€¡ÚÀ…[a-»µy¹Z*bc¾4®ßY- 3ëÃÀÐ ïÜǦÍòL`ô³Ë¹sîQjð'-WÛQ±Ÿñ{3‡é_?·R\?XÓå+µ9Ë÷»Ø…qË$;%«=x8à´H ±2M@šÿ. © •7ʳó?FζÁÞ[³çÆÉ¾Hí'Q+òalJRÐ,Bè8qL¢!Ca¿ò9Xªíô{U<Ž stP½„f³£õ£ä4['ÓŠ²À ÁÒ'G&4Øý§?ê»%§˜IΈ aÛÇt©µ[ ¤˜\Vðœe°|oêióÆ5ýßMóVTÁ&Îâwaˆ}):¬½›iá¯TÌò…}qäó4óRD¿Ç#Z[ËJ€@-Í5û´ÏAw a ›ªõ‡¢¤‡ÁC’3ÇÞCÓT߯!½ŒH¬y|1!è¢\›ûý>_{À‡‡ªNŒ:˺P²ðQpZmÑ ;†ãÄ"÷+»Y·Ir9תȓR,c¦)ñhs\àP—½”T;š/UI(íÇÑGá–N!švÖ£¯aÇMuÀfÃR{Ñ[Æ®W!¸“Á^Pý-D™¯Y±¨§ ä‚al¥a¼ª2ŠÌ0>u7f³ vR–¥Jö.¸â oVÖ ð³ÿ ï›Ï$,£ï™„/Ô·6èá&rªó˧$Ò_иôIkܨŒÝÐyZG`ÕÆúÙµtÚb…hœšÜÌO9OóªÙE‘„‚Ià·E2m)L¸HÒçX¿D9ÌÔ»Þc·zVì“c´ ³TÈ­<‹È¦2<™¸DÞ>Æaÿfq~zÃAmÁÅëæªáÛMàh‰~в†Sºyd+äúHo1i”c•òõ^öbgÏí QQõv‰Ó­=F£RQàïv¨<¡^îeŠv+B[%×·þfÉãÉÇ16¡ÓÛ¤+¸ÂÈ{Œæ"Ž3|ƱY± (ô <Ê‘äNNç0&~çl¤:oebê”ÕÑé44§v2Ÿ­?“M‡$³ˆ½D.À•ãª~HÓ18$¡üßÕ}–uböûÊÏwÉFcжÌjÑJYá3§c|møöz¹šW<0oNuüuœÙ«æ L2îÕ¿#•ÑïHá‡s  d]ð¨7¢ú©çµ€~¹ñ—ռŸ·•P©œ¨æÆäÊf Èk¥“º0™>šÃÿ>bîI›ýøõà‹Š<ïEMKºlô‰» ˆâF,¬ØÓÞþ#´çUƒ÷!¯H¥=,Š˜R šfk0¥æ H %3›fm‘Ñ•‘³…Z¦„ò&aåt¥=ÅöH½Ÿ*þ‘~öIaä†Jê8­*XvþV%`ÎÐ"(°\­ÙË(·¦ZTì¯kz–ã^B»-“|Pì±É—&廈aC7ËMÄÖú¨OZe•»Q,¯FÀICôŽ¿™€-üý{mV·³ióKö²H‡xœ|ý$° Ȥ·Œ|`´÷k2Ë jZ[¤–5ªøXÃ*½/×SñSm—[uÉ8—ž·Ö9~Ï2CŒ×òmÊçôf6nô^¦YcmÅJÐÁÿ%r°ß0€Ž½LYsfD"ä`j©æw|ë*¨î¶Q‰e[»¤†Ûko"r ǸÐu$õ©)³;£­»¢6”¹9Z@\°;˜óK‡#õ.]FàÃÈ]ü’(ÂQi|¦»Úé”z”ïR~ì®ðÕX†[Û1 ¼íámÃ!c¡ö è†Ìø(.ÎPzi”L³9 áBÂZ“fA* Ô#^6?ÁIm´Á_ûƒ¦ã-Hƒ‹ ò„ëÃñ¤­%³ˆO JoàFf°Ÿ üw¾¼ÒÀÏ'ºFö£‰*s}EŠEmHþF ¥Ð<ðߨ½&LØÛô˜peÆ……³oØ'eK^å *0õ|0nœ,^RñÄ©pO°·õd廽Ž÷‚¾3¥EýÓ,eúx*Pj; EMÈ¥E,Jå<­™m¥ÉÚt(ìê¤ËÙ•¸ØÊŠÐ–§˜vÍÙ>CßcÄCÚŽ!sÍË~é„È&WX½»ÖC™æpã7¸ŽB&ú |z%Ü÷ë§›ÚQ£0“ž9ÓŒá¢Ý‘PáïÕ½7gý»§ùk¡–" "ìÌÖƒÀ|‹1HaDezЋ'Š™Câ½»‡Þ—`¼&ôŒ Þݾ‹w  Z5HøbP!5Wï‡5„ü%÷*j]"uýq2É7ƒ¹'d½@y6ÂN|‘5iÀˆfÏDÑýØ*Þß÷ µäZÖ”q:²zOKT†ÎëUºµ÷Ú;4¬±Xý©WZ„Ø’e……“ÔyÇ™¹þbo@½´ø ÕÌD” Ã?)ý’9˜w, nE)û²¼³öƒS[¶¬^ ³@ MYã1Bí_¯Ïö¯×ç‘ûÉZÛIˆ†±3P脘-ÞÇMÀL/LW*À~ÌR&Å&û¥ms`/ª‚5‡² ,ÉTýµékÿbÆÚç¡ß½ŒþA˜!,Êœ ˜Î$¿O•Ç/e{Æ -“"úh·ì ,³¦äò‹êØioW^¶j›}FØ%´ã¸ÖÃQS7¿B‘—3ö@†¬.- ªŽg òXxJpææý ¤Y³høMÖ¯†Ïw**A·‚6b¸” fX‚X.ܪŒŽb‘¹{#ˆ7cZ\ÄLÀ€òk(ö`Q“IV<¾wŽ)¢éZ9*”Ï:4Py2mµuþHSœb(ïfiµ(²wý0m®t³¡Õõô[M<öêʰéÇ57zÿ„N ÚîSãis Äš³¡Ãa.§i u¸_ ¤È²%çL Ôòž|Öq*IÓÔÑYÍ2F5ôUÿB¾Ã/Œ‡ãÆ_Â^æóŠ-]>D•ï~Ì|ý¿Žfü9çí5Ò¥åM9ÀR5þ ZÞ–Õ!Þ‘sæ?´»Lû¸î- Xzi$fãÍ s¿Î¾¹Â«ýK@]¬[ù¿³ñhøçÖxíÔuÏm«GŠ/"¯(n~äËpcøE—N8ƒˆ´íd:Á.§ µßÀýî`›§¢C­Qeï—˜ßļFSÈ-ðº`Õê•LNjï¤ðà‹ªïI€ÁéVކ&9—ËKý9CEñ¼+–ûk®âg.Uæ* µæ'?—‹~R×’WÉ/ç Ê·å1›¤œÇ#âé»J@ rýûT½5”Šï¾‚–Uö)oJkf¬x†ºº!†£'ˆx½ŸÇσú94—rÞ+—ëe—`î£~¶ÚþB­býÂ$­]5õý÷–ÿ¬.ì¶-ç#¾uÄÈk­žš¶qëß@!CûzÇ\,<¸Ù²1m¶r…¼,ÅâEîkïš·&Xj*ÄS€ÆûXί¨\öÂ#†èA¾nð/£½'~bqñ›|Éo®¢½íRDy´6ïCç#¥¬¼Çܺ³]¤°? %R få3÷d>šD Ü!FyýLÍ´Ze˜¶®j]æ ¢VbðË• ÆÍ. ¾§—l®g¢ÂÝ @=ø› Šˆä7æIßúX„–žÂ¬ïEôPR´ª2wî…ª2åòIààx‚®ê%ŒdvÎZýkš"jaÆ„RKö7I _&ñå¦Y²vº>îÒöoþ{QÛ/?8µ§]N—¬Ô®Å’Âp\gO²jÚ¶Í.¥âÞo„|Ýæåïðë-£e¾3û#Ñ|iŒ1'SÕ¾wÂq H6ébüu«ŽÚ!’FNÒ¾§96BêÖa£Ù»mŽ)¶©œ¶c§|ÔȾÐv›@&«WB·Ú’ °ÿÎHžM" S£Ûb­o]ìÔ]¸(ï[jê ôLßz6ký)Å÷©oýéæ¹±5:˜žW•àP kѬÊ]Rm,%Ü—û8ÿtEP»ðÐÊãÅúÙYÍ/ù‹[JáhgЄîi"—ÞĦb ü]黼‘Ÿ“ÜMŸvæ=n‰ð>º‡„ådŒ,ÆÃo1 ç'ŽGÉÞ Ýªty 4ÿeh6â¤(ØÉ…uÌËèÎ #©ú{¢ÀÌÖÁ‚Q¤Væ¾@‡ª5ÿô¿A[F¿ªN¢¥ëÞ%ëZ¥+ ºã²`Âï¤:áþaàw²ØhfUòß©þ‚€fÌÇ“òöo,±nè·ÿ€BX¿äíéupÜ6Ö,? Iõ0žôÜNê1ÆÊñÀÀàïbZûMü×G‚f€[+.n]ZrEB~{v —;ë0›éŸûû˜‡ZWç.‡M×_š*Ä5tâW€¬æš–œ(Ð!‚; ÙÑÙäcE_NEBè赫3JûŠóâ€ãª1 cÖa.ZâÓ̦¾ÇGPí×cb¹„:"  ~_ʤѿd°¡yQâ—( pò]mU]ö˹C ¬§0kì1N¿ÕBâ]RÀa+˜ôû|ŸØ¹£PíbX1EdÈMÙþ]ij“»û-ÕàÖ Ÿ5øÌTïzÂ÷*6iÕuŸ>æî>~XÙæVúЯ=XVïtÓΘRÆ.J¾n)ú&bÜš/új9‚äNÒð± dç”+9ÛϽÒd%ƒ=éâú[tõü¾S6Ãjü`ªÔ—²kU^‘4b]!4¯;8š`ë©‘†ÊØRy”-ø á!ƒó —‰îû4)­0ÔxÕû€kôJ ݇œeëV/ÛJª'«½Ÿ4׺âÁGþžAÊǦ(#ãìNPq³þBå“éBÎ×á/ „>+›Ìl”V«yù‰ú&Û‘úáAOõR°5ÂàYɉïëi´l¬{ɰOÍ|Сª˜@ú|ež‰Ž,¹B±¨F_¯ôSŒs>½;z鑸3kJ·y‰Ë AÆgçphQµÜJ/§ÅïVÈúS› ¦»’òâ•>D¿3óTõÕ`nûuú,*ß œ`PƒJ4‚…šlÄHœ×É~E#úCmâ# £FK»_ë)$PÝ4çÈÒVRýšb׉Üú‹Á·õw(‰“ųòƒûÕá±áÇ¿ØØVÍ/xëI*íÿ¼ÂeJzÿ(X¤¹õ(“¾u5Ú>SM—~dý×@Œ;ƒ—T¤²2Õ-Œ›‘Mã+·Ý|jÙÖ-áƒ¬Ž ÿCÔá‘ÿŸüÊqVÅüw%šÊúLÏwW$T‚[‘½ÊÏ*ögŠŠ:Ýœ$Ä®ógmß3EÏ)b©ð"ý©Ãó÷àÔdh‘ýNSÖ7Äg¿¢¸¾ý?íþ›4ýXaUI+]#ù[Gs¹¦q+™>Ž3ÿÐ,ð阵ŸC Th‡5ÿµ†Ø†ÚöÛ‰97)e ¾²Íéýy´Ú«®±Ç²³ÇNõB‚h›ð+§Ò9žØ£ÿ~L¬JØì0º–:û¤F”£~ǨógVû Ï]/u}²ýµ‚“>eœrlWlL> XÊAÔk}ÒLi{ ¶¼?Aù½‡f¯ÆuÂ%‘»ßËÒazçìñUáï—¥œ‚¤†éY^  cš<`|¸¿™fxº‰*»ŸXA;xø¶©{íö[ОS¦ :òÍÄ0)àƒj³¾+…~Ð"“Øî "òi-YÙ÷Y¥…AF°U  JðÈ·äßUcɾF›£°NéÂ"n#²›/UÖöóc]ÎKÏäŒÃɹEô¸z¥‚¶ØÏ¿ëž Ž·°ê^gPù|cÔ=² 5OµQ„6.’©Û€ë<1TòÕt÷˜e»ÜR+ÊÀ’íx.õ|Ò@ã+ÉÄÈ7= Ù7iÕLLÑ@F>ïtID*qQáŒü#d!CÃ;n9.Ý & ·<¢eð”ÚÇ®ì.ÝOØ‘pÌ ÉÊgʃ‘©2JMCLdåzÙŒv±ÎÛåí1_?—Í?ýª†úS0ÿúº‚º$ž-z 5Ht8îTéF‹IÙ•a ýE/ê#%j¯×¿û½•wÊ©.þvÿ‘õ ½Ã“·AÀø‰ó;­¶N ûIêëmô³I7˜4øHà£[Kà1³Âi;ã¡é÷2öƒÏÁácsçmç_—‘7€k ù“óé*(æÃ[õâŸbž½ÃõÞßkPÌÐÆq4ÅOøj% †õ`L¸&¨˜1K´mfy…„½ö„O\§¶ï¨×ÉPôdkR%ÅŽÂCÌ)]žÊÎÞbgtG(ø'ãxeœ:ap0&x4^wüˆ~¸v»òÉ=[HNm©a©ÿ‚ Eº‹ŒoÓ­fŸš J‰ä¦ï+!²²ž|Ûi¬áŒ;´ vqñPz`F[ÖI³vÆC•ŠKcÏ_CÑÜxyxÉR0ḻIôY#/4Zen~ÐýÀõƬ¿}¬ 59a%ìGj ýݲc)ðëû Šðà(Ý=Jë½Ô6ˆYÉeï!9˜‰.pÚÏÍl ÆW÷WÀ‹$[/´q1ÄCãòrÒ™¡Gá4Ùæ£7ªßóîвÁ¨Ì$w>!ìÚÉÄTJ$çÕ]=”ÀŠRf§À3Ä¥öæc›~½sèA/»O–Zj^}éß%&‰R÷˜¨k3V+Pš§¼Ò|ýžÏ‚A2ÀŽóK—¨ðì?>»íU—Êÿð MÝþ3÷ï§”œÙIl’tV½êR)ƒ²§Œü˜d¾2©›3¢i`ÉÒ6|úƒ^†yMˬ#’¤L}У_é„­4õñ„Rt%’ÅU)œ?øëñÁë±µŸ\ÀÍAÙH¬jRñ‡Ì”Ñ_W¼®çñf,ôsÅŸ °XÃg*=è`ͦ«d´[¶œZ¹Ì92‡œ¡£¿úøðxâþ5Hß.…¯¿6᳉ƽZBè"Å;‰Àh4ìïžq6oóH¾ Å{ª#•ÛÓAÐ*À’ Ù,Î<š™`õ÷žrlüÞ8d‘H®$¯hÛÚ‹Jø×)¡~ˆÖª‘‹±÷ ¾8l¤PVN¨wnx( _`*zÊþÒ% ûÕ~)SQÀÚ´ðºŽv¯ª÷ºª®œTÛš?ôXŒ¼ý]ÅzOV02¥õPG`2²R0tˆ3e:꺺äŽìý>pê‹A¬Ï´Qã þ¤ ‹ÛüÙÆ³ð7굃ŒÑ_h|ÿ:îBLÑb¢Ð4¶¥n¿v†BA¤F,Μ ²‚§2*€ $@K?&öÛíºêt§êÕ±’xŠÔ6€À኿Sþô¤ë|-’TwßL ¹ñ‰rý¤š¾Ï¾û„À±VSCVôPì6V«r“¢:ôxlŠ!RHˆ¾ód Ñâ„k<ÉR÷ÒRÏP“»²å•aY¨ ‚M£Þ#/{ø ¼Ð”[ R,h²bRïceM&TæØY,ZÀ’Ìfw©cŽF0ˆ¨Öà@´åf)ÝÜúƒhÉó³#A‡tÑ7H DÎû†*½°sW ø¯}Åï>ìKÔý;R·¼k£fQµóé7]¿Y§‹òµõDSXõ£©¯"ãߺ'N±›8nžw%ÓÖ_{F†ªµ¹ævj¯o5-e\7ß»ªûh"FÈî„cÃp… U©”F„Õ0ÐHIú¸A»Ú@ø7î Qzž©‘( ·•ä.{%ê'O0ª5?¼×‘Ê10ˆQ‘Ù;4@–‚TZV¡“?6ó87¿´*åy%zp  ‚P`»u/àý;ÑØµªÈ†AÕ éxgºÕÆ‚^]™ 23NFMÇ~…a»ã „Áõ²·}Ò¥TJß%»ÔåïYÅ¿)!È—.ÝÀæØ† 5ù ©˜¡ŽÃZëÙÆxÏ¥Øq¨xµãUJçöÊAŠ}½Ú“â¤}LFê ÒN£w ‡ŸÇˆ…ÎöÔKþfÁÓåætˆé‰?ሼ/Y18zSãÏ£KN6ª`‹~ÃYÓDó«Ä}bâÓ¨iÖÀÔÇjü$¾¬ÏöDp×êìãü*avIŸÔÏ@ÍÞTç`â|c–uÛÍ©Bq¸Üüev[_e·VÃF‰ i7áõ×íz^\IÐC}-³,ßXe>a>¢±l˜Xõä)½é Aä)i‡[½;Óz7|®¿3¤UZ‚AÅ;ú˜Ã˃F «ÉÂ|_­>ñ…ë+}¤ ¢TqúZ `ÿÍc;†9d.=Œåysš4ú$ñéC¤õΩìñýFöͧP©W^ºü ‚ù° »¢òÌËÏÁy¼OE2劓¾kgV>LÐ\Õâ–"îæƒèÑI†öÐßï­ž6cŠ%8bü1 ªa¦É™ã°lïNDËÃNÜ_ Ò•ñ†<ËmòNêljp›ó#xÄMµ4È5æ]P%rmŸ®e?Î$Ô“37}ÒF4{XضG"¢ ·ó¢ o›Ýüp\ 4ÿ‚¶qmÖ——oEIòS¯Â½÷Êÿ¸2+½™YYÞëõuÞé–7&sþϱFð§¿Þƒÿí»i}|Óq10oÏæÕÛ¦Á=;Ý´KÉû}ýÛ‘ò@í€æ¿çù@ÒЋ-eV0ÄHJ Oyy0o¢ÃÅßêiFõÕWÖo%ÿcrÊ;èÊcé8ä–¯nN#Þ „*«ÄPNî<6~am½+V]àk^ª^Vß©#Ô§S WGâeîJ`vx`°„‰1-A·QA%DPè›ué#;+37yh[;9+TDUÝ8ùMËŸ’“vÛ8èºú­Í3#"ù&öïèۇȫÎ.7ÕrðÆy~D+P£÷˜£”ÎIò掴nû-)lþ>4¤]¢Ý¨Žv¿ËdÀjù3*Ÿ¨ß™z‚)“#{èPR¶¿Í—ò¡ç9úŒ;©rð¹w..‹Ç踀‘‹aÌÇÑ7âyž cK&Ã?zvú­‚ÂXxA¼Æ~5~ÈûZ ëìI¹¾_´íÙ½Å;û •(âý a›R¬Q3Ó¼ ýâ¡™$ñp?‡(~?øèó0D‘efù;﯑Çoψ=Õˆ|Š]:B­¼‘“îlCŠI¸sáïëjgÂÁ{䃒ÛveI±:ÏÀ\Gc‹†‘8àü›é†äðç}\;¾\ñ:r²ú—Sp§Þ¿9 ð¤mWp|‘!û¶\vN‚Üñ~;‚H.i^ݰY×oo”ÙÚ€Û?ÔDpÑ6I"nùIyä'ÄӣعÒx+ÕݼTu•*z ˆo_ͺœ$}xèqäò绳åSÚ—Sæ~ Îý ¥7“™× å¸Ãj¾{^+2êßãwZeà·=Z ZïÝÄ“×gÖɳ #* Z3q’ÀJŽ5²šÞ*²©OÌ>9²¡Oßó¾$óÇ]À†0ôàÝ÷°Dµ‡]$Ø N%D䎙—½/(r* Ç'¡¿  ßÔ£«Àúñ_wRjPAÁßyÄ ‘,":ÁxÇÛ%ÇÜÙ$Áî Ö}pùÞN´„YûUÇŽz,> ð"bt½72mïBÜ"|W'tY~ÄœÏw®**ÙÝTÙ'ñíh)œ±’‡½Ïê7^¦9¥†¿it2&UF¨â M”•å¾ü”ÂÚ°Õãï"a'‰ùO«ç C„¡Ã¿Ý3¬IÄ,3ÓkýÇZñû3˜Â!»Hˆ|W¨|‹!¢¿Š±eQê)È£0ƒ²Q;ÝÒ[Û/U€;¯âß³=ûèL+KZ9ù <Žû¿;9ÅD7R_fä¤z">k®ýauyHoº]eÆ£¸~ãñÏvÅO,øÇþ9ÎnŽÅÞlSNy±µê˜l–”ÕIrŽá©¨n/PDú&K9u_ûùîÌN‚PÊ"£.4¿{BÐ5/ŽÊ~ýÄPT"%åûIÆ“ݾg/¯ }Š—!L`ŠH]€ÑèŸA~­oý®œfqü¸0`6l‹W-;ç•ïªÙÜ~®÷ö£~DX[^3›q¦Ä_ íè ðëœzÝSœ\êÑyVÝó·€\T&eÛöþ A¸õ*nÖ'Í+¢›%¼úÙäú]…‘AN²,0 ÛPò ñSĶp öl»ì«¼K¼¶!@:+y=ÝC¥‹á~U ï{ W±çÁÖÐÁ/ãñÙ±Ív’:ÀñXKÉë†/ Ë&ÅѼ}ë‚¶[IýzÇ 7œØŽÿI#›"’{- zZéQ!7ÃÚ ¢ $‚9#ëä‰û0¯C6ãêQWŒ ÿ‘1š]48•/x¿9ñÓÏÐÁu÷éKkÐj’©Ý`ÛÔ¯ýKSÀÞlÕYÕ¼o%Ì·Ø °_¢wñv8V[Êñ5…ä‹_%î”/ýšëö{—ëùÉ0N¢Îì¿èúUÍ» ¼¥M7öXò´FB]ÑLžülç6œ"Z­+–ª1ZÄH,ËD ©Ìùùkù[NÔ@í·’cÉ]€‰ß,™ùƆSÉÜNㆦÍQ²•‚Ú¢¬È°lÒ8ß)Þÿ>°ü•m_b#ÙÉ`à˜íð1@‘NäœNõhúi…a5͘}‚k7ä—oÿQ"çý¿¬è®¹õ@Ž©Ê+Ìå"S®/UîG6`üàš$Èû­ R…ÑHðQäÙ¦êL¿²ûñ³šììȽ‹á?XŠ%ú.¤¿súÿ×@†ºz|.çiºýÂRïd}ƒã¦òMgcO„'sRÐ#¿rûÙM?xÎ/º·|Žr*ð³ÊsfÚ¤ô-ö Îò¹gF ²z¦»/÷kó+¾'ei|ífOÍîú…fsد¢—gqëç¡‚‡uð‘Lv– ŒßÐxü4Hç‡áZ{?îìs¬9mü%£e€1¦¥Û‘@?f»Ù‘¸œ­› r™  š ˜Aöæè…©+4Ç’Ð7êÚ×&ªG5@cvFñÛÖ¶îåg¢^³Úk;Âd­t³ýÎaš—ÛqœÙlÇöc_p„ÃNá+@ŠÙåŒÙyO©Õ;>nìÃD}èéyà«ãÇún•k9Ëô±çKý=Hzñð°ÞîÂÂouúýb• }úA¹5° F„£`z4𝡽‚F>á­è!ýV­pWÖý0}yCÞZƒåðÉoácLP[¿4 ¢L]ÇWä„-IÇãXm˜²ž­oïÿû±PD ?”…*…?ä••Rm»Óˆ‡Óõ|à(À’Ö·«}V²;¿=„²t݆í’^ƒMí–»ñ¾»ËÜŒ) ñIòà"ðR„ÓÛIèó0§çÂ’`å=,J™ö³Ì!ןž¾¥Óñ'Ò~¬ÊÎ ËBGœ†PšAy΂,§¬ö¬*É­õw—¾tº ¥k³ׂy øòî䃺—·1êýÐÌ9%숥Ãóõžè²&OS¥Ð–¿n‡ïrAò¯iÏuA‹~ ÀrÂàœSnõ*¢zÐ0ï–o1ÿc N3p× ÔßÓ ”ÿÖÝIo¶žr¹ÆËÿùŸ­ å`Õ‹NWŸ•áúYõ:*â†Ôfêµ!Ó?ï©ÜyUŠ)1ŒE%¯uÃgÜyö#×5«5ÉCS>[TÕ©ªËä0¾¾EêŒn7–p«íø‘5(‹|lÎÏBÔ5ñ»†ggQo’Ú“RNØ*¥±‘r£ õyU¯a,üÆÑJÕ¡éM› >¾•…tâöÇ3h@„ZÎÕÿŽž>VõXPm“ôÑWk†öˆ¿Ã!U}w†Uª·øÒ&Noív0c£BŒ`ËJ¦¡O}™—T¼ï8‚ôç[B¼ÄõÝï‹æ×ˆS{ƆՔQ{üâ4¹&WIcx­uµoƒ‡mh—èßeªƒaYë¾0?«/ù Yo³·Ú´›˜^ºÏyc¤à²ö ÈÒm=Sw …SûÜÆPγLÇ£¢ÖV=;Ÿkßã‹Ë^ú¥’Š7 ¶à J5¬,4ºÕò6ëBpMÑGíHaA"¢lÓßöÙ~¼ƒUQ*o„Fä-œm¼ÔB#¸¦$oõ¥x¦s‘*œ|Lb);®;iÒ,Rqñ&‹d>OpŽóÁ+vªU·Þ…Y³ÄbÑ\%¾?üuòŒðTÒÊç;3 ¾ü°4`ä ¥ÉDMδÞTÑ3™ÛáË9µcëR6¤¶ä±˜6iÃÇ„ ³^*¸!?Pí­µeuÓ‡0˜‘ThÞ}ßkÆX Oý HeWË£·=%úù«¢0<6v/3èãxÜÌÃ&wÚ®nŸÏ“¹u¨Ö¨øò¿)НZoöþîÂ<œ•Ï?¸f×öjC3ŠbßBònMÜí”ZsÅÍŽ=³´å•¥>.§R)æPTî:»áõ°E;˜vcòG©Ðw«îÃ9ú펢Î(|åYÿš’¤HŠ7àØŽúžcÃZBxé>í]i®ôI—}¬ŽÏö–7ú”ˆœß©-ë(;ÿÖ CÞßÇ&.£…‡0È1SS T“¤1K«“+zxvXÁ‘¦‰#wðLÇEØ,mãA!öÇñ}§3tx€ÝËÙ õáüwQ¯Ýo£q‚÷:ün¦úÔÊÿ=Ë ‚ ©íLŒt‘"ÔêN×” öïJôh†U$×AÚœ úg8z>‰8À–Q´ð)Ê=ZƯÒ‰¼ Ï>¾+-ÍߪC;ΰHc=ÿ¼ñ…V-&åçnNœÍݺ¬âá1{¼sôý‘=’ åw{E½P:ÎD¨•÷° ÅŠM¸ÀIµJG VˆXwAÀGž^dâõ߉ɭíò"àÅÇ>ÝÑúæ\’œa|ƒ}lÿnìsЧ5úæ¿B‹Åcaû¾Nþe¿O7X£ÃùžMó¢$ï$`w”¦y—ŒB>¯xq|é)[5'¥¿óó'Ëì§¾ñùïRñò±âêŽ5Ïu¬‚C1Ì+i ¤Î©¿ ÷C¼^²›þÖÀ/ÜÌ ŽŽ¿;Hr:u¬àâ+>ýÐ|u QT7`¶óúÃ(ˆ.-ø@ºƒ:ÛÍo›Êa*sh%²ƒT‰´^ýÆG ÉZŠ6ººF™Ó/u…3tµ•z Šùx• ‚ø»Éî[ë°ü¸™u%ž1—GÜå|’3D«Ü8ró}C2ð’ç+Ü+YêX'‚_ôè3ÓCP¤’=E¬¡ÜSàc(QïÊ\9¡*ÑfH÷Øù£_e8‡lËþå\ÝuÏßÌì'¡á$ãÇ¿ÎR+˜e‰ˆrNz³I¯/’FóTãLBN}Á{¾¥zͱ›z6­¡ÔMïe‘§Ä–f!`7Õ#L¹¿hMc±“¤¶þ»à¯,‰  pÞ ZùöÞÝÄÑ!I{}<5V0ERO²Ì Ç÷H$Œp¼âÿµäØqîô[KÞ¹#2§Û×~Ìõ*Å^^ŒÁ§<"ž6ž‚4§êá²ü8eÐÇŒ'£ é ^GÂ)½(äÓÕf&ÃfËÖ#[ò7†ºèŸë%§ù™²¯ ór°Ö¶ò;ĉÐÛx ü˜ÏnkTÏ@1D'¼É€À!£jË‹ɽÜÿ.Aÿ†À²áå¡PƒR¿Æ1¨ÔõÄ#EòyX¥®"¬OxÙËâTuÅKÆB9¨y< Ê)—gm·ÁMvî×2^©:ap¸ ¿ƒsá9 ïG×äL¾$œ…ÿâûëÐú…ïÔõ¡¤PÄ?ªá3ÖEÂ.r–5…ż+*£4(±º®´}ðo@a}P7ô„4ü§ÜœÔ(Ç*qC!IAc’/§ú´=CîP£®w#àŒUj_¶ÎÔwocz¿Ð(Ð]½>¤ý}¬C4ךNºT®²E O_<í«¢hÌ쬖/a‘ ËšÓ·-ÔN1¯Õà8”y¥(†òk¸ËNò…6ÿHâÙZ*€©DðÒaIʧµCžÀrËÔ‹…)›d‰¸ñ èÁtïšÜÂùb¯_ù:UC~d$J»ç-U[6ɘ4Ïýï2X=Ù3ìÀj©ÜhéÈWþ ” ÓâY®‰4 ¼M*¤‹²‡Gåa‡¬«‹1)íÕ>-Dl«ò°Z|¢ÀÎÙ0b-ö)8sæJ16û£²· Ûô_7qú±•¹è2ˆ‰çqš'ÒØÙ˜i>ÿØñ©RÐxÈ[þš%&ŒŒxž~ßälMI ¿Kë1˜vôÙ»KnîáË\$A\>Ì'üo>wó;Ç=N¯% ‡z,zúý=zïç w®(Xää?¬ðßÂS/÷QÑü}ü,3WPž!Ýø[¢bœ&èJjV£±? ÅBg ýЈŸ) LrïÏmÒßõ á¦ÝûÛU:ól¯14Z%ûk‹¼½¿G·fçUú,.ŠYÔV 0ÐýääCcéB1U2ÎæL›Å°S÷Jºn‹¸Ÿ«‚ Ó_ª@ˆ!æçÏ<òoÁkóÊßÑ>û×D®;íp®¨œŸZk‘, ¹füг _'ˆ‰aJ.à 2 épøí¡X ÕñhK9øºº,OÙpO]y‘R2ÌZö±/ΜÍ#Ú{H@A|7® ç$’A¡ë\IV]ox¡hwét/xkc¾8¢ÃÈŠá8¼&ÐØ;CÎŽ«EQÊ4«ÊèBIU^ÜÞuÅsô]¸ô§Òç“e×0͸_zÙ•|Ì@ô}ð»ÚÜ `¤×ü^ªLlÚ½ ´ü;%Ƀ¿[ƒá=û ºñýÁÆ}$ÚŽÐו5¾r†|Â{µL^ýVèÅa‘¨í ãUg“öÆ}1M»BvUI {þÍ÷UÉÍ]ž&ên|?uòÆz2Àùð)'¸—z=°@E {¶SãI‡ú#EJ‰§Ê¤’¬Ž7öºÉ8ì‰äwèáaê‡?Tàä:9ßòÍ|á¸ÐõW?ûU“øªG}ú!*¼³–å%÷¿´U_ÂM@o»@}æ3eÑ å;³?ºhÑN€v’²^fãLsV¨†ÚŒ–DžÚ‹'Lç“Oiðx€R©•$SÈß}iÐø9O-/"xy-‡ýv­u¾ÓÏSÖ;½‘?äþ]D:ë±à(ÐéíþuX}g¸8Û ·õ\´gÈX««Òþ¹Â—`™^SaÊYSü¯ŸÓ‚ݘ4úÁê¾}ÚrðþR—´=zsÈ?H$|ØêÐ+hÈê`ø¿á`Iÿ®sÔtf<¶·ú¨—¹‘Ÿ[_ð{êÀ-àÛËýNÈ ìKg|³È;ýôÁøm±GãvÓß=eþdÏlëžÆb¿­b–\w¨o4½[ÆzÕÁ(+V«ÌõâÙ±#Ü‘¥-ÏðIœ"‰µ~Âí©nÔâ·&r..œO0Ú%¶?\Ó-™–yQ7†]&Î#¶jáKùšùœŽ¦d)=¯„7mu'€ÒS`)ã,ùJ)ê]B…óyIÜé㋎¨úÈ÷‹;úßF2kéaÁ[î? Kf†"¤ÿò:¸L™xg)/®1™¯¦Ìûô1¼GCÉ®6””‹ìÿ͇gÊ2/.tWœ.eCÝ‹÷$ÿ1Ǥ•+1-òX?T° N°ð´¦Ž"ZPÄ)Êäõu&œÕ‰=>@æÉÇ­}žûæ”ݤIL7BüñEa¾O™ªÎËõc€eÈ4+èì& ¸Í[bÞ™+Õü}\2æG1ÉoA¿³aüùŸ…ø,ª˜^×FÞq³ûëÄ=_º3¾à‡>É7Oøçµ]Ëz‡tPï‰zsO¨EÜÇa'å+]Ú·q«ÿzÞ~Ý£eQ¾òUüqÏJ7€¡L9iU=D]D}ÈÌcƒ³Õ—ù¥ë›Ç ÙÉ”=>õåøoe»r^÷X¯ªÄãT4Že5M€¿cMöðŽŠËük5Þ?NVvºè{DQ[ ÒÒX^A É/—»]5…d÷q‘Kví!½uÆÇ˜ t ˜PpT®÷?çåiÄøÓé9⸴VŒË, ‚M¦Ì¥z{›©P0Ô„{Ó·w[mœÕugôU6ðY£æÆÅ;õã:ªNIApeƺuºieŒéÑ‹Nru„Ä ¦’\tÊ<3$°ƒÒÖ& #›âeܯˆÈc¹?O¡ZZ n8y‰üŒ³­jÉ~¼ëiÜ»ÿʬð¥)Z¶·RtšÒŒ^¡ý}¬<{Ç×öz{)гfsyf®?2>¿‘'*ÂÀýš~j@“Öwˆ~í·,¾a7†yQ=„ ž«cdìàá÷^?¥)©¥f¤b*¾ûµy±“T—2³×k1ŸŽxì¢(Eˆ ö_/6¯Éèͯç_ðê¦ö'~‰Þ§Ø;7ÅÄ&žo Ä:Ä+VæÎxTóÖOq¿‹ó«0“Û¨p/LÍÚ¯ë¦dè,wú·pvûü¨P¶ —†æ ab$Òá›NY.ÝP#´•½k›ü,YþÞ)½Õ_ñRPPUl¬ÞIúáÁǘykýª^÷ö}¯¯MÂÌàµØèŒöð±¯Ø„¼ãã<Ò!yxž~©£’×d“0l;”µï0~˜;ˤP wWÍ>ÆúùaŽ[*Õ+‘ÀZ£¾@cºÃ#&7î¿ ·aðz0ìÇœlõ†ösèëê~O°ð@úùcÛäCtáeÌÐ+,OUšÆŒàÖÄïfg´ "üwB…fåßoÒWîÞ”bt]\ÎM "›ºɲî‡fåÎöe;Ã¬Ú :ñ«úüº›p•Ä?XÞ\º)ÿpx*¯ºycÚ1j…L½÷¨’⇧BÁú©7ùdÕúµAQÐGa GAyÀëÆ ï>g)$n¢ÀÕ=Â/?ÇüÀé% 3{æ2 ,UV3zÊÆYéªq’m¢¤“ÀÁs16°ÅvËPo‹á¼+ZnCÒb²‘OHºgg½CUEµ†_jº›Ÿ@õ,,yÚø?'þ4Ü¡dR´.F$:00ðâ Ýø7³½<ÿŽŸÒÚ9!¦üüÍS~$Ìrê[K^¼œs+¦×¨/9Ó6’§ÞñØ,ð÷›&šÆà ¾Œ…Œêæ#=¯b㔿„cqMÒ~FA‡ Ô¶%±›R½øt¸Jn Ÿ-˜]W¥hƒ[ºØZZñoõþKŸ­3ßWµ|7Q®¬.Ò¶È#D“ïTK7;OÒ 3JÚ¶•)­:@¥=Ôó‚Tÿ»jºSä*é¿úxdvkr¢E;ÊnÊõæå¢8¹‘™¾?ÛÄíþ-Ð5ɈRê!M}¦òö4±‹2rªê(;Y€Ú›|DX̯k5ŠX“¬öžªÙ<=iFNy+"ÿd{/om6ŒµjÿBÛ“>qÜÅí¼zÿw¸ä“Ó St ?™Ÿ¿×øÖTþ’y¥"½æQ^=î‹i^#öŠv¤’ÇõÔ_\ÆJÓ®ŸVƒ¯oÔæ£ÖŒ-) Û“J;‘7Íï ºB`t(¸RGdU©ËwšÐÓ;4ªÁD?~XëÐh¯õvÓe7ÐÎʲs}éóÏXtÝEmV"í[v7®‚ù¬Gݸµ»áºVƒÙøh›· /ŸGskÞàkôY¼:>ã „’ÔñYËRÏ¡¿¾·L ¿*s¢“9m¿ÚÜŽ|·•ð´rpNµ‘˜zö¯Þ”Ï6ü IŒ©ÌÄŒ´eûHd«Mvó'©4¶–¤áTã‚ÃÿÖz„š5\+ÏË%4¡Œ¹“ÄðslwÙWk ¶7?Y¬ì·ó`‘y 1ZR4B‚IþõŽª„P¶%ÞÈi+%Þßdð7ìN‡Ÿ¡,4z}@•ÿ¹°h.S[=«w%Y¹nïJŒ„·×é0TR­–ú;IJÐ`!} ²mmF.‚…¡;ö<[âx/É4‚.®6V;]ºÎãÀ-†FCrp0ö_ŽKG±óºTµß˜šCÇB’aèßépBô®¿ 1æ†1gÄa& Èh|®ãcgQB¡c,îšbŽ”¡²â?N]ÕräOSò-€a“ÝŠöfèp‹ tT<ѳI6,Ð+%PYû Àêx]z©¿ßÒ#O›€R #1O¤‘ãùÛШ`†›öm 9öÂdéqó2ÅòTò¶òŸ¾Ïgl3~Øpa&äG{ÞÔ¾Èø~?i%¢;ï¸3m^˜@©¥µí>°2æ{õ7gŠ>Sª¶õå¦ßÎÆÿ ÆÝé´á§Áþ’|˜®×‹ÏIüwkŸŠžPç;!¡ñ¸#g õïX ×_iÒÐ~­d›Žû£ KZ æ¡Ò÷u–BZZÆDR¥õ×_biéâÛNö·²×Ô§ßЇ 7\*k?5Ò‚ËÚho“ò—îBNÙçý“ZY”Æ×2}|2 ´¿iJpÜ?±Æo b¿¶™RP•oX-!~KZ6=lNw?–û‚¤`Tº,ªeê%åÖ<2Üò}Èš¯ŠoÁ#! óÀŒhJÞ‡R ŽâaM2 }GÁ SB9 'åùÞ|WlŽÁ&)®¿‘ê–¦oAˆc(ÙT×çíðæþö˜a̦Eq´iŽ¡Ã¾ pÜqÚ»œ«9„6ùCÔK´+ˆ]›öN¶>†xî öÃ;ׯ8ÕV¥Ö?äG÷Õ ›MOÓž5ÄEÀw°b¥&ÚZ›2ðRIŠëMjüâmÓÃ×12|¤üfŠK5!ü¯- Ô<ˆža÷~ÅJÌ›cÍϯ£Gü²Ê]P´´˜¨vaµ¯ØöX¢ÑƳb«^½üÙØ%Ž¥ Î¦¤w :ø’a…#“3qóÐSk&þš@\=°&$V!a´ÿ^ÅÛ&ãÒm‰NQ-yìï7²¿Ÿ$w¶Ž5ƒûyêD>œñ÷ë8e2!óÎB w•ÔI8@@ý}Çê"?Dnú‚ûšY9D«’¤Ôäéd×ñnGéÂWV¸ã MIƒ*æ(Ñ#½±¬· hÖJ¦fʲ?“0zKÆ9wÏÖÈŸ2¿LýÙ_,š&~#Ž“¼ï«:&ˆßÑ}/Ÿ(-ßùÏ—¤¶uÀOš¿¶LŠ³Ê¨0×X!Ž>^Þ žº^Aù–Ñ€bÑxð¯F¿S4å¢ÿuÞdÁó|eÂ…pí¯†ÜݽWw•[-Öç ØâáƒGZ5Ñ ¸}³¼ðØL>eùé88½.þYÒÏ )¦2ëÍ[¶4y ÐzÙØsÿ^`ì|Ûn>Fþ|¾×;á${ðP’Ù/ZïeY QKÎÒùhÿ*Iбzágìw‰”jþÀš_pð•ú/¾‰E)^µÛ¥•¢¶ÅóÛu…¯)" ò…ŠÔð³Ì~R#ÿšâǬã 0ÞNüîÂ,ä7¨ìCøÒ7éš|ÍO® …Ã*N–â‘°sHC×d„_¢îIAåOÌ\ aúCåAiÞuÙÆeCà„A*^9öuÀO­ÃE9–’mI“ãRá¿a>ï±CÒÕ™f#­¬!ÿÌjТ\Úœ”“öê^à_Ý{*Ók[ر\ó‘Jž~rÝÖ`Õ1bÈP,]½à«Ylc¬P6ÂhÊòsH”Ç̱IThâÐøº¢·8x{¼×wÇþMGP<µWPr¬ƒUá)üÆEøUA¼J»>O†•‡IqköY88XÂûŒBÍVBK3I°øLܺ˜ãk– 8Ã//aSØsît[K&$Á}ƒÊéˆt×:‘SñqÓ€Âjp‹Wþ=‚ýC!ß=†CbâøÍ'ëRÑØô2xLøG(,z‘TG"'ñYlû!ë8ýlíïHŠqJOØêcolÔä»OBƒ6B§Ã;UýLÏ.û?öÞ«éQdM½?¿‚³æf&¨*áÍšY;„pÂJÂÞLÂ;áè×ïTµ«^«»«{™ÙçÄ.)¾/D*•æ5Ïû¼ $!›Ÿ}$nŽÒK8˪œÞëäA ¨‡•߯ò5íŒdr±é$ž )÷†J÷›p—c  ÓáæzX"Ü'¢ncW‡Žaò  ‚îa¥U«;<ñÜB´Yº õ#zír-‚¡MàÞÈ^l¬CÍ]LŽt ˜=,’¬kÉ– ÃSFE×ÛZê¸UÆ3eøó5öÄ1[­>É8 Ô}tT í7•›}C¬Àµv&"­cè¸Ìíu²ŽRØ&+!Ù´{ÓtïZ\{±&aǾ_Þû±¾Šn¶URùÉñ)+§ÚzêteÉÙª“Èbæ…Ÿ,»ßwëŠóI˜Œª® y5áclÞ1ñ— ¿?e¾œvI›6,‰ùq…^ št³¥Û¬A‡KÕ3…‘Ù¼CïÊ={öwÌp%,:ñ}«N[é³uFÞ;/>×ã wF= ×1®!“ÛpC•H—«.æƒ_›þ´Èö!5MÐÉŠò{½€xâá}åœ;# ÇRÞºÃE—±Àæ+~à΀,ÔÝ=ȃ»ËáVú­™w*ÐTmÏôÅa\¿uX±Ó]\h‘­ç[¨ÍÁŽ–*]m0‹ÃÊ- Œ›r$È¿›8ÛÇáñbÏÔ5Ì]@ûÆV›–¨£+ Ë]‘”™hOFãådžì¼À*HÉ=¿êJ}Îîu#[ o$ÄÂÇ›òêŠ× r³¼c'ÁKq‰ÀjÛ éÇt-ú]U{9«Ú.‹ ŸcwO{oè}n)ªs(ä©&à‰#ì!ØŠo«Q:X å¹yˆ?)Øt¼ÑÄü8²žós=— ‡§„áŠÏ*ÿù¦œ†:üfºxa ê¦9§bXêy8 †u¼øôd\09¢£Çé¨Ù¥ÌØ-£Wê…Hy³¦}±)N% zšsŸ-±‡ž2ÅYìA^™>Í¡aLø’P¿8¨r²‹ÔK*à'uZt–äc(ܺ]‚O+ÛÃfF‹¹4áh‚„¿nñ*é\@ËÕ™Ÿ/9¼úònóc—€äÀPLk=ã„7B¾Ñ“@Í©õ\Ñq ¼š¢úÃÝw¨RXßDûþýÜe‹>À@Õj2”½[£³(FjƒÓFßWn"¾¬àtlÉòëî08íÖ÷ùmÛõ èPì°xng4Û€Ý:ÛVw½Dûœvm”½w…ŸŠ\çH’Ÿ/‡§álXõ5º\dy Ø\5¦È‘¶c(+<ÿ̦H gRlpDÖžó˪–o‡)Hå¯óuÈ8; Ùþ2Œq`¸›pâ2Œã˜»u~8ºË@­\ïWmáFˆëT‘ó|mtA$•Ùp7ÇŠ^ÇÕj’giTƒ&>U¼wFU0çò¾ˆÁêàú´˜`¦òlŸŽôµYvtž “vÏÄ8_8ÔJÊÖ¨ŒÙQú™S.e·õÜ˸îiÓ+xe)*?×÷Æ$2gè²y7îÊc[dÈ7Á´Ö±˜ÚŽEiáÃg‰úØé§mÄxÛk°æÑS¦@úì©ôœ‰WÎæ>û&HQyh8âŸßq†ãËLI;Ïv‰UÌjUá—¦íð™xaäô~6!L’• ôqHúF+—aŸ¥=Ž÷›T»n"RJ:=ílcœÍ+…ÃÒóYìû° ˜ð³˜´Sþy›HÎÄîPÈïóƒ¸kÇIg^v=Ì×,|êõ‹ç ÓoÞ‘©åä$SrÕ+“lKûyvbá\ÎéΦR¥×TÈ.d?Ž0«v|Ý”$öÎzª‹~&ZÖ%>º¬ 8~1k0å…JØ*/É< †M_™~·\ü}ÆOšâ¸»Ê®A›¶>¨ @x"ÝÖ*nØ ’‡sÕ®gœ1!u¿ÔºJ«¾¥;&×õhH”x 52þÏ·úg`ª H¯nÔKD»öüL$)¾-T.õÄnæ#™$¥C8gáí˜ æþ316|×§5(žÕ®§Ö²<XÈÓŽU–«õ,™ ©ç«ó+¯b6Ü÷*•Bª}í.­(*cÄ­Ó òèÉgfr¯cY™/™k L9pióOBèƒjÚæîÎjç²&ÿê+·m“C5 ³íTð=â•[ãëÝ-ÎOî`Ú÷LlŽf,ÂÀ¯¦¬_Zàã€GcýzTØÙ2csk@Y]ú!:”Y¢é±‚nÏÛÙJGÀçÎ~ ÷£ß'’lx,^‰Ú"¸z¾ñ+~Ú(å”™€=¸(UÔ‹C†}^Es -ñê:}„¢b¤ÆýA­ãi7;2 ¯!•§zi^N« XëWw}Ô õ<‡E–4ˆ­÷ Ô×èôÈ~.…[†5WŠ|³yz(Vud`›Ñíå?£nÇFä5¯ÞÝ·Ï¡*ÇíÜócÎqÎmC*LÌüa—nÌœÜÞÕàÖQé0‡¦Oõe]NE^:<ÌÎ\éXFQƒÔ7lMþ)É kß=ÆÎ܇§×¸¿øT3¢ø„¬T: è%c çå¨Ã¼JJ­PùJUÎù¢^NØ8jíɽ;s‘ÁNä+ï‹]ë0Ü=¾–ó–(š±ûíi?êÅQ?±K,@ŒÉ`»V9½„O*Ò»«óáŽÕp]±ExÏ|¸ä4‡š“XÇÂqÜöœ×ò9pp›ÜÑÒ_:- •ëeEÍŠ{dï·É~5èã‘ÝÆäÄ5SÞÑ„Ãwq¥Ä’¤ØÙѽ©Å ÉמŽšà97ðG6¹D‘æ`:âÑ2Y½¾ÕòV À ÒBà´˜íÀäl6º³`T”‚îã•æ¶X;‹|‚”¸>å }N×SÖJÔA¼ôJÌŸÝæ†TŒuk1@9 KGEþ¬NG²“vYG;ôà£Íëy«BaZàºÝ½‹ ›ZE뽚œ”†Í«mÂR¶™—a-2Uç&ÜϾ—A çæúk4góÁ]+æÜùáì~1ÉA¨=1Û»GEE`³Uõö1½·©j¦g/†uöYÖÔq¤c©Û!Г̫cåB&©@¾m²ÞwÖ^\:<ŒÕµß“´.¨²Kioïtý.Š“ä$¬©Ý…î©–  fÃ«ë ¿À,£}lF—N¨Ñ ~Ó‡¨{\×év(ßF)Ì]ó¤–^­:g«·Oå˜À(vÎj6f°{ A0CÖnã´ Ãu€žöúª0ße¨kj].ðÐòr3 Ù º~­×m xÔï}’´Â›J=Xãù4ȃ7JÑ5ŠÜù" åJ‘ФYÍVœwAÓÜñ/Û9ô_–(‚Xy©^RèåRÍ:§°&·ÞÈÜc5JŽà å³Ïm:ÕÄkÆk¢ ×páxÀ€9“Þ6æ<ž WvÖžÄÖž¦µj¡c–í±»>펚OEØ*CóPJüö™ŸÆë¸j]ÎÖ‰7ËéBKõÕV4müxŽÔ°éF_›z}Úb蜟•¡J 4¢Îh5\è ǘUÆ:ËÝÉUw‘¨¦!å:Ü}4©¨ÆW_ü RD3ô¥y´¼¹^Dã뇰vq‹’± °1’Ôݯ™ë^gýL¥µÞìé`áfƒ!·:T¶â߆=ó"6EÛ§Jé(ö¬Úw,ß¹¶c»4ꊊUÿ~.ÁU‰7FJ£I¹ë팤«‡ì£v¾IFÉfƒ^Åœ©.¯,A8E[ñ~Ú±+ë$&÷‡äü@‰û /Fʪk˜5«¾á\bŽÓnG·ð(òÐþþº;ñdg»3e-Çô¹ð){ލ20õ“‹8¿)/·Û©,š÷ÄLSÀ£J’‹x^jË×Ý}Ó  ÆSUˆBœ7J®ÉX~îá%{Ÿh2œëj_éƒUñ!¼²¢ùwË`\FqëÒàKa;]·–¸î ÀÁDÝ¿ä&dßmò"4!%uM¢çu¥°[O–âÉ™¦S#6å²ÁѦˆLÜâ‡ê½‡¾óÔ¨#eG_·iT<¡ì]ù¤×…ÖµÜ 7˜¯5ŠZ­“øÔDÒ¡•S»µ÷]¦îF…åÕ‹-µ„âpˆÎ£J‚‰NŒ—½Ð:á^ý•—Ngˆ®bça"ÊÞœTÒ››W´Ëëj¹˜ˆ …äu´‚¼Ü"Ö Øo1Ÿz¼NÜPïNñêšg…Yq+ëR+¯/1 ^2–· û¬¼0a ©LXÓn­×r#y(Ä„áå¡q­Øh))œy¹M(Ó>Ðê‹:ÈÔžúXFÞE9]§2vÖ,ÖœkžõÜÖ î ;hµ, „Jš>ïú­ÜD`äÆÉ˰4í=ÈãUœ`*‚Exvä|ŸOT毬"qF§ÉÇ+7Cª û‘‹"`ÎÙ)!Û÷4ñ\´Ò¸Òª—ÅVª’¿/ɸ£‘ê( î4ª‘_š³œFÙQ#›«ª¶)yÄL ~}¬ê-ì¡ãvõ.·Z»H×z(Ì‹Ä4-Ñ©$%²î3åm¨ÞC½¹—K­£×…èç~._ײ»1Ó%/h­wÇpô&ä¤ÑÕš4 7Nσ#LÔº~â`ÛpļéÍ~Âi”¥ÙŸ›N}¢)#¨/Šç¿î‡èô;Á~!¼Ã[ßM£Q£{™v?JcÇ@ÏÔ'Aö§m –w1ùcáŽ~$Š òÓ”7ô]•ø\ücaþ}/_XÁç17ÑœþûG”À?|¤ˆÿø›ê_×íÏ'ùË&ëëš"ü7Åü÷GúãO:øU³ÿQ`¿)$‚ P–ý+!á-’¤(û+ùàÿDƒý¦hèÿþHþóDóÿ[ûA¾Ùϯˆe¾ÙÏ×…ô ~U4ø7ûùºÐoöó+¢A¾áÏïõÍ~~M4Ä7ûùº~›$þ_m?¿M ¿ÙŽãÏ¿&ì[üúBú¿~U4ÿ#ñëNç_kn¤Iì#ùÓ2ß4÷jWÿ]j¿\Uû~ýïýÝG ®~üó¿¥ïÙ¢ÿü\ôÓÒß¿é³lJç÷íý­þ¨Äo÷G¡ï÷/´~±x÷óÉþ ÔøOuˆ?®<âw¨îg«¤¿ HñóëïUñ³>¿þO«éÿ3Þ†3¿CaÈÿ¤§Ø7?ûºÚЯ«í‹38ÿ?ÃÉo~öGV¥‰¯+ £þ'ýì 2ûÍÏ~Mm(ýuµ¡_‰8ÿ˜Ÿaè7?û# C~‡Â¾aþ¹~†~ã¿ceÿºÚòãWòó4„þøÍ×þH:ËR_UÎ~%Êüs} ù Sýæk@m û;ÔöOø‡< g¿ÂL¿ùÙφ}]aÌW¢Ì?ÕÏp†úøÍÓ¾®8úë«!8ý¯\ Áéo«!DaÔ×WCpúr5§¿­†üµ}}5§þ•«!8õm5ä(ŒüújNþO®†àä·Õ¯«øújþµõ÷ÌÏÈoÚo)ìççX¿"MŒE?R_K©ÿ™^†±øG’úZ’ý¥§ýü ð×äÈ Ú¿7b€ß¿Â<þÙ®ö·€C(óÿøÕXAòýÈ’¿8Ûß6ï4MÒä¯Ìû×ô -dÄûý×-üÂ@>Èç×—_þ0’¥X ñß¡0Wì#û³sÑ?Éý·JedFþÚTÿAU‘,ƒÌùIÚ¿zñÂWæ">2?C¥ß©Êìóëoê«=üÈüý…‘ÿüšH“¦|XÑ\|)ÌÊ(@ä—Ë?|ñËòãÌ_´÷ó›¡~äÏï€úb^ﻫ ”þôm~` äÍ` F@Q"éOäJ ôE“ƒƒüвʼï÷b’ˆO쇠t„æË 4…@úÀF„‚Xö}sA`©O$Á , ½¿ðŠö†oqPÆ~¢p–úÀ¼o¸ŒB`âÓ»cÿîûDBÚw¡×_yÒã; ’À“~ÎBú{ùîú{:ïH2I’iÿ¾lâ'“í:`²ýø1YÆg4/cú%lþ×á­üA'Á–þì$_£9 ûFúïðäýþ‡àŒy¿œ ¢Iœf~ÎpAA„b¨ßAéXÿˆ}d~Éý€%bïò+”2CÒ,ý;<ôM‚aþ–"ŸÁökë )ž¢)úwuMãt@¸Š“øÂøoaÎ0ìÇ/¯nú‡1çó ˜cúøGöwÞˆù$¡ØgoG0€Ï€Ä'‚"q…>bŸh–&Ø€¦!,KbÐGòŠÀ/>¥0ò]‚" I|Àß¿B0½O,΢è»ÇHœí¼- tê] ¡pP ù„0è` Š’,C”"êJ‚‘$ËBñOËbØðc ÅQìcpŠþ€}"€fŸ‡lëÝÎP }d>aB3?`Ÿp€o4ðF¼Gy'X—!ìÃG À%’ÀEé püBúè }ÿ†ú„â$NB ð™Ã‡Ø»s™,€ãϘ À†Ó§¾,ÈQh†fþJÊ¿¨@sè_±Í¯åWwz¿§äŸ€§,Š¿‡Füì´ôŽ$ö?G;@—ï`ðKœõ_B;ÞGQókÉÑog(¿B}“20ZñÝ à?}ÄèOÀ%Pð Ç?1(Ò©Ÿr¬Ì‘a0ŽŸ$ží E>aÀtülûËŸXà¦?É)ùÅzÉßÔû|;÷Ï& DÎ{ù•›ØþnÛúW*£pxÿbtï„’%6!úó´’Å?QJP_\kJߤ§Ùß¼hùG € 1$ó½N~8úøj$I 4ùþÌ24 Ò×ÂuÍŸ±ý÷õ—_Xüß+Ñ¿Â÷ ÿšó‹Dé·ÿÏÓøº‡ƒz¿F.~;ýn.ö‡ØÜ/3£_¤Z4AÒøÏ®üi"ú‘þ 2÷û‰Ñ/õ È"†!ñË¢fKÔ¿›ý6È~Ñý‘ú;sâ?´ÿƯ$¿ádôgxÿ ¨ È¢ß#à$M–ƒ1{7V€m:È+cŸaû@ƒ¥~ŽX`5(ýå‹ot#@f‡ùÙÒÚ A4@¾ ¬¿™þyþíjÄ߯æ‹«Àþqy‚ɳ,A|øÌIÅ 6…4K€”dÌ8‚¤úåRoÆÐOÅû“ˆßQŒú‚‰ïïCš>ø“ß!‘ÂÆqöçá“  &â'ˆ?’_EÔ@Ø?®ÒýV„øâ¦ú\ØVì§è†c0ÅòM#Ù°fŒf¨Ÿ›îgRßF‹üÌX¿üòm¥è;µ@Ø/¬ô×¶Û¸‘Ôï)_£îýûw{êüÇÏ„ñÅf;_,ªþ¸ñÏ'º~Øöç‹¢ïûýmiýí=`pMúÞ ‡¢À4ñ?}üŸâäÿûñ#tM£¶I§ šÓíÍà¡ÇØ?Ë{z‡âÇ4ý¡Âí»ï§OIßB?þ¬­LÒnJÿ %cÍå3…@¥¶ï&Œl,ãe.ûîË}Þé'þÒ¾îÑýùó÷‡ê‘æÿGSJlu 8ξ֡zÉ9ž³NY¹Šã„¶òÇ@Ùïûƒ~oEΖ¿küŸÓØß6¾rÜåÈNœm ÜUá ®_l'þÀØœls—+ßõþÅ‹ÏñæÍs5Ï='š (r@ÙéZ¹õ¤@ÜêH<—ðÜš»bÎùª­\ÄcÐ)7'P…P<½Nø%¯¯¶ëzgQDÛM\Ð{¶w¬"÷=É>Aè`šýÊu [|W2·w%t¤¿GÀó9Éû‡¶"œ.Êé´Ÿ8¥:Uz}rìF, ÑEUTË$8!)ÓÅ­’Î<®³\0Ö!â¸L›;žlý 7bû‘êÆ‹6¦8¿žŒXeªtHòPnÏG¬À¢—ðûI5ˆ ¯OqŒ¯qBök=åŠe¬€éäÜpÎ^­ò:>dæ.TÜBßÈȨ»NG:ò#⮸ÖM0]µ.¾†üiGWµ¹}À¦ÓéØMl3ÁgƒUïÃãó¬as.ëWW”sê{=ê@•…àõ7>nl&V»\7í|>ÈË•ir^™& ,Äk¦·gã+‡Há8°?X^ÇäÁ&Ïò ¥d꺳ºP×k©¯´Â¦SÇh”íœ%I ónªHذŽMínŸÐ»/Ó\¯cÕ,¹@ºUxûenä…Ø]y)u=®7ÇŠ[úëòÞ›I²ö¢IôjIíÑ2¤+æy)§‡<À1D3²îAª‹äazkQM8BŽœ¥zg óì€ã›Mcèëæ}¥ná!s¬XûÀÁÇ>’çŽX“³RŽÓ¥ñ,iCgeÒíU¸‡R'«ñzlR¹­PJ+ ’õ““Çb ’„°Ý󪈃JÄ®Y‹öý!·¸€á)ϸa0R¤ ¶O(ŽÔðUË=Áü¤¤b/Éw~MN¦$Ï—¼•MyUq¾¼3·;ÖµHpøp¿!â!¾ª¨æ£‹´ðµ[ò Î¹5×VV¿¹däúNóu?éi1ÌÎ{ÕºkV8ûaQ­4¯]” g]upºäB¼¶—9B{OE… `—ëCyͲáKvvëäy˜*T)_£öxâùbï.¿XýÕÕ§Þvõ~_£âêT›½((k:%ãvÆèËhÔ‘N7ª»m·i>ãt=Ú㉭ƒÝ³•)ç´²ÎËÈ´Ä >Ð0çD|ÀäÓ}}A±þT_Ûr<Ôf“¾Ê1çfsÇ꥘¢s c7E[ŽÙŠCý~Ä òJÐ{¯ö«ŽºÛ$o —wïG@Qt#ˆ¨’÷'…¿¼Êš ÆÉ5E½5N¬ŒçØEýI»òö†‚GĤ>²kκîd´—2—ç+¨iö¬ñ:ÉKs©,íÜÕ\üõ+/œLF)>½¸ú•Á¨ZÍy ºÏǹ߽|ñ-[ØÍà ñp„²¬‚¶Ì‚Ëyئ-CUñv4ôºzÒÈìšbÍÑõê-‰m&=µÊálX}oëpz¨ç•s»¶7²ß6õušV.惶üîOÊ{gZ“&¿¿¶ÇÃòÖµ —³cÄŽؾ¦„²Ü›ã14‹]¿ºéÈq+uáÞ%$pÊ£â*2Í £Nâ-zI˜Ð¢ËÜŠÛfàwy¾bõa¹`$m g–äñ.¬6|•ÏÝtZ¾zׯ˜Vh“ºBÇNå³{QǼœ ‹?®ÉúŠ YŒ'²÷È3{&>Íß5NlwÓõf¬— XŽZ4çrâÃÑ`ð[@_î‹Ð[Öd½j”Ç«<59Ö£Þ -!çó`<¢6„rÌÁ õZÓçJ+2ªðÔM–Nw–/J¼éųôJ²tF_×á㺅8ÕªFn=íÈe•]±ÕØÙ^vJÿ¤·W5'¯H5šSz…ô—ërLÓþtoPë<ê+¿wü, äÙxЊtD·ÙV–{ûéK°as-ð¯úÄËc†E1!ÕH‚Ñ aüû9ÜdH¾0À„Z·šÁdzuµà¼\KSXMŸòÖ÷÷<<éÖkcå–ËhyÎßÏŸ{k×¢DO†[E~åîåBñøº9×£OÛº­¾c¹ÙUk£©¦Y×fÎÇ»ÅpÖïv]lU~æçÖþÖe\5C×ðÅVæ kÎSJ\÷2v½ÄpíýŠ»%$î}*5|•Œ§ãü:­†. ‡œ!°,vNë«ß€â¶ ™§e{åæÊY8›Gåâ^žf<4n1(cﳘää®0åòXÔ3R™z’P"žb óô”[(A>‹yºìƒ0ÇYûò+=ÞIaíJsS í®ý>;U¢+ʘ»ÕÅJ°qg ™•¿t·îµ°ÌØøÞçüa•4–†°Ó hz¤šÒs@Íi¼®y=çóuÀùT7ŽËSÔjá˜]Úmt¶ÂSr$Øå>]ʦ¯Œê¨špÂÛY†S_vÂ0yArBüá‡_¥S Ktõtã4ÞòÍtÅ>¤Á ˆ¨æ‘ãùðDâ|cç:Õ%Àí!ů#”…wa ,Äì³NÊ•$iÛ#"ýp—ìók|UÏãí2ÞS¢&úç<”)"} …¬¶Ä@> ˆØpC²ôVÂ0÷ní¶¸qçhmb©¨@ü%øÃH«|‡²^å3Œf@Û÷ú>ã@q/äÊqPŒiæ„vé DË11)ç1ÏùŠ·-IÍFª¬|SÒÖÊ·Y›ÝÏp7^µ±Òåv^Pµf=n²ìqaÛöü„¬sò艃®ódmFv›08¡ÂOîÀ? Œ—Az”Ù< Ûæƒè ô)goaI¼¤¨XØB?ÊÝ[sdÉ$Tñº.ù›Ðz9À1oÞð®¤/ðy¼`6Åa¸‡8ñ #R­† ô,ªØè£ÃGc±Z—Ç##O¡5{h6 çųLæ‘ÊL›¶¹ž&·æaS¯gÐ}˜@È^2Ï-«2šßwVƒ¿Òꙕظf+ùç‡ä˜½ÞÕíÓX~ñZdF>H‘uÝ4·I!àÄ‹õ8<ŽE‘h낵õ>@gr#éÍ}  ƒÜXîÝ7ò4m¸|uÜÝËÆºpÛ6½ÏîŠ,Ù½ÃÚÝÇõi øyXïWtÏ5áÞ=ç^KËé:.y§´” Û|µ'sx‰Ùh®–p"9åí-“€µ¸‹ú0Æ3 ?Î9q§ ç-[‰p®¤³3;ú ¯'ÝAvµ¤å™ã ó˜î§Ã–]àåèDGBz;0зíšY«ÆtcÀŒ6òZ‡eŠ‘öЗ®œÉ3DÙ楖8 œæžÂoø&ê0X‰¦õlì]º³1áÎÂô2²‹L•T~=âÆØ¬{„ œõäD9@G4y­oÊ\/‰·›+„»Ì×1ÂF®Á¥Ž)oõù6ß'0K¯J™bâRah!Ãñ±fqªÏ ž9pÔ©i²{ퟤy+£{´m¯ ²â/r!e½*Ý>ux=$1¹æ~šª½Pò`å#ž§e΄4¢¼h9‘v;³‘|ã¼,eÊÍÕ’V=ÅSœ¡žý/XÀ[×’lÏKÃ3áÑñ=j&UV}?–bwthŽ£øÅÇã=öhYx¹ôPYÁŽ•KÓ"R•à¬t`÷ÜjmX‡bšÞ7/IÀzãê˜*ŽX/À eALX¾´bÖÉF•÷X:ê¶Ír5¥ bü£>ü48ãÏû1s´€ã8un†Á6(n{SŸ×'7Šê·ÅjÜ´+c7(‰ðc ðb3±Â¤wÞÞ£m)¬Lhz@2YGfo$?ÓWmŸÌ>Ū£¶ÄI±á>d%3=?Ö$I,ÍGPâ>÷ùz“o(G(ÏÛ³›âé‹ÃMX R7¦ó¸„é5¹gÓnºGÃl.*4°¹CZœ»B‰„åú­·Ó0ZÎ’ªp½­ìtôS»­@þÓc§Tüb]I¾BÈd™)ZôŠº½Ä ¶ 051¤Š˜¹Ä`º®Rˆ¸<Ɇ‘äc,ÀÁ¸9»p·ûÙ¸ ÂÊø(›\¯n/ª¨Œ•XæF6êS¸—)'í^©s^¢©L?;Òª7!–W¡‹x’î¾ÕækpLŠæ7性;¢¸¼ k‰/`y@7ÒzÚÆˆ;œ—I¹Ï gP½›¯så+|PN† Â:¾/Aud. °ÍÊöúÆ?¥OðètY^×íLCWµšö…7’¯A?0¡„‰%º‰íE¼·Ûòðn‡f›2·à;-šðVÍ0Zâv–Šù…Ö,–4wõaNT¸Nþ®ÚŽ;ƒT{†–#Ö‹E\­ŠÖüs–ìy~>²p¬¥ŒéåùbY˜”.–AfSŒ j±“‘¡˜NÏ;w„£DÚâ«ýt¤í>©r¼<±qëûÇ6ÑO[qÂ: ‰5É-g`nãbø9‘“ UÔK×§¡×ŽÆCŠ©©áWãÙgíù'Òž ½Äv¯·èdž³çòš6Ý+*ƒY·£ Â5 ,€ïÓi„îZsö¦[˺Ú+4~lÊ…6Açåæ½"ì’ÖÊa„Éc®Îò*µç½viCÂx˜ã`|öýQŠ¥P—ÚÀ’`"Ø„¼®—.õ`ý¾#$ɉôéúãÖcל¼Ì/‹”ä:˜û½*ô3€ˆ¦&TymUêA`ÐÀ1×åÔ{ ¦ñÈ&ºc X¸†\ÂÚ–Å|Œ¤j«§,Ç{;u“kóÁgr_Þå^;›3O¦Îlb¢”íÀÁe¥å3 ‰¯ù<ÎÇ+?ç¯JîN€(ËLfg â;Ëvôð̪Ȍ§ÎrÇlâušsÇ(¬¤¾!l-´Ò5°‹Õ1ù»aŽÑ®‹ðl†ÑÌær@fcÞ¥³àær|ÉŽ!T÷›ŠfŠñN„ú ¦QãL´ûj êöÌc>?ù¢ñ¹ÊF^šù$9q?æAlÛ=iÖe­=¬ +%,Úw˜÷/Mª}]¥wU:)´ékB.“žL©—Åë«Nœ´§íÝ»ç~˜ "°aM=åç(4†èAye«Ñûàߨ‚6gª¢{R²I[ÝzÇtü~,0ä±ÊŒ ¹«ðˆ§&·T.XD§®†½’ÐâKª‰fXD죄Ê%E¢ŽÊÖ7MÊ\áݹ d$xhÓžì¥cla Êðñƒ…ý{¹ëô“s&©§‰;´ÌiVC›½UÇÕKv7#íž~6þв1hO¿!VB EGɼ ÔÓË !ãé»Õ± ?·d8?Ü0Ìîî2ôj­ó(ßV£lw–›ð¤˜»6 •Ð5ícv¯Ý³È =_5®Sˆ”i溘Þ"ËèªÀ´`|á(O„Ê`»‚D¤¼] "Pã a:óÊ'î“ Í¹ùî0NÈ€ jq<pfÞÝZŠ„ßHvdE:‹òz–¯Ñ6ÀÏ>yx‹ ˜.ÍéÙòêé{¹D8 º5cü.b sD´ÏÃ-‹~qjÌHàON»ÛΉw’eŸX寳JßgQÁmž†¦U;Û2ërÓšÎËZ—(7{/Ï¢6¶L‰ú6h yØô¥t÷¼¿Œ`+æ<^izë®ç®5·˜¡¨úHÖ‹ÇA‡¤Ày¯ƒGú²ÝÚÉ'yâ8x dò‘ƒ˜-ÕÒ,D gHÛº9¯Ã3ª°Ž™º<v'4"EeÎ OÖÉʱu¯-˜I/[[:_ehçACÌíd[®íuŠ=2៦àÒîkA´d/vÜ’Ïk5_ É/.ßΰѻý{Æ×%’Ü:D„!θ»&Cb’ÎRý\è•+¶QÚ²ÂUò0’Ôr3!Ì–Ù–#†æWNÚ0;ô‹¯ £¹tÈu+2â&ªì‚Üm‹EdÏS;¹,BLÅNìZªæ236¸¦4•­ÌÑÌl¡Àëf²:ýYb*cÁð9•<@2nà< ñ91jÿüšÇÅèôFà›4¡„”Ÿ³’!.Þˆ²ÐŠ.Òî¯3îC·}ÊëôÂDQË®À ˆ‘~=ÁEЛçÛxïÅ6y^+_еéB7Æåø|†0ƒ%¾ñwmæE‹ÉýÉ>àoæ‰# &\.~8Ý ®àl!—¬ÃÌ,ý,]¼é¯¶–[>¯N¨¬ŸwÓ_8áüXû‘É[-HC7Ó9ÖüàXtð:ÏäÕ-,ÐÎ&Ù9ïýV;Kêi“ráB]-_;iyåÞ=ª;qñBéñwiŸ¥2¯+{´Ç÷£N†”®FÓŠk Eçm–hîŠäØ©ª¸„¶ozÝ-q>`¹¥zêÎÇ,ß•uzT,ÁÕØþ³s…´S¦…òœÝ’j<ï̈xš¢‹ÙÂò“ž,]})]ï<Åj¾IãƒQ­¿0ée\c|"_4¾fÏâm)©:¹¨.«¶ÀB€¾ÔAºjÉÊM'Ûl·0=ðÈÑ AÈ “‹™\îOz0 ”ìz|–ûóI€ þ|Ì ¾úÌÒ³Ñ5›0Šu¦yzT+•DqÆp­‡ðbº~2Ö1 ‚,þZk+6µ§²J´WÆø›Á7h‘‡Š´ûz°øéJë:Ñs$H¼—=z$S±ÏÉ虢èç~Þ¸ðœFw>”rrŒ&@¦u_È0曉0€sSWú¸wÏ„Dh+–°—ßVdÁ™„wÑìâ3{ò0’"މŽÚ‹ÅŒ|µèÃû±~EC BoDzóWÙ3Ùì^Úe.äCi“§`lÉxYìã®Q05OÒbö…§îÒô4@XŸᨪ“ÄáÌa  .¯û)}Rã¨Ydb×VN§È}rO ƒ'®<–ä© ¡Å“¤KÁT‰ISiåtÏS+7r8gãù"P㜂L*wz¿:ݳŽO­N°.˜°Õ\›Éq °w¬hÅÙZ/0!69vÛ³(…_œjùƒmáÔÑSsè|4*gºnšScˆ¸»A£íÝ<ó^z·âf,é)s¤oDH8vt sGWnö£Ó«uDS,Ü(© ¬¯3Œ÷éÚgÖJL7¾²¾îÍ0?ihôÆwXΧJ´OÏ|jT'…Ià,—eª„FŸ7衬‚ô¯Ú¤º×#ÑŠÁM YóstÞŠªQýz $CI%Ó’%g¾þq_w‹«ÂÌ™}Ö’ƒ«i+ýˆ±iÀÏ‘ QÕÀ«O¡Cpÿ30ÛQÝ Ðê÷ýàYðóˆ¤òÌÜvìsVÓðt®ôS·bhêï(¦–;TãÄfŽËód-ÄØvæ9êS ü‚Ð3ÌõÑï‹a,Ì™/ð9Ùå™Gjãö®Æ[îzëµ…ù4"Óýw… ³nšŠÈU'@é!#™.ÚŸárÓäv54TOÇ;k¿ª‘Þ‰7޽6«Ëöéèž ¥­ÇÙ‹OJ¶”hNåÕ©h4P~’ñiëØh[KèÉ,Ažh•8›3L_˵ \[ó½ˆÏ4!,5Èy¯ð=+L7Ç”•‰éÆ+}sÖ&Ctâøç,±”ËŸ5Ì0 üØû5骾›>¤sæd鑈4q>$šìµ"\ðbã(\PGJ3ŽîU%RìÅ@Í `WNµ@éns&cò £ˆŠuÁ‡!×·Æ7ªKM=«Û%^«#1Hšeì1†=KÌ0J€ˆ|wï¢japÅ'ÇñD ¯Õ£d£QC´ŒÈàY1êæ¥ùõ.\اfÚIJÒ¸ÏP P -þ¼X€)Vhpç÷å:†^ýPO¨Ï«ð ‘^mÕUm켄÷g$íµV‚`Û^ü„Ñ«}:5) O2åöÕ wåî*pV=ų;»P!® Rå±ÉKw ôÕ}âäi8-§\§ÿ­ê!*(ß”oެž—ô´Ó^…x¦œÞ øLð4‘µ°ÏXÊQ»<ª¨}½}5²þÔTžáí¾¼_'Э^|ĵ\mŒ™!†1µä†ìSÇõ†æC.nèXËG+¹—™·’¨ äÂùêÕvâ·æY»°©.©½ÊR÷ú¶Ï>zjPÃÀã£rÒšHA5²~D÷VƵÙz{Ùït²m-V®qáÁ$äwM4Äþè²ÎàUª«$S=9“ `ƒ×ºNwqÇvK‚å3PìM–†C-Çè×SáüÙM &Õ\—¶\¢ß*º5ŠÈ!–rfôêãqD;dùÌ+(õ ³L™‘ŽŒµJ³é¤á”ðÝ(yð½×Ÿž >€Æ¿ÙºVÏ2ºVß¼Š46´qï_+¥aóIAí÷IŒÏ¯š¬NdŠ~èùâHN”•ûåü2AeêmÜ2™åcqwBÃEÜ(`8ŠŒêý74lwÒí]JC)a¶ØáÙŸ3n+ÔH¸­zu}ùMTx5(3¤ÿ>€£ïG¥‚R’Wîç/îÇþ]Bñ_æ­ ºüäþ7òYíº«?ù|¤þ¤¨“,D¿»ù€UÏÇ Î>ï° þ®Ú­Ó!&ëc‚üŒ”Ó`÷_Ò?Ðô'ƒÌRÔlið¦^Žmûêão„1_,Es®¶C{s+/ì¡«ààÀâZ‘“‹rü؈ؾµ_ŽoSsŒõ’ ëÄÀ‚¸­»ô({Ù„ç´º¤À² yîïRX¡1U¸ÞwQÕ›iê©§ ê‚nþ~é—š>·µ¯áHІÖÈw¤ï….­·YHÈS4 ¤¨GVçQ=26áÃ’Óëðº1U±P™Ÿj’ýs/xŒ…Š’á#³ï~=ƒãØJQlüÞ M[~¿Z£Ö'l0zgcø±(S¼.‰kê"Nïð ››$HX]?<MŒõKSiE`{7OeΊÁlß¼IË3Sµ  ‚1 ?B&_š–¼w~aëèé¢Z_–HìWÛ*¿ƒßÇÍs|tQØIý·gV'dù›°äõù÷2á6>ïÎßZqÕ™®æüe„pìL»0–žiå´EÌhE_ˆKçÙýÙA9±åÖ‹ÜúöïZCÛas¼LŽ¢d€‹¼“¶1Û|º%N×ý3ˆ:€aª@ii⯎Ÿ¥]oß5d¢k6fDþÀæÇ “F0bKVSD„€Èe+ÄÆiÊç¼Qõ”d…½ëg×5®ï‚·ÝåææùóÄøùBñ06(O¸cÈfuÆÔƒø@Vëb:*… *ê¨)Yèæ=úH4"»èYT½ i^‘Ñs¢éyX©ˆ.{áíO(b¬ðŠ(¯ˆcVç®3à àvþ–s޽åJ¼Rå÷h°ðô¦y¤Žõ¥²ÜAÃ#ë}AÊê•’=ó·¤h D+5Þ½‹­xÏ–hsÆQc…Œ\²O7ÙYÈç©gGrò3¶8·pìͧ\¹¡p7½š‚‰iÐÚoŠAX–Õíµ„.Àö1¢­+ˆQÉ‹ËÔ’Ì•cýÂu*“Ù.GsM œ’gà5Ÿ³ðJ?evQò™-®yg°:ËÏÀmþ.’RGaÕA5½°"3|Š*˜,Š=zøÂôKŸ¡Æ"ÜÄz€~‘ItEJqDÃY¸'ÚËßãÛÎ.G(¸ÅÁk2Á‘4[r¥ÈÆûœ“ìW3±»Mê>¯ŸÊ3 î0kÛ·dë+ƒcÊf|¥ÀH+W²} (ÓÉJPö¬ÏÔ{Æêq™øÄ«ÉKËu‚mÚÖ4Ô,Sh,,ÈÎ:°>š&»‹^@sÁ‰TÖo Â~ßXD^vo~‹2禋?â®-E¦¹~ú¶ås~ú€æŸ~<>‚èbÉSƒƒE£¬'0Ð1ÆÃóW®Þæ“ê«ëö*çf ¿«ÌÚf¯³ë i¼Ç>µ?z^]ahÆ/r¦Ö¾…\£¾R ”ç0òæ>(Úœ‹„E¬pÊN»ŠÃ¾ú÷=íO±ýPˆ-‰Hˤ(ÚZ¥òŠÔßúʼ#Ô÷<Áèó“&Ž¯Ë‚^M·=ƒ¥˜¥÷ ä±òÀš]¶÷×ÎöJ¤¤51©“ØÑüJ#6-#qyw‰QGÇ¢\ÿc¶äaUî4å¤D$ºSEÀ¬……€C¶¿™98f~é«¿Jz¯z?b½‚ŽÆû˦±ø^J(~Ìé™qÁ†¬ßâ.Gðò»¥JDÀ)°‹ý¤A¸~cfZÜ÷¥m’0æ`«yûiÕ¥O‡bõ#Ð>¨Ã²tÛWûn “4IA87Q‚ Q`­‡¢É)|>d†œÀÈ\ø-á1ìÀmƒdöyÏnò‹·C펅ªºgú>$Æ»pÏå6âïJA>gÖ!Ìù¾»·9þçbùû§f9Fò¬­CYæÜô–¬œà,H'­íŸ2x^8U„„­œüõן߱ AÆë ™fÿÅñڗɘ~àk0fqµúòˆe‰DîxÓrSåpÉó2Ÿßo!h· “²æÝ È Zžu{RÏÔ_Ô‡Â~âÅ•þ¯ƒežˆß3õH©| ÚRÚËF’ÓÜ?‰QG¸!û *ítØÈ¦£‹§¤_Ý葈יW›¸•£Ñ®|ï8näÌ7î"ª-[Љ֧@Ÿ%¤p¬çZ€‰ì&Ð|¦\ š"¬Òw ÇüèÏk”vT΄Ë1Wó £¬)± h¶åXŒ…³Àu¶’“­Ø¢å‹Ã*Y¡SÔö˜Þd§1ÁUçŸZ¦Q¤l³ Y6ykËPg»:ëAîsl› qò§ æë+-Çc(…ý@ ÌØò§Ð¯—~ûÆZ‹F-пÕ{—¥6Y\bå÷¾±£:ˆ"Œ6{£~Œ,«óR ÊF—yßÄBQÜ ¥ðÐRÔ& x×Äžru ÷MZµüæGY¦ÌÖãåÙÙg¡–Eõ˜´XX$Ã!»ä€›¡ U’ ×´íP•ìï‚.ª.ªØaÇQn´6ó1óÎG…ÈÝÙr;bÙɼcNk´£fNB dxž ­l*ôöÞ7ÐÓÝÒn'j‰#Õ^éz–Ú/+W¬”¢©k†TwY¬ø <¤ÝO‘wò#ô›è{åk#r;Éyjü YUÙ/­Þ« Æ·Ý$¯ÛëÒâÃB£\âQÖ²©qÚ}uþ KUñÆóóK&–̲ôéeÇÆ¡“KŒ9ší(Û·Ã<›2W= á$ƒ³g–y{ksñb× Nì}ñÉóÆ¾ ÈÔð,¯À¾Â §Ó˜ æQ6Ãã-ð̃٤ÝP¢°7tãgÙŽ‹òêê²µôPW" e~¼T&ŸÏ4õI²jWf*ã;CR÷ãÆ¢%¸SLÀ׊ÏãDø¹ér¢øÎ÷rIúÉnÙXÛ¯ H¦˜ßRݺ¢¶®ÿx”yȽòSÄ(L÷»æû2³q¥d‹.†'p†>¯Îåbô£øçe ‹ÞpRŸisi'ÕÖÒ«¬tåuÇh{L“„â|=~wÚr‰gr”aãQLù°ƒ’*òFšö3hÇ•€$É@OÜÏä@yc½ê¸7ÛšmßU%©{§ÝG Ó³W¬¥E‹Î“…°¯Â½?áÚÞeŒMêuëù†lEjâªÌ'|öz̬*@«5x¥`Pnô¾i<•âDê«Ånä{3­ƒ…¢'zvXÅ«3ÕOØwæ–#a¢Cì+5hZÃpȦ³Ïþò»4¥ªˆ™Pþþ^Å5Z³•;%‘¬ÐJ9ö:ˆEá§i%±£óïÑßqäqB@ýüL³Ÿ‹o^ŠÍ…Þ°¶¸ªÃ¦¿ë(¿^ÕÂ5Ù§ìš7þ‰ãýÌH8lþ,Ê@BÒ¹äÓ¨¥bW¨Øæ@«s/–óæêú+zÄøÙbŸè"³…ch5gØãÄìX³~~Í80ždž]ÃPˆÂÆÜ©²µêä½*¿ŽGˆ^2eÌÉbxÞû-üë+‘žTš÷÷ý”†CÖ¾—ó2ì±aûEê i6ò/Êÿ¥"¸Ø  §…¥æêòRúÉ/•`fkÄCtå«Èˆ…²–%Op̲„†“Òýû*WH·ÜfâDä,Õ-ô'QÏó&˜¶Øu}ì˜Jã¬C„6 ÉÌ †1žª}Rã1ðÏݯðsæ†Ï »ÖSg:Nn•ÆÛ㵈>ŸÖj^ºà2Ÿ‹Ï%Ïu? –á<#ÂúûfËC¦ôLrµ÷´ÉUÁ&OêMÀèÎär>áWà…þHçš@õ‘²ïý7$T :wù K¨æ†ÉüW|v`íÛ; 2ÔØÅ æø]\¤ €àÃVeaù ‡z¤dÄÊI0]b¼Œøœ¶y¿Æão’ \úɵ•Aƒôë2Ò1>ëùÂSW>@ëIùu‰ÏH»x˜ìâ: ¹ öà¯oøÝ=Vþ _xc|˳%Ô$Û(£ËÃÅÛÉŸôbõpÝq^iÂGà›H§ämˆ“öp’ôµR¬Òˆ¼»GË-ˆÜ•¥òYÿ}o¾‚GIŒá^Á``Ò[‘¯8íÀ¹“@üfò‡¡+öWcý B$›ÖŒÙͽZ°÷P.w¢#ë¼êWE˜½¶p}«!§5?€Í--» I™ÎÛ>"•tGJÿº£ëŸ ^í×µŸkÒߎw¾IÛh²÷áÔ{!ã tƒ‚‚F½â Ë3sé›cHþ®¾6ørRßȇú«c†b!þíùZ쀗Ðï/z®æ³*pám½wòöaô¿ê;èk1>5àuÙß—R‚Ð=îj‹®éÕª‰U>LKëÉX-K½r>Ù‹wáMÆŠ#ÆG{bÊ ‘sÿ½á³Æö¥ý]Ü„‰d›öôèl Æ?ÑP›Û±¾•eÚ¥÷ÅøÈÕï»IßεqgüͲ~œ®w™Àg¿NÊ .i~^¼‘3ɱ´,˜C_|ó¶ì,Õ?fÉéÍGø|0êQ¿@¯0ÚáÔx”…Ïý†·49o'”­Ûn-@l!AÎ×¥†XèœÓ不<‚a„žA×XÚØ_š£òÏ W ³ùÜ'Ș“³ŸYÏv'åšVaÃÀ6öÍcÉ]#ôÕíËïÌ,æ©ÕOm˜Ï¢NòêF–UšvÊ›pn));Ÿ2oìíkí9)ZÒ½êé'KëjÓ¢aÀøÐ͈ç±ÒY‡å¸¬~:ˆ€™Ãc {<°ÊþÝ’´[¦ úSÌËh üu‡Æøòs‹(íûå :›VhÙcëG)çz pü3i7ö ¢ ‰ß&ÄóIgœ­jfN„­ðeW,¨ñ`}rdf¦HJãT²é#ÀWuVéËY±SŸKÄu*711˜ªG—žgX¦šŠ©ð|Ë1eÔ“©ù„ €’®iìhð¾ª* ž6DÆÐÏAãLêäarh,˜14Vi‡Çp¿!éóó‰ ¼â“-v¦§¾á<Áºè÷{¯×—86©t~‘< "]Éì#âá“¿”Q$Éâ{]jañfÕF†òã±V¥-]ým{å1°8“Ehˆ$°0bMÓ©²qt¢àŒ%‹œ#O•ùv[íKý}iíSF+Xí±"FWá•×;“%Zô iÉ퓇¡Âþ«¯?ÒÆÞõ›ÓÖØ—¨CîX}†^ÈsÝ [­Læâ]TGŒrþó,cû·é>09jˆE‚“±(4´&J¬¸»z›à†Ã´>äÍ˼¼m‚ŠÖ Ÿývb«2âþöC­ ׬òˆëvC{ªèº!R«ùÖmž®:7‘Íô:ù4`ÍgX]ûä]Ä?…Ì!eñ4Æ5üüúü!Èâ`˜r%’&c±Z ZM½ùDúäf©_2Úx3õsQãÓ'=Å}N3æŒÇ›3øY¤tei]C)…O°î7I¾|Cáïv]Ê8@¡¾Œ ½>X·löi“§Ñu£°DWjÍe÷ùç9|bzÓ$çAâfc¬ÛÆqÇyÓàY݈¿wGLç¸ ¢D~cØ I6¿4øÎI–û*|-âd³Ë~⪺#Ž]²ìñü“VF´°Ok:ªhÍc­¼RïÆ[[{¶{Þä=žT¢;\Á´r»âƒŒÄ.Ímÿ«·Ó"#Rã4ÆG‚pÄ|u? $'”j¯ªµlŒyA®Ëâ'JŸÂE¹X¾TdPi²—v‚J¼©Ñ7¯ê·™øòÑCãÇtã™×+€Ù$u­Q.ûZº_hü^ï62lcxãå7Åœ¬~³ ¾Îuhˆ¥éA&×( {ä°iÝ…Wdàƒgð¥"â°ÏV–-‘Ö=‡m»öi9Ä/Bß²ÙzÞµÚaÀŠ…`¹DtBV¹„D OÚ²6Í¢\Ž$Glóõ_ÆGJ‚H¿[ú”ñ÷Zš_]&ÒßâûžÔš’—Ÿå͈OµÏ› *Ù9¥ÏÐ:>ð%ማ٪Ø:Ì j*MAóØ£B¾Š|.9÷ûNÒ»² SS>Ä­Ì’š´añåÇäÙñù-MÜO+ ¦”Iq?*xP‰Ótý ŸÿùƒqÂ]¬2íÜØ pávÔp™©ãLN®Ÿ¢(eë×ì5Âúçæ31 )ËûœfNCÚÌýõ;Þ¢awp…p˜aåƒÓX€²­)OИ|âF1̈{£‰¬'…<ù- ‰ŸÔ·€,Û.EcpWºs-ϪÇ3ôX4Y:~ôohè](µ)‡U|ƒn‰„r½¹ÜÈÿªg¸_-4æ·ŸŠóäÒ¡]È3>èÜ—F™+QŽ&,5QŸ Þ½ÑÏô@:]>¹×Ð×lPé½ ôGpìfêRÛO“& ×5&WÀb_6–ÆèªÇ³‘D¨ó×÷z̤€"úûë i`‚óäSï:΋ ù;¿å‡ÆRÉ!oò!æÊøà9ÃŒ²BcAÞ%ô;ãÔ¶L—–’#žþȵƒ‡´Þó7ìQÞ<™‹à`›HgPu›Ìf¦Ó7uzÑR’2Ò¥ÔÛDs¦>SÌ`ïÔ‹‚pìñkýÎ#ÅY‘E<+¿)òï}¨°¶˜À%«Æ9aÑ·GEÃ:,¬x‹4«?µ“Ù"8rŒ Æ–Üá->m†&o'!ŲVW£%š7y'®îè‡ùüPÞ·CTå;ƒ!Z|xroÝÄqľéÙù  æ¶„ I¶Jó´‘Û 0ÐÂñ852Íõæäx2Ð0`U_Þa¶êa3àc ‹°AÑUöLý%^Qä©çq”$WFz1=ò¶ž1'ôëH¼yÆBNO@¥3g(ó%9—_µÚÝL”`}×Vß΃’Ø”-]Ÿ;^úRoŸk¢1 Qaö›®¡ˆá–l:þõ iBKõßrê½ç1Miê5lD ±üPñºÂ b´µ£]©È{#ñ/è’²÷Ößf›4• u‡ ¸ª»Šï¤%^–¯?}U9Y”êë¢Éåb×$í;7+ªG.™W°·FOãvú£ý +<°?‘–gœˆÌ|ÍÊÓ’ž\Ö†7ÌüÚ$EÚÇËÉ5sÖò›Oí­E¸¶s.£ëTèPX‰™Ž¾»u#öÁ"̪‹hå‚rIªpŠ>£Úë5˪ŠX†‘SÒÇ·?§cì2g(0šÛÐ0Dǹo¼ãû$û5š(´eÛŸz–Z€P§c‘ä]ü©BŽÆ c¹dýK8Æ Ç„Ž½gNˆ«…—ß Â3¡§£¾³uç«›­ƒùÊ–Å9µ\·;‚.O¶g"@7ÎZ´¿/Îö(¾äÒ,¶Õ„c©°3ÉÙþ\ñé•wççQ¦UÛiÙ“É›|Ä}jÃæÞ=—l¦/ŒFð; “s&È£O›ªuÙÖbŸ(0°Uqð¥uO .–âN\O]šÜ¼ñ¸ŸŠ{ŠHI-ÈÅÜùQL‡.ÂÄ¿bþ-ï5›Ë×/§ƒpŸÞ•AÿÍ eþL‚_Ò EÎÅIÃR8ý€¤“Þ÷šã%˜J¯/û÷ЀGj‘‡ú©àBU|4vJ;¼!ìóÕ|ò`  CƒÁ%pøŽ±Ò6ßu;eäìîýÖ£ñn 9&²¶êû5J?Ï"žÅGÿWÂÁtó®­w~cèw*Á¬Ž?Ø¥miOt1Ö½0h¸à P¶û5ÃWÌŽO&«Öü=¼Z·™Ëþ½Äþcõ¯ÐÍÍìz| ã»V²ôÝE>?M/–8}+M^Ա®´ tBsáS&žzéõ ó/ûÇØÈdÕ§‚˜÷ˆ¸w/Sæ>™ÿôZÉ °µJ&B¬ÁΓ€±{UñádßRA‚ÜþËõ»YÙ»Sœ)ÉUù™ôÿÂL˜Ë©à³1_y]*ç%ET{~/²‡Ì<ÈÓOÔs¿BÜF Æøíë Ÿœ#Ã’]ׯ–èõ'^í—,Ï Nk¯û‹,û¡¸/N¢¢ûü¼±Œ©øöåßCý œ†ó· ¸'–¦ô@sO¯©oÒØ#ýqº´¨PÏÏ}ä׺(cQg{L„L±‰Ù ‰ÛƒK£1úóäÂ÷7 ÇN!Ë/ú“O¢u—¦d­H¸L‚(¢ÍòoÿËr¡4}úáQ†5_‡ïÏSGÛ‡z:þôSƒü Ò¶!3–Π Ñh†NÛ‹Ò²ØmÁX¸ã,£¸V|6ò&è'/¤ÕÞ²%ȯ®%\r×mò¥õwÝO^ùËP€ÌÕ×u?kIZ&Ãþ·äGu•+°üminqbὉ™ÓÄŠz";w¢÷Ót&Ý3¢ÝòK¦óÓŠõ•Ÿ)ëwEßtuR—hÕH­Ôâ‰QÜo€žõªÄÉ:Ì|SÖŽ1‰] RjŸÝ€³”¦žò((ˆyuÖhžtM{2'…úˆáeŽ^!#Ì¿ßØh« VP[µÕH™(¸×L"1è¾KtTÉI1æA“—eDôÓæ¬Ä¶ÊW²fiôËœúelKíh É.>ð|tlΆBÍ#$Ý=h^cRQ¸ÇäŸÀÈè,>C÷aãu.ã ý9˜â°B5¡fx9lR °ìuV7Ð1ý ç•®ùõòWu ‚µÃ'êù)/„¬ÔáwÑÛü½5? ׬°Ë}Ú®7 g0šh+æx 2½™±,±®=, ì“Jšÿ=ñ°`‹‘/Û´/R’ág¬‡oºqÅd«&Ézcý’ó•ÀéÐ-ÛÄ èᩇÈG±xœÎ†'€ÎÄJ&òC"–üŒ Ef ébsWðý½?µ³N®Wj×®«ê¾ÎKsJýÈŸÕÿ`¨ åì'yXz{ÜËþø»Qß"A†–Xô…¯œ‹èy–ú5fjybÔRÝ÷+‹ü÷y‹– Ãʳdo¤£²ÒFåM=q"æ ’OÌÜê(V Â€µ•2Ê$¤¼¾®¦‹äã[û,,#ú_+#;ИteYƒù÷ˆAºyÉ%™½¿3A×ÈËpRN|]BTެhðá_/]‘tùÔýõðc¡3gqE¯ro´HOÄ`™¼ $2ši­|Wêúz-µËåÛiߤŒ |?æùœˆße0LýIQR¿+køæÍ,Ô%†‹bzº$VÁ^¯…ô½Ëc—\f9øéžårq³†¿ d½HQ)ƒ¯ö¦´tÿsbæ‘›4‚HÞ×Z=Î;ÉÂ]n*¤÷Z‰>îÛ±iôùÛ#¢Q±:ã±7°L“¡Ñ É`]ϲ©ƒ~U°à9Z¦½ÛÄ‘Jþ·­Zà`Q¹¶ÿ•ïÀì±DêÊÀõʼnç‘FÀæÈDZ~µjSAdÅêªvo´°ªWÎÊ+ûC¢ßâ{«þ+¨‰)£=Uûµé¸é&—Ïa僈s´`IJr.üTÇIoÊ(ø!­êŽqŠÇ“i^„»[áã#c—Ð êÁÒÜÉl¿öž÷ü¦&?ý"¾\Á%Íé^‰(QÆdsÚ³˜‹öçC|&OŠT³Ÿ=ó2bugl¥µ$ ~È€ oÔùaŒ;W[™VøNø´¶aE[ht¿öMŠ8$(eND‘ñ í^ å_Ü> É·—[”Ö`ãÐóDûÜ:ºæi÷~¦áœ©§£/^ LŸ×vä¥EǺ €ÕÃßcU²&¬ŸOnàeíGÊŒ¿gŸ%¥{4ôÛJâ¨ðöRçØÇqW…¥Žwî1”³4÷Þp 0†Põ¸³• %ÿoÿú½FߪA?fÕÆtœ2*reç¯R2ùíÎæÕñs‘Õ—HmÙ²õ°Sàgˆ\ÁÞñª²$‹CÄ„ÚdÞ,Ùî7Uã™ûB\¬Qô(“#_1ºÍ [¾ŒºÔ¼øƒô-0Ïx2ÞJàÄÉP–㿟/yŠ—2+Ž~_…2˜{ &ró^¹öfHúV”n=ük½¨Š­N²æL\åö)æ™×3P-’ÙÿóE¶M\ ézPòýkY*ó ·úÑn?>‡?J®§ ÈbB[öI5mö¶h~ˆhâWë"ï³ N­ZŵÝ\¦¯·;mB”ñæA‘åÒèTKìÈ?•ŬëO:ÆV jª{½§L9àF8Û*%Ë—Çêâ –*û¿â3£ÃUñ`ãŠbZ¢Tðï.„2V´‰®Á¨=ônÉðËhö,î“; ý…F9‘ÎÅcQ~™2Y=IU-iébÛ³Tó+Ï ”&ŸPi’ëEã¿58{_}«ŽïMUºÈßßÖ®lWÈ^öYí(?H{øï©¢—ÄÿJ*䨥U’<¹ìçó¥<9í}ìSWÒ/ÐÎuKŦÞL' [‰sKý<•C¶*³™wÝ ~øfõ¸ý}ëmØÁA‹›IÄùdôžàžœ§ýd­ÂòøL}YDÎ&0°ÄÛnæ‡ ­\CÅê&p¦Ð‡rÿ¾Ó6vÈDOØ"ì*Ï·’¿U!lûœ1AIÉžF€;£è€©çÕcFyX")a⟊1ÇW¼þøBÇz(WŸ”SêINÚŸ”6×M[΀5€gíЛÐ'AãõWľ;.;]¼ÃÒ7r- qF‚YêïÁt_Ô§±Þ0õÑ”oŸž†p£øY¼ÆäŠ“ñ7E„óé Ú#Í­ô±`EâÅôosôÆ øý—-³ñC>xª°Ùa@#±–JùǦº-nz›v΂Õ5”¿Ë ;Ì'šÛÀî+éúb¼—ñCœ¿;ŽŸ„IoÈFšå'ÇcðÜ­Êç"8ç+dšë[ÍIEähRæñˆ3¡gq˜zo i,ý3ÒýCÜSVùÄhßÚ4÷Ùœ?rŸÊ±ÿìÍØCvƒê­&íÒïmÒQåëÓTBFzhÓ×Ùœñ·]Œƒ¿Ýn¹¢}ÂòKcuø ´Õaôª ¢Ç;Li“ç€A¯¯ìùoq-yDgðÂ,¼'Ü¢,hn²x€Âø×]›ñöÛà›H>pn[¿Ž¡U4µd÷†!L”2,û¦UÇo:뢧lƒ:&pªb”VHüw?ÅòÛaæS!À}ªé þËY©î¨ÙojÃ_ôWci)wÏòJ@AWtpÞÞsbúp“R[YÃ<:;¶¾Òàvä?õq ¨|vDì¸È¤“@5STV¦—’l ›Òdrz˜ÕG ËâËe€C2^â½âtæÑÃ:!бc!K³I`Ȭv[¢±¼ƒÆðZf¤ªxÍOè5mçFïLà¯ç#Uü¦fK47×ûT)Z‚‹1±ƒŒê4‘æIâ€û`¤;Üñ&P ã#7ú®¦(®&}iû“ðŠyûoßívî…Q2)XH³1·=9‰ƒCI±k0o´ó)Xo÷ÅìG¬“r2GÕäÛs.xS~KWÑ!v3–ú¢V¹¥œÌ÷‰ö¼7¬¥õº]˜^"‚¿»àã õóɳ¦9ló»ç±Fé9N[?“U@*ëÒGðTúk_[ÆØRl¦—#W\Ï:D¥Æ.31ûàWo~‘É‘Óïç£VŠ<>&éZÂ] [pÌ7]êoáÃF&ÆNíT¹yë‚ ©NÙ¿Ëß7(nÖg—ü“è:¡‘Î ½oy&ï€M¹{æ ÐEÒ×?­]z§°2Ô:Žx÷Å »z3"¾æ.ÕÁÑPM¯­¦A`À̪Œõ:ûaÄQ<:­¥8'@sá Ä€²pŽZK§þ$¦n^£Ô²UyñlÐôâ£'„¥êßK†B2PüíI6á1iT„kr/U·½?ßÖ=$`›ŽïµöªNfyùR.}ðð“x¢/ «BðŠÿ}Çù´(ƪ±ìž¤Ãzˆéýü&¯.Œ¹© íݦ_‹tT‰ä˜Õ…çÎMÈò¶Ìvïì‡.ã$4’›CFI–6ƒÑÛÆÃ*Æ®?ân‹ò‘E[“r¤Ÿ±9¤í™ç‡ô.+×Ï´Ž…W¦xPˆp®aødÛrÉ4ïæ-·>úõr ’@Î?®>‰º–pnŸÎ!X²Ôf^ì°±”Ùix™/Fçv\aÓ¥qÆc¬Gyðãxìa‘´0“Ö7:áG–`Þî>T1âèx « Ÿ–KzÕÃ(V+pOYåH‚áAAЃ†|ôx›-‡)ð‰¥)^:É$Mºœ¸ÑjÄÃ]¬ôR:W+š4Œ¤¹Ø£Ë1·¢ŸÞØàÍ]“~+ø½Ç;„­—¼à‘åaø‚ÊÆsÂÏ%2ñ ^6fÞe8‚J¹à92cyR.RÉúY VŠwÌÏ/¸Þßå Êö<øûŽ‚ùêÕ=³2‡*—ioeàìÉ`HçY­¯%Ű~,/‚žEü­dWduØä2yoªÅ·”—ÏÞ1 yré h?Á·ñFGã]Áêí9DRd3—ºçM$ßïJ;Ûµ1 ,Á¶>³š-çø~öÑÁ8 0°3Z†6°³F´ó´ÉÞ˜“f²öVýê4q)Fú,ráý®Gá÷µÝ2W œ|?ù°¡°ÎòÂNìò>YjüdC%{iÎÂN½3LŒ^ù~Ü"×wøÑ"ù†?Ïp¥NÏÖòÓo¾Ñ¸fŒ¼·•uÔ}IBöòuóY6d\«&nlëu^+ó¾?~jßYÙAhÜÑñÃh/”_ã”öŽõ +Eó<ÑÄØH,$‹°(€¡Ð-Ú-rõBÑMý<· *È.,ùY’ò_æ1Úû[•—×!ü,–(½/Ú1~¾Ô?EâØÒâöÚdexLš ÔêÚÔñ‡ýÿ®1QÊ@Œ6>Í/ëÒ -}nžSá¤ñȃ]êžÈVÇæwdê´O €â[¦mDê»q‰þ€\¢›ƒù{¤Êkñ—B_¤¨:møIç­ô¨áW!'À„xï$|†÷ïžþòï­Ýh«¡áLwbæŒøn1G ΡÂ_ZUi`Ul–''!~ƒú‡j[ЗzTüþÜÑ"§ëë`Hðï=>Xýu1ºÍÖõØÆ>“DèÏw휯ôHe$Åà7k_'¹õŠšyE]0Îa¹#f¾?•È:dVIÿAÊèødTVL\DÓµM/#û8ß‚|'·b­;00*#ßVÚ÷2‰(äw6øO·Èx$¯È¢ÇW Y“KñÙØóÆ…ž’Ûáe³¥"qÜ.µX r`б÷ãß·awɈ·™^–©Ìì-vsžYû{í'Iä“­iC|Î+#ûòâä¥iï½Õ™é¿ ‹Mì¹; ÄíM:+°Ù’ñÒQæ(Ëe&Ç7+ñ¿éÆA^=qm#Š4ç« /]2g¼ÍØŒ"S  …ü\ÁK‹Ø´ß3‡lÒLZtò•GèyPk„¡?wpo%ŠƒPõÒac“n°ŸRQLçq†ËpFQ@ÃñV›•@5(LÄáTïX©Péq…×|5Iýít0®Ôó-/ÖßÛÇîðõ‰;©/˦ΕÕdê™ÒÎ\’p ŽMS·ê÷²¼¶ôë¼?szT0Ù|ãh`ÖFñ˦EÒT×ÛœÐ$!,Û!K;—Øîð5ÙóÍOÑÕ6+䛣eÎo´Z+Q4¬àº$A5©Ÿ§pÒø~qh¾®˜×sno}Q±÷íøK(†÷Lh  ƒ-¤:¯³ZHøÌ¨¯Žc†æ¶¦Ò! Û (Uw¦™ÖX;qR¤ú§¦…wž48¸‘>øšÔ®‰oÂ2iï}xâ‘lèlzÖÛÕxE.?FÄáñð±p­á{:õLœ;«’ëU W¤0rÝgsˆÄ"c ¥Í”ofqGQìhý¨1§;ÍW›7™%EÐrêÔ¯sú핵 ÉÊÅYU¡ÕHü2+z´Mb±9DfÅ`ç3·øéý+a ’ç˜e¤ÌÙ,¦˜'ÞþHaóðgrz#†+2rÈáç´š.YöXÚt;¾_Q±¾9V­âÄ(ÆBþ^Raœ Ô©ÍÊ¿Äú‡S­‰4ι*Ç_¿Z´J}ÀŽÎ9®QÑhY-" Xr‹vÆN?•¶\â“äîþÐQž–M¨4-‚©bÁùÖ:½Eóç½JcG+Ÿ:×´JD™‰LÏÐqu<À]›§“ô1QVÖ™-j)Z¤#( ÔP7DšæqC ¶0¯¶¹ ®¾ÕÕ®¦)þ%U'ªw‹2­C8ÚW0Äåj'Ý„ûoYQJ‘Ó¶«ƒ¹ iå üû:ôûžAB4—w·ŠÒßçŽîk” ëÔAx ½ê•ZˆDL+ÍÆLÑWᅤɪ®žO$?¦@°h9Î_Q—ŠþúxÚ–RœnÐ9‹Àñ7ÿý AjbMúàB çñLå]’û _ú‰qØ! áG +>è>ε4E³ò›ÙKdýasÚ¶Ðæ¬8¥²¸.°äD­BÅužô >Â×§ìþmFbùïõ·£¢s¯ÿÊ©O6Ÿˆ-–ÄP¿5l¸âuߨôjh à¸åqNÞ{k (Ò[ƒ`z Âéâ1(æI)áö¡=Ô&™xýÒyOŽßQSî Wn" 1TH¤& 8†ž'KL†þ¶6_âòsg6ÏŠËYÊ`6¥Æmœ ÷Éì¼çœn‘‹^J>qàÕ´HŸy«á\:¯)`»ÇTÀdÓ ÷£]wW5x ‡°Ñ †»FRZÂãæÒ#8Ö·sÖmK8õZœáz$7ªº=®•ÍŽdŠ»Fª|0Y‘Ý^’6Ÿ;íhÀ ®×ëâñÅŸ¥I“U—ízÔ þHAè†\« ‹{˜4 ÑQ¸û²QÙŠ;÷Pª5Ö%d1^Z#ÁrL{ç5¿áð&®¾trÐ>l~“…í`ÐS¤°­0H§Xå6œ‹ÉDB«Á¥5î*† _ñ–žÑúV7AÂtJ¤ä¿žÛZ#(⢻xá`Q²,$ÝÔD™þ“°Vç.|tÀ¼p¹PŸ Ŭl£—ÜPÁÔùà6w â-à“Þý–ÛKa°Ç–à°ñM¦tRÒ/°W€Yzh}ÆBBôãÜù@Ž©%e¼Š¼ùqi‰B|)ê åÜÛl¨ h¨¬§Œ út‘ŸÅiiýžøçrQÍÈ}æGÓ8ëíâ8ï˜|ßÈ.ÀEwx–IEÞÌé Û`9|KöiôH€ÈîÉkž·<êØº‚… ~ˆ ‹wè-éR²‘xŽjßabhÝ'lèrÓ9ÕÛã,‘W$pÉäu1ÇDÄÛH„9Sÿa6Újma)hQ2yÉ+ORŠj¦8¶8:§à®¯pbAê%jR8B©=poJONë½Ý­'¾6׌ä7§XKˆås_(÷ˆÜCxjæXrÌsü}€êë®ÌšÕPë>š˜¶d.êzÕ´­#VC3ñò-„¿•*áö2¶B6ÅÇØ‹–‡)T –ûfÏk}%€Ü9¤‰Ž iý <ž²—‰\†H(*aVY¶¤^2I$Ñ’òd¦.ÖÍA4£÷Ì59=ôÈZÕÆÚ@Óêpk ȾÈÓzü*"é2÷µþšˆ<¾ ]ì°UòÐÔ¶FË6%Þý"EæÉ¶òŒ`Ʋâ\›n‰ÙþCú&qÕ`ÑÁåR¼ÂÞ‰õk7zˆìo/è[£Î’9a ¥nKG›¹ þüâ„om›Ù‡Ò)Äjy#© n‰s{@õê¸Mò÷v˜ÒDÓTÏqÂwéjƒíÆF#YÈG¥Þ«Ãpd‡6JÖ€ÆtXüó¥žGËÜ–Üj3E!UB'‚m¡4Ï’€ ‹Ž7‰Æ‡ªâ€˜Ï_6ÜQÊ“Æ@ ¸>ÑïÛ'^ûÒð´AH¦^(‚)÷éZM. Nfʤ›8˦¾\xF„XË¿.#Ôy$Gâ|!H+ÜþD†véL]#>ˆ3&¢ÀÕS–±t´8šsö"&-Í}Ì E%;VÍúJËsGÄg¯_—…Tk@xAÒ¡Ùÿª•±KCLcíæ½§És‡­*¹DE^Ã=ÖÇß›’95‡V’Oiß퉯P™[Ÿ•¥ýH:ôÕ÷]ªgdo/«SÃä\´ô®vx*>×ôNê DÈHki¿ùÛošk'ÙÆ>¹¤îæÃ¶¸-¾G_ZŽ_„ºÈþPÅîí µ‹1t"Ø¿žEô3£–Ðûo¹Ý¢ß² qAtµ¤˜rõ•î+¾pY Šƒ;I@o¢6ÏJâyÁŒŽî£·®¥1 6%5}€ù)3þ8Ÿ$ÉLN`üjÏžþ/ðg¼è¿³{“çtàë7ªSvC´®zÚßý ¾n8Õñƒ\“«_®5!qôÕós©›1ijÒF9Ûyss¼Èo¡Ä"¦;MÔ—FÝ2ZZ:‘¥Z´ƒ‰Õ žóݦ¬¤Ò”•h$ÜÇõý¢ã Jù‘ôÄ?Œ-ŠšBfáŽS^:ìsOè"˜àÃÁ‘*°IÏ×è:ƒ•4žà6ol[?7˜yë&¥YÒáfú|FA@5}Ðr¶É ˜²]ƒ”²i )„õÄr7êù‰0é.´o}{]©©|”‘Ñ-bký$]ø‹ª¨ÞÎ=üÓ¿€Q½“x³ ÑñÂl]üûÄžDBMiÎÚi í4ÎïHRÒ.¢ûzA¦x—:Xb?+ƒ™'÷Ï¥Ùnu'1PWÈnf÷©< Óà.È£‰È•ãt¸g!øÚ3—¼ì žÇ YÒP¥°žíÁ&À ú¾Æé­°öŽtHP|ÂâL¡-$åqöcô‚ë0Ò[ÀÌË¡Éì\óÐbp!‚˜ÑÃm¼×½ ö•æcš»²?¿ØNV±bÏ ¢‚5‹{P9‘5#¿—’ÕPVfwL³\!»X%}K1=Þ]ÿR¹Ý误Í@-«à¤¾ª-Ìèg‹jó$Éš‹í<ÍFØ;]ÄHŸ/TúÑ55ñÐü.†žL0"â>~J-óa$ˆÎꜭO@Æ´u NÍöAsÃu‘n‰EhJià nH>NTSÑÏùžøäÖOB^ºAöôu]دjB%'j€UƒP¸ q-Çùµ”f_ƤÅi[äÍŸwç¥ú‚r”3ù¢sÚŸgí,­ÿ±A—œJa¹²E¯€»÷F6…Ýr.|»ìû[ ÚÑäQßVoÛnݰ̞ù²ŽèaBK­Ÿ²`u[–Ââ'IËúÜ7 Î„Ž˜ ^ä¨Pº&uŽK ‚'±Ï07)Cµú„‚¢ô@“ñA&‹ ¨ŸbÉv*&Í à zŒìÁîì`V«Œ¯ƒÉÓÄô$ ÒϹ™.íqºú§QéZ~æÞ?ã©!a’dª{Žüž\'ãQ+~-{êEœ±wÁõûo LÑÕ?zØ Àôò?|_£UÞ±ä—7ÌBŽÑáI~E{¾Ý“{¹D˜–öߪ‰á‰k `üÒ:¬ÖA+½ETôe¸cTØc Ex€Öè€Â¢ÃŸ)‡û‡Ž_ûI’z*׬Ø7³$â¹TøD,!÷×¼Er®ÇÁyüÙ·£Ý>.çþJr.l\ÓZöÌ‹9pÙŠ”K´­Ð†Þ¯óË$ü† AkÆhˆ¶hÂ.ÿÊbÀÅl\„”7áõ ¦¹9D>Eü¾]Ø XÈ?»Ý¹5ù*8ßó=s¼[Êýþ’´G²ô£”K[˜Íï/ÉŒ›¾¥:úF¼R²®>ø^ùš½ø|ž éw0X˜Rï Sð ¾N¯¯…‰ù%-hÞm¾¿ïZ §rrýŸþkUOÎ¥ q£aEœPú?Ò¡ð8ŽÁÉ~šÅ¥Sbϔܟ[Ÿc^}U°9þ²ØA€u£ñ)ÿbæ ýHÌÔk;’U«TuFJÅ´KÈM6fA»Ý2âõ1­Zý¢Ûy¹”ÿîÿö*ZÆœR™ÖˆVAc¹e~jŒ&ðoz!VÔžö%%­åçHdž{® "ÊòS\)3Ì;nΓÒ—SPqøUX‡{>#• #ø­éíÓÖõØfYè.‰ÓÁ‰zWvó©²Ô–üu{(Žw˜}:½¥Ïö¦íYŽX>Ø/$íuy]{_‚ šž(~ø8ê¹]Ógö)wÀÏKü(¤bÏwaYßóºº>PÆ=2ãÄñž OCÉ&JçzE«‘½ÎŸîWY7iÅqG*%òÃgó^"³½¶c«çÛÞ Ti*éA?àgOåp/ïó6œÈ`‚3ô웼)6±lû¨_Q_A¹^T‡r˜0ιjVÁæäNiã5W4ÈG%Ú‚qpGBÊÔ3 »Vý¨4Æo.í I×õjTðçÖäÔ¼4ùUY!â²­â>u勵î®,Ò^Ó-›47/²ú4™oôÀdÓÖ†»Å{S éWhå$ÑKL™·ÄEª”òïý=©U˜ø¾åèI¿YJk  %\.k9J ÝÕj[Þ†ãlcŸõ?uvࡪŒ}ü†á„Ÿ;"Ÿ?ÛÐ"rÞ¼_¸fÊ£ÙÖW¢Ì 6hc@sÂ#³¡ %)Ž>ü¼öN‹¤þ®ÀÈß§<Ù„cÂÛ³v_úƒŽ2 ×ízà!u+†2‡œäm7Yzoyá´·QÑìp0ó¿”mG¡Íè²À7Ž˜KÚ÷~Ç”Suýä ÙX‰Ÿ4%Aq?®óÕ¾¦Sá5@ˆòØ,ï72/Ðp)0:ì"2—&ëðÁãıo‚›­‰ ¤€Å ó´”Þ}qpDYØ@ãã+= 2·‘âøÄšv–ù6LäæzÑn?¹¾{e˜VVȶV„i˜E#÷sÕv$>'èò#=þ,ª\UÛñ3ëæ4«c);a…^î¦ˆŠ°†}¸õó9‚[P­2´#Éžërø¯ac‘'(†ç ís äXyJwR*Ê3Ðm >Ó¹5‰ê0/;½w¨ÌýY\ܪl"aÂDÌMvÇ<°F¾ÓýhÊœ.9ˆ i ¡4m~É˹Z(§íøŽÆRÜÑóð°uQ–½"Í‹§¬J!‡8ž2´FÄœ-vU PïÇŒb‡ñßñ‘Mˆ„ŠÚ뾪W.JZÙ„#½ÀøRï.”íÍ’3äë46ƒƒ.8Pw©[:9O0&9`þ¾md»QÅô·Ý…Hà²ZgT§Z¤ÝÏ$ ,ª ‹³‰Káóö7c_~xþ„wõéÁP‘ pE_Cm3ö˜Õ{Þ q݆Ã6PQ–TÑïÑÌ"ø wÂÚx`î@½–y·D›vïÝô°î:ëNÌt=ý"”-ºW)säGVYÏì{6n࡬º‚«õíîïö{ *æs¿'ݳü%¤µ±/¦ÙÑMoô^™gµQ$ý\­ÀXšÎ|¿åÕûvÎ垘óK9Ú'e,DV Žô®¬.7‰4 ‰s‡¼¥ž™¦lPŒH-~d‚ò¦'€5KCÎÈ´º÷]DUŒõb™—C†çÑÆ›_rE\¢i/£;Ò8YO†ï••ÜkE¿€SÏðVÖ¥suv¡¦ŠÁ1Õ3ˆ³ÎŸ¸w·òÑÇÊ\4¼ w©½³º(ÈÔH…êËÇÚ‹B²Äh…@†}%‘ÍeB»lC2Qå›ÕÒìÍ9®Âð{i¯÷çù™y‚MZïŽôŒ½Üü”lN·¨æ—prä“y1ª¯‡!;4û5Ù&4¼Á[º¢ÎŒyLçÅ—Ë»hý¾>¬ž1{ÌXÄŠU/ìe b€aƒ;Ny½Ôõ¬`Q›Êxôæ‘PDBËíq^áéÒ[W~B®x[y9ß¼Sš\F§a&—o¹(iäúBúðÙ9ß•5 Þ¼Ýõu„$СΡPO£ƒ+|ŸÄsËa—Ö'14•£¹ï"¤=$­¼?<&»OÛßA­1uÅßåã…n¼NŸ¬|v8êáµb2L|314º<Ö^qPã×ÏêÅ"$ì9²œtÀuN{m¢µ[¾2 vÈ×í”"ϱE¦¡wGåŽù[ËsˆÇBÕ÷†ï¬põƒ‡Î’ù¾Ýêúˆ¼2úp±"æ÷Q…Ñ–û “Æ,ÃÃp¿è;¬¯oÎ]M.ù¾”ù^µæ}ñËéY9Ù›<­‡•½“Áf“þ(˜YXû‹*ˆ6DãrIð”"±€8»ù!$îçšà:ÑÞ˜üIõ4™iŽcÓ´VAù—r}hZVN¯¥w ü\=Ü]‘NrÈÊúòPʼn ›¼Áõ^Àù(“€ù~CUÃf? Îø("ùt© ËúoÍ9“ç!ã^õýúCÕFŒ^(ë×ô÷zô«œFá¡ÁëçÀòi‰k;8 `FƒÍr`üÉ3(ﳆAÄöñ-*ÔWœ e§ÔÜ}––Ö[SL1nj•ޔvµ~ÅBäøÖœ>ú”MP’æÞÜò{d‰û;uzcÊŸ{¹ýÅd=¢¶4Õ#e-J2Q\vÕ"Æ?auB¿’ÜRä LÜrÝMÝÈ(%¾’û¹ Gþõ6“œk“#µÄ6íÑIײ7¹³¿ßWÎõ@´¤vÛÔO•lËX‰°¤Õ´ôìº/NWäMÍzå×’P¯.¤ iõöòë@ºþÎÏ­÷ŠÑD¬Ú¦ÌÈðÞxeM^ƒÃTÉ¡† ÐÖi4‘ƒß„_òÐÃÅñ‚Š·)SÌBÁwPá"Èéó$JŠvZ£FáïqÑæUèjÛ€Ü4B;÷Sk,ÉŠnÌŽrÌCM]ºÏî5³F¸¢%g |È›0jÈmõÒ÷ é!Œßw?ÿW9×>RgÖܯ}ªQx¾':Þñû=ÛDÓjm b‰üõ˜ÉjÕ:Oï‹?öû&?º±ÞòM§T== j¹ †ÞšžÉ^Ë*ʧøÚ)W:8êhnON•⸭›¾g~5.^~ï3 £úàȲmêËVÛj6_l2Þ~Ðx”u'Ïè©X}S< À}ÞøHµ.\M.ê¨ôNð‡3r~·ð÷?¦Š ƒÚ·.U? ¬á‡Xí•Ø3Ò/»´ð$´C´óþÛ¹~•©*a´²{¥"Bf!%Îá•MŽ{·'¡‚¾‚ûÒeP3ïó„•EË‹MƒøÛŸ@Ói½Ñ®BîS zlç¬ÚÇÕÒ.…QðÐß6E¹°Ð\ˆDÒa9|‘Á¼6îºY$ 3Q–\£@èIn‡.XªÀ£"°eæpÈ:ñ¨‘ç gâÄIÕºC£WÇÅþõ'­èõ´/‹ùå~ˆ—-äßÕUÒ¬›‰|ӓÇV§eW¶›OÌs³ðsM». Ÿ¦}•ˆr¡a2€žnWùgí™¶Ñ-±yáR“v÷‹÷›uA¯}*¡8Wî,äB6ÕûÅ^wU=5ä{f2O¬ Mb$BZ>ÑH&^0Iç½ñãýИ*æ8°V¢‡¶úa¨Ý›‚‚oôƒM£†?Ó‰úò§¿Žxè,û· z‘\Óµ)t’Ñ‘÷7UÜó[‹VUáá#ŸÝ0áU¡?)’˜CÚ„&\8,ÉÐVÿAø‡`©´†FÓC—ÛëÊ€%Ôx“¼<ŽÌuoÂÏ}P•Ö|Ç’<ëõÖ$‘Œô‹Ù$ñÛã»úÈ,ˆZÛ†@ÉùÞŸ=1ß»Hh ðˆL…˜àO/tm=“磶&dš›ówG_N&ë¯_m´»æ}'ÞAö„~õòñ7Ô¢3퟿ÜÓWq2“4&yÑdmeò%Þ\òïÀÓ¼ª`½àJl$’@û·vä§£&\€Sï@”áÇÑ§Í ¯XZÂpEöìv#Œ˜²ÈÆaç@,Yï’^Nµž©¼ò±íµÃ[`"C|mó¼0C˃4]ì/·G}¨- i¿òÝí×— DX~¹ñ6[*JM~Aÿ(, c|XT±A톈ΌøPCE« ÍÀøþ5ÙEÅQ @-Pر߳¾Ôþð‹°/Ó‰Åqý£ïâÞ«ø/;f“üäTÊd!óþpI00ÓÞ£ñº_*¡u€¬瑽1Ö/ü[ÚŽ»ž9âkh[Æÿ2ÿæSúžh¢ óì8Øè/G>SÚlj³\a 2:CÛ¸à••rýPÃŪ¤êç!Õ-T,ô]¤HPbT7Qú\Æe¼uø×qºGFˆÑ¦ ,+ë3Q†ù%¬­sPSÖ`¼¸¢aêp„вbt b ƒÅÛ—× A.nyÓb¤µâÞÈ¥I ·1 ðXèF|]ϯ§¸¶š'ÞÏ´j¤1À¯e§m4ÉuZú[$ÏáK\¿aH#c€ðkòw˜ôÔLš ,Óë´Ï‚|@Kèê©r,ku:G]"±; Î<ÑA"ˆS°‹ó°JéŠ+ÏóøèëG _#LÞ& ¥ï( M»ÉW¢)›§’³8ÜB·Ÿáƒá"| jnÀ ŸšðJJ®Á! Ñ—¯¾»«°©dO0Ä|åÕqWP´–ÎìDþZ?|n‚‡ø6G­š ²¡ò›M×ÏH㯠Ž%^Òÿäð•Ù@ª‘RÞéaä“g! àNÝ#ÃÊ Ÿhaƒ–²6iõwŒÓßëOÙÛÁyü2é»_‚¡L<¢¸‰§ÆÈ¢ÔÌ·Åë$³ÔßYàÑB\íY{aÉW¬O,¡¥þ—š+!ƒsJ{ㆢe>Pª<–áAÁëÉ—–¸¦ŸXÀ‘@u& Œ¸\¯Õ°£WÁ‚5å„ÔÌ“KzfÕ•ÒOèP]Z(6¹™yÑh—@õßù¿8¡mTÒ žñM@ú ¢Á»i¢{Eûˆ/‹‘hãˆö§üTJ¯þj'£*áqﯟý§Z¥Ù 9ÑïÙ[Â.ñn¯Ho`Ù=²ÚÄ>÷¯d ½Ë+Vò0¥~N£ßE…æ¼0íoÄ㯠ýס޸1nÚîO.NŽÒ+*Ö£)OØÇýr΂u–°wf ?$DZÏŸVg‹9l®…C²&ÿ¶Š,Õ‚ƒ™.<rqÊ^Ãc]C€ð·•óP1 “Í æ¼\ÿ ’.rÓoZëÝÁû!R „0‚æ†ÿÚñ§à¼x{}Uµ7è¿ä½î‡âœ]b%Pc)x2¯¾Ñ¶ä ?ìq£÷н. U]2‘JàAÐ3Qß_ÿ-þPF2Æ_ÔŸ0i§ ‰õ„ ÈÞ’@ô˜já«•S×KøQKR¶ëû͆émi;|mDSø4’ ήP0õ˜Äö+¡Ögû±ÄÀpÄ¢ÌxDã¤^è½>2Dy£4"‡~_®ú{1ÐA2þ×ìܧÿ&¾Šoi_ÃÊ,àP²–/1¡U|V4Y ·özÃxëèÈãèpuÊoß!ùC~~éPe¯~³¿Žü$çnàQo=~q߀‰†bÀ„4Kfë ºw_ß§ƒ—¹†Ä‡+©¾_tx»(œö ’IÿAÈðHñUL+§zž„¦2g-Šø¬=íä ²Bf¯Š44žQûÐÂìȱô<#M¤h‰ª!ú–ë#ÅR¨ÜTìŲùˆÂ àçǃoÇWI¢Õ>Í §MªHÌ6aÛi÷÷¯®m+_5£JKt #?º~30õÇÜd[Uµ§)'; m<º/GòVáá(;Ï…—#dA…IS®ß‹Ñ+-ž<ó"νb±Zþ~“Œ¸†|R´D{s•ÌĽ}‘ôôîÄ[ð5¥¤ 2kZÛPD’ºÌªzŽAÌ t‡p#)Ì<µ4»j„{ê7ýûC¤€.Î÷K/)kb;ÂÔ7ªúÆîŽöû5ó”t‹ßw{]½‹žÁÂ< ®„Œ¶3’óPez?h•¬þ’ ìû3qù7zö×W›Is~}‡—ä6½}—ò¡ùš¥coÓïRì'íÑ L%¹…êÖݱ§(ᥩõ˜<ð·ŽV@ô e½«h%nW$¦‘Ÿï‡u^P³Ç;lD\4¾Ýfc\m_úµŽgîÔ'¢x´Úïn²-…÷ñU©Þ W¼³‘•|­lçtvAB¶6¦Õ§îjºR*i;g}c?ïÇ“ô0f“CƒO}Ø:àA4T/ËaÙÙíÁ×{"‹0Ä"±Â÷!³ºú“´a¨"¯¿¶6ÒúìœÒ”“4^~fo#=zö cþí_ÒQ§WA–À¼zçZlÃ:žÐàŠwÉ5/Nb/0¥r(Ž "lâó|s6ejãŒY ÅÌ¿¶åß±‹|zT2 NŸvr-CáÜú`]cìzŪŽ%¼\ɶΆ;„Âá@=VŸ€€”(æß–6ígšŸ’LLj3¸FW~×ïlðYq ð!Лø%•ž°«¨´é›®‰Oð9‰¹®ëm&[x E›äqÊÛŠˆžFÜáÇ)ãVh± 2ˆ‘^óŽÆRÖ:Üë)®ÐM9â —ì——¬‰òeòl6Qe±˜@AóÒtÁ9XtºÓ¡žâ/ Pûú> S?jU\@ÚêBÖ¿…³ÿº$礪º[¾á¿u¼Žú‡ï=ð²Ö’¶pèõޏèQøðzâ¶«7úIƒ'o”>óþ“ˆ³zöåy}Ú]ß/eÓA FÚØ3¯ˆLb0 ”¬æÁØŽÕkö½ÄÚ•Çð¡ì’è›î¸.#¦„þåd(ÊéaZºócAPíˆøåh ÿ·¬ay‚Êþ÷Ž’iÔEKœ­§¿zâôPïiO^q}Éô[´²î ýб¾jv1éNÒœ~¼¸\¹€;~n·iî/p¥U0«ê˘fª;5*Dî'Ê´TÃ}éþ;¿º|v=àkeСé þŽcãüÝls`³3•ñT3)õlÙ^Åe"bi ‚YÜýŽŸ<òGnn…qU Lg'T3Ï%¶ZÚ Æ}qä[¸á=ÆPÁAñ»u ƒÂ?*Zˆ%8‰ŠˆÃhgµ~Ñ’é@‚fK4\™Ò)í;6„,hN°$]QÁ½Ûí-®gìØ ð–»B ºK8FqÌàÚaé|z¿ª Ù;„bŒ¦ThÃy¥¯›«;Ë'sÐÏôËžWdO¶ÑZ áͺ51$ò@cvTЮ?qýk›(r#U:tñ Ê+꺱PKh/ey|¤äpègUxSŬøåŒÍq5ÿ…HÂ#[u à20×D:¼€µÂLŸ‡~vvÊ¥<ôÙxƒåKçXÅ2­?G¢³4ªÌœIìŸÛ ÙãÀ ·{ |Ê›*±ØJµ/Ú”"Óªî–,A'×)PH£% Ìy}JáÉQ®¥Ç"ºÝÑ2¯ìÄ@׳=îëå긡åþ:Ù¶±ªÚGp¼ß•2*Œ\·­ÉÌ”27fÎh8P. 3¹}³]óGì"o—Ü+'öŒcçaP…S·–-ÁÇîåuÃdë†JÞ­a…©)NêÎt’ ³ºÂãvG÷ûD›Y¼- & täÞV.ùDZqEÖe†‡ªãV$}K ÷8Õ^ZúÉžR–2i]=ú Õ«N>°´ˆ´íòtþà:p†bô¥^Áï Wýf|‘¸ ÇèTŽìÁû-=rSÿ÷ ¤<¹‹Øè…¥Z >É#ž;¦2¤ÇÏ™¿§ mÛ4×´¾ý¶Õ{£sÐkb£úÖ_'üÔ‘Aedû~!Õ[¼d§j"†>OküA¤fÂø[„ð׋‰õ7}  øÜ#1†ì*þXk¦nÙDd°§9É>dNYÎ2íìüÐfÖOŸÏnhº!ÒuIØŠEüÆs ÷,A|[~þc‘ RÜ*žE|ý l÷àü-¨8ïíB©ÓŽ7å%'¸O<0±?|>¼žžL.zÏ?Ò=ý´G|–¢ØÔö‡‹/K1Ðb|w±¨hÑz¤…–²Ý‹u²BrI׊•“Æ'4±R<0mè»Êþ×C|§¦(òáí¹¾ñyVƒ‚*,MiõK°µë9gBx5Õ¥òñcº:ñ:rHýÑEd;;uîÑ ‹¬­„-Ëä~^èðoБåþ~ÕÑ"í°QÇÞ±kJøž «PxÞHõl§î”Ò},§³de›I×°{@õ Cçç¿ E„΃p`=3ë1E«Ø5ÓdÚn8}/SÏÏŠW}ˆëÄÕë2…oÎð}@e9K¬>aM6넳Ó¹ GútÔêg ø5P²Û¹ »~˦©#YÅ5zéOD#Õ镲šDuh/cTn©dþvõÃ%žÌœ×ˆtµ´qÀ‰2šœÛïËúØ ™Õ­‹ÌQÞ0Äx}“ègÁ4¬ !´’ ôªØZ“0 qºbÊâ×ñù¾øÈ>óˇwÓùpaþUȳµOò¨5îíþÉ·F7ëb»!@ðwÐçß–p” 9O¬üBMÕ΢ƒÕP®›~Ô¢ët¬š8€©ãœëYØñSêʦœþÜ™ V²‰DMq}h¡™’Nèx›í³f Œ\FÕ¥jfIßMBJÕsïAZÅž)0¤ÏEE.³q/çˆú©†’€@‰9Û¶¦zRÏ„~Ý]vÐBtÅinØ&ãÆáäq\6BͰø›kÖz«°öàfêG…ŠœìÕÈ0í÷áöúºî©Ô^Nð%UÙ°L¦¦ïÜ;¿L:ßÑoÊÈ!,ÑÖ =G`A¥E@uN à齃p–ç¶æ¼ÜõQžÀ¬Ç"öpO!drºW ^ó’óžuîõd~¬P'–L_[{÷Ç_»–p¿æ9é ¹Ë>–˜_p¹×Ò=×ÜÏ+kÓß‚¯œþ¢+LKJÉt.Zù[ü„mŽR|ÿv‚È<%`ñn#µræÌx' nL‰ó"p1ºº4ÂpéÅû^ZÕíXùÆý<*WüLt»Ë'Ò¼«÷G¿•,üz ¯Ž(.lü‰4yÈξåo qÌ–vŒþׂ&4½‚­à€0î3ý`ÒÑâÂØçæeæRÂÌX"çAûÒj“3æ )ñ™o9¾;ù-¿É$˜Ô€ˆ­4­ýFõÝFàîÌï:p&€ô?]ûúhV9fН_Y?dÚê‡Æ…CËÌÀŽó ‹êÆë¤G‰:”xÊÚ%µ7ÅÇ‚¤œ#CñàNqødÄÝFZ0ܨHýÑÕß©¬ ¯ó$nÕyJˆ´6âlÃÍûƒZÓ‚Á%ÊúÃç:Œùï™ä@i¶a¦£~” <©mg2#ÁØïq°b¼×Ý„#ŒÃrjukËRZ¼éÖÃS†äÃß ýˆÊ¨ÿú£<7x¨…û;†„Y1a.ÌwÅ´54¿bâCò© /úFÕ³teý²µh®ßÇ. ê?Ïú¨þ"Œº‚1£€*•G8Ÿe%È¿yûò1Sñˆ¿¢Q&@‘¹Ô{ŠcØ +}°a#!¯Íï;ûÙOM¶u¦oÄgÅ-ý[}Ê?æ^¤ôÅD2J}ó8R¢§9iû2Š’!òÐÞ–è•kÔú¬œÁ˜¬’¡ª[Õ¾×- ´.5MSÇ?ï7jZklï«P|‚8Bs/ÿ@ÓËpÄ Iwo'ÏcF’Xž¹R¬^Ëɬ=©É.°Å°Fº™èÉ@9˜‰y_%YP/EÙ%úNö9Þb‹Ü^ŒæIú6´§…öWèñK¼Ùeù7'‡\óž’,éÕ‘ÑN—'Ÿ$ÃQÉ>!Jòi–vBÄbÌHíø½ ãõ-Ü7)Ó×D©‚ô$ÜÊr^LôÜûÅ8óN¯¤ŸWöÆ·¹ì •Ê¿®F´¯~Oð÷%¯þ ¡ÉPÂR%w_NÁ?õö׸*¸ê`ºÉpÝW´itä¢] ûÏ+z}‹ýkaó5^žÔw>¶sýY·¯ú=ìõù½c(f¹ÖJ?Aµ›Om– ó¥HÊ)¹ÉgË϶¹&óŸIð…šÎ«pz}™ŠÑMß׹ܧò’Í˹øS]· <RA6PÎÈ¿ƒDój|R΢˂ðk+^É_›7¤ØSš™3áD¾µkÁPæNäÍÜí·”yÀMþæódî Œ¥{AôŒ¿œzD ¤“sÅ7ºƒ Z'`¹¿Æ8Ñogà5 q6EÂÏZM :s®éÂù½±ù@ÙȧZ“¿¤ð‘ë!áJ‹ï‡ÛPM;xVÑÎ ðïׄLy<Ûp9‘ôÇç¿õ¯LgF ã¨&nßdŠ…w#,Åß¶p¯ÃÒé7¼ ¤çB‰Ö~1¯°­¸þø·±Qú[w›~h¥U׋}¤Èßpäˆ%f3蚺;¸ßgýZÑtUŒ—sdpÛ¨N2Ö00ñxSqmI$ÌJ²ïÇš^OÆ5ìÇý°<îZÎäÖlIwͪlÚ# ‚³@N’s\ó…Ã,ºu<ÍÁæ<¥ˆy:é¶’æò×»®D@×ý¥: /ï4y_sx&ž¶Q@r5×xY†¤øidãt@ k<”å:_Ågx˜ÒüÛF‚ef.hRìšD©ÇÌÊkô ‡Çt†A6q¯x¤]Ù4WÛªkQ$!ÍS@ oìÆ&*˜Ù³ªJb”h]ç.°À@úlj(m­íÀ÷åÌÚRö"Í ÌtëSÒšâ–íÅOÑK‚V'Þ9dL×ó¯¿7b.-[ϼµP¦ÜŒñÕ¤†D™äô}оÛ0üÜyàDQ/|Í)çÉM®ŠFK-J¿k…B˜fS½s}ÑËÓ~• ³6Tå_uÂäañës%0Fí ÐD¯ó´¡ì‹~ckI2ÕÆ)ºóºÄ+»d!楫4 ñÞâ{þïH¾Ð,²„{)Æo0VÎ#ºO½ì€IÖÖÔVîC‡å!^‹Ä`’Y°É¥­tD$hb0áÄCðñ#äwt,Tpö˜ô³¼EÛ ¥An”ZK°~¾?ªsÉO}É©7š3+2° ¦êDPåëF#ÑtÅõAýà­Fe’»f?/@trìÑ@ÿÃÙ„ÌÙ'4L–lç) ñ_íóy×EùÿtÉn§Çô8µOÛµu]i¤bÉæ´_›H£wý"<œkWšDSÎ&KO?Äb<¹ŽŒ¼Ú:£ý„Ñ_z✡r’?» .'VmÒ¼r«z1g®Üç€ ° ·’Çtˆ<Åè<WD ÍOW CÒÅ#z$ý¥p†M›FÝšiqÓm·‹òpB™˜J«ÑJvÂ]çÉ+“URD›×•éPŒ>øC$Ê"ªìßú¢RQ$3nDô¥)Ùm ߨ <øûbÙ³«øk¤yÆÚ‚fÖœ䣅‘«þ£HSjÜOÅçYCŒ Ÿ‚å?m;´ÙÑ3eŽWjú­–± /~ýr\ðHI@„«÷XãÒZCWXEé‰ò,‡BcDMÏã½0ñæHˆQÆ¡Ÿ[¨ u®hˆõºíx?üGœ7Ÿ3Ìô‰Â·ÆgÝëå.Q<4@¢`úL¥'¢pvCtfÁGÛ€¯…ð÷ZŠU%„öÞgÿÙ|äÏJ‡ØT f´ 7""‰É} !dIvÆòì·îÄBj ©d[áˆÒLXt½ØFÄxÒ½-´E_¬ˆ$,w×±ª!C1GbCIºéžØ‡0`JÁ&g1{õ°ßߦmAØ!™Þ#߆™-œ¶=ø‰‰"ÛõI‘Ñ‘ËÿqtÛQýö,È–äœDfGF 9}ýàñ9ÞÉ2¢»«ê¢î÷Ö•wv÷I²({pk,@õM»c:¡ŸüRvéöÃ1UKÐ`µÖ/7S{?u:øåAІÈT÷‘¤.ty½ó¸SáÒþúåœvóK *fÈsìXO/# oI6Û¢+@¦úý•=ZaSUY£M[Ͻ=g¯¥äÙˆr·FË Áz±?à8ÔûÔý5¦=¶%Ø0.™·æAøy‰¾ÓмÁùd*ô‰t{š½ÄLáEGïõuè²kÖïÐqËÈÃAí§¬êŒAZ‚KÛ¸©ÌÅ2Y‚tÂùY·¿^?¤¨+œÛ(†ö×Ü%¹ù,å͇=’µËgË ÈSDs ¶ÜÁßU>?~÷ÆÈÅSBo[í^;n´ ùv½ì„"œ¿é7#Ç>jMÛm&ã¼î÷&Ó°ð@Ȭ½PŸ‘ùókXžf¹!•?sYQŠ6/™{8zCDÊ¥}óŽåT2“ñ·%S@;sAvÔXƒ‹˜Ít¯±2?ÓrŸVÉ;Ž‚Wùœ"õK§Ô—̘µù3ì0³óoDõìhFìCåÔ©ê…dÃx¼7”¢ÂR¸9`d‡•H¨ÁFç–ÌS»…É*¼æ ш %j¤·-©˜¯¡yTª•ý¢D´!ˆF~½~ ±YlÑ1cÒ0ÌRŸ>nÝå<ß„¤j4RêÙÄÌVA˜ß9Ê©f€?òÍ>Ú‘Zëñâ‚cùw°d š=÷ ÿlîBz»O]ºuJý•µ8z~•ig4ŒÏæ¾òîßÁ‘ÑNñ'OÊùH8˜ åFˆzx&pè—j´—j–(_öÊ|»í¥_M^ò*Ô1)ædQeqL,¯*&Ϫž”$=PÊoÙ£aÂÄ9Ä<…&`—nE¾^­Pì©Z€ÞîKoØ‚¼”põ…YY@S%/®ÖøŒìÖÕ€½°bªªsã4ö\s·êRäqkU¼/ˬ ›åÄùL­¶L¯ñ •öóñ-áûíóÖdeQJ88²©ãŽ ÉG ­ä‘’Ëx$ã?Lmtxf˜BÈòÅkpHŒ}k¾ùOÜûVÌ7$“hÄì 7§Ÿû,añSYò?ûÑëÇ,09 ó±ºØ??³ÃÙÓRåØfO 4ä£ )[ÕÎÌ…‡å(ÃhÓŸ e~³’è£! ÝË…ƒ=N•­¤\Ö_u‰ñÐ"þ8±ùC ¦‰D”b;;ö@ý=Ze Z·ØW»Yì»ÈÓÎÙr7©z­hØæ$·4eÿ cf=KùJ ÃèÎc}˰ «ÚÅÆñ×Vžiãå‚þú­:U5fo-qÆRTk j­«Oc|Êó"JBGrêÈŠ¼Ö-9¿¯äÇT‰[ØÐµú›<¥ñR L”} ˜ê}ê’lý×®3N¼¹¾qç¼Íd_#•¤ ø‹§wDP™ÅæŸÂŒâ¬ÎÈšÞ:ÿ>»°:g"CäÌq®SÌù„R­º«Ðs`ÔP¯Mçë×ðeNô=xùŕӊ‰5umÚ5 ¦÷õmá}䉀 ¸Á&çw:ëÕ&Ä,×í„é‹Áׄ@”‘CGIgoüáfkñ—áýFÑú>VwEÝ3‚…­ä®o]“'#|7÷ZumBÌ_Ež|ä9,Å‹ð}OÆ&ûv¦5y)÷N$ˆ“U>—%@æA¹bÊÔÐððWêÊäÍSòžì«¼ˆø· áyFwcìõûBgkIû,%í_PG¥„†Ü©œóOÚæûå%­:Ï0ãI#<„r1,aµ¨Ë+ºÃ­ºS€ñs¾RAü¸á‚S”¡ä?6vÛ'^0ø#ŽøœØÍ.¦!3aƒôË»3³+Ãûß¼n8øù-ÝhqlÞ?·èM¥|3±‘¼ÙÙ㤟jø/=ÄŸˆÎ)8¥ôœÐú';²Ñ>™všv"ÌxÇ ®+màvŒÁN(»þ0Òö\Ž…ë¤Òþhû]6 `öe”=62à‡ð ’jñËøfÂcªøDVŒÉbמþÚ—KÍš`ùçRŠéù OŠWàø¿}KO>ËÉÉ– {~h–) h,÷zèscðFALÁÀ½ª9_fâ&åâ¢\/ð"Jë/S†ûW÷¢‚^ ˆ’aMm®úYOfjâœÃ®M5-ñÈ Æó“¸äñõŽ^ã…\ö Õ[ÁÍvL’Ù'Z?O¤¬/˜î©¨¤$Å•¿õaýxñU³$Œ„ôù¦†u9ªVÍ—è[€Æ¨Ë´d#]‰¹âöYÑȈùÀ¯÷$€æµUž?rJ¼(j³]¬/vñ)Óü’,ßg,Dtò_®åEñ¶›‘:)‡¨é|}»±Š–pWU…íÅ‚5›uÅ­s#q+óã³HrZÂPeDƉ¾RD…—…^%:±Áëæ1c¿._€«2ëGP4þ·IÑýÊ{W"NéûsŸ<1W ‘UyÖLÛb˜Ö דÚ89-‚^òèˆÎ ÄF þ:ãÐ3°D9±Cx‹ò± Rºßºì’ui‰”0H¹®åeFÞî±Å¬¬ÿAá8ºE~ÿ”͈CÄ;•Å.×ûÒ$JÙ7õäKò½D<Œ¼lw¨WbÉÃ(àêt³ <° XQƒ2n^˜Œõ¾Wi?N‰“ÉFâT𦠀ÁqýQrƒùJŸcä•fäT#×A‡n°ÅÚÌ©¿äƒñY³ˆfUüÀ"_¾Òn-W]§yÈ›h°Ú€ßYÏå膊”Fg‡¦«Š+Jÿ-¶ôGÁ°³Ëu?ƒ¼¬šÕ \2ÂtvÚþ¯NùOøñz ³¶Ó¶þU¨aO’ÍÆÃµûË£•Ó_’Œ/IÞ%ã’a¹ŠM¬)õ¤iNu"ã'%=“í«‡!"ù”þ:!Ü7¸‚`…_“Ò;¬*I‡Ñ ¿zƒ™gþ’{dX8';l ƒìBQå@NŒ¥w{bíŒv¾!Ò¡n˜ÉÑ]³‡¼á{É*ù±ç”ýYß–,Eb{sÿÕˆvá øø´ŒÿËÃ$Jp6kf [„g(±k%„å™PüR<™F8;çâ$¾òÁÊʹ¢WþΟfJæ2)ÇV“pصUÖºD±”8AÖЀ¿üñJ~ˆ» ;ž-ò·ˆÝç3·´{”©L±ƒŽî´ýˆß$¸Zã.s—ígå8Ü_¹'i£ó øu}|b.¶Æ¹´XdÛSÍ[äGô:âi! éÛ²s’²0Ú ­s¹|Lw‹] Œ­—f]™ãoûPZ¦,0§¨ [Aæ|—n5cYýáà3eéM°&z0§èàã<¾À Ô{è™ýPlý|õ¼e0â5GbÖ{ð°ç qÆ>4¯;Ҵ؃­|HعNœ)ðð¹¿d/Éž0‘½gFböÆ¿ƒh§@ÝAXL´ÍΜtõ=s#ÈÞ•ð‘²q‹ãðLe@ {nYépn§~`޲ A׌l¨uS ú¾Ôsߦ½µÊ0›R®wÊ;+ÚðvÚ!ž0ç}±þ"è½–·@w«¨–VÅ‚üXHÚ1§2=ÆeŠ+qQtê{lLgrxoñ‡ ?t·0×Ì«w“äCØðé5CÅ+Ǫ̃j[¥Ë{³§´K$X4À¢ÂD‚ø{D€÷W_Ý óä‘\øûz^SÅ_œW‡ÙõÞß›3Ëõ+I£/Ý3òÃez–*&«N_žqÝò ˜cÑuþeæ]­qñ”Eáp•“ýñu ç¯ ÃC=éRWÜî¡ø—Eד!´ _~¸£¨Æï‡Ùv,h#ø@~‹ þúN4«ikN‰·ÃÈxÓ0—[ælÚGú¦G:{:IÑ#œd‚0e -¡TÿîY7(YèD }UðAð5k»kå¾…‡b„ÔTæ!M1ãE Íõy¦aÞþµák@‚—C’M? S£BjwGvÛ[$†&]§’ŸK•¡˜…¿"ÿd®”´ŸçûÜwî>Qª‰²³ÓÇ îCå™7²<.©¡¹™‰b%ع5@¼'!£"KÎøâ¿rdB^ÚH" "ÓYG6W&; %D?ço3P6æ£?Óªäq…Y˜á¾ÚÝ@í Ø£œÿHËäÖ~é¬!€ûDlÜÅniù›¢ŠÕIþ0r";™¨/õ(Ca‘°Ä&SI¤œ;ol€„² ªþ¯{‹q-xdÒí°#gqN1äÉ™“*—F…Çè,ö¹œÜ\JòÂfìßÉœ#ï‹6ü¢¼ãû#e¬x2æÏÜþN}¤äÚQ–Åb'ÿ&wmS0gç½bbÓçz\l¯.Åã¤ìRmjËö^Y+ßÖ3o Àn±Wxâ_Íüíß9_]’š \—/"us¶F1.gcÜÍŠBE–õÑêÉß¹{Æñ7ã——U4ï²hŸè›À_ýc0aR.”2=¡ ÈŒC“(âe‹˜™fwÎ_]bÖÎÕǺ™ÎN˜Ê^”žýõ´ê“°TÍíjš¨A?ÎßvŠ-@Ìa¢#ÕÀ¥Éž‘ŒÝíåLïaÅ;Ãï­íˆº«$P ±ýÏÿý5-|€€g†a³M៌5†Y⺘15`ÖæÏÈ¥P×™hoç®°ïkËk¨ú7B· v1œ¥òç­¶mI¶Hp:¿÷µXSíÈ»ò•:cœ’þ1ÙÂKš^ÃõUÁ/­n ²$TÆÅø›† O—sâ8&#”€ [ T ¿cr•Së´ùªÆ`íï3™´YŸß‹Z¨í/ÛÏ ÊôÝéï_æÆ®Ñ¬ á°CÒHbTó5ÐØgJ¾Ü,ܺXMŠö)?Mà<±wí`ˆ,DŸtÚÉΰ:8¿­f‹ìœ 3¬èÊLU›4>éux6B?³¦'€ üðçN²{ôZÑ¥UAåÞ«:kÇ㲋s…n¯o¼åK}—`ê}üULÁȇ3 }<Ÿy=obPÇ· #°H 4^\þë\Êœ^¸Y£«¦b|³þ“Ë>„ÙÛ)ÆÃ®w{ð3|m1À7Ìà|»xžHã"ZµJÀÞ9䀲ô˹êC‡_ÏË·Ñè&|çŸl˜¡w꨹¼zU¬ó6f0¸ŸÉ·}‘í¬ ¢£&_>vÌ#´†P…O’ç’e:Õ9þ®…-{uÚÐ4ø+–Ðÿí)¦÷ ¨õ`GܽgE±-ç"°bl¦àÂèÛVÝ4ß4v²… 1‰hC\ÐsßÀ‡_‘ÄÜJû%DM¡€çÐ'bìÝÞ¥†íÉ'HËñ*á7úƦi,†H)êüoÑ[ÔêõΗK»¤ >÷fšª) (}“J¾ÔõÝpÈöÆ@3b«$§=Be.M¤²¨¿o‡T'GÞˆÏù"2e¥$ÝÙäöúÌfë¸@t@–l ³¤§7 –+Щf¸N£þMø•%N¸„#+Ö\)]Jó‡N”|.úÆŒXâƒKQóB½¶ª ~‰Ít=¨Ø‘òNPìŽócçJl}5¹å÷s¥E>÷c|¡°:?ûÓÔ< ü+‰¼xu ãÝ·/Kyh"Y™º?>àáKNn–¯7‚£ެbZù§Tp‰ÏðÂ~e£085¦T_žäßyiûï óutéc«Ò‹ EcÄÑV8[Še”Æ–WyåúWöZ)áÔ>î<ª@ĽÙv¹L2ÿ¼|Ð2[!…úl’x±ØThPΡ~ÇŠt0ÿW&9‰ÅŸ}oÍÞ¢Š]2ÑЮ<9€•\ixVØ>¦Ðl554<á¯oÇ.:×µ6䶺te Û1Eg¤Ü•Äý“™2í­{…^¡àïYIæß}ÎÜS7;í¿2™ Î#IX®vƒ¨ òóáw>“›ðFL$¢D8õ·EWÍRJÚ†ó +?¹èúœhÍ™6Q7*b‘zi´“M1‡"ï·µ¨ÔhýU¶ž˜Qw5ëί'²¹Ö´¤ÓŠLhaüüp0 ðƒ—Zö»Çxì[:hOñßmmà-U;›¢µ½¯Ÿ¨IÍÚzáìBÏ^%åÅ>UZ[ÆCÞ¦íêJ|ëm#¹æãÉÍk‰Ç\:=í>4¢žËÛãýrú%ýl‹w•Æ¢­½+'b?Ç:Ç^¤R30J)å.ÈÍ‹˜]8ý¾7ƒŠ4›9dìÍýmu0·ÉkP5)ê‘[_ BA€Áµ—¸ðb‚2:P@Œ™ÂÎå3[½îct0“s%f4.©Á‹¾êš'išEycö“‰_n!ýfÒ‹¯0¯NBÉoa1ïÏH¾¦ÂzÔÐ͇ÎF²iÓŽ¯‹üç<>LõTG·PõwÛ ú¯BîVjdªÕ+'uæp¥gþõ¿#9Sèu±×¸)ODÿŠ—‘~nÅô ˆöäNxÀ&Û`†É·&RÍ%ç·ó÷•®¾QLQ•Ñm=–—^ þšÔ\ªéGðn§l\¿žhî<ÐZtJ©Å[’15㵡Tù éùy½ß©ºY&¿¦ :&,UjÄÎP_æ ^ÌåIqíͨFÚ*3¯iFóWްZ°Û®{`IãÝ? éyNºSûï´$ÿ˜ëª;Ä[¼ð¢ €*|RÊúëk.¦íQ+Qö™v ƒ)kKú8K4ŠS|_^‡þnz»¼é™)ê×1Jê€= ¯ïðfh.´á5Iç Cáâ\bŠãÌyž¼Ö%¥+=û€ç…0Ä3fý™HÜ«mr¨Œ&å¿Lóy™ÑgpU  4´Ž»‘¢;NK¡'Î$¯Áp¿åˆ?”e7= ÆqĦ}÷4‚bH%#hPYŸiô׌ᄃáêƒPÞçýñ³M d5¦xàæaÃú©b×vé»ëÞÝѺ©­•ÊJ®È¿®1Ïz$^ÑZ-Bn =Ã>:šóûS®Øù|"Õoõ†ÑÅ: ÏôS^¦[ö%aÒuéÊâ•SRɱðj¶Âd4>öü]§>ïo_æ_CDV¥þ«ÙKlwÜ¥‹µó8¤yÞh§Ö}"ÓWã«7Åù˜3ǺÀQWšU(u% ƒõ}w”ܶ“¥¼Éúƒì|ÔªRp÷.ŽÐÓòz á m…¿R¼^CŸÂëè Æn#Xñ¬,Ðþªu¾® p¯ùT犀ŒŒá CAÛ#Œ¹µ°úL¢ºq,]r‚ÿžüï!¦í¥ß¦`‡t %•Ö¿æd§OÇŒ ÖÝ£M/ Þ7’ û¯N+¿“øÆV¾¾“Q°9¸¥«ä èû…ͦ»7<å‰`²sè°×`ÌŸ±®"?É )£Ü~ÜÇHW„= 9ðiFÇß®4ô"nþÅÛñCJ´&Ó’àãÕ£ù~Ç—bó4¢Ä%KbÈàŽÝPIÅ5f’Ö}.´ŸÐ Äö1{×ÈËe7ôþ•ºÞ¦gÇ}Pí0‹ê¦=Ù}ÐÞÎGÐî$èEÚé›FúE{Ú¶(XκNgÀ‰bÞîÏ=(ñÉ É8õºt}a££¨6&ùsIº’(YC]\ÙX=\ͽ1³á+»}:ô·“r j ¸ÚìHƒ<$³T7ãëy':[½2 ñŠ97,›Ê¶ãùÛÄ=D÷éï,jÚÖ " ³wæï°û~ˆ*€ ‰œÈžš *½ùiÚàµ;.Ç;(.ýîô\;/¹ßF„çó~ÔùU•òÅÛj‚  PUÛá_õtŸE(Ê:»p˜wþLèÈ2œ4d»ºƒÞEµþå£U1¿WI–"2¥$.1Æ+éß¹3|-A$KÐð Né:]îM¡~¢723_BÏxýqšþ¥îø«¤ÕNp­›2Ò›îËo§¢E* —¾˜¦à—ʾ3 UI…”‹‰ ïÇü'ùÈñëí/aº#›ü·W»Y8 ñHæ‚%:óèëQÿm%JFþ¶“¢¨ \Àž9^Šqzð!².}Ò}Í_F}„3$*?°º^w>K¹ïåD þª¥Léâ„b¨ÇõŒ†ŸÀC-L+樆8᥆Թj„»PÓm^IæçŠTiÙ)ñz"õÕâJµ4œ®ØC K=²¦¨ËxÒV¾ïÀqvbxñ|Wþ&¥…¡ i°ÞäÔh&â µA oˆº¨É© R'ÈÊußõû9çÿ¾ýÿb”3\Éu¼ÇúAÄ≤¿®®m/=Q ,¯7¢;Žåªµ+VÈ´¶ˆó>QÒáúÇŒ~¦Wª4è4 ©“ƒaˆ_i (^`‡ü‚.zÝÔQ½BÆZ_Úß9WIFd¸pp~Uø¢ùzrh~PI3|FY€¶¿VÌßN­ê†‚þu­6   â¨, ×tNÍY¶t¸1þ½—„_ÅTBëq»/N¿T|äE]òT)þ>¨ûI¿#“%ª‰JyþWàöü ±å®jŠÍ¨'‰`ò©Ò|`=ý®Ú&ƒ2ß«æyÉÀWjùkÓ5üð§Ï† åÇsÕ€ÂIÙVïÆÁöa­:ø'Ûº ™†Ai?`.ìäs5ï„ÂÈœ­Zhcp¦"™ä1Óë—ðr $ÊåÎ…gh+ó°Mĵ¢Ì3â§ mƳ²Lû÷,ïÄì)T(ÿN™Ða“ì#M1Á(YQ“8b 3£o¥Ü]^v÷sÿ¾Á¨cPº$µ­×š²ëàæTl&hð‡£„~ 1eeñ¹Xz­+äÏ|¦é¡ð“êÁ…Ì—ó¾H©\ÒYfÂl(>mA‡áÄkëßÃ\TaL79þCsJÞ :Éüt®ɳ÷r ºÕ(ñk 1¢g¸ {øJœç9[ˆÁkï¨ËYdhüTÇ„¿ãìùH×+€é4ÖñÕÖºõ¦ÅµƒÈÖ€·F…ÏŒ{Þåžšë¯P-Ï¥–ê)çPìw.™YFâÆI^˜HW§³g,¨ÁÛþªD¿‚>Çã7ºµ2ö÷ؘ^­åEëŽ-Ñ|âuãÄ nh›0üùöllÃáAé_Õ£>ýQò{E M­úCòÈåoûÇ/¥5â[Ü1¬$íºá›Ç‹…8(gŠz™ô ©Ì¬ê±¶}ÇdüàÜ4À7•†Ö[/Í;˜p`‰É]6T®Ÿ\³„œ>˜‹…¡ër!ܵ޳KIr§ó+_›õÕßtíÊÅ!fNd–¿Æ÷J]‘ÉS\g{&¿½¿BNÎÅìÖä\g£"Æ’ÁØ'íxIGs°8?Ãiˆ =þxÙïÝ6Ö虜ÃuÜÂÎŽc €-½ODúà{†FõDŠ)Gb×taûa‚µ}b†™«ktƒGˆ$ˆ.\šsk'’ÓDýmžËX>ŠíF@RÅÁvŽNˆ† |°ËÌzAÔ•bð†¾MXú;× RÈ`ÐHq¤s¡FË0øcmoaçÕ´¶D[€4ŠÌb(ëR© ‘œgúïžË3Ém»áÓGUcgk&·ªTªp(>ü¹à3—Mé6Mqâû'Æ Ž©µ _)vN³*ZÚlåuãe­ ó8È”aÉ«\¥x¯)„a ’•!6/"9KÕzÅEO3žX^?Ò™wÉTP”¼ÅGt ÛCôŽ+2 !Gþ ÿÓ®‘rP5Ê6ÏxxoésìÂKbn>H%|nþ ¨õVÎ]õ™àn12tH2,0÷GÌ.å‰=X™Ám£¦ëͯ¥$3 ú5e.²½[ù˜Ÿ;žÀ2­ñ{-a^Hð‡³“1òm¯è,Z«~G¬ººd¿v‹ÒdAŒ@:ᔳÂÍxûÂøå#5À2²Ç’¬+ÇÆg»Åº½TÔÃ*ÈžÁƒa8zeÆ8ö”^ÿleÖ)ŠªØý÷Þ´[ ÜDt>þ¥¶* H¨x™r¥x‘/õ ·Ï׳Òý¼¸à²@BB½At]Nt_ÖYÚñƒ’AtƒÉ©ÞhΛ洽JŒ}@Ê#Jê@ÞŽ„‚އb^ñÆ—y¥úÖí{ÏJAE×_- ~þþ¾¿4ŽÉ)bC¼èTæÙu³³î¼’¿|VßueLÅü==±i>¦õÜ Ž´G\ }?¡c0¾'b­Ã—.¼«^\V{@zr©È=°@@Šùîâ[£¿e¡S2K¦ë?B`ž -¶B÷˜‡ÊÒìüI{°b~+ÿ½ó„«9°É©öÄ$öy-î@à ±Uj¼½¥dhïäà˜¿³.#±×Ûä·/aÀ®¨PÓ‰öò,XQÔ¶7y˜˜³{/KßÓkíõìaL_Ä’’HÛ6+9heÖòR.ï§¹}ù_#¯¹ð" Í"Ö->\Ìt¨&õÍo@V/väøN˶:¬äIáh¡ÇÆ|Ñ º·»#Ÿ­­H·°y‘aºSØú2®M–€ýÌÓøG|Hl¾š´àxÏ3–;7ï×{˯tïçKšwÇ)öåã³i,CòÃØ †ªùE‚Á7߉ûøZêIŸs3ª>÷£¸¢ ·6s©è8Û{`Ù"….?:[¼VÁÊ*Ï:{3‡.?6ߤí€?ðï!8Ih(x1 ®ÙOhf–J·ÞÁ«¬€ª{–ù«Ô¤­ŸÅâ+ùU[$¤]+R¹óHŽàS§à,É~H¾ÿ~ÊK“)– P6á_SÍ87Íe§‚ÿv µü3ðüÈ{Puç>êwíÍjIZb³ˆ%‹^’f7S½Rt’äÝßTµ­äve¥àÛÈÃæ<Î1í»$c”~4;ÑS óÏþU‡ŸTxuguÌbäܱ›ÂyÕ+i$ÅWƽ©íMšäý­„Þ£»Náí…áåU\–e{¸'Y&toï|« •û[×ö}#8-¦(ç$$„[©Žö[†‘ãà7&žrµH¿ÆÝ¶á®³¿â #¾º”\jpޝ}Ÿk$nØ6,Öcÿ›xQŒyà!8ÌÕ ð,›a¯Àí×}½÷` é3Œ‡,ÛÙò-1ÏF¥K~U®qdgÁÿhÖ?„»ŒþϲÁÙ@öÒ$ }`×ë;þ«×ý•°««ÿM‰%>Ž =za®Êˆ|¥¦[h¾–»Á‰Å¬f˜?»%"R‘›¼*` ]PÄ€"Þ}=ݺzÍu»Pq²6ùÄÌ4XˆT„ŠÈ¯fT§kœØd=øüã ÷‘ä–Âçƒé‡% xH…ü(OʾâO [³ù_+mÒ¡ Ôß7LpêPÌÑà¶7 å”yYVÂqYè±?gøŽ¯òQÕï7µfyñºõýX~ ÇPúÕk¯²ÕKä?ÛØzè¾|óÎgÒ+rѵ¿;ÒbÜ\&!Ñx‰¼l´òµ|'Ï,u ?š„=ÝXB·¸’ªß|ïé;¸(gí¿§©Œ®#u¥;ÆÂ• É+P¥‹.He K‡°îß7~=ÿbBwÂ8Df¤ˆ×om¹Ê–»d/¯‡ *”ïäð-­\¢¿oúÓà“{09ü«-çä¸/Ü‘yÞèÅ )õ4pð¡*½R?ÿ׋íe‚o¦öúˆÝ÷boIº9ið<^|&ÆnYò"Þk»<±q³ØgÐóx" c€0y5æ1ê¤F¨¥'3Z² Ü”t3(7ÀÇ !Œ a¥ëZÄŸöqdù†—`¡^÷¦âËÛïÄVËr€®ò=û  Í¿¾F^ºÑ.b[­˜ª"-È÷½æ^$çÙ«ÛHâ™ÂDô•ô÷:5/:‘¶K£¾"\5B~€ü]J…œ4¶±Ñg Nf#vgÐ*=Šˆ5òˆ¬õdzp¬ð&΂Êç~첿Œ=æðu™Ö«9hÍ4,ìßßãÍÆÆ›„ƒ/• ìº©pM7 8©zExOÙöM}Èè‚ß’äÞúúB©²/xñ×0èòÚ"-KM¿$¨鿧äÓzäœ`Èvô‚×·­Îº£‡nlÇp'ï$U?Whã çé7Ãò—ÝK»þmá®HŽFíˆÙ%±¡üé;…Òa|°„+ŸËäÒiÝõXð*@ò¤…þ +ÿõæ †ïPM] iº¢j‚Îq ò>ûeûÄ>ü¥í¨«¥|X¡ÕjDV¨ ßV¾lð”7—›_‰Bü6ˆœ?W—¨ë0#•x÷k^@}ìßÖþÐo*wéOز%â¶¶ÌÕ'd󳟒AÎC±YS’~vŠ© "|3b°×ô•“5Žé˜Ö%xEy“o~É/ë¡;z¬p"ËÒ쥸o&:!¥Ì­`z…pÀï6v#aBi³A¦‹Ž?(“žÈ”‡epZof¼œMˆOç4ÂNù¹º“šÖ„Âóoã_ ½ª©ä¾»1Ï‹µû†TDm{jÓ€†o!܉ÊòhAåâZ{èÄ8þ_ ”>áSñKä{4QÚA†gØýXîkºcµà©AΣ«˜'ÃÛãéù£‹÷½aÔ˜àoË9£ž0þxií« Bêç|쾓›¶Q¬Žù³0:wÑAIÌF®_ÆûZe]áñ*ÐMQ¤í|D|œw 9ÊX°»µ¶ÏfXþLJ¿vºDèJlÚsÜ¡PºO‚£Ë¹¼ +o§L?VÎgt—<' dã¨ãf¨äøqÕ‹Õƒª¿NŒû&T©-9Qæ®I¤c3CQk£5÷ÍÐTö¾%7J–cÊU¬_Å$QP%ŽâYoq“©l£”R{@û¡–%E_Ÿ –k\DyƒPbšà€ÑòB/@}a§ZÍŽ\{³-¯Ì­{ Âošýc¶vªÎ:Ãx1ž1Ý›p:¤*trMWßÙ¯LàJÒ)“¨x¥{®›nCî~ ‚± ÿÅnðïiõÁôði@ Íb¾Óƒ ^Iݘôyßü¯ ƒâA΀3;ÔÈþ’4ØþNÝv€ìÇ•XD ÜÇÄ©ÈìÄ[ ;rãURÛO÷>MçEO4ß@Æ#ñÉ3Gn ú|†BTH*}]7rÔT-–0ç‰Võñ “âöujÝãÂ8Ñ}r‘%íp¶Qª‘ó?ßšcåömä9 ÞWV" ¥1Ûí 'KÛŠ¸9M[Oß$î³Ulä¥öÒíg\>…?‹¾vÞ: ¾'Çp0U²(PH’2H~¶}x“„vjA ÚÏÆàM1eÑÙò‡ 'ÿ×--o™¥L4¬R”9ÛCuœ[ $ñëmO4@™Z†ÏŠ€b¹…šdd‚}©ºò~Çø)“¡! ѳÎ’Õ›á7õ°QxöR²?D <1ªj-yǃ³}Ç_'ëß X:뼆‰håH3Ñês¨¬DnPÁâ9†Qñ9C}ø>Žô'ÅùKÞ@²ró•ÞK/ÿí£º~í…ã¾WëãÆ·TZrC·:̇*{Ë–.½J$ynYëT#>X¥¶‹ò'mß‘ý„¿O@‰õ -µ,]QëR˜è‹è1[Ý™¨5ÆŠwÉx)½J*ÿ8:%U¡ ¿ {d%9ç$ìÈ’AÂÓ_æVMÕLŠxèðýا›ƒ©°Dï©1âåkc·¨4÷Úmºl}§Aqåzç–sVÝG—åA2sý¬cÑFõO4œ%• ù'Žþ’xëÚxðKj ¼vÔ›¡˜aˆWeÓÊÙé˜øMÍ ôºÏ-Ôöék$»NïEæ´GÈÍ?hÛ2ÜÏqVc!ZN(Š5iÊqÈM ]xŒˆ?ÈÎ\û›²ôÆwïjÉä?m|õ¸sEÙlBX®éÛK6kÙRÞyÕ²'‚˜#ÒÊò.’î¨ú£÷ú¯ËÊ$Qše_¡Çjjv½ºStýtŸo¢ü¶‹³Œ_7ˆ)£_åG}Âõ½Á‰^¶‘ïó™×Ù÷]ðêôK²_Ê"ùG(‰ŒþóT×V*³g{ï) ±¿ï_/ƒmã ´j’òﯟb_ |0q¥„Ô ½>¾r l.SýqnCÓçc!UnÚE¸vç“WQLº@s¼Í?Í@¿ö¢«^ÐÿÚ†û'ûÊÈ0Ä,D'ÞщSóºÉ÷kݨ)7¯Ž×â??ÐÚ‚“efï Ý[ªâ O²?èFØ>€,)‘Ð%SƒNàõÂ8³=dm|ÌåW4XX„: ;ŽáYê'qMAq%Dj+ÖÓmÕɨSÔ(Ãè|>˜ÿ7\ÔQ$ÍAr ›Hµý‡Œ•ËI]¸ME°„üác„ñ"ïÄŠUŒýmÑSÖs7Ì(… ´§;„vds™‡JN¶ÜYá«eÄDó†Våò×@nŽ` –b·OÈ¢«ëÓ;XaЋWhâ3Í)/Òéq™8Ý䨴…1qƈù¼*…êÀË7‰ðIžtk€ •$¿ý\ ÈÇYax(( D°87®_ߪ&J‘‡À/¡Î*ËÜ_¿·&ÙüÒYñð,^®‡øæ^­ù~H2Åÿð²Å¨°®ì¥„¦o¦ð»›€Œ1sŸéηM1Âí£Ñ2WäFDí^|ü·c·Xï« ¦p™ùxˆBÃEŸ³*ÚÞÂP†O†—AÞ¡E¹iTDDêþù‹_­{^kÒíØ®Ÿ‡dž]aTÊUò0e;Á«àï³ÿ2êšž½Öë°›½Ý´ï‘´§ßÀ*Œíœ–¡³av)ªý°õ-̆M©l:å¯òV†ìsòÊTÚãëPZ¿ang@:ìl¶ÿµs+WBÝ$´§'‚*ßYãñÑç¿:Ö$¹Œ-Ææ’Å Ê;v5 õ7 }†‹±P§´Óô9ØÚØ¿Í\µUŸcþìâ=æ› t½³|:°I)Æ÷sØxù$0ôäR˦¶˜=¬ëçÊv¯$Åb¥ò àð…ñdR׋ñ_¦³zäê”âêµ_¯h0øÔ½O«¢3këY˜Šo~c³ø`C+O‘ÒÞ” /}˜ºjŠÊÛ0„à‡°ß'B²º¹«ð–åg!:¡^Îáq¨ŽxÐ$†)¶ŽjZ öVvЋ€e;³ÄichN4›îF/šÄ-— íÞ ÊÉ,8°t{ŒÁ™è[·íÙŽ»¬ë.oÅf É: R`¡¿GlB6xð¼ÀFÞzkЇ~úÈ·¶Õ®£T«ìÒÿJ燄Ҝ‹É­¡gˆ¬~fV‘w¿TeÆ |UÔ~$'s¤Xýkãá=í÷d~œzä&Îi†}¼˜\kfy¾…­KÜøæ÷Ã÷['VN¾0Æßn­úå®Á&æò7Bñj÷ôš²ü 3â™»j{gªûŠŠ%ì|·ŠC×Ѽo9¤èUŠß¨Bw€й´ùY_Í‹œJ.?v!w¨ø>13Vé-D‚3ô=ÝsÓw™Í£W`¬)cgç‰ì†P•æÝ¬oþuÉ9¶M!·IÍžc/û´oËKA5})C}æuˆ‘QDcƒÅû;9˜¿Â™†ì’è%èçkF3––¤õœ×ñŽwVëðµj,²\I¡ô›¿JŸØ‰¼î±R›EJPQ1ñïâ €y®äˇ­µ(Â,߯@|(F¯¾&ª”|£LÛ}®ÊÅЮËuj©äOž€¿’†2ˆe/ö_cè *ÿ&­<”ÚjîÛI:ìú™Þz›¤/1xÓQu,^_uœ¿þàñõ„µn¶C ÄÏÖ¤zÙ €t‘¡Œ©Œ[ýJ0ãÊmá-M”ÒÈÊ‘í7Y/ÁqFt™ŽvͰqlðÒBœ§SpöhO”ªÌv² ýÉ_ý5wI€t>©šG-¨ÀnîÕ ËžG+U°ý‡­÷AJøã¢ÓgEÓ~Áõ¯;ßÐÆ †Á@rbzÙ:¡¾„̼™ÜùLÿû²VÅYÉÜéë\-~„n=¹Ž¡íÒÈœ9}òƒ¢”ôöë d  çq5©B.|5â KHŸLq?^Õ.."‘·h¿•ÀöÊíî¤Þ2‡ 5_—ìDبƳKà¢6ýp ÊÌ_êcGEëüôER8~„Ø|öM6ŠE=T’A5Õc×;‡”胿ád"U°÷7fýõüE –€%ÀtÿµÆa{8xª ÖboÙÙÓ(¥÷T½Î_îÂF²01ävG$ônº«®xÖsß/Þ ñj}ž+ž éh]zÄÍ‚%تŸx¦Ì|4'-á5Ó“Û,›"àvxËÏjùÏ)ƒÁå· – BÝyg·–d]¬P `M`U3,øÂ$žÙ#e}?LJ[“Gvò’+6û¯Ü˜Gé6Ž‚‘‡+Y ʺþ&p“’r~â{`†d¡YœƒlÌ“ý8°µá¾¿j·ž÷@¾¤ýðSDLb´ê æ¼È¿O^ ŽŠ—lèÊ„’F©-äÛУÄl°ŠHz¬âÔñßðª–ǨÒf_Øû[N™µµ¥¼ýú¯=‚“˜Î7[»«#ëÃ’;´ÌÅLfú²ýþÅŽ’ÕR<`TƒU¾¶.Å…Ôåiç^.Yøf“{^VJ ½¥çEî2>û¥ššç½õ)üûœ1Ìí]²ÑÄó®Þ, #Bæ=±¶Ü×Åù'6}ê| éýžk¼<\ú6û—£`Ë‹+X6?û–BàÍ‚_ß®o¶µÆí·‚°¦)gJ¯¯ù-èë ÜÓi½Ö-ocbüê²\ãæÁÄ÷ê[¬)8~’Œ4ÁßÐsì)9¼Úª$Ìú6±&/ä'e /cõW*³tÓ Ü‘-£yÅTÿUÇî‰ØGº7EÅ.¸ì¯˜ýFðÈ~XT—b\‰ ¾Fêº,Áb ÆãMþÑ-v,‰+zÑÚ_¶·.Ú·üYê¿鿃€•ãjXF~îk™MOþ•á_ï¥Â±–ѹTø ±MJ>˜GÌ‹á­ý ®šÁ„݇{PÉjÚF˜ÖPÏIh¶jq¾6ÝòBEŒèŸ1Å=êiosø÷ZøKe9¤“éõÂЫ–ʹRt‘óçúGCRÇ_áü(JYÅoU³˜Y‘cäC~Çú­SÃqs?û®k„ïYIz±Kp˜µ!ÇÆs:LôÂ6ç¨9 é-"'Z1uºÝOvdÄÚÒX5Úv ª`×õ!Ó: 7ºÜȼR"fÃù¨ëÎ])9ô˜éûhwß¶øÜ{Œú~_¬¼Üí‡?Ò¹gìûJq½/f×›No•B¶Ÿ8÷QSoCS%@!®'‚Éì+¾Ò—É‹± ´Ø×›!à_‰Ikª_¯I_y¼„'f’sõ{СãO¥¥šÉ|O\Ý„ìˆðÜ”Ù8GßæeË™—ôËðÉZ~KäÐ~â¢Â(ô¹=Üÿ{Á ã›×i:¢·uj^Üè¼')ƒzÓIÇ£à˜3‰Å«¤àØ(›'롊㛯”ðZž@ÐÁ°4HY4½ÓŸ¸¢Äâ0Ãdf}Ð¥$!îùõvzõg*†Xf·(‡¥äS¬ü¶Aï­“Œ¸ÿÚ¹>§]Ú£][í/ðOüv&ií”-$~ùI5uŒ\MSYé¹íÝqñÌQþ?žå /àÊÙ.II#¥{¨š¼$×eÄÄF&0¿Åò˼ºi`n8•t VM©£¼Œ±¶ÞîÃëy…Ž1py÷J”bëØá tŒuR™6±ªÂ;¾Š[â¸ÿ«ëÝFmú¾—Š™¾öoS›K>œ'W­YêÀÔÀW)Y»D‡Lׯ\üàõë IÝ’à›ÙX?Û×hKªÁ´Â|âäT0Ê퀡@}Ü¡6”—4µ¶4y"ÂDÀù&-ÝgdJÆÿÚÔ@uóÆŸ_}SõJ ߪú’PL(ÃF‡ü­…™tüS“x3Œ€Éþ¥®ÌSIÊ&ÆðÈ á<ÿ QËÇBà¯ü#µe³È…—‡Üü¡>ëÞ³Ï3+ù˜tÝm9ýM4tj°ip^g³ßnV™´nq:«JÙOI}5MLg×7§ƒæSÚ(Lñ¬/?†µEâÆgÕ~ÁRÛ p û»v®Ä6­^Ø6ˆ¤áíÞz%9e•qãòÓ£†îP)ߦû-Á$Ñ•8ÔǶôøêÐcDÒáó€î2ñÉJ©Ž+>ƵÌMJµ*B±ŽÂô’78О¢—a’âèÍ+¢:Þú²3¶¦t„‹ÕÕl*þ0¸\4iY,ÇfÄ”ªøû_ã'å,ò^«°°‘Êóõ§š¨ó7Gàã…ûÑP[Úº›ï¿Y5á lX¾Ð¶~s,‹™’ÆK‰Ä’ÄZýoíÆ’†à}'T~MrÕm¯9di/Jçyàm#-é(Ãðá-ÞkÓ·§DÚ¥ü@'L‰‚•é±cÖ3ˆ^reƒÎòûx-@‹|}‹‰q»w›˜î>!ã¯o݇}­MH\Vg/DÔ7nÇûœå± /$t"‘*õÕÂÙ[¸Û,öS§€Ñi¤ƒHP|0xÜ÷<÷xmw:¶}Ã_DêŽ^Üë‡ÑÆrØojí|È&Y4¼/Á´ÜË•ˆ½: I`-Ðóp'ˆÉ~J¬*õwÓéOQü9èàж|ô1CçL/ž‹{è‡m ž¯Yû!UÜ#m>¾ß?(4ŒCÇìÖ:"\6!(ùfˆ&3$‰¥PiA¼³±5P°$ŠÉ¡GHð3»ìPò[·C/:˜ONGdâ$pOÜÏA_‹ßl½°>«7’ûÕï¦S[¶Ú} ê‡B­ê 0„qÉaXŽÙŠGÁÜíΕljÇïn¯©Ë G݃æed§bABù=3–i,úË_ßtíTLa}²=GÚR›½" Òqù"ï`Ô«;ýb †îzA7ú«'ß,+ÝD>õ^²4‰ÃÑ“’˜ ¶¿Íä÷é¥D0[0™Ÿ¿Üuð›DÊß%œ­†û«óê¼ÖæÓaw.îHÅlNÞ¯ÒŽØ*±º×Î’£ÓŸªÚ ?× ê3V£‹¹%\/óŽéX¬šà‰"Ûßr‹Þ ļªJW|”¯hßïŸn_M‚Ú{;Ë.öHÿU‚VY1áʶäÁµ§#AUÉ£Ëi™P5Ôùäã97Ôš&ï³”}Ê=¾%/ýö7(Áô±ú6™-UIÓÙ£Rƒ~AËf7Øêº§aK™éDwSl| úRÔ“qkmo&R‘*†Äe/fGƒ²äHo)¡Bl¨˜ï[uoÊe|ü¡sÚݶˆgGäÛ¶. n¨¤„.Éë›.¯7Ù;îãJÎ:'š_B‘j.h0VèÆÖÄÊ’b$üÔ’ E¬eµÇ¤¤˜ç:ÐöQTz¥ŽŽêDX¤‘²KXÊ<ñÊxð‰cåßÇÚÖþ¼.ƒXɸ¾ÿvcU2G¯~P-+q»´ÔVÚºÏAÛ>R(}X÷/eÉVãÆ ròÝÃ%Z£>ŸžéôggƒA÷‹'è ø a Æx~û%ÐìMCÞ“6ÃØÙÆ7æ Œ–ºÑô˜[*sC$°óR QøÁѸÏ9<Ã'zVŒ‘X¦ê´‘)OŽ%|€‡p§ÈÎ`%²à®ž©~ñö/ùÖ˜†r+4'nŠ5ÔØ ”¾†'sÐéhå™ÊɋܗTÕ Àz7¹Ï]»uŒÏ/„TõLÕÉk$¿ç+3Kzˆ–aꕽõt]0 Ň^ ÷“ïžcÙ¶¿Þ¹_$Ð_¦±ù…Zt›²vTŒæ|Œ4^ßЋ6;ÛMÄaŽ\I­ÛY0Wž“æ§ŠÿaÉ“2.^­pÅy"ýì¬óä¼åMÄrR¶OëKçCˆÏe.1r!΋áøÍÏ_韭AC#?á–9 ~ŽkûðNr$ éc0‚E™ßpsqþýÝeñ1^:1.¹@|–gðvò£}#È1'èCÆP~bˆíô”˜ã+sÂsÄ,ÜU ” Jàƒ*ßã†EΡR׌z—ÒHIÚ±ví÷~‡•A‚ó Nw+gm’½É ¾óü¬–+.óú˜YA?2Ñg}xÞ~èh–লå««èJœ‡ª¸¯ó÷úQL ÖýðUƦ—@œå•sÉÊ'™ŸÐ›6#Ÿö+Ø2æ9u¨Ä‚ÜñTI¼jý”V¬Š|íÌ(!G|£Hªô‡º{¶@=]ð!²V†ÿ$¨í×0vp?‚níÏãœîžá¹/ï†Áá¦]sñ`1á-¨òóÙ•–¤´6^&RgèÏÛ8J$âæ” QWÝ7[HaûÇ báWËrñÐ3äGVØAVˆßÍñ»œ~±ö© Fã×GuÁ¢æt#~u~ý} /å skÓÙ&ÿã¶%õo'&g%ûÛÌP¨1÷Ô×L¿QðfŽdEù“|df̓ÐÔNú‚4¥ ¸Œ:=ÔWW¤V-ÞM¶#2)¿r j36‚ôH˜"‰›o%é*(£„z艎9‡ÉT`b¬R ŒåX/â^Ö³ÓÓ™Ò2BKEœ"œGɼ°ç ‹w¯Ì*S}ûî@b,F;t,Ÿ¬þúÉWBXT@ ¶­a…ÈÍ÷#ÙçfÐDAÛâÆ¤J‘þ þõ½ÿ%'~‚fßÁ|iôÕ–üA¿‘ âeG‡:ò7S^iJƒò[Û’Å׉:?—õ j—tdÎèç–˜TjùÊãº)6þ±ñUö°udc¡LE$2K`ÑœXtÓeŒP‹Ë8Œ´‘Ü_¹Î$¾ý›ò…}£èÊ*c G[‘1O@óŠâ™/£öåà³€ÀàÄW«-‰¶K;Œoþâ&Z~ìÙuÙן>ÝÊ7ò¯¦è ·†Êo¡«É–©rjKÒ#EʉªÓýÐE‡»š''‡«ûJr±jH ¿âà oüy^)XO$9ÒeA¶ìîXß[/sN¡$ ofÙ×çö¹(0™Ú:Tr ÷˪%úŽBbé-‚eÇpáÞU®KPÿÌ|_‹×€aÉR˜T޳¶þbÝt-ж6BZŸ†îÈÝb—ÐŽ‘rù|þ}ç×Þ,tÖÐ'%(ÓLS?2GjáF!cäµ?›fjˆ!¶qIš9 Ë£G‡û]ZT%ôl% ¶7÷$Lÿ‰ç’ÇÛòÐ6u‹lf¬5éœü× „@‚ýû³‡ŸJƒyC™&ÜBŒ¢yö‡Œñ'Êך7ÏçRœ¼ég¥â)©øL>¤ým]¢#è›`«+½‘”æÜÒ÷~­z+òÌ÷†NTI ÿލ¡ø>?z¤³ÖËw¹ ÇÌ)µh=« °þFHâlj8kï/‘ÞU¸]qWý{¸ÃyßE%û“+«ºvè2í´¹6|¡3±¬ÄÍ0¢Œ‹ZpïëçÓKH]“¢æM÷µ6þO^?­i’xºOìy€n"“häPó3YÂ@U+ñþ.ÆeCvø1¬9bósoÝÜ"-ùÅæ*v4å§.üýŠëß@ó8ìSΔŸ„C¯¨,]‡æ8Eäƒ ÊBÑx9·ù¾u\S 1tvOMãׄ›Õ¢‚M½=%ÀåÃä'šš, —4b±•nc»æHÃbÀ—õ¨™¦„jZä‚Ùê½æ+•äè1—¬6ç´rw[®2ØX,o1|É-ÏøëÙ›Î(:\ãbé`Ë>Hekù5îÌïàîÛúnãgŽ*Ic½O!$ãkbªy#q¾¥óÈóÖ§oF§ qÙÞÉ,·âÐôÆ‚g‘>Œû.l!ù*QÊ}CõqÀˆ1û±Ã¼–ÚÚí*·Â ñ„Íøµ­‡%á™ D`“Õ_Œð3HÕ+ú±S/³ý0h¤2^ì×½Hç85L.Ÿ6¼ÏIû× &ÜF?IÀ}`k˜n^Ëï³4P‡+Âd5ƒÜ‰¼ÃvkܲõzŽÿ·ž€j‹›7÷½ºW"ÍGdÍøü„á£IÍA¾Åž&'¯×—/EÚ7C*€\éuDëþCQDíuCG>ÉŸ¬XN<êTõzT…k#^þžeLŸ¼|€òíŒew??ÚM {Ò¶¡ÓyÀCô_ ûu]?I_óRùQý˜BŠQ¡‹mš…¶±†94T&cL‚aÞ¹ö4ÈoÓl‹óØ*…d·ÞÅÍFزúáQ]¿õ¥:çb.bZîÛø%ED˜óC¦4î *—(ZÇÝHÓÆw~[­_b'>Ÿƒ@0=q‰$¸öÄý„ïy¾Ê©¥aC(ü* ¥ ®³UªUh´yt/ô¯–¨8Ÿ Ã(ªyÄU@ƒã©ë«ø·•ÅÂÄ–®oþYÑñàÓµc³aö­Åç#ð_*Âsš¹ÈB©¡‰áÑ|jíNÝ‹ÏqO&AÔ¬J¡ð§îÖ=¼f?c »<®ây’ ÈÛÂÞg6­í;o„Þ!슌=_¸p1/ d™bµJºkŸXŠ| W:mø_Ë’6G«\hÉ“{ööt,vbÓ6[m¯ŠýIݵ"¶ô­9¸˜@2ƒºìn¼jáãúÏ`*¹þF"²î_ÎÌõ|ç]Ô‡Ñ/ ¬.ûÑáè€Åd¨gVÃ~}’Ó' K?ey‹xu|¦?4°??çETÚðYd_ŠÃ9ˆ¶M~ n&.ñV \±M©#ICŽÉ""ηãî&âÕÒ¼Ê ÅÒÖ}'FCY0M^iîP»tes)HsdHü2ú0Ãý ã þmùÎ!›büèeM+ëQš´v×úöÞÉ]Íö*ï,õ~(oÇ6ÙaŒËù®ì@»O kƘôŒ|w¦¥B ;B—:ð®&ýѽUø¿Oöå—á»6ûÛŠ}Í]Åe≠œôÌ`‡*ùð×Ì°Ì ¶±„Ÿœ*`ËøâÉQ±xYŽH ©ÞsP »Ðî+Å¿èïP› ‡ÇÙ¾•ÌÚÉ#]Óæ¡§«}øÍ£Þs¸[×ù<ÓB%ð¡ó˳™¯ÉÊŧÇ;YÌñe)üÞm9ŽÊMêìÛ(Ùm«žô6x±Kæ‹×àC"rä—QÍÞîÓ­e`¤~ {¬Íñ„²Ò‰(íûã¡üúa m ×RM±N Oü«:’v/ýË×YZ¢ ×ýKýÒ‚5ëè ¶‘p—õêÌŽ¬%#‚K›Pü£Ò¨äF_½¢~´2Éþ^GHÆVZjÃÚOIäG4þ*ùö¨H!­–ÐFõöÀ®‹¬!W0Yï€ÍEuFÿ†$F%°&Éþ}-5 H“•H)/ýsÞ£Û’¯“ܦ<êWöVú®äã½]6ð(æ #öÅ™0 €-,Æ¡Œ1MÚWúY=\k,¿¯ÑÐ\•tHä•ו÷—oÕMàÕaµöëu¿ž)rOÔ*¾DZ AzÈR‹:)–Q…=Œ…=GOVCeB²’˜7…pýŠÚëʼ?¢X:CjK¤üÞy&%‰R²U÷#c™Åì\ÇßÔ`®é3¼mxq]¨Mƒ§P±ÆDE/(·äãÀóüò[°ËyÂá$|퀯þ䇌ÀªªåÚê²7½F¸>ímjÀ e>\º|d˜s¾›˜“;AÛ.ǯ¿é¬,Ê*…açî¨{L¨ ýk b`¦r §­Œ ¥ïœâßbíË<¾œá#%I]† k‹åâ®.n]a¯é‰=°Òñ©ÅR›¼##´]yñ£"ñãbx.Ù¼ÂËÞì{žmÁk×þ꟣aߘD8Ëåy 0z¤*$súÏ’2ÞÝ„rAöí( lÚôÜ¥éÒ×G}åÆŽoxýX{Aýʾ g½Á':yƒbêãáógP¢fìC°é:[JhpnøàÐa&¥é–Í9ÍMýä–dWžª‹ ѰZµ„ó°ÉÜ +a‰¾±ó¼»÷A_âûsK´c|ï€æÔ¤ö8ú|‹ëmðœÑNÐ  É’q|¿Ù°¸5L*VTÚN1O·U\%ík}2é³¶LÜ;ýW†V¿‘:{ÃG˜áA×CÅT6Ⱥï\W/Û´M¦ù Üì.&·ngyI‚fŒ÷÷¸ÒÔì¿Jí™´»Çç+€|àl•%™'+Ä—3Q©ÂçO‡Bê·¤„÷d†­{÷ÌŒÞa:æBy[xn^ïò›ø x*ÍDÔ8Š€e)pìWbÿ ­VíTV–qáGÛz@óïç ú(Ø…7s‘ß4=Ñ^Μ״ëêŽ_ª’¥ü‹W¨xÓ3Ć8¿ŽLg²ºŸuû›8ñ‹¨×Ô#´¢ÏäÎØ™Ãˆ9;³UXÄÛ…¸8e·Uí)Ê€#Æu…)[ß/¯#æt|PákÛ%ß´‹@ý`~VƒP«øä”ŸT½÷QRÓnÁ¿cdŠú×pAK`m ÷ X[¯bä aÚ­=°®>*Xµ8ÓšûköܤKD‡0Ëüuß0Ü PÛKfakÝ@ûU«Û[Y *F|‘;÷LIXä·;×DÖøÑâ·a^—’Îz$˜‹úÅôñ ½y§×]Ÿ`pˆ ^ü7öOXNF|íxO“ÑõLÛ\ü4£ù¡­õ:=õ½­èò®L¸Ôäû¾‘ɹ¸‡üñvZ£-y&Œ¨HÀ¸²]ÝfÚ‰ÒOüzX»+ñI5+$y«Ì_s# ß·fë÷:ìù“a¨‘ñV¯ÛÏ¿ ÌnóšÅÎ.æŠN/«AËhçº,  ê ¿–Ë̃ÖPï±0f],dEOR~€füëÐoB FËR礹€ÃÎ¯ç žhJeÎÈ=š0Šç–UùSL‚©pöê»|øéY3&«—ásè•bºc„ªÆÿhôMæX®pÆ­JE0<$·U†ƒ±G®aÏEµ††ÖKƒ|SR²}ñ¿Ñ£,€Õ_ÍJþÛY9Äñ‰ãuébëúÁÐ_96ZÖɹ8v!zŒtz[QÄ_Êþ%B!(Z¿F3+çB]8”Eî­¶óÞTCÞÏþñà‘,ÙU¦ô¨]dŸíNQ9ýÎxƒó\*Ć~#õ¬PÌiãñ°L{](KÂçˆ<¯^AЃ…#þH˜"ji£0G0gú<8]“áÐŒðDôtoíþ%›ŠÑ,´à·`‡Ti¼Ž[’ —¤:ú¿úëŸ-d8gÑ0‘@_0ωXŠ›Á"žõ)?Z}Á7!ŠÄ›'^]·oå e  „HÀGä×'ž õ‰îšâ{Tws3M’g”˜#~µUÑµÜæ«F›è™1!X؃]+T **@ßã3ÕÔ;;÷æ0­~FZëOÓUBSÏQøÜ) ˺P;¢ñ~Yô~¼ÐB:_rKcUM+ƒåô¦Ë2Eºâ¶¹µ_–~õò¾ȯŒÍmr¹æÇ‡û‡âö;džõû7íIŽGŒÈ‘Û/[zËNF3»ìñ ¨|·uXtoäצ•a<Ø% $oå^õÁ¾½Kºçò›ÀlË”ŒÂËs\î:ü(qŒ0|uÍcO0¨  ¥i£ñŠïÓ’ôJ0Íî)3¯J$’j?\ù±~æ :1 >4ég#¡“uÇÎ'ŒG:Ð ö—¸×AÙ|÷(øD¬’ Ÿ‹»ìSÖ!_ûûö«5·ÏÌ hx^–µžøÿ÷ýS4Û¥x{š?©Añ>[äDU]ØRØ)çÞTªuýçÊÇIš[Ž;ãKÝÏ‚é&P.Z©Eö‡ÊUáŽäE3¨‘Ø»¬}÷:”m¶ ³2ê¹Ì•ª¦;“UÕ  ¶›¹yû é*MÄ*ÌÑ qT#YsF'ä÷Œí0EÇ;Æ‹:³fÎË'VÆõüF­¤È÷Ýõ<æÝÌ£Þž†Ó)¿y“i›„üëI5WZ_ÞâkÐi,°–:hÝß[«ÞDÓ CÖÎß¾DI b=“dq×*ë® ‘àóŠ%?Ì;¾ûÅ_Ûy/æï<…¢h3ôÚ{ûÄýõÅú0C? ñªÁ«6¶®àrûiXa+þµ5}Xµ\ªW!)'ƒä«—ôC`¶ôð*û¥¨ دü:_§XšâD$&ªœ¾‘XPàȲ8äsUd/à0b_SÏÿ™çÍ&›‹•Pþ´=~Ð~z¿¿û‚©Ø5@Ö]x²ü«²³ä®oÛá$a¡y“tö³;E²/[¤¯lš-®¾õ®FÚ·(=Ûõý¾á]Á|ô[¾$±3ˆ} ÒwœîZã7 ä‰s{îj±˜ü¤¾9M¦‹ âr“¬)1o}‘eÏX¿pjo™$">èÖœ/Ä"ê&;ÖÅNi»–!QÙZ/²÷lu˜Ù¦`EÓq5;LÓ >Õ{#$—ÿÀòPù/6£DÞ/qïÌGŽÇÁÏfücœæ£YįÂö÷Çþü~L½˜oêr ×·‘îåɶ«Ûº*?თF¥÷„òõ“5i¶3_Õ–Û}0mÒ·»ÜéeŒí…I<~Û àúö³?mC þ}½têVñ* µZø„<$]œBÛƘàö€j“2$ÁŽ˜fÌÍz¢&Wd äµ×ãNÑFzÏ9Ù 4`Dmß»fÛLàX˜^š«JÜt "#¢JZ¨Åˆ”î:fÖ.A"¹ÝRtË+FB=¤©Ì õ÷}‡ã-ÛæðWÅiBö€Qíïk¢†n‰‡óÙ6Ã<¦êü.ù¹°ÞZH;1n¥+>QW¥HCŽe¨Ÿû°–sH÷e©w,Ò,B“9ËèÁÿø«L˜Û¢ý …½f{S>ÒÑÉ©f³ vûÂêç7 „+×kôÀO)<=”X­Ê¢-¾o•qˆî{ƒÂ¨Ììá<†ô¬YPëf…e6wù:ì–ÿlà ‰ž8¿{±-Ï€¹¬Ò¾ÐòRhº’—}ìޘͻ,$EñGN…6=d“'ÓùVÑäΎꯩ²¸Êµ™ËÄJò‚sòÅ«rtŠõ“iÏqõËÞÒ-yÙ4°ÙíÜÅÉéþø-Ë|kš_ûǯO”_‹„*N¹æH¡ÁQ=84t©=*}ï`ÞiàJ¶<¿sØãF/Å+Ý#U«X±PÕ/þÆYXkœËûÏ÷á~{5¿Ô¹½Í•ÿ}ŒÝ‚‹7i ß¯çžíW"”ÝO?ú&È•š°-æûÂRhµ¢ì“—?†s4… ãOòØ!Þ=UÛ>°F àeÑß.| T¸q騌ţú!G³„éÏ'-C ÷×x‰¼”óqÌòÅýà4“¦ræb4 ":¦ßÃåc–ç/IFé® p‚šËO'ÒÕâü¹Š©G‚ŒÏòðˆÙ;Ty¯€™sJ*Î9¤óö(­ü³±õÙ%¹™ 1æþºYQäsœÚQP±Ž £ ƒ5ç[4<‹ò¦Tòs‡Ó÷›²åÛÀ(:ÿí]`ššw)îÃý×K#5ÔÑ’c}ç ±f\Æ<†sIÞ ‚v³~ÐËâ%*BÌGý(ÏDŒ½+—‰'ÔPóçÕ~G¤M†~ Æú/8屩I€þÖ‡%üv눉Ͷë k½3Ð5ÖÈ®±å_õšr”·n›ü"Ó®bJù×&õãØ"nÕ:Aॠ^ç\O»×Úm1|8%³áb'ß1Ô?,lųµUó‡u+&!?nP‹ÜŠCP‹ó1¶´ŽÒÇ7 paI³”úkÃX*DL[ÔeJÜFöUᲡ®=CRή —EŸ"™ ·—lé’îÁnðïÆâ_ßII¿!®›ëͼe6×ÇãuC,×o§Ãׂ]ѲÉĨx\ñ\ùëÅÐÃÿ¸ìæYßYÇû€ÂO-fÖ°bÁª]$ôX0ß×qì·¶x)«afDmòÕÞ.¦h¦°Ò] àŒG³¼QgÅ‘¦î(÷Õ\éE½0cV}ÒŸw¾~î"jêúO‡h'å¾f3ÓŽ{ºÑ¬ö’Gl^¢e®]Z„?½Ÿ*¾€îŒNóùÞãóƒí>&7±n©d¨šJ”Íx4ŸÔ࿾Òd…¾ž¡Ãó¾Ã'çCT4¿Y?²á,^ÎÀ*²ÐF‘Ïõ×ó§4#×ìˆmF±×ªjÁ×O”wþ !sî($?JîxÙÉ(I7þÆ fó/xàîì:‚ã$XW ©ƒÜ' ( ýÍzµEÄê.LxëßDØtà“ô%gHír0J·×:8—Æ=tÀ –ÁÎz°Ñ’¦AkÛ˜Ý_%‘NýþvÖ ƒ”ö{k•ò°+%óCõÚãëÀ:š p£U —•žÒ6ÃÅÙÎéNÁ‹9XH`¡®z)zî} uöT 'Ì®ÝZK#,´Š¿9\–VʜŔdš•ï`}ÎÉ0-Ks·mÀÔpËß6§é×TR%g9ÛÜîd”ñ~ RÒÓ†D0Þ‹GÛÊÖg˜)WÖ˜¡K ðîã[×ñ¥£©¢]ƒâGØT༭Ҩ«•ØŸæò|ñ¯ÙlŽÊ'‹•Ò:L/ˆû_©ã/·øáGC"áܺb(ädAmu©ÏÒ™®­m «œ)Aù„šÑßY3Mãr ìšåÏ[!ìO;dPIŽý(µƒoìø½FM8{zbÿ{ÜO$@Ô™îò7š/a¦Éx1ƒÎV¨dø]YH/±Y"€2OVÇÝáeù|^ ùT6—™-¨ïäBÕxmçÐÊ·šzÁ„F—“ñùûˆii ÕÓõ…sö•½ø4”;C) ó­o…}þ±tKŽ*Aýö,ð–xïn‡G8 o¾þÑ/bVj…T•uóT™©…¤â¨g!±•ýÕ≊q?™¢‡òºÇµÄ{’Ê»Wv±˜ ¼“.|R|žÆãÒOAd87"L,Ó›ÐH„RvtÚ¯IŠqö¯JÌÉ“ßÍ“¶t³²fþå\ÉFIJ­eö÷’°©\–Ì-³ŽÔå³bR¤ÌÈà“èƒõ¸-ƒÌ=°Ê0!RL×ßø— X1æL 1¢Ç$œ“¦~Ǿ0 ¦ŒÝhÐV8}pŒÚvÙòÑ}.iƒµ›Vo¤á9ÿÚ ²mÏ”ýBÚÞ¼=šeÁ¿Þ†õÒüf“µEk`@EOY{†Jço™1­Úâ¤b.ˆ•þUâ°@\cÖxüͬûºš¹ç6D0eäg£ßMJís b;`¾2Ü ¢ð½„+ØXLûy©ãÒðŪ&]ÈÕ&î· ØÅ¼7W#'¥ wgQæ–Ç1ˆÓ_qAób~£3ýð#¢¥dí¼ç0%ówoüÕf±õBÔ <£4²7tœ8¦vAOo~~Ò9X¬dõ¸ Gù)8ÈVD“„ÞÐòArŠ)#È®ÉóaÐJài£#á+ìzwí·=Ê»~!Áë [@Û†C.Íœ1 I§’̃ç$ù#¼±«N+[µ•æµ €UÚÙ~aˆuɬöÕ†Ôpæ æòéÌ|Ø×³›i. ?Ÿåµ.%ÙG šb«mÜ&? ›ˆ0øUQÛC–ã¿Ëà!J‰‚c}WUÅï§óz+!"c?Œ*Ë—êîûó³ùÜûP”‘V&Iãs5è4ÛÄpœ˜¥vaVó6^lÊÖ òHŠ©O”=F.e 3üʼ£ƒ¬ã£È©î,udNng‚ñGg-úé6ܬV,¶f­¦­ráý;ê¬Õz>H´pI²Y9 À oðšñ;ÜtEºž¼2ÉÛ1Ã9sglvùŒW ãøøÝþ†÷M‡k¼,¡îé_¨g®.ÐÂ3L¤dãåOJ¤~ ~i£ZÙ¸^Ò³¢Ó¸ <Á(o ßµ³©©¸Æ2A?!4ºé]>dWu‹ÉA‘ˆ„_À¾•¬1L8HÔ¦X»èDÞMd_n¡S<+öM1Ê‚òÍ.ƒH†Ü=ÊF\g6m3³8¿­n£{Ý™?á²: BxÖC8š£_4/ᘪ§c˜¹¾b/D•|,“œúa.frVdE«ç0^ëcÐ þªC¥uS7‘Õ[æë"º~å/‰N>Žq°ZGMÆeÖGú!˜²0Lð Ç&ÙÊ · à‘?I á`5£Ã>eÅîå‘.cFCÇSW5ŽÜÈxBzU MöX—«Ø‘ª¡qHD¹¿Ò}†qìlòÚóïoN} ÖĬÑB^à3íã!¼V|ý|ÕÍ3®vqüuœ™+¦Œ—ºkûŽª Í.õàîúøuÅ!}¦æ ¨ê•pA˜oñ£’ñÁèÝ@ÆŠŸ Ëc™tйû(jŸÆç’—ò¯N‹}‰$ZǵKÒ |8&:xö‰àÊ>çØ6˜wž‰³Ë?ù6é»U %Û×v†ÚüCç]`ç‚zù‘HŒMÑÕ8-Æø×b‰R `¡ä¿Ù…îIö»C~+º‡T*îÝ7«¿ÃšZ£oMSƒÍ3˜¢KÒj˜cê˜ê²d0¾#ñy¶jÜ€"Yp¬¥×‹ÕøÝí¶$,¼ GŽÍ7øTû·Ý‚z°HË>õßUw†‘ûç¹½„çÿeÆWü9q@RA‹zg¯h²^ ÎÝš¶„ʼnçWš†1&7V,Î „ò7O$b6T9Ö´ÍU¤1«ÙÚ•{Ù‚{2´0üwÒ;"‚sTMH!ß<ù€—Åðã¤VJç®í±¦ÃÍ‹ƒñÒˆkÝñÈÖœ˜Ä·ÅžØî¬'ÿÝ//TpÁÓ‘ÊùF»í¨‚ÂX>Ì'Aý~ýÝF Ä·qàû ~FŒßêøqyÂù™µnØ—zò}—GT(O—ÓA;a4»Q¡‡#«À-ÁüUëIòoýýcU|ñ'.ˆ³rÇ£$¦ÛpÌP¬ •OÅYÈrù1xj5Yr•Ôñ0Ø”Q“ú’#²¡™doKCÊ16zývm‹Ó¶u‰5¹`š·K#<@2ØâÄâ oRX“uyœÞ+·Âe𦃽ãâ+b?/^•†øéåEëÚùÞ?M¿ÚË_æ^C5 (èØ™,y&bL òøX/îeï(ft‘Û7{ŸýáÑ3$8gýÍî‚JQ!ï‡}Ÿ|“SÑ?^ƒO?R« æ%ןO~q•McOÃÑ«½> 4éïFø¼Ê—#ª5Y³3EØõ¿þƒZrÍKLÛÍ«|êÇ9Èßöç“;¥ûÙÔÍ![¼±•k„˜œaø™¢ØîÃÄXöÐíP7Îv¾˜è€´`xãß+Ó†”5Ë%O’6ÆzìÔ¼kF+ø‰§ø‡¦Ìá ú¯×gý×ëóH½h)­è¾C»#Ñ1j¼ +Ÿ?˜&€õ¥ôªThçºöŽ¹È¼ó—@èò|б(éPe¯ãÏöÃô¥ÕÎC9zéícaºw–§¬O76/z¸Š4Ìx.Yž©‰PG½N`ƒ\`žT9›^dÃŒ[½pü;bŠºÚ&„™ßV¶ÏzØJŒâÆÏÒ|‚Þ- ‹Cñèˆ*ÃY‚„:¬±ºW)ÆÀL î_å§âÒ rÐ) †h6&ý a;”2§Èƒ#›%`jzq'L ³öiPútÙæÏJ4J²Ë•àÆÒY0^ K¾¥³|ë¨4‚ZwÄ1NÒ¤{3”’eI_>ž6•›IWËrÜݲÐ-êaÍÕ%ûox¢n¾%®¾,6‚cÒ5øJqœC îåüK`˜œµGª9×¾Ë0澨ªÊ`/F¢*ú)÷7×àÆÁá›ÂOÄ>ÆóŽ5•?Ž*ݼþy~Õ°ÛçíV⥦UØÀ\TÞš ^ç٠Æ>nwGæaÝ[ä±øR_˜…WÌîu³™[z:X³p-4&ýÁðï­ðÒ( êœëZ$—n–ÉìôÀ—îz·—Ž8”e'ÁÌOëJ¯‚3ê;ÍÁTOF‡j½Hú¿È¸ƒOM•pQËåäÖˆïƒËж©DÇ[>*êź¸”_ÊnÛ4Äó©ö¯¹Š—8dž*€Xßôœ/.ØÅ¦~]9£ìƒÌ{Ó¥WQ>Äã+tdŸè¤rÿ­wU"èç²ç|üš™æIorm$Œ ¸º²8.!dº­EˆpõÏös ‹~ÕÛ$=ŸüþbDÿrÜäâmÐÎZ݇P*X{G:?ŠKSŒmû»¥?ª{·2Ó ¦ýz ÑÓR-º'§­ìò7PHWîñg÷o&¯ ‹)>Ís!û¼¶¥µ_ª»DXlÈÄ“€ÊýšöÞúd*y3á]ðX¾¦ó.½¾Gndpáý^¿ì½Öº‰éRê´u‡ä’Ü©y'›@b6”(HÑé…Kœ“þª"qÐpƒèùµªaÖr7®\ Ò•šÄBY)‡àÍ#ŒìÇd,g¤éü]g@-¸PAR¹â¯<æyusKbfêÇymÇAÆùü@XTpe §§(noXs÷ºNf-VIÜkƒ9ƒ88ž ë¦E 3ܳQÿš€fˆZZ ¡4’óKÓ2PIùó™óö{½½¹íuþwQëVœÚÓgHvæ×lKaºž»§y½‹m;V—QI|„bY§ùïòëÏ£e~û#Ñ|eŽ 'Sõ¾wÂq Hþ5ÄøëV3´C$œ¤sîçX ©[†dÌÏÞèçø&µ“ߵŨãI ²F/´]¿ “7 aDkcËG 8w$σ¾"˜3Ó 1Û›bc¬]â6]4+ú-}š‰>虹ýlÖ.ß ß¿}kî‡ü‘nž[³#ïóª \ŠamšU¹Kj̹"ÂûòçŸ-ê”>Zû¼ø6'oø¹8qÍ(íLš0|Mä²›XU B¿’ΣàÔíÆ‚øP“F Þ›Y²Z Ì^ë%FÂ1.â5Z'¹!}yÐ{—Wò}’»Ðî´'-ÝG÷°œŽ±Íøø-†ôôœ€ãQ2ýC·*]ÝÍÿ@šÌ$-KöëÁæçtçE±Tÿ=Q`&û`Á8Vkk_C ¿#Õž6ãoЖÙϤjP§h†ɆVÊÝqY°`=­d¸ßfšÛµüw«¿$  ð4ƒ¢ýËG,+úëß 5/9A{z\¯M4;ˆ"R=Ìçx®'uÈcçx``øW˜Gö~Óÿ °A  à–šK>È.Í…"!ÛžÈÛãÎ&Ê'zó¶·u¨M}î‚y8tó£©R\"w&¶d5ϲåT¤ øØÍÎ!+úrã8âÐ@¯]ˆHÚPœfì\O ˆQû°kÖÒ€fVõõqÕ¶«92Mñ÷R¾½¥ƒM³’¼œP±ap€Óß‬ê±?΋e}…YŸqûµRÿ’B[ÀâmÜzú{bçŽ?€êÜÊ"C^Æözf™C z›Ž.5àÚ ï%|OTïFÊ÷*öÕ8ªëÞ}ÂÝ}ò° ²N­ô~Œè ¢ö5ŽaFn¶e3‘W)™*ÞI¦ZñYè—…¾fÃØ'ÔðˉÎN¬É&Ïb}P¶‰÷Ñø¯=œÿ ËÉ™JÆ.J¾n)þ¥bÒZ¯àûÓlrɤác5SÈ)(Or×Í»²t!Ã=í’æWvÍ´¿o>Ájò`ª2æªkU^‘4bY ´h:8þÂö“#M•q¤ê¨ZðAÂC§ Î_ºï³´b´ÒT“Åè nÐ+… <ñrJ•µ Y£;­ŸsXïýWóì+äï¤|¬ŠB12Îîõ7ûo Tñµ<Èý¹üDÐ{aÓ‰³z±® Uu²}›Yô·™K¶á#Ë–|íXß7§óh½vÓ`d'Ÿ)Ýú…„ñúů‚H÷xbþû1±®`«Ã@êš› ìÓQŽæU£ÁŸyyìƒ1u%<7ÍÉök‡'¾«¤8ä>\¯Äü4`+Ñ,ÍI3•ãC2ØòÁ÷«ß=„0{}<7šS¹Û^¶Ó;猯_ù ªä $5ÌÈ;ðRè4dËâóÍýÍ4óUTÙý¤ÀÚÁ#p,cد_Ãöüæ b ¿\ŒÒ~0h¦Vû·Pè-s‰í~ "ŸöœW-pŸuVšd Û%ªÐ¨|Kþ•’˜ûHöý0:œGMöH‹p“Ýti¬²´ïõ8?;Ó3‰¾¾ÈÍ`$õ+´5Ä6ü-{:„Þæ¸çùÂb|Œ&‡ªçû¤á“]¤ùªƒ"´y‘LÓ†\ç‹‘R,–·',ÛU@è­”ZS&þlÇs™&:›?I† F¾éIÈi«æb††2òÖ³9©ÔC…3Žˆ…L ï¸ù¸ “ú…í-ƒgÔ>vUwAÊŽ„k…Ÿ¼q¦:™ªâÌ2Ål#kÏÏ'´ˆeZ/Oøæùw9üCЯzh@±믯+hHâù×¢—PÃÔ€³áΔn´™Œ]Ú_ô¬>R¢öF³ÝúZÝd†¸íÁ#ë_ôŽNÞs'=«×N ç9Ô—nö+³J¡?X4øHà£[Kà ³ÀY»ã¡÷<öCÀ˜áããç.Ú.¸.³øž‰ÏÁ˜NOA±`tÕOÊà›ð螯w|¯A C›Çñ)7á§ ”$˜öƒ1Ñ’¢ba&,Ѷ¹í?\ ”ö:ØGÞI“9~²£~'CñsZÓ:-wÎb’HéòU qö;³;"‘Àß9Ç+ã·³‚GCàu'Ø‡ç´ ‘ܳ…ä·­4,3á-¼P¤«°Øü}ºÅê3kF)‘\5B¿R"¯šoНûG8çí ˆ]R>”:£Ù–‡}Ò¬“óP­âÒØó×P~n¼ˆÂ"ºdé2l±iü^b?2[en~ÐãÀÕü Ûaf¦rÊJØFj> ýUÙ±ø Exp”î¥ÌåžÄìô²M}efâ üîçjµ¨‡þ“ð"ÉÖ\,t˜piœC¶¡ ƒzÎÒu::p¥úH÷½;(Êã*—¼é„°k'SK©‚WwõPR;@(ΘÏ—Ú›Oú¥Ѓ^NŸÎôxõeüæ„$*MÜ¢i¬D­AiúµÈèï|Ä|’vœ?XºB…gÿñÞ¿¾T~ÃÃ6óú÷ÔëO¨8«“Ø4íìþÒSêR)“r¾) ÉüdRWwD³ÀÒ¹ýðÙ¼ óúΓH’ò5ùëýB§l­©'ì² m‘,¯Úì,á<ø!XŽ' ^µh‚ônÊGbQÓš?d¦Šÿºâu=ÆÒ8ü ;„5|¢"ЇÖú ñ7Âjíæµ .wÜ%'èhÇ€¾>:ž¸ Ò¯Ëá,Ÿè‡9ÄÇ:HZCbuùuòÑA]Sv³Æ¢Ï¼Ú!µ×uí`-ÄØ°ÈY Ñô°ç#UĦ‚A‘æâÁҬʋqoçwÐMLÊ?ן!¹ÆY»'Cˆ‚üR8óì^=ÂrÌ¿| ‘\ a=+Üè–8·{®þÂNá4þîâ uu º•¥xª›óëÌï(£¾?¯½E-®BØÇu?™)!菱¤ÎöåIöKOÕå4Q›T€ÔöÑ/Ýwu7 šƒ§þ&‡”A1îKÎû²R¿³­òw¯–OZkéíñ˜€]È>©‰z@´äpö åXa¸ÝŸ2ÿ–ðSdjf˜Ü£®‚z }mTÑu¥mÇ'ô½ŸWRäUÊ?TÇØÕŸè*1Q»åT’ÖK»@Gi¸?]ž¥íA/:žTæ¡ÑSðk†Õ`чH»lŠ ä\‡¾šü±®Ëï¨ÈÁ¶øôô:ˆXÅÁ÷\5™}$êèöâ$®ÖÉ”R²ËwèÅf®±r¤àxŠÙåàáÑ'æžSOTm&Ú¿_Ks3ÀJ ”{Pí¶—"C]"P\«T±‹õ*3(…Tÿê«A… ……f 6ÊŸ/èë–¬D±/…%®…qµŒ›¨ø=8ŒSØy,xAÞÎTǧ-Q_V—/+æ*Á§d•5éù*4ýz’;?Lôh?XŠ~½âU¥µéÏ·ú¡‡”zƒñ:hØ_q>­ÓHê¥â?Ù‘*œïAÐ*À’ 9,Î<š™bÍïþظþ8ä‘Jž$/hëÒ‹Jô×)¡yˆÖn‹q÷ ¾8l¤PVN)½p<…¯ŽÇF°n?iîÒûÓ¶Œƒ©8dZxƒGÓÄ»_7{S×WAªmÃF‰~YŒý]¯£'ë™Ê~¨#´Y):Bʘùæêy†äìýC>t›‹Aì÷w¥ÆAܤKÚÜóYøõ[›AÆø/4~w!¦l1Qø|[]·v‚SBA¤Xžæ%OåT—Hˆ"¶:¾-LÛõº\êô¾ê7‰’úŠÔ~7£×3þô¥ë|Í’Ôt¿\ ¹ñ‰rã¤>}Ÿÿ.ö c©m¦ìø¡Øu<ìV9äO†Ðã±)†È úΗ5DKRîãK¶’z—–ù¦šܕϯË#mõyÁØ#Hᙦ\ØN‘rFÓ«‘fkûkA5`Í¢%,Él~G±:ˆðhó†ˆz D›o–2¬µ?ˆ–<ß;vH¿q“”@ä¼o¨6J§ñxe@ðÚüB½¿+u³Þ˜ ‹ª]@ët£³n3äkí‰Oi7¦¾Êœ× _ü&fbá¸uÞµLÛí¨—Ï5µßöúÕÓÏPÆóн«»·&b„ì}1pìa®1¡®ŒÒˆ¨©È7iÏE?þËâ{B`H”ž&j$ʇÂ%½«^‰û¯/˜õRþkŽIåĬÉ\/ ¥0“æEèä·Ã<Î-¨ìZy^‰¨ :^Ó x¯§»Ô5ÙÀ0¨úáG:ôܰÛD0ê+÷@fÂÉø­ØÖQF±;þ˜@ˆ¼À¬z' =@¥L¯Ø¹©¶gÿ¦„ ?ºòB‡c?L¤ÉM% uöÒLÆûÅþ{ˆC%‹“,Rv8·×ŽRìëíc2JÔ˜‘ö;úrE‚ØØé®O±å_Î0]­n‡X¾¸ GìÿÈšÁÑ›7Ÿ®8Ù¬Wr<€alZ‡óÏ'ž^6»ïšå˜ú&‰š<_6&çK–p×oìínµ0yd@g¨æ:Õ¹X‡¸¿E€yYw+bšM(›6Qf×åUuK=¬ôØYx9“Î'ºþº]OË+)z¨¯y’å«­'ÌG4‘M «Ÿs Ä:½4ˆm3ž|,jÛ#Ñ’…Ûi6Ýa× -~ cb\›÷Õ_ñ­(IAæ×¸¯/üÆU‰XŸ‰•å½Y^ç}±AaÅÇbοë9önÆK‚_ß}—Ç7cÉúl.Që ÎèÙ–SIþö RlDʵšþžç›IC/¶z<–5Øá¸`() ü ɡy .þVO+n®ž¸ò~­ø)(ÿ kŸI¥ã[¾¾8‹y“$ªí C9¹óÙä…i´­×¬:Ã×4×½¬ê™+4§["WGâUáI`~ø`8“„… -A·YCDP¨ÎzÀ÷-» 3 7y‡hƒÛ;9)TLÕÝø >-Jnn:íÇE—%hÞœé,Øcà"¯º»ü¡¨n”k€WÎbZ>FŠJœ$¯ÞHN¹ß™ÁÖö¦‰0ëRíF ´Û.‹ëùϨ¼ã~gš/LY18Ø @‡Šz³ýmu¸$=Oñ{ÜI•ƒÏ½ópYùŽðì(w®²Þ."u·.U]¤šþŽÈD$w æ]A !’=<ô8rùýÛÙêIíó)s[JDS?AÙÍäÖõ#ù@¿Üaf¾Œz^+sêßãwZdàg¯=Z [_ïâ9×gÞÉ“` *)Ú0IšÂJ Ž ²X1Ý*²ªOÌ>gd6£€¾§}H滀a0èÁ»ßa‹&ê »H°a“Iˆ6È3Í{_"PìÖ4Ïþ‚qSŽ.$ÝI©AsÔ‹˜@ "YDtÃñNÖKN¸ó“†»?*X÷Æå{=Ñ fW“|qÔgñQ€g1ãK_ɬ½Kqñ] ÝÈcE `øsß¿©®©t÷2e}œÄ¯£¥hÂ*öß{dÜx•”ñþ¦ÑÉh”Öyr˜‘Š34IP^Uû~ðß hÔí×Ë”ýJtÄ¿[£˜9"LÞvß´¿"f[¹Ñk'ú{°„Cöù-P¥‹b¼Ê±eQêIÈ£0ƒ²Ù¸ÝÜÛëœÌuˆ»¯âõÉ™t¢•¹ˆì‚Ü¢Çñ`±“S,AôbõeÅnf¤â³æÚVW‡¤Óí"3>Åõ+¿×+yb!8ö÷q6ðç˜Õ±äŒ[»IÈÏœ±Æ Iî1<ù5œŠ©ÒXe© Nàç<ßÙIÊXd4$â‘f½'Có“¸zã×6 ¦Â ))¿w:˜ì ôm>{y­è“¼´aBKDš2Ì.Dÿ òkÑEô·Äp–¿ÅñíÁ‚9d¸Î~=ïœ_éõgõú©ÙÛ·úam~qÌd%¹’ü8*µ£3Q h êusLyRpeÄcìÛMÏßrQ¹”¯cÔ/á–«¼MGvŸc^ÝtÌÑҷȦ×v•f¹é<À€¬CÅ3ĦˆméBíÙvùOÑ+¼×!@:¯x#Û#¥Kà~Õ ø W³çÁ6ÐÁÏãñù±NNš¹ÀñXKÉËE/ «&ÅÑü•Õ AÛí´y=‹cÒ«~َߤ‘Í)¸ý}­ò©ˆ›`mQÁšåë‹û0-C>áêÑÔŒ ÿÝ‘1š]B4<•x뜈Ù{èà¦{w%M4h±ÈÌù`ûi^û¦€ý³ÖgÝðcVh8Ýb7ÀA…Þ¥îr¬6Wãë‘/~‘¸S¾ŒkjÚ7ì_ž¤{ȸe„ºSð¢›W=í K+›­ì1YƒD†b|,0}ð½žëpŠh½,XJ¨æhc#±,Ϥ2:ò×ò·úR:ºR`É]€…ß,[Åʦ[ËÜNã!†fŸ£bëµYYa^¥qºmR¼ÿ½aµU1m !_aWrÒÁÄ1Çå€"ÝØ=ÝúÑ4ôÝ Ã jš9×®ÈÏ¿þ­Ä®¾?Vô–Â~ ÇÄTååŠr‘×W*·‘0ypÍRD×UáƒÔQ<|ûŽ¥ºß߇ÙƒäYMvråÞÃð –‰¾KéïžþÿÈPWOÕôýÞA陎²èสüÇ¡ó±Ç¿„/sRÒ#¿pûÞ­ Ô w‹ïµX†£ÚŸ ü¬ò”[)ýÊ=lòbꙨ·™èîGãýòÙÊßIÙßxù“@ó»y¡ùõ‹h%ÕYÞÆy¨àa|,“O#vÖÈ|€åc&74^À0ͤ ¢hiü;ûûœþ’Ñ*ÄË6œX ³ÆÝìH\îÚMŠ?g™  † ˜Aö§ø…© 4%RÐ7ê9×*ªW5@srGñ×öºìÕ{ùƽåM06NŒÉZååû]À4/·ã8±3ØŽíÛ:~àGÂ×€”°ó™°DÿfvïD´²GÍa¤ïƒ¯Ž›»U®ù¬²ÇžÏYü÷ éÅÃCÈú» Ûâö=úÃjúìrKèaƒš)GÁõh4ß@{ |:ÂkÒCö«[á®íûaúê†ü91µVÀ'¿F1AYüÑ€Š xøí:² I:ÇêÀ”ýlítû/øßØ™"ÈÜPªþGTV*µíþM#Þ·ëùÐU€9k\nWû¼eoÒ}„² ]‡ˆíÒ^ƒ-í–»ñ¾»Ë¼œ)¡ñ9>äÃeègg´_¡/¢‚žJ[N…÷a°¬d:Ès—\6#Ó¥3ð'Ò6Ve§”e¡#É"(Ë¡¢`Á–3V{CvöÀ»G ?:›‘Ê3)€Á}|CEwòá ݳîCŒz?4s~SvIJáùzOtÙSd™Rjó_·C}<ükÆs]Ø¢¿:WWNœ Ê«_eÜ æßò-F ¼ÍÁý ܵ€õ÷ôƒÇÁåÍ—î$m¾…‰\ãlÁ{í"9XõÀâÓ3&e¸6ûá£YFE\ñ‘Z-£1ezóŸÌ]Ôå¡XóÇXTúZ1ZyÆ›¦ ö<3µ[‹¶¢\¡ÅTòö}aAÞ\ò²u«·Û¬û2½t|WÇHÁc¥Û~(¦é §ö)¼¿C¹Ï2ŠÚkýì|¡ýŽ.ûÙo”**Y%ØM+<(Õ´°ÔèV+Ú¼‹@À³Äub…‰˜z°Íг5ƒdë²Rt„FDÎ6™¡)~1ÜP’¿R2Cßs–jœ|Lb%»ž7…iÑ,QI©“e:Cï'8Çéà'ÓêÛè¢ü3'bù¹*|øëäáɤuÀwVþøaþ€±‹h”& ¸ß妢˜žÈ‰^Ä(ÐtÉo‹0Ž!åßƒÔæ"³OI:ðq Qʬ¥ŸI!®Èª½½´¬azƒ9K¥FáÝO_rÆyêo@*#xZ1˜½ã+ñ䬊Âðøqz™AÇ#àV} ·íšöy?™ëP—Š`㊿}ã䪰¡õ'ÿ¯æá¬|>à’_뫬8N)º%õÖSj­·:öÌ#Ò‘–zó\;çve`ˆ%¦#„ðÒ}:»ò¹²ç¸ìc}¼W]^éS" vÔ3G6PvÚ–CôßcçÑÆ‡Cä„i(êŽI³„¥Õ¯'úx~Øá‘e©#w›ðD'eô™ÛEØÇ÷ÁÐÑv/w…Ô‡óõ²Yºm¥q‚÷:ú­¦ÔÂÿ=Ë Ã• ©í,Œ ‘"ÔúΖŒ ö¯¤@z4Ã.Óë /œ… úg8z:‰9À‘Q´ñoñ¤{´J^•E1|üBOš?Wrc¨í8Ã"ûùðæ:Xµü*w4uSê®ÞÚå5ðØ D/P}‘=– e»ý²™)g "Òª{˜‘rÁ¾¸ÀI½HGÖˆØtaÈÇ~p^dê÷¿/SØëåÇÀ+NŽý{ë›‡ÑÆê^’œcüû Øþ[½e~9ç7ù.ñ¯ØJ-™íû&ý»”ýz<Ý`wŒOäû͈’êiÈ zœeE—ŽB1-xyüèo¾hn2J÷çO—ÙwsãÓ_Qñü¶“úN4ßu¬ÃC1Ì+m] ¢Îo)n[Ø‘^/Ù˶åƒàþL ŽŽÛŒG,¹ºvxñ5Ÿ½i¾¾…8n>`¾ó+ºaDW6 ¼!ÃEÝõæ×Uå0•9´Ç ùAªDÖ,Á'@JÉžË6»¦A™3¨ …3 µ•z Jød‘ ’ø«ä÷€íe˜7nb=Ƀ'Ìão>ŸÃ¡ÇU­¹)™xÅó5îW,u,_‚Ÿø=ÑCX ¤’?Il Ü3àm*qïÉ\»6¡*ñjJ÷ØcPç8‡¬óþã<ÃóÎmâ@öÒpšóã_g©ÌóTD97»Ù´7fI#Œy²q.!§1ã=ßR½fØM=›‰öP–ÿ²ÉSâB[³°Íú‘¦Ú_´¦€‰ØIRÛüø+sê(\tƒVé¾ÞMa’´7Ç“cóP$õ$ûÇ ÉxüŽl@¢Çkþ_KŽçNÿp´T/\‘9½¾ `j)ñ‹&däi¢Îø.×·LçK#lÜÅ+e™'Cµ?ü$@ªe’}–‰9)vaA¹Ý[¢€-¢³V@ó¥± >ãÁôµñÌðsª>.ËSc̹ñkö4=¡ÂHôÍ. yw•˰„9²ýÈ–üK ®ºhóüô´Þ“@ö5t^.Ö:vQ`‡ø%Œ6à áóÛÕ3TLÑn2$pȬ†Ç†:òìÅr/÷Û%¿˜—0º\"PêwÂ<•ºžx¤¨R>»2T„ ?Ùœª.xÅØ(}ErÆyÛ­0ä÷³-€Wj¤In£ß Á\t~ýÑ59—/ g¡Ç¿Á2´A¸Ms(ój€GtãŒ}‘°‡œUCa ïIÀ€Ê( J¬a­Åo$úPØÔ_…žå¢‚oÊ}ÁÙ@r¢7‘ô7&ùrëwÛ3ôè êù1îX× öc›\Õ{3úõ€Fîšå!íß d]âs-ÙתåQ¶˜áé‹§U͉Ôê%Ì’iÛS¦;"@íózS‡r¿%ÓT¶v€»<å¤@h‹·$žŸPË0“^:lIy·£vÈ_p„¼*óá›e‰¸ñèÁòî†ÜCÂýa¯­z„j$?2¥ÝÓš©-[DdBZçþWÌÖGö-÷;°žk/ž;²Â•¿†GÀJ‡ïìÛž…|@xýª!®<^Ê>›”²¡ÎæWi¯öqøh#b[W‡=ÓâNÁF1k³O™rPÊñ³?Š!x«°Ÿþçâî@[[û΃˜ú>§ù"++¦Ÿ,‡¼¯Ib¢ØL¦ïöKÏÖÔ º¬ÃïŽ>{wÉŸ{x'2Ë?—ë †à—FÇ£Ïݤ‡Ñ¸'©â·ôPM·¿GïýàþàÎs‹ÝbÃÊ@ž|¹ Œú±ÙV¡ ¹¼Œáù5köwÙµAÔéÎÞOZïŒü&÷·è!ÐÙGÙÎnï¯Ãªžãâä€ÜÚsñž#c£.Jûæ _Uñ~}KKÎ? Áoý”•ìþÉA£¬îà0¾kÞ?ê’ÖGoy“AP€D"€í½ÂY ÿ7¬èíZ0o£¾gŽÀc{«zi±…ý§Ü¢ ê~tFÔxè\ûÁW›ü3È,€u›=>^÷ý«SæIö­¶éi,Ñhñ×*VÅu‡ªû¤åß 06ˤÆFÙ‰Zçh| ž;ÂYÚöÍ€Ä)’Xš'ÜžìöH-~k"çá"ÁIÉF»Ô †ë{K–m@ÜQ—‹“Ɉ­ZR±äg YIÏ+á/P_º'æÃ¿Á}°£í³¬²nÇϘˆ:Î8:Ü <à6…wsŠ»á#kÍ£&3ƒô¾ÿªOCé j­¡ê†ñ5÷læP•Æüt5—RÜÝÑ^úìãs ,£ön:”žK™gÅ×JÙì*œÏ‘Ä=¾èˆë·|¿¸£ßV’Y* u¹ƒ™›Á‰ÁËïà*cR@Ï3^\:·^Ÿªè³Çð ¥»ú¡¤Bdøo>«}6 fa‡ õSÝÚöh ÀêÛ'³š]+}@Øæ‚Ì‚ˆºGcÝÛ³hY ̰ Äp½A¹înµŽjfÞ³rú,»–7ñ*ÔÜhµÝpV^Ú,’‚¹Úì”vÞ=—¸+gb aGýœ[6²zn5ƒ8Ómµœ¼££9À¶JTêAàÕÛ“ÝÔªŽÓžÊëŽTÚ‡]‹w3Jaï¡¢ :ª^¶í²‘ÏôûuêŸÃꤧYÞf«XÖæˆ,Æú‡nÜíí‚qP?dzY›‹Ö—ЇafqÉ›™þ¬<|V ší‹ZÜú.3è«ÓUg8Ô¢¢ͪ†3÷:«æÎj­ZŒe‡U=;°ì|\‚°Pllç9¦ÎtÜo´Ñb˜ÍëÇŒG*EE? Úþ¡˜c«qÇqU ­pÚ™ÕÈ0­°T®½b^>̦z· åìðRÉn»¥ÉáT×áÎ\«•ÖÜSf'뼞6&µj+™ŒQ»ŽÌìêPôç3gtìC'U­ò4ð[ÓR/”vºìŠWüfûâ,ŽŸòúÙSŠjõ8 Õ#„„Ce6êøs›ôΡí·éïèw•ùlA; —†žõ8“Üñ>Cªj.ÛZ^2QE.L›ó¥Ñ:WöZ¯“wÌõÐ-6³6êvË¥7k®‹…Ù.^äw¼åãCGÖ&ý~ñVÞ߸R¸æÕѱQ»ÏþÖ ÆuCß“¥¿K•eg"Û³µ=Ÿ*õÊeVÍŒ;Í6ÀyÊMÝ-×C_[¶+ûÎ*eªë¨vޤñ¬)5=1:Ì.¸È±K­K½bÖ§'¤ÛýY~ÛŽû¨žñúÓö¬1 ½üit)޳±WQª‹æ„³¡¯/§@•ê¥ÍÔ¢ÞªµŒ›J1»¾P•b{ß3ê+¤t¼Jm;¨Õ»=Ù7£Þ|]— àÈ pB5×Yb´>SihC¼Îk;:F} >­ë ¯eðüy#0¢r0«ìé|Y×|¦lG™ùt¾ô¥;ÄUÉôTË0PÏjŸÑ¥¾Þ™Í†Íæ¹ãà`Wh­Ú­õn¹ªçÖ²Wã½éÈpœc<ÞL˜"£_4•J­ºZ4f&÷“Ör×FÃÑdÕÜHN—¾Óng*ýq}œïXÖ9 Íñå7›}ÔÍ•i÷Ré‡ù¥\°¶¨o¬»›]-=,LÃÒw&ñ¨€æCIûNÄÏ6Ù¬¼­°rÍ…¹\4çYñÞ[}–i—VozÖÏÝÑ2ìohc½,6ŠõÅ®w®­&fIó¶9ñ=o~èbIüH¢Á¬¶Úš­sÛi)· +ý9Ø"›ÍAµ”˳z~ö«æµWòª ÅËÈd­aûDµÝ±×íû§ ŽÃ†4/®ž.Åy!c[ƒŒævÊS7[lSñîˆ °Ê,Ê-Ýr¡5ç™ÖØ›»Q¨^f»c«ês3µÂ±/—Ú~¤/¤]nyðCí²¬¸Ö"‡ƒØl™…nàE­­-£'I5ž±+Ñv\Ë­Wíi_Q]»Õìu‡Nɽh¤Ün7¦¯Ú¦YŽÏQ„;:G“\¶‡5\¬fŒéõùÔ葸VÛ†ú*\»\‘³@|= áZi‹bÚ¡ªŸ§yµM¥ 2Î pÆ,•Q6ríËŠéÑLÏdËÂp€Y¼ô£1=Ö«óp,Ëí\h¯/:Ÿ„S¹ÕAiÐ¥9£ØÉ å¼TËuÁ—‰›‹f£Q†ðÓõ²–FÝ Þ.­:d€i{'{0ÓßâvÜ.-ÎÕùz9Þí¡N)ç´M3êdªû,_°ÚÚº+7/­å ÓbQ_º<;-Ìä<÷ÎÂÈwñfŽ:ck?¨Û‹ÜÁ®5+›v­´•.ÅL\WÅöt:Õµˆ3¦5Ë¥–<î.´ Äž;ùš8°@Kܪ„9wÜ06ín¡èeʪ¬7CK ôv#…=o:oLY®×£Š³ ÏÎh¸k]Ö»™âs+w4ç;/&¤0§øx©—ÜC½½§LZ€Ž 8g×ı”^íË^mƒe¥ËmdóE7ëgu`¥ø¼(ΖGÙ¢#Þƒ_Îñr\XOeóÔ¨žVÌ“gûÉHnõ'þ²©Hí=§ìãÊ9õl¡K+{¾™ù,÷wô¹V_؋־Óñ xZ¦x³]–-ØZ!Ì(]âäo–©U.%)èF¹nyÀÍùæ˜Ëï3´ØZ6+¥Úb60¡ax]ØNrm²,¬3Ñ,“í¨ƒŒ¥9‹’|R´QvV–§Æ.0-iÖ˜Ž‰ZTÆÜ«Â¸ ;ìu¦r›–‚£Ë6¾³uôbqê·v‹Ü¬Ù<hƒr^èX×ÛÎaä8Ñn£î«Rt1fÛ~¾_ïiuo´›n˭쩪ô¦qXo˜½Ü*Ú‡M+7Ìi§üÚÀl½\Ô·ÀüøvIÔƒ_oÎf3\„9Ä%iÔSí0Sv¦áºËZxQ5í¸AëzÀ¯ e7,Ï/º×ÚY,^ ˜u€bdΓMƒU£ÐvW…‰¶Êh¬JÖ²ï#´èèÓU_®m—9¢$r»Ø²Ã%ÙV†aÎ7Œòxey— ?•³Q!ÈVäbNž¶ómÜŽš³ÎA/ˆ·R`Ru©L¦§#±]j,úkmÂg¨‡U쑉-ÉSneÔ[ùã æQàb÷*ãYœUÄïM:¸_õ̼TD£1j5¿Œ¼=*ö;çPJe¹<ÎÔ+66¸{Y»e …IJû.ÉdÚåzv©G‹]AiN›N§Óh˲Öåv½]©ŒTF—rë|Ø€j*ÃÅ?«e\Yü˜OÃÝ(³ çZ³eg7jcÇ.¥¸îϬ7ÛÖN6Þ7iš2Övר¬ Ó=ÌøÒÙµµeäªËŒÎr|Iä]~•SC½3iŽC­½ã¬3š%³ `.gNíziçŒšÕæg.ƒº|Z]69ñëÕAÍ‘[d¼Èç:FFcK<ÓuâúÅãrlåSóàµ:ó‰i_ê’:ôóòØŸ\ÎÓI½[3µúÌ*;«nŒ|a•£“±láx`æfò w™…ÁBŸÐÌ)Ì.¼hÚì÷v›R¾ÖrMKÕܸ6¾”âù>Ÿ†š6)lp”uc˜ÙÏ½šº™•Zas1>,Ú=uJ(ÛPå¬ ýn˜µ1†ëcdÚ®gJƒb¸ŠNNµ ›¡É3]…ÏvYmd5­¸kðe}"϶ùò¥P÷Qµ(ÖɧÓj-åâ~¥o»-+¡ X:ŒkRu¾%v<(Ì+³r¦„ÛC=Üަ:ÁÆj³›A¸ÊºŒ-A+ê ­uÜìI]vdKÙÝRy¥ï.fFºP¬Ž}Þë"WiÇ%+O—ÓêŽåJ³a—…颔FãóŽäÏëÖÉæ,“œ±ÇùEÔñ¬Å03õWÊhï[Š5=Üët w¦£NÌL­“7†#6¸;ù²±³"\îÒÑ Ñ÷W}¯´Ñ2Ãî¼'ÞÇzÉV›íÝÚZO¬ü©R-N¥³GŠ¿Rž×ÅGí^nfMp¹Óõâ¸ÓG­°XdDÖ}Kë·3ùY{^(Y“ãZŸZǰWŒËàŒ,‡û¾t9*–vš]Þ¢ÆÑ173 >;³F&®Î'@ù…Z5VnI<ª³B`+Þ" eñæÅS”3nkúþl#µõ³Úª•µ‘¾îµ÷¹hë•nÖnW…‚tÌå|s„|2,óHÎY¹w*g7Ûk–³³_FjV¯clÐ}”­FǼs86[‹qq¥Øµ]ö†l4Ù Y¦ÚµãÒ‘–ø&¬Úd»æqmG]E6Ò,£‚M ËÒdÞVùVËö^'}c9ØçïÁÑt麖r³Z®†xWlmÇKmiʝv€’'k×i†‹ùf[éX¹Ž¯I4J§ZS›»­õŠe‡=qˆ¡ãf6Åc[dZ »Å<ío±†¸MGu<Çõž®t,ç˜i‹ ~í`Y^ ¢ºWQ›ãFp™^¶R9EâÅ$½›Ïg¥Þy<Ðû9t6[•A¡Ý‰üU°;df¥ò1gœe‚Šý™½3Ùø|9ûùLcLƒEÃìó¢3¹j½‡“6PÔœt¨$qw²œ«Œ‡³^HÊqŽ»VgöHTË\8SǤⷠõiPî, 4°¼mÃ9âpxÜeOQn7’êh´èò¾W)àp‚JÓ(ˆ¢v¥¡ž7V¾²œå†K‚„êfœùZËeŽÑ¼ÛØÏ Ë3Y[ëØéMÃÐ];·)ç$mÛ¡…ñÈr”p1δ€QäŽýJÃôi@ÂSk7¥»fîˆb·‚õ“×é„YÕ2_«Ëá°Sh³µédÛ ê¾,-œ¬%{«cC¯¬.:`€î 5÷…L=§l5­{)tò3-¨„A9Ë å²Ý.^ <s1Üvëíí’uΕ bÒ¼µCÊn7.q²WWk 2xº\6l-˜]*•ùD;ÄÅìþTצõ]¨Ôm3\NtÜŸ\ÏZ¯­ÉÀÝSb”Ï PW@)ùœ“ïøŒÄÏa ëSï¡âü¨'4¤ÿ«•ÒúØà:2”¥ê‡a¨§:ÕwîÙÚNìM3R ¡{4F‹ZÙã=²9 žºË~6·*nQ8Sü°Ï²@Œpכ̺Ó‡«þ(\÷Gõª{̪2ä«É‘Pi‘_EZÐÙå–í3ËÈd:íóJßz€ˆ ¹Ü9» Ãv'.vzÈ]Úù\·¶iïóóAy3Y%RµÃü¸Qï"½)…Q3åÓiÇgˆ«@­—¬]°L^©wØeW+96óópç|Ðd—îæöÆ©¹9¡YxFÍÁ8Ï6•½4´«ß\·µÓ=Õ‡³BÝY ‹sn—=d÷í¢§y¾Ÿá LwÛù(¬¹#Þf¹Ë¦¯ŸÏ½¶®4`ÎÎÅUΓG‡õh£FóѪ~Ò³íî|QÚæÛ³Rü*X¸þEWVªPMsÙ¯Q}tX´Î£ @ÖÝ—†¤í(v~- NƒzÇöÏÕ'Ó¦çO¶«¢¦í¬x¬º.5"CVkõA.R‹gR-.Ú€F YmŽCÍð–k3´Â_\·éKæÊ'~¼'‘Ÿ•wç®Ùn·ZõT«4W±×ÓU´¹¸ýý¨gÝX-¬­Ü­æã©U¨]ü¡'Çu§0X m¿ “"™“öxºQZoÌ:·ÜØ$““éÆÈ—/a4žOºõ3®Uó纗ó—º>œå5*-&‡Ð?ºþb¸ìƵéÅØ˜žÔÌèŠ}ª]:}Ði©™9ºª±¨ëΰÓZm€ú»vn?›Ú;Dž»÷Ýv|8½ƒ:9NÈÖWÔ@Žˆ}P”Þ‚IÃ˰¶Ï†Q¹º©’eDÖÃz¯Ö+¢£ áh× Fóahýñ8Õ‡»Ul¨E‚›Y:øai™Ç 4åNc'iÍl; šÌÏ•*ž/É>_²šÝ¨tŠÊǨ#&ݳžï™z‰.“’Ë *üK|Z¹usBBì¶ßÙ—ë#g"•²ÑiYb¨¨]–Þ*n¸Hå/ÇúÙª6ZñdWŒóÍU¾)~±«´‚[Ò¦çþz™Ëúc+g­µñ¼fçh“Ù¬¹Dðø´<ô–T—[¡Õɯ†ÃÑ®ní—| nsÚ T¹·²óÁ6od:5ÖnÝÖMÛËTÖÄr£æI© w,ÍMÏYd‡ñÖÍñÆ¡KTtl,±±(6¬X´\Jª*_÷ƒøpé]ÌÉlzÈËöØ窡u([“î)jFì­¤p¼ ‘ÉL>Éw‰ý¶;=L/œæØÆì¼n&ÜÜbã8=7¦ e«{Ë=)U›æª†Œv9bñôg{ÛmHQù /C~ÊF€DÂñ2¼µõËAv°×šïêæ8Ð÷ckóÌ*«s3Ð\f t¸Åmí¢„£ù¦Šw²4¬aOo—"+œç£înâŽçå}µçJ=ÒXóXn²ÍÐ-fz†Ç§}½£ëxÕ39e±l¯]w—eãBÞ”ŽÒñ¼’'1e¡½rû¬©Ìƒ%;ž‚n U/Ãùn'B67ºÜÖ·îp±=4»Æ¶é »³Aµy¨Û¬òé¼YʆÒj瑵°fؽ½Ò®QŸ]œªÖ­:Ýá¦g3¶‹ý±+~Ÿù04iC«ø—uÍЋƱïjçJç’ÛtùA°èJ¾½£Ó£œÙÇÆî0'ñtçH°ƒXåÝñ±³9Ê«s¼Ìg†Lј›=اs®»jϺ¥–Ý»•ªäm WÍXO£üäÔeÊÞhÙJ?;åµ1ž´ (î#WL‰Ö[íY`œ‹VdXšUèc+:ai{ ‘Òô$—¬'Ñn0ðÞD‰šƒóp»Éçs¹aéàÑf©_`›¨Ç­Öx¹E‡i˜+q ;¥ñaÒróN»n¼Ów°(¥õZm¬UmL5/Ó›çI§sQ†Y¶Ê¢l¶à¯e6Båãl€:ºØ© ½R‹·$W­å/ž×GRoÜéÖ7=ítÐ3;k0,uš—&-(ëÑx±"ZöÐhMWs³‚îe«ì÷‹oõmàsÅÒÕ¸‘’£‘iì,?ÔVyyÔdçôÑtâs+£[Õ2fÙö°”ï´ys3ØTÎëXáPëÈ™ƒÖaç,[.2íížna¬¦iî÷©~ž5꥜%;ûŒ“wÍÌ.níüZ{–_ÛKmì„ãÁÒ¯1>Æxv&œ+6žZÉ›&M“Ç•J§@ÏöëN. Ö`Ñq°2ïèÍö×~k¢iÑÊlDE㋲_M‘îŽê'‚ÖÕ°Qk÷ŠãS¶;pÖÛBÍÕæ–¸R™YlJlZžÎ Ô Öú¤3rÙõÜfLÈ¡â2‡t2^¶3 i­£–£Í¢…¼ØÌGÖaKšíìáÜ[¹{.•L½Zj™£FnbÕ•jS·¼CXЇ³±ÒžÔHtdsÚg++ÌŸ*ÓÝ)è»2É–z^u–«¶yÍ:ƒÈ!ušJ)W¯yÍ-Ç•¦â*Ù‰²½œk£3›]<îšíÆš€õöÛzÙ6¶—ÝÖp*]viuðNÖõ­×'ã…ÄôѲyñÛa{¯÷ë£p?Œ'« 25jS‡ÝxLÌÕ´UØ·wµænˆ×Tí²íVfqa|‡•FÍ÷é¬ìÆRàÉb¼™U{še´ÝÕ6qÌ»Ç5ŠÀXGêd\)(«Ê¾§O׋žÓ= º>/•‚òÐâM³æö¨Gv|*mÏêºe.ûÄ´ “‰¿õGÔ"þhZÍ›ÓÝ÷£`/IW!h--§Nf«ÉllÛ9;õؘG–ÝÉI ±= rŒª9>)šZ ô´8Û6ï¬5¹}8íÂý9ã;N”-4Œó,n´ŠóÚ:»:7gþALRìÙ3`™Ru¶ÃÙW}Ã?äˆ1¬9ësÿœ_YÁzS66Öº³Þ®zÓÅÔÏ·Ìm§åˆ×4VöqtvÎÛíш–2¯ÌÊó ;HÎêNÝɅѳƒ6¦âëñ![-g*MwoZ»©bÁ:» ¬¦9д¨Gíì`»["¯[šLJö%wX,sÓê‡]‰ù ~ØQIg¨ñ¬Ÿ]¨öìtYìV Íß½ÚÚž7çjWf.6|ÆÐ|6+L½lÛàÝí±U<ýƒtêF—5šŒéÛ^/sØj•ã µBrŒéæõÏ¡¿ÊøÍù”ËÕ8pšÓhï׋‡Êaì—;iŽÂ^ùàDD“‚Fg{^Õ㱬ØËá¤w®“K§T‚\Ù[_ÊÆxYÞðaÑðJU&¯µå×~yXÊÎÉñëm×A®ÑºDºzz°Þ¦ç3ÛËûÓ·[³NlÛ›Zû` ÛÎ.ïöOû]¬´OÕÆ¯ÊÒ([“ÝiYôº«¯£c½K¥AgèµV »é+H™•ºj¾nÖŒ­k±f´ÝD§nÉÖOëV­ |°eº­]C-x+EE,ª ·3е¨9’Í •ªýÃ|¢Xk²Ô.¹(bÛ˜ªÛý.׎zLnä6ûBäÎvŠ6«Al4˵x²aýx³ð‚iàt¢A7ȶò™í9#iræ¼Yj|ÃNËÕ¬]­VK»S4tZïvê°3öwþEJií‰ß%èWggV¶MW¶õþ .Û…‹'uóú ÜrøâÐ\ÏôvíhæªÇ©˜ç•øµãQ¥©¡Š—µê{Ï•cËæ5·Ú^»dÐAÃáÆD‘ÆŠ7¿Ì‡³ »ˆ‡Áb§3Ïms6ïòJõÀ6'ÝÔ'[§7•Ls1A0Í)UkYR—NãØS›£øÜhiÒÔß Z­56³RÙ°r·Às¡[-°Ü¡¤hÞC49ÔåN¿Û§Ùκ®Œ>/UÍɼÓb#VmœVÎ)@îÚÇý`‡û1ƒ8hÕâÃÄÑ9Ž÷;ë‚[k6Ê4Œ"‚žæ”ŠÃ (š¹KF|šïÒ–©Y²:,̪´‰½ÌÐÛ”–vkcVcå2üê¸àx£J±¹Y5ÜÉì ƒLnÓ $êK§FIÒjqwÞÍ å¸b8ýñ¬Ss¤™q0ë~Mƒl¼¸(K¿xýœq̪tÑìZ22KÃ*UÆ¡µ.×Q¸ªÕFïÒïŒPI)¬Êc—VåËh5kH³‰1qXôÔ¿nä2ž“\-2Úõ*VÓ8§áô/%cz˾3èñÓzl,/¨ªU´õðhÓÜT¶å±"1Ãèíú®´mØZ¡ž«ìJ¬QploÚØôj‡ ‰í‰[rÌq¯ZìÎìÖØp´ËûË…§ï»¬g+Ce}»-G³èhÃ&-•µ·¨ CïkƒQ¯çõ7楇½}Ý KßÙ–ÜܶKç E›xØ6·†^öGe¼Vñ”-,efºõ!ÝœÔýô|Våö ™ãíá12ÕKÓo­ÎV\ò²Õ­‡á<\gXëºxª®û¿<8u¶lï—‹~m¸Uì\P‡ß>ªIÃ|¿ìœflŸÉ;µJybm‹µF³ß?l6ªV KÙ½’ÍòÍïÒ/ÿGºýÅ¿ÿ"?]ž_/ùï¿8;sió7åI¼²å*üýDž GÎ<\¥B)û_‰üŸÙ½†¶ï^/¯W·{wXæÞþÕò¶[Û‚ÍmdÆÁ½ÒóŠüºòíÅï¿üG`ºóÿž9áÎÜ¿¡{ÑÅkµŠŒUõÜ¿ºŠ¾é ÏßýþËÎ }çüŸò»B©‚©L¿Éâß;ÜÉ0SÈ7M}ׇ¿o*~—¹Â”<³3ƒÍ­nñyè:aðû/ÇÀöû‘í¶; ì—Ž‰RP7âoÚ/ÿuýâŸ>Œô1kAoíßY8Ûí¯GûŸÿñ:˜ü&¾yó ~'ŒU~ BßÛØ¿ºžkP”¨WÜ¥¼ñÏZaï”RÎUô…)~çXF˜¾åï*U8坿¢’wJÂäI~žâooÊ7%Þ§)ÌŠ¹~ÝÚ¦_ö͹c»÷Y^¯Ÿ´–Ô¾5Cû?߬~{#ø÷¶c%ï\–1ôÿ RÀ;B¬=Š*ɘY&òÚϊ(Šñ/;ñc ¿BÅz(:½ý«Š„Êà_>é_|ónàù¿þ‡-Ð5KDÅ?Ýã- W½Mì÷Z#ßo(âßµ+Oj{æÿ€1Æ ç¨~Ô¦"£ºSÿ jøN%¦oÚ÷'³”üý«ªÂüÅu¿¨¿üý­¬ÿßx›ÊžëN«üöø÷zF/ÙòoŸûå) –N&$AõÒçTíýísBmÿŒÏ!ò&ÿoúb? û(O¡ –N¦ÂäÍçò·Ïý9µÉ`Ý?VúQ¨ü÷úœ‚ÿö¹ŸPž¬¾á+Oþaúk>'Ó7ýít?¯7•“ŸÀ'*gÿ»N'Ë;ÝO(qPË•§üˆü%§S¹ú#Âø·Ï½ª ½Ñ«áÿUB§2òFÿö¹*j?Á TJÀþšÏQþ#eýís/j#ìg|ŽÊ?ZÔø÷úý{å§”§ü3P‰ú£Éük>G´¿}îO©MÃ?Á Tü(Tþ{}Nc?Z´ùÛç@y˜þÄfŠùÿèfª)o|Wm“f£ZøoÂþûí'ô…øß\²D‚áØÿ+ýíª8úßoÚ‘ 2 ½ý`eã¯xôßÐõïöµÏqk {SŒ°±†ª½˜òc´ß7oÛ¶lëƒyÿñ}QËkø¢#ïXNþž¿¼ @ã„¿‰üøCÕÀPÑÛëZõcÚ¿ßQ²ÐÚ õ4em}Ç WÏ:ºÉˆ þüÌln_|mî÷íŸê{= ò‹äïÃù§a‰ó%’BßÓ‰üÆ$ù2Äý¦(²¤Ñwí›,Y’òN¨†˜ 껢p¬0qâ…É“ð;ÿö¤¼ÄØ;g2%ê7E¦ïàÈ2‘8C0ýÆÉ»†™Â5I| ±@ÆßG¾UAÆß‰ÊÉ7&ކ@Q$èÁ7†ßEÃTM¯Ð»&5ÒÒåƒÚ÷é jÂÑžçÍ=üïW×›Ûa¼·a"-Ë øÏ5<޹®m…žÿfý“}ûÙÅÿ™½)åOºžÊ8åþx5qa¹_Ùã\oa‰Éõ˜ø÷3®NC5•²/\Oå²Ñ”ý„ïAQõíuÃáÑE‚çk?À' Ù^Ø‹OéôgšÖÞ´·¯GǸŒ0ç?⪪­ØÊ¿Ô4MbÓŸŽ8YgÖìßqTÆ8@Šÿ}!'9öÉô!®ýä)´4")(qvqF þÈßð;&š*+Òz§œbþ …̹†¤7íîx‡J&$ŠÌ4üMwÉLTòÎU®(B¤"M%P01R¿(%JÉï2S¾iEã ¢1òMÑ 'Xã\zSßç}ƒ›‰¢**ˆ ô1•Ðoè3fIwÀ¸D=*#ŒJoìÉ2ewzW!tŠ` Ñ ‹@%‚ .Ã2úö†¡+-%´€›è7¨®E¤ïК"î!©š„4Ï* ÜooH4“C4NB*ÄR˜€á“tbOSFÙ‡Yþ*ž‚æ„/cõODÊ„Þ@ü ¬C@å ™'~ô‡'AèÊǤñ³7Í®ÿBPD.Ðþ…ðU“òo?ŠâÊÜþÿ>šþî_Ïg‚ÑÊ`x8=û¸zCô\BOªúÎÐÿÁ|#ƒ¬€ã1勤ŠüŽÀtqþýnúбõe9ëS¹ä,ëË aι0å·x>ü¯šÖ}Þ¿¶ZÁ}ü«O܇kšd¤¼2 ®¾¤`òÈ«‚ H¤Rþ™}¥àÓØU%·«7‘Ô4 ËTŸ9£ 0­|ªñO/d$¡ýgæT„Ë7í¯Oéç>Üjþ8çK¤ô}÷¿ù.´¦þ ¯€rÀ<ÉWµ~…ž~ý)<÷58úmQ¬QUU¿1†ù%ªå?ÀF_µ p!ã¯çZœfý3  ‘¾fŸš£Fÿ$žú>bú ui*â¥þbvý‚Ø\S¹¦ªŸ‰`Bh˜ -p…ªÊ@Ï$ÌÓh€²n$Éð @D"–hg€ 3òÅÓ*–°p „L@a\RÑ;”Äeˆà²"«’ Mh3!”¢(ŒpH°ˆÄ…ÄQ!’Ɉ\„¡sL}HÈ;!s¤m‚ßd±ú$PâpÛ峇}ÿYLò§=ù´dü¸JåuŒµ–)}É„Crý°¤¹QÃêC(2Їrßõéü3;·AòéagæÎžŸ;ú?÷NÏÌ»‰ïÍ¥ø 5Ýë3ÏŸÛþí+’ü½|uèüû;ï3+j½/ý}°2ç^ôû/èã—σ̶šü±_ Ô@!7C0¾OØãKñ”Š0j‘6?~9÷¬ãfðí˜Náþüéö£ï‹[3¶aØÉnîw}šFAì~ßí)šgY°ò¢¥/f9ôöÇÄ7o{ÏqEûO’»ŽÎÜþà>ñÝÛlæ¿þ>r\˜Ì·{þƒ÷4ú% ås>~)¦÷¾°{ÿ2pÍýÛrëÍÌíw»·3ÏÎιØóGH|­CØÅµ†« ¿Ìܳã•áºä{»Žo˘ôí0tÜåÇEdýý—s,n» =ßY:®xÐí®®›0~ÂxÝ%ÕV>ñÕÍ[ĪÜÝ‘$ÉÞíÿà›'AÏÅŸäøY~mûá4’trg¶µ_æʺ&ç¤bޝåżˆØxî6¾»ÇÑ{ìHÌîi¢À7ÌÐñ\0‘o¤¶÷'•¾ö qAÕ¹üúœ^R“HÿŽVI !•~´ö.knKeÿSmA ý¢-‘ݘ¢ âN1dRøüEcX½?ùøÏìçÈ›ÈwvhÎÍÐ|„á›AÚ¸Ù»?_üÚ+”î0ò~{þýÙCàaPÀœyGðá;rsëWÁ(Ìð¿’‡6³Ái™9ï¶î_¼þñ¨4­Ök8úØÒ* ÷¿f³û£¿}÷ü%Tÿ·sÄMÙ~Ù·*yBx×JpkÿWÒfúñ6Šìu·<ý4ÊfoÓ\-?„…­9³!¨4œ“½ÝzÒ§¸´ô½ã~Pê­yLï5z?ž?½ãµ+¦¸qedB¸ö[ 3Ò Š _pÚ~ºR–~Æ Rd,Åf* 0U¬©'°Œ X–€2¦á„ÆAS €à*EÓÄòO€$ ƒÝËJР3œ&V÷¡¥¤ U0F€é0pBL’(®rMT¦¤ ì%s`­p‰‚ÄMX&X¬‹1)Œ&¬ªQ%çDBª¤Që¤bŽ  œ*V’*H*b-MÅiñd‘@NR´h É$›ø€ES ’¯-) 4tí|MAÿ ÆÉ´I û”(¢i¤ ®¹Å·7ˆ±bi°‘¬zQ-­Gl2(P‚¢ÛD_^|2Μ?bÇÏÂó¯Áy€së ~êU:”¹v}¬˜3„À”I@Í2ðwÂeàõ}z,öÅ.oͧÙëÞë”ý|@„Ç A`ˆ‚å°ÏEÒì&òrSØf2û`hª“š—$RWÄv`~„‰‰Eˆ"Be™%¢ä-]Ú¸‰À.&[mšÊ˜âw™r –Hp"ÃDØ‚z­%•°¤>rµß'a^"€U9Q÷]JÀ TI^2`*‰U!1œ¤+ ‚b«„PcXEM ‰¾€]"pz‰Ê÷qg›abƒ …ÅÁ(4 x… …S‰µd'Y¥M‡Á”«Çå«”‰Â -ñµF˜’Ô’tŠÒwB1p­'L…r³îTt›â|*â&ƒ˜C\LÈ0RMtÈO¸k´ñ˜Ý'%‹ÕoÑ)`ˆª&•cÄž%/–qy¼'à…ýl`T!¾üã“K•ÅŸ¢e2w߀}J¦$ì˜Éèáý“$'ÿ @¿Àƒä‡å¤DlP…‰¥Á‹1'Œ«bÛA,Ö&3ö®}»MêöEßkNN[RÅV†yR„S%Ýi剀r(´’(î[úŸïךöˆøVÂ,½íÊЉ†™ì,@yj@¨’$(§a„%cø~(©f+ éI÷5š,$Êš"²‚¢r‚“T¬% ÕÏ7ÀÁ·Ò¬¡ˆªA¢)„Òä¬Pœd£[+$IN*¤$©ü%I=?Ô¤„hMlO“4þßÜ ºƒe%͆ªJÅ5å„\û)¥Ú<ýƘd)8¹™òtPXµ_ç蹜j@þiÂbÉ»àJI*N>wø‰à£J!²QIÕÞ)XÈ«ðÁ 2M=„ýÄv Lk.'æ½ÒÑe €\I¬™„ÅWã‚0‘›²¿b]Ÿ˜=çOüöˆ4¯Ì Dö&Š4?N)~Öÿ'”áëšÄFÅ›üþKҧ׳„ÿøãñ•ʾ»PñtBç lNª¼±Ë èúÏî2ÖÅ)ˆ2ÒdEuÄ:‡X €øs=»ªÞC¢Špº qؘ*Ruº˜ ð/ðH€LûM@uF¨ª=DHP’ ÌoHˆF¢ Ô 3@PRž åñ³H¬Œ(ª&»&0'Ü‘Mgð«À8Å~=x\rH› KcI2Á]åÄèˆÖL$ñ$ S¸«¢1&Â1äjD{Š ØTàD³¦r$7‰óE rdC  LSà(*`:´õE $Ï'©ÿR ¼áùÂB¤t=†€`̪F0Z£Â‘àÂX–°<7| œ‹ý«¶?ÿ–^‰o CþÎܦ’“é;¦¾È¢dƒâEöl‡Öê& ísøfn¥ûkš~ø›€×_! ¥§b!p¥§cØü?¿mmñfµ·ëúù¯2ô)òüù«ÀwÄ›XMüuë¿…³kS®µòük[OÔ¨8o"ãßþÈÍÀïžK·0wÎ6þµ9DX©J¹Áoo7=¿¥°·-gáXÉJõkÑg7nJ '-Y‹€Dt[Z¹ËÀõ¨r•á”nü‘,¡‘Bv[MüJöUwÙEjJâzK>dì=­OÃWó…ä«ûž[ ôýµú«€_ ç“UÀSâ^²`@ZÈ ^¨*2ü•!K°"Îà‰gW8ç ¡SŒªÀˆ… "äÕDÝ“¾æºðD!"ŠÖÚs)í]CP,é¤.±z²[{ïמB|P ¯Lˆ(dkˆlTœ£–$AÑ™§ë[ké5dT„I¸fŒ×2. &-% ÝU˜tH‹  „X1) Ó•äÛâ”8©IÐCL …¨Æñs!žfuaIX4.¦òÖ`º.(æ[û1B„Å!¦D€ 0_‘ ̈9I”×rºä{¿¾™(e÷š?Š>ÛÀ³°ûšã£Ø]öTS?ûÅ]öÕ½/­pr½é©äCv³nNoKŸ%_Ý÷Ò{´Ë®K±™8k@n5²«K}ñ»'?îüBvSCþE,ƒ‚H

>îþBö°ÞgÑÕz…!ôd¼É‚Îuªî»Š€ª¬=¯Áײz7L!¹Ï2Sîw2Á+^Jq¬*ÚÝ~AoMÒû4}LçaÂB„€¼á‡ ÑýÎtÔÁmï@<ª#sv7ákÕôfÂIû¯¦˜ˆ )åaÂI¿³jO6œÈ>Ý #–•»©§ÓZyX±¼úY"ÁôɈÉ‹ ?Iî¶J^´~ÿ—²g3ºÞú…è+«|¶_•\/©DæXŒížêU±_)ò`ÒO¨Èn¶{ÛÛ„YBi† (Mö”³{n ^b÷—czT#Ò=ŠÂï­%iõvÛµO‰u³§Žßìó>º‡«bðíS!˜ à’’fv¿H¬s+·ænèBMÈÒPÒ+U¼e"YOƒ¼è¼ÊÓ[¯¢ÇŸD·I•©×é»ÍÔ­Ñç½v=O<˜Ð8õY?Õ(t þöÐ*{ìbáöé.a Àªr‡ƒLÈÐ5”¦wÉ@&EMWH©ˆu[Ž"6üÄ^£b÷œß³p:ÒÆCô°J±â+“?=CvþPÛg™|…_Ï…‚ÚiÒ5À“$A¤ 3.vÓí1Í·‰#bM4­È Å¢NEÁwOS¥tÈ7·ÃÊ º%»NrãyƨïÏßCÛ``@19»+A2Ч–ºcaQõ C_í$S¸rõ¬d»d·ñ#"ø³„=nÄ7… =Õ”8Bªvkïá[¢S„É4ñB7BZkáÏÁêƒFÝF|FÄEå¹r ¥nÊ¡ëT,/ßqÆuS\¬8SñÒËÄåTMÌÏ`ŠSÐÑd7"±t4Zj?89Ir»Nê;}rBV0±m¯ŠIâ­F’)VoCN!OÒuN0IC9ÃÝA†‘ØszJW­>²N(xés!‘jM³18<‚`Ñ^Ýö¶°8ïi:Hª‰jYê 3ñPÉïWÿzÉ÷É _ nsL1h u,2µIêÃbHìÌ€ìfìwûÃÉáSœ“½1žL˜Š›|Xó«É'^@?z+"kò3—Ä"gb*PÌ#ÝX(OoB*˜7‰Dâ©E!“ QXJ‚¡{±–NˆD×9¸IADŸ¯Ÿ‚¸åަ?Éäk¢–€>Å Ñ#,貋U5Æ52ª÷ñc"ž 4 d€+8J£ŽhR'ß ÁÍF©x2OXÄK1 èÿ 1j2Ø>ÈnØ÷¦@š<úÄ“4–œo²´8 tè&Öq›<úþqØ¥}É{yˆ àQá„L¸&é2Ó´DD>L8ßB5œ*Tå€M± Š@ŠOCæ7ËxÌ Ô Æ‹•×b`&j:ш‹C7’&?"ùµ¯š®¦$¥4ªQ0LM~,cÕTý¡ë°X½‘}› íz(àk™|Ãïw‘p;€Ð*"@‹\I«x²Sˆ®ãTnw¢Äöа^À<™ Ðkr(äáNü㎘Fñø¨ò\ ê@(pê à]‰ŒÞF.?´¢AvL3¾¢ ýýb-M¢`˜$wÞçìŒDCyJÄÆ 2ÁñÀæ“ÊxrJëIŸÖ4œæJ.Ë‚`Þ˜†_A?E¼³—Ák‚ÞP‚ÈÓ}š FâÉÓàA&óýÐfÂ<£§Ákâ Wˆîüª(ädÚÍ®nè!{„ÉÃÑ]†’dötãgÁ&`œ¦lYœ`ÑÒ¾r”.d%+Rì1¦ûº•¹ ¥L RdRJ4 %0í3vÖ úPHjH(W”ty@àY¨‰}\[Í x!x}º~'Μ ™vKrâ…öÊCrÎO }Dh%C¯‹‰ˆ´Gƒ÷%ǤWjj®²BóŠžC¬V>À³•Ã!òû£ßÜ ‡ÃʳÁi\œ˜¸‚8ŽdLY»)ýá©<¡åò57A8bBvuxEÇIï××EÝô%AEœ¥Õ’J!ê8ìªÝb%H´ÇmTI 6!VŠ^ƒ‚©XWX@¯¹ )nFÊݲ‰’E%ÑŠÜl dä®P,%/"z¶Ï2 B Oî‡S ‚-ld7K¸ÞÍˆÌ ,•¥Ýâ”›ªÄ¶o=½]'Z\‰ø­P=ÌÒº0×P2_wí¨˜$~®&ñvŸÌ!Àœ D°UÃý y=r¨ñTîùIÈ„]¢‘8I&´ðŽár}T÷¸ÂlˆL”t­OFJD «‡"OÙƒÝÕ½¾ÎZZH,Œ'LT¥ ¬šh䚉´‡~¹&Xiº!Nûˆ©wï˜L¨ú$RR˜ø,€TCKDŠtB†€ýá¤ìF-nzoflƒS»0BSP p&ö €,•\Q,’ïËRD<œ¬^ DO$ɹ·T‚“É¡·|¿KF ÕÄCˆxÙ@¢Þk!ÀÎWíÞÐÐ]782 1±†Hš{5 €©Sß|úÉe¶­¦X Æ¥&J¤J²ªsGD~dƒBãIÖ'žËÁÔQqF?E(HI'ìž$Ú;“)r“Á gSPš“Äév%qÓ{d¯&LÐã*µñäv:n ‰]¡DEÁH„)ÂÄê+Qî ;ŠvW¬*ó$ 2ᯂó %2ž,ÂÝcãÇšUöþQ™p’Wô2Yü,{Bÿä¾°/nÛ*TKqõý±Ý¥¼¢òX1»Xòy½ŒÜÿÉb#ôʽ‹nøÿIp…ÿ¢K"!ð'ø/ºþ rÅÈÜ^q^Šÿa W¼â}D¹ ¢b·Ÿ¿ƒ þŠÿ ¿S‡›q{5ùÿ“[þ¹ÂrË?7ô<ÍÿÈ‹ÈÃÝÔG[w^”‚ˆ×¤å ýSùyR¨XÄ@/ÈŸ&ËSšòUéÓvÑÍŽÅû‰xÃÂÓ"­ÀÛ÷UÜôâ6Éüi ûqëc ›>oÉÝî¹õ了ýèî-Ù§zÀ&B1:ó(†˜š §lödŠ72 ú…§ ØÉ;Ì‹×éå}H·Ëëp“ Øë¢õ½¡§y{tè1¿I·’}Wëªå‘Çžï­ D™¿(d⬔¬>ׯÝ#Þ½bñ R{î.~¿Šë˜î‚[ƒø†“¯ª|TóPå­µ‡&}ºiòÞñ»žÈcÃùÖ˜Øs'¯… ©@jO÷nʤPxW¦8F¯|P&{nW…ÞE>‰n“ *ÓxÞ·¹7ú<£÷Î=M<äλŸÔ˜ìñË/0€ t&–{¾Jž`ã÷­]Ñ‘»ÒG\!Ãb?ByÚ`üý#¿‹iŸ±@à*yŠßŒqœâ.»áÐgÉu/Btëã^ã7,p¿‰\«>íEpÁÝx !®{\þb+ûa~’Ýw$^f=Q~)šGú_)®xñ"Nü?Q\½\¸VÄÁ£g‚ËÕ'v›^\9*WŸx-û¯¼–«×Q<ñZ.Ž\Rq‚ñÁlAõ•ÙŠ!ÑfËÁ=ñf+^qt_UO™í³èÆlŸeWf "à¯Ì–k·M€´Añ{£˜-ÈÀ•^˜í­§fËÅ›Õ^™­"ø#OÌ–«pë(Ì•¯&Wf+t¤½2[~?ô`¶=6nøKÈ”ÌV艾2[þtºèÆlk‘IºÁ~e¶Â¨È ³…‘~[iƒÂù±K´1éÊä%­=ÞJPÊh;\¤¼ä8ª’‹´ÇA Y!e$)h“Öv$)óîþ¼"(~ÿ(¶ ¿Œ€y>S’Ö{$£{Ž6ìùVzlö\ÕÉ”ÔD†jùzÚ@¤ÈÚhv"Cy NòÚñ›h9Šñ¼ÈQŒ‡Ó 4ZaM?4Eþ²S1îcx¢,´Lœoq à4³[³AÛßSº"hdå*%g‘'¼ñ¦ôœEÌ…›3Á—¤¿­"$ÍZ ®ùù0úwC¼u~)U§ÿ†}¼®ï/Ú_÷:ãæŒÉñÈä qÔ¨D#Û!ŸÕÁŠ@[S쎮DsË·Á%0çe”ŽúÑ6RÁRFÁøêàKòqS2ý\oUGd¼4оJø¢µ óÆ 2W ´ËAªâŠ™VÒ?Ų_¨©D»ßs×iyÂæ¯žÏ 3(Óæ€KC#óš“úI$$ÝÜ °ð¡ciV¯À2¬ò#N?ÍJ¡¢{ÎíHÄ1Wº ÖÌÖÌ`ÒÇÁ‡•£ƒãjêÊ>ô„•¼yð¸¾ÙdNù‹¡ÖËE|^ú´BæÙŒ{!ß_´¿î}Þµ ¡—tÒ÷ˆ)gÖK:°[άVÒ ¿Aê>™ÌŽìÁ56G#/ôg¦b‚v§­‡EžÎCª©éa< RÝÞ˜$^ Œ×ž¶\¿‰Ô\jbµÈ_^íŒ|±K7ì©uq±‹±øÿqQ ´¦ùà´ÙúŒÒ œ=õNÉ54FÁÆ,7=‰g þÎxW̧È&}§q§ÅùYÄ\àÒpÅ+}³·ˆhðéZ*\=CªÞh1jh)Ħ9¬%s2ÿRçi5pŒ(¶Ë™ðö0ø°IùۢŷEâh`E{ÖA)óàš†ö ým5«mHï'-¸ž÷“ž·¬ÓÏlÌíÑy¿]¬hÂ6ŸVÞ-£˜[ÎáÌä3Eí”Éçolo¦ 2y<,˜|îϡ΃‚/>XœÇNC޶ ' ©,U»¦Ê(ú=Q“RugüŸ¤­"~³…ÁjL"»¾©‰ÀqâÛ©!±MqúóyZñ¶˜M˜¶SËâ;­(¦5Ä-/Ìwý¸6nZQ†#ñ*ï ÔØ)n¤Ý;ŒqÍú EœxRb}º¨(é>þI¼¨™d‰;ÔF2|HŢú+ÓºòÐvUO ×ãòŒ…¹[Í|Kz@¾ðî-]€Yjm/Çû?®»ïdÁ¶,´vÒUj)>-‘ÚewX¡+óDÒým1™’¸ tEyؤfßÀ»x);$ÖóT@`¾ëy tõ÷ :õß»œZX}¢“r}t93)’*Šs»ìÑxX,牄N[͘ïÒ¿­–ç‹XÌ~ˆ6ÇÍWd>ëyÝ\ÿ?NK™s7Û¤² 7T'[Ðq+O‚ ’Dñ°8ˆvDõm>}PqÅÐÓâ¼+øf¤u´ÓGÁ8ÅŒ³¼®‘0¨ãØðꎳóºJ*DvGIG¤dØe±²þ¸´²‘[è+ëC‹•õ/ðuKù#¶¸¨mZí¦‹&äøÝ|ä"ì¼wV”x)ªûÉØô{•¶üJ±Wm Ñ;+²-œˆŸw!©ËY‘c§ô¬È!ÊW©È¤è¬£zŠD†ÔçɤòðDò´³¥²³%¶dÒÏ}kЧ‘äè6\ɤþaLžÔ[ìàâÂ(·±ƒ7Ú6NQJ}fâýlã—ÿ’þdÀ‡YMûM 4ÿór%hú½Ù‚¡@7­ O®ü†þÜ»Zg s`ŒÐ̺7¬©‚„ ~ ²õEƒàj¼kÈ«dQ³ÝPѹGÉÃýÆño£‘îpçsÙ£EÄ%)]z0¼ÔÙt®SÖŽ¶ÞÄ]…“&º‚.TÒȬwKšT ?ˆÄóÈê…ì{Àé¢KÃæ/¾Mà»6“é]óÕ‰°*Íï¿2a3$31ñ‰‘úz¦¡ɉN!LJ½Lx™5'ÐGjVXCI ‡Å0ÖFÚE• ƒ¸.(a%°eQ‘Ó=øÃ€¶{zzeuC…‡VÆÂ—Ðz¶‘>@’#JÏl«û碜ú¹jž‰>N¸PWøÇ6®­>±w“ò³åX¥8Î<Ås1 OT׉‡Ä«;‡´wÄ}Cs&fŠT¼“ø¥XøIðY®îc¶Á«œ]Ÿöáw»òV™›¶ð€k’ÕѸµ£ölËfÞ´MÁç®ÅúîÜ)ª wѧ ýÌë_z¡ 'R¬zÐÜ„”ü4v‹Õ–Þ9ä¬Õ9E µÑ'ÁúQŒ:J]’ â"2·ˆ_ä€èc£gE_vŽhYÝ2šÊ\rc®TBú.¥ÄÇã9ãì‘çÈ^3É ǨñžÖå³z¼¢7ÔS²m„ã^t¦È«f7 ŠAë¯3Ñü5ùFÿ¿ dþ¾ÿݳÐY®´19©@ø˜û΀Á`G #B>JQPüðîûß{šÁÓ5Œ€Ê+@âÈpÚ<<œÉ©ó £üÌT,±'Qþï?é—ÇÉxYM–züÅŒ¹—A™4­2w4ÅK®Bþ4Þ›@¯Ìü ðÇ´{pÉå~ øHQ-ƒçLhù·|Š&:@gÒ}‡ï„'z>œþÃÕœaÎæÄëH5(¨IwwñÞ&oYd*53 Z§¿ ŽÀ¬a xñZ3©O2Y¡¤ßŸ( ÈÂi/ Kzh:bòb"‘Ñ‹¦Võý` YÑ~K´„½îbDK»×ö&Ó˜ïŒ êZ˜°$ïbéöñ»`°×Sù !µûxh $z²ÌL±¹ °"ßE»Ž»¡e8/ÅM(¿±µ ðh ´i ‹,STatqÞÇ÷¾ŽêO—Ðÿm1DK‡&Éù'ª[ÁMÊÜ¢‹ˆ¬4Êôøø¨¯K‹ßE\ ‹VtõÃЉÕE¯¢íƒýƒ3þ V _7uImÔ>4Ä\b.7.¦K’¶vÒ!ä §çºp¡c\…ú.‘‡!Wh˜ŽeTåVpæQ¥l5œ¬ qÄ:¸èa0d&Ó¢æ‹ê¸ð¸‚=ÁXû¸ÜyÈP<{`MN­;ÒtlI÷^ü6 ³ü8¨óä•6ìÆ¶·uÀCwNR$`¨1ãöŽê—aoê+µ Z!êÔ,p/ðr˦C÷˜øùIò›”îZùzZ?$c7‘7êuoþõ18¤³b@•Á IZkÛéÈ(n%@ô/]†}u攳‡Tx™,³!LÛÆü9N2¬²¯£ Îæ;ð“ì ‘£ L~ -EµX€B ]ÁÍFwÿ: ,ú€(>G‚¼ÒfÐgÉÞ\Y—ü¼,ŽH4Kcô³èM»yÂâoE#*ôuLkh phòV†XÞ€¦#Tp’çàø µ”â¶ÍШ‡1ïÒðIø¬ôÎ!#Eo¼ÖÄ2DÖ¾$çÆ–´oL¨FUœ^…v $èÄURѤ‘ñC³ @¶Ñ¼"=U˜&3›PV_¨ZíWDÔþ—D?€äð*"×ÚaðO`ÝÂ*û\§8vˆ6³yZéíKdòT”×MÆÃo[å¯ýz|½z[[-_‡#=ψT€÷2Òy怹é<›€5ïïyø]pzNÅâ&¡4Q~ùžgÕÝõ=ÏæÌÑH^Ÿ»z>Ϧºcü43‚]ȯÿ“â¦Nóà yã´w>Ì0'úD® aù8ÃÔ u>Î~yœ+¤fÄPCqÂÝ[zö¡F‡DÝÌœ¿Æ7#f` qG+ã¯ñïázýí,¯¿ßÓ3œßýMCn¸†‰ÝyÈ·Þ¤´Å—¿/ô`f¸×¸ ¹6À3Lü¾¬H<ø}¡(å Áï HYõè~_;Î,^êµ#g#¸È Í 2çB_ø`x ËvŽ1ü¶=m±–~-OrrF^óß—ß×䃶­÷2²2›ˆ å÷5?‘Ã…n¾i¨Æð¾ÎñN1G§è^Ûÿ xÑÓœåúIF»˜jÊòkÿhMÜS¸¨ OY“ƒnZ™gx›9þþÁñˆ]7ÝCv7âÐ Íé,¥ŒÑ¿™g@½«–¡Òáf¹z#ÉzØßa[)må ù:Á=€ë¼axýJ€Gâ@v,.‡®!Ç1Bë†í˜pED3_‡®ODÈdÛ]|¾ø¯§ÙCxq¹c3ÿ°yýïsÍ©€#Ïý¦}0ÚÌ¡‡ •v²- °'”,ØÓ¥9ŒŠ~ÅÓŠÖDH¿#±ÂHoÌ?(ègR„q4Ô iËц¶æÛnè-؇ž €VÇIQ¼L3iMêðÎËŒ Ê&íXE§Õ‘³‡-l~»6}6ázE–ªž4Wøüœ“R$¶–ª¦Ck ,ßÌW¡é£rž;ÝöpYáLF'6-'xì½—.¼æD”[Æ{˜D—œâL Ž#‘´¤ÁÅDôð*Ÿ\95CÓòLRhPÅÿ,´¥Cš]„§¢)~ñ]úÿ|.Yp¬‚°‘ß3æ8Ý·kEõ4qLƒ4· Í´¢=-9ÀsRƒbÞ@®‚GtŠÌ„Ý5ßI ü`sTÿ÷Ž.ÜDÎõXFA Ukò» %kOw,YN1 ®åØÔò´Í_{ k­{Z„ßâK>vΛŠÔÔƒ‘>©â¼3Òõžø2#ls¢K—È×B ‚y)å%«„YŒs2í#ÖìqÕ¦;|Å@‚#µ@•9ýçH=ÀùÙ‘ZAÛ4/1¦ÓÂQ¢Nì=&Îþ X¡|ß_´î'Åa„­+þ2Ò°› ÷’’ª~?Ε>ñU±øãë¿âØ´uø²µÅCi[ûôØh>—H Ú;‹…#%»!ÚÎeEÉ·y¤ƒpÏ"qþ⢢pM”ƒ&Rx ‚¯ üSü´zîqÅ~¦×¹bÆ£:S³~€ÕA”Ù€}™ÙàË8¡UùGzKèäø÷"¹ôˆö2/xeÄÍ;=ÖX^tØþÛ ­P׋r¡ˆã Ž Ø#„{R #ïæ@Þ¹jò8‡ƒÐàõ3(ò: âÇjºë’œ]9Šw­¥`„ñ2É !IyD"é?Ä­ ¼[’Ägü\“ÒÂDðZ€]U‘v,Ýß'äÎ¥â‹ÿ÷šM-ñ;¢M;BÏöyœì}õVv±ÝxºØjZí‰E¾ˆ,È–‚wXGbÛ“‚wçDÒlõ×Í!…ï§à"E1¶œ/IÚ™hc‰‚BÆ0ɧbOCüî†CÕ¡=¹!•&¢Jôà]&ÅZ:I£wûai5¢wŽkœâw`Ò?ÌTãø˜J]@¿;×cÖÎ ¤+ÃJøÌ‹SÜ-|w'õIF‚~ó9’úÍçôÕLoß|ÎÛ$Ÿó¤Æm¿ùœ·r>§:$ˆqë7ŸÓ) Dº~ó9ùQC]âÈW†‚‡F†ûNAŒøß˜‰iÐü'ŸÍÈ眸ý'ŸpÚHZ:)†ÁÐáo>§qDD0îøÉçé›ÏÉŒóÉç´‡Eøë 8W^0£~Ò9ö*o`?OÓÆQ9ΓüG42±É×Ñо/Üøí<Ù®ÎÑžì¿›\ÑMQ‹šgz5Å,úäÅm¯»¿>.§ûö¼ MåÎöõ@¢yŽ„©hø@È”21tç~Xåx°× QÚ½9ð^z:+¤À{]¬ÛhQ%?·U𠲕’¯˜†ñ¤„˜‰û;]N²ÀD‘—{8JS/7Õë)ðF*¾£”#O Þ™rAM7 çÞûuù_$óÑù6S щâœxo2Ã|šàÃ}Òïlýóò퇿¥N¿ýûr=à”9–¤ü빚Åâ¼ì¼p'’“N.ÐÌ B~r J†a..ñg'šµøôŠÞxãÐq’í¸³ñ&c/+Õø'¦ªšÂm®óñ¥`ãOI/ƒë9H© 6^ÝL½YÆ@=ïÇ ²Õûß ƒ?Àï!5Z‹l’-šÜx‰Lè‚<ª­o¬bVû´Y™@û¢/A­F@IÚÐ_ì¦ÉEÖ¯B²9#?];*&3ö¥•§ûÂ2&7?a½¦U1ó_¥#!«ìbýó*f’ò i~µŒñP÷pÿ‹äõîéYÓX$RE!Ž‘äÍXA ¢ÀaW1så³—.4­jþ¬Ùñü”‰&2í"ôfFBG’<_GZ< ­Œ5ãÏi¨ÝT’-ëÁ+ƒŠg‹}!a…‡¶è|Z¶¯ ¿Ý“92ŽšÄ¹^µ/ > ð»×Eœ¨dŠýA&ßO5?hðŒ¯»dTäW,±]SèÒ–#z¤Ó½\%Òfz˜Ç0íCG9\2B˜<òY_pR¥¦!ƒåŽGt³·ÃÍk!|¾!÷·ê°l3V/C‰EÕà9jù_y˜¥®4{Tƒ¸g<ßÊÉ&Çä¡}3ÑÒ·ž¸güÞµr|òùúÀÚ?œ‰¶Ÿ ¡Åì=R “gØF¼3úº;B÷¶"È4‚E-y",çRàÖ–ˆQj(“'v´š£÷ ‚<¿ÏåÆ¿)”É+¼98ñð³kSÝO1_PºÇ®i³åJ/É _,˪ð/C•NQoD¢ŽH 9BZÖöVkÉ¡öúïåQ´4íóæì“ÅM8†PŽ[ÑËcµX`Br2ûjOBn« €´­Ù[¨KY=TϨ•l=‹öåÉ)>[ýý·‡Ää!Ëó‚äÞ;5d$©Æã´‰2IÁ#N$²Œ0AD#¶N†ºÃ–±j ¢ÿè>Vh*W4)ä­ðóJùlž @ CÚF×™…ŒÐU"…hõ¡xxÐ~9F(üFxÍÓqøÅÙø‹ô{_zúÊ…Ìò+±¾…0Nyïˆç)HFXó«GÿD|œò½'žêxqú9%·Oñ’S~ïŠg§ÜROÏ]ÙÞ‘sWi‘¯y³ ›F¶»,1cK¡åTüÊmZ÷Z¦XgUÎzߦ½ZW³1UàÉc&œÐCŒ%$0,NÎíÒ¢&#C˜¿†Öà ½bà“ÆÒ=d KÔÈ>éûåßü»”Þ5:t‚t3òšîyçùO¦Ì{Oôý¯ÖõÎR§zyæcš¸·éˆÜ-yÌ@K„w>ÐOý\ò|Ì ñ!phCü>È:S­òø¤Ï§Ó²RúJjž !Ú$±¬î™µ"iÀFƒ´#ÒýE»Ñ Yœg7ò„€ôá”Ü#OBUÿ¹Ïœ IhL4`Š9YóßwUÖT¥Ð'iIó ½bú¤ŸOÿQöB@ãH×Ê‹=³ÒŒ°òÝ3¬­Ü*Y::%|@—•f„)–àgc˜é˜nGRô[uB¬çÆ3L-^–)áæ­œõ|ÓÏÇkï·öØM™n½zïÝÙÞQGF5›&݈µÙŸªHÀÉÞ-ÙXx«X9î^ðl$–î-@–Á‰°ÚeJ±úš;•¼>¥²vQCT†xŽë{W~mx'Óð:R çÈ_‘€,>*¤XÉs¼UMêîlmÕé‘°üFü“1B5#ãv=³Š´rÅòSëì4ÒO¥0ÍVÙš®'Þ™&¹tš³ë ±Ñ Pð,.ºKÆ@½¿ÌÀ™VÚ "eíÐR´R©Nlt~a¼¼`MCÒ› ˆ_æ`6É„uæjØgøÜ«W’j7¶ìÆžyc§x§'¾Äu˜[ÎU‰Ç9oø[c¡xpóJ@‘t740å å ˾Oæ‹ ‹mÒØé›sœ/vJéô÷-Î’TÛBc‹6VÎØ.š@8»®±3¾6yÞuôƒRºî'ih´ÄY;Û1š-¥lvZVä>}¸€U07ì-ü…¯!“µ'Æ Ú)}ßÌ'.Ù­È<:¯?~ÑU´'ö8Ã"gž„¡s¥dA¹ã¤j eŽLJ9 QG$‚#=Í™ãxz¶GÑ1²Î W&6ð$rGbøÌ`è^wôç2:9ªFRJëœ ²¾¯D±†®¨<°v'´˜f.a#¤OtJ©ÍXù9@œ¶ÙZéu5gšTô6­ÁÑ® r®øp€ùT?kËMð&z<[°›j£Ÿ|°»hö÷N2åNæ v33W€öåköj*ÉFE?_¡Fš¯CÖ¯ó}gÏÓ˜MÇòÝÇ2¾%ø=XÎÒô;ZfÿØì—*ÈÎõDìž\«éÃè—&€ßsLÜ‘ÕN•2ºø#¿µB‰Ö—wT ›ˆr¬Ì'übSÈbšI;á¶Î(ꆙS~ØB’xÁÀ’è‚bX¨N¬éÑ\P)UЏ8ÎÄÙ y´„ÜÁ-›¤z¼*–S·Þ´lº´“{Pã^f˜Ò›1KxÙË’ÌОsá}ÜSßL|‰Œ[C\èúÛã·ù“Ð)È7œ6EæÞ‰|ÈÊŸíUY“[nésÁ±…ÿ._·Ðг?³¿‰o¼HÚ•’ëG'zž+ið½ó¬¾gÊǸ gÐaæ‘Ó*K†,¶Ÿ5«wY½¸»ÿ”lÜp†¿´?n5’bHÉ…f þ7HÓà‡ÿëq±?HdÈÅóUê ÿƒ”Þh¹ªfñ$@²ý1R#éf¨Ÿç;)Ëò?iÜš_qêÏuNJ;ÖVç/Ú¸î²Ì´rf%=î Ý)·áA!) õøÄÆÇssú—£‡ÑzïèÂŽSÍD¸Õ Ç-öc$9™ÐV¾÷÷º³T4:Ž¡xð;Î>Ž4ÄÝ@:ê¢ÐýptÅ:ßþ×Iy*þX§hš›iù øÍx'I-à ӹDZHHØËüs.8N·œÄéFÊÂÉ’?„ÄãNPÇo´sN ~íÂÁ‰„„·ÁAÓ12ßëßãëh[\åáq ›žPzðøµŠÑÄã<ëåqžgN æ½V¶<~á0(az.㮓™Ç/£r3‹ƒhH™ÅÁ5ó>,¼%,¿Y7³¸t©~åxÐÒrE`÷Ý Fg+¾u×ô£ˆª|™‰:ià„`þ´œgéœÕÉíΖbã/î©<«õ†6tL£h'cÒ¡kº dïGžµâ£Âál `‚âˆmÜ®‚[Û6>tia‘€b”qÿ¥û”RiÎ’'MhôØÈd6¯“^™øNÆFš&sÔY}h×f¶uƒ+øK_ÉÓÑÇ9ŸËúFãæÅÚ»´]·÷ê‚p?zf v–fGlŽë°@YqÅäýÞ?+ü¼œ´åG¾ÐHÛã=ìcü¤?n|^`e‚cýsßçMgP±¤ËÐù›xþ}ïý¡LÃÞüÏK$5®f¦ ´À¬‚T[®îHmûF !15ºMß#´c¡r×’'˜n8û¹ŠD`•Íw§¼Ï7ÂN7Þ‹Z(‰Ÿ†„‚î=dé{\ešò)n\ó*¸Aµ6º«eà‹óŽÁÙû*R-hc,ùhFªÕ«Ø:g”º÷6ª5ôwÕ!]Æ©õ‚™mÆ«8µ‚½Ñ5î¿ôkê•ÞÉ™Vzpl~ ™•ü¶?‰qçŠV£† »o4ÍBïëŽä€Žb9¼»÷‚æÇ˜;W/ÆMddä;_QZ¸æ´¯¤>êÇÇÓ¢Ó0Ñ*¸…Å:m&]nD©0¸îƒSUÁ°"7ÎÞ"ò¤-®:eôÅ¥*¾¸&¢Rþ!Qy²æ{ºCéÓöFÔnm&ó[‘þد¨E³·ÙÿP·4*.á*TBúJ§ Äc$äÃÛm¤±»EU¯qÿÙ kAv å t%MÆdHš(” ¨æ4¢Ÿ7ðÏ,Fdˆ!€¥|c3½pÆJ¬ÃEÏC÷c^’Æ…"$@«ÖÖ÷³ŠÛâÎ+,½0"()rP±¹ü´ûçqÙÚ@’v¸ø´îNBÔ=ÃN\i[µÊq"z|VUv$ý-×õãÊ@'AÄøp n” £E‰ ½¾C­ŽBJ[Iòs·P(" VyµXÛ/ô)wMÒ4HªCáa:g0^SI¬EDP¼™©S:Y˜Ê^·†i-p/Þ0œO;-¡›`NІ9%YEY§V_¦’×ñwԃㇸh,­Ö…¸@}ÒlW{ÍåÝpÇÔS‚[î’å¾üêv;#õ3aA%MF jâ^i=Æ}PG¤¤ÎøDrt:Ãø1öá7Çlþ¼Ž>|‘ŠýX[¦¸Sl‘„åiþ+ÐÏhê>–È´v¸Ì´ß°#¬RqH;)|¹Ìجƒû_'ÉüߊÚ>2ˆ~Œww°`'ªÝ°+ÿ©š°GäÐ QÓDäVVØÔzƒóOi§ 5B£˜²ö-/{ýõR9mDOíL+¤ætF/„ ³ñ±Ñ‚‰(Õ˜?.Àða$3‡h˜õbåÃ)­*£ø¹ŽìP’¨`ßp·?׭а ,ã„Ò5Ø÷ëà2D4:Ç@'©:ö#[‘eìLº†Zk”<æcý‹†9Òïìᑺ‘PŽ‘Ø´ï†#—²yÆw[ ˆxaÁ&ù¢ 7ƒCý26-€ìsäupúG2Uë«ïA‰D²­ÄG†nª““fLù%¾BöµS®«æFÊs0ÿí?ãþ‹—©…®]|'6ѨÌÄõh ¿x¶)W6ß…9ΠŠw@oÎ[(ÚFCbRßËPZ²“Q4Ô™/{ ¾þYÅ™U|€¼jÄØ2»Ö¸ÿûxb$; ·>h[3˜ X@ÞUW»¼q²‹º%ŒgqÂÐ+ÐYyØ_1¢Õ<öÉþùýÜJ P†–ôE[’¤. ¾ôºP±R¯ºèX~I]ô‡……îuÄ]"Ú"Ämqܯ¶8¸ÁK¹=i‹l\Ï)\¢ÌŸî{ºÈmM½!~IÕÕ²º8‹yÂ쥬  ¦-tEGæ m1Hñ™¦#» èóV¨Œ³<*#~2Æj¨Œ³|UFP>*#áPx#kd‰Âù¾¯Âž˜g¶¬0b¼hæ›Æ´Ž[9â,.ãs}qpÛ½¹“¾è×1³t––¬1ŽóÕ3%p2¿#{î ŸBcdwhRùº÷f•‘y~¢ ¤iƒø¨Êˆo€Êa¼ ´Beœ%ejãäúœ6³Ú(ëþª‚;™ÕÆ xsðúQùêÛ“Ú8뿬3²zTæH:#Lã=ë<ªÎoÑ{6Í̘q@¸ÚèsZ#Hkcc¸Ö8¹]`茳þ™ÖíA—q¢Mœõ£@ÎúU Óxz|‰×ÙƒWešEœ)6gŠ hôßH$O¬-Œ¨™drÍiI‰Ì4Õ"§`} ª©j‘³þû*‘àYí0%¬0û¬DþuÍ:ýj‘sbN{Ï.?4B—œtöÓâLNsdÈ]´Úe¹Ëx2r Yö³'Mrš‡1ÔÉNGÓçøu¦9-3ÄøƒIFhZŽ,˜hð5,þ"Zó®:åsnF¸.@-ä0§%R‘º>Q¹Lÿñí· P)õ\µKDA¸vÒaC§D:/òÓŽ0OÎí+£ší ˜îü_'åéØÿ~§°‰ýNi×tz´Æ—W"A{¦˜Zéb H˜˜'pãÂɉþœäö¡¾‡,:72.'iÌŒ£L,ŽLÈnÛÁZ—^ N"&ü ±YæÛ/{sb±âê;Ç/¿†Ì÷;W·6!Áñ«ÿsýjukü¾š5 †_-–×!áœì½Ú¿ÿEJ«·$¯þ—’˜=(Êê<,Î3 V_ÝåˆÁ#Ämlõê §¯Î}Bž˜öɃm52ƒ…›ÄuÚ($x}×xBÒ4…ìÄèk$ãI8}¥ík¬¾þØúkþšONK<Ÿi)1;l*á}j^ ¯0ï¯ij¥q>(h2çƒV<Ö Ög˜ÉÌ÷Dà¾!5q>²ÅÁ9i—ð`|™UVœñ1û¤ ÝÌøg¶÷ ˆ}òFݯx܇$ù½ÄŒ¡³äNÆ×ü”€!Jª÷c 9k¹vØh|塜¸­šªF:Ôò ø,DË9K†ð ™ñ ÚÉì#È£tgYá–[;Cv#¶!ý^9ôpžŒÆ`¬š;;=2°ØU³¦žã ‹ÁÌ/žTÖ†¢$ÅŸž%8ëÆ/ÁÅœ£fkaßÖ³1´m|%€¹¦ß8ÚVu‘ΨÍ7D1~­®göf$㑯@ffSŒðŽ"6Çu%Þã™%;MêYó\0×—ûiÀ³ùú_ú…– ?¨M¼}jA«sÓ8ª_òx:™°ˆ¹p<ù Ã¶2Fu ß¾8­,]„¶F¤ëh@UÑëüä T°Ñ1ˆÂ¸X•RÅÑObÉÃÌØR ­öãµ5´æéSTD߉ƒ˜KˆÅâ c\F=Zâc_ J—ØbIxÕ“Ž(¤ßÓ¨Ÿ#êËßœá·?ªÙA\u²)?‹˜Dº¼„Ûé¤ü%OU‡š^~' úuqË«ß ”×ëtÖ× $úhQTÅëD$4¿›'y02Wå-‹Q®qZŽR”9`X†<³/wÁq g—û)¦ñô'Hyv²ì¥41dM?AÊsÜ€P¿“SÒ‡I½Nxž§3¿ž'¢üxžÎŒãŸO‰`™‰Ó5xu; "%²§ÜítL€êwŸý„)™áûY¡Æàû_—Óa°…=CÂT‘Éåt¶ÇÄXj×ò*eÍçͧs"©Ö|N™æé­‰¦~§Ãê–üN@è®' Ý• ­Ê]O@»ì×ÏÒq5É^´°3þ¼ÛJ~§“Üy;FG:CÉáJNÛ)\yB!ôüØ u{c0™ßéðp–û@ˆþûŒ¦Ç¬1œBA¯Lw;¸_ò:„bÊäu:{V“ýtyvþ=ž&û­^&Ì<©}r檗É>“› 2…ê‰UBZ*»™>"œsZ«§¬[N¢ôK>ùÆëý’Ãô8×"(1Ò0Y?1>޵a}dR‚ì¾cÅþPÇbÞuVíɹÞ=9 +Ý““rS„Ón¬†´—.b ½d€ÜfŽZËÕÆÉ#Ù€öºI˜·…”ò$X‹l&+äz÷ä0C®÷ï 3äÖàPÇÍ«Ö¦Ò ‘ë ”mÀ¶¼é¬û°_âݓùœ#eq´orX"¾nŠ8?„-’HjŒœ¹‡j‹ÜÕY¶¤ ²¶ˆ;N\g]?—¯7M~®È^6F|6CƒŒIcäZÓä0F”ܹ-ÎÛj+Jç¬ÁÄhà.udkä¦ô=ü-ª°±9r½grÚ‹Ÿ+¹c‘ÓC MZ Þ‹–s¯~v-ã0ég@z;ëÕÏ‘F²x&ÍQÓ’Š Õ4Úù3EÝ69á%t´{ÝB x,loñó¨†R‡N9}¿O'—ž±‰Ÿ¯CΦj™ª¤ øÕù¾—aðÆLZšàyí¬¦é¦Ñ ©¢Æ¯86rM‹àBQãÁr©›+jLê5´-`$E‹¡½†ÆõDE Ú^Ï7lÎçÖ69Ví:0÷D „Ž–×rëBŽy <@b+g“ä «h— Ê“Nv=Öt´LI|¡- GGʤ¥).¡ªit鯚†»)¸¬ç)8ï‰ÚD«”|z¬œ¤§9T^RÔ¸DRô#UÓtÅûHjš3FRÓ2­%ÆõPš¨i\ö@ôÐÓŸÍ5F슚ÔF‰0n­ E^ÑLõ¯}Ö‘45>Ž[¹mH P5¦f½‰¢Æ”¿7Óº?höº?ùª®ÈÊš¼ëÑמ1ŃaOIüe-+l\*lÏq[ZhhlLBÿÙ¤¶ íÑÜŒ””·¸348žÿºÅ=¦/¦?¦Âq­ë˜ê+Že÷tÈ þ_IïX@=®V`ß´ÐHãšÊоö9hè„0“üGê3°óÀ´×Pýoz`Š µ•‰A QÓÚ'§¤SX,Å PÁÔs>'@M¥€Æ¦• ÛÛ÷::éž· öo†H°b³ø¯=\&ÿƒ–¿5íÀ+ö“SÌ@LùÀhç½ù¨Œ®?“8¯Í—æ AïIAžâó;ßùM.a‘.¤~0‹p-zœyE·Ý¸µt0+Œ×Xí˜Zo¯H%0-ã(íÍÉ”b÷ÉáÇÚ<Žf\;1l¤m¥£@¶€–ˆ”¯)wáÄœ¶%#®BYòlÙf×õy­væ0dOçã@–ÿÌ|ÔnÇ–ŸAòà HvT¤JF„DÉÇ~Þ"&ŠEXS’F kOå"vj<§_P•èrÔñïç ¨h·³ÈGA•ÌÅd´ƒôãv~ˆ=žvsÊSN©é8¨©p¹û“>§ÌÞÕO" ¦ã ö”¬<âÆS¦Ž@„*Åá#µ‡Ar¯‡\÷CÁïN‡BEì¶?f=¯ª ? „à;NG„Æ"ûøê_áo…ò?'REÆ“ Z—Ê/v"žš™Œ“fKCrB’!É dkµˆ1‰BÔ"Á°”Âúà¨rÏÀDbgúL(¿Í–ËGÚªô¤Ýd”H8º$5TT jùþ,|Ïú¶Øáu5‘,;Ý4ŸÌ ‰ŒœˆYÌr3€ìÙ!U.·]ÃK¾êZEg‹´/Ä&Aè)< Ö‡ZÓg½=_÷æâBª‡(¦¹¶Só5à&`¼h”u™V9˜ê‘–rFÛ;¬Â²³€ˆ‹kÊàn¡ék²\tj³@’ÜóÀêá"f¢¥©aH’[rá®sd9›J.%gf×窫R¶4†¹­Û7[«¬eû€—d<.|< @Š®;¼0y¡õÂ"h&GhI¿8“H_Â%î‘òC7Ø!ÉuvÂÀº«âXÅד6t~m­Ë©ŠæQL"¶’ëÐ딨üq!·4š£aËtt…••>¶³ZÕ}lðq«‡œÐ(Kî$j±>:î¨üù‘~ÞI‹ jÎcë¹1̬LåØNlDÿïç:øÿ%ÞGÊ£ø.K8)1G—›±FxÆ{°6yÃÞýVYëò*˜ÿ•5|µ0Ä>4Ãêª.jeM Ž%¸²äi¦7ú8N¹R~{±£dß ¸%ѹþðÄÔâÎäÐ÷«ÇWœõ#wSŒÐn=ˆà¼rW®ý½'tÓ¾~aÀðÜWI:v|,Î6ãÎSµ¾ÍåïE×KéÈîò×lY·BLÞËθ•û¿Nð-é¼ m5›¼-¥ä¶t'ékeÑÛ€=…fR5å·]éò^W¹iC–¾÷•» é¨ÎY“»°ÊG$wô ]n#uÛ#tá$,â¡5¡{\÷ ™Ë,}?2÷B¤ÈUšZe­ñbãÆZ+ÕÐ7ö–ï•En+o¾umÜÖNÊñLæ¶êrÙD®“òòÍ.HuIà6EoJò£ ðgyË|0nMò¶•!p‘è8Y¸ì|îYàZâ¸Ä$qÇ#pOxÑ\âžP÷Bä&¢Ë\Ä›´âÌen*6Oï=šnãB—S›f„ivØ¿—˜áºXéuO–¹­üFÁeý·fõ«Ømܲ뻼+¿¶~û£@‚‰ðL¢Ë;JÙYô¶âÕàÎÑ›D/–—÷b–ž_)˲·ÁJr·ÁÖŸûHhh¾ŠNAÉ:» ÍsEÜhÜŽV’HQ^C«Õà’ÝŒ¸Ÿi'&Àí^úÆÜ÷ç± +Œá/N-á2†EÇU• Ñß<)SMm>¿ ¨}%€FÖ^âƒ/Ò¬ ÷À¹ iÐÉÏèIÞ4ä;‰¼Á¼;BzTÆÿò_-/ ýÁªÔAìº3m1¸ :î›´bdK æ5oíŽnÕ‚U<=’Í}­KmŸç:dò ”ÓIVk§^…ñ„È&DzåUA¤¡^å¹C^ãßæ¿ÿMÒ‘Mö ò©Y‰ÿ«,ÂÝœ·í!ÐûmøVHS9J—¼œ»zsɇ£3×sáÀñìÏÐ?‘a‰÷A¢í [ùè¾0Âàäï™BãéFFÝ?ÂXÍÿ+¨û¡ÇÏÏÁ³ŠaîmÜ]ä~.¼±û´¼GQÈ}â­9–FÚ;.VªÕúïÿ™oZóŒëo²výM鮟_^”ñý5QÉcdÀ}žºÓp?9§|Ü ¸Ï{[÷‹î»Î1#¢í•i—A÷ÀƯì¾–DWÆÝŸ÷›õ!KƒšaÙ¹—q÷§h„]å wò4%‘\ù#òø?<ã¤Ö%c]ìŸ 6—?HÝùyÇød™§IÜ)Åò`¤È‘×¶?¦c‡¯l¢ eI:â-È8†ÃÓ%.½OÛ›çAõ‘ë0MM`VÃ]J$¼ÕVÓK9V®£RŸä^ÒnEpŸ[R5õ³BZÐw·õÏUðõ0!›B“V¼ Ž$t…b}k)¸¡fÛ“òbÝ–~¾-HHòòìu,6©Zé}iF1&(ª<ï«5Ao¢íGýø,b: cY!ÞǜւÇ/+¨EæEA¹i-@­ëRè|H¯€_­± CNç*øè.Wo:¶’,ŸéèE"¢´¬l+áhèÀÓåWÌ9älpåˇÂUZD‹Já®'R{ÊW߯gè—›Ð:t—8 ª1Ÿ ¤Æ¡&ØÈ–Sö nÓdI« À`ºo¶k›P¼œ?Éy °_ øX÷¹¬vëéŒ ê;ü9ˆ±Ñu}ÛP¸‡v_®Ù_Òÿ{Ï”ñ„™»ÎaR#ΜL“¿zzcÉoD¹Xôº+ˆ4³p2®÷äb;4x³y: bñÎ@ËJ€¶HM%(ýlFšYŸÝÓ‘ªv5‰’ö #s½¿ºs6rþX^>ëï¢;Í] =¯:^ÎǪ»•Sx¸È%ž+„ûm'VÔótÒÂcC }>—ÑÆ>âYÓ…?8(Äj-/ûH§Œ®{&Eý¯“tåAâÊ£Xx{c,;ÇÖhZjZvÉ`—ìYuÑÃÒ’ó¡>ËŠ%Ç{%—Ñ—|–À&¼Eðçì¬wÁ—–§#q7å,Ú7óóÓo]lNé;‡ŽÅ>;”ŒÈü(€ÏkÍY¹me¿òY†¯©Ï¤êÎö\ÒÆY ø"ë|ÖI¤(A­íÙàHÝ}öw"Ûö<»™EæZ×8Þ«ŒQ‘âSVZå#îÕ«|¼¨"šsûI{›çê]è³? ôZZèw6–bQÓb¡–TÔ–šÒe\é©ákoée¤Õæè?W,ÆjKgÀö,·¤ ÖÓrKÛ¿•e:§H™F–S©Ê¾yÃ#-f÷ÕòÞ¾ÉW模ÜWý]sÐÒŠÛÏHÜÉ«Ÿ{>«ï)ù=g1 u¬6{µ«_—–[fá(r–[ò§àôå(óóÚêŒ<ÞtueÅy98ÉÕWüÅwoŠõGh³Gì å”€gÍ9ºwGÞá;þîqŽ2÷¢šºèók+ÉóZÛ³ÜáW$I¤+Ðíåž|†shÿãUEÈÜrgtµ9à?_aþÐVÜ7Y|~^广¶<¯U:[üÊæƒ¨tºú"ÕÃɉ˜º©yÝ‘Áñ¸X÷êu·î’ïÛ[yÕ± mK…®úïòrùW±9³z 'xÉPùš?Aù¹É-Ÿî1éãIN[-ô_î>'6ô´¿îuk Š}“.4Ò*QmÎÆèÿͦ;7Μh1јêZçÌi@ÚóºÏwr3M2¼@ÔΙ³qó[„í®µ $ÚôŸ¢ö\¿Ç5ŒåÀˆW:ä2ÿÊ`ãTgÝÃfw½WôöI—ôùz‚Rã…FBlyѲ€ÁÌMôÐ×_×e„p4ÑW,în>įEÆ!¢¶Ë}S–´æ”ÿð¬Å-°ü2š§¶Ð= ‰’¦ÉÂz!~ç^´(bïÖ‹³6 £ÑX°]ö)tÿ÷wR°Éÿþ"üÁ /ÏÌ_îÊ4{¡c_ÿIúëÎxÇ©j¹Æ…ÇÆ™ì½O2M uÒóßÏ“D~¯f#;†àŸ®úAq¿Õ)fš>îZg°¿IÝ™ÞaöOºPIé3ïþŽ 5MÒE£Œ]€¶œâVC½ÂC¤.†¼¶‡9 öaã^ðÆn`ï‹*”9ß^G%îæ\pxâ¢ûoõ,ÒØ*–âÍ{‰spM‘¶hþ9º%­>9ÌJįÒ1µ ×YŸI à2V—Ø"!vE¢] £ïÞr¹s=‚ò mØë¨ìs]…ÇGe(GZq™D"àÓḻ":I‰c¨t\677¥YGÿ¦XNÅi‰ÿàŽ‡‹àiúî5§%žíÃFFúëÎç]³­£Ù(W;Jv­¯úýím+üŽÅxØ~¢Eº0lã¤øÈf‚ ÙëË¿ &ÉJ>mö®P™Þ¬Åþ—"ÿÿ !‚ÜŽîÃ7ÎÊQ¢’R/îýHo×TAPh Ë9"»—|DZ_œI¦ÐáNÒ?¬V XáñÈÿÊL/ÆÃèˆQ°ÓL¢ãPnÁêT&é]ð¾â¼G'2è:ò&ä>;Žçê¶CäIÒ’¥EÒ­A{v>om¨Ër¸OYµŒÿ ëð?h«}ïüR~Í(Úbؤ©c¸Éžµ¼œé/Š*Ýö%[úoçKt%n­d¾\Å]å€ÒÜQÍál¹ª©HÌa«†F'™W˜‹ÿJ¦kmÁœ. ãúU/çü‰®Çe¢ÖÅùÓúû{&Šq'žt‰=wÊÃwpçÒcÒù„¼œ?1æYåÄQþ\5ޝ­À¦é²ñ„ˆ¹h§Ì`ÑU]„¿­Ž%º”pè’‚š`Ï Ø§~ØpE¨ê’2ŠßõþþƒÛ2Wn+7OͶççm‰`#ÊwýÐŒ/ƒàŒ Ò>¢ *cîJ©# ,Ò®ái ΈŠfs‡Â7À-»ªJMüº·'©¹·/•^Þ6²qœ/ü°ê”¾Ü;f¸ ‰dœ‰;I'ÉrS¯s&ö~aMA掳&Heï,:·f%ÎćϽd‡jÃųcîÆYñÛÐB,ÉNLèyy3“lI÷ÏÒÛüÚjß;¿”¿˜/³éõ~qeÐìyW¿í/‚+ßõCsÍÔ Î¦-—^6½Ö{.ë¥È˾(þp6½è Ow*«ÝñðýlkÕvý¯}<|zµ3X\?ÛçpNuæóH>2åÓL2>ųî˧òøÄ§xýzøôr {;ŸbÔóåS>g<>µ¼|ŠÉè™O‰Pî˧—»Õ·`ÓkèaÁ¦™dŸ[¾§¹OÁÿ )Ϥ;¿”¿˜/³©÷Lª8·$^ ¨èªx§Ãx¶'©â]qX“*Þá?œH 3/w%ËÚTñqŠ´(Õ¯/ÿL)߯h÷ß«Za)vbºé/’)¼xÿ¹[ÄFˆ6ó8O_þÇ?'ë¼øêuEÀ]Ð:³u Ùl½:ç¤9= ˵°G ÙšÂ_MÅ'Là‡gŠßæ8ÀxpÀxBŒWQßP¹Õý¼~bÈu­iÍš`“PsCX†/ƒõNï´—;/nDoÄ•I‚nyjc»Tp¬úÏya,¶£ÙZÞô²9 ítѵm # =‘¤ÜE®Òœøªð»jU´å·îƒÄE´×@û¥ÆèÓ”Õz°•ã·å²]=à4~˜â‡ŠÏ 0töMyTÎaÇ÷ÝŠdA>ý0q¢ÈÜê^ÿˆª¥®'oAÄÕÃðY ‘r<þ&'ùšèªõæî|:V´È¶ŸüJb9³K*¶T•ö1[ ­6$ÈoGšíëCÖî)ℸjñ JµM¼±ŸP–}1Ñ™å"‡;_6¸W(clé#b'¿äW̱eGGÂ0RP¬&3]kä$GK¦¥\ t÷QÚªüöyôL§™Ó{Ðømÿõ¥Ç QãMÄÎ))bx’ÂÕù3ÜÒ,1qm¸Ç°£<ӻЀ„ïí!Ùû•y‰Ôk-ò$ú²(!T€±Ë‹©’µšxZÄÉ•%ò"¡$ír7æGJŸ_?Ú¯«$î`Àl¿{p·,jÄA²¹€ îqÔ íÍN=‘øóȇ~ƒ‡›“ôÌOÂAy·tËÐc”‡—œ³¥-î_r?ÙЊ+ÒB½ô7qjÄâ2b/Ïue½%mbiÎ %7ŠN°¨³KW…ÆiÃd_Ї—š4½=ü<6‚Ã+D˜$7¹X‹vË´Mò£q“‹±œ…–ÝÚÖ™*ÖdŒÆÎÔïãÊJîά†"¶×{}ÒÍž¤x‘&*ç1‡ø/ä»G,¼ ©£ŠE6¨ý²žwòÏþÍdHОÊe)ƒ ZyÂi;¬»¤õÇ5v*±¤H¤»¢FÒ!Ľ&ZãV…‰øœ¹_AAïoϬތ‰%cÜeWoˆæn8;›ÐyÈ|YÃA‘>[Öp´§ˆ)8þ$;üAˆ/®ã ï‡Jb×q0*›2z¢~K:ÑÚª®©îíœLSåKWÕ”AùBÃ;–É=²@:­èè*ÎMH4œD°›ì·ê7x´T˜¸~3vèÁžºäð>7ýf°“¥%ýf²ö{#‰Ã3B½HìaP>So†õv3Ì €|¡àpOôTK N¬abi3Æ”ë8XùÅê€ë8cº4t6tâK¨8C­×qÁЂ¤ZT¾ÐrÆT׸OËDÂôvðr™ø½qðgìð{¨Ã;Q‚åÜ¢*Î@6Ò©IÅ;¹Btƒlö„ܤã0\'6¹ò¢5Ià RÜî|.Bû%WpFÒ ì“Äư+9 1(Ÿk9£•”œDò=v¸0TœqÃÛU­…JNRzPp>'‚Äð|®åŒãþ<²ÐÏJÎ8I½‘úÚ¤ÒÈUf¸Ÿ!ù\™Ö8ÔÈä u’@ù’Tþˆn­Þð| OØØ¯åQf€ÙßÉÜØ9/b‡Íh©äÕâ:<Ûå¶.¸ I»””a¤Æ ¾’±ö¤‹B³Ù ÷v&—þjrDC¼C'KßÆó¤ ªK¸DHþ$­hÄM«ZÇJ]W×qáø·èîj詆 جöB¼‹¯ÅjÎKÓCŒž)‹ªÚį̀Šm¼8PT#à ÛÊ<æSÄ쓢þ*º¡åL\ë xàõ+6,¶0§¼lž)ŸÚÀ̪Êh‚o5M8äjCç½ÍÚXÁ“ú­‡úþº‰&Iùa`Ÿ¹ Tn‡j{ÔÓjaœ æ½¶˜„Ù/ Ï‘·ÿä©FEWþîåˆodÒ’íz•¸á¤¸È~ó“è 4uƒ.ÙdçQdHî4Q\ß1 CbðÜÌ’4¦–wÚÏŽäÀ££©Æ>TxLKº›hìÇs¡#«›ݼ’  °µwMM K9±½@GæXØ ý‘'à ¤Zÿ¾¿’l^¿y%NŠò%£ Áü¢hhq>>ª£¹H ¶ Ù¬=›4HTYßìr2²"ºb†ÉëbìuÒDÆ{Ýl ¦Ãâ–F´´Q€:ƦßK@“ 2b ”@­Ê%B“í% žßüºuóë‚ÕƒA£m §.ͪŽsV 7\šÞ—]QÂÆ+[‘=¶‘@37Ñ.Á)6Q»p3Ø[ßëÈâ¨C7ÛtÑ®¡WïÊM$»8ñV'Åši‡Q‰0ÔÛéXSZÞk»þ¤ìúÍ1Š•ÿ'Qh£g#sî hE<ì(9ÜÉekª#Þ7j“£“+ðmõ ó_ìª`Á«¬Lë¬P=xÅĆ#r#Ëg#ª–Š íK'×Õt—É\»Eö"¤vt"ÍÛÊœ®‹Ñˆ68ð¿ræ4–ÀÝÅ—§T€ÕZ} °²ˆˆC'ÃIÚø)4x;.ã€u¯[w—Ì–û†|ùw¡c]=At_EÊ‚è Ee–ð€’åÐÏ™ ü@ÿòéZ¦¬áb‹jì<²SÏÏAƒ0=*$EUº06Ü¡WÃi!Bµ?‡ë:Ð&F?ç¸-&ˆ ÊNç³Bi²b¥ \f8ûÂ댔fû~u;)ì´ ™ã9=ÌÏñÎ.#EkõV“ó£'¥@¢ÈòpûÆ´s7Э3í\4 Ò”Ë}ÏÇ¢÷!.ºO†ðÞ!TÔ^ßó¹aÞ4­”sÏIÓçL`&¬ä|F;¸}Fr>Ÿ'~±ìÞR&œÏôE‘•¯Nå“’¼e â 0$éº%pVr>Ÿ°›·rEFÀvßs¬…ùŸƒb>èL1Ÿó¹tø%™ŸÇIî„Æ4Ã&ÚÉ }’Œôݸצ9¡¹ômc3&–þr~n#¶Ûl0n°û:EL!UFn±»Ô IV2rnlUH2I—(QT19Wð³brKrÉ,ðKVMÐEΖT“«9…¡d0åQM@ì4åäÖÈlL÷ Lž¤œx‹€PN2)Z8I•ªßkRåäÖÐa,1‰±<ëÜI=ÄúÉmÿ\°v„XP[tÑLÐD` À4‡fÂMB/ÁËiJ[ÖKxÅÛô ÕK®IWL®´®=3“ËÍ…W ÅäJÅ“ë&Ø l>%Ýä–8ÇT7É$ËNK$ÕM@¢”ZugŸÐMðÎûÑMÀŠå£›$Ùc‚´>º Ñe¥&ÝÄ;A¸nÂëüÑM°»Æ«›ÜæRÖt“«&ÑN¬°?ª qÐVI5ñNIr'’j½ ’@ýŠ]E1#K¹·ß*õ¡GKíÄ-%ØÏ3U¡»¥æEýRRæÉªªû¥zÙS ŒÙ|QŒâü!ùø¶ÿIsUÜEÅÃÚ¥Ü䢲JÓ奸ØÜM/â¡bq’#9‰ ³èY¹Øtr/ìçº5‹`©‡Š+v¯2.tªa¸¨¬Þw$UÔ''U"æIù£:.ÊUÝQÅ0ÑQÉQÅhÅîâp ®!\®*jžâ{WhQêáS-™[ùB þ¶‘\U UêN=½©S¸P‡ãÌê´ª¿*“Ôa¤<+3²!þ †ßʈ=¹®8X~áºbÔTó#eÄUR¦³ó pIz¬g陵ʼmÞÕ>k‰=5­»ÿ¸’QºhE›ú¯Qú<,®g¶-šJ¡Û,3{°_\±Ç*ÅÛOQ› ì_aua ö|Ÿï¿"é­(5Yà”´F^=úí÷N¥°¾=Nð& æ{ÓŸ õèìAa)+´g¿Ñ :T Öš8VæŽeÎvô-KvÓŠª[ Àô?ª?LKî€F»‰ åsÄ#¼vˆ,ãQP ÏaaÒ†¸­ð­^þËÀkzþ‘î§$öü÷û;æhúiò ¡ÊXâ%Ü ´J¯çVÔ›»!£‰Q¿½ ™?aŽÒE+( ç‹ðõ¢‹Ú¬e·&jTMsÒ ô#ßLj¤„w×:Yï¢yS b™çŒÚBqöxk2÷¼5Àž¾ž’-½w†³ë‡ö{gz>÷úxɃ|ûДyÕâ h>˜—,çrÏ2ˆzâ\îMÂ}à'£ÙJâ]¥ÈsÝ=%³. Â¾U u¸ßë2òØÖ²4a]¶YÄ&ÄKÿÝøŒ=öͧ bš¹þ•éyÆÌÏk•“8‚A‹ ë V¯æ•*KcVÎÕ¶MSøA|2PÙ¯aSRQ”­¹·OÍlÍð#dšg¶fZKl%XèðÔÃ{+2ìºåòÎC‰æ¼‡¤ÑÖ[¡ªø­¨ ÓÍî쮳jf«Hé î;œëÔóe‡Ã5÷EEzpß‘àÏÃ}÷j¹*÷ÝðÇ8÷ݰí‚ÑîoÑôýÎïý÷e¼ûïËwÇ}¾C‹,¤pd¾;溮CËj«Ú1®;ÿ i$Ž:™ß6ݱF¿=ÿËoû_ÿðrð²Ïüæ)÷Áq‰äs²Ã ùrSâº^Ó:jO»FúT[$ÚEKçnþRRÈzKF¥åccPm+gck¯\©œaºw¦x5Hs]ŒPšÅ€\ãÒRò³åÖch»Šà½´ª|Á<÷|¯ß\¸ŸrcIPÓ³‹.­j—ÊŸþyÒÈ \2¨÷m/JÈ<žS’:N/ ªÝS=GdïÊ#xT‡˜îhS¹8;xI#¶¹Râ†ìÍürXå£Õ¬=îã¨Wö1?ͺmó¢0ÏA¸øžiõ²þÅY{öÏšLtîØ`bëé ÙÎ×™ä)\)o›¬:ÔÒܱå…Ág<¨§sõD5~—ë\<Û§|Â)y5¤ÀWÀ¤®}êcî•&>vŒÚ˪ /s‡I‹Ï?'C¦ ˜oû>2¬R$"Nndl^ª¢Ý›31‰´šØœÇÓ-/Ïw?Ÿ5·º·'¾@¨a‹vïL~Nd‹Ÿ!tq?LÎ͆_&×ËÆäÜPÛ¹¿ö‡Ëv:aær„&< ÅÞ¿pæ!k:ø¡ŽC§yv²ý|6+Å'ĺ»ÞX(ˆ‰ä±œÏïý]à¿UIæw^Äޱ8³;ŠLpCºÌ˜Ÿ&ÒÌ™=Þ<˜Fç Ï_Á)'æòNU;úFd2öçî•`‰Vß@Œß fÂ!ƒ¹/Ý‚Ø×3ÿPÒ*Ð<ßïsŠŠt~ÎÖ9U™ïKsŠQÙ±¨ÌŽ¡ÀÇå5úYK>¤·U½iÅ‘ý¶þVJ ÉHÊÈàB=Ò(neš¬â#8±®?G½Oz§â7ÚMj{ ú!Ù¹¸<þ¨w-ôCÅ/˜H'á,Jœ3Vƒ÷-&Cá­‡¼¿œÓ¹¼Ž» ÊWë\ú8ƒ7RÑ]\T°^åywH£ UG‹·ÖÐe€p9‡d ðä’5F”î=ôk!ÍÐ?ÒÕd"b\ âÈÀtõ:¤²ÔCT£™Ê–Ž|°ÄD@Qà8Š”Íá}[sÊø,)ÜÛu"C­ Š-´tƒébsšó€ŽÅ†ÿàkLzÁ(µæ*¸×m)Çzñn&;¬‹“P±@/oy©ÇüͪŸÐL›(IºÖ(b‹t¡ƒàeNÑ5ÆsOš×8^‹Œaõµ%䢋Œ±ã$K‹<~¹ÿ‘Üo(µUÆDUÉû´U©ÊÕ«{€y±Y5ñeÆJ ¢!–ù»¨œ3vœG!)MÜö‰¨dðïhC°Ÿu¥ºÝN̸/‡¡Ó„ö‘coÛ2‘ÃÐ|8È£·À– n˜“l:í BÎð9—SïQxyLÝŽ|I:ŽhöÒv¤¨ذ¨Øü?@·.Ëóâü]¬Ïwþ *‹Ñâ·Ò3Î…¶;Å;ñ`]À@¤“hÊúÓæqU4ó¬Biò‘:³ÚªäOŠ_IøèÅ-¶°Ö€­;ü•dÐõë—O@;½Ëùh¿û#>:t¶? }ö¿XØ\ŒÑd6b¦ wùÌ´~Dº7ðo’ЂZò‘væh·m¤Ô©D$Ú+_€zš>0’˜I„Às>\*ðp€]‰ /_FŠ`-|Ýlòv_7†.ÊÑ-vúÑæèÊ9±9*7ëÚÈ©¡ñ$vÙu±©îÑ@¢Ý;šð‚\ÃpÇ5Sl²Œ² ŒA ¾Ü>AÐvHÚŽÁ ÄWmZ™É4®Va.FF/’ú?|çÒiùë ³¾š.Ûbj dš³VÀd!–¦›`õ7FhÎvgQ¾˜ÌG˜w»0ÆÇǿٲv˜Dv|åÏfX“‹ù‚ ¶Íz;‚N®à¥ñC¹:(›#àÛžÀ!Iä~³¸`è&hu-xÖ0»9Ò2Í—æÿovÅ«Äòÿ_x ì¯ü~ãôP\ ûÃ\q ü’Þ{$Ì3|Iá¶_vû²Ô¿?Iï=bá1+ÿÉþi7DôoPÒåŽÅ˜Þ’~z·+"m@rËžáIÜ?¤ÅZçlvZj@soï9Q8Qµ vYŒ‹nW!¶6Cæ‚6í^s‹¶—ÛsÜÞ{ð­daÁÉÎ{½ÓáÇ»¶‚t ¥®J¿tÿ.4ÛZí¦íqf¡‚΢¨xÁÉpñ¯v;%ª3@Z5˜‘Ï€ÜýzZU–½[š¥Lû!ŸÉxÃñ÷‰¢&d'"­¥kÌ¢RÞ]ÕÊÆâç–…^ ‚yq¤cP»žž®¹9çï>‚ïÓßñKüò†òN3;Uþž~ãU‡ú›ö¹-ÐÊõË+ˆE6ñÙ ÿ‹Y q÷ :‡#˜ ºàØŠ¬ €[î¹ÿÏ[ Ÿ·ýõde‹†&8Ò*y¡s¸¯¬w³ŽÕé Vaô`@ÛaéJ-råäЦñ®êõȽ£J‘ù{¤-õÏ:;­øvÁuªnµú¶Ç áy8*«&ü‹a"Á{eWI´(Œ ͤ»µr–Þ…ü ¤‘JЉXxþ¹7e äau.—”Õ ^—)•¡ï‰íŸ–jª”g¥õ‹ÿ-XÇîüR~¹P(«ûßË©ò;?ÅÚ>ü/bŒÊîýP5Šs(, ™xçP¢ƒâݾfE!7 œù’R¯C?àÄ …ò+3¨þ< M¡Þ‡A·—™AÏ¿þTRâö`‰¦¬ì  _¸yƒ?c zKé(åK Ê à}ÔÔQ½k#vHå©•‰E÷¿ÏÀˆ £pU5*³h‚ICÛŠ¥>ÿ~¸ÔIÁ7¿zZоLlŠ8Á{¾"æPHߎó•d*}JS ùVFGÑ„¥½Ã›À.`”ôlî ‹,Ó!]p¸’]Ó¯nx/Š­,\03=æpžr=íméTåA¡Ï(søE@k&ü‹~ªú÷9çŽÆ XËJ—œNÌ"§ójЛ‡xm’ 0˜Z]Ã^î7ŠS}“Y€a‰¶¡È§€‘O$†‚4øÛ©1F\KmÉŽº˜áæßlT"Ñ´"ëp?RîÓ,Y48x´d1"btÜ¥éúöÃmC0£dÜId©š5ê^puCññá~l]`šeåa½%kjþæøi¼8 ¾þÐÌTó ½|Ѿ¡5knvû®Â³õá<„ïzª³Ž9‘J6… øÈÌÈvWü™ï€ÁH¤bV«ÐÄ4Vvà}ôZ ‹ £½ºú[…wU\›À©Õj`åF‰í;~¢ñ{nºÃmßtÍ.ÞXÜL‚荒'¬VnOh’»–صÈù„ýb@á -®Ë¤þL¢‰©a ‘þ-(?Kb‘¦X’õ~ŒƒÁ¨Ÿ%Ñ¥HK¼Þ;n^’‚ý»"Û\c¾"JIÓ¿~d¬‘òìo“JZ ™­hÜ6n^ Y¥µ€82b- à ­Eš=Ÿw÷ÃüMsÊ3ï .ÿòEÿÑV6¥æm”Žm ëHw+º¹»ÐdyqeŒÎ„òž-߉F+‚£rõËu)î¿ô›ŸCÇqCM+7¼âÖw,'PrRCm’_ÿ‘~:ì†Å$„{•Ë>î­˜}=±É]ô©£;×Ê—!–UÎ>2§œÜê½L÷vÏ&w=Br6\MwŸ:«}O»ÖX &xƒr:cÙ"^\&À'á#;h¯=Kؤ¦ÇáÄNÐ6¼} ³‚ÔÑ躷o`‰äÙ{’‰GÚÁO@_ñ³*PÀ¼ýî¾è@ÜòF¤5§´Ò|¸†8´7„¬GGaÄÜE˜Cú’y\ø€Gm#ì%·)7´ì€ÙØ×ŠÆQ-¬þ1~zF„vó{H^â°q/Îk V£ÃXôÃ0áöïÿ±.P¡^ #ºêõø#ÒÔ‡^ݦ¶ü{Õptí9¨dd]¦Ö)}†["˜¨–¨¶Híî¢pã¡¿&ÚÅi(·8‹ñm÷jCbÓ"Ÿý'ëO|ŽP•Kâwhœààj½¿ŽÖqß MÎÍ”Ÿh‰Õ’)¤Ù©Ìpæ Ý©²óöÊM—^Qª×µñ»‰Öt‘óßµŠOdF¨fèÎ1š’w)mª;oA"©¦ºÖÞ¡ö(Ûo(ƒC™èTí=¸÷%+ûµHc3w¶˜²ï´}rRˆÞËÑØÒ¥šDÕRšôæ"òñZw,Á­js:àE,«¨þˆs–ð×5Tt“! ŸE<Ðp.ꆈŸ"“€'J—È_xt_¹¯€ŸÇÕ ðö$ðøÝ/0†CÀÚ¦}¼÷}f?9 ÃIÀCð|||°§xs›WÀs­&ê»’€_1}Æ9HPAÁåJ~•ÐcUÄg’ ùLS1ÌWÌ{MYˆyNÊ©ÈB1¿ä+æ-º–ÅüE·ôÞfó$Bgİ‹y†'rv 1®ŒÈx°Ãd¨ñ¶ˆ.áÑ»!ˆ“$üdËð‘ðÞž'Ix¢•Ù9á~žïòoïõv’`ÇãêG°ÏÑ€â,6éíw„`ÇGѸ¶Ëîû/›Ž¨ÿ¨l¿l ö,Û½"9‰w.{fñÎ ýïÎI¼?´àV§©x_ÖÈÅÅ»U…t_ÒÆe¬îKšLŠñëUÅêÒ³u‰N€1óE`×é^Ë3Ÿ{P‹£s)Ý*Pª»’t_é24—ñš&0]Ès¹ø#ä-K yQˆx|ƶHRúÝkˆø•Œ`GvªB“„üªq„¨ŒÏ$“ñNK2>ÓTÄcaGº]įòï‘ïœ^7ªÈd•ï¨5c¸ª,§_aÎ!¦.EQxªh9¬)$ª y%kjõdHqFÊÊsXRHJAÆb¶¤–¦&SÊIa8!/ÿOJæƒÒÿ‹ÖTܞ¸ú&{J“ÃÜt² s ù÷œÞæTž>Ýê¿Ñ„L Jý,ÆVäk± g –b;Φçpc¹]l¾Œ!fc¸´öŒÜ¤CÆdž]&émþ›þ<¤¥ l¡\85Ê«›Íj(-Ž1À¾3ü‘` ˆ¹Aû¨–»šµk7Ä€‘"‹ ɸ™»Æ`Gãv|œ p™2Š_ww?{)™†F‚ÿ£à ÙbiPçAýRƒ·ÿÔÑ)€‹…„®Çv”¸ ‚€@ÒÎ9%ië6­­úö°"Á8H†3§†‡­ò,Xò,.EX‘³1\£ Œp\î’Ìœc¸-Ç! êípzÞÅw;LC Ä%4ÀR~1R‹Å{ h"•¦¦òR꼬BzWO„´²¶ü—Ž.A‡È š›šËb3{g‡)`…ïÔ£{×0o±Ià˜Á÷~`зb$%mNd„uŸŒ„%«Í!¼ÐLçÝÛ–ÔIÃ…“€„€iQ´ñЙÝY¸ê7*ؤA%›„1æl`'6‰ŸÄóê?~.Ø@]¢I%3f’CîR ÖÆÛ5Ø »;dQË£ôþW°×’¼h€svϨ ð'–Se›ëpÇê(ÐÎ)Tÿ^^1Hõ•ºÚâì9A¬f§ÃÙ}³nq¸iÜcOÓÙÃý t.Ùûø´S,8‡>‚Á§yø#áiŠ`p¨"o)þhk]wMxƒ¯Ø±œ~ ” »ø¿u>ñc¬, ¤Ž-@6wØ€@Œ•“œ’¿§&hwÒ)²Rð<©ÛSðcï_ÙŒ$ÄqžØÇ¤5m›Bº°ú@þiVµ½oHaÜ)ô±WzÐ̵´ôˆe÷¨G&ñ‡ÎߟºüŽIdµ•lñr­u<öqþuž£]°Ï}BàÜ$øÌßs‚jÖÎú˜õUkòHL‹Ø¸ó£H3FÆÿqéäJ!V–VBìæµÉ8bG·$÷ ð4šgAî|q¼éžJú-)n(þEÛ7xÖi zÏsp CçþÇãÚŽ¥6áKû™âÇ k t‡%‘órò›\ãRŒˆŽó› È·œûH<éìŠ^l§†ÒêV€4©€P`%•QœŽHݾ„WX»=!‰­!—“ÒŒœ¯óL¸É²¿ŒàØUF˜€O®ü›;p~%ÛÔ-Pz ¤Žòìõ B|{Ì®—³Q’ìö²#ñ¸U™>$Óð`iÖ×Îû¸ §†¼1QÈv]¢ ÷ƒ"‚w‰¬&ΜÎ̿ޠ—!‰mfcèLøcÚ=É:Ó¼]Æû““+…!ÈÜ`)þ: Õ÷ OËXß(Áågüæ‚8-/á ì‡ɳ™D*(ºPcd‹¦Jb&…±{ŽUòûØøV2œŠ8ÌÎ!¿ %¬»f¦^±Wùѳ©ב¾ÓÌVâüé³²ÛõZÁÙdl‰Æ;ŒdR¶€w“IæqZžŽýëUpšüç¡Màs•Øv¯ð{©E*ÇÜMëstØMÍut‘“â8Ò:žOÿh”ËÝrPh›®‚Ÿmiœ‚s2DX{œŒçòþ· žæÈõa.^ÏËb5RžŒûïËU×Lcüz,£3ÝvCõ\õsݬOÜW}Èš¿è§~iÛ]'¶´O(\뱂ôJÆ>æ=ØQ s¶oèÀ5DI•ä,³W‚–F,“L zR0Õî£ß>–5D’ƒì>Æê4?ÛO^SPsˆþçÚøµ5æ «šÓ|DdÕ–Ï—ƒ€úÉ[Õ{»|ÔÎk*c’ þÚÚyOdÒ«Ú¤P;æjg<,ÔNiR;/Û˜¯Ú)añŸ=ý3S:kE·p­‚0¸+_h ÷`†¢ã'TØú£‡ÚÉhºj'“cX°"^ó˜)EÍjQ=ù•E>Z5OÙGùd’²jÒ=ñdê–¬{òwOϼÁφA§K.û.PÃêç½O¶"Oòl 48À5ÐLâÌüôÛ³ÀJû÷¿( !R÷$-”ÑUù“´PÇõH<ÈH-MuUC¥£›ãGÆ—IóqêòT¸Ì÷¶ 4XÝkvbÔ “åTÀ¾<1 F{COáÁ§ô<€LÚ\áñ'Ð6#’Fü‰‡§ÛM¿€ùÉ  N ‘_þÿͽÛÎeÇq&xßOQ Ñ@¨ÿwž´¤›¾˜0@?›¢¬ê¦H¡X¶%?ýäçÜ{SjòxHØâŽ?×Z™‘‘q/Ûudu8l¬ìää1ÿ`æúÓËÀÁeÄÍE°5Û.(]Ú÷5N|PTcî0Þæ>(®˜'¤*Ø¥a'”µ“aä…ò*zÁ … 8Šãªî†èf17í’’é6¡ ž†$°+ 8X‹„TsE”*ß$5Îà"jØ…ÛÄeO‚;Šë›t¶}Š;Š`êª`¯Ô²e(>*úF[£QðŒ.*ZÅYNpQñyX10\šû†Ð\6Êö8>…¼TV}ðŠ&“]ðQ !DÕ]TV«bØ $m@ñR¬×ÒÝMEÅ UD 3ÙÄóÕO…øý#FH`'> 5ÙÜãD€-Î9+µ{©¨¢EÚûc‡5Ä8*—ætOAÄn‡…È_LÕY¦@¦©Ç*C@u©«ø Œ´Ï<ÜD,¿ÍaE¿7j¸ÃŠæoî5¡b ¶£pé{sZÑNªÎ%(.í9¸<À¤?ÞÔe>x­ŽÆ¯Ìedì\~i0S /Cø¥‰ìgi'qfeܲ€="¥?fbÁ}‚-¯‡Å>´ô6N±è qS¦9–gR­°œÀ¬hÙ]2¹r‹Ç!€Ø"lM—Iî/çä›SŠ6â ±¼#M 8°‘Ñ“\<‹rÊ’€  A91øC¢tj¦Æo)ìò#Í¡û×¢t‡9qàDûäf`Þg6õÂü|²¯gTœºƒx3ÚžŸÛ+ê‚€A/ˆ¾Îl­ÐS©$lp°¸;‘/fÊŽø;/?âñÄËj{s'@"i(™VôÕƒ¿“VÈ3kþN,ÔNö,90²ÃRkïîö¼Ô+¤R›HöK‰ß0&nO…D1ÃAâô„*-§gŽ™®vSW*í;Fðz6T3’ÈæoªL=ɳ2jºùºÛ°èõäÍÝ쩯'¡Trw{:)DÍ®&Ã3’ª’ƒç“°Ü:®Eu¬Ù¤%Ó0ATGÙ=Ÿ€ÄSôj±ø[öJQŸ­Èê@¡w|fâF ³æ\Ÿ€iª‡8?#(¢Ø2/Ø üt+8@³ÒNZ¿A D ‹:™”®šXà‘;ƒ  ©u÷ä±Á~fçœìw?(!Þ2¦!Ù`Íy…ÁÄJ˜B·à %Â2\à39óå$ÎP¢Ó‚ÚHAÁŠ,*NÖ½ÎÝ8çXÜ¡th‚êGøGå÷‡ÒdmÈ¢³€ #èêŽŠÈ IÜ‚_”Q ê4¿(!Wa;ò{G¿(-½/îûÀ¤ï$w¿T dKl{õ¬Áè+/²ëz ªëýá -ÙUcYžðõªgA¥Ÿž>÷4 ‡m~ùèÈÞŸÝ+}<Æ&?§àõé3ƒ WÐ̪bcžæp× QSÍYŒÅH5רž`¯ž½¿Ò3‘bn²ÿ mî‚‚õ Ó°™î8Ò1478tel µyfƒ P$jÆ*œtÌÇ telԆ܇ŒskË3çª@üÚ ‰Pá…PÐ-2ÌÑÔ~Q¢z‰ÿRkwZ«ÙÜ@a×£Ù\ q§Ö -7Ê…ÞyF9QãvÊp”cCÊ]ñÎyËËÑ Eçjrß®£•i‹ÎÖ%j‰5Ø‚Qœi´îéS¨Kz Mz ]¨kce1Q=êaRé¹yªæVw¤Ažˆè"µUr¢=õ)¿ÊJV<>v½:çýÄ' (9„–ÊGÙ–ó«|Ø£T’+P3`» ¯êPÒƒàPàlO»Æ0±@ËG(~-Ó3(‘¨EbìÌš-LÌi•éMù‘‹™þý‘mìR¦òû/‚yÌ¿ÉÔ @/­Gj¦ùçrQ3`(Ÿ™5Ó†¤) 'Á³àcÈ« &’ý¾Fž‘¢sÓ”¢­ÏÎn!iB/ª|:QÓ°@Òòû5ÝtW^\FŒÛ]Ó Ã—Àxõøõ©˜Ì„+Üt1üIà ÙlÓjã¤çÜaÈ?F£R¼„Œ_ä)ïÍ:âd'`«Ád×±å É«`yêT ŽÚŽJOH#žip´ŶR®v¾ç@Ÿ™—ÈoG¹Ë!ù×zÖ}Çs…€! ŸâߦvJõ½P%Ó&Bæ,:[ڌɊpÜ ‹Ü°Íˆ@ò*xÓçØ3l‹Vͳ„͹‘ŸAµ½]®}@ ¥2%DG×ò°âÿ¢»®hó{x’¼Yäñ] ·×½ä›‹}²äCÛœ $ûàn!݇è‡âWRöN.˜â>ìÁlÓO)1EËn°_mæK˜\9oGó“ãÒQªâ Ñ¡Eu1…9¢ÒººG²« S˦þäÍÖXÝQŒ–PgÎî.䧉)LQj¦0Ç©¢QÍ·IÄá]´“uæøÍ°ã47T^'Ìdx¢h G1^bZìTø— °=.öÆ,ªÁ&Ê™°dVDR` ó°ÜÂÖNeÛgב wÁtAݵÐutàÖøup_Úî ÿjÜDÌ­åˆMš{ÊãÆÉGÍrÞ®DÄSYåæG/Ã͉Ї»p¢vtqäæ(U ½öˆY2À*§<#áÆôÎôþèviÈçZ)`ÛXÍ2ÅΔà¬ÒˆÝ»XAO*ݸÊÚ6÷ ™Åk„ЕzÕùßB†™#†RíÖÀPÃ';êÒÒ¸#êÀ$‹Å~³I±•ÁîJ¦Z®’@‡äå!¹3’)‚ ›…Ó¿5ÑF£FÞ^ WÑÀʵÍ;‚åØŽÔr{Â*i•I…FÓž ²ÚJÄ4•þΛñ(˜¶ÚßQ'’ÆO=à{Ó-s½ú6ñÓ’~7jm§ B"°= »/¯Ýc ‡(Jr£ÙŽg§¥ Âvaü'8ÇûPµ)â\?PŽÙ%»Ï€ò¾¹lb(ßïOÇ~Lj„®(§~o7Ê‘P¶n”£÷|@9ð’ÈÃl(D/«`ÙVàNS‡?±î‘ ž<ˆÔÝÄOÑê¼Ø³i›ÚÙÙ=É Ô‚ôÂn}€û :3L tÜSÐÇ“g;Ara¥KO €xû£â)§ß³s¸ƒ`Ü?pN³™ Îiòg –ãܰΛARëŽAQ,ŠuòÍ>âM¨@ãÐrfºïÏ8Žít—–ÜùIÛD“Ò_==–¼í EdjàA­Üö—ÿ[¸ò௿èþ!7­ÿ~Ýœþ‹¸ßõãqäý®®ê\e0T×ÛWÏÅ/ uú@éÛ—¹xøùâøâ¥ÅUÃ@‡…ÖÆèÔGƒ±¬sóç4¨BM:mQø4o½×†¦ðiŠ @À+¼Q°º3õ–Ø Š–Ó‡‡ ­#ÎVSãРþWšK9ÇBoõïJxhå"P4j¯‚Ä‹ehÙzÎ1p'C& I~OGžw®¥êÒúµ],“¢m¸Ô¨k&ß)v›ïM :€¶G²°â¨^[•@¢”mì]Á¿NåVUš¥#÷ Ú4˜Û™lƒŠÐ­n¼€d"ó¥ÉB÷¯—DÉg×"c½eKÈëÇÓÐûuVÕ4 3˜z6Ä3äÕsñ Õ”&Éw˜HdJ¤u‚à l5“<# ˆ;–h•¯N¥ÖƒÛ{?Àj>_DG>8š`EËÂAÜ(E zªÔÉ3×kPmps2Ç"ˆ [MšèQoP‡¢Šn ª ŽŒK E¨üg±Ã"0¹oôÂõÂïÜÔåûH…¿Ko‡öPa/E¶ rpÏ„;Uë–aÔ§‚öó~°œåÔá@lUÛÇᣭÊSî™bc· äÜÙU™.µ>nheAU#"ш—¢È•víG ZuênÛIW^¼»Ó.}þ‘ 9†vx#`Õ2ÓòÖó“™“$}Ë(˜b¬ ÝWÝ8ÇD©˜@t|Á„’è@vä%Äh*<÷ {I¤‘ ëtò³õ0ƒœË2(b Z“$®rä¾#„UI?ÞÉrhºÌ"(TÙ#‚¢k=„TŠÈf”v²›†ß´CƒÃK#ân77ÃBcÇ©j<õr´Ïf±kkøÚ-¢Üœ´u8 šHQ9I”ù Ù)õZ8=·4[*} ŒFKÀ:7¤R‰¶Šž'½}å:7@,´n¢yêï@*)PGöh¢ö!@}éh^º]ª)Wxö¹â½?X¨öá†O±ÓÜå"JïþXT‹`““Siží±øÀ¹·hê5%j†>&>t4×4ôy¤(aR=¬ CÒ˨SÁà «fCþQ5™<›6~`• ’ŽŒZ{€ñ r&éÏ£åÕÚy&•KBXA¦u¸ T \íˆÀ'ì.FjÚd6'¢"á¹öaH‘œ³2‹<Ä^ÙåA~-á ¤¨¬š@l£Nçd&Ò`Ûª’Úº‹µrsˆRJxg©BZ””‚7çÉyÛMi]Π‹RI,)W¹BgÄ#5²»î †(2Q ¬¥zB©ŒBNKe5ô~ }ㆈÓpU\ƒGe$[Ô…ÿdW M;üœ ”¨M”3¯jK²ç¾±ù\o:šsÉÃZJb2δ ¢ûfO‘¿ŽééìÌ$P£Ns@ÑØÔn» ¤æ¶Ì(#æ”m 6<Ìœë}ØÁkÙ”x_`¡š)Hä @¡£"g®™Vì M ’˜E±¢ù-•üØHû_TîUÌl;kt}«öƒKssÁ]¨Õ">ü ª‰ë¼]¯Z/Q©?˜œç6M?š+…Y„DœÉ¡†F‘k®Ñv8rÒ“DÙ{ ‰m$42RD δd®v.‘,šæŠ¼ÅòCiã`yPy©õA‚@É\ÜÜ$Çj}ô͉á5qysªõmb¤-.6}]¨õÛ뢄w{´£äÔ¦‚ðNïûÑœŸÓ‘§çEñÆœä·_aæ¬2ˆ½½+ý~2©ÑÄÆª‘ì±€Ö©#—éŽùɤ†*©‡7ôq’ZÿNõ½¨€ÍO-ôoDFºs–Hô½( ¨ß²Ø¡VgMá2ÿ‘ð;UHgs·:°ôQ‡·U„(8éë¶Õ¶(Dݳ«5¦j"/o–‰?´­Äß• 9íoN)ZNû†§þR-±¼?€(õȈÛÊ•ýø¥¾¯“>Šðre'ýÎ '¥¸€Ðï#™“ÁÜJ¼9ñ£.ä*©EfOõ˾˜=MG@D«§pf¤½r\(3鄲÷&³”‘:õM@ûíAEñ: ›Ýyš}›:³ž#Å<]ìÑ­ð¨Â[²rX>¥+­Ö"gAtÙ¡‡Å!1³ÁP>÷{Tb$l±stÚ5=t G¢OÌÅA¡ds€M®Êâocˆëk^ʌω¬®Ô8Êçî±.&–‡TX+Z•QG2¡›«F‰šð‹ Ðoê¼–N‹KRRM™þQªÂ®U†q¶ô¾ƒÞ¸iúUÛYžZgR–ͧŒí,ϸ”€9;ö:\õG⽜æ4æåpR‘Û=N˜e^¥Íàq+Ú)E“q'¿Bwr÷ˆžnÀÐ@v§=±¨£±9à® ì‡düL‰næqÚTâ Ä* ÙÊ£ÝqY„'doV¾‘âM£LšKB£C²ÉŠ{A=•­÷ÚUïï2kžd?=‹oó zÄ—¥•Ü¿^ ¯¥ª O‘Îo’õÎ (r¨Tú^7 §°Ë§Âe·w­á4P†N¦ ¿5ÍSoW9⸹ËXá<ÈUä…¾+̲|íËY lÿÿp•aáû‰gö;8`˜8ú’ö©ú²û¶íÅÝDóitû¥ýÞ½jÃ>ª‹Jõa œðßœ¥Òk é5 ÄC¡füé„¥ô–# ô÷HpyÍrùr‘Ä<(¯9Àx1qäs–‹ ³F˜pz3£þbÀŒL+2šýÍvÈiQjØèò·z$³q<0†òDí£“ÄV ?grØ3ÿp2#xÚj³ó2üq+Qxo®ØÀè'[ôÜâtcô+²Éþa9YYRoÔD¤Ý""l ŸkigõlU·3%d¹ùvʃqHlâ:ªG漞EÅÆöÕùþ VdS©¦0&q¥&6¾!ä°Ž;I—:•í¡ÏgTĶ"À˜$ ‘×ÊV/&ÂÏÍòäÑt;µ#¤È¾—ße’GaFYrKµÌ¹y¨±ÖhP¹N_õ ˜L•eØi›¸@9½ ÁÖõÄù¨\2Uë¡Ò)Ø4±ªH²#:é\›ÐšÅÇ¥KUôF˜ —4,§ônKÅ07Û@#ë°‹­8"HÙÑ3³Âá=någq¤uäÑ»“>u$–5gÄïሂ_9~#Lð‹·¥±#~·tË#õ,ƒ£û»*Ä6fF®/ΰKÞLÊŠ^:à !^†ÞŸ£h ALŽ_¬ë(sìKfüF|j%¦ÇÒ«ò+ØUÃÏWO(ŒXƒ9W·¥æ)®±LVu$üŒdàZÌ ñyñzi%Ÿ‡q¢’[€Mðüøâáø„&ÅAü›l1^C•˜ó¬j±©šÕZª•ÕýŒê©åäÅIÁL %¨&`ð _u`ŠXcîú”ù(”Û›: êÞdšf¥‘L ¡Q‡ûâQŒVãA¯¥>öÛCú&W‡D‰{ ÝCíÃΆŸÅý¥‰àfÙ–¬á0ýOjø²y”-ÈË ´3“£ÿã0L™kCÎÆÍF탆¾Ø©ÕŽüÏÍf‘VÏ|³!°½k( „FµÆá Ð#DJA¡v“£Â«V}>{ñhüĶÉÆ(÷V/ÃKà‹‡ãGªÚœÑU²(ïVX!ÒSÄ[¦(Y,ñf»äZ-}SØÇP €Šµ¡9È=á÷²§RQ ÉÀá5¨Ì…ÌÿZ3a*Î ”1 %„É+û ‹l”‚,ï#“¦k º? Y«¼pgÊ(ÏÏ_FI‹\z±Òu­ì ©»F¯6ÂxG¨’ªn¥ìšÕwWfW"Žü·á¸vT=a”M‡Ã0Ì¡Ÿàv`ãjY5+:'ªéõËl Jl)£+”ÜŒ•´Ô^­S†±>es ¤·å7žvü @¿Fv@ß3¬˜3òÆ—)Õxv;´¹åä4_›ž<‰ÝŒÔ$^Æ@¼¥"žª)wh;²t¶úe»hž!nÌx¨ïײÂÂv³—3gÁ¦Öå¸-°7ÉýŒ¾!ü0o™â žR-¿ûÌ+l€è7 DÕ|Ûõ&Ð3¹ìƒNö˜×@.£¢ï­°~Rœ…·ny}´j¦G¶HÔåøŽu°Ôš³c]eƒ2ׄ¯—„¼À†¯o*W]¼‚·5µÖW‹itA9„^Z’û Ý$C`§T#¦>6˜›NCsŽÑÖ§­ÆuŒkƒZ…ŒßRVÙ>_C°Ï¿à비A…ê ¤XP·.Q´7wå;”<«ÖMªË [j;CPœÄ~Ï?ü¶”jܵ{/¡œ„ø«í⇻¹é­½Õûž&tˆ•“|6†vá“ÙÅ›üDûtæÓy(ÉŒâΛÆQÐ 8ò&–2?tD±¾–°&ÔÂhÔÞ-/)‡Ný¡ZÂÌN$s6t`/ÆðÐxÌQ0¡’ M¬õ4ùØ’ƒ— Óâå´>©R*¦¾æað }TugJ¢i4©Þd€ÿP­-‹KQGõÎÍ+èeèrÚ¦»¶t¢ÔJ M}™1@†œsrÄHí 0ß·`)u¼yòrÚmÚÒ ŠøÕ“«Ñ¶# ñœ]˜1òdQXùpÚÂJ·Ñ„íŠoäÔò5j#êW6A‡^DÙ›CsfzçJjâšÉ.hOˆ â ‡m#º:Í^ÊEã œÝêdݹÈú©šX²FÛ!ñÿðÂ6äÒA {§öLñ®ßOŠF£v»k„ëêlù.è §±im™š+âEr‰È=Ô½…ÚšÜVصîDpnܹ»¢ô ¤QÇXóù}Xf›v©g&ÓÑ‘pÀ³çDP LZ=Þµ|E*í­{Õa“s”áÀSrês…U÷a÷¦ÐaE>^\uïÔkgnEÐáè]ó—‚ `Î\z·÷¿jÐÏõøK`s"„֞[.ðQxÞgŸYÙjg¾3.­yN>ªq@Dã‚xtlÚM­G±ZwtR7רå¡Ýιòõ ÖNu³/;•¾†§ò}‡ðƒIU³õ¾#1Å&ÊDP†¿Ÿ^¤§›e¢ð5žhZëÜV4ùìóMÍH©sÓ·Ü·™Ö°#­q˜X· Íôm¢8³¶úœôš"jÚvœ7”ð[m¼ ¡ªK‚i=þú wžB7ÖÛí¹™eÔDü• ?r15­.t ¬Ú7&ÅÎ×½kfÌ䬦‘E¡` lûH=Ïvd½ÝÅmÛ„ŽE. é”ZÈödÞˆ i«P!…ÝòN"\ÑFØDÛ{,h^E” ÃŽJØ–¼-/øö·IIÍz‚b{JâÎágÆ;3Ö¹FIC&`À#ªD@¶uÊ{2IÍ&HŠÎm³xb,dž7™¼Ê ¾~:/3sa‰£dµŽÕˆ×‰’a¦–²k< )­–ÙÞÉÃn²‹<¶;4VžÙcÑR—:ÝP5¹ñ¶ŠÐ_€òaè¼øƒ±Mµ,Lã°Ò è>säœÆ”7Q¾€H!ÃNJZŠ2Ò»)̆ãEµl„:CTãa H¦ šv1[Íd³NDyÐ9©0åõíÑ@‡4rìa6¨É;ˆíWø@®½Ë9}‘ݬ(v)#2¹»J%#…ËB÷b›­c: ñGC„—´¥ Æ%¹Ò[JSDÜU8x¹È¥…ZbtîŒA dƒöSèá0¹šY sOƒçRú1éy“?õÃЋpÕ Ë%•;ÙÔ—\™ã•°¿›§.T »4ÌC^ÎPÐ0Ïmh•w”9‘­Y ö‚ùVÆtT‡ù-<œÿ?LŠó_€B¤f€±&€™áve©51/ÁË«¥ªäGªÚ¢3ZjµŸa¤UÜ—*0PD/ߪÀØ®DèD‘«[{2U`ØýÚÀðÛ§H)‰‡åï÷Gíh„S¦ )ÖPnâ°ŸÁ_&E`&Û Ô1 fJÀ$«UÏa3¹õIv‚*OŒK @é‚E%†\ ˜ÙlO9– @Tû”½ -`æp³@®Ì~+EðæZ€Å­Àj*$ ëZÌP¤Xq…(TàËÈ»þàzVÌi×îJ°­r‡*o¥K :2õÖfº$bÔá|k—ˆ]¥IôIVF€ºSAçŒkW™oE`ìË©º=×Í–õ"’_õRn®âOaÍèK‚J’AìC(jTF{·õݦô?Cvf-lº%‘[L»òßôÁÜñQ5r‡O´KdsQ+wœ²¯u]nâ^l‘3ŽBvô`#²š¸W¤I \A–ç("³‰{•w¹èɼ-?m}ö›ÖN/X·Y;|Éö0ÎH÷šfΪwz¿V9Ìáâ¸ìHÖÝ‘¨óÂì©Æ÷wgz: ˜ÄÎEµâtÛ»é´$ÿ½ì)ÓP­ñ5ŠVÿZ‹¡H6+Ãj˜¼ák¯’!v@š®ùBÿ¹]ÎßfDì 2¢}±ù±+JqŒ\ùj#Œw/;d=>᫾»av†„s‘Þ¾‹gŒ’#,Ý‚%±SÉ8yûc4ó°rÒ ’b]êæ¦å²5 Þ æQì½XûýQiwKk= rWß~át˜‹¥=˜Û£çBRþ¢çñ Ð=Ä#=$ÓÃÂæùÃ/Õ˜ë<êãà)ŽU9vdÕ…„Í‚LÔˆƒÛ`pÎ]ãî«L /¹ ĶÙìÊ FЊ lÛ²MÄË]s'<>]@cÞ¬Vá2€²9"럥<‚4€0_ÒY¤É+”IÇ íoz{ùpüPˆ‡‰á·‡+i2&£{(^8ÛY‡òš)w]*4E,©ó Õ)\ñyÜÛˆk¡.!ámØØ\Jøfã‰Ú¬(°æ¾&¯¸½"œBS‰#A–Õî¹¢uœ‚k úÜâë(ëyqy{ôæŽ ‡Ä8.Qi‘ëU$ÅÝ_³] “²½“W=aòЍÉ!RòÌ< Èæd9ÂB«¡É€"Ú‡M$ÓPÄÈЋ7sùó¥L #ˆQöBl(+’e¹noOíáÅ|T¨Ø{y˜ U¼)~t4—Ìeâg´.ìZ½ú9¶í©Ôø#@ô¾â¬ ßônñ®â™œ{ɽGɽ¿P{Ô(™ÜãÛ”Üõ‹¿ÖQScb§‰Ï´#eûúœÖ¬í•ÛÇÆ%ÎÉ`/ãÑ‘zݬK0ú0]`~`)¾¬Ëw‹èg§"ÈWaNztJ–¤&dÏðÕ¬è«)ö=´ˆ''+%–€¦GdRœòx¿Ð‹˜YØöÃaA2ú´€Þ9ƒ(æÍIWu©ÃÖÁÛ1|Ô.å0`qòñmŠáðÑÆOê7Ä8'ß$æRº`÷½T©ñˆÆ× ÔNY«GV6=JôÅ%£lJ‰œ,„J++ _\„*‰„·5¸×³Ôú<ÄÀ*bi^bkf´ÒìÏðÐsa0š% © ¹7R‘¸¨±ÑŠÔ•ßpz ››8NW413N/[ð’“=Úø6Å©³ñ÷šGló¹“W„¹ÒÊС á9!û…z× 5Ý”ÓØ"ŠF~r`¯;ÈY‚×´!7¦:Œ/©ø6½¤ÂmWülïÃüE7씎Ü?—²L$Ôjn*™Ú3¶fD.Üê…Ý"‹Üògã ½á}†^÷gñS6/Co˜¾!.Z* î;šñ5ðpH\÷;`x¹Ñ¤ñcG--£ »Uì_b1z㫽ák¶¯aR¶ûaòФ'\?fÿWÎ"â}cú®d‡2‰Ðg2Êõm´ì^(–‰ÆÊ€­LÚ⫲W†_GÑæì‘ £–ÖÚ•ìÀ¨6ÌG³PW/¢¾óàžç¹"›guNL6”‘]À1¨Y+±w?Þq¯åîùqàƒëÒ?ÿìåÃáCt±Äq З %•— §ÇüÕ°~<Œ 5w‘W^ƒ^<èèTüÆsÓ¾1ˆZ³¾‘2¯![m#öÔ#¤›O!eb ¶²£Wq_^ZØŽï XdAG¢g‡Þø„bÛºéÁB¹âÄëò¿÷Ô!åá«Ö,7y˜I¥CÍð Ò§|@sï´”æáËG÷z›§æT!™G =q ˆ2Çô º¦q6Î)@žÊúPs.Þ™Œx€2Éé2ªkë˜ë1T6J9:ŠW—AHÂïõýi‚…°A°ŒjÝØ[.Éì-Ô˜XÄç7°î{ð @£¡ðô3ì™BT+‘Êq˜‚ÂÛLú% MÐ~ú]†'!à%ÝÆ/¥q£Þ¥ýÆõ.ËNdê4?»Rï–FÎöwîâ¨wüõniä¨wk³ñ@½['i¤kv”¦ãN·[z9Ýî÷‹ü6eXì¨vK'g#ÈŽ©=&mœÃ îâìT»Y徿‡.ÎÙjTm€Ñ,àz?1¯ýÄÃsϰt鵿ð0¬/Ü-n/œßgŽ0Œ›¬P4}ËeVÌèÃ@¢Âan€T‘'vB)W4³j…ýŽPɯóIÔÜõ¯¹À@“J.0 wi¢*´Sé²Zú•Ðm¥‚\}wpÔð%Ä_Q‚éÇúˆ±àJ¹ êÈT‘ÛŽÀ€Ð…ŠžSdªA¹»¥»y8ÌiÃŒu -SÂ>£"›X3• ¨Ù׬°Ÿ†ÚÞDWn*÷ ë˦ìè´% ôR͇$´D#Ù[ŠÞc´¡6[ÙäB•>É\w€èdV.d$*£í–ãoÄût~O£­× µ1öïUcG4±DÆ5PVGï©0{½#ÅZcWêé‰Zâ׸¾Î¿[»Ñ†M£]5r£xè¢Ë\\–ƒÕhG'r&éH8s„Åü˜«% ß!”ýx± ßÑu¦ž@îL2b¨g6¦Ç•qZ( «.ßÕ"ë:¼geá ¥î?>Qú$÷m ÿjø\Ï·Ú¸¢jƒhËìÓªr©¦€ Æ#nË‘ÈÈ ©Î >–Rº b5ä›ÑÒ‹M @÷C ›¤/ [¤‘¢¼Y2©¨x°(g['Wõ1T™¬²™mq7:¼ËZ×KyÝ7#%º!‚€( 5.iUÊ#‘Áºy#•™Þ-¦WmKˆwTîð\{'Û,ôMñä·)Æ$øÀ’Ð0T È?Þ»È{ÕMù®bÕÊW23r·™§Üå3ãúG´éã }ÒAljÔª/‘0Ü(~œ>jL°øGRRCT!YÛhÔV˜©ôœÉbnzn Æö‚ãÀÌ] zš,E*U^ÄWI•TœÓŒ+ ‰âD­pvÑ >ÏÅ?™ENä’ßÌDÔíTd*g*u w‘w ‰aÄ´05‹RmÏNQR‰ª{Úu!KEý\âï,.££o£2ž›ÁF-i9tãlTSTW«¡Už[^e®´¹¨(Uýá삈…–]ýíF%kç5äÖ9—UX-mŒ¥w•£‹o.rËqLÿýlm?üYøA¡nÜÕ 8ÃçYÁ´Çb-…zg‘W²4JÍÆf ŽÃ| Ë™’†È„†¢D2;íÑ-µ=7ë>Ïþ&¦Ç¾Q†H¡ ¡8‘÷‘SíF“–ÞŒú Í% k8Õ•ÅÊD~KÝ¿™ŽšW+]©mƺFÊ5·ßŽ åwCJÅÂn:§\mel»aÓ)¡ôUì¯a ÎŠæ†vSÌ›)Ù@\jÌ"rq¡ñ¿µrp>MÒÔÃÓ5q¤ù‘Ù'o’;||G8Jhª6 ðÉ5fé'J ¤=@åFçd5ˆZ¶,z¡1IEîˆÒ O±j܉¼$мfŽ{³dâÒšf¯LššTw:åÅŸ%$ÞX\Ѱò$'5n*1DžZ”*Ü‚l~¸ Q´@*Á-?M É$ñÄ×Ao\àµ=|»I¥IÐ ²I‹Š¢gÓ–84ù½)¦ ¥SˆÊU\L9õ7“àÞÂO7ØkÔœB@#¡“œˆÉƪæûû¢7¡=E>·©ü1™ó7á½£}©<-[m²i #àKÉ@9}GOvÃGOæ:Ô$8³« âÖ‹9湈'í°Í×HÒ¬˜o£J(G[#ˆÃ·¾¹A*m¶õn"Ò+˜’3ÚÚ)³S8:Vˆ WÇÙ…6Mª7B”†"Äl¨nMV¨;å¦z2ò%³ÉA€Ö»{S §¡•ͨƒåN²š4zÌl‚ú]©jÚMPéÀÔ.¶œP8+\vl=¡·­²£õ$|5œ‚­½åÍ|Ò(Õj3ë¥÷Ëz‚’Ó°º™YB“œ2žô„\1 ‘g¸åýÁÍ'¨µ=:Ó[OºÅÊû Þd1XRújã‡Ù|ÒÀ“{Žæ“žÃ¢C!í…®¸Å¿çöšWÖË„í':ùî°‹z-…[QÒeiÁ–!ø:ZPº!\Wê‰Ë&,5 tˆÎj!J 3¡ô”ÑeDstMцB„TF‹6”ð>µ¢€*1­( Ü®µ‡³+!R·Ž@žŽsÇÛ÷½Ö[˜ºÕYhVÁîµÞâºé^ ?Ѩ÷Z|Þká»=-å:⽆%@Èœz`‡é X4†Ë¤TÚ ÕRýÖ-°2Ümù³%Ïx·uäÙ®^ÃÝÖç a¼ÏÂ8¾2»Ü,|Ãu_¯;µpÃy}‰pÃuÔª÷ ‡zÎÝèP;~3áÊšñ†C×X®â ×û£k‰Ð´G½o¸®6½ß  ·[˜‰~šÄÿ ÀP›Â$(¾Ü‡FŸárë3¨¯Fðô#r1\oØ3TÖëíú)D¼G¯Øî³Jªj’B4ò¹iz<£…ÍælÌøv8£½_‡AûIPˆƒø=þ5?4«ÔÅ_ƒS@óÞy«tÆÇm€*×Hàƒ ,ñŒa:„ôõémÈeËÇ€¸³^Et Æ ×˜ƒTaÞ¾²VíQÒCryuíp0C;X¡uQëPü Pµ¨ Š£ïïÇ€ú'ÁûÇ”„.áŒæk¥E§I‘4v"Rø 8DOB„(Õ©“¿ô¤ùnjäÑ…K´>: Øß'7ö•sw8 ض#&)?=„ýxà},z¢:~Ÿ“±¶Çã ʘÛA®ýnT¾€Ã{ŽÜ3PÅj5rŠS¯NÊå÷£^ä’1 ÈvG«f½„¹•q¬G‡ªBLùVl݃ ,X¬íîn›ó«uã=U»€zÅÔ¶p }» ‰®»,¯-T/æØ¢ô ¦¿Ð1›!b"¢tõuœŸ( Ä>H1·³„XKoc‹a7Aœ .NYÝDÂϤìe(Û’“ï*¹¼e£f¹š®)¶•z]²l ýžšÃ× ýJÒùÄF!=‘ªÐ$h"o«Â“žQ£Z¼7]¿† ¹<¥·Ð>öÄE|]ßÖ(ÔÜ6– ÑøœjùÚ’Îá=Ì5Bô”GØæ¦ò í¨t#L5(z=£8ãRÓ¶iÔ!œÂ¶!°Iš1ý¾ø“î-ˆJ8°|ÖYØØ 5bºADë#ŽÆÞÎw&¢0>2>¿G¢0¶2©­q %|•,kg»ÕXBg1fÞ"=Ë”Ò I¦‡j=Ë»ñËŒjìĘ ¾úæ¹å–^*Ô[rF[ªn:# Po©Áô¿–æÐyèñ¢›œãÚíï(sIÖKÈ@"ÝlÎ?BÝèsÍ¥¤‘$h’Á$ÐÅó–¬! ãýK+%G` d¿NÓ‚glbãj–o”FÙ.²iè6³‚v–¸ú4µ&×’É%±ý=v$á²û5d¤,ªáÑÃ&ûs‡¤$¡-P9êSù)U©˜ÎÂLMö“ª×3Ç«Ï*¢J: `<¤%Cú ;:ÖÓsˆ’ÛÔ»ž_¯ÎìnÇJ¾‡óX˜#6 ifâCH)3,^öß8¨š£'>yx ¬'ÄÒÊ\1À“vSiÜ5ºÑ„/Í‘a½9ëJ*b«çö4Æ÷WEVUé#È‚qºÕ"º²ú{¼€ì²èåª0EÁO82Û<¸Í›_ô@¿l—Uh} ”ÜëéW°þ®ó[©n±Ë%JX¢9Wµ5æ…¸X_š Ú¼›ªìÀ˜b¼KûòI a æ)dq}x /©ÈEÄó³ uqÅù*†ÌŒZV«GcTAVT5í ä;»&< xU^êbÅñX¯ŒÅ4µ%Æõ1)û¼³ä•.b â=»ØÎI]‰ !Ô5‰vϮĵÞoEq‹´k~Äålö"ŠØrd9*K`ĵBEñïÕs©¦üÁ]ˆ˜8H6º×VmIñ±)™©9 ù »­Muô¢HF?ïŒþCë°áÄ d)ÖÈ.DjBS›úèÈ…¸ÓÅø©8…ñjr¢ ÇTÐÀ˜Ù²Pkk}t„ç>˜qÙ(Å›Õuõ®eÚºi[;ÛrÕu\¶è«ëPÑï:Úš餒 `çr’«žÝ†@p§Œw®b&Ua՚ɢœÒÕ»(“jð!tDÉ)EÆFÕ ‚ZgÆò›=‡;˜j­vUˆµDªØàâê6¼@·d¿!ÚœÔIõ Ìoè%DÔs¢8"‰©vÔÀk#À‚­Lê9\Ûè*e, üS*fÇ!õ§ã¸hv. ¬vhŽ(šÓ0» ãzÏárt8Œý‡ÀPšC"Mظ–ÇxrœÈ䛊݇ QÔ3ˆîÃȇÂÐæqE•aï!ÎÊ¥50æ÷–É‘ógî¬_¢.ÉyÈí²¢ ÿt©ùÅzÐCuÏ!z®î=‡;…;n9®3³äò&ßᢘU»Y0¥ Ô;Î=|gª®Cî/”5À“ŸâLw~Œ3Ýù!ÎÔnO2zJè5351X’§dçç8SšÔgÊÝæ=Îtׇ8S”ÉX¹¯ìžâL·úëÕÕLÄrÄ~ôx3Ýí)Ìt7·PZä-#IPpã1Êt×ç(Sª¼òeJÕ_®(SG¦- xŒâÞÎÚm¾¨"ܧ\Y¥3Ž ä8ÅíW§®^!aCö«s G) G)^@ŽRÜTöºÆ(Å’ª>wÎà¸ÂkEO…)îýì^@³ÇÃdÄ&Æ‘Šèg”G¿"÷÷Øð½ƒ9øŠTÜ䯩ø@ûRï[Ÿ`yMÁÌo.‚ &3*uË=|éš¡ZºÉ¸…xP%÷ðLÑÉ/EÕtKÎÉ|YÍôõßæïC›çÁÅøñ†Ën”éauh)Ú z’ñ…Š=#‘^®¸Ä.˜\j—ŽWŸY—ëû 9,ìX}þéF5¹ ]¹˜Ï,Å3BÙÙ4kfµrÐYšù‰$*ÎÔEM ¯Ì3Z :£E® Ú6îdÝÒmÆY`¨êiVÕ0zå"ÇæÊm-×qƒt_R4p?“’RFƒ¹!… AÝíúøòñëSœìÆ÷‡·çg‡==_n©žc÷gVôªæ°ÆO„{‹ï(–ü0ÉoOqÁüH•mœ‡iL?Ljs ë;£ÑÕàkò€”êÓ҉΀áE(Ï qMÌ'„°kæsİ~ÐUÒt;¿lkÎc_ܶôɃNs+KEרÍ+€ÉîBÒbW}Aæ‹êºÞ *R÷¬¾|Fïjf[R;Y{·D2v/S<#w]!ºü\ˆì¥.¾Jo¸åáQj´Æ´* Ðû Ó/i5ÇìŠU Ì×Ñ_n5ʇ2ÔÐ/9NÆã'¡ µ_¯^tY!o7•Ù ë+f9C¸Sã—P½*ß§2 Ü#“·sQ¼ÂKs("G¼¾@#G9xV™ùÌúvd eïÀÍŸÐÒ`Öràš§Éýoµ° ¶X/à.Gå6öéÕÌùciê—œ ×soB‚òQ8'KÆy`>œ]§1Ñì|ZŽQPß~ÿ¸®Çé%ç(‹£‘VäÌ7FkƒÊ˜§D(Lö¥yŸµoyT°Á.r—f|GóZF€¢ýâG9`3óQ@&VÛÓˆ@ Ym»‘ fªgÔþÛ‡¯þËþçÓoýÕ¿ýòûz.~÷ç?¾úë¯þùóÿíïðûÿ9?ÏÜÿÕ‡ø üÕ—ïÿôEùÓ~øúç?~ûÝ÷çuŸ¿ÿùûÏÿò½½îç/þáÀ÷Ó_Þ~þôoßÀ_$¥iáúG†cÌ×?þôùßþÀùöó§oürÁþõûOÿôûôó—Ïßùî÷ ûáÓß¿ýž‡Mú¯ÿøÃ÷_¾|ÿù sûôã?}Îÿõ§Ï¿½¿ûôÃ_ÿ]¢èÇÛOøë—?ÿñ¼ÿ§ÿ™ýø=ðwßþáÓþú›OÿóûÏß~ùôÓþÇ·?þüoŸ~üß?÷í¿ãiýñûï>ýîÓw4âq°íÌŸ~ýrM+šÃðÏ¿þ  CëóÂöûÛ7ö§ß~úãù¿¯±jYЯ¿Â²¿úͯ¾À:2Œýü'¾ò¿ÒëñÀ¡ƒà/'ø0Åß|ùÓ—_ý=ý›ó¿g’B  §©þøÓo¿ÿòç?~ÿó¯¿úîgüûów¾HÙ¯¿ûéÇ¿ÿîËOŸß¾ûçÏÿòí—þ|¦œžˆv¤0Ùû³Íh‘МäÃwÒGHøè òá ­ʬ'š[¢Èá[†&}TœZ+£ÕByÛ^ù#iʰмÁJœàÒûø–PÒ<ÞñVÐêêð;Îs›ÞðF­Ì>×Cð<®æÎëcAí¶sM 2fK?GqÄo™LÁóc9âJἡÖÕ¹©òÇu” OgVs·2ékGŠÚQZý©IVLícFú!¼ºhðÞÎíô1zäo9Û’×Zߨ{4º~BÆ92býøVÑÛ1 â¢Ò EL#Ü Õ#oߨáÆÖAÑ)’‘ïÖ±Ûo¥Àv“úÇ·Ð Tfù·G6 G+!ŒúÈæmÿŸŸ¿O?œ³ü5ñ$þo\öÿWùÖ‘Äê[÷åó9„¿; ãÌ·_>úÓ£DLpèéü‹6yôrPÛØ§ÐÏf4êÆ9j,ð"qasX }gìÛÏÿ×çoûéû¿Ô£½Õ¿ÿ ë{$e¸@[ï'z­ ržÈ³1 üœ!Å.쾡ÅŹd‰ÖQæ¯D…ú#"ÛsžñÏó )oj«4ËGôQ@Ÿª7T; zƒ3u}Hè¦Sê!\jHÔÏuõvêÔgÊ Rƒ¨ëëÚMµ}h€üƒ‡žÞ ðµµ×GôXÝç¦æc·r5"AñÓ„Š#ØèÖûYµ(#q¢œ‹{“\Muê}QÈ¢¤¢ä—Zx²€ Œª"Ô¥¯}Hº2\Ÿ°=ž[”ŒpJ´É„9ÓÛÓÄñvHFÍ#çì@ÇÎ}rþw³®¿Èÿ*YýÝïèŸ ÃÅ>¢¬ `‰¹íý#é½Ï";ŠR|Dó^¸Iˆá$Ϙ‹@Ÿ7ØCùˆôQ„ }ÀÖ—vØÈøHÑXЕÞ`dAË„ê°s ðuªÖ’9µº:Ó‘k¿@ÈçK[+Br ºî€Í ýðþ?R¹B¤s&QTwÓçQ7èp£³:8bQçîs2Zä&. dt˜ÉÅï¦yeúbùÿ3z‚…ò=Âeòozªw„ ’?ïìø‘ê>›×@- ®ðÐÈ™ìK<;"(vÎV9ÇøhH‹ü+g¶|¸Ž\XPpàH{ù#+EÌê9ò°þ³-clô§<÷ÂGÆ¢ŒáI›“¸q*LDn« À¡öÖè@éoÉ}A0ÅÑ>Xü!¨îÔzHã e':DM²íPÀþ<¼à¨ígV;g&™óH?/¤˜€N4T¡O€øÓ7tƒD¶GÍ&7þ™7fe`Û&@#†"¼ñ/NØ™Âßî„~¦ÿÿ×ÏÝ6rªˆ•ƒ‡ûƒ±ò÷[ÿ{ñö¯Ÿ~ûå÷_#…l¦ÙRW8øÿ™ñ×ÿóŸ¿|‰°ÿõÓ§¿þçs})”~üðéüÏ×MaÇûí·ßþüûo?þöÏ¿tÖÃ´ÞÆßGð湨µÝ‘pý/„GO*tî£sS n(Íù¬åêo³÷ßýÕûUÑâÄ_ÞÏèçp$0¹Ÿw:ÉGÎK;—ÜaècÿÂýü¼ˆÈpY(‰[ú´Sç`Ì·ôŸðÍåßü|Þýò]å·ø÷¾0è&Ç?ååÍoà}5U—ù‰ÆýU‡ÇóŽÓ ëZô—#4îÝ£r“!i7§£? høÅùù C_Ý=Ð#ÉÁ aúÜõõ:ï!å}glELgji~¿¼˜_\¿íÖ¦^£óß‚ÿX|ïoÏŽ\„6ÿð9(þ? ¹üÿíoÎuD˜Yÿêöÿ “;½Ïñ‡Ðñ·Cèÿw÷ÊÛøOøêÆ7—^g¿ú‡úÍùÕ?üü/çþ_­TÈŒïocsigenserver-2.2.0/local/var/www/ocsigenstuff/scalable/text-x-python.svgz0000644000000000000000000002572612060404165025227 0ustar0000000000000000‹í}mG’æwÿ žæËÇbçûKËöâÖƒ,0ƒ[ìÌà>(6[â™Ýl”%ù×ßóDV«È"›ì{÷Nl±²²*³2##žˆŒˆüþ_¾Ü-G¿Ì×›Åêþ‡7z¢ÞŒæ÷³ÕÍâþÃoþù?WéÍh³ÞßL—«ûùoîWoþåÇï¾ÿoU5úi=Ÿnç7£Ï‹íÇÑ¿Ýÿ¼™Mæ£?~Ün®¯®>þ­—Rñfv5_Îïæ÷ÛÍ•žè«7»ê³]õ[_ü2Ÿ­îîV÷yò~ó‡NåõÍm[›½ùl¥’Î9_)seL…Õæëývú¥ê?Š>=j”RW¸·«y^­ë/K ÅÑÎÈÝnëþü×>ÐL6«OëÙüOÎ'÷óíÕŸþñ§öf¥&7Û›ÎkšÑïµÛ›’ûéÝ|ó0Í7WM¹<ÿyq³ýj0I.?Î>nw׋›ÞàûLPA®›\·t¤&Ö”ªõk»·\š¨Ñ:ï¤Jøz¯»YÍØÃÞlç_¶Õ—êáëöãê~‚¦í¿|õiûðiû¿Qk~_Þ…¯ë|ªÜ–ç&½ïl_0ÿò°Zo«ÛÅr^Z¼ú¸º›_=,îñíë~Ì6W«/_?Ìï«Å äv…ç–Ó÷ËùÕÝân¾ýú€!ÜÜM—KÕc®ú=~¸ÿ0ØÞ—›LrГý`…¯Ý ?¢Æ÷7óÛ k–Yà¦!É=Ü!ͧ뿬§7 ,ŸR¯Ôìß Úêú<µÙ®šºõì¢uì›]ñêöv3¨NÙfûu9/µ«Ùj¹Z_ÿávÆ¿ï¤hÒZl¿^ë7£«# ½!ñïþ:2ñÆDocz3Øy¼Õ]-7üæ¶÷ýC=UóÛùí^OßӬ̓Íf¥QÎnvnçz®ŸÔlhVŸnm6Ÿ½Ÿ½?6¡ß_õ ë46ÔW/ç3´=]~ž~Ý´Fxýq=ãþÃÅ'h›òn²>Ô…ÿ¼_lÁ¡?mæë¿“ËýÏûnæµþ±žÞoÀRï~xs7Ý®_þF¤uN>þî®ÀaSöÞ©èù;§¨}owÝ×?¼Iamìtæ+ ³£]ØQêƒR?qAÝ©‹R­ÌÄ:wäû=;:]¾ähÚ¬må{ãÙor§Âì º‹eÑ)ùŠ®j51Þä1ßÔ»¬·FaB5HJsÖ„X¢u±žæª2q’lÐøeí$éäœ~{&´£ûDZ Á2¨p:ùs°OóÜf5£5_¹Ë8ë@{j¨==Ü^¬âc ¶\<üûtû±%“úúôRdMM›R®Ân:oë`ƒûÕM»xrÿ›Y·Ó»Ù»¿Çì­ÖÕìÓú—éöÓz~8œÒlÖ‚P~7ÒÚŒ“™xer £ÙHÖ¬·J*3‰9º<§röfTù‰Až˜¨lƒñ,Ñ*y7¶|J¥Q¥Ý$c$5‹¬ñ6à=X/F™$µT°¨¥&*鱟ĤµÏ#5ÑÁ§0Ö=q>çQe'XNÆŒñ09£E‘ž¬…86XÆ8éNVžï±)¤8ªÒÐ4¦¶ŒF'eÇjä&ѱx‰Å £8ñÉ)3®ºâ’å deÆBK\G;Òq‚Ö4Ÿ H[ëGÆO°.5¾·2lýk …ì18hVèè&-ƒ³&[¥Ýƒ3 =Ëþ€¿Q•J€úå‹ê“u@j§L¥£šê“ Úœ{ †=tŒÁù“_„ÆÃ+@Ç„ü¸} Óƒ¬ƒŒ|l:£:öñÏ×IÐüQ¤V 0R]¾*ꃉ4xAiû0±Á:kÅ g¡F+Ö=;±9¦@«Ü$aší8LŒÑÅQh…‹fW²Uy’<Žè4B9\T´ò¹”ÆlPkZ›?QÚCÀÓjœÑ\ÒÆIÛº‹‹PT -ƒ)£gÆ%QïY|u㌦˜Æg oFéÀ½ŠäB0£]ÇhteÃ"R!ŠíëÐa¢ñnWÒ¶ÀÞU–Žç·ï^§(P·ÉûN#Í 8¹\QÁ¾¬aCŠ†Ç¦é( )›²Æ©íÞŒ(»Cc¼Up1&iR±šXF£J4ò uë9ì ÇÔ¾24c;EKZL#Îί£;G½sÞÅr§Ô¢=*c5{Ž5 ÌN6YÚÙ‰U˜1Ùrx»e§ ‘àëq3á ,m±mõ¶Daô3‰£Ü4²ä BvJÚú2Ìʆ©ê&šŠåni¼[¿”œ4šö•:L¯Ù7š^`:?ªŸ¾˜Êîa.ÀYïo¢Qê‰ ‘÷Epg¨µ³Õ%´ö¨²4<ŒÄÌPl]P]󵡾 ºíï8&èåÆÙn]”šÁ À(.DÝVLîYz„êÿ£´ÐÉ3$cç£~ÉèŒwñɨjq/°wáõ¶ºÓü"ëÿ(¢6P ÖŸ†å”)!iʼnŠƒ²‹Åí1P°‡‚›Èº£–Œ×)¼Ä°DC‹(‰¢Ùu…+`¥‰®+\5„‰5"¾Šô)r "»jÑ%­.¬ƒmdx#¼*î’ †ðtv‚†Á°%Ÿ!¥Àˆ •·A³ÅZrQpiÏNgA`)å#·’ÐCÜ{vËáˆuµØu¯2 ‡€{x @S\j GM7›’„uq `Šs:w¤6¾àŸÛ~{@ À€¥„TÕ0%ä)( ìYàfaåTíLpγç^½’éXAßù¡âOá´reë”Û‹NŠÊÄ×RÚÚèF¯·Î!б/¤Á@={R7!mCT25”¢®‘à}!Ý–¸}!M`ûRºÙAëz†ý„^ŽÐdbŸì< £©ã²L²3™~š½–Ú]È™ø;‘ÝY&™þg“Ý¡U.Ä£!#ƒìåÆÙ§*hË^ÊÌb0g´6¨@„®³ý¥T¥5´o»’HJý$xkûT¥#ZCŸª´öbdzæ¸<å^TѤ\ïs•q©ì 0}õ¬;=¡C /Asî,Dˆã5h.åK€Ý|joŸl ù²o‹1Îû.çÓ\¶Ï£9‹ îs2 ]6oú4ç”lK徯FÐb¼Içø^ýö4w–¶áºôMË6…ßß´luOÞq/í 4´7“.‰p)>(OÞ›IñB3Òak˜‘Ò£ž(ÇW$}½~oEÊÞŒÚsŒÊЀt Ô—ÉñöR¨Át–Z$syþÚßžèoÉwâ¸Nï[\Ø3Ûˆƒðžðű=èÝ¡/1 \@¯Ýؤ‰ ôü¥ýó³’mZð¹`ø÷ÙÐ-‘‹y¯Ê™‘™¨”z<‰¼m'¿;9^r$e?|¥:CJ¼¤"z$ʤG¬g«¼3)‘SçŒÉ£A ŠªìåÜæH,Öa ‹ª ƒ8?ëI[€Ï¨‰4q¹ “Þý…vžì2½mFaÔtgƒ±1ˆšatÒÉïÆ~œßp4àpäàp”á^(â±ÐÅnHØcqçPÚYÊp‰™íH·çè§BE÷u‡ÿòá±ýðߪs~fñ {/ ߯ÜcL§DÞÇf=ÂþsdÐ*)ªû0ý˜ûJ ¶0«ÿ‚™´JÔ}5”Öj0Zÿ³i•üþöµú¹(ºk oÅpŽ‹¡t'31E«nü:œ²>’ë;ÞI^ÜA­¬Ÿäà1”1¤:Ïù¨Y˜O…{û™[ª3Œ£¯ŠÆJ—Êêp"˜ áØ)IVr1uó€=W’IâS˜õzi|öÝ·¬L¿kV¦~άê­lM&¯ç‹iÉÅÖ`¢òPÒ¬ K˜×QJ¢µAäð_JyxJʾÁ¼€Ã)S §$þÒØõ÷kvŸ<âj9ì–Ùsá|ÕÑÜÛ^?Í—[ÏÍCè#ÎÒÃŽÕ='ìW;cý¾zþh>=0†p$da8¼¡ ñšãÕ‹¯ÃÜï¯3^ÑBG"‹†£zK¯›”¿?^ûÐÄFNoVŸñeû7]­îÄúž«B+½vó÷E,…zÍáͯ"áhäo½Û›7«Ù'ž-V}*sóðåàñOë5+,§_çønù§yÍîd¬ö¹ÎéXmÙæãêó‡5‡y»þ4ßo€wª‡Õâžíw*ÈSŸ7óÍ‘çx¯zÿ~õeøþçÅ=F³jûØ&µØ¯Ñt9¶ñ û5¾ì4¡ý[Üëionî§Õ‡åêýty²swÓ/‹»Å¯ó›ä$‹ú õRî[wþ×^¯îþ}=W.ü}¾Ý.î?ìÖ27~xóå+k WëŇÅ=?¯¬¦ðk¿£á}¨ÊFIÞú:p«Y,tÄh×Ñh4¿{8r§³DL·z§ÜuËë¶wkf4úe±Y¼_Î{㎺÷<Ÿìf¯”c\×縇mV÷˯uµ–¶¬Cˆ®3PX3ØxÇðV›E)­BŠZã³êóKyd®{‰V´ÑXýÆÆ1õ+å£;lË&Ÿ/j | -ª/I{nªE¦:ÂïÆœ ªåÀ‡ŒWÊïæÛéÍt;Ýqá¦ÄÝD×~¿¾¹½þ?ý¹µmÎf×ÿkµþ¹iÒ¦ïWŸ°‚[Ó6êÝÌ® I¦ÛwXD<‚ð¿¹[B´7z•¹>v/-¯]Ï˃ƒ§2ÞÌî|èêïÛÅrùol¤cƒ­_ºØ.ç?J›ågóWõg46ÔÎW~Õ ƒ\}Øc Ëéû9˜Ê_¿Ì—ËÕ耣X¯>=Ü­næ5¯~³Þšw×mv·¥Â7@˜*„ìKøFK¶·)]vÎË.öΩ{‡ïêТ‰…²ËÜUAEBPY«ÜÈ1 —“M4•$ôYïë  ;æ-©ë¡…èG‘›½FÂqÐ’+i·u¥ºláyàÛ2*È·ñ‡cSLGVZÒšq¥wøÁ¦Ðÿàœln»C`^²À i ±‘iP3¿‚¹Ä·íÿ*;ÒÑ—÷h ÉYò±É@ÿÚ[“’ó ÷ïÉéG¢?vÎfÛËS‡&¹÷±“‚¼G—MóEzµ½.û‡_C ùi#ÌDPN:¬R¤åòßH›2ú 4˼´?´dc x›ÊÆq ÕK>¸%ÈÔø²_ÉÙhŠ@— îiÞæmJ,„Ù;AÃdK™ ¤[¿¥”$y_¨é·SøÓ(0‡¬’énKÂd¦ºc`@Y’p%”ðs¤+(B5®*úÄlt±:à c¥°èGQµßÁÅ@ÿGúDâ#)_%n”ÓD£seã†RŠòI×+î'¡JtB[¸}HZÞ"б$Ï3" …n¨»5CüS)R.‘1p “ÊRæŒ5Qæ0¥\hgô¯»ÑíL2=SØ)2& fMH©[Ò£Œ_GoöxåeŒ‘Ù·ß,Ik;q@ ·”±Û‰M%oRÆH.ãòk¤ä/C†JîÈå*pŠ@¨÷N1à&!eK— zRȈMü¸ÔeÃùŽSͩҒ-qr:¹,UrÔŹ6KAÌÌý§eâÆåŸÓo-½+tÄ¥òXí™<S¼~c²DüaÊe€˜GP¾átF^Z©š¥—0¿(ÛüÊK`§¶9”M)è,ª»(îÏÅ"54_=b¨Cˆ±dgÔщ4jZ "œ ^Kì'Ö‹ˆð+5Øš„$þß,7Úä”.ÒÐZ¥‚_„P÷sTf›¹ÜÄ7Š4QF;y˜áµ•¼…o¯Ç¨[?•û&”Æ¢‰»—·Õë®Ðµ‹71á2ÝEr1s;g"¶ ŠÆ¤d±Â­Áª2‘Â8GÙ’)0âa#$džiµV2‡òÃŽl3„–â-b%¶%©Ží¬B¬c;OjÕYXNÉx%ÙÃA¤LlÎ2  s‰i†q.R¾ŠËîœx=…®•Uà2…ªÄ§ây~± —’aŒ/K43†1Žªf”UñsY×µƒ/‘œÞ” dŒ¾’<Úòò__[ÄžïY_»B0& 10‘”ƒð@P— ¬s Cž›•L–Jþs¬ /cä‹É¥ltd1¤![7úÁ|aÖ^2²ƒÑÛ:ŒS©14 "*N‰…˜ŠŸÌÌî.i†àâ‡ÆbCƒ¨m$#«Cç’Ý•pO9DÉ„.S ÄåA!Ö 'ëÁC{Ž÷g»Ý›‡¿Ðëu4`º y fšÝ8+1ôd9 ó¬ Ñì.7 ѽ"G§OSRÓà˜cÌM$µŠŠ¼Ü sw‘ÑËžPF«#$ Ù¸£È 'S©‰¬6஄Vc]S& WÊ»—ÔõA»ÉêP¿ sÖ¸QØ]dzY ÝD—Ð<Ð {¢¼×%Ú$Ÿ$$;ñlr!ºÖ!IP6Øoäaˆ¶kÉL ¾dÕX/ˆ.#ñÝB\ým‰ÃH ™š%ÂyÚÈlë¨ìXô ލm9tЍ,w6÷^ŸoúáÙƒ°ú‘ôçöb§btòdx’´5I2“1ðp‰í? ÉrÀ3k›è³î$€ß¼]€hZñ«(|rôPÃJÀ˜PoÔ…“K¯ä0Á}ÃðÓFp¶8²~A=”«4ÁãEЃí íGPFå:—\Êè•×VBþ•JM—Œ\§Ò¨h çŽé9Ôõ„Ä +v<±Ä‡ãòˆ^KÞ—#H›ßÄ.å¶üHÌÚÍ(Ñ>þ´ÐÉöº\ÐîI£­ô®›UåíS½êAz>õC(½ëéÙpp= )‚ŠÁ¼íV)In¢ñÁ1”¼í´ˆ¡¡dJÛŽ’3mVgl-©Í×.ÉÚ Š°%'Å@¦ö¨­F—} þÉÔç‚Tü#9ÚÁÊší&i÷жfg—ô’–]>²MË~‘øÏëN`ý7½iºU²Ç¡tìQÌ7†¦Ðø&{Û4ì™´ý=&ÏÏo”¡=’‚ZR.ˆÄ(A >/Í4 Ø]QÎÊíå_—O¶(õr)ÿßO¼Î“Zê;U·Ú^ÂuWCò$§ª´Í+û¹ÖUÐÍ­½šì8ÐYQ7b£mð Ÿ:KJï”h:AÎôÙQ\-wtwx¶Ð±5ôãëÐq¢ú`Ÿº­Þ©>Ékâò` ßö:Ó2_÷Îô‰ÇOô)”£!ÍsÚQN§O<è ³˜êƒ|Ú·Öœà£h-¤¥ ô"G éKv¢S'÷ÚïNî*>ºÇ2µ*G4o.§õ~ÒžÖ#ÊŠiXÄÞa=2ý…p”i :´Ø9©‡Ü@—ÆvDÖ)èžÓSÓ#ã|b[ÐÔÝ;£ßÔ¥È=vøk }Tìr&~>Ï8ÕãгîÑäD¦èo§z|;ÕãÛ©œê¡éSû›¬Úô語®åߎ½ûvìÝÿÓÇÞí–ž?!0]PþPƒÔìN?òц"£H@(œFRGekÎ(  ö¤Äa¶ãù€†’*„þeÚJBN¨ÅÚQ™ì ’ª÷0hÀ”»ÛÁ{¦†) M¦mdbGšhXçZ—Î8çžÊîH1bòÊ"¨hËwÈÁ™íe½21MÚA«|ŒuŒ´PÉÎ×V>¦Ã絯Y– ‰É3r#’T ‚wbt.fK#©2±äGí•Ñ*4›5Mµbƒ.†, SgЬ¯…ÔÑ W®¼Ïéî5„«ë¿MPÙ…J­ê$„âØÎì™*úÚp]tU±à‰Ý!©6é•ÉÍ$K¦j”ÇI½Ê]ʲ·„ZcmÒaÖ‹éÍs)˜£TeíÌÍÏõw…dd8€Ud?Ã3p®Þáù\Ã5i²DÒ` Šª )ºh¥)Új‚(k“f}‰4K颉1ÔÂXHÞO9ÂÙRµöhãžîh:º£ª±Âž êVA"ðË¥üTG û„}€«ÚúNÕ­F~,Fy%å¨0b„mQóRÖÏÄb9…øhníÕb)@Šê´Þá6GÌŽµ/Aó¯üØðÏs×£§ò1² `“öŒÐê0¶ÞT,8 ä SN±D¿”Pë[Ü?à²m®÷µc›}ˆeYò–\µFÛ]‰«¹†ª¹õ`ÇÅñE¶}w,1©»Û«¹¿SD­á‰+f‰ÕËåQ¦06æ'EÇš(Þ%X(. d^…"ÿþ“p«PvàÚ§˜ûQô]›4Á±hàÉ|Ê;ᵺl‚UÍ.»gUâ¨cöF›*‡ZÃ+ƒ¯/D$7ªíb˜.ÊZzb¶6v•¾éqßô¸ozÜEzÜcg bˆ^à å«V®ÚozÜ7=îÿ=îñ¥wÊPùä¥×4»ºßV›Å¯óë»ùÍâÓÝ»RÀ›që»é²”ü2]/¦÷Û^Ùg «èm¶ëùvö±)Ûοl«Åý ¾ãZ•«érñáþz³®·¥àf>[­Å!]’_½#Ϋ#6š×,çÛí|]Õ¡MéçÕúf¿LÞØn[–Þ,Ö¾¹]¿{¿\Í~®Ö«ëùfÃÒíûwŸ× ÆRTôª¾^®+•ÎÞÏ>®ÖuoA$Û|\Ün¯›Ëw»W¬XF>çwý:N`ØkV7Xý»¸\Sé,ù.ßÝM×?Ï×¥Ž7,–|¸ŽsÀo–ӯ׋ûÒ¿_æëÛåês{À«Üèí»AQ½ŸÎ~¦ùýÍõt6ût÷‰á¦ezo§w‹å×ë¿c|ßU éUeææ³ÅíbVf’5ö:ð/_DqÖÖä†eo] ØH3'“ÀîäúU‚._’|éªE‘ƒ¬vbSˆÐï‰SkgnñÊ™ÎÜ•¦óP.GJdòh„'9É›€ÎؘGÌÆÜŸÜ‹Ï9âÚ!:b¥ Ô„NŠ‘&—§7AöZ}¹÷âÒˆn{r:jÍàô<…Æ)îYQñ˜Ú´µÅ+€¡Û®Þ`Ä .is‘J™ùœÄÑÆn¨GaeP]ËftD îÐZ[`}ËD~P©}]À;fî)ë‹zì /S­ˆ€aYÎëðåÀ„”ŠùŸFØ=‘U]NL Ršå™Té‘y¬†|£¢ç&DŸ¢ã¯ŸP"R­‚úì9pžÛâ¡3QŒÖ ^h™ â@YÙúH _ü*9ÊYôš UãÆÄO‡™U!¦Q5y­)-ÄjECA¿Ù±ªÏÀµU¤Û3%Aÿm9›A2ºº–•ó:²1ZÖ.Ä]-2»\^…þò1 1ËÈv+:ñ334…å ó’˜J¦b>¯dIiÎJü&v¾àÏHG΂?-³eÓ:ÏQt ²¨Jç΀^ý:ú˜§úÒœ}Á•uqøä²Š¥z¡JÚ|í=\T=tSg¡N)¢nö3´¹võû ÚÙm¿ìg¬;"cWö³]­¶–˾’låh€5¯•M‚ æßm Bqà•&]£bÚIƒÒ졊Ճ.­Å/«%ˆ±˜nôN7M„„"¬=~HFB:% &°î­+ªoL^X²t¯µ$mS\”@+ZTCOŸP”2>L¥‹[£9zb<ÔÊâ>V, ¡ñ¢m HIµ)°Ý“®7àk§VÝl²–›UQíª¡Í>±¾Ö=BSw©ío9”ç¼U¯D®” ,L¥‹æîÎ%ú Ézèâ4i|¯c¶¢ê£sŒ£µ–.–*•ÈØ"01Ô;Çž¦~‘Ì%]Pq›ÂDÄlZ‹Q8 ”¼=loí~ñ-š—PBÖÎ𨠙_ÛŽ æáEÏÊQ|”ëf§f…óI"5½²[@6¼‚‰lSÿãØ¬ýÑzûÍjWÔb<Û½u;˜!"C–‚ÛИþöQ$8cŽ—p°kÐ.C#¤Ç+Í™QZcGc™3µi•\‘’Œ/‹<йrç(!ªKdÈè’æœ ;¿ ßè' ëèÜßh0ÙC<ñú¸ë³àe_'UÕ{1™qÇcC]ë>Ríyoí.Åÿ¤pO&/-VZ@H~ Ö’¬=p¦¡Þc“Ê;Õx ï´ÇÝÞ…[íÕ„µo“Þ¹BÑ“+p‰wœ£:¾1;‡у‰ô‰5–æ¶æá“;ö.þ”âvaxLþ!ÑñÿjÚs]3ùoË¡JëÛÒóŸêhqJãœÒTk®öevn-ï©C¿–Öc¦Ú¹oõ|­öX5 t(ŸÁIxßÛ'±Œã‹Ûwö÷Wóþ/ D×÷À×1_Ã>ÅÇ>¬äÿß}Ú? „p6Œ4=Í=Êy!ûq§ÚMÜÑÄȤp¬{ÇÅX|˜Iªá€ÙXkŒð$p.‰‘mìdF&fƒÎáJ'ÓÙxä—e¬E½i•½à²#[žî¸“˜×€nWd¸Å$LˆøOÈž©ãùž˜ÂÉžƒõ«"†¶jëÉ<ƒ†ðTâ³)‰™ÕA9bÀ—¦a;ÓUXLI@´x-k«C"\|Z ecI°.ài0‰;q\]´î€€;æ¡$+Œ•z~%¤+W¥O÷ ý`ÂØË=Ý› ɧBd òpÓ³$¤xcG‰&Á¬EFÃ`FœüXê©–/u•k>¬:J°ô¡†"9ÇÔM¢½‚åó ªqI;+VêS²—æe I3­Ìéb¡r˜kÐì F]°^ Yó€dÅzJ¢”ˆEZbš(ü \KóÜAFo(:ÙY3Ã8ä¯ô p’ J[r”nIÚ}ÂMG —êîP³ ´£UÝK,¶’È L]ÛKdÐ>ÝJTR4x>,cžÿçIÌ:R1>åEu‡¾ ù\‹Çºur!É>‡(ÜRrßä–´¼bj¡5<ß:ñMÖŸ6œ”ÞW‡ôCIékRÆYhãHÃQ#9SY."ÉŒJÀ‰; o+ºìŠK µoÑ1Öö†)‚ºhC`÷M&#¦{ ãËt±àBIKZrÜ£‘rÚ¨Èá’àS¾s¯NO< LFšË6¹KŽOzª¸3ìRæ9”PéM.ËŽfM u;R¼€À0$јðÜWQ²?J“çv2p©¬±ÔéñÓ2¥: .wAŸdt6~K8‰çÖD“D¬~êéQ, ^3 ËÓ¸£åíÐóAð»Œ$Æ iˆ+=xBùÓ9ðc ¡¡À@†µãšC ‚` „Ä^„“Ük¤?5`cW01=pÆ<€aÝrÌ€Caèf£÷2ã ¨Óh1šd]˜ïlØ–aA±ušÒdWÞÐ(†»¹Žýðô½±–‹ÍCÞ‘Í`Ô1qÔ@ÄxF‹ ³ÓÒX³4ϸ_p#îI¶¡ÒbxQ)39ecRñàˆ’ÝaB}W–²´H›ˆÞuäËEawò”§£LIAaºÁã$ÕÌÌ’D"ŸqO43 ÁÆ OꕰɦÌd9¨62.r>X±”jkI¿,)'›© ˜çFó]±=„ ºTÂòG@lMV¢§yœŠ"i¸nŧì\‚±Œ+V í¡Ãi µYö€Ð€f´€q–†?ØŒF0ï©’P¦3ÇPm Éà/jÖ²èqx‚g,±à‚Öè:&gï‘Ä~WÇK[šœeôy °%|[¨ÊCÇ nù´Ö„˜ž±Î:[ƒF’ÜÿmóÜ °/BiÊÉÿÑãë÷Ÿ¶ÛnÙÿY-î¯ï_M©\,øçÚ5eûË»º™n>N×ëé×c°2ÓƒðÉi¾lšGjyš™5óHp?0{É[`t7r`ç5__ΕÏåP˜GäsrsMNDp$'q0Ö“JŨiC>"ŸÏþˆ'¨smêxÑ¿g¢¤¿û¿‡î® »ocsigenserver-2.2.0/local/var/www/ocsigenstuff/scalable/application-x-perl.svgz0000644000000000000000000043247112060404165026166 0ustar0000000000000000‹ì½kodWv%øÝ¿"&ª0‘çýP•ª1.ÃF6¦a»1“’ˆf’ ’*IôŸ½Ö:çFd23ÉL•J’]"/ïó<ösíµÿøß~z{±úËÙõÍùÕåׯüÖ½Z]ž^½9¿üîëWÿó¿þeÓ^­nnO.ßœ\\]ž}ýêòêÕûÓ?üñÿØlV¾>;¹={³úñüöûÕ¿ü_7§'ïÎV¿ûþööÝW¯_ÿøãÛóqp{uýÝë߯6›?ýÃ?üñæ/ßýÃjµ²ç^Þ|õæôëWã‚w?\_ðÄ7§¯Ï.ÎÞž]ÞÞ¼ö[ÿúÕîôÓÝé§xúù_ÎN¯Þ¾½º¼á•—7ÿ¸wòõ›o—³ñ6?Fžä{ï¯]xÂÆÎØÜü|y{òÓæðR{Çc—çÜkûÛî̧õÕO6¾ ÿºÿtþwöÿËóÀöæê‡ëÓ³oíʳíåÙíëþ¯^þ¸qÛ7·oön3Gÿà¹SryòöìæÝÉéÙÍëyœ×ÿxþæö{[ ¡ñ×ïÏοûþv÷ûù›¯_Ù÷…â ŸoðÕ²ŽÜ6:n»ÿ§Ô¶nuÝKN<å`ñÜîÍÕ)ÞðëW'ïÞ]œŸÚt_]n~Ú¼ûþÝÖÿ×Ã\ýpûî‡Ûÿïì§Û³KÝϾpïsùg^·=øÖåg?½»º¾Ý|{~q¦§¾þþêíÙëwç—öý×WöÃéÍ뫟~þîìrs~jKîµ]wqòÍÅÙë·çoÏn~gÃxóöäâ–ÖO!¼¾óÖg¶¼ß]~wô¡?½yg³]ü¶Õ|ô„Ÿ÷Oø“ñÇ7gßÞàLM~³ùhü›ýÕVÔÙÉõ¿^Ÿ¼9·}¤ótæá_Š~\cWÝÜ^½›çŽi¶#vN|µ;|õí·7g¶ÜÞ±›ÛŸ/Îtöæôêâêú«üöÿþ‡®lßþü•µzýÀÃŽÝ¡áß»w8ò"ÛBͱ¶WG_>?üÔÝYéøkM¹Æƒï?ö¦îìÛ³oï¼éžòØØ>¶;‚KéñÇžÅ3æ?ê±õÈcýãO;=;ýæô›‡&ô¯Öãëp®n»õÅÙ©=ûäâÇ“Ÿo– Düêûë3“àÿxdÅ>¼ cë»ÉúnüŸ—ç·&ª¸9»þOˆ»ÿçòÞœÝ;ë¿®O.oL¶¾ýúÕÛ“ÛëóŸ~gÉûÞr[;ûw÷›‰ÚÖsN®füÜ[õ¹”ßï^ßýª•muïe~¶ƒ=nKð©ìVêOÁŽæm*.ø½sí¨waS¬»åûG¼èÉÅsŽfì>nòÁx>ÄNè{'œþd¯kÛbïÈÏöªÞmC}·˜¿½wÞ·GÏ»¶ƒÍN3•ž4!Ñ•S2Û„ºm±xû)Æmó-%ÿû'.ƒet?r­YƒÔtüçÞF~\æÎÝlOË›ôa’õÈóܱçùãÏ«›ú¾zqþîœÜ~¿,“ñûã[ϘgÆÖú¦ìFñÝÞÝöŒ„Ë«7Ò½vå þ½9ÝéÝì]^Úì]]oN¸þËÉí×g÷‡óÛýÞ‚_­ìøÛ•÷aÝÂ6»Ð[Y®Ü:ÙžÍÑùÕ&lk¯©¯Ë6¹ÞsXmò6Ø!»bëz,!ãˆw-§uÄU®­6>m»¤Ç¡r,vÛ/Á…Ƴ\‰v–Ûºæ×y[›÷¹¯ÜÖ—ÜÊÚg{“”{_mâÖ¶Sk»’1Ú!¿-¶ê:˜¥Bâët—qŸØJ««MÛšZÛrÀo.®Ý*mkÂØM¢m¬²ªÛÜ’ ëM²WIͯúÖte·Ö¶ö{+_·ö4kÊÖ´mÌ«·¶/½}ï&àáÕöüêÏ+ïº/Êf`Ÿ_4°eÛk«íÎ(ÿõ¾>2ãìâ+ó~wWŒ™Ôÿýð×½ýss{}õ¿Îl\îmò×syßíšÛ³ëe•blÎ/íл« ™n:Ö×Íüë?½ú ± Kcw ùÛ³=ùáææüäòŸ.~¸>ºVßÃðæŸÏþrΣ)]r.÷;ëøð Xf›¾7z­ÓÐ6êè¼yN-mû.…‡RHÞûÒº-Ù²ÍÝV†~ ¡EŸî(é°5ÍÝË¡’6ï¥ùêÊ¡’Nvgšþž’6mãü{ÕȱQÀ0}€Ô>jQ?QI´ÞS;áî¥ß£Fö“öRNÇé£Öyˆ±Ö{Ë|HÜ„zðæô±·îBêý¸ztyóˆËñdËú©ÚØÕ½‰}1m\L“í¯ÖCmüt5{ToŸBkŸžÑÆöX7wµqÝ:üã×Ítbm¡…º6ãr•M]™;]™4¥Ó ÒâÖ¬öä͆·êr3סߊi$ÓC½¹ZâÚ»º5Ü•UïÛžœ•Ýći¼žWø£ïÝ¥uë&ì¯QÊ,öíe:-EoêË­›iP{0ô"~3e¶ú7ýø >›æØ¡úzXe=¿`R2ܑ؇±Úf7ðÊnVà³L…Ý… P¢ÙF1öm7 U³RK;9s̓ùIÂÞD{ qMÛ(4çͲ‹íƒb6ŽÙ-Ùg‹%›÷¾z̶MnòÅ÷/çŒ1þLN=-!tû¹œ{^1ç=bè3[æúÍž{ýõ+[(ɬK“_»>œÛž«‰†Ýù?óüìMÕÙ’ZÏhغ³3Oýù­9ó}r5Å;Ã{øû¾¸7±/nÌ¥ìÛž­v]§Òž„†UUwÛöÔn}ÂŽÚÿ# (·Éí©ÒgÚ¸hjƒÖ ‚3føÙKB䛄°Ù vÔÄ…‰´X~ÿávÛ‘°+ÎÎLÜÝf/î6ØO»ýWúžÜÙ*ÉIW¾ÇnKø÷“ì¶òmþ6œcŸ\”'ˆ ɇ—رwc·7·ç‡öêÇy!wœ/+ìù&‹€‹¡GçÓœ½YÏ÷ä\©Ì ~þÁ‚û“Yj˜kzª=`æÍ¥—Ø[3kIùÑ/²‡—g×G|I3Š>Ä´pß~ÛÜGz’¥¨?wÿaî‰rÁ?.ÅÝR#bU!FÛ«iý¸˜¦Ë¶!ú}ÝK=vç̧i¦#¦_ÞËä<8Á,¾w,Ãqש;ž†=›ûqoïC¬æ§ÁQ»ã«}xŒ5ô{>] [󰂯딶©;“hæÇQ¶UóóÍ‘ƒÜJÅt8<9Ÿk÷‡ôÃêbåÖfù7óõ*µÐ€9ÕdžbŒ9¸ Õ”b¨+þ`ﲞ?ØÕ!nS æšSásʸ‡Éù̵¨g› ×Òž+=û Vdñ.®ÍÙà ¡&_Ö! ¾êÍ)ìv®Ù Á„F³ïYù)lž#½“}¬tfCkE&oŽd±CÁV0bXð_CÁwTûSâ À» ¯½íöl¦?rè>òÓqIî¡zE’]fºj Ôü)í;â¢.[vÛð¶7þÃ. {'Wz¹…}Øý0{kÓÞ—¦–©´9šP}Oõ¨öA2î¨õôDkìІ{,huh.mÊ{¤è“´ŒÝ íy\'lÞ¹#.þöC@‡!®ãý©A²÷ÞOÞz Q?ììF—7Ç´úßJDaャæcò¸ ›vô GâÑψQdùè®?‘~FĈ¢ÌG¿ú%P#Z6L ïC>Uà]š²÷jšøïÝ@|OÓ½Gô)?aÿó± ap*¿GOq|zdðcÐCG!JÇÑL÷QOÇÑQ÷QT¯ö²2ïEq=ee½'Úyˆ;Û÷š`ÔŽãÙŽAßža÷±®¸ûSÆÂòFô8äv“>SÞØÝ§˜5€É>`Yüóþ÷Q¹ûHÞL¿@Þÿ.wË»—{é¼?0¼ï˜?¼ËKØÛä{Bé§ QeÿNçȹØå&r6ÃäiÛ< ¶3!:ó·M7Û©[Ï_RI6³Ï°Í³šà {(ŸOš §ƒ:É{ØòÏ6œÑDi±›že0Ÿ$1_x0M™b®þ)ƒY«™¶©Å'ª ãƒéÍáÏ®`,Ãó¥ë¿€±ü¢ ó93ÿŠÓ¢Y§>¤8RÙ˯v³Í['{ |¡g‘™{QÉ_ß6x4}05û’žu4Sÿ5oôϽ6SÿEèó2ž4šn[šïî9œ Ôró ›!msJ¥?øØh¶§ewͧ¦û{M¿µ,¡>ó`Öò÷8˜/µ4÷¾à×7šHÀÁô˜Ö1Óú<¸Tþ>s§ÑŸw4ÍRó³æ>dì7Ûý“Gó— „~5~eþEX›¿šµù÷®…žÕ¯ÌŸO }R…òÁ ùŽ>p0ž]wŸê–Åñ%t°Üž¦œß°¹ÏÄñøÇã]C-ÛT{êﺉ[W\êw^öÈÉø„F;óÑ*À[üxqr{ö»nâÕuŸTè|‡ãÚ ï¾Ðs¦$ÂgÄl| q žûôŠ‘|$'\HåÃêSŽ=íÉŒpUa#å)ŸyQÚÿ|.åÄ2”ßaÔ8ZöêÑ•óËbÔxÚ`Ôx_õÕgdÔØ™M¿1j|£Æ Ã/ŒQãA¶®;”G)ýÞ³ Q”pÞ¡Ôx Ëç Ô8V×þ™(5ŽÑ}!Jú|ç!Jü¥Æß,¥Fü9ùÁûÜ”õýVÒÓ(5޵EzYJáðúRã“(5ž2òÊúR£ï·z¥Æ‡0\>U ŒFJ'¸¤Ô8*Pþ)5áyYJûâO¦ÔøíÞ2é7é£ÂáxÉ”‰ãÚSê¢ÛL˜œÃ¯Œ•ó‡Â[ÍZͦšƒ©_6ÀUš‡£Y9Wÿë¶å|?ºöÌcé£ét3Nï~,÷*¸~ÛåŸ>šÏ‡àÂhšJ%Öäò'ŒæýüÕ/g4?ƒ2g:Uó¯kp8ï§”Î#©ê_ÌpÖgUAï[œq9š¿Î¥YŸU½WlšßÉŸ~R³?ß`š·™áSô™R¿m<Â=¤¶.e[jÏÁ±•ù%8 àÛ£—ØøeÓ·Í¡uUZ‡¼­ÎÅ?Ý3ÏÑ?9ù½~ÿ”HG*[»õ^&‹3¶ƒÁŒ@ÈR#½¡ãCÛkŒþñŸ¿ßÂóáÏÏ¥?ÏÇÄk{ÞëmÁb·¶-Ľ£øø#çÚQ_âú¡õ"G?þiuÂæ¨lì56eO«~Ê ˜¬ìö{ÍÖ4¶œ?¬è{#z[é9šÏD÷¤B•šzØ69<Ï ü¢DÁþÌþ݉‚П$Õ¢`¿ãÐß­(Øo õ9EÁgGsó‹_LÏå×mq±„Xëºn3`Xå9hH[}2Òý™Ì¬_˜Íж0YŸa0}Œíi º¿ÕÑ|ÒòôféçXžOg3z†ýH¬=ùØö!­9¶§cf?¨¼Ôz€z:jöo ûþ½·¥ïG?e§?¹nà9æ}}kïr‹§'ÝßMjY$¹ôý4êný~H"óÍÉ›øM|{„=íX#˜Íc íY…±E{ªññ Ókk©<ÏíûvÒ‡ ìsŽÖ´?j´Ê{ÄÙóŽÖžiýFëÀÐü¸ÑzVê™Gë=+¹”ü&>¬jž½­uÞ3•ø ›óK;þîê‚-Š7:Í„òÍüë?½@dÈa÷!†;Ãu§©sîûâ豦ÎË·åR`¯.N¾9»˜§Ôûöº8»|³{Ýoðëׯ.M ž\Üû žlﲿMÎ/MÿþçÕ×§g6“ï¾?ßG¿½zc‹âí·çï.~~ÚWßë¾½¨ô£Íºìíý@/ð½ãÚ~«Î÷ƒ%\)÷çØµ~Ç{o÷ï÷*ò§-twß#cyÖ¯òá°—Ü{Àà}`Å΃•bw v>¢hà—U°Ó~ò‚ã¦Ïã/ú1;Ç7,æ?g·àäÌ>Ôìötë²e{®É·vg˦ڪë{Á¯Ýâ†Ñ½iOAM>§"¸·ì5âæ®ë³¿ÌñÉíwP¹í{ ›úA[þø"²%ûª(pûXÔ·=±lÊÇ4Rý8Ô÷ ÍöX+4û¸ÖÍ¿àJ3÷ÄB³©|øeš=RÛ|§Ò¬}ÁîÍGuóç)5;”x‰R³‡ì4{ ”™=¡§æ‹ª2T€™åð°Ugú8:3Rrÿ]ö„z»ô|‚÷¡z»ú[½Ýßl½]ýmñõóÜõvù“-¯Qow´ðöe,¯Qo÷1ÃoõvŸTo÷´Äû“WÖoõvìOSušþôÆ îìΟ±âî æ+îŽmð¿ÉŠ»ãêyÆŠ»G¢//Qq?2›ð‰8èd™Qñœ°ò£)U_âÖål>¨ß†boô)ý/‹)ÏXÆç¬lzÏXnl$ªÙï¹ÿjGó9+›Þ7šÁ~‚ü­¹›1GÇóCÑ…Zgæ$ïÇ€&s­X”=™•aS·Þ3ÔL¾§»ë3lÍ<è‡Ú1r¾îÃØaÇ ™âÚ^†gÚÁ¹ïÅD0]¼SBù3<Åô‘)þëÚ$«U5ÝVl¹гL8yVlÛÜ|F²šþk(‹<òa±¸EòÞ¸<þöìöäÍÉíÉNúÎ#¡ø‰˜üãõ›o¿úþ—ÅS<=ýêÿ½ºþ_;/'œ|sõƒmá%P`ç½9ý ZçäöOçom½¾ùËwÿ×Oo/L,88ûcwSÝöÚVð7_¿úþööÝW¯_¿ûáúb{uýÝÄþïí9.zýŸ·çÿÙóhÇMÏo/ÎþÄgêÇù¯ÇgLtï+ÿøzûîŽXؤ;ÿËÙÅÅÕÊß—§W?¼<ˆÂúÕnx‡ðÏÜó‡{ ;šÙ]\)=ÿA ×6¾äW&BYFf§³îG]8nc,iekÊ7ûÑ¥U2•ƒVö¨¶:]™eéÍÜ—æâ*mÍJ螉ØZ}é+]ۑϵ'ñÄjFnX¡¯¹«©0ÚŽî~+ºÁnþ}±âšdG|ÀEÉÜ`äZ ¾UÆÐì6Ñnƒ+ìíh^U{ªÝªÙJG>¢„U(Ûnæµ§‰b:yS®ñâ*Ú» î>Æhÿü¦¿‡¢‡ÕPw7_N¯‚T9þhÎé–ærÑÓœ3ªm;»ÛÇ; íðlW… e ‚M€ 2'Ü´¤™¦!MçSÛUïç?ÄUœC¡ÞªíÄåˆ]ÈuŠV§X{|¡nöö„m§²ë¶þíÍL=FsÅ5n1\.JŠè«°íþïGn¥ùB“œB,X=_LËP ïûƆ±®6s”°©ûq¶MñÔä¡fbzÃuèöù ©Ø§ë|Ãc3kÌ„H3+¿Ê£®Ë¬K͆¼Ï ‘]±ë¶/2Ç(çn‚¢bõV¼¯ ié1­L˜õcóe³^ì&«hj°æ˜£}ä¼ ê—Íqj8h“õÓÍ@J©ùƒ)%o›ÍhgcH!ü¢ ÇÝ‘b¦Ø›_¬4\\ÙVˆ]vßrÚ …? v÷dÐÝíÙO·÷îL'tºµÞ¹ÿóà}pI0‘± v™ÛÝÍV°AÚÅÃ̆A÷žÞºº¼ÝÜœÿõì+@V²ï©¶w?ýA‡qÊWªQБ¿œ\ŸŸ\Þû‘“ƒC7·×g·§ßÏcxÉÍÉÅùw—_ÝÜž\ßþß4-_á“þðãõ9Â8*_]\on¿]ž~u=®Ú¹#õâr.¡ô~ßž¼=¿øù«;ÿæìšÞíê߯.¯vãõöâ+ ¹ Ï;óùήÿröêO¼µC—;—ðØ@?0Ôcªp½ÍÕA5Ïœåë+L¾å~®øÑo}õ'ê®/Wþ|ÍG˜‰±{ÏÞ>r?i“îŽÞí^¡ˆb[3á•LKÜETb af»2§B m–­?8”Ì 24œYSæÝÔNÔ—Yœ®:èS³  †TÍÈ« %—ýjV Lƒ3¦LíèÚPã1˜ÖIg›,÷ v5]ßÝdœoò°E_Æ :$7!!Z“‹°ü¢ù»žd6Ùƒ7q9û@ÕZn `¬æsì«f&¯½p„[`¯ N9k°¼ìn¥PGd&=üÑn– 5œÊîH²‘0 ; 5Wà"&Aã0Ò¾J?Ä*ß#ç —½CG$W/GqëóÑí;.¿Ží¡_½è Ÿ.z(?Bµµ”÷ez© y”zLúçûsu_kÜ`Ëž}‰Uï ¸;/øÀ+>E‚“`ÿûý’ëñ¸Ã¯é]¤¹;ζÛK ¸8é+JËñ¨„3ó©D;#»ßpæšžmLʘZó¸×\ÍAÈe‹È–—­"p¨ek¸À~ŒÕl¯ºŠy[MÁò·ƒ]à*]3L) C‚Ûˆð_w6öVÙã•Sn{Ù»Ws²ÓUfˆ™mYۧȪ{±Ç4°ùO{ïNî··¶q÷ôÖ"–¾;G§ýLñ1:gÖgéÈùÛÆ÷­9.ä Õ^ü~Eûn·èïß4˜|#Œ7Ýý¶ñÈ›p‡f03Öå^ö”ó{>R]¾ l¾¼´ùHœõ¬¿ßƒï½æ±…'bÄú—ažŸÍPöëŠx‚oæ´Vìï}ÝÑݫփ£;p74œ[ß³{@óÙÎ÷>‡?^œÜžýÃm€í™ßß9}Ê{ç~çONÐi:­'o®.Â?q:þp!5È Ô‚ÉD‰éxÛÑÛb®kßl·{Û„vˆ~£­¯L;Áœfo/m’Txó¯ë¶­Î쉶`:z”F[†pï»a¸fk$ddjåö,æmêXF¨gB˜;ØLWî|÷!ømor­LÔd†RÛFgRÆŒÙ5Ýl¿†7hÎîsÊW[ ö¥€¬TT%„Î qø{Ç‚™6&…ä§Y>£.ŠÁnW @«Ù_f°UËNø_ïÎÉqWëÀ éÚ–Êý¹ÆQ³ïNZE˜!ÖzçO?§kä~3vý3òÈ&KpùáΟg#ë!WƽV{ù&~{÷#>u7ì–÷À²Zƒ‰⇵OÙ¦vš˜D+Ñ£þÁìïâ?laíP…¢ †(ªéG¿fp P¦›°U‹‰L[ˆË‘‚eÓÞxŒÞeì™à[³ûCÐÁ>ÄžT€óH{ Óh£.•fËό݈‡w_:‹ù>æ–W¤‚™š+ÆäM)#â‹3ün³¥}[#fÌÑG™”ICDMz™X´‰4}Ťµé¿¶jöЏ¿ ýÆŠÄÂïÖøLxH¤–”€ÎÃýæógx ÎlæBf±{]ã PgÊ»#ÄЛÄãÊç«cB;vŠN2» ƒ9g[˜é¾ý¬jç®:¥¤« r¥™ÿ“ê¢vóHŒ†c3qE`'ÍÿÐn@]Ÿ™ò²œ- ƒC«!Èã[hG˜odGlÑš«e«“lW nЖMu!›ˆb@žRÒ&ØVsËf‰ãø×m"Ƚ¹9挀-Õ²ä׆M É¾B9ŒS¹R›“¢L(´EB,Ð]”ûdÖS™/ƒm蘉³Ý²bœ(Ã]CÆ¢ùH³/ÛRnà4—+C½ºñy;J~•-qHj/i„«lµa!eò‚e…[êÜ>—U>>È€½)ï\Ì¥ÀÓS€”ڈ܊vv€¯‡pLdBŠ¢•–x ˆ„º+RBÅÉë-µ²I'„BÓKRÇDK@`+&F+ÊCR@Ù(uŽ” óÀæðu† ¤£]4V¡m혡asäê¤+µ™zþÌ™LxA¡wו¤ÐKËæ5ýë¸)Dâèýù™úE±/'ÌcliQñ; Ðs‚%‰~sáàFa5›á€C¦|¤iTY.¼ÁÁª„Pä¾#v)ÀôîJ†¯¸uPó Ý1½U(:˜Þ˜(ÂT¸™àM;áPæ‘È& ‘¡™áʽZH°V|u É8óaÀ”·åCydtš\…mæ¼ÀXÍžxÿˆ”€ >¥ï-P"‡DÍi2'òœD¬VúШ‚lCu ½0,æÖ™Þ0/ÜÇÎÀC@†èxl½Þ͇}<|sŠ|)Žf¢="Påñ¹õs5cte&Œ}8G°ûàÓùkÓ¾9vˆyÈå¨)3ÍIkæY'nµKçK(x.èž-ÚN‹Ãrr©ÑvÌ [?W‡æ0ô…+HÇ9>QFR8µag£¿s:á;÷ wR‹€ÚÒ–0 +Ê8º×¼Ô®ïæH¡H™R?küBí²µ[ʆµÙ 0¼ìX4³ Û¨RW®øUý¶èbS<•’Ô¤Þ»È5 åÉ•Ø`[0¬Ù¨à2¯rà§[†j aXü0!⪀-"Ƨáý {úÈlTK@÷ÂÖÃËi°àqa¿Sü÷aÓ=ƒ®XÁ+’%cÖ»m»!”üÊ#YFeS‡yYaYËá†o©Àm˜3Aù€](Œñ„Öå³R ÚèÐx(MH+8έmŸ-¸C ‰dº R‹#Þê]º“®õnðæØz’‹ªäÕ‹ºúõ¸Kq—ê¸sržº ÂpòÎr ‹Ù€¶‰â²ª’´˜¢ÜQÊÊÚ~p°h‰EZr¡i]štËôúabBɇÃ# 1%RîFîò£ßÎCVÁz…õ[Ñ4óh8 Ûè"H4ìíl+؆Kk³ÉGÈl®ÒÂ-fÖT‚ï–”I|@ LÊ\Góö ½¬“5¬EØ++|Vºá®ÓJÆw''°í" n""¸#åë U»=Ó. }Ø0¹Õ€wŠaèæ¤M)@£Ä˜¥ÞO/»­£&Ú½±ƒ×iŽ€4‹‰¡ÎióŽÁ¸ÀÅ…®èåà™“2PÂ󶽩ù6¥ 3‹c†€£IjjZ(¡n¦·#­›ú +±B\BØAø2Xgì#A‹%J¬Úʬ4yúểUnGüfE¾"d¯*™4•Í¡Ž‘Û¨ˆ6ÈbçಖãNF(;2åNŽ-ÉAŒi¤ ³fà°*gâNî ¸þJÀQŸ'h‚`¡bàùæU»² Š9Z¬›%O¿¤:H28ÿ0ü±ï6‰¶ñ2¢"|Õ0C‘øD êÕŒqØÏp) m&™âªw –7U Â&µ×pÁ‡‘uGT&̸o°ÂW1‚:À¬YœeÛ­ Wn«1÷!ŸC¡OÒ0šŒfa }Ds2\W¡" 6Œ•å ¦$Œ³VLu·DEU`á'"Ùñ9@?-@rÓ4D¦)2а,<Œ»y$l\™^€CWi¼£ˆ:çÈ!Ü*è@pvX­Œ&òP*C@mfèÿ“˜g¤–áa¿›Ì¼Å8ýð·¿®ÞR*â™/™  žW²ÓÁ­r/A%CNoxXžkLPLùš#¸¡ LèÈ@€¶³‰) b:HN¢-k”êM10g¬~¨mÉ0™/vgoÎNÞ¤'åGˆÒ˜HÓ©öôˋ꾣an¤;}·]£, „^ÁŸTb”"A4‡Q ,{g-z°Uábzzs§*âG³Ò{Íá…ל´)Ü9ÚIFž/´¦m1ö¡#aO÷‹®åš2 -n¬<˜•±a¥CŸÕ1ÿLç›Tj2’Ò v#ÅyCRp·a A Ú¾KN–VO ó“@¸xÂx•uG²Í¬¦v¶µ0Z…Nk :EMD—Æ®ß[t Ð8®W?BÉ>$GM¨bJ÷JQ6ª ³ÍÚf”Ö«|Ó*cÛv'¸ +U®Há*j¤d “!¹òóÔ}íUÊXñSxµÔQÝÄ*tA_^Cƒ¨AÁŒ ™èÁàrC%}t×g‚=GÛÜwú¹„@x6ø—“±\PÃ\bÄÛ—Á]GD›ŠÚÑ6lj¯™†B.Ÿ‚U¡Ub£[‚zĵ5ã—g]ÅŒ¢$4ÂÒÖŒ'„¥Ðàr¬”fÊ‘^öT=ˆtƒK z¬xhŠ­›epÀ æÍ\Sö$R±`Õ#°èkÄ{y$)Ë*ŒÙa¡…J}ŽÂ$B¯‘Î@m ŒÐÌä±yÑP›EG(-W8œc8kÒu´JVÜêÂȤ·ååk+<[㌩Êtðé.ëˆ $?z¦”¶«‘@:мÌR &&ÄQ ¼¶må‘ rT¥tõhR0zàäbðmÀ¶Ö#ŒnX>5Vð¦399k|Š+HK¤NW°)ëaVĪ%"è×bˆrXëÈ¢žM£­0Þ`ç4>Ë„ÍEÈŽG…ú7夰I>·D>Ž= o¤…7C1¤›0H\š‰µqQÛZ‚ƒŠf2Ø‘vq°P« ÷0Z±9°‡×€ª'É·»Œb„‘ì}ÒüÑÌÒ²Dm Ö<íÆõ4Ƃހ9“š&̤§S»é£êþÅ‘¢²Žlõͦš²öSBš IÉ”Ò䜛qżƒ¹ò8([ò©xG@TDaËUQ+ÛGEùQ4+ ›±¥¯¢°ö—Çzƒ0¿)lGž’´¡0)0ç×ãsâʯÍæ!P2Cç˜ HEFN«ìýH 8í„ טFD5Jýå•ýȺC´ÖÖ=!*+ÅK\VÜ éw8;Œ<{ûzsì¾¾ÒhG6«+éÆáWmͱ5ůÀ‡‰î\•žgêG\¶œ ¨é¹`­˜%¶eBQ!+²—½s™å[™¸ ä“Hè 82Ì0bãsuzÈbÇ8=ÜP›HÅÖ“ÌElR#¤: p„ø¢7ŠqÆ6Q2Ü®BZʵK!sÛ¤-Z€¿Æx¼wR36Ö¦ý$Á½ÍEFm…µ«$"ôä0@w*7aù+ÞÂ4EâÔ8~F”ïC™ÓEyŠ(o›qöÊŠßr< {kxóH^.cú¤ Â«Ð»^‰Ÿ’#×ßCeQpØ;)9Š´/ò,ÃkSPÀnF2sÊbÄ3݃ÕHlk[ˆ•Ðí8-Á ÿVf쯬œê ã(‰eOüƒ¥^Ê+BÜîGdòŒhñ!4#´ á„`içÑZ”Y˜Ê œÔÞ𯉃Œ¬]69à˜aé ••-¥í‡´åò83—˜97µ¢¢gœ€•™Œ{DÊδÖnìI›Ì\~8mgFß#tE+FQ:qÆQ E;ÃäHR3اS<4ÙÞ9n¤ÍsIn%h`1VT†6LÁ1#\HUÑz3¹ð-¶~¨x¬ºZ›¸ÃÍRÜ¥¿D׎y€!HÝSa +pàµ{ƒobƒHœÅz*`"-´ *V$IŠÜ²CïãœfØ$Á¡,“ü‚(0 t˜ \ãŽQd„Œ mé­˜@žR òÃ&‘W\1… …$¤€Ð…ÈŬ寰æI‘èžÆ¯3“†yå°Ø³Z®²tNr•öTƒF©=«^F¦þ4‚)°·5¥õLÈ@gÀŠ€#!+iáh©Ùô!ñZ .p<Ã3M}s™î5,;ÇõB‘c;U„\æ¡®…DDC•(L±áÖ©$ÞcÒËäŒe ·€AÊÀEذÊSàâ‹w!¬iäü¹Âsâé@b¢t“Ç…ÄÐ[PößSút vB¾¸¹éý/ö5”Íiõ‘e¸ @.ÙÞ $ dž}nfL ôÈhA¹%û³²ÁÜ㻘Vñ£$‰<U‚œ%Û8›¬®Tv”²&èæa0gëéý"T”dAßÀDå3ä«)©?â‰ÄC9x¶r0vó±qË!üp•tޏù¹„éKb0»AuY’­ÂG¹™–N™{Ÿ’'QnÓ¬` {Ñ<¨ ƒvD’ûvÄÒÒ¼¨®ÉÄà” ÊyoÒ¶®§ñ‚RsM k†‹_®% 0âÄ4ûò¿Ð±p“ДÌLØÊô3!ÅL¹‰ í=x—J‰åÄ]”…I§B¯¤Áð.¨^6oÇvé®#h¯«Â“ŽhMÔÕ£Ò@Ø1N ª8áçŽÔB`•B†YŒE˜ÎQ•o Š!¿4CÃtÔ-kg"qi¾»W &…<£8Ê©ÇEŒ‰qý µOàg ¿p¢s?¢¬ð’À7X,£–ˆ0 |ÜnxGh)j·10LpE¾†¾E$†a15¸'!wø5´—Yµí©o+tW¾"½»âɬ¸ÅF$GS9Ž2ò~\6ÌKî|¢Ší˜œf ì§eh™Ò$ÞÀH®DN -Deã`Åã‚kqEÕêS~V’‘ 4Èð™ˆbÚ:-¹ÈmÔgÚúeK*ERÈt‰mC|l ŒßÛŸÂ7Ís~±³lNâ*Îè‹}O{/Lc–¦¶…”tÔ|ž(ùá• „áq¥ÙCEW°O½…)[޲™{Ž JjÇ‚Zþ1ÅŠîMmzhmD·š² Àþ %Ø×Ô‡‘E]ËôšüD/i€èJ ¤Ff5WH¦O¬€¶”Í> Û{Ô‚¶­Ê™#mƒ’xBÈÙkd 5¹£øÈ{èC…Ãm6’J‚P'ù‰¼5\ah…F'&¬;l j~ek ˜–%@ÙÎzÚô\ƒÜ·Ü«YæÞ›Þ“0¶Í@õPG*–7'@Dq8†ß1ü‰-W®'ºÀ 6†©k¼ã^‚DXçàÃä£;üU{40L è&O™ÃÈBBäÓSaò%('ƒ3°â).®žÝ1 #×÷ð݇ßÊõMLß4ËqFUT–>ƒ² .c±×B­ë—ÈuMÌ·Ê e óÕÈó9íìOq ÷”ÈcüiDp¹{LÎÍÔ “tž¶)7ŒVƒrûN° QŽïŸ”TžÅFhEqU…­J´²xš6ü1¾3JÐôRàâ‘$”œ, Ó€IÙ»BK[Aqx‰˜j «rÎhVЂPR×í¬©5í ÛØI£â‚é $š ùÇ™—vÂüÒY”ýË9<-òJŒ@¦Âcôƒ[E[!'¿Ü\ž¥¾xMþ,c`aœ,ÒRh­…Òu ,Ë™VœÂ :ì#&§½\Ó¬˜>€‚¡Ð}AºSâQĦ´èÄÛ YÃØ?§F rPa Ck+ɼ Ú‡AbgFÖ;¸„J?0H*³@ð*DàÄLÏvæZ!„ ø(ÞhjØ&„cǵ0´A^Fb‰ƒìä‚“ÎÍ$˰g¢/²$+röe¸æõÈ•w§¶=ÐcQB¤EÝZŸw‰WNQ>9ýÄzÐèi*/tÞ›O§GN“½Ë™à¢Sb…ØH[QÛ¼åÄ|ËÜ$B|üii¢¼!R‚b’. cY¸EðT:Û&ð%LJ,ãõÍ` ˆ«L†ºm[ÂwÂ*(—gIH·l Æ9vÜØ} C³i-IÍ’õp-Àv/t£ 2•ÚB0§ŽÝ!„:Šh^Äe?&agªŠMÁÕn’>ȯÈevІV’‚¡`'~É#rÅt}:zìB9.ìÓL93 ;€3Û™9ƒN½`v±Cæ€o®†$k"Pc„fèØ1 Š˜,(Žà6&ãlIVJ$¤w`p ìW Bmâ ÊÕ•EƱ½>’vM:Ñ-¢Bl¸÷‘U†[08…ùl9(9Dâ§Ó³eè!á)d¾IT8…fÑ©L÷œAÆÊô'`¥©&${âÈÁÌÊX1ª àà|ßÕDL¬ÇTÕ*|‚›Ø“¢«2¢^LÝ—ô8RKˆöcoÄD›Ø˜a¡WE0Ë@ %m˜†Š|}$j™RVêÍä¢##Tf  {å ¬BÛ¬B§Åæ«ÂÀÊAR³yöÆÓcluØŠð2Ã%‚@{•ä2die?Z7OvU4I¢õM ˜iU™# 9JŽâǨۣ0$ªxÁ:³‰'ELª¥†Ø}W3©}Òl®²t]Û"[ʼn âÔ̶!£â³•eÊl ȇªb Œ€¤¬ o õÁ’«i®Y~®º(ßÁUŠšé{¡ºÈ;çùÂiP!ÒªXC#ˆ ’äˆ3U:‰Ñ…æfJóà1ÂÙöºÊýÊY¤³Ï^^A˜od8ȱù²NÒyD+¯ˆŸÛ¥]bÏ(7áÉN19ÙŠ e1h÷®r1ºÃbk:•¬°$W0 XÆæ9UöΔ$¨n4Ÿêƒ³€¹[ÈyfÂ'`4£¢fu%Æ2FÀ`3èɬ.£ÖÔv—L ]qÆà‚I‡Úaö415f€Nq&±ú`!¤ { iÄЭ “í¦ë³ŠS™kÆR1y̤ˆ÷sW&·ðõ¢B=Dqªà1OšPòé¡Ê&D¬Ç/f¸iXcH㪠ô¼ƒÙFl±çx-‡v¨Ò¤¹lKŸ±»¬Ba²P]É©W…þ„c³KB„õA›MþÜ@\ G&éº X2ˆD®5,Yå°{‡"PÁÈ[:þÕÌ5ZÚ#<´;DjR93P•U’L¥2"xØ)Ž?­ŸGÚ ÉGH=Ê—E"EiK¬ ÊT˜Ìòh"Ø€ï+ôyAT+ wå¿Dž®:‹(h%„«NX.ÀŠ4™'¤7¶2ˆëETPi¨,†$·°dÈrÔç3j&¤ÿp¥’ÒæA¸X¨…>Š7©¨« æ+s‰KŠÊºlâ®\çP_Ô!È x• ®Y÷LßBN£ÂN^U\?²w–Œ+Ä0‹²áÜËØ„4 è ÃÅ”sîCW˜¡8*ÐÀ´’¢ñ,0fFZ§­ƒºgY:¨tA˜q:*róƒ^ÀqÌŒfpuhòhàÀ»fy£‰Y¥C”•­q‚~A %uÇ8A. ý7J©eÆ0‡…¸Ýzf¥¹ô4¶µˆ@2Î÷R0Ó6Õu¤Ëñz*Бë†Ü\á"æn¥PzHÜaI  å< ú™â&m¥‹6R|‘V ò¾9ãžw™Z¿Úk¹€°Ú5 $-C%j¯Ìê0'†¦v˱YãÏì"ׇ‡Q‰ø i'Ê.8·Ô6ö–äÞ‘¡6³ôJ]ý»íc™ÛR/&{§ƒñ…é¾À²2F¯ 5çí'&q`D­–BYâeWu¸ i?KˆÍ[”ˆš1y$À®+³”J& þ‚ìîZö_¨rJ&<Ó+ŽÐ4¤ G*Ö‹—›6Ãw¤uQ“b>ƒ¾2 ÝGD¦Ò ¡ìfÊN}ô.Qåñ;ñ gPoÀBPaàÛ’Y@8aÓ¸ òýLòëWŸI/ª ½!ÆŠjr™ßOI%Ì•—¦_µÌ<8RÍ£Üf—gÕ‰j+ÙÑŽ}‰Ž ‰Ã˜Tó0±xÍzfê…X„Q©d’BŸí ã„qÂÒÕ\P'K4,Q§”d˜¼Â%6–Fz™zy½@€<Ñ`4à \[í¶s›Ñ M=ÑËØÅ”‚MÉi'=ɳy‘ Ž,Lµ´¹ËT@åB W'éCåõƒ4}„H¥Èœ_uINof9(ªß”E”˜Ò˜Á#Ô(ø•Ôª D­/==›ù ÍIõ<~A¿øa ø%Á ½ –Ô@I—Æ2¨áËÒãþÓN\Ø ¨IcçñVÌÊ C"Ï´`&µHkÀ»m”0Q/Ä^¨1ØD# [Ê])h”)EbŒ³4Á‘(Ú“{.ÈÄv2Ý0÷°sŽÐ72oetm<‹^…‹[qÓðùt•ý°D6ªò ”ŠxVBJË(àÍ‚*{¼ÎSPe„·PÓNû;ìœÂõÈd¶ŠZ‹ŠVþ®É«µ4¯c€c”4ï cp$°Ž…Ô‹ËR2XÌÕ͈#‚|b̳æiÛ`”µð1§Ðý ÐçEõ© Å9 _¦›éf0ÝÆXÝM•©¶ä5©ï1¸yK! Œ€‚uŒ6VÙwüУàÑU“hÔ$“òD¢˜4¨^pþY0­2ÒD;Æ–>à¬ö÷8ÈùX˜öKUÀÉt³ÿûRÁ²÷Ÿåè86î0¯Ä‘yæüáðžºf^6n{³ü°wή®fÞùþÍî¼ÿá–ÿÁ¯/ˆù>ÊFPâ Ìa@;ÄJJ7$­Id›'}TU"‹Hã,]fušÞ­Š¨+ˆŸ‰E$—ÏX‰CNxWå3˾„Ù†¦P"•‚¶ƒÛ- ºfÆ¢yqó%Pã]DÒ|P&‰FO±ù0^‘, ŒJŠVOâOUË8äó¸Ýý#ãp—ô²¶ÉãøÞéÉ!*’dü —Ñø8ÅiËàXŽèúG÷L¶-ïüË-’v”ÌÐŒÿIG þnÍŠí“Ô=²ìzÏÈ£î&“ªriDÁ=XÀÇ0…þñҔʪ#ºÄÐJ 0Í>âXUMâ`긫 —6£”œ&ˆ@¯0)™‰œ‘fdTC„¶d9!ìåª&eBTáp7» l®”fWO‡r…~®Ûi–±Û¦ò„é3 lEzÙÄ`ði…Åf´LVŠè Ÿı%„\'§€ÐÍDch0Œ$2¡%aËF¼œQÀ~–e‰í,d¾‡ÓB–@bD’† †’J抭¦–UÐdf‹ª…ÍnI˜l#z8²C‚®Œ·«ÔN;W¤îYÞ‰ñ£õ@v«€¦½ªE$¦Ôb¸É)€Üˆ´L¬&àá íÎjœP3Ø$’"¯¨j)(厥Ì'Á¾¡Ë¨o—96xkªDh­8 aM3%ÜAœÙô8S¤Ö"~ÀÕJ@,|æûAÒDxcÂHšbD~qÁ ˆã}Ë€ÜÑ'EÈÄø<%ä§Ê,\ù"}X–21¹d°²ªSɦGȉŸô)ÐüžÑ&Vá^%ú{œŽÑÞbtê<ãîŠ\~¤¡Wó§2xâÞÏ$søWC¥.–œòÈN›ÿ6Ð}Ø«‘¾…ßA,!ÃzYí8»i$M¸`*{ï².áX.>| 3#VL°hä+Ë“Û Ä¤ˆ,'À/7áÀÉóU=•3÷fLM¬¼&f†¾Ódsð*‰g6Ën °#B=9–æ Ï+¯e•Û-{AŸÂ Ž%*éô§!ƒÓ"¬*¤ Ü3AnWÆ®üeàˆŽj>‚VkKŠÜ¬>†¯Šå6Ï&2" °y®J­XæsÖ3ÿ”dòÒðžX›(¸f,]Ùï!T{$û!a§Oçg´d G:ÆÔíÚ $Y {xsHѱƆΞWšÄZ7€Ò Ç¹Ìe"ü‰>æA‚s”Ô*ò÷ º¤»w„‹FÅÍÒ9t“b±ÂÄ嬼#Œ À"¿Wž·ub‡«-w_Ùk7‰àIJ«Œg æÁùAì´ €’$)¸´æÙìÄÕà4"丄ïÀ•.ÏÆS0Ä»¹Ð‡t´ñÓ >RÁ ¤Õ!×aW;¢±Õ⬠ò"ˆ@._8‡YÿE²­}zx·b¶;±ŠAz žª‚ƒy P–9âë¨ZfÉîÇ“S#V•`„IóØD+‹ 3Œq]0rõ€8€ÌKðq@ œ–!¡¯æRqšT^Œ4h$ Öˆ`&2„Ê%“‚H0mÕǘ.¤fêz9RfÃ(1FÔö¿àI†0Ë ióØ­„Ê—éç„=eŠ{䀌T4ô×~²ß\U;{Ñ@CÒ¤ó6ÿ˜œRþ)|Ê@ V‘Ñ_qMÁ-Gë˜Â¬<ó(~èþ*Ú™Š ‰#$ùÇ$l¦çx«Žà.Þ“ä’LÄ›u3!¥ Ž1é:˜Á?Á2]zØ~€Ýƒœ(Fz‰÷)Ë!W ÔQu G{if²(QÊ·Pê=ÈÎÃaÒ b04͹-ßyXæ%&kX´‘fvC’ѳPŽ@ xÈ0ç31‚9ÄióMÅ(›Ýj´ë@ž[øÉ:!¥,¿…0QÖ0‘]$?(e UËVÔdVâ3Nê´åI„áÒÁ}ź"ºNe˃A6Â}[ñ*-àÍQ­J.üõBÒE0TUñ»£Â/Þ c Ì}“™ì‹»\kêyPÞxAUiO+TzCY[£Ô :¨Ž‚]N;ñõpެsûȲ2dœ ¢W(d¿W«NT0uTÊIôÞjyTT\Zðµ4E ŠL F«|XH­û‡îivEö”0žÈ¸U%øi¹ú;Ƈ|L¬MÚ/7³E ,ÄYGO'Uµú˜ñ™úÔKab Å®%£2 î"ON5m%q ±ÜcxZmßÕJwy"œYÇgwUÅëï^*:ômÄ,°-¾Ï⌑©© 2µRĽ`ò©óÈ]Q²4¡+ í`q°Î³î ÊAè„•æD3òç,¨óu)C/*#_2òKñp¹dEëÈÜr³R`Wå˜'û"„†F9`Dm¦ÊQÏm´ ÁãT’Óª­?Ĩ"~¯JF­W§t- ,ÝF¸"nU»"–z‚WÑZ«ç‡¢)jò'«Dë`Ð`{e ŠªÜXÆntSo¨µ$ã=AÞªÈ-oU D¢_˜„ô¡Ã飡_e%#áê(| FI:R–\;Լ›9(¿H0¹4è_²D¥¹¤œã¨â¬qËH;'ÓƒTÈ 'L±z'2Ó§i6NꢮÃ$nŸà S™+ éÅ%îºx€\­Ë§žG(&¢f;¼x·05€ R„ú£ÔvÁ Îä ŸN˜½ ³’æÓ±ˆe ÐHƒ¨Ø›,’4 ²'ŸéѼôì{R ×Æ"ÍÀô:4÷Š‘ëy¶šúVªÒ[@wƒl:c¾Ì̯6„_y ‘tñzµá“ƒÏ,!F‘Üî$æ>&ãüXWµ{ ÎÐU éñTý‘®j6à^ÞkL6ºªEÏJ©zªòGpЗlnÓ¸Eÿ¾2fï2êLZ´ÿó*Ö"Ú‹Ä€r³ÅËhª­`û„+Ù —*¹½ð–RirkG•mfíÂFƒ!¨ì^©s›¢õ3J¯Ê¹œy0C9ÚÄ•±u£ûDÒq;;¡¸Á¤äUA ä´§…ÊR‚¢0uÕUO¥NGJvŽd6ì¦Ùr¤œdc– hb‡>‰l~?ŠÖÒmp§ÆÎŠ6Ô…ÿ%±ŽÙ \ÓH¬+ …@k²1—­Ì(r¢ƒÙ©ñÆŒeKoÚÀùÁ~RäwVÊ·bÙcŠë.ªÄQEE“lÜ7”’I>ŠDZšyÆò˜IrÁ 6pn0Ÿl¢þÆàÕg&Òå¤ë¥8Š”píGßÔö±÷JP—šÇF‚Ó•Ê*„½w†ñ±Øx€@…FiÚ Aí½×M`1Ð;‘ÒY$¥È:Øv¤iÈf¯>>ç@”r[Z¿°Ç%AÙb­*ʘ[Ä"éaA"µç‚ xGÒxjU5®s$Ju¼…‚¼RbŽÙ‰n¤ÞY§º4 .Q58BG]åôÔ6³ˆ GN5v=êFåedVƒIÊ:‚PT<e¡R%Ê\¤Þr¹•ë`)‹{) N5^æ8C(\…ïFÌÁÂkoZðPß Ûbjl“W¼%lµgöè.(vZÏ MäÚfæjuÔ/ö­êܸ¿;SéË•» ŸÂ_ýrÂù¸³T`ŒƒÂÈ6)‚DdN»ƒÈ"TVTûTUŠ*HÆB€0& ¶ãäÇRä8öˆÌ¾®f©Ô,Xló‘ EB½ @A\y=°©»óV=«˜•T˜¸HçjÕ_f A±ÀVW‹Äw£•‹¥×äh‹J «E Ì|e!2xÖAóÄ4KÐÖàN7» iY• äSѤ‰°}ææÉx/Fˆ­¶8ä‚ëaV,6m|t5Øm¾ ß¼Ôj0Óõx³ÞÚÄAÑãf;—ÃÂå.˜­Èö=xÕ˜•%Ñq?Hh”­ªýÅö0tƼl3¯{tDlÛšè~Á9ê(Eì %ì )Tw$“•Ø Øo‡ÞÌì0–ˆ°¬€D Ó³#_ݱö¸qA\ÎíDÅ{F•ƒ5¦¶^IH@5™ºhéøq ¨„IÇ5-ɺY“„)ZÀ;(‘s¬Æln¬cå³ÀÀIÚ‘šHZvðÐ$Õ4³ç˜(FÌ@=˜qZ0\½øü +ö“f‹\ƒ’—#K.&1ÒúÔAûQ3Iq Ê…ºs³€f79 êÔN.’…RaïA„SgMW” ÎÇ]ßÓsàxÚá×äц&³_n»5éd-"›YDè°ÃÏÃãF¬³4°]*ür ɇ'ô€ð™F¥lÏ»ä½pÌXœŒ»Œ-ê±” /Í¢‡)¬'`í>'TVîfÍGÄH»j× ‘]£Ç±ˆY&!‹JÌÍöŸIì*i!âÍÛáêO–ç>p¬a¥Þ˜˜Y\98h"É¢(-›žH®¯‹ BSƒ™QÈ7YòèÆRȤ´0ãRABÙP4„Ø-yÄ€lñÁ`iw•NOÄm|«ZÈ]h¸É³4¹õÔÛeùŒÍ’ ³ ÈÂ*Á²}Riçþ dS.£±*“¢¤\H;&;d™8¨ÑvÊÆ uìUÖ"Z5ÞÑ,dv³7#Ý'ÕNà½W8FÒQæÆjdJˆÄKþg<¤)uÀ0½Út1®Ï8ß` ä²òc€˜6@éð('šÔ~mÆÜXg_TÍ-B3ßßó7j ƒlpR2sËd6p×3Z  È]æ0it ²òF7Š:$¦òŠa’ËÛw±»±gÐÔgÙT_. Ý“­œü?µ~¢Ñ[ÜÊíÈÝÈeÉ_ïÔÕ&, <¡ÀÇ®, -S“ÐÙ&•9ÒA¢½eÀ UÄ–bNêÏ  ‘äy3AÐ Ëb½z=R}¹† ÙìÃã#^ÆêÝ·¢Pæ=‰dJCe¥i¶Õ Úq˜Èº%¤ä.õ¬’WužJJ•»ö  Mß› åäaOy¯¨›9ó.ƒ~$Kéx¶ÁHÙHj†]¥’ËÛ$MÅu£ Žx@6»ÚÎi™„/iæûãFm S˜ìOÇ(tÓå÷ãÀðÖòT)«¸P“ ÊÝýÀ]²[áÛ3ó•QDÿƒ+*¨mz6’æj±áÔß<-Äš‚óx‘ò(ÚGr!5u%P­L$›Ì ucQÔMÚŠ·ÊªYÞ‹%9E*Öƒ¼SŸr„îI: Ò o}4ß™NëÉ›œÍÌAò›¥uªðÐÓþt5{‰sf‰lä]O Uþ²Û<Å]Þ.z“Òt)[5K?uÕf\ö%…û½úݵ%ÌX«¬ &й©XAÖmHæIÈG¬(Lr¡¬ÒUR q͇­È.a³‘çì]ÅìUô†€VuG¨‰lü¬äð“ŒFYòè倳Óªi2ïÏrf¯Ö£ÀŒ1^fƒŠ©w¡Qxúr3t\ý–0\êì ³2‚š °ØrÚ‘“a²ª0£ØŸ.+«œÑq /‚š dCƒb6™6gÕ›a“’­™‘Œ!lšÂÞÒ¿L?†©„Ø7À»>š˜¡¤NW™ž­ÆÔÝ¡ÀAÒ-'«Ö« àŒ2¦Ù5štK¶¡èÉa=à³isÃdC‹³æÜ(9Wíui,ÁpƒÚѯÂ2¶•æô(º›UðfàËŠŸfsáʳ„=) ’ˆ·Ê£±#ö)‹\ž5Xy:Ýq‰0”éão 6ê«¿ä¢ Ç-˜2±}åÐþ–A]&íä,ÃÉ ^˜–Úˆ«ß ÁN(ùÀzšÉˆ,XáDt»ÈJåX|ÖQ&pBÜþ»^9 ©*£KžçF’/ú³ÃcÊ6Ч»B—©Î¦.5¡"û{Ä™ŸA‹?£}\§ªƒ*ÑG<®ƒR J#òK[Ží(îÝõ³)‹¨§·/•å/¸0Æ)Í ¢ºë{™4M“H¼(}F„0|t„0ÒW@@°5ij˜È"yŒhÁ j…Î6‰X“5 ƒê ¯ÂÈ×8òÚÔ¾¿9ÁöNÄQ’H­@2@Àìd?;:=v•­–Ïï„åEM{ºSyGôs•œ R©³Ÿ ýæ6PAËJ_G°Ã€ï"ƒBP9° `á‡Ú®*àO3£WQÿ78Œsu`“e «²dçs å]‰CêˆùׇGûñÈʉí£ÓÇ‹‹4øÈÄÐ6è(aBîs°=@ ²cÞj˜Èð‚>î¹à´1¨TFqÆÀž¡Áv ·ßL!P[ð°t…ˆ#j8šB(ïGý>ºSñˆ˜y–æ¢öÛÎT£ŽÀØ`eö<0Œñ®KüÀ/±>hÚ5GÃó°2X†S³ú¤TŠÏžQvŠ•ÌÜ‚M4­,ö.⣠Z+¢à +šKÑ…>8n¾^ £¬_ÑDP[£ù9 Õ*Ò#‘JÙ©k¢tlMÌS]Ü€•ïYE²ˆs*.”Ӓ=b•7µ¨bŸQ5Gë‡ÆÎ5‰Î+ º£_A ¬QUP|pÔ\ÅÚæ%÷àZ40(3M‰­$LsÁ&ÓÙÈùvq˜±ú”¢²(õ_EâíÕ‹|¶B‘pf[w4dB/3rMæ­B EÄêãT‹J:(ßMÁœDH?ÛBÙ¼"×bV(YÍ<(+›¨6ÕcGô7Jè ÙDÆä‘–ñÈÆFâáÀvDøî“j¹™5*$Þ#œKÑí,ÎB™°V/ hoähf5r$Öx`IWó®\ÃÒBaÃ'nFûˆiyqRÐÿGóDÔ"ˆ&”(0=uOÃ\fQäØƒF!Jí¬Fïƒ8J ¥jê!BÄÁ´<¹®¢JxYyƒ¿ lH¦„@fÃ]¨øzSÚo¶WhÌà8ð[ÕåGîVTšÛ) Ì=ßìfÐm˜š »p0k liY»jÀêàãW!m³ø °ÕÚãžÈ¢êR-’.s;¤×¨1wêoG?ŠiMºQ¢Ü 3,Ú678Ô’ ¦ioerÚ³}Q£û ruZ!-!í|¹ëQ{²+£¢ê+öUóJ´²jE ÏŒb,SŸ£Ó# ­Ñ3¤÷>[(/lÝuðÅ‘ÇÛÖÚ—+ÈfÁ]yz>•h«Ñ2A…Vm©ÌG$Ý ,ˆÉý¤^³a ·LÝûÄúÁï‹L”ÍØ½4ÂG;…ÏïÞýø´¿ „LíqÇz ¦yƒ:Xb½ÙŸžÆxåùûBu© ƒžéo²ã9{e²›ÐÚ/¤.aø~ônbœm,ˆ›RP¡—NàDÌ#sû®ÄlWZD0µC"x¢©Ï,”øä«!q Û5 7–\Óë°cdBÏRŸRF_ Ó¬6›ÕIÊ’ÇqÕfioêm·ÄŠd1j„3à†8’E›…KÆ+\ʽ*âÞÏ›Ñ7d×`Ì«y»@S[Ç‘J޳OtPµÛ‘:,Tš¤ŽiЋ²:Ey*'clBi`*XaèiGkJl$t†x«Ýf¸ŠÂšÚ¢S`ù >Uyx‡?„qf¼?u¿ÝŒ_2'B2J’À-•°‰nDyÏ^ "È-fË!`¥“ÞŽš¸@§;†E«­p‘.™ãà´;!ë0ò¨€i½§Æ'^p ŽçHRŸÂ+îõ·¿nõ#F)—&Œžñ£Æ1Šiº}´qn°k&Ö‰øDçY] ±:‰¸§šÇuRZ‹û‚¥&”Ñé”4ÀÕx9p?…q`Ðø”áÕ¸yÑhn(¬ò¨õ!Ç.+úš¨w7·§v;Ž2ÞI †§xw¶%~öÙFÓ‹¶„§T¥<=ö²Ëí¸Á˜ÚXn-ï–H)°‚¢j}eí,]Ü7lF’†]Ó?öÍà4Syy:o+Î2 vƒPa³#è°´_'¼g瘨IDoòİ“|VwBŠÆ½`æPßJÑMvtVÌŠDÒQ€brΉÝP#WœAêIDa:nÊ¡<Ô~bƒü´vn46zXT7´¸kÚd(ñÓÔºž¥!¤U£h0ÓÜ–A]cj# ¦uUˆ£òdµ‰lâ$êÇ=º-^:÷œŽçv }Ï3 r/2uëZcùÏÑÜa²Œ ‚t¦Ä‚„Q̲THF•¤¨{²ìòè ÀEóIOQ‰ýqE2ŸÝ…!¨ô!8MÈ@F\PïU Ynò1«è anD!VuÚ¸,¢€gÕ ”# wéK¦òÒq3!•c‘’ÈrSt€má3›šÌ«ñ(­ 0údÇ“5!õ…570#FF_Õ5)}P_;9âg!U˜}?iFpoÄÊE%ÍféK˜ÍØF•°?9ÓiˆÂ4 ˆÂvÒš ztñƒ ü«¨|@Rí\I–ƒZà¦X'@"ˆCŸ«ÁJ¢¨Ã!gå—¬V·IÀä™[³ø}ÚhÚ &C)é%$ËÌŽ©»žÙJ¯§A¶Š’Ó 0ÇdÊ‹{(ôÐ×ìÇÊÁÕèÔ³SŠÍë~^8NÓkBë™!‡÷Ek@\­HC„\”–‚³‹°«§Ê.Ð-¢ó7c©¡b…¢…uÎìì^Œ[E6ùxQ¢ÐT˜ðÑ(Ð6²Ê€ÝÂ-§ížⶅ"XäO$ÆÀ;j*Í'ÏÞÉ?ØÚ¹¹Ä~¢ØªP¹l8U·£™’Ÿí5Æq ûy*øJæD°´¦Y[´´ÌÇ— (ßÐ}#»ðW!À:¢×Há`ðà³-Ö¡l‘ƒ y„ûv´ÏË“®Ò ?½E7œl˜jñ8ô滋e{Áó€ñ6 `PŸ¼1 1¸*QyèFyàèJ¯7nBbWs•GÛÞÍrŠÈ,ËÞ‘¨¨É YÔÀ2|ÖVmÔWW’<èÇÔ ŽÑCŸ„™¡še Ðo¡@—zZ´…ëT„j@&†­æk U˜t•¶IãÉÀGˆÆ¨C™-1!$f=`HްW_Þw•H jDÅã8: ÒˆaÇÍ•qÅ£<øXƒŒ y% Bb–\2ß$°ÇèB>Â+ÞÍ÷í”gDöÑv%ñVÀ6Ê`Tc`ƒÎrvyðœÒ$”!ö {Ùñ”¢×‚’Éd(ˆ·HEn; ™ÃV ÃŒäs8;Œ_¡µÇŠ'¸­ŠtGkC9XŠÊô(y‡@Û†rV1¶&¼ÜX7LGà–+蹚ç3)õ¨Íò²œ6Ù†ññ]Øë~¸É—Àüg-]Üñ¬Ó*Œ#À¸™”F¬Ö`±y…‘åóœe]4®ù’¾J~‘]Ã^ð"(Uº^.ä@Þ/«÷1ã—ª9AÙ³jôdm©p¼‰É ÈÖèFëp5¼MSï_˜fÉÈÌò¤Åöa÷eZYÌ Ä¡íݵ˜ìë`òž6aU"P½ Õ»3½®©—r!†”ÁÌjVò‰ Œ$$ï¨ã27/B/È,WkP7ó:uù¹Ðówýhlë¥í·|wûÝ^Ÿ\Þ|{uýöëWüñâäöìwˆ´›D8Û¤ß?¤]:N¨N5¯LØ„]ÏÚAE?jÖÑjcÀF˜&êAtÇqÂKØ5á"ŒÒO«“=¬ k‰]]W¸,“ÿ}tósl¢kR­(¶<E·$àð È?°g=J§X?Àd¿‘ ³ç/B†Ä‘ÍtŸÙ,%%ó€’ÉrAiòò¨ä ÄŸæýÀš…_~TôAªw1ÕÎZ¹HG…A®¢ÝÌAÚ P‘ I`H&5ó63ƒ$ÑhU®† “¡caeM6~âm5© ytV¯]¦•0m??Ò×ñžs°ÿ¼Š¡rû›p©jÏd‡Ô:¢"ÓSÄI Ñâº.e÷6K× ?Ú‘-gÊÁêÌ%îL¨„§¦›¯kÁ%4A+ “iaDÇXø‚™ßü€U'K߯ñl…Ùý;f$n³t_Â÷‹MIøB˜4ã¶šÍòà°:öËmb_ŠBH.}Џc³¬X7£*E-.áµ"LýÓã5AI8M” IêB0­­Hv’ìÙrR„Ò%Ü?cÇAüˆHž1¿»y¬¥ï†¿é®´uãGo |Ù‡^‰hÄŠN*eˆ1Yâ&^ì¹zƒ^7ÀCªÜƒãO–g°dÕŽò¤JLe3ód?ݚʜL®Á0æã‘5¹-/·òðB&üÚ ¡ ‚ÔÙÌHÅÙÞ—=G§f $PA…Ew\¦·ú<1U$‹›‰H%3ÒäVCügwC¶z„k¿Eœj‰_r£°8ú/©QË Ê™Êû–°­0; ’%‘Úº³¬j5B,YéÒp§©ÿøl ܉*B» ’õílÎËl«>¯I<¹‚¤ÐqOû‡§¬Ó äynRmF¨œH“]aMù>³6dé»7˜¶³B3®Í¾=4ç’¬8URÐ"´Ä Ò¨4W÷¡s¼‚þŸM¢ôO–(}Ø50]ØE0A¶X¼Ù*ÈLݰBá.ú3tâ:ÞþNíênAßcOÛ×®/~÷ç—g'×ÿz}òæüìòe1¿ä¸3oiÊ8ïgMʤ;Û ¦´C­k'¶„Ò†»úùÉÏŠ<~IóŒ_›8–Þ@™8bÙœU@mGÈ-ðu‹ôK‡ÐÃIú5sÛ(J”k_ÜÙZ† †ý! ›òÇÂTNþZȬ 7x¸;‹Ð WŽŸ< A»h1’€gI™ÔÙ!q/#:Á÷ã§jÇ={C®¥'É.àÙ!Ä©ú”†—0˜,Å>ÁªË’Äܬ,9ª›äÖSîB+GLÒïB&(^æúDýįÕçYÔpu²ŠU2 ©–¬1ùÜ%ÊÒh´ž›4·Ù Ey5ò›ª°ZŽa#G‡RìƒðåQñÒ˜ÂzÜ!Œñˆˆð£YºW]>p^œŒ¦°.ªBee®€,+Aj˜Ú¤ÿ êZ½ äD’m €Ñ-viY¬œž#Py4¬ë¯YøÌÄ]•ðq(Wd“ó%Êêqu')M*4bbñKO>?*uÓl£4šËN_ºñ2•†Ìî01èZ">*Úa€ËÕ1zØáh’¥ã°‹°÷]—»H‹?Ìe‹d7ã…´ä1ß›…&Ž#u‡¸¯FÈ`˜æjCF2,8Uk¹&Q«š(PˆÈU‚°^F] ±UãHÿd6d~\ ¿¸N9®VãÃÞ·½=£.ÌãÀ.a²ÊÓ(צ0LÒEŸ»‹nÔ™à%õS iDøÁFó‰©E‡ér0r+%üwIÒ{Æï…7C;®“ç æ ¬;@Ù°•ç#üpúïI¢ëU/Ȥ»nKßÍ2@‰½ÇH†³m‚Ϋa/#AƒŸ`ïØ¬³fÙq&›–ŸØ}Äl”ËEh(0´þKç¥Gõ¸qÊqcO̱^XðÕì M²ÉšGÀަ²aÊ ™FöÄ)ÍÊ"ì&}0àÞãš/™Ñ»×:wŒÆ¢×H¯Ñ˜•³¨@2wsåFO‹BS ÄøÈ#´Ãy *ÐíÄ0ú¡ñ@!Ío)U0!¡°Ñá|4‘ëL¤¨ ›¸qÝTžÎ£ÝÀÒh›í¥#{Á¯G••ÿŸ¸·Ù‘dÉ®s_% ‘D$ìßÝu¡Çzˆ¾ÍC@@SØ=Ñ}úëë[Û̽úDe ÊÎC‚¬ŠÊÈÌp77Û{íõÓ`Ú°îg.D 2/e÷øûA#žÇ¹3ÎJ-•­)âWŒü÷Þ¾÷çež‹yÜlö†6•¢ñ!~ ¶áF°:ž™©MóÀ3G$PêžE9ô;Ã[6Á*e&·¤‹_Ò—Pヂ’’ç :wbÈåÆ:y,7¯-¢wXŠdfŠÄÛ¢týT)ùÕæÀïï®géG½¹²ѶjoÁ6$ÄÔ)é M,V‘M&áÎ3e÷ز,¥ b‘ëâmíúN¡z—•§ªm—¸´Â„¬V#ˆÔ¯MÚç×ˆí  n½ Çaqvx!1Í,«æ<ó=á+fbØ×ݨ÷™yð†¢Ù½ 6øIË$`QŸ|ªÇíÉeͲóÇJ=B¦Èðm” 2ÄšõáøM¯©6ò|8þŒ‰>XB{3ì5 Ññã.Ÿ#&_}ˆ¾®«$»´"wϳI=b ë\#{p:5 ¿"†\*ì0‘=ࣛ9B‹CÖC]Od¯Ù É>#ÝÍOºDÝÎ#Æ èÓk½é6"nBÇo]‘ïá<)]ãã-‡k™v"âJL ΧQíµF/Á«Ía®šW‹ˆèìÑFIÁ²À)ÄšÝxvu wú˜$kÃÅî`©+×}ÿ€îªŒY z…î¿qY ‘&LÐço lYÕêe[ :Ñ­`é×ç¨À7Z ‡ý>¥Ì-–Çáê-L ’š…žH ÷Œ81À~6æ!žÿÂú°ª9Œ¤­; [çÉóãöÊR GŒTy”Y¹,‚öa·Ÿ2Ü…p0 ³%Þ"òAR×+Û íhVh<ƒã)"1€ôÍ>vø\%c5»[ýÍ:æÄ”¡G!d0s~ÌuÚxgæ ùD¨:Ÿ„©ÇbÄpOôˆ=,%n×òŸ…sÁ^ʃüD;‚“Å?|áÿõsÂ_„ xSøIv–öçúÝ%ö;Úy¨óÀ2¯W=Yöÿ-9à\FbMŠšr>•‘°¨Øár¦}•g‘SÄÒD…”ºBi ×xP™dE¼åí…Ã5ƒŽsÚ’žê”|íÓ¡WÓé4§:™T:‰Ã¶¶›§§f&JŒi§˜¬Faxƒ9¼¯`Oi8éÝüÜ”5ùÛÒNJWBsž?}3Šù¥Kï3¹®ÚºµŠ3¤/‡“tȘ¾¥@Å©“"Z/;¥ …VpÑCG©mºLÏzmbžÅºè¶ÍÍ<›¼ÌÜ”ëÞ³Òpׯ„Ȭñ®Ë“&OŸ¹f6‚«ðJƒ>L¯7Õ_¡NXît땼KG§Oh‚Êbwê~cÉ’ª•޳sÐ~?è-䉇ož¶)Ì€dþ> žksçõ$#4M|Þê¹6I7ö›Sõï¬Ý*ÄJ©Û5²ôLM[‚fø¾ÛG4ÚÒÓ´E I¥Ô­xèéù©jJ/¬r€H¾¾3q(¿O*GY—‰ÈùÍ£ó©!dØ  ûØ`§Óƒ®KCf½"r\õ‚_ hI\‚RáKaSžÂ¸©zp_á;vû€6ÜãMæohG}ÌüÉQ¯æD²Ýß_ó_^ò¯.iÞG m=طᡪDG~– —’øÃ\Ð(:øg$!¬Q9é ¦a!o(ŽõÉDð êˆ`óÀîÖ•5E¦‰ØfötrÙËZ*_1òÀ$êðlCýXÕÍ 0«äª` 4CÖ3;Ç$:nÏ¥4Î3•Îhß#Œê‡SôlÝĄ˃±4ÛŒØê ²®øê;ü«;¨kùSÄê««÷ñ]œ’A©DŸˆÄîkdM`%Ïæ€ÖdØô¬; 1¤º…3‚gºÕv(Ò™åp°ë„|̤$ Ü"’ka{Ð;QÐó;é5 …æxpÐCãɉ;çž—ì>{.p~C‰¼ž– X‹æ°¥ßCV^vþ¬ÝšÅ´gNÕ­5UpégšN5Ü‹¼ §E@q¦ÁcRÁ`»£”AQÙh‹XE/.øÇ̺”Í“5–4kÌÅE×ÌËúûDñsØÅ† çá\\8æø Õàn‰…M?R[1ãÝ¿‹p­jU\b¬0æÎ Ý ÷—³´£q1ïÑ€pæš/j2¢¸e¾g2y> uúðÔ9}AfÁp?²Ý ­sK8'r¾§éH˜uhýEQ5"ëéJhwžævôaåòù›ê-"(šg™Ñ!ì`SVÈäRÝujXùšŸî·„²»cS]Ÿp=LûTGÙ½;ÍZÅË„ ÔŒy®JÈ*+þ>ÚJÏ…m_¼`wh‹É„Ìð>—³ëŠ0±"7Ù½úl"j# {_y)ZyµÔõ=lx$!œî•üržëÎGžœ IfQnhj!>•éÌ!GÆe·’1!âô‡ðæ¢%jC¬BfÚþÑÏRÚF žà TONÅ©Ì{£ƒ}Ú?Ãâ!%§>6‰Z$áþYn<úü.ùé#pÇUn;?]1«R°º%+çM"¢XðEÑw2öËù<0doTyP¸»* ¿œ¿A9›|=}âÊlZ-‚DÏkûŒxf¸à…5E¼Õ~ñHñ6¥I‘C’gàÞuÈkí¬D7® ±j‡~ƒsý`ÉyLŠ!‘yèrªüÚ¤ÕWÛñ<ÂjR)Œ6ªï.Þ´….ZŽlBµ5€˜ÉMm‹´ÈÚ6‘ìñºI„Åhü²\ŠHãÓ*&m&sÆ Ò*îð^OÀá ãÀât]ðƒåR›Lw½ÂŒ"‰šdéÍŒê_Þ,dzZ»aÿ¡6O!6».¤ŠN ÊõÊ£/ÐÊ O+4Þ%æáÇCÑG-ºnæÙùð9l-bc<äx阬~®HZúvGOå­B,}8ÊĤ§Ibp„<²œp@<¿|(ª>¸&6lÄ!G¥|8+¢ë£„=ãùªyþyÝú÷ÀÕÿ©xZÞ8có‡ðÍ¿þù® æ+ýõ_G#ÌﳠΓXä ê'rÝ6ÏÃg•Pá¿ëêŸ.*‹A‚O²×’¼=³»é#m64‹ ÃŠIÈÇ“i¢lu[»F¸Ný<3:«)IÏY_ÊŒÂæ)3Mû5-WT+ÈÃWÆs@A‹3™Ùrƒ $á11kÑWÀƒØ˜:>·ø/OÓz¥ßcß7ÔV&ës·ñ¤ÓgüD‰õ¬í¹†íŒ`ᯣE^Ž¡Ríˆ,ÉaáÄcFðé´¦…r‚tkt0š»•8)[@¥îçËé *[0ã嘪Nó;€ JËeŽ:-»…¤œà_?à-üVÆN’µldIƒëIî¶¿kbIÎÁì¬,na¢¢úm;kíiW#_ÌK³¥9ƱÚʈ«Ÿc[Lätt›‰x”[§öÅúc3™ß#¥5?ËÿU€Ç ðláF‹(|fæGQ¯ô­høû4«2®Ç`»ƒ?v+è8J¿f—gØhýXºF.0ÇÌv˜tãôü1&Rbëb”#i{öµð«*QZ¤ÇŒho¦Ò?Žç§{íKòûئÒ×^ÛîVdžúGu†ì^`±øäçã2Ÿ–WHþYQ› ©˜Üiž Š)¼iáë³0Nö ›M¦Î&ó&4‚ ïÞÞLúGLô4Oo$)JÁŒŠ]½4ry?¡G˜_?>&20‡ã%¶AiªH+ ¼½é§# ÷2YÊþ=¬¨ÅョÌïÔ'û¤Þ §êÔ\žjA(Ao[ìü4½…µ±™‡q^NÏ:Ó4Ñâ4ÈiÌѼìA<¸¨3—ì§DßçXà2gBÝÈu¸¡ýÒÉô4Åí[Ñà÷ñUgŸ+õ¸¡Á)*õŒóaØeà=Á\·Z‹h§Äd…6 FÄÁ¯òÙÖ°wz×#wt{ƒ< MÈ3{‹€è¥DrًȨDtpúáï&Ä(Å–ü)l˜’û`âϰ Eg¾ cÈåtÒdsŽ©ÑëÙ ˜Í­QNv§ ØwV6ÎÏ7t»Ãû5à|÷¦©Û!†o3g›€O‡igÁÿWø¡¯ Æï˜«ßŠ1)ó5ÌJš3ÿŠu>õCÔ¿°µ–«útïþÖËø¾@ìkN\¶{µLŠÔ3œ¢ÉÈq䃧ñÎð •”Þæv¶6ÕÜQ!JRsG7›K>BMÝ$´ãbÑÔ(~n GëÁ¡èÆž¤OKKQ„Qo¯­èÈñ§aæûÞm<–b¡^àÛt Ãæ‚`³œÒ»Ý%©w½åÖ ìw;7Ú&ÛªˆaÑò0cv§wÀŠyL2*ݧ©uL¦~N²úÉöšäˆ0‡‹üà0c:âÞvqqMV|ÌPm-ÓZ$Ó²3Ëp³më U—Évýu}-\]BËòo/7„©<=*÷úï;K¾÷i^·Ò¤^¥ÉÜðA»3=\57\él¯ (¤#¬1ð£’=ï·!agÌêÊ[ƒ|rreIp•œ4ÜåV)6¼ƒ4"µcÊk„µVQ—ÆMÎPhÁPðâižUZÇÆÚFQmÕH S™ÌëñI£žŸ‘½˜|v½Èw•åõ)lÚ‚êk(?`'¥°J¨1 ?C|'&>,–I$k‘]bØ#àlš Àè ®vìØ®'kÆ ‡MÜ#‡L÷ uœyluÊ‚¥ ¨vˆ|ö°—l¾äˆØøÐÍÖøü°Ûø3"c¿µ”y_t·«è.÷•Íd1n¡êëó©FQa ùŒ.Èö’V¼t G¿ž|zÛ>[ ˜Ùmì·¼â=ßèkß§yÃÅc~ñw‡YyO›ÿA'VæùÂì´æM¯7¥»Ä4ÏÒ|`Dpا{Ûûòç÷ùFga±¨lã"¡œ7\³æðÅQ“Q=èžYž»;´RDk—¡SG ëðê0…6ÂæÀ<‹®)?jxp‹ØpþÅåU2ßç+ß þ.(®Øzfz¾ÑvÌPvˆ!9P…cõ55û[ر¬Ùr‰Q‹öû–?¼Ý×ð*A^Ƥ,3Š(UÔÇdËf†.^fôä ÒYH—àz†S_»¤¦Lì£mº©ªçl‡ídþÜðº&½Ëø†7Žþ±gžš¶øâO`kgýæ*/g‚éý­Ïþû#¾^ŒÎöKW´ìš‰n^²ž67IþƒAƒ ǵ˜„n"ø€ëïý#|N.i@`uÙ–› Œ2`§Ž }ÐY6mZ!ì˜w&kÌ›¸àÿJ£Ø%¢*°V÷u,W¾†• Ú¾Gìip!OžëFœ¼tnùŠPB–×&8Pkäüv¦½8‚žUvŽ$Äî ªa)n¼àMiÏù2cßÔ(!e°]#6Ëÿ–æ_QÕYìÊ0`Ò€Ü!jSœeÇ#rå¤þê)U«‚2~v3•c3‹âåqí+rä‡ý+ p€–âG0¾OÑ9¾Âi@ÀËœí,vˆž›#H_‘òҢخËx;9 XImNààü¬ÔyxƒåDäÛÃñº§Ò.ct£`)m;•„E²Ç1|îñ6³Ô×ß•hy°é´ÅeŠõ\ÂdÐñx{SÜJ†Ió?ëÙ÷V’‹xc7*ÀÍ+9`—ˆ‰[‚:õ—Џ ÐçO¶Õаz‘é&4u8ÕºN«RMø* âa ‚œM}Ql5(pç…Ú ÜðµÞ#s·ó0üáu¾¨tݦ_žól·ê¤=+ ÆEÝ¢Ï<È+.ó=ÝþBÔv“œÕ äð3áW´q½=Ø\:MAd6²›]c{õ©—¢èaï:ÑúÛl:ws³Ù‚ÿ(ÍÙe~!Lñ‚¥]§Ð2Œ å–eZ:]yýa Lœµï]Ä N¨ºø©±C‡bJÀœx‚ìV˜…v {ÿ6uúmöl‚Ž{¨Í(+DJÁv0wÏT-yø rÇû¹XiÓ­'ˆqi»¶øôÛâqÎ:Á‘ª†Gø/Ðäcƒ^ûpTß-ltÿ&á:artzpEx6tyS„÷)id# «jêç;—éré^7(¢ãØ.ŸOiˆaVâ°3—^pA·ù®S8šØenÞ<6_vøÎäø‹a¯Ãb]³»Oܶbm‹ß¡„uÁ+…‚®B3Û™=J®ô´O¬S í,¡“N «Ù½÷À¡Œ/©Œjlå2×S}¤fYL·Ò-1CÉ6ŠU̾®É<’…Vy$‡xáò\@ª0HoÍûú¡q.¾~)ׇ3F“¶Ízøn4 Öøað + Ÿ,3ÚgЄeÒ¸Pú¥ªjä˜ñƒpí™í·¹åyÚÆæ•A舳~‹«ûg8†êÇ7Wè]çÝ öj.¯ût‚N®\à@¸ÿ-VÌŸí½©LúÂnI^uU­¼D®¹]¬õ 75ñêíØSëìøÇ"IJꂜ-WY‹ñ’—ìÚÕ´(}ð&Àðk+‰”#GìR{ÄM¦°©ZG(ƒ4ƒ‘þëažI&ŒOWé$Ò¶(`ïüè‡þ„ºÉ§3£n&h@œ»‘èn´º?ORݶqãß}a_ü ¬ Çê‹ÃEÈd_SklP°n5µ"b⳶Ѓ¤²€ÞÔçù½DÆa”%ÆøØçAçQ‹F÷Œ{"’ë9>ÂX¨)ÏXïÑÝëÁÍè$¬­þËž:T/Èõ ‰t»÷veÇ;òsu08ÉÅ€››4E·<ÞdÀ×(¢X{Ì/u͇e gF·WYXœÎ’îAÏNŽTUA9ݜ9ÈÌMRù:>øÈ:â\dƒé0¨êUŒ9ëx̹»<¯õ;ñÈ’qåô…Ç6ãªzàë…³QûïLÿ¡ú÷÷A¢¥Îamž Ë[Y–Nì€XCä¡oÀ«1Åè½yímË"¨oZg»‹³'㤇)é¤×&ÛOÝù½yºk¢&*ºl5Fó€$´× /ëf仲BíN ÙfEô,ÄFXây¦ßz ÞcÆåˆ[Pf6k,Í(„<wm§ˆfËÝCϦ!ððhjÏ?¬6=ª‡Ek”ÖÏêÛÏ/Q]®ñžoùNÿŸ÷q‹×…;òh"ÙL~ÕËÖ‡ã1C ¼iI9b÷²ß› ÆZ7œáÖ&ô9®d6OmsV—5§d6@o¡¦%‰Þ}ã˜Tx‹aÝÒs]=-Ñé»»ó]}"¡ {7ÍŸ”+{.¢Ã©n›1˜†v2ªGÕBÖÒ±£Ôª”Qk™de9§Xçr;IÑßåN›qMØzœ©¯Õ,Àã^ǰ[^u6ôùíDƒ£îŽÙb^4ÿ¢[ä¥$›½…-¾¢èÓô÷OŽ®€þÕËlà …ñ;p¸ç_!º¥e$«¡ "IÒ´š‚WÙc½ëpË¡0hçÃ\òÚsqŒ“¦G›%¨~Þ <þùqVúÔæ½Ô¹Õ 8¦‚Ù@÷( ÏýD€~?"Vô¬:*ïËÚàÑïíÜLÎæ|Q¶å£Ç «ka”ûÂùÿÎÖ'OT‰~ÍYÄ;¦[IçâŽ&ñÜyÔù ÌäÍ8 ž  Ôà×䌆ó¦m·)¶Ôš|!õî?¤ÉùóÍÀ>Óï[€²4×=Ý&ÄÆ /ãë°l(j´S:½¢Ësˆ¬Í‚çWD_/yïùÎÒç}~ܹ§Ïê³ïWõ™.š¦X*" Ì]qÂé§ÆÈfúƳ?ÒèÏ Eg𳋥ÙA›ÿËžô«§ï3èn«cÛn«Ã‚ßr‹ ×P«’=É1‰© ›@ÇŸ@™F[¤ÙI^³ƒåhq¾ó4|¦VJ}ÓªÈç&tóçbB€,ʧ¦œLn$U΢%¿?Uƒ²H- ¿¶&p\QÜVn‘}L­¥L÷¼Üf*oùôÉújZÅûH´ûÅj·‹Õ¦{Vž©:ˆ\ÉÇÕu— È«0lD04‹Ñâ1{Ûdñšeß{š†\ÈvFBç†ÅBË]³NãŤ[ò U±vÁžŠ}&Î>åÃæ$L•m %Ë‚Ÿ}¨¹#úü€*BñZð¶‡[uâ˜%ó@j0)hí_´ÛE:M5‰íºÄî¨>{F&y¥ZPË$öqþÜÇl"è”É-T ìQAêÌ¢ƒƒS@wŽGšž{¶ú„ þp$ƒÙ®8ž?ݦÞÕ'|ŒÅÊGÄÀ$‡™{´œ0íŸ^M46ZÑ4 ’l ñ1Ù¿7´){Y4œ§Ô<¦e:djØWL]ÎøE,ÆWo¢?9bÁ4Î^6Ùï½±‰Šwþ´Q¡jÈäìijå"äpï²’WØCŽ-Èg n¡†”j•Õ1ðëÞyQñ}³;A6Ü ÜP²ëØUÃêjÞŒ³™¼µ5yGl áëwv«[›“ÑŒ™ˆ*â´œó^àwnvô2‡šÛÿKÊeÕG_wãÞGו<¹`ífv36=ô"q»s¢ºMø û3RÕÁ Ãhsvóѧ)XÎO•­S6ª-Ž*€—Ó7ªƒ?úR"Úi5-ᄂL˜ïÜðßÔ›r\»ˆHq÷ ’&2ölÛ¾–ßN³Äl&Xh`Ùì}&¢f© (‘ç™=?2ÐdoiãÓs6ÉET”¤tXO0SdÄ!¬É”ŠÁ¤Á¢<=LŒsÛyœÈÅa'[l»÷çî9 Ò0?'ňtoy,qk=šàÀ׬´+ýžÉl¿â!¿f+GÛ¦ð«"Ý‚‰®Õ¬ö’æk¦æ:˜aâïšóc8šÛبk6,Ù…Ç‘Ò{‘0z 6½ç9m íÞ (Gt¢b>j„Ú#_#¤îÚíÏKß‚¾]®L¶³n xHîÛûB;ÞrNÝÒ»,Qu¡UPòlZÃmd¿ ^ÐÔP½‚qß…Œ‡^[Ln H‹]D8L7ÔãF´Ï‰Ö‰Ùǰöh¶Î膹¥‘þ=‘H³¤Ç³Œ-ùÜ4Ç’|ÏWtzÚ´ŽL›1Ãøà^Ж.îseÜ{DeüÓ>ã?©€—Yí~çÊ6'!»Ó%>fjK ÿjy’×Ìo±ßd±ã€úœÍdˆæÿ+kåÀ)Ç-Âä+iSЄj»”ÜÙ¡SåWãÌðuÓôè=%ìNÖ±›‰öiCöÕóû¨Äs]»BÁy¾&g¬`¯wØl)Â9='¹Í• " ¨³NÔ.@„¯>üpˆJØuS? ðÃÇ_f¾Îv\¯´xÛwŠßGFöû‹f¦Fbä¨uD©ù:³É¹AóÐÚ#ütº} Ë•ÄÓƒŠ[9Ú}mÛÑËN‘öiÏ#h­w#+gÃÖ-‹˜?Ï?|,Cƶ‰w¿8ôB,""‘,‚ç 2­Œ¤&¤I˜QÄúÙ‚cD6›×{(„ƒG"gª•'”Q;Y“*[O5a9šU O””Ýãg7ük±®þ>ñ'8Ž™8O;<•pPZv°+®Ä°W‹™7VÿÀ¥¢@=c¿³>ÉG}†åIa­áæžPÆ$ÛB‘Z–æ[|çöò>±äË {ÜÍ€=×Ïkõ.ÍRª*&ÓEž¬—ãÍäZñµÚhÂÕBSìæx¯{Kƒ¼\Qô¢Ïs|9]YÇtጢ Î†\~\Qpëy%ÕZ"¡B­÷xòwÁ×á Wó÷-¾›­¹…ÎúQªž‚Ö~½2AŠ ýôü R.NÐèw¼qüºŸß á¹ó4Òö«rÆŸz_ºñìÇõ³E®žËâ¸lg ÌmØæ5$,J^uüäA®Œ¦ hNpùx5ä'Ÿž…_ À½›¼Ú³síÝ|ºíļ…VV³7ŠØ\?\¬MWñ<Ñ›y ÂcÆ>´s%·Ð¦èEν¸´]þ£-¦¯ûÎìw¹q}úÂÜò…¹…‡¬ùÑ jqlžV™ í²…séh\!›çÌ7£õv¼½¹mƒq!V´(˜²å0†*ÓM´h‚EzþCÀ¡ø :i›ã\|ÕG[º˜eçƒÂöBLÏpÅím¦8Ù8aek$¯Ãjјcòƒ^ ßòfÛÊi°ÐQ³/ƒ3s½¼`ñk¶ˆÛÂëa>ˆzzÏïRžŒ øïß™‡ð>1P£·|¤s7/-߇ Ó›…¤"mSx ð4™gà:Ó¢¤À^ã¹é¦8jëuÒZãb0”à Ø’‡ýÒV ß6¥õÕ ¯u.ÿÑ ó.ÏÙu’@es]—töØÎ“v’ã1ðf]EùSr³±“Ù[’³{O Õb¢Âi“ÎDD¯Çt@2„FâL,Q;êìWæ PÚIWÙýy’Cýv\%BÑ­Ÿ["å·äò>žðZ;wÔ§ÄA^g8în®…ôclBR“ú£òS¼A­5@M¼ï±7‰RÞ¡†Q(uúaoÛp¯9ÂæƒRný”Í(ø³FØX¥¢÷Ž¿#wðkã9ÃAý»%Ÿyì7h6ýIn+Å[×h Y[ì<;Åÿ›GÑËœ6MOïÖ ¯ˆ´Eýσ62{)k_i.8',®Å̬zÆc¡ÍEøŒÐC@‘FÓlûGÄ0úÈDuXV€=»Ò~=üâ!CùI6c.ï‹!RzKœƒ‘-äHå•t ø<ª°ÅÆÐ(lÍ$»O¡.!w ⍵´ƒ¥«¥ê'EÙ6×Q—âq ÙD÷ÜÑÃÂ+&T«1'Ó¬ÙþÂÝ‚NécÛ=i‹Pѹ—réšï¥ŸœñØ¥UN pŽ˜ÔÉ^Œào„0ÊûÜÅ«–ÛÊÜBËgØ÷å[Ë“ìh@³2#z6šÑ˜9/;ûµEƒJZ'sëÒ|S³÷%MÐ6s-€ºi^ô ¨/.†ËO¯çc¿IÀo¬VKï¤Öú“Q+IzÚ’M,íò¥F—-)ºwOtwË“í¨13OŠí…Ÿ&(:‡ b`w4МmM²]å8£ŽÊCŠŠÆ¡äR´º@þsŽ¢È-†<|ÚW^Î`á;VÖ”ïpÄN p6ßSgmbÅ ÚÄ‚`ÐáˆTh…+ae9GU²QÙóEÏ|-sôf½ž0”IAaç!p Éá°ˆÄï6.{ä¨Q1b”Ì¥D±õ$ܘþÕÉSøÏÙÕ³˜±Â3 Û¨­ÖÀ:U­:C3§À!+ˆ§6£ÆŠnD+—ž9ÂV4.߃Ÿ¡qƒÔiæÆ)2J-ÀD|^Ÿî¿Öý¨ü$Z3m³ÚïeUû5td) ÜnGÿêŒPñø@›ÅD Â88(ÃI_ƒ2„wñù?E¼¾Ø!¥ü$Ö1ñùÏ§åæ‘ãD‰lsfÂTÝ$s]å:ñòJDcaZg;"±)‡‚ufDû$sËÊ—R^@ÿ~2uªZ¬\Ë}é…ËA$÷ðl#äÂæ¼ÏÆ$ž«GÔÅÕûWÌŒó¯gÆ_L¿+?Ɉ, °¨7œ^ÉVbÁÇ‘ïCs· Ç%Ý^yÅì±Ê奿«¢ËZ/§­<õÓÙÎÖŒïygv5ûàŒã™!g/ß, T["P#a8•çðŒLÙG„ôàþNCбNÕ¢F—Ë€«a2Òã Ö i:v†ÛBÒ>Ù¿/»ôÂÝê' 'æ,5{¦)q«Ï<¿b¾g½ð²… ¾5Úq1úÖj{Ö9Îs!Ï%°.(· ·?Ûį,¦™é•vÿ™›Å$*ÜM÷nO%“ã©å@|; ðG•Ä/û’H¾˜f[~’ë¹ÊMðnmÅ«bîdIÙårélÎx4Zþåo¢©×ín_ò,Ü+>ý"øêBì'q›×•¸¡’Ë Ñ7aK-<ƨnâ*X/ޝ UÍÌo(ÎÈ4xYq'Xôº³Ñõü$à½Ì¸#w«ŒéW…‰Z[a;¿DÑ£I€4vÈß#@u#ÞR{0Y.øGlÝâ¿Ä$:"<ây *éjJÁ¹-íá  y‰\ˆ¢¢˜éLëa:œ'7°Ä¿!þk‚çH¤zØËƒ=È·š}ˆH›<¶¸€?g° R¤°wÂèRF(6w2§PH9îÄý’‡iR ™cúeÚËâ‰P¡ž [*WfÛ? é8º«mfJŽŸ®áÑ–œŽæq·~pÏŽá ñßê[šã¥}‚Èëœ5g2v0ÈT†R7H*nÐ tå’˜f~ef‘¬¾9ÔJKF‚êð¬®éÒ¤”(1ZLEcÈm±´ð;Ï㟡¦1k£|ùfwÓœb:'ZÐC‹ëà5®²O>Ô$¹ƒÛé™ÉÙKÅÀS•6Í9J$z¾Ís„Ë÷ôâ»{Œ èÁœ-¿¨´¿ýIÐjÚg¥]n 3ns—ްoUüÙƒ–kó¿‚Ómi~t‚sE«Ý7mÔv+0ש2åyÅ# Ý3=BÄ•Nn7`yÂFO¶DÚ=ùÜF8ÜWÜMVVîä Ë ù圷´ÙØ—M·p·k1@X™å¾´[î‰yNõße†M…ÞŽUSûï‹Â …é>ª¦ÀÈËMÛö> ~²ýÊ ¼ÉAÆqì¶N4ažTý®UŒó’éiêº8o½Òã]5´89|Š%ÝÐá×΂êÓâú«ÑœŸDg­ë˜;Êi ß’T›‘NPX ÛµŒ€m%3ÑçOÞÚ‰Z Û«Š-XYþ ¼fÛåʹ¸% b‘Yç!˜¨–šSÀ%ª“ýà°…™]ŠÆtBËŒH•’8ÅÔÐeQaƒQÇ]TL %`rÅ2mñùÊŒÞM˜ àŰ£²€&›òŸ¤U|ç í'éUëV×|KfHÑOGÈhu¤ö2A‰ðTýȽ§,ɰ €k2à­ãðZ&]… &°çÇ– Lu;ö v?ò+Ñàšó:>E7ÿÜþ¼ýé_¾p‘ü¤Þ¸*øt¡›è–íÌg[8—ž%¶Ö»&í:ê.*š‰ïÜñvbÍËq¼¶Z‡ÁTªE>ûï^ø Šó‹±Œ›§{c·H9Žx0€qb]ØöfSË}ZÞïÓ}d½²ü#ŠekwÅßê­êÔ©6Ö?ûx, 7Çãjì_%ñ´WIÜÜ£ž—€³Ýáí)lµ5 ŠÑxKšÅW™%] ™?<ÆLº¬Ýöi’uVâç–¤óÌ<—®å•{jŽ*qÃ+ :™6˜9ú€²…‹f¢l’#8@üµ£ßí¢ØLŽ …,jO•›Éõ(]b´µ£ßÛ¬×IN Þž–4îÉ<"<äKì—5ˆ-¸«J;ý¸Ù´Æç9œ}¤{‘³AŒ‘øÙw–Ü?ITK —rÞ‡¼a«è› —uÍ#^o…¦…sž©å‰Áýf3çvé;°œ‘)~ϧˆñWOš~–ÊÜ‹G¹›­…,(B€Â>¾šómð)RXYíÔâ^"°ë=ü[È+·¢´Ó¦‡Zt‰ù*€QE´%b oøÎ.ç'Ñb©Í.§^]ÎkÆy åÈÖxû/áÊ ò%"‡•LxU¢¼ÉAÿ.[ûŸëé_Ëÿû…þ'õj]´ÒkÐ72ÄW7^ðw”SNÞÐ"m[Øyï± <^Ž4yÊmçß%Þ{` ¦BEÁ†cÛ­YѼr¢‚¨ÄR˜cë1ôA:kdÇõ h‡¤jøõØÂcwÓp"FѪ¦ìæèÉxS×¹×C]Â&H‹G_ùPá‰696Ú£;_°b™®ÏWôDÚm9"n˜Ùû°t „H潑±L•æê°ˆ ?ŽÑþ¨çé¾s[v@=*=€£­Œ—ªÕÕŒRIÝbC\Hk4Q,Q¸²ëZLþÓ¹¢F8_ž¢ ¨ËÅYå+6—.¾#Q6\^/SËL]6õc5fOÙùÂRfÙá"r‰z™÷! ßó¼|ìõlòÖ[»6|‹“Ï ”ã‡0·æ•í1Ó”jf«–9Jܽ±qòîÜ×øl/´0+Õ¯ï¸ öÎŘŠÈɇ†pß9 ùIêÚue={…ÓÕàu¢š®y­ â¢ží£¢$tàÔ¾Ëo…¼…¤ÒÞÁì;#Q»·¼Ü­ÉŽœ[­ÖÆ´*í*ükؽT§x|£Z¯ü$ßkU”ʰ»+5>§Y¦ÈL3Œ;…}cŠÙæŒ{͸3‹xA¥ûc¾á5ßñÑÍå'_׊J7l?é,dSM3u¾ ôºP2š·º™î©Üù'Ÿø&ÃJ$@d3`“©0›'åD™ôEîéD¹Ð¸œ àç~g_}É~R“åyÉòqð«çßi>08xŽPOKŽf3 ÷]3Sñ߉ƒý$ÕëöA÷ÛM éMôÚT]{·ù£äÀHx–3H•äk0žV(¤a¿søiÔa/ëÎì¯c÷*€E†DíÛ!Òî®ùÔ±ó<ð³4œ™’4 V‰q.²½«èØ–­…£‚E5,Ò©~vg‡B¦ÄÝ#w»‰(ÖE€•a©\œ—B WŽ2§|¼+\˜ŠÉA4 å¤p’¬™•s¡×B ¥A•¸'{ÌþM–F–)™ªÎN½Ñžƒt7NVS+¤1V3üªÃG ŸˆéPX#pk0Ñï¶ÿÚö;%?I%»-ÊíW‹2)X[[ˆÎ‰q!„Q¤°û"S·‰ŠÃõ0«­Š£Ãm- 4 tc¾¢¹t³?†“êÓü%¤¨I(èÕ‰Ñ ˆ¯[dà>êCÅr#£¾³¼žj@56ÖÒ~–ãÕIÚ®Ìò³6xÛÑÁÌ¿–Hë=WcE+ðÓE+úàÏ0-V…‹PÂRA¶‘]>A1svðL"â¼;k½g¢,é¹|Û’3Ήø“ýlk•s4ô "$ Ó—½„ãZSÑsC¢í|®Vú¼ò~¾ÙøI@ŸTçVõîçknKr†ˆ:±âoeÇÖ4g…~¥ºlA AÚCßäËÃÐeºì¯/ÿÎCõ½…}>Çã(·,>@àú"Á”ð—Ò Miäá™Rfo hós \'K[9¬ªÞÿ :f$¥Ç Å+/GJÕ<1öޤfFé|Ò„ƒ“¨–Ö˜dŠ'ÚÔêÊÎøü}FØåˆl¶HÓ²§ÀùfÌRømÓECø¿ÑŽy”˜ç+9{^¿b•|u/óÞ1_³ö¸ãÛ~CvENg2ªÀ–n“0ôS‡G"* z<ÛàÐm$š¸í,ªyéÊ´ùF¨sl+W©N‚ T—ªi:H糵丗cšaa¤*`ɃKáÌÊ E‘Þ3W hSaOÉg€Rnl¥NæVh¨ŒÃÕÂ&™Úüf˲tX=?9\UóÀçÔn Ó•xÏtÐs#Ô÷-À3Ïøô9iË&§Ûij@Nð˜ßG«¦Îà7.ÒCH‘gOø$—PÏ™†€;ÄU¬D¾³Tx- Mgê2‰Óž’Åepk£SH÷ùHöá%‰å>Þ©ÉBÉhÈUQFÀ¬ý< $¿ã5ßò­Þïfêq5zG(¹Ò ¬±šç-“uÃd†B`¦6–ÝasÑó¹ô7±)*޹»U«1ÑÖ\ÞV‰æ•n眧£½6Çyó1âñ¼ó5ýÉÊüôÔØŽpÍê„N[@vÖÄе‰ý64UN5AO[ÙHê]•—P#Z°0ñØÖ 3ç$¥ÌÜ5†:Åó¡µï¾Ë[Ï‚˜ÉÛË:uzžBä]·°dëõƒRÌquq pÝ8]ž D$EB½ZÌkŠRøJçY$ëWMØtÅÀHsmüæ#Ñݯˆ_Ç…R èÏuñµ±>¼4V²Üø^ø}ìÅumsÿ^wO®åg0ôk:ÙTçUªÏ ØîáÑZ‚¾kf€¦ÚИ¢2ê5ºyø©Ômµ)W¸¸º/—¢ baJ‘15|:DPäó|í¾‘ì0½ÝÎÛÉf|Ø bÑÐÉ]‡Û¢¡Hµ9Õgˆ„˜¹r®ú›ç žoÜ7/Í÷Ž‹ÖÌ6ß®ŠÛðÛˆ$v¤³Cö©k@˜~ot÷2½ÏQµ½IÍMÁ*àþÌ,;áäíƒ?Ùýÿ¹FÆ)B8aü‹v1E˜Â+MjÀÊô›ozÍwýÝï×]Ÿtbõ-Ã~ ë—Øž!¦,ÕÖ{øÅ h¯ŒÇÇ´æ}ÙÚŠgT‰Vµ#ÞQÞžß*ÚxŸéq]ŠRëÑCÚËÓ|“Ĺ×ç-”`ƒŽSÐ-bKö^huv¥%”I‚ŽgŸïZÑÍù›N´Ô9à “7%“¾xå¸=²é'p´ÿíì c!Ú}#{å³É5ø"½«¡œ‹Z òª$°ã)±‡LzÌdǼfN{8¡ÐžÅ†i-¥µ£fÒpt,ïœBØ ð$²]l¡“kg)R¾à)C|C$KAŸdÿ:/ÔnÛÑÉhÚýŽo}È~rد•UÆmeyÃ(s¦Û±Ÿ[ÿU%N6“+»8¨ŽÃ4Ax»êĶX•qâÏ~Á-QDëïºÍO®(8šÖ‹JÍË%A þ¸íPªÌZzmé;‘¤÷™·ý«_¶saÃæªb­àƒg\­ógÂ+œwªºŠÕÙ àœR¬W‹˜] Ir#ã .@ÃNGá €á™p#Ô¨L°’£m‘ ®kœ} öxÝ•†_uƾ» +ø4Ö®~«ô}<Æm…÷© øO]ö9à “Ùq´Ó0]Ë;Ûk9 ²»è@óɇR¡\’5!I 4š­Ûà—oh}½’íð‰Ÿ"þy=,õÕü5y Ì)ð;|æ³Ý؉8@ÚˆÅ§ÎøÞ²ÕdÀD›¬oxç+ ¦±FI=N/KêLË Z~'«à}þXl¨IǽਪÇx^>1ížûlÊÓ÷C6ôÌ6µÚ°ƒéC/ÒóÀÄôD[ùW9§¹il[$k/·š]·{ŸL—½gCQÝ[þ£ z6»²Ä쨅1Ró BÍŽ¨ã^~UZ`ØùÝãÒ¤uëA1ðÐ3ÌÇ’ý&æ¯ «®¾“wø>yáüÔ«ÚÙng’ZÈó q6”)qld—k §¨ts†Ï=Ó–`‚ê 6¸©¢f6)#—ÏkÞ¯¶lyŸŸp~ìufÔ{ïÍ>ryíLd»Ê¹R@¾â1ºª-;…Í‹§ 1Áð,+Å;–Ta^&¾¶7¶À†ðÀc¤YÇ:å0ZJSñèÀLâ0 ¬†p!˜7wö%Ã`Xg“ì¯ÿì–ôQe†ûe·ä}ÂA>&w$ín&åO&&G ú΋åì#¶ÒýnÞZ öA7o#& hÝ$—òw¶£ï# Î…3-†›f„ù$2ë<Øœù$Ž ‚…e͵c®åpÂ2Ô¼Š×=Dæ‘äÝ£[›bÈÇ$[àf£›mB P g;9nÉ+±“Sÿ½,8bƒ ÊÓnr9GÝÕ×hæ¢o“—b†N3þmŠ!>¹Ä<¶m^_AJÈÚÛs~ðo½Ÿïѵ¯Þ-tP¨.wÆJÖÍr‡†´.ȈD¥‡a!ò‚ÿ0óAÛ_1Øë…])v­z.U3Q¶œÜ¢™•âÐâO£/¿h¿:Œä#²ªxeŒTbrø%'0=—cŠÆ7¸/¡˜e»ãH•þ²lƘˆWGÀ+%C,j­=ƒ¿ó„zïYŸ÷ë„Ú~ôÖ©‡RÇDl¯Ž8ìè”ÙCp”tÊóX›ï1S?LïZ¯0UÔ¡´… 6=´¸Fñ”÷èþ9ÞûÅR¬úÞ¥]Y¾ïzÀËÔ ÷Ÿ‚ÍWöÿÑ›¨Â†à@ÏZUÑí&§¥ dz”56Iá•òK‡å¯mŒë{còó0˜¥Þ¤òþp¢i‰ßž{c O류 |f©è8€KP:6gƒ<½ÝWfÀymZm–Å]®âßIë«ïMÅóXĦ’¯8 ƒÅÒ@Ý^L¬ÑT’ê*=Ãö©;¤c€Î”¸rú`·×ͺ¦ØàKDËä¬Ü¼¥h_Iw/ÌÄR|} ÁN®[Ä“0{Ï0¦Æï­û¡¶ø7Q;}D4'–&öѺ*aÞ´ê†Û[‘AÞsúo{šœlÏü3lKîôÀ·åÿésw«•¥Y{Î\iøŒ2œV¿Íà©baõ9ÛíËÅû³§/)ç›+œ¥“ÍZe± ® %ºÅêh:°µ³­gþÛl43Ä™ÎÁbS™ƒ1®•Ÿ¶ëH¡„Öi ÷XŒšÛqVõ;1UMù0~‹ƒmeßñºˆ¿a.ª¡3÷šÒ`ωr’?¾*>Ô¦„)“Aü²‹ÅrŸ#U’!A°Ìé)Ãõc¯i`YñºÕv0à.ÉÚCSÚO»ÅÕZ8 ‡–2<ÀÍmÑ-‡,òñ¸Æ("oxB^½âO-˜Æ&Æñ³Ó·‡Mžª¸æåLô(&šxœŒPr8žj çÑ20s ОPêÇgì$óIoxÒÕh0w Ã6 FõŽõ½U¼Åy<^#Ò¬¥/eª³‚Bt‘§N—!Qr¨%€úÃ[ –ÂnÂM,¿P­ÒDFŠA˜ý4{° ôh |í+Jã Ù=ãø¥]G®!ÐÍ刚º3ˆ¿s3yo?~–q­{¹\Œ¦ËV1Õ•ùyÍFð–Ì”™£ãi5­$Ħ¯ì Qîãᔼ`Byy~]ÿœYÿÅ•~}ïO~ÞÆµÛî×ì_Créá5ô‘[$“&ÑbSè”ÌMäÅÄ`m?×Aùó2vqÁYun>#7Çf‚»gâ©4\ñÕÀz‘É"°®à•¬Ú>®mmg?›,CÖ¦VûàÖ$â%ô£¤K*MhŒÎ0UòãPÖö!¹Õ¹WXêªAÍnɼ&œ†afçõç"¦°æåã‘jwîÎö¥ßåó}ö\žlïªÇŒç®AWÖÓ­%4…XO žfIÓ«#ïAé–=F‰;ßph4ù0SÒó#I–Î ©:Sb‡‹žO²ð\Q{ÎjI_IâQÎ↕ˆ²Úæ ¦E eºTGà¶%&ì0ˆÌ;§Þ’¤ŒÉóÓi‡õÀÃVüIÁ®ŠÝ؈Çñ­®ðõ½+üy}¦ÑY¿oCC¿§ÝxpU¦ô4ñ¨™Ks¶³ÖêX j¾³5Œ{`¼Ç ¯ž«<{209ÇÑn*¹„« Gækx†“€½ZŽ}2G“ãÄ$ñ^ædm¦‰©ÒZ€G_¡ù²”JAØL¢övV_-3(Ðg“õkO Uv8A ÚÕ ä;â›{ „àÇ4®YL6/öùÑfÞÏGøºÍAreæ}èЛN!ÔLÆHq‚f°œÓ$5§Ï7ö/Ni®ï“εµfׯ.ÈÆÐˆmbÀÞA¹]ᦢÃé¹hÚÚ»ô´½YéiÃpµ.{rî[.žhŒt˜ŽÐŸLkú[ÄZÛ¸þ°)‡ÎÿwÓ«£ç ´)<@8mn¡Ïᕳå3¬×§fPb¨ µÎnúÞ™CŽ\N<¬k·™ 'ŽIÎ*~wO‰‘qÙ Ë‚H]C(q`é0f — ­m˜OmúPn²MˆbË$ô$_¹‡bœßåü¶Žõ¨*DÌ’­Vü‰sÝ'ï;Y†bâ_$Þúû~˜ŸY#¿Jö3æíTN)·,虤Í!Sþ™Þ<šY_²£´¨%y×5o€ÈmM¿uëÑv~vf%$åe.§X¨Ÿ¶¡_ý°¿wß?¿©rººÒ4ŸL>*œ)Äx8˯“º¤ úOe˜€à\ÍÌô ³lØ+Å[Šßq8t Í_ £v=Pm(Ç Â;kqÂX=ý‹ªÄÎìòR?©|«Ï½yÑtc†eàévcŒB© ãÁ)Ù6g_ÓK)0†`U+ç ²±t$‚ó-‘ +”/Œ’ö³²¼‘æôÓàêûÄ€óX[½_½¹Å‹ÏNŠ}!„mº-K„cS"ßÏÅü1Œ4Ì‘cIôÝÞr¬ƒ³Öóæ82þ96s>ÆcŸ'€5fÿÞNÿÜIƒ@û‘ ƒ®&±h¿¶åWxQg€Âð„ `{‘"‹r3iƒ-A²7B}é7Rê{/ûkuü]ZVlëø·•ÝíüØíKr6ÓÎþ‹›Ú®“4é´©[1šmÕl EcîDZ”k³i¦ëX˜ˆ4y4Ž(ŠmÇÚ¢;δzF-)Eø¦‘¢¶Ï/ïW£€ï-ésÍsmݾÄУ;¡¶Û–ùºÍÚ:‚Ò¥bLê÷íOÎÁǨGæ¼AAS̨–2žsÒ¼ÁÂ:"Eü<ñ|ònó›á½Çh#› ý %0¿ÄŒfÂZ>w.ÿê+ûÞ¤þöÔæ§J€~ ƒ¨Ñ²«Â–!Zö!ƒ’Ï ÍžÚ•Íðšvô«êóKÎ6¥SL wMr¶Éª/ï.$#,^}S©¡WE»ÛÚã(ûeXP¨JÌ46Ïé4‘Áu æøqdâO)ä¶_èaf{V.Çe#Í„B?õܰÌB±$‹Säkç[÷}2³¤Aù\AŸº•}õfýÞ°^cUÃÓE! g#i'à³dE(™m=‘VñFù?óþ&wå{°ÆÂÆ?àÚ“Q˜â›q-‹õ¾O™u_ݽ÷gçš Ò5:{xÝÒˆ„»x¨õU_mqÎJì\p<íJ6`xÅZ}ˆ@Ó N×McíÜ`üIô?_Íþ;š`[³OrRÃÞÉWfþlGOd¨zd eaVD‰ò®6ûok¨‡µe›‰øç#¾{ÒZÖgí¿šc|ù|—#ö´»%Á¤Õ“˜ü°S뙋cÀ¦®è˜ 62Žðýšl3<¾9¿ ÝÉÕM@Œ #œb4mv³ÄNŒ½Lå(×Á \Ýs•Ý„U4é»1iá0/UÆ|§ž™õ€òNÜ7bpæ`£24 ŽjN‰zÏÕ´4 ö*‰Ó8ûJ¢W°û:¦—f?7†ئî@‡FOž&η ±RÈ®“)¶TשG£v»Jnò8â!)TNË1²õ½3𜠲— Ç…¸ÜLƒmà ‘Å·[XmS Æ»7$ø$Ë_!X‚ðYäÉ™Ä:7¹xZÜñ™FÌhfrMÖãDHç„Äy›o8Êf‹š¢`FB(gª1’´½ É)v»?,{‘&`TÃ&Žš™3w´|Îdúêé½§úùË}È™±—&Ìfì ǧ4¶G†3ÞLYoá²ã`kÍ€d3;§jÄ·Xd9œÓ´ÝU§bP©é ¶àú¼ßn6ϋÖ%ÛÓç¬ÃÙ˜­Û· É‚¬»{÷¹\D/Ú£I`>[h¥À}œOUUׇLàuƒäyöÕ¥YWBÓRäžý6É¿ûŠw™©Ufê×ÝÖ÷FéuZëU»6Ž’SèE,{/Jeæ!&JvnÓ ïPF ‰ž;h†,¢NÂ÷m$çúòÔt×ARúˆFñ´ží´gŠD2 ¬…?>þÕáÀ.â™Ê°Z‡×âØ*°4±l63âöS)Æ@DŽ!®mcºƒe­Žl£V-ê° Â}·ýSŠD¾ÎÃåƒßÎAo¯™myÛ[:$H¶‚x›æ†Éó)6žakåf…i­àBÏ7ÿFÁ¥O>¼ çì×%©˜aN€ñ„ÓOœ÷ê>õ½iý¹i*„Ц•µËXÃÌåP– "ïâ̽Á|ÖxægΛˆúÁŸCvá [¢‘±ÉxSíƒzê~šjq£ÎV°‰¶$¹^ÃéäØv[Þk>Ïäp¹$¿Ò‚¼ñ( ÇoÏF»˜½XƒØªBœ"iÒ.Î^,£àBýƒpè<>@qmyÒ-Óº1Ol²1*ÄV±àB5Ô@ êÉÝ68kN‘}µœÏbàºD6U,ð6.V‚ª,Ÿ¶Ú¿odÄ·Ú¶²'Ó}Ÿ²Ý} J·Sf[«wÈUÜËWP òll«!Ä…Üü”#Qn¨ZD(‘e»Y‰‡+¨àŒ5N¨<Í’ qåê,¹LÊA'·VÊ:©î†é#â»Î‡OçµJ´³šÎ~ì:²Vʹgª<8K()÷툠ü,Þ¬è_ûQü?úËëßÿçŸþüßÿö¿þËïÞð6jû¯=ÿWÿ}eØv}oŸËJ¾3šÆ™9@\Ünº cå_ækÂÓ\Zo<¥ÕšLD°§I†¤‘žÝuwˆª‡ÅŒÌá5hT*­L³ÝÖTE*ùF¿T€9³-feß=c'ˆˆ6K'¿u&> sœJÈ|à0_ªâ–ãƒBûOwâ”NÄĪh˜¤F«º”ŽEÒ™³àEE±a–Ãچ᧠_M%MJ‹ DÀ,ìBÇ ÖÚ9µóÈѧ/w¦ÆK ¶Û=õå«”ÃÏnløH1#nfœ¯|'îñÞé>—©r;?Òîˆ_ú èƒ=ý¹ËÁÅ)nÀÏÓÖ®±F¢ØŠ è ¡.—éš±Æå™mÈš¨ºô:“]ÓiáØXbÆ—C,jˆãá¿¢ï6é!À„F`šn3³Æ(†Jz¢ S!ÜÉa¶ÔbO·*­„ì"%Ðð层WÊÔøäàz¹ä9øfý"ŠK”XYÛ ‹Í¾ÿ»wù_ƒ&ã yfƒ†Uµ ×tUÍ}Yxt;x|ërúI˳pé–?î‘~œ,˜Á(Ã>M±®t*:Gzq=C·,=²͕Š"@eØ{Â+"=3Îq‹fÉø»µ2 6`®–³â|–pÛÑ¿Ÿ'PUظY ÔµÚ<¡JÄ\s[iÑò±Û^ ¾ûÀòD¨ÕõxÏÏ-ž˜-óþ4f—ïdS/ H=,À«¤¨4É+ PùoÉä¹p¨s¤íœ·¼Ð…eÏctÌYÈ^ÙäÈ;¬-Â@$Ÿ‹øÚé_ áá‰`Ôáqoj¦¥GŽy¶Š¹Žòù"úž€Æí‰G4O×$òs©ñWj?q¸WL0÷§Þ 짦¶Vl¸’êlÓiÂ5tê„dïã°†™& $,,Q6Uš¡fŽžuMí ‚yÝš¸3ãvgî7æóI?ŒÌЃ·„ õ†7I¿%á0]Ÿô°¡uÅ?Îp ‰×üôdøò›õ¾VI³x«·‡i:IçiûÍøŒ4CiÅD)gtW—ËXïËÁðlx²C·Ðûb¶ÆOœ¤Ój(ú½Åµ 7ÆqbËh¦§°¼»ä#;|&PnžcïuŽbÎ{c³½ r2·“ܧvãø&'ql(™9:P)m½S-îy6¹î²ö–ìü8è6#9¡×öPÀ°‹;ð ùÓf’³ f@y•ÿ¸Gý‡CÂSÈ3oë-"Aª“ЄzUŽƒ¸9Ú¨õJ‹·}g5þÞEû(ó©=ò½µlaÜ^­‹î&}iEh³ßèÝÆtëÏ ›y ¸'Ë‘¶2 G·ZŠ<Éf '‚ ÈN2VCTTn/ ‡53¿{ð6œÿ1®œ™ëÏ«ÔΔàÃõ+jלâ‹~=rýÂò¶¢;ê¼!m¿Wt„•´ˆ}#/*ðØˆ´¡ »mF¡³‹™^#¬| )kŒ´zE¯3'`Pe¾e0v$£&Á—ÍÁ»‘Ô°C}Cæ !•€Àª×ëË+r³r›§%äÉæ¾v£f^ŠOÀØýµ£×—•y²^*ñÆï„ ÞûfiÞÅ^ïw±S?âÔ¹;ì¤^Mq{ÐCàŒq¬8Ö3+ÈêÀd[–{>·pµYýV´=îz(ӣ멌H]Á®Üåô_Lž?ò¤}¡äzvŸi5F`“ëÈ$[tÐZ0%´26ˆ,XÌF¿µyzïÀ}=j9ý (Ö º·¥ÛTÕ 9žEõ\û²CêÖí#üoŠ48Ê9Åé=¢8×öȃà ;1•%{ðrdï“ +È3%1\¼Ð^‡%鸮io·ÓgÖŠ§-ífVàïX5uTW&W"èšÜ¯¼œæsk³ô /ÂæX²<ën$Y&ui¬ƒƒ9ñ“•1›6”`TïÕ ­MÀg-l¼W32çÜÈpÐFhøu.SÃÒæàB1{MZï3œOyè˘|gd'c^ï ¨i¶Ú2¿ãÀx¼4£”_‘kˆÏ‚óHUé¡G-Y5žV§Ý r×8…8—f½‹Ê6MT”…eƒJ$]\yêDâÑÁÔ­P?nëù£:ýíYªâ85ß§§'‚*K®Pæ(ºðn\ êS$§óÍ{¨«¿‹!Þ¢BŒdÜí[*,µ•I·¤oo{´(4·0AP'ʆ%4Ù,[°mß* y´¯YÑæ[Õ¦ehµm;‘LU;¯Ò9/ü_ñæòR>ì/‚íL]ÊíÙê¡•H8ŒVk6ÁÜg¡‘†å(qµ)ºÙ/Eð5YBáî.<‡žO©š_N ×>%hôÇÈÝsÛ›Þ—îzï‹ò®úÿŒH É *aó‹ ÄȆÕIºgn5–KÍ3”Ä9;›“[ÄÐó\êq¶¨±£s' … ä ˆ‹®Wd'áS»53kÐkË“¢¬°‹«Õt0LÝžqä>b|–í›RBJHÏò^ÊML?ÖÆ)K'£š–Óâj0oT8«¨ ‚Q“å‹Ú]¥;Ÿ€§T–,I±7¾0u’ÔÇG/&ô»­xTR°‰¬KÜmÔhž“¯“¥¢šßÒdk9â™þQÝ2]èMGßSÔ%Õv†é9.Ç£î²íW2÷ù»‰íxnαË16_ÊU¤^s‡;,Eox2‡µe½…Ì:‹Üç _RºOÁÖV}r§ÃM o”J NÛJ¼j[ïÒ5 Ø™TÊJMñÞ‰äLˆÁFïyóbß#H3ÑÃöA5¿|öP=£Óc©>”ë‡[ÙÆHB¥ºf&d×N~^Ÿo ‘Qít._hRœöøSlºß1´»ˆÙ‰ŒŽ_Ü¡ñy(Â(ä€I,¬ [Îk‘k>º'7SáŽaC¡.Ä ÂC¶æëí ZèÓf.„îö}%wE@’µ³ÝÎY‚Y[r#!ß^™à=å£Ö'£¿¶>Qm’ûu °ÎxÎpãÃo+ŸýÇaýz%·?€ 5öø>$hoW:n¶à[—[°p¶ÍŸ} ³¥“¸L­ æSòãB™Âq‰©<³iûæñk´ÇÖ~8È\µ| _#n[Û‡$²] Q÷'«°Û1¡m=7wI› ÒƒUÊÜŽ=›^±Í⦣¹ÚžÃúpAw“„J!¢=¥Ú|»‘-ø­ì¾÷ B×ý:¶ûæ€=Á‘ƒ™šeS˜Ð)º_ƒ•ŠÅçJÐpÎ*ØèÏpQñSb†Yç)¢w‡%…É&Æ"i.âä-ì‡Ç*§°¤üÕ¾4áÑϤÛyš³Ñˆã²wQ=þ<Ø$:=q5íê§#°ã\Ø®B¿ÇšãÂbL +F™[~\fúb*èy{Ìj«7+ôÉ•Ùh4¤úV*Öû„¥}Ôûþ#éP-W¹³pvB0 Å¢÷R›‹@Œ•´zä Ë­5)¨›!̹#3AûHÏ·m&0$»›ºy÷0Áfø™1x š|•q òPƶ$tÖi3¡ƒl«¦1šía»äÉf¨”™ôÙ àÁn‡çξ.JS›Ô³ê‚L êr€³p0;´;/ig ‡~Ù§öìÉÈ…Í ¾a¶¢å¬_WÛ}9±Âi•ÙAîÁÁç6ÛÚGîó¹nåR|ÄQ¦Ÿv´1Jÿ#m@w–¿ð¹{ÛÉŽm=w=-ÃbìÃûY€@h×Ý7…-¬5ç“W`°VÑÆÈ(ì¶›Ì|P3>Öšýul€K"»øåBÅö_п8û°¾ûÚåKNrk€* +T‰ý ý‹’vaÉJZÍ'ÍÖ}/û—ׇ£ÿú6 –Ë#¤í)sìnc6³÷¬bôEºþñˆ¦l\íòtängÑŒµ*d/t*¤…„ÎëQ§–¥Èd·ÙQu÷ƒ:DÍGû˜îÈXšBËÏð;™yí}ÊØí6ý¨{îáëÇ"¾Ù€B`‰…ÅrE78'p”ë¬l›¶HâY 'Ó„Ý=©™¼ëØ-X$ª_ÁBzPÿ ä;?cä,#Ø£ÒõÓÖ‘QOQ!E]9‚1LÐóyømÝƒÄ Ãwmd²¨Úã¤ñ3ФO½í°¹w&N s»ÏŠ2Bú–’X_›J_±Š êA¶ŠjO,›qA¤\ËlëÏ(ˆ!ÑUÛÁQ?mÑqÀxòwöêxOå-ßXºü^ìµv ÔǾÂy“íNAlœÉ՜ɶ·QÛ©Éz¶mæH@V8›¬ö”Û i¦?÷Gì±Vù"è¨Ù»/é-ÿ2´ëË/ÐÛÚnÔëåuª0ñ@‰x†rÄœf—–‡ñ k(ä“¢e‡»­|@­¥rإŒòÛ6ÄG¸†·€À9‹\x£m’mÏÐ#Àš-Áÿfoæö>mì×=ÖçW”Ýg1^u€‹š²™è³+œ)rÈŠ©¨abÞv¦jÙáºLÖµmÂýPóû%à&ô¹[e¢Dh e#c0äå±îÂì‰æ¼°-ÚiL¢§çm±ï¾Â0ýüö×y •"üêX9š>´ù¡&¼‡¿>ñ©spLÔ¤&¶ù˜]½ tµeˆ~CmsTׇٴ(½…Aü ÓÖÛ5)Ô'$É .{ÿp|CЪ=ò•e_Ôñ¾XaýÕEö£kÙ—k©s‚öøŒÔ ¡…¦)U:ùH¶ Q¶ÚÝ]Ö÷eN57¡€¬_’s¡yö4ÊNEÙ-OÞ…öŹªí}Úµ¯žâÝ`3!uha» 㵚»“– ÈQæS‰ žø6Úb0àÜ”z…)æçÞ‚_ËQnï£É®²üþ„OKÏü÷V'ëÀôÌÇ×€p¦Ro«HÌœ9‹ÒŒ&'ÚÎip¥Ì·py3ßÛ-c"¿¬cÔ¦RwÊboöú.ïØ7çUŒÆŠæ£Ù=)1ÙB¼$ö(vüà•ï<ÃÞG¡][®ø>« ÔQõ ݵ6¡êâŸy[D±×/ÍD¹úa¤•°AÃ$‘J•Ñy—Cà—¸öÒÙ˜úZøÙœ.^¸ÌîÜ¿f&s55ɽlÁ÷» {EWP2¬ÌKàÈ¿nÿ‘æÝí}×UHœ—ÿžI€‡¡7ÜÚScФJÂ1°¡m¶›‘ÒkÜ&ÐüEð üGÓÿ3!«…U"BNÇv%“øõJH{[³ÛÄXij8ŒÊ90j«ÄÁR}S`2À®Ýo»=tqÞâÏ«ƒŽP!OÇ8/'°C˜Q™¸ ØÇè<§k ]Ù&ûZK#Ç ¿«¤m…pá…éyì¢GÍ»E¨Ýî H!ð·ÛH¯ž|’÷¸N|±\÷‡'³ßØÞ·÷!Gãmßȸ¨8S§à¢~°·=›Û'ù†ŠJAS×<5®ðB#> „Cä`Û·8ßë"»Ä‹ã ±†ƒ“ÕÑZqZUœw}²•^3¼óuíÇöþ¥EfŠ D2Ä"Áä_sßGØú‹ís) ½DJL²V #wF‰Íغä‹02¨[6ŒJQ”í)äyµ@Í,$ ¯”F°ƒPô†ÒL+Ù.šC3Œ% O[UgšQ‚ž“ ÕŸªŒ¬hšå äèˆÃaˆ[Œx tH¡¼ÑΔãyô µ& Ôw³Ýh²Ý›·GšÅüÛ«‡}ƒH½¿§6Ǥ¿ýBâþµÒö>ïêÞƒ•[“}RåRÂ6^J“ùkÏp_Á3Ñ™ºèÒº¤[³Bü¿¸ž}%à‘Äžë@ïB:‡ºp(9M‘ˆ‚;<Ð!ŶL/™„Ñ¥_Ф\8‚¤•VáÒ‡®C´3ð4rñTdÛØ°‘ý‘"´ÞM\»Ç"ˆ[à»;hbþ¶ÍfÜvø„t~èÓÚWÓM•tI#¨žs¢WQÌ–U>Å7V½ТÒKϰÊò0:yäëÆ!Ðù5G–ªÇ°ÝK4N0ïʤ…Á×eÞ×B;,Éb Wä“h» (:¨QŠ}D°Úþ‚ïlläã4¤‡—ÑAxä>ƒ¾¬ÃF^‹D§ÉÅ’DÐPÄm`>ÝÚ¿º¤~i5Ò…ÜÞ'L ÅÄ“L}Žãd·÷Bw#²S^K業¼HqÜâ`>£L“óù7º]µ÷IN#_~[¾žÀ䎶ªÃžÛ3Ï¥} kÍ à!1­ –£»Uó±Ç´”€ŠÊᳯù¶>ù>¯™>LHó8iÌÚÿ?7>üâÊó}ØÓ}ñä{ùŸŽ\“Y™áÄ*÷&àª`áuéGËjÚˆÚœŠÁdÕç\cÈätl«i²@T;NÞ±‚p!ã®Æ¶W±ðŸÔû,Ãd—Tz‹v¥‘Tq¬LÞg˜ÙlŽPQ¥ŸUl»™#iV›íQgþ|m5Îÿ>‡ª_mÙv…p‰Ø·ÙÛ¹D…R=¸c”׉‚³Ãž|ž{Ó€L:òµñ «[¯~XGÀˆ6ºký´Gújlð}tÔÏ®ˆÍ© Ûõ`샩ÁÎ%Óów/òTÿÕ5{*ÒtËfô TÙÎÓƒæ]ª' -ú@á<ÚÔ°Pì°œ)%„î„/N§~«©Ý@¯pæ†GT®xÃîÒ¸Xªs? (Ÿ#I@uŸ§¼¾†šBiÎs¡ºLK=ƒiûXª×Š¥lÖ}^/}£2»½KËúo± ¸±RRÿùчfD]I°‡àJeHD•ÞŸFE»Šê¥òÏMž£ºzL¶Ó×EÊ;GkRÆ Y"ü"©U·¯Û¡ •´rH?!ÂXÙÅx”ÍÍèS–.ŠÔØ¥;üÜ3¬ÓS¿†CKtÍfÆÂ¸ÑëÙ (¢)³^ê”–]Á3•-[`ˆOÒYˆêlÚa¿øG»êÞîDÊß=™ÿP4õ}V¿(’{¹í Ë”%ÝLYÂO !î@ÙÉ™?í ñ¤Ký~mx j¨Ö³QÉ6­`oÓéMîÿÇæ 9ë.ŵ…4EX¢ZÇõ-_¿Ã€þ¡çÍû̬~aÒã¤#9`ÆÝ‹÷ÅMÁ”|†}`®MåÝ=fF®ÑËh…ÓÚ³­NKv¾S÷• ¯ÿ›·ûÌk& ¯8ÞÔn夙ª&Ä×]‘ÃIàx`o±â윴ðœœmZ¤í7t¬,˜j"Ñ€˜Ã|ÉgJ?Èýȶ¿pƒ-ŒÒÓÇfOë V†MiR¶ZþÖðè­”Àe‚'¡è z‰ì·BÝ–]8t´O¤–Þ> J ©v|,04^ÑCO¬;§œž].dè ¦½Q3#ðq=ÿŸ×_h½ë™4›º?K¯·á+d.|¡+û»uÜ-äeÕ>jâ[Ç&å‡r­Iµqô¦Ò˜DAž‹7i”&­; {ƒ3IY•°“âŽc\Z»1Ùˆ Ñ4FGÎ7“±OÄ”ÇYW‚ã²èP•ôé ø¶?ö züΓû}ÐíŠÝ)Ñi–:1W«¿kï…¢ƒm² jõÛ6š"‘ZjŸóúǃkYW剷IÉ:Âd%&jI2—É>ê0y˜ , ©AÄzTÐ?m¶òßP!!jL:>:žŒ‚˜fÖo¸o =MžªÔ dëË„Sˆ­ºP{ë«á0— ~B qþ³Hm›†ÅÙ?¯|ض© J23#à] ƒ©)Ý)T9gUŒ]|7¾ØzŸ8ÓŽ¹Ãߟ¨DÊ8GaÄaKvga4 ¿&äb#Rƒ’+…âQûauuø^³,Â’'Ò­?ëø‚6=/Ö#h!†c?JmM¹4&n¡v/rOéËai{Ä ‡%Ü/g ed3EPoŽÊèpŠcw«2k¹`r8sc:.Á¯¢Ý;|çù}ZKÛBLð< µ=Ô¼áDR»õAšCù´®Û¹î“'U&ƒN€QiBêáíY‡Z°On¶~urP½^«ÉTÙš…yöä©ìFcÁ£B(²aû©€Ù¢9òàöоVqÓ¡¸‹ÉU—býæ#_ý„½=ÈÏû2k¨;‚šÖÄ\ÚŸÃ62m$§ -·)ÛǪ|æÜ6­³‚ðÅ #¨Ã›ö¢õ÷ù†O/ÈWIïIÔÚÇÉÇ­ Šg£¬Øân;0Á€r(įNË€p@®vP Š5-Tealp©4ò>âxÛ±mûLôß„`áµä¯j!¤ú3R-ø^€Ö8|i´gŽ4$öÛÛˆ@%“ôá4Õ4ùq-& õ{Ð÷Y#mD`îßÍ÷vÓÄóT%'äŒ=‘È¥Ïáöå¿/ü4ï´>+g}šz–1«#Œübó|pËI-þÕ‡ùêÝã}¸Æõ°äãŽÈ& ú¨bZ†ù ƒ·Ïa k<ÅX+\¢ÃFÑ׿SlBÆ{^óMŸn_ݽuhõ]/ªmÃ÷úcfu<ã4V—-Ókbw˜0NktO §vktscp/È¡1Ü)túT´ncA!4û6d°d·"2 D~`ÇìF&Ùé.¨å®+ÄY†$-™|‹[¦°¥Ú"ˆ¸–å4Bg¬rX¨çï'eúÃÓ° Aw lÁí5ÎèÂüøf÷²ˆMjÄ(Q[ÖÌ@ö­ÇUŸíSnãWïs%Z[ÏÃvIŽš}a°äœ›mÏÏ2…yDõPÔg™»=rŽC7Æ0£þƒùjý}þÃõ‰‹DVWý`ëáç) ¿ Š] jŸ×€pÄ"ž@YrâÆŽ$ ßÿOÝÛ,I’dWz{>… ¸D܃ú¯f$±â‚«yˆîêB£E JWS8ç§ï\5óÌôŒ¬ *„3ƒA•Wx„»™šê½çžãd[‚¼ƒ›ŒÍ{&hÚ._ÀONzi¯Ã®íqŽ/ÚÛJz¨#§¶gÿ%¹Ùq@:¶ùf;±j¥ß µ¡hì8:ƒŽQ!\á3§' =%+@¯M}`I=«æÝæfíØkp3Ì×:„mɾôÙ]wU$ð:~ài‰Ìö´D¢zâ+….øQ24sƒ¥ÞAƒn铉±-°uiL/y®4RNtRì£Üý•xèäAÇx$rô@®žÌI–È瀒õi­d—×Í!³½ÙI–-¢2l>‚BaEqë0›+%*Øçµ9§„ÿÊÔàxÓ#Þõ™{Áëì‚z"|¥–çú!‘C[p|Ò5Ä“²r½5;"Z+{ gktȘ&j÷ÅåìË]X-6Ûºáš.xÈÌ'mW†'4D•føÔLÐQß®a+—÷œò p{Ò{³Î1M>ŒS³Ÿãå„W!¸kE´¢.½ú˜â}ro{OE2TmÆ›“sLò¢•$ØZ)bÝ!d¥ë}>“=Ê¥äò(2?å¡T%¡`ohéP¾âPïNÿ“Gª‘@\•OäÐP¬Å+i…Á,[ ¯šµÃ4ÄGÍî¸ÄãB«Ék&l#ê]þ%¾ÇY‰xÇr–_ü˜îdjgëŸó "ÐVøÞº?ŽØ)üÀuÿº4¼f—i.öMÛÑESÄÛ²uÀ™5ˆ³a¹ª lðÄô1ìåðâ(EnöÓT@ 5©`"¹Ä2¯µáO"«‰R³{ ”@TQÒQn¶pŸ>ÎuYT×)ʽßô©;ËË2ìéÙæ3+ÄjÌô¶â.YK:91ÉpZ=Ïú´2Æ®5ñЩŒ .ãèÛ,kaRgýc¸#ŒYm|¼{OX6¾q’G+Õã§{]$‰l«Äà7¨,4¢šÅæ6O´7Ê|0?lTds`Gw“¤+T¾t¬™ÝÁMžáIH¥ÍïXjŸzï^Wˆç©[2¡”Š\¼´lÖ)Œ&¼;`Žæåeã€Þa{hÁ×ÐÞˆ…ºy Æ~fÃø:ÃàZ³Ç±÷…6ò óMT’.dmªPAH y±ù¡Ö»¼Aþ‘=±¸J8ƒ´õ¦a'—Ï„•_»h>í2-=í2ág¨"´Ú$„ˆËã‘YY—?¿¤ÓœòÍÞ¾O?âCð|¡;fm¨°Ùó~½‘Æéa×°%S.ö/¡+!S1p¿j?`b|ôþÚ†²^3ŠÞž¶$BÞh±Ý'«m•9£(¼9¼Ñéß·76‰Ø ^Í^þûªŸ™áÀ²IJ§©™l¹K™îZÃ9®ïé¹:Ft7Öéò€Gè¦so‘õ$*‰ŸUäç°s›´£ d#”Ešù|XW4[3Œv´ß úÔ;÷úè½f-é ×ðFNfd!^ÌQmÿõˆ–¬ÒTÚ›³ÝlÊ~Û•È Žüuu t a Ønv› ‡ÒðŠ ‹Wú`d÷h°ñ÷ôò–G8:bø6/hr…ªÖgè¯M«4@H[ò64ç>ZHž”•‘ƾŒÖÒ*2™Ÿý¡—$4c1óÞL ‘;¢4²“µ÷OËœhcî"JýâËâÍ|‹}™ü™ºÃ×vƒõœ˜ç2¿ð± l¯?2w)q6ëÏÀ¶ Bî€Òé(iñp_å'ΆåIxò¶á–¢ës›Ž¶X[I ,L¼õž¼ºt$XÍg~£]õµç4ûv…:“;=lÀ$þ¦,6n(­¿€¦ó±-‘kÛ¨wÊò¸¾{Ív¯jfÚî>ƒù[Î sØx똑 jöœê‡±1ˆ%F+Š¿~‚<¼Ý°v7†Q°ÒšGyÇtº;JòXG2Bùf¯Ù0Ò?¸5ì¯mk¾ú’˽²š2‘_•Õ€8L®f¦Z˜A_%•ø²ž&s‹¼…$’ŠØ°ÿËÈ6¢Òc‹Í˜à7át¡çÓ¥ÂÖãXÍ8GÆ×Ày÷ÐÑ0×Ðö5n×—Å`èBa¸áVg $´Òs\}Îàz†À±œï¯mË5„y§¼…¡XŠíºz×à\%þ#(zøbÃhIö?!ou´ñ9§¢#гH k0xOÖÜ@= «%OÓ’'„Í=x«a|8ä~7ˆâ+ ÝÄ ¶ MÅÌ9.޵ðKs&)Ó•tæÛ®€‰r‰øÙÝX3k ;¨,4f4ÑnG{:äÝÞ=¿•;ì§(ÛžÒûûD¶&îô×>Ž5]EñEdë„—y.rú`™85ÂŽ‘‘»b,î•äåäÑîe™Ì DÖ IgJ%@9.vÆ“¤,QØ»Ò4å)Ö#€K92.Z¡€Û3² +¶'HO,kC†YÌbNëÙ£–íQ3lÛÕx×#RƒÄ Ãõ|ñš:*•QH$sߨÕvœésøUw’ðæÅN‡t«ö­úï{2|¯d;ïíSÙL“­ Ü× Iä y ŠoÊÙ;~:Æpº¯áìE$ähöñî¥7?è [¤•i¯ÿL¤ª¿¶$|~.H#AÖ#ê¨,•\Am¸HÍ΄•9½]àj¶„Z”N­ãäxºw$=d>–Z|‰Åw‡¥V Ésª Cu8Ȧ\*÷:ÉGÉ9I¨Æ<íŽà‰e–†ãñ&‡¥OÔEô×nˆåšR}2¸–œŽì¶y†ïƒçÿäˆÔÏ+¸<©…ˆ¬½H§öEñnoÃÔÚlgŒLnR%—ec6œ–Ï©¼¡v¨xÈ® *•à$»Èæë #¾˜2„¨a®/Æâ/ÎðJ”˜K Âdº Lˆ?ŽÕLÝ“#MqP}1¦ç5 Ùú¢¿·û0ö.lXîtô¼üˆ¹(ÁbOê5Ba3Œ1‰`$ÒЩûàgLÜFk° „ÁÊÅR>"ïV-úßêë.T-y¯ÏØ29 9Ýð&_î†ï‡º--¯¥ëÐZÒҡ܆bñ_Ž›Þ™î ¿3ÛR ÑWòZ¸`ÀŸ 9¨ŸIWï¯M‹üFÉU–Øåø{LIˆ"Y›ÃÜÏ”v™•ά6ÕW·…÷Q yÑVr~øtj&àpoN®:MÔÅóÁ>r ÑÎMâ˜>~u ¿KÌGf$¹™Ï€úÃŽC#žQàe2ª@IQU‰bh€Á)nÙ‹é‹«$Щ(Ì›F3[L7'×Y{Ä¡I´OA»{%{Ó&eH4“|èQžk'ÔR5 eŒçH:Ç|²ØAý)yH‡ixö6©ŽæU¹ãØq.j›®ºØÔß±fÊô•£ojæîN7&ƒåb«1ÏE¶f­XoñÙKlE˜:ú•NøÝP„´­ ­áyë]íÁ‡o/ œ§à‹!S’Ç™ >DMAì¨oû:ó£L—Ùât\ ÖuvZªg¬r6i’ÍÒ xE´Bå÷TÝ&qt:*Lì%“1JjS‡ö\#Ðݶž5’ž¢u=O¯ö¡½ß3|ðŒ¢¿ö|:º·ôÄQ¬ˆ7Áš-Ã2Ó !›ã 7 ‡Ó¤‚êÆ¦÷'¿sSmÃDÆÓD&Å ÖUÅõèÇ;íGW“¯éJ¹:êñLëË\”{ÌýÄþ"¶æîÄèã¤u]連Dz‹â(zz\êNö¦#Ó6kuáÀI[K-óH+òRs¥n*Á’®çv„w¸Y>c€ñßoLZ'3"[f:ô$‡«ÿ4¤Žö/Ø{íÉ>VvzD£dÞx8„YðM·$ⳤÆ3½Ïã6ÇíÖ¸Ù5ÊÆßûæ/žb ,’ B™VHè,Ù7µ˜”f‰™Ú°O-"NɉÇÄ"Ñ ¾0L¹2~S_O¦ ”8H¥ÍnÒÕˆê',×$ñÙ˜Ö:Õðmåm.Åñ0þ=2ÑR§¯&`53TëHÀÌ‚ÔC"›Kó£JØ¿†7O°<àIHöï×:TPÙ Ôc³ÿY,Ñ“©u¨/|MG—ÝéÛû£ç®a^[–‹QÐëóè9*ð†|f3DÉ•ÛHc³ÞÀ–‚ç“¡ß•—QÝ>%Kˆ‚J†¸›—t€R¥f¿bB­žNÕº¦„päC`-§ß¯>Ò†/è#¿KÎüèõµ%b¹F¤ÒŸfÜ…é0ñÂÅ5/–œDYI¹Ú|Þd‹biÏÜûîX_ ²£VÍŽ‡éG¿y»ÿS-u‹Bpf’ÅÝïWî蹞ӞùÆýJdkfcLzl“ñ £¥ÖS‚SŽ7ó4¸w=Žeç÷É”_䳄!ÁÄ›Ù=¸uÑ›ó (ÓDn?­}4Þ÷Ú\ñù|*OÖAÙ5aLPÕiv{Æê¯¶ÓaH=Žº7›%¶Ë~D-˜Ï†u*æÊö‘°IÕj Õ›Ëʰ¥¾Í»u;':°Zf$N¿Âp”Τ/¡÷õn]½6h,O3˜ýi£¢ž!F°»’ÍÆ‹*¢È*¥:º×6OF6uº4;n•ª·§1‰ÄlR%\ðŒš`+¡Ž)Ý?ÓÛ¤¿2 ü·[Ž\Oý¥‚*oãiö–«MŒ³lab -C°¼¿´ÿbhÞÀVPö‚¸ºõ€*Ü4¤]àXð–_1ñ §×¾úÐãq‘„rÑ Î¿RÌ#w#áX¢°ÊÃ`«×¶R]‰‡fÀÉ~)iÉh”¶íJ­Ð,„<Çê‚b8R8±5†nJ8Í‘ªä IÅÚ°‡PãÔàÈ$ƒ³lKi©š†S MÖÜé˜A&?|mkøzÒ]†4»CZÀ×±#  Q3}ÏA±‰øîd—Ìi²! Ø`vÛ'æGÕ¼[ä·éÈ®v[`F`ŸH%语 Ÿöñ¤¸Š‘–9™´ÐéÝîdÅÜ å(´£0p“ÃJ0[fD¹é@“óMõ®Ï´1鯽ñò8¸?a‘ÙW‚׌[%a¬8²Y·+rÅ^'Õº5tlk ïº4š²«Ž<׬üYQ›ñ­²Æ’ˆ7ýL8ÁiiÚ+6n'¾é,deÏ2‚j˜ìÕ°–MNJ) `"×J;IÝœçxTT("Ëóz%¦Ø´‡<@ tÍ­£ ¡ÃÓ~8…„@ -*„]ÇӪ爦 ÓEE“¹[¹®S «xÖ Ý40[=öêsÍ‹¯·.;…ìx¼æ&4CÊÕrVA‹V éZÚ1¾JKPÖ„ Ó’ƒ™}™ÂåÞ!›!ª2؃{öyÏ‚8[¨)Â_2Û]£Ð$‹ø÷GŠV¶~n¼imYøüDl_ ¸¤–ì6¤9TA„+‘£ ¸5œ j¡¤v9’tµ…d8Z»*âý¸—œ•VõE&ݵ°<7Á¡ØÒË·Õšv7ýº¾×J»~sÈf¨„Xa ï3j=EÆÑösˆoû 13¶XV‹ˆó‡qe#!¬Z@a¬NšFF´=ÁuæñÅ"üýëÐïf ÿúÓwÅ7–¯’K~°lžÀUb»IFt¬ ‡£'Š®)´m½ >Aq†FÇÕQ¦Í¥;öâ¸KFTʱûbƒyS²Å™ƒ$ûÖí#@Kñ†À72bFƒšôl‚b38ùÜгé.›v¨³!‘£Å`¶ï±³ÂMËŸ®¹OÍOñ€‹YM_ªVÛÛ{-5<ÍÛ>ϯ½#ó¥•ÊOk.:àÈwbËÃjs¬˜}Xò ýMC@§áYóæ½ÊoñT 󆋊 ßüVÕœ!Ë+†Ó4ö±³$î¿iÑ|븖‚$I'ñCIÕG÷l¯-óeן"^uÀ6˜ Æj6¨b6ÔP /Êæh½b®È†µ¢±€ 9l€YÀ ¦Ci2"?n žÅ.êÐ== ½JøÀ@·°ås^~þÈQµz‡£¼d=Rx<ÏÀEÿ™Üáo7ŵbÉ Ÿ¸%ÙR¥âc"T–ƒÅf†ÐyUíÅ4N| X[ȶŠײùôåÏx梭 Vðz×»uêÛ¡õ×þƒY q¢Ð÷ÝvhØiˆ™.¼|z@t³ªR4˜ñP­NY¨gyœh]¥yòÚeߨB¸Â¦y ÂfU8D3вûk6ê Lö{ê9q"'1 !©ÖäS³6Bfìû| B°#d,“vƒ›[Ôn|9ž‹ÖµŽ‹€“ŒØ¶{º´][|mjÌ‹«%„U_Ø”ßjîèÔµã9ºÉ(;ÁsE;D€á|Û²Èú­ÐÔÂnG—A­÷Â&ËnLr ëŰ½ S1ºVã”5 W‰•»•H)"m·í}íÑG·N¯ ó…°ïÏs=„ˆwòÅ¥c*ïáNôs–Þ+jtXÛmPEYö0¼âØÄ¥†FŒ&"ÙݙʥèvY©,Èç‚ëÈ n \Cj£øÔËûúܾ´sãYã\bJÀ#3yO‹M´·Õ]¸]w“75wæ;‚åi+ñÅhxcÅ]`vfU;”‚¼×žÌsPlìz^›³8’8šL™x£²áésžY.ÀS¹÷•ô=Êxm7™/ÍPÝŸ±„2ËÐFwÐñO™eŠJá8{Œ‚4ܨGó]lL IÓZ°”eXj3^mÇ{íØ¢¸Iifá=–M?ŸvøVµ «,ý@,÷ÑGökƒË|¹Á*e]>¥­0`IÞ ôDã îm¸9«°G…Êv…Ô²!Å:ÁzdU¯õœýkšÀá໽ïNiKd¨‰¦Æ@•דÊÇÿ/øÞ»¦ùçã”û@>îk«Ìh¨Ž]ï¹/1W¤„)B§ÉÁ†ÌNæk닳UvŠw< Ø8èÔxiˆ-޵4”éÎ(&+;DlÎØ0g þ.Ñ¢M©°ô‘®dÎiæ‚PNÅó3È3!™êT"¿0SÔë ­ß¾A4 hFÚe®…à6~” R›6N˜á+’WAà܉£]•vÒØ„ (ø2V{žë ˜èg“Ÿõ†Ï‡¼¶Î|Þ¨êÇÂP‹€öz#±ÛWDÜ‘  žíÌÈÀ=müD òé-Ýdû'{OkaÊŸÛjS¾´¡%R`Oö’!ÁQ &Îåᄺÿ„BÝ„Õ@Œ ÄÐÓ=—Ög>¶¯>ó“­áxÙMÕÎÁ WU±æKË{cô8åµé)ÅàÎQÀ‰ÀÜK˜:fGËÝp­é6`hèÚ7s LŸIÒAVYÄ—`ŠƒKŠlc^¡¤ÆùŽå ×ý±Ze¸;XÝ*Âô+((!\\R®îô3;ú×®£óÜ_KnOZ ß.d¾¨ Èe—{—{yÇœ=;Q0¥° 19–r#·¦Â ó íå+m ñ|þ\âÞkƒÎ§ T·/Èi<Ü2ϤI =jËdt²¥v»hU'«jÙîÑDô_ÐQÛé·¶x\+(ÔyqÄÔÒ±ÅHÁÛÝ:6f•x¿.† :YœÇ+ú›[@ÑhõÑå‰ãCÊ=‰ Ýê7’Éßµxí:^.S:6fìñ EÔÓ­0Ú±Ùè%£LÀR ébu$$%~;>GuÕY5ˈ÷û&"f)]¶ú†ÉöÀx„é!èzÉQ»†"X|1Ü.:ë®ý9Ú)!ÝàäÂÚòw83]ÿü™]Äk;Î~Ý«”Ÿ÷þr’‚~·ûÓ—!£PJ» ÊYØæ‚';)¹mN¢RYüï݈«^Ö=ކ_+áP·ÉbhÙ(N¼"s»ŸâGªå3ælù©a§Rñ"”G䆱„ë;¬bsvÐg`ºŸªc}m¦ùt›Šäó§åÝN-ˆÙ2¾¶í!²%¿°ð+Š"û@daR¡BþOÅ_{)ç¸ë²A*+Ê“¤\mÌ”VµKÔn@&Œ8É*QÚO ®Š“¢*¢ Woa‡T×.òd[ùôгÀ ´h-–£¾¦}[=cãT ?Oî\ë¤j¯ác †·&–ÒX¥ÆƒO™C~[}„Y9%Œ'œSÇÞDø4›Sãì¯J»ÐaV V¼³5rfiM®þ»±Ómx#«'NºŽm(.»0Lß=é?$•!ô[Üþ­].ëašx8D± u‚{Œÿ|ssh2&TØ­š yJe‡\m DÙóÏ6’x-¤†t„Õi…q5Õ+ÚÀ:oËÎ]×™¾Ø8¤R««³%VºÃÀÁ”/üàDÕ6 PH(>žØyoŽ Ì ìDþYê]œVÕíâ~w ¯Iß´pP†êà|%fÄ€¼òµíýµÜ͈ïöÑ-á±M9oÀÃd¬öìøs¶‚'yAg!1öÔÜËW`Dö pµ yËæ)+¨ ¿úõÍãÃðXÝD°?¬”ýÆòJáL°pX‹Ÿ¡_ÇOS>¨á‘© ;<¶0+“2±ÁAÁ`47 ª¹¾•DÓvµk˜8 R K£!* H[¼EE¶-–™}äÇ9½­3.”Û2˜]º"ÉB%Ђ1yÂä ‡˜µT²Mî0·)’ž]âízÒ+}Xjëù6Ñ—öp¸Èqë s¼‘„‡­ÝÍAϪ8(@™­£p3›s !ðvÞ€IZ½„ù¤GFe4´Àló³qòbáz~·-n³ä‚‰az; ‹°ÛrðX´DDX»x ˜-‘ì˜dæŒÔæâ4܇-øl f›öÙ|%ÂëGj]$3¨Áf˜Lsn² "ªš=á#7WÏG~ ‡¬|^èð”Ö-©{¶,HC1äùÝóøå‚¨:õØÅ\¬ÚŽ^„ÓìQÓ*‡—®;s7}qI ýº“—øD$KëtÓ]®†Qúùœ«‚*r$[+:ÁH]E·"ÜÜ?ÓRµî†m§@ëÜ/¹Ë¹Žw*‡èé2»pÚy€•º¨§Ô ÔÓîIm4ñ4ÍÇ$»GÖÃ(mö)aP5ßÀžN»övkËÝÁ·3,?ÃaÉnü—ø- ö’ù¸U¹3å¹Ñô¶:s-.MÔA(Áq¸K<±g“;|Z¹àÍF/ø† NJÊHD5¥ jÓQ“à *¦n8TpßíƦÜOúÜ[È5&Ç.×m½¦mbçÌå:‚ÓÎmMò[LÍ7g”KÈÝ®lËÈA3»ŒÎˆËNÿе\M<6Áe„Óq‘™ˆ5K'8ˆÄŒ¥„GÉ ÊTI–)ãú¶ïßП˜ ãã=‡·säÓÍï8u•µ3G…üLɤþ"ï¬pæºp¶l}ÁÃ'àŸð|ÑÀe” Kâ§5í™!Ú‘ƒ…Öë8ëÄŠùK·_´Æâ©ØÅK$(qÿM5ÒAr!¸„v =-o!ÕVâZeóçe÷€à°²à]¿o›‡ïåʮŧÎvÿÉÄQÇfY\MŒ8lÅ@׺9ŽÍŽ3ð“C—X©¼œP[ ç¨Êkõ:S@kÄ©¦Í„‰òG/6°iÖrÜÁÃÊC3›uJ¶)„r”W1ÿß‹¸Ç&ÎÁ©qní¶ÛÿŒM ¡OÊ‘~Tö•Å\ì‹ÈÛêù®äíÏÜI»l“%®Ê,™Ntó@»ÇõÅëX*t1ñ˜~È{ 5Ùæ!Q±Ñns<Û“ù"L, ‰ nÛ-̤ΨÇÌúLŽ#øÍè—éÌàÉÐ6¥Ù™Vu?[æÀ¦Z ]ñ–EÿÃÖø“Ìáæ•h¿X'É«¾Ê R ’89ßbm\-)èZ<鯔e]b»ŽÕ7%ç#ÇG(n 5ÞÃNÉzNf6 ‚Õ!å³¼%t¡‰J6ˆÿ7…HdíY·m¿“·;Gû™OìÕRúº?&JožâQ›iÿ­Æa8á¨^o‚©@àˆ(Q”%;ÒÚç D® i¼0XÕöÆ`)G“DŒñÃÁBåxŒÒu:9‹Ü °£;ãˆÃgù¹ÆÛª1|·y;¶ÏQ3ÈRÎ'Ç­‘îWpÕ³(¦p$Ñ›mòãŠ,É„÷šN[ȃcGÍÑFJŽºHé¹ÕÚ71÷O­ßby3å:—¦àËÇšÝÞ±dÚ‘jQÃ-#M´FA§²ˆ_ËÍo š7/è«‚èÛc†¢ JgÊnp9;”Ë¥aŽŸ×¨?}3Ñ~¦ÞÅ?b¨ú[xÌ¿þÿókü?þÇÿ‡ûézé×§ŸxþÁ_ýS?]¿í§Tå|'ÄAêSã2OáÝZãn)’=ÞéÝqÍS­b*~»; É6Ŭ™‘ɶáAÛ²@×Úšvïñé×1ƒ¶aÑC™¹Þq÷ðÊ×Ûpvk·ó1 Cn2˜œ¤žÉçØ1¶¸iƒRx´ âêü¥Dm÷wER '["/˜læç,uÅ3’ PuzÕTýè±EѹPä8ð›Ýã¦Ó;í^P1hø²Ð ‚{B"Ù+j¸e ëiTìÜ™O½p¯ ³KZëx>_8®›ú/›•·-ø9Úû2ÄF`oz‹+‰[;ÚT]`׉`ŸgÌ>ä^\ÇC/!Íåjlõùmù:·(™`³X¡ ÞÀõ…°¼†q&ÿLGàþh‰4âBïéºÐÅU­¶ùjÖkNb‹œ`Õƒ9­ã |½™Üƒž‡onH©’»A\èã<ß’[…{Ȭ úê|ÄÛ• X†ü‚ã·†QŠröA¯£9‰$Ÿ9ïþNÅu]ŸrPËV0bL%óÔ+²%Žb]Õ³øÑ²c›[³De,þóª ±Õuy0(‘¹yöŠÌNtâ&h ˜R»*Ø÷/ÞÇ;÷×Qâ¨ÿI2Ò£$:¾qbèm™…„’Tfk¢ŒÔ¨ùµyî˜T@¤;”~"j§TpyÒ¨PjãT¨NhÛÜu%GŸÙªí ×2|<ÌŠ½§•"²~$”ŽbÖ„òÅr׈î¶üKH³›>lû勌 ó™Í‹tB݃)Ïye+ÜU³SŒgÏ|‹n)dy gà“úhÎe#¨³GHµ™ÌñÜl…ŠÎ´a«¢;¨9—¯üc³DÊ€&Ë0 tÜËÛâIîÆm *u] ¾ûÑ>F0„ѤHñJ¾®`ž¾$ON5t.ñ–´·b¤&ºÂ#dg0S.%ƒö‰rxëÆÍ]~¨¥Ú¾-ƒ™4Ó«w Ð d8È‘€ÈË0ÊH,&oç äÄ ¸!™fĆ 9yY¡¦¶+*ˆå5ER¿±s¢éØmnSéïj×° ~ý¸½ïqËp­üãub%ûžÐ¸wÚ\¯‡­Z>Ñ3ÂïQˆÝ*áãò+Tøš µc}{O_Q2ÃmVã©ÊݘP%`vÄq2¢ŸÑouy4$²Êà%´ž=‡ÁNUIÝÜéÃËYmäèž>SõN†2RL«¶œ¨–…;Zâ#yË”éL©ŽØèÅéªúv1xÊF=+0*ûÆù>âÓÞ–X#è¯:²šCHÌÝc)r¯…ñìwÊÈÆtôO¬«™óÔ®xkÞ£«\‹bÛ4cž*uìÍckÂË:¸ò–îZ]þcú™ÂY½ ƒkØ;ŒàÖË¡wL?¥06Ô]­ƒ@ñ澪 æÚäe}$†í=PÚÉciw É[QZeи.±o³­&ÓY’jëÕyÔ vx>¾|ïvx&vɯáäHñÁMÞšI'$“ÐGL6øœÉõœ*ÖÒ²:ŽŠÉÒð¬^_ÌIý'Ì+~b××SVJÕkÖáäÄvk|/`ö9´¡›ÉÃL k$Í ¹ØhðÐs Kü}ZÔj®usB»¦à A²rË|‹Bµ8ãÉÓlÜ<†àƒ?¢˜ <½_šé[cÀÇéæyB†3ªá™Ø®Ý1îÙ¦äÉL0ï« †µžOfã /ÌÂ~…ÙCzØc104†ÓŠêÙ2…Fƒßü¶XíF^€zåç©’) AbÇÞ‚QháP²¤WDÎøÖäœ&댚±aé'“ß¿‘– J CÓ˜Ùj<KžÖ†€Ü³¯$'F+%NpZѰy#GqÓ»ÈlCE—AHžVC7R\–plˆ8Ý,0Öf(=¤(Á|êô¸£ï‘4n»ë 2è9Å ä'ŽÆ5æ¼Ç…Û[Ê•›˜¨©¯ ˆË.¨¬’M åÝnÊÅ&®ñû­Ù² FNC.§ŠÿõÚVíÓPlÇŸo„¶)Gê‘~Hç²Î‚*¨›»3÷Wž/Ɋ訫%9@÷ʼç,t…ORGYQ¸3¨Ô­ =“„Ñ7ìØYËÊU‡ˆŽÃ%#ûùqÉ¥;¸À9ê0IMëJ…spàÜ®®§ö‚Z-÷q.ɹÓêï"- Ÿ¡oè!x2¤­ltCyãUÝ+¿š#á8¬É.‰-•ªùÞ¢kgѼ‘tàcUÕ¢Úi«ÝMiôËJVËñ»–!E…ƒìZyùøjà7[óô9ÍX¾¶¶`çÕn°¸ªŸÆCŒ ¼{«fÈØ.„^ʃ& X$h²C%;w#«Ôƒ£XÁnhxW ¹7C½%8«ÆQ‹*hq)I‡-–t°Õˆ•³‹›.ãËáUü°Fáò+»'q9ÛF­ÔmÊä‚00Gx;[M¼‡êUDþ„ƳóÍn÷N+ªZÑ}ÃæE7•S½ºA18?ˆŒdеº¤¬<ƒŒ^z“ñ…ÂLö {Óõ0%g²l ¤ƒnRŒÞe‚•÷ äWí¨ôŒ5ÃìÚ_< T2¢Ô¢p5ÈÀÚÖè½ù†¥ Üå²:ˆšsodNn×+TÃ#õ0,ïJ‚èf觺u'3Ëxà&Âü¨ø×_àkì÷×õOÏxñ¯ë ÿº€á'@ÙòÇuÖ¯3þŽ^TcHå©|‘$Š£`ö<Ù÷tf'ªdOöC_°@þ'Œhe¨8C9³I»àætAg¥¦ζ›œ¶Œ½Ã»9ÖÎ…Éj‰î·àÂÈõ¢:¶3„{µÏ_½£ÿÊÀV™þ.¸ñÑšž×Y€Gi/ÊØñè꟞n¶•zµ [w;Àà¡;èÒ%~v9u݈åî½qÔHy$ÑhøMtP¶ÎuZ"Ç®'–HSo •̺»¶éÊZHqÌbÔAX1äW#7jl•h$ü;T¸5±M ÄC®D¢‚I¢‚¥jmeäB–c¿tÇ¢VrßYE"åfЧÃÙ Ê"Õ­±ŒrÇÏYyÍFzŒÙ"ò5â…–|QrN4s®Mý¨IšâºÐù¨p÷[2j þäþVÇ!å×r#{N—H Ý,˜M°óâ)™FŸxÆâÊ^-:^àúŒÔ&YˆWhƒ†µ¹ ­¶Q T¶ÐõÃÿˆA&~›Ìijgú†nžÚ¼ø¨ŽÜÀR {ÛÚ|0/N2p¹ZfE¼~© ‚½T{<ŸOÿrœÔ±è53J–à{(‹“d8ÿµ&ª½ ^u®Pä/j(;1–è– %\ޢ࢔ø„ªYƒÎ¢\ FøÊ¨ ÷Âî` ·Lç”ZÊyü¥¦¬q”ÜŸxR5( )ä✫X~ÀÜÚ£Üòæ«Ú,€+ ‘V¥iÇ®Û'ö`·\F’*ò°%¨á:¥2œ¼'ow(´n-+³Tá<=Œ#ÂHJ®¾Ym‘‚C«ò Øh¾ó‘R€1läeÝíõÇÅ”á‹ÒPeA¦©B ªO‰ÉÜD%"”EÿÞ€ÙkÞçéÔ €‡7Jr²7 M`1h V%UT:ꇓy÷t‹á±CTg÷p XbõzIصl`5ƒ;jp–øqn;(JV0¦JË‹Ü!š ºµ!¸EQãHrÖáÛý»H3å8ª4ˆ÷Øcœ &—ÿ éÀRˆL]…j£34TL›;®ä±kt³*•“ôn™ó1‚þãXûþøî üѯóD'p¹Nà‡Í»ÍIê1»¼•»ewì˜ZÁiöGùjë­‡Û#¦’‚Ì”îâïÇBØí^V0›K¢W-*QÖžß3‘ˆØf}ª¥L± M ç‚Ä*ÝÎ+îžHaQ²i²ú™ƒ¢×y¦¥Í(gǼTHl»ÅüÕÎìÕ4ð‚>y³Ì"¨¾xß,@Äe_öp—ØoÂ[7½–$ÛvºcåªYY©‰} Þcd:ª­TàCkw…v´Ìãœà¿Ÿ†À&¦Ìiá¶Þâa6–E¡‰¾/kŠG~ßh L÷>ê>×A¡òAñ}êùé>¯@¬l¬8ߪ#kt 'gh¶ë9á'–E³"—Aju—’â7>dã´¨wDærE•=ÀcQ“ÀÆÊøÈæT“zx1:‚µÔ‡‰—ÉòJýÆq;$/O0VpZ:Q1ç5ÆÌÎ ÆØ(ÐÂýþ¾3òGßÂ×ÎÈ5Å-líYðÿ$ÁÇpTSÔ¸q°ÇyÊ´‡•á¾Î céTb «¹4¦›s™˜òqñP‡˜V*¶›ßlz“x˜”nñ¾‹Ã“YÆë ËR¶uéÒÓêÏž^@¥ËÊ:õ5ZÉëH#ïÞ°óÆBͤxOìS½ö%¡'ó5CBIðÙ‘"øŠièmÅIÆÆëÉ=F£ñâ©[ÑÍ\8ã"ņœzo³Kàéhg¾S3EÇtãI—¶ÿ(–){Þ²”0` ßÔn³ß5†»˜´ÀxasýpvÛUwK4FÝ©‡ÁÔùÀµ5Èç„ËŸš¨ñ¼KT¢k;"FCŠ?dIÚš2|XCƒK­Ø}èÿ/Ô[˜ßId(ëøÏÏt^×G>"ŠÕ#2÷–A˳r$ÔbÀÜBØI¬P¨´!ð¬Ö{ú®WrT6{óh«`v!A¨”\"½´6wž|±Ñ šJã§(ø$‹¿×°ãÁÎ_“_°Å佋Òèǽ[:øz]àœw¨å/¶«yR›á™=ˆ¦­+a~e$­8ú:hwŒ0á|ûèR£óýÓtŽA…n’õÓm«~æx•‡%(‚Ù‰©^ô‡Ð]åjÓ0-1Ù‰§„ú«ÃY´‚Ò»ÇðÓ¼D{˜Å]žÖ¸åÛQ\¿knòÁ©ã;¢%¯ç苳ñ뇣½W¶½Vá`Õ"XJõžO‰´e‹ ( úÎÑÜÁ£DAI³Ñüë0Sv/vs7‘J W|’>ÂMߎÓ[Ì–ý6ÝÃx_ ééÃ,í Hù¡»i*Œ”ÖÎ+—lŒé=\:ʧBã1nÞÖ>=^<äwWO@ߎک.¿ö]j¬¥Ï+2D€-”"Dçù-î9+’&ÚtJýìÝ\aLÞð½y‹c'U YÛm£»QʼnÛN¼ð™…ÆwÒIÓ‚–ëÓ~îg† Ëì¶´g† " ž=¦^¶K`ôîN„SU™Êƒ4ô FåöF¦‡%=Ãþí,5TpÓ gNU’2¨7(­.,ýÒXæÈJСašÔŒ>8ò|ñl”6›~'H¬¦Ž¬geÒ£=@‰JPósO\ÕR…p"ØÃ‡ t‰ »»ºYLÕóV ŽÖûj?µ,»™&HÊ¡U±ÊsSSæT Yã*.U3áÉÁŸšõF(ðO´ƒbCçð†t¢ÏÃñ Óåè’* Ñg¯cOSð£éMa¾{D^ÇN^²´e|ôÑú:˜6ï3–þT•Û=ÝÏ’öôœNJGi·À»qÓî ø¼›XJ:m"}r(Þ<¶\.[ݵÝ÷žB©:ömÁ‰pF=S n´øq\ ÛU5·®MLt»Ôn1–y²™Ñ£Pt<þó»Íâ´ÙŸÏjœÁȃR8(-úÙõ¦Ó¢#df„-f3RBG¶Ú?±¡)= 751«¦cïeºb¨€d'S6,4š$ãËCQb{;B?íäVïfo•¥tVÊ$P ä ë&â]$áàÌ(Ê4}[ —;mGJ&`í®›Jlë‘?Ÿxz‚ |&ÅÊ¡4Í6_èK 5–ê}[È>F¾“c³Ž‘6¿(g¨Å"º—Vu¸S—ÜÆj² —¨, kpøË3¬H?A|°æx+›÷_ùèÕ¯¯ŒÞ¨Ç,-8_DzÆ:×p.=M1bÌc]¨­£V¥OÛH"„¢iØZL^…Žwæ[—pØÈ[§«]+4a<ª€vHëÑ{…-†Þ;žô‘ÙÅÇýÞôËCbÞqîÙli°;{ag7’†9œNFKØ·ë©ÑfÁ`h!hž…“6¥—ýeÏÝÑSåM-Ç0/¼s)KOÊ/YuÚ»]zíz[L|ÅoG-€r7ÌÂÚmÑ‚TRòšˆ¯a×ó­#ãå%hÁ9üR†í¤Ùè´ÿ (ƒUM]xϰOêoy„£ñW‹ ?nù¿Ž>îýzâŸÚÌ!6æéîë±tûÛ:×Ì8†\Þêݺ@bzÃqsæ Š"F=Ű@=nš’[X‹ÝzX˜mïú¼}t¹ð:öèLã=c%p&Ä4`—aw6€m³©ýÂ!tõ"Î~î8/›92#l•ÚbÀ„‡Êôœ=OÆÓk]RXíœÅvs¡x“žE¹©?~¤nƒ°7Š Î·–„,±z˜~_˜Ü§^§ÇÅÚº;Ox&Þ™‘.Æž8d8*bRÛlò¨‚“¹mA¤±»›Ó¾1üåµ Šã²åꔆì0!¿+mVÕüQM«J»T1¹’Þ§#"áNF‰œìÈÇgü õ·l"):¯ƒ]s ïìûÈÏFO®DËièÁÝ¿HˆV ¢L쩘þdÏ ÉUoE'ãYOm"b[˜K¿’ìÐB¢hS;JJO‹¤DŸv“›Ð×f€íyš²s3=ŒµYT[sÃôƒ$ÝÆ›^g¾æ­¬íº^¼†Û*Ö·ÙÆwv{´#BïÔ¾ZšìZ—­#0M8Ñ1`xlD½#À÷‰G‚ÞLÜìj×—¹Tõ‰¬ÙoÒ¤w}f÷:V±U1úÏ_ Œ­&Oßã“N¸Z2'ÒþUÝœ•#4àk ·E.òORd}õB²8$;MaIÅì2&v8êBë³ÚOw%lcÄ©eKìÒ\)öákˆC'‡ QâCa 5)Âqìbå¤AÏG ›dM `¸OqH=Œ5LpDAiµRkµØ#³2¥Öq(³al½$ZÕ\°Ž§".#i%-Š^Ûû¶ÞË/߉ƒÍknÇËÅcµ¼:ê–,ÅúHFøŒ5dw‘ÝÑ—ÓÌ.PÕæç“ñW=ž¬Ë¯‹.6z![Ǻ٤ÁP·9ê׸¿Ù¦5ÿð‹ôRþ&uˆ/ÞΤÉ\ÚùÅ#÷¦/d"6ܶZo.£æe"@q©XòÆ&h²À”íûUcÂíV]a7»ruö¤÷ýmg@¬¸1¿k½R¼9dôAœÙ¼Y²¾aë•éVÃñ"(æv¸Á»UÚ4-î¶"ˆÎ™3Vh@»¾9ŸùìÆ__§¬–m“#~z‡¨CíÛtÖ…æ–h¿ÉOô®¸#sš»É®ØÌLÖ+í/RÑ#G¦z ê ðønþÛ¾ù žÝÁeÏ®fž{³Ø,‘>ƒc³á‰šBìâlôOTJêp_ͱÅ¿hHvèÀÙîz¬>qû¬H@}Üv<Ýnkâ«=;ÍÆpŠâ]»Û¬~Y8ÄW”%S'ç( -´1iÓ´U¢µ˜PC¬.K<ÌÚíë?ðÀV$[Â%±ÛzNK :¨¶tI霃]–Í«p8àU%>€”¢­Ðu·µº³{˜ZgÕ’Õ£bj­Ô3d>)WëV‡&ÓNsËrưr¶¦¯¢˜¯«õ ÚXlºW›_ff»'²!(bvõ1òlÄI «Å aö\mÅÈÀmó´Þëí|K±(Øå,ÀAsóo³Pî네3;&Ü ‘KM„Žƒé·8Å}Üsþš¸/Jå3=‡%qŠ zç•EÁQb™7èÚ‹T‡œEìÌ <ÊšÎWiñÓÍâÖ™»:ÜþH@D¶RÖhR*sÉcÌÜ# Uë)y£/8GìêWlþ«°óæ+ N.Ü> >‡‘ßj†¡áaT–ëÊqX&(/jü,ag”Pþ6¿¡œB`0O¾ÉÜm‚ ÊKdG‰‹ÕÄöFóN™Óí‰òã)<­;dT³ ’m5í^…g>›EFÎbl&eZÍ ÂHé¡/ ØÀˆ!'P¬IöÑãm9±wŽþˆ V 9˜{Âý Òï{b½®˜·ÅÃ?þçi%W¦-XïíÜ鼄,§bVkwDLŠr€ænóy€èt½¡Ed0$2Ôz&ûà•ÍÌ'ÔC¾ïßmÓv‡Áciœbî¿£ž¤5v^Õ)Û*UžÐ!ÕD îNB K€rFøT«?0"üè­æ5p«ë¥K÷ûH‘µÂa¶}y9ãL¨Epjp"ðSÆâ> 4Öa‡>ë|Êê›7ùMÎáï‡ö|ðåx7|,ÃsçOëÕ‹)±‡bb‹Lþ5˜z€ Âü̸±Ùõ„›("*ÅÇJjJ·Ð¾em“lìˆK 6vžëÕqD„º`Öd¬ÝäLŸ¬ôœ,ÌB®ºü“ª+û lîÉØÂm.¢S¤„ß HÐõ ,#ò¾(?N|ÌW³i¢­ˆ{ÓШSô˜§½ˆ´ã ØÔûyÁ8À–¹ö4"T¿"(ÙΨ_v¢Í$Ñ[$E<"ß㊒+Ê•«ñ>¯àƒ7Æ×Á˽]çuÄ7Sïçi²ì{Ü•f¤ÈÙì¾Ùî¨(pmú´¶%¼JB_ìáåi²ãÇæ¼„´TÚÝÚn»Ž pîFýw*÷é1o±M|]ɦ;¾›å¢·eJœç[Yúï]xX3„pÚÕ" ۵ƴêHNÖÜ‡ØØç—s^yÚí£š‡œÜyšl®¥ò|àjQ¡Liâ/‡íEm´yÏñ¥t­Š—mAž¸†%QBà‡a´…H¼ÚÛÓØíjÇÖœIåÁ«µ¨žè³cúfª\h(F8ÅyðRû…Áä H#_Å›ÕçÓlˆêÄ‚†ë†ÖÈàLÄÂ7ÛA ˜f5qêÑùÄOúÖS!r=§yk+¹UxœJ!t†è ó)pÝBz"Â*gNóûp‹¡ŠÜÃóÍ~µl"~¸½Í݉a’¥¶J}¬í°l›ü§º¦Ž× ß­žÁ¹©\aTM¥†o`xzúU/ßéûÊÛÄFR=BNšm¾ðôĪ\[¢T³ÁeOôg5Ñ>aTfN…EÄÔß#[  îÕý'¥gE<Ö$·²«Ê/M”põËRÚ·÷§Ðû±ãŽó˯ãÀûvn¡óËkÝ?’߬T¯‚ó»Ùj§º_ÔiaA2LjˣÏ5ÍÓÚ›h L+¥-ÄPĵùÙΦÆë÷ Bô%#ÀŸÑÅc90Ÿ1.àT;ÀU¤Ã‘¦«‚ {VL‘Kaˆ¢9¥º.8&¼àد¡‹)\Zt k™@Ãøíi(ǰ,Êp6ûj³áfêö¿˸ T¢ƒiwŠzc2S¸VÓçÚùH€º{J{±jñ8¡lEu“#¯d&dë´aõ[Âë*Ÿ?SˆpÞ¯WR¼I)Q‚î+%ª„³ˆ3¢ô™ü›—Áœ½i0(á7 ´…Ñâa0¾ò•(zÃJw³"$jânãÀ)µƒü€û*”䨪rîDYuH¤9íÞ¥I»›r›„d£”A.é «ä&he·(Ã0÷Adu‹·<´½[Ö]#6EË¡Yfj5:¹ÊÇ!y#¦ oàÏ”v׉õÇÖø¢¥,o‘ÐŽTö¶F2è ß#D ³9[ªPe3Ù˜» ê,!´ gïi,á¼ï…b€ÅZÇ dîØŸl)Ï-ÂøõPw »úvFÊS~ Úƒ3f Û¶ŒÎ8Âü6ì¡û^<9k¾OHùè2÷u|ë<Üú³]»C©¹|Ϊ>þ±;r¤gµ­K7[ÎL“pèíMKÉÉñ<”‹s±…µ¦ŠV6Õ!bØ·^ê´¾8L÷òr˜®à?XW°9Àã4Ñ™RÑ!ZuÙ€6‡ç*ýŒÁ· ‹2…P? I™SuØ‹×á–3쀱h¢<þÔqˆaZYM–v…NàÏ3ú0#½jÔPAºAWþêC¾²dnfù> ö°;þmÅ¢°h6£½Š ^§ÍšÍo¿@§=·ªaVá~Ù‘˜)8»nÅ>ÞGµ1: æ}Ç{nñ² {½>õx‰Žb‡MÇÈÃC;³L~¸jÞMÉ×ÐD ¹Ó½Œ05{8ÜêùzϧND_Ö×|ó…€Påï ›‡l§E)Û.cŽ«=q½à>„·©`"ØÒ͵æQßGð¢|Byœ —²Tµ 5^}üöá—æ;ò‡S °?k´‰¸ük~hpu~­ìË€ kZÖâùäîä•55m8ó]ïÒéå·å¨Ê+Ÿ*9÷œä2,…ðʤÌÄ‚*ÒmE«´ÁiÆÐ #ájo-Ða6&Tß¿+÷:—¾äeKXÊd,qïF{$GΞë€Wº÷ q¹\ÊðÔX”8¢f Èy€eö³ÙEÚü(ÐðÎe…¬D9š1Ž!×»ÕZÁþ×1ø`n9âMÁýTÞãë0ù‹ÒRú3?Úr¥ÄÐ?a‹]$¶îáŒP-vÙÉÿJN­Þ›.›†ddÓcf”¤N¬«žÉBÈ=h5âœO–‰ÏTÒ„ÖÀ|:ÉÃH´ƒ0Ú£®ô°îhy©VëzSd›þFõÇ݆ױ6½®< ñt%¾8r[Ôb|­9m0Å|;í“i_wÒCq<@3÷V?³À–ë•v™K¸‡ð—ß‹ÿÂuÞDrƒÁóÞu;¶)üLñÝC½ æ§_i ž‘gJB ³ +±jJOÙhÉé"Çî~óœÍ9ïíX^;:¶b|3ÂýNC»9ìš>ÚÏœ^ù(åŒi§c™Êk‡’<}”Ö[djå¾5oœoÉ"iÛ úÃÙa;êªa¯ýìD'í?ŒÈõ3CߌÇdÓbŽ£c3I´49½iVØ=/á¸(2Ü!σ¿pÀ09gZÇ£e猜4YHN÷§ah¯å£€AdæxÑã/b¸·öË@F4»™{{³çkÍfh[@Ýu.´›ÌþeyüÅEØ™5gÛÜ{¢ëoþh9ìCesf&uš^£T»aÈè~~¹hþßÛ¿!ÿ¼c¼VQâ6é$ÝüºœfÂMdx\¬<®ðÇrãËלDf©algŸ B>ÖÒfÓ0½P{m»¹’”ÔfŒ#‚dx¢¿®ÿö×?üû¯ÿò_ÿúoǃð‡¿ýõ/ÿí›HŽ"ý¸Ówq0·ãÆB§Ìx´o *S­üq†ýÓëGö¿þ_øé/ûïÿ«Ê¸®"}üo<Åÿ÷_ùÇÿù—¿üûÏøëÿù×?üé/?ÿûßúñ%þ‰ÿúXïúú yÚÜúÀÿþ¿üyýËó?þùúþç‘^ð8jºþâß~þ«?‘ÿùøõóùûèÏþ¹n_P(¾½\Z’òį\®ëßÇã Z€ ˆº ùŸþáéÃÿùù[^{ÝWŸJ3²/¯òú\_n—ß~2šËÑ"VßI&Ïm?6ˆûDw: ÄÎÏóù“½ÜW¿+úùé§—ÎrLP¢RP ÕØ9â5…¢šeÒlG£T«ZÛßp87Ï£¬He’AG„xÕ™¨p)26ç%¨ƒ‡1 PIž‘œäü«—Ž¢—2*'Cš§†îúø™! ùA•™Á>5!ÙÜÒñ}‡Ü2ây<Ê¢ÓkãÇ1Y MÈom¤íË×JVм%SàÃnT™‘G¹ÅÈ´gé›ß7B ôÛ¡cÙ|]?-þñ—?üíçD€Üòq$}ý„ÿè|ýê€þëñ#?†ø¾ü‰ýù/þ׿ýó?èÒãœ÷Õÿþò§¿ýë?ÿC÷Õþïÿü»$ÂÅ¿úOÿíx׬bÎ}à©+¤{0¿¡ñûžCû×ÏÂ_öOøSýãkâek slæ˜î‘çkI—´VèÙazÐcˆ$çtâUE‹S`FŠœæõŠØ€)E€D­9¸wöo# ÅõñûH$Ò³!îÉ´áV{sjòæC{Ñ„à²›Éø­•ßµ¿iÿÎõâfüpEÅE>ggÄhsº•e7gXškw1ƒWAõ$šs’錴ßÇ·í`ægL{‰Ÿ¡!ÂZnx ÇdÂß«D ‚³|œ_¯äþfÿ²do‰n·V§kŠ^†ëƒ:³€¡þ:íˆ"Õä™ïY%u*út;?,¢vå Ã:£«<Ý»‘ÌN˜ýÍÂÜ"7tE–<êÉý_:_¶Oÿ¾yéï´á Ïs"Ú[a¤P/æb™B‹ï&vºpìžCvV*¤‰ñNÈ5‡gÙ9Ó~!‘'QYÏö¾|z©ØLÁásXoˆ2#¸§cÏîè\ÐÀÚ6s›3‘ë>èJpôGDÀíu¢ïµýz¥u–àú)[(ï°ÈúzIþ^n§».aø£$’†©½µ‰¸PÕ,O¾È‘^’K1dWå%x:å?½6 ±JlmÞÒdἦ匥¸Ð ±ÏïÊ=ÝàËËÇÖº/±äÔVÈÑÉbëkކ¿'Ô&6‹S‹˜+öÖØ¤<—©©¦ô±"“#W5Q‹¤½L~`[7"”'ƵSþºb¿`“ã÷$Âmf„r­W4)ËL°×G× µvjf®`–.¿oÎæ§îëãç?w§ DûÅN7/òO»0V,Aܲ®`ºn±E°´°´5š³áÛüâ¥[lHôÁÓ‹)ÏiQv¦Góœ:Ôí÷“0õ3WÊ»¤ˆŠL0~NdǬÓ>oV,2ÿ@µÞ½±6š£ìÃúÑ»c¦¢ÙÛŽÓ3¹Õ(k³É)`Sg‰y˜®Ø’D<¯°…Ö±e˦ÃÖÌÄUCàÔe#æ}Y¥KÇ!æ1yÀ'æ:|ƒŽg»dC9xµ}ÚáƒËèÓ+ý-,õôÓÆTBÅ´ E¯¾òŽ%_7OǺ´çOØw[$ÐmW«ŽENxRÑÜE`¥£)¥Ýs¹ìðÙ5ê¼’m‡æžÇ}t¼Éòh¹ ê­ëÔ;vø&:h & t¨=Û€Eó-Rtx ꣞ß%á‚´6,â2_)¨(Ü%ÐOr‰äá&=qǦó±èd¹ ö©¢î,!Â<ûé &c^ïjHŒ™zÚlf9‹ŠBÃ0ÎÃSŠï³!À(§¨Ò®ƒ‡ а‚ã¨Þä±?‚@•K‚ê)ÂÙ° HŸr="o¤qu‚U†·qVÛ[ åHC[ …(w¨ž@§"™ÜØ…dQ`pðø/2:±›#ºLÇ%;¶¯Uø`HØ cáNÅçöÃôΦ÷Maý;•wí|xóEUïqˆüä]­™:oÛû húÊ=FÝ®¨3(f(Á#ìMÉ+x 8vL‚ÑœZõ‡6Ež;±–Èû[÷eBd;g/¦]ºªh‹‚Æq”$++åă®Wj¤q¥û ÌS©.¥(sâ¶ÂP€Ûi‹Îa¡½‹Î£v'¾(<ôÂrÿÅ+>|‘`»ËÓÕöbœœÃ!+7ë¹1!1.޲ì+ÃX"NñÇ)<b($Ráx;)h3ìEÍÜÑœVKž3¼•‰pÄ*Bi¾<úŽu:J&8CòÓ°hÒŽˆIÍáÃ!ØyõÒ/V˜Å«èÞù˜¢¸ñ¨Ùôµþu/ý_ë¯ûJG}ýôƒþòå³q}Ú× Š½ŸµBy"è«>S«Öƒ7럧Ã\¦ý$ìè×›]Mòj­3Tû‡&Ú< ÷t‹Í,† µ4©ö…sÎNJÓ‚O†É(‰øÑ- çߥH*Ê6Pµá·48¼f¦d,:‘uÀ5=ªè ëÑV÷ŽKŸ ­å ©59*!]šaf[ì=°¹ùCk;6ŒÆ±GÄF*³Lq<%°ãá D¿VUáïò|¬\»Èº[OËŠ¼{ï‘ùùO?ÿáO_ÛJ}•ð1Ó³Èk}8Scœc1šÖe¶¥ÞtØž>m^)uMsóv½ñâðúA™Ý…ÛweÙèk:ƒÄMuBùò•vˆÚº;’dÐȇ9^r Ê#2 ¨q.ÒMÚ#JÄ™Ôz€Ôfå+Umûáç¡çç(ÈšÚ¿e®ÆÛº£û\vWëušâ=Ò‘´¡ëÄâ‘ò2Õ÷ŽŒ‹î Fú ìÈ`‹W{ºí Ö,.‘Šq„G!ÁI"•Zâ¸Â‚ú8Wö{˜ã"ýµ6t»×屩÷ðhë øp:ö˜Ý©v zzü_¿æ@ÕƒcKV)®×j°%ŒèÒG3Jsx÷æ¨jcÎ,¥ÏžBÝN9™húÔ­µ)Š clÑqî]iUS)g… =²³R&iÀyX$*y”â[“ ñAˆ¶ÅE”ôM¼yŠÕÜ,% r5\Ç28B!’b“Ó5­ ÷H!×%UИx½êm[ªjºBv%ùmåØî§M´!ï üÊ×fø‰¤hÕ8;¯¼&ÃáX€((.ÈEr^˜>jY(¥í+•Jó6B.coœâ÷ÍÀ%9%„ >Kl º|óåRä1“aŒIìŽâVe2Sä—IÒ±xŽ×šNB 'iJ´5[‚ýpT-ÀÜñóp¹¦Î?$ÖuÎIÕ¿Kt-ü"Iê¡÷6FÄæ|þç8B”£¦–Ì핞üíx çÐŒ‹ “›/·øh‘þ™/é·)º<„» ß™Ic_„³d9ô£9OŠo(n'ËR„דŸöå¿iŠ ™Ï„×ýL Ss ÙҌȤj_Rú[GD‚“—Wºöšµº“¬¬€Åñ vþ& 3Ì6äYƯRÈËã)o»8Fk|¿6ü†øŸÛ½t÷ GÂÅ"«OŒ¢.” ñÛ&•5›ñ¹p’#>é™.c=fFü8ÐOÉ*×mWt ȱ۷X­¹ÃTyG£ ÑäOk¿§4dÃÁ³ÿq2¨—ûê­DôãæÙÚ¦Úþ€Gä¹+εè1·5 – –L%×¹JšÙCù‹)¸}C)Ó›oùq:êTЪÇK‹^FáºáÇ#3n%îŽMJÄîÓN“†)™§™ê¶ #’¤…å=œ(ñŒ¸?*[!ò883»Êîµ O„Œ¯šëYWÊÝ¡a—ei{g‹¨ù¶‹;ŠYUöá¹~Ê!ÞOwCÌÌža5Ã|»œоâÀÓÓÛ¦n’ís ¥¯]ÎøuŽÖÈg‘^w¡e ÊïÑžÐ}+ØÌ|µo^1¬‰ê >Ž_sxm>s#¦Evf7¶í¶Çóp¦íÖìL:ÛzWõ†j⻇K¢ôÿ‡DLJîaO©™ÀNê†ñPÁÙüNE˱ùã|™ÿ%~¢ñU[³$¥™l—‘Â#œòe¥ð8ƒC·È00[ÌæÔÔáK«-Ö©&c«Š ªr/È)憰¨¢{u:ªƒ±…Zjbï=³¢ô²ÔÔMpðÒDbµ®³Ó”“¿‘¦<ª5¬Ì {sñŒ¼))«EðFäãÕ•\^™g[yëðÖŠr¢‘kˆ†&Ô®©¿Ü÷áû—0™Šjã µç/}\&_@ìøÚúñ0&S¬Ü`¸VV8U=»œõJ?߯4 Þñ¨Ž³È˸V~µc(×Ìñ™<+ÆrØÉSÊ'Qj€C~—OwÕ6’™~iµ‡mY•LÅY=ÅJØ€¢‘9[ÏK6 ;VB5á)¹zÕ&Zé–¬ŠÑ®’¨cŸê&ªªFÀIËfºùÉ£Ÿ;Ïö²Îv9hPÌ+ Ô¼"Q,)"r"b\Dì}‹Ø/•SJ+çŸkˤZÖ«†ù¸·aÙøåð‘c­;”͹ӳ$¯ÑJ0ŒÀÔ`[Ú3Å6%WÚeGŸH@"r$o°~ðÙZu]",ÀSJÊ®‡ü.è¶i“Û†ÁI^Éåƒ]hÍü=o±³ÈÀ‹}Eø©2îUw„…4òà§kœ=Äñù0mùs\<œe»52˜‚ªžÆWÅÆB‘‹SÊ¢Fžî“$|8 §>‚sC—ƒ2À9ÌJ´Çf‡Zœyôã=ÓÔµf»4Ày0cƒ¡°*ò¨œXã ¸[.Gâ½Ü 7‚8 ¡ùËHPN Çfâ„Iœx-EštjF}êòúWîs·,q•÷»NÑúâ^ÍÒãtæžì—»Ë)dªa‘ÞR˜.ã~_ó©ÛÊ#Ú£™ Dîƒ %pí‰øö¦Se+YζlÏØsí°‘¢Ð=íÊά.*‰Ôyi÷“…?mmTç[t¹Pö'Ító‡Aœ«…m‰=O¯=xf™ ×nÜ™h&ïApHCãŸ-bbÔf›6ß<’)í&Cdv'Í€ãáÉ8Û Vt¶@¹9®vǃÆÉÖÄúº|¬‡‡{1÷¡{8Î3NÞn³P˜TgÑKyöÈݬÆ*û.Ø9wIŠÔÛªt¤çžõl48§Ø×°áü´ªd¬ÜͺB”Óú³’¢vŸ:G$Èu¯ÈÃÏ~„¤¨„û°3²»wr=hûph´AMé[çÙgçiìÛ¡carÕ-Ç.v¿ý-pÁ¶Þ4ïf €9âeUxì¶ót3ÀöùŠxˆ- œ0GƵٿ1r¥8LÏTÒ]~P|*\ók—~Ç&qàØ*zX,¦îÙ‚Ìæ Hzê¶á<¾ËbŠ.²i—?6Ã͆PÛÄXE÷|*éÓT:nÉ-‡ù§Á4¡âXâ0„¨6Ë^½â\ãÓðe[0wŽìƇc-$B Ö¨ØÜŒsnãzøž¥Ì¨žy@¯ðd=žÇ9+².&’èUOX(žÒuyi ¯@n¸rlù¾|蟡tœ¥Æ#hümF䦮¬%Ûßz0»Yš¸{‹ÈAáIgX¬:¿‡ç(î ›Ýü”æêÕÍðÍV­â¤ú!õp`íùŒ¾)¯AQå–P!zl¨z¸G­'Í' ëZÖþ9EÞKAމž ÊSüv⓪ö9ßI¨§þ®1£Y¡è» ÃåN»“ñk¾_KÕ6¶îš,­^V–¥f{°Æ¦˜…ѵን8ùr˜Nv“³²½˜Y)¶XÓA7ôœ.#"fËâmÜ$ÍÞÌ3Ç”Óq(-:n±ÁÎU£­m °oó¤«2oJª¯9ëÊ9Å:`‹)Ûé+1D‘=#µi"ììÂWÆDµT¶µ±ž=NÁã±ÙZWzÈêÃý¸ý³’‹¡Íí¨øNîö8ÂÕ65dvÆ’Á’œÉ 7@š(:)š´îƒ’¶Í3«9žf,öv«a¡÷’üIãR AáæÙ[݃„n 3WY­#Ö&x:kÛ̙—cƒD2| ¹¨Ôè±L¼Äbó2Cœì°ãÒš  ˆàQŒ=ÍûóÏž\„at“p§ù¼Fáj%·XÐ[³ÝV´zË3&uÛÝDï}+ë;L%r$w–> GÀWPs3#\ 原ˆéצ4ãÓˆ`Bk« å{^'µê5uŠAfôP8.m¡š5˜Ö‰c¦6í‘`)Î7ímDZjAOl’VOªf©‘畉ŒàÑðY 14F££“A5ÆíÎtL'=ÖÇãI¼0;å$ïÐËî ¢Îwxi{F .Q·º‡A•ÍpŠo5:= NW5uG®½ÙTzÕ´ÍW}¸ç¡Qb4ÍR׌=™M;rPD½ˈ–¥ ƒ¿.L ú…V¥Z¬¹;KcÌhYÆ"í$W¤è"™ Ój%ãìaèN!³ÍUE mq@(#Ž>uÎÔÓŸNÞuÎG…DoOJÕj»ñòÁ2€¶óXÎ+cP­[I!í6ô+)ˆ”*Cé:aáe8U‡hæÕãÉbÔ‹ Òb'¬m2·ec^<\œhj`óGûN‡Ÿ4‡áÂ+ y -+Ê7RE“ ×~¹ÿ2ÏãØëð|hDÔ¶¯ßJZt^Úß¾CXOK11¨ás“Ö_²p3Á¢óœ ª¨ŒÚ©Q¶ã¤Üt®lÇ1L¨l-*–CŸî0[÷a£ÑäÍd̸À‘&«ñøÖØ¥¨ )k`3—“d[íÉ‹ÊtÜW|¸ ›T;%i“Éql†3Œ¾ÏÐã¥Å|ÀðÌM[$Ÿ‹| ƒ9öÓ£Žu ÒœŽbÑù4zV¦m„A~ë÷}ç\8êâ¤A’È2®ðÎjÎz¦ÀëdSö¢±Œ‹¬z–.¿ŸÉîßñ¦`¦B>òÓµÙ©­›ý7‚W#ʽ°½l‘6“tnÕÕþIâ`¥}vì¼(ñÁ×kËÍa‹¦SÊNÍÁ/t,ìmPBç“TÃ)”EÁÙIšöw~(c³DcÏʵ¦N,¶xt`}Š£öbÜã8ª­‹är"Í‘¬ê2ã¸G_¾¦;ÏFmÔÄò™¹ŸtÉÛˆØ8x¥Ì‹ø&UHÜì²3lmõ¿TY–¢©üåĬe¸m¶îë¬ùæ²îœ¯O†k9Ù8¶a®„ËpoAGS,b8–¦Ç•öôcÛå5 ¸$ñú†Ï¶!:×è4iŸ+x–mµÙå©6¼ãCôpPS'Çmx:¡¿N£´ »Xv5ÈðºwØ7z,jÔzÒV8è2-¯¾âû ú÷À4¢ÆQ¹ªô-TáiÞ\:ŠB&–w&{Ô" †š`JºÅ9á@t˜Žø@¦Ëˆ3 œiÒ46П´‚p˜ÓfĨ8­Ö£p÷"ç.”í+¦‘QðVà „Ö˜x¶Ûò79ö È¹=á_0/ÒÓbk'cr®² ºe8¶ŠîrÖšÉ žG¸öÚÉQc±€z1 *AФèK¸’ëSíæä#ƒvO- ›3ój•€&8Už!w²ŸÿßҩЀÿFÈ¢<;Ó®Õéª Þºq¼´R ~a ãã)…ó Oýîj·ÅTÆxã–}fë{̈JD_8d‰æiÑ1t Tü ]€fxÇL©ì†‰ ÛÞ¢ùž óâÀ¤b²ßW«â®Ð4aVã,”à'ìÛÄÄýâJéûcøù5ÜÝn;nÊÁ!K{áûnžs°²¡?ç LdŒ?sØãq©dêl›Ïàü•už$(ËnMÐÀ¬Ï|j¶j“:?ÝÃn|m‰fÂ]¼’aÛ‰‰E7‰‡ãwoËk>…,v §çÌ@U¹œ©œˆö´ˆ”%”ŸšæaKöp$_vMŒ©·a‚K?¡•N[H-Èp²3Æ9*Ëðã„Õf¬ÝxZª€qÙQ¶A[®±läöâ„&4»±»nÝ4f—b¥ú£êüTcs ¡œ' 5\ ‚€Òpmš+Z2S¤=|lo£[üôRÃYsËÄ=Ê5*퀇®—v ¼ä©èÔ_‡š°§rA„NÆñWõô¬Gì|pÿ‰sëàÌßdÕìl²ix#¢8UÖÍÇŠá®\ÒfßËatÂh›‹bŒc¾ÊDæ„tsåÍåe¢yJä™j\ë}KK6£aCjfIB´RÎ2Í’«ºæNfÒ×^z8ä„Öå|Q¶Êy¶i¹µT¢¹@¶Šr¥'¨i¢i4ì”-Oaý¸Þ9'®Ú†Ñ¨«¹w±þÃö,†¨õ°Iûnx8\vÍUMFoÍDÚˆIò£#xø;Þ 3®FÅm~1ß ÷ô˜hʼnÝ|ó(pÔ]£ö<¶YC<¡o]fyÒÛÿ+F=®“ö…8ÿBYî2†vóz™J³ô|mç°O‹öP5ß§Öa+d)ãrb.R$ê!MÂB‹œ»k4ƒ|¢ü*}3¶—¿3°@ÐW¦i¸´éf¦ ê6îxæ·,>p~[§×ùh/޹ö!ezPËÒjo.«Ëºù*4ýT NÇòÀ© Z¤T´e<7.pۂmÔ[Ÿ^YõQ6þü7ú¿ϱ4÷ÇRÇÞ“Ä¿ cÆ}ŽkÊöhÃ#üq^nÿÅf«=vógœÝXÑG5´«iÏSÂLT—!ÎðÞ.Ž‚Î;û]ëùƒ%SMÑt÷îúÏñéd«fÀŒÂQ„Š{Pð£ð±îíŸü^Þºl{§ó^u’E\#k54ãGÌ•ù„ʘ7yy ZLêŸd•çä$á”àK¶xCµÑ×ÿš»³[¬Ã-k6WÖ|¿-&•9WÙ'ý=fÔ.óÔ@è‚g·‡t蚌£ ±N$Ù‰:Êœú'r†õr–#7ƒ¢¬gRo§ŠJ“ }n_Lœ"û°®VódœhXãL‘dY6"A a‰ÅÒ(&ss.ßO P† Fqív=ÎÛBƒNrù"së)Îövc‚”|N¢…[o2õ#ÙkÐŽvñ”Y RÝBÙB5Ÿ°©cØIžíƧ€H}%¾æ9œ~,u¬dzž‹ %f÷28 FÓ¯ P—È7[µý$èùo3ßð=‰À{>Ù/+Þ,Ÿ^ÛÝaôA5ðÐeCÒ½,Ïß ¶h' æ»Ç§+hgu»sÛïæfÛIßy8ޞȡ$%\µ©ö—ú×±Æ| ÞÀY6Ó‘–Óõ¹ï9áoP´hƒ;— ¾AÈHüêê¢;ã¥6?ìŒ#Ê«UÎQ‰<ú2îô<%Ÿq´q»(à—«”"àJÀ[’øS— ÐàÞOB&(ì´ƒY8¿&'²ß}ò&ŽPx_”15÷ˆWà›ÄRŒzÄLç qþebÌYÏd(Ò:Läïdäí¡»Žþ(‘6³8Wá[N-¨5¢À(¢¥@©4”Ö\– hwÔ ÷àÕ3®¶VfD9ÎÎP† ]=v4N’åã­XÌNvâF²úqë]uL†¥tÖã¤÷8ßëF>ѯHÎ¥˜dW†Æ”XÅÕøÓ5µ‚xF¨¸ÖºDÅH³Žý$‰cá%‹Š—?q³!‡»ÎÝšd4[&)O|À«ùe½èˆu¼9±d|åÍ¥¬Ñ0Þ.wòÊ͸X&#þb€Ñæi—`8Ûõùy·Êá|¡ÆÊ=~Ý·¯ü¢Ký?챪k| fZÁÐ7¹Š¨³x]’ܺ¾eº^ñûßY$¿“Lùïù?¿žÌÿŸ~À³ßÿøóÖßwÿóŠìW®ÅŠ¢–1òOÖÜ7¦Âþ'\†ôj9-§Y¿ë8^(’â" MÀ•ìsÈ3ka7Ný*Ñ3Ä”9X¦ fWa—…îNP”sÀ›Rª‚Œ}†ÝÂEæ2êÞŠ3d:ÂCU£dØ%0 ]`¹>®ñDΖM²•EÖ‚{LN¿ù¶Š^ø°Û:š²C€+N¼‰æ]å,/Á2éQÝÂQ‰¡—ùgdŒ>̆ëà‹iÚ!sÿÈèÚMàš6æ¨{Sìæ½gµÔRÍ\„„ÓD…³‚l{^Ç<=«§Ž¢Àºâ£*‹\=ª¿±„£Œ¹|Õ¶mù« Ò§«9«®m 3÷àM[5.ºÐ“&c:K[×x¹Ð-kˆ„M#ÆÉ„ùÚÀé(ë"réd‡î‡ß°Dªx ­¥Ì_Rõ@CæïîbY´*\ÇMÔÅ…ª¡BÔYmF’§úuͪë@>,ª;gµB7µ2ÈŠFfó>r,èîÝЃß%ZAt%¤K„6ÛÌ3É =k ßð50ò­p ûðh},Æk–Û™*Œn+Ö}ŽZ^-6HOž»8-²OГ\. —àA¾ÕuOà µ†¼·Å¨³`>‚}m÷gE‚-‰%Už.Xz‹Ù¯¢ÐÍÓ³Z©ÜóE`$T©øoúHƒÛb$Á‚‘ËÑóLcØÉÙ£²_$îH,TÌꜜ=(Lží†¹ès}3ËS1§oŠ”Í} [(d~fœ,`¹-߇lñ<³¢™WTð–½á…¿úš~wÍ{,Ññ© æ#CXˆ±ß7€7Mòƒå †½C™L—àÝÓÁÂ é ”P¬f\äìoÊJ+ó‹^ž"§OŠRaÀL†W,Ó’ûšŸŸúO¾C‹ÞDéƒÞ¸ƒ‘!K°žŸ^£ôFb•;¦¼°ˆàfìÌk®å ÷bsk5 Z©ì!D%Ù£áÅȽî{¢ªõ=î; <¨/ wS:vïî9Aе›JZ´Œ 9 ©ÍF‚$&ÚN~"ÿ×·¹˜¼ÑȺ™Žlèp?R‹,æÅ%=ÎÄóœ,#“ÓôŽæ‚¥½Aßî;ñÃy2×[ø N@§oÈLìc{7ï•ôWðœt[>K–AÀ]cÅÝÞãñ¨Õ¥¸É¶’ФÜ,‚¥®‚Þ{¬}ú'SGu·w˜€Åç„(3ÓtþõÂ`/K°òfH¤™’i”Bõ­uXwŠQÿ ‡>lç»7K\×ópáê?Pƒ&|B{1°O^†K†…Ûd-³†ŒÇ­À csžÌõèÌ•myU9 )Ú Ÿ¯Œ5b”>†Ñ4·àx<Å‹ðê.]^…£œ/ˆ~?¤•Ì—\_O§ Ç䩌ßÁ¬ÆðPùß›™œš*™éÖ½aœ/ìIê·]C"²EðØõÊnYÁ|f«råkæœZз¿Ég",—nÊ(Ó3û‹¢Ø!T/hd •& ]Ÿ¥Ø$Ôf»3(y9¸~ïÔøß¤“ü5þŸ¿ýÅ>~kýÂ6ýe/ð:†å럱uCíaÝŸ€è˜'[¤€qzpª ¤ŠÈÄ#Wˆ>45!ðண…*¦)öUÁk÷ßr„¼n£[v4qø,¡¨U“<ž®7W¦¨þ(BŽ_eºk±dª¥Ò<òHމ¥öUå}Ï˸æ³€&9ÖMG5VÞILs†£!ÐÆéàÈÌ0)vqÆ3»0;„e8ÍTuJŽÃxÚ1†0wl#¼%ñ›©TŽŠ)&ãò¨Ï‰µ$sç£ÜX J° fŒá{àÀ¶pŸ@•JƒÛ]ÜÕlBoç-"F¤8×m]í¥Iì ±íŒtºá@–+Ç=à³EøÈ±ú椱#0üróªÇ•Ì÷V•Ñ…Á P¬úºC9Æáz¡®"lõóéV½Y&Ä ” 3µ}.%jS=Ý’5+»[7˜$]fB¥1 É~V—¥Ù¬.íK4ôÅìV`@ÇÒ>j¨tƒrPœ] ~[I\Ågâ°?ýµà®o¦>ZTëœ.-vCŽu³°f[õ-V“|í&›™IkdZæ†.BY¥Ca†>•Û|‡½Ðýdèg÷*ÛköD¸ßj[.±*±hG:9 ÀÉ9%›Í½ù4vA’ÉsÅF’jéÖì,;úÅK{¶ã=³Ãdˆ`·=çí|§ÔæS'w^Ô’ö¬®.K}a<~~]²qºFKÓw(Òkæa?®IeQèlŒå*¯„í3Èý(Ù¾ì±Ý9߯‰/Н]"þî£âJ"ùΉð*ê¥OÂâËù³‹3QÝϘЈ&ÛÙ¡v^Y××–,›é„p€Ãu¡S)§S„½™Æ#å¿ÌSw=¬›>GЧ¨6º ¶~e=t‹ÉzÄkÄÚ)F>âÚ éßÑÖÀˆÒÓàq·«þ5©;_jçûJÔ/t*öêÎ!‹>ZÇ^T¬p#àô-šE­³‚³°Ú+u] âfp*­šï7c5¡iF$wªè^¬-ÓZŠŽžœ-€?݆å÷°2¥%døwS“\¬U¦•Œ!ÀæEš®{ëñ–æv25[^Q£Íf¿ù”t¯§Ðþ®}®5°¶²÷º—]s¶}|LCf€Ì)ÓÞü j1ãã…N³OnWi¬á>ÊyDàè¹RŽIjsÝ¡ª7ÖªNñq|š%Ü sãú¸wL!¨c}JmHÔë[€wÉu,ÔçpD0ýWú#ñf¶5–€ù¸A7Oð³^ gĜ֫ @}x¶tÏë5y> å­²„úf±†]êakdº;Ëcå‡mÝ-Þôæ–Ä+xZ0L›O±ŒWrÖ&q!Ž÷É ïVuõ7ÓÞ=9˧ÔÞT;tÎGx’WŸŒg”xºx®ÖN#•ð$ºÅ ÈÇö ó4øÑÚù‹B ¼r<›·}mWïôß¶üNfúŠˆœºŽÛ®št¯fâne¥„¯"¼–5U5nåO/ÅO#͈ïëÏ/ïïƒÄàü½·o~^„c~Ø} ÿúúõ_œùÞeþg!¿þÀBèû÷d7‡õxZvaaö²G‘<°cG’„DBñªË¤Vÿt<ÓÝâívl®Š¦‚z?Eò—Ì ˆÀ£­¡.åYyÖPùŽ:-w´j–-'PˆÞ–6h)4Â*¾2ãƒÛ 'DÈò=È˜× ë-È|­ÞÄû@7®Ò\Ý6#ÌHÅ QWÚ!4KrÉbGkŒ)Yõ¬ÖªÜ=‡è2I—G¿fÅh®î2>?ê&MJ¥¢2ïf*¤ ž:ãr$þjLL¢ÚÞÌ×ø…õ°$:ƒÐÆwVÃ~O÷¼ŽàØ_†ÏÍÔ]*ÛY§»k`rpû#1Åæ^£~ØìÀ›vLQ-o·½Aœëmõ¾ï_‘ýc¥—3>_= £\ÈÚT/Wм2ó¹unvÆúÉÚÉŸ€ÎL"ß¼ljR¼¡ž?q¢6úâÈÑsæDöX Â1cTÓ9‹–sLŽŠÃŽÝñN³…sjZ"ŒbšÏ=ÞòÀфćXB~¸¥0X×Ê_Éöè,òÛr ã•f/™w˜RßõÅ+˜­› í,¾þ¼yùJa®çý2×¶ÎÂÇf†ïìÃa’V-†çâéUù8ù+MN$7ÇÉUl {‡óË\"¦ÙFÚÎã·¾°l`À{OéVv}»Ödrµ(,¶£,v0¸ã긅µë.ÝÊJ§tºZdØ0jÖ •½½_ã3ºpݱº,fÁÃv9–òÿGÜ»íH–eWv¿b ^HÀ̱¯ç"¡Ÿø ýD)YÉFeéAúz9æZçXd†Y&Ùe-¡»ÂÓ-Âý\ö^{­9ÇDñ9ÍCYÐc*}† õ¨r šïê‘î6k-ˆ­"»Ø$’tà—îÑ\ÆãDÆIž_qÔO¬ñÒÒvs6¦î,CÄ|ÁE%u+‰%^×ï‹üms:L8×K0#Jet¢à‡ºL.õngI–lP Š1x·W8E°=£~w Ô,”09³œ¿ÆãœÎ´Œð8™^XžÕHö2†'ÄFs‰`UÆ¢ðOJEâ—d¾È”\<·¸ÚÇa…C„/×ÈIoËlFŽO6 Gó¾ºcUgø:Z<Œ„ E}O‹JÈÊÈê-úú´î“ÇcUã16W6ü3ɲ۲Pâ9{ýÎ6!öuX¢væ_¿ó¦ºæ1¯Ì$ÀÕŽwž &ZrÚ³äJ"îòI21PÖ=7Ÿ""„àAíLª.“¼ûÕ»‹wF‰<ç‹ÀfðúZ~¶æ}¸òÝ*çáóŸs›(z×P@•‹f^LSØ^IÓÎOíGаWœKî$¶Ñ†2# jô LÈ=õ&벹Ʌ¸{>i`R—|b›y>Êzdz}Å?[W¾>e¨Ùã§÷¹Š’¯9ò.¥µ-žJ5¸Òˆ.\&€?â i$‡Þ³b ·ÍJÏ®«…V*söF¶ã™Ü@ø4Ÿ\ÌÌÌwô1,åโqƒ€yv+›ÜüÞ »á.žà|ñ¸ÌŒY™´W·cÿUkþï{;~?­ú—ïߎ–‹Éóí7\É#/Ä9ìôcz³ê'‹C]îîwhiÁ9éwŸÌ+»ÉöGjΜsš"\§³†s¾ù8I’ôTShÜ탦ãPW¤jK* J¢NVáâ®›w+þªi“îS/©¸SqZ¥=a·Õº‡“™D´Ò×wó³åà»­ ×¸U§eÚÿtˬ#CVÎÎÆ¼Blu%mžån~ĸdx†ouUzý©G|ìõÕøìFù:¬äéÙßn”<0ñ¬b™E{¼Ù9ë&ëUB}aN‚E¾G¯¨%MgÚ« ó‹g¾}™î¨š °‰p »ÝÛ«y~®ŽX-yÔ4WÔ¤€În„軓ґ¨ùôïV‡‚J5F¿®e"Cî;oîÐg·ß7whiq¤žåѬ ‡fŠ>fˬ#©¸Ú+±‰dÏ‘[¯² CyÑLÕŸ|MÅÄ¿fÍÙ½ÙN9)xb:±Øln{{ÿeüØr”_“Gˆ™¬k@L]"T¢Æg°!à€2U\ÕVGøe—qdj4þûsÚ@+:¡Í! )Ím‰ÿêi²®¡îÖµî뙤@»Áy<œ+šÕ…4Òa­nÒ„wkÂKÚ¾ßU|–Í ¿¤Šg{x2Ð[ÍÈ¢B½OŸ¸Ðà•ðØ0ªäëºq|×–<ã °¤šJ†â×í¥v 1鿜ÝÏwÊ—oKu×.ÒÛMŒi¢™§¸˜¢.šÌަ£& rŸ—Ü0I ¶ å'4ˆMëØIIŠX)®zIöTì^úç£ öí×<˜àø÷‹æ‘˜vOÖ®³dô®_è8Òu!ã³1È#m÷¢è¢•ø‚8ËŠ~ ‘ oÏÀá¾²^–7«Yýpƒðõab鹚}kèŽøõ/ÁÐ B‡©U¬>Ñ!lÿíaçüekêg1È‚–RC-ØÌÂ8ù­Ã$IlÁ¶RÒS‹yMä²î7½‘Û#œèá’j° ßIfçú¹pè9>u<¯ïÔß½Nò}rä+©ä ¹<À¼Iôà@À°A.SܰõAèi5Ò@ç-±€8ðÚGWèâ :à2b[å‘ Šî\‹x¦tžÖïØZ~ûYzº>¿¼tï¼éŸ¹”t°õî2íh´”;†óH| c¡Ø¡5@kh*~õ•¿pèÙ,á~µ–§‡éݽ tОη3e GS.BO @g$ÖLÂoaf9’Ý–Ç»`€àïLÐäM޲ aMUHwU¡y|(Îfe -¡"ÕûêÄ<ì&° ¶éJ]uµInkŸê|ÊÀsÛèàHÊÑâ¸ôú.}V/ñæü:–ïMlŒ%qIåö9è“/Ñ»õt«a¦®šŒ=é-1Éê9-<7ª"w°®ŽIQ§&WùkŠžFª–A Atoõá\ô$,­/-ÓÈ EöçÃôˆ¥p$‚¨}%i,ðŠ­Sm/ý«ÑuZ éüRhfÃM²SnªçDJCãy*ÕMu…(Éw¯æVòü|6Lþˇ²_¼ËK}–¬E¬YGK e…¿£”Y¯TiÏãGSåQmV$í®?ÉÖ–k“’†ÕðY6w£UŽáy:ܳúJ->#u£(Ì[Õ`¥…Ô-°”Ö¿›ñµ•œä­+›îp[õH˵‚1šì4þ¯['OÒy lÌP¡ ôà@zÓn•·fËÒéê|NùEòöñÎu‘à¤gD”P2yÌö|Xy—ô?xæ¼Æ¥¸[l/‘LëWÄ ÕTŒøå¤3½xév2ôC‘VGš‘ÎPYcÁì0`AT>›®ì‰¼RË8úñJéâéôuˆ.N®´‘3°€÷¯˜›‰œ,á´¨yî+q\VèX…7ZÁþÙâí5Ô¨4ÀÈO|B˜’>RÎÃöÀˆaÐqtD|Žùj%Ué=rjç·˜/¹<}¥û¸ŸS6|¼UÉZB2@æð3º‡uX3Ã6KðMÛÝaA÷ötîN,®¹:qË„‹­òÇŠ­pøS~ꛫ˜ ƒïyïÖ i ’˜{È 5½!œ®Yï{Àì¶Q‡ÑhÅ@ók`³¡a×_¦±Iô%®rðð Ë!/PR0‚±\2³‚#b·£ïQKþ¼;ËÊ>jWÐ[MO}láÆÐû–vb *·tXe¨×€ð6¾eñ¥mÈ%Ãp¡`n‘Må+ŒÌíˢééC&VKʲ¸ñ åË&ÝÈòó‘)¤¨Ìoá Ü&;+&†FÎz”ð>˜–(e Â-ËQ;yËïgjö¦fùlþî•oá¾>÷5j h×Ì0)§Äsͪ°Gçï‘H#ܘ͗0vvìóÜe(>óòRŒÏÙïʷܘ×öÔŽhžåÞO… l &§Ã~i,Ús"Û³=z®¶lßLò’²µ—ÈÊvÂëÈ­õùƒ#-#)Cã‰æ£p$ìuÉ*‹Ù@(w÷n¸üpí¬ WO*~ìÌçù¿'¸Õ{R4‚7+<±h³õðŽ5>VòC ?œ>j¼Qš×ÜÊàs)äöþºe5>$ÞQF‡ùµØqʸ¤]©ÁfǸ‚.BUÂÐQ„ù¿j! EôŒš„F§¤5¤ŠLZpò–õäh®¹$=Âã Iå²<:qË5ÿ¨pIÛñ9ôÆT—p¯wÉIû˜ÒWþ`áHagIYúpSâq:ò ž5û0€ÔÍðQ6ÔŸó¹>ÒvUÃO§5u7)6jcM£°>ò"=BóCcoS,ˆª²áìèc“‡š¬dl'$㤢Žãú™õ¹­Ãàò4Un²Gg!Ucºý0œ‹ýÏ·ÞV^¾ãÕ^t|ÉY « ‹™½aë÷uáañlíqÆ0ÔHU65mÆÍAPFRO”•}&í¦w«)|/š«?ôÉ9ˆÞæ¼ÿåÁðßþú§ÿøù_ÿó¯ÿþ?þÿù—?ýíÏÿ¨ÑÎqgÿüÿôú%ü° íÍ™hMËþì©$$éy‹HìÄ=θ!ÝÓ”¬/TIÿj°L‡Óµ»™¾Ô­<£Óc§«U7áJq¦£Ž5Ûb&¦N¼ÇB‰^ˆ%Õ*ÃÁYmuè$³’±hÑõãì*Kœ@7¸™¨©óÝ[ ˜Î(ŒbÂéem}Ôˆ›`Áw}X=ˆ¦ vwÒ³<]ƒ˜oæ*`ØÕYIòNÝR7Ù¹§ƒ?œgÑ@¦=¤aOZ9`Ù6“ß\ó”­Ì0¥ž„6æëãûøQL¿>RS}Bßp€©fäÆbæÙjÑÄ^Ê4Ù ‹ÓµKo6=¹âfBèñÄH:°#ûÜÂÏ8?² uR?›"Å^b ¬JûÐÑ¿¾¤Ÿ-)ߌuzŽuæsƒc 9º„ÿÉ2€[ïØªn‘Ñ 5çÊ‘†7ÍÛ™„»DU­]7Éö¯L£žKæˆç§bì¡y7?€ÜYÿ€8ŧ×à¼XØéäΉ‘tµ5}öIoÈ4¬íéNKÙ2J‡rn¸Š³…Ʀ³ 0Âiî@ŽØõª›þØŠ²ÿ/¯({TV*žöŽ‘Ô£Ð fNSs™úÀvðZ¬<ÿî§€óÙÔÜïØœEMª…yl¬yR4ÒèŒÚqXáȳjû}nÙ“o½©?«m|x7ðÖduƒî©’≯'ˆ+I@+ ±äÒšUÍHx+ºþYGT«É“ÈA^º+’cùÕö×ÉUp2É*p+Óʺz&ÛÔ[â¶ÊD/qœ@´< °µCòŸ^é[£óp,Føèq¼v›~µ ÅÎk0õßæ®/iÌ=¢½l†6wfYCr‘¢%Ž5l‡`²Í*äÒØÚT„wÆõATM¤ì’ã3ë±*hÓFt¿o]µd–Hi3›Éõ²Wˆty|'ˆ}?~æ_>gÏ+Ùÿó׿üãÿö—û?ÿé¯ÿç_ÿô/ÿöçÿøÛñ{”ú½â»ùË“ËwÇ?“àö®ñG©ªþ¾T~?G’ÜÏ—úï­£àMß |§{× K¸çÙµs:’Ï0ŸìÔ”jÕ¥Ž ËÕã3ºÇj·@ä ý’v–Ϊê[«¿»]ÓÛG‰ŒàGhÇé«6è¢# nMµ³!7#“[ ‰ ŽÕ‘•[£¯d£_‹jÖãÿía¢<~T6u˜ Ú8Á­$à8 ~þö•Ú ˆOÎG{ìÁ¹œî÷ê– ‡rÜ%ÍQhteö>4—Y8¢~“»«ìy$ã·3àG0-!ðôäÇќƋ̀B²뼺mÓÒÁµ˜M\Gµ”pu‚]ø«wESÛézü˜NÃ0ò_ÙC ƒñãY9nöš2Õa¢­i‹uŒ¸ÁîazJŽ5¾¢W¢y¯ëaY´m‡` Ù„!¶6¤ Ø£V£ ©¤.TÉô^É"l2/ò´ºLÏY€ƒmÐMÊP:¢aÛWD‰™¥ŽšÐÉWXŒêðæ„œ[ÖjƒA¯~ßObi¨Ý[$ôT+ßCǪ×ßZÃüÆúð4Ølà×ÏÆí£$¯…/‹tý$h7ÖU0zÓWÙæPµ Ótرj{µ.i-‘ÞaiI¸*VSÏ¡Ÿœ¤§=Ü3.•¾ßäFè“_XÜØçc›Uó •&ÕȰGGD?55=ZãÜû·¾¢ƒ×øqo´e|+1L†XŽÊe\t¯b¥WØ#/d­’œÇÐ qÕ¯ÃJã¾fä;TÐbëˆõŽÞã›Ó‘m½Ûîé ÃHçÒÛ´„‰HÇèÀ)S”ô‹räæÏâÞt½ˆí3À#™WB{µ[º³à,¢üÉËòp¨‰“{Ü´a}í¦™Ìt:lF! EÀj1,ÞÒ —”™1˼@=¹J†ó<’”È©ØTZãJ·1C"8©¯NØiqN¿^‰†Aϧ‰ŽûÞ!Ìd1ÚrGª—Ê·€C%+1êê>&ÕÇâ΄ø¯(9ýK~{F„ôÙ$#_&ÏÐ6mÖ”ª•º«{V%´ …!'ö`yªœ·ùe<Ñ.J†OÌPä%ÎC˜ÃgÏ[üëDÜkí]ÞÌçg{Aïæ‚YYlÛÓDBb²¨Vt%úÕÞÆ%yôÓeš€Û™¤§’l2ò«Ó>j“™ß–[’FÙÝÚ.Ž„9 ˜¬Uå‹ë!…àkWùüqʸï•g DcÀåÒKk±—¥[Ð}fÅ€Ñî”YúêØòãû^wvægÛ¿ç9ÒQï逓×ìBM[o)>³KÀ2Õ5|ùË,ŸM½ÓÑÕﵩŠOÍkÜêvC¥Å¾ãrTK¹¬œš…æ·(\–xž”‘,";¡…OÑT¡7Ì‘¿îŸ:Ž;ãïÞØ@TBŠí±TJÅ0`‘,MŸÀº “›=%—lŸÞ$¯®I¹'V¬GO²^-y¥y>e p#õðÝÑËFíI[idhk9§ÆðÔÜ4åÌþÜ"“ú˜€O†\…ø ³Z«Uhޏ¦ðåõñ+ŠúÆèý;KD°ôj_¾tÕLÆS»/¶É…ï­«vw)d… £M,ªÞMàS´1éo"ÀõLöÌÒÔŒÀ*S’œ L¿lTÖô€(!:nÎëËüÙíìÍJÜJ3–o0&±Ô3•¯†•xdŒRä÷º°>ræi²5gAõG–\Ü!ÎQ8+ÑdzkìQÈèÝ/»Ïw”è-[ »éRzë~?NL#{‡ÙWqÆZÚ1dÀ°t ºûLp¬¨«CXD|¶Ñbk½Œs õ"Ú™RÀ?Eß|· ÿý ¿÷Ée¸ÖíéqWõl#%Ìeô?9‹áHIk7>÷jGHÔ9tdÎS³ )~ý>%¸;L5ä f7ü¯d’ñæú­¿úOÔõ“ž·Õû}—([Å®ç|¨ óÀ=¬àA]o#Sƒ¤{ßÎäÍ%Dƒì17_›¥óÎÐ¥u…§¯¥œv1‡êa˜¦US»¯&‹§Éêå4Zëo*_Ïbþ¨éi[¾_ì™[­¿e¨5°ÉuÆ©]Ž;fÖ d[{R½ÅöVôsÑáq·7“í³›è›Gd—ÑD÷<©{ †kd§SƒèŒTb*¥ÂˆìŽÝ2€È:Ul3lïDöZ Z B™>ü”Ëc1M¶Ð`3nÀLÖz ÑmD<__ÏÏnÃoÚ/5%]Ësï$\È´×bdp¼:^kVºÚpÕz1Ý#ÚÈ&)Tö mˆfÍétwwùʉݽ…iàt°Ô•ì¾}!wUÆ,€^µc ŽAay2H¦ ˜ù¨¬jõÂÓ˜6¤Ìë÷èÀ4´˜ð-æ;;}J™[<»«· '4«{"/Ü=âÄèÎk·±òø/ŒÅwû”ƒ¸ oÝî>sM}Œ”O_9=À#Õn-+—0¾Œ#jiÉn„ƒÌvšøˆÈYÐ,\_Y3´cØ¡q•©„ÄHLè|¯Ææâ*îÕl>ê¯v&ƪ=!ƒ•ý“ÆÌÞãM;³fË'bÕùMSœŠî‰^±›í¡ÄíÚÍÓ¢pnð¯,-(G@L¼~×þî5ÓYµöñ@mrßíãXŸUyä+² =™U<þQLè?î«dŒR¯¯I ú7’9¶:íÍ:¬£ôad+ýŠD;šIW¹ ¢7‡YPäM>}aåUö&®ý•sÑK=-UÛW"s5ß-9©ÄÄ‘Ùi᜞àŒxX§Xl¢å¹@sX÷<“œ¥ñž—×c•Ôìl-™$S‘É5ÿõÕmÅß…dz}óY£}_—ñóG芿·J8kë¹|k=̾$é°1W¥Ñ€Š]§D´^uJ­Pǯc¤–é–Ìz-bžºè6_f‡ˆò§ž´9%ÂúìÙ9ïh×–l‘ÙãÝOXLMÞ°|ÀÕFÀÜsÖK÷W¸N|Þù•B{—~C+JNu§¯—w~ÿlÑ÷Æ^öãä õ~ál!h`?-SPzì3žk5«÷µpìKxšø}»Ñ$݈§êßY»]’…3¥nÓŒÑ35mšÑû®_ѠѪSnœäXTpHʬ äO¯k—ïR~aåѲ„"øº¼Þ?[¾¹Ò•ÍḊ‹¦ µ-AP¤”®Fro·Èã³tÒa ¿zÐB2q¯':¢ äÕ ¹2+ü©óC¯›Nûgë»×}íãµÈ1í“q,§¨ÅÂùöÑjÝ£?G¼£ÍÎ?ˆTÆSó+ÖœÅ'dé¥PÖKãC²’;¼9%z¼ÁAœs¦![Æ-F¸ýÀÕ7G¤ F+Ûáu°ãPBìà0¬í"úê¶n›ÃZø5Õ'QˆKÄüJw¤^Wíòÿ’¡²Ff ?›Ž[5ƒB÷xT Áúa;Â'JÄ®7b×{ý|¶Uóný9yäÏÝÿnˆešžÿë¹™o^5)Ð뱈_&4ÍqãÛzòÕ,X}DÄŸ<­Wþ¬ôã’ðZvŸ®ƒÓË8@¾Záû¨Ýú5Ζ,â¾[,ˆݪk=uéÏ:Hÿšø°Õè0IûÖVeIª¹Ù‘äP›WWö¨Ò>»ë½îïD¶:FšÁ¶AùPÝä‡õlðŽÈK8ŽàŽ› ŠšºXl©¤vX8Â{èùCjÃÂ,ª¢ãCëÙA¯©E´¼Vî"¼ïêy™õŽÌµ›qíëg¶ò» ³Ï|=ªÌŸÍDßzòäøÝù''¤‘‘îØÙO!­QF{R2…{Qç4 ã'5æ42Wö{týÆþnŒ¼f¿,Çÿ‹mÃΈ LÃ4Pý^Ä)Àuíx>‰ PjGÐZ-Ñ8×)ƒº|@Qί¼~ÔÄåøÔ,£µôgõ³î>êgSZxF¬}ž)t¯ ¤À‘Zj³Ò·ÛÔ‡ˆ$AlJÅÆ_n0T-A%JI}gý ¤•˸²*Jê¥ÄK´¤f9N‰yùFyº|Ä3àµWÛpEKÂîíx»¶Xùy3G_¸Ô2‹<\dY[7+Çß]p´ñr ÄB89ò‘ŽäãUÕy\¦Ïî¯ïJ¬v^&"çWBŽ·†a7UXÇV:½èÊ#õºä½4lFÈ+"ÇU_pà+-…€KºTp) åiŒ›º÷¡·c·wt¾3>dý†VÔ[æO–ˆzµ¶ ’í~yÍã’ÿ°m{ÛÎûix¨*Ñ‘Ÿ-ô $þ0tŠþIgX}TD¦œÁ2,üͱ>•>uV"Ø«ÀÒ±Éô¯ßÑñjî–ÒH«_±ê÷ðžH¶™œafÒ}¦ÜƒmkÅ&p9SÏŸQk±+$ q§r½FÊR‡ûÅ1ðH®[¦‘i mJ/}¿‚Oö¼!×ùÞsኸh"‰8YÇþ&¸Hj0­fC÷ý”ìè·ûŒ.ç?éBð±y¤u1³G™ö¨jõ!Ö“Æt Ðæ8±©ù‰×÷èÂq§qÖ!ߤWüüÓ³»•ïô÷ÿ×]­×ïÕ¾«KjËù ?Ù z`×ÎéµkãT ›GHë•‹¤VeãL·¯|6è}³Å–Z¯«Zü~+Æ“4O’mš•Czÿï¾íþì_9ÖïyCzu+bÈRša,Ó¶°ì[ôìП¹¥ô¬Iµ›O5"?½¢_­ Ú‡S`3Û¶F¦„ÇÛ5Ìr¡¸ç÷…ãgÔ½‘îˆ *Ò”NVŒDõ¾F6v€vdVnãu°[;)sAjðŒ¹Ï"£Z ¢–T0äuýC’äÂv½hù½d‹©»ýŒ?žÒˆØ€æðƒ[JÓPßc)²©­ÓxŠhù²dö¦ÀWöhØ­±]38 ÅØQ@4"Žb¡¹­ñ:øˆ®^ù­D¹í©`ŸþYÔgëtÍè“,gjsg¢®Ø ÚQjr²Ó@B4|õ¸Ã¹VþΞ¡;5_ž\ žÓ@ vN0Ms ø­š¦h£\äH½Q’Xµ‰þEÙ>êJhµ=~tÝçbëóñ“ê”L#$£GÙ3@lôÊìØ©­û¬áé#c( Üo9m7Ǹîº.Þqg@U×™&^²¶Â2ÈcB&kæë$ÂÝšÿ-íǃmÎ ¨Ù e±@4ØÄÇ£Ãè¾ãlìØ_6?}f”ìa˜‡£’¹‡xL§Ð›L2æ¹p&Ñu†sX Ô¬)Vu®ÑaÕƒ´ÎÍL‹v13Ÿ´ÍVÈ‚ Ô¿„=¢F„5B涯y”öFYx¢„Ó½8¥§3ŽõÝŽÈ'‚"\J’v¹Ø8qË>íŽYœÉƒÜŒæn-v&ÇPûýrð9•5”ñb¶êÄEЍöÕ† J¹ÏšÈnuRŽ Xí_¿à#)ËF’µ°bÈ€)©óËø»!QffsçµzõDõÒzìùëÝ";ÌÛ0Òt­Ö‡¶ÄÕ¯±,r:¦éåöô¾ØãÞÌ-ó»kÄÈÖ{û»6xÜÎ#Ó2â 0Lþ*:›¼y >lEzi hËõ¬×kðûn¾šÒ³gW3 µ¾F.0Û̺[tãôúµdg ÌÖÍ]n@ÒföLµØÊË-#Ú‡¥ô·ýþf­ýìíM7tžkíxf‡yêÕ¶{5‹¥'?^—|[aùç‰Z-H»§y&]ìˆ .g=‹÷ÉîÙdjá´1/BK¨á}–¶’þ=ÍÓ‡r0ãb×Ù»¼_ð#ä÷/_Ù€ ˜S“­Hš:ÖJ7^i½/ÉÓˆ‘Œ{•°gÿœN<ÔÃã§åß4S}ÒŸ Q==×n ´·êü’tc-lÖa—ӳΒ0=œnrºçh]Hõ ž¾¨3— @âœåÜâ–3¡éNu¯[û%¬“ån‰ÛënpÿQ¶ªã\OêþÔ .QWX„¤(‚Ë€=Á\·Û‹hvc±C›‚>òêÏò>Îao²kš;eœ®ò€4!»ex÷ Ö§Ée/&£ÙÆå›?k˜£#ùKp“0’{c⣂–œEçymC.§{”>tsL_Ï€`·Fˆ:ixì^x^ßÐWæ¥pg}nï÷hçû,X¦Ù1|Ë„›5,¥1jÿ_廾+¿K>pC(>–”Ì÷€• §ø)ëxëIÿk-®{òÃ__ÆV ÎsNÜÖçj™©{¢‰¼qäƒQ‰‰3Þõ‡ÎPQî#W°ãhÓ­U§ÂDµvt5 ònê!a„DÓ øy ,:¿ c8A(ÚÁ“ÌdPJª žðziðÆ9#—4xe¾ïÓ¤°ÃÐõ¢ŸÌIa1 ^(»ôf$õ®—ÜžôiÔ¢1ÙvE,6-oÑÖ«¡îÔëNs ·IF¥’û wF|©§GY*E'ž„Ãb-òÍŒi„϶§×bÅ[†jë1íM6-“Y¶®PuYÐÏïE  KèqYýóCÂTîžNµ›Ïú?¯ìÏ–|¿«4éWi’ ~!7â£WÍŒœÿ;ŽBN„=~œ…dE¯ÛÓp2fõÊKƒ89µóHp•<…—”ÞA‘Ú‘öõ¶w»¨Û p“SFè†Õ hN Gq·Î€*¯ãàÙÆQm×HÇTKåõòÙ¡žW‘½X¼w=Èw•åçS½`ªª¡zCT•ÐcúB¸ˆK ÉFÄ4·hî×È+K¨PHܳhbÇz½Yƒ˜¸[™¦5ê8ëØzÚB¥ Â?Ñt¼ÏàAŽh¾ÔˆX£ñ¡›­ñùnÚø=B`_?Ù¶ò¿ä*´qÝíùÉf’™µHõõû©FQa yˆ.ÈzW'­ùÑilýzó9Û.ÁÙRÀÌfX³?òˆÏ¼¼ã³uÝkê.^óK¿»X•w7üŸ–oáÉ<þƒzvzæ-¯·¤»Åȱfi¾€@"8ìõÚ6>[û¼i¥öSÛ8—K„rÜpÍv Q*¨^tÏÕY)ÈÏ>tŠâHa~ú#L1Ì„°9ÿΦkÊÁ¯Tp ŽAéw0öüÊë+öÙ2çÍ;ÓÏwfÖ'ÙŽÊÎ$$ª±­>Ò³¿Žåœå¶mh½Ä÷ÝË}ÖPËòIå1£ˆRE½§^Ú0+  xYÑSCJg#]A뤾Bï’š²°ŽŽÄŸêÌ9vó_€ÚèºRÞåþÀ‡™™§C[|óO`³þæg‚Òýú¦þý·øïr×CÅ ä-FaÕ âùçùh•Ëm‘~¢Í->ÆŒ°Qº…%é¨ÔÖAyÈæácÃ!¹#`lòm5„)Lô&”GüœÅæíK,£x~Ñkªd€åØe¢C9Š>_ëî‚A¤î @ü$ÑÖ…)Ъt—¢®‹*›ÕÅ\±Á'†¦ëŬc©Ö?ÑÂ=aB$(æ 2f7g, )b2BÐÌ'ÍÀÛ–Fä*ôœé6pÛiF«ÛˆTAFfµÆjÑ3㓃íØ.Âè#;}èè“JÁ„¾Äaõpõzö‰W @ôªî¡3‹`™õ}?áÜÅùà ‡sè[v§´„OLû(Ræn†ÈëžÊÞH?¶ŽÒ´´ÒuB‰; =ãwX-Œ?ÿ¬Íunœr¥xž[p ‘‡ÿ½§Ÿ–Ø”áÿ¬åÆ«WÙ펰Ñá>Óa>3¦îªþ°£JW׵ĖWMwQû†ãOô³¶;H»'UCÅNhy0[pÐé(6£ª»›#Jͤ£Uù8?#žÜñ¸ãâçüTïM«<¸y´´>= gÑ»2Uô5޶;É-?34Šæð´®Z‡H3kŒypUipžÁÖ­'‡D|“Í#Ø{mV´©»qyrŒ<çn–/8“g5¦oÃmþBpøBÞÓÛlDñ PiË,¼Ðb´}ï"Á0»ãÍo¡ ŠFhÑYC²ÙÔ°ì5Èxúi¶j ŽC¨†»h7Õ±0åÜÇ´n7ÎÍ{Ÿ#ÆfÌû°¼`ªY䳟ŽlZ5-ÙÒ÷›£rF·››N}4Ú·’Ú­5~ý´pÐyN€`õpý¨åÈè+€Jïsqœ;KíØSÛ—ïx‹ÓÚC»¡Ë[">y¦‹’…4èØ”Nˆn Ö@±§îÇ?8.´¨ìFD5„ðp1 L_p ¹ú®S«Z»eù]n›§„, =þ%ê׿‡vn(·­Y¶;âghAKx”0íuôa–^CºÙ¢Ê+w£idà°€j˜…v:…xš}Ü_àõHáèô:ß0º/âzËÎÎ=-éN~O¡g¨Ó.£ˆN îJ'ÁØ2\hÍ·åXág*Eì13Íw~E¢ÓxÞí«ï]ž&`pÏCÔêÇÉÝ^í@tÖV?Í‹#òðÓõ..G~ç?« ¹}A*A³bcµß9âYžÒ¾àpï¡ñ ,°´$©Þƒ•Eð9Í®\mJ–“MÔ·á–/Ô€T»W!W¦!µ0ñ§Ô»#±">š–îæÿfÕ,zø‘v+ÉÙÃ11WȘ “.ªñ4e§«©æx 5ÏiõV@H™/p<Ð@]=éëQ‘µL0Ð|·G¹±y:¸‡h53ž¿¦¦é¬DÍZÜž/‰OÝÐV œÝ’¯h]ZãHŠv äÛNí1x2¸“8Më´Æ]®ÆŠC¼ÚOB…x<×=Û»Íãï7'ãXPý@¢˜ÖOKuZò[3‡§/,*“ @eph)«a¿ÎQó!ù:¾ŒœîØ|H]`mâ‹Yº5®Ë¼¸žšKvâLÛ¾ÑÕETLnìïM‰pIŒÎë Æ=4•ǤÊ&û^×wMuñõC¹>ÌìPNжàO7ÐÖI†¤°#*ªâßÞC ,>m¸ñÂ\Xºª‘= @Ö{5œnõ)Oúh³Ô#Nƒ`Ç 7W÷÷€”ꎿ\9{C²v‹Ô»åº>·HÛ¤;ŠqEGSýßã‰ùɸP-›]€ÝUµ"´¹æv±æFc„Ô7¸u/Ç”W'NÖÈ!‹Vä8rµóa|„˦ºvµK¿x î0ÚNæR£Nv©½Ä?Z¬là¤j]ÂŒ¤±,g7K[*ùºz¤ÔÈb!’–Eõ_ýõ¹ø³ Â7¦ì~öÄ–ý<¤EÈâZKk (8¯;…fâc£×S­=šƒ¢Çß%1£œØï—¯-wZ4ºgÜZ÷å+ÀBC‰ÊúŒ.å´ .³Ž@)ÚýW=urS½a×kdäm^h‡•£.ùqßﶬÌÍGÙM‡L3+ø5͇”D{ÜäÝ1i«_”€& õ½ëAÓ­5qéÓqZßN”íRMÃñCJž.zl…j°Î†xRß«!VtZg_Ó캳›¿¾ Øûæ,æ9iÈ—ìצ' ™¨l#°õŠŠ/Éß/Ž–@žÕEžYÝ7ÚãgØ¿ÐXç¢/ŠŸÜI>ÛÃQCb‘¬vemTжÅó¨Í§†`/[sjê¬Í1Kšî¬¶dú}pŸáöÏ·£,¦Ý9xK±º¬T+­0 ¼ã}W÷{î‘ÓyìÒJñ›²tîÛ8^öc8¾(¬ø2cÆ4õ`´ççÿ;Î 5=C-7N/Þ€bí7tÛ6 ùïx*'èzÝ^œ¡pÜ´Õá3 qÀZÆ·QŸ~3Úù~Dpûˆà¿ýõOÿñó¿þç_ÿýüÿó/úÛŸÿ±0O«~ŒzýNÿ°#@;=γá¯_Žd°úÃÍógêÝ]AÄŒª}E Lqú¸ç¼h²š8Øè‰æ° ËÖ"q6&ó{ÛqK£ØÃ&Ýš%¤yŒ®´ÉôÀE¤/gy‹q<û»DóE/ ÍãÐ[›8ÈÛ¬¶¨ßM4T1[²xœÍHCܦ÷ªFgø¤‹¼Ç¸AGë¶cí `ïÏ?Wc‚¤ÐÀ4øäÉòdÜ…m&ß𢹵†ynFbl´BxkבóÌ åC%Cs¬ÎqÓ@Ç«"‡ž]§à—7îÃÑuoVøšZ°ñ;Ž—^z)*Ô»s¢N›ˆ ¶{L‡ºs Àhkvë> VkÄSUû”Ýb–F•†—Ó7ºƒ?æéD4iµœì¾¢L˜××Ã÷‹ä_•¹q1³”ˆ‚"W÷ ei±,§ÂW ã¶²è1Û8ñX]ðàkœéê33ÍwËÖÔ9ÍÐ/´6í†uNî H(R4öÓ2EVìj>Yð°0°KO/ ƒ:º»ãØ_„QØ[Õ’Ýæ}󔯘"Äï)"Ÿ[Ð%îµ§ê@ð=gü•~Îbù_ó^“}¬éëx¹¤R`Þj{«áÒ|Oš°C·%A¯e1ÝE´ YÆ8 ©É­|ÊPv¬9jÚÓsÓf|lÜöÔnÓæÈRTÌHXzü,ÒkôMËÿqéGÈtPÇ+Ô•¹ÓnMŒ; òÿNÁ§lÎ1\ú”=ëŒNÛ¼Zt°…fð@µ“¦ªGHð§Zåaà–´[ãËfŒ»ëêˆyp@[ΛvTø@Ó±—avÅtÿ‘[qàÙš´&@=ÛÃX*é+‹ãrzÀó+ÚNM±#äfɱ-@pã4ʽ³Ê}8vñ]§ø„ÕnÏZÙá$dW`º¢{†ÄôàW‹IÞ£Qa±‰y“ÍÄuèku6“ÕÆŸÑ.hœ²;qDHñÖM¨ÖËÉ]:eS~wÿ‘ºî‘žx}†F ‹‘}ì–…½>}:*ñµ?¹]»oBÁyRÀÕ€ÀkÞX+E8—{ŠÛñ\±S@u¢^z"|õË/Q \7e?`4þ6‹gÖýúʈ½¾hŸíq¼Î%‹ºê×Ͳ‰ÂÈQÏ¥>ðu,f)€Áó0Æ-ø5Ó\ÂòèzÂô âÖDŽã¾V‰uèe§È&®ìÞb„‚b°Ò®då¬`Ôª„ù¹ÝÁY°9 Û*Ýý©¡wb“*ˆd˜'Ø´*–š°&£h˜õ« ǘlV®·pï;)ŽÚ34ÎÔQžPF-\C®l½Õ„åhV©~¥¬<ø_ÞðG#¾Y˜¾ßÇÑAfA–[?§}Éæv‡JŒ”´Yc÷Â&ê¤,æ‹ÍTÍ )ª©'íAs/8cŠ1L¤–Ò\f‹×î‡õ{êÅÂ^žaÀžëóZG’a+U—¬èR2ö‹x“Â'> £6žp šõn9Þ›^’–hƒ<\ º£è‡zñxží#ÄÁåÊ:Ž  g…Ž5ìòˇʡRi%E(:7 SLKÿo·˜Þæ»<šÛè¬J¥ÒÝCÐ>¯¯dS†ÚAÿ~~…)'4íl ¿.ÿ$®·ÇBý‚½Ú±iùUõâßz;}ãÕ¯ë=f‹\=WÍqÙÎÈmÔÖ5%ˆ:¾EçADË4‡¸¸YƒûÉë½ðÃq“¿çxv<{Oœn“˜×ðÊjöFÍZû—k³ãÐÕ#ZLß÷úúü°,:Ïž[½znÁµX™A-ÄæìaȤÜ3e=pé8¸:B¶æÌ·âõv¼½…fƒqu¬8‘A«†jѦËnQ6‹ôþ‡›Bñœ¤ ǹģ-¶¶rɼŽ…å…˜2Þá]-Sœ N8³5ŠŸä»:â1òƒ_ nù0&2 7û x±Lvèå 6¿V›¸m¼^¬Ñ™ÞóÁ”'÷üç×ÍËCp/ÇjÞF}‚$›…¤"-S0–`šäxnå””çø_ôÚ[m¿vZNÜ %¸éân^Úè·¦µ¾;áuâÎå?D4襜¹ýfÄzV˜Ûö Øâ„ÚkxxSœ óô=Ýd=Ñ}V?óO6‡~±è#qg<Þ\ŒÏ¸.ÔÒhš%cûŠFoù¨¨n u½Í„´ß˜F~8›ñMc ¶ïC¼8c—8½"kxƒÚ=*éh̯è¨C Ð(°fôõ‹éSX=È]Ã0x)iÍ^v°t·CçIé§Ýz›X=a #fÑ=w´Çbªó`N¦Ù0þ§íÒûºyÒ¡¢¹–7r9? ßK»/ÙãÁ•p8¦¸FLjj„OEðëÛûÃ2 ÎZnmßh iTÞßWŸŽ<ÅD+ѳBDÆðåX¼ê8ìǼ°Õpt²¶®ä‡†Ù;”X‚Öt¯hÔ%¼èêÃáŒoüØ×û±=ù±ŸT­öá>‹Zû- /’V’ô´C,MùÒAÊ–ìÕ›'º›½Â&jdæI3Î÷n¢s¸NGsК3Ö¤š*ÇÅpT )*^‡ò.qԥßcÝ@^h)äÑÓ>êI îX;‡w»#vz4gëS`*ÍYBlßÃ(Øpï9‘ ­q%lóf«*Ƶ­^òÌÇ #6Á„¡L !+Søÿ;:ü™Åà²[ª»µ’¹”اî„s~uòü9S=›egx†Û6ªG» ©NUkÑ.Œ¡™SàÓ!k8™Vw݈q­Ük„­h J}†¦ ²ŠY{§È(²ãóx9㬎Ö|ƒE)kVû³Õ~SW‰wš ß*Ý¿ÐjgO4Â/Ø(ƒ\¯¹.¸øý_v¼¾Ókÿ£ôoeßÿx[ž9Np¨†3¦êC2×åÖ®¯ž‰h<˜6½.‘ØTÃNšÑÞÉœÅræK‰ÏßèÿÐ~²tªÛ9܃}~ér ’{x·qUŸy0‰÷êuq÷ú3ãú~f\?ùR(ñ]mñï§ýþÔÖW–DóQ!xO„W‘Ä”§¯Y{Ͳ™é=™‰iôÆ>bÔ)ð©ŠÓîA{‹Làìœ_1ötj°yòº€ßp~¡$à3èw>EÊrï4ÚÓë;m–‘“Öêñ™fÈ£ßk~G~æüÂÃÄ07Z á‚ëá¼÷×|î1 .6Š šù7hD–Œ+›ÿ77‹ÁUÀP·i“µô”~4ˆ'Ï?½"!-_r…ë‡s=ßÕoY~h‚÷tì¡xUÌ„‘].d†ÚæŒGãÈÂF4õÑÄu»/u î•F_Þ·ê‡ã6ß,¸×•xêJž(TØ„`ŒQÝÄU°yÈ UMæ%4gdºyÙAœòºã Vöà=¬¸#w«-ɫ„D­VØ–8ĄF Mò·P]‰·ÔLv 0‡uÚüW˜DGdFl"·…Jº[Ap¬3[óU¢a/(*Šì‘fŠØ èpMm`‹ÿ†ùo¨=GÔÍ,c{ˆo5ût#6"djÚ]¡€ß3H+Rà]ŠJb¸“5…ê”C'ž—§7F%p.{Â…*ÇËæÐ ‰H¡îÙ ,•Á•Õ,ŒÜt:öéj›™’ã§{0ÚŠÓÑ<îÖ?<«coÂü·„¢­äxiË&ò¹OK‰Æ™L™Ê,šVüÈE2Ý´¢»rYL+ÿef“Ç}8DKł갪®s 91ZŒKÓX'rRl-|ùª~8õÍ[–¬êŬ>M³-iá!m®ƒÏq•9ù¼P)r§o§w:,gW sOUF’2Z$z>…³å;Y|ÏÀ·f(gÛ»JûÃA«ï*Í-+íö”°il«OéÀlhûΰ¨gÐv-þWpºù"Á£Îí¦oššì“›iH!mêLyñ È÷Ì™ #â™Nè™[ˆ7Q£ó‰6O>×%÷]nýgâÉ™;™a~Ù¸mmö0æaˆât»„s"s¢6ûÏ"‘aºÿr”Ì}nÒx5Y? ú¦Kw>ϧŒ‡éŒi *ò[Ú]ÉÚ#Ï÷BÈš½{x"ï8af±¤HªÇ¹äüBÁˆÁ´ñ"/|…u í»ú ÌÚé¦3W6þì•Ó£å±p˜ z%¨ë¿ÝÞuꇣ>ß9Ÿøe÷yZŠç¶RH¢óˆªÃqT5ötmAÎx¼¹[Œ¥S{¡ëUžò“¹QÏ6"Uk$8ª¡“ò¦&Gsø :w#ɦ#ÝÏWÖ=E>n¾Þ0Wç ` ÑQÇ稭^ß—Ö»ºKyUS`Ô“¦mÖƒŸjx˜o¹8ŽÝCëàÑIõ¯ÐZušq~d3Â#M]GÑ_™ñ©^œœbY7´ù£ z]\ÿ*Nô›¿×±îÏ]N7êSƒj3Ò fÁ@«(ûYV*}¶ñâ¥ØqÉZ0¨:Œ®vòA4x­·‹Ê\Ü›’ ·Ø¬kŒ,T+Ã)à2Õ‰¸˜'fdÐ’X²ÊˆT©„i¦F‹ ›usÜ@ͲPÏX¦5~¿–Ñ»¨,† ó:0aÊ_¤U¼¾ÕŸ-'~?­ú—÷·º×§îGÆ“W¸Ü+vG¹N}x—ž™™’æ(Öb0žE]±è4|Bˆ·'þÖ$ÀùôxÉ8QÃôLÖ?‚úc=œ<7=Ý2ìÝ ïbeÆê~J±,+ÐøIû£èçDÈhu‹¤ö–]†ú©~äÞS–TTN@‹g².!S·ÚR¶®B"ëñk Ó}»‡˜û•dpÃy¯»›NõzWo\|¹º›ø¢fÚØÑ£ÄÖó®IûDŽºEE3ñ;^‚í5üx`Σ%¯e wça0•‘Ïþ«/üƒÆñÍð[—Õ?ÓóÁîå8æ“îÀŒë‚ 8‡ “["ï·¤œ_9ùͶ5(Zñ§~µVµëtƒõs<<ÁÕq´û÷AIœHp•ÄÃgÔã°·;¼½sPKÓB1)Y|µ,éF`Ð1VÒ\WÛ’XuTâÇ’¤ýÌ:— ­å•{Ž*ñWÖ,l1#˜5Îm ¤e§ç8ä>p€xE®t¼ö[\± qíK½R43Úh§i4øÌÊ  #£A~ËFcį! c¢îéÎZ« TÒã©hÁ¬RCÒ”I0°î¤ÏsèTV ^2°UgêHL'M½ó2NelÌÚÀ÷lDÒ±PÚª±9 vj[ˆû´ñ÷Íýì,Íd7‚z¨¨=U×cl‰ÑÖ†-oµ=§8™w½ÛÒ¸ëˆÔà!w·Ùùc^ÖB¬gu*ïô퉙¿Ïî¬éÝKœM çÞøµúZ‚>[r¿0)Ü[lâº-µvè‡éǺæ¯w†¦¹fJx!Dp{b~F¤¸‘y;ÀŒLñg^·€?öîüßr-^Ú3l-\@øønAÌ- !Z:ÑS”XÙÜ4Oã ¸£Û±O²_>åþø†å¾¢øëO2uŠji–*Y»{Ø;M„)ž³Ù^½vôLµxA‹tkõÎ猧Àãå8€ÒM>åÖãÏ2ïßÝ{` PÒ¡¢`ÃeÝìYÑ2»‚¸ÄJ†a즓?H{p\÷hí€ÔÝ~Ý×Þ®.PÄ(ZÕ’Ýg2>bÄsß›ÎÆ¡.á&H‹W_ùPÁDKÖ(ìÎW[±%‚ùŠž(›‘#Ò†Y½J·!ˆd€ËT¹A:GELøq +=®Èô[«¹ü}ïœmå~©Žº: û?m6 Úã Å…+`?¦4BD®¨;œÎ /Qô©¬òÌ¥‹ïH” ä굡4ÑeÓy¬Çì©:_XÎ,."‡¨—¼‡ Qø;=U‘,bª;Ò•FÆ9<†×ëÈ£ì}w©ÁuÝ ™ã(¼9¬ùfâNpÀKœTÕßÐËÕ~3•pÜåD3ìÓ¸˜Ê—ƒ—-Þíµ¹ÃD¸x*5þñ÷z&E{Ì”VÍj“2[é=Œ;ïæ†ûù Þ[ó #`¥úñÁÚy*¦"rò¦!ÜëÛøÙ²ðEïºBÏ^{aR {tTË5¯UKÃA£ Í«9*JB§ÝƒÛ÷ä­~P´RäËʱ15½åáÓšpDô¹uÔZ™V•M…ÜKw¤Æëkøãº¦íÔn­ß85°>—¬Kä– ã.o,1ÛÌH°GfXYÄTºßòüÄëúúÃ_ï®ÆùD•§Þ~Ñ^È¢Z25¿ ôºp2¹5o¦¹^™é©Üñ¿¼ã[ +“‘Í4“˜LùÈdòùL¿ ” Ëq|iõ©Ž{×C¬yÉêþdà×™ãðÏ྄ƒ<],5˰#|îÊLLe9¼þEXª×Ó/º=ý¢åìô–èôšp®µÛúQBYd<ʬJâ,w;Êbø8‚3ê0Ї‡}gÆæ˜^EcQû‡[¢&ÀN„´›kþhêO{‹Yd¦b ]«“_š‹j6d—Û¶µ *ØäЃWNõ³9;|ÙdÊܽÔixˆ2VÔ°rGX.‡—dÆ«F ¶6æ@ ³!1ÙÉi¡œTŸ¤jfå\hÄ0hiP%íɳ‹¥±eʦª½S4sÓ“ÕtÒk¸ý®Ã[ ND {N‚“žnæ i_?”?lùôP®¿õPF<ÏÖ¦s2UÈcÆaÃFT %p_Äcê6Q\XmWp¼0È(ða,ùÍ¥‡ùNª/ùCÈQS²Q0»£é`¾ÝÔ›ŠíV:F}›³XÏJàŒµ¬¯ð×ò«DÔ‹/ªs»ÎîÇ kmKq ‡NbÍ ß™ÛKÎ ý•î²_(i}‹/C—…Ðe|ûËkña„ýëJÝOÇÞžf°`èëKÓ'¥@žÒ§³¤,n ¢Ñæ÷@>´N¶¶²Yu}þ:|ÌX*"׎ŠŸ¼‘QÏÍÓ%ÆÞG4¬(Í7A8}ÕÒ“¤yb¤WW¸ä㯘y`¨Aime¦Àö=`Ïrø­IÑPÿßi‡8Žy”Xó+5ˆ=·ª’ó_WšµÇ_·§Î®ÔæLF•ž2ÍÃ?µ{$¢Â`Æû±.lºƒ?+± 5#/ \!†o„;ÇX¹NuZ ~ºš’P]£%Û½ins¨Gª–p¶dVõ8ŠôÙ˜¹Ê@{K‡=%ŸEŠœ1J¬ðP¹×‹8btð« ee·{>5\]óÀ{z·ÕÓ•yÏrÐc!Ôß!,À½f|zNÚªÕæ†x6Ä óóè©é™ÂFƒ‹ôRäYSÕ¼¨÷LCÀ á*(‘×OØgë××ë«1 õ2b”…±·:Ý«ýÌ@‘q®NÁb*$³€zã'(çXsY_C@«|µH,oãúÓS³À • e¶à¾NþÒo£/Ãeö’~|µ8`ñ„n‹LæH»s‚›s»šãëì¤4…·Û„íÔ y§5ã_Fƒ2ÖS‰áɬÄMá~d¨Å{ˆmÉO©ÀV‡a•HJÝâ!TQ…"Ðez´Ž¤À|K‰Ç>€ƒ —uºŽ0^fŸáÖ|±CXcë©,¹§û©®KJ•hX©¡ndÙjAž½åÓs‹+俈½GbŧÛ2’ÝQ‡´ë_àWq„5«,”5F éu^ËžÒÈŒ[,fh¤WjaÙœüf=¿—~ÁUjŠw³k5&ÚšË;êpxå4 9çîœ^?›ËqóñxÞùH>YËßžº¼ñâÁÔ¬I´aGm@&ÜÈÞïÀ$åTü´‘¬Þ]y =rþmç9Á3朤R™»ÆP§y¾±èÙ÷¹ä­gAÌäͲ.䎻áÓ#‚,½~Qš5®.”T'&újÇùæÔ×"L—Þ:±¹ÜM=X…ØÛãpÇPKÆYq¿Žƒ€wðDàþÄÒÝT¨Z­7â ·êZœ~—n‹ð õw y žKX£ºÔÚ‰™Î8-{ƒ7'"ª(ª\¨¹ÇIôxL©É™“—fû"µ‘?‰!nwÕl×e F 3všvlNêÃ@æPÕè©È‚Ü¡™àÍ0sñ ">SN$ãsÞÝÁê^½ñ†~:§âMt*„ë7þ}Ѭ$~ð9Ý}ºI{6:"%NÐ8Իͼ&PÔ°Â7ºtžEòüê–”QFšhá·‰Óý™·ëìNjýï~êµ°ÞühœÉrË›6ð‡c/^Ïb®k[ç7màÓã®íɵ|¦4?’dÓ©s^hÀÖ¸£µ…|×Ê(N¼š:†Æ•Q¯»›»ßJÝVC¹‚âês\ж;ÓšèÅÔðeßÝ B"_7Ú×>7’¦›¼] ã7¢¡à“»þŒ¶EC‰:ûpjÐ"b¹Õξ꿼†`P‘õ«Í÷öKÖÌ2?®ŠÛí·%bÑñÂ.§žB-ᯟŽÅ„Tµ½íEÉCÁ*à~b–]w{ã/¦ÿßÏ‘ûaœpÿ‹ãb‰0…GIiÀ™é—zä§^Ÿ=>œúñºi{’¾«°?õ§Ùž!¦^,ÕÖ[ðâÔhïŒûW¢yFAû¤âUá¨:1ïèÀ^î¯MÎôx÷`œ·ÞŸ=¤½Ü­Á·ÈAš{ý¾láÄ)ôƒØi{ ZÏSi g’ZÇyNOÑÕù›Ž—^¨sR7%H_¡yå¸=²é;pÿ'ÞÙ… ц¨81²WØ0‹Ü@/¢Ñ»”ùPKAÞ•ä8žkHÊcRóÈÐô ¡p<Š ËZÚOŠš”áh[ÞØ…àð&íÂ.ŽðIˆÚÙšœ/0eHeˆÀˆ=䓬_Ç…ÚŒMEÓæO¼~²>»Ù¿k¨OV[žž,/-§aºÛ±ô/!¢êÄ ¡freÕ¾[&ˆnW'±5 ÊØñó¼à#Qä ëϺÍw®(}4=/îPj^. õÛ‰¤Êª¥GÈ–^^ÚgZü®õk.¿=tZ5W—jžûj“ÿMx…óNU·"±:Sš}â:"VWC²ÜHø a§£pÕ€á ‚pcÔèL°Š£HЩk9Îàñ¦+ AÒYû>e`XÓØÃºúæ6ü¨ÉûÓ>¿•‚Ÿº&ì%B¹&³âh¥aºV7–×¶Ó$¨>EG7Ÿ|(Ê­˜¬‰èH^ eí„Ù^¾[ëçWª ŸðáçÍ@êëð7ÄÈ)ðzæã¸±‘h€µħöølÙn1`ᘬ¿poÎWR_˜ƒ5HêqÂxy¤n¡´ ¡åë›øa)ÚKI+½Øp“.ϵ[U¸ÇãòIiwßòÐøª[Ï,Sç1l'E:ì¡‹ô<°0=Ñ’DþÕ-ç4Occ‹„öòQsŠ¡ñTbo©tÙfu+jz ƒ?Ê g5f%f´Z# A]F«#ºÃ¸OžE—uþô¸4ƒ´ŽmÝ#(z‡ùµ„ßþºÐÈêç^ßìEp9~ë³ÚYŸö¤Èúaþ6™ûJv¹ÆpŠJ·føX3S«Þ-À6UÒÌèM äò¦æýp~Â\zûÕŽÏùéšžýùìÍ>ry²Ž]å\ + ß±/1ºê£:…Å‹· 0Áð,«Ä'N«B^&5|7 m†p‡12ìcM°ä¤ò•ŽG†T‡Q Àº¡…p`^ìl§ ƒa!;Õßÿò–ü°„ƒº§v¤.ë3LÉŸ &{ úŽ‹åìwlåû]½ŒêƒiÝFL,»Ê6.òëßüGÅ“N"†÷'fd÷2ë<˜ê Ðذš²¨a#®ëâZ´•@ÃO‘šÅ} “9 ’ºytk(†8&Õ·€®Æ„ “Å´lij?‰“œBôïí„À‘ÔpžN‹ˆ5𮾖a-úšº+t†ûá7aSô ñ›ËÌcl£úõC [û¸ç/þú~þ¨¡k]}F2h£P]N[·Šh]-#"BäþaY81ï›â;r€}~aS8ÝèžKõÊÁ¨î&Z4Ó¡ÖÂ@·øõfôa´ÿïÚŒÄ9«xeŒtb"üÿWî'1EãèK8¦$Ùw<¢S¥?œ˜1&âÝðJÉŠZÏÄà××ã³;ÔkgÕ±Ÿ;Ôú-[§ïz&±­;F`7Ñ©²†:à¨8è œ-Ö±ì†o1Sß-ï:¿ÂTQ›Ò†ØrÓõ4OI¡GÏ7ýÞSÚ߯×õ»gÀ jý§ùªþ¿c4Å¢DWaÅpJCÏ^UÉí&‡¦¥ádºµslR‚•òް\? &s0^N«|²Êû—“LKú¦`î- þd©^š¥ÀG1a•ж´m‚9[ˆÏÛ|eVi<×¢5²,ž¢Š¿ný~*þ¦V¯8 íƒ+ÅÒ‚»½YX£©$ÕU¹öi:¤c¡;ÓâÊé¿Ðv{<¡kš_ZgåÖµÄñw÷•ôé…™X‰ï/aØ©¡u‹xfï%Czü·9¦_j›ÿ7 µËWDs‚41 p‰£«ì-«ÐÞšy÷j’fZø‡Ý¶ãÎŒþ¶øÿ@Ÿ§ZUžE©ÐÌÕ°ö8”á´ÎÛ ž:«7j·£È_3%tH¦D}¢ÂÙ*jÖ.v¢¾‚œø»£éè­Çzæ¿Ãx¤Ìg:‡ŠMe`\;?ë(á„ÖnöXŠ·ËQÕoÄT åÃø#Ϋ¾ãq ƒª¡3÷B7e 4hžÕ">¾*>ܦ„)“Aü0Åb ;ˆ÷‘.ËZ°;Êé´áúµ×4°©¹jªmô€§,k7¦´4ìžvK%ªgáø=´p§oæh‹i;dsÄã6Fyûöê3íÔ†i01ŽŸMn‹éO¾ æv"aX&éQ½~À”Q_›bn׈‡4kùK™êœAaº¨éÓeˆE”n ZýÁ–B¥°Yp¿ÐíÒÄF Ì<Í*(½Zj¾ÎK¥q…pÏ¿ôàë¨= º5ºAG9bRÓtñ«kÝ>ŒSýÏl¡ÍvQŒ’²Õ,Fue¾GÁ0Þ–™–9:ž&QÓÊBlùJ´4ê€à11tx€SbÁ„óòø¾ùZYß~Ÿü¸çj»][°x€äòÃkè#Z$“&ÉbKø”wà&b11XÛŽç`FÈüq§4ŽôYµoÞ#7Ç0AÝgâ©4<ã«iëE&‹šu T±k{¿–=–•nüqȲµwnM!^Bÿ”|Ií’ -ËdŽ+ù¶+k{—ÝêX+luÕ ‚Ãn«|%œ†aVçÍû),,æå×#ÕîXÍ¥ßî>Î\žjvÕ-ã¹{È•õvë×R7…XO ž °¤duÔ-$ÝÂcJÜø &oVJz~$ËÒñȪΔØá¢Ç›¬~®¤=Gµ¤ï$ñ‡äfiÃZDY­9ˆQCWA—ú}ÛvDÖSoÉC§ŒÉóÝi‡}‡a+ý¤Ú®ŠÝ؈Ûþº0o ÂÿÎ%bdÚçó±hèw7ª25àq³@Ƀ¿;q¬†ŸyÓÓÄ£Wf,ÃQÎzV—óÁEšw¶¨qFwϬê|Ê« ‹sMS©-¨‚l™Ås0Hôêqœ©-NŒ“’Äk™ƒ´™&®„Hëé yý+<_¶R© Ì$nogõÅ;¤A\ѾᢦۧH„51}aâ°*wЧêön Ž"|DœähûóµŒæ68ZÖÓ2ƒ2Q¾Z¬‡Y;=TÕá%dW ™ÞßD³GÁ@~,ãÊbÊmófÎû`?ïÁu[VɵÌûЦ—¤j¦Å:c½[']ÌÄdYÝ¢öWéêÍÞ¼ÿJõƒïÆ.ËçW~Ö íç% Dlmh­¯LQÂÅÑ.èWV¤=×Ò^Žc‰™Œ‡ ÎbkØ$N»‡«/W¢ªî†ü &dz¢`õ÷:î'¾0]ŠT‹¶³æ,nFÞ$X÷ÐZ-Žik5XXÍ.7IºC^p]T‚ìZtÒ VU N‚P´0ü¬ìVœQ…´ ‰×Â]—Zåx!/õ–D‚VîŸ[ ­Q,V[«ùÝò‡JâŠîî¶å±TåøÜÈ7k;Û~8%MÙüÃà•ä)~gcnNxd]ûfwî}Y•ƼԨ–ŽÚ§¢iNÐ •sIQsy·°¶Î~³°÷ó ùË-ä`hÄ2± Þ‘@y\i–¢£é¹dÚZ»ô¶Ñ{³ÓÓÀp]¶âÜ·Ú<Ði·4£œL{úGÄZ\¿ÛTÃçÿw3»£çšÒ–ðÐ*€ ´¸…?‡¯G>·ã—€ú4Ü”XT„[g3£~;s‘Ëé€{Àº6ÃlØq,rVñ»yJŒË0‘º†Qbé°d —ZZëb=µè‹r“ !Š%““zåJmpü-Ç_뜎®BÄ*ÙnÇŸ4×3ußÅ6 ÿ"ñf×o°m»õ™=ò«„Ÿ±n§{pJ¹eCOŠ6Aù3½yV} GiSKñªkݑۚ~ë÷"¢õøÝ™•”C–¹H9¨P_CÛ£ï?_ºœž]%á“Å[…3…ÐÎ2á5¥K:ÄùSÍ2 «™™îd–-`•øHó'v‡Žáù+j×»Ô†ÒxYHðÊÚœ0Öã‰N~Q—Ù™U^îG"•ŸêsGo^2ݘa™œ´÷(”º 1š’uuö5ça9–E°®'g'²±M,‚ù‘H†U—/@IÛQ ÙÞÈ ó¦%Ý>œð¦OßÏö+ ¥¤ÅKÏNŠ}#„-iË2áJä[âñ¹”?n#-ÖÈñHÌÍl9žƒ£Öóâ¸Tø9†‡9ã–[çëðöaœþNo! ¨ó›H……SM¡Ç¢õÚȯ`QW€êᩃö¢DåjÑ €-µd+4B}ëë_þ‡õaûEü&þ*–uømmóq~ÙÌ%9ÓÎþ‹›:®´h·éks?´Õl Å`îDZœk·³i¦ë L$šÜÛ /Ŷcmñ,©ºG-)Gøª‘¢lï.ï‡5¨o.oÍgëéå+ =¦j§9°Ì× k›JOcÑyß|r6>F=Ú0ó…L±âZª0çäyC…µGŠø±ãyç]ó/ƒ½Çh£Z }'0?DF³ªÃÚ^“ËÛ‡!õï–µó­­ßN•húH£…« Ë­z“ÁÉg‡æ,ãÊfx$Žþ¬ú|ÅŠ³M9)–]A“œ5l²:—O’¯sSëáWÅ»;ͱ·í4ª+­Ås:Md0G]?¶Lø„‘Bnü ˜íQ¹ìiÊÆš‰„>ýܨ̱$Ä)öµã#Œû:ûdfÉ5,òñ½¤•µOëß^J´§›BŽƒ¤IÀGÉŠQ²=QÎâò¹åý->•o¡ Œÿ<à>‹»0Í7ãz,ÎϽTÖµóÙãšàÒ5Qw4Öð¾–%rLñÐÑW‡ønÄ9c¨yI àxÚU `¢ñ Zç ’G…¦ëÉcPMnpÿ‡.’ä~>†ùž`£Ù“CNBjà-±|õ„ù³E<‘!P#üÈ´”Õ³"J”O<ÛC½Ø[¶Zˆ¼â›gtZÛù»Î·sŒS®ßëm5íI²z ‹_Öfi½AVÄB Xu*ÚóFi/|¿Rmã›ý{!¡»¸º‰c¡ƒ¤MG‡i–àĈѫTŽ¢È¸¦Ã5=WÙ,XÅ“¾¹!&/¼#ãK1àÔã5³PìÄm%w›Ô â¸æ”¨w?-À^'q²¯,z Üמ,Íy, Í6´iÌâib~d‘*…ì:A±åº.3ú{ôn×¥“›¼ìñ’4ª§åX 9æ6x¦¨mm…¸—›i°¾éq|û«eŠŽñæI;>ÉòW–Zø<ä‹#0‰u¢xZ< â™FÌh&µ&çëDêæ‚Ćx›oq”Í5EC„”ÍÒc$i¼ É)¦Ýï¶=/‘&ஆ!ŽÊL‡ m¯•LíLõï%Æþ¬ÄØøï-´MÜ!™ÎŽgG£hK{¤Å»Ç9æ(#®?îº]àxœ€=رB¦ÞÑÒqì¡fqñ,HUbMϬߥÙ)ÔzÙ—³qmgöñ`øTzÜ•ü–jøÏQ°³‚Ûào·@«LÃZùã¹’eÑbNTóqÖV\Ü×ñúuñС]Qƒð6l@ GjkÂl¿¼­¥¿qÇÔ-¼^}jáha9E^Äcï‡R™y˜‰ŠÉmšáíÊh!±ÓsÍ%Ô)pß–â ^Þšéú¯aH*_1Àhž¶àÑ3N;S$ŠE`#øøð«ƒÀ*â™Êb·>„×â`¸ãѱ†qW©c "bˆkۘu‘1Zôª%V‹pÛŒ*‘È7`˜P¾ðÓ9èí‘Ù–OkËDÉRÓܰx€#Åàf±vnv”ö`ÏîùêŸ(´ôe…ÃK÷œõºEø#Õ3"àŒšpúó^½~ÿþ5ëw©þùøÿõ~#“Ú˜‚ÿCxüçÿüÓOÿö·ÿ÷ÿ¾s¢® 14ô²"£Ãí2Ømê¶+ “xsfßÂ|×ýЫšî [„váÆX£¥‚‘©°­6ÄE³L GMŸÑÇQrHö$>ÝìAJÙ×ÍÈüfÏèñ:œ®HÇt¶Ìa1ܳÕ)e0h£.¤Ò.TR¶qœå*0ÜCïiÝÒϦºVBùž9ú1 5b/öx`ÕÄ ªhÐ]l¸/7ctÎ9GõÕr¾‹ß-±©‚iCÁR«ËFóÄrwxálè˜wµš3¤/–Eаô}ª¦»õ*ßO˶Àî^¿C²â^>"Àj!ÇXulø•‡W ,ÎWŒä-²pW;ù0S‚’ =ÁrŽ#:«lG\¹þ…Ê®’’0ɽ•3O®½E›üñ_ÇË«ý^%ÞQ×Û?ß6í UOʱ檼8J09ÿMÄ~ßy¢_¿µ?Šö[[6Z}V íw™9@\Üf¹ cå_ÖkÂ3\Z¯¼eÝžLL°ƒ· K†¬‘žÝÓêžUw›™ÃkШTZA³}¬k¸ŠTò-órrjgÛÌÊ"¾yÆNÇ,mèö™x'¬apjaóAsÀ|©GZŽ7 ­Ó‰SÚ C¨¦a’ZÝ'AùXd‰1 ,*j«ÎW{qûi¥ƒ¯¦“&¥_‹ $Àl¬"Ç©­µ±kåѧ‡.7càeÛL`/óä*ÕàÙåÆGŠñÈ6c~åõÓøá>í›§1]nǯôÜîZ0¿:ô›¦xúc•B‹Ó|?v[Sc݉b)qC_êvA×Ük SžÕÖ…¬‰®K¯=Ù¥*-0=8Kd|9¢9þüým)¡-@hÐtì£jÑ€Ðå6ư¥k²]i-lÅ] _ngðJKO ­—Kž¿l^B±ã%E k£°X¬;ñ¿Û'ø4¹R34PÕ\sªFxÌá1Mðxý8ý0uj;ûÒ£~=GúÉpr¶ÜeØŠ] Òi£ŸlÉÍqô ݪ$zež+ƒÅ&@^eÔ{êWìDzVÎq›fÉðÝFKÀÊÕvTœ÷´ý÷c‡ÆÉ=9gš5 ˆI©Æµ³Éüòª8\à7N$\õ±? [*I.à 2“ÖðÄ ¤P‹ô…@ó¼ÓÏ@Ì©ÉOQ/úq!5F…b‚žª¹î+ÜÝ“vÊ|%¨Î)Ú¨6é+}Å\t¦ëÞ}5&¡©VCœ´®Ÿa#øf”Ó¯°.¢Ú×àßb‚g3Y y–öVW9ωàÕñàuÿᄃ7oKíù¶¬×}«áòj)>jv%Ðp-¤pÍ`öÎñ;4(-$Ús4Ý-@©XÞZ—éñ¸ü+š À‡¶·¬Î4 ox˜B»‘i.PØAÈO'Z‘{(øÂ=@dôâÌi@p…k¡5˜NNè×£Û'2¼iÈÔ‘7¦?×h­¸×¦F»ƒ ÆaHø¦g•nTÙþʸ€9c8ë‡ð|…=òSóc¯GNxS&Ô\ןåEõoy–ÔsЪKƒb¦*ñ’![¹{Ò³ g§XÿÌr|[Èk¸l­tWŠ{Y¨¾™Ó~êÿîÍÂu{~"a-ÿ„˯V»ÌÔ…|È+>Mè<@ÏXùì<É)×1"MP Ì>ÛáSU³Yƒ m$j¡àÛ¯ñоy_¤’s·^܉a¿>%ÞSÕ÷¦Øût–ÀkËy öù ì BËIŠZö~Âoc°šÛjñ íkë¼)¨ª£‡]¸YÙ ÔµZ=¡*Ä\s[9¢Õ}3^ ½ûòD] ªëå¶ß_è>ÌèSÀ•% ¸ú,6õã©g°JšJÓ˜¼’¥‘ÿZ,ž B#msÞòÀV=ÑM°f¡úÉ&GÞam"û\Ä×&¿@‹'‚PãÞÒ ¥{y¶Š¹ ?ùø"þžhÿ,OŸ(¼j¤Áx2xN"_[Û‡ ÷ïîÏŒûÓŸ ìo§¦F+¨¤ÚÛ´›p }F wB1û8Ð0 Ñ(t²‰²ªÐ µ²õœ×yp¨]ˆ`>oMÜ™åéÎ<ߘGÌ'ý22WÀ> ê /’þH0Ý‚OºhÝáǹ]cAâu'_ï ð¿»YY¼õ§—)IÒ5±ßŒ/èq–æVZ³PÊÝÝå2è}ÍOuˆ§Šé=/Àæ ·Â(bx¦IdíÞrŒ[ƒ…Ê<>¨*€¥Ð„¸cÜWsW P.Í£tUáΡ¯ÛMǩ˙ÖÅ(†‘ù§ƒ6ÚWÄù¤‘èY ‹æ!$çÛ‹,^`aä¤"^Ÿ±w™9wúÕfIÐÛÒ­ÓzE>P3!r“’F?ŽmlBL;µb1Ýoˆñ’ZÔ>M’~]Í–ó@1Ÿ¸6äÆ8Mj5š9SØÞÇ]òƒ|C hžco=G1ǽ1loEœÌí$·À©ÝßDCÉ4ö˜£•0ÎOêˆ{ìM®»ì½e;þºÃœè¡.®ÿÌPØÅ§ñ‰øÓ°‡ƒ’³ 2 ¼‹?îQÿîðö̧ç-"Aº“ð„ú©\öÿ¿»w]–丮ð^¥ƒ¾Ñ}”׺€’aýð+Â?ü 4aƒc0º>½k}kgU 0Õ L¶NØ”4ºÏœ®ÊÊÜ{íu!nŽ6j¥ÅÇ®WÂ{å­e<µk>·–-ŒÛ«uÑݤ/­mö3½Û4Üú3èfÞÔƒåHÛN™À…£[-Eäˆ a†“Ád'«!**§—&‡53¿{ð6œÿ193ÇŸ÷R;S‚O®_Q»æoº¾!ï¥,\ë¸!m9Wt„•´ˆ}#/*ðØˆ´¡V «mF¡³‹™^#¬|)kŒ´zE¯3&`Pe¾e0$£&Á—ÙÁ»‘Ô°@}Cæ !•€Àª×ãšv¯ÈÙÊmž–'›ûÚ:˜y)>cóÇ®=ÞVFäÉþR‰^ßÅ#6—uùšÆ]ìõ|;õ#N‹ÃNÚÔ«)îqzœ1ŽÇÂzfY­˜lËrÏçà®6{¿m»Êôèzª#RF°+÷cwú/&ϯy Ò¾Pr=»÷4Œ#°Éƒud’-:h- ˜Z³D–F¬ f£×ÍÓ‹¸ŸT,û£–Ógò‡b=¢{ûWºMU]rSàYTÿȵ/ ¤ÎíTÜÊÇ•È@…F¼4AÙ>ÐSD?:U3ZÕíR; ‚aœþÄ—’í ïxG„×fÄB¸W!Ÿ&ûtÉN_‰Ém ÆÀ²"ätc —uÃVOÓeñÉÊi»g²3²ñ@vËeñ‹æ,*:g×ff•¨]•³s%õûÀŸ¨H…ævQ µ¦ïø+¿eûmÙfy;KÕz0Ø1ïà," YÛù{ZôfØ%‚cƒŽ´å¨ÌãÑ}8?ýd:?‘pÏ˧e­–¼:•xÐÕcÂ}ÆL(Ž¿ÈêÄQb6ëC‚_IçzS­É½Ä`%;Úd*‡—?Ó`=sòúT¼”¤©nCp|·áÕöÞTÿ,ˆŸ·_„v…7UC"m÷’>Ê*E«A´ƒýaFá£ÇyILh¸ o¢|-Á €ySž³VžÜ¾µs{‹˜"›hL_ÆBG˜Qø\Ö°}áÅsËÅñpUøÂK‘Ò*¤"ú¯¤‘ÙÔĦZpÔžÝó!Ç´UD2½ØIãDÊ)Ž-+»1ˆFärûî¦øç=÷3ñ\_O¨^àYÿe²µþÿüŒt½ý.ÿx«#f4—tû‡[ún¼m˜SÃf»:Å|ªmC—™àMMŸ™œµ.ýÄ 'iÛÏ&³M²¨"Óþ—¬F¾ANšåÏDPÏ"·ªj´¬Ü=’d¯Ú$µ ¡^3“…>Ruõ«ú.ÜAðZ™%ƒÎlر­ úÇÙäËUò…V-ôÙÓ¸í§Þ‹øprM*£ WN7]8XîòœZ$AÒCVa¼¨ô_¶;/©– -£<Õ!^Ê-oÑÍ×ðq÷ó5ÆUæK‘“ÝÐãÉ–íÓÙIæ†BѕÄãw§çzl¨\5ÿ¾³1ÊI@§ ÛÂÄoÊú“óñª5E©[¾SRÄQnU`_@-Ú²L&ºm¿jÆI`ûËçewc™‡‹½ª«YŸ#ÐÅEX>±ŸäŸñ¯ü0HÀ’ƇZPGúÜ|'ðœ·{zÐ~Z<|úøõ÷?þþ‡ü»_ñÇï¾þôá×lÄ-x´ßüw‘”Ç£9Ï碈ë~üèÂÎBÌ`j ߨw ìöÆ9ÅÔ "ó®QÕk_eíÀl…žçZxX¹÷ÁÌVšV®úHv¯“µìصéP°Ehº‹:®9-¦d` Y5MuéT÷0¯@R:™7¹A;ÍÞlÍ&†Íy8„2xHÞˆÀLjïX‘+æI`”Ôìöp‘ËW£»vE´byÓÈÕG8%S}Ðj¨¤i€¨s™æ‘v ‰3Ùcðyïa™ÊöS¦AtF†2ëACMsÛ]óD1’/ æG"bÐà S•ˆY X}Ã1yÂê5‡!¦Yÿ¢zO£…¨E½¡ÚJWf<•´r#u+ÔÈ›üºýUÆx«q±ªŸÓÞ× LÖ¥'Wšs ø]@9öõ.vÔöá™ÝÜeãA oQZÆì2n„vPU¤ÚT%xÒ·¯ZT¨s¸'¨…eë mz.ÖÙö}ø¼WÂQ çS¹§Éõkµß;YN·½èÞkî¼”‹.æÕÆ4@ßCÐ%¡Ò顿[Q†“an­Ã&||«P’R´ %’×Dünv©Œ-$ó Qv…qwûžC¨8ÎŒ¡§o×Ì®çqî×:ŸG0+ì ŽÌÔ,›Âl„KùÐý|¨â+>W‚†³³F&G?%æa˜už"zw²$0ÙÄX$ÍÝ€8y ûìq„JÅ),)µ¯]}´%ét^Á€æl4â¸Û»¨,ßþ>Ø$3:;q5íê§#°ã\Ø®B¿ÇšãÂbL +F™[¾’\fúb*èy{Ìj«7+ôÉ•Ùh4¤º~’_œ°ôdeìõ²|N:TçTÎ,œ… h±è½„À"#F•©ž9ÃrkM êfsîÈLÐ>Òãc³ Éî¦F×=w£úõm'¾Ù@B`‰…ÅrE7Æ&Œ“ë¬l›¶HâÙNÆ‹wR3y×±[°HT¿‚…ô þ›ÿ-Ì ˜3$g ¬Á•®Ÿ¶vŒzˆ )êʌ鄞ÏÕëv ¾ äh#“EÕž¿ Q¼vêm'›{gâ”Ñ0·Cð¬(#¤o)‰õ5;¡ôÛ¢¨ d«¨öIJ'Òɵ̶þŒ‚]µ…ðÝGaŒ'gëÏT>r½ÖÞ«dú´ìá¼Év§ 6ÎäêNÎdیۨíT‚d=Û6s$ +œMV{Êm†4ÓïË-öX«|tTìÝ—ô–Ÿ†v•'¹]“N¦z\ ¼_ j'LüP⯅¬1nY¤åa  ù¤hÙÅán{> ÖRYíRaFùí b°‰#\Ã[@àœE® ¼Ñ6ƒÉæ{è‘`Í–à?õf~q Úuç´tÝ/¨8¿¢ìÞ㈹µðª\Ô°ÌDŸEàÄH‘CVLE ó¶0ËÿÐe²®m|¿†šß/ ü7¡Ï+ƒ!Bk¨™f!/=huf«3ç…ÍÑNcµ:=oŽ}÷†éÛï¸Î[¨áW랣éCk"?Ô„÷ð×'>uL¢‰šÔ8¯£«„®¶ ÑÓ¤yLÜúd6í-*i!F?è´õq üô Ir‚ËÞßßüƒj|eÙu¼/VXu'{„ѵìË5IÔ9A{‹G|Fê†ÐBC‘*|$áÆ†([íî"ëû2†“³Ð@Ö _’m¡yöPÉNCÙ-òŸE¡•G¡]Oˆ}u;ÏÛ˜©á Þå ¯ÕÜü³L@Ž2ŸJ âķуiç¦Ô+ #/-ꋣɮϔ£,??áÃÒ3ÿÔj£ád˜¾àŠùø>ç©Ôó^H$æΜEiFÏ]ä0¨Ræ[¸¼™ïí0‘_Ö1jÓ);e±7{} —wì›s÷ÚÀ* FaEcÎ쓘l!^{;~ðÊõ y±þ¥#÷±åŠ@´”:ªî¡£Öf#T]á3÷ Ÿ(¶ó⥑(W߬‘´6h˜ R‰£2Úîrü7Ã^:3Ã[ ?›Ó¥Ã —ÙÛÝÇÈd®æ:¹5-ø~—É^Ñ$” +Ó 8r§õrGø¢üßÕ¬ìÕvÜé[9÷Øpk#LA“* {ÄÀF\md6ØnFJ®q½}ó›àpކø%fÞã:ñf¹î¯88NžÌ^¯°÷ìO_ìgê\ÔWö¶{sû¤3ßÈÏ„RÐ\8O+¼ÐˆOá9Øö-ÎwƺÈ.ñb³xB¬áà g´VœVç]¤£Çï|û±½éE‘™b‘ ±€H0ù×Ü÷¶þ"íÊEB/¤“¬UÂÈQbó0$¦.ùÍ"Œ ˆ–ŠRe{ y^-Å7V½ТÒK÷°Êò0:yäë‰Ä* ù1F–ªÇ°ÝK4NèÊ`wAf|×B;,Éb W䛯h» (Z©QŠ}D°Úò†‚okläã4I/£‚>ðȽZ‡¼‰N“‹%‰ ¡ˆ›À\oí/Ž´ºvãšÒÜžF ÅDwL}žÇÉnï…(îFd§–˜–RPQ9|ö1>Ößç1òÏ'Ò<]C³ïÿ—ˆK}qØÓ5ì^<ù\þ§5×dre8± ÇÀ½ ¸*Xx]úѲ7mDmÅ`²ês¬1dr:¶Õ4Y ª§ïXA¸°ÑqWcÛ«Xø. –a²K*½‰E»ÒHª8V&ï=LŒl6G¨¨ÒÏ*¶ÝÌ‘4«Íöä2?[Ûï}Ѷl>B¸Dì›íÍ\¢B©žÃ1™ëDÁÙaO>Í=ˆi@&ùÚt«[¯~XkÀˆ6ºk½î‘^u=¿º"6w¤þn׃±· fø:—LÏß¹ÈSýWCÖD쩸Ï-›˜/PeÞvNÏ©ž0´èãÐÅrõF#·ðil–[uJúÂGª™Ž¦s†™–²'äg0åôΣM EÁ‰ ²2¥„ÐðÅéÔ¯Ãa5µèÎÚãˆÊoØ]¢+Cuîgbås$ ¨Žãí”×{¨)”¦á|0ªË´‹`0-bT¯»êµb)›ƒ<Ÿ÷—.Ó‹Ó²®€æ¼M;7í)©ÿpë“fD]I°«àJECD•Þï3FE‹Šê¥ò4ÝgyŽêzÜê:ØN3P\)Oì­I3d‰ð‹´[ݾn«&TÒvÞÊ*„ceàVf7£wYº()c¾•î@òmCΰN[Lý-Ñ5› ãFw¬gKªˆ¦Ìz©SZvÏTB¶l!zHg!ª³i«ýÞoí¨{»)Ë“[ù^yŽý H.å´/ì¦,édÊ~bq'”œYðÓV‚LºÔïÇ–Ç ö‰j=•lÓ ö6œÞäÞ¿Î’³îR\[HS„%ªuÜä#_Ÿ7/Î̺F úIO&Îÿ#î^4–(n ¦ä#ìsm*ïî1 4r\F+œÖžmuX²ó“º¯dxõŸ¼¥0Èg^3ÕxÅñ¦v+'ÍT0!¾îŠNÇ{‹=ÎÎI ÷ÁÙ¦•AÚ~BÇÊSA$Rs˜Lé+¹Ùön°€Qz:ãØìi=¡Àʰ)MÊVË¿ÚÙ”¸Lð„ò½¼-‘àV¨Û² ‡Ž–â‰Ô„¥·O‚RCªßE LWôÐKàÎ)§;@ׄ‹2ôÃÞ¨™x;žÿkàúÅá`×mOϤÙÔå^z= _áfá ]ñØ_¬ãn¡«öQÜr4)?”kHª£g0•Æ$ .\|H‹ Ô0i]hØœiüK‚̪”€…w«àÒÚåA‚¹¼XŠ®Ì{›C’q´hzŒÉ4]çèõ¥/®PcËmQ­0O¶êÛY“²…òæ°Z ³8$X_eNŒË®õ™ϳ@i6ÈÀèÊ?¦Ú…@T¹ýCñ©K!w}q¼Òõìºï@Ô\>#øV0ÂÅZ…—Öä¤IË “˜Pactä,À)âb2¶ñ‰˜òx"ëžà¸[t¨Ê úôŒ|[nË=^_±÷r®:]±3%:R'æj5âwí½0Bp°MT­~ÛFS$RKí³]ÿxpM"몼1ñ6)YG˜¬ÄD-Iæ2Ù'@&39d!5ˆX ú§ÍVþ*$ä/ @‚i@ë[Ç“QÓÈú ÷ ¤ÉS•„l½M8u€Øª %Ú·|±ÓqÉà'ÄÛ¿©mÖС8»ç‘WÛÖ#•AIff¼«iÀ`ªDJw •†EÎYßëõñ^î¥m;üù‰J¤ŒsFf±äaqF³ðk@.6"%ð'¹R(µ¯I‡ï5Ë",y"Ñ‚û­Ž/hÓób=‚b8ö#¸Ö”Kcâòù"÷”¾;,Í·XXá°„ûåH¡Œl¥êÍQ­Nqìî`Ufín#˜ŽƘŽK·«h·›Æ×wòÅhÆå“ÞæÜ·òS-GDÏ5or"©Ýú Í!à Z×mÛ—Á“*ƒA'À¨4!õðö¬C-Ø'7[¿:9¨@F¯ÕdªlÍÂ8{òh#‰±àQ!” Ù°}ÈT@‰ƒlÑypzEïUÜôww1¹êž?;³^{_ŸYÛ}5ÔAMûÄ\ÚŸÕ62mJNÚݦl«ò™sÛ´Î Â/LAžµíÿ<>p}A^œHr]Ù¨µ ’×S4)^z°b‹;/À+ÊI!~u(ÿùÚD@5(Ö´P•…±Á¥ÒÈ{OàmǶí3=ÒúƒÇ.U !ÕŸ‘jÁGðD°ÆáK£=s¤!±Ÿ>F*ù@x¤7§©¦Ák1­O€Ðgüžÿ|ñŽL˜û“ùÞbšxªä䂜±'¹ônq@Ç“°ÊYߦnåGÌjࣦ˜=œŠåǤ?ÿ2ïÕK^ψlÒ *–¡ex˜0hpû²ÆSŒµÂ%Zm}l>Å&d|æ1>ôdÛx·}´~©Õ¶á{ý6²ƒ:žq«Ë–a±8L§5ºÀ»tP‹5º¹1¸äPÖnŠ:ì&Z·1 š}2X2‹ýP"ß°cHv#“ìtÔ€r×â,_‘ ˆL¾E€-CØRmHD\Ë2 ¡3V9,Ôí÷“2ýæiX ;†¶àögta~|³{YÄ&5b”(‹-ëBf ûÖm€*ßíšÛøâ\‰ë Ekûó0’£fŸ@,9çfÛó­LaQ=”õÙÍÝn9Ç¡c˜QŸa0/Îxr\¶cݧsý`ëáû) ¿ 'œŠ] jŸÇáˆE<€²äÄI’<ãdK‚¼ƒ)Œ=xfдU¾€Ï”ŸõÅá ×#¼c{œ§ÏÚÛJú§#§–³’ÌŠl8AÚ¶ùÍþdÕ½)L$Ô†¢±W`è˜ÓÎ7Qo¸ ÅsT#‹£ÚtêŠMYF(܆ÏX‹äœ:,ÈN ö‚kÊÚœŽ`ΉëƒôÅñ×ÏÐi‰Ìí´D¢zâ+….øQ24sƒ¥ÞARnéÉÄØغ4&‰ „53è¨ï×°‡KŒ»Où&p{Ò{³Î1M>ŒS³Ÿãå„å ¸kE´¢.½ú˜â}ro{OE2TmÆ‹“sLò •$ØZ)bÙ!d¥ãs>“=Ê¥äò(2ŸòPª’Pp)´Çt(_q¨w §ÿä‘j$—0×94kñJa0Ã%BÀ«fí0 ±E`³‡;.ñ¸Ðj²Ãš ÛˆºE—†‰ïqV"Þ¶œ…%À?¦+™ÚÙúç<‚´^¯û÷š¶·cv™Ös‘°.ÚŽš"•­3ø€Î¤¨Aœ W]`›€'¦a/‡µF)2ß°‡˜¦J¨I/È!Ö® YM”šmÛᢊº¶r³…ûô֛ˢºÎ¢ÜûC×Wø½Ê°Ó²ÌgVˆÕ˜émÄ]²–trâyá´zžõÙÊ»ÖÄC§2‚¸Œ­o³¬…IõáŽ0ÍÕNÊ«÷„á 'y„±R­1~º×A’ȶJ ~ƒÊB3 ªYlnóD y£ÌóÃE6vt7IºBåKÛšYÜá.„TÚü¶¥v}ïÞk¼|œ ¹õ“ ¥Täâ¥e³Na4áÝs4kôNö›| íX¨›§`¼ñò{¿8ÃàÉ÷^ŽÓpþLù™ù&*I²vižF6ÀЏà mXÚj¸±ÒŒ6$¡æA£ eõâ”VºŒ­ê^ïÙ~Á×Ïô ¬ÒÿÌjaŸVä:Ÿ‘Ìô²3éãв Nr<Ó%\mj°Â±Ö«±-‡˜^õ ®ÚÉ™6)špî‰3x3Æ`çmO>‰Òz±3‘ò¶âIXœE$¾Ò}5]ê1¡ú#׷཮z@¾u9Ýv•¦lçÝãtRëȃ‡ ÏÒÙé7މ@÷¬-*¹žäájœMEõÖ&ÖóKñ¹ë«õ^$î:}Ìt:„&Æ·½Hþˆ%¡eqC‡ÿrÌÚbÞ†±›¨MGF;ÔZi¦b2R90ûÒ¥D€Öþ8ì±~Å®<¡yöŽsÞÆÛ)ă!×/CԈʘn ìfÌ` ïÍ7Û%‰*Srµ Üeç‹6ý›Œ¾jYÍŠm+íà-ÎôlÈXª×Ÿqó_lÊy󷵤t®ÞG†V¶˜ô×dË390Pš¢ô(Î:4jq ºcùê½:¼'\ÍÓPL2;Òݵa¨ ¤…<؉¼©õ.o@dO,®Î m|h²“Ëå~±‹æ“þØeZ:í2ág¨"´Ú너Ëã‘YY‡Í¾¤ÓœòÍÞ¾§·øÜ_èŽG*lvŃ_¤qzØ5lÈ”‹-ÂKè@ÅJÈÅT ܯÚ3&Æ‹m(Ÿ\ÚcFÑÛiK"äÛ}²ÚV™3ŠÂ›ÃËþ}y`³˜ˆ êÕlɱ¯zÏ,‹¤TpššÉ–«Ôh‘é®5œ#àúžÎøéÑݧË#¡›Î½iDÖ“¨$~V‘CfœÃÎmÒŽ‚’IŒP=jöÙóa]ÑlÍa´£ý6}!°ù¸sïvô³–ô™kHx#'3²‰ŒŠ/樶ÿzDK Vé‰*íÅÙn6e¿íÊ@dcý:º:‰°l7»Í†Cixńū}0²{4XÈø{ zùÈ# 1|›hr„ªoÖõ=xí~­8¬Ò!mÉˤ9÷ÖBòô€ ŒŒ4öe,ð°–V‘Éü„½$é yƒ™÷f²`ˆÜ夔¬Õ˜qAð4̉æ.¢Ô¾,ÞÌ·8ÐW)AÀ×WòÝz¼}bžËü™]`;xý‘¹K‰³X¼¶Ur”ÎŽ’÷U~âlXžP€'oën)º>·ik‹µ•´@ÁÂÀŸÉ£KGB€Õ|æ'ÚU_{N³oW( 3¹Ó“ ˜Äߔů ¥õgÐtÞ¶%rmõN×÷`¯Ù½UÍL[Ãg0?ãƒcË9a æHP5{Nu‡ÃØÄ£Åß„~‚<¼Õ°v7†Q°Òš·òŽétw”ä¶Žd.„òÍÖ±Ïé/¶E|Riç£/9Ü+«)ƒùU)P ˆSAÁäjvkª…ôQR‰ÿ'ëiÒ9—ˆ]QH"©ˆ û¿Œl#*=¶ØŒ ~Nz>]*Ìe=ŽÕŒsÊø:8¯:0#šÌ5´}Ûõ¡G1:PX n8…Õ ­ôœ‰>gpݳ\»;mµW>?˜åsGÌÍpë^fÝÓâHO&ie7ÃÙˆÊà$&ˆMê‹Ù4eÇɰ9¿™Oþ9CçX;¯-‰®É;åBLy§¼…¡XŠíºz×à\%þ#(zøbÃhIö?!ouj-â+s NE5&Fg‘@1Ö`𞬠¸9€z(¬–<Í–²ÐMœ`ËÐTÌœãâX °4g’2]Ñi¾íz‹LÌKÄ/ÈîÆšYKˆØAe¡éL¢ív´§“¼Û»ç·2c‡ýeÛ)!½?!²½ØÇñÉa”Ž¢ø ²uÒÐ<Ù}°LœšÂŽ‘‘»b,î •äáäÑîe˜Ì DÖ IgJ%@9.vÆ“À+QØ»Ò4å)Ö#GK92.Z¡€Û3² +¶'HO,kC(YÌbNëÙ£–íQ3,ËÕx×#RƒÄ Ãõ|ñšÚ*•©,æ¾Q+ª­8Óç°Ÿî$ àÍ‹!U2†¾¾·ï68 ³ÙM¶.p3$‘'ä)(¾I(gïøéÃé>†³‘#D ÙG4Ƹ—Þüt¢'l:¦½þº-|±%áµÔâüF‚¬GÔQ*¹‚Úpš +¯y»À'Ôl µ(ZÇÉqw%îHz‘,#´ø‹¯JbµRòм Õá k˜r©Üë$%ç$¡ó´;‚'†YŽÇ‹–®.{{±â?}ýOõw?­Á}ôSªÏ²Ç’À‘Ý6Ïáûàù¿9Êbà\žÔBDd^¤³öEñ.o“©µÙΙܤJ.ËÂl8 ŸSyC ìPñ]T*ÁIv‘ÍÇF|1e42QÃ\_Lƒ¿8‡W¢|Ä\J&Óíl`Büv¬fêž¡ˆÕcz~£†![ô÷vŸŒ½ Öƒ;;z^~ Ä\”àG1‹'õ¡°ƘÀD0ièÔ}ð3fÜFk° „Ávýjý‰x®½Ø·ñšFuT-y­gl™€œnHx‘/wÃ÷CÝ––׈Òuhˆ-iéPnC±xLŸ›Þ”å˜î ¿3ÛR ÑWòZ¸`ÀŸ Áª—§|{±ÉⓇM~£ä*Kì²]Ø5¦Š$D‘¬ÍaîgJ;ˆÌ'•ά6ÕW·÷Q ‘`ÑFr~øtj&àp/N®ÚMÃH¨ÅóÁ>r &’&œ›Ä1½ýè~—˜Ì‘äf>ê;MñŒ’/“QåBŠ*¨JC Nù놽˜¾¸JŠÂ¸i4³Åts‚uµFšDû´«÷Q"4mR†D3Á‡å¹vB-U£PÆxޤsÌ'‹ÔOÉC‚~~!küÚ:ñ xŒH¥Þ͸ Óaâ…‹k:_,8I.Û³’rµù¼ÉÅÒžyí«c} 7ÈŽZ5C8f?úÍëØýŸj©[B€33‘Úýþ0quàŽžëy¶g¾q¿ÙÃÚAg³1fzl“ñ £¥ÖS‚SŽ7ónpŸzlËΟ“)¿Èg C‚of÷àÖE/Î+ Lý¹=‘­µ›+>)™NçS9Yeׄ1AU§Ùí«?n ^m§Ãzluo6Kl•ýˆ [0ŸëTÌ•í#a“ ªÕª7—•aK}›ï6ÖíœèÀj™‘8ý ÃQ:“>|„®õníÅONýÓ f=Í`TÔ3ÄvW²ÙxQEY¥TGGâÚâ©Â¤M.ÍŽ[%¤êí4&‘8Mª„ žQl%Ô1¥ûuûþbÂkÀ-ÇF®§þPA•·é4{ËÕ&ÆY¶0±„†!X_Ú14o`+(û¦‚¸ºoõ€*Ü4¤]àXð–_1ñ §×>úÐíq‘„rÑ Î¿RÌ#W#áX¢°ÊÃ`«×–R]‰‡fÀÉ~)iÈh”¶íJ­Ð,„<Çê‚b8R8±5†nJ8Í‘ªä IÅÚ°‡PãÔàÈ$ƒ³lKi©š†S Í,¬y¥c™¼^ ïenüå=JwÒ ìi5_ÛŽ$$€FÍô=Å&⻓]:0§É†$`ƒÙml1?ªæ}Ü"¿MG¾pµÛ3˸¾Rïv^ûÎtR\ E„ÊœÌNèôjw²bn„rZQ¸Éa%˜-3¢Üt Éþ¡ÇøÔ5&ðbo¼ëæ4ŸÀÁõ„ Df_ ^3n•„t°bàˆZ]ŽÈ{TëÖxб ¬¼ëÒhÊ®:>âY³âdEmÆ·ÊK"Þôžp‚ÓÒ´/V"lÜN|³³%˪a²WÃZ69)A¤4€‰\+í$uqžãVQ¡ ˆ,Ï㕘bÓòÒ5·Ž6„OûÉA($ZhQ!ì:ƘV=Gä0U˜.*šÌÕÊuRXų­è¦Yê°W‡˜k^Ìx|tØ)dÇã57¡R®þ•³ Z´ªHHH×ÒˆñU¢€°&™–ÌìË.÷Ù Q•¹Àܳ¯È{®ÄÙBMþ’Ùè…&9XÄ??R´²õIæV{±eáuÉw~"–Ï\RKöÒª Â•ÈÆQ\„Î?Pµ×ÊÜPR»IHºÚB2­]ñ¾ÝKÎJ«ú"“îXXž›`PléåÛÇjM«›~]ßc%Š]¿8d3TB¬0Ð÷3j=EÆÑÖ}ˆoû 13–XV‹ˆó‡qe#!¬Z@aŒNšFF´=ÁuæñÅ"¼¼Õ}#ÆŸÝÈÜI.6Y¥h¶{ê¸òD´53͈4á/Nµèø,ÊF¹tQl×ÍGÙöÃB/J6st‚„غ DZ)p@E–NLÍñ4“ÂLàh¹žfºîÁoÔk‘ÑbTÚרëàq¦á×Ü9æS`ßà:gŠªõïvCK —ñöÓgð—s‚N·î§EÏeÖùÏBÎÿÛžçC+•Ok.:àÈwbËÃjs0û°äA뛆€NÃ)²æÍz•ßâ©æ A¾ù­ª9C–W §iìcgIÜ;Ó¢ù­ãZ ’$ÄSIU{±Åâ“Bá0€ë§ˆW° fƒ±šª˜M5˲9Z¯˜+²`­h,`†6YÀ ¦Ci2"ßn žÅ.‚Æ== ½JøÀ@·°ås~þÈQõ¬:GxÉz€ñx(žoØ%ãµ½ØñÚÈl[±DÊϸ%ÙR¥âc"T–ƒÅf†ÐyU­Å4N| XÖ2Šײy÷åÏx梭 VðøÔuúnþƒY q¢Ð÷ÕvhØiˆ™.¼|ö€èfU¥$ i0C>ÄCµ:e¡î}äv¢u•æÉk6–}c á ‹æ)˜UáÍ@Ëî¯Ù¨' 0Ùì©çĉœÄ(„h¤JX“Ïšµ2cß¿à[‚!c™´CäØÜ¢vãËñ\İ®…xp:8ÉÁˆm¹§CÛµÄwѦƼ¸ZBXõ…Mù­æŽÎºvÒ•Ì9›y€ ”Sqÿä™Lu*‘Ç‹_˜©Fêõ‰…ÖO_ 4# íŠ2×Bp?J©M'ÌðÉ£ pîÄV¨‰J;ÓFî¿P6þðe¬ö<×0ÑßÎ&7>ã—«âÅÖ™Ož´ÓFU?;&µh‘¡7»}EÄ©ŠáÙÀŒ ÜAÇ;Z€§v“íŸì=­…)|~\l«MùÒ`„–HÝÙK†§^0q.ON¨Kñ'zè&¬ŽbT †žvˆDpì¾´®oÐkÏí'ýöÉÖp:ƒì¦jç`…‹Œ«G‚ªXó¥á½±F zœòÚô”bpç(àD`î% L ³·£ån¸Öt04t틹‡¦ÏÂ$iš‚¬2ˆ/Á—ÙÆ¼BI9òÊ®û!bµÊpw°(ºU„éGPP( B.¸¸¤Ýéõzí‘}£æ}-¹´,@¿] È„}Q Ê.÷2îåsöìDÁ”‚|Š)ȶ”¹5V@8˜m/i[ˆçóâÞ‹ :¯ üÓªËgä4n™gRÈ$µe2:YR»´ªU5l÷è "ú/è¨m÷[<®ƒÆê<8bjéØb¤àín³J¼À¶Ã,ÎãýÍ- h´zèòÄñ!åžÄ…nõgµáé.¼¶ ¸î¦/.S:6fìñ EÔÓ­0„”é%£Ì@³@ÒÅêHHJýv|Žꪳj–¯öMDÌ.;lõ “9ì€ñÓCÐõ’£v E°ø<45b¸tÖ\û}´SBºÁÉ…µ+äïpf:þ|y¯^lÇù$‹ô¸W)Ÿ÷þr’‚~µûÓ—!£PJ» ÊYØæ‚;;)¹mN¢RYüï݈«Ö=ކ_+áP·ÉbhØ(ÎxEæv?Å0TË{ÌÙðSÃN ¤âE(Èc ×wXÅæì ÏÀt¯‘‹›i^Œ§ÛT$Ÿß-ïVjA„È–ñµe -ù……QÙ"£û“ ò®1Ä{)^§lç¸ë²A*#Ê“¤\mÌ”VµKÔn@&Œ8É*QÚO ®Š“¢*¢ Wo`‡T×.òd[yzÅï†Ál°-Z‹å¨¯Ù¾­ž±qª†Ÿ€'w®uRµ×ð¶Ã[Ë?i¬RãÁ§Ì¡¿>¬œÆΩco"|šÍ‰©qöW¥]èFŠ0«+^Ù9³´&W„Ý€Øé6¼‘Õ']Ç6—]¦×+ã¯Òqõã7ñßãÿù¯ÿÃ?}s¼ôãéç7þèw}sü´o~:áúå>÷ôÕºM„$u‰»´Ã>|ï‘à(Â49TÐ¥±ÌoîgÍ…½»TsJwuï$#8\¶)w´3¥TéÁd©a`ùzz(Xjoí¹öeGÅ« "‚´ÕˆÚÅ+Ý! á#vb—¹(„*o›Ì|oNMÌ ¢ñDd[Ô;j·°Õm<wr°±T¯³0}†áH(0q4ÏàÒ²âíÎ)¶‘ Mâï¶þ-a NbŒÆü±œûìÄvvA²2…Ò¡}¡]1\ÖÜËË ,GŽÐË ѦV+[–±Cõ¡ï›)þ:^a™0  ¬XÖ(ÇaïÂ+øva ïbÀTÖ­aë©Ml>lÁðW“˜²A›ÁÒ`çê v¼¾•tÞ6âkø8¿R Ka?d¦¶øˆêNœf¬”3aÊ;PzÇrˆv’0!v¤¨…°¡‡.õ ù8LmÆRÉÆb¹Ã˜5¦§fÚŠE ´L¯ôÉÚU»Ìo3’ئ9.`Ý‘™7ÂûÐ̵»ió@pÓX¾uj¨Ï~b5Áè‘`^Y/á—$µ”$Í0­‰[üìÁõ<ÈOµßíäÛ¬aÈ™ÞvÄbïî6LG“’¢1¶-&x$›<™ì‰¶ùWq€ïîv1³³üÜ|%žHcTs.°™MŠ™MÊæ´[k¶±¨_=ù-L½ò~¡Ã[·¤®ÙJ&Íñpè&, ãF•öö€[æAîH\˜ŠÍݹoZåPéugî¦Ü¯¡‡©!¹wXÔk‹d5 nº+ìðvߟs}Ås¹idßÖŠ´1‚b‘Úê÷{Zª– ±í˜¨ë¡ÐÙ×ñJ±åÜ?]f’"#Ó>°‚"õ”„-Û=ÜÐlÜÁX‡øz÷ïzXÎ>Ö¥eªV ‹ÔÝÞv/pRøv†Ki8: ¥ÿ¦ä &0”Iî®î ¦nôiÛ£-0A‹KC5= œÜØî‹ØcÓ‡Ù/>­\£g.¼‡¹Ã2ªV V(4õEÅÀ*æ<…Š,õwÛ±©]•Öü Sáß±Ëu»Åi›Xùæa”‚9ÐmÀ‡˜¥ÍoŽU_º—PèqœÝfBÍ—–§k¹š+mÐæ$FÌ#n2¬#B>"G;@)…=(&YYQݲ}~A2c²÷vÔ©Ç4aÅ\¬Œ9ŠRsª<µDye…3ІF±dKÈJÞg ›½ú¥4dÒktl9‰ýŽè.äiûŒ\'VŒŒº-®5ÉO}Š]¼Dè÷ß\,$Û3åéÑÈrœ–b»nCšâ< ù1uëÁÒe©sR‰æhàœ!Vü„j¦822‡Ú¹Åþª=+×…«í¹b3U?ˆs¤¥ßæ¤çãô«<3¶a‡õ^§z r½lÜÙ sœ±ÙZ[À©0ˆ¤sÎFö¯‚½joá?@•œêhëkÝÊPV÷Ú¼ïÔÅVdCÍ p$³£4ò(…É1£ÉÓ||øThê¢/Ö»è;ŒìTZ+ý†@)Ú%ô´¼…»@)Ç*{ìï—CÉÊ‚wý"o逗+Sÿu¶aQ&A;6ËâjbŠÃV¤  ¸›äl’õý; $Ì µ$ð{Žª¹‚Œ¿)Q”%›èÚš¡Dj¯=i¼ð„ÕöÆ_ÀRœœ¦ÉËg!UŒŸã1JÇéäød :ð™îX&ŸaA«;¸Í[qªŽšAš2kÙn¤ÊºxàÁŸ18TÕ—LÅtEIåNÂ{M'=.ͱ£æè#ØG]¤$hj¹›˜‚a©Öo±"›rKS°’‡ÎnïÇP[˜7íHµã–QSZV¡SY\µa@¸3ôUÁôíñoQ¥3e5ž#æÒ0ÇûÅNØŠÓ÷rd”úÔ Ç)¼[ Æõy²Ç;0®y:øMÅow2!Ù¦2432Ù6"hèºQ³Ý{|”tGÌ môPf®wÜ=¼òñ1œÝÚm_óaÈM““Ô3ùv …ýb¶A) <ênqu˜QïµûµHêÅÙÏ 2æ4çs–ºOÓâIP¨:_ª^Ç<ï´TÌSœžÍîq³Ó;í^P1hø²ÐZ Ï:!‘ ±Ø›ÞârAâÖŽ6UØEWØ'ÇóP»±ÕîÎ^[à AHsíûf~¾Î-êØ,ÖC¨Ðöa­Æ¯aœÉ¯×/Ž–x⪟¦¸Ðk:.tq‰¨=³šõZ£,_"'XÅUNcï_o&÷ çᛟ©änúØ‹äºû2+¨¾:lðv¥œ…!¿…`û©áD”¢6|Ð8hN"Éõu}¯”æÓu=¡Í@ É40¹˜Kæ©Wd)JŸª{%¡e `5/Í‚˜iðŸÇA+¼ªŽËƒA‰ôÈͳWdv¢7õÙÁ”ZU>¹xý1õ—F?þ8ž ü8þtž#ü8þëñÀc`p4x¶ðlnðL¨&SÐUÂÕ­¢Ù®q›(|™¾„vUön"+L©Q²k»^±ÅšPîˆÅRÕÉ¿BŽ7¢™eqÓ•U½§¹¶,eôw2÷žFnÉxKh+Åq¬ ­¶9Ùe8D–g÷l"«Êý®# zé ºGažFòÊRXGxt§ï‰ÝâËò^Ä;ÙÒ´ŸÃ¸P§ŒjûšíI7¦× ™‰2‚FE°Po-'ûÇbQ(ž1M¬ ~¦§ïø–·ÁÌ\  ™š(´u5øî[÷Q’b“[Å+ù¸‚=”’t9Gy¢ñˆ¤—ÕhjT2Z‹ªƒ}s)°N$Ç[7ìí‚Gñ¤Û™>@XxõžJ… ë929Ò™%HÅVnŸs<‚Ê%ÓKØb2!`/#FÕIy¾†@jVÎPÝûÛ-ªÜ]lãS–“Ï¡X·Û>^gv—ß^‡W²Ó }w§šïÁ.{ضѠv#÷¥ß­w.‡DŽ™Â;oïy/ÚiØÔêW4¹Ò©DÚNÆ`œÅèg4âbÝnG°²” ué„‚ÄX¥ê²î î¾òáå¬.pê2oV†¤Rh«šÑI 6´¨H‚š1çÒ)V<°ÐJÓõåàDð”Mu¯ùÈÄì Å䨠ö6ä!A¸Õ!ÙAî4XìK‘{-ˆfµœ”H6¦íÐ¥ýqôf½˜‡nmO¥ÀÍóMá0ÀÊ” €­—òP¨c¨[îÙ©À6‘›u×ê 삜Ñ^F(d•Ãb‚6Þ\,À^±ÂÔCpNw€Ä›M¶U˵ÉÃlIœÞ{€¬3¥ý0$¨EÛ•ÓºäÅÍFž WiªÍ^ç­J±§ôöåÂxµ§4AON• ïHÊnò¾Ó 8“d>b0Áï u]Ï©‚4-ä㨘Yfè õ>Ûõy^¬úzJg©zmÁ¬œdÚnUñ«>°£ös1]™a_Í„¹Ÿÿ æ{.a¿ÎíšÝÝœ ¯!6@ŽLŽœý2¿Ei\œ*åáÆqž"ð‹þ¡|™˜Wz¿4·¸*8_§›YZ˜ç¨FWb»vºfÛ 'sϼ¯&8Ýzþ=X/< ;$fÏØá«Œod9!F§ùÕ³eÒŽæþ¾ùmðè œ€ÔÊAT%C ÍÁ²ýµ¢}ШåÈYÒ›t.ë,H€zº¹+c{%“åˆN¼Z4’3¯Œ+ñêBYRøMêTFøîäíÎÖ„‚J™Å(*V ´e«CDÇá’‘ýÎŒ¼äRW|箘¤ßu¥ÂÎ9qà¯>«/Z-0rʾÓêïEÌžA“¾¡gØÉˆ´ÒTP*aŽ;v¯ühŽ„í°&å¸$¶t±f˜‹p®Eã0Bòˆ· TUo l‡4±v7kJS?ÌkU°l?kX`TXÏ®•‡s°æusk§9–¯Í4ØyõÆÞXõâÓt”ß»·j†ŒÑC(´\q1'A$x$;T²W(ÁµÊYØŠ Ž&ïj¢=÷f¤¶KÖ0h1FA-ö&y´Å"¶‘jVo³aœ #•¼Š‘6â/\~e÷$.gÛT+u›RÀ˜÷ÏS¸I?N´…êUDâ…¦«ó›ýõTµ¢±!øÍ± ‹*»^v!°ÿ"²®)>ÔêÏÂò1º÷EVS s²;!hŸ®×äùPr ÌÒ]:Z'Åä\¶[y=0zÕŽÊë#È®ýŃKÅQ0{8ë»@:³U²Çä¡/ˆù #*ÎPÎl™.ÙëÑY©…@‡³¬fz cï0ÄnŽu§`LY¢-¸0r}‹·‡Ût›ÆÎéÓP3äè†2°Uæ¿7^œøDZ%„Òƒ¤?nòzä [w;Àà¡;Ñ3Küì0rúܺ ËÕ;-³x†òH¢ì÷‡èglë´DAÿ¦Þ@*Èt÷P³ë\!Å1ØÜ BaÅÄ\mÕTcã*áß¡2ªy"l6"r%̯*Uk+#²l»—û7ð5vëÊ*)7{î:;œ­ ,RË(wüœõ+OÁY‘cnùñBC¾¨ã±MN4sQ¬-†Ý¡Išâi´Ðù¨7÷[2j þäþVÛ‘á×r#{N—NE Ý”hBPÝâ)™ñLƒ+xµ¸më3ŸšÉúC¼BS2aØX›kÂjµ@e =8dŠ˜ â·É<@<{FYèæ©”‹ÎÈ ¬!¥°·­ÍóðÓ·îð+Wëìˆ×•A°—jçÓ³Þï¶s3½fFÉ|O8q’L4èû?ÖDí,¦ÎŠüEMàÕd‡#Æ]’ûÃ[\”ŸPµNpC”kÁ<\uá^XÂ,á–éœRK9·¿©)«F„ß‘¦ºSÍ« @ ¹85DÑ•0·6Ç\´¼ùª6 à Y…UiÚ±ªßõù9±[#I•\ØÔpRQLGÜ''owø¨nô*pƒI¡.=Œ#ÂûH¿uU}³Ú"!U‡u±Ñ|çWJÍÁjt°‘—u·× Pz _”†* fJ½Õ`ºHL¸àfýp˜¡,.õÊÌXó}Þ·ðAINÖf¡ ”-@œ¤ŠJÇY×p2ïžn1‰uˆêÜ=iÆ|B§X=^RÀC-XÍà¶JB\…r½Ý†ÁNÛŠ’ħҀ"wˆÒžš]MÞTT’œuˆ»vÿnàÃL9¶š á=ö'ƒÉå?Ã`>þíU¡€Úè Ôsж+¹íÝEå$=):ÞÁáô·a@úN³EÄ \Žøaón|:FÌ.6ånÙ;¦Æl6ù•°ºšlkç!Ê߈©¤ 3?:¤øë¶V{¥Ìæ’¸JƒG”µç÷Ì"¶Y¿ÕP¦ØŽ†–ŒsAÌ}Ò çN «(Ù4Y½¾·/Ðú’oZ˜†ÏQÎNó¡BbÛ-&ƒæpf¯æTôÉ‹eF°*õÅûÐà.ûp°‡Ä~Þºém·$Y–Ým+W!÷¦x&öz|^¸¶R\¬Ýϰªs€ÿ6È)61eNEõM° >¸ð}XS<ò£…>¹OuûÔóé>¯@¬l¬8¿UGÖèΜ¡Ù®ç„wîÈÍ ˆ©Õ]JŠŸøp`Ó¢Þ3ÊAUöÁó #30D6¿ š$ÐËÑ)¬¥>™Å˜,¯ÔOœöÑC@Öå*AàsCÅìÜ`Œ»[ïײ®çu^SY¶Ã;nakgÁü0î“£‚œ¢–@qƒŠÍS¦=¬Lîë¬06¸I%–°Z‘'dº9—‰™©…9z`T ­ùͦ7‰‡IéO\^tùdõ—e\ºtZýÙ³ºã¨tY§¾F#yiäÝv^X¨™ïûT¯}IèÉ|ÍP¤;v$xý¾bA[°F’±ÑsrÃƒÑØ¸HßV4F3θH±aAÝÛìx:Ú™ïÔLÑ1w7EÒ¥í?е<Êž·Æ# Ø£Â7OÚTr#á.B¬G°<\ÐÔ<ÞœÝv†µÝ|z 5Dwêa0µ?pmÌ ò>oòoÍÎð·ß‰¡Ðе"FCŠ?4>Úš2äRuCú×}è?Y˜¯%©<[˜eŸÓù™ÎCàZÃGD±z`åÞ2hy–a„ô*˜[¨#‰ •6džÕzϾ땀\ƆÍÞ<Ú*؇DDH’%—H/íñÉ'_ÔZDx¦Òø) >Éâï5ìx°óפ/9E/´—4úñ¶ëÒùÝB;Ôòg[‡¥1)ÍðÌ ÓÖ•0¿2’V}¤ƒ;F˜p>}t©[ùþiVÆ[P¡›±|ºmÕÏO£ò°E0É0Õ‹þZ£«\m¦%&;ñ”Ru8‹–#z÷˜¡.D¹¼‘éa}ÌdBü²—*¸i3§*IÔ–ê•~sd%èÐ0iiŽ>8ò|ñl”6›~'è,À¥Ž¬{eÒ£=@Ö´Pósw\Õ¼ÿõ¯áC P:{݉]Ýœ¢êé§Ô;ãsµïÂÕ¼$%³GµT¬*òÓ6HŒŠÙÔL?rð§&¯ ~‰<Ž<4^ϲ ú‹ƒi¯7í¼Îñ°ôSU^l÷tßKÚÝÀA8)¥ÝïÆM»7Xàónš'é´‰ôÉIñæ±åÚpÙR©å6¸÷JÕ±oN„ÁéјRp£ÅãºÝNAUsëàáêÐÄD·Kíc™“ÍÈ-1r?Çcàv¿Ú,N›ýþ¬ÆŒÖ&…ƒÒ ƒÚý.B³EØb6?$DY£ýšÒªQÏivì½LWLßìdʆ_ó§™d“â/Ê!ÛÌv2èCX4 aÑ%ZÓ_œm{mªˆ?mþ¬œ¡‹è^Z}¤ÖL]r«É¦?"Y,¬ÁÉ_žaEz"ƒè/È•½2­ùÑ&4Omfžì-®ÐÖÚWyRÑ[*¶¶§§]£¿´@Å3»\Ÿ6NfUJm!¸~¥Qf8-yÔEêó‡"¾É¾ß:Œí¡ir÷ØÀµ ÓTå¹Ã8V-,)ôÙé¤MÌ®í8¥hÿ°²w¶òîŽkÎb;ÕQ}ÌF»7¼ätZ>¾™öæHpó`)Œ·©ÔlG»o¶h¤*j9f1ž‡ªsçëm§í¼°ÛÔ×Ö¢·A£WZw”¨fÃ[¬Ý§G(ß©‰µº=¿u$´¼§7‡WÉd+… FsoäBÚ®¶~•9¬†4|f²­êõÿâèàëÂq»™ã‰?µ™“¸qL˜gw_!‚_ƹfþ/TïVïÖÓŽ«˜3gxI1ê)&«½ã.('†ÅÕ-.…gvéóÖ_œûäµ%.Ñ+!Ø€3!¦« »³l;7­¡Ó`«±ÑðƒÄyÙÌ‘™Â£¨ L’Ìž³ç™ñô˜E—¾5{±Ã©'>¤‡Knê_R·AŸ›Š 熄,±z˜~˜Ü“ü×/æ®2pžmÜÏîâý;õL 4£_Ü<™ÈpYĶ)åV_“rY‚pc8§‚ã²!klÛåÍÕiÙGþT²«ªþ­êV5/N&ècrŽÎN–ˆ$<*²ù³o¿ãõÅ1ŒxªYÂ;û>åó£Ñ“+Ѳ»cp•Ä/¢•‚ƒ({*¦?Ù3HrÕÄ[ÑQ·×S‹¨€xæÒ¯$Û(ÚÔ¶’ÒÓ"ɺg[³ÍÐ׿Ûó5eçfzkç¥6æ†éI’n·Ì×¼”±]×ã‚×p[Åú6ÛEÎÖI툀Ð;µ/§&»ÖeëLK3 å0<¢ÞQ³û#AoL\lׇSSõ«ÙÒ¤O]^¹À^þ[£ÿüÙÀØjòñ=>é„«%s"mÕÍY‰1B¾zä"¿£"‹4ç'/$K5²Ó‘éTÌîab‡£.´>«ýåtW“/FœZ¶Ä.Í#åÀ¦v qèÌa@B”x'äÆPiBMŠp[B9iÐóGÂ&Y“ØîSRc GQPZ­O-ö¾¬Ì·uì¾l[ÁT5¬cPˆeGI‹"{G vݼ8öIdusë<}¶\+É”Nd8#È}8™ºÃÁ¹š†I²JKãh .« ²Ü±²¯5‘r»—1àE1ÿË0$7SA (eNI³ [¼Uäzi¿—ð_ŠçØ ?§Î `|ÀO÷ñ”CÚTóÆ®ôˆTXú:‘÷ïöÐ*k 5ê`6•HXÑ…-rç!ÜãúÒ¼WŽïé˜OÑÆ-ŒP†ã‹\Ça#Èo ɯȂ·OBi°š¿•*7›<Â52ÆŒ Í{èÙX~å͵°$™š¶ð×üŽþ²ºöœPÌb¼<ÓnÚ"¯ ÃLGB4{«ºû¦©°37õÕqáÊ Å?t{a%Ú* c‡a£‡~ Ó1?Áb6_Qû»åÐÎÙªúö¼3þªÇ“u˜ÿ"7ÑÅ&C/d«J›4Ôév]á÷7{žæç_ü¯ŸÊúgUmOšÌ¥í_qû¬H@ Üv Òncâ«=;Í-\Ö:+Ä!ºv·'ü0Tˆ¯(K¦NÎQØKhc Òd£Dk#0¡†t\Û-̵Û×ÂPZ‘l ËÁn#8-%è ÚÒ%lsvž©ÂáÀK•øô‰¶B×ÝÎÎêÎîáÈgUKÖrŠ©5RÏù¤\­"4ù›mÛ6,gŒg+ì*úõ:Z¿0uŦ{µøef¶Ë~R!‚"fWCÉFœÄ°ÜfÏÕ¾† ÜOë½ÞöKt]Î47ÿvÞä¾Î°‘t¦bÇ„U r©¡í`zòœ¿×²¬ƒRyæ¡çð÷MTï 2¨ ø; +]{‘곈ýµ€GY³óUZ¼»Yj:GEæ®…·?P#‘­”1š”æ[ò3÷HÕzJÞè >«ú;é*켆Lj‚“ç·Â†ßÃÈo5ÃÐð0*Ãe;,”±3æ°3Jèp›?PvY.˜'ßd^mI ÊKdE‹ñÃòFóN™ÓíåÇ)<å9dT³ ’=*í^…‡8‹EFÎbl&eZÍ ÂHé¡/N°CN X“ì£Ç'ÚðEÙî"ý)6XM ä`¶í ÷| «¼8eùÙ‰5xøÛO+¹jÖ„lÁêkçNçq ¤`9[šZ»#bR”4w‹ÏD§ã-"ƒ!‘¡Ö3Ùãi†8¡ò}÷?»AuÜ tè~)²V80löcdœ õ N NæÄøÅ‡ÝÆ:ìÐ{=‚OY}ó&¿È†ûz˜óâ¸á';ï¼_Ž2ŸÖ«SbÅÆÃ™üc0õ„ù™qcëê 7QDTŠ!”Ô”n¡}Ãh&ÙØ—@8lì<Öªã¼uÁ¬ÉX»Éæ=Y è9YX)„\u¸UW:Vû/îÉØÂmõ¡S¤„û HÐñ L8äuP~œø˜fÓD[÷fû)£NÑcžÖ ÒŠÁ2bSïç¿ügmD¨ ~!Dž d;£~؉6“Do»ðˆ°Œ#—¬(W®Æ5ÊòâàåkËÞŽÆó8⛩÷óîXì{Ü•f¤È&ì¾Ù|¨(pmú´¶%œCB_ìáåi²ÿÆâð4TÚÝÚn{€ pîFýW*÷ÙcÞbÏõ:’MgÌITø.–‹Þ†ÃožßÊЯJÀÀÚI§=&Âý\kL«Ô‹ádÍ}ˆm†ð1q9ç•§Ý>ªyÈɧÉVW*Ï'<&*”)ðeW=¨¶ÒÙ¾”.£Uñ²-È3ž}aE.øa˜ó,!¯öö4v;ÇiiΤòàÕZTOôÙ~|1U.4Sø¶yðRûÁä H#_Å›Õ~á³é Õöÿ  ­‘‰3 ßlC1B$`š«áˆ]Îo|Ò·æ˜ ’¡8Í[É­ÂãT ¡3DwëÒë~T9SÐá4¿ïªÈ5ØìWË&Rà‡Û(Üø4™di»j‡Rïëä$ %¿ðì±~må¾n;ÌÏâÿ «Ô=87•! »¨™D`©ážž~ÕËwú>„ò¶”‘TFƒ“fÓ-<=ñýÖ–hÕlpÙý¹šhŸ° 3§Â"bêï)[  îÕý'¥gE<Ö$·²«Ê½L”põËRÚ·'ÓåÇ_ìú²o¡óç׺+Ë#¿Y¨^!çw±ñMu¿¨=4¢·‚dŽ-–GŸcš§!´7ј>ÆFKˆ¡ ‰kó³M×ÏA…èK.$F€?£‹Çp`Þ3QÀ©V€«H‡#MWö¬X—ÂEsJu]pLxÁZ%BS¸´è@×2†3á~§¡sÀ2(ÃÙtªÅö—©ÛL~6J ‚-L»SÔ“™Â…è—>8¥›±§£ÊÆ€Q79?JÖ>6±Nk0ÐX¿%œ§òþžB„óz¼’âCŠ\üp‘K%œE¸¤ßÉ?yؽٛ£~3g@[-ã#¬ˆ¢7¬t )B¢&î6~˜Rkð+àa°bÆ…’üMUÎí(«‰4Ïöå 'Q€¤ÕM¹MB²QÊ t†Uòö³²Û¶a_ˆ ²ºÁ[ž´½[Ö]#ƒDË¡Yfj5:¹ÊÛ!y#ó oàKiwubýp¤~¡¥,o‘ÐŽTö6F2…è ß#‘ ³ùLªPe3Ù˜» ê,!´ gïÙXÂ~ß Å8‹µŽÈÜ:ÙRž[$Û!ë¡ïvõm”§ü˜höÌ2LÔ2:ãHÆ[°‡îK¤aRpò¹|BHy· ù6ópég»v‡RsùœU½ý±;r¤gµ¹¬K7[ÎÌ&áÐÛ›–’“ãy(çb £K­lª5¹±o#¼Ô1h} p˜ïáå0c¸‚`Á泉ΔŠN¤ªÃ”³9 ö°;þmdŒ°h6£½Š ^§ÍšÍo¿ÀÝ·ªaVá~Ùù’)8«nÅ>™¼jctÚÊG/Ï­/¯O=^¢£ØïÒ),òðÐÎ,“®Z‡wSò14hî¨,#LÍÞŽº#·ºÀ->>s=|q`ýõ©y æ¡Ê_6O2¥Dl»Œ™7®þuÄEô‚ûN£‚‰ ?7ך[})†ríäq‚\ÊRÕ2ÔxõÉøíÅQõÏä;¹=“ûµ‰¸ük~hðèt¬ÌËA×”ü4Œ¾óÎÝÉ#¸i¶áTv}J§—?–#í)°§äÜsbÀ°¹’2 ªˆŠ­Òv£C'l}«ý´µ@'³0¡êOžÏwƒ'ó°%,å32 µw£=’#gÏuÀ+Ýû†¸\.exj Jœ Q3ä€<@Œ2ûÙì"m~hxçaL¬x6š1Ž!×»ÕZAç×›|0·œâCÁ½è_&ÿDºSZJ?óž-WJ ýƬxÑEüéÎÕê••0­äÔ á½é°iHö$6=fŽ’ÔñoÕó!Y¹­FœóÎ2ñ™JšÐ˜˜O'yñp¡‘oÔÅUÂ-ÕjŠ Ðë^öÅañÛ#öûò»/Ž< ét%¾8r[Ôb|­9m0Å|;í3Ó¾îÜ…b³þfî­.Þ3À–ã•vYúJ¸‡ð—Ÿ‹Ãu^DrƒÁs}Ýþê§Õégÿt»Kúß¾þæÛOÿñ•Ž¢®Bcú-Wù_>~÷ëÿá»o¿ÿðõÇÿíã×ÿôí‡ï?õm™ý†ûŸú飸éã×ßÿøû>þq»_úøí¿ÿº)wa+†¶E×më&´µŒ3õB÷:«eÚöŠß|馮F6€@ïZÊ\ðl?SÊJ(™e´‰ÅT:¤%­‹Ô»z ÉóÜœO߶ljb[§YŒËFÂßnÄ7Oö^ŸÚNݼ• ÆâÓöxÌkg•üý*­·ÈË ýv^8—“ÅݶIô/g?‡e«';ög'Qißd´§³ÿÅ8R6g;ò“[K“CfœÝs~1(¶‹"£ RAø¶ÂÁ1([ÃOË[¶º¤›¡‰HrŒ¸ßœ&C’-o…j7gŒn#FcŸDGœƒìi ¹6{ÕÖlöóö-ù¨ÛXÏ BSd€ó,·¿qæN”s[ÜÀ{íoþZë¤r¿ ë“LN/MS©vñ]þüù¢ùÏÛ‘­Þ1«(q›T, ^`Î[äæ7¼9FŽX #ùm¹ñ ËXf©xlŠŸ p>ÆÒËf³3½P3n«Ä²}|¶GÖˆ£a'úY%û_ØþöoþyüÃþÇãç½á³ÝÔäðýï=ÛŽÝC¦¶û_õÙOúæ»oÿôÐ ÷+6 ýóÿ±ý£@¤Ç|<Î?Ûl¶æN.Ú¿=ÿ?ÙZ~ûã§?üß¾úþ‡ï?è_}úðÑ»’ÿ¬ÿ±üæü‹oµåv‡›²ùĤY(¹EÚ:W¥kȼz¢h‘¡‡œk–ŠX 6ÛNçm£žÜ>&êWVD«Õ3º­AÅ6_ÅÞS°À×Éw3-$§¨Ôr¢K×p$/`FÌÙ⥢@›iîHWÅXuߪ²@ë”ØÖO²»ç—+4»ÕY$J.š +;,ËPt’ÁÁJ†K%£jÕpt‘ ]Y Y#ƒíkn[iZ©eÞ>×dQŸ\J¶.U›6SÚíwjF«õ±kÂ>v8«\ÒƒOéÝ·µœòXD >8^ü…u½¯›/Z}CÕþ¦Ÿ:‚#—*›{b\&Η6#IÒ·-F{Õ"WòmcûÍ—WöŸõ7ÿ¹_c¿é$Ú‰»•o— vŽ0«0i[‘ŒðÅó"eY²ì_µDV¹·3¸´¨YÍuêúí&ebªÌ&ŸÍSÍÃÚû´d+ jÖÜEel nÿ4KjªGcíp8‚²l[.ÍB‡º\"?Î%ñ[mµý•Ëu«¥ýùÂ].në :_+AW[íª!ð¶cK±­[¾“yðÓu+>‚Mf"ó§Ž7›â™–­ó>­ÜŸoZmûµJ[ÿ‚]«¥å´-þ¹Ûç—Vxíòúï±Äë¤ÊDV:„Ë$Z£´˜]ÒéÓÿôáß?ýl‰«ÌûQ_àûþ»_å”þ§Ï®>²Ý¶£¦ÿ¿ûÕ"ܬ¥“åß¿oŸ\¤±ÝÎÈŸ^Áßÿðý§Çßþ燯d§; kú÷ßúe½e»Zÿøõw~å_¿þøí×ßúìµûðí?ÿáó—¶ëüáÓ7¯é·||ýÝ·ÿüýW?~úúã§ßêK=þàÏé;ýöß>~ûiû†?nôWß}||ú]|èûoþðÃÇøÔq³çË:x»?«ƒ?¿íúý~ÿõ¿ýî?¾úß¿ý݇_úö‡ïoÿøÃ÷?×ëß}¥k¾]ž?}üðã‡ÿúáK·{Û^¾ûðk=Ä[åÕ!Âl…ßVô”ßüêïÿöÓö¾?*†ó¹~õ{Ÿ Œ/ÞÇ‹;KAŸÀÛÓëû*úøƒþrý•¿úûßÿË÷ßð·Ë²]óÿó‡ÿõ‡íß~ýý¯ÿÇí…¿ý~Îßoÿ»]ÿ_¨O¾ô=–µ?ê³;ðÓ=£ßÞﳺt†GÚg5ÛáøRO·O’Ý×¥ÚÔtk%‹·¦­È䕌yš¼¶²éÖÈÓ¶÷«'L £Ì"Gƒ$º¢T›y rƒPÚ·¿dZpÙÜzúI¨§6ŸâÐANN^LÛÆ]WÛ~oÝ I„“6ºÌnÑrY62ÊF6™ëþŠ‚„LúV°•™‘6<傽µÊM¿&óH¶6䈟œÀpÊdÅiƒìI³ëÚ‘ÑÉLhŽÚåµ[º°ûÖˆ¦£=ºÅ¬sçx%mn•Ò—Jƒt"]þUJƒ/éç²÷÷üç¿¶†&q­§U¤hƒßXP®"rm6CWš¦Šòâ$Ünò¬ Òfóû.æYFš¥b@ !bVaH6æUio­öz¼¶íôúÛóö£Ñ1‰#£Ó»3u)ñ*!é={þ¼]õúÑÜ&ûʈL§”¹4¯üõÐt”N£¦Á©âߊ¢z’LÔËZ‚M¶uOßõ­‡æŒáo„=7—ê$±n-ç°I)Ûïdb ðòÂk,Õu»x`Û†¶hl"R vd«Šùx­¨&ÝÚâ¶ýF[*%§.åËÁ§k@”£ouËööºµÕ;‘g†ã7µÅVkžû($Ó²­´uÍ”@zn™mui6¥Í#sv`©6àÙþ‚,‚UiL„¨ƒ×­iøÏÛ?޺ f›Y.““xÓº®}¶}¿m±·wÛ)šÂí(_NdËlˆa2§› } „bg«ý¦á~±ø>i|ÿâ',a¿ù3ž3ÎÃxªØÊµ‡ýݾ•¯y}ôßÄ;ÿöí?}úÃW2îÝzø–úx]ûÿöõ»ùôéüÚÿõ÷ßõÇo·ºj¼Ê?|÷íö?_µñÚOïÇ?}ýã¾þøñëÿ¸ªÒê¶i=¦Ïz˼Áì/ྨ.•þö6¯š.:—³Ú¯4Ï?»öu™ÿJÏ7¿X8ÖeùìÿbḠ"ΣpÜÖxçIî² œô¼4Y¤äyZ/z£?ûKü¿ÀéþÎõ/.˶β8SÛÎÕÏ ä·§¯×²z¬m¡Mÿ/ç×È?«x¿x¥/®õ©„Ýz¸ü %졪޾ì¯þþþîÓoÿ—?ýáO_,nÏ‹êYáÿÿÛåPþòåð¥[ºÝþ2£Ä:QUGr­?ßOþ(ÿ¼zº΋¨ÿòšûâ¯øç,*5xYõÚmzì™@Ìû7?þëö?ÿ´82% Iocsigenserver-2.2.0/local/var/www/ocsigenstuff/scalable/application-postscript.svgz0000644000000000000000000002626612060404165027172 0ustar0000000000000000‹í}[sÉ‘îûüŠ>ô‹hÖý¢‘fãì8ìØˆqœµçqA Ç Á ‰š_¿ß—պƤäõÚD̨®®KVVÞ*3ëÝ¿<ÝϪϓÅr:x¥kuUMÆóÛéÇ÷Wùóï‡éªZ®F·£Ùüaòþêa~õ/?ýðî ‡ÕÏ‹Éh5¹­¾LW«{øërý<ÏïïçKyóaù›VåÅíݦ6GóÅJ%s¾VæÚ˜!j —_V£§a÷UŒ±ïU£”ºÆ³mÍój½}š#OÛ½üøoóº ^Î?-Æ“;¼9©&«ëßýùw›‡CUß®n[ͬ¡ßé·³$£ûÉòq4ž,¯×åòþ—éíê#°Á$ùùq2ýðqµý=½}…ù™ ‚ü^àíTmM©Ú4Û~äR­ªEÞI•òuš»9Â÷W£ÇÇÙtŒåž? çËÕr¼˜>®jŒá×n/óO«ÇO«ÿœ<­&¥QL³5gy,ïÕ o˜<=ΫáÝt6)]_œßO®§ÂbŽ/ãåõüéë‡ÉÃp:Þ]ã½Ùèf6¹¾ŸÞOV_Ëåýh6~=s}`èz;~º}IJ]§è{+|mWø 5ÞÝNî–¬YÖ…¿°0Ižá)Pk2Züa1ºbC•z¥f÷IÐV7ïà­åjþ¸®Û¬7JPÇ^m‹çwwË ÐBµÊ–«¯³I©=ÏgóÅÛßÜùùQŠæ@¶éêë[}U]謯…ÄÏn =©½1ÑÛ˜®zï÷º­åú[ŽÑùh;ó署ÜMîvFúã9ÝÚÜÛmVÚåÜñn'v¢'úYÝÆžnõñÞÆ“ñÍøæÐ‚¾»î"Öq<\c7šžMÆè{4û2úºÜ @HãÛ‹ Hùoz0ö0BÛ”·‹õ¡)üËÃtšýi9Yü‰tïÿ>üe9Ù«õçÅèa "{ÿþê~´ZLŸ~ Ò¤uN> >Û_ ¹){ïTôüžSÔ>„7Ûáë÷W)ÔÑÆÖ`¾¢0Û:íÂSŸ J}í‚2ºU¥Z™Ú:·èûŽÍ^š6k;ôxv;A…ܪ0~Âp±-Z%_1T­jãMÞ"óÝ^½»Þz &Tï4g-ˆU!Z›YÿšX'4¾Y['œÓoÎDƒ tŸ‰«=8X€z¥“¿½|œæ®w3zóCweíéOõõ§ûû‹ÃxjãgÓÇ­>nФù}|+²uM›R†-[­µ¤…‡ùmá¿xsÉÏrÜôvõ°zóÅpüiñy´ú´˜ìƒóQºÍº…ðU…òûJk3H¦öÊäªq¥{Ö[¥«¡©cŽ.BíTÎÞTC_áZeŒg‰VÉ»å[*UCíê HjYãm@;Ø/F™$µT°¨¥j•ôÀ×1iís¥j| í1çs®†¶Æv2f€—I-Št°âÀ@ä2ÆÉp²òlǦb5L5„Õ˜6 4:);P•«£ãÐˆÅÆ U¬}rÊ †CqIW¹¯ÌØh©Æïh+kô¦ùN¨Ám­¯Œ¯±/5æ;4ìïàq·¢Ù0·@P†õÍ84ƒâ(öÃ×äÒØwÎDÛ0§µ)eCí30£|5&Yív˜´©Á¹sè2i¨1IGºLÚ¡N¿Ç¤Ám”>ÉFú @0]@µ{%ê3™DÊù“ØwÕ¥~G…ì³…ö‹˜S¿0Ý+kcÜCÿf"vh.êø€8Ý×qÊʸœûÙ£òÃ#*ÇÙ’õ¹ÜXÅÖÂ~3nÀÉÚØÚåÆç³Ù^¾=&×{¸1º¥p³Ëc­ø§ <1&“L@¸¬<ظظÓIdi¶†Ôî4dxìTåx\& àHàC9©ì@«XCW¡Ê¹ÎNA¨Ì àxÙW|¨sVn2¨žÚÂÌlä^àiÎj°/5Hà è˜|‘¿À̪_Ê׃ül-ŽuÙ×a–õúZ¨¤Ù¡ØÝNP! ·ËH- lW…*@€|^d¶8J XÈFÖæ­lO5ÀEÈG.¹-YH¡?‹Øƒ´;c"™¤4ä!| Ø2䯽¦Äâ±àZGÍÕŽktÐùo§40þNJzs´á~/¥ýÈ8'ÈÐw¶ êaK½~Dq.A¿¶¾¶tÖÙ/Ò¶þW©ï5XPjS¼6…šZï4õ×—æ k§¢³;àív€ùÙÖÂ~saÎyZ²Ú>^;o\‹BSªŠÛíNyj‹Ÿ”£Ú)@iªMªÅJ_Áh£,؆Hƒ4Î@ðà IòA!°z¥  i6¼¹\nk r\1™€Ã?OnÃÀÕðˆü´Ý!wøäVVqªðÊr›ãçEr[¸ówþyR ¦i:*Êäã¢à´ù;–Ô`׿ÜmûC{õù³²Càt Y¡¥›lœ5Ù*ívœQYö{ôªT2¨_XTŸ¬ƒ¤v`*ÔTŸ 0hsî[ì¢c Î:—‘k’Ek:DÓ¦E5¡Co[O“EK3µêW袅Tc‚œ”¡ÛAŒ¢„œ#ŧΕ“ލ·mNv„Áèî4§?a_îfß±­‹ÉY¡<µÝ”K!Ò‚–vÌØ{uǽuÏÉŽ-=¶Ž{ŽÄC˜½$ýht¸ÌQiÖÇ.jœ˜Nl€î2Òì§Á4ζ¢wxº9Ìò5ê;èÛz¼F:uÐPÑ^´.5Ù xÑZëTf AQÜ'° º)¶ä©®¬‡¸ ðõP#ª!ùô@OÓ«=RCè£äÊYÛRÂi0C°ŽÊbÆ¥½l—è˜:çR¤ÆU:ÛßtÈtÏÈb×F§M…‹é—EŸ¹;ù†»ó0Ó¾æ€ò]ÐIíØB^Bк:g𦽸W÷ðLçR»söà ð ZCêšÇ»´µ¡F™klÇ‚Tf»sÐmd²-kˆ¯-Â6ÏɺøòÛÇ¥¦æØ¹,ÁÏ£‹:égÓÅÙòî‘-HÉ–˜yBBçþ„ë[!ÑÑa¡e”u>hKõÒAª´ëåü+Dï£!ö¸à\v]ô¡aÑ×Å‹&ö·ïàÖÀE¼î`E!Úu] ’º^){‡Œ;‡ì%2Úq’wZ€àž‚’Órž ƒœji{érçë¤cÛ§€tl¿n…R-m丈Úb0Ïþ߆©©xÞ _ÈÔvÚGì´e+>zÔpè<¡1ÿ³©¶Â(Öì0Í3xÊYØNT[¨Z*9/×Êa¢È²•"’RÚ|Œ¯f<1§S šb\ý\™ˆ-š ¬ ,Êb´V£l`36¶¿;Úñg•Xüã@áëßé Í*éÌ[KÛs¨iBÔ<Œ7 Ý †Y(zõ Ïʈ0‚ ` †dLeØ(*sÓa=¹œ9mL °ÿ_«û b©´­*ð ÃI©Ê ?Î]‡\S6-¥šïm{u_€„ú\Ùí"ú{“FYˆ»bo½c‹€¼oTlñî"ÿöx\ Eç¼­ìsüoˆ•çïdßõWKÝ<43m©8ÀÝÑô"ø‡€¤•œ;“<Åw>µDQ8díÐ1²é¾º½ðli鯨ýŸ‰`ªú;Š4‹B4®Kä‡~÷”"У)§Î2·kÁWÁSú˜É_h›| اxžáÏ™p‰Õâ¨JN·àz™JïSÜq¯ÿceÚ¤ZVò]¯Uk_{í5ÄpBÏ•ÿÏÄ¡Žn~ôwÔÅÿÈS5ùõÛ*Ëgª¼·'ððl”ÿñ ÌEx ‡ó–Êé“?c¹ž£r¢å®×n÷XTËóm4Î`딉Ý í\7]ÕSWCfnó¡žm·â×Ùh5ùíÐD,ø«ì²sIu2¯¸ËZüãY»Œ/ Y´â§L1W½{Õ…î^½çžRn½ýð%‡ªW'§R²ÕÐMUXf%¦.F»DÚº†2!h¯³4°)cM,4‡½nCäÛüééÔ)3ù©UŠ ]6>ôRƒ¡Tà— ô`èc€iÓGi¯‹>øHuªV[Þ1œG5¶2O›’  ;²à lM¾Åt¡MŒ²áÿ1çœv(Îqwq6îyqéL[‹ž¤9—;P Æ¥Fà*?!1Î.Z¨Ç‘É9,àsä-ck.í#D]ª •ª;öwaÃ?|Ì& 3ÕYâ«3­3·pL/´}Ù¨}$zµ^½áxBWÚá“ÄžªÎIc:` þæ6ÜúÛ›óP®øà›²¥Ñ0Nv–©#ƒÉŒøÊÄóÝçAÒxÈGØ<Ãsþ[ êÜ96ÈVßÙ6["“y.nŸ¡6å.†®»çJÚðc<“kÄx‰€Èn!3¸–±¸±„g“ŒS=îÎ:‚V¶X}c OÞ{ݱx·Ä’ÎPíž%–ÄØÍ!ÐKLò®m9¸\,9ìâã­Jaj „Ü»–=¬åâc  ø]¨ *c¼ëƒHÊÊÊs †–ó¨1šE[ó¨=Û,ù5ºŽ’Ï``ÙÌ"å«aP ˜ú,nq®ÂֵĵŸ÷lUg¬?k«‚S¿ÜºÖãFN¦s«uÚâ×™™7Ì ?ç§…xQìI½ëýZÆí„Þµf—zš<á¨noù98»ËòPô¡…ɧ–…¸sÊ¿gä`°éöeë‚&Â^ýËè÷­úœí9ü|Q·Œ‹œÄsº ::H…î@·ñ4VÀÈÅ  ²ÊÇ¡|ws7Ú‹’½Ê£Ûñ^ hÿ2„Ðhw}Ú×ó°gM·7»Î‰]p“nnÇ{C|½MÂ÷ŠTcgGÕ6Õ|týñ-Ê{ì'6º9L6Ž­OGJ9ºÃzúÍ“|7Ú«9³_Ó¿Å,4w;Žã4Þî¥{Þœ·çc àøÏˆ7gµ^×·µú¶êÝDMö‚Ž.™çMà^z^ØGŸ^m×§œÞ'±wŸ‡c‰{𢻾õ;±+úºS¯ÇÄϳɜZ2}òÉ)HŽøy$“í#4§ ÙÓÝ«B2LdÔyêË'vPc=6ãð,@¥¾¬i'•FiœâЧS'GÞ•^ÎÔ(ÞÝÙ]J|™DÝÍH½t7e|o.=Ú<ÏH¦'¦Ñˈœà zùs¤zzjýRȉ©ewçósP=÷*€§ ÙÓÝkÒ„³ûOO-õÊU'¤û~QóH¦>qêTTtN„׃äE‘`¦ºÁÝçZ nùy$C;¨àlHöu÷Š<Ï¥ìôÔÌ÷ÄIt÷ß'Ï‹u8=µø Ùéì%&cH2hæ{iÑA;u ô-b¼¡ïù uËñó"Qd”ùy¦¾…á›W\ŸsãNC4=#;r¯T;gé­uŽÞŒnûÒ´ýmõ®óB°ONͨ¾©}+ Ý=#òó ¹Éãd±|P¦Ÿ'mx¶Šµï ä¹½ÎÓÓfݪÞVÎ?³ˆï=ýùñ?•$îx,õûë|„ù³Â?ª·ÎS©³ÓÊæÀš‡Õï¯v{øàü9a­Êß=µu¦8Á¤:;™j&k5šYOÕ@_3Â>úÊ»Zyé3QòÑ%ë=cC+WèËÆñTŒq¶ŠX?zŸÒ¯$9R%‘[Þ†Y£èçkíl¶A2³¾¯œ­UÉ1;+==­·Q\cSãцù‘Me–3THç­jÅZ'“µk"Ó¹Ò«¤¬{wÍìôòm ùÑýäöótòå‡ ¨oF›E}˜È>{ÕôÔ<¸™/n'‹õ£â]ÙyÔŒe{«@{ó ÕÍsÕÿ|ùqt;ÿòþÊì>üu>¿çÙq2€wÜ}JŸØ¡VXdc6NûÛ§èÏ0‰¯M›3ÇÍÃÛùø/½~*»àñiïõO‹+ÌF_'˜¶ü³FÈí• ›÷Z×6lÊ–ç_>,åÕâÓd·>>Χì¿UAÞú4½,¼ÇgÛ›ùSÿó/Ós¸£ÙƒLSc=äè÷ ÛÔxÚîàÝG Þ°àÍÃåÃèqøa6¿Í€³£ÙòÐèîGOÓû鯓۞¤¢E3¿]*NÀµÉÔðû÷‹ùý¿/&Ê…?MV«éÇm¡BŸ¾òµMa!åœßfµÖ…_»…¼²í¡*Cž“ÞôµçÑz³]möQUMîðÂŒÛR¸©O¸m.糯Mµ IÙÁº °5ÖÞƒ-•œ/§¥tÒÀŒú¬ºÒè­{^è´Œ±töö ýÑí÷e“Ïõ–ÒÓ—MÌÎã™r;º:¤¤}OgΆµFðîzŸðJùýd5º­F[*¼.1A¯/y·¸½{û¿ûý†ïŽÇoÿß|ñ×-k`…ÑÍü¶ð†;£Þíø-=EF«Ÿ¦÷ØD¼ç?ÝÏÀ6:•¹?¶–f“rùMï}A·ãû)_ºþÓ ŒèߨIKàk®f“Ÿ¤Ïòu=‹ëfk–Õšå»ë5äׇ²0ÝL@U~”6›Í7’P‹,Ì?=ÞC¶hˆõÕ¼ ñnúl 0ûz>(òùÆA¯8wôŠçNñ!ÝæºÛ:ÙW= ©Ä2Û»…èœÒ _•«\®“wr‡ºJ⦧µ÷^„¥lEWÙ”%…*Dr)Eϼ»èI*F(•"ŽcúÊ ¹ã³Í¾2M ûÚ¥¶¢×¡gþwæäTÁ1£=X&£逅flÅðn6ÁRÑ(F4•(§8;¦2¡ÎÉ:-©5ÀS˜ߺR]d#•ùǾ 8Éܸű+ Q¿ô¤5:jF‡/ìJKzI}ïr .‹A{ 2J6¦Š~èâ [<“™¯>úÒÓÿjÔˆf è_;{’k±öÖ'äÕ~iu)ÒjÇ)tuy*̰N…é}l¥Âìàåé¾èIû³¡Âói)˜‰Àœ³\ándÌ$n ôhM:mȲf¢æ ²qE¼5ÄænQ©$Eò‚/—¤p5ÖEÀKIÝдæmJ,„D³w,¢§wpRæqÁ6­”’$í…[…?WÁÖ4—{S€MF)‹.”¥ZžC‰wòjb5î*2êÂT± zâX€—›¾Šj3n¦©fêjLÂã0 ùdÆËc• SÞ§ )©Ë4’nvÜÏ‚•*@Ư"žFhZZ‘AE¦¾€ºbZE¶äÅøe[´ñÏ¥H¹DÂ@&•¥Ìk¢¬aJ¹t°YÑ_¶Ðm-2ï­à H`‚µR`³3©]ÒÁŒ_««ZyadÈ7{[ÊÛ£–%€ù=Fñ8)]ló­Rò)9'$ñÏs(Eࢿ&šÔ$¤l¡Ä«Sbµ¬:[d¶q¬»’bH[zZ×J'—¥JŽºä@ÏR³M™ê&‡Vþ9Þjý€qS.ÕM>I <SVÅ$™yVl¢¼Ž€ºÊ9ï I€¢’.Ã÷QnQR^“+h›ƒV¥EHuû¦wQ±p ͦ+fh1ÊNG'ÜhÝKædÐ 3ʽ°Ð+5ØLJBÿ×Ûéd”.ÜZ<ÇB3Ϊ¬6äòsn¢ òÉË1—I1[‹Zè]?•ç&”΢‰ÛÆ7Õ›¡ðâ>Ä‚ËrÎ¥,Óz͆MˆLÆä•;Üì*ÉŒsß6$D „¸¢Ø™ëÂíè .k(_le× ´do;qS’šì7ÃAÓ©/mö¶S2^åíÀVc¥L•d‹p)[¨H™·Ýÿ9Ò<™®• AKnŸ&Õ17’ /æ!xtfX’%ܧ@Y•›u\ÖMm,ˆdÑõìPŠ’’t>;Q ߈޶¬t)6'o" &YáÐ@¡.±Î%€<¯w2Iv«2ö…y^­ltäx­8´¹ 4ÒÖ «ÐHeÁ£·Þ¢ŽäÞÑ °ˆŠSb!ì'C@rtñ¦ÀäœÆfC‡¨M’øYÇm‰„hFIh$K Èå!³Ó†L»òÐŽõî”purz¢²J¦óݰ¬¥‰$6 4(ÄYˆ¸‚šÌà”Ľ BM!…èN‘ã•P¦0ÎI4f‰­aj ¨HûÀÁw!0;8+?ÁQHÆYNXS²8*Ãม› }…É“„*åm#M}M[•M™«¦± …ÜE§,¹´…n¢EÚ÷ÀŽDyÏx[n›äSâ5PPMm&â­l H޲:Èo”(º"X“K¢µd×X 6/3V^ó€Q…i¸Ö%€4d’(λr)!]âú€~±è„¨]9´Šz°,‡Þ¨çÊçËn~«^±º_ª¿x[£uº‡’á ¤mPRò‡äm/N2³™Et}Ö-”„à7:±Hoد"óÉÑC xbl¨©7êBIŒåe¡Æsà Ӷ1Vòì!_ÅWcx-Œd_p—)0Xâh t™Ò2“7hÁæÖ5È2ÊÓK°kO³O¼9ÒI+þ³›¡\·²Gi6ˆô¡½êŤоÄq×NÁ ­óš}&¾­ßª¸É3™ÍiÇœ•1;o™Î*0“Tl¥×hÅËÚ‡4o¶§4 `íÖªÓÛy;~ˆ¯Ù 94ñÄ`tqqšÚS+BU-hïlÿfæÔÖo¹q²}tóÄ|›í7Ö†çvÙÆ\½Û©Я¿'°ò˜.ÒŠ¢ìÑK$VìMû òìxÐÞÀm$¶Ú^à6è,5&ÛÇn.AÜ&b—6aÜ(”dZ‰qV"¸ 4:7í9c«üRÑþa±Fa`ÅÔ‘î?SOƒÈ A‡Ý ”TyýO‚Ží¯)ëM‰§§!ÔÖ²Ñ|†dærëoŠ1<¿bj7µ`:Îâp6%3(½ {$E¦À pN‡?•Ú ¡…mÁöm%éï[}cž²§¡Yd'ÁáÆƒw% a @i(_æ>F £™‡Ñƒ5Áâ:—hqƒ?+Áâ!Ăֳ¯iQ®efH'ל^r ¢Ä´6~®€t:.·Ø¸÷þõœ«jìú=$ee€T$µkáÞE€á‚‘,Iþ é±Ð`•!3÷g„RáŠ`i¨·6ZÔú‡÷¦¨Ó&kSr‚zC¾Á´…:B…*}F°$äPP"ó¡ŸL©Çm‹2M§¡Ah¼B÷’ˆv|MFFšÄüÄ/É„Ðä1ªšäFn×(¡(w1A¿0Joƒp¾DVXêîã \¹¦DtËM ’Ÿt3IR é•°/Ï|ÿbÇ+Ê2 ë¼–,¥›I iD£²5l€¨ˆ°.0•+I7?\\‚µhÂAjˆpPD#å1díüzÕŠ^^–m&[ÇS¼læ/'é²ÒÉ(1@îàSb„ÅÓЦP! … >53nJ T¡…þÍ)Ê’jciµ¶L™Že¾f*§MAª™àÁëîr›•qz¶ cHÂF‹mË@Rã™\ –Ô‰ŒÕÔ«6-ïL¦€\é”]KFª„ÍRìÛ¯¸tJλž²ˆ5›97€“«\™!6é-naŒÌSe ðU²h%Úø½å”ï 3σòœ"¶¢Ð¿nUŒö@!¦Úp¸7¾‹ñÉ£™TC@檥6™cyj˜´‹óo_BÚ˜ŠìoBÚΠcXµGǘå7›öèïéÙâò°Af¿Eæá>6ÿB]Ši¸ ³YyƒmHUsâ³NxŒà* m•4x×Fè´¦46vð9mð9Fc$±2”SðYcëÉ5ÃÜ(fƒÏÅÚ=/anceAgÖ“¶e‹7ø^Vm•9rRI³¬’›{³díÍø¤IŒñ—P½Ä9ô»5úpx©N®¹]Ôíª‰ÖÆäºw@Pˆ&!Y ²€‡ ÏIËæLûG¢ u´»£JI‡Å¨Ü£ OŲ`7bT«…ŠQÿèbЃ˜g&Ãðw&Rµô¬|Òýõ´×›}êRë¤ù§>üŠV¹þô1çgrTɆÔ$[LC9·>ÜüYÜߦ¥Ø¯Ëï§«Éb6Å?oݺl— oGË£Åbôõ •‡éßìê’KÏ_–KÏÿ½çÒÓùÙ¹ôZ™ ­;…Ó÷ÝRÒ/¾y yíH±ƒÂû¦aEï’duô”–$dMûòЭ$9" sÌ,½üÖ/“<±Û*Ñ" ¤B»dÂL³O)µŠ6/ÈÂJât'í¯ŸÊQc§>E ¶Ÿåüºô½i}g0¶C+NáØlÉâ½;`àY B¼ˆdô#pµæå­.Á³³iÉiÛB?ç6û¡'ÿä‡yÆ/E´„<ë3´ÖÑ|¬ŠŽgb¼žÍ~c¡WÀyM ê{YÊNÞ(ñøòt·ÿ´¸}‹›æq°rÍ=cÉz§rQŒ$Õý Œ§{¯¥÷PíI– ò¶Âõ$…ï‚”½2QÎ{ äÎ8Ij;dæI:µÒÎ’Ä ÇýFÝÖÒ夈_— k…sy†ñ‰Aº(×!Ô^e]¬A“8a¡c rh­zmš1¾q<£Ÿ=ýi¹ÎØÃ¦E0(§ ê?醴?½ÕRþÖæÊ¯‹‹ÄÈËB÷òáÍá;¸¹)´eŸF6]ß´ .KÔ —Ì\™ã'(­Ï¼äˆ¼À;Ï’z%Kå{Râ倕1%‰ ` §Ï”šLVåšïœ¤Zúø‚ƒòbÜAó`rFË:óYS ƒ"Êù®w%£»SôµLC ¢@/Þ’£A°à ±òÞ‚É'îþ2¤£¬¸+‰÷/c:j íÉ!ɼŠb÷UîM¸¼ëW´Ö6…>×´'ò}vwè;)}[žzìîEG1s&:±­Ÿn§`}&õ2—Î4; HÙì˜Ôö¾’´§ßñ³ I§…{0/H\zÏ&ó?U:© ž¯NžTH©´-]ø8íÞ¹$ˆ_zåèVóo!ÑjòtÔMÓUÇÛrñ/ƒÕV®äÃ9šrÓsežîgo‹®“ådñ¹ïðpþ°.§¿NÞ²}ÐÅœÜãÓ¥˜U0‰ÅýhVJ>ÓÑêSöEöQ§ÓŸ¬Æ7e²]âç(yä»w£ûéìëÛ_¦7“…„šV$~® ã°ôð8Oï¦c©±[¹»‘£g–ô¨wÜï,„èw~7›—‹Ê,³ïVßÃöqçéÿUû¹4À—ØBê<:0’±ü´ú8©f#,Võ¸˜òÒ„w×ÒàOø#{%ù²¹¼ “´°f:Ãf^¢Q›¤)‘ÎðhI[Fñ¨ÛÕ Ë+…C«ˆg,šNQ+è¡©\fTH¡Z±)ÿ¹2 ÐòôòŒí .C)V'LJhZŠl52wð>ŠVoX±¡7ÙÙ$aE¥‘uÛJôFïQÜÐúÎd†J9¡]”2r3¯­Sܦè¡á´Ñô5”­÷=-ã寴1ˆ¬eEdRŒ%PA£W;´.*Ð2“xÔiWn[2ã.ÖbYcgÌP|¥²ÄØB«Ì*µŠZ ˆ¢ÙôÏ¥ .²w5ÖkÞòm´¸þæ÷ldÛH`©Ê‘ËR{N1›6üãþqþñ"øÛÿØ*Šø÷õï‰þ]0Ô›6EP»C6càÑöp3â5ÄvÙ¦‘£K£S´?}Ï=ÔÇ~µ ôåi,Ybô×,#h…8†Ñ:eòYzõ—3í°+í ˆë›oš`ú:»üFÉãƒ×ßÈënÀÙ[$C§`ôQG09žž¯Ï/ûJ «¾Ù·TöÙ$cû^áÖb÷Ý;”s‘T:pýÈ3 Á‘#œƒ#o•<×̱µCéþã—Þ /wÄáý{2wêý«8÷Dòý B’›æ×7äç´…%ð&{]ühøe[PjÊAÓþ y©U°®-šˆÔ¯š†×u$@¦]ÙÑsB!~¥×ò’²UwîÔ± ƒáƒV¶XShõÖÐR©3Dƒ«#K x¯)²²o;‰ô»P†—[Õ¼t"ä" é²Ü¨v൪% mJv…!h·O*ñBTÚm¤¡¦|\xCôÚ˜Xþ@lI½ÚG¥Ð ­"Èh†ý¼Ö¦—ü«‹Ý70b/mJZ¯vGebì’á¡°+HÉå@¬Ìl3×mÑrD¯UǨo`–<ÅnÎB¼d׈÷?{_ž$F瓳“ñIÝbFÛsÁÅ!jÚç"ÏqëÀa;YÎÚèì,†mã•¶¨zÄÈ}Ì6N»Y*æô6ô‹Õ}›‚ïéHó">lZÀ7ß×ëÀü"ýñ«‡.˜ [&ï}e ZµéhV£ãæÜ^0L»9Žh$ìhE1Q¶#ó³xÉÀÌ'—ƒŽ%ÙØß>%&Eb6!ZæÎ–²žÇÛTæ­TÎC\æå£.‰ï§¡Ò•’dæ£HЛó¿­ÿ ‚I H¸Ø`­Œ m$N ÈÌøà‰Ê™„ØE¦€ÉXûâÄ ™bˆø†NÝÆ#=Õ¸D8åM&íÒB ̇ƒýa/­s iBñ‰OÀÝ ‰$'´E‘×6Û.‰#{)a0/1žÞdfð…I0…’„4´XøšÕ̤PÑËÌCøjyXŒ¯‘QÕÄC\2’ºÀû”Kæ‚LIåkè*>á5“`p+±u¹½·%šÖ’ †ÔG•îÍtþ| üÌ<6'p(0Î!dÐ(åsãSƘ-ËÙ¨-j¢Fë¤ZöHphÊÐ@ÆbâNáÒnÁ¿èý$èCþËøpJ®ÀJÇ³ìÆ—§”)ÉxÀðï$I¦¬^c¼ù’Ó;ô„Õ’BˆÙZ¼ÿ -S™'ÑÝC1PilÆtGÁ" {¶4Þ·=­Œà·Z¬y‰ñC@*¢‘¢Sü`ÙÊÒ#Ó¾é­ô•@’;y â¤{IWGfg6!¨š™eQ"TÀò™cƒùVacÍÐIѳ.3dý–Ê]St°%æD¦r4WáÅ­!MËu–ðæP’„ÔÑIr—L›L#”ñK¦.Ð[fâ"§á¾e°ÝIâã$wcÍs£%M‘e:lÌ@eÊlgƒ„í ÐÈýkõÇÊ‹S#y:óééuãû„WDª©]Aö²’ÝÆi 3IrÀ»’NÞ(‹)¾’|9>ÉŸéÕx/æ½…N¯ù3pÜËN†h扥ø &‚r‹?·uÏ}ë<´Hå^5戙žqiÑ;ÕOl7ª¨Õ[ 5Š(Å$M7·Íƒµ"s€éV´$xE}ª}ÕžDHº9³Îs,zè;¦þýé‡ÿQGœvÀocsigenserver-2.2.0/local/var/www/ocsigenstuff/scalable/application-x-deb.svgz0000644000000000000000000004005312060404165025745 0ustar0000000000000000‹í}koG–å÷þµ,0ÆV–âýí^´ívc€nì`z»ßY’¹M‘IÙ’ýžs#ŸUY™YÅ¢äÞ±®ŠŠÌxݸ÷ÜGÜøæ~|w³úy{ÿp}wûí ½Q/VÛÛË»«ëÛ·ß¾øÿ±J/V·W7w·Ûo_ÜÞ½øŸ¿ÿÝ7ÿ­ªVßßo/·W«_®ZýËíß./ÞoWÿüÓããûW/_þòË/›ëºpswÿöåW«ªúýï~÷ÍÃÏo·Z­Ðîíë«Ëo_Ô¼ÿp#¯._no¶ï¶·/õF¿|ÑU¿ìª_²õ럷—wïÞÝÝ>È“·ÿÔ«|õ¦­ÍÞüb¥’Î9¿Tæ¥1jTŸn/>VÃGÑDZGRê%~ëj.«õêã ¦â`gä×~ë˜þ÷øû@S°y¸ûp¹}ƒ'·›ÛíãËþý‡öÇJm®¯z¯ifÐî`In/ÞmÞ_\n^6åòü/×W?L’¯?m¯ßþôØ}¿¾úöÆg‚ ò½éÁ«–ŽÔÆšRµ~mÿ'—6juŸƒwRe@|ƒ×]Ý]²‡ß¾¸xÿþæúË}w[}¬î߿۠ù_‡ Ü}x|ÿáñoÛÛÛò>Œ°7\ùYžÛ ÆÚ¾`ûñýÝýcõæúf[Z}ùÓÝ»íË÷×·ÿý>\>¼¼ûøéíö¶º¾ɽÄs7¯o¶/ß]¿Û>~zi|xwqsÒúhÌËý^¿¿};ÚæÇ«÷Xì 7)úÑ Ÿú~ß\mß<°fY ~Ãr$ù ¿‚ ¶÷º¿¸ºÆ6*õJÍá/A[]?ƒ§ïÞ7uëUF êØ]ñÝ›7[ƒê•=<~ºÙ–ÚÕåÝÍÝý«zsÉ¿¯¥è$výøé•~±zy ±±7$þí¾a¤#oLô6¦£÷‡[íj¹ñ7Çè|´ƒñõTmßlßìôôë%ÍÚ<ÚlVÚåÜt³[»Õ[}R³q¤Y=ÝÚåöòõåëC úÍË!aMÓaCÝxõÍöm_Üürñé¡í€0ÄW?ÝoÁÀÿi„b´M¹[¬·uáÜ^?‚SxØÞÿ•ÜîÝþÇÃv¯Ö¿ß_Ü>€µ¾ûöÅ»‹Çûëÿ †¤uN>­þºoà´){ïTôüœSÔ>„¯ºîëo_¤°‰6ö:ó …Ùn‚Ñ.t”úÑ Ôo\PF÷ê¢T+³±ÎÆŽ|¿aG/nÎ9›6k[ùÁ|A…Ü«pùÝŶè•|BWµÚorGÌoöê½­w„j˜fÑ‚X¢u±^æ[eâ&Ù ñÉÚMÒÉ9ýÕB2hg÷DZ¡Á2©Gp:ù··‘§yn³›Ñš¯Üqœu¤=5Öžo/Vqnã_Þ\¿ÿ׋ǟZ2©¿OoE¶ÑÔ´)å*t³ø¾÷¶F¸½»*¢O>ðïá²ßénõno±zw÷Õå‡ûŸ/?Üo÷§ó½4›uàW+”¿[imÖÉl¼29…ÕåJ­ö¬·J¯*³‰9º¼§röfUùAžØ¨lƒñ,Ñ*y·¶|J¥U¥Ý&c&5‹¬ñ6à=Ø/F™$µT°¨¥6*éµßĤµÏ+µÑÁ§°Ö=q>çUe7ØNƬñ09£E‘Þì…¸6ZÆ8éNVžï±)¤¸ªÒ5¦¶ŒF'e×jå6ѱx‰ÅÆ «¸ñÉ)³®ºâ’^å deÆFK|v¥ã­i>6¶Ö¯Œß`_jŒ·2lïÐñ°’Y•{SPºõl‹A1)£}uN)}çL´µPpZë2H6l|e”Æ$«ÝŽ6Hî†BÊKÒQ…¡vxƒ‚¤ßÒ6JÏŠ‘±Yà4ÁµGõB!‘ržsWCî7 ²ƒö£„Ó8˜EçÆÚ÷È¿ˆ­ÌQ €Óc §¬ŒËy\<*_M¨‹‘õRi¬boaŸMH²>µ¥ñr1;*·/)µ//G¤1š%¸Ù•Æq£øO¯dbL&™¸¸\yˆ+H±Ëd „N¢H³ v§á±S•Oq™ò-@"Aå¤b°k­â\…UΛì@eû€ÄË~ÅuÎÊ­SÀ¯¶3›¥dš³âK­$(¦\ä7³ÕŸËǃò¬cCñuXd_ —4;{Ø*¤ª[Fj¡[ªø²Èt4J X`#ks‡í©¸|ä’ëøÌ½úE̬ݻld’ÒÀCø°0p‹×^±x,¸ÖQsµ±¸N¿œRPÏñgR К£åös)h/ã̰¡Ï¶ ꪧ^û„â€.Á¿: oì››ì#XCWÿ“Ô÷¢$Õ7P³QÆ{Mýühº±v*:»3½Ã0>Û[ØgsÎëÔÃjûtí¼q=MT»íN<ÕÑ'qTÿG(MµIõDéŒ6ÊBl¤qÀ$ˇÀꔂ]€¥ÙðÕñ¸­ž‘#pÅv nCÇU5Ÿºýò@NvXÅ©"+gp›ãß“p[xãßøÓP †i*ÊöqSpÚ<ÇŽ%7ص9_ކý¡½zúh …ì08hVèé&-ƒ³&[¥Ýƒ3 =Ë~¿Q•J€úü“EõÉ: µé Sé ¦zò„A›sÏÁ°7€Ž18?9"4è F²Ábí˜ÈÊmeù&Ñbåbøº3£ì{MØ3£ìaï° !á2ƒ¹BLzàmДµZ,åüì¨lÖ˜¬•ë—È ‰“MѬE„˜ê×(奞ÒZì]ÊZ~[ Ðó£w´ÅÓ#GÇ-dÁ3߀ÂQ1äLŒèŒ«›• «#ÞK öšÛS—à=—xD= £ß˜m夡ìiåb-¾ûŒ­bºïÖhˆÚÅby ei‘üŠ~ø¨ {Êê´þ©à,¥RÆÎ…Ž¡7ÚºÐBDß mcÔ:bf¿´EÇðë*êZC“>eãÑ}<‰u™/£-2hm¸L¾QQÀ¯ÎÚ8/}Ò,-€‰DjO9›œØ ;9vT› ‹ô8µ |Ê@l:Y$)ñYG9=Ù>ä olâ<£Ç6j Í¡vSR ºªÐ>[q§²hé¤-ùugo‰…ý;ÉÄ;®{><ˆÑ˜ÔAª]‹]ª^´ý·8,ùñ.Õ"È—ûû¾s %JšYŠö¡hÙnFçñnÆÑ~= ÆuâeP’>(°×wsS¥M`iJ÷‘õÞ¾šÊ‘þŸ¿üù_~ø›ö›[sWÅé‘ÿðÝ÷ØŠ£ÎD3aËj'¼ Ó-|¿Séã(Ñ»~ò4° Ž´ð:ç˰Ðx§“É9O(©M«zf_¼S y™áÒxa£fºÑ —.ü’‘ö-9C2d,¢Ñ»ãºMôQ,Î@RÝ*PÁÚ«¦…föÍ)󸢦æ8KÍfÆœ~ ßY3ÊãæÐ3ëm·f«w5ñõ^@Óvf¡ŽäÔà‡}O@úÜ|[kçtÆ3HŒ^kc!?Ϻ—ËU뎤hn„¬7>«Ü`Ë8—<àíÜ[Á0òÆ©¡‰ÂysPãïˆ ufWüá‡ü}Óó1¸pxYzM퀼fHöÇÿ¾û~¼™ Ö×k&D:Îfž¾wß©QHðnb›wͨª âL3?üñûô7ÞÌ„T\H´ßÙüÇ8>WnÖ¯²œv]:vç¡ÔÛÊÕʺœ‡RÁCñQÖé–*€:Þw&ºõ‹VZ9 ¤ofVz‚ný‚•F3й¢ 3K>A·~ÂGÚ£[¨†ÉÍ@¡ ²õ öúédëÓidKš Äe.õ8àÇ&M©4 DT ÐþòwhŨ,¤ö{;‹=´ssH{÷{ûÇÓà‡v¡ÊGÎþ1A=õ>AßÐ;So7ŠùîÔïVÕ¥jêW=zêÝüÔûº|ÒÄûþà•Kö»±—oŒ 4$íû'£m8g®g§6n×FœÓôÌæ;3°¸¥B\ÒÆÐÚ?Ò†¶Z«Ñ…ؤàbôœ¶WßÙ·AJíÈ7»ÑyýDÍ]0؆~úØÇuGo‚yM^‡qy=,ÙQU3ðîà;?÷¡¨Ó xሲKŽžø0?ñq† ŸÄ}âÌ®=7µ¸mP³f$ÆÕêɾ¿ysõæõ 'ÐÚ˜WqΙ8ÒÚÉŠàñ¡ÑÖÖ–+ÉÓsÜLÚ:.Øë€’<=ǽÖf#¯Ï6žýcÂØŸ4‘h-7÷¤©D{i>pî˜{dtÏè†\6WäÕY¾%—͹@åçæj×›Ùcí}{â©‘ƒâ}ô–~´µ›RñÒiqÁ9+Ÿs‰ Å}Ç/ÚÐ+å¥TsR­¸ñR”/ò‹¶Fªù^5U¿-I5SªI;ÅU¨Ä¥¦Š'e÷E[ô`]jˆƒP¯Kâ-\—í—¶Zä—”å‹6ëÒžüâzÕäe©(qè|÷¼+h‰‹K¥ñ½r*úµí-/V¯/.ÿþöþîÃ-føvû Ù¡Èn=ðË/vµ¢½§°-·Œ Šd« @ÍœJ$¬è’^ØÊ©ºü°èA’ʞ΢Z@[«ŽCé°{ž`üÓ¦þ  |* }áÔO¬¬zòÄ»¿UÇú`Fõø šß³|ª÷z*´~G)ŸncW£ïÙ¦ÐÀŽR>ÙÆžFß³,iATòÉöôùž-`I ¢O¶°§Í÷,ÏÈÂT›ÖœWâ¶Ù³#09ŽZ'†ÌçÚîéÜç0ss³±Ô‡UùÆîߟ£=ÿÀ¸'aÄç°\ßwyFÄ}ÿÁœ%kÏù°ã¹XˆâÍ\#{®‡ßÅ’†Üœ}qÏù0â½XÒP¨f(wÏÿ°ï¿XÒNš3f>‡-¼q¹öIxÄ9;îÈuúžNÆ–)fçÉÎßœŒmªf,SdŒ 5<Ô° !§æš"ãÆy¼¤¡Ù9EÆûxIC³óÜt<çQDeç6¨0bäȼO2¨0fd>†/èø·j?ÄUq.(j$vªbõ4”°#Ô…IU‹üã3ðo6â© š² -„%GcM5ë[>p:±)Ùó®îFTŽÇ]ŽEhN“ƼjˆÊiƳŽÙZé%~.>`/³eVKÞßFON¶1ŽÙv.RSšàÉé6ç¢1»°Î%Zä ­Î†avñœƒó‰£‘˜ç8Y;Fåûj™®àH.wøÄ¨Íñ H¨¼9’³v]Ù°ñA”®£ßXF{ùŽßzO=;6Ov?bW7ñXʹçéÒå¬37 *&§ðXóßsL¡C±Oz¨Ðg€El/°“¹_•*ß$èýà¦gH.V\^““y¬‡û9&3Xè7ÖïdÓ’rLõ¨þy£øöNP+§gžJQœ¦¦2ïÐïéS™©1oÓœZ9ü¬“éÒdJLæ—–' [Œ!§HAO4ä\ Í…¬>ƒ¤"Ggð· iÎg÷|Ž9x4Fçð· jÎç@yŽ9¸ãFçð· aÎåý{Žx“ÇfðŒÙ$ž‚Ïå¼~FÁRÇ­LN求…ƒ÷f1gèÚé44êîÔ£0À„Ð6üÆyùœÒ ¥$ñˆÐPŠ)‡Ä“Ñ<5žM0kdzР¦$²aבּ±6C„ÃÎ4:¦A5Ï:‰f79…çºÉæ’µ"åÇu̺é5ó½úwÔ¸ÑÚÂÿbæ©è†§Fªɵy¿·ýžž®ÁÙ¾Wþ3åPC£}Ó·ÄQUŽÞ?µ^c& ŠK‘™§£+Kþí²«s©)¨ÿ_ ³*h'qQÖiWŽù¶ŒcDD¦­<6º Ñ$IžMN+7Ù‚o2‹>+&dZAq^9åPhì«©™~À먼d$()°¾Ð%˜£Àl¢2*Û^‘c:Ÿüꦎ³b®G0S´¦ýÙ2®->æ¥{'Þn­9_…Ö'œô|ózk_ï[Ýä×cæ|GZ{ÞCúSÜU«„šCÉÅîKì›±1¥,ÉA2è—²:øbÊ–°ö 8—œéq\Úº:`ÁLuTí²ë±0©È}òîÙ'.Ǫ^ŽVÝ7büv»Œ¸ŽNgT<ͪtÍš­1ê”´ù*@³c­}AšÍ9¹¦ ;k¿,ÓjòeIð~7I Ì꣔h0‰¹·±/Ǫ^ŽV!P•–è"Jš!Ð>v™Ä8Z,@ªg!èÉìÙ)ØG‘v'˜„k¡´&ÂÆ¦7.­MØ$ë°KsGNíµÞÑÔxzÄLî$ƺêr!öRÎ"½ùtŒí¶<˜Bëj?]¡¥毎`Ñ9¦¾§l~¸‹RŽGè<]ó,ú¡Ï¡ÿ”˜±VëšÐÎÆµ¸=mïÔÝác/ÎrNgU'ï.×Ôóè{ éJn"ºÃ)’ ãœbŒàž‚•;›í)V°€#OŸ:BQ™êÄc“YËc-vvÖ8ë|¦%Ã$•nô&Ø”úù¾¿ìÙò=úÍ“ô; ·çp=7掀ëI÷¾€Ýדü_JÀ™aˆòçpî4þðqÒg‡xòIŸe!uO:éSÙ%¢ú©§}ª8•­û\'~*w†È¹©S?•?5’÷3Ï’g—qûiàáŽcÜKNOrpöáôT5yÜÿ '¨ª|ªFü\àã‹¥ÖÚ£âiø1 º§Xò~CGÑädöj.ï×yŽ¢ÍÈ—óE›iè|GÑfäòùŽ¢}æ3<ÇаÙ8ìØÐóõÔqÊëà—Ünz"s9 ôÎÇÍ.ùKøÁoë\ßlÖ]9×7#‚Îs®ï <¡I »ì\ßxÂqçúf¦í|çúŽ…Ÿõ|ªEE§ûwIÕAÇÁx¯÷Ma¿®°È _o 'cÝÓòR}άTŸ7'ÕˆRBúbj?ôü˜Àè‘‚ßIön8ŸÛô¨c»EÅóÛ=Îuøôs»¿%+mwÒ§OËKÏ5záÙ%„WSÈ9H¯;§Žìþoûô¢C­g<½À ÷„SÐÏà•;y»|þKBö6ɤMlHËó{c<âjx€|e÷w€¼b†èg>D^…e9ºÎ}¼òËÚ=ÿaò§'>8æ0ùìµ>ãt|úeSË÷ç°eÝ@?¶ŸŽŽ6›=@P|ŽÑæ@‹[Þº¡½fkv”:•»¢Òz0²Ñhëzsø½’ÚAüô­ ÖõçÎÆ[æç%:¿¤&YVWOÛjÌzpÊÍA½ké>£¦r5›bù€ˆzÒ$YÎû8„Å¢km4 ÀZS°k¹¨¾l«a~ˆKÞõn q÷ó›ŸÁçüÄÑ™þ¡¯ë_.?yªæÀá™ÃW;Ê¿þJ/>fÓœŸá}“ƒ,UWg»õf¥ð8oÀŽ9z¹“WsÔÃXr¯Ãšç`TÐ+ü,ѯëÿâYo½aÎb9£ë{K½N%)²bJâd}6oÁÃɹµßV~•7)hÀËueÅx•y(‚Y%žÉÑ›l|°aeíÆ{ ž„ÆdeØgÊE¡AGï# ¥xãèF Vé³Fû<º“ ¯KE¯5 MFA¤&é'Þ z¦{nžþ9^íTZ`n8! /E ¦Ôç”]º(žåP¼P}ùóPïÞ}ðjéWQ&,.Q“O›²\s½|úI“Ö•6v‰»ô”QiãwòãMÞ?þ\¡órãý|ÄrYýÀ‡ºÐr°Ýn/·—Oº}~ôþúQ¥ª„1éïs˜‰­é ÕH|ÁÑPçMxãßì1ÎmN`è$C9/_LÛ™Á`mH"0,0ypéXó¬˜xe·êû‰äˆÎÐÌÜ3ÙêÁcf\Õ¿Ók*ú¿!ÆS5–†Ýq÷x¯ú×ë ó¼Ûºï°i^†*¥{ؾ0<žeUÙÆ†¹¨«´D»:§Ò2 1a;ùb2lÄÙÏÀL ¼ŒDÉ-g˜ã[/rUªF]ˆ3[°œþÝU…f7=Z¤Yå„K­ÇZüRgõ&‚º³«ïÀ𘋈…1»LÀi¡ÈÕí ,‰©.ð¤ýà8¢ë[(¨8ž°wýËEQ°(ù¶çˆ¢:/¶èŸØÑ9FŒ9«EVùå”¶HM Øäx]·ýOSTæ¡ï*qSÖšJAL@1Ð9´ZyÌ}}@?D0{èq+»Ñ‹'—‚$åÓÊm² ôÕ÷«” §¨}O«¸ ʨ°Êy“rqÃÆ»¤³_ñG3À~Ê€MŽ÷‰h•¡j€6RØÄ ´×Ð݆ G[¾™_ý¹|ôF‘ Î ÍÂT3JÛ“OîÛ”»{ðÚ¨ÖöŸ2Âh¸Ç ¸äß“ Nâ߈p½c¶g 5¯òKl9¨i+3Èݳkcô3ároÔöÍöF‹¦=:9†® ÝAùt9ÏpÜ­Ýê­>©éX¹ÑQÏ´ûúòõY€Ý§:0T'·x–©É@ž(Ê`ÓIƒ­ ö£ö!ïÇÉ­vZ×€Ñ)ë#¹¾ã/üh7ÎØsøó±‰Ž¿(ø¬Ý˜§Â½žu8+ öêK‰¶YCGšPëèüS<©ŸÇ9à"86ipK)KôõÙ$™ØXöÎV{Vlû»¿oÁîo·{‚N‘!Êg‰MÈmhÉQzÅÔ/™Ù~¨wäìÍJRËäˆ'6ËF"ÏD Þ­-ŸRiUi?Î6‹äЊ(&hÍRK[.ÑJzí!Yµö¼+L3ÃZ{ôÄùœWíTÙ˜µá¡«-Š Q“ qm6.AFJwÀ´ø›BŠ«*m Zµfc!‘)£!4{@Œfªä86º‘l6 Bx•ÇuŽk¼ß)^#pXc[Ø@³³~e<¤¾ÕžÆ56Aœ!äERCDcb€á‡2±a“¡¨¤YÓX9Šw„üèü{¸<ƒ˜ÎÚºvªò€Šøäø‰ÊZ$#»»óJy° dÀXEó­2qƒ ¡ñÉ2{Gr}Wž P(¶—J‡ÍÓ‹û§¶q‡ýýz—{õö•Ly¬³DÎ,¦¬aÎr¨ÃÙ8̦=´aÒÞl7Áh×»RXd·Äè- Æ£yGgq9ÔÆžò­"Tòz½ØÍ3@ƒá,ÒÛ.SÀÈ,Ï0£cy¶äÅG@çQð=½÷» YÖ.ò}‚/€¬#x|1¾?JCÇÛ£>:­;ÆýNyë´=Ö0ô XçÆg:y­é8èžf±½æâÉ–<%cû¤ÝßcþœÞÞCàÞ¸ÞCdSù \8¥‡Y÷TˆÚƸf2Ðbæâ»ž0¡û†ž}Qàý“QaA3>4ÒGËŒ±†Çè'}ìûF±qÚ¸±­1É=gÊØ=üù†c£Wöe718ú¤Ž1Å)ï$O=ìØqV <eæ¾yyµ}ó Ÿ:D{ñn{õóõö—ßµÃ~}ÑáýÅÛ­0%LXAlõ¯ï÷ÍOAþ ~ªù–$l¨hׇomWã¿?ütqu÷Ë·/Ìî¿Þݽ£Ÿ#AÛ0íÆìÖžþ —¬rgØýúI¨ŽéÕÜÞ›¯î.?¼ÃjUÊ¢¾ÿ¸÷ø‡û{V¸¹ø´Å¸å?M‡ŠIís­ºWöðÓÝ/oï9Í÷¶» ð—êý”ó‡AyêÃõÕöáÀsü­zýúîãøï¿\ßb6«¶í‘‚ÝM—cËYvk|ìˆn÷'L®m“hµ?>Ü^¼¯ÞÞܽ¾¸b}qóp¨wï.>^¿»þu{5Ò‚¼„tQ¯fƒ‰ëoÝ?áû÷wïþõ~«\øëöññúömÇ ¨Ã}ûâã'>ÖÞÝ_¿½¾åøÚÕj ? H¼·o?ò¨zÿ§O#?5»…vïv#­VÛwïüÒÛ#¦_½WîúåuÛݦY­~¾~¸~}³PEsGöÕN)縮Ïy!÷{¸»½ùTWk¹oË;„êz…­ÑøÞÖcz÷p]J«Ö&Ój‘ÕÐs*or>¸s´¢06®Áby³ºÛo˦Þ³KÚ—i˦OÚ >4ÆÜn- Þç¼Rþnûxquñxѱá¦ÄݤBùæþêÍ«ûáÇJ^^¾úßw÷ï` +\¼¾û€-Üj¨wuùŠâçâñ÷×ï°‰^>üüö||wÐþ0¨Ìýѽ´¼öÔðáþ´ôÓããûW/_¾ÿp³¹»‹—àï®ùÐË¿>^ßÜü éAÞú¥×7ÛßK›åc3Š—õ0ÚÈãn”ß¼l¦A¾½Ýa 7¯·à*¾þy{ss·Ú“¼þý»»«mͬ_tÓ[3ïºÍ¾p/ô „©BȾ„^5±˜;6Àb¨,FÃ.†¦ÞÅh7POh>³Á1LNKˆ´[Abr‰N‹¦Òêrˆ)ÉÓKŒ›]9ଔµ8¾"ðV^EÚÖŒ§ÿ -IŨ+Al*:‰°Ùf¿ÄËP3CÃbä3%ÚHð™ Ž&ÂdNQTl¼† ©ÄT°Ô¯L"^œ©µs0+ ['xP’ç¼²®T‹‰b^4¾ÙJœ>86¥tJKšuuïðMI0 [¢Ë1t?í%Yv‚Ɖ`*îD+éŸÅ}yÝx5¢i&ú×ÁžäZ£¯£Ç7& 3ñ˜oïq ï)«²o2¾'øâ,fÀ2+ævYåLÿUÇ™tÙ4_¤WÛë¢î†àóà 0s?X÷¨H7 æ¿6eöAhLÆO³kG—× ²qE´Xù@lˆ|iê|1q5š"Ð%s5oó6%Bˆ€g,ÊP›ƒ“2H ¶~K)Iò¾PÓo¯ðûp\¶J–»- è~*J´ˆ€²$x%F2ðòÑÄjÜU,ôÉY³Š…Ðûº4Øô«¨Úqp3ÐÝL4áHq³´ç´ÑÁèW™ét b°.ÃHºÞqß Uª Ú¯ч¤å-Ò©¸]ô¦WdåV„BÝ¥¨™âïK³Oq!0‡Ie)sÆJ{Nu. ´+úçnv{‹LG;E¬•ËÖ~É€2~]½Øá•Ç1F(Ú;þµÅöÞb´·½H̆Êt®íƯ.vkYLí´þ´Rò' ÞDíˆYy:I¢N´^arÀ`BÊ–NÚ²e7~ÝÌóMãùŽ©æTiÉ–Xe\–*9êÞ¥ÚnÊLôÏ®•ÿL¿µô~­Ð—ÊculDð Uñ»(FfÆcÛ |ºL8K’1L7`䥕ª¹| µŽbhU^SPh›C± @îÝ€aà*A¢ùêƒÍBŒò„Óщ€jZ "¯ ^%³=žõ"ÀR¬Ô`k(^DB³™&Fé" ­üsu?Weµù%—1F0L$!Ç\åß^ÏQ¿~*¿›P‹&v/o«×]Qu,:\–»3e!«š5In“’ Ħ·ÍDÊçÌ ? ytN IMÀ€Që/ìÊ6Sh)ñ"6g[‚…N«7’8|†P«ÞžÀvJÆ« úGÏ 1­”)fGç/S¶0–2*n»?L¼žrØJ‡*°EYBUNàù˜k0Cç'§Gg½–ˆ~¬AÕ̲*ÞK—ëp$VžéfLs8w%t¨z²ý™¤îòئÚá Y)—5x:T ÂCq^.HÏ%ÞÍ×ìdrñ QNûÂËyFÃs+Ù_æ‰ÏÖ­Àˆ°^XužêYY¹ŸÄzÞÝD¥4¦TD]*±‹@‰”yˉKÚC9§±ÙÐ jsJÉü,˜cW"Ç@Ðóú+ÄåA!Ö€©ÞIõE¡O‹Ÿ­Ãˆg¾DÛî.M$Ó°‰‡[äüH®·0о&<Ì CÈMLô ÈÑínêó-†§åtŠœo‰Š¼BÝ swQî}!º±ò…lÜQ䄆“©T³\kÀ!¯:¦L®”»—ÔõA»ÉêP¿ sÕ4´°»è”¥à¶PWt ް'Ê{m„M›äSZ•„6g¹§&iÞ@øö œÊ)X›Ro AvQaó2i,¤Žp#T1¡+q˜ $S³¤@„ïBw&–½lcQ=8£¶™äÐ+¡²F£\N…ì‚ÚgöÌÁ«¥½è´Ž^N¥ÏB’¶&I''¬’·£4 æ,êð¸ÏºG’À‚Û t¢iů¢ðÉÑC3+®xirá$Æ2.$lð»áÌ4ÁÙâÊúMõP®â£Á*Š ÛÚ5Ž ŒúvVB–‡ÅØeŒ®…š#S^ÖÄ•y˜%O¡®ãÏY•hÝÃ'­ ܤXÿ=¡1þ&Æ–T,øö…ôiÀûÕáñdeÓ¤í¢¿4×KÀÿ®%Cc­F6Q¿u8ÆñΪ R‘\‡¦Ú ÀêÈ&,}ÚBŠE®XèŽZU†‡8!ª‹}À ä‘ð&ËãY€#‰IÑú®ˆ „ŒQ´6 "‘ðš$%ç!4UF­$!Ðj¯ˆÆm=‘»'æ´rN1Ä¿ãd<vœHiJìLJKD’‰ê¬¢×àÖÉÈ)C0ôˆçœec‰ì²Ú`O²P^&Ç !g³Ya71úJcr<˜ å“8*¦£­FÉŒ´ça”MˆÓÂ2"ÁÔ~,ƒ1[ŒÐ;É}h¨;¥fÍS-Ëiw7Õ ¦u` M´k@sò5L>À2 E ”ñqPÐ3¡¤ Àò¨…•WÎ;ÁªŒ²Œëã™QÏkèH²í‘,ÓüFèÝŒ¿Æ&-˜À‘æ4 ÖFBò q„¶fˆ`²W1ó\jWrnIÚCÂM ×a§âg…p 0zZy±î)–™0Ò °Ü¥[jÄ34Ã0‘m ‰B&±&;’ûLË¡[Æå'p-žËìù¤²Ï1 ·,%ø&8,PÁÒ:0¦m‘ G.º„°ê‘øÛ˜ÐO6ÂÍÛ}¨í¨T&#¾)4—µ»`L¼ñ«ƒ2ÖÂy¬»ÄŽsSݸپÚþ¼Å^½j KNÀ¯ÅÉøÊ4_ Ó±s_½þðøØ/û¿w×·¯îï>Ü6ï©Þ]cÙn®ñŸW®)Û]íêêâá§‹ûû‹O£Ñ¶§s€bGHÜÞq''€Z#—=B ‡hÀ¶Ž ±¨±t#/›4ªHÍ›è qúä¤TS•+gÁ L£Ü&R4¿5õS/ÜHƒ¢ò´HOÿ~$+/=áÁw­Û‚_Wï(*˜zC,,4`FZyв OÜiÐà)Ó¸a¡VªÒѦ%†±­áx÷ZVʳßMà¯\C4í%À]¡¼T 5%9¯Ä\“/ò†Apls1â<§­ÑU}?æøGÛa$3þ•(aë¨Ú®d›IŸ1þ̸ãÄéú׉6¨‹8pBh0ÐuRVèÕš U`Ü©¤x¨ÓpK–ß{•¸"|FŠZOþ—·‚‹š‚ !CGËNÞ œJÈIË—§ŠÖ¾»™‹<|9šäÝÊ¡{q >é².Mq`t4¦?YnC±Oó0Ñ–Ó×µ‚Îd Ù U1þÒšîmbm+þ¯«¿àq0©RŒ.ê:Õ8½e@MÌlµ%,)Ó”¦sཀྵÑ’Tö‡K‡d,4ÂDÓD–˜ûï'árÆ•l ¼*@Œ Àkéj`Û%CBÛ:mNÛ¥ýB4è}1ôJû¢›‘£uh’d¬¼¡”Üè‚.–¶Ò‰¨ëÙ§ÑÈ‹­J“ô\ÈbäÔÁ“ »YÆ/Áñbð3²¹='DŒ‡Yôð<,6”öùªþ¹ùµ^oàZ‚¨EZ4*Ú¶A_.)íYù ÝÇî6˜šëç‡ ¦šŠ¡g„ÌÌЈh©Øk°aÂdGxx|V·Íñ^Ýá´&šE¢‹bp=4¾d3 ^žµ8:À¶A›éYÓG™]nZt]‹Åfk¨p£­“|Üä’9{¤!ÆÙk¢é†h‹IÜ8_ìÕ¼¦•¯`С¬¸ÂêŠõpY÷æµ´XÿÞü\ÖjD6åáäÕÔÄêÂn:Ò±µaü¸™åJ‚‹ˆ µ]Êþ0Û¹9 3A;›óÙÚ£j&çF6cªwcá6ÊŠ-ÄÊc¾«† ›µŒ½QšýÅŒ‡)v”hÄDò0SÇËÃÈ–,ã´à¥É š öÉ.͆i¢ ír¦’:AÆi÷Ö3šr1¶JÉ•‘¢ÓâÊf»Óhœk=·<—OÉ#rÐmåýz»½€¾%½€`eìÅP-Ì»]±Û‹†#@µ ¬HÊäyÐËÌpM™fjzGÈ(Œsö|¸U«´ê ðO\TètšÔT³÷0±ihqî(®qo×ôvÃ-Ü¡¦¦1¹Ò´ë¾Û¶ëí>ãÓãe*K:X¦aº –éÉfª}4ÓÀ [ÃÄ[-žéa‰ψa’¬oh0Õ!š}@S÷À·x¦nß´p¦F3±C35¢Š}4Szô˜áq© &JÑÅõÖŠë–…YKúSíöîÙ”©våCŸoŽ4–Jk óë²ø5 ~¯5ÛÇÕŽœßE2Õ.먧 trÙ Ó¡Ñõ€ÌÞè°Uõv6-´K{ÃóvЃºvPÃTsi lw's¯±Xx`ÛZJñø¥#f'YÌÒ¦ì®jŸo”U½|5©€BO™ÌZ¶·¢}ŸX(}DäyßÊ>§³=H.½îÒË:ÓXƒd3L#”‹pÚJƒÙúƒë7µ|c{¡m, ´V´O^‘Ä‹"¦ÂâôVŽVêvoh¬úˆázɉ¢m™÷=º;]‚Þ_]UÎñѦjU×mªö¾óÍòÕJð#⪺#u?Jå4¨ìÊ»“+_åGޝ÷&Nœ|åű¸Tdæê‰û Æèh¾Jœ×Ó6Á¯U1…ñl±Xy¾ÆCF]{˜Ð ‹~ÆU2‹ÑrÅ  *ñ•LéyðÀÐËq³¢§Ä¥b ÀŒ¼ñ^lbž²Å ¡ ³DÛP$PÛày„Ï'Þ#IÏ Ô Ó¸Yô¯ ‚xŽÏúîò¯WÒ?»0¸h>õÇÐíïÀX¿Úõ7d k`/©(€Ú“\(^B¶h"ŽØ3ÍóÀ¤3µ—Tª mó;çzßßÝ|z{w«ä˜:ÓT$ªñžÙ½DÂ$f§è»âÌ ÇLþî|®7–?÷`¸˜‰þ«/1UÁëpúdÅ?rìDŃQuO˜·6âÅ î¹Þ›Jej#>³çÃÑó>œ£Fž'Fþe6à1ÝOz_ ”ÉŽFúÛ,O =ÖÇÅ)±oè –cç½j€ZÀ‹xfúðàÜMÉž‡í̶3doõnÓ.íÎKÜÐ>D¢·áƒàÑÆtµë,v+¿j g,ˆ‚3ǽ€•x:lÏ X«U£U3§Àr²^½ï ‹ü€Å®u²'°îGéC~=ã*uq-þ뉋£+ìîŠñÈ F…ýÊ+Às0£öÝÖC9°)ÿ—ƒ²5 =›ƒr¡·ð 8(é8jm_3þIeU}Ù#'&õ K K­ªYÂËvߤi­2UÏ~ÐŒò³ø&ÓÔ0S˜_Þ7iöÖóù}“ቮÉ=æ·Ä596¿k2 –”G`¶1CEǸ&‡Lö|®É1ê=Ò5é§]“þפ¶ëí.\à™ü<8/¢†höð¯•3~€½ ×pþ='iƒôª=¨Wt‘¶`¯EY=°W£½ivpoíí:I•^ì&•>¤/Šô²_³}…ùK’SÞË鿢s’=›ûvÌAÖ¸mn\Ž·Ù™~ÝÉ–ÃÜ4nï÷}î8ãÀ͇Æ÷_ÜÚa3åÀµ}b1VŸ2º¡׎Ë®H~9”jš.8¸zçwÝŽzùö=‹Ç¸n}ŸjþwÝ–fÏ캵c#ý¹nOñ£NÌî˜ë6õš¤ëvwEýd“~Ò)>æºýö²ñ»Ü`Öu{Lx;ôoõàŽ‡’ˆ­z}qù÷·ræÛ·Û_øK¯Òî9Ÿrí‰룈ý3E„JLµÚË·y6–”A1µTä¹Eg¢ûªŸ,lˆlvÎñ¦–Ás=“í \ Œ·ôÓ®}`nŠzQ³h¯KJˆ$P¥FF¶]íÃvBÿºÎJ וj£+ß«¦ê· mÕ9IŠñ¤œ'V®8±‹»P}ù¢©Ô®K A”âBε/š„5Ú/m5‚KU{°µDs[[;¬{Õäeµwº\cSŸË(Ï—3Ê Öu™ŠªÌ…LÅp¦—ÓÝË·R-&ñZ1@EÝEíšúÔ¶ÐÃx^ : Õ»‚½r&¯>6íW;çÅ ¢£ÀAÏyH¬ç!ƒï;⚤›å’yžŽrmÐð›â7Þ*Ä íGÕ«s„ЦT¿wÉÄÁów£áúŽ— ×Ó ÙvÂt´žGËÆÂ$,µ CPø]ïû{îA‘Á›Ù‹Nw’±…‰ 5“JמóÀü5C‰ÖôYu;ÕNZê;¼›œ©2ÑPú{–ÙhÁo“ëôïeôÿ–A*®—×¸Ù´ÔØßª†Ù8¨ÃÊVí¾1×@=–¹ƒ­À·{yÞÜÝ>V׿n_VȌѿÿøu)gLÇý»‹›RòóÅýõÅíã ìî ¹}¼ü©)ãÔ×™d_iãÿû×7ÛGìÚªÎOúJ¡Á_îî¯E¼ſɓ¾lðÍÅ»ë›O¯þ|ýz{/ :WÅ<}]5´T•n½ß^^¿¹¾”»•GÆ·­1¾ò‡ÎÍÊ®r¼‰ Ó­±_÷KuºŽ¤œ$Š™QüD )0‘x(#ñCPMŠù2Dt .o8ÀN¥QU²5æ$& ¯¡Kð$7é‰ U—ð¤p%ZýáÅJoh’“Äû”$ ãM×eEe(0[O.÷éÌCß·åêsy˜¦AIŠ_Ÿö—:&Sr=`£H–:­˜Ã„UgÞ‹1ð'°!I,V“åºÞbõõ^JI̤žItÄ*­y2séŽJlg’µ”âAe\K7¼ÏÉkIGÕ’g* ÈÈ,Nf¨#HëÌ­:«p$ŒX÷nx”‘ëƒó¥Ž¤)ãkÀŠõ=£¬Ä)X—ÊùHÚ(ŠK4˜s¾ÀºT}°+g(IeÀ&dN¡Ï%-ìÐÕéùXÂD¼»ªÎôQoʋŔS¼ˆ¼F¾X}Úg x` 5 ÖΦTâ÷Áù|’¸#•s¹ó½ë¢‹xTÞ•˜ë²%@S$¥õºy@Øq;%:n‚).áYÒ}"åÐCX™Ä ªoÊJçЦK$¹ ȨSÑL¢:︬e夯¤$´©)¦˜Yt Y;éVæUê,’Å+Z¿³®ˆ6!ê0Ç’rlž=¢7,]$£Ì)¶”Ä©ÊI+J 9R‹ž͒Ȉ/ã0‘#vtôs¼œ«‡ãX{!¨C³F³i0#fP&ètX_(ˆ#s×I¦E¨"ÌY”{Œ$¸Ú*Í\ÚèÄU™L=•Î-$(¯˜õuÙº¬!2‡5˜LQöf¼$k¶ 7`î1¡LYœl˜–Û$jÖàúóÇdËB@ºx%3–X^!œ¹è¬“XíR@ZP²à̃%¿l-Wº Z§JNò°Ð0ž"hïfæm‰„®µê`Lƒ¼$Ûç™D]–äÇhÁ;¥³$ú€ñf@¡²‹u‰'ûO±oòpŒy³“l°‚s§5â±æ4FìÒJœLΆéôÒ¸‹%Çx¯·){OÌÃØ¯Â¹¹ASÉóÃ$B]‰f:Ï,fA+7‡^œ•0d¼*DæÑ.0JšÉÌE)¹¶Á²•¾€‡ç‚ ]LM 96ቢŸ N9¢„ØyhF›@B½Ò¡ÖkfšY¶%…´ì)yñªA’Ì& }5ÖàÙÌ™Ž× ¬l)/1M¦0Fa “hcjt…fc ‹ø ¼›’W´0×r".®\!úëí’ŠDÔJ…Æëè"´5/s$‰¬‡oÊܪž}^áÜ §¨ŠžIÎ$…NYØuÃÿWµøÌ¬D˜T´®¨y;\íp2®'G ùFCå{H?­Û`üN¯%V¨Uáz‘,KÌ¿1!UƒU¯6ŒiÔíbŸÐròF0‡L»&¤ÛôŠê¯¨”ÞM Ñe¨k÷G/€¾LšðÒÆÖ$›¦ŽX A6àIl9a£J:mJ•B µ¢Vt«ÎF!6Û·Q~lL¢i%·ê™(°{ŠÍª˜Eœ14 ׂÇ6¶¡ÝÆ<ƒ}‹ÿRŒ¿5 K’ÛØÆ’¯Y /¾ó8jˆçC }¤0‚:-÷‰ø¡so‘×tïÞ¸^§y%½S‰¢ƒJŠÇ¢• ºÀ(™é×Oü(Ž$[S²£¦ ¥Ü?½0ÊŒŒÂPÉH8( Îig1™4 Â^3u¿®“ÇhÞ¨Á\¬A— ^Íneä±@`žûf¶–5¯àE›F)/Ù™4  `WØ* ï‚f)š™$²Ô¶-±”xV®Lô,É‚¡ €Éc+)¹¶N …(LCX# ³€j/wIº„ÉmÖ’©Û‹‰Ž‰º#¶(“SB?­0c¯ ’œiÕòv™ú¶+ÁLZFÿç±ìĬçÍN|âµ 34°c×!S‹b&ÞË¢ñ+OÆ®m°PJÜš'É“"Ðcb]Æ;ðŽ{^¢Ã4×PØ,3©S± ò¤i»¢ý–ÙÕ!m‰}-Vª(L[¦Ö:KŽP9«† l’b¼OI$d´ÄÀkK†OÁÈ€D ÇL¡Žä˜êì@Å,Í“/T2àK1‡ƒLÁ0 «R¹;7Õö¹Kkà0Is+-’ñƒè­ªM :rÑ$=ïUHàE¸“‘’T3ï“+»õˆ^/ ËM§&»(7R4e†i±éÀF”סkò`s5TͨLóâ%È{&9e¨¡œ6뎂NƒKÅÉà8^¬Æ¢Ç*^<Ã,ÌÜ·,µ;Éso$§ŠÝÐ5 ¥œ[[üi¢Á€98ò}ª$wVINþ{о-Æ"t Fu!<â%ƒ‹ªqŽv‘’ê d2âI®„~ˆú®SpõU4¶XR˜òµ„¯„r3ŽÆn®ß‰û Å *¾S~QÂ` ÿxB,ÈØmT`ZU¤·ÿËŠþ] SÐXbjì$c3ÖØñZ^ e°ƒãÞÜ/ž)÷z'måyæ _ýŽæ®Î€Ž®¹$›‚—ì!óH¥ø!GP>ž}ñ N¸ê ê®Å4ø†×Rþþwÿ/èLä½+ocsigenserver-2.2.0/local/var/www/ocsigenstuff/scalable/unknown.svgz0000644000000000000000000002162312060404165024146 0ustar0000000000000000‹í}moI’æ÷þu0ƱJùþ¢¶{±Ûs3X ûv±3ƒýx ©’ÌkŠHÊ–û×ßódV‘UdQ¤dÉî™–…n‘YYùñDdDêí¿ÜßÌŠõr5]ÌßÉJœõ|²¸œÎ¯ßýýo.ÃY±Zç—ãÙb^¿;›/Îþå‡ïÞþ²,~\Öãu}Y|š®?ÿ>ÿe5ßÖÅ?¬×·ççŸ>}ª¦MaµX^Ÿ¿)Êò‡ï¾{»úxý]Qèw¾º¸œ¼;k^¸½[ÎRÅËÉy=«oêùzu.+y~¶­>ÙVŸ°÷éÇz²¸¹YÌWéÍùêÊËË«MmŽæ“N•dŒñ\¨s¥JÔ(WŸçëñ}ÙczU !Îñl[ó´Z÷3âà`ÒÓnï ÿ-þÛ¼ÐT«ÅÝrR_áͺš×ëó?ýíO›‡¥¨.×—fZê÷úí-É||S¯nÇ“zuÞ–§÷?M/×À *¤¯êéõ‡õöûôòÝæ§œpé{;‚‹ ‰J«\µi¶ûÈ„JËè¬IUzÌ×kîr1áßÝÍ™/>Í+túk¿ÙÅÝúönýëûu=Ï­`^I¦Ç齪7ÃMõýíb¹.¯¦³:÷uþaqSŸßNç˜õr“Õùâþóu=/§0Ú9Þ›ßÏêó›éM½þ| â­nƳê^©óv¬·óëÁžî/o±°NVÁÛÁ Ÿ»~@·—õÕŠ53åù ¤éž‚yêñò/Ëñå[&×Ë5ûOœÔ²yo­Ö‹Û¶n³¢(A}¶-^\]­j,¼è”­ÖŸgu®]N³ÅòâWþ|ŸŠ`§éúó…<+Ît6ÔBàÏn ©¬RÞjÎo÷º­e†[öÞX¯{󩨯꫑~J·:v…TJóp·µ®e-ŸÔ­èV>ÜÛ¤ž¼Ÿ¼?´ oÏûŒõ0¶Ü¦gõ}gŸÆŸW›$áwñaYCXÿa€c3´q»X×MáßçÓ5¤òݪ^þ•’í?æ_Õ{µþ¶ÏW£7ïÎnÆëåôþ>RÆ`ÃHàgû R5Dkð–ŸcðÒ:÷f;|ùî,¸ÊkßÌgF]9%Ûrê½B©­ŒJvê¢T Ui£ý–}ßr ãÙsRSG©KÛ£g¿Tˆ “{ Û¢SòC•¢RVÅ-3_íÕ»¬·Da@5hGuÒ‚há¼6¾Yö[©|´“ø¤ud0F¾9‘ 6Ô}"¯ð`&ê#$]ú··‘–¹ínFo¶4“¬ý‰¡þäp¾ôÇ6þd6½ýÏñúÆMšïoEöÑÖÔ!ÄÒm©xÛi­ƒæ‹Ë¬pñæŠ?«IwÐÛ՛ϱz‹e9¹[~¯ï–õ>9oS·Qv¾(P~SH©FAUV¨\1)ÄÈ`ÏZ-dQªÊGoâÈUFÄhUQÚJ¡oT"j§,K¤ÖŒ4ß¡(¥©"()Y¤•Õí`¿(¡Bª%œF-Q‰ G¶òAJ QIgƒI‹‘cQê ÛI©^¦dÔ(’•Ã^ð#P¥”Iɲ\ðE*ÀQ642=…©¼áÐˆÆÆr…¯l0BJƒ¡˜ ‹XAWFl´Pá»×…ôz“|ÇUжÚÊVØ—ó-;÷ØóÅ…厤 ˜¦ï2a]}ða‡Ê¿îë# ²ÙL‚?îŠ1Hý7ßóigÿ¬ÖËÅ/5dÞÙäç-{5ßñκ^n¸”û£œÎQt»˜Á”XÌË\ìµú¯¿üÛÙ£ÄB~UGÑcä«ú/ã»Õj:žÿÛìn9È«ÃM’ —ª?NÓÀjÖÂaã÷{ ›•±C‚<¬ÓÐX ˆu´-ŸSKcßåu£Œ”Ò…–u•àŒüQ© ¥ÙQÒª‚掮¯¤a¨é…ë+iƒ4ýž’†¶ò¨¢Éô©=ˆ¨OT!Ƈ”ÄV¸‹¾ô{dŸ Ú¥œ†Áô :WZ{¿ÇþÍDt©Õñ8=ÔqˆB™‡Õ£°å&ÇÉÈúTm,|ga_L;h².·öµñéjvPoO¨µ'“mŒn nvµ±¯ÿÉQ€NôAåG—……º‚›ÐP:*MW@íFÃc§  ã"õ›ƒF‚ŠAx§GRø \¸"Æ*P!> ñ¢-øPÆ(Ì(DH<ÕY™é訽 ÓŒ–P_b AÑ1õ"¿A™?åõY Çúêë°Êz~+RRíHì~'¨Êí2Ò pÛU¡ à€ ‹Ô–Gi8 l¤uÜb{šÆ™`¶rf™ íI¢Ý(=JØH!‡ðÑa8`à+­$b±Xp)½äjcqt2~;£ ¡ñW2 Л¡—ökèÏãC_lÁ”eǼ~wF1@—_[o}™U´¢a[ÿsªo%TXjSÜ:;U%”µ–úó£9ØÆÒoôyû`~º³°/挕¡ƒÕöùÚXe:š¨Êo·;ñÔ–?‰£º  $Í&ÑQ¥Ïà´j#¡A:gü0HŠ|H¬žB)ÄDšvoÛŠ<WÔ54üÓp.ÊðÓvÿ¹ØÓ“[¬bDÖ•Gp›áÏá6we¯ìÓP ¦©z&Ê âãBÁHõ;–Ò`×çÜoÛC{õé³²#ण[¡c›lœVQ ivœY´{ò¦TPÔÏO,šOÚ©=L0ZªO&¬9ó»tôÎØg„ÎÝãÄu‹ 6°ôd§áÊEÕ±Á(_ mÐZ†žÞ¯{š`0T¥2§¨ Ôv¸©yDÞþ'¯~Ï“_mò_ærê``ú±Ä&ä¢/Po17“ß‘b/açò(-ŽcçãònÀQhôAi a„ ®wtx|­O§CŒwðüdãùH?‚¢†PŠNq'ãœNgC'µG@U}ìW?Ë‘éoN4@=Ñ0À 2œÀ âk2ˆzeþ!¨|¹¯~évÊïôõnš`ÁðX7+x½·&W‹ùº\M­/\¨´&Ø`nï¿Ïå¬s1‡9žå’ã%DæºWö)Aè^Ñj½¬×“mÙº¾_—ãÙôz~±Z—ëïIˆ2Cï ¼ÿùý¬^CV–Œ¾šÎ¯/Fði±¼ì,§k|.o—õÅlY®ß7 Ï'ÀR¹åƒçdX”‡ÎÉò¸¯Æ7ÓÙ狟ÿ÷¿þŸB¹â¯°°¿/Û¥)óÔnëÉôj:IÊ¡Ws _ÓÞ)[oíõôº«þ£HB1ÖF½Ù,Ôž›¹qÿZ—Ž?])]Áò•^…ʺ´#…"4ÏAaõFéG¶N÷Þ²ŠÖ99òÐfXâT+8/ÿ•„vc%/¥E%]9çÐOP-¶Š‰£üÁòÐWí#»“š¶ñ y4,½Q~ÓŸ¹ÊEâY!F‚"U)k”ql'ª>9®þO×&ÏZ’—:êè:%ª2ZÆ(Q­k"]Í•ÒA;œí¸«è^“W¿iòj?µ¸Ç _˜8Õ&<¹šN)ëåcÜn‡Ä<³Ñ‡S_ÆxÈùèåλ~[ÆÃSn6¼>aø¦…ý†onØ¿ááÐ¥ô†‰S8ë”àØÍ=ݽÆð]C×r<ÿí_ ½õi…å3Ptø: Ò|¥œdÞ+t ^æ> ëo1'yÿÆ î-CL ~DNòÀAÝ{†:Ùy/“Ìû…Žgó¼ÔÅf«ieü#7êÀ=  A†t&@ê—¿xà¥ò‚Kù*ü{F‚žîAÓ ª …ZaèîRjKâKP~Á†}ÿû÷Ú}£óK.·8ÊP^W <#!OhìÜ™ñ´ìÎo˜ü¡:Gºß8ùã[Lþ±ÛóŸjòûW |‹É¿=çýŒéÓÖŒßÔ—§õ§ï6£?ÞŒäv|]'MŒ9g3¥yð~±¼¬—í#—þõ5Êz{sf‡Äluó\ ?_}_.>½;S»],nR,ƒ4Š—*î<¦È•$†‘{¯RþF†G¿Y°ÍÃËÅäŽ÷º–wyenï÷^¿[.Ya6þ\cÖéW»¥··’nÞëÜLº)[}X|º^’Èëå]½ÛŸ”·‹éœýw*¤·î¦—õêÀ{|V¾¿¸~þi:-ËÍ7y”»5Ú!{ëÔ¸ßJÚÝG ®z÷áj>¾-¯g‹÷ãÙƒƒ»ßOo¦¿Ö—¤6ÈM ÍFîÑ­»ýþ‚ï^.nþsY ãþZ¯™©°ÝÉôZ¼;»ÿÌ×6…‹åôz:çô6‹Õ~î6Y¨jiËýGŸµ[…'=›]TõÍí' ¢ºÕ;å¦[Þô½Ý1Eñqºš¾ŸÕ=º£îœ7Ä^î”’ÆM}Ò…lµ˜Ï>7Õ6Òs#8Óu…Ñž6¶Êøv±šæÒ’y‘~º(ú±©%cyŽ^¤’°·•ö#‡JXoöûÒê Àd /*¤¥×ΛÊ|èÌh'6òw_ì¦ò›z=¾¯Ç[Ü–4´»o——Wÿõ§?oŒ§Éäâ¿ËMÐ!*Œß/î°ƒ»É+—“ "®ñú‡é 6¯þ_÷73hƒÍƒ^eîm£¹Ùe¯w¼ûrr3åKç]Og³g'#¯itºžÕ?¤>óÇvçÍ4Z#­3Ë·ç-Ò·ë±0¿¯!T~š~¬g³E!÷Åéâî–ùI¬>Û’·‘ÝMŸ]¿wcƒnüpS8mNfúC.Úõzg×|v“o£Æ¶€5û¿5SBè0ÖÎà)Éa ¡“Lòâ +fÃÀ¨b"G6@„.L„ÓB°ì¥‹…§7YYž£§TÑKcT!™ ës¦‡Ž:2A6žJiŒcá;†‰EŠ/Á>4tŠ­dðÉ©„fR.OŠ"b©-¤Ñp ,Ä"PýD&› s^¯‘ØlèµIR ? á¸-qL.ÇÈgE^‚Ä\‚×ö‘“6GðÐNdßÉq}‡Öa ð$“ï%Ñö—ÆShè0’HL䎙5µIÉÓ‰ñ@AÆ=Qš…È^‘aT‰ÊJAæysZ0ø è¤sMÉP0úÁtýÃÊ#cáîúï1M†á–:U²àÝYS?>ýÍáù8d¥ÃƒŽŠÞ%+{Ø<ç³ìº-$Öú`àp‡a]à…Њ”:ôsÐAùÓîi߉Ü#y¨"“ݰ¼YB£¾éÑ3"µ%r·Äœx ’!ò¿ód¸v\Šÿ“ÔØ‘œÆ? Ÿ±UEbz i¨Ä“@÷xÏhv(Ž¡«•ötéAœ¨@5UÝÄà„ƒ1Á$,,Í|q `:ú”P.ƒ³”»²da) • šsZ…9këÁªyîCE[ØqÔ‡ñPÏ•´€`{¸ Bë Ã:ó4šS®øÈ‘Y(   ÿt<à?J ,Z¼¼ÄX“°*Ãß4ÃV%ã€ÜË:M‡Ö.Ë‚`ÈÀðR`^ˆ’ 1#}g@­¼Zg/â7@iKFÀzð)Gåaš»NÉA¾%k÷7d\ƒŠ'¼ FÓN“À6¹òD–‘0Ò&`¹Ë·I©ÏÐçæ˜?•¶14 mšÄtHî -Þ#¤Lü©Å´ãNÌʼnâsˆÃµ…Hq¶}t´D°´‚)ÀZ$èÒ±4`O°!†ƒ¦í‰AÓ +ƒBÚX;ò蘱'IeøgD’”“DBÌPZÐåþÖIŸ“‚“©"<ð IèÛĶž2š÷ÄY²r¤ †1<¢y"CÒ¦0ò‚L1ØèÄ¥ü$%”ã’áC’!»dP¼ÍÉ1V&ñ%@DZ’øä'^Dë–9¸ªB7ÛŽvJ[¢ÓßFIæ’£2K‘÷bIBS‘lL•.CrÑÑ£ÀÛJÓ™€š!¿týx|“Î=¤&4b-ÿ ÁˆÇîçE^уž°’x{€[‰­ Ïí½-%A7(¤! ,ä`þÙÓ%ðMÓ#<ä ÅF€Q0))mòäEšt€í%,N,$ (Ò0UU8Xd?b˜:½‚) ÞB Ðò䌼G ÂÀHê_Þ}jRta¬¡­º)ÆbïM'¿‘V2ÝÿeaÒÆ@FFOX­‘ÖÜlúŽbT¼I*xCvwôÍÂTƘNÝÓmi„Ùa½”5X7è[è°RÁXap }:¨°‹TÚÊ©GZr`z¨†dI³+‰»ôàˆÐùŦ«¹^'«ò -“Î  ò ›iB%†õŽÆ'«»-STýšvb › (m”7Og0K^9Ç¿AO2ÔI%fÎð2,̵doš­:C ðXè×'i,è\£¦á¾e¸Ý$,¯L:ŽÁø@zòKÚ¦ÙUÆA>ÓÔÈÁ¼½Ï[ Û–SþcÄïïÖënÙÿ[Lç7S¨¯¶4}™Mñë´e»Û»¼¯>Œ—ËñçCÊ0'Aõ üÏžÐéï’ªÿ€å1D<6¹½v°ß7ă&|99ªŸsÒÒýÜLç ‰ÍÈlù×V÷‹’ƒ@wñ€~>yO0çÊŽ?ëú¡i8¨4M3öásŒÉ`O`èQÉÌ=ì@M(2ˆˆ¤íŸ±\kàÌ׫Gs$â×¾zTÊnxú iex{èÆ¶j¾QJÃö!y활¯Ã뵤¯×’¾^Kú|-©”ºÿà·p-©r{2]Kú»P[«y$²Š=D7{H›´¾Œ@„ðj|nÔg¸~/¡ºÜš}šê¢l£¸¶íðnÛþµ§?¨×öí¦¾œÞݼ‡Mç—XÖ ±Ïo©à²ž,–™li%Ž2á æV6dÌ\N—Øöls¶^~ÿ~¶˜üRÞ.×Ëzµb)˜ô$¾eÜ~ÐêÃôj}Ñ~ý¾I¥ë¸ÖˆÖ™•Ë»DÎù¯õrÑCFùf¼üܘª¤â錭5ÁĘÝêvÎÎÓ`ëåÕlñió<‡#—ïÇ“_°9¿¼O&w7w¼‘ýy9º1† `Ø4ÒcÀÔ#ìñâGž¤„¹”*¸Ð<ž—PYt‰„H€åaú3RŒ:BZ™Ê,oå åÙ^P†Ç Mø’³Éïœ`“ÊGôt3¨x§ññ*iþ^ÆÕÉk|èœSØMôZÈdÒìTE’g¾8´U¾ ÈbQÒž³D>°ˆÆ¤C”‰èÈe“·#¢ugŠöÒûäðÒÃZ$AèHŠC ŒVxp.• Û1˜%¦Z"ýΈIê˜ì=1*ºt0)‚Ò«ÀT2É)®Dãà3Š¡;ŠÇ#£öl\ðʃ‘`ˆÒ%…batgT /’^ËÃ%v¬mëZJ{ÙY:Õ%ýLš˜Ëd ɦlòak'p #3éäbÊ_ƒ‘ƒf•;ãý¦–<Ò iÀ,è…^%^Ï”ü+éÖŠ¦ T^ψ¤ÏÑCu¥Fc„$9êqç;Ѱd\‹§µkb ïõÄ‘ÌÍ×t›¦+34%0o¤pÉ3dòŸÔBÄôŽÐLG´ £ò 5PB»×bÚ6¯ñ]Œ¦iM ­’“ |‡ñ§`iSü±tXj›ÂÜ€ }öÖÒ‰HHìd:‰M§ÐA¸õ‚pVàfëtþ¡iðŠ ¦ªÊtÙ†öp”A Ø§<VLŠäyE[æu:ù‹ êÖ)ÃÞà]zä]ÅÆ^Úïi%m9 G5¤ì7Ÿ Η“¡;\ä•g²7=ó¤/øæ2Ť¦É®ÓqOö£çÑñŠèŸHyf.jcöD«ôL{ÎFŸÊ1÷B8Åj¤¸H¬““ñ Þb¹²™æ¡kå¸gÒµ‚ýÎé ¥‰§D× žn,|݆·ªãï“ä`ø‚äA dƒ¦/O19A û¯‰]Í%ŒA¾I” &V#M bö?ç?ßÒÊK•ý é ÚÚeÕ’*ñä"B tzëéÇöÉ·À Ìí5%Úõµ¤‡D£¹èi¼ÙŽ¡À:­²d”cš2öSpÉ^–JÅŽø%»A!yª·,á¹Ö¦1Ç—6}Rª€ÿ¹vVä@öYÑnJZšŒF€–”Û­*zWþôÌÎçþk«Ž;½µ;W}StÕÿ°ûoø/_\ïúP³)¢:AaOw†~±?vÈþR—Þ®Õ¥ÜÀÅ{ÿlfö·ôО`k>ÆSò,.šÇlÈÍ®V^îZ8¯àWð«ø7â>êCt…=¿Ç­Ñ+^ÿóë•ß³ûö!½öRît˜}õÒ½zé^½t¯^ºW/Ý«—îÕK÷ê¥û½yé^¸_¸ŸŠùOó¡þfâPaz¿Æ¡~›8TÈ´×8ÔW/ä«ò÷æ…v»ù‡ú[V¿gGæžê ú5õ¦ÿÃôW÷«‡ûÕÃýêá~õp¿z¸_=ܯîß™‡»cvÚ¤8Ôôë-ïÌÿá»ÿÆ?‘ºocsigenserver-2.2.0/local/var/www/ocsigenstuff/scalable/image-x-generic.svgz0000644000000000000000000004005112060404165025404 0ustar0000000000000000‹í}[s#Gvæûü lÏË(3óäµGGØO8bëð%öqÁm6É ÙR·~ý~ßÉP(»Ð¢Æ#y,"Q¨¬:÷{~ÿwŸ?ÞN~Z=>ÝÜßýðÎÎÍ»Éênyus÷á‡wÿùÿ4Ëï&OÏ‹»«ÅíýÝê‡ww÷ïþîO¿ûþÍf“x\-žWW“ŸožœüóÝ?-«É~|~~xqñóÏ?ÏošÅùý㇋ï&³ÙŸ~÷»ïŸ~úð»Éd‚}ïžÞ_-x×üàáÓã­^xµ¼XÝ®>®îžŸ.ìÜ^¼Û^¾Ü^¾äî7?­–÷?Þß=é/ïž~ߺøñêzs5ŸægÑ‹l)å¸ çf¸böôåîyñy¶ûSônúùêèŽvžSè½àKû‚?áŠï¯V×O¼²âƒŸ€¬ßá[ÔjñøçÇÅÕ ©^W¯ÜýÆ›˜šßàWOÏ÷ëkˆç/·gËûÛûÇ÷¿× ·ºü£.݃rnž¿¼·|·ýÍýõõÓ ´bZkJ/øö*ï&§ïC^\^wvëÙÌön–ìf³ï/vßz ¢ûÖûá9‡ž7¼^òßîÑuæ¿ÇadæÁ¹$å`ááÃË»n¯òýwNɇ$;ïß÷¤fu½êbó§l+¥wÛb¬sÆûÃÛ®deWöUÛ¦#´Ö³Ûrµ¼\vä•t¸¸õíj‰½·?/¾þðîãâùñæó ·­-9ä©Á¿ÛOPH¹„F ü»ädCŒßmßþð.Çy’Ôz˜/X,2Îú¸¥ÔÏ«aî£q¶u-V­qsñ’¶äû=tq;&4¥X™…xîn‚ Jë‚åg<.Ø¢µòjÍÜW¶Ä|½wÝuïuX̸ †…; !©.>5Yš¹4Ï-þ™g›½·ßHè¾’V{h°u€¤Ó^©{°[˜ùa’µg?Ó·_ŸúÁ~i–Ž1þòöæá_Ï?nȤù|˜¹ÇúJɹÌ⊭»µL©»û«j à—Oü÷iÙ~è-öîûÇÙòÓãO‹çO«}p>è¶Å¶~2ÁúljµnšÝ<Wrœ,'fêÁ³AŒÌÜ<•äË4ν)%¸É,Ì–ð‹¹)]àŠ59ø©ðW&Of¿_$MI¯Ñ¤„;l´F×J2kfn²†yÊÖFÇÏ"Y@è6@FXÃÕF¤¤)n½áÖì<‚!°£KúLÅÞJr̸sžÃœOy³icqŸ©™øyò.û)n"à®8Ió½qÓ™ÇÓøl'e…‰ q|N2±iŽÝ,çP¹&.ÌÁœ/=sÜ<ñ'ÿ0±¦`=žð5Å Ý8/)§Üõ/ûJ fìí{¸TèÊ2ˆþïþÈo[Lôôüxÿß+PÉ]‹Ó/Ö4Ö|ÆožWR%“Ìnî°ôp[Üzhìéßþü÷ïɆúS)f‡š¯W^|zzºYÜýýí§Ç^‚í¿%Ápõ«ŸnôÁÔëã ¥CÌ»;ÎvVZ ¨u65 dPJTÔa6¦ªöÅK0¥Ñ >–”¢€deî¼OT ìÚ,¾£©e¬¸ÜQÕà´³ëjj›„=Em`З£ª¤„ÒÉÝkUŸ¨(r)‡ÅVÀ›] xÐÐ>Ùp¤ ú ê^ ݉¤´GýÍ‹ÈÌ Úø“ºoã\Œó¥ô«HfÜŽ“­ëS5²I-ÄžM#Gh³6µîjäÓUm¯î^Rs/—=ÛÒÀéjä47üÇNóT]vPŠÖL´”Ør“©ÑŒ_¼…þ5!CŪ·…5T²¡¬€æÃ7qRʼx™Qâ<@á•0á—¶㧹̡Q—ªË %¨¼ Ò¼Xh/3ÍP Ø˜j‘Ÿ Ë&©¾¨ÎÖ&Ù®öúU5V´6·Àƒ~Fù颴¬úu<  ®µþ¥^ Xúä¶2toƒL¶®ÀÁ_!:Ú3&$wPÂ1P?/èÃoÞdg¹^ L–öá[Bý怃Ð{êÉ…ñ †gáúz9à$ ±28öƒxD(äjµ‚(}‚ô4q@Q­¯ %–´U ÞT¡tDAzþûU 2^‡ëðÊø!´øŽ)Ø«.vY`a{kí9¨n¢ I;ŸÈу^ǃ‰È Ýxe÷m\xém¾^—{šL›×zÄ#ïÑÛ&20—C„¹óǺjÇÓÚ}/Þnd›¹¶#¤×²+´Ëg&gZŸ!÷vÀòíõ" w‚0°$ qM‡©"…©â¼|0Ùœ…¹“‘þ=øîØÜ};6¶ÅxfŠ-sçk½W(k—z¯téŤïÕå¹ bâÔ%˜ê~×wµ®®‰nkÐwµ ÆqiËHt^¹j³mù‹k_;~ TAxºR«ºó•aPì%ƒThßn'A±[+ÏåE g½®éõÈÛþJ’-ÃD.ÇØkÞÄRÿ9¼íÕÕbãk¶u¯ÈK]º$¶kñýq,äˆærpûvÈÁný¶çy‘ƒmûhâ×FN9ŽœxÌþ9±7W~väÄ>ñð+#'æãÈIæ["'õòéÙ‘“úöWFNz1ìÜzîÞê„s!'÷—`œ9¹aUä¸d‡„<.LéjAn_ý¸½Ó.iï.ñ”(Rÿö¾d#Ź“öÏ} þšmÇ£}_Té½q°üj,Ú÷i`îz‘SWÖ½šö}Ûûj(‘ ×W‹°ì¦Û^Å84õå–#B1­M9Šaãe‘ÃP9¼ßuž_Å0"ý  ÷õUtÝÈöë¡è‡Õå^__›E7 ûPO›y?$”riVe9„Ž@qXh%…«ëâFƒ¢-Ôâa· © /PÂCÞã½KÃ8z!ÎÚaR¹Èžá°ÙÞÇ8°D7ê&©Žlï_~{zƒƒ*1Vq»E$¯¥!À~4yæåe¿¶ç=ò®ÂI%}Ï-ðqÞÊ^úÅXP“äÆƒš$¿Æôi°÷0ùu}–—C hXÀý"牤AÛ—¥saˆ2óm?T¦å¢K±¯§!7žô–ìÐPZ…¥"AÓPVcWþÒŽÅG”_/F´ûä—Øb^Ý%qXýüÿ`Æò°ûѪ¸Ó¡V†Ðž³þÒ ‰Š¦½2ŒöìB.ÝéyŠeDÚ C ˜E–{´÷z(†aPLÕx´ƃ¢7C ¼¹2WcAÑ›P\9±ÝÀìáÝÅïE|[fä0²(²hDûƒFô0{ìúš=ƒ¶îðí°í˵Ë{Áø#ÛWC¦[Ü×l?°šÚ&ñÃ(/%ýÒ÷n/Ã<˜ëëK?Zh„?"û!*8-Ýå^]ÄëØä íPn·£¯½}æ.¯K¨I½îþ‡¡4tur= ?Â0à_™d¢>Êéé‡ÿ¾ÀˆäÇ3ǘÊ`Œ/H£qP¦/}¹´ÃÄ ,Wâ°¯£8J«(ì(Ÿ¼ý@GèújÂ0 |Pæa*pqóP Ê@ÝBÌfûa |½¼¾.C¤çaJ#ê 2$Œ5Ø¥8ÈAàÆAPt!øf”ˆE†f”˜x5(·B¤_öªÀ`†Iá—%¥Ñ8(˜aòÃ]Ç… dà:( t r¼¾^ yûƒÌh!M'fHbë«ÁØkXoÔ@0<¸ñY"Clß@cn,ç{“ÞåÚ_òŸCq<ûÇÉ áF%¤«6ü¡÷8쨸t9h÷ÃPoúî5$h²¬ÜhIU˜t>¬dHyÁ(Ž— 6±Å¡šük‡°ðxaSr¥¿DÚÂýkÚ–]Ÿ¤¾r)uê©zmncöæ{Ú\ }ˆ¯Íš ïÒ€„2¬¦!¸WâÏ…a¹°¾ÝNîÒÀnGûO§r7„Ê{Gì°–Õ¸bÃpƒÙ vÜ{¶µÑ$f,0J̃êûF#×пÁˆÝG+ð8è¿“è ÆdÆ3£R9Zkú‡ôí?â©ÒrHp6½}ݧíî3ÿ=ºûWãË l߀ÝÐBÉQ‰ÑfGÁõ¿"'WF£äñÀè¿vöÞ׀ѳoF£ÍÞ{òëÙ;ØüW´w$Å£öÎÄ´Øý„é†Ë'NH⤯›pèeÇÂê¿L¬›º8œÏ§Ùh8—ÏÍû'3–ø!ð¿e”øÇrbæÙYNGXNVJEþ²“Û‰™Jà° ê´DàFdÂ/ îˆÙÉžŸÅÊÔbkŽ:ô?Ÿ§”bô\à°1M´bKòœj°Gžú¹„hDŸ—=m nnRH“bñ‹ ›yZhP¼›d;/>ç<µÆbsü$›yH.Ö°EÂ…“”IÉâ1ŒŸhk¼¸˜õÓ_*øçR1:— ÿu¬âÜæS2»8)ÝÙ…/O¹Øö ”©ÛæßW;àPñÕ€g£+$ˆ†hw'8W8éeë¿s AEr‹n9ÐÀ% ¾¸V $æìAiÅy xå¿Ák¼‚ù¼Ák\òßàu^þoðjÝãÈpÀ+}=¼þš†Û¢½dÐ^‹ö˜Ø¥Dƒ©¤h; ÞÍs°m‚Â*À=o=¡‚Ÿ'qw %¡Ì¶O8/´r8­Ö¸Ž($ÀÕ^Î%ø)„&Œ3›dîïrpâ.îä9 »]Ÿ!æÖ”`Â1€ž½Î38'}kìc/Ç® IcÚ­g+ÛäðÒÜØñvêÜœ5ɹGº– µéÅοòQ‚´¡ì²¯wôá\»þü,€<̾q„9_kömฆa`~ ¯]€©c,~WÞ9ÉÆùû •´êKΰp`#èŽÓ£:» °(ðK¥%f*…îèÖîÌGÐ],çyì€>°Ä€•yNíé^`  9î±d”;§¾ø™9Ò6NÒ*â4xAA8S:֜֜õ]‹sö™îêT(ZSÂY-mk>°Qu…ÑêŠ!¦€HJÅ7:5BûuL9`úV=œšÅ¼¶äŽ)G "ã$ðo2å¬JU{{rÔ™•[@ò¼ 9¸ØÒIjâ¥LS§ËÁ1ÎKva׿Ø^{V@º#,<¦! ¯¼¦ÈÄ9ìr1 Ó¸]Št¢çÐu(29–4z·kæQ£@4´{ ÏÈ–qÙ ÈtÇ–"³‡‰¼6—C b Èì@r m×á%EJ ]«¥äyòºV ìeñ»IÇ¥öÀ‘³0¶9Æ<ª×ÃVBròq<Î×p:bW>B> ¶tÃ¥9¸Ž¢Ù\{V0–ÃÔ˜ÇT4 óŒ6ˆKÇ©1áwxÌݘA ÝSl˽P@Š€Fã.¡y(ÂñÓ\¾ ŽáGÕ3pa¼¬áC8AÍPI@8æ]zl Ä^éУ‡ß¡Ç͵ç„c›czá8jˉq­¯O°P@zÃ3 Èd¥s ä÷<ºödkÕׯñ8.³K!BÍdßÑר•'Ú…ó>ìH<È1ÕŒ”Óo Èh’Q5S"Ï:«Q,uéâÜ_vMq¸-s¯5e;€dÌE¿«¯yØ®î¬Ußž1ÚÈ2ª¢¤ÚÄUA¦ø£¬íM‚Oc;'SŠ7̲îº4Áªö.=ðcÂyÔÚžtŽcjÏS܆³m*î8-¹5ùN°50ÑìË. }‰<<´•£X¼kwžÃ™ngû{ùÍÂ[¾@@×q¦¡°cŠÒÑ)0*C0©Cyt¼}8s´† *6¦Né ¬z†šŸÎOµƒ)ù€Œ°ÃMðݰ\ìR䬯¢ö¨ä7 {ýVv8ŒÓ.=å1x*¨ÔºÖÌo¾íörTå‘›S´ð÷Ž*WÊœg¬v"×Y§”Ý0Ž·º˜ÐñS £Ü;GÁŸ#°&ë²7–ÂÆM)!âHáYéÝS¶P(<Ò³Œ¶Ÿå¡vÅž™ÝzS¥¶è¯Ãаöà;dÎ>í3!Û9+êv+Ü,†¸›‘)igÎ ; Ç1½”WÁ±Àü+íøa †q¢C;‘¨p„"í¤t³œ7<{ vLM-´5cK(QŽ[×bàîåΙ¼°€í„qD„SÏ[>ZF7'AHž7 ß6{á8ª¢I†å°ë°¢'rÄBM„öYU5fç;îÈš¯Sn§•±ƒððn{^oï(=Ž{Ö–/v~à$ǶÏ'q7@¬Ÿ›è;n3¼Ih%Ó-fЪdæ€ØQ@þêšæ¯EBþêªæ¯Ce»_]Ó8!v-ñÈj‘Ø.¯Q0šTÅN'±{àÜ sЗÉÈÎKíÆímÚ%ëÌδ¿ÿz$q½VS¹DãB²S…#D;•LÕ*ÿ®Ù÷W«ë'ýkÛù²ø¸ºúéfõóï6ï|¹Ø<ÁÃâÃJ[©ÚûÓ|qyÿxµz\õŸ¯šö íj¾Ø †wÝ|oú¿úqquÿ3<¸î—¿ÜßÔs]õÛýzÉ“Lm˜‹ñ{?]~¡¢ž1¡ûÝÕýòÓG@zö©"äáóÞ¯?=>ò‚ÛÅ—^Zÿ³Þ~}~´Ë›ßmÎàn­=ýxÿó‡GÂøùñÓª»¿™=ÜßÜqÿÖú«O7W«§~Çïf——÷Ÿû¿ÿùæ œmžqVè^±~ämUr÷ŠÏÛV§îW„íÆŽÜ|ùt·x˜}¸½¿\Ü|¸‹Ï7o~Y]õl ÷ MôßA¿n½}#vÀÚfé?ãó?=Þü×Ç•ññßWÏÏ7w¶Òm`?¼ûü…?Û,Þ?Þ|¸¹ãÛop¹^ü²»øDº¾û€KÓIvÿ«/=_­‰$½á±Édõñá…oZìãÚ—·Ö}{½Ù{ËO“ÉO7O7—·»@ŵw ,^uV ãæzÂ…RñéþîöKsÙF"oÄŠÒd P`œõ´Ó­P|¸º©«³˜§®ÌÅ…ÒI5ê|h—¼~–ºGç$M­„¹ ­ã6{Inë˜ö2SÛ³—ä9ŒX®Ó+ü2…uϋɦòû‹}¡¬ëWÏ‹«Åób+¡×+.nÎÿþñêúý¿ýã?m:—Ë÷ÿ÷þñ¿×;N&¼`qyÿ ¾é‡ÄuWË÷T,‹ç?Ý|]<ýôáþx ]±ùbçbòÇö¦õ¶ †OKÐÒÏÏï/.>=ÞÎï?à&ø¿7üÑÅ¿?ßÜÞþ37iõœ67½y¾]ýI÷¬®ßâ¢yu‡^ë-¿¿XƒA?}舅ÛÅå 2ç/7?­noï'{ŠâÃãý§‡÷W«F”¿Û‚·íÍží–ѽ#»A˜&Æš#»›FØÎ‘ÝõåÚ¸=í|k£?µqb¦ÅMXD˜nœ,'ê<„ñÁσcq ,XZ6–Ib Ã… ‹±Øî9Óª,ï&–uâɳzc.EJà}àT…é Š³Hâo<›j«Çv™Š³9q%ã6‚ÛðøÿX øù ·‚a‘ð‹ÝÄ±î ®îæÎwËD|½|:c‡N§›è˜¾¨Ýšüƒí¨¶Q³“µØ¨y:üÁ­ðüÑ{ÏϾ¤ñ’ùøYRÆgc37?ÔžQ? …øpÁê'€ó—†#"ñˆ­¬Ó‰=½Ú„—;mÂÏ}fìX˜ÿ©1ÔŠ,º”©#  ¿‚-^òw[©Ó¦¹¯½i‡v_&T ƒÑ𩤯Èú´ùí| ~Ç0|e\D'$ˆõ)ó2 ig0 ÊL Fñ”Ãlf4Å[,°¥žÂžgUm>GúÎàç €nå3™¿âV…ÙÉX: û¾Þ{8ÏÝÞûµ|¹»¿[í"Æ’àÁ(S'€hÍO@tó +ƒ÷õ†!ApÐd&o®±uÎX² J²4‘Û¥ÉG¼7­ò¯¯¥É“ˆ±3ϱ‡%·SVúaÇX”vly_%XNEȹ)®ÑO ÖAžlTÑZ÷ 0…ï¶Ó06[ôßÒŸ¢·Í-1v¯hÙþŒ…¬á$Š -[¦Žè˜ñu~x§T°ÄÒ¾n ®I»7Ô÷÷±u’òÞ !ó9vñBÊ{AË©ÃLOB†(Ÿ×ß°±ÙûËOÏÏíµÿ‚óþÖîêñML6ßí%  R´'²ÕÙÀ£‰A3·äÈ•ºÍ¨G»tÊÐi‚‰«3fèZ(Ÿ „ª¾†Õ'°¯=Íb˜õU?‹/Û’Âz c*ˆeÎJÛ³ÐÌN1¬H¶ì!•’'Ô.°è ó(–$լʯXÈ!`G4(V¡¦zVôæV;Ôô´ G€†úoªÎ ¿œà} ¤PTõo_zVš›nÞÐÂwð¾ˆzp  í°˜`]¨›û#ôp4`+ÎXÆ / ¯eµ˜ºª¤„"å%Æq»äú¢´ç?¿œ‘É>tŸïοÈK=º–ƒötí)dÞ÷"JÞð0›±@;\À‹Ø ißÃVÆ ÛïZBºG^ “'¼§ß½,5vÌŠ»HßÔ§)¸qÙbÖ†ÓÍ"_’8•m3P î”`±j;ã¤àM ëüa.Ó×dG5ølÊü-­7Ï–Ã %èÃxß³r«3È¥ðlÁôäµW4¨ýÞ,ÖŒ?‚]+ÆlŒQY+6ƒÓ#7€-âe«¡/PÙdm˜®™ezÃa¥Á å@¼…ƒaÛ·t;aÊÐûPŒÕŽŽÙa–ØÅÔ!vÙ¡ïoBùUdA˜:Ük`ÃÃgr*Z´^ž‘Å” ]qQC‚µ™kÍ€‹ûtaß«Zw‘à&6À4úÙ°7ºjÖÓ»)¤î4.áÿÂÓŸYípmv@üû*Àœú „*}T@ÿÕJÙ<ÁþÊ-| ¼pÅÆ ù ä7MÁ¼†BšÃ†q `jŽ4à ÎÔã €1Ò«I %ž$§®Œ'QÄàtÁ–`J¥hŸ¡bac‘¶P (ÏãŽ1i¬ã¼T`áaꎡyô—© ì!æmQ{@¶·‘.eI©ŒH6”ÎÃGš‡™Ž>xŽd‘ch$A.’( `IQ@Û–jh6’äM{ÛDà_EŠ1€N0øPnÓÒíÔ5„æÈq3¡@ú‡äIÑäì{VÍaº¶Á’rY”9e˜V°ës A¾>Œ[8|Q³lˆ.S üÅÊqù)é ßDÎj± ‚Âpçà̬Fgtü5Qµª¶Rµ¢›g­­gÜÛ0dÃÍÅW‚ËŠ†ŸàR9;OÇœ…‹%dÒb†!3¢GuN9à9$+ðž‡âhusZI g‡ìÕØ7~-Ê„A#ö°/4Bl›Ÿ0®cŒraq¦¨C‚«G$sÌÓz²²-M¸Ž{ÏšÍ}Å"nåµ8;/N±È ”zp–†¢ñôˆÊ™%)˜f IšùÊiÁëa™‚¬é‹á§•›2ù!ê°;º1Ìý1(’àÆ8^<$bQŠ/‘C´¾¢1†Ä|Ó Ь.7Þhm…¨X§]¸:,M¢CËÙ¤Q=xN”R,êæ§ô´ƒŠÅb°aãé{<*O=í\Ÿ¼=ƒ‹ö6°¸¸4Wîj,R 2ï„·ÙÍÎD—4Ÿ”h;’Þ €S&X-O€Éj¢ÑĨB˜Î:è¿h9ÀŒ0©C®)˲4b1SÂr¼‹ÉQ‘hcbFÛ²,&á€böühš;³+Žƒ6H¢™ a*Ѿ“&_™K»úzft.D!g½åÅ\²cÈnjÂ,a´Ã»ãŠ&ñd ˜ˆ‰¥{ª’\qèÕŠ‘Ä|žÕ\Ÿ¡YÃ2!Gݰž€C˜†‡ ±˜à5ÕàY²ˆÍ3ÓD¢¯Õ Dbʸ9P&¤‡"ŠE/,äÄ7bÙ¤b¡Œ€F†ä$ÌÚÀv¯Bc^£1uÑ4ڗѸƢßÇb<߈q—`YF°O³ãÈ.O€mì,ÚãXü­0ã1nÆrô}Ö±ùAmTø\Zwé--ÜdUõcSÛ¬5¦p8$ÔªgxÛøœËZ¥ÍÀ°@­•¦æZcðºÂ–&Þ¨Ø>°jµØ0¹À «“ÄjÄÀRšpêª?…™šÂ¼8ó›ðÊ9‰»BäïXs™+„4пVèÁ䯇1‘KR÷ ðqPºuMee`fží šïVØþE½kv¾†6GÊZqËs5'Ë!²v±†® ]†¤ æÎ@íÎ êr‹é¼¾Ô„sPxЕÌmS-RŠÚ},eXæêc¥5˜ï“MsÖZkj„ÐmmЪå¼!j£òÖ"C¾JÔ¹Š |S`uº2¯`VÔ´?¯emlry@».‡YkËUôZ¸)¬®4,öÃë†9‘:BX+Rx €cbÈ­«š¬=“¦<¼¶R4LáR³Ààcd8K:«×Ì–{ŸEëÌ2äìˆ8û‹úr|PϳŠx<¨ožˆU[`Uj1sì` 8‘Éš~Xévkñ¼X[™FNpä&l†Î“¶Y-sED*ã}®â yµ9Q“ÍSÓ#Él ±:$? "} ±úÃjh^ëb±¢ÅG¢,Ôç<(µh]yŠMšVr`1>íìm+j²WQ‡Ý9è}Âúp Ÿªfù„\9‡'ÃP?3y’ãæhï²2Ë1"LXö”aI“,sQxìrà¬86JØÂ0¼8QÑf‹âaÍ3-o‹ê!Cµ$1 Vðè:¸L– þ0(rÅbrÑÔR¸ÓQšàD µþ ¤”}•Š ƒ9²ƒAÑXbE¶W¼*Õ ‹Zö}È­•7™HðåíòSØ·!œ>`uN-~‹ é4b`çšµåE,zˆ)ЉÅöÄbeC,t…XË&#Æ’‰FÚßLÏãG©1õRH•Ÿ€$-Ûp S4yBè(£Á lŸyšÒ!ÊX¸Z4áÎ#§=^ô‡ÐøF¢Cñ#˜8¼7°ÖÀÂÊh¹Ë14ú=4Ú¯@£†Þ+ã~ƒG{qƒÇ4o$<Š ‹1Ì–_³ïr¦+]°cî²£ßCcê¢1¿ŒÆÐƒÆƒì؇ÆxßL|bO}4²cÍN} Ìv„¼Fc>‚F¶hû æF‰FGAÄ §Aí³#ë)2ü­*"Ä'.0ÇZ‚æP \®QÙñ‰#oÄÄ1&ZFˆ3ù&ÎÄ™XÿsâLþ•FÎyjÃz+x¢VÁ3 E©Ôæc7ž…«Ù¬+2`42'u$ÝÈa1NÁq°meÂÂC¶–ñ ZØ<ì˜Ôˆ‰½½5ËQ¯Ï±‚Õª'ÈÓ5Yh(äS,í꺺Nk»y³åd®ófûÏFÿœµ6i“†eFZšF/° pª-À çŒçéAXyY„­(à™o]a÷;u‡‹ ™AL&‹Ák’ÝÙε@4ŠFyÂÜðKjÕ2 žOºå8˜h´†”‚Iû¦Ù1¯J ‰hêú(ÄXo„“yÎÍš¤„[í4°á¢¶SÐYË̲ʃ…kZD““Ó0©°†ö€`9UÏóúæFÀë“€'—˜ó@wkÉÁCÅŠÓàFÌÆj‹cŽq $A@ûò’`hë |V›ØêçµÝŠþÜ]Vö!ÉA!YÑj¦Àèjœ;`F‹ ÇÂBÑ©*üÛ£¨·!o(Š …±NÄŒÅÕ‚0ÆžD§²†·5p‘Õj™ bš„¹Èu z£µNÂÆNEÏWI,NÏU7°N™e5œ3βr¯hsÚJÊbNü€55C¡%¤ oz—ذlV3f#ØüYë Sfå:Pë³¶nB¡ãæ‡ìëp²BÿöX¡×9ß23ßDh÷1 „äԮ倔I¬Ñâ©kÆí°ò?ǨAcØ_AãëˈÿÂtcSŠ»Y 4GïJJA‰~±Õé:= c¡óäèÅ7Ggh—õ£3R´y§áaÀ)øŠR @û?x2”Õà9l&¢´Fötð-õ-è;œ½EGù€™¡á€ê ú…!’LÍIg(.÷¡4©…7eÆÊ€ó}ÏÊ©Âãá4_œYÅ´ÜͼBéÉŒ_Ëâî™=2–Åí"ðeGÑy œŒSŠèÜŒLëG³4¾€©EÇÀª›0aVålÆmÍ#˜`ŠÕ¹ªY‡qNü³)K?¬I¬Ç× NÔ@5Ô2Oy¦‡ìsщ` Bx”EÄšrx`yÂ~FN´Ñgæ tV€Õh²Î‚kÈžz¶ ÖÓQ´RÓžT …?£'‡oy*W™pZKa·¾«Ã”‡Ä.G–†ALyê˜XðIxÎhÎ m\˜/)†ÕW™L™•„ U»0$ðNOªb5åv%z™h§«Ìð˜‘ï9û3Q— }Ö^âb– ž•¦ÉÔ aļØÈ‰:´¥öÖá+Ö¢1Ëf²ÆryŠ»Lt˜Š>´­ VÆQ“Θfº2ëEdl­„qÉÙ ·´bŒe é‹“;\ˆgtrÎË]íÏܺÀ;w¹ L¥…ƒÑ[+¬½F_´u:Õ–;ª©ÈŽÉÂt?(] PEÈIi9'ƒÄÁ‚ÕËô>+‚‰øˆ¿§uçˆÝêÈ/_'|”ƒZơх‚ži>¸+Á(ÕFkèã²{C1ŹÐÿˆ,Hg ¹WkQ™åSׇCBèÀðà¶Rgoy©sƘTd1I€ûÍ ÞŒ£¢JÎìB(ÂãjÉÑØSg—yð™J” ÖVr4O—Jû…LÍä”ìJ£X9Uøe"=Þ<õV‰t > É.0xUrÚ!RØD%ØLêƒØ¡¼Ïð£`.M3)ܳ¤Íy”¾vCB”‰Ž{‰i½ÂŽ ÎÐs9«ˆâ—Ež+Îc P©+~½À–RíUeŽECç¥0áÌZˆÞ:dÀ­1à©k¬ÞÕ ‡\Fê@ÓD©&rž“Ó‰0:L<ÑvÎúšE‡èeg9Nƒ™Sù™šñZ%M5Æî(=µ\€fQV££@›´ ‚%¹JÂ08¡M•Zyð¨ü±FóV‰õ`{ô /ãúÄ#­6H2zTµvÝÆWË£Å²í „£6?»ÌH1÷‚€ýB€,qR(3%‡Î‚ëXjÙÞ‚ÞœÃÕ„?«eÖŽÖ)G'É&F rª¡Aæ²YáÍÞ˜¯tDê/é(ÀÀaI1Pf8XL˜ЉûuZbI&GÃáƒîc ïÏ,½1E7ÀNjÚ£S­ø.ÞçÞ%}|Às 0OÌEgÁ@ÇVpë’“æ×•ˆéLŤ¡À¾ÞQØC5>t¤†>„a¥_Цnä«gù¼QÑœÏL›»öÖÙ³hª€ä 3\lSàñj tŽQ,ZW)œ¾bµ¸††D«fªaKÂZûsDcÔ X¨¥w©ò£åù—Э™Ó#2gùPáÓRÔŽxËFPívðãb)îIÓÏD62qAïÍìKQc‚gË€ž­ „‰­“°Ì 4LÁò™#ÇP&% G2Muö]H¦û8z˜B62©·~[@—\štp©=r0—ãüÃgœœ#Ì!Î@µP{uÛ@ê˜ThùMýjà”:) ¶:,_‡Û:É©Â=é¬¡à‡²çy„)Öò&5WøœÁš\Û¬T¼jÈ^¢kÆ•Œ€…Î`3½VÎ=ž0zì²vbn“ª"8V%2Ží£’—øõ ^ÂB»½¡ªA-Nukµ˜ÔùƒÑRKqÍkêè;§)kM‹F˜á™E;sž £Õ•øUê&ŽË½sD%~ãÌ{˜!sÎ9esdm`‡|Pa›–¿ =áÔqÇÁS¦ 4Ô™u’’¥„$­/bq8è¾Î_ ð‹&µ^ $·ôØ·Vã*‹ç´mU¶0¯Å²×˜«± 3ò—Ñ¡BÞÂʥ÷–D4‚SÉ^g9ó|P6€ömõsuвÓÒuÒ¾¦ÞK µÂÏ­uí^'µ0‘+.³ùœs\´Ã%=Ù/´ž>môÚ™y’58M§ÍPóm”Ïl+8˜Š)¦ÚypŽaü³>C²îÆŠ Q ¶”:ìÏÈXál-„Ôf/t*KÿâP–9G¨á ±ÌÑ÷?Ÿëi¡ÐÖo›J솓¨tâ=MañUIìÇe€[ËwDk},L©N+KŒ¶Xj¢ã‡,ƒ#´88][m}ÎA×Éþl®Wc)ÓÕöTè˜óÄWMOI!£3%Œ‡d”dYgÉ&_ØàÄ[ýU*H+Z¹¥QǶ|Æ8’6t'GA=a½¡×ê´‚ÅÓŒ§DÐFœRв|©5f¬•kÉ–„Áûjà¨[çè°X…À­5ct*)}H/*"æ=ɉÖX’Ð&ÿHa Þ9ý€¦QT'úPì0½YO÷(AŸÃ÷i21:tË—]Ûß1¶ÂÖGàËØñ܆Iæ°3‚)¤8HÂH·U8¼Ãèlˆ]ë§DWàT -zÒ3ìŠ[«k:Àd†\@W$W†›™ŒÓ™œ‚”'A@C#@`³×¦¸FŽ™–kÑžÜ$òLNcL¤xöÏ«¯à#gm‰ò›a¼ S›Ã òEx|»èk´;0DÎÄN05fK,®éý°’š´®~­_¯Év­¬‡ ;Îaà¶1°ÙD¨sÙhŸ-ø˜¸èh‰:úóäk 'bªþ²Ml4ÈÛãÚ³[íü²:Lïî­Òû+lžäûˆWŠ`/ü9˜ÚëÑŸNÏUñšý± ÀôEd£ˆSêHâè±Mô|#ÛŒ€Çéõ’dOñ´£áî%õ£Æˆ…¶núÖ*+6a$ºÀéI·`à&*á%VÑ„fÇJÖŠ˜k‚\h±±¼#…Ø»ES*1ÅÅ¡ ¾àÁè`Ëö w‘–D(™õ!BFð•/“êÄB~ÍæÁÕÇz‡Ì`ØÞçfN¢å=Õqå¹´RÈÂAÔÒ# ´u’–zP'G¤œ9½/ù•àxŠÌÉÛ”àu2,ÍCq˜ä+çˆzüÆ9¡Çv Í1UX4®Ã —K˜É §WÞh|½ê%r|:È;2ßÙ\Ò("øJ¦:éο¦Ùà­6ÛöSM*Ùª áÇ`dë-Ç6RžgÄÒYLîø #AXÓd)zºº×ÜSMÈ‚®8u¯’s¬s¤9Ú7iß$ÓD,dÍ3Ôª>µ¶£ÆÀŸTñkQÃ…=€Ú_Çœ‚f~]ÍÛ³â–ÜX+¨gþ 'D Óùf¼Ó@f¸Ê1Æj' ŸµùÉiµ£ÖNƒ#²Ñ¤(µPVÇ›%Å:"Ú±’ÄDÓ- 8Nõå>o»’Û^ûÅÀfµa§ࢭ< išH¥?¦ãW3¥©È€%Mw_‹°a[ù`íÐEÍšDg$›Cky—Ó9,™Æk rÑäw°b—~0ê£9¼9|öJ«¯Ä‰Ù1ùÚ2¡eîj8:þÞ’Uo…†£áðÖêIûDkÞÜ‘¬g¶¥,ڌƃ"ôœ52ëŒ V5&­¨õEêDªäwƒC4Ç‘òH–¢ÆºQ¿¤½XÏÀMZ÷"‰„Ûþë¢s²¯ü ¬~q¶†Oz!Ž „06Œ«éGÚ)QOšpðèÔ¼€2ðS¡=ÅnWx²R*°gok¶¹ž-ÑŸlÕÍìÞf^V'ÃìÌtšäTøÀ›…£­…xeS· ²^Gé×G@Ïš3  ƒGÇR§cé ÎQ[k«X žeV³ÍïUšÔ2¾î’ÊBØg <£ñ)«Oè`©9팀B&Ktu_‹úœ´ü›¥¿³µDÂÀe¯h ƒÅl_¡ït!Éà†D· LÊ,öÃæz¾Åútn6{8ÜúÀmíéåÔa`²ô¬¼ˆP?Üò{C¸d¨Š9h¨2=ÓT:†ªËPe‰ -CU¨RØUzØPÕÆ&dÔ2Ty$G*~ïpÏתö¯ÛŸiQ@O:ç#O—[k·s·˜Þt»+ëW´˜ï$‡ÕÔjß·¤+¥@PáÎNœ ÷…ócóZ»ÇÐÅ Ep·0|Wä·&-^᯸·ë¯$§5Úž=êå+ý±' ×s!w“?ÚþÑFöòöæaÆ…Þ)lùù_ñ‘¹‹YÚÂw_ü1“a¤Ne|É•9ŒÁh“åíÕmaTyšY)O¯âNË¿8äRûú8Ó4Ì‹)š¢4/ZÓ£G-^Öjc¢jFO#„ ßk{+2_a„Ú}dzd8ŸÏV%³ Úk?¢q†'o±Ã%ÂpÔ26F4´Þ=j( †Ã ˜_„Ë+ìŽu¸AVZ2­§§KÍbÃëa¶)kÌ6ëüG6'ñ<­A+¡3³ŸžÁ ‚™…ΧÂSžld §°^Ï%ã'^[43 Y&„¢ËÚRl¼©ýó°Åk¨¯˜`uŠIæ‰^±ÙôYsGðlIzMÎѶŠ:O•½$ÿÄŸ¶t¿Oóœú®£•äY>^¬³5ö,šÕ7ä,ÙRüuŸ´ñ©o±h¤K³pF^¤Y­ùñjc64š/Ò,§gadJÆÔ“„­¤l´«Å=je›‡¶ì͵:$¡fZKöz¦±åé«=äÊjN1Htð³Ö9FÆt· /+¤Û¥Öü"µ2רc~”Z±<ñE+4 ÏZ–ŠÚûˆU}çשK¸v„h'šŽÜi“ë a–c²Éæ™ßʦSådmL 6T,‘®¹S‡ÎE¶€É@/Òñ1窄پ{ßW†QéÕÕ^–³é ±Ò,S®p„u*ŒåÜiŽêEÙZœV¢èÁ‘ðŽK¥b/ùTƒ7b܆éWNšNZhÑEzB ë+…ñ ÚÖ~Ah©¨´Rt@?›©M‚¦QÈs ¥JQç©vq ÃãA5ÿ‡å\"vj2%f"XL’XÄžšÀ£Y%o×D Û¡‡6EuEXÅ«‡dQTçÆÔ㊀S9ØÈöD¼ó¥VKôà¦ðl ¦â­Ž<p·Â'GMD=vÄð¼\Ö$92¯pZ ½6 h.y'‹º5ÖŽ+m’×ú¸öA´TPÒR’RO"BÙ IBˆrG+,|2ÅÙ:Uä  ˜œkñ*­n‡Ö“hWûñÙ&Ãñ‰Õâ,t…‡=ù—I,Ú{ÂÉp&0db¥ÇÆ]žñcBUv¬¿¶3v2Î BÊœ g ç>p_5{h yíÀã[=‡É褓õ/fÍOúÌçÆc8üóô´SÑõ"Û©j˜L%õ¼ÖÚêb}ñôþóÿ¡é“ú4ocsigenserver-2.2.0/local/var/www/ocsigenstuff/scalable/document-open-folder.svgz0000644000000000000000000025334312060404165026503 0ustar0000000000000000‹¼»W³óè™z?¿G¾± îFNš‘]Ȉ¸9… "G"üzãkI£–Ýã‘T爻vùâ Ö“Ö÷þ·ÿyt-ðÍçå3ôøò3ü; ïÓ!ûôå~÷ò¤ŸèßË÷YÜ}þ‡ßõÃïþçÿø—û~ú àç<^ó Ø?k¨}³¤ñ˜ÿµZ×ñ÷´ïûÏŸ? þ<Ì%ô߀Ÿ~úÿò/ÿ¶|Ëà>·_~Ÿ¥øÝŸŒÛÜþ21K¡¼Í»¼_ù~÷—éé_¦§?Nÿ|ót躡_~YÙ/ÿåW“ç¬ø÷Ù?¬Ù±_&! Ã@0 ¡èO÷ŒŸ–³_ãã§¿^zÛø[KQ†¡ûÚ_fþm³~´7ÿ¡1¿\ýõé7üãýûï þ<ðó2lsš÷Êüç>_!ÁþýâOðÏÙšýj›?£ÿWçþ•Kú¸Ë—1Nóúóø/ë÷O¶Vw4 ô/«üSVë_>²?üî¾?ô—¿ŠäWÿ´Óïÿý ü3NÿŒ3C‘ð/Sþlòï³!ýaÃ~w¿Ù~xü§aÌûŸŠ¡ÍòùçûŒë¯·Ìq˜×ŸŠO›ÿqT ]Ÿþ¶qî7é ÇYÞ›|Ò;, {]'mÅéúùe ‹Ûövþ¢Ðož:öåozdãíù™¦ˆßœpþï–õlÜÛgÛø¼ýqû9ÿ×ÛòÛžŸ’8mÊyØúì÷}¾ÿîÜ þ-Ë‹åÇÂ?BüãþË…ûÒ¥ñ,Ïqö¹ þã¤?Nûë+8EüÑ À¯-L‡¶ÍÓÛ…q»Ççò§Mïm—uÿ<ûO޽GîM°ßýex(Š%¿ÿûÓ½ý˜ýÓ½û0ÿþ¿¿¼þõ—¡áŽªÏzþþ™üýçÇ¿qò÷¯ÿ~Ú¿A ÌÿÇÿ¨ÿÐùáøÖ"0Š`ø_[‹üëò_BèÿÆ¿ñ4ø·NC~ó4þçÁHÞñúÏ‚‘¼ÃúŸ#yGõ?F ÿ;`ü­Üù;`Äþ/Iý·gêß #Fÿa¤±¿Æ,Éóý‡a¤‰¿ Æß:í¦þA+gÿÃÒ÷«è§ÿþ‚ÄBSÿ ÿy!Iøïï $Åä9ü¿öOŒ5ôïIYÆ2*ù‡c ýûRö·Nû;b ýGSö7Pú»Ú,üËëFéïl³NÂô?^Øþ©m¦ÿëÆþá&ŒúŸÁ8ÆëšÏýߌß/‚ì÷Õœßò¿,·øý“ÏÚÅã_ü§M‰©õçñ?ysÜ/·Jëþð».^çÏñ_៊ÂP˜@ÿ;üãç׉Ÿi„FþÛ_nâÿ_süo1¾+*Ê Èm*Š“8Š1ôÿéWï=ão¿ƒÛaióÃ÷¶ø¯4ó¿ý•¿eÿŸ(Jüê?iÔ_ýéÔWÿYoa¾-ùìþ·VÿZò¿ÿGnwm¾,Àšë6çÀ8ßO–g@rÒœçžàýñúòs:t¿<¿øÕ&ú'Íû%ÿ=ðçGÀŸžE·ó'Ù~Î_/útq™ÿ%‚í¶,^ãßÿrªÇ¼ü×$^rÿïSC8Ë:niÏ’åXGeÕ­YV€ÐXV¼Çþ¶_àoÈ:Ê7ÿÿf³ÿsóeŸ<+Ь㬫²[Ý‘ƒh‡U–eKõ§ÿêÅ•©Äß÷ͱ Ç~!‘Õ{¦z½î1‘¿w–Ø]TvÉ›rì^úRɾ5G}J|Ø«Þ+Ô„H/{–ëø~ð$$òü‰dUÔehÆþ#dG¼0îÛüß_¥q»Ã‘~L²Ž“Ôû ã‡WÞ–üX訂øTEñYµk£_N+U€’&iŸ4á!WËÓ¯ÓÞâ÷U©hŠYv¿o›åEÇx²ÍÎèÉ“ýüÔç#ÁëKKu¡éa'”ÎÊ£¶áƒ2‚çc`3PÎX’ÛI\„Ã|7FÎVÛ\ß¡S²Ó£¤p·?î<*t&ÔìFyDlÖ0€º OÅïÏTßö˜54ûc{ĉ'¢úšÃžºˆ"ß/L»€“Ѳé‹reÑ2%[ »/)% •Á€¼€Ú†±f*p/ øÐO¬Ôî6÷ÐH!QP ÈBW*ä)(^¡ÖH u|Û· Å*ËtAƒÊ>§#“~?_ 'rß_µtÝÁ»”ÊäKOë¤ózȲ@•ýR % =³ZzæˆHöŽ¦Ë²vw®Û­¨ß… ?Ÿgèr¡™z©MSŒ®É®‰êÞû†-ðN§E÷Ôej·åŽ·MÙEƒ'”*ûNëfÑ„†3på^‡è¼ìð!7'c2hà„¸’x…"SiX}â×qY3pd\ ª³©¹êµ*æ[v ¯WÖi©õsÍú8âÒãiót)w^ìüàúÆôjŽS˲=®ÜW=1ÅEE'PÅ,›Þ¥ž³ÙÄÕÞ¥º?N‡â Ö0ʰãE¦yq(è?ìB}äµýØfºÃ=¢@,ñB1Û/ 1¾Úul<ÔXmi¾5–n¿X{ÚÔžÕ?BõéXú¨ †#Û¾R$´a7ÿX”ƒfËdog„€‡ãq­œ_»‚Ú^*úUêªæµ¯D‰¼Ýåœ6…Ocfö’†ú^4»ç§‰ç÷ ŠßD³€=CÑ+½tŸ,âÙ)}ÝÇ®K€B_ÙX…ˆsîÁ‡ƒ´¿k“ÖîÒj­§PQôà×á4ÏÏÅuLå´“/$E ̧ŸéXŽÑ$7¦þRðžºj¯±ë[êXé@î Œ¿´Éº&ZFí±³>í4ÎA Ç¡e@¯ëŸÍ)ç…eïEåÑoõ tyQ±ì:ÆÑö½¢¶ÇËL^Aè¼u5R„;½YEŠÄמóÇDz>…µ‘v%T(vš b’¼ø’Q¡C¶µ“ŽÃÄ2euÑÚž(A™ÈCee΄Ý]åSm¯—{à¶æ²‡2*•Üåú|û‹äËÏŠÛ¿§û•àŠ”,Ä&.–¬ ;õ÷šÂèéç+¬è à wHÉ–ÀE³Ic^H=³Ml{±1ˆ}”É®,m‰H0É[Äø:™c<¢S¤$,Ø[·£®=ÿ *GzŠ,f0Ó W}°vD4a¨`¨‚ÀY®i¢Ñ=" ‹M'Žz)Ÿ:¯úêhÐÇ;†åõy‹Fçj%áÂõl-¹ —ÿƘÏóAÌZÄ~ÌÆÎ=·Êñ0GJÒïÇ.ÊàEPõ]»‘Sæ\nà¥R@9Ðq”¾1 å·0¸ÖðGC£ µûzøØÜ%l¡ä_冬ŒDþF騂RÖò¤å2÷¾Cð˜¿4»KÜÎfŸä°ýx-ì€|iôè&CK«¯IÆAr]·Ýv-ç̦٠Nu7GS¾eøÍûè ¶^7ºh(®²×2'¥}Ì>‰¤¦ïœ.:Ÿ¶úÙRµZ"¼5"YøõwÓ¨¤q´H^â~ çvWqG,q;®ÒÚYcÊø³ùϯ•L­_Mê<¼T~ãĩҟmÜ´\[Fš’–£*rÔRÚN|«þúL†¾x²ÿ Î8K~ÅÂýktý9&<åŽ$·èˆgÂê~‘ÏCÑ”7¶§ è›©®Ý >ã ËÚ'­‹Ð4ëLûpW bm+¸;õpʚǫsdGhë´[¡Úq&éÍ©°ËËð›A>“dCÉA»¬3€ŠÞíé™l?Áë>±gw/›µ\Ý ãrÃä·¯¤7ÍÒ§|:ÈjGbÊãÌ–-ÏO;ÔfÍk˜rNQ`$ðþô´a*ÂïIL¢ö]ç0]M[ì†)Î^Y!…¡:P®w Âëuf9îº3xÌÚä†ÌÞåÊ1wЍ ž´‰F¨ó0¥–eýcâ²s°ïÛµÇì=ç,Ç|ø®³IZS^$õt¤&œryˆ'¦i€mt2Šú™}>™ÊcñÞ&rUßýç ™Ò¸a‚ú® v3ÊÉš+ú†&„ É ”*?©æ²r*LùÔãO-ò5®k¹#¦wD3¡;p] /ƒžšwöÍÓ–¥/#Œ[‚j ®oÁg* dö“xÅß7.Û úb‰°N%Û³VDÀS¸<}|‰0ry—¥e;£»J‚yS¸‚ïzÌÕæ7{ç,ʲÍUˆðm>AcWšYúÀ#YM˜ö­”£"ž&$„ÒºÒ&¯õ%Jë"ˆò9ì]܉²5"jrP±³ÂÎ93Zx¥ÍYût4¦=¹³©kðsav\“½”g¾aÓËEoZ‚ÚÙ²‰~ÍbEÛA×¥-Ž0?ûùEÈ©Œg¯|”Þµ`߇šö + × uaAxå3ô²ýDcÿŒ ¼AnÞ¡Ú°t7GÏù¢¬±:IÐM`'5ErÛÝ|§˜wò`}TZµÈ/¢1wïÀ#ÜÎÈ¢ª•n†vΤù¼ ž ±wy—I{4…)PÞ—<£Ï/Úc¤GJµ!@9š w°"µF°ûZaBó)KqõÄBÏå¼ìµ>5׋.ú‚ ,‚ìk ª1vªNÌj´‡ë¬d¤¢i‡Z¬„gò^ÑV¸3ÙÙ‡™2@çµ`öCûö7¿ÄyNˆ.úYÜÌdŽ(ú:²k’grsñ»oþ4[µ€„‹tiNô°>ŸÈ´—¦Q‚92öý´ïÐgs,HëÞo3¦àXðÙaÇ:#Ži ¬ë¨bTMiŸS¶.‚=¬ž~æ»÷ëç¤{#Ío!aSxSÅ@U¡DSÕÌ)V[’ï] ž—TùÏm1%Œ=m Ë$߯åg‰]5"#ãA©ÏFGËûÇMV˜[”wÿm| tùÛ®Q³]ùÙ„1†ê †€ìqJߪ®“Ê€™êz¤ ×w,/`ö­,ºe€:¬.@vРR§‹üu(_ÏÛõíôí 2æ&]ŠåÝx ƒç‘8 QFQ_V™§"¢ˆ'žvW19³aÈ– î™>Mk âëñ±äGÞu?`'ãÒŽõ±é&ó&ÎGÃ+ÞjL›Ãœ°ŸÍ >ùé=6Dk˜Kàúe¶›©NtòFµUñ\'¿ºU:>™®{|û‘ŽG4Vìt)áøe!n4QN¹åQáp èX#>¼j84–’ñ¢~Éqµ1•Á+ýϪ@͆ü>„.4>˜p–‡õê >æ'êì]dhv”ަ%²Óa˜Z% ßHÿââ9‰x´1žçie‰Þ@{V7;Éyõý¤ëL–C9ì@G;:ä±&RÐr· á"áuí8LS2;# 'Ì¥´£À é; ¼£üªPg÷nª;äÓùÕµ)´ɱ? òŽE[T!d¥§=B#_U©¾oh×LÑx¦´²ÑfK4é(à'J¯–târ`Šë«˜~ZûÉÇ‚`ªŠlYvç3–-äÖiÏ\d îgÁ+käMt'§@Ì?²éXW'ZÓ%s¨ûzÊJÄRv^!¥!c³Om4q ÄŠ?ö%²âq6‹îx´Öòãµ¾Œ ¯/d·ºÚòσž“ý®Ìs~Š *þåÈãü# „‰ò·°w©¨Dï0:·‰>9JLèhlýg%éXT~ôô%ìw‚S,Α˜‡B¨M“êúÀ$Á³˜ ¶` Hm3³)ä‡,]3çv?cxbí/+ÝÊà•{K·ñÔµæŸipZ¡ž¨¸¿­(ÛÓÂAì᳉a¹ìŒÕ[3èÅ ô6¨ÂX«K‚?k©0á#‡àhˆ%Ŷ-²æ-Êëñ‰³ø8®údõ½™ð“PŒúã¹ÿJ¦9€S‹m3q©?ˆ'"„¢Ÿ1Y—ÖtüóÔK<ï_ÌÊÄŠÇnØç£~©}(-Ð,Çhò;x\ÅܼuÿÝck9:â ;ãvÑíýN…­:_°&qrqÉœ%¥#QÊ£ÆN¢>Û–ë«Ð›€jßìžÝííT7†ö’t0ÝÈ@5iFl  Ü~Ë;j‹ ÕÁ¸õ¤w¬J·çîñc/µ\~óÓð}3¾xé!˲òòL“iÌÁCßÓ¾î—%@{wÕéìrªs?‡÷Œ±‘¶psèD¥óŒsÎøØ*»Úá&™ÌKa<‚¿ùÕ8¢5ähÍë[’Vöìt¥ÖqOÓÔÖß0‚g+®®§x‹«_ïÛ/É’Òä ›Io½ÆgA[åçg<­Ö#B Z' '¥/|0·_„á NÅÛC¶# lŽYøwîtõ­TÌå›_ì;ÁÕ0‘n+IIAÕtÏDE7Äã64 µNHªîšnh$,m_¢¥e…O0œî‚?y¯SÈœa &6¬ÑOÂ+;è÷1ÐE¹Ý¶âÛÚ*æô†ügµ¶–$W¨oO¼„ú!Vv¡9‚®ÓW7ôn&Eq Á¸˜ÁªÏ †ž¾¥»°Œ€GØ_Çœ±rù¦§Ç=½_ÝuˆË„TÑôï¶ŽíÓ%(7Aég¨ÜµÍ.ÎÆã¾“:¤X,>·Ë=àjõrnô|xä†ÃDG2*}CêžR6yÞ6ÔKáטQ’õ "Ì)r©|RúÈ i›i£µ@忚²zOù®ŸØk’›À|?”X Œj“v»æ¾ ÷]§­ø>¾c¡½}jû^ ²7¥K”‰áÕ’:T4 3’òå›±<§ò‘lhóÎgÊÒºÄ>"“t~uNEÈw©!ÕSˆšoeÆ"Ž’ÙƒMÀïB, P“—a,Ó óæ('‚Ü6àÕÎøm‚·H8ëíÜø g0ØTº®Åw»–êڤ÷ƒWîv}“ æ.ߢ8™Þ>‚Åë_ÏØŠF’ñPŸ”uë¸ üÁ£Ï¢ÂÑN‰bT™KmUv¥j‚W8èÏ.ÂÍÑ:h»ís2 U[%Ÿ‰¦á‚3)áîÏ>@#;a‚`Ãô£ìŽQÒÌ^Ï5|+)û/ô?Ì,«+ã§»£³ÔLÙµ 4¾¬}‡½©i23©ñ²4Ú#6eÛæîúËõÖ«n(ËÝñM[ê!=*·«øWðÌš×ñšÃ/Ý„&µÒyás§nÊgá2×peRÎ.·–W­ôâM”ºp ¼ûÍy*ÎÀXaÊuxcÆ‘œ¡~‰kù2+;m<˜i„NvC§Ú_—™ÖŸ†zÜÍf¸‹¢!Š-o23™ë)?¿T’gÁG@3 ­$ˆ¸6’Ë,KIaz¶[‚v|Ë„_®jß­R—Y~¬ºE‰g|&Vxdi»o{Q ¸¤„3HWe ÷~¶m¤ Mgš!ôräPnJl‹‘.yP$ûÕ "+Ÿy—YùŽŠIºcX×ÄòGæC1P.£2hƒdÓÛ#+ÊZÉFðþK*e÷{†XÆWpqhíß%JœwaL–¶t`D©Ø ]ÓÙ `{Ëš…hŒŸ³Œ(’@^Óxºz;sÏW&± m÷x¡—2•%ôÍ%#¾/æ™Ô—}-ò@á°›´¸j‘Ãx5¿éé„3Pßö½#Lrïgx°Ý”¦ê1/[ÞD~ƒ¢ ŽÊìž¹õ¹­€%䡨Óg puöcV¼Ýüt*‚½6Oø’ôɺ-M¦TC½Q§Âöþ[••Qî:Û«xN·í{eû„:bÛìëвAlcÉ@>ááÞBäã=+<Ô’¦{ËåRÿ‹¸þòÞþ4/ð„ ZÅC_B'¸IÈß¡¦'ÞÉÇ'rJaQFbxüx|†}˜Jôoú~ë¿BU¬÷0zæÑeÝ!Uœ}ëdÛå–j+‹JÇ… ÖÙ0cæåž® `°-Qøb äóm»õÕÈ3§ÂÑkÚ"SÌ[ºÓšŠ—ØSó^éÊ*4Ìͬ׺=ãVqZú<žh£“‡Ú¬4`<ÉyеvßL~ï¥6}áìåIÅØ'ô‡=è’ÝiÄßt”ïWÏYÊ`¯›ýD"ì"‰çGÄto'¿j½µí!m٨ͼ´¬Ñô/«q( ’K¶K"ÛwBÛ†@íxÚÌ=èôzdÑߣ3@Ê"âX1Øïf_T0ý~ç½…££`ŒÄCñ)ÙØ¬çºT^DZ3?9Îá;T„j}W|´¹ÂRKûgld¸G 6±VÙ{I€£Àµ²›¼DqÙ¬ŠøÒ1Ø´›éR¬QL·®. ý÷Ñc˜Ù}9 õJsÿ*óÂ.²×l¼‘µ¶ÄVÛ`“Wbš’0þ"’§³ï!Æó³ÅŽ †½¢Ü)¡*ÍÃzŒ•ÑQ$ü»»3âÎŒ/«gÎKä^é¶£l¢qîªQÙ*©(|¬Ë´‚”æGa{»Ì‘õºì-º$¥=‰HúÜÑäíÜ›Á£C=»›î>ÎË jÞ¥¨£w}g½üj¢§ªbŨFȦ´Â¸ gêy†ýÞ+¢²°,¸‡wÉä³¼{¶ÜÈÇ!Ú\½¦¼kÚÇ>}ãíé¥/ódbN\ÇsDaíH´E»D!6î¯#\‰ Ø;ªÜìöÎH#ê÷|lnç.I@¤Ü×|Ê¿6XOÏêÄlå±×«;âàMx„B¹ØòL°@çÀ½ý?Ÿ×|àÔëa h°`3]§Ô"^[U keÔ¾ÔÉøÇQwD-£X Û/„T°:úØx)]V>P' ¢ç[ƒ*¥Ø €JÃN„÷¤ISü[»‰Ÿeî¤ÏMHÈ䕸vŒh¥BÏ-¦«mí¨£‡ˆÎÆÞº´NMEíÔýÄÕD› ©W2ÝÓ ¾è5O#F745 æz?pê`i8‡œß$6­ñJ‘ÀVº¿†‡L׿|7ã›Ïi(˜}NN©Ù¼×:ofo´Âzò‚àrù(>ÜûX+)B'ùpw^ì}ºó&ƒÞ¨LY’ô"ê+Ôh…æv¬ÂÁzxs6H]úuë·6U{ÛG~‚)É#¦¨e®}ŸúÊѪž§+Y"‹Wt´=ßÑâ}Å:B)ÛÐÊÞ*ý!?ƒ‰\G/í7§-ˆbÓÑâeáî82냚ånSЗf?,Iw‡>øOÿÞs.«¿ôçZ)ÐÇ!ÄpîˆdÛþÔIô­Lój} «òò5ï¶¾„¯i‹Ìb4t @~ÜSÌ¿äü¼Ý,щï¨b¨Êfyer¸Ë¡išÙLµÈ†.µ”žF©bVævi–`É$ëSö%†…ü9©Ó}õß&;güû†íÖmûî[7{G«NZíý âR[¢žÔ=$9’¹Jl0pæ ÇÆH>ÐJàÁ›õkqýÕ °túa«Ÿ&ÕÏ÷¾Ö3z~Í®h:ÖLyx„¿œ(ìi8aù»¯xÎØõ>#9-ÖÚÎî bC¾÷üÊØ©å'.ó6‚ä–*ÌŠ:¸-¹\Ïå[.™ Ñ¢Ò)X”ŠB~@ÈÊZÀ®ˆ·«/šßïhzZÄXA‡;yJ‘e"·eCXÕÈêSûÛ¥v¤o-Ô ­fÔ¾h÷ßï.pà³ȸzY¹ã:Ǭ%ïÃ=“ç§‘Þ–ñ#z‰ñ]#q^ªç¨<ÎFÍíËÞVrऑâže0ËÚ˜³ð<¸åö#½ñßîC4üù0:!l ën"djø<|«ìºéªTUÔ ©d´þx/CmgÍ@Å~w¼°¿çN×ò#~c¯ÏÚrûÀr—¨'E)ÌJ­Øj¸†‡ w´§BÒ¸Ö|dì`— OA¬ŠB@¬aÎå\¾©ŽùZ¤ÛM(GÊ‹ _ðû1«l7G´JÉ&¨}½“ö&CxÄó(ñ„ÏïfYPaìýŽžÉ¤E‡ªï&´ù˜y…C;R"C]šwYƒ&g­H<ÙÝÜ 4Ðò…›{EAK4w²P ÜÊË ¹ÓmîdÎb>¡HÒ‘!ºÈ0äúû¡ 5‰²ÈÐÁ-ƒîìöHxu•=vY·Ío„ãwŠ™f ¡ï}»°ZXBõ)Õuý–Lµº%Ùhâ.#$±DZŒ†uC~> ñé™qã’2¯ã-(2¶pœÀ+4xóãô\Ó¨Zì%~޳x™7ÁMÕUMäÂâã9RÎúQƒ`Û`aÂÇnîNMÉÃ]™rç¬Ñ«ò¾pT=-p_n¡ßÈ{]ð7]t§ÈœÝ3Šï†ÓðêyøYõ‚ö-åâ©ê^Ò3nsÒYXJrÕàíàngãϱTÂ2òdØÞtbGO?l<r=<òs®üÅñ¿{Œ(mˆô íž;ÊC؃Œv½hÁïÍŠ¡¸oôˆk¶ßä׺ ‹`4HÝ•®YB·E_rGööÓ!o) ›p‡I‰èÄAkHï%Î µ#/:@(˜/í\øíß´¬Ò#=³b*>GÂþc é€mYˆE¡"5# C?Öð¬¤@…ÐHm XÀP{-þürå·”°™„€à›Í_%§9¡˜{GÕmÈöò·í=M˜d@nÂR› ©\>×ö…èa;Ì‹¼ N]iC§¤³5T.ÕŠn°÷˜ë^ÛQ1«{Š»pöËÈ-œ­5è–¹¾ûEB²ºUe" Ðy““íT“¯%O8›2÷ñ†Kka¨^rVŽγ qÊÚŸ8ÎláäE¦1I.åd ·>Ñ×ÕÞ@ýÀƲ„çkçUÐÞàó˜ÔøÞU¥¾€¯“]mÙ°òÆE¡ nNÀB8÷CÝùë h,x†w fhÐìâšÙ)d{|"RˆÆ"Óz¢Å5]š“MéÖ-µòOhçW¾¶*J ]*8Ô·I„ꪒàaßjìèm4'ǃEðšÙåqMsÝÔ›*'"É{³ ´Z¨·…Q n0I€yÓSXCxÅñØ«øøF׊qÇTð>Þ—¿ÚNd£xJk¹:8;C,kéñ9‡AÄÚÍ»R\Ð3°—§^ò°•7²¤› ìâ÷Úq£‡æi³p‰!k½ÆÑ×úpŽ>¼cPÇÁý©ñ)øf~ÈDú ëSò.u|Ú›c4§óH&ÇÑC`åk,Ry|ÈšüÞrÙ`‰*14Š­î:“Š`M| ƒé¢Žë ŽË(î¢JÓ¥—}ŒóŽpáè&ê®KS.a»JÞC•7žîJjö·Ô'¢q©&ôY8( µ-…•÷”³K«P˜¸æÕ÷£Vó »ÖÖˆÀ¢v¶Ïõe›]cl¯Š27¬ö®6Ô“Öñù ¡&»+Ƴ­&»“؛ŋ-6B¾4Rmç~9èN½Cx@ªpB$}Ý·é¡^°ÏN iàùèü­áPO›™jÎaóDîôuPÖ6R½œ¶í0 ié^NtPNn¹ S[ßüø®¡éð9Z&WUÓ $ÁMšˆ«ŸÝ%ë÷9H†°ƒïD…’Ò"àN˜å¯Ñ,"ó~| [Ó±°BªDS\Á+DKP B«PtY·Yh_¨‰Z3FPVTîúÜ®kô¹ Áñ–‹Ÿçç]Æ7È‹›cCzws|sé§|GôMñôcHɨ ¨j£®¦o/ï±[D£Š‡EÕkþ*RfŽu#Wj(¯w†õ²öû éWEœ&Í]g.À Íœ•sŽ?#áDmo,>£GýDÆRÙÞ ¡}µ± e'TÏþø¢†b½ÔäË]d‡Àc¶%«˜Sžî°/ôT|¦NB9#Ý»7¯ÜØüÂs—ðå†!Ý×1 ý½hå8RÒ6xy{×G¨¾®x …¥ -S<)*W÷5C>‰B¥7qÙës‘„:‚WýF(¸¤áU§âkD“tÝGÈ“C‡ès^añ|5•ºËÒéî ·_Ì øE8Çáù%]áüŽ — ï0FF=ã-#¡Ô *Q¸ãs$¯«[ËDQM¯¤\'Äa]w@ݶÄF¥À†œœeûIbIüõÐàõ‰L >‘X.?ÂÛ,’PØé­¬xªsnyÄ-Üõ¥HuÏOŽrÌwÐýÆÝGQC*¹bª ¢é=dÕõ¦3Çhhyå ùaÝU}# mÝàr®·wfsê¬oö]âhýjüùñÇ×ëSáXPf› 9ûѳÂÎÑXéX@oFëí¤w–m@—ž!m~¥|+\VóáÙ¤jö®ö¬1_gê|fT]ݵР›Ûˆ eYk%Þ•n!†ë}®ûá(u‘5+>)ߺdú âè{= ẛü[ IJ¥kvÿ9é¯|jª}7wÖYåéßÞ„ãÛ²'=[ÓË‚Õöž´a'âFÉ•°¨)¬5–¼.HX=¶K¯±.½øVzÝÅñfF¬}Ñ… @NêoºK9þ%,ó¦ aª¨ë*½'Ê‚5‘¤¹9oQŸdB$ª·y}í4cÍEL*^¸e§ŸÅî„ýxNÛªŽÿ#[&“2.Šæ£1 u†Z»Âékß<Æ™ã™Ä®o(¢ñ1ën»ÁÒÜÖöë 0j_`)‘Oqûöç—%•L({b7vÂNB.)CiyW‰Ó{Ça|ƒW ˆ¦tºzÐ^‰*âöÂAÀ®8Yj î-³Gš8Õ_e£×^-¹žAÇ ã•qI$=–Šnåt{Bñ!-ÇÇ„zËÀ~·ôb‰ŠÍNñ=4϶s­Tú¾t, Á]òô×÷°?¥Ï¼¥ CÐÙéݶ Ç×vçjL—uYEy/Ö’}cÀÙ7‹¦¦÷}È ¹™zÈC&"ÄEšM'üù˜½¸ om‡9U#tí·ûž.xH/dJ {¶ÒÏÛ€½+;{<®îamìžœpµZšã”P+ú:¤mãîÅlñÊ‹î‚vÒ8þ¡€ÇIÐeAÊøÊ+™¿¶~Ç-@™ð]dêoEk_ÆcòDÎÁœyÔÓ?OŽCm["s÷5-gð´4žàÐ0?ÂAŽ39³‹Ê¼¯#±(.ÐVh)>Ü©BZn®sÝ›™Ä,P‰™¼ã!r,ÙÍr+[áõ˜—zx‘w_ƶOnrç÷P×@rbžurêûÞ"É\.NÑ;£ §¾n. í|pÊȰÎÉyíªb©8ëˆuÐx­sÉÒxóçn!ñA'¸êlr?n£]”êU”`HwÄYŽD¿/AU#í©œoáoÈ<«ç QÒ¡þ›þ%sôð p¹„›wtû¾–ÝÃ{^>x}ÈoÂв&n´2Ë÷²LØ­'Ê£sŽB+‹êVÒRaS,K¾ÑÈ£º ZŹؽꦪ’Gü¯hHš'¼5|w¢07„ˆ}ä£JæÞl{(ˆ‘⦯gû{ËŽ{ò@oVHÆN§‚Ä®×ãäfºÆë$=våÏ«‡ #MØÎU;¡ú\ !1</ž¨é×ÝCdÑ›üËR{¬ÂÂÇÚjžj?EWMñKTÿ|«àCl_‹ºuÝ÷SÚ»¤0—Œ³zœ¾¾6?Ñ¥ª„N„6€‰£Ò4¹{Ù¾ñØ$F2kM»î¼FŒë›až-…/ÌžRÀùe•yséssë†$ þ8…ø|“óÆï¾(ôp§ ‰gàœï §wËœ ö–læ‹_ôÀoqDÓI¿ Xåp~èÆç²í§0äÕÙ¥kùÂ<™*ÔùÖÅÀ ±ù|$ÑÛ˜dûã)ìÍÊxÁ7eøQmá\ .kÅ€Ç~ ÂÜÌL9Ñ›ɿå’Ì]»sm2 -)¿äOw¯7æF+`ìÍÜ+?y8~Wg°•~YOn@v°™’e’`™ãì<>žªœ¶¸µØýœF)—¿T¬9zr–•¡ÂW„5û4©ì[šÏ[ߎR©¦ø8A4[ÞÜAMTe£,çm?c¢„‚˜‰o-TF02ªŽ ˆ£;ÎUU²öíôkf~ki3ÃbM£\x×ó½½×iŽuòêÖã9ª\äYYwñù~ÆÔ®‚´SP ãÇW–DS)M”±ÚÜF=6ËÞ9(¼KÏшêHŒñݹá)„ìPçL, œÖ÷{H§£OÔwþÔÕª"ga¼‰rÖÂÅ9Ú³“_Z¦8±‘s,œ ÚÉE¦i¥ð½ó¯Ñÿè­ íÙZV?·‹oªÃ¿_ÃÚšXþ×À„õ¬¾NŸeW?ˆg}”BÞõ ¥ )|ü¬µRu*Ljr 1x˜ã_ó—îúó-ö¨Ù:R8 ¢³Mà/ЮwO³kÏÆ‘YQ`Þ•yöL?dA1|×Ö—.û?@Öqc§"TñŠô>Š×ˆø Òö·*‘ï•þúñ|J' åJÿ• òÚ#Óñ‹ÄÅ’t`Úo‰<ìEð¥¿KÝ3”åS‡°T¢•Ú¢“7£+×HCGü­ˆ`Y $Ïï]‘QÑtó@¾ÚL=ßLs‹ÛTÚš²z`…ˆµ2‚ð㋉aln]ouL'QÚ¡b“ßd¥ËšwÔÞUãVàÏ«_‘ûÎMŸEyn!í;Î ‚Ú*]pÆs‘nú|Ø«u¢Ç>K)F"—M"7ü4X†ã@Í﯋+w…6RÙÓÓ¦Tß ëcfwħû|g¢ ö{2HÌigÏ®ÐÐýñ_~fŠ!2¦{ïx~‚+1»ˆžõnüd1kÌ- xrU™‡x¾"o#TSråÍ8˜Î›bÀftLÛü=Ç/.\¤„Ü*; ‚ø4Ê5Ÿë G¨O`Œ¸Ì<ò92Þ Ü-nHC€Ä\{°ík¡Ä¾/NUag`¼p¡¸ªãí ÔÑâáæwõâŒ÷4ÞrÇ…“XÁ™LñÔ&ýæIrf'x¥“y N•[z+Gç³ñÜûÞ‚ƒ[’˜%ÊÃÁ`âOêµ¢™4}'zÅ”¥Ê“e*®ýà(sS…oz=¦7`ÿÂø|ü’ÍÚþÀiõúÂ÷Žö|llųY©dÞ¾#ZÉW¨öðy+:éÓ¾Þâëãîç]jŸçd<Ü×ñ ³N»ûù ÁB'8¨XàtÑ«¯a¹0—¾…³¦ì5xCN7ñ­]Üñ–&áúž"ÖâÔÓÝŠPú°†l/ý}…bËKqô‰>éqÌÒÜ-ˆ3 9àÅ ËÚ`¸ÙËpÖÏUEŠ×Ö¿ÁÙ;­²ÁX‹ñŽ™€ø”ý%f´¼½Y5¢îòá9ÁÛåÍi™a½yEg¡vÃÑp.ÄßâQ¼&s%Pó©ßeêõFoû@Žþ]z¸­ #ðb6Tfø&{¿àk0ŽÄ­€†:üïEa<:ö`6 Fþó¸êäážDYšöãt>Ê9úuRa¤d„y ˆZI 4Ç“²`wm4ÛèæmùÞbéÓ²KÊÊ!¼‰Ï§Ûn£Â—×¢QŸ×Ù’ø¸Ü·bÇøvéêˆ1zÀŒ"±sŸl <–ž~‘,+ö,¶FòƵIŽ)­#šžÈ¤óñ sŽܹ½ž~Ý„¯[¼Â‡o€8x–G²·†Ü}—öHmè3†—V³ÏE›”Õ m»´œD°ÜVEJqŸe^;[fsJ²åk5’gš|ªqLŠš£Ý°BAÀKw\ŽçC°j .ÚQ· VÀYn¿É*÷ã_’¾¶¥þÄó2š˜0‡Ý.‚Ñ „ýœˆkRyØ}Õ>ÄÅu¡ËRâô|´®mÞKVœe V¹ …¤ˆ«‹Òxn91¦ÜÚœh°2…W&¶ëáÎŽß^½nYLjÖ#S}'Bcê*4Êp Bá Ñà­ËÉÑá4o*ñ‹ÈçA xù8ÞwÜv|Q´Œeó€lS*ršÓÛoâÙ­}ÏK^Þq|WݱZ–jãšY'6woÔÿ"é¼ÕœÕÁ |+ô˜d $M¦#ç &\ýaÿól³Å.Ò§™wŒ$$Všywv~ ᎙«~³"ˆ0ÙöL ´î—hLR¡eïOU¤¥”k>ÏrÏ ÝØƒŠ¼(dM€ç³FÓ8SÕôó{áIŽP PãÂÚlKLÏ —ú)§ó—‡¯ê¬’—½a§6¦ Û\îB¬ÓÕ€Ú/-O±T1dC渖¥Ëp ãÄEMUGØVß@7f#ªÈ+ž4žFÓBhÄa°hÄ4ûfiÇx ñÛyï ¼¢“)~ô@fÐÛ~„uÕîϯÞ^:`[„Ü{Eü€ŠxÅ‹‡‡Gt -‹¢É!Ö¶Öü6áͦƴÅÄ×eÌJ]ºú[öÊa`qÆ+ß¼cßô@TU#ËÆÖÞ«¯ihy"/·Óªù÷¥=ö›SJÆjçÉBxny}r0^ÃUÛ‘–Ø¿yH콆ȼ‰Òý°Ûmeï:`Í£©•87Á™±ÍL%6ú ÊôÜ;Àîü|­qݦ[r—uY?¼:CE«“²Çd½ÐÊ…„8Ýï'ÓÏU³<¢ºÝÑ,À#Ì|^Ór?ßûÝÕ;eg¢™³±gpK|fU=šÑT·NÎAð[H,R1nÁ·ò‡ ‹ƒ¦ËHœõÕlj3´æj’dD¸sF(hçªD§G¸²óÜfÄ"‡7§ß™„x¥"¡}CÊ:°þn‚xyºÌîí8¤~€|}é~r}±~;˜ôÛÆÑu#3ï¾(”šM öû=ÎsüFÔ®ŠÎñ‚DÍN›·…ã¶ý¡fÀ5û ÿül!Y¢Þcéƒa£(ZÜÚà?V4Wá©!+}Ú ›â„h„ØVÉ0Ç@rZéáÊ<ÖtTÐÇV¹¥ÖO·º Lÿ\ä3d¬ÙlÁ}Õr¿¢ƒòiŒÀ. Í-ïªÝ"RãÆ…<D\u 3€ñrõ«ª­ö-Œ‹8^ªË¢Äoá l¤êdÿJ+FEÎP©›Ž6%kf®|â!ƒqS²sô‚k‡óÀbšÚÈ—e¦æ*÷«2îSpãe–€BNæ°[Wç4Fâü @“«$r˜Ohýñ¯PÇG×àKAÄfŠwK¦@i®Í´}ûXλ Ñd´®{mVPû°l"X.¾{>­œ·úo_›gtø¦m’†¹ÚHLØîi]Ê…rŒˆÝ-~Ë胻-ÅmjásÏ´ªMÉIÏô¦…§Ú—Ýåôœ“§km‰Fx ãà„Ýhl™ T…"¡Šˆ8P>ß.íûsÇI‹]éŒÉ¼!Â^¦qMX°ðò¢r­èÌJ÷>óÉ¥b4,ï/é?¨ÄªšöˆÏ?ýÁXþ.6‰²ïFèy¸pzr¼ŒÄv :'¶oQ”’Ù5¿a¼s÷èPåõsÎ «"móÆïÕA·z¸BXL7óÑnߘ2­!ÍÐgþûF1L½ ÍG…\éL ‰Õ74Ý/Y¥qG¼s5O«'g®è±ª’xtT76Ô/Õ9‡•ø€N‰R½;ìÄuA5Ðlo&q{§à\J¹x¨òôº´þ¥’Æö.'æ5HE„°Ï#£º0…~¤ }O%’ç™dÇVaßB²^û±T“Ì\Ü88¦Ô­,¨©ÖB-/C¬àd.¡IÈ«ÜÜ£gd¯h+òvžúô{BÛGÞÐêÄóå<"¶;+Àô =ôŸ´þq±¸ âvy@쀞$'²üémceQM2p±Ç¦w8d%٣ᴄ¿Çºi­ÞSŒZ*ϔמcr«Ð“d!'˜ëŸäu=Uw¹–bôÎ%ªã3487úH§Êg 5” *~V”úò¶Õü€ºCjë1i¢p}vx,ñug~ ¯z:IFø:eדL (¤²®×Å‘öÎãoåcœcÛ/Òç¥lºµC#±d‘ñ}¥œÿÜá†i¡2 ç¼µ;e•¶LÖ–”BŽúJùq»—,PÎ8éëÍÂÖ;Y\@Ñ,"]è^kœÄSŽËPwŒ…üÎ}7ôƒiÀ¯-[ ZRâ~–)WUnê€Ñ-D°üPðºÂ ¢Õµ½ÝÈÐý Ñ­èš0÷æßb›$muƸªŽÙ„Oܾ_¦§=¾*ŸŒKHòº(b}Ø5‹¿»ÈŠ ‡‘W°»…qÛÃÎRžß.8ÁDI ÎïÔx-òcI.«ã¦»6NИòðrvŒœñøüæko¶ííKï{:dF¤çcèoMB…y°3ë¢Z© ‚,l›äÂï¤ ZÍ0Š,”ýÎIñëYßÓÖ«Ë0ëûØÐïžu>xÏ qÚ5ªÀ·e;œZš˜_'Sç}ô­–ÂßúzIZFé8F#ÇŒNƒk̈£—×òü3 §­|ÒíÇU7Sû!’I¦E9¹^·?]mO „‡nœ1)ï·Úûñ?¡­fKøÍÜ;ýu£#<^y÷^¦jµŸ¦uÑ©´KG4$:0îÎ=°ñnx|A«oî‡CãlŸ±rèãosµ-ü(Yjä½ l|©z=¼QKp;ªçƒ* vÙ9ÜKÙ9¤$Wä¢ïü(æ'‡®üD]±tëgK—òÕùÂ|¼Ç»’Ѳ¼—ïÌ{÷%ØXäl7 ‰sXĽø¹·/ÁD|eÌß¡O¨EêÅ‚ ቱsÒãÍÁ¾™ê­KHè4.‚c6ErÛdÛ~JÈ9ì磅ÓÝ@RD4DmÖ÷k; OCŽÁ'¯+a¾9ÇÒz¯±`Ô=åÍúŒ†?Ø¥îÉðî#¬aÐxÁ; ï÷k¯ˆ™MVÌ%;ÜZ³èËê^Âð5‡Wàä£jô>Ñ]ËiòéC„ÓKÂ5J>r“u$3å=ßGYÎËØU.­Þ`îeu´¥ƒtZ} ß8÷ ö=·V÷àuNGó¯ Ûªx~ 5øÂ9a"0õ¯*z8”ZÒ‘Û{9^¿È¿þÔ|{@Jbgn!\—_©–žmË\+%x_|Æê ³gÊem‡?^€!”¢*Ò(`O³7Æ^ɬ…sj>DãáU…|FlÛmÉzþë\kÓž4O'±™Z}ÆZ“½ŠC1&ˆšäÝQEãú8C ”í6¬8²ðÆÙõáÐÛ¨~¥øŽ·TÛ1O‡uwv«Æ‡s%·)Ãððfò ™d'X‚µKÚ3ˆq.wíñ)|43û8ŽXRÚ˜«tz1Q·ªzC¾m€"Ò€žℯ~h49²„f„$¢Á½ÎV„ªÊ•±ÆPmY5—êÿ¯èüæ€1âczUtÌ1šIN£Ð”\DÌs ¾2&9Øøaì`"íô'œ-éä­•3ƒG#$unlu›õ Í‘~M‚™*”¦…6èbÆÐ5­½r=tM4ˆºìö’"¡„‹Ä÷èªIq»‡TØõaÿd*n&»|é‚ThËIÿ»Ó™´­•ýC²=³‹Àñ+ÑOä¨GêÙ®ö‰„1nÏlä냣}¤XüÓ´«}«Ò W›q€éêäiþêá"Êa,î‹ɰcºÑËSŸ‹l(ÿõ+p FŒnEqW( ñæ š_óÐ$‘KxÓ|©a¡®—{H×:(m’g{Ìo‰dL³@·F‡B#ô4úÑ'„n ŽìB’^Ô7Ÿ¿ïÖY›’1Cþ2Þï"Ü] φ.ͽ•Tµ¹ÃÃók®>ß§Žö/ù8þø©N|Qqß‘Ë'{Tùêݨ*†Îû‹TÓÈi^_Ù£ÖIØ*. i絓ã“ê×2%Èm¦Æl|×mr¥ù·‰î‘'·|MeÀCÆæiš—¶%ÁЭùQ]å¬Kcš[˜ø×Dôi`E=½3“£ómzƒhÁé%QùiFÚÆ-¤Ù]a–lvâ¼[%T*¥xd÷à…§ƒ"²’Æ! çäùÃhÈÀ®)ÕïO‡Ó„"Ÿò(Hˆ~õædœtÍ¿x‰ å †JƒL„˜w°P7 ¬ ¶j«‰4Xw®…@"Ðù”褳lôƒ&.Kˆàņڱe–¯xK“°Kíú¥ïkm«1Á¬ð|td,ºL.$Þh\S\‘¸Kç__O©4:çaãmô>å íi L²X¡‚*_ÓÜ9,Bö±ôuV7ÐÓØòç•lùR¦ØÅ›±‚Gê¹9/ø´Te¾»Šðã„^ î–ŸoǨ°Ë=ʪw§1Šà)3b9 2Ü…6M¡å¯¯5®+ìr’ÿxXдIK—eX!JðÓ×c–ìl1[ŠA0îT¿¤|{ã]2ökÅ4þ{´àÔä+›N¥ã#@glÆ3ñ%SzúB£„4±ØËϺϷ¶·ÙqKõúiJŠ:¯óRíR;ògö?jA9sàñC¦æç.ûr§c8þ6ê›H¿ù5<>“Rÿb-O¯Æ 5õzGªû~¥¡÷9oÁƒ£$X~¦ìôdZZ¨´+'þŽX¨äb#7{’áÉÀ§u# „4Þb^_WÓ‡Òq ­uó&– ÕÁ×FFÈh ª2ÍÑø;bj^RI¤ŸlyS5òÒí„^V -É*|x×K“EM:5x1Й3¸¬EWùkÔHNDgè¼x‹D¸Pjù©”íõZŸÔ.•»ý2ìÓŠ”ÿµ½ˆ£¥§sBîוþ8'IŠÃOÞ‚g¤  ¬„˜$=På{ã­íZ Ͻ\ftˆu‘üN+ð4—Š›ybøKGfÐ e…Ô¹ê×”¦æ]`þ^8ä&t?T€Ï“kÍgŠÁÀ}nÈ„ûÚÞCÔ7–mQèó»û'Ùìõ'}8¾i4…úM kZ~”Míð«‚y×~ÐðUõÓÆ¶Xrݾ©¾…åÖ6^&ݾ1`±Ø—¾ã 3Ç! -¡‡ùBýkÅ"ýÐŒ”Mé?haV¯œ‘6öÆX»…Ï/ª†ŒWbCB1zª6³¨h¨&—ÎqãºQ@%\±8!X~ªã$Æ©ܘT+yG8ÉaÏJ'Àý-‚ðñ•°¿Gh… `iüˆôwýÎõz˜œ½ôŠèrx‡0æ{{‡±<ŻݞÅR´q©<*R-NtôK”mÉ­)šðCÜ}“ÆSÔ;êF·|6ãóÖe¢á¡w퇜daŒQÒ˜ßEÊñ'Pô–s¦Wd¸u¢3í/§(ÍÑô§qàÞUä±k`kv'ýçãº7²†–Lžpý-(0¹O”±žP¦ÿ}—ÎÑ<Ðï û‚ÌÃûKY"Ç-\á×:ú±OB9K}tîW} —½1KNQâßò¯î5yf z£46¯áÜ£Q¡#Ù•’JÏ·w·öé[Š´¾rO×}€Õˆü.°sG›Â ¨³q3Dû«H¸©×ø­ï‹Ñ‹¥s$i½ßÝ åʰOŒ‹;Ïó”#¢½Nœ$)ÂpŠzŠ—4*–ú\…<¿Œ¥æ³5Rí.˜U¤f>ük¾ÈŠ‹Ì^4—Tؤö1—…ÓRPL‚þýóE´MTóÉvÒݵ ™z¾‰›Ãdµ_‹‚Ž”êy|âGÒ%y„’4¿¶h:D‰t4öªmÏÙû§ZmÂVN.Q×Ç™w>L9ã ‰rm4²}ÿ?:…ÁÌë/tL­&~ØÒdÿúÌ©|À:²–Yrš¯Oª‹ÔGZ²þŠÏG9„ƒFô+Œ(‘TÀ¿]2¥Œ`½û·¡öÐú5·ƒŒóÑô™Ü'{Œ@Òz9öÅaa~Q=JU­Ié`û3Uó+O!”"QiâëEáÝæŸƒ§|Ûsç*Y¥¬Û‚ÚBßÇ€ý ˜Ë:«ßÊÒÞg®¨5ö2Ql«4‹C¡ƒ{cóýf¤+%ƒ‡}ëJì|õÜöDhêݰӠY0•ïS9D‹¡s)x×/ãà—k6—ý}n­ zØoq#Y?3üÅÓƒuÕNR+,nþÀ”—ùΙÖhÿù“ÃùVª¡â&êÄp*S$‹²½—Ù¼O=2S3¶J³IË-ç…Ú!§ P”ÓÇp;¤e 0´¼z’Q”HBB˜ðÅè7ËUœöä…žqQ ®¾ +׳·4‰¢K#B yfªÊ‘Òsx$ÝáG Þ-jòû]Ô¥¯ùد„ù—ƒ‹÷àEöäÙ– úL?åcš6–•:¼ù9lè†pѱªvû'œ4 SÈçÑ+ù#I~úâlŸfc…¤Ø2ï" T¨¨›öC$È}~_øÙUr¶82¯E zPÒ\÷»Øs¬<í-›Úù!ö×Oɰ! –ýpáý£Š¯›ÚNl¥Ž ÎJ‹0CþL—¡…ðŽ)O|@¹öñ4„<ÀãPܘè;<ÆJÒÃ÷à5÷´uÇèo†¤i¯hׯZÖéeP#›Ÿú|´Œ …ußžK2`¨ñ"¼€ÐÔE‰~+CD0ôÎËìî"?_|i*Ø^íâ‹Zp×>Ï,i@ýW#aµófj¾"6¾Ü à¤ÂÜáê0²°Ò z#-Y°¬F$üÚø—PO¶²·Êóo^3^´‡ëËð.êGåÎŒTˆcç¯È €”»š‡t+:!ih䡲x×]$?‰¢/fÞ·ù½cÓ˜öÄ!é<Áï+Qk»ŠµŸà:Ÿ&‚·’Ök1n ŸŠ6m¹gO’•U ®×v+~&v;'ëᇊ¤ËFäP0e9í„ë‘©¾hèe0Wr-›¤üÎìhÞl9€a™ÁÁx˜eªUõ›š}BñǯýÚLNÑdTòIÿ{Æ:­½Â­:Þ ¦»Ì‘¸O6]ôé£])¾wЙbÉhó A}ÄfýDk5;‹tOz8kU•z•Ííx™5éb9Ök&~‰Vô§Qf@Jʈ~ØD_ûËhîq‘ío4u˜ìo½#Ÿj>ÄÚBؤضÆSUû—œºNvŸ9üIÒê“»'ZHªì,úXˆQdÀá,û·Z®@IF¢´…D‹ô—È›GHøùà 'ãÈLÍBTµstúIAoñª!oP½ˆ*ÂÿUÞ”% ¸!|ºxùF*óSI 3ô’ŸªP>¿_MðLcZÞ—(ëÇ·/øÅe¯¿³ù8Z6‡Ç?†º}&qx/^øüï¯nc°ÅI{;È üùx‚ú„æVüš°,rBò·8z§ˆó½!cÊÇ,üŽ,ÌQ²P ¬¥¡Rê˜D³„]k“Þ~D°ºÆ²»L´Þx¤¹õ­¡Â‘~(¦[vÈ ?dÞþÛqü(LrCÒ¬O‚goí¿×Â9W!óRßJ:ŠŠ ßàÆe^!‡Ø3z‡¡ †ßú:<==<À>u`–Œ- ÎË.ùÃ!÷)¿ÎÚõ_ÀìP½×„UzƒEØŠ4aC’ˆÈDmò:›3ÊÚU?¸Ûé×+üÍX~©Œ€¶:ôAÑ#^p9›®CuvmðËkõ•>-l%‡hÌ^˜‰ÂŒ›äˆùÍM°@÷ºk#|¼ÖÏbÑÎ=d"³ëiÊÞCî8‰’ºiaYRõÜ®1zJ¨A¾Ÿb<«Èzi‡Iû)&Û#Ÿ ^îSé õ^öFöGÍd‰ghWcI)õÏôŠA^“5pÙ?K¬Úxb[™oš~âìÔzrƒ[¡ŸwÊ“6 ò˜ ±¢"Ï7ª‚¼Ñƒˆ”D£[¤*óì™&W®#Ñý*V£Ÿr˜'DÒVħIú5Þ2›Õ–h$ý@}|m1=‘U´ Æ7p›¶Æs}°g°¸P²¤Ç,‘B£æúœ I‰p1%SÙȤÌ3aœè‘†šÍÙ8ƒJ ë:av8ª,;V¥åÍü+⬿u·ûù+ô’NÀ¢x@š‰ØýÑIK’Ùü ø ½GÂZû[aÂz1'rT‰?¹µä’7eV:²1»¾Ö¹I-Õ±7Äês1vÜJóu;0µ†oîîK€‹fÔËgל— ÍïùG^Ä4ïÃBT>!ok«þSé¯ßÖÒúž` µ¹ì¸æ!@(IÓVA±1Œ€¿#Cf[J²ïW©diz’¤ç«1{ÅLÁÒY²ÖÞ‡…Ì´•X‰|sæAs0¿oP<œtH/)óÝ÷|#ú¬¸YyÆŸ‰©Æ ÐÂÓ¾­Uº'¿Ñä6MxŸa…U½À^KŸhà¤+†ÛÖÝ 0`¤Uʸ½õ0â$½Ú’¬í£9ù‚Oš8Kn¥]cCÓ ¯QòÙª¼8ÆjõÐ÷ƒRñî5E! (þÖ$ð *À5ñ+yE3Ÿx~Ì{ŒÁ6™>[íV½DÒš‘upðx¬­ £@ð†ÿ}ÇùXmÕTöÒaD÷²vfñ«"vnëgQ¯Uö{²DrÌìƒóÇÎÈú¶ÄôŸÆ>eE4”šCB †ÒGýÉݧÃ,¦~8¢~ó‰A[ƒæs¤ž¾9Äýç‡ô>-·ï¼M…[&¸_pnû[÷HȲ¤’{ó4Ð|šÔzhææ:âǾ”>4~\CÅT9®ÁÒ>ÎÁ›’ئnd3ì{-ÓSwSOÏý¸‚¦O¢”×tu c9ìa‰01ƒÒv*áGcîÏy¨bÂÑé7^:M‡p«‡QÌ–gŸ²Êƒƒ„  ¹ðÉm–$À7g|i7Ézâz«^5¡ÒJñÜÌpV50—â^ˆ9õxcïƒ7{ÍÚ-ã÷/úAxf¾¤iÙìWž¿½\$bïÍIúÂ94û&ÖZ¦¯Ê… Q?³ÁLð~„¹…$áì‚«ñ“­P¶çq Àß : :Óª{a$•/ÃÚKßþÅ?Cz×l=5Išñ"iåµ4än9½B³Çf‡ÎC1I®%Ý|q;ÄLäÑ¥€Âß ~ô:éŸ Vn×~ÇEº°‰sÞï8Ë6ÊÞÇà]ëÁ"l à3ªÉ»emÏK¿j£Ñ+†ôzKS:vÖˆzž1èKÜÌæ¯U2z_²ž<“œÿdóõD8Ûyí·Ä–~ÇÙ7wÖŽE˜™Y3à›&zg#;*Z“@±.æ÷ÊbBøÊÇ-°CO‚_5d‘,è\Ý{-ÝJÈK²áü QMëù`ÉÛ¤y¢ˆÌåiæ1Þ¢K¸ZÍìÔÖÛ²U æf7·–¨,?Ðïðè0Ê ¤×4'ƒm~ƒJV]W00& Ñ|›$ ÀPà#å¹r¡h&^ž›P  d¦Ô…æ— ½—qLÖï£Hëëà;“y—n†ö´—¯u'‹,SšÜg_m0<ÅMªumhøÃþÏ‹è0¡!ZóKûÄOJOƒ›çV8;n\â`Özx§›í=ã€Ûõê·@a‡MÃ2üw j?ý¼î 9D5ýw¤ÊkõÖB[Ű:-X…[Ì‚s¨pL«* ÌŠ—µH²ÄÇRàä$ØoÿøX&dSŠßß;ZåtC†ÿžãƒÕß)Fw Zš[Øw–í¹×α¥G*#)í¬EOrê 1òŠº^8‡åŽ˜=úþT"ë t’™%ý‚”Þñɤl˜¸ °ª Ÿ6½ôìë˜| òÉ+áh¼kÍy“2ñm¥Ú—AD!ÿcƒ€ÿv«ŒGòv,¢r|•5¹ßÝ9oè)¹ß«FØl­ƒHœöëS¬Š‰90ÇØûñï[·ºdÂÛL+ËTf~-vsžY;¢¿“$ ò¡@sÞaŸóÊȺ¼89&iþõÞæ,ô€ßŒŠÅÈ&ÖÒìöØbʉxió ”õ2’ÃÎJüoºqWÏL[°"-ùöy­]²d×k_žx`1ŠL­€òK¡¨±9h½Þ¥…4éÄ–GèyPm„¡?௕(BÄK‡MºÁzJE1œG ÄåU† ‚*Ž·ê¢ÂHD¡’ø‡• •Wx-WsÔßÞIãJõ1Ùôbí½­~|]߸“ú²lê\Ù|@¦ž)í,%ù*Á©iêöc_æŠ×¦v÷wIêE6vMà ¤U‡Qü²iá4Õ´6'TIËvÈÒÎ%ö;|Uö|ã[tµÅ ùîÄúdË©¶Ju3¸.IøÔè)œ4½QÉ· óšrÎý­­lÃ}+¶ E÷FÀ€ :ØBº¡#´Í$@Âg&ms#4ö-•YHØ^@¨º3Œ´Æº—'Eª}kZxçIƒƒûiƒ¯ê@íHñ&LƒöÞ‡ÁɆήe½uPW$á:2"þš«ÁW¾§SÏÀ¹³*¹þƒ€áz®ùlΑXdL¡´™bg&wÅ/Í¿7j,éÅÎËÕæMfJ´^ÓgnôœÇ_e®p²qqVUH5cfF¶I, 6‡ÈlØËù.-~úE&ìØàÐ!yŽñU&ÊXŒbþËÌ[_)ll&§7a¸"Ç~O³é’õK»`‡m‹Ši7ÆTµnˆ“ ù{M…iѧ6*ÿë§ZnœsSŽ7¾Ùj´I}ÀN0Î9®^ÑHY­" ˜r‹Vú~*m½Ä‡äîþО– ¨4L‚©bÁOs›ß¢1zh©ÿʧÎ-­Qf"ÃÂ3dÚðGS—ù$}L”•ma‹ZŠVéJÑ?;,Í ó¸¡ù21¯ö¹êUÙÕÕO¦è†!ŽŽƒ ‹|fªw‹0­C8ÒW/ˆË?tî¿eE)EÎï—UÌMHGHàßíÐï{ ÑXßÝ&JOœ;j¸¯P*¬û ÂÚ«^©…HÄÔ‚Q-ÌýÏý·0ùc‚›çÉÈ-ÇY!ué #ÈØÇó¾–â|ƒÎY Ž¿y{‚ÔÀšô‰ i$œÇ3•’ÜÏøÚŸpŒ¿BFjðXñ‰îÓRKs´(ãÂ^"ë»Ó¶…ºdÅ ¬•Éít%'b\ãI¯à#|{Êîßf$öÿ;déµ±œûd÷‰ØdI ñ[ÝzU¼æë;œ^ M·>=Îɿފ4…ÇÖF'˜ž‚pºx Šy(%Ü¿´‡X$o6÷ädO”r¹q3ùXˆþDj‚cèy²ÄdèoK`c—Ÿ;‹qV\ÎPþfCú½p gÂ_ gVÞsN7C>Àú0€ùZµ"ÌÿŸf°¿DíË~•†eøåR‰j‹>‘‹^J>À8ðŸ´HŸy«âЫtÐ9`»ÇTÀd× ÷«^wW5x ‡0°Ó †»FRjÂãÆÚÃ8Ö·sÖmK8õVœáv$7~4kÚ*‹ÈwõTùb²"»½$+l¾t*ÛÑ.€\¯ÕÅÄ O|–& ö³ÖH×#fxôG B7äšMÀxXÜ¿H½…»/ ‘͸s¥z¢Æ¶†,ÆË@«'XŽ©ï|¦–÷ë x3W_9¨_6¿ÉÂr°'ÐS¤°o/ N1Ë}8Wƒ‰„V}•æôs1ýŠ7u@ðTˆÖ®°ºi æS"%}šµEPÄEwâ`Q²,$ÝÔLþCX›s>2`^¸Þ¨-…bT–ÞKn (`hüWp›;ñ'-à³Öëí¥/°ÇÖà ³ñ͆tRÒ`¦šv˜pè‘~œ;_È1>CIéÿßü´¶D!¢ …8H¹ôj*Û)ã‚6_äwuEÚìÿ^.¢ê¹ÏŒ4³®Þ®Žó‰Ù÷õìV4‡g™TäœÞ±ý%‡oÉzà Ù=¼æyë£Þ‰¥)XÈpá—ºx‡Þš®%{‰ç|t ö‡Ö}`C“›Î©Þç`‰¼Áϯ‰9&ÂÞNÂ4ÈÚˆYH;|jKA“’‘ÈK\yH)ª™âØ7à蜂»láÄ‚ÔK>Iá¥ú„{Cz8­÷näg>øÚ\ œßü+ÅZB,Ÿv!Ü#rÇ ÂS#Ç’cYbôþ©¯»"0sù„j÷UÅ´%sQÓª¦­h 6š‰W»þVª„;ªï…lˆ±-ÁR&|¨—Ü7¿¼Ö6È}‘û€4ñ„ãBÚÆÇSö2àK åCU–­i§•LI´¦<™}Vóæ šÑz暎zx Íjg- ŒéÏp« È¢äi>~‘t™ÇÇûZ KDÿ ]ü^fÉCsÛê-Û”x7FŠÌ“måéÁ‚eƹºÝ³=ú‚´ LâªÁ¢ƒË¥ø7¿N¬ÑŸÞƒÜ@d{Aß*u–Ìé S(u{:Y„Èí¯ï—àëV÷…}r@:‡˜BÍ"¯'Ä­qn ˆ¶A—"IþÞãOšhšê9N°×®ÖÙnj´8’…|Rê_uèŽìÐzÉ:ЋmêZææø³ä6‹) ©j¨:l{¡™×" 0¹Ètó¨©*ˆå³áîˆ*P1àúF£Ý'^ûÒð´@H¦PÆûv­*—:'3eÒÍœiQ6Á&ÄÅòØ`„8äHœ2i&€›‡Ž(0á1Õg‡ø/ÒÿÞŸÒG¥þ’µŠÐg¶a_÷b{BÊ™Büó!˰ Æ0*#ÕåÖª–BN©@&„ygzäwV÷ }àÔ«‰\ š•Ž‚}<•Râ§’5É@ÜY«‹dÅRû˜þ}‰Û5K~1ص‚I¢4«„7ä\“¯ú%U©KfKq×= ¾¢Å¬'Á¯5„8šçoÂÕ±©LE [xDk¬)D0'E2´°Ï¯å#Zއç r¡ ²nrñY$®SÓˆkà 2á[h×(qÕ‚ê3èÝa¶%Y.øP/¾nmÃÅ¥©5¿PÌÊf³ñIÃ&‹…T2o‡¥Ñ9z#?‘¡Š]ÓC×DOÄ€™Qàê9 ËX:ZIõ%C‰YMsÓiQÉŽÍBr˜~#Ò:äÜÀñÙk×¥B!Õê^thôcµ1p©°¡oÝ"÷<{î°W#—ˆÈkSøµ¦úø{R²¤ÆÐÊAò-­»=ñ *ssç³²Ô ‚ I‡lí÷“êéÙÛËêT78)½«žŠÏU¹“za2R[Úoþö›æªÉI–þ›]Rsóa_݀ߓ/­Ç‚ƒè ¡&²#¢X½U½Dõbt~¶'Fý̨5ôŸŒý·Ün»¬B\]5)æüƒ¦¿ _9‰¬ ðƒƒ?:“€ðµ‹ê²(‰ç 2¹Þº¦Ê€êœ|?队2ãó!If&pkd´={jø¿ÀŸþ¢ÿfõÏi€í7§ì†hÛ´†5 ¾¡¾n¸ã¹*Wc®6!qô ÕËs©[1ijÒB8Ëyss äo¡Ä$åEwª¨­ÍgWÈhméD–jÑ fV-xÎg4‹2“JsV¢-p×÷‹ŽÓ)Å"éÁ?Œ-ŠšCfåŽSPíåstLpH‰îàpX¤ç«tÈÁFê¸-;ÛÖO3ïÉßšA©¦w¸‘>ŸQPM´_€e0ÃNÀï× ¥lHŠðÅ¡D<±üéõò Lúڷƾ½®T?|”‘Ñ-b[ýîËF>ˆÖ.ýkÔl@¯ÞI¼›ºèxa¶‚.n?Ø“Hˆ!-Y;ï¡•ÆlO$%=pÝ â]j`‰föb~8ùû^ªåVwuÿŒì>•'Ã4¸K„üh"|å8îÇY¾úÌ%/{ÀóïuB¦4”GD)¬çC¿?° 0èÙè4¿ÀÞ‘ ŠO˜œ!´…¤<Î~L^pzz ˜q94yƒkj ®D3ZØ ‡ ±hšOiîÊþ‚²lbÅ:ßADsAåD樒ÕPVfwÌ‹\Á»š%}K1=Ý]ÿR¹ý)Ðß¹^4µ¬‚“ÚöidA¾{T'IÖŒXìçi|1êÀÞé*FÚrÉ ÒO®o‰‡äOw1ôÒð`‚÷õSj]= Ddù,Ùö2& ­«sŸì7¨n¸­Ò-±0M)Í8ƒ’¸?©èç|O|ssT —îC=mÛVv Ä«šɉ`S_OP¸uqšLÇ[Jµ.}Vc‰´Lòf‹ï»óRí á ¾‡è„~ÏX;kë-Ð%çRX¯ìKÑÛ à‘Ea·œ v—ÙãFÐŽ*OÚ¾yû~kºiôŒÍ:¢‡ -µ}Ë‚Õ,Y ‹Q’ —õ9; Î„Ž˜ì ä¤PÍgKê—Ob5^^ÜT¤ Õj3ŠÒšt{™@.Z8 F1Ä’ýT š@zŒì‰#ÜÙÀlf)^÷"OÓ’(H¿ç6dš<´ÇéjßvRD¥kù…{úSCÂ,dªyŽü®“ñ¨¿Žš=õ"ÎÔ»`‡øáÝ7¦ÈæýË Àôò¿|_#UÞ±¤ÍëF!ÇÈð‡_Ñžoõä¯\#ÌKëoÕÄðàècZ‡ÕÖÃH¥µðAuwŠ k*¡—èðgÊá>Ä!“m=$©¥"q-ŠŽÙ™)ϥ±„lܱy‹äROƒó¶GþìÛÉj—åþFrîK¿æ­ì”9pÙŒ”K´ÌÐz%¼_ç—Aø A‚æ‚Ñ1ì-Є]nËbÀÅl\„”7ãõðIóOäøñûv_^ÀBþÙýœ[•Q¯‚ó½Ü Çû·©Üo›¤=’¥¥XÚÄ´Ø6ì1Éô›ìò³ÚN )YW_üWùªµú|ž ©=G,Ì©w)øÑÓëkafƤ»ÍoÀÞªáTN®ÿÓ¿c«ê9¹”Á"nÒ͈J$Ç18Ù¨šÌQ:%öLÉßÓô%æ?hõ2¦1‹ØvŸs3Pä+a/¦ÞÚ‰¬Z¥ªÃ0R*¦]Cn¶0òØý–a¯§ˆyûÓj”b,u)ÿÝÿíTÔ:ô%¥2µ;¬‚¦6rÓøÖMàvzÁfÔžÖ%%­éçpdž¿þÜX”姸Rf˜wÜœ?NJH\NADØácDaîùŒTÒõ`ÜÒÛ§Íë±Í²Ð\§ƒ?Lä&®ìæSe­M7ø;í¡8Þaöí´–@>Û›¶9b]døbcHê;zy]{_‚ð1P¦_ dú‰%â=랆’E”Î…F›ž¡ç¨ùUÖÍjqÜú‘JIÀ…„üä³åWé"³£{бÕs·7Uê‡ô ­¹îõ}ÞºéLp “žý`a³7ÇÆË–øe Ê…RÂa´ä£ v'wJ ¯¹¢¿š(Ñðä àDHÙçL®ý|?4Æï.íÀI×ÛZ5)øÓ495.UF+3„]ö ?¸OÝ¿Ò_‰?wWVéWÓ-4·¬òç¨2ßhÁ¦­õêVïM†_!•“D¨˜2o‰‹>RÊ¿ïeHÍÂÐÁøÖ£'ýf-ÍM€ €–p¹¬å(Õ5W­-y޳}ÖÿÖÙGÄçÃXÇ8 çëiùüìC ËYxó~áF˜!Ord™¶D ìÐ΀ƌGFCAk S}øyí&I;ý]‘ÿ›ódŽoÏÚEµ'v:Ê,\·Kh×­Ê|’·Üdé½å•SoÜBD£ÃÁÌ·)ËŠB‹Ñdo1—Tû~Ç”SuýìÀÙT‰ß4$Aq¿_®ó?}M§Â!ª€å±QÞoxY¡áR^è°«È\f˜lÃsÇì7&Ú=(H ó´”Þ}qpD™0Ø@ã0ã+= 2·‘âô`M»È|&rs¡´ÛÏ®ï^¦–¼oUa*fÒðý\µˆ†Ï ºüJ?‹®*€ýú~qªÙ±”ʼ:f…^îæˆŠ°†}rë÷{·ð1ËЊ$k©Ë߀ÿl,Ò àeưâ<ä}®Ó!OéNJEy:ºmÁg:·QÆ%`§÷•¥?K‚‹ÛÏü2à0a"æ&»cžØ"ßéFBš2§K"hƒ)UÝ„ƒ_'òòQW å´ÞÑTŠ?ä<»cÂò‡àHïÊêr—Hƒ8WqÈëPê…ùÑ”eŠ}Š‘LÞð°fiÈ™˜Vóìu€?о],³ârÒ¯e²ðfL®ˆKTÕ»#“íd^¯{c%÷Úpê嵂yi\]ˆñÁ^1Õ3°³-߸w÷ò‘ÇÊ\$¼ w­­3»(È>Ñr(›?Ž­…d‘  ;ëJt"[Ê„,þvÙ†d ŠÕÒâ-9þy½Þk{½¿ÏdÆ 6iýs¤§Çè-à–§ä^Æ|‹Ÿü2áÕ€ù0ï1EõõdÈÉÆ†  Ë€†7xKWÔù¾Lé’#ø:²¼‹ÔïëËÊá³Ç‚E¬Xõ¯ŒA Ð-ð‡S^/u}ôR°¨MåNYùìpÔºaò‹°31Ô»4¡X÷þ`Çû)eQ`‹LCïU¸æ°V;çO Uß¾³ÂÕõ>2K.v«ëK(òÊLÀÅŠXÐÅ5F[Þs™4fé†b§_Q§à®‡&—b_ªb¯[s‰ürŒ,p95NúÀ¾šìf(‚…¿]€(§øCºyœAÔÌÑ…’B-½nÿÉ¢%êï[(/ôZÉ{j¼eÚ²¶«¸’¯\YëÒ½üEÑ/µn'¦OΆ÷Æ&Oëaå^EnÁd°Ù¤? f–ÖŽRe цh\ žR,–g7LâA¡ žïÉŸTG™86MkV(¾ô”@Ó²rú·W:ÀÏÕǽþI.Y[Eq’ ºÉ\ç‡\€0)Xì7T7l>IÎÇ1šð@U²M-c%¢ŠTÓÒóë¾8]‘75%¡o±~¸ˆ6¤Õß+Ç…tý]œ[ç—£ [_›2ãàÁãׯ+kŠ>üEUb@Ñ7‹'²’›*zx£Et§<éà¨C¢Aº=9U>ˆã¶núžùÕ<¼rî3ŽâïÁ‘UÛ|/[më>Øb±ÉdsÅ׃ƣ¬»ENOå:tMù(÷yã#Õz¯zòW¥w‚?¼„‘‹»}9oü0Uľu©t€²ú¶Ú+µg¸[viáIh‡h÷ý×¹~U9©*Q¼²{­ÂBn•0!ÎáµMŽûo=NB;÷å—KÀ—yŸCbV/(›.ñן@Ói¡‚h×÷©{=± Ví’zi—Ò(yè¯MQ.-¤b‘tY_d°h€»nÎ"×L•¥Ð(zœÛ¡ –*ðˆÈ„l•»WI•l?ÜqÝÊQ†Ñ&%l´Y(ËÊzáLTQq këÔ”7/®Hƒú+Æ EY1:1ÆÁòÈkØÀ·¼i1ÖZqoäÊ$K…Û˜xRèF|B]/®'¸àe5½;žcÕHcˆ_ËNÛHZè´ôW$Ï–*®NÑpèà Åë'=3ÓeeBOû,ù'h)]?QŽå­Ngâ¨K$vgáY¤:H„IV`yV%]Iíû>;A¬ð_˜)Ú´ô¾i7ùJ5eóUrûÛ‚éöÓ0\|]½Z/†OM@ÓŠkpȇCX ä+{Ý¿«´©tO1ØD‹ú¸k¨CZËfv¢Æà ­ëun‚6G­š ²‘2̦ä¤ñ7G‚Ò ¯è 9e6àz¤”wvÅä[0xÓï‘ae~Hiƒ–²6Yý·Æé¯ÆúSuvxC.=×nHñ#’‰ÇB”7ñÄXY”ú±Ã¹ç¶dÄ×ì_gú×hÁžv¬¡XêˆßKi©2s%dP`Nio¼H´ÌJ•'åC8DP¯õä+K\³O"àp¨ºPÅ\¡Õ°c´ä?ášqBfé%='€úUÒ ü]Zà81¹™Aiä—Bß¿ý¿=8!m\Ñ žóMB?äADƒ÷²T÷Ëö_#‘ÆíOõ©•°p®îj'£®^)âþ_ƒý§Zgù Ñ9÷ì/Ñ/õo¿Ìn`Ù}²ÞÄ®®tŒüË/Wò0¥nÎŒ£ÛE…æü(ënÄão ý7¡Þ¸1nÚîO!N®Ò)*Ö!ŸLØ%Ýrî‚ý,aÿ™¡üi=?­Î–;|Ø\ûŠÈ/ù×*²Ô ÖxäºðÈå”%ºú'um þ€¿~TÎGÄ84L67˜wŠzÁA¥]fд†_Ã=²ƒ÷C¤ø ÁšÞ±“OÉùÉö8úºno0@å½î‡’‚]%T)|<¯¾Ñ¶äÂöd£÷Ò. õ÷KÈD&m@ÏA};2>, #ãwç‹4SÄï ÈÞ’@ô˜iZ‚Ê©Gë% ÔÇ’”írœ¼Ÿ®^ЖöçèF4e@Ãy)ôâì %óÓ„¢Ž`%ÄúlKô G,ÊŒÇ4Nê¥Þé#CT7Bs|è÷å©Ê@Êøß°ó€þ;øv$¼¥9†•[À¡ä-_aB«üKÑd)„'ÜÚ¿Æ[GÅGG«»PAûŽÈ‚Ê¥ªNuò¿‰ü$ó*¼Ð§Þz‚rN¼ŠEC1^„4Kfº_ýþ:O¯ 1ŠˆWQ}£tt{È+ë!$“þƒþ‘⫝̸VNõ} LeÎ[X{ÚÉ5„e…ÌÑš4´à5#ö¡EùQ`ÙyÆšHÃÐ×}ìTë#ÅR¤Ü5TîƒÅ²ùˆ ðó“ƒo7PI¢Õ>M/gM¦HÌ6aÛiwÿ¯_ÛÖjƵ VÈÅA| üf`êÀÜd[×__ RNw ÚdôPWòáVá_q~2¾? ¨+äaI=S­ÎŠ%È••ŸA ±n¯D¬—¿g’1׋–hÿa®Šy8€°7ÎNÿNý_3ÚH›0·¦µD8ýVyýóCÝ%¼XcJ³ÈG·C,Í®¡ÅÞ£êd0D:èò|£zEYû#L}£j')qo´ßèÌSrø[‚î·ëwÙ1XT$=ÄU¯£íœä‚T™.[%ÿ:d ûþ\þœÝåh3iΨӣR@Øôæ,ÕCó_–z{›ýû.Å~Ü ÊTZXˆnÝm˜H¯ !ü,³ž$üuÂÑ ˆ<¦¬ó­Âíú' ‚i§F¤BIãû¡Ç??ü²Ç;jD\4—nó1©7‡F×ñ,Üï +>­6Àû7Ù–ÂøªÔo†+ßùÈJVµs6{ !ÿ®¶6¦Õà'î¾t­*i»ç÷ÆàIºóÉ¥Á'>lð!ú.ËaÙùõêÛƒÿî©,¾ Nîì¹¹˜õÕ¤ý‚jòúk#=¬Ëá*M5Iãäöv1Ò£g(íó¯IGÜN5Z‹ú]h‰ýÒñ”Wü—^óâ¦öò¢T¡£„…M|î ‚¯`ÁfÌ×ð)cÖƒB0óo,Dõ·v1|>•ÎFGÓ§<ËP8ï{°ž1þ:ÅêK,xµ’í7ïQ¶„Ã…:þ¬?!)¦)QÌ¿–6m0ÍOEfcÌ\£+Ã5œ >+^ >a¿dÒcv•6Ó3aâ1>'1¿ßm&¶ð@†4é“)o+&:öúSÆ­Ôd`-1býË»KYëTrè*\©›rÌ•Ù-¨¬‰òeòl>QU¹˜@IóÒt½ °ü…LäM‡zŠC"öå< ÿ¢jU\€Ûú‚׿Bá9@/É#Y©îV`o¯ã;à{ ÖZѡ….´·]½‘O>~{„¡ìù[tŸTœÕ³«ÎëÓnìúFm„9L†ic¦ÐˆMb0 ”¬æÁØ«ÅW è• ŽÐ®< Ê/‰¾é÷ˉ)¥‡‚ŒD9;LKw%ÑŽ‰¡@JXø¿²†å1*ûßw”L£.Zêníè©ÛA¯=xÅ •é·hå Øßa戉¾j~1ÙNÒœ~ \¡\À6<(\ôŸÿ¤;´G|–²ÜÔú‹¯*1Ô’|ÿQÑâõÈJ-c(ëÁd ’®•+'ib¥¤gÚ(ð”ýo†øNLY1äÃÛó÷zÄçMX ª/iÊê!ÅÖ_ǹÌ«™.UO>¦ëÿÆ.©?ºoçO;dÂbk«^–eò@7/tôwÑ‘åþžêh±v؈köïÄÆ5%zÏ%…ÕÈkÞHõla÷ûS¾`§+“2ØL’¸>¼‚—”q2tqþ3ZDä>èñ ­çd] æ!Hxf–n}ûëAß«ŒÄ Æ·’UDâ:qõº Aᛞ3‚PYÎëOô%›u£YNèÂ{ÅútÔä)èùÛ¹ »†eÓÔ‘¬“/réEcÕ ÍXIãod¨1*·T1]}eÇ©„ç%óçÏoDº^Ú$äDM.ì÷e}lÌŽúÖEæ¨îÄø]“êgÉ4¬ Á´’ ôîaªÜZ“0 qºÊâ×ñù¼øÈ>ç+xí¦ûá¢ÂQȳµOò¨5éìîñ·ÆoÖÅvƒðoÑç_K8ÂEœ/ÖA©fêÏ¢ÃÑî'Â6ý¨3D³±n’ðEçü… ?•^Ò‘lÊÙàÍL¸’ðH$bjŒ@ ÍTtJ'ÛlŸ_ÖÀÈeaT]ªg–|á»IH™zîH«ØsúìyQ‘ËmÜ/8âûDà I@¨$œí [S?®gB˜GvíµÈE&] PÍ‹ÚtÜ8œ<ŽË†É£éWsÍúÝj¬½ûWO3ßG…Ê‚ìÕÈ1íoMß^íåxÞ©|ý‚à+ª¶_2u˜š¾sïâ2ébGœŒ‘#^â­:ŽîÁ_ U} Zp`_Å”³|¯5ç½ç®òf=±‡{J!—³½nð//¹ïYçÐÇóc털q¿Ì`†níÝãZ¢ýšç€¥ƒæ.ûX~ÁåNËöBó>hÞfï—œŽÒ5¦¥•dº­ü?a›«”Î_'ˆÌƒP –ï6Vk`ΜwóðÆ”¤(!ãë—Å.¡|àgßç~;V½1ß!-(<3ÅÌ“zäb‚-¿èÍwö£ÅoKkØÑ¿4Ùö”|éjÚ6ç$^IîØâ®­¾˜,Ž×YÔd]I´õùHÒam‡¬²š+~¬G‚ßt¬pRª**à²óë‚e ›v40Ñ|ÿ”´™#×Lã°Ë&Ç ¼* '›ÛÒñ̉TH^mNè~ºyT®ä9èö¯˜Hó®ß]tjY: ¯8)mü±4yÈî¾oŠpÌ–vŒþ7‚æEhzý²Â¸Ï4¼HWKJ`Ÿ7/3—寻ÚWvÇT›ž oHiÀ8Õø>îtX†É$˜Ì€ˆ­2­ýFõÝFàÞ ÏïoèN|~-úѬjÌ9z¡Cõu>dÖê‡Æ„¥KË̼\÷¹,ª—¬“§j_ákWÔÞPG œù¯îËwÚ˜Ã'#$î6Öšù½þ~tu8•äcžÄ­>O –ÖFœíWóþ Ö´`¯œeýásý…Åðr 2Û(ב ΞԶ3ápìö¤„Y1Ù¿¿ ‡—åÔúÖ–¥²>xó[_…’†ˆÚøþÍGy$,nðPKo8ú”Y1a.ÍwÍ´Õ7C9ñùDƒ¼õ¬?ï7iZklï«Tb‚8Bó®à@²ËpÅ Îv'Ïc†ÓDž¹R¬N+ȼ=©É.±Å°Fº™øñ@Ù›©y_YR( ì;}Ž·ØÂ·Ÿ Eš½ í d¡ý¼jôù%ÙlŒ²‚›“#®yÏ@EVôêÊ®hHðO—''ÃQéÞ“BòYžýr˜HÄ„1à¯ô‚Œ—SzoR¦¯‰Réq¸µå¢L tÜeÜ‹ygWÚÍ+{ãÛ\u‡…HÕßT#:Pòêšö)%,uªq÷å–lóScãë’«QÓM†û9¢M##ïÙ}ÐuÊùaó5^žÔw1¶ó÷³nŽêˆ>†~†w%,×ZÙ'Lãv ¨Ít`¾I9%/ýlÅÙ6×d¾“3 ¨ùù5N¯¨©¿ÉAÏå>T6/÷âOuÝÂètIÞ@9'ÿ‰õø¤‚E–_èV¢éߘ7¸Ü3š™sáD¾µkÁæNåÍÜí·”EÈMÁðdá"Œ¥ûaü\9ó‰ È&÷Jnd䛂Վ q/X¿Ýž Õ4ÂýW¿©}Öz‘ɘ MNçÆæaã€jMþ’¢Gb¬‡„k-¹nC4íàYE;T4À¿§ ¹òälÃãD2Ÿì=ÿÕ¿2?3]W5‘hsÒ)Þ°”=l àÐÃÒé÷kH߃R­-ƒ8fШ­¹îø×Ø(ýÕÝfÎЈVVÿ:±‹Ù‰FÞYb6Ã_óýÜðY š_àÕÜ6ª“Œ5Ì‹xrSÉ×’I˜•tß5»kØOöÊB¸¿r.//íÁ–l׬/ƒM{ Ô`–ðIr®g^¢p˜åoOEs±¹È(bžN:¢…­¢¹‡üõ߯‚AÏ2@„_ü4yÑ9:S_Û( ½š«Oý¬"Rü´.¼‹IÖÃÐ5Êrhùé¦4ÿúÂH°Ê­ÒMŠ]Ó8ó™YAÇÀp9qÌæ¨qÀ&î5ÿiO6ÍÕ¶¾_Q$!ÍW@‰nìÆ&*œÙ³®+b”h]ç.°Ä@ú7@E„¶Ö¶ç»jfm)€X3#3½ï)iMy Ëv‰â§ì$Aû¦þÙç̯ãÑ¿oÄaò±dàºB Q{ 4Ñ©ÀäQrXáõ¹H &™%›^ÚJÇDФfÿâ!’xèu „üŽ… Ï“cV´H»!4ÈÍ€òÕR¬›ïê^ò_rfFýÆãÎFsfMÆ6 `¦NU¡0B¯1MO\/ÔÞ¾Hê!LzÙ ˆn=|8›9û„úÉ’í"ƒ¡ç1ÞÑ>Ÿ÷·¬þ/A—ìvzƒždö‰c»¶®+ ×,Ùœ6º‰0ú×ãÑüõ¤I4å|²ôìC,ÆãëÈØÿZg¼Ÿ/dÈN\˜sDNÓp°áå&ªMšWaÕ(sÊ s.ÈK+yL‡ÈSŒÎ¿’šh¡ùáézaHº|D¤ gجiäÑû2-nzívQ>N(Sk_¤–Ýh×yò¢Úd•ƒ‘½rJˆTYD•ý«/ªE2“FDPMÉo£wâ6ô_ʼçWù7HóL´É­9ÈG!K£PƒG‘¦Ì¸Ÿˆ/ò†>«Úvh³«çÊœ¬Ô4¬–± (¿:>RÑê?©qi­þWXMé©âÄ=V@‘±N¢¦É^šxs¤Ä(ãÐà•ªB+an»þ€ÄyóÃLŸ8zk|þCQo‰“¾RÓg*;a…³âg–|¼!ˆ.D°¥DU‚iÿ}vŸMÁG®ñ­¬OL¥ä_Œ¶áF,P$1c@Á$.éÎX¾ýÖÝDÈ"!•|+‚ši^=_(Û(½˜Lº¿E–«è‹Ó‚„Þ:Ö_ˆÃÌ•ØH’n@íƒ0£^&g1{ý°ß_Ó¶ ìL ï‘.nÃÌNÛDGb¢Èv}\d|òºröîõ ôÚñÕƒW½¤i–jB±3“d9o²‚¾û£Ó¸Xš1ïHúB=é¥(© Z©2£ÊèlHo†üô•N¹™’º¤Œ?Qè¿‹‡àd±[Z¹º$Ú¨ŒA·‚ÔÊ~!Ù1£2QüS'Ë7œöãñÙ’ þf‘éW<&{ ™"K¬ä'3wëCÊ=„t„pDOnKTH0Åß}ý¨T#yy«½ŽÚëýh|ÓÈÂcFžŸÅ.y²u›q\Š^·r¡¥=›9…£vtg«>öÈ7óhD¨ÁK‹ iÓ»ý%‘ô¹fØwsÂÝ=òÒÔ°•Cèo¬ÅÑSó»HZ½¦Íh6ö•sþGF+Á?)¡Ä#á`Æ.hÁ¿¯P2 ¹£@¸Â·Vú×nouü©ÒjW^#¶AÒ'ƒ€ ƒ`lºe>¹fù¸$ñPúH.õò tíCÈh¶qiWøçbå E®¢úÈíL/ñó2_Vˆ˜òFÍÔ§È‚“¾W£Gfk²GßhÑeÙ:Q¹Ž±›U!2üdkE¸/‹´ êåĸT)·T«° åæûõLþ÷ë²Æ`$AŒÙW¦+\ÙÇ颇èjÁ>"% ð Ú{˜Zo±T7ø€áò÷Îcyæ|sߨó̈« :VñÙ9dvN¾÷Y¼„!"s¢àëÑë'Y |"ê¡U¾ µ‚ÙUùØzzOr$à IKQÏÔyõËQá&ƒ¥^½È£! ÕI¹>™*] ©Ì¿éãǧ8ØŠ^F;wjýnÕy"IÇQ!T.#?ûØFG°oû Ø“9¨”ÉR0tHÀÃ}²³mõäߣUª4“y7›É|ò,ií-sâ²Sóš©ObK¢Qò3fTás”¯X×õö<ÖôK¿*m¤kåé& àQ.èoߪ]–cúQc{,eX}Emm£SšAä[‚UFFàÔvɸ}%¾†|ˆì: }Ûhâ|”ÆM€"–÷ѧËÏ©‰’õêô¨rìqâŒõƒÙçmT óÉ8¡Á!š>¥B5dÀ$“}s#ŒÒ&ï¨Õ^sKÅ©­¾NùÑíwÀ3̧5Õä:2;d¯SÝwö~3¥¯§¦8©‡ÿ5e|f.I",\ ù߃­òR½:li&0h9£›£5M±Í»ºÌIHÓ(¦ÓVÓò߿L PuéØ0•ü%Æf ú˜©™œÖz²½…RññØ=srÏ]ý‚e Z"òÓ.Ö“íaŒ”:ú“íÃŒ oÇÂw ÀIû¤[º>öÁ‰WÇy \'Ò6‰Éõzþ/X9º#íó7l"RŸŽú½/­3õzì—œºmÜ–{ÁJÈFš)d›Ë8F†Fýq@ŠÑO¤Åм–$³„íàír\¥Èß²ŸO¯º:lP¿¦û–ι&Ö2Â@™²03à~Ò…/¬Ôƒã¬D%=â¾ï ¯í}¶,C ›¹ ˆ–¸~µ!6#B„C+ ýuÐr‚!pnC–LÚKK2»ÄáþÃï„Åûúb XÌÁ‘O0.5Ýy™…Ðûö}nü¹QÂ_i;F©BÉzøðØcÈ ÑÊâCó¸ÕJBi¬+4‘Ó‡Â?´£­þrп¹ÌÚÔJÊ2Ãó|¿”_0€+ÎŒë<©ˆXëúE™I©Ýö¢oýÅñ:…1ž$X>bó>[ÝU'Óð“ÊIå•`ÐŒ:…ª½þ¼égØ"¤s">ù·¡%¶+;3‘ØÍÙÏî‘ý­†¢Sf&Ò&§äÑŸ2%ÈÅ DµE’š‡9.w*H¼ÙòÑ„šA”ê–<\Ï& !¢Ê¨Ð'#¥Ì]ç{¢©Ã1E‡^@B«¥wÐ_ûú´3€"Šg º^¼É«3äXjšš@QiÓF¦bÀ%I­¿º‹YNl÷ù²ßTÈäú“6Ç—•!_s´÷#ÚŽ+Pì»Þ­ÎŠ™÷ˆã„Fw>mü0žÄªA¡ÀhñGûüm£ÿâ–Ø¶ ¯ÈqLÛYË%ÀþœE^ÈKgjn~0ÈéO¬HjÒù`±U¥øÙâ˜[â‘284¹Ø¶J-¤¤~TOô\À …ì- F€°bô¢6 ~âÞzè@zì|¼1³E _’¡ò¹‰£3g'òú±¹ÔE;Cb+.b“Rø;Èšzq7¶·ù¹åRÂRŸ^h’CÎcs‚ ùA ²°ëú\ºühtÂH /4vEÂâR5Î_u¯¾o[åóL11Óï‰~“5¸øx”…“A#cϤ˜¦±¶…\Ä'8VsÁù>y¶Þ»TBz¿°\®’Ì¢ãoÉÅÿºÛz`Æré|¡C†ËröÆ…ˆRcÀwÛ]K_‘$RmS‡‡Ç·-¥9WêU·o(Ž:âÜò¯:B“'Ù¬U=LùzÖ>D(‰…ç¶'•dAWô ¼¤y’¥”û+Ý^/9á½þndôð[,ºÓy p>·ìa¬ÙlŸ1&º³.ù(›Ì´lZÒÑÌB‹Ò¼!B±ÉsyOùŽfNÜ¿,æ…ßz™óË " €7iù¶ˆm%tYÅlirT|_ÆÂÔºžÕßÀ¿…5<õ_DÆB>‰añUtyFmŽSúÚÀ²î¯‚Î/wÅRz¦ÿ^¦)<ùÇ£ŠÞƒ!‡;…ï= þeÞFì"4ê¼áð1_ÅÝÃH£Aøóû,y`´äÔŒcÍ«7þÊ ÷†'åýºûÄ•\ôQMšÃ!’x¨yu~¾¸ØC»ŸOv.»r‡³‡ÌT_J¦zðuºÊž[Áø7ÚgOz‹dÚéª!Ä-EpN‹Q?L‹ã?(æü`o OÝè»Rb¿°Á i¤Çáj8Q£·þŘCᱬ(FŽ5ý­.–Š1À0:²ï%çÓóAÑÓÏruK?ËzÑN—}þP ]àÐXì_äÐæZçôŸüž}—s¶ÌøMHùE lÇsBëÊýýÁÊþW’~Ç“¼„q¿&[æã™ê¨ç ­^U ó»Äô†ùqÜ0üäåßã_Öè÷åGÆŒfŒãÞ'J;O¸¨×Ÿî)/Å8Aa…Õaœð®â…á¸øý%ºyÙŠZåõŽ—ëk›DˆÃ}a¤`BMŽz©d÷Y‘Hñþ¾ÞŸ‰jË,{ä“ä(¤»P]Ì⑆ñ#®Ÿœ±àáÉý؆„ÛªGò$m¼¢²õãD ˜ü]–%º£$V\dT% 6ö §ø-ÏOž…s„Ucš,B"еmC2¸Lä*°ÀŽto'‹hë}y"\¥Q}]œ¤°¿"Eç'ímÛ…çÍ]üØ\9€Wù93Mƒ¢jÝ_kc¥$÷;Ñ­¡#È7^ï1¦×fÚÖ¿ 5ÌI0éx8V£)|4RprK|€Ñ%J,'`TÐ [2±™Á…×õ©LDô¸¤'¨`hÞÝ Âãoá­ÌþüË÷××{’;›QDñÐë~¨¶ýœÃ!>ÐG†ùs²‚:׉ÆU‘ÏS1¶Ci€¦y.÷r¶ ó¶Uìƒ/Kk˱ÌR\›¨&þŽ®åj(¤ðRÇMïœÚz‘©ßUBiÐ-’È[“ç_ËË0nÏè!K¾z¸â…™mبo.fEÒêá?`Ú'9òÎ@ß ¨°¬·P™£±ŒÃŒZU¸S5lã>3;7žy±g,º*©Üøoƒ«Û ™T©;SWËà"VñÞ˜þ` ð¯2©þ`Ô´®Ü‹'€i‡IzN¹˜&6ö³-Yd.:ò£ ÆË¶.."´Ê-Üð ì ³26H°"þê*k²Ën¼Úú" Ð*‰Ö§®ý¶s|cxêoƒóUÅ>òO}bZ[–a¦£¢¥3ŠõG9vñÍ4ûÁCðcˆÇÚÀîu/ÿJÎâÏà̦C4¾õ·T𷘻ôñâ­Ýl¥~ZDëƒ$¼|oã¥P•kX³5Rõô¼XÖFûWÑéW«`éãC/T_ta?b ¤:ã̇ ¹ÍL1ŒCHì©jÚs1óËÖxM\Ñ©XUÏ4Ýّס ×õMu ±WxE¥aHñ¹ô†w·¯Åmº}SV„Nކ ~Ëòú¹¹{O~%Îö¯Àþªtê!(ïToUlÅ&5—sq5į$ËqqàbǤÉ#õ!Óåôü;Âû¤,„ñÈÒx,9èb;ý­ªDõ㋵©pócAý}$úè)XXL›@¿ýðìPè‘2y„Œ›þºZh‚ù·p½”R2!òÇljœÀÀ+â“~÷ ñû˜?wû‘mûi§Gôb–ÿ²ØÉ­Ÿ46­M˜¬_™b˜ŽÀaÄ¿ ó=cieéGæ}øt ^_:§Ã×VoVà÷"åS)bcºÑÜÙU«Ïj®Í‚;VÞŸómºÐÁº×÷ߌ8žgz߆ö†,ˆÃcÒzÒ…n%z­8¿ ø(Åãiø³µ/VäJ,ÍŒÍ;ù¯ÿ4•S‡NX¦œøÃªÌ¢Ò?ŒÄØöÓš¼exÄ+`gAv,]¤_ á»Ç¥Nau6(‘©lÒ:ÞIó~±5ú]ðÆ.YÏɱٿq5vÜØzëæ0´]t¢ºF™¸˜DÓ‘õGàFä:¢iÁƒ uì‚4QÊ Ìs¹™óX©:LÏV¯WÈOÜøòòdIÉtÔˆe3FÏ­¢=?q bÆoŠ‘8q#ðÔ {½ÙXéôÈåùžc´Í¤OZ¨‡äÜL=<ªÇ¤AŠyJ{•Ë£rnÜ#-“Sy…½N8î¾±³%Å0…%£Ü¡ÓÄD´^]ÊQĺÌÀAtªp1· W[¥TÑÜßöýZ°ÂOÅÛf&ZJ£<˜"È•R;‘/• ŽÑ^¬s9Ù¹¥…I™¿Îœ#ëò&øâ¢|€ã7š?s0¶¿®ž+LÓHh¥arÖ&3fÞK:2<¶ÃÞr«B8NÒ*”º2-÷•ük\ã|ôºÏñuøÇþUô_ýÎùnãÄYÿº<®ê³Ñóq9ký®WÊÓ´ WWúÍís߯züq’‚dmºÍc}ã×Oûê´ˆ¤¯I#)Oéƒîý±÷3a¬h`#U­Öþ›KÌX™òd„v¦ÒóE¦oRKÿvZÕ‰›Šê´M2T#_û¯œbóa£Ÿ¨Pq&p©ÓçNFÎö¶§‡÷Ðüf>Áï‹TVH^1–ö´èw#'À½5v£Ÿ I(A3÷ÃPé‡Üujÿã輕\‚(ú+äxb„Þ 2¼GXa¾þ±¯jƒ­’„˜é{êé~Í© I+ºFãIeŠÅÎÙôsbwƒ{Æyõ˜£Ç𣀕]¶¡æÇhµ¸ Pti_).ßÐ0Š~xvÏA¥úGö2‹„íuPøBÆn#'5sèzŸ>ˆ›ÒÜlÒ‹F‰¾þ÷¯iá«°,—îŠðx¬)Lc×Åô¹Ó6{î\uÝ‘ŠÖ~þ”öý÷JŽåà LcË›o@n…°,S²D‚ŸÑÅùmù–¼¬+ÈÄž¢„òÙz‘ÒLŽW¯‚=£î1²ÆtÊG¸ÃÀº§Éq³JÀŽ­:ª‘ã÷˜ÝXåÕ*©{UÍŸsÆó{ÑçÅ¡&jùëÌ ËŠ²Ã_wúû›º‘«×[LØÜ×’ø©„ èR%[on]¬¢D딈ïûÅ{âàZÁø1=}ÜihÅ?–ÓÀ þî—§ç aÉ”F¢Z”Þ$jð¢‡~jÎ ãŸ:Éî1¼ó.)ÓHJ÷ÞÔå}<*»ÚWèÚ.˜ök®~-ð¦œã¯b F=œè£ù,ùD§m^hWöÅ!Á«þàùå“çºÒÆLâ:fN®šˆuÐFõ.‡ævþG³v9í!,ðµG€P³£ÝwÑ2Sú|Õ,PhûÚÔ.û"L‘>v,´…P‰Ï’çRE2Wþ®•+uÞÑ$ø+–0üå3¿ é/ý`GTSƒgyq-ç>`ÉZl·2²Ìª®û$²Ó•1‰]\Ñó·ƒ3’‰½•¶'Ä·BÏÐÇbÜÝÞÅÛ“O$Öƒ,`u°yžòñ£äUv„·è­jI:iàr`Áa—´!¡=dÞÂÐ-…oÐqßIÝЇlí,´ –J±p2 tjãÒL)«ú 1ð¶)u¶åhN’H•–4{—ØR‹«¢ÑY²LNãÙ1X.A»\à*ù á—¦8ãŽlX}%L!- +Ù’µñሗ>5‰¿Ê,Hðõ¨çëAÅŽ’Íýpaê\‰«®:3ýc¯$Ï–aŠÎ1|ý›ÉÎá4ÞÞü+‰¼xy Óö¹o_–²O ±d¦êïÑÀ#˜EpŠc bµ›'GwŽ·Zj}ú¸.ÜÍÇíááò¤²Â'‹àõæ°,y‚}žéZ'ÀGg<ùV[¹ƒ‹:i×zÃôP`ÀÊR÷]p·¿d*šÃs¾6Þ`,aIU¡¦Nž uˆ¸Ï>(p›&z™8 B¬³¹ñØ-dfc/ÄqÑbUÓõÁ%‚<4b€Íúb¬¯˜}ð­'ú—NÉE <>t®#@d¼¯•V7i+öˆhîsS ÇH"Η‘'rä¦sx[gÃ&õª¿;‡êào/Ö¤¥ø‘˜ÝQ5“.D7~ØlT2Nn—®®94b;˦<VÏþÂpCuª}–œ\¯½7“Nœ¢æD‘pœˆf$±/@[( Î5ôVÊQ(Nêo¿´õ·Ñù±:šÔXªDò¡¨O8ھΖæXe…±•,î^®¼´¶Ri^ç»q—I>¼ÃµëePYCú i´¯ø5*t³»ßꊣÕä’Wò6ý=6¤ƒ…¿2Éq$~}¨×ûŠ»E»d¢f\y¶3¾RJ÷̰}D;`¸r¤þjhÔx,è½oE.ºTµ6ä¶¼4eÛ)A¤ø)±ûVdÚ°v®fƒN@¸%^*üçóÆ/qÓÓú+“Éâ‡ÅfÕˆº"_v²…Ú_bxñ‰•‘W¿ûçª8ZIê—nÃï&L@&º>/šKj„õ§›1O¼äó£™bEÇ\Uz2ÿ*[Ï줹oóήDz¹æ¼&ó†Ìh®ýpÔc cðR-†ŸE)xœ#Œ§øN[éxKWö_ÀçF-¯·²5èå½]8·2 ¤•qñX±&¥ s@ÈÛ°\M‰n­­%×x4¹&×hʤÓ{ßÇ›¨–ïêx‚_ÌßxXƒ}õ®B_ßÛàʱ8,ÑŽ.‘÷QéX¥²äš$Nzg×éÏÛbsøàB©Æ>{5ªÆy CrkÛ‹ƒðõ‚Ámøðbƒâs €±¹•Égºy]cNt°³}ÅÆgZ‚=%«J †C}ñãYX~¥üzÖò^ X²“PªÏMÖi.@ò­0y#œ÷†j¦n˜t¢ê6é„*Ͼö£Ãô@wL •— ªþ*äîÅ›JÞÕÆK1^É™õ~?Qs>—€VEîšvåqƒè_ñ2ÊÏ̈њݸx0î+"y»Ô(àÂN²?éZ¨ƒbŠªLnëq‚D*xÔ‰±–ó—ÜN¸¨"kn?КwJñrG’11¾Óµ£tñ ™åy¿ß©š™†°% :Å]¼‰Ot@u x±—'Ex´7«êI«,Âû­×åË»­êe¥;þ¥‘Aà¥;±þvK ¸nšM8â…çm”áãR¶ïPñcMïåžiW³˜²µ”£‘îqD 8- ÅuhN=XÅÍ<˜ÈÊl^‘Ä(‰ ¼9à-Ð’¿Gr–ΆÂ)Äùا…÷þßC ËKú¦a›²u%‘¶¿æd§ÏDìK¬hf@ëA½þ#AÖ_VáGá;WzHö³žs¸'›d£¨Cb ‚iî /D@{"ÿxtüU`$œ‘¦OD~œA\|¸mÜGH7„;žr° àóL¶¿_Iè}øåíÇ)ЊJ Bˆ6Cü,·]Š%0ˆå´,‰!‹ÛVMÇ%_H™÷¹JÐ!¶Ü¿7u¹ÜŽ:øá_‰ëíZúèqÄ3ÝŽ‹¨îïÇ»oÇn^ï;‘±‡º–¾Ÿ_Ò¶(X,šÆ¤À‰bÞÏ_PbIyõºYt#±Fï¦Ï§Òg¹¹$M‰•´¦/¾†,¬¯ú‹Þ˜Q ¥Õ> úˤœ‚Š®6=’ )Å(Ô]ï=ïDsPæ×#¼bÆëË¡S„ëá6pÑ_ wú©ÛÖ >&fýØ¿Íî¿CTdŒåXöÔQyXŒ¦nƒ'¨ÝQ1ÝA~iNòc–Ê&å!tôžñ¬3~é³W•‚¬5@P‚F¨¬¬ð¯zºÏ!4mž]8λ43:ñ  Ç5Õnî¨uŸJëEoUÌTŠ£©šJh‰õéŠ2~¬PIÅŒ |ƒSºN—whÔµZF#¶'´TÐ¥Hõ‡“… íû·ª.>ZÝõ<áà8ýiLJù„¬a††I•sR Q)…’¿«¾vÁ„&näˆtü5L~È.ÿåj×+/!ÅA°~Îìs±ùDÿm% VîÛYQÔ' \À/µ½ãµ<Bd[k랤ûZúŒú¯Ktv`Uµý„4áûËþ€YI©Ò!ù E„Ñêéµ0ƒ‡Z!•”ìQŽQ,ÄJ©KY¿î\Möe­%YXJJed¦Åë±ÔW‹Ó(Ý2p²a5€ý„5E]§“1³ß8ÎN /AèŠï¬´0Ä56¼úYˆèB-PÂk¢Ê+j®¨€Ô23ÍwýaÉ„¿_ÿ{Œ¶Ç+¾gªDÌKúð×Õµí¥Å*eÕn¡¯Ï½ŽõªÞW¤PIeç}¢”Í!ÃÂlt¼¡ÓÐ¥NÆ1"“ P¼À …]µª®>Õé[u½ÿö¹J2"À£ýØbWÓø¬~rr„棫—°…EkÿWG•¾ —[„äQèoŒÿyßPÑlÈ2n¯ØìO°gY7߹᠈uÔzcLÔîÉì—–­+Ëìa‡Øž7GH«Øy#ÙØ/â¶">d{ŠîVMÐ:_wŒüd¢o³gŠKâ C-)ƒ³ò åÁ ”t6Ž,Vc€¼$!l. ¼m³1–™Ü5¦XyâzæM’ŒPÍ6#Œ*e„Ï]~Aû_«?ö/S«¼¡`p>]ûјPqRÖš¯;»âMK:Üïï561Q^¡ù¨]3¤ŠO‚¨Iž*EýƒºMrüm™|$)P Tʲ¿·gÔÄž¹ª!Ö“Ç/CH”ºµ¤ßÞ» ÊBý„ŠHm}ðYý° H:¾Ñë_›ÖO-ŒÑâ`ÊŸìxF xÑñ:iËÜ@?¸!¬ToÒ½ :P‘”~lŸëEuHÜ\µÓ•qe í,Ζ;);“ßX[ V.wÉ==G[Y€-"zÑÊ>wüow¡ÅzÖQÉàŒñêÄÆ@£¯âog‘Å5eˆ1Fûë†ÄñéKåîŠð²º¯û÷ FÒ%©mµU´U7¯¢`=C£?ôUŒ-JSÈÄb„ÔkÛ |æ3ÃŒ-€Ÿô®T¶ž÷EIÅš,2ÖhAé«is& gNßZÿ—¼ #¦Îð/sì¬è”ÛûÕø|¢ÎÁË$€è6w¦ÅÞ|Eˆ–â/ÙÃ7â<ÏÅDtáí<@],"ËhTS3îDésJÀLiøf½»ífÄm˜‚õœ7>3ŽÌ½Ê<5ÓÈP-ε’ª9˜–Pw)ØEF¢ÚŽILdÊÓþ¥ø†÷YŠ~ 5Ç£7š¹±Ö÷X^ýÙ:ÓŸòÖZ.È;½n¢mçÅ ®‹Ðýén8ö±AP:B²|¢Ç4JV`ägeèG{`Õ%ZÿÒ?¾ ó&úüŽ`%n· ÏWâ íù3È”¯KEj–´ý~X€L ÎÏ#|ÓIh:ZaÜÁŒkDýdcDåêñ5kÈ¿Ãs±0t]>„»Ööon-(þ´¿¹›½æ0•+ç‡tI8SiFNÎF_:‘Ês\g{Æßßp…¼œ‰éý–3 ’˜ ?"Ÿ²¾à%õÁáÂ'!6ø£e_§­ÍïIï‡k»¹•ÇoÌ®xâ},2‡0° ªÅRDÛ·%+7Œ3üþÍìØP™º}nðˆ‘bÑ…‹ãmßïÉ¢êëgk£XîˆË(ØÏÉQ) véð’_êF³xÍÜ,ýíëéd1h¢yʾP}Àe ü©JwçõÔ¤}íñ{’O„`&K›—J_ˆd?ÓÿGãY¾>“ܲj!y¢j$à\Åfàá(ѤJ… ‡âß+ްKQn]ç'þkR`ÚáˆÞÚ0ð•üaç8<˼eŒVÞvA~an•°u›ý*BE‚xc‰ÝûP¼©Mjµá¢÷6XÉR˜˜Ô»dºhZÞ£ãså17@ÌWd B.žúê~Ónå ;z’glΟûá9/HdΩ /‰½… ”ð¹ø£¦{à{03þªÎwSˆ•¡C’á{7bz)ýÐÑσ•)ÜÖj²ÝÂVH2 ª½1*KžþºM€å¹R I…ß[ ¯0= ó ßòŠ‘I³±5+çé›K [·*uD¤v±(ü‚·$&¬TëÄk¼m<íi6Dª¨‡•µ€ËòÌÆ>Œqü=(¼¡yYÊ¢Ñ4]r¿¯³¿o1pcÑnüKmUPñ2ä4  ñ¢Hõ ÷¦÷Ì$F’.t!$ÔjDÓäXóecl?(XDÓÙŒô¶æ½yIÚ«àÀȤìCK(XшÐÐÊ ðWÌJAïY2!Pç¿û{QrúsýÕ¢–þÛ“(¢æây÷ ²Àm»•vçÿù³ê®Í+eKöïé‰Å£e:q$âJ¨ó˜ŽQïOÄÜÆžÉ½«Z]îý€(ôøR‘`€Ãé¢[|úp˯NIM™©þU.@öÈ uÜc*KÒó+ý‚ 댰/}ç'îÛ† >OÞMâž÷â64.wP©F»#Åc{ÇÏþíuX‰»CØ{B‡]Q¡ç%¬µ_,ØPÔ²vyœÙ³sÖõÝ3¹ Zú0¦/bAK”e¥´2gz Ÿ óÒ’~¯g^„þ¶Ççæ ±ú–†ú;"›ÙrtÇ«iY–rÈ&p´Ð#c¾è…G5XÝ‘-æž'{X“Tóš¯ØxíÃé׆ÆkÀõ»E Þˆ©€uÿ–VÖt—Ú!x$¿Ô¼¯/½½;J°^ˆÎº6uÉGbÏYºV ¡¹V³¶dƧlî'⦈úºß Ÿˆ¶Ísƒg¦%ÒŸðƒËOœÍÉí¥O6mg•:ì¡ÉÌ×I»àü{No¼XPSƒ”€¬Ç4³ã‹‘ ·úWQe÷ -ûW©IZ?D2þ–ûç•t®Hä.53LŸ/ïà(^÷CÊùkø)¯uª˜/…¶ˆ@ÿšjÀ¹3h&Û%ü—5Ô Ï&ÁƒÊ‹(y÷ñPßëWo¦ôŽ-1eÑ‹“ôf«qPòN’¼»O^â{/øŸ²Ñ1Ð×2Är™€ó,Áø.É%ÍÛJEô|1YóëÕñ+å^Õ™sµwä&pVJRqÞ˸×"•µ«@;}ù<¦ëÁZYAÞÄ•å8n€ŠcCÛóºq¼ÓQ:ó÷®†úe·˜¢œó+&ÜRµßßuœx>¾Sì)WPÉôýRaÔí;îú8÷ðǾànÂÚ"Ù%ԪУ}ôÖ}nqÇöq5ùßÅ‹fÁq)o@à¸#n‘÷} Þƒ-”ϲ&>°lT+´Ä²è¥&ÙøUºú‘ž¹ðE>‹Öî:ù_Ókd¹ë-í ¸VÝÑ_½î^ÂV¬*ÿ7%–„(ʵ‰¹*+ 9–n ÙV˜Ü›qoÝøZ-ñ¡¹>À«T6×^ŠЄ3Tó­©×Rµ+¥ gQÍL‚•HDø ‰ìª'u¾¦™‹·CÈ•øF:[ ŸÓS(ðùÒž”öâ÷Å´Fý¿VÚ¬A%:«ß>ŒmpîPÌ~Ãí`Ê) ²¬„Óº2Óp.ð]ÅUû>1v%ÍìÓOàJz­òJK½D¡Ù§ÖCkŸu6¸P^ž‰®Õÿã—"‰Ú‹å_À}6¡’ïø™Å dGs§Iè•Rù]î_â÷eœõ÷4•Õ4¤*5[_ù4ªÒdçÐ)­×ZD!¬ù÷_ÏWÌ(àÎÈìä#A~·–/-¹‹Åõ0A‰ :ÒÖÁúí“ï>ù“ÿjÑrFM¿•?RÏ›¼4¤!´AePªç{½ÈZgø`úW‘{â^@üZŠ©O<ÏcŸ‰ñ3MyGÜ/O¬Ý4ÒÃô<¨ AŒ>é j™ÙÇÖƒ,×%%ÙuZÅuðH#Xéºñçß4qB-„k°Ò佫øêøØ¾Ó `Êì—6(ÈÎ×S—¦·«Ø–¦€°ªH+Ò;[æ}ä,%»"ž)L|zIs¶¹&™XÚ¯7óðáªä ÈýZ(Ôüæj ÍqVçeîÃýX´LŽüÃéÙ‡ª´G³p ,ñ:JƒÒç¿ìrß”;–¼ “¬æmèæ ¬ïßãÍÚÂ똇/• ­ºép‹c7x©$?ø@[%˵uuÈè‚}A Š`öþ«P9ž@œç]É@$EñÖ.‰Ð+æï)ù¼ÿÒeëC›c©‹fk¡YÜÉ?Š®žZ8ËÛDÒ§XFZñ¶Û_â}€äèÔú°?I¬iîçP:ô‹ùâ&ŸÌÛO‹ÞVH·Ð_aå¿^Â<Ä Š£‰+!u—¯Š`2(½æwY>ñÿÜö§«¤l¹Wû®Y©¡.tÌlÝá9«k/3zù„8Öˆœ=£‹Õí@Ø‰Ž½›\¶/P¿¾µ&`²]å/í1[–½~ø˜«Lcó)=ÞýôëT PdT4„$Íf+‚Èßø°9÷r¼Eó¶ä'«³Ý/„õ¯`=t)œ©¢0)ꙉ))uK˜Ù œ‡F°ß§Žg%ìÕ}Þ»C†‹N_(•ž*ËàŒV/x1#û+Š Ž)–â&̬SYl¬XÎÏ]¼¬ƒ’…› †¿0]¥¦ÆU+,R *ÿ:°®C¨R›r¬,]KÇn<‚¢V6Ƽ]‡eè´ú‚Ÿ$ÓŠ0åÊ7ȯz1ŽT‰>Ñ¢µ¸Á––ÇÓJñ~@û¡–5Aɦñï—éêÑ}¼ñU`ï— ~V½•ÄNµ\l¹òKÞØ[!~; ÷Ç(\e—yê‡N²ž>ßûë´)õÕÉSö‹_¾°_PÖD4ø@ÅC(y8ðÝ|ër÷Œƒ øÏvƒO«—ÌŒM JhäË¥¤ JâF„¤yöÙ_A3ÄS‚ZrgSn¬)Õ(¨søíY*qˆÚ¸‰sžZ±·êÖÇ6I±-?ù-ðiØ$33B éOˆŸ9rŸ¦YQ!©ð5MÏPC5eXÂìÇZUÆùíkoºu ãE÷ñz·ãÙ~’7µ<ðÓW<'·Žže{½¬ÂPe&(IÂv[3ÐAªá³" Hn!‚¡X™àHUSœÇpLM5…PˆžUÆRœVßy€ßGáñ`/-[øCÊc£ à¡ÖB°=ˆ5Z<þú8™ÇäÄ`aoË/× ä]L ûÙ|••„ët°z¶®—BÆ2Á:Ç‘|Å#?¿±Ä¿\ɽòßÖ>še*ò—Û®³™ÝRaÈŽÝf³ ] ¦þZ#¸ðJ‘ømáÌS!ôèà”ÊÊG È·}CDúEìƒi)Z¼ÓdCÍKaGbÈ?ØjöLo–;…0á…¨*¥ð0è=Õz´ôv¿•áÿB»Å­g×ÈK\ùÁ¾åŒÓ'ÀÑey,™±6ë7oÃê'oœ£” „'ŽþâÇðV•7 `Oéj;êÎPIJYZŒrv&ö‰‘‚n×ܯʚ mÍ“âÖé³Èü‚µyc™ºÓg)±&òöÁiE §·rrÝB!â²2={ÿuYúà»{µ‡dM]nG^ÔÛ+(Öäã&7k¹BÞÕ´&‚˜CJŠâÎãî(‡£÷ê¯ÊÊÆa’¦ýkÀ*zvܪø&èÚtM+¿íâMý×bª~¯üèF! PÛkœXp€´ôlŸÏ¬JûO.H¨=,ñ~ô´I (‰¬ösUÇRJcà÷i±úÏoÁ¶¶GF5(ù÷—OsdÉ &®tPoF¯ÆS”ˤïT5ö`hòœRf†•kw>ºŠbÒßÛøc†Üó®$¡ÿ¹;,ß'G¦T`1  ïèÄ«Y5Ô‡ü‚NX›€—¹xÏ´ÖÇËNS ³öšLUñFV ¸ô€Ñ¶A–”ðÕÅSNàEb¼Ñ²Öæ+ê/BŸºÇø\êG¸&?¿b"1õ˜¶ìdÔÎ+”e5!Ìûk.w½ê£ÐP$É@j¤êPµ¼Ç+—8p›ˆ`yc£Ñ"ïÄŠ•¬þmÑSÖs×0 t`:DvdsØÇ•œ\±s¯þ#èï2“Ÿ¸òsK°9CLÍS^@í`‰A¤  Ð$¤oG¤]L¦gÉÀk†pÀ†õúÆö7d²Tè¼<ƒñdZ¬é8þíçJ@Î,+@~®#/“w¢×õZÕÀ@é™äð‹é³Œügfîäïó–,aéÌhüß/ÖxÆ\­ñ H2-ü%ðrùWáÙMˆ·–ØÜE¬nRÖÈ<¶;?;n/ÿê-{…NHTÎ%D;öp“so±ô#—ÙÆí@úk.ú˜SÑVw–Ö=*¸tpuÌ‹íM‡D¨î½(\\D¶Îy­q­·ßvm©,½\B/•oXÊã”"ܯ¶ΡgÕ59‡÷ …Àn "œwÓ¾‡Òžô¾YØ×Ù-ˤãìÐtÛpÕýšu)œÙ°‹_å­:tÙãå•-ßL¨iíƒÌJdܹtÿ+ç$–Ž„:q`MOUúù-à_Oè5¬Ž3[ô/˜I&÷êPÁ¶Êñ`é¿é3œójV’<[këW£©£¶êsÌŸ•¾ÙöJ^Lµs|Ú°A+zß^<†ž|bzáÔæ³+€UõÜÙŽŒ,RJo|ïP'um8LèÙΫSòkxÿ-GýÑ£ï}Z9=_ÏÜx¬øæÕ÷g,hh04Æ=€¢ƒáeâ\S QùèúËÿ!\ÿè $«›³¾>²ü\ˆîU¿Hûpù×Wýâ~O¦ ØæÛªa‚ﲃn,Ûɘy 6Ìèc}¢ét×Z^ÇN±\È×¼¢íÔ„}S³¾8Cë´×ñ—yÝ…Íá­XªŠýX˜þˆ ÈAxq¡»ÞïE‰‘G›!ôÌmµª0y—Vi©ócL¿í‹ÍÌq`‰V›™SäÝÄž.M@_½ŠZrB0O‰åïen<ûúLû=Æ©%.µ‰s’b‚ç“cΜ ´°y‰›PÿúoðùhÄjÁq  ÿíÖªnP™ ¬`b.~_(Z­YN¸á>%S"ó·MoŸTuÈÈ.ñP‚Î3p3?4 ͆–GòAWþûªÐß ´¯7I5+Y“Ô¤ÐrÑX¹Ü¡âçÄŒHe¶ñÏÀs5× 6ëRK@/__ÖJÏÙu Ë·{sžñ«Õ%ã¹6©_™‰Hjú{Ù§}CÀH^rº ú«³0¯c„|E4Ò9|¸ãƒýK,‘ÈP I9¿@/[}pÔ‡›}liA™Ï¸ŽO„x»½š‡÷.¿yš) ”ôYÓÚÄMÔuKµnLJ‚ò’~ìs'÷H>¬w‹"ìÒ÷® ’CNt1*ÙFûØ{÷ø2«*fÔ®¤B8ÖÿR ?’ÝÈ#yÖP*þ:­<.'°Ô4Ø·“²¹µ™>Z'¤è?¯i¨úÍÉ^Dmû¯>xôøZÂ\7Ë&Pâg½¥_̲Aå°" B)[ê·ÚK0ëÈmî.ué6RËÊ‘î7U-¾ÎózxöûšaýØà¥…xW£áôaO”.v² ùɽFÎ]ì#GiúÛ¥ôÅm÷jÄ›OŸWKõeyÿ5?%áÏšM†?Ö¿ê|cý ‹þʈ‰´4BýŒ•º3µ ©ö÷c+¬Š³’:So_-~!n>ZÇ2V¡§öœ<º„F (Åý†#Yh¨ù»t.çž ¹ùJ¥¸ŸU54RÈG´>Šoy/Ú­î¤?2¿*¡*¸‰°Ð·À5æ‹Û¤áY”Ø?éj}GEól†<Îm/D,!íãæP•dPM´ÈqÏñ%æîˆð2‘D*8x»þá¢Gó…ÅÀtÿ•ÆaYk<ºô×|o¹Ù}ÓÊàª8z¿Ìõxa#ÊÏ¬Žˆ™ÝpV+Xñtàûï^Ñj6ÏOǤZ‡ùâFÎ\9L[¤šQ拜™É©—MyáVç»Kƒ§•ü·(ýQå  BßYgµ¦d^Ü«| €eÅr ‰I»ÿ¾´Ù7 &%­! ;uI‹C/×ÍÓš…£`èâJZ²¦}Ü ¥LØ^Ñ=²c²#€0ÎCæÊÞc8°³à¹{µ[σL¾ôþkᧈ˜Ä¾Ë'˜ ¢ð9%øÙ*^p#v@éÅ{¡>&€feHÁÐ3+N ÿd¹pFGbŸ¾˜Rsk ÕÿxÕ_y;6ì>]»«£ªÃ”;4ňgæ²íþE¶’å’?ƨËlmšè;̒ι$4ñÍ¢ö¬(•"}eDþÒ›ýR ͲÁ| )ükΈfÈr/Y¯£yWoŽƒ‘Wê>±¶Ø×Å…'6èCbçBi㽞#§“..õõÞó4lºQm¦#ÇeGmÝR|8°÷¬êæZó»ýV~¿•3aVrþH'ú´t~‹˜Ä‡ÈuËÚˆøöš,Wùwsa¢¿ºØ+Ž>ãH(Všà>pmkŠ·2K 3û:zË_ùÉzQÁË·üK•Yºéë#ü‘._ãŠè¡W¿Ý±d¯ó’[pÙȈëCøËõz$ªKþ]‰ ¾¾ôu™/“#6ù§‡·Øq®hykõl=·.ïÎo¹Yª¿鿃…€•ç+XF~¹Ì†+ÿŠà¯öR®X„½–ÑøäÕ ob›”l4ŽHƒûý׸jcnïQ¥ÊiûÂŒ¦(€òrí˜áÊ*Ã).TĈ!öXCÜÃq7[ø¬¹·”¦MÙ©V-,³¾9Sò.´ÿ–þQSôÁ†ßã/qþ+Ji)äõm²³ù"Ïʇü‰´[£ÇãæÖ]Uˆ0p’Dr‹¹!ËEs2NDb›}ŒôœÌ–¡®˜:ÝN“)±¶ V~-«U°ë†€í|)…ˆjM®eA)£æ=Ôqæ®læ›jû×êú6oî}¾Ú~_œ¼Üm#É<°Ö}%8Þ»ku§µJ.[OœkÔÄÝÐDñQˆ2†R(µer#lMŽ\`#¼+6˜·Žj9i«`×뉙Ô\þh3QS¾“·ÁûÂ@\Ý„ìÈ«y9 »ñ¶¶ÍÊ(–±¤ôKñÉ^Œü‘äxÿÄE…QÊ2k¼ÿׂ±¬g\§a‹îÖ©Y~£ó',êN_H:‚cÏ8¯á%ùÇF[\«¡y¡î¥Xxg1,Ç€4˜†Ó'ù‰+J,6;NF:ø]BRî|!¯ÚN·j¦|Œdö|å¸B‚U€×Öè Uœ÷_9×gØ…õµ*³ýùÞ‰ßö$­²Ä/;麊Ѓ¯:-\§½;>šyÚû¡Qãš6JWÆuqBé‰(ÝcYgµÖ(§ öÕaóº¯Xô,ÙMÛ æÇSIV}k}—±æ6XCp=Ÿ°‚oܽà\±’o7>°ð c¤QÊ´‰eîÑ+6lŠßUÏ…_U…èö}Oýg)Ù©·~›Z_òa?Zµ¦¨m¯Ó£P&TåÐ2S‘™ØøàõërIœ‚êY_›­×ëÑ”*0Í ›x9yéÅvÀ¯>Ë¡ÒRê½ÔY,„ÏëÙ&-]³2-ãej ª&ÇïÏ+ûÄCÝ‚0‚ª’ŠÉ>­[è˜}ÞA*íÔ$ÁB`Òe{‡‰# tœp±>>˜ñ:Ï¿DÔâ™!p/?À£'f¬l&µÒbS›7Vg5¸Öy¦…Q޳-§·iÀjlmò¬÷ÛI‹1•Ö활¶ï¨RzàS#©d]GLz-Q}Úh6%µÂæÏõ¾AeR¸Þ¬ïŸ¿TV Èþ˜]+S"‹Q/lEJwÆvoÝ‚ì¢Lù’u„é¡¡;PŠáôÇš½‡úÌ--º:ôÇê¡tx`%»Lô3U*åqEÇw-2ƒVÍ’PÌ#7ÜøŽŒ«hE'8z Šè‚¶»’VÊU´†ð‘ºuùbþ ®Îߤ(FŽ"Ó#ZU¼¿ý¯Ñ#ù:‡|Ö2È­E¤³lý©jÿõhÜ`?jzë‚ñýgÝÏ_¯š`6,H´­><Ça†ô¤Xâ(b-ÿ—vã(ýåöúu|Uíð¶©ÂZ”ÎuÁÛêÃwÜѺîÁ;š+ |ÖzhO‰x½/å:8õc ,P‹l£šAäqÅ;âù™„Ð×¶2L8¡ÎÞþμóð‚/jt–?¹u$ Õ-ÆúíÜmlt¸ó„Œ¿ºu G®u@\fg-D8øÏjÜŽÏ9Ëßү݀ЈdFÊÄ;Vçî×Ýæ(`rMþðB&Ž ¾ßF{4Ž1 3R"GýøÙD5‘Ï ñ’|"ÚåXzú„ÒFŸB"Òš¡€ÛCðt€;Öúð}ÆK¡¯½f;C:ìÌèáWV¼°rÐd‘ˆh"bþ-uø>5SDšô½r͈“öØ¿oßqf¸GA#.¶7"e‡Õl}‚ÿ³"#ë¯Z®c kd™ye®Å Ý‹tO—L„œšÞ£Ó—ñ FñQpÏuƒÜt î^è·já"çëFƒv!£/×qæVvCÕñòÆÛùzÖ'ݯr÷Ȭ9z6ò1ÙKˆU¥ÿz _¦ÆFüH3¦‡>ÓÐ>“Kà£úaÁ€'9¿H H›}?ŸŸ ä š½|ŒG¿éùZ«p¸˜ å›%êT—$ŽF¥EdðN¿­Ž‚u”l= !ÌܲCñ,–üÝ-ï\`>y ‘‰“À]q?GmEP,úpiHbCZmÿ«>u§¶\¹{4å…hFÕXÄg ý’ƒ ø¦+ús·8_p‰}¦fݺ*6uF‘Ž^*쩾4”¾h¤·~˜Ê.ÙÜlÒ=CÚâ=»¹O'ß çˆºýP¯îôò¯?Æp7¼Þß鵸OÓ‰åS$ó-ñ8z²¯8¢‚7ÜFük)~-ÏÏÎ:zu,eŸ‚ÎÖƒìÜ*+Ƶn:ìÎÄ)ÙÍΆµ¡¬+c³#wŽ‚XiÊrƒþ–]‘^ì-áZ‘ulÇaÀ2„@äéþ‘[ô^ –,KMñP¡|Lû~ÿ4ëªcÔÚÛYv°ýW ZeÅ€KË”GÇšvŒU% /»e@}£v“}Ϲ¦×$þœ…ìÑÎÑ#´¼ Û_£ÃêÛ`·D}¦~¥¥>š„ŽÓnʱÕ>4÷-E $Ó5†X{o¨§éGq«÷^O”"•,…ËžÏöJã#¹¥˜°±dûêÜ´ÃzøãÎgÛBû"}Û:€º¡’8” mš¼bXTׯ`;ϺPü`ÖxÑè Eªx¿Æ¸W÷m ¬(hVÂÏwìgdÈ™f{L A‰Y¦í†…[hèwDí ßTCu1G'^ê}â9ùטÛÂY yéÄJEÕý·«Äh=µAßi^‹“Ø% ¶ÒÖ5cyH® A™ß¿„£H¬ÂõQåå{€ ´B=!9“;ÎáNƒnR ˜ „å¯ÕÿFóÇ+€zÿ+ò™Þ3Œmtc6ʾ'œžI f¦*àü¾¸yÉÇ0hp42OqÖŸ+ÆJ[vï/[œ~â |HjtöeÒFlb&ο¿§,&H'ÆÇˆÏò ’~nÅ?ÆÓý cp‚9d &–Ø.@Kˆ9ºR;8¿˜‰;jŽr C1|ÐÅç»a¡}¨ô5£î¥ÔRœtœUyƒ×a…cþLÂÉnfœEq7U‚@?ÏÏÕr^‡Ã’‘æÌƒá~k´¡¢z´ç*µ£ Sim´¿nQ!ï‚ó=šqÖ¨Ú%™3Ú¹&•šžü„.Å@²…,|‘\¬AmIŸ)CH™ÌÒ70«v¬¼5Ãaô@þ— =pîëi#:5>3R‰|û7å ëÃðÊd*c Ç­È˜' iAñÌ„ç¯ÚsðYŽ€¯s«U _ çDÝÄ ÆWov5?¶ìº¬ëˆOn¥'ù× “5ƒ[ÝòIyŸéêgIT Ùµ)j¡¬åªÓ¼ÀA퇻š§&‹óJr¡jH záá…W¾Í'“éüû‚lù¶ºc‰ÖAâìBI<"fÙ×çö¸Ð7˜Úùu¨èNÏ*%…1w¾šþ¼…Œ­;ðàÈ×¥¼QïÌoIàNÕrZ§šE«w´f—ÎÂCF¿È<µ}š$öGÆâhY} ÷@.êãíÒòi ƒäÀÓyrÏÄpâùñèOQ=>T?ë—«ü,ž¤”ãv×0:S¾‹©ŒC¤þ€ú£ª­q˜wλéqW(êêݧIJ÷Ôr¦óºdã„Ê׸ƒûÑØÔdÙ^ç<YÏÝéÊ/>@@mE,‰Ãùd¬ŸƒÔ-´©^«N@ðÑËMž×Ÿ%Ò¨§¯×âƒUUixd!W> &Qɱæ'²„ª–ŸÅû7º—tqÜàgaM!›Ÿ[ëä&iZÈ‹ÐÑ”—:pß Ëß@óýqاòWœ)B(? ›^P˜»Íq É”…ÂïeßFtk¸*B:jì–úÞ«Ù¢o‹Š\ÙÇ¥Ãà4õ3E\T‰Ù<ºy@ê¾0Gê&¾ÌÇfšª h– f­ôš®T”Âg¹dµ1¥•³¹Ø|•þÊby‹ásnºú_ÏÞtB¨ÐÿúΦ¶ì“€¶–^ßÙþàúá3t+?qTIêË}’!ê½)ÆQ|‰3Ï#{–·öëCŸÔ;À϶Nb¹‡~æ?éÃ8Qa½“^CPjˆ}¾@ôÉ‹mæ5OÐÚ®W¹F€'lÆ/m=Î ?J”/«¤ì1ÂOt"V¯pg)¦žÿfûaЗÊxa^Ö,žß_ÃäÒiÁÛ”´Ý`‚õë% ¸l ÓÍkÞ?ëAu° LV3ÈHlµú-™¯çùÿÂPmrÓêD‹s%ât„æ„OO>šÔ¥[hòçÚÜS¤u3¤ H•V‡¤¿l;Š"Ê éz 9Hî’lÚñW£ª×cŽîñr.cúÔå|ÌC²0|¸ëææÍùì´@ö”m]£sŸ‡è_ëu]»¨-yùý¨v¦côÝňú›ÞmcŽS +LƘü}m©Ÿß†Ñç° Én­‹›•°$åãš"ôõ¥ØçlÌšN¤ïIÆôi}·}— ˜Ç݈¿%ˆ;îì[u˜c'>Ÿƒ@0-qˆÄ¿¶ÄùÑ4]eƒTˆÜ°ôrC©£c¯•bj­.=¼•WJ”íÏŠÀAVŒô„åúGè:©i‹ðw”ÅÄ„–®oÞÍ qÿÓùµm±AÖ×ÂóøžÊÆàüMÜG`¡TW…àh>µz§æÆçwK~oA5+ „‚]ÙÌ{Œlf;c »\®ây’È ÚÂÚ&6̵ŸVBëvA¾_8p1Í d™l¶rº©ŸX =—;uü¿—%mŽV¾Ð$”~Î9X¿ó`q°𶹨j}Uì.vׂ4ê<`´êçàlÉj’7:ñ¢Oè?7€©¤ºdÙl¾œ.˜øÎ½¨ÃݧÌ.‡¯ÍÑ>‹IÐÀ,ºóÛ‡$§Oæá—å-âÖñ™î¨o}vûETêø™%Ÿ‹Ã>ˆ¶MvPWyÓ_±E)_’†lƒEœo¿›“WKÛ@ò*WK[çœEtyÆT%|¥U°=¢viòêP"äÈw$ñKGèÃŒ÷ƒŽ£ðwä;‡,ŠñÂGÊšö ,GiÐê]kk´‘›’mUÞ™ÊýPÞ†­’Íè—Ý/ìH;!O KÆô„ôÓR…CxW?íñÞ*üŽ£“}yea×jõ­0ÔÜU\ž¼å“ž¬qQ9ÿš–™Î6æ{—R¬b‰_<ù•M^’BRD*€wmÃ.´ûÀrAñ/ºk#á°óˆµ¯$ÖJuM›‡ž®öá7—Š|æxžMÇ‚˜å*ŠÇyé[/V`+žgÂ×+„äv݇ÌÑwºûV— ”‚Ú‘À)+$^ ä‰é2bñ%¥pîæßWÃN5ÓL„ÑÜ X‡R»ö+0 >c7aimzˆ¥Ñ‹Á£»ô•½afÝÞ׊æˆk/‘‹¯¿PÛVÿ-slEqþøE¬xa¸Ë1Þ i>ªmÄõòˆq·,Óy¦…Bàcç•çú÷½~fÆè(þ{¢“ÅlOƒþnËïW¾iÀGímýŠVÛ*'½Žnìùì6øˆzeX³G…7o¶ß­f`¨}ö†=–æxRYi‡”Úï<”_;vÉØ–p-ÖkûÒUGÒnñ¥õ|¥%ú¬ázx)Bœ±fùzoKO¸Ë|uFG֢¥EÈÞQivXò@£-nQ?®L²ûëÈØLKu\†_z!¿Jþ »Tø– µÑFq7ߪ‹¬!0YnŸÍeBÿ†$†%°Éþ}-5H“ù•á‹)/î£1mámJ×I® Sõ+‹ä¡+FéÀxw“t<ʇy¿º{ÂDÀ3ãPÆ‚3íÉä½®Õç½×𫲓ˆ¼r»òîùVYß<¢è ¬4ïízÝ‘>0Ená‰Rå@O É¤‹€,5‹ bUXã·°¦ð)ÂJ ÿP»¬DfÁw°ô‚:Çš2¸·.ãè9ÝCJ’ºt VgÓÁMX»ÂZÒ-`¡ãSÅ6õy[Bh«Öó⿲XÄß#ºë®Ã bQ™¤á»N7A«eV’Žºz%Á£¾ê¡(÷íð‰†×.Ãê öÙË >ÙyÌSžŸ>£6ß!›Á¦³¹„¶7Î:Ì TÍ´8»¹©]jIvá©ºðƒ ªEMøˆ‡ æžYK´•¦Í¹ú¢Ï-ÒŽñƒ ORÛãê3–[ç9¢! A#@’%ãøŽØ ¸UL,T\O!O×EXDµ7?™øYZ&ìƒþÛ†Vû—:‚GÌp¿ Œb* dͳ¯k,ßôÛ&S=n6“Z§3Ý$Á#ÆÇ»?®45†^®]ƒv¶ø|ùœ­<'ÓÏ ðùLªðøÓ¦ý€Úç”pŸÊ°vÑÀLèTmÌ”»Ö‰ëäõ&EÄgÄSIo~D£X–Ç^%äñßÐjÅJehaiï´¥ù„>í»h_‘è„.¸™‹ìKÐpk>s^U¯«;J|®J–ò.^¦B ¢Ÿ`ˆuaz ˜Ndu?×ío"àŸ­¦Ñ ??gÂ"d BtJ æìŒVf[hgââäÍe d(^Ìû­_W²õýr;’aNÛe¾¶2¢úÑæ·Ae2µOMÙÅ*Ú¾¢’v3ÞCC—•¿€3Z3lQ¸GÀêr_J¦]Ûã ÖÕG«gZc{M®“t‰`F™¿î†»7Ô¢QXj7Ò^•ÇÊÉ °BÅäÎ]CN˜”Æùò u‰¥qFiÜe£&”ªx¸2ûI:mñ‡]ñb®·XÔ¨MÚžJO‘Ÿ@ ñ?ƒç—Y>L>D)>mYC´Ñ:ö°]Š7†„Z¨cŒ|CµxIêD×§¯ÊÎȵ(]€——BÏßj}˜Åvå†ñBqë-±`Ó$.h¬©<;ÐHž• ûwÄåþ?kæÍ³®eÙ½ ¿tžó%VÔº›™Ù# nFbÄ·IY7Ù†Š•¾ÍJôYÒÉ®|'pÁƆs3°Ÿ‡YÿY Y9MTœ „äË=añê xDÞkðÇ}uIãƒEö;~d?-ô 󺼀´—#ÁÔ«(†¤é-ÌÅ8­î†ƒüí†þßF@àæÀáIËÉ_:ÞU%t9Ó6>Í×øÐær®­ :G•—ªtß7ò³/.„ƒ1¢ViSš=l¤`\Ù.NóÛˆÒK¼z\º+ñH%*$‰毩y#}¤ZÚ½Œ[þTØ!Ò#庽¼O`v–,¶·7`,èïe6hn\—¥>ôAíqÿ`¹Ä8¸b ݈‰1Ël" z’Ò4ß¿ý¢`h³,匛pþT'pØÞžà‰Æ¦æ £ ¸±oI‘>åÁ$˜g¨¾Ë‡ŸžkÆd`õÒ=½RL³õ@QùF#2Çr€3n‘Ë0„áïArk¥Û{ä*öÜTslh­ÔɈ“µÇÿFVð¬þö¬äûÆJŽ”@¯‰[׆î]h[hY'sèàØ…h1ÒimE¿ø’·žl™ híúY9Ê̆$Èð`~a+ %áíühïÅ`ÉF¯2y@­"û¬wŠJi?á ÎséÛ'îàе©'™bN Çù· á…r°øþ¡ë–ãË÷°°Ò…y!‚šf0 ss¦ÿǃÓ5ŒȼŸŒžnͬÞ{²*ÍB3þ7p ñ7H¿Âqs’á¢X‡`¯{ï¤Hßo!Ý>‹†éˆ |D@½·q†HÈRÜùø¨˜Héy¢…áÑ|‚@D<ñêºm-'(K9@|>$Ÿ¼þséI·Qèn¿)ú£º››i’ä8ÃÄøâW[]ûè6_í®‚kÄÄÛÄìZ bTPa†Ÿ¨¦ÞØi0Æßâe¤¹ìª¦/"šº¶Ìçva›X֒лgaôD¡‰Êt>ç¦Ê*ªZúóéþ.ÓfñŠÛæV÷,íµò¾ßWé«ÓäRÍî‹ÛM¬—þoÚÓ[:8ÑC[j{¶tçôWŒf*vÞâ@Pé në è"doÓJ×ìG’7s·ú`ýàÎy üúfV„eJÆ àåÇ).7wJø†¾Ø €æ±ûÖ)¿ ÅßJã?¤%é5ÔÛ8Tk¼™qU‘TÛáHÏêg"ÐŽIð¡I/ûYwìtÂq¤#íÂp [í—M¿…þ'Ôa…lø\Ø$2éÚ¢Û«–Ü:3Û§áiž—òýäÿ¿ïŸj¤Y/ÙÝÒü) ²ûYs '’°ê‚–ÂN)w§  Rµ>ç»|‚D¦¹ù¸ý ¾”í,˜îJE+¶è›Ý1_¾*ÜÝp"|E%kó€å£mn‡r ÅÃãzafæ@—é \ÕtgÐßýYUµÌÇoËÉœ¼ÝºJ¡ rô‡ØŠž,9£R4a› üÂ#Šñ¢ñ¬™òòÉ•q=Eï¯ZRdtwÏy÷æ±·ƒ§áô—_‡ÆDdÚ&ÿzJÍ•–GÏ›|ùæ\û­³GjMw& YÛçR9-ˆåL’íÅ]‹¤9D‚Ïïi(½ c¬øfoi§­˜ú鈬fÌ8¨Ñú‰‡«Ç† C? ÞOÕàU›×p¹îêVØ‚mMV-çêU†HÊI ù¤ -…˜L-øòv„)jÀ:6æ ¿L×)”†ð#•OOOLÈ·%Ió©*²7ÿÆ?`Ⱦ~¿#Ï?Î&«ƒÕ»ÜÕ-Ž>èð‹¢~›1û :¨ãr¢3O–»¬,¹ëÛ²8IXèCÞ$íV÷f‘¬g‹”àåUµDÀÑÖÁq]O‡¥'«¾£ÞÞ˜½–/Iìôc‚TäÆm»»–YßG„ƒ\Ádn×YL“žÒ÷ §Á´c²~\®¢ùKŒÑ]^~èaÁóÖ+ìZÂ[& ‰º6ç 1‰ºÉŽe¶RšÀ®yL¶Ö Ûƒ¬m[M&¶)XÁ°Õ Ò´°ýO­„èðX+ïÅf”À{%î¾üéÈñØß-Â?úi<Î"ô2;Üë³ïDEÌ7uù –HO·òöõdÝ”uYd›ÿᣛ†¥„Ü{É’4뙯jÍ­Áÿ­bß]Îï¥;Ú ’øÛ·À m³»º¢:]/º¼òIµ~‚N“.N¡õIcŒ¿7ŸkƒÒÅ·2Í77êE0¹,‰ ¯¾žp WÒ}^“B#FÔÖ°³o´Íü†›æŠ7ÝŒHˆ &j2¥9¶‘µ³ŸˆN7ÝüŠ‘@ h*3}@Ùû(øÞ’eŒ»8 È1ªÝ{Õ5뛸8Ÿ­ÌcŠÆo¢—¿—[ hûG|W—Òd¨«R ±¿e(Ÿû0çsL·y{)w,Ð,B“Ùóhþ7þÛà¯0‰o¬³º#~ »/Ìrù—ON1šímµ/¬~~²@ð„r½„Üñ”ÌSÐC‰Õ"ÏêìyfI·þ àD+„efç‰0¤kNoÙ7oö=ÿÆÕ™{›]óݲ’ð—à S”X³eº:Ìe•ŠðÝ÷-7…~Wà’‡ýѳº—‰¤(þèT`ñØC6yò;#Mîì¨þš* ‹äS+‘9L,'/˜1~žp ON±ágXS\íùîÎÝœ—MÝÆ]œ”nOüX’Ä·†Ñ[;¿ð¸u ë»éHda/ƒ¾ÖT¶Ø¥e,áöÄ©¢í墘h'Òµ"DGÑwùñiAÊrbNÑLx>~[/Ï=2˜·H¶Yxš ;ϲH¿b"Ê`UÀ´ü ê< ?æ’¼%­fù —É‹TˆŽ˜‡zažÙˆÈ{W .Oª¡¦Ï«í¿H›Œy"¿™bðˬ8¤¬d˦M)È»W^ÄŠ¶ù£)/%ɰJðmw‚LYsÖLG+¬~į&^C3ˆW”y‘ëˆ'Í+èìgÜ¿aøuuòÏŸâÚ`c…[R¯Z|šØ>· PŽAtÁ"Mo/óqë¾e¾•“ õÈÂ]©nÑ÷$höÆ™Ìì/ŒâŒY‰î~6'îÂcÆXï§<ök`¸µqúÎdm!±Øvya­{úšú†5}¤G²k,i¯^¿%„õ£Y?K´#›º\þµIýØ–ÀŸkµC'¼dÔðœHs[«-¦‘~Éd…¸PÇIÿ ´·–l ÙÒ*ùú“שYj…q€@¨Åù˜‡ ›Û|)& >ðñ÷œf)í׊±T€– I”°~ÙW…Kzˆ:Ö‰9»0\~Šd"œA´ÄK¼G«À¿ÿúˆrÚT°¬Ž;ñ¦Ñ\—×t¡\úNƒ¯»Ây•2ˆQð¸â¹r„ÀÅÿ¸ìæYÏ^¾÷ñ /5™Iň«Zp4Ðâ·]DZÝê즬Š!µJW{;˜¬ï…þÑÕœ°ãhæµq‘mñ×%]Í•^”?¼'ìÁÂê£Ícº»çkwfAU~ðgøtˆzRÎk22õ¸7šÕnRâˆÅ‹´Äµs‹ð§»+ ÈáNïT\>?Øîcp?öÃÍ•U¿e3Þ§4x¯^ü™§eèøü¿ã'çT0ú¬ŒmF8“—ò7`Y`¡ÈçúëùS o4#—ìˆ-F¶–ªjÁ×®½å(97’…Ò‚£;^ÖGÔK’Çõ¿1¨Ù´'ÜUçï‡à8Ö]ì çI$#ÊB³žpu°º ^dž'66ù$}½õ3 6ÉÿŠ·ÛÚ8—ú=vÀ –þÆš¿Ò¢ªBKÛÝßN"ú?üí¬e)­hmåòzcWJæ‡â½i—¯}óh2|ÄõVÑq\’HÛ &ý}–H‡tR^ÌÁBoꪗ¬åîG—Áï[™\… £k×ÖT ­â>‡ËÒL™³ø%™feT¬ÇÙ¦fiblÁºŽ˜Ì`¹¯Sšö†œÊ9ËYÆz'_ F*%]uLÞz”±x¸.l}™|e8ôÁÑßš†ÏMmìH?bSÓF´r£,fb}šËõ„¿f³9*ý8I¨äÖf†·°ýmuÜs“_q4 ö­ÉºLþL语.õàY:ѵ¹~ƒ*gJP:¡æë­‰¤†~9vMÒ'’ ëSÆ6éW¢m=¦vð•û뫾Ïþ±ûÿ7Ç“ FuÂGsƒMêÃézO4O¦3ï³}WU&2ˆl–¼A‰'«ãîð²|Þ/|*‹ËŒÔ6r¦j¼¶rhá[U\ÿ‡†—ñ¹„´´ÞÕÓõ…sÖ•½ø4:].Þ&æ™}…}ÔÐ’TµìóN,yµøA¢BÜO†à¢¼ær-áOby÷ò.!&”wÒ…O‰ÏÓx\ú)ˆtûf@„‰…cò €(eG稽š¤{ÿ*Èœ<ùÝ\qK73kæ!á_ö%’œ®·A,Yj6`a}/û‘òe ÁÜ2ë(b@]>WLŒä<}´·$¡GV&DŠéúÿ 2Æœ¡"zô@Â9½ÓtÂïØ{ˆác7ê´Yv£–U¶ºttŸKÜ`õ¦•ixÎû°ƒìúA[óe¿¶6wféí]¾Îa}àƒ8ûl²¶h ¨àÊkïÁP©áü-1†Y›œX̱ҿJˆkŒš¿™õ¾§)™snCSz~F0úÝÄÔ:· Ö¸æ+ÃÍ ÐM¸‰ÅÔŸ›1._¬jÒ…\-’á~Û€]ŒÏÀ¸¡¿))¸;à8‹2°<Žy@˜þt1/ä7Ê1Ó?"ZLÖÎ}^S2ûÆ_m›O¢FàÂØÅ žùÐqâ˜Ò]<ùüôþ‰ç`±œÕãþ)8å§à [MzCËGÉ)¦Œ «~‹®ƒf'H _a—ßµßö(ïú5†tt/6u€¶t›\š9c@’NE‰ÏIó'ñÆŽ2­lÕþ4¯ß2X¥Ý™í†˜—¤ÂJ_mH gn!cŸÎ̇}=w3ÍßèÏc9D©KQò¨¦Øj·É Ã&"t~••ö¤øos#xb"ãXßUUñûi¼ÖŠˆÀèÇã€Êò¥ºûþülç²<Òò$ª|ÎÀ]BÂq±j޳Ø.ÌjÜú‹MÙZFž”bhe‘Céà €2o…è ëAÿÈRD*;K™[Ù[ÿ³³ýt®ƒŒV+›³ZÓf¹ðÞu挪=$j¸$Ù,Ÿ:à½ôC#öÃM“¥áMwÃSwC&a+f2gîŒÍ.ï‘ñjal¿Ûßð¾épô×%Ô=½à uÕZx†‰”lÜü)‰ÔÔ.uT* ×JcVt—'Ù§ð]=›šŠk,{k'„F7½K‡ä(N1Ù(‘ð Ø×@¤’5† ‰ÚkÈ»‰ìË-´‹çŠ}SŒ2a†ôÙ…cQ—º'³×›3‹¶˜¿YœßV³Ð½nÌ›‚pYm!\ó± ÍÑ/š—pLÕÓ1 L\_¡G•t,“”úa.frìV{K²ZÏa¼ÖÇ 2 üGÔIDRn‰¯‹èú•¿$z<ù8ÆÁ$TjU —Xé‡`ÊÂ0Á'›$3ƒ|zƒGþ ’ÂÀª,F‡}ʲÕK#]ÆŒŠŽ§¦¨¹1þ,ýéU5H4½±Ï›õp鸊©‡”û;ºÏ0¶•MnÛBþýÍÉ Áš5ZH |¦}<„׊¯Ÿ­8ÙájÇ_ÇY¹±b*ÀÉÃVþÛRìÿâwœm i¼GEØUO5-yôLj;§¨âf!ùD÷ûöfC¹tþu¢š*Í«Ù{] •™N·©GP,þ÷+°OÚl‡Ÿ?X”¥iûVäËDŸ¸ó² ¬Þ™:Jï>B{NAÑ9ß×È”ƒ}B”CãdtºPýÁ¡H#BzUŒ5К<°V_‰À˜ú,V²ƒ°Å8R®É÷SÅ¿Ânž$FB¶/Å–U˼a¦½,S‚f^†¥rÉ\Z¾VÅ,;xgþlÝ1,ûâëuŃdVˆ‰~ÔK¼³ÖT=_ߨRåIA‹(³7Š¥ÅXñÞ}øKxlæîý³ÍÆÄ^xL[(˜ó,ïãäÊ'øC~,/ô"ò…ÑÜ®QÏ ¨ªM™jF+<àkt‹Ð_¶Æïo±^vÑ8/Ú²Øø¼•Ær[†îB¼o]<Çž^ÙÁùèf ¥îe •A÷—^ÙÃ:´"iL‰qŸ‚±!ë¿¡WePÞL­xç)ll‚쯟­ ^Ýk3UU9^ûDŽéÍLÕ~+]žêƒ„³)778Rn<ñ×e>4ïµ½/aÉ8<ãMnTR>ò>»k|G†f—zðg}8EYqH›)€9ªz%\f§/|R$!­ÈXö²ayð˜I»¢öh|.Ia)ÿÎi±/Dc=@ëøïì’xމž}Vpesl錟gÂìðO½MúnCÑòÔý Cmþ¡ó.°ò·rèù‘ˆŒEÑÕ8-úø×b‰R`¡¤¿Ù…OÞ-¿Cõ~+ºÇT*ÎïÎÀ•ßaN­ËÑ·ª*ÁæêLÑ%i5Ì1uLuY2ß‘ø<›5n@‘,8ÖâëÅ Jìw»%¾—Þ„#Çæ|ªýÛnÁ=ZôË>õ|ª;]ϽóÜ^ïç÷ãÉÞ£œ8 * IùÙ+šÌƒscw††%bqâz•ªbŒÁ‹óoÂù›'!ÞT9Ö´ÅU¤>«Yê•»Ù‚{2´0üwR+"l‚cT H&}ž|ÄËäFø!©•Ò¸k{Ðt¸y¡³1^qµ;ž´5'ñ-A¡'v ;ó©ÀûË \ðt¤r~€Ñn;ª Ð—O ñIPû¯¿Ý”àë¾ÊgÄø­Ž—&œŸYó†p(”ÖèóPQ¡<]Nm‡ÑìD…ެ ·ówZO”~ëçèTðÅ›¸ ÎÊ’˜nÃ1#@¡n4€z+|*Ìï,—ÀSªÉ”ª¤Ž—€„Á¦ŒšÔm $óMq )[ßèõÛµ-F<¤mi"kpÁ4o—J¸€¨³Å‰ÅAߤ°*iÒ8ù+·ÂeàÓÁÞqñ±¿Ÿ¯rCüôrô‰¢5mŽˆô÷OÓ¯ÖòwNs¯¡šôìL–ƒÀ\ƒ1H¢ßÒø ÷²vÓ»È雇Þgo¸Fô Î^³s  \Tˆÿ¢ç‘>9ýÃ|ú[5®7yýqò‹«,³yŽ^íõÅIó›÷çU¾4Q̉Ț)®ÿõÔìk^bÚj^ÕÛ ~œƒÜ·>ŸÜ.ÏÖÀ f Ù⎭Ts Ää ÃÏäÅV&ú²‡N‡:q¶óÅD¤ ûÿ^)˜6 ¯Y.º¢¸1æƒSkà׌ZðOñMÃ1@õ_¯Ïú¯×瑺ÑRš‘ú¡Õ‘èˆè5Þ†•GL• À|ÌR|½«ôÝÎuíés‘yç-Á»ËóAâ¤C彎?ÛÓ–V{<ýå襵Ât~–§¬G7/¸8²8Ìx.šž)‰PG½N`ƒ\`žT9›^dÃŒ[½p¼1E]mÂ̾†ís=,9FqýÇgi>A~ $ÈbS<:¢òp– ‡¡†Ç«¯ÎßÖ@ŠÑ1ƒ‚ûWù©¸t#ƒ´ h…!šIo‚Ø ÅÌ.òàÈf˜šAœ SÂ,¤=?]¶y³¢äp%¸±tŒ×Â’¾x–¾†Š£n"¨©rGã$M:7CÉY–ôåô©ÔLšR–ã¾èxè”…fRk®Ùï|Ãuó-qåe²Ä蓦Â~*Æq5¸›ó¯7Ãä¬5ÒPÍ9.ð]†1÷E‘kÑóUÐO¹û\ƒ_‡>…®€}ôçk*ˆ*ÝÜþ¹~Õ°[çíTÂ¥¤UXÀ\Tî ^ç٠Α²ú>´;#ó¸î-ðX|)/ÌÄ« f÷ƼÙÌ)Ý‹Gm¬Y¸¿“öhø÷VxiäµÏu-’Ë'Ë$vzäK³­ÛƒKGœFÞ”i%*Á̧u¥[ÁõŽæ`ª§¢CµV$ýGô_¤_ƒÎ§†B8·(åòŠNrkÿಢm*‡Áñ–ŽŠz±.æ—¼[Mñ¼*†ýk®â&6™§2 Ôú7=ç‹ v¡©_WÎhë óÞpèUÎãñø mÉ#:±Ü¿Eë^•z¹äÚ¯f&™yÊ›Të cŽ&/¶C¼3ÍR#ä}õÏíç@ýŠ»‰Z>yýÅÞe;ÉÅëÛ žµ²=„PÊX{G? KSŒmû»Å?«ó[‰iÃú¾{ÑÒR)º§¦­ìò7PHS~Îñg÷n&¯t“)l>ÍówöymKk½g‰°X—ˆ§•ó5¬½õÈTtgÂ!ºàA¾¦s/­¾Gndð÷/ú½~™¿¼ÍuÒ¡”iëÉE©RãN¶7‰ýa(P¬Ñ —Ø'ýUâ áÑòk×ݨ¥n\;<¸¤+U‘…²R Á›G;Ù0ØQ_ÎHÕø»Î €Zp¡‚Äs„_yÌòêæ–ÄŒÔ‹óÚŠƒŒóø0©àÊ@WKQÜÚ°æî5ÌZ¬¹×%R$ppäŸ-j—Z{¼ð6;oø¹8aÍ(í šÐ=UಛX B¿#GÁɨÓñ¡&•|»>²dµ˜½Ö!Kô„cÄmÔNtBúr!—VÒ?ÉÝ hgÚ“–ˆî£{LXJÇØb<üBzz"àx2™ö¡[…®î7Íÿ@ šŒ$-KöëÂ:æåtçF±Xÿ}¢ÀLÖÁ‚q¬Ô澆@GŠ5múß -£ŸIE§NÁÒuï’tµÖåºãÒÛ„µ´>áö( :)8l4·jéoWI@àiEû7–XVô×ûà;j^R‚öô28n›¨VE¤rOx®'uHcåOòÀÀðï`ZûMü/@Â&€[j.ù »8²ˆl{~ ¾ËM”Oôæn¾y(M}îoã°éæGS¥°DÎLl%Ȫ®iI© HAð±3šM>(úrâ8~Ç¡Ž^»2‘¸ 0ÍØ9®2#3Öa欦ͬÊëãªn=&Ts¤#o4„ßKþªô–64Írò²CÙ‚ÁN‹ ²ŠËþ87f”õdfI<Æé׿z—rؾ~kéïY;wüû†VÈ r3¶×ª0Ëlò­µÉakb®ýÛ_B¢z÷ÐS¾W°¯ÊQ]ç÷ w÷Éã2È:µ¢ÿ€è ‚úÕ‘ŽaFn¶$#Ÿ¯PUøI¦˜ñ¹Ð/õfÃ>ìjøåDg¥ VŽd“g±6ÈÛÄ{h|Ž×΋w¿uÓΙJÂ.Jºn1þ¥BÒš¯àûS-rɤác5RÈ.(WtÖͽ²t!Ã=í’æWvÍ´¿o>ÁJò`ªÒçªk^UbY ´h:8þÂÖS# …±Åê¨ZðQÂC§ Î_ºï³´bÔÒP’Eï nÐ+… §ñh½VÓ`²“Ç”NýBÂxýâWA¤su%<7ÍÉök…'úURR®Wb|°äƒh–椙Êö lùà{„ÕïB˜½>®Í©Ôm/K‡é³ÇW¯|PUR’*¦çxÉt2Œiò€ás3Íðlv?)°†vðlSöÆí×°=¿¹ŒèÈ/¢´„ š©Õú-ê£e.²ÝD¤Óšóªî³ÎJƒŒa«Deá‘oÉ¿£$Æ>’}?Œ6'ÄQ“=© ‹¸ÉnºTV^Zc]ÎËÎôL¢¯'póГú•½Õ5Ä6ü-{:„:Þæ¸ëzïEÿèMUÏ;öHÝ#»HõEhã"™¦ ¹Î"¹XLwOX¶«€Ð])¥¦ ü1ÙŽç2/ t6~¢AŒtÓÓ;ÿ¥­’ Jˆ¯es*P©‹¾Ï88"2T¼ãæãÒ ê –G´ žQûØUÝ¥);Ž~òjÄ™ê`$ªŠ3Ó²¬]/ŸÐn –i½¼=á›çßeóA¿ê¡9Ù|›}]A]d¦:œ w&w£ÅdìÂ0Ðþ¢gåI%J¯7Û­­ÕñG¦ Û€k ÅÓéÊ( ƒ¦xI|ž½Ãõ´ŽïU(ahã8>åöþ©%¾ ëјhIQ¡0–hÛÜò/J{ì“ü¤Él/ÙQ¯“ ø‰Ö´NË…s†˜DR¼<…Cœ½…ÎèŽH p?çxyüv&Âà`Bðh¼îäIvúáÚíÂC$÷ÜBòÛV*–ð^(ÒUXlü>Ýbö™9£”@®*¡])‘WÍ7Å×ý#Ž œs‡êB—”¥‡öh´åa4kçÒÄx ’vœ?XºBßÏýÇGx·½úRø ÛÌíý©×ž:Pqf'²iÚYý¥¥Ô¥PeS0’ùI ¤¬ÎˆfÿX:o-g™%о 9^@ˆ÷á2¼a$ÌÓÿÌwo0ÙŒÖÐ]ujÔ]UXºv-Ÿ}¡ƒ—ad^óºˆ$)³É_oô6:ekM}˜°GÊ>´E²¼j³·„óàÇ`;ž"x=hÑéÜ”OĦ¦5ÈLÿuÅëo§Ò87ü ;„5|¡"ЇÖjÑxްZFûu/¨ËÝ#wÉ:ºé ï‘Ž'î_£ôé³Dø[}0‡h­ƒ¤5$V·O/=Ô7õa7{,ÚøÊ«=RQ¿º®¬ƒ™# €‘!šö|¤ŠØT0(ÒÜgWåïA-Ÿ²ÖÑ߇1»}Qõ€hÉ àì#ʱÂx»eýla[djf˜< ®‚z}}©¢ïKÛŽO>?¯2¤È«”\Cb×p¢»xÄDí–KIZ/Iì¥ááty–¶G½èyRYÇrB#LÁ¯bTƒEGÚgÓIƒ6Vß°„ölkË—Zo$ŽL©‘{«ûr µ‡º”má;•[òß›ÇTÔ’]ÜðãŒm¬ÒÖ¢"›¥ÁGq‚ëðÀw“?ö}û9ÚŸ£^«8ø/WMæ7uH {qWëdJ)Ùå;ôæ.+×X¹NRáxŠÙíàá¢/̽¦Ÿ¨ÚJtß–æf€•( Ú]=mE†º8D ¸V©bëUfP ©þݯ€6Z5Ø(?¾ ïßd'ŠßVXâ^W—ÁØùÿKã¶@^·³ÔñiKT†Ç—ÕçÛŽ¹JÐ6€¬²&½^…¦_OqçÇ…žìÇ–¢³W¼ª´6ýõV!ôROc0ÞG û»gœ/û2‘z©øOu¤ g>ZXd ‡Å™G3S¬ùÜsMß߯\8RÉ“ä MâcßQ‰þ:%4£µäbœ‡~Á‡MÊÊ)¥àƒ‡¢ðÕñ`ëÖñSö×>mÙöÍ8˜ŠCÖ¡…7x4Müóëæ×ÔõUj×ð‡Q¢3+€±ÿÓëÄÈú&¦²×ZŒ¬” !eÌ̹zž!y{¿ÁÝæbû=ïÔ4Š_iǒù,üúÍ SüŸ¿Ž»Sv˜(´­c«û·[à”P©˳ Â¼ä©œ á QÄV§·…éb·_—KÞüEý&QR_‘ºx3Úp=ãO_ºÎ×*IMÿÉ’›ž(7Nª†üs±O[m3 dNjݧÃî”Cn3Ô€Ʀ"ƒ$€z_Ö-I¹Ö—l%õ.-óM5¹+__9–GÚ(84ê?ò‚±GÂ+M¹°"劦V#ÍoªíÙ‚jÀšz›EKX’ÙüŽbu*áÑæ õˆ¶Þ,eXûpy¾HØ#}üÆMR‘ó¾¡Ú("@Äã•Áë·á÷ êý©[õÆlXTíZ§uû˜!_û@´¥Ý<šú*s^7|qNÌÄÂqë¼k™¶ÿÚ32Poíµtsw}êåc(ãyů¯û·&b„ìÍ8 0 טPWÆHiDT#Td€›´ç¢-„²ø^ØE¥—…šˆòq᎒ÞÕ ÄÃì f½‡ÿZcR9F1k2׋Gd)̤uzùí0¹•]+Ïo¢*…Ž× >è©ÆnuM60 ª~ØJ‡žv—F}åÈ,8¿5ûö†Qì b/0«Á HP)Ó+vmªï³ŠSB]y¡Ã±-iòAS C‡½5‹ƒñ¾G±ÿ^âPÉæ$›”ÎýjG)öõh_JÒîŒ5V¤›'ÿ@Ž H;Ýý©#¶üÉæ«ÝíË¿Âû²fpô¦¦¯OWœlÖ;9 À06­ÃyÛÆË«ÂFã'$Ä»U³¼…©9IÔäI|ÙXœ™,á¾3ÞØÛýÖÂâ‘iœ¡šëTïb=â~ÖmÿYÓ|…òð¸å+Êì¾½ª~«Çžz /WÒi£ë¯Ûõ²¸’¢‡úZY¾±ÚzÂ|BÙ´°úÉS ÖéAƒÈS4²·o¡~|_gHë´“þˆwü¶Æ—MÖŒ’Z¿“ 768~KaL©âü±Àù›Ç8õ sÈ0\ùË·òî¶YüN“3€H[/¨üá~3ÿs¤4/]A ár8ŠM}ŠñùÖä€à>ìS“LõEŠÉôÆÇR´0^¸gˆ· zô’©=îï{‚ÖÌ»9'’€1}Õ0Ëâ¬Ilûõ'¢Q‚G'þ^ ѵù‰Ç"/òN›‡D¸Ýý<âeZ£—T…\û»ïØ·; Íì.ív€/>uÝ‘ŠhÉÂݲ‚î°{MÐ11®Ë‡êïò­(IAæ×¸¯oü—«±6Ú…•å_³½ÎûbƒÂŠÖbοã9ö~—>Ÿ¡Ÿ·‡›Ž‹±d6—¨u‡Wôì Ë©$ÿû Rì'ˆ”j´ü½Ï7’†^lõ0–5Úᘸ`() <‡äåü…Ž«§7×@\ù°Wü—)(ÿ kŸI¥ã;¾¾8‹y“$ªí C9¹÷Ùä…i´­×¬ºÂײփ¬ê™+4§["WOâUáI`~ø`¸’„… -A·YCDP¨ÎzÀü–ÝYÆ›¼C´Áí¹(TLÕý4mÇŸ’››N׺è¶Û #"½¥¿Ï8‡È«îOn)ªŸäàóƒ˜V ÖB±@)ƒ“äÝ›hÃ)·@f°õ}ÓD˜õ©v£Ú/‹ëõTÞñðcš¦,Žì cE½Ùá¶z\ÈÇ=/ñ{ú‘*Ÿ¿ÞÃeñ˜ü0r5Íå8†V<Ï“aÉbøGÏΠSP‹.ˆ× ¡6ˆø@ eƒ=)oÇíøÎ_oñÞ9H%ŽyAà¦`FضÒ{Ò¬¬¨GèwñÐB’xô;—(¿_øèó0E‘eù³ü^ß¾™øª»ö„ÚE+§ýÙE“r?̃?¯«[[ ì‘Jîº%Åú<_s­#šfê‚Ëw¤’£¯ÿöœäòÄ/èÊé\nÉÆ sâi×®àø"#4 ¹êݹ â |cv‘BÒü¦eó~Øu”Ù»û½©™àâ}–DÜÒ<öÉw„gGùã*käí"RÖ¥ª›TÓóD€LD @rjÞÔ"Ùã‡"—ߟ[=¥}=eî›Ñ2,Pv3¹u½ÁH>Й;ìvåËhàµ2§þ½~Ç¡M†~õºó ¥°óõa$ž¼>ó^^QùˆHцIÒVRpjÍŠÉèV‘]}böɑՌú^~ÛH2¾ ؃{÷9lÑDñ'lØd¢rÏ,ëo((vkЦ'¡? `ÜÔ£›ÀÉ_wRjTAÁœô"æP‚HÝpº“ý’îlÓðçO Ö¿qùÞO´‚YçÕ$3Žú,> ð*†b|é;™uw)î1þSB7òX~ÂÜ÷g©k*ýy™²?$ñéi)Z°Š‡ý÷/2n¼Ê ÊxÓèd4Jë<9ÌHÅš$(¯ªßïàç hÔí×Ë”%:âßQ¬ ¦¾iÏ"f[¹Ñ_ÖNô÷h ‡ì!òÙ J#Äx•SÇ¢ÔSFa8e{³qûu°÷5Yëw_ Ä닳èB+kÙù¾<Žß ;9ÅD/V_VìfF*>k®ýÙêêtºÛdƧ¸açñ÷~%O,Çï}œ Ü«³;–œñbg7 Ù®kŒ’äãSQÃY¡˜*]– ê>ÎóìÌ¡ŒE&C"iÖB04?‰«7~}GÄTT"%åóN§“½‘¾Íg/¯}Š—#Lh‰HS†€Ù‡è ¿6]D?[ gù[œÞL ˜C†ûê×ëó+½nwoXš_÷Vß"¬­/ŽY¬$W’G¥vô& MA½nŽ)O ®ŒxŠ}»ø[@.*—ò}Š†à… Üv•·éÈî“æ5Ñ/Ç]!}‹lz}¯ÒÌ!7]ב}¬x†ø*bWºPwv}þQô ïâ}BÎ+ÞÈ~‘Ò'p ¿j†|†«Ùó`èà×鉸üØ'Í\àx¬£äm‹¢…€Õ “b‰hþÎꆠýì´y=‹cÒ»ÎlÏ¥‰Í)¸ý}­ò©ˆ[`mQÁZmöÅ߸lc¾àêÑÔŒ ÿ‘1šÝB4<•x뜈Ù{ìá¦÷’&´Yd洘ĶÍë÷¡)à×îõY7|à˜.·ØpP¡w©»«­Õôš#òÅowÊ—q-M÷†ýËóƒô2n¡î¼èæU/?Ð¥ÍvöX‹¬A"C1Z LŸ|ïç>ž"Zo–ª9ÙÄH,ËÄ+©,…Žüµü­fêK Ž®Gr`á7KÄV±s“éÖ2÷£ñC³ö¨Ø:AmU6d\wiZn›ïX}«˜6…¯°Ö•œt4qÌqù H7vO·~4 }wÂ8Ššf.Áu»òëgx+±«Á+z[a?&ÇÄTååŠr‘7T*÷%[0y욤ˆ®«B‹ÔQ<|ûŽ¥ºóÈÿÆùɳšìâʃ‡á_XJ$ú.¥¿súÿ×@†º|©–y¾ƒÒ2ÿœFdÓÁiWùÖ¡óiÀg—9)é‰ß8Œ}ÿ¬ Ô ÷ß{±Gõ{*ð³ÊKn9¤ô)a“ËÀL@í¸ÍB÷¶ö[~NÊÖøÆËŸšßÍ Í—hØD+©Îò6ÎCûàc™ìy±³Fæ,3¹¡éÆem‘>ˆ¢­ñ¿Ü9X{:øKF«c,Ûpb~`»Ù‰¸Ü½_r™  † ˜Qö—ø…©´$RÐ7ê9×.ªG5@sq'ñ3ö¾ýª÷6ǃåM05NŒÉZåå¿»€i^î¦iaW°›º·u|À Žz…¯)a×3a[DŸ3{p"ÚÙÇGÍa¤ïƒ¯žŸš»S®õ¬²Ï×,þ{‘ôâá1dýŸ ßÍôƒÕ Ùå¶Ð9Â5SŽ‚5êÑh¾~54ñéïMHÙ§î„»¶ïÇÓW7䯉©µXŸü=`‚:²ø¡ðpî{² I:bu`Ê~¶v¹ýüoìÇJ d~Qªþ'TV*µëÿM#þn?ð¡«kÖ¸ÜOò:”½E÷Ê6pt#¶O ¶´[î§ûî/Kðr¦„¦' |ȇËÐÏÎèfa(¢‚^J[N÷a°¬d:Ès—ܾF¦KfàO¤}Y•]R–…Ž$‹ ,‡Š‚cXÎXí ÙuZØ#üGTRÕ­ëËâ0¾¹EêŒo7×hoœä‘5¨Ë |0ç!îÛDoàÅ]Õ›¤~i%§lÑØD…ÙGƲ©×8•.~ãè ¥šÈrͶK‘ue%ݤûò ‘‰V G ßc M=V”F»4{ôÕ^ ß „Äßẹ{Ó®Ô[ ig]»]ÌÜ©#ت–ièÝ\Ö%…5¸® }Åå–?õïó¢ù-æÔq @µdÔ™>8Mné5@Ò][SÿöÑÇv´€+ôï2ÕÁ°¬}_X7—ülÝì.ëgfîÖwuŒ<Ö¹YºíÇÅ4=CáÔo ïc(÷Y¦ãQQ{¯Ÿ/´ÏñÁe?ûLRE%»Û¡i…¥šv–ÝiE—÷x– N¬° Sm3tçìÌ ùuY): B¢ g—¬ÐŸn(Éß)Y¡ù\¥'H¬d×ó– -š%#*)u²LWèýç´¼âdZ}}”·k"–íUá¿Ç<#<•´øÞŠÃ?®-»ˆFi2Ñ€;o7ÅôBNôøEŒM—œ;„q )ŸR[‹DÌÚ’tàã@¢”ÙK?“BÜ‘/¨öÖ±†è æ@,•…÷}Ëä©¿©ŒàiÅhޝÄß gU†§Öd}ˆGÀ­"j ·ë›îù<™ëQ—Š`ã1þ;ÇÉUacç/þß]˜Çgåàónùµ¿ºÈŠã$°‘¢ßRo?¥ÎÚp«gÏ<"yc©7Ï•±s>Æ®Œ ‘׊$Ð ;²ªÊ©UŠ9•†ûÞiy#êЦ½„üR*ôY§ºs®±C?WQ¾Š|xÍiZ¦¥¸Ž«êKbz1ÒH/ݧóSÚ+{Òå7ÕÇ{×å>%¢`'=sde—ï¶cˆþy0ql|<„QN˜†bP î™4KXZ=ÑÇóÃ,KEø˜¸Û„:)£víZа??ôCGØ¿ÜRŸ¯—ÍÖw'x £ÏþØÔ€Úø¿w™a¸Sá#µ½¥‘±!R„ZßÙ–ÑÁþ])ͰËô:Hg†³Tÿ£—ƒA‘˜™EŸ‹§Ü£Uòª|(êèŒáãzÒÚ^É¡ôÃiíçŸ7?ÐÁªå¬ÜÑÒ/©»{{Ÿ×<öƒó"SøÌLaï—¯89~ó­=Œ6v÷’äã[ì3b¿ÏîmëË9çdÞâOñ-µD„bÙðòøÐs¾in2IççO—ÙwsãËߥâõm'õh¾9>êX‡/†b˜WÚ¹@Ds)~¿áDx½d/ûn-"€¸]@¾+v±äö>êÚáÅ×|ö¦ùúâ¸iÁüÇïè£ º²ià .êî7¿ï*‡©Ì¡=H$ä©Y³m€”’½–löMƒ2gP gj' ”ðÉ&A%ñw“üloãúåÖ“˜‚:Ç9d_Î3<ïü.ȾSNs~úë,µyžŠ(çf7›Æ*i$€1O5Î%ä4V|à;jÐì »©g30Ñ+Ãò_6yJ\hk6ö“Y?2ÀT¿­)`"ö’Ô5ü•5õ.úQ«t_ï—0‰Iú5ÇScóP$õ$‡d:>G6"QŒã5ÿ¯%ÇçNÿp´T/\‘9½¡ `i6)ñ‹&däe¢Þ˜ —:¦ó­¾ÜÅ+e™'Cuü$@ªc’ }–‰9)vcA¹ûuD[Doí€æKS|Æ#‚ékÓ)˜a{ª>.ËÀ)£1åÜ4›ÃcšžPá $š³‹BÞ}cå2,aŽl?²%¨ï€>úz~zZïE ‡:/ë»(°Cœ £K¦0Høü¶'õ St£› 2«ñÁPG^½Xäá{ Æ'Ö-Œ.—ˆ„”†a£J]O¶ðJ4)ƒÃ]ô5˜‹ÎyÔ]“sù’pzø%¶± ÊÀmšCÉ ˜T<¢gì‹„=ä¬ KxOFTFiPb Ã8h-~#Ñß€Âæ þnè Y.*øW¹/8©INTâ†"’‚þÆ$_ný¼±A=ÿ"&ÀêÔ>l“«úà`ưÐ$Ð}³=NûóY—h¯-› ©Úe‹ž¾x:PEÑ\ØE­^Â*™¶½dº#Ôb^oªÅq(÷+Q2MåÛpŸ§œ]ñ–ij µL3‰à¥Ã–”w7i‡<ƒäU™Ÿs>Ëqã;ЂåÝ ù ÷ƒ½¾Õë T#‰ø‰‘(í^öLíØ""Ò:—™ÀúadßrO°ëµöâµ'+\ùkx´P:Ϋo{Ò‚ð>«!î<^Ê>›”²¡®æ¬tW÷>ÚˆØÕÕa¯´øDS°QÌÚìSp–Ü”rjbÈÞ)l;|\ÜÂèËÖÖï@×QL}ŸÓ|‘ÆÎÖÊŠåËNO•‚¦CÞ‹×"1Ql&Ëüý¤ggHj}ÖLáüCŸ½»äö߉ÌÅòÄåÃz‚!ø¤Ññès¿èa4ý’Tñ;z\MÏß¿WïÃè~àÞs‹Ýâ‹•.<õò7)0ZèÇ×¶ åÒK>Í$*æiž¤æ šcÚ,t†Úù…¢À´ðu|éÒølO·Ýo¸=¥·Îîš"³Sò¿V±ˆîÿ½ºµŠ¤¨³gépQÌã®…‘†œ''7–­S§Ób-´U~'ó®´ï÷˜ûzj(X0ý¡J”Òl¿ÁÂ#ßéü®¨ƒ:äÿšÈõ§íãWËSkm’…!ÏJ÷ìãÇ bœÓËôÃC†¿¿H,Çúø´­|S_¶¯ì¸¯n¼H)9æŽûàÁ‹³ëˆÏ/_@ü²¯jùèÅתKstÈ'ˆï¶Ä áœE2, ƒ«¨Ónš/7í­½á‡Åº„/¸Ä0²f8$‰®ÙŒ(áΈsbäêPÔ„rÍ®sú­PR]”·]ÉV.;ÂíådÙ-Êrî›D~¥o+ƒ|Ä®±v˜è­¸×:7B‡^¯­þFIòüìÑôŸý½œø|aó>Lí&è‰ëÚž^C>á½Ù¯~jôâ°XÔn4ðºwHgç>˜¦]ûUI gù.÷U–éÍ]¾&^r?uòÆz2À}ó'x—9z=fŠW ð{m3çÖ—j GŠ” Ï”Y%Yom—qØÉÏo¤ÇÇS?Þñ-@ Jž[ðûحŽ ýp KP ‰oJy4g¡‚žw,‡(Eð¡íænÒ ˜÷œÇTü˜ß£‹6í†h/)Ûeµîü7g…j©Ýì@äù±»xÂrßÅœ…TJMX¨$YB¡•Iãç>µ¼ŒáõµjöwصAÔåÎÞOYïV~“¿·è!ÐÛ‚£lHg·÷×aUÏqqq@n¸ø—#S£nJ÷g̾«âýšKKÎÛ†à¿Ã’•쯅ÉQ£[=4ÀaÌ{Þê’öGoù+ƒ ‰DÛ=z…-Y ÿ7¬èïµaÞ—šÏ§îVõÒb/ û~N¸EÔý"è5Œ¨ñй ¶Åw›ü3È[ë6{´^?ÿÝSæIö­®h,ÑhñÓ)VÅõ‡ªû¤åß 05Û¢ÆFÙ‰Zçh´ÏN=áM,mûf@âIlÍnOu{¤¿5‘óp‘à¤d†Ñ>u‚ñšoɲ­ˆû)êsq1±SË@*¶<à 4#+éùMxÇ ÔÅ·þ‰ùðopìh¿UÖ Ù¿ÇÇXˆ:Î8zÜ <à6…wsŠ?ÃGöšGMf+è}ÿÝ>e ¥‡ª½†ªRÄ×:°™CUóÑÕ\Jq÷Kˆö6d­Ï)°LÚ»éPz ,ež_+eó“Pá|þˆ$îìá¢#®ßòýâŽá»“ÌVùX¨ËÃôÈÜ N„ ^~W“zžñâ–йõj«bÈà= JjKI…ÈŽðß|x¦ú2 óâ"oÃéJ¶0Ô»x_ 8î%­Úˆy•§ø¢‚]r‚g u”ñ:‚"NQol áÆ¨Aü’dž|ü×8à¹OA9m–&t+$ï@–û”©ú¼¼ X†Ìò’Îo’€»¢#–seZð›FÏ…ÌåÑ…UL‹[0î|œ¾Á{%Þ«*f×Ûs=iÁ6sÏCW`Î7ü¸OÅgŠÝàS~Äyí§åƒKº¨ÿD½õK¨C¼‡°Óê•m8ߤ3¾ïèDÿhY\l|¼½³6¬`(KN;ÕˆPQgæ³áÙëò2ŒÝgÐüdªŸúrü7ˆ²Û¸Ç^Ø ª!ÄãT¼¼u³M¿cMΨÇåeýµ’•Ý>þqÜ5B¯t4VÔÐJòëåíWC!yÉßCRRˆ]¿ˆÞ{ómÎ:L(8*7¿?òò5búô’IRÙÆå6AŒ&SÖZëþn) µÑ¯º»Í½1Ϙêû3þ(;ø¬Q{ÓêŸÇöö\Õ ¤0¼rsÛ{òsÆòÏøE§…:AbSi!€Çctª"7%°‡²Î!M3_ÌòeÞ¯˜OZ(¹ßO¡Z; n9yƒœOò½îÈaº›7iÞ¿à•ÛÑ˘(‘FvöJtÛÊŠ_‘óyPž½“ké~ ¬Õ^¾UŒ/:òDEz+ÈLhÖÀæŽÐ£Ë¢{¡0.«ê#¬Xò\“ S_}{#”¦„––Y‰™¨[ûbg©©dæ×lårºâñE‘(SF±Ïò*y±}ÍfHïA³|ÃW?w_ñC ÅÞ…%¦ñ<1¯Ø¹·àqÃÛ_Åû¬î·Æ¸3ÁNn§¢_iiöïø¦i+†Î wÐ…ûýó±÷—ŠdÇôhh¹&Ab>ÙœGÑÚ BÛ¹Þ8ä{ÍËè«gT¬«ßò¥  ª8Xó#éÇ>`æoÍ«~ÝûGß^»„YákuÐlàí\‰y×/§-|¤Còñ"ûPG-oé.=ưëQÖýÃüb`áæ,“AÜ_ {‡5í™ÔlDv[ƒ.XÜôûÖ¸ƒ×cþÌÉÖ:İïÃØ.Ђ…G2(l“Ñ}„—±"¿´}Ui[+†;?»“ÓˆðŸÚ×u2PîÁ’ô<\Ï]‰\"ŸûÉóþ‹æå-Îå¸ãnںɫ~û›ð€Äß;XÝ\ zÿøðLÞ ëÆ´cÒF0Ž˜æ7 J†¾z%dJÒ³Ýcn6&EAo…Þ>!l;/èCÁRHÒÆ¡gøDP½!Žù‚óKfñ­uXª ívò•Ç@˜{lg›r$i¾‹’Î/YÌ8<À–û-Cƒ#FËO ÕjÓ“ÍbF²_~v±©*jn ü QËÛƒja-²6øºÉ»å%—âm5cÑÝ‘×@è§¿™íÕùwü”ÖÎ0åì¾ò}$a‘³À^‹òåž{9¿&cÉ…v"óGÀ¿uši ˜ÂøR02ë¯zýì¢\Û\f]YĈ&ß™†¶a=8OÒ)3IÚ¾µ%ì:@¥;ÔóÂÌø»jú£È7TÑõñšÈüÖäT‹(Sz7X—‡jàìÅV¦¿÷™û·B×,#JeD4õ^™Úÿm ‰}œ“scÖGÕËÔÝä#²`}ÜDkPÄžeuðUÍqáùI3r.:1ù';hÜù[»c¬ÝÚ$ðN’>ùkç5ßÃ#Ÿœf˜Š ;øÉüBß’CÚ2ùCµFøt† XÄEýÐÓ¾&ìÿTJêi> xŒeoÃ8íßFÞl¬G­GR¶ƒg•vã iÛïö…ÀèXr•ȪÒTz–Ò³™õh¡ï jŒhµ×v{­e²j!gçù¹½Œåk®†á¡+‘Î-{;WÃ|> ^Ò9ýx]›Éì|¼/ˆ×FWÀ£…½ìð±ú,_=Ÿs%BIêô¬eeÐ_ß[&Ío»ñÉœNPï^Oê]-è‚Vî©6Q*óÀþ5Л‹ÅÁ¿!‰ •[˜™uì‹l½Ë^ñÄ"•ÏÖ’4œi\xŸÆˆQ«åùu M)ómýHbüºŽ·þ6{w(ž,V~·Pð`™û 1ÙR½¨w-OyµíoÿJÍ”w¶ù0UR­–ú;IJÐ`)C¨²]cÅ‚M¥i¸Î²Øât/É2Ã>®.Q{CºÎãÀm†F#rq0 ^®GljûºTuØ™†C§R’aè1¾óc ѿþ.ÄX;Æœ1‡Y$ £É¹MΤ¢„BÇTÞ ÅBUÍ¿}œºêõɯ¦{û—ÝÍÐÑ—è¤ø¢ïl"Ø _I ²Î€õñºŒÊÐué‘§]@)†‘˜'ÒÈéÆ?ümjT¸À¦}ZhIü(]ܺ,±:•¢«ƒ'‡ÇÏó™Û.Do“ÌJq|n·Yg¨ÏÇ‚ÀÔ Åü ŒÎbÖÛ*á¼öÀ󯕻”ª!÷–*À-€—†U‚Ç1C4E†$špè%.,„ühNýVâïÀ™Üú“V"ê³S¨'½åð úH#m]ÿαô-ØÝ9~ÿuL©».Ûa?Ûà=šw7fóŽŸ&ûM‹q¾^/¾ ñï­½kzFÝÏŒDæCG<Ζêß±o>Ò¬¡ÃVË GIW´BÌãJõ묄¬²Í™¤*û¯¾ÄÒÒÅw1œþtå×P3œ}¢6½h­ xÐ~n¥—{´Õ Þ!åÝG±ÏßÛLAhUY™Û hðÉ4Ð~xÓ’àdxbßAÄyµl;g *ß"°ÙB¢KZ>?Þœî¿,÷IÁ¬ YT«ÌO«½}d¸ã‡ˆµ^5ßGB6æƒ9ÑV"üCˆÊ$8NÆ-ÍLæDrHÏÊóÜ|_î®Ã)n߉ê×vhAˆWs¬ØÌ0– íñ æþö˜a¬¶Cq´m±Ç> pÜI6xœ§¹„6ccùù8sz]ü³¤ÿÞRLm5»¿îYª )Ðùù:Ë ¯0vêŽWLq°…ïÏ¥§œäŒAJ2{àeç¿l[!É]ûM’¿sC B± Ö/üL‚>J-³fÂ~¤aÅËO*Çq†7fãõY­°¨cóü¨³‰¡ð Eda±’c™™Až;Oªbä_CSüX ¦ÛMô¾5Ð8Ê#~‡ºxÅÞ´‰¯C›méÇzÊXº¬âæ ?i ášÍèC”Ò=+¨üN˜k%¬`¬= ,bÍ¿.Ǽœ±3l2ůÆÐ¹ø©u¸('Rº¡iq\¦‚ü7ÌGŸz$ÛÜy1³Ú‹÷¢†m) À¥­áI¹Ù þJücøO¥1`zëJ'‘>VÉ3H¯Û-¢>&¬Š¥ëãHsԔв\l>÷>áø†%£ÎñËOÙ öÝ;Û·Š‰Hð·CÕ|Ć玽ȩæôÐ4 °¡ÞâU|Žð÷&ˆˆïà˜ä ~ŠYÅúL4w£  ¥‹Å/’êIä$Þ«ã<Î:ÉÞ{÷=ÒršSÀöæøµjñý;¥A¡³QÏÔ 7òËIèZ‹àlछ×Öï¡ïÉãXQ¡ƒ½<Ù+'3ßtÄ%T¥^ååó…œI ˆ[ofï—oŠExÒôcöÈ4QT½=ÔÓ›?HÕž VÛpŽ ß©B1C¼©ÖS¸I WÚuÐ ±.1çÈ:^PgùJ²¡çgÍ/?ƒð_ÜÙ™¿’¦Àgìq®:ì9¯Þ`¼6Hð™^%pù*³Ò‡í8°/*%l.y” 6'%c~à’C¾n„^ãÍbO€o§pÿú±ÞbXc—wQÎýdEˆs~ þ*Kï³Dµ\6Ë#\²ùºl5wß`ôÕy9áY —Y/æÑ·ÃŠŸùÝ]á’ôíDóß?p‘|ÚmáM2ù¶iÿh&¿Rg%à¥Õï¡?®Â”¤™Ä¿«: úÄÊ\;ü×yñwp;8™ýÆ{kÖsb¦*Ó¹Ö‡=†YøÊTZŠÎóÈf§uÑŸzòæ“â`Þ%ñ\+Ÿä”ñt}`£á¯GȲÝH^‚/×.~1¤aV¡Ð ¥:j¤û¦‚h|S â”—ø%EºßýîAÈI¿]y8ÏS@ó¥@쉩·D……ÑÁ-Ÿ›Ö^^Rö­£¾}Ó‰ìt´† ERv|Ì!¬‰:¿XžVìÇ’‡Q7µÆ^ý Û9k¯@ƒ'ÃhCë¢çÂÿe |XbŽöN†¾‘£™/Uy;_MÕ/Ñü1ñek´õ¿†ÞÚøzuk $ìkˆYœC=°ó0Û7ª‰¼·‰6å“‹¡>‰ï7ÏýòÛ &"Y~œ$¶«ì¿K L˜oXcóê©¿…fùöû¢ñ¦Í¹¹™.*§dú8ÝieÊ)£S]¼üʧ½]_çõˆSû€žþ.v[œŸübl’jŽWk( tó×Ä~߈"8MæÝ“&#MzªI2—ðþtI  ѲsÒéØÔjSî¬Öcøûëb™¬ÕGh™¾â3ísˉɗîSþ˜S}WúšZœø¸ì“ÿÚK™fbðÂuÅXOp]@§Ð‘…ÌóßÜe›„Àg«Õ|ig;~bLOÆ~Qò³m`9(âßÉM8’ŒÌlY¾‹BÁr:þ¾ßv‚Рæí8 &s8ÔŸxô<‚ÃM?ŽVNcZýu…ßšÚ`‚Ý]ègF tfïåüT‹4k?1×­%Ì‘NTMiŒ°%xi>>óEÇ|ÌLÔv½ìC[\ÊÛ×÷ ª'OèÙÝLÊ„(Æç¦B†*¬tŠÒømðHÅ+<}OxÞÇÅcëˆ}÷ƒqh{U8í™bô8wØCþkÍnÑÅŸjÅdv ½Ý¿C ööÂ×2•wGàHoø^Ⱦãhxk.ƒØyûõWE]Ècý¬­–*ÿÐf3B}»ã»*ùwü5&‘‡ã À=CŸñXôLMÙç-ûX›m\ÀL”¾lòk‘¼¬S*<ïså@=$·JÁŸÕ§…6|o¬¢Y×YEeE[^OŸ¢ºÀ(zÏÜý%],=åv³»¯Co]¿@ ¿Qbû›MÈÄ›d×<É-ù<èíw¹ö÷w„~;€†•C{³Ìã{„Šñ±‡%ëØÙçœ\gì».‘À&°-:‚¿Gá蟌¯ÏW#˜ÝÕº›‘$ÌT²½ÄÄ`“|ä-²W!h>Ž‚ýz²ž®äöÚæ“£Á~Ñk’qæ7Ûö1t¢øHÑaõûmóV©q4Ø›¶Â@ÕB9<7_‘››yÀiPãË áܼÍeÄ&ï›Ѽ$•–p?òôJ«÷`WÝ0 É{@ ö”o” sD‘q EúõÁšî±2x\×zIlÙ-ËED,—}~Z¨ÆÚ¸#Z™îuÄà^ø›æ¼ëòÈŸ>dúhÔJóÀc]JáØ–³WŠZþÆa½µx>T(¾Ì?b>?r"‹Ý×|À5H:ß™åí<Ö‹™q:óÏÖ^s òƒ†Ó7 *Uši÷Õ/¨‹U»´Bl# èñpæß`Ÿš%ûèF™ó7¾7^°w^ )Ó—ó]zêUô}‘@Å5±Ù#[ãèómël˜a~ˆ˜g٪ȷe_‚í¢ep[먽õá _êƒ _J¹s¡®9(cûñÂ@é÷k®ë|´ Ù0MÌÇ­þ×&’±°ƒš¾R®Ø?x¡s›AÝN¿ì^•üŒþ‡fû‰~ÈQ½üÞù–{Fgcëü´wÆkmó º”f´ôJ¾r‰y]AZÇc»}%ÏB-E„¾™Wñ}£¢m»ÐÎÃø @ñV7|)¡‡üÍ÷•7Ò£æË°¿oüä˜'_ S¨ôñÆIË1’Ï«{$<—ü£Ë†/hâùçí鞆Q ^no¨¤ÙÆÛb¦Ið›b¸ÇÇÿïªõ<*õØ+ÿu‹È4j¿\’2ÿÙ….xýPßúäû#Ie ƒÀ îUâs¢ï‡6Ê c;âæ×]Fi“eâGêr¢•oöF•ï¦4³v×]fð÷–J!Ôy®€T•2³ñ=ñòúàÉVVƒ07×vÖ-3£‰*SVûÃù9î–xŠ`W§€¶(öî=æ<]‹AôgÍN¡ag8Xº ÇŽ"h´YNQ‰ge"øäÕVMëÍ ¶.Xºö÷§Cµ`©Ì3èd Èø~Y-Rràÿ|Í.ׇç´(6æ5 Æëd]Ë/œ,úF¯aE° >^å‚ nEïû­~ ý”^yÕÇ«{k®ê è7}äht¶ x³­ÿ~³@{Í•`B‹û›OÅYZÖ]¬9\G7¶õ ÈÚ^D¹§¬àEýúpbn8‡ø;¤ïaÃ|äœ ç¦ŒøZîHœ¨G•~ë}ýšIK£×?qëÙI Ú¡ãW‹*w=7—>¡XÀÝ_íÌݼ¢Q¸8£áŒ¿‰]bóÔX‘ˆO¯«Yh s6Pw¨@{°ïhà…‡¿zqk’MýÛ\ó~£–jÚÇ–h€’ܦä¶K@ûQnÒJF×{kåî¿ê®­;q\Y¿Ï¯`õ¼ìY `I–,¥§g-@¸ßáÍcƒm®¿þ”lî!é½öIO¶,ëRúªê«’H3Ã)¶Kkô¶ê;ØPw­Q²µ³´(.kŒàUq¬öG™ÌŒ¿¼Ž×cy"¦ ·Ü×÷zwÐ[>+fÇì¤ó±ÌuÊÝÚzSYŽú;w :³ë\Ͷ2sƪWqzËÞ¾š¦–ÙlÇ­YWèóö®¿êm‹½²SîxÁ²ù’>)à~%·á»Þz—¬ÏL§Ûä–Ê8ëä˜HÐûÀ·l/ç'› º¤ž“Ò;~jÑ1Z;ñ0ÙuÈP÷SËjúa ápYŒ*t‚öp–WçÅ\¬UPÝT%»1‚áó¦6ï:anQÁ•æöõmCyi•+f’¥Àyy¨÷]Ñk¤ª©”Úݼ=¤Ñh\™öçµy’w2E³›]ÅVÛ‰ÒÝi<0'Nƒ—ÐÐóÕÚ¯ù4¿o çÓgFY ¼y¿&Ì”í´Fö²TëÛ%·U4ó ðCµR^ô†¥l2ˆMæ.›š>/µýÊÍ΋oƒ½•§µ¼UkÍ[P¶¾=Z¬jòßg^¶t­H_½ý´ÐO½ôW ‡n_«ûô¬V|nú£ZÌ3§Ú޶R»þ|9d»ÞÜ[2¶hóìtVe ˜¥ö3ªãç‡G”;É¥¹Þ¦k“Ê –ÓäÂyÍ»þ³ÇUèO^ÖíçîºÆÑ¢_6Q#¬ª¹i¿Ó-gð®ÞµÚì1o›*W~ûblú5òÍTÇØ´¬ k¯ŒJnÌaÓîfÞlzýzmJÍmËž=?§Ó­ìÒÕJÙF†Ï6ua”;c/{A:ó¢ú)+ÛYvËγUy×™Sä4G/­ØtJŠ‹bºõá3«V÷¨•ä“$N&3ÞTámœ[ šÉa"P+%wjšM”z-ìl–Ξ÷.Ú½WÂY×bõNµö6«Óõ2õ07š­lµ´/i4mwFF“Ëb¹7êµ]Ó¯ím´XŒšžñ’²}·?DFŠì²–µ(ëegÏífaÒTÆWÓ¹¦¦Sí^ׯCÊÈçTž¬´²ÏÕŠ(Íš³×í4(lѪò°¤U¾Mòñè¡b/4fÁ ˆÅ†^CKmÅ·lÚP¬Åƒõìèó]yî*ƒç©9¦+è4Ç–ü5Æ«šý ;¯¦ÚíÓ¬Û]vKºØ½¾V_|ÙbZM?û¸ÜU-5åïèM6¦^¹Kéf¢7*Þtöh1éá”Ó~[3<ÍÅB¥þÒY'kMkjg ÞªéÄã‡Ñ,Ë{¹Þ £9þ4ÕÍí8Û/^RéÙÔï²å«Ã-V}p“Õv ª$·©jéåf¤Œfö±´Y©’\nëg!bY=•Ï–õv1Ý5ÞP¾”2ÜeݵTéØfë+z¯Á'Fð¼~íÍ×~ãe4ϱd¶îæé·¶ÝT¦¼Úœc ±j eÓoÿ™:¹Ýk 9(ÙEö~Ýœö3þêa6ßuê™R¥8e€ÞF%•3ûö~n÷­×ß—«ê\ñ§ov÷ÖíŒb<Õ—ö^%¨,R `Å©v°híºÿµ×/ô\5¨í:LŸôÊ™Ee^(;ü5Uód¥ü0ÚsÑگłçiƒœ³‹U€žŒ:³A¾N 3àïív¢¶jkýˆXÛÕ|·óšA“×E=Õ›ŽêVm+Ãõa6ëçZ†(é§®¹l.z1{K¦ÍÃ~1›€GZ·ëÙ^[3˜×îåÓÛÒRwß|ΰn 1ÜÞŒ ë fFcÿ03Mkk½íúÃaVÓ1X±…heÀr´óiÑ}ÑiÖi´53|XR¥²\σÅöÁiU­M2Sìo»bùeX˜&'ÛÒÀ["à$/usQf,ß *Á £æ½¾·L³~«`M·íóÄð§³\fL«S{RïzÞsY·«eKþšÆ×Ån³µ¶¶½êoÆŠxä†]¾ŒY“UÐsº{®m-<Ó‘—Ú-“ùÜÃkÉYèÆ¼‡ô¾?MÎ}£¤7©…Go›J²iÏÇØ­e»Ý¬¹O/Gãto‚A-Æ=¤T «¶¨HzÉ1ëýh>Qo±r S§µmgÄ|¨˜‰`4އƒA¦ç&+}Q³Wå—írÙXÆÖµÍ~Š»mÎfµ^XÚôuÕ,O°²SµÙ~ÓØÞäÁ+ {ÚK®8éøV©·Yxo/Ë×eÇËé ]oõÜÒÚ0ó‹U{;yÛudŽ[Ýúö­ßÝW³Yð•õé>×ïŒs3Ñzé»Ù<“¦[µŸ§^®•i)ÖÚòÞ|­Òšúébyï³Ø~YO¥§*ÚvËÊbÍS–S݃êÎ4g…ʲߪXóg§±^Ìw¨²Î—b:Bã~ÎèÎ×ão™rRÓÍê­º‹e›Õ–[žÍ’‡Š4ÈÖÈó›^èÛŽÁK{¶YײýÖÛzZ.ä ,ëNy^$w‚æ›WìTÛ;º)µ}¦Åòå°‹Œ)³»…}z!b¥ß]æíÅ<]ÙÔ¹RLÏ™3˜#:(€mÔs…]wÆ»ÙÈõ{¾UÝ4k~²üü`obTyØÎÆ™‚˜¦åÁ°õx2¨äóùì|]`%„×Óùœ´ªÝVcîÍWvaƒ²SWþ»ü`Ës¦î(fªÑ|SÌÌÞÕž‹oÍ\Ù£ei:HU +=_õú¾¾Èí¸ýZ¢øÕMo ¤—¯«²) )Q®ÌDaŸìnµæÛçö¤ÃP¬ƒÜá~ØøµÑ®åæ)î:•UÚõå3Ê/ùlÒS]Ûª7›/ÖDÑÒ]01¾ßK£¼1Î’±U\ÕI©½ÛË4Öóf¸P(wôå^Q_’Mö:ã¹ZF¤'ŸáéeQ·«‚5Y¾)ÕF­¡%«Ó7²ì7D6¯w‡Õ2oó|{f•ÓVœpÍ\-šsµ±ã`ÂnÙµR¾²Û-æÆ^-fLZ*æ´`³a¸éR+ûÒòýýA©±¶è=×´²N …´2ƒ%‰ÍvîCËeÇfy¦çwhßô½|'c¹í×—ÒlRtæìaži>¤gEÆ6՗캘¥--ÿ2ß·}´ò&ë[ΠZ°bƒþRó &êóÎhfFjï6ÒýU’h£*x×lÿaÜ7²¯À˜æÞp`÷H¾Xß7ªmœE™I®ãhyeßž бA·ßTÔàÅ%3oÑš)MÔ²taÓ¯¼å9D5å¦5³ŠVcŸí÷öųšu±žvúã=ÎÓ¼mWmÏJ³W;×A1Þï×ÅÔ—*;Å×çFÊ//ÍRf÷œÒuÀcë­eÅòx·3NM‹)«:{®¯jù©•®—÷¹òé…VÞ&-{1µ_÷ÅÖêÅë(;TÓ=*Ì‹4×QšéΞ§³mß=ozsV¬ç³å¤Rωç¤óWú‹E[%-›£3w”—@í, Ív½î6fú¾®º‹77°ö ËÎ:3¥b®ÆÖ2¶™íZåVÉî§r^»¸Ô8зü²NfÆ ×·–6[“Eo»%J¥YJ‹JkµÑɾä•'[c—o‰œQ{ ‚a0í b€ÖéË:?md¼\sû’âãÊb ÌÖ¦}¬ò7çž¶Mgxî@Þ~ûâ¸Þ\·ßM#¬ c¹åào_Òº1{îÊæ¥¹xô†×©÷ƒö{1‚wצ Eäx¼ë’Àª¦ÑÇ8Ü&±ÿ»à{ìFûu$`A…¤§0¤i!ÍŒ³ÇãÝ„•4Ðo´ZS`„Bá ™£¸Ðß§Z<ÁTh‘^Û!–¦ãÊ IÂõ ¨ÿŽ—c'-ççN¼üGNö¿ ý¬~b&˜*Á#TEDx‰nà +Qñ‡pØx ¶ ¸à(ÿ=ðü æNû<@ÕnTMŵ!C@ñÁÝä7ÞÕÄ¡88%˜üíÿ­ùŒùb Œ™©TM93‰cFX ®]Ì2| ®t`w3f+?~½*‹ nw[nù²ú?¤ÊTû•$MPéäP4Tã*Š´7¼!<º‰*áÇ8Å qUÅàhñÿ’*ÿ™š#?¼òÝ¡µ€¿OŽ>7‡kËÜüv’Õ@?Í{¡Í0‘ …?‡×šÞñ ®6XÂàîðà´ ²ÕÓsåþs¢Ý ÌèöáÞuçaH þ>±¢3X¶QŠŠK¿{ý1¬ª äöÙÐ5VsXàø*ÂÁbûîí•çÉ ¶¾3aÖáDZânÆž”^à­ÌÛ77–“‰”—Ÿôù¶ÂQ]ù)µy[C®<Ó>x‚…}ðp®o­¹µ7‡ç8ðTÅwôE\JýþðÃÇŽ;4ýOžîö“ÇcÛèöU…Pf+ëÃfÃgßm„þÙ°7~ìc¤ÛìƒÍ9÷ µ%Ø-@Û,»2²€€?šó…/ìŒ!Þ;•®-ߨ×R„ºŽ…ÛR9ºC}Ùº´_¾ëØ»ÛjQ/ ‚(z‚åéÑîâÑQÏß«wX>7}¨úY×%GŽ÷§7=Õ3Ù“›0Œ§ŽëÍΦ]VÐî `zr&Poh£Ëã,’‡iÝÏÅ,ÿLeÞo@tØÝ+Je½³6r·mqØ\“5¾œ%{e‚ûü!~Ú£ùã(ÿÅÅîø»ýl*”‰Ã†vè”O6´¿Fnö ÄøŸßÏy¹³»‘ˆiH‘Á‰¢„-¡·!J̈áFÇÔG%ÁÅp! jLÆx ЕxÅ—rDáÒ¢A èâ0ÅdF˜B²Î=T!•ßC•&Lny‘âGM¸$ ¡!¡bUü~Þ¹ÄÁhHýz¶'‡Ã0Eõç É7!ºüñöó'@ ð”ÿý´Y>âXeTÜâ`†eºQž¬Re8r¼ .; bt!>K‹òš‡ÏPù1¬>R” š¢1© °ÚÈIð JåZ+/¨4Šá§Ê÷a#aÚ3Ú¹w’ c!4ŒÏ÷„äééœÂaŸ'ZéÛ(b¡€2ª„dD(Œ…&3™d…ª4tF Q„(@ 0#Ñv¢N!UˆÌø@`•“AW>¡*Sïœ.ü;è ,@èô—!AŒÑ? ‘KUSE¸ˆLR0™§V¤ý’ûÖ DTzvÉùyã ØJD90U9Š(‡ Î]c,4uj¸Î’÷Xk$ͧòÈÀD³ˆ I@Ì"c¤ßW.b§ Xk¬D¼€äy`NÂx&´ÖH4Ò0Kvb.©]¸žD¦BP¸x@ ÁÁœ¬ …®®¬ P F®¬ŠÄå}ú'Ð/³ÇXí÷À‡®¬ËÏú`¢i7\RU w#× â¾µ7ŸææÐZÍ¿FòáSt\9*Y랥;ÁUÙ&Ìn^ÁÄÌÀ˜ËsÄ-g’yR¢;ݶÆÎ“è^ MÃõ­‡ˆDH§ÇflSáø!?v,ݸÞð¶,lñ$‹¨Á¡%5U¶oÞ×í³øÂsÇžéû²4|ÝxV­ÄeæçÉöâP Ö1&®w­L£‡ƒó'Ö(x:Þ~½Hç°ðë üëá;ùœ§ß‡t„Gü–YiX–‹øŠ®£ô2àg®{3 Uá£0ÃhÙòåC²æç/l}÷d9ÑpÖ¦7²ÝÍéy”®ŒN‡ÉŸtÃXÍW"Ѫô¹eïž ¶¯ñ£ñˆG º0 kdÑÉßsˆc“Y! в5ð²@Q¤zaßNƒ`BT*"Ó"ÝE‡¯”bOÊDh%ÀÛÌ";¡@;Z²Ÿ'$…4 &Ð`ïQÄfHÄÀÍÌ4"-ƒÆ)p$C‹`ߎ1`‰DåÇTÄ ÒJ'ÀÒ„€!ƒHäp‡£ä†$ŠÂŽ™ -Éø8<@€eg\†¾Zèý×wy¦òK½ˆÌ\¸Ë/ÕÈ/¢€‘G'.Î3ɯ«À:÷ÇVv÷ºÊ£SSççšÇ}°ÿ k.Î^ÇýM ë?Ú{–D/|Ïû©*ú„¦å3šz/&‘6úއPà”Ö]Æf…éƒ%× JKpæp“Þ‘²ïæu•«È©é"LÃÊŒ+$ö EHR Aa©`ªdKp Ñ(Ä>Çk†´ˆ)ò0àÁ=“Ó‰W¹ö.€g¡ÛŒ±LÕ `‘cŽj…\ìØb¨jPöÉFe®X‰Ÿ‚D(ÍR¥8§<¤^0Ì0AL%‡8šF72 ?Œúg€¦†)="Ó@2¤“ 9¼&ߺ—9æü—qñCÎã§²$—ìîï'K(»8·|×þÊóY’ ›qeïA{˜Q´(Ñ’]’Œ|ež?JT©Ç«‰B¿CäÕ‘#ùK:(¿dy¤ƒpM~.»rJÀaöo%àÌíÂõ‚øv¸°¾}¹<•~[cwªqÓâ”N» …!B¤! CælA§4/Â3&ðÁŽáˆˆœ†Håi,íðfB‘Û7Zc±«ÀðT =\ÅèX ã©¡ø¡Ñ¸FåQýhЧÒý=âxu„ð|à½mV]:9dùÇÿÿ(-¥’LSþ±njw,ç?ݳm(ýõdÈ,nÓÀ°Œ‘%”N q /rw÷¼mÇN;·)ÚÃç+Jˆ…kHœ=“« Ú>–X¡*¹jìXvر‘bÈLåW㣠<Ò{·£'7DHÂf¢¿G>Þ–Eì—Éí†ÛUŽrñ}Šd¼«ŸK+>þÙa;á&+Å´[’p'vaBûã~üù~ßS¹¤]‡C‰?âN¦WSßíâd×ù{y"Œ@ß}‹M¹øâDòJ $@ files/META.${PROJECTNAME}: files/META.in ../Makefile.config ../Makefile.options Makefile echo directory = \"../server\" > $@ cat $< \ | sed s/%%CAMLZIPNAME%%/$(CAMLZIPNAME)/ \ | sed s/%%NAME%%/$(PROJECTNAME)/g \ | sed s/%%DEPS%%/$(shell ${OCAMLFIND} query -p-format -separator ',' ${SERVER_PACKAGE})/g \ | sed s/%%BASEDEPS%%/$(shell ${OCAMLFIND} query -p-format -separator ',' ${BASE_PACKAGE})/g \ | sed "s%package \"\(polytables\|commandline\|baselib\)\" (%package \"\1\" (\n directory = \"../baselib\"%" \ | sed "s%package \"\(http\|cookies\)\" (%package \"\1\" (\n directory = \"../http\"%" \ | sed "s%directory = \"extensions\"%directory = \"../extensions\"%" \ >> $@ ### CONF #### confs: ../$(PROJECTNAME).conf.sample ../local/etc/${PROJECTNAME}.conf ../$(PROJECTNAME).conf.sample: files/$(PROJECTNAME).conf.in ../Makefile.config Makefile cat $< \ | sed s%_LOGDIR_%$(LOGDIR)%g \ | sed s%_DATADIR_%$(DATADIR)%g \ | sed s%_OCSIGENUSER_%$(OCSIGENUSER)%g \ | sed s%_OCSIGENGROUP_%$(OCSIGENGROUP)%g \ | sed s%_COMMANDPIPE_%$(COMMANDPIPE)%g \ | sed s%_MIMEFILE_%$(CONFIGDIR)/mime.types%g \ | sed s%_METADIR_%$(LIBDIR)%g \ | sed s%_PROJECTNAME_%$(PROJECTNAME)%g \ | sed s%_LIBDIR_%$(LIBDIR)%g \ | sed s%_EXTDIR_%$(LIBDIR)/ocsigenserver/extensions%g \ | sed s%_CONFIGDIR_%$(CONFIGDIR)%g \ | sed s%_STATICPAGESDIR_%$(STATICPAGESDIR)%g \ | sed s%_EXTPACKAGENAME_%$(PROJECTNAME).ext%g \ > $@ ../local/etc/$(PROJECTNAME).conf: files/${PROJECTNAME}.conf.in ../Makefile.config Makefile cat $< \ | sed s%80\%8080\%g \ | sed s%_LOGDIR_%$(SRC)/local/var/log%g \ | sed s%_DATADIR_%$(SRC)/local/var/lib%g \ | sed s%\_OCSIGENUSER_\%%g \ | sed s%\_OCSIGENGROUP_\%%g \ | sed s%_COMMANDPIPE_%$(SRC)/local/var/run/${PROJECTNAME}_command%g \ | sed s%_MIMEFILE_%$(SRC)/src/files/mime.types%g \ | sed s%_METADIR_%${LIBDIR}\"/\>\\\ --\>%\%g \ | sed s%\<\!--\ \\ --\>%\%g \ | sed s%store\ dir=\"$(SRC)/var/lib\"%store\ dir=\"$(SRC)/local/var/lib/ocsipersist\"%g \ > $@ ### Install ### include Makefile.filelist VERSION := $(shell head -n 1 ../VERSION) install: INSTALL_BIN=$(BIN) $(NATBIN) install: INSTALL_IMPL=$(IMPL) $(NATIMPL) install: INSTALL_PLUGINS_IMPL=$(PLUGINS_IMPL) $(PLUGINS_NATIMPL) install: INSTALL_PLUGINS_BIN=$(PLUGINS_BIN) $(PLUGINS_NATBIN) install: raw_install install.byte: INSTALL_BIN=$(BIN) install.byte: INSTALL_IMPL=$(IMPL) install.byte: INSTALL_PLUGINS_IMPL=$(PLUGINS_IMPL) install.byte: INSTALL_PLUGINS_BIN=$(PLUGINS_BIN) install.byte: raw_install install.opt: INSTALL_BIN=$(NATBIN) install.opt: INSTALL_IMPL=$(NATIMPL) install.opt: INSTALL_PLUGINS_IMPL=$(PLUGINS_NATIMPL) install.opt: INSTALL_PLUGINS_BIN=$(PLUGINS_NATBIN) install.opt: raw_install raw_install: # Server binaries $(INSTALL) -m 755 -d $(TEMPROOT)$(BINDIR) $(INSTALL) -m 755 $(INSTALL_BIN) $(TEMPROOT)$(BINDIR)/ # Server libraries $(INSTALL) -m 755 -d $(TEMPROOT)$(LIBDIR) $(OCAMLFIND) install $(PROJECTNAME) \ -destdir $(TEMPROOT)$(LIBDIR) \ -patch-version ${VERSION} \ ${INTF} $(INSTALL_IMPL) $(DOC) files/META # Extensions $(INSTALL) -m 755 -d $(TEMPROOT)${LIBDIR}/${PROJECTNAME}/extensions/ $(INSTALL) -m 644 \ $(PLUGINS_INTF) $(INSTALL_PLUGINS_IMPL) $(PLUGINS_DOC) \ $(TEMPROOT)${LIBDIR}/${PROJECTNAME}/extensions/ [ -z "$(strip ${INSTALL_PLUGINS_BIN})" ] || \ $(INSTALL) -m 755 $(INSTALL_PLUGINS_BIN) \ $(TEMPROOT)${LIBDIR}/${PROJECTNAME}/extensions/ uninstall: # Extensions -rm -r $(TEMPROOT)${LIBDIR}/${PROJECTNAME}/extensions/ # Server libraries -$(OCAMLFIND) remove ${PROJECTNAME} -destdir $(TEMPROOT)${LIBDIR} # Server binaries -rm -r $(addprefix $(TEMPROOT)$(BINDIR)/,$(notdir ${BIN} ${NATBIN})) -rmdir --ignore-fail-on-non-empty $(TEMPROOT)$(BINDIR) reinstall: uninstall install ### clean: clean.local ${MAKE} -C baselib clean ${MAKE} -C http clean ${MAKE} -C server clean ${MAKE} -C extensions clean clean.local: -rm -f ../${PROJECTNAME}.conf.sample -rm -f ../${PROJECTNAME}.conf.opt.sample -rm -f ../${PROJECTNAME}.conf.local -rm -f ../${PROJECTNAME}.conf.opt.local -rm -f files/META files/META.${PROJECTNAME} distclean: clean.local ${MAKE} -C baselib distclean ${MAKE} -C http distclean ${MAKE} -C server distclean ${MAKE} -C extensions distclean -rm -f *~ \#* .\#* -cd files; rm -f *~ \#* .\#* -rm -fr ../local/var/log/*.log -rm -fr ../local/var/lib/ocsidb -rm -fr ../local/etc/${PROJECTNAME}.conf -rm -fr ../local/etc/${PROJECTNAME}.conf.opt depend: ${MAKE} -C baselib depend ${MAKE} -C http depend ${MAKE} -C server depend ${MAKE} -C extensions depend ocsigenserver-2.2.0/src/Makefile.filelist0000644000000000000000000000661612060404165016627 0ustar0000000000000000BIN := server/${PROJECTNAME} NATBIN := server/${PROJECTNAME}.opt INTF := baselib/ocsigen_cache.cmi \ baselib/ocsigen_lib_base.cmi \ baselib/ocsigen_lib.cmi \ baselib/ocsigen_config.cmi \ baselib/ocsigen_getcommandline.cmi \ baselib/ocsigen_messages.cmi \ baselib/ocsigen_stream.cmi \ baselib/ocsigen_loader.cmi \ baselib/polytables.cmi \ \ http/http_headers.cmi \ http/ocsigen_http_frame.cmi \ http/ocsigen_headers.cmi \ http/framepp.cmi \ http/ocsigen_http_com.cmi \ http/ocsigen_charset_mime.cmi \ http/ocsigen_senders.cmi \ http/ocsigen_cookies.cmi \ \ server/ocsigen_extensions.cmi \ server/ocsigen_parseconfig.cmi \ server/ocsigen_http_client.cmi \ server/ocsigen_local_files.cmi \ server/ocsigen_server.cmi \ IMPL := baselib/ocsigen_lib_base.cmo \ baselib/baselib.cma \ baselib/parsecommandline.cma \ baselib/donotparsecommandline.cma \ baselib/polytables.cmo \ \ http/ocsigen_cookies.cmo \ http/http.cma \ \ server/${PROJECTNAME}.cma \ server/server_main.cmo \ NATIMPL := $(patsubst %.cmo,%.cmx, $(filter %.cmo,${IMPL})) \ $(patsubst %.cmo,%.o , $(filter %.cmo,${IMPL})) \ $(patsubst %.cma,%.cmxa,$(filter %.cma,${IMPL})) \ $(patsubst %.cma,%.a, $(filter %.cma,${IMPL})) \ ifeq "$(NATDYNLINK)" "YES" NATIMPL += baselib/parsecommandline.cmxs \ baselib/donotparsecommandline.cmxs \ baselib/polytables.cmxs endif PLUGINS_BIN := PLUGINS_INTF := extensions/ocsigen_comet.cmi \ extensions/accesscontrol.cmi \ extensions/authbasic.cmi \ extensions/ocsipersist.cmi \ PLUGINS_IMPL := extensions/staticmod.cmo \ extensions/cgimod.cmo \ extensions/redirectmod.cmo \ extensions/revproxy.cmo \ extensions/extensiontemplate.cmo \ extensions/accesscontrol.cmo \ extensions/userconf.cmo \ extensions/outputfilter.cmo \ extensions/authbasic.cmo \ extensions/rewritemod.cmo \ extensions/extendconfiguration.cmo \ extensions/ocsigen_comet.cmo \ extensions/cors.cmo \ ifeq "$(CAMLZIP)" "YES" PLUGINS_IMPL += extensions/deflatemod.cmo endif ifeq "$(OCSIPERSISTSQLITE)" "YES" PLUGINS_IMPL += extensions/ocsipersist-sqlite.cma endif ifeq "$(OCSIPERSISTDBM)" "YES" PLUGINS_IMPL += extensions/ocsipersist-dbm.cma PLUGINS_BIN += extensions/ocsipersist-dbm/ocsidbm PLUGINS_NATBIN := extensions/ocsipersist-dbm/ocsidbm.opt endif PLUGINS_NATIMPL := $(patsubst %.cmo,%.cmx, $(filter %.cmo,${PLUGINS_IMPL})) \ $(patsubst %.cmo,%.o , $(filter %.cmo,${PLUGINS_IMPL})) \ $(patsubst %.cma,%.cmxa,$(filter %.cma,${PLUGINS_IMPL})) \ $(patsubst %.cma,%.a, $(filter %.cma,${PLUGINS_IMPL})) \ ifeq "$(NATDYNLINK)" "YES" PLUGINS_NATIMPL += $(patsubst %.cmo,%.cmxs, $(filter %.cmo,${PLUGINS_IMPL})) \ $(patsubst %.cma,%.cmxs, $(filter %.cma,${PLUGINS_IMPL})) endif DOC := ${INTF:.cmi=.mli} PLUGINS_DOC := ${PLUGINS_INTF:.cmi=.mli} ocsigenserver-2.2.0/src/server/0000755000000000000000000000000012060404165014652 5ustar0000000000000000ocsigenserver-2.2.0/src/server/Makefile0000644000000000000000000000422412060404165016314 0ustar0000000000000000include ../../Makefile.config all: byte opt PACKAGE := ${SERVER_PACKAGE} ${SERVER_SYNTAX} ## See ../../Makefile.options LIBS := -I ../baselib -I ../http ${addprefix -package ,${PACKAGE}} -I . OCAMLC := $(OCAMLFIND) ocamlc${BYTEDBG} ${THREAD} OCAMLOPT := $(OCAMLFIND) ocamlopt ${OPTDBG} ${THREAD} OCAMLDOC := $(OCAMLFIND) ocamldoc OCAMLDEP := $(OCAMLFIND) ocamldep all: byte opt ### Common files ### FILES := ocsigen_extensions.ml \ ocsigen_range.ml \ ocsigen_parseconfig.ml \ ocsigen_http_client.ml \ ocsigen_local_files.ml \ ocsigen_server.ml \ byte:: ${PROJECTNAME}.cma opt:: ${PROJECTNAME}.cmxa ${PROJECTNAME}.cma: $(FILES:.ml=.cmo) ${OCAMLC} -a -o $@ $^ ${PROJECTNAME}.cmxa: $(FILES:.ml=.cmx) ${OCAMLOPT} -a -o $@ $^ ### Server ### byte:: ${PROJECTNAME} opt:: ${PROJECTNAME}.opt ifdef DONOTPARSECOMMANDLINE PARSECOMMANDLINE := ../baselib/donotparsecommandline.cma else PARSECOMMANDLINE := ../baselib/parsecommandline.cma endif SERVERLIBS := ${PARSECOMMANDLINE} \ ../baselib/baselib.cma \ ../baselib/polytables.cma \ ../http/http.cma \ ${PROJECTNAME}.cma \ SERVEROBJS := server_main.cmo ${PROJECTNAME}: ${SERVERLIBS} ${SERVEROBJS} ${OCAMLC} -o $@ -linkpkg -linkall ${THREAD} ${LIBS} $^ ${PROJECTNAME}.opt: ${SERVERLIBS:.cma=.cmxa} ${SERVEROBJS:.cmo=.cmx} ${OCAMLOPT} -o $@ -linkpkg -linkall ${THREAD} ${LIBS} $^ ### Toplevel #### top: servertop OCAMLPATH=${SRC}/src/files/:${OCAMLPATH} ${RLWRAP} ./servertop servertop: ${SERVERLIBS} OCAMLPATH=${SRC}/src/files/:${OCAMLPATH} ${OCAMLFIND} ocamlmktop \ -o $@ -linkall -linkpkg ${THREAD} ${LIBS} $^ ########## %.cmi: %.mli $(OCAMLC) ${LIBS} -c $< %.cmo: %.ml $(OCAMLC) ${LIBS} -c $< %.cmx: %.ml $(OCAMLOPT) ${LIBS} -c $< %.cmxs: %.cmxa $(OCAMLOPT) -shared -linkall -o $@ $< %.o: %.c $(OCAMLC) -c $< ## Clean up clean: -rm -f *.cm[ioax] *.cmxa *.cmxs *.o *.a *.annot -rm -f ${PREDEP} -rm -r ${PROJECTNAME} ${PROJECTNAME}.opt -rm -f servertop distclean: clean -rm -f *~ \#* .\#* ## Dependencies depend: ${PREDEP} $(OCAMLDEP) ${LIBS} *.mli *.ml > .depend FORCE: -include .depend ocsigenserver-2.2.0/src/server/ocsigen_extensions.ml0000644000000000000000000013257012060404165021122 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module ocsigen_extensions.ml * Copyright (C) 2005 2007 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (*****************************************************************************) (*****************************************************************************) (*****************************************************************************) (*****************************************************************************) (** Writing extensions for Ocsigen *) (* TODO - awake must be called after each Ext_found or Ext_found_continue_with or Ext_found_stop sent by an extension. It is perhaps called too often. *) open Lwt open Ocsigen_lib open Ocsigen_cookies exception Ocsigen_http_error of (Ocsigen_cookies.cookieset * int) exception Ocsigen_Looping_request (** Xml tag not recognized by an extension (usually not a real error) *) exception Bad_config_tag_for_extension of string (** Error in a tag inside the main ocsigen.conf file *) exception Error_in_config_file of string (** Option incorrect in a userconf file *) exception Error_in_user_config_file of string let badconfig fmt = Printf.ksprintf (fun s -> raise (Error_in_config_file s)) fmt (*****************************************************************************) (* virtual hosts: *) type virtual_hosts = (string * Netstring_pcre.regexp * int option) list (* We cannot use generic comparison, as regexpes are abstract values that cannot be compared or hashed. However the string essentially contains the value that is compiled into a regexp, and we compare this instead *) let hash_virtual_hosts (l : virtual_hosts) = Hashtbl.hash (List.map (fun (s, _, p) -> (s, p)) l) let rec equal_virtual_hosts (l1 : virtual_hosts) (l2 : virtual_hosts) = match l1, l2 with | [], [] -> true | [], _::_ | _::_, [] -> false | (s1, _, p1) :: q1, (s2, _, p2) :: q2 -> s1 = s2 && p1 = p2 && equal_virtual_hosts q1 q2 (*****************************************************************************) type client = Ocsigen_http_com.connection let client_id = Ocsigen_http_com.connection_id let client_connection x = x let client_of_connection x = x (*****************************************************************************) (* Server configuration, for local files that must not be sent *) type do_not_serve = { do_not_serve_regexps: string list; do_not_serve_files: string list; do_not_serve_extensions: string list; } (* BY TODO : Use unbalanced trees instead *) let join_do_not_serve d1 d2 = { do_not_serve_regexps = d1.do_not_serve_regexps @ d2.do_not_serve_regexps; do_not_serve_files = d1.do_not_serve_files @ d2.do_not_serve_files; do_not_serve_extensions = d1.do_not_serve_extensions @ d2.do_not_serve_extensions; } let hash_consed_do_not_serve = Hashtbl.create 17 exception IncorrectRegexpes of do_not_serve let do_not_serve_to_regexp d = try Hashtbl.find hash_consed_do_not_serve d with Not_found -> let wrap l = if l = [] then None else Some l and bind f = function None -> None | Some v -> Some (f v) in let files, extensions, regexps = wrap d.do_not_serve_files, wrap d.do_not_serve_extensions, wrap d.do_not_serve_regexps in let paren_quote l = String.concat "|" (List.map (fun s -> Printf.sprintf "(%s)" (Netstring_pcre.quote s)) l) and paren l = String.concat "|" (List.map (fun s -> Printf.sprintf "(%s)" s) l) in let files = bind paren_quote files and extensions = bind paren_quote extensions and regexps = bind paren regexps in let files = bind (Printf.sprintf ".*/(%s)") files and extensions = bind (Printf.sprintf ".*\\.(%s)") extensions in let l = List.fold_left (fun r -> function None -> r | Some v -> v :: r) [] [files;extensions;regexps] in let regexp = if l = [] then (* This regexp should not never match *) "$^" else Printf.sprintf "^(%s)$" (paren l) in (try Ocsigen_messages.debug (fun () -> Printf.sprintf "Compiling exclusion regexp %s" regexp); let r = Netstring_pcre.regexp regexp in Hashtbl.add hash_consed_do_not_serve d r; r with _ -> raise (IncorrectRegexpes d) ) (*****************************************************************************) (* Main server configuration *) type config_info = { default_hostname: string; default_httpport: int; default_httpsport: int; mime_assoc: Ocsigen_charset_mime.mime_assoc; charset_assoc : Ocsigen_charset_mime.charset_assoc; (** Default name to use as index file when a directory is requested. Use [None] if no index should be tried. The various indexes are tried in the given order. If no index is specified, or the index does not exists, the content of the directory might be listed, according to [list_directry_content] *) default_directory_index : string list; (** Should the list of files in a directory be displayed if there is no index in this directory ? *) list_directory_content : bool; (** Should symlinks be followed when accessign a local file? *) follow_symlinks: follow_symlink; do_not_serve_404: do_not_serve; do_not_serve_403: do_not_serve; uploaddir: string option; maxuploadfilesize: int64 option; } and follow_symlink = | DoNotFollowSymlinks (** Never follow a symlink *) | FollowSymlinksIfOwnerMatch (** Follow a symlink if the symlink and its target have the same owner *) | AlwaysFollowSymlinks (** Always follow symlinks *) (* Requests *) type ifrange = IR_No | IR_Ifunmodsince of float | IR_ifmatch of string type file_info = { tmp_filename: string; filesize: int64; raw_original_filename: string; original_basename: string ; file_content_type: (string * string option) option; } type request_info = {ri_url_string: string; (** full URL *) ri_method: Ocsigen_http_frame.Http_header.http_method; (** GET, POST, HEAD... *) ri_protocol: Ocsigen_http_frame.Http_header.proto; (** HTTP protocol used by client *) ri_ssl: bool; (** true if HTTPS, false if HTTP *) ri_full_path_string: string; (** full path of the URL *) ri_full_path: string list; (** full path of the URL *) ri_original_full_path_string: string; (** full path of the URL, as first sent by the client. Should not be changed by extensions, even rewritemod. It is used to create relative links. *) ri_original_full_path: string list; (** full path of the URL, as first sent by the client. See below. *) ri_sub_path: string list; (** path of the URL (only part concerning the site) *) ri_sub_path_string: string; (** path of the URL (only part concerning the site) *) ri_get_params_string: string option; (** string containing GET parameters *) ri_host: string option; (** Host field of the request (if any), without port *) ri_port_from_host_field: int option; (** Port in the host field of the request (if any) *) ri_get_params: (string * string) list Lazy.t; (** Association list of get parameters *) ri_initial_get_params: (string * string) list Lazy.t; (** Association list of get parameters, as sent by the browser (must not be modified by extensions) *) ri_post_params: (config_info -> (string * string) list Lwt.t) option; (** Association list of post parameters, if urlencoded form parameters or multipart data. None if other content type or no content. *) ri_files: (config_info -> (string * file_info) list Lwt.t) option; (** Files sent in the request (multipart data). None if other content type or no content. *) ri_remote_inet_addr: Unix.inet_addr; (** IP of the client *) ri_remote_ip: string; (** IP of the client *) ri_remote_ip_parsed: Ip_address.t Lazy.t; (** IP of the client, parsed *) ri_remote_port: int; (** Port used by the client *) ri_forward_ip: string list; (** IPs of gateways the request went throught *) ri_server_port: int; (** Port of the request (server) *) ri_user_agent: string; (** User_agent of the browser *) ri_cookies_string: string option Lazy.t; (** Cookies sent by the browser *) ri_cookies: string CookiesTable.t Lazy.t; (** Cookies sent by the browser *) ri_ifmodifiedsince: float option; (** if-modified-since field *) ri_ifunmodifiedsince: float option; (** if-unmodified-since field *) ri_ifnonematch: string list option; (** if-none-match field ( * and weak entity tags not implemented) *) ri_ifmatch: string list option; (** if-match field ( * not implemented) *) ri_content_type: ((string * string) * (string * string) list) option; (** Content-Type HTTP header *) ri_content_type_string: string option; (** Content-Type HTTP header *) ri_content_length: int64 option; (** Content-Length HTTP header *) ri_referer: string option Lazy.t; (** Referer HTTP header *) ri_origin: string option Lazy.t; (** Where the cross-origin request or preflight request originates from. http://www.w3.org/TR/cors/#origin-request-header *) ri_access_control_request_method : string option Lazy.t; (** which method will be used in the actual request as part of the preflight request. http://www.w3.org/TR/cors/#access-control-request-method-request-he*) ri_access_control_request_headers : string list option Lazy.t; (** Which headers will be used in the actual request as part of the preflight request. http://www.w3.org/TR/cors/#access-control-request-headers-request-h *) ri_accept: Http_headers.accept Lazy.t; (** Accept HTTP header. For example [(Some "text", None)] means ["text/*"]. The float is the "quality" value, if any. The last association list is for other extensions. *) ri_accept_charset: (string option * float option) list Lazy.t; (** Accept-Charset HTTP header. [None] for the first value means "*". The float is the "quality" value, if any. *) ri_accept_encoding: (string option * float option) list Lazy.t; (** Accept-Encoding HTTP header. [None] for the first value means "*". The float is the "quality" value, if any. *) ri_accept_language: (string * float option) list Lazy.t; (** Accept-Language HTTP header. The float is the "quality" value, if any. *) ri_http_frame: Ocsigen_http_frame.t; (** The full http_frame *) mutable ri_request_cache: Polytables.t; (** Use this to put anything you want, for example, information for subsequent extensions *) ri_client: client; (** The request connection *) ri_range: ((int64 * int64) list * int64 option * ifrange) option Lazy.t; (** Range HTTP header. [None] means all the document. List of intervals + possibly from an index to the end of the document. *) ri_timeofday: float; (** An Unix timestamp computed at the beginning of the request *) mutable ri_nb_tries: int; (** For internal use: used to prevent loops of requests *) ri_connection_closed: unit Lwt.t; (** a thread waking up when the connection is closed *) } and request = { request_info: request_info; request_config: config_info; } exception Ocsigen_Is_a_directory of request type answer = | Ext_do_nothing (** I don't want to do anything *) | Ext_found of (unit -> Ocsigen_http_frame.result Lwt.t) (** "OK stop! I will take the page. You can start the following request of the same pipelined connection. Here is the function to generate the page". The extension must return Ext_found as soon as possible when it is sure it is safe to start next request. Usually immediately. But in some case, for example proxies, you don't want the request of one connection to be handled in different order. (for example revproxy.ml starts its requests to another server before returning Ext_found, to ensure that all requests are done in same order). *) | Ext_found_stop of (unit -> Ocsigen_http_frame.result Lwt.t) (** Found but do not try next extensions *) | Ext_next of int (** Page not found. Try next extension. The integer is the HTTP error code. It is usally 404, but may be for ex 403 (forbidden) if you want another extension to try after a 403. Same as Ext_continue_with but does not change the request. *) | Ext_stop_site of (Ocsigen_cookies.cookieset * int) (** Error. Do not try next extension, but try next site. The integer is the HTTP error code, usally 403. *) | Ext_stop_host of (Ocsigen_cookies.cookieset * int) (** Error. Do not try next extension, do not try next site, but try next host. The integer is the HTTP error code, usally 403. *) | Ext_stop_all of (Ocsigen_cookies.cookieset * int) (** Error. Do not try next extension, do not try next site, do not try next host. The integer is the HTTP error code, usally 403. *) | Ext_continue_with of (request * Ocsigen_cookies.cookieset * int) (** Used to modify the request before giving it to next extension. The extension returns the request (possibly modified) and a set of cookies if it wants to set or cookies ({!Ocsigen_cookies.Cookies.empty} for no cookies). You must add these cookies yourself in request if you want them to be seen by subsequent extensions, for example using {!Ocsigen_http_frame.compute_new_ri_cookies}. The integer is usually equal to the error code received from preceding extension (but you may want to modify it). *) | Ext_retry_with of request * Ocsigen_cookies.cookieset (** Used to retry all the extensions with a new request. The extension returns the request (possibly modified) and a set of cookies if it wants to set or cookies ({!Ocsigen_cookies.Cookies.empty} for no cookies). You must add these cookies yourself in request if you want them to be seen by subsequent extensions, for example using {!Ocsigen_http_frame.compute_new_ri_cookies}. *) | Ext_sub_result of extension2 (** Used if your extension want to define option that may contain other options from other extensions. In that case, while parsing the configuration file, call the parsing function (of type [parse_fun]), that will return something of type [extension2]. *) | Ext_found_continue_with of (unit -> (Ocsigen_http_frame.result * request) Lwt.t) (** Same as [Ext_found] but may modify the request. *) | Ext_found_continue_with' of (Ocsigen_http_frame.result * request) (** Same as [Ext_found_continue_with] but does not allow to delay the computation of the page. You should probably not use it, but for output filters. *) and request_state = | Req_not_found of (int * request) | Req_found of (request * Ocsigen_http_frame.result) and extension2 = (unit -> unit) -> Ocsigen_cookies.cookieset -> request_state -> (answer * Ocsigen_cookies.cookieset) Lwt.t type extension = request_state -> answer Lwt.t type parse_fun = Simplexmlparser.xml list -> extension2 type parse_host = Parse_host of (Url.path -> parse_host -> parse_fun -> Simplexmlparser.xml -> extension) let (hosts : (virtual_hosts * config_info * extension2) list ref) = ref [] let set_hosts v = hosts := v let get_hosts () = !hosts (*****************************************************************************) (* To give parameters to extensions: *) let dynlinkconfig = ref ([] : Simplexmlparser.xml list) let set_config s = dynlinkconfig := s let get_config () = !dynlinkconfig (*****************************************************************************) let site_match request (site_path : string list) url = (* We are sure that there is no / at the end or beginning of site_path *) (* and no / at the beginning of url *) (* and no // or ../ inside both of them *) (* We return the subpath without / at beginning *) let rec aux site_path url = match site_path, url with | [], [] -> raise (Ocsigen_Is_a_directory request) | [], p -> Some p | a::l, aa::ll when a = aa -> aux l ll | _ -> None in match site_path, url with | [], [] -> Some [] | _ -> aux site_path url let add_to_res_cookies res cookies_to_set = if cookies_to_set = Ocsigen_cookies.Cookies.empty then res else {res with Ocsigen_http_frame.res_cookies = Ocsigen_cookies.add_cookies res.Ocsigen_http_frame.res_cookies cookies_to_set} let make_ext awake cookies_to_set req_state (genfun : extension) (genfun2 : extension2) = genfun req_state >>= fun res -> let rec aux cookies_to_set = function | Ext_do_nothing -> genfun2 awake cookies_to_set req_state | Ext_found r -> awake (); r () >>= fun r' -> let ri = match req_state with | Req_found (ri, _) -> ri | Req_not_found (_, ri) -> ri in genfun2 id (* already awoken *) Ocsigen_cookies.Cookies.empty (Req_found (ri, add_to_res_cookies r' cookies_to_set)) | Ext_found_continue_with r -> awake (); r () >>= fun (r', req) -> genfun2 id (* already awoken *) Ocsigen_cookies.Cookies.empty (Req_found (req, add_to_res_cookies r' cookies_to_set)) | Ext_found_continue_with' (r', req) -> awake (); genfun2 id (* already awoken *) Ocsigen_cookies.Cookies.empty (Req_found (req, add_to_res_cookies r' cookies_to_set)) | Ext_next e -> let ri = match req_state with | Req_found (ri, _) -> ri | Req_not_found (_, ri) -> ri in genfun2 awake cookies_to_set (Req_not_found (e, ri)) | Ext_continue_with (ri, cook, e) -> genfun2 awake (Ocsigen_cookies.add_cookies cook cookies_to_set) (Req_not_found (e, ri)) | Ext_found_stop _ | Ext_stop_site _ | Ext_stop_host _ | Ext_stop_all _ | Ext_retry_with _ as res -> Lwt.return (res, cookies_to_set) | Ext_sub_result sr -> sr awake cookies_to_set req_state >>= fun (res, cookies_to_set) -> aux cookies_to_set res in aux cookies_to_set res (*****************************************************************************) let fun_beg = ref (fun () -> ()) let fun_end = ref (fun () -> ()) let fun_exn = ref (fun exn -> (raise exn : string)) let rec default_parse_config (host : virtual_hosts) config_info prevpath (Parse_host parse_host) (parse_fun : parse_fun) = function | Simplexmlparser.Element ("site", atts, l) -> let rec parse_site_attrs (enc,dir) = function | [] -> (match dir with | None -> raise (Ocsigen_config.Config_file_error ("Missing dir attribute in ")) | Some s -> (enc, s)) | ("path", s)::suite | ("dir", s)::suite -> (match dir with | None -> parse_site_attrs (enc, Some s) suite | _ -> raise (Ocsigen_config.Config_file_error ("Duplicate attribute dir in "))) | ("charset", s)::suite -> (match enc with | None -> parse_site_attrs ((Some s), dir) suite | _ -> raise (Ocsigen_config.Config_file_error ("Duplicate attribute charset in "))) | (s, _)::_ -> raise (Ocsigen_config.Config_file_error ("Wrong attribute for : "^s)) in let charset, dir = parse_site_attrs (None, None) atts in let path = prevpath@ Url.remove_slash_at_end (Url.remove_slash_at_beginning (Url.remove_dotdot (Neturl.split_path dir))) in let parse_config = make_parse_config path parse_host l in let ext awake cookies_to_set = function | Req_found (ri, res) -> Lwt.return (Ext_found_continue_with' (res, ri), cookies_to_set) | Req_not_found (e, oldri) -> let oldri = match charset with | None -> oldri | Some charset -> { oldri with request_config = { oldri.request_config with charset_assoc = Ocsigen_charset_mime.set_default_charset oldri.request_config.charset_assoc charset } } in match site_match oldri path oldri.request_info.ri_full_path with | None -> Ocsigen_messages.debug (fun () -> "site \""^ (Url.string_of_url_path ~encode:true path)^ "\" does not match url \""^ (Url.string_of_url_path ~encode:true oldri.request_info.ri_full_path)^ "\"."); Lwt.return (Ext_next e, cookies_to_set) | Some sub_path -> Ocsigen_messages.debug (fun () -> "-------- site found: url \""^ (Url.string_of_url_path ~encode:true oldri.request_info.ri_full_path)^ "\" matches \""^ (Url.string_of_url_path ~encode:true path)^"\"."); let ri = {oldri with request_info = { oldri.request_info with ri_sub_path = sub_path; ri_sub_path_string = Url.string_of_url_path ~encode:true sub_path} } in parse_config awake cookies_to_set (Req_not_found (e, ri)) >>= function (* After a site, we turn back to old ri *) | (Ext_stop_site (cs, err), cookies_to_set) | (Ext_continue_with (_, cs, err), cookies_to_set) -> Lwt.return (Ext_continue_with (oldri, cs, err), cookies_to_set) | (Ext_found_continue_with r, cookies_to_set) -> awake (); r () >>= fun (r', req) -> Lwt.return (Ext_found_continue_with' (r', oldri), cookies_to_set) | (Ext_found_continue_with' (r, req), cookies_to_set) -> Lwt.return (Ext_found_continue_with' (r, oldri), cookies_to_set) | (Ext_do_nothing, cookies_to_set) -> Lwt.return (Ext_continue_with (oldri, Ocsigen_cookies.Cookies.empty, e), cookies_to_set) | r -> Lwt.return r in (function | Req_found (ri, r) -> Lwt.return (Ext_found_continue_with' (r, ri)) | Req_not_found (err, ri) -> Lwt.return (Ext_sub_result ext)) | Simplexmlparser.Element (tag,_,_) -> raise (Bad_config_tag_for_extension tag) | _ -> raise (Ocsigen_config.Config_file_error ("Unexpected content inside ")) and make_parse_config path parse_host l : extension2 = let f = parse_host path (Parse_host parse_host) in (* creates all site data, if any *) let rec parse_config : _ -> extension2 = function | [] -> (fun (awake : unit -> unit) cookies_to_set -> function | Req_found (ri, res) -> Lwt.return (Ext_found_continue_with' (res, ri), cookies_to_set) | Req_not_found (e, ri) -> Lwt.return (Ext_continue_with (ri, Ocsigen_cookies.Cookies.empty, e), cookies_to_set)) (* was Lwt.return (Ext_next e, cookies_to_set)) but to use make_parse_site with userconf, we need to know current ri after parsing the sub-configuration. *) | xmltag::ll -> try let genfun = f parse_config xmltag in let genfun2 = parse_config ll in fun awake cookies_to_set req_state -> make_ext awake cookies_to_set req_state genfun genfun2 with | Bad_config_tag_for_extension t -> (* This case happens only if no extension has recognized the tag at all *) badconfig "Unexpected tag <%s> inside " t (Url.string_of_url_path ~encode:true path) | Error_in_config_file _ as e -> raise e | e -> badconfig "Error while parsing configuration file: %s" (try !fun_exn e with e -> Printexc.to_string e) in !fun_beg (); let r = try parse_config l with e -> !fun_end (); raise e (*VVV May be we should avoid calling fun_end after parinf user config files (with extension userconf) ... See eliommod.ml *) in !fun_end (); r (*****************************************************************************) type userconf_info = { localfiles_root : string; } type parse_config = virtual_hosts -> config_info -> parse_config_aux and parse_config_user = userconf_info -> parse_config and parse_config_aux = Url.path -> parse_host -> (parse_fun -> Simplexmlparser.xml -> extension ) let user_extension_void_fun_site : parse_config_user = fun _ _ _ _ _ _ -> function | Simplexmlparser.Element (t, _, _) -> raise (Bad_config_tag_for_extension t) | _ -> raise (Error_in_config_file "Unexpected data in config file") let extension_void_fun_site : parse_config = fun _ _ _ _ _ -> function | Simplexmlparser.Element (t, _, _) -> raise (Bad_config_tag_for_extension t) | _ -> raise (Error_in_config_file "Unexpected data in config file") let register_extension, parse_config_item, parse_user_site_item, get_beg_init, get_end_init, get_init_exn_handler = let ref_fun_site = ref default_parse_config in let ref_user_fun_site = ref (fun (_ : userconf_info) -> default_parse_config) in ((* ********* register_extension ********* *) (fun ?fun_site ?user_fun_site ?begin_init ?end_init ?(exn_handler=raise) ?(respect_pipeline=false) () -> if respect_pipeline then Ocsigen_config.set_respect_pipeline (); (match fun_site with | None -> () | Some fun_site -> let old_fun_site = !ref_fun_site in ref_fun_site := (fun host conf_info -> let oldf = old_fun_site host conf_info in let newf = fun_site host conf_info in fun path parse_host -> let oldf = oldf path parse_host in let newf = newf path parse_host in fun parse_config config_tag -> try oldf parse_config config_tag with | Bad_config_tag_for_extension c -> newf parse_config config_tag )); (match user_fun_site with | None -> () | Some user_fun_site -> let old_fun_site = !ref_user_fun_site in ref_user_fun_site := (fun path host conf_info -> let oldf = old_fun_site path host conf_info in let newf = user_fun_site path host conf_info in fun path parse_host -> let oldf = oldf path parse_host in let newf = newf path parse_host in fun parse_config config_tag -> try oldf parse_config config_tag with | Bad_config_tag_for_extension c -> newf parse_config config_tag )); (match begin_init with | Some begin_init -> fun_beg := comp begin_init !fun_beg | None -> ()); (match end_init with | Some end_init -> fun_end := comp end_init !fun_end; | None -> ()); let curexnfun = !fun_exn in fun_exn := fun e -> try curexnfun e with e -> exn_handler e), (* ********* parse_config_item ********* *) (fun host conf -> !ref_fun_site host conf), (* ********* parse_user_site_item ********* *) (fun host conf -> !ref_user_fun_site host conf), (* ********* get_beg_init ********* *) (fun () -> !fun_beg), (* ********* get_end_init ********* *) (fun () -> !fun_end), (* ********* get_init_exn_handler ********* *) (fun () -> !fun_exn) ) let default_parse_extension ext_name = function | [] -> () | _ -> raise (Error_in_config_file (Printf.sprintf "Unexpected content found in configuration of extension %s: %s does not accept options" ext_name ext_name)) let register_extension ~name ?fun_site ?user_fun_site ?begin_init ?end_init ?init_fun ?exn_handler ?respect_pipeline () = Ocsigen_loader.set_module_init_function name (fun () -> (match init_fun with | None -> default_parse_extension name (get_config ()) | Some f -> f (get_config ())); register_extension ?fun_site ?user_fun_site ?begin_init ?end_init ?exn_handler ?respect_pipeline ()) module Configuration = struct type attribute' = { attribute_obligatory : bool; attribute_value_func : string -> unit } type attribute = string * attribute' type element' = { obligatory : bool; init : unit -> unit; elements : element list; attributes : attribute list; pcdata : (string -> unit) option; other_elements : (string -> (string * string) list -> Simplexmlparser.xml list -> unit) option; other_attributes : (string -> string -> unit) option; } and element = string * element' let element ~name ?(obligatory=false) ?(init=ignore) ?(elements=[]) ?(attributes=[]) ?pcdata ?other_elements ?other_attributes () : element = name, { obligatory; init; elements; attributes; pcdata; other_elements; other_attributes } let attribute ~name ?(obligatory=false) f : attribute = name, { attribute_obligatory = obligatory; attribute_value_func = f } let ignore_blank_pcdata ~in_tag = fun str -> String.iter (fun c -> if not (List.mem c [' '; '\n'; '\r'; '\t']) then raise (Error_in_user_config_file ("Non-blank PCDATA in tag "^in_tag))) str let refuse_pcdata ~in_tag = fun _ -> raise (Error_in_user_config_file ("No PCDATA allowed in tag "^in_tag)) let check_attribute_occurrence ~in_tag ?other_elements attributes = function | name, { attribute_obligatory = true } -> (try ignore (List.assoc name attributes) with Not_found -> raise (Error_in_user_config_file ("Obligatory attribute "^name^" not in tag "^in_tag))) | _ -> () let check_element_occurrence ~in_tag elements = function | name, { obligatory = true } -> let corresponding_element = function | Simplexmlparser.Element (name', _, _) -> name = name' | _ -> false in if not (List.exists corresponding_element elements) then raise (Error_in_user_config_file ("Obligatory element "^name^" not in tag "^in_tag)) | _ -> () let process_attribute = fun ~in_tag ~attributes:spec_attributes ?other_attributes:spec_other_attributes (attribute, value) -> try (List.assoc attribute spec_attributes).attribute_value_func value with Not_found -> match spec_other_attributes with | Some spec_other_attributes -> spec_other_attributes attribute value | None -> raise (Error_in_user_config_file ("Unexpected attribute "^attribute^" in tag "^in_tag)) let rec process_element ~in_tag ~elements:spec_elements ?pcdata:spec_pcdata ?other_elements:spec_other_elements = function | Simplexmlparser.PCData str -> let spec_pcdata = Option.get (fun () -> ignore_blank_pcdata ~in_tag) spec_pcdata in spec_pcdata str | Simplexmlparser.Element (name, attributes, elements) -> try let spec = List.assoc name spec_elements in List.iter (check_attribute_occurrence ~in_tag:name attributes) spec.attributes; List.iter (check_element_occurrence ~in_tag:name elements) spec.elements; spec.init (); List.iter (process_attribute ~in_tag:name ~attributes:spec.attributes ?other_attributes:spec.other_attributes) attributes; List.iter (process_element ~in_tag:name ~elements:spec.elements ?pcdata:spec.pcdata ?other_elements:spec.other_elements) elements with Not_found -> match spec_other_elements with | Some spec_other_elements -> spec_other_elements name attributes elements | None -> raise (Error_in_user_config_file ("Unknown tag "^name^" in tag "^in_tag)) let process_elements ~in_tag ~elements:spec_elements ?pcdata ?other_elements ?(init=ignore) elements = List.iter (check_element_occurrence ~in_tag elements) spec_elements; init (); List.iter (process_element ~in_tag ~elements:spec_elements ?pcdata ?other_elements) elements end (*****************************************************************************) let start_initialisation, during_initialisation, end_initialisation, get_numberofreloads = let init = ref true in let nb = ref (-1) in ((fun () -> init := true; nb := !nb+1; ), (fun () -> !init), (fun () -> init := false; ), (fun () -> !nb)) (********) let host_match ~(virtual_hosts : virtual_hosts) ~host ~port = let port_match = function | None -> true | Some p -> p = port in match host with | None -> List.exists (fun (_, _, p) -> port_match p) virtual_hosts (*VVV Warning! For HTTP/1.0, when host is absent, we take the first one, even if it doesn't match! *) | Some host -> let host_match regexp = (Netstring_pcre.string_match regexp host 0 <> None) in let rec aux = function | [] -> false | (_, a, p)::l -> (port_match p && host_match a) || aux l in aux virtual_hosts (* Currently used only for error messages. *) let string_of_host (h : virtual_hosts) = let aux1 (host, _, port) = match port with | None -> host | Some p -> host ^ ":" ^ string_of_int p in List.fold_left (fun d arg -> d ^ aux1 arg ^" ") "" h let compute_result ?(previous_cookies = Ocsigen_cookies.Cookies.empty) ?(awake_next_request = false) ri = let host = ri.ri_host in let port = ri.ri_server_port in let conn = client_connection ri.ri_client in let awake = if awake_next_request then (let tobeawoken = ref true in (* must be awoken once and only once *) fun () -> if !tobeawoken then begin tobeawoken := false; Ocsigen_http_com.wakeup_next_request conn end) else id in let rec do2 sites cookies_to_set ri = ri.ri_nb_tries <- ri.ri_nb_tries + 1; if ri.ri_nb_tries > Ocsigen_config.get_maxretries () then fail Ocsigen_Looping_request else let string_of_host_option = function | None -> ":"^(string_of_int port) | Some h -> h^":"^(string_of_int port) in let rec aux_host ri prev_err cookies_to_set = function | [] -> fail (Ocsigen_http_error (cookies_to_set, prev_err)) | (h, conf_info, host_function)::l when host_match ~virtual_hosts:h ~host ~port -> Ocsigen_messages.debug (fun () -> "-------- host found! "^ (string_of_host_option host)^ " matches "^(string_of_host h)); host_function awake cookies_to_set (Req_not_found (prev_err, { request_info = ri; request_config = conf_info })) >>= fun (res_ext, cookies_to_set) -> (match res_ext with | Ext_found r | Ext_found_stop r -> awake (); r () >>= fun r' -> Lwt.return (add_to_res_cookies r' cookies_to_set) | Ext_do_nothing -> aux_host ri prev_err cookies_to_set l | Ext_found_continue_with r -> awake (); r () >>= fun (r', _) -> return (add_to_res_cookies r' cookies_to_set) | Ext_found_continue_with' (r, _) -> awake (); return (add_to_res_cookies r cookies_to_set) | Ext_next e -> aux_host ri e cookies_to_set l (* try next site *) | Ext_stop_host (cook, e) | Ext_stop_site (cook, e) -> aux_host ri e (Ocsigen_cookies.add_cookies cook cookies_to_set) l (* try next site *) | Ext_stop_all (cook, e) -> fail (Ocsigen_http_error (cookies_to_set, e)) | Ext_continue_with (_, cook, e) -> aux_host ri e (Ocsigen_cookies.add_cookies cook cookies_to_set) l | Ext_retry_with (request2, cook) -> do2 (get_hosts ()) (Ocsigen_cookies.add_cookies cook cookies_to_set) request2.request_info (* retry all *) | Ext_sub_result sr -> assert false ) | (h, _, _)::l -> Ocsigen_messages.debug (fun () -> "-------- host = "^ (string_of_host_option host)^ " does not match "^(string_of_host h)); aux_host ri prev_err cookies_to_set l in aux_host ri 404 cookies_to_set sites in Lwt.finalize (fun () -> do2 (get_hosts ()) previous_cookies ri ) (fun () -> awake (); Lwt.return () ) (*****************************************************************************) (* used to modify the url in ri (for example for retrying after rewrite) *) let ri_of_url ?(full_rewrite = false) url ri = let (_, host, _, url, path, params, get_params) = Url.parse url in let host = match host with | Some h -> host | None -> ri.ri_host in let path_string = Url.string_of_url_path ~encode:true path in let original_fullpath, original_fullpath_string = if full_rewrite then (path, path_string) else (ri.ri_original_full_path, ri.ri_original_full_path_string) in (* ri_original_full_path is not changed *) {ri with ri_url_string = url; ri_host = host; ri_full_path_string = path_string; ri_full_path = path; ri_original_full_path_string = original_fullpath_string; ri_original_full_path = original_fullpath; ri_sub_path = path; ri_sub_path_string = path_string; ri_get_params_string = params; ri_get_params = get_params; } (*****************************************************************************) (* This is used by server.ml. I put that here because I need it to be accessible for profiling. *) let sockets = ref [] let sslsockets = ref [] let get_number_of_connected, incr_connected, decr_connected, wait_fewer_connected = let connected = ref 0 in let maxr = ref (-1000) in let mvar = Lwt_mvar.create_empty () in ((fun () -> !connected), (fun n -> connected := !connected + n), (fun () -> let c = !connected in connected := c - 1; if !connected <= 0 && !sockets = [] && !sslsockets = [] then exit 0; if c = !maxr then begin Ocsigen_messages.warning "Number of connections now ok"; maxr := -1000; Lwt_mvar.put mvar () end else Lwt.return () ), (fun max -> maxr := max; Lwt_mvar.take mvar) ) let get_server_address ri = let socket = Ocsigen_http_com.connection_fd (client_connection ri.ri_client) in match Lwt_ssl.getsockname socket with | Unix.ADDR_UNIX _ -> failwith "unix domain socket have no ip" | Unix.ADDR_INET (addr,port) -> addr,port (*****************************************************************************) (* Default hostname is either the Host header or the hostname set in the configuration file. *) let get_hostname req = if Ocsigen_config.get_usedefaulthostname () then req.request_config.default_hostname else match req.request_info.ri_host with | None -> req.request_config.default_hostname | Some host -> host (*****************************************************************************) (* Default port is either - the port the server is listening at - or the port in the Host header - or the default port set in the configuration file. *) let get_port req = if Ocsigen_config.get_usedefaulthostname () then (if req.request_info.ri_ssl then req.request_config.default_httpsport else req.request_config.default_httpport) else match req.request_info.ri_port_from_host_field with | Some p -> p | None -> match req.request_info.ri_host with | Some _ -> if req.request_info.ri_ssl then 443 else 80 | None -> req.request_info.ri_server_port (*****************************************************************************) (* user directories *) exception NoSuchUser type ud_string = Nodir of string | Withdir of string * string * string let user_dir_regexp = Netstring_pcre.regexp "(.*)\\$u\\(([^\\)]*)\\)(.*)" let parse_user_dir s = match Netstring_pcre.full_split user_dir_regexp s with | [ Netstring_pcre.Delim _; Netstring_pcre.Group (1, s1); Netstring_pcre.Group (2, u); Netstring_pcre.Group (3, s2)] -> Withdir (s1, u, s2) | _ -> Nodir s let replace_user_dir regexp dest pathstring = match dest with | Nodir dest -> Netstring_pcre.global_replace regexp dest pathstring | Withdir (s1, u, s2) -> try let s1 = Netstring_pcre.global_replace regexp s1 pathstring in let u = Netstring_pcre.global_replace regexp u pathstring in let s2 = Netstring_pcre.global_replace regexp s2 pathstring in let userdir = (Unix.getpwnam u).Unix.pw_dir in Ocsigen_messages.debug (fun () -> "User " ^ u); s1^userdir^s2 with Not_found -> Ocsigen_messages.debug (fun () -> "No such user " ^ u); raise NoSuchUser (*****************************************************************************) (* Finding redirections *) exception Not_concerned let find_redirection regexp full_url dest https host port get_params_string sub_path_string full_path_string = if full_url then match host with | None -> raise Not_concerned | Some host -> let path = match get_params_string with | None -> full_path_string | Some g -> full_path_string ^ "?" ^ g in let path = Url.make_absolute_url https host port ("/"^path) in (match Netstring_pcre.string_match regexp path 0 with | None -> raise Not_concerned | Some _ -> (* Matching regexp found! *) Netstring_pcre.global_replace regexp dest path ) else let path = match get_params_string with | None -> sub_path_string | Some g -> sub_path_string ^ "?" ^ g in match Netstring_pcre.string_match regexp path 0 with | None -> raise Not_concerned | Some _ -> (* Matching regexp found! *) Netstring_pcre.global_replace regexp dest path (******************************************************************) (* Extending commands *) exception Unknown_command let register_command_function, get_command_function = let command_function = ref (fun ?prefix _ _ -> Lwt.fail Unknown_command) in ((fun ?prefix f -> let prefix' = prefix in let old_command_function = !command_function in command_function := (fun ?prefix s c -> Lwt.catch (fun () -> old_command_function ?prefix s c) (function | Unknown_command -> if prefix = prefix' then f s c else Lwt.fail Unknown_command | e -> Lwt.fail e))), (fun () -> !command_function)) ocsigenserver-2.2.0/src/server/ocsigen_server.ml0000644000000000000000000014135612060404165020233 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Copyright (C) 2005 * Vincent Balat, Denis Berthod, Nataliya Guts, Jérôme Vouillon * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) open Lwt open Ocsigen_messages open Ocsigen_lib open Ocsigen_extensions open Ocsigen_http_frame open Ocsigen_headers open Ocsigen_http_com open Ocsigen_senders open Ocsigen_config open Ocsigen_parseconfig open Ocsigen_cookies open Lazy exception Ocsigen_unsupported_media exception Ssl_Exception exception Ocsigen_upload_forbidden exception Socket_closed let shutdown = ref false let () = Random.self_init () let () = Ocsigen_commandline.cmdline (* This is only to have the module Ocsigen_commandline linked when we do not use -linkall *) (* Without the following line, it stops with "Broken Pipe" without raising an exception ... *) let _ = Sys.set_signal Sys.sigpipe Sys.Signal_ignore (* Initialize exception handler for Lwt timeouts: *) let _ = Lwt_timeout.set_exn_handler (fun e -> Ocsigen_messages.errlog ("Uncaught Exception after lwt timeout: "^ Printexc.to_string e)) let make_ipv6_socket addr port = let socket = Lwt_unix.socket Unix.PF_INET6 Unix.SOCK_STREAM 0 in Lwt_unix.set_close_on_exec socket; Lwt_unix.setsockopt socket Unix.SO_REUSEADDR true; Lwt_unix.setsockopt socket Unix.IPV6_ONLY true; Lwt_unix.bind socket (Unix.ADDR_INET (addr, port)); socket let make_ipv4_socket addr port = let socket = Lwt_unix.socket Unix.PF_INET Unix.SOCK_STREAM 0 in Lwt_unix.set_close_on_exec socket; Lwt_unix.setsockopt socket Unix.SO_REUSEADDR true; Lwt_unix.bind socket (Unix.ADDR_INET (addr, port)); socket let make_sockets addr port = match addr with | All -> (* The user didn't specify a protocol in the configuration file; we try to open an IPv6 socket (listening to IPv6 only) if possible and we open an IPv4 socket anyway. This corresponds to the net.ipv6.bindv6only=0 behaviour on Linux, but is portable and should work with net.ipv6.bindv6only=1 as well. *) let ipv6_socket = try [make_ipv6_socket Unix.inet6_addr_any port] with Unix.Unix_error ((Unix.EAFNOSUPPORT | Unix.EPROTONOSUPPORT), _, _) -> [] in (make_ipv4_socket Unix.inet_addr_any port)::ipv6_socket | IPv4 addr -> [make_ipv4_socket addr port] | IPv6 addr -> [make_ipv6_socket addr port] let sslctx = Ocsigen_http_client.sslcontext let ip_of_sockaddr = function | Unix.ADDR_INET (ip, port) -> ip | _ -> raise (Ocsigen_Internal_Error "ip of unix socket") let port_of_sockaddr = function | Unix.ADDR_INET (ip, port) -> port | _ -> raise (Ocsigen_Internal_Error "port of unix socket") let get_boundary ctparams = List.assoc "boundary" ctparams let find_field field content_disp = let (_, res) = Netstring_pcre.search_forward (Netstring_pcre.regexp (field^"=.([^\"]*).;?")) content_disp 0 in Netstring_pcre.matched_group res 1 content_disp type to_write = No_File of string * Buffer.t | A_File of (string * string * string * Unix.file_descr * (string * string option) option) let counter = let c = ref (Random.int 1000000) in fun () -> c := !c + 1 ; !c let warn sockaddr s = let ip = Unix.string_of_inet_addr (ip_of_sockaddr sockaddr) in Ocsigen_messages.warning ("While talking to " ^ ip ^ ": " ^ s) let dbg sockaddr s = Ocsigen_messages.debug (fun () -> let ip = Unix.string_of_inet_addr (ip_of_sockaddr sockaddr) in "While talking to " ^ ip ^ ": " ^ s) let r_content_type = Netstring_pcre.regexp "([^ ]*)" let http_url_syntax = Hashtbl.find Neturl.common_url_syntax "http" let rec find_post_params http_frame ct filenames = match http_frame.Ocsigen_http_frame.frame_content with | None -> None | Some body_gen -> let ((ct, cst), ctparams) = match ct with (* RFC 2616, sect. 7.2.1 *) (* If the media type remains unknown, the recipient SHOULD treat it as type "application/octet-stream". *) | None -> (("application", "octet-stream"), []) | Some (c, p) -> (c, p) in match String.lowercase ct, String.lowercase cst with | "application", "x-www-form-urlencoded" -> Some (find_post_params_form_urlencoded body_gen) | "multipart", "form-data" -> Some (find_post_params_multipart_form_data body_gen ctparams filenames) | _ -> None and find_post_params_form_urlencoded body_gen _ = catch (fun () -> let body = Ocsigen_stream.get body_gen in (* BY, adapted from a previous comment. Should this stream be consumed in case of error? *) Ocsigen_stream.string_of_stream (Ocsigen_config.get_maxrequestbodysizeinmemory ()) body >>= fun r -> let r = Url.fixup_url_string r in Lwt.return ((Netencoding.Url.dest_url_encoded_parameters r), []) ) (function | Ocsigen_stream.String_too_large -> fail Input_is_too_large | e -> fail e) and find_post_params_multipart_form_data body_gen ctparams filenames ci = (* Same question here, should this stream be consumed after an error ? *) let body = Ocsigen_stream.get body_gen and bound = get_boundary ctparams and params = ref [] and files = ref [] in let create hs = let content_type = try let ct = List.assoc "content-type" hs in let content_type = let (_, res) = Netstring_pcre.search_forward r_content_type ct 0 in Netstring_pcre.matched_group res 1 ct in let charset = try Some (find_field "charset" ct) with _ -> None in Some (content_type, charset) with _ -> None in let cd = List.assoc "content-disposition" hs in let p_name = find_field "name" cd in try let store = find_field "filename" cd in match ci.uploaddir with | Some dname -> let now = Printf.sprintf "%f-%d" (Unix.gettimeofday ()) (counter ()) in let fname = dname^"/"^now in let fd = Unix.openfile fname [Unix.O_CREAT; Unix.O_TRUNC; Unix.O_WRONLY; Unix.O_NONBLOCK] 0o666 in Ocsigen_messages.debug2 ("Upload file opened: " ^ fname); filenames := fname::!filenames; A_File (p_name, fname, store, fd, content_type) | None -> raise Ocsigen_upload_forbidden with Not_found -> No_File (p_name, Buffer.create 1024) in let rec add where s = match where with | No_File (p_name, to_buf) -> Buffer.add_string to_buf s; return () | A_File (_,_,_,wh,_) -> let len = String.length s in let r = Unix.write wh s 0 len in if r < len then (*XXXX Inefficient if s is long *) add where (String.sub s r (len - r)) else Lwt_unix.yield () in let stop size = function | No_File (p_name, to_buf) -> return (params := !params @ [(p_name, Buffer.contents to_buf)]) (* à la fin ? *) | A_File (p_name,fname,oname,wh, content_type) -> (* Ocsigen_messages.debug "closing file"; *) files := !files@[(p_name, {tmp_filename=fname; filesize=size; raw_original_filename=oname; original_basename=(Filename.basename oname); file_content_type = content_type; })]; Unix.close wh; return () in Multipart.scan_multipart_body_from_stream body bound create add stop ci.maxuploadfilesize >>= fun () -> (*VVV Does scan_multipart_body_from_stream read until the end or only what it needs? If we do not consume here, the following request will be read only when this one is finished ... *) Ocsigen_stream.consume body_gen >>= fun () -> Lwt.return (!params, !files) (* reading the request *) let get_request_infos meth clientproto url http_frame filenames sockaddr port receiver = Lwt.catch (fun () -> let (_, headerhost, headerport, url, path, params, get_params) = Url.parse url in let headerhost, headerport = match headerhost with | None -> get_host_from_host_header http_frame | _ -> headerhost, headerport in (* RFC: 1. If Request-URI is an absoluteURI, the host is part of the Request-URI. Any Host header field value in the request MUST be ignored. 2. If the Request-URI is not an absoluteURI, and the request includes a Host header field, the host is determined by the Host header field value. 3. If the host as determined by rule 1 or 2 is not a valid host on the server, the response MUST be a 400 (Bad Request) error message. *) (* Here we don't trust the port information given by the request. We use the port we are listening on. *) Ocsigen_messages.debug (fun () -> "- host="^(match headerhost with None -> "" | Some h -> h)); (* Servers MUST report a 400 (Bad Request) error if an HTTP/1.1 request does not include a Host request-header. *) if clientproto = Ocsigen_http_frame.Http_header.HTTP11 && headerhost = None then raise Ocsigen_Bad_Request; let useragent = get_user_agent http_frame in let cookies_string = lazy (get_cookie_string http_frame) in let cookies = lazy (match (Lazy.force cookies_string) with | None -> CookiesTable.empty | Some s -> parse_cookies s) in let ifmodifiedsince = get_if_modified_since http_frame in let ifunmodifiedsince = get_if_unmodified_since http_frame in let ifnonematch = get_if_none_match http_frame in let ifmatch = get_if_match http_frame in let client_inet_addr = ip_of_sockaddr sockaddr in let ct_string = get_content_type http_frame in let ct = Ocsigen_headers.parse_content_type ct_string in let cl = get_content_length http_frame in let referer = lazy (get_referer http_frame) in let origin = lazy (get_origin http_frame) in let access_control_request_method = lazy (get_access_control_request_method http_frame) in let access_control_request_headers = lazy (get_access_control_request_headers http_frame) in let accept = lazy (get_accept http_frame) in let accept_charset = lazy (get_accept_charset http_frame) in let accept_encoding = lazy (get_accept_encoding http_frame) in let accept_language = lazy (get_accept_language http_frame) in let post_params0 = match meth with | Http_header.GET | Http_header.HEAD -> None | Http_header.POST | Http_header.OPTIONS -> begin match find_post_params http_frame ct filenames with | None -> None | Some f -> let r = ref None in Some (fun ci -> match !r with | None -> let res = f ci in r := Some res; res | Some r -> r) end | _ -> failwith "get_request_infos: HTTP method not implemented" in let post_params = match post_params0 with | None -> None | Some f -> Some (fun ci -> f ci >>= fun (a, _) -> Lwt.return a) in let files = match post_params0 with | None -> None | Some f -> Some (fun ci -> f ci >>= fun (_, b) -> Lwt.return b) in let ipstring = Unix.string_of_inet_addr client_inet_addr in let path_string = Url.string_of_url_path ~encode:true path in Lwt.return {ri_url_string = url; ri_method = meth; ri_protocol = http_frame.Ocsigen_http_frame.frame_header.Ocsigen_http_frame.Http_header.proto; ri_ssl = Lwt_ssl.is_ssl (Ocsigen_http_com.connection_fd receiver); ri_full_path_string = path_string; ri_full_path = path; ri_original_full_path_string = path_string; ri_original_full_path = path; ri_sub_path = path; ri_sub_path_string = Url.string_of_url_path ~encode:true path; ri_get_params_string = params; ri_host = headerhost; ri_port_from_host_field = headerport; ri_get_params = get_params; ri_initial_get_params = get_params; ri_post_params = post_params; ri_files = files; ri_remote_inet_addr = client_inet_addr; ri_remote_ip = ipstring; ri_remote_ip_parsed = lazy (fst (Ip_address.parse ipstring)); ri_remote_port = port_of_sockaddr sockaddr; ri_forward_ip = []; ri_server_port = port; ri_user_agent = useragent; ri_cookies_string = cookies_string; ri_cookies = cookies; ri_ifmodifiedsince = ifmodifiedsince; ri_ifunmodifiedsince = ifunmodifiedsince; ri_ifnonematch = ifnonematch; ri_ifmatch = ifmatch; ri_content_type = ct; ri_content_type_string = ct_string; ri_content_length = cl; ri_referer = referer; ri_origin = origin; ri_access_control_request_method = access_control_request_method; ri_access_control_request_headers = access_control_request_headers; ri_accept = accept; ri_accept_charset = accept_charset; ri_accept_encoding = accept_encoding; ri_accept_language = accept_language; ri_http_frame = http_frame; ri_request_cache = Polytables.create (); ri_client = Ocsigen_extensions.client_of_connection receiver; ri_range = lazy (Ocsigen_range.get_range http_frame); ri_timeofday = Unix.gettimeofday (); ri_nb_tries = 0; ri_connection_closed = Ocsigen_http_com.closed receiver; } ) (fun e -> Ocsigen_messages.debug (fun () -> "~~~ Exn during get_request_infos : "^ Printexc.to_string e); Lwt.fail e) (* An http result [res] frame has been computed. Depending on the If-(None-)?Match and If-(Un)?Modified-Since headers of [ri], we return this frame, a 304: Not-Modified, or a 412: Precondition Failed. See RFC 2616, sections 14.24, 14.25, 14.26, 14.28 and 13.3.4 *) let handle_result_frame ri res send = (* Subfonctions to handle each header separately *) let if_unmodified_since unmodified_since = (* Section 14.28 *) if (res.res_code = 412 || (200 <= res.res_code && res.res_code < 300)) then match res.res_lastmodified with | Some r -> if r <= unmodified_since then `Ignore_header else `Precondition_failed | None -> `Ignore_header else `Ignore_header and if_modified_since modified_since = (* Section 14.25 *) if res.res_code = 200 then match res.res_lastmodified with | Some r -> if r <= modified_since then `Unmodified else `Ignore_header | _ -> `Ignore_header else `Ignore_header and if_none_match if_none_match = (* Section 14.26 *) if (res.res_code = 412 || (200 <= res.res_code && res.res_code < 300)) then match res.res_etag with | None -> `Ignore_header | Some e -> if List.mem e if_none_match then if ri.ri_method = Http_header.GET || ri.ri_method = Http_header.HEAD then `Unmodified else `Precondition_failed else `Ignore_header_and_ModifiedSince else `Ignore_header and if_match if_match = (* Section 14.24 *) if (res.res_code = 412 || (200 <= res.res_code && res.res_code < 300)) then match res.res_etag with | None -> `Precondition_failed | Some e -> if List.mem e if_match then `Ignore_header else `Precondition_failed else `Ignore_header in let handle_header f h = match h with | None -> `No_header | Some h -> f h in (* Main code *) let r = (* For the cases unspecified with RFC2616. we follow more or less the order used by Apache. See the function modules/http/http_protocol.c/ap_meets_conditions in the Apache source *) match handle_header if_match ri.ri_ifmatch with | `Precondition_failed -> `Precondition_failed | `No_header | `Ignore_header -> match handle_header if_unmodified_since ri.ri_ifunmodifiedsince with | `Precondition_failed -> `Precondition_failed | `No_header | `Ignore_header -> match handle_header if_none_match ri.ri_ifnonematch with | `Precondition_failed -> `Precondition_failed | `Ignore_header_and_ModifiedSince -> `Std | `Unmodified | `No_header as r1 -> (match handle_header if_modified_since ri.ri_ifmodifiedsince with | `Unmodified | `No_header as r2 -> if r1 = `No_header && r2 = `No_header then `Std else `Unmodified | `Ignore_header -> `Std) | `Ignore_header -> (* We cannot return a 304, so there is no need to consult if_modified_since *) `Std in match r with | `Unmodified -> Ocsigen_messages.debug2 "-> Sending 304 Not modified "; Ocsigen_stream.finalize (fst res.res_stream) `Success >>= fun () -> send { (Ocsigen_http_frame.empty_result ()) with res_code = 304 (* Not modified *); res_lastmodified = res.res_lastmodified; res_etag = res.res_etag; } | `Precondition_failed -> Ocsigen_messages.debug2 "-> Sending 412 Precondition Failed \ (conditional headers)"; Ocsigen_stream.finalize (fst res.res_stream) `Success >>= fun () -> send { (Ocsigen_http_frame.empty_result ()) with res_code = 412 (* Precondition failed *)} | `Std -> Ocsigen_range.compute_range ri res >>= send let service receiver sender_slot request meth url port sockaddr = (* sender_slot is here for pipelining: we must wait before sending the page, because the previous one may not be sent *) let head = meth = Http_header.HEAD in let clientproto = Http_header.get_proto request.Ocsigen_http_frame.frame_header in let handle_service_errors e = (* Exceptions during page generation *) Ocsigen_messages.debug (fun () -> "~~~ Exception during generation/sending: " ^ Printexc.to_string e); let send_error ?cookies code = Ocsigen_senders.send_error ~exn:e sender_slot ~clientproto ?cookies ~head ~code ~sender:Ocsigen_http_com.default_sender () in match e with (* EXCEPTIONS WHILE COMPUTING A PAGE *) | Ocsigen_http_error (cookies_to_set, i) -> Ocsigen_messages.debug (fun () -> "-> Sending HTTP error "^(string_of_int i)^" "^ Ocsigen_http_frame.Http_error.expl_of_code i); send_error ~cookies:cookies_to_set i | Ocsigen_stream.Interrupted Ocsigen_stream.Already_read -> Ocsigen_messages.warning "Cannot read the request twice. You probably have \ two incompatible options in configuration, \ or the order of the options in the config file is wrong."; send_error 500 (* Internal error *) | Unix.Unix_error (Unix.EACCES,_,_) | Ocsigen_upload_forbidden -> Ocsigen_messages.debug2 "-> Sending 403 Forbidden"; send_error 403 | Http_error.Http_exception (code,_,_) -> Ocsigen_http_frame.Http_error.display_http_exception e; send_error code | Ocsigen_Bad_Request -> Ocsigen_messages.debug2 "-> Sending 400"; send_error 400 | Ocsigen_unsupported_media -> Ocsigen_messages.debug2 "-> Sending 415"; send_error 415 | Neturl.Malformed_URL -> Ocsigen_messages.debug2 "-> Sending 400 (Malformed URL)"; send_error 400 | Ocsigen_Request_too_long -> Ocsigen_messages.debug2 "-> Sending 413 (Entity too large)"; send_error 413 | e -> Ocsigen_messages.warning ("Exn during page generation: " ^ Printexc.to_string e ^" (sending 500)"); Ocsigen_messages.debug2 "-> Sending 500"; send_error 500 in let finish_request () = (* We asynchronously finish to read the request contents if this is not done yet so that: - we can handle the next request - there is no dead-lock with the client writing the request and the server writing the response. We need to do this once the request has been handled before sending any reply to the client. *) match request.Ocsigen_http_frame.frame_content with | Some f -> ignore (Lwt.catch (fun () -> Ocsigen_stream.finalize f `Success (* will consume the stream and unlock the mutex if not already done *) ) (function | e -> (match e with | Ocsigen_http_com.Lost_connection _ -> warn sockaddr "connection abruptly closed by peer \ while reading contents" | Ocsigen_http_com.Timeout -> warn sockaddr "timeout while reading contents" | Ocsigen_http_com.Aborted -> dbg sockaddr "reading thread aborted" | Http_error.Http_exception (code, mesg, _) -> warn sockaddr (Http_error.string_of_http_exception e) | _ -> Ocsigen_messages.unexpected_exception e "Server.finish_request" ); Ocsigen_http_com.abort receiver; (* We unlock the receiver in order to resume the reading loop. As the connection has been aborted, the next read will fail and the connection will be closed properly. *) Ocsigen_http_com.unlock_receiver receiver; Lwt.return ())) | None -> () in (* body of service *) if meth <> Http_header.GET && meth <> Http_header.POST && meth <> Http_header.HEAD && meth <> Http_header.OPTIONS then begin (* VVV Warning: This must be done once and only once. Put this somewhere else to ensure that? *) warn sockaddr ("Bad request: \""^url^"\""); Ocsigen_http_com.wakeup_next_request receiver; finish_request (); (* RFC 2616, sect 5.1.1 *) send_error sender_slot ~clientproto ~head ~code:501 ~sender:Ocsigen_http_com.default_sender () end else begin let filenames = ref [] (* All the files sent by the request *) in Lwt.finalize (fun () -> (* *** First of all, we read the whole the request (that will possibly create files) *) Lwt.try_bind (fun () -> get_request_infos meth clientproto url request filenames sockaddr port receiver) (fun ri -> (* *** Now we generate the page and send it *) (* Log *) accesslog (try let x_forwarded_for = Http_headers.find Http_headers.x_forwarded_for ri.ri_http_frame.frame_header.Http_header.headers in Format.sprintf "connection for %s from %s (%s) with X-Forwarded-For: %s: %s" (match ri.ri_host with | None -> "" | Some h -> h) ri.ri_remote_ip ri.ri_user_agent x_forwarded_for ri.ri_url_string with | Not_found -> Format.sprintf "connection for %s from %s (%s): %s" (match ri.ri_host with | None -> "" | Some h -> h) ri.ri_remote_ip ri.ri_user_agent ri.ri_url_string); let send_aux = send sender_slot ~clientproto ~head ~sender:Ocsigen_http_com.default_sender in (* Generation of pages is delegated to extensions: *) Lwt.try_bind (fun () -> Ocsigen_extensions.compute_result ~awake_next_request:true ri) (fun res -> finish_request (); handle_result_frame ri res send_aux ) (fun e -> finish_request (); match e with | Ocsigen_extensions.Ocsigen_Is_a_directory request -> (* User requested a directory. We redirect it to the correct url (with a slash), so that relative urls become correct *) Ocsigen_messages.debug2 "-> Sending 301 Moved permanently"; let port = Ocsigen_extensions.get_port request in let new_url = Neturl.make_url ~scheme:(if ri.ri_ssl then "https" else "http") ~host:(Ocsigen_extensions.get_hostname request) ?port:(if (port = 80 && not ri.ri_ssl) || (ri.ri_ssl && port = 443) then None else Some port) ~path:(""::(Url.add_end_slash_if_missing ri.ri_full_path)) ?query:ri.ri_get_params_string http_url_syntax in send_aux { (Ocsigen_http_frame.empty_result ()) with res_code = 301; res_location = Some (Neturl.string_of_url new_url) } | _ -> handle_service_errors e ) ) (fun e -> warn sockaddr ("Bad request: \""^url^"\""); Ocsigen_http_com.wakeup_next_request receiver; finish_request (); handle_service_errors e )) (fun () -> (* We remove all the files created by the request (files sent by the client) *) if !filenames <> [] then Ocsigen_messages.debug2 "** Removing files"; List.iter (fun a -> try Unix.unlink a with Unix.Unix_error _ as e -> Ocsigen_messages.warning (Format.sprintf "Error while removing file %s: %s" a (Printexc.to_string e))) !filenames; return ()) end let linger in_ch receiver = Lwt.catch (fun () -> (* We wait for 30 seconds at most and close the connection after 2 seconds without receiving data from the client *) let abort_fun () = Lwt_ssl.abort in_ch Exit in let long_timeout = Lwt_timeout.create 30 abort_fun in let short_timeout = Lwt_timeout.create 2 abort_fun in Lwt_timeout.start long_timeout; let s = String.create 1024 in let rec linger_aux () = Lwt_ssl.wait_read in_ch >>= fun () -> Lwt.try_bind (fun () -> Lwt_timeout.start short_timeout; Lwt_ssl.read in_ch s 0 1024) (fun len -> if len > 0 then linger_aux () else Lwt.return ()) (fun e -> begin match e with Unix.Unix_error(Unix.ECONNRESET,_,_) | Ssl.Read_error (Ssl.Error_syscall | Ssl.Error_ssl) | Exit -> Lwt.return () | _ -> Lwt.fail e end) in (* We start the lingering reads before waiting for the senders to terminate in order to avoid a deadlock *) let linger_thread = linger_aux () in Ocsigen_http_com.wait_all_senders receiver >>= fun () -> Ocsigen_messages.debug2 "** SHUTDOWN"; Lwt_ssl.ssl_shutdown in_ch >>= fun () -> Lwt_ssl.shutdown in_ch Unix.SHUTDOWN_SEND; linger_thread >>= fun () -> Lwt_timeout.stop long_timeout; Lwt_timeout.stop short_timeout; Lwt.return ()) (fun e -> Ocsigen_messages.unexpected_exception e "Server.linger"; Lwt.return ()) let try_bind' f g h = Lwt.try_bind f h g let add_to_receivers_waiting_for_pipeline, remove_from_receivers_waiting_for_pipeline, iter_receivers_waiting_for_pipeline = let l = Clist.create () in ((fun r -> let node = Clist.make r in Clist.insert l node; node), Clist.remove, (fun f -> Clist.fold_left (fun t v -> (*VVV reread this. Is yield here ok? *) t >>= Lwt_unix.yield >>= fun () -> f v) (Lwt.return ()) l)) let handle_connection port in_ch sockaddr = let receiver = Ocsigen_http_com.create_receiver (Ocsigen_config.get_client_timeout ()) Query in_ch in let handle_write_errors e = begin match e with | Lost_connection e' -> warn sockaddr ("connection abruptly closed by peer (" ^ Printexc.to_string e' ^ ")") | Ocsigen_http_com.Timeout -> warn sockaddr "timeout" | Ocsigen_http_com.Aborted -> dbg sockaddr "writing thread aborted" | Ocsigen_stream.Interrupted e' -> warn sockaddr ("interrupted content stream (" ^ Printexc.to_string e' ^ ")") | _ -> Ocsigen_messages.unexpected_exception e "Server.handle_write_errors" end; Ocsigen_http_com.abort receiver; Lwt.fail Ocsigen_http_com.Aborted in let handle_read_errors e = begin match e with | Ocsigen_http_com.Connection_closed -> (* This is the clean way to terminate the connection *) dbg sockaddr "connection closed by peer"; Ocsigen_http_com.abort receiver; Ocsigen_http_com.wait_all_senders receiver | Ocsigen_http_com.Keepalive_timeout -> dbg sockaddr "keepalive timeout"; Ocsigen_http_com.abort receiver; Ocsigen_http_com.wait_all_senders receiver | Ocsigen_http_com.Lost_connection _ -> warn sockaddr "connection abruptly closed by peer"; Ocsigen_http_com.abort receiver; Ocsigen_http_com.wait_all_senders receiver | Ocsigen_http_com.Timeout -> warn sockaddr "timeout"; Ocsigen_http_com.abort receiver; Ocsigen_http_com.wait_all_senders receiver | Ocsigen_http_com.Aborted -> dbg sockaddr "reading thread aborted"; Ocsigen_http_com.wait_all_senders receiver | Http_error.Http_exception (code, mes, _) -> warn sockaddr (Http_error.string_of_http_exception e); Ocsigen_http_com.start_processing receiver (fun slot -> (*XXX We should use the right information for clientproto and head... *) send_error slot ~clientproto:Ocsigen_http_frame.Http_header.HTTP10 ~head:false (* ~keep_alive:false *) ~exn:e ~sender:Ocsigen_http_com.default_sender ()); linger in_ch receiver | _ -> Ocsigen_messages.unexpected_exception e "Server.handle_read_errors"; Ocsigen_http_com.abort receiver; Ocsigen_http_com.wait_all_senders receiver end in let rec handle_request ?receiver_pos () = try_bind' (fun () -> Ocsigen_messages.debug2 "** Receiving HTTP message"; (if Ocsigen_config.get_respect_pipeline () then (* if we lock this mutex, requests from a same connection will be sent to extensions in the same order they are received on pipeline. It is locked only in server. Ocsigen_http_client has its own mutex. (*VVV use the same? *) *) Ocsigen_http_com.block_next_request receiver else Lwt.return ()) >>= fun () -> Ocsigen_http_com.get_http_frame receiver) (fun exn -> (* We remove the receiver from the set of requests waiting for pipeline *) (match receiver_pos with | Some pos -> remove_from_receivers_waiting_for_pipeline pos | None -> ()); handle_read_errors exn) (fun request -> (* As above *) (match receiver_pos with | Some pos -> remove_from_receivers_waiting_for_pipeline pos | None -> ()); let meth, url = match Http_header.get_firstline request.Ocsigen_http_frame.frame_header with | Http_header.Query a -> a | _ -> assert false (*XXX Should be checked in [get_http_frame] *) in Ocsigen_http_com.start_processing receiver (fun slot -> Lwt.catch (fun () -> (*XXX Why do we need the port but not the host name? *) service receiver slot request meth url port sockaddr) handle_write_errors); if not !shutdown && get_keepalive request.Ocsigen_http_frame.frame_header then (* We put the receiver in the set of receiver waiting for pipeline in order to be able to shutdown the connections if the server is shutting down. *) handle_request ~receiver_pos:(add_to_receivers_waiting_for_pipeline receiver) () else (* No keep-alive => no pipeline *) (* We wait for the query to be entirely read and for the reply to be sent *) Ocsigen_http_com.lock_receiver receiver >>= fun () -> Ocsigen_http_com.wait_all_senders receiver >>= fun () -> Lwt_ssl.ssl_shutdown in_ch ) in (* body of handle_connection *) handle_request () let rec wait_connection use_ssl port socket = let handle_exn e = Lwt_unix.yield () >>= fun () -> match e with | Socket_closed -> Ocsigen_messages.debug2 "Socket closed"; Lwt.return () | Unix.Unix_error ((Unix.EMFILE | Unix.ENFILE), _, _) -> (* this should not happen, report it *) Ocsigen_messages.errlog "Max number of file descriptors reached unexpectedly, please check..."; wait_connection use_ssl port socket | e -> Ocsigen_messages.debug (fun () -> Format.sprintf "Accept failed: %s" (Printexc.to_string e)); wait_connection use_ssl port socket in try_bind' (fun () -> (* if too much connections, we wait for a signal before accepting again *) let max = get_max_number_of_connections () in (if get_number_of_connected () < max then Lwt.return () else begin ignore (Ocsigen_messages.warning (Format.sprintf "Max simultaneous connections (%d) reached." (get_max_number_of_connections ()))); wait_fewer_connected max end) >>= fun () -> (* We do several accept(), as explained in "Accept()able strategies ..." by Tim Brecht & al. *) Lwt_unix.accept_n socket 50) handle_exn (fun (l, e) -> let number_of_accepts = List.length l in Ocsigen_messages.debug (fun () -> "received "^string_of_int number_of_accepts^" accepts" ); incr_connected number_of_accepts; if e = None then ignore (wait_connection use_ssl port socket); let handle_one (s, sockaddr) = Ocsigen_messages.debug2 "\n__________________NEW CONNECTION__________________________"; Lwt.catch (fun () -> Lwt_unix.set_close_on_exec s; Lwt_unix.setsockopt s Unix.TCP_NODELAY true; begin if use_ssl then Lwt_ssl.ssl_accept s !sslctx else Lwt.return (Lwt_ssl.plain s) end >>= fun in_ch -> handle_connection port in_ch sockaddr) (fun e -> Ocsigen_messages.unexpected_exception e "Server.wait_connection (handle connection)"; return ()) >>= fun () -> Ocsigen_messages.debug2 "** CLOSE"; catch (fun () -> Lwt_unix.close s) (function Unix.Unix_error _ as e -> Ocsigen_messages.unexpected_exception e "Server.wait_connection (close)"; Lwt.return () | e -> Lwt.fail e) >>= decr_connected in Lwt_util.iter handle_one l >>= fun () -> match e with | Some e -> handle_exn e | None -> Lwt.return ()) let stop m n = errlog m; exit n (** Thread waiting for events on a the listening port *) let listen use_ssl (addr, port) wait_end_init = let listening_sockets = try let sockets = make_sockets addr port in List.iter (fun x -> Lwt_unix.listen x 1024) sockets; sockets with | Unix.Unix_error (Unix.EACCES, _, _) -> stop (Format.sprintf "Fatal - You are not allowed to use port %d." port) 7 | Unix.Unix_error (Unix.EADDRINUSE, _, _) -> stop (Format.sprintf "Fatal - The port %d is already in use." port) 8 | exn -> stop ("Fatal - Uncaught exception: " ^ Printexc.to_string exn) 100 in List.iter (fun x -> ignore (wait_end_init >>= fun () -> wait_connection use_ssl port x)) listening_sockets; listening_sockets (* fatal errors messages *) let errmsg = function | Dynlink_wrapper.Error e -> (("Fatal - Dynamic linking error: "^(Dynlink_wrapper.error_message e)), 6) | (Unix.Unix_error _) as e -> (("Fatal - "^(Printexc.to_string e)), 9) | Ssl.Private_key_error -> (("Fatal - bad password"), 10) | Ocsigen_config.Config_file_error msg | Ocsigen_extensions.Error_in_config_file msg -> (("Fatal - Error in configuration file: "^msg), 50) | Simplexmlparser.Xml_parser_error s -> (("Fatal - Error in configuration file: "^s), 51) | Ocsigen_loader.Dynlink_error (s, exn) -> (("Fatal - While loading "^s^": "^(Printexc.to_string exn)), 52) | Ocsigen_loader.Findlib_error _ as e -> (("Fatal - " ^ Printexc.to_string e), 53) | exn -> try ((Ocsigen_extensions.get_init_exn_handler () exn), 20) with exn -> (("Fatal - Uncaught exception: "^Printexc.to_string exn), 100) (* loading new configuration *) let reload_conf s = try Ocsigen_extensions.start_initialisation (); parse_server true s; Ocsigen_extensions.end_initialisation (); with e -> Ocsigen_extensions.end_initialisation (); errlog (fst (errmsg e)) (* reloading the config file *) let reload ?file () = (* That function cannot be interrupted??? *) Ocsigen_messages.warning "Reloading config file" ; (try match parse_config ?file () with | [] -> () | s::_ -> reload_conf s with e -> errlog (fst (errmsg e))); Ocsigen_messages.warning "Config file reloaded" let shutdown_server s l = try let timeout = match l with | [] -> Ocsigen_config.get_shutdown_timeout () | ["notimeout"] -> None | [t] -> Some (float_of_string t) | _ -> failwith "syntax error in command" in Ocsigen_messages.warning "Shutting down"; List.iter (fun s -> Lwt_unix.abort s Socket_closed) !sockets; List.iter (fun s -> Lwt_unix.abort s Socket_closed) !sslsockets; sockets := []; sslsockets := []; shutdown := true; if Ocsigen_extensions.get_number_of_connected () <= 0 then exit 0; (match timeout with | Some t -> ignore (Lwt_unix.sleep t >>= fun () -> exit 0) | None -> ()); ignore (iter_receivers_waiting_for_pipeline (fun receiver -> (*VVV reread this - why are we using infinite iterators? *) Ocsigen_http_com.wait_all_senders receiver >>= fun () -> Ocsigen_http_com.abort receiver; Lwt.return ())); with Failure e -> Ocsigen_messages.warning ("Wrong command: " ^ s ^ " (" ^ e ^ ")") let _ = let f s = function | ["reopen_logs"] -> Ocsigen_messages.open_files () >>= fun () -> Ocsigen_messages.warning "Log files reopened"; Lwt.return () | ["reload"] -> reload (); Lwt.return () | ["reload"; file] -> reload ~file (); Lwt.return () | "shutdown"::l -> shutdown_server s l; Lwt.return () | ["gc"] -> Gc.compact (); Ocsigen_messages.warning "Heap compaction requested by user"; Lwt.return () | ["clearcache"] -> Ocsigen_cache.clear_all_caches (); Lwt.return () | _ -> Lwt.fail Ocsigen_extensions.Unknown_command in Ocsigen_extensions.register_command_function f let start_server () = try (* initialization functions for modules (Ocsigen extensions or application code) loaded from now on will be executed directly. *) Ocsigen_loader.set_init_on_load true; let config_servers = parse_config () in let number_of_servers = List.length config_servers in if number_of_servers > 1 then ignore (Ocsigen_messages.warning "Multiple servers not supported anymore"); let ask_for_passwd sslports _ = print_string "Please enter the password for the HTTPS server listening \ on port(s) "; print_string (String.concat ", " (List.map (fun (_,p) -> string_of_int p) sslports)); print_string ": "; let old_term= Unix.tcgetattr Unix.stdin in let old_echo = old_term.Unix.c_echo in old_term.Unix.c_echo <- false; Unix.tcsetattr Unix.stdin Unix.TCSAFLUSH old_term; try let r = read_line () in print_newline (); old_term.Unix.c_echo <- old_echo; Unix.tcsetattr Unix.stdin Unix.TCSAFLUSH old_term; r with exn -> old_term.Unix.c_echo <- old_echo; Unix.tcsetattr Unix.stdin Unix.TCSAFLUSH old_term; raise exn in let run (user, group) (_, ports, sslports) (minthreads, maxthreads) s = Lwt_unix.run (Ocsigen_messages.open_files ~user ~group ()); Lwt_unix.run (let wait_end_init, wait_end_init_awakener = wait () in (* Listening on all ports: *) sockets := List.fold_left (fun a i -> (listen false i wait_end_init)@a) [] ports; sslsockets := List.fold_left (fun a i -> (listen true i wait_end_init)@a) [] sslports; begin match ports with | (_, p)::_ -> Ocsigen_config.set_default_port p | _ -> () end; begin match sslports with | (_, p)::_ -> Ocsigen_config.set_default_sslport p | _ -> () end; let current_uid = Unix.getuid () in let gid = match group with | None -> Unix.getgid () | Some group -> (try (Unix.getgrnam group).Unix.gr_gid with Not_found as e -> errlog ("Error: Wrong group"); raise e) in let uid = match user with | None -> current_uid | Some user -> (try (Unix.getpwnam user).Unix.pw_uid with Not_found as e -> (errlog ("Error: Wrong user"); raise e)) in (* A pipe to communicate with the server *) let commandpipe = get_command_pipe () in (try ignore (Unix.stat commandpipe); with Unix.Unix_error _ -> (try let umask = Unix.umask 0 in Unix.mkfifo commandpipe 0o660; Unix.chown commandpipe uid gid; ignore (Unix.umask umask); ignore (Ocsigen_messages.warning "Command pipe created"); with e -> Ocsigen_messages.errlog ("Cannot create the command pipe: "^(Printexc.to_string e)))); (* I change the user for the process *) begin try if current_uid = 0 then begin match user with | None -> () | Some user -> Unix.initgroups user gid end; Unix.setgid gid; Unix.setuid uid; with (Unix.Unix_error _ | Failure _) as e -> Ocsigen_messages.errlog ("Error: Wrong user or group"); raise e end; Ocsigen_config.set_user user; Ocsigen_config.set_group group; (* Je suis fou : let rec f () = print_endline "-"; Lwt_unix.yield () >>= f in f (); *) if maxthreads < minthreads then raise (Config_file_error "maxthreads should be greater than minthreads"); ignore (Ocsigen_config.init_preempt minthreads maxthreads Ocsigen_messages.errlog); (* Now I can load the modules *) Dynlink_wrapper.init (); Dynlink_wrapper.allow_unsafe_modules true; Ocsigen_extensions.start_initialisation (); parse_server false s; Dynlink_wrapper.prohibit ["Ocsigen_extensions.R"]; (* As libraries are reloaded each time the config file is read, we do not allow to register extensions in libraries *) (* seems it does not work :-/ *) (* Closing stderr, stdout stdin if silent *) if (Ocsigen_config.get_silent ()) then begin (* redirect stdout and stderr to /dev/null *) let devnull = Unix.openfile "/dev/null" [Unix.O_WRONLY] 0 in Unix.dup2 devnull Unix.stdout; Unix.dup2 devnull Unix.stderr; Unix.close devnull; Unix.close Unix.stdin; end; (* detach from the terminal *) if (Ocsigen_config.get_daemon ()) then ignore (Unix.setsid ()); Ocsigen_extensions.end_initialisation (); let pipe = Lwt_chan.in_channel_of_descr (Lwt_unix.of_unix_file_descr (Unix.openfile commandpipe [Unix.O_RDWR; Unix.O_NONBLOCK; Unix.O_APPEND] 0o660)) in let rec f () = Lwt_chan.input_line pipe >>= fun s -> Ocsigen_messages.warning ("Command received: "^s); (Lwt.catch (fun () -> let prefix, c = match String.split ~multisep:true ' ' s with | [] -> raise Ocsigen_extensions.Unknown_command | a::l -> try let aa, ab = String.sep ':' a in (Some aa, (ab::l)) with Not_found -> None, (a::l) in Ocsigen_extensions.get_command_function () ?prefix s c) (function | Unknown_command -> Ocsigen_messages.warning "Unknown command"; Lwt.return () | e -> Ocsigen_messages.errlog ("Uncaught Exception after command: "^ Printexc.to_string e); Lwt.fail e)) >>= f in ignore (f ()); Lwt.wakeup wait_end_init_awakener (); Ocsigen_messages.warning "Ocsigen has been launched (initialisations ok)"; fst (Lwt.wait ()) ) in let set_passwd_if_needed (ssl, ports, sslports) = if sslports <> [] then match ssl with | None | Some (None, None) -> () | Some (None, _) -> raise (Ocsigen_config.Config_file_error "SSL certificate is missing") | Some (_, None) -> raise (Ocsigen_config.Config_file_error "SSL key is missing") | Some ((Some c), (Some k)) -> Ssl.set_password_callback !sslctx (ask_for_passwd sslports); Ssl.use_certificate !sslctx c k in let write_pid pid = match Ocsigen_config.get_pidfile () with None -> () | Some p -> let spid = (string_of_int pid)^"\n" in let len = String.length spid in let f = Unix.openfile p [Unix.O_WRONLY; Unix.O_CREAT; Unix.O_APPEND] 0o640 in ignore (Unix.write f spid 0 len); Unix.close f in let rec launch = function | [] -> () | [h] -> let user_info, sslinfo, threadinfo = extract_info h in set_passwd_if_needed sslinfo; if (get_daemon ()) then let pid = Unix.fork () in if pid = 0 then run user_info sslinfo threadinfo h else begin ignore (Ocsigen_messages.console (fun () -> "Process "^(string_of_int pid)^" detached")); write_pid pid; end else begin write_pid (Unix.getpid ()); run user_info sslinfo threadinfo h end | _ -> () (* Multiple servers not supported any more *) in launch config_servers with e -> let msg, errno = errmsg e in stop msg errno ocsigenserver-2.2.0/src/server/ocsigen_parseconfig.ml0000644000000000000000000006744212060404165021230 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module ocsigen_parseconfig.ml * Copyright (C) 2005-2008 Vincent Balat, Nataliya Guts, Stéphane Glondu * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (******************************************************************) (** Config file parsing *) open Ocsigen_lib open Simplexmlparser open Ocsigen_config let blah_of_string f tag s = try f (String.remove_spaces s 0 ((String.length s) -1)) with Failure _ -> raise (Ocsigen_config.Config_file_error ("While parsing <"^tag^"> - "^s^ " is not a valid value.")) let int_of_string = blah_of_string int_of_string let float_of_string = blah_of_string float_of_string (*****************************************************************************) let default_default_hostname = let hostname = Unix.gethostname () in try (*VVV Is it ok? Is it reliable? *) (List.hd (Unix.getaddrinfo hostname "www" [Unix.AI_CANONNAME; Unix.AI_SOCKTYPE Unix.SOCK_STREAM])).Unix.ai_canonname with Failure _ -> let warning = "Cannot determine default host name. Will use \""^hostname^ "\" to create absolute links or redirections dynamically if you do not set in config file." in Ocsigen_messages.warning warning; (*VVV Is it the right behaviour? *) hostname (*****************************************************************************) let parse_size = let kilo = Int64.of_int 1000 in let mega = Int64.of_int 1000000 in let giga = Int64.mul kilo mega in let tera = Int64.mul mega mega in let kibi = Int64.of_int 1024 in let mebi = Int64.of_int 1048576 in let gibi = Int64.mul kibi mebi in let tebi = Int64.mul mebi mebi in fun s -> let l = String.length s in let s = String.remove_spaces s 0 (l-1) in let v l = try Int64.of_string (String.sub s 0 l) with Failure _ -> failwith "Ocsigen_parseconfig.parse_size" in let o l = let l1 = l-1 in if l1>0 then let c1 = s.[l1] in if (c1 = 'o') || (c1 = 'B') then v l1 else v l else v l in if (s = "") || (s = "infinity") then None else Some (let l = String.length s in let l1 = l-1 in if l1>0 then let c1 = String.sub s l1 1 in if (c1 = "T") then Int64.mul tebi (v l1) else if (c1 = "G") then Int64.mul gibi (v l1) else if (c1 = "M") then Int64.mul mebi (v l1) else if (c1 = "k") then Int64.mul kibi (v l1) else let l2 = l-2 in if l2>0 then let c2 = String.sub s l2 2 in if (c2 = "To") || (c2 = "TB") then Int64.mul tera (v l2) else if (c2 = "Go") || (c2 = "GB") then Int64.mul giga (v l2) else if (c2 = "Mo") || (c2 = "MB") then Int64.mul mega (v l2) else if (c2 = "ko") || (c2 = "kB") then Int64.mul kilo (v l2) else let l3 = l-3 in if l3>0 then let c3 = String.sub s l3 3 in if (c3 = "Tio") || (c3 = "TiB") then Int64.mul tebi (v l3) else if (c3 = "Gio") || (c3 = "GiB") then Int64.mul gibi (v l3) else if (c3 = "Mio") || (c3 = "MiB") then Int64.mul mebi (v l3) else if (c3 = "kio") || (c3 = "kiB") then Int64.mul kibi (v l3) else o l else o l else o l else o l) let parse_size_tag tag s = try parse_size s with Failure _ -> raise (Ocsigen_config.Config_file_error ("While parsing <"^tag^"> - "^s^" is not a valid size.")) (* My xml parser is not really adapted to this. It is the parser for the syntax extension. But it works. *) let rec parse_string = function | [] -> "" | (PCData s)::l -> s^(parse_string l) | _ -> failwith "ocsigen_parseconfig.parse_string" let parse_string_tag tag s = try parse_string s with Failure _ -> raise (Ocsigen_config.Config_file_error ("While parsing <"^tag^"> - String expected.")) let rec parser_config = let rec verify_empty = function | [] -> () | _ -> raise (Config_file_error "Don't know what to do with trailing data") in let rec parse_servers n = function | [] -> (match n with | [] -> raise (Config_file_error (" tag expected")) | _ -> n) | (Element ("server", [], nouveau))::ll -> (match ll with | [] -> () | _ -> ignore (Ocsigen_messages.warning "At most one tag possible in config file. \ Ignoring trailing data.")); parse_servers (n@[nouveau]) [] (* ll *) (* Multiple server not supported any more *) (* nouveau at the end *) | _ -> raise (Config_file_error ("syntax error inside ")) in function | (Element ("ocsigen", [], l))::ll -> verify_empty ll; parse_servers [] l | _ -> raise (Config_file_error " tag expected") let parse_ext file = parser_config (Simplexmlparser.xmlparser_file file) let preloadfile config () = Ocsigen_extensions.set_config config let postloadfile () = Ocsigen_extensions.set_config [] (* Checking hostnames. We make only make looze efforts. See RFC 921 and 952 for further details *) let correct_hostname = let regexp = Netstring_pcre.regexp "^[a-zA-Z0-9]+((\\.|-)[a-zA-Z0-9]+)*$" in fun h -> Netstring_pcre.string_match regexp h 0 <> None (* Splits the [host] field, first according to spaces (which encode disjunction), and then according to wildcards '*' ; we then transform the hosts-with-regexp into a regepx that matches a potential host. The whole result is cached because user config files (for userconf) are read at each request. *) let parse_host_field = let h = Hashtbl.create 17 in (fun (hostfilter : string option) -> try Hashtbl.find h hostfilter with Not_found -> let r = match hostfilter with | None -> ["*", Netstring_pcre.regexp ".*$", None] (* default = "*:*" *) | Some s -> let parse_one_host ss = let host, port = try let dppos = String.index ss ':' and len = String.length ss in let host = String.sub ss 0 dppos and port = match String.sub ss (dppos+1) ((len - dppos) - 1) with | "*" -> None | p -> Some (int_of_string "host" p) in host, port with | Not_found -> ss, None | Failure _ -> raise (Config_file_error "bad port number") in let split_host = function | Netstring_str.Delim _ -> ".*" | Netstring_str.Text t -> Netstring_pcre.quote t in (host, Netstring_pcre.regexp (String.concat "" ((List.map split_host (Netstring_str.full_split (Netstring_str.regexp "[*]+") host))@["$"])), port) in List.map parse_one_host (Netstring_str.split (Netstring_str.regexp "[ \t]+") s) in Hashtbl.add h hostfilter r; (r : Ocsigen_extensions.virtual_hosts) ) (* Extract a default hostname from the "host" field if no default is provided *) let get_defaulthostname ~defaulthostname ~defaulthttpport ~host = match defaulthostname with | Some d -> d | None -> (* We look for a hostname without wildcard (second case) *) (* Something more clever could be envisioned *) let rec aux = function | [] -> default_default_hostname | (t, _, (Some 80 | None)) :: _ when String.contains t '*' = false -> t | _ :: q -> aux q in let host = aux host in Ocsigen_messages.warning ("While parsing config file, tag : No defaulthostname, \ assuming it is \""^host^"\""); if correct_hostname host then host else raise (Ocsigen_config.Config_file_error ("Incorrect hostname " ^ host)) (* Config file is parsed twice. This is the second parsing (site loading) *) let parse_server isreloading c = let rec parse_server_aux = function | [] -> [] | (Element ("port", atts, p))::ll -> parse_server_aux ll | (Element ("charset" as st, atts, p))::ll -> set_default_charset (Some (parse_string_tag st p)); parse_server_aux ll | (Element ("logdir", [], p))::ll -> parse_server_aux ll | (Element ("ssl", [], p))::ll -> parse_server_aux ll | (Element ("user", [], p))::ll -> parse_server_aux ll | (Element ("group", [], p))::ll -> parse_server_aux ll | (Element ("uploaddir" as st, [], p))::ll -> set_uploaddir (Some (parse_string_tag st p)); parse_server_aux ll | (Element ("datadir" as st, [], p))::ll -> set_datadir (parse_string_tag st p); parse_server_aux ll | (Element ("minthreads" as st, [], p))::ll -> set_minthreads (int_of_string st (parse_string_tag st p)); parse_server_aux ll | (Element ("maxthreads" as st, [], p))::ll -> set_maxthreads (int_of_string st (parse_string_tag st p)); parse_server_aux ll | (Element ("maxdetachedcomputationsqueued" as st, [], p))::ll -> set_max_number_of_threads_queued (int_of_string st (parse_string_tag st p)); parse_server_aux ll | (Element ("maxconnected" as st, [], p))::ll -> set_max_number_of_connections (int_of_string st (parse_string_tag st p)); parse_server_aux ll | (Element ("mimefile" as st, [], p))::ll -> Ocsigen_config.set_mimefile (parse_string_tag st p); parse_server_aux ll | (Element ("maxretries" as st, [], p))::ll -> set_maxretries (int_of_string st (parse_string_tag st p)); parse_server_aux ll | (Element ("timeout" as st, [], p))::ll (*VVV timeout: backward compatibility with <= 0.99.4 *) | (Element ("clienttimeout" as st, [], p))::ll -> set_client_timeout (int_of_string st (parse_string_tag st p)); parse_server_aux ll | (Element ("servertimeout" as st, [], p))::ll -> set_server_timeout (int_of_string st (parse_string_tag st p)); parse_server_aux ll (*VVV For now we use silentservertimeout and silentclienttimeout also for keep alive :-( | (Element ("keepalivetimeout" as st, [], p))::ll -> set_keepalive_timeout (int_of_string st (parse_string_tag st p)); parse_server_aux ll | (Element ("keepopentimeout" as st, [], p))::ll -> set_keepopen_timeout (int_of_string st (parse_string_tag st p)); parse_server_aux ll *) | (Element ("netbuffersize" as st, [], p))::ll -> set_netbuffersize (int_of_string st (parse_string_tag st p)); parse_server_aux ll | (Element ("filebuffersize" as st, [], p))::ll -> set_filebuffersize (int_of_string st (parse_string_tag st p)); parse_server_aux ll | (Element ("maxrequestbodysize" as st, [], p))::ll -> set_maxrequestbodysize (parse_size_tag st (parse_string_tag st p)); parse_server_aux ll | (Element ("maxuploadfilesize" as st, [], p))::ll -> set_maxuploadfilesize (parse_size_tag st (parse_string_tag st p)); parse_server_aux ll | (Element ("commandpipe" as st, [], p))::ll -> set_command_pipe (parse_string_tag st p); parse_server_aux ll | (Element ("shutdowntimeout" as st, [], p))::ll -> let p = parse_string_tag st p in let t = if p = "notimeout" then None else Some (float_of_string st p) in set_shutdown_timeout t; parse_server_aux ll | (Element ("debugmode", [], []))::ll -> set_debugmode true; parse_server_aux ll | (Element ("usedefaulthostname", [], []))::ll -> set_usedefaulthostname true; parse_server_aux ll | (Element ("disablepartialrequests", [], []))::ll -> set_disablepartialrequests true; parse_server_aux ll | (Element ("respectpipeline", [], []))::ll -> set_respect_pipeline (); parse_server_aux ll | (Element ("findlib", ["path",p], []))::ll -> Ocsigen_loader.add_ocamlpath p; parse_server_aux ll | (Element ("require", atts, l))::ll | (Element ("extension", atts, l))::ll -> (* We do not reload extensions *) let modules = match atts with | [] -> raise (Config_file_error "missing module, name or findlib-package attribute in ") | [("name", s)] -> `Name s | [("module", s)] -> `Files [s] | [("findlib-package", s)] -> `Files (Ocsigen_loader.findfiles s) | _ -> raise (Config_file_error "Wrong attribute for ") in begin match modules with | `Files modules -> Ocsigen_loader.loadfiles (preloadfile l) postloadfile false modules; | `Name name -> Ocsigen_loader.init_module (preloadfile l) postloadfile false name end; parse_server_aux ll | (Element ("library", atts, l))::ll -> let modules = match atts with | [] -> raise (Config_file_error "missing module or findlib-package attribute in ") | [("name", s)] -> `Name s | [("module", s)] -> `Files [s] | [("findlib-package", s)] -> `Files (Ocsigen_loader.findfiles s) | _ -> raise (Config_file_error "Wrong attribute for ") in begin match modules with | `Files modules -> Ocsigen_loader.loadfiles (preloadfile l) postloadfile true modules; | `Name name -> Ocsigen_loader.init_module (preloadfile l) postloadfile true name end; parse_server_aux ll | (Element ("host", atts, l))::ll -> let rec parse_attrs ((name, charset, defaulthostname, defaulthttpport, defaulthttpsport) as r) = function | [] -> r | ("hostfilter", s)::suite -> (match name with | None -> parse_attrs ((Some s), charset, defaulthostname, defaulthttpport, defaulthttpsport) suite | _ -> raise (Ocsigen_config.Config_file_error ("Duplicate attribute name in "))) | ("charset", s)::suite -> (match charset with | None -> parse_attrs (name, Some s, defaulthostname, defaulthttpport, defaulthttpsport) suite | _ -> raise (Ocsigen_config.Config_file_error ("Duplicate attribute charset in "))) | ("defaulthostname", s)::suite -> (match defaulthostname with | None -> if correct_hostname s then parse_attrs (name, charset, (Some s), defaulthttpport, defaulthttpsport) suite else raise (Ocsigen_config.Config_file_error ("Incorrect hostname " ^ s)) | _ -> raise (Ocsigen_config.Config_file_error ("Duplicate attribute defaulthostname in "))) | ("defaulthttpport", s)::suite -> (match defaulthttpport with | None -> parse_attrs (name, charset, defaulthostname, (Some s), defaulthttpsport) suite | _ -> raise (Ocsigen_config.Config_file_error ("Duplicate attribute defaulthttpport in "))) | ("defaulthttpsport", s)::suite -> (match defaulthttpsport with | None -> parse_attrs (name, charset, defaulthostname, defaulthttpport, Some s) suite | _ -> raise (Ocsigen_config.Config_file_error ("Duplicate attribute defaulthttpsport in "))) | (s, _)::_ -> raise (Ocsigen_config.Config_file_error ("Wrong attribute for : "^s)) in let host, charset, defaulthostname, defaulthttpport,defaulthttpsport = parse_attrs (None, None, None, None, None) atts in let host = parse_host_field host in let charset = match charset, Ocsigen_config.get_default_charset () with | Some charset, _ | None, Some charset -> charset | None, None -> "utf-8" in let defaulthttpport = match defaulthttpport with | None -> Ocsigen_config.get_default_port () | Some p -> int_of_string "host" p in let defaulthostname = get_defaulthostname ~defaulthostname ~defaulthttpport ~host in let defaulthttpsport = match defaulthttpsport with | None -> Ocsigen_config.get_default_sslport () | Some p -> int_of_string "host" p in let serve_everything = { Ocsigen_extensions.do_not_serve_regexps = []; do_not_serve_files = []; do_not_serve_extensions = []; } in let conf = { Ocsigen_extensions.default_hostname = defaulthostname; default_httpport = defaulthttpport; default_httpsport = defaulthttpsport; mime_assoc = Ocsigen_charset_mime.default_mime_assoc (); charset_assoc = Ocsigen_charset_mime.empty_charset_assoc ~default:charset (); default_directory_index = ["index.html"]; list_directory_content = false; follow_symlinks = Ocsigen_extensions.FollowSymlinksIfOwnerMatch; do_not_serve_404 = serve_everything; do_not_serve_403 = serve_everything; uploaddir = Ocsigen_config.get_uploaddir (); maxuploadfilesize = Ocsigen_config.get_maxuploadfilesize (); } in let parse_host = Ocsigen_extensions.parse_config_item host conf in let parse_config = Ocsigen_extensions.make_parse_config [] parse_host in (* default site for host *) (host, conf, parse_config l)::(parse_server_aux ll) | (Element ("extconf", [("dir", dir)], []))::ll -> let one = try let files = Sys.readdir dir in Array.sort compare files; Array.fold_left (fun l s -> if Filename.check_suffix s "conf" then let filename = dir^"/"^s in let filecont = try Ocsigen_messages.debug (fun () -> "Parsing configuration file "^ filename); parse_ext filename with e -> Ocsigen_messages.errlog ("Error while loading configuration file "^filename^ ": "^(Printexc.to_string e)^" (ignored)"); [] in (match filecont with | [] -> l | s::_ -> l@(parse_server_aux s) ) else l ) [] files with | Sys_error _ as e -> Ocsigen_messages.errlog ("Error while loading configuration file: "^ ": "^(Printexc.to_string e)^" (ignored)"); [] in one@(parse_server_aux ll) | (Element (tag, _, _))::_ -> raise (Config_file_error ("tag <"^tag^"> unexpected inside ")) | _ -> raise (Config_file_error "Syntax error") in Ocsigen_extensions.set_hosts (parse_server_aux c) (* Types of socket declarable in configuration file *) type socket_type = | IPv4 of Unix.inet_addr | IPv6 of Unix.inet_addr | All (* Parsing tags *) let parse_port = let all_ipv6 = Netstring_pcre.regexp "^\\[::\\]:([0-9]+)$" in let all_ipv4 = Netstring_pcre.regexp "^\\*:([0-9]+)$" in let single_ipv6 = Netstring_pcre.regexp "^\\[([0-9A-Fa-f.:]+)\\]:([0-9]+)$" in let single_ipv4 = Netstring_pcre.regexp "^([0-9.]+):([0-9]+)$" in fun s -> let do_match r = Netstring_pcre.string_match r s 0 in let get x i = Netstring_pcre.matched_group x i s in match do_match all_ipv6 with | Some r -> IPv6 (Unix.inet6_addr_any), int_of_string "port" (get r 1) | None -> match do_match all_ipv4 with | Some r -> IPv4 (Unix.inet_addr_any), int_of_string "port" (get r 1) | None -> match do_match single_ipv6 with | Some r -> IPv6 (Unix.inet_addr_of_string (get r 1)), int_of_string "port" (get r 2) | None -> match do_match single_ipv4 with | Some r -> IPv4 (Unix.inet_addr_of_string (get r 1)), int_of_string "port" (get r 2) | None -> All, int_of_string "port" s (* First parsing of config file *) let extract_info c = let rec parse_ssl certificate privatekey = function [] -> Some (certificate,privatekey) | (Element ("certificate" as st, [], p))::l -> (match certificate with None -> parse_ssl (Some (parse_string_tag st p)) privatekey l | _ -> raise (Config_file_error "Two certificates inside ")) | (Element ("privatekey" as st, [], p))::l -> (match privatekey with None -> parse_ssl certificate (Some (parse_string_tag st p)) l | _ -> raise (Config_file_error "Two private keys inside ")) | (Element (tag,_,_))::l -> raise (Config_file_error ("<"^tag^"> tag unexpected inside ")) | _ -> raise (Config_file_error ("Unexpected content inside ")) in let rec aux user group ssl ports sslports minthreads maxthreads = function [] -> ((user, group), (ssl, ports,sslports), (minthreads, maxthreads)) | (Element ("logdir" as st, [], p))::ll -> set_logdir (parse_string_tag st p); aux user group ssl ports sslports minthreads maxthreads ll | (Element ("port" as st, atts, p))::ll -> (match atts with [] | [("protocol", "HTTP")] -> let po = try parse_port (parse_string_tag st p) with Failure _ -> raise (Config_file_error "Wrong value for tag") in aux user group ssl (po::ports) sslports minthreads maxthreads ll | [("protocol", "HTTPS")] -> let po = try parse_port (parse_string_tag st p) with Failure _ -> raise (Config_file_error "Wrong value for tag") in aux user group ssl ports (po::sslports) minthreads maxthreads ll | _ -> raise (Config_file_error "Wrong attribute for ")) | (Element ("minthreads" as st, [], p))::ll -> aux user group ssl ports sslports (Some (int_of_string st (parse_string_tag st p))) maxthreads ll | (Element ("maxthreads" as st, [], p))::ll -> aux user group ssl ports sslports minthreads (Some (int_of_string st (parse_string_tag st p))) ll | (Element ("ssl", [], p))::ll -> (match ssl with None -> aux user group (parse_ssl None None p) ports sslports minthreads maxthreads ll | _ -> raise (Config_file_error "Only one ssl certificate for each server supported for now")) | (Element ("user" as st, [], p))::ll -> (match user with None -> aux (Some (parse_string_tag st p)) group ssl ports sslports minthreads maxthreads ll | _ -> raise (Config_file_error "Only one tag for each server allowed")) | (Element ("group" as st, [], p))::ll -> (match group with None -> aux user (Some (parse_string_tag st p)) ssl ports sslports minthreads maxthreads ll | _ -> raise (Config_file_error "Only one tag for each server allowed")) | (Element ("commandpipe" as st, [], p))::ll -> set_command_pipe (parse_string_tag st p); aux user group ssl ports sslports minthreads maxthreads ll | (Element (tag, _, _))::ll -> aux user group ssl ports sslports minthreads maxthreads ll | _ -> raise (Config_file_error "Syntax error") in let (user, group), si, (mint, maxt) = aux None None None [] [] None None c in let user = match user with None -> None (* Some (get_default_user ()) *) | Some s -> if s = "" then None else Some s in let group = match group with None -> None (* Some (get_default_group ()) *) | Some s -> if s = "" then None else Some s in let mint = match mint with | Some t -> t | None -> get_minthreads () in let maxt = match maxt with | Some t -> t | None -> get_maxthreads () in ((user, group), si, (mint, maxt)) let parse_config ?file () = let file = match file with | None -> Ocsigen_config.get_config_file () | Some f -> f in parser_config (Simplexmlparser.xmlparser_file file) (******************************************************************) ocsigenserver-2.2.0/src/server/ocsigen_local_files.ml0000644000000000000000000002262412060404165021175 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Copyright (C) 2009 Boris Yakobowski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) open Ocsigen_extensions (* Displaying of a local file or directory. Currently used in staticmod and eliom_predefmod*) exception Failed_403 exception Failed_404 exception NotReadableDirectory (* Policies for following symlinks *) type symlink_policy = stat:Unix.LargeFile.stats -> lstat:Unix.LargeFile.stats -> bool let never_follow_symlinks : symlink_policy = fun ~stat ~lstat -> false let follow_symlinks_if_owner_match : symlink_policy = fun ~stat ~lstat -> stat.Unix.LargeFile.st_uid = lstat.Unix.LargeFile.st_uid (* checks that [filename] can be followed depending on the predicate [policy] which must receives as argument both the results of calling [stat] and [lstat] on filenam. If supplied, [stat] must be the result of calling [Unix.stat] on [filename] *) let check_symlinks_aux filename ?(stat=Unix.LargeFile.stat filename) (policy : symlink_policy) = let lstat = Unix.LargeFile.lstat filename in if lstat.Unix.LargeFile.st_kind = Unix.S_LNK then policy ~stat ~lstat else true (* Check that there are no invalid symlinks in the directories leading to [filename]. Paths upwards [no_check_for] are not checked. *) let rec check_symlinks_parent_directories ~filename ~no_check_for (policy : symlink_policy) = (* Ocsigen_messages.debug (fun () -> Printf.sprintf "Checking %s (until %s)" filename (match no_check_for with None -> "" | Some s -> s)); *) if filename = "/" || filename = "." || Some filename = no_check_for then true else let dirname = Filename.dirname filename in check_symlinks_aux dirname policy && check_symlinks_parent_directories ~filename:dirname ~no_check_for policy (* Check that [filename] can be reached according to the given symlink policy *) let check_symlinks ~no_check_for ~filename policy = let aux policy = if filename = "/" then (* The root cannot be a symlink, and this avoids some degenerate cases later on *) true else let filename = (* [filename] should start by at least a slash, as [Filename.is_relative filename] should be false. Hence the length should be at least 1 *) (* We remove an eventual trailing slash, in order to avoid a needless recursion in check_symlinks_parent_directories, and so that Unix.lstat returns the correct result (Unix.lstat "foo/" and Unix.lstat "foo" return two different results...) *) let len = String.length filename - 1 in if filename.[len] = '/' then String.sub filename 0 len else filename in check_symlinks_aux filename policy && check_symlinks_parent_directories filename no_check_for policy in match policy with | AlwaysFollowSymlinks -> true | DoNotFollowSymlinks -> aux never_follow_symlinks | FollowSymlinksIfOwnerMatch -> aux follow_symlinks_if_owner_match let check_dotdot = let regexp = Netstring_pcre.regexp "(/\\.\\./)|(/\\.\\.$)" in fun ~filename -> (* We always reject .. in filenames. In URLs, .. have already been removed by the server, but the filename may come from somewhere else than URLs ... *) try ignore (Netstring_pcre.search_forward regexp filename 0); false with Not_found -> true let can_send filename request = let filename = Neturl.join_path (Neturl.norm_path (Neturl.split_path filename)) in Ocsigen_messages.debug (fun () -> Printf.sprintf "--LocalFiles: checking if file %s can be sent" filename); let matches arg = Netstring_pcre.string_match (Ocsigen_extensions.do_not_serve_to_regexp arg) filename 0 <> None in if matches request.do_not_serve_403 then ( Ocsigen_messages.debug2 "--LocalFiles: this file is forbidden"; raise Failed_403) else if matches request.do_not_serve_404 then ( Ocsigen_messages.debug2 "--LocalFiles: this file must be hidden"; raise Failed_404) (* Return type of a request for a local file. The string argument represents the real file/directory to serve, eg. foo/index.html instead of foo *) type resolved = | RFile of string | RDir of string (* given [filename], we search for it in the local filesystem and - we return ["filename/index.html"] if [filename] corresponds to a directory, ["filename/index.html"] is valid, and ["index.html"] is one possible index (trying all possible indexes in order) - we raise [Failed_404] if [filename] corresponds to a directory, no index exists and [list_dir_content] is false. Warning: this behaviour is not the same as Apache's but it corresponds to a missing service in Eliom (answers 404). This also allows to have an Eliom service after a "forbidden" directory - we raise [Failed_403] if [filename] is a symlink that must not be followed - raises [Failed_404] if [filename] does not exist, or is a special file - otherwise returns [filename] *) (* See also module Files in eliom.ml *) let resolve ?no_check_for ~request ~filename () = (* We only accept absolute filenames in daemon mode, as we do not really know what is the current directory *) let filename = if Filename.is_relative filename && Ocsigen_config.get_daemon () then "/"^filename else filename in try Ocsigen_messages.debug (fun () -> "--LocalFiles: Testing \""^filename^"\"."); let stat = Unix.LargeFile.stat filename in let (filename, stat) = if stat.Unix.LargeFile.st_kind = Unix.S_DIR then if filename.[String.length filename - 1] <> '/' then begin (* In this case, [filename] is a directory but this is not visible in its name as there is no final slash. We signal this fact to Ocsigen, which will then issue a 301 redirection to "filename/" *) Ocsigen_messages.debug (fun () -> "--LocalFiles: "^filename^" is a directory"); raise (Ocsigen_extensions.Ocsigen_Is_a_directory request) end else let rec find_index = function | [] -> (* No suitable index, we try to list the directory *) if request.request_config.list_directory_content then ( Ocsigen_messages.debug2 "--LocalFiles: Displaying directory content"; (filename, stat)) else ( (* No suitable index *) Ocsigen_messages.debug2 "--LocalFiles: No index and no listing"; raise NotReadableDirectory) | e :: q -> let index = filename ^ e in Ocsigen_messages.debug (fun () -> "--LocalFiles: Testing \""^index ^"\" as possible index."); try (index, Unix.LargeFile.stat index) with | Unix.Unix_error (Unix.ENOENT, _, _) -> find_index q in find_index request.request_config.default_directory_index else (filename, stat) in if not (check_dotdot ~filename) then (Ocsigen_messages.debug (fun () -> "--Filenames cannot contain .. as in \""^filename^"\"."); raise Failed_403) else if check_symlinks ~filename ~no_check_for request.request_config.follow_symlinks then ( can_send filename request.request_config; (* If the previous function did not fail, we are authorized to send this file *) Ocsigen_messages.debug (fun () -> "--LocalFiles: Returning \""^filename^"\"."); if stat.Unix.LargeFile.st_kind = Unix.S_REG then RFile filename else if stat.Unix.LargeFile.st_kind = Unix.S_DIR then RDir filename else raise Failed_404 ) else ( (* [filename] is accessed through as symlink which we should not follow according to the current policy *) Ocsigen_messages.debug (fun () -> "--Failed symlink check for \""^filename^"\"."); raise Failed_403) with (* We can get an EACCESS here, if are missing some rights on a directory *) | Unix.Unix_error (Unix.EACCES,_,_) -> raise Failed_403 | Unix.Unix_error (Unix.ENOENT,_,_) -> raise Failed_404 (* Given a local file or directory, we retrieve its content *) let content ~request ~file = try match file with | RDir dirname -> Ocsigen_senders.Directory_content.result_of_content (dirname, request.request_info.ri_full_path) | RFile filename -> Ocsigen_senders.File_content.result_of_content (filename, request.request_config.charset_assoc, request.request_config.mime_assoc ) with | Unix.Unix_error (Unix.EACCES,_,_) -> raise Failed_403 ocsigenserver-2.2.0/src/server/server_main.ml0000644000000000000000000000005212060404165017513 0ustar0000000000000000let () = Ocsigen_server.start_server () ocsigenserver-2.2.0/src/server/ocsigen_range.mli0000644000000000000000000000211412060404165020156 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * ocsigen_range.ml Copyright (C) 2008 * Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) val compute_range : Ocsigen_extensions.request_info -> Ocsigen_http_frame.result -> Ocsigen_http_frame.result Lwt.t val get_range : Ocsigen_http_frame.t -> ((int64 * int64) list * int64 option * Ocsigen_extensions.ifrange) option ocsigenserver-2.2.0/src/server/ocsigen_extensions.mli0000644000000000000000000006341712060404165021276 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module pagesearch.mli * Copyright (C) 2005 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (*****************************************************************************) (*****************************************************************************) (* Tables of services (global and session tables) *) (* Store and load dynamic pages *) (*****************************************************************************) (*****************************************************************************) (** Writing extensions for Ocsigen *) open Lwt open Ocsigen_lib open Ocsigen_cookies exception Ocsigen_http_error of (Ocsigen_cookies.cookieset * int) (** Xml tag not recognized by an extension (usually not a real error) *) exception Bad_config_tag_for_extension of string (** Error in a tag inside the main ocsigen.conf file *) exception Error_in_config_file of string (** Option incorrect in a userconf file *) exception Error_in_user_config_file of string val badconfig : ('a, unit, string, 'b) format4 -> 'a (** Convenient function for raising Error_in_config_file exceptions with a sprintf-formatted argument. *) (*****************************************************************************) (** Type of the result of parsing the field [hostfiler] in the configuration file. Inside the list, the first argument is the host itself (which is a glob-like pattern that can contains [*]), a regexp parsing this pattern, and optionnaly a port. *) type virtual_hosts = (string * Netstring_pcre.regexp * int option) list val hash_virtual_hosts : virtual_hosts -> int val equal_virtual_hosts : virtual_hosts -> virtual_hosts -> bool val host_match: virtual_hosts:virtual_hosts -> host:string option -> port:int -> bool (*****************************************************************************) (** Configuration to hide/forbid local files *) type do_not_serve = { do_not_serve_regexps: string list; do_not_serve_files: string list; do_not_serve_extensions: string list; } exception IncorrectRegexpes of do_not_serve (** Compile a do_not_serve structure into a regexp. Raises [IncorrectRegexpes] if the compilation fails. The result is memoized for subsequent calls with the same argument *) val do_not_serve_to_regexp: do_not_serve -> Netstring_pcre.regexp val join_do_not_serve : do_not_serve -> do_not_serve -> do_not_serve (** Configuration options, passed to (and modified by) extensions *) type config_info = { default_hostname: string; default_httpport: int; default_httpsport: int; mime_assoc: Ocsigen_charset_mime.mime_assoc; charset_assoc : Ocsigen_charset_mime.charset_assoc; (** Default name to use as index file when a directory is requested. Use [None] if no index should be tried. The various indexes are tried in the given order. If no index is specified, or the index does not exists, the content of the directory might be listed, according to [list_directory_content] *) default_directory_index : string list; (** Should the list of files in a directory be displayed if there is no index in this directory ? *) list_directory_content : bool; (** Should symlinks be followed when accessign a local file? *) follow_symlinks: follow_symlink; do_not_serve_404: do_not_serve; do_not_serve_403: do_not_serve; uploaddir: string option; maxuploadfilesize: int64 option; } and follow_symlink = | DoNotFollowSymlinks (** Never follow a symlink *) | FollowSymlinksIfOwnerMatch (** Follow a symlink if the symlink and its target have the same owner *) | AlwaysFollowSymlinks (** Always follow symlinks *) (*****************************************************) type client (** A value of this type represents the client who did the request. *) val client_id : client -> int (** Returns the id number of the connection *) val client_connection : client -> Ocsigen_http_com.connection (** Returns the connection *) type ifrange = IR_No | IR_Ifunmodsince of float | IR_ifmatch of string type file_info = { tmp_filename: string; filesize: int64; raw_original_filename: string; original_basename: string ; file_content_type: (string * string option) option; } (** The request *) type request_info = {ri_url_string: string; (** full URL *) ri_method: Ocsigen_http_frame.Http_header.http_method; (** GET, POST, HEAD... *) ri_protocol: Ocsigen_http_frame.Http_header.proto; (** HTTP protocol used by client *) ri_ssl: bool; (** true if HTTPS, false if HTTP *) ri_full_path_string: string; (** full path of the URL *) ri_full_path: string list; (** full path of the URL *) ri_original_full_path_string: string; (** full path of the URL, as first sent by the client. Should not be changed by extensions, even rewritemod. It is used to create relative links. *) ri_original_full_path: string list; (** full path of the URL, as first sent by the client. See below. *) ri_sub_path: string list; (** path of the URL (only part concerning the site) *) ri_sub_path_string: string; (** path of the URL (only part concerning the site) *) ri_get_params_string: string option; (** string containing GET parameters *) ri_host: string option; (** Host field of the request (if any), without port *) ri_port_from_host_field: int option; (** Port in the host field of the request (if any) *) ri_get_params: (string * string) list Lazy.t; (** Association list of get parameters *) ri_initial_get_params: (string * string) list Lazy.t; (** Association list of get parameters, as sent by the browser (must not be modified by extensions) *) ri_post_params: (config_info -> (string * string) list Lwt.t) option; (** Association list of post parameters, if urlencoded form parameters or multipart data. None if other content type or no content. *) ri_files: (config_info -> (string * file_info) list Lwt.t) option; (** Files sent in the request (multipart data). None if other content type or no content. *) ri_remote_inet_addr: Unix.inet_addr; (** IP of the client *) ri_remote_ip: string; (** IP of the client *) ri_remote_ip_parsed: Ip_address.t Lazy.t; (** IP of the client, parsed *) ri_remote_port: int; (** Port used by the client *) ri_forward_ip: string list; (** IPs of gateways the request went throught *) ri_server_port: int; (** Port of the request (server) *) ri_user_agent: string; (** User_agent of the browser *) ri_cookies_string: string option Lazy.t; (** Cookies sent by the browser *) ri_cookies: string CookiesTable.t Lazy.t; (** Cookies sent by the browser *) ri_ifmodifiedsince: float option; (** if-modified-since field *) ri_ifunmodifiedsince: float option; (** if-unmodified-since field *) ri_ifnonematch: string list option; (** if-none-match field ( * and weak entity tags not implemented) *) ri_ifmatch: string list option; (** if-match field ( * not implemented) *) ri_content_type: ((string * string) * (string * string) list) option; (** Content-Type HTTP header *) ri_content_type_string: string option; (** Content-Type HTTP header *) ri_content_length: int64 option; (** Content-Length HTTP header *) ri_referer: string option Lazy.t; (** Referer HTTP header *) ri_origin: string option Lazy.t; (** Where the cross-origin request or preflight request originates from. http://www.w3.org/TR/cors/#origin-request-header *) ri_access_control_request_method : string option Lazy.t; (** which method will be used in the actual request as part of the preflight request. http://www.w3.org/TR/cors/#access-control-request-method-request-he*) ri_access_control_request_headers : string list option Lazy.t; (** Which headers will be used in the actual request as part of the preflight request. http://www.w3.org/TR/cors/#access-control-request-headers-request-h *) ri_accept: ((string option * string option) * float option * (string * string) list) list Lazy.t; (** Accept HTTP header. For example [(Some "text", None)] means ["text/*"]. The float is the "quality" value, if any. The last association list is for other extensions. *) ri_accept_charset: (string option * float option) list Lazy.t; (** Accept-Charset HTTP header. [None] for the first value means "*". The float is the "quality" value, if any. *) ri_accept_encoding: (string option * float option) list Lazy.t; (** Accept-Encoding HTTP header. [None] for the first value means "*". The float is the "quality" value, if any. *) ri_accept_language: (string * float option) list Lazy.t; (** Accept-Language HTTP header. The float is the "quality" value, if any. *) ri_http_frame: Ocsigen_http_frame.t; (** The full http_frame *) mutable ri_request_cache: Polytables.t; (** Use this to put anything you want, for example, information for subsequent extensions *) ri_client: client; (** The request connection *) ri_range: ((int64 * int64) list * int64 option * ifrange) option Lazy.t; (** Range HTTP header. [None] means all the document. List of intervals + possibly from an index to the end of the document. *) ri_timeofday: float; (** An Unix timestamp computed at the beginning of the request *) mutable ri_nb_tries: int; (** For internal use: used to prevent loops of requests *) ri_connection_closed: unit Lwt.t; (** a thread waking up when the connection is closed *) } (** If you force [ri_files] or [ri_post_params], the request is fully read, so it is not possible any more to read it from [ri_http_frame] (and vice versa). *) and request = { request_info: request_info; request_config: config_info; } exception Ocsigen_Is_a_directory of request type answer = | Ext_do_nothing (** I don't want to do anything *) | Ext_found of (unit -> Ocsigen_http_frame.result Lwt.t) (** "OK stop! I will take the page. You can start the following request of the same pipelined connection. Here is the function to generate the page". The extension must return Ext_found as soon as possible when it is sure it is safe to start next request. Usually as soon as you know that the result will be Ext_found. But in some case, for example proxies, you don't want the request of one connection to be handled in different order. In that case, wait to be sure that the new request will not overtake this one. *) | Ext_found_stop of (unit -> Ocsigen_http_frame.result Lwt.t) (** Found but do not try next extensions *) | Ext_next of int (** Page not found. Try next extension. The integer is the HTTP error code. It is usally 404, but may be for ex 403 (forbidden) if you want another extension to try after a 403. Same as Ext_continue_with but does not change the request. *) | Ext_stop_site of (Ocsigen_cookies.cookieset * int) (** Error. Do not try next extension, but try next site. The integer is the HTTP error code, usally 403. *) | Ext_stop_host of (Ocsigen_cookies.cookieset * int) (** Error. Do not try next extension, do not try next site, but try next host. The integer is the HTTP error code, usally 403. *) | Ext_stop_all of (Ocsigen_cookies.cookieset * int) (** Error. Do not try next extension (even filters), do not try next site, do not try next host, do not . The integer is the HTTP error code, usally 403. *) | Ext_continue_with of (request * Ocsigen_cookies.cookieset * int) (** Used to modify the request before giving it to next extension. The extension returns the request_info (possibly modified) and a set of cookies if it wants to set or cookies ([!Ocsigen_cookies.Cookies.empty] for no cookies). You must add these cookies yourself in request_info if you want them to be seen by subsequent extensions, for example using {!Ocsigen_http_frame.compute_new_ri_cookies}. The integer is usually equal to the error code received from preceding extension (but you may want to modify it). *) | Ext_retry_with of request * Ocsigen_cookies.cookieset (** Used to retry all the extensions with a new request_info. The extension returns the request_info (possibly modified) and a set of cookies if it wants to set or cookies ([!Ocsigen_cookies.Cookies.empty] for no cookies). You must add these cookies yourself in request_info if you want them to be seen by subsequent extensions, for example using {!Ocsigen_http_frame.compute_new_ri_cookies}. *) | Ext_sub_result of extension2 (** Used if your extension want to define option that may contain other options from other extensions. In that case, while parsing the configuration file, call the parsing function (of type [parse_fun]), that will return something of type [extension2]. *) | Ext_found_continue_with of (unit -> (Ocsigen_http_frame.result * request) Lwt.t) (** Same as [Ext_found] but may modify the request. *) | Ext_found_continue_with' of (Ocsigen_http_frame.result * request) (** Same as [Ext_found_continue_with] but does not allow to delay the computation of the page. You should probably not use it, but for output filters. *) and request_state = | Req_not_found of (int * request) | Req_found of (request * Ocsigen_http_frame.result) and extension2 = (unit -> unit) -> Ocsigen_cookies.cookieset -> request_state -> (answer * Ocsigen_cookies.cookieset) Lwt.t type extension = request_state -> answer Lwt.t (** For each tag in the configuration file, you can set the extensions you want. Each extension is implemented as a function, taking the charset found in configuration file, the current state of the request, and returning an answer. If no page has been generated so far ([Req_not_found]), it receive the error code given by the previous extension (default 404), and the request information. If a page has been generated by previous extensions (case [Req_found]), the extension may want to modify the result (filters). *) type parse_fun = Simplexmlparser.xml list -> extension2 (** Type of the functions parsing the content of a tag *) type parse_host (** Information received by extensions accepting userconf files. The parameter [localfiles_root] is an absolute path to the directory that the user is allowed to serve. This is used by staticmod, to disallow the user from allowing access to outside of this directory *) type userconf_info = { localfiles_root : string; } (** [parse_config] is the type of the functions parsing a tag (and returning an extension). Those are functions taking {ul {- the name of the virtual }} that will be called for each , and that will generate a function taking: {ul {- the path attribute of a tag}} that will be called for each , and that will generate a function taking: {ul {- an item of the config file}} that will be called on each tag inside and: {ul {- raise [Bad_config_tag_for_extension] if it does not recognize that tag} {- return something of type [extension] (filter or page generator)}} [parse_config_user] is the type of functions parsing a site tag inside an userconf file. They take one more parameter, of type userconf_info *) type parse_config = virtual_hosts -> config_info -> parse_config_aux and parse_config_user = userconf_info -> parse_config and parse_config_aux = Url.path -> parse_host -> (parse_fun -> Simplexmlparser.xml -> extension ) (** For each extension generating pages, we register its name and six functions: - a function [fun_site] of type [parse_config]. This function will be responsible for handling the options of the configuration files that are recognized by the extension, and potentially generating a page. - a function [user_fun_site] of type [parse_user_config] which has the same role as [fun_site], but inside userconf files. Specify nothing if your extension is disallowed in userconf files. Otherwise, compared to [fun_site], you can selectively disallow some options, as [user_fun_site] must define only safe options (for example it is not safe to allow such options to load a cmo specified by a user, or to execute a program, as this program will be executed by ocsigen's user). Note that [user_fun_site] will be called for every request, whereas the [fun_site] is called only when starting or reloading the server. - a function [begin_init] that will be called at the beginning of the initialisation phase of each site, and each time the config file is reloaded. - a function [end_init] that will be called at the end of the initialisation phase of each site - a function [init_fun] that will be called just before registering the extension, taking as parameter the configuration options between [] and []. This allows to give configuration options to extensions. If no function is supplied, the extension is supposed to accept no option (and loading will fail if an option is supplied) See <> for the easy construction of such a function. - a function [exn_handler] that will create an error message from the exceptions that may be raised during the initialisation phase, and raise again all other exceptions Moreover, if the optional parameter [?respect_pipeline] is [true], the extension will ask the server to respect the order of the pipeline. That means that it will wait to be sure that the previous request from the same connection has been taken by an extension before giving a request to an extension. Use this to write proxies extensions, when you want to be able to pipeline the requests you to another server. It is false by default. *) val register_extension : name:string -> ?fun_site:parse_config -> ?user_fun_site:parse_config_user -> ?begin_init:(unit -> unit) -> ?end_init:(unit -> unit) -> ?init_fun:(Simplexmlparser.xml list -> unit) -> ?exn_handler:(exn -> string) -> ?respect_pipeline:bool -> unit -> unit (** This modules contains types and constructor for the description of XML configurations and the accordingly parsing. *) module Configuration : sig (** Specification of a XML element. *) type element (** Specification of a XML attribute. *) type attribute (** Create the specification of a XML element. @param name Name of the XML tag @param init A function to be executed before processing the child elements and attributes @param obligatory Whether the element is obligatory ([false] by default) @param elements Specifications of the child elements @param attribute Specifications of the attributes @param pcdata Function to be applied on the pcdata ([ignore_blank_pcdata] by default) @param other_elements Optional function to be applied on the content of unspecified tags @param other_attributes Optional function to be applied on the unspecfied attributes *) val element : name:string -> ?obligatory:bool -> ?init:(unit -> unit) -> ?elements:element list -> ?attributes:attribute list -> ?pcdata:(string -> unit) -> ?other_elements:(string -> (string * string) list -> Simplexmlparser.xml list -> unit) -> ?other_attributes:(string -> string -> unit) -> unit -> element (** [attribute ~name f] create a specification of a XML attribute. @param name The name of the XML attribute @param obligatory Whether the attribute is obligatory ([false] by default) @param f Function to be applied on the value string of the attribute *) val attribute : name:string -> ?obligatory:bool -> (string -> unit) -> attribute (** Process an XML element by the specifications. @param in_tag Name of the enclosing XML tag (just for generating error messages) @param elements Specifications of the child elements @param pcdata Function to be applied on the PCDATA ([ignore_blank_pcdata] by default) @param other_elements Optional function to be applied on unexpected child elements @raise Error_in_user_config_file If an element (resp. attribute) occurs which is not specified by the [element] (resp. [attribute]) parameter and no function [other_elements] (resp. other_attributes) is provided *) val process_element : in_tag:string -> elements:element list -> ?pcdata:(string -> unit) -> ?other_elements:(string -> (string * string) list -> Simplexmlparser.xml list -> unit) -> Simplexmlparser.xml -> unit (** Application of [process_element] on a list of XML elements. *) val process_elements : in_tag:string -> elements:element list -> ?pcdata:(string -> unit) -> ?other_elements:(string -> (string * string) list -> Simplexmlparser.xml list -> unit) -> ?init:(unit -> unit) -> Simplexmlparser.xml list -> unit (** The specification for ignoring blank PCDATA ('\n', '\r', ' ', '\t') and failing otherwise (a reasonable default). *) val ignore_blank_pcdata : in_tag:string -> string -> unit end (** Returns the hostname to be used for absolute links or redirections. It is either the Host header or the hostname set in the configuration file. *) val get_hostname : request -> string (** Returns the port to be used for absolute links or redirections. It is either the port the server is listening at or the default port set in the configuration file. *) val get_port : request -> int (** Parsing URLs. This allows to modify the URL in the request_info. (to be used for example with Ext_retry_with or Ext_continue_with) *) val ri_of_url : ?full_rewrite:bool -> string -> request_info -> request_info (** {3 User directories} *) (** Exception raised when an non-existing user is found *) exception NoSuchUser (** The type for string that may contain a $u(...) *) type ud_string val parse_user_dir : string -> ud_string val replace_user_dir : Netstring_pcre.regexp -> ud_string -> string -> string (** raises [Not_found] is the directory does not exist *) (** {3 Regular expressions for redirections} *) exception Not_concerned val find_redirection : Netstring_pcre.regexp -> bool -> string -> bool -> string option -> int -> string option -> string -> string -> string (** {3 Extending server commands} *) exception Unknown_command (** Use a prefix for all your commands when you want to create extension-specific commands. For example if the prefix is "myextension" and the commande "blah", the actual command to be written by the user is "myextension:blah". Give as parameter the function that will parse the command and do an action. Its first parameter is the full command as a string. The second one is the command without prefix, split by word. It must raise [ocsigen_extensions.Unknown_command] if it does not recognize the command. *) val register_command_function : ?prefix:string -> (string -> string list -> unit Lwt.t) -> unit (**/**) val get_command_function : unit -> (?prefix:string -> string -> string list -> unit Lwt.t) (**/**) (**/**) val make_parse_config : Url.path -> parse_config_aux -> parse_fun val parse_config_item : parse_config val parse_user_site_item : parse_config_user val set_hosts : (virtual_hosts * config_info * extension2) list -> unit val get_hosts : unit -> (virtual_hosts * config_info * extension2) list (** Compute the result to be sent to the client, by trying all extensions according the configuration file. *) val compute_result : ?previous_cookies:Ocsigen_cookies.cookieset -> ?awake_next_request:bool -> request_info -> Ocsigen_http_frame.result Lwt.t (** Profiling *) val get_number_of_connected : unit -> int val get_number_of_connected : unit -> int (** Server internal functions: *) val incr_connected : int -> unit val decr_connected : unit -> unit Lwt.t val wait_fewer_connected : int -> unit Lwt.t val during_initialisation : unit -> bool val start_initialisation : unit -> unit val end_initialisation : unit -> unit val get_numberofreloads : unit -> int val get_init_exn_handler : unit -> exn -> string val set_config : Simplexmlparser.xml list -> unit val client_of_connection : Ocsigen_http_com.connection -> client val get_server_address : request_info -> Unix.inet_addr * int val sockets : Lwt_unix.file_descr list ref val sslsockets : Lwt_unix.file_descr list ref ocsigenserver-2.2.0/src/server/.depend0000644000000000000000000001077212060404165016121 0ustar0000000000000000ocsigen_extensions.cmi: ../baselib/polytables.cmi ../baselib/ocsigen_lib.cmi \ ../http/ocsigen_http_frame.cmi ../http/ocsigen_http_com.cmi \ ../http/ocsigen_cookies.cmi ../http/ocsigen_charset_mime.cmi ocsigen_http_client.cmi: ../baselib/ocsigen_stream.cmi \ ../http/ocsigen_http_frame.cmi ocsigen_extensions.cmi \ ../http/http_headers.cmi ocsigen_local_files.cmi: ../http/ocsigen_http_frame.cmi \ ocsigen_extensions.cmi ocsigen_parseconfig.cmi: ocsigen_extensions.cmi ocsigen_range.cmi: ../http/ocsigen_http_frame.cmi ocsigen_extensions.cmi ocsigen_server.cmi: ocsigen_extensions.cmo: ../baselib/polytables.cmi \ ../baselib/ocsigen_messages.cmi ../baselib/ocsigen_loader.cmi \ ../baselib/ocsigen_lib.cmi ../http/ocsigen_http_frame.cmi \ ../http/ocsigen_http_com.cmi ../http/ocsigen_cookies.cmi \ ../baselib/ocsigen_config.cmi ../http/ocsigen_charset_mime.cmi \ ../http/http_headers.cmi ocsigen_extensions.cmi ocsigen_extensions.cmx: ../baselib/polytables.cmx \ ../baselib/ocsigen_messages.cmx ../baselib/ocsigen_loader.cmx \ ../baselib/ocsigen_lib.cmx ../http/ocsigen_http_frame.cmx \ ../http/ocsigen_http_com.cmx ../http/ocsigen_cookies.cmx \ ../baselib/ocsigen_config.cmx ../http/ocsigen_charset_mime.cmx \ ../http/http_headers.cmx ocsigen_extensions.cmi ocsigen_http_client.cmo: ../baselib/ocsigen_stream.cmi \ ../http/ocsigen_senders.cmi ../baselib/ocsigen_messages.cmi \ ../baselib/ocsigen_lib.cmi ../http/ocsigen_http_frame.cmi \ ../http/ocsigen_http_com.cmi ../http/ocsigen_headers.cmi \ ocsigen_extensions.cmi ../baselib/ocsigen_config.cmi \ ../http/http_headers.cmi ocsigen_http_client.cmi ocsigen_http_client.cmx: ../baselib/ocsigen_stream.cmx \ ../http/ocsigen_senders.cmx ../baselib/ocsigen_messages.cmx \ ../baselib/ocsigen_lib.cmx ../http/ocsigen_http_frame.cmx \ ../http/ocsigen_http_com.cmx ../http/ocsigen_headers.cmx \ ocsigen_extensions.cmx ../baselib/ocsigen_config.cmx \ ../http/http_headers.cmx ocsigen_http_client.cmi ocsigen_local_files.cmo: ../http/ocsigen_senders.cmi \ ../baselib/ocsigen_messages.cmi ocsigen_extensions.cmi \ ocsigen_local_files.cmi ocsigen_local_files.cmx: ../http/ocsigen_senders.cmx \ ../baselib/ocsigen_messages.cmx ocsigen_extensions.cmx \ ocsigen_local_files.cmi ocsigen_parseconfig.cmo: ../baselib/ocsigen_messages.cmi \ ../baselib/ocsigen_loader.cmi ../baselib/ocsigen_lib.cmi \ ocsigen_extensions.cmi ../baselib/ocsigen_config.cmi \ ../http/ocsigen_charset_mime.cmi ocsigen_parseconfig.cmi ocsigen_parseconfig.cmx: ../baselib/ocsigen_messages.cmx \ ../baselib/ocsigen_loader.cmx ../baselib/ocsigen_lib.cmx \ ocsigen_extensions.cmx ../baselib/ocsigen_config.cmx \ ../http/ocsigen_charset_mime.cmx ocsigen_parseconfig.cmi ocsigen_range.cmo: ../baselib/ocsigen_stream.cmi ../baselib/ocsigen_lib.cmi \ ../http/ocsigen_http_frame.cmi ocsigen_extensions.cmi \ ../baselib/ocsigen_config.cmi ../http/http_headers.cmi ocsigen_range.cmi ocsigen_range.cmx: ../baselib/ocsigen_stream.cmx ../baselib/ocsigen_lib.cmx \ ../http/ocsigen_http_frame.cmx ocsigen_extensions.cmx \ ../baselib/ocsigen_config.cmx ../http/http_headers.cmx ocsigen_range.cmi ocsigen_server.cmo: ../baselib/polytables.cmi ../baselib/ocsigen_stream.cmi \ ../http/ocsigen_senders.cmi ocsigen_range.cmi ocsigen_parseconfig.cmi \ ../baselib/ocsigen_messages.cmi ../baselib/ocsigen_loader.cmi \ ../baselib/ocsigen_lib.cmi ../http/ocsigen_http_frame.cmi \ ../http/ocsigen_http_com.cmi ocsigen_http_client.cmi \ ../http/ocsigen_headers.cmi ocsigen_extensions.cmi \ ../http/ocsigen_cookies.cmi ../baselib/ocsigen_config.cmi \ ../baselib/ocsigen_commandline.cmo ../baselib/ocsigen_cache.cmi \ ../http/multipart.cmi ../http/http_headers.cmi \ ../baselib/dynlink_wrapper.cmo ocsigen_server.cmi ocsigen_server.cmx: ../baselib/polytables.cmx ../baselib/ocsigen_stream.cmx \ ../http/ocsigen_senders.cmx ocsigen_range.cmx ocsigen_parseconfig.cmx \ ../baselib/ocsigen_messages.cmx ../baselib/ocsigen_loader.cmx \ ../baselib/ocsigen_lib.cmx ../http/ocsigen_http_frame.cmx \ ../http/ocsigen_http_com.cmx ocsigen_http_client.cmx \ ../http/ocsigen_headers.cmx ocsigen_extensions.cmx \ ../http/ocsigen_cookies.cmx ../baselib/ocsigen_config.cmx \ ../baselib/ocsigen_commandline.cmx ../baselib/ocsigen_cache.cmx \ ../http/multipart.cmx ../http/http_headers.cmx \ ../baselib/dynlink_wrapper.cmx ocsigen_server.cmi server_main.cmo: ocsigen_server.cmi server_main.cmx: ocsigen_server.cmx ocsigenserver-2.2.0/src/server/ocsigen_http_client.mli0000644000000000000000000001353112060404165021404 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * ocsigen_http_client.ml Copyright (C) 2005 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Using Ocsigen as a HTTP client *) val get : ?https: bool -> ?port:int -> ?headers: Http_headers.t -> host:string -> uri:string -> unit -> Ocsigen_http_frame.t Lwt.t (** Do a GET HTTP request. The default port is 80 for HTTP, 443 for HTTPS. The default protocol is http ([https=false]). Warning: the stream must be finalized manually after reading, using {!Ocsigen_stream.finalize}, otherwise you will have fd leaks. *) val get_url : ?headers: Http_headers.t -> string -> Ocsigen_http_frame.t Lwt.t (** Do a GET HTTP request. The string must be a full URL. Warning: the stream must be finalized manually after reading, using {!Ocsigen_stream.finalize}, otherwise you will have fd leaks. *) val post_string : ?https: bool -> ?port:int -> ?headers: Http_headers.t -> host:string -> uri:string -> content:string -> content_type:(string * string) -> unit -> Ocsigen_http_frame.t Lwt.t (** Do a POST HTTP request. The default port is 80 for HTTP, 443 for HTTPS. The default protocol is http ([https=false]). Warning: the stream must be finalized manually after reading, using {!Ocsigen_stream.finalize}, otherwise you will have fd leaks. *) val post_string_url : ?headers: Http_headers.t -> content:string -> content_type:(string * string) -> string -> Ocsigen_http_frame.t Lwt.t (** Do a GET HTTP request. The string must be a full URL. Warning: the stream must be finalized manually after reading, using {!Ocsigen_stream.finalize}, otherwise you will have fd leaks. *) val post_urlencoded : ?https: bool -> ?port:int -> ?headers: Http_headers.t -> host:string -> uri:string -> content:(string * string) list -> unit -> Ocsigen_http_frame.t Lwt.t (** Do a POST HTTP request with URL encoded parameters as content. The default port is 80 for HTTP, 443 for HTTPS. The default protocol is http ([https=false]). Warning: the stream must be finalized manually after reading, using {!Ocsigen_stream.finalize}, otherwise you will have fd leaks. *) val post_urlencoded_url : ?headers: Http_headers.t -> content:(string * string) list -> string -> Ocsigen_http_frame.t Lwt.t (** Do a GET HTTP request with URL encoded parameters as content. The string must be a full URL. Warning: the stream must be finalized manually after reading, using {!Ocsigen_stream.finalize}, otherwise you will have fd leaks. *) val raw_request : ?client: Ocsigen_extensions.client -> ?keep_alive: bool -> ?headers: Http_headers.t -> ?https: bool -> ?port:int -> content: string Ocsigen_stream.t option -> ?content_length: int64 -> http_method: Ocsigen_http_frame.Http_header.http_method -> host:string -> inet_addr:Unix.inet_addr -> uri:string -> unit -> unit -> Ocsigen_http_frame.t Lwt.t (** Do an HTTP request (low level). If the optional argument [headers] is present, no headers will be added by Ocsigen, but those in this argument and host, and [connection: close] or [connection: keep-alive]. Be carefull to respect HTTP/1.1 in this case! ([host] is the full Host HTTP field to send). The default port is 80 for HTTP, 443 for HTTPS. The default protocol is http ([https=false]). The optional parameter [~keep_alive] asks to keep the connection opened after the request for a short amount of time to allow other requests to the same server to use the same connection. It is true by default. If there is one opened free connection, we will use it instead of opening a new one. If you do this request to serve it later to a client or to generate a page for a client, add the optional parameter [~client]. Thus, the request you do will be pipelined with other requests coming from the same connection. A request will never be pipelined after a request from another client connection. Pipelining will be used only for requests to server we know supporting it (according to previous requests). It is recommended to specify this optional parameter for all requests (with the value found in field [ri_client] of type {!Ocsigen_extensions.request_info}). The optional parameter [?head] asks to do a [HEAD] HTTP request. It is [false] by default. When called without the last parameter, the function will pipeline the request (if needed), then return the function to get the page. This allows to keep pipeline order when writing an extension. *) (*VVV Dangerous!! *) val basic_raw_request : ?headers: Http_headers.t -> ?https: bool -> ?port:int -> content: string Ocsigen_stream.t option -> ?content_length: int64 -> http_method: Ocsigen_http_frame.Http_header.http_method -> host:string -> inet_addr:Unix.inet_addr -> uri:string -> unit -> Ocsigen_http_frame.t Lwt.t (** Same as {!Ocsigen_http_client.raw_request}, but does not try to reuse connections. Opens a new connections for each request. Far less efficient. *) (**/**) val sslcontext : Ssl.context ref ocsigenserver-2.2.0/src/server/ocsigen_local_files.mli0000644000000000000000000000570512060404165021347 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Copyright (C) 2009 Boris Yakobowski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** The requested file does not exists *) exception Failed_404 (** The requested file cannot be served: does not exists, not enough permissions ... *) exception Failed_403 (** The file is a directory which we should not display *) exception NotReadableDirectory (* (** Default options: - never follow symlinks - use "index.html" as default index - do not list the content of directories *) val default_options : options *) (** Local file corresponding to a request. The string argument represents the real file or directory to serve, eg. foo/index.html instead of foo *) type resolved = | RFile of string | RDir of string (** Finds [filename] in the filesystem, with a possible redirection if it is a directory. Takes into account the fact that [filename] does not exists, is a symlink or is a directory, and raises Failed_404 or Failed_403 accordingly. - we return ["filename/index.html"] if [filename] corresponds to a directory, ["filename/index.html"] is valid, and ["index.html"] is one possible index (trying all possible indexes in order) - we raise [Failed_404] if [filename] corresponds to a directory, no index exists and [list_dir_content] is false. Warning: this behaviour is not the same as Apache's but it corresponds to a missing service in Eliom (answers 404). This also allows to have an Eliom service after a "forbidden" directory - we raise [Failed_403] if [filename] is a symlink that must not be followed - raises [Failed_404] if [filename] does not exist, or is a special file - otherwise returns [filename] [no_check_for] is supposed to be a prefix of [filename] ; directories above [no_check_for] are not checked for symlinks *) val resolve : ?no_check_for:string -> request:Ocsigen_extensions.request -> filename:string -> unit -> resolved (** Given the local file [file], with a request originating at url [url], returns a viewable content of [file]. Currently, the [url] parameter is used only if [url] is a directory *) val content: request:Ocsigen_extensions.request -> file:resolved -> Ocsigen_http_frame.result Lwt.t ocsigenserver-2.2.0/src/server/ocsigen_parseconfig.mli0000644000000000000000000000513212060404165021365 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module ocsigen_parseconfig.ml * Copyright (C) 2005 Vincent Balat, Nataliya Guts * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Config file parsing *) (** Parse a size ("infinity" or using SI or binary units, e.g. 10 10B 10o 10ko 10kB 10kiB 10MiB 10TB ...). Raises [Failure "Ocsigen_parseconfig.parse_size"] in case of error. *) val parse_size : string -> int64 option (** [parse_size_tag tag s] parses a size (same syntax as [parse_size]). In case of error, raises [Ocsigen_config.Config_file_error m] where [m] is an error message explaining that a size was expected in tag []. *) val parse_size_tag : string -> string -> int64 option (** Parse a string (PCDATA) as XML content. Raises [Failure "Ocsigen_parseconfig.parse_string"] in case of error. *) val parse_string : Simplexmlparser.xml list -> string (** [parse_string_tag tag s] parses a string (same syntax as [parse_string]). In case of error, raises [Ocsigen_config.Config_file_error m] where [m] is an error message explaining that a string was expected in tag []. *) val parse_string_tag : string -> Simplexmlparser.xml list -> string (** Parses the [hostfilter] field of the configuration file, which is a disjunction of possible hostnames (that can themselves contain wildcards) *) val parse_host_field: string option -> Ocsigen_extensions.virtual_hosts (**/**) val parser_config : Simplexmlparser.xml list -> Simplexmlparser.xml list list val parse_server : bool -> Simplexmlparser.xml list -> unit type socket_type = | IPv4 of Unix.inet_addr | IPv6 of Unix.inet_addr | All val extract_info : Simplexmlparser.xml list -> (string option * string option) * ((string option * string option) option * (socket_type * int) list * (socket_type * int) list) * (int * int) val parse_config : ?file:string -> unit -> Simplexmlparser.xml list list ocsigenserver-2.2.0/src/server/ocsigen_server.mli0000644000000000000000000000217712060404165020401 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Copyright (C) 2005 * Vincent Balat, Denis Berthod, Nataliya Guts, Jérôme Vouillon * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Reload the configuration of the server. The optional parameter [?file] may be use to read the configuration from another file. *) val reload: ?file:string -> unit -> unit (** Start the server (does not return) *) val start_server: unit -> unit ocsigenserver-2.2.0/src/server/ocsigen_http_client.ml0000644000000000000000000007322312060404165021237 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * ocsigen_http_client.ml Copyright (C) 2005 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (* It is a first version. Many improvements are possible. TODO - get using pipeline (~client parameter) - better heuristic for trusting server keepalive? I think it could be less strict, as we redo requests? It should probably be different for a proxy or a reverse proxy ... - keep the name of the server in pipeline table? - Avoid the keepalive table to become too big - Add a parameter to disable reuse of free connections? - Allow to set parameters in config file (probing_time, etc) - Find a way to pipeline POST requests? at least PUT? - Does it work well if the server is using HTTP/1.0? (probably not because of chunks) - limit the number of concurrent requests to avoid too many opened file descriptors Notes: - Pipeline: If the server decided to close the pipeline when some request has already been sent, we redo the request. But ... it has never been tested!!!!! See exception Pipeline_failed. - Pipeline: we pipeline requests without body if possible, and we resend on a new connection if the pipeline failed. - We do not pipeline requests with non-empty body!!!!!!!!!!!!!! and requests using CONNECT method. CONNECT and POST because they are not idempotent (see RFC). Requests with body because we do not keep the content so we can not resend them ... - It is actually doing very few pipelining when used with Firefox or Konqueror ... The previous request is always received before sending the next one. Why? - Is it ok to reuse the same connection for several clients? May be restrict to several connections from the same client? What if the client is a proxy? - What to do with headers like user-agent, server, etc? For now we keep user-agent but send Ocsigen as server! - If I'm right, we are not supposed to change the User-Agent (end-to-end) but is there a hop-to-hop equivalent? What about other headers? Note that for now, we pipeline only if incoming requests were pipelined. But we can reuse a free connection. If the server says Connection:close once, we do not trust it any more for an amount of time ... Note (2011/02/09): I don't remember why there is a "head" field in the key of connection_table and free_connection_table ... *) open Ocsigen_lib (* constants. Should be configurable *) let max_free_open_connections = 10 exception Connection_timed_out exception Connection_refused exception Pipeline_failed let (>>=) = Lwt.(>>=) (* let _ = Ssl_threads.init () (* Does not work for now (deadlock) -- bug in ocamlssl *) *) let _ = Ssl.init () let sslcontext = ref (Ssl.create_context Ssl.SSLv23 Ssl.Both_context) let request_sender = Ocsigen_http_com.create_sender ~proto:Ocsigen_http_frame.Http_header.HTTP11 () (*****************************************************************************) module T = Hashtbl.Make( struct type t = int * (Unix.inet_addr * int * bool) (* client ID, (IP, port, doing HEAD request) *) let equal = (=) let hash = Hashtbl.hash end) let connection_table = T.create 100 (* (comment added 2001/02/09) The connection table associates to each incoming connection (called "client") the thread and information about the output requests, in order to try to pipeline them on the same output connection. If the client parameter is not present, we do the requests independantly. We try to find a free connection to the right server or we create one if there is none. In that case, the distant server may have the request in wrong order. If there is a body in the request we want to do, we do not try to pipeline, even if it comes from the same client. We use a free (or new) connection. *) module FT = struct module T = Hashtbl.Make( struct type t = Unix.inet_addr * int * bool (* IP, port, doing HEAD request *) let equal = (=) let hash = Hashtbl.hash end) let free_connection_table = T.create 100 (* contains unused opened output connections *) let add k v = let add_last v = let rec aux v = function | [] -> [v], 2 | a::l -> let l', size = aux v l in a::l', (size + 1) in function | [] -> v, [], 1 | a::l -> let l', size = aux v l in a, l', size in try let l = T.find free_connection_table k in let first, new_l, size = add_last v l in let new_l = if size > max_free_open_connections then begin Ocsigen_messages.debug2 "--Ocsigen_http_client: Too much free connections. \ Removing the oldest one."; ignore (!(fst first) >>= fun conn -> Lwt_ssl.shutdown (Ocsigen_http_com.connection_fd conn) Unix.SHUTDOWN_ALL; Lwt.return ()); new_l end else first::new_l in T.replace free_connection_table k new_l with Not_found -> T.replace free_connection_table k [v] let find_remove k = match T.find free_connection_table k with | [] -> T.remove free_connection_table k; raise Not_found | [a] -> T.remove free_connection_table k; a | a::l -> T.replace free_connection_table k l; a let remove k (conn, gf) = let rec aux = function | [] -> false, [] | ((conn2, _) as a)::l -> if conn2 == conn then true, l else let (b, ll) = aux l in b, a::ll in try match T.find free_connection_table k with | [] -> T.remove free_connection_table k; | [(conn2, _)] -> if conn == conn2 then T.remove free_connection_table k; | l -> let b, ll = aux l in if b then T.replace free_connection_table k ll; with Not_found -> () | e -> Ocsigen_messages.debug2 ("--Ocsigen_http_client: exception while removing from connection table: "^Printexc.to_string e) end let remove_on_error_from_free_conn key ((_, gf) as v) = ignore (Lwt.catch (fun () -> gf >>= fun _ -> Lwt.return ()) (fun _ -> FT.remove key v; Lwt.return () ) ) (*****************************************************************************) module KT = Hashtbl.Make( struct type t = Unix.inet_addr * int let equal = (=) let hash = Hashtbl.hash end) type k = Probing of int | Yes | No of float (* last failure date *) let pipelining_table = KT.create 100 let probing_time = 1000 (* number of requests for probing *) let purgatory_time = 10000 (* number of requests for probing after purgatory *) let purgatory_delay = 86400. (* 1 day *) let appreciate_server_pipeline inet_addr port = let key = (inet_addr, port) in match try match KT.find pipelining_table key with | Yes -> None | No t when Unix.time () -. t < purgatory_delay -> None | No t -> Ocsigen_messages.warning ("--Ocsigen_http_client will give to server "^ (Unix.string_of_inet_addr inet_addr)^":"^(string_of_int port) ^" a new probing period for pipelining."); Some purgatory_time (* second chance *) | Probing n -> Some (n-1) with Not_found -> Ocsigen_messages.warning ("--Ocsigen_http_client will give to server "^ (Unix.string_of_inet_addr inet_addr)^":"^(string_of_int port) ^" a first probing period for pipelining."); Some probing_time with | None -> () | Some n -> if n < 0 then begin Ocsigen_messages.warning ("--Ocsigen_http_client now trusts server "^ (Unix.string_of_inet_addr inet_addr)^":"^(string_of_int port) ^" for pipelining. He passed the probing period."); KT.replace pipelining_table key Yes end else KT.replace pipelining_table key (Probing n) let boycott_server_pipeline server_do_keepalive inet_addr port = if server_do_keepalive then Ocsigen_messages.warning ("--Ocsigen_http_client does not trust server "^ (Unix.string_of_inet_addr inet_addr)^":"^(string_of_int port) ^" any more for pipelining. He just closed the connection!"); KT.replace pipelining_table (inet_addr, port) (No (Unix.time ())) let keep_alive_server inet_addr port = (* print_endline "désactivé !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"; true *) try match KT.find pipelining_table (inet_addr, port) with | Yes -> true | No _ -> Ocsigen_messages.debug (fun () -> "--Ocsigen_http_client does not trust server "^ (Unix.string_of_inet_addr inet_addr)^":"^(string_of_int port) ^" for pipelining."); false | Probing _ -> Ocsigen_messages.debug (fun () -> "--Ocsigen_http_client is currently probing server "^ (Unix.string_of_inet_addr inet_addr)^":"^(string_of_int port) ^" for pipelining. No pipeline for now."); false with Not_found -> false (*****************************************************************************) let handle_connection_error fd exn = match exn with | Unix.Unix_error (Unix.ECONNREFUSED, _, _) -> Lwt_unix.close fd >>= fun () -> Lwt.fail (Ocsigen_http_frame.Http_error.Http_exception (502, Some "Connection refused by distant server", None)) | Unix.Unix_error (Unix.ECONNRESET, _, _) -> (* Caused by shutting down the file descriptor after a timeout *) Lwt_unix.close fd >>= fun () -> Lwt.fail (Ocsigen_http_frame.Http_error.Http_exception (504, Some "Distant server closed connection", None)) | e -> Lwt_unix.close fd >>= fun () -> Lwt.fail e let raw_request ?client ?(keep_alive = true) ?headers ?(https=false) ?port ~content ?content_length ~http_method ~host ~inet_addr ~uri () = (* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv *) let head = http_method = Ocsigen_http_frame.Http_header.HEAD in let port = match port with | None -> if https then 443 else 80 | Some p -> p in Ocsigen_messages.debug_noel2 "--Ocsigen_http_client: *************** new request to host "; Ocsigen_messages.debug (fun () -> host^", port "^string_of_int port^", for "^uri); let keep_alive_asked = keep_alive in let server_do_keepalive = keep_alive_server inet_addr port in let do_keep_alive = keep_alive_asked && server_do_keepalive in let client = if not do_keep_alive then None else client in (* let do_pipeline = not client = None in *) if do_keep_alive then Ocsigen_messages.debug2 "--Ocsigen_http_client: Doing keep_alive" else Ocsigen_messages.debug2 "--Ocsigen_http_client: NOT doing keep_alive"; if client = None then Ocsigen_messages.debug2 "--Ocsigen_http_client: NOT pipelining" else Ocsigen_messages.debug2 "--Ocsigen_http_client: will do pipelining if needed"; let close_on_error thr_conn gf = (* No need for lingering close, if I am not wrong *) ignore (thr_conn >>= fun conn -> (Lwt.catch (fun () -> gf >>= fun _ -> Lwt.return ()) (function | Ocsigen_http_com.Connection_closed -> Ocsigen_messages.debug2 "--Ocsigen_http_client: connection closed by server (closing)"; Lwt_ssl.close (Ocsigen_http_com.connection_fd conn) | Ocsigen_http_com.Keepalive_timeout -> Ocsigen_messages.debug2 "--Ocsigen_http_client: connection closed by keepalive timeout"; Lwt_ssl.close (Ocsigen_http_com.connection_fd conn) | e -> Ocsigen_messages.warning ("--Ocsigen_http_client: exception caught while receiving frame: "^ Printexc.to_string e^ " - closing connection to the server."); Lwt_ssl.close (Ocsigen_http_com.connection_fd conn) ))) in let new_conn () = let sockaddr = Unix.ADDR_INET (inet_addr, port) in let fd = Lwt_unix.socket (Unix.domain_of_sockaddr sockaddr) Unix.SOCK_STREAM 0 in Lwt_unix.set_close_on_exec fd; let thr_conn = Lwt.catch (fun () -> let timeout = Lwt_timeout.create (Ocsigen_config.get_server_timeout ()) (fun () -> Lwt_unix.shutdown fd Unix.SHUTDOWN_RECEIVE); in Lwt_timeout.start timeout; Lwt_unix.connect fd sockaddr >>= fun () -> (if https then Lwt_ssl.ssl_connect fd !sslcontext else Lwt.return (Lwt_ssl.plain fd)) >>= fun socket -> Lwt_timeout.stop timeout; Lwt.return (Ocsigen_http_com.create_receiver (Ocsigen_config.get_server_timeout ()) Ocsigen_http_com.Answer socket)) (handle_connection_error fd) in let gf = thr_conn >>= fun conn -> Ocsigen_http_com.get_http_frame ~head conn in close_on_error thr_conn gf; (thr_conn, gf) in let find_conn () = (* If there is already a free connection for the same server, we reuse it *) try let c = FT.find_remove (inet_addr, port, head) in Ocsigen_messages.debug2 "--Ocsigen_http_client: Free connection found"; c with Not_found -> Ocsigen_messages.debug2 "--Ocsigen_http_client: Free connection not found - creating new one"; let (c, g) = new_conn () in (ref c, g) in let (key_new_waiter, ref_thr_conn, get_frame) = match client with | Some client when (content = None && (* Do not pipeline requests with content, as we cannot resend them for now if the pipeline failed. Do not pipeline CONNECT and POST. *) http_method <> Ocsigen_http_frame.Http_header.CONNECT) -> (* Trying to pipeline *) Ocsigen_messages.debug_noel2 "--Ocsigen_http_client: Trying to find an opened connection for same client - connection number "; Ocsigen_messages.debug (fun () -> string_of_int (Ocsigen_extensions.client_id client)); let new_waiter, new_waiter_awakener = Lwt.wait () in let key = (Ocsigen_extensions.client_id client, (inet_addr, port, head)) in (* Is there already a connection for the same client? *) let (ref_thr_conn, get_frame, nb_users) = try let r = T.find connection_table key in Ocsigen_messages.debug2 "--Ocsigen_http_client: Connection FOUND for this client! PIPELINING! <----------------"; r with Not_found -> Ocsigen_messages.debug2 "--Ocsigen_http_client: Connection not found for this client's connection"; let (ref_thr_conn, gf) = find_conn () in (ref_thr_conn, gf, 0) in let new_get_frame = new_waiter >>= fun () -> !ref_thr_conn >>= fun conn -> let gf = Ocsigen_http_com.get_http_frame ~head conn in close_on_error !ref_thr_conn gf; gf in Ocsigen_messages.debug2 "--Ocsigen_http_client: Putting connection in connection_table"; T.replace connection_table key (ref_thr_conn, new_get_frame, nb_users + 1); (* remove_on_error key get_frame; *) (Some (key, new_waiter_awakener), ref_thr_conn, get_frame) | _ -> (* No pipeline *) let (ref_thr_conn, gf) = find_conn () in (None, ref_thr_conn, gf) in (* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ *) (* Now the request is pipelined. It is safe to return the function *) fun () -> let get_frame_ref = ref get_frame in let request_sent, request_sent_awakener = Lwt.wait () in (* awoken when request sent *) let query = Ocsigen_http_frame.Http_header.Query (http_method, uri) in let headers = Http_headers.replace (Http_headers.name "host") host (match headers with | None -> Http_headers.empty | Some h -> h) in let f ?reopen slot = Ocsigen_messages.debug2 "--Ocsigen_http_client: Will send request when slot opened"; Lwt.catch (fun () -> (match content with | None -> let empty_result = Ocsigen_http_frame.empty_result () in Ocsigen_http_com.send ?reopen slot ~head:false (* We want to send the full request *) ~mode:query ~clientproto:Ocsigen_http_frame.Http_header.HTTP11 ~keep_alive:keep_alive_asked (* we request keep alive even if we do not pipeline if we don't trust the server *) ~sender:request_sender {empty_result with Ocsigen_http_frame.res_headers = headers} | Some stream -> Ocsigen_senders.Stream_content.result_of_content stream >>= fun r -> Ocsigen_http_com.send ?reopen slot ~mode:query ~head:false (* We want to send the full request *) ~clientproto:Ocsigen_http_frame.Http_header.HTTP11 ~keep_alive:keep_alive_asked ~sender:request_sender {r with Ocsigen_http_frame.res_content_length= content_length; Ocsigen_http_frame.res_headers= headers; }) >>= fun () -> Ocsigen_messages.debug2 "--Ocsigen_http_client: request sent"; Lwt.wakeup request_sent_awakener (); Lwt.return ()) (fun e -> Lwt.wakeup_exn request_sent_awakener e; Lwt.fail e) in let reopen () = Ocsigen_messages.debug2 "--Ocsigen_http_client: Server not responding. Trying to open a new connection"; let (thr_conn, gf) = new_conn () in ref_thr_conn := thr_conn; get_frame_ref := gf; Ocsigen_messages.debug2 "--Ocsigen_http_client: Retrying to do the request"; thr_conn >>= fun conn -> Ocsigen_http_com.start_processing conn (f ?reopen:None); (* starting the request *) Lwt.return () in Ocsigen_messages.debug2 "--Ocsigen_http_client: Doing the request"; let thr_conn = !ref_thr_conn in thr_conn >>= fun conn -> Ocsigen_http_com.start_processing conn (f ~reopen); (* starting the request *) let finalize do_keep_alive = let put_in_free_conn ?gf () = Ocsigen_messages.debug2 "--Ocsigen_http_client: Putting in free connections"; let gf = match gf with | None -> let gf = !ref_thr_conn >>= fun conn -> Ocsigen_http_com.get_http_frame ~head conn in close_on_error !ref_thr_conn gf; gf | Some gf -> gf in try ignore (Lwt.poll gf); FT.add (inet_addr, port, head) (ref_thr_conn, gf); Ocsigen_messages.debug2 "--Ocsigen_http_client: Added in free connections"; remove_on_error_from_free_conn (inet_addr, port, head) (ref_thr_conn, gf) ; Lwt.return () with e -> Ocsigen_messages.debug_noel2 "--Ocsigen_http_client: exception while trying to keep free connection: "; Ocsigen_messages.debug2 (Printexc.to_string e); !ref_thr_conn >>= fun conn -> Lwt_ssl.close (Ocsigen_http_com.connection_fd conn) in if do_keep_alive then begin match key_new_waiter with | None -> (* no pipeline *) put_in_free_conn () | Some (key, _) -> (try let (ref_thr_conn, gf, nb_users) = T.find connection_table key in if nb_users = 1 then begin Ocsigen_messages.debug2 "--Ocsigen_http_client: The connection is not used any more by the client"; T.remove connection_table key; put_in_free_conn ~gf () end else begin T.replace connection_table key (ref_thr_conn, gf, nb_users - 1); Lwt.return () end with Not_found -> Ocsigen_messages.warning "--Ocsigen_http_client - Strange: connection disappeared from \ connection_table"; Lwt.return ()) end else begin !ref_thr_conn >>= fun conn -> Lwt_ssl.close (Ocsigen_http_com.connection_fd conn) end in Lwt.catch (fun () -> Lwt.catch (fun () -> (* We wait for the request to be sent, because get_frame_ref may change *) request_sent >>= fun () -> (* getting and sending back the result: *) !get_frame_ref) (function | Pipeline_failed -> (* Previous request closed the pipeline but the request has been sent. We redo it. *) Ocsigen_messages.warning "Previous request closed the pipeline. Redoing the request on a new connection."; reopen () >>= fun () -> !get_frame_ref | e -> Lwt.fail e)) (fun e -> (* We advice subsequent get_frame that the pipeline failed: *) (match key_new_waiter with | None -> () | Some (_, new_waiter_awakener) -> Lwt.wakeup_exn new_waiter_awakener Pipeline_failed); finalize false >>= fun () -> Lwt.fail e) >>= fun http_frame -> let server_keepalive = Ocsigen_headers.get_keepalive http_frame.Ocsigen_http_frame.frame_header in if keep_alive_asked && not server_keepalive then (* The server does not want to do keep-alive *) boycott_server_pipeline server_do_keepalive inet_addr port else if keep_alive_asked then appreciate_server_pipeline inet_addr port; let do_keep_alive = keep_alive_asked && server_keepalive in (* We keep alive even if we do not trust the server for pipelining *) (* It is now time for starting subsequent get_frame: *) (match key_new_waiter with | None -> () | Some (_, new_waiter) -> if server_keepalive then Lwt.wakeup new_waiter () else Lwt.wakeup_exn new_waiter Pipeline_failed); Ocsigen_messages.debug2 "--Ocsigen_http_client: frame received"; (match http_frame.Ocsigen_http_frame.frame_content with | None -> finalize do_keep_alive | Some c -> Ocsigen_stream.add_finalizer c (fun _ -> finalize do_keep_alive); Lwt.return () ) >>= fun () -> let headers = Http_headers.replace_opt Http_headers.connection None http_frame.Ocsigen_http_frame.frame_header.Ocsigen_http_frame.Http_header.headers in let headers = try let connection_value = Ocsigen_http_frame.Http_header.get_headers_value http_frame.Ocsigen_http_frame.frame_header Http_headers.connection in Http_headers.replace_opt (Http_headers.name connection_value) None headers with Not_found -> headers in Lwt.return {Ocsigen_http_frame.frame_header= {Ocsigen_http_frame.Http_header.mode = http_frame.Ocsigen_http_frame.frame_header.Ocsigen_http_frame.Http_header.mode; Ocsigen_http_frame.Http_header.proto = http_frame.Ocsigen_http_frame.frame_header.Ocsigen_http_frame.Http_header.proto; Ocsigen_http_frame.Http_header.headers = headers}; frame_content = http_frame.Ocsigen_http_frame.frame_content; frame_abort = http_frame.Ocsigen_http_frame.frame_abort; } (*****************************************************************************) let get ?https ?port ?headers ~host ~uri () = Ip_address.get_inet_addr host >>= fun inet_addr -> raw_request ?https ?port ?headers ~http_method:Ocsigen_http_frame.Http_header.GET ~content:None ~host:(match port with None -> host | Some p -> host^":"^string_of_int p) ~inet_addr ~uri () () let get_url ?headers url = let (https, host, port, uri, _, _, _) = Url.parse url in let host = match host with None -> "localhost" | Some h -> h in let uri = "/"^uri in get ?https ?port ?headers ~host ~uri () (*****************************************************************************) let post_string ?https ?port ?(headers = Http_headers.empty) ~host ~uri ~content ~content_type () = Ip_address.get_inet_addr host >>= fun inet_addr -> let content_type = String.concat "/" [fst content_type; snd content_type] in raw_request ?https ?port ~http_method:Ocsigen_http_frame.Http_header.POST ~content:(Some (Ocsigen_stream.of_string content)) ~content_length:(Int64.of_int (String.length content)) ~headers:(Http_headers.add Http_headers.content_type content_type headers) ~host:(match port with None -> host | Some p -> host^":"^string_of_int p) ~inet_addr ~uri () () let post_string_url ?headers ~content ~content_type url = let (https, host, port, uri, _, _, _) = Url.parse url in let host = match host with None -> "localhost" | Some h -> h in let uri = "/"^uri in post_string ?https ?port ?headers ~host ~uri ~content ~content_type () (*****************************************************************************) let post_urlencoded ?https ?port ?headers ~host ~uri ~content () = post_string ?https ?port ?headers ~host ~uri ~content:(Netencoding.Url.mk_url_encoded_parameters content) ~content_type:("application","x-www-form-urlencoded") () let post_urlencoded_url ?headers ~content url = let (https, host, port, uri, _, _, _) = Url.parse url in let host = match host with None -> "localhost" | Some h -> h in let uri = "/"^uri in post_urlencoded ?https ?port ?headers ~host ~uri ~content () (*****************************************************************************) let basic_raw_request ?headers ?(https=false) ?port ~content ?content_length ~http_method ~host ~inet_addr ~uri () = let port = match port with | None -> if https then 443 else 80 | Some p -> p in let sockaddr = Unix.ADDR_INET (inet_addr, port) in let fd = Lwt_unix.socket (Unix.domain_of_sockaddr sockaddr) Unix.SOCK_STREAM 0 in Lwt_unix.set_close_on_exec fd; Lwt.catch (fun () -> Lwt_unix.connect fd sockaddr >>= fun () -> (if https then Lwt_ssl.ssl_connect fd !sslcontext else Lwt.return (Lwt_ssl.plain fd))) (handle_connection_error fd) >>= fun socket -> let query = Ocsigen_http_frame.Http_header.Query (http_method, uri) in let conn = Ocsigen_http_com.create_receiver (Ocsigen_config.get_server_timeout ()) Ocsigen_http_com.Answer socket in let headers = Http_headers.replace (Http_headers.name "host") host (match headers with | None -> Http_headers.empty | Some h -> h) in let f slot = match content with | None -> let empty_result = Ocsigen_http_frame.empty_result () in Ocsigen_http_com.send slot ~mode:query ~clientproto:Ocsigen_http_frame.Http_header.HTTP11 ~head:false ~keep_alive:false ~sender:request_sender {empty_result with Ocsigen_http_frame.res_headers = headers} | Some stream -> Ocsigen_senders.Stream_content.result_of_content stream >>= fun r -> Ocsigen_http_com.send slot ~mode:query ~clientproto:Ocsigen_http_frame.Http_header.HTTP11 ~head:false ~keep_alive:false ~sender:request_sender {r with Ocsigen_http_frame.res_content_length= content_length; Ocsigen_http_frame.res_headers= headers; } in Ocsigen_http_com.start_processing conn f; (* starting the request *) (* Ocsigen_http_com.wait_all_senders conn >>= fun () -> (* not needed *) *) Lwt.catch (fun () -> Ocsigen_http_com.get_http_frame ~head:(http_method = Ocsigen_http_frame.Http_header.HEAD) conn >>= fun http_frame -> (match http_frame.Ocsigen_http_frame.frame_content with | None -> Lwt_ssl.close socket | Some c -> Ocsigen_stream.add_finalizer c (fun _ -> Lwt_ssl.close socket); Lwt.return ()) >>= fun () -> Lwt.return http_frame) (fun e -> Lwt_ssl.close socket >>= fun () -> Lwt.fail e) ocsigenserver-2.2.0/src/server/ocsigen_range.ml0000644000000000000000000002164212060404165020014 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * ocsigen_range.ml Copyright (C) 2008 * Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (* - We send the range only if we know the content length (the header of partial answers must contain the length) - We compute range after content-encoding (deflation) - We do not support multipart ranges. We send only an interval. - The following works with any stream. For files, it should be optimized with seek!!!!! *) open Ocsigen_lib exception Range_416 (* We do not support multipart ranges. We send only an interval. The following function checks if we support the range requested. *) let rec change_range = function | Some ([], Some b, ifmatch) -> Some (b, None, ifmatch) | Some ([ (b, e) ], None, ifmatch) -> Some (b, Some e, ifmatch) | _ -> None let select_range length beg endopt skipfun stream = let rec aux step num () = if num = 0L then Ocsigen_stream.empty None else (match step with | Ocsigen_stream.Finished _ -> Lwt.fail Ocsigen_stream.Stream_too_small | Ocsigen_stream.Cont (c, f) -> Lwt.return (c, f)) >>= fun (buf, nextstream) -> let buflen = String.length buf in let buflen64 = Int64.of_int buflen in if (Int64.compare buflen64 num) <= 0 then Ocsigen_stream.next nextstream >>= fun next -> Ocsigen_stream.cont buf (aux next (Int64.sub num buflen64)) else Ocsigen_stream.cont (String.sub buf 0 (Int64.to_int num)) (fun () -> Ocsigen_stream.empty None) in Lwt.catch (fun () -> skipfun stream beg >>= fun new_s -> Lwt.return (match endopt with | None -> Ocsigen_stream.make ~finalize: (fun status -> Ocsigen_stream.finalize stream status) (fun () -> Lwt.return new_s) | Some endc -> Ocsigen_stream.make ~finalize: (fun status -> Ocsigen_stream.finalize stream status) (aux new_s length)) ) (function | Ocsigen_stream.Stream_too_small -> Lwt.fail Range_416 (* RFC 2616 A server SHOULD return a response with this status code if a request included a Range request-header field, and none of the range-specifier values in this field overlap the current extent of the selected resource, and the request did not include an If-Range request-header field. (For byte-ranges, this means that the first- byte-pos of all of the byte-range-spec values were greater than the current length of the selected resource.) *) | e -> Lwt.fail e) let compute_range ri res = match res.Ocsigen_http_frame.res_content_length with (* We support Ranges only if we know the content length, because Content-Range always contains the length ... *) | None -> Lwt.return res | Some cl -> (* Send range only if the code is 200!! *) if (res.Ocsigen_http_frame.res_code <> 200) || (Ocsigen_config.get_disablepartialrequests ()) then Lwt.return res else begin let res = {res with Ocsigen_http_frame.res_headers = Http_headers.replace Http_headers.accept_ranges "bytes" res.Ocsigen_http_frame.res_headers; } in match change_range (Lazy.force ri.Ocsigen_extensions.ri_range) with | None -> Lwt.return res | Some (_, _, Ocsigen_extensions.IR_ifmatch etag) when (match res.Ocsigen_http_frame.res_etag with | None -> true | Some resetag -> String.compare etag resetag <> 0) -> Lwt.return res | Some (_, _, Ocsigen_extensions.IR_Ifunmodsince date) when (match res.Ocsigen_http_frame.res_lastmodified with | None -> true | Some l -> l > date) -> Lwt.return res | Some (beg, endopt, _) -> Lwt.catch (fun () -> (if Int64.compare cl beg <= 0 then Lwt.fail Range_416 else Lwt.return ()) >>= fun () -> let endc, length = match endopt with | None -> (Int64.sub cl 1L, Int64.sub cl beg) | Some e -> (e, Int64.add (Int64.sub e beg) 1L) in let resstream, skipfun = res.Ocsigen_http_frame.res_stream in (* stream transform *) let skipfun = match skipfun with | None -> (fun stream beg -> (Ocsigen_stream.next (Ocsigen_stream.get stream) >>= fun s -> Ocsigen_stream.skip s beg)) | Some f -> f in select_range length beg endopt skipfun resstream >>= fun new_s -> Lwt.return {res with Ocsigen_http_frame.res_stream = (new_s, None); Ocsigen_http_frame.res_code = 206; Ocsigen_http_frame.res_headers = Http_headers.replace Http_headers.content_range ("bytes "^Int64.to_string beg^"-"^ Int64.to_string endc^"/"^ Int64.to_string cl) res.Ocsigen_http_frame.res_headers; Ocsigen_http_frame.res_content_length = Some length } ) (function | Range_416 -> (* RFC 2616 When this status code is returned for a byte-range request, the response SHOULD include a Content-Range entity-header field specifying the current length of the selected resource *) let dr = Ocsigen_http_frame.default_result () in Lwt.return {dr with Ocsigen_http_frame.res_code = 416; Ocsigen_http_frame.res_headers = Http_headers.replace Http_headers.content_range ("bytes */"^Int64.to_string cl) res.Ocsigen_http_frame.res_headers; } | e -> Lwt.fail e) end let get_range http_frame = try let rangeheader = Ocsigen_http_frame.Http_header.get_headers_value http_frame.Ocsigen_http_frame.frame_header Http_headers.range in let decode_int index d e = let a = Int64.of_string d in let b = Int64.of_string e in assert (Int64.compare index a < 0); assert (Int64.compare a b <= 0); (a, b) in let interval, from = let a,b = String.sep '=' rangeheader in if String.compare a "bytes" <> 0 then raise Not_found else let l = String.split ',' b in let rec f index = function | [] -> [], None | [a] -> let d, e = String.sep '-' a in if e = "" then [], Some (Int64.of_string d) else [decode_int index d e], None | a::l -> let d, e = String.sep '-' a in let a, b = decode_int index d e in let ll, fr = f b l in (* not tail rec *) (a, b)::ll, fr in f (-1L) l in let ifrange = try let ifrangeheader = Ocsigen_http_frame.Http_header.get_headers_value http_frame.Ocsigen_http_frame.frame_header Http_headers.if_range in try Ocsigen_extensions.IR_Ifunmodsince (Netdate.parse_epoch ifrangeheader) with _ -> Ocsigen_extensions.IR_ifmatch ifrangeheader with Not_found -> Ocsigen_extensions.IR_No in Some (interval, from, ifrange) with _ -> None ocsigenserver-2.2.0/src/extensions/0000755000000000000000000000000012060404165015543 5ustar0000000000000000ocsigenserver-2.2.0/src/extensions/extensiontemplate.ml0000644000000000000000000001670512060404165021656 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module extensiontemplate.ml * Copyright (C) 2007 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (*****************************************************************************) (*****************************************************************************) (* This is an example of extension for Ocsigen *) (* Take this as a template for writing your own extensions to the Web server *) (*****************************************************************************) (*****************************************************************************) (* If you want to create an extension to filter the output of the server (for ex: compression), have a look at deflatemod.ml as an example. It is very similar to this example, but using Ocsigen_extensions.register_output_filter instead of Ocsigen_extensions.register_extension. *) (* To compile it: ocamlfind ocamlc -thread -package netstring,ocsigen -c extensiontemplate.ml Then load it dynamically from Ocsigen's config file: *) open Lwt open Ocsigen_extensions open Simplexmlparser (*****************************************************************************) (** Extensions may take some options from the config file. These options are written in xml inside the tag. For example: ... *) let rec parse_global_config = function | [] -> () | (Element ("myoption", [("myattr", s)], []))::ll -> () | _ -> raise (Error_in_config_file ("Unexpected content inside extensiontemplate config")) (*****************************************************************************) (** The function that will generate the pages from the request, or modify a result generated by another extension. - a value of type [Ocsigen_extensions.conf_info] containing the current configuration options - [Ocsigen_extensions.req_state] is the request, possibly modified by previous extensions, or already found *) let gen = function | Ocsigen_extensions.Req_found _ -> (* If previous extension already found the page, you can modify the result (if you write a filter) or return it without modification like this: *) Lwt.return Ocsigen_extensions.Ext_do_nothing | Ocsigen_extensions.Req_not_found (err, ri) -> (* If previous extensions did not find the result, I decide here to answer with a default page (for the example): *) return (Ext_found (fun () -> let content = "Extensiontemplate page" in Ocsigen_senders.Text_content.result_of_content (content, "text/plain"))) (*****************************************************************************) (** Extensions may define new tags for configuring each site. These tags are inside ... in the config file. For example: Each extension will set its own configuration options, for example: Here parse_site is the function used to parse the config file inside this site. Use this if you want to put extensions config options inside your own option. For example: {[ | Element ("iffound", [], sub) -> let ext = parse_fun sub in (* DANGER: parse_fun MUST be called BEFORE the function! *) (fun charset -> function | Ocsigen_extensions.Req_found (_, _) -> Lwt.return (Ext_sub_result ext) | Ocsigen_extensions.Req_not_found (err, ri) -> Lwt.return (Ocsigen_extensions.Ext_not_found err)) ]} *) let parse_config path _ parse_site = function | Element ("extensiontemplate", atts, []) -> gen | Element (t, _, _) -> raise (Bad_config_tag_for_extension t) | _ -> raise (Error_in_config_file "Unexpected data in config file") (*****************************************************************************) (** Function to be called at the beginning of the initialisation phase of the server (actually each time the config file is reloaded) *) let begin_init () = () (** Function to be called at the end of the initialisation phase *) let end_init () = () (*****************************************************************************) (** A function that will create an error message from the exceptions that may be raised during the initialisation phase, and raise again all other exceptions. That function has type exn -> string. Use the raise function if you don't need any. *) let exn_handler = raise (*****************************************************************************) (* a function taking {ul {- the name of the virtual }} that will be called for each , and that will generate a function taking: {ul {- the path attribute of a tag that will be called for each , and that will generate a function taking:}} {ul {- an item of the config file that will be called on each tag inside and:} {ul {- raise [Bad_config_tag_for_extension] if it does not recognize that tag} {- return something of type [extension] (filter or page generator)}} *) let site_creator (hostpattern : Ocsigen_extensions.virtual_hosts) (config_info : Ocsigen_extensions.config_info) = parse_config (* hostpattern has type Ocsigen_extensions.virtual_hosts and represents the name of the virtual host. The path and the charset are declared in *) (* Same thing if the extension is loaded inside a local config file (using the userconf extension). However, we receive one additional argument, the root of the files the user can locally serve. See staticmod and userconf for details *) let user_site_creator (path : Ocsigen_extensions.userconf_info) = site_creator (*****************************************************************************) (** Registration of the extension *) let () = register_extension ~name:"extensionname" ~fun_site:site_creator (* If your extension is safe for users and if you want to allow exactly the same options as for global configuration, use the same [site_creator] function for [user_fun_site] as for [fun_site]. If you don't want to allow users to use that extension in their configuration files, you can omit user_fun_site. *) ~user_fun_site:user_site_creator ~init_fun: parse_global_config ~begin_init ~end_init ~exn_handler () ocsigenserver-2.2.0/src/extensions/ocsipersist.mli0000644000000000000000000001151212060404165020615 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module ocsipersist.mli * Copyright (C) 2007 Vincent Balat - Gabriel Kerneis * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Persistent data on hard disk. *) (** There are currently two implementations of this module, one using a DBM database, and the other using SQLITE. Link the one your want with your program. *) (*****************************************************************************) (** {2 Persistent references} *) (** When launching the program, if the value exists on hard disk, it is loaded, otherwise it is initialised to the default value *) (** Type of persistent data *) type 'a t (** Data are divided into stores. Create one store for your project, where you will save all your data. *) type store (** Open a store (and create it if it does not exist) *) val open_store : string -> store val make_persistent : store:store -> name:string -> default:'a -> 'a t Lwt.t (** [make_persistent store name default] find a persistent value named [name] in store [store] from database, or create it with the default value [default] if it does not exist. *) val make_persistent_lazy : store:store -> name:string -> default:(unit -> 'a) -> 'a t Lwt.t (** Same as make_persistent but the default value is evaluated only if needed *) val get : 'a t -> 'a Lwt.t (** [get pv] gives the value of [pv] *) val set : 'a t -> 'a -> unit Lwt.t (** [set pv value] sets a persistent value [pv] to [value] *) (*****************************************************************************) (** {2 Persistent tables} *) (** Type of persistent table *) type 'value table (** returns the name of the table *) val table_name : 'value table -> string Lwt.t (** Open a table (and create it if it does not exist) *) val open_table : string -> 'value table val find : 'value table -> string -> 'value Lwt.t (** [find table key] gives the value associated to [key]. Fails with [Not_found] if not found. *) val add : 'value table -> string -> 'value -> unit Lwt.t (** [add table key value] associates [value] to [key]. If the database already contains data associated with [key], that data is discarded and silently replaced by the new data. *) val replace_if_exists : 'value table -> string -> 'value -> unit Lwt.t (** [replace_if_exists table key value] associates [value] to [key] only if [key] is already bound. If the database does not contain any data associated with [key], fails with [Not_found]. *) val remove : 'value table -> string -> unit Lwt.t (** [remove table key] removes the entry in the table if it exists *) val length : 'value table -> int Lwt.t (** Size of a table. *) val iter_step : (string -> 'a -> unit Lwt.t) -> 'a table -> unit Lwt.t (** Important warning: this iterator may not iter on all data of the table if another thread is modifying it in the same time. Nonetheless, it should not miss more than a very few data from time to time, except if the table is very old (at least 9 223 372 036 854 775 807 insertions). *) val iter_table : (string -> 'a -> unit Lwt.t) -> 'a table -> unit Lwt.t (** Legacy interface for iter_step *) val fold_step : (string -> 'a -> 'b -> 'b Lwt.t) -> 'a table -> 'b -> 'b Lwt.t (** Important warning: this iterator may not iter on all data of the table if another thread is modifying it in the same time. Nonetheless, it should not miss more than a very few data from time to time, except if the table is very old (at least 9 223 372 036 854 775 807 insertions). *) val fold_table : (string -> 'a -> 'b -> 'b Lwt.t) -> 'a table -> 'b -> 'b Lwt.t (** Legacy interface for fold_step *) (**/**) val iter_block : (string -> 'a -> unit) -> 'a table -> unit Lwt.t (** MAJOR WARNING: Unlike iter_step, this iterator won't miss any entry and will run in one shot. It is therefore more efficient, BUT: it will lock the WHOLE database during its execution, thus preventing ANYBODY from accessing it (including the function f which is iterated). As a consequence : you MUST NOT use any function from ocsipersist in f, otherwise you would lock yourself and everybody else ! Be VERY cautious. *) ocsigenserver-2.2.0/src/extensions/Makefile0000644000000000000000000000365212060404165017211 0ustar0000000000000000include ../../Makefile.config PACKAGE := lwt.unix \ lwt.ssl \ lwt.react \ netstring \ tyxml.parser \ LIBS := -I ../baselib -I ../http -I ../server ${addprefix -package ,${PACKAGE}} OCAMLC := $(OCAMLFIND) ocamlc${BYTEDBG} OCAMLOPT := $(OCAMLFIND) ocamlopt ${OPTDBG} OCAMLDOC := $(OCAMLFIND) ocamldoc OCAMLDEP := $(OCAMLFIND) ocamldep all: byte opt ### Extensions ### FILES := staticmod.ml \ cgimod.ml \ redirectmod.ml \ revproxy.ml \ extensiontemplate.ml \ accesscontrol.ml \ userconf.ml \ outputfilter.ml \ authbasic.ml \ rewritemod.ml \ extendconfiguration.ml \ ocsigen_comet.ml \ cors.ml \ ifeq "$(CAMLZIP)" "YES" FILES += deflatemod.ml deflatemod.cmo deflatemod.cmx: LIBS+=-package ${CAMLZIPNAME} endif byte:: ${FILES:.ml=.cmo} opt:: ${FILES:.ml=.cmx} ifeq "$(NATDYNLINK)" "YES" opt:: ${FILES:.ml=.cmxs} endif ### SQLite ### ifeq "$(OCSIPERSISTSQLITE)" "YES" byte:: $(MAKE) -C ocsipersist-sqlite byte opt:: $(MAKE) -C ocsipersist-sqlite opt endif ### DBM #### ifeq "$(OCSIPERSISTDBM)" "YES" byte:: $(MAKE) -C ocsipersist-dbm byte opt:: $(MAKE) -C ocsipersist-dbm opt endif ########## %.cmi: %.mli $(OCAMLC) ${LIBS} -c $< %.cmo: %.ml $(OCAMLC) ${LIBS} -c $< %.cmx: %.ml $(OCAMLOPT) ${LIBS} -c $< %.cmxs: %.cmx $(OCAMLOPT) -shared -linkall -o $@ $< ## Clean up clean: clean.local ${MAKE} -C ocsipersist-dbm clean ${MAKE} -C ocsipersist-sqlite clean clean.local: -rm -f *.cm[ioax] *.cmxa *.cmxs *.o *.a *.annot -rm -f ${PREDEP} distclean: clean.local -rm -f *~ \#* .\#* ${MAKE} -C ocsipersist-dbm distclean ${MAKE} -C ocsipersist-sqlite distclean ## Dependencies depend: ${PREDEP} $(OCAMLDEP) ${LIBS} *.mli *.ml > .depend ${MAKE} -C ocsipersist-dbm depend ${MAKE} -C ocsipersist-sqlite depend FORCE: -include .depend ocsigenserver-2.2.0/src/extensions/userconf.ml0000644000000000000000000001776112060404165017735 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module userconf.ml * Copyright (C) 2007 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (*****************************************************************************) (*****************************************************************************) (* Ocsigen module to allow local (users) config files *) (*****************************************************************************) (*****************************************************************************) open Lwt open Ocsigen_lib open Ocsigen_extensions exception NoConfFile (*****************************************************************************) let err_500 = Ocsigen_extensions.Ext_stop_site (Ocsigen_cookies.Cookies.empty, 500) (* Catch invalid userconf files and report an error *) let handle_parsing_error req = function | Ocsigen_extensions.Error_in_config_file s -> Ocsigen_messages.errlog (Printf.sprintf "Syntax error in userconf configuration file for url %s: %s" req.request_info.ri_url_string s); Lwt.return err_500 | Ocsigen_extensions.Error_in_user_config_file s -> Ocsigen_messages.errlog (Printf.sprintf "Unauthorized option in user configuration for url %s: %s" req.request_info.ri_url_string s); Lwt.return err_500 | e -> Lwt.fail e (* Answer returned by userconf when the url matches *) let subresult new_req user_parse_site conf previous_err req req_state = Ext_sub_result (fun awake cookies_to_set rs -> (* XXX why is rs above never used ?? *) Lwt.catch (fun () -> user_parse_site conf awake cookies_to_set (Ocsigen_extensions.Req_not_found (previous_err, new_req)) >>= fun (answer, cookies) -> (* If the request is not satisfied by userconf, the changes in configuration (in request_config) are preserved for the remainder of the enclosing (in the Ext_continue and Ext_found_continue cases below) *) let rec aux ((answer, cts) as r) = match answer with | Ext_sub_result sr -> (* XXX Are these the good cookies ?? *) sr awake cookies_to_set req_state >>= aux | Ext_continue_with (newreq, cookies, err) -> Lwt.return ((Ext_continue_with ({req with request_config = newreq.request_config }, cookies, err)), cts) | Ext_found_continue_with r -> (* We keep config information outside userconf! *) Lwt.return (Ext_found_continue_with (fun () -> r () >>= fun (r, newreq) -> Lwt.return (r, { req with request_config = newreq.request_config }) ), cts) | _ -> Lwt.return r in aux (answer, cookies) ) (fun e -> handle_parsing_error req e >>= fun answer -> Lwt.return (answer, Ocsigen_cookies.Cookies.empty)) ) let conf_to_xml conf = try Simplexmlparser.xmlparser_file conf with | Sys_error _ -> raise NoConfFile | Simplexmlparser.Xml_parser_error s -> raise (Ocsigen_extensions.Error_in_config_file s) let gen hostpattern sitepath (regexp, conf, url, prefix, localpath) = function | Req_found _ -> (* We do not allow setting filters through userconf files right now *) Lwt.return Ext_do_nothing | Req_not_found (previous_err, req) as req_state-> let path = req.request_info.ri_sub_path_string in match Netstring_pcre.string_match regexp path 0 with | None -> Lwt.return (Ext_next previous_err) | Some _ -> try Ocsigen_messages.debug2 "--Userconf: Using user configuration"; let conf0 = Ocsigen_extensions.replace_user_dir regexp conf path in let url = Netstring_pcre.global_replace regexp url path and prefix = Netstring_pcre.global_replace regexp prefix path and userconf_options = { Ocsigen_extensions.localfiles_root = Ocsigen_extensions.replace_user_dir regexp localpath path } and conf = conf_to_xml conf0 in let user_parse_host = Ocsigen_extensions.parse_user_site_item userconf_options hostpattern req.request_config in (* Inside userconf, we create a new virtual site starting after [prefix], and use a request modified accordingly*) let user_parse_site = Ocsigen_extensions.make_parse_config (sitepath@[prefix]) user_parse_host and path = Url.remove_slash_at_beginning (Url.remove_dotdot (Neturl.split_path url)) in let new_req = { req with request_info = { req.request_info with ri_sub_path = path; ri_sub_path_string = url}} in Lwt.return (subresult new_req user_parse_site conf previous_err req req_state) with | Ocsigen_extensions.NoSuchUser | NoConfFile | Unix.Unix_error (Unix.EACCES,_,_) | Unix.Unix_error (Unix.ENOENT, _, _) -> Lwt.return (Ocsigen_extensions.Ext_next previous_err) | e -> handle_parsing_error req e (*****************************************************************************) (** Parsing of config file *) open Simplexmlparser let parse_config hostpattern _ path = fun _ _ -> let rec parse_attrs_local l ((regexp, conf, url, prefix, path) as r) = match l with | [] -> r | ("regexp", s)::l when regexp = None -> (try parse_attrs_local l (Some (Netstring_pcre.regexp ("^"^s^"$")), conf, url, prefix, path) with Failure _ -> badconfig "Bad regexp '%s' in " s) | ("conf", s)::l when conf = None -> parse_attrs_local l (regexp, Some (Ocsigen_extensions.parse_user_dir s), url, prefix, path) | ("url", s)::l when url = None -> parse_attrs_local l (regexp, conf, Some s, prefix, path) | ("prefix", s)::l when prefix = None -> parse_attrs_local l (regexp, conf, url, Some s, path) | ("localpath", s) :: l when path = None -> parse_attrs_local l (regexp, conf, url, prefix, Some (Ocsigen_extensions.parse_user_dir s)) | (a, _) :: _ -> badconfig "Wrong or duplicate attribute %s for " a in function | Element ("userconf", atts, []) -> let info = match parse_attrs_local atts (None, None, None, None, None) with | (Some r, Some t, Some u, Some p, Some p') -> (r, t, u, p, p') | _ -> badconfig "Missing attributes for " in gen hostpattern path info | Element ("userconf", _, _ :: _) -> badconfig "Incorrect (useless) data inside " | Element (t, _, _) -> raise (Bad_config_tag_for_extension t) | _ -> badconfig "Bad data in conf file" (*****************************************************************************) (** extension registration *) let () = register_extension ~name:"userconf" ~fun_site:parse_config () ocsigenserver-2.2.0/src/extensions/extendconfiguration.ml0000644000000000000000000002063612060404165022163 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module extendconfiguration.ml * Copyright (C) 2008 Boris Yakobowski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) open Lwt open Ocsigen_extensions open Simplexmlparser open Ocsigen_charset_mime let bad_config s = raise (Error_in_config_file s) let gen configfun = function | Ocsigen_extensions.Req_found _ -> Lwt.return Ocsigen_extensions.Ext_do_nothing | Ocsigen_extensions.Req_not_found (err, request) -> Ocsigen_messages.debug2 "--Updating configuration"; let updated_request = { request with request_config = configfun request.request_config } in Lwt.return (Ocsigen_extensions.Ext_continue_with (updated_request, Ocsigen_cookies.Cookies.empty, err )) let gather_do_not_serve_files tag = let rec aux (regexps, files, extensions) = function | [] -> { Ocsigen_extensions.do_not_serve_regexps = regexps; do_not_serve_files = files; do_not_serve_extensions = extensions } | Element ("regexp", ["regexp", f], []) :: q -> aux (f :: regexps, files, extensions) q | Element ("file", ["file", f], []) :: q -> aux (regexps, f :: files, extensions) q | Element ("extension", ["ext", f], []) :: q -> aux (regexps, files, f :: extensions) q | _ :: q -> bad_config ("invalid options in tag " ^ tag) in aux ([], [], []) exception Bad_regexp of string let check_regexp_list = let hashtbl = Hashtbl.create 17 in let aux r = try Hashtbl.find hashtbl r with Not_found -> try ignore (Netstring_pcre.regexp r); Hashtbl.add hashtbl r () with _ -> raise (Bad_regexp r) in (fun l -> List.iter aux l) let update_config usermode = function | Element ("listdirs", ["value", "true"], []) -> gen (fun config -> { config with list_directory_content = true }) | Element ("listdirs", ["value", "false"], []) -> gen (fun config -> { config with list_directory_content = false }) | Element ("listdirs" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("followsymlinks", ["value", s], []) -> let v = match s with | "never" -> DoNotFollowSymlinks | "always" -> if usermode = false then AlwaysFollowSymlinks else raise (Error_in_user_config_file "Cannot specify value 'always' for option \ 'followsymlinks' in userconf files") | "ownermatch" -> FollowSymlinksIfOwnerMatch | _ -> bad_config ("Wrong value \""^s^"\" for option \"followsymlinks\"") in gen (fun config -> { config with follow_symlinks = v }) | Element ("followsymlinks" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("charset", attrs, exts) -> let rec aux charset_assoc = function | [] -> charset_assoc | Element ("extension", ["ext", extension; "value", charset], []) :: q -> aux (update_charset_ext charset_assoc extension charset) q | Element ("file", ["file", file; "value", charset], []) :: q -> aux (update_charset_file charset_assoc file charset) q | Element ("regexp", ["regexp", regexp; "value", charset], []) :: q -> (try let r = Netstring_pcre.regexp regexp in aux (update_charset_regexp charset_assoc r charset) q with _ -> bad_config "invalid regexp '%s' in ") | _ :: q -> bad_config "invalid subtag in option charset" in gen (fun config -> let config = match attrs with | ["default", s] -> { config with charset_assoc = set_default_charset config.charset_assoc s } | [] -> config | _ -> bad_config "Only attribute \"default\" is permitted \ for option \"charset\"" in { config with charset_assoc = aux config.charset_assoc exts }) | Element ("contenttype", attrs, exts) -> let rec aux mime_assoc = function | [] -> mime_assoc | Element ("extension", ["ext", extension; "value", mime], []) :: q -> aux (update_mime_ext mime_assoc extension mime) q | Element ("file", ["file", file; "value", mime], []) :: q -> aux (update_mime_file mime_assoc file mime) q | Element ("regexp", ["regexp", regexp; "value", mime], []) :: q -> (try let r = Netstring_pcre.regexp regexp in aux (update_mime_regexp mime_assoc r mime) q with _ -> bad_config "invalid regexp '%s' in ") | _ :: q -> bad_config "invalid subtag in option mime" in gen (fun config -> let config = match attrs with | ["default", s] -> { config with mime_assoc = set_default_mime config.mime_assoc s } | [] -> config | _ -> bad_config "Only attribute \"default\" is permitted \ for option \"contenttype\"" in { config with mime_assoc = aux config.mime_assoc exts }) | Element ("defaultindex", [], l) -> let rec aux indexes = function | [] -> List.rev indexes | Element ("index", [], [PCData f]) :: q -> aux (f :: indexes) q | _ :: q -> bad_config "subtags must be of the form \ ... \ in option defaultindex" in gen (fun config -> { config with default_directory_index = aux [] l }) | Element ("defaultindex" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("hidefile", [], l) -> let do_not_serve = gather_do_not_serve_files "hidefile" l in (try check_regexp_list do_not_serve.do_not_serve_regexps; gen (fun config -> { config with do_not_serve_404 = join_do_not_serve do_not_serve config.do_not_serve_404 }) with Bad_regexp r -> badconfig "Invalid regexp %s in %s" r "hidefile") | Element ("hidefile" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("forbidfile", [], l) -> let do_not_serve = gather_do_not_serve_files "forbidfile" l in (try check_regexp_list do_not_serve.do_not_serve_regexps; gen (fun config -> { config with do_not_serve_403 = join_do_not_serve do_not_serve config.do_not_serve_403 }) with Bad_regexp r -> badconfig "Invalid regexp %s in %s" r "forbidfile") | Element ("forbidfile" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("uploaddir", [], [PCData s]) -> if s = "" then gen (fun config -> { config with uploaddir = None }) else gen (fun config -> { config with uploaddir = Some s }) | Element ("uploaddir" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("maxuploadfilesize" as tag, [], [PCData s]) -> let s = try Ocsigen_parseconfig.parse_size_tag "uploaddir" s with Ocsigen_config.Config_file_error _ -> badconfig "Bad syntax for tag %s" tag in gen (fun config -> { config with maxuploadfilesize = s }) | Element ("maxuploadfilesize" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element (t, _, _) -> raise (Bad_config_tag_for_extension t) | _ -> raise (Error_in_config_file "Unexpected data in config file") let parse_config usermode : parse_config_aux = fun _ _ _ xml -> update_config usermode xml let () = register_extension ~name:"extendconfiguration" ~fun_site:(fun _ _ -> parse_config false) ~user_fun_site:(fun path _ _ -> parse_config true) () ocsigenserver-2.2.0/src/extensions/staticmod.ml0000644000000000000000000002457612060404165020102 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module staticmod.ml * Copyright (C) 2005 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (*****************************************************************************) (*****************************************************************************) (* Ocsigen module to load static pages *) (*****************************************************************************) (*****************************************************************************) open Lwt open Ocsigen_lib open Ocsigen_extensions exception Not_concerned let bad_config s = raise (Error_in_config_file s) (*****************************************************************************) (* Structures describing the static pages a each virtual server *) (* A static site is either an entire directory served unconditionnaly, or a more elaborate redirection based on regexpes and http error codes. See the web documentation of staticmod for detail *) type static_site_kind = | Dir of string (* Serves an entire directory *) | Regexp of regexp_site and regexp_site = { source_regexp: Netstring_pcre.regexp; dest: Ocsigen_extensions.ud_string; http_status_filter: Netstring_pcre.regexp option; root_checks: Ocsigen_extensions.ud_string option; } (*****************************************************************************) (* Finding files *) (* Does the http status code returned for the page match the given filter ? *) let http_status_match status_filter status = match status_filter with | None -> true | Some r -> Netstring_pcre.string_match r (string_of_int status) 0 <> None (* Checks that the path specified in a userconf is correct. Currently, we check that the path does not contain ".." *) let correct_user_local_file = let regexp = Netstring_pcre.regexp "(/\\.\\./)|(/\\.\\.$)" in fun path -> try ignore(Netstring_pcre.search_forward regexp path 0); false with Not_found -> true (* Find the local file corresponding to [path] in the static site [dir], with [err] as the current http status (in case [dir] is a filter). Raises [Not_Concerned] if [dir] does not match, or returns - a boolean indicating that [dir] is an error handler - the local file If the parameter [usermode] is true, we check that the path is valid. *) let find_static_page ~request ~usermode ~dir ~err ~pathstring = let status_filter, filename, root = match dir with | Dir d -> (false, Filename.concat d pathstring, (match usermode with | None -> Some d | Some { localfiles_root = r } -> Some r )) | Regexp { source_regexp = source; dest = dest; http_status_filter = status_filter; root_checks = rc } when http_status_match status_filter err -> let status_filter = status_filter <> None and file = match Netstring_pcre.string_match source pathstring 0 with | None -> raise Not_concerned | Some _ -> Ocsigen_extensions.replace_user_dir source dest pathstring and root_checks = (match rc, usermode with | None, Some { localfiles_root = r } -> Some r | Some _, Some _ -> raise (Ocsigen_extensions.Error_in_user_config_file "Staticmod: cannot specify option 'root' in \ user configuration files") | None, None -> None | Some rc, None -> Some (Ocsigen_extensions.replace_user_dir source rc pathstring) ) in status_filter, file, root_checks | _ -> raise Not_concerned in if usermode = None || correct_user_local_file filename then (status_filter, Ocsigen_local_files.resolve ?no_check_for:root ~request ~filename ()) else raise (Ocsigen_extensions.Error_in_user_config_file "Staticmod: cannot use '..' in user paths") let gen ~usermode ?cache dir = function | Ocsigen_extensions.Req_found (_, r) -> Lwt.return (Ocsigen_extensions.Ext_do_nothing) | Ocsigen_extensions.Req_not_found (err, ri) -> catch (fun () -> Ocsigen_messages.debug2 "--Staticmod: Is it a static file?"; let status_filter, page = find_static_page ~request:ri ~usermode ~dir ~err ~pathstring:(Url.string_of_url_path ~encode:false ri.request_info.ri_sub_path) in Ocsigen_local_files.content ri page >>= fun answer -> let answer = if status_filter = false then answer else (* The page is an error handler, we propagate the original error code *) {answer with Ocsigen_http_frame.res_code = err } in let (<<) h (n, v) = Http_headers.replace n v h in let answer = match cache with | None -> answer | Some 0 -> {answer with Ocsigen_http_frame.res_headers = answer.Ocsigen_http_frame.res_headers << (Http_headers.cache_control, "no-cache") << (Http_headers.expires, "0")} | Some duration -> {answer with Ocsigen_http_frame.res_headers = answer.Ocsigen_http_frame.res_headers << (Http_headers.cache_control, "max-age: "^ string_of_int duration) << (Http_headers.expires, Ocsigen_http_com.gmtdate (Unix.time () +. float_of_int duration))} in Lwt.return (Ext_found (fun () -> Lwt.return answer)) ) (function | Ocsigen_local_files.Failed_403 -> return (Ext_next 403) (* XXX We should try to leave an information about this error for later *) | Ocsigen_local_files.NotReadableDirectory -> return (Ext_next err) | NoSuchUser | Not_concerned | Ocsigen_local_files.Failed_404 -> return (Ext_next err) | e -> fail e ) (*****************************************************************************) (** Parsing of config file *) open Simplexmlparser (* In userconf modes, paths must be relative to the root of the userconf config *) let rewrite_local_path userconf path = match userconf with | None -> path | Some { Ocsigen_extensions.localfiles_root = root } -> root ^ "/" ^ path type options = { opt_dir: string option; opt_regexp: Netstring_pcre.regexp option; opt_code: Netstring_pcre.regexp option; opt_dest: Ocsigen_extensions.ud_string option; opt_root_checks: Ocsigen_extensions.ud_string option; opt_cache: int option; } let parse_config userconf _ : parse_config_aux = fun _ _ _ -> let rec parse_attrs l opt = match l with | [] -> opt | ("dir", d)::l when opt.opt_dir = None -> parse_attrs l { opt with opt_dir = Some (rewrite_local_path userconf d)} | ("regexp", s)::l when opt.opt_regexp = None -> let s = try Netstring_pcre.regexp ("^"^s^"$") with Pcre.Error (Pcre.BadPattern _) -> bad_config ("Bad regexp \""^s^"\" in ") in parse_attrs l { opt with opt_regexp = Some s } | ("code", c)::l when opt.opt_code = None -> let c = try Netstring_pcre.regexp ("^"^c^"$") with Pcre.Error (Pcre.BadPattern _) -> bad_config ("Bad regexp \""^c^"\" in ") in parse_attrs l { opt with opt_code = Some c } | ("dest", s)::l when opt.opt_dest = None -> parse_attrs l { opt with opt_dest = Some (parse_user_dir (rewrite_local_path userconf s)) } | ("root", s) :: l when opt.opt_root_checks = None -> parse_attrs l { opt with opt_root_checks = Some (parse_user_dir s) } | ("cache", s) :: l when opt.opt_cache = None -> let duration = try int_of_string s with _ -> if s = "no" then 0 else bad_config ("Bad integer \""^s^"\" in ") in parse_attrs l { opt with opt_cache = Some duration } | _ -> bad_config "Wrong attribute for " in function | Element ("static", atts, []) -> let opt = parse_attrs atts { opt_dir = None; opt_regexp = None; opt_code = None; opt_dest = None; opt_root_checks = None; opt_cache = None; } in let kind = match opt.opt_dir, opt.opt_regexp, opt.opt_code, opt.opt_dest, opt.opt_root_checks with | (None, None, None, _, _) -> raise (Error_in_config_file "Missing attribute dir, regexp, or code for ") | (Some d, None, None, None, None) -> Dir (Url.remove_end_slash d) | (None, Some r, code, Some t, rc) -> Regexp { source_regexp = r; dest = t; http_status_filter = code; root_checks = rc; } | (None, None, (Some _ as code), Some t, None) -> Regexp { dest = t; http_status_filter = code; root_checks = None; source_regexp = Netstring_pcre.regexp "^.*$" } | _ -> raise (Error_in_config_file "Wrong attributes for ") in gen ~usermode:userconf ?cache:opt.opt_cache kind | Element (t, _, _) -> raise (Bad_config_tag_for_extension t) | _ -> bad_config "(staticmod extension) Bad data" (*****************************************************************************) (** extension registration *) let () = register_extension ~name:"staticmod" ~fun_site:(fun _ -> parse_config None) ~user_fun_site:(fun path _ -> parse_config (Some path)) () ocsigenserver-2.2.0/src/extensions/cgimod.ml0000644000000000000000000005270512060404165017350 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module cgimod.ml * Copyright (C) 2007 Jérôme Velleine - Gabriel Kerneis * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Module CGI for Ocsigen *) (* TODO - nph- scripts *) open Ocsigen_lib open Lwt open Ocsigen_extensions open Simplexmlparser open Ocsigen_http_frame open Ocsigen_http_com open Ocsigen_senders module Regexp = Netstring_pcre exception Failed_403 exception Failed_404 exception Not_concerned exception CGI_Timeout exception CGI_Error of exn let cgitimeout = ref 30 (*****************************************************************************) (* The table of cgi pages for each virtual server *) type reg = { regexp:Regexp.regexp; (** regexp of the script url *) doc_root: Ocsigen_extensions.ud_string; (** physical directory of the script (regexp) *) script: Ocsigen_extensions.ud_string; (** physical name of the script (regexp) *) path: string; (** path of the script *) path_info: string; (** path_info environment variable *) exec:string option; (** binary to execute the script with (optionnal) *) env:(string * string) list (** environment variables *) } (*****************************************************************************) let environment= ["CONTENT_LENGTH=%d"; "CONTENT_TYPE"; "DOCUMENT_ROOT"; "GATEWAY_INTERFACE"; "HTTP_COOKIE"; "HTTP_HOST"; "HTTP_REFERER"; "HTTP_USER_AGENT"; "PATH_INFO"; "PATH_TRANSLATED"; "QUERY_STRING"; "REMOTE_PORT"; "REMOTE_ADDR"; "REQUEST_METHOD%s"; "SCRIPT_NAME"; "SCRIPT_FILENAME"; "SERVER_NAME"; "SERVER_PORT"; "SERVER_PROTOCOL"; "SERVER_SOFTWARE"] (*****************************************************************************) let string_conform s = match String.length s with | 0 -> "/" | n -> match s.[0], s.[n - 1] with | '/' ,'/' -> s | _, '/' -> "/"^s | '/', _ -> s^"/" | _, _ -> "/"^s^"/" let string_conform0 s = try match s.[0] with | '/' -> s | _ -> "/"^s with Invalid_argument _ -> "/" let string_conform1 s = try match s.[String.length s - 1] with | '/' -> s | _ -> s^"/" with Invalid_argument _ -> "/" let string_conform2 s = match String.length s with | 0 | 1 when s = "/" -> "" | n -> match s.[0], s.[n - 1] with | '/', '/' -> String.sub s 1 (n-1) | _, '/' -> s | '/', _ -> (String.sub s 1 (n-1))^"/" | _, _ -> s^"/" (* split a string in two parts, according to a regexp *) let split_regexp r s = match Regexp.string_match r s 0 with | None -> None (* the begining of the string doesn't match the regexp *) | Some result -> let (split,l) = Regexp.match_end result, String.length s in let s' = Regexp.first_chars s split in let s'' = Regexp.last_chars s (l - split) in Some (s',s'') (** permet de recuperer le fichier correspondant a l url *) let find_cgi_page request reg sub_path = let find_file (filename, re, doc_root) = (* See also module Files in eliom.ml *) Ocsigen_messages.debug (fun () -> "--Cgimod: Testing \""^filename^"\"."); try let stat = Unix.LargeFile.stat filename in let filename = if (stat.Unix.LargeFile.st_kind = Unix.S_DIR) then (Ocsigen_messages.debug2 "--Cgimod: this is a directory."; raise (Ocsigen_Is_a_directory request)) else filename in Ocsigen_messages.debug (fun () -> "--Cgimod: Looking for \""^filename^"\"."); if (stat.Unix.LargeFile.st_kind = Unix.S_REG) then begin match re.exec with | None -> Unix.access filename [Unix.X_OK]; (filename, re, doc_root) | Some exec -> Unix.access filename [Unix.R_OK]; (filename, re, doc_root) end else raise Failed_403 with | Unix.Unix_error (Unix.ENOENT, _, _) -> raise Failed_404 in let sub_path = (Url.string_of_url_path ~encode:true sub_path) in match split_regexp reg.regexp sub_path with | None -> raise Failed_404 | Some (path', path_info) -> let path'' = reg.path^path' in try let dr = Ocsigen_extensions.replace_user_dir reg.regexp reg.doc_root path' in let sc = Ocsigen_extensions.replace_user_dir reg.regexp reg.script path' in let reg = {reg with path = path''; path_info= string_conform0 path_info} in find_file (dr^sc, reg, dr) with Ocsigen_extensions.NoSuchUser -> raise Failed_404 (*****************************************************************************) (** permet de creer le tableau des variables d environnement *) (*XXX Is this documented anywhere?*) let suitable_header = Regexp.regexp "[a-zA-Z-]+" let hyphen = Regexp.regexp_string "-" (* Headers processed separately when setting CGI's variable *) let exclude_headers = Http_headers.NameHtbl.create 10 let _ = List.iter (fun x -> Http_headers.NameHtbl.add exclude_headers (Http_headers.name x) ()) ["Content-type"; "Authorization"; "Content-length"; (*"Referer"; "Host"; "Cookie"*) ] let array_environment filename re doc_root ri hostname = let header = ri.ri_http_frame.Ocsigen_http_frame.frame_header in let opt = function | None -> "" | Some a -> a and opt_int = function | None -> "0" | Some a -> Int64.to_string a in let meth = match Http_header.get_firstline header with | Http_header.Query (meth, _) -> Framepp.string_of_method meth | _ -> raise Ocsigen_Bad_Request in (* Rule : the header lines received from the client, if any, are placed into the * environment with the prefix HTTP_ followed by the header name. Any - characters * in the header name are changed to _ characters. The server may exclude any * headers which it has already processed, such as Authorization, Content-type, and * Content-length. If necessary, the server may choose to exclude any or all of * these headers if including them would exceed any system environment limits. *) let additionnal_headers = let headers = List.filter (fun (h,_) -> Regexp.string_match suitable_header (Http_headers.name_to_string h) 0 <> None && not (Http_headers.NameHtbl.mem exclude_headers h)) (Http_headers.fold (fun n vl rem -> (n, String.concat "," vl) :: rem) (Http_header.get_headers header) []) in let transform (h,v) = let h' = Regexp.global_replace hyphen "_" (Http_headers.name_to_string h) in Printf.sprintf "HTTP_%s=%s" (String.uppercase h') v in List.map transform headers in List.concat [ (* Let's follow CGI spec : http://hoohoo.ncsa.uiuc.edu/cgi/env.html *) (* Not request-specific variables *) [Printf.sprintf "SERVER_NAME=%s" hostname; Printf.sprintf "SERVER_SOFTWARE=%s" Ocsigen_config.full_server_name ; "GATEWAY_INTERFACE=CGI/1.1"] ; (* Request-specific variables *) ["SERVER_PROTOCOL=HTTP/1.1"; Printf.sprintf "SERVER_PORT=%s" (string_of_int ri.ri_server_port); Printf.sprintf "REQUEST_METHOD=%s" meth; Printf.sprintf "PATH_INFO=%s" re.path_info; Printf.sprintf "PATH_TRANSLATED=" ; (* PATH_INFO virtual -> physical; unclear, so don't set *) Printf.sprintf "SCRIPT_NAME=%s" re.path; Printf.sprintf "QUERY_STRING=%s" (opt ri.ri_get_params_string); Printf.sprintf "REMOTE_ADDR=%s" ri.ri_remote_ip; (* no REMOTE_HOST: implies reverse DNS resolution *) (* neither AUTH_TYPE, REMOTE_USER nor REMOTE_IDENT: implies authentication *) Printf.sprintf "CONTENT_LENGTH=%s" (opt_int ri.ri_content_length); Printf.sprintf "CONTENT_TYPE=%s" (opt ri.ri_content_type_string)] ; (* Additional headers, coming from the client *) [(* Document_root is defined by Apache but not in the CGI's spec *) Printf.sprintf "DOCUMENT_ROOT=%s" doc_root; (* Should be retrieved from additionnal_headers Printf.sprintf "HTTP_COOKIE=%s" (opt (Lazy.force ri.ri_cookies_string)); Printf.sprintf "HTTP_HOST=%s" (opt ri.ri_host); Printf.sprintf "HTTP_REFERER=%s" (opt (Lazy.force ri.ri_referer)); *) (* Neither in the CGI's spec nor in the HTTP headers but used, e.g., by PHP *) Printf.sprintf "REMOTE_PORT=%d" ri.ri_remote_port; Printf.sprintf "REQUEST_URI=%s" ri.ri_url_string ; (* FIXME: URI instead of URL ? *) Printf.sprintf "SCRIPT_FILENAME=%s" filename ] ; additionnal_headers ] (*****************************************************************************) let rec set_env_list=function | [] -> [] | (vr, vl) :: l -> (vr^"="^vl) :: set_env_list l (** launch the process *) let create_process_cgi filename ri post_out cgi_in err_in re doc_root hostname = let envir = Array.of_list ( (array_environment filename re doc_root ri hostname)@(set_env_list re.env)) in match re.exec with | None -> Unix.create_process_env "/bin/sh" [|"/bin/sh"; "-c"; filename|] envir post_out cgi_in err_in | Some r -> Unix.create_process_env "/bin/sh" [|"/bin/sh"; "-c"; (r^" "^filename)|] envir post_out cgi_in err_in (** This function makes it possible to launch a cgi script *) let recupere_cgi head re doc_root filename ri hostname = try (* Create the three pipes to communicate with the CGI script: *) let (post_out, post_in) = Lwt_unix.pipe_out () in let (cgi_out, cgi_in) = Lwt_unix.pipe_in () in let (err_out, err_in) = Lwt_unix.pipe_in () in (* I don't want to give them to the script: *) Lwt_unix.set_close_on_exec cgi_out; Lwt_unix.set_close_on_exec post_in; Lwt_unix.set_close_on_exec err_out; (* Launch the CGI script *) let pid = create_process_cgi filename ri post_out cgi_in err_in re doc_root hostname in Unix.close cgi_in; Unix.close post_out; Unix.close err_in; let is_running = ref true in (* A timeout for CGI scripts *) (* For now a timeout for the whole process. We may want to reset the timeout each time the CGI writes something. *) let timeout = Lwt_timeout.create !cgitimeout (fun () -> try Lwt_unix.abort cgi_out CGI_Timeout; Lwt_unix.abort post_in CGI_Timeout; Lwt_unix.abort err_out CGI_Timeout; if !is_running then begin Unix.kill Sys.sigterm pid; ignore (Lwt_unix.sleep 1. >>= fun () -> if !is_running then Unix.kill Sys.sigkill pid; return ()) end with Unix.Unix_error (Unix.ESRCH, _, _) -> () ) in Lwt_timeout.start timeout; (* A thread giving POST data to the CGI script: *) let post_in_ch = Lwt_chan.out_channel_of_descr post_in in ignore (catch (fun () -> (match ri.ri_http_frame.Ocsigen_http_frame.frame_content with | None -> Lwt_unix.close post_in | Some content_post -> Ocsigen_http_com.write_stream post_in_ch content_post >>= fun () -> Lwt_chan.flush post_in_ch >>= fun () -> Lwt_unix.close post_in )) (*XXX Check possible errors! *) (function | Unix.Unix_error (Unix.EPIPE, _, _) -> Lwt_unix.close post_in | e -> Ocsigen_messages.unexpected_exception e "Cgimod.recupere_cgi (1)"; Lwt_unix.close post_in )); (* A thread listening the error output of the CGI script and writing them in warnings.log *) let err_channel = Lwt_chan.in_channel_of_descr err_out in let rec get_errors () = Lwt_chan.input_line err_channel >>= fun err -> Ocsigen_messages.warning ("CGI says: "^err); get_errors () in ignore (catch get_errors (function | End_of_file -> Lwt_unix.close err_out | e -> Ocsigen_messages.unexpected_exception e "Cgimod.recupere_cgi (2)"; Lwt_unix.close err_out)); (* This threads terminates, as you can see by doing: in ignore (catch get_errors (fun _ -> print_endline "the end"; Lwt_unix.close err_out; return ())); *) (* A thread waiting the end of the process. if the process terminates with an error, we raise CGI_Error *) ignore (Lwt_unix.waitpid [] pid >>= fun (_, status) -> is_running := false; Lwt_timeout.stop timeout; (* All "read" will return 0, and "write" will raise "Broken Pipe" *) (match status with | Unix.WEXITED 0 -> () | Unix.WEXITED i -> Ocsigen_messages.warning ("CGI exited with code "^(string_of_int i)) | Unix.WSIGNALED i -> Ocsigen_messages.warning ("CGI killed by signal "^(string_of_int i)) | Unix.WSTOPPED i -> (* Cannot occur without Unix.WUNTRACED wait_flag *) assert false ); Lwt.return ()); (* A thread getting the result of the CGI script *) let receiver = Ocsigen_http_com.create_receiver (Ocsigen_config.get_server_timeout ()) Ocsigen_http_com.Nofirstline (Lwt_ssl.plain cgi_out) in catch (fun () -> Ocsigen_http_com.get_http_frame ~head receiver >>= fun http_frame -> return (http_frame, fun _ -> Lwt_unix.close cgi_out)) (fun e -> Lwt_unix.close cgi_out >>= fun () -> fail e); with e -> fail e (** return the content of the frame *) let get_content str = match str.Ocsigen_http_frame.frame_content with | None -> Ocsigen_stream.make (fun () -> Ocsigen_stream.empty None) | Some c -> c (*****************************************************************************) let rec parse_global_config = function | [] -> () | (Element ("cgitimeout", [("value", s)], []))::[] -> cgitimeout := int_of_string s | _ -> raise (Error_in_config_file ("Unexpected content inside cgimod config")) (*****************************************************************************) let gen reg = function | Ocsigen_extensions.Req_found _ -> Lwt.return Ocsigen_extensions.Ext_do_nothing | Ocsigen_extensions.Req_not_found (err, ri) -> catch (* Is it a cgi page? *) (fun () -> Ocsigen_messages.debug2 "--Cgimod: Is it a cgi file?"; let (filename, re, doc_root) = find_cgi_page ri reg ri.request_info.ri_sub_path in recupere_cgi (ri.request_info.ri_method = Http_header.HEAD) re doc_root filename ri.request_info (Ocsigen_extensions.get_hostname ri) >>= fun (frame, finalizer) -> let header = frame.Ocsigen_http_frame.frame_header in let content = get_content frame in Ocsigen_stream.add_finalizer content finalizer; Lwt.catch (fun () -> let code = try let status = Ocsigen_http_frame.Http_header.get_headers_value header Http_headers.status in if String.length status < 3 then raise (Failure "Cgimod.gen"); Some (int_of_string (String.sub status 0 3)) with | Not_found -> None | Failure _ -> raise (CGI_Error (Failure "Bad Status line in header")) in let loc = try Some (Ocsigen_http_frame.Http_header.get_headers_value header Http_headers.location) with Not_found -> None in match code, loc with | None, Some loc -> Ocsigen_stream.finalize content `Success >>= fun () -> if loc <> "" && loc.[0] = '/' then Lwt.return (Ext_retry_with ({ ri with request_info = ri_of_url loc ri.request_info }, Ocsigen_cookies.Cookies.empty)) else let default_result = Ocsigen_http_frame.default_result () in Lwt.return (Ext_found (fun () -> Lwt.return { default_result with res_code= 301; (* Moved permanently *) res_location= Some loc})) | _, _ -> let code = match code with | None -> 200 | Some c -> c in let default_result = Ocsigen_http_frame.default_result () in (*VVV Warning: this is really late to make the return Ext_found ... *) (*VVV But the extension may also answer Ext_retry_with ... *) (*VVV and the other extensions may receive requests in wrong order ... *) Lwt.return (Ext_found (fun () -> (*VVV NO! If sending is interrupted, we probably must do something else! *) Ocsigen_stream.add_finalizer content (fun outcome -> match outcome with `Failure -> frame.Ocsigen_http_frame.frame_abort () | `Success -> Lwt.return ()); Lwt.return {default_result with res_content_length = None; res_stream = (content, None); res_location= loc; res_headers = Http_headers.replace_opt Http_headers.status None header.Http_header.headers; res_code = code}))) (fun e -> Ocsigen_stream.finalize content `Failure >>= fun () -> Lwt.fail e)) (function | Unix.Unix_error (Unix.EACCES,_,_) | Lost_connection _ as e -> fail e | Unix.Unix_error (Unix.ENOENT,_,_) -> return (Ext_next 404) | Failed_403 -> return (Ext_next 403) | Failed_404 -> return (Ext_next 404) | Not_concerned -> return (Ext_next err) | e -> fail e) (*****************************************************************************) (** Parsing of config file *) let rec set_env = function | [] -> [] | (Element("setenv", [("var",vr);("val",vl)], []))::l -> if List.mem vr environment then (Ocsigen_messages.debug (fun () -> "--Cgimod: variable no set "^vr); set_env l) else (vr,vl)::set_env l | _ :: l -> raise (Error_in_config_file "Bad config tag for ") let parse_config _ path _ _ = function | Element ("cgi", atts, l) -> let good_root r = Regexp.quote (string_conform2 r) in let dir = match atts with | [] -> raise (Error_in_config_file "attributes expected for ") | [("root",r);("dir", s)] -> { regexp= Regexp.regexp ("^"^(good_root r)^"([^/]*)"); doc_root= Ocsigen_extensions.parse_user_dir (string_conform1 s); script= Ocsigen_extensions.parse_user_dir "\\1"; path= string_conform (Url.string_of_url_path ~encode:true path); path_info=""; exec=None; env=set_env l} | ("regexp", s)::("dir",d)::("script",t)::q -> { regexp=Regexp.regexp ("^"^s); doc_root= Ocsigen_extensions.parse_user_dir (string_conform1 d); script= Ocsigen_extensions.parse_user_dir t; path= string_conform (Url.string_of_url_path ~encode:true path); path_info=""; (* unknown for the moment *) exec= (match q with |[] -> None |[("exec",x)] -> Some(x) |_ -> raise (Error_in_config_file "Wrong attributes for ")) ; env=set_env l} | _ -> raise (Error_in_config_file "Wrong attributes for ") in gen dir | Element (t, _, _) -> raise (Bad_config_tag_for_extension t) | _ -> raise (Error_in_config_file "Unexpected data in config file") (*****************************************************************************) (** Registration of the extension *) let () = register_extension ~name:"cgimod" ~fun_site:(fun _ -> parse_config) ~init_fun:parse_global_config () ocsigenserver-2.2.0/src/extensions/revproxy.ml0000644000000000000000000002475012060404165020003 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module revproxy.ml * Copyright (C) 2007 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Reverse proxy for Ocsigen *) (* The reverse proxy is still experimental because it relies on the experimental Ocsigen_http_client module. TODO - Change the policy for « trusted servers » for pipelining? (see ocsigen_http_client.ml) - enhance pipelining - HTTP/1.0 - ... - Make possible to return for example (Ext_next 404) to allow other extensions to take the request? There is a problem if the body contains data (POST request) ... this data has been sent and is lost ... *) open Ocsigen_lib open Lwt open Ocsigen_extensions open Simplexmlparser exception Bad_answer_from_http_server (*****************************************************************************) (* The table of redirections for each virtual server *) type redir = { regexp: Netstring_pcre.regexp; full_url: yesnomaybe; dest: string; pipeline: bool; keephost: bool} (*****************************************************************************) (* Finding redirections *) (** The function that will generate the pages from the request. *) let gen dir = function | Ocsigen_extensions.Req_found _ -> Lwt.return Ocsigen_extensions.Ext_do_nothing | Ocsigen_extensions.Req_not_found (err, ri) -> catch (* Is it a redirection? *) (fun () -> Ocsigen_messages.debug2 "--Revproxy: Is it a redirection?"; let dest = let ri = ri.request_info in let fi full = Ocsigen_extensions.find_redirection dir.regexp full dir.dest ri.ri_ssl ri.ri_host ri.ri_server_port ri.ri_get_params_string ri.ri_sub_path_string ri.ri_full_path_string in match dir.full_url with | Yes -> fi true | No -> fi false | Maybe -> try fi false with Ocsigen_extensions.Not_concerned -> fi true in let (https, host, port, uri) = try match Url.parse dest with | (Some https, Some host, port, uri, _, _, _) -> let port = match port with | None -> if https then 443 else 80 | Some p -> p in (https, host, port, uri) | _ -> raise (Ocsigen_extensions.Error_in_config_file ("Revproxy : error in destination URL "^dest)) (*VVV catch only Neturl exceptions! *) with e -> raise (Ocsigen_extensions.Error_in_config_file ("Revproxy : error in destination URL "^dest^" - "^ Printexc.to_string e)) in let uri = "/"^uri in Ocsigen_messages.debug (fun () -> "--Revproxy: YES! Redirection to "^ (if https then "https://" else "http://")^host^":"^ (string_of_int port)^uri); Ip_address.get_inet_addr host >>= fun inet_addr -> (* It is now safe to start processing next request. We are sure that the request won't be taken in disorder. => We return. *) let host = match if dir.keephost then match ri.request_info.ri_host with | Some h -> Some h | None -> None else None with | Some h -> h | None -> host in let do_request = let ri = ri.request_info in let address = Unix.string_of_inet_addr (fst (get_server_address ri)) in let forward = String.concat ", " (ri.ri_remote_ip :: (ri.ri_forward_ip @ [address])) in let proto = if ri.ri_ssl then "https" else "http" in let headers = Http_headers.replace Http_headers.x_forwarded_proto proto (Http_headers.replace Http_headers.x_forwarded_for forward (ri.ri_http_frame.Ocsigen_http_frame.frame_header.Ocsigen_http_frame.Http_header.headers)) in if dir.pipeline then Ocsigen_http_client.raw_request ~headers ~https ~port ~client:ri.ri_client ~keep_alive:true ~content:ri.ri_http_frame.Ocsigen_http_frame.frame_content ?content_length:ri.ri_content_length ~http_method:ri.ri_method ~host ~inet_addr ~uri () else fun () -> Ocsigen_http_client.basic_raw_request ~headers ~https ~port ~content:ri.ri_http_frame.Ocsigen_http_frame.frame_content ?content_length:ri.ri_content_length ~http_method:ri.ri_method ~host ~inet_addr ~uri () in Lwt.return (Ext_found (fun () -> do_request () >>= fun http_frame -> let headers = http_frame.Ocsigen_http_frame.frame_header.Ocsigen_http_frame.Http_header.headers in let code = match http_frame.Ocsigen_http_frame.frame_header.Ocsigen_http_frame.Http_header.mode with | Ocsigen_http_frame.Http_header.Answer code -> code | _ -> raise Bad_answer_from_http_server in match http_frame.Ocsigen_http_frame.frame_content with | None -> let empty_result = Ocsigen_http_frame.empty_result () in let length = Ocsigen_headers.get_content_length http_frame in Ocsigen_stream.add_finalizer (fst empty_result.Ocsigen_http_frame.res_stream) (fun outcome -> match outcome with `Failure -> http_frame.Ocsigen_http_frame.frame_abort () | `Success -> Lwt.return ()); Lwt.return {empty_result with Ocsigen_http_frame.res_content_length = length; res_headers= headers; res_code= code; } | Some stream -> let default_result = Ocsigen_http_frame.default_result () in let length = Ocsigen_headers.get_content_length http_frame in Ocsigen_stream.add_finalizer stream (fun outcome -> match outcome with `Failure -> http_frame.Ocsigen_http_frame.frame_abort () | `Success -> Lwt.return ()); Lwt.return {default_result with Ocsigen_http_frame.res_content_length = length; res_stream = (stream, None); res_headers= headers; res_code= code; } ) ) ) (function | Not_concerned -> return (Ext_next err) | e -> fail e) (*****************************************************************************) let parse_config = function | Element ("revproxy", atts, []) -> let rec parse_attrs ((r, f, d, pipeline, h) as res) = function | [] -> res | ("regexp", regexp)::l when r = None -> (* deprecated *) parse_attrs (Some (Netstring_pcre.regexp ("^"^regexp^"$")), Maybe, d, pipeline, h) l | ("fullurl", regexp)::l when r = None -> parse_attrs (Some (Netstring_pcre.regexp ("^"^regexp^"$")), Yes, d, pipeline, h) l | ("suburl", regexp)::l when r = None -> parse_attrs (Some (Netstring_pcre.regexp ("^"^regexp^"$")), No, d, pipeline, h) l | ("dest", dest)::l when d = None -> parse_attrs (r, f, Some dest, pipeline, h) l | ("keephost", "keephost")::l -> parse_attrs (r, f, d, pipeline, true) l | ("nopipeline", "nopipeline")::l -> parse_attrs (r, f, d, false, h) l | (a, _) :: _ -> badconfig "Wrong or duplicate attribute '%s' for " a in let dir = match parse_attrs (None, Yes, None, true, false) atts with | (None, _, _, _, _) -> badconfig "Missing attribute 'regexp' for " | (_, _, None, _, _) -> badconfig "Missing attribute 'dest' for " | (Some r, full, Some d, pipeline, h) -> { regexp=r; full_url=full; dest=d; pipeline=pipeline; keephost=h; } in gen dir | Element (t, _, _) -> raise (Bad_config_tag_for_extension t) | _ -> raise (Error_in_config_file "(revproxy extension) Bad data") (*****************************************************************************) (** Registration of the extension *) let () = register_extension ~name:"revproxy" ~fun_site:(fun _ _ _ _ _ -> parse_config) ~user_fun_site:(fun _ _ _ _ _ _ -> parse_config) ~respect_pipeline:true (* We ask ocsigen to respect pipeline order when sending to extensions! *) () ocsigenserver-2.2.0/src/extensions/authbasic.ml0000644000000000000000000001263312060404165020045 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module authbasic.ml * Copyright (C) 2008 Stéphane Glondu * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) open Printf open Lwt open Ocsigen_extensions open Simplexmlparser open Ocsigen_http_frame (*****************************************************************************) (* Management of basic authentication methods *) exception Bad_config_tag_for_auth of string let register_basic_authentication_method, get_basic_authentication_method = let fun_auth = ref (fun config -> raise (Bad_config_tag_for_auth "")) in (********* register_basic_authentication_method *********) (fun new_fun_auth -> let old_fun_auth = !fun_auth in fun_auth := (fun config -> try old_fun_auth config with | Bad_config_tag_for_auth c -> new_fun_auth config)), (********* get_basic_authentication_method *********) (fun config -> !fun_auth config) (*****************************************************************************) (* Basic authentication with a predefined login/password (example) *) let _ = register_basic_authentication_method (function | Element ("plain", ["login", login; "password", password], _) -> (fun l p -> Lwt.return (login = l && password = p)) | _ -> raise (Bad_config_tag_for_extension "not for htpasswd")) (*****************************************************************************) let parse_config = function | Element ("authbasic", ["realm", realm], auth::[]) -> (* http://www.ietf.org/rfc/rfc2617.txt *) (* TODO: check that realm is correct *) let auth = try get_basic_authentication_method auth with Bad_config_tag_for_extension _ -> raise (Error_in_config_file "Unable to find proper authentication method") in (fun rs -> match rs with | Ocsigen_extensions.Req_not_found (err, ri) -> let reject () = let h = Http_headers.add (Http_headers.name "WWW-Authenticate") (sprintf "Basic realm=\"%s\"" realm) Http_headers.empty in Ocsigen_messages.debug2 "--Access control (auth): invalid credentials!"; fail (Http_error.Http_exception (401, None, Some h)) in begin try let (login, password) = let credentials = Http_headers.find (Http_headers.name "Authorization") ri.request_info.ri_http_frame.Ocsigen_http_frame.frame_header.Ocsigen_http_frame.Http_header.headers in let encoded = let n = String.length credentials in if n > 6 && String.sub credentials 0 6 = "Basic " then String.sub credentials 6 (n-6) else failwith "credentials" in let decoded = Netencoding.Base64.decode encoded in let i = String.index decoded ':' in (String.sub decoded 0 i, String.sub decoded (i+1) (String.length decoded - (i+1))) in auth login password >>= (fun r -> if r then begin Ocsigen_messages.debug2 "--Access control (auth): valid credentials!"; Lwt.return (Ocsigen_extensions.Ext_next err) end else reject ()) with | Not_found -> reject () | e -> Ocsigen_messages.debug (fun () -> sprintf "--Access control (auth): Invalid Authorization header (%s)" (Printexc.to_string e)); fail (Ocsigen_http_error (Ocsigen_cookies.Cookies.empty, 400)) end | Ocsigen_extensions.Req_found (ri, r) -> Lwt.return Ocsigen_extensions.Ext_do_nothing) | Element ("authbasic" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element (t, _, _) -> raise (Bad_config_tag_for_extension t) | _ -> raise (Error_in_config_file "(authbasic extension) Bad data") (*****************************************************************************) (** Registration of the extension *) let () = register_extension ~name:"authbasic" ~fun_site:(fun _ _ _ _ _ -> parse_config) ~user_fun_site:(fun _ _ _ _ _ _ -> parse_config) () ocsigenserver-2.2.0/src/extensions/ocsigen_comet.mli0000644000000000000000000002066512060404165021075 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Copyright (C) 2010 * Raphaël Proust * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Ocsigen_comet server extension : provides low-level server to client communication scheme. *) module Channels : (** A module with all the base primitive needed for server push. *) sig exception Too_many_virtual_channels (** An exception that may be raised when trying to create a new channel while the channel count exceed [max_virtual_channels]. Note that by default [max_virtual_channels] is set to [None] so that the exception is never raised. *) exception Non_unique_channel_name (** An exception raised when creating a channel with a name already associated to another channel. It is strictly forbidden to name several channels with the same string. *) type t (** The abstract type of server-to-client communication channels. *) type chan_id = string (** The type of channel identifier. Channels are uniquely identified by there chan_id value. *) val create : ?name:string -> unit -> t (** [create ()] returns a channel with a freshly baked identifier while [create ~name ()] returns a channel with the identifier [name] after checking for uniqueness. If [name] is the identifier of an existing channel, the exception [Non_unique_channel_name] is raised. *) val write : t -> (string * Ocsigen_stream.outcome Lwt.u option) -> unit (** [write c (s, u)] sends the string [s] on the channel [c]. The argument [u] allow one to observe the result of the operation. If [u] is [None], there is no way to tell if the sending worked as expected. However if [u] is [Some u'] then [u'] will be woken up with the outcome (either [`Falure] or [`Success]) of the stream writing process. *) val listeners : t -> int (** [listeners c] returns the number of clients currently registered on [c] A client is "currently registered" on a channel if an actual connection is open for the server to push a message onto. Note that this information is server-based only, and that because it is so, some clients may still be registered as active while they have in fact closed the connection. In such a case, the outcome mechanism in [write] will report the failure. *) val get_id : t -> chan_id (** [get_id c] returns the unique identifier associated to [c]. The client can register to [c] using the returned identifier. *) end module Security : (** This module is to be used carefully, it provides functions to interrupt and restart Comet related connections. It is however useful to prevent Comet based DOS attacks. These functions can also be called from the Ocsigen command pipe. *) sig val set_timeout : ?reset:bool -> float -> unit (** [set_timeout ?reset f] sets the timeout value for future Comet connections to [f]. If [reset] is [true] then current connections are closed and the new timeout value will apply to the reopened connections. Default value for [reset] is false. *) val deactivate : unit -> unit (** [deactivate ()] ceases all Comet related activity. Each opened connection is closed. Further attempts to connect to the server with a Comet specific content type will result in a HTTP status code 503 (Unavailable). If called when Comet is not activated it does nothing (not even logging the deactivation attempt. *) val activate : unit -> unit (** [activate ()] starts serving Comet requests. It is the client's own responsibility to reopen a connection. If Comet was already activated it keeps going and nothing happens. *) val activated : unit -> bool (** [activated ()] reflects the activation state of the Comet module. If [false] it indicates that Comet connections are answered with a HTTP status code 503. If [true] it indicates that Comet connections are handled in a standard fashion by the server. *) end (** Usage: On the server side : 1) create needed channels 2) transmit their identifiers to clients 3) write when appropriate (using the outcome mechanism if necessary On the client : 1) make a XmlHttpRequest (XHR) with a list of channel identifiers. 2) wait for the reply 3) GOTO 1 Encoding for client-to-server requests: * The content type header should be set to [application/x-ocsigen-comet] (without quotes) * A POST parameter is required. Its name should be [registration] and its content should be a list of channel identifiers separated by [\n] (newline) characters. * Name and content of the said POST parameter should be encoded according to the [escape] JavaScript primitive Encoding for server-to-client answer: * The server answer is either empty (when no channel was written upon before timeout) or a list of pairs of channel identifiers and message content. The pairs are separated by [:] (colon) while the list elements are separated by [\n] (newline) characters. * In the list, channels that no longer exists on the server side are marked as pairs of channel identifier and the special string [ENDED_CHANNEL]. When receiving such a message, the client should lose hope of ever connecting to that particular channel ever again. *) (** Conf-file options: One can use the configuration file to tweak Ocsigen_comet settings. The supported options are: * max_virtual_channels: * default: [None] * syntax: "" is for [None], "i" is for [Some (int_of_string i)] * [max_virtual_channels] is an upper limit to the number of active channels. It does not limit the number of connections but the number of values of type [Ocsigen_comet.Channels.t] that can be used simultaneously. If one calls [Ocsigen_comet.Channels.create] while the number of channels is already maxed out, the exception [Ocsigen_comet.Channels.Too_many_virtual_channels] is raised. *) (** Commands: Comet provides commands (to be piped into Ocsigen's command pipe). The complete list of commands is described here. Don't forget to use the Comet prefix: each command is to be prefixed by "comet:" (without quotes). * deactivate: * deactivate is a command that stops all Comet activity. It is equivalent to a call to [Ocsigen_comet.Security.deactivate]. * activate: * activate is the dual command to deactivate. It resumes Comet activity (or do nothing is Comet is already activated) with exactly the same effect as a call to [Ocsigen_comet.Security.activate] would have. * set_timeout: * parameter: f (float) * optional parameter: s ("KILL") * set_timeout allows one to dynamically change the value of Comet connections timeout to [f]. Previously activated connections are closed if the second optional parameter is used. If not, connections are carried out with their old timeout unchanged. *) (** Note to Eliom users: Although it is possible to use Ocsigen_comet as an extension to the Ocsigen Server, it is recommended to use the higher level Eliom modules, namely Eliom_comet (for server side) and Eliom_client_comet (for client side). The former provides typed channels (with automatic marshaling) and channel wrapping, the later automates decoding and demarshaling and manages channel registration and deregistration. The low level Ocisgen server extension can however be used with classic Javascript clients (whereas the high level Eliom module requires Ocaml compatible unmarshalling which may be difficult to find in a non js_of_ocaml/O'browser based client). It may also be used to add your own high level wrapper with a custom communication protocol. *) ocsigenserver-2.2.0/src/extensions/deflatemod.ml0000644000000000000000000003015312060404165020203 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module deflatemod.ml * Copyright (C) 2007 Gabriel Kerneis * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (*****************************************************************************) (*****************************************************************************) (* This module allows to compress output sent by the server *) (*****************************************************************************) (*****************************************************************************) open Lwt open Ocsigen_extensions open Simplexmlparser open Ocsigen_headers (* Content-type *) type filter = Type of string option * string option | Extension of string type compress_choice = All_but of filter list | Compress_only of filter list let should_compress (t, t') url choice_list = let check = function |Type (None, None) -> true |Type (None, Some x') -> x' = t' |Type (Some x, None) -> x = t |Type (Some x, Some x') -> x = t && x' = t' |Extension suff -> Filename.check_suffix url suff in match choice_list with |Compress_only l -> List.exists check l |All_but l -> List.for_all (fun c -> not (check c)) l (* Pas de filtre global pour l'instant let choice_list = ref (All_but []) *) (** Compression *) let buffer_size = ref 8192 (* 0 = no compression ; 1 = best speed ; 9 = best compression *) let compress_level = ref 6 (* Minimal header, by X. Leroy *) let gzip_header_length = 10 let gzip_header = String.make gzip_header_length (Char.chr 0) let () = gzip_header.[0] <- Char.chr 0x1F; gzip_header.[1] <- Char.chr 0x8B; gzip_header.[2] <- Char.chr 8; gzip_header.[9] <- Char.chr 0xFF (* inspired by an auxiliary function from camlzip, by Xavier Leroy *) type output_buffer = { stream: Zlib.stream; buf: string; mutable pos: int; mutable avail: int; } (* puts in oz the content of buf, from pos to pos + len ; * f is the continuation of the current stream *) let rec output oz f buf pos len = if pos < 0 || len < 0 || pos + len > String.length buf then assert false ; if len = 0 then next_cont oz f else if oz.avail = 0 then (let cont () = output oz f buf pos len in Ocsigen_messages.debug2 "--Deflatemod: Flushing because output buffer is full"; flush oz cont) else ( (catch (fun () -> (try return(Zlib.deflate oz.stream buf pos len oz.buf oz.pos oz.avail Zlib.Z_SYNC_FLUSH) with e -> fail e)) (function |Zlib.Error(s, s') -> fail (Ocsigen_stream.Stream_error("Error during compression: "^s^" "^s')) | e -> fail e)) >>= (fun (_, used_in, used_out) -> oz.pos <- oz.pos + used_out; oz.avail <- oz.avail - used_out; (* If we didn't deflate the whole input or if the buffer is full, continue *) if (used_in < len) || (oz.avail = 0) then output oz f buf (pos + used_in) (len - used_in) (* otherwise, go to the next part of the stream *) else next_cont oz f )) (* Flush oz, ie. produces a new_stream with the content of oz, cleans it * and returns the continuation of the stream *) and flush oz cont = let len = oz.pos in let s = String.sub oz.buf 0 len in Ocsigen_messages.debug2 "--Deflatemod: Flushing!"; oz.pos <- 0 ; oz.avail <- String.length oz.buf ; if len > 0 then Ocsigen_stream.cont s cont else cont () and next_cont oz stream = Ocsigen_stream.next stream >>= fun e -> match e with | Ocsigen_stream.Finished None -> Ocsigen_messages.debug2 "--Deflatemod: End of stream: big cleaning for zlib" ; (* loop until there is nothing left to compress and flush *) let rec after_flushing () = (* buffer full *) if oz.avail = 0 then flush oz after_flushing else ( (* no more input, deflates only what were left because output buffer * was full *) let (finished, _, used_out) = Zlib.deflate oz.stream oz.buf 0 0 oz.buf oz.pos oz.avail Zlib.Z_FINISH in oz.pos <- oz.pos + used_out; oz.avail <- oz.avail - used_out; if not finished then after_flushing () else (Ocsigen_messages.debug2 "--Deflatemod: Zlib.deflate finished, last flush" ; flush oz (fun () -> Ocsigen_stream.empty None))) in flush oz after_flushing | Ocsigen_stream.Finished (Some s) -> next_cont oz s | Ocsigen_stream.Cont(s,f) -> output oz f s 0 (String.length s) (* deflate param : true = deflate ; false = gzip (no header in this case) *) let compress deflate stream = let zstream = Zlib.deflate_init !compress_level deflate in let finalize status = Ocsigen_stream.finalize stream status >>= fun e -> (try Zlib.deflate_end zstream with (* ignore errors, deflate_end cleans everything anyway *) Zlib.Error _ -> ()); return (Ocsigen_messages.debug2 "--Deflatemod: Zlib stream closed") in let oz = { stream = zstream ; buf = String.create !buffer_size; pos = 0; avail = !buffer_size } in let new_stream () = next_cont oz (Ocsigen_stream.get stream) in Ocsigen_messages.debug2 "--Deflatemod: Zlib stream initialized" ; if deflate then Ocsigen_stream.make ~finalize new_stream else Ocsigen_stream.make ~finalize (fun () -> Ocsigen_stream.cont gzip_header new_stream) (*****************************************************************************) (** The filter function *) (* We implement Content-Encoding, not Transfer-Encoding *) type encoding = Deflate | Gzip | Id | Star | Not_acceptable let qvalue = function Some x -> x |None -> 1.0 let enc_compare e e' = match e,e' with |(Star,_),(_,_) -> -1 (* star should be at the very end *) |(_,_),(Star,_) -> 1 |(_,v),(_,v') when v 1 (* then, sort by qvalue *) |(_,v),(_,v') when v>v' -> -1 |(x,_),(x',_) when x=x' -> 0 |(Deflate,_),(_,_) -> 1 (* and subsort by encoding *) |(_,_),(Deflate,_) -> -1 |(Gzip,_),(_,_) -> 1 |(_,_),(Gzip,_) -> -1 |(Id,_),(_,_) -> 1 |(_,_),(Id,_) -> -1 |_ -> assert false let rec filtermap f = function |[] -> [] |t::q -> match f t with |Some s -> s::(filtermap f q) |None -> filtermap f q let convert = function |(Some "deflate",v) -> Some (Deflate, qvalue v) |(Some "gzip",v)|(Some "x-gzip",v) -> Some (Gzip, qvalue v) |(Some "identity",v) -> Some (Id, qvalue v) |(None,v) -> Some (Star, qvalue v) |_ -> None (* Follow http's RFC to select the transfert encoding *) let select_encoding accept_header = let h = List.sort enc_compare (filtermap convert accept_header) in let (exclude,accept) = let (e,a) = List.partition (fun x -> snd x = 0.) h in (List.map fst e, List.map fst a) in let rec aux = function |[] -> if ((List.mem Star exclude) || (List.mem Id exclude)) then Not_acceptable else Id |t::q -> if (List.mem t exclude) then aux q else t in aux accept exception No_compress (* deflate = true -> mode deflate * deflate = false -> mode gzip *) let stream_filter contentencoding url deflate choice res = return (Ext_found (fun () -> try ( match res.Ocsigen_http_frame.res_content_type with | None -> raise No_compress (* il faudrait défaut ? *) | Some contenttype -> match Ocsigen_headers.parse_mime_type contenttype with | None, _ | _, None -> raise No_compress (* should never happen? *) | (Some a, Some b) when should_compress (a, b) url choice -> return { res with Ocsigen_http_frame.res_content_length = None; Ocsigen_http_frame.res_etag = (match res.Ocsigen_http_frame.res_etag with | Some e -> Some ((if deflate then "Ddeflatemod" else "Gdeflatemod")^e) | None -> None); Ocsigen_http_frame.res_stream = (compress deflate (fst res.Ocsigen_http_frame.res_stream), None); Ocsigen_http_frame.res_headers = Http_headers.replace Http_headers.content_encoding contentencoding res.Ocsigen_http_frame.res_headers; } | _ -> raise No_compress) with Not_found | No_compress -> return res)) let filter choice_list = function | Req_not_found (code,_) -> return (Ext_next code) | Req_found ({ request_info = ri }, res) -> match select_encoding (Lazy.force(ri.ri_accept_encoding)) with | Deflate -> stream_filter "deflate" ri.ri_sub_path_string true choice_list res | Gzip -> stream_filter "gzip" ri.ri_sub_path_string false choice_list res | Id | Star -> return (Ext_found (fun () -> return res)) | Not_acceptable -> return (Ext_stop_all (res.Ocsigen_http_frame.res_cookies,406)) (*****************************************************************************) let rec parse_filter = function |[] -> [] |(Element ("type",[],[PCData t]))::q -> let (a,b) = (Ocsigen_headers.parse_mime_type t) in Type (a,b) :: parse_filter q |(Element ("extension",[],[PCData t]))::q -> (Extension t) :: parse_filter q |_ -> raise (Error_in_config_file "Unexpected element inside contenttype (should be or )") let rec parse_global_config = function | [] -> () | (Element ("compress", [("level", l)], []))::ll -> let l = try int_of_string l with Failure _ -> raise (Error_in_config_file "Compress level should be an integer between 0 and 9") in compress_level := if (l <= 9 && l >= 0) then l else 6 ; parse_global_config ll | (Element ("buffer", [("size", s)], []))::ll -> let s = (try int_of_string s with Failure _ -> raise (Error_in_config_file "Buffer size should be a positive integer")) in buffer_size := if s > 0 then s else 8192 ; parse_global_config ll (* TODO: Pas de filtre global pour l'instant * le nom de balise contenttype est mauvais, au passage | (Element ("contenttype", [("compress", b)], choices))::ll -> let l = (try parse_filter choices with Not_found -> raise (Error_in_config_file "Can't parse mime-type content")) in (match b with |"only" -> choice_list := Compress_only l |"allbut" -> choice_list := All_but l | _ -> raise (Error_in_config_file "Attribute \"compress\" should be \"allbut\" or \"only\"")); parse_global_config ll *) | _ -> raise (Error_in_config_file "Unexpected content inside deflatemod config") (*****************************************************************************) let parse_config = function | Element ("deflate", [("compress",b)], choices) -> let l = (try parse_filter choices with Not_found -> raise (Error_in_config_file "Can't parse filter content")) in (match b with |"only" -> filter (Compress_only l) |"allbut" -> filter (All_but l) | _ -> raise (Error_in_config_file "Attribute \"compress\" should be \"allbut\" or \"only\"")) | Element ("deflate" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element (t, _, _) -> raise (Bad_config_tag_for_extension t) | _ -> raise (Error_in_config_file "Unexpected data in config file") (*****************************************************************************) (** Registration of the extension *) let () = Ocsigen_extensions.register_extension ~name:"deflatemod" ~fun_site:(fun _ _ _ _ _ -> parse_config) ~init_fun:parse_global_config () ocsigenserver-2.2.0/src/extensions/rewritemod.ml0000644000000000000000000001127712060404165020266 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module rewritemod.ml * Copyright (C) 2008 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (*****************************************************************************) (*****************************************************************************) (* Ocsigen extension for rewriteing URLs *) (* in the configuration file *) (*****************************************************************************) (*****************************************************************************) (* IMPORTANT WARNING It is really basic for now: - rewrites only subpaths (and do not change get parameters) - changes only ri_sub_path and ri_sub_path_tring not ri_full_path and ri_full_path_string and ri_url_string and ri_url This is probably NOT what we want ... *) (* To compile it: ocamlfind ocamlc -thread -package netstring,ocsigen -c extensiontemplate.ml Then load it dynamically from Ocsigen's config file: *) open Lwt open Ocsigen_extensions open Simplexmlparser exception Not_concerned (*****************************************************************************) (* The table of rewrites for each virtual server *) type assockind = | Regexp of Netstring_pcre.regexp * string * bool (*****************************************************************************) (* Finding rewrites *) let find_rewrite (Regexp (regexp, dest, fullrewrite)) suburl = (match Netstring_pcre.string_match regexp suburl 0 with | None -> raise Not_concerned | Some _ -> (* Matching regexp found! *) Netstring_pcre.global_replace regexp dest suburl), fullrewrite (*****************************************************************************) (** The function that will generate the pages from the request. *) let gen regexp = function | Ocsigen_extensions.Req_found _ -> Lwt.return Ocsigen_extensions.Ext_do_nothing | Ocsigen_extensions.Req_not_found (err, ri) -> catch (* Is it a rewrite? *) (fun () -> Ocsigen_messages.debug2 "--Rewritemod: Is it a rewrite?"; let redir, fullrewrite = let ri = ri.request_info in find_rewrite regexp (match ri.ri_get_params_string with | None -> ri.ri_sub_path_string | Some g -> ri.ri_sub_path_string ^ "?" ^ g) in Ocsigen_messages.debug (fun () -> "--Rewritemod: YES! rewrite to: "^redir); return (Ext_retry_with ({ ri with request_info = Ocsigen_extensions.ri_of_url ~full_rewrite:fullrewrite redir ri.request_info }, Ocsigen_cookies.Cookies.empty) ) ) (function | Not_concerned -> return (Ext_next err) | e -> fail e) (*****************************************************************************) let parse_config = function | Element ("rewrite", atts, []) -> let regexp = match atts with | [] -> raise (Error_in_config_file "regexp attribute expected for ") | [("regexp", s); ("url", t)] | [("regexp", s); ("dest", t)] -> Regexp ((Netstring_pcre.regexp ("^"^s^"$")), t, false) | [("regexp", s); ("url", t); ("fullrewrite", "fullrewrite")] | [("regexp", s); ("dest", t); ("fullrewrite", "fullrewrite")] -> Regexp ((Netstring_pcre.regexp ("^"^s^"$")), t, true) | _ -> raise (Error_in_config_file "Wrong attribute for ") in gen regexp | Element (t, _, _) -> raise (Bad_config_tag_for_extension t) | _ -> raise (Error_in_config_file "(rewritemod extension) Bad data") (*****************************************************************************) (** Registration of the extension *) let () = register_extension ~name:"rewritemod" ~fun_site:(fun _ _ _ _ _ -> parse_config) ~user_fun_site:(fun _ _ _ _ _ _ -> parse_config) () ocsigenserver-2.2.0/src/extensions/accesscontrol.mli0000644000000000000000000000171612060404165021115 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module accesscontrol.ml * Copyright (C) 2007 Vincent Balat, Stéphane Glondu * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) val parse_condition : Simplexmlparser.xml -> Ocsigen_extensions.request_info -> bool ocsigenserver-2.2.0/src/extensions/.depend0000644000000000000000000001330512060404165017005 0ustar0000000000000000accesscontrol.cmi: ../server/ocsigen_extensions.cmi authbasic.cmi: ocsigen_comet.cmi: ../baselib/ocsigen_stream.cmi ocsipersist.cmi: accesscontrol.cmo: ../baselib/ocsigen_messages.cmi ../baselib/ocsigen_lib.cmi \ ../http/ocsigen_http_frame.cmi ../server/ocsigen_extensions.cmi \ ../http/ocsigen_cookies.cmi ../http/http_headers.cmi ../http/framepp.cmi \ accesscontrol.cmi accesscontrol.cmx: ../baselib/ocsigen_messages.cmx ../baselib/ocsigen_lib.cmx \ ../http/ocsigen_http_frame.cmx ../server/ocsigen_extensions.cmx \ ../http/ocsigen_cookies.cmx ../http/http_headers.cmx ../http/framepp.cmx \ accesscontrol.cmi authbasic.cmo: ../baselib/ocsigen_messages.cmi ../http/ocsigen_http_frame.cmi \ ../server/ocsigen_extensions.cmi ../http/ocsigen_cookies.cmi \ ../http/http_headers.cmi authbasic.cmi authbasic.cmx: ../baselib/ocsigen_messages.cmx ../http/ocsigen_http_frame.cmx \ ../server/ocsigen_extensions.cmx ../http/ocsigen_cookies.cmx \ ../http/http_headers.cmx authbasic.cmi cgimod.cmo: ../baselib/ocsigen_stream.cmi ../http/ocsigen_senders.cmi \ ../baselib/ocsigen_messages.cmi ../baselib/ocsigen_lib.cmi \ ../http/ocsigen_http_frame.cmi ../http/ocsigen_http_com.cmi \ ../server/ocsigen_extensions.cmi ../http/ocsigen_cookies.cmi \ ../baselib/ocsigen_config.cmi ../http/http_headers.cmi \ ../http/framepp.cmi cgimod.cmx: ../baselib/ocsigen_stream.cmx ../http/ocsigen_senders.cmx \ ../baselib/ocsigen_messages.cmx ../baselib/ocsigen_lib.cmx \ ../http/ocsigen_http_frame.cmx ../http/ocsigen_http_com.cmx \ ../server/ocsigen_extensions.cmx ../http/ocsigen_cookies.cmx \ ../baselib/ocsigen_config.cmx ../http/http_headers.cmx \ ../http/framepp.cmx cors.cmo: ../baselib/ocsigen_stream.cmi ../baselib/ocsigen_messages.cmi \ ../baselib/ocsigen_lib.cmi ../http/ocsigen_http_frame.cmi \ ../server/ocsigen_extensions.cmi ../http/http_headers.cmi \ ../http/framepp.cmi cors.cmx: ../baselib/ocsigen_stream.cmx ../baselib/ocsigen_messages.cmx \ ../baselib/ocsigen_lib.cmx ../http/ocsigen_http_frame.cmx \ ../server/ocsigen_extensions.cmx ../http/http_headers.cmx \ ../http/framepp.cmx deflatemod.cmo: ../baselib/ocsigen_stream.cmi ../baselib/ocsigen_messages.cmi \ ../http/ocsigen_http_frame.cmi ../http/ocsigen_headers.cmi \ ../server/ocsigen_extensions.cmi ../http/http_headers.cmi deflatemod.cmx: ../baselib/ocsigen_stream.cmx ../baselib/ocsigen_messages.cmx \ ../http/ocsigen_http_frame.cmx ../http/ocsigen_headers.cmx \ ../server/ocsigen_extensions.cmx ../http/http_headers.cmx extendconfiguration.cmo: ../server/ocsigen_parseconfig.cmi \ ../baselib/ocsigen_messages.cmi ../server/ocsigen_extensions.cmi \ ../http/ocsigen_cookies.cmi ../baselib/ocsigen_config.cmi \ ../http/ocsigen_charset_mime.cmi extendconfiguration.cmx: ../server/ocsigen_parseconfig.cmx \ ../baselib/ocsigen_messages.cmx ../server/ocsigen_extensions.cmx \ ../http/ocsigen_cookies.cmx ../baselib/ocsigen_config.cmx \ ../http/ocsigen_charset_mime.cmx extensiontemplate.cmo: ../http/ocsigen_senders.cmi \ ../server/ocsigen_extensions.cmi extensiontemplate.cmx: ../http/ocsigen_senders.cmx \ ../server/ocsigen_extensions.cmx ocsigen_comet.cmo: ../baselib/ocsigen_stream.cmi \ ../baselib/ocsigen_messages.cmi ../baselib/ocsigen_lib.cmi \ ../http/ocsigen_http_frame.cmi ../server/ocsigen_extensions.cmi \ ../baselib/ocsigen_config.cmi ocsigen_comet.cmi ocsigen_comet.cmx: ../baselib/ocsigen_stream.cmx \ ../baselib/ocsigen_messages.cmx ../baselib/ocsigen_lib.cmx \ ../http/ocsigen_http_frame.cmx ../server/ocsigen_extensions.cmx \ ../baselib/ocsigen_config.cmx ocsigen_comet.cmi outputfilter.cmo: ../http/ocsigen_http_frame.cmi ../http/ocsigen_headers.cmi \ ../server/ocsigen_extensions.cmi ../http/http_headers.cmi outputfilter.cmx: ../http/ocsigen_http_frame.cmx ../http/ocsigen_headers.cmx \ ../server/ocsigen_extensions.cmx ../http/http_headers.cmx redirectmod.cmo: ../baselib/ocsigen_messages.cmi ../baselib/ocsigen_lib.cmi \ ../http/ocsigen_http_frame.cmi ../server/ocsigen_extensions.cmi redirectmod.cmx: ../baselib/ocsigen_messages.cmx ../baselib/ocsigen_lib.cmx \ ../http/ocsigen_http_frame.cmx ../server/ocsigen_extensions.cmx revproxy.cmo: ../baselib/ocsigen_stream.cmi ../baselib/ocsigen_messages.cmi \ ../baselib/ocsigen_lib.cmi ../http/ocsigen_http_frame.cmi \ ../server/ocsigen_http_client.cmi ../http/ocsigen_headers.cmi \ ../server/ocsigen_extensions.cmi ../http/http_headers.cmi revproxy.cmx: ../baselib/ocsigen_stream.cmx ../baselib/ocsigen_messages.cmx \ ../baselib/ocsigen_lib.cmx ../http/ocsigen_http_frame.cmx \ ../server/ocsigen_http_client.cmx ../http/ocsigen_headers.cmx \ ../server/ocsigen_extensions.cmx ../http/http_headers.cmx rewritemod.cmo: ../baselib/ocsigen_messages.cmi \ ../server/ocsigen_extensions.cmi ../http/ocsigen_cookies.cmi rewritemod.cmx: ../baselib/ocsigen_messages.cmx \ ../server/ocsigen_extensions.cmx ../http/ocsigen_cookies.cmx staticmod.cmo: ../baselib/ocsigen_messages.cmi \ ../server/ocsigen_local_files.cmi ../baselib/ocsigen_lib.cmi \ ../http/ocsigen_http_frame.cmi ../http/ocsigen_http_com.cmi \ ../server/ocsigen_extensions.cmi ../http/http_headers.cmi staticmod.cmx: ../baselib/ocsigen_messages.cmx \ ../server/ocsigen_local_files.cmx ../baselib/ocsigen_lib.cmx \ ../http/ocsigen_http_frame.cmx ../http/ocsigen_http_com.cmx \ ../server/ocsigen_extensions.cmx ../http/http_headers.cmx userconf.cmo: ../baselib/ocsigen_messages.cmi ../baselib/ocsigen_lib.cmi \ ../server/ocsigen_extensions.cmi ../http/ocsigen_cookies.cmi userconf.cmx: ../baselib/ocsigen_messages.cmx ../baselib/ocsigen_lib.cmx \ ../server/ocsigen_extensions.cmx ../http/ocsigen_cookies.cmx ocsigenserver-2.2.0/src/extensions/ocsigen_comet.ml0000644000000000000000000004303612060404165020721 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Copyright (C) 2010 * Raphaël Proust * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (* Comet extension for Ocsigen server * ``Comet'' is a set of hacks techniques providing basic * server-to-client communication. Using HTTP, it is not possible for the server * to send a message to the client, it is only possible to answer a client's * request. * * This implementation is to evolve and will change a lot with HTML5's * WebSockets support. *) open Ocsigen_lib (*** PREAMBLE ***) (* Shortening names of modules *) module OFrame = Ocsigen_http_frame module OStream = Ocsigen_stream module OX = Ocsigen_extensions module OConf = Ocsigen_config module OMsg = Ocsigen_messages (* infix monad binders *) let ( >>= ) = Lwt.( >>= ) let ( >|= ) = Lwt.( >|= ) (* AKA map, AKA lift *) (* small addition to the standard library *) let map_rev_accu_split func lst accu1 accu2 = let rec aux accu1 accu2 = function | [] -> (accu1, accu2) | x :: xs -> match func x with | Left y -> aux (y :: accu1) accu2 xs | Right y -> aux accu1 (y :: accu2) xs in aux accu1 accu2 lst (*** EXTENSION OPTIONS ***) (* timeout for comet connections : if no value has been written in the ellapsed * time, connection will be closed. Should be equal to client timeout. *) let timeout_ref = ref 20. let get_timeout () = !timeout_ref (* the size initialization for the channel hashtable *) let tbl_initial_size = 16 let max_virtual_channels_ref = ref None let get_max_virtual_channels () = !max_virtual_channels_ref let rec parse_options = function | [] -> () | ("max_virtual_channels", "") :: tl -> max_virtual_channels_ref := None ; parse_options tl | ("max_virtual_channels", s) :: tl -> max_virtual_channels_ref := Some (int_of_string s) ; parse_options tl | _ :: _ -> raise (OX.Error_in_config_file "Unexpected data in config file") (*** CORE ***) module Channels : sig exception Too_many_virtual_channels (* raised when calling [create] while [max_virtual_channels] is [Some x] and * creating a new channel would make the virtual channel count greater than * [x]. *) exception Non_unique_channel_name (* raised when creating a channel with a name already associated. *) type t (* the type of channels : * channels can be written on or read from using the following functions *) type chan_id = string val create : ?name:string -> unit -> t val read : t -> (string * OStream.outcome Lwt.u option) Lwt.t val write : t -> (string * OStream.outcome Lwt.u option) -> unit val listeners : t -> int (* The up-to-date count of registered clients *) val send_listeners : t -> int -> unit (* [send_listeners c i] adds [i] to [listeners c]. [i] may be negative. *) val find_channel : chan_id -> t (* may raise Not_found if the channel was collected or never created. * Basically ids are meant for clients to tell a server to start listening * to it. *) val get_id : t -> chan_id (* [find_channel (get_id ch)] returns [ch] if the channel wasn't destroyed * that is. *) end = struct exception Too_many_virtual_channels exception Non_unique_channel_name type chan_id = string type t = { ch_id : chan_id ; mutable ch_read : (string * OStream.outcome Lwt.u option) Lwt.t ; mutable ch_write : (string * OStream.outcome Lwt.u option) Lwt.u; mutable ch_listeners : int ; } module Dummy = struct (*module added to avoid Ctbl.t cyclicity*) type tt = t end let get_id ch = ch.ch_id (* In order to being able to retrieve channels by there IDs, let's have a map * *) module CTbl = Weak.Make (struct type t = Dummy.tt let equal { ch_id = i } { ch_id = j } = i = j let hash { ch_id = c } = Hashtbl.hash c end) (* storage and ID manipulation *) let ctbl = CTbl.create tbl_initial_size let new_id = Ocsigen_lib.make_cryptographic_safe_string (* because Hashtables allow search for elements with a corresponding hash, we * have to create a dummy channel in order to retreive the original channel. * Is there a KISSer way to do that ? *) let (dummy1, dummy2) = Lwt.task () let dummy_chan i = { ch_id = i ; ch_read = dummy1 ; ch_write = dummy2 ; ch_listeners = 0 ; } (* May raise Not_found *) let find_channel i = CTbl.find ctbl (dummy_chan i) (* virtual channel count *) let (chan_count, incr_chan_count, decr_chan_count) = let cc = ref 0 in ((fun () -> !cc), (fun () -> incr cc), (fun _ -> decr cc)) let maxed_out_virtual_channels () = match get_max_virtual_channels () with | None -> false | Some y -> chan_count () >= y (* creation : newly created channel is stored in the map as a side effect *) let do_create name = if maxed_out_virtual_channels () then (OMsg.warning "Too many virtual channels, associated exception raised"; raise Too_many_virtual_channels) else let (read , write ) = Lwt.task () in let ch = { ch_id = name ; ch_read = read ; ch_write = write ; ch_listeners = 0 ; } in incr_chan_count (); CTbl.add ctbl ch; Gc.finalise decr_chan_count ch; ch let write ch x = let (read, write) = Lwt.task () in let old_write = ch.ch_write in ch.ch_write <- write ; ch.ch_read <- read ; Lwt.wakeup old_write x let create ?name () = match name with | None -> do_create (new_id ()) | Some n -> try ignore (find_channel n) ; raise Non_unique_channel_name with Not_found -> do_create n (* reading a channel : just getting a hang on the reader thread *) let read ch = ch.ch_read (* listeners *) let listeners ch = ch.ch_listeners let send_listeners ch x = ch.ch_listeners <- ch.ch_listeners + x end module Messages : (* All about messages from between clients and server *) (* * The client sends a POST request with a "registration" parameter containing * a list of channel ids. Separator for the list are semi-colon : ';'. * * The server sends result to the client in the form of a list of : * channel_id ^ ":" ^ value ^ { ";" ^ channel_id ^ " " ^ value }* * where channel_id is the id of a channel that the client registered upon and * value is the string that was written upon the associated channel. * *) sig val decode_upcomming : OX.request -> (Channels.t list * Channels.chan_id list) Lwt.t (* decode incomming message : the result is the list of channels to listen to (on the left) or to signal non existence (on the right). *) val encode_downgoing : Channels.chan_id list -> (Channels.t * string * OStream.outcome Lwt.u option) list option -> string OStream.t (* Encode outgoing messages : the first argument is the list of channels * that have already been collected. * The results is the stream to send to the client*) val encode_ended : Channels.chan_id list -> string end = struct (* constants *) let channel_separator = "\n" let field_separator = ":" let ended_message = "ENDED_CHANNEL" let channel_separator_regexp = Netstring_pcre.regexp channel_separator let url_encode x = Url.encode ~plus:false x let decode_string s accu1 accu2 = map_rev_accu_split (fun s -> try Left (Channels.find_channel s) with | Not_found -> Right s ) (Netstring_pcre.split channel_separator_regexp s) accu1 accu2 let decode_param_list params = let rec aux ((tmp_reg, tmp_end) as tmp) = function | [] -> (tmp_reg, tmp_end) | ("registration", s) :: tl -> aux (decode_string s tmp_reg tmp_end) tl | _ :: tl -> aux tmp tl in aux ([], []) params let decode_upcomming r = (* RRR This next line makes it fail with Ocsigen_unsupported_media, hence * the http_frame low level version *) (* r.OX.request_info.OX.ri_post_params r.OX.request_config *) Lwt.catch (fun () -> match r.OX.request_info.OX.ri_http_frame.OFrame.frame_content with | None -> Lwt.return [] | Some body -> Lwt.return (OStream.get body) >>= OStream.string_of_stream (OConf.get_maxrequestbodysizeinmemory ()) >|= Url.fixup_url_string >|= Netencoding.Url.dest_url_encoded_parameters ) (function | OStream.String_too_large -> Lwt.fail Input_is_too_large | e -> Lwt.fail e ) >|= decode_param_list let encode1 (c, s, _) = Channels.get_id c ^ field_separator ^ url_encode s let encode l = String.concat channel_separator (List.map encode1 l) let encode_ended l = String.concat channel_separator (List.map (fun c -> c ^ field_separator ^ ended_message) l) let stream_result_notification s outcome = Lwt_list.iter_p (function (*when write has been made with outcome notifier*) | (c, _, Some x) -> (Lwt.wakeup x outcome ; Lwt.return ()) (*when it hasn't*) | (_, _, None) -> Lwt.return () ) s let encode_downgoing e = function | None -> OStream.of_string (encode_ended e) | Some s -> let stream = OStream.of_string (match e with | [] -> encode s | e -> encode_ended e ^ field_separator ^ encode s ) in OStream.add_finalizer stream (stream_result_notification s) ; stream end module Security : sig val set_timeout : ?reset:bool -> float -> unit (* Set the [timeout] constant for new connections. Existing connections are * not affected unless [?reset] is [Some true] *) val deactivate : unit -> unit (* Stop serving comet connections and kill all current connections. *) val activate : unit -> unit (* (Re)start serving connections *) val activated : unit -> bool (* activation state *) val kill : unit React.E.t (* The event reflecting willingness to kill connections *) val command_function : string -> string list -> unit Lwt.t (* To be registered with Ocsigen_extension.register_command_function *) end = struct let (kill, kill_all_connections) = React.E.create () let activated, activate, deactivate = let activated = ref true in ((fun () -> !activated), (fun () -> if !activated then () else (OMsg.warning "Comet is being activated"; activated := true)), (fun () -> if !activated then (OMsg.warning "Comet is being deactivated"; activated := false; kill_all_connections ()) else ()) ) let warn_kill = React.E.map (fun () -> OMsg.warning "Comet connections kill notice is being sent.") kill let `R _ = React.E.retain kill (fun () -> ignore warn_kill) let set_timeout ?(reset=false) f = timeout_ref := f ; if reset then kill_all_connections () else () let command_function_ _ = function | ["deactivate"] -> deactivate () | ["activate"] -> activate () | "set_timeout" :: f :: tl -> (try set_timeout ~reset:(match tl with | ["KILL"] -> true | [] -> false | _ -> raise OX.Unknown_command ) (float_of_string f) with Failure _ -> raise OX.Unknown_command) | _ -> raise OX.Unknown_command let command_function x y = command_function_ x y; Lwt.return () end module Main : (* a client can wait for all the channels on which it * is registered and return with the first result. *) sig val main : OX.request -> unit -> OFrame.result Lwt.t (* treat an incoming request from a client. The unit part is for partial * application in Ext_found parameter. *) end = struct let frame_503 () = Lwt.return { (OFrame.default_result ()) with OFrame.res_stream = (OStream.of_string "", None); OFrame.res_code = 503; (*Service Unavailable*) OFrame.res_content_length = None; OFrame.res_content_type = Some "text/plain"; } exception Kill (* Once channel list is obtain, use this function to return a thread that * terminates when one of the channel is written upon. *) let treat_decoded = function | [], [] -> (* error : empty request *) OMsg.debug (fun () -> "Incorrect or empty Comet request"); Lwt.return { (OFrame.default_result ()) with OFrame.res_stream = (OStream.of_string "Empty or incorrect registration", None) ; OFrame.res_code = 400 ;(* BAD REQUEST *) OFrame.res_content_type = Some "text/plain" ; OFrame.res_content_length = None ; } | [], (_::_ as ended) -> (* All channels are closed *) let end_notice = Messages.encode_ended ended in OMsg.debug (fun () -> "Comet request served"); Lwt.return { (OFrame.default_result ()) with OFrame.res_stream = (OStream.of_string end_notice, None) ; OFrame.res_content_length = None ; OFrame.res_content_type = Some "text/plain" ; } | (_::_ as active), ended -> (* generic case *) let choosed = let readings = (List.map (fun c -> Channels.read c >|= fun (v,x) -> (c, v, x)) active ) in (*wait for one thread to terminate and get all terminated threads *) Lwt.choose readings >>= fun _ -> Lwt.nchoose readings in List.iter (fun c -> Channels.send_listeners c 1) active ; Lwt.catch (fun () -> Lwt.choose [ (choosed >|= fun x -> Some x); (Lwt_unix.sleep (get_timeout ()) >|= fun () -> None); (Lwt_event.next Security.kill >>= fun () -> Lwt.fail Kill); ] >|= fun x -> List.iter (fun c -> Channels.send_listeners c (-1)) active ; let s = Messages.encode_downgoing ended x in OMsg.debug (fun () -> "Comet request served"); { (OFrame.default_result ()) with OFrame.res_stream = (s, None) ; OFrame.res_content_length = None ; OFrame.res_content_type = Some "text/plain" ; } ) (function | Kill -> (* Comet stopped for security *) List.iter (fun c -> Channels.send_listeners c (-1)) active ; OMsg.debug (fun () -> "Killed Comet request handling"); frame_503 () | e -> Lwt.fail e ) (* This is just a mashup of the other functions in the module. *) let main r () = if Security.activated () then (OMsg.debug (fun () -> "Serving Comet request"); Messages.decode_upcomming r >>= treat_decoded) else (OMsg.debug (fun () -> "Refusing Comet request (Comet deactivated)"); frame_503 ()) end let rec has_comet_content_type = function | [] -> false | ("application", "x-ocsigen-comet") :: _ -> true | _ :: tl -> has_comet_content_type tl (*Only for debugging purpose*) let rec debug_content_type = function | [] -> "" | (s1,s2) :: tl -> s1 ^ "/" ^ s2 ^ "\n" ^ debug_content_type tl (*** MAIN FUNCTION ***) let main = function | OX.Req_not_found (_, rq) -> (* Else check for content type *) begin match rq.OX.request_info.OX.ri_content_type with | Some (hd, tl) when has_comet_content_type (hd :: tl) -> OMsg.debug (fun () -> "Comet message: " ^ debug_content_type (hd :: tl)); Lwt.return (OX.Ext_found (Main.main rq)) | Some (hd, tl) -> OMsg.debug (fun () -> "Non comet message: " ^ debug_content_type (hd :: tl)); Lwt.return OX.Ext_do_nothing | None -> OMsg.debug (fun () -> "Non comet message: no content type"); Lwt.return OX.Ext_do_nothing end | OX.Req_found _ -> (* If recognized by some other extension... *) Lwt.return OX.Ext_do_nothing (* ...do nothing *) (*** EPILOGUE ***) (* registering extension and the such *) let parse_config _ _ _ = function | Simplexmlparser.Element ("comet", attrs, []) -> parse_options attrs ; main | Simplexmlparser.Element (t, _, _) -> raise (OX.Bad_config_tag_for_extension t) | _ -> raise (OX.Error_in_config_file "Unexpected data in config file") let site_creator (_ : OX.virtual_hosts) _ = parse_config let user_site_creator (_ : OX.userconf_info) = site_creator (* registering extension *) let () = OX.register_extension ~name:"comet" ~fun_site:site_creator ~user_fun_site:user_site_creator () let () = OX.register_command_function ~prefix:"comet" Security.command_function ocsigenserver-2.2.0/src/extensions/authbasic.mli0000644000000000000000000000546112060404165020217 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module authbasic.mli * Copyright (C) 2008 Stéphane Glondu * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Module [Authbasic]: Basic HTTP Authentication. *) (** This module implements Basic HTTP Authentication as described in {{:http://www.ietf.org/rfc/rfc2617.txt}RFC 2617}. It can be used to add an authentication layer to sites with no built-in authentication (e.g. static files). Beware, passwords are transmitted in cleartext with this scheme, so the medium should be secured somehow (by e.g. SSL). This module implements only the HTTP-related part of the protocol, and is meant to be extended with various authentication schemes. A very naive one (authentication with a single user/password, given in the configuration file) is provided. *) val register_basic_authentication_method : (Simplexmlparser.xml -> string -> string -> bool Lwt.t) -> unit (** This function registers an authentication plugin: it adds a new parser to the list of available authentication schemes. A parser takes as argument an XML tree (corresponding to the first son of an element in the configuration file) and returns an authentication function [f]. [f] will be called for each request with the supplied user and password and should return (cooperatively) a boolean telling whether access is granted or not. Exceptions are handled the same way as for extension parsers. The element must have a {i realm} attribute, giving some identifier to the resource which is protected (several resources on the same hostname can share the same realm). This gives a general customization scheme "for free" from the point of view of plugin developers and is totally transparent to the plugin. *) val get_basic_authentication_method : Simplexmlparser.xml -> string -> string -> bool Lwt.t (** This function combines all the parsers registered with [register_basic_authentication_method]. It might be useful for other extensions. Not for the casual user. *) ocsigenserver-2.2.0/src/extensions/accesscontrol.ml0000644000000000000000000003477712060404165020761 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module accesscontrol.ml * Copyright (C) 2007 Vincent Balat, Stéphane Glondu * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Filtering requests in the configuration file *) (* Then load it dynamically from Ocsigen's config file: *) open Ocsigen_lib open Printf open Lwt open Ocsigen_extensions open Simplexmlparser open Ocsigen_http_frame (*****************************************************************************) (* Parsing a condition *) let rec parse_condition = function | Element ("ip", ["value", s], []) -> let ip_with_mask = try Ip_address.parse s with Failure _ -> badconfig "Bad ip/netmask [%s] in condition" s in (fun ri -> let r = Ip_address.match_ip ip_with_mask (Lazy.force ri.ri_remote_ip_parsed) in if r then Ocsigen_messages.debug2 (sprintf "--Access control (ip): %s matches %s" ri.ri_remote_ip s) else Ocsigen_messages.debug2 (sprintf "--Access control (ip): %s does not match %s" ri.ri_remote_ip s); r) | Element ("ip" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("port", ["value", s], []) -> let port = try int_of_string s with Failure _ -> badconfig "Bad port [%s] in condition" s in (fun ri -> let r = ri.ri_server_port = port in if r then Ocsigen_messages.debug2 (sprintf "--Access control (port): %d accepted" port) else Ocsigen_messages.debug2 (sprintf "--Access control (port): %d not accepted (%d expected)" ri.ri_server_port port); r) | Element ("port" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("ssl", [], []) -> (fun ri -> let r = ri.ri_ssl in if r then Ocsigen_messages.debug2 "--Access control (ssl): accepted" else Ocsigen_messages.debug2 "--Access control (ssl): not accepted"; r) | Element ("ssl" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("header", ["name", name; "regexp", reg], []) -> let regexp = try Netstring_pcre.regexp ("^"^reg^"$") with Failure _ -> badconfig "Bad regular expression [%s] in

condition" reg in (fun ri -> let r = List.exists (fun a -> let r = Netstring_pcre.string_match regexp a 0 <> None in if r then Ocsigen_messages.debug2 (sprintf "--Access control (header): header %s matches \"%s\"" name reg); r) (try (Http_headers.find_all (Http_headers.name name) ri.ri_http_frame.Ocsigen_http_frame.frame_header.Ocsigen_http_frame.Http_header.headers) with | Not_found -> []) in if not r then Ocsigen_messages.debug2 (sprintf "--Access control (header): header %s does not match \"%s\"" name reg); r) | Element ("header" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("method", ["value", s], []) -> let meth = try Framepp.method_of_string s with Failure _ -> badconfig "Bad method [%s] in condition" s in (fun ri -> let r = meth = ri.ri_method in if r then Ocsigen_messages.debug (fun () -> sprintf "--Access control (method): %s matches %s" (Framepp.string_of_method ri.ri_method) s) else Ocsigen_messages.debug (fun () -> sprintf "--Access control (method): %s does not match %s" (Framepp.string_of_method ri.ri_method) s); r) | Element ("method" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("protocol", ["value", s], []) -> let pr = try Framepp.proto_of_string s with Failure _ -> badconfig "Bad protocol [%s] in condition" s in (fun ri -> let r = pr = ri.ri_protocol in if r then Ocsigen_messages.debug (fun () -> sprintf "--Access control (protocol): %s matches %s" (Framepp.string_of_proto ri.ri_protocol) s) else Ocsigen_messages.debug (fun () -> sprintf "--Access control (protocol): %s does not match %s" (Framepp.string_of_proto ri.ri_protocol) s); r) | Element ("protocol" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("path", ["regexp", s], []) -> let regexp = try Netstring_pcre.regexp ("^"^s^"$") with Failure _ -> badconfig "Bad regular expression [%s] in condition" s in (fun ri -> let r = Netstring_pcre.string_match regexp ri.ri_sub_path_string 0 <> None in if r then Ocsigen_messages.debug (fun () -> sprintf "--Access control (path): \"%s\" matches \"%s\"" ri.ri_sub_path_string s) else Ocsigen_messages.debug (fun () -> sprintf "--Access control (path): \"%s\" does not match \"%s\"" ri.ri_sub_path_string s); r) | Element ("path" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("and", [], sub) -> let sub = List.map parse_condition sub in (fun ri -> List.for_all (fun cond -> cond ri) sub) | Element ("and" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("or", [], sub) -> let sub = List.map parse_condition sub in (fun ri -> List.exists (fun cond -> cond ri) sub) | Element ("or" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("not", [], [sub]) -> let sub = parse_condition sub in (fun ri -> not (sub ri)) | Element ("not" as s, _, _) -> badconfig "Bad syntax for tag %s" s | _ -> badconfig "Bad syntax for condition" (*****************************************************************************) (* Parsing filters *) let comma_space_regexp = Netstring_pcre.regexp "\ *,\ *" let parse_config parse_fun = function | Element ("if", [], sub) -> let (condition, sub) = match sub with | cond::q -> (parse_condition cond, q) | _ -> badconfig "Bad condition in " in let (ithen, sub) = match sub with | Element("then", [], ithen)::q -> (parse_fun ithen, q) | _ -> badconfig "Bad branch in " in let (ielse, sub) = match sub with | Element ("else", [], ielse)::([] as q) -> (parse_fun ielse, q) | [] -> (parse_fun [], []) | _ -> badconfig "Bad branch in " in (function | Ocsigen_extensions.Req_found (ri, _) | Ocsigen_extensions.Req_not_found (_, ri) -> Lwt.return (if condition ri.request_info then begin Ocsigen_messages.debug2 "--Access control: => going into branch"; Ocsigen_extensions.Ext_sub_result ithen end else begin Ocsigen_messages.debug2 "--Access control: => going into branch, if any"; Ocsigen_extensions.Ext_sub_result ielse end)) | Element ("if" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("notfound", [], []) -> (fun rs -> Ocsigen_messages.debug2 "--Access control: taking in charge 404"; Lwt.return (Ocsigen_extensions.Ext_stop_all (Ocsigen_cookies.Cookies.empty, 404))) | Element ("notfound" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("nextsite", [], []) -> (function | Ocsigen_extensions.Req_found (_, r) -> Lwt.return (Ocsigen_extensions.Ext_found_stop (fun () -> Lwt.return r)) | Ocsigen_extensions.Req_not_found (err, ri) -> Lwt.return (Ocsigen_extensions.Ext_stop_site (Ocsigen_cookies.Cookies.empty, 404))) | Element ("nexthost", [], []) -> (function | Ocsigen_extensions.Req_found (_, r) -> Lwt.return (Ocsigen_extensions.Ext_found_stop (fun () -> Lwt.return r)) | Ocsigen_extensions.Req_not_found (err, ri) -> Lwt.return (Ocsigen_extensions.Ext_stop_host (Ocsigen_cookies.Cookies.empty, 404))) | Element ("nextsite" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("stop", [], []) -> (function | Ocsigen_extensions.Req_found (_, r) -> Lwt.return (Ocsigen_extensions.Ext_found_stop (fun () -> Lwt.return r)) | Ocsigen_extensions.Req_not_found (err, ri) -> Lwt.return (Ocsigen_extensions.Ext_stop_all (Ocsigen_cookies.Cookies.empty, 404))) | Element ("stop" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("forbidden", [], []) -> (fun rs -> Ocsigen_messages.debug2 "--Access control: taking in charge 403"; Lwt.return (Ocsigen_extensions.Ext_stop_all (Ocsigen_cookies.Cookies.empty, 403))) | Element ("forbidden" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("iffound", [], sub) -> let ext = parse_fun sub in (function | Ocsigen_extensions.Req_found (_, _) -> Lwt.return (Ext_sub_result ext) | Ocsigen_extensions.Req_not_found (err, ri) -> Lwt.return (Ocsigen_extensions.Ext_next err)) | Element ("iffound" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("ifnotfound", [], sub) -> let ext = parse_fun sub in (function | Ocsigen_extensions.Req_found (_, r) -> Lwt.return (Ocsigen_extensions.Ext_found (fun () -> Lwt.return r)) | Ocsigen_extensions.Req_not_found (err, ri) -> Lwt.return (Ext_sub_result ext)) | Element ("ifnotfound", [("code", s)], sub) -> let ext = parse_fun sub in let r = Netstring_pcre.regexp ("^"^s^"$") in (function | Ocsigen_extensions.Req_found (_, r) -> Lwt.return (Ocsigen_extensions.Ext_found (fun () -> Lwt.return r)) | Ocsigen_extensions.Req_not_found (err, ri) -> if Netstring_pcre.string_match r (string_of_int err) 0 <> None then Lwt.return (Ext_sub_result ext) else Lwt.return (Ocsigen_extensions.Ext_next err)) | Element ("ifnotfound" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element ("allow-forward-for", param, _) -> (function | Ocsigen_extensions.Req_found (request, {res_code = code} ) | Ocsigen_extensions.Req_not_found (code, request) -> Ocsigen_messages.debug2 "--Access control: allowed proxy"; let request = try let header = Http_headers.find Http_headers.x_forwarded_for request.request_info.ri_http_frame.frame_header.Http_header.headers in match Netstring_pcre.split comma_space_regexp header with | [] | [_] -> Ocsigen_messages.debug2 ("--Access control: malformed X-Forwarded-For field: "^header); request | original_ip::proxies -> let last_proxy = List.last proxies in let proxy_ip = fst (Ip_address.parse last_proxy) in let equal_ip = proxy_ip = Lazy.force request.request_info.ri_remote_ip_parsed in let need_equal_ip = match param with | [] -> false | ["check-equal-ip",b] -> ( try bool_of_string b with Invalid_argument _ -> badconfig "Bad syntax for argument of tag allow-forward-for" ) | _ -> badconfig "Bad syntax for argument of tag allow-forward-for" in if equal_ip or (not need_equal_ip) then { request with request_info = { request.request_info with ri_remote_ip = original_ip; ri_remote_ip_parsed = lazy (fst (Ip_address.parse original_ip)); ri_forward_ip = proxies; } } else (* the announced ip of the proxy is not its real ip *) ( Ocsigen_messages.warning (Printf.sprintf "--Access control: X-Forwarded-For: host ip ( %s ) does not match the header ( %s )" request.request_info.ri_remote_ip header ); request ) with | Not_found -> request in Lwt.return (Ocsigen_extensions.Ext_continue_with ( request, Ocsigen_cookies.Cookies.empty, code ))) | Element ("allow-forward-proto", _, _) -> (function | Ocsigen_extensions.Req_found (request, {res_code = code} ) | Ocsigen_extensions.Req_not_found (code, request) -> Ocsigen_messages.debug2 "--Access control: allowed proxy for ssl"; let request = try let header = Http_headers.find Http_headers.x_forwarded_proto request.request_info.ri_http_frame.frame_header.Http_header.headers in match String.lowercase header with | "http" -> { request with request_info = { request.request_info with ri_ssl = false; } } | "https" -> { request with request_info = { request.request_info with ri_ssl = true; } } | _ -> Ocsigen_messages.debug2 ("--Access control: malformed X-Forwarded-Proto field: "^header); request with | Not_found -> request in Lwt.return (Ocsigen_extensions.Ext_continue_with ( request, Ocsigen_cookies.Cookies.empty, code ))) | Element (t, _, _) -> raise (Bad_config_tag_for_extension t) | _ -> badconfig "(accesscontrol extension) Bad data" (*****************************************************************************) (** Registration of the extension *) let () = register_extension ~name:"accesscontrol" ~fun_site:(fun _ _ _ _ -> parse_config) ~user_fun_site:(fun _ _ _ _ _ -> parse_config) () ocsigenserver-2.2.0/src/extensions/outputfilter.ml0000644000000000000000000001177212060404165020653 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module outputfilter.ml * Copyright (C) 2008 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (*****************************************************************************) (*****************************************************************************) (* This module allows to rewrite the output sent by the server *) (*****************************************************************************) (*****************************************************************************) open Lwt open Ocsigen_extensions open Simplexmlparser open Ocsigen_headers type outputfilter = | Rewrite_header of (Http_headers.name * Netstring_pcre.regexp * string) | Add_header of (Http_headers.name * string * bool option) let gen filter = function | Req_not_found (code,_) -> return (Ext_next code) | Req_found (ri, res) -> let new_headers = match filter with | Rewrite_header (header, regexp, dest) -> begin try let header_values = Http_headers.find_all header res.Ocsigen_http_frame.res_headers in let h = Http_headers.replace_opt header None res.Ocsigen_http_frame.res_headers in List.fold_left (fun h value -> Http_headers.add header (Netstring_pcre.global_replace regexp dest value) h ) h header_values with | Not_found -> res.Ocsigen_http_frame.res_headers end | Add_header (header, dest, replace) -> begin match replace with | None -> begin try ignore (Http_headers.find header res.Ocsigen_http_frame.res_headers); res.Ocsigen_http_frame.res_headers with | Not_found -> Http_headers.add header dest res.Ocsigen_http_frame.res_headers end | Some false -> Http_headers.add header dest res.Ocsigen_http_frame.res_headers | Some true -> Http_headers.replace header dest res.Ocsigen_http_frame.res_headers end in Lwt.return (Ocsigen_extensions.Ext_found (fun () -> Lwt.return {res with Ocsigen_http_frame.res_headers = new_headers})) (*****************************************************************************) let parse_config = function | Element ("outputfilter", atts, []) -> let rec parse_attrs ((h, r, d, rep) as res) = function | [] -> res | ("header", header)::l when h = None -> parse_attrs (Some header, r, d, rep) l | ("regexp", regexp)::l when r = None -> parse_attrs (h, Some (Netstring_pcre.regexp regexp), d, rep) l | ("dest", dest)::l when d = None -> parse_attrs (h, r, Some dest, rep) l | ("replace", replace)::l when rep = None -> let replace = try bool_of_string replace with | Invalid_argument _ -> raise (Error_in_config_file (Printf.sprintf "Wrong value for attribute replace of : %s. is should be true or false" replace)) in parse_attrs (h, r, d, Some replace ) l | _ -> raise (Error_in_config_file "Wrong attribute for ") in (match parse_attrs (None, None, None, None) atts with | (_, Some _, _, Some _) -> raise (Error_in_config_file "Wrong attributes for : attributes regexp and replace can't be set simultaneously") | (Some h, Some r, Some d, None) -> gen (Rewrite_header (Http_headers.name h, r, d)) | (Some h, None, Some d, rep) -> gen (Add_header (Http_headers.name h, d, rep)) | _ -> raise (Error_in_config_file "Wrong attributes for ")) | Element ("outputfilter", _, _) -> badconfig "Bad syntax for tag " | Element (t, _, _) -> raise (Bad_config_tag_for_extension t) | _ -> raise (Error_in_config_file "Unexpected data in config file") (*****************************************************************************) (** Registration of the extension *) let () = register_extension ~name:"outputfilter" ~fun_site:(fun _ _ _ _ _ -> parse_config) ~user_fun_site:(fun _ _ _ _ _ _ -> parse_config) () ocsigenserver-2.2.0/src/extensions/redirectmod.ml0000644000000000000000000001344112060404165020401 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module redirectmod.ml * Copyright (C) 2007 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (*****************************************************************************) (*****************************************************************************) (* Ocsigen extension for defining page redirections *) (* in the configuration file *) (*****************************************************************************) (*****************************************************************************) (* To compile it: ocamlfind ocamlc -thread -package netstring,ocsigen -c extensiontemplate.ml Then load it dynamically from Ocsigen's config file: *) open Ocsigen_lib open Lwt open Ocsigen_extensions open Simplexmlparser (*****************************************************************************) (* The table of redirections for each virtual server *) type assockind = | Regexp of Netstring_pcre.regexp * string * yesnomaybe (* full url *) * bool (* temporary *) (*****************************************************************************) (** The function that will generate the pages from the request. *) let gen dir = function | Ocsigen_extensions.Req_found _ -> Lwt.return Ocsigen_extensions.Ext_do_nothing | Ocsigen_extensions.Req_not_found (err, ri) -> catch (* Is it a redirection? *) (fun () -> Ocsigen_messages.debug2 "--Redirectmod: Is it a redirection?"; let Regexp (regexp, dest, full, temp) = dir in let redir = let fi full = Ocsigen_extensions.find_redirection regexp full dest ri.request_info.ri_ssl ri.request_info.ri_host ri.request_info.ri_server_port ri.request_info.ri_get_params_string ri.request_info.ri_sub_path_string ri.request_info.ri_full_path_string in match full with | Yes -> fi true | No -> fi false | Maybe -> try fi false with Ocsigen_extensions.Not_concerned -> fi true in Ocsigen_messages.debug (fun () -> "--Redirectmod: YES! "^ (if temp then "Temporary " else "Permanent ")^ "redirection to: "^redir); let empty_result = Ocsigen_http_frame.empty_result () in return (Ext_found (fun () -> Lwt.return {empty_result with Ocsigen_http_frame.res_location = Some redir; Ocsigen_http_frame.res_code= if temp then 302 else 301})) ) (function | Ocsigen_extensions.Not_concerned -> return (Ext_next err) | e -> fail e) (*****************************************************************************) let parse_config = function | Element ("redirect", atts, []) -> let rec parse_attrs ((r, f, d, temp) as res) = function | [] -> res | ("regexp", regexp)::l when r = None -> (* deprecated *) parse_attrs (Some (Netstring_pcre.regexp ("^"^regexp^"$")), Maybe, d, temp) l | ("fullurl", regexp)::l when r = None -> parse_attrs (Some (Netstring_pcre.regexp ("^"^regexp^"$")), Yes, d, temp) l | ("suburl", regexp)::l when r = None -> parse_attrs (Some (Netstring_pcre.regexp ("^"^regexp^"$")), No, d, temp) l | ("dest", dest)::l when d = None -> parse_attrs (r, f, Some dest, temp) l | ("temporary", "temporary")::l -> parse_attrs (r, f, d, true) l | _ -> raise (Error_in_config_file "Wrong attribute for ") in let dir = match parse_attrs (None, Yes, None, false) atts with | (None, _, _, _) -> raise (Error_in_config_file "Missing attribute regexp for ") | (_, _, None, _) -> raise (Error_in_config_file "Missing attribute dest for >") | (Some r, full, Some d, temp) -> Regexp (r, d, full, temp) in gen dir | Element ("redirect" as s, _, _) -> badconfig "Bad syntax for tag %s" s | Element (t, _, _) -> raise (Bad_config_tag_for_extension t) | _ -> raise (Error_in_config_file "(redirectmod extension) Bad data") (*****************************************************************************) (** Registration of the extension *) let () = register_extension ~name:"redirectmod" ~fun_site:(fun _ _ _ _ _ -> parse_config) ~user_fun_site:(fun _ _ _ _ _ _ -> parse_config) () ocsigenserver-2.2.0/src/extensions/cors.ml0000644000000000000000000001361612060404165017052 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module accesscontrol.ml * Copyright (C) 2011 Pierre Chambart * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Handling Cross-Origin Resource Sharing headers *) open Ocsigen_lib open Lwt module OX = Ocsigen_extensions module OMsg = Ocsigen_messages module OFrame = Ocsigen_http_frame module OStream = Ocsigen_stream module Http_header = OFrame.Http_header (*** MAIN FUNCTION ***) let default_frame () = { (OFrame.default_result ()) with OFrame.res_code = 200; OFrame.res_content_length = Some 0L; } type config = { allowed_method : Http_header.http_method list option; (* None means: all method are accepted *) allowed_credentials : bool; max_age : int option; exposed_headers : string list } let default_config = { allowed_method = None; allowed_credentials = false; max_age = None; exposed_headers = [] } exception Refused let add_headers config rq response = match Lazy.force rq.OX.request_info.OX.ri_origin with | None -> return OX.Ext_do_nothing | Some origin -> OMsg.debug (fun () -> Printf.sprintf "CORS: request with origin: %s" origin); let res_headers = response.OFrame.res_headers in let res_headers = Http_headers.add Http_headers.access_control_allow_origin origin res_headers in let res_headers = if config.allowed_credentials then Http_headers.add Http_headers.access_control_allow_credentials "true" res_headers else res_headers in let res_headers = let req_method = Lazy.force rq.OX.request_info.OX.ri_access_control_request_method in match req_method with None -> res_headers | Some request_method -> let allowed_method = match config.allowed_method with | None -> true | Some l -> try List.mem (Framepp.method_of_string request_method) l with | _ -> false in if allowed_method then Http_headers.add Http_headers.access_control_allow_methods request_method res_headers else (OMsg.debug (fun () -> "CORS: Method refused"); raise Refused) in let res_headers = let req_headers = Lazy.force rq.OX.request_info.OX.ri_access_control_request_headers in match req_headers with None -> res_headers | Some request_headers -> Http_headers.add Http_headers.access_control_allow_headers (String.concat ", " request_headers) res_headers in let res_headers = match config.max_age with | None -> res_headers | Some max_age -> Http_headers.add Http_headers.access_control_max_age (string_of_int max_age) res_headers in let res_headers = match config.exposed_headers with | [] -> res_headers | _ -> Http_headers.add Http_headers.access_control_expose_headers (String.concat ", " config.exposed_headers) res_headers in return (OX.Ext_found (fun () -> return { response with OFrame.res_headers })) let main config = function | OX.Req_not_found (_, rq) -> begin match rq.OX.request_info.OX.ri_method with | OFrame.Http_header.OPTIONS -> OMsg.debug (fun () -> "CORS: OPTIONS request"); begin try add_headers config rq (default_frame ()) with | Refused -> OMsg.debug (fun () -> "CORS: Refused request"); Lwt.return OX.Ext_do_nothing end | _ -> Lwt.return OX.Ext_do_nothing end | OX.Req_found (rq,response) -> OMsg.debug (fun () -> "CORS: answered request"); add_headers config rq response (*** EPILOGUE ***) (* registering extension *) open Simplexmlparser let comma_space_regexp = Netstring_pcre.regexp "[[:blank:]\n]*,[[:blank:]\n]*" let parse_attributes config = function | ("credentials",b) -> { config with allowed_credentials = bool_of_string b } | ("max_age",i) -> { config with max_age = Some (int_of_string i) } | ("exposed_headers",h) -> { config with exposed_headers = Netstring_pcre.split comma_space_regexp h } | ("methods",m) -> let l = Netstring_pcre.split comma_space_regexp m in { config with allowed_method = Some (List.map Framepp.method_of_string l) } | (a,_) -> OX.badconfig "Unexpected attribute %s for tag cors" a let parse_config _ _ parse_fun = function | Element ("cors", attrs, []) -> let config = List.fold_left parse_attributes default_config attrs in main config | Element ("cors", _, _) -> OX.badconfig "cors tag should not have children" | Element (t, _, _) -> raise (OX.Bad_config_tag_for_extension t) | _ -> OX.badconfig "Unexpected data in config file" let site_creator (_ : OX.virtual_hosts) _ = parse_config let user_site_creator (_ : OX.userconf_info) = site_creator let () = OX.register_extension ~name:"CORS" ~fun_site:site_creator ~user_fun_site:user_site_creator () ocsigenserver-2.2.0/src/extensions/ocsipersist-dbm/0000755000000000000000000000000012060404165020652 5ustar0000000000000000ocsigenserver-2.2.0/src/extensions/ocsipersist-dbm/Makefile0000644000000000000000000000276212060404165022321 0ustar0000000000000000include ../../../Makefile.config PACKAGE := ${LWT_EXTRA_PACKAGE} \ lwt.unix \ tyxml.parser \ dbm \ LIBS := -I ../../baselib -I ../../http -I ../../server \ ${addprefix -package ,${PACKAGE}} OCAMLC := $(OCAMLFIND) ocamlc${BYTEDBG} ${THREAD} OCAMLOPT := $(OCAMLFIND) ocamlopt ${OPTDBG} ${THREAD} OCAMLDOC := $(OCAMLFIND) ocamldoc OCAMLDEP := $(OCAMLFIND) ocamldep all: byte opt ### byte:: ocsipersist-dbm.cma opt:: ocsipersist-dbm.cmxa ifeq "$(NATDYNLINK)" "YES" opt:: ocsipersist-dbm.cmxs endif PREDEP := ocsipersist.mli ocsipersist-dbm.cma: ocsipersist.cmo $(OCAMLC) -a -o $@ $^ cp ocsipersist.cmi .. cp $@ .. ocsipersist-dbm.cmxa: ocsipersist.cmx $(OCAMLOPT) -a -o $@ $^ cp ocsipersist.cmi .. cp $@ ${patsubst %.cmxa,%.a,$@} .. ocsipersist-dbm.cmxs: ocsipersist-dbm.cmxa $(OCAMLOPT) -shared -linkall -o $@ $^ cp $@ .. ocsipersist.mli: ln -s ../ocsipersist.mli . ### byte:: ocsidbm opt:: ocsidbm.opt ocsidbm: ocsidbm.cmo $(OCAMLC) -linkpkg -o $@ ${LIBS} $^ ocsidbm.opt: ocsidbm.cmx $(OCAMLOPT) -linkpkg -o $@ ${LIBS} $^ ########## %.cmi: %.mli $(OCAMLC) ${LIBS} -c $< %.cmo: %.ml $(OCAMLC) ${LIBS} -c $< %.cmx: %.ml $(OCAMLOPT) ${LIBS} -c $< %.cmxs: %.cmxa $(OCAMLOPT) -shared -linkall -o $@ $< ## Clean up clean: -rm -f *.cm[ioax] *.cmxa *.cmxs *.o *.a *.annot -rm -f ${PREDEP} -rm -f ocsidbm ocsidbm.opt distclean: clean -rm -f *~ \#* .\#* ## Dependencies depend: ${PREDEP} $(OCAMLDEP) ${LIBS} *.mli *.ml > .depend FORCE: -include .depend ocsigenserver-2.2.0/src/extensions/ocsipersist-dbm/ocsipersist.ml0000644000000000000000000002506512060404165023563 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module ocsipersist.ml * Copyright (C) 2007 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (* FIX: the log file is never reopened *) (** Module Ocsipersist: persistent data *) open Ocsidbmtypes open Lwt (** Data are divided into stores. Create one store for your project, where you will save all your data. *) type store = string exception Ocsipersist_error let socketname = "socket" (*****************************************************************************) (** Internal functions: storage directory *) open Simplexmlparser (** getting the directory from config file *) let rec parse_global_config (store, ocsidbm, delayloading as d) = function | [] -> d | Element ("delayloading", [("val", ("true" | "1"))], []) :: ll -> parse_global_config (store, ocsidbm, true) ll | Element ("store", [("dir", s)], []) :: ll -> if store = None then parse_global_config ((Some s), ocsidbm, delayloading) ll else Ocsigen_extensions.badconfig "Ocsipersist: Duplicate tag" | Element ("ocsidbm", [("name", s)], []) :: ll -> if ocsidbm = None then parse_global_config (store, (Some s), delayloading) ll else Ocsigen_extensions.badconfig "Ocsipersist: Duplicate tag" | (Element (s,_,_))::ll -> Ocsigen_extensions.badconfig "Bad tag %s" s | _ -> Ocsigen_extensions.badconfig "Unexpected content inside Ocsipersist config" let (directory, ocsidbm) = (ref ((Ocsigen_config.get_datadir ())^"/ocsipersist"), ref ((Ocsigen_config.get_extdir ())^"/ocsidbm"^Ocsigen_config.native_ext)) (*****************************************************************************) (** Communication with the DB server *) external sys_exit : int -> 'a = "caml_sys_exit" let rec try_connect sname = catch (fun () -> let socket = Lwt_unix.socket Unix.PF_UNIX Unix.SOCK_STREAM 0 in Lwt_unix.connect socket (Unix.ADDR_UNIX sname) >>= fun () -> return socket) (fun _ -> Ocsigen_messages.warning ("Launching a new Ocsidbm process: "^(!ocsidbm)^ " on directory "^(!directory)^"."); let param = [|!ocsidbm; !directory|] in let child () = let log = Unix.openfile (Ocsigen_messages.error_log_path ()) [Unix.O_WRONLY; Unix.O_CREAT; Unix.O_APPEND] 0o640 in Unix.dup2 log Unix.stderr; Unix.close log; let devnull = Unix.openfile "/dev/null" [Unix.O_WRONLY] 0 in Unix.dup2 devnull Unix.stdout; Unix.close devnull; Unix.close Unix.stdin; Unix.execv !ocsidbm param in let pid = Unix.fork () in if pid = 0 then begin (* double fork *) if Unix.fork () = 0 then begin child () end else sys_exit 0; end else Lwt_unix.waitpid [] pid >>= (fun _ -> Lwt_unix.sleep 1.1 >>= (fun () -> let socket = Lwt_unix.socket Unix.PF_UNIX Unix.SOCK_STREAM 0 in Lwt_unix.connect socket (Unix.ADDR_UNIX sname) >>= fun () -> return socket))) let rec get_indescr i = (catch (fun () -> try_connect (!directory^"/"^socketname)) (fun e -> if i = 0 then begin Ocsigen_messages.errlog ("Cannot connect to Ocsidbm. Will continue \ without persistent session support. \ Error message is: "^ (match e with | Unix.Unix_error (a,b,c) -> (Unix.error_message a)^" in "^b^"("^c^")" | _ -> Printexc.to_string e)^ ". Have a look at the logs to see if there is an \ error message from the Ocsidbm process."); fail e end else (Lwt_unix.sleep 2.1) >>= (fun () -> get_indescr (i-1)))) let inch = ref (Lwt.fail (Failure "Ocsipersist not initalised")) let outch = ref (Lwt.fail (Failure "Ocsipersist not initalised")) let init_fun config = let (store, ocsidbmconf, delay_loading) = parse_global_config (None, None, false) config in (match store with | None -> () | Some d -> directory := d); (match ocsidbmconf with | None -> () | Some d -> ocsidbm := d); Ocsigen_messages.warning (if delay_loading then "Asynchronuous initialization of Ocsipersist-dbm (may fail later)" else "Initializing Ocsipersist-dbm..."); let indescr = get_indescr 2 in if delay_loading then ( inch := (indescr >>= fun r -> return (Lwt_chan.in_channel_of_descr r)); outch := (indescr >>= fun r -> return (Lwt_chan.out_channel_of_descr r)); ) else ( let r = Lwt_unix.run indescr in inch := return (Lwt_chan.in_channel_of_descr r); outch := return (Lwt_chan.out_channel_of_descr r); Ocsigen_messages.warning "...Initialization of Ocsipersist-dbm complete"; ) let send = let previous = ref (return Ok) in fun v -> catch (fun () -> !previous) (fun _ -> return Ok) >>= (fun _ -> !inch >>= fun inch -> !outch >>= fun outch -> previous := (Lwt_chan.output_value outch v >>= fun () -> Lwt_chan.flush outch >>= fun () -> Lwt_chan.input_value inch); !previous) let db_get (store, name) = send (Get (store, name)) >>= (function | Value v -> return v | Dbm_not_found -> fail Not_found | Error e -> fail e | _ -> fail Ocsipersist_error) let db_remove (store, name) = send (Remove (store, name)) >>= (function | Ok -> return () | Error e -> fail e | _ -> fail Ocsipersist_error) let db_replace (store, name) value = send (Replace (store, name, value)) >>= (function | Ok -> return () | Error e -> fail e | _ -> fail Ocsipersist_error) let db_replace_if_exists (store, name) value = send (Replace_if_exists (store, name, value)) >>= (function | Ok -> return () | Dbm_not_found -> fail Not_found | Error e -> fail e | _ -> fail Ocsipersist_error) let db_firstkey store = send (Firstkey store) >>= (function | Key k -> return (Some k) | Error e -> fail e | _ -> return None) let db_nextkey store = send (Nextkey store) >>= (function | Key k -> return (Some k) | Error e -> fail e | _ -> return None) let db_length store = send (Length store) >>= (function | Value v -> return (Marshal.from_string v 0) | Dbm_not_found -> return 0 | Error e -> fail e | _ -> fail Ocsipersist_error) (*****************************************************************************) (** Public functions: *) (** Type of persistent data *) type 'a t = store * string let open_store name : store = name let make_persistent_lazy ~store ~name ~default = let pvname = (store, name) in (catch (fun () -> db_get pvname >>= (fun _ -> return ())) (function | Not_found -> let def = Marshal.to_string (default ()) [] in db_replace pvname def | e -> fail e)) >>= (fun () -> return pvname) let make_persistent ~store ~name ~default = make_persistent_lazy ~store ~name ~default:(fun () -> default) let get (pvname : 'a t) : 'a = db_get pvname >>= (fun r -> return (Marshal.from_string r 0)) let set pvname v = let data = Marshal.to_string v [] in db_replace pvname data (** Type of persistent tables *) type 'value table = string let open_table name = name let table_name n = Lwt.return n let find table key = db_get (table, key) >>= (fun v -> return (Marshal.from_string v 0)) let add table key value = let data = Marshal.to_string value [] in db_replace (table, key) data let replace_if_exists table key value = let data = Marshal.to_string value [] in db_replace_if_exists (table, key) data let remove table key = db_remove (table, key) let iter_table f table = let rec aux nextkey = nextkey table >>= (function | None -> return () | Some k -> find table k >>= f k >>= (fun () -> aux db_nextkey)) in aux db_firstkey let iter_step = iter_table let fold_table f table beg = let rec aux nextkey beg = nextkey table >>= (function | None -> return beg | Some k -> find table k >>= fun r -> f k r beg >>= (fun res -> aux db_nextkey res)) in aux db_firstkey beg let fold_step = fold_table let iter_block a b = failwith "iter_block not implemented for DBM. Please use Ocsipersist with sqlite" (* iterator: with a separate connexion: exception Exn1 let iter_table f table = let first = Marshal.to_string (Firstkey table) [] in let firstl = String.length first in let next = Marshal.to_string (Nextkey table) [] in let nextl = String.length next in (Lwt_unix.socket Unix.PF_UNIX Unix.SOCK_STREAM 0 >>= (fun socket -> Lwt_unix.connect (Lwt_unix.Plain socket) (Unix.ADDR_UNIX (directory^"/"^socketname)) >>= (fun () -> return (Lwt_unix.Plain socket)) >>= (fun indescr -> let inch = Lwt_unix.in_channel_of_descr indescr in let nextkey next nextl = Lwt_unix.write indescr next 0 nextl >>= (fun l2 -> if l2 <> nextl then fail Ocsipersist_error else (Lwt_unix.input_line inch >>= fun answ -> return (Marshal.from_string answ 0))) in let rec aux n l = nextkey n l >>= (function | End -> return () | Key k -> find table k >>= f k | Error e -> fail e | _ -> fail Ocsipersist_error) >>= (fun () -> aux next nextl) in catch (fun () -> aux first firstl >>= (fun () -> Unix.close socket; return ())) (fun e -> Unix.close socket; fail e)))) *) let length table = db_length table (* Because of Dbm implementation, the result may be less thann the expected result in some case (with a version of ocsipersist based on Dbm) *) let _ = Ocsigen_extensions.register_extension ~name:"ocsipersist" ~init_fun () ocsigenserver-2.2.0/src/extensions/ocsipersist-dbm/ocsidbmtypes.mli0000644000000000000000000000225412060404165024065 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Copyright (C) 2007 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) exception Ocsidbm_error type query = | Get of string * string | Remove of string * string | Replace of string * string * string | Replace_if_exists of string * string * string | Nextkey of string | Firstkey of string | Length of string type answer = | Ok | Dbm_not_found | Value of string | End | Key of string | Error of exn ocsigenserver-2.2.0/src/extensions/ocsipersist-dbm/ocsidbm.ml0000644000000000000000000002270212060404165022627 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module ocsidbm.ml * Copyright (C) 2007 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Module Ocsidbm: persistent data server for Ocsigen *) open Dbm open Ocsidbmtypes open Lwt let directory = Sys.argv.(1) exception Ocsidbm_error let socketname = "socket" let suffix = ".otbl" (*****************************************************************************) (* error messages *) let errlog s = let date = let t = Unix.localtime (Unix.time ()) in Printf.sprintf "%02d-%02d-%04d %02d:%02d:%02d" t.Unix.tm_mday (t.Unix.tm_mon + 1) (1900 + t.Unix.tm_year) t.Unix.tm_hour t.Unix.tm_min t.Unix.tm_sec in let s = date^" Ocsidbm - "^s^"\n" in prerr_endline s (*****************************************************************************) (** Internal functions: storage in files using DBM *) module Tableoftables = Map.Make(struct type t = string let compare = compare end) let tableoftables = ref Tableoftables.empty let list_tables () = let d = try Unix.opendir directory with | Unix.Unix_error(error,_,_) -> failwith ( Printf.sprintf "Ocsidbm: can't open directory %s: %s" directory (Unix.error_message error)) in let rec aux () = try let n = Unix.readdir d in if Filename.check_suffix n suffix then (Filename.chop_extension n)::(aux ()) else if Filename.check_suffix n (suffix^".pag") (* depending on the version of dbm, there may be a .pag suffix *) then (Filename.chop_extension (Filename.chop_extension n))::(aux ()) else aux () with End_of_file -> Unix.closedir d; [] in aux () (* try to create the directory if it does not exist *) let _ = try Unix.access directory [Unix.R_OK; Unix.W_OK; Unix.X_OK; Unix.F_OK] with | Unix.Unix_error (Unix.ENOENT, _, _) -> begin try Unix.mkdir directory 0o750 with | Unix.Unix_error(error,_,_) -> failwith ( Printf.sprintf "Ocsidbm: can't create directory %s: %s" directory (Unix.error_message error) ) end | Unix.Unix_error(error,_,_) -> failwith ( Printf.sprintf "Ocsidbm: can't access directory %s: %s" directory (Unix.error_message error) ) let open_db name = let t = opendbm (directory^"/"^name^suffix) [Dbm_rdwr; Dbm_create] 0o640 in tableoftables := Tableoftables.add name t !tableoftables; t let open_db_if_exists name = try let t = opendbm (directory^"/"^name^suffix) [Dbm_rdwr] 0o640 in tableoftables := Tableoftables.add name t !tableoftables; t with | Unix.Unix_error (Unix.ENOENT, _, _) | Dbm.Dbm_error _ -> raise Not_found (* open all files and register them in the table of tables *) (* let _ = List.iter (fun a -> try ignore (open_db a) with ... -> errlog ("Error while openning database "^a)) (list_tables ()) si je remets ça, ça doit être après la création de la socket car si je n'arrive pas à créer la socket, c'est peut-être que les tables sont déjà ouvertes *) let find_create_table name = try Tableoftables.find name !tableoftables with Not_found -> open_db name let find_dont_create_table name = try Tableoftables.find name !tableoftables with Not_found -> open_db_if_exists name let db_get store name = find (find_dont_create_table store) name let db_remove store name = try remove (find_dont_create_table store) name with | Not_found -> () | Dbm.Dbm_error "dbm_delete" -> () let db_replace store name value = replace (find_create_table store) name value let db_firstkey t = Dbm.firstkey (find_dont_create_table t) let db_nextkey t = Dbm.nextkey (find_dont_create_table t) let db_length t = let table = find_dont_create_table t in let rec aux f n = catch (fun () -> ignore (f table); Lwt_unix.yield () >>= (fun () -> aux Dbm.nextkey (n+1))) (function | Not_found -> return n | e -> fail e) in aux Dbm.firstkey 0 (* Because of Dbm implementation, the result may be less than the expected result in some case *) (*****************************************************************************) (* signals *) let close_all i _ = Unix.unlink (directory^"/"^socketname); Tableoftables.iter (fun k t -> Dbm.close t) !tableoftables; exit i let the_end i = exit i open Sys let sigs = [sigabrt;sigalrm;sigfpe;sighup;sigill;sigint; sigquit;sigsegv;sigterm;sigusr1;sigusr2; sigchld;sigttin;sigttou;sigvtalrm;sigprof] let _ = List.iter (fun s -> Sys.set_signal s (Signal_handle (close_all 0))) sigs let _ = Sys.set_signal Sys.sigpipe Sys.Signal_ignore let _ = Unix.setsid () (*****************************************************************************) (** Communication functions: *) let send outch v = Lwt_chan.output_value outch v >>= (fun () -> Lwt_chan.flush outch) let execute outch = let handle_errors f = try f () with e -> send outch (Error e) in function | Get (t, k) -> handle_errors (fun () -> try send outch (Value (db_get t k)) with | Not_found -> send outch Dbm_not_found) | Remove (t, k) -> handle_errors (fun () -> db_remove t k; send outch Ok) | Replace (t, k, v) -> handle_errors (fun () -> db_replace t k v; send outch Ok) | Replace_if_exists (t, k, v) -> handle_errors (fun () -> try ignore (db_get t k); db_replace t k v; send outch Ok with Not_found -> send outch Dbm_not_found) | Firstkey t -> handle_errors (fun () -> try send outch (Key (db_firstkey t)) with Not_found -> send outch End) | Nextkey t -> handle_errors (fun () -> try send outch (Key (db_nextkey t)) with Not_found -> send outch End) | Length t -> handle_errors (fun () -> catch (fun () -> db_length t >>= (fun i -> send outch (Value (Marshal.to_string i [])))) (function Not_found -> send outch Dbm_not_found | e -> send outch (Error e))) let nb_clients = ref 0 let rec listen_client inch outch = Lwt_chan.input_value inch >>= (fun v -> execute outch v) >>= (fun () -> listen_client inch outch) let finish _ = nb_clients := !nb_clients - 1; if !nb_clients = 0 then close_all 0 (); return () let b = ref false let rec loop socket = Lwt_unix.accept socket >>= (fun (indescr, _) -> ignore ( b := true; nb_clients := !nb_clients + 1; let inch = Lwt_chan.in_channel_of_descr indescr in let outch = Lwt_chan.out_channel_of_descr indescr in catch (fun () -> listen_client inch outch >>= finish) finish); loop socket) let _ = Lwt_unix.run (let socket = Lwt_unix.socket Unix.PF_UNIX Unix.SOCK_STREAM 0 in (try Lwt_unix.bind socket (Unix.ADDR_UNIX (directory^"/"^socketname)) with _ -> errlog ("Please make sure that the directory "^directory^" exists, writable for ocsidbm, and no other ocsidbm process is running on the same directory. If not, remove the file "^(directory^"/"^socketname)); the_end 1); Lwt_unix.listen socket 20; (* Done in ocsipersist.ml let devnull = Unix.openfile "/dev/null" [Unix.O_WRONLY] 0 in Unix.dup2 devnull Unix.stdout; Unix.dup2 devnull Unix.stderr; Unix.close devnull; Unix.close Unix.stdin; *) ignore (Lwt_unix.sleep 4.1 >>= (fun () -> if not !b then close_all 0 (); return ())); (* If nothing happened during 5 seconds, I quit *) loop socket) (*****************************************************************************) (** Garbage collection of expired data *) (* Experimental exception Exn1 let dbm_fold f t beg = let rec aux nextkey beg = try let k = try nextkey t with Not_found -> raise Exn1 in let v = try Dbm.find k t with Not_found -> raise Exn1 in aux Dbm.nextkey (f k v beg) with Exn1 -> beg in aux Dbm.firstkey beg let _ = match sessiongcfrequency with None -> () (* No garbage collection *) | Some t -> let rec f () = Lwt_unix.sleep t >>= (fun () -> let now = Unix.time () in print_endline "GC of persistent data"; Tableoftables.fold (fun name t thr -> thr >>= (fun () -> dbm_fold (fun k v thr -> thr >>= (fun () -> (match fst (Marshal.from_string v 0) with | Some exp when exp < now -> try Dbm.remove t k with _ -> ()); Lwt_unix.yield () ) ) t (return ())) ) !tableoftables (return ()) ) >>= f in ignore (f ()) *) ocsigenserver-2.2.0/src/extensions/ocsipersist-dbm/.depend0000644000000000000000000000065312060404165022116 0ustar0000000000000000ocsidbmtypes.cmi: ocsipersist.cmi: ocsidbm.cmo: ocsidbmtypes.cmi ocsidbm.cmx: ocsidbmtypes.cmi ocsipersist.cmo: ../../baselib/ocsigen_messages.cmi \ ../../server/ocsigen_extensions.cmi ../../baselib/ocsigen_config.cmi \ ocsidbmtypes.cmi ocsipersist.cmi ocsipersist.cmx: ../../baselib/ocsigen_messages.cmx \ ../../server/ocsigen_extensions.cmx ../../baselib/ocsigen_config.cmx \ ocsidbmtypes.cmi ocsipersist.cmi ocsigenserver-2.2.0/src/extensions/ocsipersist-sqlite/0000755000000000000000000000000012060404165021411 5ustar0000000000000000ocsigenserver-2.2.0/src/extensions/ocsipersist-sqlite/Makefile0000644000000000000000000000245612060404165023060 0ustar0000000000000000include ../../../Makefile.config PACKAGE := lwt.preemptive \ tyxml.parser \ sqlite3 \ LIBS := -I ../../baselib -I ../../http -I ../../server \ ${addprefix -package ,${PACKAGE}} OCAMLC := $(OCAMLFIND) ocamlc${BYTEDBG} ${THREAD} OCAMLOPT := $(OCAMLFIND) ocamlopt ${OPTDBG} ${THREAD} OCAMLDOC := $(OCAMLFIND) ocamldoc OCAMLDEP := $(OCAMLFIND) ocamldep all: byte opt ### byte: ocsipersist-sqlite.cma opt:: ocsipersist-sqlite.cmxa ifeq "$(NATDYNLINK)" "YES" opt:: ocsipersist-sqlite.cmxs endif PREDEP := ocsipersist.mli ocsipersist-sqlite.cma: ocsipersist.cmo $(OCAMLC) -a -o $@ $^ cp ocsipersist.cmi .. cp $@ .. ocsipersist-sqlite.cmxa: ocsipersist.cmx $(OCAMLOPT) -a -o $@ $^ cp ocsipersist.cmi .. cp $@ ${patsubst %.cmxa,%.a,$@} .. ocsipersist-sqlite.cmxs: ocsipersist-sqlite.cmxa $(OCAMLOPT) -shared -linkall -o $@ $^ cp $@ .. ocsipersist.mli: ln -s ../ocsipersist.mli . ########## %.cmi: %.mli $(OCAMLC) ${LIBS} -c $< %.cmo: %.ml $(OCAMLC) ${LIBS} -c $< %.cmx: %.ml $(OCAMLOPT) ${LIBS} -c $< %.cmxs: %.cmxa $(OCAMLOPT) -shared -linkall -o $@ $< ## Clean up clean: -rm -f *.cm[ioax] *.cmxa *.cmxs *.o *.a *.annot -rm -f ${PREDEP} distclean: clean -rm -f *~ \#* .\#* ## Dependencies depend: ${PREDEP} $(OCAMLDEP) ${LIBS} *.mli *.ml > .depend FORCE: -include .depend ocsigenserver-2.2.0/src/extensions/ocsipersist-sqlite/ocsipersist.ml0000644000000000000000000002323312060404165024315 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module ocsipersist.ml * Copyright (C) 2007 Vincent Balat - Gabriel Kerneis * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Module Ocsipersist: persistent data *) open Lwt open Sqlite3 open Printf (** Data are divided into stores. Create one store for your project, where you will save all your data. *) type store = string Lwt.t exception Ocsipersist_error (*****************************************************************************) open Simplexmlparser (** getting the directory from config file *) let rec parse_global_config = function | [] -> None | (Element ("database", [("file", s)], []))::[] -> Some s | _ -> raise (Ocsigen_extensions.Error_in_config_file ("Unexpected content inside Ocsipersist config")) (* This reference is overwritten when the init function (at the end of the file) is run, which occurs when the extension is loaded *) let db_file = ref ((Ocsigen_config.get_datadir ())^"/ocsidb") (*****************************************************************************) (** Useful functions on database *) let yield () = Thread.yield () let rec bind_safely stmt = function | [] -> stmt | (value, name)::q as l -> match Sqlite3.bind stmt (bind_parameter_index stmt name) value with | Rc.OK -> bind_safely stmt q | Rc.BUSY | Rc.LOCKED -> yield () ; bind_safely stmt l | rc -> ignore(finalize stmt) ; failwith (Rc.to_string rc) let close_safely db = if not (db_close db) then ignore (Ocsigen_messages.errlog "Couldn't close database") let m = Mutex.create () let exec_safely f = let aux () = let db = Mutex.lock m ; try db_open !db_file with e -> Mutex.unlock m; raise e in (try let r = f db in close_safely db ; Mutex.unlock m ; r with e -> ( close_safely db ; Mutex.unlock m ; raise e)) in Lwt_preemptive.detach aux () (* Référence indispensable pour les codes de retours et leur signification : * http://sqlite.org/capi3ref.html * Langage compris par SQLite : http://www.sqlite.org/lang.html *) let db_create table = let sql = sprintf "CREATE TABLE IF NOT EXISTS %s (key TEXT, value BLOB, PRIMARY KEY(key) ON CONFLICT REPLACE)" table in let create db = let stmt = prepare db sql in let rec aux () = match step stmt with | Rc.DONE -> ignore(finalize stmt) | Rc.BUSY | Rc.LOCKED -> yield () ; aux () | rc -> ignore(finalize stmt) ; failwith (Rc.to_string rc) in aux () in exec_safely create >>= fun () -> return table let db_remove (table, key) = let sql = sprintf "DELETE FROM %s WHERE key = :key " table in let remove db = let stmt = bind_safely (prepare db sql) [Data.TEXT key,":key"] in let rec aux () = match step stmt with | Rc.DONE -> ignore(finalize stmt) | Rc.BUSY | Rc.LOCKED -> yield () ; aux () | rc -> ignore(finalize stmt) ; failwith (Rc.to_string rc) in aux () in exec_safely remove let (db_get, db_replace, db_replace_if_exists) = let get (table, key) db = let sqlget = sprintf "SELECT value FROM %s WHERE key = :key " table in let stmt = bind_safely (prepare db sqlget) [Data.TEXT key,":key"] in let rec aux () = match step stmt with | Rc.ROW -> let value = match column stmt 0 with | Data.BLOB s -> s | _ -> assert false in ignore (finalize stmt); value | Rc.DONE -> ignore(finalize stmt) ; raise Not_found | Rc.BUSY | Rc.LOCKED -> yield () ; aux () | rc -> ignore(finalize stmt) ; failwith (Rc.to_string rc) in aux () in let replace (table, key) value db = let sqlreplace = sprintf "INSERT INTO %s VALUES ( :key , :value )" table in let stmt = bind_safely (prepare db sqlreplace) [Data.TEXT key,":key"; Data.BLOB value, ":value"] in let rec aux () = match step stmt with | Rc.DONE -> ignore(finalize stmt) | Rc.BUSY | Rc.LOCKED -> yield () ; aux () | rc -> ignore(finalize stmt) ; failwith (Rc.to_string rc) in aux () in ((fun tablekey -> exec_safely (get tablekey)), (fun tablekey value -> exec_safely (replace tablekey value)), (fun tablekey value -> exec_safely (fun db -> ignore (get tablekey db); replace tablekey value db))) let db_iter_step table rowid = let sql = sprintf "SELECT key , value , ROWID FROM %s WHERE ROWID > :rowid" table in let iter db = let stmt = bind_safely (prepare db sql) [Data.INT rowid, ":rowid"] in let rec aux () = match step stmt with | Rc.ROW -> (match (column stmt 0,column stmt 1, column stmt 2) with | (Data.TEXT k, Data.BLOB v, Data.INT rowid) -> ignore(finalize stmt) ; Some (k, v, rowid) | _ -> assert false ) | Rc.DONE -> ignore(finalize stmt) ; None | Rc.BUSY | Rc.LOCKED -> yield () ; aux () | rc -> ignore(finalize stmt) ; failwith (Rc.to_string rc) in aux () in exec_safely iter let db_iter_block table f = let sql = sprintf "SELECT key , value FROM %s " table in let iter db = let stmt = prepare db sql in let rec aux () = match step stmt with | Rc.ROW -> (match (column stmt 0,column stmt 1) with | (Data.TEXT k, Data.BLOB v) -> f k (Marshal.from_string v 0); aux() | _ -> assert false ) | Rc.DONE -> ignore(finalize stmt) | Rc.BUSY | Rc.LOCKED -> yield () ; aux () | rc -> ignore(finalize stmt) ; failwith (Rc.to_string rc) in aux () in exec_safely iter let db_length table = let sql = sprintf "SELECT count(*) FROM %s " table in let length db = let stmt = prepare db sql in let rec aux () = match step stmt with | Rc.ROW -> let value = match column stmt 0 with | Data.INT s -> Int64.to_int s | _ -> assert false in ignore (finalize stmt); value | Rc.DONE -> ignore(finalize stmt) ; raise Not_found | Rc.BUSY | Rc.LOCKED -> yield () ; aux () | rc -> ignore(finalize stmt) ; failwith (Rc.to_string rc) in aux () in exec_safely length (*****************************************************************************) (** Public functions: *) (** Type of persistent data *) type 'a t = string * string let open_store name : store = let s = "store___"^name in db_create s let make_persistent_lazy ~store ~name ~default = store >>= fun store -> let pvname = (store, name) in (catch (fun () -> db_get pvname >>= (fun _ -> return ())) (function | Not_found -> let def = Marshal.to_string (default ()) [] in db_replace pvname def | e -> fail e)) >>= (fun () -> return pvname) let make_persistent ~store ~name ~default = make_persistent_lazy ~store ~name ~default:(fun () -> default) let get (pvname : 'a t) : 'a = db_get pvname >>= (fun r -> return (Marshal.from_string r 0)) let set pvname v = let data = Marshal.to_string v [] in db_replace pvname data (** Type of persistent tables *) type 'value table = string Lwt.t (** name SHOULD NOT begin with "store___" *) let open_table name = db_create name let table_name table = table let find table key = table >>= fun table -> db_get (table, key) >>= fun v -> return (Marshal.from_string v 0) let add table key value = table >>= fun table -> let data = Marshal.to_string value [] in db_replace (table, key) data let replace_if_exists table key value = table >>= fun table -> let data = Marshal.to_string value [] in db_replace_if_exists (table, key) data let remove table key = table >>= fun table -> db_remove (table, key) let iter_step f table = table >>= fun table -> let rec aux rowid = db_iter_step table rowid >>= (function | None -> return () | Some (k,v,rowid') -> f k (Marshal.from_string v 0) >>= (fun () -> aux rowid')) in aux Int64.zero let fold_step f table beg = table >>= fun table -> let rec aux rowid beg = db_iter_step table rowid >>= (function | None -> return beg | Some (k, v, rowid') -> f k (Marshal.from_string v 0) beg >>= (fun res -> aux rowid' res)) in aux Int64.zero beg let iter_block f table = table >>= fun table -> db_iter_block table f let iter_table = iter_step let fold_table = fold_step let length table = table >>= fun table -> db_length table (* Registration of the extension *) let init config = db_file := Ocsigen_config.get_datadir () ^"/ocsidb"; (match parse_global_config config with | None -> () | Some d -> db_file := d ); (* We check that we can access the database *) try Lwt_unix.run (exec_safely (fun _ -> ())) with e -> Ocsigen_messages.errlog (Printf.sprintf "Error opening database file '%s' when registering Ocsipersist. \ Check that the directory exists, and that Ocsigen has enough \ rights" !db_file); raise e let _ = Ocsigen_extensions.register_extension ~name:"ocsipersist" ~init_fun:init () ocsigenserver-2.2.0/src/extensions/ocsipersist-sqlite/.depend0000644000000000000000000000047312060404165022655 0ustar0000000000000000ocsipersist.cmi: ocsipersist.cmo: ../../baselib/ocsigen_messages.cmi \ ../../server/ocsigen_extensions.cmi ../../baselib/ocsigen_config.cmi \ ocsipersist.cmi ocsipersist.cmx: ../../baselib/ocsigen_messages.cmx \ ../../server/ocsigen_extensions.cmx ../../baselib/ocsigen_config.cmx \ ocsipersist.cmi ocsigenserver-2.2.0/src/baselib/0000755000000000000000000000000012060404165014745 5ustar0000000000000000ocsigenserver-2.2.0/src/baselib/ocsigen_messages.ml0000644000000000000000000001756312060404165020631 0ustar0000000000000000(* Ocsigen * Copyright (C) 2005 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Writing messages in the logs *) let (>>=) = Lwt.bind let access_file = "access.log" let warning_file = "warnings.log" let error_file = "errors.log" let full_path f = Filename.concat (Ocsigen_config.get_logdir ()) f let error_log_path () = full_path error_file let stderr = Lwt_log.channel `Keep Lwt_io.stderr () let loggers = ref [] let open_files ?(user = Ocsigen_config.get_user ()) ?(group = Ocsigen_config.get_group ()) () = (* CHECK: we are closing asynchronously! That should be ok, though. *) List.iter (fun l -> ignore (Lwt_log.close l : unit Lwt.t)) !loggers; let open_log path = let path = full_path path in try_lwt Lwt_log.file path () with | Unix.Unix_error(error,_,_) -> raise_lwt (Ocsigen_config.Config_file_error ( Printf.sprintf "can't open log file %s: %s" path (Unix.error_message error))) in lwt acc = open_log access_file in lwt war = open_log warning_file in lwt err = open_log error_file in loggers := [acc; war; err]; Lwt_log.default := Lwt_log.broadcast [Lwt_log.dispatch (fun sect lev -> if Lwt_log.Section.name sect = "access" then acc else match lev with Lwt_log.Error | Lwt_log.Fatal -> err | _ -> war); Lwt_log.dispatch (fun sect lev -> let show = match lev with Lwt_log.Error | Lwt_log.Fatal -> not (Ocsigen_config.get_silent ()) | _ -> Ocsigen_config.get_verbose () in if show then stderr else Lwt_log.null)]; let gid = match group with | None -> Unix.getgid () | Some group -> (try (Unix.getgrnam group).Unix.gr_gid with Not_found as e -> ignore (Lwt_log.error "Error: Wrong group"); raise e) in let uid = match user with | None -> Unix.getuid () | Some user -> (try (Unix.getpwnam user).Unix.pw_uid with Not_found as e -> ignore (Lwt_log.error "Error: Wrong user"); raise e) in lwt () = Lwt_unix.chown (full_path access_file) uid gid in lwt () = Lwt_unix.chown (full_path warning_file) uid gid in lwt () = Lwt_unix.chown (full_path error_file) uid gid in Lwt.return () (****) let access_sect = Lwt_log.Section.make "access" let accesslog s = ignore (Lwt_log.notice ~section:access_sect s : unit Lwt.t) let errlog s = ignore (Lwt_log.error s : unit Lwt.t) let warning s = ignore (Lwt_log.warning s : unit Lwt.t) let unexpected_exception e s = warning ("Unexpected exception in "^s^": "^Printexc.to_string e) (****) let debug_noel = if Ocsigen_config.get_veryverbose () then (fun s -> Pervasives.prerr_string (s ())) else (fun s -> ()) let debug_noel2 = if Ocsigen_config.get_veryverbose () then Pervasives.prerr_string else (fun s -> ()) let debug = if Ocsigen_config.get_veryverbose () then (fun s -> Pervasives.prerr_endline (s ())) else (fun s -> ()) let debug2 = if Ocsigen_config.get_veryverbose () then Pervasives.prerr_endline else (fun s -> ()) let bip = if Ocsigen_config.get_veryverbose () then (fun i -> Pervasives.prerr_endline ("bip"^(string_of_int i))) else (fun i -> ()) let console = if (not (Ocsigen_config.get_silent ())) then (fun s -> print_endline (s ())) else (fun s -> ()) let console2 = if (not (Ocsigen_config.get_silent ())) then print_endline else (fun s -> ()) (* Re: [Caml-list] log function without evaluate arguments From: tmp123 To: caml-list@inria.fr Date: Nov 7 2007, 10:37 am Hello, Thanks a lot to everybody for your help. I've been testing the different proposals. I must recognize I've not yet reviewed the proposed library, it is next step. The four methods tested are: lazy, fun, ifprint, and fun moving the "if" to the caller (see full listing and results at the end of the post). Two test has been done for each one: when parameter is an integer constant and when parameter is the result of a funcion call who mades an addition. The conclusion seems: defining that "lazy" method needs 1 unit of time, proposal using "fun" instead of lazy needs 0.8, and the version "ifprintf" needs 16. Proposal moving the "if" needs 0.7. Thus, if no error has been done, fun is the fastest option, lazy is near. Another point is the posibility of, using a camlp4 syntax extension, to introduce a few of sugar. Something like expand: from: log "some=%d\n" 14; to: logint ( fun () -> Printf.printf "some=%d\n" 14); or to: if log_active.val then logint ( fun() -> Printf.printf "some=%d\n" 14) else (); Thanks again to everybody. Full listing and results: value log_active = ref False; value log1 exp = if log_active.val then Lazy.force exp else (); value log2 exp = if log_active.val then exp() else (); value log3 fmt = if log_active.val then Printf.printf fmt else Printf.ifprintf stderr fmt; value log4 exp = exp (); value suma a b = ( a+b; ); value some = ref 14; value test1 () = log1 (lazy (Printf.printf "%d" (suma some.val 3))); value test2 () = log2 ( fun () -> Printf.printf "%d" (suma some.val 3)); value test3 () = log3 "%d" (suma some.val 3); value test4 () = if log_active.val then log4 ( fun () -> Printf.printf "%d" (suma some.val 3)) else (); value testb1 () = log1 (lazy (Printf.printf "%d" 3)); value testb2 () = log2 ( fun () -> Printf.printf "%d" 3); value testb3 () = log3 "%d" 3; value testb4 () = if log_active.val then log4 ( fun () -> Printf.printf "%d" 3) else (); value loop f = ( let t=Unix.times() in Printf.printf "%f %f %f\n" (Unix.gettimeofday()) t.Unix.tms_utime t.Unix.tms_stime; for i = 0 to 1000 do for j = 0 to 1000000 do f (); done; done; let t=Unix.times() in Printf.printf "%f %f %f\n" (Unix.gettimeofday()) t.Unix.tms_utime t.Unix.tms_stime; ); value main () = ( Printf.printf "test1\n"; loop test1; Printf.printf "test2\n"; loop test2; Printf.printf "test3\n"; loop test3; Printf.printf "test4\n"; loop test4; Printf.printf "\n"; Printf.printf "testb1\n"; loop testb1; Printf.printf "testb2\n"; loop testb2; Printf.printf "testb3\n"; loop testb3; Printf.printf "testb4\n"; loop testb4; ); main(); Results: test1 1194426404.657406 0.015000 0.000000 1194426414.136406 9.453000 0.000000 test2 1194426414.137406 9.468000 0.000000 1194426422.147406 17.453000 0.000000 test3 1194426422.147406 17.453000 0.000000 1194426593.308406 188.515000 0.000000 test4 1194426593.308406 188.515000 0.000000 1194426599.964406 195.156000 0.000000 testb1 1194426599.964406 195.156000 0.000000 1194426609.408406 204.609000 0.000000 testb2 1194426609.408406 204.609000 0.000000 1194426617.378406 212.578000 0.000000 testb3 1194426617.378406 212.578000 0.000000 1194426790.412406 385.484000 0.000000 testb4 1194426790.412406 385.484000 0.000000 1194426797.060406 392.125000 0.000000 ------------- _______________________________________________ Caml-list mailing list. *) ocsigenserver-2.2.0/src/baselib/ocsigen_commandline.ml0000644000000000000000000000424112060404165021275 0ustar0000000000000000(* Ocsigen * Copyright (C) 2005 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) open Ocsigen_config let cmdline : unit = try Arg.parse_argv Ocsigen_getcommandline.commandline [("-c", Arg.String set_configfile, "Alternate config file (default "^ Ocsigen_config.get_config_file() ^")"); ("--config", Arg.String set_configfile, "Alternate config file (default "^ Ocsigen_config.get_config_file() ^")"); ("-s", Arg.Unit set_silent, "Silent mode (error messages in errors.log only)"); ("--silent", Arg.Unit set_silent, "Silent mode (error messages in errors.log only)"); ("-p", Arg.String set_pidfile, "Specify a file where to write the PIDs of servers"); ("--pidfile", Arg.String set_pidfile, "Specify a file where to write the PIDs of servers"); ("-v", Arg.Unit set_verbose, "Verbose mode"); ("--verbose", Arg.Unit set_verbose, "Verbose mode"); ("-V", Arg.Unit set_veryverbose, "Very verbose mode (debug)"); ("--veryverbose", Arg.Unit set_veryverbose, "Very verbose mode (debug)"); ("-d", Arg.Unit set_daemon, "Daemon mode (detach the process)"); ("--daemon", Arg.Unit set_daemon, "Daemon mode (detach the process) (This is the default when there are more than 1 process)"); ("--version", Arg.Unit display_version, "Display version number and exit") ] (fun _ -> ()) "usage: ocsigen [-c configfile]" with Arg.Help s -> print_endline s; exit 0 ocsigenserver-2.2.0/src/baselib/Makefile0000644000000000000000000000751012060404165016410 0ustar0000000000000000include ../../Makefile.config LIBS := -package lwt.unix,netstring,cryptokit,findlib,tyxml,lwt.syntax,${LWT_EXTRA_PACKAGE} OCAMLC := $(OCAMLFIND) ocamlc${BYTEDBG} ${THREAD} OCAMLOPT := $(OCAMLFIND) ocamlopt ${OPTDBG} ${THREAD} OCAMLDOC := $(OCAMLFIND) ocamldoc OCAMLDEP := $(OCAMLFIND) ocamldep all: byte opt ### Common files ### FILES := ocsigen_lib_base.ml \ ocsigen_lib.ml \ ocsigen_cache.ml \ ocsigen_config.ml \ ocsigen_commandline.ml \ ocsigen_messages.ml \ dynlink_wrapper.ml \ ocsigen_loader.ml \ ocsigen_stream.ml \ INTF_NOP4 := ocsigen_lib_base.mli ocsigen_lib.mli PREDEP := ocsigen_config.ml dynlink_wrapper.ml byte:: baselib.cma opt:: baselib.cmxa baselib.cma: ${OCAMLC} -a -o $@ $^ baselib.cmxa: $(FILES:.ml=.cmx) ${OCAMLOPT} -a -o $@ $^ baselib.cma: $(FILES:.ml=.cmo) ## Ocsigen_config ## ifeq "$(NATDYNLINK)" "YES" NATIVECODE_RUNTIME_DETECT=Dynlink.is_native else NATIVECODE_RUNTIME_DETECT=false endif ifeq "$(PREEMPTIVE)" "YES" PREEMTIMPLEM=Lwt_preemptive else PREEMTIMPLEM=Fake_preempt endif VERSION := $(shell head -n 1 ../../VERSION) ocsigen_config.ml: ocsigen_config.ml.in ../../Makefile.config ../../Makefile.options ../../VERSION cat ocsigen_config.ml.in \ | sed s%0000000000000000%${VERSION}% \ | sed s%_WARNING_%"Warning: this file has been generated from ocsigen_config.ml.in - DO NOT MODIFY MANUALLY!"% \ | sed s%_LOGDIR_%$(LOGDIR)% \ | sed s%_DATADIR_%$(DATADIR)%g \ | sed s%_BINDIR_%$(BINDIR)%g \ | sed s%_EXTDIR_%$(LIBDIR)/${PROJECTNAME}/extensions%g \ | sed s%_STATICPAGESDIR_%$(STATICPAGESDIR)% \ | sed s%_UP_%$(UPLOADDIR)%g \ | sed s%_OCSIGENUSER_%$(OCSIGENUSER)%g \ | sed s%_OCSIGENGROUP_%$(OCSIGENGROUP)%g \ | sed s%_PROJECTNAME_%$(PROJECTNAME)%g \ | sed s%_COMMANDPIPE_%$(COMMANDPIPE)%g \ | sed s%_CONFIGDIR_%$(CONFIGDIR)% \ | sed s%_PREEMTIMPLEM_%$(PREEMTIMPLEM)% \ | sed s%_ISNATIVE_%$(NATIVECODE_RUNTIME_DETECT)%g \ | sed "s%_DEPS_%$(INITPACKAGE)%g" \ > ocsigen_config.ml ## Dynlink_wrapper ## ifeq "$(NATDYNLINK)" "YES" dynlink_wrapper.ml: ln -s dynlink_wrapper.natdynlink.ml $@ dynlink_wrapper.cmo dynlink_wrapper.cmx: dynlink_wrapper.natdynlink.ml else dynlink_wrapper.ml: ln -s dynlink_wrapper.nonatdynlink.ml $@ dynlink_wrapper.cmo dynlink_wrapper.cmx: dynlink_wrapper.nonatdynlink.ml endif ### Command line ### byte:: parsecommandline.cma donotparsecommandline.cma opt:: parsecommandline.cmxa donotparsecommandline.cmxa ifeq "$(NATDYNLINK)" "YES" opt:: parsecommandline.cmxs donotparsecommandline.cmxs endif parsecommandline.cma: commandline/ocsigen_getcommandline.cmo $(OCAMLC) -a -o $@ $^ donotparsecommandline.cma: nocommandline/ocsigen_getcommandline.cmo $(OCAMLC) -a -o $@ $^ parsecommandline.cmxa: commandline/ocsigen_getcommandline.cmx $(OCAMLOPT) -a -o $@ $^ donotparsecommandline.cmxa: nocommandline/ocsigen_getcommandline.cmx $(OCAMLOPT) -a -o $@ $^ ### Polytables ### byte:: polytables.cma opt:: polytables.cmxa ifeq "$(NATDYNLINK)" "YES" opt:: polytables.cmxs endif polytables.cma: polytables.cmo $(OCAMLC) -a -o $@ $< polytables.cmxa: polytables.cmx $(OCAMLOPT) -a -o $@ $< ########## %.cmi: %.mli $(OCAMLC) -syntax camlp4o ${LIBS} -c $< ${INTF_NOP4:.mli=.cmi}: \ %.cmi: %.mli $(OCAMLC) ${LIBS} -c $< %.cmo: %.ml $(OCAMLC) -syntax camlp4o ${LIBS} -c $< %.cmx: %.ml $(OCAMLOPT) -syntax camlp4o ${LIBS} -c $< %.cmxs: %.cmxa $(OCAMLOPT) -shared -linkall -o $@ $< ## Clean up clean: -rm -f *.cm[ioax] *.cmxa *.cmxs *.o *.a *.annot -rm -f ${PREDEP} -cd commandline; rm -f *.cm[iox]* *.annot *.o -cd nocommandline; rm -f *.cm[iox]* *.annot *.o distclean: clean -rm -f *~ \#* .\#* ## Dependencies depend: ${PREDEP} $(OCAMLDEP) ${LIBS} -syntax camlp4o $(filter-out ${INTF_NOP4},$(wildcard *.mli)) *.ml > .depend $(OCAMLDEP) ${LIBS} ${INTF_NOP4} >> .depend FORCE: -include .depend ocsigenserver-2.2.0/src/baselib/polytables.mli0000644000000000000000000000307312060404165017631 0ustar0000000000000000(* Ocsigen * Copyright (C) 2009 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Polymorphic tables (using Map) @author Vincent Balat @author Jérôme Vouillon *) (** Warning: this module is not thread safe! *) (** The type of key for a piece of data of type 'a *) type 'a key (** The type of tables *) type t (** creates a new table *) val create : unit -> t (** create a new key for each data you want to save *) val make_key : unit -> 'a key (** [set t k v] associates [v] to [k] in [t] *) val set : table:t -> key:'a key -> value:'a -> unit (** [get t k] returns the current binding of [k] in [t] or raises [Not_found] *) val get : table:t -> key:'a key -> 'a (** [remove t k] remove the current binding of [k] in [t] if it exists *) val remove : table:t -> key:'a key -> unit (** [clear t] remove all data from t *) val clear : table:t -> unit ocsigenserver-2.2.0/src/baselib/polytables.ml0000644000000000000000000000302112060404165017451 0ustar0000000000000000(* Ocsigen * Copyright (C) 2009 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** @author Vincent Balat @author Jérôme Vouillon *) type 'a key = int * 'a option ref module T = Map.Make(struct type t = int let compare = compare end) type t = (unit -> unit) T.t ref let create () = ref T.empty let c = ref (-1) let make_key () = c := !c + 1; (!c, ref None) let set ~(table : t) ~key:((k, r) : 'a key) ~(value : 'a) = table := T.add k (fun () -> r := Some value) !table let get ~(table : t) ~key:((k, r) : 'a key) = (T.find k !table) (); match !r with | Some v -> r:= None; v | None -> failwith "Polytables.get" let remove ~(table : t) ~key:((k, r) : 'a key) = table := T.remove k !table let clear ~(table : t) = table := T.empty ocsigenserver-2.2.0/src/baselib/ocsigen_stream.ml0000644000000000000000000001743112060404165020307 0ustar0000000000000000(* Ocsigen * ocsigen_stream.ml Copyright (C) 2005 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) open Ocsigen_lib exception Interrupted of exn exception Cancelled exception Already_read exception Finalized type 'a stream = 'a step Lwt.t Lazy.t and 'a step = | Finished of 'a stream option (* If there is another stream following (useful for substreams) *) | Cont of 'a * 'a stream (* Current buffer, what follows *) type outcome = [`Success | `Failure] type 'a t = { mutable stream : 'a stream; mutable in_use : bool; mutable finalizer : outcome -> unit Lwt.t } let empty follow = match follow with None -> Lwt.return (Finished None) | Some st -> Lwt.return (Finished (Some (Lazy.lazy_from_fun st))) let cont stri f = Lwt.return (Cont (stri, Lazy.lazy_from_fun f)) let make ?finalize:(g = fun _ -> Lwt.return ()) f = { stream = Lazy.lazy_from_fun f; in_use = false; finalizer = g } let next = Lazy.force let rec get_aux st = lazy (Lwt.try_bind (fun () -> Lazy.force st.stream) (fun e -> Lwt.return (match e with Cont (s, rem) -> st.stream <- rem; Cont (s, get_aux st) | _ -> e)) (fun e -> st.stream <- lazy (Lwt.fail e); Lwt.fail (Interrupted e))) let get st = if st.in_use then raise Already_read; st.in_use <- true; get_aux st (** read the stream until the end, without decoding *) let rec consume_aux st = next st >>= fun e -> match e with | Cont (_, f) -> consume_aux f | Finished (Some ss) -> consume_aux ss | Finished None -> Lwt.return () let cancel st = let st' = st.stream in st.stream <- lazy (Lwt.fail Cancelled); consume_aux st' let consume st = consume_aux st.stream let finalize st status = let f = st.finalizer in st.finalizer <- (fun _ -> Lwt.return ()); f status >>= fun () -> st.stream <- lazy (Lwt.fail Finalized); Lwt.return () let add_finalizer st g = let f = st.finalizer in st.finalizer <- fun status -> f status >>= fun () -> g status (****) (** String streams *) exception Stream_too_small exception Stream_error of string exception String_too_large let string_of_stream m s = let buff = Buffer.create (m/4) in let rec aux i s = next s >>= function | Finished _ -> Lwt.return buff | Cont (s, f) -> let i = i + String.length s in if i > m then Lwt.fail String_too_large else (Buffer.add_string buff s; aux i f) in aux 0 s >|= Buffer.contents (* (*XXX Quadratic!!! *) let string_of_streams = let rec aux l = function | Finished None -> return "" | Finished (Some s) -> next s >>= fun r -> aux l r | Cont (s, f) -> let l2 = l+String.length s in if l2 > Ocsigen_config.get_netbuffersize () then Lwt.fail String_too_large else next f >>= fun r -> aux l2 r >>= fun r -> return (s^r) in aux 0 *) let enlarge_stream = function | Finished a -> Lwt.fail Stream_too_small | Cont (s, f) -> let long = String.length s in let max = Ocsigen_config.get_netbuffersize () in if long >= max then Lwt.fail Input_is_too_large else next f >>= fun e -> match e with | Finished _ -> Lwt.fail Stream_too_small | Cont (r, ff) -> let long2 = String.length r in let long3=long+long2 in let new_s = s^r in if long3 <= max then Lwt.return (Cont (new_s, ff)) else let long4 = long3 - max in cont (String.sub new_s 0 max) (fun () -> Lwt.return (Cont (String.sub new_s max long4, ff))) let rec stream_want s len = (* returns a stream with at least len bytes read if possible *) match s with | Finished _ -> Lwt.return s | Cont (stri, f) -> if String.length stri >= len then Lwt.return s else Lwt.catch (fun () -> enlarge_stream s >>= fun r -> Lwt.return (`OK r)) (function | Stream_too_small -> Lwt.return `Too_small | e -> Lwt.fail e) >>= function | `OK r -> stream_want r len | `Too_small -> Lwt.return s let current_buffer = function | Finished _ -> raise Stream_too_small | Cont (s, _) -> s let rec skip s k = match s with | Finished _ -> raise Stream_too_small | Cont (s, f) -> let len = String.length s in let len64 = Int64.of_int len in if Int64.compare k len64 <= 0 then let k = Int64.to_int k in Lwt.return (Cont (String.sub s k (len - k), f)) else (enlarge_stream (Cont ("", f)) >>= (fun s -> skip s (Int64.sub k len64))) let substream delim s = let ldelim = String.length delim in if ldelim = 0 then Lwt.fail (Stream_error "Empty delimiter") else let rdelim = Netstring_pcre.regexp_string delim in let rec aux = function | Finished _ -> Lwt.fail Stream_too_small | Cont (s, f) as stre -> let len = String.length s in if len < ldelim then enlarge_stream stre >>= aux else try let p,_ = Netstring_pcre.search_forward rdelim s 0 in cont (String.sub s 0 p) (fun () -> empty (Some (fun () -> Lwt.return (Cont (String.sub s p (len - p), f))))) with Not_found -> let pos = (len + 1 - ldelim) in cont (String.sub s 0 pos) (fun () -> next f >>= function | Finished _ -> Lwt.fail Stream_too_small | Cont (s', f') -> aux (Cont (String.sub s pos (len - pos) ^ s', f')) ) in aux s (*****************************************************************************) (*VVV Is it the good place for this? *) let of_file filename = let fd = Lwt_unix.of_unix_file_descr (Unix.openfile filename [Unix.O_RDONLY;Unix.O_NONBLOCK] 0o666) in let ch = Lwt_chan.in_channel_of_descr fd in let buf = String.create 1024 in let rec aux () = Lwt_chan.input ch buf 0 1024 >>= fun n -> if n = 0 then empty None else (* Streams should be immutable, thus we always make a copy of the buffer *) cont (String.sub buf 0 n) aux in make ~finalize:(fun _ -> Lwt_unix.close fd) aux let of_string s = make (fun () -> cont s (fun () -> empty None)) module StringStream = struct type out = string t type m = (string stream -> string step Lwt.t) Lazy.t let empty : m = lazy (fun c -> Lazy.force c) let concat (m: m) (f: m) : m = lazy (fun c -> Lazy.force m (lazy (Lazy.force f c))) let put (s : string) : m = lazy (fun c -> Lwt.return (Cont (s, c))) let make_stream (m: m) : string stream = lazy (Lazy.force m (lazy (Lwt.return (Finished None)))) let make (m: m) : out = make (fun () -> Lazy.force (make_stream m)) end ocsigenserver-2.2.0/src/baselib/ocsigen_loader.mli0000644000000000000000000000732412060404165020433 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * File ocsigen_loader.mli * Copyright (C) 2008 Stéphane Glondu * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Module [Ocsigen_loader]: Dynamic loading for Ocsigen. *) (** Notes about Findlib usage: - Findlib is called with predicates "plugin", "mt". Moreover, the predicate "native" or "byte" is added, depending on whether Ocsigen is running in native or bytecode mode. - In native mode, .cmx/.cmxa extensions provided by META files are replaced by .cmxs. - The OCAMLPATH environment variable is ignored altogether. *) exception Dynlink_error of string * exn exception Findlib_error of string * exn val translate : string -> string (** [translate filename] translate .cmo/.cma extensions to .cmxs in native mode, and .cmxs to .cmo (.cma if it exists) in bytecode mode. *) val set_init_on_load: bool -> unit (** If set to [true], the module initialization functions passed to [set_module_init_function] will be executed directly. Otherwise, they will have to be invoked using [init_module] at some later stage. *) val loadfile: (unit -> unit) -> (unit -> unit) -> bool -> string -> unit (** [loadfile pre post force file] (dynamically) loads [file]. If [force] is [false], remember [file] so that it isn't loaded twice. If the loading effectively occurs, [pre] (resp. [post]) is called before (resp. after) the loading. [post] will be called even if the loading fails. *) val loadfiles: (unit -> unit) -> (unit -> unit) -> bool -> string list -> unit (** [loadfiles pre post force file] loads all the [files], using [loadfile (fun () -> ()) (fun () -> ()) false] for all the files but the last one, and [loadfile pre post force] for the last one (if any). *) val set_module_init_function : string -> (unit -> unit) -> unit (** [set_module_init_function name f] registers the function [f], which will be used to initialize the module when [init_module name] is called. *) val init_module : (unit -> unit) -> (unit -> unit) -> bool -> string -> unit (** [init_module pre post force name] runs the init function for the module [name]. If [force] is [false], remember [name] so that the init function isn't executed twice. If the function is executed, [pre] (resp. [post]) is called before (resp. after) the loading. [post] will be called even if the loading fails. *) val get_ocamlpath: unit -> string list (** Returns the current Findlib library search path. *) val set_ocamlpath: string list -> unit (** Sets the current Findlib library search path. The OCaml standard library path and some site-specific paths are always implicitly added. *) val add_ocamlpath: string -> unit (** Adds a path to the Findlib library search path. *) val findfiles: string -> string list (** [findfiles pkg] returns the list of files needed to load Findlib package [pkg], including dependencies. The archive files of [pkg] will appear last in the returned result. *) ocsigenserver-2.2.0/src/baselib/ocsigen_cache.mli0000644000000000000000000001320212060404165020220 0ustar0000000000000000(* Ocsigen * Copyright (C) 2009 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Cache. Association tables (from any kind of database) that keep the most recently used values in memory. It is also possible to set a maximum lifetime for data in the cache. It is based on a structure of doubly linked lists with maximum size, that keeps only the mostly recently used values first, if you call the [up] function each time you use a value. (Insertion, remove and "up" in time 1). This structure is exported, so that it can be used in other cases. Not (preemptive) thread safe. @author Vincent Balat @author Raphaël Proust (adding timers) *) module Make : functor (A : sig type key type value end) -> sig (** [new cache finder ?timer size] creates a cache object where [finder] is the function responsible for retrieving non-cached data, [timer] (if any) is the life span of cached values (in seconds) (values in the cache are removed after their time is up) and [size] is the upper bound to the number of simultaneoulsy cached elements. Whenever a value is found (using [find] method), it's lifespan is set to [timer] (or not if the cache is not time bounded). If the value was already cached, it's lifespan is reset to [timer]. Using [timer] allow one to create a cache bounded both in space and time. It is to be noted that real lifespan of values is always slightly greater than [timer]. *) class cache : (A.key -> A.value Lwt.t) -> ?timer:float -> int -> object (** Find the cached value associated to the key, or binds this value in the cache using the function [finder] passed as argument to [create], and returns this value *) method find : A.key -> A.value Lwt.t (** Find the cached value associated to the key. Raises [Not_found] if the key is not present in the cache *) method find_in_cache : A.key -> A.value method remove : A.key -> unit method add : A.key -> A.value -> unit method clear : unit -> unit method size : int end end (** Clear the contents of all the existing caches *) val clear_all_caches : unit -> unit (** Doubly-linked lists with maximum number of entries and limited lifespan for entries. *) module Dlist : sig type 'a t type 'a node val create : ?timer:float -> int -> 'a t (** Adds an element to the list, and possibly returns the element that has been removed if the maximum size was exceeded. *) val add : 'a -> 'a t -> 'a option (** Removes an element from its list. If it is not in a list, it does nothing. If it is in a list, it calls the finaliser, then removes the element. If the finaliser fails with an exception, the element is removed and the exception is raised again. *) val remove : 'a node -> unit (** Removes the element from its list without finalising, then adds it as newest. *) val up : 'a node -> unit val newest : 'a t -> 'a node option val oldest : 'a t -> 'a node option val size : 'a t -> int val maxsize : 'a t -> int val value : 'a node -> 'a (** returns the timer of the Dlist *) val get_timer : 'a t -> float option (** The list to which the node belongs *) val list_of : 'a node -> 'a t option (** remove the n oldest values (or less if the list is not long enough) ; returns the list of removed values *) val remove_n_oldest : 'a t -> int -> 'a list (** fold over the elements from the cache starting from the newest to the oldest *) val fold : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'b (** fold over the elements from the cache starting from the oldest to the newest *) val fold_back : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'b (** lwt version of fold *) val lwt_fold : ('b -> 'a -> 'b Lwt.t) -> 'b -> 'a t -> 'b Lwt.t (** lwt version of fold_back *) val lwt_fold_back : ('b -> 'a -> 'b Lwt.t) -> 'b -> 'a t -> 'b Lwt.t (** Move a node from one dlist to another one, without finalizing. If one value is removed from the destination list (because its maximum size is reached), it is returned (after finalisation). *) val move : 'a node -> 'a t -> 'a option (** change the maximum size ; returns the list of removed values, if any. *) val set_maxsize : 'a t -> int -> 'a list (** set a function to be called automatically on a piece of data just before it disappears from the list (either by explicit removal or because the maximum size is exceeded) *) val set_finaliser_before : ('a node -> unit) -> 'a t -> unit val get_finaliser_before : 'a t -> ('a node -> unit) (** set a function to be called automatically on a piece of data just after it disappears from the list (either by explicit removal or because the maximum size is exceeded) *) val set_finaliser_after : ('a node -> unit) -> 'a t -> unit val get_finaliser_after : 'a t -> ('a node -> unit) end ocsigenserver-2.2.0/src/baselib/ocsigen_lib.mli0000644000000000000000000000533512060404165017733 0ustar0000000000000000(* Ocsigen * Copyright (C) 2005 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** This module contains some auxiliaries for the Ocsigenserver. In contrast to {!Ocsigen_lib_base}, the function may also refer to libraries other than the standard library. *) include module type of Ocsigen_lib_base with type poly = Ocsigen_lib_base.poly and type yesnomaybe = Ocsigen_lib_base.yesnomaybe and type ('a, 'b) leftright = ('a, 'b) Ocsigen_lib_base.leftright and type 'a Clist.t = 'a Ocsigen_lib_base.Clist.t and type 'a Clist.node = 'a Ocsigen_lib_base.Clist.node (** Generate an unique and cryptographically safe random string. It is impossible to guess for other people and will never return twice the same value (with very good probabilities). *) val make_cryptographic_safe_string : unit -> string module String : module type of String_base module Ip_address : sig type t = | IPv4 of int32 | IPv6 of int64 * int64 (* exception Invalid_ipaddress of string *) val parse : string -> t * (t option) val match_ip : t * (t option) -> t -> bool val network_of_ip : t -> int32 -> int64 * int64 -> t exception No_such_host val inet6_addr_loopback : t val get_inet_addr : string -> Unix.inet_addr Lwt.t (* val getnameinfo : Unix.inet_addr -> int -> string Lwt.t *) end module Filename : sig include module type of Filename (* val basename : string -> string *) (* val extension : string -> string *) val extension_no_directory : string -> string end module Url : sig include module type of Url_base with type t = Url_base.t val fixup_url_string : t -> t val encode : ?plus:bool -> string -> string val decode : ?plus:bool -> string -> string val make_encoded_parameters : (string * string) list -> string val string_of_url_path : encode:bool -> path -> uri val parse : t -> bool option * string option * int option * string (** the path, as a string, without the first / *) * string list * string option * (string * string) list Lazy.t end ocsigenserver-2.2.0/src/baselib/ocsigen_cache.ml0000644000000000000000000003772012060404165020062 0ustar0000000000000000(* Ocsigen * Copyright (C) 2009 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Cache. @author Vincent Balat @author Raphaël Proust (adding timers) *) let (>>=) = Lwt.bind module Dlist : sig type 'a t type 'a node val create : ?timer:float -> int -> 'a t val add : 'a -> 'a t -> 'a option val newest : 'a t -> 'a node option val oldest : 'a t -> 'a node option (** Removes an element from its list. If the element is not in a list, it does nothing. If it is in a list, it calls the finaliser, then removes the element. If the finaliser fails with an exception, the element is removed and the exception is raised again. *) val remove : 'a node -> unit (** Removes the element from its list without finalising, then adds it as newest. *) val up : 'a node -> unit val size : 'a t -> int val maxsize : 'a t -> int (** returns the timer of the Dlist *) val get_timer : 'a t -> float option val value : 'a node -> 'a val list_of : 'a node -> 'a t option (** remove the n oldest values ; returns the list of removed values *) val remove_n_oldest : 'a t -> int -> 'a list (** fold over the elements from the cache starting from the newest to the oldest *) val fold : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'b (** fold over the elements from the cache starting from the oldest to the newest *) val fold_back : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'b (** lwt version of fold *) val lwt_fold : ('b -> 'a -> 'b Lwt.t) -> 'b -> 'a t -> 'b Lwt.t (** lwt version of fold_back *) val lwt_fold_back : ('b -> 'a -> 'b Lwt.t) -> 'b -> 'a t -> 'b Lwt.t (** Move a node from one dlist to another one, without finalizing. If one value is removed from the destination list (because its maximum size is reached), it is returned (after finalisation). *) val move : 'a node -> 'a t -> 'a option (** change the maximum size ; returns the list of removed values, if any. *) val set_maxsize : 'a t -> int -> 'a list (** record a function to be called automatically on a piece of data just before it disappears from the list (either by explicit removal or because the maximum size is exceeded) *) val add_finaliser_before : ('a node -> unit) -> 'a t -> unit (** replace all finalizers by a new one. Be very careful while using this. *) val set_finaliser_before : ('a node -> unit) -> 'a t -> unit (** returns the finalizers. *) val get_finaliser_before : 'a t -> ('a node -> unit) (** record a function to be called automatically on a piece of data just after it disappears from the list (either by explicit removal or because the maximum size is exceeded) *) val add_finaliser_after : ('a node -> unit) -> 'a t -> unit (** replace all finalizers by a new one. Be very careful while using this. *) val set_finaliser_after : ('a node -> unit) -> 'a t -> unit (** returns the finalizers. *) val get_finaliser_after : 'a t -> ('a node -> unit) end = struct type 'a node = { mutable value : 'a; mutable succ : 'a node option; (* the node added just after *) mutable prev : 'a node option; (* the node added just before *) mutable mylist : 'a t option; (* the list to which it belongs *) mutable collection : float option; (* the timestamp for removal *) } (* Doubly-linked list with maximum size. The field [oldest] is the first element that must be removed if the list becomes too long. *) and 'a t = {mutable newest : 'a node option (* None = empty *); mutable oldest : 'a node option; mutable size : int; mutable maxsize : int; mutable finaliser_before : 'a node -> unit; mutable finaliser_after : 'a node -> unit; (* *) time_bound : time_bound option; } and time_bound = { (* *) timer : float; mutable collector : unit Lwt.t option; } (* Checks (by BY): let compute_length c = let rec aux i = function | Some {prev=p} -> aux (i + 1) p | None -> i in aux 0 c.newest let correct_node n = (match n.succ with | None -> true | Some n' -> n'.prev == Some n) && (match n.prev with | None -> true | Some n' -> n'.succ == Some n) (* Check that a list is correct. To be completed 1. by adding a check on nodes, 2. by verifying that newest can be reached from oldest and respectively *) let correct_list l = (l.size <= l.maxsize) && (compute_length l = l.size) && (match l.oldest with | None -> true | Some n -> n.prev = None) && (match l.newest with | None -> true | Some n -> n.succ = None) *) let create ?timer size = {newest = None; oldest = None; size = 0; maxsize = size; finaliser_before = (fun _ -> ()); finaliser_after = (fun _ -> ()); time_bound = (match timer with | None -> None | Some t -> Some {timer = t; collector = None;} ); } (* Remove an element from its list - don't finalise *) let remove' node l = (* assertion (node.mylist = Some l' with l' == l); *) let oldest = match l.oldest with | Some n when node == n -> node.succ | _ -> l.oldest in let newest = match l.newest with | Some n when node == n -> node.prev | _ -> l.newest in (match node.succ with | None -> () | Some s -> s.prev <- node.prev); (match node.prev with | None -> () | Some s -> s.succ <- node.succ); l.oldest <- oldest; l.newest <- newest; node.mylist <- None; l.size <- l.size - 1 (* Remove an element from its list - and finalise *) let remove node = match node.mylist with | None -> () | Some l as a -> (try l.finaliser_before node; assert (node.mylist == a); remove' node l with e -> remove' node l; raise e); l.finaliser_after node (* These next functions are for the collecting thread *) (* computing the timestamp for a node *) let collect_timer = function | {time_bound = Some {timer = t} } -> Some (t +. (Unix.gettimeofday ())) | {time_bound = None} -> None (* do collect. We first check if the node is still in the list and then if * its collection hasn't been rescheduled ! *) let collect dl n = match n.mylist with | Some l when l == dl -> begin match n.collection with | None -> assert false | Some c -> if c < Unix.gettimeofday () then remove n else () end | None | Some _ -> () let sleep_until = function (*/!\ COOPERATES*) | None -> assert false (* collection is set to None and collector to Some *) | Some t -> let duration = t -. Unix.gettimeofday () in if duration <= 0. then Lwt.return () else Lwt_unix.sleep duration (* a function to set the collector. *) let rec update_collector r = match r.time_bound with | None (* Not time bounded dlist *) | Some {collector = Some _} -> () (* Already collecting *) | Some ({collector = None} as t) -> match r.oldest with | None -> () (* Empty dlist *) | Some n -> t.collector <- Some (sleep_until n.collection >>= fun () -> collect r n; t.collector <- None; update_collector r; Lwt.return () ) (* Add a node that do not belong to any list to a list. The fields [succ] and [prev] are overridden. If the list is too long, the function returns the oldest value. The node added becomes the element [list] of the list *) (* do not finalise *) (* not exported *) let add_node node r = assert (node.mylist = None); node.mylist <- Some r; let res = match r.newest with | None -> node.succ <- None; node.prev <- None; r.newest <- Some node; r.oldest <- r.newest; r.size <- 1; None | Some rl -> node.succ <- None; node.prev <- r.newest; rl.succ <- Some node; r.newest <- Some node; r.size <- r.size + 1; if r.size > r.maxsize then r.oldest else None in node.collection <- collect_timer r; update_collector r; res let add x l = let create_one a = { value = a; succ = None; prev = None; mylist = None; collection = None; } in (* create_one not exported *) match add_node (create_one x) l with | None -> None | Some v -> remove v; Some v.value let newest a = a.newest let oldest a = a.oldest let size c = c.size let maxsize c = c.maxsize let get_timer c = match c.time_bound with | None -> None | Some tb -> Some tb.timer let value n = n.value let list_of n = n.mylist let up node = match node.mylist with | None -> () | Some l -> match l.newest with | Some n when node == n -> () | _ -> remove' node l; ignore (add_node node l) (* assertion: = None *) (* we must not change the physical address => use add_node *) let rec remove_n_oldest l n = (* remove the n oldest values (or less if the list is not long enough) ; returns the list of removed values *) if n <= 0 then [] else match l.oldest with | None -> [] | Some node -> let v = node.value in remove node; (* and finalise! *) v::remove_n_oldest l (n-1) (* Move a node from one dlist to another one, without finalizing *) let move node l = (match node.mylist with | None -> () | Some l -> remove' node l); match add_node node l with | None -> None | Some v -> remove v; Some v.value (* fold over the elements from the newest to the oldest *) let lwt_fold f accu {newest} = match newest with | None -> Lwt.return accu | Some newest -> let rec fold accu node = f accu node.value >>= fun accu -> match node.prev with | None -> Lwt.return accu | Some new_node when new_node == newest -> Lwt.return accu | Some new_node -> fold accu new_node in fold accu newest (* fold over the elements from the oldest to the newest *) let lwt_fold_back f accu {oldest} = match oldest with | None -> Lwt.return accu | Some oldest -> let rec fold accu node = f accu node.value >>= fun accu -> match node.succ with | None -> Lwt.return accu | Some new_node when new_node == oldest -> Lwt.return accu | Some new_node -> fold accu new_node in fold accu oldest (* fold over the elements from the newest to the oldest *) let fold f accu {newest} = match newest with | None -> accu | Some newest -> let rec fold accu node = let accu = f accu node.value in match node.prev with | None -> accu | Some new_node when new_node == newest -> accu | Some new_node -> fold accu new_node in fold accu newest (* fold over the elements from the oldest to the newest *) let fold_back f accu {oldest} = match oldest with | None -> accu | Some oldest -> let rec fold accu node = let accu = f accu node.value in match node.succ with | None -> accu | Some new_node when new_node == oldest -> accu | Some new_node -> fold accu new_node in fold accu oldest let set_maxsize l m = let size = l.size in if m >= size then (l.maxsize <- m; []) else if m <= 0 then failwith "Dlist.set_maxsize" else let ll = remove_n_oldest l (size - m) in l.maxsize <- m; ll let set_finaliser_before f l = l.finaliser_before <- f let get_finaliser_before l = l.finaliser_before let add_finaliser_before f l = let oldf = l.finaliser_before in l.finaliser_before <- (fun n -> oldf n; f n) let set_finaliser_after f l = l.finaliser_after <- f let get_finaliser_after l = l.finaliser_after let add_finaliser_after f l = let oldf = l.finaliser_after in l.finaliser_after <- (fun n -> oldf n; f n) end module Weak = Weak.Make(struct type t = unit -> unit let hash = Hashtbl.hash let equal = (==) end) let clear_all = Weak.create 17 module Make = functor (A: sig type key type value end) -> struct type data = A.key module H = Hashtbl.Make( struct type t = A.key let equal a a' = a = a' let hash = Hashtbl.hash end) type t = { mutable pointers : A.key Dlist.t; mutable table : (A.value * A.key Dlist.node) H.t; finder : A.key -> A.value Lwt.t; clear: unit -> unit (* This function clears the cache. It is put inside the cache structure so that it is garbage-collected only when the cache is no longer referenced, as the functions themselves are put inside a weak hash table *) } let mk f ?timer size = let (l, t) as a = (Dlist.create ?timer size, H.create size) in Dlist.set_finaliser_after (fun n -> H.remove t (Dlist.value n)) l; a let rec create f ?timer size = let rec cache = let (l, t) = mk f ?timer size in {pointers = l; table = t; finder = f; clear = f_clear; } and f_clear = (fun () -> clear cache) in Weak.add clear_all f_clear; cache and clear cache = let size = Dlist.maxsize cache.pointers in let timer = Dlist.get_timer cache.pointers in let (l, t) = mk cache.finder ?timer size in cache.pointers <- l; cache.table <- t (* not exported *) let poke cache node = assert (match Dlist.list_of node with | None -> false | Some l -> cache.pointers == l); Dlist.up node let find_in_cache cache k = let (v, node) = H.find cache.table k in poke cache node; v let remove cache k = try let (_v, node) = H.find cache.table k in assert (match Dlist.list_of node with | None -> false | Some l -> cache.pointers == l); Dlist.remove node with Not_found -> () (* Add in a cache, under the hypothesis that the value is not already in the cache *) let add_no_remove cache k v = ignore (Dlist.add k cache.pointers); match Dlist.newest cache.pointers with | None -> assert false | Some n -> H.add cache.table k (v, n) let add cache k v = remove cache k; add_no_remove cache k v let size c = Dlist.size c.pointers let find cache k = (try Lwt.return (find_in_cache cache k) with Not_found -> cache.finder k >>= fun r -> (try (* it may have been added during cache.finder *) ignore (find_in_cache cache k) with Not_found -> add_no_remove cache k r); Lwt.return r) class cache f ?timer size_c = let c = create f ?timer size_c in object method clear () = clear c method find = find c method add = add c method size = size c method find_in_cache = find_in_cache c method remove = remove c end end let clear_all_caches () = Weak.iter (fun f -> f ()) clear_all ocsigenserver-2.2.0/src/baselib/dynlink_wrapper.natdynlink.ml0000644000000000000000000000205212060404165022660 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * File dynlink_wrapper.ml * Copyright (C) 2008 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) open Dynlink exception Error = Dynlink.Error let loadfile = loadfile let error_message = error_message let init = init let allow_unsafe_modules = allow_unsafe_modules let prohibit = prohibit ocsigenserver-2.2.0/src/baselib/ocsigen_stream.mli0000644000000000000000000001025012060404165020450 0ustar0000000000000000(* Ocsigen * ocsigen_stream.ml Copyright (C) 2005 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) exception Interrupted of exn exception Cancelled exception Already_read exception Finalized (** Streams are a means to read data block by block *) type 'a stream (** A stream may be composed by several substreams. Thus a stream is either something that contains the current buffer and a function to retrieve the following data, or a finished stream with possibly another stream following. *) type 'a step = private | Finished of 'a stream option | Cont of 'a * 'a stream type 'a t type outcome = [`Success | `Failure] (** creates a new stream *) val make : ?finalize:(outcome -> unit Lwt.t) -> (unit -> 'a step Lwt.t) -> 'a t (** call this function if you decide to start reading a stream. @raise Already_read if the stream has already been read. *) val get : 'a t -> 'a stream (** get the next step of a stream. Fails with [Interrupted e] if reading the thread failed with exception [e], and with [Cancelled] if the thread has been cancelled. *) val next : 'a stream -> 'a step Lwt.t (** creates an empty step. The parameter is the following substream, if any. *) val empty : (unit -> 'a step Lwt.t) option -> 'a step Lwt.t (** creates a non empty step. *) val cont : 'a -> (unit -> 'a step Lwt.t) -> 'a step Lwt.t (** Add a finalizer function. In the current version, finalizers must be called manually. *) val add_finalizer : 'a t -> (outcome -> unit Lwt.t) -> unit (** Finalize the stream. This function must be called explicitely after reading the stream, otherwise finalizers won't be called. *) val finalize : 'a t -> outcome -> unit Lwt.t (** Cancel the stream, i.e. read the stream until the end, without decoding. Further tries to read on the stream will fail with exception {!Ocsigen_stream.Cancelled} *) val cancel : 'a t -> unit Lwt.t (** Consume without cancelling. Read the stream until the end, without decoding. *) val consume : 'a t -> unit Lwt.t exception Stream_too_small (** possibly with the size of the stream *) exception Stream_error of string exception String_too_large (** Creates a string from a stream. The first argument is the upper limit of the string length *) val string_of_stream : int -> string stream -> string Lwt.t (** Read more data in the buffer *) val enlarge_stream : string step -> string step Lwt.t (** [stream_want s len] Returns a stream with at least len bytes in the buffer if possible *) val stream_want : string step -> int -> string step Lwt.t (** Returns the value of the current buffer *) val current_buffer : string step -> string (** Skips data. Raises [Stream_too_small (Some size)] if the stream is too small, where [size] is the size of the stream. *) val skip : string step -> int64 -> string step Lwt.t (** Cut the stream at the position given by a string delimiter *) val substream : string -> string step -> string step Lwt.t (*VVV à revoir : *) (** returns a stream reading from a file. Do not forget to finalize the stream to close the file. *) val of_file : string -> string t (** returns a stream containing a string. *) val of_string : string -> string t module StringStream : sig (** Interface for stream creation (for tyxml) *) type out = string t type m val make: m -> out (** Create an empty stream *) val empty: m (** Create a stream with one element *) val put: string -> m (** Concatenate two stream *) val concat: m -> m -> m end ocsigenserver-2.2.0/src/baselib/ocsigen_lib.ml0000644000000000000000000003314212060404165017557 0ustar0000000000000000(* Ocsigen * Copyright (C) 2005 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) include Ocsigen_lib_base module String = String_base (*****************************************************************************) module Ip_address = struct type t = | IPv4 of int32 | IPv6 of int64 * int64 exception Invalid_ipaddress of string let parse s = let s = String.lowercase s in let n = String.length s in let is6 = String.contains s ':' in let failwith fmt = Printf.ksprintf (fun s -> raise (Invalid_ipaddress s)) fmt in let rec parse_hex i accu = match (if i < n then s.[i] else ':') with | '0'..'9' as c -> parse_hex (i+1) (16*accu+(int_of_char c)-48) | 'a'..'f' as c -> parse_hex (i+1) (16*accu+(int_of_char c)-87) | _ -> (i, accu) in let rec parse_dec i accu = match (if i < n then s.[i] else '.') with | '0'..'9' as c -> parse_dec (i+1) (10*accu+(int_of_char c)-48) | _ -> (i, accu) in let rec next_is_dec i = if i < n then match s.[i] with | ':' -> false | '.' -> true | _ -> next_is_dec (i+1) else false in let rec parse_component i accu nb = if i < n then if next_is_dec i then let (i1, a) = parse_dec i 0 in if i1 = i || (i1 < n && s.[i1] <> '.') then failwith "invalid dot notation in %s (1)" s; let (i2, b) = parse_dec (i1+1) 0 in if i2 = i1 then failwith "invalid dot notation in %s (2)" s; let component = if a < 0 || a > 255 || b < 0 || b > 255 then failwith "invalid dot notation in %s (3)" s else (a lsl 8) lor b in if i2 < n-1 && (s.[i2] = ':' || s.[i2] = '.') then parse_component (i2+1) (component::accu) (nb+1) else (i2, component::accu, nb+1) else if s.[i] = ':' then parse_component (i+1) ((-1)::accu) nb else let (i1, a) = parse_hex i 0 in if a < 0 || a > 0xffff then failwith "invalid colon notation in %s" s; if i1 = i then (i, accu, nb) else if i1 < n-1 && s.[i1] = ':' then parse_component (i1+1) (a::accu) (nb+1) else (i1, a::accu, nb+1) else (i, accu, nb) in let (i, addr_list, size_list) = if 1 < n && s.[0] = ':' && s.[1] = ':' then parse_component 2 [-1] 0 else parse_component 0 [] 0 in if size_list > 8 then failwith "too many components in %s" s; let maybe_mask = if i < n && s.[i] = '/' then let (i1, m) = parse_dec (i+1) 0 in if i1 = i+1 || i1 < n || m < 0 || m > (if is6 then 128 else 32) then failwith "invalid /n suffix in %s" s else Some m else if i < n then failwith "invalid suffix in %s (from index %i)" s i else None in if is6 then let (++) a b = Int64.logor (Int64.shift_left a 16) (Int64.of_int b) in let normalized = let rec aux_add n accu = if n = 0 then accu else aux_add (n-1) (0::accu) in let rec aux_rev accu = function | [] -> accu | (-1)::q -> aux_rev (aux_add (8-size_list) accu) q | a::q -> aux_rev (a::accu) q in aux_rev [] addr_list in let maybe_mask = match maybe_mask with | Some n when n > 64 -> Some (IPv6 (Int64.minus_one, Int64.shift_left Int64.minus_one (128-n))) | Some n -> Some (IPv6 (Int64.shift_left Int64.minus_one (64-n), Int64.zero)) | None -> None in match normalized with | [a; b; c; d; e; f; g; h] -> IPv6 (Int64.zero ++ a ++ b ++ c ++ d, Int64.zero ++ e ++ f ++ g ++ h), maybe_mask | _ -> failwith "invalid IPv6 address: %s (%d components)" s (List.length normalized) else let (++) a b = Int32.logor (Int32.shift_left a 16) (Int32.of_int b) in let maybe_mask = match maybe_mask with | Some n -> Some (IPv4 (Int32.shift_left Int32.minus_one (32-n))) | None -> None in match addr_list with | [b; a] -> IPv4 (Int32.zero ++ a ++ b), maybe_mask | _ -> failwith "invalid IPv4 address: %s" s let match_ip (base, mask) ip = match ip, base, mask with | IPv4 a, IPv4 b, Some (IPv4 m) -> Int32.logand a m = Int32.logand b m | IPv4 a, IPv4 b, None -> a = b | IPv6 (a1,a2), IPv6 (b1,b2), Some (IPv6 (m1,m2)) -> Int64.logand a1 m1 = Int64.logand b1 m1 && Int64.logand a2 m2 = Int64.logand b2 m2 | IPv6 (a1,a2), IPv6 (b1,b2), None -> a1 = b1 && a2 = b2 | IPv6 (a1,a2), IPv4 b, c when a1 = 0L && Int64.logand a2 0xffffffff00000000L = 0xffff00000000L -> (* might be insecure, cf http://tools.ietf.org/internet-drafts/draft-itojun-v6ops-v4mapped-harmful-02.txt *) let a = Int64.to_int32 a2 in begin match c with | Some (IPv4 m) -> Int32.logand a m = Int32.logand b m | Some (IPv6 _) -> invalid_arg "match_ip" | None -> a = b end | _ -> false let network_of_ip ip mask4 (mask61, mask62) = match ip with | IPv4 a -> IPv4 (Int32.logand a mask4) | IPv6 (a, b) -> IPv6 (Int64.logand a mask61, Int64.logand b mask62) exception No_such_host let inet6_addr_loopback = fst (parse (Unix.string_of_inet_addr Unix.inet6_addr_loopback)) let get_inet_addr host = let rec aux = function | [] -> Lwt.fail No_such_host | {Unix.ai_addr=Unix.ADDR_INET (inet_addr, _)}::_ -> Lwt.return inet_addr | _::l -> aux l in Lwt.bind (Lwt_unix.getaddrinfo host "" []) aux (* let getnameinfo ia p = try Lwt_unix.getnameinfo (Unix.ADDR_INET (ia, p)) [Unix.NI_NAMEREQD] >>= fun r -> Lwt.return r.Unix.ni_hostname with | Not_found -> let hs = Unix.string_of_inet_addr ia in Lwt.return (if String.length hs > 7 && String.sub hs 0 7 = "::ffff:" then String.sub hs 7 (String.length hs - 7) else if String.contains hs ':' then "["^hs^"]" else hs) *) end (*****************************************************************************) module Filename = struct include Filename let basename f = let n = String.length f in let i = try String.rindex f '\\' + 1 with Not_found -> 0 in let j = try String.rindex f '/' + 1 with Not_found -> 0 in let k = max i j in if k < n then String.sub f k (n-k) else "none" let extension_no_directory filename = try let pos = String.rindex filename '.' in String.sub filename (pos+1) ((String.length filename) - pos - 1) with Not_found -> raise Not_found let extension filename = try let pos = String.rindex filename '.' and slash = try String.rindex filename '/' with Not_found -> -1 in if pos > slash then String.sub filename (pos+1) ((String.length filename) - pos - 1) else (* Dot before a directory separator *) raise Not_found with Not_found -> (* No dot in filename *) raise Not_found end (*****************************************************************************) let make_cryptographic_safe_string = let rng = Cryptokit.Random.device_rng "/dev/urandom" and to_b64 = Cryptokit.Base64.encode_compact () in fun () -> let random_part = let random_number = Cryptokit.Random.string rng 20 in Cryptokit.transform_string to_b64 random_number and sequential_part = (*VVV Use base 64 also here *) Printf.sprintf "%Lx" (Int64.bits_of_float (Unix.gettimeofday ())) in random_part ^ sequential_part (* The string is produced from the concatenation of two components: a 160-bit random sequence obtained from /dev/urandom, and a 64-bit sequential component derived from the system clock. The former is supposed to prevent session spoofing. The assumption is that given the high cryptographic quality of /dev/urandom, it is impossible for an attacker to deduce the sequence of random numbers produced. As for the latter component, it exists to prevent a theoretical (though infinitesimally unlikely) session ID collision if the server were to be restarted. *) module Url = struct include Url_base (* Taken from Neturl version 1.1.2 *) let problem_re1 = Netstring_pcre.regexp "[ <>\"{}|\\\\^\\[\\]`]" let fixup_url_string1 = Netstring_pcre.global_substitute problem_re1 (fun m s -> Printf.sprintf "%%%02x" (Char.code s.[Netstring_pcre.match_beginning m])) (* I add this fixup to handle %uxxxx sent by browsers. Translated to %xx%xx *) let problem_re2 = Netstring_pcre.regexp "\\%u(..)(..)" let fixup_url_string s = fixup_url_string1 (Netstring_pcre.global_substitute problem_re2 (fun m s -> String.concat "" ["%"; Netstring_pcre.matched_group m 1 s; "%"; Netstring_pcre.matched_group m 2 s] ) s) (*VVV This is in Netencoding but we have a problem with ~ (not encoded by browsers). Here is a patch that does not encode '~': *) module MyUrl = struct let hex_digits = [| '0'; '1'; '2'; '3'; '4'; '5'; '6'; '7'; '8'; '9'; 'A'; 'B'; 'C'; 'D'; 'E'; 'F' |] let to_hex2 k = (* Converts k to a 2-digit hex string *) let s = String.create 2 in s.[0] <- hex_digits.( (k lsr 4) land 15 ); s.[1] <- hex_digits.( k land 15 ); s let url_encoding_re = Netstring_pcre.regexp "[^A-Za-z0-9~_.!*\\-]" let encode ?(plus = true) s = Netstring_pcre.global_substitute url_encoding_re (fun r _ -> match Netstring_pcre.matched_string r s with | " " when plus -> "+" | x -> let k = Char.code(x.[0]) in "%" ^ to_hex2 k ) s end let encode = MyUrl.encode let decode ?plus a = Netencoding.Url.decode ?plus a let make_encoded_parameters params = String.concat "&" (List.map (fun (name, value) -> encode name ^ "=" ^ encode value) params) let string_of_url_path ~encode l = if encode then fixup_url_string (String.concat "/" (List.map (*Netencoding.Url.encode*) (MyUrl.encode ~plus:false) l)) (* ' ' are not encoded to '+' in paths *) else String.concat "/" l (* BYXXX : check illicit characters *) let parse = (* We do not accept http://login:pwd@host:port (should we?). *) let url_re = Netstring_pcre.regexp "^([Hh][Tt][Tt][Pp][Ss]?)://([0-9a-zA-Z.-]+|\\[[0-9A-Fa-f:.]+\\])(:([0-9]+))?/([^\\?]*)(\\?(.*))?$" in let short_url_re = Netstring_pcre.regexp "^/([^\\?]*)(\\?(.*))?$" in (* let url_relax_re = Netstring_pcre.regexp "^[Hh][Tt][Tt][Pp][Ss]?://[^/]+" in *) fun url -> let match_re = Netstring_pcre.string_match url_re url 0 in let (https, host, port, pathstring, query) = match match_re with | None -> (match Netstring_pcre.string_match short_url_re url 0 with | None -> raise Ocsigen_Bad_Request | Some m -> let path = fixup_url_string (Netstring_pcre.matched_group m 1 url) in let query = try Some (fixup_url_string (Netstring_pcre.matched_group m 3 url)) with Not_found -> None in (None, None, None, path, query)) | Some m -> let path = fixup_url_string (Netstring_pcre.matched_group m 5 url) in let query = try Some (fixup_url_string (Netstring_pcre.matched_group m 7 url)) with Not_found -> None in let https = try (match Netstring_pcre.matched_group m 1 url with | "http" -> Some false | "https" -> Some true | _ -> None) with Not_found -> None in let host = try Some (Netstring_pcre.matched_group m 2 url) with Not_found -> None in let port = try Some (int_of_string (Netstring_pcre.matched_group m 4 url)) with Not_found -> None in (https, host, port, path, query) in (* Note that the fragment (string after #) is not sent by browsers *) (*20110707 ' ' is encoded to '+' in queries, but not in paths. Warning: if we write the URL manually, we must encode ' ' to '+' manually (not done by the browser). --Vincent *) let get_params = lazy begin let params_string = match query with None -> "" | Some s -> s in try Netencoding.Url.dest_url_encoded_parameters params_string with Failure _ -> raise Ocsigen_Bad_Request end in let path = List.map (Netencoding.Url.decode ~plus:false) (Neturl.split_path pathstring) in let path = remove_dotdot path (* and remove "//" *) (* here we remove .. from paths, as it is dangerous. But in some very particular cases, we may want them? I prefer forbid that. *) in let uri_string = match query with | None -> pathstring | Some s -> String.concat "?" [pathstring; s] in (https, host, port, uri_string, path, query, get_params) end ocsigenserver-2.2.0/src/baselib/dynlink_wrapper.nonatdynlink.ml0000644000000000000000000000212212060404165023213 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * File dynlink_wrapper.ml * Copyright (C) 2008 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) exception Error of string let message = "ocsigen compiled without native dynlink support" let loadfile _ = failwith message let error_message _ = failwith message let init _ = () let allow_unsafe_modules _ = () let prohibit _ = () ocsigenserver-2.2.0/src/baselib/.depend0000644000000000000000000000306012060404165016204 0ustar0000000000000000ocsigen_cache.cmi: ocsigen_config.cmi: ocsigen_lib.cmi ocsigen_getcommandline.cmi: ocsigen_loader.cmi: ocsigen_messages.cmi: ocsigen_stream.cmi: ocsigen_utils.cmi: polytables.cmi: dynlink_wrapper.cmo: dynlink_wrapper.cmx: dynlink_wrapper.natdynlink.cmo: dynlink_wrapper.natdynlink.cmx: dynlink_wrapper.nonatdynlink.cmo: dynlink_wrapper.nonatdynlink.cmx: ocsigen_cache.cmo: ocsigen_cache.cmi ocsigen_cache.cmx: ocsigen_cache.cmi ocsigen_commandline.cmo: ocsigen_getcommandline.cmi ocsigen_config.cmi ocsigen_commandline.cmx: ocsigen_getcommandline.cmi ocsigen_config.cmx ocsigen_config.cmo: ocsigen_lib.cmi ocsigen_config.cmi ocsigen_config.cmx: ocsigen_lib.cmx ocsigen_config.cmi ocsigen_lib.cmo: ocsigen_lib_base.cmi ocsigen_lib.cmi ocsigen_lib.cmx: ocsigen_lib_base.cmx ocsigen_lib.cmi ocsigen_lib_base.cmo: ocsigen_lib_base.cmi ocsigen_lib_base.cmx: ocsigen_lib_base.cmi ocsigen_loader.cmo: ocsigen_messages.cmi ocsigen_lib.cmi ocsigen_config.cmi \ dynlink_wrapper.cmo ocsigen_loader.cmi ocsigen_loader.cmx: ocsigen_messages.cmx ocsigen_lib.cmx ocsigen_config.cmx \ dynlink_wrapper.cmx ocsigen_loader.cmi ocsigen_messages.cmo: ocsigen_config.cmi ocsigen_messages.cmi ocsigen_messages.cmx: ocsigen_config.cmx ocsigen_messages.cmi ocsigen_stream.cmo: ocsigen_lib.cmi ocsigen_config.cmi ocsigen_stream.cmi ocsigen_stream.cmx: ocsigen_lib.cmx ocsigen_config.cmx ocsigen_stream.cmi ocsigen_utils.cmo: ocsigen_utils.cmi ocsigen_utils.cmx: ocsigen_utils.cmi polytables.cmo: polytables.cmi polytables.cmx: polytables.cmi ocsigen_lib_base.cmi: ocsigen_lib.cmi: ocsigen_lib_base.cmi ocsigenserver-2.2.0/src/baselib/ocsigen_lib_base.ml0000644000000000000000000002453112060404165020553 0ustar0000000000000000(* Ocsigen * Copyright (C) 2005-2008 Vincent Balat, Stéphane Glondu * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) exception Ocsigen_Internal_Error of string exception Input_is_too_large exception Ocsigen_Bad_Request exception Ocsigen_Request_too_long external id : 'a -> 'a = "%identity" let (>>=) = Lwt.bind let (>|=) = Lwt.(>|=) let (!!) = Lazy.force let comp f g x = f (g x) let curry f x y = f (x, y) let uncurry f (x, y) = f x y type poly external to_poly : 'a -> poly = "%identity" external from_poly : poly -> 'a = "%identity" module Tuple3 = struct let fst (a, _, _) = a let snd (_, a, _) = a let thd (_, _, a) = a end type yesnomaybe = Yes | No | Maybe type ('a, 'b) leftright = Left of 'a | Right of 'b let advert = "Page generated by OCaml with Ocsigen. See http://ocsigen.org/ and http://caml.inria.fr/ for information" (*****************************************************************************) module Option = struct type 'a t = 'a option let map f = function | Some x -> Some (f x) | None -> None let get f = function | Some x -> x | None -> f () let iter f = function | Some x -> f x | None -> () let return x = Some x let bind opt k = match opt with | Some x -> k x | None -> None let to_list = function | None -> [] | Some v -> [v] end module List = struct include List let map_filter f l = let rec aux acc = function | [] -> acc | t::q -> match f t with | None -> aux acc q | Some r -> aux (r::acc) q in List.rev (aux [] l) let rec remove_first_if_any a = function | [] -> [] | b::l when a = b -> l | b::l -> b::(remove_first_if_any a l) let rec remove_first_if_any_q a = function | [] -> [] | b::l when a == b -> l | b::l -> b::(remove_first_if_any_q a l) let rec remove_first a = function | [] -> raise Not_found | b::l when a = b -> l | b::l -> b::(remove_first a l) let rec remove_first_q a = function | [] -> raise Not_found | b::l when a == b -> l | b::l -> b::(remove_first_q a l) let rec remove_all a = function | [] -> [] | b::l when a = b -> remove_all a l | b::l -> b::(remove_all a l) let rec remove_all_q a = function | [] -> [] | b::l when a == b -> remove_all_q a l | b::l -> b::(remove_all_q a l) let rec remove_all_assoc a = function | [] -> [] | (b, _)::l when a = b -> remove_all_assoc a l | b::l -> b::(remove_all_assoc a l) let rec remove_all_assoc_q a = function | [] -> [] | (b,_)::l when a == b -> remove_all_assoc_q a l | b::l -> b::(remove_all_assoc_q a l) let rec last = function | [] -> raise Not_found | [b] -> b | _::l -> last l let rec assoc_remove a = function | [] -> raise Not_found | (b, c)::l when a = b -> c, l | b::l -> let v, ll = assoc_remove a l in (v, b::ll) let rec is_prefix l1 l2 = match (l1, l2) with | [], _ -> true | a::ll1, b::ll2 when a=b -> is_prefix ll1 ll2 | _ -> false let rec chop n xs = if n <= 0 then xs else match xs with | [] -> [] | x :: xs -> chop (n-1) xs end (*****************************************************************************) (* circular lists *) module Clist : sig type 'a t type 'a node val make : 'a -> 'a node val create : unit -> 'a t val insert : 'a t -> 'a node -> unit val remove : 'a node -> unit val value : 'a node -> 'a val in_list : 'a node -> bool val is_empty : 'a t -> bool val iter : ('a -> unit) -> 'a t -> unit val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a end = struct type 'a node = { content : 'a option; mutable prev : 'a node; mutable next : 'a node } type 'a t = 'a node let make' c = let rec x = { content = c; prev = x; next = x } in x let make c = make' (Some c) let create () = make' None let insert p x = let n = p.next in p.next <- x; x.prev <- p; x.next <- n; n.prev <- x let remove x = let p = x.prev in let n = x.next in p.next <- n; n.prev <- p; x.next <- x; x.prev <- x let in_list x = x.next != x let is_empty set = set.next == set let value c = match c.content with | None -> failwith "Clist.value" | Some c -> c let rec iter f (node : 'a t) = match node.next.content with | Some c -> f c; iter f node.next | None -> () let rec fold_left f a (node : 'a t) = match node.next.content with | Some c -> fold_left f (f a c) node.next | None -> a end (*****************************************************************************) module Int = struct module Table = Map.Make(struct type t = int let compare = compare end) end (*****************************************************************************) module String_base = struct include String (* Returns a copy of the string from beg to endd, removing spaces at the beginning and at the end *) let remove_spaces s beg endd = let rec find_not_space s i step = if (i > endd) || (beg > i) then i else if s.[i] = ' ' then find_not_space s (i+step) step else i in let first = find_not_space s beg 1 in let last = find_not_space s endd (-1) in if last >= first then String.sub s first (1+ last - first) else "" (* Cut a string to the next separator *) let basic_sep char s = try let seppos = String.index s char in ((String.sub s 0 seppos), (String.sub s (seppos+1) ((String.length s) - seppos - 1))) with Invalid_argument _ -> raise Not_found (* Cut a string to the next separator, removing spaces. Raises Not_found if the separator connot be found. *) let sep char s = let len = String.length s in let seppos = String.index s char in ((remove_spaces s 0 (seppos-1)), (remove_spaces s (seppos+1) (len-1))) (* splits a string, for ex "azert, sdfmlskdf, dfdsfs" *) let rec split ?(multisep=false) char s = let longueur = String.length s in let rec aux deb = if deb >= longueur then [] else try let firstsep = String.index_from s deb char in if multisep && firstsep = deb then aux (deb + 1) else (remove_spaces s deb (firstsep-1)):: (aux (firstsep+1)) with Not_found -> [remove_spaces s deb (longueur-1)] in aux 0 let may_append s1 ~sep = function | "" -> s1 | s2 -> s1^sep^s2 let may_concat s1 ~sep s2 = match s1, s2 with | _, "" -> s1 | "", _ -> s2 | _ -> String.concat sep [s1;s2] (* returns the index of the first difference between s1 and s2, starting from n and ending at last. returns (last + 1) if no difference is found. *) let rec first_diff s1 s2 n last = try if s1.[n] = s2.[n] then if n = last then last+1 else first_diff s1 s2 (n+1) last else n with Invalid_argument _ -> n module Table = Map.Make(String) module Set = Set.Make(String) module Map = Map.Make(String) end (*****************************************************************************) module Url_base = struct type t = string type uri = string type path = string list let make_absolute_url ~https ~host ~port uri = (if https then "https://" else "http://" )^ host^ (if (port = 80 && not https) || (https && port = 443) then "" else ":"^string_of_int port)^ uri let remove_dotdot = (* removes "../" *) let rec aux = function | [] -> [] | [""] as l -> l (* | ""::l -> aux l *) (* we do not remove "//" any more, because of optional suffixes in Eliom *) | ".."::l -> aux l | a::l -> a::(aux l) in function | [] -> [] | ""::l -> ""::(aux l) | l -> aux l let remove_end_slash s = try if s.[(String.length s) - 1] = '/' then String.sub s 0 ((String.length s) - 1) else s with Invalid_argument _ -> s let remove_internal_slash u = let rec aux = function | [] -> [] | [a] -> [a] | ""::l -> aux l | a::l -> a::(aux l) in match u with | [] -> [] | a::l -> a::(aux l) let change_empty_list = function | [] -> [""] (* It is not possible to register an empty URL *) | l -> l let rec add_end_slash_if_missing = function | [] -> [""] | [""] as a -> a | a::l -> a::(add_end_slash_if_missing l) let rec remove_slash_at_end = function | [] | [""] -> [] | a::l -> a::(remove_slash_at_end l) let remove_slash_at_beginning = function | [] -> [] | [""] -> [""] | ""::l -> l | l -> l let rec recursively_remove_slash_at_beginning = function | [] -> [] | [""] -> [""] | ""::l -> recursively_remove_slash_at_beginning l | l -> l let rec is_prefix_skip_end_slash l1 l2 = match (l1, l2) with | [""], _ | [], _ -> true | a::ll1, b::ll2 when a=b -> is_prefix_skip_end_slash ll1 ll2 | _ -> false let split_fragment s = try let pos = String.index s '#' in String.sub s 0 pos, Some (String.sub s (pos+1) (String.length s - 1 - pos)) with Not_found -> s, None end (************************************************************************) module Printexc = struct include Printexc let exc_printer = ref (fun _ e -> Printexc.to_string e) let rec to_string e = !exc_printer to_string e let register_exn_printer p = let printer = let old = !exc_printer in (fun f_rec s -> try p f_rec s with e -> old f_rec s) in exc_printer := printer end (*****************************************************************************) let debug = prerr_endline ocsigenserver-2.2.0/src/baselib/ocsigen_loader.ml0000644000000000000000000001542112060404165020257 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * File ocsigen_loader.ml * Copyright (C) 2008 Stéphane Glondu * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) open Ocsigen_lib exception Dynlink_error of string * exn exception Findlib_error of string * exn (************************************************************************) (* Translate .cmo/.cma extensions to .cmxs in native mode, and .cmxs to .cmo (.cma if the file exists) in bytecode mode. *) let translate = if Ocsigen_config.is_native then fun filename -> if Filename.check_suffix filename ".cmo" || Filename.check_suffix filename ".cma" then (Filename.chop_extension filename) ^ ".cmxs" else filename else fun filename -> if Filename.check_suffix filename ".cmxs" then let filename = Filename.chop_extension filename in let cma = filename ^ ".cma" in if Sys.file_exists cma then cma else filename ^ ".cmo" else filename (************************************************************************) (* Loading files *) let isloaded, addloaded = let set = ref String.Set.empty in ((fun s -> String.Set.mem s !set), (fun s -> set := String.Set.add s !set)) module M = Map.Make(String) let init_functions = ref M.empty let get_init_on_load, set_init_on_load = let init_on_load = ref false in ((fun () -> !init_on_load), (fun b -> init_on_load := b)) let loadfile pre post force file = let file = translate file in try if force then begin pre (); Ocsigen_messages.debug (fun () -> "Loading "^file^" (will be reloaded every times)"); begin try Dynlink_wrapper.loadfile file; post () with e -> post (); raise e end end else if not (isloaded file) then begin pre (); Ocsigen_messages.debug (fun () -> "Loading extension "^file); begin try Dynlink_wrapper.loadfile file; post () with e -> post (); raise e end; addloaded file; end else Ocsigen_messages.debug (fun () -> "Extension "^file^" already loaded") with | e -> raise (Dynlink_error (file, e)) let id () = () let loadfiles pre post force modules = let rec aux = function | [] -> () | [m] -> loadfile pre post force m | m::q -> loadfile id id false m; aux q in aux modules let set_module_init_function name f = init_functions := M.add name f !init_functions; (* print_endline ("Added init_function for " ^ name); *) (* print_endline ("get_init_on_load: " ^ string_of_bool (get_init_on_load ())); *) if get_init_on_load () then f () let init_module pre post force name = let f = try M.find name !init_functions with Not_found as e -> raise (Dynlink_error ("named module " ^ name, e)) in try if force then begin pre (); Ocsigen_messages.debug (fun () -> "Initializing "^name^" (will be initialized every time)"); begin try f (); post () with e -> post (); raise e end end else if not (isloaded name) then begin pre (); Ocsigen_messages.debug (fun () -> "Initializing module "^name); begin try f (); post () with e -> post (); raise e end; addloaded name; end else Ocsigen_messages.debug (fun () -> "Module "^name^" already initialized.") with | e -> raise (Dynlink_error (name, e)) (************************************************************************) (* Manipulating Findlib's search path *) let () = Findlib.init () let ocsigen_search_path = ref [] let update_search_path () = match !ocsigen_search_path with | [] -> Findlib.init () | x -> Findlib.init ~env_ocamlpath:(String.concat ":" x) () let get_ocamlpath = Findlib.search_path let set_ocamlpath lp = ocsigen_search_path := lp; update_search_path () let add_ocamlpath p = ocsigen_search_path := p :: !ocsigen_search_path; update_search_path () (************************************************************************) (* Using Findlib to locate files *) let findfiles = let cmx = Netstring_pcre.regexp_case_fold "\\.cmx($| |a)" in fun package -> try let preds = [(if Ocsigen_config.is_native then "native" else "byte"); "plugin"; "mt"] in let deps = Findlib.package_deep_ancestors preds [package] in let deps = List.filter (fun a -> not (String.Set.mem a Ocsigen_config.builtin_packages)) deps in Ocsigen_messages.debug (fun () -> Printf.sprintf "-- Dependencies of %s: %s" package (String.concat ", " deps)); let rec aux = function | [] -> [] | a::q -> let mods = try let raw = Findlib.package_property preds a "archive" in (* Replacing .cmx/.cmxa by .cmxs *) let raw = Netstring_pcre.global_replace cmx ".cmxs " raw in List.filter ((<>) "") (String.split ~multisep:true ' ' raw) with | Not_found -> [] in let base = Findlib.package_directory a in (List.map (Findlib.resolve_path ~base) mods) @ (aux q) in let res = aux deps in Ocsigen_messages.debug (fun () -> Printf.sprintf "-- Needed: %s" (String.concat ", " res)); res with | e -> raise (Findlib_error (package, e)) (************************************************************************) (* Error formatting *) open Printf let () = Printexc.register_exn_printer (fun f_rec -> function | Dynlink_wrapper.Error e -> Dynlink_wrapper.error_message e | Dynlink_error (s, e) -> sprintf "Dynlink error while loading %s: %s" s (f_rec e) | Findlib_error (s, Fl_package_base.No_such_package (s', msg)) -> let pkg = if s = s' then s else sprintf "%s [while trying to load %s]" s' s in let additional = if msg = "" then "" else sprintf " (%s)" msg in sprintf "Findlib package %s not found%s: maybe you forgot ?" pkg additional | Findlib_error (s, e) -> sprintf "Findlib error while handling %s: %s" s (f_rec e) | e -> raise e) ocsigenserver-2.2.0/src/baselib/ocsigen_getcommandline.mli0000644000000000000000000000021112060404165022137 0ustar0000000000000000(** Contains the command line that will be parsed by the server when Ocsigen_commandline is linked *) val commandline : string array ocsigenserver-2.2.0/src/baselib/ocsigen_config.ml.in0000644000000000000000000001461512060404165020667 0ustar0000000000000000(* Warning! ocsigen_config.ml is generated automatically from ocsigen_config.ml.in! Do not modify it manually *) (* Ocsigen * Copyright (C) 2005 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) open Ocsigen_lib exception Config_file_error of string (* General config *) let config_file = ref "_CONFIGDIR_/_PROJECTNAME_.conf" let verbose = ref false let silent = ref false let daemon = ref false let veryverbose = ref false let version_number = (**)"0000000000000000"(**) let mimefile = ref "_CONFIGDIR_/mime.types" let pidfile = ref None let server_name = "Ocsigen" let full_server_name = server_name^"/"^version_number let is_native = _ISNATIVE_ let native_ext = if is_native then ".opt" else "" let builtin_packages = List.fold_left (fun a s -> String.Set.add s a) String.Set.empty [_DEPS_] module Fake_preempt = struct let set_max_number_of_threads_queued : int -> unit = fun _ -> () let get_max_number_of_threads_queued : unit -> int = fun () -> 0 let init : int -> int -> (string -> unit) -> unit = fun _ _ _ -> () end (* Server config: *) let (uploaddir : string option ref) = ref None let logdir = ref "_LOGDIR_" let default_user = ref "_OCSIGENUSER_" let default_group = ref "_OCSIGENGROUP_" let minthreads = ref 10 let maxthreads = ref 30 let max_number_of_connections = ref 350 let mimefile = ref "_CONFIGDIR_/mime.types" let silent_client_timeout = ref 30 (* without speaking during sending frame *) let silent_server_timeout = ref 30 (* without speaking during sending frame *) (*let keepalive_timeout = ref 30 let keepopen_timeout = ref 300 (* for ocsigen as client *) *) let netbuffersize = ref 8192 let filebuffersize = ref 8192 let maxrequestbodysize = ref (Some (Int64.of_int 8000000)) let maxrequestbodysizeinmemory = ref 8192 let maxuploadfilesize = ref (Some (Int64.of_int 2000000)) let defaultcharset = ref (None : string option) let datadir = ref "_DATADIR_" let bindir = ref "_BINDIR_" let extdir = ref "_EXTDIR_" let user = ref (Some !default_user) let group = ref (Some !default_group) let command_pipe = ref "_COMMANDPIPE_" let debugmode = ref false let disablepartialrequests = ref false let usedefaulthostname = ref false let respectpipeline = ref false let default_port = ref 80 let default_sslport = ref 443 let maxretries = ref 10 let shutdowntimeout = ref (Some 10.) let set_uploaddir u = uploaddir := u let set_logdir s = logdir := s let set_configfile s = config_file := s let set_pidfile s = pidfile := Some s let set_mimefile s = mimefile := s let set_verbose () = verbose := true let set_silent () = silent := true let set_daemon () = set_silent (); daemon := true let set_veryverbose () = verbose := true; veryverbose := true let set_minthreads i = minthreads := i let set_maxthreads i = maxthreads := i let set_max_number_of_threads_queued = _PREEMTIMPLEM_.set_max_number_of_threads_queued let set_max_number_of_connections i = max_number_of_connections := i let set_client_timeout i = silent_client_timeout := i let set_server_timeout i = silent_server_timeout := i (* let set_keepalive_timeout i = keepalive_timeout := i let set_keepopen_timeout i = keepopen_timeout := i *) let set_netbuffersize i = netbuffersize := i let set_filebuffersize i = filebuffersize := i let set_maxuploadfilesize i = maxuploadfilesize := i let set_maxrequestbodysize i = maxrequestbodysize := i let set_maxrequestbodysizeinmemory i = maxrequestbodysizeinmemory := i let set_default_charset o = defaultcharset := o let set_datadir o = datadir := o let set_bindir o = bindir := o let set_extdir o = extdir := o let set_user o = user := o let set_group o = group := o let set_command_pipe s = command_pipe := s let set_debugmode s = debugmode := s let set_disablepartialrequests s = disablepartialrequests := s let set_usedefaulthostname s = usedefaulthostname := s let set_respect_pipeline () = respectpipeline := true let set_default_port p = default_port := p let set_default_sslport p = default_sslport := p let set_maxretries i = maxretries := i let set_shutdown_timeout s = shutdowntimeout := s let get_uploaddir () = !uploaddir let get_logdir () = !logdir let get_config_file () = !config_file let get_pidfile () = !pidfile let get_mimefile () = !mimefile let get_verbose () = !verbose let get_silent () = !silent let get_daemon () = !daemon let get_veryverbose () = !veryverbose let get_default_user () = !default_user let get_default_group () = !default_group let get_minthreads () = !minthreads let get_maxthreads () = !maxthreads let get_max_number_of_threads_queued = _PREEMTIMPLEM_.get_max_number_of_threads_queued let get_max_number_of_connections () = !max_number_of_connections let get_client_timeout () = !silent_client_timeout let get_server_timeout () = !silent_server_timeout (*let get_keepalive_timeout () = !keepalive_timeout let get_keepopen_timeout () = !keepopen_timeout *) let get_netbuffersize () = !netbuffersize let get_filebuffersize () = !filebuffersize let get_maxuploadfilesize () = !maxuploadfilesize let get_maxrequestbodysize () = !maxrequestbodysize let get_maxrequestbodysizeinmemory () = !maxrequestbodysizeinmemory let get_default_charset () = !defaultcharset let get_datadir () = !datadir let get_bindir () = !bindir let get_extdir () = !extdir let get_user () = !user let get_group () = !group let get_command_pipe () = !command_pipe let get_debugmode () = !debugmode let get_disablepartialrequests () = !disablepartialrequests let get_usedefaulthostname () = !usedefaulthostname let get_respect_pipeline () = !respectpipeline let get_default_port () = !default_port let get_default_sslport () = !default_sslport let get_maxretries () = !maxretries let get_shutdown_timeout () = !shutdowntimeout let display_version () = print_string version_number; print_newline (); exit 0 let init_preempt = _PREEMTIMPLEM_.init ocsigenserver-2.2.0/src/baselib/ocsigen_config.mli0000644000000000000000000001036012060404165020424 0ustar0000000000000000(* Ocsigen * Copyright (C) 2005 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) open Ocsigen_lib exception Config_file_error of string val server_name : string val full_server_name : string val version_number : string val is_native : bool val native_ext : string val builtin_packages : String.Set.t val set_logdir : string -> unit val set_configfile : string -> unit val set_pidfile : string -> unit val set_mimefile : string -> unit val set_verbose : unit -> unit val set_silent : unit -> unit val set_daemon : unit -> unit val set_veryverbose : unit -> unit val set_minthreads : int -> unit val set_maxthreads : int -> unit val set_max_number_of_threads_queued : int -> unit val set_max_number_of_connections : int -> unit val set_client_timeout : int -> unit val set_server_timeout : int -> unit (* val set_keepalive_timeout : int -> unit val set_keepopen_timeout : int -> unit *) val set_netbuffersize : int -> unit val set_filebuffersize : int -> unit val set_maxrequestbodysize : int64 option -> unit val set_maxrequestbodysizeinmemory : int -> unit val set_default_charset : string option -> unit val set_datadir : string -> unit val set_bindir : string -> unit val set_extdir : string -> unit val set_user : string option -> unit val set_group : string option -> unit val set_command_pipe : string -> unit val set_debugmode : bool -> unit val set_disablepartialrequests : bool -> unit val set_usedefaulthostname : bool -> unit val set_respect_pipeline : unit -> unit val set_default_port : int -> unit val set_default_sslport : int -> unit val set_maxretries : int -> unit val set_shutdown_timeout : float option -> unit val get_logdir : unit -> string val get_config_file : unit -> string val get_pidfile : unit -> string option val get_mimefile : unit -> string val get_verbose : unit -> bool val get_silent : unit -> bool val get_daemon : unit -> bool val get_veryverbose : unit -> bool val get_default_user : unit -> string val get_default_group : unit -> string val get_minthreads : unit -> int val get_maxthreads : unit -> int val get_max_number_of_threads_queued : unit -> int val get_max_number_of_connections : unit -> int val get_client_timeout : unit -> int val get_server_timeout : unit -> int (*val get_keepalive_timeout : unit -> int val get_keepopen_timeout : unit -> int*) val get_netbuffersize : unit -> int val get_filebuffersize : unit -> int val get_maxrequestbodysize : unit -> int64 option val get_maxrequestbodysizeinmemory : unit -> int val get_default_charset : unit -> string option val get_datadir : unit -> string val get_bindir : unit -> string val get_extdir : unit -> string val get_user : unit -> string option val get_group : unit -> string option val get_command_pipe : unit -> string val get_debugmode : unit -> bool val get_disablepartialrequests : unit -> bool val get_usedefaulthostname : unit -> bool val get_respect_pipeline : unit -> bool val get_default_port : unit -> int val get_default_sslport : unit -> int val get_maxretries : unit -> int val get_shutdown_timeout : unit -> float option val display_version : unit -> 'a val init_preempt : int -> int -> (string -> unit) -> unit (**/**) (* Global setting for upload directory. This can be overwritten on a per-site basis. Thus, use only the value inside the [ri.request_config] field of a request (which can be changed by the extension [Extendconfiguration]) *) val set_uploaddir : string option -> unit val get_uploaddir : unit -> string option (* Same thing for upload size *) val set_maxuploadfilesize : int64 option -> unit val get_maxuploadfilesize : unit -> int64 option ocsigenserver-2.2.0/src/baselib/ocsigen_lib_base.mli0000644000000000000000000001245112060404165020722 0ustar0000000000000000(* Ocsigen * Copyright (C) 2005 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** This module just contains only extensions of the standard library and very basic Ocsigen values and exceptions. Cf. {!Ocsigen_lib} for functionality which depends on specific external libraries. *) exception Ocsigen_Internal_Error of string exception Input_is_too_large exception Ocsigen_Bad_Request exception Ocsigen_Request_too_long val (>>=) : 'a Lwt.t -> ('a -> 'b Lwt.t) -> 'b Lwt.t val (>|=) : 'a Lwt.t -> ('a -> 'b) -> 'b Lwt.t val (!!) : 'a Lazy.t -> 'a external id : 'a -> 'a = "%identity" val comp : ('a -> 'b) -> ('c -> 'a) -> 'c -> 'b val curry : ('a * 'b -> 'c) -> 'a -> 'b -> 'c val uncurry : ('a -> 'b -> 'c) -> ('a * 'b) -> 'c module Tuple3 : sig val fst : 'a * 'b * 'c -> 'a val snd : 'a * 'b * 'c -> 'b val thd : 'a * 'b * 'c -> 'c end type poly val to_poly: 'a -> poly val from_poly: poly -> 'a type yesnomaybe = Yes | No | Maybe type ('a, 'b) leftright = Left of 'a | Right of 'b val advert: string module Option : sig type 'a t = 'a option val map : ('a -> 'b) -> 'a t -> 'b t val get : (unit -> 'a) -> 'a t -> 'a val iter : ('a -> unit) -> 'a t -> unit val return : 'a -> 'a t val bind : 'a t -> ('a -> 'b t) -> 'b t val to_list : 'a t -> 'a list end module List : sig include module type of List val map_filter : ('a -> 'b option) -> 'a list -> 'b list val last : 'a list -> 'a val assoc_remove : 'a -> ('a * 'b) list -> 'b * ('a * 'b) list val remove_first_if_any : 'a -> 'a list -> 'a list val remove_first_if_any_q : 'a -> 'a list -> 'a list (* val remove_first : 'a -> 'a list -> 'a list *) (* val remove_first_q : 'a -> 'a list -> 'a list *) (* val remove_all : 'a -> 'a list -> 'a list *) (* val remove_all_q : 'a -> 'a list -> 'a list *) val remove_all_assoc : 'a -> ('a * 'b) list -> ('a * 'b) list (* val remove_all_assoc_q : 'a -> ('a * 'b) list -> ('a * 'b) list *) (* val is_prefix : 'a list -> 'a list -> bool *) val chop : int -> 'a list -> 'a list end (** Circular lists *) module Clist : sig type 'a t type 'a node val make : 'a -> 'a node val create : unit -> 'a t val insert : 'a t -> 'a node -> unit val remove : 'a node -> unit val value : 'a node -> 'a val in_list : 'a node -> bool val is_empty : 'a t -> bool (** Infinite iteration on circular lists *) val iter : ('a -> unit) -> 'a t -> unit (** Infinite fold on circular lists (use with care!) *) val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a end module Int : sig module Table : Map.S with type key = int end module String_base : sig include module type of String (** [remove_spaces s beg endd] returns a copy of the string from beg to endd, removing spaces at the beginning and at the end *) val remove_spaces : string -> int -> int -> string (* Cuts a string to the next separator *) val basic_sep : char -> string -> string * string (** Cuts a string to the next separator, removing spaces. Raises [Not_found] if the separator cannot be found. *) val sep : char -> string -> string * string (** Splits a string for words with separator, removing spaces. For ex "azert, sdfmlskdf, dfdsfs". *) val split : ?multisep:bool -> char -> string -> string list val may_append : string -> sep:string -> string -> string (* WAS add_to_string *) val may_concat : string -> sep:string -> string -> string (* WAS concat_strings *) (* [first_diff s1 s2 n last] returns the index of the first difference between s1 and s2, starting from n and ending at last. returns (last + 1) if no difference is found. *) val first_diff : string -> string -> int -> int -> int module Table : Map.S with type key = string module Set : Set.S with type elt = string module Map : Map.S with type key = string end module Url_base : sig type t = string type uri = string val make_absolute_url : https:bool -> host:string -> port:int -> uri -> t type path = string list val remove_dotdot : path -> path val remove_end_slash : string -> string val remove_internal_slash : path -> path val change_empty_list : path -> path val add_end_slash_if_missing : path -> path val remove_slash_at_end : path -> path val remove_slash_at_beginning : path -> path (* val recursively_remove_slash_at_beginning : path -> path *) val is_prefix_skip_end_slash : string list -> string list -> bool val split_fragment : string -> string * string option end module Printexc : sig include module type of Printexc val register_exn_printer : ((exn -> string) -> exn -> string) -> unit end val debug : string -> unit ocsigenserver-2.2.0/src/baselib/ocsigen_messages.mli0000644000000000000000000000432112060404165020766 0ustar0000000000000000(* Ocsigen * Copyright (C) 2005 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Writing messages in the logs *) (** Write a message in access.log *) val accesslog : string -> unit (** Write a message in errors.log *) val errlog : string -> unit (** Write a message in warnings.log *) val warning : string -> unit (** Write a message only in debugging mode (-V option) - Non cooperative *) val debug : (unit -> string) -> unit (** Write a message only in debugging mode (-V option) - Non cooperative *) val debug2 : string -> unit (** Same as [debug] without new line at the end - Non cooperative *) val debug_noel : (unit -> string) -> unit (** Same as [debug] without new line at the end - Non cooperative *) val debug_noel2 : string -> unit (** Write a message in the console (if not called in silent mode) *) val console : (unit -> string) -> unit (** Write a message in the console (if not called in silent mode) *) val console2 : string -> unit (** Use that function for all impossible cases in exception handlers ([try ... with ... | e -> unexpected_exception ...] or [Lwt.catch ...]). A message will be written in [warnings.log]. Put something in the string to help locating the problem (usually the name of the function where is has been called). *) val unexpected_exception : exn -> string -> unit (** Path to the error log file *) val error_log_path : unit -> string (**/**) val open_files : ?user:string option -> ?group:string option -> unit -> unit Lwt.t val bip : int -> unit ocsigenserver-2.2.0/src/baselib/tests/0000755000000000000000000000000012060404165016107 5ustar0000000000000000ocsigenserver-2.2.0/src/baselib/tests/test_wrapping.ml0000644000000000000000000001034012060404165021325 0ustar0000000000000000(* ocamlfind ocamlopt -linkpkg -package react -g -I ../ ../wrapping.cmxa test_wrapping.ml -o test_wrapping *) let _ = Printexc.record_backtrace true (*** simple wrap test ***) type a = { a : float; a_wrap : a Ocsigen_wrap.wrapper; } let a_wrap () = Ocsigen_wrap.create_wrapper (fun t -> { a = t.a +. 1.; a_wrap = Ocsigen_wrap.empty_wrapper }) let a i = { a = i; a_wrap = a_wrap () } let va = a 3.14 let _,v = Ocsigen_wrap.wrap va let () = assert (v.a -. 4.14 < 0.0001) (*** deep wrap test ***) let va = [[[[[[1,[3.1,a 3.14]],a 35.1]]]]] let _,_ = Ocsigen_wrap.wrap va (*** multiple wrap test ***) type b = { b : string; ba : a; b' : string; b_wrap : b Ocsigen_wrap.wrapper; } let b_wrap () = Ocsigen_wrap.create_wrapper (fun t -> t.b, t.ba ) let b s f = { b = s; b' = s; b_wrap = b_wrap (); ba = a f } let tst_string = "test" let vb = b tst_string 3.14 let _,vb' = Ocsigen_wrap.wrap vb let _ = assert ( let (t,f) = Obj.magic (vb') in t == tst_string && ( f -. 4.14 < 0.0001 )) let _,vb'' = Ocsigen_wrap.wrap [2,[1.,[vb,4,ref 0],ref 42]] let () = match vb'' with | [2,[1.,[vb',4,{ contents = 0}],{ contents = 42}]] -> assert ( let (t,f) = Obj.magic (vb') in t == tst_string && ( f -. 4.14 < 0.0001 )) | _ -> assert false (*** create wrap during wrap test ***) let b'_wrap () = Ocsigen_wrap.create_wrapper (fun t -> t.b, a 1.2 ) let b' s f = { b = s; b' = s; b_wrap = b'_wrap (); ba = a f } let vb' = b' "test" 3.14 let _,vb'' = Ocsigen_wrap.wrap vb' let () = match (Obj.magic vb'') with | (x,y) -> assert (x == vb'.b); assert (y.a -. 4.14 < 0.0001 ) (*** big value copy ***) let ( -- ) x y = let rec aux y x acc = if x > y then acc else aux (y-1) x (y::acc) in aux y x [] (* type l = | A | L of l * int let ( -- ) x y = let rec aux y x acc = if x > y then acc else aux (y-1) x (L (acc,y)) in aux y x A let _ = Marshal.to_string (0--50000000) *) let v = (0--80000) (* it cannot grow much bigger than that, On systems with a small stack, it could die with stack overflow *) let _,v' = Ocsigen_wrap.wrap v let () = assert (v' = v) (*** simple wrap weak test ***) let d = Weak.create 1 let d_val = (Some (ref 0)) let _ = Weak.set d 0 d_val type d = { da : int; dw : int Weak.t; dm : d Ocsigen_wrap.wrapper; } let d_wrap () = Ocsigen_wrap.create_wrapper (fun {da;dw} -> Weak.get dw 0,da) let _,d' = Ocsigen_wrap.wrap (1,d,d_wrap ()) let () = assert (Obj.magic d' = (d_val,1)) (*** simple wrap react test ***) let r',push = React.E.create () let r = React.E.map (fun i -> i+1) r' let c a r w = (a,r,w) let c_wrap () = Ocsigen_wrap.create_wrapper (fun (a,r,w) -> a) let _,c' = Ocsigen_wrap.wrap (c 1 r (c_wrap ())) let () = assert (Obj.magic c' = 1) (*** Eliom_react like test ***) let r',push = React.E.create () let r = React.E.map (fun i -> i+1) r' type toto = { a : float; mtoto : toto Ocsigen_wrap.wrapper; } type t = { v1 : int; v2 : toto; v3 : int React.event; mt : t Ocsigen_wrap.wrapper; } let i = ref 0 let mtoto () = Ocsigen_wrap.create_wrapper (fun t -> incr i; string_of_float t.a, !i) let mt () = Ocsigen_wrap.create_wrapper (fun t -> incr i; t.v2) let toto i = { a = i; mtoto = mtoto () } let t i b = { v1 = i; v2 = b; v3 = r; mt = mt () } let vtoto = toto 3.14 let vt = t 42 vtoto let _,v' = Ocsigen_wrap.wrap vtoto let _,v' = Ocsigen_wrap.wrap vt (*** closure copy test ***) type t1 = { t1a : float; t1mark : t1 Ocsigen_wrap.wrapper; } type t2 = { t2t1 : t1; t2f : (int ref -> unit) option; t2mark : t2 Ocsigen_wrap.wrapper; } let r1 = ref 13 let r2 = ref 42 let r3 = ref 88 let t1mark () = Ocsigen_wrap.create_wrapper (fun t -> incr r1; { t1a = 3.14; t1mark = Ocsigen_wrap.empty_wrapper } ) let t2mark () = Ocsigen_wrap.create_wrapper (fun t -> (match t.t2f with | Some f -> f r2; | None -> assert false); { t with t2f = None; t2mark = Ocsigen_wrap.empty_wrapper } ) let t1 = { t1a = 1.1; t1mark = t1mark () } let t2 = { t2t1 = t1; t2f = Some (fun r -> incr r; incr r3); t2mark = t2mark () } let _,t2' = Ocsigen_wrap.wrap (Obj.repr t2) let _,t1' = Ocsigen_wrap.wrap (Obj.repr t1) let _ = assert (!r1 = 15); assert (!r2 = 43); assert (!r3 = 89) ocsigenserver-2.2.0/src/baselib/nocommandline/0000755000000000000000000000000012060404165017570 5ustar0000000000000000ocsigenserver-2.2.0/src/baselib/nocommandline/ocsigen_getcommandline.ml0000644000000000000000000000005212060404165024614 0ustar0000000000000000let commandline = Array.sub Sys.argv 0 1 ocsigenserver-2.2.0/src/baselib/commandline/0000755000000000000000000000000012060404165017233 5ustar0000000000000000ocsigenserver-2.2.0/src/baselib/commandline/ocsigen_getcommandline.ml0000644000000000000000000000003412060404165024257 0ustar0000000000000000let commandline = Sys.argv ocsigenserver-2.2.0/src/http/0000755000000000000000000000000012060404165014323 5ustar0000000000000000ocsigenserver-2.2.0/src/http/test_parser.ml0000644000000000000000000000230612060404165017211 0ustar0000000000000000(* Ocsigen * test_parser.ml Copyright (C) 2005 Denis Berthod * Laboratoire PPS - CNRS Université Paris Diderot * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) let parse_file f = let input = open_in f in let lexbuf = Lexing.from_channel input in try Http_parser.header Http_lexer.token lexbuf with Parsing.Parse_error -> failwith ("erreur vers "^ (Lexing.lexeme lexbuf)) |e -> Ocsigen_http_frame.Http_error.display_http_exception e;failwith "erreur" let _ = parse_file Sys.argv.(1) ocsigenserver-2.2.0/src/http/Makefile0000644000000000000000000000225012060404165015762 0ustar0000000000000000include ../../Makefile.config LIBS := -package netstring,lwt.ssl,tyxml -I ../baselib OCAMLC := $(OCAMLFIND) ocamlc${BYTEDBG} OCAMLOPT := $(OCAMLFIND) ocamlopt ${OPTDBG} OCAMLDOC := $(OCAMLFIND) ocamldoc OCAMLDEP := $(OCAMLFIND) ocamldep all: byte opt ### Common files ### FILES := multipart.ml \ http_headers.ml \ ocsigen_cookies.ml \ ocsigen_http_frame.ml \ ocsigen_headers.ml \ http_lexer.ml \ framepp.ml \ ocsigen_http_com.ml \ ocsigen_charset_mime.ml \ ocsigen_senders.ml \ PREDEP := http_lexer.ml \ byte: http.cma opt: http.cmxa http.cma: $(FILES:.ml=.cmo) ${OCAMLC} -a -o $@ $^ http.cmxa: $(FILES:.ml=.cmx) ${OCAMLOPT} -a -o $@ $^ ########## %.ml: %.mll $(OCAMLLEX) $< %.cmi: %.mli $(OCAMLC) ${LIBS} -c $< %.cmo: %.ml $(OCAMLC) ${LIBS} -c $< %.cmx: %.ml $(OCAMLOPT) ${LIBS} -c $< %.cmxs: %.cmxa $(OCAMLOPT) -shared -linkall -o $@ $< ## Clean up clean: -rm -f *.cm[ioax] *.cmxa *.cmxs *.o *.a *.annot -rm -f ${PREDEP} distclean: clean -rm -f *~ \#* .\#* ## Dependencies depend: ${PREDEP} $(OCAMLDEP) ${LIBS} *.mli *.ml > .depend FORCE: -include .depend ocsigenserver-2.2.0/src/http/LICENSE-multipart0000644000000000000000000000202712060404165017350 0ustar0000000000000000The librarie "netlwtstream.ml", comes from ocamlnet, and is distributed under the terms of the following license. ====================================================================== Copyright (c) 2001 Patrick Doane and Gerd Stolpmann This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution.ocsigenserver-2.2.0/src/http/ocsigen_senders.mli0000644000000000000000000000514112060404165020201 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * sender_helpers.ml Copyright (C) 2005 Denis Berthod * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Functions to create results for various kinds of documents *) module File_content : Ocsigen_http_frame.HTTP_CONTENT with type t = string * Ocsigen_charset_mime.charset_assoc * Ocsigen_charset_mime.mime_assoc module Xhtml_content : Ocsigen_http_frame.HTTP_CONTENT with type t = Xhtml.M.doc module Html5_content : Ocsigen_http_frame.HTTP_CONTENT with type t = Html5.M.doc module Make_XML_Content(Xml : Xml_sigs.Iterable) (Typed_xml : Xml_sigs.Typed_xml with module Xml := Xml) : Ocsigen_http_frame.HTTP_CONTENT with type t = Typed_xml.doc and type options = Http_headers.accept Lazy.t (** content * content-type *) module Text_content : Ocsigen_http_frame.HTTP_CONTENT with type t = string * string module Stream_content : Ocsigen_http_frame.HTTP_CONTENT with type t = string Ocsigen_stream.t (** streams and content-type *) module Streamlist_content : Ocsigen_http_frame.HTTP_CONTENT with type t = (unit -> string Ocsigen_stream.t Lwt.t) list * string module Empty_content : Ocsigen_http_frame.HTTP_CONTENT with type t = unit (** directory name and corresponding URL path *) module Directory_content : Ocsigen_http_frame.HTTP_CONTENT with type t = string * string list (** error code and/or exception *) module Error_content : Ocsigen_http_frame.HTTP_CONTENT with type t = int option * exn option * Ocsigen_cookies.cookieset (** Sending an error page *) val send_error : ?code:int -> ?exn:exn -> Ocsigen_http_com.slot -> clientproto:Ocsigen_http_frame.Http_header.proto -> ?mode:Ocsigen_http_frame.Http_header.http_mode -> ?proto:Ocsigen_http_frame.Http_header.proto -> ?cookies:Ocsigen_cookies.cookieset -> head:bool -> sender:Ocsigen_http_com.sender_type -> unit -> unit Lwt.t ocsigenserver-2.2.0/src/http/framepp.mli0000644000000000000000000000234212060404165016461 0ustar0000000000000000(* Ocsigen * framepp.mli Copyright (C) 2005 Denis Berthod * Laboratoire PPS - CNRS Université Paris Diderot * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) val string_of_header : Ocsigen_http_frame.Http_header.http_header -> string val string_of_method : Ocsigen_http_frame.Http_header.http_method -> string val method_of_string : string -> Ocsigen_http_frame.Http_header.http_method val string_of_proto : Ocsigen_http_frame.Http_header.proto -> string val proto_of_string : string -> Ocsigen_http_frame.Http_header.proto ocsigenserver-2.2.0/src/http/ocsigen_headers.ml0000644000000000000000000002362512060404165020007 0ustar0000000000000000(* Ocsigen * ocsigen_headers.ml Copyright (C) 2005 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (* TODO: rewrite header parsing! *) (** This module is for getting informations from HTTP header. *) (** It uses the lowel level module Ocsigen_http_frame.Http_header. *) (** It is very basic and must be completed for exhaustiveness. *) (* Operation on strings are hand-written ... *) (* Include in a better cooperative parser for header or use regexp?. *) open Ocsigen_http_frame open Ocsigen_senders open Ocsigen_lib open Ocsigen_cookies let find name frame = Http_headers.find (Http_headers.name name) frame.frame_header.Http_header.headers let find_all name frame = Http_headers.find_all (Http_headers.name name) frame.frame_header.Http_header.headers (* XXX Get rid of all "try ... with _ -> ..." *) let list_flat_map f l = List.flatten (List.map f l) (* splits a quoted string, for ex "azert", " sdfmlskdf", "dfdsfs" *) (* We are too kind ... We accept even if the separator is not ok :-( ? *) let rec quoted_split char (* char is not used in that version *) s = let longueur = String.length s in let rec aux deb = let rec nextquote s i = if i>=longueur then failwith "" else if s.[i] = '"' then i else if s.[i] = '\\' then nextquote s (i+2) else nextquote s (i+1) in try let first = (nextquote s deb) + 1 in let afterlast = nextquote s first in let value = String.sub s first (afterlast - first) in value:: (if (afterlast + 1) < longueur then aux (afterlast + 1) else []) with Failure _ | Invalid_argument _ -> [] in aux 0 let parse_quality parse_name s = try let a,b = String.sep ';' s in let q,qv = String.sep '=' b in if q="q" then ((parse_name a), Some (float_of_string qv)) else failwith "Parse error" with _ -> ((parse_name s), None) let parse_star a = if a = "*" then None else Some a let parse_mime_type a = let b,c = String.sep '/' a in ((parse_star b), (parse_star c)) let parse_extensions parse_name s = try let a,b = String.sep ';' s in ((parse_name a), List.map (String.sep '=') (String.split ';' b)) with _ -> ((parse_name s), []) let parse_list_with_quality parse_name s = let splitted = list_flat_map (String.split ',') s in List.map (parse_quality parse_name) splitted let parse_list_with_extensions parse_name s = let splitted = list_flat_map (String.split ',') s in List.map (parse_extensions parse_name) splitted (*****************************************************************************) let rec parse_cookies s = let splitted = String.split ';' s in try List.fold_left (fun beg a -> let (n, v) = String.sep '=' a in CookiesTable.add n v beg) CookiesTable.empty splitted with _ -> CookiesTable.empty (*VVV Actually the real syntax of cookies is more complex! *) (* http://www.w3.org/Protocols/rfc2109/rfc2109 Mozilla spec + RFC2109 http://ws.bokeland.com/blog/376/1043/2006/10/27/76832 *) let get_keepalive http_header = Http_header.get_proto http_header = Ocsigen_http_frame.Http_header.HTTP11 && try String.lowercase (Http_header.get_headers_value http_header Http_headers.connection) <> "close" with Not_found -> true (* 06/02/2008 If HTTP/1.0, we do not keep alive, even if the client asks so. It would be possible, but only if the content-length is known. Chunked encoding is not possible with HTTP/1.0. As we cannot know if the output will be chunked or not, we decided that we won't keep the connection open at all for HTTP/1.0. Another solution would be to keep it open if the client asks so, and answer connection:close (and close) if we don't know the size of the document. In that case, all requests that have been pipelined would be processed by the server, but not sent back to the client. Which one is the best? It really depends on the client. If the client waits the answer before doing the following request, it would be ok to keep the connection opened, otherwise it is better not. (+ pb with non-idempotent requests, that should not be pipelined) *) (* RFC 2616, sect. 14.23 *) (* XXX Not so simple: the host name may contain a colon! (RFC 3986) *) let get_host_from_host_header = let host_re = Netstring_pcre.regexp "^(\\[[0-9A-Fa-f:.]+\\]|[^:]+)(:([0-9]+))?$" in fun http_frame -> try let hostport = Http_header.get_headers_value http_frame.Ocsigen_http_frame.frame_header Http_headers.host in match Netstring_pcre.string_match host_re hostport 0 with | Some m -> (Some (Netstring_pcre.matched_group m 1 hostport), try Some (int_of_string (Netstring_pcre.matched_group m 3 hostport)) with Not_found -> None | Failure _ -> raise Ocsigen_Bad_Request) | None -> raise Ocsigen_Bad_Request with Not_found -> (None, None) let get_user_agent http_frame = try (Http_header.get_headers_value http_frame.Ocsigen_http_frame.frame_header Http_headers.user_agent) with Not_found -> "" let get_cookie_string http_frame = try Some (Http_header.get_headers_value http_frame.Ocsigen_http_frame.frame_header Http_headers.cookie) with Not_found -> None let get_if_modified_since http_frame = try Some (Netdate.parse_epoch (Http_header.get_headers_value http_frame.Ocsigen_http_frame.frame_header Http_headers.if_modified_since)) with _ -> None let get_if_unmodified_since http_frame = try Some (Netdate.parse_epoch (Http_header.get_headers_value http_frame.Ocsigen_http_frame.frame_header Http_headers.if_unmodified_since)) with _ -> None let get_if_none_match http_frame = try Some (list_flat_map (quoted_split ',') (Http_header.get_headers_values http_frame.Ocsigen_http_frame.frame_header Http_headers.if_none_match)) with _ -> None let get_if_match http_frame = try Some (list_flat_map (quoted_split ',') (Http_header.get_headers_values http_frame.Ocsigen_http_frame.frame_header Http_headers.if_match)) with _ -> None let get_content_type http_frame = try Some (Http_header.get_headers_value http_frame.Ocsigen_http_frame.frame_header Http_headers.content_type) with Not_found -> None let parse_content_type = function | None -> None | Some s -> match String.split ';' s with | [] -> None | a::l -> try let (typ, subtype) = String.sep '/' a in let params = try List.map (String.sep '=') l with Not_found -> [] in (*VVV If syntax error, we return no parameter at all *) Some ((typ, subtype), params) with Not_found -> None (*VVV If syntax error in type, we return None *) let get_content_length http_frame = try Some (Int64.of_string (Http_header.get_headers_value http_frame.Ocsigen_http_frame.frame_header Http_headers.content_length)) with Not_found | Failure _ | Invalid_argument _ -> None let get_referer http_frame = try Some (Http_header.get_headers_value http_frame.Ocsigen_http_frame.frame_header Http_headers.referer) with _ -> None let get_origin http_frame = try Some (Http_header.get_headers_value http_frame.Ocsigen_http_frame.frame_header Http_headers.origin) with _ -> None let get_access_control_request_method http_frame = try Some (Http_header.get_headers_value http_frame.Ocsigen_http_frame.frame_header Http_headers.access_control_request_method) with _ -> None let get_access_control_request_headers http_frame = try let s = (Http_header.get_headers_value http_frame.Ocsigen_http_frame.frame_header Http_headers.access_control_request_headers) in Some (String.split ',' s) with _ -> None let get_referrer = get_referer let get_accept http_frame = try let l = parse_list_with_extensions parse_mime_type (Http_header.get_headers_values http_frame.Ocsigen_http_frame.frame_header Http_headers.accept) in let change_quality (a, l) = try let q,ll = List.assoc_remove "q" l in (a, Some (float_of_string q), ll) with _ -> (a, None, l) in List.map change_quality l with _ -> [] let get_accept_charset http_frame = try parse_list_with_quality parse_star (Http_header.get_headers_values http_frame.Ocsigen_http_frame.frame_header Http_headers.accept_charset) with _ -> [] let get_accept_encoding http_frame = try parse_list_with_quality parse_star (Http_header.get_headers_values http_frame.Ocsigen_http_frame.frame_header Http_headers.accept_encoding) with _ -> [] let get_accept_language http_frame = try parse_list_with_quality id (Http_header.get_headers_values http_frame.Ocsigen_http_frame.frame_header Http_headers.accept_language) with _ -> [] ocsigenserver-2.2.0/src/http/ocsigen_charset_mime.mli0000644000000000000000000000565012060404165021203 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * ocsigen_charset_mime.mli Copyright (C) 2008 * Boris Yakobowski * Laboratoire PPS - CNRS Université Paris Diderot * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) type extension = string type file = string type filename = string (** Charset *) (** By convention, "no specified charset" is represented by the empty string *) type charset = string val no_charset: charset (** Association between extensions and charset, with a default value. *) type charset_assoc (** All files are mapped to [no_charset] *) val empty_charset_assoc : ?default:charset -> unit -> charset_assoc val find_charset : string -> charset_assoc -> charset (** Functions related to the default charset in the association *) val default_charset : charset_assoc -> charset val set_default_charset : charset_assoc -> charset -> charset_assoc (** Updates the mapping between extensions from a file to its charset. The update can be specified using the extension of the file, the name of the file, or the entire file (with its path) *) val update_charset_ext : charset_assoc -> extension -> charset -> charset_assoc val update_charset_file : charset_assoc -> filename -> charset -> charset_assoc val update_charset_regexp : charset_assoc -> Netstring_pcre.regexp -> charset -> charset_assoc (** MIME types; the default value is ["application/octet-stream"] *) type mime_type = string val default_mime_type : mime_type (** association between extensions and mime types, with default value *) type mime_assoc (** Default values, obtained by reading the file specified by [Ocsigen_config.get_mimefile] *) val default_mime_assoc : unit -> mime_assoc (** Parsing of a file containing mime associations, such as /etc/mime-types *) val parse_mime_types : filename:string -> mime_assoc (* The other functions are as for charsets *) val find_mime : file -> mime_assoc -> string val default_mime : mime_assoc -> mime_type val set_default_mime : mime_assoc -> mime_type -> mime_assoc val update_mime_ext : mime_assoc -> extension -> mime_type -> mime_assoc val update_mime_file : mime_assoc -> filename -> mime_type -> mime_assoc val update_mime_regexp : mime_assoc -> Netstring_pcre.regexp -> mime_type -> mime_assoc ocsigenserver-2.2.0/src/http/http_headers.mli0000644000000000000000000000626012060404165017504 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module http_headers.mli * Copyright (C) 2007 Jérôme Vouillon * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (*XXX Can have multiple headers with the same name...*) type name val name : string -> name val name_to_string : name -> string module NameHtbl : Hashtbl.S with type key = name (****) val accept : name val accept_charset : name val accept_encoding : name val accept_language : name val accept_ranges : name val cache_control : name val connection : name val content_encoding : name val content_length : name val content_type : name val content_range : name val cookie : name val date : name val etag : name val expires : name val host : name val if_match : name val if_modified_since : name val if_none_match : name val if_unmodified_since : name val if_range : name val last_modified : name val location : name val server : name val set_cookie : name val status : name val transfer_encoding : name val user_agent : name val referer : name val range : name val x_forwarded_for : name val x_forwarded_proto : name val origin : name val access_control_request_method : name val access_control_request_headers : name val access_control_allow_origin : name val access_control_allow_credentials : name val access_control_expose_headers : name val access_control_max_age : name val access_control_allow_methods : name val access_control_allow_headers : name (****) type t val empty : t (** returns an empty set of HTTP headers *) val add : name -> string -> t -> t (** [add name s h] adds the header [name: s] to [h]. *) val replace : name -> string -> t -> t (** replace a header by another one. If it does not exist, adds it. *) val replace_opt : name -> string option -> t -> t (** replace or remove a header. *) val find : name -> t -> string (** find one of the values bound to [name] in the HTTP header [t]. Raise [Not_found] if it is not bound. *) val find_all : name -> t -> string list (** find all the values bound to [name] in the HTTP header [t]. Raise [Not_found] if it is not bound. *) val iter : (name -> string -> unit) -> t -> unit val fold : (name -> string list -> 'a -> 'a) -> t -> 'a -> 'a val with_defaults : t -> t -> t (** [with_defaults h1 h2] adds headers from [h1] to [h2]. If some headers were present, the are replaced by those from [h1]. *) val dyn_headers : t (** Headers for dynamic pages (non cachable) *) type accept = ( (string option * string option) * float option * (string * string) list ) list ocsigenserver-2.2.0/src/http/ocsigen_cookies.mli0000644000000000000000000000452712060404165020201 0ustar0000000000000000(* Ocsigen * Copyright (C) 2010 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) open Ocsigen_lib module CookiesTable : Map.S with type key = string (** This table is to store cookie values for each path. The key has type Url.path option: it is for the path (default: root of the site), *) module Cookies : Map.S with type key = Url.path (** Type used for cookies to set. The float option is the timestamp for the expiration date. The string is the value. If the bool is true and the protocol is https, the cookie will be secure (will ask the browser to send it only through secure connections). *) type cookie = | OSet of float option * string * bool | OUnset type cookieset = cookie CookiesTable.t Cookies.t val empty_cookieset : 'a CookiesTable.t Cookies.t (** [add_cookie path c v cookie_table] adds the cookie [c] to the table [cookie_table]. If the cookie is already bound, the previous binding disappear. *) val add_cookie : Url.path -> string -> 'a -> 'a CookiesTable.t Cookies.t -> 'a CookiesTable.t Cookies.t (** [remove_cookie c cookie_table] removes the cookie [c] from the table [cookie_table]. Warning: it is not equivalent to [add_cookie ... OUnset ...]). *) val remove_cookie : Url.path -> string -> 'a CookiesTable.t Cookies.t -> 'a CookiesTable.t Cookies.t (** [add_cookies newcookies oldcookies] adds the cookies from [newcookies] to [oldcookies]. If cookies are already bound in oldcookies, the previous binding disappear. *) val add_cookies : cookie CookiesTable.t Cookies.t -> cookie CookiesTable.t Cookies.t -> cookie CookiesTable.t Cookies.t ocsigenserver-2.2.0/src/http/http_lexer.mll0000644000000000000000000001024612060404165017212 0ustar0000000000000000{ (* Ocsigen * http://www.ocsigen.org * http_lexer.mll Copyright (C) 2005 Denis Berthod * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) open Ocsigen_http_frame open Http_header let meth_of_string = function | "GET" -> GET | "POST" -> POST | "HEAD" -> HEAD | "PUT" -> PUT | "DELETE" -> DELETE | "TRACE" -> TRACE | "OPTIONS" -> OPTIONS | "CONNECT" -> CONNECT | "LINK" -> LINK | "UNLINK" -> UNLINK | "PATCH" -> PATCH | s -> raise (Http_error.Http_exception (405, Some ("unknown method "^s), None)) let proto_of_string s = match String.uppercase s with | "HTTP/1.1" -> HTTP11 | "HTTP/1.0" -> HTTP10 | s -> raise (Http_error.Http_exception (505, None, None)) let add_header (n, v) h = let field = String.concat " " (List.rev v) in { h with headers = Http_headers.add n field h.headers } let handle_eof lexbuf = raise (Http_error.Http_exception (400, Some "unexpected end of file", None)) let handle_other lexbuf = raise (Http_error.Http_exception (400, Some ("unexpected character " ^ Lexing.lexeme lexbuf), None)) } (* RFC 2616, sect. 2.2 *) let char = ['\000'-'\127'] let ctl = ['\000'-'\031' '\127'] let lowalpha = ['a'-'z'] let upalpha = ['A'-'Z'] let alpha = upalpha | lowalpha let digit = ['0'-'9'] let alpha = lowalpha | upalpha let blank = [' ' '\t'] let crlf = "\r"? "\n" let separators = ['(' ')' '<' '>' '@' ',' ';' ':' '\\' '\"' '/' '[' ']' '?' '=' '{' '}' ' ' '\t'] let lws = crlf? [' ' '\t'] + let method_ = alpha* (* it is more general than what RFC request *) let request_URI = (_ #ctl #[' '] )* let http_version = ['h' 'H'] ['t' 'T'] ['t' 'T'] ['p' 'P'] "/" digit+ "." digit+ let token = ((char #separators) #ctl)+ (* token = 1* *) let field_name = token let field_content = (_ #ctl #[' '] )* (* *) let status_code = digit digit digit let reason_phrase = (_ #ctl)* let sp = blank+ rule header = parse | (method_ as meth) sp (request_URI as uri) sp (http_version as version) crlf { nofirstline { proto = proto_of_string(version); mode = Query ( meth_of_string(meth), uri ); headers = Http_headers.empty } lexbuf } | (http_version as version) sp ( status_code as status_code ) sp reason_phrase crlf { nofirstline { proto = proto_of_string(version); mode = Answer ( int_of_string status_code ); headers = Http_headers.empty } lexbuf } | eof { handle_eof lexbuf } | _ { handle_other lexbuf } and nofirstline h = parse | crlf { h } | (field_name as field_name) ":" { line field_name [] h lexbuf } | eof { handle_eof lexbuf } | _ { handle_other lexbuf } and line name content h = parse | crlf crlf { add_header (Http_headers.name name,content) h } | crlf (field_name as field_name) ":" { line field_name [] (add_header (Http_headers.name name,content) h) lexbuf } | lws { line name content h lexbuf } | blank { line name content h lexbuf } | ( field_content as c ) { line name (c::content) h lexbuf } | eof { handle_eof lexbuf } | _ { handle_other lexbuf } ocsigenserver-2.2.0/src/http/multipart.ml0000644000000000000000000002124212060404165016677 0ustar0000000000000000(* This code is inspired by mimestring.ml from OcamlNet *) (* Copyright Gerd Stolpmann, Patrick Doane *) (* Modified for Ocsigen/Lwt by Nataliya Guts and Vincent Balat *) (*VVV Check wether we should support int64 for large files? *) open Ocsigen_lib module S = Netstring_pcre open Lwt open Ocsigen_stream exception Multipart_error of string let cr_or_lf_re = S.regexp "[\013\n]";; let header_stripped_re = S.regexp "([^ \t\r\n:]+):[ \t]*((.*[^ \t\r\n])?([ \t\r]*\n[ \t](.*[^ \t\r\n])?)*)[ \t\r]*\n";; let header_unstripped_re = S.regexp "([^ \t\r\n:]+):([ \t]*.*\n([ \t].*\n)*)";; (* This much simpler expression returns the name and the unstripped * value. *) let empty_line_re = S.regexp "\013?\n";; let end_of_header_re = S.regexp "\n\013?\n";; let scan_header ?(downcase=true) ?(unfold=true) ?(strip=false) parstr ~start_pos:i0 ~end_pos:i1 = let header_re = if unfold || strip then header_stripped_re else header_unstripped_re in let rec parse_header i l = match S.string_match header_re parstr i with Some r -> let i' = S.match_end r in if i' > i1 then raise (Multipart_error "Mimestring.scan_header"); let name = if downcase then String.lowercase(S.matched_group r 1 parstr) else S.matched_group r 1 parstr in let value_with_crlf = S.matched_group r 2 parstr in let value = if unfold then S.global_replace cr_or_lf_re "" value_with_crlf else value_with_crlf in parse_header i' ( (name,value) :: l) | None -> (* The header must end with an empty line *) begin match S.string_match empty_line_re parstr i with Some r' -> List.rev l, S.match_end r' | None -> raise (Multipart_error "Mimestring.scan_header") end in parse_header i0 [] ;; let read_header ?downcase ?unfold ?strip s = let rec find_end_of_header s = catch (fun () -> let b = Ocsigen_stream.current_buffer s in (* Maybe the header is empty. In this case, there is an empty line * right at the beginning *) match S.string_match empty_line_re b 0 with Some r -> return (s, (S.match_end r)) | None -> (* Search the empty line: *) return (s, (S.match_end (snd (S.search_forward end_of_header_re b 0)))) ) (function | Not_found -> Ocsigen_stream.enlarge_stream s >>= (function Finished _ -> fail Stream_too_small | Cont (stri, _) as s -> find_end_of_header s) | e -> fail e) in find_end_of_header s >>= (fun (s, end_pos) -> let b = Ocsigen_stream.current_buffer s in let header, _ = scan_header ?downcase ?unfold ?strip b ~start_pos:0 ~end_pos in Ocsigen_stream.skip s (Int64.of_int end_pos) >>= (fun s -> return (s, header))) ;; let lf_re = S.regexp "[\n]";; let read_multipart_body decode_part boundary s = let rec search_window s re start = try return (s, snd (S.search_forward re (Ocsigen_stream.current_buffer s) start)) with Not_found -> Ocsigen_stream.enlarge_stream s >>= (function | Finished _ -> fail Stream_too_small | Cont (stri, _) as s -> search_window s re start) in let search_end_of_line s k = (* Search LF beginning at position k *) catch (fun () -> (search_window s lf_re k) >>= (fun (s, x) -> return (s, (S.match_end x)))) (function | Not_found -> fail (Multipart_error "read_multipart_body: MIME boundary without line end") | e -> fail e) in let search_first_boundary s = (* Search boundary per regexp; return the position of the character * immediately following the boundary (on the same line), or * raise Not_found. *) let re = S.regexp ("\n--" ^ S.quote boundary) in (search_window s re 0) >>= (fun (s, x) -> return (s, (S.match_end x))) in let check_beginning_is_boundary s = let del = "--" ^ boundary in let ldel = String.length del in Ocsigen_stream.stream_want s (ldel + 2) >>= (function | Finished _ as str2 -> return (str2, false, false) | Cont (ss, f) as str2 -> let long = String.length ss in let isdelim = (long >= ldel) && (String.sub ss 0 ldel = del) in let islast = isdelim && (String.sub ss ldel 2 = "--") in return (str2, isdelim, islast)) in let rec parse_parts s uses_crlf = (* PRE: [s] is at the beginning of the next part. * [uses_crlf] must be true if CRLF is used as EOL sequence, and false * if only LF is used as EOL sequence. *) let delimiter = (if uses_crlf then "\r" else "" ) ^ "\n--" ^ boundary in Ocsigen_stream.substream delimiter s >>= fun a -> decode_part a >>= fun (y, s) -> (* Now the position of [s] is at the beginning of the delimiter. * Check if there is a "--" after the delimiter (==> last part) *) let l_delimiter = String.length delimiter in Ocsigen_stream.next s >>= fun s -> Ocsigen_stream.stream_want s (l_delimiter+2) >>= fun s -> let last_part = match s with | Finished _ -> false | Cont (ss, f) -> let long = String.length ss in (long >= (l_delimiter+2)) && (ss.[l_delimiter] = '-') && (ss.[l_delimiter+1] = '-') in if last_part then return [ y ] else begin search_end_of_line s 2 >>= fun (s, k) -> (* [k]: Beginning of next part *) Ocsigen_stream.skip s (Int64.of_int k) >>= fun s -> parse_parts s uses_crlf >>= fun l -> return (y :: l) end in (* Check whether s directly begins with a boundary: *) check_beginning_is_boundary s >>= fun (s, b, islast) -> if islast then return [] else if b then begin (* Move to the beginning of the next line: *) search_end_of_line s 0 >>= (fun (s, k_eol) -> let uses_crlf = (Ocsigen_stream.current_buffer s).[k_eol-2] = '\r' in Ocsigen_stream.skip s (Int64.of_int k_eol) >>= fun s -> (* Begin with first part: *) parse_parts s uses_crlf) end else begin (* Search the first boundary: *) catch (fun () -> search_first_boundary s >>= fun (s, k_eob) -> (* or Not_found *) (* Printf.printf "k_eob=%d\n" k_eob; *) (* Move to the beginning of the next line: *) search_end_of_line s k_eob >>= fun (s, k_eol) -> let uses_crlf = (Ocsigen_stream.current_buffer s).[k_eol-2] = '\r' in (* Printf.printf "k_eol=%d\n" k_eol; *) Ocsigen_stream.skip s (Int64.of_int k_eol) >>= fun s -> (* Begin with first part: *) parse_parts s uses_crlf) (function | Not_found -> (* No boundary at all: The body is empty. *) return [] | e -> fail e) end ;; let empty_stream = Ocsigen_stream.get (Ocsigen_stream.make (fun () -> Ocsigen_stream.empty None)) let scan_multipart_body_from_stream s ~boundary ~create ~add ~stop ~maxsize= let decode_part stream = read_header stream >>= (fun (s, header) -> let p = create header in let rec while_stream size = function | Finished None -> return (size, empty_stream) | Finished (Some ss) -> return (size, ss) | Cont (stri, f) -> let long = String.length stri in let size2 = Int64.add size (Int64.of_int long) in if (match maxsize with None -> false | Some m -> (Int64.compare size2 m) > 0) then fail Ocsigen_Request_too_long else if stri = "" then Ocsigen_stream.next f >>= while_stream size else ((* catch (fun () -> add p stri) (fun e -> f () >>= Ocsigen_stream.consume >>= (fun () -> fail e)) *) add p stri >>= fun () -> Ocsigen_stream.next f >>= while_stream size2) in catch (fun () -> while_stream Int64.zero s >>= (fun (size, s) -> stop size p >>= fun r -> return (r, s))) (function error -> stop Int64.zero p >>= fun _ -> fail error)) in catch (fun () -> (* read the multipart body: *) Ocsigen_stream.next s >>= fun s -> read_multipart_body decode_part boundary s >>= (fun _ -> return ())) (function | Stream_too_small -> fail Ocsigen_Bad_Request | e -> fail e) ;; ocsigenserver-2.2.0/src/http/ocsigen_senders.ml0000644000000000000000000004277312060404165020044 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * sender_helpers.ml Copyright (C) 2005 Denis Berthod * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** This module provides predefined "senders" for usual types of pages to be sent by the server: xhtml, files, ... *) open Ocsigen_lib open Ocsigen_http_frame open Ocsigen_http_com open Lwt open Ocsigen_stream (*****************************************************************************) (** this module instantiate the HTTP_CONTENT signature for an Xhtml content*) module Make_XML_Content(Xml : Xml_sigs.Iterable) (Typed_xml : Xml_sigs.Typed_xml with module Xml := Xml) = struct module Xhtmlprinter = Xml_print.Make_typed(Xml)(Typed_xml)(Ocsigen_stream.StringStream) type t = Typed_xml.doc type options = Http_headers.accept Lazy.t let get_etag_aux x = None let get_etag ?options c = None let choose_content_type accepted alt default = match accepted, alt with | None, _ | _, [] -> default | Some accepted, alt -> try List.find (fun content_type -> List.exists (function | ((Some a, Some b),_,_) -> a^"/"^b = content_type | _ -> false) (Lazy.force accepted)) alt with Not_found -> default let result_of_content ?options c = let content_type = choose_content_type options Typed_xml.Info.alternative_content_types Typed_xml.Info.content_type in let x = Xhtmlprinter.print ~advert c in let default_result = default_result () in Lwt.return {default_result with res_content_length = None; res_content_type = Some content_type; res_etag = get_etag c; res_headers= Http_headers.dyn_headers; res_stream = (x, None) } end module Xhtml_content = Make_XML_Content(Xml)(Xhtml.M) module Html5_content = Make_XML_Content(Xml)(Html5.M) (*****************************************************************************) module Text_content = struct type t = string (* content *) * string (* content-type *) type options = unit let get_etag ?options (x, _) = None (* Some (Digest.to_hex (Digest.string x)) *) (* We do not add etags here because the content is probably generated and there are problemes with etags and POST requests: when doing POST request with etags, the semantinc is not to do side effects on the server when the etag match and respond with code 412 ( precondition failed ). Since the etag is calculated from the content of the answer, we cannot enforce this semantic correctly, so it is better not to send etags with POST requests. Here, we cannot know wether the request was in POST or GET, so the easiest way to fix that is to never send etags *) let result_of_content ?(options = ()) ((c, ct) as content) = let md5 = get_etag content in let default_result = default_result () in Lwt.return {default_result with res_content_length = Some (Int64.of_int (String.length c)); res_etag = md5; res_content_type = Some ct; res_headers= Http_headers.dyn_headers; res_stream = (Ocsigen_stream.make (fun () -> Ocsigen_stream.cont c (fun () -> Ocsigen_stream.empty None)), None) } end (*****************************************************************************) module Stream_content = (* Used to send data from a stream *) struct type t = string Ocsigen_stream.t type options = unit let get_etag ?options c = None let result_of_content ?(options = ()) c = let default_result = default_result () in Lwt.return {default_result with res_content_length = None; res_headers= Http_headers.dyn_headers; res_stream = (c, None)} end (*****************************************************************************) module Streamlist_content = (* Used to send data from streams *) struct type t = (unit -> string Ocsigen_stream.t Lwt.t) list * string (* content-type *) type options = unit let get_etag ?options c = None let result_of_content ?(options = ()) (c, ct) = let finalizer = ref (fun _ -> Lwt.return ()) in let finalize status = let f = !finalizer in finalizer := (fun _ -> Lwt.return ()); f status in let rec next stream l = Lwt.try_bind (fun () -> Ocsigen_stream.next stream) (fun s -> match s with Ocsigen_stream.Finished None -> finalize `Success >>= fun () -> next_stream l | Ocsigen_stream.Finished (Some stream) -> next stream l | Ocsigen_stream.Cont (v, stream) -> Ocsigen_stream.cont v (fun () -> next stream l)) (function Interrupted e | e -> (*XXX string_of_exn should know how to print "Interrupted _" exceptions*) exnhandler e l) and next_stream l = match l with [] -> Ocsigen_stream.empty None | f :: l -> Lwt.try_bind f (fun stream -> finalizer := (fun status -> Ocsigen_stream.finalize stream status); next (Ocsigen_stream.get stream) l) (fun e -> exnhandler e l) and exnhandler e l = Ocsigen_messages.warning ("Error while reading stream list: " ^ Printexc.to_string e); finalize `Failure >>= fun () -> next_stream l in let default_result = default_result () in Lwt.return {default_result with res_content_length = None; res_etag = get_etag c; res_stream = (Ocsigen_stream.make ~finalize (fun _ -> next_stream c), None); res_headers= Http_headers.dyn_headers; res_content_type = Some ct} end (*****************************************************************************) module Empty_content = struct type t = unit type options = unit let get_etag ?options c = None let result_of_content ?(options = ()) c = Lwt.return (empty_result ()) end (*****************************************************************************) (* Files *) (** this module instanciate the HTTP_CONTENT signature for files *) module File_content = struct type t = string (* nom du fichier *) * Ocsigen_charset_mime.charset_assoc * Ocsigen_charset_mime.mime_assoc type options = unit let read_file ?buffer_size fd = let buffer_size = match buffer_size with | None -> Ocsigen_config.get_filebuffersize () | Some s -> s in Ocsigen_messages.debug2 "start reading file (file opened)"; let buf = String.create buffer_size in let rec read_aux () = Lwt_unix.read fd buf 0 buffer_size >>= fun read -> if read = 0 then Ocsigen_stream.empty None else begin if read = buffer_size then Ocsigen_stream.cont buf read_aux else Ocsigen_stream.cont (String.sub buf 0 read) read_aux end in read_aux let get_etag_aux st = Some (Printf.sprintf "%Lx-%x-%f" st.Unix.LargeFile.st_size st.Unix.LargeFile.st_ino st.Unix.LargeFile.st_mtime) let get_etag ?options (f, _, _) = let st = Unix.LargeFile.stat f in get_etag_aux st let skip fd stream k = try ignore (Unix.LargeFile.lseek (Lwt_unix.unix_file_descr fd) k Unix.SEEK_CUR); Ocsigen_stream.next (Ocsigen_stream.get stream) with e -> Lwt.fail e let result_of_content ?options (c, charset_assoc, mime_assoc) = (* open the file *) try let fdu = Unix.openfile c [Unix.O_RDONLY;Unix.O_NONBLOCK] 0o666 in let fd = Lwt_unix.of_unix_file_descr fdu in try let st = Unix.LargeFile.fstat fdu in let etag = get_etag_aux st in let stream = read_file fd in let default_result = default_result () in Lwt.return {default_result with res_content_length = Some st.Unix.LargeFile.st_size; res_content_type = Some (Ocsigen_charset_mime.find_mime c mime_assoc); res_charset = Some (Ocsigen_charset_mime.find_charset c charset_assoc); res_lastmodified = Some st.Unix.LargeFile.st_mtime; res_etag = etag; res_stream = (Ocsigen_stream.make ~finalize: (fun _ -> Ocsigen_messages.debug2 "closing file"; Lwt_unix.close fd) stream, Some (skip fd)) } with e -> Lwt_unix.close fd >>= fun () -> raise e with e -> Ocsigen_messages.debug2 (Printexc.to_string e); fail e end (*****************************************************************************) (* directory listing - by Gabriel Kerneis *) (** this module instanciate the HTTP_CONTENT signature for directories *) module Directory_content = struct type t = string (* dir name *) * string list (* corresponding URL path *) type options = unit let get_etag_aux st = Some (Printf.sprintf "%Lx-%x-%f" st.Unix.LargeFile.st_size st.Unix.LargeFile.st_ino st.Unix.LargeFile.st_mtime) let get_etag ?options (f, _) = let st = Unix.LargeFile.stat f in get_etag_aux st let date fl = let t = Unix.gmtime fl in Printf.sprintf "%02d-%02d-%04d %02d:%02d:%02d" t.Unix.tm_mday (t.Unix.tm_mon + 1) (1900 + t.Unix.tm_year) t.Unix.tm_hour t.Unix.tm_min t.Unix.tm_sec let image_found fich = if fich="README" || fich="README.Debian" then "/ocsigenstuff/readme.png" else let reg=Netstring_pcre.regexp "([^//.]*)(.*)" in match Netstring_pcre.global_replace reg "$2" fich with | ".jpeg" | ".jpg" | ".gif" | ".tif" | ".png" -> "/ocsigenstuff/image.png" | ".ps" -> "/ocsigenstuff/postscript.png" | ".pdf" -> "/ocsigenstuff/pdf.png" | ".html" | ".htm" | ".php" -> "/ocsigenstuff/html.png" | ".mp3" | ".wma" -> "/ocsigenstuff/sound.png" | ".c" -> "/ocsigenstuff/source_c.png" | ".java" -> "/ocsigenstuff/source_java.png" | ".pl" -> "/ocsigenstuff/source_pl.png" | ".py" -> "/ocsigenstuff/source_py.png" | ".iso" | ".mds" | ".mdf" | ".cue" | ".nrg" | ".cdd" -> "/ocsigenstuff/cdimage.png" | ".deb" -> "/ocsigenstuff/deb.png" | ".dvi" -> "/ocsigenstuff/dvi.png" | ".rpm" -> "/ocsigenstuff/rpm.png" | ".tar" | ".rar" -> "/ocsigenstuff/tar.png" | ".gz" | ".tar.gz" | ".tgz" | ".zip" | ".jar" -> "/ocsigenstuff/tgz.png" | ".tex" -> "/ocsigenstuff/tex.png" | ".avi" | ".mov" -> "/ocsigenstuff/video.png" | ".txt" -> "/ocsigenstuff/txt.png" | _ -> "/ocsigenstuff/unknown.png" (* An html row for a file in the directory listing *) let file_row name icon stat = Printf.sprintf " \"\" %s %Ld %s " icon (Netencoding.Url.encode ~plus:false name) name stat.Unix.LargeFile.st_size (date stat.Unix.LargeFile.st_mtime) let directory filename = let dir = Unix.opendir filename in let rec aux d = try let f = Unix.readdir dir in try let stat = Unix.LargeFile.stat (filename^f) in if stat.Unix.LargeFile.st_kind = Unix.S_DIR && f <> "." && f <> ".." then (`Dir, f, file_row f "/ocsigenstuff/folder_open.png" stat) :: aux d else if stat.Unix.LargeFile.st_kind = Unix.S_REG && f.[(String.length f) - 1] <> '~' then (`Reg, f, file_row f (image_found f) stat) :: aux d else aux d with _ (* Unix.stat can fail for a lot of reasons *) -> aux d with End_of_file -> Unix.closedir d;[] in let trie li = List.sort (fun (a1, b1, _) (a2, b2, _) -> match a1, a2 with | `Dir, `Dir -> if b1 0 | _, `Dir -> 1 | _, _-> if b1 "" | (_, _, i)::l -> i^(aux2 l) in aux2 (trie (aux dir)) let result_of_content ?(options = ()) (filename, path) = let stat = Unix.LargeFile.stat filename in let rec back = function | [] | [""] -> assert false | [_] | [_ ; ""] -> [] | i::j -> i :: (back j) in let parent = if path = [] || path = [""] then None else Some ("/"^Url.string_of_url_path ~encode:true (back path)) in let before = let st = Url.string_of_url_path ~encode:false path in "\n\ \n\ \n\ Listing Directory: "^st^"\n\n\

"^st^"

\n\ \n\ \ \n" and back = match parent with | None -> "" | Some parent -> "\n\ \n\ \n\ \n\ \n\ \n" and after= "
NameSizeLast modified
\"\"Parent Directory"^(Int64.to_string stat.Unix.LargeFile.st_size)^""^(date stat.Unix.LargeFile.st_mtime)^"
\

Ocsigen Webserver

\ " in let c = before^back^(directory filename)^after in let etag = get_etag_aux stat in Text_content.result_of_content (c, "text/html") >>= fun r -> Lwt.return {r with res_lastmodified = Some stat.Unix.LargeFile.st_mtime; res_etag = etag; res_charset= Some "utf-8" } end (*****************************************************************************) module Error_content = (** sends an error page that fit the error number *) struct type t = int option * exn option * Ocsigen_cookies.cookieset type options = unit let get_etag ?options c = None let error_page s msg c = Xhtml.M.html (Xhtml.M.head (Xhtml.M.title (Xhtml.M.pcdata s)) []) (Xhtml.M.body (Xhtml.M.h1 [Xhtml.M.pcdata msg]:: Xhtml.M.p [Xhtml.M.pcdata s]:: c) ) let result_of_content ?(options = ()) (code, exn, cookies_to_set) = let code = match code with | None -> 500 | Some c -> c in let (error_code, error_msg, headers) = match exn with | Some (Http_error.Http_exception (errcode, msgs, h) as e) -> let msg = Http_error.string_of_http_exception e in let headers = match h with | Some h -> h | None -> Http_headers.dyn_headers in (errcode, msg, headers) | _ -> let error_mes = Http_error.expl_of_code code in (code, error_mes, Http_headers.empty) in let headers = (* puts dynamic headers *) let (<<) h (n, v) = Http_headers.replace n v h in headers << (Http_headers.cache_control, "no-cache") << (Http_headers.expires, "0") in let str_code = string_of_int error_code in let err_page = match exn with | Some exn when Ocsigen_config.get_debugmode () -> error_page ("Error "^str_code) error_msg [Xhtml.M.p [Xhtml.M.pcdata (Printexc.to_string exn); Xhtml.M.br (); Xhtml.M.em [Xhtml.M.pcdata "(Ocsigen running in debug mode)"] ]] | _ -> error_page ("Error "^str_code) error_msg [] in Xhtml_content.result_of_content err_page >>= fun r -> Lwt.return {r with res_cookies = cookies_to_set; res_code = error_code; res_charset = Some "utf-8"; res_headers = headers; } end let send_error ?code ?exn slot ~clientproto ?mode ?proto ?(cookies = Ocsigen_cookies.Cookies.empty) ~head ~sender () = Error_content.result_of_content (code, exn, cookies) >>= fun r -> send slot ~clientproto ?mode ?proto ~head ~sender r ocsigenserver-2.2.0/src/http/ocsigen_http_com.ml0000644000000000000000000010065112060404165020204 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * ocsigen_http_com.ml Copyright (C) 2005 * Denis Berthod, Vincent Balat, Jérôme Vouillon * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (* TODO - server.ml - shorter timeouts for keep-alive - check the code against the HTTP spec - defunctorize sender code - rewrite HTTP parser - check HTTP version (at the moment, we always respond with HTTP/1.1!!!) - for possibly large reads/writes on the network (streaming of more than a few kilobytes), we should use Lwt_unix.wait_read and Lwt_unix.wait_write: this gives some time for other requests to be handled, and the read/write is resumed only when necessary PERSISTENT CONNECTIONS ====================== http://www.tools.ietf.org/html/draft-ietf-http-connection-00 *) open Ocsigen_lib open Ocsigen_http_frame open Ocsigen_cookies (** this module provide a mecanism to communicate with some http frames *) let (>>=) = Lwt.(>>=) (****) (** Internal exceptions *) exception Buffer_full (** Exported exceptions *) exception Connection_closed exception Lost_connection of exn exception Timeout exception Keepalive_timeout exception Aborted (*XXX Provide the max size? *) let request_too_large max = Ocsigen_http_frame.Http_error.Http_exception (413, Some "request contents too large", None) let convert_io_error e = match e with Unix.Unix_error(Unix.ECONNRESET,_,_) | Ssl.Read_error (Ssl.Error_syscall | Ssl.Error_ssl) | End_of_file | Ssl.Write_error (Ssl.Error_zero_return | Ssl.Error_syscall | Ssl.Error_ssl) | Unix.Unix_error (Unix.EPIPE, _, _) -> Lost_connection e | _ -> e let catch_io_errors f = Lwt.catch f (fun e -> Lwt.fail (convert_io_error e)) (****) type mode = Answer | Query | Nofirstline type waiter = { w_wait : unit Lwt.t; w_waker: unit Lwt.u option; mutable w_did_wait : bool } let create_waiter block = if block then let (t, u) = Lwt.wait () in { w_wait = t; w_waker = Some u; w_did_wait = false } else { w_wait = Lwt.return (); w_waker = None; w_did_wait = false } (** buffer de comunication permettant la reception et la recupération des messages *) type connection = { id : int; fd : Lwt_ssl.socket; chan : Lwt_chan.out_channel; timeout : Lwt_timeout.t; r_mode : mode; closed : unit Lwt.t * unit Lwt.u; mutable buf : string; mutable read_pos : int; mutable write_pos : int; mutable read_mutex : Lwt_mutex.t; mutable extension_mutex : Lwt_mutex.t; (* to keep requests in right order *) mutable senders : waiter; mutable sender_count : int } let connection_id x = x.id let connection_fd x = x.fd let new_id = let c = ref 0 in fun () -> incr c; !c let create_receiver timeout mode fd = let buffer_size = Ocsigen_config.get_netbuffersize () in let timeout = Lwt_timeout.create timeout (fun () -> Lwt_ssl.abort fd Timeout) in { id = new_id (); fd = fd; chan = Lwt_chan.make_out_channel (fun buf pos len -> Lwt_timeout.start timeout; Lwt.try_bind (fun () -> Lwt_ssl.write fd buf pos len) (fun l -> Lwt_timeout.stop timeout; Lwt.return l) (fun e -> Lwt_timeout.stop timeout; Lwt.fail (convert_io_error e))); timeout = timeout; r_mode = mode; buf=String.create buffer_size; read_pos = 0; write_pos = 0; closed = Lwt.wait (); read_mutex = Lwt_mutex.create (); extension_mutex = Lwt_mutex.create (); senders = create_waiter false; sender_count = 0 } (*XXX Do we really need to export this function? *) let lock_receiver receiver = Lwt_mutex.lock receiver.read_mutex let unlock_receiver receiver = Lwt_mutex.unlock receiver.read_mutex let abort conn = Lwt.wakeup (snd conn.closed) (); Lwt_ssl.abort conn.fd Aborted let closed conn = fst conn.closed let wakeup_next_request conn = Lwt_mutex.unlock conn.extension_mutex let block_next_request conn = Lwt_mutex.lock conn.extension_mutex (****) (** the number of byte in the buffer*) let buf_used buffer = buffer.write_pos - buffer.read_pos let buf_size buffer = String.length buffer.buf let buf_get_string buffer len = let pos = buffer.read_pos in assert (pos + len <= buffer.write_pos); buffer.read_pos <- buffer.read_pos + len; String.sub buffer.buf pos len (** Receive some more data. *) let receive receiver = let used = buf_used receiver in let free = buf_size receiver - used in if free = 0 then Lwt.fail Buffer_full else begin if receiver.read_pos > 0 then begin String.blit receiver.buf receiver.read_pos receiver.buf 0 used; receiver.write_pos <- used; receiver.read_pos <- 0 end; if receiver.sender_count = 0 then Lwt_timeout.start receiver.timeout; Lwt_ssl.read receiver.fd receiver.buf receiver.write_pos free >>= fun len -> Lwt_timeout.stop receiver.timeout; receiver.write_pos <- used + len; if len = 0 then Lwt.fail End_of_file else begin Lwt.return () end end (** Receive data until at least [len] chars are available *) let rec fill receiver len = if buf_used receiver >= len then Lwt.return () else begin receive receiver >>= fun () -> fill receiver len end (****) type size = Exact of int64 | Bounded of int64 option let rec extract_aux receiver pos bound cont = let avail = buf_used receiver in if avail = 0 then Lwt.try_bind (fun () -> receive receiver) (fun () -> extract_aux receiver pos bound cont) (fun e -> match e, bound with End_of_file, Bounded _ -> Ocsigen_stream.empty None | _ -> Lwt.fail (convert_io_error e)) else let pos' = Int64.add pos (Int64.of_int avail) in match bound with Exact l when pos' >= l -> let len = Int64.to_int (Int64.sub l pos) in let s = buf_get_string receiver len in Ocsigen_stream.cont s cont | Bounded (Some l) when pos' > l -> Lwt.fail (request_too_large l) | _ -> let s = buf_get_string receiver avail in Ocsigen_stream.cont s (fun () -> extract_aux receiver pos' bound cont) (** Stream from the receiver channel. *) let extract receiver bound = Ocsigen_stream.make (fun () -> extract_aux receiver 0L bound (fun () -> Lwt_mutex.unlock receiver.read_mutex; Ocsigen_stream.empty None)) type pat_res = Found of int | Retry of int (** Wait for a given pattern to be received *) let rec wait_pattern find_pattern receiver cur_pos = let read_pos = receiver.read_pos in let avail = receiver.write_pos - (cur_pos + read_pos) in match find_pattern receiver.buf (cur_pos + read_pos) avail with Found end_pos -> Lwt.return (end_pos - read_pos) | Retry retry_pos -> let pos = max 0 (retry_pos - read_pos) in receive receiver >>= fun () -> wait_pattern find_pattern receiver pos (** Find the first sequence crlfcrlf or lflf in the buffer *) let rec find_header buf pos rem = if rem < 2 then Retry (pos - 3) else if buf.[pos + 1] <> '\n' then find_header buf (pos + 1) (rem - 1) else if buf.[pos] = '\n' then Found (pos + 2) else if rem >= 4 && buf.[pos] = '\r' && buf.[pos + 2] = '\r' && buf.[pos + 3] = '\n' then Found (pos + 4) else find_header buf (pos + 1) (rem - 1) (** Wait until a full header is received. Returns the length of the header *) let wait_http_header receiver = Lwt.catch (fun () -> wait_pattern find_header receiver 0) (fun e -> Lwt.fail (match e with Buffer_full -> Ocsigen_http_frame.Http_error.Http_exception (413, Some "header too long", None) | End_of_file when buf_used receiver = 0 -> Connection_closed | Timeout when buf_used receiver = 0 && receiver.sender_count = 0 -> Keepalive_timeout | _ -> convert_io_error e)) (** Find an end of line crlf or lf in the buffer *) let rec find_line buf pos rem = if rem < 1 then Retry pos else if buf.[pos] = '\n' then Found (pos + 1) else find_line buf (pos + 1) (rem - 1) (** Wait until a full line is received. Returns the length of the line *) let wait_line receiver = wait_pattern find_line receiver 0 (** extract chunked data in destructive way from the buffer. The optional [?finish] parameter is an action that will be executed when the stream is finished. *) let extract_chunked receiver = let ec_fail e = let e = if e = Buffer_full then Ocsigen_http_frame.Http_error.Http_exception (400, Some "bad chunked data", None) else convert_io_error e in Lwt.fail e in let extract_crlf receiver = Lwt.catch (fun () -> fill receiver 2 >>= fun () -> let pos = receiver.read_pos in if receiver.buf.[pos] = '\r' && receiver.buf.[pos + 1] = '\n' then begin receiver.read_pos <- pos + 2; Lwt.return () end else Lwt.fail (Ocsigen_http_frame.Http_error.Http_exception (400, Some "bad chunked data", None))) ec_fail in let rec aux () = Lwt.try_bind (fun () -> wait_line receiver) (fun len -> let chunksize = buf_get_string receiver len in (*XXX Should check that we really have chunked data *) let chunksize = Scanf.sscanf chunksize "%x" (fun x -> x) in if chunksize = 0 then begin extract_crlf receiver >>= fun () -> Lwt_mutex.unlock receiver.read_mutex; Ocsigen_stream.empty None end else extract_aux receiver 0L (Exact (Int64.of_int chunksize)) (fun () -> extract_crlf receiver >>= fun () -> aux ())) ec_fail in Ocsigen_stream.make aux (* RFC2616, sect 4.3 *) let code_without_message_body code = (code >= 100 && code < 200) || code = 204 || code = 304 let parse_http_header mode s = (*XXX Should check that the message corresponds to the mode *) let lexbuf = Lexing.from_string s in try Lwt.return (if mode = Nofirstline then Http_lexer.nofirstline { Ocsigen_http_frame.Http_header.mode = Ocsigen_http_frame.Http_header.Nofirstline; proto = Ocsigen_http_frame.Http_header.HTTP11; headers = Http_headers.empty } lexbuf else Http_lexer.header lexbuf) with Parsing.Parse_error -> Lwt.fail (Ocsigen_http_frame.Http_error.Http_exception (400, Some "parse error", None)) let get_maxsize = function | Nofirstline | Answer -> None (* Ocsigen_config.get_maxanswerbodysize () Do we need a limit? If yes, add an exception Ocsigen_Answer_too_long. (like Ocsigen_Request_too_long) *) | Query -> Ocsigen_config.get_maxrequestbodysize () let return_with_no_body receiver = Lwt.return None (** get an http frame *) let get_http_frame ?(head = false) receiver = Lwt_mutex.lock receiver.read_mutex >>= fun () -> wait_http_header receiver >>= fun len -> let string_header = buf_get_string receiver len in parse_http_header receiver.r_mode string_header >>= fun header -> (* RFC2616, sect 4.4 1. Any response message which "MUST NOT" include a message-body (such as the 1xx, 204, and 304 responses and any response to a HEAD request) is always terminated by the first empty line after the header fields, regardless of the entity-header fields present in the message. *) begin match header.Ocsigen_http_frame.Http_header.mode with | Ocsigen_http_frame.Http_header.Answer code when code_without_message_body code -> return_with_no_body receiver | _ -> if head then begin return_with_no_body receiver end else begin (* RFC 2. If a Transfer-Encoding header field (section 14.41) is present and has any value other than "identity", then the transfer-length is defined by use of the "chunked" transfer-coding (section 3.6), unless the message is terminated by closing the connection. *) let chunked = try Ocsigen_http_frame.Http_header.get_headers_value header Http_headers.transfer_encoding <> "identity" with Not_found -> false in if chunked then Lwt.return (Some (extract_chunked receiver)) else begin (* RFC 3. If a Content-Length header field (section 14.13) is present, its decimal value in OCTETs represents both the entity-length and the transfer-length. The Content-Length header field MUST NOT be sent if these two lengths are different (i.e., if a Transfer-Encoding header field is present). If a message is received with both a Transfer-Encoding header field and a Content-Length header field, the latter MUST be ignored. *) let content_length = try (*XXX Check for overflow/malformed field... *) Some (Int64.of_string (Ocsigen_http_frame.Http_header.get_headers_value header Http_headers.content_length)) with Not_found -> None in match content_length with | Some cl -> if cl < 0L then (*XXX Malformed field!!!*) Lwt.fail (Ocsigen_http_frame.Http_error.Http_exception (400, Some "ill-formed content-length header", None)) else if cl = 0L then return_with_no_body receiver else let max = get_maxsize receiver.r_mode in begin match max with Some m when cl > m -> Lwt.fail (request_too_large m) | _ -> Lwt.return (Some (extract receiver (Exact cl))) end | None -> (* RFC 4. If the message uses the media type "multipart/byteranges", and the transfer-length is not otherwise specified, then this self- delimiting media type defines the transfer-length. This media type MUST NOT be used unless the sender knows that the recipient can parse it; the presence in a request of a Range header with multiple byte- range specifiers from a 1.1 client implies that the client can parse multipart/byteranges responses. NOT IMPLEMENTED 5. By the server closing the connection. (Closing the connection cannot be used to indicate the end of a request body, since that would leave no possibility for the server to send back a response.) *) match header.Ocsigen_http_frame.Http_header.mode with Ocsigen_http_frame.Http_header.Query (_, s) -> return_with_no_body receiver | _ -> let st = extract receiver (Bounded (get_maxsize receiver.r_mode)) in Lwt.return (Some st) end end end >>= fun b -> let la = (match b with | None -> Lwt_mutex.unlock receiver.read_mutex; None | Some s -> Ocsigen_stream.add_finalizer s (fun _ -> Ocsigen_stream.consume s); Some s ) in Lwt.return {Ocsigen_http_frame.frame_header = header; frame_content = la; frame_abort = (fun () -> Lwt_ssl.close receiver.fd)} (*VVV close or shutdown? *) (****) type slot = { sl_waiter : waiter; sl_chan : Lwt_chan.out_channel; sl_ssl : bool (* for secure cookies only *)} let create_slot conn = { sl_waiter = conn.senders; sl_chan = conn.chan; sl_ssl = Lwt_ssl.is_ssl conn.fd} (****) let start_processing conn f = let slot = create_slot conn in let next_waiter = create_waiter true in conn.senders <- next_waiter; conn.sender_count <- conn.sender_count + 1; Lwt_timeout.stop conn.timeout; ignore (* We can ignore the thread as all the exceptions are caught *) (Lwt.try_bind (fun () -> Lwt.finalize (fun () -> (* If we want to serialize query processing, we can call [wait_previous_senders slot] here. But then, we should also flush the channel sooner. *) f slot >>= (fun () -> (*XXX Check that we waited: slot.sl_did_wait = true *) (*XXX It would be clearer to put this code at the end of the sender function, but we don't have access to [next_slot] there *) if not next_waiter.w_did_wait then Lwt_chan.flush conn.chan else Lwt.return ())) (fun () -> conn.sender_count <- conn.sender_count - 1; if conn.sender_count = 0 then Lwt_timeout.start conn.timeout; Lwt.return ())) (fun () -> (match next_waiter.w_waker with | None -> () | Some wk -> Lwt.wakeup wk ()) ; Lwt.return () ) (fun e -> (match next_waiter.w_waker with | None -> () | Some wk -> Lwt.wakeup_exn wk e) ; Lwt.return () )) let wait_previous_senders slot = slot.sl_waiter.w_did_wait <- true; slot.sl_waiter.w_wait let wait_all_senders conn = Lwt.finalize (fun () -> Lwt.catch (*XXX Do we need a flush here? Are we properly flushing in case of an error? *) (fun () -> conn.senders.w_wait >>= fun () -> Lwt_chan.flush conn.chan) (fun e -> match e with Aborted -> Lwt.return () | _ -> Lwt.fail e)) (fun () -> Lwt_timeout.stop conn.timeout; Lwt.return ()) let (<<) h (n, v) = Http_headers.replace n v h let (< h (* None means: do not change the value *) | Some v -> Http_headers.replace n v h let gmtdate d = let x = Netdate.mk_mail_date ~zone:0 d in try (*XXX !!!*) let ind_plus = String.index x '+' in String.set x ind_plus 'G'; String.set x (ind_plus + 1) 'M'; String.set x (ind_plus + 2) 'T'; String.sub x 0 (ind_plus + 3) with Invalid_argument _ | Not_found -> Ocsigen_messages.debug2 "no +"; x type sender_type = { (** protocol to be used : HTTP/1.0 HTTP/1.1 *) mutable s_proto: Ocsigen_http_frame.Http_header.proto; (** the options to send with each frame, for exemple : server name , ... *) mutable s_headers: Http_headers.t } (** create a new sender *) let create_sender ?server_name ?(headers=Http_headers.empty) ?(proto=Ocsigen_http_frame.Http_header.HTTP11) () = let headers = Http_headers.replace Http_headers.accept_ranges "none" headers in let headers = Http_headers.replace_opt Http_headers.server server_name headers in { s_headers = headers; s_proto = proto } let default_sender = create_sender ~server_name:Ocsigen_config.server_name () (* Old version (* XXX Maybe we should merge small strings *) (* XXX We should probably make sure that any exception raised by the stream is properly caught *) let rec write_stream_chunked out_ch stream = Ocsigen_stream.next stream >>= fun e -> match e with Ocsigen_stream.Finished _ -> Lwt_chan.output_string out_ch "0\r\n\r\n" | Ocsigen_stream.Cont (s, next) -> let l = String.length s in begin if l = 0 then (* It is incorrect to send an empty chunk *) Lwt.return () else begin Lwt_chan.output_string out_ch (Format.sprintf "%x\r\n" l) >>= fun () -> Lwt_chan.output_string out_ch s >>= fun () -> Lwt_chan.output_string out_ch "\r\n" end end >>= fun () -> write_stream_chunked out_ch next *) (* XXX We should probably make sure that any exception raised by the stream is properly caught *) (* 20071128 Current xhtml pretty printer is making lots of very small strings. We bufferise them before creating a thunk. Benchmarks cannot prove that it is better, but at least the network stream is readable ... It is then buffered again by Lwt_chan. Is there a way to have only one buffer? *) let write_stream_chunked out_ch stream = let buf_size = 4096 in let size_for_not_buffering = 900 in let buffer = String.create buf_size in let rec aux stream len = Ocsigen_stream.next stream >>= fun e -> match e with | Ocsigen_stream.Finished _ -> (if len > 0 then begin (* It is incorrect to send an empty chunk *) Lwt_chan.output_string out_ch (Format.sprintf "%x\r\n" len) >>= fun () -> Lwt_chan.output out_ch buffer 0 len >>= fun () -> Lwt_chan.output_string out_ch "\r\n" end else Lwt.return ()) >>= fun () -> Lwt_chan.output_string out_ch "0\r\n\r\n" | Ocsigen_stream.Cont (s, next) -> let l = String.length s in if l = 0 then aux next len else if l >= size_for_not_buffering then begin (if len > 0 then begin Lwt_chan.output_string out_ch (Format.sprintf "%x\r\n" len) >>= fun () -> Lwt_chan.output out_ch buffer 0 len >>= fun () -> Lwt_chan.output_string out_ch "\r\n" end else Lwt.return ()) >>= fun () -> Lwt_chan.output_string out_ch (Format.sprintf "%x\r\n" l) >>= fun () -> Lwt_chan.output out_ch s 0 l >>= fun () -> Lwt_chan.output_string out_ch "\r\n" >>= fun () -> aux next 0 end else (* Will not work if l is very large: *) let available = buf_size - len in if l > available then begin Lwt_chan.output_string out_ch (Format.sprintf "%x\r\n" buf_size) >>= fun () -> Lwt_chan.output out_ch buffer 0 len >>= fun () -> Lwt_chan.output out_ch s 0 available >>= fun () -> Lwt_chan.output_string out_ch "\r\n" >>= fun () -> let newlen = l - available in String.blit s available buffer 0 newlen; aux next newlen end else begin String.blit s 0 buffer len l; aux next (len + l) end in aux stream 0 let rec write_stream_raw out_ch stream = Ocsigen_stream.next stream >>= fun e -> match e with | Ocsigen_stream.Finished _ -> Lwt.return () | Ocsigen_stream.Cont (s, next) -> Lwt_chan.output_string out_ch s >>= fun () -> write_stream_raw out_ch next (*XXX We should check the length of the stream: - do not send more than expected - abort the connection before the right length is emitted so that the client can know something wrong happened *) let write_stream ?(chunked=false) out_ch stream = let stream = Ocsigen_stream.get stream in if chunked then write_stream_chunked out_ch stream else write_stream_raw out_ch stream module H = Ocsigen_http_frame.Http_header let set_result_observer, observe_result = let observer = ref (fun _ _ -> Lwt.return ()) in ((fun f -> let o = !observer in observer := (fun a b -> o a b >>= fun () -> f a b)), (fun a b -> !observer a b)) (** Sends the HTTP frame. * The headers are merged with those of the sender, the priority * being given to the newly defined header in case of conflict. * code is the code of the http answer * keep_alive is a boolean value that set the field Connection *) let send ?reopen slot ~clientproto ?mode ?proto ?keep_alive (* now (06/02/2008) used only to request keep-alive while used as client *) ~head (* send only the header *) ~sender res = let send_aux ~mode hds = Lwt.catch (fun () -> (* [slot] is here for pipelining: we must wait before sending the page, because the previous one may not be sent. *) wait_previous_senders slot >>= fun () -> let out_ch = slot.sl_chan in let empty_content = match mode with | H.Nofirstline -> false | H.Answer code -> code_without_message_body code | H.Query _ -> false in let chunked = res.res_content_length = None && clientproto <> Ocsigen_http_frame.Http_header.HTTP10 && not empty_content && not head in (* if HTTP/1.0 we do not use chunked encoding even if the client tells that it supports it, because it may be an HTTP/1.0 proxy that transmits the header by mistake. In that case, we close the connection after the answer. *) let with_default v default = match v with None -> default | Some v -> v in (*XXX Make sure that there is no way to put wrong headers *) (*VVV and that all required headers are here ... *) let hds = Http_headers.with_defaults hds sender.s_headers in let hds = Http_headers.replace_opt Http_headers.transfer_encoding (if chunked then Some "chunked" else None) hds in let hds = Http_headers.replace_opt Http_headers.content_length (match res.res_content_length with | None -> None | Some l -> Some (Int64.to_string l)) hds in (* 06/02/2008 We decided that we won't include a connection header at all for answers. If HTTP/1.0, we always close (which is the default). If HTTP/1.1, we always keep alive, but if the client asked to close. The default is to keep alive. But the client will close. *) let hds = match keep_alive with | None -> hds | Some ka -> hds < Lwt.catch (fun () -> Ocsigen_messages.debug2 "writing header"; let hh = Framepp.string_of_header hd in Ocsigen_messages.debug2 hh; observe_result hd hh >>= fun () -> Lwt_chan.output_string out_ch hh >>= fun () -> (if reopen <> None then (* If we want to give a possibility to reopen if it fails, we must detect the failure before beginning to read the stream *) Lwt_chan.flush out_ch else Lwt.return ()) ) (fun e -> (* *** If we are doing a request, we may want to retry once (in the case when we reuse an old connection) *** *) match reopen with | None -> Lwt.fail e | Some reopen -> match convert_io_error e with | Keepalive_timeout | Timeout | Connection_closed | Unix.Unix_error (Unix.EBADF,_ ,_) | Lost_connection _ -> reopen () >>= fun () -> Lwt.fail e | _ -> Ocsigen_messages.warning ("Ocsigen_http_com: reopening after exception "^ (Printexc.to_string e)^ " (Is that right?) Please report this error."); ignore (reopen ()); Lwt.fail e ) ) >>= fun () -> (if empty_content || head then begin Lwt.return () end else begin Ocsigen_messages.debug2 "writing body"; write_stream ~chunked out_ch (fst res.res_stream) end) >>= fun () -> Lwt_chan.flush out_ch (* Vincent: I add this otherwise HEAD answers are not flushed by the reverse proxy *) >>= fun () -> Ocsigen_stream.finalize (fst res.res_stream) `Success ) (fun e -> Ocsigen_stream.finalize (fst res.res_stream) `Failure >>= fun () -> Lwt.fail e ) in (*XXX Maybe we can compute this only at most once a second*) (* ajout des options spécifiques à la page *) let date = gmtdate (Unix.time ()) in let headers = res.res_headers < None (* We do not put last modified for dynamically generated pages, otherwise it is not possible to cache them. Without Last-Modified, ETag is taken into account by proxies/browsers *) | Some l -> Some (gmtdate l)) in let mode = match mode with | None -> Http_header.Answer res.res_code | Some m -> m in let headers = match mode with | H.Query _ -> headers (* We do not put date in headers for queries. cf bug #134 in trac "the header "Date" is sometime used to compute the signature of the REST request, and it's value may change between the time you compute the signature and the time the request is actually performed." RFC 2616 says: "Clients SHOULD only send a Date header field in messages that include an entity-body, as in the case of the PUT and POST requests, and even then it is optional. A client without a clock MUST NOT send a Date header field in a request." *) (*VVV What about Nofirstline? *) | _ -> headers << (Http_headers.date, date) in let mkcook path exp name c secure = Format.sprintf "%s=%s%s%s" name c (*VVV encode = true? *) ("; path=/" ^ Url.string_of_url_path ~encode:true path) (if secure && slot.sl_ssl then "; secure" else "")^ (match exp with | Some s -> "; expires=" ^ Netdate.format "%a, %d-%b-%Y %H:%M:%S GMT" (Netdate.create s) | None -> "") in let mkcookl path t hds = CookiesTable.fold (fun name c h -> let exp, v, secure = match c with | Ocsigen_cookies.OUnset -> (Some 0., "", false) | Ocsigen_cookies.OSet (t, v, secure) -> (t, v, secure) in Http_headers.add Http_headers.set_cookie (mkcook path exp name v secure) h) t hds in let headers = Cookies.fold mkcookl res.res_cookies headers < None | Some l -> Some (Format.sprintf "\"%s\"" l)) (*XXX Is it the right place to perform quoting?*) < None | Some s -> if String.length s >= 4 then match String.sub s 0 4, res.res_charset with | "text", Some "" -> Some s | "text", Some c -> Some (Format.sprintf "%s; charset=%s" s c) | _ -> match String.sub s (String.length s - 4) 4, res.res_charset with | ("+xml"|"/xml"), Some "" -> Some s | ("+xml"|"/xml"), Some c -> Some (Format.sprintf "%s; charset=%s" s c) | _ -> res.res_content_type else res.res_content_type ) in send_aux ~mode headers ocsigenserver-2.2.0/src/http/multipart.mli0000644000000000000000000000044312060404165017050 0ustar0000000000000000 val scan_multipart_body_from_stream: string Ocsigen_stream.stream -> boundary:string -> create:((string * string) list -> 'a) -> add:('a -> string -> unit Lwt.t) -> stop:(int64 -> 'a -> 'b Lwt.t) -> maxsize:Int64.t option -> unit Lwt.t ocsigenserver-2.2.0/src/http/ocsigen_http_com.mli0000644000000000000000000000664212060404165020362 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * ocsigen_http_com.ml Copyright (C) 2005 * Denis Berthod, Vincent Balat, Jérôme Vouillon * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Sending and receiving HTTP frames *) (* Who can raise the exceptions: R: receiver r: receiver stream S: sender *) (** The other side has cleanly closed the connection after a message *) exception Connection_closed (* R *) (** The connection has been unexpectedly broken *) exception Lost_connection of exn (* RrS *) (** No activity on the other side *) exception Timeout (* RrS *) exception Keepalive_timeout (* R *) (** Connection killed *) exception Aborted (* RrS *) type mode = Answer | Query | Nofirstline type connection val create_receiver : int -> mode -> Lwt_ssl.socket -> connection val lock_receiver : connection -> unit Lwt.t val unlock_receiver : connection -> unit val wakeup_next_request : connection -> unit val block_next_request : connection -> unit Lwt.t val get_http_frame : ?head:bool -> connection -> Ocsigen_http_frame.t Lwt.t val connection_id : connection -> int val connection_fd : connection -> Lwt_ssl.socket (** [closed conn] is a thread waking up when the connection is closed *) val closed : connection -> unit Lwt.t (****) type slot val start_processing : connection -> (slot -> unit Lwt.t) -> unit val wait_all_senders : connection -> unit Lwt.t (****) (** This function may return any I/O error from the channel, or a interrupted stream exception. *) val write_stream : ?chunked:bool -> Lwt_chan.out_channel -> string Ocsigen_stream.t -> unit Lwt.t (****) type sender_type val create_sender : ?server_name:string -> ?headers:Http_headers.t -> ?proto:Ocsigen_http_frame.Http_header.proto -> unit -> sender_type (** Sender with only the server name, and HTTP/1.1 *) val default_sender : sender_type (** send an HTTP message. [send] may also fail with [Interrupted_stream] exception if the input stream is interrupted. *) val send : ?reopen:(unit -> unit Lwt.t) -> slot -> clientproto:Ocsigen_http_frame.Http_header.proto -> ?mode:Ocsigen_http_frame.Http_header.http_mode -> ?proto:Ocsigen_http_frame.Http_header.proto -> ?keep_alive:bool -> head:bool -> sender:sender_type -> Ocsigen_http_frame.result -> unit Lwt.t val abort : connection -> unit (** Use this function to make an action just before sending the result (for example observe the headers that will be sent). The parameter is a function taking the set of headers twice, first as [Ocsigen_http_frame.Http_headers.http_header], second as a [string]. *) val set_result_observer : (Ocsigen_http_frame.Http_header.http_header -> string -> unit Lwt.t) -> unit (**/**) val gmtdate: float -> string ocsigenserver-2.2.0/src/http/ocsigen_http_frame.ml0000644000000000000000000002357312060404165020527 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * ocsigen_http_frame.ml Copyright (C) 2005 * Denis Berthod, Vincent Balat, Jérôme Vouillon * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) open Ocsigen_lib (** this set of modules discribes the http protocol and the operation on this protocol*) (** this signature provides a template to discribe the content of a http frame *) open Ocsigen_stream open Ocsigen_cookies type etag = string (* The following cookie function is not in Ocsigen_cookies because ri is not used client side *) (* [compute_new_ri_cookies now path ri_cookies cookies_to_set] adds the cookies from [cookies_to_set] to [ri_cookies], as if the cookies had been send to the browser and the browser was doing a new request to the url [path]. Only the cookies that match [path] (current path) are added. *) let compute_new_ri_cookies now ripath ricookies cookies_set_by_page = let prefix path p = Url.is_prefix_skip_end_slash (Url.remove_slash_at_beginning path) (Url.remove_slash_at_beginning p) in Cookies.fold (fun path ct t -> if prefix path ripath then String.Table.fold (fun n v beg -> match v with | OSet (Some ti, v, _) when ti>now -> String.Table.add n v t | OSet (None, v, _) -> String.Table.add n v t | OSet (_, _, _) | OUnset -> String.Table.remove n t ) ct t else t ) cookies_set_by_page ricookies (** The type of answers to send *) type result = {res_cookies: cookieset; (** cookies to set (with optional path) *) res_lastmodified: float option; (** Default: [None] *) res_etag: string option; res_code: int; (** HTTP code, if not 200 *) res_stream: string Ocsigen_stream.t * (string Ocsigen_stream.t -> int64 -> string Ocsigen_stream.step Lwt.t) option ; (** Default: empty stream. The second field is (optionaly) the function used to skip a part of the stream, if you do not you want to use a basic reading of the stream. For example, for static files, you can optimize it by using a [seek] function. *) (* It is not a new field of the record to remember to change it if we change the stream. *) res_content_length: int64 option; (** [None] means Transfer-encoding: chunked *) res_content_type: string option; res_headers: Http_headers.t; (** The headers you want to add *) res_charset: string option; (** Default: None *) res_location: string option; (** Default: None *) } (** Default [result] to use as a base for constructing others. *) let default_result () = { res_cookies = Cookies.empty; res_lastmodified = None; (* No date => proxies use etag *) res_etag = None; res_code = 200; res_stream = (Ocsigen_stream.make (fun () -> Ocsigen_stream.empty None), None); res_content_length = Some 0L; res_content_type = None; res_headers= Http_headers.empty; res_charset= None; res_location= None; } (** [result] for an empty page. *) let empty_result () = { res_cookies = Cookies.empty; res_lastmodified = None; res_etag = None; res_code = 204; (* No content *) res_stream = (Ocsigen_stream.make (fun () -> Ocsigen_stream.empty None), None); res_content_length = Some 0L; res_content_type = None; res_headers= Http_headers.empty; res_charset= None; res_location= None; } module type HTTP_CONTENT = sig (** abstract type of the content *) type t type options (** convert a content into a thread returning the default [result] for this content *) val result_of_content : ?options:options -> t -> result Lwt.t (** compute etag for content *) val get_etag : ?options:options -> t -> etag option end (** this module describes the type of an http header *) module Http_header = struct (** type of the http_method *) type http_method = | GET | POST | HEAD | PUT | DELETE | TRACE | OPTIONS | CONNECT | LINK | UNLINK | PATCH (** type of ocsigen_http_frame mode. The int is the HTTP answer code *) type http_mode = | Query of (http_method * string) | Answer of int | Nofirstline type proto = HTTP10 | HTTP11 (** type of the http headers *) type http_header = { (** the mode of the header : Query or Answer *) mode:http_mode; (** protocol used for the Query or the Answer *) proto: proto; (** list of the headers options *) headers: Http_headers.t; } (* (** gets the url raise Not_found if Answer *) let get_url header = match header.mode with | Query (_, s) -> s | _ -> raise Not_found *) (** gets the firstline of the header *) let get_firstline header = header.mode (** gets the headers *) let get_headers header = header.headers (** gets the value of a given header's option *) let get_headers_value header key = Http_headers.find key header.headers (** gets all the values of a given header's option *) let get_headers_values header key = Http_headers.find_all key header.headers (** gets the value of the protocol used *) let get_proto header = header.proto (* (** gets the value of the http method used *) let get_method header = match header.mode with | Query (meth, _) -> meth | _ -> raise Not_found *) (** adds an header option in the header option list*) let add_headers header key value = { header with headers = Http_headers.add key value header.headers } end module Http_error = struct (** Exception raised on an http error. It is possible to pass the code of the error, some comment, and some headers. *) exception Http_exception of int * string option * Http_headers.t option (* this fonction provides the translation mecanisme between a code and * its explanation *) let expl_of_code = function | 100 -> "Continue" | 101 -> "Switching Protocol" | 200 -> "OK" | 201 -> "Created" | 202 -> "Accepted" | 203 -> "Non-Authoritative information" | 204 -> "No Content" | 205 -> "Reset Content" | 206 -> "Partial Content" | 300 -> "Multiple Choices" | 301 -> "Moved Permanently" | 302 -> "Found" | 303 -> "See Other" | 304 -> "Not Modified" | 305 -> "Use Proxy" | 307 -> "Moved Temporarily" | 400 -> "Bad Request" | 401 -> "Unauthorized" | 402 -> "Payment Required" | 403 -> "Forbidden" | 404 -> "Not Found" | 405 -> "Method Not Allowed" | 406 -> "Not Acceptable" | 407 -> "Proxy Authentication Required" | 408 -> "Request Time-out" | 409 -> "Conflict" | 410 -> "Gone" | 411 -> "Length Required" | 412 -> "Precondition Failed" | 413 -> "Request Entity Too Large" | 414 -> "Request URL Too Long" | 415 -> "Unsupported Media type" | 416 -> "Request Range Not Satisfiable" | 417 -> "Expectation Failed" | 500 -> "Internal Server Error" | 501 -> "Not Implemented" | 502 -> "Bad Gateway" | 503 -> "Service Unavailable" | 504 -> "Gateway Time-out" | 505 -> "Version Not Supported" | _ -> "Unknown Error" (*!!!*) let display_http_exception e = match e with | Http_exception (n, Some s, Some _) -> Ocsigen_messages.debug (fun () -> Format.sprintf "%s: %s (with headers)" (expl_of_code n) s) | Http_exception (n, Some s, None) -> Ocsigen_messages.debug (fun () -> Format.sprintf "%s: %s" (expl_of_code n) s) | Http_exception (n, None, _) -> Ocsigen_messages.debug (fun () -> Format.sprintf "%s" (expl_of_code n)) | _ -> raise e let string_of_http_exception e = match e with | Http_exception (n, Some s, Some _) -> Format.sprintf "Error %d, %s: %s (with headers)" n (expl_of_code n) s | Http_exception (n, Some s, None) -> Format.sprintf "Error %d, %s: %s" n (expl_of_code n) s | Http_exception (n, None, _) -> Format.sprintf "Error %d, %s" n (expl_of_code n) | _ -> raise e end (** HTTP messages *) type t = { frame_header : Http_header.http_header; frame_content : string Ocsigen_stream.t option; frame_abort : unit -> unit Lwt.t (*VVV abort looks like a hack. It has been added for the reverse proxy, to enable closing the connection if the request is cancelled ... à revoir... *) } ocsigenserver-2.2.0/src/http/ocsigen_cookies.ml0000644000000000000000000000411612060404165020022 0ustar0000000000000000(* Ocsigen * Copyright (C) 2010 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) module CookiesTable = Map.Make(String) module Cookies = Map.Make(struct type t = string list let compare = compare end) type cookie = | OSet of float option * string * bool | OUnset type cookieset = cookie CookiesTable.t Cookies.t let empty_cookieset = Cookies.empty let add_cookie path n v t = let ct = try Cookies.find path t with Not_found -> CookiesTable.empty in (* We replace the old value if it exists *) Cookies.add path (CookiesTable.add n v ct) t let remove_cookie path n t = try let ct = Cookies.find path t in let newct = CookiesTable.remove n ct in if CookiesTable.is_empty newct then Cookies.remove path t else (* We replace the old value *) Cookies.add path newct t with Not_found -> t (* [add_cookies newcookies oldcookies] adds the cookies from [newcookies] to [oldcookies]. If cookies are already bound in oldcookies, the previous binding disappear. *) let add_cookies newcookies oldcookies = Cookies.fold (fun path ct t -> CookiesTable.fold (fun n v beg -> match v with | OSet (expo, v, secure) -> add_cookie path n (OSet (expo, v, secure)) beg | OUnset -> add_cookie path n OUnset beg ) ct t ) newcookies oldcookies ocsigenserver-2.2.0/src/http/http_headers.ml0000644000000000000000000000770412060404165017337 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * Module http_headers.mli * Copyright (C) 2007 Jérôme Vouillon * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) type name = string * string let name s = (s, String.lowercase s) let name_to_string = fst let accept = name "Accept" let accept_charset = name "Accept-Charset" let accept_encoding = name "Accept-Encoding" let accept_language = name "Accept-Language" let accept_ranges = name "Accept-Ranges" let cache_control = name "Cache-Control" let connection = name "Connection" let content_encoding = name "Content-Encoding" let content_range = name "Content-Range" let content_length = name "Content-Length" let content_type = name "Content-Type" let cookie = name "Cookie" let date = name "Date" let etag = name "ETag" let expires = name "Expires" let host = name "Host" let if_match = name "If-Match" let if_modified_since = name "If-Modified-Since" let if_none_match = name "If-None-Match" let if_unmodified_since = name "If-Unmodified-Since" let if_range = name "If-Range" let last_modified = name "Last-Modified" let location = name "Location" let server = name "Server" let set_cookie = name "Set-Cookie" let status = name "Status" let transfer_encoding = name "Transfer-Encoding" let user_agent = name "User-Agent" let referer = name "Referer" let range = name "Range" let x_forwarded_for = name "X-Forwarded-For" let x_forwarded_proto = name "X-Forwarded-Proto" (* CORS headers *) let origin = name "Origin" let access_control_request_method = name "Access-Control-Request-Method" let access_control_request_headers = name "Access-Control-Request-Headers" let access_control_allow_origin = name "Access-Control-Allow-Origin" let access_control_allow_credentials = name "Access-Control-Allow-Credentials" let access_control_expose_headers = name "Access-Control-Expose-Headers" let access_control_max_age = name "Access-Control-Max-Age" let access_control_allow_methods = name "Access-Control-Allow-Methods" let access_control_allow_headers = name "Access-Control-Allow-Headers" module NameHtbl = Hashtbl.Make (struct type t = name let equal (_, n : _ * string) (_, n') = n = n' let hash (_,n) = Hashtbl.hash n end) (****) module Map = Map.Make (struct type t = name let compare (_,n) (_,n') = compare n n' end) type t = string list Map.t let empty = Map.empty let find_all n h = List.rev (Map.find n h) (*XXX We currently return the last header. Should we fail if there is more than one? *) let find n h = match Map.find n h with v :: _ -> v | _ -> assert false let replace n v h = Map.add n [v] h let replace_opt n v h = match v with None -> Map.remove n h | Some v -> replace n v h let add n v h = let vl = try find_all n h with Not_found -> [] in Map.add n (v :: vl) h let iter f h = Map.iter (fun n vl -> match vl with [v] -> f n v | _ -> List.iter (fun v -> f n v) (List.rev vl)) h let fold f h acc = Map.fold (fun n vl acc -> f n (List.rev vl) acc) h acc let with_defaults h h' = Map.fold Map.add h h' (****) let (<<) h (n, v) = replace n v h let dyn_headers = empty << (cache_control, "no-cache") << (expires, "0") type accept = ( (string option * string option) * float option * (string * string) list ) list ocsigenserver-2.2.0/src/http/test_pp.ml0000644000000000000000000000101712060404165016332 0ustar0000000000000000open Ocsigen_http_frame open Framepp module H = Http_header module C = struct type t = string let string_of_content c = c let content_of_string s = s end module Http = FHttp_frame (C) module PP = Fframepp(C) let hd1= { H.mode = H.Query; H.meth = Some H.GET; H.url = Some "pop"; H.code = None; H.proto = "HTML/1.0"; headers = [] } let frame = {Http.header = hd1; Http.content = Some (C.content_of_string "Bonjour")} let _ = print_endline (PP.string_of_http_frame frame) ocsigenserver-2.2.0/src/http/.depend0000644000000000000000000000674112060404165015573 0ustar0000000000000000framepp.cmi: ocsigen_http_frame.cmi http_headers.cmi: multipart.cmi: ../baselib/ocsigen_stream.cmi ocsigen_charset_mime.cmi: ocsigen_cookies.cmi: ../baselib/ocsigen_lib.cmi ocsigen_headers.cmi: ../baselib/ocsigen_lib.cmi ocsigen_http_frame.cmi \ ocsigen_cookies.cmi ocsigen_http_com.cmi: ../baselib/ocsigen_stream.cmi ocsigen_http_frame.cmi \ http_headers.cmi ocsigen_http_frame.cmi: ../baselib/ocsigen_stream.cmi \ ../baselib/ocsigen_lib.cmi ocsigen_cookies.cmi http_headers.cmi ocsigen_senders.cmi: ../baselib/ocsigen_stream.cmi ocsigen_http_frame.cmi \ ocsigen_http_com.cmi ocsigen_cookies.cmi ocsigen_charset_mime.cmi \ http_headers.cmi framepp.cmo: ocsigen_http_frame.cmi http_headers.cmi framepp.cmi framepp.cmx: ocsigen_http_frame.cmx http_headers.cmx framepp.cmi http_headers.cmo: http_headers.cmi http_headers.cmx: http_headers.cmi http_lexer.cmo: ocsigen_http_frame.cmi http_headers.cmi http_lexer.cmx: ocsigen_http_frame.cmx http_headers.cmx multipart.cmo: ../baselib/ocsigen_stream.cmi ../baselib/ocsigen_lib.cmi \ multipart.cmi multipart.cmx: ../baselib/ocsigen_stream.cmx ../baselib/ocsigen_lib.cmx \ multipart.cmi ocsigen_charset_mime.cmo: ../baselib/ocsigen_messages.cmi \ ../baselib/ocsigen_lib.cmi ../baselib/ocsigen_config.cmi \ ocsigen_charset_mime.cmi ocsigen_charset_mime.cmx: ../baselib/ocsigen_messages.cmx \ ../baselib/ocsigen_lib.cmx ../baselib/ocsigen_config.cmx \ ocsigen_charset_mime.cmi ocsigen_cookies.cmo: ocsigen_cookies.cmi ocsigen_cookies.cmx: ocsigen_cookies.cmi ocsigen_headers.cmo: ocsigen_senders.cmi ../baselib/ocsigen_lib.cmi \ ocsigen_http_frame.cmi ocsigen_cookies.cmi http_headers.cmi \ ocsigen_headers.cmi ocsigen_headers.cmx: ocsigen_senders.cmx ../baselib/ocsigen_lib.cmx \ ocsigen_http_frame.cmx ocsigen_cookies.cmx http_headers.cmx \ ocsigen_headers.cmi ocsigen_http_com.cmo: ../baselib/ocsigen_stream.cmi \ ../baselib/ocsigen_messages.cmi ../baselib/ocsigen_lib.cmi \ ocsigen_http_frame.cmi ocsigen_cookies.cmi ../baselib/ocsigen_config.cmi \ http_lexer.cmo http_headers.cmi framepp.cmi ocsigen_http_com.cmi ocsigen_http_com.cmx: ../baselib/ocsigen_stream.cmx \ ../baselib/ocsigen_messages.cmx ../baselib/ocsigen_lib.cmx \ ocsigen_http_frame.cmx ocsigen_cookies.cmx ../baselib/ocsigen_config.cmx \ http_lexer.cmx http_headers.cmx framepp.cmx ocsigen_http_com.cmi ocsigen_http_frame.cmo: ../baselib/ocsigen_stream.cmi \ ../baselib/ocsigen_messages.cmi ../baselib/ocsigen_lib.cmi \ ocsigen_cookies.cmi http_headers.cmi ocsigen_http_frame.cmi ocsigen_http_frame.cmx: ../baselib/ocsigen_stream.cmx \ ../baselib/ocsigen_messages.cmx ../baselib/ocsigen_lib.cmx \ ocsigen_cookies.cmx http_headers.cmx ocsigen_http_frame.cmi ocsigen_senders.cmo: ../baselib/ocsigen_stream.cmi \ ../baselib/ocsigen_messages.cmi ../baselib/ocsigen_lib.cmi \ ocsigen_http_frame.cmi ocsigen_http_com.cmi ocsigen_cookies.cmi \ ../baselib/ocsigen_config.cmi ocsigen_charset_mime.cmi http_headers.cmi \ ocsigen_senders.cmi ocsigen_senders.cmx: ../baselib/ocsigen_stream.cmx \ ../baselib/ocsigen_messages.cmx ../baselib/ocsigen_lib.cmx \ ocsigen_http_frame.cmx ocsigen_http_com.cmx ocsigen_cookies.cmx \ ../baselib/ocsigen_config.cmx ocsigen_charset_mime.cmx http_headers.cmx \ ocsigen_senders.cmi test_parser.cmo: ocsigen_http_frame.cmi http_lexer.cmo test_parser.cmx: ocsigen_http_frame.cmx http_lexer.cmx test_pp.cmo: ocsigen_http_frame.cmi framepp.cmi test_pp.cmx: ocsigen_http_frame.cmx framepp.cmx ocsigenserver-2.2.0/src/http/ocsigen_http_frame.mli0000644000000000000000000001043112060404165020665 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * ocsigen_http_frame.ml Copyright (C) 2005 * Denis Berthod, Vincent Balat, Jérôme Vouillon * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) open Ocsigen_lib open Ocsigen_cookies type etag = string (** [compute_new_ri_cookies now path ri_cookies cookies_to_set] adds the cookies from [cookies_to_set] to [ri_cookies], as if the cookies had been send to the browser and the browser was doing a new request to the url [path]. Only the cookies that match [path] (current path) are added. *) val compute_new_ri_cookies : float -> string list -> string String.Table.t -> cookie String.Table.t Cookies.t -> string String.Table.t (** The type of answers to send *) type result = {res_cookies: cookieset; (** cookies to set *) res_lastmodified: float option; (** Default: [None] *) res_etag: etag option; res_code: int; (** HTTP code, if not 200 *) res_stream: string Ocsigen_stream.t * (string Ocsigen_stream.t -> int64 -> string Ocsigen_stream.step Lwt.t) option ; (** Default: empty stream. The second field is (optionaly) the function used to skip a part of the stream, if you do not you want to use a basic reading of the stream. For example, for static files, you can optimize it by using a [seek] function. *) (* It is not a new field of the record to remember to change it if we change the stream. *) res_content_length: int64 option; (** [None] means Transfer-encoding: chunked *) res_content_type: string option; res_headers: Http_headers.t; (** The headers you want to add *) res_charset: string option; (** Default: None *) res_location: string option; (** Default: None *) } (** Default [result] to use as a base for constructing others. *) val default_result : unit -> result (** [result] for an empty page. *) val empty_result : unit -> result module type HTTP_CONTENT = sig type t type options val result_of_content : ?options:options -> t -> result Lwt.t val get_etag : ?options:options -> t -> etag option end module Http_header : sig type http_method = GET | POST | HEAD | PUT | DELETE | TRACE | OPTIONS | CONNECT | LINK | UNLINK | PATCH type http_mode = Query of (http_method * string) | Answer of int | Nofirstline type proto = HTTP10 | HTTP11 type http_header = { mode : http_mode; proto : proto; headers : Http_headers.t; } val get_firstline : http_header -> http_mode val get_headers : http_header -> Http_headers.t val get_headers_value : http_header -> Http_headers.name -> string val get_headers_values : http_header -> Http_headers.name -> string list val get_proto : http_header -> proto val add_headers : http_header -> Http_headers.name -> string -> http_header end module Http_error : sig exception Http_exception of int * string option * Http_headers.t option val expl_of_code : int -> string val display_http_exception : exn -> unit val string_of_http_exception : exn -> string end (** The type of HTTP frames. The content may be void (no body) or a stream. While sending, a stream will be sent with chunked encoding if no content-length is supplied. abort is the function to be called if you want to cancel the stream reading (closes the connection). *) type t = { frame_header : Http_header.http_header; frame_content : string Ocsigen_stream.t option; frame_abort : unit -> unit Lwt.t } ocsigenserver-2.2.0/src/http/ocsigen_headers.mli0000644000000000000000000000566212060404165020161 0ustar0000000000000000(* Ocsigen * ocsigen_headers.mli Copyright (C) 2005 Vincent Balat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** Getting informations from HTTP header. *) (** This module uses the lowel level module Ocsigen_http_frame.Http_header. It is very basic and must be completed for exhaustiveness. *) open Ocsigen_lib open Ocsigen_cookies val find : string -> Ocsigen_http_frame.t -> string (** find one of the values bound to [name] in the HTTP headers of the frame. Raise [Not_found] if it is not bound. *) val find_all : string -> Ocsigen_http_frame.t -> string list (** find all the values bound to [name] in the HTTP headers of the frame. Raise [Not_found] if it is not bound.*) val get_keepalive : Ocsigen_http_frame.Http_header.http_header -> bool val parse_cookies : string -> string CookiesTable.t val parse_mime_type : string -> string option * string option val get_host_from_host_header : Ocsigen_http_frame.t -> string option * int option val get_user_agent : Ocsigen_http_frame.t -> string val get_cookie_string : Ocsigen_http_frame.t -> string option val get_if_modified_since : Ocsigen_http_frame.t -> float option val get_if_unmodified_since : Ocsigen_http_frame.t -> float option val get_if_none_match : Ocsigen_http_frame.t -> string list option val get_if_match : Ocsigen_http_frame.t -> string list option val get_content_type : Ocsigen_http_frame.t -> string option val parse_content_type : string option -> ((string * string) * (string * string) list) option val get_content_length : Ocsigen_http_frame.t -> int64 option val get_referer : Ocsigen_http_frame.t -> string option val get_referrer : Ocsigen_http_frame.t -> string option val get_origin : Ocsigen_http_frame.t -> string option val get_access_control_request_method : Ocsigen_http_frame.t -> string option val get_access_control_request_headers : Ocsigen_http_frame.t -> string list option val get_accept : Ocsigen_http_frame.t -> ((string option * string option) * float option * (string * string) list) list val get_accept_charset : Ocsigen_http_frame.t -> (string option * float option) list val get_accept_encoding : Ocsigen_http_frame.t -> (string option * float option) list val get_accept_language : Ocsigen_http_frame.t -> (string * float option) list ocsigenserver-2.2.0/src/http/ocsigen_charset_mime.ml0000644000000000000000000001154712060404165021034 0ustar0000000000000000(* Ocsigen * http://www.ocsigen.org * ocsigen_charset_mime.ml Copyright (C) 2008 * Boris Yakobowski * Laboratoire PPS - CNRS Université Paris Diderot * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) open Ocsigen_lib module MapString = Map.Make(String) type extension = string type filename = string type file = string type 'a assoc_item = | Extension of extension * 'a | File of filename * 'a | Regexp of Netstring_pcre.regexp * 'a | Map of 'a MapString.t type 'a assoc = { assoc_list: 'a assoc_item list; assoc_default: 'a } let find_in_assoc file assoc = let filename = Filename.basename file in let ext = try String.lowercase (Filename.extension_no_directory file) with Not_found -> "" in let rec aux = function | [] -> assoc.assoc_default | Extension (ext', v) :: q -> if ext = ext' then v else aux q | File (filename', v) :: q -> if filename = filename' then v else aux q | Regexp (reg, v) :: q -> if Netstring_pcre.string_match reg file 0 <> None then v else aux q | Map m :: q -> try MapString.find ext m with Not_found -> aux q in aux assoc.assoc_list let default assoc = assoc.assoc_default let set_default assoc default = { assoc with assoc_default = default } let update_ext assoc (ext : extension) v = { assoc with assoc_list = Extension (String.lowercase ext, v) :: assoc.assoc_list} let update_file assoc (file : filename) v = { assoc with assoc_list = File (file, v) :: assoc.assoc_list} let update_regexp assoc r v = { assoc with assoc_list = Regexp (r, v) :: assoc.assoc_list} let empty default () = { assoc_list = []; assoc_default = default } (* Handling of charset and mime ; specific values and declarations *) type charset = string type mime_type = string type charset_assoc = charset assoc type mime_assoc = mime_type assoc let no_charset : charset = "" let default_mime_type : mime_type = "application/octet-stream" let empty_charset_assoc ?(default=no_charset) = empty default let empty_mime_assoc ?(default=default_mime_type) = empty default (* Generic functions *) let default_charset = default let default_mime = default let update_charset_ext = update_ext let update_mime_ext = update_ext let update_charset_file = update_file let update_mime_file = update_file let update_charset_regexp = update_regexp let update_mime_regexp = update_regexp let set_default_mime = set_default let set_default_charset = set_default let find_charset = find_in_assoc let find_mime = find_in_assoc (* Specific handling of content-type *) let parse_mime_types ~filename : mime_type assoc = let rec read_and_split mimemap in_ch = try let line = input_line in_ch in let line_upto = try let upto = String.index line '#' in String.sub line 0 upto with Not_found -> line in let strlist = Netstring_pcre.split (Netstring_pcre.regexp "\\s+") line_upto in match strlist with | [] | [_] -> (* No extension on this line *) read_and_split mimemap in_ch | mime :: extensions -> let mimemap = List.fold_left (fun mimemap ext -> MapString.add ext mime mimemap) mimemap extensions in read_and_split mimemap in_ch with End_of_file -> mimemap in { assoc_list = [ Map(try let in_ch = open_in filename in let map = (try read_and_split MapString.empty in_ch with e -> close_in in_ch; raise e) in close_in in_ch; map with Sys_error s -> Ocsigen_messages.warning (Printf.sprintf "Ocsigen_charser_mime: unable to read the mime.types file (Error: %s)." s); MapString.empty )]; assoc_default = default_mime_type; } let default_mime_assoc () = let parsed = ref None in match !parsed with | None -> let file = Ocsigen_config.get_mimefile () in Ocsigen_messages.debug (fun () -> Printf.sprintf "Loading mime types in '%s'" file); let map = parse_mime_types file in parsed := Some map; map | Some map -> map ocsigenserver-2.2.0/src/http/framepp.ml0000644000000000000000000001017312060404165016311 0ustar0000000000000000(* Ocsigen * framepp.ml Copyright (C) 2005 Denis Berthod * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, with linking exception; * either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) (** pretty printer for http frames*) open Ocsigen_http_frame module H = Http_header (** converts the method into a string*) let string_of_method = function | H.GET -> "GET" | H.POST -> "POST" | H.HEAD -> "HEAD" | H.PUT -> "PUT" | H.DELETE -> "DELETE" | H.TRACE -> "TRACE" | H.OPTIONS -> "OPTIONS" | H.CONNECT -> "CONNECT" | H.LINK -> "LINK" | H.UNLINK -> "UNLINK" | H.PATCH -> "PATCH" (** converts a string to a method *) let method_of_string = function | "GET" -> H.GET | "POST" -> H.POST | "HEAD" -> H.HEAD | "PUT" -> H.PUT | "DELETE" -> H.DELETE | "TRACE" -> H.TRACE | "OPTIONS" -> H.OPTIONS | "CONNECT" -> H.CONNECT | "LINK" -> H.LINK | "UNLINK" -> H.UNLINK | "PATCH" -> H.PATCH | _ -> failwith "method_of_string" (** converts the protocol into a string *) let string_of_proto = function | H.HTTP10 -> "HTTP/1.0" | H.HTTP11 -> "HTTP/1.1" (** converts a string to a protocol *) let proto_of_string = function | "HTTP/1.0" -> H.HTTP10 | "HTTP/1.1" -> H.HTTP11 | _ -> failwith "proto_of_string" (** Write the first line of an HTTP frame to a string buffer *) let fst_line buf header = match header.H.mode with | H.Nofirstline -> () | H.Answer code -> Printf.bprintf buf "%s %i %s\r\n" (string_of_proto header.H.proto) code (Http_error.expl_of_code code) | H.Query (meth, url) -> Printf.bprintf buf "%s %s %s\r\n" (string_of_method meth) url (string_of_proto header.H.proto) (** Prints the content of a header. To prevent http header injection, we insert spaces (' ') after CRLF, in case the user has not done this himself. Also, if we find single CR or LF, we replace them by spaces . (This is correct according to the RFC, as the headers content should not contain single CR or LF anyway) *) let print_header_content buf content = let s = String.length content in let rec aux prev i = if i = s then (if prev < s then Buffer.add_substring buf content prev (s-prev)) else let add_prev () = Buffer.add_substring buf content prev (i-prev) in match content.[i] with | '\n' | '\r' as c -> let i' = i+1 in let escape_c () = add_prev (); Buffer.add_char buf c; Buffer.add_char buf ' '; aux i' i' in if i' < s then (match content.[i'] with | '\n' | '\r' as c' when c <> c' -> add_prev (); Buffer.add_char buf c; Buffer.add_char buf c'; Buffer.add_char buf ' '; aux (i+2) (i+2) | _ -> escape_c () ) else escape_c () | _ -> aux prev (i+1) in aux 0 0 (* Debug *) let test s = let b = Buffer.create 0 in print_header_content b s; Buffer.contents b (** Write the header lines to a string buffer *) let headers buf header = Http_headers.iter (fun name value -> Printf.bprintf buf "%s: %a\r\n" (Http_headers.name_to_string name) print_header_content value) header.H.headers (** Convert a HTTP header into a string *) let string_of_header hds = let buf = Buffer.create 200 in fst_line buf hds; headers buf hds; Printf.bprintf buf "\r\n%!"; Buffer.contents buf ocsigenserver-2.2.0/src/http/documentation/0000755000000000000000000000000012060404165017174 5ustar0000000000000000ocsigenserver-2.2.0/src/files/0000755000000000000000000000000012060404165014446 5ustar0000000000000000ocsigenserver-2.2.0/src/files/META.in0000644000000000000000000001310212060404165015521 0ustar0000000000000000description = "Ocsigen server library" version = "dev" requires = "%%NAME%%.commandline,%%NAME%%.polytables,%%NAME%%.http,%%NAME%%.baselib" archive(byte) = "ocsigenserver.cma" archive(native) = "ocsigenserver.cmxa" package "polytables" ( exists_if = "polytables.cmo,polytables.cmx" version = "[distributed with Ocsigen server]" description = "Polymorphic tables" archive(byte) = "polytables.cmo" archive(native) = "polytables.cmx" ) package "commandline" ( description = "Read the commandline during server initialization" version = "[distributed with Ocsigen server]" archive(byte) = "parsecommandline.cma" archive(native) = "parsecommandline.cmxa" archive(byte,nocommandline) = "donotparsecommandline.cma" archive(native,nocommandline) = "donotparsecommandline.cmxa" ) package "baselib" ( requires = "%%DEPS%%" version = "[distributed with Ocsigen server]" description = "Base library for Ocsigen server" archive(byte) = "baselib.cma" archive(native) = "baselib.cmxa" package "base" ( description = "Just extensions of the stdlib (also for usage on the client side)" version = "[distributed with Ocsigen server]" requires = "%%BASEDEPS%%" archive(byte) = "ocsigen_lib_base.cmo" archive(native) = "ocsigen_lib_base.cmxo" ) ) package "http" ( requires = "%%NAME%%.baselib,lwt.ssl,tyxml" version = "[distributed with Ocsigen server]" description = "HTTP library for Ocsigen server" archive(byte) = "http.cma" archive(native) = "http.cmxa" ) package "cookies" ( version = "[distributed with Ocsigen server]" archive(byte) = "ocsigen_cookies.cmo" ) package "ext" ( directory = "extensions" version = "[distributed with Ocsigen server]" description = "Basic extensions for Ocsigen server" package "redirectmod" ( exists_if = "redirectmod.cmo,redirectmod.cmx" version = "[distributed with Ocsigen server]" description = "HTTP redirections" archive(byte) = "redirectmod.cmo" archive(native) = "redirectmod.cmx" ) package "outputfilter" ( exists_if = "outputfilter.cmo,outputfilter.cmx" version = "[distributed with Ocsigen server]" description = "Changing HTTP answers before sending" archive(byte) = "outputfilter.cmo" archive(native) = "outputfilter.cmx" ) package "userconf" ( exists_if = "userconf.cmo,userconf.cmx" version = "[distributed with Ocsigen server]" description = "Allowing users to have their own configuration files" archive(byte) = "userconf.cmo" archive(native) = "userconf.cmx" ) package "staticmod" ( exists_if = "staticmod.cmo,staticmod.cmx" version = "[distributed with Ocsigen server]" description = "Serving static files" archive(byte) = "staticmod.cmo" archive(native) = "staticmod.cmx" ) package "revproxy" ( exists_if = "revproxy.cmo,revproxy.cmx" version = "[distributed with Ocsigen server]" description = "Reverse proxy" archive(byte) = "revproxy.cmo" archive(native) = "revproxy.cmx" ) package "accesscontrol" ( exists_if = "accesscontrol.cmo,accesscontrol.cmx" version = "[distributed with Ocsigen server]" description = "Filtering HTTP requests" archive(byte) = "accesscontrol.cmo" archive(native) = "accesscontrol.cmx" ) package "cors" ( exists_if = "cors.cmo,cors.cmx" version = "[distributed with Ocsigen server]" description = "Handling cross-origin requests" archive(byte) = "cors.cmo" archive(native) = "cors.cmx" ) package "extendconfiguration" ( exists_if = "extendconfiguration.cmo,extendconfiguration.cmx" version = "[distributed with Ocsigen server]" description = "Updating server options" archive(byte) = "extendconfiguration.cmo" archive(native) = "extendconfiguration.cmx" ) package "authbasic" ( exists_if = "authbasic.cmo,authbasic.cmx" version = "[distributed with Ocsigen server]" description = "Basic HTTP Authentication" archive(byte) = "authbasic.cmo" archive(native) = "authbasic.cmx" ) package "cgimod" ( exists_if = "cgimod.cmo,cgimod.cmx" version = "[distributed with Ocsigen server]" description = "CGI support" archive(byte) = "cgimod.cmo" archive(native) = "cgimod.cmx" ) package "ocsipersist-sqlite" ( exists_if = "ocsipersist-sqlite.cma,ocsipersist-sqlite.cmxa" requires = "sqlite3" version = "[distributed with Ocsigen server]" description = "Persistent data storage with SQLite3" archive(byte) = "ocsipersist-sqlite.cma" archive(native) = "ocsipersist-sqlite.cmxa" ) package "ocsipersist-dbm" ( exists_if = "ocsipersist-dbm.cma,ocsipersist-dbm.cmxa" version = "[distributed with Ocsigen server]" description = "Persistent data storage with DBM" archive(byte) = "ocsipersist-dbm.cma" archive(native) = "ocsipersist-dbm.cmxa" ) package "deflatemod" ( exists_if = "deflatemod.cmo,deflatemod.cmx" requires = "%%CAMLZIPNAME%%" version = "[distributed with Ocsigen server]" description = "Compressing HTTP reply bodies" archive(byte) = "deflatemod.cmo" archive(native) = "deflatemod.cmx" ) package "rewritemod" ( exists_if = "rewritemod.cmo,rewritemod.cmx" version = "[distributed with Ocsigen server]" description = "Rewriting URLs" archive(byte) = "rewritemod.cmo" archive(native) = "rewritemod.cmx" ) package "comet" ( exists_if = "ocsigen_comet.cmo,ocsigen_comet.cmx" requires = "lwt.react" version = "[distributed with Ocsigen server]" description = "Comet server-to-client communication" archive(byte) = "ocsigen_comet.cmo" archive(native) = "ocsigen_comet.cmx" ) ) ocsigenserver-2.2.0/src/files/Makefile.sample0000644000000000000000000000166512060404165017376 0ustar0000000000000000# Write here all the findlib packages you need, for example: PACKAGES= lwt.unix,ocsigen # Write here all your .ml files, in dependency order (default: all) FILES=$(wildcard *.ml) CAMLC = ocamlfind ocamlc -g $(LIB) CAMLOPT = ocamlfind ocamlopt $(LIB) CAMLDOC = ocamlfind ocamldoc $(LIB) CAMLDEP = ocamlfind ocamldep #OCSIGENREP = `ocamlfind query ocsigen` #OCSIGENREP = ../ocsigen/lib LIB = -package $(PACKAGES) # If you use the syntax extension: # PP = -pp "camlp4o $(OCSIGENREP)/xhtmlsyntax.cma" # otherwise: PP = OBJS = $(FILES:.ml=.cmo) CMA = site.cma all: $(CMA) $(CMA): $(OBJS) $(CAMLC) -a -o $(CMA) $(OBJS) .SUFFIXES: .SUFFIXES: .ml .mli .cmo .cmi .cmx .PHONY: doc .ml.cmo: $(CAMLC) $(PP) -c $< .mli.cmi: $(CAMLC) -c $< .ml.cmx: $(CAMLOPT) $(PP) -c $< doc: # $(CAMLDOC) -d doc -html foo.mli clean: -rm -f *.cm[ioxa] *~ $(NAME) depend: $(CAMLDEP) $(PP) $(LIB) $(FILES:.ml=.mli) $(FILES) > .depend FORCE: include .depend ocsigenserver-2.2.0/src/files/mime.types0000644000000000000000000003543112060404165016471 0ustar0000000000000000# This is a comment. I love comments. # This file controls what Internet media types are sent to the client for # given file extension(s). Sending the correct media type to the client # is important so they know how to handle the content of the file. # Extra types can either be added here or by using an AddType directive # in your config files. For more information about Internet media types, # please read RFC 2045, 2046, 2047, 2048, and 2077. The Internet media type # registry is at . # MIME type Extensions application/activemessage application/andrew-inset ez application/applefile application/atom+xml atom application/atomicmail application/batch-smtp application/beep+xml application/cals-1840 application/cnrp+xml application/commonground application/cpl+xml application/cybercash application/dca-rft application/dec-dx application/dvcs application/edi-consent application/edifact application/edi-x12 application/eshop application/font-tdpfr application/font-woff woff application/x-font-ttf ttf application/http application/hyperstudio application/iges application/index application/index.cmd application/index.obj application/index.response application/index.vnd application/iotp application/ipp application/isup application/mac-binhex40 hqx application/mac-compactpro cpt application/macwriteii application/marc application/mathematica application/mathml+xml mathml application/msword doc application/news-message-id application/news-transmission application/ocsp-request application/ocsp-response application/octet-stream bin dms lha lzh exe class so dll dmg application/oda oda application/ogg ogg application/parityfec application/pdf pdf application/pgp-encrypted application/pgp-keys application/pgp-signature application/pkcs10 application/pkcs7-mime application/pkcs7-signature application/pkix-cert application/pkix-crl application/pkixcmp application/postscript ai eps ps application/prs.alvestrand.titrax-sheet application/prs.cww application/prs.nprend application/prs.plucker application/qsig application/rdf+xml rdf application/reginfo+xml application/remote-printing application/riscos application/rtf application/sdp application/set-payment application/set-payment-initiation application/set-registration application/set-registration-initiation application/sgml application/sgml-open-catalog application/sieve application/slate application/smil smi smil application/srgs gram application/srgs+xml grxml application/timestamp-query application/timestamp-reply application/tve-trigger application/vemmi application/vnd.3gpp.pic-bw-large application/vnd.3gpp.pic-bw-small application/vnd.3gpp.pic-bw-var application/vnd.3gpp.sms application/vnd.3m.post-it-notes application/vnd.accpac.simply.aso application/vnd.accpac.simply.imp application/vnd.acucobol application/vnd.acucorp application/vnd.adobe.xfdf application/vnd.aether.imp application/vnd.amiga.ami application/vnd.anser-web-certificate-issue-initiation application/vnd.anser-web-funds-transfer-initiation application/vnd.audiograph application/vnd.blueice.multipass application/vnd.bmi application/vnd.bw-fontobject eot application/vnd.businessobjects application/vnd.canon-cpdl application/vnd.canon-lips application/vnd.cinderella application/vnd.claymore application/vnd.commerce-battelle application/vnd.commonspace application/vnd.contact.cmsg application/vnd.cosmocaller application/vnd.criticaltools.wbs+xml application/vnd.ctc-posml application/vnd.cups-postscript application/vnd.cups-raster application/vnd.cups-raw application/vnd.curl application/vnd.cybank application/vnd.data-vision.rdz application/vnd.dna application/vnd.dpgraph application/vnd.dreamfactory application/vnd.dxr application/vnd.ecdis-update application/vnd.ecowin.chart application/vnd.ecowin.filerequest application/vnd.ecowin.fileupdate application/vnd.ecowin.series application/vnd.ecowin.seriesrequest application/vnd.ecowin.seriesupdate application/vnd.enliven application/vnd.epson.esf application/vnd.epson.msf application/vnd.epson.quickanime application/vnd.epson.salt application/vnd.epson.ssf application/vnd.ericsson.quickcall application/vnd.eudora.data application/vnd.fdf application/vnd.ffsns application/vnd.fints application/vnd.flographit application/vnd.framemaker application/vnd.fsc.weblaunch application/vnd.fujitsu.oasys application/vnd.fujitsu.oasys2 application/vnd.fujitsu.oasys3 application/vnd.fujitsu.oasysgp application/vnd.fujitsu.oasysprs application/vnd.fujixerox.ddd application/vnd.fujixerox.docuworks application/vnd.fujixerox.docuworks.binder application/vnd.fut-misnet application/vnd.grafeq application/vnd.groove-account application/vnd.groove-help application/vnd.groove-identity-message application/vnd.groove-injector application/vnd.groove-tool-message application/vnd.groove-tool-template application/vnd.groove-vcard application/vnd.hbci application/vnd.hhe.lesson-player application/vnd.hp-hpgl application/vnd.hp-hpid application/vnd.hp-hps application/vnd.hp-pcl application/vnd.hp-pclxl application/vnd.httphone application/vnd.hzn-3d-crossword application/vnd.ibm.afplinedata application/vnd.ibm.electronic-media application/vnd.ibm.minipay application/vnd.ibm.modcap application/vnd.ibm.rights-management application/vnd.ibm.secure-container application/vnd.informix-visionary application/vnd.intercon.formnet application/vnd.intertrust.digibox application/vnd.intertrust.nncp application/vnd.intu.qbo application/vnd.intu.qfx application/vnd.irepository.package+xml application/vnd.is-xpr application/vnd.japannet-directory-service application/vnd.japannet-jpnstore-wakeup application/vnd.japannet-payment-wakeup application/vnd.japannet-registration application/vnd.japannet-registration-wakeup application/vnd.japannet-setstore-wakeup application/vnd.japannet-verification application/vnd.japannet-verification-wakeup application/vnd.jisp application/vnd.kde.karbon application/vnd.kde.kchart application/vnd.kde.kformula application/vnd.kde.kivio application/vnd.kde.kontour application/vnd.kde.kpresenter application/vnd.kde.kspread application/vnd.kde.kword application/vnd.kenameaapp application/vnd.koan application/vnd.liberty-request+xml application/vnd.llamagraphics.life-balance.desktop application/vnd.llamagraphics.life-balance.exchange+xml application/vnd.lotus-1-2-3 application/vnd.lotus-approach application/vnd.lotus-freelance application/vnd.lotus-notes application/vnd.lotus-organizer application/vnd.lotus-screencam application/vnd.lotus-wordpro application/vnd.mcd application/vnd.mediastation.cdkey application/vnd.meridian-slingshot application/vnd.micrografx.flo application/vnd.micrografx.igx application/vnd.mif mif application/vnd.minisoft-hp3000-save application/vnd.mitsubishi.misty-guard.trustweb application/vnd.mobius.daf application/vnd.mobius.dis application/vnd.mobius.mbk application/vnd.mobius.mqy application/vnd.mobius.msl application/vnd.mobius.plc application/vnd.mobius.txf application/vnd.mophun.application application/vnd.mophun.certificate application/vnd.motorola.flexsuite application/vnd.motorola.flexsuite.adsi application/vnd.motorola.flexsuite.fis application/vnd.motorola.flexsuite.gotap application/vnd.motorola.flexsuite.kmr application/vnd.motorola.flexsuite.ttc application/vnd.motorola.flexsuite.wem application/vnd.mozilla.xul+xml xul application/vnd.ms-artgalry application/vnd.ms-asf application/vnd.ms-excel xls application/vnd.ms-lrm application/vnd.ms-powerpoint ppt application/vnd.ms-project application/vnd.ms-tnef application/vnd.ms-works application/vnd.ms-wpl application/vnd.mseq application/vnd.msign application/vnd.music-niff application/vnd.musician application/vnd.netfpx application/vnd.noblenet-directory application/vnd.noblenet-sealer application/vnd.noblenet-web application/vnd.novadigm.edm application/vnd.novadigm.edx application/vnd.novadigm.ext application/vnd.obn application/vnd.osa.netdeploy application/vnd.palm application/vnd.pg.format application/vnd.pg.osasli application/vnd.powerbuilder6 application/vnd.powerbuilder6-s application/vnd.powerbuilder7 application/vnd.powerbuilder7-s application/vnd.powerbuilder75 application/vnd.powerbuilder75-s application/vnd.previewsystems.box application/vnd.publishare-delta-tree application/vnd.pvi.ptid1 application/vnd.pwg-multiplexed application/vnd.pwg-xhtml-print+xml application/vnd.quark.quarkxpress application/vnd.rapid application/vnd.s3sms application/vnd.sealed.net application/vnd.seemail application/vnd.shana.informed.formdata application/vnd.shana.informed.formtemplate application/vnd.shana.informed.interchange application/vnd.shana.informed.package application/vnd.smaf application/vnd.sss-cod application/vnd.sss-dtf application/vnd.sss-ntf application/vnd.street-stream application/vnd.svd application/vnd.swiftview-ics application/vnd.triscape.mxs application/vnd.trueapp application/vnd.truedoc application/vnd.ufdl application/vnd.uplanet.alert application/vnd.uplanet.alert-wbxml application/vnd.uplanet.bearer-choice application/vnd.uplanet.bearer-choice-wbxml application/vnd.uplanet.cacheop application/vnd.uplanet.cacheop-wbxml application/vnd.uplanet.channel application/vnd.uplanet.channel-wbxml application/vnd.uplanet.list application/vnd.uplanet.list-wbxml application/vnd.uplanet.listcmd application/vnd.uplanet.listcmd-wbxml application/vnd.uplanet.signal application/vnd.vcx application/vnd.vectorworks application/vnd.vidsoft.vidconference application/vnd.visio application/vnd.visionary application/vnd.vividence.scriptfile application/vnd.vsf application/vnd.wap.sic application/vnd.wap.slc application/vnd.wap.wbxml wbxml application/vnd.wap.wmlc wmlc application/vnd.wap.wmlscriptc wmlsc application/vnd.webturbo application/vnd.wrq-hp3000-labelled application/vnd.wt.stf application/vnd.wv.csp+wbxml application/vnd.xara application/vnd.xfdl application/vnd.yamaha.hv-dic application/vnd.yamaha.hv-script application/vnd.yamaha.hv-voice application/vnd.yellowriver-custom-menu application/voicexml+xml vxml application/watcherinfo+xml application/whoispp-query application/whoispp-response application/wita application/wordperfect5.1 application/x-bcpio bcpio application/x-cdlink vcd application/x-chess-pgn pgn application/x-compress application/x-cpio cpio application/x-csh csh application/x-director dcr dir dxr application/x-dvi dvi application/x-futuresplash spl application/x-gtar gtar application/x-gzip application/x-hdf hdf application/x-javascript js application/x-koan skp skd skt skm application/x-latex latex application/x-netcdf nc cdf application/x-sh sh application/x-shar shar application/x-shockwave-flash swf application/x-stuffit sit application/x-sv4cpio sv4cpio application/x-sv4crc sv4crc application/x-tar tar application/x-tcl tcl application/x-tex tex application/x-texinfo texinfo texi application/x-troff t tr roff application/x-troff-man man application/x-troff-me me application/x-troff-ms ms application/x-ustar ustar application/x-wais-source src application/x400-bp application/xhtml+xml xhtml xht application/xslt+xml xslt application/xml xml xsl application/xml-dtd dtd application/xml-external-parsed-entity application/zip zip audio/32kadpcm audio/amr audio/amr-wb audio/basic au snd audio/cn audio/dat12 audio/dsr-es201108 audio/dvi4 audio/evrc audio/evrc0 audio/g722 audio/g.722.1 audio/g723 audio/g726-16 audio/g726-24 audio/g726-32 audio/g726-40 audio/g728 audio/g729 audio/g729D audio/g729E audio/gsm audio/gsm-efr audio/l8 audio/l16 audio/l20 audio/l24 audio/lpc audio/midi mid midi kar audio/mpa audio/mpa-robust audio/mp4a-latm audio/mpeg mpga mp2 mp3 audio/parityfec audio/pcma audio/pcmu audio/prs.sid audio/qcelp audio/red audio/smv audio/smv0 audio/telephone-event audio/tone audio/vdvi audio/vnd.3gpp.iufp audio/vnd.cisco.nse audio/vnd.cns.anp1 audio/vnd.cns.inf1 audio/vnd.digital-winds audio/vnd.everad.plj audio/vnd.lucent.voice audio/vnd.nortel.vbk audio/vnd.nuera.ecelp4800 audio/vnd.nuera.ecelp7470 audio/vnd.nuera.ecelp9600 audio/vnd.octel.sbc audio/vnd.qcelp audio/vnd.rhetorex.32kadpcm audio/vnd.vmx.cvsd audio/x-aiff aif aiff aifc audio/x-alaw-basic audio/x-mpegurl m3u audio/x-pn-realaudio ram ra audio/x-pn-realaudio-plugin application/vnd.rn-realmedia rm audio/x-wav wav chemical/x-pdb pdb chemical/x-xyz xyz image/bmp bmp image/cgm cgm image/g3fax image/gif gif image/ief ief image/jpeg jpeg jpg jpe image/naplps image/png png image/prs.btif image/prs.pti image/svg+xml svg image/t38 image/tiff tiff tif image/tiff-fx image/vnd.cns.inf2 image/vnd.djvu djvu djv image/vnd.dwg image/vnd.dxf image/vnd.fastbidsheet image/vnd.fpx image/vnd.fst image/vnd.fujixerox.edmics-mmr image/vnd.fujixerox.edmics-rlc image/vnd.globalgraphics.pgb image/vnd.mix image/vnd.ms-modi image/vnd.net-fpx image/vnd.svf image/vnd.wap.wbmp wbmp image/vnd.xiff image/x-cmu-raster ras image/x-icon ico image/x-portable-anymap pnm image/x-portable-bitmap pbm image/x-portable-graymap pgm image/x-portable-pixmap ppm image/x-rgb rgb image/x-xbitmap xbm image/x-xpixmap xpm image/x-xwindowdump xwd message/delivery-status message/disposition-notification message/external-body message/http message/news message/partial message/rfc822 message/s-http message/sip message/sipfrag model/iges igs iges model/mesh msh mesh silo model/vnd.dwf model/vnd.flatland.3dml model/vnd.gdl model/vnd.gs-gdl model/vnd.gtw model/vnd.mts model/vnd.parasolid.transmit.binary model/vnd.parasolid.transmit.text model/vnd.vtu model/vrml wrl vrml multipart/alternative multipart/appledouble multipart/byteranges multipart/digest multipart/encrypted multipart/form-data multipart/header-set multipart/mixed multipart/parallel multipart/related multipart/report multipart/signed multipart/voice-message text/calendar ics ifb text/css css text/directory text/enriched text/html html htm text/parityfec text/plain asc txt text/prs.lines.tag text/rfc822-headers text/richtext rtx text/rtf rtf text/sgml sgml sgm text/t140 text/tab-separated-values tsv text/uri-list text/vnd.abc text/vnd.curl text/vnd.dmclientscript text/vnd.fly text/vnd.fmi.flexstor text/vnd.in3d.3dml text/vnd.in3d.spot text/vnd.iptc.nitf text/vnd.iptc.newsml text/vnd.latex-z text/vnd.motorola.reflex text/vnd.ms-mediapackage text/vnd.net2phone.commcenter.command text/vnd.sun.j2me.app-descriptor text/vnd.wap.si text/vnd.wap.sl text/vnd.wap.wml wml text/vnd.wap.wmlscript wmls text/x-setext etx text/xml text/xml-external-parsed-entity video/bmpeg video/bt656 video/celb video/dv video/h261 video/h263 video/h263-1998 video/h263-2000 video/jpeg video/mp1s video/mp2p video/mp2t video/mp4v-es video/mpv video/mpeg mpeg mpg mpe video/nv video/parityfec video/pointer video/quicktime qt mov video/smpte292m video/vnd.fvt video/vnd.motorola.video video/vnd.motorola.videop video/vnd.mpegurl mxu m4u video/vnd.nokia.interleaved-multimedia video/vnd.objectvideo video/vnd.vivo video/x-msvideo avi video/x-sgi-movie movie x-conference/x-cooltalk ice ocsigenserver-2.2.0/src/files/ocsigenserver.10000644000000000000000000000257312060404165017415 0ustar0000000000000000.\" Hey, EMACS: -*- nroff -*- .TH OCSIGEN 1 2006-09-14 .SH NAME ocsigen \- web programming framework in OCaml .SH SYNOPSIS .B ocsigen .RI [ options ] .SH DESCRIPTION .B ocsigen is a programming framework providing a new way to create dynamic web sites. Its goal is to offer an alternative to Apache/PHP, based on cutting-edge technologies coming from research in programming languages. With .BR ocsigen , you program in a concise and modular way, with a strong type system which helps you to produce valid xhtml. The server handles sessions, URLs, and page parameters automatically. .SH OPTIONS .TP .BR \-c ,\ \-\-config Alternate configuration file. .TP .BR \-d ,\ \-\-daemon Daemon mode (detach the process). This is the default when there are more than 1 process. .TP .BR \-help ,\ \-\-help Show summary of options. .TP .BR \-p ,\ \-\-pidfile Specify a file where to write the PIDs of the servers. .TP .BR \-s ,\ \-\-silent Silent mode (error messages go in errors.log only). .TP .BR \-v ,\ \-\-verbose Verbose mode. .TP .B \-V ,\ \-\-veryverbose Very verbose mode (debug). .TP .B \-\-version Show version of program. .SH SEE ALSO .BR ocamlc (1). .SH AUTHOR ocsigen was written by Vincent Balat . .PP This manual page was written by Samuel Mimram , for the Debian project (but may be used by others). ocsigenserver-2.2.0/src/files/ocsigenserver.conf.in0000644000000000000000000000277212060404165020610 0ustar0000000000000000 80 _LOGDIR_ _DATADIR_ _OCSIGENUSER_ _OCSIGENGROUP_ utf-8 ocsigenserver-2.2.0/src/files/logrotate.in0000644000000000000000000000052312060404165016776 0ustar0000000000000000LOGDIR/*.log { weekly missingok rotate 52 compress delaycompress notifempty create 640 USER GROUP sharedscripts postrotate if fuser -s _COMMANDPIPE_; then echo reopen_logs > _COMMANDPIPE_ fi endscript }