summaryrefslogtreecommitdiff
path: root/src/cups
diff options
context:
space:
mode:
authorRoger Leigh <rleigh@debian.org>2008-10-26 16:10:50 +0000
committerRoger Leigh <rleigh@debian.org>2008-10-26 16:10:50 +0000
commiteb5718390731a9746c556317e641320b671f2091 (patch)
tree762876b4adf298c1281142328e2ae87007330904 /src/cups
Imported Upstream version 4.2.0
Diffstat (limited to 'src/cups')
-rw-r--r--src/cups/.cvsignore13
-rw-r--r--src/cups/COPYING280
-rw-r--r--src/cups/Makefile.am236
-rw-r--r--src/cups/README116
-rw-r--r--src/cups/calibrate.ppm376
-rw-r--r--src/cups/canon.c679
-rw-r--r--src/cups/command.txt76
-rw-r--r--src/cups/command.types36
-rw-r--r--src/cups/commands/CleanAll.cmd6
-rw-r--r--src/cups/commands/PrintAligmentPage.cmd6
-rw-r--r--src/cups/commands/PrintSelfTestPage.cmd6
-rw-r--r--src/cups/commands/ReportLevels.cmd6
-rw-r--r--src/cups/commands/SetAlignment.cmd7
-rw-r--r--src/cups/commandtocanon.c196
-rw-r--r--src/cups/commandtoepson.c241
-rw-r--r--src/cups/cups-calibrate.c839
-rw-r--r--src/cups/epson.c705
-rw-r--r--src/cups/genppd.c858
-rw-r--r--src/cups/rastertoprinter.c759
19 files changed, 5441 insertions, 0 deletions
diff --git a/src/cups/.cvsignore b/src/cups/.cvsignore
new file mode 100644
index 0000000..bd2def4
--- /dev/null
+++ b/src/cups/.cvsignore
@@ -0,0 +1,13 @@
+.deps
+.libs
+Makefile
+Makefile.in
+canon
+commandtocanon
+commandtoepson
+cups-calibrate
+epson
+genppd
+ppd
+rastertoprinter
+ppd-stamp
diff --git a/src/cups/COPYING b/src/cups/COPYING
new file mode 100644
index 0000000..960fe74
--- /dev/null
+++ b/src/cups/COPYING
@@ -0,0 +1,280 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
diff --git a/src/cups/Makefile.am b/src/cups/Makefile.am
new file mode 100644
index 0000000..2580fdf
--- /dev/null
+++ b/src/cups/Makefile.am
@@ -0,0 +1,236 @@
+## $Id: Makefile.am,v 1.45 2001/11/18 00:05:17 rlk Exp $
+## Copyright (C) 2000 Roger Leigh
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+## Process this file with automake to produce Makefile.in.
+
+AUTOMAKE_OPTIONS = 1.4 gnu
+
+@SET_MAKE@
+
+MAINT_CHARSET = latin1
+
+
+## Variables
+
+PACKAGE = cups
+
+bindir = @cups_bindir@
+
+pkgdatadir = $(cups_conf_datadir)
+pkglibdir = $(cups_conf_serverbin)
+pkgsysconfdir = $(cups_conf_serverroot)
+
+cupsexec_backenddir = $(pkglibdir)/backend
+cupsexec_filterdir = $(pkglibdir)/filter
+cups_modeldir = $(pkgdatadir)/model
+
+AM_CFLAGS = $(GNUCFLAGS)
+DEFS = @CUPS_CFLAGS@ @DEFS@ -I. -I$(srcdir) -I../.. -DCUPS_DATADIR=\"$(pkgdatadir)\" -DGIMP_PRINT_VERSION=\"$(VERSION)\"
+INCLUDES = @INCLUDES@ $(LIBGIMPPRINT_CFLAGS)
+LIBS = @LIBS@ ../../lib/libprintut.la $(INTLLIBS) ../../lib/libprintut.la
+
+
+## Programs
+
+CUPS_BIN = cups-calibrate
+CUPS_BACKEND_BIN = epson canon
+CUPS_FILTER_BIN = rastertoprinter commandtoepson commandtocanon
+CUPS_NOINST_BIN = genppd
+
+bin_PROGRAMS = @CUPS_BIN@
+cupsexec_backend_PROGRAMS = @CUPS_BACKEND_BIN@
+cupsexec_filter_PROGRAMS = @CUPS_FILTER_BIN@
+noinst_PROGRAMS = @CUPS_NOINST_BIN@
+
+EXTRA_PROGRAMS = cups-calibrate commandtoepson epson genppd rastertoprinter commandtocanon canon
+
+CUPS_LIBS = @CUPS_LIBS@
+
+cups_calibrate_SOURCES = cups-calibrate.c
+cups_calibrate_LDADD = -lm
+
+commandtoepson_SOURCES = commandtoepson.c
+commandtoepson_LDADD = $(CUPS_LIBS)
+
+canon_SOURCES = canon.c
+canon_LDADD = $(CUPS_LIBS)
+
+epson_SOURCES = epson.c
+epson_LDADD = $(CUPS_LIBS)
+
+genppd_SOURCES = genppd.c
+genppd_LDADD = $(CUPS_LIBS) $(LIBGIMPPRINT_LIBS)
+genppd_DEPENDENCIES = $(LIBGIMPPRINT_LIBS)
+
+rastertoprinter_SOURCES = rastertoprinter.c
+rastertoprinter_LDADD = $(CUPS_LIBS) $(LIBGIMPPRINT_LIBS)
+rastertoprinter_DEPENDENCIES = $(LIBGIMPPRINT_LIBS)
+
+
+## Data
+
+CUPS_PKG = calibrate.ppm
+CUPS_CONF = command.types
+
+pkgdata_DATA = @CUPS_PKG@
+pkgsysconf_DATA = @CUPS_CONF@
+
+if BUILD_CUPS
+INSTALL_DATA_LOCAL_DEPS = ppd
+endif
+
+if BUILD_TRANSLATED_PPDS
+PPD_NLS = $(PPD_NLS_1)
+endif
+
+if USE_NLS
+PPD_NLS_1 = ppd-nls
+endif
+
+install-data-local: $(INSTALL_DATA_LOCAL_DEPS)
+ if test -n "$(INSTALL_DATA_LOCAL_DEPS)" ; then \
+ $(mkinstalldirs) $(DESTDIR)$(cups_modeldir); \
+ cd ppd ; \
+ for language in * ; do \
+ cd ..; \
+ $(mkinstalldirs) $(DESTDIR)$(cups_modeldir)/$$language; \
+ cd ppd/$$language; \
+ for ppdfile in * ; do \
+ $(INSTALL_DATA) $$ppdfile $(DESTDIR)$(cups_modeldir)/$$language ; \
+ done; \
+ cd ..; \
+ done \
+ fi
+
+uninstall-local: $(INSTALL_DATA_LOCAL_DEPS)
+ if test -n "$(INSTALL_DATA_LOCAL_DEPS)" ; then \
+ $(mkinstalldirs) $(DESTDIR)$(cups_modeldir); \
+ cd ppd ; \
+ for language in C $(ALL_LINGUAS) ; do \
+ cd ..; \
+ $(mkinstalldirs) $(DESTDIR)$(cups_modeldir)/$$language; \
+ cd ppd/C ; \
+ for ppdfile in * ; do \
+ if test -f "$(DESTDIR)$(cups_modeldir)/$$language/$$ppdfile" ; then \
+ $(RM) $(DESTDIR)$(cups_modeldir)/$$language/$$ppdfile ; \
+ fi ; \
+ done; \
+ cd ..; \
+ done \
+ fi
+
+refresh-data-local: ppd
+ cd ppd ; \
+ files=`find . -name '*.ppd*' -exec basename '{}' \; | sort | uniq` ; \
+ for language in . de en es fr it ; do \
+ for f in $$files ; do \
+ ff="$(DESTDIR)/$(cups_modeldir)/$$language/$$f" ; \
+ if [ -f "$$ff" ] ; then \
+ echo "Removing $$ff" ; \
+ $(RM) "$$ff" ; \
+ fi ; \
+ if [ -f "$$ff" ] ; then \
+ echo "Unable to remove $$ff" 1>&2 ; \
+ exit 1 ; \
+ fi ; \
+ done; \
+ done
+
+
+install-data-hook:
+# Remove unused directories in install tree
+ -rmdir $(DESTDIR)$(cups_modeldir)
+ -rmdir $(DESTDIR)$(pkgdatadir)
+ -rmdir $(DESTDIR)$(cupsexec_backenddir)
+ -rmdir $(DESTDIR)$(cupsexec_filterdir)
+ -rmdir $(DESTDIR)$(bindir)
+ -rmdir $(DESTDIR)$(pkglibdir)
+ -rmdir $(DESTDIR)$(pkgsysconfdir)
+ -rmdir `dirname $(DESTDIR)$(pkgdatadir)`
+ -rmdir `dirname $(DESTDIR)$(pkglibdir)`
+ -rmdir `dirname $(DESTDIR)$(pkgsysconfdir)`
+
+
+## Rules
+
+.PHONY: ppd ppd-stamp-pre ppd-stamp-nonls ppd-stamp-nls ppd-stamp-phony
+
+all-local: $(INSTALL_DATA_LOCAL_DEPS)
+
+ppd: ppd-stamp
+
+ppd-stamp: genppd
+ $(MAKE) ppd-stamp-phony
+ touch ppd-stamp
+
+ppd-stamp-phony: ppd-stamp-pre ppd-nonls $(PPD_NLS)
+
+ppd-stamp-pre:
+ -$(RM) -r ppd
+ -mkdir ppd
+
+ppd-nonls: genppd
+ for language in C ; do \
+ mkdir ppd/$$language ; \
+ echo "$$language:" ; \
+ ./genppd --prefix=ppd/$$language ; \
+ done
+
+ppd-nls: genppd
+ wdir=`pwd` ; \
+ cd $(top_builddir)/po ; \
+ $(MAKE) ; \
+ $(MAKE) DESTDIR= prefix=$${wdir}/catalog datadir=$${wdir}/catalog/share install
+ for language in $(ALL_LINGUAS) ; do \
+ mkdir ppd/$$language ; \
+ echo "$$language:" ; \
+ LANGUAGE=$$language ./genppd --prefix=ppd/$$language --catalog=`pwd`/catalog/share/locale ; \
+ done
+ $(RM) -r catalog
+
+$(LIBGIMPPRINT_LIBS):
+ cd ../main ; \
+ $(MAKE)
+
+dist-hook:
+ for dir in commands ; do \
+ if test -d $(srcdir)/$$dir ; then \
+ mkdir $(distdir)/$$dir; \
+ for dirfile in $(srcdir)/$$dir/*; do \
+ if test -f $$dirfile ; then \
+ cp -p $$dirfile $(distdir)/$$dir; \
+ fi \
+ done \
+ fi \
+ done
+
+clean-local:
+ -$(RM) -r ppd
+
+
+## Clean
+
+CLEANFILES = $(EXTRA_PROGRAMS) ppd-stamp
+MAINTAINERCLEANFILES = Makefile.in
+
+EXTRA_DIST = \
+ COPYING \
+ README \
+ calibrate.ppm \
+ command.txt \
+ command.types
+
diff --git a/src/cups/README b/src/cups/README
new file mode 100644
index 0000000..812dd6a
--- /dev/null
+++ b/src/cups/README
@@ -0,0 +1,116 @@
+README.txt - 11/21/2001 - CUPS Drivers based on Gimp-Print
+----------------------------------------------------------
+
+This file describes the CUPS drivers based on the Gimp-Print project.
+
+Note: to use these drivers you must have CUPS 1.1.9 or higher. We
+recommend use of CUPS 1.1.12 or higher.
+
+All code is Copyright 1997-2001 by Easy Software Products and/or the
+Gimp-Print project and is provided under the terms of the GNU General
+Public License. The licensing details are provided in the file
+"LICENSE.txt".
+
+
+INTRODUCTION
+
+The CUPS drivers contain all of the files needed to support
+photo-quality printing on any printer supported by the Gimp-Print
+project. You can find out more about the Common UNIX Printing System
+("CUPS"), an IPP-based printing system for UNIX/Linux, at:
+
+ http://www.cups.org
+
+
+WHY DRIVERS FOR CUPS?
+
+CUPS is designed from the ground up to support printing to modern
+printers. In order to support as many applications as possible, CUPS
+provides a PostScript RIP (currently based on GNU GhostScript 5.50) as
+well as an image file RIP and many file filters that handle conversion
+of files to a format usable by a printer driver. The filter interface
+is extensible to support new types of files that can be printed
+(e.g. a GNOME metafile, etc.) All of this filtering happens "behind
+the scenes" so is transparent to the user.
+
+In addition, CUPS uses PostScript Printer Description ("PPD") files to
+describe printers, allowing applications to see the available printer
+features and capabilities easily. The CUPS PPD files add a few
+additional attributes to the standard PPD specification to support
+printing to non-PS printers.
+
+
+WHAT TOOLS ARE INCLUDED?
+
+We provide two tools for making CUPS drivers.
+
+The first is called "cups-calibrate" which allows you to do
+super-simple color calibration of your printer drivers. It is an
+interactive program that prints several calibration images through
+your driver until a final profile is produced.
+
+The second is called "genppd" which generates PPD files. These PPD
+files are created in several languages. The program reads printer
+driver information from the Gimp-Print driver database and produces a
+PPD file for each driver. Normally, users do not have to use this
+tool directly; it is run automatically in the build process.
+
+
+WHAT DRIVERS ARE INCLUDED?
+
+We support all of the Gimp-Print drivers supported by the project. The
+Canon and EPSON drivers also support simple printer commands to do head
+cleaning, test prints, and alignment, as well as an EPSON-specific
+backend that provides ink level information to the user.
+
+The printer drivers in this distribution are so-called "raster"
+printer drivers. This means that they receive a stream of images, one
+per page, that contain all of the colors, etc. for the printer. The
+printer driver then only needs to convert this to the appropriate
+printer commands and raster data to get a printed page.
+
+We also have a new experimental interface for printer commands using
+CUPS printer command files - ASCII text files with printer commands in
+them. This allows you to do a head cleaning, align the print heads,
+etc.
+
+
+WHAT SOFTWARE DO I NEED?
+
+Currently, CUPS 1.1.9 or higher is required, as is an ANSI C compliant
+compiler like GCC. The code has been tested on a number of vendor
+compilers and should be quite portable.
+
+
+HOW DO I START USING THESE DRIVERS?
+
+Please read the README file at top level.
+
+
+WHO DO I CONTACT TO GET HELP?
+
+For support issues, you should contact
+gimp-print-devel@sourceforge.net, the developer mailing list for the
+Gimp-Print project in general.
+
+The primary author of this driver is Michael Sweet of Easy Software
+Products (mike@easysw.com). Mike is also the main developer for CUPS.
+Please don't expect an instant response (or even a response within a
+week) as Mike often accumulates a backlog of 100 or more messages each
+day.
+
+
+COMMERCIAL SUPPORT
+
+Easy Software Products provides commercial support for all of
+its printing products. Please see our web site for more
+information:
+
+ http://www.easysw.com
+
+
+LEGAL STUFF
+
+CUPS, the Common UNIX Printing System, and the CUPS logo are the
+trademark property of Easy Software Products. Please see the
+CUPS software license for the terms of its use.
diff --git a/src/cups/calibrate.ppm b/src/cups/calibrate.ppm
new file mode 100644
index 0000000..f8a1324
--- /dev/null
+++ b/src/cups/calibrate.ppm
@@ -0,0 +1,376 @@
+P6
+# CREATOR: The GIMP's PNM Filter Version 1.0
+576 192
+255
+^]\X[\[\_WWZY[\^_`[\\WXZZ]_XY[Z\][]^^_a___^_^bccabcabb\^^[\^[\^[\^Z[][\^[\^[\^[\^\__\]_[]_[\^^```aa]]^[\^\^_\]_[\^[\^[\^[]_[\^\^`]^`^_a_ab^_a^_a^_a^_a^_a]_a]_a]_a]_a\_a\_a\^a\^`^_a]_a]_a]^a]^a\^a]`b]`b]`c]`b\_a\_a^`b^_a^`a^`a]_a^_a]_b\_b]`a^`a]_a_`b_`b_`b_`b]_a\_a\^`Z^_[]^Z\^W[\VZ[UXZTWXֺνҾҽʴŴĵɺĵϿͽǹɺŷúº~}{~TrVsVrWsZuZtYuZuZtZu\w[u\v]w[u^z]x\y[v^y\w[w]w^x]u_w_w^x^z]x^x_z_z_z^z^z^z_z_z`|`|_}^}_{`}_}a}`|`z_|_|_~_{_{_za{`~a~`}a~a~a~a~`|a~`}`}`~_~_{_~^{_{_}_{`}a}_}_|]y]y_|]y^{_|]{]|]|]|^|^|ZzYwZvXwXtΤԮŪ~}]dUYcQ`j[dk_U]B^ePT^EESws^{v_vq\c^MKG<KG<LE>KF>IF:HE8ID9KF9NH:SK=UN>SI;OE8LB5HA4FB7C?5EB7JG:OK?UQDVTEWWHXXGXYFZZGZZFWVBWUB[YF^[G`]Ha\Fb[FaWD_UC\UB^UCZTB[VD\WE\WGaZIfaKhcOjeQjfPjfQjfPhbPhaOc^Jd^Lf^Kd]Kb[J`WG[UEYUDTNBQL@QK<SL:QI7TN>\[J^aT]aTqwnŹz}{_cU@=-?9,?9-=8*=6+=5(:2&7/#3+!)#ѫd޶ڥn‹̑¿qgRü˸˸˘ƶ~}}r~lpnr}d~XjsGW_=\fBajAW_6[URSxyEtpFxrFN{}O[]_KW_NXcP\aPYbP\bWafU_eNX_PZcPZcPZcQ[cZcg\dg`jm_gkdlm`ikYbgXbgWagT_gT\gV_gV^gT^gWagXbhVafWbgYci^gk_gmWagYch[ek]ekYchZdiYchVbgVbgYbh[ci[fk[ek[diZcjYch[diZdiXciWcjWckWckWckXdjYfkYglYflYflXflXflXemZfoZgogortz{XcfWelXelYgl]inZglYfnYflXglYgmWdlYflZhm]in[hm[glZekYflYfkVejUcjUciVbhUagR_eQ\bNZaVvVwWtZwYu[vZwYv[u\v]w^w_w]v^x]w]x]w]w_x]w^w]x]w^x_x]w^x^x_z^x]x_x_x^x_x^x^x_x_y_y`{a|`{`za|a|a|az`za{a{a{a{a}`}a~a}a~a~a~`|a~a~a~a~a~a~a~a}a~`}`}a{a{_{_{_|_|`|_|_z_y^{_{]y]y\w]w]y]x[w\x\xXvXuŝͥȥz||W]Nlqgch]qvqZbTJS5[fFS_>>L&}rsl]PK@NK?NJ@NJ@MJ=JG<JF=MF<NH:PK;OH:LD8G?2B9.A8/@:2A;4D@6IF;MI=ROCSSDUUDTTDVTBUSBUSATP@WVD\[H^[H^YG^WB_XD^WC^VB]UB[QBYRA\VD\VD]XEb\HgaMhaNgbNhbOhbNhaNh`Ld^Ke\Ie^Kf^Lf]Lc\Kb[K_YI[WGVRDRN@OI<QI:OF5WSE[[NdfZaf[x{w̻hibGC5>6)>7)=7+<4+<3(:2'80&4,#*"ۻĉhأuשûǾ˿nuֽ냏îzxvx\}YeyVekJW^@NT7[bA^`=]UNxyELlj?\yvJ}|W\]`LYcMXaPZaPZaQ]bQ\cVaeYciS]dQ[dT^eR[ePZdR\bWbg\gk[ehfnpdlmcim\fkZdiT]gU_gXahYcjXahZckYchWbgYci^gn\gkYciYciYci\fk]gk\gk[cjYciXci[dk[el[fk[fk[eiZbjZbiXciXckXcjXckXdkYfjZfmZfoYglZhl\in[hm[hm\in]ipYekYddĥ}Wcj]jo`lpblp^jn[hmZglYhlYhl[hn^jo`lo`mq]jn[imZimZhmZhlZhlYglYfkWdiUahQ^eM[bMZbWvYwYvYvYvYuYu\v\v]w]w]w]w_w_w^w]x]w]x]x^w\v_w_w_x_x_x^x^x^x_w_x_x_x_x_x_x]x_x`y`y`{ayay`y_y_y_yaz`za{azaza{a{a|a{b{a{a{a{a|a|a~b~a~a~`|a|a~_{`|a}a{_{`{a{_{`|`z_z^y\x_y`y]x^y^x^w_x^x\w\w[vZvYuv{||ɨuwyfk]jpbjpbGR,`fLV_;]gGPY=FQ->L#|{taSNAQMARO@RO>QN>MI<KG=MK:OK8NH8HC8C>4?8/94+:4,=6/?:3A=5GB8HE;LI<ONARQBRPAQO?QO<OM;PP<Y[HaaPfdWffVgeTeaNaZF^UB[S?WO<UM;XTB[UD]VEa[Hd^Id^Id^Kd^Kd\Fe_Je_Kd^Jd]Je\Ke^Ld^Ld^Ld^Lb\L`YJ[VGUOBOK=OG9KC4SOB]^Sptktws˹noiKI;<7(<8)<7*=6,;2)80(5,#2)"+"Ǐ`Ƿ]תԞtќuz{~|~k|uba[Nu{v}~|x}w~{w|zyyjqrnvhemGmrI|[gmKX^DSYB^dGqvOVwyImoD^c9~~PZ|YfZY6^_aVbgU_eS`eU`eT`eXcgS]cTaeYdiYdiU`eS_eU_hT^fU`fVch[ejYdi^il_hm_im^glV`gT`hT`hYcjZdl[gk\gl\emYckVci[ek[ek]gmXcjX`iZbkZbk[dkZbkYbk[cl[clXel[gkXflXdlXdlZgkZelYemZfmZgm[hm\io]iq^jn_lp_kp_kp^kq_lr\gmŬʨɣlrs[hm^kp_lp^ko_lq_lq]lp^lq_nscoranq\mq]lp]ko[koZinYhlZhlYglVejSbiQ_hO^fN\eO[c]y^x`w]wZw\w]x_x^y_x^x]x]x_waw`w_x_x_w_x_w`x`x`waxaxaxax_x`xax`waxax`w`wax`yaxaxaxaxaxbyaxayazbycy`za{a{a{a{a{b{a{a{c{a{c{a{a{a{a{a{a{a{d~a{`{a|`{a{a}a{a{a{_ya|_y`y_z`y]x_x^x_w_y]x\x\w^x\wZvYu~jnnxzv{}~~dh[z}wqth`dXxzxmseT_:AK&óydVTATT@WW>UU;SR<MI=OL>OO:NM8HD6C?5@<096,72*71+<6/>82>:3A>3EB7HF8LG<MI;NK=LJ:KH6KJ5abRrtkyzw~||~~xzvmrm`e_MWO;TJ6TI7TJ9UM<VP=[TCaYFe]Hd_Kd\HaZEbZFb\H`ZI`ZJb[Kd[Kd^Ld^Ld^Mc]M`ZJ^XHWRDQN?NI:KD5SOChh`ǷqsmNN?;5(;7(;5+;4*;2)80'7.%4)"+$șѳvlldʜ}~vyx{xwyutmTI<QIBe`Wyvl}{}v~sxvr}xq|y}ylqrntuy~{z|hppu|ubiSnuXouRlrSMR;TXF]cGsxPhnISW9cfDTX9qnMjhLmjMjeHutO]``WcgYcgZdh\gj[ei[fi_im[ekV`gYeh]gkZeiV`gV`gXbiYciYbj[ej[ej[fk[ej_hmainWdjWci_hoYek[gm]hn]gn\glZflXekZflajo[fl[em^inakoakoakoako^hn\fm\fn\gmZhmZgo]in]jn_jo`lpamq_lp`mqaorbpubotbpuamtamt^iq`ls]hlԪͦ{|Vbe]hn]jo\in\ko[ko[jo\lp[ko\kp\kp^nr^mq_mq_mq\lp\jp\ipYglVelSbkTaiR`hP]gP]g]yb{h~dz]y^y]y^x_xayby_w`y`x_waxax`x`x`w`xaxaxaxaxaxawbxaxaxaxbxawawawcxbxbyaxbybxb{c{axb{cycyczc|a{b{c~b|bzb{a{c~b{c{b{a{a{b{a{a{a{a{a{a{b{a{a{b{a{a{a{ayb{a{`y`zazaz_w`y`y_w`w^w]x^w^x]w\w[wZv{ux|_slmdhr}upz|cgUmpiuwu~~qsnW^FKU3MV:ôϾl[[?UZ:W]9U[9SS;OJ>SS>MR5KN5CB2B@4==-98+83+62+:5/<71<70?;1@=3DA3FC5HE5IE6GC3LJ7hh\tri`ZIKA-PE2PF6TK:WN>ZTC_WG`YGc\H`XE_ZE]XD]WE]VE]WE^YI_XH`ZJb\Jd^Lc^M`[J^XHXSESOAOK=KD6SQFoqmйorkOOB;6)94)83)93):1(6,#5,#3)!,%ߪwȿ̢xWLEfWQ~k[xzxrtuusurqgXfaVTPJkicnk_{zjo|y}~srt~pxtpwwszwx}|uzxy|zwzzkrqrxwltlgnVgnO]eKZbTV\IY^ET\?QXBPT<OS8liMTU?`aDSP5[Z;]^_]in^jm_im^hl^hl_im^hl_im^hl_im\fmajo`in\enYdl[fl[fm[gmZdk[gm_ho\fmakp`jo\im]iodls\go^koajpalq_ko_lpakqckq_io^inclqjsvltvnuxntxhrvcmq_io_io^inbkpclrcnscotcoscptdqucqucqudpudpucptamtgqsfnmֵШ|sǬpsn^ls^mq^mraotaotapubpuaotbqucqucqucqtbptaos_ns]lp[ipWdmUdmUckS`iRaiQ_h[{[y`wexbydyezaxazaz`wawaxcwdxaxaxaxaxaxaxaxaxawaxawdwcxaxawaxayaxawcydxcybybybxbybzbycycyb{c{azb}czc{a{b{c{c{cza{c|b{c|a{b|c}c{a{a{c}c}c}e}a{c~cza{b{czc{czd{`zazbyazdy_x_ybx`xax^y_x`w_x^w]x\wywhn|ejcebjzuqs¬o|sulnsf{~y_fT^eU\dPPXAuxpvxzöͺiYa;Ua5Va4T_5QS:PL?QW9JU0HN/ED4CG0AC,;<,62*61+94.:5.95.:6/<8.?</D?2D@3E@1HF5kl`wslYSBQF3RH7VM9YO?ZTC_WG`YFb[H`XE`ZF^WE]SD\TC\TC]UD]VE`ZKaZJc]La\Lc^L^XKXQDTPCMJ>GD4RREwzxپưmngLL?<8.83)72(61&4.%5,#3,#1(!.&ڻtޱܰpÖίQJAjeamicgc^l]X|jĩռz{u~tyvp}||sq~tr|wwoibRidZZUM_ZQYSF^YItr~u~tz~yvvyxqxvpxvnvrryumqpellirpemmovpdngdm_YbKlucqxc^gMPW>RZ>XaDPSAjjR`dCMR:\\@MO8HJ;]_`UbjWekZhlZim\imbkpcmqakoako_in^hm\fl_hn]gn\gn]hn[fm\gm\gm\gm\jn_lp_ko`lpamq`mqbntfpv`mqhqvfmqfpt^knfnrdnqeotanrbmrirvnwxrxyqxzmxxlvwjsthosgosgptgpthqufrvequequcqucqufqwfrwgrxcrwmxvȪΨĤ߯^im^ns_ms`ot_nt_mr`otbpubpubquaptcqubpt`nsaot`nr]kq]jr\joYgnVenTdlSaj\|]{^zdzl}wrk{g|bzazaycyfyfzfybycybyawcxaxbxcxawbybybybybybycxcycyc{dydyb{c{c{b{czc{c|c|c|c|c|c}d}c{c{c|d|c{ec|c{d|e}c}e}d}c|dc}c}dddd}b{c}c|c{d|c|b|b|a{b}a}a{a{a|`zaybxayaxaw`y^x_x_w]wo{fud{xd\]pkkoomzmzֺǥrsgrvf}~}xww}}jlc{|~ZcGV_=bg[utukmjpqqxy´ǵ]Ze6Tf0Uc1Sa4OR;QR?O[3KZ.GP/GM3CM+BI,:9-60-31+52+73,73+76,:9.>;-B>0D>/EA1ffZtpeUL8TJ8WO:ZR>\UB]WDaYGaZG`YE`XE]UCZRBYQA[SC]TD_XF_XIaZJc[Lc\L_ZK_XKZUFUPCOK>LK<TSH{~}ȭhi`GE7=9193)61'4.&3.%4,$3*#/&!.% ȲgŗˣѧֲUL=kda]XQZTOqlenjegd^cYOzۿҺz}svsp~mz}uqyyqmbbYKf_R]WGb\PiaTojY|yq}q}p|~p}}rpz}{{t{wpwumurksqkrqovuqxudllhrqipoltpnzgjsc]e\al`[dLSZ@ekLRY<T[<jkPLM6V]FRU?^_FKN?QTC]_aVdlVbkVckWekXel[hn\in\in^jo`kpdmrdmrdmrdmrclq`jp_koanq_joenrcoubnsbnscosanrbotcrvcqsdqscoslwyepuitxcmqjtxcorcqtcovdpvjswmwznxynxzlvwlvxlwxmxylwxlvxluyjswhtwgswdqueswgsyityiuygtvƦžţ̌ѩΣŝßaii_nv_nt`mt_ltaotaotdrvfswdrwbpubqubqu^ot`otbpu`os_mr\nr]lqYkpXhlVdh\|]{_|d{szym}h}d{czczcydydzcyeycycycycycybzczbzczczbzczczdydyc|bzcydyc{d{d{e|e{e|c{c{c|c|dze}d{e{d|d|d|e}d|e|e}f~e}e}c{d|g~d|c}c}dc|d|d|g}d|c|d}c{d|d~c~eec~a{c~a{a|azcybybybyby`w`x`w_w}v[{oJwSya~g`Wfxuoyhhrxx3o٫ۨٮŧy}pekO}v~ilejo_qumPX;dk[qtsrtrvxswyvch`̻yrxNUi/Tk-Uh/Ta5PR=VZ=Pb0K^,JV.JV/FW)BJ,:507203/+2.(77*9=+;<*<:-@<.D@0C?/ZWJºúº~ze`NTI5WO:\T@^VD_YEaYFaYE`YF_WE]UCZQAZQA\TD\SD^UE^XF_YJ`[KbZK_ZJ^XIZTFWQDURFPNBRQGwxy߽Ģ\]QFC5A=484)61'5.%3.%1+#2)#0'!/&solJϟg٧ysپԶDzЭ_XFg_\YSKc]VHB>@62YSKqkejgbhb`^VJjݽ˥p~uyvwsyuqqfnhYc\O[VJ]YLieUvzl}|r{yt|zmtsmy}o{|q~~nyyz}mtogqlsyudfe``\ab`gmkltrajgdkkaib}^xNpvUkr^px_]eIPX>_eHUZ>^cF`dEU\@NOAUXJMSASXJdcI\_aXenXenXemXfmWenWenYhn[inYhlYhl[in]jo`lpbnsdnsanrbpsbpsbpsborfoshqvhqvfqvgqwgtxcptjtxktxiuxjvxnxzlvxkvxfrugtwequerugtwjsxluxlwxmxylvxgrvlvxmwzmxznxzlxzkuxkvxlwylwymwykvylxzmy{oz|s}yàťţЪΨɢŠipogt{_ov`pybrx`qxaqvartarwbrxcrwbswcswcrwcrwbqu_qt]ot_ns]nr]mpdqojqoݰ]|^|^yh~s}yupe{b{czbzczcydyhzh{fyczdye{dye{eycyczezd{d{d{d{e|e|eze|e|e{e{e|e}`uauc}e|ezf}e~g|d|e}f~gf~e}e}f~ge}f~f~f~f~f}e}e~f~hfg~he}he}e}e}c|c|c|d~fc~c}c{b|bzbzc{bybybz`w`w`wjb@~tNyYxpVyZ}YyUn}`sxxllvwȽ7kh]@<Ґs̖ڣ۰ʸrwm_iPej]V_AgnVz~svuaeUX_G]cUgmihcr=Rk)Rm)Rj-Sb4RU>Vb:Nf*Ka*K_-J_*G\'BG-<7482/30+7;*;F(=D)>A*>=.B>1D=/LG9ttl»üɾżµqm`VK6WN:YQ>^VD^VD_XE^XE_WE\VCZSAYQAYQA[SCZRC\TE^XF`YI`ZJ`YJ\YH[VGYSGXRFVSHQPEQQGnqnάvwqRRBEB6B?4;5+71(4/'2,$2+#.*#0(".% 㽾޳c^jԿΪtpc[Cc[X`ZSMC:b\TLD?H>8D94H<7`XRqmfniegeabZPhծ}yn|~yv}||~r\SEb[N[RFVQFSPDTPBkeRkiY_cYnurmx{q}}r|s}p~wp|uwxuyxnuq}OMJVJDTH@ND>B=:NPNcgf_getdtyRdiK_fIfmMnvURZ@YbG_gPT[I[bIY^DLM=QRDU[AuuWba?]`bZgpWgoXhmYhnYhqYhqZhqYgo[jq_mt[kp[hq\hs]lrcpubnscpufsvgtwhtxhrvisxjsxlvzksxivyjsxluyjsxkvyjvymwzpz{kvxlwzhuxjvyjvyivxnyzpz|nxzlwyitwgswkvzjuzjuxkyymz{r{|v~zzxv~t~}u~~ts|˦̦ȣŢu|u]jn_mr`lp^lobqwaqxarxasyetyftwbswbsxftyfuxeuwesvbrsfstivtiuqckjܾ{ϗ&ʛ<c~]{^{`|d|i|j|jzk}k|i|dzd|c{c{c{c{d{izhzh{dze{e{e{h{hze{e{e{e{e|e|e~e}e}e{e|e}f~e|e|e}Q^eZcid}f~fe~f~h}h}i~i~h~g~gg~g~f}f}g~f}f}f}g}f}g~f~f~g~f~f~hf~h~hfge}ge}gc{d|c{d}c|d|cyb{b{b{a{bzbxvhFlfAysO|^~sQrMcglgp~kkj~qfc׿ɱۻǪ{dcgdwLEjتűy{wgn_elbvyt[bNhnbeibghivu{{nsqsv|wttRWn.Ro'Sp)Sm,Sc4SZ>Vh3Ni%Je'Mf*Kg'E]'>C-<7483/8<+?O&@Q"?M$AE)C</F=0IA1`\NǿǿĽýľɽ³wpeYN7ZO9[R?^VD_XD`YFaYF^WE\TCYQAYQAYQAZRBYRD\SE_XH`YI_YJ]XG\VGZUFWSDWSDVSHSPGQPFilg}~~е}~{eg]LI<EB7B>3<7.83*50'2,$/+#/*#/("/& ¥zy}NZɟﲫǛr_WSe`ZND=F<5ULFF<6F93B82H=7C50G<6^UNqkcmhbhe_aXN}gЫҲy~n[riZb\OULAbZMPG=WQHZYPddZb^Rtrdstimrmjrplyymyyu~}~s}j~v~nupnvqirjjjfcWQ\LIRFCVOKkkg`cbflkho]uShmLbeYbgSosUciDmsSksS\fJFN:NVEPT<\\GdbIifCpjBliE^bc[kpWin[jo[jo[iq\jr]jr]ju]kt]js\kr^ineps]jp]ks^ms`ot`otcpufswkuykvwmwzmx{ny|kyznz{mxylxylwylwznxzoy{q|}oy{lxwnz{lyzo{|pz|qzzp{|mwzitwitwkwymx|my|ly|o|}t}~z~xutyzģȥͦȤ¿á㾻pwt`rxbsvcuydtwdswdtydtygvzivzixyn}{p|{o}yp|ylzxesq۠A3Ӵrb~_}_|`|a~c}c}f~f|g|e}e}e}c{e}c{c{h|f{f|f{f{e|g|f|g{izgzg|g~g|g|g~g~he~g~g{f{g~g~g~Q]_IG?OLI^nvijjuv}wj~h~ihg~hhjjjhg~jg~g}f}f}f}f}g}g~g~g~f}hhh}fg~e~e~c{c{d|c|d|d|czdzczcz}qSca?X],tmAyU|YxZnpu~kdrnihib]]H?꾡Ѣ٧ܮܲڵַݭP9{[ٿŬ|~svp\eMU]F`eXy}{zz}z}z}xzxyxy^b`{}waaj<Sm%Rr"Ur'Un,Sc3U`:Ul.On"Kj%Rn(Nm!G^'>A1;43:9-BP)C^ B[CS#CC-KA5QG8UO8cdL̿ªum`\Q;^R=_VA`XEaZFb[GcZG^WEZRCYQAXQAXQAYQA[SC\VE^XH`ZJ_YI^XG]XGZTEWSCTOBTRFUTHSRFbc\vyy}´ĵ§stmZYMFC8GC8A=2>9.;6+83)4/&2,%/+#.*"/& Ŝt[TެroVYPJgc^OD?F<7H=8G;6E:5B83H>8B82B73?40A50RD;g]Qmiblidhc`_VNxeĥڶάxbzcS`TFaXKSI?SNHKF>XSGmfThcNjk_w}o{kvybprs~ut~h^aOwzfqwoksnhpkcli__`ODBQFGPHIKGFHCB]_`cjk`hhmu^gnRckYejTouX}[_dAfjINU<EM:PU@hVYAecGtpN~yVsnF_bd_qv\ns\ns\ms[nt]ot_krgrrx}Zgigrm\kp_mu_nt`nuapudqvcqufswfswervjuzjwzly{nzzp{{r||r||r||pz|r||t}~t~|o{|r~~r||u~~t}}u~~t~~mz|juydswguxhuyivzjw{nz{t{|{{yr~~n|}k{|m|~lz~m|n}uʩ̩ܱ֮ͥٮ۪۪ئxkwxeuzfwzix{iv{jx|jx{jz{n|}vv~s}r}p}yp}xhrq衝&*.ɾ`bg~jd|c~c~d~dee~f~f}gggge}e}gh}g}ffg}g}h}i|i}i}iig}ihi~j~uujigw~Ⱥ963:=?t~niiiijjiikiiiiiig~ig~ii~hg~g~hg}f}ghffhe~e~c|c|e}e|e|c{bz\Y6ca=gh?uoIzX|oLy[{cqwn~n~m~|qlmxtM96I./ZGEڻڨ۩֣֢ԠՠОҧyoov٪٬֭Ѭ̫Ѱƨҳ}~^eUgm`mrmcg]QX6]eNz{~y}x{wyxywyuxmqrtx~uxfiizhjfOVi2OnRs Ut%Tm*Tc4Ue8Up)Op Rp$Ts$PpEY'>?2;53?E-F_&HhHdIS)NF7VJ>WP;SZ0kvMƿ̰shWaT@`U@dYDd]Ie]Kd]Ic\I^XGYUDYSB[TBYSC[SD\VE]XH`ZJb\K_ZJ]YHZXGYVGXUDTOBTQFXWJVUI\[PnqmsuudeZMK>EB6EA3?;.>:/<7-94*72(4/'1+#.*"-(!װvc`ܿϥSKHic^ND@I<9G=7G=7E;5B73G=:C93C83?41C63M@8xiZvemcXf^Vkf`jgbfb`_VPn^¥گӲǧn[kTFXJ>TKAWPHWOCc^Nptiiqjitqx`orlun\]FMM?acWlqkhpm`hhajkX]]LCDLCEKEGIFHFDE]_`_hdhngrxgfoQ[dVY`ObhOZ`CV[F[`HPT?FM6kmK]_8]aPvsWzwOsqE}U_ad`pu^pu^pu_pu_quaqwq{y޲ˤǞhtp]mr_lphpqcnn_nubpubpubqvdsxhvzfuzguzkw|o{|nz|p||r|}t~r~~p||lz|stuvus~~s~~q|}mz}iw{kx{n{|o{}ky{ky}jx|lz~n{~m|}m|p~pqqqpqvȧ׮߱Ϧ̤ͦԪХͦqzuiw|iyzhy{ix{gwzgwyo}kxvhvvfvwgvwduwfuudss]knGEB.2<-')`bfh~heed~dfhgghhjg~gh~hg}h}g}h~i~i}i}j}norstnklp}}vݳĞ-32Wcex|vojjjkjkkjjlijlljlljjjijiiikhhg~f}f}f~f~fg~g~e~f~f}e|d|^[9_\2eb7}tPxkOobE}pVqxkv^~}yptxtv|y[B?V1-X55L,,XDEڹ߬߰ڮ٫եէԤԢϠԣѡʙП֤֥Ӡ̛ѡСѦǨ~~~~~~~qurzxz~vxudkYyz}y{y}wywzwywyruyejddh]^dZ`d\nfV]]DOe)OrQvUt#Pm*Sf4Xk6Vt&Qs Tt$Vw!PrFX)><2=;1DU+Ml JoKe!NP2VJ>ZR>X\3Xi.nέ{sreSdXDaV@fZEf^Hf_Kf_Jd\JbYI]XE\XD]XE]XE^XF^ZF^[I_\K_\K]ZJ\YIWWIWUHUTDSSESUGWZNYZLWWJcf]uxux{|jmjvyvvysWUGFC5DA2@<.?<.>:-<8,;5+83)60&3-%/*"-(!ˣu߾rjekoOPJAga^NFBI>:F=8F;6F;6A74I?;C96C96?41A51J;6hXNyhwk]l_OykldZb]Xpkeie_ea_]TMk[ֱֹҪذܶʬǣcS^K>[QHfaSjgVmiWrsdkrhgqpzvUTAQRHbg_hokbjjdkicljhkiH?@MBDMFIGFGECEV[\nvilr^iq`ZaHX^X[d[_eOW]M]bVW\LW]GLQ5aPT6}~[WplE}WrlI]acasw_qu`rv`rw`rx`qw߰ĝ֫Ȟ}w_lqaowaqvcrwcrwcswdsxdsxguyiw|jw|ky}n}~p~q}~n|ly~kx|q~~m|~n{~r~~p~sq~oz|o|uxxvuq~psttttutttuըѩѩөˡͥo{zhz|jz{l|}o|{t}{|}vzp}|iy{fvybtw_sv^rw\mq%(*+-2j]Wdccddggggkiiijjiiiiiijjkiknn}nn}uxxtmnvz}ptsֶ::;Yabv}okkkllkkkkkkjkkkkkkkkkkjjiiiiiihg~hjjhh~ih~g~g~f~f}bb?id;xsGzoNqR|kI}bzst|c|k{npvlgp{xvyfNMX,*]53\87T-*O,,T?A׵ܮ٫ڬ۬שרҤΡդӤϢӤթէӦԨФ֪͞͡~~~}}~|~}~{|{~{~{}|}{|{}||{{||}~acafhbutxTY>ps[{zta\KSW:Mg%NuQw!Sv$Rl+Vh5Yo3Uw#Qw Vx(U{"Oq IV-@>4CF3Ka(NrPrPb)RM8\QAZ[7Se%j<}ƽļƦtipcQi[HcXBfZEhaKhaOhbMg`Nd]Lc\H_[G_ZF_ZF^[G`]Jb[FpZH~[J{ZGuVEpSAmQ@cL=aO?_NAaWJ^YKZ[LZ]Pgldy~~vzzfiekmi~~ee[SPCFA4A=/?<.?<.?<.<8,:5*83)80(7-'1,$-("ϥ{w}Lz~VswNfkBagDpWOHf^]RJFI>9E:5F;6F<6B63K?<D:5D:6A63B54K=6^KBmZOeUJ^MChUIvfnf\SLH@63a[Vpjehd_ifeO@:wܼݿ߷شܸݺƩ›q^o^NaWH]VJbd\rzogjWSTDPSHipgeljaii\dekqndhcH@?LBDIBDFEFBABSXX^fbV[Yfoc^fKV]OX^XQYKY^Wbe_W]TCK2`eGPV6JR7llFmkDxsOzsOa`;]adcuzbtwcuxaqs_mpޮɟҧǛϧžݮ޲ͤnwvctxcsydsyetyfuyfvzfvzfvyevzewzfw|jx|kx|ky}m{~m{m{~ky}jy~ly~m{twyzvwyxy{zzz{z{wzҧ̢̣t}xqrr}yv}q~zgxzgxzewzdvycuxatx[mqmkc.29fffefgghhkjjjkjkjjjkjkjljknqpm~pqq~r~totxxvUYWD>6-%$#$,,.Wcinkmnnlklkmmmklnklkmllkklmllkllklnjkkijijkiiiiih~g~g~_b2lf@jc<rNvcBvRbwsQypIylCyUwqT~|fw\zkMzXif}|y}r^\Y.(a31Z54];9W/.Z10Q/.Q<<аްڭ٫֨بէӥӥզ͠ѢѣТԧԤѤУΡХܰ}~}}}}ljWwsmRN;PV3Pk$Ov Pw!Pv%Sl,Yj8Zt4Qy"Tx"Wz'R{ Mn%IV2BA6HR4Nl&OwRpR\/TK:[W>Uc,Zu'{LȽ˸~rfreVi]JeYEg\GkaLkbOjcOibPhaNf_La[H^ZG_\JaZFsXEeX^VVMVL_RfVUJ`TXKLDTI\N^L{[Li]Rnnhrwtqxvdkfcf`wzz}|cbXWSHRLBGA5A9-?<.?<.>:,<8,;6,93)90(7-'5+$2)"Ǡ޼ƢjmKn|}]kmRHD<aXXVOKG=8E95F=9F<7B63H<9F;7D:7B75@42G92wfXhZKZG?T@;m^UaPEjZPlcZa[TSF@9/+D;7`WSYPM;115*,:)(U<1m]r˴ֵղֲ޸ܺūutnixjm\ciZEH?TXLekgZbfY`efmjotkF@@JBEGBDFEFBCCOSUW`eY`c\d_[bVV\R[a^Z`]NTP_eXW^Nd_b>NR:ehNgjClkHolExtNYU5]acevwfuudqpٳӥ͡ϧ׮ӨԧҤ˞r|weuyfuyhuyguygw|hv|hw|fw|gw}gx}ix|gx}iy~kz}kz}kz}mz~l}k|l|n}p}w||}|~~~}~~}޸̨zʨج̥ǝܮѥجتԨÿxzssoorp~}m}}k{j}h{~gz|fwxfvxcvy`qu)&',*0"fefghhhhikkkkkkkkkkkklmlkklnnqq~nostqpomntafg&#$814*%'vlnmmnnoonnnonoomnmnnnmmmmmnmolmmkmllkkkkkkljikjjjwqFjd?wkG}mKg^8_`2jk;\\-{sJwpCzqG~Wx[zqQuW~\dhhroobV,(`3/a64[76T20`85a64\53T11R>>Ҵޯݱۯ٬جԨڭڮ֬ج֪ۮ֮ԮҪԮǤ幛̢mxpeYU{tTO=V\7Tp'OwPx"St&Tm/Ym8Xv4Rz#Uy%X{)S{!Nm&JT5FF7M_0Ru$QyPk"TY3TN:U_3Rl#n9VɺvmsiYj_Mf[Gh\Gk`KlbNlbOjcQg`Ng`Na_La\G{ZH^SWRMJDD;;B@;6?<?9>8<5;551:2I=F:NCVL]Tpg^df_]aYhkhrtrvwteaWWQDVNDTNCKE7C<.B<0@;/>:,<7,:5+93)71(5/(4,&4+%äxyYuvWXQE\UUZSQG>;D96E;6F<8A63G<8G<8E;7C94@43H83p`SueVqaQXC9hWPl^Q]KAl\Pj`Uh\Rj\O|pcj^UB42B655*)<22D9;=694-2=77`TMzȭݾϮѯӯֶڻ漡{rad]QGF=EHCZ`YaheXa_r~tiodFACJDFFBDCDD@?APSVNY]Y`cZceW^]_ddV[ZbfdTZUR[OahVkoNkjGbdEtuUzzUNM-zvSmhD`Z9_a_|ۧΠͤĚҥˠĞĝozygw{jw}jy}jy|huwjy|iy~iy}hy~iy|ky}kz}kz}k{~m}m}mnnn~poqsutwy{~}zײʞҩÞȠϨȣȠ֩اݰө٫̡yvqppooxx~j{ytxlzuᜓTCCG62UKEiiiijjikkkmlkklkmllknnmmnnmnnon~ponoqqmmlj}SY[-))9442-- _ksqnqpqqqqqqqqooopoooooonoonoopmmnmmlmkmmllnmkmmmkl{sMk`CviMbU9kd?ab3ff6urDyLvHznIthGzWzUZZZfoqvgG;d60d76c74c95c98f=9d:8a98\43U43R=?ԶݭܯӦڭﳐҟ˗|Đxɗ}vsvq}lufmeieqotr|p3spn}zv^_IHP)XW@Zb;Xt,OwPx"Rt&Sk1Yo7Yx-R{"U{'V}&T| Nj)LR7JO8Qh/RyQyNf$RT5ST8Rg)Yx$|H[ļ¸»zrvi[k`Ng\Ig[Ek^JkaLkaMjbNhaNd`NgZIaT[X@A>?ABCBFGED>=99:9A>81?75/3/93J=?44-61NEQIrZPX]S_`U`]NZTFXQFWPEUNCLF8E>/D=/@;/=9.<6,;5+;3)72)40(5.'8.(ȤزΧmoMUSCXPO_XTI>;A63D:6D96@53E86G<8E:6B73>21E83k[N|liYMq`OeRF_ND`LCbPCn^Nm_RfVKn\RqcU|pdXKDB64sh`VJBA40ZNHF:6JA?XTR\YV\SL|k«ٹĥϭͮͫԱغ꿧i\\QD`_Thpbjwl\d`GACHBEF@CBBB>??QUXNW\R[`QY\_eeV]]RY\W^XSYT[baX^QgnPhhCbmmGssP[Z9nnEmgE^V:iiexߵثΤͣɞr{wixykvvmxxx}l{|l|k|m}l}mopppqpqrqrrrqqqrrwwz~جҪʤýͦϨЪˣްԪ֪ɡywtrpͮʞÜ>62\LM&womnpoolnommoooooqooorsrponpyrqoqoqnrpogx~553F>8JE?NJDKFC9>>tppqqrqqqqqqqqqqoqqqqqpoqqppopmpnpnnnnnmmlnnnmmkmYT4^V9b[@c_AjfBfb;ha<lgBmiDqgEzmOvSyoOwV`{\ccxvRCnE<e:6e85d85c85i=;g:9e<;e;=_34\43S00O:<ѳիԬի򾝥qxwrltq|v{wz{t{uwr{wyr|usD:S>Q4${zlefSkmU_`HamEXv/Px Ov Qt&Sm1Yq6Xx-S{"S{%V}$Qz Mg,JR7OX:Tp+U{PtK^)NR4S_2Nn!e0Rhtq˱½|~utm^kcNeZGdYDh\Hj^Jh_Kh_Md_Mo[Ib\ST9;45?@;<:978?>6745:8953/;26.4.?9cayzJG/-2.1)K=uREYWF[YI^\K]XJ\VIWREOI<F@1E=0A=1?;1<6,:5+:3)82)50(8/(90&گ–mutYTMJ`[YE<:;0.;20>30=30?55E:7A73@53;20D71gUIzl}pbTIveUp`Nq`S{jZm]LteTm]O`OHp`U_PFmaW[NGF96}pzm~rg|obyl_aVLUMFb[X_\X_][YOJj\ִԸɫणʩ̬նsfg_Xdb]KDEKDFFCE@>@<;<RWWR\\XabT]^W``T]_LUYU]\bj\di_PVNvxcwvQomIOP1sqR_]:omJomG_\Accayx~xĞœ{вæѩm{|q~ooqrrrsttrsttuvzyuuvvzy~¾جܭת̤ğz{uzà· #"$'낍|xqqqpoqoporporrsrrrt~{xuprzvrsqqronrqr}ѱүYTNtpqppsrrsssssttsrqrsttqqqqqrpqqqqopopqooqppooonnomecA_\<QL2ieJibHhb<wnHoeCc]?qiLpiGmiCyTwWdyY~`|zXKvOBh;7f87c85a64c77g=;i<:i=<f:9c65_54Z00S./N8<ŢԳƥȦЫotqhyifrnxrqltojd}d^z]XsQJTJbPC3dLqC-wI:˰~x`aR}ykkVmvQZw0OwOv Qt&Sm1Xs4Vy*S{"S{$V~$Qw"Me/MU7R`8Tu)U}No!GX,MU2Nh*Ovl6Yi[NtʮʼvuvxubkfKg_FcYCf\Ei\He\Gd_Mn[If^6745//2345//210/20225665202/2.602,FDsu툋D@@;:4:/3#E5XI`aOeeSfcRc_O_[KTQAID4F@1D</?;/<8.=6,<4+:1)6/(8/*;2)ȣ{ᠢOIB`[YWQN5/-8//7/03,,3.,@848//:018/.B51^ODxj~rn`WlZTp`TyjXveSqbQn]OtdVk_WeZRrbW`TLxmZOIG:6suhxj{n_{m]}o`}paYNGYRNd]Ya]Z^][YOK{cVаԺˮĨɫ˯ãĩʳSDENGJFCF@AA=>>JNPMX[R\^V__OVXW^`RY[P[ZirYltP{djebDddBppLed?jfEPQ8\\ARP8aa`{}uyzqyypwxnyzqwvxv~ٮ~xuvvsustwxzxzy|ywy~|zӭݯҦȡÿžke[&(.'&)E:3|}xypoqpsqrtsssqrrrspu{vvxtsuprrrrro䲱jw{qrqtttttutttttsssrstssrsvvx{}srspsssqppooqqpppop[W5ZT6[R<aY?rgNk`EjbBfe@kkFad=onKroMie@\lt}hnQHnC9h:6l?<g;7f96f;6f65j>=j<:g87g:7_20a53_43\22U0/M7:气t[QWJJF657##/3C"M)&f2.D;[JɞuTЪȦﰔ̬~xxn]bFU]7biKOS5TW:|zhwZZx/MxPvRt'Sn2Zv4V{(S{"S{$V~$Rv%Nb0OZ:Uh5Uy(R}Mh%FW.K\/Lo#Nxg8ZYv|G_²|wrxx`ihJgaFe[Bg_Fh_He_Hd^I]O..&#$!%#)&'&*')'21::42./GJ88&##+%(#1,GD=:601-818180D9G7_Oim]nk\ljYieT\ZHOM:IE5F@2A<1?:/>9/>6.<3*90)90*;1+Ȭ~uIECb[YA:6YSP=42?63=43:2250/6003...)(6.-WH@uh{nzngSKhWRm`VpaUpaVl^VreZl_Vj_Xse\eULh]SxZPKH<7x{m}qdtfugUp_Iq_iYM`PG[OG[UOf`[a]Y^\YXPLs\Sǧдħåŧ𷝪yd^PSBCOHLHFIBBD??AGJOKTZW^`Y`_SZ^Y`aV\\PZZR[V^dSkpL{{TbbAtvPTV2nnL\W<IM:Y\EQQ9aa`|{ruvmwyo|{s{{rxxq|zruzyj~~svvvuvwx|}xv~ut|}~zxxx{~|||}yzw}}›((('(,{{}xsqrqxzutttsttuuqw|vsuvswtststoγĶr{xqvtttwwuvvwwwxuuwuuustu~tstttsssrqqrrrrqqq`Y:E@#FC*YT7]S9|sRrlGbc<cf?_aBmeMwnUzpTtTbvX{~j[oK;d83d54d74f97d75f84e64h:9h96c50`2-pK>a;/a32^51]22X12P7=䩒稐ݡyk. ( 0P$!`0,g43B<H<YHumOƝȞƢƫǯjZrffésvmxdtsǴ}hzkW`@YbBUZ=aeLq{cYx/LxLwQs(Vq4Yu/S{$R{!S{$T}$Ps&Ob3Q^:Vm2W}$RxId'H[/Id*LsPug|9r|Jp}FxGӿŷüzx{}bgeFe_Cf]Bg_EjbIhaKh_FJ@qt~"{'#vwy|ɌY[ե~ed-(%)#.*97C@FAJBMEF@303-J=ncqthurclkZ`_LZXEPM<HD5C>3?;1=9/>8.>6-;3+;1*;2,r_s|UvRNK8_VWOFB?40]VSB73D86A64D;8=52<42:52911:21vkncVymtk[Sm_Xi[VocYnc[le]ibYld\yntj`i\S}uiwWKCJ=9yzlug~pbp^Jr`L|mYqaTkVMiZPwjh_U]UPf_\b]\_][YTOnYNǮŦȬ§§꼩|rSCAB;=GEFGFGFFIFHJLKLORRMPSNRVSXYJOQKRWY`_qv^vwNlmJwyOnqLgkFkkMSXAbhMDI/`__srknmgllgpojrpjtskwvo}{uywwpzyqwvnxxozzqzzq||rtvxx~s}sx|{x}y{x{|z|zvxyz~{yw}|yyԽ!)&*roompqsrvvxwvsuvvvuwvxxxz||xvxvwwwwvwvvutͪ|uxxvvxxwxwxxxxwxxw{uuuuutssrtsrrsrqqZV3D="D>&c]7tnCwqBTgaAc_@niRojVoiPw_uX_i~q^fOoQ?gB9b41f66f66e54g84d52f64f53rJ>wVAy\@rQ8c;,vRB[1.[2.P+$YA[EgUj,,,7=R#!c1,j96C=KBYMxkUs`tWx^ÖgQiwzsPpkEVdPfaZbxr}rXwkMrRxiEZXyZha{I\b`iiOprQ^b@`dIT]>KT:EL8k~cWx,LxLvQs*Vr3Ww/U}$Q| S{$S{$Pr'Pc5Te;Wt0T}"Pu Ga%J`*Ql!RyPrWm-Xl1[o.oɰ˱ǺʻIJuvt{~abeBca>db?eeAgcDfcFi`FG9}bX Zx,'~&%jkËbhms­DKJ_ge͠^^MJHDEALDF?QEIAG=XMKE6667MHynvwkoo_gfT`_KYWENL9DA3@>3?;0>;0>9/>5/;3,;1*ozr~pfsXn~]aaDXROSLIF:6A52LA>@52=2.F;7>50B86;0/@51L@9UKDynqfZuvjqbX{ofzsl}rqmdf`X{vmywm`^QJG=8ynwiwi|o_p_Ln_QtfVrcViXMfVJzk{jwjg`W]XSfa]b_[_]ZXSPkYO¦xUDbTĞݯĦ鹤WFC@79FAEFCEECFEBFFCFDBEB?C@:<@9;B??YZNorP\bBmuJ`i?dkCmnINU7_kLLW=_^_ljfihbigdjielkfonhrqjsrlutmxyozxq}}rxvukxwoxwnvumxwo}zs{zq~rs|q{xm~zn~qxxvwx~}t}{zz{zx|zxzxs~rruvv{}{xrrsux~{||y}ۃ|r'&-}vorsuwtuuwwuuyvvz|zzxxwxxyxyyxxyyvwwyv~fmnlncLdgaxuxwxxyyyyyxyxxxy{yvwwy{|yy{zvststsrqqslAG<MB+WyI}RneEXR9kbGj_FhaOnhRz`{rSw]|ax[pYgF8kH9c61d33d53d52d52e41d52f63_6+{VCpH8^GxY<tS<`8,vWChH1ȖE5H9[Hy1%;#"?#E$"H" T&"b/*f62w=8B=MEgWtd]LorZlViqelQleFoiERnfBmgI~vNVcaƩkfUUiX~sSsiNsfKreH{WuhBY|G]_0TY-[\3il/LOrs?S['U\+NY-LQ0AF)i}`Sw(LzMv Ps+Wt3Wy-T{"O{!O|#P{$On*Qe6Ui7Wx,Pt Rf,bnCuHF?AT{SpAлʿ{ɹɴhgm|}_qtSinH`g:bg6eh=eg?edCdaDk^Fe[~{w74vBAkoȐªĦinz{ij@=?=EAMEICKEG@E;QJIC84;5dZy|mpqbmk\gfU_]KURAGE6@=0?;0?;1>91=70>4-91+dun@D6sylwgx_B@,C=3>618/*>41@61<3/E=9?71?61C96?40NA8yn_{o|xk|rg}ow~vk|wtlcxl{qcw}pgZOeZT?52iXLhXJ}qvhk]Nj]Rf[Rh[RqdX{nr~p~o|kwqe[TQ[VSga^b_\^][UTQa\XukfWG>R70cB7~ky빣컧`IEC87E@@DACC@CC=BA;?=68,+C51:2(JJ;gqGhtKPY6z~YCJ-DN7EO5bbasrjmlcihcigclkgpojlkgnmhonionioniqpj}rzyuqpisqkvvywywukwtk|wn~{n|wmzulyum~vyy|x~s{|t{{{ys}rxstqpr}p|xlt{q{xn|zp~sxv{||t{~{y{{{~x}xOKI')1q|xwwxxyy}xzdYP|y{|xyz{zzyzy}wz{~opl{~y|{{{{y{yy{zz{y}}w~|y}{~|}~yxuu~~{~}uwvutttttUQ+<7OI/{TrJc]7MI,c^CskRtkOynWtiSpgOrlWvqX{uVz[t[JwZJxXHf85d52e53e42c42a20g64c6-oI9tP=wO@zRAz\>kEy]>|\C\6(93F>PBx7,F%#F'%J%%Ja7-^2&k85s<:C>GBaVuiOEthOq[fQo_hIbaDdeE{RvqK]^=ytL{NOPa]S\zQ~P^xjGwSh\>ykJ{nE_Y3SV1S[6NW4S]4]g8fm5jr6P\*LX*LX)LQ-GI/AH#zex\Rv'MyMuQs+Vu/Uw+Q| NzO{#Py%Ok+Si7Vl2Ws.ỮgbGbl-t-~,|1yISoаïmmɸ˸`^ovebu{Rgm<dg7di9ei=ffBedC][?Ք{z|A:u% {~ŖǚˌԊdc;7C>C>ICGCF?F@A<968430<4RDqdsxhqqdki\edS[XGJH:@<1?:0?;1>91=80<5.9/*{x~{z8;+FI?{qjoXUVBTREG?=<33D;8?41?61;3.C96L?6zn`}vi{o}sxofXfWIyuk[LfYMn^QmYKyoarkZlXDdPBXKDC50hRCvbSvlam^Tk^Tk]RiZPh\Sryxuurzshd^[1''?75ZUOga]c^Y_[V\WRPC;ī~q^E;T8.|WFnߵpYS?53A:<B=AB>AA9<;//4%#-;36?:5w}ZWc7T^;LS5KS<@J4IS=bba{{nxxlvvlrqjnmekjdihcihdlkgnlilkgywru}~}}|}txv{zrsrkmkfpojzyrz}u}~~r{wm~yn|o{pyumpkdqlfqmgpmgrnirnhtqktrixuk}ym}q~ozxs~psxxss|xwurp{{m{{kxxkvviwwk{{mttg-+)qy~zzxw{~YG?^@5}xjkh||}|}|}{{z{zzĝ~q|{|{}}}~{}{yy{z||{||{yvyww{|{~y~}x}{{}z|wwwvDD+22KF(xnIB?ZX9hdFtlMofNslRwoOuZzoUshSza|WuoLkXDv]LwZHlD:g63e53`30a30k>:c51qJ=jI4sO>jJ5oF9gNyZ<pF5l>5a01n51A9B8v90L'&G%%K$#HZ6)mN8d=0k74x=9~B<NHRJG@p`oVt]p\lOZA^]CdcF[qh?hc>O}KXZabn]hd~rHypFPuiC}YxHlh=RX/IT-N\1Sa/T_-T_.S_.LX+NX-HS,DJ+EI.GL,t}_rUOv$LyMvPt*Uv-Uy)P{MzNz#Pw&Pl,Sh7]nBv}_~vxѢ[h.ew)k|*o/l)x0~Ydaȵй\}Zzg^yPnuBep;cn6co9co:co<]b9ҖyzTHH^A>FEor͡ʟ͟Ҥvxĉ`c{z<7@<E@FAB?FAIBE@51-)82:1;0MBvgsvhrqcjjY]\JNK;A>2>92>91?91>81<6.61)<N=ptq^g\ML=89/znxd[aFKGAYSRE;7A42?31=0-?51A61ncZ|ug}wl{ow~sfZNbTIym_sk^}m_PjUIhYNbQFo]MobOvk[lU@o]M]PIG<9ufWp]MiZPhZPocWtg[ylww{yzzyzpb\Wzpqg_YMEZLE_SNf_[^ZY623+" =+$lOBuƪ~eY[@2gF5sc~jd@78;69?9<9534+)4+)+'$EI<U`IO];NZ:AJ3=G3<H0@J3ba`xwnvujvvkxxnxxpxwnstjonikhekieqogxumr|{{swuz|}}uw{{~}rzxr{ztwwyx~tzj~yqtxtkvrjsohwqhidTvrhplhnlhtpkzwny}}||vys|qssss~szznyxnsrlpojkkfhjcggbdd_cc_bb__`^ߵڝ֎։ӆ҉w+lLuw~{zvsJ=mG=oQJ{\T{WO{UL[OxC:^;3))'~vreSM~z~}~{~}~~}~Ÿ}q}|zzy}}|}~~|}}}||}|}~}~{~|zyy~~~~@B&>@#JF&DEklD`];b]CmdKqfPtjP~rYx\qSu[zqYlhMtqUf^DeT9hO8fA3c50a40`31_30f94a3.b3.nJ;tR@oM<~[H]H{^CjD2g=0_1.m91{C8z=6q6-N&#G%%N$"]92M,^D-hXAe:2x?<A<JENGC<iZjRpYbKd[eCZ]@^]=XYO^bRRQ[TZ|K_PPLypMujIORT)RW3HQ1S\5Q^0Q\0O\5OZ3NZ.EO'EM.@F#bkAAG)nzXiKMw#LxKtOt*Sw+Sy&MzLx My"Pv$Rl3WaIbb_^Z\IFGYXYiR\ϪgoCbm:Yi,Xm g%l3tUyռ}VyX{_{PrGhx:bt3`u/bx1bx1`w1eq9̪59:>66Ƣmpէȝʠ٧סΑɄHG7554:8<9FCEB:6=8C;B=LH=54.0*^U~zntwhnn__^MNM=@=3=71=7/>91>91;6/6/*8OEOSPZ^MliS`aIznRYJqx`HE?]VTF>;A42?30;0.>1/I=7?50rlb}wh|ym|qwpddSEbQChWImWDpaT|gTCkWKjZMm`RnbSrhVkaOl^OQLDUNIC<8D=6vk^|psuzzw|}{}}vc\UvuqoS?Q:+[PLC<8I@?<561-0.,-)$$)E1(oUIyo_E7Z?1`IAjdD41A>8761+#$iVMo^]GalMZgD:G->J5=G4:F/aaapnimlfkidihdkietsmvvlxwo{xp{xq~zqvtwsw~tuvwyr~|s~t}s~zpstyvorndspezyoyxpxxqz}torb|bcPssbvvcnxzj{{hWV=fdLZWC:0mjVXV?xv_~zfd[>I?k|u`c[Ckzq[<4jfR}ztxuourjrqitrjyvl}zn|ynzwl{wkzwlvtktqgpqhpoiomhqoiqnioninmhlkfkkfhhdggdeebcc`bc_bb`bd`cfabd`×Zv<+)-13 $BVܫOh~ΚοԀzyn`|=0~@4|?4s3)v6+A5@4A4=2o:/:20/32:)#oIB|ljz}ȡsyŽy|{~{~}3251II*BG"RT-VU8b^D_Y@f\JwmWxnXw[x^shRhfPebHjiM`b@fj=|nLX5)eK9`;0b21_3.e;3e81f61c5,oM8nO9qT?rX>waBx]AhH3rT@xyVCwJ6v;4n4+O&!J,'M+#U=*bX5da<_c@dR=n?5{?:GBHCsC;kXpVkVUBjEP0KN5loH|GJVN[^[mC{TS}O^UJQQ~sQqkOec>WW6SW4RU:GM0RY3X`;OX2QY3LV3HO0HM.;?HN+Z_>gxPc{CJvKwJtPt)Rw+Oy%KyKwMxPr,Q\KUU^NMTTSWIHKBAD̹ΤuyhDS#Zug*tkҾҽ\xVayNtIn@c|3^{-`{+^|)^{'[z&dv2ַ˵;661661-,hhtxا̠΢̗МїllHF32:9E@B=<9<;532.40A<=64.4.8/maw|npoa`aONM=>;0=60=60>92>81:4-5/)YnlRSHXYFsrZrtN|YfrzK{f{lwJv}RJG7]WWIA=A41=3/;0/;0.F71j^TB:6ibZ~ylvrg|rqg[dP>dQ?eSBjXEviZ{bTD[TLID@*''# a[Rh_Pi^TKJGTOJA95MG@uj^{qrx}ysnc~}tuZBW=,`TK[VMYSKXPJH?<H?=;65200-,-+)+&1"T<3qd~ѪҦrdH=6-%#iPJڦȟl_Z@8B+6B.3=,3=-aabpplnoikkiijgjjgigdgfdhgbihckjdnmeuqhxtjvrjpmhmkeqohsslvtm|yq~s|zpywqtslxtl}ys|svtmtqhE=$JA,splrrqxxu\WH=3\R:D6G<mlTLB&G<ngQC8@6`W=B4QB&fZCJ<%ZN4YL0YQ4fbL:0QD N=\P4B5D9G=YO6[L2YM7idZc`NfdUmnhmnjjhamldlljmnjhgeghfijinmjonkqqlrrmrsluwpuvpttowxp{|qxyrvxr||t~wzvw|trxmipgϫ~nJQǍЕ ךޢ%+031,9֗4/JrdMZUUvöׅ{}{~fa<1=1?5v6,q6,w91B8B6A5t@6LDC<FJUUUID<^5,=1sLAŝo# =8&54GJ-OP5TU?WX<_`Ab_K]XJc^NbYHkbOe^Jc[I[X?RX4_g>hj=zk^=^Y4^?._60c82]6,eB4rT>mJ6sT>rX=fP8xeHoY=iV8kR8dN4r\tT>{M>t=2n2+T*'K4)[G2VP0WW2MO/NU2ZT8nD8~A<GCNHkJ<fPmVL=F;͗|abAHJ,eh;rp=HNVr=W`vEbqEyKJF~MuhA~sKvoK\Y=ce<\c5PZ.KS1BJ-R]6MU+Q]1JT/NW5HN*HM,EK,QV7MN0auHZx:Ju IwJu Or(Qw&Nw"JxJxMu$TeIPP_ABIGEIFEHDCF@?B\X\οȾyrziRk^DpĿkeYvIrIpHg;a,_']$["YW~^w'ѿ޻ۺԼG@@,.0/01(((ϩѣЦțǔ^_HF:866;57544786656;7:472=53,<0cXx}qpqc__NKJ<=90<70=60=71=70;4-60*;PLNPAGH9rr[zT|YluGyIoyGr}E_f>LK;\UVME@B63>2/;0/80-E6/th[kcZA72OFBSMCwuj}sh]PfXHfZMzlaOH@mf\wbYM@@AFDC!!""_[TdWKi[SPJGVPLD>:VRIsi\w}s{~~wzozxmw}x^EZB/`UK^WL[TKYRKZSKTMG?72;2/@73<2/4/.-*+,)+%""%:+$ZE<j\Ǣ|rQ<6Q1+͛ϖʜtXO?:=,:C2cdb|~uy|ry|qxyrwyryyryyryyqyyqyyqzzryyrwxrxysxwrttnqqlsrlvtosqjwtkplfjifiiekifihdfe_ee`hg_\QBVO>gfejjjnnj]WGI;#XM8QB+J;>0J=$K=#E9N>"SE)rgQlaPkaQ{tbOD3A2sgO|g}xc^Q7QB&I7QE-^P8L<!F7N>#RC(D7K@#F;E=TRBrtnA<(?9]\Jtvj|{xx~wx}v}z}}~x|t}qs}t}v~t~syp{~r~s~uv}pҾԾí}ONJo_8c
+-&3/ 1- 0- 7675<;;;97>: ?;?; A> DD'QQ3KM.ON3SQ5=;<794]XCrs_yxgecP\XCd`Kc`JXS>RK6vtzz||p}wukrx~|uzr|v~jlv|umZD:'C:(ME1B6!9,=18.8,UH3QD.G<"H=<0=-A1UK3|}~}}}}|{xxxxxu}u}t{tzrszmннλϻѾнӾҿտǽ_B
+3-5/3,1.969563E>!40=8=6E<B:7/1,5.OI+TO2ZQ6[V=_YA[T?[T<[U;QK/G@!MF&LG#RM(NG%QI$]X2OI#KDNI#IDJESO(XU.RK'PI&SK)LCQJ(QI'MEQK NFJB D=D7K>"ND%A78->4HC'otswvwwwwxyxwxw}t|u{szpxosxlϾ̺̻̺κкмѽҾȳY=kKrQyV}Y{Y
+mRdN!!?/+>+).08,-6j7՝'|_2okeNJF^VRπwH?B8~?3nW~V?U@_KB4A6C;;+'MWX\dctvpz}y\[OgcW$D4-M1*U.(pWPΤz{v}}{}& 0/<?(;<'IJ7OR=USDMI=WPFUMDRM>UQ=SO>RM?HD1ykQdN,dT2`U.d]7WR+dQ0{tV^bA`aJTPKjfeig```Wgd]fbX`\SWQDifUeaRzobvK;M@SJm4,k3-[.+[A?WA;MA/EC,87&+(;4%ZI9iI7kD4N=,WO7_N5xI6̟QHm[eU{StlH{QzPnkImiId[@|kJzkJlfIgfKhfIfaEnjFVW0c`Cb`F\YEgaMc^CcaF\]?PP9EF0QS9SR;XY<``B\[BPW3CG*13HP'OR1@a#Fn#GqMu&Vw9\w>Qr-HqIo"pd.(4($%7:.45,)&))''B?@ؽ{ttsv{Ik@H}aRqJf>wY|ZpFnGpLpKkFiFjHkKe{Ccz?_x6[u0Xt/lw?ཱܾԸTTU*))+-.&%&)('&&%'(&1($xwJI3344.-22100/005300..73;854*(-(9/2'tOEELB>>5<80<70<8.:6.94-;4,=4-UlWhmN]_G]^NTYD_dMY`FSW@LHEVNMRLH60/6/-3-+,%$ZOFtj^eT=aTCXSNSMGB72bYNJA6G=3=:2QL?H<.A8.G6-jYL^NBbTDYLAaPCmTFUD:`PCWF9QD9NC9NE>PJDWUP<:6<63:3081-fa[vi_hap\Sxssnopn[[[`a]ztoUjP6lbWheYgbVe`VXSJJB<A86IB<HD=QLFRNFNJCLHAGA;C=8>95=43-"!+'0():65IFEDDDDEED?:k]Vn_XXC:Q4'[YYEB<JG>MI@TNDYSH]VJ_WIe\Oe[OcXKdYL[RF\UI[SH\TF]VHXSGVRFTPFNIBRLHSNFUSHYUJ\XMZTJYVM[WNXRGHD4A?2RPJb]Sd`R^WFaYFf]Hh]IlbNjaKh_JndNkcKkcIqiNpgNf]BvmOrjHzoNvkLaX7ldC{sRkbAgZ8k^<]R1]T2j`=YP.kb@k_>xlIqgB^V0\T0ZN5>0RI/j`>ofCvV}qRtXy]{tY|v_{iuq`heWjh\opbfg[imbjodjmblnclnbknbik`hkagi\gj^de\̺˹ɶʸ˷̹ͻϼнҾӿƹZBcF gJlN rR{[^z]L;, *((~>ȗ#~f40,-4'vhX~wXTQRNKwŲUC=smm~uPIC9F<D;D=F=D={D;E:H>J77cmmekinlcPRSOQQSONh=6o7+l:/n<1m;4qRLө{|szxt}x,$/)0-GF5LO;OQ?QOAPMAWQHUPHQMCRPEMI<PL<WR;jZ=xZ;dS0eX6aU/y\@sV8\X.njG{}qNJ;XVG}zsrmerngtoia[PgcU}vhm^_PJ?WOv@7}TM`FB[OMRFDYIAE:(FC.FE/KL3KI,OT0[Z;TL2SH2gTBfJ6~SFYNk\GncIojNngPneOg]Ie]IfYGiRnlnm`r_n`NqePkeL}b^^=^\Ja`IabCX\>giJ\cAWb:W_=NO6NR1]`?eeHiiKefIVY9\`@TV<:[Dk!GqPu+[y?]xCRq.Ip"Jm)V_P&*37(Xp?7A)#!735<<><;=)')NJNja`h_\̾renc7gr-M{YMoi|RsN|]dxZmSkMeBjEpIpLnJi}Eaz=_w4]v2Zo,㼿ӻUUQ%$$310535))*('(&%$"!" m<:<<3233--2301.-00,+0/0-0.30/-1/@:L?D9PBUE<;?3::1<:/>;0<8.95,:5.<6.CXFWY?Y\H_aPT[CLR>IL=JDBWPO=4/SIE@62<2/7.-B5/lcW[PEfVBXOFQMGOHBKD<A=0KC8PD:PF>ZK@i]JaSHWF<`OCTC:UH<KB7KB:LB;OJCQMFTOHUPIVPJYQKZSMYVR<97F?<G?;B85slfzz}pYZW^^]Y\]^_`Y[\ff`sWmQ7neZkj`jg]hd[fbYRKCVQISPEYTLWTJTPGRLFNIBGD;D?8A:5A85/%#+)801,'''!:55JHGEEEDEEG@>WHB\\]MOOOQQTTTWWU_^Xge\ol`ok^tpcsoaqo`rnaqmaqmaok_plaif]hf^fd^]\W__Za`Y__Zcb]ec^`_Z]^\[][XXYNOOMPOVYZUYZUYZRUUPQRTUUQQRPTRQURRUSSUUTWVOQORSRWZYTYVY]ZY]YSUPVYRTWM[\T]_V[YPVRIRNAd_Sd\QaYOb]QfaTjdTvo`{sc|ud~wemrnikmol~j}{hyvcrqbnoalncgkbgkbfkbfkakmcjmbpqgnndopemodnodlnbllahh^̻ʹ˷˷ȶʷ̻̺λѻӾҿE7M8^D dHlP
+kKcq m J8&5r|oZQH7* B3%}n\d_\ROLwnƺԽѾ̻DZ©̞o\A2fVR_YX5C'#[6.U.(N("L+#;$&B*&5" =BDIKInoeb`Ue`P|xftnZwtbzvcrlY~inh\\[Yde`fe`F%y7/{6-|8.};0s;/lH=rH@rJBwKAhKժ}~se^zI>~;1}8.y8.x:0wH?le~|~~[ZV.+.,qrnaaYpnespm{yv{yxzwq`YNKB/_T?`Q2RO'Z[2SU0PV,MO&TU,~\@P>VFj`syQ<-S5+R4-S:0S@4Q@2zyD6h\dZJ?_Uq:1|d\^QMRHGMEATM@PL3EF.<9(><*IA+IA)UH.\M2WI5SI:PC0fN8uN>sNCperhlWKgVIlZKjXKjXKdQDqXFngPyfQxgpUnhKbeGbf@ooLglG``InnSyvWlqQtsVilJ]d=[_>US:SY6[\;``DZ[=a]B\Y@a_FFH/6TAgGqSv0_|C_zFRp0Io%Pm5GI@# TcAYkF)%'879+*-(%'/*-ͼjVPZ[t4F{ZaʮoiTuntnVeKgFjAf~>_z8`z;_z9]z4[x0[w/gs8ͰʟVVRED;;94)$"3-,1+*(#!$!!&#"I('GG7866//55553311./*).-2/.-s,)i0)p+%<7@7917.@9XA5;A2>C3>@0>:/;8.:6.=70yhlrNggP^_ONVAPTCFE=WOOI@<G94MC?<1-A41>0.TB6~rblaU]M=\YRLKGQNJDB:JB8OE:ND:ND<JB;KB:LE=KG?LGAQLFUPIVRJQMGQMFID=OJD\VP^YR]YR]XS]WR[YS<:5D>;GB?A;6roh~xywqfzvlurm``_bcd\`b\^^]abffarZnR8mf\lkclk_hg\fcY]YOa_T^[RQMFWRJUSHSOFOKCIE>FB:B<6A95/%#/!!*8010**+(!!'#!;65IFGGHI/*)6(![[\OONNOMSSRVUP\YS`\UdaWlg]pk_leYkfZoj_lf[hdYok_fbXebXdaX`^V][V_]W]ZV\\V`_Z_^X]\W]\Y\[YYZZQQQRSSWXXUXXUZXSTTQRQTUUQQQSUTUVVRSPTTSUUVPPQSTTTUURUTRTSUXUPUQVYSVYSZZV]^X^_X_]Ub`VhdYkg[li[lh[kg[rm]vqa{ueyuczg~kknjklo{k}lywg{xjtshprhkmfmngijcklfkjcnldnmeonfhg_lkbmi`ff[lmahh\gg]ȸǷǶȷȶʶɹʶʸιϼҽҿ |ZH U=X? qLqd
+N-*f7/c70c81`5*s_r9*|=5z<4y>8aGجĶwuha`Z[?4g7*n5)j2%e2*d6.f6,i7.m7/l5,c8-`LDttr~|~WXO-*?A/ruqed^rokrpkmlgvrp{vsg_UUF3H?#LD*RM5_S3YL,PO,EQ*EU*W\5|X@NFOHyrZPOE]Zc<9b96\84b@<ZA8S82xw@4bZjd?6_Yha{_[]PKRHDKD=85'88#:7#5/#3)!I6)X;*jH7cD2\H7k^RhUExaQiWr[K{fWp\M~kZl\IfVFiXIhXFgXIdVDm^FfZBf\Jn]r_IWW:^Z>ebH[Z?e`GiaRpnWccGttYfhJgkJmnM`bB`eEchHUV;ZWA[XBZT>PP1TT2SV73P=_ Gl#Tw2_|E^yCPm/Jj*Rk::;/=E/Xn@)+!5/4446425#""&"$#!"%#%յhV+ ؝
+SyCTsХwsqv}wr\eKbCd?^{4Yz/Y{0Y}0Y|/Y{0Yx.QЮͲkj`ae@bfH\WBoJ@\.)D'$5&$#k969:88//12:;553355,-|1/x0-e+(S'$f.+>:A;>7E<E=A:~.'>5\J8BI5AD5?=2=:0;7.;7.dyS`cDiiSkl[CK7JPA>@6FC<A:0A7.90+:0-9/+8-(WF8{l{qgZOTLE]WPURJFB<OJCLHAOKDPLESPIWQLWRMXSMYTN[WPUPIZTMQOJTPJPLERMH\UO]WQ^XP]VO]WP[YR<:5@97B;9@74uoixlgavqf~yqID?2.'GGAZ\][__^`a^`aa_\qZqW;of\oldkh]kh]ie[eaX`_T`\RMF>YSKWUJTRGPLDLG@IE>C?8B:70&&- *4++.'&++##&! )*2,*' (%&ZZ[FGGQQPRRPUSP^[T`^Wfe\ebVpm`b^Tkd]d_S\YNb^T]ZOb_Ud`X_\T^\UTSNQQMVUSPQORPM\ZV]\X\\XQROOOOOOONONRUURVURUVPRQRSSUUVRSSTUTVWWSURVVTTUTQRRRSSVWWVWUWYWWXTXXSYYVWUR^]W_^X_\U]YRe`WgbWmfZlg[mg[lfXoi[un_xqc{ueyg{i{hzgi}jzf~lzkzvfzvhtqespfljajiagh`ee_de^ggagg]lkammcppenobllblmbllaklaij^ƷűıŰDzƲƴȶɷʷ̸κѽ50-ؑvG1&G*U(y vuka[Pjgaynz\qa\V^_aSSR}x}wq][Vb_Z}rоηڿеhվؿ׿ؿٿؽٿ]P=bU?^TBribSegYdcZzlycqvp\bZN~vhe`Q`ZNnm]}hxqv\ze`WBgtoaB>6-*(PQSKJJ.-,upapTM?;NA<F82\LDtWmgY3' c<1mJ<dN:tTAN3*9)%9.);+%<%=+$G4,:TNIz}~||z|:;(1,CA1hjb_`T`aSeaTdaTe^SYK>QA.r_IaT7\T5g^D[I/XD*DI%DR*CM(RP-|R;KCXP|vQF`WcDCoOLvYUkdjVLsYQuoy?6nfidcS_VkciODdQHID9LL9HJ5A;-I;2A4*K:0`@9jD9hM9cO:[H7fVCj_Eaa=dd?b`A]\>]\BZV<^ZB]\B[\?`aC\ZB\YD[[BbaH_XF^XAecFbbEieIbcBZa:]\@_VJZTC\X>]]>RV5T]4V]5X_6]e>V[:Z^?^bFUY7^dAVZ7ad@chD1I ;W!Fh&Vu8_|F[u?Mg-Kj-Tk:4:&WiDVq9WcC-*&($&)%'&%'%#$! Ͽ{lg|b՛
+ OE6WM:_XFSL=LF7EB7
+
+ 
+ 
+#GD6FB2GB2IE2GE2HE2HE31/",).-!.-!0.#0.".) -(3/"71&73%;8(>;+?<-CA1GD2IF6EB4@>0>=/72!<: 62+&72/*^V?F@#HB(cXGzn\naOyjUfWDiYGWF1cT<j^Em`GVJ3ncKn`Il`JVO<pcPeVBcR>eT=WI1MC/KB5&9-^P:bUE6+I<,^Q@ugRh[GgW@zkToaMbW7ha5oe>lb=mc@}rPueGuhRthRos~jzkTz]z]|bnUlk<0#j]N}a{xXrhX?|fsj\M[aP_lS]b`UHp^E|lVvdPi|dr\|olfy}lQj[FI8*I9'RC5eXJ}mY{j-/,-378?"5:AE*@G(GL-DE&QK6VJ1XL6H?+MJ1NL4XM8M:'F?-40$91&1*60&A:-G<3GA8j\Tf8-b]M-(P:2?8361.?:1L;3Q/+S2-P3.X<9z\Ze;3b83`4-Q-$<$;$J@,UQ2B%QK1TQ.`@8d>6k?8mD=lF?p=5bNZC^Gևvz|tyvx}tt~yyFEEB?;IHHLKK_]^vu}ts}ut{qqtsswrr{ppzrpvsska`ihjnnvmmsllnlltlkvontmltmlslkrmlryoltkmkjrjiojirDZ0BW*9S%;T&Jd.Ws9Xo>ZcEZWI\VL[WL[XM[XO[XOZXNZYMZ[LWXKUUGVWA/5$.7,9?5'-&'+(&+(-:3>K:ki9)٣
+  TRO|ukyo`>7)A=/>:-@<1"
+
+ ?:,KH5HE3IE3GD2GC3IE6<:.52(42(,' "!($>:,FA1?<+?=-A=,?>)B@*B?+:6)]ZK]\KefYRJ3KC)LD,g~odSsiStgLjZFiZLWK;VJ6PB/M@0VF:gXHzlXyiSs`HiZDO@.o^EudFh]:ZN4l\ElPtcGj]DqfMdWDbVGm`NiYCwfQbT@i[H_P;k\IXM@]M<fV=~pLznEvl<rf3g\5wkVoaNTE4K;-\H5bO:wkX=4%m_LzugtdPD7,+# |ervX_O=tdvcJK<.UG9Y\]_dftsaJxfNnZBfU?dT=~kUnUkzei|qreuk^O;n^J'(!*$=7*1*@8)1+,"0%M@5O9)W@+T?-I:*SH9eOEF) WI;A:/B<1D?2FA1QB2Z?5vgbsqh6,~\VW94Q6-HA894-A:0P=4R/(R0*Q1*T95~]^f7/a7.b6,P-$:$XG?^YCIG*E, [V8ba>[=2_60i?5lF?pJBo?4fQdKfOՉs~~rt}tt}ss}wu}LIG<7,JGA@=8ZWWut|rq{srxlhkojmmltnnxonvnmraabfeellpkkrjjkkkommullskkrljpmjpljpkggljojioihnhgoH_3E\,7P$5N"F^-Tq7Xs9Vf>YZF[UKYTKZWL[XN[XOZXOZXOXVOVUMSRKkfHz:i`*HP1,7-.9.-7+7B-ge2#ݥ
+  TMH:3'<7)=8)A;,A</ '%*& *&-)4."/, A>/DB3DB3EB4EC6$!"#-+!baJHG2PP;GH5``JnlJpqOnlOPQ=mnSihEjkKxm^uiWnbPdW@UJ9SF;SF6aUDkaOUF7[L>k]MsfXeZO^SFIB66-'J>6PA6SF;B7,dWAeU:f{\vfJrYs[~eqdMm^Hk[EoXpvhtdNr[dU=m_H~pZiY@~^feT:hW;}mTtdP}pVr{mWq]G}lSqiGmo|g~r\VI>2)">73aUBjY@QA3rb}audO3%OA2u^~ce|``Q;xgPu^ktZw]p}yix\lthugh~dvf%-&;2)4*9+E8-3%3%;- D;+M8&V@+ZC,YG1ZJ:cK@B%PA6IB7;9*C@.LD,lG7p?6e]|YSqOGql]D@T7._LCF1)H7-M:.S1*S0)S1+S72dbd5-c5.h:0Q.&?.&cYQ`]FA?'=+ ST3PX.P>0W7/aB5bD8eI9^=-gRw_ցhΊvrs{rs}rs{ts{NLK93)4,%60)TQNqqvqqxqqvjhjkfhllqmnulmtjjpaad^]\jjlhhkjjkijmjjrjjphjohinhhkhhmifhhgjggmjgkedgMb5H^/7L#3H#AW*Ok3Yv8Sk7X`CYUIXQKYUK[WMZXOZXOZXOYWOVSMTRNmb<ְ"ϩz$fe8]_?lk@w2!Ӟۦ  EWgwwc}I[|B^AdEdFaAgGkKnOnNlOcGbGeJcF_C_BaCcFcuJ`v[~nXXb:6;9/.43}-+5611/.y/,0-,*|;:s331034{.-c#$qJBR^/Gb#IX%OV:QeSDc@Ka(K\!IO'R6+n53s32u10>7l649pslomehf_omepmapmcPNDklTgiDpqMloMY[IEE><?9QOE^Q=|irqd~}pop_dfX9?4=@7@A6h_ZG;7siale]sndf^V`VOqicrneFH@=A<=;3kf]RQNQOOTTOQQK8<48<4UUNqaZ[FBqf^~tzywrda]gfe\XUVMIgc]kjd_][h^]]SQ`bcbhcn]eFTH<PKHea[MFD953?=<D>:NKDEB=B:6VSMRRHWVOED?;74JHG?>;>:8QMIRNIC><FA?JDALGCHB?D>:A>8ihaDB=FE>ZZ[@@=EDBJH?MJBPLEGC;IE=D@9KG?PMFTPFTODROFOMDQOGSQIKGCLKFJHCJHD<:464/=;4IHCSQLTSMDC=:967987:8<?=>?=BCBGHECFCEFEDFC@AAEFDOQMJLHKNKJMJLLLEGEACAHJHMQMMPMLNLDGCGKEIMINRMQTMMPILPHVUL[ZP\[N]\OXXI\ZOZWLb^Qe`Ra^Ook\e`PkfVdaRe`SjeXtq`d_RebUeaUdaVMMGKOKPPLOOJLMGQSOaaY]]TcbZ\[S__W]\UZZSWWOVUNGGEKMK41(9534/,xQQOJNR123*!6/+$ :5-/+!IC5gaIslNspLroK}sO}uQurN[R6ytSywTbcSYVU=<4 KG<HE950)1-'0-&-)#*&!$$"
+
+ 50+B=8)$B>663*
+
+ #1-!=9+A>/;7*85*# .*%30'
+
+
+  MJ=KI;LJ<OL?RNC64)%!&"&"gfJmnFjiFkkIjiGjiDgfCdfDgiHegCbc@]]<i\PSG9dYK{miaUVOGcXP`XKME=G@6YM?QD:E;4?81:2*50)@94B:4I>6viS`zmRkudLrbIm]FvfOjvxfL~_g~^hX>rVtXef|cw]wgP}p\seRm^JsfQsZvYlcDrswxj]N=oykVaTHA93!7/*RC5$bTGTB/>/$5*$qbQr_GxbHn}etdLs\u]_N9eR;|dtcKgw^mw{`{av]elrYyhQwa%( 7."1':/!>3$90 7+:1!G=.N=+_J5VB-]I4WE4eF8Z4'A5&SL>:=(<:!ZD.tC6zC7tD7uUL}ohdRNN/)Q/(^A9R2*S9.N8,S3+O1*Q3-O4/dad8-g;.t@3P*">,$bXS_]INR31-PU5VZ9E7+L7-XF9\H8\I5V@,bO~h‡qu|{rryrs{qqyqqwSRR95,71*5-%GA=uu{qqwopwnptonqmknjjpklrjimcae^]^ghihehhjlijmghkdfhhingfkhgjcbgkiheddfcfb]Ud_RNc5H\/5K#0F":P%Ic.Vr6Sn5Vd>WWFWRKXUKZWNZXOZXOYWOXVNUSLSPMWP7ү6ԢΝԠפ ݪ
+ *'"+'!# )' B@4@>5HE8LI> 
+  B@9PMBQOCRPDSQFNKC$'#%!LH7jgAge@fb@if@ge@geAhfBba@ddBa_=eeBkaUbVJtj\?7+,'#740LD;PF=.("LD<VK>RF;\TKOGB;3+>4+A:3VKAJ>4I=-h^HpXd~mR\L6zbju~wWsT}_dhkNf|p{lVoaJvdNs[mu`xdtaugU^S>wiN}b}bfl|agS>RB3qbPybmaQ\N@PB7
+NC<5)$I=4:+2&"0$ xkZugSnpZropyiRn_MsbO}gt[iv`p^LZJ8iXFq`L\L=hYKZJ8yhRvfQs]oY%  .%-#0(/(2-><)82#B7*RD5UD/]J6\H4XH4eL<c<-K6%_WFHJ2PF,fE2vB5pC9v[Qvf_]G?O0(Q0(Q1)T6-Q7,L4*L:-O8.N6,U<1L1+jfe8+sE6J:N(?1*YRK`XKIH1:9#NU0TY7MD0I9-Q?2eL=lN;^C1lYHt[GxbRvieplppqxpqvnmrppt\Y[:6074-:5-?:4qqvlmtlltjlrjjpjimjjniiljjofeiZYZfghhhhggggfaffZhj_jjhgfcefd``ZfeR^]K^[IWU<YW;K_5BV-:O'6J&3H#BZ+Nk0Ro2Si9U^DWUIXSLYWNZXOZXOXVOUSLURKQPKNI:ʬPɘ͙ӠՠҞѝϝ ֡ܪ
+
+ rlb,)*%dYK[VEC>394'HE=ID8`YHwnZ{h{nerl_g_;}uNkd>lgArkEZN-pkFYVEYVWFB;mfEwqDkhHRO8faP][P
+ !31+%#$-*+%"!!!!  %"omg[WQ <:3>;2**% 
+
+ IJ@II=LI?ML@:61    !" XXKVSIVSKXVK\ZO,' *&!)$!)%kgFogCoiHlgEidBlhFmiFfcAjfFkgFliHYSLJA9=2+'!4/,{uhuj\u{ptfdZN:2-TMFti]maRdXJl`Pk`PJF.XS<~hhtowukiifhg|bw[l~oVt_xet^pYnk^JqYhZDhZGzlW}oYvgPyiSkWAfQ<YF4l^Pl_Q>0$>2&JA:3,&K?5(0(#<2*D>9XRLE;7>86IA=xhWTE4hVEaQCeVEqaIdT>ZK;YJ9m]JJ=,o]Kn]M:,#,* </*0#9.'E:6NA9SC7l]PxjXxjV)%#,%4/&4.$/)1+:6'94#E:.@5&L?/RA0H:(D:&aM=`A-P>&\I4NC*WB*i@1q@7v^Voc\gTIQ3)R3*N3*N5(N2)T<2J5*L=.P=/Q:0M5,J1)qfsA0zH5R?P+0#`WOcZNPK9BD*OZ5TX9VK=C;+PE4VE0_I1iJ8zfVuh^rihppropropwnntnlqpqsb__C>995.C@9A?9optlltklrklrjjnmknjhhjifqnob`^[XUkibfbZjd_bcKYZ=hjE``GhaSebNddIljObbCbd@ff?cc<I[3DX.FY0>Q+5J&;P(Gb+Nm.Ol3Sb=XYHYSMYWOZXOZWOWUMUSLURJPPLQJ4Ϊ?əР֥աԠ֣ ܪܪު 
+ 641NNDQQFPQGSSL
+
+
+
+
+
+ ZXP[YMYXMZYL^\MD@395&KE2XS8gc>ke9ie<ie>ge>liAlg@id=gc<ca9db:+%'HA;yo`~shsumdZHRI@@602,)GA>F:+n}r\cTA[N;B6$VL3|oUgozsyjNuYrimjmlSv\gW@iXBl^JviXviUtasdRwkXTH9O@2l\J]O?WL=(!WJ>eUEaSBWG8]ODTH<2)#,j]P-&%0(!K?44&1+*TNI]YVIIHUSUVWXTOM.2#/"K<3ZN@iZFbQBWI=^PBJ;.H;2C7/D958+(5*#>1+0&!*!'4-'0'#A74/# +D9.58!..)&RRKOQGXWNYXPSSFUSH]WQNG?ID9C<0@<(74]P>XB*N@%SA)UC*]A,iA2rNGvgdPD:_ZGM:,P<-M9,M9*O5+S;0N>.NB.M<+UC5SD2F5%wjyE/Q?\GjN<7-$]SM_YKZYAIM/IS0W^:TJ9J@+eO<uU@lM:jI6q]O{oluqvstvqrursvrrwpnrmmppnqrherh;7.VTRlkpllqllqihjjb_k_Zjc[hcXph[pgUhbPjdOa^Bg`LgdHV[6gjB^]<vj[]XBkeNh`H\U:SR6]^;cb;G[4I\4N`7GY2;N*8K)@Y*Kf*Kl,Nh5U^CUUKYWOZXOYWNWUMUSLRPKOMLeZ2۴%ӣΞ̙ϛӟբ٥
+
+ ! 1.*WSM @?9ED<HH@--(
+ UULUTKXWN[YP$#!VUChdNlhOjfImkKkjGrnKnkElh@igDcb=gg=dc=fd@ba>cc>cc=_^9_a;Z^9'C91XM@vl\PC5p`teSf\QkcXbYN[SJsj\xbktkxrxmrhd|}x|]}lSwcIpXjXA|fQF5hZKl`Mj^Nj]LqcQj]OYM@XM=WH;eXK:0'/%LB;=0(-"%5'#9-%0& ,"/%!&#+"!"/'&HDASOKNKIFEFIJKRRSRTVDC@zn>0'91/>30PD;\K><,0$:-'7-&&,"#*" &"'&'$,$ 2--0(&.&!6+*7<#11+(77)FG7AC3FE=GE<JJAKHDKGALHBNJ@CD-<<&SS>K@)YB*K>$G>$S>'[>,p]T[KAPB4hjVL;,N8,M<,N;.S@3H6)N?0SJ5MC0QF5ND0PC7odgTo[q\jYF92(ZSIf`KWU>MN7SX7SX9SJ=O@/[Mk[fK<oSCx\Qj\Yb[[tsupnorpnqllmgcnjgkb]tdaymhWTMVRNmjfmldjgZlhX]RCp`Qg\KhdLedFdbD_]@dY@ffB__BdcIVX9opPb^Ak_QWT>ibLh^Hj_H]YBffE\[6FZ5M`6Rc;Ma5>S-7K)>S*Fa*Jj*Kh.Qb=UWGXVMZXOYWOUTMURKQQMLLFw2߳ӧТ˙ӢΝϛҟס 6ez|Y}`\|`^eroTpIjHjJoKuQwRuTsQiI`A]B^E^vFbpL`fN^qnG_ee40h&#;<;<00**,--+(&'%-+-)-))()&++,*y'$g(&bbh/akGorDhdD_DH`4KiUCXSFZDH`$IXN<%W12UD>\,'[&!mcjkUvz{pwyt\\WHJ9OR2imI_dCY]>W^?GM;AC<^YLtvpklhtwsUUPWYT9=6;A8CC:}aTPcTOxsnz{xqga]e_[mgbIHA;@9><4olhWZX^__eggUVU8=5:<5CA;ogb^WSbVS`KH|w`\X`XUc\V{rlf{v}s|}iVRcPN\ZWZ^\wiX`F_O@fa[VRLJC?F<:JDAC:8KD?LFASJEMF@VQINICJFAEC>:756/,1)&0#"4*&#!$ SMJ<96SPLde`BB<JHB\[\B@<GFAHFBED>,+&'(!32/:92@?9<;3PNEIF?>=666,,+%86/DB:<;4ED=JIB>=876033.776?>:=<6994774--'..(--)--)--*+,%.1-35133/574;>:<>;<>;<?;8:57:67:58:6;>9:?99<8<B=DGCGGBBE?AC>FGAJKCLNEHLC;>7>@;OPGVSGRPBOOD\[Npm]c\Nc^OhdUYWGDD::<4VYNDF?<?8DC;CB=@C=YXOUUKPSHTSHEE=EIDIKFMMHUXRNRLDHD=C>CGAGIDDH@MQJ]_WYX<RO6WU:[W:\X:[W=^Y?^X<i_7Cj`-gbBkeAkdAlfBqhBxmF~qIyOvLwO~pHypMTN@225$ !c\UngKxpKyqI{rI|tJwnGvmFwoFrjM(% D@<B@9:66*&"233@??52-JHA!*&"(%>;4{UOFѻ{l=;3JICKJCLKD  PMCZWJ`[IebMf`Ld_JicKxoTtqRjgFidCe_=]Y8eaAZV3^\<eaBe`Cc_BeaCidEb^?keEnjJjgIdcCb`@ifEmiJth\^PBj[Oj[LqeTzm[pcQtiWZOHE>4tyaumnhqkjoWubKtbGw]grW{iKuVz]nuXp`JYJ:3&\QERF9ZM>m_MYK<UF7C6+@4.E:3PD<?2'QF=K@64(!0$5,';.)?6/2+%5,&92+$"0'"* 1-+`^Zhia}|v}oon[[Z[[YEED][YQG?6(#7/+91.D80A3*<1+;101%>1-$*!-$!*"%(( 7.*-#4(#+!)" QKIXNB23!--($31!BD/IL2FC4B@3@>2A>3=:0?<1A>/;<)=<,??.VN;S?'fT5O@&KD)GE)KM3LG1SQ>geUN>0N9-N<.L6,UC5G>+OB5OG4UO9LA2RF9^ULqgtd{is\j^Lb\O]VJjfN]\BTU8WV;TQ;_WIaJBsRHj]wcTi]Ko[{m_tm|vr|vmzvhpeUgZDl_Nwl\pbQph\a]Q\TMgbMa`FukWjaKqfTrdh_M_^@`fBYY?VY;daGccCY]=ehIbdFehJghH`[CZXDb_E]\?e`E]]<kmE`_;EY3M`7Sd=Pc;?S.<M,=Q,B\*Hd)Ji,Nb7TYEWTLXTMXVMVTMRQKOOMNJ=¨KܮӨУѢէ֥գ٧
+
+Ҫ ͧԪҡОԡ ̠}YCnOuR~O{YW\SylnvStMyT|UvSrOlKeF`D`E\qC\gEabLbdO_maAVZ]..k)&j1.F@31993254+'*'+(*'*(+)*((&{%n$i#kWY-`g;dh9]^>\SBbXCecB[LKdTFW1GQ$?N5=SRJYMP8!W%$yOmnJjeTojnZZV7;2=B/^b?fkBX[9LO5EJ9BC;\WKmohkmgpsoVSOPSM8;4:<5EF;zjd\hd\jdZpf\ldZiaYh`Ye`ZBC?:?9;;3mleMPNOPQOQRCCD8<57:6<<7g_[XOLaVRsjb{tlibZia[zvkfcXjc[xrgysiymymwodibWytkyvn\[YTSQvfWbH`N>haZTOIf^WfaWd^U`YOXSIWPGIA;RNHdd]_`\\]YWWULMIA;7>844*(4(%%$&!fjm@BELJKa`]33./0+VVV&&,,%..(65/00(/.&45*=;3;90-,!22*DE>BD:ED:ED;NMDURG\ZPIGB99165/<:6:73//*++',,(,,),,(220788<<:=?<:>:<>=<<:>>9;<:55443043-24/03/47037146236257147003,24-.0)02+/2*35.@B=>C<>C;?D<;?8=@:EF>LMDRRE`]OcaS^]N[XLZVHc_OgdV^ZK_\NdaR`]N_\N_[LVSFTQGNNDLMEFE=CE<:@;6<79>9CE?LNHOSMTVNY[QUWPPRMJKFTVPRVRkdGlbHh`EldGpiItiIvkKqgHohHjdHg^AkbAbY6hbBh`?d]<gaBi`@d^=aX<b\@SN;/.0'"!,((333'#rgFphDqjHrgHmdDsiGofBidH(& ! EB>&!952422=<:XT?wnArh@phAleAjcDcaC``CUUBLMGJHG841i_RŮʾ}eC@,A=*D?*?9'40&NH5VL-WR1XQ1]U6cW:cX9[U7UR6XR8`Y:c\?kaE_X>d[AoeHl`EiaFiaDf^Ac]@oeKc^Dd`B`Z<d^Ba\B_\?d`DhcFmiLqfUseRylYg\NXL@gZM_QDykZK?5lbTfs^irZp`IoaPwgWugUuePfTB3%eUDdO8WF1|kW{iQw^s[vZfR=:+"I=5dSEdUAWH9bWIWK?K?7NB9L@4SD8J=3@4,4,'=2,0("((" .%"+!'@72'?91~nȮϷƲɱҷúг̚{TJC]SFRKD846:68MIJ7309;,?@.88%=<,76&GJ2BF,FD5FD5DB5C@2ON;CB/OM=TQ@a^LdaK\ZAkgH`P5UI3TO;IF0LM0X[G_]UK=/UE5RD5ND/[T=RJ5JB-\S>XQ;a^Hxm_t^q^r`v^v\|xSvsQcYJehJmpKljJedFegFpqPphUskSldKleLniOikMnkTlfQdfEgmHqrMebE]XBeeKc`IkhOpkVjdT]_K`aHjhQgaMjfM`fAfhLgfNhcIonLV^6bhEU\6\a:]^CX]?_fAQ]4bmB^e@TZ;gkFZa5bl@^d=joDad5@T-HZ5K^7I\6H[6H\7EW3CU+B^'Ed(Ja0MY<OPFSOKSOIQOIROIKIFn{vYܲΣ̤˞Т֥
+
+˝ SM|PyNyNNNU[]defvKyRuPsQqOjKbEa~E^vD\kC]bFccPciRcxgDZ\^54q31Z)(z511.995453+'*&+(00~*'{)$*&(%{*'r'$f$bLO._g<imBimBcc@a`=ZSD\JH`II]5GV+4A.CWQFZEQH(J'twTnmSfbRaaffW[ZSAG8BG8RV=loGNP6PP8MO:CC<VSHhkhdgblmjIEAJOH582;=4FF;zupdrl_zrdvpbvocsk_umamg_DF@8?7:92ic^TVUTUTTTTKLK493693BA;f[Wh\Xxqglf^nd]mbWme[mg]|wj|vkzthvodql`nh_ok`xtjgaXqldb^Y[XSykZ~bGaN<g`Y82,60/@96daX]WN`\Sb]UdaYdc[bd\_`Z[\XVVSMMKA;7=843*(2($%"% !"NQT@>AGFG\\T>=7863VVV!!$$)*"00)660==7LIATSIGF=YVLRODA=4CB:GF<GF<ML?A=322),,&22.21/,*&,*&(% *(#++(..+663553553551551/.)03/13.33.22/210-,(1/*69679579557211.12.45/7825708:38;58;438/<A99>6:>6;@:7>6?A:692AD;>B9VUJNN@[[LidU`]L]XJSSEVUHYXKZXKXXIVVH__QVTIWTKEE=AB;JKD?A:8:77:7=A=;@;6;4/4-36/;@97:6;@;ELDAE>>@;RUOj_Fg\De_@e]@f^?^V:^W:a[=WQ3TQ4RO2UQ4TL2DB%PM0PL0LH,WQ5YQ5^S7QJ0>:0%"%1,*IFE!PG/OJ0OI.RJ1WO5YT6WS8[X?2/#",($=96)'%:98:86WR<_X6OJ+VR2SR3RP3QM.OM/SRIYURA=:($$dZMδg((66AA$QP6QP1]Y:b[;aZ:kdDmdAj`<f[9\U3]W9ZY5WR/VO/cX:aT<XK3g^CZS6f\@g\Ag^BhcCg_@jdDrkHkeDfbEd_BYW6geGd^AogKj]QdYLi^ReZNeZNYMAyl[k\JC81yn`rZofr[dRC\L?N@1E7+4'0#
+G:.@0%I;39) P?3]M<]O:TE3A3'OA:TI>G<1I<2L@6RF?I?8B71A51>41D;5A94;.-9/-)(0$!6.*OFAQLA>7,4+#2)!;4-̴éбҶ¥ͲǨִ߿׶ʭ_TKvl^~H>5UI@XOH{ws[TQ/,%,(*&EG8MP8Y_AYaAVX>KJ9QQAFB3VV;FH/JF7JG5JH2CF+BD&`c?UU5`[CIH1JL1PR2\_HbbXM>0TF0]R;XK9UL5f^FKA-aYCqhRvdt]t^tbpaKvjP{sS]noIgcKchKehCipDchAcjEemDloOjjKlnLglJjiLloNkoNllPglJcmDkqHqpM\a@biJ]bCejJflIggK[`GabI^_B_cC`e?`i?Xa=]eE[_<fY_3Xe9Wa9]e:X_9Yd?Ye=]h?bmB\d:T`8[e:^e9blB[e8lsFio>BU1K_8I\7I\4J]6K]7I]7BV-D^)Fd(F^*IV7NNBQLGQMIPMHPLGGKJz|Ī:ժխ9J?>!ߩ Р
+CH|JxM{PPSRT_]S~e|KoKrPrPmJcF^~C^xC^qE^eEccLhjTgpTegIddS0.n/,Z-,b(#5051412-)&/+-)0-/+}('.*y("{)%p&#b$gED4^e;ko<dgAeg:YX:PD?T?KaADZ+EV52C8BXDHV9LG%J3#pqTffKidRc}a~dnmT`dBbdC_cE[_==='KJ6HE1ME<OHAwxs``[`a[uvrVXT:;4<?4GF9~QVLGF?C:3NC>LFAHIA`_Yihc;=5>?6C@9tlcrj^xqdynatiYul\xpdpi`sldvodxrgwpfyrh|vkyrflfYb^SgbZc^W\[QtgU}`FaN;`YR# .)+B=;nnfklbjjaih`eh]df^bc\^`YYYUUTR955@<7?854,(/% ""ADI;77=.(F62[VOUWORQMXXV54,BB9FGA<;377,88/96.22(42(41';8.IH>SRHPQDUVL;<3:;39:5DD=<;4++%&%'&*'!(%)&!..)..)..**)$('()!.2+47313---&0.*-,)23.25/7;4<@::<97:59=946100,895:;77935717;4=C:7;45:38=5@FA>A=:>76:29<3AD;?@9GI=QSEII<DF7KK>MM@<>349.380;A7>E;:@65:08<49@5;A806.4:28;713/.1-4958?96=7485.2-051/40061152374@ECe]@jcFtlJriGogGkcDe_@`Z;VS5PM3QN2PN2RM2PL0JK.GL,LJ-RM1JF*MF,JF.50) #,)*?:'<7'62 5/84":6$74";8%>;)43$,) &#)%'#.,)850<8&@>$;:#>;'>>&01<9%EC9HFGHDB0+*% tˮ;u=?#DI*IL*RU3YY8]Z:jcBjcAd^;meAujGjbCh`@peGe`?fbBlgHg_BdX=e_D\Y<\Z<]X:bZ>f^@_^<ca>id@c_;[[6a\<[W8XV3^]<^\>caCzl_h\Re\PsiYvzhsqeQVH=:0(cTEvdLo]G`O>G7-G92?0,:-':0*3*&1($6+&1'"4*$,"- =0(@4-C;5?6/H?5I?8C:4D90J>4A5/A717,&C71$-" " )"!)!)!VVLqsfup|ov|kr|hyqfo^itfdo`fqaah\W[OUXRKRNDKGGLJDIEPTMz{sac\IKIEGCDID\_YhibTTPOPJSVJUWMILCXYMnq`vSOF~qz}CB4($-*9;&TZ8V\9NV3`fDQP<WUBPQ>ZZCqqV\\BbdNbbOUVBPT@agA`b@QR9LO4OS5VX:dhKbcNXL8_W=d]C_Z@daDllJ_Y?g`DxrUtkRlgIqjNiaJigH]a<nlEUfmCgnIblDcl@do?fnCaj?dm@bj@glGgpElrGhlFntNblEgnHdjAmrJkuDntIdkAekJciH\gCalBkqMdkLagF`gBemIdp@hrC^d>R\;[d=~{Q[_5Q_1P^3al?^j=[i=Ze<^i?_n>]h;Ud8Wb6dm@`k>al@bi>ho>BU1GY2G[1EZ.G]1L`6L`2DZ*D\*Gc*D^*FR4LM@PMGOLGOKFMJGT]\`ЩҨ#Х(د'45ޥߦ
+Уțڬ * ߬
+ ݫݩ 
+$3(#(1%C8-G;5<4/?61>63$('C95>75|xouoiwrlpkeid]TLE{zuz|k{svndf^[\UMPHRTJPTIPSISVLINCIPDPUN_d\TYUUZWTXRQVP\_\jll]a_MQQV[[KOP?DE<ED=FI<EH;ABMSTfklgnoinpkopcgilnoUY\FKOAFJ<BE>CF>CFIMNIMPJPSJNRMRTNSTQUX[^`PTXZ]_OTTNRSIOTMRWCIMDJP@HNGMUdn=cmBUV4kiBkuGitBnwCjrEquMouFelBosKtxOek@jtEbn9x|PfoBlwGkrHmqLvu^llRosO`fAhmJksIs{JjoEkrC]c?elCaiAekBbkAZe=^gAmvFiq?hoGXg9Yf9~SqCdr?ksDjsBZd/cl;Yd1muFT^1bn@iuEbm?isBdq>\h8Wd9`lAmxBm{DfsBdtF^l?muK`h?bo@grA^m<muDxtG`e9`m=Zh3^l7epBKX1`f<~rLKZ0KX+fq@cr;^l9Zg6Xe2\k7ao9[h8`n=Zh5Rb3Xi8\i9dm@1J5O5P;T#CX(H_,G^+FX+GS-KU2KX1IX2LS:NMDJIGHFBBIISyqw?ȝԧ
+
+
+ة֨ Ө۩
+ګשӤѠު
+ $ui`gXRWIDUQLWOKZSOXRLZTN^YSJ@9eYMxre=1,@2.`UJ>5,SJCTIBF<4OI>tmb@5/KB<G>8&C:8>62F<:QF@*#!
+[QL^TM=10E96*! xɚ¶ĸƺŹ|IPS639%""") (C5!:03?`U)   ?an,cw1as1]n-5     #)!&/ "0#%0!!@,)C1-:''H32M:6TA;WC@\HA`LDfNIeLDdJBaF=_D:_B8\?6[>4W9/X;1Q2+J.'G+'C,)@)(<'&8%%4##2!$0 "+'%###  !%,׭ɮƛhrwڗĕλڜ͍95>YKOnTTo]`n^cn]`n[]s`bYLPbQUeTUdQUgRSgPPiQTkTTpVVjPR_HJ]JKXGJ[LOZLP]RW}|~RPNVMGƨܸɨ˯S7>J17xRUoo_`wSU~[]|zqpy_]tPQf>?f<>vJLbcqqlmjidecc]]ccd{z|wwxwwxwvxwvxwvxwvxwvxwvxwvxwvxwvxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxxxywwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxxxyxxyxxyxxynmnyyyxyyxyywxxwxxtsuyxxqmm|www}x|k`\znizy|wxywxywxywxywxxwxywwxwxxwwxwxxwwxwxxwwxwxxwwxwwxvuwutvutvutvtsutsutsutsutsutsuttuttuttutturrurqsrrsqqqmlnmpn;ȸƶôǶϺĴĵĵļƽȾɿ¯ïĮĮŮıưŰƲƷܻ̳hiXRP@UUHHD7GC2GB-D@*B>*A<+=8&C?-<7(84%1-@:-VTRDF*EK+%%BC0PX8PW:IM2PU8SV<..98(GM369&:8*63$40%50%><-45';=30/)allqz~~ٯהøż~qDA>jb^f^XYSS]XYPLNONPFFGSSUMKMWSRXSSdYTg\ZIGHffg\\[nqkpulYZOPPDqrbv|ku}sUSKA:4MHE\ZWtzqRSMSPLRPMHGBMLGJLFSSOIHI?>;CCASTRbdaikjNKH`c`ourosqlplTRQTTRnqmy~w~aYOXJ;hWA}mUK@7*#$,!OB?^RM2&!OF?ZTK;1'[PGaYRYSP_YUXQKTMI_VPg\UB82_UMn`SD6-dYQ`WN`XMQLEG?9[PIaSK90(NG=KB>I@<LB>ND@PGCJ?<UMI" :/(K?:!<41I=6aUN*@50B61E74'Ŝ´ĶŶǷȺź¶pKNS'!(!0(/&sD/07{n7   &,<r3j|3eu7^l     ' , #1%%/##.7%&F2/D1.C1-J93TB<WD@]DBcLGfUMlXQkWMfQJaKEcI@_E;[B7]A6Y=4V:3P3-K2*K1,F1,C0*@-*>+*8((5&%4%&2$$, '&&'&  $&,δЮějsvԍŽꝱٜܺɏz{gp{!SIOeNLr_]l\`q]asacn]]aRWXKPcOReRXaMPiVYhUWgTVdQTiUVfQPnUUmTUjQQfKMeOP}ywDA@|ulе|ok^fpoo`_3Q7>{VVyWYpp·tsjgsQQlDDf<?qEG\]nnooomxwssllghy_]qjpkbcd{z~vwwwwxwvxwuxwvxwvxwvxwvxwvxwvxwvxwvxwvxwvxwwxwvxwvxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxwwxxxywwxppqwwxwwxwwxwwxywyqoq{z{mgi{xy~txuwsjisd_xxxwxywxxwxxwwxwxxwvxwvxwvxwvxwvxwvxwuxwuxwvxwvxvuwvuwutvusvtsutsutsutsutsuttuttutsusstsssqqsqptqptqproopmkmmrqªƹ³ļŽǿȿɿ­ƮǯȯȰƳȸʼܼ߾ػ˲PJ:JC2JF5LG7E@-D@+A<(A<*?8'@:):5"84%95&JE;USP9< -1$"BA-24KO6OS7:>'CC1*)><,FI225$10"GH4-,97+<>,=;*72$4/"44$5<1^hhjzȰϻ¸ɾܯPMKOMPLKNgc`}snUPTMLMebcFEGJJMLKMJHIZTTe\Yg]YUNMJJLfggx~xaf]TWNTUMnqd{}zofi^lmeYXQy{u`b^osmEC>@<8KIEKJGQPNAB>SSQ_b\qvotzshnimqmCB>SQQdfb45/.+(4/.0+*:54HGB}x~OH@\K8l[@aWI H<:nhbic_^WRVMJgZRQG=ljdomgqnfkf`qngnjb}ukpg\ync_RFaSHaUOaYRa\V\VOWOIOHCXQKMD=LA<I@<ODBKA>J@;I?:H<8KC>)"JDBQLILFBG><9/,0$"- 
+&1$K?<zŜõĶǸȸƸʽsEIM!&' H<{;xk5
+ ;Xc.m~6o|6l|1Q]
+ 
+ 
+ , %&*!2%'1 !7$$E0+B/+G88LBHTC;aHBmJHtURn]Vn]Rl^X``iXS]fK?bI<_D:^A6^@7W:4S80O4,M2,I3-G2,E0,B.,>,*;)(7'(4&(0!"+'')&!  %ƯǛkrtާ̂dt}lꜲ|zvvjzlx_iyv~yTU`#%RHOfNLgan`al]bn^al[]l\`WIOYINcQUeRVaMRiUVkXXfQRkUWmWWmWWgPPmVWjRSm`a`^\LEB~|xbli[bcdoqgQR(YAGdbuWUnHJg;>oEEYYhgpnkjlljhю{lm|c]bcc{y}vwwvvwwuwtuuwuwttuwuxuuuwvxwwxwvxwvxwvxwvxwvxwvxwvxwvxwvxwwxwvxwvxwwxwwxwwxwwxwwxwwxwvxwwxwwxwwxwvxwvxwvxwwxwwxvwxvwwvwwxwwvwwvwwkkkuuuvwxvwxvwxwuxrqqyxzhab{xz|uvsvvqpjZUzvxwvzwxxwvxwuywvxvuwwuxwuxwuxuuvutvutvutvuuvutvutvtsuusvtsutsutsuttuttuttuttuttuttusssqrsppqppqppppnpoopnlnhqr¸źƺ˿˾̿̿íïIJdzżټζδĮ}YYHJB1D<*FA/D@-D?,=9&<8'<8&:6%85$;6(84&NLBUUR<<$HG/%"99&((87$<<&00!.-#==,AB-+(31">>,+(:5'NP:55!66$0/!@=+JO3?A-NUKO\Yerq]or{蛭οξ葒><>OMPMLNMMNHEDOJMPPREFGJJKSQSMJKhddTPRUPPaYTQKKLLNegfx|zpyp|~ilellf`aZ__Y_b[jnftztsyqqvnnsmlpkw|wWXVXWT\]Yyzt@<9HC@gg^}E8,kZEicV<;;%! IB>HA=A63?43QFD"=;6[XS_\Wda[da\][VPHDupg\dYNcXMB:4[TN\WOUQKeaXspec^V[PIN@9@62PEALB<LB;F94F:55-(.(#QKIHC@KDAIA=JB>PGCNEAOA?$, ;.)L>:~ƛ´ŶɺɺȺ´s:7=-")&$)!)"&
+
+?n|6t6r?z#-
+  
+ - %3'(+!1$&/!!B-+N7/Q<7JJ`J\WFBeH@uRQwZVs^WscZos{WtSZmhMCeJ?bF:`C6`C7[>4V:1Q4.M3,J3.I51G3/C/+A/->+);*)9))4$%/ +()($! ҬŝkptޫҦ^j|zp|rѹvaixt~s}zvzsvyn|p|gphp~hq}pxnywqx>:EZSXZDDw\Ttc`$*0%0?3>H?IMAJVHM^KP_LQbOTdRVhVXkXXjSSmUVkUVcOPeOQeOP~yyLGClbXbmmfjjÈkmnS6:2!(w^^yXWiGHg?@lAC}QSdeqqoptrzyqrzvűig}|vbcczy|vvwvuwuuvtuuttuvuvvuvvuvuuuvuvwvxwvxwvxwvxwvxwvxwvxwvxwvxwvxwvxwvxwvxwvxwwxwwxwwxwwxwwxwwxwwxwwxwwwwwwwwwvwwvvwvwwvwwwwwxwxvwwvwwnnouvvvwwvwwvwwsstutuwwxkfeywx|swstwstj\XxppwvzwvxwvxuuvuuvuuvutvutvutvutvutvutvuuvutvutvtsuusvusvtsuttuttutsuttuttuttuttuttusrsqptqqrpppppppnppoqmkmhrsĜķƸɺ̻ѾŴоп¼ü¾׸γȱmsgD@4HC3MF4D<+D?0HD3B=+A:(A9)<8(?:)85#5/"@:/UTQC?'d]=YV89:"(+RQ8LI2@A)''43#?A-% -*30#-)63#NO;-+:9%-+42#@A+76#>>(EE1=>*<;.SUL~ȈꕨɼŹʿ̿ɽʾ_aZECEJHKJKLOOPMMNAADzUNOGGJFFHPLMUQRXRSURSLLMPMMic^MJJIHIegf|vzzsxzx}{vjnd\`Sgj^lpa~vkqgu{ssypptlvzr{ymohgjdpsltzqrtmQQJil_icU_\RZYUdc]PLHNGFE><;42;42;20.&#,$ 2*&/%$1+)3,*C><*!YNGL>3cWIocU PJH^YVsqjnkaniaicZ_XP=2/G<9LA<D96/($<65MGFIDAHB@IB>LCBLC?PHC4*$90,.%!Ǜöŷȹȹɸ˹ȸw*$+%"'&-'+,%* %6<1k|5u:Aw 
+ 
+  
+- #, '/!!2!!G/+S3,R<9JYzCeUHJlKEzXWnivaZmc]qYrXT[hJ?hLBcF;aD:^A6^A5X=2S8.O7/M7/I5/H50E2-B0-B/,?,*:))5''/ -,+)& l|ãɽ¶hpt̗v]fumym{agsaky}`jybjwbiuehvimwnq}nq|rxjr|eo{^ftblxbhpbgpafs]cr[bomoz72; "ia`]FEpQK|)*4"2+. %.SEJ^ORaNTaOT`NRdRTgSXjWWjTUmWYkUVdOOdVWjhdME>`knfkkĽqeg=#*W26rDF\^jjpptrnlml°¸omxtija`mibbczy|vwwvvwtuuttvuuuutuutuutuwuxvuwwvxwvxwvxwvxwvxwwxwvxwvxwvxwvxwwxwvxwwxwvxwwxwwxwwxwwxwwxwwxwwxwwxxwzwwywwwvwwvvwvwwvvwvwwvwwvwwvwwmnnttuvwwvwwvwwqoqvwwvuusljwwxystrszxyf][tjgwxzwvxwvxwuxuuvvuwvuwvuwutvvuwuuvutvutvuswusvtsutsutsutsutsuttuttuttuttusstsstssssssrqsppqppppmpuprvornjnirsğ÷ǷŹȺͽоѾλĽǨռdzzeeZHB5D>.FB.GB0RN>C>,D@->7'95#;7&1-63#95)YWW4-bU9h`A\Z;NP/NR/VX4\b9)*41"AC+)''%*&,'32"42#.*64"0,41#42 ;8)84$89&88(85%D@-=<&GF4䨷w|wо˽ǺBBCLHMNNOKJKPOPOMMRNP><?A=:TSUa\Xb^[UPO`[\JJKJJMFECje_A<=EFGdfe~|zwuzqw~px~mv|ksyf}twivyj}qyw|x}z{z{xv}su{pz}z}ư{z}q>91<5.>92>82?:5D?>;4392-92-81,.($/)$.*$0*'2+'6-)5*'H?8h_V;/+-&'fda]XS_\Wjhcc_ZokeheaRHFD95:1/3,*$)!
+B:8OIGJDBOHFKFBLEBKA?.$#.''HCA{Ş´Ķǵȷɷ˹˹ϼ{!$#!("(-'-("(  Ceo0t9O#)
+ 
+
+
+
+%-#'."=,+A-)M0+W)&Y<6KWrAhPMWkLE}_]ca}e]kgfayRe^OPjM@hKAdG<`C9`C9\?5Z<3T90Q7/N70L71J72H51E3/B/+A1-=,*7((3"$.-,,&[cgťƹaeht}wsxmimy{uwklvbht[bpaiybkz]dp^dqZdriu]hv_hu`ep]al^dq\cpho|dmzgpzbck_[cefogelihr_dnTYeMQ_WZe "512yuYCElOIun7)2@1;E5= #:4?OBKOAF^KP`KP]MN_OQdRUbOPeRSkXYiSThQRyppRPIcXMֵs}|[[UleKJ1!1 zQSecolɑurnk喋˨onpqfgmmss~ig|iewbbczy|wwxvvwvuwutvvuvvuxvtxvuxwuxwuxwuxwvxwvxwwxwvywvxwwxwwxwwyxvywwywwxxwzwwyxwzxwzxwzxwywwxwwxwwxwwywwyywzwwyvwwvwxvwwvwwvwwvwwxwxxwwomlvruxxyxxyywzsprxwzzxxzxwx|vusu{xynfdug`zyzwwzxxzxxzyxzxwywvxxwxwvxxwywvxwvxwvxxsvzssvstvswusvtrutrutrusqtspsrpsqorqorqoqqnqqmqpmqnlopil\A:R72jbfhqpƢººøùø¸·¸ù÷ǸǷɻ̼νноѾ¼̲ڿu}hq_}ow\a^J\]GvyaѹmoaNJ;LH6EB/EA/MI9E@.EC,>9(A<)A=)84$KJ<uvk[YY/&g`ERN0XU6b[<UW4HL&^c?$"' /*@>'+)(&%#0/!77&41$+)MN9>@+HK321B=//,98(55#EC/RT7RW7@C-=<*XYFIL7QSIEMJuvouvfddzqoow~x~zξȞ~MPTKFHQPPJIIIIJKIJ]YWUPPb\Y\YQQNNa\Z`ZXTPMZVTFDERPPKJK@@ALJKJGHPNNfih~zu{slqcz}uw}jz~l~rzóɵìŮ|abXVTLMIBFC<JE??:5;6161+;50;4.:3/4/(4/+60-3.+2-+;74:62931&C><>99D@=A;9@:9A:8E?;1*(+$ 6.*71.5.,C;7G?:A:5  ZVR]ZT\WR6/+4..MGFF>:B95.%",'&{ǟ²ñƶǶȸʸ̹ϻ̹x#"!%$   B}:C7py    
+
+
+
+
+$,"*9)*:)&L6/V2.[(&\60QUeGhNSdfI?xXX}_\zc]lkmRhKUmfPIjM@hJ@dG=`C7_B8\?5Z=3V;1R7/O6/N80J71I61H40D2.A/,=-,7''2"!2""/ - - '! X_dΧƹ]^`]fskr~rqwmkrmlrmltlovopxfit^eqZ`m\dp\co]dpaiv`gvakwbisY[fOR]W\hZ`l]esU[hdgp[QST@ASBFN@BTGMTJRZPVRLTLGO$ (ROL~XEHeKHeTT=5>QMSLAK&%>4@H9AJ:@VFKUDH^MPZHLaNRdQT\IL]KM_JM`OSnjhMGA~ڰҰѳѯҫܲɰL,1.!:%(llϨtrlkecebon릡pnh```nmrljolinzut~vslgjkhnlhokgnlholiolhnlhmlhmlkmlhmlimlimokm~{smllhmlhmlhmkhmlhnkgmjgmkhmjhkjhkigjplm}|lhiifjhfjhejgehgdigeifdhiejfcha]`eacfbhfbid`eb]cicgf_`c\\a]brjfsf^[_idfSD?pYLTGHa]g_\b^Z`_Ya_Ya_Y`]X^]X_]X_]W^]W_]U[raVl[J^PIZU\YT[YTZZU[XSXYTZXSYXSYYQZYQZVPXVNWVOXVNVUNVTHMS/&F#YMSiqpåºĺ·ù·¸÷·÷·ŷ˹ʻоҾҿҿҾҾֵwzjROAűĮĽαٺŨ|relYGM>cjXHG7A@/GE6GC5PL?ED4KL9IF7GD5HD3WWGlqb\fVXYINJ8FB.GD.FB.B=,B>,IE.D@*;6%EA0A>,NOA<=1YWW$ DE(CC$WR4qfJfa>YZ3MS/ +&_]A34'&&%2/ 2/ @>-HK6JM3MQ8U\=NT6AB-/.OQ5X^;PU2EF(SU5@@(==+:9(95&@=,70#=8*IE9ljfVTQlie```stl~ͱļžǻנ̮^\XLHIIFC[XS_[TYUSHGGQNNIGHJII[WRKJGIHI]WVQLK[YWJHF^\Wig_A??AAB=>?IGHHFGdfe{uws|zq{k{luxeq|v}tptnTWPPPKJHCE@<94/;5-=6092-94-:3.82-70,2.(83-73.0.):83510B=;,&$2+'6/-5.+-$!$/(#70+?3/A52A72A94*#ZVRSOK[WT`[XFA=(!@96D=9( yɡź´ıŵȵɶ˷˹ιϻӽƸ]fe5-3 "( '(( -IN;AM!&     *#0"#1"!:&$N@:bULY81`))^-)ZMQN_YV`lRGq\Vu`Zye[o_Y^X`ZQWhMBiN@jMBfJ?bE;^A6]@6Y<3U91R91N7/L93J72H60H61D3/A1.=-+;))5&&2""0!"0 !.!("\hlТķ\\^hjwijrjjobciihqnovfhpdgpeiuQYeTZhY_l^eq_dnaer^dn^bl^cnY\fVXcVXdX[fRUaNQ^TU\bVXVBDXCF[GIZED[DFZEFXCEA6<rpi|UFHeQQWEHB7CPDNRDN$E;BM:@N?DO@EUDH]JO_MOcOS^MN`MOcNR^JOnegXUQ[SIȧڭڰج۰۰ۮ⸒sd7$. vifɻnkjfgekeje{ȿgeİlhw~[[]WS\VR]XS]WF>X?.VPPVS`YS^YT]XU^XU^XU^WR]YQ\YU^YU]ZT^ZU^bWXqYFdQHZW^YU^ZU^YV^ZT^[V_ZT^ZU^\V_ZT^YV^aSPhP<`PKZT]YU^ZT]ZU]VRZXU^WU]YU]XU^WUVskkkfgd]`aZ`_Y_kab_W[WT]dXWqfRKScZ_SC=gPCQ?=ZWbXW`XV^YW`XU^YU`ZW`YV_ZW`YV^YU`YU[yhYbN9bUJXW_YWdYWcYW`VU^XWbWW_YYbXWaYWbWU`UU`YYbXYbUWaYT[A"K( [TZiqnũǻŸŹźƸƹĹ÷¶÷÷ö÷ǷɹǵƴȵɷμѽѽֿտԻԼּʸȱ$C)'uPI{m_l{mKQCHK>FI:\dVYaUQVJ=C4DF9BA4JL?X_O|xTYIul`kW{PWFQSGGH9GF7KJ;BA3@@2HG5=<.??0HH6IH5HG5EC4EB3EB3HD3HF4KG7IE4MM<KI7C?.EA/GD0FB2@;,@<+B>+C@+@<,C>/=9(51"<8+WVV%"EE);<FC*`X;fb@b`;bd=FI+76')$=<#67%.-# /-1.??,>C+HN4KP4EK0CG,;9&97%<>#OW4Q\3S[8=;%63%.-:7'@>-<:(64'99+55%WWE66'lkgomlxtn~{vppoeeftsoʶpwt嬵囮ݠgd]XRO\VUtnfxoeUPJNMHHFE]ZUYTONMHUUP?@@DCBfbZ_[VZXTZ[O``U@?<SQP667GEGPNNRPOefdxv}u|{t|tx|iklVbcNXXF^]LbeVhl]gjYim]pubrzvfkbRRMSRK>925/'83+B?8DC<A?951+95/40+40*0,%94/751410.&%3+&0&"2)%3,&5,%9.*;2*6+%80*4*'+$HCBOIGFA@@<:>99E>;4-),##C<9y̤Ǻ÷ĴôòĴŵɵɵ˷˷ͺлӿԿajg/'.# -(,  M7B@z 
+ $    3#%B-)H1+ZPER<3^'$c(&cA;\PLbSIm_LrhTulXujXoZMmSFiMDgJ@kMBjMAfJ>dH<_B7]@5Z=3U91P7/N8/J72J82I72F40D30?/->.,:)+4%&2"".!/!#0"#,!)!# n}~Ÿ[\_^dp[_ieemXYcSVcikscfofirekuaiuX^kZ^j[_iUXd]amXZe[_jWZfWZhQS`\_kX\gMMYZ]fTSYcY\R>AWEFVEGYEGWDGVCE]KN929 y|t^QU[ILD7=1+44*33*5,&3M?EQ@EO=DTDIUCGVEI\LM^NO`PQ[KM\IN\LPspkQICnܳׯٰٱڲٯ׬̩dFC5'.|uoefkhjgkgoj~{zupȬkislhZ[^WZeXZgX[d^KD\A.VUUW[hZ^fZ^gY\fZ^gY]g[_hY\f[^gZ^g\_iY\ga]^s\FhWJ_aiZ_k\_i]`j\`i_bk]`j]`j\`j\alY^iaYUeL6bTL[bk\bk[_k\`fbbdY]daaf[Z]je]xpbssxprsr\bj`_`]]_ZafwkX]dgfh9) `L>aSN_is]hp_hp_ip`iq`ir^hp\ip\ip`kr^kt`infZNiR<`UK`nu[mvZjs[mr^mq\ls^nu\ms\ntZmuYkt[msYlrYmr[ot\ilA%!F$bcejpo¸õµ¶ķŷŷŶöŷƷƷƷŵŵƶĴĴĴɵɶ˸λϼԿŎ# F,!rJ;]<0J>2DA3D?1C?0@=0@>0<<,DB3@=0;8,A=2=:-:8-B?2FE6ED4<;.AA4>=0BA3?>.CB3::,><1@@1:9->>2HH6JI7GE5FB4C?1C?1IG2HH0NO4IH.B?+DA/C>.A=+B=+A>,>;)?:)B?-?<)?;+@;.<9+73%>:-TTSEG&V`3HJ*leHg`@ifBPW)_h7--+'.+%#66"PR;JM1RR:EG,KP6BI,LR4HL4<=&CB0=?%ZaAOT7FI+U`8Wb=LP4JL3@@+53"QT9EF0<9)31&9:%BA-HI8adV|WSJpni~|yÿzzs̯ɴu|ʲʼuzxVUQROIe`W]YR[SM\SOHHDZ[SJKBVVNjhWhiWBC<NQKppdVUK`^VabTmk[NMGOOJjj\`]ULIFMKDWTNdfczxwszx~u~~x}pubuwdtveorafhWhiXceS]YE]ZF__G[[D^]G`_H]^GY[GgkXmr`osaehRloZsxer~{mof\^Tfi]~yjkdFD;JF>B=885.40,0,(-($(!5,)3+'6/):30<73-&#.(#6.'80*:1,-%#&"60,60-840<73;731*)3,(5.,# 4+(x̧ǻĸ÷ĵŶŶĴǴɶ˷˷ιιкԿR[X.%.
+'& 
+    ,JPKX27 ,
+   1#$E/)O5-UB6utd\+(b+*YC7hbFxwS`_kismLl]F`J;dI?iJ@kNChJ>fI<]@5\?4Z<2T91P7/N80K81J82G50B0-=-,7()3%%0!%, *'(0"%/!#, #)!"' (o~Ưġ[\^SXeOR_WXbSV`PS`X\hXYf]]fVYdZ`j]`n]_j^amV[fVZfWZdZ^fX[fVXdZ]jXZeY\g^akWYcVUYZQSR>BWEGSABRACSACTBCWHL% ))(+vjhf[HKdSTYMQ]QTUKOPCJN=ARAER?DUDHSAFWFJYGJ_NP[IKWDHTAFf]_][USIA˹֪֬ڱذٱٯ׬M.2,A'*d`kjuqztrml~ngrbccvwxpstnqqo`WoUFsmhflplprnrtorsortmqrknpkprmpqhnndilioqonkv_MoaQlrrjrvkrsjppippcmndmnhprdmpdmrfqrjb\kT?g[Riuueqsitwgqr|vkµƸ{|qyxjgblpm}xt_mljnn7'!`J>gZPkzyjvyr{yqythrrgqqiuqiwslxulxup{xu}w]O<hN9]O@|v~v{uzw|r~zp{ykxuguqaqpbqobpmbolepn_eciliN4,Y<0heajpoƽôĴŶŵǴƴǶǶȸɺʺ˺μλ͹йҹҼԽԽW[P;&_</oG;jD:O;1::0;;.@@178):<.79-<;.>=.54)88.31(53)@?1A@2@?0DC2DC0>?0<=.?B1CF3@A164+<;/98,==/FF4GF4CC1DB2DB1BB.JL2IM.FI,@@*?;*<:)84%1-<6'96$30 50#:8'76%<7)=6-NPDGG<BC8SRR KG+NS+27[X6]Z7W[2im@SV-0.)%?<'96#OR9QU5NR2JM0SW7MR4JN/GN078%86#EF/7:!X\<_cDLM1KO2QZ4Xb8S[4NP186#JO0PV6MR7-,74&=9(<=%R[8OS:42$YUJjg_}nmimlautc|wкҲ˱ȱc`XONKa]Rxqeb]TWUNUQNKGAZ[RTVIceVPRFkmZdbRb^UojeWHFCqmctTPEZ\QPUF\^LTUFTSIUTJROIhjiipachXzt~vy~s}zv}uyg~okp_nrbmq`cdU^_LXXE[XE[[D[YB[ZC^^HbbNno_ehWhkZptbtweddOdfKjoWw|g{l{ux~oyrgh]ZZNSSIQPIGGAED<?;6IICOMHC?862*51*71.40*8300,'.)%.)%-'!4-(-'!,%!-(#+& (#-(#("%!##$' xΦɽǺƹŶĵŵƴƶʶ˶˷ͺкҽcnj$#
+
+ 
+
+*:?   
+ 2 
+ 3&'G1+W<1X?2wW;1XC5kmMu{OswOotLvyPz~T||Lqr=qo>f^9aP;^E9hLAiL@bG:`C6\@4Y;1S8/P7/N82L92G50?0,7)*3&)1#')!(% !!'."$0!%*!(&9;@s̱Ǫ˻YZ[HKWMQ_TVdUYcTXcVZfaclXYbZ\gY\gWZeUXeSVcVYfQT`TXbVXaXZdPS^SV`RT_PS]\_iMQZ]]]{qpR>?[GHVEGYEGVDEZGGQFJ$'DCCyxXHNkTTlSShLKhNKiPNcMMXEHTBFP?AR?BVCE\HL\JL]KMTCEM=BzvtJD?yl]گ֮֫ڰխذ֮ݷpc7%,qb_vp{t}vryxoovq}{lh^YWZE9bK=iSEdPCu_TaI<s\MgQD`K>iUIl]j]j^p[PxbU|g[j\k\pZNi]pbzeXxeXm`uguhqfwjshobwjyntg{l|owlsvytueu_hglkljq{}eU{{qzjZl\O[G;^F6v^Q]J>UD6eQ@lVFm_sbopuszzpYC^I9iSCxoopmozi{kteserdoaoapatdo`qctcm_kpo³ijŷŴŵŷŷŷǷȸ˸͹λͺѼҾȼǹŹöҿT\Q9%h@1jD5c>1F4,56.54)<9.=;.>@/>>177+32(53,97.30'43(<;/<;0;:.<<+A@0?@/?B.6>)8?*<C-?A/BA2<=,CC0DF1GF2GE5A?.GE2HJ.LR/CE'=<':;&99&31!1/.,3/$74%42$62&77''(<7,;8-=B5;<2@@5XWU# <3G<"fc>HN!UX1ED c^8^S7.))%;8!KO.DH.HL0LQ2AB(DG*PT5MP2EI+43!;8$RR8>@'TT;PN5CD,B@,??*DG+X_@44;9%Z`?=@"MP3BC->=*PP9GG.QU5JM.OP796(KJ<LJ>~ry}ƨԽýԹӾLGDPLH_[QkdVqg_ic^^[RbaU_aQ`cOefRa`Nom]xvdxj}r}rewhtqfbSWZIS[GQWFtsdfbUXUK@;3[XQfihw}qsxjz}ts~~m~wm~szvsu{iu|lw}mnsbzrjp_jnYqucu{gw}m{rceU[[MTTBUTAYYCZZD]\Ja`N`bOaaN`aN_`NefTcdMehQns]hiSddKhiNfgMjnVsx`rwampZfiR`bM^`MacR`bSfgYfgYgk]kodccW_aVhjb__WSRHC?7B?8RPJA>93.)1,&/)!/'4,&1-(.(!/)#/($,& *$'#'!'".(&/)(x~~ϧʽǹŶŶŶƵǴȸʷ͸͸ϼѾº{2+2 
+" %%      
+  /2#!.*10#%C.+]E:]C8iVIzxlMA0vyPpqHgfHWSDUQGNG;J=4LA2c\;lj8tq9nj9h[=bJ;gJ<bF8^B5[@3V:0P7.P92L6/I6/A/,4&&4%&3&'1#%)!)('&"*!2#%%/-1KUYůĩʻcacy]ftRVbMP][_k[_j[_hY]g[_i[]iSS^OO\NQ[RU^QR\RR\UV]PQYLNWST^UWaPR\]^i[\`aa^WCFVCEVCEYEGVACZDFI>Dcg_PELbZ^YOSfOOiUWgSUfNOSADWDEVCEWCIUADXDE_MOYFI[IMaWY^\UNF@ܯٯׯ׮լ׮׬ȨcD@9#*4"xqifyvqmlppom{pkyzun^[\G?9OG@I?6J?9C;4D=5B:1PJ@NH@OJCQJ@PI@OG?OICPIBJA:MF=OG<NE<eZPC5,F<3C5-N@9D9/K=6D:0F;1NB:@5-6)A3*7,"K=4\J@l\QJ=3Q@5G4(K6'oZ{rzuf~cicHqR<kQ?aHnnlxb|emThOCC2$@4'?4(</"=-K;+SC3I8(PA0H8(M<0B1%kUDdQ@J:/9&C0$?.#P>4K8+cRC\I9hUDK8(]G8O:+fTEp_PiWGaL;mZKhTEjXGp^PbhfŸǸʶ˹ҽu~pWTG}{͸ǼǮ´XPF`:-\8&\@0J@7>83@=3<:/?>179(;8.=;2:9-50)63,84*;9,=9.83-84,=:/62)42(44(45'01&7:,DE1;:*9=&?F)GJ4IH6EB0LK5HI0HM-JP+99;8'63%2076%<9,<6,E@6::/85+FB6016:&GC697'99&==,AA5VVR@A!AB#=5gY>mgBglCPE)|bi  # 32MQ169!;='AC-;<%JN0MS4TV7TT4[\<74RQ8NR6WZAEC133 ;:%AB*;;)CC05.!;9$[`>BD*HG286$>=(CC+?;(>:(><)86#98(BB+HK3UY?shgNϰߎvˇzQQPUSOEA?LHHUOKIDBSPN;:9KJFb`Q`dQX]LVXJ^`P~}jpm]iiXtp`vkeZNzg_NZ\HX^JKO?UWHWWH^^NUTJLHB85*YVGdddx~unuhlrdyst|quzcpxP?5]<3\M@w|jltapucsydu|h|q{z~sx}jw|gu{hrwby~mxnq^jo^}w}lilZv~t{z|lefU]\I[XG`_KaaPZZGXZEZ[H`bOdfTptbqudikVnq^ln[pq\klWno\jjWpq\or_z|imoZnp_fjWhjWcdQfiUmsaaeReeTfgYceWlnagh[vynmrghk`gf\TRIMIBGC<=80<81>932-'3/(1+%50*0+$-(#2,)*%!<86xΩ̾ƹĶƷǷƷɶȸʷ̹κоҽ…;9=
+ UW]#$' 0 "D0)|ulnj]fF:Q=/zvMroB]O>aRGhVO^JDWB<N84J51E1+QD.pm?ws7~x>tgB`D4aC8^B6X=3S8/P7/N5-I6-G4.?-)4&%5&&3$%1"#/"#2$%7')7()4%&/ #+!%2$&QT\VdgŲƚ]]_ST_RVcRU`V[gUXdWXdNQ\^doagrW[hIITKKTJNSRUY^`fWYaZ[c[\b\]a[\a]\c\[bedlggiuvqYEJ[HIZEHYEH[FI\IM7-5}vNEKYKOb[_b^eYWbUJQaRWk^ecTZXEG^HJ[HLJAGxwuIE?qeXڳܮٰ֭׭ׯߵ⼿L/1,I25~Ӎdaxw{z}wsoowwrrxwnmgha_up|zuZZYJF@IE?GC=HA>?83OIFPMIWUPWUPYXRVVPXVQKE=XVPWTPYWUWTP]ZUVRLnf`RGCPFBRGDXRMVPLZTNUPKVTOTRNVSNNJETPLSQLVTOa\UqjaZVQYSLXPGwheCmpdioToVgOs[[<(A)H6*4cR}bKyhP6'X;(fRfM;bMBUE8PG=SH=WJ=N>0\NDWNDVJ?RH>YOCTKBQF;aP@`N;K?3<,#I9/M@6PE=NB6SD8N?2N=/G8,O@5E8,J?2B8)H>0B5'F7*D7+@3&F;.gjjdm_D.&L4-5 KJ@˽ԾsjSF\7'^;*sdXsvjimbbcWefZhj]UVITUINLBII>GD;A>6GD;@;5FA:E>9MF??7.C:582)1,&81)A;3F>4F>6A:0BA,AB(;9'A<.ID4@=)BB+II/EC.@?-:6+E>8J?:H>8D>;>72TLDWTHSMAIC3EG-EF0B>067"HI2==&;<*[]UJS&RX/<>GG"Y]-FN$;8}qPi_@( '!41QS146==*?@)>:(JG0JK1XY:KL,ifH63`bDRV7IP69:&88#:9[Z<:9";6'6/ DC,A@*97!OO92.B=-EA+51!A?-?>&<:,/*:8$DE-AD)@G+DJ/>C&9;$bbPyuc}n~t_hfZ;<<GHJKMPHHKLHJPKIRLLMIIGHDOSJSVI>=-LLECC?DF>X\JadPPSC]_QynvF=0pi\97'IN9>@0KK=VSEFF1giSWYIQQ?98$FF0dfenthrvi{w|ys{okqa~wznqlxl[4.a[U91xzwww~iu~q~p~nv{`qw`|}pu`w{gjm[w}mw|iu~t|ut{kjm]hhVbbN^^JbcQ^^N]]JVTA[[GYYFYYF_]I_aN_aO_aOabQhjYffS^_M^_L]_K_bOabOaaMXWC_^KacRcdTstddfV``Okn^`_O_`Ntyknrelqa{ruyknsglocefYSRGD@6GD;KG?;7/4/'4.(1*$0*"0+$;41x~ϨʾŹŸƸƷǷȶɸ̸ͺϼоӾԿտļðȹPVW 0&.   0)2     
+ a25 
+ / #K71hbUcXIjS8Oma?kPImUMkRHgLBaG:Y>2P7/N50K3.O>*un>~z9xo<kW>_A7]?4V;1R9/O5-J4,F3.C/*?-*7(%7('5'(5&(5&%;+*<,*<,)9)(6%%0!#+ /#$|hy{qǻȣĵ\]^OR\PR]RTaNQ\SUaMMXLNYOPZY^j[coNP\ST\Y\`PRX[ZaYYcVW`[\cddjcdi_^gVT[TU]hhj[JNYEGUADYHI[HJVDJ3-6$!%OGJR;=\KLͬɯʃkm{ZS]hbinel]JOYCFdKMc]``a^JB=Юźqoi_s][A%*,wsgerq|z{ieunz\Ymnkkmnrqiimf}{uZWXD>8IC=F?9A5-,)>40IB?IB=KA=KB=KB=>1,JA<KC?PICRIENFAPEAG:5&# -G:9ND?UJFQFCRKFWQLXPKYPL\RMXPK]VRmc^xng_XTi`\[MGiL;_;#iofh`NH-!A+}dTD-D1&0!7' O5/lTFpiYuU@~dSQ>/L:-J8,   !+!,!-!-#/#-#6%dO@bO>dQCF0$?/%C5*?3(@/&D5*H7-H5*N;0M</K;.RA6M>1UG9M>0TD6M<0TA1M=.flkͺD=0A*!>*!_C8Y>0ѝwXFuO>iI7`=.q\Pk`Q̶Ůëɯy~{}|ifW[UI`YNtn_mfX\RFcZLc[MG;2E=1PH9VKAg_PncUaXNcVJbXK_WHjaSe^LhcK_YGbYLc^M`YJd\L\UIZ[TDI LT&KR'IL%FNFI%54KP(?@#64!NO1=<#==(79$1-;7#??)IL/RV4TT8:7"NN/RU4RU6?>'RU3RT0\[6VV2OK3IG*EB(@=)?=):7%+(<:(20ED0DF+MR2OP654TW:JO/EG-FK/8:!FH2=<(GI264":6&98$ED-xs]NG582$CC6<<7PPJDE<HHCOJHPMKOJHYWO[bM@F8HK6JM3EI<EG?MM:fgWYYLZ[Mxteup_wra1,HG544!@B/35$HI3JM3@B'@@'LR0NV0PT1AC(dedgkaeh\cg\fk`|xt|q~oyjwqdy.(73`%!a=7uDAm\Qtoq{j|ssyfu~iqw^|kpt{}~uzo{mu{ew{hz{t~|{~meiVptdmqb_`O_`NacP^_K_`MZZGRQ>US@[XFXVBZXDYXFVTBZZFXXD__L`bQmo`rscbbS`_N]]M[[IYZI]^N`aQvwgbcRjk[ko]il[il[`aPdhVegW^_OaaR[]LffW]^RXXLHF:C?4?:0C=4<8-<8.B>7x~ͧʾƹǸȹǹȷȶʶ̹ͺμѽӿվֿ¹ι )#
+
+  
+ +e.2  
+&O:5WB6ʶtd@KgN8lMDjLAeI>_E:Y?5R;2L3-K2*J1*M1-VC,~tBzq=`O5\@4Z=2U;/N5,L5-K5-F3.A.*>+):+(6'%4%#5&&8((;**<-)<*)9))8'&5&&2$%-"%86;Zfi.-0TZ[˷͞[\^LNYTXaPT^EHRMPXORYKMVTU[HHSCGTFGRVR[_[aiflmjn[ZbLLVUW_\_hWYaOOXRR[fhoYYZrjaaPQ^GKYDGWDHT@DRCH>><XRSZACfNMogiڽݶִy~eaof_j^RZZEKS=?|qmPKEaWKϰqqgtusXbfV\]Y>@3,ļllrqvqwt|w}idfdd`mitq~|xurrwuph|ytXTT1'+#%%.!
+
+0:% 
+
+
+
+  (U<*iQ@G-"iTH6-$&  
+0   
+),!fmlDz0$jG:fH8nJ9mQ=qTEqI9tP@qM>mJ@jKAgK?Ӷ̰̯ɬˬƪ§æȧʩϮʫͬʩvwxwgt|u||}y{vyq^}we{os|ltj\zqcvhuk`WWS;<MV(FM!MO(SR0<<84Z_4V]/NN0-,/-CC'LH5?=,,-64#43B?-IL1FL.AC)<:$PO/Z]2W[2SW4QS0Y[3bd9eg:PS,Y_7`d=II-<8%;7%IG/EC-76#OO435MO5NP2WZ<JL-NW0PW4NU0SX7AC)ML8FE2?=-57#JQ4MU6;:%@:-CE1?@*NM5HI1=>'KM2KM7TTBb_RMN>NPAHJ;=A'FJ,KO5GL2EE.hgVQR9`aFRR9BG*GK0FJ.FN.EK,@F(EJ/GK0IN09<$24PW3OW3NU1MS3[[ZMMBKI=QMAYXQgmbrznzzfmqL9Jd.=CE|>:[4.dTMu|py}gw}hrv^mqWqt[zhuy|w}tzdyklu^~p{mr}sdfQjn[fjXmr`qudmp_swhlrbptdmr`kp_psbhkZ__NYXHZYGYWEkk[svgoqc_`Pij[kp_]_OaeShhYjl\mn^fgWdeV]]MRQ?[ZIghUijYhiYklZfgRaaMdeRnp`mp`fhWgiXacTcfYik_[ZObaWUTLVULIF=OKCw~ͫ̿ǺǸǸǷȶƶʶ̸ͺϼѼѾԽվ»t|z &# 1%.   
+   H$b&*   
+  T=7aD6~pquKrBbD9bC8V7/D*$=("@+)8%%2!6 ?(%I0*K0&n]8~y:iY9Y=3Z<1T9.L3+I3+G3-C0+?-*:)&3%#2#"1!!1!$0 #2"#5&%6''8'&8'&7((5&'."&&"')ìƥƶ]^_OR^FL[?DPLPVWY[WZXstsdbfYYahhkigkigjgdhcdgbcgTU]OQ]KP[VWaEENQPXPPVddgPOPq`]XCHWDGXFF[IJJ?C!NPMzW`Ufldb]^Y?AdHC}:8Adkwt~vacpYPYVBFXHHojdLD<~̰Vab\bcX_aY]\yvC"$,J58hhwxutdaz`\dcjirpƶrjƸplefjew}}~VUU89/67-%#0"     L4,G*   
+  +u[EvXI:tdTycPU9,F,"D- <*!C0(D(gH=L)A( H2(lUCr}bN|[GlSCr]Pr^Nr\M@+$.#"(   
+ $W<-^E3B.#dQF8,!.$'!!%!#  
+ eml<%ZE}TAb@.jXr\LpF8iH5pM<pL<mI<fE6`B5дбͰǨƩȩèŪͮͬԳӱϮѯǨzy~zzyx~rvo\g^NmcT}ufxfofU}wgWWR@@"AE FM"W\/KQ&OR-CBdd;ei;TV/.,+(A?&:4!2-"1.76!=9':;'FJ234IG-UU0ae6[^6NP,OP0]_:TZ0^b5^c5W]2W[2PO4(%KJ0UZ2<>&11EG001JK5HK.OP5HH0EH-FH+NQ3FL+QU6EB-E@1B?/>>(IN/OR5KH6?<+PS7PW5DJ+HL2>A&RX1EK(NS6KL2DC2@D,CF+12FI1IM0PT5;?#PT6@B(NP2FI,OS6>B)?D,;@%CH*LR1EK-@D*IP4++22!MQ3HP-9> JM3YYXGF;FE;IG=VXPaf]zvyvvwmQW^)4R#2Q->[\;EFF[^]CI][q|jov_qu`sxbjnVjoWjmYlr_psauyhv{f|~y|muygor]v|fknXbePtyduziu|llp_fhVosagkYrugzqy~qacRlm^abRegU`bM_`LXWFWVD]]MghXZ\HgiYlo^dfTb`Qmo`ko`beWcdV]^MYYG__L\]I_^MacScdU_aP`aO^^MdeU`aR^]N^_PddYZ\OSRHNH?w~Ϋ̿ɺƸƵǶǶȷ̸ͺκκҾӾӽԽվƫdz2.2
+!        
+i-2j'* 
+ !  U?9eE6eI<gSCpGxn>U9.E)#@(%_KFZMII>@(%&(6! H1+\H.~>wm:[B1Z=3Q7,K2+G2*C0*A-);(&3$#0 !* #"$)2$$7('6&&6''/"$''!ѸҪͼbbcGIQ6:HGIS^`aYZ\^]^^\^^Z^^]_``ca`e`addhogmsv|io{[cp[esT\jSV`HKUHHR_]eVXTǵj\YT>DR@CP?BSBB=4:bfbV`Qega|zhmkoqnZABaC?vm  "   BGUxa\hYIPrjiQNGYMDɨͬW`]chg⚩Y`a\]]kST;$/rVVyrrokjonsq֋rjmjpg҄mg͊pmgghbsajhs]tj  !
+    Yg_YmfXiaf|rfunxSUO  -(   @JEFQJJTMKXRS`X//) ::7
+'V;,T@,[K=teX{m`Q6*K.!F*;( B0)I1'cG:X0&O3'|hUrhK;mM=`G:lYMU@5{eVaH:6)$1'!0& $""T?1lQ=6(,!'  
+  
+  
+  
+ 0%!MTNfmk°jk]mL=lI4nI5cB1aD2fB/c@/gD3lJ9mJ:nL;_@-ӷͰ˰ǫǩ禝̫ҲҲέʩƧƨvtr~~zxtrrutrmTUNCD$JK*OR-SS,MQ'KS&LS'OQ)fh?UV3,(+'HI&QY,IL, $$?B&./*$:8#AA!`e>Y[4Y]4bh9U[/PR0SU4PS,UV.VS0TU0Y]6@@'-*XY7QU3DE-BB*;:%43#98"_aCXW?DE,BD-HH2HH.HI/KM0JJ/GE361$>9(@=)LJ6ID2KH695#IK6:;%CC-FL+JP+EL)IM-RU5SW::<%9;'@C.9>%>@*GH/?C(@E(88!GG/BC)OS4<?%GL2:>&8:$<>%IO0FK,<@#??*33?A)GM/7: LQ8abaqwnx~udg`hmgntmhoei_T{SJSCO%-D"&;.=[A5K85))j:<o;BmjjisZnt\s{hmpZfiSnr]nrakp`qtbrvbqu_wlVK@a[N|uzu{hjoZipXps[fcUkkXns^z~~rmmpZsubsvczoz{smpbhk\cfTacQkn]adSfhWdfUaeSaaOjkZeeT\ZH[[Hlqct{l}u|tz~pjk]YYIQN;SQ=RQ<TR>WVCYUEUSCWUEUSARP>UTCVTEXWHSRBPNAw~}Ψ̽ʺȹǵɷ˸̸̹κϻϻӽԽֿ׿žǞfon$"#!     y26z15
+    T@9fG:kJ=nQAueA{IN8+O87=+'$!"#&#
+  &3 L8(Ey:^L2Z=3T9-J2+F2+A,)<+(6$$0 "  !-!'%#2"%5&&3''1#%%'$214̲\]]XY_RR[UT[RQYWU^][b^^ddcg`_d``hgimnnnURWCBK8:D25>=@H>CKBCMAFPBHSEIUCHRpsm~sqU?EXEHYFG]KL,$+RTQ]WUmmMPRruqUCDaCAmd-"&8*59(112Dbl|s|VS\uqmKB>vٱΰX`^cfgW^_a\]_@D*<$^\fe~z|xniόjdtpig|s׉nh҈nkrrxwgfb_uUVwSUrSS_khk^zn 
+"%
+ %ylljmx! 
+R[T    ## 493sywuDSJ
+      8'!)$
+
+
+    =F@vgljwsXIpO;gC0cB0]J:zfB4d?/X8'a@/hF5aA/hJ8`A0ѵ̯ȫĪƨ¦¥ĦħɩǤɨЮЯί̭ɩ{wr]vwtvuql[[UHM'MO.PL/FB%IH%DIQX*EI!FH'/2 @A*W\0T^-W^1QV,BJ#`j9JP%QO2QO0^d7Wa2RU0SW2CJ Wa2PY-KL*XY5V[1]^6WT2SS2SV2UR5PO0V[6EG(HK-2171$JE1SK7YS>UV:<?%KL2IL1;;$CA,HF0FE061'4."85$JK2XU<RR7GE2EG/12?@+?C'EI(Zc9JQ-KO0LQ47<#;:(/0FH1EG/FG199#DF-66NP3FG+KM/=@&AC+<C(DG153"BE(=B%>C(:>%AD+BE,DH.35 <>+^^__d^]d[iofjogejeptnfOEUH\GB, N1;o<I212.mt/4:-;qobhiQfiVeaO^^H_aKccQotcjra~xzp|ouQE8hC:pN>{~z~vzxcLD62%#.$knY}zinqXknWloZ{lwk|~xt|mzuxoyotzkmr`hm^nrbqvggm\suf__Oz~nsvffgUqudfiXfiXegWkm]iiX\ZIYYGUS?MJ8QM=LI7NK;VSDMI;LI<MJ<HE6FB2IE7w~}Ы̾˻ɸȷʹʷͺμмнҾԽ־¾Ŀŀkpq 2,31-26.7
+   s-159
+22AF?tkov}$#T\S   ,"'
+zqqw|CSI"5 Z8(rG3vI2P4#%1& hVE~kS5&M0#U7*4B-$]G;H-$K-#uaUugt~ru`RVB5I;2([H=   
+   J5*eK9]PF       C.&   
+
+ 
+
+cgljtaPv@0}I;jK9eE3]@1I=.u`P`<-d@/V5%_>-b?,dA2fE5eG7jĻгϱͰȩȩťħħĨƩƩĥŦʪЮұѯѰԲϮʪɪǪ¨Ưovzw{~}x||{{q]]WPT,SW.NR,OM.QQ/PS-T[1S[-X^0ioDW\9DJ$OV+V[1W^4Zh2\k1Yd.]d2bj9_g9V_2QS0FD+IJ-?=&JK,W_1GJ%FG'PS+WX0^\;ZY4[Y6ML)KM*V\6QV5?@$D9(RB4K=-[K:UK2MJ0DE(LQ0KN/@@)@?(E?.HH21/95"@?%KJ0NI6A?(63"=>*AB+DD,AC'EE*Z`7HO)FK,CG+>@'?>(62%<;(@@+78$::(9:$89#==%@@(BC(67 12>B)FJ/67"?A'>C'9=$>@(=>#69 89#''GG6`ab^a]]aYX[TOPIfhc`d\eUM~ZN}~uK%0*#sd1-mVQcF<[I=V?3fWygVNP@hlXknYsyd|fYTFR2)gWfpw{x{|xn`E>) I2.~tfq{dsyb|w|clnTklUkoWmr[yox~m}twuziqwerxgeiYfiXkn]km[kl\feUhiYXXGTRBYVFXYKZ\L__PWWHcdVcdWbdT`aRKH:GC3IF7SSHKH;JD6KH<w~}Ъο̼˹̹͹ϼμϼнҾԾվŽʚTVW!%&!")!) 
+ 
+ p049@'    
+ J95ۂk~iIQh[=X>=E/.fca  !#PSULJLE35R@3PJgS>gH?[=1O3+G2+B-*:('0!!'(!'"'&!,,%-CBF2,2 )2"&5%%2#%+ 0!"$ݬͷbbb~{~z~VRW``dceh`ad\Z`TQXLKUSQXSNVNKS^^`dfhTW[hff@=C4-97/<60:KHKaZYaURk`iO=EYACOAE"xusp]SXkmPWU}]DHdJI]FE4&2C8CMAK%#?@Pjsmyq}t~vvuH@8}l޵گαZa``eeꡱRTThMO,3$pWW_EEwp֌wqrowuzyii}^\{YXtOPtPRvXXqomloprn{a^nQP_kgsiv#  
+ 4!,./+#T\Qu~t{)*! QXP  
+7,&) 
+iuk~zq{LRG,S6*Q0"W3"^EvL1V4$4#5%p[K{cS4$N2(\;,E&T<.T=1H/$U<1yyno]OwhUI]E2wZGR;,1!N:/,  
+
+
+   L5+kM:UF<       0   
+
+  
+zkfkitpF6pE3s4(yQAhI6iI9[G7mZK]7+]<,R3#bA.eD1eA0`?/aB5N7)ȸԹеѲαϭ˪Ʀʩť̬ѯԲѯѮϭ˪ʫĤĦx}zyj}wxt{vxymVVQII(JJ)JL,HJ(MM-WW7QS.JP'LQ%\f1Q]'W]2MR(T[0SZ2NV+NY,Q].dk=]g5S[/MP.KL.JG1@<(84!ED(JH+EB+@="UV4QQ/LL*WW4ON,UT4RT2PU2U[6FF)RF1XG7SC3XK7WK4XL8ID+EH(PU4=@ FG-MN0IN-HH-cc<]`5TS0NH2\X?C?,22"21RU6EF(MK.^c8QX3:=#MO51.2.!73$:7&85%<;)54$<='<;%B@-<:$=@)02AC-:;$EI-<@)++AB--.87$FI+AD)FJ/11GG3`abz{gkesysZ`Yc^S`RwZPh%#g !+&1.0.w*&|lc;=27%!?)%D0']M=C7+HLIaf_MRD{n~o~i:/#D;`R6_=5r^nxyo.)=>;E' XPrb{rsyb|oxsxaz|dtxbpr^mpZklWkmYv|eyip}m~out}iy~ls{m{~lu{jnq_abNbdRfgVcdShiZ_^PVTEcdThj_YYJRRBYYIPO@MN>RSEWVKPN?cdW\\RFA6KE8KH=v~}Ү̼κ̹ͺͺноҾԽº¼н<:=.',&%%"$ :6:1/4"" 
+n065:I29"
+C51ytaiFOvHdJBlTMbPKPHEXQQ0 $/"'FADJEGE78YB@k^BZatbVpUK_C5Q7-I3-@-+9&'/ 0!'/+075< %%)%*IJK*&&,!3$$5&%0"#-4!%PUSܲҽbcbkkmWRSzzica}yzutSORa`cmmnYWZXW\LJRRQZGGS[[_lhePKQ3+86/8B=DC@D[OWYKSP<?F:?"$/,,|uhh]RVsvW^]y]LP`NNVAA1$-9-7<,7&(/,8t{mzty~[TMPF>ͼԨ׬Ǭbij[aariiI'-+A&){wwpolkoccqnii|__XXsQPqPQxZZwurqmjza_lMNeEDaCAcHEpXUkf~zbkhphv"  7' 53.`cY6'" HMAr~~*-$ LSM#  
+0' ,
+&%! 3@;szVO>tYDu^U0"Q. ]:(c>#]CU4&<) E0&raP~hY;*I-"[;,L0 eL;bG9G-"xj~xndRD~^MDYG<M4$ofK7:(!I5*D1'  
+  
+  L5+qR=]OB      $"    
+
+ "zifjio`NoD2nH6{4*H=oS?mL:oRD^F>U5(jQAU8*a@.bB/`?-\>.X8,K)غѵϱʫͭȩ£ĥƦŤ̪̫ϮΪʩ¢¢q}xdzdhxwXXSBA&FA*KJ/LK.B?$BC$OP/OP0EG!\e4PY-IL*KO+SW1JM.OS1NV0LS,[b6?FUW7UV7IK,CB*2,HF.CA#EE*;4$74 98KK+NN.UZ2[d4IG)JK,IN)Z]5PP/TM5[K8\O9QG1RJ1\W:VW4SX-R\,RX/SY0Xa4Wa5QV.YZ2XU4TR3ZU8SO/C@(85&=;*KL275MJ-FH'LN024AC*33 .-;7(:5$>;)41<;'9;$76!@>,73"BC-..<=)::&CF*<@&&&<@*:;$:;(?@*HJ0<<#74!88'fhhbi^dkc|{xwjpheh^fYk\+"62.,{uyn' to' 4!qgyaUCF5EI8HH@=AAJOOtue}s_|lcZJxVIkWG?h<=|HJn4*}fh{bV+'50v%=7x}u}hylmr\or\kmWloYhkVmoYoq[dgOlnWqs[nrYw|dw~iv{fsyeotbhmXfgQuvfjnZgiVfgSa`M\[H[[JaaQ\]NVVGfgZ\]O[[MVTF[YINM=OM>JG9RPBRREQOD^]TIH<MI=v~}ү°ϾνͺϼκϼѾӾ־¼¿kyq;5;"*"(MQSEMN*"(   o0338T@F#(.!&# H75eVJnhWjRDu[;VHlXDnTKhSIaLFR=7B0->((<%%>((F,,J8$q_fldx`VgJ>U8.J4.@-+8%$1 !.,#5/1*#"% 5-2, $.!/#2"$3$$4%&1"$/%ײмeedlklPNPxtt|yupomrpqmkmigf^]^xxxtssVVZ45C00@*,<VV]w_XY2-;2,6F@IA@@ᛒkchrnvXIO;17EEAl`acY[vxXb_slmo|yVCFRBENEIE;A<3:=.4^[esyxzzJ?8uf׮֭֯ˬ{woarUR@(10$[A@kRRs_dz]__JKgQSsQRyUU|]\zw~}igv[XeKHdEAfHGoWTt^Z}xwB=9_jgmiz$"!   + +63||lykXG<+."8,$  KOH!%"
++<*-:#+tyyTRKK-%G*c:)uR;~dM^5&J*\6"^>U6P1"C-&C%xbPg^B0J-!_B1Y9(x]JaG6C-$F60\NFrcYr`U}k]UP@8Q:,ua<(C2* R?5 
+     
+F1%uR?^PA      '!%  
+
+   uf~fji}zkTAoF2iB/2&'$sNOeLLlNPU>H]J:sc[=/hG5cB0^@/K1#vaSG'ַӶЯӰЮͫåɩǦǦ¢¢âáyyx~xext`vr`~wTSR95"PK3NM0NQ.KO)PV/PV.RX2UZ4[_6EH)FF-HJ-LP/OV3AD%JN+LS.MQ1MN0;<LL-TX4>?!41FH+20?:%6/FD-98LJ.WY4Y]6\b5RR0^b8^e6XZ5VT7QL2VN4SL3UL5LD-PP.V_1QW+LR+GM#MR*JP&LW)Zf2`h5`^6XS0ea9^\1UT/=;"41"72 9:$HP*V]7AC(<<(OQ776$/,73&,&94&61$53#353165"CB-<<&B?-99$00/0:;&1.;<&CH-55%<<(79!32.)?=1egdyvs{qu}rwtyupvjsjZZ>-t_W4G^a)%# <6:70 T=4WKZNgXbXHeWGkVIaIBfMEZED[ROQ>0}XKwd*)yCFOQzpS;)pYoxzO=4S-%YIsbKA\Ymr|f~p[mu|gv{gpuamr_txdvxdswamnXegPmrZswbnt`~sikU^^JikWdgRcbPln^pscln^abQy|mqscstedeUabRghZSSEQQCacUPL>NJ=QOEHF9QRFQPEQPEv}}Ұ°онϼоϼмҾԾü¾ľοGNL@>B!+$)002@AD  &{1726]FL&/:!'  D31dF<mI=oI<mO<SM~RiQ@kPEhNF\@8N41E,*@&%<'M?'YSmyiXmcyaVhJ>X9/J3-A.+:''5$%1"#4%%<*(;)':*)6()7))9)+7()6''4%&5$"4%%/$1">>;ձѺ___\Z[TTTSSTUVWOQTEELUUZ__`jilLMUkmtsvyfhj[^e]_gOQZihhic_.(60(2PLQtspԱd^b}zbZb)!']_Z~h^_i\^{|Zfas~wqflx{wkowilpbhb\c|v|ZTMMA:Ƕ֪׭ְٰ۲۲ܰ֬δU55'8%+v`boVXyZ\I49F9?{z~zǹxslisTS`EB[<<`DBr[Vtmii_{tbbWhg]rohzypakhojz$ "  8%# *30{qoz|trigZJ7)N,aK;4#4&  A.#M1 - GC9u}kj^LV3'G%^7'pYcE2g;(E&V5&}V:uI+R1"<'O,!qU@bE0M.!M1&O/!z[FkL8A/, +#!^NCj\UB40H2+qXJ8$E6, YD;#        N6,yU@j[L     
+/!
+1#
+  
+ # 
+we{eki{{xu~rzt}~gO=pE4b6)$! m1MR:^bEVP:N[I7{_N],"_7(gB0^;+L.!j_KoWGյаҰϫޤĤ¢ɨǤ¢~hkpmv`WHmiUxXXTDC&MN-OR.Y]6T[0OV)S\/Ya7Y_:WY7PO42168PU5AF';:"<:!JL,25<="PP5GF*SU1MM+JL-85!-(/(83:6B@'B@'FG']c9UT0^`8cf=]\;[[:RR3HF-HE+JC+NG/H?(NN.HM%IM+IL*JK)GH+MM/NU+am-gt/dl,bc+nq7eh-mu3hq6^a7X]8FL+OZ2QY2JJ0?=)MN7)'/+75#1+ 83'4."51$1-1/41#63"><'1/3/!99&//53"*'GG16:"53%2.9:#--.,CA3dfeouix}qcg[v}qhZC`K=8KUKj^-TB5M?;9.;7%#'%=!DwKFNLgYyfo_rI;e>0m]WGW`JYZMB9{l|7+O=X,$ty{v]vy^t}gx|tL U2*Y3#_Lwdp_xr}h}geSeQu\u}hps^np]qwbfjWhkVmp\knYknYfhSfhUot`uyhhiWqsaprbt{lmrbx}mhlZaaNegWXXHVVCYXH^_O__PUTFPN@OMAXWKOOBee[CA4QQDSTKw~Բ´Ҿнннѽվ½ÿĿЖbhi##/%,$!&ipqEMO# ! #59/3W7<(   ?/-^D:lE9h/'xKC|jJZa\zkJdO7Y?/Q9,K7(XH0qg<UWf}^iala}bWhG=X70H0+A,*>*):''4$%4''9('>+)@,*=,+=-,;**7&%4%&4$$5%&3$', ,ֳкZ\\JMPILQFHNDCLHGQIGQLJSOJPPNTDGPV\ihmwrrvnijfac][W˻xq2+96.8PMQib_vnf^^UOV.%,w~qzcecbZYrmfehpuxTR[qqzywgclonwurnH@8tcׯ׬ԬدխѧҪҩ۵tgH.5"RHOXRYd]fQGMPKRLKRmmogkkpkoocfX>?Y<<dLI{lf~~ǫtwiij^dc[ki_zśyuajgolw##   :%% '.*}vypwmt25*cB/mF/:fF7U5"hD+sUQ5$H3(U5'gSjG2P,!K*c9(y[FcG3i:#L)Y6%zQ6mB'Z3"@(P/#lN9^<%I-M6*T4&[ChD., ) !J=3| ,#"C3.Z>/P3&A-$ O<3,
+    M5*y[EbVH
+    9'(8$
+  
+ $
+
+vaw`ebu{gQ>oF7K%&z!"q(2P3N\@MJ28X5'{1,r!p"h c!ZϴD-еӱΫ˫ʩʫťťĤģ䢣ĤĤģģŤ¡~}~hvdztfWXT;>PS/MN.NP0SY1S[0MT,QV/LP-FE)HH/NR2MR/AC&BC,432/LN.NS054??$;8!3-QS2AE%)"'!6-"<3&3) 60!86 KM.OR,V[4ae=`a<VS4ID)DC,=;)96$A;+;5$DA)EI)IO,;> HH*CG)57!22Zg+\l"cs+^i&ai+SZ"]a(^l$hx-jw0`q1LW)JU*V_5A?(A=-=:(+(.)RT9CA*4.!0+3.20 .,73&;7'DB..)96)55#*+('% 75"33@A+(%/0;=&45"?A.```kpcptgoujyzv{y~}u/(">Tc2.1M=?UFuh$1.%!52EDy;;xACJ@gQ2k\H~fUhjlxykof+":. $" 4*(K;2xy}cL>c$ D;v4)M Z'f=.UC^KhR{XTEv{|p{pzm|rqyfin[mp_ln]hlWln\{t{qkn[fgTcfRgiWmp`ijYegWnqcgiY^^L__ORRBSSDQOA\\MceYVYMim```WbaWVUKTQKv}|մŶҿѿѽҽԽſҿchi__cioq%!'""$~49-3\/3137  
+ 9((^E;h2+s&&u@:rVFYnre[SPOLW]p{\~cYi\fYx[ReD8W7/F/)?*)?+*>();)'6'&<*)@,*>+)=+*9((6&&8'%6%$6%$6%%3%(0$ֲϺZZ[AAHDCMECPKHRNKQKGPLHQLIRIHRYZ_k^_jSUaLPlVUkRQfTT[WTa[[2,8609A?BngeQLT~~{|RTVxvg]cw}}}xw}vuwJB<WKBĤ֪լөԬӬѪҫԬ8),& T=AnTVaLOSAD?034*-;5:UQSQQRpqpz{yqkk_ddYz{q̕ɹ~|tȟFF?`fenlw,% $  
+I."&&*({otmwqu8<4-J2$ [8'Q2tvV?L/"I3(V6&hVX9)S,T,a5!|]FyX>i='J&]9(xN0k@&Y5%;$[:-_@*}Y4S6(E+!e>,sN5Y;** + )YJ<r!>0,gK>I+6!+<*!J7, 
+   
+ N:-x_JkaT      >*4 ;%   
+
+, 
+te|ejh{||{}~|mZHfA2?'-q(-~n%"W6GW@KC/-]8'z0,p{"y{"syj]I԰ѰղͪȦǦ£Ť¢}}unfqVVT87JM,?A"HJ(JN(EJ%MP*OV,IL)LN-GH)@D$>A&73#41)$-+)'/+-+64!74$6-#-'74#)%/*&"%3* 3/ :9"AC%HJ)RX2W[4]]8aa=WQ43*1.85#"!0.;?!?C#CE':9!88!@B&@B!U\)XgQ\ Q\"Va#Xa&en1er.`n*cm/`m*gw3eq:V`2`g???&>:&JF&pkMHA.>B&HJ,><%;8%94 JL0=<(?;+0,,*2-!:9%.1HM.BF%>>!V[5Zd7V`5KP1DH,=F%=A*44%deezsmqaotdek_hmbsxoadZ ?Uf!8DFODeYwhk_FN&E;:6=CJOvK9u<~LM`[^V *&!6 <("#(dYuaT{}u[%:{"(#$YdUsv{W`R{mwauj{szrvoqvdrwegjYdfSSMF3*$A90baQ{ryrtchiU`bNjkXWUCUSCSTC\]NYZKYZJ_`Qjm_ztswjjnbgk]txl_aThj^giajkciicv}״Ʒ÷ӿӾս־ľ~::=HHKSUV`ab=@C" &n,2(,u@ET_] 
+/!Z@9f&#p'%xNDvWGuXJoXpj_[Y[_c{]zhV|`UgZaW{^QuVKgE:Z:/I.(:'%<((?+*>,*>,*=*)?++B-+@-+=+)<+*<))8&&5$#5$%5'). ղϹYY\@@JFEOFEOLKSIJPJHQHFNEEMKJTNLUn\^kJJjJIiGGiHGnXX[XXbccZW\2-6C?FHIGĻ~j`ZlbaFBK! /,-~}}}TUN1(-/$)) %%!)(%-.,4SU[ca\D96ԪժԯҫҫӬҬѧӫ733{pigXNkOEZ;6nZSwq~zz|ymQKBȎĵ;ʼ|}qQQIXVNFE<QMHU`_ktuFEA`hfrnz'%  
+ V5(2 "%yrqnrdqg(3d[N)*%I)dLlXkRCN1%@+ Z9'`KW5#U-P*d7"_H`A+c9&H'U2!hGyQ2U1"<%Y6&jC)q]d>,D'G,kD.lJ2L6'-##1(( 5'aL;|j &5(#{cU_A3]G<\E8A, ^H;
+
+ 
+  H6*oZFmgY!
+   2 Q7'D'=#   
+ . 
+|gyche{{}|~z|}}naOaC5XJOi$*|!q&#\8DM;<J8-dF6~F<nk s!nfN9'ӰέǥĤǥŤ£ģģ¢Ĥâ¢~qSSQ20>?!GI(DLW^-KQ&HK)SW0II)GG(PT.FG'3/3-;7"($+%$ -*;<$52 )&B?/)$1+0-'%%!#-$$*&><$RS2KP*MR-WV6ed@lgFaV@FB'ML,78BB(DG&AA%<;%62"/-HL#]i(^m$Xc%INNP$OR&OU$T\"NVOV%LO%PW&fv2iu5bj9Y_7_b8d{thG1)@>)OR1DJ%TW2UQ4OL0?;%<6'75"31!HG2U_4Wc2Wc1S^-X`1LS(JS'NX(U_0?H%KU2EI-66'aa`hk^cdWY\P_aUhi\k^>q6r9=2#<N`Iaz!",S<>|RDlZ@2.=' qarB7-.y "k>#ɫSw!w2jkNwqWR=6Se("3# 
+kJBYOpJ0x@at~j}t{x}pc\Z(#y\<2eZG~jZpjXX_Tvl}s}zv|irTD\PJ6,8+*RCC3"OI=[[Ggn[|mq_YYGWUCWUBbbQztw}p|srwkuykx}pw{mdfXhiZ]\M^]Ofi^ilbw|smtit}ضƸķտӿվ־ŕ236oux/13A@B""%/),V%*$(l$( 
+
+ 4"&S84a&%tB:nO@mNlJ}_T}eZ|j^}m[}pYqYyjSteSr`VyaY{`VcZ~aUzZLzZMxWKiF8[9/K/*8$#7$":('>,*A.+A.+C-*C.+A.,A-+@,*>+);'&6%%3$#7)+&RVQԱιZZ]CAJFCKLKQNNSKKQKJRJHQIHRCDLPPVpaa_BClMMnKLnLLtddUSSgghusv.(2LJOmnj̄zvshgٗ},&0FFDz~~tbi[abZ3-,4/0700:34;46{zB:3thYϫխׯӪӪҫخխԬԪݷ\O=ݾٮӱ¯ŶzzoOOF^]ULJBTQKkwuEDCZVRCA;QLH}^]W^gekkv  "U7*3 %)%xii~v?E= % 4"eWEZE5cA2gVqXH_C3G*;%Q/sM5l='[0 F"c7%gLjE.`7'E$[4#[@kC*V2$C,$T1"`8"aNR*=$R7(ZDeJO3%0%$:12&4$bM}k,;/->/'gM>Y>.6!8#% \I?"   "   G9,sePqm^    2 Z;+L-F&
+ 
+  
+ nuoeungliukY`@5D29h"'ul ^AAGA5E)V@2ok!l!w"~'%bDH?bMHŮϪǦǨä£ġɥģäģ¢{axitTSR'&BC)HN%NY'LU"UW-JK+RT2JK-DB+:7 FH'BF!><@>#-+$ /+6635<8($!HJ,1263::!# %"&!%( 5/ RR4VX/\`6KO&\a8bg8^a6WT/\]1ag4`g8OR*Y\5>? ??'96FJ"ft/fr&ISJOMP(;;====LN&=@U[,HP [e0fu/fr0_f5eg<eh8bj`^\;EE)^_A)+?DPU,XX6GC)WP=ecG^]?SS3W`1S_*QZ,JO(FH)AA)::HL*OV/FL+DI*HK+8:%`a`fh\^^Qf`B}LhZ/B-<<,FMX>TjDXs>OlA7BfXO62I0*fVt2)###!Y70ݼId_gebZ<oD9@=$ a-+\C<<~PKYCBʥ>˭=AKyy_fe_F*-x+0nyhtm`esaYK;VC3gtceo]u|hon\~{n|~s{tSI" V%!>2.P4,iKDmi[fmYmoZilYvtgcdRWVCXXEuzkymqbgkYyx~ofhYRSAPM<PL;RN?OK=WXKy}s~v|rx~عŹŷվ׿׿¾ĿַѸ7A>{JMN+(+ "T6<&,y#'ppDQN& :))I1.b=5pLAmL<VRz^OfXk[}gXw\Tv[Qt\Upiljltn^ZvYNx]S|^QyYI{[Nz[OiF;];0O2,<$"5#"9&$?-+A/-D2-F3-C0,D1-C.,A-+=*);&&5$%3##8), Աε[[\JHNMKPOMRGGMFFN=?GAAJ>=H<<HRQWqabdCFjIIhFGcDDugfmkiZY[,&2NMP]YVvڧ^T\ # ]aZ~owh[bVjqeuzrzv553/.21.02-/@:9yoϾدٲݶܵٲڴհհҮΩɧpymñͼuopd\^SSQIHC=p|{@?:^ZTGD=SOK‹VUQbaX]\TXUPTaaw~FD>^ecgziw     M3%7b`}e{p.(!" [ZSLA5aA/bHg9 dG8kTAfMrYF(8 U1!lA*n="a3S)W/iK4`<$]7(B%\6$mB*b8$R/#G,!T-iF3zukS6"sZ[>/1$!;0/:/-N8*bJw9%+!>0)k]F, K6-?(([F;/   
+
+I;/xp[|wh#    =&[:(Q/V1 !   "#  okkbccdjg|wehB5U)/kum$ C=3CN;O-"N6(ɳ_0$mu&#v" j(EF;\[[tƚħĦƥĤƦƤɦƤã}uTRQ*'89GH'RX0V]1YZ7ML-WZ5?@ D?+:5!@@"9=BI DI 783131! -*)&CB+NR-=A99 9:"!!("(#1,TQ.^c7cj9\c3gnAkuCluB`i3ir<ju@kv?ir>ee<RP3C@(53NT!\j cr*P[ NS$;?@B$=?55CE!IP#]e0FOPZ#_k,gu2oz<{zMkwxuPuvJqwDv}Pu|Ncj>\f6_i9ejAopKhh?mnIusQmkFRU,GK&GI)KI-CB'96@@&DD%SW/PX/IO+MU.GN/]^a]_Tpd@}4,~e!PaM!nGQA"CFJ>HNRap5Ic>TzF5:e:.T2*qa{*!};Ǯ^je?[c`_H{SfHC["97TRNET2/W\e`]5֯(ղ*v]#.>U2@\01F()0{cYteUZ[MSULneXh[MeUDXK;aC:ySI`NAaeMcjR|qcj85u;6a<2f1([Of[||n|u|ygt^}eTuzrtbkmYrvdtwgqsdlo`eiWgkYv{klrcz~tMI:QJ<QL:YUF]ZMuxm~}vx~ٸŹŹָո\kbrxx;57&%2#r(,!'e26()'" .?+.?,)aF<mJ=qQ=Uv]A{\TkX|nu]NuULoZR^dqS^rVJMgH=wXNxVKsQDgYh[mLA^<0S7/>(%4!!4"!=*)@-+E1.H4/H3/G3/C/,A,*<)'7$$7$$2#$:).ԲηZ[[EDKDDJCCJBBJ;;F??HWX^WW^UU^]\`l__cDGgGGiGHfIJi_\[[]~{|8/5@;@͖~ު!$' v}qnyg]eWfncpumqvmxyp_\ZJNO9=<'(@5;@26L=;J70isZ|hNsaGjZBfU@cS>eR>_M9_P@]O@fZMHDBVJEG;5ȹσzSPJFFEURMJHAJFAUTMih_`_XYVOvBA<XVPDB<QLGEB<]__Vc`O^X
+  I1$5 " oIYN#.[J?E1 X8&T0\Ae4V9(v]FmPnH.R0$>#K.kC0h4a5"N&X5#iM9\7$Y5$>'R3#Z6c;&S-P. ]8&ų®~|gtucVE^F;RC>XEBG1(T6(~-:2/#P=6bG8J7-M7,+R;0;%
+$    F9-xczvh$     A&d<)M-I)    #!   uqqiijdif|}~~xiE4e?/k-"sj$:?*wW=0T4'~j{e'e.$p=2^</msKMI5]nǬť¢ĢĤã˦ɤƣâ¢ã|zy{|rSSQ-)95!EA+NH0RN2]`9Z[6^^7^b7XX4NL*MO,0279DK FK8;,,#$7: 35(&7633@C$FI&.+!%.,ZY8[a1hp<bh8v{Ohp=gq;pyBlt@dn=kt@vyIfd7WS2:4!,(X\2W`%?FNT#LVAD!-/56JP%ENIN LT!_l,U]%_d1pw>w?yFyq|YquIqrIqqHloAopCah<jhGZW8a]?ad:_d8af:z{Sac:dg>]c9bg=df>de=[`7vyQkX^/Wb/Yb2emBbdfkgVg%t^9v*K=(JV@A0988UVTKOUW]d %eC8S.&\Os-$ &$v5*F]W6Md65;pY5V|L`D3nG<a54;>WVjEFcgPGyeOě:հ 8)7O1Lg,C`quq`aRdWvF=63@;C>JwJDƎqN@^`J`^IoC?xBDpG9XGgVsdbVk]}jvydkepnq`v{ihiVeeQhjZv{mptgoo`rxf}`cVWUGSSBXWFYXHfhY{zvw~ݻɺĻºüû½ľ㒑lJN_?E6 '^#+xi #==;  &@12aE=lJ=tVAy_EyXN~]Q}dSr`pYGqPFiNDTRa?GdMEOpTJmJ?mI<nMBqeznpSG_@3S91@,(2 /3 8&'A.-F1.H30G3/G2.B.+?*(:%&8#%6#((!ӱͶYZZ<=E:<E:<G<;H=<H=;I=;G@?ILJQd`atfd[>AgFFgGGkOPe^[][^PGK513ԋz]SSB=? !iofXaQhpd{t{jkbtqlMGH^WWaTVLRS6:9'&C9AH>ID>J?4@I51XI=´yUWV<;<?;:tukPJIVYUZXOee^SQJw?>6^[TFC=WUO<;6SOKIE?OKE!KF?[[[<==>>?"(#!1(&Y<-B%"7-#+ N2$^:(T2U-V2!E#S-V+[;'{_DyZ?Z5"Q3&>'G0$H%h:#Y7%F&L/ [D3R3$O2$2A+"B&[8$T1Y>,ŷŴˬycKqXF`L:IVJ\`QH,H82_OJm[Ux>1*$7k[L4(G3&3]B0cK=
+ !    F8.~kwk*     ; a5$R0 @(    %'  lllededhe~}|~pO=a>-a<+e^&FF1}WN>a:/eD3reF5Z<)^?/bA6}n[Zvk mkŧĢɥɥ˨ɨƣ}xTSR-%0+=<'VS6\Y9VY1bc:`e7go:^a/[\314*((%1399'''#<<(2368 +)51"><)13BD&<>"DD)*,+,-*AC'NQ.V[0bk6ls@hm?fp<eo9jv?ho=`d8bg9^}QopGWP?5."+)2/2/31321345TV-V_'W`(;<33LT%Yb,U[)nt=U\!]g,L\x|u~xpf~xY~xYsnMfb?`_6]]3]]6jjAce;\b4fi>^d5]d4`e9`c<[\^KB4qUi }}-"I4bK'dO.=:2fnp^VGLB>1"4#;PDTEODB:hQPLGO4%%<toUCV@R0#L((ORpKP}13?4ƴǸhxc-'vhg{uX.SoB&sH8mC0,*45l !K'&SIYPrYI\`KZ4)j79^YSNP_)s=.OC[KfQpjX~y[cZikWijWghV_`NhjX_`PghZsxiil^ij^\^QVVEXWDefUoqgv~|ۼʺźĻüýþɳϹoz4QA9B8Q94h63o36l,1t nrryŸĹB?>]?8iD8oO@oM@vUH|ZOz^O^ykKnOEnJ?iH;TFK@EcKGUlRGwVHaUz\Q|cY{cXjI>^?3U=4B.-5$$6##3 !4$%:()B/-F2/G2.F2/E0-A+*>*(:%%/ҲͶXY[::FA?L?=I@>I=<GA@J?=JA?L==HYSU\>>fEFdEFmXYhb\˹HGH廵OACQIINEFibb-+2]^Z|uz{qwneWQNfVWcZ\NAFibd^QRNTU022!#9)0<)1@-4>,36'(dYHy|t]_Yfmk=BB`dd_caqvwKNQ88:<;<{~sYVRmxxGHDVSKHFASQK<:3WSOJGBb_Z^\V@?<\XRFD?NJEYZZ͜IF?WVW?;6=83B?:B?;61,+*'/("\@.D%/T9%F/M1f:%G$O1I*E)J)K+X<%tV9hH3>%B+A-C.N1#P.N7%G+F/6#9 G-2 2L1$Y5#R1`L9Dzy\J<+4.(+#;#!-$#5(%XA7p`XB7  aNCK+qQ?bN=5 J-W4#B+ % 
+">0)}pdsi-     @$W/ I,>)! 
+
+ &)  ilk]dadhe~~wZFeC2oJ;[,L&VG2yF's}g^;-`>/^9*d>3[;*Etʧɦɧ˧Ţ{|~yTRNC=%3.IH,ZX:TR1MM,[W4\Y3fb@gc@=51,#$!)$" +$ '! (#)%0-CB);4#-'%"'#,%40ML,KM)_e8dm<krDio@ks?_g6mqDYY2ek?isBhr=oqC]T=dXJ}q^obKOD31-*&
+*(&& 209<./=:"FB&dc<wzOexxQ]Xoys~qktyx|i~hyoYkfJb]>liEuwLa]:_Y:da:fgDTUX2-+F3sXs!4o5r-uZ1.'_eYp97,%6,$,%"'! 6 q92HHL;QZo\YgZd=1RBFB8<8# ~K=`IBZZ t/*RGpZ÷cЮIЭ)ŝ>Y;~^AnWO]+-ON+(g2(yL@p]GV=.10o1:6J=K/+R6n__dV_iZGD6GB5NRHsxgsycxsvcpq^mnZZ[E\ZEZXHfgY]^Nqqajj[rwky^^NSQBPO@w}޿̼ǻļþž2NE&G>*H?2NE*J?5XG9M<M=7g30z--w+0uxzθX[WZ<8iE7kI:nL@rPDyWKy[N|dOrZHjH?hF9eB4YB:ON^QIQeJ?fI?[>5\>6bB6dD7^?3V7/J3->++>++?-,;*)5&%8()?*)C.,G2.F1-E0,@,)=*(:%%$ճζ[[\DDM@?JA@K@>KA>L??H@@J>=I89CSONZ<;eDGcFFqdcr_[Y~{{f]XNEHMFI[VVyssYTS}"NMQPMLia]9/1s]YOFIn[_oegH:=nhgNDFQUU677 ,%,@4<E9AI8>=3:E9<|~tcV_chlmryzGKMjmnHLM336?>AkkbOKG>=9PLHMJE]ZWlvtFB;^YSKHCb`\rrs?=8]YSFD>MHEY][MHBXXY-.->=;ZVQKD>I?5aSBiVChN;W>)YA,aC.[A-R9'V8%B(G.G-D.N2!R1X;&gI0V:*<'@-G3"C1"F4&A.!M8'L4N8(Q?3J4&dL;nWEr\NW@5`H8_C2aM>J<0dSF{gܽhlXIG<ELCZYN.! "[D;\9.wTDcRwVFeYvSKfJBhOBH-!lJ@mM@S</,#( !?1)xh\xh]+   <%U5#G,<*   
+ $#  N_XSi_ejgt\FqJ<]F<eXRT=/_A,ynZ[4&S2%X7(_=.c?0yY Wêå¥ġͩƢà¡vXVSUK0OG*QF,`R<G9&OA/UE1fW?_N;m^KobMQD3WJ:PF3NC0WL<UJ;NF9LB5G?4G?2LC7^TF_SF^SCpgTf\IXL:g`M]UA`WBicFfbAooK^_;[]9\^8][9PM,FC%GC'[V9ae;`i7o|CuwHtYybtcKSC-:0 D;.D</{p_wWvoffJ~|_rf|srf~g|{q|qpzbmdKj]LxjnZM|mZ\OAVUW&!"G3|^v64.dj[*h'\J!7+
+  )Sax+r4yhkmnSOmja9*O-"g<^FX"h(%&'o"ʧzks]v®ǹʺѮP%|clab-*GENMiMJh_{/)q)'*,"!$!\PB3h>*aF:`PG9$ dGATG>dgXsvelp_qvhznv|igiWnq`qtc_^IWUBZZH\\I[ZG`bPopclrcqvfZZK^\Qw}ܿͽǻƽſռEiY)KA'J?2PD.NA,L@-M@*G<,PC)I>>A9Z-&q&&qINmik[`]U:6gB5jG;mI?pPBvTIvVKwWJpOBjH:gF9bB6aC8jXTm[SkRFfMDY>8R92S<3U;2O2,I/-@,*. (2 6$$7'&9)(:))@.,D/+D/+C.,?,);'&9$$$ұ̳^]_[Y_YY_TSZKISDBNCBK@AH?>H>?HXSPп^DD`BC`DDj_^įQJKNDG[SWmfg{x{xx!SSW,'/oad<14sqOEFdOOnce?15qjiD;?]ca%&( %-$+8.5:-2516<18JD>pxuiljnusDIJdghsyrEGJ*'+::;|{xbcZOKG{EDBXTOLID_\Y҅DA;\[ULIBb`[A@;[VQGC?NIFJDA\\\TPMJE@HA;F?7C9.>2&A5)G:0:*X@+W@+XD5N6'E1!9$4"05$7';$V:$M2>+7%@-<,OA7B4'=+>-D4&?-!:-".lXDkT?<&/$-C([?2Q91H4-7(!{hyeRNO@>?6=8+0#%)+}bSU6+bE;mKD\Z=9,!WLE@-&VB9lWGy[KR9,N?2ZB5ZA4 3%xbTVC6"  
+4"K0#A%A-#   (  Va]Sd_ejg}~gvR@?-(RYY^LCbE/¥r`KV0$L7'yW6&c<2cB$WƬŢ  zw\WU~dL~`v\KmUCgP?|fVm[xbiizpW{oV}e{yeza{tZ~fugj}`x]i_w{}z|U~xJzQtSodHG<%G<&MM.RN0@7";-!@2%D:'WM3aa8qyJwwSldMm|v_ydtwjT{p\myRp}rYwnR}}^fs[|wycbnu~lh~tlfwg~lvctpUTV!  M8ao"$1<3T`\)=zH>&  $/:EyjsY+iPiC~N*tH+[8"p8^@"pVPPE3.t/3P#(GKq>Dhhjxhg_RQ|l^ɾoldDm<|kUPʽkmhzBHEKfPUj}()'' ,.q'^D/gQD<.H;{KC]4-qei^[ZOYXFZZIorewbbQppasui]\J[ZEYVCTR?WWG`_O]]MfgVik[y}pbdYw}ܿʼƾǿĿbr&E<(J@*NB3QC0OA+LB0OB=XG2G:2G=0C;I82yI;r2'o#["'t~tM75b>4jF9kI<nN@qODsSHpQFlK@iG:eB6eD8jK@{bW~f[|dWz^RzaTx_RdKBX>8M50A,)3 6&&=-+8'&;))>-,9((:((@+*B.+A-*?+)=)':&$7$$2/,Ӳͳ[Z[?<DEBHZY]ecgRQY`agTUV`_b[Z]WOM̻cJJdDDdIK[VSѺ®VRSvvh`_rpk¹! "NPV0)0n^a?13b`NCEWKMmce9/2ukk@7:dih#%) %2'-@5:=/5;5:9,20,'ʳW[ZknmMMO]dfAEG`de@DF*&+<;=df\NHFDC?YTPMIGeb^s~|EB<ZWRLGC`]X?=9YVQFB=MHCLXXxzWVPSTT14-15.43-:718732/*2.)+' 5+"9+D7*7* ;,"N;.8*-!0'3'7)6&M7&G3!5&4%7)!:0)@:3:0'4'.&6+#8+#7,$/"8(=,!9&4'A.$}^O^PuVHQ5+YC@XC=|`Nt[GF9VMF<. 4#,$.%=*eP@cO?I;QI*!5)K=@2<2O.&@) 7%M6)mL:\<-uQCJ-#6(**gPC\K>%   
+.@-%<'B-#   
+*! 
+#UTUUXWfjg~mWEH2&OQPkUZlM>ũdJ6J'jW6*[4*qU$Nªy}uZUSvrU=jO;S9)O5qXN:'ZG6jZEzd{rZ{coxh_KjcIsoKkeAwlSuiR{tU]Y0~zPyWxqK`b~^t~vLwNz^eR@cRDm\LB3&2&7//'<,$B1(H6-K9+i^I϶~ѻ}{cvp\ndQg^Mk_Km^Km^Kt]{YnudDv]~oVtXijq_pbrdwlqnxzWfhBxuVxfz^dohz[}Xaa9brsj{|UTV$ # "S>tVj0>1NZZ@gM D(pZ)9)6(=.XDtXk(t'/CIQ]XH66>iK@OGt:AW-5Z-7A ,_5;qRYtLSz@EA=\S>=*.aD_(wl.-01]AHͯ}zb$%~!"$dB~c)3%&)<;Bg*#fYM0$SA4g\LTTF]ZMgk]qvfXXJik`in`jk^ceR]]J\\H\[I^]MghXeeT__NcdV`cXw~}ݿ̾ȼƾſƾFiZ%B;*LA/WF2SA2TE,TG/OB;MBC@7C92Z30U--},+9(c9%h''cKD/0]:/gC5jH:mK?oLBmNCmNDiI?cC9fE9hI=mRFw]Q{bV}dY}cY~dYx`TsYMeH?\A6dMCN6/D1-A/+A.,A/-A,+<,*<+*>*(?,*@,*>)';'&9$%7$%JOHԲ̴[[\=<GDDOA@KA@HHHQOOUTSWPOSJHNTNOeMMeCDhQSc_Zwutpng˩¼#!#LJO0+.gZ\A69heQGHYKLk``<.2xom;/0hnj')*"!*$'3&,6(-7)/6)26+250*θV\ZmrqTVV_ggBEGadechf@AC,),679_`WMIHED@YTOKIEgc`uD@:WUOHD?^ZV[[UXWPYYSQNJБgd`UYX6LF:RI4@96B<,7006/67433.21+5:315/30-550::410*-+$30)50(1+ <5+<1%F8+>3':-$>3-:0';2,:4.@:172(91&8.#3(7,%;1+<2+?60?2,A8./",ucSx`NhL>oaiYcE/ueRQ=1cL?O9,2% # ~rn8+>3=1&?4PEQHD8s -$m2*d@8S;/pO?wOEqI<=!')A+9'"   
+,9+$7&:' #  "DBDLLMfie~}q~^\QPLJRRR\qo=?}ct\:)J/V>0]7+V:'WRáá~|`ZXsYErXN2tYt_HK8+H:0:*S?.vsWotdGp}t]qjJquq|}qN{aukhyZrt|fziTtdSXG0_S@^TA9/2';*=+0G7*QB2zt^ʶӼʲcbP_[I`YHxeym[o`JhU7~zd}pXzcqU|deczsNY[txMhkBoqMdgBSU0SU.moInsO`l[{TpjEqnFfj?ag:quJ\||V}zX}UVW% &"% %X@b&YG%HHD|7$u+9Ģ0A)8'A.O:oVg"Q3X;"S7P:&
+MM AE~78o-2GW
+`x20EDIJMNFI26=4|WCwʯaZ" yY&qʧBA_TU74]PqFB'/3.0;<:8B`C3mG8O7(ON@RQCccVxsw}kuzk~nqgbeU``OcbQb`ObaPmm^bcScdTij\`_Tw~޿̾ȽǾſǿ٭WZS,E</LA)PC&Q?BXIDA:EMDR73f.,z&)x')#!% K3pQ-b("n"%_"J!{5"$W5.fB5kH9lJ?mL@oNDjKBhJ@`D9hKAhL?lMBoOFy]Sz`Vy]Qx^Tt[OqXMmRI[B8dLBO80C/+A/,A.,B0-A/-@.+<+(:)(;'(<(':'%9%%5!"2 "Ҳ̴XY[>>H>=GCAKDDNJKRLJQDBJ@>HFFLUNNlXWdFJ_FFlZUūxxuwxrǢÒ(&'JIL5/3gY[E9=~dcSIK`PSmdeF<;ebZb`Vnui999::92020-./+./)--'+,(+H=7̴X]\osrTWXajjAEH_bdnsrrvv@AD+)+557]]VKGFB?:WTNOMIidaږ`^WccYcbZ_ZV qqi}tqgli^vrf}xoW_^KqeFi^LpcHm`If\BXOBUL?UK@WO>WO3D<CQLH]VKcZJ^WEYPJ[RGXOGSL?KD;@=:;9CDA<=9:9474.:7255042+73*94,=716/'5,&/*#:5/6/+=41A?9LJD:4/C6+m[nWij±UB8t\PzQBvN@L@[NeUgV4+#.$QE^QdTQD~q.!/$=2j?5@0(dQFlXzurpo<-"2% 5&/!5( !3-0A=>eid|~~vlx~yILNODFYjL`b@.zmW]7(YC0|j[3'R0"Vts|yzVPLmW[@*aw^FSB4si[g^O}rdzk[\H4fP6rg[ExnZsfX>p_G}bpbHZM1|bs\hU>yYsPr`?oSiX<{b{oOthGs~~Y{S_uXy]vgL`P:j\EncMmfOtoZpm^om\~y}{zhkkiWgdT~zjsm]rhZi]MaRE{bu]rw\s`Ht^S4llFUU-PS.bcC\_AfkLheEgg=di@opProQzxYvsrGjn>nrBfj<\`6OR*`h:dj;{{TpoSRT(%#.*(/+,-('+ cH$u#@- 7-$Ai!v3+r*3z/Aǥ9ҭ;ʦ(Ƣ+:tQ|]*2=Kp!*<B|mvanyzedTT U X<8GFyLHhRLxeanQEifx54z&NUi^^T44TOwi}lULcTj'/155H
+7!]5*d=.gP@ED7OPCNL@hi_w]`Rnrcik^Z[L^_PYYKacVceWll]eeV^^Qy~̾ʽƾǾDŽLOg/05I:%I</PBCK@_62"'#&"'!'!'%#(!!%Z>nV&_5#m'*`[ LJ.!:))E+)c@4iH<kJ?kL@mNDeH>aD9aD9aD9`B6cF;oUKrYNrWMtUKqSIkRHiOFeMDZA9]G>I3/=*(<**<-+A0->,*;)(:*)5%&2$&6$%7$$7##6"$#Ҷͷ[[\KITOMWNKRKJPGEMLJPIGOPMWYWZIBA~wmZY_EL[ACS87Ķк͹rrk~|v/-0JJK6/3m_`F=?wdbVROYQLosi|u}v}wci_88899:887788788556343544UOFǰZb`nqrdgirz|?DF_dc<<:B<8><<\[TKFCcb\hg]ljbnjdnkbȺ~}szsjnf|øĵͱXb`RoM~lO{kCi[VymOqcMreMxhMvgQvgYoQyjRxjLufNvhMrfIk^?[Q=UMF\SJaYGYQ@PHIYQBOFBMF9E=9B:>D<9=9=B@IVOCNEFHBCFAFLGLTPJQLKUOJRKHNHIMFbWHvqdJ̴_.#RIz6)REbT`R:.703)TISDdUte}ȳλuvfsкënyg 1($2% -!3*#! ##;45LEFghd}{ohmpRCIpCT\:Eg~:?vhOn_IW1#{kVm]JX5&l\H`8~~vlo~nkhD3%PA/D/G/xeSd]HzbwkTrdPYJ5zhTo]IvdO`K3u^Gwap{cj`o_=jMsaG~pVg|Ur}Z\rr@wo@wL]mWwRueBn[?o_GjyqXzaxrZxv`|iso\nq~~kywemkYqr^pqZedPxsclkXqp^_]Lb]PlfXlaPuiYgYEfY=dU?vkZukFumJqiJUN5G='v`yjQqkOtuTvyVrtMfgEbcD\\>igF`c=`e8[a1Z_2TV1GF'X]4quJusQwwXXZA>A<;=KILC>A0,,7)}b%y]8$H8(k:6s)!#r5à&&Ǣ)¤%ɦ%ά=8>%D% a$lI?ZBV<O0O1M1Q8\UyGId)*YQHi7r4cE-p_a) swj j?۸DƗ'Z)tI>xD8ZNeSZ3%7@&&oG;|,1276nVSI.'RIs_O^U*KG<MLCSSIRTJ~puhVTFXTFQRDgk_hl^v{p}psjmpccdTcdTdfYz;ʼƿՙtr%#'=E<2OBL?8|()$$ %%)!%'***!"(*{{, M2`@#\(&h ]N :-+.U71eD7jI>kK@iJ@bF;X<3S82U<3`G>aKBiRIjPEjOEkNEhMBfLBcI>_D;S81W@8D/+8(&6'&:)(9*(9)(6''7'(/ $- 5""7"#7"#6"#+&$Ӷθ\[\IGNMJRTQXTRVNMQTRXHDJA?JIHNnc[ƲxucKNkSUp_]{xt|{XY]a\Whdb637CDDKFDVMHjideg[vwyy|tx`d]99:99:889888789556344455[UK̯und°®rj\ψ_]Z^\TɺʥҾ˾˽ɿrsnɳXb`VqQ}lUqVpUykRvhRwjQviTwlRuhMteRyiLscSvhTxjSyjTuiPocRuhRuhRwiPtfRtgLk_PobTrcMk^YxlTteVqdWrgTtgZxiQh]Rh]Vm`OfXUmaOh\WrcRj^Tg[^]LPF0jcNò§fV]Pqdo`vRBzhvf~ma:1A5I;UJ}ĸɼŴƸvnW~aQo_vRAx~l0+#-2.)*#+)!64,2/(00(#")*&$&!%$!'$#")$#@9<gie~~~^lO[T6=Ie;XQrVte=.l]GM+ZF3ZA.purZVT]P?neTkdUyaweNtdNvcLtlwcye|gueOk\GvgL^a~kme?}uM|SrNz|Yqh?sLwO~VyV_O,qcDn`Co^GteQohRn}|f~rusbol[liXqo[uq`pqnZ~zhqn\mm[o|zhsgfVd_Qi`PndVWLA^PBh[CuiLQ@.C6,1$K;,ubhlmKmoJwwNijC\\9ac=Z]6[`8_d:Z\4XX4ED%Z[:VY4ihGehyRRT%$%*((.--?>@JIKEDG,&"U@#hL!9%K<%iW5o sjww#bK s!#"#ʦ0)ez18Ȣ4͞742{3y,r vM_0L(m4h2$yJB}\TnO+ڲH̲?B!fZVM"& /)g2ɣ-͠-c4S, H)hTwN':"7!Q*"W%+-*&#62TQG,*mMÛ,)NyX^_Pcg]LMEXVIRO@SQDYXL\]PTVJadX}~zcgY~smpemnc^aTkpcz̺Ƚȿо3<$'T86X63 % !'#)$)%*%*#&!!*+% $#(~q4)KbW!$8 !A)'*, @('Y:1cC8gH=eG<bD:X;4H1-Q>:Q=7VD>bKCcKC`G?dH@gMEhOG`E<Z@8R:3U>9?,)6&%3%$3&&4%&4%%4$&2$%-"."5#$8#$6"#2"uxtҸи[[[GFMECLUSYMKQJIOJKPABHBBLSRW~obfSZjX]VLSACJghm~bcfztphc_a[ZA<CFFC|yryx}v~xyyz{[aY99:99:99:99:89;667454566`YN޶ٰܴددӪҧҨͥ͢Ҧ΢˥odV˻ķ´̾»}ʳWa_VrS~nSyjY}nX|oQwhU{mV{lWykVynV~nT{kV|mTzjT}mO|kMxhGobOzjYrY}mZ~oW|nOxhR{kVykX|mRvdWzjVzjY|lZ|lZyhZwdXsbZvdYscWtc[{jXyg\}lYufV]MUJ8tjUʾʷtd[PL@OB]P˺˽Ź¨ʮ§Ů¬]Klp}t`8G=0;06>48?7=A82:18>5*1+:G@2>5*2+)1,.51(,(+-*::8ghdd^hjXiE]RqYtGsW<D]O8V>,Q6%}y{}]ZVylTi]EkdN__LgbOZN9rcLv{paKu[jo[EqaIfr}[~`jbEȩѯriDme=bX2f~pS~cmPojX?nhZ@m`OobMtjSqgPvlWogRso[~{frp^utatq^pnUsqZjhSxxd~|grwsbwsbc_Mqtour^hdR|zhxscwn`e^Q{rdi\NaSFTC2PA4I>3zoan_Jj[FvgNic@rpHik@^`6Z\/UY0ZZ0X\0_c:XX5MK,]`C]cBacCeeFbeBinHcuRRT" /.00.0:323+"-"0#3)"D<1hJf!tS ~_dK]Ie (sS v#ģ7Ť( '1+ȥ Ү$Ӱ!Я&ί0˩;6v/Wy6nFkHZ;?' _?2nF/_Q(,l"X@;Yy>L3JEINHEW8r@L&37JWA<2{6xL($9:c,/rb8%(@k`8TQBTUJPPCY[NSQE`bSgj^^_RbcUhi\^^L\ZIhhY``QffZ^^Q{̼ɽȾѪ}{'$%z#(!%%&,&+"( (#(&*,.$'"&"'" &#*kOL""8*)%5///'9'# #&H0+X=2`C8bD:bE;[@7O93J93E43H:7H72N94T>;W@;]FA[E?YC=VA;L73H30:('3%%2#$1 #1!#/ #0#-!, 2"#4"#5#"5!$ԸϸXYZ==FEFMQPUYW[MLPLMORRVWUZPLPzmԳLCKQJPONTKNWUX`\_cosv}tspnhHBD #@B?}w~vy}v{y~w}u|UYQ:;;99:88988999:78856779:`XN׬ԩ׭֯ҫӬѨϪϩӫΦЭk`Uǽ˱Ī÷ԽĆůYb_V}oQxhX|nQvhPzkT}nOziNvfV{mY}oV~lMxgP{kW}m]rZpSykW|nZ~pX|nX|mX|kY~pZrX|oVzlT{lTvgUueY|lT{kVzkZ{kVwgWwgWzi[ziTtaRuaOtaX|gUzhAWJNTEbZFyc{tpwlSfXBlW|eяxמĵ{yqp^qm\ytbzsc|ir}l~xe|gwbPfVobP{r_ulZKQA7G=:JB@NFARH;L@7G==PF@WL8LA;QE?THCTI<LAJYOK[PhifFhMzSxKZKhO|b|}gl}iWU:,r_\ZsjSodJxaitjUzr\rZA1xqfJsVt[ua{Xke8|VzhKo{fHt{]}vX~qtjW>eT=cN9TB.aP9rcLpeQ|rXg]S=qfPqjSf`MgcMtpYjfPsnWtnRhaIe]Gd[CjnhTngRplXc^Mjuqz}zj{xgOI:mfWaYG|whfZK~pH8+@0#ydWI2eX>zlQl}nSOE(]]6cc8YU-ZZ0_c9X]4\f9uzUksLlrQsvW_eAZ`=cgBinFptUsy]SRT.*'733535503%!""('03';*XAQ:\GS?xYvxoPpS3 4rhDJ"ɫ4ӱ(ִ(ү)Ѯ)ѱ+Ѳ)ͮ(ʪ,ɠ9zTU5T6X;(dA-N)aQ2.85s2.}q{l}~syLGQ) 1L(W.C!1BE;LB'y>{l\50r,.HIrEBfQrHF4˥(Ы-<]ZAceaUVHXXLSTGVTDOL>YUFPN?[ZKQO@\\J[ZI]]Nrtlz˼ǽǿȿſ۲$3'&&)%' )% (!(&*$&&)*,"$$* & $u#'S/""&:4(C<#0);1')  /G0+V=3]@6[@7ZA8W?6Q>6O?9D53RDCWDDH559$$6#$4!"8&%?*)@.-4!$--"* *$%(-!. 2! 3!!4 #(ӷϸ]]]_]aa`aPPPQOR`acoooYX\GCM?;BrnuisnbIOU<>]NOZ[\mlozxzruvxu{ws^WXXTUsmkXORMJPGFC}yyzyyz~w~MRL:;;;<<;<<99:::;9:9668668g_T޸֮կӭկӭ̨ϩϩѪѫϩ֯g\QɼȥóķȽY`^U|nV|mW|kUykVzlQwhNyjR|mZ}oWyj[{l_pUykUzkY{kVwhWsdWufXwiZzlQwhX{jX~kX{lX{kZ{lWykV{kZ~n]oU~lZp\}kVyiTzjX~lX~j]r]o`l`l]pTzga~nTYHh`Lpl`Pnl~gZP;xoVzs\yb¨s~ucmfTjhUnn_moaafWdh[ik^hjZghYedV][OifZ|xju|dRlVHQSGOM=egVhub^lZE]NF_OBXJLhXHdTEbQGgVIgVGcR?VGDYIG\JMcRMdTgge}}|rjLsUX8IBLP{Opuwn[gM>~h}{zr~a`]peQuiPwjT}oYkdUBWD3iWGoZFtV̫w[leM|vW|zP|rLsb=iZ7K9#s^IX?+`A/w^GpYTC0{fQtWubG}mRq`HeWCxmYhZGsjSvmSftkSy`xmUrfNlfSqkW}hzhjb]Ge]D\WEto]pjVplVrq_pldTjbSf[KaQ?yco^It_v]~nTjsUI/SF1VI6edCaj;OW1T[4elCLU']e?\bAagAda>hcBgeB{|YosTTTV,)&2+*'##*&'0-.1--83+<77<9=GBD@3 XD;+A-mS%G-jQ*pq{)A? ˧.Я"Ϋ%ͫ)ͭ+ϭ,ִ*մ)Ѱ,ϰ/ʩ1=}]#T4pI5W+nC5ug縮׮ljeX]OCHjOKV.s/G! 6 @?;O= <3,whZ^S|-+a:7ucVmB4uLY8Ѭֱ7YWLTUL^_RWVIOM@JG9NI<KH>QQEPN?TRBRQCgfXnpf{̾ȿȿݙfg('&%,(%'**")")&) $%''*%)%%)%*y $_$&" 1,-HA(B:*+%;)  +A-)P92T<5YA8U?6T@7XD<\IA`KBaIC_HErZZY@AI33<()9')+"$(*!(-!) -"-0 "0 "2!/ STQҵ͵___MKNVTXFDJQRUQOQWVYA=D?;C95><8A# +bKN[?C]ORVW[olnqnmxy|ytsliklihVOPwqp}vLCDOOQHID~x}}xnuj]cXMTITWOEGC>>>#"$##%$$'$&'&(''(*)*e\OׯױկڳҫЩΧϩӫΨΥٱ`SJϿŽƹķžzr~|oywjwwkY`]XymWwjZyj[yiVvgZwkXwhZxi\{k[zmZwhVsdPscSyhSvhZ{mXyk\~o\oat]t^qX}nQxhUzk[{l]yj[udZud\xgYvfXvf^yi\vc]|iZ{i[k[zhXyh\ygWq_WyeU}fRu_\o]hhWYTCQK;mcTqhXofSvq_\VCSO;?;,_]OGH7UUEOMBkh[feThj[dfWmn_a`Qml]tudywgzyhxwfxwfzxhom[k]N`fWul^S`P@^NamZ_nYPgSKgTJkUKnWIiVJjVFeQHcPKcRIcQE]KJaPTiYffd{}}~RwVMpGZn;1\tR|_wqtrrZJkVGxv}~~jhekaKi[JRC2TD/paHz_lY@ufY[D0nT=RF)qeGqlJg}vhNjYD}fI7(K.lN8gW;~lSRA-\M6cVA\O9n]Gj^Jyq[rmVl~y`lgTmyt`}ye~h}|c}{duͷrn]plVnwyxg~kvu]ut]s|y~lzvbh_LbUFbTGOA5`O<\K8zeaUEP@0C6'znbPH2orLP[-Xa8ekFZ_2]b6T[2[f;^j:}~ZllKppKoqNosTSRT#"0/2.*)G>,*&!957@=>A92K?0D@Aigi<75F>7J9 X>jM}]kr}# ƣ#ţţ#Ȧ%Ϯ*Ԯ,ֶ0ظ2Բ-Ӱ+Э(ˬ13U(_ `/&zi~qxlmMCFUCGe_yiR>ˢ:]3X0R/2B_n! (2\RY,&H YK}XH9̦=/98ʧ%ͪ+fW*POM__UXYPOMDQNBMJ?MMCOOETTHUTEWVHSRDYUHz̿ȿȿċ29)%(&&&((!,+"*&%,',"&|"%&*!&%)#(|#%_)&%)=7-H<*"@4&-
+  *=+)L62Q<5R@7T@7_HAjRFmSGkPF]A<N45]>?kHG[99P56@+.?*->*-8&*,",!0 !1!"0 "--/ *MOJҵ͵]^_YZ_NLT31<87@B@FHDJHDJRMS838<9C%"*bOQ[AF\NRNPTolmsnlzv~vontnlzOKKVTXILG}wolseV[QOSJUWOcc[_\Umh_^ZOPSM432+%&3**0((0)*0)*,'(*%'f[LװٲײشΨԮϪ˨ʧʧվղYOGȸ|}}oxvjqpcrpdttizxkt}õǺZ_]\ykWwhXvgTqcWrdXvf[{l]|m]{l^}l^yk]|l^oX{j\~oX}mZrS}lY~m]o]o\oW{kSzi\}oXwg[yf[xg^}l_xi`xi^{k_yi^wf^yia}m[yhZue[tdSo_Po]Pr^WwcKjURn^WcUVUJUTHXUHYVHebTXVGSRDbaPwubxvfkhZuq`ywgyygxxeyzgttbstbrq_ut`tt`zyfwsaurawtaxufxr^xdKxWDk`T]fX56*RhVJiTSm[ivcmzdSnYPkWPiUPjXZuaVq_OeTF]LKfSNhWSl[Vo^fgc}}~WzSSwLaybVw_{xiq}igV~i~~}aa^y}sbndQxwcJr`KdQ<YM=iYE{kU[O5ɿj\K4q]Ft_Iu]j[HO=+Q/[8$yhSgZGg[KndOaTAmaMumYyhtx{{uavnXwoYuqYmxua~j~iuywckhRhdMqnVvt[jjwtbsp}{hwuf{~zd~|gw~k{vfmeUbYJi`QjaRk^Nj]MN>08({k]^OCE<.zoCysCTU4HK,ad?TT-TW)fk?]d6ho>^e<hqLgpKbcdESTU#!#" %$&" B:**&213;883002.0><?%"$XWYmprcdfTQND8.D0W<mM`lx Ƥ$ǥ Ь/ϱ0մ-ѱ)ִ)յ+ձ+ճ&֯;e:7 "eZbIoM8zI-`CfGhPyWϠ.Ӭ"e? Y8B( [  fj?:rauapV|\vY\2!'Ϯ%ѯ%(+ǥ4iW!EB?FB4JG:IF;EB4LH=WVNTQJQPFSRHOMBKH:TPBy~ߺ(''+('))(!-+#+#/' ($)!% %%)(. &|"f##3#4.8RD+;322';."
+
+  '<,*N<4WB:[D<fMCpVKkQEqUGnQF^A<L10R11T//S23K11K21>(*()3"%6&%4$&1!#. -$\`^ҵ͵MRW@COB>FFBKEBHNKQHDJ@=G>:@.+0B=F)%/yxhZ_]EJrdeyytֿyph`g_^+%,EEENOFURGgdZ\XMrneqj\{sc}m|]^Y*++944C94C84B73@61>412--pg\Ӽȵp{zbJ¦Q=#ϼfP7}gQvB,ͺ:0+~~tuwktthushvth{zntõŹȶŵZ_][ym[xjZvh[uh\yiY{lUyjYzkUyiUwh^zl_xkZsf]whZrb_whYtfZvh\xiXwgXvf[xfXufQtdYvgcxmc{m^{mYwg`{j\vfXvc^xgc}m`}m^xhb{l^vfYtdNq_KnXPq]OnYOmYRp^PfXYaW]`SccTfeUc`QecSkfYojZvs\us^tq^pjUrn[tr_pn\rr_ro\us`ro\to\sn]vs`vr_vs`xr`ztc|yfymWjZc[M#&AB9PkX[xfQn\Xp`dsau~iIXFRfWSm\KfSG]MQgVUn^ZraWn^[tbaxhggc~~{b~SJw^vxzvomhizy~^\YdXCsκd[EskrcMh^Hu>+iP]H2UA0n^H_P?nYG^L6\N;wkVl]LUA4aO?gZEneOrjTngSqkYrp[rupq}|f~f|{d~fleNpgO{tZ~{czw_wt_miTzv^rzw_toXwrn\niUheQqp^mmjUqws`}kx}xdlfTd_MjfSkcQogQriUiaTiaUe]PXK?^RD:+F8+TL:skH[R4VP8cdDilA`b4X[+jqBhkFUK2^ZAikKfj@^c8hSST'%(! !$ ?7'   0,,.*+/+-+').'(:65A==@?=\]^bdfLIM8/-C5$K5V<tVgpx #ţ&˩#ϭ"ײ%׶)Ա'ڹ48^Y,[N0W +&wo]PW У<ySQ1M3
+& L)?~S&h+}255Ơ1:EɞCɧ,ɫ0ʩ%ӭ!ͩ"(:XK'FD=MI<GC6NLBJI=JG=NIAB>4JG@^]WRSJIF:SNCzЍ5>)(&'(('( (++"+"*%+!' &%+ %!%#*%+#&dA"$ 0,-D:5H>*&''!# "
+  &A2-WA9bH=iPEnTJhNCjOAjNAjKA^B:P64S44P12G/1<((3!$-3#%8''5%$5$#3#"1# ryuҵʹPSXDGTD@DFBFFCGKHOQT]bfnfgm-+4GCL*&3a__|uy\HOжֹӲ~zvrc^[KEEJBGNFJ&!'FBK??>nn_pv~wqj]pg]OGD+/2!!;,+9++;*+:,+<.,+'+"#wi~kYjSiU|dhmYEiT@jotaNULGvttȻҿ˺Ƴsxufsqdli]jfZhcXe_Ve]Te\Ri`Vqf]wkaY_]WtfWtd[pfZpeXtfZxh\yj_zk_yl^xj^wj\qg^wj[tg\ufZoa]tg`xkayl^yk^yj^vh[vh[{kZxjYoa\rc^vg^xiVrc\yjMr`Yvfb|j[ud_wh`wh\sdYudZzgUt`MoZOp[LoYHlXFhW5QIISL\`Sln_oo_hh[_^TaaWdcVkj\ef[ggZa_T^]V`aWfg\gh[ln_ssbqoatsbom^srcwvh|wi|vhp~xho^VWRF6:0YaWC\KNeTQkYJ`RMeV[kZy~kaoZUp]\tdXn^Wr`WsbXtbVq`PmZ[ucghd~~{ye|Vpfk|zvqooszzwvy|w~}igdu^i[Gk[GK;+^UEc[IO@/jZD\L9N?1UJ8\N<_I7aQ=~j{zn`aTErwtq_i`Pg]Lb[KgaNmfPlfOvs_lyyb{ze|oplS}w]woYuqWnjTuqZsqYvs]`]G~hwrZroXnjjfaItp[rr]jmiVzucyu_nzxeywbplUjhPc]NG6,yq[uoU{fxmePldQpgSmgTmeTkcTiaSlbTaTITG<M>/~o\D:)<6"F<'JE)bc>]^6_b6ek;]`3|rYNH.HF)]V@TE3w`UUW'&(.,.223/.1-)(=4(*"(%'-+*'$$%!"(""*#!6/.50.B<;:52D@=A==C@AROM_XRMD=G:,P9`EuWdn{àɣЫή+ֺ:'3ʱP32ӱ ӱ&˪%Я(Я(Ӭ1Ϋ4ǡ*Ÿ6=B<<Ĥ9ë5ȫ/ͭ*έ-Ю*ղ(ֳ,ش-ر.ֵ4ճ<ҶBɩ/ʧ ̧%,|7E>0@;2>9.@=0QOGKIBDA8FB9IC:B=4JJBUTMSQIQME{׶+'()'$") &"( (!(#,#,"(#+%"*#!%#)#)#*((m!L,*/G;3H=$0,!
+  # )J62_E;fL?fK?_E:^E7_E9]B6`E;]A9Q62C+*;&)2 #1"5#&5%%5$#4#"8%%7%'#е͵RUY=@LEAFIGKLKOQV]cjs]aga`e,(/E?H<7>xksȴǥָضtni[SSPGHMBEOEGLDIGAFD>AYST6/5)#.BAA``Wsi_\RLmbULHlZVZONB5:\NRG=D"&0
+ E8=C8=G38C69D35
+ oTC3vcOdzǤş˵ѼǠ̸{p`{yvxuuiondhcYeaS`XL^ULbXIqg[|perzW`]Y|nQud\yk`wk\ug[xh[xjXug\th`xl^wj^vj`xl_vk\vh_ugZpbSq`Sq`Vra\sf^uf_whWvdUvfXxiXvgUteVvf]|k^|kYvfXseToaVscYo`]tebxg`sd^qbZk\MeSNlYNkZE]NC^OIeY<LI<KE6D>7D?5E@<MJ,<>/9>-58*2:.7<3;>#,8$,8(2;%.5)15,26/38.14MQN.36*/50378:@<AH?AF9@O4=;Zh\ShZQdX\qcZqbXpa`|lXn\pzcp|dQfTTo^Uo_Un_Tl[PiYQhXVo^egc}||zhfptYGiS=ssyqqsvst{|yzw~~}`]ZnaIzjRqaLfWAreP|r]kweO@0rbJpXucxr`zq\smUrlZjbPjdNywbkwrXvqYw}qqts~fqlUg_Hh`GrlTphOlaGulT~mfMpeMtmZkfPupVztSvnPl˷~~{jjhSlhOVM7SI2aYGZSF5(I?-y[kgSzwdmeTkcSbXIg`OlcLjdRh`NwmZpeTqdUnbNTC28**"7-"C6/G=-[Q=a\?_^:_T7o`LskLIG$JB.nbI|pTUTU"%#%$"$)%&75764797792(5,-+,1--+'((#!-'$0*(/)&=855/+,% /($7/,@:7C><WVWnqqwz{VUUJB=B3'?+Y?uUo{&,vͩ)ܲٳ״(ٶ-ί,ά,Ϋ/׳*׵+ӱ-ή,б2ΰ,ʪ%ʪ%Ь'ʪ'׵/ض,ص2ָ4׸9ؼ?ڼGѸDؿTտZͺb~Āֿ\Ȧ%¡!0j]:FGDB?1@=0=:.GB7=7+:5*NJCB>3MK?KH@JG?KG>EA7zSU*()'!-(*%&)#)*!*#)#("'#'}"!%#$+!+"(m!!Q!%$5K?/D7*82#!"%$ 4$%S>4^C8^C8\B8R;2R:1P80N6-J1*@)':&%6##6$$8&&8%&3##1"!5#$:'&'ϵ͵SVYKNUB>BDAFNOQjnvejsYZ`WU\)%,d`csnmzm`hʶȩܼںidcMEJMEHMEGSJMVNPd]`xrrf`^LFINMREFF715cYZJ=Cv\\PGJlZ[g\_B6:jYZD;@&)2$%:(,;+0>+.;,1C13 y|jU̿~<8:PHD{qf}sjtvs~n`tdp]{fSzeT}jY}kZp`xhtcsavfyY_]RufJp_RwfXvg]yj\ziZvhZxhWugWseVscYvfYseVoa`zl^xiWvfTta[|iUvc]xg`xi_xh`wh\ud_xj]xiSucMvaTwc^yhcyj`vh\tgYre`vhYn`_sd^pc^nbbob^l^LWNOZRW_WW^UQXQQXQIRJAKC<IACZQA^Q7QI3@A;GH:FF:FF4AA3=A/9>3=A(48'2<'1=&1>(0?$,:&0?%0@&1B&1H8E^2<M7HZ4JIASDMfWLaSLaSTj\PhYQj[OfWJcUQjZWbPxg^lYNdU]qdTj\MdUPfUVl[ffcz}}~~wy~~~yywzv`sXGmYgklpqsqrw{{{|}}}~~`^[wcukSwkTkcLycͽ{rXreJi_Hh`Hf[EaU?[P>\S@]U?xpYws\}x^zx\~{cwrj{wavnXcXBluj~|ciygzsV|\sjQPH5_U@{ixuoZvmXrhRg_FrmR}iu|xxs~|hqv}~zj~{mƳZQ?iaO`XDlaMnePqgTi]Ni^L[P<qfLs^gXM.!YKBTC=D6+l[?hYCj\M[L=OC.[Y3eg7soKi_<yWVUW"!#$"$$!$%#%'''#!#)')'##(%&)'(1//6/&C;.4//,&%1,+,&#4.+710)# ,&"6/,2,)4-*0(#2*$5,'930BA=`a_sutPMQ:68,%!3$D- nNdhfX> e"1ÚƥѬѫѯ!ά'Я.ѯ+ѯ1׳+ٶ-ٶ3Ӱ/ұ6յ8׷7Ю6׸:ӳ2ܾ@پGQX}ߒɕ“ºlKĩPϮ.&q,HE?RRO@=4>:.@=0A=1?;,A<0EA;LIB73'?;1HE=DA8NHA} ,)'(*) ) +"+ '"(!(!,#-&,#) '"'"&!%#!*!*$*x()[#$ 6PC,H8-@7"'&40&0% #**D0.W?6^C8\B7U;3O6/J4-E0+A-)8&%7%#6$#8&%7$$3##2##2"#8&&5#$yyxε͵UVYRPUaYZWSTOMOkqw:;F 53;&%*pmmsnlyq~.%ٿ®gfeulmullulla[\ha`wtr1,.MKPCEE@:<bWYQDF~ccUHIlRS`TU<.3cSS=6:$(/ #!=14<14?.19.3D36 TKFrcebJLLfklLSSGIIfhjtxxV[ZPMOMCB~q|kxexdwewgtcvgntwx{ʺʹʴʷñZb_[{m\|l]}mZzjWug]zl`{l`ylazn_wk^wj]xjTqbWseVqcXte^zkb}mWrb\wh]xj^ti^uf_te]obcviawiazj`{j_xi_qb`pacrcdsfduhatfZpdH]P^tf`odYe[WbZR`ZQ`XWb[[b[Z^YTXTRWRQTOYZSMQLHRKHTLOVNMTMGSJN]QITHJPGHNF?G>9B<:H?3?;*44+560=>:GH4=?+5<+5?*5?5@J@Q^C_[HiVKeWUj^YoaRl\Xo`Xn`J_QNbTQeXQg\UeWdjWsvcVcSSf[Ti\Sj[Tj[ffczz|~~}}zwtnlf~d~lU}gS}gjtosqntwy{{z{{}~~a`_yublyqqmVpiSmeOoeNe\FYM=\QD\SDfaJunU[S@jcTplWytXyrW~fjzwad]KYN<aVBqjRmyw]}dsĭs{on|jzfmulTllzu~m}|jwyu_zt^wo[tlWulVtoZ{yf|wenfSj`IndMi^Ki]HfYE`TGaTGrhV[M5aR>."VMFL<3>/)5$nJ}hFVE6eU9hd=no@X{tLsjDUUW&&*))+" "&##+%&,((0*$=5&,')+'%-'(6112,*:316/,5/-.**,('2,+-&$3,'3)$0)-&EA=LLH8514,,1,,0,,.*+3,&?0J6VCE-f0`j$ ɦͩ ̩ѯ"Ʀ ӱ)ӭײ"ڵ$ش&ڴ-ڹ:ڻ>շDռMϴC^ƖurVzOn>|b#7%Ψ1˥).\K*@?>KH?^^ZED==9,;6)<7+=9,KH@PNI?;3D@8@>6NKCEA8}ΚUX+(''&' -$/#)$*!)#*"/#.%+#) *#!%z!$!% %("()-g"$! 4ND2WG";4)/)E;&I<"/$
+$,*'J62Y@7\B7U=3Q70K6/F0,;'%9'%7%#6##7$$:''8%%4%%8&&8((-''ѵ͵VYZLJO\STh_^uon#"+%=<FBAH(&)mkjqnlyrkȷ/cbc|z|w|mpiNLK3.9@ACD:=XLNQDFhOPYKLbLLgZ[8-2gWX;6:$&/
+$#@56>6:?25;68C58 
+4/,Y^]TUVlqqQUWRTTwyx_bclgg_YYldaǷȴ÷ȱƬ¨u±ƧjaaKDtOLVUZb`Yyl^|m^zn]zlVziZzi`{kczl_wj[wi`xl^tg_ujZpd^ui^ujdyndxjcuh_uh[uhbxjcxj_uh]ue[ueYxfMkZTsaWudbyj`vdcxiavdhzjdyj^vf_vhbuhctfZf[Yf\I]RJ^RGXPN^SS`VT`XZf\\g^clb[c[ae`Y\XVYSKOJQYSGWMLXOOSLJPIKXOLYQLVLJTKOUMLTKJTJISHJRIJRJJULJRK;CE9GMDVSGXLNYSO_VWn`Ul^ZrfWpaZqb^td\tdWn_Tn`Rk]ZiXrwbw~j[m]QgXYsdffcz|x|~~|wrmgfoquzytspu~{|~||~`^\yudzweus_pmWrmU~x]bupUoiQspWjfLrkSjeQrp]qn[roZssYliPlgVlfU{xdfbLd]FicKnjRf`IkdNkieOqmVleMtpVѺī|]{u[x|fuq]u|{fws]gcJroT{z_xv]h~|e|fxs[kq|ujLtP|nKi[@j[Ef]HnlYuqa|wdun[zt_d]HngS|sal_FteIpcJwiPreNrgVvj^naPp[EyjRtQJ6f]MTH8qbD>0`V&QI(si5f_2i^=YO/||Spz\UUW" #+), # $/'#% )$!,&&-)'1*&5,*5,*@:90**50.2-+*$"(!0*%:2.83/81.62..*&2-,9202( 3* 1+'=8<* 8(O7T<}c4u~ŤĞΪ!Ǥ#ѪѪӯձԱص0״3ѱ8hukIcvf9~=3./̦0Ы,Ω(Ơ$pn<^]YPPQEB<LHCCA9C@3=8,@<0<9,?;/KGAIGARNH?<6YXQMKF}ʻ+/&(*&)) '!' )!*%-!-+$,!)&,&*~!u "x!%!&!*!(#s%(, .@82QC(@7!,"H=(I9B4"" &*2!."'4&#O94[A7W=2S80S:2M5/H4.F1,F1,C/,F2-C/+<('>**9(''Ѷζ[]^OLOF?DKEG\TVB>DABHJKP>;E0,2mjirml|uqvl;,(_`^hfdƅ||u=975/<::=K?CSGJ[MMeNO^QQ^HHiZ[5*/gWY949#$.
+) 'D;<F<?C69C;>D78
+ (%#lroRUUߤ^edKLM^eb}|vusl<9<{lnWP{UKƧ{SIT86xtk<=v¥оǸɱc99Z>>U[]c\]g@B~TSZb`^pYxh[wiWxh\|m[zh^xg[ugWteSrcYsfbwl`uiVscYuh]qfZqeXrbczjUp_Zuf`xkdxjbwi^uh_zjWudNr`Ls`PwbTubZxgUtaRr`Rr_[vccyjawhbvhdvhcufatf_re\od[occvjdxlVj`J\SWk`g|mfyh_obGSMYe]LVLU_Ubi`^e^Z_YRYTP^UMVPLRMMSNKTMLTLNVNLRLKQILRJIRHJSKMSMOSNNTNKQMIQKLVOSaWP^SSdWZn`Uj]RhYUo`Po]Rn^Wn_Rk\ZraVfT|}htajm_feb||}}xsomx~}z{wyz{{~~}|oa^\]UBWP=c]IicNjbLleIohJqkRlgNmcJneKf\DohPtr[qoXvv_pmWtmTmdGogLqjOldNnkWqypjU|d}zcruϸ̲ȯ}vdrmoy}fgjszu_nfLqhM~ar}uVyu_|[uzhzrYqeN|qWkaJg_Kf\D|sWy_eY=eVDYL=\N>cSC]P:ȬwmPpfHmb0fh+km1ik9so=Enf9iQU(SRS
+ !! $##$$ &"*%!1+(:53?73D:6>604+'( -'#6/.:323.)>64GA?<772+(0(#%-()-&''#" 6..9,#@-bEd (&ƥ'ǤƠɥ̧ϨЫϬͧͪͬ*ѯ&ݺ,+/ɦ0Ь0Š!#w%duVyY'x`/nfJqusWVTZYTEB9A</94'51%=9.C?5GC;D?9B?7EA9FD?TSO{֤pm'*)*(!* *") ("*!)!' &#)!,",)$#'#&w #q ""% ( ("(v!%7 -=64Q@5MC*$51%N= O@&(& + -9)5'2$=.(M60ZA6Z?4U;2S;1O5/K5.P70O60H1,C/*C0-@-*5#$8-%wҶζaccROUIEKSPTVQSFAEJKOONSDBI;8?nkk][^SOQ`TTOBBnmnCACLJLRQVxwqnniuuovto2..DAG;;<OCFPCE_NN_JIdTSXEDna`4).n]]617%)/+!(C6;E8=C46@7;E58
+ ,+*qpjVZYY[[jmlSYWRUUPPP;9<knoY]^|utm:9=wLG`DFX??k??ĤnJCY<>ncei>A~tп̹ƸĴèe>;U<<e@A~TTZb`^qUwhZzjZzk[zk^{l[ugXpcZqe[uh^uibwl]tg[zl^{lb|la|nYwdQs^QtaOp__whbwi`xhcuidykcxjZud_yibzl[xhTsaXweXveVvfQraYtd_vf`xiUl]Qk[avhgzlgzlj}nh|mcvff{mgzlbtgUg[Xm_]rfUg`EVPRc[OaXJVNFQL@MFWc][e]T[TOVPLRM]i`\h^V^VOTLJOIMRLRVOSWROQMQTLKOJQ_TVl]Qe[Th]S`WWdYWf[\l`^rd`whSm]UraQiZ^qeYoaThYnk[_M=pmbffb|~~~~|{wwv{{||||{y}{{|z~{r{`^\pkWc`MjeRidPjdNjcKbXDjaJf_FiaIngPkcPuo[ieOmiPgaJkeNsmTj`G_W;ngM}dzDZԽθǽŬԻtp^nfUmbSlfSqlWjbInfLrkRvrX{y^okPnjOlfKlcKtkTj}w\jeEvym|e~xekdJd^HogQnhQ}friVnaOe[Hk_KuiRi^Md[ImynZ^Q:ofGVN076D@'72aY,kha/b\<seIpcIqdQQQR
+   )$ '"("& +%5-&@71B;7F><=535/-,%#.)&+%$820943HEDF@>C<;:41D<:F?:D=;?43C80gW>]{Hx;n!+3Ù›ŢÝƠҮ&ͨ!ǣ(Ÿ%f{XqUT9hK u:g,kT/lW3dU5bcaMOIYYSKKGJJFD@:=:-C>1@;/95+?<2MLEOMGEA9B=5C@9MJC}±+.-'!.+ ** &!+' '#)'$.*"+#+' %|$%rk w!" %""(%)Q)>8.I96M@-*%' N@&N<G9$# - / 6>.>01%3#!H2-T>4S;1Q91L3-M6/Q81L60K61H3/A,(6#!3$<-?-0#BD/Ѷηbef^bcrmkYTW}usYVVLMTOOVHINA>F-)4" ./,4[QPZNLnopghlTRTONQkfba^]c`^}Ľ,((FFK99;REGJ=@gUUXCDeUVUBAsff1'*sab2/3'*-+!)@49C6;B36@6;@46 ***rrnW\[Z\]v|zOUUNOOMMOX\\}zqjg_649vPJ]DDs[[lA?ϴtMF[CBaVUk@@xn³ϼéǮg>=W?>^gfiddhCDuMMYa^[|kTvg\wiawl]xj[veQo_Ysc_rdbshasj`sibxi_vh`zl`zjbzld|lbmYwd[widznbuh`xibxjbvhYo`_ugbxih~m_zj\zh`{k\yh`|kc~l`zj_whbxjezlfyjhzkk|mdxifzl]tff{ik}mi|jk}mk}mdvfeyhbxecykZpd[qdRfZWh^buidxiZl^\na]j_S_VOZSSaTZiZ^k^_i_YaY`e^]cYV\TPWPNWQNZPN_SRl[Wqa]sc_pcareate]rb\sc]uf`xhTq`Rm]]tfep`gfW`laf{lggd}|{|~v~{~zwzzwz}~xtz{~~~}~y^]XjhLc_EjdJnfLc\Bg`GdYC_S@f\DbYBd\Hf`LfbNkiSyv_usYupUnkN|fzwt]tĮϷӹͳnysVwoXcVApfOlaHg_HpfM{t[yu\qjTvpVuoTnfMlaI}uY{tYqfNl`HrjUyt_xyup]ohRsT_[xnUlaL}u_rnZ{~t_sjSv^zciYBqbKh[Ek_HeXDi\NxhbWFxho]Hza}nWnbLcXAcYAsfMogPmgKk^Dp^FnyaPQR
+ $!## !'&&& 0*))%!  ! " 867512821<64:33=43-% GBCIFHC>@1++/*);662.,B<<;54?74KD@@;6d`\uskrl]nbDs_3~g2rAv0<L18<'!$ɤ"R5a!lN p2e'iP$vc@j\D^N5J?.93*50.A<5KH=OMJGF@83+UUNCB<DA;83*94*83'94)?;2RQKJHCB>6<70?:1JE=|ұKR+- .* * ,+' (!*#)"-!+ ')!)%"+#.#s!#q#%k!p #"&"'#%)\" )?9;\I*A4(2/ '$>8(N=O@("* 33=!B1A4"/"1=((D/)B-(E/,H2-G2.@-*>+)8&%/ / 7(3&1"?-C->*.32"_eQ~u˽ԷϷbdcUX[b^_OINaZ[UQRNPTQRXHIM.*5!+.,7ECEOHIQKKklljknHGHJHI~}~f`]VRSa[\ca\{Ŀ)$&FDK558VKN@67gWWZJJg]\REBib]HA@jc]VSP456&%)'"&* %+ %- '* %1*- *((kjgWZZ]`_yzziooOTTJMLLLMWZZ~sqi768rLF^GGaHIg=<˲oHA]DE}ool==mb̺Կƪγa;<WAAgAB}TTYa^XxhZsg\sg]sg]si_xj_zj[xg]wh\seYpbYvdbyj]vg_vh_sgavhbzk\xh]xj`wk]shg|ocykc{lbyjayjf{mk~ofohqd{lhnene|ld{kg}mdzlezk]vhawjhxjewhh{ne|nb}mUr`\vdbzhg|jh~kh|ik|ih|hezgg|kf|kk}mbsdi|kcwe^rbd|kfmc{idwfj{kevf`rbewffwi[l^i{liyibpbeqeftg\n``pc`td^qbUfW[n]Yk\\p`Xk[YqaTn^Yt`^zh[sc{~nhaU^eX]vgffczz|~}~~~~~~wvuuz}|~}~}x}}}\YU[T7d]@keGyqPynNj`EdV>aU?cWAj`HlgNzaz`qnTokSkuİԿʱl{uT^V9dXByoT^xqVeZCl_Gi[A{qVphOuoUplRsmSpfLtiOk_Hg\Fg_ErjPvlRpcEh\AdXBys[yx]|hr~_~uTcW<]O6seJf{w^vmWoeOvjQrfMcS>iYBbR>eS?dS?k\Jl^PgZLbXM}q|o_eS=mX<n|q\ujPzvYzZkw\gr\}ewPQR  !"" &##)%#"" "!  #"")').))2,+4./2,-?98722/,--()(#",'&6002--8233.--'&B=:93/3-)GC?iia_]VPH;J>1SG4]Q9`SE\P;yjIue;gw@i0x=>9?fV;va9ub@aQ9VM=@93.)%)#!$-)%93/FB:=80IE?EA:RPLFB;JGAHF<DA7:5,?:0;5+:5+FB:D@8URL<7/C?6C?8ID=}Ī))-+)(#+ ' )"* ''!,!.$-!'!)&'.+&,r!j #`p$'{ # %"(~!a"% +@9=bN+F9+& '&#>7#91! 254G+C4D9B5$4#@0#>3#)!/!$1.)#'/#-+4&9+3$7%6 ?*9$*T_KյиbefLPXIIR@>FEBHKIMKKRKJOFCH(%1 +$ -?;A`UUWNPhikmnpbbeSSTjedTNQ[UUXURĽ%"B@EONLhf]^\Ufe]ii`lmcpuirvjzsv~p~x686566000../-,-.,--+++(+.+-0--/..*))ljhZ\]_aauxwlrrPUVIKLSRTuzzW\]swo:9;qKFbJGdLLlBA©pIC_FGXJJpBCpeȷ˸ðd>=YBBipqysrhCD~TU[b__|m\wg^ui_xi`vj_uj_wh]wg]wh[vfb{l]xhdzk`tg^rfbyj^xhbzk]wg_wjdxjarf_rfbxi^vg_xj^rebth_qearfduiewhexi_vfcrfdrddvgh|mh|lbxi^vgjpj}njod}jbzicwfh}lormpdlf~kcyfj~mmom~mo~km}jh}iimi}lh~m\xe]{i\yfc~lg~kopk}kkkmoqqooi}kh{igxgfwferd`qacse]p`]pa]tc^vdWp`Xpabvf^sc^qbcxg}tfhW`k``uga~pggc|}}{~~~~~~~|wvw|||~~~~}}v|{v}][Vj`DaX9c[@YL2`R:ZJ1jX:p_=kaFnbIi`E|w]zwXz^~x`g{t|g~y`f|w_~zcnʳŬrpeJ{nEuIexoYsjTtmX{u`pgOaW=dV={pR~`ynRnaEpeFz[vmPizbwoWpfLuY_xRh_DnhQpiQ~v_wx~s^pdh\Di\Kk^Mk]Jn_Go`Ig^P|q^}rXufNnbPtgUsfVpbQqdTth[i[Mn_HcY<ohP[V>ebBzvYo_U6f^Ae|sZt^QPR   # ! ($#$&! 201)')!!$,)*" !)''99:&%&)(+98:@<?<:<;783,-4/.2-+@<:<86,'$0+(4-+60,:3/>7391-D>;YQONF>WODXOBXPDVLA{fseDpcI~ym]YRKIJKKO(%&1,('"96-;8.41(GC;=80@=3@=4=90MICHFBHD?=:1<90@;3;7.73)62':4+3-$4/%@;672)95,KHA}ΏGI)!+"/,+)"+( &!($ +#+(!/ )%!)(( %J=_!b!`z#%"'#$%`
+.C;0M<7LA#2,""#" !*58<K/O@ L>H=$4'.0%-CW!'7
+ !"OB/-  %2"*0 5%-% 4$pzh׶ѻadfMPX<<GJLREELFEKIINMMSA@F$!- )$-*$/vgfWMLbcflmplmoIJJ]VV[TWNHHYRSyrqaYYc^]'%0,3[]T|q{~x}~vx}v{u|w{u34275733434411222411210/0-.0.0/00)))ggc`edY[Z˂^deBDC}}{Y__tvt989tLFbJJiPQmA@ƬqMB`GGpqn@C~`Wͻư|c<<XABy~~hCBTV[b`a{o[whXueZyh\ufayjdzlazlVsaWudQrdPr`Yvf^xhdyj]xh\yh\tfbvh^ufbvhczjcvj`tg_vhauiathcvidwjauhatfctffzlayhatdetefwhfzkezjg}me}mdzjh~of}ljminf}ja|h_xfdveh}kg}lh{ki{ki{kh{jmzik{jfle~kf|ke{ihyjl}mmohnhkk|jn}ljmmnmnopj|lkyknwkisfgtffvifxif{k]tc]tdYo]_sdasfexhg|lawfexhhsaeqadui\ufXtefec|}|~~~~~~~~~}~~}{{|~}|{|{{}~y~}zvz{zy}xWUSJ=(\M2[O6WK6G8(C3#RC)TE(jZ=ukNzxmqlwq]umRzpRozejtlXh[EnbJpeLpdFymKwnPqhOlaHe[BqgNlbId]FaXCaXCaXAnaEfX:aR:tfLbU<TJ6kmzXI/G=+|ioe`{Yy_o~qWP@/TD/sdG_ynSpdQWK@h[KuhRuhQrhVncPujRufNfYEcTDeWFxiV{oYiZGgYGyjzq_gidHxpTtfLx]uwnR{rY~sZyqZQPS $ )&'(')302"*%$002003''')('0.0+')-*)-,*-,--+-/01-+-,+-)((*)(7791./2/,61/?9::5450.@::942E?9?7181,6.);3-B<7c_ZoldLGDIB@GDARNJ_\SnkbsrkVVTTTRac`YXVJHBSOK;71WVQNKG;60?;3GB;<80;6.A=5CA9MKDJFBFD>LIB<80;7,;8.<8-93)?<171';6,62(83&>:-}ʿѯ&. .''( *&",#*!& &+&* ) ) '(#@4z4gAmG#i-'^n" &"z_5RG4Q?-D6,:4'$!   #48=BQ3"TE#NA>2 ! "#9M#H4  ! # ?#-& 
+
+
+
+  
+ 5&D380ٷҼ[[]>>G>>GBEMFHQ./:<>HKKQKKOC>D\Y\ljk}vs|jcxïͶػñlc`mdcjdclb`{#!QPRef]kh[ndyiac`Y|~u{yxyr///444333334111111011011001/////0(&&֬ժ٭թөӫگթիϦϼXMG636fabKJۓ{xrKJe^[DCþ\Yg[|tuxZVYEDwZV][[c`^}mOs`QwdY|hY{iZzh]yhayl\wgWvd^{kb{mcwkf}oXvf]{jXwfc|maviatf`refxmbvjcxj\sd\vff}lhof~oc{mg|laxgazh^zgZ{g\zg_wgavfaufbzjcyjh}lkngzi`udbyga|ihomtjokrc}kh}mhykj}nk~mk|ll}ml{li{kh{lcwhh}ljng}khmhnemjni}lnotuproqmoh{lk}nj}mkng}kcxgawd_tccyhg}k_vdf~lg~mg}ndxlcyjfzjhyjd~kfoffc}vzyzzzzzz}|~}{}~~}|~~yxyzy|}{|||}~~w}}~}~|}{}||{zzx\YUUJ6UM=]VDnfOvoYuq]r~fvr\}pxv_xqVvoTqhPsmWtkSm`Em`EthSk`NvjVl`IoeO}t_fXBshJe[?aV@pcOl]J_Q=eYEL<-I:+cUCdU=j[?hY?}cwnUxrYyrUz]t̵v]rYhkugPovgLygL}e_P>paIxiPbT=mZDaK3W@/& QC5{hS{hR{iW+ q\Izcx^{oVl`I~hqq\QB)TN4zqYtfRbWCYR:yoWriKvtWi\T4dZ>OMO    #!$&#%#!!)$#(#!-((4/,?990,-.)+1,..'#.&"& )#!(!( #"!"'!3,)+& 730,&$'""($"(" ,'$.)&,&$.&#2.*0*).)%840FC@=96GB@[XU830C>;C?<XUPQNJEC@@;9?:8841C@<WVT?>9=7294-RPHCA:PLFEA:GC<WSLPLINNGNNHC>893+82+:6/72*0*"0+#/+!72)94,50(4/%<9/{ʽȿȿȤxw$'+*( +!. +")&!' %&%$*"'"(#%1%Ay5a/`-qU/a@$OTq "| !%X >[J?[E,D9"2,'0/#"""""#! 9<<?FDP0ZL%]P$QE"5&!Z'-f$%( $!
+
+ 
+
+
+        "$!!)&'*%'5019569561/097883470.61-+#3,)1*'?99>642,(0+%+% 61.0)'2*)=78C==0)$,%(!' '".)&+%"2-&0*$81/,(%)# -($62.,'&60/1,(51/EA>B?;TRP\\YTROIEAC?=XXVWURLJGXXUOKGUTMOMGQOI>93IC>VSNOLESQKLKESSMPNHYYRca\SQLB?7<70;6.?<4?;41+$.( +&72+{˻ȼĽž%+(). *,+)''%~$ &#")(#)"( &!F.y5p8n;z\)mS)gG,NMg !~"$vV ;YG2L99OC&81(& !"#""#!!8<=AG@'60]Q'^P!O<Hd$2L#4&!    ,2@ 
+
+
+
+
+
+     !"!!  !,()-)*-**)%$5001++-'$0)&1,,3-,$3.+2,(2)#,#0'2(5*"-&)#'")"-$2-(1.++'$0-*1-*2,*3-)4/,740GC@KIF><9GC?LJDEA=LJEKHF:83GD>EB<FD>ee^ggaB>9:5,:5-JHAnqjGE>A>4C?5C?7IF@<71EA:<8061*,')#.)-(-'51(zߺɼǼŻŽǿǿʿҾYZ&**!/ ( -)&$$%*#"&!)('"$+'|#F.`*g.r=h6kR'\A#K DR%p%s!@*(3ZH3L<,C7'93&0,!%$ !!#" "4;<=D<!# 2.`T,[J"G/q<Un4N@.$    "E6* 
+
+ 
+   **.114758957B>?@;;A9:?<;,'')$#-(&4-*5-(.&'3&0&!+$1'.#-%1)#(!% +'#.+'.)%.+'5/+4.)84-;61<6/?;5@:4>:4YXUYXT4/)83,72+;4.A>893,2,%?;4UTLbb[QMGC@5>8.95,83,50&3-$3-&.* )%(%($'$("E@:{߸ɺǹƺżǾƿƿǕ})'(*+)&#& '#  &~" '# ''*}"u!~!a8q3Y'a2vZ5W<M-#.?-d'7Y%)'>8/_M4QC&<2"6/"+(!%$#!#"$$->:<B4!"""##$%LF%\J$W2"xV3`RE;&8+!/$ 
+ % E'6
+  /!?0D6H< K="D9#WWX01>-+'&4 +)'489F66C)'4$
+
+)&!*{onô>DMEEIRMMVMLUIK[QRF<?:03SKO4/7749rtmys~s}p|nyl{qvolsi../114))+,+---.++,,*+*)+//0/01./1"! ˻/)"œѾVA5XDFL;;WGHTA>YIA]NL'!'}xrf`K>;tfej^Z~iww~tm\Xj]Wja`unme\vfZ}qjs~x}Zc`U{iYyi[zjZziWygWyfVyfWxh^{l`zl`|m\th\vhQvbUxgZzi\~jVze^|jbyjd~n\}kW|g_~ld~md~l\~kSxdZ~jV|gQwaNs_Wzg^|j`zl`|lSq`UucUuc[{h`}misemlyllfZprbpnj{kpqcycVrcvvg}~noi{kgzhb{iluoqp|jpqmsjs`l`|jd~ld~ld}lhojokqlpkoh~niokrgnc~kb~mbmgphpenbm\|i`~l^{j`kWyeJr[NuaLu`Ir^Wye\}iddbttvusxxtvvvwvwxwwvw{z{{{{yy{||xwwvyxyyyyyzxvvxz~zy{zyyuzx~~~~~~~~}|{{{zzzyvvvvvusmvnsqt^][yur`ozvso]ndT¬Ȳйҹƫؼż}p}vg~UF-ugLbwW~bikTB(gT9wZwYtkUm_G{mTs_Gƻo1]F8 e]Q7+L?2\K5Q<%bN<PA4^N;jYCcUBhVEYJ=SD4eXFeXI~oa~o]ocPsgTaUDKC&KE&_\BMKN  
+      !448! "111CCEFGIGEGC?B=:=FDGGDFE?>C;;>96E:6G?;I@=8.&6(3&1'-%,% .&#;402*%3,':301*$3,%5.&5/&93->82EC>\[Vab[PKG61+94-:4-94-?92PMENLFHD;HE<B>7A?5EA8;6+51'50'3.$2-#;6.84-51*-( 52(50+A=:{ǹǸŹƻĺ˄Ye-&'-!.&%)&& $| x"x (&!('%#y $uP0p4g.sRy]7XA$?'* 7$H0X.A!3RG.WE.K?'A72+!!$# ""'&'<==>* !"""$EA$RF{q0c`*D?(>2F=$<2$*    9!  /"9,A3C6G8L@$D@.WXY,.8 !0! 20986AAFSCDQ==J*,,655===C|]gqUMC5>BKJHOB@C;:<$%HHI-*2&B@F/,3,(.YYP;2)vrncbWGslWjdM`aM_^Nlpg+-.434$# ' #.,0./0--0#!!ɼ}Ӷȷ.&'wwh[V}oekfgWNM^I@.!{mfXdaWq[}nb~odskwc~qirdzkipeq[yk]|nYvgYkNxfEt`Zo[wfcnfqfpdp`leodpene|oe{ob{iYzfbob|k[wfc~mblfohpd|kc|jgqksowlsLLA[C?gSJbNEhSLt^ThOGlWPwe\jUMu`XthrU@5R?;q`Wvi}k[h[Pj{j`ogod}mlshodnhse}menktjpg|jhnb|jb}ka}lcnhr\wcYxeYvdIp[Pzd^kY{f]kYlRweesdramYsbbda|z{wwwwxtuyxyz{yz{yt{}}}}||||wy|xyx{|{{{wxxwz}xz}{{{wxxyp~~~~}~||{~{zzyxxxwvtrurusrtcdc{okdSxve~ngVg\I]R<f\J{mŭʰrmwkZ|iq~{}lS`SDɴwȾpRx\t_o{m]I[K2}`|qB3)`R:{űvf^udWG3B8*~syo[M9,_L5qWzoZkaSk`Ml]CfV>s`I~hOjjsYj[LdXIuhW[N:bTBF8'aW:FB+@>0KLM
+
+ 
+          25967;77>??B98;CAG::>::<B@DCAD>?A=8:=76946?861) /$2'2) -&/(4.$.'-%-%-'2*"2*#1*!2,$3.(70*4.*3-)83->7050'A=5>91IE=:1'5."?8-DA7GE=<8/3/$+',(+%&#/*"# #$%("$!QMHyλ˻˼ȽȼƜw-F*!'(&"!&!!|#vx!v#$)'$ul {&o7x?mKsV(^C+4( 3I-G1 7ZN*TAB4*I?"5.$!!" "3=;9 !'&5/A]_:HFE3I=!K@$B9@8%-"! 
+<
+V',5 /,,++3/:%3WA;'@,C-9#8":(D/>*?+:&>+>*=)>);)?*8$=(>(>)8#9%8#9&6":'acanmqgpkkd>CGCHREISGMUKQVNTYNSYLPXJOWHOVHPWHPXIPZISZISYJSZJR[HS[IT\LS\IT]KU_KU]LW]LW]MW_NX_MY_MX_NX`NZ`NZ`NZ`OZaO[aOZaO[cP[dQ]cQ^cS^dR^dT_eVagVagVagVagXbjXahXbhZbiYdhZdi[fj\fk^hkzhooZfkYdjpzynuubloakn]il\ginwx{~Xdg]fk`jm[ejZej^hiŧ^ZZp^TcQGdSLhUN^OEe[Irݹ‘fdi:5BX;9;
+wTsZiN{Y
+o:D|{]_6?<D>KW^mfofYk˞ЧwbcSJWF>YI?iWLjWMeSJ^OElaO~e}cf[GnaTk^Qk]ReZJk\PXO>PK;RN=b[L_ZLRSAQQ>ST@PR=MP;ML;RO@XPDYRD`RHeWMgZOhWLgRLQ@;w޶߶߲ݯݱܱܱ۲ڱٯ۰ٮۮ߭ԩӫҩ۪ܭث߭΢Ǡ}`_^vvkttjttitthtshusgusiurfvtfusgtsguvltvltujtthx{nz{}}~orzzz~nvrcmiXjfUt}}{|{xkyxkywj{xlv|rx{zyrnbuqevrevrewsgwrhuqfuqguqfsqfsoermdqmcqlbmh]kd[ng[qj]voc~wj~xk~wj{tdyo`yn^wn^wn^ul^tk[rhXpcStjXSK0ulUr`T^M?~pmhY~wk^PF3,~&0L/JT+pqO}xjwueijevtuupwwwz{upayg}kvew}|gxhuo}yzur~{tug_QcT^R{XKrpxt~iVWIWHyJ?_Qtragj\hj\hl^leUgY}aU|_Ry`RwVRD`YMC?3a]Suvdkts`tsar{ts^pyxcss~vd|`RaQ{]Lx^NebQbgUdhU[]Lysbr^^JaP{XH~n\ps_iUR0.413/6!26#5"04"5"4 8$49&@.F6?.8$;(55!5"<'6!3116"5 646!27%7%B0>,fSzeQI6/3<*;(>*:'8$~2 z6&m0e0W)D&-r/,15 -.C-36 0/?)H444D.44?(A->-9&:&:&A+>(<+<';&:&;'6"8#6"07#-8&bdalhmopn~^^\>CHHMSIOVMRXMSYNV[OU[KPYJPYKRZKRZJTZKU[JTZLT[KS[IS[KT\KU\KU\KU]KU]LV]LX]MY_MY_OX`OX`OX`PZaPZaP\bQ\cQ\cR]cR]cR]cS^dS^eT_eU`fU`fVagVagWagVagWagXahZbiZeiYdhXdhZdgnvuw}z^hkZej\fkbnofppajm_im_jmistx~{Zei[ej]gk\gkaknWbd駥[WVcSHdTKbQI^RBڧ|lvdw42?F2:F%$ [EkJ
+W qVC[_UYpG#$||iڷ^J@pbViZMj[S٨ҨѩҦഌmOM8RO;TT:ZX@UXCQR=NL:RS@XTC_]J_UFf[L\QCbZJTQ?bWIfXMXL@ZMCSG<ZSC`PEF83uެެܫثةߵݲ޲ݱۯٮٮ׬׬իԫԬӬѪЪٮԦ̢ˡ٬ڨӦȞ¼|`_^xuivtgureurfuskvuivuivuixvkxvjvukvvivuguthywk}~|{z}|pql\so]b_Q@?554-KF:lfVpjZwrc}~n|s|||{u{}u~vyuiywjywjywkyvkywjyuixuhwthwukwrfurftrftqhusjrqgrpgsnfpmeqk_lf^ld[pjX{y]kSVX-_]?mcTvhUWC4obVjaRxpc~xj|nq}p3((F7gY@kt|ba><<fVVu/)x.'z5.pC9t|oTTQce[TVLJJFlofFICHKEs}F=JAKC}G@weqmvA9F?F>F@uVYQVYRszljl_psdprc{zjxzeZF>H>HAF<}uxrurcs[QWJ]OVIaR?A9EE>hjbM60=2~3(~.%q5*]`PaZNUNDd`RzzhvjjVvpq\tutazuwg&v+ w-!m. {nYegSotiiZlSs\q[|hriSP,/1.0232123438"<+8';)8&<)6$;(5#5!4%4%6!3 24!5"6$247"6"5"4 4!2!>.`PgQ?O=3 28);)9'?,;)7%9(y4"r4$d.W.8 7 _'-53+.n*;!_(27!8#ZG;&8"9"6%6#:'7&;'6">*:&=)5"A,<%9$?,;(8!7#9$;(08$cfaongknkrpj|{QSQEHPJNWKPYNSYNT\NS\LR[KS[JR[JR\JS[LU\OY`PX`OW_OX_NW^MW^MY`MX`OZaOYaOXaOZ`PZaP]cQ]bP[aP]bQ\cQ]cS]cS]cS]cU`eUaeWbhWbhWbhWbhYbiYciZcjZcj[el[ejYei]gjv}zahi\gj[giakn\fkcmq^im\fk[fkYfkZfjdlpdllZejXcg\dh~ryuy~{Ʈϱʭǫ^[Zo[RmYO{w×jffYgQiSr\ܲYbOVHEF53&cM5_AmN\=dIm_FcWRWQ>ѬҪֺ7');)& 6MKW#.!!XJ@7\-5QVcDBvnkN&&Jw).^BK8Jc/9ZvR(!vTQ[ZHKGLYXDRK7hhb­Ų]]KZT>VP>eYNaWIdZK[PB^TEWU?JJ/OM9TQ=LL6LJ6HI1VQ@YOCQK<QK<JH4IL4VRAFC7t߮ܯ߲߲޳ݲ۲۱ڰذ׭֭֮լԬҪө֬ѥΦȢҪѥШǟş¼Ġ|`_^xxjvthvtgvsgurfutkwukwuiwuiwuixviwuiwviwvjyxlx~~~}z|~lro_rn^KJA4859A?;CA6=9DC:mfWuo`zwgp~zu~}w{wfphWzvd|x{yk{wl{wl{wl{xmzwlywlywkyukzwkwuiyuiwuivtiwsiwtkvslvsjtphsoiqm[wyEPid^80+c\Hyk]L7)h\Oe^Ori_ztfzlqvhZZL4~X/htJnbsuuS>?gXWo/%s/&u3,rN?eodUXXhne^d\X[VntlJQLSVQ{o{E<MEI@~KBrdnt_}{i|~heWGvA9LCG=H?sY`S[_UsykciZsprcqscx|h[JCKBLCK@nX|ssp`s\PYJO@SG]M [[S7 >4~5*3)o0%tjgW[VIidVyxhp|{u}jyzee'u*w.!p/"u_O{jkl]v{roYMhRt]oZtawyfhSP.1/.120025"126#4>)7%;(B0?+6#7';'5 32 7%;(9'5 222228"0324$:)n^kXHJ9:)29'9'@+;(;)9&9'~7$v6%h2b1G#>#=10/1D-H-*#/ s.,-?)F2<'9!5 ;(;';'9'7$12#;'9'9$6"7$4 7#7#4 7";'17"dgd{xqnmllsrjo||sORUDGQHLYKPYNT\OV]NT]NU_LT\LT\LT\LU]OX`PW`QW`QX`QYaOW`PXaOY`OXaOY`PZbOZaO[`O[`O[`Q\cQ[dQ\dR]cS]eS]fS^cT_dVagWbhXbhWbhWbhWbhWcgYcjYcj[di[di_imu}zx{y{u}ws{xlsrjrrcmm\gk\gk]hl\fk\fk\fk\fkktsovu`hlYcgenp\fi^hjv}zêǬͱũ^YXo[PlYMxldrqlfSdO`L^M`Q`QdVcUvio_?9.9(+dRK\F"^AV9iP&iWNJB1}vuD!.",'XIE.@"`).NH
+tc^_ZT0U9Br;8KTR^=9G_`_g p*7z{wOV6QXHns}nsgku+ATf_moNJ8LC5PH;NL8OQ6UZ?MQ8HQ5NV<PS>KO6JQ6EH2KT8>B,KG9IF3NI7BD-EF.NR;:9*t߭٩ް麣oߴ޲ߴݱݲܳܳ۲ڱڰ׭׭֭֭լԪҩͨ˧ͦɣȡߜ½½Ɵz__^xwjwuhwuhwvkvuhwuhwuhxvixvixuixujxujxvkxwjywkidWwtfw|{|tuqanl^9<67@=<FD?JF@LI>KF:B>GH>qi[~yj~wt{ipjXpgWf\LrhXztd}~{}yl}ym|xlzxl{xl{xmzwm{vlzymzvmyvmywm{wl{yh|zazxZyxawshyv^{|>w~9Ta`9f`KqgXWH:P@3TE9f]QleZtnc}wjpsu{ij[7E? =C@G@F
+K!}20-O;8$48$5%;'9%;*;+5#2 6#A.7"5 34 5!8$9%4 6#39%bfbqhpmpsoopvqcisxwqILRGKWIM]LR]PUaPVcPV`RX`NV]NV_MV_NYaOW^OW_PX`QY`RW`PZ`PX`PZ`Q\bP\bP]cO[aQ\bQ]cR]dR]dS]dS^dS^cT_eUbfWchWchVagUaeVagWbhWbhWbgYbhZch[di[ei^hm`lnhrt^ikktrltr]gk[gj\gk]hkakn^hljssrzwv~zVacWafXbgWbh_hḵǫ˯}^YXmYLlXLgUKwpkjch_RWl^N`eHWxE[JYF^Q[WECLMcfaaF94iUQhSEfJgM"_KEN@6Եֶuʼtpq]GE4 /"#+&+E20B-,4[9<H2830Q@843DJ@=@N@OO:JS*42
+J!Zp#'abywbns^rutpsz]`naamjhn?;B%CWhozwPK:RQ<TT>QS:MW:EO3KQ:QV>`YJWPAFE2EF3@I-KR7KP;MN7NG6HD2IE7FC342't٭L9$٭ثܰ޲޲ݰݰݰݯۯحի֭֭֫իѨͦϨЧͧΧ̧ǢŢŠģäz__^ywlwtjwuivtiwuiwuixviyvjyvkyujyvkyxlyxlyxlywkyvjyv{{iuzyugsqe:>9:B??KGDPMAIE152FNKBOM<FBKKBxsdyud|zucqj[RPB88175-ZSGriYyqbr|zn|xl{xl{xk{xl{xm{xm{xm}ykzyUnr.nqcj di!y|Nz~.0UQ'B<& e_MSH;]REh_SdXHgbVoh^ztg{mvs\zx```<093@ 8A HObh'~ZqrS~fXWk/#p*r/'vSHbhZQQJei_RUL\^XqulUYRY]TujzG={HAI@PFuauu{}gygvB9~C<F>H?y{lx{iv}ntqxhlsc{sk^JCE=D:SCyoolYs`OWFQDH?PBC>8TUK4A67,~4,o-"uxwcxvdxvdqyyydxxrnl~jv|b)w)!u.$j%zfu|g|p\bWv~w^IBYFSDPAkYhTR0/11240036"21327%<,9(4!7#47$6!5!5!:&6!5!4!23335!21;(3#22>+n]S>P>149$9&=(<'C08#;(<)>,q.p3 W&S'H$6 o07"6!*G4*lA2A1d%/,0K95#;'49%5%4#3":(7#:&x/7"5 37#6#6"237$27&aebllrsroqsqpvtmwuazxffh?EGKSA\cHHMFOSbPTdQWdPX`QX`NU]LT]MV_NW^OX_OX`PY`RZ`SZaR\bQ]cQ\aQ[aR\aS]dR]dR]dS]dS^dS^dS^dUafT_eS_cU`fT_dT_dVagWbhYbiYbiYbiZcj[ej[ei]gl^hn^ik}}ipnaik]gk]gk_il`jk^il[eiksrltpdllXbfW`fW`f]gjx|ϱӳǪʮ|`[Zp]QkXLeSG]SG|wR_=ZY>o\NbTHS]>Kp5;k#\XA~>GDOUqx}`\L[JDdPDhVL]MEŮm{zytutpqUIH{KIC{pn*#"
+_XZK4.&D!$H(
+ 5-,5* SV>nfTd&(ij{{{ %;%!;5-=][ac^Lj_JeK>^TAA@4TSPwwk_]e*&;:.5WG>JC@CJNkg`C?,<:&ME6JF4JF5XJ@TB8NH=KF;F=3LF8HH3CH/IP:56"94$JF9GC5CA295+t߰ެhV:ݮ֩ѧҧ׬ۮڭܯܮڭح׭իլլ֫ӪѩЩϩϧЧϧ̨ʥɤǤƣä£|__^yvjwtjwtivuixvixvixujxujyvkzwkzwkzvjzxlzxlzwj}ylzuzwfywjGIA:A?AKGEOK5<8.-)1.)02,FQLCQM=FBTTIyj|n~zlb]Q:<49?<:B@:BA473TPCrjYxqc~s~||ym}zm~zn}zo}{q}zn}znyi{{S|{O{yMuvDom9^Zwy!oq8ZS1G; KA->1#of^togd\FNNNQ(rp\mhT~}a:;ezx\6949 47
+VX%_a)np;rrEkk6}|Pk_<gWVh)m(q.%vWKY_QSPM`d[SWOY\XosjVXSY\Usi|D<yB<{D=PFo{uus@:x>6}B;E<}rwftyhsyj}pel[]cVtyjl_E?C<D;K<õwsllYM}IAz@8x;1zH;'+$ cd[/=0{4(z1(n* ut~lzwy{tzyfw}i`. v)!s,"s.#ubzvnvgyyYIA[MbQ]PUEsn\iVR.0/00//027".1134 4:(4 6!5!7$;&:%9%<(8$5!3346#9%342B.9%;%2 9'ldZEH6237#6#6 8#;&:%<*:'8&|7$w5#c+Y)Y/4 724A+4f. -J8m1#z5..F2<(3!7%9&36#<+6&7%5#s05!0315!313225!bfbsmorrzvtqrrtgwsrcpocdlxekC>BPKP_MSbPUcSXeOWaNV_MV_MV^OW`PWaPX`RZaTZbR\bQ[aP[aS]bR]dR]dR]dS]dR]dR]dS_dT`eT`eS`cS`cT_eUafVbgWchWchWbhYbiYbgZch[ejZeh[ehmutsyuowu[fi\fj]gk`jm_il`kl[fiZdgpyxu|x\dhVafXbiZdgt|yͯΰè{^YYiWLlZNmZOfXLr^JW7NF;s^L[T>=O 9O$!2MuDkjѕpco_UkUP{dŋCTl|{{zthhhZ\VTY̿VTL}rnl
+3,4C?BH52
+"
+ E!!6&izsUak()/ttw!777M%,$(7,"]bFW_;zy_]_L##~v`]Vy<9::00PL;PM:PH9I@9JF8KJ8PH8NG7RH:DSKvɺѧQOA?:-EA2ED2HG4GF4FF5AA0?<.71(uݬګ٨ӧeQ3ϧئۭӨթ׫ڭڭڭح׬׬իիԪիحѨШЩΥΧ̥ͦʤǣǣǡšğÜ~_`^zwlxtiwuixujxujxujyujyujywkzvizvi{vi{wl|xi|wk}pyz}~ohh]5<9>IDFPL4840-*21+0/*.,&24/GSMDQP=E@heYnzvifX6:5=DB>GE?HE<EA>IG7>8XTG{rc}nt}zl~{n}zm}zm}zm}zm}zn}{r~yu~yt~zprpV|w[ZR-A>?@.&3%j`R{wmzrij`Oba-HN
+LN!ddADG25 bvxJBF 37SU)HI==<;=>??D@WP"dXXq8-r.%r0*aVkqbhg_swmeh^bf\tyn[_W`c[lb{B9}H?|E=vJ?yxwk>8u?7|?9zA7wxjsugxzjoqawyjgh\km_ik[oaF?H@D<xC7tkuyxfeTHoB9G=C:|H=xAE9>?5KL@B1&~>2u, v-#n* vmtb^Nmk[wxc{|etsa}~jtlo`^Lzyfb6'o%l+l+vSAW]JWZNGI;bha]PHMAXG[KSD{hiUP0/48$0421321035 339'27#24!7#6"3:'5 4!37#4 6#3"7&:'@-D27%4 3"9(ibYCQ?157"8%/5!<*5$8'9&6$9)z6%e*c-Y,E'4X'1.2:&* ?"I5V 0.2T@7#4!8%6!:(6)@-4!9&m*:&36#7!47 7 6 7 5 :'bfbjjmporvxuzsdpp]U)=BF;^SCIEGMZOUaTZfU[hSZfRZeQW`OX_QYaQY`RY`PY`PZ`PZ`R\aS]cR]dS^dR]dS_dS_dS^aV`dT`dS_dVafVafUafWbhUbfVbgWchVbhUagWag\djZdh_jlfno`il`jn[di\fk\gj[ei^il`jmYchYbgcjmksqXchXbh[fjowvç~^YYlZPn\QlXOsh[|_lIEF)XK=fQFB90JCAE>9'h]MaeDVwFp_c[EbOC޽:=P/7RytstpnrghV@B_]fv|qkn:38-*0QKJ8.#JA61M)):clMҽHS`EMg#),.,.PVDqЛ缉|g, VTT]YVpjd71(LK<NL;IF3JD5IE3HI3HK2HE4LM=HcVSjPj]ʤW`N@;,C<.>=(BD.GH5HE3F@4;4-w泽fککܫ˜~mMܲ˜Ѥۯܯܭڬڬثجժ֫ժԩҩѨҨթͥΥΥ̥̥˥ʤǣƣššğÜ``]zwkxujwtjyujxujyujywkywkzwk{wj{vizvi{wjzvi|ylr||{zykILF;EAEPJ8?90-)32,32,63/20*00)8=9GTPEQMGJD{lrxvh?C><EB@ID?GD,.)/1-BLJ@MI;B=jf[}ms~{n~zn~{m~{m~{n~{o~{n~zm~{n|pmkM^a)ef>{u[UT"ywG+"wq`|s~xktm^ofYoiX]^'EJ[`,?C;;vwNEGJQ DI=>2/535497E9]BjP`UTg.#u1(r3,|_TUXHKKAMNCUVKQQGTTJNNGKIBxbYx?6{D;~IAl@6ygzxptm\\2,uB;|A:{E<}|acVlnaih[uxihl]\[PedVpqcocJCH?C:G;v}z}kmXJXJH=z>5wA5&'"\\V*z:0v.!v/$m(z|som~s|ug=.v)"p,!n-!rJ;wyjfj^af[ltlZPH}F:G;M@}N?njTO...301001:#35!34 14!>*16#4 36#5&4!3 5!4!5$@,:$37#7#8'L=E2A0@.<,@.eQ_T?XF217!:&?+<(>*:&:&:(<*9'{5r3k/C2;!4q1010m6$)R&y?-^)109"M6r3 m15#8&z9*i3!m1i(_(n*w+x,o)m,m)j)g%f(l'm-bfaonoopimnrv}aU:a_H\FBE;A0KWTTw~OlqORWKQU_W\hV]fT\bU]dV^dSZcQ[aR\bR^dS]dS_dS]bS_dS`dS_dS^dS_dS_dS_dS_dS_dS^eU^gUafUbfVbgR_dUbhWbgWbgWbgZchZcgYchYbh[di[ei[fi\fjgqrcmnZdi^iliqq[dhWagjsubjkĩ_[Zr^Uo[QuaXy}zxtqsntvUTBKB4;/1}zbRG8kUMw]Yy_Yo[NlZLͰRSZXZn^cnh`]mefrmne\]C?F23Idgoñʱy$&1=E;U_@RZ>/ 0R1+{zv50$2-  )$*
+v뺴·[G=: XMISJEi`[SNFKH6NL9FG2HI3GF5GM6FK6`d[׺v}EAzTHVF\ECG4F?2NN:GI4FE1E@0LG;86+ZWPZbZ/ZO1t[[M7viEإСݬ˾`ժҡڮ֧۬ةتثש֪թթѨѧϧϧϥΥϨɢʣˤɣɣšáàş``]zwkwtiytjxuiyujyuiyuj{wk{wk|wk}wk{wk}wk}yl}zly~y}wywl=A=@LGEPK,-(31*54/77276276243020.DLFHWRAJGedYuVWL=EB?IECJE,+)/-'/.)252GRNBNJAD?ztgr~uzo~{m|o~{o~{o|o}p{p~sRM3RS%auuHdf+,%C;d|u~yh>9`[@tqZhgC[_$MQVU#WXAD:ANTAE 226457:;43
+VApKSEbUTi-#p-#r1*h[koaFCBSQM]]UYZSy|p[]U`aZj`|A8|E=I@{J@zucq?9}C;|A9zD:zt|m}uuus~otxg{ro`F>E<}=3|?3l~ip]OMA~B9z>5wA5KLD
+y:/{-!z-!q*vup~vvwc}{myvttuamxlE4y) u,q+qF9y~njteV]Qp{raXQxD7|E6G=K>{p]iUQ1314212138$>(3!5!8#:%6"6#59$5!5#;(:)3 49$;)<*8(5">+8%9&}=*E7B2E7~A2K;{7$TFF1!N>5!5"5 =)7":'9$6!7"3!:(~6&8&q+n.`1I)@#4 C
+10/4[)3-.y1//>({H8xG6>.<*|:*|@1s>.q=+}>/|6%:'7$9%9%6"4"{3!~5#8#{;*cgdrjkorsmtvov?/_  39B,80?g[IOLNVfPXbQY`PX`PXaNX_OY`NY`OYaO[aS^dQ[bPZaPZbPZaQ[bQ[bQ[aQ]cR]bQ]aQ\bR]cR^cT_dR_dS`eVafUbgUbgVbgUbgUagSafYdi\gjZeh]gkaloaklXbh^ilXagXahYahfoqqyu\XWiVJdSAm^Hmmi97===A}{ffU yUK@sf^}l_|i[{h[yc[whYոJIV02H{tjnbed^_]Y^56GWYdɳee_,.6HM?RS9PP:rϼzezjdc!3+8Q?7 ^WO))-+,=~dUJ}pfA.(.;,&SHBf`WJI8DM0CI/BJ-FK1KF5GD3DD7|{xqhUr57\H*T@;Ay=6IJ4GM6@I/CH/<<*50!55)VTSF9&øne;PF'`χ~QlaFZM5RE0K@.^R=zѠޮf]8ǿ˝ب˿ǙdХרѤУګ٪ת֪ԧӧҦѦϧХΥͣ˥ɣɡȟğğşğÞÿþ½~``]zwkxtfytg{vizuj{uizuh{ui{vi|wk{wjyuhzuh|vi|xk{|{|vrpe:@=DOJ=C@32,993::5886775664552775<>9OZVHUPHME~|o<B<BMJGQM23.40+20,1/,31.5:6IWT>MIZ[Rtw{n|p|p|p|p|q}q|r{pjeN[Y<wt]rsM8/.%
+A<mtroZ5498KM>D 14=?CFDFEH>@gg4?> EA%%!(' 87ORQI5*:< dUTi)m&t2)m^ajZ?<9OPGNPEBB;lmbWXMde\ze[|A7|E=|D<xF>lzxtcn;1}E<zA8{E:z~s}sxy~l{oz|l}tm`H>G=?7|?4kklmsp_aNAx@5|>5|>7u<0EK<A=5`bX6)t6*z-!y.#p)vg}}w{}juys|~wluwznL<v)r)q*j:+oVZQmvpg`Xm9-{?1}B6{C6yheURr#n" o#l$o't)r*t+g#f'`$a&f)a(]! h'i&k)k'i)b(d*`'d*j.P LNY#h.j,m0l-g.d.d1#Y,V*[)[+><*K=4"5"39(5"3:&2=(:'=+A/9&v+t/i*],P-!/
+1^*/24A+9 #^+/12L8/03338#7!100/-.0.0/,4 cgd{srkkruosr~oH;
+ %7 >H60%,EjGOCKQeKS_JT]LW_MWaMY`MY`OXaNX`OYaNY`OYaOZbO[aR^dS_dQ\bP[`P[`P[aQ[dR]cQ]cS_cR^cR_dS`eR_dR_eS_fS_eT`gUafZej[eiZciZdh_ildpp_jkZdiXagWafXcgail~jgbװ淳png
+
+
+422ssn~~owCC3/-hfa}ztsmcndQkcL|ʱUQX.-B]_li`btllTMQ4/?KJThgZE@3PM9zza׺UewP]oľwre&!*GD7LK2NO7}|yunh`]HA?$TG?HE3JE5I?4>5.LF;MM9CJ1KT:BI/IM4IF1_TC]THOJDw}q}a73q*1{)3H[OF-AS3KW:HN8KM:HL57;'TRP;3A7G=.B9.=1̮of<_U;?7"J@/J@.J=,D9(NC-|~ٳgee];{UP/JB,^S<\Q2ȤſD;!`U9řfoxoaȠש•߲˝ثשתӨУϣХ̡͢ɡɡȠǟŞşşœ¿~``^}xm{uizuhyugzuh{uizuhyugzui{ui{vj~xn|m|wi{vht}lryrii`<D?HQM6;6<:599455/33-44-55/872:869:4KTNKZTEPLBGC@GEEOJ=B>85365177255/560440@GCFVPCMG|{nz{vrzvhupb{n}q}q}q}s~st~s}zdhgBebALH$HC&&[U851'$ifP^ZA631/ DELPSS*BA//+-..<6?46,&,' /,#94.( =4KB,dVUg(k&m.#rcrvh^]Uik`^_UNMHoofCD;DD<|e\|@6|C8H?s@7p|vfp:1|B8x@5s?6vxirhzv|i\H@D;C9}=2|xpq}}kjZOs90x8/x:2r:/&+ EE=r4){/#x/$u-#zj}rvw}{uvlzuWEs(o)q,!o@2{adXjtjie]m9-D5E7xA5~kgWUC3E4A4I<F7>/@0B2I8G7E5E5A3C5C2K<G7G5K<I9I7G6E5J=G9H9K>I:@0@/:(:(@/<(B.I9I9RDPBK;L;ZJOB5"6!39&3 16"38#:)<*8':(|.v/j-^-U.F$= 6 u20--H4=B+{:'0.0:$B-12/117!122.00/2-0.6"bd`z}anpnnottnqwiL? ,/H>3>A=/UckEGP_HS`KU]KV_MX`MX_MY`MZ`MY`NZ`NZ`OYaNYaNYaOYaOZaOZaO[`OZbQ[dPZdP[dS]cS^cQ]cQ^cQ^cQ^cP_cR_fS_fWbg[fiYbhZci[ei^hlcmnksrfmm`ik^hibjkjssuzw~}}xgg`}|dOP2yw`fcU  4.-{xpv~{o[[I16$<?<.-)IKIRXNKW?ƭokmTPZ*+A|tnnh]^WLNB:E40:к~QO;Ǯ/.<]eu<DOȼZRG94*DF(r{a[bqrxlqxD75G;>!L?7LJ6JI6OH:IF5IG5QP=ML8HN1MS6KR?T^TVZ[uwy<4-VTLTaF_nNmc[W"S%L!.ge:P+ER2EJ1FK1CI.AC0VSS;/F;)@2%?5&@7'9/JB$WL6OB1SD:NA:D;.D;&@7$F;(A6 A9$JB*KA.B9+@9$MH+?7 A8$<3#H@,D>"61ME.MB1^P;|oQeT?{naFqncˢȝѤԨ˞Ӧ΢ȝΣ̣ˡʡʡƿɡÝ|aa_}yl{wjzuh{ui{uizuhyugzvi{wi|wk|wkqv}k|vfzwgab[=EBEPK@FA@D=>A::=4584894;=6?>8@>9;<6AG?P]WM[TIUQFRMJRO794972;;6996883995894686JZUCSO]`Xwwzn{ul}{m|p~r~q~m~mtp\]+_b(jc=,#., '%73IJ$DE32 <:3032hfF~{g~nptolMPL*0) .& 0)5/.* 2.jXB;*,(
+52A>&dTTi+ k&l-!sdUWH<84UTKIID>=;``[0/-751|cY~@7z@5~D:q>5rrx|o`i5+|B9x<4r<5uuo{pts|j^C;A:A8t9/thxoxyghYNl5.r5,y:1p8-$
+BD<
+r6*z.#y/%{3&jZw}o~~k|xv}ywus{zhgdRwpsUEu,!q* q,!h3&{{is}kel]jsi]VNo=2~=2u<1i8+salWVA/?,>,?/B1B1?,;+<*E4A2A.G7C36(E6>1C1:(<+@/<,@.B3C5D6A4?/=-B2>,@,@,B0B1;*@.=,;);,C0D4yA25#7%5"5":)~6&6"1<(;*;*}2"<(x+w0j-a-Z0O&F'6H! /120=)A----1-H3021/3"7$7!3<&2.26"=(2206#cfbo}|cnsqjllomrg\H8 
+# =4&&7C=b[c?IQgIS]JU]KW_KW^KW^LX^MZ`MZ`MZ`MZ`OYaOYaOYaOZaOZbOZaO[bO[`O[bP[dR]dR\eS]dQ^cQ]dQ]eP]dS^fUae\fkYchYbhZdi[ei\gicmpltsovtiqoiqokqolsqtyvsvuryu}}{vrysjok]_Zu|gvytYlN\sNhqYUF=w]PF4 ?97zsyokcSYTCb\PEDJNUQjddlei2.>_^e|yoysngha[^IEL@@IOJPYKHgZO}zul|zyf[\/)5aeu<FX@=0DC8QS0ɫ`[XROaa\ahhoqt|}|} *.$+\ODOJ9JM5JL5NP8KM5MM7NL7?B,]cUzyT}?_vMKN,KJ@ZcQWUH;lJGPS:d;*<?\S:IZ7NV8BC-BA,41&URR- 5'4'5+8+!:/$>5'?3qWsXHUHBZMFJ@1E=&VH3ufYE<18,?2$=2$B9)7/JD,A:%?7%A:%A:$A9'>2'8,aU@{qTyoPuZobLbP@pbK|fvjSay[\N9aV>qscbV?z}xx{ba`}zn{wj{vj{vi{ui{uizuh{vi{wj{wj|wkp~yx{~{XXQ496CMFJSMKUPAKCCJCCKDGNHJNIHLFAE?9<5593S`YO]WN[TNXRKSN55/:94;;5::5::58:3792775HTLIYUGQIzy}n}q~r}qi|}Jb}o\WYsoPRF/0(kfRlLG-MM)RT(GG 50411/ ~zh}xr}znvn?:)%34 rqI=;89 78MI&K>gVE.* 8852cTSi+!o(i'yjSVJC?=VVNJLD<;6\^W--)42+w\Uy;3s92u=4n@6onwryhm<4p7/s91n:1ziyp{u[F<j91n;3g6-kE<kxxxwdqpraf\RT.)[,%_-%[1(plqa][PtuhWNBi8,n- n/#o3%cC2zsxwg~~ltlvrrutsaihVn}|hwtboYLg5&m=.j9*jD4{w{q_ZQB(R,R+J, l^NjWU:(<(>,?+=*>-A0@0<*8'D3@.:'9&8(C2F7;)C.A/@.?.@-@/B0B0D2B0F4D2H6D2B0?.B2?,?+@-B.D3B0B1x7(9'7)8(>,>-}7'<)8#7%8';+z3":'x.x6"w8'm4!f4"Z,Q*A#3c,,00012--.0E1L8212"6"7#A/9&6 8#=*36$5"7#36#@/cgbyslgqvpsq{vfA4-D2{s 8/E2 [GOHGRfHT]IU^JU^IU]IU]KV`KX_MY`MZ`MZ`MZ`NYaNYaOYaOYbOZdP[cP\dQ\eQ\eS\fR]cR^cR^cQ\dP\cS^cWbgYchWbgWbgYcg\gj_ikktrqxvszvz{u{ww{yx~yzzrwsrvux}w~w{vlpnjnlpnjym]k`T{qe|cTMZKFPC8|vk7'  $ "\RPPKHysgym7.+(!#)&([]\|vsqlhikfhd]_^SVunjha]|zprunno7<H.F!*<3/9_OMQ<7nWNòHEFQLMdZZ]QU2,7FJaHO`νDJ0A9B85J?9G_VZ]\cjnwiinWPQLA4JC3NK7MO9FM1MP5FH1ERA^ssjCRZT_nGYnCRg9@ND9:NJFZ[I,VI9JT7DQ2HK-ON2HR2FK/II7DB342(WTTN@6M?4MB6SH<MA3F;/D8.RG;eT@bO>ZNC[NBXL>QD2SD3hZNPE8PC5PB5MB4OC6H;/?4&C9+B7,B5*C7*E9)J=/RE7M@4E8+RF4[N<^OA`O?\K<cTD\NAYG5q]]O@ZL=ZM8RD._Q:\P9\P9bU>h[CpcH{nO~qRwhOmbIj_FoeLujPukQnfMwoUzoTxnRypWslR|uZpgOsoUpkQtoUsvxvxyz}|}|}}}y~wxzyzvwnca`}ym{wj{ui{wk{wk{ui{wk{wj|wk|wk{wj~p}|y{}|{sSTL7=:463),'*.)/408<8BGBHLHJPKKSOKUOMWPLTPNYSO^WO\VP]WISN5735725818:58:6>?:==:;<:=C?N\WFSNxznz}Vu{F_s~s~lY}:]`'cqoBa[3\\4~~Idb:|mvwk|ceaIpjU2.0-
+roW~zm~xkze?:4/"EH~PQLA< NMLJ%!?0aP?63BC"`TSZ&b&Z$iQBxmuwkzxx|qt\NCK'L) K,"P8-|ksu|yhN7+M+ E$C&riYtwcwwcrsnliVlrq`aXM7&A/%>-#aTEl~zwvdshgWheXD>65* I?2bZJon]feSihU[YG^YGP@2o[JkVH]K=f^LfdQ~}ku~ovvdu||irqrqnlZywel}h}{hliYnl[urafbPkcVSP?ljVhfSdcQbaQlj[uuez{jgfVxyfjXV>,:(9(:(;)>+?.?-=,?.@.?,<(B.;*>,:&:)<*<+<+<+;)<*=+;'8$9%7#5";)6$D1?,9&<*=+=)=+=+=,;.@/9&;':(:%:':(9&7#9$48$E1<(q-x6$6#{.u-k,i1O%9 ;w20110.1/-/:(SC:'8&;)9(>-;(8$4!<)7#7%{9(u2 <.@2@0G9bfbqqswkosyuoiZD71J6'_P  5HDMfFS`HT^GT]GU]IV_JUaJWaKY^KY^LZ`LY`M[`NYaNYaN[bNZbOZbOZcOZdOZdP[eQ]dR]dS^cS^cR]cU_eYbiWbgWbgYbh[ei`jkltrsxvrzvwyyy{z|{~~~}w}w~}uys{x~swtnsqlqo`a^xk^WIBRC=PA81$zvlE;6646fil_`[VSA-)"=:6VQHH><;/(/,1IPVffejfb{{svtutrsiegqllXOP`US_TO}vonnUVWTXYW]a:CPKUb58=867RI<R=7:ZH=TF=(#%4..d\\RMOE=D&!0@BWӸa[Z1.CJBK2+5)([QVidh~yoTK=OF5SL;NJ8KK3EI3Rf_T|<cxZw>Vf37L43D:9E47H:9:
+#TNFFC464!LR8?I.;H-BJ0AD+EC.IE4GD3>:.\ZYdWJYK>XI<UD8UF:TF:RF:VLDG=1I<27+L>2J<0G9.H8,H:-F5(J:+J<0E7,E7+C4'ZL=M@/H9+UF8maNoaNqeRoaNqcOylW|hmooory`{s\{|ywx~{z}z|yzyy|{z{|z}yy|xwwxwwww|s}s|r~t|r~s|p{qynv}lw~lv~nv|mtzkrxkmrecb`~{m|wk|wk|wk|wk|wk|wk{wj{wi|yk|wkp{}|z|sRTLAGCHOK=B?FKGINKGLICGD;?=584.4/.2//517<9AGAGRJR[TTaYS_YISNKTNKSLIOJDJE?D@;>;472.4.NZVIZSjqewgf~{hzv[k}}Hwx=ih,aIcd-x|Ers?JM"ED(|vwvwuhbMEA%tznxjXQ3:6+( &$=?=;ukHxlIdZT6%!'#N<-M@+66`\[aTDk]OlbTXM>f_LcdNjjVdePYYDkjWWUC^^LRQ@IH8faRmkZtsbjfWpo[wvc~j~uljWwucnkhdOleRrn]ecTdbPjhVjgSsp_qn]e^MpkZpo\yvdyyeyya~~jws`tpmp}{hheUl~hzyeqmjZtqcfcVol_wxfmn]qreLK>tp`uo^NI:qo^xwfmno||ivtsan}|k|knuqorrsytdf^R~zxunm\orv}jiUS6$:$:*>)=(5"B0>->.B32 1B-?,000115 24!307!0116"5"3 5#8&:)43!6#4 6"4"2 7%8%7%5#5!5"5"5!8%8%=(D1<(l&:&`&k3!x35 3 n+k0U(C#7
+F ~012122///5!8#RA8%<,D4A1;)|4 y26$>,=,?.<+E6<+4 9(`damlhlpkkjr[SGF82H6+I9
+ +  U@IFFQcFS^FT_HU^IT^JU_IV^IW_JX^LW^L[aL[`L[`LZaN[bN[bNZbNZbOZbOZcP[dP\dWagXdhXdhS_dVafVafWbgXcf[ei`lmajklsqpwts{uw}xyy~}{yyy||}|~}|x}w}z~zx}wryspuqz~yx~vsyttzuqvrdaasg^r~t|voD939-#oi^I?<844yxuDC8GK/DD-86%C@4>;/OM:heZ1-.1+,bab973yyt~{|njmqmoidfjbe\SPwqnJMSJNS<<>WYZ[ZZB?=nnkUSEr: F2-!:56NIIFAAXTV #'TNOpkfzNUe0/>E=ALCD6),dXVi\]bSPosi[^T]XJNM:Qb`/Wq<V(=U>Uh\w=PX#'*!&"#FI>,.CG15,(eaXSVBDI-JP7JS5HO2DH0LN5JL6HG3<8+\YWVH:[L<cTCXH6iZGhZHugT{nZi|d}hkjkyww}y{zw{`~{rXswzxutwtszxvwytytywwxttuwxxuxwwtzzywxxwxwvv|t|t{tzs{twqxqvprmp}mnzkcb`|p|wk|wk|wk{vj|wk|yk|yk|yk{xj|wkq}zw|y||rSUPBKFCLH49535.+0)+,)+/'/5/9@:FJFNRONRPLOLDIF;><6:6/5005/3939@;AIBHQJLWPMXTKVRJVQITNESNK\W_bW¥ťwߵ㿧myuMeg,z|IMJ>7IBQSCE44
+QN.'#`_H{vxurp~q{tcp|n|iG@$31*' /, ifEJG.>8n~qgQ'")',$ \I:O>.bc`~nfiUrs_qn[idUgaRmrxxspqutwyvwq][Jmtt}|h{t}wcyuanpmmyvatsa~jd_Oxy}p~swsxo|}~knqq`jgWc`RXVHdaRhgWml_]ZMxued_Q_[Msrwsvom[fcTn{ta]Nnk\zxfvtasp_lhVqo]qo_dbQc`QjjWkiUigSwwbvuezxgutb~lxyeiXT418&|4"}2 }4"@/@.B3>.=*7$43 5"4 5!5!5"8#6#6#<*5!9%9%=+G3C/H6J8I6;(9&8%5"4 6$3#3 bPP;7&8%7&7#7#6#7#9%G5G3H5H4B-<*\)L<F6@-C1~8(q2n2O%D%/[)22346//111 A/D3B1C1=*:&:&:&5!38$0-3 ;(A0?/didqproklsimRI?D53F4#]Utx qt I`A8;5?92nedjHOWEO[HT^HT_FVaGVaFWaFWaGWbGWaIZaLZaLZaLZbLZcN[bNYbNZbOZaQ]dYdi`hkZfiVaeVagUaeT_dWbg[ehbkmennippmurt{wy{yy{zy}xw|x}|{{zzx~xuyvuzvx~xw|wx}zsytx}yv|wtxtvzwu|vw{wv{tuyv]ZW`MBtdZwi_OA<|t`dcVSNJFBJA=PFBnd\JF6LH6H@3>9)JH8CD6HJ4fhhIFB(##~~pFB@}z~mik~ztt931;32MNV'+:NPQmsuadauvoLKFTRFUQG0 $a\Z92/yyu`^Y-(074;OS?TTFYTZDBN[r\qv/..823gb]kd]^SJ]PKOEHegjQ[eTcq')(QQE6GL5O@Zl1F*=V@YiXw>R_ FI9GR0MY69>(FM4HT4JW7JO5LV8IQ3JS3KP4NN:IJ5::,lie{}~{}}z{w}{v}u[wmUtkrxoqwtmurqtsssqsswntqtussxsvxvut~t}tv}twwvv{sxw}vyu~xztyttswtsrl{kbb`{o}xk{wj{vj{wk{wj|xk|yk|yk}yk{viqux{~sRUNBJFELH/2/00*22,650<<5CC=BD>??978202.*-(?F@N\VO[VMWRGLIGKGKQNGMIAFB8?:073,1,/0&00(5>8EJ>ι׮uگɟ¤׸YEE ||HYE:1' {v^pmjRzjyjvvvscgh?qvq~o~o{kB<1/'$WR744 `b:[[/JB.++( 7*fSHdeav~lxxvbutbt~xsp~iwu}y~vnutbxuguw{zdjxzwcnwxc~qon\ywehcS|{fywdb]Mywe{yeposs_mrr]|zgonYmol[vubnm[sr`|{gxvc~jsrakhWb]MOH=pm^\XHnj\a\MkhX]VIjeWwucwvdnus_ywekhXwsdrr`qjhVr~lxvqrn}zi~|lsv|{d}wrnpxyfgXW>.?+l0i2#p6$k3!x;,?0s3$5"14!O<[IWEZHN;P>PCTHSIQCTFXHR?O=J6J6J6L8M:I5L8N<P<N<O<K8J8L8N9dP_MWFRARCTDM7M8M<UETBWAbN`KM;E6\-WE[GWERAQ?N9U"K'<"4o03002.2/18'5#D200/1./3>)425 11-2bfbofikosowpLB<>0(oi%v{hq{ lqsr-[[
+
+ #(<FK@48OzKTWER]JLVWMTXJNVMTOQ[IR\IXaHYbIZcL[aLZaM[cN[cO\bTagTbeWdgUbfTafYdg\fi[fi\gkdmoiqpowspwrqurpvtrxtw|xy~yx|xuywtxvuzwvzxyy||{{zzuzuqurlpolpopuqswsvywsztszttztv{vptnb]]Q=2XC9WE<:(#\OM?=CJXiL\k^ck*"$ZMJH@8?9,JC2QI<OI=KJ>:7.20d~3MYI@:YTVʮIDGsorvqr{|o(9--1*/dhj`degechd_w^]SZXNA572)(]WU?=:rpk>C0DP.s|qgly32?Wmz]5<AbXTRLE_WQhhYOT?<:2 AAO$!(^\W\]R7KR:e|,AX(;!/D 6OThs$ !KRDL]6GV2HX4HT2DM2HN4IO2LS9@A)A?-EA0HB1A?/79*kid{}{~{~~~{{x|wsvz`}ujSvkxttooqvgvotsquorooojsqpotrstr}qsuw|quu~s}s}swv{q~t{qwpwpysxrxrytwrsocb`{o}xk|wj|vi{wj{wj|wk|yk{vi{wjyugvpcc\Pe]QkaSohXwoa|vf{m{lRUNAKFGNJ/2/55/;<5CB=EE?DD?>@99<4681672681DLEQ_WQ_YQ^WKUN77125//2.,2,06035-vҸϵc];zrCěxŖ߼βqqXUN!F=TE^['no7?>[WAzvuvwvzxYOQ ruAztsp|o{mSM15241~x_>=]o`_*pt:VVEF 31 0+ F>*eebmz{h{}illY|zfrmvubss_qo]ebQusajyyfswtrontuayzeosxm}{fkttbliWrr_{xgwucntxvu}{fn}pwq|szzyrow{zf~|j|zgmjYovt`mpnZ~{hd^Otx}|isuq`}lpp}|hwtr_n}{hnx{zxmqsu}|gzxtwvucz}~khUS6#;&>+:(8#7"6":'|213|1h.t0u0s2q1r4#`.a1!g0j3#j0i3"k0k/t3 |/}12 ~3!5"z5#t5&v7$z3y2~5!6 |4}2Q?yZHG6B/>,>,~<)I5i;*E5<(<*;'=*E0A.E8!/3215^&Q(H%4
+B{112042//>-7%8&D011/011///0-+,3aebmjllpmqmlI>4~x3nvns qw
+LK^Y%xz
+
+ }|w wtww
+
+vxC}sizkybliq_g\a[\ORFS\IZbIZaLZaN[dQ_eQ_eUafWdhYdi]gkclmfnobjjbllemnippjpnntrltrmtrqxts{uqxtrwuqvtpvsqvtvzvw}xuzuuzvswtpuqmrqmqpqussxuuzuvzvtztuzvqvrlqneii^XWYF<T@7[H@\IBd;9g5</#.;CQFKRHHN0"TMBJF<NI?[UD;-ZD'hR${`&Nf, "fb^*))yxiuh_anffLGFxx?9;%"768f``FA=9/*lmg-+(B=<jeb) !B;<  Z[LTZ@^eOp{Zdu! &4IZF=>d^ZVQLggXKW;IQ84,*A:@+%*?<<?<8TPD]km*Lf#:R!2#2!*:PMPl`\<6B`knmpXGK3HM2BB.II4QS;OQ6HL3LI7IA5PG:PJ8LG8=;.jid}~ryw}~x}xvrt{|uZ{sgOo~ervtmivmmmugopwrutqmmqmunyhqq~oqq|nu~gwl{n}q~qrznylt{n{p{oxm{qtltmvououpm{ilxhca`|o}xl}wl}wl}xk|yk~zm|yk}yk{wj{vi{wk{vkwsf|uguqyjLPJALFFMI473=<6BB=CB=<>999646/24-34.662782DIDP]VRaYR`WMVP-.*0.)11,573@;1ιʫݲɩwh3dzjj`ÉٯҶ}fmW]R9IE"UH,/(~Qlm9\^+01oojtxrVX Z`kzuust|pqiQ62 c`Gm`[:mtqCbh"X^RU1/1, @@ giez~wuz~puxvmwxfx}|hyyn{vvuqrwuwwnywewtczwedaQqn^ttbvw{npq~krn^vsaynttro]qn\osr]zxfro^ro`ecP}}ksr`miXmhWrn_^ZL~}jtolY}{isq_wtburayygqumjXljZom\ZWFxwd~j|yhigVnm\hfVvveuucsr`lkWwwasq^ryygxwfy|gjTR1/../203v,1x+u4D : I!U$U#V&V.U,\1V1B#8
+= < K$T&O$Q%N"S'A E J J"K$L#L$M'M&G"I#K%M&O%Q&M&Q(P&k1k-s/u-s/['W6%B"o-r-t-s.r,r-e*[*Q'?"+ `+/132//037$6%E1:&11012/.00//-4!aebrfijmigjxtbQI#C pt ou lq~ C?) } x}
+un2ę}tp|\I(1 >N+oIdA`?`Br[uhfQRGXdI[eO\eN\cQ^eVbgWchVbgYdhZbf^gjaijYdgWcf^hjdkldlmfnnjqpjqoipokrpmtqptrotrrvtw{xrwsnsqosqnspqutqutqurzz~}w}vtzttxtmspgllchhaeha\[dTMXG@_RJqi^^Zt;=(
+828+(1BAG8464( 8316/,XM<s=yZofx^3=;$AKE@]Z[wuIKRPEH
+'$  4N65965zxnyNFDKDG/', vtbfkh':]UlcmqMKK0%) 2')YQPNHDFD7lt]<@+ED953*GK<PMI7,)khhHQ_!/F&:$5*/<;;B)#/'&:gdoLF7OTAGM0QX;PZ;PX7SX=LK6KK4LS6MW8LL6B=0kiez||}|x}yu~~{}~||vwsnpsvort|t[pwkSpxv[toqkzm}rokr~i~jy}f~ill}iz~ioroo}jo}m{l}mpm|mzl{ntirzeymt|j|qu}htwlw~lxkwkynt}ktntkmyfozgq}imwhda`{n}xl}zl}xl}yl~yk~yk}yk}yi}zj|yi|yj}yj~zlpvEJDAMGDMIBB?DD?ED?>@:8;468145035/66/9:2:;5DICScZRa[TaYQ[U35.872;<6]VIӻħޮŗĥWhd]\ZĉĦz`zcOqdNLD)LF&|zSa\Exy=:/.iZZ&mo?vwbc0SYkp8|wuvus~q}h70pNL!RU`b#FG dc5:1JC(efbu|}~jliXr~j~||ilq|}kddSqzzfsxxxev|}jkwvcljY|yi|yi~}iorxua{{h}~lyvdnzxf|j{i{{e|{f|{fywd||i||iosjfTplZ|wh~{i{zfuqlz~jpqmxudxudvr`m|xf|vfzwftus{wflgYusbnifU|mssyhdU|lwvswyve|zizxfwwf{}jvs}}j|{iwpn{|jgTQ0315!5 6!9'};,p1o,r.^)C%2 R%}3}2t01-202 1 6 8 9 3 . # A6*zpYy`ZL=29 < :9
+8 9 :
+;
+9 7 8 : 8 5 8 = :
+: < > ; 7$8"D C"C"?!C g-i)h+\+F 9"9 q02011/.8#8&:)2M:1122110/-//,3cgblohonnqmys`1(puou ntqv y{HC !wv ~ rj-q_^hDeEaAQ3B%=!X<L2,H*hC|b]XNU[K]hL[eN[bR_dR`eTaeR]bT`dT`eWag]gkYchXag[eh_hjbileklhonkrpnvskrpqwtrvtsxvkpmjomnrrjomkomotsuyvw{xtzusxtrwrpuqjpmejjbgiafhaegc_`aRK\MFui{nqi]WL>=1,.%'.-/8/4DBA@D1EK;;1iQiNn,tYgeT9 (%fec)(+cd^cmkiuvv{zsagz@He&9)/=$+GF<onp<81~}lrka<21\X[MIM QO>-@aIcy@JO*K !U*,F0->"O35=;3'#EA<wzhRXD62)?59LGFNJGOPWFFR$5140") {lc@8.HL>LX6N]7P^=IV2NU6V^ANW8MX5KX3LW5AF2igcq~{xuwx{z~{{vjx{~ppkyvnttsqpvnzj{c{cpvjSngkmkornlnpmrmts{~http{kyix}f~mp|jyir~k}myix~irybyk|m{l{nylxkwis{ehq\eoZt}jt|ipwfpygoxfjuckvdq|ixnoyfmuedba|p~{m~zl}zl~zl}yk~yk}zj}zj{k~{k{n~n|lo|{|pIMFDNILSK/1,30-55.4607939<9:=8>@9@C=AC=AD?EIDUaZRaYUbZV`Y8;5<>:@?5϶Ţ㯙לxruDx\XWWUҦeSC-bT>v}poCoq4}ftr~xjWQ<pNO57 s~RQWZ_h{urkusNguismVqjRM%?> ;9-*=9B=ddat}yhdT|~~muztm~v{}pyyrrvvwwxuys{{n{wwvzmsvt`~y~p}jsyvflvztq_ynmsr^pqt|{iyweq}{iowtp|j_ZJ~{lp}{ivsqqjeT{~{hostut`xrnuvdpvuwxfrtr|}jjWT0101125"8({5"i/g,m.^.c/:'z05 1<.AA'I'N%V&Z'_(Z(P&M*ڻwQ9c+b/ ^/!]-_0\*[*X(X*[+X*T(T+Q*I'N-M+W1: qA0A <&:!?"G%H'W*|4"k'o0b)R%I(; K%x-200//.23!18!H5/211.01//.,2cgat~~bjmookrfaH7$ qtpv ou pr zz
+ jg$uo) } ~~} wm 'uz\V2[6pL_avUgHtVhK\DA),R4xVue_RVI\fN]eP\bP]dP]eR]dQ]cR]dQ\dU`fYcgZbhZdi_hkfnnckmennellgmngonlpmhmlaji`ijbjiimminmrvutxvsxtqvrptqnsphmkekichgdijaghafh`eg`]\TF@xl`rvmaK?1K?.J?0ie\hec0'*+7?2N;Rp=VN)cN v:mPk lw^&! 2866giiliXotmz_bY%W2<US F
+6
+^W[RTT\ZNsRMFMJJQQS+%(13.ilkfYamNVxHNu")&.nRD7 [RTdb[~vF@>WNNF@BLGE94.PTW.2>GGJ-0!'B>3 4*/H<<\YU\\T49)T`>MX5JT4IS2MU6OW6LS2MX6K[6:H)opixop~uynylyf}dy}zz~tjrnt}dsrqvxey`yahhthQjtkpkmlo}~emlrkki{}d}ikkotorsqplp~ow~h}owkykykykt{gt|ht{g|p|ppzm|onvbqxgowfqwev}jktbmweq|jlwdkucdo^dba|p~zm~zl~{m~{n~{m~zm{k{n}l~np~o~{lp~|rJPHENFIJ3@@2=@=;:466266244*NN8EG9@B@CF@GIDINGTaXRbYQbYTaW492:<8><1仙沛Ӎkjg`b}fONeb}rcLz{vezg}y^zh~t}o}pt}rzh91drt'\chm+vhxwS\\+]b_gin/{lT]F7phDhe7NG%..:;89SX@ggd}nyr~~}n{y|p{}~tsalfdRpn\umuslhTwooqw{}iyvc~|h{zg~lyud~lnlZ~j}~irn\a]Lxucro^jgV~m{zgsp^{ygzxe{yfxubrq]xvdvubol[nj[heUifUGB6srbsq^tq`up_oj[^YKsp_sp_ifUunnkZol[jmjYvtbtq_~}hc_Nxucuvbwvdqp]ttbywfvwefeSyxgsr`tsbrt`iTO/1332.15"}3 v1r0z6#d+f+~/z0}5$21_"[-d,f.k.k+k,j+c*ʼƥϪٲŠsC0k.h/f.l0l/l0!i+f*h.c*_+Y(X(^1"Y-Y+Z)c.r4 I T2$<
+e6$k6"c0n.3 s+q-j)U%C$F&6
+d.+1-1//233 3?(8#120114"2/-,8%`c^||bqokfkepe`H3(voomt ou
+ot prz} ~A:;3]Wxt} |y{
+wn~r%”sY:.546D"T1_?C%H)O4R9C,'F)^={b{UTL\dLYdOZcQ[fR\eQ\eOZaOZaP\cQ[aT_eZch]eiX`gV`eWafZdh]fi^gh_hi]fh\dgZbfZbf^ggcjikopnrqkqpglkgkkekigllejjcijbgiahh_df`efgfeMC>|pwlRC7LA4D:+F@<rsv|xolkETd *>QZ;yXpa8aX.jT(#
+ [ w4*W$E+(?87qpi83/SPQQLN6..TKJSHBHCC;35/+5 DB6FJ+86!43EA3QMFxwshh`MR8NU4OT6PW8R[=PZ:S[<P\:Pa<>J,ljd{v}lttzksrrv~eqk{wprntgkpjlo|d}elgPvs]piT}x`rrfQmlwrXnmmippj}jl|itw^mm|gphlj{go~jtqt{fxg|n|mrzns{foxcowbqydu}kt{hx~ims_t{fu|grygoudqxfu}ixlw~lv~ks|gnyenwfnyfaj[dda|o~{m~{n~{n{n~{nzm}zi{k~n~n~o~zk|nry{}pJPHCNIGK;64 27314/24068(km=PQ$AC;DGBAC=;>8@E=UaZRaYRcYWbY:>8AA=AE@B?5m}ˑcb9=TM{oE?|sq{wfqgXnj[pi^{wjt|o~o}o}pp{dvnLzsPli=rwbg be&VU&JLGI FJFM SWa{lT?3{~mtpKce2likMDGHN*`rgdeaqn}~l~l|~jssbssaqq`qq`{{jqsnp~ipn}~jl~~l{ygvqa~zhlmqxonyu`qotxuecR|ry~~l~~}~lwvjurvml~}iq{k}|ktuwtdxu{xf~kvutcuqtp_mu|yeqoqn]tzudpl[zwh|{ivsbvsc{xhxrbkiX{{iuud~{jusbtphSQ-.22102123v-f(Z(b,6#3~1z-5`" a,a*P$S"Y,T'X-kٱ޵÷^'n1 i/n/l1\%7#w0r3n0i/d0a/e. `-_.\-`-g1"CUETCM<A1G6O>@+-y-n+[*>"L%<$< |4 -020/2/04 /L8/13 04!20/..5#cgeshimmmrq`WFb\Cq{
+ot sszz
+~}waYB8 ;3 >5RG {|~ x zo
+{mJr_C-46781-+0426`GB*! X:fNzXYI\kQZgQ\gS\gT^gU_gR[eT\eVbgVafTafS^eVbgU`fZdjVbeS_cVaeYag]ei\dhZbhZag\eh_hj`iidijglkglkgllekielkdijcjjahh_df`efcfhXWUph^|pZOCRH9I?-OH2fgfwyB=C`eiABDWTKYVV.*&NP@rnPYL:A5"H<*>3!""+y}yMNMduZ{PcXJ۷>۵9?IUelZc}wmrn{AFPUbbRU_^Ӫ̤ub_I~xi~zhWUiJMsACPRXYVVl:AH'.nʛ߯ƗsDD020'0-QY8JL3MN6NR8PY;PR6RX:QX:;?*pnhźuyyzok}vkyttcgrirmyzfgxyplstsw{w_sfoePxxalkxqvzf|hru`qw`oqZz}fw}eyjlrpulpusqro}lw~h|mr}mvjr{eylu}hpzg|pmubnvcmwct|gqyfjp_ovbmtamubovdlsaiq_fl]js_blZdo`gp_fr`irbdca|p~zl~{m}zl}zl~{n|k{k~{j}yi{l|yi|yj|ms~}}pKQJFLI\YR1."22'6729<1jl:W[CEBEFE?B;<?:7:3:?9Ta[SaYSaWWcY@D@CE?@F><C?AA9ŲŝpiDD32ibWO~i|i~i{nxuk{llfH[pnGkn}U|zB[W{{LYX*<bfVW$LNJMJQHO \_+tzxWC3|mmGFeg;iiB^]9x`B;sjXQN9EC W[:VfZfgc{w|zs~yzhx}v|~~kyvv{wu~lqn\vrnyx~}jtzxe~no|{hw}{hvx{~ywf~{wzuwyyh|snutapm\{yg}kokZm`^Mb_Psqa~|j{j`\KRO?m~mkhWmzwd]YGrp_xs`~ydogcPtrbxvcqo\|zh{zg|{immo|zi{zivtdu{|j{}j~muudsrwdiUQ,+//00012435!x4l-6$44x16 i${1.y1|2 s5$n-g+}Բ̧֮ͥxC-6*7$23w-121:%44!6$53115 8%T a-Q^$h)d%j,~011x-_,C%W*J%8 U%-2012154 14!4!A./4 3 3"1///.7$bfbmknmmjhoYP@F;%Erz
+rq wt zx~~wrk qh} ~| tjs~sx,kqK//246,,//+-3-/R93 & ?2U^dQldZwabd_z`Sc][cg]dkVagVagT^dXbhXbf^fjX_fSadVaeXaeXaeV_dY`gX`fYag]fh`ijbhiejkgnkgnlhmlelkcjjfjkejidjjaghcghadfec`|qe[OL?4I@3@;*tyESSPN%!)9;/dmu)#"+"ecbrqUqg@{j9ze(r4x9{EWF*mllOKBxe=~"# Üԫ/خ9ѰFЭIKMM>=\yuUhhGN-4",&.)4-8/93:68_VѦܱѡاᲛr^WHL/7(0)4.8/83:BGeX΢ݫڬw99NN6LL6MM7EF-PN:LI4MK4;;(ljeoowqqpolnvrqs}ixrkgxw\v{mngmkm}~bsvqWwtxlUus]~euu]su^x~dx}dlmvouw_mu{ew~eflTs{ds|cs|cyhop}i|jqu}eu}hzjxfszdxjyjzlt{hoxektat{it}jr}hv~js{is|iwkrzdjtaovdltcisapyhkucjwdeqbhudbq`^kZdca}p~{m~zl~{m|n|n|j{k}l~n}yiqppnzsaxq`{ud{k~ykKQJINKJ8*`T6ee?ppUHJ.[_&EI9CEB?B:<A:782592:>9TaYWaP[eNWbX<?<@A<>C==A<:B;28/^M?xi^WD?.*2(6-RQ^Yj]n\xf~m~pmfFRMRRde+_`#il.os*_bNRWZ ~PppLeaAMOOQPXUY{|xyfRErcT{ytNWT'vrPsMD*rcg^LHI4AA#JL7efb~qzyg}kqsrsb|}jjkYuvey|jomsnyqomn|}j||l||jyxenmZxucxweuuacaPywfyxfqo^uveml\mkZxxfvvd}{h{yg~|g~}hpwucmjXTPAsjgVro_<8(}uturtvorp`xrn_mmyrzyip|zk{vh]ZJz~~lxvqq}{ksp_hfVnnkr~mxvcyv||jfeTr}l{|j{|jtuc{~khTQ..000/39(8%234$u5&l-4}0~4 x3x2!q.|19(7'7&{2 /w2¿wpÜ軆Y>2"4 6#25"34"c*8%16"7$4 5"3 15 7#o'4!z/53~25#001{/g,C\+R'B$7 n/0000./228%7$B/3033 00//17$dfbrmmhhqroSK9K@3G=wyms lplplpjnlnmm ml plwrxtztyt|x|z{xzsyswpwo ne vgo#nqnB&6+/*+0/0--,24='R:<((6"mrkebqx|s^kebfo\cj[ci_eiajm\eiW_eW`fX`fZbhYbeZcgZbf[ch_hi`ghdijejlciieliflkglkbggbghglkinldjidiidhidgj^[[VPGRH=MC6@7,LJHBKEqw>Y^(7=GW'K\-FQ2:69&OOI@;:KC*ttZoaAyf1ra9sc<nXdO96%g/* ƛ.(SI+ Lmb|us>:{+!X[6x?̣F\|lE",5=BNO;?|38TW:ABLGU@KNMj_p]L\2%xM<[ԫ&#?J7>fen*+'-OSRX?S?SdavlL?[%H]%NX/y}VĒquMCG+LR5OR7RT:QW9JQ2=?%b`\cymqortwevo}bh~elclfiv}{jnh{{b}d}}cnumsod~dlplSzzbe{^xoWczr]^ZJz}etzcip[ciVglUx~g|~fl~hns|h|ju|es{edlTs|es{cjr]hqZw~eyjzlm{m|oxjzmxkt|gxkxlpycr|fq{hjuahr_rzgqzekuclucfqahsaoxfhraen]eq_^m]cqaercdca~p~{k|n|p|n|n|k}l{k{k{k~t}nMN?HPCOUK2+^X"TR-PP8NO.KK1CE#LM501!edN=A/;A<W`UWaKTcRNYS/201/-03.2615:75<7wocn\bZPN200%+$=B[_qjsok}lmQI,&#
+uj vn vmxovo sn sm ri mdf[ p`wxklvE,6 ,++/02/..+(20V<N3K68th(;v"O~+\;vTuQF$l]bsjfmqlqsjoqaeg[cgZbh[ch^ei_hi^ei`hjbjjfmlelmekk`ghafgbhhflkhmlfjjcjidihhmkfkjchhafgbfgbehYY\859A<73+%.&*XRV=@CLa,Mk&Nn,D^"H\'19B;=92130,gghvpUbV.nr"aeOngEeoK^AuSnm}Kbg/,M 
+| \){խrxlYSPzxY aQu!DNchusv(2vGL.V$tl7,_,+4^p68lkj[ZeQ-E;NƔ8>-<G3"(%2:񾩴Vk<bIlRqWtXUo>mkg~lestwoUhsmTupZi{rpis{vcmnmiaovulvw^kmTh~ex{ae~~de|v\}dznRaznVN@4VG9i]L|yhqs]x|cnn~iziqu_uyaryafnWpwax~fpxis}fnw`hq\is]oxcrzfks^bmXen\u~hmuao{gr|hrzdr{fwjs|ft~hozekubiuanxejtaluait`gr`cn\co]am[hsdr|lan]ive_lZgobdca}p~{j~{j~{l|l}l}k{k|n}xi{nzyyxx{|n[wkFmj@JI6ge@XK@.XR-dd-LJbc932~|V88#89-ntUhnNT_QZeYT_J@F9<>257224//4+02*qfOMBAXZ>@财弤㩛Ҍ͍|~{lxbzhzjwoZ^Z1dg#bc]`X[kn1QH?7SO(SU`a8zzd^].YX+zqRYG3d]<&
+quoq mqkpinlmlmlj mh mg ke ndrfrgodh`d\d\ d[
+kbt+wsomdIq)&,---.*+/./(2-:$F/7!mP!?p$Qx+Ru,Js&dFtX<xcQzwu}xuzztxxjooglnhnohnogmndllglmdlkekibig_eg_egcijdjjdjjinmhnlglkdihchh_ff`ef]dd_cd^bdWW^6;PSV`;;A>>K+"(TG&Ze:Im1Mp2Oq1To1BYI\*37!>777011..LMPPB%wqPyc1l_$ D_LZT^c@aB Z: |X z+S,h(l47Nf$(l'*ljjivt}VViI A Zun+hTJ~uqkcDCII:;_^J K&%S !KJtGF{{xlM >
+`q!%n`HҞٗqvmjA)(Qi U=C.?KBXkbfpT9FR_tD^g0E %6#%(!iϗ`?Hm,>]#8R6O,@fe`brv{^xy}tos{t|rnp~nw~bjutz|aijP}{^hkmi}ijq]uzakqt\nlTm}dz\}dL@9L@8PD8YRB^[FooY{kmrZqtwr~kzju}gov_ir\ozdwit~gxjzlvilu_kt_mwdmzelwbgr]\iVjualvelwbnybnxds}hlxbwopzgs~jp{fq{heo]jsbjudetdjxg]m][k\\k\UcTSaR\fXdca}p|l{l~zm|k}m|k}n{n}zj~n{~{{|}|qDC6BA%]V/d_$@8@0%KB/<53-:3$KC->5IG;`]DWM\aGciSuyScpLSH2bN<mZD\L:c]]]uqdbIJ¿Ş彤ᮛ٤Ȕ~~ms~rshZodD}RxuLjf?h^6QC D:kdLZU6jv|cEAGH HJAD MKdQ}smD@ORFG?B TT(X\6]lS`pfbcaxr}p[\KbdS_aQabTXYJ^_QaaRceUdfVjj[aaP~~kq~{izyg{|jmpo_sr}lXUEd`Osr`wt~wqt|||z{j|vrwuqqxt}lscSu[LnTFnVFop~t{~py|ny|ltxgij\uzlgj[rdVgE6hD5gA2b>.wgtqsryo_L=`8-^6(]5'\>1}~njq`gj\ij]jk\hi[_bV^_T]bVW?5_+c/ a/!i_gUS35#4 04 5#3 1426"z9)x?1s8,}3 p/6 ],{4k-o2p/o(8%5$X'i+g9%rymwuaGt+{,~12100g(<*13"4"4!:(6$8&7$8&{+9$+55!5 5 2/21}4T)h/i,^)Q'A$2l003.-01.24 6#@.1.0///07$`c^pkgjmipXQ>LA3H<06*!0"$ /$nkptmrlqmmmmlmjilhmhng mg me me mc kcld lg mg Ptqmiel)%&--0p+h#),,.))017 kK>f$Ms(Qv(Ns'P|.bGz^9qR8kcy~}pwunytnzvmwsqzvlrpipofmleljflkipmkqoiomgnlgllhmkinlgljdih_ee^de]cd]cd_de_de\bdZ[_CJZ?EZ@ESUYbYY_UWEOe3Jm/Np0Oo2Da$D^$8O>R#BM28:(37$RWR*%~vN\R6|h+KR=wmD]aCcJ E/fOgnU`*SS?9#
+ H F jpjIKXXVwc^Z^+.m$) xvO'&>'$$ ~hdqe_feWWHHEIImKQL1%zW}mXoge*!'>dr48ZQS9<H7=O;FY_[h8:V/Kn>^ALm&>O%&-KQEDU5>L"@J)EO/FN4BI17;(fe`ftgp}a{wzy}b~dqrruvyygvmkpoz{cix|`x}eou^x}dbkRmmTb`Hjt^pt\xoTskWeXJg[L@5&nrwbmp\[dOZcPbgU\dQVaLmt]txbw|dp~moxbmxahqZblYbnYmxbs|fnvbfp]itbgr]oxciu`r}hr~inzfq|fr|hiuaes_ao[ep]hr_fo^jubnxejvbozf^lYQbRObQYkYao_]m[dtcjygbnadca~r|l{l|n}l}m~n~o~n|l~n|{}{||{n=>0\a:]b2=>$76/8937<6<A<EE<PK9RG,H9$KA0_U=F7OB'HD0GH8NC.qI/~L+uI-~G3t;,H<hef[pc[WkmvbRt׼ġݺحը–sn}npj~t`utg~b}dxrqkRJ5SI2ydgaHTM+5. KIRSSUgj-Z^rx0z|Cjf2^Z"QN++
+9\(y}y|~~wyyyv|wpyunytq{vszutzuu{ww|yv|wqwrpurmrojnlfkjbhh_ef\beZ`aZ_b\bdY`bX]aW\a]]]fhiJNWDIW07JdvTGe,B`"Po3<VLp,Fo'Io(Jj&Nk+@M/nloI@-haLza)dng^ls2t>vPzVX`V]E-;2 jILs]]jYW[('WK HE#!\s` !zu[[Tha[\OP{ek\PB33zdc! O-+n:9uOKd@;WRR
+ EkYXM-,`z%%`R i45EEF .Pn W&%==@7G`3;QKT^(;\&9X6K7>e?jF_*!mkj;6+64 DJ/<>*<5'86(hfa}miLTSBur^y|x_ys]lknlP{{a}besllsstondlk{hqv\ntzfsy`v}enu^qyb}}cz|bwhuu]~fviy{dwoVts^ddOuv`rq[ns^lwapw`x}emxiv~krzfkuanxdv{dyfv~dkt\gqZr|fwmzmr|ekt]lw_gpZ_jWdq]cp[es_aoZlzdhv_p|ger]jxckxdnzep{gt|js{hp{ho|hjwcbo\iweSdSK`NYk[hvd`o_bp`^l\Q`Rdcat}m}l}m~n~n~o~n~n~{kp{|{~||{{lVV;BH*LSP2665715927:5?@<CC8ED2NO9ML0AC954)=6"TQ9Zc\Zd^WZSN=3{N;A6;1GBPKXKubm^ZZd^FG'[U)tYּԵֳˡͣ|o[rsphMzbpwa{qRgrrsrhqhJG9M?&^V=unhJ85:>
+_f ou5JEIB:3<8 QIOCF==?RS0UU/YZ2dfcqprsbF RR"S!X$T"S WN#{qxxz|zi~|kwxfuu}|kquxfM?d#b$h)i,!f%f'c'd(g*!^.$|}o|wwrvmeY[(k"h#i%yP?twjHC@PNHZYRROK]\UONG?=:glheWL_"`&]$Z"eUss|vwtseI2(e'g&g%R :>8AA>[^XEGBUWPKJD21/iqjt|sP;4q1#r-o*k`gYW;*;)?.B4E7G85#8#<+;/9)8'p6(j4&w5$s4"j5$m1!z1h,g3!o1 v*D1g(K&c(^'Q%D$eM9kTq[{dK[<(Z&o-x+*-0-1/5$@.2!7#8&4!5!5$7$5"5!<(v-7"125"4!4!3/312b*y4#s-m+d*X)I'5
+a,.0---//05 2>,6#12 2 206$cfcji|zezh~ydke^MJA5JA5C:-4( 3%'( 1!1 A5
+njrukploknmnkmklllmi mjmjmj on rp }4oqmkfmqB+*$#''',n p$,(''+-+m=@TFeJm!Nr&Nl'=W5G<W!Eq,oW\Emdfcmu{||vvwtws|tv|uw|vv|wrxsqurosqhmjbhg_ee\aeY^dX]aW\bV[_SZ`PW_SYa\]^Y[^jkksuxBHTpvu|btO?X)(6Ku*Gr&In$In$Jk%5>XRV=88?=-lf:wt"t>vUpTkRUo7F\+BZ'Lf'Rx0vZuu~XdE9pTQWY\ s43LHPA=:.*Llv #kGD_]WXHDkCDWc/ TJKR./a"!`kfdF
+ *Lp}<>J20qo$ 8^#!q.-iUV6GZXbp78C./@8:C58*BP+BV(LT2F80940b`\OH8RS>RK>YJBF<3gfauvjjORP?spYpy`lrogsrs]mmXRUAkiTvw\vy_}~coisjy|b|fqw{aw}eir\owa{jrycyfgcLyy`nu]hiSrv]pzajjTtkTuu_ptZs{dtx^lpXt}exgpwfrx`v|frzfjt_gr\kt^kt]qxbmzdozefp\_mV^lWr}ftfwhrzhnxekvajwbfs`dp]_kW\kVZhTbp[ft`cq\et^_nZjvdnyeft`boZoyfgubds_fudcud^n][k[[j[_k[_l^^k_ccas}m|l{m~{j~zi~{l}yj|yk}ykqz|{~||{nCH?CLKKSP;><CD>FJCIKFJLFLNEMNGEHANR=66,D@)BA%U]JQa\Vd\FOCYaNbH6D9=-odeZhZp[]Ohd^ST^E<9&|έ}oYlqykLgZztHljqqycJC4120
+A7K="0$ i_Rt<79: KQfn*a`(7- 0(
+/)76 <?TNie.hi7ab5ei9hkCdgcxrvxhkYLU$[$Z'Z%W#X$Z$\$V+~qtoso}ltuy~lxtvfF8d$b&b%f)d%b%]&]'_)a5'zwts`wt||iqp^}|jjjWldYZ(i#h%k%tM<|sMKEUTJ``UTSI^^SRPG@>8hmfgXP`!b&\#[#oQBrubhfVa]Nml\srb^\PJ4,e'g'g'RBF=GHAjmd]^Rkm_ZZOB@:gpfvxQ@8l.!m,f(l`iVR004 7#56#428$>->.A1C6s7+y4z/o6%o3"{1o+f1j1!u+1i&V(f']'U(J#K#L#O$Y'e.m-u+-,..2116"5"1"7$9&5"6#6#8%5"6#<(v+8#03123!2/6!20|<-w5'x4#o-g,])P'@$8w1//-.02013"5%B0/1/103 adaqijkmkWPBLC7JA5C9/6*!4(."2$4#4#7$7$OEplrtlololojolmmnnomooq qs nm[onokig\Cz*$&}%'(%*i!O ,,)*,L0TT(:PD_Il"Ni&8H4C8Q4S8^u^z_T<~QNs0e8eCl\vguilfkjenlmuqnrokpmgmjaff_ff\cbV\_T[_T[_V[_V[aQY^NW\MU[SW^UW\6;KRS[JHK]^_}>I.Ko$Rw+Il%Jk"Pm,$#  wzvhqN]u4eSe~TKS.2( # 7N!W9lL}_&N?)`m@mgm;4c ^
+ D I0. 4bum(*iWVA:7iKHH F&!4-,xPKb/-^b##U'(L44=87?;;A96<"Xm""mj696*%&)"3.(9/->.,J1.J40H@?A=@5-./$!2($+ !+"1(*9/.NC@<3.`\\USHHB3PI;UK>D:2fd`nkQspV~huq^qjVx~x_hlnc_IdaKkiRj~~gkxxg|w`K=)cYC[R@kdQRK9ihSnu_`kUelXqzbpw_~htuZru]x}d}jiiRtx`v{eomUxqYyycv~cisZiqZjt^r}fkwar}cp{dnw`enXalUit]p|es~guis|dku^iu^pzclxalxcit_it`fq[]lWcp^gt`juaeq\hs_ozfkvbhtahubhs_lwbgt``nZ`mZ_mZer_er_lxegr`]kY]m[\lY_m\VdVL]NZjZam]Q^Recas|n~zj~zj~{l{m~yl|yk|xjytf{rgf_PeZNj_QneUvm\}rcwf{kxkHLGEJGKRLEIFLMIKOIKNHFKDBHA>D<;A;:?8<<*9:)6<*R\QQa[Sc[XeYUYJLD8]J?ZEq^hYhXfTbSsjYG>K^U?JCx~fkTmp~gNost_vZse6VT~yfwsoG?E@95;:n{nvjXM>%?9 ECusJ]`*pi?^V5n{asoMljFa^5XW$^X ca*no5kl9_`_pp_mn[ttehH=[$[%X%U#U$V#Z$[$U*jo^owxfmutbnm]khYcaPpm]sraljZ|}kpO-!c&`(a+f+"b&c*b*b'c*`3'rnrxwgzyhttrao|{koh\X'i$g%i$oG5`aYhiaosifg]knbef\TTNhlfh\R[ _%]$\"wYJxlj]ji]~qurreL71b%f%i'TAF<CC<\^TQQGRRFMOC761ZcZyzJ94k.#q.!j*naiVR000/0234 6!114!2 p,s6%t4"q6&j/z2j+l3"p1q,|1u,`,j)d([(Q%V)S'V'e)i)m*q*{005 03"2/16!18$7#:'4 6"7#3 4":(u/415!4 14336"1/8'z9+s2 t0h,b+Z*J&8 L!20/-./2/128#<*2 3 22 8%dgdklskzvbkPH;MC7H?3C903'5(0#6&:)9'7%8$;$:'QE khssnqkplrlroqnp rs tu_PoTjjkiihy[`"('{'z$%%$({(e bs!:%cgLC%=D>T<Q/A8I9Q6P6O/K9a _FR<>v,\J1Y/L7Z1\5eDkZmb`bZhk_ghcji^de^dfY`cY`c[be^eg^df_de[bdW\bUZ`PX]W_cSTZ#<(+>66DZ\d^`dccdKb.Rr&Il%Km$Pk-&$% (- &8GG"A/]@[:  T;2cI_i|Y#8 Q_>,\X<{c}^NED%& 0*,%Glv!!f69*%+ih_IEC7--=2280.<65>53G85J98>211-*/+(/%$0*'/)$811C74`;7r?=B0,6/-,##&(1($E;9=2.:,*?4/</*- !(B:8IC@jkfSO?VLAYNEC:3jicw}pzupW~ya~dniRgcN~fuozu[ovpmpvnSdS@\E3W<,70;.$I>1JD5bVEtmYtq_zv^ulsjgdNu{cnu\abJrjTf^JllTyjr{cnwajyafuacsZbrZmybju\jr\dr]ft^\kXet_n|diwagu_o{egt\lxdju]vir}ejvabo[XiW_n[kxdhvbTdTQbPRcRWiW[kW[kW`mYdo^ivcjwdcq_bp^bo[jwdhtbhubhud`p\XhVYjZ^n^_n_\i\fda}n{k~zk}zk}ylxm~{j}yi}yi|yj~nzvipk`nh\ysdyv|nHMFCKGKTM<C==B:9A8<@8:?7:>69?8:@9=D9;>/EI?AGAQ[TTaYUc[WdZLRHELCEJCgYxeo_aJpY;eS}peUJM_YJUMpctgFcWE~vhzg~eVB/uoZusslRLNIMI ZY9{ys{gE9^N=/ unRaf`;j[\#^a#eecgdTy|jqrbhH9Z!X%W$V$V#W%\$X#S)uyj}{kjhWro`kj[wvfr|zjvtwyWE8_$`#_%b)`%b*a(b&c'`4(wxzrzw||jq}nrk]W)j"g$g(lD2zHHASTLde[UVM[]URUKFEB^c_j^WZ a$a$\#tWHoq~or}~lWSG:&a'e%h'TBE<A=:__YIFAHHBRRJ@=:TZT{}SEAg,"u- q)najUR/2314 5!6#8%4!1224u/u?.y7%v1"o3"x1e+i/s/s3c(r1d+l,j*f-^)d/d0 k2 p,r/s.y//...6$a$5"0126"6#8':'4!27#4 :+v/114 3#4 :)29%221u)=,1/u-n,h,X(F%6
+g-00-0/011037%4!10.7#beb~h|yevr`~itrQH;LB7H?4B8/5( 2$1#3%?->*<)<(9':';%;& H5^SmhsqssttutnjYJV9(cLjiijhgjO(z-&}'{&v%{%&(#(/u-fjlO;%74.;1<6J6P8Q6O5O6O5K*F<e'Bh,XV@q:[.I6U;eAn(HGPWef^ggahi_fjX_dQZ`R[aX`dZadY`dX]aV[bUZ`V[`Y`d\adSSU!".,-=*1E.4L=?N\^hefh\[\npo}|ilVC_Jm"Il$H_*#6G )0ghcfN#v^%fED) % OLN6"hHct%z\2]f,-I734,%78.>96;44C=;C:8C??A><K86W##hx02F38*%(' )#$#"%'""*%'001>::E@>:1,@3(>0(6+$*#)$"2/,I?<O>:( >53OIAYOKUKHOC?90.!8/.MA>EC.GL+RJ=QDB:-,!/&#GB?ZWP40)(!% "hfanso|xsY|d||p|z^usYiirrXIN;\bOtkRoRfLkRn\IrYI_0"_)[+_9+L8+/]LA&'2)C6&E6"i^HuiNz`dZR<hZFK@/_bNoyx_wv_pwamv`p|cky_p}cmnUbbNiu`coY`p]TgTTfSar\frYty[npY\_Jjt^phrgthq}gp}gjwbft`[lY_sa_q^ds`_oYhv`jxdgvb_pZXgSXhUQbRReT`q`hvdcp^^l[XgWRdRZjZ\kZ]m[Zk[QaReca~qzl}zl}zl}zl}zl}yl|xiyj|wk}yi~{kyvizthr{y|~}oGLFEPKKWO6<735/47036/360460692:<4<?8;>6BB<@A<S[STaYRcXWdZOXLFLECHCdZNt`wbWG#46 eOui}cUM^TLXPzwxd^[]_fb%eY7`T:}gotorsu}bTP$96c`A|zwvws`R=\M;.$96 LG){DBxuL::
+EI\^[{{j{oxgH:\!Y&Z%X%U#Z%[$W$S+vyi|zjkhY}}l|zioo~mnopwdUFT `&c'`&`%c'c%i+!b%`5'szixwemm\ywgpxwfdbQdaQecUYREX(k#h&g'lA1\^W`d]nqhcf]df^`bYQQL[a[ld[Z `#a#_#qRCw~~nttfpyxhppbVG>Y%c&e(T~DI?@@:^aXHF@GHCVZOIIBW]T~RHBf-$x/$w/!ufiVR.0001335"7$3111w/u2{6$:(y1u/c*l2!r1n/c._+_(v.n.])c.j,o.t.x,w-w--.-,/8%^)6"/1425"8&8%15"7$4!:'z/4136"8%D32>,2226$G82 2~-s+i*_*Q'?$< w100001//016!<)0.28(chck~ik{wcyv`~iPI;L@7H>5B7-3&4&5'+5'<(?.C0 >-<)<)<(@)?'C-H4 N>PBM;O9U9+U9*bG0qjeihhi^D-P -'{&y&s$p%u$z&x$p"j$|[EmghV=4.&3/>2G5N3L+;'4,@4M2J-FI?2;&B3T6P3D/@3H4KVh|zukoi]c`RX[NW\S[aS[bU]bX_dS[aQZ`W`dW]bPW^W^cSSM-7&.$))',9'.A05G.,6YW\B;AWTVz^UJ/8Ke#Jm$:O3C?Q!:1<2yoGgN]?& =8<!
+
+D.mLiq-P3(@/25/.+$$+#$$ #( )##2--@><LGD]<:k(&W'&+&$G=<MDAQIFQIE@96*! !(!#-))PIEZK@3"I7*R@2N>1.#(#"=87RKGoe_zpd]VM-! >*&C/*ZSQ=53+#$BB6EP.YQCRD:VG:L>7&+ !E@@)! C83E;8ed_udYZDXWAkeN\[IvvaffPTYEkq[qv`ty`qthcNhZFv\}aK]A*XB2D2*;.-@//R k)I+UB2SG8LD;C91J?3?3(5'1<'1dJ6[9"G+Q;-B0"]XH``L]U>kXAP?({i{qjv`ufov]@;*73(sxcnxbhu_ar\cpYkt|s[>O;'_\Lfvb_r\dt^es_ixbkzdjxd_p\gta]kW]kVcp\er\_mYap\`p\ap]`p]]n^ar`\o]WiXRfVWjZXkZjzi`ractcYkZ_n]XhYecap{l}zl}zl}yl~zm}yj|yj}yj|yi|yj~yjyjwjzz|z}{lGKEGOJLXP261..)23-683:<6=>8CE>DE?EGAGJDIKFGJCRZTTaWTcYXeYMVL;=7:>99:1ubNP>6602 C:ucgZM[UL[Sxp{dLChd-ik1gh%[Zc^+UJ-sPwqElvtwvwouoUztzt\_Y?[T7cY>xzQL#EF:/F5 [K1{pYjhg:be/GH`_/76
+FFfhfuvsdG;\"Z'Z(W'V#Z'\(X%U.queq~~nqp}~m}}lrnrp`q~n~iUFX$W%a%`'`&c'`#e'd%_2$wpvsey{{zjxvexue}{lhbTV(i#e#g&j=-mriouk}wtxmuynuxnopjglemc[Y!_#_#_%lL<ystufwz|~oZOEU%e)e&a%pb]aWZZRef[TVLVWPXYLOMCVXMv~tQIBb+ o)9,xihVS./0.131011211v0r5"q5$u5$u8%n0h-o0g(Z(_*_)^'l'n,r3"v/x,|,~-~...101327$k3$3/154 6$6$6$127&4"8$|-14 5!14";,8&242247#=)31w,m+g*[)I'9 O%2//020010/6 :'2!1;(bdconj{g|yezjOG;J@6H>4D:22'2%0"4%<-D1!C0 C1 C/@.<)>*?,A,C-D*E+M2$K2&M4'Q9)T;+R8$fijggegy_GD*P ,'z'w%s&o%m'k%n%r'a3 mfx]7),8%1.<.B1J-?% ,61I3LLC!75*.1:3@/7'(z&$,+1?<[ut{~ytuwnnqkbdcY^`PWYRY\RY^OW\NU]RY_Y_ePNL*1<K#0<LQ<420HHRVU_``bVTUgb`OC>i]TRK<8EJ_&Jh%6L<J!5.dLXA TSQP=\A"5' #*#!B?A]XSQ9~Yp"E5($).$#>53J@?PGCJBBA:90)'""0,,>>;TBBhA?1!]TQ[RKG<8:-)/&"+ >3+YQIRIF0('("$@>=820/#-TE3C5)( 1,+[SJf]O=6/&%G94G95}|y;71RHF.%'NFBcYO[MCE9*TN@M?;!,""JC=OK:EB2fgb|}bwv]dgRabNdhT\aPem]fp[mv`|kt|bkt\qoWmP5y=.*N=<A0*B2-*1!$G$+#,#2$7*>0#?1"I:'RB.^P<4(2#G/?%6#-C.o[DpVu]mTsU?|iRaaH[n[]r]ui*-/.$wxc{|dqs^baI{^nOfGwgF{hM[F1OB7PL?dp^^r^YnZRhSRgTXkX]oZftao~imzdmzdkwbeta`o\]lY`p\^n\`p^ap]WiXLbNC]KA[KF_MJ^LTgWUiX[o\_q^arbebapzl}zl}zl~zl{l~ym|yk|yk|yj}xjzj{kzj}|{|}nGLCENILWOHMGQSKUXPW\UW]UY_VY_UW]TTZQPUNMRJEKCT]TT`WUdZXeZOXO6948=7:?96=&<@2164<>'q^DeREN^XL\TxXQ+_[ARL2pgLZR)QOYW'H;A4 kgG|xvvvvz|t\A;-) ,* =;!|xsWD;YR:s^S4+%#>9UU'_\.QPCFHGgjf|xsgL=\(X(\)Z'W#Z&\']'\4%rtuwzzwzywwfqylYI^$L\'`&`&c'a&f)h&^0!xvs_]ZLuzyg}{kwvegfVxvgmgZR+g$e&g'l=-utd10'1- B;2-&64*-* JKCpf`Y!a#_%Q!dI:o|}lbaSprbsucppb9.$K#U"_&[#n^52,2,*YVO:71=;7NKC93.KLDy|YSLY(b$j(vghVS0010143511511}1d(a+d2"]4#]+a*x2v2#t5%u4%v4#w1}5#22/0.000-/0/1/7#<*3.48$14!5"5#244!2!7$/3134 l+~@.8%15 3/4 26"4 4 3v/l+^+Q(C#3 j0/00/000.-07&4!0:'aca}{fi}hkkvr_RJ?H?5I?5C812&5'-, :*A0D3"E3#F3#D0 B/>,@.A.B-C.D/G1I2"K2#O9)R9)R7'pXbgggeeuZK1"A'K z,({'w'u&t(t&u'x'g0 wgQljL;%13(6%/+:,@.F2F'#/RS1h[39'),0&('&../0/0),3?=VO[uIgXj{oy}v~jm~p}{pvsmllidgd`cb\``cfiWTUmxso`af`afhggnjgida[LFK8/>="6RCcNi.2?73 
+5#3 40(~qmXYD')
+ 0.0ecaF7&lLacO+1'&WPJYNHG73J?:':0+5.)NGBUNJLD@*"%10/JGDbXS<3.~vq3($2'%,##1#>."QKHvqf]SGMCB& !JDA1('* "0)(%WF3J<.+#"1+*PGB!(NC>&7-*UPMonl5.(QFB.%%UJDSC8`WL/)#.#TEB3,+MH;FC4ffawX^FPQ;^^G~j|j}lqvnfxxgx|dv`K/ĨUG5aRJhI;J,!$ 2C-$2#, .=- :)4&0!0!4(4, C6'Q7(9=f@3P2%X@c2>G%0Y2#cHnUiq\R[F##&#=3({aqXw^{fMqfOjlZq|iffK~nRj]NIC63,W`PTnXSlUWo[TkUUhUWkWWiWbr^et`YiUVgUDXH`p`br^WhUbr`\mZ\m\`q`[m\PfUWmY`s`WmY[p^QeRSiW\qafdcs|l{m~zl}zl~ykwl|yk|yj}yi}yj{kzkyix{z|}oHLFEMILWOHNGHKEFKCDIA?E<>C;:B89@79>68:4593391NVNTaYTcYWeYT\U6:3:=4>B<=C9,,-+41 FG8ZRDnWHOZTK]T~kfQrlWkwn`e[Ahk7ll:j[=`E5PI,wp|_pvu|r[=3 72., "!liU}vpMXW%PF-$ &#
+871/)&$"
+*%C=4) ?1RHKF ceb}ny|irfJ=Z"S"T"Z'W$V$U"Y#\3%vt~lq|}lwxfttbhgVz{iihWxyg|nhTE_"V$P!`'b&g(b#i*e%`1"zoz|h|~m{|ivtdecSp{yg}|lmi[Q+ e$d'e'b4&q G:/$-!' KJCrldX"`$_#\&fE6txsysyxjOG=S'`%a%X"hZKMCA@:[\UBD<@A:ROGC@7AD>txZWRU'i'm(qbiWS00214337%5!6"7#6!6#4~5#t5$k2"l1t5"6#5"~6$}5${5$z11312221331100133!5#v.2-1;+v4"4 6$2"114 31.5!4%4!t1 w7%l1 s/8$34 024 3110~.s,f+\+V*>"@
+}1/.1.00/./6!=)4<,cfbnvs\|wd|gq{ME9JA7G;3A5.8, 4'4(."5'?.H4%H4%H4$F4#D3!E1"F2"E1!F2"F1H1!H2#I5%K5%N8)O9)R:*nW@iffdeedR7&L3&='> k'*{'y'y)x'y*{)p/ ^I7ohjWA8..<)6#, '4,<-@4GPP5|gp]}20+,p$-,/1-0-///,,&%9IAIp8S{B]9V~?Rktvtun|l~ykzwf~zj{vgxuhxvkOMMJB;wjthbbcbb^ZVZSQLB<E7+=6$-=<XGb$I])54#  IKR1COFD@L>(4*(    (" G5XI-~yjLA9E=8)!  *"!B8,J>48/*UNHA98(5/.C?<ia] B85$>3-M=*1 9.*WVP}F=7WLG' NHC?73TIGA7/UG6C6*+&%732-$"/%%SIB8.+8.+C:6khd]]YNEAC75 :0,obWYOF730D<:ZNF;.+&^RNYMDhjeejSjq[syclpXilTmpVqtXrv]knU~cw}`ajNS^Brx}d]YDlUBuaEsnrY_6(`H<=, xe_E4V<1O7+C+G1#H2#K6)=,!.?1!H7'4 / 0F"B%p=/xE5zB3A1@2?24"H/M6mVI?+1"8$iR?s]FcP<mfRmq]nu`pwbtzfncOzdOpq]cdSJF8X_Nfvb`r\br^[p\VjV]n\TeSUgSViWXjZ\n\ar``p^ftbbp\_nZ\lXbq_^n\YkZ`p_YkYUiWKbOH`NI_NOeTecbrzl~zl}zl}yj~zl~{m|j|xi~xi{k{kykxj}{||}mIMEEMINVP:B;5:37;36;349238028027/470570791792NUMS_TTcYVdY[c[KOILRJMRKPUOSYPED.3/SYJ_ZUWLr`WN\Rx|{verlUrjSpNF ot8[`-]S6fK=E3!rusOjuvwVL'94
+0-3-molCcd)UU#"$! 97A>"+( 30,)('==+$A47&
+;3cdapo^YYIeJ<\#U&Q%T#[$W$T%\&[1$uq{|kv|}lz||kzxgt~mtsjUF`"\$S"Y%d&g(b%h(d%^. z|}pv~optqxzgrobV/!g"d$e%`2$v 
+I>2"+) @B=snfV#a#^#_#g@1ytxwfooyyjNE<W'f$c%]#~_PZ[PTOHfc[SSLKJEXVOID?MMHw~x^ZUS'h&f(pcjVR0..0/00//1001311111146#5#~333213202111320001}2|6!1/2E15#421 111431|/@->,d.`&c)u3!31304 223/10y+o+h*a+M'9^+~,10.100-.0=+2>+bfc~|gmk}yf~yghaSH>5JA7F>4A70:.$6(.- ;+C1#E2$E1$D2"E3"G3$G3#G2#H2$H2$H3&G2#H4%J6'K5'M7*O8(Q;,ZA/jedecbe_G1Q:-L6%?+7Q u,}+{)|*|(~(s/T>.odqZC1!+1,>*5%/%0)4)56;z`|cj@1y01r"{'$+,+-]]",-~5<>-@!.J"&C/<]=Pu0@a"(;dhhwr|m~|myvgxsdxufzwikif}}teneZtqi`]WR[WRYOKL>8()08OA[Lc(;F2(5,. -?Q':F<, mqmtws>41
+
+*!$@70b_XWRP6,.$ ) odO@3$ C:6QF@J@>$4--LD@6+(*" )!WI<3# ;.)JFB~}qoh\L@;NEA' 2((JB>D;68.)QIF)SD8-#2,/G@>I@<H@:;.*JC@LGAPLFy{wROI[OJ%-$$YRJE@90**aUOscXSGA<20^VRfha~u~ktw|cw{`zfcnWXeOgqYcmQrirZO`LZaT&!#ydyVtYyiUa>,z]Kxh{n\q`o_yjYuhXuhVwfUwfTwfV{lZsfTaTDXG5O<+3&>2%A.F.?-b=.}@/A,9&D1H6L6?'m7!n:%X- ><'@,:*D1$J3&J3$P8(G- G3%C9+E?/UO==1#66%dv`WiUYmX`nZgmX`fS[cOSdPUcOScNTcQScRFXGFYI]l\\jYUdS[jY_m[ZgW\k[]kYWfVScTVgX]l^ebbq{l|xk|xk}yj~zk~{l}zj}xi}whyi}wh}vizsd~oort{mJMFDMIOXQ7=835-582:?7@D;DH?GJCKOHMQLOSNTUPTWPT[ST`VSbYUbW[bZJLEKMGINGJOHHMFGLFJMFBH@BD=_QHaWNP^Uwqz}ozt^cX<~lJ@2BF<A~grbP=,ZM<`Z?daI|ypQH>:;6.*)) JMU\\b)13 %# *( :8HD)1.*' -*./LJ-kcGA>LF"JA%egd~lpr`cM=Z"V%U%V&]#X%U$\$Z2$vxxgpz{jszzjvudvvquhSDc#`&_&S"^'c&d$h)b%Y,pvg|~lqu|~jnpo^pvvefaTT-!e"c%d%b0"92*C90f^SN@5UMA_VJTF<]ZSupfT"_$]%Z%_:+som]|zlo~nuse\VNO&a)a*[)qM@PC7K90WF;G8.G4-Q?8I5.G90c\UWGAS*[&W&odhUP....00//01/10//5!3"6"6"2312311132225"3"3!35"001/3 :'u4"5!/2 9'5!244 211111m-U%a%b*\,_1"o/10224 442.10/u+m,c*R'F';
+q2/00/101/+6 B.8'cfck|e}yf}h}iQI>JB9H@7F=6A801$8+ 2#2%8)@. >+F1$G3%G3$E3&E2"G3$G4$F2"I4(G2#I5&J6(K4'K3%M7'P:*N9%cc`cc^dqZAP8,P8(M7'B/!6%9 Uq+{-|+|,j0 L;+jghR<,3(0;-=,:,5.6/9.:phLv[eQK l)&s$!x&")){0+Q% hQc@=X.8R?Jd>If/;[1;W !2%+*3q|m|m~zm|yjzxi|yjlgfhPHpVNqeZrh_wogrkdoe^WLE.%!  ;HDY"9MRg226.%0,/0))(,32:?97<GCAkliF?>F>:*! $.# 8--80/LCAA76RNKyxsmjfA;9## E90G:&+"1+-80.TJEKEDC><&B;9SJEH@9G:-!!6,&HB<\\UTMFNCA3+(' 60.NC>;0+@728.*:,$NB7,%'700`[YpnjLD=ZTOGD>E>;YROvvsA<5A63C;6.&$/$%fVJtdR\QK')!!ZSSef`qw]R\Dmw_ltZx~gYeOZhS^lWdqZt}cp\eH`iQ]jViv`U]O"%51-zdrgMUI5`S@XK6UI8XM@XPBf\MndTpfTqfTujXshWh^KaWD`VDpfUxl\yl\}qa~qas^r^yjZs`}mTq`Jl\HqUCuSAs=,r$`J}S:rN<jWJUI9[VFa_O`[IVTA^[Id[IWWETcTWbQ\bQXZKCA3^cRj|ffxcdw``r\`pYkw_fpZ_o\^nZ^n[YjWOcPLaOQeTSdSO`O^l\XeTDUFHZJRaRXdUTaRTdUTcS_j[ebbq~zk}xk}yl~zj|k~{k}xiyjzkp}|scvk^un^vm]~xiMPGEMIMXPDIDCD?CF@FIBHJDHKEKNHKLHJNIJNGKLGHJCNUMS`XTd[UbW\d\HMDJMGELDEKDDICCGBAGBAG?>D>:D=L\TN^Spxhwv}ug|tem\<}b8>;VU7wq\ryschYK6$i`H77 trZ|}dF;=9-(
+)( ,0
+el6[b+RV#:9**:;42FD%CB ;;30,, }]?8HC$cebegWtwhuxjhM?Y!W$U&X%^%Z#X$^"Z2$hl\uudxwhsrbji[~~mnm^nk^dbTjjYzzhuxfjSDi$`&^$`+T#`$d$g)a#Y-fm^putb}y}lprtrctocO-"_(^)_)]0"vdVP?6P=6[KBWD:TB9T@7R:5UB<bNEN%P!L KM(vfqp_~~m}l}ovue^XO;C
+@ >_@4dXNYJBcXPYPHSHBaWQQHBA:5uuq\QNI$T R%j`hUQ/-/0/1350020101121111330112102143 212012419'W#9%/48$414 1 11/36%10w1v4404"4 10029$/2/1/0.-t+j+])L(: E 21//01./.-4 E4ada~kzwbyua~zewraI?7IA8IA9D;3?6./#6(/!2$>.D1#F4&H6&C1!D3"E3"C0!D3 H6&H4%H2#H4&I4'I4(J5%L4&M6(N8)O7&gO}\ec|Zb}\sZK5(N:*N:)N9*J5'A/!9'9FU#Y)N4'I8-o[giiUAL:.$ 2?/?/=2=0<1AGM-}exaR6&Hq+)q%!u'#w+,mf*6C#/H 04)4N,4N)#""0'stqttp~zl~{m~{n}o^VUtWNbE>hXNne[i^WocZ`QHO?7 
+ CT"K`'BR#IW)20$*"&,''.#!" *$'>30F>8ica80+=52;542---((/()-))-'&4-/2--<74KGE$,$"-# G;66* 91/ZQN" *00>SMK81-(B<9NC@NF@H@9A438.,=7395/QLHpmdhcVYURUNI")"!PGC2'!>3/LCARJDTG;.% 80/3-(?;:YWP92* .((MFBwvtuwqOGB1('4,*G?<qdXpdU^TO,%#, C87^`]ZeT[hU_iU^gQktXkt\p{cfpYpsu{`}rvgsy`ju\mua082CC@TPCxrZe\J;- A7'>5'+'*&+&/'8/!=6&1(( *%71#'!kdUb[Kh^N]TD_VEg]JujUh]Hi\KyhOydJpXq_JWG4s^LeS\K8H?/PL@JF9MSAWgTbu_ZoY^q\^s]]s]]qZ\qZOdNSePShTWmXZnW^oZct]fu]es]dsa]mY`q]cr]dt_^m[YjVOaOVhVXkXUgVOdQF]JG]LThY]n^VeVXhUP`PPbRReTTgWedb~o~zj~zj{k|l~{j~zj|lyjyjpvNQHFNJNWNIPHNRIMRILPKKNIIMGHLFFJBDHABF>AF>>C<MTLTaYUdZTaV[d[6:4<A9:@8:A79>56<44925:429207/KVON^Skufooszax[~pwp^r}n{pb~sf@0#xm_G?#qF.UIA+L9672/&'
+?@MUJSTV"D@./ =>98UV0GF!7734AAuCCIJ#adahj[sveweN?]!Z$X$^$a#c%d&a"_7(zyvujk[||k|}lwugmh\sp`u}~mqXIf$^&\(\)U'W$_$c&`#X+in^wpzwywtvtec[QD&J E E Crsjopi|}tz{rllfoidd^][ZWha]; GJ!N"V2%|vfvucyxg{{kwvhyxiF=3M'`*`+!^)^;.hmaX^U_d]SZQLSIci_X\SPWQfmhG?<T(!q0&q1%wkjTO--/01212221100226 33536 35"6$1/1244 4 4!2 2 1013 3 5!:'d-8$02:'2 24402134$/0001/3!3 0113@./4311/00z0n,d+V)B%,_+1/010...,1?*ada{yejmmZTELC<JA:G?6F=5@7/0#4'- 2%?/C/D1#F4%G3%F1"H5&G3$G4$G4&I6(G1$K7*J4)K6)G2#K3&J3%M6(N6(fL8j}]~_}^ba~aO6'N7,L8)O:+N8+M8)L5(I4)C4(B3'E6+G9+K9,jYGeboYL:-H8+ 0<2C2A2A2A4@|bza}dP:S$q+,l*+i+.|OHP>5$$'8 - &#*!"3 !0BDHyr}p~{m~{n|yk~pe]Zz^TrhulshaWJBI6,E6- 
+
+IV&Sg,Md%3:71!!&/&% ( % \RJ|sm?2/-'')#"#5*&=51A98=644,))0(%3,-HBAJA@?40;,(3& 7.,!D:3TI@<:D66N0,6[SO*!-&!KA=WOKZXV]VTTOJF=:$5-(`]Y'!RJG2)(+##2*(kd[LB<7,'6.)SF;6,$5.-LB>">97QJCRMDQQOF@;TLIb`^RLI.%$LGCKHDwkctdX[RL0)),"!?61`b_iq_owadnVwhqypxv{^nsYipTXcK[dMJXCL\I7H7?I<GE8wycDQ@BJ?)8(a[Ob]OXQBNG8KD5>7(0+6/!81"70!1+1,^[J`ZKc\MC<.iaVSL;`ZK:2"61$VQDKC6TL=80#?7.$#*%USEZ_SWlXSnXFbMUoY]r^OePUhS_oX`nXeu]`rY^oX`rZ`q\ZnXYjS[lWZjVYjX\n[ZlX\lX\kWds^]n[\m\YkXFZHLaOAXGC\LBYI=SDGXIVeU[iYVeVOaQDXHKaPedb}p~{j~zkyj|l~{j~yjzkyk|lrv{{{yy}pMQIENJMXO3;3+.&+0(+/(+0),1*,2*.3*-2*-2*.1*.0*FLDWbXVdXUbX\g\27.7;58<5:?7<B:@G?CJBFMFKQJLTLQYRN^Weqcoo}n}n}m}n|n{pbmbUeUHh[=0;.7&Y47>51%!bE"kR!hi557IJNL@CUX-EGRR.EFCC\]6f\b#IN!YZYa^PfeWqsfhQB_!a%[%^#a$f&g&d$[4&tpn~mssbxwfqo_jiXon`ZXJyyfukSCa#['M$rM@S$M!]&_%a#\-ilZwuaoo^yyizygon]wud~lXUFe^UM* \#\$X$N#w\i__h_munhphQTJ\\TX[WTWTWQLJ T T P"Q/$x~ns~|mrpavug[ULE*"Z&Y&\+#nPD~kk_F2*M,"P0%yokTR--000010111113!/113313210133111112121111/16#A12/314#14 1 2114!5#11111103!/0113"?-7#8%?+C0:*23 }1m+^)S'K&55
+t1/011.....@*dfcv|f|yb~lLD8KB;HA7F=5E;3B801$6(- /"8(@. D0!F3$H3%H5&H5&H5'H6&G7&H4(K7+J6&K7'K8(I4$I4%K4&M5&M7(Z@.eesTa}^|]e]D1O8,O:*N8*O8-N8+M8*N9*N:+L6)N:,J8+M=.ZG6kddR@/O>4H7-%&(4A 4C!3D2@fx_~fT=+5])'p/2o*/l--|]Q%!"%&-""144;{p}zk|yk|zk|yl}ohdb{qni]yqiC80*  
+  
+1069:=*(41  ,# #$#0()81/N>8qZStib OFAkaYbWO^TKWJBYI@f\Rnc]UKG* -((=76OHDH>;LFC7/.+""F=7H<1UC@4)1><IXRM<3/2)'<0,F;7:65UTSKFE5*'3&"HB>IDBYWOYQI+'%LD@'/'$ojaH?4E6-, OC9?2(0(*C95MFB/)(d]TYQFFC=@94G=7lhd\WU!0%%,# B<:pd[n[Oi`\(#") >40`b_`gP{}atgjrVhpWs{bx~dwoppq{e\hR]hTJ[IR]L\dP^jO5N8=XG*4'%*'!871KD9YOBbXJh]Ng]Ml_OkbQk^KcVAg]MZSDWN>TK=NE6G?0HB5OG7I@1RL?QMAYWISRDSRDRNCWTJB@6OKDVQGPL?aiWcwaXlWVjTOdNJ`KYlVYkVXjS_s[]pXeu^iw_kxcgt_gu_cq\cq]^n\RcQPcPYiUZkXXjXK^MMbPMbONcOVjVPdRMbPMaQNbODXHNbPO`QO`QEWHEWIOcSSgWfca|o~zl~{m~zk~{k~{k~zjzj|l|mqxyyyy{zrPSKFOKNYPMVNWaXXaZY`Z^g]]g]^g]^i^`kbakb`ha`jaZdZT^TVdXVeYYeZS[SS\TT]WV_XV_XV_WV_VV^WS\URZQNWPR`Ybm_{{zx~vf~n~m}m~no}tetlPBE:;/5)5%t6:<433% >01!P5UDhTP_b$`d,BD^^4IJ>ArrL|jl2V[)__]SOBYWKmodaK>RT#T"U!U V Z"X!V8+sqswsb|zhm{yg}lyrsqnVDf'^'W(S%['V%T"e(g&\,mn]ususvwfqyttcsqdH3*I"L$E!Q9+{zzqJ;3B-&Q>3`NDwn_wnqwdbSvb^TXOH@3*B92a[PgfWtvdiiYabQfgXik[sxf{l{~loo]{zg|{hrxhWU0022022212211216"A.C1;*<.<-3"336"7$7#4!4"2222 321321003!=-2.32151204 04 5!/301313 3 1100E58&6&:':)8&?.A/@/=+?-w:)h7)\0!P1"9 M$211/..-..;'dfcyud{xcpjdUG@7KB9HA7H?7E<4A5-3(4&6(4&;*C2!F3$F3%G4&J6(I6(H6(H6(G3#H4%K5*K6(M8)J6(I5&L7(K7(F3"H0#X>,eaz\uV~_{\{^oXAL4)O:*O:*M7)P8-N8+Q;-N8+N:,N:,K8+L:-O=-gafeR?P?6O>1L:/;+"( )*/6=9&tay_ya{gQC-!7])(r.5m)-UL6*  $$$$%(fgewr~p~zm|xj|yl~}p`]][QHeVK@1)   
+  "%#72!0+  1''+ 80.'eVM|tcZRJ<39*"NC;/H,)=4*#6+#YMDmg_D<8-#"=63JFCIA==53.%!TKFf\XnZXODH/.7JCBQIC*!!:0.H>;MIGYUNda\ECBRNL^]]975FA>WQN"4--OD=NB8ZMEZOHPF;@3+,%#_UQ<5,YOJSF>fUII:/TH@SI@LF?ZVT,""5+)' !^UOpaUea_%.!F70iie|cqx`nv`enY]jVN_KEXDSaGclSfnWQ\FYcO`lVH[GFYFAQ?O^JZjSLaLAZF:R@IRB$-!0B:,:4(/**-*//*/-':4,IB7VL>UH4aWGbZM`VJcYL`SCbZIb]Ob\M^WIa[N^ZO_]QTSHNKD995,..%%' #! 4:2L]JBVDN`Lfu]fw_as\bt]cu_UiRPhR\o[br]gu_bqZXjTXjWDZGNcQUhV\kYamZ]mZRcQTeUMaPOcRMbORhTVkWMeTD]JRgT]p\XkYVfVHYIFYJI]OL`QNaSJ_Qfca}o~zl~xm{j{j|k~{kzk|l}mpzx{{}zzsPTKGSLS]UFPHJTKMWNNWOOWPOWPMVNPYQOWPNWOLXNKVMEOGXdZXh\UfZ\j^Q]SVaXVbXUaWTaVR_UP\RO^TO]QLYPKXNWc[`l_||zxi}m~m~prqyivn^=05(/-1E<49=& 5$1&%x<Z^Z\ NMgi.kk1YU&LL$BCpXQ*;> FI^^]_\PdcW{~qxrdwk{n{nyk}prvt|tnsoq}kkw}kyyzqkSCd$^%_$a([&\$X#b*g&`/ tmiS|jtv}~lvuep~~ntsbhgZZTJb\NjeWQOAZZKbbS\YKEB5^^N_aQ[\Na_Sb_Q_ZM]YNCA5_\RedVghXrsa|}l||jvueroarqcgeVcaShdWa\Ozyjpm_rnapj\heXs}mn{|jomkZlluvqhe[G}/v-w.{-/3!18$5!3"2 {*~0B2L=dReRREPA^P?/4":'9&:(7$8$1 6"@,;+5"6$7(@/<(3!3!/4#m(z8(//10211111"04"6!1101101 6"0104 18$8&8$5322 /20~0h+j-\)H)1b,/0/0/0/-<'cdbsitmZYREJA9JA:H?8I@8F=5A6.0&2&3$5&@0!B0 E2!D.E2#G0#F0!F3$E3%G2"D. F1#H4&H7)J6)K5)E-D-K6)M7*hO9}\oQ}^c{]{\}^nSJ4$M6*O:*O9*M9-N9-M8+N9,N;-L;,M<-K9,I8(r]z]{_|fRN<1N>2N?1L<1J8/D3*H6.N:2nZNzaya}cUA2D2(6M g+.uKDp`O!!'2-1+,-rq|n|yl|yl|yl{nb^]RC89&  %,#!&, 'B=)'  1$ # 7$ ,$$"E:3gTKwib=4/H>9L<7AF )!4*'A7/g_XjbZQGD+!831LC?/#7.*WOKECG<9B42?LKPNKDTLH) -#!I@9vso5/-HB<=71;63CA>.)%2//'#!^YV#) XOING>\UNseXfVE?4,-$&G?6K>1g\Pwi[ucWtbUlYMXMFPKJ4)&<2+*$$`[ZxrkQPM&F5/`OBggbdiOpu^tx`nu^`jUR`MM]KcpZs~g\jVWeTZjXR`OBP@J[IXgRsHWCI]J<U@<VACWF3K96L;4M;/H85N>4K@6MB/E>0@<.>7+8/+3*.3,/4/+-*-.*./)65-56.+,%++%$& "$!"!#"",)-@90C<*:4*94&51;VGGaM[m[_r\]nWbpYet]SePTiRXoVUjTQgQQfRJ`KE]JG]JAXFQhUJaN;TAM`OZiVO_LM_OG\KBWGRbSRcQNcP>UCG_MKdPNeRH]KMcQLaOUhXPdTNaQH\JN`QPcUeca{nym~zm{o|l~zj{k|l|l|lowy{zyz~sLQIIULQ^TO\RUcXVeXVe[Wc[Xc\[h\Yd[Yf\Xd[Wd[Wd[TaWYg\Wi^Ue[\k_UeYZh\^k_Zj][j^XgZVeYUfZ\k`Xg\Wc[VdZ_l`~yxw|zhzm}l~orr}mvfgY1!,,+/]84<J( /*/ 1^OHSSW*RW(UW(1-
+PQ'OQokGqlDEG BD?@cdbvyjln`abRlqaovfagWlscfm]V\OV\N`dU]cRgl]\YKifWnk[wvexudtp`zxfyxduu}|gxwc{zenWHa!\$Z%^&_$a$d&[!f)^-wkv`\Lpn]{zhwxgtterrcnj\mhXwudrq_onluursrbusfqwwhvxistcliZ~yimlhXmk[tpyzgv{|jrrxxftrbroaf_Prp_{xgvsdon_dcRvscpn\qo`sqa}|kkiZmzyhovxfh_\uC1H7K=M=H7M>M?K<N>J<L>RCI:TEI<WF]JL=WFE3D1G8G9G8F4G8QBI8C6H9B/D2E5C1D4A.B1A3>.B0I;U&7&/131334!1 1!13 3"3"1131113 0104 |1230021/2202i-n0h+T)=#: z1//1/../<'ehf{xeysa|lKD9LC<HA9H?:H?7E;4?4,3)1%. )2$A/!?-D1!F3$F3%H5'I6(H6(G6'I8*K8+M9+M9+O:,M8+N9,L8*L7*K5%w^G}]gqS{^buV_|^P7%J6*N8*M:*M7*N8+M8+L7+M8+O<.M8+N=/J8*xfRk~a|dO</Q>5N>3M<2L;1K:0K:0O>3UC7|cx`zazhSL91I6,@0#C-%O;/va:,&%$MIHmmh|q~o|xk~{nzxi{xkzvj}znWTS &3'%8-,8.)%/%$*"# + / LA5B8;''  4".0&#%C:4SH<N7.yd_`VQND?C,(0 9*&$7,) 8/*VOHc[SH?;-&&;54NGAC;7ID@>=G>@U>>K\WZC75ZQM0'%4('?5,?6.(##80.aWNE71"&$,% NKE^ZX$+"WOI40,aYQ|ljYG8/'0');2+j}hZwfWyiZxgVu`Plc\732!I81n\N0'%887~,&$.eRG`L>gidq`gRX`Mfm[ovbqzcv~fv~d^kWTgVEXIO`M`lXoxdis^enYV^KGVDM^KGXDSbP:L83I74J96M<9O>5N;3L:4P;4P>0J72N:4RA4O@6RD5QD6SF6TF6RE5OB6RD7PD9RF6PD6OD6MB4NB2R@0T>4WB3ZD1WA7YF;ZEPfRcr]SeORdOPcOMbOVlYQiSJfOJgQ>\H6TB5VC9WDOgSTgTTgTQeRThU[n]ZkZXhVTeTObQI]LUgVXhXRbTMaPVkW[l[PcSPgTMdOOfTLcOQfTQfUUjZNfWPfXfc`{n~yl}xkymxj{k}n|n}m{kowwyz}{~~o?ICM[TL[RL]TN^VM]UK[SKZSKZSKYRMZSKYSJYRIXQIXQHWOIXQWj`XlaN_WK[SM\TM]SN]UM]UO^VJ\TJ[RJ\RJYPLZQK\TQdX|{pqq~o}tfzm}mtsjY_P@01#.)4))q1>AR.*.*0`EMU;>GJ#y|aYX*\[%0/
+^X0FGOM#PM,ded{}mopa~~nqp`VSEvtfrseopbppcnmbifZ{zkonm^trcrp^p{{jpxxft{}yvd|k\XEiVHa!\$\%a&a&e&c'\&[#\."t|ktpo_~nvxoyxwfwrc|zhxuewwetrnqslm[sutu~}knk]yvf{xftqa}ovveyxixwgvwg{|kwxgyyinl\jfZqm_a[Mqn_~l}jnnywf~nok^~|mmvtcr{zf|}lpeWV=+15!30137&=+8$8$8(303 7&4;'8%112033221133#1/3!1001115;*b+8&./033#5"4 12"48%6%4!3010114#11/7%5"33222222112n+v2"m+a*N(8T&/021...8'bdazvfwr_lfWH@6IA9IA9G?7G?6E;4?5,5+#1%0$."<, B/!C1!F3$G4&F3$F2$I4&H6(G5&E3$G4&G2$J5(J5(K6)F2"I6&K6)I5$rYba~_xYwXwX}]yZ`H3M9.J5(L:*K7*I5(L6(L6)L6)L8+N=/M=0L9/hTCfx]z_bL<N=3N=3N=3N=3L;1M<2M<3K:.n]w`x_zcUA5M=4J8.G6,G6,vcQr_K"{o}n~p~p~zm}zl|xkyvgxuh{xkQOP' 6/,<30;30 !&7-($,$/&#3'#1!RIIVQX8@0+E92/$!*!-# dWOdSEfRF`JC}je[SNKA=/&$.'&>75/'&A:4|vla\/%&*#%F><* 7/,77?$'>+,<607xh]SKC:20.$!@3,{+%!RIEfbZge_[WR6.+GA=F<8OHBWSR#)WQK<71E90`UHoaQ-$ .#"<-(WOFlgZwi]s_Ps_NwdQxi\eca(gSH}iXH?8<<7+ >,%o_fOBVZW;J9JWGGTENZIHRBJ[KDVG8M@=VDCYHHZIN\KJYFGRAEQ>VdQKYIO\J[fOP[G?Q??QA<QA:O=7L=8P=7Q>:SB7P?5K:6K;3I85K;5N>6TB6VB6WD5WC6[D6]C6[C6ZD4YC4UB3S?6TB3R>5R@4O=5R?4UB5WC5U@6VA>ZFC[H\o[_p[ZmYE\HKaMUhSShRNgPRjTRfSH`MKcPI`JNdNOfRVlXOeQSfSTiUOdRQdRVgVPaOP`QGVGOaQVhWViXI]MK^NMbOShUJ_MB[I@YH9RC:SD1N>KdVfca~pznzm|p}m{nyo}m|l|m~okaSg]Og]Pj_RlaUneWvo\otISIWcW`l`crdjxip~otqqnpmo~mporrususrovstr{wz|xwtwtyu{v|}xzz}y{Ħͬ|heZMeZMf\PmdY|lopyi-4'4%2%,-<;o&q/O:Z1++4$w,>/[]@NG-?5#mvoVdy[}zXmldMgify{j][NdbVgeWhiYon`hgYfeXol_^]Pli\nl^_[NyxjgdUnk\o}~m{|irqqvvud~}lywd~dUG\"Z$^%a&a&a%a%_$[#X,ipafcTjgY}nywdlhV~|l||ktscspapn_liYpk[rnZgcPlkYkgVso_a[NecT^[Lb^Nb^N\WItpcqm_om^ywe{gnsqc~~o{|n|}myzk{{lliZ{zi}|j{zjyvg~l|gsroyzgnl\rywennprr_}mgUQ/6!00/.15 21214113024 11111212123A.8$1212430.4~5$b/8&.1306"33!18$2 6$7'4 13/10/15"3 132"4 2222032/23w2"w0s0g+\*I'3 l/021..0;&cecorpl\G@5IA7H@8IB8C;2D;3?4,5+#2&1$* 3%=-?.D1!E2$H5'H5&G4&H5'F3%E2#G4%H4'I3'J4)I4%J6&G2&J4(I2#rWtUlQtWvXz[xYvWy\wbII5'L7*J5(J5)L6(M8*N9,M;-L:-K9-L:.M<0]J;}ew]x]xdQM;/M=3M<2M<2N=3M<3L;3L<3fWIv_u^w_vdRK:0N>3J8.L<0ZH9t\9())JLMt{m~{m~{m~zm~zmzvgzwhxtgzxkfde2**>667-,90,!/! , -" - 9+$'@4.M=5=:F 9/1D/-DTNVaXU'-&#,"!YPJ\K>r`NTB4K93pYTxmhNE?/+*C@?PJGA546.++#!E@;UMGyPF@]SO-&&2+*:1-?84QQU88E65@YQO}n\g]V821,"<2*~|lG<:JD?YXUIHE<952-(XLAmbXC>>(8-)PIF]\VI=5XI:^TC'4)%7(!'0,,hhgzskucVgVHyuo0-.&9)#q\O~vfDD>,$%vcTFX[Z:J?BRDL[L;K<JZJCRD;M@;OAATCK[HakZcm[isaouarrzbO[KQ`MQ`MM]JM^LBXC9O=;Q?8N=>TB<TB;RB:Q@9R@8R@5N=3I;5L=9TC:YE5TA6VB6YD9]E9YD7WD9YD6VC4P=3P<4TA;XF?XG;TD6O>4O=8TA:YF;XCE_L@ZEH^JDYERhSRhRMbMKaMRgRZlVXhTVhTVjU[nW]q]UiUPfPPhRKaMH_KLcQK_NK`NTiVVjXTfVQfSDYG@XH>XGPdRTfVTdTMcRQdTNdSE\NB[MD^OAZNfdb~r~ymyn{ozm{o{ozlzl{m|mzlyrgyrgyshzti~ujpŪyzzuutosuwpc{sh{sg{tfyk}np_Q<2;-7+--(;}6EM!c13-/x)C( 
+$(,Q'1}&&,1$z?(PT3yypcOE;'||}|}VssEY\YgddbfcVdaWgeXihZddVkk\rqbttelj]b_SecWUQGkgZutbzxgrp`ifXnl]|xd|yec_NrmZd_NhdUb^PhfWqaUX#X&X&X'_(c'`(]'](V*vmbTQJ[WLd`SifVcbO[XIZXJZWKKG>hg\LH>VPHVQF_[N^YMkfZ_YJf`Ob[KYUG_[OZVL]YMtqbxvel|yhok]uu{zl~rebUrre||nqqbr{{mwshok_}|k~p~mppnj\|yiuscsqcml\om^qoapoahgX~miTQ//3/0/12223/213"5$016235"123112 22101106$14105!k~y=-10117#36#16"4 5&1"6"30101102232~5"6"22222022/13 21v1g+_+U(H&:k-1/.09(egdjhQJ=H>9KC;HB8G=6G?6A6.?4,6-%4&;,7)<, B0"B0#C/!G4&G4(H6(J8*K8*K9+L9+K:,K:)L8)O;+K7&N9,O;,M9*^H3da`bb~_|_xZ{^|^eO9J5*L9,K6)L7*J5(L7*J8*J8*J8+J8+L:/J8,jUx\y^qV|fSJ7.P?5L<0L:0G5,J9.J:/G:/`PApYqZr[t^R@3K=4I;.H8.M>1pZ{hRC2&6)4*$[VOq~{l}zl{wjzvhzvhvrcvrexth][ZWLBZODRE:E7-&.)B818-' JA9VJC2I=548L;!1") #!0&"/(%UOIOGB833-)(+#6*$90,XSM}f`Z3'F;4TLGLD>HB==1+=0)E90lg`zyrQJF0(&90-$/*&qrnGMVCHbFHR`ZX-# -"1%!"1+&f^Og\KN?1G6+R@5NA7urn*%$.$$1#R?47't]SA) !* ZUO|~zqZYR"'%6&.!6,)6'$9&"@.$U@4`I9gO?kRAjR@ZD8\][\dQS[GHSEIQDek[jra^gW_hVXbOHSB]eUiq^gm[mt`R[IISD`fQswaPWFO[LJZJ@QAJYJFXGAVDE[IEXFFZHGZI?TC>TC<R?<SA;Q>ATD;P>>VEC\HF\I@WDB[GCZG@XD=XF9SB>UD=VE:SDAXG<TBCXFH]JJ`LJbOD^IF[IL\LGUGM^KCUDCUEATCEXG@SBKZLN^NRfSNcORgSQeRPfQNfORiRNfTQfTRhTSkSSiTQiUPhUIePIfNOjRRiTViVPcRNcRXiXRcSEYLG\LK`PL_PK`PQeW\WR8* 8%F<TN'VI1tiueZhYLqg[|n}m{m|m|l}lqswwuxzxzxyzuxvvxzxvwtpn}ixd}r_t`zmZwkYqeRm`Nl`Li]Ki[IdWEaSB_RA^R?ZN>\PAwoa~n|l}m|lzk{l~ooP?#+.,0!3!{03$6)1$13#?3yywf]C75}}qttEtwHcd5|[l`^]faUQL@ZUIWRG[WJB;1UOGWSGYTLa^S^ZQb]SkeYrm_jfVa\RgbVtqaf_NlfXgcWkh[QJ>E@3RL?c`UuvgN7+T!S$T%T'T$X%T"Q#R!FOQFRJB^YOWREaYLc^RfaVf`Vjf]d`TkfY_ZOd`Sso`faUgbWc^Qzvfqm\qn_d`Rtocoj]so_zvcxuc|zjtsdyylsli]ol_[YNdcXnma||qnl_ok_wuh^YMHF5sraxveurcvvgki[ywhdcSfeUihZnl_nmassdon_wygiUQ-.1//0/111113 17#6$012337#32224$111/1112025#20>)s]zq]O>.0112 23"3!4"4"8'5"5 1/1331203 26 05"0/222231221!42|1r0i-`+S(@#F"1../:&debpmLE:JA<H@8G?7IB8E=4B70?5-4)!2#4%3$9*@0 B1$B1!D2$F2%G4'I6(K6)K8*J8*I7*L9*M8)J5'K6)K6)N:*M7(nXA}]^{]{[}]a`~_}^z\nUH3'K9+K:+I6)H7)M8*J5(J8*K:,H6*L:/J6,xdRx]u[jO|dNM</L>1K:/J6-K:/K;0H</H:.L:-s^mTqZr[o]LJ:/K>1G8-H9.o^MqYZH8I91D5*J<1{uh~{m|xj{vjzvhyugxsfwsfxthRPP%7)";+!@0$A4)A4*;.$1$#+!(" *&%/# _]Z:<S&&@'#8#!4
+ *4)$,&#VQKK?:6*$F:1PB:C60A73E=6omeyyqqia>0(>3,3)#-'$=41L@9E95PHDmic][U.((4,)/%""0-)AFO`_cID@.%"2&!F6.",%&0*'c^QxfjZJK:.~|v<96) !'I6(oVvOE5,'()$!+%!2.)2.*%!#'*M:/^K=`L?_H;bK=]F6aJ;W?2S;.`I:bI8bI7S>2WZYAOBGTE>K>>J=:H;=K<IVFMYKDQEMYKOYIKWEIUGKVHU^MohmX[cPLWIEQDIWHJYJ=O>GVGHXH@SDATDCUE<Q@:M><QA=TCAVDEYHJ\KF\I:Q@5I99L<9I91?12F6;Q>CXFBVD@TD?TDAXF:SAAXFAZF=WD<VDAZG?ZF?[H@XFFWGFUEGTEHTFCOAKWJBQBESELZIOaNNbPLaOPfQYkYZmYPeQPgTNdQTkWUkWUkVTjURiUQfTMeOLeONdPMcOG`NB\IAZIA\N5WG9TG<UG5NB5NCAWKTRM-"/!3% E<TG!dP=;*LC.iZO{qfxk}m|m|n}l}mpslj^Mj^Mg\LeYJeYHdWEbVFbUD`RBaSC`SB]QA^Q@ZM<YL;UH8SF4TG5UH7SE6SE6UG8WJ:WI;YK>YL>WK>YNAYNAZNB[OC[OC\PG_RH_TIaWLc[Qg_Urma|l}m}m|m{l{l{l}mC56(5'3'/$5'QC*(- .1//!xgyv`Q>7,|z|}xUgk5ntA^|_^]LI>NH=TQF1.!+%E;5HD;TOHURK\YPWRKUPGd_TNG;NJ>GC=MH=YPEXPCYTHRNE[WN<:.*&JF9^]Pwu|nb~pdwm|qg|rwlvxyuJH=JA;PH?TMCXSG\XMVQGVPCRN@NF:OH:\WKd_Sb\PYRIOJBTODYRF@7*MG:XSIZUJJC5ZSHXREd`SidXSNB_\Qa^TYUKPLB[WOYUK]ZPMJ@YWMYVMEA685*=:,SQB`[MhfYieYYTIieZ^\NNM?hh]^\ShfZii[`^QdcVgTP1/9&1/33101025#1 3"6%1201121224 8'12215!13!0115$30<)jXreTI;00013"26#2!4#4"4"4#6#113/03238%9%3 {.3002203322212 10{2s-g,\(N(9`,,.09'dec|vd~veNF:H@8F?6H@7E;4F>5B:1<2)7,%1#9)8)8*;+?+ @0 <,C/#E2$G4&I6(J7*L9+K7'K9*K8*L9+L8+K8*H6)I5%t[C_axY}_a{[|]|\~^}]{^N9(K9,J7*M<.K8*J5(H5(J8*I7*H6*H5*J8,cN>v]v\t[waYF7L=1M=0M<2I;/F7.E5+E5+F6,vdQmUnVpYr[N<.H:.H:.E8.P@3zeOxfQK7/J;1H9/WMB}p|xj{wiyuhzuhvpevrdvsf\[ZHA;7+"1$#1!,$-"#((+!;;H,1I,1NC64_M;1$!+'&WSO^RGeN?`L=E6+6-)=40=0(RI@qqj;2-3%=3*5,(<97'80+G;4bYOfe_6..8-)7)#3+* 85/qom-%!1'$3% N:.N;.3#+ -'#SQFqm\A>=)"#)2$xaWD3-'.)* 6'_J?bMB\H<`LD[G@YG@O=4L<3T@4cM?gNBgPBgPBaI;dN@_I<dN@cK=hODmUHU=.V?/ZD7W[Z9H<:I>6E9;F9?K<FOCR[JPYIBNC?NA?NDFVHBNBY`Om_bPNWLIUG<L=CRECPC@RCEUGKXJKWHLXIDUFFVFEWGDVGGYHF[HDXG@UDATDATC@QB?RB5G94@6?L@DSE9K;:N=BTDASD@TDBTD?P?HVGCXF>YG:WE?ZGAZH?ZH;QA?VEBRCBL?IQCEPCDQCJUGGUFEWFE\J>WDNbPSiTMbNLbOH_LIaOC^K?[GF`KE^II`MNbPPcQPbPI]JN`NM^NG]LJ_NH^ND]N:XH:VH3NB/L?.MA9UKWQO5&3)$4' N?N6A4F?C2"wj_~s{m}m|n|n~q}o{nbWKUH=UJ>XMB[OE[PF]PG]RH^SG_TI`UIbWLbWLbVLaWLbWL`VLbXNcYNcYPbZRbZRcZSe^Ue^Ue^Sf^Uf_Ug`Wh`Ug`Th`UhaUhaVibWkdZlf[nf]pi_tobzj|l{l|m{l{m|m|ml_/!.9-7(I:tt3 1 /1"1!4&5(zkwyWD6A1$}{jmpH{}VoqLUW*`d2\ZZB=4D?7>90(%$!4/'<8/B>6IE>=91)$LF<FD812"@>1D?8OJ@QJ@NF<HA8D?6EB985)(#A:/?A0@B1ccU`aS_]Q__Sa`UdbUdaT\[M]ZM]\O`\Ob\NXTGKF>IA<KE<TQHGC9QLBSMDURINH=;3*PJAC;2E=4JC:VQJOKAOH?D=3A=4C?5PLDOIAG@:PLBLH>GC9RNEMH?C=374'KG=FA:EA7SMGURHWSKEB;86+'(/0!74(MK>[WK[VL\WMOK@B@577*WVKb_V\YPJG@QOG><5hUQ-07%0/320/1042 4 5"6%3 35!4!2;(4"2114 22122 301131103|f;)00004 26"23#11 6#5!04 3/1220024#2 4!22022333222 212~1|/n-f-[+E%< t1//;'bdazwe}weKC8G?7F>6IA8F>5E<4A70;3)9/'0!:*8+8*9););*?-B-A+D0!J6(L6*G5&G5&I6'I7)F1#H4$H7(K8+F3#z]CsP^crSuU|]}\|\_xW}`iS?K9,M<-J9*L:,L9+L:,L9,J9,I7*E6)I7,[G8uZv\rYqWnXEI:.PA5G7,H7-F7,F7,G:-F7,YG9oXoVlVnWmZGE6,H:-D5+H7-vbQjSYE8J;4I;1E7-qj_zvh{wixtgvrdtpdvqdvsdZYWLA:>0'9.+- 1#+%</&R>0Q:0K6)D/"B509:F)&-ljf8<T;Ec?8=H3#1%.('LJG[RJI5(I7*PA6-!$1("3'!if`}}&5*#HD<H?;;+$E805)!WH<|se]]V9016*%YH>(3++1)'mljHFB2)'(E:1TB6ZF9TC8)IDCwwu41.)"##%6,(*##-')$R@7[D7\D9XA5iSBeM=bK:aJ9gN=gP?dM=gOAcJ:eL=X@2YC2aJ;U>/ZE5V>.bI;iRBoXHiOB\F:Y[Z2>4:F:PYKhjYgiWVYIQWJPXJKVIAN@>K>BNB^eSnt_HQ>CQEGTGESE?NABQCFSHLWINYKFQFFQFAN@HVGN[L?RBFVHDUEF[IBXGF\JDXHCVFCUE@RB:L>>L?8D8,5+0<01@29G96B68F9AM?GSEEQCFTFDVF?UD;UD=WF?VF:M?<UC5O?=QB?N?OZLEQDHOCLUJJUIDVFI\LL^NL]LNaNL^LL`NG\IH\LPdRPcPRdRR_OTbQUbRP`PN^NEUFIWHN_PGXLN[MRaRSdU>SDE\N?VJ;VJA\OYSTTA82&tg2yi2OAO@H<=3VJ7maZeXMqfZ}nzkzm|m{lzjuoac\Tc\Tc]Rh`Tg`ThbVhaYhaYjbZjcYjdYkcYldZle[ldZkcYkcYkdYkc[nh\miXnjWmhWmd[oj`pi_pi`qj`pi_pi_qj`qk_rk^sl_tm`tmauoevobyrf~yi|lzl{l{k{l{l~o}zh|I;?3D8XJsx\M8*2$6'7(=0bTwuwO=-L@1dyd{zVyxUYfo8\ZYFA7>:/F@:0,"*(20!74'//#63(;7-,&B@3*,+032"?<0LF=HA8HC:IC<B:383-50),'!/,&%`_Puqfsndsnesngtnewqgwsi|wlzuiwpftndvrfWSGGB:RLENH@\WOC=5C<3A91E@772*E?7KC:OH?VNGF?5A<4LF>;4,:4/:5/60)>93C=881*D?8NHC51'A;2KF<50#)$=;*99*%#D@5_[RTOG>91<90 *+)&EA8HA7NH?OIAGE6EB5GC9[YPQNEFC:DA:GD;CA8hUQ.14 12010/111124!4"4 8$4 4 49&4224113141001111013I5YE=,/0104#7&6#6!3144$8$034142222220.3 222222222232232x.m-b+P'< Q&{+09'gifuq`{ubJA4H>7G?7E=5F>5C92@6/<3)9/'-!6(6(6(5';*A/ B-B.E2#D0!F1#E0!H7'D1#G5'G5'J5'J6)J6(H5(F3"{\AgFvUxYuWzZwXz[}]|\|\^nSJ8*K9,K:,L9+K7*N</I5(M</E3'H6*G6*M<.|emUqWqXqZH7*UE9I:-F7,F9,F7,G:.G;.J:-q\nUlViTlWL:-G:.E6,F7-^L=~jSs`MG7-H:1I;1OC8{oxtfurevrdrn_upbvse^[Y:,$,"4.*+6("0 1&Q@3\G6XB4V@2P=+I=;74A.->AF`AIe8A[3:W=4:6(1+)?;9kheA/%C1&J7'E2(9,'<50B95C;3~yaa\A87QKJQB;TA7I7.M:/E2&B@;-#$D60L;,S@4+ jig[ZY,%#%&zCA;#%+ .E5,A3*C4/?.(9)"G5,XC6ZH:ZE8ZE8^I<^H<]H;fPChQDbL=iQDkSFgQCfOBiTHjTHjREkTGdOAq[LfP@cL<mTGnTG_H>Z[Z[aRZ_NTXFJL:hiW~m\bQYaRZaQgo\em\io]NWDGRCXdWEQE@LA;J=AOBDQEGRHPYMDPDHUHHUHITFJWHCRD>TD?RD@SCDSEK[JHZIHXHDTEBRCCRD;H;3<07<35:19A89A96?6<H<BLAFPDFPDFPDFRFBPC>O@ESFDRDCK?<C8=L?5M?6N@4K;;O?6H<=J>CNBKUJJUHLZLMYKT^PU`QO\NLYLM[LR^OQ^NP^OG[KIYKM]NI\KJ\KK[LK\LIXI@SD8QD8PABTER^PNZL@QCGXIAUHE^SROLI;^^S6' =/:06+L<%D4*tg_vi~xk|vh~vj~wkxjyj}vhyrenh^ld\lf\mf\nf\og]oh]nf]oi^qj`qk`qj`rk`slbsmbqk`qj^rk`sm^rsC|=z=y@xvUumevocvmbtmauoduocuoduoduodupduocwqdxreyueyue}vhyjzjzlzk{m{l{lyue}lxiteptrnw7$>.."_Nyhrrsxb>,SJ5SK+3.ojJyuYjVS,hgB|]UU'\a0ZYXFB8;6,@<2?:2)((*" /,51#95)%"%&&*')*+20!=9-RMCRMENHC?:0(%61+.)#$":4)k_UaXPbZNaXL^VK`WLZPG[QJ^TJ]RIYND[OF[PFPG=EB:F@:>91>70@<3E@:E=5B<361)<6/?91F?5D=4C=5E?:D?7?:2?;5HD<TPHVQJF?:A<7?92-))%74'WTG&!-%(&-/IF:HB8>7/LGA93,*% ..%!1."AA4@=0EC7?F,:=)IC<a^TZWP]\PecVXUKPOFhUQ./0212100111115!7'1124 16%2!101013100221132301<);,:)4!1004#4&2"3#22!16$5!4 3102000/230/40222222/2~/4 122 2/v/h,[*I'8h..:)bc`|vfyr_LC8H@8F=6G?6E;4E<3@5.=3*5,#- 3&6(5'7(8);+A/D1"C1!D2#F1$G1#G5%G4%G4&H5'F3$J8+G6(H7*E0!jOtSqSsUxWsSrQsQvXzYz\|\cS@/L;.N<-H6)K9,L;/L:,K:,K9,J6,I7,G8)~fsXmUmTt[WB1O@3TC7F7-E5+G:.K=2L>2F5,yhW~lT}jTyfO|hQhUDD3)E7,B3(L;0~kV~kUTB5H90G9/G9.pgZzuhxtfupcrl_rj^vqdXUT!":2.6)%?0(2!?/#bWJ]PFK:0O>1F4'C4*2'"<6959NDPn=Jj=Io?If4052($3.-onlSD;U@2RA5N=/N=2@5/>95JD@e_WmmhKHIH@=]I=O=1YG:[H=UH<-)&/&%C2+L6+XH;}vb`_-&#(. /$ !**!/.$/+%( (.$#&=0+:)!`L@^I9YC3aK;^H:ZC7]I>YE:ZF9ZF;aLA]H<\G;bNB_L=ZE8_I<eN?mUFhQCfO@lWHhTFfPClVHmXJq]OzdUvaSqZLnVHUB5\]YHJ8\^Ioz}iRXG<E6MWGQWFX_MY`LciW^dShqaT^NKUE@K><J><H=BOCAOBBNBAM?JWIMWJLVIAM@@OACRDETEDTE>O?FTF?I<BJ=LVHETEFSE8G98E7;I<6A55:19>7:D:9F9BKAFLBAH=?F;9@8DKBCKB>G=7>47;131)>:4<>5?D;?E;DMB5I;.A3=M?>L?6F:4H:@TFEVGJSFLTINVKPZLQ[NJVJDUG8PA:UE8UE<UE@SECVGIZJJYJGUGDTF6J<<PAEVI4G9<OAHYKIUIR^QQ_TbbOQ{s.) &
+8+;/( QB$dX:SyV|si~vi~vi}vi~wixjvh}vhvodqh_qk_qk_qk_rk_slcsk`smasl`tmbvnbvocvocvocvocsmbvofsoZow1pz&v1nz+w{?wqewpgvpevpfxpgwoduocuobuodvpdvpdvobwpaxrdytd{uf|tdxhwixkzk{lxi}ue|l|o|on}now20;% )
+%!.,94, "  #!+*40$E@5OH<JF;MIA)#"60*)$?6-aVKaTL`TK\PH[NEYME]QJ^QJ\PG]QG]RI[QH[RII?7LE<WQHPKCNHAJE=JE<e`WFA7KF=D?9E@:SNGNICC?9C>9GB;C>8YUNXTJLH>QKCNIA;5/(#)$/,74&13")%*%0*'#82&@;1E@8MG@50)#)"(#"+'42'01")*(+;>-[XO[ZO_`T]^SXWK][OYYNiUR-///021001111125%4 6!1 418&111313301111"11111229&G8:)/2203!113#04!6"5"6"13 002 0/2325"|/.3/0222/022v2"4$23221/q/d-U*A%A w/:'efcwp`wpaJB6HA8F>6F=5E=4C;2?5.<3*7,$,,"-!5'6(9*=-A-B0"C1#D1!E1$G4&F3%D1#F3%F4&F4'G4&E2%E3%I5#tVuSsTsUuVtVrSwSvVuVxWxXzZqZDK9,M<-I8*L:+J8,N</L;-L:,M<.M<1J9+v_z_u[rUqWmYFD3'gXHE3*E7,G9-G;.H<0H;0`PAsZmV|iRzgP}jSJ7)E6-C3)D3)vcQzfNq\JE2)G90G9/RE:|uhspbvpcsl_sl`vodTRS G=:@97C:5A3*1!A1'-90)WNDZMBZJ?YF9^L@XF9NC@0/;<=N;9G55HLGP(1**[[[khb_K>XE9]NBi\RWG=$( 4*%LE@ijgph`fXMYG:fUG{_`X5-/*^QFrkcYZV)$#(/ E4,RA7K=5VF<]JAZE=_KC`LBcNBcMCdNBiQDgPA^H9bJ;dK<kTEhPCkUIgPDmXJkUHdPCjVHbN@iTHnYLs_Qo[MhTHo[McO>mYJoWHwaSzaR{aRxaQfSE`L?fRGfPDqZNbPE\\YgiXno[DI8DJ<;D8]gYYbQbjZjr_iq\YaNOYHHTCQ^MWbUYbRQ\LX_OPXJU\NaiYMWHKXIGRE=K=?NA?N@ETF?M?>N?@N@EQCDPCFOBCM@GTE@K>DNAAJ@5@54>39C95A54@5;I;;G:@H=FNDDNBELC=E=DKDBJDHMFBC;<93>=5><6<94;93:;5EOFEQG=NC1B8?KCBOEHSIDQEEREKYKCSECQE?LBCPEARECSEFUGHVHIVGIUJCQGJTI@PCAPCGUGHUILYLCTE@RE<OC;MA>OCGWIXcXnnUpi,4#-$LD#OC)XJ(YG=Pzpk|re~ui}ui|vf}vhxj~vg{tfuodsl`uncuocuocwobuocwnevodwqevodwocxrdwobvpexoewodqnTgn)lt)v}2ku(sx8xu`yqixqexqbuuVz{SU|{Wwqawpdwqcwpawqdxqdypbytd{uf}vf~vf}vhxjzk|mzpa}m|m|m|n~o}oq{hAD*MO5G;() xgG?%LIRG&2^YBc`DqfPME/51UV-de8Z\(VZ+LM$Za1a``__WcbYhf^ZXQXUL_\SdaW_]T^\S^ZTUQIVRISNFROEZXNdaYli`ki^kj_jjaa`Xb`X`\UNKCGB<UPJke]lf]gc[d`Xie]ie\hd[c`Wfa[fbYeaYfcZif^SMDbZQc_UYWK\ZP\ZPd`YfdYhe[mi_`\R`ZQ]YOVSI]YP\YQcbX_\S[XN]ZP^[Q`\R\XNQLDGC;?;1`\QXSJaaVIE:IE:JF:NHAWSJSPEZWNWTLOKE;5/'#0) GA:C>6?<3BB7?=166':=.<=1TTJ_^Vec[gf]dd[jTQ,.010111111111 31134 13 6$4 03111 1005"1 13!5#6"1101;)PB:'135#13!22325$3"6$6#/1102/20208*y2"02222223224x-6$424 /11y/i-]+O(;V%9(efc{hzr`PE9F=6F>6G@6D;3B91@6.=3+5-$*0"4'4%3%5&;)?-A0#?-A.@-C1"F3%G4&F3%E2%F3&C1"E4&E2%O:'qUrSvWuVvXoPqQrRsStVuUtToPrWM7&I7+G5(I8*J8*J8*L:,N<-M<.L:.I8*t]xZx[sVsVlUI8,aPBQB0G:/F8,G:-G;.G<.P@2oWkS~iQ|iR|iSfTCA1'C4)C3)`N@|gQzeOTA1G80E7-F7,ocWxrdsn_unavo`tnbSPRUPME@@<2->0(H93,"+0"3$."D8/QC5O<0<(J8)Q>1F3$^L=R?2N>1/#+%%40.YOFkXL[M?fTIYF9XG=&1&$:40$ikczqka/)&/%%]VPy{w>=:3+(&)F5,eTEeRCmWKr^KvakYt\Jw_Ot]NjUFhRFkWJiUFiUGjVIp[LmYKq[KxbQpZLn[LlXKoZMoZLt_RkVJdOBcN@hSFlVHgRFmXKkVJXB4r[LoVFhP@fM?lUFnVIlUIfQFcMAWB8Y\[=F:6?58A:?J@V]NIQ>[aMOUBV^LZbRKVHBQBCRB<K<?L>CMALSF^dVS\NFQDCN@CQDAPE=MA:K>=L?:J=;L@=MB9I<9L<=N??M??L>BNAANA;H;?J?7@5>E;:C:>I?>K=;G;BNBBNB=G;BK@@H=HODDNBBJ?BIAFLB7=3FJC=@6<;4650;92?B9HLB?E=DNE?KABMBFODBMCCPECPDDQE:J@2D;5G?9I=EQECLB?J@?KA>LB4I<:MC9I=:KA?NBHTIBNBEQELYLHVIAPCL\MO^PIZMVcXif[2# _KBL=$E8IB;/H68;xMzpl|rf}th|vi|vf|vh|vj|vfztfunbtmbuoeuodyt\jj;ys_xqdxv[yu\xrczsgyrfxreysevncypdooFel'el)ls,hp'hm.yu_{skyxZzHACHzzOztbztfztdyteytewqdyqdzqdyte}vhxi~vgwhwixi}vg{m|m|m}no~norzr\iaF{q\;.5%?9zsVSA00 yuzpWDCYY/YY0TV-MO"UR,QT$S[)_^^_^Ua`WaaWaaW`_X^]V`_Va`W`_WaaXbaZbaZaaXcb[`_VcbYcaYcbYcbYbaYcbZcbYbbYecZ\XRZUNYTLPKC\XPUTLRLDSMCQLARMCMF=QJBPH>TMEVNG]YQjg^kj`ih_ddZlj`gg[ef[gf[gg[hf[ig^ii_ii_hh^gg]hg]gg]hh^ih^ii^ih^kkaklbkkbee]hh]hh`gf^gf_fg\gg]gf^gf]fe]gf^ee]fe^fd]ec\fd]ed]ee_ed\fe]fe]ccZde\ee]ff]dd\cd[_aY`bZbc\iTQ-///1210002456$7$7&3 04!4 111101101114 4 18%9&110128'NA8(/0113223!16#4%3#5$/0//2/02308&|5$/2000220223!/6#22 3 01/|0r.f.Z(K'9
+h<,cca~xf{hSJ<E<4F>5E<4C92B81@5.:1(7-%*/"0#0$3%3$6(;+;)>-B0 B0!C0!C1"B0!C1#D1#D1"E2$C0#F3%\D0pQjMrToPsTtUsUsUrRrTsUsUlNiIjQ8I7*I7*F3'C2&G6(H6(J7)J8*J7*H5'pXsUrVnQnRqUT@0J9.raNC4'E6,F7,F7,F7,F5+vbO}hO|hP|hQ{fP~jVI7)A1'B3(N>2|iUycMmWDE2)E6,D4+PA6|sdwo`ul\rk\vrcVTT:-)XTQ.))-% 7.&WMElcb*!"0"2"C3)=/$=.#F4)C0$F3(F3(K9,7#K8-N</C3*)1**IHCQE>O?6R?5UC8TD6ZI?, *!-'')"!1+(GG=~p;6.9.1(RPF:61-%$/%$!$N=5dRChXK`M@gTGeSCfPCr`QmZJpYKr[MvbSkWHkWFmYKjVGmYKs`OvaRxaQ}gVoXKt]Oq\MkUHlVJhRFoWJqZKu`QxfWhTHp\Op[O|fZycVwcSfRBlWJiTHu]N~fVlUIaK?xaU[G<VYW>I;FRCZeWs{ilp]lq]Z`NV^NLUEGQAGSE=L>;K@9H<@L@JUKLXL<J@7E9:I=<K>7F9?MBFUH:F:?H;9I<4H=2C6:G:;D9=F;;F:;H;9I=:I;AMA?I=>I<@I@>G=@LA>I=;G<@L@DPDBNB:G;@I@BKA@I@>H=AI>BJ?<E:DNBDLAEI@BA:DF??E;CH?=D;CLADLABMACOCANC>LA>KAANCAMD<J?1C68G;7E8?JACMCHPFBJB=J>7F:COCGPD@J>BPB?M@=L?:K>;M@5F;/A5(:/<OBM^Oea`aNAbK:H4!S@$IB=G<x~,:ia=qhL|t^~uk|ui|ue~tf}uh|uf{teypdtmaunduo`ol8Z\~`P}@{@zu`{ti{ufzugzudyv\zx]lo9ox/kt1Ya X_X[!~xe{x_v5z9zFzuVzti{tg|uf}vh}vh|uf|ufzuezte{tf{vg{vg}vh~uf}ue}ugyjykxm^xoa}nyj|o~ppXN6;3B;SJ.0'5-HAI>D0%=0#qfOL$KI#=>6795nxpmH_]^^]Va`W`_V`_W`_Xa`W`_VbaZbbZbbZbaZa`Wa_W_^UefZccYcaY^_Va`WcbYcbYcbZeeZdcYebZdbZdc[dc[ee\dc[fc[fg\ee[gg_fg\hg]fd[dd\dc]dc[dc[bbZdc[b`Yhd]d`YdcYgcYdcYhe\ecZfc[ec[ccZec[eaYec[ebZebYcbYdaYdaY`aXcb[baZ^^UcbYcbYbaYcbZcc\baYcbYec\cbYcb[dc\cb[caYcbYdc\cc[ec^ec\cbZcc[aaZ[[SaaY_aZ`aY`aY^^X_^VjTR--/01/00106"34 6"4 |1 5!35!//3"1/11/000/2019&:&6#3 1-18&I;>/0011031245#3$6%3$/////040222222022000/22}14"22 2 200t0l0f,_-Q'A#E.!egcokYxn^\SED7/D;4A80E=4>4+;1)9/'4+"'*,,-,1"7&9(<+>,A-D1"C0!B0!?+>*B0!@-A/!?+aI5nQrS~dFrUkOjLjLsRpNuVoPsSkLjLpVQ:+I7+F3'D2'G6(L:+J7(E3&G4&VC0tXnQtXlQiNkOiVBC1%xfR_M>E6-C5*E6+C3'A2'[K;sXjQ|gOzeOxfNn\H@0%?1&?0%zeRt^HxaLT@5B2,A2)A2'maRypbti[_TJslaXWUM@9A<9*$!&=5/LB;RKE_[WbTOM;2QC6O>2I7,B/#B/#N=.J9*J;/`KCTA7dSEP?36+%&-'&RVKm`XP?2SC9G4+K=2K<1=1,?66-)'pjgǵAF33+.%+"#$  N=5\J>R?5ZG9XF:aMBt`QkUHZD7cPAfREs]OkVG{gTvcOkWF|gVs]IhSDkWGr]Lt]OiSDqYJ|cQkXoYI}eSpZJpXJt^NlVIu]QvbUiTGuaRr\MwaSs^N}fVu_RlVKhVHueWlXIlXK^LCac_}jmqXJP<MUJHSE8H<7F<9I>ISD=J<8H<JZLM\Q[fVghRYXE>H;<L@?M?DSE;L>>N?9K?=K=>F:;C96D96F8:C8;F9@H<;B89@4?D:AH><H=:F9>G<?H<:G:7E99E9;G=;H=BMA:E:9I<DNCAI@9C99E::F;BNCFQFHODDNBFOE?H?DKB@F??E=<I<=J=AMAAL@?I=@MAFNFCMF6G>9K?1B73A6?H?CJAAJ>9C7=E:=D8?H>AH?AG?@I>=F;<J?4F:4H><MC3E95J?6H>?NBCTH=QDI_OeaaYF6XH(A>I<xm;;>9Abc6b_*lo"zs`{rg|vg|vexivk|vf|vfztfuodwod{v[ed"A= [\$v7{?x~E}vj|vk|vi~xk~b}Duz>qw7z~<u};nx8]`#Z_*~}gqxBoz&zxN~wn~xj~xk|vhykxkzj}wh~xh~wi~wiyj|wh}xjzj}te~vg~vh~vhyiyk}vgxj{k}n|ltmSytYkvYR>5/XN9H;)4!,XJ:kZ73-*
+++
+# - zg~t_ \ No newline at end of file
diff --git a/src/cups/canon.c b/src/cups/canon.c
new file mode 100644
index 0000000..158af1d
--- /dev/null
+++ b/src/cups/canon.c
@@ -0,0 +1,679 @@
+/*
+ * CANON backend for the Common UNIX Printing System.
+ *
+ *
+ * Contents:
+ *
+ * main() - Send a file to the specified parallel port.
+ * list_devices() - List all parallel devices.
+ */
+
+/*
+ * Include necessary headers.
+ */
+
+#include <cups/cups.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <signal.h>
+#include <ctype.h>
+
+#if defined(WIN32) || defined(__EMX__)
+# include <io.h>
+#else
+# include <unistd.h>
+# include <fcntl.h>
+# include <termios.h>
+#endif /* WIN32 || __EMX__ */
+
+#if defined(WIN32) || defined(__EMX__)
+# include <winsock.h>
+#else
+# include <sys/socket.h>
+# include <netinet/in.h>
+# include <arpa/inet.h>
+# include <netdb.h>
+#endif /* WIN32 || __EMX__ */
+
+#ifdef __sgi
+# include <invent.h>
+# ifndef INV_EPP_ECP_PLP
+# define INV_EPP_ECP_PLP 6 /* From 6.3/6.4/6.5 sys/invent.h */
+# define INV_ASO_SERIAL 14 /* serial portion of SGI ASO board */
+# define INV_IOC3_DMA 16 /* DMA mode IOC3 serial */
+# define INV_IOC3_PIO 17 /* PIO mode IOC3 serial */
+# define INV_ISA_DMA 19 /* DMA mode ISA serial -- O2 */
+# endif /* !INV_EPP_ECP_PLP */
+#endif /* __sgi */
+
+
+/*
+ * Local functions...
+ */
+
+void list_devices(void);
+
+
+/*
+ * 'main()' - Send a file to the specified parallel port.
+ *
+ * Usage:
+ *
+ * printer-uri job-id user title copies options [file]
+ */
+
+int /* O - Exit status */
+main(int argc, /* I - Number of command-line arguments (6 or 7) */
+ char *argv[]) /* I - Command-line arguments */
+{
+ char method[1024], /* Method in URI */
+ hostname[1024], /* Hostname */
+ username[1024], /* Username info (not used) */
+ resource[1024], /* Resource info (device and options) */
+ *options; /* Pointer to options */
+ int port; /* Port number (not used) */
+ FILE *fp; /* Print file */
+ int copies; /* Number of copies to print */
+ int fd, /* Parallel/USB device or socket */
+ error, /* Last error */
+ backchannel; /* Read backchannel data? */
+ struct sockaddr_in addr; /* Socket address */
+ struct hostent *hostaddr; /* Host address */
+ int wbytes; /* Number of bytes written */
+ int nbytes, /* Number of bytes read */
+ tbytes; /* Total number of bytes written */
+ char buffer[8192], /* Output buffer */
+ *bufptr; /* Pointer into buffer */
+ struct timeval timeout; /* Timeout for select() */
+ fd_set input; /* Input set for select() */
+ struct termios opts; /* Parallel port options */
+#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
+ struct sigaction action; /* Actions for POSIX signals */
+#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
+
+
+ if (argc == 1)
+ {
+ list_devices();
+ return (0);
+ }
+ else if (argc < 6 || argc > 7)
+ {
+ fputs("Usage: canon job-id user title copies options [file]\n", stderr);
+ return (1);
+ }
+
+ /*
+ * If we have 7 arguments, print the file named on the command-line.
+ * Otherwise, send stdin instead...
+ */
+
+ if (argc == 6)
+ {
+ fp = stdin;
+ copies = 1;
+ }
+ else
+ {
+ /*
+ * Try to open the print file...
+ */
+
+ if ((fp = fopen(argv[6], "rb")) == NULL)
+ {
+ perror("ERROR: unable to open print file");
+ return (1);
+ }
+
+ copies = atoi(argv[4]);
+ }
+
+ /*
+ * Extract the device name and options from the URI...
+ */
+
+ httpSeparate(argv[0], method, username, hostname, &port, resource);
+
+ /*
+ * See if there are any options...
+ */
+
+ if ((options = strchr(resource, '?')) != NULL)
+ {
+ /*
+ * Yup, terminate the device name string and move to the first
+ * character of the options...
+ */
+
+ *options++ = '\0';
+ }
+
+ if (hostname[0])
+ {
+ /*
+ * Lookup the IP address...
+ */
+
+ if ((hostaddr = gethostbyname(hostname)) == NULL)
+ {
+ fprintf(stderr, "ERROR: Unable to locate printer \'%s\' - %s",
+ hostname, strerror(errno));
+ return (1);
+ }
+
+ if (port == 0)
+ port = 9100; /* Default for CANON NIC */
+
+ fprintf(stderr, "INFO: Attempting to connect to printer %s on port %d\n",
+ hostname, port);
+
+ memset(&addr, 0, sizeof(addr));
+ memcpy(&(addr.sin_addr), hostaddr->h_addr, hostaddr->h_length);
+ addr.sin_family = hostaddr->h_addrtype;
+ addr.sin_port = htons(port);
+
+ /*
+ * Try to connect...
+ */
+
+ for (;;)
+ {
+ if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
+ {
+ perror("ERROR: Unable to create socket");
+ return (1);
+ }
+
+ if (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0)
+ {
+ error = errno;
+ close(fd);
+ fd = -1;
+
+ if (error == ECONNREFUSED)
+ {
+ fprintf(stderr, "INFO: Network printer \'%s\' is busy; will retry in 30 seconds...\n",
+ hostname);
+ sleep(30);
+ }
+ else
+ {
+ perror("ERROR: Unable to connect to printer");
+ sleep(30);
+ }
+ }
+ else
+ break;
+ }
+
+ fputs("INFO: Connected to printer, sending print job...\n", stderr);
+ }
+ else
+ {
+ /*
+ * Open the parallel or USB port device...
+ */
+
+ do
+ {
+ if ((fd = open(resource, O_RDWR | O_EXCL)) == -1)
+ {
+ if (errno == EBUSY)
+ {
+ fputs("INFO: Parallel port busy; will retry in 30 seconds...\n", stderr);
+ sleep(30);
+ }
+ else
+ {
+ perror("ERROR: Unable to open parallel port device file");
+ return (1);
+ }
+ }
+ }
+ while (fd < 0);
+
+ /*
+ * Set any options provided...
+ */
+
+ tcgetattr(fd, &opts);
+
+ opts.c_cflag |= CREAD; /* Enable reading */
+ opts.c_lflag &= ~(ICANON | ECHO | ISIG); /* Raw mode */
+
+ /**** No options supported yet ****/
+
+ tcsetattr(fd, TCSANOW, &opts);
+ }
+
+ /*
+ * Now that we are "connected" to the port, ignore SIGTERM so that we
+ * can finish out any page data the driver sends (e.g. to eject the
+ * current page...
+ */
+
+#ifdef HAVE_SIGSET /* Use System V signals over POSIX to avoid bugs */
+ sigset(SIGTERM, SIG_IGN);
+#elif defined(HAVE_SIGACTION)
+ memset(&action, 0, sizeof(action));
+
+ sigemptyset(&action.sa_mask);
+ action.sa_handler = SIG_IGN;
+ sigaction(SIGTERM, &action, NULL);
+#else
+ signal(SIGTERM, SIG_IGN);
+#endif /* HAVE_SIGSET */
+
+ /*
+ * Finally, send the print file...
+ */
+
+ backchannel = 1;
+
+ while (copies > 0)
+ {
+ copies --;
+
+ if (fp != stdin)
+ {
+ fputs("PAGE: 1 1\n", stderr);
+ rewind(fp);
+ }
+
+ tbytes = 0;
+ while ((nbytes = fread(buffer, 1, sizeof(buffer), fp)) > 0)
+ {
+ /*
+ * Write the print data to the printer...
+ */
+
+ tbytes += nbytes;
+ bufptr = buffer;
+
+ while (nbytes > 0)
+ {
+ if ((wbytes = write(fd, bufptr, nbytes)) < 0)
+ {
+ perror("ERROR: Unable to send print file to printer");
+ break;
+ }
+
+ nbytes -= wbytes;
+ bufptr += wbytes;
+ }
+
+ if (nbytes > 0)
+ break;
+
+ /*
+ * Check for possible data coming back from the printer...
+ */
+
+ if (!backchannel)
+ continue;
+
+ timeout.tv_sec = 0;
+ timeout.tv_usec = 0;
+ FD_ZERO(&input);
+ FD_SET(fd, &input);
+ if (select(fd + 1, &input, NULL, NULL, &timeout) > 0)
+ {
+ /*
+ * Grab the data coming back and spit it out to stderr...
+ */
+
+ if ((nbytes = read(fd, buffer, sizeof(buffer) - 1)) < 0)
+ {
+ fprintf(stderr, "ERROR: Back-channel read error - %s!\n",
+ strerror(errno));
+ backchannel = 0;
+ continue;
+ }
+
+ buffer[nbytes] = '\0';
+ if (strncmp(buffer, "@BDC ", 5) != 0)
+ fprintf(stderr, "WARNING: Received %d bytes of unknown back-channel data!\n",
+ nbytes);
+ else
+ {
+ /*
+ * Skip initial report line...
+ */
+
+ for (bufptr = buffer; *bufptr && *bufptr != '\n'; bufptr ++);
+
+ if (*bufptr == '\n')
+ bufptr ++;
+
+ /*
+ * Get status data...
+ */
+
+ strcpy(buffer, bufptr);
+ for (bufptr = buffer; *bufptr && *bufptr != ';'; bufptr ++);
+ *bufptr = '\0';
+
+ if (strncmp(buffer, "IQ:", 3) == 0)
+ {
+ /*
+ * Report ink level...
+ */
+
+ int i;
+ int levels[6];
+
+ buffer[12] = '\0'; /* Limit to 6 inks */
+ for (i = 0, bufptr = buffer; i < 6; i ++, bufptr += 2)
+ {
+ if (isalpha(bufptr[0]))
+ levels[i] = (tolower(bufptr[0]) - 'a' + 10) << 16;
+ else
+ levels[i] = (bufptr[0] - '0') << 16;
+
+ if (isalpha(bufptr[1]))
+ levels[i] |= tolower(bufptr[1]) - 'a' + 10;
+ else
+ levels[i] |= bufptr[1] - '0';
+ }
+
+ switch (i)
+ {
+ case 1 :
+ case 2 :
+ fprintf(stderr, "K=%d\n", levels[0]);
+ break;
+ case 3 :
+ fprintf(stderr, "C=%d M=%d Y=%d\n", levels[0], levels[1],
+ levels[2]);
+ break;
+ case 4 :
+ case 5 :
+ fprintf(stderr, "K=%d C=%d M=%d Y=%d\n", levels[0],
+ levels[1], levels[2], levels[3]);
+ break;
+ case 6 :
+ fprintf(stderr, "K=%d C=%d M=%d Y=%d LC=%d LM=%d\n",
+ levels[0], levels[1], levels[2], levels[3],
+ levels[4], levels[5]);
+ break;
+ }
+ }
+ else
+ fprintf(stderr, "INFO: %s\n", buffer);
+ }
+ }
+ else if (argc > 6)
+ fprintf(stderr, "INFO: Sending print file, %u bytes...\n", tbytes);
+ }
+ }
+
+ /*
+ * Close the socket connection or parallel/USB device and input file and
+ * return...
+ */
+
+ close(fd);
+ if (fp != stdin)
+ fclose(fp);
+
+ return (0);
+}
+
+
+/*
+ * 'list_devices()' - List all parallel devices.
+ */
+
+void
+list_devices(void)
+{
+#ifdef __linux
+ int i; /* Looping var */
+ int fd; /* File descriptor */
+ char device[255]; /* Device filename */
+ FILE *probe; /* /proc/parport/n/autoprobe file */
+ char line[1024], /* Line from file */
+ *delim, /* Delimiter in file */
+ make[IPP_MAX_NAME], /* Make from file */
+ model[IPP_MAX_NAME]; /* Model from file */
+
+
+ /*
+ * Probe for parallel devices...
+ */
+
+ for (i = 0; i < 4; i ++)
+ {
+ sprintf(device, "/proc/parport/%d/autoprobe", i);
+ if ((probe = fopen(device, "r")) != NULL)
+ {
+ memset(make, 0, sizeof(make));
+ memset(model, 0, sizeof(model));
+ strcpy(model, "CANON");
+
+ while (fgets(line, sizeof(line), probe) != NULL)
+ {
+ /*
+ * Strip trailing ; and/or newline.
+ */
+
+ if ((delim = strrchr(line, ';')) != NULL)
+ *delim = '\0';
+ else if ((delim = strrchr(line, '\n')) != NULL)
+ *delim = '\0';
+
+ /*
+ * Look for MODEL and MANUFACTURER lines...
+ */
+
+ if (strncmp(line, "MODEL:", 6) == 0 &&
+ strncmp(line, "MODEL:CANON", 13) != 0)
+ strncpy(model, line + 6, sizeof(model) - 1);
+ else if (strncmp(line, "MANUFACTURER:", 13) == 0 &&
+ strncmp(line, "MANUFACTURER:CANON", 20) != 0)
+ strncpy(make, line + 13, sizeof(make) - 1);
+ }
+
+ fclose(probe);
+
+ if (strcmp(make, "CANON") == 0)
+ printf("direct canon:/dev/lp%d \"%s %s\" \"Parallel Port #%d\"\n",
+ i, make, model, i + 1);
+ }
+ else
+ {
+ sprintf(device, "/dev/lp%d", i);
+ if ((fd = open(device, O_RDWR)) >= 0)
+ {
+ close(fd);
+ printf("direct canon:%s \"CANON\" \"Parallel Port #%d\"\n", device, i + 1);
+ }
+ }
+ }
+
+ /*
+ * Probe for USB devices...
+ */
+
+ if ((probe = fopen("/proc/bus/usb/devices", "r")) != NULL)
+ {
+ i = 0;
+
+ memset(make, 0, sizeof(make));
+ memset(model, 0, sizeof(model));
+
+ while (fgets(line, sizeof(line), probe) != NULL)
+ {
+ /*
+ * Strip trailing newline.
+ */
+
+ if ((delim = strrchr(line, '\n')) != NULL)
+ *delim = '\0';
+
+ /*
+ * See if it is a printer device ("P: ...")
+ */
+
+ if (strncmp(line, "S:", 2) == 0)
+ {
+ /*
+ * String attribute...
+ */
+
+ if (strncmp(line, "S: Manufacturer=", 17) == 0)
+ {
+ strncpy(make, line + 17, sizeof(make) - 1);
+ if (strcmp(make, "Hewlett-Packard") == 0)
+ strcpy(make, "HP");
+ }
+ else if (strncmp(line, "S: Product=", 12) == 0)
+ strncpy(model, line + 12, sizeof(model) - 1);
+ }
+ else if (strncmp(line, "I:", 2) == 0 &&
+ strstr(line, "Driver=printer") != NULL &&
+ make[0] && model[0])
+ {
+ /*
+ * We were processing a printer device; send the info out...
+ */
+
+ if (strcmp(make, "CANON") == 0)
+ {
+ sprintf(device, "/dev/usb/lp%d", i);
+ if (access(device, 0))
+ {
+ sprintf(device, "/dev/usb/usblp%d", i);
+
+ if (access(device, 0))
+ sprintf(device, "/dev/usblp%d", i);
+ }
+
+ printf("direct canon:%s \"%s %s\" \"USB Printer #%d\"\n",
+ device, make, model, i + 1);
+ }
+
+ i ++;
+
+ memset(make, 0, sizeof(make));
+ memset(model, 0, sizeof(model));
+ }
+ }
+
+ fclose(probe);
+ }
+ else
+ {
+ for (i = 0; i < 8; i ++)
+ {
+ sprintf(device, "/dev/usb/lp%d", i);
+ if ((fd = open(device, O_RDWR)) >= 0)
+ {
+ close(fd);
+ printf("direct canon:%s \"CANON\" \"USB Printer #%d\"\n", device, i + 1);
+ }
+
+ sprintf(device, "/dev/usb/usblp%d", i);
+ if ((fd = open(device, O_RDWR)) >= 0)
+ {
+ close(fd);
+ printf("direct canon:%s \"CANON\" \"USB Printer #%d\"\n", device, i + 1);
+ }
+
+ sprintf(device, "/dev/usblp%d", i);
+ if ((fd = open(device, O_RDWR)) >= 0)
+ {
+ close(fd);
+ printf("direct canon:%s \"CANON\" \"USB Printer #%d\"\n", device, i + 1);
+ }
+ }
+ }
+#elif defined(__sgi)
+ int i, j, n; /* Looping vars */
+ char device[255]; /* Device filename */
+ inventory_t *inv; /* Hardware inventory info */
+
+
+ /*
+ * IRIX maintains a hardware inventory of most devices...
+ */
+
+ setinvent();
+
+ while ((inv = getinvent()) != NULL)
+ {
+ if (inv->inv_class == INV_PARALLEL && inv->inv_type == INV_EPP_ECP_PLP)
+ {
+ /*
+ * Standard parallel port...
+ */
+
+ puts("direct canon:/dev/plpbi \"CANON\" \"Onboard Parallel Port\"");
+ }
+ }
+
+ endinvent();
+#elif defined(__sun)
+ int i, j, n; /* Looping vars */
+ char device[255]; /* Device filename */
+
+
+ /*
+ * Standard parallel ports...
+ */
+
+ for (i = 0; i < 10; i ++)
+ {
+ sprintf(device, "/dev/ecpp%d", i);
+ if (access(device, 0) == 0)
+ printf("direct canon:%s \"CANON\" \"Sun IEEE-1284 Parallel Port #%d\"\n",
+ device, i + 1);
+ }
+
+ for (i = 0; i < 3; i ++)
+ {
+ sprintf(device, "/dev/lp%d", i);
+
+ if (access(device, 0) == 0)
+ printf("direct canon:%s \"CANON\" \"PC Parallel Port #%d\"\n",
+ device, i + 1);
+ }
+#elif defined(FreeBSD) || defined(OpenBSD) || defined(NetBSD)
+ int i; /* Looping var */
+ int fd; /* File descriptor */
+ char device[255]; /* Device filename */
+
+
+ /*
+ * Probe for parallel devices...
+ */
+
+ for (i = 0; i < 3; i ++)
+ {
+ sprintf(device, "/dev/lpt%d", i);
+ if ((fd = open(device, O_RDWR)) >= 0)
+ {
+ close(fd);
+ printf("direct canon:%s \"CANON\" \"Parallel Port #%d\"\n", device, i + 1);
+ }
+ }
+
+ /*
+ * Probe for USB devices...
+ */
+
+ for (i = 0; i < 3; i ++)
+ {
+ sprintf(device, "/dev/ulpt%d", i);
+ if ((fd = open(device, O_RDWR)) >= 0)
+ {
+ close(fd);
+ printf("direct canon:%s \"CANON\" \"USB Port #%d\"\n", device, i + 1);
+ }
+ }
+#endif
+}
+
+
+/*
+ */
diff --git a/src/cups/command.txt b/src/cups/command.txt
new file mode 100644
index 0000000..ac9c3e9
--- /dev/null
+++ b/src/cups/command.txt
@@ -0,0 +1,76 @@
+command.txt - 09/10/2000 - CUPS Drivers
+---------------------------------------
+
+This file describes the experimental CUPS command file format,
+used to send printer commands to a printer in a device-
+independent way.
+
+
+FILE FORMAT INFORMATION
+
+CUPS command files are ASCII text files. The first line of a
+CUPS command file MUST contain:
+
+ #CUPS-COMMAND
+
+After that, each line is either a command or a comment.
+Comments begin with the # character, e.g.:
+
+ # This is a comment
+
+The printer commands are described below. Printer commands are
+case- insensitive, so "PRINTSELFTESTPAGE", "printselftestpage",
+and "PrintSelfTestPage" are equivalent. Commands that accept
+arguments have their arguments on the same line separated by
+spaces.
+
+
+PRINTER COMMANDS
+
+The following commands are currently recognized:
+
+ Clean all
+ Clean black
+ Clean color
+ Clean cyan
+ Clean light-cyan
+ Clean light-magenta
+ Clean magenta
+ Clean yellow
+
+ Do a standard print head cleaning. If a printer does
+ not support cleaning of individual colors or cartridges,
+ then all print heads are cleaned.
+
+ PrintAlignmentPage phase
+
+ Print an alignment page on the printer. Typically this
+ page shows the horizontal and vertical alignment of the
+ print heads with numbers for each. The phase number can
+ be omitted.
+
+ PrintSelfTestPage
+
+ Print a self-test page on the printer. Typically this
+ page shows if all jets on a print head are functioning
+ properly.
+
+ ReportLevels
+
+ Reports the levels of each marking color in the
+ printer-state-message attribute. The format of the
+ report string is one of:
+
+ K=###
+ C=### M=### Y=###
+ K=### C=### M=### Y=###
+ K=### C=### M=### Y=### LC=### LM=###
+
+ depending on the marking colors available.
+
+ SetAlignment phase x y
+
+ Sets the alignment of the print heads in the X and Y
+ directions. The phase number must match that specified
+ by the PrintAlignmentPage command or be 0. The Y
+ direction is not used by some printers.
diff --git a/src/cups/command.types b/src/cups/command.types
new file mode 100644
index 0000000..5b33d45
--- /dev/null
+++ b/src/cups/command.types
@@ -0,0 +1,36 @@
+#
+# "$Id: command.types,v 1.1 2001/01/22 20:22:54 rleigh Exp $"
+#
+# MIME types file for the CUPS drivers.
+#
+# Copyright 1993-2000 by Easy Software Products.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License,
+# version 2, as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, please contact Easy Software
+# Products at:
+#
+# Attn: CUPS Licensing Information
+# Easy Software Products
+# 44141 Airport View Drive, Suite 204
+# Hollywood, Maryland 20636-3111 USA
+#
+# Voice: (301) 373-9603
+# EMail: cups-info@cups.org
+# WWW: http://www.cups.org
+#
+
+# Define the new application/vnd.cups-command filetype...
+application/vnd.cups-command string(0,'#CUPS-COMMAND')
+
+#
+# End of "$Id: command.types,v 1.1 2001/01/22 20:22:54 rleigh Exp $".
+#
diff --git a/src/cups/commands/CleanAll.cmd b/src/cups/commands/CleanAll.cmd
new file mode 100644
index 0000000..ceb52f8
--- /dev/null
+++ b/src/cups/commands/CleanAll.cmd
@@ -0,0 +1,6 @@
+#CUPS-COMMAND
+#
+# This file cleans all print heads.
+#
+
+Clean all
diff --git a/src/cups/commands/PrintAligmentPage.cmd b/src/cups/commands/PrintAligmentPage.cmd
new file mode 100644
index 0000000..218f0b5
--- /dev/null
+++ b/src/cups/commands/PrintAligmentPage.cmd
@@ -0,0 +1,6 @@
+#CUPS-COMMAND
+#
+# This file prints the primary alignment page.
+#
+
+PrintAlignmentPage 0
diff --git a/src/cups/commands/PrintSelfTestPage.cmd b/src/cups/commands/PrintSelfTestPage.cmd
new file mode 100644
index 0000000..8a557a1
--- /dev/null
+++ b/src/cups/commands/PrintSelfTestPage.cmd
@@ -0,0 +1,6 @@
+#CUPS-COMMAND
+#
+# This file prints the printer self-test page.
+#
+
+PrintSelfTestPage
diff --git a/src/cups/commands/ReportLevels.cmd b/src/cups/commands/ReportLevels.cmd
new file mode 100644
index 0000000..5d740cb
--- /dev/null
+++ b/src/cups/commands/ReportLevels.cmd
@@ -0,0 +1,6 @@
+#CUPS-COMMAND
+#
+# This file tells the printer to report the ink/toner levels.
+#
+
+ReportLevels
diff --git a/src/cups/commands/SetAlignment.cmd b/src/cups/commands/SetAlignment.cmd
new file mode 100644
index 0000000..943a3f0
--- /dev/null
+++ b/src/cups/commands/SetAlignment.cmd
@@ -0,0 +1,7 @@
+#CUPS-COMMAND
+#
+# This file sets the print head alignment. Adjust the parameters accordingly.
+#
+
+SetAlignment 0 8 0
+
diff --git a/src/cups/commandtocanon.c b/src/cups/commandtocanon.c
new file mode 100644
index 0000000..db5bc92
--- /dev/null
+++ b/src/cups/commandtocanon.c
@@ -0,0 +1,196 @@
+/*
+ * CANON BJ command filter for the Common UNIX Printing System.
+ *
+ *
+ * Contents:
+ *
+ * main() - Main entry and command processing.
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include <cups/cups.h>
+#include <ctype.h>
+#include <stdlib.h>
+
+
+/*
+ * Macros...
+ */
+
+#define pwrite(s,n) fwrite((s), 1, (n), stdout)
+
+
+/*
+ * 'main()' - Main entry and processing of driver.
+ */
+
+int /* O - Exit status */
+main(int argc, /* I - Number of command-line arguments */
+ char *argv[]) /* I - Command-line arguments */
+{
+ FILE *fp; /* Command file */
+ char line[1024], /* Line from file */
+ *lineptr; /* Pointer into line */
+ int feedpage; /* Feed the page */
+
+
+ /*
+ * Check for valid arguments...
+ */
+
+ if (argc < 6 || argc > 7)
+ {
+ /*
+ * We don't have the correct number of arguments; write an error message
+ * and return.
+ */
+
+ fputs("ERROR: commandtocanon job-id user title copies options [file]\n", stderr);
+ return (1);
+ }
+
+ /*
+ * Open the command file as needed...
+ */
+
+ if (argc == 7)
+ {
+ if ((fp = fopen(argv[6], "r")) == NULL)
+ {
+ perror("ERROR: Unable to open command file - ");
+ return (1);
+ }
+ }
+ else
+ fp = stdin;
+
+ /*
+ * Reset the printer and initiate BJL mode
+ */
+
+ pwrite("\x1b\x5b\x4b\x02\x00\x00\x1f" "BJLSTART\x0a", 16);
+ feedpage = 0;
+
+ /*
+ * Read the commands from the file and send the appropriate commands...
+ */
+
+ while (fgets(line, sizeof(line), fp) != NULL)
+ {
+ /*
+ * Drop trailing newline...
+ */
+
+ lineptr = line + strlen(line) - 1;
+ if (*lineptr == '\n')
+ *lineptr = '\0';
+
+ /*
+ * Skip leading whitespace...
+ */
+
+ for (lineptr = line; isspace(*lineptr); lineptr ++);
+
+ /*
+ * Skip comments and blank lines...
+ */
+
+ if (*lineptr == '#' || !*lineptr)
+ continue;
+
+ /*
+ * Parse the command...
+ */
+
+ if (strncasecmp(lineptr, "Clean", 5) == 0)
+ {
+ /*
+ * Clean heads...
+ */
+
+ char *what;
+
+ for (what = lineptr + 6; isspace(*what); what ++);
+
+ if (*what == 0) pwrite("@Cleaning=1ALL\x0a", 15);
+ if (!strncasecmp(what,"all",3)) pwrite("@Cleaning=1ALL\x0a", 15);
+ if (!strncasecmp(what,"black",5)) pwrite("@Cleaning=1K\x0a", 13);
+
+ }
+ else if (strncasecmp(lineptr, "PrintAlignmentPage", 18) == 0)
+ {
+ /*
+ * Print alignment page...
+ */
+
+ int phase;
+
+ phase = atoi(lineptr + 18);
+
+ if (phase==0) pwrite("@TestPrint=Auto\x0a", 16);
+ if (phase==1) pwrite("@TestPrint=Manual1\x0a", 19);
+ if (phase==2) pwrite("@TestPrint=Manual2\x0a", 19);
+
+ feedpage = 0;
+ }
+ else if (strncasecmp(lineptr, "PrintSelfTestPage", 17) == 0)
+ {
+ /*
+ * Print version info and nozzle check...
+ */
+
+ pwrite("@TestPrint=NozzleCheck\x0a", 23);
+
+ feedpage = 0;
+ }
+ else if (strncasecmp(lineptr, "ReportLevels", 12) == 0)
+ {
+ /*
+ * Report ink levels...
+ */
+
+ }
+ else if (strncasecmp(lineptr, "SetAlignment", 12) == 0)
+ {
+ /*
+ * Set head alignment...
+ */
+
+ }
+ else
+ fprintf(stderr, "ERROR: Invalid printer command \"%s\"!\n", lineptr);
+ }
+
+ /*
+ * Exit remote mode...
+ */
+
+ pwrite("BJLEND\x0a", 7);
+
+ /*
+ * Eject the page as needed...
+ */
+
+ if (feedpage)
+ {
+ putchar(13);
+ putchar(10);
+ putchar(12);
+ }
+
+ /*
+ * Close the command file and return...
+ */
+
+ if (fp != stdin)
+ fclose(fp);
+
+ return (0);
+}
+
+
+/*
+ */
diff --git a/src/cups/commandtoepson.c b/src/cups/commandtoepson.c
new file mode 100644
index 0000000..c63f51d
--- /dev/null
+++ b/src/cups/commandtoepson.c
@@ -0,0 +1,241 @@
+/*
+ * "$Id: commandtoepson.c,v 1.2 2001/06/03 20:53:24 rlk Exp $"
+ *
+ * EPSON ESC/P2 command filter for the Common UNIX Printing System.
+ *
+ * Copyright 1993-2000 by Easy Software Products.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, please contact Easy Software
+ * Products at:
+ *
+ * Attn: CUPS Licensing Information
+ * Easy Software Products
+ * 44141 Airport View Drive, Suite 204
+ * Hollywood, Maryland 20636-3111 USA
+ *
+ * Voice: (301) 373-9603
+ * EMail: cups-info@cups.org
+ * WWW: http://www.cups.org
+ *
+ * Contents:
+ *
+ * main() - Main entry and command processing.
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include <cups/cups.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+
+/*
+ * Macros...
+ */
+
+#define pwrite(s,n) fwrite((s), 1, (n), stdout)
+
+
+/*
+ * 'main()' - Main entry and processing of driver.
+ */
+
+int /* O - Exit status */
+main(int argc, /* I - Number of command-line arguments */
+ char *argv[]) /* I - Command-line arguments */
+{
+ FILE *fp; /* Command file */
+ char line[1024], /* Line from file */
+ *lineptr; /* Pointer into line */
+ int feedpage; /* Feed the page */
+
+
+ /*
+ * Check for valid arguments...
+ */
+
+ if (argc < 6 || argc > 7)
+ {
+ /*
+ * We don't have the correct number of arguments; write an error message
+ * and return.
+ */
+
+ fputs("ERROR: commandtoepson job-id user title copies options [file]\n", stderr);
+ return (1);
+ }
+
+ /*
+ * Open the command file as needed...
+ */
+
+ if (argc == 7)
+ {
+ if ((fp = fopen(argv[6], "r")) == NULL)
+ {
+ perror("ERROR: Unable to open command file - ");
+ return (1);
+ }
+ }
+ else
+ fp = stdin;
+
+ /*
+ * Reset the printer...
+ */
+
+ pwrite("\033@", 2);
+
+ /*
+ * Enter remote mode...
+ */
+
+ pwrite("\033(R\010\000\000REMOTE1", 13);
+ feedpage = 0;
+
+ /*
+ * Read the commands from the file and send the appropriate commands...
+ */
+
+ while (fgets(line, sizeof(line), fp) != NULL)
+ {
+ /*
+ * Drop trailing newline...
+ */
+
+ lineptr = line + strlen(line) - 1;
+ if (*lineptr == '\n')
+ *lineptr = '\0';
+
+ /*
+ * Skip leading whitespace...
+ */
+
+ for (lineptr = line; isspace(*lineptr); lineptr ++);
+
+ /*
+ * Skip comments and blank lines...
+ */
+
+ if (*lineptr == '#' || !*lineptr)
+ continue;
+
+ /*
+ * Parse the command...
+ */
+
+ if (strncasecmp(lineptr, "Clean", 5) == 0)
+ {
+ /*
+ * Clean heads...
+ */
+
+ pwrite("CH\002\000\000\000", 6);
+ }
+ else if (strncasecmp(lineptr, "PrintAlignmentPage", 18) == 0)
+ {
+ /*
+ * Print alignment page...
+ */
+
+ int phase;
+
+ phase = atoi(lineptr + 18);
+
+ pwrite("DT\003\000\000", 5);
+ putchar(phase & 255);
+ putchar(phase >> 8);
+ feedpage = 1;
+ }
+ else if (strncasecmp(lineptr, "PrintSelfTestPage", 17) == 0)
+ {
+ /*
+ * Print version info and nozzle check...
+ */
+
+ pwrite("VI\002\000\000\000", 6);
+ pwrite("NC\002\000\000\000", 6);
+ feedpage = 1;
+ }
+ else if (strncasecmp(lineptr, "ReportLevels", 12) == 0)
+ {
+ /*
+ * Report ink levels...
+ */
+
+ pwrite("IQ\001\000\001", 5);
+ }
+ else if (strncasecmp(lineptr, "SetAlignment", 12) == 0)
+ {
+ /*
+ * Set head alignment...
+ */
+
+ int phase, x;
+
+ if (sscanf(lineptr + 12, "%d%d", &phase, &x) != 2)
+ {
+ fprintf(stderr, "ERROR: Invalid printer command \"%s\"!\n", lineptr);
+ continue;
+ }
+
+ pwrite("DA\004\000", 4);
+ putchar(0);
+ putchar(phase);
+ putchar(0);
+ putchar(x);
+ pwrite("SV\000\000", 4);
+ }
+ else
+ fprintf(stderr, "ERROR: Invalid printer command \"%s\"!\n", lineptr);
+ }
+
+ /*
+ * Exit remote mode...
+ */
+
+ pwrite("\033\000\000\000", 4);
+
+ /*
+ * Eject the page as needed...
+ */
+
+ if (feedpage)
+ {
+ putchar(13);
+ putchar(10);
+ putchar(12);
+ }
+
+ /*
+ * Reset the printer...
+ */
+
+ pwrite("\033@", 2);
+
+ /*
+ * Close the command file and return...
+ */
+
+ if (fp != stdin)
+ fclose(fp);
+
+ return (0);
+}
+
+
+/*
+ * End of "$Id: commandtoepson.c,v 1.2 2001/06/03 20:53:24 rlk Exp $".
+ */
diff --git a/src/cups/cups-calibrate.c b/src/cups/cups-calibrate.c
new file mode 100644
index 0000000..bf0c089
--- /dev/null
+++ b/src/cups/cups-calibrate.c
@@ -0,0 +1,839 @@
+/*
+ * "$Id: cups-calibrate.c,v 1.2 2001/08/13 23:59:12 rlk Exp $"
+ *
+ * Super simple color calibration program for the Common UNIX
+ * Printing System.
+ *
+ * Copyright 1993-2000 by Easy Software Products.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, please contact Easy Software
+ * Products at:
+ *
+ * Attn: CUPS Licensing Information
+ * Easy Software Products
+ * 44141 Airport View Drive, Suite 204
+ * Hollywood, Maryland 20636-3111 USA
+ *
+ * Voice: (301) 373-9603
+ * EMail: cups-info@cups.org
+ * WWW: http://www.cups.org
+ *
+ * Contents:
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <math.h>
+#include <unistd.h>
+#include <sys/types.h>
+
+/*
+ * min/max/abs macros...
+ */
+
+#ifndef max
+# define max(a,b) ((a) > (b) ? (a) : (b))
+#endif /* !max */
+#ifndef min
+# define min(a,b) ((a) < (b) ? (a) : (b))
+#endif /* !min */
+#ifndef abs
+# define abs(a) ((a) < 0 ? -(a) : (a))
+#endif /* !abs */
+
+
+/*
+ * Prototypes...
+ */
+
+float get_calibration(const char *prompt, float minval, float maxval);
+char *safe_gets(const char *prompt, char *s, int size);
+int safe_geti(const char *prompt, int defval);
+void send_prolog(FILE *fp);
+void send_pass1(FILE *fp);
+void send_pass2(FILE *fp, float kd, float rd, float yellow);
+void send_pass3(FILE *fp, float kd, float rd, float g, float yellow);
+void send_pass4(FILE *fp, float red, float green, float blue, const char *p);
+
+
+/*
+ * 'main()' - Main entry for calibration program.
+ */
+
+int
+main(int argc,
+ char *argv[])
+{
+ char printer[255];
+ char resolution[255];
+ char mediatype[255];
+ char *profile;
+ char cupsProfile[1024];
+ char command[1024];
+ char lpoptionscommand[1024];
+ char line[255];
+ char junk[255];
+ FILE *fp;
+ float kd, rd, g;
+ float color;
+ float red, green, blue;
+ float cyan, magenta, yellow;
+ float m[3][3];
+
+
+ puts("ESP Printer Calibration Tool v1.0");
+ puts("Copyright 1999-2000 by Easy Software Products, All Rights Reserved.");
+ puts("");
+ puts("This program allows you to calibrate the color output of printers");
+ puts("using the GIMP-Print CUPS or ESP Print Pro drivers.");
+ puts("");
+ puts("Please note that this program ONLY works with the GIMP-Print CUPS or");
+ puts("ESP Print Pro drivers. If you are using the GIMP-Print stp driver of");
+ puts("GhostScript or the drivers of the GIMP-Print plug-in of GIMP, this");
+ puts("calibration will not work.");
+ puts("");
+ puts("These drivers by the text \"CUPS+GIMP-print\" or \"ESP Print Pro\" in");
+ puts("the model description displayed by the CUPS web interface, KUPS,");
+ puts("the ESP Print Pro Printer Manager, or printerdrake.");
+ puts("");
+ puts("If you are not using the correct driver, press CTRL+C now and");
+ puts("reinstall your printer queue with the appropriate driver first.");
+ puts("");
+ puts("To make a calibration profile for all users, run this program as");
+ puts("the \"root\" user.");
+ puts("");
+ puts("");
+
+ safe_gets("Printer name [default]?", printer, sizeof(printer));
+ safe_gets("Resolution [default]?", resolution, sizeof(resolution));
+ safe_gets("Media type [default]?", mediatype, sizeof(mediatype));
+
+ strcpy(command, "lp -s");
+ if (printer[0])
+ {
+ strcat(command, " -d ");
+ strcat(command, printer);
+ }
+ if (resolution[0])
+ {
+ strcat(command, " -o resolution=");
+ strcat(command, resolution);
+ }
+ if (mediatype[0])
+ {
+ strcat(command, " -o media=");
+ strcat(command, mediatype);
+ }
+
+ strcat(command, " -o profile=");
+
+ profile = command + strlen(command);
+
+ strcpy(profile, "1000,1000,1000,0,0,0,1000,0,0,0,1000");
+
+ safe_gets("Press ENTER to print pass #1 or N to skip...", junk, sizeof(junk));
+
+ if (!junk[0])
+ {
+ puts("Sending calibration pass #1 for density/saturation levels...");
+
+ fp = popen(command, "w");
+ send_prolog(fp);
+ send_pass1(fp);
+ fputs("showpage\n", fp);
+ pclose(fp);
+
+ puts("Calibration pass #1 sent.");
+ }
+
+ puts("");
+ puts("Please select the character that corresponds to the black block that");
+ puts("is 100% saturated (dark) while not bleeding through the paper. If");
+ puts("the saturation point appears to occur between two characters, enter");
+ puts("both characters.");
+ puts("");
+
+ kd = get_calibration("Black density?", 0.25f, 1.0f);
+
+ puts("");
+ puts("Now select the character that corresponds to the yellow block that is");
+ puts("100% saturated (dark) while not bleeding through the paper. If the");
+ puts("saturation point appears to occur between two characters, enter both");
+ puts("characters.");
+ puts("");
+
+ cyan = kd;
+ magenta = kd;
+ yellow = get_calibration("Yellow density?", 0.25f, 1.0f);
+
+ puts("");
+ puts("Now select the character that corresponds to the red block that is");
+ puts("100% saturated (dark) while not bleeding through the paper. If the");
+ puts("saturation point appears to occur between two characters, enter both");
+ puts("characters.");
+ puts("");
+
+ rd = get_calibration("Red density?", 0.5f, 2.0f);
+
+ puts("");
+ puts("Thank you. Now insert the page back into the printer and press the");
+ puts("ENTER key to print calibration pass #2.");
+ puts("");
+
+ safe_gets("Press ENTER to print pass #2 or N to skip...", junk, sizeof(junk));
+
+ if (!junk[0])
+ {
+ puts("Sending calibration pass #2 for gamma levels...");
+
+ fp = popen(command, "w");
+ send_prolog(fp);
+ send_pass2(fp, kd, rd, yellow);
+ fputs("showpage\n", fp);
+ pclose(fp);
+
+ puts("Calibration pass #2 sent.");
+ }
+
+ puts("");
+ puts("Please select the character that corresponds to the column of gray");
+ puts("blocks that appear to be 1/2 and 1/4 as dark as the black blocks,");
+ puts("respectively. If the transition point appears to occur between two");
+ puts("characters, enter both characters.");
+ puts("");
+
+ g = get_calibration("Gamma?", 1.0f, 4.0f);
+
+ puts("");
+ puts("Thank you. Now insert the page back into the printer and press the");
+ puts("ENTER key to print calibration pass #3.");
+ puts("");
+
+ safe_gets("Press ENTER to print pass #3 or N to skip...", junk, sizeof(junk));
+
+ if (!junk[0])
+ {
+ puts("Sending calibration pass #3 for red, green, and blue adjustment...");
+
+ fp = popen(command, "w");
+ send_prolog(fp);
+ send_pass3(fp, kd, rd, g, yellow);
+ fputs("showpage\n", fp);
+ pclose(fp);
+
+ puts("Calibration pass #3 sent.");
+ }
+
+ puts("");
+ puts("Please select the character that corresponds to the correct red,");
+ puts("green, and blue colors. If the transition point appears to occur");
+ puts("between two characters, enter both characters.");
+ puts("");
+
+ red = get_calibration("Red color?", 0.35f, -0.40f);
+ green = get_calibration("Green color?", 0.35f, -0.40f);
+ blue = get_calibration("Blue color?", 0.35f, -0.40f);
+
+ color = 0.5f * rd / kd - kd;
+
+ cyan /= kd;
+ magenta /= kd;
+ yellow /= kd;
+
+ m[0][0] = cyan; /* C */
+ m[0][1] = cyan * (color + blue); /* C + M (blue) */
+ m[0][2] = cyan * (color - green); /* C + Y (green) */
+ m[1][0] = magenta * (color - blue); /* M + C (blue) */
+ m[1][1] = magenta; /* M */
+ m[1][2] = magenta * (color + red); /* M + Y (red) */
+ m[2][0] = yellow * (color + green); /* Y + C (green) */
+ m[2][1] = yellow * (color - red); /* Y + M (red) */
+ m[2][2] = yellow; /* Y */
+
+ if (m[0][1] > 0.0f)
+ {
+ m[1][0] -= m[0][1];
+ m[0][1] = 0.0f;
+ }
+ else if (m[1][0] > 0.0f)
+ {
+ m[0][1] -= m[1][0];
+ m[1][0] = 0.0f;
+ }
+
+ if (m[0][2] > 0.0f)
+ {
+ m[2][0] -= m[0][2];
+ m[0][2] = 0.0f;
+ }
+ else if (m[2][0] > 0.0f)
+ {
+ m[0][2] -= m[2][0];
+ m[2][0] = 0.0f;
+ }
+
+ if (m[1][2] > 0.0f)
+ {
+ m[2][1] -= m[1][2];
+ m[1][2] = 0.0f;
+ }
+ else if (m[2][1] > 0.0f)
+ {
+ m[1][2] -= m[2][1];
+ m[2][1] = 0.0f;
+ }
+
+ sprintf(profile, "%.0f,%.0f,%.0f,%.0f,%.0f,%.0f,%.0f,%.0f,%.0f,%.0f,%.0f",
+ kd * 1000.0f, g * 1000.0f,
+ m[0][0] * 1000.0f, m[0][1] * 1000.0f, m[0][2] * 1000.0f,
+ m[1][0] * 1000.0f, m[1][1] * 1000.0f, m[1][2] * 1000.0f,
+ m[2][0] * 1000.0f, m[2][1] * 1000.0f, m[2][2] * 1000.0f);
+
+ sprintf(cupsProfile, " *cupsColorProfile %s/%s: \"%.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f\"\n",
+ resolution[0] ? resolution : "-", mediatype[0] ? mediatype : "-",
+ kd, g, m[0][0], m[0][1], m[0][2], m[1][0], m[1][1], m[1][2],
+ m[2][0], m[2][1], m[2][2]);
+
+ puts("");
+ puts("Thank you. Now insert the page back into the printer and press the");
+ puts("ENTER key to print the final calibration pass.");
+ puts("");
+
+ safe_gets("Press ENTER to continue...", junk, sizeof(junk));
+
+ puts("Sending calibration pass #4 for visual confirmation...");
+
+ fp = popen(command, "w");
+ send_prolog(fp);
+ send_pass4(fp, red, green, blue, cupsProfile);
+ fputs("showpage\n", fp);
+ pclose(fp);
+
+ puts("Calibration pass #4 sent.");
+
+ puts("");
+ puts("The basic color profile for these values is:");
+ puts("");
+ printf(" %s\n", cupsProfile);
+ puts("");
+ puts("You can add this to the PPD file for this printer to make this change");
+ puts("permanent, or use the following option with a printing command:");
+ puts("");
+ printf(" -o profile=%s\n", profile);
+ puts("");
+ puts("to use the profile for this job only.");
+ puts("");
+ puts("Calibration is complete.");
+ puts("");
+
+ if (getuid() == 0)
+ {
+ do
+ safe_gets("Would you like to save the profile as a system-wide default (y/n)? ",
+ line, sizeof(line));
+ while (tolower(line[0]) != 'n' && tolower(line[0]) != 'y');
+ }
+ else
+ line[0] = 'n';
+
+ if (line[0] == 'n')
+ {
+ do
+ safe_gets("Would you like to save the profile as a personal default (y/n)? ",
+ line, sizeof(line));
+ while (tolower(line[0]) != 'n' && tolower(line[0]) != 'y');
+ }
+
+ puts("");
+ if (tolower(line[0]) == 'n')
+ {
+ puts("Calibration profile NOT saved.");
+ return (0);
+ }
+
+ strcpy(lpoptionscommand, "lpoptions");
+ if (printer[0])
+ {
+ strcat(lpoptionscommand, " -p ");
+ strcat(lpoptionscommand, printer);
+ }
+
+ strcat(lpoptionscommand, " -o profile=");
+
+ strcat(lpoptionscommand, profile);
+
+ if (system(lpoptionscommand) == 0)
+ puts("Calibration profile successfully saved.");
+ else
+ puts("An error occured while saving the calibration profile.");
+
+ return (0);
+}
+
+
+float
+get_calibration(const char *prompt,
+ float minval,
+ float maxval)
+{
+ char line[4]; /* Input from user */
+ int val1, val2; /* Calibration values */
+
+
+ do
+ {
+ if (safe_gets(prompt, line, sizeof(line)) == NULL)
+ return (minval);
+ }
+ while (!isxdigit(line[0]) || (line[1] && !isxdigit(line[1])));
+
+ if (isdigit(line[0]))
+ val1 = line[0] - '0';
+ else
+ val1 = tolower(line[0]) - 'a' + 10;
+
+ if (!line[1])
+ val2 = val1;
+ else if (isdigit(line[1]))
+ val2 = line[1] - '0';
+ else
+ val2 = tolower(line[1]) - 'a' + 10;
+
+ return (minval + (maxval - minval) * (val1 + val2) / 30.0f);
+}
+
+
+int
+safe_geti(const char *prompt,
+ int defval)
+{
+ char line[255];
+
+
+ do
+ {
+ safe_gets(prompt, line, sizeof(line));
+
+ if (defval && !line[0])
+ return (defval);
+ }
+ while (!line[0] || !isdigit(line[0]));
+
+ return (atoi(line));
+}
+
+
+/*
+ * 'safe_gets()' - Get a string from the user.
+ */
+
+char *
+safe_gets(const char *prompt,
+ char *s,
+ int size)
+{
+ printf("%s ", prompt);
+
+ if (fgets(s, size, stdin) == NULL)
+ return (NULL);
+
+ if (s[0])
+ s[strlen(s) - 1] = '\0';
+
+ return (s);
+}
+
+
+void
+send_prolog(FILE *fp)
+{
+ fputs("%!\n", fp);
+ fputs("/Helvetica findfont 12 scalefont setfont\n", fp);
+ fputs("/BLOCK {\n"
+ " 14.4 mul neg 720 add exch\n"
+ " 14.4 mul 72 add exch\n"
+ " 14.4 14.4 rectfill\n"
+ "} bind def\n", fp);
+ fputs("/DIAMOND {\n"
+ " 14.4 mul neg 720 add 7.2 add exch\n"
+ " 14.4 mul 72 add exch\n"
+ " newpath\n"
+ " moveto\n"
+ " 7.2 7.2 rlineto\n"
+ " 7.2 -7.2 rlineto\n"
+ " -7.2 -7.2 rlineto\n"
+ " closepath\n"
+ " 0 ne { fill } { stroke } ifelse\n"
+ "} bind def\n", fp);
+ fputs("/PLUS {\n"
+ " 14.4 mul neg 720 add 7.2 add exch\n"
+ " 14.4 mul 72 add exch\n"
+ " newpath\n"
+ " moveto\n"
+ " 14.4 0 rlineto\n"
+ " -7.2 -7.2 rmoveto\n"
+ " 0 14.4 rlineto\n"
+ " closepath\n"
+ " fill\n"
+ "} bind def\n", fp);
+ fputs("/TEXT {\n"
+ " 14.4 mul neg 720 add 4 add exch\n"
+ " 14.4 mul 72 add 7.2 add exch\n"
+ " moveto\n"
+ " dup stringwidth pop 0.5 mul neg 0 rmoveto\n"
+ " show\n"
+ "} bind def\n", fp);
+}
+
+
+void
+send_pass1(FILE *fp)
+{
+ int i;
+ float p;
+ static const char *hex = "FEDCBA9876543210";
+
+
+ fputs("0 setgray", fp);
+ fputs("(K) 0 1 TEXT\n", fp);
+ fputs("(Y) 0 2 TEXT\n", fp);
+ fputs("(R) 0 4 TEXT\n", fp);
+
+ for (i = 0; i < 16; i ++)
+ {
+ fprintf(fp, "(%d) %d 0 TEXT\n", 100 - i * 5, i * 2 + 2);
+ fprintf(fp, "(%c) %d 3 TEXT\n", hex[i], i * 2 + 2);
+ fprintf(fp, "(%d) %d 5 TEXT\n", 200 - i * 10, i * 2 + 2);
+ }
+
+ for (i = 0; i < 16; i ++)
+ {
+ p = 0.01f * (100 - i * 5);
+
+ fprintf(fp, "%.2f setgray %d 1 BLOCK\n", 1.0 - p, i * 2 + 2);
+ fprintf(fp, "0 0 %.2f 0 setcmykcolor %d 2 BLOCK\n", p, i * 2 + 2);
+ fprintf(fp, "0 %.2f %.2f 0 setcmykcolor %d 4 BLOCK\n", p, p, i * 2 + 2);
+ }
+}
+
+
+void
+send_pass2(FILE *fp,
+ float kd,
+ float rd,
+ float yellow)
+{
+ int i;
+ float p;
+ float g;
+ static const char *hex = "FEDCBA9876543210";
+
+
+ rd *= 0.5f;
+
+ fprintf(fp, "0 0 %.2f 0 setcmykcolor\n", yellow);
+ fprintf(fp, "1 %.2f 6 DIAMOND\n", 2.0f + 30.0f * (1.0f - yellow) / 0.75f);
+
+ fprintf(fp, "0 %.2f %.2f 0 setcmykcolor\n", rd, rd);
+ fprintf(fp, "%d %.2f 6 DIAMOND\n", rd != yellow,
+ 2.0f + 30.0f * (1.0f - rd) / 0.75f);
+
+ p = 1.0f - kd;
+ fprintf(fp, "%.2f setgray\n", p);
+
+ if (kd == rd && kd == yellow)
+ fprintf(fp, "%.2f 6 PLUS\n", 2.0f + 30.0f * (1.0f - kd) / 0.75f);
+ else
+ fprintf(fp, "%d %.2f 6 DIAMOND\n", kd != yellow && kd != rd,
+ 2.0f + 30.0f * (1.0f - kd) / 0.75f);
+
+ fputs("(100%) 0 9 TEXT\n", fp);
+ fputs("(50%) 0 10 TEXT\n", fp);
+ fputs("(25%) 0 11 TEXT\n", fp);
+
+ for (i = 0; i < 16; i ++)
+ {
+ fprintf(fp, "(%.1f) %d 8 TEXT\n", 0.2f * (20 - i), i * 2 + 2);
+ fprintf(fp, "(%c) %d 12 TEXT\n", hex[i], i * 2 + 2);
+ }
+
+ for (i = 0; i < 16; i ++)
+ {
+ g = 0.2f * (20 - i);
+
+ p = 1.0f - kd * (float)pow(1.0f, g);
+ fprintf(fp, "%.2f setgray %d 9 BLOCK\n", p, i * 2 + 2);
+
+ p = 1.0f - kd * (float)pow(0.5f, g);
+ fprintf(fp, "%.2f setgray %d 10 BLOCK\n", p, i * 2 + 2);
+
+ p = 1.0f - kd * (float)pow(0.25f, g);
+ fprintf(fp, "%.2f setgray %d 11 BLOCK\n", p, i * 2 + 2);
+ }
+}
+
+
+void
+send_pass3(FILE *fp,
+ float kd,
+ float rd,
+ float g,
+ float yellow)
+{
+ int i;
+ float p;
+ float color;
+ float c, m, y;
+ float adj;
+ static const char *hex = "FEDCBA9876543210";
+
+
+ p = 1.0f - kd;
+ fprintf(fp, "%.2f setgray\n", p);
+ fprintf(fp, "1 %.2f 13 DIAMOND\n", 2.0f + 30.0f * (4.0f - g) / 3.0f);
+
+ color = 0.5f * rd / kd - kd;
+ yellow /= kd;
+
+ fputs("(R) 2 16 TEXT\n", fp);
+ fputs("(G) 2 17 TEXT\n", fp);
+ fputs("(B) 2 18 TEXT\n", fp);
+
+ for (i = 1; i < 16; i ++)
+ {
+ fprintf(fp, "(%+d) %d 15 TEXT\n", i * 5 - 40, i * 2 + 2);
+ fprintf(fp, "(%c) %d 19 TEXT\n", hex[i], i * 2 + 2);
+ }
+
+ for (i = 1; i < 16; i ++)
+ {
+ /* Adjustment value */
+ adj = i * 0.05f - 0.40f;
+
+ /* RED */
+ c = 0.0f;
+ m = color + adj;
+ y = color - adj;
+ if (m > 0)
+ {
+ y -= m;
+ m = 0;
+ }
+ else if (y > 0)
+ {
+ m -= y;
+ y = 0;
+ }
+
+ m += 1.0f;
+ y = yellow * (1.0f + y);
+
+ if (c <= 0.0f)
+ c = 0.0f;
+ else if (c >= 1.0f)
+ c = 1.0f;
+ else
+ c = (float)pow(c, g);
+
+ if (m <= 0.0f)
+ m = 0.0f;
+ else if (m >= 1.0f)
+ m = 1.0f;
+ else
+ m = (float)pow(m, g);
+
+ if (y <= 0.0f)
+ y = 0.0f;
+ else if (y >= 1.0f)
+ y = 1.0f;
+ else
+ y = (float)pow(y, g);
+
+ fprintf(fp, "%.2f %.2f %.2f 0 setcmykcolor %d 16 BLOCK\n",
+ c * kd, m * kd, y * kd, i * 2 + 2);
+
+ /* GREEN */
+ c = color - adj;
+ m = 0.0f;
+ y = color + adj;
+
+ if (c > 0)
+ {
+ y -= c;
+ c = 0;
+ }
+ else if (y > 0)
+ {
+ c -= y;
+ y = 0;
+ }
+
+ c += 1.0f;
+ y = yellow * (1.0f + y);
+
+ if (c <= 0.0f)
+ c = 0.0f;
+ else if (c >= 1.0f)
+ c = 1.0f;
+ else
+ c = (float)pow(c, g);
+
+ if (m <= 0.0f)
+ m = 0.0f;
+ else if (m >= 1.0f)
+ m = 1.0f;
+ else
+ m = (float)pow(m, g);
+
+ if (y <= 0.0f)
+ y = 0.0f;
+ else if (y >= 1.0f)
+ y = 1.0f;
+ else
+ y = (float)pow(y, g);
+
+ fprintf(fp, "%.2f %.2f %.2f 0 setcmykcolor %d 17 BLOCK\n",
+ c * kd, m * kd, y * kd, i * 2 + 2);
+
+ /* BLUE */
+ c = color + adj;
+ m = color - adj;
+ y = 0.0f;
+
+ if (c > 0)
+ {
+ m -= c;
+ c = 0;
+ }
+ else if (m > 0)
+ {
+ c -= m;
+ m = 0;
+ }
+
+ c += 1.0f;
+ m += 1.0f;
+
+ if (c <= 0.0f)
+ c = 0.0f;
+ else if (c >= 1.0f)
+ c = 1.0f;
+ else
+ c = (float)pow(c, g);
+
+ if (m <= 0.0f)
+ m = 0.0f;
+ else if (m >= 1.0f)
+ m = 1.0f;
+ else
+ m = (float)pow(m, g);
+
+ if (y <= 0.0f)
+ y = 0.0f;
+ else if (y >= 1.0f)
+ y = 1.0f;
+ else
+ y = (float)pow(y, g);
+
+ fprintf(fp, "%.2f %.2f %.2f 0 setcmykcolor %d 18 BLOCK\n",
+ c * kd, m * kd, y * kd, i * 2 + 2);
+ }
+}
+
+
+void
+send_pass4(FILE *fp,
+ float red,
+ float green,
+ float blue,
+ const char *profile)
+{
+ FILE *ppm;
+ int x, y, col, width, height;
+ int r, g, b;
+ char line[255];
+
+
+ fprintf(fp, "0 0 1 setrgbcolor 1 %.2f 20 DIAMOND\n", /* BLUE */
+ 2.0f + 30.0f * (0.40f + blue) / 0.75f);
+ fprintf(fp, "1 0 0 setrgbcolor %d %.2f 20 DIAMOND\n", /* RED */
+ red != blue, 2.0f + 30.0f * (0.40f + red) / 0.75f);
+ if (green == red && green == blue)
+ fprintf(fp, "0 1 0 setrgbcolor %.2f 20 PLUS\n", /* GREEN */
+ 2.0f + 30.0f * (0.40f + green) / 0.75f);
+ else
+ fprintf(fp, "0 1 0 setrgbcolor %d %.2f 20 DIAMOND\n", /* GREEN */
+ green != red && green != blue,
+ 2.0f + 30.0f * (0.40f + green) / 0.75f);
+
+ fputs("0 setgray\n", fp);
+ fputs("currentfont 0.8 scalefont setfont\n", fp);
+
+ fprintf(fp, "(%s) 16 22 TEXT\n", profile);
+
+ if ((ppm = fopen(CUPS_DATADIR "/calibrate.ppm", "rb")) == NULL)
+ if ((ppm = fopen("calibrate.ppm", "rb")) == NULL)
+ return;
+
+ fgets(line, sizeof(line), ppm);
+ while (fgets(line, sizeof(line), ppm))
+ if (line[0] != '#')
+ break;
+
+ sscanf(line, "%d%d", &width, &height);
+
+ fgets(line, sizeof(line), ppm);
+
+ fputs("gsave\n", fp);
+ fprintf(fp, "72 %d translate\n", 504 * height / width + 72);
+ fprintf(fp, "504 -%d scale\n", 504 * height / width);
+
+ fprintf(fp, "/scanline %d string def\n", width * 3);
+
+ fprintf(fp, "%d %d 8\n", width, height);
+ fprintf(fp, "[%d 0 0 %d 0 0]\n", width, height);
+ fputs("{ currentfile scanline readhexstring pop } false 3 colorimage\n", fp);
+
+ for (y = 0, col = 0; y < height; y ++)
+ {
+ printf("Sending scanline %d of %d...\r", y + 1, height);
+ fflush(stdout);
+
+ for (x = 0; x < width; x ++)
+ {
+ r = getc(ppm);
+ g = getc(ppm);
+ b = getc(ppm);
+
+ fprintf(fp, "%02X%02X%02X", r, g, b);
+ col ++;
+ if (col >= 12)
+ {
+ col = 0;
+ putc('\n', fp);
+ }
+ }
+ }
+
+ if (col)
+ putc('\n', fp);
+
+ printf(" \r");
+
+ fclose(ppm);
+
+ fputs("grestore\n", fp);
+}
diff --git a/src/cups/epson.c b/src/cups/epson.c
new file mode 100644
index 0000000..eb50a79
--- /dev/null
+++ b/src/cups/epson.c
@@ -0,0 +1,705 @@
+/*
+ * "$Id: epson.c,v 1.3 2001/10/29 01:52:10 rlk Exp $"
+ *
+ * EPSON backend for the Common UNIX Printing System.
+ *
+ * Copyright 1993-2000 by Easy Software Products.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, please contact Easy Software
+ * Products at:
+ *
+ * Attn: CUPS Licensing Information
+ * Easy Software Products
+ * 44141 Airport View Drive, Suite 204
+ * Hollywood, Maryland 20636-3111 USA
+ *
+ * Voice: (301) 373-9603
+ * EMail: cups-info@cups.org
+ * WWW: http://www.cups.org
+ *
+ * Contents:
+ *
+ * main() - Send a file to the specified parallel port.
+ * list_devices() - List all parallel devices.
+ */
+
+/*
+ * Include necessary headers.
+ */
+
+#include <cups/cups.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <signal.h>
+#include <ctype.h>
+
+#if defined(WIN32) || defined(__EMX__)
+# include <io.h>
+#else
+# include <unistd.h>
+# include <fcntl.h>
+# include <termios.h>
+#endif /* WIN32 || __EMX__ */
+
+#if defined(WIN32) || defined(__EMX__)
+# include <winsock.h>
+#else
+# include <sys/socket.h>
+# include <netinet/in.h>
+# include <arpa/inet.h>
+# include <netdb.h>
+#endif /* WIN32 || __EMX__ */
+
+#ifdef __sgi
+# include <invent.h>
+# ifndef INV_EPP_ECP_PLP
+# define INV_EPP_ECP_PLP 6 /* From 6.3/6.4/6.5 sys/invent.h */
+# define INV_ASO_SERIAL 14 /* serial portion of SGI ASO board */
+# define INV_IOC3_DMA 16 /* DMA mode IOC3 serial */
+# define INV_IOC3_PIO 17 /* PIO mode IOC3 serial */
+# define INV_ISA_DMA 19 /* DMA mode ISA serial -- O2 */
+# endif /* !INV_EPP_ECP_PLP */
+#endif /* __sgi */
+
+
+/*
+ * Local functions...
+ */
+
+void list_devices(void);
+
+
+/*
+ * 'main()' - Send a file to the specified parallel port.
+ *
+ * Usage:
+ *
+ * printer-uri job-id user title copies options [file]
+ */
+
+int /* O - Exit status */
+main(int argc, /* I - Number of command-line arguments (6 or 7) */
+ char *argv[]) /* I - Command-line arguments */
+{
+ char method[1024], /* Method in URI */
+ hostname[1024], /* Hostname */
+ username[1024], /* Username info (not used) */
+ resource[1024], /* Resource info (device and options) */
+ *options; /* Pointer to options */
+ int port; /* Port number (not used) */
+ FILE *fp; /* Print file */
+ int copies; /* Number of copies to print */
+ int fd, /* Parallel/USB device or socket */
+ error, /* Last error */
+ backchannel; /* Read backchannel data? */
+ struct sockaddr_in addr; /* Socket address */
+ struct hostent *hostaddr; /* Host address */
+ int wbytes; /* Number of bytes written */
+ int nbytes, /* Number of bytes read */
+ tbytes; /* Total number of bytes written */
+ char buffer[8192], /* Output buffer */
+ *bufptr; /* Pointer into buffer */
+ struct timeval timeout; /* Timeout for select() */
+ fd_set input; /* Input set for select() */
+ struct termios opts; /* Parallel port options */
+#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
+ struct sigaction action; /* Actions for POSIX signals */
+#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
+
+
+ if (argc == 1)
+ {
+ list_devices();
+ return (0);
+ }
+ else if (argc < 6 || argc > 7)
+ {
+ fputs("Usage: epson job-id user title copies options [file]\n", stderr);
+ return (1);
+ }
+
+ /*
+ * If we have 7 arguments, print the file named on the command-line.
+ * Otherwise, send stdin instead...
+ */
+
+ if (argc == 6)
+ {
+ fp = stdin;
+ copies = 1;
+ }
+ else
+ {
+ /*
+ * Try to open the print file...
+ */
+
+ if ((fp = fopen(argv[6], "rb")) == NULL)
+ {
+ perror("ERROR: unable to open print file");
+ return (1);
+ }
+
+ copies = atoi(argv[4]);
+ }
+
+ /*
+ * Extract the device name and options from the URI...
+ */
+
+ httpSeparate(argv[0], method, username, hostname, &port, resource);
+
+ /*
+ * See if there are any options...
+ */
+
+ if ((options = strchr(resource, '?')) != NULL)
+ {
+ /*
+ * Yup, terminate the device name string and move to the first
+ * character of the options...
+ */
+
+ *options++ = '\0';
+ }
+
+ if (hostname[0])
+ {
+ /*
+ * Lookup the IP address...
+ */
+
+ if ((hostaddr = gethostbyname(hostname)) == NULL)
+ {
+ fprintf(stderr, "ERROR: Unable to locate printer \'%s\' - %s",
+ hostname, strerror(errno));
+ return (1);
+ }
+
+ if (port == 0)
+ port = 9100; /* Default for EPSON NIC */
+
+ fprintf(stderr, "INFO: Attempting to connect to printer %s on port %d\n",
+ hostname, port);
+
+ memset(&addr, 0, sizeof(addr));
+ memcpy(&(addr.sin_addr), hostaddr->h_addr, hostaddr->h_length);
+ addr.sin_family = hostaddr->h_addrtype;
+ addr.sin_port = htons(port);
+
+ /*
+ * Try to connect...
+ */
+
+ for (;;)
+ {
+ if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
+ {
+ perror("ERROR: Unable to create socket");
+ return (1);
+ }
+
+ if (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0)
+ {
+ error = errno;
+ close(fd);
+ fd = -1;
+
+ if (error == ECONNREFUSED)
+ {
+ fprintf(stderr, "INFO: Network printer \'%s\' is busy; will retry in 30 seconds...\n",
+ hostname);
+ sleep(30);
+ }
+ else
+ {
+ perror("ERROR: Unable to connect to printer");
+ sleep(30);
+ }
+ }
+ else
+ break;
+ }
+
+ fputs("INFO: Connected to printer, sending print job...\n", stderr);
+ }
+ else
+ {
+ /*
+ * Open the parallel or USB port device...
+ */
+
+ do
+ {
+ if ((fd = open(resource, O_RDWR | O_EXCL)) == -1)
+ {
+ if (errno == EBUSY)
+ {
+ fputs("INFO: Parallel port busy; will retry in 30 seconds...\n", stderr);
+ sleep(30);
+ }
+ else
+ {
+ perror("ERROR: Unable to open parallel port device file");
+ return (1);
+ }
+ }
+ }
+ while (fd < 0);
+
+ /*
+ * Set any options provided...
+ */
+
+ tcgetattr(fd, &opts);
+
+ opts.c_cflag |= CREAD; /* Enable reading */
+ opts.c_lflag &= ~(ICANON | ECHO | ISIG); /* Raw mode */
+
+ /**** No options supported yet ****/
+
+ tcsetattr(fd, TCSANOW, &opts);
+ }
+
+ /*
+ * Now that we are "connected" to the port, ignore SIGTERM so that we
+ * can finish out any page data the driver sends (e.g. to eject the
+ * current page...
+ */
+
+#ifdef HAVE_SIGSET /* Use System V signals over POSIX to avoid bugs */
+ sigset(SIGTERM, SIG_IGN);
+#elif defined(HAVE_SIGACTION)
+ memset(&action, 0, sizeof(action));
+
+ sigemptyset(&action.sa_mask);
+ action.sa_handler = SIG_IGN;
+ sigaction(SIGTERM, &action, NULL);
+#else
+ signal(SIGTERM, SIG_IGN);
+#endif /* HAVE_SIGSET */
+
+ /*
+ * Finally, send the print file...
+ */
+
+ backchannel = 1;
+
+ while (copies > 0)
+ {
+ copies --;
+
+ if (fp != stdin)
+ {
+ fputs("PAGE: 1 1\n", stderr);
+ rewind(fp);
+ }
+
+ tbytes = 0;
+ while ((nbytes = fread(buffer, 1, sizeof(buffer), fp)) > 0)
+ {
+ /*
+ * Write the print data to the printer...
+ */
+
+ tbytes += nbytes;
+ bufptr = buffer;
+
+ while (nbytes > 0)
+ {
+ if ((wbytes = write(fd, bufptr, nbytes)) < 0)
+ {
+ perror("ERROR: Unable to send print file to printer");
+ break;
+ }
+
+ nbytes -= wbytes;
+ bufptr += wbytes;
+ }
+
+ if (nbytes > 0)
+ break;
+
+ /*
+ * Check for possible data coming back from the printer...
+ */
+
+ if (!backchannel)
+ continue;
+
+ timeout.tv_sec = 0;
+ timeout.tv_usec = 0;
+ FD_ZERO(&input);
+ FD_SET(fd, &input);
+ if (select(fd + 1, &input, NULL, NULL, &timeout) > 0)
+ {
+ /*
+ * Grab the data coming back and spit it out to stderr...
+ */
+
+ if ((nbytes = read(fd, buffer, sizeof(buffer) - 1)) < 0)
+ {
+ fprintf(stderr, "ERROR: Back-channel read error - %s!\n",
+ strerror(errno));
+ backchannel = 0;
+ continue;
+ }
+
+ buffer[nbytes] = '\0';
+ if (strncmp(buffer, "@BDC ", 5) != 0)
+ fprintf(stderr, "WARNING: Received %d bytes of unknown back-channel data!\n",
+ nbytes);
+ else
+ {
+ /*
+ * Skip initial report line...
+ */
+
+ for (bufptr = buffer; *bufptr && *bufptr != '\n'; bufptr ++);
+
+ if (*bufptr == '\n')
+ bufptr ++;
+
+ /*
+ * Get status data...
+ */
+
+ strcpy(buffer, bufptr);
+ for (bufptr = buffer; *bufptr && *bufptr != ';'; bufptr ++);
+ *bufptr = '\0';
+
+ if (strncmp(buffer, "IQ:", 3) == 0)
+ {
+ /*
+ * Report ink level...
+ */
+
+ int i;
+ int levels[6];
+
+ buffer[12] = '\0'; /* Limit to 6 inks */
+ for (i = 0, bufptr = buffer; i < 6; i ++, bufptr += 2)
+ {
+ if (isalpha(bufptr[0]))
+ levels[i] = (tolower(bufptr[0]) - 'a' + 10) << 16;
+ else
+ levels[i] = (bufptr[0] - '0') << 16;
+
+ if (isalpha(bufptr[1]))
+ levels[i] |= tolower(bufptr[1]) - 'a' + 10;
+ else
+ levels[i] |= bufptr[1] - '0';
+ }
+
+ switch (i)
+ {
+ case 1 :
+ case 2 :
+ fprintf(stderr, "K=%d\n", levels[0]);
+ break;
+ case 3 :
+ fprintf(stderr, "C=%d M=%d Y=%d\n", levels[0], levels[1],
+ levels[2]);
+ break;
+ case 4 :
+ case 5 :
+ fprintf(stderr, "K=%d C=%d M=%d Y=%d\n", levels[0],
+ levels[1], levels[2], levels[3]);
+ break;
+ case 6 :
+ fprintf(stderr, "K=%d C=%d M=%d Y=%d LC=%d LM=%d\n",
+ levels[0], levels[1], levels[2], levels[3],
+ levels[4], levels[5]);
+ break;
+ }
+ }
+ else
+ fprintf(stderr, "INFO: %s\n", buffer);
+ }
+ }
+ else if (argc > 6)
+ fprintf(stderr, "INFO: Sending print file, %u bytes...\n", tbytes);
+ }
+ }
+
+ /*
+ * Close the socket connection or parallel/USB device and input file and
+ * return...
+ */
+
+ close(fd);
+ if (fp != stdin)
+ fclose(fp);
+
+ return (0);
+}
+
+
+/*
+ * 'list_devices()' - List all parallel devices.
+ */
+
+void
+list_devices(void)
+{
+#ifdef __linux
+ int i; /* Looping var */
+ int fd; /* File descriptor */
+ char device[255]; /* Device filename */
+ FILE *probe; /* /proc/parport/n/autoprobe file */
+ char line[1024], /* Line from file */
+ *delim, /* Delimiter in file */
+ make[IPP_MAX_NAME], /* Make from file */
+ model[IPP_MAX_NAME]; /* Model from file */
+
+
+ /*
+ * Probe for parallel devices...
+ */
+
+ for (i = 0; i < 4; i ++)
+ {
+ sprintf(device, "/proc/parport/%d/autoprobe", i);
+ if ((probe = fopen(device, "r")) != NULL)
+ {
+ memset(make, 0, sizeof(make));
+ memset(model, 0, sizeof(model));
+ strcpy(model, "EPSON");
+
+ while (fgets(line, sizeof(line), probe) != NULL)
+ {
+ /*
+ * Strip trailing ; and/or newline.
+ */
+
+ if ((delim = strrchr(line, ';')) != NULL)
+ *delim = '\0';
+ else if ((delim = strrchr(line, '\n')) != NULL)
+ *delim = '\0';
+
+ /*
+ * Look for MODEL and MANUFACTURER lines...
+ */
+
+ if (strncmp(line, "MODEL:", 6) == 0 &&
+ strncmp(line, "MODEL:EPSON", 13) != 0)
+ strncpy(model, line + 6, sizeof(model) - 1);
+ else if (strncmp(line, "MANUFACTURER:", 13) == 0 &&
+ strncmp(line, "MANUFACTURER:EPSON", 20) != 0)
+ strncpy(make, line + 13, sizeof(make) - 1);
+ }
+
+ fclose(probe);
+
+ if (strcmp(make, "EPSON") == 0)
+ printf("direct epson:/dev/lp%d \"%s %s\" \"Parallel Port #%d\"\n",
+ i, make, model, i + 1);
+ }
+ else
+ {
+ sprintf(device, "/dev/lp%d", i);
+ if ((fd = open(device, O_RDWR)) >= 0)
+ {
+ close(fd);
+ printf("direct epson:%s \"EPSON\" \"Parallel Port #%d\"\n", device, i + 1);
+ }
+ }
+ }
+
+ /*
+ * Probe for USB devices...
+ */
+
+ if ((probe = fopen("/proc/bus/usb/devices", "r")) != NULL)
+ {
+ i = 0;
+
+ memset(make, 0, sizeof(make));
+ memset(model, 0, sizeof(model));
+
+ while (fgets(line, sizeof(line), probe) != NULL)
+ {
+ /*
+ * Strip trailing newline.
+ */
+
+ if ((delim = strrchr(line, '\n')) != NULL)
+ *delim = '\0';
+
+ /*
+ * See if it is a printer device ("P: ...")
+ */
+
+ if (strncmp(line, "S:", 2) == 0)
+ {
+ /*
+ * String attribute...
+ */
+
+ if (strncmp(line, "S: Manufacturer=", 17) == 0)
+ {
+ strncpy(make, line + 17, sizeof(make) - 1);
+ if (strcmp(make, "Hewlett-Packard") == 0)
+ strcpy(make, "HP");
+ }
+ else if (strncmp(line, "S: Product=", 12) == 0)
+ strncpy(model, line + 12, sizeof(model) - 1);
+ }
+ else if (strncmp(line, "I:", 2) == 0 &&
+ strstr(line, "Driver=printer") != NULL &&
+ make[0] && model[0])
+ {
+ /*
+ * We were processing a printer device; send the info out...
+ */
+
+ if (strcmp(make, "EPSON") == 0)
+ {
+ sprintf(device, "/dev/usb/lp%d", i);
+ if (access(device, 0))
+ {
+ sprintf(device, "/dev/usb/usblp%d", i);
+
+ if (access(device, 0))
+ sprintf(device, "/dev/usblp%d", i);
+ }
+
+ printf("direct epson:%s \"%s %s\" \"USB Printer #%d\"\n",
+ device, make, model, i + 1);
+ }
+
+ i ++;
+
+ memset(make, 0, sizeof(make));
+ memset(model, 0, sizeof(model));
+ }
+ }
+
+ fclose(probe);
+ }
+ else
+ {
+ for (i = 0; i < 8; i ++)
+ {
+ sprintf(device, "/dev/usb/lp%d", i);
+ if ((fd = open(device, O_RDWR)) >= 0)
+ {
+ close(fd);
+ printf("direct epson:%s \"EPSON\" \"USB Printer #%d\"\n", device, i + 1);
+ }
+
+ sprintf(device, "/dev/usb/usblp%d", i);
+ if ((fd = open(device, O_RDWR)) >= 0)
+ {
+ close(fd);
+ printf("direct epson:%s \"EPSON\" \"USB Printer #%d\"\n", device, i + 1);
+ }
+
+ sprintf(device, "/dev/usblp%d", i);
+ if ((fd = open(device, O_RDWR)) >= 0)
+ {
+ close(fd);
+ printf("direct epson:%s \"EPSON\" \"USB Printer #%d\"\n", device, i + 1);
+ }
+ }
+ }
+#elif defined(__sgi)
+ int i, j, n; /* Looping vars */
+ char device[255]; /* Device filename */
+ inventory_t *inv; /* Hardware inventory info */
+
+
+ /*
+ * IRIX maintains a hardware inventory of most devices...
+ */
+
+ setinvent();
+
+ while ((inv = getinvent()) != NULL)
+ {
+ if (inv->inv_class == INV_PARALLEL && inv->inv_type == INV_EPP_ECP_PLP)
+ {
+ /*
+ * Standard parallel port...
+ */
+
+ puts("direct epson:/dev/plpbi \"EPSON\" \"Onboard Parallel Port\"");
+ }
+ }
+
+ endinvent();
+#elif defined(__sun)
+ int i, j, n; /* Looping vars */
+ char device[255]; /* Device filename */
+
+
+ /*
+ * Standard parallel ports...
+ */
+
+ for (i = 0; i < 10; i ++)
+ {
+ sprintf(device, "/dev/ecpp%d", i);
+ if (access(device, 0) == 0)
+ printf("direct epson:%s \"EPSON\" \"Sun IEEE-1284 Parallel Port #%d\"\n",
+ device, i + 1);
+ }
+
+ for (i = 0; i < 3; i ++)
+ {
+ sprintf(device, "/dev/lp%d", i);
+
+ if (access(device, 0) == 0)
+ printf("direct epson:%s \"EPSON\" \"PC Parallel Port #%d\"\n",
+ device, i + 1);
+ }
+#elif defined(FreeBSD) || defined(OpenBSD) || defined(NetBSD)
+ int i; /* Looping var */
+ int fd; /* File descriptor */
+ char device[255]; /* Device filename */
+
+
+ /*
+ * Probe for parallel devices...
+ */
+
+ for (i = 0; i < 3; i ++)
+ {
+ sprintf(device, "/dev/lpt%d", i);
+ if ((fd = open(device, O_RDWR)) >= 0)
+ {
+ close(fd);
+ printf("direct epson:%s \"EPSON\" \"Parallel Port #%d\"\n", device, i + 1);
+ }
+ }
+
+ /*
+ * Probe for USB devices...
+ */
+
+ for (i = 0; i < 3; i ++)
+ {
+ sprintf(device, "/dev/ulpt%d", i);
+ if ((fd = open(device, O_RDWR)) >= 0)
+ {
+ close(fd);
+ printf("direct epson:%s \"EPSON\" \"USB Port #%d\"\n", device, i + 1);
+ }
+ }
+#endif
+}
+
+
+/*
+ * End of "$Id: epson.c,v 1.3 2001/10/29 01:52:10 rlk Exp $".
+ */
diff --git a/src/cups/genppd.c b/src/cups/genppd.c
new file mode 100644
index 0000000..d9c6060
--- /dev/null
+++ b/src/cups/genppd.c
@@ -0,0 +1,858 @@
+/*
+ * "$Id: genppd.c,v 1.36 2001/11/11 21:25:36 rlk Exp $"
+ *
+ * PPD file generation program for the CUPS drivers.
+ *
+ * Copyright 1993-2001 by Easy Software Products.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, please contact Easy Software
+ * Products at:
+ *
+ * Attn: CUPS Licensing Information
+ * Easy Software Products
+ * 44141 Airport View Drive, Suite 204
+ * Hollywood, Maryland 20636-3111 USA
+ *
+ * Voice: (301) 373-9603
+ * EMail: cups-info@cups.org
+ * WWW: http://www.cups.org
+ *
+ * Contents:
+ *
+ * main() - Process files on the command-line...
+ * initialize_stp_options() - Initialize the min/max values for
+ * each STP numeric option.
+ * usage() - Show program usage...
+ * write_ppd() - Write a PPD file.
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <zlib.h>
+
+#include <cups/cups.h>
+#include <cups/raster.h>
+
+#ifdef INCLUDE_GIMP_PRINT_H
+#include INCLUDE_GIMP_PRINT_H
+#else
+#include <gimp-print/gimp-print.h>
+#endif
+#include <gimp-print/gimp-print-intl.h>
+#include "../../lib/libprintut.h"
+
+#ifndef CUPS_PPD_PS_LEVEL
+#define CUPS_PPD_PS_LEVEL 2
+#endif
+
+
+/*
+ * File handling stuff...
+ */
+
+#ifdef HAVE_LIBZ
+# define PPDEXT ".ppd.gz"
+#else
+# define PPDEXT ".ppd"
+# define gzFile FILE *
+# define gzopen fopen
+# define gzclose fclose
+# define gzprintf fprintf
+# define gzputs(f,s) fputs((s),(f))
+# define gzputc(f,c) putc((c),(f))
+#endif /* HAVE_LIBZ */
+
+
+/*
+ * Size data...
+ */
+
+#define DEFAULT_SIZE "Letter"
+/*#define DEFAULT_SIZE "A4"*/
+
+typedef struct /**** Media size values ****/
+{
+ const char *name, /* Media size name */
+ *text; /* Media size text */
+ int width, /* Media width */
+ height, /* Media height */
+ left, /* Media left margin */
+ right, /* Media right margin */
+ bottom, /* Media bottom margin */
+ top; /* Media top margin */
+} paper_t;
+
+
+/*
+ * STP option data...
+ */
+
+static struct /**** STP numeric options ****/
+{
+ const char *name, /* Name of option */
+ *text; /* Human-readable text */
+ int low, /* Low value (thousandths) */
+ high, /* High value (thousandths) */
+ defval, /* Default value */
+ step; /* Step (thousandths) */
+} stp_options[] =
+{
+ { "stpBrightness", "Brightness" },
+ { "stpContrast", "Contrast" },
+ { "stpGamma", "Gamma" },
+ { "stpDensity", "Density" },
+ { "stpCyan", "Cyan" },
+ { "stpMagenta", "Magenta" },
+ { "stpYellow", "Yellow" },
+ { "stpSaturation", "Saturation" }
+};
+
+
+/*
+ * Local functions...
+ */
+
+void initialize_stp_options(void);
+void usage(void);
+int write_ppd(const stp_printer_t p, const char *prefix,
+ const char *language, int verbose);
+
+
+/*
+ * 'main()' - Process files on the command-line...
+ */
+
+int /* O - Exit status */
+main(int argc, /* I - Number of command-line arguments */
+ char *argv[]) /* I - Command-line arguments */
+{
+ int i; /* Looping var */
+ int option_index; /* Option index */
+ const char *prefix; /* Directory prefix for output */
+ const char *language; /* Language */
+ const char *catalog = NULL;/* Catalog location */
+ stp_printer_t printer; /* Pointer to printer driver */
+ int verbose = 0;
+ static struct option long_options[] =
+ { /* Command-line options */
+ /* name, has_arg, flag val */
+ {"help", no_argument, 0, 0},
+ {"verbose", no_argument, 0, 0},
+ {"quiet", no_argument, 0, 0},
+ {"catalog", required_argument, 0, 0},
+ {"prefix", required_argument, 0, 0},
+ {0, 0, 0, 0}
+ };
+
+ /*
+ * Parse command-line args...
+ */
+
+ prefix = "ppd";
+ language = "C";
+
+ initialize_stp_options();
+
+ option_index = 0;
+
+ for (;;)
+ {
+ if ((i = getopt_long_only(argc, argv, "", long_options,
+ &option_index)) == -1)
+ break;
+
+ switch (i)
+ {
+ case 0:
+ /* option already dealt with, so skip to next argv entry */
+ if (long_options[option_index].flag != 0)
+ break;
+
+ if (strncmp(long_options[option_index].name, "help", 4) == 0)
+ {
+ usage();
+ break;
+ }
+ if (strncmp(long_options[option_index].name, "verbose", 7) == 0)
+ {
+ verbose = 1;
+ break;
+ }
+
+ if (strncmp(long_options[option_index].name, "quiet", 5) == 0)
+ {
+ verbose = 0;
+ break;
+ }
+
+ if (strncmp(long_options[option_index].name, "catalog", 7) == 0)
+ {
+ catalog = optarg;
+#ifdef DEBUG
+ fprintf (stderr, "DEBUG: catalog: %s\n", catalog);
+#endif
+ break;
+ }
+
+ if (strncmp(long_options[option_index].name, "prefix", 6) == 0)
+ {
+ prefix = optarg;
+#ifdef DEBUG
+ fprintf (stderr, "DEBUG: prefix: %s\n", prefix);
+#endif
+ break;
+ }
+
+ default:
+ usage();
+ break;
+ }
+ }
+
+/*
+ * Initialise libgimpprint
+ */
+
+ stp_init();
+
+
+ /*
+ * Set the language...
+ */
+
+ setlocale(LC_ALL, "");
+
+ /*
+ * Set up the catalog
+ */
+
+ if (catalog)
+ {
+ if ((bindtextdomain(PACKAGE, catalog)) == NULL)
+ {
+ fprintf(stderr, "genppd: cannot load message catalog %s: %s\n", catalog,
+ strerror(errno));
+ exit(1);
+ }
+#ifdef DEBUG
+ fprintf (stderr, "DEBUG: bound textdomain: %s\n", catalog);
+#endif
+ if ((textdomain(PACKAGE)) == NULL)
+ {
+ fprintf(stderr, "genppd: cannot select message catalog %s: %s\n",
+ catalog, strerror(errno));
+ exit(1);
+ }
+#ifdef DEBUG
+ fprintf (stderr, "DEBUG: textdomain set: %s\n", PACKAGE);
+#endif
+ }
+
+
+ /*
+ * Write PPD files...
+ */
+
+ for (i = 0; i < stp_known_printers(); i++)
+ {
+ printer = stp_get_printer_by_index(i);
+
+ if (printer && write_ppd(printer, prefix, language, verbose))
+ return (1);
+ }
+ if (!verbose)
+ fprintf(stderr, "\n");
+
+ return (0);
+}
+
+
+/*
+ * 'initialize_stp_options()' - Initialize the min/max values for
+ * each STP numeric option.
+ */
+
+void
+initialize_stp_options(void)
+{
+ const stp_vars_t lower = stp_minimum_settings();
+ const stp_vars_t upper = stp_maximum_settings();
+ const stp_vars_t defvars = stp_default_settings();
+
+
+ stp_options[0].low = 1000 * stp_get_brightness(lower);
+ stp_options[0].high = 1000 * stp_get_brightness(upper);
+ stp_options[0].defval = 1000 * stp_get_brightness(defvars);
+ stp_options[0].step = 50;
+
+ stp_options[1].low = 1000 * stp_get_contrast(lower);
+ stp_options[1].high = 1000 * stp_get_contrast(upper);
+ stp_options[1].defval = 1000 * stp_get_contrast(defvars);
+ stp_options[1].step = 50;
+
+ stp_options[2].low = 1000 * stp_get_gamma(lower);
+ stp_options[2].high = 1000 * stp_get_gamma(upper);
+ stp_options[2].defval = 1000 * stp_get_gamma(defvars);
+ stp_options[2].step = 50;
+
+ stp_options[3].low = 1000 * stp_get_density(lower);
+ stp_options[3].high = 1000 * stp_get_density(upper);
+ stp_options[3].defval = 1000 * stp_get_density(defvars);
+ stp_options[3].step = 50;
+
+ stp_options[4].low = 1000 * stp_get_cyan(lower);
+ stp_options[4].high = 1000 * stp_get_cyan(upper);
+ stp_options[4].defval = 1000 * stp_get_cyan(defvars);
+ stp_options[4].step = 50;
+
+ stp_options[5].low = 1000 * stp_get_magenta(lower);
+ stp_options[5].high = 1000 * stp_get_magenta(upper);
+ stp_options[5].defval = 1000 * stp_get_magenta(defvars);
+ stp_options[5].step = 50;
+
+ stp_options[6].low = 1000 * stp_get_yellow(lower);
+ stp_options[6].high = 1000 * stp_get_yellow(upper);
+ stp_options[6].defval = 1000 * stp_get_yellow(defvars);
+ stp_options[6].step = 50;
+
+ stp_options[7].low = 1000 * stp_get_saturation(lower);
+ stp_options[7].high = 1000 * stp_get_saturation(upper);
+ stp_options[7].defval = 1000 * stp_get_saturation(defvars);
+ stp_options[7].step = 50;
+}
+
+
+/*
+ * 'usage()' - Show program usage...
+ */
+
+void
+usage(void)
+{
+ fputs("Usage: genppd [--help] [--catalog=domain] "
+ "[--language=locale] [--prefix=dir]\n", stderr);
+
+ exit(EXIT_FAILURE);
+}
+
+
+/*
+ * 'write_ppd()' - Write a PPD file.
+ */
+
+int /* O - Exit status */
+write_ppd(const stp_printer_t p, /* I - Printer driver */
+ const char *prefix, /* I - Prefix (directory) for PPD files */
+ const char *language,/* I - Language/locale */
+ int verbose)
+{
+ int i, j; /* Looping vars */
+ gzFile fp; /* File to write to */
+ char filename[1024]; /* Filename */
+ char manufacturer[64]; /* Manufacturer name */
+ int num_opts; /* Number of printer options */
+ stp_param_t *opts; /* Printer options */
+ const char *defopt; /* Default printer option */
+ int xdpi, ydpi; /* Resolution info */
+ stp_vars_t v; /* Variable info */
+ int width, height, /* Page information */
+ bottom, left,
+ top, right;
+ const char *driver; /* Driver name */
+ const char *long_name; /* Driver long name */
+ stp_vars_t printvars; /* Printer option names */
+ int model; /* Driver model number */
+ const stp_printfuncs_t *printfuncs; /* Driver functions */
+ paper_t *the_papers; /* Media sizes */
+ int cur_opt; /* Current option */
+
+
+ /*
+ * Initialize driver-specific variables...
+ */
+
+ driver = stp_printer_get_driver(p);
+ long_name = stp_printer_get_long_name(p);
+ printvars = stp_printer_get_printvars(p);
+ model = stp_printer_get_model(p);
+ printfuncs = stp_printer_get_printfuncs(p);
+ the_papers = NULL;
+ cur_opt = 0;
+
+ /*
+ * Skip the PostScript drivers...
+ */
+
+ if (strcmp(driver, "ps") == 0 ||
+ strcmp(driver, "ps2") == 0)
+ return (0);
+
+ /*
+ * Make sure the destination directory exists...
+ */
+
+ mkdir(prefix, 0777);
+ sprintf(filename, "%s/%s" PPDEXT, prefix, driver);
+
+ /*
+ * Open the PPD file...
+ */
+
+ if ((fp = gzopen(filename, "wb")) == NULL)
+ {
+ fprintf(stderr, "genppd: Unable to create file \"%s\" - %s.\n",
+ filename, strerror(errno));
+ return (2);
+ }
+
+ /*
+ * Write a standard header...
+ */
+
+ sscanf(long_name, "%63s", manufacturer);
+
+ if (verbose)
+ fprintf(stderr, "Writing %s...\n", filename);
+ else
+ fprintf(stderr, ".");
+
+ gzputs(fp, "*PPD-Adobe: \"4.3\"\n");
+ gzputs(fp, "*%PPD file for CUPS/GIMP-print.\n");
+ gzputs(fp, "*%Copyright 1993-2001 by Easy Software Products, All Rights Reserved.\n");
+ gzputs(fp, "*%This PPD file may be freely used and distributed under the terms of\n");
+ gzputs(fp, "*%the GNU GPL.\n");
+ gzputs(fp, "*FormatVersion: \"4.3\"\n");
+ gzputs(fp, "*FileVersion: \"" VERSION "\"\n");
+ /* Specify language of PPD translation */
+ /* Translators: Specify the language of the PPD translation.
+ * Use the English name of your language here, e.g. "Swedish" instead of
+ * "Svenska".
+ */
+ gzprintf(fp, "*LanguageVersion: %s\n", _("English"));
+ /* Specify PPD translation encoding e.g. ISOLatin1 */
+ gzprintf(fp, "*LanguageEncoding: %s\n", _("ISOLatin1"));
+ gzprintf(fp, "*PCFileName: \"%s.ppd\"\n", driver);
+ gzprintf(fp, "*Manufacturer: \"%s\"\n", manufacturer);
+ gzputs(fp, "*Product: \"(GIMP-print v" VERSION ")\"\n");
+ gzprintf(fp, "*ModelName: \"%s\"\n", driver);
+ gzprintf(fp, "*ShortNickName: \"%s\"\n", long_name);
+ gzprintf(fp, "*NickName: \"%s, CUPS+GIMP-print v" VERSION "\"\n", long_name);
+ gzputs(fp, "*PSVersion: \"(3010.000) 550\"\n");
+ gzprintf(fp, "*LanguageLevel: \"%d\"\n", CUPS_PPD_PS_LEVEL);
+ gzprintf(fp, "*ColorDevice: %s\n",
+ stp_get_output_type(printvars) == OUTPUT_COLOR ? "True" : "False");
+ gzprintf(fp, "*DefaultColorSpace: %s\n",
+ stp_get_output_type(printvars) == OUTPUT_COLOR ? "RGB" : "Gray");
+ gzputs(fp, "*FileSystem: False\n");
+ gzputs(fp, "*LandscapeOrientation: Plus90\n");
+ gzputs(fp, "*TTRasterizer: Type42\n");
+
+ gzputs(fp, "*cupsVersion: 1.1\n");
+ gzprintf(fp, "*cupsModelNumber: \"%d\"\n", model);
+ gzputs(fp, "*cupsManualCopies: True\n");
+ gzputs(fp, "*cupsFilter: \"application/vnd.cups-raster 100 rastertoprinter\"\n");
+ if (strcasecmp(manufacturer, "EPSON") == 0)
+ gzputs(fp, "*cupsFilter: \"application/vnd.cups-command 33 commandtoepson\"\n");
+
+ /*
+ * Get the page sizes from the driver...
+ */
+
+ v = stp_allocate_copy(printvars);
+
+ opts = (*(printfuncs->parameters))(p, NULL, "PageSize", &num_opts);
+ defopt = (*(printfuncs->default_parameters))(p, NULL, "PageSize");
+ the_papers = malloc(sizeof(paper_t) * num_opts);
+
+ for (i = 0; i < num_opts; i++)
+ {
+ const stp_papersize_t papersize = stp_get_papersize_by_name(opts[i].name);
+
+ if (!papersize)
+ {
+ printf("Unable to lookup size %s!\n", opts[i].name);
+ continue;
+ }
+
+ width = stp_papersize_get_width(papersize);
+ height = stp_papersize_get_height(papersize);
+
+ if (width <= 0 || height <= 0)
+ continue;
+
+ stp_set_media_size(v, opts[i].name);
+
+ (*(printfuncs->media_size))(p, v, &width, &height);
+ (*(printfuncs->imageable_area))(p, v, &left, &right, &bottom, &top);
+
+ the_papers[cur_opt].name = opts[i].name;
+ the_papers[cur_opt].text = opts[i].text;
+ the_papers[cur_opt].width = width;
+ the_papers[cur_opt].height = height;
+ the_papers[cur_opt].left = left;
+ the_papers[cur_opt].right = right;
+ the_papers[cur_opt].bottom = bottom;
+ the_papers[cur_opt].top = top;
+
+ cur_opt++;
+ }
+
+ gzputs(fp, "*OpenUI *PageSize: PickOne\n");
+ gzputs(fp, "*OrderDependency: 10 AnySetup *PageSize\n");
+ gzputs(fp, "*DefaultPageSize: ");
+ gzputs(fp, defopt);
+ gzputs(fp, "\n");
+ for (i = 0; i < cur_opt; i ++)
+ {
+ gzprintf(fp, "*PageSize %s", the_papers[i].name);
+ gzprintf(fp, "/%s:\t\"<</PageSize[%d %d]/ImagingBBox null>>setpagedevice\"\n",
+ the_papers[i].text, the_papers[i].width, the_papers[i].height);
+ }
+ gzputs(fp, "*CloseUI: *PageSize\n");
+
+ gzputs(fp, "*OpenUI *PageRegion: PickOne\n");
+ gzputs(fp, "*OrderDependency: 10 AnySetup *PageRegion\n");
+ gzputs(fp, "*DefaultPageRegion: ");
+ gzputs(fp, defopt);
+ gzputs(fp, "\n");
+ for (i = 0; i < cur_opt; i ++)
+ {
+ gzprintf(fp, "*PageRegion %s", the_papers[i].name);
+ gzprintf(fp, "/%s:\t\"<</PageRegion[%d %d]/ImagingBBox null>>setpagedevice\"\n",
+ the_papers[i].text, the_papers[i].width, the_papers[i].height);
+ }
+ gzputs(fp, "*CloseUI: *PageRegion\n");
+
+ gzputs(fp, "*DefaultImageableArea: ");
+ gzputs(fp, defopt);
+ gzputs(fp, "\n");
+ for (i = 0; i < cur_opt; i ++)
+ {
+ gzprintf(fp, "*ImageableArea %s", the_papers[i].name);
+ gzprintf(fp, "/%s:\t\"%d %d %d %d\"\n", the_papers[i].text,
+ the_papers[i].left, the_papers[i].bottom,
+ the_papers[i].right, the_papers[i].top);
+ }
+
+ gzputs(fp, "*DefaultPaperDimension: ");
+ gzputs(fp, defopt);
+ gzputs(fp, "\n");
+ for (i = 0; i < cur_opt; i ++)
+ {
+ gzprintf(fp, "*PaperDimension %s", the_papers[i].name);
+ gzprintf(fp, "/%s:\t\"%d %d\"\n",
+ the_papers[i].text, the_papers[i].width, the_papers[i].height);
+ }
+
+ if (opts)
+ {
+ for (i = 0; i < num_opts; i++)
+ {
+ free((void *)opts[i].name);
+ free((void *)opts[i].text);
+ }
+
+ free(opts);
+ }
+
+ if (the_papers)
+ free(the_papers);
+
+ /*
+ * Do we support color?
+ */
+
+ gzputs(fp, "*OpenUI *ColorModel: PickOne\n");
+ gzputs(fp, "*OrderDependency: 10 AnySetup *ColorModel\n");
+
+ if (stp_get_output_type(printvars) == OUTPUT_COLOR)
+ gzputs(fp, "*DefaultColorModel: RGB\n");
+ else
+ gzputs(fp, "*DefaultColorModel: Gray\n");
+
+ gzprintf(fp, "*ColorModel Gray/Grayscale:\t\"<<"
+ "/cupsColorSpace %d"
+ "/cupsColorOrder %d"
+ "/cupsBitsPerColor 8>>setpagedevice\"\n",
+ CUPS_CSPACE_W, CUPS_ORDER_CHUNKED);
+ gzprintf(fp, "*ColorModel Black/Black & White:\t\"<<"
+ "/cupsColorSpace %d"
+ "/cupsColorOrder %d"
+ "/cupsBitsPerColor 8>>setpagedevice\"\n",
+ CUPS_CSPACE_K, CUPS_ORDER_CHUNKED);
+
+ if (stp_get_output_type(printvars) == OUTPUT_COLOR)
+ {
+ gzprintf(fp, "*ColorModel RGB/Color:\t\"<<"
+ "/cupsColorSpace %d"
+ "/cupsColorOrder %d"
+ "/cupsBitsPerColor 8>>setpagedevice\"\n",
+ CUPS_CSPACE_RGB, CUPS_ORDER_CHUNKED);
+ gzprintf(fp, "*ColorModel CMYK/Raw CMYK:\t\"<<"
+ "/cupsColorSpace %d"
+ "/cupsColorOrder %d"
+ "/cupsBitsPerColor 8>>setpagedevice\"\n",
+ CUPS_CSPACE_CMYK, CUPS_ORDER_CHUNKED);
+ }
+
+ gzputs(fp, "*CloseUI: *ColorModel\n");
+
+ /*
+ * Media types...
+ */
+
+ opts = (*(printfuncs->parameters))(p, NULL, "MediaType", &num_opts);
+ defopt = (*(printfuncs->default_parameters))(p, NULL, "MediaType");
+
+ if (num_opts > 0)
+ {
+ gzprintf(fp, "*OpenUI *MediaType/%s: PickOne\n", _("Media Type"));
+ gzputs(fp, "*OrderDependency: 10 AnySetup *MediaType\n");
+ gzprintf(fp, "*DefaultMediaType: %s\n", defopt);
+
+ for (i = 0; i < num_opts; i ++)
+ {
+ gzprintf(fp, "*MediaType %s/%s:\t\"<</MediaType(%s)>>setpagedevice\"\n",
+ opts[i].name, opts[i].text, opts[i].name);
+ free((void *)opts[i].name);
+ free((void *)opts[i].text);
+ }
+
+ free(opts);
+
+ gzputs(fp, "*CloseUI: *MediaType\n");
+ }
+
+ /*
+ * Input slots...
+ */
+
+ opts = (*(printfuncs->parameters))(p, NULL, "InputSlot", &num_opts);
+ defopt = (*(printfuncs->default_parameters))(p, NULL, "InputSlot");
+
+ if (num_opts > 0)
+ {
+ gzprintf(fp, "*OpenUI *InputSlot/%s: PickOne\n", _("Media Source"));
+ gzputs(fp, "*OrderDependency: 10 AnySetup *InputSlot\n");
+ gzprintf(fp, "*DefaultInputSlot: %s\n", defopt);
+
+ for (i = 0; i < num_opts; i ++)
+ {
+ gzprintf(fp, "*InputSlot %s/%s:\t\"<</MediaClass(%s)>>setpagedevice\"\n",
+ opts[i].name, opts[i].text, opts[i].name);
+ free((void *)opts[i].name);
+ free((void *)opts[i].text);
+ }
+
+ free(opts);
+
+ gzputs(fp, "*CloseUI: *InputSlot\n");
+ }
+
+ /*
+ * Resolutions...
+ */
+
+ opts = (*(printfuncs->parameters))(p, NULL, "Resolution", &num_opts);
+ defopt = (*(printfuncs->default_parameters))(p, NULL, "Resolution");
+
+ gzprintf(fp, "*OpenUI *Resolution/%s: PickOne\n", _("Resolution"));
+ gzputs(fp, "*OrderDependency: 20 AnySetup *Resolution\n");
+ gzprintf(fp, "*DefaultResolution: %s\n", defopt);
+
+ for (i = 0; i < num_opts; i ++)
+ {
+ /*
+ * Strip resolution name to its essentials...
+ */
+
+ (printfuncs->describe_resolution)(p, opts[i].name, &xdpi, &ydpi);
+
+ /* This should not happen! */
+ if (xdpi == -1 || ydpi == -1)
+ continue;
+
+ /*
+ * Write the resolution option...
+ */
+
+ gzprintf(fp, "*Resolution %s/%s:\t\"<</HWResolution[%d %d]/cupsCompression %d>>setpagedevice\"\n",
+ opts[i].name, opts[i].text, xdpi, ydpi, i);
+ free((void *)opts[i].name);
+ free((void *)opts[i].text);
+ }
+
+ free(opts);
+
+ gzputs(fp, "*CloseUI: *Resolution\n");
+
+ /*
+ * STP option group...
+ */
+
+ gzputs(fp, "*OpenGroup: STP\n");
+
+ /*
+ * Image types...
+ */
+
+ gzprintf(fp, "*OpenUI *stpImageType/%s: PickOne\n", _("Image Type"));
+ gzputs(fp, "*OrderDependency: 10 AnySetup *stpImageType\n");
+ gzputs(fp, "*DefaultstpImageType: LineArt\n");
+
+ gzprintf(fp, "*stpImageType LineArt/%s:\t\"<</cupsRowCount 0>>setpagedevice\"\n",
+ _("Line Art"));
+ gzprintf(fp, "*stpImageType SolidTone/%s:\t\"<</cupsRowCount 1>>setpagedevice\"\n",
+ _("Solid Colors"));
+ gzprintf(fp, "*stpImageType Continuous/%s:\t\"<</cupsRowCount 2>>setpagedevice\"\n",
+ _("Photograph"));
+
+ gzputs(fp, "*CloseUI: *stpImageType\n");
+
+ /*
+ * Dithering algorithms...
+ */
+
+ gzprintf(fp, "*OpenUI *stpDither/%s: PickOne\n", _("Dither Algorithm"));
+ gzputs(fp, "*OrderDependency: 10 AnySetup *stpDither\n");
+ gzprintf(fp, "*DefaultstpDither: %s\n", stp_default_dither_algorithm());
+
+ for (i = 0; i < stp_dither_algorithm_count(); i ++)
+ gzprintf(fp, "*stpDither %s/%s: \"<</cupsRowStep %d>>setpagedevice\"\n",
+ stp_dither_algorithm_name(i), stp_dither_algorithm_text(i), i);
+
+ gzputs(fp, "*CloseUI: *stpDither\n");
+
+ /*
+ * InkTypes...
+ */
+
+ opts = (*(printfuncs->parameters))(p, NULL, "InkType", &num_opts);
+ defopt = (*(printfuncs->default_parameters))(p, NULL, "InkType");
+
+ if (num_opts > 0)
+ {
+ gzprintf(fp, "*OpenUI *stpInkType/%s: PickOne\n", _("Ink Type"));
+ gzputs(fp, "*OrderDependency: 20 AnySetup *stpInkType\n");
+ gzprintf(fp, "*DefaultstpInkType: %s\n", defopt);
+
+ for (i = 0; i < num_opts; i ++)
+ {
+ /*
+ * Write the inktype option...
+ */
+
+ gzprintf(fp, "*stpInkType %s/%s:\t\"<</OutputType(%s)>>setpagedevice\"\n",
+ opts[i].name, opts[i].text, opts[i].name);
+ free((void *)opts[i].name);
+ free((void *)opts[i].text);
+ }
+
+ free(opts);
+
+ gzputs(fp, "*CloseUI: *stpInkType\n");
+ }
+
+ /*
+ * Advanced STP options...
+ */
+
+ if (stp_get_output_type(printvars) == OUTPUT_COLOR)
+ num_opts = 8;
+ else
+ num_opts = 4;
+
+ for (i = 0; i < num_opts; i ++)
+ {
+ gzprintf(fp, "*OpenUI *%s/%s: PickOne\n", stp_options[i].name,
+ stp_options[i].text);
+ gzprintf(fp, "*Default%s: 1000\n", stp_options[i].name);
+ for (j = stp_options[i].low;
+ j <= stp_options[i].high;
+ j += stp_options[i].step)
+ gzprintf(fp, "*%s %d/%.3f: \"\"\n", stp_options[i].name, j, j * 0.001);
+ gzprintf(fp, "*CloseUI *%s\n", stp_options[i].name);
+ }
+
+ /*
+ * End of STP option group...
+ */
+
+ gzputs(fp, "*CloseGroup: STP\n");
+
+ /*
+ * Fonts...
+ */
+
+ gzputs(fp, "*DefaultFont: Courier\n");
+ gzputs(fp, "*Font AvantGarde-Book: Standard \"(001.006S)\" Standard ROM\n");
+ gzputs(fp, "*Font AvantGarde-BookOblique: Standard \"(001.006S)\" Standard ROM\n");
+ gzputs(fp, "*Font AvantGarde-Demi: Standard \"(001.007S)\" Standard ROM\n");
+ gzputs(fp, "*Font AvantGarde-DemiOblique: Standard \"(001.007S)\" Standard ROM\n");
+ gzputs(fp, "*Font Bookman-Demi: Standard \"(001.004S)\" Standard ROM\n");
+ gzputs(fp, "*Font Bookman-DemiItalic: Standard \"(001.004S)\" Standard ROM\n");
+ gzputs(fp, "*Font Bookman-Light: Standard \"(001.004S)\" Standard ROM\n");
+ gzputs(fp, "*Font Bookman-LightItalic: Standard \"(001.004S)\" Standard ROM\n");
+ gzputs(fp, "*Font Courier: Standard \"(002.004S)\" Standard ROM\n");
+ gzputs(fp, "*Font Courier-Bold: Standard \"(002.004S)\" Standard ROM\n");
+ gzputs(fp, "*Font Courier-BoldOblique: Standard \"(002.004S)\" Standard ROM\n");
+ gzputs(fp, "*Font Courier-Oblique: Standard \"(002.004S)\" Standard ROM\n");
+ gzputs(fp, "*Font Helvetica: Standard \"(001.006S)\" Standard ROM\n");
+ gzputs(fp, "*Font Helvetica-Bold: Standard \"(001.007S)\" Standard ROM\n");
+ gzputs(fp, "*Font Helvetica-BoldOblique: Standard \"(001.007S)\" Standard ROM\n");
+ gzputs(fp, "*Font Helvetica-Narrow: Standard \"(001.006S)\" Standard ROM\n");
+ gzputs(fp, "*Font Helvetica-Narrow-Bold: Standard \"(001.007S)\" Standard ROM\n");
+ gzputs(fp, "*Font Helvetica-Narrow-BoldOblique: Standard \"(001.007S)\" Standard ROM\n");
+ gzputs(fp, "*Font Helvetica-Narrow-Oblique: Standard \"(001.006S)\" Standard ROM\n");
+ gzputs(fp, "*Font Helvetica-Oblique: Standard \"(001.006S)\" Standard ROM\n");
+ gzputs(fp, "*Font NewCenturySchlbk-Bold: Standard \"(001.009S)\" Standard ROM\n");
+ gzputs(fp, "*Font NewCenturySchlbk-BoldItalic: Standard \"(001.007S)\" Standard ROM\n");
+ gzputs(fp, "*Font NewCenturySchlbk-Italic: Standard \"(001.006S)\" Standard ROM\n");
+ gzputs(fp, "*Font NewCenturySchlbk-Roman: Standard \"(001.007S)\" Standard ROM\n");
+ gzputs(fp, "*Font Palatino-Bold: Standard \"(001.005S)\" Standard ROM\n");
+ gzputs(fp, "*Font Palatino-BoldItalic: Standard \"(001.005S)\" Standard ROM\n");
+ gzputs(fp, "*Font Palatino-Italic: Standard \"(001.005S)\" Standard ROM\n");
+ gzputs(fp, "*Font Palatino-Roman: Standard \"(001.005S)\" Standard ROM\n");
+ gzputs(fp, "*Font Symbol: Special \"(001.007S)\" Special ROM\n");
+ gzputs(fp, "*Font Times-Bold: Standard \"(001.007S)\" Standard ROM\n");
+ gzputs(fp, "*Font Times-BoldItalic: Standard \"(001.009S)\" Standard ROM\n");
+ gzputs(fp, "*Font Times-Italic: Standard \"(001.007S)\" Standard ROM\n");
+ gzputs(fp, "*Font Times-Roman: Standard \"(001.007S)\" Standard ROM\n");
+ gzputs(fp, "*Font ZapfChancery-MediumItalic: Standard \"(001.007S)\" Standard ROM\n");
+ gzputs(fp, "*Font ZapfDingbats: Special \"(001.004S)\" Standard ROM\n");
+
+ gzprintf(fp, "*%%End of %s.ppd\n", driver);
+
+ gzclose(fp);
+
+ stp_free_vars(v);
+ return (0);
+}
+
+/*
+ * End of "$Id: genppd.c,v 1.36 2001/11/11 21:25:36 rlk Exp $".
+ */
diff --git a/src/cups/rastertoprinter.c b/src/cups/rastertoprinter.c
new file mode 100644
index 0000000..63d1676
--- /dev/null
+++ b/src/cups/rastertoprinter.c
@@ -0,0 +1,759 @@
+/*
+ * "$Id: rastertoprinter.c,v 1.19 2001/09/02 13:30:26 rlk Exp $"
+ *
+ * GIMP-print based raster filter for the Common UNIX Printing System.
+ *
+ * Copyright 1993-2001 by Easy Software Products.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, please contact Easy Software
+ * Products at:
+ *
+ * Attn: CUPS Licensing Information
+ * Easy Software Products
+ * 44141 Airport View Drive, Suite 204
+ * Hollywood, Maryland 20636-3111 USA
+ *
+ * Voice: (301) 373-9603
+ * EMail: cups-info@cups.org
+ * WWW: http://www.cups.org
+ *
+ * Contents:
+ *
+ * main() - Main entry and processing of driver.
+ * cups_writefunc() - Write data to a file...
+ * cancel_job() - Cancel the current job...
+ * Image_bpp() - Return the bytes-per-pixel of an image.
+ * Image_get_appname() - Get the application we are running.
+ * Image_get_row() - Get one row of the image.
+ * Image_height() - Return the height of an image.
+ * Image_init() - Initialize an image.
+ * Image_note_progress() - Notify the user of our progress.
+ * Image_progress_conclude() - Close the progress display.
+ * Image_progress_init() - Initialize progress display.
+ * Image_rotate_ccw() - Rotate the image counter-clockwise
+ * (unsupported).
+ * Image_width() - Return the width of an image.
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include <cups/cups.h>
+#include <cups/ppd.h>
+#include <cups/raster.h>
+#include <signal.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#ifdef INCLUDE_GIMP_PRINT_H
+#include INCLUDE_GIMP_PRINT_H
+#else
+#include <gimp-print/gimp-print.h>
+#endif
+#include "../../lib/libprintut.h"
+
+/*
+ * Structure for page raster data...
+ */
+
+typedef struct
+{
+ cups_raster_t *ras; /* Raster stream to read from */
+ int page; /* Current page number */
+ int row; /* Current row number */
+ cups_page_header_t header; /* Page header from file */
+} cups_image_t;
+
+static void cups_writefunc(void *file, const char *buf, size_t bytes);
+static void cancel_job(int sig);
+static const char *Image_get_appname(stp_image_t *image);
+static void Image_progress_conclude(stp_image_t *image);
+static void Image_note_progress(stp_image_t *image,
+ double current, double total);
+static void Image_progress_init(stp_image_t *image);
+static stp_image_status_t Image_get_row(stp_image_t *image,
+ unsigned char *data, int row);
+static int Image_height(stp_image_t *image);
+static int Image_width(stp_image_t *image);
+static int Image_bpp(stp_image_t *image);
+static void Image_rotate_180(stp_image_t *image);
+static void Image_rotate_cw(stp_image_t *image);
+static void Image_rotate_ccw(stp_image_t *image);
+static void Image_init(stp_image_t *image);
+
+static stp_image_t theImage =
+{
+ Image_init,
+ NULL, /* reset */
+ NULL, /* transpose */
+ NULL, /* hflip */
+ NULL, /* vflip */
+ NULL, /* crop */
+ Image_rotate_ccw,
+ Image_rotate_cw,
+ Image_rotate_180,
+ Image_bpp,
+ Image_width,
+ Image_height,
+ Image_get_row,
+ Image_get_appname,
+ Image_progress_init,
+ Image_note_progress,
+ Image_progress_conclude,
+ NULL
+};
+
+static volatile stp_image_status_t Image_status;
+
+/*
+ * 'main()' - Main entry and processing of driver.
+ */
+
+int /* O - Exit status */
+main(int argc, /* I - Number of command-line arguments */
+ char *argv[]) /* I - Command-line arguments */
+{
+ int fd; /* File descriptor */
+ cups_image_t cups; /* CUPS image */
+ const char *ppdfile; /* PPD environment variable */
+ ppd_file_t *ppd; /* PPD file */
+ ppd_option_t *option; /* PPD option */
+ stp_printer_t printer; /* Printer driver */
+ stp_vars_t v; /* Printer driver variables */
+ stp_papersize_t size; /* Paper size */
+ char *buffer; /* Overflow buffer */
+ int num_options; /* Number of CUPS options */
+ cups_option_t *options; /* CUPS options */
+ const char *val; /* CUPS option value */
+ int num_res; /* Number of printer resolutions */
+ stp_param_t *res; /* Printer resolutions */
+ float stp_gamma, /* STP options */
+ stp_brightness,
+ stp_cyan,
+ stp_magenta,
+ stp_yellow,
+ stp_contrast,
+ stp_saturation,
+ stp_density;
+
+
+ /*
+ * Initialise libgimpprint
+ */
+
+ theImage.rep = &cups;
+
+ stp_init();
+
+ /*
+ * Check for valid arguments...
+ */
+
+ if (argc < 6 || argc > 7)
+ {
+ /*
+ * We don't have the correct number of arguments; write an error message
+ * and return.
+ */
+
+ fputs("ERROR: rastertoprinter job-id user title copies options [file]\n", stderr);
+ return (1);
+ }
+
+ Image_status = STP_IMAGE_OK;
+
+ /*
+ * Get the PPD file...
+ */
+
+ if ((ppdfile = getenv("PPD")) == NULL)
+ {
+ fputs("ERROR: Fatal error: PPD environment variable not set!\n", stderr);
+ return (1);
+ }
+
+ if ((ppd = ppdOpenFile(ppdfile)) == NULL)
+ {
+ fprintf(stderr, "ERROR: Fatal error: Unable to load PPD file \"%s\"!\n",
+ ppdfile);
+ return (1);
+ }
+
+ if (ppd->modelname == NULL)
+ {
+ fprintf(stderr, "ERROR: Fatal error: No ModelName attribute in PPD file \"%s\"!\n",
+ ppdfile);
+ ppdClose(ppd);
+ return (1);
+ }
+
+ /*
+ * Get the STP options, if any...
+ */
+
+ num_options = cupsParseOptions(argv[5], 0, &options);
+
+ if ((val = cupsGetOption("stpGamma", num_options, options)) != NULL)
+ stp_gamma = atof(val) * 0.001;
+ else if ((option = ppdFindOption(ppd, "stpGamma")) != NULL)
+ stp_gamma = atof(option->defchoice) * 0.001;
+ else
+ stp_gamma = 1.0;
+
+ if ((val = cupsGetOption("stpBrightness", num_options, options)) != NULL)
+ stp_brightness = atof(val) * 0.001;
+ else if ((option = ppdFindOption(ppd, "stpBrightness")) != NULL)
+ stp_brightness = atof(option->defchoice) * 0.001;
+ else
+ stp_brightness = 1.0;
+
+ if ((val = cupsGetOption("stpCyan", num_options, options)) != NULL)
+ stp_cyan = atof(val) * 0.001;
+ else if ((option = ppdFindOption(ppd, "stpCyan")) != NULL)
+ stp_cyan = atof(option->defchoice) * 0.001;
+ else
+ stp_cyan = 1.0;
+
+ if ((val = cupsGetOption("stpMagenta", num_options, options)) != NULL)
+ stp_magenta = atof(val) * 0.001;
+ else if ((option = ppdFindOption(ppd, "stpMagenta")) != NULL)
+ stp_magenta = atof(option->defchoice) * 0.001;
+ else
+ stp_magenta = 1.0;
+
+ if ((val = cupsGetOption("stpYellow", num_options, options)) != NULL)
+ stp_yellow = atof(val) * 0.001;
+ else if ((option = ppdFindOption(ppd, "stpYellow")) != NULL)
+ stp_yellow = atof(option->defchoice) * 0.001;
+ else
+ stp_yellow = 1.0;
+
+ if ((val = cupsGetOption("stpContrast", num_options, options)) != NULL)
+ stp_contrast = atof(val) * 0.001;
+ else if ((option = ppdFindOption(ppd, "stpContrast")) != NULL)
+ stp_contrast = atof(option->defchoice) * 0.001;
+ else
+ stp_contrast = 1.0;
+
+ if ((val = cupsGetOption("stpSaturation", num_options, options)) != NULL)
+ stp_saturation = atof(val) * 0.001;
+ else if ((option = ppdFindOption(ppd, "stpSaturation")) != NULL)
+ stp_saturation = atof(option->defchoice) * 0.001;
+ else
+ stp_saturation = 1.0;
+
+ if ((val = cupsGetOption("stpDensity", num_options, options)) != NULL)
+ stp_density = atof(val) * 0.001;
+ else if ((option = ppdFindOption(ppd, "stpDensity")) != NULL)
+ stp_density = atof(option->defchoice) * 0.001;
+ else
+ stp_density = 1.0;
+
+ /*
+ * Figure out which driver to use...
+ */
+
+ if ((printer = stp_get_printer_by_driver(ppd->modelname)) == NULL)
+ {
+ fprintf(stderr, "ERROR: Fatal error: Unable to find driver named \"%s\"!\n",
+ ppd->modelname);
+ ppdClose(ppd);
+ return (1);
+ }
+
+ ppdClose(ppd);
+
+ /*
+ * Get the resolution options...
+ */
+
+ res = stp_printer_get_printfuncs(printer)->parameters(printer, NULL,
+ "Resolution", &num_res);
+
+ /*
+ * Open the page stream...
+ */
+
+ if (argc == 7)
+ {
+ if ((fd = open(argv[6], O_RDONLY)) == -1)
+ {
+ perror("ERROR: Unable to open raster file - ");
+ sleep(1);
+ return (1);
+ }
+ }
+ else
+ fd = 0;
+
+ cups.ras = cupsRasterOpen(fd, CUPS_RASTER_READ);
+
+ /*
+ * Process pages as needed...
+ */
+
+ cups.page = 0;
+
+ while (cupsRasterReadHeader(cups.ras, &cups.header))
+ {
+ /*
+ * Update the current page...
+ */
+
+ cups.page ++;
+ cups.row = 0;
+
+ /*
+ * Debugging info...
+ */
+
+ fprintf(stderr, "DEBUG: StartPage...\n");
+ fprintf(stderr, "DEBUG: MediaClass = \"%s\"\n", cups.header.MediaClass);
+ fprintf(stderr, "DEBUG: MediaColor = \"%s\"\n", cups.header.MediaColor);
+ fprintf(stderr, "DEBUG: MediaType = \"%s\"\n", cups.header.MediaType);
+ fprintf(stderr, "DEBUG: OutputType = \"%s\"\n", cups.header.OutputType);
+
+ fprintf(stderr, "DEBUG: AdvanceDistance = %d\n", cups.header.AdvanceDistance);
+ fprintf(stderr, "DEBUG: AdvanceMedia = %d\n", cups.header.AdvanceMedia);
+ fprintf(stderr, "DEBUG: Collate = %d\n", cups.header.Collate);
+ fprintf(stderr, "DEBUG: CutMedia = %d\n", cups.header.CutMedia);
+ fprintf(stderr, "DEBUG: Duplex = %d\n", cups.header.Duplex);
+ fprintf(stderr, "DEBUG: HWResolution = [ %d %d ]\n", cups.header.HWResolution[0],
+ cups.header.HWResolution[1]);
+ fprintf(stderr, "DEBUG: ImagingBoundingBox = [ %d %d %d %d ]\n",
+ cups.header.ImagingBoundingBox[0], cups.header.ImagingBoundingBox[1],
+ cups.header.ImagingBoundingBox[2], cups.header.ImagingBoundingBox[3]);
+ fprintf(stderr, "DEBUG: InsertSheet = %d\n", cups.header.InsertSheet);
+ fprintf(stderr, "DEBUG: Jog = %d\n", cups.header.Jog);
+ fprintf(stderr, "DEBUG: LeadingEdge = %d\n", cups.header.LeadingEdge);
+ fprintf(stderr, "DEBUG: Margins = [ %d %d ]\n", cups.header.Margins[0],
+ cups.header.Margins[1]);
+ fprintf(stderr, "DEBUG: ManualFeed = %d\n", cups.header.ManualFeed);
+ fprintf(stderr, "DEBUG: MediaPosition = %d\n", cups.header.MediaPosition);
+ fprintf(stderr, "DEBUG: MediaWeight = %d\n", cups.header.MediaWeight);
+ fprintf(stderr, "DEBUG: MirrorPrint = %d\n", cups.header.MirrorPrint);
+ fprintf(stderr, "DEBUG: NegativePrint = %d\n", cups.header.NegativePrint);
+ fprintf(stderr, "DEBUG: NumCopies = %d\n", cups.header.NumCopies);
+ fprintf(stderr, "DEBUG: Orientation = %d\n", cups.header.Orientation);
+ fprintf(stderr, "DEBUG: OutputFaceUp = %d\n", cups.header.OutputFaceUp);
+ fprintf(stderr, "DEBUG: PageSize = [ %d %d ]\n", cups.header.PageSize[0],
+ cups.header.PageSize[1]);
+ fprintf(stderr, "DEBUG: Separations = %d\n", cups.header.Separations);
+ fprintf(stderr, "DEBUG: TraySwitch = %d\n", cups.header.TraySwitch);
+ fprintf(stderr, "DEBUG: Tumble = %d\n", cups.header.Tumble);
+ fprintf(stderr, "DEBUG: cupsWidth = %d\n", cups.header.cupsWidth);
+ fprintf(stderr, "DEBUG: cupsHeight = %d\n", cups.header.cupsHeight);
+ fprintf(stderr, "DEBUG: cupsMediaType = %d\n", cups.header.cupsMediaType);
+ fprintf(stderr, "DEBUG: cupsBitsPerColor = %d\n", cups.header.cupsBitsPerColor);
+ fprintf(stderr, "DEBUG: cupsBitsPerPixel = %d\n", cups.header.cupsBitsPerPixel);
+ fprintf(stderr, "DEBUG: cupsBytesPerLine = %d\n", cups.header.cupsBytesPerLine);
+ fprintf(stderr, "DEBUG: cupsColorOrder = %d\n", cups.header.cupsColorOrder);
+ fprintf(stderr, "DEBUG: cupsColorSpace = %d\n", cups.header.cupsColorSpace);
+ fprintf(stderr, "DEBUG: cupsCompression = %d\n", cups.header.cupsCompression);
+ fprintf(stderr, "DEBUG: cupsRowCount = %d\n", cups.header.cupsRowCount);
+ fprintf(stderr, "DEBUG: cupsRowFeed = %d\n", cups.header.cupsRowFeed);
+ fprintf(stderr, "DEBUG: cupsRowStep = %d\n", cups.header.cupsRowStep);
+
+ /*
+ * Setup printer driver variables...
+ */
+
+ v = stp_allocate_copy(stp_printer_get_printvars(printer));
+
+ stp_set_app_gamma(v, 1.0);
+ stp_set_brightness(v, stp_brightness);
+ stp_set_contrast(v, stp_contrast);
+ stp_set_cyan(v, stp_cyan);
+ stp_set_magenta(v, stp_magenta);
+ stp_set_yellow(v, stp_yellow);
+ stp_set_saturation(v, stp_saturation);
+ stp_set_density(v, stp_density);
+ stp_set_scaling(v, 0); /* No scaling */
+ stp_set_cmap(v, NULL);
+ stp_set_page_width(v, cups.header.PageSize[0]);
+ stp_set_page_height(v, cups.header.PageSize[1]);
+ stp_set_orientation(v, ORIENT_PORTRAIT);
+ stp_set_gamma(v, stp_gamma);
+ stp_set_image_type(v, cups.header.cupsRowCount);
+ stp_set_outfunc(v, cups_writefunc);
+ stp_set_errfunc(v, cups_writefunc);
+ stp_set_outdata(v, stdout);
+ stp_set_errdata(v, stderr);
+
+ switch (cups.header.cupsColorSpace)
+ {
+ case CUPS_CSPACE_W :
+ stp_set_output_type(v, OUTPUT_GRAY);
+ break;
+ case CUPS_CSPACE_K :
+ stp_set_output_type(v, OUTPUT_MONOCHROME);
+ break;
+ case CUPS_CSPACE_RGB :
+ stp_set_output_type(v, OUTPUT_COLOR);
+ break;
+ case CUPS_CSPACE_CMYK :
+ stp_set_output_type(v, OUTPUT_RAW_CMYK);
+ break;
+ default :
+ fprintf(stderr, "ERROR: Bad colorspace %d!",
+ cups.header.cupsColorSpace);
+ break;
+ }
+
+ if (cups.header.cupsRowStep >= stp_dither_algorithm_count())
+ fprintf(stderr, "ERROR: Unable to set dither algorithm!\n");
+ else
+ stp_set_dither_algorithm(v,
+ stp_dither_algorithm_name(cups.header.cupsRowStep));
+
+ stp_set_media_source(v, cups.header.MediaClass);
+ stp_set_media_type(v, cups.header.MediaType);
+ stp_set_ink_type(v, cups.header.OutputType);
+
+ fprintf(stderr, "DEBUG: PageSize = %dx%d\n", cups.header.PageSize[0],
+ cups.header.PageSize[1]);
+
+ if ((size = stp_get_papersize_by_size(cups.header.PageSize[1],
+ cups.header.PageSize[0])) != NULL)
+ stp_set_media_size(v, stp_papersize_get_name(size));
+ else
+ fprintf(stderr, "ERROR: Unable to get media size!\n");
+
+ if (cups.header.cupsCompression >= num_res)
+ fprintf(stderr, "ERROR: Unable to set printer resolution!\n");
+ else
+ stp_set_resolution(v, res[cups.header.cupsCompression].name);
+
+ /*
+ * Print the page...
+ */
+
+ stp_merge_printvars(v, stp_printer_get_printvars(printer));
+ fprintf(stderr, "DEBUG: stp_get_output_to(v) |%s|\n", stp_get_output_to(v));
+ fprintf(stderr, "DEBUG: stp_get_driver(v) |%s|\n", stp_get_driver(v));
+ fprintf(stderr, "DEBUG: stp_get_ppd_file(v) |%s|\n", stp_get_ppd_file(v));
+ fprintf(stderr, "DEBUG: stp_get_resolution(v) |%s|\n", stp_get_resolution(v));
+ fprintf(stderr, "DEBUG: stp_get_media_size(v) |%s|\n", stp_get_media_size(v));
+ fprintf(stderr, "DEBUG: stp_get_media_type(v) |%s|\n", stp_get_media_type(v));
+ fprintf(stderr, "DEBUG: stp_get_media_source(v) |%s|\n", stp_get_media_source(v));
+ fprintf(stderr, "DEBUG: stp_get_ink_type(v) |%s|\n", stp_get_ink_type(v));
+ fprintf(stderr, "DEBUG: stp_get_dither_algorithm(v) |%s|\n", stp_get_dither_algorithm(v));
+ fprintf(stderr, "DEBUG: stp_get_output_type(v) |%d|\n", stp_get_output_type(v));
+ fprintf(stderr, "DEBUG: stp_get_orientation(v) |%d|\n", stp_get_orientation(v));
+ fprintf(stderr, "DEBUG: stp_get_left(v) |%d|\n", stp_get_left(v));
+ fprintf(stderr, "DEBUG: stp_get_top(v) |%d|\n", stp_get_top(v));
+ fprintf(stderr, "DEBUG: stp_get_image_type(v) |%d|\n", stp_get_image_type(v));
+ fprintf(stderr, "DEBUG: stp_get_unit(v) |%d|\n", stp_get_unit(v));
+ fprintf(stderr, "DEBUG: stp_get_page_width(v) |%d|\n", stp_get_page_width(v));
+ fprintf(stderr, "DEBUG: stp_get_page_height(v) |%d|\n", stp_get_page_height(v));
+ fprintf(stderr, "DEBUG: stp_get_input_color_model(v) |%d|\n", stp_get_input_color_model(v));
+ fprintf(stderr, "DEBUG: stp_get_output_color_model(v) |%d|\n", stp_get_output_color_model(v));
+ fprintf(stderr, "DEBUG: stp_get_brightness(v) |%.3f|\n", stp_get_brightness(v));
+ fprintf(stderr, "DEBUG: stp_get_scaling(v) |%.3f|\n", stp_get_scaling(v));
+ fprintf(stderr, "DEBUG: stp_get_gamma(v) |%.3f|\n", stp_get_gamma(v));
+ fprintf(stderr, "DEBUG: stp_get_contrast(v) |%.3f|\n", stp_get_contrast(v));
+ fprintf(stderr, "DEBUG: stp_get_cyan(v) |%.3f|\n", stp_get_cyan(v));
+ fprintf(stderr, "DEBUG: stp_get_magenta(v) |%.3f|\n", stp_get_magenta(v));
+ fprintf(stderr, "DEBUG: stp_get_yellow(v) |%.3f|\n", stp_get_yellow(v));
+ fprintf(stderr, "DEBUG: stp_get_saturation(v) |%.3f|\n", stp_get_saturation(v));
+ fprintf(stderr, "DEBUG: stp_get_density(v) |%.3f|\n", stp_get_density(v));
+ fprintf(stderr, "DEBUG: stp_get_app_gamma(v) |%.3f|\n", stp_get_app_gamma(v));
+ if (stp_printer_get_printfuncs(printer)->verify(printer, v))
+ {
+ signal(SIGTERM, cancel_job);
+ stp_printer_get_printfuncs(printer)->print(printer, &theImage, v);
+ }
+ else
+ fputs("ERROR: Invalid printer settings!\n", stderr);
+
+ /*
+ * Purge any remaining bitmap data...
+ */
+
+ if (cups.row < cups.header.cupsHeight)
+ {
+ if ((buffer = xmalloc(cups.header.cupsBytesPerLine)) == NULL)
+ break;
+
+ while (cups.row < cups.header.cupsHeight)
+ {
+ cupsRasterReadPixels(cups.ras, (unsigned char *)buffer,
+ cups.header.cupsBytesPerLine);
+ cups.row ++;
+ }
+ }
+
+ stp_free_vars(v);
+ }
+
+ /*
+ * Close the raster stream...
+ */
+
+ cupsRasterClose(cups.ras);
+ if (fd != 0)
+ close(fd);
+
+ /*
+ * If no pages were printed, send an error message...
+ */
+
+ if (cups.page == 0)
+ fputs("ERROR: No pages found!\n", stderr);
+ else
+ fputs("INFO: Ready to print.\n", stderr);
+
+ return (cups.page == 0);
+}
+
+
+/*
+ * 'cups_writefunc()' - Write data to a file...
+ */
+
+static void
+cups_writefunc(void *file, const char *buf, size_t bytes)
+{
+ FILE *prn = (FILE *)file;
+ fwrite(buf, 1, bytes, prn);
+}
+
+
+/*
+ * 'cancel_job()' - Cancel the current job...
+ */
+
+void
+cancel_job(int sig) /* I - Signal */
+{
+ (void)sig;
+
+ Image_status = STP_IMAGE_ABORT;
+}
+
+
+/*
+ * 'Image_bpp()' - Return the bytes-per-pixel of an image.
+ */
+
+static int /* O - Bytes per pixel */
+Image_bpp(stp_image_t *image) /* I - Image */
+{
+ cups_image_t *cups; /* CUPS image */
+
+
+ if ((cups = (cups_image_t *)(image->rep)) == NULL)
+ return (0);
+
+ /*
+ * For now, we only support RGB and grayscale input from the
+ * raster filters.
+ */
+
+ switch (cups->header.cupsColorSpace)
+ {
+ default :
+ return (1);
+ case CUPS_CSPACE_RGB :
+ return (3);
+ case CUPS_CSPACE_CMYK :
+ return (4);
+ }
+}
+
+
+/*
+ * 'Image_get_appname()' - Get the application we are running.
+ */
+
+static const char * /* O - Application name */
+Image_get_appname(stp_image_t *image) /* I - Image */
+{
+ (void)image;
+
+ return ("CUPS 1.1.x driver based on GIMP-print");
+}
+
+
+/*
+ * 'Image_get_row()' - Get one row of the image.
+ */
+
+stp_image_status_t
+Image_get_row(stp_image_t *image, /* I - Image */
+ unsigned char *data, /* O - Row */
+ int row) /* I - Row number (unused) */
+{
+ cups_image_t *cups; /* CUPS image */
+ int i; /* Looping var */
+
+
+ if ((cups = (cups_image_t *)(image->rep)) == NULL)
+ return STP_IMAGE_ABORT;
+
+ if (cups->row < cups->header.cupsHeight)
+ {
+ cupsRasterReadPixels(cups->ras, data, cups->header.cupsBytesPerLine);
+ cups->row ++;
+
+ /*
+ * Invert black data for monochrome output...
+ */
+
+ if (cups->header.cupsColorSpace == CUPS_CSPACE_K)
+ for (i = cups->header.cupsBytesPerLine; i > 0; i --, data ++)
+ *data = 255 - *data;
+ }
+ else
+ memset(data, 255, cups->header.cupsBytesPerLine);
+ return Image_status;
+}
+
+
+/*
+ * 'Image_height()' - Return the height of an image.
+ */
+
+static int /* O - Height in pixels */
+Image_height(stp_image_t *image) /* I - Image */
+{
+ cups_image_t *cups; /* CUPS image */
+
+
+ if ((cups = (cups_image_t *)(image->rep)) == NULL)
+ return (0);
+
+ return (cups->header.cupsHeight);
+}
+
+
+/*
+ * 'Image_init()' - Initialize an image.
+ */
+
+static void
+Image_init(stp_image_t *image) /* I - Image */
+{
+ (void)image;
+}
+
+
+/*
+ * 'Image_note_progress()' - Notify the user of our progress.
+ */
+
+void
+Image_note_progress(stp_image_t *image, /* I - Image */
+ double current, /* I - Current progress */
+ double total) /* I - Maximum progress */
+{
+ cups_image_t *cups; /* CUPS image */
+
+
+ if ((cups = (cups_image_t *)(image->rep)) == NULL)
+ return;
+
+ fprintf(stderr, "INFO: Printing page %d, %.0f%%\n",
+ cups->page, 100.0 * current / total);
+}
+
+
+/*
+ * 'Image_progress_conclude()' - Close the progress display.
+ */
+
+static void
+Image_progress_conclude(stp_image_t *image) /* I - Image */
+{
+ cups_image_t *cups; /* CUPS image */
+
+
+ if ((cups = (cups_image_t *)(image->rep)) == NULL)
+ return;
+
+ fprintf(stderr, "INFO: Finished page %d...\n", cups->page);
+}
+
+
+/*
+ * 'Image_progress_init()' - Initialize progress display.
+ */
+
+static void
+Image_progress_init(stp_image_t *image)/* I - Image */
+{
+ cups_image_t *cups; /* CUPS image */
+
+
+ if ((cups = (cups_image_t *)(image->rep)) == NULL)
+ return;
+
+ fprintf(stderr, "INFO: Starting page %d...\n", cups->page);
+}
+
+
+/*
+ * 'Image_rotate_180()' - Rotate the image 180 degrees (unsupported).
+ */
+
+static void
+Image_rotate_180(stp_image_t *image) /* I - Image */
+{
+ (void)image;
+}
+
+
+/*
+ * 'Image_rotate_ccw()' - Rotate the image counter-clockwise (unsupported).
+ */
+
+static void
+Image_rotate_ccw(stp_image_t *image) /* I - Image */
+{
+ (void)image;
+}
+
+
+/*
+ * 'Image_rotate_cw()' - Rotate the image clockwise (unsupported).
+ */
+
+static void
+Image_rotate_cw(stp_image_t *image) /* I - Image */
+{
+ (void)image;
+}
+
+
+/*
+ * 'Image_width()' - Return the width of an image.
+ */
+
+static int /* O - Width in pixels */
+Image_width(stp_image_t *image) /* I - Image */
+{
+ cups_image_t *cups; /* CUPS image */
+
+
+ if ((cups = (cups_image_t *)(image->rep)) == NULL)
+ return (0);
+
+ return (cups->header.cupsWidth);
+}
+
+
+/*
+ * End of "$Id: rastertoprinter.c,v 1.19 2001/09/02 13:30:26 rlk Exp $".
+ */