ipe-7.1.10/0000755000175000017500000000000012624020245012224 5ustar otfriedotfriedipe-7.1.10/scripts/0000755000175000017500000000000012624020245013713 5ustar otfriedotfriedipe-7.1.10/scripts/update-styles.lua0000644000175000017500000000515212624020245017224 0ustar otfriedotfried#!/usr/bin/env ipescript -- -*- lua -*- ---------------------------------------------------------------------- -- Update stylesheets in Ipe documents ---------------------------------------------------------------------- -- -- Running this script as "ipescript update-styles " will -- update the stylesheets in the Ipe figures given. -- -- To update a stylesheet, the script will look for a file with the -- same name as the stylesheet plus the extension ".isy". It searches -- for this file in the current directory, plus all the directories -- given in the IPESTYLES environment variable (with the same default -- settings as in Ipe). -- ---------------------------------------------------------------------- local ipestyles = os.getenv("IPESTYLES") local home = os.getenv("HOME") if ipestyles then styleDirs = { "." } for w in string.gmatch(ipestyles, "[^:;]+") do if w == "_" then w = config.system_styles end styleDirs[#styleDirs + 1] = w end else styleDirs = { ".", config.system_styles } if config.platform ~= "win" then table.insert(styleDirs, 2, home .. "/.ipe/styles") if config.platform == "apple" then table.insert(styleDirs, 3, home .. "/Library/Ipe/Styles") end end end function findStyle(w) for _, d in ipairs(styleDirs) do local s = d .. "/" .. w if ipe.fileExists(s) then return s end end end -------------------------------------------------------------------- if #argv == 0 then io.stderr:write("Usage: ipescript update-styles \n") return end local fignames = argv for _,figname in ipairs(fignames) do io.stderr:write("Updating styles in figure '" .. figname .. "'\n") local doc = assert(ipe.Document(figname)) for index=1,doc:sheets():count() do local sheet = doc:sheets():sheet(index) local name = sheet:name() if not name then io.stderr:write(" - unnamed stylesheet\n") elseif name == "standard" then io.stderr:write(" - standard stylesheet\n") else io.stderr:write(" - stylesheet '" .. name .. "'\n") local s = findStyle(name .. ".isy") if s then io.stderr:write(" updating from '" .. s .."'\n") local nsheet = assert(ipe.Sheet(s)) doc:sheets():insert(index, nsheet) doc:sheets():remove(index + 1) -- remove old sheet end end end if figname:sub(-4) ~= ".ipe" and figname:sub(-4) ~= ".xml" then assert(doc:runLatex()) end -- make a backup of original figure local f = assert(io.open(figname, "rb")) local data = f:read("*all") f:close() f = assert(io.open(figname .. ".bak", "wb")) f:write(data) f:close() -- now write updated figure back doc:save(figname) end ipe-7.1.10/scripts/add-style.lua0000644000175000017500000000165512624020245016313 0ustar otfriedotfried#!/usr/bin/env ipescript -- -*- lua -*- ---------------------------------------------------------------------- -- Add stylesheet ---------------------------------------------------------------------- -- -- Run this script as "ipescript add-style
" -- -- It adds the stylesheet to the Ipe document
. -- ---------------------------------------------------------------------- if #argv ~= 2 then io.stderr:write("Usage: ipescript add-style
\n") return end local sheetname = argv[1] local figname = argv[2] local nsheet = assert(ipe.Sheet(sheetname)) local doc = assert(ipe.Document(figname)) doc:sheets():insert(1, nsheet) assert(doc:runLatex()) -- make a backup of original local f = assert(io.open(figname, "rb")) local data = f:read("*all") f:close() f = assert(io.open(figname .. ".bak", "wb")) f:write(data) f:close() -- now write updated figure back doc:save(figname) ipe-7.1.10/scripts/update-master.lua0000644000175000017500000000537312624020245017201 0ustar otfriedotfried#!/usr/bin/env ipescript -- -*- lua -*- ---------------------------------------------------------------------- -- Update master-preamble stylesheet ---------------------------------------------------------------------- -- -- When using Ipe figures in a Latex document, it is convenient -- to have access to some of the definitions from the document. -- -- This Lua script makes this easy: In your Latex document -- (e.g. master.tex), surround the interesting definitions using -- %%BeginIpePreamble and %%EndIpePreamble, e.g. like this: -- -- %%BeginIpePreamble -- \usepackage{amsfonts} -- \newcommand{\R}{\mathbb{R}} -- %%EndIpePreamble -- -- Running this script as "ipescript update-master master.tex" will -- extract the Ipe definitions, and save them as a stylesheet -- "master-preamble.isy" -- -- Running this script as "ipescript update-master master.tex figures/*.ipe" -- will in addition look at all the Ipe figures, and either add -- "master-preamble.isy" to it, or update the stylesheet to the newest -- version. -- ---------------------------------------------------------------------- if #argv == 0 then io.stderr:write("Usage: ipescript update-master [ ]\n") return end local texname = argv[1] local fignames = argv table.remove(fignames, 1) local f = io.open(texname, "r") text = f:read("*all") f:close() local mat = text:match("%%%%BeginIpePreamble(.*)%%%%EndIpePreamble") if not mat then io.stderr:write("No Ipe definitions found in '" .. texname .. "'\n") return end local out = io.open("master-preamble.isy", "w") out:write('\n\n') out:write(mat) out:write("\n\n") out:close() local nsheet = assert(ipe.Sheet("master-preamble.isy")) io.stderr:write("Extracted definitions and created 'master-preamble.isy'\n") for _,figname in ipairs(fignames) do io.stderr:write("Checking figure '" .. figname .. "'\n") local doc = assert(ipe.Document(figname)) local index = nil for i=1,doc:sheets():count() do local sheet = doc:sheets():sheet(i) if sheet:name() == "master-preamble" then index = i break end end if index then io.stderr:write("Found 'master-preamble' stylesheet, updating it.\n") doc:sheets():insert(index, nsheet:clone()) doc:sheets():remove(index + 1) -- remove old copy else io.stderr:write("Adding 'master-preamble' stylesheet.\n") doc:sheets():insert(1, nsheet:clone()) end if figname:sub(-4) ~= ".ipe" and figname:sub(-4) ~= ".xml" then assert(doc:runLatex()) end -- make a backup of original local f = assert(io.open(figname, "rb")) local data = f:read("*all") f:close() f = assert(io.open(figname .. ".bak", "wb")) f:write(data) f:close() -- now write updated figure back doc:save(figname) end ipe-7.1.10/readme.txt0000644000175000017500000001001112624020245014213 0ustar otfriedotfriedIpe 7.1.10 November, 2015 Ipe extensible drawing editor ============================= Introduction ============ This is the extensible drawing editor Ipe. Ipe allows you to create figures in PDF format, for inclusion into LaTeX (or plain TeX) documents as well as stand-alone PDF documents, for instance to print transparencies or for on-line presentations. See the manual for an introduction. It is available in both HTML ("build/doc/manual.html") and PDF format ("build/doc/manual.pdf"). The separate file "install.txt" explains how to build and install Ipe on Unix. Ipe is also available for Windows in the form of a zip archive. On Windows, all you need to do is unzip the archive, and you are ready to run. (If you do want to compile on Windows yourself, it's not difficult - based on the Unix instructions you should be able to work it out.) -------------------------------------------------------------------- This file is part of the extensible drawing editor Ipe. Copyright (C) 1993-2015 Otfried Cheong Ipe is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. As a special exception, you have permission to link Ipe with the CGAL library and distribute executables, as long as you follow the requirements of the Gnu General Public License in regard to all of the software in the executable aside from CGAL. Ipe 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 Ipe; if not, you can find it at "http://www.gnu.org/copyleft/gpl.html", or write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -------------------------------------------------------------------- Ipe uses the Zlib library (www.gzip.org/zlib), the Freetype 2 library (www.freetype.org), the Cairo library (www.cairographics.org), as well as some code from Xpdf (www.foolabs.com/xpdf). Ipe contains the Lua 5.2 interpreter (www.lua.org), and - except on Windows - uses the Qt toolkit for its graphical user interface (qt.digia.com). Ipe relies on Pdflatex for rendering text. -------------------------------------------------------------------- Before reporting a bug, check that you have the latest version, and check that it is not yet mentioned in the FAQ on the Ipe webpage. You can report bugs on the bug tracking system at "http://ipe.otfried.org/bugzilla.html". Check the existing reports to see whether your bug has already been reported. Please do not send bug reports directly to me (the first thing I would do with the report is to enter it into the bug tracking system). Suggestions for features, or random comments on Ipe can be sent to the Ipe discussion mailing list at . If you have problems installing or using Ipe and cannot find a guru among your real-life friends, the Ipe discussion mailing list would also be the best place to ask. You can send suggestions or comments directly to me by Email, but you should then not expect a reply. I cannot dedicate much time to Ipe, and the little time I have I prefer to put into development. I'm much more likely to get involved in a discussion of desirable features on the mailing list, where anyone interested can participate, rather than by direct Email. If you write interesting ipelets that might be useful to others, please put a link or copy (as you prefer) on the Ipe wiki. Feel free to advertise them on the Ipe discussion list! Otfried Cheong School of Computing KAIST Daejeon, South Korea Email: otfried@ipe.airpost.net Ipe webpage: http://ipe.otfried.org -------------------------------------------------------------------- ipe-7.1.10/fontmaps/0000755000175000017500000000000012624020245014053 5ustar otfriedotfriedipe-7.1.10/fontmaps/texlive-fontmap.xml0000644000175000017500000000464212624020245017725 0ustar otfriedotfried ipe-7.1.10/fontmaps/mactex2011-fontmap.xml0000644000175000017500000000523612624020245020032 0ustar otfriedotfried ipe-7.1.10/fontmaps/gsfonts-fontmap.xml0000644000175000017500000000446412624020245017732 0ustar otfriedotfried ipe-7.1.10/fontmaps/urw-fontmap.xml0000644000175000017500000000367412624020245017066 0ustar otfriedotfried ipe-7.1.10/build/0000755000175000017500000000000012624020245013323 5ustar otfriedotfriedipe-7.1.10/build/doc/0000755000175000017500000000000012624020245014070 5ustar otfriedotfriedipe-7.1.10/build/doc/structipe_1_1_font-members.html0000644000175000017500000001477712624020245022136 0ustar otfriedotfried Ipelib: Member List
ipe::Font Member List

ipe-7.1.10/build/doc/classipe_1_1_latex-members.html0000644000175000017500000001075012624020245022051 0ustar otfriedotfried Ipelib: Member List
ipe::Latex Member List

This is the complete list of members for ipe::Latex, including all inherited members.

createLatexSource(Stream &stream, String preamble)ipe::Latex
ipe::TextCollectingVisitor classipe::Latexfriend
Latex(const Cascade *sheet)ipe::Latex
readPdf(DataSource &source)ipe::Latex
scanObject(const Object *obj)ipe::Latex
scanPage(Page *page)ipe::Latex
takeFontPool()ipe::Latex
updateTextObjects()ipe::Latex
~Latex()ipe::Latex

ipe-7.1.10/build/doc/manual_26.html0000644000175000017500000001722212624020245016546 0ustar otfriedotfried Ipe Manual -- 5.5 Examples
5 Snapping5.4 Interaction of the snapping modes5.5 Examples

5.5 Examples

It takes some time and practice to feel fully at ease with the different snapping modes, especially angular snapping. Here are some examples showing what can be done with angular snapping.

Example 1:

We are given segments s1, s2, and e, and we want to add the dashed vertical extensions through p and q.

  • set F4 and F5 snapping on, go into line mode, and reset axis system with Shift-F2,
  • go near p, press F1 and F8 to set origin and to turn on angular snap.
  • go near p', click left, and extend segment to s2.
  • go near q, press F1 to reset origin, and draw second extension in the same way.

Example 2:

We are given the polygon C, and we want to draw the bracket b, indicating its vertical extension.

  • set F4 and F9 snapping on, go into line mode, reset axis system, set snap angle to 90 degrees.
  • go near p, press F1 and F8 to set origin and angular snapping
  • go to x, click left, extend segment to y, click left
  • now we want to have z on a horizontal line through q: go near q, and press F1 and F8 to reset origin and to turn on angular snapping. Now both angular snapping modes are on, the snap lines intersect in z.
  • click left at z, goto x and press F1, goto t and finish bracket.

Example 3:

We want to draw the following "skyline". The only problem is to get q horizontally aligned with p.

  • draw the baseline using automatic angular snapping to get it horizontal.
  • place p with boundary snapping, draw the rectilinear curve up to r with automatic angular snapping in 90 degrees mode.
  • now go to p and press F1 and F8. The snap lines intersect in q. Click there, turn off angular snapping with Shift-F2, and finish curve. The last point is placed with boundary snapping.

Example 4:

We want to draw a line through p, tangent to C in q.

  • with vertex snapping on, put origin at p with F1
  • go to q and press F2. This puts the base direction from p to q.
  • set angular snapping with F8 and draw line.

Example 5:

We want to draw the following "windmill". The angle of the sector and between sectors should be 30 degrees.

  • set vertex snapping, snap angle to 30 degrees, reset axis system with Shift-F1,
  • with automatic angular snapping, draw a horizontal segment pq.
  • go to p, place origin and turn on angular snapping with F1 and F8,
  • duplicate segment with d, go to q and pick up q for rotation (with Ctrl and the middle mouse button). Rotate until segment falls on the next snap line.
  • turn off angular snapping with F8. Choose arc mode, variant "center & two points".
  • go to p, click for center. Go to q, click for first endpoint of arc, and at r for the second endpoint. Select all, and group.
  • turn angular snapping on again. Duplicate sector, and rotate by 60 degrees using angular snapping.
  • duplicate and rotate four more times.

Example 6:

We want to draw a c-oriented polygon, where the angles between successive segments are multiples of 30 degrees. The automatic angular snapping mode makes this pretty easy, but there is a little catch: How do we place the ultimate vertex such that it is at the same time properly aligned to the penultimate and to the very first vertex?

  • set snap angle to 30 degrees, and turn on automatic angular snapping.
  • click first vertex p and draw the polygon up to the penultimate vertex q.
  • it remains to place r such that it is in a legal position both with respect to q and p. The automatic angular snapping mode ensures the position with respect to q. We will use angular snapping from p to get it right: Go near p and turn on vertex snapping. Press F1 to place the origin at p and F8 to turn on angular snapping. Now it is trivial to place r.
ipe-7.1.10/build/doc/manual_18.html0000644000175000017500000000736112624020245016552 0ustar otfriedotfried Ipe Manual -- 4.3 Image objects
4.4 Group objects4 Object types4.2 Text objects4.3 Image objects

4.3 Image objects

Images are inserted using the Insert image ipelet (in the Ipelets menu). Once in a drawing, you can scale, stretch, and rotate an image. You can read in some scanned drawing and draw on top of it within Ipe. This is useful if you have a drawing on paper and want to make an Ipe version of it.

There are three functions for inserting images: one for images in general, one for JPEG images, and one for pasting from the clipboard.

If your image is in a lossless bitmap format such as PNG, GIF, or BMP, then the first function is appropriate. If your image is in JPEG (JPG) format, then the second function is the right one (it results in much smaller files, as the image is then stored internally in JPEG format, instead of a bitmap). You can also paste an image that is on the clipboard (this should not be used for JPEG images, as you would then store the bitmap). One has to be a bit careful with this, as Insert bitmap does accept JPG files.

Images are stored efficiently in PDF format. It is reasonable to create PDF presentations with lots of JPEG photographs in Ipe. Saving in Postscript is not efficient, as Ipe generates clean 7-bit Postscript files. Also, multiple copies of the same image are embedded only once in PDF documents, but are embedded once for each occurrence in Postscript output.

ipe-7.1.10/build/doc/classipe_1_1_visitor-members.html0000644000175000017500000000767712624020245022451 0ustar otfriedotfried Ipelib: Member List
ipe::Visitor Member List

This is the complete list of members for ipe::Visitor, including all inherited members.

visitGroup(const Group *obj)ipe::Visitorvirtual
visitImage(const Image *obj)ipe::Visitorvirtual
visitPath(const Path *obj)ipe::Visitorvirtual
visitReference(const Reference *obj)ipe::Visitorvirtual
visitText(const Text *obj)ipe::Visitorvirtual
~Visitor()ipe::Visitorvirtual

ipe-7.1.10/build/doc/functions_func_z.html0000644000175000017500000001100712624020245020331 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- z -


ipe-7.1.10/build/doc/classipe_1_1_ellipse.html0000644000175000017500000005552112624020245020746 0ustar otfriedotfried Ipelib: ipe::Ellipse Class Reference

#include <ipeshape.h>

Inherits ipe::SubPath.

Public Member Functions

 Ellipse (const Matrix &m)
 
virtual Type type () const
 
virtual const EllipseasEllipse () const
 
Matrix matrix () const
 
virtual void save (Stream &stream) const
 
virtual void draw (Painter &painter) const
 
virtual void addToBBox (Rect &box, const Matrix &m, bool cp) const
 
virtual double distance (const Vector &v, const Matrix &m, double bound) const
 
virtual void snapVtx (const Vector &mouse, const Matrix &m, Vector &pos, double &bound, bool cp) const
 
virtual void snapBnd (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
- Public Member Functions inherited from ipe::SubPath
virtual ~SubPath ()=0
 
virtual bool closed () const
 
virtual const ClosedSplineasClosedSpline () const
 
virtual const CurveasCurve () const
 

Additional Inherited Members

- Public Types inherited from ipe::SubPath
enum  Type { ECurve, EEllipse, EClosedSpline }
 

Detailed Description

An ellipse subpath.

Constructor & Destructor Documentation

Ellipse::Ellipse ( const Matrix m)

Member Function Documentation

SubPath::Type Ellipse::type ( ) const
virtual

Return type of this subpath.

Implements ipe::SubPath.

References ipe::SubPath::EEllipse.

const Ellipse * Ellipse::asEllipse ( ) const
virtual

Return this object as an Ellipse, or 0 if it's not an ellipse.

Reimplemented from ipe::SubPath.

Matrix ipe::Ellipse::matrix ( ) const
inline

Return matrix that transforms unit circle to the ellipse.

Referenced by save().

void Ellipse::save ( Stream stream) const
virtual

Save subpath to XML stream.

Implements ipe::SubPath.

References matrix().

void Ellipse::draw ( Painter painter) const
virtual

Draw subpath (does not call drawPath()).

Implements ipe::SubPath.

References ipe::Painter::drawArc().

void Ellipse::addToBBox ( Rect box,
const Matrix m,
bool  cp 
) const
virtual

Add subpath to box.

Implements ipe::SubPath.

References ipe::Rect::addRect().

double Ellipse::distance ( const Vector v,
const Matrix m,
double  bound 
) const
virtual

Return distance from v to subpath transformed by m.

Implements ipe::SubPath.

References ipe::Arc::distance().

void Ellipse::snapVtx ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound,
bool  cp 
) const
virtual

snaps to center of ellipse.

Implements ipe::SubPath.

void Ellipse::snapBnd ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
virtual

Snap to boundary of subpath.

Implements ipe::SubPath.

References ipe::Arc::distance().


The documentation for this class was generated from the following files:
  • ipeshape.h
  • ipeshape.cpp

ipe-7.1.10/build/doc/classipe_1_1_curve.html0000644000175000017500000011565212624020245020437 0ustar otfriedotfried Ipelib: ipe::Curve Class Reference

#include <ipeshape.h>

Inherits ipe::SubPath.

Public Member Functions

 Curve ()
 
virtual Type type () const
 
virtual bool closed () const
 
virtual const CurveasCurve () const
 
virtual void save (Stream &stream) const
 
virtual void draw (Painter &painter) const
 
virtual void addToBBox (Rect &box, const Matrix &m, bool cp) const
 
virtual double distance (const Vector &v, const Matrix &m, double bound) const
 
virtual void snapVtx (const Vector &mouse, const Matrix &m, Vector &pos, double &bound, bool cp) const
 
virtual void snapBnd (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
int countSegments () const
 
CurveSegment segment (int i) const
 
CurveSegment closingSegment (Vector u[2]) const
 
void appendSegment (const Vector &v0, const Vector &v1)
 
void appendArc (const Matrix &m, const Vector &v0, const Vector &v1)
 
void appendSpline (const std::vector< Vector > &v)
 
void appendOldSpline (const std::vector< Vector > &v)
 
void setClosed (bool closed)
 
- Public Member Functions inherited from ipe::SubPath
virtual ~SubPath ()=0
 
virtual const EllipseasEllipse () const
 
virtual const ClosedSplineasClosedSpline () const
 

Additional Inherited Members

- Public Types inherited from ipe::SubPath
enum  Type { ECurve, EEllipse, EClosedSpline }
 

Detailed Description

Subpath consisting of a sequence of CurveSegment's.

Constructor & Destructor Documentation

Curve::Curve ( )

Create an empty, open subpath.

Member Function Documentation

SubPath::Type Curve::type ( ) const
virtual

Return type of this subpath.

Implements ipe::SubPath.

References ipe::SubPath::ECurve.

virtual bool ipe::Curve::closed ( ) const
inlinevirtual

Is this subpath closed?

Default implementation returns true.

Reimplemented from ipe::SubPath.

Referenced by distance(), draw(), save(), setClosed(), and snapBnd().

const Curve * Curve::asCurve ( ) const
virtual

Return this object as an Curve, or else 0.

Reimplemented from ipe::SubPath.

void Curve::save ( Stream stream) const
virtual
void Curve::draw ( Painter painter) const
virtual

Draw subpath (does not call drawPath()).

Implements ipe::SubPath.

References closed(), ipe::Painter::closePath(), countSegments(), ipe::CurveSegment::draw(), ipe::Painter::moveTo(), and segment().

void Curve::addToBBox ( Rect box,
const Matrix m,
bool  cp 
) const
virtual

Add subpath to box.

Implements ipe::SubPath.

References ipe::CurveSegment::addToBBox(), countSegments(), and segment().

double Curve::distance ( const Vector v,
const Matrix m,
double  bound 
) const
virtual

Return distance from v to subpath transformed by m.

Implements ipe::SubPath.

References closed(), closingSegment(), countSegments(), ipe::CurveSegment::distance(), and segment().

void Curve::snapVtx ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound,
bool  cp 
) const
virtual

Snap to vertex.

Implements ipe::SubPath.

References countSegments(), segment(), and ipe::CurveSegment::snapVtx().

void Curve::snapBnd ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
virtual

Snap to boundary of subpath.

Implements ipe::SubPath.

References closed(), closingSegment(), countSegments(), segment(), and ipe::CurveSegment::snapBnd().

int ipe::Curve::countSegments ( ) const
inline

Return number of segments. This does not include the closing segment for a closed path.

Referenced by addToBBox(), distance(), draw(), ipe::Shape::isSegment(), ipe::Shape::load(), snapBnd(), and snapVtx().

CurveSegment Curve::segment ( int  i) const

Return segment.

If i is negative, elements from the end are returned. The closing segment of a closed path is not accessible this way (use closingSegment() instead)!

Referenced by addToBBox(), distance(), ipe::Path::draw(), draw(), ipe::Shape::isSegment(), snapBnd(), and snapVtx().

CurveSegment Curve::closingSegment ( Vector  u[2]) const

Returns the closing segment of a closed path.

Since the closing segment isn't actually stored inside this object, you have to provide a length-2 vector for the control points.

This method panics if the Curve is not closed.

References ipe::CurveSegment::ESegment.

Referenced by distance(), and snapBnd().

void Curve::appendSegment ( const Vector v0,
const Vector v1 
)

Append a straight segment to the subpath.

References ipe::CurveSegment::ESegment.

Referenced by ipe::Shape::load(), and ipe::Shape::Shape().

void Curve::appendArc ( const Matrix m,
const Vector v0,
const Vector v1 
)

Append elliptic arc to the subpath.

References ipe::CurveSegment::EArc.

Referenced by ipe::Shape::load(), and ipe::Shape::Shape().

void ipe::Curve::appendSpline ( const std::vector< Vector > &  v)
inline
void ipe::Curve::appendOldSpline ( const std::vector< Vector > &  v)
inline
void Curve::setClosed ( bool  closed)

Set whether subpath is closed or not.

References closed().

Referenced by ipe::Shape::load(), and ipe::Shape::Shape().


The documentation for this class was generated from the following files:
  • ipeshape.h
  • ipeshape.cpp

ipe-7.1.10/build/doc/classipe_1_1_shape-members.html0000644000175000017500000001662712624020245022045 0ustar otfriedotfried Ipelib: Member List
ipe::Shape Member List

This is the complete list of members for ipe::Shape, including all inherited members.

addToBBox(Rect &box, const Matrix &m, bool cp) const ipe::Shape
appendSubPath(SubPath *sp)ipe::Shape
countSubPaths() const ipe::Shapeinline
distance(const Vector &v, const Matrix &m, double bound) const ipe::Shape
draw(Painter &painter) const ipe::Shape
isSegment() const ipe::Shape
load(String data)ipe::Shape
operator=(const Shape &rhs)ipe::Shape
save(Stream &stream) const ipe::Shape
Shape()ipe::Shape
Shape(const Rect &rect)ipe::Shapeexplicit
Shape(const Segment &seg)ipe::Shapeexplicit
Shape(const Vector &center, double radius)ipe::Shapeexplicit
Shape(const Vector &center, double radius, double alpha0, double alpha1)ipe::Shapeexplicit
Shape(const Shape &rhs)ipe::Shape
snapBnd(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Shape
snapVtx(const Vector &mouse, const Matrix &m, Vector &pos, double &bound, bool cp) const ipe::Shape
subPath(int i) const ipe::Shapeinline
~Shape()ipe::Shape

ipe-7.1.10/build/doc/luaipeui.html0000644000175000017500000002050212624020245016572 0ustar otfriedotfried Ipelib: Lua bindings for dialogs and menus
Lua bindings for dialogs and menus

The ipeui module provides dialogs and popup menus for Lua. It does not depend on any other Ipe component, and can be reused in other Lua projects.

Global methods

There are a few global methods in the ipeui module:

ipeui.startBrowser(url)   -- on Win32 only
dt = ipeui.currentDateTime() -- returns string with current date and time

Predefined dialogs

The following are predefined dialogs. In all cases, parent can either be nil or a Window ID.

File dialog

Ask the user to select a filename for opening or for saving. 'type' is "open" or "save". 'filter' is a table with the file name filters. Each filter has two entries in the table, one with the name of the filter and the extensions in parenthesis (this is used by Qt), one with the pure patterns separated by semicolons (this is also used by Windows). Here is an example:

filter_save = { "XML (*.ipe *.xml)", "*.ipe;*.xml",
                "PDF (*.pdf)", "*.pdf" }

'dir' is the initially selected directory, or nil.

'name' is an initial name (without path) to show as the filename, or nil.

'selected' is the number of the initally selected file name filter (where 1 is the first filter), or nil.

The funtion returns nil, or both a file name and the number of the selected filter.

ipeui.fileDialog(parent, type, caption, filter, dir, name, selected)

Color dialog

-- choose a color
-- r,g,b are in the range 0.0 to 1.0
-- returns nil or a (r,g,b) triple
ipeui.getColor(parent, title, r, g, b)

Message box

-- show a message box
-- type is one of "none" "warning" "information" "question" "critical"
-- details may be nil
-- buttons may be nil (for "ok") or one of 
-- "ok" "okcancel" "yesnocancel", "discardcancel", "savediscardcancel", 
-- return 1 for ok/yes/save, 0 for no/discard, -1 for cancel
ipeui.messageBox(parent, type, text, details, buttons)

Wait dialog

This dialog executes an external program. The function returns only after the external program has finished executing.

ipeui.waitDialog(parent, command) 

Dialogs

Other dialogs can be constructed programmatically. A dialog consists of various elements layed out in a grid, and a row of buttons underneath. Create the dialog by adding elements using 'add', and filling the button row using 'addButton'. The 'action' for 'addButton' can be one of the strings "accept" or "reject", or a Lua method.

d = ipeui.Dialog(parent, window_title)

d:add(name, what, options, row, column, row_span, column_span)
d:addButton(name, caption, action)

d:setStretch("row", row_number, stretch_factor)
d:setStretch("column", row_number, stretch_factor)

d:set(name, value)
value = d:get(name)

-- set whether escape should be ignored (true/false)
d:set("ignore-escape", flag)

-- returns true if dialog was accepted
d:execute()
d:execute(size)   -- where size == { width, height }

name can be an arbitrary string. what must be one of

button, text, list, label, combo, checkbox, input

options is a table. Most fields are optional:

-- button:
label="string"  (Required!)
action="accept" or "reject" or a Lua method

-- label:
label="string"  (Required!)

-- text:
read_only=bool
syntax="logfile" or "xml" or "latex"
select_all=bool

-- list and combo:
array of list items (strings)

-- checkbox:
label="string"  (Required!)
action= Lua method  (called when state changed)

-- input:

The argument of set is:

  • a string value for label, text, and input,
  • a either an integer or an array of string items for list and combo,
  • a boolean for checkbox.

The result value of get is:

  • a string for text and input,
  • an integer for list (or nil if there is no current item) or combo,
  • a boolean for checkbox.

Popup menus

Popup menus are constructed and shown as follows:

m = ipeui.Menu(parent)  
item, no, subitem = m:execute(global_position)

When the menu is cancelled, execute returns nil.

You can then add items to the menu one by one. A simple item is added like this:

m:add("name", "Label")

When this item is selected, execute returns name, 0, and an empty string.

The following line adds an entire submenu:

m:add("name", "Submenu", { "alpha", "beta", "gamma" } )

When an item from this submenu is selected, execute returns name, the index into the submenu, and the name of the submenu item.

When the strings in the table are not directly the visible labels for the submenu, a Lua function can be used to convert them:

m:add("name", "Submenu", { "alpha", "beta", "gamma" },
      function (i, item) return "select " .. item end )

The final argument can either be a string or a function. If it is a string, then all items are checkable, and the item whose name is identical to the final argument is checked. Otherwise, the function maps item number and name to a color (three numbers in the range 0.0 to 1.0). This is then used to display a color icon.

Timers

Timers are constructed as follows:

t = ipeui.Timer(table, "method")

When the timer times out, it will call the method named method in the Lua table table. The timer stores only a weak reference to the table, so the timer will not stop the table from being garbage collected.

The timer is controlled using the methods:

timer:setInterval(interval)     -- an integer in milliseconds
timer:setSingleShot(bool)       -- default is repeating timer
timer:start()   
timer:stop()
a = timer:active()              -- true if the timer is running

ipe-7.1.10/build/doc/functions_func_t.html0000644000175000017500000002344312624020245020332 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- t -


ipe-7.1.10/build/doc/manual_32.html0000644000175000017500000001414212624020245016541 0ustar otfriedotfried Ipe Manual -- 7.4 Gradient patterns
7.5 Ipe symbols used from text objects7 Presentations7.3 Bookmarks7.4 Gradient patterns

7.4 Gradient patterns

Gradient patterns allow to shade objects with continuously changing colors. This is often used for backgrounds, or to achieve the illusion of three-dimensional spheres or cylinders.

The intended use of gradients is to allow the creation of attractive symbols inside the style sheet, for backgrounds, as bullets in item lists (see next section), or simply to define attractive glassy-ball symbols and the like that can be used through the Use symbol ipelet.

The Ipe user interface does not offer any way of creating or editing gradients. If your stylesheet defines a gradient, then it is possible to fill a path object with this gradient, but getting the gradient coordinate system right is not trivial. (The trick is to draw the path object at gradient coordinates, and translate/rotate it to the final location afterwards.)

The definition of a linear (axial) gradient looks like this:

  <gradient name="linear" type="axial" extend="yes" coords="75 0 325 0">
    <stop offset="0.05" color="1 0.4 0"/>
    <stop offset="0.95" color="1 1 0.4"/>
  </gradient>
If used like this:
  <path stroke="0" fill="1" gradient="linear" pen="3">
    50 50 m 350 50 l 350 150 l 50 150 l h
  </path>
it will look like this:

A radial gradient looks like this:
  <gradient name="radial" type="radial" extend="yes"
  	    coords="200 100 0 200 100 150">
    <stop offset="0" color="1 0 0"/>
    <stop offset="0.5" color="0 0 1"/>
    <stop offset="1" color="1 0 0"/>
  </gradient>
It will look like this:

A common use of radial gradients is to define glassy balls like this:
  <gradient name="ball" type="radial" coords="-4 10 2 0 0 18">
    <stop offset="0" color="1 1 1"/>
    <stop offset="1" color="0 0 1"/>
  </gradient>
Note that the gradient is centered at 0 0, so it needs to be moved to the location where it is used:
  <path matrix="3 0 0 3 100 100" fill="1" gradient="ball">
    18 0 0 18 0 0 e
  </path>

Normally, you would define a symbol looking like a glassy ball in your style sheet:
<ipestyle>
  <gradient name="ball" type="radial" coords="-4 10 2 0 0 18">
    <stop offset="0" color="1 1 1"/>
    <stop offset="1" color="0 0 1"/>
  </gradient>
  <symbol name="ball(x)" transformations="translations">
    <path fill="1" gradient="ball"> 18 0 0 18 0 0 e </path>
  </symbol>
</ipestyle>
The glassy ball can then be used in the document using the Use symbol ipelet. Note that transformations="translations" ensures that stretching your drawing does not change the glassy ball. Adding the (x) suffix to the symbol name allows you to resize the glassy ball by changing the symbol size from the properties (the same selector used to change the mark size).

For the precise syntax of the gradient definition see here. The easiest method of creating gradients, though, is to use an SVG editor such as Inkscape and to convert the SVG gradient to Ipe format using Svgtoipe.

ipe-7.1.10/build/doc/structipe_1_1_tiling.html0000644000175000017500000001367512624020245021022 0ustar otfriedotfried Ipelib: ipe::Tiling Struct Reference
ipe::Tiling Struct Reference

#include <ipeattributes.h>

Public Attributes

Angle iAngle
 
double iStep
 
double iWidth
 

Detailed Description

A tiling pattern.

Member Data Documentation


The documentation for this struct was generated from the following file:
  • ipeattributes.h

ipe-7.1.10/build/doc/classipe_1_1_path-members.html0000644000175000017500000005674712624020245021710 0ustar otfriedotfried Ipelib: Member List
ipe::Path Member List

This is the complete list of members for ipe::Path, including all inherited members.

accept(Visitor &visitor) const ipe::Pathvirtual
addToBBox(Rect &box, const Matrix &m, bool cp) const ipe::Pathvirtual
arrow() const ipe::Pathinline
arrowShape() const ipe::Pathinline
arrowSize() const ipe::Pathinline
asGroup()ipe::Objectvirtual
asImage()ipe::Objectvirtual
asPath()ipe::Pathvirtual
asReference()ipe::Objectvirtual
asText()ipe::Objectvirtual
checkStyle(const Cascade *sheet, AttributeSeq &seq) const ipe::Pathvirtual
checkSymbol(Kind kind, Attribute attr, const Cascade *sheet, AttributeSeq &seq)ipe::Objectprotectedstatic
clone() const ipe::Pathvirtual
create(const XmlAttributes &attr, String data)ipe::Pathstatic
dashStyle() const ipe::Pathinline
distance(const Vector &v, const Matrix &m, double bound) const ipe::Pathvirtual
draw(Painter &painter) const ipe::Pathvirtual
drawArrow(Painter &painter, Vector pos, Angle alpha, Attribute shape, Attribute size, double radius)ipe::Pathstatic
drawSimple(Painter &painter) const ipe::Pathvirtual
EGroup enum valueipe::Object
EImage enum valueipe::Object
EPath enum valueipe::Object
EReference enum valueipe::Object
EText enum valueipe::Object
fill() const ipe::Pathinline
fillRule() const ipe::Pathinline
getAttribute(Property prop)ipe::Pathvirtual
gradient() const ipe::Pathinline
iMatrixipe::Objectprotected
iPinnedipe::Objectprotected
iTransformationsipe::Objectprotected
lineCap() const ipe::Pathinline
lineJoin() const ipe::Pathinline
matrix() const ipe::Objectinline
Object()ipe::Objectexplicitprotected
Object(const AllAttributes &attr)ipe::Objectexplicitprotected
Object(const Object &rhs)ipe::Objectprotected
Object(const XmlAttributes &attr)ipe::Objectexplicitprotected
opacity() const ipe::Pathinline
Path(const AllAttributes &attr, const Shape &shape, bool withArrows=false)ipe::Pathexplicit
pathMode() const ipe::Pathinline
pen() const ipe::Pathinline
pinned() const ipe::Objectvirtual
rArrow() const ipe::Pathinline
rArrowShape() const ipe::Pathinline
rArrowSize() const ipe::Pathinline
saveAsXml(Stream &stream, String layer) const ipe::Pathvirtual
saveAttributesAsXml(Stream &stream, String layer) const ipe::Objectprotected
setArrow(bool arrow, Attribute shape, Attribute size)ipe::Path
setAttribute(Property prop, Attribute value)ipe::Pathvirtual
setDashStyle(Attribute dash)ipe::Path
setFill(Attribute fill)ipe::Path
setFillRule(TFillRule s)ipe::Path
setGradient(Attribute a)ipe::Path
setLineCap(TLineCap s)ipe::Path
setLineJoin(TLineJoin s)ipe::Path
setMatrix(const Matrix &matrix)ipe::Object
setOpacity(Attribute opaq)ipe::Path
setPathMode(TPathMode pm)ipe::Path
setPen(Attribute pen)ipe::Path
setPinned(TPinned pin)ipe::Object
setRarrow(bool arrow, Attribute shape, Attribute size)ipe::Path
setShape(const Shape &shape)ipe::Path
setStroke(Attribute stroke)ipe::Path
setTiling(Attribute a)ipe::Path
setTransformations(TTransformations trans)ipe::Object
shape() const ipe::Pathinline
snapBnd(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Pathvirtual
snapCtl(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Pathvirtual
snapVtx(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Pathvirtual
stroke() const ipe::Pathinline
tiling() const ipe::Pathinline
transformations() const ipe::Objectinline
type() const ipe::Pathvirtual
Type enum nameipe::Object
~Object()=0ipe::Objectpure virtual

ipe-7.1.10/build/doc/classipe_1_1_page-members.html0000644000175000017500000004730712624020245021660 0ustar otfriedotfried Ipelib: Member List
ipe::Page Member List

This is the complete list of members for ipe::Page, including all inherited members.

active(int index) const ipe::Pageinline
addLayer(String name)ipe::Page
addLayer()ipe::Page
append(TSelect sel, int layer, Object *obj)ipe::Page
applyTitleStyle(const Cascade *sheet)ipe::Page
basic()ipe::Pagestatic
bbox(int i) const ipe::Page
clearViews()ipe::Page
count() const ipe::Pageinline
countLayers() const ipe::Pageinline
countMarkedViews() const ipe::Page
countViews() const ipe::Pageinline
deselectAll()ipe::Page
distance(int i, const Vector &v, double bound) const ipe::Page
effect(int index) const ipe::Pageinline
ensurePrimarySelection()ipe::Page
findLayer(String name) const ipe::Page
hasSelection() const ipe::Page
hasSnapping(int i) const ipe::Pageinline
insert(int i, TSelect sel, int layer, Object *obj)ipe::Page
insertView(int i, String active)ipe::Page
invalidateBBox(int i) const ipe::Page
isLocked(int i) const ipe::Pageinline
layer(int index) const ipe::Pageinline
layerOf(int i) const ipe::Pageinline
marked() const ipe::Pageinline
markedView(int index) const ipe::Pageinline
moveLayer(int index, int newIndex)ipe::Page
notes() const ipe::Pageinline
object(int i)ipe::Pageinline
object(int i) const ipe::Pageinline
objectVisible(int view, int objno) const ipe::Pageinline
Page()ipe::Pageexplicit
pageBBox(const Cascade *sheet) const ipe::Page
primarySelection() const ipe::Page
remove(int i)ipe::Page
removeLayer(String name)ipe::Page
removeView(int i)ipe::Page
renameLayer(String oldName, String newName)ipe::Page
replace(int i, Object *obj)ipe::Page
saveAsIpePage(Stream &stream) const ipe::Page
saveAsXml(Stream &stream) const ipe::Page
saveSelection(Stream &stream) const ipe::Page
section(int level) const ipe::Page
sectionUsesTitle(int level) const ipe::Pageinline
select(int i) const ipe::Pageinline
setActive(int index, String name)ipe::Page
setAttribute(int i, Property prop, Attribute value)ipe::Page
setEffect(int index, Attribute sym)ipe::Page
setLayerOf(int i, int layer)ipe::Pageinline
setLocked(int i, bool flag)ipe::Page
setMarked(bool marked)ipe::Page
setMarkedView(int index, bool marked)ipe::Page
setNotes(String notes)ipe::Page
setSection(int level, bool useTitle, String name)ipe::Page
setSelect(int i, TSelect sel)ipe::Pageinline
setSnapping(int i, bool flag)ipe::Page
setTitle(String title)ipe::Page
setVisible(int view, String layer, bool vis)ipe::Page
snapBnd(int i, const Vector &mouse, Vector &pos, double &bound) const ipe::Page
snapCtl(int i, const Vector &mouse, Vector &pos, double &bound) const ipe::Page
snapVtx(int i, const Vector &mouse, Vector &pos, double &bound) const ipe::Page
title() const ipe::Page
titleText() const ipe::Page
transform(int i, const Matrix &m)ipe::Page
viewBBox(const Cascade *sheet, int view) const ipe::Page
visible(int view, int layer) const ipe::Pageinline

ipe-7.1.10/build/doc/namespacemembers_vars.html0000644000175000017500000000523312624020245021323 0ustar otfriedotfried Ipelib: Namespace Members
 
  • FILE_FORMAT : ipe
  • IPELIB_VERSION : ipe
  • kind_names : ipe
  • OLDEST_FILE_FORMAT : ipe
  • property_names : ipe

ipe-7.1.10/build/doc/manual_34.html0000644000175000017500000000521512624020245016544 0ustar otfriedotfried Ipe Manual -- 8 Advanced topics ipe-7.1.10/build/doc/manual_9.html0000644000175000017500000000527112624020245016470 0ustar otfriedotfried Ipe Manual -- 3.6 Transparency
3.7 Symbolic and absolute attributes3 General Concepts3.5 Pen, dash style, arrows, and tiling patterns3.6 Transparency

3.6 Transparency

Ipe supports a simple model of transparency. You can set the opacity of path objects and text objects: an opacity of 1.0 means a fully opaque object, while 0.5 would mean that the object is half-transparent. All opacity values you wish to use in a document must be defined in its stylesheet.

ipe-7.1.10/build/doc/classipe_1_1_segment-members.html0000644000175000017500000001241612624020245022377 0ustar otfriedotfried Ipelib: Member List
ipe::Segment Member List

This is the complete list of members for ipe::Segment, including all inherited members.

distance(const Vector &v, double bound) const ipe::Segment
distance(const Vector &v) const ipe::Segment
intersects(const Segment &seg, Vector &pt) const ipe::Segment
intersects(const Line &l, Vector &pt) const ipe::Segment
iPipe::Segment
iQipe::Segment
line() const ipe::Segmentinline
project(const Vector &v, Vector &projection) const ipe::Segment
Segment()ipe::Segmentinline
Segment(const Vector &p, const Vector &q)ipe::Segmentinlineexplicit
snap(const Vector &mouse, Vector &pos, double &bound) const ipe::Segment

ipe-7.1.10/build/doc/classipe_1_1_xml_attributes-members.html0000644000175000017500000001251212624020245024000 0ustar otfriedotfried Ipelib: Member List
ipe::XmlAttributes Member List

This is the complete list of members for ipe::XmlAttributes, including all inherited members.

add(String key, String val)ipe::XmlAttributes
begin() const ipe::XmlAttributesinline
clear()ipe::XmlAttributes
const_iterator typedefipe::XmlAttributes
end() const ipe::XmlAttributesinline
has(String str) const ipe::XmlAttributes
has(String str, String &val) const ipe::XmlAttributes
operator[](String str) const ipe::XmlAttributes
setSlash()ipe::XmlAttributesinline
slash() const ipe::XmlAttributesinline
XmlAttributes()ipe::XmlAttributes

ipe-7.1.10/build/doc/manual_39.html0000644000175000017500000000767412624020245016564 0ustar otfriedotfried Ipe Manual -- 8.5 Customizing Ipe
8 Advanced topics8.4 Unicode text8.5 Customizing Ipe

8.5 Customizing Ipe

Since most of Ipe is writing in Lua, an interpreted language, much of Ipe's behavior can be changed without recompilation.

The main customization options are in the files prefs.lua (general settings), shortcuts.lua (keyboard shortcuts), and mouse.lua (mouse shortcuts). (Check the Lua code path in Show configuration in the Help menu if you can't locate the files.)

If you have installed Ipe for your personal use only (for instance under Windows), you can simply modify the original Lua file. In all other cases, you need to provide a small Lua ipelet that will change the setting you wish to change.

A small example is the following ipelet that changes a keyboard shortcut and the maximum zoom:

----------------------------------------------------------------------
-- My customization ipelet: customize.lua
----------------------------------------------------------------------
prefs.max_zoom = 100
shortcuts.insert_text_box = "I",
shortcuts.mode_splines = "Alt+Ctrl+I"

You can use keyboard shortcuts consisting of more than one key, such as Ctrl+X,Ctrl+C. Use commas to separate the key presses—up to four are supported.

The ipelet needs to be placed with the extension .lua somewhere on the ipelet path (check Show configuration again). On Unix, the directory $HOME/.ipe/ipelets will do nicely. On Windows, you will have to set the environment variable IPELETPATH.

ipe-7.1.10/build/doc/classipe_1_1_canvas_observer.html0000644000175000017500000002131712624020245022467 0ustar otfriedotfried Ipelib: ipe::CanvasObserver Class Reference
ipe::CanvasObserver Class Reference

#include <ipecanvas.h>

Public Member Functions

virtual void canvasObserverWheelMoved (int degrees)
 
virtual void canvasObserverMouseAction (int button)
 
virtual void canvasObserverPositionChanged ()
 
virtual void canvasObserverToolChanged (bool hasTool)
 
virtual void canvasObserverSizeChanged ()
 

Member Function Documentation

void CanvasObserver::canvasObserverWheelMoved ( int  degrees)
virtual

Referenced by ipe::Canvas::wheelEvent().

void CanvasObserver::canvasObserverMouseAction ( int  button)
virtual
void CanvasObserver::canvasObserverPositionChanged ( )
virtual
void CanvasObserver::canvasObserverToolChanged ( bool  hasTool)
virtual
void CanvasObserver::canvasObserverSizeChanged ( )
virtual

The documentation for this class was generated from the following files:
  • ipecanvas.h
  • ipecanvas.cpp

ipe-7.1.10/build/doc/classipe_1_1_group.html0000644000175000017500000020473612624020245020451 0ustar otfriedotfried Ipelib: ipe::Group Class Reference

#include <ipegroup.h>

Inherits ipe::Object.

Public Types

typedef List::const_iterator const_iterator
 
- Public Types inherited from ipe::Object
enum  Type {
  EGroup, EPath, EText, EImage,
  EReference
}
 

Public Member Functions

 Group ()
 
 Group (const Group &rhs)
 
virtual ~Group ()
 
 Group (const XmlAttributes &attr)
 
Groupoperator= (const Group &rhs)
 
virtual Objectclone () const
 
virtual GroupasGroup ()
 
virtual Type type () const
 
virtual TPinned pinned () const
 
virtual void accept (Visitor &visitor) const
 
virtual void saveAsXml (Stream &stream, String layer) const
 
virtual void draw (Painter &painter) const
 
virtual void drawSimple (Painter &painter) const
 
virtual void addToBBox (Rect &box, const Matrix &m, bool cp) const
 
virtual double distance (const Vector &v, const Matrix &m, double bound) const
 
virtual void snapVtx (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
virtual void snapCtl (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
virtual void snapBnd (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
const Shapeclip () const
 
void setClip (const Shape &clip)
 
int count () const
 
const Objectobject (int i) const
 
const_iterator begin () const
 
const_iterator end () const
 
void push_back (Object *)
 
void saveComponentsAsXml (Stream &stream) const
 
virtual void checkStyle (const Cascade *sheet, AttributeSeq &seq) const
 
virtual bool setAttribute (Property prop, Attribute value)
 
- Public Member Functions inherited from ipe::Object
virtual ~Object ()=0
 
virtual TextasText ()
 
virtual PathasPath ()
 
virtual ImageasImage ()
 
virtual ReferenceasReference ()
 
void setPinned (TPinned pin)
 
TTransformations transformations () const
 
void setTransformations (TTransformations trans)
 
void setMatrix (const Matrix &matrix)
 
const Matrixmatrix () const
 
virtual Attribute getAttribute (Property prop)
 

Additional Inherited Members

- Protected Member Functions inherited from ipe::Object
 Object ()
 
 Object (const AllAttributes &attr)
 
 Object (const Object &rhs)
 
 Object (const XmlAttributes &attr)
 
void saveAttributesAsXml (Stream &stream, String layer) const
 
- Static Protected Member Functions inherited from ipe::Object
static void checkSymbol (Kind kind, Attribute attr, const Cascade *sheet, AttributeSeq &seq)
 
- Protected Attributes inherited from ipe::Object
Matrix iMatrix
 
TPinned iPinned: 8
 
TTransformations iTransformations: 8
 

Detailed Description

The group object.

Ipe objects can be grouped together, and the resulting composite can be used like any Ipe object.

This is an application of the "Composite" pattern.

Member Typedef Documentation

typedef List::const_iterator ipe::Group::const_iterator

Constructor & Destructor Documentation

Group::Group ( )
explicit

Create empty group (objects can be added later).

Referenced by clone().

Group::Group ( const Group rhs)

Copy constructor. Constant time — components are not copied!

Group::~Group ( )
virtual

Destructor.

Group::Group ( const XmlAttributes attr)
explicit

Create empty group with these attributes (objects can be added later).

References clip(), ipe::ENoPin, ipe::XmlAttributes::has(), and ipe::Shape::load().

Member Function Documentation

Group & Group::operator= ( const Group rhs)

Assignment operator (constant-time).

Object * Group::clone ( ) const
virtual

Clone a group object (constant-time).

Implements ipe::Object.

References Group().

Group * Group::asGroup ( )
virtual

Return pointer to this object.

Reimplemented from ipe::Object.

Object::Type Group::type ( ) const
virtual

Implements ipe::Object.

References ipe::Object::EGroup.

TPinned Group::pinned ( ) const
virtual

Return total pinning status of group and its elements.

Reimplemented from ipe::Object.

References ipe::Object::pinned().

void Group::accept ( Visitor visitor) const
virtual

Call visitGroup of visitor.

Implements ipe::Object.

References ipe::Visitor::visitGroup().

void Group::saveAsXml ( Stream stream,
String  layer 
) const
virtual
void Group::addToBBox ( Rect box,
const Matrix m,
bool  cp 
) const
virtual

Extend box to include the object transformed by m.

For objects in a page, don't call this directly. The Page caches the bounding box of each object, so it is far more efficient to call Page::bbox.

Control points that lie outside the visual object are included if cp is true.

If called with an empty box and cp == false, the result of this function is a tight bounding box for the object, with a little leeway in case the boundary is determined by a spline (it has to be approximated to perform this operation).

Implements ipe::Object.

References ipe::Rect::addRect(), ipe::Shape::addToBBox(), begin(), ipe::Rect::clipTo(), ipe::Shape::countSubPaths(), end(), and ipe::Object::matrix().

double Group::distance ( const Vector v,
const Matrix m,
double  bound 
) const
virtual

Return distance of transformed object to point v. If larger than bound, can just return bound.

Implements ipe::Object.

References begin(), end(), and ipe::Object::matrix().

void Group::snapVtx ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
virtual

Compute vertex snapping position for transformed object.

Looks only for positions closer than bound. If successful, modify pos and bound. The default implementation does nothing.

Reimplemented from ipe::Object.

References begin(), end(), and ipe::Object::matrix().

void Group::snapCtl ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
virtual

Compute control point snapping position for transformed object.

Looks only for positions closer than bound. If successful, modify pos and bound. The default implementation does nothing.

Reimplemented from ipe::Object.

References begin(), end(), and ipe::Object::matrix().

void Group::snapBnd ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
virtual

Compute boundary snapping position for transformed object.

Looks only for positions closer than bound. If successful, modify pos and bound. The default implementation does nothing.

Reimplemented from ipe::Object.

References begin(), end(), and ipe::Object::matrix().

const Shape& ipe::Group::clip ( ) const
inline

Referenced by Group(), and setClip().

void Group::setClip ( const Shape clip)

Set clip path for this group.

Any previously set clip path is deleted.

References clip().

int ipe::Group::count ( ) const
inline

Return number of component objects.

const Object* ipe::Group::object ( int  i) const
inline

Return object at index i.

const_iterator ipe::Group::begin ( ) const
inline
const_iterator ipe::Group::end ( ) const
inline
void Group::push_back ( Object obj)

Add an object.

Takes ownership of the object. This will panic if the object shares its implementation! The method is only useful right after construction of the group.

References ipe::Object::pinned().

Referenced by ipe::ImlParser::parseObject().

void Group::saveComponentsAsXml ( Stream stream) const

Save all the components, one by one, in XML format.

References begin(), and end().

Referenced by saveAsXml().

void Group::checkStyle ( const Cascade sheet,
AttributeSeq seq 
) const
virtual

Check all symbolic attributes.

Reimplemented from ipe::Object.

References begin(), and end().

bool Group::setAttribute ( Property  prop,
Attribute  value 
)
virtual

Set attribute on all children.

Reimplemented from ipe::Object.

References ipe::EPropPinned, ipe::EPropTransformations, and ipe::Object::setAttribute().


The documentation for this class was generated from the following files:
  • ipegroup.h
  • ipegroup.cpp

ipe-7.1.10/build/doc/functions_i.html0000644000175000017500000010043412624020245017300 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- i -


ipe-7.1.10/build/doc/functions_func_u.html0000644000175000017500000001241612624020245020331 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- u -


ipe-7.1.10/build/doc/namespacemembers_enum.html0000644000175000017500000000637712624020245021326 0ustar otfriedotfried Ipelib: Namespace Members
 
  • Kind : ipe
  • Property : ipe
  • TFillRule : ipe
  • THorizontalAlignment : ipe
  • TLineCap : ipe
  • TLineJoin : ipe
  • TPathMode : ipe
  • TPinned : ipe
  • TSelect : ipe
  • TTransformations : ipe
  • TVerticalAlignment : ipe

ipe-7.1.10/build/doc/classipe_1_1_shape.html0000644000175000017500000012043012624020245020401 0ustar otfriedotfried Ipelib: ipe::Shape Class Reference

#include <ipeshape.h>

Public Member Functions

 Shape ()
 
 Shape (const Rect &rect)
 
 Shape (const Segment &seg)
 
 Shape (const Vector &center, double radius)
 
 Shape (const Vector &center, double radius, double alpha0, double alpha1)
 
 ~Shape ()
 
 Shape (const Shape &rhs)
 
Shapeoperator= (const Shape &rhs)
 
bool load (String data)
 
void save (Stream &stream) const
 
void addToBBox (Rect &box, const Matrix &m, bool cp) const
 
double distance (const Vector &v, const Matrix &m, double bound) const
 
void snapVtx (const Vector &mouse, const Matrix &m, Vector &pos, double &bound, bool cp) const
 
void snapBnd (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
int countSubPaths () const
 
const SubPathsubPath (int i) const
 
bool isSegment () const
 
void appendSubPath (SubPath *sp)
 
void draw (Painter &painter) const
 

Detailed Description

A geometric shape, consisting of several (open or closed) subpaths.

This class represents vector graphics geometry following the PDF "path", but is actually a bit more complicated since we add new subtypes: arcs, parabolas, uniform B-splines (in PDF, all of these are converted to cubic Bezier splines).

A Shape consists of a set of subpaths (SubPath), each of which is either open or closed, and which are rendered by stroking and filling as a whole. The distinction between open and closed is meaningful for stroking only, for filling any open subpath is implicitely closed. Stroking a set of subpaths is identical to stroking them individually. This is not true for filling: using several subpaths, one can construct objects with holes, and more complicated pattern.

A subpath is either an Ellipse (a complete, closed ellipse), a ClosedSpline (a closed uniform B-spline curve), or a Curve. A curve consists of a sequence of segments. Segments are either straight, a quadratic Bezier spline, a cubic Bezier spline, an elliptic arc, or a uniform cubic B-spline.

Shape is implemented using reference counting and can be copied and passed by value efficiently. The only mutator methods are appendSubPath() and load(), which can only be called during construction of the Shape (that is, before its implementation has been shared).

Constructor & Destructor Documentation

Shape::Shape ( )

Construct an empty shape (zero subpaths).

Shape::Shape ( const Rect rect)
explicit
Shape::Shape ( const Segment seg)
explicit

Convenience function: create a single line segment.

References ipe::Curve::appendSegment(), appendSubPath(), ipe::Segment::iP, and ipe::Segment::iQ.

Shape::Shape ( const Vector center,
double  radius 
)
explicit

Convenience function: create circle with center and radius.

References appendSubPath(), ipe::Vector::x, and ipe::Vector::y.

Shape::Shape ( const Vector center,
double  radius,
double  alpha0,
double  alpha1 
)
explicit

Convenience function: create circular arc.

If alpha1 is larger than alpha0, the arc is oriented positively, otherwise negatively.

References ipe::Curve::appendArc(), appendSubPath(), ipe::Vector::x, and ipe::Vector::y.

Shape::~Shape ( )

Destructor (takes care of reference counting).

Shape::Shape ( const Shape rhs)

Copy constructor (constant time).

Member Function Documentation

Shape & Shape::operator= ( const Shape rhs)

Assignment operator (constant-time).

bool Shape::load ( String  data)

Create a Shape from XML data.

Appends subpaths from XML data to the current Shape. Returns false if the path syntax is incorrect (the Shape will be in an inconsistent state and must be discarded).

This method can only be used during construction of the Shape. It will panic if the implementation has been shared.

References ipe::Curve::appendArc(), ipe::Curve::appendOldSpline(), ipe::Curve::appendSegment(), ipe::Curve::appendSpline(), appendSubPath(), ipe::SubPath::asCurve(), ipe::Curve::countSegments(), countSubPaths(), ipe::Matrix::determinant(), ipe::Lex::eos(), ipe::Lex::nextToken(), ipe::Curve::setClosed(), ipe::Lex::skipWhitespace(), subPath(), and ipe::Lex::token().

Referenced by ipe::Group::Group().

void Shape::save ( Stream stream) const

Save Shape onto XML stream.

References countSubPaths(), ipe::SubPath::save(), and subPath().

Referenced by ipe::Group::saveAsXml(), and ipe::Path::saveAsXml().

void Shape::addToBBox ( Rect box,
const Matrix m,
bool  cp 
) const

Add shape (transformed by m) to box.

References ipe::SubPath::addToBBox(), countSubPaths(), and subPath().

Referenced by ipe::Group::addToBBox(), and ipe::Path::addToBBox().

double Shape::distance ( const Vector v,
const Matrix m,
double  bound 
) const
void Shape::snapVtx ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound,
bool  cp 
) const
void Shape::snapBnd ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
int ipe::Shape::countSubPaths ( ) const
inline
const SubPath* ipe::Shape::subPath ( int  i) const
inline
void Shape::appendSubPath ( SubPath sp)

Append a SubPath to shape.

The Shape will take ownership of the subpath. This method can only be used during construction of the Shape. It will panic if the implementation has been shared.

Referenced by load(), and Shape().

void Shape::draw ( Painter painter) const

Draw the Shape as a path to painter.

Does not call newPath() on painter.

References countSubPaths(), ipe::SubPath::draw(), and subPath().

Referenced by ipe::Group::draw(), ipe::Path::draw(), ipe::Group::drawSimple(), and ipe::Path::drawSimple().


The documentation for this class was generated from the following files:
  • ipeshape.h
  • ipeshape.cpp

ipe-7.1.10/build/doc/structipe_1_1_canvas_base_1_1_style.html0000644000175000017500000002505212624020245023651 0ustar otfriedotfried Ipelib: ipe::CanvasBase::Style Struct Reference
ipe::CanvasBase::Style Struct Reference

#include <ipecanvas.h>

Public Attributes

Color paperColor
 
bool pretty
 
bool classicGrid
 
double thinLine
 
double thickLine
 
int thinStep
 
int thickStep
 
bool paperClip
 
bool numberPages
 

Detailed Description

In pretty display, no dashed lines are drawn around text objects, and if Latex font data is not available, no text is drawn at all.

Member Data Documentation

Color ipe::CanvasBase::Style::paperColor
bool ipe::CanvasBase::Style::pretty
bool ipe::CanvasBase::Style::classicGrid
double ipe::CanvasBase::Style::thinLine
double ipe::CanvasBase::Style::thickLine
int ipe::CanvasBase::Style::thinStep
int ipe::CanvasBase::Style::thickStep
bool ipe::CanvasBase::Style::paperClip
bool ipe::CanvasBase::Style::numberPages

The documentation for this struct was generated from the following file:
  • ipecanvas.h

ipe-7.1.10/build/doc/classipe_1_1_fixed-members.html0000644000175000017500000001374512624020245022042 0ustar otfriedotfried Ipelib: Member List
ipe::Fixed Member List

This is the complete list of members for ipe::Fixed, including all inherited members.

Fixed(int val)ipe::Fixedinlineexplicit
Fixed()ipe::Fixedinlineexplicit
fromDouble(double val)ipe::Fixedstatic
fromInternal(int val)ipe::Fixedinlinestatic
internal() const ipe::Fixedinline
mult(int a, int b) const ipe::Fixed
operator!=(const Fixed &rhs) const ipe::Fixedinline
operator<(const Fixed &rhs) const ipe::Fixedinline
operator<<(Stream &stream, const Fixed &f)ipe::Fixedfriend
operator<<(Stream &stream, const Fixed &f)ipe::Fixedrelated
operator==(const Fixed &rhs) const ipe::Fixedinline
toDouble() const ipe::Fixedinline
toInt() const ipe::Fixedinline

ipe-7.1.10/build/doc/manual_21.html0000644000175000017500000000753512624020245016547 0ustar otfriedotfried Ipe Manual -- 5 Snapping
6 StylesheetsTop4 Object types5 Snapping

5 Snapping

One of the nice features of Ipe is the possibility of having the mouse snap to other objects during entry or moving. Certain features on the canvas become "magnetic", and it is very easy to align objects to each other, to place new objects properly with respect to the present objects and so on.

Snapping comes in three flavors: grid snapping, context snapping, and angular snapping.

In general, you turn a snapping mode on by pressing one of the buttons in the Snap toolbar, or selecting the equivalent functions in the Snap menu. The buttons are independent, you can turn them on and off independently. (The snapping modes, however, are not independent. See below for the precise interaction.) The keyboard shortcuts are rather convenient since you will want to toggle snapping modes on and off while in the middle of creating or editing some object.

Whenever one of the snapping modes is enabled, you will see a little cross near the cursor position. This is the secondary cursor Fifi.3 Fifi marks the position the mouse is snapped to.

ipe-7.1.10/build/doc/manual_4.html0000644000175000017500000000542312624020245016462 0ustar otfriedotfried Ipe Manual -- 3.1 Order of objects
3.2 The current selection3 General Concepts3.1 Order of objects

3.1 Order of objects

An Ipe drawing is a sequence of geometric objects. The order of the objects is important—wherever two objects overlap, the object which comes first in Ipe's sequence will hide the other ones. When new objects are created, they are added in front of all other objects. However, you can change the position of an object by putting it in front or in the back, using the "Front" and "Back" functions in the Edit menu.

ipe-7.1.10/build/doc/classipe_1_1_repository-members.html0000644000175000017500000000645612624020245023163 0ustar otfriedotfried Ipelib: Member List
ipe::Repository Member List

This is the complete list of members for ipe::Repository, including all inherited members.

cleanup()ipe::Repositorystatic
get()ipe::Repositorystatic
toIndex(String str)ipe::Repository
toString(int index) const ipe::Repository

ipe-7.1.10/build/doc/classipe_1_1_style_sheet.html0000644000175000017500000020272312624020245021637 0ustar otfriedotfried Ipelib: ipe::StyleSheet Class Reference

#include <ipestyle.h>

Classes

struct  PageNumberStyle
 
struct  TitleStyle
 

Public Member Functions

 StyleSheet ()
 
void addSymbol (Attribute name, const Symbol &symbol)
 
const SymbolfindSymbol (Attribute sym) const
 
void addGradient (Attribute name, const Gradient &s)
 
const GradientfindGradient (Attribute sym) const
 
void addTiling (Attribute name, const Tiling &s)
 
const TilingfindTiling (Attribute sym) const
 
void addEffect (Attribute name, const Effect &e)
 
const EffectfindEffect (Attribute sym) const
 
void add (Kind kind, Attribute name, Attribute value)
 
bool has (Kind kind, Attribute sym) const
 
Attribute find (Kind, Attribute sym) const
 
void remove (Kind kind, Attribute sym)
 
void saveAsXml (Stream &stream, bool saveBitmaps=false) const
 
void allNames (Kind kind, AttributeSeq &seq) const
 
bool isStandard () const
 
String preamble () const
 
void setPreamble (const String &str)
 
String encoding () const
 
void setEncoding (const String &enc)
 
const Layoutlayout () const
 
void setLayout (const Layout &margins)
 
const TextPaddingtextPadding () const
 
void setTextPadding (const TextPadding &pad)
 
const TitleStyletitleStyle () const
 
void setTitleStyle (const TitleStyle &ts)
 
const PageNumberStylepageNumberStyle ()
 
void setPageNumberStyle (const PageNumberStyle &pns)
 
void addCMap (String s)
 
void allCMaps (std::vector< String > &seq) const
 
void setLineCap (TLineCap s)
 
void setLineJoin (TLineJoin s)
 
void setFillRule (TFillRule s)
 
TLineCap lineCap () const
 
TLineJoin lineJoin () const
 
TFillRule fillRule () const
 
String name () const
 
void setName (const String &name)
 

Static Public Member Functions

static StyleSheetstandard ()
 

Detailed Description

A style sheet maps symbolic names to absolute values.

Ipe documents can use symbolic attributes, such as 'normal', 'fat', or 'thin' for line thickness, or 'red', 'navy', 'turquoise' for color. The mapping to an absolute pen thickness or RGB value is performed by a StyleSheet.

Style sheets are always included when the document is saved, so that an Ipe document is self-contained.

The built-in standard style sheet is minimal, and only needed to provide sane fallbacks for all the "normal" settings.

Constructor & Destructor Documentation

StyleSheet::StyleSheet ( )

Member Function Documentation

StyleSheet * StyleSheet::standard ( )
static

Create standard built-in style sheet.

References ipe::ImlParser::parseStyleSheet().

Referenced by ipe::Document::Document().

void StyleSheet::addSymbol ( Attribute  name,
const Symbol symbol 
)

Add a symbol object.

References ipe::Attribute::index(), and ipe::Attribute::isSymbolic().

Referenced by ipe::ImlParser::parseStyle().

const Symbol * StyleSheet::findSymbol ( Attribute  attr) const

Find a symbol object with given name.

If attr is not symbolic or if the symbol doesn't exist, returns 0.

References ipe::Attribute::index(), and ipe::Attribute::isSymbolic().

void StyleSheet::addGradient ( Attribute  name,
const Gradient s 
)

Add gradient to this style sheet.

References ipe::Attribute::index(), and ipe::Attribute::isSymbolic().

Referenced by ipe::ImlParser::parseStyle().

const Gradient * StyleSheet::findGradient ( Attribute  sym) const

Find gradient in style sheet cascade.

References ipe::Attribute::index(), and ipe::Attribute::isSymbolic().

void StyleSheet::addTiling ( Attribute  name,
const Tiling s 
)

Add tiling to this style sheet.

References ipe::Attribute::index(), and ipe::Attribute::isSymbolic().

Referenced by ipe::ImlParser::parseStyle().

const Tiling * StyleSheet::findTiling ( Attribute  sym) const

Find tiling in style sheet cascade.

References ipe::Attribute::index(), and ipe::Attribute::isSymbolic().

void StyleSheet::addEffect ( Attribute  name,
const Effect e 
)
const Effect * StyleSheet::findEffect ( Attribute  sym) const
void StyleSheet::add ( Kind  kind,
Attribute  name,
Attribute  value 
)

Add an attribute.

Does nothing if name is not symbolic.

References ipe::Attribute::index(), and ipe::Attribute::isSymbolic().

Referenced by ipe::ImlParser::parseStyle().

bool StyleSheet::has ( Kind  kind,
Attribute  sym 
) const

Check whether symbolic attribute is defined.

This method also works for ESymbol, EGradient, ETiling, and EEffect.

Returns true if sym is not symbolic.

References ipe::EEffect, ipe::EGradient, ipe::ESymbol, ipe::ETiling, ipe::Attribute::index(), and ipe::Attribute::isSymbolic().

Attribute StyleSheet::find ( Kind  kind,
Attribute  sym 
) const

Find a symbolic attribute.

If sym is not symbolic, returns sym itself. If sym cannot be found, returns the "undefined" attribute. In all other cases, the returned attribute is guaranteed to be absolute.

References ipe::Attribute::index(), ipe::Attribute::isSymbolic(), and ipe::Attribute::UNDEFINED().

void StyleSheet::remove ( Kind  kind,
Attribute  sym 
)

Removes definition for a symbolic attribute from this stylesheet.

This method also works for ESymbol, EGradient, ETiling, and EEffect. It is okay if the symbolic attribute is not defined in the stylesheet, nothing happens in this case.

References ipe::EEffect, ipe::EGradient, ipe::ESymbol, ipe::ETiling, and ipe::Attribute::index().

void StyleSheet::saveAsXml ( Stream stream,
bool  saveBitmaps = false 
) const

Save style sheet in XML format.

References ipe::Angle::degrees(), ipe::Gradient::EAxial, ipe::EDefaultCap, ipe::EDefaultJoin, ipe::EDefaultRule, ipe::EEvenOddRule, ipe::String::empty(), ipe::ETextStyle, ipe::ETransformationsRigidMotions, ipe::ETransformationsTranslations, ipe::EWindRule, ipe::String::find(), ipe::Repository::get(), ipe::Tiling::iAngle, ipe::BitmapFinder::iBitmaps, ipe::TextPadding::iBottom, ipe::StyleSheet::TitleStyle::iColor, ipe::StyleSheet::PageNumberStyle::iColor, ipe::Layout::iCrop, ipe::StyleSheet::TitleStyle::iDefined, ipe::StyleSheet::PageNumberStyle::iDefined, ipe::Effect::iDuration, ipe::Effect::iEffect, ipe::Gradient::iExtend, ipe::StyleSheet::PageNumberStyle::iFontSize, ipe::Layout::iFrameSize, ipe::StyleSheet::TitleStyle::iHorizontalAlignment, ipe::TextPadding::iLeft, ipe::Gradient::iMatrix, ipe::Layout::iOrigin, ipe::Layout::iPaperSize, ipe::Layout::iParagraphSkip, ipe::StyleSheet::TitleStyle::iPos, ipe::StyleSheet::PageNumberStyle::iPos, ipe::Gradient::iRadius, ipe::TextPadding::iRight, ipe::Matrix::isIdentity(), ipe::StyleSheet::TitleStyle::iSize, ipe::Layout::isNull(), ipe::Tiling::iStep, ipe::Gradient::iStops, ipe::TextPadding::iTop, ipe::Effect::iTransitionTime, ipe::Gradient::iType, ipe::Gradient::iV, ipe::StyleSheet::TitleStyle::iVerticalAlignment, ipe::Tiling::iWidth, ipe::kind_names, ipe::Bitmap::objNum(), ipe::Stream::putXmlString(), ipe::Text::saveAlignment(), ipe::Bitmap::saveAsXml(), ipe::Attribute::string(), ipe::String::substr(), and ipe::Repository::toString().

void StyleSheet::allNames ( Kind  kind,
AttributeSeq seq 
) const

Return all symbolic names in the style sheet cascade.

Names are simply appended from top to bottom of the cascade. Names are inserted only once.

References ipe::EEffect, ipe::EGradient, ipe::ESymbol, and ipe::ETiling.

bool ipe::StyleSheet::isStandard ( ) const
inline

Return whether this is the standard style sheet built into Ipe.

String ipe::StyleSheet::preamble ( ) const
inline

Return Latex preamble.

void ipe::StyleSheet::setPreamble ( const String str)
inline

Set LaTeX preamble.

Referenced by ipe::ImlParser::parseStyle().

String ipe::StyleSheet::encoding ( ) const
inline

Return Latex encoding.

void ipe::StyleSheet::setEncoding ( const String enc)
inline

Set Latex encoding.

Referenced by ipe::ImlParser::parseStyle().

const Layout * StyleSheet::layout ( ) const

Return page layout (or 0 if none defined).

References ipe::Layout::isNull().

Referenced by setLayout().

void StyleSheet::setLayout ( const Layout margins)

Set page layout.

References layout().

Referenced by ipe::ImlParser::parseStyle().

const TextPadding * StyleSheet::textPadding ( ) const

Return text object padding (for bbox computation).

References ipe::TextPadding::iLeft.

void StyleSheet::setTextPadding ( const TextPadding pad)

Set padding for text object bbox computation.

Referenced by ipe::ImlParser::parseStyle().

const StyleSheet::TitleStyle * StyleSheet::titleStyle ( ) const

Return title style (or 0 if none defined).

References ipe::StyleSheet::TitleStyle::iDefined.

void StyleSheet::setTitleStyle ( const TitleStyle ts)

Set style of page titles.

Referenced by ipe::ImlParser::parseStyle().

const StyleSheet::PageNumberStyle * StyleSheet::pageNumberStyle ( )

Return page number style.

References ipe::StyleSheet::PageNumberStyle::iDefined.

void StyleSheet::setPageNumberStyle ( const PageNumberStyle pns)

Set style of page numbering.

Referenced by ipe::ImlParser::parseStyle().

void StyleSheet::addCMap ( String  s)

Add font s to list of fonts with cmap generation.

Referenced by ipe::ImlParser::parseStyle().

void StyleSheet::allCMaps ( std::vector< String > &  seq) const
void StyleSheet::setLineCap ( TLineCap  s)

Set line cap.

Referenced by ipe::ImlParser::parseStyle().

void StyleSheet::setLineJoin ( TLineJoin  s)

Set line join.

Referenced by ipe::ImlParser::parseStyle().

void StyleSheet::setFillRule ( TFillRule  s)

Set fill rule.

Referenced by ipe::ImlParser::parseStyle().

TLineCap ipe::StyleSheet::lineCap ( ) const
inline

Return line cap.

TLineJoin ipe::StyleSheet::lineJoin ( ) const
inline

Return line join.

TFillRule ipe::StyleSheet::fillRule ( ) const
inline

Return path fill rule.

String ipe::StyleSheet::name ( ) const
inline

Return name of style sheet.

Referenced by setName().

void ipe::StyleSheet::setName ( const String name)
inline

Set name of style sheet.

References name().

Referenced by ipe::ImlParser::parseStyle().


The documentation for this class was generated from the following files:
  • ipestyle.h
  • ipestdstyles.cpp
  • ipestyle.cpp

ipe-7.1.10/build/doc/classipe_1_1_ipelet_helper.html0000644000175000017500000002570012624020245022126 0ustar otfriedotfried Ipelib: ipe::IpeletHelper Class Reference
ipe::IpeletHelper Class Referenceabstract

#include <ipelet.h>

Public Types

enum  {
  EOkButton, EOkCancelButtons, EYesNoCancelButtons, EDiscardCancelButtons,
  ESaveDiscardCancelButtons
}
 

Public Member Functions

virtual ~IpeletHelper ()=0
 
virtual void message (const char *msg)=0
 
virtual int messageBox (const char *text, const char *details, int buttons)=0
 
virtual bool getString (const char *prompt, String &str)=0
 

Detailed Description

Service provider for Ipelets.

C++ Ipelets can ask Ipe to perform various services and request information using this class.

Member Enumeration Documentation

anonymous enum
Enumerator
EOkButton 
EOkCancelButtons 
EYesNoCancelButtons 
EDiscardCancelButtons 
ESaveDiscardCancelButtons 

Constructor & Destructor Documentation

IpeletHelper::~IpeletHelper ( )
pure virtual

Pure virtual destructor.

Member Function Documentation

virtual void ipe::IpeletHelper::message ( const char *  msg)
pure virtual

Show a message in the status bar.

virtual int ipe::IpeletHelper::messageBox ( const char *  text,
const char *  details,
int  buttons 
)
pure virtual

Pop up a modal message box.

The details can be null.

Choose one of EOkButton, EOkCancelButtons, EYesNoCancelButtons, EDiscardCancelButtons, ESaveDiscardCancelButtons for buttons.

Returns 1 for Ok or Yes, 0 for No, -1 for Cancel.

virtual bool ipe::IpeletHelper::getString ( const char *  prompt,
String str 
)
pure virtual

Pop up a modal dialog asking the user to enter a string. Returns true if the user didn't cancel the dialog.


The documentation for this class was generated from the following files:
  • ipelet.h
  • ipeutils.cpp

ipe-7.1.10/build/doc/classipe_1_1_pdf_null-members.html0000644000175000017500000001306012624020245022534 0ustar otfriedotfried Ipelib: Member List
ipe::PdfNull Member List

This is the complete list of members for ipe::PdfNull, including all inherited members.

array() const ipe::PdfObjvirtual
boolean() const ipe::PdfObjvirtual
dict() const ipe::PdfObjvirtual
name() const ipe::PdfObjvirtual
null() const ipe::PdfNullvirtual
number() const ipe::PdfObjvirtual
PdfNull()ipe::PdfNullinlineexplicit
ref() const ipe::PdfObjvirtual
repr() const ipe::PdfObj
string() const ipe::PdfObjvirtual
write(Stream &stream) const ipe::PdfNullvirtual
~PdfObj()=0ipe::PdfObjpure virtual

ipe-7.1.10/build/doc/namespacemembers.html0000644000175000017500000003770012624020245020274 0ustar otfriedotfried Ipelib: Namespace Members
Here is a list of all namespace members with links to the namespace documentation for each member:

- a -

  • abs() : ipe
  • AttributeSeq : ipe

- e -

  • EAlignBaseline : ipe
  • EAlignBottom : ipe
  • EAlignHCenter : ipe
  • EAlignLeft : ipe
  • EAlignRight : ipe
  • EAlignTop : ipe
  • EAlignVCenter : ipe
  • EAngleSize : ipe
  • EArrowSize : ipe
  • EBevelJoin : ipe
  • EButtCap : ipe
  • EColor : ipe
  • EDashStyle : ipe
  • EDefaultCap : ipe
  • EDefaultJoin : ipe
  • EDefaultRule : ipe
  • EEffect : ipe
  • EEvenOddRule : ipe
  • EFilledOnly : ipe
  • EFixedPin : ipe
  • EGradient : ipe
  • EGridSize : ipe
  • EHorizontalPin : ipe
  • EMiterJoin : ipe
  • ENoPin : ipe
  • ENotSelected : ipe
  • EOpacity : ipe
  • EPen : ipe
  • EPrimarySelected : ipe
  • EPropDashStyle : ipe
  • EPropFArrow : ipe
  • EPropFArrowShape : ipe
  • EPropFArrowSize : ipe
  • EPropFillColor : ipe
  • EPropFillRule : ipe
  • EPropGradient : ipe
  • EPropHorizontalAlignment : ipe
  • EPropLineCap : ipe
  • EPropLineJoin : ipe
  • EPropMarkShape : ipe
  • EPropMinipage : ipe
  • EPropOpacity : ipe
  • EPropPathMode : ipe
  • EPropPen : ipe
  • EPropPinned : ipe
  • EPropRArrow : ipe
  • EPropRArrowShape : ipe
  • EPropRArrowSize : ipe
  • EPropStrokeColor : ipe
  • EPropSymbolSize : ipe
  • EPropTextSize : ipe
  • EPropTextStyle : ipe
  • EPropTiling : ipe
  • EPropTransformableText : ipe
  • EPropTransformations : ipe
  • EPropVerticalAlignment : ipe
  • EPropWidth : ipe
  • ERoundCap : ipe
  • ERoundJoin : ipe
  • ESecondarySelected : ipe
  • ESquareCap : ipe
  • EStrokedAndFilled : ipe
  • EStrokedOnly : ipe
  • ESymbol : ipe
  • ESymbolSize : ipe
  • ETextSize : ipe
  • ETextStretch : ipe
  • ETextStyle : ipe
  • ETiling : ipe
  • ETransformationsAffine : ipe
  • ETransformationsRigidMotions : ipe
  • ETransformationsTranslations : ipe
  • EVerticalPin : ipe
  • EWindRule : ipe

- f -

  • FILE_FORMAT : ipe

- i -

  • IPELIB_VERSION : ipe
  • IpeQ() : ipe

- k -

- m -

- o -

  • OLDEST_FILE_FORMAT : ipe

- p -

  • Property : ipe
  • property_names : ipe

- q -

- t -

  • TFillRule : ipe
  • THorizontalAlignment : ipe
  • TLineCap : ipe
  • TLineJoin : ipe
  • TPathMode : ipe
  • TPinned : ipe
  • TSelect : ipe
  • TTransformations : ipe
  • TVerticalAlignment : ipe

ipe-7.1.10/build/doc/classipe_1_1_pdf_bool-members.html0000644000175000017500000001353412624020245022523 0ustar otfriedotfried Ipelib: Member List
ipe::PdfBool Member List

This is the complete list of members for ipe::PdfBool, including all inherited members.

array() const ipe::PdfObjvirtual
boolean() const ipe::PdfBoolvirtual
dict() const ipe::PdfObjvirtual
name() const ipe::PdfObjvirtual
null() const ipe::PdfObjvirtual
number() const ipe::PdfObjvirtual
PdfBool(bool val)ipe::PdfBoolinlineexplicit
ref() const ipe::PdfObjvirtual
repr() const ipe::PdfObj
string() const ipe::PdfObjvirtual
value() const ipe::PdfBoolinline
write(Stream &stream) const ipe::PdfBoolvirtual
~PdfObj()=0ipe::PdfObjpure virtual

ipe-7.1.10/build/doc/lua-ipelets.html0000644000175000017500000001133312624020245017203 0ustar otfriedotfried Ipelib: Ipelets written in Lua
Ipelets written in Lua

Ipelets written in Lua have access to the entire Ipe user interface, and can in principle do anything that Ipe can do.

An ipelet is a Lua script that is placed in Ipe's ipelet directory.

The script needs to define three global variables, namely label, about, and either run or methods (or both).

  • label is a string containing the label (that is, the name) of the ipelet. It is shown in the Ipelet menu.
  • about is a string containing an 'about' or copyright notice for the ipelet. Ipe displays this in the "About the ipelets" box.
  • run is used if the ipelet contains only a single method. When the ipelet is invoked, the function run is called by Lua.
  • methods is used if the ipelet contains more than one method. It is an array with an entry for each method. Each entry is a table with keys label (defining the label of the method) and run (a Lua function that will be called by Ipe to execute this method). If an entry does not have a run field, then the global run method is called instead.

If an ipelet defines no label variable, then the ipelet is not added to the Ipelet menu. Such ipelets can be used to customize Ipe.

When Ipe invokes an ipelet, the Lua method is called with two arguments: the first argument model is the active Ipe user interface, the second is the index of the method being invoked.

The "global" environment of the ipelet is a private environment for this ipelet only, so there is no need to fear polluting the global namespace - you can use names here freely. The commonly used names have been imported from Ipe's global namespace already, and you can access any others you may need through _G.

It is important that the ipelet does not directly modify the document. This would mess up the undo stack, and could cause Ipe to crash on undo or redo. Instead, to modify the document the ipelet needs to create an undo item t and call model:register(t).

If all the ipelet does is to create a new object obj, then it can simply call

model:creation("create new object", obj)

The following are some useful methods and data structures:

model.doc     -- the document
model.pno     -- current page number
model.vno     -- current view number

model:page()  -- returns current page

model:register(t) -- register undo item and execute its redo method
model:creation("label", obj)  -- register undo item for object creation

model:warning(text, details)  -- display a warning box

model.attributes   -- attributes currently set in user interface
model.snap         -- currently active snap settings

Look at the existing ipelets for inspiration.


ipe-7.1.10/build/doc/closed.png0000644000175000017500000000020412624020245016043 0ustar otfriedotfried‰PNG  IHDR à‘KIDATxíÝm @!†ÑGk™É7À-`&séts¦Àñþòð@åk}ª2€… P%Á_Ëþ¿N² .:0Dk¥‹Â›x" Ö›)¡xÒ5õIEND®B`‚ipe-7.1.10/build/doc/namespaceipe.html0000644000175000017500000015023112624020245017412 0ustar otfriedotfried Ipelib: ipe Namespace Reference
ipe Namespace Reference

Classes

class  A85Source
 
class  A85Stream
 
class  AllAttributes
 
class  Angle
 
class  Arc
 
class  Attribute
 
class  Base64Source
 
class  Base64Stream
 
class  BBoxPainter
 
class  Bezier
 
class  Bitmap
 
class  BitmapFinder
 
class  Buffer
 
class  BufferSource
 
class  CairoPainter
 
class  Canvas
 
class  CanvasBase
 
class  CanvasObserver
 
class  Cascade
 
class  ClosedSpline
 
class  Color
 
class  Curve
 
class  CurveSegment
 
class  DataSource
 
class  DeflateStream
 
class  Document
 
class  Effect
 
class  Ellipse
 
class  Face
 
class  FileSource
 
class  FileStream
 
class  Fixed
 
struct  Font
 
class  Fonts
 
struct  Gradient
 
class  Group
 
class  Image
 
class  ImlParser
 
class  InflateSource
 
class  Ipelet
 
struct  IpeletData
 
class  IpeletHelper
 
class  Latex
 
struct  Layout
 
class  Lex
 
class  Line
 
class  Linear
 
class  Matrix
 
class  Object
 
class  ObjectFactory
 
class  Page
 
class  PageSelector
 
class  Painter
 
class  PanTool
 
class  Path
 
class  PdfArray
 
class  PdfBool
 
class  PdfDict
 
class  PdfFile
 
class  PdfName
 
class  PdfNull
 
class  PdfNumber
 
class  PdfObj
 
class  PdfPainter
 
class  PdfParser
 
class  PdfRef
 
class  PdfString
 
struct  PdfToken
 
class  PdfWriter
 
class  Platform
 
class  PsPainter
 
class  PsWriter
 
class  Rect
 
class  Reference
 
class  Repository
 
class  Segment
 
class  SelectTool
 
class  Shape
 
class  Snap
 
class  Stream
 
class  String
 
class  StringStream
 
class  StyleSheet
 
class  SubPath
 
class  Symbol
 
class  TellStream
 
class  Text
 
struct  TextPadding
 
class  Thumbnail
 
struct  Tiling
 
class  Tool
 
class  TransformTool
 
class  Vector
 
class  Visitor
 
class  XmlAttributes
 
class  XmlParser
 

Typedefs

typedef std::vector< AttributeAttributeSeq
 

Enumerations

enum  Kind {
  EPen = 0, ESymbolSize, EArrowSize, EColor,
  EDashStyle, ETextSize, ETextStretch, ETextStyle,
  EGridSize, EAngleSize, EOpacity, ETiling,
  ESymbol, EGradient, EEffect
}
 
enum  Property {
  EPropPen = 0, EPropSymbolSize, EPropFArrow, EPropRArrow,
  EPropFArrowSize, EPropRArrowSize, EPropFArrowShape, EPropRArrowShape,
  EPropStrokeColor, EPropFillColor, EPropMarkShape, EPropPathMode,
  EPropDashStyle, EPropTextSize, EPropTextStyle, EPropOpacity,
  EPropTiling, EPropGradient, EPropHorizontalAlignment, EPropVerticalAlignment,
  EPropLineJoin, EPropLineCap, EPropFillRule, EPropPinned,
  EPropTransformations, EPropTransformableText, EPropMinipage, EPropWidth
}
 
enum  TPathMode { EStrokedOnly, EStrokedAndFilled, EFilledOnly }
 
enum  THorizontalAlignment { EAlignLeft, EAlignRight, EAlignHCenter }
 
enum  TVerticalAlignment { EAlignBottom, EAlignBaseline, EAlignTop, EAlignVCenter }
 
enum  TLineJoin { EDefaultJoin, EMiterJoin, ERoundJoin, EBevelJoin }
 
enum  TLineCap { EDefaultCap, EButtCap, ERoundCap, ESquareCap }
 
enum  TFillRule { EDefaultRule, EWindRule, EEvenOddRule }
 
enum  TPinned { ENoPin = 0x00, EHorizontalPin = 0x01, EVerticalPin = 0x02, EFixedPin = 0x03 }
 
enum  TTransformations { ETransformationsTranslations, ETransformationsRigidMotions, ETransformationsAffine }
 
enum  TSelect { ENotSelected = 0, EPrimarySelected, ESecondarySelected }
 

Functions

template<class T >
max (const T &lhs, const T &rhs)
 
template<class T >
min (const T &lhs, const T &rhs)
 
double abs (double val)
 
QPointF QPt (const Vector &v)
 
String IpeQ (const QString &str)
 
QString QIpe (const String &str)
 
QColor QIpe (Color color)
 
Color IpeQ (QColor color)
 

Variables

const char *const kind_names []
 
const char *const property_names []
 
const int IPELIB_VERSION = 70110
 
const int OLDEST_FILE_FORMAT = 70000
 
const int FILE_FORMAT = 70107
 

Function Documentation

QPointF ipe::QPt ( const Vector &  v)
inline

References ipe::Vector::x, and ipe::Vector::y.

String ipe::IpeQ ( const QString &  str)
inline
QString ipe::QIpe ( const String &  str)
inline

References ipe::String::z().

QColor ipe::QIpe ( Color  color)
inline
Color ipe::IpeQ ( QColor  color)
inline

ipe-7.1.10/build/doc/manual_16.html0000644000175000017500000002700312624020245016543 0ustar otfriedotfried Ipe Manual -- 4.1 Path objects
4.2 Text objects4 Object types4.1 Path objects

4.1 Path objects

Path objects are defined by a set of subpaths, that is, curves in the plane. Each subpath is either open or closed, and consists of straight line segments, circular or elliptic arc segments, parabola segments (or, equivalently, quadratic Bézier splines), cubic Bézier splines, and cubic B-spline segments. The curves are drawn with the stroke color, dash style, and line width; the interior of the object specified is filled using the fill color.

The distinction between open and closed subpaths is meaningful for stroking only, for filling any open subpath is implicitely closed. Stroking a set of subpaths is identical to stroking them individually. This is not true for filling: using several subpaths, one can construct objects with holes, and more complicated pattern. The filling algorithm is normally the even-odd rule of Postscript/PDF: To determine whether a point lies inside the filled shape, draw a ray from that point in any direction, and count the number of path segments that cross the ray. If this number is odd, the point is inside; if even, the point is outside.

Ipe can draw arrows on the first and last segment of a path object, but only if that segment is part of an open subpath.

There are several Ipe modes that create path objects in different ways. All modes create an object consisting of a single subpath only. To make more complicated path objects, such as objects with holes, you create each boundary component separately, then select them all and use the Compose paths function in the Edit menu. The reverse operation is Decompose path, you find it in the context menu of a path object that has several subpaths.

You can also create complicated paths by joining curves sequentially. For this to work, the endpoint of one path must be (nearly) identical to the begin point of the next—easy to achieve using snapping. You select the path objects you wish to join, and call Join paths in the Edit menu. You can also join several open path objects into a single closed path this way.

Circles can be entered in three different ways. To create an ellipse, create a circle and stretch and rotate it. Circular arcs can be entered by clicking three points on the arc or by clicking the center of the supporting circle as well as the begin and end vertex of the arc. They can be filled in Postscript fashion, and can have arrows. You can stretch a circular arc to create an elliptic arc.

A common application for arcs is to mark angles in drawings. The snap keys are useful to create such arcs: set arc creation to center & 2 pts, select snap to vertex and snap to boundary, click first on the center point of the angle (which is magnetic) and click then on the two bounding lines.

There are two modes for creating more complex general path objects. The difference between line mode and polygon mode is that the first creates an open path, the latter generates a closed one. As a consequence, the line mode uses the current arrow settings, while the polygon mode doesn't. The path object created using line or polygon mode consists of segments of various types. The initial setting is to create straight segments. By holding the shift-key when pressing the left mouse button one can switch to uniform B-splines. One can also add quadratic Bézier spline segments, cubic Bézier spline segments, and circular arc segments as follows:

To add a quadratic Bézier spline (that is, a parabola), click twice in polyline mode for the first two control points. Then press the q key and click on the third (last) control point.

Similarly, to add a cubic Bézier spline, click three times in polyline mode on the first three control points. Press the c key, and click on the last control point.

Circular arcs can be added as follows: Click twice in polyline mode, once on the starting point of the arc, then on a point in the correct tangent direction. Press the a key, and click on the endpoint of the arc.

To make curves where segments of different type are joined with identical tangents, you can press the y key whenever you are starting a new segment: this will set the coordinate system centered at the starting point of the segment, and aligned with the tangent to the previous segment.

For the mathematically inclined, a more precise description of the segments that can appear on a subpath follows. More details can be found in Foley et al.2 and other text books on splines.

A subpath consists of a sequence of segments. Each segment is either a straight line segment, an elliptic arc, a quadratic Bézier spline, a cubic Bézier spline, or a uniform cubic B-spline.

The quadratic Bézier spline defined by control points p0, p1, and p2, is the curve

P(t) = (1-t)2 p0 + 2t(1-t) p1 + t2 p2,
where t ranges from 0 to 1. This implies that it starts in p0 tangent to the line p0p1, ends in p2 tangent to the line p1p2, and is contained in the convex hull of the three points. Any segment of any parabola can be expressed as a quadratic Bézier spline.

For instance, the piece of the unit parabola y = x2 between x=a and x=b can be created with the control points

p0 = (a, a2)
p1 = ( (a + b)/(2), ab)
p2 = (b, b2)
Any piece of any parabola can be created by applying some affine transformation to these points.

The cubic Bézier spline with control points p0, p1, p2, and p3 is the curve

R(t) = (1-t)3p0 + 3t(1-t)2 p1 + 3 t2(1-t) p2 + t3 p3.
It starts in p0 being tangent to the line p0p1, ends in p3 being tangent to the line p2p3, and lies in the convex hull of the four control points.

Uniform cubic B-splines approximate a series of m+1 control points p0, p1, …, pm, m ≥ 3, with a curve consisting of m-2 cubic polynomial curve segments s0, s1, …, sm-3. Every such curve segment is defined by four of the control points. In fact, curve segment si is defined by the points pi, pi+1, pi+2, and pi+3. If the curve is closed (a splinegon), it contains three additional curve segments sm-2, sm-1, and sm, defined by appending p0, p1, and p2 to the end of the sequence. A uniform B-spline segment on an open subpath of an Ipe path object is defined by repeating both the first and last control point three times, so as to make the segment begin and end in these points.

The segment si is the cubic curve segment with the following parametrization.

Q(t) = ((1-t)3)/(6) pi + (3t3 -6t2 + 4)/(6) pi+1 + (-3t3 + 3t2 + 3t +1)/(6) pi+2 + (t3)/(6) pi+3,
where t ranges from 0 to 1.

Since the point Q(t) is a convex combination of the four control points, the curve segment si lies in the convex hull of pi to pi+3. Furthermore, it follows that any affine transformation can be applied to the curve by applying it to the control points. Note that a control point pi has influence on only four curve segments, si-3, si-2, si-1, and si. Thus, when you edit a spline object and move a control point, only a short piece of the spline in the neighborhood of the control point will move.

ipe-7.1.10/build/doc/functions_func.html0000644000175000017500000003241112624020245020002 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- a -


ipe-7.1.10/build/doc/classipe_1_1_base64_stream.html0000644000175000017500000003130012624020245021735 0ustar otfriedotfried Ipelib: ipe::Base64Stream Class Reference
ipe::Base64Stream Class Reference

#include <ipeutils.h>

Inherits ipe::Stream.

Public Member Functions

 Base64Stream (Stream &stream)
 
virtual void putChar (char ch)
 
virtual void close ()
 
- Public Member Functions inherited from ipe::Stream
virtual ~Stream ()
 
virtual void putString (String s)
 
virtual void putCString (const char *s)
 
virtual void putRaw (const char *data, int size)
 
Streamoperator<< (char ch)
 
Streamoperator<< (const String &s)
 
Streamoperator<< (const char *s)
 
Streamoperator<< (int i)
 
Streamoperator<< (double d)
 
void putHexByte (char b)
 
void putXmlString (String s)
 

Detailed Description

Filter stream adding Base64 encoding.

Constructor & Destructor Documentation

Base64Stream::Base64Stream ( Stream stream)

Member Function Documentation

void Base64Stream::putChar ( char  ch)
virtual

Output character.

Implements ipe::Stream.

References ipe::Stream::putChar(), and ipe::Stream::putCString().

Referenced by ipe::Bitmap::saveAsXml().

void Base64Stream::close ( )
virtual

Close the stream. No more writing allowed!

Reimplemented from ipe::Stream.

References ipe::Stream::close(), and ipe::Stream::putCString().

Referenced by ipe::Bitmap::saveAsXml().


The documentation for this class was generated from the following files:
  • ipeutils.h
  • ipeutils.cpp

ipe-7.1.10/build/doc/classipe_1_1_style_sheet-members.html0000644000175000017500000003222312624020245023263 0ustar otfriedotfried Ipelib: Member List
ipe::StyleSheet Member List

This is the complete list of members for ipe::StyleSheet, including all inherited members.

add(Kind kind, Attribute name, Attribute value)ipe::StyleSheet
addCMap(String s)ipe::StyleSheet
addEffect(Attribute name, const Effect &e)ipe::StyleSheet
addGradient(Attribute name, const Gradient &s)ipe::StyleSheet
addSymbol(Attribute name, const Symbol &symbol)ipe::StyleSheet
addTiling(Attribute name, const Tiling &s)ipe::StyleSheet
allCMaps(std::vector< String > &seq) const ipe::StyleSheet
allNames(Kind kind, AttributeSeq &seq) const ipe::StyleSheet
encoding() const ipe::StyleSheetinline
fillRule() const ipe::StyleSheetinline
find(Kind, Attribute sym) const ipe::StyleSheet
findEffect(Attribute sym) const ipe::StyleSheet
findGradient(Attribute sym) const ipe::StyleSheet
findSymbol(Attribute sym) const ipe::StyleSheet
findTiling(Attribute sym) const ipe::StyleSheet
has(Kind kind, Attribute sym) const ipe::StyleSheet
isStandard() const ipe::StyleSheetinline
layout() const ipe::StyleSheet
lineCap() const ipe::StyleSheetinline
lineJoin() const ipe::StyleSheetinline
name() const ipe::StyleSheetinline
pageNumberStyle()ipe::StyleSheet
preamble() const ipe::StyleSheetinline
remove(Kind kind, Attribute sym)ipe::StyleSheet
saveAsXml(Stream &stream, bool saveBitmaps=false) const ipe::StyleSheet
setEncoding(const String &enc)ipe::StyleSheetinline
setFillRule(TFillRule s)ipe::StyleSheet
setLayout(const Layout &margins)ipe::StyleSheet
setLineCap(TLineCap s)ipe::StyleSheet
setLineJoin(TLineJoin s)ipe::StyleSheet
setName(const String &name)ipe::StyleSheetinline
setPageNumberStyle(const PageNumberStyle &pns)ipe::StyleSheet
setPreamble(const String &str)ipe::StyleSheetinline
setTextPadding(const TextPadding &pad)ipe::StyleSheet
setTitleStyle(const TitleStyle &ts)ipe::StyleSheet
standard()ipe::StyleSheetstatic
StyleSheet()ipe::StyleSheet
textPadding() const ipe::StyleSheet
titleStyle() const ipe::StyleSheet

ipe-7.1.10/build/doc/functions_func_q.html0000644000175000017500000001062412624020245020324 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- q -


ipe-7.1.10/build/doc/manual_49.html0000644000175000017500000001067712624020245016562 0ustar otfriedotfried Ipe Manual -- 12.2 Environment variables
12 Command line options and environment variables12.1 Command line options12.2 Environment variables

12.2 Environment variables

Ipe, ipetoipe, and iperender respect the following environment variables:

IPELATEXDIR
the directory where Ipe runs Pdflatex.
IPEFONTMAP
the complete path of the font map, describing where Ipe can find the 14 standard pdf fonts.
IPEDEBUG
set to 1 for debugging output.
IPEANCIENTPDFTEX
set this variable to use Pdftex versions older than 1.40.

The Ipe program uses several additional environment variables:

EDITOR
external editor to use for editing text objects.
IPESTYLES
a list of directories, separated by semicolons on Windows and colons otherwise, where Ipe looks for stylesheets, for instance for the standard stylesheet basic.isy. You can write _ (a single underscore) for the system-wide stylesheet directory. If this variable is not set, the default consists of the system-wide stylesheet directory, plus ~/.ipe/styles on Unix, plus ~/Library/Ipe/Styles on OS X.
IPELETPATH
a list of directories, separated by semicolons on Windows and colons otherwise, containing ipelets. You can write _ (a single underscore) for the system-wide ipelet directory. If this variable is not set, the default consists of the system-wide ipelet directory, plus ~/.ipe/ipelets on Unix, plus ~/Library/Ipe/Ipelets on OS X.
IPEICONDIR
directory containing icons for the Ipe user interface.
IPEDOCDIR
directory containing Ipe documentation.
IPELUAPATH
path for searching for Ipe Lua code.
ipe-7.1.10/build/doc/classipe_1_1_line.html0000644000175000017500000004376512624020245020247 0ustar otfriedotfried Ipelib: ipe::Line Class Reference

#include <ipegeo.h>

Public Member Functions

 Line ()
 
 Line (const Vector &p, const Vector &dir)
 
double side (const Vector &p) const
 
Vector normal () const
 
double distance (const Vector &v) const
 
bool intersects (const Line &line, Vector &pt)
 
Vector project (const Vector &v) const
 
Vector dir () const
 

Static Public Member Functions

static Line through (const Vector &p, const Vector &q)
 

Public Attributes

Vector iP
 

Detailed Description

A directed line.

Constructor & Destructor Documentation

ipe::Line::Line ( )
inlineexplicit

Create default line (x-axis).

Referenced by through().

Line::Line ( const Vector p,
const Vector dir 
)
explicit

Construct a line from p with direction dir.

Asserts unit length of dir.

References dir(), iP, and ipe::Vector::sqLen().

Member Function Documentation

Line Line::through ( const Vector p,
const Vector q 
)
static

Construct a line through two points.

References Line().

Referenced by ipe::Bezier::straight().

double Line::side ( const Vector p) const

Result is > 0, = 0, < 0 if point lies to the left, on, to the right.

References iP, and normal().

Referenced by ipe::Bezier::intersect().

Vector ipe::Line::normal ( ) const
inline

Return a normal vector pointing to the left of the directed line.

References ipe::Vector::x, and ipe::Vector::y.

Referenced by side().

double Line::distance ( const Vector v) const

Returns distance between line and v.

References iP, and ipe::Vector::len().

Referenced by ipe::Bezier::straight().

bool Line::intersects ( const Line line,
Vector pt 
)

Does this line intersect line? If so, computes intersection point.

References iP.

Referenced by ipe::Snap::snap().

Vector Line::project ( const Vector v) const

Orthogonally project point v onto the line.

References iP.

Referenced by ipe::Snap::setEdge(), and ipe::Snap::snap().

Vector ipe::Line::dir ( ) const
inline

Return direction of line.

Referenced by ipe::Arc::intersect(), Line(), and ipe::Snap::setEdge().

Member Data Documentation

Vector ipe::Line::iP

Point on the line.

Referenced by distance(), ipe::Arc::intersect(), intersects(), Line(), project(), and side().


The documentation for this class was generated from the following files:
  • ipegeo.h
  • ipegeo.cpp

ipe-7.1.10/build/doc/index.html0000644000175000017500000002223412624020245016070 0ustar otfriedotfried Ipelib: The Ipe library documentation
The Ipe library documentation

The Ipe library ("Ipelib") provides the geometric primitives and implements all the geometric objects that appear in Ipe. Many tasks related to modifying an Ipe document are actually performed by Ipelib. For instance, the ipetoipe program consists of only a few calls to Ipelib.

Ipelib can easily be used by C++ programs to read, write, and modify Ipe documents. Compiling Ipelib is easy, it requires only the standard C++ library (including the STL), and the zlib compression library. Nearly all symbols in Ipelib are in the ipe namespace, those that aren't start with the letters "Ipe".

Many of the Ipelib classes are also made available as Lua objects. Programming in Lua describes the Lua bindings to Ipelib, to ipeui, and to the Ipe program itself. The Ipe program itself is mostly written in Lua and uses these Lua bindings.

All filenames passed to Ipelib are assumed to be in the local system's encoding. All Lua strings are assumed to be UTF-8 (filenames are converted by the ipelua bindings).

Ipelets explains how to write ipelets, that is, extensions to Ipe. Ipelets are either written in Lua or in C++ (using a small Lua wrapper to describe the ipelet). C++ ipelets have to be linked with Ipelib to access and modify Ipe objects.

The classes documented here are implemented in five different libraries:

  • libipe is the core Ipelib library. It implements geometric primitives, Ipe objects, and the Ipe document. However, it doesn't know anything about drawing to the screen or about the Lua bindings.
  • libipecairo implements the Ipe cairo module. It provides drawing of Ipe objects using the Cairo library.
  • libipelua implements the Lua bindings for Ipelib. If installed properly, it can be loaded dynamically from Lua using require. It is also used by ipescript.
  • libipecanvas implements the Ipe canvas module. It provides a widget for displaying and editing Ipe objects.
  • libipeui implements Lua bindings for user interfaces. This library does not depend on any other Ipe component, and can be used for other Lua projects.

Here is an annotated list of the modules:

Finally, here is list of the pages describing Lua bindings:


ipe-7.1.10/build/doc/functions_func_n.html0000644000175000017500000001436412624020245020326 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- n -


ipe-7.1.10/build/doc/functions_l.html0000644000175000017500000001774012624020245017312 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- l -


ipe-7.1.10/build/doc/functions_func_i.html0000644000175000017500000002336312624020245020320 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- i -


ipe-7.1.10/build/doc/manual_29.html0000644000175000017500000001204212624020245016544 0ustar otfriedotfried Ipe Manual -- 7.1 Presentation stylesheets
7.2 Views7 Presentations7.1 Presentation stylesheets

7.1 Presentation stylesheets

A presentation must use a dedicated stylesheet. Presentations must use much larger fonts than what is normal for a figure. Don't try to make use of the "LARGE" and "huge" textsizes, but use a stylesheet that properly defines "normal" to be a large textsize.

Ipe comes with a style sheet presentation.isy that can be used for presentations. To create a new presentation, you can simply say:

 
  ipe -sheet presentation
Note that presentation.isy is meant to be used instead of basic.isy (not in addition to it).

This presentation stylesheet enlarges all standard sizes by a factor 2.8. Note the use of the <textstretch> element to magnify text:

<textstretch name="normal" value="2.8"/>
<textstretch name="large" value="2.8"/>
The text size you choose from the Ipe user interface ("large", for instance) is in fact used for two symbolic attributes, namely textsize (where large maps to \large) and textstretch (where it maps to no stretch in the standard style sheet). By setting the text stretch, you can magnify fonts.

In addition, the <layout> element in this stylesheet redefines the paper size to be of the correct proportions for a projector, and defines a smaller area of the paper as the frame. The frame is the area that should be used for the contents. The Insert text box function, for instance, creates text objects that fill exactly the width of the frame.

The <titlestyle> element defines the style of the page title outside the frame. You can set the title for each page using the Edit title & sections function in the Page menu.

The LaTeX-preamble defined in the <preamble> element redefines the standard font shape to cmss (Computer Modern Sans Serif). Many people find sans-serif fonts easier to read on a screen. In addition, it redefines the list environments to use less spacing, and the text styles to not justify paragraphs (the <textstyle> elements).

If you wish to use the page transition effects of Acrobat Reader, you can define the effects in the stylesheet (using <effect> elements), and set them using Edit effect in the View menu.

ipe-7.1.10/build/doc/classipe_1_1_file_stream-members.html0000644000175000017500000001460012624020245023224 0ustar otfriedotfried Ipelib: Member List
ipe::FileStream Member List

This is the complete list of members for ipe::FileStream, including all inherited members.

close()ipe::Streamvirtual
FileStream(std::FILE *file)ipe::FileStream
operator<<(char ch)ipe::Streaminline
operator<<(const String &s)ipe::Streaminline
operator<<(const char *s)ipe::Streaminline
operator<<(int i)ipe::Stream
operator<<(double d)ipe::Stream
putChar(char ch)ipe::FileStreamvirtual
putCString(const char *s)ipe::FileStreamvirtual
putHexByte(char b)ipe::Stream
putRaw(const char *data, int size)ipe::FileStreamvirtual
putString(String s)ipe::FileStreamvirtual
putXmlString(String s)ipe::Stream
tell() const ipe::FileStreamvirtual
~Stream()ipe::Streamvirtual

ipe-7.1.10/build/doc/classipe_1_1_latex.html0000644000175000017500000004351712624020245020430 0ustar otfriedotfried Ipelib: ipe::Latex Class Reference
ipe::Latex Class Reference

#include <ipelatex.h>

Public Member Functions

 Latex (const Cascade *sheet)
 
 ~Latex ()
 
int scanObject (const Object *obj)
 
int scanPage (Page *page)
 
int createLatexSource (Stream &stream, String preamble)
 
bool readPdf (DataSource &source)
 
bool updateTextObjects ()
 
FontPool * takeFontPool ()
 

Friends

class ipe::TextCollectingVisitor
 

Detailed Description

Object that converts latex source to PDF format.

This object is responsible for creating the PDF representation of text objects.

Constructor & Destructor Documentation

Latex::Latex ( const Cascade sheet)

Create a converter object.

Latex::~Latex ( )

Destructor.

Member Function Documentation

int Latex::scanObject ( const Object obj)

Scan an object and insert all text objects into Latex's list. Returns total number of text objects found so far.

References ipe::Object::accept().

Referenced by ipe::Document::runLatex().

int Latex::scanPage ( Page page)

Scan a page and insert all text objects into Latex's list. Returns total number of text objects found so far.

References ipe::Object::accept(), ipe::Text::accept(), ipe::Page::applyTitleStyle(), ipe::Page::count(), ipe::Page::invalidateBBox(), ipe::Page::object(), and ipe::Page::titleText().

Referenced by ipe::Document::runLatex().

int Latex::createLatexSource ( Stream stream,
String  preamble 
)

Create a Latex source file with all the text objects collected before. The client should have prepared a directory for the Pdflatex run, and pass the name of the Latex source file to be written by Latex.

Returns the number of text objects that did not yet have an XForm, or a negative error code.

References ipe::abs(), ipe::Cascade::allNames(), ipe::Attribute::color(), ipe::EColor, ipe::ETextSize, ipe::ETextStretch, ipe::ETextStyle, ipe::Cascade::find(), ipe::Cascade::findPreamble(), ipe::Text::getXForm(), ipe::Color::iBlue, ipe::Color::iGreen, ipe::Color::iRed, ipe::Color::isGray(), ipe::Text::isMinipage(), ipe::Attribute::isNumber(), ipe::Fixed::mult(), ipe::Attribute::number(), ipe::String::size(), ipe::Attribute::string(), ipe::Text::style(), ipe::String::substr(), ipe::Text::text(), ipe::Fixed::toDouble(), ipe::String::unicode(), and ipe::Text::width().

Referenced by ipe::Document::runLatex().

bool Latex::readPdf ( DataSource source)

Read the PDF file created by Pdflatex.

Must have performed the call to Pdflatex, and pass the name of the resulting output file.

References ipe::PdfDict::count(), ipe::PdfObj::dict(), ipe::PdfDict::get(), ipe::PdfDict::key(), ipe::PdfFile::page(), and ipe::PdfFile::parse().

Referenced by ipe::Document::runLatex().

bool Latex::updateTextObjects ( )

Notify all text objects about their updated PDF code.

Returns true if successful.

Referenced by ipe::Document::runLatex().

FontPool * Latex::takeFontPool ( )

Return the newly created font pool and pass ownership of pool to caller.

Referenced by ipe::Document::runLatex().

Friends And Related Function Documentation

friend class ipe::TextCollectingVisitor
friend

The documentation for this class was generated from the following files:
  • ipelatex.h
  • ipelatex.cpp

ipe-7.1.10/build/doc/dynsections.js0000644000175000017500000000610412624020245016771 0ustar otfriedotfriedfunction toggleVisibility(linkObj) { var base = $(linkObj).attr('id'); var summary = $('#'+base+'-summary'); var content = $('#'+base+'-content'); var trigger = $('#'+base+'-trigger'); var src=$(trigger).attr('src'); if (content.is(':visible')===true) { content.hide(); summary.show(); $(linkObj).addClass('closed').removeClass('opened'); $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); } else { content.show(); summary.hide(); $(linkObj).removeClass('closed').addClass('opened'); $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); } return false; } function updateStripes() { $('table.directory tr'). removeClass('even').filter(':visible:even').addClass('even'); } function toggleLevel(level) { $('table.directory tr').each(function() { var l = this.id.split('_').length-1; var i = $('#img'+this.id.substring(3)); var a = $('#arr'+this.id.substring(3)); if (l Ipelib: Member List
ipe::Painter::State Member List

ipe-7.1.10/build/doc/functions_s.html0000644000175000017500000007152512624020245017322 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- s -


ipe-7.1.10/build/doc/structipe_1_1_gradient.html0000644000175000017500000003025012624020245021315 0ustar otfriedotfried Ipelib: ipe::Gradient Struct Reference

#include <ipeattributes.h>

Classes

struct  Stop
 

Public Types

enum  TType { EAxial = 2, ERadial = 3 }
 

Public Attributes

TType iType
 
Vector iV [2]
 
double iRadius [2]
 
bool iExtend
 
Matrix iMatrix
 
std::vector< StopiStops
 

Detailed Description

A gradient pattern.

Member Enumeration Documentation

There are two types of gradients, along an axis or between two circles.

Enumerator
EAxial 
ERadial 

Member Data Documentation

TType ipe::Gradient::iType

The type of gradient: axial or radial.

Referenced by ipe::CairoPainter::doDrawPath(), ipe::ImlParser::parseStyle(), and ipe::StyleSheet::saveAsXml().

Vector ipe::Gradient::iV[2]

The coordinates of the axis endpoints, or the two circle centers.

Referenced by ipe::CairoPainter::doDrawPath(), ipe::ImlParser::parseStyle(), and ipe::StyleSheet::saveAsXml().

double ipe::Gradient::iRadius[2]

The radii of the two circles (not used for axial gradients).

Referenced by ipe::CairoPainter::doDrawPath(), ipe::ImlParser::parseStyle(), and ipe::StyleSheet::saveAsXml().

bool ipe::Gradient::iExtend

Whether to extend the gradient beyond the endpoints.

Referenced by ipe::CairoPainter::doDrawPath(), ipe::ImlParser::parseStyle(), and ipe::StyleSheet::saveAsXml().

std::vector<Stop> ipe::Gradient::iStops

The documentation for this struct was generated from the following file:
  • ipeattributes.h

ipe-7.1.10/build/doc/classipe_1_1_text-members.html0000644000175000017500000006045312624020245021725 0ustar otfriedotfried Ipelib: Member List
ipe::Text Member List

This is the complete list of members for ipe::Text, including all inherited members.

accept(Visitor &visitor) const ipe::Textvirtual
addToBBox(Rect &box, const Matrix &m, bool) const ipe::Textvirtual
align() const ipe::Text
asGroup()ipe::Objectvirtual
asImage()ipe::Objectvirtual
asPath()ipe::Objectvirtual
asReference()ipe::Objectvirtual
asText()ipe::Textvirtual
checkStyle(const Cascade *sheet, AttributeSeq &seq) const ipe::Textvirtual
checkSymbol(Kind kind, Attribute attr, const Cascade *sheet, AttributeSeq &seq)ipe::Objectprotectedstatic
clone() const ipe::Textvirtual
depth() const ipe::Textinline
distance(const Vector &v, const Matrix &m, double bound) const ipe::Textvirtual
draw(Painter &painter) const ipe::Textvirtual
drawSimple(Painter &painter) const ipe::Textvirtual
EGroup enum valueipe::Object
EImage enum valueipe::Object
ELabel enum valueipe::Text
EMinipage enum valueipe::Text
EPath enum valueipe::Object
EReference enum valueipe::Object
EText enum valueipe::Object
getAttribute(Property prop)ipe::Textvirtual
getXForm() const ipe::Textinline
height() const ipe::Textinline
horizontalAlignment() const ipe::Textinline
iMatrixipe::Objectprotected
iPinnedipe::Objectprotected
isInternal() const ipe::Textinline
isMinipage() const ipe::Textinline
iTransformationsipe::Objectprotected
makeHAlign(String str, THorizontalAlignment def)ipe::Textstatic
makeVAlign(String str, TVerticalAlignment def)ipe::Textstatic
matrix() const ipe::Objectinline
Object()ipe::Objectexplicitprotected
Object(const AllAttributes &attr)ipe::Objectexplicitprotected
Object(const Object &rhs)ipe::Objectprotected
Object(const XmlAttributes &attr)ipe::Objectexplicitprotected
opacity() const ipe::Textinline
pinned() const ipe::Objectvirtual
position() const ipe::Textinline
saveAlignment(Stream &stream, THorizontalAlignment h, TVerticalAlignment v)ipe::Textstatic
saveAsXml(Stream &stream, String layer) const ipe::Textvirtual
saveAttributesAsXml(Stream &stream, String layer) const ipe::Objectprotected
setAttribute(Property prop, Attribute value)ipe::Textvirtual
setHorizontalAlignment(THorizontalAlignment align)ipe::Text
setMatrix(const Matrix &matrix)ipe::Object
setOpacity(Attribute opaq)ipe::Text
setPinned(TPinned pin)ipe::Object
setSize(Attribute size)ipe::Text
setStroke(Attribute stroke)ipe::Text
setStyle(Attribute style)ipe::Text
setText(String text)ipe::Text
setTextType(TextType type)ipe::Text
setTransformations(TTransformations trans)ipe::Object
setVerticalAlignment(TVerticalAlignment align)ipe::Text
setWidth(double width)ipe::Text
setXForm(XForm *xform) const ipe::Text
size() const ipe::Textinline
snapBnd(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Objectvirtual
snapCtl(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Textvirtual
snapVtx(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Objectvirtual
stroke() const ipe::Textinline
style() const ipe::Textinline
text() const ipe::Textinline
Text()ipe::Textexplicit
Text(const AllAttributes &attr, String data, const Vector &pos, TextType type, double width=10.0)ipe::Textexplicit
Text(const Text &rhs)ipe::Text
Text(const XmlAttributes &attr, String data)ipe::Textexplicit
TextType enum nameipe::Text
textType() const ipe::Text
totalHeight() const ipe::Textinline
transformations() const ipe::Objectinline
type() const ipe::Textvirtual
Type enum nameipe::Object
verticalAlignment() const ipe::Textinline
width() const ipe::Textinline
~Object()=0ipe::Objectpure virtual
~Text()ipe::Text

ipe-7.1.10/build/doc/classipe_1_1_pdf_bool.html0000644000175000017500000003040112624020245021063 0ustar otfriedotfried Ipelib: ipe::PdfBool Class Reference
ipe::PdfBool Class Reference

#include <ipepdfparser.h>

Inherits ipe::PdfObj.

Public Member Functions

 PdfBool (bool val)
 
virtual const PdfBoolboolean () const
 
virtual void write (Stream &stream) const
 
bool value () const
 
- Public Member Functions inherited from ipe::PdfObj
virtual ~PdfObj ()=0
 
virtual const PdfNullnull () const
 
virtual const PdfNumbernumber () const
 
virtual const PdfStringstring () const
 
virtual const PdfNamename () const
 
virtual const PdfRefref () const
 
virtual const PdfArrayarray () const
 
virtual const PdfDictdict () const
 
String repr () const
 

Detailed Description

The PDF bool object.

Constructor & Destructor Documentation

ipe::PdfBool::PdfBool ( bool  val)
inlineexplicit

Member Function Documentation

const PdfBool * PdfBool::boolean ( ) const
virtual

Return this object as PDF bool object.

Reimplemented from ipe::PdfObj.

void PdfBool::write ( Stream stream) const
virtual

Implements ipe::PdfObj.

bool ipe::PdfBool::value ( ) const
inline

The documentation for this class was generated from the following files:
  • ipepdfparser.h
  • ipepdfparser.cpp

ipe-7.1.10/build/doc/luageo.html0000644000175000017500000002071712624020245016241 0ustar otfriedotfried Ipelib: Lua bindings for geometric objects
Lua bindings for geometric objects

All Ipelib objects have constructors of the form:

 v = ipe.Vector()
 m = ipe.Matrix()
 m = ipe.Translation()  -- another Matrix constructor
 m = ipe.Rotation()     -- yet another Matrix constructor
 r = ipe.Rect()
 l = ipe.Line()
 l = ipe.LineThrough()  -- another Line constructor
 l = ipe.Bisector()     -- yet another Line constructor
 s = ipe.Segment()
 b = ipe.Bezier()
 a = ipe.Arc()

Note that ipe::Angle and ipe::Linear are not bound in Lua. Use numbers and ipe.Matrix instead. A useful method for angles is:

beta = ipe.normalizeAngle(alpha, lowLimit)

Vector

ipe.Vector binds ipe::Vector. There are the following methods:

v = ipe.Vector()         -- zero vector
v = ipe.Vector(x, y)
v = ipe.Direction(alpha) -- unit vector in this direction 
a = v.x                  -- read only access to x and y coordinates
b = v.y

v:len() -- returns norm of vector
v:sqLen() -- returns square of norm
v:normalized() -- returns this vector normalized
v:orthogonal() -- returns this vector rotated left by 90 degrees
v:factorize(u) -- factors v = lambda u + x, where x orth. to u, u is unit
v:angle()     -- return direction 
v == w        -- vector equality
v ~= w
-v            -- unary minus
v + w         -- vector addition
v - w         -- vector difference
5 * v         -- multiplication with a scalar
v * 5         -- multiplication with a scalar
v .. w        -- dot product

Matrix

ipe.Matrix binds ipe::Matrix. It has the following methods:

m = ipe.Matrix()                        -- identity matrix
m = ipe.Matrix(a1, a2, a3, a4)          -- linear transformation
m = ipe.Matrix(a1, a2, a3, a4, a5, a6)  -- affine transformation
m = ipe.Matrix( { a1, a2, a3, a4, a5, a6 } ) -- same from table
m = ipe.Rotation(alpha)                 -- rotation matrix
m = ipe.Translation(v)                  -- v is a vector
m = ipe.Translation(x, y)

m1 == m2          -- matrix equality
m1 * m2           -- matrix multiplication
m * v             -- matrix * vector
m * arc           -- matrix * arc

m:elements()      -- returns six-element array with elements

m:isIdentity()
m:isSingular()
m:inverse()
m:translation()   -- return translation component
m:linear()        -- returns matrix without the translation component

Rect

ipe.Rect binds ipe::Rect. This is the only mutable geometric object - take care not to be surprised when ipe.Rect objects are shared.

It has the following methods:

r = ipe.Rect()    -- empty
r:isEmpty()
r:topRight()
r:bottomLeft()
r:topLeft()
r:bottomRight()
r:left()
r:right()
r:bottom()
r:top()
r:width()
r:height()
r:add(v)          -- extend to cover vector v
r1:add(r2)        -- extend to cover rectangle r2
r1:clipTo(r2)     -- clip r1 to lie inside r2
r:contains(v)     
r1:contains(r2)
r1:intersects(r2)

Line

ipe.Line binds ipe::Line. It has the following methods:

l = ipe.Line(p, dir)      -- dir must be unit vector
l = ipe.LineThrough(p, q)
l = ipe.Bisector(p, q)

-- l:side() returns +1 if v lies to the left side of the line, 
-- 0 if on line, -1 if on the right side
l:side(v)                 
l:point()                 -- starting point of line
l:dir()                   -- unit direction vector
l:normal()                -- unit normal vector pointing to the left side
l:distance(v)             -- returns distance from point to line
l1:intersects(l2)         -- returns intersection point or nil
l:project(p)              -- projection of point on line

Segment

ipe.Segment binds ipe::Segment. It has the following methods:

s = ipe.Segment(p, q)   
p, q = s:endpoints()      -- returns both endpoints
s:line()                  -- returns an ipe.Line
s:project(p)              -- returns projection or nil
s:distance(p)
s:intersects(l)           -- return intersection point or nil
s1:intersects(s2)

Bezier

ipe.Bezier binds ipe::Bezier. It has the following methods:

b = ipe.Bezier(v1, v2, v3, v4)  
b:point(t)                -- point at value t
v1, v2, v3, v4 = b:controlpoints()  -- returns all four control points
b:bbox()
t, p = b:snap(pos)
b:intersects(s)           -- return intersection point or nil
b:intersects(l)

Arc

ipe.Arc binds ipe::Arc. It has the following methods:

a = ipe.Arc(m)            -- ellipse defined by ipe.Matrix m
a = ipe.Arc(m, p, q)      -- arc from p to q
a = ipe.Arc(m, alpha, beta)

a:endpoints()             -- returns two endpoints
a:angles()                -- returns two angles
a:bbox()
a:matrix()
a:isEllipse() 
alpha, p = a:snap(pos)
a:intersects(s)           -- return intersection point or nil
a:intersects(l)

ipe-7.1.10/build/doc/structipe_1_1_document_1_1_s_properties-members.html0000644000175000017500000001305612624020245026231 0ustar otfriedotfried Ipelib: Member List
ipe::Document::SProperties Member List

ipe-7.1.10/build/doc/classipe_1_1_ipelet.html0000644000175000017500000001567112624020245020575 0ustar otfriedotfried Ipelib: ipe::Ipelet Class Reference

#include <ipelet.h>

Public Member Functions

virtual ~Ipelet ()=0
 
virtual int ipelibVersion () const =0
 
virtual bool run (int function, IpeletData *data, IpeletHelper *helper)=0
 

Detailed Description

Abstract base class for Ipelets.

Constructor & Destructor Documentation

Ipelet::~Ipelet ( )
pure virtual

Pure virtual destructor.

Member Function Documentation

virtual int ipe::Ipelet::ipelibVersion ( ) const
pure virtual

Return the version of Ipelib the Ipelet was linked against.

virtual bool ipe::Ipelet::run ( int  function,
IpeletData data,
IpeletHelper helper 
)
pure virtual

Run a function from the Ipelet.

Return true if page was changed and undo registration is necessary.


The documentation for this class was generated from the following files:
  • ipelet.h
  • ipeutils.cpp

ipe-7.1.10/build/doc/tab_a.png0000644000175000017500000000021612624020245015643 0ustar otfriedotfried‰PNG  IHDR$ÇÇ[UIDATxíK €0C'o¤(Šˆ[Žà%Üxÿ#Ù©­ç ùÁöó¦W¦e# 3t I 3+¼øEã~\D½9¯Ûàè’wM·¿öÿ}Yõ_êA4Yžã}IEND®B`‚ipe-7.1.10/build/doc/manual_5.html0000644000175000017500000001253212624020245016462 0ustar otfriedotfried Ipe Manual -- 3.2 The current selection
3.3 Moving and scaling objects3 General Concepts3.1 Order of objects3.2 The current selection

3.2 The current selection

Whenever you call an Ipe function, you have to specify which objects the function should operate on. This is done by selecting objects. The selected objects (the selection) consists of two parts: the primary selection consists of exactly one object (of course, this object could be a group). All additional selected objects form the secondary selection. Some functions (like the context menu) operate only on the primary selection, while others treat primary and secondary selections differently (the align functions, for instance, align the secondary selections with respect to the primary selection.)

The selection is shown by outlining the selected object in color. Note that the primary selection is shown with a slightly different look.

The primary and secondary selections can be set in selection mode. Clicking the left mouse button close to an object makes that object the primary selection and deselects all other objects. If you keep the Shift key pressed while clicking with the left mouse key, the object closest to the mouse will be added to or deleted from the current selection. You can also drag a rectangle with the mouse—when you release the mouse button, all objects inside the rectangle will be selected. With the Shift key, the selection status of all objects inside the rectangle will be switched.

To make it easier to select objects that are below or close to other objects, it is convenient to understand exactly how selecting objects works. In fact, when you press the mouse button, a list of all objects is computed that are sufficiently close to the mouse position (the exact distance is set as the select_distance in prefs.lua). This list is then sorted by increasing distance from the mouse and by increasing depth in the drawing. If Shift was not pressed, the current selection is now cleared. Then the first object in the list is presented. Now, while still keeping the mouse button pressed, you can use the Space key to step through the list of objects near the mouse in order of increasing depth and distance. When you release the right mouse button, the object is selected (or deselected).

When measuring the distance from the mouse position to objects, Ipe considers the boundary of objects only. So to select a filled object, don't just click somewhere in its interior, but close to its boundary.

Another way to select objects is using the Select all function from the Edit menu. It selects all objects on the page. Similarly, the Select all in layer function in the Layer menu selects all objects in the active layer.

ipe-7.1.10/build/doc/classipe_1_1_pan_tool.html0000644000175000017500000003641512624020245021125 0ustar otfriedotfried Ipelib: ipe::PanTool Class Reference

#include <ipetool.h>

Inherits ipe::Tool.

Public Member Functions

 PanTool (CanvasBase *canvas, const Page *page, int view)
 
virtual void draw (Painter &painter) const
 
virtual void mouseButton (int button, bool press)
 
virtual void mouseMove ()
 
- Public Member Functions inherited from ipe::Tool
virtual ~Tool ()
 
virtual bool key (String text, int modifiers)
 
virtual void snapVtx (const Vector &mouse, Vector &pos, double &bound, bool cp) const
 

Additional Inherited Members

- Protected Member Functions inherited from ipe::Tool
 Tool (CanvasBase *canvas)
 
- Protected Attributes inherited from ipe::Tool
CanvasBaseiCanvas
 

Detailed Description

A tool for panning the canvas.

Constructor & Destructor Documentation

Member Function Documentation

void PanTool::mouseButton ( int  button,
bool  press 
)
virtual

Called when a mouse button is pressed or released on the canvas.

button is 1, 2, or 3, with Shift/Ctrl/Alt/Meta modifiers added in (as defined in CanvasBase::TModifiers. press is true for button-down, and false for button-up.

Reimplemented from ipe::Tool.

References ipe::CanvasBase::finishTool(), ipe::Tool::iCanvas, ipe::CanvasBase::pan(), ipe::CanvasBase::setPan(), and ipe::CanvasBase::unsnappedPos().

void PanTool::mouseMove ( )
virtual

Called when the mouse is moved on the canvas.

Reimplemented from ipe::Tool.

References ipe::Tool::iCanvas, ipe::CanvasBase::unsnappedPos(), and ipe::CanvasBase::updateTool().


The documentation for this class was generated from the following files:
  • ipetool.h
  • ipetool.cpp

ipe-7.1.10/build/doc/classipe_1_1_base64_source-members.html0000644000175000017500000000614612624020245023404 0ustar otfriedotfried Ipelib: Member List
ipe::Base64Source Member List

This is the complete list of members for ipe::Base64Source, including all inherited members.

Base64Source(DataSource &source)ipe::Base64Source
getChar()ipe::Base64Sourcevirtual
~DataSource()=0ipe::DataSourcepure virtual

ipe-7.1.10/build/doc/classipe_1_1_base64_source.html0000644000175000017500000001411212624020245021744 0ustar otfriedotfried Ipelib: ipe::Base64Source Class Reference
ipe::Base64Source Class Reference

#include <ipeutils.h>

Inherits ipe::DataSource.

Public Member Functions

 Base64Source (DataSource &source)
 
virtual int getChar ()
 
- Public Member Functions inherited from ipe::DataSource
virtual ~DataSource ()=0
 

Detailed Description

Filter source adding Base64 decoding.

Constructor & Destructor Documentation

Base64Source::Base64Source ( DataSource source)

Member Function Documentation

int Base64Source::getChar ( )
virtual

Get one more character, or EOF.

Implements ipe::DataSource.

References ipe::DataSource::getChar().

Referenced by ipe::Bitmap::Bitmap().


The documentation for this class was generated from the following files:
  • ipeutils.h
  • ipeutils.cpp

ipe-7.1.10/build/doc/classipe_1_1_string_stream-members.html0000644000175000017500000001466312624020245023624 0ustar otfriedotfried Ipelib: Member List
ipe::StringStream Member List

This is the complete list of members for ipe::StringStream, including all inherited members.

close()ipe::Streamvirtual
operator<<(char ch)ipe::Streaminline
operator<<(const String &s)ipe::Streaminline
operator<<(const char *s)ipe::Streaminline
operator<<(int i)ipe::Stream
operator<<(double d)ipe::Stream
putChar(char ch)ipe::StringStreamvirtual
putCString(const char *s)ipe::StringStreamvirtual
putHexByte(char b)ipe::Stream
putRaw(const char *data, int size)ipe::StringStreamvirtual
putString(String s)ipe::StringStreamvirtual
putXmlString(String s)ipe::Stream
StringStream(String &string)ipe::StringStream
tell() const ipe::StringStreamvirtual
~Stream()ipe::Streamvirtual

ipe-7.1.10/build/doc/group__cairo.html0000644000175000017500000000556512624020245017441 0ustar otfriedotfried Ipelib: Ipe Cairo interface
Ipe Cairo interface

Classes

class  ipe::CairoPainter
 
class  ipe::Fonts
 
class  ipe::Face
 

Detailed Description

Drawing Ipe objects using the Cairo library.

This module contains the classes needed to render Ipe objects using the Cairo and Freetype libraries.

These classes are not in Ipelib, but in a separate library libipecairo.


ipe-7.1.10/build/doc/classipe_1_1_a85_stream-members.html0000644000175000017500000001405312624020245022704 0ustar otfriedotfried Ipelib: Member List
ipe::A85Stream Member List

This is the complete list of members for ipe::A85Stream, including all inherited members.

A85Stream(Stream &stream)ipe::A85Stream
close()ipe::A85Streamvirtual
operator<<(char ch)ipe::Streaminline
operator<<(const String &s)ipe::Streaminline
operator<<(const char *s)ipe::Streaminline
operator<<(int i)ipe::Stream
operator<<(double d)ipe::Stream
putChar(char ch)ipe::A85Streamvirtual
putCString(const char *s)ipe::Streamvirtual
putHexByte(char b)ipe::Stream
putRaw(const char *data, int size)ipe::Streamvirtual
putString(String s)ipe::Streamvirtual
putXmlString(String s)ipe::Stream
~Stream()ipe::Streamvirtual

ipe-7.1.10/build/doc/classipe_1_1_cairo_painter.html0000644000175000017500000017562012624020245022133 0ustar otfriedotfried Ipelib: ipe::CairoPainter Class Reference

#include <ipecairopainter.h>

Inherits ipe::Painter.

Public Member Functions

 CairoPainter (const Cascade *sheet, Fonts *fonts, cairo_t *cc, double zoom, bool pretty)
 
virtual ~CairoPainter ()
 
void setDimmed (bool dim)
 
- Public Member Functions inherited from ipe::Painter
 Painter (const Cascade *style)
 
virtual ~Painter ()
 
void transform (const Matrix &m)
 
void untransform (TTransformations trans)
 
void translate (const Vector &v)
 
void push ()
 
void pop ()
 
void pushMatrix ()
 
void popMatrix ()
 
void newPath ()
 
void moveTo (const Vector &v)
 
void lineTo (const Vector &v)
 
void curveTo (const Vector &v1, const Vector &v2, const Vector &v3)
 
void curveTo (const Bezier &bezier)
 
void rect (const Rect &re)
 
void drawEllipse ()
 
void drawArc (const Arc &arc)
 
void closePath ()
 
void drawPath (TPathMode mode)
 
void drawBitmap (Bitmap bitmap)
 
void drawText (const Text *text)
 
void drawSymbol (Attribute symbol)
 
void addClipPath ()
 
void setStroke (Attribute color)
 
void setFill (Attribute color)
 
void setPen (Attribute pen)
 
void setDashStyle (Attribute dash)
 
void setLineCap (TLineCap cap)
 
void setLineJoin (TLineJoin join)
 
void setFillRule (TFillRule rule)
 
void setSymStroke (Attribute color)
 
void setSymFill (Attribute color)
 
void setSymPen (Attribute wid)
 
void setOpacity (Attribute opaq)
 
void setTiling (Attribute til)
 
void setGradient (Attribute grad)
 
const Cascadecascade () const
 
Color stroke () const
 
Color fill () const
 
const Matrixmatrix () const
 
Fixed pen () const
 
String dashStyle () const
 
void dashStyle (std::vector< double > &dashes, double &offset) const
 
TLineCap lineCap () const
 
TLineJoin lineJoin () const
 
TFillRule fillRule () const
 
Color symStroke () const
 
Color symFill () const
 
Fixed symPen () const
 
Fixed opacity () const
 
Attribute tiling () const
 
Attribute gradient () const
 

Protected Member Functions

virtual void doPush ()
 
virtual void doPop ()
 
virtual void doMoveTo (const Vector &v)
 
virtual void doLineTo (const Vector &v)
 
virtual void doCurveTo (const Vector &v1, const Vector &v2, const Vector &v3)
 
virtual void doClosePath ()
 
virtual void doDrawArc (const Arc &arc)
 
virtual void doAddClipPath ()
 
virtual void doDrawPath (TPathMode mode)
 
virtual void doDrawBitmap (Bitmap bitmap)
 
virtual void doDrawText (const Text *text)
 
- Protected Member Functions inherited from ipe::Painter
virtual void doNewPath ()
 
virtual void doDrawSymbol (Attribute symbol)
 
void drawArcAsBezier (double alpha)
 

Additional Inherited Members

- Protected Attributes inherited from ipe::Painter
std::list< StateiState
 
std::list< MatrixiMatrix
 
const CascadeiCascade
 
int iInPath
 

Detailed Description

Ipe Painter using Cairo and Freetype as a backend.

This painter draws to a Cairo surface.

Constructor & Destructor Documentation

CairoPainter::CairoPainter ( const Cascade sheet,
Fonts fonts,
cairo_t *  cc,
double  zoom,
bool  pretty 
)

Construct a painter.

zoom one means 72 pixels per inch. Set pretty to true to avoid drawing text without Latex.

virtual ipe::CairoPainter::~CairoPainter ( )
inlinevirtual

Member Function Documentation

void ipe::CairoPainter::setDimmed ( bool  dim)
inline
void CairoPainter::doPush ( )
protectedvirtual

Perform graphics state push on output medium.

Reimplemented from ipe::Painter.

void CairoPainter::doPop ( )
protectedvirtual

Perform graphics state pop on output medium.

Reimplemented from ipe::Painter.

void CairoPainter::doMoveTo ( const Vector v)
protectedvirtual

Perform moveto operator.

The transformation matrix has already been applied.

Reimplemented from ipe::Painter.

References ipe::Vector::x, and ipe::Vector::y.

void CairoPainter::doLineTo ( const Vector v)
protectedvirtual

Perform lineto operator.

The transformation matrix has already been applied.

Reimplemented from ipe::Painter.

References ipe::Vector::x, and ipe::Vector::y.

void CairoPainter::doCurveTo ( const Vector v1,
const Vector v2,
const Vector v3 
)
protectedvirtual

Perform curveto operator.

The transformation matrix has already been applied.

Reimplemented from ipe::Painter.

References ipe::Vector::x, and ipe::Vector::y.

void CairoPainter::doClosePath ( )
protectedvirtual

Perform closepath operator.

Reimplemented from ipe::Painter.

void CairoPainter::doDrawArc ( const Arc arc)
protectedvirtual

Draw an elliptic arc.

The default implementations calls drawArcAsBezier(). The transformation matrix has not yet been applied to arc.

Reimplemented from ipe::Painter.

References ipe::Matrix::a, ipe::Arc::iAlpha, ipe::Arc::iBeta, ipe::Arc::iM, ipe::Arc::isEllipse(), and ipe::Painter::matrix().

void CairoPainter::doAddClipPath ( )
protectedvirtual

Add a clip path.

Reimplemented from ipe::Painter.


The documentation for this class was generated from the following files:
  • ipecairopainter.h
  • ipecairopainter.cpp

ipe-7.1.10/build/doc/manual_27.html0000644000175000017500000001770512624020245016555 0ustar otfriedotfried Ipe Manual -- 6 Stylesheets
7 PresentationsTop5 Snapping6 Stylesheets

6 Stylesheets

The symbolic attributes appearing in an Ipe document are translated to absolute values for rendering by a stylesheet that is attached to the document. Documents can have multiple "cascaded" stylesheets, the sheets form a stack, and symbols are looked up from top to bottom. At the bottom of any stylesheet cascade is always the minimal standard style sheet, which is built into Ipe.

When you create a new empty document, it automatically gets a copy of this standard style sheet (which does little more than define the "normal" attribute for each kind of attribute). In addition, Ipe inserts a predefined list of stylesheets. The list of these stylesheets can be customized using an ipelet, using Ipe's command line options, and an environment variable. By default, a new document gets the stylesheet basic that comes with Ipe.

The stylesheet dialog (in the Edit menu under Stylesheets) allows you to inspect the cascade of stylesheets associated with your document, to add and remove stylesheets, and to change their order. You can also save individual stylesheets.

The stylesheets of your document also determine the symbolic choices you have in the Ipe user interface. If you feel that Ipe does not offer you the right choice of colors, pen widths, etc., you are ready to make your own style sheet! Ipe's styles directory contains a few examples to look at. The colors.isy stylesheet defines all the colors of the X11 color database - you could make a selection of these for your own use.

When a stylesheet is "added" to an Ipe document, the contents of the stylesheet file is copied into the Ipe document. Subsequent modification of the stylesheet file has no effect on the Ipe document. The right way to modify your stylesheet is to either "add" it again, and then to delete the old copy from your stylesheet cascade (the one further down in the list), or to use the Update stylesheets function in the Edit menu. This function assumes that the stylesheet file is in the same directory as the document and that the filename coincides with the name of the stylesheet (plus the extension .isy).

Removing or replacing a stylesheet can cause some of the symbolic attributes in your document to become undefined. This is not a disaster—Ipe will simply use some default value for any undefined symbolic attribute. To allow you to diagnose the problem, Ipe will show a warning listing all undefined symbolic attributes.

The style sheet is also responsible for determining the paper and frame size. Ipe's default paper size is the ISO standard A4. If you wish to use letter size paper instead, include this style sheet:

   <ipestyle name="letterpaper">
     <layout paper="612 792" origin="0 0" frame="612 792"/>
   </ipestyle>

Symbols.

Style sheets can also contain symbols, such as marks and arrows, background patterns, or logos. These are named Ipe objects that can be referenced by the document. If your document's stylesheets define a symbol named Background, it will be displayed automatically on all pages. You can create and use symbols using the Symbols ipelet. Here is a (silly) example of a style sheet that defines such a background:

<ipestyle name="background">
<symbol name="Background" xform="yes">
<text pos="10 10" stroke="black" size="LARGE">
Background text
</text>
</symbol>
</ipestyle>

Note the use of the xform attribute—it ensures that the background is embedded only once into PDF document. This can make a huge difference if your background is a complicated object.

Symbols can be parameterized with a stroke color, fill color, pen size, and symbol size. This means that the actual value of these attributes is only set when the symbol is used in the document (not in the symbol definition). The name of a parameterized symbol must end with a pair of parentheses containing some of the letters "s" (stroke), "f" (fill), "p" (pen), "x" (symbol size), in this order. The symbol definition can then use the special attribute values sym-stroke, sym-fill, and sym-pen. A resizable symbol is automatically magnified by the symbol size set in the symbol reference.

You can also use a stylesheet to define additional mark shapes, arrow shapes, or tiling patterns.

Latex preamble.

Stylesheets can also define a piece of LaTeX-preamble for your document. When your text objects are processed by LaTeX, the preamble used consists of the pieces on the style sheet cascade, from bottom to top, followed by the preamble set for the document itself.

Transparency.

If you wish to use transparency in your document, you need to define opacity values in its stylesheet. The default stylesheet basic.isy does not define any opacity value, because documents using transparence cannot be saved in Postscript format. A minimal stylesheet defining an opacity value would be:

   <ipestyle name="transparency">
   <opacity name="50%" value="0.5"/>
   </ipestyle>

Other stylesheet definitions that are meant for PDF presentations are discussed in the next section.

ipe-7.1.10/build/doc/classipe_1_1_bitmap_finder-members.html0000644000175000017500000001102712624020245023535 0ustar otfriedotfried Ipelib: Member List
ipe::BitmapFinder Member List

This is the complete list of members for ipe::BitmapFinder, including all inherited members.

iBitmapsipe::BitmapFinder
scanPage(const Page *page)ipe::BitmapFinder
visitGroup(const Group *obj)ipe::BitmapFindervirtual
visitImage(const Image *obj)ipe::BitmapFindervirtual
visitPath(const Path *obj)ipe::Visitorvirtual
visitReference(const Reference *obj)ipe::Visitorvirtual
visitText(const Text *obj)ipe::Visitorvirtual
~Visitor()ipe::Visitorvirtual

ipe-7.1.10/build/doc/structipe_1_1_pdf_token.html0000644000175000017500000002471012624020245021475 0ustar otfriedotfried Ipelib: ipe::PdfToken Struct Reference
ipe::PdfToken Struct Reference

#include <ipepdfparser.h>

Public Types

enum  TToken {
  EErr, EOp, EName, ENumber,
  EString, ETrue, EFalse, ENull,
  EArrayBg, EArrayEnd, EDictBg, EDictEnd
}
 

Public Attributes

TToken iType
 
String iString
 

Detailed Description

A PDF lexical token.

Member Enumeration Documentation

The various types of tokens.

Enumerator
EErr 
EOp 
EName 
ENumber 
EString 
ETrue 
EFalse 
ENull 
EArrayBg 
EArrayEnd 
EDictBg 
EDictEnd 

Member Data Documentation


The documentation for this struct was generated from the following file:
  • ipepdfparser.h

ipe-7.1.10/build/doc/classipe_1_1_fonts.html0000644000175000017500000002134612624020245020440 0ustar otfriedotfried Ipelib: ipe::Fonts Class Reference

#include <ipefonts.h>

Public Member Functions

 ~Fonts ()
 
FacegetFace (int id)
 

Static Public Member Functions

static FontsNew (const FontPool *fontPool)
 
static cairo_font_face_t * screenFont ()
 
static String freetypeVersion ()
 

Detailed Description

Provides the fonts used to render text.

Constructor & Destructor Documentation

Fonts::~Fonts ( )

Delete all the loaded Faces.

Member Function Documentation

Fonts * Fonts::New ( const FontPool *  fontPool)
static
Face * Fonts::getFace ( int  id)

Get a typeface.

Corresponds to a Freetype "face", or a PDF font resource. A Face can be loaded at various sizes (transformations), resulting in individual FaceSize's.

cairo_font_face_t * Fonts::screenFont ( )
static

Return a Cairo font to render to the screen w/o Latex font.

Referenced by ipe::CairoPainter::doDrawText().

String Fonts::freetypeVersion ( )
static

The documentation for this class was generated from the following files:
  • ipefonts.h
  • ipefonts.cpp

ipe-7.1.10/build/doc/classipe_1_1_document.html0000644000175000017500000023655612624020245021140 0ustar otfriedotfried Ipelib: ipe::Document Class Reference

#include <ipedoc.h>

Classes

struct  SProperties
 

Public Types

enum  TFormat {
  EXml, EPdf, EEps, EIpe5,
  EUnknown
}
 
enum  { ESaveNormal = 0, EExport = 1, ENoZip = 2, EMarkedView = 4 }
 
enum  LoadErrors { EVersionTooOld = -1, EVersionTooRecent = -2, EFileOpenError = -3, ENotAnIpeFile = -4 }
 
enum  {
  ErrNone, ErrNoText, ErrNoDir, ErrWritingSource,
  ErrOldPdfLatex, ErrRunLatex, ErrLatex, ErrLatexOutput,
  ErrNoIconv
}
 

Public Member Functions

 Document ()
 
 Document (const Document &rhs)
 
 ~Document ()
 
bool save (TellStream &stream, TFormat format, uint flags) const
 
bool save (const char *fname, TFormat format, uint flags) const
 
bool exportPages (const char *fname, uint flags, int fromPage, int toPage) const
 
bool exportView (const char *fname, TFormat format, uint flags, int pno, int vno) const
 
void saveAsXml (Stream &stream, bool usePdfBitmaps=false) const
 
int countPages () const
 
int countTotalViews () const
 
const Pagepage (int no) const
 
Pagepage (int no)
 
Pageset (int no, Page *page)
 
void insert (int no, Page *page)
 
void push_back (Page *page)
 
Pageremove (int no)
 
SProperties properties () const
 
void setProperties (const SProperties &info)
 
Cascadecascade ()
 
const Cascadecascade () const
 
CascadereplaceCascade (Cascade *cascade)
 
void setFontPool (FontPool *fontPool)
 
const FontPool * fontPool () const
 
bool hasTrueTypeFonts () const
 
bool hasTransparency () const
 
bool hasTilings () const
 
bool hasGradients () const
 
void findBitmaps (BitmapFinder &bm) const
 
bool checkStyle (AttributeSeq &seq) const
 
int runLatex (String &logFile)
 
int runLatex ()
 

Static Public Member Functions

static TFormat fileFormat (DataSource &source)
 
static TFormat formatFromFilename (String fn)
 
static Documentload (DataSource &source, TFormat format, int &reason)
 
static Documentload (const char *fname, int &reason)
 
static DocumentloadWithErrorReport (const char *fname)
 

Detailed Description

The model for an Ipe document.

The Document class represents the contents of an Ipe document, and all the methods necessary to load, save, and modify it.

Member Enumeration Documentation

There are several Ipe document save formats.

Enumerator
EXml 

Save as XML.

EPdf 

Save as PDF.

EEps 

Save as Encapsulated Postscript.

EIpe5 

Ancient Ipe format.

EUnknown 

Unknown file format.

anonymous enum

Options for saving Ipe documents (to PDF and Postscript)

Enumerator
ESaveNormal 

Nothing special.

EExport 

Don't include Ipe markup.

ENoZip 

Do not compress streams.

EMarkedView 

Create marked views only.

Errors that can happen while loading documents.

Enumerator
EVersionTooOld 

The version of the file is too old.

EVersionTooRecent 

The file version is newer than this Ipelib.

EFileOpenError 

Error opening the file.

ENotAnIpeFile 

The file was not created by Ipe.

anonymous enum

Error codes returned by RunLatex.

Enumerator
ErrNone 
ErrNoText 
ErrNoDir 
ErrWritingSource 
ErrOldPdfLatex 
ErrRunLatex 
ErrLatex 
ErrLatexOutput 
ErrNoIconv 

Constructor & Destructor Documentation

Document::Document ( )

Construct an empty document for filling by a client.

As constructed, it has no pages, A4 media, and only the standard style sheet.

References ipe::Cascade::insert(), and ipe::StyleSheet::standard().

Document::Document ( const Document rhs)

Copy constructor.

References countPages(), and page().

Document::~Document ( )

Destructor.

References countPages(), and page().

Member Function Documentation

Document::TFormat Document::fileFormat ( DataSource source)
static

Determine format of file in source.

References EEps, EIpe5, EPdf, EUnknown, EXml, and ipe::String::substr().

Referenced by load().

Document::TFormat Document::formatFromFilename ( String  fn)
static

Determine format of file from filename fn.

References EEps, EPdf, EUnknown, EXml, ipe::String::right(), and ipe::String::size().

Document * Document::load ( DataSource source,
TFormat  format,
int &  reason 
)
static

Construct a document from an input stream.

Returns 0 if the stream couldn't be parsed, and a reason explaining that in reason. If reason is positive, it is a file (stream) offset where parsing failed. If reason is negative, it is an error code, see Document::LoadErrors.

References EEps, EIpe5, ENotAnIpeFile, EPdf, EVersionTooOld, and EXml.

Referenced by load(), and loadWithErrorReport().

Document * Document::load ( const char *  fname,
int &  reason 
)
static
Document * Document::loadWithErrorReport ( const char *  fname)
static
bool Document::save ( TellStream stream,
TFormat  format,
uint  flags 
) const
bool Document::save ( const char *  fname,
TFormat  format,
uint  flags 
) const

References ipe::Platform::fopen(), and save().

bool Document::exportPages ( const char *  fname,
uint  flags,
int  fromPage,
int  toPage 
) const
bool Document::exportView ( const char *  fname,
TFormat  format,
uint  flags,
int  pno,
int  vno 
) const
int ipe::Document::countPages ( ) const
inline
int Document::countTotalViews ( ) const

Return total number of views in all pages.

References countPages(), ipe::Page::countViews(), and page().

Referenced by ipe::PdfWriter::createTrailer().

Page* ipe::Document::page ( int  no)
inline

Return page.

The first page is no 0.

Page * Document::set ( int  no,
Page page 
)

Replace page.

Returns the original page.

References page().

void Document::insert ( int  no,
Page page 
)

Insert a new page.

The page is inserted at index no.

References page().

void Document::push_back ( Page page)

Append a new page.

Referenced by ipe::ImlParser::parseDocument().

Page * Document::remove ( int  no)

Remove a page.

Returns the page that has been removed.

SProperties ipe::Document::properties ( ) const
inline

Return document properties.

Referenced by ipe::PdfWriter::createTrailer(), ipe::ImlParser::parseDocument(), and runLatex().

void Document::setProperties ( const SProperties info)

Set document properties.

Referenced by ipe::ImlParser::parseDocument().

const Cascade* ipe::Document::cascade ( ) const
inline

Return stylesheet cascade (const version).

Cascade * Document::replaceCascade ( Cascade sheets)

Replace the entire style sheet cascade.

Takes ownership of cascade, and returns the original cascade.

void Document::setFontPool ( FontPool *  fontPool)

Update the font pool (after running Pdflatex).

Takes ownership of the font pool.

References fontPool().

Referenced by runLatex().

const FontPool* ipe::Document::fontPool ( ) const
inline

Return the current FontPool.

Referenced by setFontPool(), and ipe::Thumbnail::Thumbnail().

bool Document::hasTrueTypeFonts ( ) const

Return whether this document uses any Truetype fonts.

References ipe::Font::ETrueType.

bool Document::hasTransparency ( ) const

Does this document make any use of transparency?

The document is considered to make use of transparency if its style sheets define any opacities whose value is not 1.0.

References ipe::Cascade::allNames(), ipe::EOpacity, ipe::Cascade::find(), and ipe::Attribute::ONE().

bool Document::hasTilings ( ) const

Does this document contain any tiling patterns?

References ipe::Cascade::allNames(), and ipe::ETiling.

bool Document::hasGradients ( ) const

Does this document contain any gradients?

References ipe::Cascade::allNames(), and ipe::EGradient.

void Document::findBitmaps ( BitmapFinder bm) const
bool Document::checkStyle ( AttributeSeq seq) const

Check all symbolic attributes in the document.

This function verifies that all symbolic attributes in the document are defined in the style sheet. It appends to seq all symbolic attributes (in no particular order, but without duplicates) that are NOT defined.

Returns true if there are no undefined symbolic attributes in the document.

References cascade(), ipe::Object::checkStyle(), ipe::Page::count(), countPages(), ipe::Page::object(), and page().

int Document::runLatex ( )

Run Pdflatex (suitable for console applications)

Success/error is reported on stderr.

References ErrLatex, ErrLatexOutput, ErrNoDir, ErrNoIconv, ErrNone, ErrNoText, ErrOldPdfLatex, ErrRunLatex, and ErrWritingSource.


The documentation for this class was generated from the following files:
  • ipedoc.h
  • ipedoc.cpp

ipe-7.1.10/build/doc/classipe_1_1_effect-members.html0000644000175000017500000002066312624020245022174 0ustar otfriedotfried Ipelib: Member List
ipe::Effect Member List

This is the complete list of members for ipe::Effect, including all inherited members.

EBlindsH enum valueipe::Effect
EBlindsV enum valueipe::Effect
EBoxI enum valueipe::Effect
EBoxO enum valueipe::Effect
EDissolve enum valueipe::Effect
Effect()ipe::Effect
EGlitterD enum valueipe::Effect
EGlitterLR enum valueipe::Effect
EGlitterTB enum valueipe::Effect
ENormal enum valueipe::Effect
ESplitHI enum valueipe::Effect
ESplitHO enum valueipe::Effect
ESplitVI enum valueipe::Effect
ESplitVO enum valueipe::Effect
EWipeBT enum valueipe::Effect
EWipeLR enum valueipe::Effect
EWipeRL enum valueipe::Effect
EWipeTB enum valueipe::Effect
iDurationipe::Effect
iEffectipe::Effect
iTransitionTimeipe::Effect
pageDictionary(Stream &stream) const ipe::Effect
TEffect enum nameipe::Effect

ipe-7.1.10/build/doc/ftv2link.png0000644000175000017500000000135212624020245016336 0ustar otfriedotfried‰PNG  IHDRÚ}\ˆ±IDATxíMOS[…Ÿžsúa?-XZ(PD4‚ AWbu`b 77wäHFÆCËÔÂÿà/`vo„ˆAPòq‹P @ ­ûÝè980 îà¤+»§Ýy×^ïZï9SW¹\83g‰3'°Nâçl¹¸_b¯p ïåûÆVÜÖ¡€Ÿ×"¬Ö†X€d]Ðà3“ÉÃÄÌ™xŸ ßMàœ[<çSPkvc—hÈ'…™˜^Åm™hØ7 `Û™¦ èÀåráq›‘œ¾!daeKŸþÆÕ˜:Ì*³_דâèi?I–eP*B7Ÿ¿åô!¹Ýgr6Ër6oKbëþãðôrI”ËTˆüªŒ¨xóö=›ù¢&‰(e+ßóÄkýÇ`ëÁÜb.“¸ÐW×w0¥°jÑzN™¬|©WEãµ¢a¯6[öX†AkÓù*/œ¨‰€ÉY­ ÿV’§–u²jÂ>1W *½·°PGŽzÿ¨/Eg{ ŸÇâaoŠÁVú:è¿™¤1$ôR§W,–ªà¨@ŠË56¾ÀÔÜ-¾,mê¸Î/æè¹– òr5¥T*S(Vf8ö9u’ Õ£w›ùóa=Í<{Ò¡UŒ÷r¯+ÉådDÏF$è°…£é¿`zþ»ÎúöN‘µÜ®0Q3£~_^Ëóâ¯N=ˆvpTà±LžT}ˆîkq†Òm<¼ÎÓ?Zh¿X£ï_þÝ¥[)ƒ `gêÃa_Ô*äÔ2`'=õ´Fÿ2EâÁPú ÷»›l=8‹Wv°%THqÉ¿<"¤ïG¾ÆxH{#ÆÖ«aÔJÕÞ‡—m‹„ çñKsÿàñVŠØ¡°·MâÒ^ TÁ– Ý›r¥ß½ømüÿ_™?ªWİ÷#uIEND®B`‚ipe-7.1.10/build/doc/functions_x.html0000644000175000017500000001126312624020245017320 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- x -


ipe-7.1.10/build/doc/hierarchy.html0000644000175000017500000011507612624020245016746 0ustar otfriedotfried Ipelib: Class Hierarchy
Class Hierarchy
This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 123]
 Cipe::AllAttributesCollection of all object attributes
 Cipe::AngleA double that's an angle
 Cipe::ArcAn arc of an ellipse
 Cipe::AttributeAn attribute of an Ipe Object
 Cipe::BezierA cubic Bezier spline
 Cipe::BitmapA bitmap
 Cipe::BufferA memory buffer
 Cipe::CanvasBase
 Cipe::CanvasObserver
 Cipe::CascadeA cascade of style sheets
 Cipe::ColorAn absolute RGB color
 Cipe::CurveSegmentA segment on an SubPath
 Cipe::DataSourceInterface for getting data for parsing
 Cipe::DocumentThe model for an Ipe document
 Cipe::EffectEffect that Acrobat Reader will show on page change
 Cipe::FaceA typeface (aka font), actually loaded (from a font file or PDF file)
 Cipe::FixedFixed point number with three (decimal) fractional digits
 Cipe::FontA text font
 Cipe::FontsProvides the fonts used to render text
 Cipe::GradientA gradient pattern
 CIpeAutoPtr< T >
 Cipe::IpeletAbstract base class for Ipelets
 Cipe::IpeletDataInformation provided to an ipelet when it is run
 Cipe::IpeletHelperService provider for Ipelets
 Cipe::LatexObject that converts latex source to PDF format
 Cipe::LayoutLayout of a Page
 Cipe::LexLexical analyser. Seeded with a string
 Cipe::LineA directed line
 Cipe::LinearLinear transformation in the plane (2x2 matrix)
 Cipe::MatrixHomogeneous transformation in the plane
 Cipe::Bitmap::MRenderDataAbstract base class for pixmap data stored by a client
 Cipe::ObjectBase class for all Ipe objects, composite or leaf
 Cipe::ObjectFactoryFactory for Ipe leaf objects
 Cipe::PageAn Ipe document page
 Cipe::StyleSheet::PageNumberStyleHow to show page numbers on the paper
 Cipe::PainterInterface for drawing
 Cipe::PdfFileAll information obtained by parsing a PDF file
 Cipe::PdfObjAbstract base class for PDF objects
 Cipe::PdfParserPDF parser
 Cipe::PdfTokenA PDF lexical token
 Cipe::PdfWriterCreate PDF file
 Cipe::PlatformPlatform dependent methods
 Cipe::PsWriter
 CQListWidget
 CQWidget
 Cipe::RectAxis-parallel rectangle (which can be empty)
 Cipe::RepositoryRepository of strings
 Cipe::SegmentA directed line segment
 Cipe::ShapeA geometric shape, consisting of several (open or closed) subpaths
 Cipe::SnapPerforms snapping operations, and stores snapping state
 Cipe::SelectTool::SObj
 Cipe::Document::SPropertiesProperties of a document
 Cipe::Painter::State
 Cipe::Gradient::StopA color stop
 Cipe::StreamAbstract base class for output streams
 Cipe::StringStrings and buffers
 Cipe::CanvasBase::Style
 Cipe::StyleSheetA style sheet maps symbolic names to absolute values
 Cipe::SubPathA subpath of a Path
 Cipe::SymbolA symbol is a named object defined in an ipe::StyleSheet
 Cipe::TextPaddingPadding for text bounding box
 Cipe::Thumbnail
 Cipe::TilingA tiling pattern
 Cipe::StyleSheet::TitleStyleStyle of the title on a page
 Cipe::ToolAbstract base class for various canvas tools
 Cipe::VectorTwo-dimensional vector
 Cipe::VisitorBase class for visitors to Object
 Cipe::Text::XForm
 Cipe::XmlAttributesStores attributes of an XML tag
 Cipe::XmlParserBase class for XML stream parsing

ipe-7.1.10/build/doc/functions_w.html0000644000175000017500000001411512624020245017316 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- w -


ipe-7.1.10/build/doc/ftv2folderopen.png0000644000175000017500000000112512624020245017534 0ustar otfriedotfried‰PNG  IHDRÚ}\ˆIDATxí]?oÓPÿ9iš4i°;ii“¶‰ZЉ‘‰ÀÀ7`bèÔÙ¬Øù,HìU'ô$*Tµ]‚T¡DPÚÄ6wÏ}‰;¡C; a¿ÓߟûÝïîž¼jAÀ­InSþ}€9H“ÓŽ|?íÁ÷ =_ÊÆŠ­†¥Àue*;¯YEäsYäæB¢Ÿ¿þÄ—£sÙ½½ÙŒ† É«›©ÀYÇq !GÇ¿v̇¹ÑØ®š °Œ‚ÔF¹}q¥b]÷7í·0)Úd›¾ÿð-èº}Pfä£ÖY{4™ÑÂ@}úæôñ2ÛüÔ—ñúåNŒI‚ÁǃcçÁº%£¬UаI³mc±ô˜å¼ÔÆüÈ>é¸xþt9Æ$µý OæVE*õU´Ì‚ç#ž×ˆ•ïûr@l$øPÿrHaaÇ¥ ²›dZ®rè‘ãqI„o¼øT\Ž,tªj2FAxv-LŸp׌p TÄI/ \¥sfí½; jViTƒèú¤o^cpÅü¼ûû»Ïb]”€¢¤<†aþÕœ²“ßÓ˜y“£§9:Œîù+À³€ñà,E žf³6éNˆÄE£KU}Ü^;¶ØnZ¢uß­US4— ѬëbížN¶.Úk¦ØjTÄöº%µªâ i¯VÄÊÝò§™ Èù¸)ùÿG€™òºJ@T x”IEND®B`‚ipe-7.1.10/build/doc/functions_o.html0000644000175000017500000002573112624020245017314 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- o -


ipe-7.1.10/build/doc/ftv2pnode.png0000644000175000017500000000034512624020245016507 0ustar otfriedotfried‰PNG  IHDRɪ|¬IDATxí=QF‘Ø¥D«ÔkÄ:‰F©PK؃=V@§Õ³ Õ8SHxñÌ0bnrróŠ{ò½¿¾’$ ÀÏTŠP  ö¼X¬OÛd6êìòð"°²S´±O¥B€(¡àQé)š+YĈ ÒªËRÉÐ>VtÉsˆm9(ê„䜥k‚-@ȧ-Ü$ó b Ò[he ¿Kp-ôl|CùÿApRG'rÍ­aIEND®B`‚ipe-7.1.10/build/doc/bc_s.png0000644000175000017500000000124412624020245015505 0ustar otfriedotfried‰PNG  IHDR€_ kIDATxíËkQÆÏ¹É̤I&“¦mš&156*nÄ…”ܸR,4 +Hµ(U­b”ª1‚ŠˆJ.º(E·mßúhëJmKS'C›(‚èäÑ…¤ï &äÖþ ‡ïrÎåü3gö(z÷ýÒ&_9ó}’ÕŸ@‰mÚu ` Øh`ñ÷Ô¯  „ú&·ññ×Ù~“½—Üò‡ÎÝÑM4¸%‰3²§?Êêh)€ÿù™\ÄYi>Jb @gûßiÞˆú²Ñkg§ãê\è½­šEUæv+?E€î"pæÖÛB\ƒY&ðØó$vM+ê’Dn¼)}òþ:§Xoâ ƒ3ŠÚ¯'¯¿.‚fÁ0ìuŠ9òLýj€f6¸%«3Gf”Ô#Ôsm(,ùÃk*Ê’³Jª…¯¼JË¢o䆔¼u_~ °r]%%mnu]z°r5[ÍÆ°«Úò•Xeµ’†Iù<ÈèÐÅg@IÔÚÞàµë3‚:/<JÇ’ÐQ) ñ¹…tÚß÷(Mû\63éCgl!ýí;ÿ¸4Ùhâñ=÷Zë29­w’ÝÒ´·ˆV;ÊL3ƒj&7©·º½÷a!I†)ëë$-öÇÓú³›‹7tIV¾VàñÔübf¨8¡ÈƒB<﫵imnÿœÈ‡„ lߣù‡ÛD —#É5“­'Æ4?쬲øM’™›°»g¬‚|5Åçµ½GNdÓÐr|ô”Ã&„ì"7+'³@ 5‡G➑Džâɬ^;õã–.3Òr"ý_R³¿Â@²oI¾å$IEND®B`‚ipe-7.1.10/build/doc/classipe_1_1_pdf_obj.html0000644000175000017500000004416312624020245020714 0ustar otfriedotfried Ipelib: ipe::PdfObj Class Reference
ipe::PdfObj Class Referenceabstract

#include <ipepdfparser.h>

Inherited by ipe::PdfArray, ipe::PdfBool, ipe::PdfDict, ipe::PdfName, ipe::PdfNull, ipe::PdfNumber, ipe::PdfRef, and ipe::PdfString.

Public Member Functions

virtual ~PdfObj ()=0
 
virtual const PdfNullnull () const
 
virtual const PdfBoolboolean () const
 
virtual const PdfNumbernumber () const
 
virtual const PdfStringstring () const
 
virtual const PdfNamename () const
 
virtual const PdfRefref () const
 
virtual const PdfArrayarray () const
 
virtual const PdfDictdict () const
 
virtual void write (Stream &stream) const =0
 
String repr () const
 

Detailed Description

Abstract base class for PDF objects.

Constructor & Destructor Documentation

PdfObj::~PdfObj ( )
pure virtual

Pure virtual destructor.

Member Function Documentation

const PdfNull * PdfObj::null ( ) const
virtual

Return this object as PDF null object.

Reimplemented in ipe::PdfNull.

const PdfBool * PdfObj::boolean ( ) const
virtual

Return this object as PDF bool object.

Reimplemented in ipe::PdfBool.

const PdfNumber * PdfObj::number ( ) const
virtual

Return this object as PDF number object.

Reimplemented in ipe::PdfNumber.

const PdfString * PdfObj::string ( ) const
virtual

Return this object as PDF string object.

Reimplemented in ipe::PdfString.

const PdfName * PdfObj::name ( ) const
virtual

Return this object as PDF name object.

Reimplemented in ipe::PdfName.

Referenced by ipe::PdfDict::deflated().

const PdfRef * PdfObj::ref ( ) const
virtual

Return this object as PDF reference object.

Reimplemented in ipe::PdfRef.

Referenced by ipe::PdfArray::obj().

const PdfArray * PdfObj::array ( ) const
virtual

Return this object as PDF array object.

Reimplemented in ipe::PdfArray.

Referenced by ipe::PdfFile::page().

const PdfDict * PdfObj::dict ( ) const
virtual

Return this object as PDF dictionary object.

Reimplemented in ipe::PdfDict.

Referenced by ipe::PdfFile::catalog(), ipe::PdfFile::page(), and ipe::Latex::readPdf().

virtual void ipe::PdfObj::write ( Stream stream) const
pure virtual
String PdfObj::repr ( ) const

Return PDF representation of the object.

References write().


The documentation for this class was generated from the following files:
  • ipepdfparser.h
  • ipepdfparser.cpp

ipe-7.1.10/build/doc/manual_15.html0000644000175000017500000000671112624020245016545 0ustar otfriedotfried Ipe Manual -- 4 Object types
5 SnappingTop3 General Concepts4 Object types

4 Object types

Ipe supports five different types of objects that can be placed on a page, namely path objects (which includes all objects with a stroked contour and filled interior, such as (poly)lines, polygons, splines, splinegons, circles and ellipses, circular and elliptic arcs, and rectangles), text objects, image objects, group objects, and reference objects (which means that a symbol is used at a certain spot on the page).

Path and text objects are created by clicking the left mouse button somewhere on the canvas using the correct Ipe mode. Group objects are created using the Group function in the Edit menu. Image objects are added to the document using the Insert image ipelet. Reference objects can be created either using mark mode, or using the Symbols ipelet.

ipe-7.1.10/build/doc/classipe_1_1_symbol-members.html0000644000175000017500000001024012624020245022233 0ustar otfriedotfried Ipelib: Member List
ipe::Symbol Member List

This is the complete list of members for ipe::Symbol, including all inherited members.

iObjectipe::Symbol
iTransformationsipe::Symbol
iXFormipe::Symbol
operator=(const Symbol &rhs)ipe::Symbol
Symbol()ipe::Symbol
Symbol(Object *object)ipe::Symbol
Symbol(const Symbol &rhs)ipe::Symbol
~Symbol()ipe::Symbol

ipe-7.1.10/build/doc/classipe_1_1_tell_stream-members.html0000644000175000017500000001407612624020245023254 0ustar otfriedotfried Ipelib: Member List
ipe::TellStream Member List

This is the complete list of members for ipe::TellStream, including all inherited members.

close()ipe::Streamvirtual
operator<<(char ch)ipe::Streaminline
operator<<(const String &s)ipe::Streaminline
operator<<(const char *s)ipe::Streaminline
operator<<(int i)ipe::Stream
operator<<(double d)ipe::Stream
putChar(char ch)=0ipe::Streampure virtual
putCString(const char *s)ipe::Streamvirtual
putHexByte(char b)ipe::Stream
putRaw(const char *data, int size)ipe::Streamvirtual
putString(String s)ipe::Streamvirtual
putXmlString(String s)ipe::Stream
tell() const =0ipe::TellStreampure virtual
~Stream()ipe::Streamvirtual

ipe-7.1.10/build/doc/example1.svg0000644000175000017500000002247612624020245016340 0ustar otfriedotfried ipe-7.1.10/build/doc/structipe_1_1_text_1_1_x_form.html0000644000175000017500000002005112624020245022514 0ustar otfriedotfried Ipelib: ipe::Text::XForm Struct Reference
ipe::Text::XForm Struct Reference

#include <ipetext.h>

Public Attributes

unsigned long int iRefCount
 
Buffer iStream
 
Rect iBBox
 
int iDepth
 
std::vector< int > iFonts
 
double iStretch
 

Member Data Documentation

unsigned long int ipe::Text::XForm::iRefCount
Buffer ipe::Text::XForm::iStream
Rect ipe::Text::XForm::iBBox

Referenced by ipe::Text::setXForm().

int ipe::Text::XForm::iDepth

Referenced by ipe::Text::setXForm().

std::vector<int> ipe::Text::XForm::iFonts
double ipe::Text::XForm::iStretch

The documentation for this struct was generated from the following file:
  • ipetext.h

ipe-7.1.10/build/doc/manual_24.html0000644000175000017500000001332112624020245016540 0ustar otfriedotfried Ipe Manual -- 5.3 Angular snapping
5.4 Interaction of the snapping modes5 Snapping5.2 Context snapping5.3 Angular snapping

5.3 Angular snapping

When angular snapping is enabled, the mouse position is restricted to lie on a set of lines through the origin of your current axis system. The lines are the lines whose angle with the base direction is an integer multiple of the snap angle. The snap angle can be set in the second box in the Snap toolbar. The values are indicated in degrees.

For a snap angle of 180 degrees, snapping is to a single line through the current origin.

In order to use angular snapping, it is important to set the axis system correctly. To set the origin, move the mouse to the correct position, and press the F1-key. Note that angular snapping is disabled while setting the origin. This way you can set a new origin for angular snapping without leaving the mode first. Once the origin has been set, the base direction is set by moving to a point on the desired base line, and pressing the F2-key. Again, angular snapping is disabled. Together, origin and base direction determine the current axis system. Remember that the origin is also used as the fix-point of scale, stretch, and rotate operations, if it is set.

You can un-set the current axis system by pressing Shift-F2. This also turns off angular snapping. You can set origin and base direction at the same time by pressing F3 when the mouse is very near (or snapped to) an edge of a polygonal object. The origin is set to an endpoint of the edge, and the base direction is aligned with it. This is useful to make objects parallel to a given edge.

For drawing rectilinear or c-oriented polygons, the origin should be set to the previous vertex at every step. This can be done by pressing F1 every time you click the left mouse button, but that would not be very convenient. Therefore, Ipe offers a second angular snap mode, called automatic angular snapping. This mode uses an independent origin, which is automatically set every time you add a vertex when creating a polygonal object. Note that while the origin is independent of the origin set by F1, the base direction and the snap angle used by automatic angular snapping is the same as for angular snapping. Hence, you can align the axis system with some edge of your drawing using F3, and then use automatic angular snapping to draw a new object that is parallel or orthogonal to this edge.

This snapping mode has another advantage: It remains silent and ineffective until you start creating a polygonal object. So, even with automatic angular snapping already turned on, you can still freely place the first point of a polygon, and then the remaining vertices will be properly aligned to make a c-oriented polygon.

The automatic angular snapping mode is never active for any non-polygonal object. In particular, to move an object in a prescribed direction, you have to use normal angular snapping.

A final note: Many things that can be done with angular snapping can also be done by drawing auxiliary lines and using context snapping. It is mostly a matter of taste and exercise to figure out which mode suits you best.

ipe-7.1.10/build/doc/classipe_1_1_image-members.html0000644000175000017500000003722212624020245022021 0ustar otfriedotfried Ipelib: Member List
ipe::Image Member List

This is the complete list of members for ipe::Image, including all inherited members.

accept(Visitor &visitor) const ipe::Imagevirtual
addToBBox(Rect &box, const Matrix &m, bool) const ipe::Imagevirtual
asGroup()ipe::Objectvirtual
asImage()ipe::Imagevirtual
asPath()ipe::Objectvirtual
asReference()ipe::Objectvirtual
asText()ipe::Objectvirtual
bitmap() const ipe::Imageinline
checkStyle(const Cascade *sheet, AttributeSeq &seq) const ipe::Objectvirtual
checkSymbol(Kind kind, Attribute attr, const Cascade *sheet, AttributeSeq &seq)ipe::Objectprotectedstatic
clone() const ipe::Imagevirtual
distance(const Vector &v, const Matrix &m, double bound) const ipe::Imagevirtual
draw(Painter &painter) const ipe::Imagevirtual
drawSimple(Painter &painter) const ipe::Imagevirtual
EGroup enum valueipe::Object
EImage enum valueipe::Object
EPath enum valueipe::Object
EReference enum valueipe::Object
EText enum valueipe::Object
getAttribute(Property prop)ipe::Objectvirtual
Image(const Rect &rect, Bitmap bitmap)ipe::Imageexplicit
Image(const XmlAttributes &attr, String data)ipe::Imageexplicit
Image(const XmlAttributes &attr, Bitmap bitmap)ipe::Imageexplicit
iMatrixipe::Objectprotected
iPinnedipe::Objectprotected
iTransformationsipe::Objectprotected
matrix() const ipe::Objectinline
Object()ipe::Objectexplicitprotected
Object(const AllAttributes &attr)ipe::Objectexplicitprotected
Object(const Object &rhs)ipe::Objectprotected
Object(const XmlAttributes &attr)ipe::Objectexplicitprotected
pinned() const ipe::Objectvirtual
rect() const ipe::Imageinline
saveAsXml(Stream &stream, String layer) const ipe::Imagevirtual
saveAttributesAsXml(Stream &stream, String layer) const ipe::Objectprotected
setAttribute(Property prop, Attribute value)ipe::Objectvirtual
setMatrix(const Matrix &matrix)ipe::Object
setPinned(TPinned pin)ipe::Object
setTransformations(TTransformations trans)ipe::Object
snapBnd(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Objectvirtual
snapCtl(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Imagevirtual
snapVtx(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Objectvirtual
transformations() const ipe::Objectinline
Type enum nameipe::Object
type() const ipe::Imagevirtual
~Object()=0ipe::Objectpure virtual

ipe-7.1.10/build/doc/classipe_1_1_path.html0000644000175000017500000033350512624020245020246 0ustar otfriedotfried Ipelib: ipe::Path Class Reference

#include <ipepath.h>

Inherits ipe::Object.

Public Member Functions

 Path (const AllAttributes &attr, const Shape &shape, bool withArrows=false)
 
virtual Objectclone () const
 
virtual PathasPath ()
 
virtual Type type () const
 
void setPathMode (TPathMode pm)
 
void setStroke (Attribute stroke)
 
void setFill (Attribute fill)
 
void setPen (Attribute pen)
 
void setDashStyle (Attribute dash)
 
void setLineCap (TLineCap s)
 
void setLineJoin (TLineJoin s)
 
void setFillRule (TFillRule s)
 
void setOpacity (Attribute opaq)
 
void setTiling (Attribute a)
 
void setGradient (Attribute a)
 
Attribute opacity () const
 
Attribute tiling () const
 
Attribute gradient () const
 
TPathMode pathMode () const
 
Attribute stroke () const
 
Attribute fill () const
 
Attribute pen () const
 
Attribute dashStyle () const
 
TLineCap lineCap () const
 
TLineJoin lineJoin () const
 
TFillRule fillRule () const
 
virtual void saveAsXml (Stream &stream, String layer) const
 
virtual void draw (Painter &painter) const
 
virtual void drawSimple (Painter &painter) const
 
virtual void accept (Visitor &visitor) const
 
virtual void addToBBox (Rect &box, const Matrix &m, bool cp) const
 
virtual double distance (const Vector &v, const Matrix &m, double bound) const
 
virtual void snapVtx (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
virtual void snapCtl (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
virtual void snapBnd (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
virtual void checkStyle (const Cascade *sheet, AttributeSeq &seq) const
 
virtual bool setAttribute (Property prop, Attribute value)
 
virtual Attribute getAttribute (Property prop)
 
bool arrow () const
 
bool rArrow () const
 
Attribute arrowShape () const
 
Attribute rArrowShape () const
 
Attribute arrowSize () const
 
Attribute rArrowSize () const
 
void setArrow (bool arrow, Attribute shape, Attribute size)
 
void setRarrow (bool arrow, Attribute shape, Attribute size)
 
const Shapeshape () const
 
void setShape (const Shape &shape)
 
- Public Member Functions inherited from ipe::Object
virtual ~Object ()=0
 
virtual GroupasGroup ()
 
virtual TextasText ()
 
virtual ImageasImage ()
 
virtual ReferenceasReference ()
 
virtual TPinned pinned () const
 
void setPinned (TPinned pin)
 
TTransformations transformations () const
 
void setTransformations (TTransformations trans)
 
void setMatrix (const Matrix &matrix)
 
const Matrixmatrix () const
 

Static Public Member Functions

static Pathcreate (const XmlAttributes &attr, String data)
 
static void drawArrow (Painter &painter, Vector pos, Angle alpha, Attribute shape, Attribute size, double radius)
 

Additional Inherited Members

- Public Types inherited from ipe::Object
enum  Type {
  EGroup, EPath, EText, EImage,
  EReference
}
 
- Protected Member Functions inherited from ipe::Object
 Object ()
 
 Object (const AllAttributes &attr)
 
 Object (const Object &rhs)
 
 Object (const XmlAttributes &attr)
 
void saveAttributesAsXml (Stream &stream, String layer) const
 
- Static Protected Member Functions inherited from ipe::Object
static void checkSymbol (Kind kind, Attribute attr, const Cascade *sheet, AttributeSeq &seq)
 
- Protected Attributes inherited from ipe::Object
Matrix iMatrix
 
TPinned iPinned: 8
 
TTransformations iTransformations: 8
 

Detailed Description

The path object (polylines, polygons, and generalizations).

This object represents any vector graphics. The geometry is contained in a Shape.

The filling algorithm is the even-odd rule of PDF: To determine whether a point lies inside the filled shape, draw a ray from that point in any direction, and count the number of path segments that cross the ray. If this number is odd, the point is inside; if even, the point is outside. (Path objects can also render using the winding fill rule by setting the fillRule attribute. This isn't really supported by the Ipe user interface, which doesn't show the orientation of paths.)

If the path consists of a single line segment and is filled only, then it is not drawn at all. This can be used to draw arrow heads without bodies. The fill color is used to draw the arrows in this case.

Constructor & Destructor Documentation

Path::Path ( const AllAttributes attr,
const Shape shape,
bool  withArrows = false 
)
explicit

Create for given shape.

Referenced by clone().

Member Function Documentation

Path * Path::create ( const XmlAttributes attr,
String  data 
)
static

Construct from XML data.

Object * Path::clone ( ) const
virtual

Return a clone (constant-time).

Implements ipe::Object.

References Path().

Path * Path::asPath ( )
virtual

Return pointer to this object.

Reimplemented from ipe::Object.

Object::Type Path::type ( ) const
virtual

Implements ipe::Object.

References ipe::Object::EPath.

void Path::setPathMode ( TPathMode  pm)

Set whether object will be stroked and filled.

Referenced by setAttribute().

void Path::setStroke ( Attribute  stroke)

Set stroke color.

References stroke().

Referenced by setAttribute().

void Path::setFill ( Attribute  fill)

Set fill color.

References fill().

Referenced by setAttribute().

void Path::setPen ( Attribute  pen)

Set pen.

References pen().

Referenced by setAttribute().

void Path::setDashStyle ( Attribute  dash)

Set dash style.

Referenced by setAttribute().

void Path::setLineCap ( TLineCap  s)

Set line cap style.

void Path::setLineJoin ( TLineJoin  s)

Set line join style.

void Path::setFillRule ( TFillRule  s)

Set fill rule.

void Path::setOpacity ( Attribute  opaq)

Set opacity of the object.

Referenced by setAttribute().

void Path::setTiling ( Attribute  til)

Set tiling pattern of the object.

Resets gradient fill.

References ipe::Attribute::NORMAL().

Referenced by setAttribute().

void Path::setGradient ( Attribute  grad)

Set gradient fill of the object.

Resets tiling pattern.

References ipe::Attribute::NORMAL().

Referenced by setAttribute().

Attribute ipe::Path::opacity ( ) const
inline

Return opacity of the opject.

Referenced by getAttribute(), and setAttribute().

Attribute ipe::Path::tiling ( ) const
inline

Return tiling pattern.

Referenced by getAttribute(), and setAttribute().

Attribute ipe::Path::gradient ( ) const
inline

Return gradient fill.

Referenced by getAttribute(), and setAttribute().

TPathMode ipe::Path::pathMode ( ) const
inline

Is the object stroked and filled?

Referenced by setAttribute().

Attribute ipe::Path::stroke ( ) const
inline

Return stroke color.

Referenced by getAttribute(), setAttribute(), and setStroke().

Attribute ipe::Path::fill ( ) const
inline

Return object fill color.

Referenced by getAttribute(), setAttribute(), and setFill().

Attribute ipe::Path::pen ( ) const
inline

Return object pen.

Referenced by getAttribute(), setAttribute(), and setPen().

Attribute ipe::Path::dashStyle ( ) const
inline

Return object line style.

Referenced by getAttribute(), and setAttribute().

TLineCap ipe::Path::lineCap ( ) const
inline

Return line cap style.

Referenced by draw().

TLineJoin ipe::Path::lineJoin ( ) const
inline

Return line join style.

Referenced by draw().

TFillRule ipe::Path::fillRule ( ) const
inline

Return fill rule.

Referenced by draw().

void Path::accept ( Visitor visitor) const
virtual

Call visitPath of visitor.

Implements ipe::Object.

References ipe::Visitor::visitPath().

void Path::addToBBox ( Rect box,
const Matrix m,
bool  cp 
) const
virtual

Extend box to include the object transformed by m.

For objects in a page, don't call this directly. The Page caches the bounding box of each object, so it is far more efficient to call Page::bbox.

Control points that lie outside the visual object are included if cp is true.

If called with an empty box and cp == false, the result of this function is a tight bounding box for the object, with a little leeway in case the boundary is determined by a spline (it has to be approximated to perform this operation).

Implements ipe::Object.

References ipe::Shape::addToBBox(), and ipe::Object::matrix().

double Path::distance ( const Vector v,
const Matrix m,
double  bound 
) const
virtual

Return distance of transformed object to point v. If larger than bound, can just return bound.

Implements ipe::Object.

References ipe::Shape::distance(), and ipe::Object::matrix().

void Path::snapVtx ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
virtual

Compute vertex snapping position for transformed object.

Looks only for positions closer than bound. If successful, modify pos and bound. The default implementation does nothing.

Reimplemented from ipe::Object.

References ipe::Object::matrix(), and ipe::Shape::snapVtx().

void Path::snapCtl ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
virtual

Compute control point snapping position for transformed object.

Looks only for positions closer than bound. If successful, modify pos and bound. The default implementation does nothing.

Reimplemented from ipe::Object.

References ipe::Object::matrix(), and ipe::Shape::snapVtx().

void Path::snapBnd ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
virtual

Compute boundary snapping position for transformed object.

Looks only for positions closer than bound. If successful, modify pos and bound. The default implementation does nothing.

Reimplemented from ipe::Object.

References ipe::Object::matrix(), and ipe::Shape::snapBnd().

void Path::checkStyle ( const Cascade sheet,
AttributeSeq seq 
) const
virtual
bool ipe::Path::arrow ( ) const
inline

Does object have an arrow?

Referenced by setArrow(), and setRarrow().

bool ipe::Path::rArrow ( ) const
inline

Does object have a reverse arrow?

Attribute ipe::Path::arrowShape ( ) const
inline

Return shape of arrow.

Attribute ipe::Path::rArrowShape ( ) const
inline

Return shape of reverse arrow.

Attribute ipe::Path::arrowSize ( ) const
inline

Return size of arrow.

Attribute ipe::Path::rArrowSize ( ) const
inline

Return size of reverse arrow.

void Path::setArrow ( bool  arrow,
Attribute  shape,
Attribute  size 
)

Set forward arrow.

References arrow(), and shape().

void Path::setRarrow ( bool  arrow,
Attribute  shape,
Attribute  size 
)

Set backward arrow (if the object can take it).

References arrow(), and shape().

const Shape& ipe::Path::shape ( ) const
inline

Return shape of the path object.

Referenced by setArrow(), setRarrow(), and setShape().

void Path::setShape ( const Shape shape)

References shape().


The documentation for this class was generated from the following files:
  • ipepath.h
  • ipepath.cpp

ipe-7.1.10/build/doc/ftv2vertline.png0000644000175000017500000000012612624020245017227 0ustar otfriedotfried‰PNG  IHDRɪ|IDATxíݱðøScOx@ –¨y}IEND®B`‚ipe-7.1.10/build/doc/classipe_1_1_data_source-members.html0000644000175000017500000000546612624020245023235 0ustar otfriedotfried Ipelib: Member List
ipe::DataSource Member List

This is the complete list of members for ipe::DataSource, including all inherited members.

getChar()=0ipe::DataSourcepure virtual
~DataSource()=0ipe::DataSourcepure virtual

ipe-7.1.10/build/doc/structipe_1_1_gradient_1_1_stop.html0000644000175000017500000001111212624020245023016 0ustar otfriedotfried Ipelib: ipe::Gradient::Stop Struct Reference
ipe::Gradient::Stop Struct Reference

#include <ipeattributes.h>

Public Attributes

double offset
 
Color color
 

Detailed Description

A color stop.

Member Data Documentation

double ipe::Gradient::Stop::offset

Offset between 0.0 and 1.0.

Referenced by ipe::ImlParser::parseStyle().

Color ipe::Gradient::Stop::color

The color at this offset.

Referenced by ipe::ImlParser::parseStyle().


The documentation for this struct was generated from the following file:
  • ipeattributes.h

ipe-7.1.10/build/doc/classipe_1_1_bezier.html0000644000175000017500000012032712624020245020566 0ustar otfriedotfried Ipelib: ipe::Bezier Class Reference

#include <ipegeo.h>

Public Member Functions

 Bezier ()
 
 Bezier (const Vector &p0, const Vector &p1, const Vector &p2, const Vector &p3)
 
Vector point (double t) const
 
Vector tangent (double t) const
 
double distance (const Vector &v, double bound)
 
bool straight (double precision) const
 
void subdivide (Bezier &l, Bezier &r) const
 
void approximate (double precision, std::vector< Vector > &result) const
 
Rect bbox () const
 
bool snap (const Vector &v, double &t, Vector &pos, double &bound) const
 
void intersect (const Line &l, std::vector< Vector > &result) const
 
void intersect (const Segment &l, std::vector< Vector > &result) const
 
void intersect (const Bezier &b, std::vector< Vector > &result) const
 

Static Public Member Functions

static Bezier quadBezier (const Vector &p0, const Vector &p1, const Vector &p2)
 
static void oldSpline (int n, const Vector *v, std::vector< Bezier > &result)
 
static void spline (int n, const Vector *v, std::vector< Bezier > &result)
 
static void closedSpline (int n, const Vector *v, std::vector< Bezier > &result)
 

Public Attributes

Vector iV [4]
 

Detailed Description

A cubic Bezier spline.

Constructor & Destructor Documentation

ipe::Bezier::Bezier ( )
inline

Default constructor, uninitialized curve.

Referenced by closedSpline(), intersect(), oldSpline(), quadBezier(), and spline().

ipe::Bezier::Bezier ( const Vector p0,
const Vector p1,
const Vector p2,
const Vector p3 
)
inline

Constructor with four control points.

References iV.

Member Function Documentation

Vector Bezier::point ( double  t) const

Return point on curve with parameter t (from 0.0 to 1.0).

References iV.

Referenced by snap().

Vector Bezier::tangent ( double  t) const

Return tangent direction of curve at parameter t (from 0.0 to 1.0).

The returned vector is not normalized.

References iV.

Referenced by ipe::Snap::setEdge().

double Bezier::distance ( const Vector v,
double  bound 
)

Return distance to Bezier spline.

But may just return bound if actual distance is larger. The Bezier spline is approximated to a precision of 1.0, and the distance to the approximation is returned.

References ipe::Rect::addPoint(), approximate(), ipe::Rect::certainClearance(), and iV.

bool Bezier::straight ( double  precision) const

Returns true if the Bezier curve is nearly identical to the line segment iV[0]..iV[3].

References ipe::Line::distance(), iV, and ipe::Line::through().

Referenced by approximate(), intersect(), ipe::Arc::intersect(), and snap().

void Bezier::subdivide ( Bezier l,
Bezier r 
) const

Subdivide this Bezier curve in the middle.

References iV.

Referenced by approximate(), intersect(), ipe::Arc::intersect(), and snap().

void Bezier::approximate ( double  precision,
std::vector< Vector > &  result 
) const

Approximate by a polygonal chain.

result must be empty when calling this.

References approximate(), iV, straight(), and subdivide().

Referenced by approximate(), bbox(), and distance().

Rect Bezier::bbox ( ) const

Return a tight bounding box (accurate to within 0.5).

References ipe::Rect::addPoint(), approximate(), ipe::Rect::bottomLeft(), iV, and ipe::Rect::topRight().

Referenced by ipe::BBoxPainter::doCurveTo().

bool Bezier::snap ( const Vector v,
double &  t,
Vector pos,
double &  bound 
) const

Find (approximately) nearest point on Bezier spline.

Find point on spline nearest to v, but only if it is closer than bound. If a point is found, sets t to the parameter value and pos to the actual point, and returns true.

References ipe::Rect::addPoint(), ipe::Rect::certainClearance(), iV, point(), ipe::Segment::project(), ipe::Vector::snap(), snap(), straight(), and subdivide().

Referenced by ipe::Snap::setEdge(), and snap().

Bezier Bezier::quadBezier ( const Vector p0,
const Vector p1,
const Vector p2 
)
static

Convert a quadratic Bezier-spline to a cubic one.

The quadratic Bezier-spline with control points p0, p1, p2 is identical to the cubic Bezier-spline with control points q0 = p0, q1 = (2p1 + p0)/3, q2 = (2p1 + p2)/3, q3 = p2.

References Bezier().

Referenced by spline().

void Bezier::oldSpline ( int  n,
const Vector v,
std::vector< Bezier > &  result 
)
static

Convert an old-style Ipe B-spline to a series of Bezier splines.

For some reason lost in the mist of time, this was the definition of splines in Ipe for many years. It doesn't use knots. The first and last control point are simply given multiplicity 3.

Bezier splines are appended to result.

References Bezier().

Referenced by ipe::CurveSegment::beziers().

void Bezier::spline ( int  n,
const Vector v,
std::vector< Bezier > &  result 
)
static

Convert a clamped uniform B-spline to a series of Bezier splines.

See Thomas Sederberg, Computer-Aided Geometric Design, Chapter 6.

In polar coordinates, a control point is defined by three knots, so n control points need n + 2 knots. To clamp the spline to the first and last control point, the first and last knot are repeated three times. This leads to k knot intervals and the knot sequence [0, 0, 0, 1, 2, 3, 4, 5, 6, ..., k-2, k-1, k, k, k] There are k + 5 = n + 2 knots in this sequence, so k = n-3 is the number of knot intervals and therefore the number of output Bezier curves.

If n = 4, the knot sequence is [0, 0, 0, 1, 1, 1] and the result is simply the Bezier curve on the four control points.

When n in {2, 3}, returns a single Bezier curve that is a segment or quadratic Bezier spline. This is different from the behaviour of the "old" Ipe splines.

Bezier splines are appended to result.

References Bezier(), and quadBezier().

Referenced by ipe::CurveSegment::beziers().

void Bezier::closedSpline ( int  n,
const Vector v,
std::vector< Bezier > &  result 
)
static

Convert a closed uniform cubic B-spline to a series of Bezier splines.

Bezier splines are appended to result.

References Bezier().

Referenced by ipe::ClosedSpline::beziers().

void Bezier::intersect ( const Line l,
std::vector< Vector > &  result 
) const

Compute intersection points of Bezier with Line.

References intersect(), ipe::Segment::intersects(), iV, ipe::Line::side(), straight(), and subdivide().

Referenced by intersect().

void Bezier::intersect ( const Segment l,
std::vector< Vector > &  result 
) const

Compute intersection points of Bezier with Segment.

References Bezier(), ipe::Segment::iP, and ipe::Segment::iQ.

void Bezier::intersect ( const Bezier b,
std::vector< Vector > &  result 
) const

Compute intersection points of Bezier with Bezier.

Member Data Documentation


The documentation for this class was generated from the following files:
  • ipegeo.h
  • ipegeo.cpp

ipe-7.1.10/build/doc/manual_ipe_copyright.html0000644000175000017500000000675112624020245021171 0ustar otfriedotfried Ipe Manual -- 14 Copyright
ContentsTop13 History and acknowledgments14 Copyright

14 Copyright

Ipe is "free," this means that everyone is free to use it and free to redistribute it on certain conditions. Ipe is not in the public domain; it is copyrighted and there are restrictions on its distribution as follows:

Copyright © 1993–2015 Otfried Cheong

This program is free software; you can redistribute it and/or modify it under the terms of the Gnu General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

As a special exception, you have permission to link Ipe with the CGAL library and distribute executables, as long as you follow the requirements of the Gnu General Public License in regard to all of the software in the executable aside from CGAL.

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.

ipe-7.1.10/build/doc/functions_u.html0000644000175000017500000001245612624020245017322 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- u -


ipe-7.1.10/build/doc/tab_b.png0000644000175000017500000000025112624020245015643 0ustar otfriedotfried‰PNG  IHDR$ÇÇ[pIDATxíÝMƒ EáÇ»ÐÔ¸¸u`âÀ´V0РÆ}:t]DÁ²s¿ä®‚¶ýËu¥ø|’xùî½À>ÿ1»& mÄ8ÜSÙÑxÜLÀUûšÞ²ÄiE–ŠåOs„¢’nxàÒêÓKN²~jIEND®B`‚ipe-7.1.10/build/doc/classipe_1_1_matrix-members.html0000644000175000017500000002014312624020245022235 0ustar otfriedotfried Ipelib: Member List
ipe::Matrix Member List

This is the complete list of members for ipe::Matrix, including all inherited members.

aipe::Matrix
determinant() const ipe::Matrixinline
inverse() const ipe::Matrix
isIdentity() const ipe::Matrixinline
linear() const ipe::Matrixinline
Matrix()ipe::Matrixinline
Matrix(const Linear &linear)ipe::Matrixinline
Matrix(const Linear &linear, const Vector &t)ipe::Matrixinlineexplicit
Matrix(double m11, double m21, double m12, double m22, double t1, double t2)ipe::Matrixinlineexplicit
Matrix(const Vector &v)ipe::Matrixinlineexplicit
Matrix(String str)ipe::Matrixexplicit
operator*(const Vector &rhs) const ipe::Matrixinline
operator*(const Bezier &rhs) const ipe::Matrixinline
operator*(const Bezier &rhs) constipe::Matrixrelated
operator*(const Vector &rhs) constipe::Matrixrelated
operator*(const Matrix &lhs, const Matrix &rhs)ipe::Matrixrelated
operator*(const Matrix &lhs, const Arc &rhs)ipe::Matrixrelated
operator<<(Stream &stream, const Matrix &rhs)ipe::Matrixrelated
operator==(const Matrix &rhs) const ipe::Matrixinline
translation() const ipe::Matrixinline

ipe-7.1.10/build/doc/luaipe.html0000644000175000017500000001155312624020245016242 0ustar otfriedotfried Ipelib: Lua bindings for Ipe
Lua bindings for Ipe

These are the Lua methods provided by the Ipe program itself. They are only available to Lua code running inside Ipe.

Application user interface

The application user interface object provides the GUI for the Ipe program.

-- model is a Lua table containing methods that will be called 
-- by the ui when events occur
ui = AppUi(model)

-- returns window id of window
-- (to be used as parent for dialogs)
id = ui:win()

ui:close()         -- close window

ui:setActionState(name, t) -- set whether action is checked 
t = ui:actionState(name)   -- is action checked?
-- return info about action: id, and whether it's always on 
id, alwaysOn = actionInfo(name)       

ui:explain(text)     -- show message in status bar for a few seconds
ui:setWindowTitle(caption)

-- make a tool visible or invisible
-- tool is one of "layers", "properties", "bookmarks", "notes"
-- t is true or false
ui:showTool(tool, t)

ui:setNotes(n)       -- set string for Notes tool


-- set contents of attribute selectors from style sheet
ui:setupSymbolicNames(styleSheet)

-- set attribute values displayed in user interface
-- 'attributes' table see below
ui:setAttributes(styleSheet, attributes)

-- set layer list from page
ui:setLayers(page, view)  

ui:setNumbers(?)
ui:setBookmarks(?)

-- page/view selector tool:
-- select one page and return page number (or nil if canceled)
pno = ui:selectPage(doc) 
-- select one view and return view number (or nil if canceled)
vno = ui:selectPage(doc, page_no)

ui:pageSorter(?)

ui:setClipboard(text)     -- store text on system clipboard
-- get text or bitmap property from system clipboard
-- if t is false, only text is retrieved
-- returns either a string or an image object.
obj = ipeui.clipboard(t)  

The following methods work on the canvas inside the UI:

ui:setPage(page, pgno, view, styleSheet) -- set page shown on canvas
ui:setSnap(snap)                    -- for 'snap' table see below
ui:setFontPool(p)       -- an opaque object obtained from an ipe.Document

-- 'pan' is a vector indicating the user coordinates at canvas center
v = ui:pan()       
ui:setPan(v)

zoom = ui:zoom()        -- a number
ui:setZoom(zoom)

v = ui:pos()            -- current mouse position, after snapping
v = ui:unsnappedPos()   -- current mouse position, before snapping
v = ui:simpleSnapPos()  -- same, but ignoring angular snap
v = ui:globalPos()      -- mouse position on screen

v = ui:canvasSize()     -- size of canvas in pixels

ui:setNumbering(t)      -- true or false
ui:setFifiVisible(t)    -- true or false
ui:setSelectionVisible(t) -- true or false
ui:setPretty(t)         -- true or false

-- setCursor only implemented on Qt.
-- Windows 8 switches to a dot cursor automatically when using the pen.
ui:setCursor(name)         -- name in "standard", "hand", "cross"
ui:setCursor(width, color) -- sets a colored dot cursor (on Qt)

ui:update()             -- update canvas and tool
ui:update(false)        -- update tool only
ui:finishTool()

ui:panTool()
ui:selectTool()
ui:transformTool()
ui:shapeTool()

ipe-7.1.10/build/doc/manual_37.html0000644000175000017500000000666412624020245016560 0ustar otfriedotfried Ipe Manual -- 8.3 Troubleshooting the LaTeX-conversion
8.4 Unicode text8 Advanced topics8.2 Writing ipelets8.3 Troubleshooting the LaTeX-conversion

8.3 Troubleshooting the LaTeX-conversion

Ipe converts text objects from their Latex source representation to a representation that can be rendered and included in Postscript and PDF by creating a Latex source file and running Pdflatex. This happens in a dedicated directory, which Ipe creates the first time it is used. The Latex source and output files are left in that directory and not deleted even when you close Ipe, to make it easy to solve problems with the Latex conversion process.

You can determine the directory used by Ipe using Show configuration in the Help menu. If you'd prefer to use a different directory, set the environment variable IPELATEXDIR before starting Ipe.

If Ipe fails to translate your text objects, and you cannot find the problem by looking at the log file displayed by Ipe (or Ipe doesn't even display the log file), you can terminate Ipe, go to the conversion directory, and run Pdflatex manually:

pdflatex ipetemp.tex
ipe-7.1.10/build/doc/classipe_1_1_color-members.html0000644000175000017500000001251712624020245022055 0ustar otfriedotfried Ipelib: Member List
ipe::Color Member List

This is the complete list of members for ipe::Color, including all inherited members.

Color()ipe::Colorinline
Color(String str)ipe::Colorexplicit
Color(int r, int g, int b)ipe::Colorexplicit
iBlueipe::Color
iGreenipe::Color
iRedipe::Color
isGray() const ipe::Color
operator!=(const Color &rhs) const ipe::Colorinline
operator<<(Stream &stream, const Color &attr)ipe::Colorrelated
operator==(const Color &rhs) const ipe::Color
save(Stream &stream) const ipe::Color
saveRGB(Stream &stream) const ipe::Color

ipe-7.1.10/build/doc/classipe_1_1_face-members.html0000644000175000017500000000777212624020245021644 0ustar otfriedotfried Ipelib: Member List
ipe::Face Member List

This is the complete list of members for ipe::Face, including all inherited members.

cairoFont()ipe::Faceinline
Face(int id, const Font &font)ipe::Face
getGlyph(int ch)ipe::Face
matches(int id) const ipe::Faceinline
type() const ipe::Faceinline
width(int ch) const ipe::Faceinline
~Face()ipe::Face

ipe-7.1.10/build/doc/classipe_1_1_pdf_name-members.html0000644000175000017500000001355112624020245022507 0ustar otfriedotfried Ipelib: Member List
ipe::PdfName Member List

This is the complete list of members for ipe::PdfName, including all inherited members.

array() const ipe::PdfObjvirtual
boolean() const ipe::PdfObjvirtual
dict() const ipe::PdfObjvirtual
name() const ipe::PdfNamevirtual
null() const ipe::PdfObjvirtual
number() const ipe::PdfObjvirtual
PdfName(const String &val)ipe::PdfNameinlineexplicit
ref() const ipe::PdfObjvirtual
repr() const ipe::PdfObj
string() const ipe::PdfObjvirtual
value() const ipe::PdfNameinline
write(Stream &stream) const ipe::PdfNamevirtual
~PdfObj()=0ipe::PdfObjpure virtual

ipe-7.1.10/build/doc/classipe_1_1_pdf_array.html0000644000175000017500000004105512624020245021255 0ustar otfriedotfried Ipelib: ipe::PdfArray Class Reference
ipe::PdfArray Class Reference

#include <ipepdfparser.h>

Inherits ipe::PdfObj.

Public Member Functions

 PdfArray ()
 
 ~PdfArray ()
 
virtual const PdfArrayarray () const
 
virtual void write (Stream &stream) const
 
void append (const PdfObj *)
 
int count () const
 
const PdfObjobj (int index, const PdfFile *file) const
 
- Public Member Functions inherited from ipe::PdfObj
virtual ~PdfObj ()=0
 
virtual const PdfNullnull () const
 
virtual const PdfBoolboolean () const
 
virtual const PdfNumbernumber () const
 
virtual const PdfStringstring () const
 
virtual const PdfNamename () const
 
virtual const PdfRefref () const
 
virtual const PdfDictdict () const
 
String repr () const
 

Detailed Description

The PDF array object.

Constructor & Destructor Documentation

ipe::PdfArray::PdfArray ( )
inlineexplicit
PdfArray::~PdfArray ( )

Member Function Documentation

const PdfArray * PdfArray::array ( ) const
virtual

Return this object as PDF array object.

Reimplemented from ipe::PdfObj.

void PdfArray::write ( Stream stream) const
virtual

Implements ipe::PdfObj.

References count(), obj(), and ipe::PdfObj::write().

void PdfArray::append ( const PdfObj obj)

Append an object to array.

Array takes ownership of the object.

int ipe::PdfArray::count ( ) const
inline

Referenced by write().

const PdfObj * PdfArray::obj ( int  index,
const PdfFile file 
) const

Return object with index in array.

Indirect objects (references) are looked up if file is not zero, and the object referred to is returned (0 if it does not exist). Object remains owned by array.

References ipe::PdfFile::object(), ipe::PdfObj::ref(), and ipe::PdfRef::value().

Referenced by ipe::PdfFile::page(), and write().


The documentation for this class was generated from the following files:
  • ipepdfparser.h
  • ipepdfparser.cpp

ipe-7.1.10/build/doc/classipe_1_1_a85_source.html0000644000175000017500000001365112624020245021264 0ustar otfriedotfried Ipelib: ipe::A85Source Class Reference

#include <ipeutils.h>

Inherits ipe::DataSource.

Public Member Functions

 A85Source (DataSource &source)
 
virtual int getChar ()
 
- Public Member Functions inherited from ipe::DataSource
virtual ~DataSource ()=0
 

Detailed Description

Filter source adding ASCII85 decoding.

Constructor & Destructor Documentation

A85Source::A85Source ( DataSource source)

Member Function Documentation

int A85Source::getChar ( )
virtual

Get one more character, or EOF.

Implements ipe::DataSource.

References ipe::DataSource::getChar().


The documentation for this class was generated from the following files:
  • ipeutils.h
  • ipeutils.cpp

ipe-7.1.10/build/doc/sync_off.png0000644000175000017500000000152512624020245016407 0ustar otfriedotfried‰PNG  IHDRàw=øIDATxíÝKhTWÀñÿä1I&3™8M¦Iš™†I3Ú©b$cÌ I1V1±-(Tö±±Ð.* t!‚K[¥Ä¥ˆ„¨´f£`l(øl©"Y”¤6ÆgÌTú}·sgîܹ ±d{8?æÌ¹÷;çÜuíÚ`:!±F¬¢BäŠ?ŰÄm'yÊÅ>ÑlU¯½üý‰è_‹?€Œê ]€Y(ŠNñ±8fý1°Öqún-eâ¨øtºmâÈ Ó0}b›ù%·©µ×Œ®=Ÿ0´³?Š1sŸ‹0€¯8À‘;_ ‹W|%\ Zð— >舽ln¨p©.aÇ{ )t;Ú b nŸš¯›65°¢¡2çÅÔ?Žž>Oдàuönm¤¢Ì`×­Z¬WjC~>‘Ö¾0+á {{©fÝ×Mæ·æÅ•ìÙ¼˜` Ý›%uA6´½ÅÆö¨Á,]k¢ÄW¼™u±›]‹ˆ7§¯iòh€ ¶¶¬ÏÖu1 ló —Ҷ̺–:ÞÍ\ÄcãÏxøhR²Êè‡Qt$¿ß§¨ ª fdºü<4BÿÙ[•f¸d7=.Mé9/—éªÃëù/ÿO Üaàò}€,‘j?Ÿõ.5Úšm?œÿŸ®ŽXÿ2¬#¸d píæ(£?cÛú¼!½›a1¥Þ—ŽòØ©ܾ7dÔK:‚ùÒ‰ì)Ê3‚Ü™àÌà]€,±H€µ+køöäu<|`·LhC7¹ÔeÍ Ÿ×Ÿ˜tÜ‹ óH$^2%l.êaeÐäýE”ÌÉ|ÅÜìî‰Ýsä }¸ýDû^hzé~ðR›¦Ã¡¿]|#ü¯@×—Ö‡[k¹–<|š(Ç*€Ý¹dÇtMé:Ýñø«Ø,êÅû¢]”' øXÓ_nò¡Æ|Øý /c§fžâOIEND®B`‚ipe-7.1.10/build/doc/classipe_1_1_pdf_painter.html0000644000175000017500000021732712624020245021610 0ustar otfriedotfried Ipelib: ipe::PdfPainter Class Reference

#include <ipepdfwriter.h>

Inherits ipe::Painter.

Inherited by ipe::PsPainter.

Public Member Functions

 PdfPainter (const Cascade *style, Stream &stream)
 
virtual ~PdfPainter ()
 
- Public Member Functions inherited from ipe::Painter
 Painter (const Cascade *style)
 
virtual ~Painter ()
 
void transform (const Matrix &m)
 
void untransform (TTransformations trans)
 
void translate (const Vector &v)
 
void push ()
 
void pop ()
 
void pushMatrix ()
 
void popMatrix ()
 
void newPath ()
 
void moveTo (const Vector &v)
 
void lineTo (const Vector &v)
 
void curveTo (const Vector &v1, const Vector &v2, const Vector &v3)
 
void curveTo (const Bezier &bezier)
 
void rect (const Rect &re)
 
void drawEllipse ()
 
void drawArc (const Arc &arc)
 
void closePath ()
 
void drawPath (TPathMode mode)
 
void drawBitmap (Bitmap bitmap)
 
void drawText (const Text *text)
 
void drawSymbol (Attribute symbol)
 
void addClipPath ()
 
void setStroke (Attribute color)
 
void setFill (Attribute color)
 
void setPen (Attribute pen)
 
void setDashStyle (Attribute dash)
 
void setLineCap (TLineCap cap)
 
void setLineJoin (TLineJoin join)
 
void setFillRule (TFillRule rule)
 
void setSymStroke (Attribute color)
 
void setSymFill (Attribute color)
 
void setSymPen (Attribute wid)
 
void setOpacity (Attribute opaq)
 
void setTiling (Attribute til)
 
void setGradient (Attribute grad)
 
const Cascadecascade () const
 
Color stroke () const
 
Color fill () const
 
const Matrixmatrix () const
 
Fixed pen () const
 
String dashStyle () const
 
void dashStyle (std::vector< double > &dashes, double &offset) const
 
TLineCap lineCap () const
 
TLineJoin lineJoin () const
 
TFillRule fillRule () const
 
Color symStroke () const
 
Color symFill () const
 
Fixed symPen () const
 
Fixed opacity () const
 
Attribute tiling () const
 
Attribute gradient () const
 

Static Public Member Functions

static void drawColor (Stream &stream, Color color, const char *gray, const char *rgb)
 

Protected Member Functions

virtual void doPush ()
 
virtual void doPop ()
 
virtual void doNewPath ()
 
virtual void doMoveTo (const Vector &v)
 
virtual void doLineTo (const Vector &v)
 
virtual void doCurveTo (const Vector &v1, const Vector &v2, const Vector &v3)
 
virtual void doClosePath ()
 
virtual void doDrawPath (TPathMode mode)
 
virtual void doDrawBitmap (Bitmap bitmap)
 
virtual void doDrawText (const Text *text)
 
virtual void doAddClipPath ()
 
virtual void doDrawSymbol (Attribute symbol)
 
void drawAttributes ()
 
void drawOpacity ()
 
- Protected Member Functions inherited from ipe::Painter
virtual void doDrawArc (const Arc &arc)
 
void drawArcAsBezier (double alpha)
 

Protected Attributes

StreamiStream
 
std::list< StateiActiveState
 
- Protected Attributes inherited from ipe::Painter
std::list< StateiState
 
std::list< MatrixiMatrix
 
const CascadeiCascade
 
int iInPath
 

Constructor & Destructor Documentation

virtual ipe::PdfPainter::~PdfPainter ( )
inlinevirtual

Member Function Documentation

void PdfPainter::drawColor ( Stream stream,
Color  color,
const char *  gray,
const char *  rgb 
)
static
void PdfPainter::doPush ( )
protectedvirtual

Perform graphics state push on output medium.

Reimplemented from ipe::Painter.

References iActiveState, and iStream.

void PdfPainter::doPop ( )
protectedvirtual

Perform graphics state pop on output medium.

Reimplemented from ipe::Painter.

References iActiveState, and iStream.

void PdfPainter::doNewPath ( )
protectedvirtual

Perform new path operator.

Reimplemented from ipe::Painter.

Reimplemented in ipe::PsPainter.

References drawAttributes().

void PdfPainter::doMoveTo ( const Vector v)
protectedvirtual

Perform moveto operator.

The transformation matrix has already been applied.

Reimplemented from ipe::Painter.

References iStream.

void PdfPainter::doLineTo ( const Vector v)
protectedvirtual

Perform lineto operator.

The transformation matrix has already been applied.

Reimplemented from ipe::Painter.

References iStream.

void PdfPainter::doCurveTo ( const Vector v1,
const Vector v2,
const Vector v3 
)
protectedvirtual

Perform curveto operator.

The transformation matrix has already been applied.

Reimplemented from ipe::Painter.

References iStream.

void PdfPainter::doClosePath ( )
protectedvirtual

Perform closepath operator.

Reimplemented from ipe::Painter.

References iStream.

void PdfPainter::doDrawBitmap ( Bitmap  bitmap)
protectedvirtual

Draw a bitmap.

Reimplemented from ipe::Painter.

Reimplemented in ipe::PsPainter.

References iStream, ipe::Painter::matrix(), and ipe::Bitmap::objNum().

void PdfPainter::doAddClipPath ( )
protectedvirtual

Add a clip path.

Reimplemented from ipe::Painter.

Reimplemented in ipe::PsPainter.

References iStream.

void PdfPainter::doDrawSymbol ( Attribute  symbol)
protectedvirtual

Draw a symbol.

The default implementation calls the draw method of the object. Only PDF drawing overrides this to reuse a PDF XForm.

Reimplemented from ipe::Painter.

References ipe::Painter::cascade(), ipe::Object::draw(), ipe::Cascade::findSymbol(), ipe::Attribute::index(), ipe::Symbol::iObject, iStream, and ipe::Symbol::iXForm.

void PdfPainter::drawOpacity ( )
protected

Member Data Documentation

std::list<State> ipe::PdfPainter::iActiveState
protected

The documentation for this class was generated from the following files:
  • ipepdfwriter.h
  • ipepdfwriter.cpp

ipe-7.1.10/build/doc/functions_vars_p.html0000644000175000017500000000730012624020245020340 0ustar otfriedotfried Ipelib: Class Members - Variables
 

- p -


ipe-7.1.10/build/doc/functions_vars_z.html0000644000175000017500000000660012624020245020354 0ustar otfriedotfried Ipelib: Class Members - Variables
 

- z -


ipe-7.1.10/build/doc/classipe_1_1_pdf_string.html0000644000175000017500000003137112624020245021445 0ustar otfriedotfried Ipelib: ipe::PdfString Class Reference
ipe::PdfString Class Reference

#include <ipepdfparser.h>

Inherits ipe::PdfObj.

Public Member Functions

 PdfString (const String &val)
 
virtual const PdfStringstring () const
 
virtual void write (Stream &stream) const
 
String value () const
 
- Public Member Functions inherited from ipe::PdfObj
virtual ~PdfObj ()=0
 
virtual const PdfNullnull () const
 
virtual const PdfBoolboolean () const
 
virtual const PdfNumbernumber () const
 
virtual const PdfNamename () const
 
virtual const PdfRefref () const
 
virtual const PdfArrayarray () const
 
virtual const PdfDictdict () const
 
String repr () const
 

Detailed Description

The PDF string object.

Constructor & Destructor Documentation

ipe::PdfString::PdfString ( const String val)
inlineexplicit

Member Function Documentation

const PdfString * PdfString::string ( ) const
virtual

Return this object as PDF string object.

Reimplemented from ipe::PdfObj.

void PdfString::write ( Stream stream) const
virtual
String ipe::PdfString::value ( ) const
inline

The documentation for this class was generated from the following files:
  • ipepdfparser.h
  • ipepdfparser.cpp

ipe-7.1.10/build/doc/manual_22.html0000644000175000017500000000570712624020245016547 0ustar otfriedotfried Ipe Manual -- 5.1 Grid snapping
5.2 Context snapping5 Snapping5.1 Grid snapping

5.1 Grid snapping

Grid snapping is easy to explain. It simply means that the mouse position is rounded to the nearest grid point. Grid points are points whose coordinates are integer multiples of the grid size, which can be set in the box in the Snap field. You have a choice from a set of possible grid sizes. The units are Postscript points (in LaTeX called bp), which are equal to 1/72 of an inch.

You can ask Ipe to show the grid points by selecting the function Grid visible from the View menu. The same function turns it off again.

ipe-7.1.10/build/doc/functions_func_p.html0000644000175000017500000003406312624020245020326 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- p -


ipe-7.1.10/build/doc/snaplines.svg0000644000175000017500000001452512624020245016614 0ustar otfriedotfried ipe-7.1.10/build/doc/manual_25.html0000644000175000017500000001102412624020245016537 0ustar otfriedotfried Ipe Manual -- 5.4 Interaction of the snapping modes
5.5 Examples5 Snapping5.3 Angular snapping5.4 Interaction of the snapping modes

5.4 Interaction of the snapping modes

Not all the snapping modes can be active at the same time, even if all buttons are pressed. Here we have a close look at the possible interactions, and the priorities of snapping.

The two angular snapping modes restrict the possible mouse positions to a one-dimensional subspace of the canvas. Therefore, they are incompatible with the modes that try to snap to a zero-dimensional subspace, namely vertex snapping, intersection snapping, and grid snapping. Consequently, when one of the angular snapping modes is on, vertex snapping, intersection snapping, and grid snapping are ineffective.

On the other hand, it is reasonable to snap to boundaries while in an angular snapping mode, and this function is actually implemented correctly. When both angular and boundary snapping are on, Ipe will compute intersections between the snap lines with the boundaries of your objects, and whenever the mouse position on the snap line comes close enough to an intersection, the mouse is snapped to that intersection.

The two angular snapping modes themselves can also coexist in the same fashion. If both angular and automatic angular snapping are enabled, Ipe computes the intersection point between the snap lines defined by the two origins and snaps there. It the snap lines are parallel or coincide, automatic angular snapping is used.

When no angular snapping mode is active, Ipe has three priorities. First, Ipe checks whether the closest vertex or intersection point is close enough. If that is not the case, the closest boundary edge is determined. If even that is too far away, Ipe uses grid snapping (assuming all these modes are enabled).

Note that this can actually mean that snapping is not to the closest point on an object. Especially for intersections of two straight edges, the closest point can never be the intersection point, as in the figure below!

ipe-7.1.10/build/doc/classipe_1_1_linear.html0000644000175000017500000005254012624020245020561 0ustar otfriedotfried Ipelib: ipe::Linear Class Reference

#include <ipegeo.h>

Public Member Functions

 Linear ()
 
 Linear (Angle angle)
 
 Linear (double m11, double m21, double m12, double m22)
 
 Linear (String str)
 
Linear inverse () const
 
bool isIdentity () const
 
Vector operator* (const Vector &rhs) const
 
bool operator== (const Linear &rhs) const
 
double determinant () const
 

Public Attributes

double a [4]
 

Related Functions

(Note that these are not member functions.)

Streamoperator<< (Stream &stream, const Linear &rhs)
 
Vector operator* (const Vector &rhs) const
 
Linear operator* (const Linear &lhs, const Linear &rhs)
 

Detailed Description

Linear transformation in the plane (2x2 matrix).

Constructor & Destructor Documentation

ipe::Linear::Linear ( )
inline

Create identity matrix.

References a.

Referenced by inverse().

Linear::Linear ( Angle  angle)
explicit

Create matrix representing a rotation by angle.

ipe::Linear::Linear ( double  m11,
double  m21,
double  m12,
double  m22 
)
inlineexplicit

Create linear matrix with given coefficients.

References a.

Linear::Linear ( String  str)
explicit

Parse string.

References a.

Member Function Documentation

Linear Linear::inverse ( ) const

Return inverse.

References a, determinant(), and Linear().

Referenced by ipe::Arc::bbox().

bool ipe::Linear::isIdentity ( ) const
inline

Is this the identity matrix?

References a.

Vector ipe::Linear::operator* ( const Vector rhs) const
inline
bool ipe::Linear::operator== ( const Linear rhs) const
inline

Check for equality of two linear matrices.

References a.

double ipe::Linear::determinant ( ) const
inline

Return determinant of a linear matrix.

References a.

Referenced by inverse().

Friends And Related Function Documentation

Stream & operator<< ( Stream stream,
const Linear rhs 
)
related
Vector operator* ( const Vector rhs) const
related

Linear matrix times vector.

References a, ipe::Vector::x, and ipe::Vector::y.

Linear operator* ( const Linear lhs,
const Linear rhs 
)
related

Linear matrix multiplication.

References a.

Member Data Documentation

double ipe::Linear::a[4]

The documentation for this class was generated from the following files:
  • ipegeo.h
  • ipegeo.cpp

ipe-7.1.10/build/doc/classipe_1_1_buffer_source-members.html0000644000175000017500000000615012624020245023564 0ustar otfriedotfried Ipelib: Member List
ipe::BufferSource Member List

This is the complete list of members for ipe::BufferSource, including all inherited members.

BufferSource(const Buffer &buffer)ipe::BufferSource
getChar()ipe::BufferSourcevirtual
~DataSource()=0ipe::DataSourcepure virtual

ipe-7.1.10/build/doc/manual_52.html0000644000175000017500000003036512624020245016550 0ustar otfriedotfried Ipe Manual -- Contents
FootnotesTop14 CopyrightContents

Contents

ipe-7.1.10/build/doc/sync_on.png0000644000175000017500000000151512624020245016250 0ustar otfriedotfried‰PNG  IHDRàw=øIDATxíÝ_HTYÀñï8ã¤ó§i§4-g6ÆËÕ&kQ)¨Ô!Š0ÒURKÚ…„ê¡/»PEÁ>ìK-+KÁ²Ñ.Y”¾dEPaA‰ø°¥¶›ZSÓïÜ;3wºŠ–¯—߯gfîïœsçœWKÇñ.€ÉøD­¨a‘'¬âq_ôˆk¢ÀŒ ÀDŽøQ´ÄïC¨¶åñÏÿgÅ ñ 0„Y‚:qZ¦Á)~õâ€èLý0HVñ× žz-¿‰C“%¨g¦˜6€é8%Úõ¬ëwêÙUÏ¿˜ª³Ä }? ?€·3ÀÀž©Š À”K• @hà a±ðaÇæUe‹ sù~ë2²ì“&Ú&B*AÄljæºììi*˨,Ëçí»÷oÆ£T”,d[˜¼3-*ÁÀ…>å‡Ë çLÉŸçfk˜Ò éw#*AEjKUy>ûšËÉõ&{µ¢8—m5Ki¬ jjƒD*¿NŽÖigwÃ7Dª’mz骹úKÛ¾±ˆ¶M!æ¤ÍkÐ?šoý¬_åÓlXí#Ò~–¸¬ê×ÒÑXŠÓ‘ùRÙ*Eû‚ՂדðEÜ;6«e"Q(²Ù=–¿Ezæ5Kؼָ_ 1òzBªJë ±XŒì96åªjL^7{ùãJÑ÷1½i@%8'7M©_\Qœ#ÓUŒËñýÿyõ Wo Éx8¼s¥v¯ªì|×SnÜ q_m Ýé î>bèÕí[JX,½4[Tú{R£ë¼ôˆ¾þa€tÝjjzzÅ'ÅìȶiIžŽòwÏs ¡€—ÕKøõâC^ŽŒ˜Y­¨µÉ%6¨´êˆº]vÛðhâ½iWv–hôëê°Ò¨¾'æÌ‚·ñ|[ßìúÅ^€YrD=<ýDû]äÇ÷s€Ïõ‹8™ºCì? À ¨—t4õᩎ¡Jã‡W‹É± îr¼cjMɘìx| šE©øNÔ‰œøA¢þ«–€Z¼ñ‡jó î#™§¢¢4gIEND®B`‚ipe-7.1.10/build/doc/lua.html0000644000175000017500000001221112624020245015534 0ustar otfriedotfried Ipelib: Programming in Lua
Programming in Lua

The library libipelua implements Lua bindings for many classes in Ipelib. The bindings are available in Lua ipelets, as well as in Lua scripts executed using the ipescript program.

These pages document the Lua bindings to Ipelib:

When writing Ipelets in Lua, you have access to additional methods provided by the Ipe program itself:

Examples

Here is a Lua script that reads an Ipe document and then recenters each page on the paper. You can run this script as "ipescript recenter".

-- recenter.lua
-- center objects on each page of the document

if #argv ~= 2 then
  io.stderr:write("Usage: ipescript recenter <inputfile> <outputfile>\n")
  return
end

inname = argv[1]
outname = argv[2]

doc = assert(ipe.Document(inname))

-- make sure we have size information for text
assert(doc:runLatex())

layout = doc:sheets():find("layout")
fs = layout.framesize

for i,p in doc:pages() do
  box = ipe.Rect()
  for j = 1,#p do
    box:add(p:bbox(j))
  end
  nx = (fs.x - box:width()) / 2
  ny = (fs.y - box:height()) / 2
  trans = ipe.Vector(nx, ny) - box:bottomLeft()
  m = ipe.Translation(trans)
  for j = 1,#p do
    p:transform(j, m)
  end
end
doc:save(outname)

The following script prints out all the gradients defined in a document:

-- -*- lua -*-

function printTable(t, indent)
  for k in pairs(t) do
    local v = t[k]
    if type(v) == "table" then 
      print(indent .. k .. ":")
      printTable(v, "  " .. indent)
    else
      print(indent .. k .. ": " .. tostring(v))
    end
  end
end

if #argv ~= 1 then
  io.stderr:write("Usage: ipescript show-gradients <ipe-document>\n")
  return
end

local figname = argv[1]
local doc = assert(ipe.Document(figname))
local s = doc:sheets()

for _,w in ipairs(s:allNames("gradient")) do
  print("Gradient: ", w)
  local g = s:find("gradient", w)
  printTable(g, "  ")
end

And here is a script that shows how to add a gradient to a document (the same technique works for tilings and effects):

-- -*- lua -*-

if #argv ~= 1 then
  io.stderr:write("Usage: ipescript add-gradient <ipe-document>\n")
  return
end

local figname = argv[1]
local doc = assert(ipe.Document(figname))

local sheet = [[<ipestyle>
<gradient name="ball" type="radial" coords="-4 10 2 0 0 18">
 <stop offset="0" color="1 1 0"/>
 <stop offset="1" color="0 1 0"/>
</gradient>
</ipestyle>]]

local ts = ipe.Sheet(nil, sheet)

local s = doc:sheets()
for i = 1,s:count() do
  print(s:sheet(i):name())
end

-- add the gradient to the sheet on top of the stack
-- in general it is not a good idea to change the "basic" sheet,
-- better verify if a custom sheet for gradients exists already
-- and create it if not.
s:sheet(1):addFrom(ts, "gradient", "ball")
assert(doc:runLatex())
doc:save(figname .. ".new.ipe")

For more examples, have a look at the scripts in your Ipe installation, such as add-style.lua or update-styles.lua.


ipe-7.1.10/build/doc/functions_c.html0000644000175000017500000003633312624020245017300 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- c -


ipe-7.1.10/build/doc/ftv2lastnode.png0000644000175000017500000000012612624020245017210 0ustar otfriedotfried‰PNG  IHDRɪ|IDATxíݱðøScOx@ –¨y}IEND®B`‚ipe-7.1.10/build/doc/classipe_1_1_pdf_ref.html0000644000175000017500000003060712624020245020714 0ustar otfriedotfried Ipelib: ipe::PdfRef Class Reference

#include <ipepdfparser.h>

Inherits ipe::PdfObj.

Public Member Functions

 PdfRef (int val)
 
virtual const PdfRefref () const
 
virtual void write (Stream &stream) const
 
int value () const
 
- Public Member Functions inherited from ipe::PdfObj
virtual ~PdfObj ()=0
 
virtual const PdfNullnull () const
 
virtual const PdfBoolboolean () const
 
virtual const PdfNumbernumber () const
 
virtual const PdfStringstring () const
 
virtual const PdfNamename () const
 
virtual const PdfArrayarray () const
 
virtual const PdfDictdict () const
 
String repr () const
 

Detailed Description

The PDF reference object (indirect object).

Constructor & Destructor Documentation

ipe::PdfRef::PdfRef ( int  val)
inlineexplicit

Member Function Documentation

const PdfRef * PdfRef::ref ( ) const
virtual

Return this object as PDF reference object.

Reimplemented from ipe::PdfObj.

void PdfRef::write ( Stream stream) const
virtual

Implements ipe::PdfObj.

int ipe::PdfRef::value ( ) const
inline

Referenced by ipe::PdfArray::obj().


The documentation for this class was generated from the following files:
  • ipepdfparser.h
  • ipepdfparser.cpp

ipe-7.1.10/build/doc/functions_t.html0000644000175000017500000003042412624020245017314 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- t -


ipe-7.1.10/build/doc/fontbbox.svg0000644000175000017500000002244712624020245016443 0ustar otfriedotfried ipe-7.1.10/build/doc/structipe_1_1_painter_1_1_state.html0000644000175000017500000004037412624020245023032 0ustar otfriedotfried Ipelib: ipe::Painter::State Struct Reference
ipe::Painter::State Struct Reference

#include <ipepainter.h>

Public Attributes

Color iStroke
 
Color iFill
 
Fixed iPen
 
String iDashStyle
 
TLineCap iLineCap
 
TLineJoin iLineJoin
 
TFillRule iFillRule
 
Color iSymStroke
 
Color iSymFill
 
Fixed iSymPen
 
Fixed iOpacity
 
Attribute iTiling
 
Attribute iGradient
 

Member Data Documentation

TFillRule ipe::Painter::State::iFillRule

Referenced by ipe::Painter::Painter().

Color ipe::Painter::State::iSymStroke

Referenced by ipe::Painter::Painter().

Color ipe::Painter::State::iSymFill

Referenced by ipe::Painter::Painter().

Fixed ipe::Painter::State::iSymPen

Referenced by ipe::Painter::Painter().

Attribute ipe::Painter::State::iTiling
Attribute ipe::Painter::State::iGradient

Referenced by ipe::Painter::Painter().


The documentation for this struct was generated from the following file:
  • ipepainter.h

ipe-7.1.10/build/doc/functions_vars_x.html0000644000175000017500000000657512624020245020365 0ustar otfriedotfried Ipelib: Class Members - Variables
 

- x -


ipe-7.1.10/build/doc/manual_1.html0000644000175000017500000001204312624020245016453 0ustar otfriedotfried Ipe Manual -- 1 Introduction
2 About Ipe filesTop1 Introduction

1 Introduction

Preparing figures for a scientific article is a time-consuming process. If you are using the LaTeX document preparation system in an environment where you can include (encapsulated) Postscript figures or PDF figures, then the extensible drawing editor Ipe may be able to help you in the task. Ipe allows you to prepare and edit drawings containing a variety of basic geometry primitives like lines, splines, polygons, circles etc.

Ipe also allows you to add text to your drawings, and unlike most other drawing programs, Ipe treats these text object as LaTeX text. This has the advantage that all usual LaTeX commands can be used within the drawing, which makes the inclusion of mathematical formulae (or even simple labels like "qi") much simpler. Ipe processes your LaTeX source and includes its Postscript or PDF rendering in the figure.

In addition, Ipe offers you some editing functions that can usually only be found in professional drawing programs or cad systems. For instance, it incorporates a context sensitive snapping mechanism, which allows you to draw objects meeting in a point, having parallel edges, objects aligned on intersection points of other objects, rectilinear and c-oriented objects and the like. Whenever one of the snapping modes is enabled, Ipe shows you Fifi, a secondary cursor, which keeps track of the current aligning.

One of the nicest features of Ipe is the fact that it is extensible. You can write your own functions, so-called ipelets. Once registered with Ipe by adding them to your ipelet path, you can use those functions like Ipe's own editing functions. (In fact, some of the functions in the standard Ipe distribution are actually implemented as ipelets.) Ipelets can be written in Lua, an easy-to-learn interpreted language that is embedded into Ipe, or also in C++. Among others, there is an ipelet to compute Voronoi diagrams.

Making a presentation is another task that requires drawing figures. You can use Ipe to prepare presentations in PDF format. Ipe offers many features to make attractive presentations.

Ipe tries to be self-explanatory. There is online help available, and most commands tell you about options, shortcuts, or errors. Nevertheless, it would probably be wise to read at least a few sections of this manual. If you have used Ipe 6 before, you should definitely have a look at what has changed. If you have never used Ipe before, then the chapter on general concepts and the chapter explaining the snapping functions would be a useful read. If you want to use Ipe to prepare presentations, you should also read the chapter on presentations.

ipe-7.1.10/build/doc/classipe_1_1_document-members.html0000644000175000017500000004557512624020245022567 0ustar otfriedotfried Ipelib: Member List
ipe::Document Member List

This is the complete list of members for ipe::Document, including all inherited members.

cascade()ipe::Documentinline
cascade() const ipe::Documentinline
checkStyle(AttributeSeq &seq) const ipe::Document
countPages() const ipe::Documentinline
countTotalViews() const ipe::Document
Document()ipe::Document
Document(const Document &rhs)ipe::Document
EEps enum valueipe::Document
EExport enum valueipe::Document
EFileOpenError enum valueipe::Document
EIpe5 enum valueipe::Document
EMarkedView enum valueipe::Document
ENotAnIpeFile enum valueipe::Document
ENoZip enum valueipe::Document
EPdf enum valueipe::Document
ErrLatex enum valueipe::Document
ErrLatexOutput enum valueipe::Document
ErrNoDir enum valueipe::Document
ErrNoIconv enum valueipe::Document
ErrNone enum valueipe::Document
ErrNoText enum valueipe::Document
ErrOldPdfLatex enum valueipe::Document
ErrRunLatex enum valueipe::Document
ErrWritingSource enum valueipe::Document
ESaveNormal enum valueipe::Document
EUnknown enum valueipe::Document
EVersionTooOld enum valueipe::Document
EVersionTooRecent enum valueipe::Document
EXml enum valueipe::Document
exportPages(const char *fname, uint flags, int fromPage, int toPage) const ipe::Document
exportView(const char *fname, TFormat format, uint flags, int pno, int vno) const ipe::Document
fileFormat(DataSource &source)ipe::Documentstatic
findBitmaps(BitmapFinder &bm) const ipe::Document
fontPool() const ipe::Documentinline
formatFromFilename(String fn)ipe::Documentstatic
hasGradients() const ipe::Document
hasTilings() const ipe::Document
hasTransparency() const ipe::Document
hasTrueTypeFonts() const ipe::Document
insert(int no, Page *page)ipe::Document
load(DataSource &source, TFormat format, int &reason)ipe::Documentstatic
load(const char *fname, int &reason)ipe::Documentstatic
LoadErrors enum nameipe::Document
loadWithErrorReport(const char *fname)ipe::Documentstatic
page(int no) const ipe::Documentinline
page(int no)ipe::Documentinline
properties() const ipe::Documentinline
push_back(Page *page)ipe::Document
remove(int no)ipe::Document
replaceCascade(Cascade *cascade)ipe::Document
runLatex(String &logFile)ipe::Document
runLatex()ipe::Document
save(TellStream &stream, TFormat format, uint flags) const ipe::Document
save(const char *fname, TFormat format, uint flags) const ipe::Document
saveAsXml(Stream &stream, bool usePdfBitmaps=false) const ipe::Document
set(int no, Page *page)ipe::Document
setFontPool(FontPool *fontPool)ipe::Document
setProperties(const SProperties &info)ipe::Document
TFormat enum nameipe::Document
~Document()ipe::Document

ipe-7.1.10/build/doc/classipe_1_1_ipelet-members.html0000644000175000017500000000613712624020245022222 0ustar otfriedotfried Ipelib: Member List
ipe::Ipelet Member List

This is the complete list of members for ipe::Ipelet, including all inherited members.

ipelibVersion() const =0ipe::Ipeletpure virtual
run(int function, IpeletData *data, IpeletHelper *helper)=0ipe::Ipeletpure virtual
~Ipelet()=0ipe::Ipeletpure virtual

ipe-7.1.10/build/doc/classipe_1_1_pdf_number-members.html0000644000175000017500000001360212624020245023054 0ustar otfriedotfried Ipelib: Member List
ipe::PdfNumber Member List

This is the complete list of members for ipe::PdfNumber, including all inherited members.

array() const ipe::PdfObjvirtual
boolean() const ipe::PdfObjvirtual
dict() const ipe::PdfObjvirtual
name() const ipe::PdfObjvirtual
null() const ipe::PdfObjvirtual
number() const ipe::PdfNumbervirtual
PdfNumber(double val)ipe::PdfNumberinlineexplicit
ref() const ipe::PdfObjvirtual
repr() const ipe::PdfObj
string() const ipe::PdfObjvirtual
value() const ipe::PdfNumberinline
write(Stream &stream) const ipe::PdfNumbervirtual
~PdfObj()=0ipe::PdfObjpure virtual

ipe-7.1.10/build/doc/classipe_1_1_closed_spline.html0000644000175000017500000006375312624020245022142 0ustar otfriedotfried Ipelib: ipe::ClosedSpline Class Reference

#include <ipeshape.h>

Inherits ipe::SubPath.

Public Member Functions

 ClosedSpline (const std::vector< Vector > &v)
 
virtual Type type () const
 
virtual const ClosedSplineasClosedSpline () const
 
void beziers (std::vector< Bezier > &bez) const
 
virtual void save (Stream &stream) const
 
virtual void draw (Painter &painter) const
 
virtual void addToBBox (Rect &box, const Matrix &m, bool cp) const
 
virtual double distance (const Vector &v, const Matrix &m, double bound) const
 
virtual void snapVtx (const Vector &mouse, const Matrix &m, Vector &pos, double &bound, bool cp) const
 
virtual void snapBnd (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
- Public Member Functions inherited from ipe::SubPath
virtual ~SubPath ()=0
 
virtual bool closed () const
 
virtual const EllipseasEllipse () const
 
virtual const CurveasCurve () const
 

Public Attributes

std::vector< VectoriCP
 

Additional Inherited Members

- Public Types inherited from ipe::SubPath
enum  Type { ECurve, EEllipse, EClosedSpline }
 

Detailed Description

A closed B-spline curve.

Constructor & Destructor Documentation

ClosedSpline::ClosedSpline ( const std::vector< Vector > &  v)

References iCP.

Member Function Documentation

SubPath::Type ClosedSpline::type ( ) const
virtual

Return type of this subpath.

Implements ipe::SubPath.

References ipe::SubPath::EClosedSpline.

const ClosedSpline * ClosedSpline::asClosedSpline ( ) const
virtual

Return this object as an ClosedSpline, or 0 if it's not a closed spline.

Reimplemented from ipe::SubPath.

void ClosedSpline::beziers ( std::vector< Bezier > &  bez) const

References ipe::Bezier::closedSpline(), and iCP.

Referenced by addToBBox(), distance(), draw(), and snapBnd().

void ClosedSpline::save ( Stream stream) const
virtual

Save subpath to XML stream.

Implements ipe::SubPath.

References iCP.

void ClosedSpline::draw ( Painter painter) const
virtual

Draw subpath (does not call drawPath()).

Implements ipe::SubPath.

References beziers(), ipe::Painter::closePath(), ipe::Painter::curveTo(), and ipe::Painter::moveTo().

void ClosedSpline::addToBBox ( Rect box,
const Matrix m,
bool  cp 
) const
virtual

Add subpath to box.

Implements ipe::SubPath.

References ipe::Rect::addPoint(), ipe::Rect::addRect(), beziers(), and iCP.

double ClosedSpline::distance ( const Vector v,
const Matrix m,
double  bound 
) const
virtual

Return distance from v to subpath transformed by m.

Implements ipe::SubPath.

References beziers().

void ClosedSpline::snapVtx ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound,
bool  cp 
) const
virtual

Snap to vertex.

Implements ipe::SubPath.

References iCP.

void ClosedSpline::snapBnd ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
virtual

Snap to boundary of subpath.

Implements ipe::SubPath.

References beziers().

Member Data Documentation

std::vector<Vector> ipe::ClosedSpline::iCP

The documentation for this class was generated from the following files:
  • ipeshape.h
  • ipeshape.cpp

ipe-7.1.10/build/doc/manual_7.html0000644000175000017500000000745412624020245016473 0ustar otfriedotfried Ipe Manual -- 3.4 Stroke and fill colors
3.5 Pen, dash style, arrows, and tiling patterns3 General Concepts3.3 Moving and scaling objects3.4 Stroke and fill colors

3.4 Stroke and fill colors

Path objects can have two different colors, one for the boundary and one for the interior of the object. The Postscript terms stroke and fill are used to denote these two colors. Stroke and fill color can be selected independently in the Properties window. Imagine preparing a drawing by hand, using a pen and black ink. What Ipe draws in its stroke color is what you would stroke in black ink with your pen. Probably you would not use your pen to fill objects, but you would use a brush, and maybe even a different kind of paint like water color. Well, the fill color is Ipe's "brush".

When you create a path object, you'll have to tell Ipe whether you want it stroked, filled, or both. This is set in the Path properties field. Clicking near the right end of the field will cycle through the three modes "stroked", "stroked & filled", and "filled." You can also use the context menu of the path properties field.

Text objects and arrows only use the stroke color, even for the filled arrows. You would also use a pen for these details, not the brush.

The mark shapes "disk" and "square" also use only the stroke color. You can make bicolored marks using the mark shapes "fdisk" and "fsquare".

ipe-7.1.10/build/doc/nav_g.png0000644000175000017500000000013712624020245015671 0ustar otfriedotfried‰PNG  IHDRô1&IDATxíÝ1 ÁOHf„á_ ->~¸åM iËMèÀƒS½ü‚<IEND®B`‚ipe-7.1.10/build/doc/classipe_1_1_text.html0000644000175000017500000034277612624020245020310 0ustar otfriedotfried Ipelib: ipe::Text Class Reference

#include <ipetext.h>

Inherits ipe::Object.

Classes

struct  XForm
 

Public Types

enum  TextType { ELabel = 1, EMinipage }
 
- Public Types inherited from ipe::Object
enum  Type {
  EGroup, EPath, EText, EImage,
  EReference
}
 

Public Member Functions

 Text ()
 
 Text (const AllAttributes &attr, String data, const Vector &pos, TextType type, double width=10.0)
 
 Text (const Text &rhs)
 
 ~Text ()
 
 Text (const XmlAttributes &attr, String data)
 
virtual Objectclone () const
 
virtual TextasText ()
 
virtual Type type () const
 
virtual void saveAsXml (Stream &stream, String layer) const
 
virtual void draw (Painter &painter) const
 
virtual void drawSimple (Painter &painter) const
 
virtual void accept (Visitor &visitor) const
 
virtual void addToBBox (Rect &box, const Matrix &m, bool) const
 
virtual double distance (const Vector &v, const Matrix &m, double bound) const
 
virtual void snapCtl (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
virtual void checkStyle (const Cascade *sheet, AttributeSeq &seq) const
 
virtual bool setAttribute (Property prop, Attribute value)
 
virtual Attribute getAttribute (Property prop)
 
Vector align () const
 
TextType textType () const
 
Vector position () const
 
String text () const
 
void setStroke (Attribute stroke)
 
void setOpacity (Attribute opaq)
 
Attribute stroke () const
 
Attribute size () const
 
Attribute style () const
 
Attribute opacity () const
 
bool isMinipage () const
 
void setTextType (TextType type)
 
THorizontalAlignment horizontalAlignment () const
 
TVerticalAlignment verticalAlignment () const
 
void setHorizontalAlignment (THorizontalAlignment align)
 
void setVerticalAlignment (TVerticalAlignment align)
 
double width () const
 
double height () const
 
double depth () const
 
double totalHeight () const
 
void setSize (Attribute size)
 
void setStyle (Attribute style)
 
void setWidth (double width)
 
void setText (String text)
 
bool isInternal () const
 
void setXForm (XForm *xform) const
 
const XFormgetXForm () const
 
- Public Member Functions inherited from ipe::Object
virtual ~Object ()=0
 
virtual GroupasGroup ()
 
virtual PathasPath ()
 
virtual ImageasImage ()
 
virtual ReferenceasReference ()
 
virtual TPinned pinned () const
 
void setPinned (TPinned pin)
 
TTransformations transformations () const
 
void setTransformations (TTransformations trans)
 
void setMatrix (const Matrix &matrix)
 
const Matrixmatrix () const
 
virtual void snapVtx (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
virtual void snapBnd (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 

Static Public Member Functions

static TVerticalAlignment makeVAlign (String str, TVerticalAlignment def)
 
static THorizontalAlignment makeHAlign (String str, THorizontalAlignment def)
 
static void saveAlignment (Stream &stream, THorizontalAlignment h, TVerticalAlignment v)
 

Additional Inherited Members

- Protected Member Functions inherited from ipe::Object
 Object ()
 
 Object (const AllAttributes &attr)
 
 Object (const Object &rhs)
 
 Object (const XmlAttributes &attr)
 
void saveAttributesAsXml (Stream &stream, String layer) const
 
- Static Protected Member Functions inherited from ipe::Object
static void checkSymbol (Kind kind, Attribute attr, const Cascade *sheet, AttributeSeq &seq)
 
- Protected Attributes inherited from ipe::Object
Matrix iMatrix
 
TPinned iPinned: 8
 
TTransformations iTransformations: 8
 

Detailed Description

The text object.

The text object stores a Latex source representation, which needs to be translated into PDF by Pdflatex before it can be saved as PDF.

There are two types of text objects: labels and minipages. The textType() method tells you which, or use isMinipage().

The dimensions of a text object are given by width(), height(), and depth(). They are recomputed by Ipe when running LaTeX, with the exception of the width for minipage objects (whose width is fixed). Before Latex has been run, the dimensions are not reliable.

The position of the reference point relative to the text box is given by verticalAlignment() and horizontalAlignment().

The text() must be a legal LaTeX fragment that can be interpreted by LaTeX inside \hbox, possibly using the macros or packages defined in the preamble.

Member Enumeration Documentation

Enumerator
ELabel 
EMinipage 

Constructor & Destructor Documentation

Text::Text ( )
explicit

Construct an empty internal text object.

Referenced by clone().

Text::Text ( const Text rhs)

Copy constructor.

References ipe::Text::XForm::iRefCount.

Text::~Text ( )

Destructor.

References ipe::Text::XForm::iRefCount.

Member Function Documentation

Object * Text::clone ( ) const
virtual

Clone object.

Implements ipe::Object.

References Text().

Text * Text::asText ( )
virtual

Return pointer to this object.

Reimplemented from ipe::Object.

Object::Type Text::type ( ) const
virtual

Implements ipe::Object.

References ipe::Object::EText.

Referenced by setTextType(), and Text().

void Text::accept ( Visitor visitor) const
virtual

Call visitText of visitor.

Implements ipe::Object.

References ipe::Visitor::visitText().

Referenced by ipe::Latex::scanPage().

void Text::addToBBox ( Rect box,
const Matrix m,
bool  cp 
) const
virtual

Extend box to include the object transformed by m.

For objects in a page, don't call this directly. The Page caches the bounding box of each object, so it is far more efficient to call Page::bbox.

Control points that lie outside the visual object are included if cp is true.

If called with an empty box and cp == false, the result of this function is a tight bounding box for the object, with a little leeway in case the boundary is determined by a spline (it has to be approximated to perform this operation).

Implements ipe::Object.

References ipe::Rect::addPoint().

double Text::distance ( const Vector v,
const Matrix m,
double  bound 
) const
virtual

Return distance of transformed object to point v. If larger than bound, can just return bound.

Implements ipe::Object.

void Text::snapCtl ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
virtual

Compute control point snapping position for transformed object.

Looks only for positions closer than bound. If successful, modify pos and bound. The default implementation does nothing.

Reimplemented from ipe::Object.

References ipe::Object::matrix().

void Text::checkStyle ( const Cascade sheet,
AttributeSeq seq 
) const
virtual

Check symbolic size attribute.

Reimplemented from ipe::Object.

References ipe::Object::checkSymbol(), ipe::EColor, ipe::EOpacity, ipe::ETextSize, and ipe::ETextStyle.

Vector Text::align ( ) const

Return position of reference point in text box coordinate system.

Assume a coordinate system where the text box has corners (0,0) and (Width(), TotalHeight()). This function returns the coordinates of the reference point in this coordinate system.

References depth(), ipe::EAlignBaseline, ipe::EAlignBottom, ipe::EAlignHCenter, ipe::EAlignLeft, ipe::EAlignRight, ipe::EAlignTop, ipe::EAlignVCenter, horizontalAlignment(), isMinipage(), totalHeight(), verticalAlignment(), width(), ipe::Vector::x, and ipe::Vector::y.

Referenced by ipe::CairoPainter::doDrawText(), draw(), drawSimple(), setHorizontalAlignment(), and setVerticalAlignment().

Text::TextType Text::textType ( ) const

Return type of text object.

References ELabel.

Referenced by setWidth().

Vector ipe::Text::position ( ) const
inline

Return text position.

String ipe::Text::text ( ) const
inline
void Text::setStroke ( Attribute  stroke)

Set stroke color.

References stroke().

Referenced by ipe::Page::applyTitleStyle(), and setAttribute().

void Text::setOpacity ( Attribute  opaq)

Set opacity of the object.

Referenced by setAttribute().

Attribute ipe::Text::stroke ( ) const
inline

Return stroke color.

Referenced by getAttribute(), setAttribute(), and setStroke().

Attribute ipe::Text::size ( ) const
inline

Return font size.

Referenced by getAttribute(), setAttribute(), and setSize().

Attribute ipe::Text::style ( ) const
inline

Return Latex style of text object.

Referenced by ipe::Latex::createLatexSource(), getAttribute(), setAttribute(), and setStyle().

Attribute ipe::Text::opacity ( ) const
inline

Return opacity of the opject.

Referenced by getAttribute(), and setAttribute().

bool ipe::Text::isMinipage ( ) const
inline

Return true if text object is formatted as a minipage.

Equivalent to type being EMinipage.

References EMinipage.

Referenced by align(), ipe::Latex::createLatexSource(), getAttribute(), saveAsXml(), setAttribute(), setXForm(), and Text().

void Text::setTextType ( TextType  type)

Change type.

References type().

THorizontalAlignment ipe::Text::horizontalAlignment ( ) const
inline

Return horizontal alignment of text object.

Referenced by align(), getAttribute(), and setAttribute().

TVerticalAlignment ipe::Text::verticalAlignment ( ) const
inline

Return vertical alignment of text object.

Referenced by align(), getAttribute(), and setAttribute().

void Text::setHorizontalAlignment ( THorizontalAlignment  align)

Change horizontal alignment (text moves with respect to reference point).

References align().

Referenced by ipe::Page::applyTitleStyle().

void Text::setVerticalAlignment ( TVerticalAlignment  align)

Change vertical alignment (text moves with respect to reference point).

References align().

Referenced by ipe::Page::applyTitleStyle().

TVerticalAlignment Text::makeVAlign ( String  str,
TVerticalAlignment  def 
)
static

Return vertical alignment indicated by a name, or else default.

References ipe::EAlignBaseline, ipe::EAlignBottom, ipe::EAlignTop, and ipe::EAlignVCenter.

Referenced by ipe::ImlParser::parseStyle(), and Text().

THorizontalAlignment Text::makeHAlign ( String  str,
THorizontalAlignment  def 
)
static

Return horizontal alignment indicated by a name, or else default.

References ipe::EAlignHCenter, ipe::EAlignLeft, and ipe::EAlignRight.

Referenced by ipe::ImlParser::parseStyle(), and Text().

double ipe::Text::width ( ) const
inline
double ipe::Text::height ( ) const
inline

Return height of text object (from baseline to top).

double ipe::Text::depth ( ) const
inline

Return depth of text object.

Referenced by align().

double ipe::Text::totalHeight ( ) const
inline

Return height + depth of text object.

Referenced by align(), ipe::BBoxPainter::doDrawText(), ipe::CairoPainter::doDrawText(), and drawSimple().

void Text::setSize ( Attribute  size)

Set font size of text.

This invalidates (and destroys) the XForm.

References setXForm(), and size().

Referenced by ipe::Page::applyTitleStyle(), and setAttribute().

void Text::setStyle ( Attribute  style)

Set Latex style of text.

This invalidates (and destroys) the XForm.

References setXForm(), and style().

Referenced by setAttribute().

void Text::setWidth ( double  width)

Set width of paragraph.

This invalidates (and destroys) the XForm. The function panics if object is not a (true) minipage.

References EMinipage, setXForm(), textType(), and width().

Referenced by setAttribute().

void Text::setText ( String  text)

Sets the text of the text object.

This invalidates (and destroys) the XForm.

References setXForm(), and text().

Referenced by ipe::Page::setTitle().

bool ipe::Text::isInternal ( ) const
inline
void Text::setXForm ( XForm xform) const
const Text::XForm * ipe::Text::getXForm ( ) const
inline

Return the PDF representation of this text object.

If Pdflatex has not been run yet, returns 0.

Referenced by ipe::Latex::createLatexSource(), ipe::PdfPainter::doDrawText(), and ipe::CairoPainter::doDrawText().


The documentation for this class was generated from the following files:
  • ipetext.h
  • ipetext.cpp

ipe-7.1.10/build/doc/classipe_1_1_lex.html0000644000175000017500000006015412624020245020077 0ustar otfriedotfried Ipelib: ipe::Lex Class Reference

#include <ipebase.h>

Public Member Functions

 Lex (String str)
 
String token ()
 
String nextToken ()
 
int getInt ()
 
int getHexByte ()
 
Fixed getFixed ()
 
unsigned long int getHexNumber ()
 
double getDouble ()
 
char getChar ()
 
void skipWhitespace ()
 
Lexoperator>> (int &i)
 
Lexoperator>> (double &d)
 
Lexoperator>> (Fixed &d)
 
void mark ()
 
void fromMark ()
 
bool eos () const
 

Detailed Description

Lexical analyser. Seeded with a string.

Constructor & Destructor Documentation

Lex::Lex ( String  str)
explicit

Construct lexical analyzer from a string.

Member Function Documentation

String Lex::token ( )

Return NextToken, but without extracting it.

References nextToken().

Referenced by ipe::Shape::load().

String Lex::nextToken ( )

Extract next token.

Skips any whitespace before the token. Returns empty string if end of string is reached.

References eos(), mark(), skipWhitespace(), and ipe::String::substr().

Referenced by getDouble(), getFixed(), getHexNumber(), getInt(), ipe::Shape::load(), ipe::ImlParser::parsePage(), and token().

int Lex::getInt ( )
int Lex::getHexByte ( )

Extract byte in hex (skipping whitespace).

References eos(), and skipWhitespace().

Referenced by ipe::Bitmap::Bitmap().

Fixed Lex::getFixed ( )

Extract Fixed token (skipping whitespace).

References ipe::Fixed::fromInternal(), nextToken(), ipe::String::size(), ipe::String::substr(), and ipe::String::z().

Referenced by operator>>().

unsigned long int Lex::getHexNumber ( )

Extract hexadecimal token (skipping whitespace).

References nextToken(), and ipe::String::z().

double Lex::getDouble ( )

Extract double token (skipping whitespace).

References nextToken(), and ipe::Platform::toDouble().

Referenced by ipe::PdfPainter::doDrawText(), operator>>(), ipe::ImlParser::parseStyle(), and ipe::Text::Text().

char ipe::Lex::getChar ( )
inline

Extract next character (not skipping anything).

void Lex::skipWhitespace ( )

Skip over whitespace.

References eos().

Referenced by getHexByte(), ipe::Shape::load(), nextToken(), and ipe::ImlParser::parsePage().

Lex& ipe::Lex::operator>> ( int &  i)
inline

Operator syntax for getInt().

References getInt().

Lex& ipe::Lex::operator>> ( double &  d)
inline

Operator syntax for getDouble().

References getDouble().

Lex& ipe::Lex::operator>> ( Fixed d)
inline

Operator syntax for getFixed().

References getFixed().

void ipe::Lex::mark ( )
inline

Mark the current position.

Referenced by nextToken().

void ipe::Lex::fromMark ( )
inline

Reset reader to the marked position.

bool ipe::Lex::eos ( ) const
inline

Return true if at end of string (not even whitespace left).

References ipe::String::size().

Referenced by ipe::Color::Color(), getHexByte(), ipe::Shape::load(), nextToken(), ipe::ImlParser::parsePage(), and skipWhitespace().


The documentation for this class was generated from the following files:
  • ipebase.h
  • ipebase.cpp

ipe-7.1.10/build/doc/functions_func_f.html0000644000175000017500000002330612624020245020312 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- f -


ipe-7.1.10/build/doc/manual_10.html0000644000175000017500000000743112624020245016540 0ustar otfriedotfried Ipe Manual -- 3.7 Symbolic and absolute attributes
3.8 Zoom and pan3 General Concepts3.6 Transparency3.7 Symbolic and absolute attributes

3.7 Symbolic and absolute attributes

Attributes such as color, line width, pen, mark size, or text size, can be either absolute (a number, or a set of numbers specifying a color) or symbolic (a name). Symbolic attributes must be translated to absolute values by a stylesheet for rendering.

One purpose of stylesheets is to be able to reuse figures from articles in presentations. Obviously, the figure has to use much larger fonts, markers, arrows, and fatter lines in the presentation. If the original figure used symbolic attributes, this can be achieved by simply swapping the stylesheet for another one.

The Ipe user interface is tuned for using symbolic attribute values. You can use absolute colors, pen width, text size, and mark size by clicking the button to the left of the selector for the symbolic names.

When creating an object, it takes its attributes from the current user interface settings, so if you have selected an absolute value, it will get an absolute attribute. Absolute attributes have the advantage that you are free to choose any value you wish, including picking arbitrary colors using a color chooser. In symbolic mode, you can only use the choices provided by the current stylesheet.

The choices for symbolic attributes provided in the Ipe user interface are taken from your stylesheet.

ipe-7.1.10/build/doc/classipe_1_1_platform-members.html0000644000175000017500000001375212624020245022565 0ustar otfriedotfried Ipelib: Member List
ipe::Platform Member List

This is the complete list of members for ipe::Platform, including all inherited members.

currentDirectory()ipe::Platformstatic
DebugHandler typedefipe::Platform
fileExists(String fname)ipe::Platformstatic
fontmapFile()ipe::Platformstatic
fopen(const char *fname, const char *mode)ipe::Platforminlinestatic
initLib(int version)ipe::Platformstatic
latexDirectory()ipe::Platformstatic
libVersion()ipe::Platformstatic
listDirectory(String path, std::vector< String > &files)ipe::Platformstatic
readFile(String fname)ipe::Platformstatic
runPdfLatex(String dir)ipe::Platformstatic
setDebug(bool debug)ipe::Platformstatic
toDouble(String s)ipe::Platformstatic

ipe-7.1.10/build/doc/classipe_1_1_cascade-members.html0000644000175000017500000002231612624020245022320 0ustar otfriedotfried Ipelib: Member List
ipe::Cascade Member List

This is the complete list of members for ipe::Cascade, including all inherited members.

allCMaps(std::vector< String > &seq) const ipe::Cascade
allNames(Kind kind, AttributeSeq &seq) const ipe::Cascade
Cascade()ipe::Cascade
Cascade(const Cascade &rhs)ipe::Cascade
count() const ipe::Cascadeinline
fillRule() const ipe::Cascade
find(Kind, Attribute sym) const ipe::Cascade
findDefinition(Kind kind, Attribute sym) const ipe::Cascade
findEffect(Attribute sym) const ipe::Cascade
findEncoding() const ipe::Cascade
findGradient(Attribute sym) const ipe::Cascade
findLayout() const ipe::Cascade
findPageNumberStyle() const ipe::Cascade
findPreamble() const ipe::Cascade
findSymbol(Attribute sym) const ipe::Cascade
findTextPadding() const ipe::Cascade
findTiling(Attribute sym) const ipe::Cascade
findTitleStyle() const ipe::Cascade
has(Kind kind, Attribute sym) const ipe::Cascade
insert(int index, StyleSheet *sheet)ipe::Cascade
lineCap() const ipe::Cascade
lineJoin() const ipe::Cascade
operator=(const Cascade &rhs)ipe::Cascade
remove(int index)ipe::Cascade
saveAsXml(Stream &stream) const ipe::Cascade
sheet(int index)ipe::Cascadeinline
~Cascade()ipe::Cascade

ipe-7.1.10/build/doc/dir_d44c64559bbebec7f509842c48db8b23.html0000644000175000017500000002105012624020245022265 0ustar otfriedotfried Ipelib: include Directory Reference
include Directory Reference

Files

file  ipeattributes.h
 
file  ipebase.h
 
file  ipebitmap.h
 
file  ipedoc.h
 
file  ipefactory.h
 
file  ipefontpool.h
 
file  ipegeo.h
 
file  ipegroup.h
 
file  ipeimage.h
 
file  ipeiml.h
 
file  ipelatex.h
 
file  ipelet.h
 
file  ipelib.h
 
file  ipeobject.h
 
file  ipepage.h
 
file  ipepainter.h
 
file  ipepath.h
 
file  ipepdfparser.h
 
file  ipepdfwriter.h
 
file  ipepswriter.h
 
file  ipereference.h
 
file  ipeshape.h
 
file  ipesnap.h
 
file  ipestyle.h
 
file  ipetext.h
 
file  ipetoolbase.h
 
file  ipeutils.h
 
file  ipexml.h
 

ipe-7.1.10/build/doc/classipe_1_1_deflate_stream-members.html0000644000175000017500000001542312624020245023715 0ustar otfriedotfried Ipelib: Member List
ipe::DeflateStream Member List

This is the complete list of members for ipe::DeflateStream, including all inherited members.

close()ipe::DeflateStreamvirtual
deflate(const char *data, int size, int &deflatedSize, int compressLevel)ipe::DeflateStreamstatic
DeflateStream(Stream &stream, int level)ipe::DeflateStream
operator<<(char ch)ipe::Streaminline
operator<<(const String &s)ipe::Streaminline
operator<<(const char *s)ipe::Streaminline
operator<<(int i)ipe::Stream
operator<<(double d)ipe::Stream
putChar(char ch)ipe::DeflateStreamvirtual
putCString(const char *s)ipe::Streamvirtual
putHexByte(char b)ipe::Stream
putRaw(const char *data, int size)ipe::Streamvirtual
putString(String s)ipe::Streamvirtual
putXmlString(String s)ipe::Stream
~DeflateStream()ipe::DeflateStreamvirtual
~Stream()ipe::Streamvirtual

ipe-7.1.10/build/doc/structipe_1_1_font.html0000644000175000017500000004213112624020245020467 0ustar otfriedotfried Ipelib: ipe::Font Struct Reference

#include <ipefontpool.h>

Public Types

enum  TType { EType1, ETrueType }
 

Public Attributes

TType iType
 
String iName
 
int iLatexNumber
 
String iFontDict
 
String iFontDescriptor
 
String iStreamDict
 
int iLength1
 
int iLength2
 
int iLength3
 
Buffer iStreamData
 
bool iHasEncoding
 
String iEncoding [0x100]
 
bool iStandardFont
 
int iWidth [0x100]
 

Related Functions

(Note that these are not member functions.)

typedef std::vector< FontFontPool
 

Detailed Description

A text font.

Member Enumeration Documentation

Ipe supports two types of fonts.

Enumerator
EType1 
ETrueType 

Friends And Related Function Documentation

typedef std::vector<Font> FontPool
related

A list of fonts used by a Document.

Member Data Documentation

TType ipe::Font::iType

The font type.

Referenced by ipe::Face::Face().

String ipe::Font::iName

The name of this font (e.g. "Times-Roman").

Referenced by ipe::Face::Face().

int ipe::Font::iLatexNumber

The font id in the Pdflatex output: /Fxx.

String ipe::Font::iFontDict

The font dictionary in the PDF file.

String ipe::Font::iFontDescriptor

The font descriptor in the PDF file.

String ipe::Font::iStreamDict

The stream dictionary for the font stream in the PDF file.

int ipe::Font::iLength1

The values of LengthX in the font stream in the PDF file.

int ipe::Font::iLength2
int ipe::Font::iLength3
Buffer ipe::Font::iStreamData

The stream data for the font stream in the PDF file.

Referenced by ipe::Face::Face().

bool ipe::Font::iHasEncoding

Is there an explicit encoding for this font?

Referenced by ipe::Face::Face().

String ipe::Font::iEncoding[0x100]

The encoding of this font.

Referenced by ipe::Face::Face().

bool ipe::Font::iStandardFont

Is this one of the 14 standard fonts?

Referenced by ipe::Face::Face().

int ipe::Font::iWidth[0x100]

The width of each character in font units.

Referenced by ipe::Face::Face().


The documentation for this struct was generated from the following file:
  • ipefontpool.h

ipe-7.1.10/build/doc/nav_f.png0000644000175000017500000000023112624020245015663 0ustar otfriedotfried‰PNG  IHDR8³»`IDATxíÝK€ EÑ–·[†øBÑmkâÄÂH—prÓ¼.‚Žó‚ꎤR6Z VI±E‚5j³„lóš›iI˜¬ÞêçJ0ŒÑÑ/Žû›™uøñóÞ¿6sH ÝõyIEND®B`‚ipe-7.1.10/build/doc/classipe_1_1_face.html0000644000175000017500000002612312624020245020203 0ustar otfriedotfried Ipelib: ipe::Face Class Reference

#include <ipefonts.h>

Public Member Functions

 Face (int id, const Font &font)
 
 ~Face ()
 
bool matches (int id) const
 
Font::TType type () const
 
int width (int ch) const
 
cairo_font_face_t * cairoFont ()
 
int getGlyph (int ch)
 

Detailed Description

A typeface (aka font), actually loaded (from a font file or PDF file).

Constructor & Destructor Documentation

Face::~Face ( )

Member Function Documentation

bool ipe::Face::matches ( int  id) const
inline
Font::TType ipe::Face::type ( ) const
inline

Referenced by getGlyph().

int ipe::Face::width ( int  ch) const
inline
cairo_font_face_t* ipe::Face::cairoFont ( )
inline
int Face::getGlyph ( int  ch)

References ipe::Font::EType1, and type().


The documentation for this class was generated from the following files:
  • ipefonts.h
  • ipefonts.cpp

ipe-7.1.10/build/doc/group__base.html0000644000175000017500000003216212624020245017247 0ustar otfriedotfried Ipelib: Ipe Base
Ipe Base

Classes

class  ipe::String
 
class  ipe::Fixed
 
class  ipe::Lex
 
class  ipe::Buffer
 
class  ipe::Stream
 
class  ipe::StringStream
 
class  ipe::FileStream
 
class  ipe::DataSource
 
class  ipe::FileSource
 
class  ipe::BufferSource
 
class  ipe::Bitmap::MRenderData
 
class  ipe::Bitmap
 
class  ipe::Painter
 
class  ipe::PdfObj
 
class  ipe::PdfNull
 
class  ipe::PdfBool
 
class  ipe::PdfNumber
 
class  ipe::PdfString
 
class  ipe::PdfName
 
class  ipe::PdfRef
 
class  ipe::PdfArray
 
class  ipe::PdfDict
 
class  ipe::PdfParser
 
class  ipe::PdfFile
 
class  ipe::Platform
 
class  ipe::XmlAttributes
 
class  ipe::XmlParser
 
class  ipe::TellStream
 

Variables

const int ipe::IPELIB_VERSION = 70110
 
const int ipe::OLDEST_FILE_FORMAT = 70000
 
const int ipe::FILE_FORMAT = 70107
 

Detailed Description

Basic classes for Ipe.

Some very basic type definitions, streams, lexical analysis, and XML parsing.

All parts of Ipe make use of the STL. The C++ I/O streams library is not used, as Ipelib doesn't do much I/O. Ipe objects support internalization and externalization through an abstract interface based on ipe::Stream's.

Clients of Ipelib can use any I/O library that implements this interface. Ipe simply uses cstdio.

Variable Documentation

const int ipe::IPELIB_VERSION = 70110
const int ipe::OLDEST_FILE_FORMAT = 70000

Oldest readable file format version.

Referenced by ipe::ImlParser::parseDocument().

const int ipe::FILE_FORMAT = 70107

Current file format version.

Referenced by ipe::Document::saveAsXml().


ipe-7.1.10/build/doc/classes.html0000644000175000017500000005537112624020245016426 0ustar otfriedotfried Ipelib: Class Index
Class Index
A | B | C | D | E | F | G | I | L | M | O | P | R | S | T | V | X
  A  
CurveSegment (ipe)   Ipelet (ipe)   PdfDict (ipe)   Painter::State (ipe)   
  D  
IpeletData (ipe)   PdfFile (ipe)   Gradient::Stop (ipe)   
A85Source (ipe)   IpeletHelper (ipe)   PdfName (ipe)   Stream (ipe)   
A85Stream (ipe)   DataSource (ipe)   
  L  
PdfNull (ipe)   String (ipe)   
AllAttributes (ipe)   DeflateStream (ipe)   PdfNumber (ipe)   StringStream (ipe)   
Angle (ipe)   Document (ipe)   Latex (ipe)   PdfObj (ipe)   CanvasBase::Style (ipe)   
Arc (ipe)   
  E  
Layout (ipe)   PdfPainter (ipe)   StyleSheet (ipe)   
Attribute (ipe)   Lex (ipe)   PdfParser (ipe)   SubPath (ipe)   
  B  
Effect (ipe)   Line (ipe)   PdfRef (ipe)   Symbol (ipe)   
Ellipse (ipe)   Linear (ipe)   PdfString (ipe)   
  T  
Base64Source (ipe)   
  F  
  M  
PdfToken (ipe)   
Base64Stream (ipe)   PdfWriter (ipe)   TellStream (ipe)   
BBoxPainter (ipe)   Face (ipe)   Matrix (ipe)   Platform (ipe)   Text (ipe)   
Bezier (ipe)   FileSource (ipe)   Bitmap::MRenderData (ipe)   PsPainter (ipe)   TextPadding (ipe)   
Bitmap (ipe)   FileStream (ipe)   
  O  
PsWriter (ipe)   Thumbnail (ipe)   
BitmapFinder (ipe)   Fixed (ipe)   
  R  
Tiling (ipe)   
Buffer (ipe)   Font (ipe)   Object (ipe)   StyleSheet::TitleStyle (ipe)   
BufferSource (ipe)   Fonts (ipe)   ObjectFactory (ipe)   Rect (ipe)   Tool (ipe)   
  C  
  G  
  P  
Reference (ipe)   TransformTool (ipe)   
Repository (ipe)   
  V  
CairoPainter (ipe)   Gradient (ipe)   Page (ipe)   
  S  
Canvas (ipe)   Group (ipe)   StyleSheet::PageNumberStyle (ipe)   Vector (ipe)   
CanvasBase (ipe)   
  I  
PageSelector (ipe)   Segment (ipe)   Visitor (ipe)   
CanvasObserver (ipe)   Painter (ipe)   SelectTool (ipe)   
  X  
Cascade (ipe)   Image (ipe)   PanTool (ipe)   Shape (ipe)   
ClosedSpline (ipe)   ImlParser (ipe)   Path (ipe)   Snap (ipe)   Text::XForm (ipe)   
Color (ipe)   InflateSource (ipe)   PdfArray (ipe)   SelectTool::SObj (ipe)   XmlAttributes (ipe)   
Curve (ipe)   IpeAutoPtr   PdfBool (ipe)   Document::SProperties (ipe)   XmlParser (ipe)   
A | B | C | D | E | F | G | I | L | M | O | P | R | S | T | V | X

ipe-7.1.10/build/doc/doxygen.png0000644000175000017500000000730312624020245016256 0ustar otfriedotfried‰PNG  IHDRh ;ˆØŠIDATxí]y\•Õº~45%TL Q”PE"q–Û11±]8a„w*©¨(*â" ˆzÀè`8 ¨‰¢mÅ,’òà„p$%”œBó(8k†Ü÷ýÜû6lòö»§k÷Ç÷[ÏÞß·Ö;?k½ëßÕÕÕPxÑêÏ't´ÏùÈ€zÀÇÅ3_€Q4€g@œmÿ ¾ò‰âci‰ôçÿ{ ðÇð¬ù~½Á€4:õHcÂü ðŸÁ³„ª'ÕPÆæ P7^h،♠zb„cóP¨„ 3‚† Ò}çÿO²qÁºNkÝTÛ(É?d Ç~z<’«4Óǡ؞Þv­zµÙ¦õ¬ZâdÛ,Ë6Ók±]Fz< ¾ZçƒsÕ?ìƒsUø2SÉåwê1”c`[ì—}%ѽ.Ô¼6‚BLZ˜û!F8[ ¹…×TéÛ— »Þ#gó]å:vžu?‡vèbÙR˜?wùŽŸ¾ÊÐgbÑÉÌÕ$kF~Ê;عÆ•¢ïX®?ÉèlÆÙôõà»Nʪ¼­,ìHC§gAz•ÆlÓº­gÑú ]œjÎñåM…3ÓÚæoÒ³'=‘$Ò÷f}G•ŸS_‡öèco.Êȹ :ó£ Ãds®Ù:1=¼{ƒå9?÷ý…zqÛvîÓi‰D’p¿Ë šmÙíoÛâýaÖüEqÒµwÌ}¿~{òj€ç{ôºŸFNëí[ëOq·ÇOSúXO]°>‚‚muæÄ¾e¤“5Ë{¨JÕ¯£(›´«bÂçû’ÍlÓÅ}žïú`éUÞy„ac§Á†ÔCºŠóAkl‘±y¥†ô¢ùôs÷Aø¬7ÄõôoJ±äÄ ù.¥Be. Z¬Ð×ÇÈöå¹­ù'Ù-PëìŠyF.ž‚žÝÚ€lp&.êˆð•jò7’re’z19»ã§HGíø%œüq°ïüz׈c¬_k_")ŸHJnÐÑ~ˆÐÖ˜á´äÕ5 µÁq€ÿ5#¸·îà¶+9T‘‚ ðŽ÷Rܸrz“Ï´Ì =Ï…{ðáO£Èf ¡Íwg|Ž’Ü/¢Þ$÷¯¢ëðúÀ;¿à¨Ö™âÒÆ­]¯ÜW"Þ/< ‡÷DÏà°½üB}çyIEc^—ƒ=[V“Ýh²ëMä$l];Kû®¸ýr¦È*Åò ÿtÒõ$]•MŸ÷´;×I€1èó!‚œõ¸M õ¨(fÌæ<ÁÎÎò5~z¿ù¶ž mÌêÕ >–âÚ©âëˆIÎÞçz;ãu[i·eç^ÆÜÙÓ³NÞëF6B\}7†»+üŽÓ,Ã'a ½˜-yHY¿,‘^—ñfú~ß?Hcø¸…¸ñó{Z+4\såƒû·¯Ù·nߣð«íFÆ¡sغëû§D¾?ò<–Ævkx0ÅM±ælذÁIÓxÿd”žÜÉ÷EE»AªM«g*È£YEí7Û™^[uíý®v[wGå†=Ed¼n×¶ÆæÖÅl¡'¨pGÚk+‹æ¢À¬¨C8ªâš2 dz3H£ß ¡¨BÒûSÃÅù[wŘ ~xpçútÁæmö¤Å£¥iQæ­‰AB1ÉfÙ‰›4u¹ïìIÒ]Ë6äò%ÿ†† 1t.’NJph¬zÌ ÎR1Ž"3-"¸‡‹&ìó°1âüžìó[:‡ï„¼‘……N m–“W0®_èÜœ ×õ6ùò&»)Æìꦬýæ}¬ñ~»{múù]z½£M•ºP~^Îá:eQTÙ_*7ÕÄ9É8—·Ëï 3°¶47E•î¿u÷“SÉ»U¯ _ NíºôW¬e¸ÄNÓ|»;™¿;ŒæÅd"ȉôøòÞµõï¾®½"èÄ´ÖMM+bYµ‘_ÉæEÝüÎ]P»¹XKÐI½Þ¥oE<_¹(„EP±Œ|mÇÁ¡‘Ý,ŠÓ©ººZ±Îߺ§×kÝ,kÍMš`Äø…jzeU»æ ™Át3ÓÀ½˜6—ÒöùË·r¨¹Ñ}““wö:Χùë¼ ¿|‚TܵÉQˆKßç_ÁâÀ™œ”pÑÐóໃ¼Ydâ0!®àa –øöçW$ÃÁ‘Á$/\¬$ð 2ÞímÞLH‹Ÿ èd£HVÜ,:ò½»RÍZšJ­a„z*>‹_…NT(ù‚^SVF­U¹8ñEþôñ܈óùnd;«®8™\C]ø=Èêm¬Æ:‚´ÆbãDd=Áãßžˆ‹UU5O‹|]þð®Pèêv‰á\]2ßìÿ"yÈ[ïyʧz£g{Y«{„Ùø5©ÿ;w{N3é­nâĨw§Á¢ÍK¢Ý­ûÏ29Id¿’ì y)ìPÞò8ŒÅ©¯‰±@mPÔñwjl,6 áhWÕ˜d öà uõmÁp®.™á£Ç…twöR x­BδYcŒxg*vo  yò‘•“[¬?ÜVœ˜0ÒN¡O난~Žó’¯·h#´Hkýœ±8kÓß^Àq@]àÓ“ø,56´¯÷Í-κU»n…[>]@nîøÏœp›[œ6# €4tën¯:ŽÒþ}…—8äT9_žY$/´G’K™©ù†•(óÑ’Mø©`ŸÉdѺ;ùO‹B Ó&P{qöhJÉ+Úé–§¦l2«MïöÝ_1ÑÓ«’t¸½±l€ëØya ¦ô©«®½ÆL^¬žêñš¸ùy.¾Û½Š[ u/]½‹iS}øN>²e1™q‡jfÚ&¢©iT\=kÏ›ÀXô-.84V5ðu!TE˜ þ.ŒOH´¶4—zwTr.ï‰¦Ë xõµ·œÖ„HÆù£žÈHùg Ñhñ’T$ßyq¸zþ¨p¿´ë< q•ró÷š‰wÿÍÑð–I]´–æI²é²˜sÂ"×:Õ–bÕ¦“ÈÙL6¢9VÊÓWž§<æ;”3?ý©Mê3AV#µ±ËÞ¯‘ž K£UrÝ9!›qát¦H£Ù+6ÇV…/TS^pÃùqgLP'Ú5E ‚–ÀÞºîÄ Ën"2|Ÿ;®W»Îý"Ö¬TwÖâµtúŽO'› á+W Ã+¦âZÌ–<ÕÆ&nOÝ,IŠ£06.ÁZ.Çñúøh*INÚ’Oe½ÉgBXÐÔZóäøä9èü“hÒíDSš¥¡Ê µA¯/Ôc¸ö“`A§¯"zå|‘ €ÅŸ¨ú;HÍ#‚Î|%ÄOˆƒ«OàÌÉÐÜD ž mÜðâc–ƤÉÂqm¶uË&~÷núÒË £ÇÏ€ZÕj =«_n[‡‡÷nN§ÏÝ$_¾bE˜‚€Õ)ù8¾?6‘lú“ÍÙæÖ}#bW( œ³d-®•p&¡ý’œÖa”"9öõņÐ$’Ú›AÜ!ä;ÐÑõè{~á¹8‘ÛÞ£1ÛÓÉ0ž`²#´kÒuäNÅÖ Q¹bhæ ”8ûÓMáŽa›•¿”w±h²¢®qŠæ°(bK ‚’Z¾Ò%ÐÆémáãÖË(Éý‚ÛJ)@> þ›7% ï{y Á“¾ÆÒîohfòô>{pÿ.­_Î%±ÉèägëlZØ\B2B #™¸ÚüÒºp‚hÝšü®[¥Ü<‹#SpñÌA7’ãØHƒt4:Ÿ|g¨tÓL¶*($Æ©»ì…®ù’ó÷$;b›ÔÙ`=¶£¦M„MÌÄ5ò«·Ç¾“H·ÌH.¼žHeAîº5}r­dõ¨±)ÀT};€Q5iÖ2…O0ü…0óñÃ;óæ,Š´²µ냔}g‘£]‹7å9ˆà©_{üèîêžC>úhê{Ž .ÈìðIIð€?[Kswz6Òuíý¬;µ€ç§OåâJÉa˶zv°éd† ¤µâ‚l´é舊«Åüy¾c÷ÁèÖÍ'ràúÅ™TWÕôÓ°¡L €|ʽŒ¼ì­høBã ÝTëî'ò]Kø£ìâÏ(=¹Kx €¿ LÌ,Pý¤Êµu‡¹…׈ §Å¾÷à1Ý«Äý;¿pGDäxZYÛ kfæ6¸ùóæ7®œ®þ6·ÕoÚ¾ÔH~ò®Þ¸â 8Uø“p<ºw3¡a£ÏÑ’‘3èÏ"€bˆ-ÎܺÏ_ªÅ]+ËM©zü°s“f-êçhÇãÑýÊãôÿ5}ZQNb{Ó?å%ÿ\SUõعIÓæ}~}p[œoÔÄ„êÐMMZáNÅå@>Œ„²á6(?¡Åé âK½+ü?À%ÝÝ·/Ç1‚9áUø?B)”ÕèâÞlÈÒêÏ @=àùÄÞžk­®ÅIEND®B`‚ipe-7.1.10/build/doc/functions_vars_o.html0000644000175000017500000000662612624020245020351 0ustar otfriedotfried Ipelib: Class Members - Variables
 

- o -


ipe-7.1.10/build/doc/ftv2blank.png0000644000175000017500000000012612624020245016466 0ustar otfriedotfried‰PNG  IHDRɪ|IDATxíݱðøScOx@ –¨y}IEND®B`‚ipe-7.1.10/build/doc/classipe_1_1_rect.html0000644000175000017500000012150212624020245020237 0ustar otfriedotfried Ipelib: ipe::Rect Class Reference

#include <ipegeo.h>

Public Member Functions

 Rect ()
 
 Rect (const Vector &c)
 
 Rect (const Vector &c1, const Vector &c2)
 
void clear ()
 
int isEmpty () const
 
double left () const
 
double right () const
 
double bottom () const
 
double top () const
 
Vector topRight () const
 
Vector bottomLeft () const
 
Vector topLeft () const
 
Vector bottomRight () const
 
double width () const
 
double height () const
 
void addPoint (const Vector &rhs)
 
void addRect (const Rect &rhs)
 
void clipTo (const Rect &rhs)
 
bool contains (const Vector &rhs) const
 
bool contains (const Rect &rhs) const
 
bool certainClearance (const Vector &v, double bound) const
 
bool intersects (const Rect &rhs) const
 

Related Functions

(Note that these are not member functions.)

Streamoperator<< (Stream &stream, const Rect &rhs)
 

Detailed Description

Axis-parallel rectangle (which can be empty)

Constructor & Destructor Documentation

ipe::Rect::Rect ( )
inlineexplicit

Create empty rectangle.

ipe::Rect::Rect ( const Vector c)
inlineexplicit

Create rectangle containing just the point c.

Rect::Rect ( const Vector c1,
const Vector c2 
)
explicit

Create rectangle containing points c1 and c2.

Member Function Documentation

void ipe::Rect::clear ( )
inline

Make rectangle empty.

References ipe::Vector::x, and ipe::Vector::y.

Referenced by ipe::BBoxPainter::doNewPath().

int ipe::Rect::isEmpty ( ) const
inline
double ipe::Rect::left ( ) const
inline

Return left side.

References ipe::Vector::x.

double ipe::Rect::right ( ) const
inline

Return right side.

References ipe::Vector::x.

double ipe::Rect::bottom ( ) const
inline

Return bottom side.

References ipe::Vector::y.

double ipe::Rect::top ( ) const
inline

Return top side.

References ipe::Vector::y.

Vector ipe::Rect::bottomRight ( ) const
inline
double ipe::Rect::width ( ) const
inline
double ipe::Rect::height ( ) const
inline
void Rect::addRect ( const Rect rhs)
void Rect::clipTo ( const Rect cbox)

Clip rectangle to fit inside cbox.

Does nothing if either rectangle is empty.

References isEmpty(), ipe::Vector::x, and ipe::Vector::y.

Referenced by ipe::Group::addToBBox(), ipe::BBoxPainter::doDrawBitmap(), ipe::BBoxPainter::doDrawPath(), and ipe::BBoxPainter::doDrawText().

bool Rect::contains ( const Vector rhs) const

Does (closed) rectangle contain the point?

References ipe::Vector::x, and ipe::Vector::y.

Referenced by ipe::SelectTool::mouseButton().

bool Rect::contains ( const Rect rhs) const

Does rectangle contain other rectangle?

References isEmpty(), ipe::Vector::x, and ipe::Vector::y.

bool Rect::certainClearance ( const Vector v,
double  bound 
) const

Returns false if the distance between the box and v is smaller than bound. Often returns true if their distance is larger than bound.

References ipe::Vector::x, and ipe::Vector::y.

Referenced by ipe::Image::distance(), ipe::Bezier::distance(), and ipe::Bezier::snap().

bool Rect::intersects ( const Rect rhs) const

Does rectangle intersect other rectangle?

References isEmpty(), ipe::Vector::x, and ipe::Vector::y.

Referenced by ipe::SelectTool::mouseButton().

Friends And Related Function Documentation

Stream & operator<< ( Stream stream,
const Rect rhs 
)
related

The documentation for this class was generated from the following files:
  • ipegeo.h
  • ipegeo.cpp

ipe-7.1.10/build/doc/manual_43.html0000644000175000017500000003476212624020245016555 0ustar otfriedotfried Ipe Manual -- 9.3 Ipe object elements
9.4 The <ipestyle> element9 The Ipe file format9.2 The <page> element9.3 Ipe object elements

9.3 Ipe object elements

Common attributes

layer
(optional) Only allowed on "top-level" objects, that is, objects directly inside a <page> element. The value indicates into which layer the object goes. If the attribute is missing, the object goes into the same layer as the preceding object. If the first object has no layer attribute, it goes into the layer defined first in the page, or the default "alpha" layer.
matrix
(optional) A sequence of six real numbers, separated by white space, indicating a transformation matrix for all coordinates inside the element (including embedded elements if this is a <group> element). A missing matrix attribute is interpreted as the identity matrix.
pin
(optional) Possible values are yes (object is fixed on the page), h (object is pinned horizontally, but can move in the vertical direction), and v (the opposite). The default is no pinning.
transformations
(optional) This attribute determines how objects can be deformed by transformations. Possible values are affine (the default), rigid, and translations.

Color attribute values

A color attribute value is either a symbolic name defined in one of the style sheets of the document, one of the predefined names "black" or "white", a single real number between 0 (black) and 1 (white) indicating a gray level, or three real numbers in the range [0,1] indicating the red, green, and blue component (in this order), separated by white space.

Path construction operators

Graphical shapes in Ipe are described using a series of "path construction operators" with arguments. This generalizes the PDF path construction syntax.

Each operator follows its arguments. The operators are

  • m (moveto) (1 point argument): begin new subpath.
  • l (lineto) (1 point argument): add straight segment to subpath.
  • c (cubic B-spline) (n point arguments): add a uniform cubic B-spline with n+1 control points (the current position plus the n arguments). If n = 3, this is equivalent to a single cubic Bézier spline, if n = 2 it is equivalent to a single quadratic Bézier spline.
  • q (deprecated) (2 point arguments): identical to 'c'.
  • e (ellipse) (1 matrix argument): add a closed subpath consisting of an ellipse, the ellipse is the image of the unit circle under the transformation described by the matrix.
  • a (arcto) (1 matrix argument, 1 point argument): add an elliptic arc, on the ellipse describe by the matrix, from current position to given point.
  • s (deprecated) (n point arguments): add an "old style" uniform cubic B-spline as used by Ipe up to version 7.1.6.
  • u (closed spline) (n point arguments): add a closed subpath consisting of a closed uniform B-spline with n control points,
  • h (closepath) (no arguments): close the current subpath. No more segments can be added to this subpath, so the next operator (if there is one) must start a new subpath.
Paths consisting of more than one closed loop are allowed. A subpath can consist of any mix of straight segments, elliptic arcs, and B-splines.

9.3.1 The <group> element

The <group> element allows to group objects together, so that they appear as one in the user interface.

Attributes

clip
(optional) The value is a sequence of path construction operators, forming a clipping path for the objects inside the group.

The contents of the <group> element is a series of Ipe object elements.

9.3.2 The <image> element

Attributes

bitmap
(required) Value is an integer referring to a bitmap defined in a <bitmap> element in the document,
rect
(required) Four real coordinates separated by white space, in the order x1, y1, x2, y2, indicating two opposite corners of the image in Ipe coordinates).

The image element is normally empty. However, it is allowed to omit the bitmap attribute. In this case, the <image> must carry all the attributes of the <bitmap> element, with the exception of id. The element contents is then the bitmap data, as described for <bitmap>.

9.3.3 The <use> element

The <use> element refers to a symbol (an Ipe object) defined in the style sheet. The attributes stroke, fill, pen, and size make sense only when the symbol accepts these parameters.

Attributes

name
(required) The name of a symbol defined in a style sheet of the document.
pos
(optional) Position of the symbol on the page (two real numbers, separated by white space). This is the location of the origin of the symbol coordinate system. The default is the origin.
stroke
(optional) A stroke color (used whereever the symbol uses the symbolic color "sym-stroke"). The default is black.
fill
(optional) A fill color (used whereever the symbol uses the symbolic color "sym-fill"). The default is white.
pen
(optional) A line width (used whereever the symbol uses the symbolic value "sym-pen"). The default is "normal".
size
(optional) The size of the symbol, either a symbolic size (of type "symbol size"), or an absolute scaling factor. The default is 1.0.

The <use> element must be empty.

9.3.4 The <text> element

Attributes

stroke
(optional) The stroke color. If the attribute is missing, black will be used.
type
(required) Possible values are label and minipage.
size
(optional) The font size—either a symbolic name defined in a style sheet, or a real number. The default is "normal".
pos
(required) Two real numbers separated by white space, defining the position of the text on the paper.
width
(required for minipage objects, optional for label objects) The width of the object in points.
height
(optional) The total height of the object in points.
depth
(optional) The depth of the object in points.
valign
(optional) Possible values are top (default for a minipage object), bottom (default for a label object), center, and baseline.
halign
(optional, label only) Possible values are left, right, and center. left is the default. This determines the position of the reference point with respect to the text box.
style
(optional, minipage only) Selects a LaTeX "style" to be used for formatting the text, and must be a symbolic name defined in a style sheet. The standard style sheet defines the styles "normal", "center", "itemize", and "item". If the attribute is not present, the "normal" style is applied.
opacity
(optional) Opacity of the element. This must be a symbolic name. The default is 1.0, meaning fully opaque.

The dimensions are recomputed by Ipe when running LaTeX, with the exception of width for minipage objects whose width is fixed.

The contents of the <text> element must be a legal LaTeX fragment that can be interpreted by LaTeX inside \hbox, possibly using the macros or packages defined in the preamble.

9.3.5 The <path> element

Attributes

stroke
(optional) The stroke color. If the attribute is missing, the shape will not be stroked.
fill
(optional) The fill color. If the attribute is missing, the shape will not be filled.
dash
(optional) Either a symbolic name defined in a style sheet, or a dash pattern in PDF format, such as "[3 1] 0" for "three pixels on, one off, starting with the first pixel". If the attribute is missing, a solid line is drawn.
pen
(optional) The line width, either symbolic (defined in a style sheet), or as a single real number. The default value is "normal".
cap
(optional) The line cap setting of PDF as an integer. If the argument is missing, the setting from the style sheet is used.
join
(optional) The line join setting of PDF as an integer. If the argument is missing, the setting from the style sheet is used.
fillrule
(optional) Possible values are wind and eofill, selecting one of two algorithms for determining whether a point lies inside a filled object. If the argument is missing, the setting from the style sheet is used.
arrow
(optional) The value consists of a symbolic name, say "triangle" for an arrow type (a symbol with name "arrow/triangle(spx)"), followed by a slash and the size of the arrow. The size is either a symbolic name (of type "arrowsize") defined in a style sheet, or a real number. If the attribute is missing, no arrow is drawn.
rarrow
(optional) Same for an arrow in the reverse direction (at the beginning of the first subpath).
opacity
(optional) Opacity of the element. This must be a symbolic name. The default is 1.0, meaning fully opaque.
tiling
(optional) A tiling pattern to be used to fill the element. The default is not to tile the element. If the element is not filled, then the tiling pattern is ignored.
gradient
(optional) A gradient pattern to be used to fill the element. If the element is not filled, then the gradient pattern is ignored. (The fill color is only used for rendering where gradients are not available, for instance currently in Postscript.) If gradient is set, then tiling is ignored.

The contents of the <path> element is a sequence of path construction operators. The entire shape will be stroked and/or filled with a single stroke and fill operation.

ipe-7.1.10/build/doc/manual_40.html0000644000175000017500000001051112624020245016534 0ustar otfriedotfried Ipe Manual -- 9 The Ipe file format
10 If you have used Ipe 6 beforeTop8 Advanced topics9 The Ipe file format

9 The Ipe file format

Ipe can store documents in several possible formats. Among them are standard PDF and Postscript, which can be read by any application capable of opening such files, such as Acrobat Reader, Xpdf, or Ghostview. (Ipe embeds its own information inside PDF and Postscript files. The way this is done is not documented here, and may change between releases of Ipe.)

There is one other Ipe file format, which is a pure XML implementation. Files stored in this format can be parsed with any XML-aware application, and you can create XML files for Ipe from your own applications.

A DTD for the Ipe format is available as ipe.dtd. For instance, you can use this to validate an Ipe document using

xmllint --valid --path <path-to-ipe.dtd> --noout <file.ipe>

The tags understood by Ipe are described informally in this section. Tags in the XML file can carry attributes other than the ones documented here. Ipe ignores all attributes it does't understand, and they will be lost if the document is saved again from Ipe. Ipe will complain about any XML elements not described here, with the exception that you can use elements whose name starts with "x-" freely to add your own information inside an Ipe file.

An Ipe XML file must contain exactly one <ipe> element, while an Ipe stylesheet file must contain exactly one <ipestyle> element (both types of files are allowed to start with an <?xml> tag, which is simply ignored by Ipe). An Ipe file may also contain a <!DOCTYPE> tag.

All elements are documented below.

ipe-7.1.10/build/doc/classipe_1_1_pdf_array-members.html0000644000175000017500000001517412624020245022710 0ustar otfriedotfried Ipelib: Member List
ipe::PdfArray Member List

This is the complete list of members for ipe::PdfArray, including all inherited members.

append(const PdfObj *)ipe::PdfArray
array() const ipe::PdfArrayvirtual
boolean() const ipe::PdfObjvirtual
count() const ipe::PdfArrayinline
dict() const ipe::PdfObjvirtual
name() const ipe::PdfObjvirtual
null() const ipe::PdfObjvirtual
number() const ipe::PdfObjvirtual
obj(int index, const PdfFile *file) const ipe::PdfArray
PdfArray()ipe::PdfArrayinlineexplicit
ref() const ipe::PdfObjvirtual
repr() const ipe::PdfObj
string() const ipe::PdfObjvirtual
write(Stream &stream) const ipe::PdfArrayvirtual
~PdfArray()ipe::PdfArray
~PdfObj()=0ipe::PdfObjpure virtual

ipe-7.1.10/build/doc/classipe_1_1_curve-members.html0000644000175000017500000002262412624020245022063 0ustar otfriedotfried Ipelib: Member List
ipe::Curve Member List

This is the complete list of members for ipe::Curve, including all inherited members.

addToBBox(Rect &box, const Matrix &m, bool cp) const ipe::Curvevirtual
appendArc(const Matrix &m, const Vector &v0, const Vector &v1)ipe::Curve
appendOldSpline(const std::vector< Vector > &v)ipe::Curveinline
appendSegment(const Vector &v0, const Vector &v1)ipe::Curve
appendSpline(const std::vector< Vector > &v)ipe::Curveinline
asClosedSpline() const ipe::SubPathvirtual
asCurve() const ipe::Curvevirtual
asEllipse() const ipe::SubPathvirtual
closed() const ipe::Curveinlinevirtual
closingSegment(Vector u[2]) const ipe::Curve
countSegments() const ipe::Curveinline
Curve()ipe::Curve
distance(const Vector &v, const Matrix &m, double bound) const ipe::Curvevirtual
draw(Painter &painter) const ipe::Curvevirtual
EClosedSpline enum valueipe::SubPath
ECurve enum valueipe::SubPath
EEllipse enum valueipe::SubPath
save(Stream &stream) const ipe::Curvevirtual
segment(int i) const ipe::Curve
setClosed(bool closed)ipe::Curve
snapBnd(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Curvevirtual
snapVtx(const Vector &mouse, const Matrix &m, Vector &pos, double &bound, bool cp) const ipe::Curvevirtual
type() const ipe::Curvevirtual
Type enum nameipe::SubPath
~SubPath()=0ipe::SubPathpure virtual

ipe-7.1.10/build/doc/classipe_1_1_object_factory-members.html0000644000175000017500000000567412624020245023742 0ustar otfriedotfried Ipelib: Member List
ipe::ObjectFactory Member List

This is the complete list of members for ipe::ObjectFactory, including all inherited members.

createImage(String name, const XmlAttributes &attr, Bitmap bitmap)ipe::ObjectFactorystatic
createObject(String name, const XmlAttributes &attr, String data)ipe::ObjectFactorystatic

ipe-7.1.10/build/doc/classipe_1_1_canvas.html0000644000175000017500000022752312624020245020567 0ustar otfriedotfried Ipelib: ipe::Canvas Class Reference

#include <ipecanvas_win.h>

Inherits ipe::CanvasBase, QWidget, ipe::CanvasBase, and ipe::CanvasBase.

Public Member Functions

 Canvas (GtkWidget *parent)
 
 ~Canvas ()
 
GtkWidget * window () const
 
 Canvas (QWidget *parent, Qt::WFlags f=0)
 
virtual void setCursor (TCursor cursor, double w=1.0, Color *color=0)
 
 Canvas (HWND parent)
 
HWND windowId () const
 
- Public Member Functions inherited from ipe::CanvasBase
virtual ~CanvasBase ()
 
void setPage (const Page *page, int pno, int view, const Cascade *sheet)
 
void setFontPool (const FontPool *fontPool)
 
Vector pan () const
 
double zoom () const
 
const Cascadecascade () const
 
Vector center () const
 
Vector pos () const
 
Vector unsnappedPos () const
 
Vector globalPos () const
 
Vector simpleSnapPos () const
 
const Snapsnap () const
 
int additionalModifiers () const
 
void setAdditionalModifiers (int mod)
 
Vector devToUser (const Vector &arg) const
 
Vector userToDev (const Vector &arg) const
 
void setCanvasStyle (const Style &style)
 
Style canvasStyle () const
 
void setPan (const Vector &v)
 
void setZoom (double zoom)
 
void setSnap (const Snap &s)
 
void setDimmed (bool dimmed)
 
void setAutoOrigin (const Vector &v)
 
Matrix canvasTfm () const
 
void setRetina (int r)
 
void setObserver (CanvasObserver *observer)
 
void setFifiVisible (bool visible)
 
void setSelectionVisible (bool visible)
 
void setTool (Tool *tool)
 
void finishTool ()
 
Tooltool ()
 
void update ()
 
void updateTool ()
 
int canvasWidth () const
 
int canvasHeight () const
 

Static Public Member Functions

static void init (HINSTANCE hInstance)
 
static HBITMAP createBitmap (unsigned char *p, int w, int h)
 
- Static Public Member Functions inherited from ipe::CanvasBase
static int selectPageOrView (Document *doc, int page=-1, int startIndex=0, int pageWidth=240, int width=600, int height=480)
 

Protected Member Functions

virtual void invalidate ()
 
virtual void invalidate (int x, int y, int w, int h)
 
void drawFifi (QPainter &q)
 
virtual void paintEvent (QPaintEvent *ev)
 
void mouseButton (QMouseEvent *ev, int button, bool press)
 
virtual void mouseDoubleClickEvent (QMouseEvent *ev)
 
virtual void mousePressEvent (QMouseEvent *ev)
 
virtual void mouseReleaseEvent (QMouseEvent *ev)
 
virtual void mouseMoveEvent (QMouseEvent *ev)
 
virtual void tabletEvent (QTabletEvent *ev)
 
virtual void wheelEvent (QWheelEvent *ev)
 
virtual void keyPressEvent (QKeyEvent *ev)
 
virtual QSize sizeHint () const
 
- Protected Member Functions inherited from ipe::CanvasBase
 CanvasBase ()
 
void drawPaper (cairo_t *cc)
 
void drawFrame (cairo_t *cc)
 
void drawAxes (cairo_t *cc)
 
void drawGrid (cairo_t *cc)
 
void drawObjects (cairo_t *cc)
 
void drawTool (Painter &painter)
 
void snapToPaperAndFrame ()
 
void refreshSurface ()
 
void computeFifi (double x, double y)
 
void drawFifi (cairo_t *cr)
 

Additional Inherited Members

- Public Types inherited from ipe::CanvasBase
enum  TModifiers { EShift = 0x100, EControl = 0x200, EAlt = 0x400, EMeta = 0x800 }
 
enum  TCursor { EStandardCursor, EHandCursor, ECrossCursor, EDotCursor }
 
- Protected Attributes inherited from ipe::CanvasBase
CanvasObserveriObserver
 
TooliTool
 
const PageiPage
 
int iPageNumber
 
int iView
 
const CascadeiCascade
 
Style iStyle
 
Vector iPan
 
double iZoom
 
Snap iSnap
 
bool iDimmed
 
bool iAutoSnap
 
Vector iAutoOrigin
 
int iAdditionalModifiers
 
int iRetina
 
bool iRepaintObjects
 
int iWidth
 
int iHeight
 
cairo_surface_t * iSurface
 
Vector iUnsnappedMousePos
 
Vector iMousePos
 
Vector iGlobalPos
 
Vector iOldFifi
 
bool iFifiVisible
 
Snap::TSnapModes iFifiMode
 
bool iSelectionVisible
 
FontsiFonts
 

Detailed Description

A widget (control) that displays an Ipe document page.

Constructor & Destructor Documentation

Canvas::Canvas ( GtkWidget *  parent)
Canvas::~Canvas ( )
Canvas::Canvas ( QWidget *  parent,
Qt::WFlags  f = 0 
)

Construct a new canvas.

Canvas::Canvas ( HWND  parent)

Member Function Documentation

GtkWidget* ipe::Canvas::window ( ) const
inline
virtual void ipe::Canvas::setCursor ( TCursor  cursor,
double  w = 1.0,
Color color = 0 
)
virtual

Implements ipe::CanvasBase.

virtual void ipe::Canvas::invalidate ( )
protectedvirtual

Implements ipe::CanvasBase.

virtual void ipe::Canvas::invalidate ( int  x,
int  y,
int  w,
int  h 
)
protectedvirtual

Implements ipe::CanvasBase.

void Canvas::mouseDoubleClickEvent ( QMouseEvent *  ev)
protectedvirtual

References mouseButton().

void Canvas::mousePressEvent ( QMouseEvent *  ev)
protectedvirtual

References mouseButton().

void Canvas::mouseReleaseEvent ( QMouseEvent *  ev)
protectedvirtual

References mouseButton().

void Canvas::wheelEvent ( QWheelEvent *  ev)
protectedvirtual
void Canvas::keyPressEvent ( QKeyEvent *  ev)
protectedvirtual
QSize Canvas::sizeHint ( ) const
protectedvirtual
void Canvas::init ( HINSTANCE  hInstance)
static
HWND ipe::Canvas::windowId ( ) const
inline
HBITMAP Canvas::createBitmap ( unsigned char *  p,
int  w,
int  h 
)
static

The documentation for this class was generated from the following files:
  • ipecanvas_gtk.h
  • ipecanvas_win.h
  • ipecanvas_qt.h
  • ipecanvas_gtk.cpp
  • ipecanvas_qt.cpp
  • ipecanvas_win.cpp
  • ipeselector_win.cpp

ipe-7.1.10/build/doc/classipe_1_1_vector-members.html0000644000175000017500000002224012624020245022233 0ustar otfriedotfried Ipelib: Member List
ipe::Vector Member List

This is the complete list of members for ipe::Vector, including all inherited members.

angle() const ipe::Vector
dot(const Vector &lhs, const Vector &rhs)ipe::Vectorrelated
factorize(Vector &unit) const ipe::Vector
len() const ipe::Vector
normalized() const ipe::Vector
operator!=(const Vector &rhs) const ipe::Vectorinline
operator*(double rhs) const ipe::Vectorinline
operator*(double lhs, const Vector &rhs)ipe::Vectorrelated
operator*=(double rhs)ipe::Vectorinline
operator+(const Vector &rhs) const ipe::Vectorinline
operator+=(const Vector &rhs)ipe::Vectorinline
operator-(const Vector &rhs) const ipe::Vectorinline
operator-() const ipe::Vectorinline
operator-=(const Vector &rhs)ipe::Vectorinline
operator<<(Stream &stream, const Vector &rhs)ipe::Vectorrelated
operator==(const Vector &rhs) const ipe::Vectorinline
orthogonal() const ipe::Vector
snap(const Vector &mouse, Vector &pos, double &bound) const ipe::Vector
sqLen() const ipe::Vectorinline
Vector()ipe::Vectorinline
Vector(Angle alpha)ipe::Vectorexplicit
Vector(double x0, double y0)ipe::Vectorinlineexplicit
xipe::Vector
yipe::Vector
ZEROipe::Vectorstatic

ipe-7.1.10/build/doc/group__canvas.html0000644000175000017500000000746612624020245017621 0ustar otfriedotfried Ipelib: Ipe canvas
Ipe canvas

Classes

class  ipe::Tool
 
class  ipe::Canvas
 
class  ipe::PageSelector
 
class  ipe::PanTool
 
class  ipe::SelectTool
 
class  ipe::TransformTool
 

Detailed Description

A widget (control) that displays an Ipe document page.

This module contains the classes needed to display and edit Ipe objects using the selected toolkit.

These classes are not in Ipelib, but in a separate library libipecanvas.

On a Mac OS Retina display, the pixel coordinates used by Ipe refer to the actual device pixels.


ipe-7.1.10/build/doc/functions_type.html0000644000175000017500000000545112624020245020034 0ustar otfriedotfried Ipelib: Class Members - Typedefs
 

ipe-7.1.10/build/doc/classipe_1_1_base64_stream-members.html0000644000175000017500000001413012624020245023367 0ustar otfriedotfried Ipelib: Member List
ipe::Base64Stream Member List

This is the complete list of members for ipe::Base64Stream, including all inherited members.

Base64Stream(Stream &stream)ipe::Base64Stream
close()ipe::Base64Streamvirtual
operator<<(char ch)ipe::Streaminline
operator<<(const String &s)ipe::Streaminline
operator<<(const char *s)ipe::Streaminline
operator<<(int i)ipe::Stream
operator<<(double d)ipe::Stream
putChar(char ch)ipe::Base64Streamvirtual
putCString(const char *s)ipe::Streamvirtual
putHexByte(char b)ipe::Stream
putRaw(const char *data, int size)ipe::Streamvirtual
putString(String s)ipe::Streamvirtual
putXmlString(String s)ipe::Stream
~Stream()ipe::Streamvirtual

ipe-7.1.10/build/doc/classipe_1_1_line-members.html0000644000175000017500000001160312624020245021661 0ustar otfriedotfried Ipelib: Member List
ipe::Line Member List

This is the complete list of members for ipe::Line, including all inherited members.

dir() const ipe::Lineinline
distance(const Vector &v) const ipe::Line
intersects(const Line &line, Vector &pt)ipe::Line
iPipe::Line
Line()ipe::Lineinlineexplicit
Line(const Vector &p, const Vector &dir)ipe::Lineexplicit
normal() const ipe::Lineinline
project(const Vector &v) const ipe::Line
side(const Vector &p) const ipe::Line
through(const Vector &p, const Vector &q)ipe::Linestatic

ipe-7.1.10/build/doc/classipe_1_1_cascade.html0000644000175000017500000013106112624020245020666 0ustar otfriedotfried Ipelib: ipe::Cascade Class Reference

#include <ipestyle.h>

Public Member Functions

 Cascade ()
 
 Cascade (const Cascade &rhs)
 
Cascadeoperator= (const Cascade &rhs)
 
 ~Cascade ()
 
int count () const
 
StyleSheetsheet (int index)
 
void insert (int index, StyleSheet *sheet)
 
void remove (int index)
 
void saveAsXml (Stream &stream) const
 
bool has (Kind kind, Attribute sym) const
 
Attribute find (Kind, Attribute sym) const
 
const SymbolfindSymbol (Attribute sym) const
 
const GradientfindGradient (Attribute sym) const
 
const TilingfindTiling (Attribute sym) const
 
const EffectfindEffect (Attribute sym) const
 
const LayoutfindLayout () const
 
const TextPaddingfindTextPadding () const
 
const StyleSheet::TitleStylefindTitleStyle () const
 
const StyleSheet::PageNumberStylefindPageNumberStyle () const
 
String findPreamble () const
 
String findEncoding () const
 
TLineCap lineCap () const
 
TLineJoin lineJoin () const
 
TFillRule fillRule () const
 
void allNames (Kind kind, AttributeSeq &seq) const
 
int findDefinition (Kind kind, Attribute sym) const
 
void allCMaps (std::vector< String > &seq) const
 

Detailed Description

A cascade of style sheets.

The StyleSheets of a document cascade in the sense that a document can refer to several StyleSheets, which are arranged in a stack. A lookup is done from top to bottom, and returns as soon as a match is found. Ipe always appends the built-in "standard" style sheet at the bottom of the cascade.

Constructor & Destructor Documentation

Cascade::Cascade ( )

Create an empty cascade.

This does not add the standard style sheet.

Cascade::Cascade ( const Cascade rhs)

Copy constructor.

References count().

Cascade::~Cascade ( )

Destructor.

Member Function Documentation

Cascade & Cascade::operator= ( const Cascade rhs)

Assignment operator.

References count().

StyleSheet* ipe::Cascade::sheet ( int  index)
inline

Return StyleSheet at index.

Referenced by insert().

void Cascade::insert ( int  index,
StyleSheet sheet 
)

Insert a style sheet into the cascade.

Takes ownership of sheet.

References sheet().

Referenced by ipe::Document::Document(), and ipe::ImlParser::parseDocument().

void Cascade::remove ( int  index)

Remove a style sheet from the cascade.

The old sheet is deleted.

void Cascade::saveAsXml ( Stream stream) const

References count().

Referenced by ipe::Document::saveAsXml().

bool Cascade::has ( Kind  kind,
Attribute  sym 
) const

References count().

Referenced by allNames(), and findDefinition().

const Gradient * Cascade::findGradient ( Attribute  sym) const
const Tiling * Cascade::findTiling ( Attribute  sym) const

References count().

Referenced by ipe::CairoPainter::doDrawPath().

const Effect * Cascade::findEffect ( Attribute  sym) const

References count().

Referenced by ipe::PdfWriter::createPageView().

const TextPadding * Cascade::findTextPadding ( ) const

Find text padding (for text bbox computation).

References count().

Referenced by ipe::BBoxPainter::doDrawText().

const StyleSheet::TitleStyle * Cascade::findTitleStyle ( ) const

Get style of page titles (or 0 if none defined).

References count().

Referenced by ipe::Page::applyTitleStyle().

const StyleSheet::PageNumberStyle * Cascade::findPageNumberStyle ( ) const

Return style of page numbering (or 0 if none defined).

References count().

Referenced by ipe::CanvasBase::drawObjects().

String Cascade::findPreamble ( ) const

Return total LaTeX preamble (of the whole cascade).

References count().

Referenced by ipe::Latex::createLatexSource().

String Cascade::findEncoding ( ) const

Return LaTeX encoding (of the whole cascade).

References count().

Referenced by ipe::Document::runLatex().

TLineCap Cascade::lineCap ( ) const
TLineJoin Cascade::lineJoin ( ) const
TFillRule Cascade::fillRule ( ) const
int Cascade::findDefinition ( Kind  kind,
Attribute  sym 
) const

Find stylesheet defining the attribute.

This method goes through the cascade looking for a definition of the symbolic attribute sym. It returns the index of the stylesheet defining the attribute, or -1 if the attribute is not defined.

The method panics if sym is not symbolic. It also works for ESymbol, EGradient, ETiling, and EEffect.

References count(), has(), and ipe::Attribute::isSymbolic().

Referenced by ipe::Object::checkSymbol().

void Cascade::allCMaps ( std::vector< String > &  seq) const

References count().


The documentation for this class was generated from the following files:
  • ipestyle.h
  • ipestyle.cpp

ipe-7.1.10/build/doc/structipe_1_1_ipelet_data.html0000644000175000017500000001733112624020245022000 0ustar otfriedotfried Ipelib: ipe::IpeletData Struct Reference
ipe::IpeletData Struct Reference

#include <ipelet.h>

Public Attributes

PageiPage
 
const DocumentiDoc
 
int iPageNo
 
int iView
 
int iLayer
 
AllAttributes iAttributes
 
Snap iSnap
 

Detailed Description

Information provided to an ipelet when it is run.

Member Data Documentation

Page* ipe::IpeletData::iPage
const Document* ipe::IpeletData::iDoc
int ipe::IpeletData::iPageNo
int ipe::IpeletData::iView
int ipe::IpeletData::iLayer
AllAttributes ipe::IpeletData::iAttributes
Snap ipe::IpeletData::iSnap

The documentation for this struct was generated from the following file:
  • ipelet.h

ipe-7.1.10/build/doc/functions_vars.html0000644000175000017500000000673712624020245020036 0ustar otfriedotfried Ipelib: Class Members - Variables
 

- a -


ipe-7.1.10/build/doc/manual_30.html0000644000175000017500000001262112624020245016537 0ustar otfriedotfried Ipe Manual -- 7.2 Views
7.3 Bookmarks7 Presentations7.1 Presentation stylesheets7.2 Views

7.2 Views

When making a PDF presentation with Acrobat Reader, one would often like to present a page incrementally. For instance, I would first like to show a polygon, then add its triangulation, and finally color the vertices. Views make it possible to do this nicely.

An Ipe document consists of several pages, each of which can consist of an arbitrary number of views. When saving as PDF, each view generates a separate PDF page (if you only look at the result in, say, Acrobat reader, you cannot tell whether two pages are actually two views of the same Ipe page or two different Ipe pages).

An Ipe page consists of a number of objects, a number of layers, and a number of views. Each object belongs to exactly one layer. A layer can be shown by any number of views—a view is really just a list of layers to be presented. In addition, a view keeps a record of the current active layer—this makes it easy to move around your views and edit them. Finally, views can specify a graphic effect to be used by the PDF viewer when proceeding to the following PDF page.

To return to our polygon triangulation example, let's create an empty page. We draw a polygon into the default layer "alpha." Now use the New layer, new view function (in the Views menu), and draw the triangulation into the new layer "beta." Note that the function not only created a new layer, but also a second view showing both "alpha" and "beta". Try moving back and forth between the two views (using the PageUp and PageDown keys). You'll see changes in the layer list on the left: in view 1, layer "alpha" is selected and active, in view 2, both layers are selected and "beta" is active. Create a third layer and view, and mark the vertices.

Save in PDF format, and voila, you have a lovely little presentation. The result is available here.

In presentations, one often has slides with mostly text. The textbox object is convenient for this, as one doesn't need to use the mouse to create it. To create a slide where several text items appear one by one, one only needs to press F10 to create a textbox, then Shift+Ctrl+I to make a new view, F10 again for the next textbox, and so on. Finally, one moves the textboxes vertically for the most pleasing effect (Shift+Alt+Left Mouse does a constrained vertical translation, or Shift+Left Mouse in Translate mode).

Note that all views of a page receive the same bounding box, containing all objects visible on some view, plus all objects in a layer named "BBOX" (even if that layer is not visible). This can be used to force a larger bounding box without adding a white rectangle or the like.

If you need independent bounding boxes for each view (as in Ipe 6), create a layer named "VIEWBBOX". Any view in which this layer is visible will receive a bounding box computed for the objects visible in this view only.

ipe-7.1.10/build/doc/group__attr.html0000644000175000017500000013111012624020245017300 0ustar otfriedotfried Ipelib: Ipe Attributes
Ipe Attributes

Classes

struct  ipe::Tiling
 
struct  ipe::Gradient
 
struct  ipe::Layout
 
struct  ipe::TextPadding
 
class  ipe::Color
 
class  ipe::Effect
 
class  ipe::Repository
 
class  ipe::Attribute
 
class  ipe::AllAttributes
 
class  ipe::Symbol
 

Typedefs

typedef std::vector< Attribute > ipe::AttributeSeq
 

Enumerations

enum  ipe::Kind {
  ipe::EPen = 0, ipe::ESymbolSize, ipe::EArrowSize, ipe::EColor,
  ipe::EDashStyle, ipe::ETextSize, ipe::ETextStretch, ipe::ETextStyle,
  ipe::EGridSize, ipe::EAngleSize, ipe::EOpacity, ipe::ETiling,
  ipe::ESymbol, ipe::EGradient, ipe::EEffect
}
 
enum  ipe::Property {
  ipe::EPropPen = 0, ipe::EPropSymbolSize, ipe::EPropFArrow, ipe::EPropRArrow,
  ipe::EPropFArrowSize, ipe::EPropRArrowSize, ipe::EPropFArrowShape, ipe::EPropRArrowShape,
  ipe::EPropStrokeColor, ipe::EPropFillColor, ipe::EPropMarkShape, ipe::EPropPathMode,
  ipe::EPropDashStyle, ipe::EPropTextSize, ipe::EPropTextStyle, ipe::EPropOpacity,
  ipe::EPropTiling, ipe::EPropGradient, ipe::EPropHorizontalAlignment, ipe::EPropVerticalAlignment,
  ipe::EPropLineJoin, ipe::EPropLineCap, ipe::EPropFillRule, ipe::EPropPinned,
  ipe::EPropTransformations, ipe::EPropTransformableText, ipe::EPropMinipage, ipe::EPropWidth
}
 
enum  ipe::TPathMode { ipe::EStrokedOnly, ipe::EStrokedAndFilled, ipe::EFilledOnly }
 
enum  ipe::THorizontalAlignment { ipe::EAlignLeft, ipe::EAlignRight, ipe::EAlignHCenter }
 
enum  ipe::TVerticalAlignment { ipe::EAlignBottom, ipe::EAlignBaseline, ipe::EAlignTop, ipe::EAlignVCenter }
 
enum  ipe::TLineJoin { ipe::EDefaultJoin, ipe::EMiterJoin, ipe::ERoundJoin, ipe::EBevelJoin }
 
enum  ipe::TLineCap { ipe::EDefaultCap, ipe::EButtCap, ipe::ERoundCap, ipe::ESquareCap }
 
enum  ipe::TFillRule { ipe::EDefaultRule, ipe::EWindRule, ipe::EEvenOddRule }
 
enum  ipe::TPinned { ipe::ENoPin = 0x00, ipe::EHorizontalPin = 0x01, ipe::EVerticalPin = 0x02, ipe::EFixedPin = 0x03 }
 
enum  ipe::TTransformations { ipe::ETransformationsTranslations, ipe::ETransformationsRigidMotions, ipe::ETransformationsAffine }
 
enum  ipe::TSelect { ipe::ENotSelected = 0, ipe::EPrimarySelected, ipe::ESecondarySelected }
 

Variables

const char *const ipe::kind_names []
 
const char *const ipe::property_names []
 

Detailed Description

Attributes for Ipe objects.

Ipe objects have attributes such as color, line width, dash pattern, etc. Most attributes can be symbolic (the need to be looked up in a style sheet before rendering) or absolute.

The Color class represents absolute values of colors. The class Attribute encapsulates all attributes that can be either symbolic or absolute.

The Lua bindings for attributes are described here.

Typedef Documentation

A sequence of attribute values.

Enumeration Type Documentation

enum ipe::Kind

The different kinds of attributes.The same symbolic attribute (say "normal") has a different value in the StyleSheet depending on the Kind of attribute. The main use for Kind is as an argument to StyleSheet::find.

ESymbol, EGradient, ETiling, and EEffect have their own lookup methods in the StyleSheet. The values are still useful as an argument to allNames(), has(), and findDefinition().

Enumerator
EPen 
ESymbolSize 
EArrowSize 
EColor 
EDashStyle 
ETextSize 
ETextStretch 
ETextStyle 
EGridSize 
EAngleSize 
EOpacity 
ETiling 
ESymbol 
EGradient 
EEffect 

A Property identifies an attribute that an object can have.The Property identifies a unique attribute of an object, while different Property values can be of the same ipe::Kind. For instance, both EPropStrokeColor and EPropFillColor identify an Attribute of Kind EColor.

Enumerator
EPropPen 
EPropSymbolSize 
EPropFArrow 
EPropRArrow 
EPropFArrowSize 
EPropRArrowSize 
EPropFArrowShape 
EPropRArrowShape 
EPropStrokeColor 
EPropFillColor 
EPropMarkShape 
EPropPathMode 
EPropDashStyle 
EPropTextSize 
EPropTextStyle 
EPropOpacity 
EPropTiling 
EPropGradient 
EPropHorizontalAlignment 
EPropVerticalAlignment 
EPropLineJoin 
EPropLineCap 
EPropFillRule 
EPropPinned 
EPropTransformations 
EPropTransformableText 
EPropMinipage 
EPropWidth 

Path mode (stroked, filled, or both).

Enumerator
EStrokedOnly 
EStrokedAndFilled 
EFilledOnly 

Horizontal alignment.

Enumerator
EAlignLeft 
EAlignRight 
EAlignHCenter 

Vertical alignment.

Enumerator
EAlignBottom 
EAlignBaseline 
EAlignTop 
EAlignVCenter 

Line join style.

The EDefaultJoin means to use the setting from the style sheet.

Enumerator
EDefaultJoin 
EMiterJoin 
ERoundJoin 
EBevelJoin 

Line cap style.

The EDefaultCap means to use the setting from the style sheet.

Enumerator
EDefaultCap 
EButtCap 
ERoundCap 
ESquareCap 

Fill rule.

The EDefaultRule means to use the setting from the style sheet.

Enumerator
EDefaultRule 
EWindRule 
EEvenOddRule 

Pinning status of objects.

Enumerator
ENoPin 
EHorizontalPin 
EVerticalPin 
EFixedPin 

Transformations that are permitted for an object.

Enumerator
ETransformationsTranslations 
ETransformationsRigidMotions 
ETransformationsAffine 

Selection status of an object on the page.

Enumerator
ENotSelected 
EPrimarySelected 
ESecondarySelected 

Variable Documentation

const char *const ipe::kind_names
Initial value:
= {
"pen", "symbolsize", "arrowsize", "color",
"dashstyle", "textsize", "textstretch", "textstyle",
"gridsize", "anglesize", "opacity", "tiling",
"symbol", "gradient", "effect", 0 }

Referenced by ipe::StyleSheet::saveAsXml().

const char *const ipe::property_names
Initial value:
= {
"pen", "symbolsize",
"farrow", "rarrow",
"farrowsize", "rarrowsize",
"farrowshape", "rarrowshape",
"stroke", "fill", "markshape",
"pathmode", "dashstyle",
"textsize", "textstyle",
"opacity", "tiling", "gradient",
"horizontalalignment", "verticalalignment",
"linejoin", "linecap", "fillrule",
"pinned", "transformations", "transformabletext",
"minipage", "width", 0 }

ipe-7.1.10/build/doc/manual_42.html0000644000175000017500000001274312624020245016547 0ustar otfriedotfried Ipe Manual -- 9.2 The <page> element
9.3 Ipe object elements9 The Ipe file format9.1 The <ipe> element9.2 The <page> element

9.2 The <page> element

Attributes

title
(optional) title of this page (displayed at a fixed location in a format specified by the style sheet),
section
(optional) Title of document section starting with this page. If the attribute is not present, this page continues the section of the previous page. If the attribute is present, but its value is an empty string, then the contents of the title attribute is used instead.
subsection
(optional) Title of document subsection starting with this page. If the attribute is not present, this page continues the subsection of the previous page. If the attribute is present, but its value is an empty string, then the contents of the title attribute is used instead.
marked
(optional) The page is marked for printing unless the value of this attribute is no.

Contents

  1. An optional <notes> element,
  2. a possibly empty sequence of <layer> elements,
  3. a possibly empty sequence of <view> elements,
  4. a possibly empty sequence of Ipe object elements.

If a page contains no layer element, Ipe automatically adds a default layer named "alpha", visible and editable.

If a page contains no view element, a single view where all layers are visible is assumed.

9.2.1 The <notes> element

This element has no attributes. Its contents is plain text, containing notes for this page.

9.2.2 The <layer> element

Attributes

name
(required) Name of the layer. It must not contain white space.
edit
(optional) The value should be yes or no and indicates whether the user can select and modify the contents of the layer in the Ipe user interface (of course the user can always modify the setting of the attribute).

The layer element must be empty.

9.2.3 The <view> element

Attributes

layers
(required) The value must be a sequence of layer names defined in this page, separated by white space.
active
(required) The layer that is the active layer in this view.
effect
(optional) The symbolic name of a graphics effect to be used during the PDF page transition. The effect must be defined in the style sheet.
marked
(optional) The view is marked for printing if the value of this attribute is yes.

The view element must be empty.

ipe-7.1.10/build/doc/ftv2plastnode.png0000644000175000017500000000034512624020245017373 0ustar otfriedotfried‰PNG  IHDRɪ|¬IDATxí=QF‘Ø¥D«ÔkÄ:‰F©PK؃=V@§Õ³ Õ8SHxñÌ0bnrróŠ{ò½¿¾’$ ÀÏTŠP  ö¼X¬OÛd6êìòð"°²S´±O¥B€(¡àQé)š+YĈ ÒªËRÉÐ>VtÉsˆm9(ê„䜥k‚-@ȧ-Ü$ó b Ò[he ¿Kp-ôl|CùÿApRG'rÍ­aIEND®B`‚ipe-7.1.10/build/doc/blank.png0000644000175000017500000000167712624020245015700 0ustar otfriedotfried‰PNG  IHDR D¤ŠÆsRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<PLTE 3f™Ìÿ333f3™3Ì3ÿ3f3fff™fÌfÿf™3™f™™™Ì™ÿ™Ì3ÌfÌ™ÌÌÌÿÌÿ3ÿfÿ™ÿÌÿÿÿ333f3™3Ì3ÿ333333f33™33Ì33ÿ33f33f3ff3™f3Ìf3ÿf3™33™3f™3™™3Ì™3ÿ™3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿ3f3fff™fÌfÿf3f33ff3f™3fÌ3fÿ3fff3fffff™ffÌffÿff™f3™ff™f™™fÌ™fÿ™fÌf3ÌffÌf™ÌfÌÌfÿÌfÿf3ÿffÿf™ÿfÌÿfÿÿf™3™f™™™Ì™ÿ™3™33™f3™™3™Ì3™ÿ3™f™3f™ff™™f™Ìf™ÿf™™™3™™f™™™™™Ì™™ÿ™™Ì™3Ì™fÌ™™Ì™ÌÌ™ÿÌ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿ™Ì3ÌfÌ™ÌÌÌÿÌ3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÌfÌ3fÌffÌ™fÌÌfÌÿfÌ™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÌÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿ3ÿfÿ3fÿffÿ™fÿÌfÿÿfÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿ™ÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÌÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿÿÿâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿCA× pHYsÄÄ•+IDAT8Oc¸I0Œ*‡Àh8@Âh8Œ¨p­d.ºxˆ1IEND®B`‚ipe-7.1.10/build/doc/classipe_1_1_curve_segment.html0000644000175000017500000010576512624020245022165 0ustar otfriedotfried Ipelib: ipe::CurveSegment Class Reference

#include <ipeshape.h>

Public Types

enum  Type { EArc, ESegment, ESpline, EOldSpline }
 

Public Member Functions

Type type () const
 
int countCP () const
 
Vector cp (int i) const
 
Vector last () const
 
Matrix matrix () const
 
Arc arc () const
 
void beziers (std::vector< Bezier > &bez) const
 
void draw (Painter &painter) const
 
void addToBBox (Rect &box, const Matrix &m, bool cp) const
 
double distance (const Vector &v, const Matrix &m, double bound) const
 
void snapVtx (const Vector &mouse, const Matrix &m, Vector &pos, double &bound, bool cp) const
 
void snapBnd (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 

Friends

class Curve
 

Detailed Description

A segment on an SubPath.

A segment is either an elliptic arc, a straight segment, or a B-spline curve, depending on its type(). This is a lightweight object, created on the fly by Curve::segment(). There is no public constructor, so the only way to create such an object is through that method.

The type() is one of the following:

  • ESegment: the segment has two control points, and represents a line segment.
  • ESpline: a B-spline curve with n control points. The first and last control point's knot value is repeated three times, so the curve begins and ends in these points. A spline with 4 control points is a single Bezier curve with those control points. A spline with 3 control points is defined to be a quadratic Bezier curve with those control points.
  • EOldSpline: an incorrectly defined B-spline, used by Ipe for many years. Supported for compatibility.
  • EArc: an elliptic arc, with begin and end point. The supporting ellipse is defined by the matrix(), it is the image under the affine transformation matrix() of the unit circle. matrix() is such that its inverse transforms both start and end position to points (nearly) on the unit circle. The arc is the image of the positively (counter-clockwise) directed arc from the pre-image of the start position to the pre-image of the end position. Whether this is a positively or negatively oriented arc in user space depends on the matrix.

Member Enumeration Documentation

Enumerator
EArc 
ESegment 
ESpline 
EOldSpline 

Member Function Documentation

Type ipe::CurveSegment::type ( ) const
inline

Type of segment.

Referenced by addToBBox(), arc(), distance(), draw(), ipe::Shape::isSegment(), snapBnd(), and snapVtx().

int ipe::CurveSegment::countCP ( ) const
inline

Number of control points.

Referenced by addToBBox(), beziers(), and snapVtx().

Vector ipe::CurveSegment::cp ( int  i) const
inline

Return control point.

Referenced by addToBBox(), arc(), distance(), draw(), snapBnd(), and snapVtx().

Vector ipe::CurveSegment::last ( ) const
inline

Return last control point.

Matrix ipe::CurveSegment::matrix ( ) const
inline

Matrix (if Type() == EArc).

Referenced by addToBBox(), ipe::Path::draw(), and snapVtx().

Arc CurveSegment::arc ( ) const

Return segment as Arc.

Panics if segment is not an arc.

References cp(), EArc, and type().

Referenced by addToBBox(), distance(), draw(), and snapBnd().

void CurveSegment::beziers ( std::vector< Bezier > &  bez) const

Convert B-spline to a sequence of Bezier splines.

References countCP(), EOldSpline, ipe::Bezier::oldSpline(), and ipe::Bezier::spline().

Referenced by addToBBox(), distance(), draw(), and snapBnd().

void CurveSegment::draw ( Painter painter) const

Draw the segment.

Current position of the painter is already on first control point.

References arc(), beziers(), cp(), ipe::Painter::curveTo(), ipe::Painter::drawArc(), EArc, EOldSpline, ESegment, ESpline, ipe::Painter::lineTo(), and type().

Referenced by ipe::Curve::draw().

void CurveSegment::addToBBox ( Rect box,
const Matrix m,
bool  cpf 
) const

Add segment to bounding box.

Does not assume that first control point has already been added.

If cpf is true, then control points of splines, Bezier curves, and the center of arcs are included in the bbox (so that snapping can find them). Otherwise, a tight bounding box for the geometric object itself is computed.

References ipe::Rect::addPoint(), ipe::Rect::addRect(), arc(), beziers(), countCP(), cp(), EArc, EOldSpline, ESegment, ESpline, matrix(), and type().

Referenced by ipe::Curve::addToBBox().

double CurveSegment::distance ( const Vector v,
const Matrix m,
double  bound 
) const

Return distance to the segment.

References arc(), beziers(), cp(), ipe::Segment::distance(), EArc, EOldSpline, ESegment, ESpline, and type().

Referenced by ipe::Curve::distance().

void CurveSegment::snapVtx ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound,
bool  ctl 
) const

Snap to vertex of the segment.

The method assumes that the first control point has already been tested.

References countCP(), cp(), EArc, EOldSpline, ESegment, ESpline, matrix(), and type().

Referenced by ipe::Curve::snapVtx().

void CurveSegment::snapBnd ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const

Friends And Related Function Documentation

friend class Curve
friend

The documentation for this class was generated from the following files:
  • ipeshape.h
  • ipeshape.cpp

ipe-7.1.10/build/doc/classipe_1_1_stream-members.html0000644000175000017500000001340112624020245022223 0ustar otfriedotfried Ipelib: Member List
ipe::Stream Member List

This is the complete list of members for ipe::Stream, including all inherited members.

close()ipe::Streamvirtual
operator<<(char ch)ipe::Streaminline
operator<<(const String &s)ipe::Streaminline
operator<<(const char *s)ipe::Streaminline
operator<<(int i)ipe::Stream
operator<<(double d)ipe::Stream
putChar(char ch)=0ipe::Streampure virtual
putCString(const char *s)ipe::Streamvirtual
putHexByte(char b)ipe::Stream
putRaw(const char *data, int size)ipe::Streamvirtual
putString(String s)ipe::Streamvirtual
putXmlString(String s)ipe::Stream
~Stream()ipe::Streamvirtual

ipe-7.1.10/build/doc/functions_func_m.html0000644000175000017500000002006012624020245020313 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- m -


ipe-7.1.10/build/doc/manual_35.html0000644000175000017500000000720212624020245016543 0ustar otfriedotfried Ipe Manual -- 8.1 Sharing Latex definitions with your Latex document
8.2 Writing ipelets8 Advanced topics8.1 Sharing Latex definitions with your Latex document

8.1 Sharing Latex definitions with your Latex document

When using Ipe figures in a Latex document, it is convenient to have access to some of the definitions from the document.

Ipe comes with a Lua script update-master that makes this easy.

In your Latex document, say master.tex, surround the interesting definitions using %%BeginIpePreamble and %%EndIpePreamble, for instance like this:

  %%BeginIpePreamble
  \usepackage{amsfonts}
  \newcommand{\R}{\mathbb{R}}
  %%EndIpePreamble

Running the script as

  ipescript update-master master.tex
extracts these definitions and saves them as a stylesheet master-preamble.isy. (This filename is fixed, and does not depend on the document name.)

Running this script as

  ipescript update-master master.tex figures/*.ipe
creates the stylesheet master-preamble.isy as above. In addition, it looks at all the Ipe figures mentioned on the command line. The script adds the new stylesheet to each figure, or updates the stylesheet to the newest version (if the figure already contains a stylesheet named "master-preamble").
ipe-7.1.10/build/doc/classipe_1_1_bezier-members.html0000644000175000017500000001667612624020245022231 0ustar otfriedotfried Ipelib: Member List
ipe::Bezier Member List

This is the complete list of members for ipe::Bezier, including all inherited members.

approximate(double precision, std::vector< Vector > &result) const ipe::Bezier
bbox() const ipe::Bezier
Bezier()ipe::Bezierinline
Bezier(const Vector &p0, const Vector &p1, const Vector &p2, const Vector &p3)ipe::Bezierinline
closedSpline(int n, const Vector *v, std::vector< Bezier > &result)ipe::Bezierstatic
distance(const Vector &v, double bound)ipe::Bezier
intersect(const Line &l, std::vector< Vector > &result) const ipe::Bezier
intersect(const Segment &l, std::vector< Vector > &result) const ipe::Bezier
intersect(const Bezier &b, std::vector< Vector > &result) const ipe::Bezier
iVipe::Bezier
oldSpline(int n, const Vector *v, std::vector< Bezier > &result)ipe::Bezierstatic
point(double t) const ipe::Bezier
quadBezier(const Vector &p0, const Vector &p1, const Vector &p2)ipe::Bezierstatic
snap(const Vector &v, double &t, Vector &pos, double &bound) const ipe::Bezier
spline(int n, const Vector *v, std::vector< Bezier > &result)ipe::Bezierstatic
straight(double precision) const ipe::Bezier
subdivide(Bezier &l, Bezier &r) const ipe::Bezier
tangent(double t) const ipe::Bezier

ipe-7.1.10/build/doc/intersection.svg0000644000175000017500000005355412624020245017333 0ustar otfriedotfried ipe-7.1.10/build/doc/ftv2cl.png0000644000175000017500000000070512624020245016000 0ustar otfriedotfried‰PNG  IHDRÚ}\ˆŒIDATxíÝ;H#AÇño4Љႇ œ„K‰‡‚á ’ê,m„ØØ vÚžJ°²¹ÚÎþî‚§ XY ÅB|dr³cvo—˜Ä°Ý ù0Ã’™3ÿͤõ”Ëe×´¸Éõ¯1XÞ8Œ‰nQˆ88ööÖ§3*rbñ¯¢û-$¨‚þ´˜“P1Žè@Z…-# Ïú01ÑÏÎêÄ1HkKŸ w¶O@¥ªÈóñ!f§ñu˜åác÷;’sá×Bý[E´Añ±—Í\ß>°ùý¿ÏËÊÂ]–P€zØf| Íñ¯“+Ù´gð5…b  i5ümM³œ_æÍq,ÒcŽõèoÓd´ !¶äò©ô•,ôðÀ{¹¨µYß,€zTÍ8H]𤕘ï7¼»/òó8ËQæ !F€~6ãá?Y ÀA@ŨÁ.@ƒ¶TäÄYïŠËë±r‘µ8Ð*·é>€Šçÿ?€×þŸe[6«xÂIEND®B`‚ipe-7.1.10/build/doc/class_ipe_auto_ptr.html0000644000175000017500000002175012624020245020642 0ustar otfriedotfried Ipelib: IpeAutoPtr< T > Class Template Reference
IpeAutoPtr< T > Class Template Reference

#include <ipebase.h>

Public Member Functions

 IpeAutoPtr (T *ptr)
 
 ~IpeAutoPtr ()
 
T * operator-> ()
 
T & operator* ()
 
T * ptr ()
 
T * take ()
 

Constructor & Destructor Documentation

template<class T>
IpeAutoPtr< T >::IpeAutoPtr ( T *  ptr)
inline
template<class T>
IpeAutoPtr< T >::~IpeAutoPtr ( )
inline

Member Function Documentation

template<class T>
T* IpeAutoPtr< T >::operator-> ( )
inline
template<class T>
T& IpeAutoPtr< T >::operator* ( )
inline
template<class T>
T* IpeAutoPtr< T >::ptr ( )
inline
template<class T>
T* IpeAutoPtr< T >::take ( )
inline

The documentation for this class was generated from the following file:
  • ipebase.h

ipe-7.1.10/build/doc/ipelets.html0000644000175000017500000000600512624020245016424 0ustar otfriedotfried Ipelib: Ipelets
Ipelets

Ipe is an extensible drawing editor, and you can write extensions to Ipe that will appear on the Ipe menu and can be called from inside Ipe like other Ipe functions.

Ipe extensions are called Ipelets. They are most easily written in the language Lua (www.lua.org), in which also most of Ipe's user interface is written. Lua is a high-level interpreted language, in which interesting classes like vectors, matrices, and Ipe objects are made available. See Programming in Lua for more information about programming with Ipelib in Lua.

Ipelets written in Lua explains how to write ipelets in Lua.

Often, however, you will already have code that provides some geometric computation in another programming language such as C++. In such a situation you can create Lua bindings for your code and use it from your Lua ipelet. Creating Lua bindings is not documented here, as Ipe also provides an easier solution that will suffice in many cases. You can implement your ipelet entirely in C++, and only need some boilerplate code in Lua that defines the labels and functions inside the ipelet. Ipe will take care of loading and calling your C++ code.

Ipelets written in C++ explains how to write ipelets in C++.


ipe-7.1.10/build/doc/classipe_1_1_ps_painter.html0000644000175000017500000014322312624020245021452 0ustar otfriedotfried Ipelib: ipe::PsPainter Class Reference

#include <ipepswriter.h>

Inherits ipe::PdfPainter.

Public Member Functions

 PsPainter (const Cascade *style, Stream &stream)
 
 ~PsPainter ()
 
- Public Member Functions inherited from ipe::PdfPainter
 PdfPainter (const Cascade *style, Stream &stream)
 
virtual ~PdfPainter ()
 
- Public Member Functions inherited from ipe::Painter
 Painter (const Cascade *style)
 
virtual ~Painter ()
 
void transform (const Matrix &m)
 
void untransform (TTransformations trans)
 
void translate (const Vector &v)
 
void push ()
 
void pop ()
 
void pushMatrix ()
 
void popMatrix ()
 
void newPath ()
 
void moveTo (const Vector &v)
 
void lineTo (const Vector &v)
 
void curveTo (const Vector &v1, const Vector &v2, const Vector &v3)
 
void curveTo (const Bezier &bezier)
 
void rect (const Rect &re)
 
void drawEllipse ()
 
void drawArc (const Arc &arc)
 
void closePath ()
 
void drawPath (TPathMode mode)
 
void drawBitmap (Bitmap bitmap)
 
void drawText (const Text *text)
 
void drawSymbol (Attribute symbol)
 
void addClipPath ()
 
void setStroke (Attribute color)
 
void setFill (Attribute color)
 
void setPen (Attribute pen)
 
void setDashStyle (Attribute dash)
 
void setLineCap (TLineCap cap)
 
void setLineJoin (TLineJoin join)
 
void setFillRule (TFillRule rule)
 
void setSymStroke (Attribute color)
 
void setSymFill (Attribute color)
 
void setSymPen (Attribute wid)
 
void setOpacity (Attribute opaq)
 
void setTiling (Attribute til)
 
void setGradient (Attribute grad)
 
const Cascadecascade () const
 
Color stroke () const
 
Color fill () const
 
const Matrixmatrix () const
 
Fixed pen () const
 
String dashStyle () const
 
void dashStyle (std::vector< double > &dashes, double &offset) const
 
TLineCap lineCap () const
 
TLineJoin lineJoin () const
 
TFillRule fillRule () const
 
Color symStroke () const
 
Color symFill () const
 
Fixed symPen () const
 
Fixed opacity () const
 
Attribute tiling () const
 
Attribute gradient () const
 

Protected Member Functions

virtual void doNewPath ()
 
virtual void doDrawPath (TPathMode mode)
 
virtual void doDrawBitmap (Bitmap bitmap)
 
virtual void doAddClipPath ()
 
- Protected Member Functions inherited from ipe::PdfPainter
virtual void doPush ()
 
virtual void doPop ()
 
virtual void doMoveTo (const Vector &v)
 
virtual void doLineTo (const Vector &v)
 
virtual void doCurveTo (const Vector &v1, const Vector &v2, const Vector &v3)
 
virtual void doClosePath ()
 
virtual void doDrawText (const Text *text)
 
virtual void doDrawSymbol (Attribute symbol)
 
void drawAttributes ()
 
void drawOpacity ()
 
- Protected Member Functions inherited from ipe::Painter
virtual void doDrawArc (const Arc &arc)
 
void drawArcAsBezier (double alpha)
 

Additional Inherited Members

- Static Public Member Functions inherited from ipe::PdfPainter
static void drawColor (Stream &stream, Color color, const char *gray, const char *rgb)
 
- Protected Attributes inherited from ipe::PdfPainter
StreamiStream
 
std::list< StateiActiveState
 
- Protected Attributes inherited from ipe::Painter
std::list< StateiState
 
std::list< MatrixiMatrix
 
const CascadeiCascade
 
int iInPath
 

Constructor & Destructor Documentation

ipe::PsPainter::PsPainter ( const Cascade style,
Stream stream 
)
ipe::PsPainter::~PsPainter ( )

Member Function Documentation

virtual void ipe::PsPainter::doNewPath ( )
protectedvirtual

Perform new path operator.

Reimplemented from ipe::PdfPainter.

virtual void ipe::PsPainter::doDrawPath ( TPathMode  mode)
protectedvirtual

Actually draw the path.

Reimplemented from ipe::PdfPainter.

virtual void ipe::PsPainter::doDrawBitmap ( Bitmap  bitmap)
protectedvirtual

Draw a bitmap.

Reimplemented from ipe::PdfPainter.

virtual void ipe::PsPainter::doAddClipPath ( )
protectedvirtual

Add a clip path.

Reimplemented from ipe::PdfPainter.


The documentation for this class was generated from the following file:
  • ipepswriter.h

ipe-7.1.10/build/doc/classipe_1_1_object-members.html0000644000175000017500000003444112624020245022205 0ustar otfriedotfried Ipelib: Member List
ipe::Object Member List

This is the complete list of members for ipe::Object, including all inherited members.

accept(Visitor &visitor) const =0ipe::Objectpure virtual
addToBBox(Rect &box, const Matrix &m, bool cp) const =0ipe::Objectpure virtual
asGroup()ipe::Objectvirtual
asImage()ipe::Objectvirtual
asPath()ipe::Objectvirtual
asReference()ipe::Objectvirtual
asText()ipe::Objectvirtual
checkStyle(const Cascade *sheet, AttributeSeq &seq) const ipe::Objectvirtual
checkSymbol(Kind kind, Attribute attr, const Cascade *sheet, AttributeSeq &seq)ipe::Objectprotectedstatic
clone() const =0ipe::Objectpure virtual
distance(const Vector &v, const Matrix &m, double bound) const =0ipe::Objectpure virtual
draw(Painter &painter) const =0ipe::Objectpure virtual
drawSimple(Painter &painter) const =0ipe::Objectpure virtual
EGroup enum valueipe::Object
EImage enum valueipe::Object
EPath enum valueipe::Object
EReference enum valueipe::Object
EText enum valueipe::Object
getAttribute(Property prop)ipe::Objectvirtual
iMatrixipe::Objectprotected
iPinnedipe::Objectprotected
iTransformationsipe::Objectprotected
matrix() const ipe::Objectinline
Object()ipe::Objectexplicitprotected
Object(const AllAttributes &attr)ipe::Objectexplicitprotected
Object(const Object &rhs)ipe::Objectprotected
Object(const XmlAttributes &attr)ipe::Objectexplicitprotected
pinned() const ipe::Objectvirtual
saveAsXml(Stream &stream, String layer) const =0ipe::Objectpure virtual
saveAttributesAsXml(Stream &stream, String layer) const ipe::Objectprotected
setAttribute(Property prop, Attribute value)ipe::Objectvirtual
setMatrix(const Matrix &matrix)ipe::Object
setPinned(TPinned pin)ipe::Object
setTransformations(TTransformations trans)ipe::Object
snapBnd(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Objectvirtual
snapCtl(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Objectvirtual
snapVtx(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Objectvirtual
transformations() const ipe::Objectinline
Type enum nameipe::Object
type() const =0ipe::Objectpure virtual
~Object()=0ipe::Objectpure virtual

ipe-7.1.10/build/doc/manual_28.html0000644000175000017500000000630612624020245016551 0ustar otfriedotfried Ipe Manual -- 7 Presentations
8 Advanced topicsTop6 Stylesheets7 Presentations

7 Presentations

An Ipe presentation is an Ipe PDF document that is presented using, for instance, Acrobat Reader and a video projector. Ipe has a number of features that make it easier to make such presentations.

You may want to have a look at IpePresenter, written by Dmitriy Morozov. IpePresenter shows the current slide in one window (which you can make full screen on the external display), while showing the current slide, the next slide, notes for the current page, as well as a timer on your own display.

The Ipe binary package for Windows already includes IpePresenter.

ipe-7.1.10/build/doc/classipe_1_1_pdf_writer.html0000644000175000017500000004463512624020245021462 0ustar otfriedotfried Ipelib: ipe::PdfWriter Class Reference
ipe::PdfWriter Class Reference

#include <ipepdfwriter.h>

Public Member Functions

 PdfWriter (TellStream &stream, const Document *doc, const FontPool *pool, bool markedView, int fromPage, int toPage, int compression)
 
 ~PdfWriter ()
 
void createPages ()
 
void createPageView (int page, int view)
 
void createBookmarks ()
 
void createXmlStream (String xmldata, bool preCompressed)
 
void createTrailer ()
 

Detailed Description

Create PDF file.

This class is responsible for the creation of a PDF file from the Ipe data. You have to create a PdfWriter first, providing a file that has been opened for (binary) writing and is empty. Then call createPages() to embed the pages. Optionally, call createXmlStream to embed a stream with the XML representation of the document. Finally, call createTrailer to complete the PDF document, and close the file.

Some reserved PDF object numbers:

  • 0: Must be left empty (a PDF restriction).
  • 1: XML stream.
  • 2: Parent of all pages objects.

Constructor & Destructor Documentation

PdfWriter::PdfWriter ( TellStream stream,
const Document doc,
const FontPool *  pool,
bool  markedView,
int  fromPage,
int  toPage,
int  compression 
)

Create a PDF writer operating on this (open and empty) file.

PdfWriter::~PdfWriter ( )

Destructor.

Member Function Documentation

void PdfWriter::createPages ( )
void PdfWriter::createBookmarks ( )
void PdfWriter::createXmlStream ( String  xmldata,
bool  preCompressed 
)

Create a stream containing the XML data.

References ipe::String::data(), and ipe::String::size().

Referenced by ipe::Document::save().


The documentation for this class was generated from the following files:
  • ipepdfwriter.h
  • ipepdfwriter.cpp

ipe-7.1.10/build/doc/classipe_1_1_buffer.html0000644000175000017500000004213612624020245020560 0ustar otfriedotfried Ipelib: ipe::Buffer Class Reference

#include <ipebase.h>

Public Member Functions

 Buffer ()
 
 ~Buffer ()
 
 Buffer (const Buffer &rhs)
 
Bufferoperator= (const Buffer &rhs)
 
 Buffer (int size)
 
 Buffer (const char *data, int size)
 
char & operator[] (int index)
 
const char & operator[] (int index) const
 
int size () const
 
char * data ()
 
const char * data () const
 

Detailed Description

A memory buffer.

Implements sharing semantics using reference counting.

Constructor & Destructor Documentation

Buffer::Buffer ( )

Create empty buffer.

Buffer::~Buffer ( )

Destructor.

Buffer::Buffer ( const Buffer rhs)

Copy constructor. Constant time, buffer is shared.

Buffer::Buffer ( int  size)
explicit

Create buffer of specified size.

References size().

Buffer::Buffer ( const char *  data,
int  size 
)
explicit

Create buffer by copying the data.

References size().

Member Function Documentation

Buffer & Buffer::operator= ( const Buffer rhs)

Assignment operator (constant-time).

char& ipe::Buffer::operator[] ( int  index)
inline

Character access.

const char& ipe::Buffer::operator[] ( int  index) const
inline

Character access (const version).

const char* ipe::Buffer::data ( ) const
inline

Return pointer to buffer data (const version).


The documentation for this class was generated from the following files:
  • ipebase.h
  • ipebase.cpp

ipe-7.1.10/build/doc/classipe_1_1_thumbnail-members.html0000644000175000017500000001254412624020245022722 0ustar otfriedotfried Ipelib: Member List
ipe::Thumbnail Member List

This is the complete list of members for ipe::Thumbnail, including all inherited members.

EPDF enum valueipe::Thumbnail
EPNG enum valueipe::Thumbnail
EPS enum valueipe::Thumbnail
ESVG enum valueipe::Thumbnail
height() const ipe::Thumbnailinline
render(const Page *page, int view)ipe::Thumbnail
savePNG(cairo_surface_t *surface, const char *dst)ipe::Thumbnailstatic
saveRender(TargetFormat fm, const char *dst, const Page *page, int view, double zoom, bool transparent, bool nocrop)ipe::Thumbnail
TargetFormat enum nameipe::Thumbnail
Thumbnail(const Document *doc, int width)ipe::Thumbnail
~Thumbnail()ipe::Thumbnail

ipe-7.1.10/build/doc/classipe_1_1_painter.html0000644000175000017500000042342312624020245020753 0ustar otfriedotfried Ipelib: ipe::Painter Class Reference

#include <ipepainter.h>

Inherited by ipe::BBoxPainter, ipe::CairoPainter, ipe::PdfPainter, and IpeQtPainter.

Classes

struct  State
 

Public Member Functions

 Painter (const Cascade *style)
 
virtual ~Painter ()
 
void transform (const Matrix &m)
 
void untransform (TTransformations trans)
 
void translate (const Vector &v)
 
void push ()
 
void pop ()
 
void pushMatrix ()
 
void popMatrix ()
 
void newPath ()
 
void moveTo (const Vector &v)
 
void lineTo (const Vector &v)
 
void curveTo (const Vector &v1, const Vector &v2, const Vector &v3)
 
void curveTo (const Bezier &bezier)
 
void rect (const Rect &re)
 
void drawEllipse ()
 
void drawArc (const Arc &arc)
 
void closePath ()
 
void drawPath (TPathMode mode)
 
void drawBitmap (Bitmap bitmap)
 
void drawText (const Text *text)
 
void drawSymbol (Attribute symbol)
 
void addClipPath ()
 
void setStroke (Attribute color)
 
void setFill (Attribute color)
 
void setPen (Attribute pen)
 
void setDashStyle (Attribute dash)
 
void setLineCap (TLineCap cap)
 
void setLineJoin (TLineJoin join)
 
void setFillRule (TFillRule rule)
 
void setSymStroke (Attribute color)
 
void setSymFill (Attribute color)
 
void setSymPen (Attribute wid)
 
void setOpacity (Attribute opaq)
 
void setTiling (Attribute til)
 
void setGradient (Attribute grad)
 
const Cascadecascade () const
 
Color stroke () const
 
Color fill () const
 
const Matrixmatrix () const
 
Fixed pen () const
 
String dashStyle () const
 
void dashStyle (std::vector< double > &dashes, double &offset) const
 
TLineCap lineCap () const
 
TLineJoin lineJoin () const
 
TFillRule fillRule () const
 
Color symStroke () const
 
Color symFill () const
 
Fixed symPen () const
 
Fixed opacity () const
 
Attribute tiling () const
 
Attribute gradient () const
 

Protected Member Functions

virtual void doPush ()
 
virtual void doPop ()
 
virtual void doNewPath ()
 
virtual void doMoveTo (const Vector &v)
 
virtual void doLineTo (const Vector &v)
 
virtual void doCurveTo (const Vector &v1, const Vector &v2, const Vector &v3)
 
virtual void doDrawArc (const Arc &arc)
 
virtual void doClosePath ()
 
virtual void doDrawPath (TPathMode mode)
 
virtual void doDrawBitmap (Bitmap bitmap)
 
virtual void doDrawText (const Text *text)
 
virtual void doDrawSymbol (Attribute symbol)
 
virtual void doAddClipPath ()
 
void drawArcAsBezier (double alpha)
 

Protected Attributes

std::list< StateiState
 
std::list< MatrixiMatrix
 
const CascadeiCascade
 
int iInPath
 

Detailed Description

Interface for drawing.

Painter-derived classes are used for drawing to the screen and for generating PDF and Postscript output.

The Painter maintains a stack of graphics states, which includes stroke and fill color, line width, dash style, miter limit, line cap and line join. It also maintains a separate stack of transformation matrices. The Painter class takes care of maintaining the stacks, and setting of the attributes in the current graphics state.

Setting an attribute with a symbolic value is resolved immediately using the stylesheet Cascade attached to the Painter, so calling the stroke() or fill() methods of Painter will return the current absolute color.

It's okay to set symbolic attributes that the stylesheet does not define - they are set to a default absolute value (black, solid, etc.).

The painter is either in "general" or in "path construction" mode. The newPath() member starts path construction mode. In this mode, only the path construction operators (moveTo, lineTo, curveTo, rect, drawArc, closePath), the transformation operators (transform, untransform, translate), and the matrix stack operators (pushMatrix, popMatrix) are admissible. The path is drawn using drawPath, this ends path construction mode. Path construction operators cannot be used in general mode.

The graphics state for a path must be set before starting path construction mode, that is, before calling newPath().

Derived classes need to implement the doXXX functions for drawing paths, images, and texts. The transformation matrix has already been applied to the coordinates passed to the doXXX functions.

Constructor & Destructor Documentation

Painter::~Painter ( )
virtual

Virtual destructor.

Member Function Documentation

void Painter::untransform ( TTransformations  trans)

Reset transformation to original one, but with different origin/direction.

This changes the current transformation matrix to the one set before the first push operation, but maintaining the current origin. Only the operations allowed in allowed are applied.

References ipe::Matrix::a, ipe::ETransformationsAffine, ipe::ETransformationsRigidMotions, iMatrix, matrix(), and ipe::Matrix::translation().

Referenced by ipe::Image::draw(), ipe::Text::draw(), ipe::Reference::draw(), ipe::Group::draw(), ipe::Path::draw(), ipe::Path::drawArrow(), ipe::Image::drawSimple(), ipe::Text::drawSimple(), ipe::Reference::drawSimple(), ipe::Group::drawSimple(), and ipe::Path::drawSimple().

void Painter::translate ( const Vector v)
void Painter::push ( )

Save current graphics state.

Cannot be called in path construction mode.

References doPush(), iInPath, and iState.

Referenced by ipe::Image::draw(), ipe::Text::draw(), ipe::Reference::draw(), ipe::Group::draw(), ipe::Path::draw(), ipe::Path::drawArrow(), and ipe::Group::drawSimple().

void Painter::pop ( )

Restore previous graphics state.

Cannot be called in path construction mode.

References doPop(), iInPath, and iState.

Referenced by ipe::Image::draw(), ipe::Text::draw(), ipe::Reference::draw(), ipe::Group::draw(), ipe::Path::draw(), ipe::Path::drawArrow(), and ipe::Group::drawSimple().

void Painter::moveTo ( const Vector v)
void Painter::lineTo ( const Vector v)

Add line segment to current subpath.

References doLineTo(), iInPath, and matrix().

Referenced by ipe::CurveSegment::draw(), ipe::Path::drawArrow(), ipe::Text::drawSimple(), ipe::Reference::drawSimple(), and rect().

void Painter::curveTo ( const Vector v1,
const Vector v2,
const Vector v3 
)

Add a Bezier segment to current subpath.

References doCurveTo(), iInPath, and matrix().

Referenced by curveTo(), ipe::CurveSegment::draw(), ipe::ClosedSpline::draw(), and drawArcAsBezier().

void ipe::Painter::curveTo ( const Bezier bezier)
inline

Overloaded function.

Assumes current position is bezier.iV[0]

References curveTo(), and ipe::Bezier::iV.

void Painter::rect ( const Rect re)
void ipe::Painter::drawEllipse ( )
void Painter::drawArc ( const Arc arc)

Add an elliptic arc to current path.

Assumes the current point is arc.beginp().

References doDrawArc(), and iInPath.

Referenced by ipe::SelectTool::draw(), ipe::CurveSegment::draw(), ipe::Ellipse::draw(), and ipe::Path::drawArrow().

void Painter::closePath ( )
void Painter::drawPath ( TPathMode  mode)

Fill and/or stroke a path.

As in PDF, a "path" can consist of several subpaths. Whether it is filled or stroked depends on mode.

References doDrawPath(), and iInPath.

Referenced by ipe::PanTool::draw(), ipe::SelectTool::draw(), ipe::Path::draw(), ipe::Path::drawArrow(), ipe::Image::drawSimple(), ipe::Text::drawSimple(), ipe::Reference::drawSimple(), and ipe::Path::drawSimple().

void Painter::drawBitmap ( Bitmap  bitmap)

Render a bitmap.

Assumes the transformation matrix has been set up to map the unit square to the image area on the paper.

References doDrawBitmap(), and iInPath.

Referenced by ipe::Image::draw().

void Painter::drawText ( const Text text)

Render a text object.

Stroke color is already set, and the origin is the lower-left corner of the text box (not the reference point!).

References doDrawText(), and iInPath.

Referenced by ipe::Text::draw().

void Painter::drawSymbol ( Attribute  symbol)

Render a symbol.

The current coordinate system is already the symbol coordinate system. If the symbol is parameterized, then sym-stroke, sym-fill, and sym-pen are already set.

References doDrawSymbol(), and iInPath.

Referenced by ipe::Reference::draw().

void Painter::addClipPath ( )

Add current path as clip path.

References doAddClipPath(), and iInPath.

Referenced by ipe::Group::draw(), and ipe::Group::drawSimple().

void Painter::setFill ( Attribute  color)
void Painter::setPen ( Attribute  pen)
void Painter::setDashStyle ( Attribute  dash)

Set dash style, resolving symbolic value.

References ipe::EDashStyle, ipe::Cascade::find(), iCascade, iInPath, iState, and ipe::Attribute::string().

Referenced by ipe::Path::draw().

void Painter::setLineCap ( TLineCap  cap)

Set line cap.

If cap is EDefaultCap, the current setting remains unchanged.

References ipe::EDefaultCap, iInPath, and iState.

Referenced by ipe::Path::draw().

void Painter::setLineJoin ( TLineJoin  join)

Set line join.

If join is EDefaultJoin, the current setting remains unchanged.

References ipe::EDefaultJoin, iInPath, and iState.

Referenced by ipe::Path::draw().

void Painter::setFillRule ( TFillRule  rule)

Set fill rule (wind or even-odd).

If the rule is EDefaultRule, the current setting remains unchanged.

References ipe::EDefaultRule, iInPath, and iState.

Referenced by ipe::Path::draw().

void Painter::setSymStroke ( Attribute  color)
void Painter::setSymFill ( Attribute  color)
void Painter::setSymPen ( Attribute  wid)
void Painter::setOpacity ( Attribute  opaq)
void Painter::setTiling ( Attribute  tiling)

Set tiling pattern.

If tiling is not normal, resets the gradient pattern.

References iInPath, ipe::Attribute::isNormal(), iState, ipe::Attribute::NORMAL(), and tiling().

Referenced by ipe::Path::draw().

void Painter::setGradient ( Attribute  grad)

Set gradient fill.

If grad is not normal, resets the tiling pattern.

References iInPath, ipe::Attribute::isNormal(), iState, and ipe::Attribute::NORMAL().

Referenced by ipe::Path::draw().

Color ipe::Painter::stroke ( ) const
inline
Color ipe::Painter::fill ( ) const
inline

Return current fill color.

References iState.

Referenced by ipe::CairoPainter::doDrawPath().

Fixed ipe::Painter::pen ( ) const
inline
String ipe::Painter::dashStyle ( ) const
inline

Return current dash style (always absolute attribute).

References iState.

Referenced by dashStyle(), and ipe::CairoPainter::doDrawPath().

void Painter::dashStyle ( std::vector< double > &  dashes,
double &  offset 
) const

Return dashstyle as a double sequence.

References dashStyle(), ipe::String::find(), and ipe::String::substr().

TLineCap ipe::Painter::lineCap ( ) const
inline

Return current line cap.

References iState.

Referenced by ipe::CairoPainter::doDrawPath().

TLineJoin ipe::Painter::lineJoin ( ) const
inline

Return current line join.

References iState.

Referenced by ipe::CairoPainter::doDrawPath().

TFillRule ipe::Painter::fillRule ( ) const
inline

Return current fill rule.

References iState.

Referenced by ipe::PdfPainter::doDrawPath(), and ipe::CairoPainter::doDrawPath().

Color ipe::Painter::symStroke ( ) const
inline

Return current symbol stroke color.

References iState.

Color ipe::Painter::symFill ( ) const
inline

Return current symbol fill color.

References iState.

Fixed ipe::Painter::symPen ( ) const
inline

Return current symbol pen.

References iState.

Fixed ipe::Painter::opacity ( ) const
inline

Return current opacity.

References iState.

Referenced by ipe::CairoPainter::doDrawPath(), and ipe::CairoPainter::doDrawText().

Attribute ipe::Painter::tiling ( ) const
inline

Return current tiling.

References iState.

Referenced by ipe::CairoPainter::doDrawPath(), and setTiling().

Attribute ipe::Painter::gradient ( ) const
inline

Return current gradient fill.

References iState.

Referenced by ipe::CairoPainter::doDrawPath().

void Painter::doPush ( )
protectedvirtual

Perform graphics state push on output medium.

Reimplemented in ipe::BBoxPainter, ipe::CairoPainter, and ipe::PdfPainter.

Referenced by push().

void Painter::doPop ( )
protectedvirtual

Perform graphics state pop on output medium.

Reimplemented in ipe::BBoxPainter, ipe::CairoPainter, and ipe::PdfPainter.

Referenced by pop().

void Painter::doNewPath ( )
protectedvirtual

Perform new path operator.

Reimplemented in ipe::BBoxPainter, ipe::PdfPainter, and ipe::PsPainter.

Referenced by newPath().

void Painter::doMoveTo ( const Vector v)
protectedvirtual

Perform moveto operator.

The transformation matrix has already been applied.

Reimplemented in ipe::BBoxPainter, ipe::CairoPainter, and ipe::PdfPainter.

Referenced by moveTo().

void Painter::doLineTo ( const Vector v)
protectedvirtual

Perform lineto operator.

The transformation matrix has already been applied.

Reimplemented in ipe::BBoxPainter, ipe::CairoPainter, and ipe::PdfPainter.

Referenced by lineTo().

void Painter::doCurveTo ( const Vector v1,
const Vector v2,
const Vector v3 
)
protectedvirtual

Perform curveto operator.

The transformation matrix has already been applied.

Reimplemented in ipe::BBoxPainter, ipe::CairoPainter, and ipe::PdfPainter.

Referenced by curveTo().

void Painter::doDrawArc ( const Arc arc)
protectedvirtual

Draw an elliptic arc.

The default implementations calls drawArcAsBezier(). The transformation matrix has not yet been applied to arc.

Reimplemented in ipe::CairoPainter.

References drawArcAsBezier(), ipe::Arc::iAlpha, ipe::Arc::iBeta, ipe::Arc::iM, ipe::Arc::isEllipse(), moveTo(), ipe::Angle::normalize(), popMatrix(), pushMatrix(), and transform().

Referenced by drawArc().

void Painter::doClosePath ( )
protectedvirtual

Perform closepath operator.

Reimplemented in ipe::CairoPainter, and ipe::PdfPainter.

Referenced by closePath().

void Painter::doDrawPath ( TPathMode  mode)
protectedvirtual

Actually draw the path.

Reimplemented in ipe::BBoxPainter, ipe::CairoPainter, ipe::PdfPainter, and ipe::PsPainter.

Referenced by drawPath().

void Painter::doDrawBitmap ( Bitmap  bitmap)
protectedvirtual

Draw a bitmap.

Reimplemented in ipe::BBoxPainter, ipe::CairoPainter, ipe::PdfPainter, and ipe::PsPainter.

Referenced by drawBitmap().

void Painter::doDrawText ( const Text text)
protectedvirtual

Draw a text object.

Reimplemented in ipe::BBoxPainter, ipe::CairoPainter, and ipe::PdfPainter.

Referenced by drawText().

void Painter::doDrawSymbol ( Attribute  symbol)
protectedvirtual

Draw a symbol.

The default implementation calls the draw method of the object. Only PDF drawing overrides this to reuse a PDF XForm.

Reimplemented in ipe::PdfPainter.

References cascade(), ipe::Object::draw(), ipe::Cascade::findSymbol(), and ipe::Symbol::iObject.

Referenced by drawSymbol().

void Painter::doAddClipPath ( )
protectedvirtual

Add a clip path.

Reimplemented in ipe::BBoxPainter, ipe::CairoPainter, ipe::PdfPainter, and ipe::PsPainter.

Referenced by addClipPath().

void Painter::drawArcAsBezier ( double  alpha)
protected

Draw an arc of the unit circle of length alpha.

PDF does not have an "arc" or "circle" primitive, so to draw an arc, circle, or ellipse, Ipe has to translate it into a sequence of Bezier curves.

The approximation is based on the following: The unit circle arc from (1,0) to (cos a, sin a) be approximated by a Bezier spline with control points (1, 0), (1, beta) and their mirror images along the line with slope a/2, where beta = 4.0 * (1.0 - cos(a/2)) / (3 * sin(a/2))

Ipe draws circles by drawing four Bezier curves for the quadrants, and arcs by patching together quarter circle approximations with a piece computed from the formula above.

alpha is normalized to [0, 2 pi], and applied starting from the point (1,0).

The function generates a sequence of Bezier splines as calls to curveTo. It is assumed that the caller has already executed a moveTo to the beginning of the arc at (1,0).

This function may modify the transformation matrix.

References curveTo().

Referenced by doDrawArc().

Member Data Documentation

std::list<Matrix> ipe::Painter::iMatrix
protected

The documentation for this class was generated from the following files:
  • ipepainter.h
  • ipepainter.cpp

ipe-7.1.10/build/doc/functions_func_h.html0000644000175000017500000001373012624020245020314 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- h -


ipe-7.1.10/build/doc/ftv2folderclosed.png0000644000175000017500000000115012624020245020042 0ustar otfriedotfried‰PNG  IHDRÚ}\ˆ/IDATxí]MOÔ@~ÚúuØlp]ö¿#›Å]PYECˆ\9ù¼yÑß`ÖÄÿàÿÀÉxóâ¢C &=qÐÄ£—vZçv¶3m؃‡vžLûNç}Þ÷}Þ½ZA@n° OäNp ’xóþK°ññ€xÜj”°8sÑ€“ “€œ_¼[Âíæ§ïD'‚•yye+ø¼û 7#rNŸlïük* ¾0Ь_d«_(àñÖ±àôz=ñxõv§÷h©‰z¹€šØP-äóä’̪uý¼$»\DãJc—B4¯ãÝÖ.:£Ï-ÑÏß}µŠLEíºþ #—ûáºÀÏgN;BŠ€6ïýñ䬜…ö@’Ðåñp&™h>p9¤™EEά¨ÎÊ‘" u¥n€$R"?{¹<˜…ë…%PNtâ$‰ß¶±úá+^<é"§2 ªDq”q´\¬«Ò™a–Œ‘©Aÿ€"Ôµ ™êŸèP£}#Eàz{û.8i îp³ê(ADwD¦E<ê¬cE¦$ HdÊÄ ”.:Ù GŽ-`ŒL‚ý¾'¢‰Ä<¤CIª½;ÙÇTZd±i};>èôß‚z×;K×§8t ¤Ž q”:uvÿv•Ý›¬²ÙvEân{„M·FXg¼ÌfZÖ¨°¹‰*›ßÌß©±ù©:›j–YqèÜë#3çÏSøWøÿÿÑr'ø Ôùù‚ ©¡IEND®B`‚ipe-7.1.10/build/doc/classipe_1_1_pdf_null.html0000644000175000017500000002641212624020245021111 0ustar otfriedotfried Ipelib: ipe::PdfNull Class Reference
ipe::PdfNull Class Reference

#include <ipepdfparser.h>

Inherits ipe::PdfObj.

Public Member Functions

 PdfNull ()
 
virtual const PdfNullnull () const
 
virtual void write (Stream &stream) const
 
- Public Member Functions inherited from ipe::PdfObj
virtual ~PdfObj ()=0
 
virtual const PdfBoolboolean () const
 
virtual const PdfNumbernumber () const
 
virtual const PdfStringstring () const
 
virtual const PdfNamename () const
 
virtual const PdfRefref () const
 
virtual const PdfArrayarray () const
 
virtual const PdfDictdict () const
 
String repr () const
 

Detailed Description

The PDF null object.

Constructor & Destructor Documentation

ipe::PdfNull::PdfNull ( )
inlineexplicit

Member Function Documentation

const PdfNull * PdfNull::null ( ) const
virtual

Return this object as PDF null object.

Reimplemented from ipe::PdfObj.

void PdfNull::write ( Stream stream) const
virtual

Implements ipe::PdfObj.


The documentation for this class was generated from the following files:
  • ipepdfparser.h
  • ipepdfparser.cpp

ipe-7.1.10/build/doc/manual_17.html0000644000175000017500000001646312624020245016554 0ustar otfriedotfried Ipe Manual -- 4.2 Text objects
4.3 Image objects4 Object types4.1 Path objects4.2 Text objects

4.2 Text objects

Text objects come in two flavors: simple labels, and minipages. There are two variants of these: titles (a label that serves as the title of the page), and textbox (a minipage that spans the entire width of the page).

The position you have to click to start creating a label object is normally the leftmost baseline point (but this can be changed by changing the object's horizontal and vertical alignment). A popup window appears where you can enter Latex source code.

A minipage object is different from a simple text object in that its width is part of its definition. When you create a minipage object, you first have to drag out a horizontal segment for the minipage. This is used as the top edge of the minipage—it will extend downwards as far as necessary to accomodate all the text. Minipages are formatted using, not surprisingly, Latex's minipage environment. Latex tries to fill the given bounding box as nicely as possible. It is possible to include center environments, lemmas, and much more in minipages.

To create a textbox object, simply press F10. Ipe automatically places the object so that it spans the entire width of the page (the layout settings in the stylesheet determine how much space is left on the sides), and places it vertically underneath the textboxes already on the page. This is particularly convenient for creating presentations with a lot of text, or with items that appear one by one.

Title objects are managed by Ipe automatically. They are special labels that are created using Edit title & sections in the Page menu. Their color, size, alignment, and position on the page is determined by the stylesheet.

You can use any LaTeX-command that is legal inside a \makebox (for labels) or inside a minipage (for minipages). You cannot use commands that involve a non-linear translation into PDF, such as commands to generate hyperlinks or to include external images.

You can use color in your text objects, using the \textcolor command, like this:

This is in black. \textcolor{red}{This is in red.} This is in black.
All the symbolic colors of your current stylesheet are also available as arguments to \textcolor. You can also use absolute colors, for instance:
This is in black. \textcolor[rgb]{1,1,0}{This is in yellow.} This is in black.

If you need LaTeX-commands that are defined in additional LaTeX packages, you can include (\usepackage) those in the LaTeX preamble, which can be set in Document properties in the Edit menu.

After you have created or edited a text object, the Ipe screen display will show the beginning of the Latex source. You can select Run Latex from the File menu to create the PDF/Postscript representation of the object. This converts all the text objects in your document at once, and Ipe will display a correct rendition of the text afterwards.

If the Latex conversion process results in errors, Ipe will automatically show you the log file created by the Latex run. If you cannot figure out the problem, look in the section on troubleshooting.

You can use Unicode text, such as accented characters, Greek, Cyrillic, Chinese, Japanese, or Korean, in your text objects, once you have set up the necessary style files and fonts.

When Ipe computes the bounding box for a piece of text, it relies entirely on the dimensions that Latex provides. Sometimes glyphs are larger than their "official" dimensions, and as a result this bounding box is too tight. In the following figure, "A" and "G" stick out of the golden rectangle (the bounding box computed by Ipe based on the Latex dimensions) at the top, "y" sticks out at the bottom:

When you experience that text in your figures is clipped, you may have to enlarge the figure's bounding box using a "BBOX" layer.

The opposite problem can occur when you use transformed text. Ipe computes the bounding box for the transformed text by transforming the bounding box for the original text, and the result can be too large:

If this is a problem, you can put the text object inside a group and set a clipping path for the group.
ipe-7.1.10/build/doc/classipe_1_1_b_box_painter.html0000644000175000017500000015413512624020245022125 0ustar otfriedotfried Ipelib: ipe::BBoxPainter Class Reference

#include <ipeutils.h>

Inherits ipe::Painter.

Public Member Functions

 BBoxPainter (const Cascade *style)
 
Rect bbox () const
 
- Public Member Functions inherited from ipe::Painter
 Painter (const Cascade *style)
 
virtual ~Painter ()
 
void transform (const Matrix &m)
 
void untransform (TTransformations trans)
 
void translate (const Vector &v)
 
void push ()
 
void pop ()
 
void pushMatrix ()
 
void popMatrix ()
 
void newPath ()
 
void moveTo (const Vector &v)
 
void lineTo (const Vector &v)
 
void curveTo (const Vector &v1, const Vector &v2, const Vector &v3)
 
void curveTo (const Bezier &bezier)
 
void rect (const Rect &re)
 
void drawEllipse ()
 
void drawArc (const Arc &arc)
 
void closePath ()
 
void drawPath (TPathMode mode)
 
void drawBitmap (Bitmap bitmap)
 
void drawText (const Text *text)
 
void drawSymbol (Attribute symbol)
 
void addClipPath ()
 
void setStroke (Attribute color)
 
void setFill (Attribute color)
 
void setPen (Attribute pen)
 
void setDashStyle (Attribute dash)
 
void setLineCap (TLineCap cap)
 
void setLineJoin (TLineJoin join)
 
void setFillRule (TFillRule rule)
 
void setSymStroke (Attribute color)
 
void setSymFill (Attribute color)
 
void setSymPen (Attribute wid)
 
void setOpacity (Attribute opaq)
 
void setTiling (Attribute til)
 
void setGradient (Attribute grad)
 
const Cascadecascade () const
 
Color stroke () const
 
Color fill () const
 
const Matrixmatrix () const
 
Fixed pen () const
 
String dashStyle () const
 
void dashStyle (std::vector< double > &dashes, double &offset) const
 
TLineCap lineCap () const
 
TLineJoin lineJoin () const
 
TFillRule fillRule () const
 
Color symStroke () const
 
Color symFill () const
 
Fixed symPen () const
 
Fixed opacity () const
 
Attribute tiling () const
 
Attribute gradient () const
 

Protected Member Functions

virtual void doPush ()
 
virtual void doPop ()
 
virtual void doNewPath ()
 
virtual void doMoveTo (const Vector &v)
 
virtual void doLineTo (const Vector &v)
 
virtual void doCurveTo (const Vector &v1, const Vector &v2, const Vector &v3)
 
virtual void doDrawPath (TPathMode mode)
 
virtual void doDrawBitmap (Bitmap bitmap)
 
virtual void doDrawText (const Text *text)
 
virtual void doAddClipPath ()
 
- Protected Member Functions inherited from ipe::Painter
virtual void doDrawArc (const Arc &arc)
 
virtual void doClosePath ()
 
virtual void doDrawSymbol (Attribute symbol)
 
void drawArcAsBezier (double alpha)
 

Additional Inherited Members

- Protected Attributes inherited from ipe::Painter
std::list< StateiState
 
std::list< MatrixiMatrix
 
const CascadeiCascade
 
int iInPath
 

Detailed Description

Paint objects using this painter to compute an accurate bounding box.

The Object::bbox member function computes a bounding box useful for distance calculations and optimizations. To find a bounding box that is accurate for the actual drawn object, paint the object using a BBoxPainter, and retrieve the box with bbox.

Constructor & Destructor Documentation

BBoxPainter::BBoxPainter ( const Cascade style)

Member Function Documentation

Rect ipe::BBoxPainter::bbox ( ) const
inline
void BBoxPainter::doPush ( )
protectedvirtual

Perform graphics state push on output medium.

Reimplemented from ipe::Painter.

void BBoxPainter::doPop ( )
protectedvirtual

Perform graphics state pop on output medium.

Reimplemented from ipe::Painter.

void BBoxPainter::doNewPath ( )
protectedvirtual

Perform new path operator.

Reimplemented from ipe::Painter.

References ipe::Rect::clear().

void BBoxPainter::doMoveTo ( const Vector v)
protectedvirtual

Perform moveto operator.

The transformation matrix has already been applied.

Reimplemented from ipe::Painter.

References ipe::Rect::addPoint().

void BBoxPainter::doLineTo ( const Vector v)
protectedvirtual

Perform lineto operator.

The transformation matrix has already been applied.

Reimplemented from ipe::Painter.

References ipe::Rect::addPoint().

void BBoxPainter::doCurveTo ( const Vector v1,
const Vector v2,
const Vector v3 
)
protectedvirtual

Perform curveto operator.

The transformation matrix has already been applied.

Reimplemented from ipe::Painter.

References ipe::Rect::addPoint(), ipe::Bezier::bbox(), ipe::Rect::bottomLeft(), and ipe::Rect::topRight().

void BBoxPainter::doDrawPath ( TPathMode  mode)
protectedvirtual
void BBoxPainter::doDrawBitmap ( Bitmap  bitmap)
protectedvirtual
void BBoxPainter::doAddClipPath ( )
protectedvirtual

Add a clip path.

Reimplemented from ipe::Painter.


The documentation for this class was generated from the following files:
  • ipeutils.h
  • ipeutils.cpp

ipe-7.1.10/build/doc/classipe_1_1_pan_tool-members.html0000644000175000017500000001146412624020245022552 0ustar otfriedotfried Ipelib: Member List
ipe::PanTool Member List

This is the complete list of members for ipe::PanTool, including all inherited members.

draw(Painter &painter) const ipe::PanToolvirtual
iCanvasipe::Toolprotected
key(String text, int modifiers)ipe::Toolvirtual
mouseButton(int button, bool press)ipe::PanToolvirtual
mouseMove()ipe::PanToolvirtual
PanTool(CanvasBase *canvas, const Page *page, int view)ipe::PanTool
snapVtx(const Vector &mouse, Vector &pos, double &bound, bool cp) const ipe::Toolvirtual
Tool(CanvasBase *canvas)ipe::Toolprotected
~Tool()ipe::Toolvirtual

ipe-7.1.10/build/doc/manual_46.html0000644000175000017500000001734612624020245016557 0ustar otfriedotfried Ipe Manual -- 11 Using Ipe figures in Latex
12 Command line options and environment variablesTop10 If you have used Ipe 6 before11 Using Ipe figures in Latex

11 Using Ipe figures in Latex

If—like many Latex users nowadays—you are a user of Pdflatex you can include Ipe figures in PDF format in your Latex documents directly.

The standard way of including PDF figures is using the graphicx package. If you are not familiar with it, here is a quick overview. In the preamble of your document, add the declaration:

  \usepackage{graphicx}
One useful attribute to this declaration is draft, which stops LaTeX from actually including the figures—instead, a rectangle with the figure filename is shown:
  \usepackage[draft]{graphicx}

To include the figure "figure1.pdf, you use the command:

  \includegraphics{figs/figure1}
Note that it is common not to specify the file extension ".pdf". The command \includegraphics has various options to scale and rotate the figure. For instance, to scale the same figure to 50%, use:
  \includegraphics[scale=0.5]{figs/figure1}
To scale such that the width of the figure becomes 5 cm:
  \includegraphics[width=5cm]{figs/figure1}
Instead, one can specify the required height with height.

Here is an example that scales a figure to 200% and rotates it by 45 degrees counter-clockwise. Note that the scale argument should be given before the angle argument.

  \includegraphics[scale=2,angle=45]{figs/figure1}

Let's stress once again that these commands are the standard commands for including PDF figures in a LaTeX document. Ipe files neither require nor support any special treatment. If you want to know more about the LaTeX packages for including graphics and producing colour, check the grfguide.tex document that is probably somewhere in your TeX installation.


There is a slight complication here: Each page of a PDF document can carry several "bounding boxes", such as the MediaBox (which indicates the paper size), the CropBox (which indicates how the paper will by cut), or the ArtBox (which indicates the extent of the actual contents of the page). Ipe automatically saves, for each page, the paper size in the MediaBox, and a bounding box for the drawing in the ArtBox. Ipe also puts the bounding box in the CropBox unless this has been turned off by the stylesheet.

Now, when including a PDF figure, Pdflatex will (by default) first look at the CropBox, and, if that is not set, fall back on the MediaBox. It does not inspect the ArtBox, and so it is important that you use the correct stylesheet for the kind of figure you are making—with cropping for figures to be included, without cropping for presentations (as otherwise Acrobat Reader will not display full pages—Acrobat Reader actually crops each page to the CropBox).

If you have a recent version of Pdflatex (1.40 or higher), you can actually ask Pdflatex to inspect the ArtBox by saying \pdfpagebox5 in your Latex file's preamble.


If you are still using the "original" Latex, which compiles documents to DVI format, you need figures in Encapsulated Postscript (EPS) format (the "Encapsulated" means that there is only a single Postscript page and that it contains a bounding box of the figure). Some publishers may also require that you submit figures in EPS format, rather than in PDF.

Ipe allows you to export your figure in EPS format, either from the Ipe program (File menu, Export as EPS), or by using the command line tool iperender with the -eps option. Remember to keep a copy of your original Ipe figure! Ipe cannot read the exported EPS figure, you will not be able to edit this any further.

Including EPS figures works exactly like for PDF figures, using \includegraphics. In fact you can save all your figures in both EPS and PDF format, so that you can run both Latex and Pdflatex on your document—when including figures, Latex will look for the EPS variant, while Pdflatex will look for the PDF variant. (Here it comes in handy that you didn't specify the file extension in the \includegraphics command.)

It would be cumbersome to have to export to EPS every time you modify and save an Ipe figure in PDF format. What you should do instead is to write a shell script or batch file that calls iperender to export to EPS.


On the other hand, if you only use Pdflatex, you might opt to exploit a feature of Pdflatex: You can keep all the figures for a document in a single, multi-page Ipe document, with one figure per page. You can then include the figures one by one into your document by using the page argument of \includegraphics.

For example, to include page 3 from the PDF file "figures.pdf" containing several figures, you could use

  \includegraphics[page=3]{figures}
ipe-7.1.10/build/doc/classipe_1_1_all_attributes.html0000644000175000017500000006622112624020245022326 0ustar otfriedotfried Ipelib: ipe::AllAttributes Class Reference

#include <ipeattributes.h>

Public Member Functions

 AllAttributes ()
 

Public Attributes

TPathMode iPathMode
 
Attribute iStroke
 
Attribute iFill
 
Attribute iDashStyle
 
Attribute iPen
 
bool iFArrow
 
bool iRArrow
 
Attribute iFArrowShape
 
Attribute iRArrowShape
 
Attribute iFArrowSize
 
Attribute iRArrowSize
 
Attribute iSymbolSize
 
Attribute iTextSize
 
THorizontalAlignment iHorizontalAlignment
 
TVerticalAlignment iVerticalAlignment
 
Attribute iTextStyle
 
TPinned iPinned
 
bool iTransformableText
 
TTransformations iTransformations
 
TLineJoin iLineJoin
 
TLineCap iLineCap
 
TFillRule iFillRule
 
Attribute iOpacity
 
Attribute iTiling
 
Attribute iGradient
 
Attribute iMarkShape
 

Detailed Description

Collection of all object attributes.

Constructor & Destructor Documentation

AllAttributes::AllAttributes ( )

Constructor sets default values.

Member Data Documentation

TPathMode ipe::AllAttributes::iPathMode

Should we stroke and/or fill?

Attribute ipe::AllAttributes::iStroke

Stroke color.

Referenced by ipe::Text::Text().

Attribute ipe::AllAttributes::iFill

Fill color.

Attribute ipe::AllAttributes::iDashStyle

Dash style.

Attribute ipe::AllAttributes::iPen

Pen (that is, line width).

bool ipe::AllAttributes::iFArrow

Arrow forward?

bool ipe::AllAttributes::iRArrow

Reverse arrow?

Attribute ipe::AllAttributes::iFArrowShape

Shape of forward arrows.

Attribute ipe::AllAttributes::iRArrowShape

Shape of reverse arrows.

Attribute ipe::AllAttributes::iFArrowSize

Forward arrow size.

Attribute ipe::AllAttributes::iRArrowSize

Reverse arrow size.

Attribute ipe::AllAttributes::iSymbolSize

Symbol size.

Attribute ipe::AllAttributes::iTextSize

Text size. Horizontal alignment of label objects.

Referenced by ipe::Text::Text().

THorizontalAlignment ipe::AllAttributes::iHorizontalAlignment

Referenced by ipe::Text::Text().

TVerticalAlignment ipe::AllAttributes::iVerticalAlignment

Vertical alignment of label objects.

Referenced by ipe::Text::Text().

Attribute ipe::AllAttributes::iTextStyle

Text style.

Referenced by ipe::Text::Text().

TPinned ipe::AllAttributes::iPinned

Pinned status. Should newly created text be transformable?

Referenced by ipe::Object::Object().

bool ipe::AllAttributes::iTransformableText

If this is false, newly created text will only allow translations. Otherwise, the value of iTranslations is used (as for other objects).

Referenced by ipe::Text::Text().

TTransformations ipe::AllAttributes::iTransformations

Allowed transformations.

Referenced by ipe::Object::Object().

TLineJoin ipe::AllAttributes::iLineJoin

Line join style.

TLineCap ipe::AllAttributes::iLineCap

Line cap style.

TFillRule ipe::AllAttributes::iFillRule

Shape fill rule.

Attribute ipe::AllAttributes::iOpacity

Opacity.

Referenced by ipe::Text::Text().

Attribute ipe::AllAttributes::iTiling

Tiling pattern.

Attribute ipe::AllAttributes::iGradient

Gradient pattern.

Attribute ipe::AllAttributes::iMarkShape

Shape of Mark to create.


The documentation for this class was generated from the following files:
  • ipeattributes.h
  • ipeattributes.cpp

ipe-7.1.10/build/doc/classipe_1_1_select_tool-members.html0000644000175000017500000001164412624020245023253 0ustar otfriedotfried Ipelib: Member List
ipe::SelectTool Member List

This is the complete list of members for ipe::SelectTool, including all inherited members.

draw(Painter &painter) const ipe::SelectToolvirtual
iCanvasipe::Toolprotected
key(String text, int modifiers)ipe::SelectToolvirtual
mouseButton(int button, bool press)ipe::SelectToolvirtual
mouseMove()ipe::SelectToolvirtual
SelectTool(CanvasBase *canvas, Page *page, int view, double selectDistance, bool nonDestructive)ipe::SelectTool
snapVtx(const Vector &mouse, Vector &pos, double &bound, bool cp) const ipe::Toolvirtual
Tool(CanvasBase *canvas)ipe::Toolprotected
~Tool()ipe::Toolvirtual

ipe-7.1.10/build/doc/ftv2node.png0000644000175000017500000000012612624020245016324 0ustar otfriedotfried‰PNG  IHDRɪ|IDATxíݱðøScOx@ –¨y}IEND®B`‚ipe-7.1.10/build/doc/functions_m.html0000644000175000017500000002012012624020245017275 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- m -


ipe-7.1.10/build/doc/pages.html0000644000175000017500000000325512624020245016062 0ustar otfriedotfried Ipelib: Related Pages
Related Pages
Here is a list of all related documentation pages:

ipe-7.1.10/build/doc/manual_44.html0000644000175000017500000003432012624020245016544 0ustar otfriedotfried Ipe Manual -- 9.4 The <ipestyle> element
9 The Ipe file format9.3 Ipe object elements9.4 The <ipestyle> element

9.4 The <ipestyle> element

Attributes

name
(optional) The name serves to identify the style sheet informally, and can be used to automatically update the style sheet from a file with the matching name.

The contents of the <ipestyle> element is a series of style definition elements, in no particular order. These elements are described below.

9.4.1 The <symbol> element

Attributes

name
(required) The name identifies the symbol and must be unique in the style sheet. For parameterized symbols, the name must end with the pattern "(s?f?p?x?)", where "s" stands for stroke, "f" for fill, "p" for pen, and "x" for size.
transformations
(optional) As for objects.
xform
(optional) If this attribute is set, a PDF XForm will be created for this symbol when saving or exporting to PDF. It implies transformations="translations", and will be ignored if any of the symbol parameters (that is, stroke, fill, pen, or size) are used. Setting this attribute will cause the PDF output to be significantly smaller for a complicated symbol that is used often (for instance, a complicated background used on every page).

The contents of the <symbol> element is a single Ipe object.

9.4.2 The <preamble> element

See the <preamble> elements inside <ipe> elements.

9.4.3 The <cmap> element

Attributes

font
(required) The name of a font. The font is marked as being Unicode-encoded. See here for an example.

9.4.4 The <textstyle> element

Attributes

name
(required) The symbolic name (to be used in the style attribute of <text> elements),
begin
(required) LaTeX code to be placed before the text of the object when it is formatted,
end
(required) LaTeX code to be placed after the text of the object when it is formatted.

9.4.5 The <layout> element

It defines the layout of the frame on the paper and the paper size.

Attributes

paper
(required) The size of the paper.
origin
(required) The lower left corner of the frame in the paper coordinate system.
frame
(required) The size of the frame.
skip
(optional) The default paragraph skip between textboxes.
crop
(optional) If the value of crop is yes, Ipe will create a CropBox attribute when saving to PDF.

9.4.6 The <titlestyle> element

It defines the appearance of the page title on the page.

Attributes

pos
(required) The position of the title reference point in the frame coordinate system.
color
(required) The color of the title.
size
(required) The title font size (same as for <text> elements).
halign
(optional) The horizontal alignment (same as for <text> elements).
valign
(optional) The vertical alignment (same as for <text> elements).

9.4.7 The <pagenumberstyle> element

It defines the appearance of page numbers on the page.

Attributes

pos
(required) The position of the page number on the page.
color
(required) The color of the page number as an absolute color.
size
(required) The font size as a number.

9.4.8 The <textpad> element

It defines padding around text objects for the computation of bounding boxes. The four required attributes are left, right, top, and bottom.

9.4.9 The <pathstyle> element

It defines the default setting for path objects.

Attributes

cap
(optional) Same as for <path> elements.
join
(optional) Same as for <path> elements.
fillrule
(optional) Same as for <path> elements.

9.4.10 The <opacity> element

The opacity element defines a possible opacity value (also known as an alpha-value). All opacity values used in a document must be defined in the style sheet.

Attributes

name
(required) A symbolic name, to be used in the opacity attribute of a text or path element.
value
(required) An absolute value for the opacity, between 0.001 and 1.000. A value of 1.0 implies that the element is fully opaque.

9.4.11 The <gradient> element

The gradient element defines a gradient pattern.

Attributes of <gradient>

name
(required) The symbolic name (to be used in the gradient attribute of <path> elements).
type
(required) Possible values are axial and radial.
extend
(optional) yes or no (the default). Indicates whether the gradient is extended beyond the boundaries.
coords
(required) For axial shading: the coordinates of the endpoints of the axis (in the order x1 y1 x2 y2). For radial shading: the center and radius of both circles (in the order cx1 cy1 r1 cx2 cy2 r2).
matrix
(optional) A transformation that transforms the gradient coordinate system into the coordinate system of the path object using the gradient. The default is the identity matrix.

The contents of the <gradient> element are <stop> elements defining the color stops of the gradient. There must be at least two stops. Stops must be defined in increasing offset order. It is not necessary that the first offset is 0.0 and the last one is 1.0.

Attributes of <stop>

offset
(required) Offset of the color stop (a number between 0.0 and 1.0).
color
(required) Color at this color stop (three numbers). Symbolic names are not allowed.

9.4.12 The <tiling> element

The tiling element defines a tiling pattern. Only very simple patterns that hatch the area with a line are supported.

Attributes

name
(required) The symbolic name (to be used in the tiling attribute of <path> elements).
angle
(required) Slope of the hatching line in degrees, between -90 and +90 degrees.
width
(required) Width of the hatching line.
step
(required) Distance from one hatching line to the next.

Here, width and step are measured in the y-direction if the absolute value of angle is less than 45 degrees, and in the y-direction otherwise.

9.4.13 The <effect> element

The effect element defines a graphic effect to be used during a PDF page transition. Acrobat Reader supports these effects, but not all PDF viewers do.

Attributes

name
(required) The symbolic name (to be used in the effect attribute of <view> elements).
duration
(required) Value must be a real number, indicating the duration of display in seconds.
transition
(required) Value must be a real number, indicating the duration of the transition effect in seconds.
effect
(required) a number indicated the desired effect. The value must be an integer between 0 and 16 (see ipe::Effect::TEffect for the exact meaning).

9.4.14 Other style definition elements

The remaining style definition elements are:

  • <color> Defines a symbolic color. The value must be an absolute color, that is either a single gray value (between 0 and 1), or three components (red, green, blue) seperated by space.
  • <dashstyle> Defines a symbolic dashstyle. The value must be a correct dashstyle description, e.g. [3 5 2 5] 0.
  • <pen> Defines a symbolic pen width. The value is a single real number.
  • <textsize> Defines a symbolic text size. The value is a piece of LaTeX source code selecting the desired font size.
  • <textstretch> Defines a symbolic text stretch factor. The symbolic name is shared with <textsize> elements. The value is a single real number.
  • <symbolsize> Defines a symbolic size for symbols. The value is a single real number, and indicates the scaling factor used for the symbol.
  • <arrowsize> Defines a symbolic size for arrows. The value is a single real number.
  • <gridsize> Defines a grid size. The symbolic name cannot actually be used by objects in the document — it is only used to fill the grid size selector in the user interface.
  • <anglesize> Defines an angular snap angle. The symbolic name cannot actually be used by objects in the document — it is only used to fill the angle selector in the user interface.

Common attributes

name
(required) A symbolic name, which must start with a letter 'a' to 'z' or 'A' to 'Z'.
value
(required) A legal absolute value for the type of attribute.
ipe-7.1.10/build/doc/classipe_1_1_fonts-members.html0000644000175000017500000000677512624020245022101 0ustar otfriedotfried Ipelib: Member List
ipe::Fonts Member List

This is the complete list of members for ipe::Fonts, including all inherited members.

freetypeVersion()ipe::Fontsstatic
getFace(int id)ipe::Fonts
New(const FontPool *fontPool)ipe::Fontsstatic
screenFont()ipe::Fontsstatic
~Fonts()ipe::Fonts

ipe-7.1.10/build/doc/manual_31.html0000644000175000017500000000534112624020245016541 0ustar otfriedotfried Ipe Manual -- 7.3 Bookmarks
7.4 Gradient patterns7 Presentations7.2 Views7.3 Bookmarks

7.3 Bookmarks

You can set a section title and a subsection title for each page of an Ipe document. Theses titles will be shown in the bookmarks list (right-click on a toolbar to make it visible). Double-clicking a title brings you directly to its page, making navigation of long documents much easier. The titles are also exported to PDF, and are visible in the bookmarks view of PDF viewers.

ipe-7.1.10/build/doc/manual.css0000644000175000017500000000066612624020245016067 0ustar otfriedotfriedbody, table, div, p { font-family: Georgia, serif; } h1 { font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; color: #153788; text-align: left; } h2 { font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; color: #153788; text-align: left; } h3 { font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; color: #153788; text-align: left; } em { color: #FF9900; }ipe-7.1.10/build/doc/classipe_1_1_image.html0000644000175000017500000014010312624020245020362 0ustar otfriedotfried Ipelib: ipe::Image Class Reference

#include <ipeimage.h>

Inherits ipe::Object.

Public Member Functions

 Image (const Rect &rect, Bitmap bitmap)
 
 Image (const XmlAttributes &attr, String data)
 
 Image (const XmlAttributes &attr, Bitmap bitmap)
 
virtual Objectclone () const
 
virtual ImageasImage ()
 
virtual Type type () const
 
virtual void saveAsXml (Stream &stream, String layer) const
 
virtual void draw (Painter &painter) const
 
virtual void drawSimple (Painter &painter) const
 
virtual void accept (Visitor &visitor) const
 
virtual double distance (const Vector &v, const Matrix &m, double bound) const
 
virtual void addToBBox (Rect &box, const Matrix &m, bool) const
 
virtual void snapCtl (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
Rect rect () const
 
Bitmap bitmap () const
 
- Public Member Functions inherited from ipe::Object
virtual ~Object ()=0
 
virtual GroupasGroup ()
 
virtual TextasText ()
 
virtual PathasPath ()
 
virtual ReferenceasReference ()
 
virtual TPinned pinned () const
 
void setPinned (TPinned pin)
 
TTransformations transformations () const
 
void setTransformations (TTransformations trans)
 
void setMatrix (const Matrix &matrix)
 
const Matrixmatrix () const
 
virtual bool setAttribute (Property prop, Attribute value)
 
virtual Attribute getAttribute (Property prop)
 
virtual void snapVtx (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
virtual void snapBnd (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
virtual void checkStyle (const Cascade *sheet, AttributeSeq &seq) const
 

Additional Inherited Members

- Public Types inherited from ipe::Object
enum  Type {
  EGroup, EPath, EText, EImage,
  EReference
}
 
- Protected Member Functions inherited from ipe::Object
 Object ()
 
 Object (const AllAttributes &attr)
 
 Object (const Object &rhs)
 
 Object (const XmlAttributes &attr)
 
void saveAttributesAsXml (Stream &stream, String layer) const
 
- Static Protected Member Functions inherited from ipe::Object
static void checkSymbol (Kind kind, Attribute attr, const Cascade *sheet, AttributeSeq &seq)
 
- Protected Attributes inherited from ipe::Object
Matrix iMatrix
 
TPinned iPinned: 8
 
TTransformations iTransformations: 8
 

Detailed Description

The image object.

Constructor & Destructor Documentation

Image::Image ( const Rect rect,
Bitmap  bitmap 
)
explicit

Create a new image.

Referenced by clone().

Image::Image ( const XmlAttributes attr,
String  data 
)
explicit

Create from XML stream.

Image::Image ( const XmlAttributes attr,
Bitmap  bitmap 
)
explicit

Create from XML stream with given bitmap.

Member Function Documentation

Object * Image::clone ( ) const
virtual

Clone object.

Implements ipe::Object.

References Image().

Image * Image::asImage ( )
virtual

Return pointer to this object.

Reimplemented from ipe::Object.

Object::Type Image::type ( ) const
virtual

Implements ipe::Object.

References ipe::Object::EImage.

void Image::saveAsXml ( Stream stream,
String  layer 
) const
virtual

Save image in XML stream.

Implements ipe::Object.

References ipe::Bitmap::objNum(), rect(), and ipe::Object::saveAttributesAsXml().

void Image::accept ( Visitor visitor) const
virtual

Call VisitImage of visitor.

Implements ipe::Object.

References ipe::Visitor::visitImage().

double Image::distance ( const Vector v,
const Matrix m,
double  bound 
) const
virtual

Return distance of transformed object to point v. If larger than bound, can just return bound.

Implements ipe::Object.

References ipe::Rect::addPoint(), ipe::Rect::bottomLeft(), ipe::Rect::bottomRight(), ipe::Rect::certainClearance(), ipe::Object::matrix(), ipe::Rect::topLeft(), and ipe::Rect::topRight().

void Image::addToBBox ( Rect box,
const Matrix m,
bool  cp 
) const
virtual

Extend box to include the object transformed by m.

For objects in a page, don't call this directly. The Page caches the bounding box of each object, so it is far more efficient to call Page::bbox.

Control points that lie outside the visual object are included if cp is true.

If called with an empty box and cp == false, the result of this function is a tight bounding box for the object, with a little leeway in case the boundary is determined by a spline (it has to be approximated to perform this operation).

Implements ipe::Object.

References ipe::Rect::addPoint(), ipe::Rect::bottomLeft(), ipe::Rect::bottomRight(), ipe::Object::matrix(), ipe::Rect::topLeft(), and ipe::Rect::topRight().

void Image::snapCtl ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
virtual

Compute control point snapping position for transformed object.

Looks only for positions closer than bound. If successful, modify pos and bound. The default implementation does nothing.

Reimplemented from ipe::Object.

References ipe::Rect::bottomLeft(), ipe::Rect::bottomRight(), ipe::Object::matrix(), ipe::Rect::topLeft(), and ipe::Rect::topRight().

Rect ipe::Image::rect ( ) const
inline

Return the rectangle occupied by the image on the paper.

The transformation matrix is applied to this, of course.

Referenced by saveAsXml().

Bitmap ipe::Image::bitmap ( ) const
inline

Return Bitmap of the image.

Referenced by ipe::BitmapFinder::visitImage().


The documentation for this class was generated from the following files:
  • ipeimage.h
  • ipeimage.cpp

ipe-7.1.10/build/doc/functions_r.html0000644000175000017500000002024312624020245017310 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- r -


ipe-7.1.10/build/doc/manual_ipe6_to_ipe7.html0000644000175000017500000001751412624020245020614 0ustar otfriedotfried Ipe Manual -- 10 If you have used Ipe 6 before
11 Using Ipe figures in LatexTop9 The Ipe file format10 If you have used Ipe 6 before

10 If you have used Ipe 6 before

Ipe 7 is not very different from Ipe 6 for the casual user, but there are a number of changes you need to be aware of.

File format.

First of all, the file format of Ipe 7 is different, and Ipe 7 cannot open files created by Ipe 6. To reuse an Ipe 6 document in EPS or PDF format, you first need to run the new tool "ipeextract", which will extract the XML stream inside the document and save it as an XML file. An Ipe 6 XML document can then be converted to Ipe 7 format using "ipe6upgrade".

If your figure is figure.pdf, then the command

ipeextract figure.pdf
will save the XML stream as figure.xml. Then run
ipe6upgrade figure.xml
which will save your document in Ipe 7 format as figure.ipe. All contents of the original document should have been preserved.

Shortcuts.

The keyboard shortcuts of a small number of commands have changed. Check the menu to find out what changes were made. (You can undo these changes by customizing Ipe.)

The mouse shortcuts have changed as well. The right button now opens the context menu. The middle button is only used for pan, because it seems hard to use a scroll wheel for anything else. Select, translate, rotate, scale, and stretch are still available by holding Control or Alt when pressing a mouse button.

Absolute attributes.

The user interface no longer switches between displaying symbolic and absolute attribute values. To select an absolute color, pen width, text or mark size, press the little button to the left of the selector box.

Void color and pen.

There is no longer a void color for filling, or a void pen for stroking. For each path object, you indicate whether you want it to be stroked, filled, or both. This setting is independent of the stroke and fill color attribute setting. Unlike in Ipe 6, it is no longer possible to have path objects that are neither stroked nor filled (such an object would now be stroked in black).

Path properties.

Except for the pen width, path properties are now set in the path property box (below the pen width). Clicking near the ends of the segment turns arrows on and off, clicking at the right end will cycle through the modes "stroke", "stroke & fill", and "fill." The right mouse button will open a context menu that gives you access to all other settings, including the new arrow shape menu, and the new tiling menu. A tiling will hatch the object with a line pattern, but only if is filled. You can define your own arrow shapes and tiling patterns using a stylesheet.

Ink tool.

There is a new tool (the one with the brush icon) for drawing path objects using a pen on a tablet PC.

Page transition effects.

These now need to be defined in the stylesheet.

Ipetopng replaced by iperender.

The program "ipetopng" was replaced by a new tool "iperender," which can render Ipe documents to PNG or SVG format. The latter is very nice for including scalable figures in web pages.

Customization.

The Preferences dialog has disappeared entirely. Ipe 7 can only be customized by editing configuration files written in Lua.

Mark objects.

Mark objects are now simply symbols defined in a style sheet—there is no actual mark object anymore. Nevertheless, the user interface allows you to use them as in Ipe 6, with the added benefit that you can define your own mark shapes.

Clipping paths.

It is now possible to add a clipping path to a group object. The group will only be drawn inside this clipping path.

Transparency.

Ipe now supports transparency for text objects and path objects. This feature is not available unless it is enabled in a stylesheet.

Presentations.

To make cooler presentations, Ipe now supports gradients (so you can draw glassy balls), and it is possible to use arbitrary Ipe objects as the "bullet" in itemize environments.

Images on the screen.

Images are no longer shown with reduced resolution on the screen. Cairo can handle images fast enough to make this unnecessary.

Bounding boxes.

When a page has several views, Ipe will now compute the same bounding box for each view of the page. This is what you need when you make an animated figure consisting of several views, for instance for use from the "beamer" package.

If you need to force a larger bounding box, you can do so by drawing a rectangle in a layer named "BBOX" and making that layer invisible. (This specially named layer will be included in the bounding box calculation even if it is not visible in any view.)

If you do need independent bounding boxes for each view (as in Ipe 6), create a layer named "VIEWBBOX". Any view in which this layer is visible will receive a bounding box computed for the objects visible in this view only.

To crop or not to crop.

In Ipe 6, use of the PDF CropBox was set in the document properties. In Ipe 7 it is determined by the layout set in the stylesheet (and should therefore always be right).
ipe-7.1.10/build/doc/cpp-ipelets.html0000644000175000017500000004243512624020245017213 0ustar otfriedotfried Ipelib: Ipelets written in C++
Ipelets written in C++

As in Ipe 6, it is possible to write ipelets entirely in C++. Different from Ipe 6, however, the labels of the ipelet and its functions must now be specified in a short Lua wrapper with some boilerplate code. This Lua code will invoke your C++ methods.

C++ ipelet framework

The C++ code is in a dynamically loaded library (DLL), that you place on Ipe's C++ ipelet path. The DLL has to be written in C++, and must export a function newIpelet that creates an object derived from the class Ipelet (defined in ipelet.h). Here is a minimal ipelet implementation:

#include "ipelet.h"

class MyIpelet : public ipe::Ipelet {
public:
  virtual int ipelibVersion() const { return IPELIB_VERSION; }
  virtual bool run(int function, ipe::IpeletData *data, ipe::IpeletHelper *helper);
};

bool MyIpelet::run(int function, ipe::IpeletData *data, ipe::IpeletHelper *helper)
{
  // this is where you do all the work
}

IPELET_DECLARE ipe::Ipelet *newIpelet()
{
  return new MyIpelet;
}

When the ipelet is executed, Ipe hands it a structure with some information about the document, in particular a pointer to the current page. The ipelet can examine the selected objects, and modify the page in any way it wishes. (It is not possible to modify the document outside the current page, as this would interfere with the undo stack). It can also request services from the Ipe application through the IpeletHelper object, for instance to display a message in the status bar, to pop up message boxes and to obtain input from the user.

The run method must return true if it modified the document page. This is used to create an item on the undo stack so that this change can be undone. If the run method returns false, then no undo stack item is created. In this case, the ipelet must not modify the page.

The Lua wrapper

You need to provide a small Lua wrapper that declares the names of the ipelet and its methods, and that calls your C++ code when an ipelet method is invoked. This wrapper will look as follows:

-- Lua wrapper for C++ ipelet "myipelet"

label = "My Ipelet"

about = "This ipelet is for explanation only"

-- this variable will store the C++ ipelet when it has been loaded
ipelet = false

function run(ui, num)
  if not ipelet then ipelet = assert(loadIpelet("myipelet"))
  ui:runIpelet(ipelet, mum) 
end

methods = { { label = "First function of my ipelet" },
            { label = "Second function of my ipelet" }
          }

If the ipelet contains only a single method, then the methods table is omitted.

The Lua wrapper needs to be placed in Ipe's ipelet directory. When Ipe starts up, it automatically loads all ipelets from this directory. Note that the wrapper above does not immediately load the C++ ipelet (using loadIpelet) when the Lua wrapper is loaded by Ipe, but only when the first method of the ipelet is called. This is considered good style.

An example ipelet

Kgon is a minimal ipelet that you can use as the basis for your own development. It defines only a single function, and makes no use of the function argument to run.

// --------------------------------------------------------------------
// Ipelet for creating regular k-gons
// --------------------------------------------------------------------
#include "ipelet.h"
#include "ipepath.h"
#include "ipepage.h"
using namespace ipe;
// --------------------------------------------------------------------
class KGonIpelet : public Ipelet {
public:
virtual int ipelibVersion() const { return IPELIB_VERSION; }
virtual bool run(int, IpeletData *data, IpeletHelper *helper);
};
// --------------------------------------------------------------------
bool KGonIpelet::run(int, IpeletData *data, IpeletHelper *helper)
{
Page *page = data->iPage;
int sel = page->primarySelection();
if (sel < 0) {
helper->message("No selection");
return false;
}
const Path *p = page->object(sel)->asPath();
if (p == 0 || p->shape().countSubPaths() != 1 ||
helper->message("Primary selection is not a circle");
return false;
}
String str;
if (!helper->getString("Enter k (number of corners)", str))
return false;
int k = Lex(str).getInt();
if (k < 3 || k > 1000)
return false;
const Ellipse *e = p->shape().subPath(0)->asEllipse();
Matrix m = p->matrix() * e->matrix();
Vector center = m.translation();
Vector v = m * Vector(1,0);
double radius = (v - center).len();
Curve *sp = new Curve;
double alpha = 2.0 * IpePi / k;
Vector v0 = center + radius * Vector(1,0);
for (int i = 1; i < k; ++i) {
Vector v1 = center + radius * Vector(Angle(i * alpha));
sp->appendSegment(v0, v1);
v0 = v1;
}
sp->setClosed(true);
Shape shape;
shape.appendSubPath(sp);
Path *obj = new Path(data->iAttributes, shape);
page->append(ESecondarySelected, data->iLayer, obj);
helper->message("Created regular k-gon");
return true;
}
// --------------------------------------------------------------------
IPELET_DECLARE Ipelet *newIpelet()
{
return new KGonIpelet;
}
// --------------------------------------------------------------------

The Lua wrapper would look like this:

----------------------------------------------------------------------
-- kgon ipelet description
----------------------------------------------------------------------
label = "Regular k-gon"
about = [[
Constructs a regular k-gon from a circle.
This ipelet is part of Ipe.
]]
-- this variable will store the C++ ipelet when it has been loaded
ipelet = false
function run(model)
if not ipelet then ipelet = assert(ipe.Ipelet(dllname)) end
model:runIpelet(label, ipelet)
end
-- define a shortcut for this function
shortcuts.ipelet_1_kgon = "Alt+Ctrl+K"
----------------------------------------------------------------------

Compiling ipelets on Unix

The ipelet must be compiled as a shared library and must be linked with the Ipe library ``libipe.so''. C++ mandates that it must be compiled with the same compiler that was used to compile Ipe. Have a look at the ipelet sources in the Ipe source distribution, and their makefiles for details on compiling them.

Compiling ipelets on Windows

The ipelet must be compiled as a DLL and must be linked with the Ipe library ``ipe.dll''. C++ mandates that it must be compiled with the same compiler that was used to compile Ipe. If you use the binary Ipe distribution for Windows, that means you have to use the MinGW compiler. (If you haven't used it before: MinGW is a port of g++ for Windows).

The Ipe Windows distribution contains the necessary header files and the library to compile ipelets, as well as the source of the kgon'' andgoodies'' ipelets as examples. To compile the ``kgon'' example, open a command shell, make sure MinGW g++ is on your path, and say:

  g++ -c -O2 -DWIN32 -fno-exceptions -fno-rtti -Iinclude kgon.cpp
  g++ -shared -o kgon.dll kgon.o -Llib -lipe

Place the resulting kgon.dll in the ipelets subdirectory, and restart Ipe.


ipe-7.1.10/build/doc/classipe_1_1_pdf_parser.html0000644000175000017500000004606512624020245021441 0ustar otfriedotfried Ipelib: ipe::PdfParser Class Reference
ipe::PdfParser Class Reference

#include <ipepdfparser.h>

Public Member Functions

 PdfParser (DataSource &source)
 
void getChar ()
 
bool eos () const
 
PdfToken token () const
 
void getToken ()
 
PdfObjgetObject ()
 
PdfObjgetObjectDef ()
 
PdfDictgetTrailer ()
 
void skipXRef ()
 

Detailed Description

PDF parser.

The parser understands the syntax of PDF files, but very little of its semantics. It is meant to be able to parse PDF documents created by Ipe for loading, and to extract information from PDF files created by Pdflatex.

The parser reads a PDF file sequentially from front to back, ignores the contents of 'xref' sections, stores only generation 0 objects, and stops after reading the first 'trailer' section (so it cannot deal with files with incremental updates). It cannot handle stream objects whose /Length entry has been deferred (using an indirect object).

Constructor & Destructor Documentation

PdfParser::PdfParser ( DataSource source)

Construct with a data source.

Member Function Documentation

void ipe::PdfParser::getChar ( )
inline

References ipe::DataSource::getChar().

Referenced by getToken().

bool ipe::PdfParser::eos ( ) const
inline
PdfToken ipe::PdfParser::token ( ) const
inline
PdfObj * PdfParser::getObjectDef ( )

Parse an object definition (current token is object number).

References ipe::PdfToken::ENumber, ipe::PdfToken::EOp, getObject(), getToken(), ipe::PdfToken::iString, and ipe::PdfToken::iType.

Referenced by ipe::PdfFile::parse().

PdfDict * PdfParser::getTrailer ( )

Parse trailer dictionary (current token is 'trailer')

References ipe::PdfToken::EDictBg, getToken(), and ipe::PdfToken::iType.

Referenced by ipe::PdfFile::parse().

void PdfParser::skipXRef ( )

Skip xref table (current token is 'xref')

References getToken(), and ipe::PdfToken::iString.

Referenced by ipe::PdfFile::parse().


The documentation for this class was generated from the following files:
  • ipepdfparser.h
  • ipepdfparser.cpp

ipe-7.1.10/build/doc/functions_vars_i.html0000644000175000017500000006324312624020245020341 0ustar otfriedotfried Ipelib: Class Members - Variables
 

- i -


ipe-7.1.10/build/doc/manual_13.html0000644000175000017500000000774112624020245016547 0ustar otfriedotfried Ipe Manual -- 3.10 Layers
3.11 Mouse shortcuts3 General Concepts3.9 Groups3.10 Layers

3.10 Layers

A page of an Ipe document consists of one or more layers. Each object on the page belongs to a layer. There is no relationship between layers and the back-to-front ordering of objects, so the layer is really just an attribute of the object.

The layers of the current page are displayed in the layer list, at the bottom left of the Ipe window. The checkmark to the left of the layer name determines whether the layer is visible. The layer marked with a yellow background is the active layer. New objects are always created in the active layer. You can change the active layer by left-clicking on the layer name.

By right-clicking on a layer name, you open the layer context menu that allows you to change layer attributes, to rename layers, to delete empty layers, and to change the ordering of layers in the layer list (this ordering has no other significance).

A layer may be editable or locked. Objects can be selected and modified only if their layer is editable. Locked layer are displayed in the layer list with a pink background. You can lock and unlock layers from the layer context menu, but note that the active layer cannot be locked.

A layer may have snapping on or off—objects will behave magnetically only if their layer has snapping on. Layers without snapping are displayed dimmed in the layer list.

Layers are also used to create pages that are displayed incrementally in Acrobat Reader. Once you have distributed your objects over various layers, you can create views, which defines in what order which layers of the page are shown.

ipe-7.1.10/build/doc/functions_func_g.html0000644000175000017500000001767512624020245020327 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- g -


ipe-7.1.10/build/doc/classipe_1_1_platform.html0000644000175000017500000005474212624020245021141 0ustar otfriedotfried Ipelib: ipe::Platform Class Reference

#include <ipebase.h>

Public Types

typedef void(* DebugHandler )(const char *)
 

Static Public Member Functions

static FILE * fopen (const char *fname, const char *mode)
 
static int libVersion ()
 
static void initLib (int version)
 
static void setDebug (bool debug)
 
static String currentDirectory ()
 
static String latexDirectory ()
 
static String fontmapFile ()
 
static bool fileExists (String fname)
 
static bool listDirectory (String path, std::vector< String > &files)
 
static String readFile (String fname)
 
static int runPdfLatex (String dir)
 
static double toDouble (String s)
 

Detailed Description

Platform dependent methods.

Member Typedef Documentation

typedef void(* ipe::Platform::DebugHandler)(const char *)

Member Function Documentation

static FILE* ipe::Platform::fopen ( const char *  fname,
const char *  mode 
)
inlinestatic
int Platform::libVersion ( )
static

Return the Ipelib version.

This is available as a function so that one can verify what version of Ipelib one has actually linked with (as opposed to the header files used during compilation).

References ipe::IPELIB_VERSION.

void Platform::initLib ( int  version)
static

Initialize Ipelib.

This method must be called before Ipelib is used.

It creates a LC_NUMERIC locale set to 'C', which is necessary for correct loading and saving of Ipe objects. The method also checks that the correct version of Ipelib is loaded, and aborts with an error message if the version is not correct. Also enables ipeDebug messages if environment variable IPEDEBUG is defined. (You can override this using setDebug).

References ipe::IPELIB_VERSION.

void Platform::setDebug ( bool  debug)
static

Enable or disable display of ipeDebug messages.

String Platform::currentDirectory ( )
static

Returns current working directory.

Returns empty string if something fails.

String Platform::latexDirectory ( )
static

Returns directory for running Latex.

The directory is created if it does not exist. Returns an empty string if the directory cannot be found or cannot be created. The directory returned ends in the path separator.

References fileExists(), ipe::String::left(), ipe::String::right(), ipe::String::size(), and ipe::String::z().

Referenced by ipe::Document::runLatex().

String Platform::fontmapFile ( )
static

Returns filename of fontmap.

bool Platform::fileExists ( String  fname)
static

Determine whether file exists.

References ipe::String::z().

Referenced by latexDirectory().

bool Platform::listDirectory ( String  path,
std::vector< String > &  files 
)
static

List all files in directory.

Return true if successful, false on error.

References ipe::String::z().

String Platform::readFile ( String  fname)
static

Read entire file into string.

Returns an empty string if file cannot be found or read. There is no way to distinguish an empty file from this.

References ipe::String::append(), fopen(), and ipe::String::z().

Referenced by ipe::Bitmap::readJpeg(), and ipe::Document::runLatex().

int Platform::runPdfLatex ( String  dir)
static

Runs pdflatex on file text.tex in given directory.

References fopen(), ipe::Lex::getInt(), ipe::String::size(), ipe::String::substr(), and ipe::String::z().

Referenced by ipe::Document::runLatex().

double Platform::toDouble ( String  s)
static

The documentation for this class was generated from the following files:
  • ipebase.h
  • ipeplatform.cpp

ipe-7.1.10/build/doc/structipe_1_1_text_1_1_x_form-members.html0000644000175000017500000000754512624020245024161 0ustar otfriedotfried Ipelib: Member List
ipe::Text::XForm Member List

ipe-7.1.10/build/doc/classipe_1_1_inflate_source-members.html0000644000175000017500000000663612624020245023746 0ustar otfriedotfried Ipelib: Member List
ipe::InflateSource Member List

This is the complete list of members for ipe::InflateSource, including all inherited members.

getChar()ipe::InflateSourcevirtual
InflateSource(DataSource &source)ipe::InflateSource
~DataSource()=0ipe::DataSourcepure virtual
~InflateSource()ipe::InflateSourcevirtual

ipe-7.1.10/build/doc/group__ipelet.html0000644000175000017500000000627112624020245017621 0ustar otfriedotfried Ipelib: The Ipelet interface
The Ipelet interface

Classes

class  ipe::Ipelet
 
class  ipe::IpeletHelper
 

Detailed Description

Implementation of Ipe plugins.

Ipelets are dynamically loaded plugins for Ipe written in Lua.

The Ipelet class makes it easy for ipelet authors to write ipelets in C++ without using Lua's C API. They only need to provide some boilerplate Lua code to define the labels and functions of the ipelet, and use the Lua function "loadIpelet" to load a DLL containing a C++ class derived from Ipelet. The run() method of this class can then be called from Lua. The C++ code has access to services provided by Ipe through an IpeletHelper object.

Ipelet derived classes are restricted to operate on the current page of the document, and cannot modify the StyleSheet or other properties of the document. If you wish to write an ipelet doing this, you need to work in Lua (or create a C++ library using the Lua C API).


ipe-7.1.10/build/doc/dir_7b54d492694b293bf8b54c70d2fe7f56.html0000644000175000017500000000705212624020245022145 0ustar otfriedotfried Ipelib: ipecairo Directory Reference
ipecairo Directory Reference

Files

file  ipecairopainter.cpp
 
file  ipecairopainter.h
 
file  ipefonts.cpp
 
file  ipefonts.h
 
file  ipestdfonts.cpp
 
file  ipethumbs.cpp
 
file  ipethumbs.h
 

ipe-7.1.10/build/doc/classipe_1_1_file_source-members.html0000644000175000017500000000610712624020245023234 0ustar otfriedotfried Ipelib: Member List
ipe::FileSource Member List

This is the complete list of members for ipe::FileSource, including all inherited members.

FileSource(std::FILE *file)ipe::FileSource
getChar()ipe::FileSourcevirtual
~DataSource()=0ipe::DataSourcepure virtual

ipe-7.1.10/build/doc/radgrad1.svg0000644000175000017500000000241612624020245016301 0ustar otfriedotfried ipe-7.1.10/build/doc/classipe_1_1_arc-members.html0000644000175000017500000001537612624020245021512 0ustar otfriedotfried Ipelib: Member List
ipe::Arc Member List

This is the complete list of members for ipe::Arc, including all inherited members.

Arc()ipe::Arcinline
Arc(const Matrix &m, Angle alpha, Angle beta)ipe::Arcinline
Arc(const Matrix &m)ipe::Arcinline
Arc(const Matrix &m0, const Vector &begp, const Vector &endp)ipe::Arc
bbox() const ipe::Arc
beginp() const ipe::Arcinline
distance(const Vector &v, double bound) const ipe::Arc
distance(const Vector &v, double bound, Vector &pos, Angle &angle) const ipe::Arc
endp() const ipe::Arcinline
iAlphaipe::Arc
iBetaipe::Arc
iMipe::Arc
intersect(const Line &l, std::vector< Vector > &result) const ipe::Arc
intersect(const Segment &s, std::vector< Vector > &result) const ipe::Arc
intersect(const Arc &a, std::vector< Vector > &result) const ipe::Arc
intersect(const Bezier &b, std::vector< Vector > &result) const ipe::Arc
isEllipse() const ipe::Arcinline

ipe-7.1.10/build/doc/classipe_1_1_pdf_dict-members.html0000644000175000017500000001727712624020245022523 0ustar otfriedotfried Ipelib: Member List
ipe::PdfDict Member List

This is the complete list of members for ipe::PdfDict, including all inherited members.

add(String key, const PdfObj *obj)ipe::PdfDict
array() const ipe::PdfObjvirtual
boolean() const ipe::PdfObjvirtual
count() const ipe::PdfDictinline
deflated() const ipe::PdfDict
dict() const ipe::PdfDictvirtual
get(String key, const PdfFile *file) const ipe::PdfDict
key(int index) const ipe::PdfDictinline
name() const ipe::PdfObjvirtual
null() const ipe::PdfObjvirtual
number() const ipe::PdfObjvirtual
PdfDict()ipe::PdfDictinlineexplicit
ref() const ipe::PdfObjvirtual
repr() const ipe::PdfObj
setStream(const Buffer &stream)ipe::PdfDict
stream() const ipe::PdfDictinline
string() const ipe::PdfObjvirtual
write(Stream &stream) const ipe::PdfDictvirtual
~PdfDict()ipe::PdfDict
~PdfObj()=0ipe::PdfObjpure virtual

ipe-7.1.10/build/doc/classipe_1_1_pdf_ref-members.html0000644000175000017500000001351112624020245022337 0ustar otfriedotfried Ipelib: Member List
ipe::PdfRef Member List

This is the complete list of members for ipe::PdfRef, including all inherited members.

array() const ipe::PdfObjvirtual
boolean() const ipe::PdfObjvirtual
dict() const ipe::PdfObjvirtual
name() const ipe::PdfObjvirtual
null() const ipe::PdfObjvirtual
number() const ipe::PdfObjvirtual
PdfRef(int val)ipe::PdfRefinlineexplicit
ref() const ipe::PdfRefvirtual
repr() const ipe::PdfObj
string() const ipe::PdfObjvirtual
value() const ipe::PdfRefinline
write(Stream &stream) const ipe::PdfRefvirtual
~PdfObj()=0ipe::PdfObjpure virtual

ipe-7.1.10/build/doc/classipe_1_1_color.html0000644000175000017500000005534512624020245020433 0ustar otfriedotfried Ipelib: ipe::Color Class Reference

#include <ipeattributes.h>

Public Member Functions

 Color ()
 
 Color (String str)
 
 Color (int r, int g, int b)
 
void save (Stream &stream) const
 
void saveRGB (Stream &stream) const
 
bool isGray () const
 
bool operator== (const Color &rhs) const
 
bool operator!= (const Color &rhs) const
 

Public Attributes

Fixed iRed
 
Fixed iGreen
 
Fixed iBlue
 

Related Functions

(Note that these are not member functions.)

Streamoperator<< (Stream &stream, const Color &attr)
 

Detailed Description

An absolute RGB color.

Constructor & Destructor Documentation

ipe::Color::Color ( )
inline

Default constructor.

Color::Color ( String  str)
explicit

Construct a color from a string.

If only a single number is given, this is a gray value, otherwise red, green, and blue components must be given.

References ipe::Lex::eos(), iBlue, iGreen, and iRed.

Color::Color ( int  red,
int  green,
int  blue 
)
explicit

Construct a color.

Arguments red, green, blue range from 0 to 1000.

References ipe::Fixed::fromInternal(), iBlue, iGreen, and iRed.

Member Function Documentation

void Color::save ( Stream stream) const

Save to stream.

References iBlue, iGreen, iRed, and isGray().

Referenced by operator<<().

void Color::saveRGB ( Stream stream) const

Save to stream in long format.

The RGB components are saved separately even for gray colors.

References iBlue, iGreen, and iRed.

Referenced by ipe::PdfPainter::drawAttributes().

bool Color::isGray ( ) const

is it an absolute gray value?

References iBlue, iGreen, and iRed.

Referenced by ipe::Latex::createLatexSource(), ipe::PdfPainter::drawColor(), and save().

bool Color::operator== ( const Color rhs) const

References iBlue, iGreen, and iRed.

bool ipe::Color::operator!= ( const Color rhs) const
inline

Friends And Related Function Documentation

Stream & operator<< ( Stream stream,
const Color attr 
)
related

References save().

Member Data Documentation


The documentation for this class was generated from the following files:
  • ipeattributes.h
  • ipeattributes.cpp

ipe-7.1.10/build/doc/classipe_1_1_fixed.html0000644000175000017500000005112412624020245020403 0ustar otfriedotfried Ipelib: ipe::Fixed Class Reference

#include <ipebase.h>

Public Member Functions

 Fixed (int val)
 
 Fixed ()
 
int toInt () const
 
double toDouble () const
 
int internal () const
 
Fixed mult (int a, int b) const
 
bool operator== (const Fixed &rhs) const
 
bool operator!= (const Fixed &rhs) const
 
bool operator< (const Fixed &rhs) const
 

Static Public Member Functions

static Fixed fromInternal (int val)
 
static Fixed fromDouble (double val)
 

Friends

Streamoperator<< (Stream &stream, const Fixed &f)
 

Related Functions

(Note that these are not member functions.)

Streamoperator<< (Stream &stream, const Fixed &f)
 

Detailed Description

Fixed point number with three (decimal) fractional digits.

Constructor & Destructor Documentation

ipe::Fixed::Fixed ( int  val)
inlineexplicit
ipe::Fixed::Fixed ( )
inlineexplicit

Member Function Documentation

Fixed ipe::Fixed::fromInternal ( int  val)
inlinestatic
Fixed Fixed::fromDouble ( double  val)
static

References fromInternal().

Referenced by ipe::Text::getAttribute().

int ipe::Fixed::toInt ( ) const
inline
int ipe::Fixed::internal ( ) const
inline
Fixed Fixed::mult ( int  a,
int  b 
) const

Return value times (a/b)

Referenced by ipe::Latex::createLatexSource().

bool ipe::Fixed::operator== ( const Fixed rhs) const
inline
bool ipe::Fixed::operator!= ( const Fixed rhs) const
inline
bool ipe::Fixed::operator< ( const Fixed rhs) const
inline

Friends And Related Function Documentation

Stream& operator<< ( Stream stream,
const Fixed f 
)
friend
Stream & operator<< ( Stream stream,
const Fixed f 
)
related

The documentation for this class was generated from the following files:
  • ipebase.h
  • ipebase.cpp

ipe-7.1.10/build/doc/classipe_1_1_curve_segment-members.html0000644000175000017500000001712312624020245023603 0ustar otfriedotfried Ipelib: Member List
ipe::CurveSegment Member List

This is the complete list of members for ipe::CurveSegment, including all inherited members.

addToBBox(Rect &box, const Matrix &m, bool cp) const ipe::CurveSegment
arc() const ipe::CurveSegment
beziers(std::vector< Bezier > &bez) const ipe::CurveSegment
countCP() const ipe::CurveSegmentinline
cp(int i) const ipe::CurveSegmentinline
Curve classipe::CurveSegmentfriend
distance(const Vector &v, const Matrix &m, double bound) const ipe::CurveSegment
draw(Painter &painter) const ipe::CurveSegment
EArc enum valueipe::CurveSegment
EOldSpline enum valueipe::CurveSegment
ESegment enum valueipe::CurveSegment
ESpline enum valueipe::CurveSegment
last() const ipe::CurveSegmentinline
matrix() const ipe::CurveSegmentinline
snapBnd(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::CurveSegment
snapVtx(const Vector &mouse, const Matrix &m, Vector &pos, double &bound, bool cp) const ipe::CurveSegment
type() const ipe::CurveSegmentinline
Type enum nameipe::CurveSegment

ipe-7.1.10/build/doc/manual_11.html0000644000175000017500000000735012624020245016541 0ustar otfriedotfried Ipe Manual -- 3.8 Zoom and pan
3.9 Groups3 General Concepts3.7 Symbolic and absolute attributes3.8 Zoom and pan

3.8 Zoom and pan

You can zoom in and out the current drawing using a mouse wheel or the zoom functions. The minimum and maximum resolution can be customized. Ipe displays the current resolution at the bottom right (behind the mouse coordinates).

Related are the functions Normal size (which sets the resolution to 72 pixels per inch), Fit page (which chooses the resolution so that the current page fills the canvas), Fit objects (which chooses the resolution such that the objects on the page fill the screen), and Fit selection (which does the same for the selected objects only). All of these are in the Zoom menu.

You can pan the drawing either with the mouse in Pan mode, or by pressing the "x" key ("here") with the mouse anywhere on the canvas. The drawing is then panned such that the cursor position is moved to the center of the canvas. This shortcut has the advantage that it also works while you are in the middle of any drawing operation. Since the same holds for the zoom in and zoom out buttons and keys, you can home in on any feature of your drawing while you are adding or editing another object.

ipe-7.1.10/build/doc/ftv2mo.png0000644000175000017500000000062312624020245016014 0ustar otfriedotfried‰PNG  IHDRÚ}\ˆZIDATxí1Kû@ÆiƒØB…Ò¡(h¬"EÄI'ÁoàªèÚ©ßÀáâä 8ùçR-‚â B«TPˆï]z¥B’3 _Þã’»ç}ŸË]VÇ÷}€ÌÈdIæ®i쟯JØ–b¸šÍÃõ+º™|KÂ…°,[Pï\ʘMÆ¢#€ä…F`JݤìÛk³úA±àþè?ØY4ck6"¹Z)ê¸0SHM¨@ï㋺WÖmo¼4èHJ¨Àÿö+…QobŒút ¤ú’*Ð~êè8_+3Y-ñðÜå½÷ ˜PwA¶+^ý}ºì£+xìhÏ•MAE]€TD~EÞߴ^R)`ÖAùŸÏ9©pÔq-Û¾õÛ3tÝÊÆ›ˆÃTÐHÈ)€ ½Š’ICªxëd#1ôú§é€ m@Vüý?Zæßgo_½3-³\IEND®B`‚ipe-7.1.10/build/doc/functions_vars_d.html0000644000175000017500000000663612624020245020337 0ustar otfriedotfried Ipelib: Class Members - Variables
 

- d -


ipe-7.1.10/build/doc/functions_h.html0000644000175000017500000001377012624020245017305 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- h -


ipe-7.1.10/build/doc/classipe_1_1_pdf_number.html0000644000175000017500000003045612624020245021432 0ustar otfriedotfried Ipelib: ipe::PdfNumber Class Reference
ipe::PdfNumber Class Reference

#include <ipepdfparser.h>

Inherits ipe::PdfObj.

Public Member Functions

 PdfNumber (double val)
 
virtual const PdfNumbernumber () const
 
virtual void write (Stream &stream) const
 
double value () const
 
- Public Member Functions inherited from ipe::PdfObj
virtual ~PdfObj ()=0
 
virtual const PdfNullnull () const
 
virtual const PdfBoolboolean () const
 
virtual const PdfStringstring () const
 
virtual const PdfNamename () const
 
virtual const PdfRefref () const
 
virtual const PdfArrayarray () const
 
virtual const PdfDictdict () const
 
String repr () const
 

Detailed Description

The PDF number object.

Constructor & Destructor Documentation

ipe::PdfNumber::PdfNumber ( double  val)
inlineexplicit

Member Function Documentation

const PdfNumber * PdfNumber::number ( ) const
virtual

Return this object as PDF number object.

Reimplemented from ipe::PdfObj.

void PdfNumber::write ( Stream stream) const
virtual

Implements ipe::PdfObj.

double ipe::PdfNumber::value ( ) const
inline

The documentation for this class was generated from the following files:
  • ipepdfparser.h
  • ipepdfparser.cpp

ipe-7.1.10/build/doc/functions_b.html0000644000175000017500000001704212624020245017273 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- b -


ipe-7.1.10/build/doc/polygon.pdf0000644000175000017500000001037112624020245016254 0ustar otfriedotfried%PDF-1.3 3 0 obj << /Length 196 /Filter /FlateDecode >> stream xÚ-»mƒ1 „{MÁ ¾)NÀ]’!bv‘*ëçôÕÀ;ò;Дë—”þ–`þúXJ?K«9µH»XÆéµrsõN²Þô\&ÃÞE¾¯Açšcœ¹¡¸ç.(ÁæåxžAá›§J:²ÊÉlqÈ‘Í:J¶×z8Øvi\9O޶3‘n,Ñ—Ò<Ø6 8ç*E¸ -À{“©ÙTyÀW mî:F×ʼn¹þ£=qzi£O‹`¸Ó÷ú\ÿêü>Œ endstream endobj 4 0 obj << /Type /Page /Contents 3 0 R /Resources << /ProcSet [ /PDF ] >> /MediaBox [ 0 0 595 842] /ArtBox [58.0785 64.9814 538.163 494.833] /Parent 2 0 R >> endobj 5 0 obj << /Length 262 /Filter /FlateDecode >> stream xÚR;N1 ìs ŸÀòßñ è€Ñ!T\gE/û$ªUlÏŒg¼·Àð6>QàkP¿ïoÃËàHtà ¤Rø>1r:ˆN6xB…š:©¿Ò•RœÆV‚î³+*>£+†¢Ú•ÕS70X™]qm­P©–XÌæ‰\ 2¹Ñ¼xzZ)¥X¾x$zÚ½ÕÉò¨$VO‹Xwʉ0¥]4ßs¶ª'„/âÃ'¦¬FÆÁcuìÃYh¶|q¶%êÇ+<Œ»NíÑž:±çAhÞ íÒþÇÉÚ×°—Aa÷èö þ¿ÛI€ÛAÿßÿ€kb¿`§:[ÀûéNµ¡–ü7Q+ŒÔ endstream endobj 6 0 obj << /Type /Page /Contents 5 0 R /Resources << /ProcSet [ /PDF ] >> /MediaBox [ 0 0 595 842] /ArtBox [58.0785 64.9814 538.163 494.833] /Parent 2 0 R >> endobj 7 0 obj << /Length 1261 /Filter /FlateDecode >> stream xÚW½Î,5 íç)RSD‰óÿHt@‰¨BLqix}Ž'±3Éî7¢ÚµçøØN;qæãÍ_Ç7ã-™g䟾?¼ùãð¹Øä³ñ%[ׂ9Tm.5JÍVÍß¹fCÉ&T‡_‚¦[£O&6²)Uhe›j†&Z þR41TÛJ&øÊÁ5¸`昊õͪ֞y€®À*Ø–˜‡2Ð)Á;YË¥)¶Mñ…­’s¶²ß`.ðšŠÉ‰‰¯,|±%6ÃJ¾xb»âñ¥Ù9/_O4Á9šŸ±j¿Ä_±b¿ÎF¬/Úžþù!ì¯l÷…údû¾tï õÿcû°€oº$þ^_9»™}ôó¶Àï[÷a£Þ¬ºûoFsÿƒTóžêÔ`qñÛ’­b!ñ‡sqºü:`êkÌá6·ú€…jœmÎe¨mõ1dXH‚ÈCÞ}üþ2þ˜3Çy/sj¢³9Ä+rÆè/€ÖÒ_»Í­LÂZD.`¡šb%iu1dvÑcP@ZíÓæàë|}I³ÂTð(ž‚‰8(cÇÅ2*1€ÎìQ ýªòn#¢c\¨áFæèfÔŠðñ_æëŽú‡´Ú¤É÷–7Ú+ J´Ôô958Ñ®56tg‚H@Á_88:.ßy%y¸` Ñ óñyôúÅÇa1‚€F=¶,ž2¨®g½«EîsªI6{oBh¶-†|!zÌ*¿Ð36íHAZ\°hÈòf)Û<85Bc[O'œŸûx;§&€%x“à<¶ ìŒÐ8äFdº¶h"âÆl!šŠ#WŒ2`Î,>†Ì# Ah܃aËãcΜ5·£ì–¹tÞ4󭚈iR1 ¨Æ 1'Y—Ñ,ŽúÎDÄ!.>ØbhP‡ÐH„³dñ1d¶QB¢†-§œÖe›àªI¶6°¹Ï• 0G~—QvÚ V‚°x`ÑàòäV¿¹ðj!A¢m móñн<-÷…ó¦Á¬GäÑ„Ø öŒó†Ñe´‡B7@^ Tvj04ز‚é(èE‹‡!Ã@b„Ä([O{Lhÿ÷»ÌyÓ[×N¤ç„Ò…˜·Ÿ.¿ú]y"òÊ 2©…h!ÖDP¤‹‹!Ã@‚„Ù ¶,ž2Î~½ôSƒ?±xƒ#xlS¦ ¡×Ä!£³ì%ŠH+ƒÊÃ,TS-.ïFR^} ùuhC3ãî {OuÍ}üL Š-]·Ü®Ç€ùZê2_!pbS»!âJl šh1ØÌ$›‹ Ä@hŒƒaËâqF¹°<”Λ¦õ ãpJ*¼a¡¯é O«!ó婿¦nbw†)µM¾&Œ2 />†Œº(†=§+$a}îoŽó¦A‹qµ,L¢r!æ+¥ËýdJ7DÜââƒ-DC8Äý´w¿ùðj!Q „F9¶<s&·ØbhЀ}C&ƒ¡¤Õ‡ÈlÑ£P„Ä- [wôö’<§†§,.ö‘CçžQ;BßžCF¥²c¼\&"­ "§i14/¸k m>H-$ AH”°å¡9ÿPÚz endstream endobj 8 0 obj << /Type /Page /Contents 7 0 R /Resources << /ProcSet [ /PDF ] >> /MediaBox [ 0 0 595 842] /ArtBox [54.9785 61.8814 541.263 497.933] /Parent 2 0 R >> endobj 1 0 obj << /Type /Ipe /Length 1194 /Filter /FlateDecode >> stream xÚÅXMoã6½çWº[懾\Ä hÑ=ì©×ºÆ¡m!”èJtwÑÿÞ!%Ë”Dmgï9|œ÷8 ©Üç{žEUçª\)†ZW‚kU-Ô ~‚/w÷y¹Q͈x\¿ýB1ŽpŒ%ã,@…zÌ7y7–JJ£Œ°íùVÀ¸X›ƒ”5xe07N÷¢ÖG) Y‹%QÉ €¼zš¯ój--÷žëÚäR.€Íj]©' ˼Ü.ƒRU—Äa‚°ùß>X¢Öµ–û¹ñNç £—ú1¯×#¾ˆfsâÙVê°Ÿæ3–ê ašP¦ýÑ¥h&]NÇî$øG«{P¯Á‡Ö43‹±?Å]×”ÍRmkvnîL'Bö§¸ëš²Y…mÍÎÍÝeûSÿsàÕ»2ð}’/K’³Š§É{ôá+¢yYf]»U—dݺRu}A°¼¢˜‘§V<¬ÅêbȬ2xÎÚ‘é•¿Aã²Ì\šYgLã‰Á^”mv‚?ç¢ Ð3—èã0³eöŒØpÝ’FRWÜ…4€†©Îÿ-Nòj+:PìÕ°^ù–'—GG±(^Uêe’Ž`/¨O{1=6f!k%UÕWâñÌbJÞ±µ'W^D<˜s AŽBJõâp/?g+ ½ê`& ̰ԉŒ;ˆd‚)q0D©›ž-æ‘×;{hq¦ïlÆ_Ñßm€F@¥µ $ˆMB¡†øQ>}kÎÔîñ&Ž·ì³ôc3N…qjö·q”ËŸ%Ö¥õ ç›'‹G9;žÕé?Ôâ””mÍøÑbàªYÖ#V窄’c ²é£¯q´W€l„JlwØžâc.róVÐO—0È¿[Hpvözˆ]’bhD±Ù\v¥ŠA¶L(ÙvìñjI`†Ñn¯°¦+µ ÇuZ>º-ƒÃä6"ÅpB„=ƒ?MÃe»ñ¹eø6›1(º7 Dÿ¼¹Í^ô/t7z1ú²[%Ä%5ósó¥ó&ÇgÿFñV>ÎÛ¯%óõåîü‘M¹ endstream endobj 2 0 obj << /Type /Pages /Count 3 /Kids [ 4 0 R 6 0 R 8 0 R ] >> endobj 9 0 obj << /Type /Catalog /Pages 2 0 R /PageMode /FullScreen /PageLabels << /Nums [ 0 <>] >> >> endobj 10 0 obj << /Creator (ipetoipe) /Producer (ipetoipe) /CreationDate (D:20040503211008) /ModDate (D:20061216224813) >> endobj xref 0 11 0000000000 00000 f 0000002455 00000 n 0000003733 00000 n 0000000009 00000 n 0000000277 00000 n 0000000447 00000 n 0000000781 00000 n 0000000951 00000 n 0000002285 00000 n 0000003804 00000 n 0000003922 00000 n trailer << /Size 11 /Root 9 0 R /Info 10 0 R >> startxref 4046 %%EOF ipe-7.1.10/build/doc/classipe_1_1_angle.html0000644000175000017500000003027412624020245020375 0ustar otfriedotfried Ipelib: ipe::Angle Class Reference

#include <ipegeo.h>

Public Member Functions

 Angle ()
 
 Angle (double alpha)
 
 operator double () const
 
double degrees () const
 
Angle normalize (double lowlimit)
 
bool liesBetween (Angle small, Angle large) const
 

Static Public Member Functions

static Angle Degrees (double alpha)
 

Detailed Description

A double that's an angle.

An Angle is really nothing more than a double. Having a separate type is sometimes useful, for instance in the Vector constructor, and this class serves as the right place for a few utility functions. It also makes it clear whether a value is in radians or in degrees.

Constructor & Destructor Documentation

ipe::Angle::Angle ( )
inlineexplicit

Construct uninitialized angle.

Referenced by Degrees().

ipe::Angle::Angle ( double  alpha)
inline

Construct an angle (in radians).

Member Function Documentation

static Angle ipe::Angle::Degrees ( double  alpha)
inlinestatic

Construct an angle in degrees.

References Angle().

Referenced by ipe::ImlParser::parseStyle().

ipe::Angle::operator double ( ) const
inline

Return value (in radians).

double Angle::degrees ( ) const
Angle Angle::normalize ( double  lowlimit)

Normalize the value to the range lowlimit .. lowlimit + 2 pi.

This Angle object is modified, a copy is returned.

Referenced by ipe::Painter::doDrawArc(), ipe::Snap::getLine(), and liesBetween().

bool Angle::liesBetween ( Angle  small,
Angle  large 
) const

When considering the positively oriented circle arc from angle small to large, does it cover this angle?

References normalize().

Referenced by ipe::Arc::bbox(), ipe::Arc::distance(), and ipe::Arc::intersect().


The documentation for this class was generated from the following files:
  • ipegeo.h
  • ipegeo.cpp

ipe-7.1.10/build/doc/manual_3.html0000644000175000017500000001074212624020245016461 0ustar otfriedotfried Ipe Manual -- 3 General Concepts
4 Object typesTop2 About Ipe files3 General Concepts

3 General Concepts

After you start up Ipe, you will see a window with a large gray area containing a white rectangle. This area, the canvas, is the drawing area where you will create your figures. The white rectangle is your "sheet of paper", the first page of your document. (While Ipe doesn't stop you from drawing outside the paper, such documents generally do not print very well.)

At the top of the window, above the canvas, you find two toolbars: one for snapping modes, grid size and angular resolution; and another one to select the current mode.

On the left hand side of the canvas you find an area where you can select object properties such as stroke and fill color, pen width, path properties, text size, and mark size. Below it is a list of the layers of the current page.

All user interface elements have tool tips—if you move the mouse over them and wait a few seconds, a short explanation will appear. The mode toolbar allows you to set the current Ipe mode. Roughly speaking, the mode determines what the left mouse button will do when you click it in the figure. The leftmost five buttons select modes for selecting and transforming objects, the remaining buttons select modes for creating new objects.

Pressing the right mouse button pops up the object context menu in any mode.

In this chapter we will discuss the general concepts of Ipe. Understanding these properly will be essential if you want to get the most out of Ipe.

ipe-7.1.10/build/doc/classipe_1_1_all_attributes-members.html0000644000175000017500000002237612624020245023761 0ustar otfriedotfried Ipelib: Member List
ipe::AllAttributes Member List

ipe-7.1.10/build/doc/classipe_1_1_object.html0000644000175000017500000023571312624020245020562 0ustar otfriedotfried Ipelib: ipe::Object Class Reference

#include <ipeobject.h>

Inherited by ipe::Group, ipe::Image, ipe::Path, ipe::Reference, and ipe::Text.

Public Types

enum  Type {
  EGroup, EPath, EText, EImage,
  EReference
}
 

Public Member Functions

virtual ~Object ()=0
 
virtual void accept (Visitor &visitor) const =0
 
virtual Objectclone () const =0
 
virtual GroupasGroup ()
 
virtual TextasText ()
 
virtual PathasPath ()
 
virtual ImageasImage ()
 
virtual ReferenceasReference ()
 
virtual Type type () const =0
 
virtual TPinned pinned () const
 
void setPinned (TPinned pin)
 
TTransformations transformations () const
 
void setTransformations (TTransformations trans)
 
void setMatrix (const Matrix &matrix)
 
const Matrixmatrix () const
 
virtual bool setAttribute (Property prop, Attribute value)
 
virtual Attribute getAttribute (Property prop)
 
virtual void saveAsXml (Stream &stream, String layer) const =0
 
virtual void draw (Painter &painter) const =0
 
virtual void drawSimple (Painter &painter) const =0
 
virtual double distance (const Vector &v, const Matrix &m, double bound) const =0
 
virtual void addToBBox (Rect &box, const Matrix &m, bool cp) const =0
 
virtual void snapVtx (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
virtual void snapCtl (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
virtual void snapBnd (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
virtual void checkStyle (const Cascade *sheet, AttributeSeq &seq) const
 

Protected Member Functions

 Object ()
 
 Object (const AllAttributes &attr)
 
 Object (const Object &rhs)
 
 Object (const XmlAttributes &attr)
 
void saveAttributesAsXml (Stream &stream, String layer) const
 

Static Protected Member Functions

static void checkSymbol (Kind kind, Attribute attr, const Cascade *sheet, AttributeSeq &seq)
 

Protected Attributes

Matrix iMatrix
 
TPinned iPinned: 8
 
TTransformations iTransformations: 8
 

Detailed Description

Base class for all Ipe objects, composite or leaf.

All objects are derived from this class. It provides functionality common to all objects, and carries the standard attributes.

All Object's provide a constant time copy constructor (and a virtual Object::clone() method). Objects of non-constant size realize this by separating the implementation and using reference counting. In particular, copying a composite object does not create new copies of the components.

Object has only three attributes: the transformation matrix, the pinning status, and the allowed transformations.

If an object is pinned, it cannot be moved at all (or only in the non-pinned direction) from the Ipe user interface.

Restricting the allowed transformations works somewhat differently: It doesn't stop transformations being applied to the object, but they only effect the position of the reference point (the origin of the object coordinate system), and (if transformations() == ETransformationsRigidMotions) the orientation of the object coordinate system.

Member Enumeration Documentation

Enumerator
EGroup 
EPath 
EText 
EImage 
EReference 

Constructor & Destructor Documentation

Object::~Object ( )
pure virtual

Pure virtual destructor.

Object::Object ( )
explicitprotected

Create object with identity matrix, no pinning, all transformations.

References ipe::ENoPin, ipe::ETransformationsAffine, iPinned, and iTransformations.

Object::Object ( const AllAttributes attr)
explicitprotected

Create object by taking pinning/transforming from attr and setting identity matrix.

References iPinned, ipe::AllAttributes::iPinned, iTransformations, and ipe::AllAttributes::iTransformations.

Object::Object ( const Object rhs)
protected

Copy constructor.

References iMatrix, iPinned, and iTransformations.

Object::Object ( const XmlAttributes attr)
explicitprotected

Construct from XML stream.

Member Function Documentation

virtual void ipe::Object::accept ( Visitor visitor) const
pure virtual
virtual Object* ipe::Object::clone ( ) const
pure virtual

Make a copy of this object (constant-time).

Implemented in ipe::Group, ipe::Reference, ipe::Text, ipe::Path, and ipe::Image.

Referenced by ipe::Symbol::operator=(), and ipe::Symbol::Symbol().

Group * Object::asGroup ( )
virtual

Return pointer to this object if it is an Group, 0 otherwise.

Reimplemented in ipe::Group.

Text * Object::asText ( )
virtual

Return pointer to this object if it is an Text, 0 otherwise.

Reimplemented in ipe::Text.

Path * Object::asPath ( )
virtual

Return pointer to this object if it is an Path, 0 otherwise.

Reimplemented in ipe::Path.

Image * Object::asImage ( )
virtual

Return pointer to this object if it is an Image , 0 otherwise.

Reimplemented in ipe::Image.

Reference * Object::asReference ( )
virtual

Return pointer to this object if it is an Ref, 0 otherwise.

Reimplemented in ipe::Reference.

virtual Type ipe::Object::type ( ) const
pure virtual
TPinned Object::pinned ( ) const
virtual

Return pinning mode of the object.

Reimplemented in ipe::Group.

References iPinned.

Referenced by getAttribute(), ipe::Group::pinned(), ipe::Group::push_back(), and ipe::TransformTool::TransformTool().

void Object::setPinned ( TPinned  pin)

Set pinning mode of the object.

References iPinned.

void Object::setTransformations ( TTransformations  trans)

Set allowed transformations of the object.

References iTransformations.

Referenced by ipe::Text::setAttribute().

void Object::setMatrix ( const Matrix matrix)

Set the transformation matrix.

Don't use this on an Object in a Page, because it wouldn't invalidate its bounding box. Call Page::transform instead.

References iMatrix, and matrix().

Referenced by ipe::Page::applyTitleStyle(), and ipe::Page::transform().

bool Object::setAttribute ( Property  prop,
Attribute  value 
)
virtual
Attribute Object::getAttribute ( Property  prop)
virtual

Get setting of an attribute of this object.

If object does not have this attribute, returnes "undefined" attribute.

Reimplemented in ipe::Path, ipe::Reference, and ipe::Text.

References ipe::EPropPinned, ipe::EPropTransformations, iTransformations, pinned(), and ipe::Attribute::UNDEFINED().

Referenced by ipe::Text::getAttribute(), ipe::Reference::getAttribute(), and ipe::Path::getAttribute().

virtual void ipe::Object::saveAsXml ( Stream stream,
String  layer 
) const
pure virtual

Save the object in XML format.

Implemented in ipe::Path, ipe::Group, ipe::Reference, ipe::Text, and ipe::Image.

virtual void ipe::Object::drawSimple ( Painter painter) const
pure virtual

Draw simple version for selecting and transforming.

Implemented in ipe::Path, ipe::Group, ipe::Reference, ipe::Text, and ipe::Image.

Referenced by ipe::PanTool::draw(), ipe::SelectTool::draw(), ipe::TransformTool::draw(), and ipe::CanvasBase::drawTool().

virtual double ipe::Object::distance ( const Vector v,
const Matrix m,
double  bound 
) const
pure virtual

Return distance of transformed object to point v. If larger than bound, can just return bound.

Implemented in ipe::Path, ipe::Group, ipe::Text, ipe::Reference, and ipe::Image.

Referenced by ipe::Page::distance().

virtual void ipe::Object::addToBBox ( Rect box,
const Matrix m,
bool  cp 
) const
pure virtual

Extend box to include the object transformed by m.

For objects in a page, don't call this directly. The Page caches the bounding box of each object, so it is far more efficient to call Page::bbox.

Control points that lie outside the visual object are included if cp is true.

If called with an empty box and cp == false, the result of this function is a tight bounding box for the object, with a little leeway in case the boundary is determined by a spline (it has to be approximated to perform this operation).

Implemented in ipe::Path, ipe::Group, ipe::Text, ipe::Reference, and ipe::Image.

Referenced by ipe::SelectTool::mouseButton().

void Object::snapVtx ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
virtual

Compute vertex snapping position for transformed object.

Looks only for positions closer than bound. If successful, modify pos and bound. The default implementation does nothing.

Reimplemented in ipe::Path, ipe::Group, and ipe::Reference.

Referenced by ipe::Page::snapVtx().

void Object::snapCtl ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
virtual

Compute control point snapping position for transformed object.

Looks only for positions closer than bound. If successful, modify pos and bound. The default implementation does nothing.

Reimplemented in ipe::Path, ipe::Group, ipe::Text, and ipe::Image.

Referenced by ipe::Page::snapCtl().

void Object::snapBnd ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
virtual

Compute boundary snapping position for transformed object.

Looks only for positions closer than bound. If successful, modify pos and bound. The default implementation does nothing.

Reimplemented in ipe::Path, ipe::Group, and ipe::Reference.

Referenced by ipe::Page::snapBnd().

void Object::checkStyle ( const Cascade sheet,
AttributeSeq seq 
) const
virtual

Check all symbolic attributes.

Reimplemented in ipe::Path, ipe::Group, ipe::Reference, and ipe::Text.

Referenced by ipe::Document::checkStyle().

void Object::checkSymbol ( Kind  kind,
Attribute  attr,
const Cascade sheet,
AttributeSeq seq 
)
staticprotected

Check whether attribute is either absolute or defined in the style sheet cascade sheet. Add attr to seq if this is not the case.

References ipe::Cascade::findDefinition(), and ipe::Attribute::isSymbolic().

Referenced by ipe::Text::checkStyle(), ipe::Reference::checkStyle(), and ipe::Path::checkStyle().

Member Data Documentation

Matrix ipe::Object::iMatrix
protected
TPinned ipe::Object::iPinned
protected

The documentation for this class was generated from the following files:
  • ipeobject.h
  • ipeobject.cpp

ipe-7.1.10/build/doc/classipe_1_1_attribute-members.html0000644000175000017500000004724712624020245022752 0ustar otfriedotfried Ipelib: Member List
ipe::Attribute Member List

This is the complete list of members for ipe::Attribute, including all inherited members.

ARROW_ARC()ipe::Attributeinlinestatic
ARROW_FARC()ipe::Attributeinlinestatic
ARROW_FPTARC()ipe::Attributeinlinestatic
ARROW_NORMAL()ipe::Attributeinlinestatic
ARROW_PTARC()ipe::Attributeinlinestatic
Attribute()ipe::Attributeinlineexplicit
Attribute(bool symbolic, String name)ipe::Attributeexplicit
Attribute(Fixed value)ipe::Attributeexplicit
Attribute(Color color)ipe::Attributeexplicit
Attribute(THorizontalAlignment align)ipe::Attributeinlineexplicit
Attribute(TVerticalAlignment align)ipe::Attributeinlineexplicit
Attribute(TLineJoin join)ipe::Attributeinlineexplicit
Attribute(TLineCap cap)ipe::Attributeinlineexplicit
Attribute(TFillRule rule)ipe::Attributeinlineexplicit
Attribute(TPinned pin)ipe::Attributeinlineexplicit
Attribute(TTransformations trans)ipe::Attributeinlineexplicit
Attribute(TPathMode pm)ipe::Attributeinlineexplicit
BACKGROUND()ipe::Attributeinlinestatic
BLACK()ipe::Attributeinlinestatic
Boolean(bool flag)ipe::Attributeinlinestatic
boolean() const ipe::Attributeinline
color() const ipe::Attribute
fillRule() const ipe::Attributeinline
horizontalAlignment() const ipe::Attributeinline
index() const ipe::Attributeinline
internal() const ipe::Attributeinline
isArcArrow() const ipe::Attributeinline
isBoolean() const ipe::Attributeinline
isColor() const ipe::Attributeinline
isEnum() const ipe::Attributeinline
isNormal() const ipe::Attributeinline
isNumber() const ipe::Attributeinline
isString() const ipe::Attributeinline
isSymbolic() const ipe::Attributeinline
lineCap() const ipe::Attributeinline
lineJoin() const ipe::Attributeinline
makeColor(String str, Attribute deflt)ipe::Attributestatic
makeDashStyle(String str)ipe::Attributestatic
makeScalar(String str, Attribute deflt)ipe::Attributestatic
makeTextSize(String str)ipe::Attributestatic
normal(Kind kind)ipe::Attributestatic
NORMAL()ipe::Attributeinlinestatic
number() const ipe::Attribute
ONE()ipe::Attributeinlinestatic
OPAQUE()ipe::Attributeinlinestatic
operator!=(const Attribute &rhs) const ipe::Attributeinline
operator==(const Attribute &rhs) const ipe::Attributeinline
pathMode() const ipe::Attributeinline
pinned() const ipe::Attributeinline
string() const ipe::Attribute
StyleSheet classipe::Attributefriend
SYM_FILL()ipe::Attributeinlinestatic
SYM_PEN()ipe::Attributeinlinestatic
SYM_STROKE()ipe::Attributeinlinestatic
transformations() const ipe::Attributeinline
UNDEFINED()ipe::Attributeinlinestatic
verticalAlignment() const ipe::Attributeinline
WHITE()ipe::Attributeinlinestatic

ipe-7.1.10/build/doc/functions_vars_t.html0000644000175000017500000000752112624020245020351 0ustar otfriedotfried Ipelib: Class Members - Variables
 

- t -


ipe-7.1.10/build/doc/classipe_1_1_canvas_observer-members.html0000644000175000017500000000754012624020245024121 0ustar otfriedotfried Ipelib: Member List
ipe::CanvasObserver Member List

ipe-7.1.10/build/doc/classipe_1_1_buffer_source.html0000644000175000017500000001366012624020245022140 0ustar otfriedotfried Ipelib: ipe::BufferSource Class Reference
ipe::BufferSource Class Reference

#include <ipebase.h>

Inherits ipe::DataSource.

Public Member Functions

 BufferSource (const Buffer &buffer)
 
virtual int getChar ()
 
- Public Member Functions inherited from ipe::DataSource
virtual ~DataSource ()=0
 

Detailed Description

Data source for parsing from a buffer.

Constructor & Destructor Documentation

BufferSource::BufferSource ( const Buffer buffer)

Member Function Documentation

int BufferSource::getChar ( )
virtual

Get one more character, or EOF.

Implements ipe::DataSource.

References ipe::Buffer::size().


The documentation for this class was generated from the following files:
  • ipebase.h
  • ipebase.cpp

ipe-7.1.10/build/doc/functions_z.html0000644000175000017500000001123012624020245017314 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- z -


ipe-7.1.10/build/doc/functions_e.html0000644000175000017500000005670012624020245017302 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- e -


ipe-7.1.10/build/doc/tab_h.png0000644000175000017500000000026112624020245015652 0ustar otfriedotfried‰PNG  IHDR$ÇÇ[xIDATxíÝMÁ@†áž~¥ÜÆÎ’Evˆ¿"!•²‘d*×rGq=Š{¼ßSݧçë­ÓÉHÇ uO^õø[À_‡¢ãXvyËþÒ±=·VCffææ{°öŠó´Rçœ%_õçÿŽ¢ö·°Çrug¶(?gh\i>|sIEND®B`‚ipe-7.1.10/build/doc/manual_12.html0000644000175000017500000000610212624020245016534 0ustar otfriedotfried Ipe Manual -- 3.9 Groups
3.10 Layers3 General Concepts3.8 Zoom and pan3.9 Groups

3.9 Groups

It is often convenient to treat a collection of objects as a single object. This can be achieved by grouping objects. The result is a geometric object, which can be moved, scaled, rotated etc. as a whole. To edit its parts or to move parts of it with respect to others, however, you have to un-group the object, which decomposes it into its component objects. To un-group a group object, select it, bring up the object menu, and select the Ungroup function.

Group objects can be elements of other groups, so you can create a hierarchy of objects.

You can also add a clipping path to a group, which will restrict the drawing of the group to the area inside the clipping path.

ipe-7.1.10/build/doc/ipe.dtd0000644000175000017500000001321212624020245015341 0ustar otfriedotfried ipe-7.1.10/build/doc/classipe_1_1_buffer-members.html0000644000175000017500000001222012624020245022177 0ustar otfriedotfried Ipelib: Member List
ipe::Buffer Member List

This is the complete list of members for ipe::Buffer, including all inherited members.

Buffer()ipe::Buffer
Buffer(const Buffer &rhs)ipe::Buffer
Buffer(int size)ipe::Bufferexplicit
Buffer(const char *data, int size)ipe::Bufferexplicit
data()ipe::Bufferinline
data() const ipe::Bufferinline
operator=(const Buffer &rhs)ipe::Buffer
operator[](int index)ipe::Bufferinline
operator[](int index) const ipe::Bufferinline
size() const ipe::Bufferinline
~Buffer()ipe::Buffer

ipe-7.1.10/build/doc/structipe_1_1_select_tool_1_1_s_obj-members.html0000644000175000017500000000560712624020245025310 0ustar otfriedotfried Ipelib: Member List
ipe::SelectTool::SObj Member List

This is the complete list of members for ipe::SelectTool::SObj, including all inherited members.

distanceipe::SelectTool::SObj
indexipe::SelectTool::SObj

ipe-7.1.10/build/doc/structipe_1_1_style_sheet_1_1_title_style.html0000644000175000017500000002470012624020245025134 0ustar otfriedotfried Ipelib: ipe::StyleSheet::TitleStyle Struct Reference
ipe::StyleSheet::TitleStyle Struct Reference

#include <ipestyle.h>

Public Attributes

bool iDefined
 
Vector iPos
 
Attribute iSize
 
Attribute iColor
 
THorizontalAlignment iHorizontalAlignment
 
TVerticalAlignment iVerticalAlignment
 

Detailed Description

Style of the title on a page.

Member Data Documentation

bool ipe::StyleSheet::TitleStyle::iDefined
Vector ipe::StyleSheet::TitleStyle::iPos

Position on the page (in Ipe coordinate system)

Referenced by ipe::Page::applyTitleStyle(), ipe::ImlParser::parseStyle(), and ipe::StyleSheet::saveAsXml().

Attribute ipe::StyleSheet::TitleStyle::iSize
Attribute ipe::StyleSheet::TitleStyle::iColor
THorizontalAlignment ipe::StyleSheet::TitleStyle::iHorizontalAlignment
TVerticalAlignment ipe::StyleSheet::TitleStyle::iVerticalAlignment

The documentation for this struct was generated from the following file:
  • ipestyle.h

ipe-7.1.10/build/doc/classipe_1_1_pdf_writer-members.html0000644000175000017500000001023712624020245023101 0ustar otfriedotfried Ipelib: Member List
ipe::PdfWriter Member List

This is the complete list of members for ipe::PdfWriter, including all inherited members.

createBookmarks()ipe::PdfWriter
createPages()ipe::PdfWriter
createPageView(int page, int view)ipe::PdfWriter
createTrailer()ipe::PdfWriter
createXmlStream(String xmldata, bool preCompressed)ipe::PdfWriter
PdfWriter(TellStream &stream, const Document *doc, const FontPool *pool, bool markedView, int fromPage, int toPage, int compression)ipe::PdfWriter
~PdfWriter()ipe::PdfWriter

ipe-7.1.10/build/doc/classipe_1_1_group-members.html0000644000175000017500000004360412624020245022074 0ustar otfriedotfried Ipelib: Member List
ipe::Group Member List

This is the complete list of members for ipe::Group, including all inherited members.

accept(Visitor &visitor) const ipe::Groupvirtual
addToBBox(Rect &box, const Matrix &m, bool cp) const ipe::Groupvirtual
asGroup()ipe::Groupvirtual
asImage()ipe::Objectvirtual
asPath()ipe::Objectvirtual
asReference()ipe::Objectvirtual
asText()ipe::Objectvirtual
begin() const ipe::Groupinline
checkStyle(const Cascade *sheet, AttributeSeq &seq) const ipe::Groupvirtual
checkSymbol(Kind kind, Attribute attr, const Cascade *sheet, AttributeSeq &seq)ipe::Objectprotectedstatic
clip() const ipe::Groupinline
clone() const ipe::Groupvirtual
const_iterator typedefipe::Group
count() const ipe::Groupinline
distance(const Vector &v, const Matrix &m, double bound) const ipe::Groupvirtual
draw(Painter &painter) const ipe::Groupvirtual
drawSimple(Painter &painter) const ipe::Groupvirtual
EGroup enum valueipe::Object
EImage enum valueipe::Object
end() const ipe::Groupinline
EPath enum valueipe::Object
EReference enum valueipe::Object
EText enum valueipe::Object
getAttribute(Property prop)ipe::Objectvirtual
Group()ipe::Groupexplicit
Group(const Group &rhs)ipe::Group
Group(const XmlAttributes &attr)ipe::Groupexplicit
iMatrixipe::Objectprotected
iPinnedipe::Objectprotected
iTransformationsipe::Objectprotected
matrix() const ipe::Objectinline
object(int i) const ipe::Groupinline
Object()ipe::Objectexplicitprotected
Object(const AllAttributes &attr)ipe::Objectexplicitprotected
Object(const Object &rhs)ipe::Objectprotected
Object(const XmlAttributes &attr)ipe::Objectexplicitprotected
operator=(const Group &rhs)ipe::Group
pinned() const ipe::Groupvirtual
push_back(Object *)ipe::Group
saveAsXml(Stream &stream, String layer) const ipe::Groupvirtual
saveAttributesAsXml(Stream &stream, String layer) const ipe::Objectprotected
saveComponentsAsXml(Stream &stream) const ipe::Group
setAttribute(Property prop, Attribute value)ipe::Groupvirtual
setClip(const Shape &clip)ipe::Group
setMatrix(const Matrix &matrix)ipe::Object
setPinned(TPinned pin)ipe::Object
setTransformations(TTransformations trans)ipe::Object
snapBnd(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Groupvirtual
snapCtl(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Groupvirtual
snapVtx(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Groupvirtual
transformations() const ipe::Objectinline
type() const ipe::Groupvirtual
Type enum nameipe::Object
~Group()ipe::Groupvirtual
~Object()=0ipe::Objectpure virtual

ipe-7.1.10/build/doc/classipe_1_1_canvas_base-members.html0000644000175000017500000006617712624020245023217 0ustar otfriedotfried Ipelib: Member List
ipe::CanvasBase Member List

This is the complete list of members for ipe::CanvasBase, including all inherited members.

additionalModifiers() const ipe::CanvasBaseinline
CanvasBase()ipe::CanvasBaseprotected
canvasHeight() const ipe::CanvasBaseinline
canvasStyle() const ipe::CanvasBaseinline
canvasTfm() const ipe::CanvasBase
canvasWidth() const ipe::CanvasBaseinline
cascade() const ipe::CanvasBaseinline
center() const ipe::CanvasBaseinline
computeFifi(double x, double y)ipe::CanvasBaseprotected
devToUser(const Vector &arg) const ipe::CanvasBase
drawAxes(cairo_t *cc)ipe::CanvasBaseprotected
drawFifi(cairo_t *cr)ipe::CanvasBaseprotected
drawFrame(cairo_t *cc)ipe::CanvasBaseprotected
drawGrid(cairo_t *cc)ipe::CanvasBaseprotected
drawObjects(cairo_t *cc)ipe::CanvasBaseprotected
drawPaper(cairo_t *cc)ipe::CanvasBaseprotected
drawTool(Painter &painter)ipe::CanvasBaseprotected
EAlt enum valueipe::CanvasBase
EControl enum valueipe::CanvasBase
ECrossCursor enum valueipe::CanvasBase
EDotCursor enum valueipe::CanvasBase
EHandCursor enum valueipe::CanvasBase
EMeta enum valueipe::CanvasBase
EShift enum valueipe::CanvasBase
EStandardCursor enum valueipe::CanvasBase
finishTool()ipe::CanvasBase
globalPos() const ipe::CanvasBaseinline
iAdditionalModifiersipe::CanvasBaseprotected
iAutoOriginipe::CanvasBaseprotected
iAutoSnapipe::CanvasBaseprotected
iCascadeipe::CanvasBaseprotected
iDimmedipe::CanvasBaseprotected
iFifiModeipe::CanvasBaseprotected
iFifiVisibleipe::CanvasBaseprotected
iFontsipe::CanvasBaseprotected
iGlobalPosipe::CanvasBaseprotected
iHeightipe::CanvasBaseprotected
iMousePosipe::CanvasBaseprotected
invalidate(int x, int y, int w, int h)=0ipe::CanvasBasepure virtual
invalidate()=0ipe::CanvasBaseprotectedpure virtual
iObserveripe::CanvasBaseprotected
iOldFifiipe::CanvasBaseprotected
iPageipe::CanvasBaseprotected
iPageNumberipe::CanvasBaseprotected
iPanipe::CanvasBaseprotected
iRepaintObjectsipe::CanvasBaseprotected
iRetinaipe::CanvasBaseprotected
iSelectionVisibleipe::CanvasBaseprotected
iSnapipe::CanvasBaseprotected
iStyleipe::CanvasBaseprotected
iSurfaceipe::CanvasBaseprotected
iToolipe::CanvasBaseprotected
iUnsnappedMousePosipe::CanvasBaseprotected
iViewipe::CanvasBaseprotected
iWidthipe::CanvasBaseprotected
iZoomipe::CanvasBaseprotected
pan() const ipe::CanvasBaseinline
pos() const ipe::CanvasBaseinline
refreshSurface()ipe::CanvasBaseprotected
selectPageOrView(Document *doc, int page=-1, int startIndex=0, int pageWidth=240, int width=600, int height=480)ipe::CanvasBasestatic
setAdditionalModifiers(int mod)ipe::CanvasBase
setAutoOrigin(const Vector &v)ipe::CanvasBase
setCanvasStyle(const Style &style)ipe::CanvasBase
setCursor(TCursor cursor, double w=1.0, Color *color=0)=0ipe::CanvasBasepure virtual
setDimmed(bool dimmed)ipe::CanvasBase
setFifiVisible(bool visible)ipe::CanvasBase
setFontPool(const FontPool *fontPool)ipe::CanvasBase
setObserver(CanvasObserver *observer)ipe::CanvasBase
setPage(const Page *page, int pno, int view, const Cascade *sheet)ipe::CanvasBase
setPan(const Vector &v)ipe::CanvasBase
setRetina(int r)ipe::CanvasBase
setSelectionVisible(bool visible)ipe::CanvasBase
setSnap(const Snap &s)ipe::CanvasBase
setTool(Tool *tool)ipe::CanvasBase
setZoom(double zoom)ipe::CanvasBase
simpleSnapPos() const ipe::CanvasBase
snap() const ipe::CanvasBaseinline
snapToPaperAndFrame()ipe::CanvasBaseprotected
TCursor enum nameipe::CanvasBase
TModifiers enum nameipe::CanvasBase
tool()ipe::CanvasBaseinline
unsnappedPos() const ipe::CanvasBaseinline
update()ipe::CanvasBase
updateTool()ipe::CanvasBase
userToDev(const Vector &arg) const ipe::CanvasBase
zoom() const ipe::CanvasBaseinline
~CanvasBase()ipe::CanvasBasevirtual

ipe-7.1.10/build/doc/classipe_1_1_bitmap_1_1_m_render_data.html0000644000175000017500000000774412624020245024075 0ustar otfriedotfried Ipelib: ipe::Bitmap::MRenderData Class Reference
ipe::Bitmap::MRenderData Class Reference

#include <ipebitmap.h>

Inherited by RenderData.

Public Member Functions

virtual ~MRenderData ()
 

Detailed Description

Abstract base class for pixmap data stored by a client.

Constructor & Destructor Documentation

Bitmap::MRenderData::~MRenderData ( )
virtual

The documentation for this class was generated from the following files:
  • ipebitmap.h
  • ipebitmap.cpp

ipe-7.1.10/build/doc/functions_vars_y.html0000644000175000017500000000657512624020245020366 0ustar otfriedotfried Ipelib: Class Members - Variables
 

- y -


ipe-7.1.10/build/doc/namespacemembers_eval.html0000644000175000017500000003075312624020245021304 0ustar otfriedotfried Ipelib: Namespace Members
 

- e -

  • EAlignBaseline : ipe
  • EAlignBottom : ipe
  • EAlignHCenter : ipe
  • EAlignLeft : ipe
  • EAlignRight : ipe
  • EAlignTop : ipe
  • EAlignVCenter : ipe
  • EAngleSize : ipe
  • EArrowSize : ipe
  • EBevelJoin : ipe
  • EButtCap : ipe
  • EColor : ipe
  • EDashStyle : ipe
  • EDefaultCap : ipe
  • EDefaultJoin : ipe
  • EDefaultRule : ipe
  • EEffect : ipe
  • EEvenOddRule : ipe
  • EFilledOnly : ipe
  • EFixedPin : ipe
  • EGradient : ipe
  • EGridSize : ipe
  • EHorizontalPin : ipe
  • EMiterJoin : ipe
  • ENoPin : ipe
  • ENotSelected : ipe
  • EOpacity : ipe
  • EPen : ipe
  • EPrimarySelected : ipe
  • EPropDashStyle : ipe
  • EPropFArrow : ipe
  • EPropFArrowShape : ipe
  • EPropFArrowSize : ipe
  • EPropFillColor : ipe
  • EPropFillRule : ipe
  • EPropGradient : ipe
  • EPropHorizontalAlignment : ipe
  • EPropLineCap : ipe
  • EPropLineJoin : ipe
  • EPropMarkShape : ipe
  • EPropMinipage : ipe
  • EPropOpacity : ipe
  • EPropPathMode : ipe
  • EPropPen : ipe
  • EPropPinned : ipe
  • EPropRArrow : ipe
  • EPropRArrowShape : ipe
  • EPropRArrowSize : ipe
  • EPropStrokeColor : ipe
  • EPropSymbolSize : ipe
  • EPropTextSize : ipe
  • EPropTextStyle : ipe
  • EPropTiling : ipe
  • EPropTransformableText : ipe
  • EPropTransformations : ipe
  • EPropVerticalAlignment : ipe
  • EPropWidth : ipe
  • ERoundCap : ipe
  • ERoundJoin : ipe
  • ESecondarySelected : ipe
  • ESquareCap : ipe
  • EStrokedAndFilled : ipe
  • EStrokedOnly : ipe
  • ESymbol : ipe
  • ESymbolSize : ipe
  • ETextSize : ipe
  • ETextStretch : ipe
  • ETextStyle : ipe
  • ETiling : ipe
  • ETransformationsAffine : ipe
  • ETransformationsRigidMotions : ipe
  • ETransformationsTranslations : ipe
  • EVerticalPin : ipe
  • EWindRule : ipe

ipe-7.1.10/build/doc/functions_func_s.html0000644000175000017500000007131712624020245020334 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- s -


ipe-7.1.10/build/doc/structipe_1_1_style_sheet_1_1_page_number_style.html0000644000175000017500000001757312624020245026311 0ustar otfriedotfried Ipelib: ipe::StyleSheet::PageNumberStyle Struct Reference
ipe::StyleSheet::PageNumberStyle Struct Reference

#include <ipestyle.h>

Public Attributes

bool iDefined
 
Vector iPos
 
double iFontSize
 
Color iColor
 

Detailed Description

How to show page numbers on the paper.

Member Data Documentation

bool ipe::StyleSheet::PageNumberStyle::iDefined
Vector ipe::StyleSheet::PageNumberStyle::iPos
double ipe::StyleSheet::PageNumberStyle::iFontSize
Color ipe::StyleSheet::PageNumberStyle::iColor

The documentation for this struct was generated from the following file:
  • ipestyle.h

ipe-7.1.10/build/doc/luapage.html0000644000175000017500000002420512624020245016377 0ustar otfriedotfried Ipelib: Lua bindings for Document, Page, and StyleSheet
Lua bindings for Document, Page, and StyleSheet

Stylesheet

A stylesheet can be constructed by reading from a file (in XML format), or by creating an empty stylesheet:

-- create from file:
-- returns sheet or nil, error message
sheet = ipe.Sheet("filename")
-- create from XML data:
-- returns sheet or nil, error message
sheet = ipe.Sheet(nil, "<ipestyle> ... </ipestyle>")
-- create empty stylesheet:
sheet = ipe.Sheet()    

Stylesheets have the following methods:

sheet:clone()            -- returns a private copy of the stylesheet
sheet:xml(with_bitmaps)  -- return XML representation 
sheet:add(kind, symbolic, value)
sheet:addFrom(other_sheet, kind, symbolic)
sheet:remove(kind, symbolic)                       
sheet:set(kind, value)
sheet:isStandard()      -- is this the built-in stylesheet?
sheet:name()            -- name of the stylesheet
sheet:setName(name)

sheet:add adds a definition for symbolic name to the stylesheet. Permissible values for kind are:

 pen, symbolsize, arrowsize, color, dashstyle, textsize, textstretch, 
 textstyle, gridsize, anglesize, opacity, symbol, 

sheet:addFrom copies a definition for a gradient, tiling, or effect from another stylesheet. This makes it possible to create such definitions by creating a temporary stylesheet from an XML string.

sheet:remove removes the definition of a symbolic name from the stylesheet. This also works for symbols, gradients, tilings, and effects. It is permissible to remove a symbolic name that is not defined in the stylesheet.

sheet:set sets a value. Permissible values for kind are:

 preamble, linecap, linejoin, fillrule

Stylesheet cascade

Documents own an entire stack of style sheets, the style sheet cascade. An empty style sheet cascade can be created like this:

sheets = ipe.Sheets()

or you can obtain one from an Ipe document.

Style sheet cascades have the following methods:

sheets1 = sheets:clone()              -- make a private copy
sheets:allNames(kind)
sheets:find(kind, symbolic)
sheets:has(kind, symbolic)
sheets:count()                        -- return number of sheets
sheets:sheet(index)                   -- return sheet at index
sheets:insert(index, style_sheet)     -- insert sheet at index
sheets:remove(index)                  -- delete a sheet
log = sheets:update(directory)        -- update style sheets from directory

sheets:allNames returns a table with all symbolic names defined in the entire stylesheet cascade. Permissible values for kind are:

 pen, symbolsize, arrowsize, color, dashstyle, textsize, textstretch, 
 textstyle, gridsize, anglesize, opacity, tiling, symbol, gradient, effect

sheet:has checks whether a symbolic name is defined in the cascade. Permissible values for kind are as for allNames.

sheet:find looks up a symbolic definition. Permissible values for kind are:

 pen, symbolsize, arrowsize, color, dashstyle, textsize, textstretch, 
 textstyle, gridsize, anglesize, opacity, symbol, 
 preamble, linecap, linejoin, fillrule, layout

Page

Page objects can be created like this:

p = ipe.Page()   -- create basic page with one layer and one view
p1 = p:clone()   -- returns a copy of the page

The following methods act on the views of a page. Note that views are indexed starting from 1, as usual in Lua.

p:countViews() 
p:effect(view)
p:setEffect(view, effect)
p:active(view)
p:setActive(view, layer)
p:insertView(view, layer)
p:removeView(view)
p:clearViews()
f = p:viewMarked(view) -- return true/false
p:setViewMarked(view, f)

The following methods act on the layers of a page. Note that layers are always accessed by name, not by index as in C++.

p:countLayers()
p:layers()        -- return table of layer names
p:isLocked(layer)
p:setLocked(layer)
p:hasSnapping(layer)
p:setSnapping(layer)
p:renameLayer(oldname, newname)
p:addLayer(name)     -- or create name if nil (name is returned)
p:removeLayer(layer)
p:moveLayer(layer, target_index)
p:visible(view, layer)   -- is layer visible in view?
p:setVisible(view, layer, boolean)

The objects of a page can be accessed by indexing, using an iterator, or with various methods. Note that object indices start with 1, as usual in Lua.

-- objects:

#p      -- return number of objects on page
p[i]    -- return object #i, where 1 <= i <= #p

-- iterate over objects of page:
for i, obj, sel, layer in p:objects() do
  print(i, obj, sel, layer)
end

p:select(objno)              -- returns nil, 1, or 2
p:setSelect(objno, status)   -- status is nil, 1, or 2
p:layerOf(objno)
p:setLayerOf(objno, layer)
p:visible(view, objno)       -- is object visible in view?
p:bbox(objno)                -- cached by page
p:invalidateBBox(objno)      -- invalidate cached bbox
p:insert(objno, object, select, layer)  -- objno == nil means append
p:remove(objno)
p:replace(objno, object)     -- automatically clones object
p:transform(objno, matrix)

-- returns true if attribute was actually changed
p:setAttribute(objno, property, value)

Finally, there are various methods to query and modify the currently selected objects, the page title and sections, etc.:

-- selection:
obj = p:primarySelection() -- nil if no primary selection
p:hasSelection()           -- true or false
p:deselectAll()
p:ensurePrimarySelection()

-- t is a table with fields "title", "section", "subsection"
-- if section or subsection is not a string, the title is used 
t = p:titles()  
p:setTitles(t)

-- n is a string
n = p:notes()
p:setNotes(n)

-- f is true/false
f = p:marked()
p:setMarked(f)

Document

Documents have the following methods:

doc = ipe.Document()         -- empty document
doc = ipe.Document(filename) -- load from file 
-- returns either document or nil, error message, error code

#doc    -- number of pages
doc[i]  -- return page #i, where 1 <= i <= #doc

-- format == nil: guess from filename
-- flags is either nil, or a table with keys
-- "export", "nozip", "lastview", "nocolor"
doc:save(filename, format, flags)  
doc:exportPages(filename, flags, fromPage, toPage)
doc:exportView(filename, format, flags, pageNo, viewNo)

-- iterating over pages of document:
for i, p in doc:pages() do
  print("Page number",  i, p)
end

doc:set(no, page)         -- replace with a clone of page, returns old page
doc:insert(no, page)
doc:append(page)
doc:remove(no)            -- returns page and removes from document
doc:countTotalViews()
doc:sheets()              -- returns style sheet cascade
old = doc:replaceSheets(sheets)  -- replace and return old cascade
doc:has(what)  -- where what in { "truetype", "gradients", "tilings", "transparency" }
doc:runLatex()
-- returns either true, nil, result code, logfile
--         or     false, error message, result code, logfile

doc:fontPool()    -- returns light userdata
doc:checkStyle()  -- returns list of undefined symbolic names
t = doc:properties()  -- returns table
doc:setProperties(t)  -- changes properties set in table

doc:properties() returns a table with the following fields (all fields exist even if their contents is an empty string):

title author subject keywords preamble created modified creator
fullscreen cropbox numberpages 

Other functions

ipe.fileFormat(filename)      -- returns one of "xml", "pdf", "eps", "ipe5", "unknown"
ipe.fileExists(filename)      -- returns true or false
ipe.directory(path)           -- return list of files in directory
ipe.open(path, mode)          -- replacement for io.open
beziers = ipe.splineToBeziers(spline, is_closed, old_style)
ipelet = ipe.Ipelet(dllname)  -- loads C++ ipelet from absolute path
-- returns ipelet or nil, error message

ipe-7.1.10/build/doc/functions_eval.html0000644000175000017500000004734112624020245020006 0ustar otfriedotfried Ipelib: Class Members - Enumerator
 

- e -


ipe-7.1.10/build/doc/classipe_1_1_vector.html0000644000175000017500000014475212624020245020620 0ustar otfriedotfried Ipelib: ipe::Vector Class Reference

#include <ipegeo.h>

Public Member Functions

 Vector ()
 
 Vector (Angle alpha)
 
 Vector (double x0, double y0)
 
double sqLen () const
 
double len () const
 
Angle angle () const
 
Vector normalized () const
 
Vector orthogonal () const
 
double factorize (Vector &unit) const
 
bool snap (const Vector &mouse, Vector &pos, double &bound) const
 
bool operator== (const Vector &rhs) const
 
bool operator!= (const Vector &rhs) const
 
void operator+= (const Vector &rhs)
 
void operator-= (const Vector &rhs)
 
void operator*= (double rhs)
 
Vector operator+ (const Vector &rhs) const
 
Vector operator- (const Vector &rhs) const
 
Vector operator* (double rhs) const
 
Vector operator- () const
 

Public Attributes

double x
 
double y
 

Static Public Attributes

static Vector ZERO = Vector(0.0, 0.0)
 

Related Functions

(Note that these are not member functions.)

Streamoperator<< (Stream &stream, const Vector &rhs)
 
Vector operator* (double lhs, const Vector &rhs)
 
double dot (const Vector &lhs, const Vector &rhs)
 

Detailed Description

Two-dimensional vector.

Unlike some other libraries, I don't make a difference between points and vectors.

Constructor & Destructor Documentation

ipe::Vector::Vector ( )
inline

Uninitialized vector.

Referenced by factorize(), normalized(), and orthogonal().

Vector::Vector ( Angle  alpha)
explicit

Construct a unit vector with this direction.

ipe::Vector::Vector ( double  x0,
double  y0 
)
inlineexplicit

Construct a vector.

Member Function Documentation

double ipe::Vector::sqLen ( ) const
inline

Return square of Euclidean length.

Return square of vector's length.

References x, and y.

Referenced by ipe::TransformTool::compute(), factorize(), len(), ipe::Line::Line(), normalized(), and ipe::Snap::snap().

double Vector::len ( ) const
Angle Vector::angle ( ) const

Return angle of the vector (with positive x-direction).

The returned angle lies between -pi and +pi. Returns zero for the zero vector.

References x, and y.

Referenced by ipe::TransformTool::compute(), ipe::Arc::distance(), ipe::Snap::getLine(), ipe::Arc::intersect(), and ipe::Snap::setEdge().

Vector Vector::normalized ( ) const

Return this vector normalized (with length one).

Normalizing the zero vector returns the vector (1,0).

References len(), sqLen(), and Vector().

Referenced by ipe::Arc::distance().

Vector Vector::orthogonal ( ) const

Return this vector turned 90 degrees to the left.

References Vector(), x, and y.

double Vector::factorize ( Vector unit) const

Normalizes this vector into unit and returns length. If this is the zero vector, unit is set to (1,0).

References len(), sqLen(), and Vector().

Referenced by ipe::Segment::distance(), and ipe::Segment::project().

bool Vector::snap ( const Vector mouse,
Vector pos,
double &  bound 
) const

Snap to nearby vertex.

If distance between mouse and this vector is less than bound, set pos to this vector and bound to the distance, and return true.

References len().

Referenced by ipe::Segment::snap(), ipe::Bezier::snap(), and ipe::CanvasBase::snapToPaperAndFrame().

bool ipe::Vector::operator== ( const Vector rhs) const
inline

Equality.

References x, and y.

bool ipe::Vector::operator!= ( const Vector rhs) const
inline

Inequality.

References x, and y.

void ipe::Vector::operator+= ( const Vector rhs)
inline

Vector-addition.

References x, and y.

void ipe::Vector::operator-= ( const Vector rhs)
inline

Vector-subtraction.

References x, and y.

void ipe::Vector::operator*= ( double  rhs)
inline

Multiply vector by scalar.

References x, and y.

Vector ipe::Vector::operator+ ( const Vector rhs) const
inline

Vector-addition.

Vector ipe::Vector::operator- ( const Vector rhs) const
inline

Vector-subtraction.

Vector ipe::Vector::operator* ( double  rhs) const
inline

Vector * scalar.

Vector ipe::Vector::operator- ( ) const
inline

Unary minus for Vector.

Friends And Related Function Documentation

Stream & operator<< ( Stream stream,
const Vector rhs 
)
related
Vector operator* ( double  lhs,
const Vector rhs 
)
related

Scalar * vector.

References x, and y.

double dot ( const Vector lhs,
const Vector rhs 
)
related

Dotproduct of two vectors.

References x, and y.

Member Data Documentation


The documentation for this class was generated from the following files:
  • ipegeo.h
  • ipegeo.cpp

ipe-7.1.10/build/doc/functions_k.html0000644000175000017500000001136512624020245017306 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- k -


ipe-7.1.10/build/doc/functions_func_x.html0000644000175000017500000001104512624020245020331 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- x -


ipe-7.1.10/build/doc/classipe_1_1_canvas-members.html0000644000175000017500000010141212624020245022203 0ustar otfriedotfried Ipelib: Member List
ipe::Canvas Member List

This is the complete list of members for ipe::Canvas, including all inherited members.

additionalModifiers() const ipe::CanvasBaseinline
Canvas(GtkWidget *parent)ipe::Canvas
Canvas(QWidget *parent, Qt::WFlags f=0)ipe::Canvas
Canvas(HWND parent)ipe::Canvas
CanvasBase()ipe::CanvasBaseprotected
canvasHeight() const ipe::CanvasBaseinline
canvasStyle() const ipe::CanvasBaseinline
canvasTfm() const ipe::CanvasBase
canvasWidth() const ipe::CanvasBaseinline
cascade() const ipe::CanvasBaseinline
center() const ipe::CanvasBaseinline
computeFifi(double x, double y)ipe::CanvasBaseprotected
createBitmap(unsigned char *p, int w, int h)ipe::Canvasstatic
devToUser(const Vector &arg) const ipe::CanvasBase
drawAxes(cairo_t *cc)ipe::CanvasBaseprotected
drawFifi(QPainter &q)ipe::Canvasprotected
ipe::CanvasBase::drawFifi(cairo_t *cr)ipe::CanvasBaseprotected
drawFrame(cairo_t *cc)ipe::CanvasBaseprotected
drawGrid(cairo_t *cc)ipe::CanvasBaseprotected
drawObjects(cairo_t *cc)ipe::CanvasBaseprotected
drawPaper(cairo_t *cc)ipe::CanvasBaseprotected
drawTool(Painter &painter)ipe::CanvasBaseprotected
EAlt enum valueipe::CanvasBase
EControl enum valueipe::CanvasBase
ECrossCursor enum valueipe::CanvasBase
EDotCursor enum valueipe::CanvasBase
EHandCursor enum valueipe::CanvasBase
EMeta enum valueipe::CanvasBase
EShift enum valueipe::CanvasBase
EStandardCursor enum valueipe::CanvasBase
finishTool()ipe::CanvasBase
globalPos() const ipe::CanvasBaseinline
iAdditionalModifiersipe::CanvasBaseprotected
iAutoOriginipe::CanvasBaseprotected
iAutoSnapipe::CanvasBaseprotected
iCascadeipe::CanvasBaseprotected
iDimmedipe::CanvasBaseprotected
iFifiModeipe::CanvasBaseprotected
iFifiVisibleipe::CanvasBaseprotected
iFontsipe::CanvasBaseprotected
iGlobalPosipe::CanvasBaseprotected
iHeightipe::CanvasBaseprotected
iMousePosipe::CanvasBaseprotected
init(HINSTANCE hInstance)ipe::Canvasstatic
invalidate()ipe::Canvasprotectedvirtual
invalidate(int x, int y, int w, int h)ipe::Canvasprotectedvirtual
iObserveripe::CanvasBaseprotected
iOldFifiipe::CanvasBaseprotected
iPageipe::CanvasBaseprotected
iPageNumberipe::CanvasBaseprotected
iPanipe::CanvasBaseprotected
iRepaintObjectsipe::CanvasBaseprotected
iRetinaipe::CanvasBaseprotected
iSelectionVisibleipe::CanvasBaseprotected
iSnapipe::CanvasBaseprotected
iStyleipe::CanvasBaseprotected
iSurfaceipe::CanvasBaseprotected
iToolipe::CanvasBaseprotected
iUnsnappedMousePosipe::CanvasBaseprotected
iViewipe::CanvasBaseprotected
iWidthipe::CanvasBaseprotected
iZoomipe::CanvasBaseprotected
keyPressEvent(QKeyEvent *ev)ipe::Canvasprotectedvirtual
mouseButton(QMouseEvent *ev, int button, bool press)ipe::Canvasprotected
mouseDoubleClickEvent(QMouseEvent *ev)ipe::Canvasprotectedvirtual
mouseMoveEvent(QMouseEvent *ev)ipe::Canvasprotectedvirtual
mousePressEvent(QMouseEvent *ev)ipe::Canvasprotectedvirtual
mouseReleaseEvent(QMouseEvent *ev)ipe::Canvasprotectedvirtual
paintEvent(QPaintEvent *ev)ipe::Canvasprotectedvirtual
pan() const ipe::CanvasBaseinline
pos() const ipe::CanvasBaseinline
refreshSurface()ipe::CanvasBaseprotected
selectPageOrView(Document *doc, int page=-1, int startIndex=0, int pageWidth=240, int width=600, int height=480)ipe::CanvasBasestatic
setAdditionalModifiers(int mod)ipe::CanvasBase
setAutoOrigin(const Vector &v)ipe::CanvasBase
setCanvasStyle(const Style &style)ipe::CanvasBase
setCursor(TCursor cursor, double w=1.0, Color *color=0)ipe::Canvasvirtual
setDimmed(bool dimmed)ipe::CanvasBase
setFifiVisible(bool visible)ipe::CanvasBase
setFontPool(const FontPool *fontPool)ipe::CanvasBase
setObserver(CanvasObserver *observer)ipe::CanvasBase
setPage(const Page *page, int pno, int view, const Cascade *sheet)ipe::CanvasBase
setPan(const Vector &v)ipe::CanvasBase
setRetina(int r)ipe::CanvasBase
setSelectionVisible(bool visible)ipe::CanvasBase
setSnap(const Snap &s)ipe::CanvasBase
setTool(Tool *tool)ipe::CanvasBase
setZoom(double zoom)ipe::CanvasBase
simpleSnapPos() const ipe::CanvasBase
sizeHint() const ipe::Canvasprotectedvirtual
snap() const ipe::CanvasBaseinline
snapToPaperAndFrame()ipe::CanvasBaseprotected
tabletEvent(QTabletEvent *ev)ipe::Canvasprotectedvirtual
TCursor enum nameipe::CanvasBase
TModifiers enum nameipe::CanvasBase
tool()ipe::CanvasBaseinline
unsnappedPos() const ipe::CanvasBaseinline
update()ipe::CanvasBase
updateTool()ipe::CanvasBase
userToDev(const Vector &arg) const ipe::CanvasBase
wheelEvent(QWheelEvent *ev)ipe::Canvasprotectedvirtual
window() const ipe::Canvasinline
windowId() const ipe::Canvasinline
zoom() const ipe::CanvasBaseinline
~Canvas()ipe::Canvas
~CanvasBase()ipe::CanvasBasevirtual

ipe-7.1.10/build/doc/manual_33.html0000644000175000017500000001120312624020245016535 0ustar otfriedotfried Ipe Manual -- 7.5 Ipe symbols used from text objects
7 Presentations7.4 Gradient patterns7.5 Ipe symbols used from text objects

7.5 Ipe symbols used from text objects

Presentations often make use of itemize environments. You can make these prettier in a number of ways:

You can color your bullets:

<preamble>
\def\labelitemi{\LARGE\textcolor{red}{$\bullet$}}
</preamble>

Enumeration numbers could be put in a colored box:

<preamble>
\newcommand{\labelenumi}{\fbox{\Roman{enumi}}}
</preamble>

You could use the Dingbats font for nice enumerations, for instance by putting \usepackage{pifont} in your preamble, and then having text objects with \begin{dinglist}{43} or \begin{dingautolist}{172} (or use 182, 192, 202 for various circled numbers).

You can mark items as "good" and "bad" using these "bullets":

Bad item: \textcolor{red}{\ding{55}}
Good item: \textcolor{green}{\ding{52}}

Finally, you can custom design your own bullets by creating an Ipe symbol for it. For instance:

<symbol name="bullet(sfpx)">
  <path matrix="2 0 0 2 0 0" pen="sym-pen" stroke="sym-stroke" fill="sym-fill">
    0 0 m -1.0 0.333 l -0.8 0 l -1.0 -0.333 l h</path>
</symbol>
<preamble>
  \def\labelitemi{\raisebox{0.5ex}{\hbox to 0.3em%
      {\ipesymbol{bullet(sfpx)}{blue}{yellow}{normal}}}}
</preamble>

Note the use of the \ipesymbol{name}{stroke}{fill}{pen} command. It allows you to use an Ipe symbol from inside a text object. The symbol is magnified proportionally to the ex-height of the current font at the position where it is used. (And so the symbol should be designed to be the correct size for a font of ex-height 1pt.)

In the following example, we redefine the bullet to be a blue glassy sphere:

<gradient name="ball" type="radial" coords="-4 10 2 0 0 18">
  <stop offset="0" color="1 1 1"/>
  <stop offset="1" color="0 0 1"/>
</gradient>
<symbol name="sphere">
  <path matrix="0.04 0 0 0.04 0 0" fill="blue" gradient="ball">
    18 0 0 18 0 0 e
  </path>
</symbol>
<preamble>
  \def\labelitemi{\raisebox{0.5ex}{\hbox to 0.3em{\ipesymbol{sphere}{}{}{}}}}
</preamble>
ipe-7.1.10/build/doc/group__geo.html0000644000175000017500000002502712624020245017111 0ustar otfriedotfried Ipelib: Ipe Geometry
Ipe Geometry

Classes

class  ipe::Angle
 
class  ipe::Vector
 
class  ipe::Rect
 
class  ipe::Line
 
class  ipe::Segment
 
class  ipe::Linear
 
class  ipe::Matrix
 
class  ipe::Bezier
 
class  ipe::Arc
 
class  ipe::CurveSegment
 
class  ipe::Curve
 
class  ipe::SubPath
 
class  ipe::Ellipse
 
class  ipe::ClosedSpline
 
class  ipe::Shape
 

Functions

template<class T >
ipe::max (const T &lhs, const T &rhs)
 
template<class T >
ipe::min (const T &lhs, const T &rhs)
 
double ipe::abs (double val)
 

Detailed Description

Geometric primitives for Ipe.

The IpeGeo module provides a few classes for constant-size geometric primitives, such as vector, axis-aligned rectangles, lines, rays, line segments, etc.

Function Documentation

template<class T >
T ipe::max ( const T &  lhs,
const T &  rhs 
)
inline

Maximum of two values.

template<class T >
T ipe::min ( const T &  lhs,
const T &  rhs 
)
inline

Minimum of two values.

double ipe::abs ( double  val)
inline

ipe-7.1.10/build/doc/classipe_1_1_closed_spline-members.html0000644000175000017500000001774612624020245023573 0ustar otfriedotfried Ipelib: Member List
ipe::ClosedSpline Member List

This is the complete list of members for ipe::ClosedSpline, including all inherited members.

addToBBox(Rect &box, const Matrix &m, bool cp) const ipe::ClosedSplinevirtual
asClosedSpline() const ipe::ClosedSplinevirtual
asCurve() const ipe::SubPathvirtual
asEllipse() const ipe::SubPathvirtual
beziers(std::vector< Bezier > &bez) const ipe::ClosedSpline
closed() const ipe::SubPathvirtual
ClosedSpline(const std::vector< Vector > &v)ipe::ClosedSpline
distance(const Vector &v, const Matrix &m, double bound) const ipe::ClosedSplinevirtual
draw(Painter &painter) const ipe::ClosedSplinevirtual
EClosedSpline enum valueipe::SubPath
ECurve enum valueipe::SubPath
EEllipse enum valueipe::SubPath
iCPipe::ClosedSpline
save(Stream &stream) const ipe::ClosedSplinevirtual
snapBnd(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::ClosedSplinevirtual
snapVtx(const Vector &mouse, const Matrix &m, Vector &pos, double &bound, bool cp) const ipe::ClosedSplinevirtual
type() const ipe::ClosedSplinevirtual
Type enum nameipe::SubPath
~SubPath()=0ipe::SubPathpure virtual

ipe-7.1.10/build/doc/classipe_1_1_sub_path-members.html0000644000175000017500000001603512624020245022543 0ustar otfriedotfried Ipelib: Member List
ipe::SubPath Member List

This is the complete list of members for ipe::SubPath, including all inherited members.

addToBBox(Rect &box, const Matrix &m, bool cp) const =0ipe::SubPathpure virtual
asClosedSpline() const ipe::SubPathvirtual
asCurve() const ipe::SubPathvirtual
asEllipse() const ipe::SubPathvirtual
closed() const ipe::SubPathvirtual
distance(const Vector &v, const Matrix &m, double bound) const =0ipe::SubPathpure virtual
draw(Painter &painter) const =0ipe::SubPathpure virtual
EClosedSpline enum valueipe::SubPath
ECurve enum valueipe::SubPath
EEllipse enum valueipe::SubPath
save(Stream &stream) const =0ipe::SubPathpure virtual
snapBnd(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const =0ipe::SubPathpure virtual
snapVtx(const Vector &mouse, const Matrix &m, Vector &pos, double &bound, bool cp) const =0ipe::SubPathpure virtual
type() const =0ipe::SubPathpure virtual
Type enum nameipe::SubPath
~SubPath()=0ipe::SubPathpure virtual

ipe-7.1.10/build/doc/ftv2doc.png0000644000175000017500000000135212624020245016146 0ustar otfriedotfried‰PNG  IHDRÚ}\ˆ±IDATxíMOS[…Ÿžsúa?-XZ(PD4‚ AWbu`b 77wäHFÆCËÔÂÿà/`vo„ˆAPòq‹P @ ­ûÝè980 îà¤+»§Ýy×^ïZï9SW¹\83g‰3'°Nâçl¹¸_b¯p ïåûÆVÜÖ¡€Ÿ×"¬Ö†X€d]Ðà3“ÉÃÄÌ™xŸ ßMàœ[<çSPkvc—hÈ'…™˜^Åm™hØ7 `Û™¦ èÀåráq›‘œ¾!daeKŸþÆÕ˜:Ì*³_דâèi?I–eP*B7Ÿ¿åô!¹Ýgr6Ër6oKbëþãðôrI”ËTˆüªŒ¨xóö=›ù¢&‰(e+ßóÄkýÇ`ëÁÜb.“¸ÐW×w0¥°jÑzN™¬|©WEãµ¢a¯6[öX†AkÓù*/œ¨‰€ÉY­ ÿV’§–u²jÂ>1W *½·°PGŽzÿ¨/Eg{ ŸÇâaoŠÁVú:è¿™¤1$ôR§W,–ªà¨@ŠË56¾ÀÔÜ-¾,mê¸Î/æè¹– òr5¥T*S(Vf8ö9u’ Õ£w›ùóa=Í<{Ò¡UŒ÷r¯+ÉådDÏF$è°…£é¿`zþ»ÎúöN‘µÜ®0Q3£~_^Ëóâ¯N=ˆvpTà±LžT}ˆîkq†Òm<¼ÎÓ?Zh¿X£ï_þÝ¥[)ƒ `gêÃa_Ô*äÔ2`'=õ´Fÿ2EâÁPú ÷»›l=8‹Wv°%THqÉ¿<"¤ïG¾ÆxH{#ÆÖ«aÔJÕÞ‡—m‹„ çñKsÿàñVŠØ¡°·MâÒ^ TÁ– Ý›r¥ß½ømüÿ_™?ªWİ÷#uIEND®B`‚ipe-7.1.10/build/doc/classipe_1_1_tool.html0000644000175000017500000004326212624020245020265 0ustar otfriedotfried Ipelib: ipe::Tool Class Reference

#include <ipetoolbase.h>

Inherited by ipe::PanTool, ipe::SelectTool, and ipe::TransformTool.

Public Member Functions

virtual ~Tool ()
 
virtual void draw (Painter &painter) const =0
 
virtual void mouseButton (int button, bool press)
 
virtual void mouseMove ()
 
virtual bool key (String text, int modifiers)
 
virtual void snapVtx (const Vector &mouse, Vector &pos, double &bound, bool cp) const
 

Protected Member Functions

 Tool (CanvasBase *canvas)
 

Protected Attributes

CanvasBaseiCanvas
 

Detailed Description

Abstract base class for various canvas tools.

The Canvas doesn't know about the various modes for object creation, editing, and moving, but delegates the handling to a subclass of Tool.

Constructor & Destructor Documentation

Tool::~Tool ( )
virtual

Virtual destructor.

Tool::Tool ( CanvasBase canvas)
protected

Constructor.

Member Function Documentation

virtual void ipe::Tool::draw ( Painter painter) const
pure virtual
void Tool::mouseButton ( int  button,
bool  press 
)
virtual

Called when a mouse button is pressed or released on the canvas.

button is 1, 2, or 3, with Shift/Ctrl/Alt/Meta modifiers added in (as defined in CanvasBase::TModifiers. press is true for button-down, and false for button-up.

Reimplemented in ipe::TransformTool, ipe::SelectTool, and ipe::PanTool.

Referenced by ipe::Canvas::mouseButton(), and ipe::Canvas::tabletEvent().

void Tool::mouseMove ( )
virtual

Called when the mouse is moved on the canvas.

Reimplemented in ipe::TransformTool, ipe::SelectTool, and ipe::PanTool.

Referenced by ipe::Canvas::mouseMoveEvent(), and ipe::Canvas::tabletEvent().

bool Tool::key ( String  text,
int  modifiers 
)
virtual

Called when a key is pressed.

modifiers are as defined in CanvasBase::TModifiers.

Reimplemented in ipe::SelectTool.

Referenced by ipe::Canvas::keyPressEvent().

void Tool::snapVtx ( const Vector mouse,
Vector pos,
double &  bound,
bool  cp 
) const
virtual

Snapping to vertices on object currently being drawn.

Referenced by ipe::Snap::simpleSnap().

Member Data Documentation


The documentation for this class was generated from the following files:
  • ipetoolbase.h
  • ipetoolbase.cpp

ipe-7.1.10/build/doc/functions_vars_c.html0000644000175000017500000000705012624020245020325 0ustar otfriedotfried Ipelib: Class Members - Variables
 

- c -


ipe-7.1.10/build/doc/manual_19.html0000644000175000017500000000602612624020245016550 0ustar otfriedotfried Ipe Manual -- 4.4 Group objects
4.5 Reference objects and symbols4 Object types4.3 Image objects4.4 Group objects

4.4 Group objects

Group objects are created by selecting any number of objects and using the Group function from the Edit menu. The grouped objects then behave like a single object. To modify a group object, it has to be decomposed into its parts using Ungroup.

A clipping path can be added to a group object. The group will then be clipped to this path—nothing will be drawn outside the clipping path. To add a clipping path, select a group as the primary selection, and a path object as the secondary selection. Then select Add clipping path from the group's context menu.

ipe-7.1.10/build/doc/functions_g.html0000644000175000017500000001773512624020245017311 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- g -


ipe-7.1.10/build/doc/structipe_1_1_layout.html0000644000175000017500000003464212624020245021046 0ustar otfriedotfried Ipelib: ipe::Layout Struct Reference

#include <ipeattributes.h>

Public Member Functions

 Layout ()
 
bool isNull () const
 
Rect paper () const
 

Public Attributes

Vector iPaperSize
 
Vector iOrigin
 
Vector iFrameSize
 
double iParagraphSkip
 
bool iCrop
 

Detailed Description

Layout of a Page.

Constructor & Destructor Documentation

ipe::Layout::Layout ( )
inline

Create null layout.

References iPaperSize, and ipe::Vector::x.

Member Function Documentation

bool ipe::Layout::isNull ( ) const
inline

Is this an undefined (null) layout?

References iPaperSize, and ipe::Vector::x.

Referenced by ipe::StyleSheet::layout(), and ipe::StyleSheet::saveAsXml().

Rect ipe::Layout::paper ( ) const
inline

Member Data Documentation

Vector ipe::Layout::iOrigin
double ipe::Layout::iParagraphSkip

Paragraph skip (between textboxes).

Referenced by ipe::ImlParser::parseStyle(), and ipe::StyleSheet::saveAsXml().

bool ipe::Layout::iCrop

The documentation for this struct was generated from the following file:
  • ipeattributes.h

ipe-7.1.10/build/doc/classipe_1_1_pdf_dict.html0000644000175000017500000005353012624020245021063 0ustar otfriedotfried Ipelib: ipe::PdfDict Class Reference

#include <ipepdfparser.h>

Inherits ipe::PdfObj.

Public Member Functions

 PdfDict ()
 
 ~PdfDict ()
 
virtual const PdfDictdict () const
 
virtual void write (Stream &stream) const
 
void setStream (const Buffer &stream)
 
void add (String key, const PdfObj *obj)
 
const PdfObjget (String key, const PdfFile *file) const
 
int count () const
 
String key (int index) const
 
Buffer stream () const
 
bool deflated () const
 
- Public Member Functions inherited from ipe::PdfObj
virtual ~PdfObj ()=0
 
virtual const PdfNullnull () const
 
virtual const PdfBoolboolean () const
 
virtual const PdfNumbernumber () const
 
virtual const PdfStringstring () const
 
virtual const PdfNamename () const
 
virtual const PdfRefref () const
 
virtual const PdfArrayarray () const
 
String repr () const
 

Detailed Description

The PDF dictionary and stream objects.

A dictionary may or may not have attached stream data.

Constructor & Destructor Documentation

ipe::PdfDict::PdfDict ( )
inlineexplicit
PdfDict::~PdfDict ( )

Member Function Documentation

const PdfDict * PdfDict::dict ( ) const
virtual

Return this object as PDF dictionary object.

Reimplemented from ipe::PdfObj.

void PdfDict::write ( Stream stream) const
virtual
void PdfDict::setStream ( const Buffer stream)

Add stream data to this dictionary.

References stream().

void PdfDict::add ( String  key,
const PdfObj obj 
)

Add a (key, value) pair to the dictionary.

Dictionary takes ownership of obj.

References key().

const PdfObj * PdfDict::get ( String  key,
const PdfFile file 
) const

Look up key in dictionary.

Indirect objects (references) are looked up if file is not zero, and the object referred to is returned. Returns 0 if key is not in dictionary.

References ipe::PdfFile::object().

Referenced by ipe::PdfFile::catalog(), ipe::PdfFile::page(), and ipe::Latex::readPdf().

int ipe::PdfDict::count ( ) const
inline

Referenced by ipe::Latex::readPdf().

String ipe::PdfDict::key ( int  index) const
inline

Referenced by add(), and ipe::Latex::readPdf().

Buffer ipe::PdfDict::stream ( ) const
inline

Referenced by setStream().

bool PdfDict::deflated ( ) const

Is this stream compressed with flate compression?

References ipe::PdfObj::name(), and ipe::PdfName::value().


The documentation for this class was generated from the following files:
  • ipepdfparser.h
  • ipepdfparser.cpp

ipe-7.1.10/build/doc/classipe_1_1_select_tool.html0000644000175000017500000004734612624020245021633 0ustar otfriedotfried Ipelib: ipe::SelectTool Class Reference
ipe::SelectTool Class Reference

#include <ipetool.h>

Inherits ipe::Tool.

Classes

struct  SObj
 

Public Member Functions

 SelectTool (CanvasBase *canvas, Page *page, int view, double selectDistance, bool nonDestructive)
 
virtual void draw (Painter &painter) const
 
virtual void mouseButton (int button, bool press)
 
virtual void mouseMove ()
 
virtual bool key (String text, int modifiers)
 
- Public Member Functions inherited from ipe::Tool
virtual ~Tool ()
 
virtual void snapVtx (const Vector &mouse, Vector &pos, double &bound, bool cp) const
 

Additional Inherited Members

- Protected Member Functions inherited from ipe::Tool
 Tool (CanvasBase *canvas)
 
- Protected Attributes inherited from ipe::Tool
CanvasBaseiCanvas
 

Detailed Description

A tool for selecting objects.

Constructor & Destructor Documentation

Member Function Documentation

void SelectTool::mouseButton ( int  button,
bool  press 
)
virtual
void SelectTool::mouseMove ( )
virtual

Called when the mouse is moved on the canvas.

Reimplemented from ipe::Tool.

References ipe::Tool::iCanvas, ipe::CanvasBase::unsnappedPos(), and ipe::CanvasBase::updateTool().

bool SelectTool::key ( String  text,
int  modifiers 
)
virtual

Called when a key is pressed.

modifiers are as defined in CanvasBase::TModifiers.

Reimplemented from ipe::Tool.

References ipe::CanvasBase::finishTool(), ipe::Tool::iCanvas, and ipe::CanvasBase::updateTool().


The documentation for this class was generated from the following files:
  • ipetool.h
  • ipetool.cpp

ipe-7.1.10/build/doc/fontbbox2.svg0000644000175000017500000002336612624020245016526 0ustar otfriedotfried ipe-7.1.10/build/doc/functions_func_~.html0000644000175000017500000002157512624020245020350 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- ~ -


ipe-7.1.10/build/doc/classipe_1_1_ipelet_helper-members.html0000644000175000017500000001210112624020245023545 0ustar otfriedotfried Ipelib: Member List
ipe::IpeletHelper Member List

This is the complete list of members for ipe::IpeletHelper, including all inherited members.

EDiscardCancelButtons enum valueipe::IpeletHelper
EOkButton enum valueipe::IpeletHelper
EOkCancelButtons enum valueipe::IpeletHelper
ESaveDiscardCancelButtons enum valueipe::IpeletHelper
EYesNoCancelButtons enum valueipe::IpeletHelper
getString(const char *prompt, String &str)=0ipe::IpeletHelperpure virtual
message(const char *msg)=0ipe::IpeletHelperpure virtual
messageBox(const char *text, const char *details, int buttons)=0ipe::IpeletHelperpure virtual
~IpeletHelper()=0ipe::IpeletHelperpure virtual

ipe-7.1.10/build/doc/classipe_1_1_reference-members.html0000644000175000017500000005047012624020245022675 0ustar otfriedotfried Ipelib: Member List
ipe::Reference Member List

This is the complete list of members for ipe::Reference, including all inherited members.

accept(Visitor &visitor) const ipe::Referencevirtual
addToBBox(Rect &box, const Matrix &m, bool cp) const ipe::Referencevirtual
asGroup()ipe::Objectvirtual
asImage()ipe::Objectvirtual
asPath()ipe::Objectvirtual
asReference()ipe::Referencevirtual
asText()ipe::Objectvirtual
checkStyle(const Cascade *sheet, AttributeSeq &seq) const ipe::Referencevirtual
checkSymbol(Kind kind, Attribute attr, const Cascade *sheet, AttributeSeq &seq)ipe::Objectprotectedstatic
clone() const ipe::Referencevirtual
distance(const Vector &v, const Matrix &m, double bound) const ipe::Referencevirtual
draw(Painter &painter) const ipe::Referencevirtual
drawSimple(Painter &painter) const ipe::Referencevirtual
EGroup enum valueipe::Object
EHasFill enum valueipe::Reference
EHasPen enum valueipe::Reference
EHasSize enum valueipe::Reference
EHasStroke enum valueipe::Reference
EImage enum valueipe::Object
EIsArrow enum valueipe::Reference
EIsMark enum valueipe::Reference
EPath enum valueipe::Object
EReference enum valueipe::Object
EText enum valueipe::Object
fill() const ipe::Referenceinline
flags() const ipe::Referenceinline
flagsFromName(String name)ipe::Referencestatic
getAttribute(Property prop)ipe::Referencevirtual
iMatrixipe::Objectprotected
iPinnedipe::Objectprotected
iTransformationsipe::Objectprotected
matrix() const ipe::Objectinline
name() const ipe::Referenceinline
Object()ipe::Objectexplicitprotected
Object(const AllAttributes &attr)ipe::Objectexplicitprotected
Object(const Object &rhs)ipe::Objectprotected
Object(const XmlAttributes &attr)ipe::Objectexplicitprotected
pen() const ipe::Referenceinline
pinned() const ipe::Objectvirtual
position() const ipe::Referenceinline
Reference(const AllAttributes &attr, Attribute name, Vector pos)ipe::Referenceexplicit
Reference(const XmlAttributes &attr, String data)ipe::Referenceexplicit
saveAsXml(Stream &stream, String layer) const ipe::Referencevirtual
saveAttributesAsXml(Stream &stream, String layer) const ipe::Objectprotected
setAttribute(Property prop, Attribute value)ipe::Referencevirtual
setFill(Attribute color)ipe::Reference
setMatrix(const Matrix &matrix)ipe::Object
setName(Attribute name)ipe::Reference
setPen(Attribute pen)ipe::Reference
setPinned(TPinned pin)ipe::Object
setSize(Attribute size)ipe::Reference
setStroke(Attribute color)ipe::Reference
setTransformations(TTransformations trans)ipe::Object
size() const ipe::Referenceinline
snapBnd(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Referencevirtual
snapCtl(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Objectvirtual
snapVtx(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Referencevirtual
stroke() const ipe::Referenceinline
transformations() const ipe::Objectinline
Type enum nameipe::Object
type() const ipe::Referencevirtual
~Object()=0ipe::Objectpure virtual

ipe-7.1.10/build/doc/lingrad1.svg0000644000175000017500000000252312624020245016314 0ustar otfriedotfried ipe-7.1.10/build/doc/manual_48.html0000644000175000017500000002361312624020245016553 0ustar otfriedotfried Ipe Manual -- 12.1 Command line options
12.2 Environment variables12 Command line options and environment variables12.1 Command line options

12.1 Command line options

Ipe command line options

Ipe supports the following command line options:

-sheet style sheet name
Adds the designated style sheet to any newly created documents.
-show-configuration
With this option, Ipe will display the current configuration options on stdout, and terminate.
In addition, you can specify the name of an Ipe file to open on the command line. Ipe also understands all options supported by the Qt library if Ipe was built using Qt.

Ipeview: a minimal Ipe viewer

Ipeview allows you to quickly view an Ipe file without starting the Ipe program.

Ipetoipe: converting Ipe file formats

The auxiliary program ipetoipe converts between the different Ipe file formats:

  ipetoipe ( -xml | -pdf ) { <options> } infile [ outfile ]
The first argument determines the format of the output file. If no output filename is provided, Ipe will try to guess it by appending one of the extensions "ipe" or "pdf" to the input file's basename.

For example, the command line syntax

  ipetoipe -pdf figure1.ipe
converts figure1.ipe to figure1.pdf.

Ipetoipe understands the following options:

-export
No Ipe markup is included in the resulting output file. Ipe will not be able to open a file created that way, so make sure you keep your original!
-markedview
(PDF only)
Only the marked views of marked Ipe pages will be created in PDF format. If all views of a marked page are unmarked, the last view is exported. This is convenient to make handouts for slides.
-pages from-to
(PDF only)
Restrict exporting to PDF to this page range. This implies the -export option.
-view page-view
Only export this single view from the document. This implies the -export option.
-runlatex
Run Latex even for XML output. This has the effect of including the dimensions of each text object in the XML file.
-nozip
Do not compress streams in PDF output.

Iperender: exporting to a bitmap, EPS, or SVG

The program iperender exports a page of the document to a bitmap in PNG format, to a figure in Encapsulated Postscript (EPS), or to scalable vector graphics in SVG format. (Of course the result contains no Ipe markup, so make sure you keep your original!) For instance, the following command line

  iperender -png -page 3 -resolution 150 presentation.pdf pres3.png
converts page 3 of the Ipe document presentation.pdf to a bitmap, with resolution 150 pixels per inch.

Ipeextract: extract XML stream from Ipe file

Ipeextract extracts the XML stream from an PDF or EPS file made by Ipe 6 or 7 and saves it in a file. It will work even if Ipe cannot actually parse the file, so you can use this tool to debug problems where Ipe fails to open your document.

ipeextract infile [ outfile ]
If not provided, the outfile is guessed by appending "xml" to the infile's basename.

Ipe6upgrade: convert Ipe 6 files to Ipe 7 file format

Ipe6upgrade takes as input a file created by any version of Ipe 6, and saves in the format of Ipe 7.0.0.

ipe6upgrade infile [ outfile ]
If not provided, the outfile is guessed by adding the extension "ipe" to the infile's basename.

Ipescript: running Ipe scripts

Ipescript runs an Ipe script written in the Lua language with bindings for the Ipe objects, such as the script "update-master". Ipescript automatically finds the script in Ipe's script directories. On Unix, you can place your own scripts in $HOME/.ipe/scripts.

The Ipe distribution contains the following scripts:

  • update-master, explained earlier;
  • add-style to add a stylesheet to Ipe figures;
  • update-styles to update the stylesheets in Ipe figures (in the same way that Ipe does it using the "Update stylesheets" function).

Svgtoipe: Importing SVG figures

The auxiliary program svgtoipe converts an SVG figure to Ipe format. It cannot handle all SVG features (many SVG features are not supported by Ipe anyway), but it works for gradients.

svgtoipe is not part of the Ipe source distribution. You can download it separately.

Pdftoipe: Importing Postscript and PDF

You can convert arbitrary Postscript or PDF files into Ipe documents, making them editable. The auxiliary program pdftoipe converts (pages from) a PDF file into an Ipe XML-file. (If your source is Postscript, you have to first convert it to PDF using Acrobat Distiller or ps2pdf.) Once converted to XML, the file can be opened from Ipe as usual.

The conversion process should handle any graphics in the PDF file fine, but doesn't do very well on text—Ipe's text model is just too different.

pdftoipe is not part of the Ipe source distribution. You can download and build it separately.

Ipe5toxml: convert Ipe 5 files to Ipe 6 file format

If you still have figures that were created with Ipe 5, you can use ipe5toxml to convert them to Ipe 6 format. You can then use ipe6upgrade to convert them to Ipe 7 format.

ipe5toxml is not part of the Ipe distribution, but available as a separate download.

Figtoipe: Importing FIG figures

The auxiliary program figtoipe converts a figure in FIG format into an Ipe XML-file. This is useful if you used to make figures with Xfig before discovering Ipe, of if your co-authors made figures for your article with Xfig (converting them will have the added benefit of forcing your co-authors to learn to use Ipe). Finally, there are quite a number of programs that can export to FIG format, and figtoipe effectively turns that into the possibility of exporting to Ipe.

However, figtoipe is not quite complete. The drawing models of FIG and Ipe are also somewhat different, which makes it impossible to properly render some FIG files in Ipe. Ipe does not support depth ordering independent of grouping, pattern fill, and Postscript fonts. You may therefore have to edit the file after conversion.

figtoipe is not part of the Ipe distribution. You can download and build it separately. figtoipe is now maintained by Alexander Bürger.

ipe-7.1.10/build/doc/namespacemembers_type.html0000644000175000017500000000435412624020245021334 0ustar otfriedotfried Ipelib: Namespace Members
 
  • AttributeSeq : ipe

ipe-7.1.10/build/doc/classipe_1_1_visitor.html0000644000175000017500000002653212624020245021010 0ustar otfriedotfried Ipelib: ipe::Visitor Class Reference

#include <ipeobject.h>

Inherited by CollectSegs, ipe::BitmapFinder, and ipe::TextCollectingVisitor.

Public Member Functions

virtual ~Visitor ()
 
virtual void visitGroup (const Group *obj)
 
virtual void visitPath (const Path *obj)
 
virtual void visitText (const Text *obj)
 
virtual void visitImage (const Image *obj)
 
virtual void visitReference (const Reference *obj)
 

Detailed Description

Base class for visitors to Object.

Many operations on Ipe Objects are implemented as visitors, all derived from Visitor.

The default implementation of each visitXXX member does nothing.

Constructor & Destructor Documentation

Visitor::~Visitor ( )
virtual

Pure virtual destructor.

Member Function Documentation

void Visitor::visitGroup ( const Group obj)
virtual

Called on an Group object.

Reimplemented in ipe::BitmapFinder.

Referenced by ipe::Group::accept().

void Visitor::visitPath ( const Path obj)
virtual

Called on an Path object.

Referenced by ipe::Path::accept().

void Visitor::visitText ( const Text obj)
virtual

Called on an Text object.

Referenced by ipe::Text::accept().

void Visitor::visitImage ( const Image obj)
virtual

Called on an Image object.

Reimplemented in ipe::BitmapFinder.

Referenced by ipe::Image::accept().

void Visitor::visitReference ( const Reference obj)
virtual

Called on an Reference object.

Referenced by ipe::Reference::accept().


The documentation for this class was generated from the following files:
  • ipeobject.h
  • ipeobject.cpp

ipe-7.1.10/build/doc/classipe_1_1_linear-members.html0000644000175000017500000001370112624020245022205 0ustar otfriedotfried Ipelib: Member List
ipe::Linear Member List

This is the complete list of members for ipe::Linear, including all inherited members.

aipe::Linear
determinant() const ipe::Linearinline
inverse() const ipe::Linear
isIdentity() const ipe::Linearinline
Linear()ipe::Linearinline
Linear(Angle angle)ipe::Linearexplicit
Linear(double m11, double m21, double m12, double m22)ipe::Linearinlineexplicit
Linear(String str)ipe::Linearexplicit
operator*(const Vector &rhs) const ipe::Linearinline
operator*(const Vector &rhs) constipe::Linearrelated
operator*(const Linear &lhs, const Linear &rhs)ipe::Linearrelated
operator<<(Stream &stream, const Linear &rhs)ipe::Linearrelated
operator==(const Linear &rhs) const ipe::Linearinline

ipe-7.1.10/build/doc/functions_~.html0000644000175000017500000002163512624020245017332 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- ~ -


ipe-7.1.10/build/doc/functions_p.html0000644000175000017500000003500412624020245017307 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- p -


ipe-7.1.10/build/doc/luaobj.html0000644000175000017500000002027312624020245016236 0ustar otfriedotfried Ipelib: Lua bindings for objects and attributes
Lua bindings for objects and attributes

The five Ipe objects are ipe::Group, ipe::Path, ipe::Text, ipe::Image, and ipe::Reference. They can be constructed from Lua as follows:

obj = ipe.Reference(attributes, name, pos)
obj = ipe.Text(attributes, text, pos)          -- Text of type label
obj = ipe.Text(attributes, text, pos, width)   -- Text of type minipage
obj = ipe.Path(attributes, shape, with_arrows)   
obj = ipe.Group(elements)       -- elements is a table of objects
obj = ipe.Image(rect, bitmap)   -- where bitmap is another Image object 

Here, attributes is a table defining the desired attributes, see below. shape is a table defining a shape, see below. To create path with arrows, you need to set with_arrows to true (it defaults to false). The arrow settings are then used from the attributes.

A bitmap can be created by reading from an image file:

bitmap, res = ipe.readImage(fname, format)

where format is one of "png" or "jpeg". If reading the bitmap fails, then bitmap is nil and res is an error message. Otherwise, bitmap is an Image object and res is the resolution in dots per inch. This will be (0,0) if the file does not contain that information.

Objects have the following methods:

obj:type()    -- return type as string: group, text, path, image, reference
obj:clone()   -- clone the object

obj:set(property, value)    -- see below
obj:get(property)           -- see below

obj:xml()                   -- return XML representation
obj:matrix()
obj:setMatrix(m)
obj:addToBBox(r, m)         -- including control points
obj:addToBBox(r, m, false)  -- without control points

-- text and reference objects only:
v = obj:position()
-- text objects only:
obj:setText(str)
str = obj:text()
-- path objects only:
shape = obj:shape()                      
obj:setShape(shape)            
-- group objects only:
n = obj:count()                  
shape = obj:clip()           -- nil if no clipping
obj:setClip(shape)
-- image objects only:
obj:info()                   -- returns table about bitmap
-- group objects only:
elements = obj:elements()    -- returns table with clones of elements 

Attributes

Attributes are represented in Lua as follows:

  • Symbolic names are strings
  • Absolute string values (e.g. dash style) are strings
  • Absolute numeric values are numbers
  • Absolute colors are tables with three entries with keys r, g, b
  • Boolean values (for minipage, farrow, rarrow) are booleans (but the strings "true" and "false" can be used to set them)
  • Transformations, Pinned, Linejoin, Linecap, Fillrule, Horizontal alignment, and Vertical alignment are represented by fixed strings, see table below.

The attributes argument to the object constructors is a table defining all desired attributes. Keys in the table are as follows. If a key is not present, the default value is used.

pathmode -- "stroked", "strokedfilled", "filled"
stroke   -- symbolic or color
fill     -- symbolic or color
dashstyle -- symbolic or absolute string
pen      -- symbolic or number
farrow   -- boolean
rarrow   -- boolean
farrowshape -- symbolic
rarrowshape -- symbolic
arrowsize  -- symbolic or number
symbolsize -- symbolic or number
symbolshape -- symbolic
textsize   -- symbolic or number
transformableText -- boolean
textstyle  -- symbolic
opacity    -- symbolic
tiling     -- symbolic
minipage   -- boolean      
width      -- number
horizontalAlignment -- "left", "right", "hcenter"
verticalAlignment   -- "bottom", "baseline", "top", "vcenter"
linejoin            -- "normal", "miter", "round", "bevel"
linecap             -- "normal", "butt", "round", "square"
fillrule            -- "normal", "wind", "evenodd"
pinned              -- "none", "horizontal", "vertical", "fixed"
transformations     -- "translations", "rigid", "affine"

Properties

The set() and get() methods allow to access the attributes of objects. The property names are

    pen, symbolsize, 
    farrow, rarrow, farrowsize, rarrowsize, farrowshape, rarrowshape, 
    stroke, fill, markshape,
    pathmode, dashstyle, 
    textsize, textstyle, minipage, width, 
    opacity, tiling, gradient, 
    horizontalalignment, verticalalignment,
    linejoin, linecap, fillrule, 
    pinned, transformations, 

It is okay to set a property on objects that do not support them (for instance, "textsize" on a path object). Reading such properties results in an "undefined" return value.

Shape

The geometry of a path object and the clipping path of a group object is an ipe::Shape. This is represented in Lua as a pure Lua object, namely an array with one entry per subpath.

Each subpath is again a table with a type field whose value must be one of "ellipse", "closedspline", or "curve".

For an ellipse, element 1 of the table is the matrix.

For a closed spline, the table contains the control points.

For a curve, the table has a second field closed, which is either true or false. The table also has an entry for each segment of the curve. Each segment is again a table with a type field, whose value is one of "arc", "segment", "spline", or "oldspline". The segment table contains the control points of the segment. For arc segments, there is an additional arc field in the segment table that contains the arc as an ipe.Arc object.


ipe-7.1.10/build/doc/classipe_1_1_segment.html0000644000175000017500000005273212624020245020754 0ustar otfriedotfried Ipelib: ipe::Segment Class Reference

#include <ipegeo.h>

Public Member Functions

 Segment ()
 
 Segment (const Vector &p, const Vector &q)
 
Line line () const
 
double distance (const Vector &v, double bound) const
 
double distance (const Vector &v) const
 
bool project (const Vector &v, Vector &projection) const
 
bool intersects (const Segment &seg, Vector &pt) const
 
bool intersects (const Line &l, Vector &pt) const
 
bool snap (const Vector &mouse, Vector &pos, double &bound) const
 

Public Attributes

Vector iP
 
Vector iQ
 

Detailed Description

A directed line segment.

Constructor & Destructor Documentation

ipe::Segment::Segment ( )
inline

Create uninitialized segment.

ipe::Segment::Segment ( const Vector p,
const Vector q 
)
inlineexplicit

Member Function Documentation

Line ipe::Segment::line ( ) const
inline

Return directed line supporting the segment.

References iP, and iQ.

Referenced by ipe::Arc::intersect(), intersects(), and ipe::Snap::setEdge().

double Segment::distance ( const Vector v,
double  bound 
) const

Returns distance between segment and point v, but may just return bound when its larger than bound.

References iP, and iQ.

Referenced by ipe::CurveSegment::distance().

double Segment::distance ( const Vector v) const

Returns distance between segment and point v

References ipe::Vector::factorize(), iP, and iQ.

bool Segment::project ( const Vector v,
Vector projection 
) const

Project point v orthogonally on segment. Returns false if the point falls outside the segment.

References ipe::Vector::factorize(), iP, and iQ.

Referenced by snap(), and ipe::Bezier::snap().

bool Segment::intersects ( const Segment seg,
Vector pt 
) const

Compute intersection point. Return false if segs don't intersect.

References iP, iQ, and line().

Referenced by ipe::Bezier::intersect(), and intersects().

bool Segment::intersects ( const Line l,
Vector pt 
) const

Compute intersection point. Return false if no intersection.

References intersects(), iP, iQ, and line().

bool Segment::snap ( const Vector mouse,
Vector pos,
double &  bound 
) const

Snap mouse position to this segment.

If distance between mouse and the segment is less than bound, then set pos to the point on the segment, bound to the distance, and return true.

References iP, iQ, project(), and ipe::Vector::snap().

Referenced by ipe::CurveSegment::snapBnd().

Member Data Documentation


The documentation for this class was generated from the following files:
  • ipegeo.h
  • ipegeo.cpp

ipe-7.1.10/build/doc/ftv2mnode.png0000644000175000017500000000036612624020245016507 0ustar otfriedotfried‰PNG  IHDRɪ|½IDATxíÝ!NAÅñ¤‡à\ ÷à Um@`Ô5iÒ`ëh ‚ÅW7] b§ÝˆŠ&oföÍd¾YÔ4 üšcø ‡€´‹Åòù3v=¼]†§µ\B… I¿‹=B·™B¡®;¸k´µ W°ÍN@vyÍÑÖ4ãß÷]ÈâYìã§|M}]ÔÚx6a }ôdׇØYüú¨>¤||5?Ó>|žB"¡î'¡IEND®B`‚ipe-7.1.10/build/doc/classipe_1_1_string-members.html0000644000175000017500000002305312624020245022242 0ustar otfriedotfried Ipelib: Member List
ipe::String Member List

This is the complete list of members for ipe::String, including all inherited members.

append(const String &rhs)ipe::String
append(char ch)ipe::String
data() const ipe::Stringinline
empty() const ipe::Stringinline
erase()ipe::String
find(char ch) const ipe::String
find(const char *rhs) const ipe::String
isEmpty() const ipe::Stringinline
left(int i) const ipe::Stringinline
operator!=(const String &rhs) const ipe::Stringinline
operator+(const String &rhs) const ipe::String
operator+=(const String &rhs)ipe::Stringinline
operator+=(char ch)ipe::Stringinline
operator<(const String &rhs) const ipe::String
operator=(const String &rhs)ipe::String
operator==(const String &rhs) const ipe::String
operator[](int i) const ipe::Stringinline
rfind(char ch) const ipe::String
right(int i) const ipe::String
size() const ipe::Stringinline
String()ipe::String
String(const char *str)ipe::String
String(const String &rhs)ipe::String
String(const String &rhs, int index, int len)ipe::String
substr(int i, int len=-1) const ipe::Stringinline
unicode(int &index) const ipe::String
z() const ipe::String
~String()ipe::String

ipe-7.1.10/build/doc/structipe_1_1_document_1_1_s_properties.html0000644000175000017500000003623612624020245024606 0ustar otfriedotfried Ipelib: ipe::Document::SProperties Struct Reference
ipe::Document::SProperties Struct Reference

#include <ipedoc.h>

Public Member Functions

 SProperties ()
 

Public Attributes

String iTitle
 
String iAuthor
 
String iSubject
 
String iKeywords
 
String iPreamble
 
bool iFullScreen
 
bool iNumberPages
 
String iCreated
 
String iModified
 
String iCreator
 

Detailed Description

Properties of a document.

Constructor & Destructor Documentation

Document::SProperties::SProperties ( )

Constructor clears the boolean flags.

Member Data Documentation

String ipe::Document::SProperties::iSubject
String ipe::Document::SProperties::iKeywords
String ipe::Document::SProperties::iPreamble
bool ipe::Document::SProperties::iFullScreen
bool ipe::Document::SProperties::iNumberPages
String ipe::Document::SProperties::iCreated

Date/time in PDF style "D:20010428191400" format.

Referenced by ipe::PdfWriter::createTrailer(), ipe::ImlParser::parseDocument(), and ipe::Document::saveAsXml().

String ipe::Document::SProperties::iModified
String ipe::Document::SProperties::iCreator

Program that created this document (e.g. "Ipe 7.5").

Referenced by ipe::PdfWriter::createTrailer(), ipe::ImlParser::parseDocument(), and ipe::Document::saveAsXml().


The documentation for this struct was generated from the following files:
  • ipedoc.h
  • ipedoc.cpp

ipe-7.1.10/build/doc/structipe_1_1_effect.html0000644000175000017500000004233212624020245020760 0ustar otfriedotfried Ipelib: ipe::Effect Class Reference

#include <ipeattributes.h>

Public Types

enum  TEffect {
  ENormal, ESplitHI, ESplitHO, ESplitVI,
  ESplitVO, EBlindsH, EBlindsV, EBoxI,
  EBoxO, EWipeLR, EWipeBT, EWipeRL,
  EWipeTB, EDissolve, EGlitterLR, EGlitterTB,
  EGlitterD
}
 

Public Member Functions

 Effect ()
 
void pageDictionary (Stream &stream) const
 

Public Attributes

TEffect iEffect
 
int iTransitionTime
 
int iDuration
 

Detailed Description

Effect that Acrobat Reader will show on page change.

Acrobat Reader and other PDF viewers can show a special effect when a new page of the document is shown. This class describes such an effect.

Member Enumeration Documentation

The various fancy effects that Acrobat Reader will show.

Enumerator
ENormal 
ESplitHI 
ESplitHO 
ESplitVI 
ESplitVO 
EBlindsH 
EBlindsV 
EBoxI 
EBoxO 
EWipeLR 
EWipeBT 
EWipeRL 
EWipeTB 
EDissolve 
EGlitterLR 
EGlitterTB 
EGlitterD 

Constructor & Destructor Documentation

Effect::Effect ( )

Construct default effect.

Member Function Documentation

void Effect::pageDictionary ( Stream stream) const

Write part of page dictionary.

Write part of page dictionary indicating effect, including the two keys /Dur and /Trans.

References EBlindsH, EBlindsV, EBoxI, EBoxO, EDissolve, EGlitterD, EGlitterLR, EGlitterTB, ENormal, ESplitHI, ESplitHO, ESplitVI, ESplitVO, EWipeBT, EWipeLR, EWipeRL, EWipeTB, iDuration, iEffect, and iTransitionTime.

Referenced by ipe::PdfWriter::createPageView().

Member Data Documentation

int ipe::Effect::iTransitionTime
int ipe::Effect::iDuration

The documentation for this class was generated from the following files:
  • ipeattributes.h
  • ipeattributes.cpp

ipe-7.1.10/build/doc/classipe_1_1_string.html0000644000175000017500000013076712624020245020625 0ustar otfriedotfried Ipelib: ipe::String Class Reference

#include <ipebase.h>

Public Member Functions

 String ()
 
 String (const char *str)
 
 String (const String &rhs)
 
 String (const String &rhs, int index, int len)
 
Stringoperator= (const String &rhs)
 
 ~String ()
 
char operator[] (int i) const
 
bool empty () const
 
bool isEmpty () const
 
const char * data () const
 
int size () const
 
void operator+= (const String &rhs)
 
void operator+= (char ch)
 
String substr (int i, int len=-1) const
 
String left (int i) const
 
String right (int i) const
 
bool operator!= (const String &rhs) const
 
int find (char ch) const
 
int rfind (char ch) const
 
int find (const char *rhs) const
 
void erase ()
 
void append (const String &rhs)
 
void append (char ch)
 
bool operator== (const String &rhs) const
 
bool operator< (const String &rhs) const
 
String operator+ (const String &rhs) const
 
int unicode (int &index) const
 
const char * z () const
 

Detailed Description

Strings and buffers.

String is is an implicitly shared byte string. It is designed to be efficient for strings of arbitrary length, and supposed to be passed by value (the size of String is a single pointer). Sharing is implicit—the string creates its own representation as soon as it is modified.

String can be used for binary data. For text, it is usually assumed that the string is UTF-8 encoded, but only the unicode member function actually requires this. In particular, all indices into the string are byte indices, not Unicode character indices.

Constructor & Destructor Documentation

String::String ( )

Construct an empty string.

Referenced by left(), right(), and substr().

String::String ( const char *  str)

Construct a string by making copy of str.

String::String ( const String rhs)

Copy constructor. This only copies the reference and takes constant time.

String::String ( const String rhs,
int  index,
int  len 
)

Construct a substring.

index must be >= 0. len can be negative or too large to return entire string.

References size().

String::~String ( )

Destruct string if reference count has reached zero.

Member Function Documentation

String & String::operator= ( const String rhs)

Assignment takes constant time.

char ipe::String::operator[] ( int  i) const
inline

Return character at index i.

bool ipe::String::isEmpty ( ) const
inline
const char* ipe::String::data ( ) const
inline
void ipe::String::operator+= ( const String rhs)
inline

Operator syntax for append.

References append().

void ipe::String::operator+= ( char  ch)
inline

Operator syntax for append.

References append().

String ipe::String::left ( int  i) const
inline
String String::right ( int  i) const

Create substring at the right.

Returns the entire string if i is larger than its length.

References size(), and String().

Referenced by ipe::Document::formatFromFilename(), and ipe::Platform::latexDirectory().

bool ipe::String::operator!= ( const String rhs) const
inline

Operator !=.

int String::find ( char  ch) const

Return index of first occurrence of ch.

Return -1 if character does not appear.

References size().

Referenced by ipe::Painter::dashStyle(), ipe::CairoPainter::doDrawText(), ipe::Reference::flagsFromName(), ipe::Document::runLatex(), and ipe::StyleSheet::saveAsXml().

int String::rfind ( char  ch) const

Return index of last occurrence of ch.

Return -1 if character does not appear.

References size().

Referenced by ipe::Reference::flagsFromName().

int String::find ( const char *  rhs) const

Return index of first occurrence of rhs.

Return -1 if not substring is not present.

References size().

void String::erase ( )

Make string empty.

Referenced by ipe::PdfParser::getToken().

void String::append ( const String rhs)

Append rhs to this string.

References size().

Referenced by ipe::PdfParser::getToken(), operator+(), operator+=(), and ipe::Platform::readFile().

void String::append ( char  ch)

Append ch to this string.

bool String::operator== ( const String rhs) const

Equality operator (bytewise comparison).

References size().

bool String::operator< ( const String rhs) const

Inequality operator (bytewise comparison).

References size().

String String::operator+ ( const String rhs) const

Concatenate this string with rhs.

References append().

int String::unicode ( int &  index) const

Return Unicode value from UTF-8 string.

The index is incremented to the next UTF-8 character. This returns 0xfffd if there is any problem in parsing UTF-8.

Referenced by ipe::Latex::createLatexSource().


The documentation for this class was generated from the following files:
  • ipebase.h
  • ipebase.cpp

ipe-7.1.10/build/doc/classipe_1_1_bitmap_1_1_m_render_data-members.html0000644000175000017500000000525612624020245025521 0ustar otfriedotfried Ipelib: Member List
ipe::Bitmap::MRenderData Member List

This is the complete list of members for ipe::Bitmap::MRenderData, including all inherited members.

~MRenderData()ipe::Bitmap::MRenderDatavirtual

ipe-7.1.10/build/doc/classipe_1_1_iml_parser-members.html0000644000175000017500000002506012624020245023071 0ustar otfriedotfried Ipelib: Member List
ipe::ImlParser Member List

This is the complete list of members for ipe::ImlParser, including all inherited members.

eos()ipe::XmlParserinline
Errors enum nameipe::ImlParser
ESuccess enum valueipe::ImlParser
ESyntaxError enum valueipe::ImlParser
EVersionTooOld enum valueipe::ImlParser
EVersionTooRecent enum valueipe::ImlParser
getChar()ipe::XmlParserinline
iChipe::XmlParserprotected
ImlParser(DataSource &source)ipe::ImlParserexplicit
iPosipe::XmlParserprotected
iSourceipe::XmlParserprotected
isTagChar(int ch)ipe::XmlParserinline
iTopElementipe::XmlParserprotected
parseAttributes(XmlAttributes &attr, bool qm=false)ipe::XmlParser
parseBitmap()ipe::ImlParser
parseDocument(Document &doc)ipe::ImlParser
parseFontmap(String *stdNames, String *paths)ipe::ImlParser
parseObject(String tag, Page *page=0, int *currentLayer=0)ipe::ImlParser
parsePage(Page &page)ipe::ImlParser
parsePageSelection()ipe::ImlParser
parsePCDATA(String tag, String &pcdata)ipe::XmlParser
parsePosition() const ipe::XmlParserinline
parseStyle(StyleSheet &sheet)ipe::ImlParser
parseStyleSheet()ipe::ImlParser
parseToTag()ipe::XmlParser
parseToTagX()ipe::XmlParserprotected
pdfStream(int objNum)ipe::ImlParservirtual
skipWhitespace()ipe::XmlParser
XmlParser(DataSource &source)ipe::XmlParser
~XmlParser()ipe::XmlParservirtual

ipe-7.1.10/build/doc/structipe_1_1_tiling-members.html0000644000175000017500000000564212624020245022445 0ustar otfriedotfried Ipelib: Member List
ipe::Tiling Member List

This is the complete list of members for ipe::Tiling, including all inherited members.

iAngleipe::Tiling
iStepipe::Tiling
iWidthipe::Tiling

ipe-7.1.10/build/doc/structipe_1_1_style_sheet_1_1_page_number_style-members.html0000644000175000017500000000717712624020245027740 0ustar otfriedotfried Ipelib: Member List
ipe::StyleSheet::PageNumberStyle Member List

ipe-7.1.10/build/doc/dir_91a90e6e897462a7bb8a7a0fc103953b.html0000644000175000017500000001250012624020245022116 0ustar otfriedotfried Ipelib: ipecanvas Directory Reference
ipecanvas Directory Reference

Files

file  ipecanvas.cpp
 
file  ipecanvas.h
 
file  ipecanvas_gtk.cpp
 
file  ipecanvas_gtk.h
 
file  ipecanvas_qt.cpp
 
file  ipecanvas_qt.h
 
file  ipecanvas_win.cpp
 
file  ipecanvas_win.h
 
file  ipeselector_gtk.cpp
 
file  ipeselector_qt.cpp
 
file  ipeselector_qt.h
 
file  ipeselector_win.cpp
 
file  ipetool.cpp
 
file  ipetool.h
 

ipe-7.1.10/build/doc/functions_func_r.html0000644000175000017500000002020312624020245020317 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- r -


ipe-7.1.10/build/doc/manual_8.html0000644000175000017500000001064412624020245016467 0ustar otfriedotfried Ipe Manual -- 3.5 Pen, dash style, arrows, and tiling patterns
3.6 Transparency3 General Concepts3.4 Stroke and fill colors3.5 Pen, dash style, arrows, and tiling patterns

3.5 Pen, dash style, arrows, and tiling patterns

The path properties field is used to set all properties of path objects except for the pen width, which is set using the selector just above the path properties field. The dash-dot pattern (solid line, dashed, dotted etc.) effect for the boundaries of path objects, such as polygons and polygonal lines, splines, circles and ellipses, rectangles and circular arcs. It does not effect text or marks.

Line width is given in Postscript points (1/72 inch). A good value is something around 0.4 or 0.6.1

By clicking near the ends of the segment shown in the path properties field, you can toggle the front and rear arrows. Only polygonal lines, splines, and circular arcs can have arrows.

If you draw a single line segment with arrows and set it to "filled only", then the arrows will be drawn using the fill color (instead of the stroke color), and the segment is not drawn at all. This is sometimes useful to place arrows that do not appear at the end of a curve.

Various shapes and sizes of arrows are available through the context menu in the path properties field. You can add other shapes and sizes using a stylesheet.

The arrow shapes arc and farc are special. When the final segment of a path object is a circular arc, then these arcs take on a curved shape that depends on the radius of the arc. They are designed to look right even for arcs with rather small radius.

A tiling pattern allows you to hatch a path object instead of filling it with a solid color. Only path objects can be filled with a tiling pattern. The pattern defines the slope, thickness, and density of the hatching lines, their color is taken from the object's fill color. You can select a tiling pattern using the context menu in the path properties field. You can define your own tiling patterns in the documents stylesheet.

ipe-7.1.10/build/doc/classipe_1_1_ps_writer-members.html0000644000175000017500000000746712624020245022765 0ustar otfriedotfried Ipelib: Member List
ipe::PsWriter Member List

This is the complete list of members for ipe::PsWriter, including all inherited members.

createHeader(int pno=0, int vno=0)ipe::PsWriter
createPageView(int pno=0, int vno=0)ipe::PsWriter
createTrailer()ipe::PsWriter
createXml(int compressLevel)ipe::PsWriter
PsWriter(TellStream &stream, const Document *doc, bool noColor)ipe::PsWriter
~PsWriter()ipe::PsWriter

ipe-7.1.10/build/doc/classipe_1_1_ps_writer.html0000644000175000017500000002127012624020245021321 0ustar otfriedotfried Ipelib: ipe::PsWriter Class Reference
ipe::PsWriter Class Reference

#include <ipepswriter.h>

Public Member Functions

 PsWriter (TellStream &stream, const Document *doc, bool noColor)
 
 ~PsWriter ()
 
bool createHeader (int pno=0, int vno=0)
 
void createPageView (int pno=0, int vno=0)
 
void createXml (int compressLevel)
 
void createTrailer ()
 

Constructor & Destructor Documentation

ipe::PsWriter::PsWriter ( TellStream stream,
const Document doc,
bool  noColor 
)
ipe::PsWriter::~PsWriter ( )

Member Function Documentation

bool ipe::PsWriter::createHeader ( int  pno = 0,
int  vno = 0 
)
void ipe::PsWriter::createPageView ( int  pno = 0,
int  vno = 0 
)
void ipe::PsWriter::createXml ( int  compressLevel)
void ipe::PsWriter::createTrailer ( )

The documentation for this class was generated from the following file:
  • ipepswriter.h

ipe-7.1.10/build/doc/classipe_1_1_pdf_painter-members.html0000644000175000017500000005740012624020245023232 0ustar otfriedotfried Ipelib: Member List
ipe::PdfPainter Member List

This is the complete list of members for ipe::PdfPainter, including all inherited members.

addClipPath()ipe::Painter
cascade() const ipe::Painterinline
closePath()ipe::Painter
curveTo(const Vector &v1, const Vector &v2, const Vector &v3)ipe::Painter
curveTo(const Bezier &bezier)ipe::Painterinline
dashStyle() const ipe::Painterinline
dashStyle(std::vector< double > &dashes, double &offset) const ipe::Painter
doAddClipPath()ipe::PdfPainterprotectedvirtual
doClosePath()ipe::PdfPainterprotectedvirtual
doCurveTo(const Vector &v1, const Vector &v2, const Vector &v3)ipe::PdfPainterprotectedvirtual
doDrawArc(const Arc &arc)ipe::Painterprotectedvirtual
doDrawBitmap(Bitmap bitmap)ipe::PdfPainterprotectedvirtual
doDrawPath(TPathMode mode)ipe::PdfPainterprotectedvirtual
doDrawSymbol(Attribute symbol)ipe::PdfPainterprotectedvirtual
doDrawText(const Text *text)ipe::PdfPainterprotectedvirtual
doLineTo(const Vector &v)ipe::PdfPainterprotectedvirtual
doMoveTo(const Vector &v)ipe::PdfPainterprotectedvirtual
doNewPath()ipe::PdfPainterprotectedvirtual
doPop()ipe::PdfPainterprotectedvirtual
doPush()ipe::PdfPainterprotectedvirtual
drawArc(const Arc &arc)ipe::Painter
drawArcAsBezier(double alpha)ipe::Painterprotected
drawAttributes()ipe::PdfPainterprotected
drawBitmap(Bitmap bitmap)ipe::Painter
drawColor(Stream &stream, Color color, const char *gray, const char *rgb)ipe::PdfPainterstatic
drawEllipse()ipe::Painter
drawOpacity()ipe::PdfPainterprotected
drawPath(TPathMode mode)ipe::Painter
drawSymbol(Attribute symbol)ipe::Painter
drawText(const Text *text)ipe::Painter
fill() const ipe::Painterinline
fillRule() const ipe::Painterinline
gradient() const ipe::Painterinline
iActiveStateipe::PdfPainterprotected
iCascadeipe::Painterprotected
iInPathipe::Painterprotected
iMatrixipe::Painterprotected
iStateipe::Painterprotected
iStreamipe::PdfPainterprotected
lineCap() const ipe::Painterinline
lineJoin() const ipe::Painterinline
lineTo(const Vector &v)ipe::Painter
matrix() const ipe::Painterinline
moveTo(const Vector &v)ipe::Painter
newPath()ipe::Painter
opacity() const ipe::Painterinline
Painter(const Cascade *style)ipe::Painter
PdfPainter(const Cascade *style, Stream &stream)ipe::PdfPainter
pen() const ipe::Painterinline
pop()ipe::Painter
popMatrix()ipe::Painter
push()ipe::Painter
pushMatrix()ipe::Painter
rect(const Rect &re)ipe::Painter
setDashStyle(Attribute dash)ipe::Painter
setFill(Attribute color)ipe::Painter
setFillRule(TFillRule rule)ipe::Painter
setGradient(Attribute grad)ipe::Painter
setLineCap(TLineCap cap)ipe::Painter
setLineJoin(TLineJoin join)ipe::Painter
setOpacity(Attribute opaq)ipe::Painter
setPen(Attribute pen)ipe::Painter
setStroke(Attribute color)ipe::Painter
setSymFill(Attribute color)ipe::Painter
setSymPen(Attribute wid)ipe::Painter
setSymStroke(Attribute color)ipe::Painter
setTiling(Attribute til)ipe::Painter
stroke() const ipe::Painterinline
symFill() const ipe::Painterinline
symPen() const ipe::Painterinline
symStroke() const ipe::Painterinline
tiling() const ipe::Painterinline
transform(const Matrix &m)ipe::Painter
translate(const Vector &v)ipe::Painter
untransform(TTransformations trans)ipe::Painter
~Painter()ipe::Paintervirtual
~PdfPainter()ipe::PdfPainterinlinevirtual

ipe-7.1.10/build/doc/class_ipe_auto_ptr-members.html0000644000175000017500000000727512624020245022300 0ustar otfriedotfried Ipelib: Member List
IpeAutoPtr< T > Member List

This is the complete list of members for IpeAutoPtr< T >, including all inherited members.

IpeAutoPtr(T *ptr)IpeAutoPtr< T >inline
operator*()IpeAutoPtr< T >inline
operator->()IpeAutoPtr< T >inline
ptr()IpeAutoPtr< T >inline
take()IpeAutoPtr< T >inline
~IpeAutoPtr()IpeAutoPtr< T >inline

ipe-7.1.10/build/doc/manual_47.html0000644000175000017500000000507612624020245016555 0ustar otfriedotfried Ipe Manual -- 12 Command line options and environment variables
13 History and acknowledgmentsTop11 Using Ipe figures in Latex12 Command line options and environment variables

12 Command line options and environment variables

ipe-7.1.10/build/doc/classipe_1_1_page.html0000644000175000017500000034422612624020245020230 0ustar otfriedotfried Ipelib: ipe::Page Class Reference

#include <ipepage.h>

Public Member Functions

 Page ()
 
void saveAsXml (Stream &stream) const
 
void saveAsIpePage (Stream &stream) const
 
void saveSelection (Stream &stream) const
 
int countLayers () const
 
String layer (int index) const
 
bool isLocked (int i) const
 
bool hasSnapping (int i) const
 
void setLocked (int i, bool flag)
 
void setSnapping (int i, bool flag)
 
void moveLayer (int index, int newIndex)
 
int findLayer (String name) const
 
void addLayer (String name)
 
void addLayer ()
 
void removeLayer (String name)
 
void renameLayer (String oldName, String newName)
 
int countViews () const
 
int countMarkedViews () const
 
Attribute effect (int index) const
 
void setEffect (int index, Attribute sym)
 
String active (int index) const
 
void setActive (int index, String name)
 
bool markedView (int index) const
 
void setMarkedView (int index, bool marked)
 
void insertView (int i, String active)
 
void removeView (int i)
 
void clearViews ()
 
bool visible (int view, int layer) const
 
bool objectVisible (int view, int objno) const
 
void setVisible (int view, String layer, bool vis)
 
String title () const
 
void setTitle (String title)
 
String section (int level) const
 
void setSection (int level, bool useTitle, String name)
 
bool sectionUsesTitle (int level) const
 
const TexttitleText () const
 
void applyTitleStyle (const Cascade *sheet)
 
bool marked () const
 
void setMarked (bool marked)
 
String notes () const
 
void setNotes (String notes)
 
int count () const
 
Objectobject (int i)
 
const Objectobject (int i) const
 
TSelect select (int i) const
 
int layerOf (int i) const
 
void setSelect (int i, TSelect sel)
 
void setLayerOf (int i, int layer)
 
Rect pageBBox (const Cascade *sheet) const
 
Rect viewBBox (const Cascade *sheet, int view) const
 
Rect bbox (int i) const
 
void transform (int i, const Matrix &m)
 
double distance (int i, const Vector &v, double bound) const
 
void snapVtx (int i, const Vector &mouse, Vector &pos, double &bound) const
 
void snapCtl (int i, const Vector &mouse, Vector &pos, double &bound) const
 
void snapBnd (int i, const Vector &mouse, Vector &pos, double &bound) const
 
void invalidateBBox (int i) const
 
void insert (int i, TSelect sel, int layer, Object *obj)
 
void append (TSelect sel, int layer, Object *obj)
 
void remove (int i)
 
void replace (int i, Object *obj)
 
bool setAttribute (int i, Property prop, Attribute value)
 
int primarySelection () const
 
bool hasSelection () const
 
void deselectAll ()
 
void ensurePrimarySelection ()
 

Static Public Member Functions

static Pagebasic ()
 

Detailed Description

An Ipe document page.

Its main ingredients are a sequence of Objects (with selection state, layer, and a cached bounding box), a set of Layers, and a sequence of Views.

Each object on a Page belongs to one of the layers of the page. Layers are orthogonal to the back-to-front ordering of objects (in particular, they are not "layered" - the word is a misnomer). The "layer" is really just another attribute of the object.

  • Layers are either editable or locked. Objects in a locked layer cannot be selected, and a locked layer cannot be made active in the UI. This more or less means that the contents of such a layer cannot be modified—but that's a consequence of the UI, Ipelib contains no special handling of locked layers.
  • A layer may have snapping on or off—objects will behave magnetically only if their layer has snapping on.

A Page is presented in a number of views. Each view presents some of the layers of the page. In addition, each view has an active layer (where objects are added when this view is shown in the UI), and possibly a transition effect (Acrobat Reader eye candy).

A Page can be copied and assigned. The operation takes time linear in the number of top-level object on the page.

Constructor & Destructor Documentation

Page::Page ( )
explicit

The default constructor creates a new empty page.

This page still needs a layer and a view to be usable!

Referenced by basic().

Member Function Documentation

Page * Page::basic ( )
static

Create a new empty page with standard settings.

This is an empty page with layer 'alpha' and a single view.

References addLayer(), insertView(), Page(), and setVisible().

void Page::saveAsIpePage ( Stream stream) const

Copy whole page with bitmaps as <ipepage> into the stream.

References ipe::BitmapFinder::iBitmaps, saveAsXml(), ipe::Bitmap::saveAsXml(), ipe::BitmapFinder::scanPage(), and ipe::Bitmap::setObjNum().

void Page::saveSelection ( Stream stream) const

Copy selected objects as <ipeselection> into the stream.

References count(), ipe::BitmapFinder::iBitmaps, ipe::Bitmap::saveAsXml(), select(), and ipe::Bitmap::setObjNum().

int ipe::Page::countLayers ( ) const
inline
String ipe::Page::layer ( int  index) const
inline
bool ipe::Page::isLocked ( int  i) const
inline

Is layer i locked?

Referenced by ipe::ImlParser::parsePage(), and ipe::SelectTool::SelectTool().

bool ipe::Page::hasSnapping ( int  i) const
inline

Does layer i have active snapping?

Referenced by ipe::Snap::simpleSnap().

void Page::setLocked ( int  i,
bool  flag 
)

Set locking of layer i.

Referenced by ipe::ImlParser::parsePage().

void Page::setSnapping ( int  i,
bool  flag 
)

Set snapping of layer i.

void Page::moveLayer ( int  index,
int  newIndex 
)

Moves the position of a layer in the layer list.

References layer().

int Page::findLayer ( String  name) const
void Page::addLayer ( String  name)

Add a new layer.

References countViews().

Referenced by basic(), and ipe::ImlParser::parsePage().

void Page::addLayer ( )

Add a new layer with unique name.

References findLayer().

void Page::removeLayer ( String  name)

Removes an empty layer from the page.

All objects are adjusted. Panics if there are objects in the deleted layer, of if it is the only layer.

References findLayer().

void Page::renameLayer ( String  oldName,
String  newName 
)

Rename a layer.

References findLayer().

int Page::countMarkedViews ( ) const
Attribute ipe::Page::effect ( int  index) const
inline

Return effect of view.

Referenced by ipe::PdfWriter::createPageView(), and saveAsXml().

void Page::setEffect ( int  index,
Attribute  sym 
)

Set effect of view.

Panics if sym is not symbolic.

References ipe::Attribute::isSymbolic().

Referenced by ipe::ImlParser::parsePage().

String ipe::Page::active ( int  index) const
inline

Return active layer of view.

Referenced by insertView(), and saveAsXml().

void Page::setActive ( int  index,
String  name 
)

Set active layer of view.

References findLayer(), and layer().

Referenced by ipe::ImlParser::parsePage().

bool ipe::Page::markedView ( int  index) const
inline

Return if view is marked.

Referenced by countMarkedViews(), ipe::PdfWriter::createPages(), and saveAsXml().

void Page::setMarkedView ( int  index,
bool  marked 
)

Set if view is marked.

References marked().

Referenced by ipe::ImlParser::parsePage().

void Page::insertView ( int  i,
String  active 
)

Insert a new view at index i.

References active(), and countLayers().

Referenced by basic(), and ipe::ImlParser::parsePage().

void Page::removeView ( int  i)

Remove the view at index i.

References countLayers().

void Page::clearViews ( )

Remove all views of this page.

bool ipe::Page::visible ( int  view,
int  layer 
) const
inline

Is layer visible in view?

References layer().

Referenced by ipe::PdfWriter::createPageView(), pageBBox(), and saveAsXml().

bool ipe::Page::objectVisible ( int  view,
int  objno 
) const
inline
void Page::setVisible ( int  view,
String  layer,
bool  vis 
)

Set visibility of layer layer in view view.

References findLayer().

Referenced by basic(), and ipe::ImlParser::parsePage().

String Page::title ( ) const
void Page::setTitle ( String  title)

Set the title of this page.

An empty title is not displayed.

References ipe::Text::setText(), and title().

Referenced by ipe::ImlParser::parsePage().

String Page::section ( int  level) const

Return section title at level.

Level 0 is the section, level 1 the subsection.

References title().

Referenced by ipe::PdfWriter::createBookmarks().

void Page::setSection ( int  level,
bool  useTitle,
String  name 
)

Set the section title at level.

Level 0 is the section, level 1 the subsection.

If useTitle is true, then name is ignored, and the section title will be copied from the page title (and further changes to the page title are automatically reflected).

Referenced by ipe::ImlParser::parsePage().

bool ipe::Page::sectionUsesTitle ( int  level) const
inline

Does this section title reflect the page title?

const Text * Page::titleText ( ) const

Return Text object representing the title text.

Return 0 if no title is set. Ownership of object remains with Page.

References title().

Referenced by ipe::CanvasBase::drawObjects(), and ipe::Latex::scanPage().

bool ipe::Page::marked ( ) const
inline

Return if page is marked for printing.

Referenced by ipe::PdfWriter::createPages(), ipe::PdfWriter::createTrailer(), setMarked(), and setMarkedView().

void Page::setMarked ( bool  marked)

Set if page is marked for printing.

References marked().

Referenced by ipe::ImlParser::parsePage().

String ipe::Page::notes ( ) const
inline

Return notes for this page.

Referenced by setNotes().

void Page::setNotes ( String  notes)

Set the notes of this page.

References notes().

Referenced by ipe::ImlParser::parsePage().

const Object* ipe::Page::object ( int  i) const
inline

Return object at index i (const version).

int ipe::Page::layerOf ( int  i) const
inline

Return layer of object at index i.

Referenced by objectVisible(), pageBBox(), ipe::SelectTool::SelectTool(), and ipe::Snap::simpleSnap().

void ipe::Page::setSelect ( int  i,
TSelect  sel 
)
inline

Set selection status of object at index i.

Referenced by deselectAll(), ensurePrimarySelection(), and ipe::SelectTool::mouseButton().

void ipe::Page::setLayerOf ( int  i,
int  layer 
)
inline

Set layer of object at index i.

References layer().

Rect Page::pageBBox ( const Cascade sheet) const

Returns a precise bounding box for the artwork on the page.

This is meant to be used as the bounding box in PDF and EPS output. It is computed by rendering all objects on the page that are visible in at least one view, plus all objects in a layer named "BBOX" (even if that is not visible), using a BBoxPainter.

References ipe::BBoxPainter::bbox(), count(), countLayers(), countViews(), layer(), layerOf(), and visible().

Referenced by ipe::PdfWriter::createPageView(), and ipe::Thumbnail::saveRender().

Rect Page::viewBBox ( const Cascade sheet,
int  view 
) const

Returns a precise bounding box for the artwork in the view.

This is meant to be used as the bounding box in PDF and EPS output. It is computed by rendering all objects in the page using a BBoxPainter.

References ipe::BBoxPainter::bbox(), count(), and objectVisible().

Referenced by ipe::PdfWriter::createPageView().

Rect Page::bbox ( int  i) const

Return a bounding box for the object at index i.

This is a bounding box including the control points of the object. If you need a tight bounding box, you'll need to use the Object directly.

The Page caches the box the first time it is computed.

Make sure you call Page::transform instead of Object::setMatrix, as the latter would not invalidate the bounding box.

Referenced by distance(), snapBnd(), snapCtl(), snapVtx(), and ipe::TransformTool::TransformTool().

void Page::transform ( int  i,
const Matrix m 
)

Transform the object at index i.

Use this function instead of calling Object::setMatrix directly, as the latter doesn't invalidate the cached bounding box.

References invalidateBBox(), object(), and ipe::Object::setMatrix().

double Page::distance ( int  i,
const Vector v,
double  bound 
) const

Return distance between object at index i and v.

But may just return bound if the distance is larger. This function uses the cached bounded box, and is faster than calling Object::distance directly.

References bbox(), ipe::Object::distance(), and object().

Referenced by ipe::SelectTool::SelectTool().

void Page::snapVtx ( int  i,
const Vector mouse,
Vector pos,
double &  bound 
) const

Compute possible vertex snapping position for object at index i.

Looks only for positions closer than bound. If successful, modifies pos and bound.

References bbox(), object(), and ipe::Object::snapVtx().

Referenced by ipe::Snap::simpleSnap().

void Page::snapCtl ( int  i,
const Vector mouse,
Vector pos,
double &  bound 
) const

Compute possible control point snapping position for object at index i.

Looks only for positions closer than bound. If successful, modifies pos and bound.

References bbox(), object(), and ipe::Object::snapCtl().

Referenced by ipe::Snap::simpleSnap().

void Page::snapBnd ( int  i,
const Vector mouse,
Vector pos,
double &  bound 
) const

Compute possible boundary snapping position for object at index i.

Looks only for positions closer than bound. If successful, modifies pos and bound.

References bbox(), object(), and ipe::Object::snapBnd().

Referenced by ipe::Snap::simpleSnap().

void Page::invalidateBBox ( int  i) const

Invalidate the bounding box at index i (the object is somehow changed).

Referenced by replace(), ipe::Latex::scanPage(), setAttribute(), and transform().

void Page::insert ( int  i,
TSelect  select,
int  layer,
Object obj 
)

Insert a new object at index i.

Takes ownership of the object.

References layer(), and select().

Referenced by ipe::ImlParser::parsePage().

void Page::append ( TSelect  select,
int  layer,
Object obj 
)

Append a new object.

Takes ownership of the object.

References layer(), and select().

void Page::remove ( int  i)

Remove the object at index i.

void Page::replace ( int  i,
Object obj 
)

Replace the object at index i.

Takes ownership of obj.

References invalidateBBox().

bool Page::setAttribute ( int  i,
Property  prop,
Attribute  value 
)

Set attribute prop of object at index i to value.

This method automatically invalidates the bounding box if a ETextSize property is actually changed.

References ipe::EPropTextSize, ipe::EPropTransformations, invalidateBBox(), object(), and ipe::Object::setAttribute().

int Page::primarySelection ( ) const

Return index of primary selection.

Returns -1 if there is no primary selection.

References count(), ipe::EPrimarySelected, and select().

Referenced by ipe::SelectTool::mouseButton().

bool Page::hasSelection ( ) const

Returns true iff any object on the page is selected.

References count(), and select().

Referenced by ipe::SelectTool::mouseButton().

void Page::deselectAll ( )

Deselect all objects.

References count(), ipe::ENotSelected, and setSelect().

Referenced by ipe::SelectTool::mouseButton().

void Page::ensurePrimarySelection ( )

If no object is the primary selection, make the topmost secondary selection the primary one.

References count(), ipe::EPrimarySelected, ipe::ESecondarySelected, select(), and setSelect().

Referenced by ipe::SelectTool::mouseButton().


The documentation for this class was generated from the following files:
  • ipepage.h
  • ipepage.cpp

ipe-7.1.10/build/doc/structipe_1_1_gradient-members.html0000644000175000017500000001074612624020245022755 0ustar otfriedotfried Ipelib: Member List
ipe::Gradient Member List

ipe-7.1.10/build/doc/classipe_1_1_matrix.html0000644000175000017500000010422412624020245020610 0ustar otfriedotfried Ipelib: ipe::Matrix Class Reference

#include <ipegeo.h>

Public Member Functions

 Matrix ()
 
 Matrix (const Linear &linear)
 
 Matrix (const Linear &linear, const Vector &t)
 
 Matrix (double m11, double m21, double m12, double m22, double t1, double t2)
 
 Matrix (const Vector &v)
 
 Matrix (String str)
 
Matrix inverse () const
 
Vector operator* (const Vector &rhs) const
 
Bezier operator* (const Bezier &rhs) const
 
Vector translation () const
 
Linear linear () const
 
double determinant () const
 
bool isIdentity () const
 
bool operator== (const Matrix &rhs) const
 

Public Attributes

double a [6]
 

Related Functions

(Note that these are not member functions.)

Streamoperator<< (Stream &stream, const Matrix &rhs)
 
Bezier operator* (const Bezier &rhs) const
 
Vector operator* (const Vector &rhs) const
 
Matrix operator* (const Matrix &lhs, const Matrix &rhs)
 
Arc operator* (const Matrix &lhs, const Arc &rhs)
 

Detailed Description

Homogeneous transformation in the plane.

Constructor & Destructor Documentation

ipe::Matrix::Matrix ( )
inline

Create identity matrix.

References a.

Referenced by inverse().

ipe::Matrix::Matrix ( const Linear linear)
inline

Create linear matrix.

References ipe::Linear::a, and a.

ipe::Matrix::Matrix ( const Linear linear,
const Vector t 
)
inlineexplicit
ipe::Matrix::Matrix ( double  m11,
double  m21,
double  m12,
double  m22,
double  t1,
double  t2 
)
inlineexplicit

Create matrix with given coefficients.

References a.

ipe::Matrix::Matrix ( const Vector v)
inlineexplicit

Create translation matrix.

References a, ipe::Vector::x, and ipe::Vector::y.

Matrix::Matrix ( String  str)
explicit

Parse string.

Member Function Documentation

Matrix Matrix::inverse ( ) const

Return inverse.

References a, determinant(), and Matrix().

Referenced by ipe::Arc::Arc(), ipe::Arc::distance(), and ipe::Arc::intersect().

Vector ipe::Matrix::operator* ( const Vector rhs) const
inline
Bezier ipe::Matrix::operator* ( const Bezier rhs) const
inline
Vector ipe::Matrix::translation ( ) const
inline

Return translation component.

References a.

Referenced by ipe::CairoPainter::doDrawText(), ipe::Path::draw(), and ipe::Painter::untransform().

Linear ipe::Matrix::linear ( ) const
inline

Return linear transformation component of this affine transformation.

References a.

Referenced by ipe::Arc::bbox(), ipe::Path::draw(), ipe::Arc::intersect(), and ipe::Snap::setEdge().

double ipe::Matrix::determinant ( ) const
inline

Return determinant of the matrix.

References a.

Referenced by inverse(), and ipe::Shape::load().

bool ipe::Matrix::isIdentity ( ) const
inline

Is this the identity matrix?

References a.

Referenced by ipe::StyleSheet::saveAsXml(), and ipe::Object::saveAttributesAsXml().

bool ipe::Matrix::operator== ( const Matrix rhs) const
inline

Check for equality of two matrices.

References a.

Friends And Related Function Documentation

Stream & operator<< ( Stream stream,
const Matrix rhs 
)
related
Bezier operator* ( const Bezier rhs) const
related

Transform Bezier spline.

References ipe::Bezier::iV.

Vector operator* ( const Vector rhs) const
related

Matrix times vector.

References a, ipe::Vector::x, and ipe::Vector::y.

Matrix operator* ( const Matrix lhs,
const Matrix rhs 
)
related

Matrix multiplication.

References a.

Arc operator* ( const Matrix lhs,
const Arc rhs 
)
related

Transform arc.

References ipe::Arc::iAlpha, ipe::Arc::iBeta, and ipe::Arc::iM.

Member Data Documentation


The documentation for this class was generated from the following files:
  • ipegeo.h
  • ipegeo.cpp

ipe-7.1.10/build/doc/functions_func_w.html0000644000175000017500000001405512624020245020334 0ustar otfriedotfried Ipelib: Class Members - Functions
ipe-7.1.10/build/doc/namespacemembers_func.html0000644000175000017500000000532312624020245021303 0ustar otfriedotfried Ipelib: Namespace Members
 

ipe-7.1.10/build/doc/classipe_1_1_repository.html0000644000175000017500000002205412624020245021523 0ustar otfriedotfried Ipelib: ipe::Repository Class Reference

#include <ipeattributes.h>

Public Member Functions

String toString (int index) const
 
int toIndex (String str)
 

Static Public Member Functions

static Repositoryget ()
 
static void cleanup ()
 

Detailed Description

Repository of strings.

Ipe documents can use symbolic attributes, such as 'normal', 'fat', or 'thin' for line thickness, or 'red', 'navy', 'turquoise' for color, as well as absolute attributes such as "[3 1] 0" for a dash pattern. To avoid storing these common strings hundreds of times, Repository keeps a repository of strings. Inside an Object, strings are replaced by indices into the repository.

The Repository is a singleton object. It is created the first time it is used. You obtain access to the repository using get().

Member Function Documentation

Repository * Repository::get ( )
static
void Repository::cleanup ( )
static

Destroy repository object.

String Repository::toString ( int  index) const

Return string with given index.

Referenced by ipe::StyleSheet::saveAsXml(), and ipe::Attribute::string().

int Repository::toIndex ( String  str)

Return index of given string.

The string is added to the repository if it doesn't exist yet.

References ipe::String::isEmpty().

Referenced by ipe::Attribute::Attribute().


The documentation for this class was generated from the following files:
  • ipeattributes.h
  • ipeattributes.cpp

ipe-7.1.10/build/doc/manual_14.html0000644000175000017500000001032012624020245016533 0ustar otfriedotfried Ipe Manual -- 3.11 Mouse shortcuts
3 General Concepts3.10 Layers3.11 Mouse shortcuts

3.11 Mouse shortcuts

For the beginner, choosing a selection or transformation mode and working with the left mouse button is easiest. Frequent Ipe users don't mind to remember the following shortcuts, as they allow you to perform selections and transformations without leaving the current mode:

Left Mouse Right mouse
Plain (*) context menu
Shift (*) pan
Ctrl select stretch
Ctrl+Shift select non-destructively scale
Alt translate rotate
Alt+Shift translate horizontal/vertical rotate

The fields marked (*) depend on the current mode.

The middle mouse button always pans the canvas. The right mouse button brings up the object context menu.

If you have to use Ipe with a two-button mouse, where you would normally use the middle mouse button (for instance, to move a vertex when editing a path object), you can hold the Shift-key and use the right mouse button.

If you are not happy with these shortcuts, they can be changed easily.

ipe-7.1.10/build/doc/classipe_1_1_pdf_file.html0000644000175000017500000002513112624020245021053 0ustar otfriedotfried Ipelib: ipe::PdfFile Class Reference
ipe::PdfFile Class Reference

#include <ipepdfparser.h>

Public Member Functions

 PdfFile ()
 
 ~PdfFile ()
 
bool parse (DataSource &source)
 
const PdfObjobject (int num) const
 
const PdfDictcatalog () const
 
const PdfDictpage () const
 

Detailed Description

All information obtained by parsing a PDF file.

Constructor & Destructor Documentation

PdfFile::PdfFile ( )

Create empty container.

PdfFile::~PdfFile ( )

Member Function Documentation

const PdfObj * PdfFile::object ( int  num) const

Return object with number num.

Referenced by ipe::PdfDict::get(), and ipe::PdfArray::obj().

const PdfDict * PdfFile::catalog ( ) const

Return root catalog of PDF file.

References ipe::PdfObj::dict(), and ipe::PdfDict::get().

Referenced by page().

const PdfDict * PdfFile::page ( ) const

Return first page of the document.

References ipe::PdfObj::array(), catalog(), ipe::PdfObj::dict(), ipe::PdfDict::get(), and ipe::PdfArray::obj().

Referenced by ipe::Latex::readPdf().


The documentation for this class was generated from the following files:
  • ipepdfparser.h
  • ipepdfparser.cpp

ipe-7.1.10/build/doc/functions_func_o.html0000644000175000017500000002546212624020245020330 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- o -


ipe-7.1.10/build/doc/classipe_1_1_xml_parser-members.html0000644000175000017500000001461712624020245023116 0ustar otfriedotfried Ipelib: Member List
ipe::XmlParser Member List

This is the complete list of members for ipe::XmlParser, including all inherited members.

eos()ipe::XmlParserinline
getChar()ipe::XmlParserinline
iChipe::XmlParserprotected
iPosipe::XmlParserprotected
iSourceipe::XmlParserprotected
isTagChar(int ch)ipe::XmlParserinline
iTopElementipe::XmlParserprotected
parseAttributes(XmlAttributes &attr, bool qm=false)ipe::XmlParser
parsePCDATA(String tag, String &pcdata)ipe::XmlParser
parsePosition() const ipe::XmlParserinline
parseToTag()ipe::XmlParser
parseToTagX()ipe::XmlParserprotected
skipWhitespace()ipe::XmlParser
XmlParser(DataSource &source)ipe::XmlParser
~XmlParser()ipe::XmlParservirtual

ipe-7.1.10/build/doc/group__high.html0000644000175000017500000001307212624020245017253 0ustar otfriedotfried Ipelib: Ipe Utilities
Ipe Utilities

Classes

class  ipe::ObjectFactory
 
class  ipe::ImlParser
 
class  ipe::Visitor
 
class  ipe::Snap
 
class  ipe::BitmapFinder
 
class  ipe::BBoxPainter
 
class  ipe::A85Stream
 
class  ipe::Base64Stream
 
class  ipe::A85Source
 
class  ipe::Base64Source
 
class  ipe::DeflateStream
 
class  ipe::InflateSource
 

Detailed Description

Classes to manage Ipe documents and objects.

This module contains classes used in the implementation of the Ipe program itself. The only classes from this module you may be interested in are Visitor (which is essential to traverse an Ipe object structure), and perhaps Snap (if you are writing an Ipelet whose behavior depends on the current snap setting in the Ipe program).


ipe-7.1.10/build/doc/structipe_1_1_symbol.html0000644000175000017500000003265512624020245021040 0ustar otfriedotfried Ipelib: ipe::Symbol Class Reference

#include <ipestyle.h>

Public Member Functions

 Symbol ()
 
 Symbol (Object *object)
 
 Symbol (const Symbol &rhs)
 
Symboloperator= (const Symbol &rhs)
 
 ~Symbol ()
 

Public Attributes

bool iXForm
 
TTransformations iTransformations
 
ObjectiObject
 

Detailed Description

A symbol is a named object defined in an ipe::StyleSheet.

Constructor & Destructor Documentation

Symbol::Symbol ( )

Default constructor.

Symbol::Symbol ( Object object)

Create symbol for object (takes ownership).

References ipe::ETransformationsAffine, iObject, iTransformations, and iXForm.

Symbol::Symbol ( const Symbol rhs)

Copy constructor.

References ipe::Object::clone(), iObject, iTransformations, and iXForm.

Symbol::~Symbol ( )

Destructor.

References iObject.

Member Function Documentation

Symbol & Symbol::operator= ( const Symbol rhs)

Assignment operator.

References ipe::Object::clone(), iObject, iTransformations, and iXForm.

Member Data Documentation

bool ipe::Symbol::iXForm
TTransformations ipe::Symbol::iTransformations

The documentation for this class was generated from the following files:
  • ipestyle.h
  • ipestyle.cpp

ipe-7.1.10/build/doc/radgrad2.svg0000644000175000017500000000237112624020245016302 0ustar otfriedotfried ipe-7.1.10/build/doc/structipe_1_1_pdf_token-members.html0000644000175000017500000001461112624020245023124 0ustar otfriedotfried Ipelib: Member List
ipe::PdfToken Member List

This is the complete list of members for ipe::PdfToken, including all inherited members.

EArrayBg enum valueipe::PdfToken
EArrayEnd enum valueipe::PdfToken
EDictBg enum valueipe::PdfToken
EDictEnd enum valueipe::PdfToken
EErr enum valueipe::PdfToken
EFalse enum valueipe::PdfToken
EName enum valueipe::PdfToken
ENull enum valueipe::PdfToken
ENumber enum valueipe::PdfToken
EOp enum valueipe::PdfToken
EString enum valueipe::PdfToken
ETrue enum valueipe::PdfToken
iStringipe::PdfToken
iTypeipe::PdfToken
TToken enum nameipe::PdfToken

ipe-7.1.10/build/doc/classipe_1_1_bitmap_finder.html0000644000175000017500000002741012624020245022110 0ustar otfriedotfried Ipelib: ipe::BitmapFinder Class Reference

#include <ipeutils.h>

Inherits ipe::Visitor.

Public Member Functions

void scanPage (const Page *page)
 
virtual void visitGroup (const Group *obj)
 
virtual void visitImage (const Image *obj)
 
- Public Member Functions inherited from ipe::Visitor
virtual ~Visitor ()
 
virtual void visitPath (const Path *obj)
 
virtual void visitText (const Text *obj)
 
virtual void visitReference (const Reference *obj)
 

Public Attributes

std::vector< BitmapiBitmaps
 

Detailed Description

A visitor that recursively scans objects and collects all bitmaps.

Member Function Documentation

void BitmapFinder::visitGroup ( const Group obj)
virtual

Called on an Group object.

Reimplemented from ipe::Visitor.

References ipe::Group::begin(), and ipe::Group::end().

void BitmapFinder::visitImage ( const Image obj)
virtual

Called on an Image object.

Reimplemented from ipe::Visitor.

References ipe::Image::bitmap(), and iBitmaps.

Member Data Documentation


The documentation for this class was generated from the following files:
  • ipeutils.h
  • ipeutils.cpp

ipe-7.1.10/build/doc/structipe_1_1_style_sheet_1_1_title_style-members.html0000644000175000017500000001021312624020245026556 0ustar otfriedotfried Ipelib: Member List
ipe::StyleSheet::TitleStyle Member List

ipe-7.1.10/build/doc/classipe_1_1_pdf_parser-members.html0000644000175000017500000001112312624020245023054 0ustar otfriedotfried Ipelib: Member List
ipe::PdfParser Member List

This is the complete list of members for ipe::PdfParser, including all inherited members.

eos() const ipe::PdfParserinline
getChar()ipe::PdfParserinline
getObject()ipe::PdfParser
getObjectDef()ipe::PdfParser
getToken()ipe::PdfParser
getTrailer()ipe::PdfParser
PdfParser(DataSource &source)ipe::PdfParser
skipXRef()ipe::PdfParser
token() const ipe::PdfParserinline

ipe-7.1.10/build/doc/up.png0000644000175000017500000000225012624020245015221 0ustar otfriedotfried‰PNG  IHDR D¤ŠÆsRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<PLTEÿÿÿ™ÌÿÂõ†¹ì|¯âs¦ÙiœÏ_’ÅV‰¼L²Cv©:m 0c–&YŒPƒFy =p3f sx pHYsÄÄ•+IDAT8O}“Y„ D\@Íý/;dÍÇLyv’&tý#\sÒÝó.„OÀD7…ñ¢ˆ˜%O×X‰ð’f¢6ŠÀžóDG‘¨€ 5O´g¢Cjc1"Ú>Ƭ„^ó+ÿœÚ‹¢€Ó#?ñ_쵚ú¥€$Ò'‹ÈôìR€¥4ûÆ@òQ:š@!U ìMd€l6mn©mš'v=çÍÄ=àlféÕÖ!Ÿ5—%6¬Í¾d£ôPnÃÔwÁbÐð¡P‡¨ö0ªÑï 3eŒC…C4S£±*œ\¢}Weaä¹ó[X¶å} Ù–æÙ1 =Lk ݈Çë¾?„xxS ˆIEND®B`‚ipe-7.1.10/build/doc/manual_41.html0000644000175000017500000001633712624020245016551 0ustar otfriedotfried Ipe Manual -- 9.1 The <ipe> element
9.2 The <page> element9 The Ipe file format9.1 The <ipe> element

9.1 The <ipe> element

Attributes

version
(required) The value (a number, e.g. 70103 for Ipelib 7.1.3) indicates the earliest Ipelib version that can interpret the document. Ipe will refuse to load documents that require a version larger than its own, and may refuse to load documents that are too old (and which will have to be converted using a separate program).
creator
(optional) indicates the program that created the file and is not interpreted by Ipe at all.

Contents

  1. An <info> element (optional),
  2. a <preamble> element (optional),
  3. a series of <bitmap> and <ipestyle> elements (optional),
  4. a series of page elements.

The <ipestyle> elements form a "cascade", with the last <ipestyle> element becoming the top-level style sheet. When symbolic names are looked up, the style sheets are checked from top to bottom. Ipe always appends the built-in standard style sheet at the bottom of the stack.

9.1.1 The <info> element

Attributes

title
(optional) document title,
author
(optional) document author,
subject
(optional) document subject,
keywords
(optional) document keywords,
pagemode
(optional) the only value understood by Ipe is fullscreen, which causes the document to be opened in full screen mode in PDF readers.
created
(optional) creation time in PDF format, e.g. "D:20030127204100".
modified
(optional) modification time in PDF format,
numberpages
(optional) if the value is yes, then Ipe will save PDF documents with visible page numbers on each page.

This element must be empty.

9.1.2 The <preamble> element

The contents of this element is LaTeX source code, to be used as the LaTeX preamble when running LaTeX to process the text objects in the document. It should not contain a \documentclass command, but can contain \usepackage commands and macro definitions.

The <preamble> element has an optional attribute encoding. If this is set, the LaTeX file created for the conversion of text objects is converted to this encoding.

9.1.3 The <bitmap> element

Each <bitmap> element defines a bitmap to be used by <image> objects.

Attributes

id
(required) the value must be an integer that will define the bitmap throughout the Ipe document,
width
(required) integer width in pixels,
height
(required) integer height in pixels,
ColorSpace
(required) possible values are "DeviceGray", "DeviceRGB", and "DeviceCMYK",
BitsPerComponent
(required) value must be 8,
ColorKey
(optional) an RGB color in hexadecimal, indicating the transparent color (only suppored for "DeviceRGB" color space),
length
(required unless there is no filter) the number of bytes of image data,
Filter
(optional) possible values are "FlateDecode" or "DCTDecode" to indicate a compressed image (the latter is used for JPEG images).
encoding
(optional) possible value is "base64" to indicate that the image data is base64-encoded (not in hexadecimal).

The contents of the <bitmap> element is the image data, either base64-encoded or in hexadecimal format. White space between bytes is ignored. If no filter is specified, pixels are stored row by row, with rows padded to a full byte boundary.

Note that images with color maps are not supported, and such support is not planned. (The Insert image ipelet does allow you to insert images with color maps, but they are stored as 24-bit images. Since the data is compressed, this does not seriously increase the image data size.)

ipe-7.1.10/build/doc/manual.html0000644000175000017500000000601612624020245016236 0ustar otfriedotfried Ipe Manual ipe-7.1.10/build/doc/example3.svg0000644000175000017500000001232712624020245016334 0ustar otfriedotfried ipe-7.1.10/build/doc/functions_v.html0000644000175000017500000001432112624020245017314 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- v -


ipe-7.1.10/build/doc/classipe_1_1_pdf_name.html0000644000175000017500000003115312624020245021055 0ustar otfriedotfried Ipelib: ipe::PdfName Class Reference
ipe::PdfName Class Reference

#include <ipepdfparser.h>

Inherits ipe::PdfObj.

Public Member Functions

 PdfName (const String &val)
 
virtual const PdfNamename () const
 
virtual void write (Stream &stream) const
 
String value () const
 
- Public Member Functions inherited from ipe::PdfObj
virtual ~PdfObj ()=0
 
virtual const PdfNullnull () const
 
virtual const PdfBoolboolean () const
 
virtual const PdfNumbernumber () const
 
virtual const PdfStringstring () const
 
virtual const PdfRefref () const
 
virtual const PdfArrayarray () const
 
virtual const PdfDictdict () const
 
String repr () const
 

Detailed Description

The PDF name object.

Constructor & Destructor Documentation

ipe::PdfName::PdfName ( const String val)
inlineexplicit

Member Function Documentation

const PdfName * PdfName::name ( ) const
virtual

Return this object as PDF name object.

Reimplemented from ipe::PdfObj.

void PdfName::write ( Stream stream) const
virtual

Implements ipe::PdfObj.

String ipe::PdfName::value ( ) const
inline

Referenced by ipe::PdfDict::deflated().


The documentation for this class was generated from the following files:
  • ipepdfparser.h
  • ipepdfparser.cpp

ipe-7.1.10/build/doc/functions_func_e.html0000644000175000017500000001413612624020245020312 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- e -


ipe-7.1.10/build/doc/structipe_1_1_ipelet_data-members.html0000644000175000017500000000773612624020245023440 0ustar otfriedotfried Ipelib: Member List
ipe::IpeletData Member List

ipe-7.1.10/build/doc/classipe_1_1_thumbnail.html0000644000175000017500000004326512624020245021276 0ustar otfriedotfried Ipelib: ipe::Thumbnail Class Reference

#include <ipethumbs.h>

Public Types

enum  TargetFormat { ESVG, EPNG, EPS, EPDF }
 

Public Member Functions

 Thumbnail (const Document *doc, int width)
 
 ~Thumbnail ()
 
int height () const
 
Buffer render (const Page *page, int view)
 
void saveRender (TargetFormat fm, const char *dst, const Page *page, int view, double zoom, bool transparent, bool nocrop)
 

Static Public Member Functions

static void savePNG (cairo_surface_t *surface, const char *dst)
 

Member Enumeration Documentation

Enumerator
ESVG 
EPNG 
EPS 
EPDF 

Constructor & Destructor Documentation

Thumbnail::~Thumbnail ( )

Member Function Documentation

int ipe::Thumbnail::height ( ) const
inline
void Thumbnail::savePNG ( cairo_surface_t *  surface,
const char *  dst 
)
static

Referenced by saveRender().


The documentation for this class was generated from the following files:
  • ipethumbs.h
  • ipethumbs.cpp

ipe-7.1.10/build/doc/classipe_1_1_stream.html0000644000175000017500000005471212624020245020605 0ustar otfriedotfried Ipelib: ipe::Stream Class Reference
ipe::Stream Class Referenceabstract

#include <ipebase.h>

Inherited by ipe::A85Stream, ipe::Base64Stream, ipe::DeflateStream, and ipe::TellStream.

Public Member Functions

virtual ~Stream ()
 
virtual void putChar (char ch)=0
 
virtual void close ()
 
virtual void putString (String s)
 
virtual void putCString (const char *s)
 
virtual void putRaw (const char *data, int size)
 
Streamoperator<< (char ch)
 
Streamoperator<< (const String &s)
 
Streamoperator<< (const char *s)
 
Streamoperator<< (int i)
 
Streamoperator<< (double d)
 
void putHexByte (char b)
 
void putXmlString (String s)
 

Detailed Description

Abstract base class for output streams.

Constructor & Destructor Documentation

Stream::~Stream ( )
virtual

Virtual destructor.

Member Function Documentation

void Stream::close ( )
virtual

Close the stream. No more writing allowed!

Reimplemented in ipe::DeflateStream, ipe::Base64Stream, and ipe::A85Stream.

Referenced by ipe::A85Stream::close(), ipe::Base64Stream::close(), and ipe::DeflateStream::close().

void Stream::putString ( String  s)
virtual

Output string.

Default implementation uses PutChar.

Reimplemented in ipe::FileStream, and ipe::StringStream.

References putChar(), and ipe::String::size().

Referenced by operator<<().

void Stream::putCString ( const char *  s)
virtual

Output C string.

Default implementation uses PutChar.

Reimplemented in ipe::FileStream, and ipe::StringStream.

References putChar().

Referenced by ipe::A85Stream::close(), ipe::Base64Stream::close(), operator<<(), ipe::A85Stream::putChar(), and ipe::Base64Stream::putChar().

void Stream::putRaw ( const char *  data,
int  size 
)
virtual

Output raw character data.

Default implementation uses PutChar.

Reimplemented in ipe::FileStream, and ipe::StringStream.

References putChar().

Referenced by ipe::DeflateStream::close(), and ipe::DeflateStream::putChar().

Stream& ipe::Stream::operator<< ( char  ch)
inline

Output character.

References putChar().

Stream& ipe::Stream::operator<< ( const String s)
inline

Output string.

References putString().

Stream& ipe::Stream::operator<< ( const char *  s)
inline

Output C string.

References putCString().

Stream & Stream::operator<< ( int  i)

Output integer.

Stream & Stream::operator<< ( double  d)

Output double.

References putChar(), and putCString().

void Stream::putHexByte ( char  b)

Output byte in hexadecimal.

void Stream::putXmlString ( String  s)

Save a string with XML escaping of &, >, <, ", '.

References ipe::String::size().

Referenced by ipe::Page::saveAsXml(), ipe::Text::saveAsXml(), ipe::StyleSheet::saveAsXml(), and ipe::Document::saveAsXml().


The documentation for this class was generated from the following files:
  • ipebase.h
  • ipebase.cpp

ipe-7.1.10/build/doc/ftv2mlastnode.png0000644000175000017500000000036612624020245017373 0ustar otfriedotfried‰PNG  IHDRɪ|½IDATxíÝ!NAÅñ¤‡à\ ÷à Um@`Ô5iÒ`ëh ‚ÅW7] b§ÝˆŠ&oföÍd¾YÔ4 üšcø ‡€´‹Åòù3v=¼]†§µ\B… I¿‹=B·™B¡®;¸k´µ W°ÍN@vyÍÑÖ4ãß÷]ÈâYìã§|M}]ÔÚx6a }ôdׇØYüú¨>¤||5?Ó>|žB"¡î'¡IEND®B`‚ipe-7.1.10/build/doc/manual_53.html0000644000175000017500000000613512624020245016547 0ustar otfriedotfried Ipe Manual -- Footnotes
TopContentsFootnotes

Footnotes

 (1)
The line width can be set to zero to get the thinnest line the device can produce (i.e. approximately the same as 0.15 for a 600 dpi printer or 0.3 for a 300 dpi printer). The PDF and Postscript authorities discourage using this feature, since it makes your Postscript files device-dependent.
 (2)
J. D. Foley, A. Van Dam, S. K. Feiner, and J. F. Hughes, Computer Graphics: Principles and Practice, Addison-Wesley, 1990.
 (3)
Fifi is called after the dog in the rogue computer game installed on most Unix systems in the 1980's, because it also keeps running around your feet.
ipe-7.1.10/build/doc/classipe_1_1_angle-members.html0000644000175000017500000001017412624020245022022 0ustar otfriedotfried Ipelib: Member List
ipe::Angle Member List

This is the complete list of members for ipe::Angle, including all inherited members.

Angle()ipe::Angleinlineexplicit
Angle(double alpha)ipe::Angleinline
degrees() const ipe::Angle
Degrees(double alpha)ipe::Angleinlinestatic
liesBetween(Angle small, Angle large) const ipe::Angle
normalize(double lowlimit)ipe::Angle
operator double() const ipe::Angleinline

ipe-7.1.10/build/doc/group__obj.html0000644000175000017500000000707412624020245017113 0ustar otfriedotfried Ipelib: Ipe Objects
Ipe Objects

Classes

class  ipe::Group
 
class  ipe::Image
 
class  ipe::Object
 
class  ipe::Path
 
class  ipe::Reference
 
class  ipe::Text
 

Detailed Description

The Ipe object model.

This module deals with the actual objects inside an Ipe document. All Ipe objects are derived from Object.


ipe-7.1.10/build/doc/functions_rela.html0000644000175000017500000000552512624020245020000 0ustar otfriedotfried Ipelib: Class Members - Related Functions
 

ipe-7.1.10/build/doc/structipe_1_1_text_padding-members.html0000644000175000017500000000635212624020245023630 0ustar otfriedotfried Ipelib: Member List
ipe::TextPadding Member List

This is the complete list of members for ipe::TextPadding, including all inherited members.

iBottomipe::TextPadding
iLeftipe::TextPadding
iRightipe::TextPadding
iTopipe::TextPadding

ipe-7.1.10/build/doc/group__doc.html0000644000175000017500000000635212624020245017104 0ustar otfriedotfried Ipelib: Ipe Document
Ipe Document

Classes

class  ipe::Document
 
class  ipe::Page
 
class  ipe::StyleSheet
 
class  ipe::Cascade
 

Detailed Description

The classes managing an Ipe document.

The main class, Document, represents an entire Ipe document, and allows you to load, save, access, and modify such a document.

Other classes represent pages, layers, and views of a document. Another important class is the StyleSheet, which maps symbolic attributes to absolute values.


ipe-7.1.10/build/doc/classipe_1_1_arc.html0000644000175000017500000010434212624020245020052 0ustar otfriedotfried Ipelib: ipe::Arc Class Reference

#include <ipegeo.h>

Public Member Functions

 Arc ()
 
 Arc (const Matrix &m, Angle alpha, Angle beta)
 
 Arc (const Matrix &m)
 
 Arc (const Matrix &m0, const Vector &begp, const Vector &endp)
 
bool isEllipse () const
 
double distance (const Vector &v, double bound) const
 
double distance (const Vector &v, double bound, Vector &pos, Angle &angle) const
 
Rect bbox () const
 
Vector beginp () const
 
Vector endp () const
 
void intersect (const Line &l, std::vector< Vector > &result) const
 
void intersect (const Segment &s, std::vector< Vector > &result) const
 
void intersect (const Arc &a, std::vector< Vector > &result) const
 
void intersect (const Bezier &b, std::vector< Vector > &result) const
 

Public Attributes

Matrix iM
 
Angle iAlpha
 
Angle iBeta
 

Detailed Description

An arc of an ellipse.

The ellipse is represented using the matrix that transforms the unit circle x^2 + y^2 = 1 to the desired ellipse. The arc coordinate system is the coordinate system of this unit circle.

A full ellipse is described by iAlpha = 0, iBeta = IpeTwoPi.

An elliptic arc is the image of the circular arc from iAlpha to iBeta (in increasing angle in arc coordinate system).

Constructor & Destructor Documentation

ipe::Arc::Arc ( )
inline

Construct unit circle.

ipe::Arc::Arc ( const Matrix m,
Angle  alpha,
Angle  beta 
)
inline

Construct with given parameters.

ipe::Arc::Arc ( const Matrix m)
inline

Construct an ellipse.

Arc::Arc ( const Matrix m,
const Vector begp,
const Vector endp 
)

Construct arc for ellipse defined by m, from begp to endp.

This assumes that m has been correctly computed such that begb and endp already lie on the ellipse.

References endp(), iAlpha, iBeta, iM, and ipe::Matrix::inverse().

Member Function Documentation

bool ipe::Arc::isEllipse ( ) const
inline

Is this an entire ellipse?

References iAlpha, and iBeta.

Referenced by bbox(), distance(), ipe::CairoPainter::doDrawArc(), and ipe::Painter::doDrawArc().

double Arc::distance ( const Vector v,
double  bound 
) const

This doesn't really compute the distance, but a reasonable approximation.

Referenced by ipe::Ellipse::distance(), ipe::Snap::setEdge(), ipe::CurveSegment::snapBnd(), and ipe::Ellipse::snapBnd().

double Arc::distance ( const Vector v,
double  bound,
Vector pos,
Angle angle 
) const

Like distance(), but sets pos to point on arc and angle to its angle in arc coordinates. angle and pos are not modified if result is larger than bound.

References ipe::Vector::angle(), iAlpha, iBeta, iM, ipe::Matrix::inverse(), isEllipse(), ipe::Angle::liesBetween(), and ipe::Vector::normalized().

Rect Arc::bbox ( ) const
Vector ipe::Arc::beginp ( ) const
inline

Return begin point of arc.

References iAlpha, and iM.

Referenced by ipe::Path::drawArrow(), and intersect().

Vector ipe::Arc::endp ( ) const
inline

Return end point of arc.

References iBeta, and iM.

Referenced by Arc(), ipe::Path::drawArrow(), and intersect().

void Arc::intersect ( const Line l,
std::vector< Vector > &  result 
) const
void Arc::intersect ( const Segment s,
std::vector< Vector > &  result 
) const

Compute intersection points of Arc with Segment.

References intersect(), ipe::Segment::iP, ipe::Segment::iQ, and ipe::Segment::line().

void Arc::intersect ( const Arc a,
std::vector< Vector > &  result 
) const

Compute intersection points of Arc with Arc.

References bbox(), beginp(), endp(), and intersect().

void Arc::intersect ( const Bezier b,
std::vector< Vector > &  result 
) const

Member Data Documentation


The documentation for this class was generated from the following files:
  • ipegeo.h
  • ipegeo.cpp

ipe-7.1.10/build/doc/classipe_1_1_file_stream.html0000644000175000017500000003613712624020245021605 0ustar otfriedotfried Ipelib: ipe::FileStream Class Reference
ipe::FileStream Class Reference

#include <ipebase.h>

Inherits ipe::TellStream.

Public Member Functions

 FileStream (std::FILE *file)
 
virtual void putChar (char ch)
 
virtual void putString (String s)
 
virtual void putCString (const char *s)
 
virtual void putRaw (const char *data, int size)
 
virtual long tell () const
 
- Public Member Functions inherited from ipe::Stream
virtual ~Stream ()
 
virtual void close ()
 
Streamoperator<< (char ch)
 
Streamoperator<< (const String &s)
 
Streamoperator<< (const char *s)
 
Streamoperator<< (int i)
 
Streamoperator<< (double d)
 
void putHexByte (char b)
 
void putXmlString (String s)
 

Detailed Description

Stream writing into an open file.

Constructor & Destructor Documentation

FileStream::FileStream ( std::FILE *  file)

Constructor.

Member Function Documentation

void FileStream::putChar ( char  ch)
virtual

Output character.

Implements ipe::Stream.

void FileStream::putString ( String  s)
virtual

Output string.

Default implementation uses PutChar.

Reimplemented from ipe::Stream.

References ipe::String::size().

void FileStream::putCString ( const char *  s)
virtual

Output C string.

Default implementation uses PutChar.

Reimplemented from ipe::Stream.

void FileStream::putRaw ( const char *  data,
int  size 
)
virtual

Output raw character data.

Default implementation uses PutChar.

Reimplemented from ipe::Stream.

Referenced by ipe::Document::runLatex().

long FileStream::tell ( ) const
virtual

Implements ipe::TellStream.


The documentation for this class was generated from the following files:
  • ipebase.h
  • ipebase.cpp

ipe-7.1.10/build/doc/structipe_1_1_text_padding.html0000644000175000017500000001626112624020245022200 0ustar otfriedotfried Ipelib: ipe::TextPadding Struct Reference
ipe::TextPadding Struct Reference

#include <ipeattributes.h>

Public Attributes

double iLeft
 
double iRight
 
double iTop
 
double iBottom
 

Detailed Description

Padding for text bounding box.

Member Data Documentation

double ipe::TextPadding::iBottom

The documentation for this struct was generated from the following file:
  • ipeattributes.h

ipe-7.1.10/build/doc/classipe_1_1_rect-members.html0000644000175000017500000002070412624020245021671 0ustar otfriedotfried Ipelib: Member List
ipe::Rect Member List

This is the complete list of members for ipe::Rect, including all inherited members.

addPoint(const Vector &rhs)ipe::Rect
addRect(const Rect &rhs)ipe::Rect
bottom() const ipe::Rectinline
bottomLeft() const ipe::Rectinline
bottomRight() const ipe::Rectinline
certainClearance(const Vector &v, double bound) const ipe::Rect
clear()ipe::Rectinline
clipTo(const Rect &rhs)ipe::Rect
contains(const Vector &rhs) const ipe::Rect
contains(const Rect &rhs) const ipe::Rect
height() const ipe::Rectinline
intersects(const Rect &rhs) const ipe::Rect
isEmpty() const ipe::Rectinline
left() const ipe::Rectinline
operator<<(Stream &stream, const Rect &rhs)ipe::Rectrelated
Rect()ipe::Rectinlineexplicit
Rect(const Vector &c)ipe::Rectinlineexplicit
Rect(const Vector &c1, const Vector &c2)ipe::Rectexplicit
right() const ipe::Rectinline
top() const ipe::Rectinline
topLeft() const ipe::Rectinline
topRight() const ipe::Rectinline
width() const ipe::Rectinline

ipe-7.1.10/build/doc/example5.svg0000644000175000017500000002224412624020245016335 0ustar otfriedotfried ipe-7.1.10/build/doc/classipe_1_1_a85_source-members.html0000644000175000017500000000610212624020245022705 0ustar otfriedotfried Ipelib: Member List
ipe::A85Source Member List

This is the complete list of members for ipe::A85Source, including all inherited members.

A85Source(DataSource &source)ipe::A85Source
getChar()ipe::A85Sourcevirtual
~DataSource()=0ipe::DataSourcepure virtual

ipe-7.1.10/build/doc/classipe_1_1_ellipse-members.html0000644000175000017500000001677612624020245022407 0ustar otfriedotfried Ipelib: Member List
ipe::Ellipse Member List

This is the complete list of members for ipe::Ellipse, including all inherited members.

addToBBox(Rect &box, const Matrix &m, bool cp) const ipe::Ellipsevirtual
asClosedSpline() const ipe::SubPathvirtual
asCurve() const ipe::SubPathvirtual
asEllipse() const ipe::Ellipsevirtual
closed() const ipe::SubPathvirtual
distance(const Vector &v, const Matrix &m, double bound) const ipe::Ellipsevirtual
draw(Painter &painter) const ipe::Ellipsevirtual
EClosedSpline enum valueipe::SubPath
ECurve enum valueipe::SubPath
EEllipse enum valueipe::SubPath
Ellipse(const Matrix &m)ipe::Ellipse
matrix() const ipe::Ellipseinline
save(Stream &stream) const ipe::Ellipsevirtual
snapBnd(const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const ipe::Ellipsevirtual
snapVtx(const Vector &mouse, const Matrix &m, Vector &pos, double &bound, bool cp) const ipe::Ellipsevirtual
type() const ipe::Ellipsevirtual
Type enum nameipe::SubPath
~SubPath()=0ipe::SubPathpure virtual

ipe-7.1.10/build/doc/classipe_1_1_lex-members.html0000644000175000017500000001425212624020245021525 0ustar otfriedotfried Ipelib: Member List
ipe::Lex Member List

This is the complete list of members for ipe::Lex, including all inherited members.

eos() const ipe::Lexinline
fromMark()ipe::Lexinline
getChar()ipe::Lexinline
getDouble()ipe::Lex
getFixed()ipe::Lex
getHexByte()ipe::Lex
getHexNumber()ipe::Lex
getInt()ipe::Lex
Lex(String str)ipe::Lexexplicit
mark()ipe::Lexinline
nextToken()ipe::Lex
operator>>(int &i)ipe::Lexinline
operator>>(double &d)ipe::Lexinline
operator>>(Fixed &d)ipe::Lexinline
skipWhitespace()ipe::Lex
token()ipe::Lex

ipe-7.1.10/build/doc/tab_s.png0000644000175000017500000000027012624020245015665 0ustar otfriedotfried‰PNG  IHDR$ÇÇ[IDATxíÝ ‚@@Ñ£?Q…¤"š¢%¦I‘—Šf–6[´HÃäQƒ<Þâõþ]ždr Í’s?ˆO=Ñññw'ÌF‡Ž íðö-~rÃ[œèŠ­ì¬mƒÖ¬ƒݯнŠÕF)Yº% §`nÌ,9B ™’©!ÑŒ\ý<Å#üîî•IEND®B`‚ipe-7.1.10/build/doc/classipe_1_1_page_selector.html0000644000175000017500000001770412624020245022126 0ustar otfriedotfried Ipelib: ipe::PageSelector Class Reference
ipe::PageSelector Class Reference

#include <ipeselector_qt.h>

Inherits QListWidget.

Signals

void selectionMade ()
 

Public Member Functions

 PageSelector (Document *doc, int page, int startIndex, int width, QWidget *parent=0)
 
int selectedIndex () const
 

Detailed Description

A Qt widget that displays a list of Ipe pages.

Constructor & Destructor Documentation

PageSelector::PageSelector ( Document doc,
int  page,
int  startIndex,
int  itemWidth,
QWidget *  parent = 0 
)

Construct the widget.

If page is negative, the last view of each page is shown. Otherwise, all views of this page are shown. itemWidth is the width of the page thumbnails (the height is computed automatically).

References ipe::Document::countPages(), ipe::Page::countViews(), ipe::Buffer::data(), ipe::Thumbnail::height(), ipe::Document::page(), ipe::Thumbnail::render(), ipe::Page::title(), and ipe::String::z().

Member Function Documentation

int ipe::PageSelector::selectedIndex ( ) const
inline
void ipe::PageSelector::selectionMade ( )
signal

The documentation for this class was generated from the following files:
  • ipeselector_qt.h
  • ipeselector_qt.cpp

ipe-7.1.10/build/doc/functions_func_k.html0000644000175000017500000001132512624020245020315 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- k -


ipe-7.1.10/build/doc/classipe_1_1_tell_stream.html0000644000175000017500000002604012624020245021616 0ustar otfriedotfried Ipelib: ipe::TellStream Class Reference
ipe::TellStream Class Referenceabstract

#include <ipebase.h>

Inherits ipe::Stream.

Inherited by ipe::FileStream, and ipe::StringStream.

Public Member Functions

virtual long tell () const =0
 
- Public Member Functions inherited from ipe::Stream
virtual ~Stream ()
 
virtual void putChar (char ch)=0
 
virtual void close ()
 
virtual void putString (String s)
 
virtual void putCString (const char *s)
 
virtual void putRaw (const char *data, int size)
 
Streamoperator<< (char ch)
 
Streamoperator<< (const String &s)
 
Streamoperator<< (const char *s)
 
Streamoperator<< (int i)
 
Streamoperator<< (double d)
 
void putHexByte (char b)
 
void putXmlString (String s)
 

Detailed Description

Adds position feedback to IpeStream.

Member Function Documentation

virtual long ipe::TellStream::tell ( ) const
pure virtual

Implemented in ipe::FileStream, and ipe::StringStream.


The documentation for this class was generated from the following file:
  • ipebase.h

ipe-7.1.10/build/doc/classipe_1_1_bitmap.html0000644000175000017500000017115112624020245020563 0ustar otfriedotfried Ipelib: ipe::Bitmap Class Reference

#include <ipebitmap.h>

Classes

class  MRenderData
 

Public Types

enum  TFilter { EDirect, EFlateDecode, EDCTDecode }
 
enum  TColorSpace { EDeviceRGB, EDeviceGray, EDeviceCMYK }
 

Public Member Functions

 Bitmap ()
 
 Bitmap (int width, int height, TColorSpace colorSpace, int bitsPerComponent, Buffer data, TFilter filter, bool deflate=false)
 
 Bitmap (const XmlAttributes &attr, String data)
 
 Bitmap (const XmlAttributes &attr, Buffer data)
 
 Bitmap (const Bitmap &rhs)
 
 ~Bitmap ()
 
Bitmapoperator= (const Bitmap &rhs)
 
void saveAsXml (Stream &stream, int id, int pdfObjNum=-1) const
 
bool isNull () const
 
bool equal (Bitmap rhs) const
 
TColorSpace colorSpace () const
 
TFilter filter () const
 
int components () const
 
int bitsPerComponent () const
 
int width () const
 
int height () const
 
int colorKey () const
 
void setColorKey (int key)
 
const char * data () const
 
int size () const
 
int objNum () const
 
void setObjNum (int objNum) const
 
MRenderDatarenderData () const
 
void setRenderData (MRenderData *data) const
 
Buffer pixelData () const
 
bool operator== (const Bitmap &rhs) const
 
bool operator!= (const Bitmap &rhs) const
 
bool operator< (const Bitmap &rhs) const
 

Static Public Member Functions

static const char * readJpegInfo (FILE *file, int &width, int &height, Vector &dotsPerInch, TColorSpace &colorSpace, int &bitsPerComponent)
 
static Bitmap readJpeg (const char *fname, Vector &dotsPerInch, const char *&errmsg)
 
static Bitmap readPNG (const char *fname, bool deflate, Vector &dotsPerInch, const char *&errmsg)
 

Detailed Description

A bitmap.

Bitmaps are explicitely shared using reference-counting. Copying is cheap, so Bitmap objects are meant to be passed by value.

The bitmap can cache data to speed up rendering. This data can be set only once (as the bitmap is conceptually immutable).

The bitmap also provides a slot for short-term storage of an "object number". The PDF embedder, for instance, sets it to the PDF object number when embedding the bitmap, and can reuse it when "drawing" the bitmap.

Member Enumeration Documentation

Enumerator
EDirect 
EFlateDecode 
EDCTDecode 
Enumerator
EDeviceRGB 
EDeviceGray 
EDeviceCMYK 

Constructor & Destructor Documentation

Bitmap::Bitmap ( )

Default constructor constructs null bitmap.

Referenced by readJpeg(), and readPNG().

Bitmap::Bitmap ( int  width,
int  height,
TColorSpace  colorSpace,
int  bitsPerComponent,
Buffer  data,
TFilter  filter,
bool  deflate = false 
)

Create a new image.

filter specifies the format of the data. If filter is EDirect, then setting deflate compresses the bitmap and changes the filter to EFlateDecode.

References bitsPerComponent(), colorSpace(), data(), ipe::Buffer::data(), ipe::DeflateStream::deflate(), EDeviceCMYK, EDeviceGray, EDeviceRGB, EDirect, EFlateDecode, filter(), height(), ipe::Buffer::size(), and width().

Bitmap::Bitmap ( const XmlAttributes attr,
String  data 
)
Bitmap::Bitmap ( const XmlAttributes attr,
Buffer  data 
)

Create from XML using external raw data.

References data(), and ipe::Buffer::size().

Bitmap::Bitmap ( const Bitmap rhs)

Copy constructor.

Since Bitmaps are reference counted, this is very fast.

Bitmap::~Bitmap ( )

Destructor.

Member Function Documentation

Bitmap & Bitmap::operator= ( const Bitmap rhs)

Assignment operator (takes care of reference counting).

Very fast.

bool ipe::Bitmap::isNull ( ) const
inline

Is this a null bitmap?

Referenced by ipe::ImlParser::parseObject().

bool Bitmap::equal ( Bitmap  rhs) const
Bitmap::TColorSpace ipe::Bitmap::colorSpace ( ) const
inline

Return the color space of the image.

Referenced by Bitmap(), readJpeg(), and saveAsXml().

Bitmap::TFilter ipe::Bitmap::filter ( ) const
inline

Return the data filter of the image data.

Referenced by Bitmap(), pixelData(), and saveAsXml().

int ipe::Bitmap::components ( ) const
inline

Return number of components per pixel.

Referenced by pixelData().

int ipe::Bitmap::bitsPerComponent ( ) const
inline

Return the number of bits per component.

Referenced by Bitmap(), pixelData(), readJpeg(), and saveAsXml().

int ipe::Bitmap::width ( ) const
inline

Return width of pixel array.

Referenced by Bitmap(), ipe::CairoPainter::doDrawBitmap(), pixelData(), readJpeg(), readPNG(), and saveAsXml().

int ipe::Bitmap::height ( ) const
inline

Return height of pixel array.

Referenced by Bitmap(), ipe::CairoPainter::doDrawBitmap(), pixelData(), readJpeg(), readPNG(), and saveAsXml().

int Bitmap::colorKey ( ) const

Return rgb representation of the transparent color.

Returns -1 if the bitmap is not color keyed.

Referenced by pixelData(), and readPNG().

void Bitmap::setColorKey ( int  key)

Set transparent color.

Use key == -1 to disable color key.

Referenced by readPNG().

const char * ipe::Bitmap::data ( ) const
inline

Return a pointer to the image data (in PDF arrangement).

Referenced by Bitmap(), pixelData(), saveAsXml(), and setRenderData().

int ipe::Bitmap::size ( ) const
inline

Return size (number of bytes) of image data (in PDF arrangement).

Referenced by saveAsXml().

int ipe::Bitmap::objNum ( ) const
inline
void ipe::Bitmap::setObjNum ( int  objNum) const
inline

Set object number of the bitmap.

References objNum().

Referenced by ipe::Page::saveAsIpePage(), and ipe::Page::saveSelection().

Bitmap::MRenderData * ipe::Bitmap::renderData ( ) const
inline

Return cached bitmap for rendering.

Referenced by ipe::CairoPainter::doDrawBitmap().

void Bitmap::setRenderData ( MRenderData data) const

Set a cached bitmap for fast rendering.

References data().

Referenced by ipe::CairoPainter::doDrawBitmap().

Buffer Bitmap::pixelData ( ) const

Convert bitmap data to a height x width pixel array in rgb format.

Returns empty buffer if it cannot decode the bitmap information. Otherwise, returns a buffer of size width() * height() uint's.

References bitsPerComponent(), colorKey(), components(), data(), ipe::Buffer::data(), EDCTDecode, EDirect, EFlateDecode, filter(), height(), ipe::Buffer::size(), and width().

Referenced by ipe::CairoPainter::doDrawBitmap().

bool ipe::Bitmap::operator== ( const Bitmap rhs) const
inline

Two bitmaps are equal if they share the same data.

bool ipe::Bitmap::operator!= ( const Bitmap rhs) const
inline

Two bitmaps are equal if they share the same data.

bool ipe::Bitmap::operator< ( const Bitmap rhs) const
inline

Less operator, to be able to sort bitmaps.

The checksum is used, when it is equal, the shared address. This guarantees that bitmaps that are == (share their implementation) are next to each other, and blocks of them are next to blocks that are identical in contents.

const char * Bitmap::readJpegInfo ( FILE *  file,
int &  width,
int &  height,
Vector dotsPerInch,
TColorSpace colorSpace,
int &  bitsPerComponent 
)
static

Read information about JPEG image from file.

Returns NULL on success, an error message otherwise.

References EDeviceCMYK, EDeviceGray, and EDeviceRGB.

Referenced by readJpeg().

Bitmap Bitmap::readJpeg ( const char *  fname,
Vector dotsPerInch,
const char *&  errmsg 
)
static

Read JPEG image from file.

Returns the image as a DCT-encoded Bitmap. Sets dotsPerInch if the image file contains a resolution, otherwise sets it to (0,0). If reading the file fails, returns a null Bitmap, and sets the error message errmsg.

References Bitmap(), bitsPerComponent(), colorSpace(), ipe::String::data(), EDCTDecode, ipe::Platform::fopen(), height(), ipe::Platform::readFile(), readJpegInfo(), ipe::String::size(), and width().

Bitmap Bitmap::readPNG ( const char *  fname,
bool  deflate,
Vector dotsPerInch,
const char *&  errmsg 
)
static

Read PNG image from file.

Returns the image as a Bitmap. It will be compressed if deflate is set. Sets dotsPerInch if the image file contains a resolution, otherwise sets it to (0,0). If reading the file fails, returns a null Bitmap, and sets the error message errmsg.

References Bitmap(), colorKey(), ipe::Buffer::data(), EDeviceGray, EDeviceRGB, EDirect, ipe::Platform::fopen(), height(), setColorKey(), and width().


The documentation for this class was generated from the following files:
  • ipebitmap.h
  • ipebitmap.cpp
  • ipebitmap_unix.cpp
  • ipebitmap_win.cpp

ipe-7.1.10/build/doc/manual_2.html0000644000175000017500000001142012624020245016452 0ustar otfriedotfried Ipe Manual -- 2 About Ipe files
3 General ConceptsTop1 Introduction2 About Ipe files

2 About Ipe files

Ipe 7 creates (Encapsulated) Postscript or PDF files. These files can be used in any way that PDF or Postscript files are used, such as viewed with Ghostview, with Acrobat Reader or Xpdf, edited with Acrobat, or included in Latex/Pdflatex documents. However, Ipe cannot read arbitrary Postscript or PDF files, only files it has created itself. This is because files created by Ipe contain a special hidden stream that describes the Ipe objects. (So if you edit your Ipe-generated PDF file in a different program such as Adobe Acrobat, Ipe will not be able to read the file again afterwards.)

You decide in what format to store a figure when saving it for the first time. Ipe gives you the option of saving with extensions "pdf" (PDF), and "ipe" (XML). Files saved with extension "ipe" are XML files and contain no PDF information. The precise XML format used by Ipe is documented later in this manual. XML files can be read by any XML-aware parser, and it is easy for other programs to generate XML output to be read by Ipe. You probably don't want to keep your figures in XML format, but it is excellent for communicating with other programs, and for converting figures between programs.

There are a few interesting uses for Ipe documents:

Figures for Latex documents.

Ipe was originally written to make it easy to make figures for Latex documents. If you are not familiar with including figures in Latex, you can find details here.

Presentations.

Ipe is not a presentation tool like Powerpoint or Keynote. An Ipe presentation is simply a PDF file that has been created by Ipe, and which you present during your talk using, say, Acrobat Reader on an LCD projector. Alternatively, you may want to try IpePresenter by Dmitriy Morozov. The chapter on presentations explains Ipe features meant for making presentations.

SVG files.

Figures in SVG format can be used to include scalable figures in web pages. Ipe does not save in SVG format directly, but the tool "iperender" allows you to convert an Ipe document to SVG format. This conversion is one-way, although the auxiliary tool svgtoipe also allows you to convert SVG figures to Ipe format.

Bitmaps.

Sometimes Ipe can be useful for creating bitmap images. Again, the "iperender" tool can render an Ipe document as a bitmap in PNG format.
ipe-7.1.10/build/doc/classipe_1_1_pdf_file-members.html0000644000175000017500000000730412624020245022505 0ustar otfriedotfried Ipelib: Member List
ipe::PdfFile Member List

This is the complete list of members for ipe::PdfFile, including all inherited members.

catalog() const ipe::PdfFile
object(int num) const ipe::PdfFile
page() const ipe::PdfFile
parse(DataSource &source)ipe::PdfFile
PdfFile()ipe::PdfFile
~PdfFile()ipe::PdfFile

ipe-7.1.10/build/doc/classipe_1_1_data_source.html0000644000175000017500000001457112624020245021602 0ustar otfriedotfried Ipelib: ipe::DataSource Class Reference
ipe::DataSource Class Referenceabstract

#include <ipebase.h>

Inherited by ipe::A85Source, ipe::Base64Source, ipe::BufferSource, ipe::FileSource, ipe::InflateSource, PsSource, and StandardStyleSource.

Public Member Functions

virtual ~DataSource ()=0
 
virtual int getChar ()=0
 

Detailed Description

Interface for getting data for parsing.

Constructor & Destructor Documentation

DataSource::~DataSource ( )
pure virtual

Pure virtual destructor.

Member Function Documentation

virtual int ipe::DataSource::getChar ( )
pure virtual

The documentation for this class was generated from the following files:
  • ipebase.h
  • ipebase.cpp

ipe-7.1.10/build/doc/classipe_1_1_b_box_painter-members.html0000644000175000017500000005435512624020245023560 0ustar otfriedotfried Ipelib: Member List
ipe::BBoxPainter Member List

This is the complete list of members for ipe::BBoxPainter, including all inherited members.

addClipPath()ipe::Painter
bbox() const ipe::BBoxPainterinline
BBoxPainter(const Cascade *style)ipe::BBoxPainter
cascade() const ipe::Painterinline
closePath()ipe::Painter
curveTo(const Vector &v1, const Vector &v2, const Vector &v3)ipe::Painter
curveTo(const Bezier &bezier)ipe::Painterinline
dashStyle() const ipe::Painterinline
dashStyle(std::vector< double > &dashes, double &offset) const ipe::Painter
doAddClipPath()ipe::BBoxPainterprotectedvirtual
doClosePath()ipe::Painterprotectedvirtual
doCurveTo(const Vector &v1, const Vector &v2, const Vector &v3)ipe::BBoxPainterprotectedvirtual
doDrawArc(const Arc &arc)ipe::Painterprotectedvirtual
doDrawBitmap(Bitmap bitmap)ipe::BBoxPainterprotectedvirtual
doDrawPath(TPathMode mode)ipe::BBoxPainterprotectedvirtual
doDrawSymbol(Attribute symbol)ipe::Painterprotectedvirtual
doDrawText(const Text *text)ipe::BBoxPainterprotectedvirtual
doLineTo(const Vector &v)ipe::BBoxPainterprotectedvirtual
doMoveTo(const Vector &v)ipe::BBoxPainterprotectedvirtual
doNewPath()ipe::BBoxPainterprotectedvirtual
doPop()ipe::BBoxPainterprotectedvirtual
doPush()ipe::BBoxPainterprotectedvirtual
drawArc(const Arc &arc)ipe::Painter
drawArcAsBezier(double alpha)ipe::Painterprotected
drawBitmap(Bitmap bitmap)ipe::Painter
drawEllipse()ipe::Painter
drawPath(TPathMode mode)ipe::Painter
drawSymbol(Attribute symbol)ipe::Painter
drawText(const Text *text)ipe::Painter
fill() const ipe::Painterinline
fillRule() const ipe::Painterinline
gradient() const ipe::Painterinline
iCascadeipe::Painterprotected
iInPathipe::Painterprotected
iMatrixipe::Painterprotected
iStateipe::Painterprotected
lineCap() const ipe::Painterinline
lineJoin() const ipe::Painterinline
lineTo(const Vector &v)ipe::Painter
matrix() const ipe::Painterinline
moveTo(const Vector &v)ipe::Painter
newPath()ipe::Painter
opacity() const ipe::Painterinline
Painter(const Cascade *style)ipe::Painter
pen() const ipe::Painterinline
pop()ipe::Painter
popMatrix()ipe::Painter
push()ipe::Painter
pushMatrix()ipe::Painter
rect(const Rect &re)ipe::Painter
setDashStyle(Attribute dash)ipe::Painter
setFill(Attribute color)ipe::Painter
setFillRule(TFillRule rule)ipe::Painter
setGradient(Attribute grad)ipe::Painter
setLineCap(TLineCap cap)ipe::Painter
setLineJoin(TLineJoin join)ipe::Painter
setOpacity(Attribute opaq)ipe::Painter
setPen(Attribute pen)ipe::Painter
setStroke(Attribute color)ipe::Painter
setSymFill(Attribute color)ipe::Painter
setSymPen(Attribute wid)ipe::Painter
setSymStroke(Attribute color)ipe::Painter
setTiling(Attribute til)ipe::Painter
stroke() const ipe::Painterinline
symFill() const ipe::Painterinline
symPen() const ipe::Painterinline
symStroke() const ipe::Painterinline
tiling() const ipe::Painterinline
transform(const Matrix &m)ipe::Painter
translate(const Vector &v)ipe::Painter
untransform(TTransformations trans)ipe::Painter
~Painter()ipe::Paintervirtual

ipe-7.1.10/build/doc/classipe_1_1_ps_painter-members.html0000644000175000017500000006042512624020245023104 0ustar otfriedotfried Ipelib: Member List
ipe::PsPainter Member List

This is the complete list of members for ipe::PsPainter, including all inherited members.

addClipPath()ipe::Painter
cascade() const ipe::Painterinline
closePath()ipe::Painter
curveTo(const Vector &v1, const Vector &v2, const Vector &v3)ipe::Painter
curveTo(const Bezier &bezier)ipe::Painterinline
dashStyle() const ipe::Painterinline
dashStyle(std::vector< double > &dashes, double &offset) const ipe::Painter
doAddClipPath()ipe::PsPainterprotectedvirtual
doClosePath()ipe::PdfPainterprotectedvirtual
doCurveTo(const Vector &v1, const Vector &v2, const Vector &v3)ipe::PdfPainterprotectedvirtual
doDrawArc(const Arc &arc)ipe::Painterprotectedvirtual
doDrawBitmap(Bitmap bitmap)ipe::PsPainterprotectedvirtual
doDrawPath(TPathMode mode)ipe::PsPainterprotectedvirtual
doDrawSymbol(Attribute symbol)ipe::PdfPainterprotectedvirtual
doDrawText(const Text *text)ipe::PdfPainterprotectedvirtual
doLineTo(const Vector &v)ipe::PdfPainterprotectedvirtual
doMoveTo(const Vector &v)ipe::PdfPainterprotectedvirtual
doNewPath()ipe::PsPainterprotectedvirtual
doPop()ipe::PdfPainterprotectedvirtual
doPush()ipe::PdfPainterprotectedvirtual
drawArc(const Arc &arc)ipe::Painter
drawArcAsBezier(double alpha)ipe::Painterprotected
drawAttributes()ipe::PdfPainterprotected
drawBitmap(Bitmap bitmap)ipe::Painter
drawColor(Stream &stream, Color color, const char *gray, const char *rgb)ipe::PdfPainterstatic
drawEllipse()ipe::Painter
drawOpacity()ipe::PdfPainterprotected
drawPath(TPathMode mode)ipe::Painter
drawSymbol(Attribute symbol)ipe::Painter
drawText(const Text *text)ipe::Painter
fill() const ipe::Painterinline
fillRule() const ipe::Painterinline
gradient() const ipe::Painterinline
iActiveStateipe::PdfPainterprotected
iCascadeipe::Painterprotected
iInPathipe::Painterprotected
iMatrixipe::Painterprotected
iStateipe::Painterprotected
iStreamipe::PdfPainterprotected
lineCap() const ipe::Painterinline
lineJoin() const ipe::Painterinline
lineTo(const Vector &v)ipe::Painter
matrix() const ipe::Painterinline
moveTo(const Vector &v)ipe::Painter
newPath()ipe::Painter
opacity() const ipe::Painterinline
Painter(const Cascade *style)ipe::Painter
PdfPainter(const Cascade *style, Stream &stream)ipe::PdfPainter
pen() const ipe::Painterinline
pop()ipe::Painter
popMatrix()ipe::Painter
PsPainter(const Cascade *style, Stream &stream)ipe::PsPainter
push()ipe::Painter
pushMatrix()ipe::Painter
rect(const Rect &re)ipe::Painter
setDashStyle(Attribute dash)ipe::Painter
setFill(Attribute color)ipe::Painter
setFillRule(TFillRule rule)ipe::Painter
setGradient(Attribute grad)ipe::Painter
setLineCap(TLineCap cap)ipe::Painter
setLineJoin(TLineJoin join)ipe::Painter
setOpacity(Attribute opaq)ipe::Painter
setPen(Attribute pen)ipe::Painter
setStroke(Attribute color)ipe::Painter
setSymFill(Attribute color)ipe::Painter
setSymPen(Attribute wid)ipe::Painter
setSymStroke(Attribute color)ipe::Painter
setTiling(Attribute til)ipe::Painter
stroke() const ipe::Painterinline
symFill() const ipe::Painterinline
symPen() const ipe::Painterinline
symStroke() const ipe::Painterinline
tiling() const ipe::Painterinline
transform(const Matrix &m)ipe::Painter
translate(const Vector &v)ipe::Painter
untransform(TTransformations trans)ipe::Painter
~Painter()ipe::Paintervirtual
~PdfPainter()ipe::PdfPainterinlinevirtual
~PsPainter()ipe::PsPainter

ipe-7.1.10/build/doc/functions.html0000644000175000017500000003277112624020245017000 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- a -


ipe-7.1.10/build/doc/classipe_1_1_inflate_source.html0000644000175000017500000001616012624020245022307 0ustar otfriedotfried Ipelib: ipe::InflateSource Class Reference
ipe::InflateSource Class Reference

#include <ipeutils.h>

Inherits ipe::DataSource.

Public Member Functions

 InflateSource (DataSource &source)
 
virtual ~InflateSource ()
 
virtual int getChar ()
 
- Public Member Functions inherited from ipe::DataSource
virtual ~DataSource ()=0
 

Detailed Description

Filter source adding flate decompression.

Constructor & Destructor Documentation

InflateSource::InflateSource ( DataSource source)

References ipe::Buffer::data().

InflateSource::~InflateSource ( )
virtual

Member Function Documentation

int InflateSource::getChar ( )
virtual

Get one more character, or EOF.

Implements ipe::DataSource.

References ipe::Buffer::data(), and ipe::Buffer::size().


The documentation for this class was generated from the following files:
  • ipeutils.h
  • ipeutils.cpp

ipe-7.1.10/build/doc/manual_36.html0000644000175000017500000000554412624020245016553 0ustar otfriedotfried Ipe Manual -- 8.2 Writing ipelets
8.3 Troubleshooting the LaTeX-conversion8 Advanced topics8.1 Sharing Latex definitions with your Latex document8.2 Writing ipelets

8.2 Writing ipelets

An ipelet is an extension to Ipe. Ipe 7 uses the scripting language Lua (in fact, most of the Ipe program itself is written in Lua), and loads ipelets written in Lua when it starts up. It is also possible to write ipelets in C++, using a small Lua wrapper that declares the methods available inside the ipelet.

Documentation about writing ipelets can be found in the Ipelib documentation.

ipe-7.1.10/build/doc/manual.pdf0000644000175000017500000145343512624020245016057 0ustar otfriedotfried%PDF-1.5 %ÐÔÅØ 2 0 obj << /Type /ObjStm /N 100 /First 806 /Length 1193 /Filter /FlateDecode >> stream xÚ•VMoÜ6½ï¯˜Þ MÄOQ€ÀM‹À€‹µÛ½qµ\[V(ɉûëûF+9k´^­¶F"ß›™7Ãá ÊÈÊÈR.¨ ‘ ü‘0 ‡&a‰œd†/ޤ”$I“¯Ørl’–¤%¥ É‚”˘SgXP¤5Þ4i—“Êɤ˜ZÉåJK²Þ Y˜Ú’5x+È’LF9B2ŠrÆjʱŽåÜa͑˹ §²••ä˜ÂƒwkÉx+¨PLAÖrEÖrME|sdª¨ðÔ99ÎÜɘ…@ÖÎà©ñ´xÐ, ˜ Ì,ˆñD ’ßÁ'᳟bÕXJ¥‹•ÈÀ¨˜z-\hÅY`d Xt³KКlô Còˆá(Àl»ÅW+ÜJ@Ka¡»@ „e~±9ïsžq,`Î%øš[ÅA¡ŽPN@RáxNãòΩÂ$Q(ÌzaÂ`P™IŽ.ƒÁ„(Ì8oHî3@»=Æ ÃrPè­/Zˆû ¥’Òp{¡wdΘGéP0©<#©X,KÍ1£l’;J nR³wî@]@ TNf†ÖÒ6Àl¸°ˆ[Z– Õ“V+N‹‰úÉ<Óœ% Up–08^TPºL¬ÎÎèÝ5½ûo"½û™^u¡ì«Ø¼¯éýûÕ«Ï¡.ã.P©¿ ô96›¶C +ÕŠ[ºh‘{šóuzÞJÛªÝóûÕ~ÿÇЄäkú›2´ýÿ†õ#föSBpS\ÿµ%ÔÛ ò*‡”BÓSêýòt ó×x_5·ä› u¥¯Ù>͵Þã¯û¿„]j*cÓÖì±W¡yCßÝQ×?Ôá ù”â×îÍÈÖWc0­ïûš%F; ‘|ÓµB” ˆ|Šÿa·ŽuUŽ>ýº‹õÐ#¾OÕÖ’_·gù+ÆÝÈÐú%Ý‹©=RÚŦÈö›/ýCXUˆ¹¢C¨»‹©/‡þH£Nü4–›ú‡v![=7é•ïïNêýØ á["bêË‹¿ 'Bô¤'B¦ü-l7Ë£§ýA{âˆrúºñm‹&=êË̪}L¨OƒL²avô¬Ü‰¨Iºóæv¨}:5©wWÉyþ𨜠h7 ½afM~ùæwíÑùhçÁ#ßÝ…p¬E§Cz•B‡ÙæùÛñ8òÇ=€ìÇ˳¾Ñ“ðTáëÒÖIíŸbü²óéËÒöÇ&õ›ŠçôIƒ-Ÿeå{gjKÂñưM˜8ýñc5‘L3ê|sïÑ阬±­Êã~Ý,ãõOÜ—¾h¶USU ¯†ÀCÒ¼Ëa‡Äx'?'Ѐ·jq]õKÁ¨yºÇaÍ…Œqs^ú›ðçelî1!—n=7Wá÷¦*ÑÓ£€ ˆ©†®»êö‹bü„£šMõííù÷;yþµ@Û˜vþ¸§óYržA—÷ižWô ò)¶ÙÆ~Eœµ)øD~: XWýη ðGìטø/p+Ÿ$ÝD\Ö/Bº®ù‚}ú0å{L‹SVßÏóþàθnÙ«z’ñ-_wnÿÞÉâM endstream endobj 310 0 obj << /Length 3034 /Filter /FlateDecode >> stream xÚµY[³Û¶~÷¯P;™)5±X‚àõÑMíŒ;iâéœiÒ©ûÀCBjŠTÊöù÷Ý(PG§íK^$`±‹Åî·ËdsØ$›ï_%/üÿéáÕß©|£Ê8Uy¶yØoÒ´ŽóbShknºÍ?£‡£Ùît’FïÏÛ]ZDÒ;5Ãz—¦ßþëá/°P±Q*®ó<Å…TçZmviWµâ…~š÷“5L‡yßÍ8pêfWÇi‘¯Ž³¬`ÞÇmZFŸñÇœ¶i=ÂÞОpv¥ê5/“&*çýSØ?‹uVÐþ;Uè¸Ú.Kã:©xUµÝ)•æÑÏÛ:‹Lߎ'ö†—è¦wÿÂ:;ûõÉMUW7…œOÜ'ÂfYŽ^?Pަ?s몙DT{ø÷)^X¼V°5ü5}?’˜Žûº+ÞþùR »µf蘊çáVpTY^]gc>?nÅŸ·y¦oÍŒoá‰%G…´q¶åæÁ€ç›§'/‚=ÙÙ~ÆUlÒÛOÔ½w¯½ ]ø w¾ö²èLúû§¼Z¡µv‚î]ÖܲâÀU×Y¶^7¼8 Úsr-¬Ç’õÈ—SÊå¤rwÀÞuܘÁX¤5®ø'î‘BKV(Y\%j‡—a97õO`ßÜáò'nÞŸFŸt˜š“_í=óY,ù½ÃΓif'‚3·Ò`¬yýÛ´Bh„ûŽÏRªŠ“ºþí}Ö"#ùÞ °©ŽÍõ0þFØÅZþ„ÇÆ¨ïEíQÝÎÃAˆKø®xápù ‡Ëî0 ›NƒN‘`žÄ%@›Õ>.öše×@C'Ó` ó‘\ ²R šKV€?†W ¤#3@ø_Þa8‘¼²c×]zÔ°É©ø±-iF î`-Sч“s„¶áW.«8{:÷÷ßx#‡ë%&_PÄûTp  ¤¬^ǯ‘—™ÄTÀ';Ùçw©c­ÊMÀó{;(Ç ïÅk )|ˆÉ£Å‰ÜÂãV8az¨BÅ*¯ƒ»}M$>ˆÒŠZÉ!Qb°HlgÁT71—fVÉTSÅU™¯#ÓdË.À’ìRûǪ³%Vÿï< &ÉÑZ„ ¯qÛ•¾ap„u´™÷–€‡G`[Ü4ýýehqE™Å[IÒ*eÑ?Ƀo-áœV/¤½ŠO‡Óàö÷pñ°4')÷=ñÊŸge¾øsî~[‡—_W2)oèmÓÝAÕwä ªf¨†µ*êèÝÏ1ñvps3´š«$ÂÀÏävœ$ è3"NÃrúJSà9#H¢@NZA>74gÐôÙú\KA.¹ÑZ'ê¬;™JW~ M33п‚ÄÓ#ÿ{Ur"XAL&Œ™Ùí²2ÿ±–ÏEB(ˆQ¬Ÿƒø·ïMÏ=Óz ¸A¸t÷ZÓÛÀ®9+Ñ„ø_6ƒ5-Ãj¤®%q2eÿ©D ·—±Âu5ƒ/ú¹ŸL« #mé̯„°©‰œŽZÇt²H|݈¯;¼T¼%.t\L »Þ”ø™Õ+=Á;Ë–€òŽ2ÇçÊR Í…‰vTôNp+/¥kêb·¥tƒÂô8 çÕÐ9Ò':Î’bí>Y‘æ,ø<54å{Q Æ¡7…m¦kÒ¥5[¨îe÷ú©=¯Yíy%jÂ`!zÍÜÞhäŒ Y˜µ|0ö¬»Y`ß´2]+Úya¾£ö¬Šu½¸· ûzn§ ÂZÔª4‰þAîíÂ;Ç-¿Lv‰äÆ'91ƒZ F¯å,‚r Œ™»ý@wGøª]³=os€d½™Ý]Ä¥ÖðYVÃE´†w™ÌÁ‚מÐAßo©ýÑg˜ÐÆèÈA–ŠI'i·œ‹#ô€æ¶=2åàFVè’C(ý ?Äd”s¬;£¼ð±­¬D0K¦$D€Ã`_”û$>È×ü&p!)µè[Yìà…q0ÂCíî9ï@ßUup+“}¼H!¤R\íÁ!D’ žÏI¼ŽYí»˜ñe^ËVd14 #0ã ÷ŠÖ<±"Ç—QK(X£ÛÍãî.Ɔ(A@œ´Ê[Ã`=‘ ea¬o†Ã…Ó§,õéS&å@ \ë£X7è|úañÎhÕ‘ùüÉ(ï`܈dɳYšùÝ·ßâ-—*zsɘ3I€éýqVB¤½)ˆÜ˜¸ääšÒ,N“Ut™Åkþ}[auFË„Î6Ä^öš•biZP $lÅäW ©' òP…y‰ã8Ë9LèY` ÿõb¹–YTaÍ€ Ki •jôx#ÝB<rñË„F’ .ý¤Rúy™ƒ Ï Ñǃw.¤iM)_C)9Üͪü@üWPŽÌ'NÈ¥r| (áíP*ó!xÍï|H*Ó•,ÈÄñþ¯ÒN ìgÖ‚«àmÑ™~¿3_Ï`ùÍq7k^œ/*—…ç,øã;0!ˆåÈø…Á_ÆÊ Ê†Yàôò!­$‹DU–b0e”týrÍŸK a¼ òðƒ^+ëÞ_q8_…8ɧ)䤚 ®ÀÎðI òsZ£}ÎE‘šÓËç›zyû©ÄÖëÄSùFù摾+’WY¾3¦‘|ŸD³Çªú3L›¬¿6©N¢’ýG‹µgJ"ɽ}ö…¹?Ð¥\«MHcï%q ‚ Ó%ºggV²#%ÐXl;ü$°ežÔ òá;lÂó›æ@X²tpËm Çyí¨(Âkqn©*‡c†ÏÖôx.IŒ|„pXæ_GÞ´è gžð70~aWù~aóíö¯ñ8ËùMª’X%DÃö­Cž·¯þ1öAâ endstream endobj 326 0 obj << /Length 3294 /Filter /FlateDecode >> stream xÚZK“Û¸¾ï¯˜ÚK8UW$ÅWr²×±³‰¸vdSÙ0"$!¦HIy<[ùñéî¯ÁÇ ÇÉe4@£ßÝšíÍñf{óö›­~_}üæ»7ÅM–YœÝ|<ÜäñM–'a”Ó¬ºùg`+7Øêvï²àÞ 'Œ^î»öÎ /h–%AÛêš}}½‚Êop ¾ïÌ`¿|÷¡úe¥<´jé›ûÛMð¶3lsÁЇ·›]”hyzÏ,/–Q§ÿp¡¯¬ðy{Ó4íÀã4è¬QLwç†Ît·ÿúøGzó&ŠÂ2Õ×}àãÚ~è÷»ðÖb‹×Ð÷Ãë7Õ»Úö|gIËMý°€cât÷É(`O$€s²ÚÛúÀo¢<9ÆÉËÀ)îž±7×Þ®œ½8êŽIV fïg´¼3Âv˜Å“S<¹×={gj¦¢N®ªlƒq?Ð]gŒ‡“0ªl/RêHJN‰í=’Å[„–<ÐYKXiüÛî!Ê8£'¥ÛŸZìr|niK{Å„Um“X®fþ•›£ml§œ 8D0KOnÖmn7É6*G¨‰íTɼtí±ã7'[zÿuÏK',±,ùû²jï<§e>ªÅ3)ðÚ½«kŒDy°Økîj -¾ÐU¾Ì+Þô(Ùs™Êð0ØNìÁtUS#yp´ ËÝnùê܉pwÇo'‰Wc>Œ¿÷"aÚîìÇLû¡ídCÁücÓt¼vÖï¶zNo˜ Ï®9êùÓ©Ø/ZâOèz‘;[RŽ,ËfÚÃèG;ï§ê ïܬ=TŽO2R»ËàÚFÇ|çÄñ^ŒGöË`›ž6ô˜ÿ%;ÐQÑ^R¦oNšKÊÆ¼~ˆiªi‹Sùϰ~O‚|ÇBß8±fOO®Ž¬z–¤5-~t™Â(ƒŸß¿dô :y°ð ŒÖ´X#b€k t7Ë$ß’ŸÒ³/éN¯²Ñ‹Ê™Êø-rü˜yÅX“qÈ%ýš–@PûëY SøGAMÆÞa(úÇd´Q þ“'g#øWS³ÙmA£\`4 €N†H5;ƒ^ãÄl¤ã6f @Âkƹ˜®—”Ä;U¦pÐo¯eïk’ÃH(Nµ¤º:T?Ôc&ξÞça†÷ñ¾ëp¹sÔL^'&”Œ`}A½4˜]ä¥G¡÷ß‘sR̪m~£çãñ£ËœÝøI”Ø^Öž8ùð¤ˆFÏÑc*Ò¤/ÞC(³´Œƒ;yY¡,-”¥ôµ_ö¶®'ïìÛóY”¡q{Òb±v«iÑȳš†žÕr_¢"ÔÃVž¢Æ£¹‡žìJ¯]Ô±°dD_ø¬«&[í¢c f´Ë`~°÷ÓH¾d¶÷4$lyz=8Aû&_ʳ'ÆÕÿ–©øîM²¥}£[Ó°(Õ.߸Qd¥gt‰dC>;‰õl xá2£ŒÒcœfHdSMy`0¿à\‰<ˆÌ ÀͶní¼¤x)ù2ëg¹á¾Öyãg\IÕé„?YxÚˆ ç•ÁK½mIé:E—6úÆeÂìÎIùY²'2Oå»džÔt™™.5@9Æ«RšòxY‹sÉãiìIT›FqîOnÏh'L²Ÿ=Då~íˆ9Qp\h¤ªÜ`êO8äÚ“ºéEH8 ¼X Ìšç²;‰ƒ)¢XIÉÉ—6€ý¾ûþ5ÈÓQâŸIâßv’ùï‚—59­†Ø JÌ,v—Sô™UTÏšŒa'—Dô†nº ¼§Sõ…wîX&Úë3U€n5¿o»öWѶϒB¤ÈzØŸ¢0¤ äI%±¤…Ç*¤þ×~¹Ô”^õkNø@‚ŸÅÙNÑ”á¸vY£_¿LO‚žŠÓŠ‚ÿØúò[>—öÖR[¯™uZ†;*ú·\~\ Lˆ‹‚$jßèÓ>^€ÿ)fO($UX‡¡çêæt¹ß›E£Ì]ÞìJØþ€s´¨"ËEÉK…)=­õõ¨X°>g!dbÉX Ìâ‚$"ôå'æàY1>‘*GÉïP«PÖ³Õô„CÍÉN1Gš›YžNµ&YÍ·X ÐϦo4è)p•³ Ý©tΣgù4,­©8ÊÌx’b²õù–±6$gywZŠàXg»·›{æ”wbÇ\®šz8µ×ã øà m0×/øŽ–1Jô0.gŠ˜ÑqyMì?‡–¸˜rÈ~¢µIfÑÎ㚺×G.8¼&÷º]t$Ùa§_Mò`šÏÈ$éÞNå•,D’ŒŒýŸVúÊ gsYµHJÅ’ñm?µgË…²V³Ûâí3• àáZÎ…€|à^_nŠ;{ûÚEÁKn5Hi“¨ c]¡ãh¦ø0>P¾ä«Q·‰šÚ6k¼{ªÎHˆûE><’Ž”X–>üùí û‰”ÖR¡+ÿ“˜’\åB1ŠÓà­XÌ­< ¾o›½½ ýS¡°ô"ÒšH#ãA+ÓlfÄ1÷LŒèÁ¯|çÁ]¢›×È8óÍ"õÖb`€vï87{d)e<%N¦;Z Sy1Ö­Üó´Š"ZKÕLrUñçþÊ/½–½œiŽ5²ÅÇ>D[–™ä¶†C71‹Õã©gqHqÝkïží×4ŸÍ Kã"L£ÔcÊ¡šIf‘öé /»G’¬çE§ÔˆáÂU#ãTßa6³Ä•a‡ºAy‚Ÿ$–Û0/Ëg«Ý({éOÖ²&D:Q÷ ¼ }+­ÃL-,Ц¾oçx·Ü9Ñγ'v"~<—ÎÓßO®ÖÍ3ã¢Cç¡¥=û¡½Œ7¨øÐµg½jÆý•±½½tÙö4îô9úô ˜uU×Ì\í­­þ€Æ_Þt,½ s>!ä%uÖºA“­ë¯7E_zÏ’ûÎ]laC®MCßÖfÀÂ_ ì5ð¶­Æ dyóM{£±„+!tf•cø‚M¶i±“³|@zÕ;ÓQµ¾I“”#/áйUÏ)ç…æraÓ¹gl­øçŠgÛ¥ÇÎU`Yï~õ͆FA¤ð×ÚtÞg÷m}åüów~µòø¾ŸBPÇ*ЪÀmM¶³P J¨¯]gçâ‰}¾/òɽ; AmF'”I4‚ òˆÅÇ¿|Œè{* À&_¡)ŽÑËÔÓ‡y¼kïQýCåòé7¨ò?8«·¶ð¬x$Þe)ÿÓŽ= škÓ9EÕYc¼oëVÌ,O´D–† ­Ü;VÜáä zÌéc²t}°_½—”Bã•gÓ}šVCÖÉ2xe5ÙŠÓýNé7øÔ®×’ÎZ~ºF¢<ŒÒ‡Ú> stream xÚ…ZIãÆ¾÷¯r1tÓ,Vq››ØÎ±ƒd0‰Ý¢‡"Û$5ãòãó¶ZHQž‹X뫪·~õJÉîy—ì~¸KäûíãÝ×ß§ùN©¸Ê²t÷ø´+Ò]^èXùîñ¸û%‚âþA©4‹þ9›qÿ ‹,žäûaÿëè·æ0Oû_ÿþõ÷宊«H©d÷ ÊXWLè›~ÿš2zûß"j¸vë}ZFŸÛþ™Ú ¿ETsuj~¿4ý¡áF\[Ÿ›áÜÌc{à*n#ËxñþÁ¨5có Ë@ŽK'$Öñg: þ Àeà Р$€cW¿ÜckÁ;¢n?>Ÿà0åÄpn¡ô>QfœdXÛó×3WE_ñYpšç"Ñl»ŽK§ö(m~P¥Ø7ÄN]F?Ÿ€Qí·Þ7ŸaJbGíh>7tÔcÃ…ÃØÔssă'.ûºPÍ‘‹mÏJ•VV©2³JÃhé§qŸ)Øê|­©‰‹Ô $EútxÜ«œ41W ¤³èoƒ&DÄNK¢WòEŽT÷R IÕý³™ŠÜzHYZåK¦‰zMíÜ=³ƒ÷XEµ­{冸Â+—_.óLfƒ•væµ2óiXi…Ð(Ãz6‹<±ü¡¦}¼g]¹LŽ(+Þ+m¾ß—:²Tÿb÷yôKß -éºô<Ý´¥4´­-—VbN˸(•ÞwÇvKÀilü˜sC{»ÄBmáÖ2§y ¢(Ⲭ¬oKÅ·‘»@v¸Œ#ÐÑŠ8 SÓ5t†›þÍRûùÔôÎ;T_y@è8Òì†aBË8X_螆Kw”¹²Ï wKC6“•%p½·.Ud¿Gð!\ͽt¥bcR+Dd7ôTûŠåFÅI™;“vf‹G"ÓÍÊB„ k²ìÈ›@méí±å}’%ÛÚ§2'FmìjKtç^ªbúÐüv²«‘q—ÊE‰‚¢4¼Ôã<½aO¡Ái¥™ðWBð-–±qœxÛs=¾n0,‰L Î!B6¹ ö‡5Ü~›?êÃܽJ#Ê ¡+Âdžr.ãÔ€æš ƒY;s²`Ε ‹¬îc¥æÏó8\^}13#+ã ¬k¡lß Ñœã‘8\™¸2f9‡Aj‘„v™æc`l>1é¹jƒ?–‡Ëܵ=£æ\"µ§„V@£BĆVH†né¤:úi˜e2¡‚z¶iu'Ã…ˆ>y[ñ„p¢ðdâ²Èÿ##ð«Ì_,Õø9€¨NNøØ±Ò Ö ¤ÛÃÇøÏyií·k’”u[Cù'€&G;¼[¢Q3w·ýjWÏ>6ÀÉd ‘ ¶ˆ*æÖ)Be„%–ûHwµ×}i"t¹½¬ektÓH^t%ƒ^’˜?Ùš'v SÚû˜©HûÌaÅ^„ðÆ:ð—`¶kêI€÷r ·‰-(â|™‰òëèŽ-ø.’ w Uá3vÀ»0ÎenªîÏÎcý¹†‚“ …­n()ôY%vß{rËX!q®ç‹xOBŒÚ¾Ê'èàÜ!ÉðÜÚ[ÞéñÁž}Ó¯’а¸­a]hE©@†-»«¨&¤%,ÒÓZúøÖï5¿ãpj{éÝ`å ÁzŸ%yä-øa»3ŠBh ¨øþÔ·>´0Å›¾øÒýÌâ dŒ^ïä·ê„HÎÅ\é' `¼?~¤ôhàÛžG>EܵÁ[#ÞJ B.‹Îs;çaÄF„DÍm€úÍ‹Ý@kGÕÕ•(‘‹„óË…]LQYáT&€ž*?´v£y"+(’¬Jë_ŠÝ5´­sÐäP%Nsû±epçö·q0 ÔÚx™øëñ}¢õ,Vù ­“µ~÷x÷û‹V¦ŠU‘í4 Ï+³;œï~ù5Ù¡ŽuUî>ÓÐó® º„R·{w÷/ɦ‹kdk¥‰”©ê•]ß&²8%z6?²qEQ°§Â_ûðrÒC!p-ÚÁÝp€e=×E fÐÕ<ݳsòÏ%8€ÒaGÉwä5 —ÚF $TûªäA¶`"`¡î,z7p´f0S`©à^¡wûÝEB8 æU¿’¿]&)ìõSÈç†^¬¸Jþ¿vW­8€±F! ª`I äÊ-@Zù-¦â ¥eò–¤¿é-l+sq±ÎÕ 7Ê€å+¡…ñIî^)ÊâV.¯JbUþÞ¹ .ê9¬  ªÝF6±N]>:Ȋê¢{7-ñ™§ú£…޵ñhñƒù½C&L’Ît\¬'C¸ª\³[zþÎ`çìÊè¥~&‚IIŒùä ÚÓ=XÂøÕÙÛ‰QæO ]mòT<¥…!øvõ+¿–.ÙP¦q¹ÁdØ+)ju‹Åy©ë?pýíÒ*6e±æ3/áSPAV Ÿ¥e+£Þ|7ÑzñzEþkë^h £å¦œìæ›T²~Òòõã€PŸõd ð1êPw®•ßÓ/<¾[âìÒJ |Jabl¨¨|&kâ.J­Ò˜±î'¨9ÕX%‹`øfëáNÞLˆtòztQÓÊ)Âý½,.‚ ;“kæÃiCâeœû—¤{Ü.ÇÑMš8÷ÊÁOÈóæÓ,N ·AzN(¡•†!yxðm#µñ “˜ \:s½òˆ¢$™KWA‘¦<ÃÚ˜ Í’ ‚’xI\U⇣šÙ=&‹ç=¨Y 7qU¦‡Yoìk˜ÄEû€îÖXÀ¢ l€h °¼!Š¡'îq]WŠ_G7 ¸7¹;ÌDo1l[ö^%yxÝH#HJyXDJÝñ; *{à~ä „Ø©™ð&ŒmpöÀí§alÿ+/4uÇm¬}rÿ@—:·p, `éºZ½eÙ}`z#lJ¨ý ¬¸ãÜs&‰>ƒÞÇš§°Ûž‚‡&í2{DïÐ`";Α7oƉ8"LÆ,þ ±> stream xÚZK“Û¸¾ûW¨|Èrªf¸¾Ž»I6åTªâ”§âJíî&9=©%)k´¿>ý q$Ûh¼Ý_? h³ÝD›¼‰äûóã›É7EX¤qºy|ÚäiX³I3ª (Õæ×àçó݃6qPÕOöØN÷X3Á´«ï~üç¿Ä…7>-B­ÌM#‡»Dýd'éê¯a¬×ó騕SÓw¼Ò@cF®Ø¡?v—qQ*”uwgÁt§ (X‰ÈýӪߧ»‡8`èX5Ý©š¨YÐßAÓ Sžúa5r¬Ûºœê w¾yPJ‡‰ÂoX$—¦IÒà³ÛC9áÝCj¢àq×àæ‹BÖ¯w×úÒÐ*@.-ž´È];SiC_𧆦ªêÎM¤3—Ç(›§3Ÿf±ÒѾ¸uÇó8Õ{.ÿ%чڱI¨¦d³ïžd°? :’ã&|ÜyJ­ZF`‰P€oÓ¦3ËýÐl›Î£ƒãXWÜjÇy,Jd#ÞlLõÒ.”!‰¼ØÊãUÙ‹U¨Ô,{c‰ÂgÛk¢—„Q6w´]um²(Œ"3O6‘(×S¹{=Ö¡NׂL÷áa¹`ùSöCçËl‘²ÌBs ³ÌŠÀB!9…N,°þ°Y`©F™Ÿ$[±£ešâ’¡LCÿ|§³„ ‡ ¨nmËå²oûa|}”å<ÔOúùhcA§Íl‚œ–gY’@LŽ»}hšP„Ow$D¨X_×Ã"Ó…Û\’Uì;+p“8¸1—–Õgnæ“áÎV#™øÆ51Î>ÅZ}_ZP„¤Ðd@4s¥'º×rh¨TØdpýxE¼”ŽÃ¸Ð+„»*y‘Ý^(è“f®Ý+ìQíëéT ºL7ÈÄ.B‰%\ƒÃÕõ“´kFW¼¸G ð•OŒÈšÜ:4ò@Ad•¿ÈC¥—l¦iðÞS–",°§TsE, ò¸B ^eU‹CÒU"Fí™{72ÅuíV… Ó4v\xÏÜ?•¦¦¾¢&³b6Û'X› â ý˜4Þí-À”lõ0Ô;Â`Õò§±,±OšÄÄÌabl¢Ð$+ ØQtì0Ë(M3ÂÇk1óÉŸZÆßg®6Ý3n.á#"ö}wp®ö¨R×ÓèÈwº&ºq’…YZ|èê(T‹»Vl2ñ{š7tFFôG®°x[9ϸ3*Ïp‰µ•e óU8<N ÁVfæ¥Ø‚&ÇF”á´iè?ÙO(HØxæ½È$ËÆ°ŠèÓO\f_k°š›k¤[‚¼0Ö¯¤h r8ÆqúêúW€Šw s²ò÷á8îî¹lQm,¹¾§ ?/ «ÅËð&É/P:#TâsCj­Å"Ã|»¸k@n›ç;Ö\¬ØjÔ÷%9@glâÇ;˺m)¬‹nh«NL˜$Å÷Á[¦ÑZäplA‹Yò‡Tg ¤³0‰+ò›Ò†Ø÷ö¶×ö‘cŽ,ö¯àp¨ÙƒËŸ[L(y}Ï~„ŒýE!^ÎLðZ¦ÚõY”k§] læ­d²Q#;ß Pš‰ç\4ª’}0>ÏUàÚk?M.¶wÚ!ª,! Í肉 ¤”ÅMŽŠ0ѳ-zOl2 ñóÛxœ©ÐĹ/u[ÉŽþÚ6ŒÂdAW[±€¸ \ËÝì| èWWƒ¢ÔMÏÔSCñÔ¹l“TÁÖÒµ¾÷ï^§Î›ÃY‡ZŠûž,\EÙ¨£ÜywóöžewEæùþ"Cäâ¸o&Wærá[T7üÕÄC‹™¥!íØ3I $[6+øºÓ5ÌÙ³Ù=JÀý´ ©Eò±4ô"µ|ŸÔ_`lz‹àtEÛD# (^D~Wž'€º8µ`‡¡';J׎‘Ü8„v¾ Fß[:ÁÅ=;,f.Cãu¬•å1r “Iºv›Ú}3h»™¯Z „´ ¿7ß¿if*]Á/ ;wðåÂÄœ@ Ù,XDP,,d^6‚ÐÛM¨o )i%¤Ô/e}II'°@·K#yêŽk§¦šÀ"Qÿ?Z£õiÇVc'¢Ä´bÌ–œMrPâ"ÉÏÇQúZ/g¶DÁ^+Ȥ…‹Ä·g0øÑB‘y¨zYD€›0Ï:ömsÕ5¡!ÙRMÁf+ýÄ9;ð²ë© 11Ë2P“ÛWâJ Âhtt.ó”žcphë ç½+²WÄ ^eÔkCŸ¬ÿô¹FB9]‘´$ ãx–4Ùøxœ¯JI*wއz4%ç-gA•S\iï¨Å6ÛºX"5„ίØ5Jjy<,5°Í&_bFðÌšÃ8w€o¶Û¾î‡£-y"(C‰¦ÂÃ@ aˆØ{(äÁ¸w!ê’³ãDåº@o›ÑQŒŠ/ 'œ A£K·`$ -Ûf1}P%ÎxYÌpLÜv™ª¹#J¢ú1‹Ýðgô¼¤ý 8¢?q×m/jB^Ó¾Üe·í±¾ÜÕØï9m†3Ío)þóL„/$~ÍyÂT0;Û¤a‘ûÉQƒ)²S%ŒR¯ñ!‚(Ãó$L2å½NEyP’Ç™¡ÇI9=J%‹Ó Í’7¦DÅÈœhõšÆz»÷ò»h}9ÃÐq{Ó] („Dùç ˆ!÷,ûKŒ9sŠsõÛm[/óÞdÛÓÐ/ñÝ,Ñ(êVý®œÝc’àßlïõ¢–¢wD»­bWµE“¶xï4V¡U¼DjµläfƘÑ.aÅeA°¦ÐõB"b>rË-)6^Ü6ÍÚ„WBÃç]p:•!ÍÄ4ŽX÷ýu¦ Ç„n}\òÂEýw²Ë%”Ä%ØâÂú›×éŽJ™iµdÕK­+‰²Ñ/§ª‹¤©%‰äMƒ œ–ŸÇFœàž3Ì.››o;qžM- ;Þr¶!‘gh`(„Âj÷VÈàTï˜qDê›AQj÷XROÍž0ty|:ŠlRÄMn7ßò³àZÈomr÷L™ñÚD%gžV¾gíÃ&ÃÞ>È÷q`y¾-¿ÿÅÐLnÄ»7+ï ,oØÒüéh¸NlÌ¥àˆÖR@®3þ6­ýÔ yc¹Ró,~dH-K,ˆ5„«X^ê‰ÀpE¥\ÝÓÅ B#é¯Ú¯p˜ÊqQ² ×|ù¯„áÀfó†I1°Û»ºž¾)™4]‰ÕäbÙ×PnBÅKâž+ ¬çÞnÎ>~ë‹\?n{³l,jL¶ó#eE:nŸÜùÿhÏ´i {H Nn¹*žzz‘Ñä& ¨'ßvŠ©áõÀø(‚CIu±{ÝO²9Úåæ‘K““Pã×6Jºã‡•)㬠ԗ;’ÁòF˜Þ[ÂèOå’!@lÕ]ã“› æ^°! ü= ¯yáüØB‘úØl;÷G„I £gHR?9½ä)uÿ;³h\‚GZOök‘­¦Ýßö âdÓbRZ×E˜n[ü Ï¥ÀQ=³g¾¤¢](÷C8nZ,‰—Nf;8ûRØM2Ëî”…KPsÌCÅ9}Fì}ÜT“¯CJ—kÀ¦åõÉä^ºk¼ ,Yþ8¦aY˜ÉòBÀb!s¥ri/Iuµ¬>¹îcëÂB|þÉP %© }G¡ <¬­ª»±™ä;F‹žº$ækâ]Ź`&%CÞ Lv6ZTX‹¾É³TÁ5Ü_Ì~¡ý?È ÷Ö<ωìI¼4qI,pXÍeBŒù?c|óÇ #£Úœ&÷hSîßüú{´©€ Üu‘oNÔi¿QYFíæÃ›ÿð¿ÎT¾IÀûÏ™uñ&ÏÂ4É/Ü•m2è)z þ +s¥ý”YZˆgˆ%J2p‘MTJÃÒQ 8Ê¿àûg=ô—”íÜÅÍwßÁõLëÕæUý¥)ëÕºšÛ£k"×-Ç‚jà¢`ž) ^š½jr×ýIG»w>d‚áÞ<!`¸€¢@\@@¥T¿H0)fÍ„OEÜP¦Œ‹€Ÿ‚â"p#àÆ®Ï¡¯Ï˜ÃÅ“©‘›òû¿ý"°É0é]Ä­ØxœvýиL4Lߌeì¶æÎ9ˆ‰÷ì'Š¢!ŒXÞÚNÇ2+ úñŠ„V+˜®Ä«™|ÆÃóÓ Ô^m,‘¬2wOäRØ0î‘v^¨„û®m?ÜL”oà !DǼa³Ö¥ÿÕ»¡ endstream endobj 348 0 obj << /Length 3280 /Filter /FlateDecode >> stream xÚËrä¶ñî¯PùÄ©’hàÓ7§*vmq*V*•Ä9P$FC/g8áóگw¿‚ÊëÊE4€Fw£ßTôðú=üðU$¿zþê›ï‹‡2,3•=<rõå:Œs˜5ÿ ¦¶k/¯‡'­“àZM“.<™G§Át2 «ûËAÁd>M¼r6˜y¹•£²?E„'A=ô×Ãl5ÃÔš‘?Gqbº&<<%IüëPè Tõá)*Á×Üy"ÞðÆ~øŠg7{13óßç¿óOq–©°)¬ÑÅzK¨šžˆ«gah’ãtPyðÖ™ñdÌ"æo¾AêT¡@á"•‡EQðE:Ì€ôX¥Áó¡L‚¡ºŒ×j0—úûo4¡.J>úA$âˆT0¢æC\ÜHTé âŸ±=_;Ù|fúÓñZdøäßâQg©FQ'$jÜ[£˜ ¡™äÔÉškU· äÍÇ«åaqoÿrxJ³àS;ò. A5Ùy {x3È$œü  ôàEº¾—GþYˆqìI1ŽÒ0ÍJ¸…°{/gæYn×#Æt6i +þ9Î]G×%xÿÿf#W/ >¤ÌƒÛ©íd1Ú£'䈿@Oa×SÆtc­îš…<M§j²#–؆*´#‰´@…i‘ŠÄS¾ãTuǧEHÃÑêâ<ø®•Qi¼–¹JUðë.¨º­7ˆÝñâ­O žzþGÃ4.ü­øçδÁ™üÆ8ñ¦«ùtB̽Yãk'!äÿ1Ê\Œò§·óAÓ}ð·ïZð3:OYgið2öÝ<™MÓоÀt|×xÅv¿#ÖÜî'UfÁ8×Hè‰g•@ë¾ëÔ¤( À[†ÞÚf: í=ÌE¦çjø(ÛÏF€ýÀ vÅ ´Ò-ŠE#ì…1ñÄ´`×rlag?GiTñð‚Ïô8ò&@«oâQt?l­ø‡œºœ ±â/‡†®ÑÛ.lÖíñ"CW°Œ€ªXÊe#<ž²\ñãánK>^Y žCåŽJzmw»=ûÏJsÂʺ(èYaBFÓU(ãŽP÷1LxZQÅ7\}!u•¢­åÊéB™uãĪ}HI¤wŠ—$až8wvìÆ vݘ$²#ˆ5Dy]¬ þ‘ôMGÁu$¬ŒáW+ùm؈…¼¡•_2xø]” &ÕKgÖ˃™-j4ç×y0‚à8ôg9É@ÝY8:Ò;ÅWTSÛ_FrUQðã Â~mûyì(š= §IX&Éæe0„©¢tw£zGàG•`À:ÖÙ,»jxe“ª%÷q^°Y²R ¤†ß½ â9RöÁxÐæ…b@ŽØ-çÈ8äÃQˆ†}»¶Ø¾¶—ªÃèä3œDÄ_ÃðãÁ ‹-<¢”Á£œð¡ñ„$ÞKÓé;µæWâ¾±[$XãM˜˜¼1|¤¸V]¯œL–¥M."rã‹’í% N·«KϾ Í ÞAÖô½ç&‰æ‰—Sá ¤1ð¨•Dv8Vµ,’~Ãï4sè! rm“a„í9!;9ò|„(%7€´>%*Y’\ÜÄ~šé,‹_Æutƒãïh¹0‡X²ÔÅ•—6.TâY&!EVyd_Ç5²ì}d®3)hÛr 7öŒ´=¾ÿâ. ÓQ ÞŒâ\£M‘]tKfMÖV{‘ß%R©(qÈY¿µˆ¢ãÉ«™|ñ ‡ç@ÈYéà»Õ +éEÑBrnIÞ:5±ýªaâXxÕ+îVÊfÃ0Z$“jõã`h¤96„ÝU¿;Ú±þJ)k«³ÙAŒy. Gá;ÖÝÜ0!}å+®-!ÿ($㥅ŒaÄl¿ (” ý‚(v±Rpg‹¢àrӎ׎8Â|ÐI_D;VÓrb‡QjˆÆg)ÚדEG͵4’ÄíÔ—Ôð’‚^ä Gk‘éÐ@ fÁ%Ô{1öï† "8±¶{î r/2î•:€2ckÞí‡3å­QÉ™È~¦IX¸Ö²t;±Ó=‰3äò¤ˆ–û}9a=ÃsÅ¿×ö“鬇“º”WÀÃjdÿq‡z•¡Ê]éõ=‡KHÛÑ™aˆº#2Þ(„JtÛ6|è8ßúü‘¡¬,0XéÌ)U d´ÄߺÖ+\9xÂKƒ®[ãÎ\«•â2†Üñ=þ50‘'éšÿÆË/àÏ6òvzF*}ç wY'¯¨³(QßuZekq(¿Ó‚3›#dËu—’ —Í“ÊDL8ΗåòIsaÉ‹;0¥fOKÊ2Ôi²–¶­ ýEEawu¯é¹o[9ÒH3ãB8K*Í bÂ:€@šÌ¶-E”×ìæ<܈K ѤN4°Ž9‚m¢$)w ~ä_@4Šá¼ËuÔµ¥j+ ±ˆ@„J)@ÝwF‹0Šì×ÉTVR¼[1ê"VLÔ6Ä­n‡”"Î]?–uçT¦¹£‘#?à\E®”ûh6ÁxÏ­¥vxš.ÇÄ»â°Ý#*Î!b+e¯ûÛ.E*\òó»;À“cS2¼ û£êÑòs¬“O_óø#¥Þo"Q BeÕAÕÃPp›¯¹ ‡÷Xs‹7[xÌmB}ÃC AÃMnw͹¼øP®"N$‰ˆ3Jµñ29U傿ÂÈc¨@G(>Y††o/݉™àG6‡<°í¯VÜ€ZN"pxî™Viq ˆ›}Ö%À 66ùã9Û‡¿aåUC~€g䨕«ÆS?L5¥P0£Õ Ë^%¤-³ZK‹; ;¥Z>ÒçŽxù|y¥ÀÙ–‹Hò»Ø¦\dMMcð—˜Ø« H—»ìvÙÀjÛX)TÚ?QíT› vqU:õ]32½–lÛ1il™FΦ?{«^\=}»c_± ³È9jLwìB¾Nî.‚¸—RÞ{ïÀ¤aÜ-¡ˆ+í­¢€Ë‚7ªû¹àÌùbiºá¦SOb‰¹Mˆþ¥_¼‚ L5Q·WèqTä"èò:ð¯»K…ÚUh¬÷Î(år¯HæCQ ÌG›:­jù’¬‹Lƒ¶6¹/Ï^ƒOûÁú}Ü)¥òùaèçë?Õ| fûËmâž‘¶ß·¹=qi½†Žbó‡=ö•xXÙSTv#„áKd¥–º\Gö½FwM¶•«5ã0Òà­OÊm=–k¯A|œúxýXÞB*rÿÖø:BÏWéNÜãyé”ßO¢ðC2d¾ÏlÄfdsGµ^É‚XÅ?¯í«ý>·ÈË9ù[ñÍyE—ÉÁ>©@ c˜¶~i}5‚c¬«ÎM†~â"O˜©–Ú‰®$Åî¶Ý˜D•`}‡ ­\Gà°1Ã`8èíÄ#ê&pýµâ󣬸ã.m åUw àÏé„L®å #§ý>6ùHá4jÖ§š$Æßè¾fEg£xlÝ+„_Tùòä4äõÈW“*²MUA5Ι¬|VXoêþ|õj%}Xúe£ë-”–!–º®ýï>'Û;]+íö½n!^šUüãAVd/ ²©A8y–¤—zÈà¾^çá›M„·ù5¯œâçGû}£ñSó%_ßñÕ¦–K úËï½”P™K1m]n³é$îÒuªð‹cã…¥.¨íÿã¸ïAäÊ;³ù§΃’Àsé$æQ¸¥âuùGžrÍ}{[^0œÛP ’é-ßRm=²öKÀœûï'ˆÞig –“a”–ö?.ü=~þê7ÝÙ« endstream endobj 352 0 obj << /Length 2931 /Filter /FlateDecode >> stream xÚ­ZI—ã¶¾÷¯Ð-T2â×ÜÆyž<çÙqb÷%Ïö-R=)ƒät:/?>µ‹–nOº/"PXªð¡P¨*(XíWÁê¯w|¿º¿{ÿ1]e~ëxu¿[¥±Ÿ…á*NŒ¯ «Ÿ¼­SãµÃzcRím×åå Wòºk±d¼¼(¤ÀŸm]NU³çÚ)ï<¢oÝö¶Nï œEÞã¡Ú®uâIÏǪ®¹“-»ÞVÛžký¡äBaóµN¡ŸãÒîÎzÐì#ß_îÿ¶Ú¨Ö·QÊÏ"Y÷7 ”-Q.zUÓU…PÇæÙš Ëi 8ôç}ÿУ)#(«Nü4M™`lJGÞ·ùÚ(ï JÛñØ9þ0R¥¾I3ùa½  øíK,ñ‘‚;€ßo`}Bɵ¢¥Úv8– bÓ3yÛÂrº¾[NÑ62ªµÜpl­PjBö @J½‰#í}o‘pAëM{¿–ÛÞMÇ_‚ §sBkïe¬ÛfßI'ÞŽ`¹~MÜàÌ#“y÷‡…3qìUwkZþÚ²Îû –x¨NL~=©-¢l®L-óäMÁÞhÏ+ý´éÛÍζJdÞÚö½ÄC`¡ÀÚ€ô%X"‚¥C½NŒ×µÓôóEG¼èÖ¢}+¨c]?qùס빕jk§âaèE;Ih†“Fby& ééj¡þ"À=m˜‰Ïvi¤,ðí]§í`í¤\@m†Rn¥€áœ6‘i îP52+4Ϲ'D¥ÃOÚ™¸Ç‰×ö}{”Î宿!óxH.M€`FΪ‹C2ŨÄc/É2}:æö“ÉŽáWV€e–K´Ø:6ÍõŽIM~”Æ¢ìK{¬š²ãúã¡„ÖM!Û)³Ì BR%c>W]õP—3éªe­HvëYj(‘%t2×5£Ã4:ÚW:<@cÍœ–ƒEÌffMÚŒø oûêsyiýtæº^ q}Öƒ¿—Ìg~ÐD`2X¨éÐóhiÜÂYêÝ"«†ev'r£òM”-Ñ"!×l\ñ0]ˆ†³«ï>™¡èLÞì—7Hx6¥¹P =0…9:S³C5Û` î ¶Mr²» &»lH×®1»_=1¶.ûJÓoÎ%Â(eŸTFÃ*ýŽ!&:ßÖrû­)¶hmùïž r“ nh.ôÜ©d7êéÄN§¡Ã‹þ:,ûgNÿ9b W£q%+ ˜—z¤c>╺ûœ[Ê¢ês0u\k-w©[R1¶KlÐÐsP±÷ýä¨t<†Ïéù¼ì×–MÔd7RpЍSAKr­mC×2”ªwsf.>;-j¡Td#oê [J&Þ·—ëAGV]L $6|P(ªî4o—!dîÒÀùÅêÂì@›ì;4Ê €óò\ÞOÜÉÙ}4dúEØY€ºÈEœQ²"2# zE!‡æ¼ï¹mugìø²µ£E¼6±#f´#ïxØÃ‹‡ªiûÑPçýï0ÙggV S8ó½™Ý×”ò–þÀf`¾ö2‰<¨¨2J”®É]h5²Ôø¥Á€è®ùïÙ íbAIÄ>ŸXß}SöÕVQšÜ•H÷cÒ«Ê^Jo°ÏhýLnºÊèZ¥(iá‰b#êe;È–-ÇÉÍo– §ÉÇ£+WÍ¥›|ÅÇópÛn]ȧ Ci舫’K¾ì†pg+z7ŸåÚYrÕÀ.º“M!2?lmûàæú¡Ì öTÀþŒñí}˜nONê•@@að:Ķ@#„ÛÁríL¹2M"}>¯# ªv.—÷ ŽÝ¼X1³lƒ«XggÇKGÓàɉs!?Wåã•([?™¼QaÌù piÍ%Z|vÊuÈÃ÷·Šp4:Ÿ6]I÷¤(ì,Ÿ1·g£N‡³ÍR L‘Ýq:ÝØÏižÍ4dc¦AI¦á;€§H"œÂöÛ¡9ßð‘,9. “øÉd‰³ûªiJ‹™ÒâZ±k)Ö„à^à9øN­ÈerY÷·yÓíZ{Ì][<޳’ï_(+ßZqC‘À÷Ó\> ¼ t¤E_¹bÀ•ë‘•–~˼«J<æ›´ –‚w÷Û0F·:N8t¤s€5˜ÜÊà¢mþÐsB·‚KxÌñ‹Gôˆq”ŠÃI`lßµÎ{¥e!iÜ£wˆácž¸4z¼×Ö7sC J[—¥¢­³ˆ¶è“Û±«Œ4ŽZîŠòDIg†´¸dã0¦Á¦ìØ<1@7®ÛÑ?£ÀcÊÑ}¿¾¿ûíÏ`°R+i?KÕʘÀU¸Úï~ú%XÐKõM–®©ëq¥cãkC¹^ýx÷Ïk“€Fkˆæž™$3t1‡ºJ²ÿcŽ‹TªV‰¯¢de´òÓPnùoYU9ŸiFñ‡ îr¢ÅKBûZůZߣ ~%ÎAägÏOòF*J¡9…©2?Ì4cô:çÀe¹üqk^ÏvÜš9[ xþˆñ 3­Ò˜cÑɇ §XôöÖ|±l—°êÌ@»z Xu–ø‘Ix}?ª]Ö7`ë`]°½€õ”7·ür)®˜B{½ €iäG©(È_z[?ƒß빎øÍ¹²½ÆK=HÀÑïmÙ‹›rÄ/å ˆIàá›`˜?ÖÉ„áŸ^ÒÄW³œ³v@rÞ¢Ùø¬4px‡)Nt¥uC°óŒõýbé®` ÈéÛ(h¬ü8UùP?‡ê뙎°Î™’ÛPSTý´gÛ^\óø}±W c_™7Á/ÌüD%#~/êæ«9 Î9Ï@¤üZk«ÿ´.È{/Q…áhEAI_DùÕrÂþjù±»ï£G‰°ºïpù€`ææ›‹Òå~ÅËEOLº•(íÎ_”ìµÈA2œŒòž×5¥\æÉ´1§yÈO'Nzމ¸Q Çm¾JÓÓ٫؃‹¤—Odb70¯Ÿf9ŽÐ7aL9Žqß XH…’æÀô>+þ&;úµÑÞþ@{åõŒdZ Ó( DáÉë°yGsçÔ%4 ¿˜rùί;2UÇÝ3ô25†-œî£×ô¼™ž³G)Nu¾å§r~u£Çõ鵞Ä5½¶áiÂ^¬‹Knxp8ås®FxNfÙ.á‹ü¶ k9æ…±°”)b!²˜AŒi;ÞHpÆ‹rƒÔ±‘„²®¹_„ù"zé³U‹I=:5 HÃ\¬¼s#£@6–¬°®j|1—QcÛÞe.pÂ+1éNnX˜Rƒ1ް­ì¶¦ Œøµ >W§®œwêÜ^ëw´íÖõ{X€Tˆ™ÀV6ò8Ä™—᤿ÌS'à;¾ Òt÷“@rvñ¢xÿÖp- endstream endobj 356 0 obj << /Length 3841 /Filter /FlateDecode >> stream xÚ•ZKs¤F¾Ï¯ÐiE¨1Eã“ÇöLŒ/ž°uÙ°÷€èj5d GÖÆþøÍW¦5ëƒD½Yùø2³£›Ç›èæÃ›H¾ïîß|ó>¿)Â"‹³›ûÉo2£Ce ¶¿ù-¨O壽Ý%&º‡Û]šØjî ¨’à±ïÎO³ÞtÖ›e»ç¾ÞloÛÊ^å–ߣ4z>ÖÕml‚#7lÙJïx,G.•ü^N·qÀ2ð¿k¸±–ÑçÁʶӬßÿ×Ý)©\¬²ýXÖííNk O¼ÔÈÕŽšØØrÃΨBZI%a‘$²\ÊË}•#^§ ß\§:í_#—æÔã–²·<ºêm9Z™ñ€ ½HGƒ$ɃÏuû(ëeNc²ð©ƒsãÃyéìÐJ¬½Ú\lƒm†œ¨úîĽlܯƒ|*\£už Þ©ga“ŸQÙ܉CÄ^2ÀÙ¯˜¸;@;#ë™ïGdDó„åÈCWV2Ø( •òàªï†aµSÁËÀ‡ÙôzøÊAÜ¥û»¹×•\lƒNÃó#~+j_Ì…e›×Þ­¬ÇÅ;à²Pwq¥ëêrÞªÇ Ž@gµï¨:püÉØ!f{Ó#Ïå—„Ö¦ä&=Yá +óGž.^[bÎýZéjI€ax}pû—Ò‡N° V›Ô¯xµ€­œ¿`2–˜ а"Ü `æ (AïÜað\³:ÍEbÏDfì&ÇÅ€¬\À ãØâVA½y¼áWa+ahøî$hôÃL…ÉÏä.?#|Ê™¿kä0Þo’…hÕžu*}{lH¤$JæÏÄ ŸIÓ€Kþ ¥i¬”= Çq­7hYšyUˆ]§òó­Ð,JÅBðV3 ³ÕVH!xHb;úàiØer#G†Ê©¶c ·c0îֹýg:{Ùí­¶/û™W`©m'Ž…öÁ"æ'"¨nRÖºî†!bª0`©$¤—FN…*Œ‚mjÛM»§L¨´7{ßãÉÐæ°R¼âüeèoDV4 “Z¾W"+&4ÓžW#+IZ\FVvI’0jÅõ{'it^p>;1mèçøÃ [÷ÖE^ŒÛà‹­èî ¤ž›˜Ã`â Ø™\ñ½˜þ\ƒéOWß)ìuÔнˆ¿dĉüV¦Â\s±ÕN ¨cíOˆ¢„®c)–5æLMÍ”ÝpÝ^ü‹ôÌrEæ"A•ß 49­KA…NÈX|på?Àv±âˆW‘”]ði†ž¡_ ë=úädÇè}Õ2c츅T`×F%øPÐJ¯‰·íþÂŒr€„¿„Ç o¨ ‰ìÿyÞŠB]òÖ–}ó‚4O\98Œâz.‚c$>öH¼€›±â˜Hûɤ8hAþkËá…ûÝ¢¢jMgBà¿׫-Ÿž FO6=2õ‰Ò|ì±T7 F¬°?ôyÀîçzäúÀüN"Àä;B[…jìRJu¤Â$óAØŸ:"N”¿¦—Ð.…KŠñšâꇱQüMDKâ¿ãõ$IvÈ‚¥åñÎ'ìB¯¿ÚW„z`ÈŒÑ-´€³´´³øãœÅà…‘l›«kRÿ}ÝW yI.÷<ëâ¹T±.èA°ºu𺷖›. ö¯J’“C„»9Ûš Ñ’œjy/i¼!“è¼\f«˜P|ÁŽb˜_88Ú€aéF^Ê5Æ»Ó4':p|›Ë¾B’˜XHbÔŒ$[„zÅ)‚2§wŒKïå Å¥.¸±kÝ8ë÷çºþÚú>}£FÝã¦&¨üI1:'J&sø>C»ð$Gêâé,žˆ ȪdZâDH`„kõ눚d —9§ ÖDÀìm1v…¡ ¼ÈI$E•Ig³PÙF´‘¡GÖ½¯Îm‡r8Šoª29¦ƒ‡…cɹ3ÙI©™D‘ 3Óó‰s&äy2`â,å^V±-£nÇãJÜØ–CdÄÜÀ£aö³Õ+âü§æÀ>Ÿ©° úŸL5a&ŒzQÔˆzˆË±TË— ,|9CcPç¸Q²ÀžÏÀ/H£µá´7<Šc±/×Ê™'‚ãÈR¨Pv½*µž<V÷`_s´}xËi ÙiL ³ÜžÆ(j¼Á%fq¨S§û Ú–¥Èƒð'æÏÓV'Ócó9FÌsgS7Ì]Ɖ½L&\šÍ:p‹Æå.&Œ´Ç²d[_¥ó蕵9&nÊÅ& ç‰zŠ1:ì±| §xÓYh@I"Z¥"ÍÐPM –‰ª6â0Ô€rð˜~^ÀVŽvÀß ø‡W,‡ÞSùØZ b4U2P^V\­­“ŽÄ̤*¸grëP#nhUʆ¼x§˜gb$ë kçM aîªc¤ ̺¤Ši˜[07)O¨<ÚV€T@iŽ$ÈâfâOAß¾¾%¯EÓøÜ.tˆe›È€Ù€K&ÛD×”Õ¹„UQO©USF}……ÙE‘&öÒš—Ç®ÝÌLæ*»²:1‡ñ$ãì‹™‡² Âz…K€ÈèB3 ¬H¬ý"IÐLÑFø³¬Õh4?‰¬É Íx Æú-JÂȬÜÄŽ’£@ëïPU*Î媘â.ä!U‡_óòã,, Oº«/’é|ƒf¸èbÙš“¶¸ù¹ŸEðPÎr4.òèpÇÙŠçcÝØi‰ 0®àѦ¸ÀëïkÂxîÓYY1×™•ÀÉÏ&ìÐþsüJ>LòG.-‚]Ø0ýL*.ÿEÎ^¢]&1|È—ï@-î¤S cÊ<Óf’Ap!S¬{8ÁÛ×Ýy|Á¾'=d¸dÉñ•PøÜèQ£æ_ +ZrIì â×YWì[&ÄyêtPùÍÏ»|ìš½¬êÒ£8áXÆÇödà3é]ì|êí0¬çhùÅ6ñ/ž6àœÿýSfÄ_Ïœ¯‚Ééçz‚]™=ynkЩ'Imï$‡tÞÏ«eŒsá ©¤´Pöw“ê–ÄJVq;÷âŸþÆ;W¯½³d´^?¶Y>ö,E(™¸YXùÊaÃ寱ŠB€ d! Î÷5‹1?Þ¿ùK‰˜ endstream endobj 362 0 obj << /Length 4249 /Filter /FlateDecode >> stream xÚÕ\O—ã¶‘¿Ï§Ð‘ývÄà/&/Ûk{í¼Ýçij»;¶Ä™f,‰mRí™Î§ß* H‚(QêïËE(T ? b«+¶úö £ç—ïÞüá»ÊÓ<ÙêÝû•ÍÒ\©UfdÊ älW?%_UÍæiW4wkɳ¤h6-¦t²)>ëþn-lRúÜb»-·TµõÏ÷w<©w»úN˜äcûÇ»µ’:ùjWm0ãÿÙñšøXmJÿIEM?BÓ>~ÞU*Ú×®»mùßó¤>tÕjë2Úcѫßý辫¡ixïþþîûÕš+7Þ5çi®i¼õ{¤Púf0C†¾”6˜uðy5= ÿ˜´íòªÃ¨‘lîÖÀˆ¦v”˜Ü}þ±8|€va ”±­šrs¬êCz·6J&?4e‹´TêAŠlÅW ŠûöÍê'"Ê{!Sæ/HZù|geâFc“â°õnœ,,Ê"õxþhÏŸò°WâWïýÓs_*d[ê¾1™y‡t $…Jö…§Í¿mžšßÜkëß?>” µå‡=1Š ±S|n«Ÿ—P±£3N=?vÚ‰YE×Ô?€xÔS×Cu|ð©jK T›bGp ³¾ •%ÏøV?¹8 0ñBj#ZE>+4™qhu"4™1šA¡¹àÄ¡üÍå4>§§pcÃD öP§ð™‡ò#•a@8óH«Z_ö±ÚíºZGŸÖ8uÅôÆO½ºÙV‡âØõöÜ˽ïËi85ÂØÆÔ§8Nô$ 72“¢ªŒá­/rºì´nW}p’Å\/Ùѧ<©¤žÔAþVÕO­Ïºš×æoœ6£PlN Ab_@~P™vÏ>¯:lДmq 2g>\Moè; `Sµô²-ÛMS=¢5ðŽ}79 )l»"ÇdHy ‰â‘æØñyËw f—Ÿî‹Žï½#Ý‚URJ%ÿé †ŠÛòXT;b˜ïòUÞ×OP$REU<ßvNÁáµ$‘;Çê?|cV°iqiF¥’é•L3Nô _k´€¥67«uP‰4úŽ5¤å§cHdí—™_Z_Üñ¡}DYµ^îk‘ÙTh;–üPS™€Uðâí<×YíªK8ñ@¹“ < úÖ-¿>uË~è'Ò¸úXÎ<•i¥…*£Y6kØ:q—»ªé¦7þoe’0¾bÛT.“/ÑŒýÌ„¼SF$å?+/šŽçoGЏyº¾³—¾S~*}?ª÷u³'ýDî ³ï;Z¿\ûϬVÞ6LF¡.QãÓÛÖ&E6IÆáªD´Ôž½M½#Ûã±ê9§ßœ .¤N…Õ`Ue§E§Œ  ?U9‘ÏNç‰J•YUÞFºÊRfíUñ%õö:28ªìªÅâ+šÜÇN–=Ј²æ–¥™5,5–Zúá´3¥Á?3Í"mÉÔBCTçxÚ„Lu¶ÁQlòg|×(±•«U`Œ„>c±®1%/tmF]Ÿ°©×ÀSÎåˆã£~€åY¾Zµf„'½ðÔ¬^fifå*¨óoˆ®D´Wš©Ë‡e$Ìsö™øx¢ §­šMö,£v,R¤ö²H͉ŽIžm)¨ó§Óa­E.Rkùxºyä±9lNõq˜ÐB6øpî–¼oê½O1ÿpàÏð„ÃbªµC_QÕÊa²GX'v•ÿœw¸ Kéé°k÷Å!F+ÏÛù¹_œ6åzÄÄ1ŒíGÂȼ±; × Sš¬UW©"›ôA¥Eƒ‹/ã†Ðb›7šçX«xši~g#«ÅZ¡Ê „u èà1öê̳Ww¾ÈØÍòVäò–iþ ¼ y‹›E‡ŠaNßa`Š ÊüÖØ•hø~غC,~úÉç9ôøävŽPÕÁÕSLJ¦¤do«9O¾8t°>uøô™Ð®Ç L ÏN@h‡ª”›´ES´ßu 2²/ÔúÉíÛ» cA á2h•ÜSÉ%ü8ìž‚Õ8lVµk!ÿ±*7”t<4A Ø#Õ,²(æ:5º_Œžc¶Ä°dý9ÖOïuøSLó2P'Ücé31Á¬ßˆQ%â»÷ô9àUƦµ„-Ü`½?¶ Ö_Ûåô±ØÀ8³mò×#â>Æ Øtå^9A¼ƒrÂ˦) ·q춆ޡ‚®Э|¼yø:&Û‹©s%¶½à†§ð_ˆÕË60”!PËbÍAeÁSmÉü jg¦“`Ø=N²,aìYP:ƒÌÖÀN…ì„1s©^¶ß¹~ÌÍ¡#óY5©êµí"äsÊöæëwo~}ÃÉÍx(•@–‚–ezµÙ¿ùéïlµ…ÂïW,•°ùèªîQ†cg»ÕoþzzDËËoDñyÜœÐJÃÀ¬ì‘Ÿ—gd6p™^DÐk³Ž¡Úç©‚½ÏÕ°tFNêݼ§±ÜGtS@2¿Y9A àj0#0<,RôK$½oT„+ ˜,.‹–?á,ŒIèk´0G¿øa ¸8ú wÏä”I[ïéƒâgƳ½[·èY)È=‰y5=Ê–ªM¬Î7KïðYèbélßm&/S­õK!ziÝæR¹/¿FOKÑ㋼7ã.eÔ¡2ê±j§‹Úy·MžJXÛGSço±^2ÅømôU›þÁocÏûm샸ÊeõÛ(g„ƼžÙä«ë7ƒKÜ6òV·}-·Ík³Q¼ùg`ãÔÍc#¤Ï,CêÿßóÞÒ[íÖ+»É^}É%[þ?FœRdÎé1²oßáÖPðÁ%øŒÇ$Om¦oqüLlç˜PÚ³x´}'˜QÓÓÙpÐ瞉Eý'œ30Íò–Åø&ŠX°Øšé (T盚å4ì$®ó°ÉF‹WóTÉ…XC6œ§Jô~Øžå0 l12~h1®™Äƒ…O>/pUI5+ÀCî§fôñ,Žœ±ÿÝ6f¶²°SèN[_»qç韪=ÅRøCÙ ^›ª«çÝ^'{• Ó˜}d{Ûx›[ƵPÔÛ5ÂÈq#[ÜÓØ—ZŽÓ¹íšgŸ!;Zê7má#‹RfVr3!ƒ³³ÞÇf°ÎìU#ÞÇ–^X>ÖM¡£òf¶'XÒy½â&Uj²@›%úÁc@Ôþµ>´UK9ðÕ@»ÿ`-ÙǃŒàFd³ÐK&:zü¤1¼ÓÌÝó¡ÞW’¡w¡Tg©á=¥í©J©43¯s^®Ÿà’~ÎjnpzmÙUš«&4Œôö„ˆNt2¨dR–å§’ “…ÇÏò2ÃÜ›M¾ö’kžIvO¼B~M ÔMÔ5”¶’-ž (:ÛWãP %‡P ¥:Ó®(šLuV_M£0TÄÖ¯•QÉwj©Ø¸¨30¨#ÚFai1d«€Ö^%œ*†mÌBÎÎÞ{sÔɹ–Z¤6Ÿ„}]6ÿ"O™¶—ÌáØ,W1üFõ‚9Ô©´×Þ*,–Z>¬~áÖå°¤-}*›ÒÅ‹ä š¦yæB,FÓtˆðTy¿Óòoí(@å>ºž=ëNÌTå¥`ë îwýé ¼õîÞ$ÿ(7þ¼ÖÅÏú…9/Ìy€Jò¤)»°lÂÛ®ÜIbÑót™O©¸jZwa„w79X²+|o`1ãôŠ ëŒ#6qDO‹y*[w?àLM­·T»öOw_Ã1Á·A dtÿï3ÉeñÁ_†a¥}¨óÖwÒUðçF‘‘_Š4…ެï À_ŽÈ2iOÙøÌ¢`!ãø&Ãô(«¿yáÂç»èûá¢DÑûòØTÿ,üU¡ÈqˆÄS_ô‰Ý9ã_c“Ôšìs†81ÙTj…Ðu—9¶¼|ž¨Ö 8Ežž™s­ÓL( ^§ùù3s‰î5fγšZq[Dë;Ìb&—¥ÜÈðÄü*ÌiGÈUƒà§pç AÄ=Ñù²f¦Ì›HÒ»àÃøŸ¸`$Ìì5¨™=‰¡ƒ •àžk Ä ¦ëL¨„D×C~Qîzd|‰ÜåË7>"5y;™ÌñžÄ…«»Ê'N€WQ¥EÂ{Á©ØêrÓq¦‘ðÐ ñˆÞåð Ë—è•i.õ¼ÞI™ÃÆ5»¨w œ3Ë·Ù›ëö¸³zÇÏéÝb3ƒ“¬°‹˜ +Ž™ç¥ÂµËð‹¼„© >'£wâ.ˆ…ÔK#Rí"ù€aÆ^©·©eù%úgARG&>¤0 ß§äݵ9<©œÀõ+i;ë®ãd±ëÙSÃê88Ê?ƒÄÑ>Lþ1BÓéŒÅ_üÛcÖ=ÞõAQ4e]LtÖ{#359hÊÔ纓 1°)ÄP{*[\@+™x)È]+ÁS; “§#9ÉèFgwý@òSþ@᎔NßØÌ¹Ë],æK]`™™ì;#½‰”+ý*ž´ü¢'MO=iŠ.À>5x-s_7þú"÷·K€CÁÛŽ»þö4ÃýX”Ç"Ay¬ þã}ðŸ¤×Ü…A#éaïìœvÖº¹ìžÎÑgíÈѯÝVÓCÄ °Æ;ä¢-„Îv̈8ÛEžüW},»/ j«XÔBl hëtûåJÅÇR|À­1’P@Úy+º£ @üS/…ûc&ýÝ`¼Ž/Þ(&ˆ¹~c ¯á¿Ä\B`c>R.òŒUÞH{xå­ÞÇ\ÿî´Š!Z—Ÿ(Áævt˜ßBöÙ3˜™É;:Ñ ý?¡€þöÿA:[nqâÓ?8%&OœSûÞIÖÕ9Ð…¼Ô,Íx²ìëaý ¿–ÁÇ4Ä—OWL÷·0ðzp¹ÀU÷YûP7Gú€Â§9­Ì¼ƒ!\ aÅœþ¦ ,<”tWž‚«›‡:øÿ€íL“Ýÿœ=Üôöyîï7"®¯1+ðÎTøW!#à Ô wjuòr€RÌA¥ô¼¬lŒ÷)ËÅÊèáVBücgåxÀ)wÁh éÂ×ú>Åq‰äßé \îÿá¬ä[o,¿ ²ÿÁ2÷÷)øA±§â©ø/C.è©l¨‚ó!bI×Ù7îÉ“ÿxúðPv¶RŠ€PÁ €à~NU.’œ™äÛæNƒš<>T÷ïD £?4€P«Çƒ7ÌP³PpÅÅï„A¢Œ0…g*Õ¢\Ý ·Ûª­kZ¬Ia§°°“‘ÿ¹Q¶;èžñ5ãyÎÆïžo  Žw®D@¿ªÊÿ°ù…¥ endstream endobj 203 0 obj << /Type /ObjStm /N 100 /First 846 /Length 1479 /Filter /FlateDecode >> stream xÚ­XÛnÛF}çWÌcòBîý;n¤h»@[ôEÛD$R ¨4þûž¡%—’lST DYîîÌìÌ9³»³VB‘ %n<9EJ ’‚[IRqkHvã–dÐh)Åm$e ¾1çcÂcZpß‘îÆ=içIiëÜJ2²ÚñÜZ2vt «¹d-ÛTd#ì w g9^ßÀ½€y+È+n%y'Ñ ‚[KAY´‚ã6Rˆ‡nÔ*QNS´}G1Âø†8Ùy³Ê#b ⲄÿÊ#f‰•ø`k>2*0>¬K0‘*hJͨXÖ#–544¥Q<ˆ׊°lx­ËVÁr„ek,@„eë]¢,;£ñ“NOà(‰ø€–ƒ šYòSZA‚4VCdF`5^Í>K¡ÍqI¬ªUG¤! †ǬAhâŽFyÁ€¡¦“ed™ZÍ*v­ î`–SÃS iÕyƹ²f–#;ÅÓ’×Z9(±A$М<ÝO“hd¤Ø ~<¾ƒMx‚ü:è{‰†=‚YÐGNBü‚ÆÈ‘2¸¡L‚#œ@¾‘‘mDÛ™D®JÏ’˜á ÒÖÃ0gFGAú ¦‘{ÆJ¶S69:¢ìŒ²ßêóš²z³X^ñ¿âº-ë*}ŸêT½¥wï’7çw•³ü¶xGÅ´˜UûvmÝÓ^.Æéšžn[ülG)Ûžò>ü>îÓü¾^¶£Ô]ß²@€ß`þ¶¨–³«¢o'la1Ï'£ôãVJ¢g¢žç×e{?Î@?o›|RBqœµAÈ´¬nÇé÷Ó±¸¹ÁÔ8ýUFþÑÞ uÒ¤¸)«’EÖ–»¦òù¼¨&åÏôÃÏ7„d¤»üGA8ˆ&ôy^£«â¦nŠÔÔÿ\ òN禼]6łʊ¾äÈ‹tOtëÙ,¯&ð ªçìø‚x ¨~”M]qô#oÊ{}ñâùt²>^ž²9 ¹bòã~‹>ññAíS¹hëæ¾ó;¿þ^ÕÿN‹Éíø§koç÷My{·KùW‚¾QvZ¶—,|t”dç÷:ûŠÍ›dÇuÕò*¸gK&Ù·bQ/›kpÀ•B7ô{1)óõOº`‡ºÂGu™ÀDÃqj\ð,·2ß_ö¯¿ÿ!ÔPÕLµœN/Ÿ•Q¨ä4ò9 ÊY+S‡ZiHN*‘zµeïáƒtŠ"Ç Ô \äÔͤhº%äeö)ûœ_°Oâ’ºF4œÑxI³Ø)X/\ó֘Ⱡ¹÷ôÂEbWæ«ø\j»w°KÒ/ª4òC{)j÷¤'ŸnêºÅbÅê&ìe„ÃY¸!ƒìr8ª­”ÃË8b@.ø”ÿQƒã^Úcƒ?·§·În¨˜Ç{€_•¿¶óMØIQãÝùÆï¹ßÜù)„€†ä¬·©|êDÝ’Ãã:µ&ÊI‹Obú\lܯpCZµƒ¿‡âoå0þ2/à¿%§£MƒòƒrÒÈTÈѰ¾’»w˜Ýó³aÉ=î0»}7ùÔ"†_Øê‡†îv“ȉQ¡÷î_ó~Ñœ_Øg–wÛý)+õ@Ô↶Ñœêj}ªÿÛCyb endstream endobj 374 0 obj << /Length 3663 /Filter /FlateDecode >> stream xÚµZ[oì¶~?¿b‘‡F¼ŠDQ·¼&9IS H\´E’yEï*ÖJ J'ÍïÜHI»²´È‹—ŽxÎ囡£Í~mÞ¿‰ä÷¯wo>y§²M‡ešªÍÝÃ&W›,OÂ8Ï6wõæû@‡êfÇ* înJ˜ãÍ6ÉÓ ¿¿ÙfIð“ÙÃÍw_}ò®Ø”a™Ál0K´ÙÆE˜”<ÇÝM‘È—ÐÀ/ÓT¾$ÊVú£á^Óñïx£Šà ÿôLø!ŠÓ û?ߨ<èíð)L¤u04ÇSkxªœí".’P9솶ÑV÷7i˜veÃJ…e¬ç-,X¦AÕÕ+³ª,LóÔ±›®9á´Õެ̫U˜ç‰caà Ļƒ±rØÊ5®Nûó ©²MÕ!щªöƒ̧+»Ûª< s]ÂÐ¥òÂc3¶kÛSi˜(/ ¢4ª`þ,%YÁT ,î‡ ¯/iKò7÷«Áq&ÐZL£ÝÒØ ÈÛ',£Œsõ’ŒA{´ö÷1‚òÐÝõ®Ïh`MVÎÀWC7³ðñ·nÀ¹'p0wß ,óÁöG®øG=µGšçè¡pÏ.Ž Gˆ“¬žVe9±bâÒ‰Œ[h×3n 2‚Íé®ÁµÀVY`Û,ãèÂÍþó`PË™)ë’Ì7 Û «ÁñŠH€äŸ¯G®éà!Ó¤XN…;±hGøõÒE }þÖ¶ÚËœçq±¢WæB”x³?âÒ^úH|è­Ìy0 ÍMgw[í.ÊüÙcÁwª œ2= r2ÂF†þÄ SÓÙ¥¾àqóÿ§™ðÔ´-óB40Ì-ÖBÖIá³²õ0_V•õ„•ƒtfg†¡²è’„Eˆ–·ÛõG1’ µˆ´…Äm°4pÀ!—Âk…å}â8’4 {ÀëÀÝê´w92q8Û“mp|g¡'ãýX7ê%šù¯H×V˜…Zy+ä+þ¹±½wQxJ;?¡Ó2mC‡È"–PïèìH£³qß0è¸Ëþ·?w5»Õ‰„ë|àéR`¤kvħÁ¯ ‰CsßÙÖ—#ó7|w[9ÎZ°àïØ½QPLLîÚs-Ñywá i ìå6 hë–9Zs[cy‘]ßöV’å¡ùŸ¼Ùg9¹t—KSNë¢Ë-1ï.ÒÝ“¤ÅÚ‡ÖXç!$kKéy—T_k#υ腪ϭA_FAæå÷o yg•Ê8iQ0#€E¦p¹ã™©_³ØòM–yRP}* ã´Ø@j¡Õ"MY`ž®¼âÄtGûIÃ4I‘k§ž®73ò¿¶þŽ$O܇¤Šó\¤´fÚK¤½(“«¤ë8T³"Kœècõhî×·Öa<¯d³ÂEf&‚îšWsƒ¿·ƒl>_äl«‰…¥0I/îËo#ɲ ÒH^›j5](2À…vì!3¾S"²,î9ˆûö^ºwVÉA†Ç+þéún‹å‚J61ZˆýmåtÛÍCzß|þî–[ƒh+î•ÊV”)÷ap'9¶C{ÓK  ©ÒLñ^vô(ì½}tb²b;ru8t|NœRúD$‰Áe>S1 •Ís¥5I¼wÇJë­›‰#žXïµ®¨ŒA¥smÅ yá+•IÓ0›˜åžvn]ñŠªdÍðéAºß‹ €–gTcØÆ@T¾l†– üoÇ¿÷€TCn/vû«5õo¿¾ü! ‡¿qówg_-p϶÷s£$uHÃ36I€°bGdÚÙÀmBð+7h…ãl§2Í4w®Bã°ˆ…—q3‘ؖྫ¼E+û =GFLröçE’#[îWÔÀX«ìª “hVåæLM©Y0Î^Óo9¨‰h:=¾Z…b“<ìa2a¬ºùCzýß õ½Ýßÿøk|ßF¯éÕ³iÛþéW-ïf»ýU¥ÔÞØ©Ó Êeº'SÈ“ËôOˆ“éjœx#âÛas¬¡@ª¶Ä´;·ir`ÈYׄSÈE®&.ó0‹²?=êóèÍ€­G2'pØ·œ›N×RêÎxçî9+KÒö«ºfda‘빉öCN÷¸Óœ¶; a“žl†p€#n¬ˆ2, þtµàå!§ªØ ¶[1™=4¾h,Cغ¯Ý#u 7 8ÐZ²“ÀzÞ5}ÞpÏÖ‘sT°ì üí©0éêÚÃW sLÏsÁ­ ù"Ì´ÿ”N\c'eׯª¿Š÷âß>p5JÏê¼Ø¹xýÊ”A‡< ÎÙ°ÐÂ?Tñ ä]T”Q@¬ðù,‡Æ–ÀZ¶ëf8µ•K÷€ÀÕWbóe ZÇÍ%7¸oºN’3Ì(®E=íÞ† á( é(bJ‹9¶Ô’,›i±l´¢iF™GÐßÞ€f¥Æð5½SàR×ú^†Ù¤Püìà¶x½ˆŽ éUç]³šeGaQèËäNfíY`®Þ·€×O¾!EF¸æ$50••azY³æ²jj,Ï®Êåz‹G-IζZÇšp|Q/±£P©Ø½˜G”jùL&ÜlCúÂ@ÍEt²Pkpö‘ù{à·l~œ¿bÑ×éåJýG1I.t ´,‚¢‡I Y~ß»„AûÃEëp3̃Fé^ë•Ý¥¯¡#m!R\72`‹=ïˆ8OV„5X¢À¥žÛQ:.Lk騘né^F°åË0”Ò`>E%1ø|fµe2Ç~û€Øû=3Sµß¼lÃÞ)ªñsEÛ\䄆HBeQ`Ï*\\’¼â=rºŒpÝýÙÊôt5ÍJEºBÉñS0 ÛepýÈ\ThsfÇ×M“¹QÛŸïKËÇãv-;ôIFîïÜ<¨E˜¼þÀ?¹,ð´ì²R—Áå]ãŸ^ÅK1-¦„•ºÓK”{¸¨™"Û¶Ú¢,Nóà=xïG™è³g‹:ÊFš Ÿ ‹Œô¾ªNլ˸~ý¾ÿÖÃ…wȺ‡ú‹§Š”»H4ô(v­ ã4Ÿ&ÈÉâ™o y0Ó*zqQ8 @ƒÈ#)£cŸí¨|ÎOwÄì2%î²Üa߇~Ê~`Uºà©üÉ÷ lE¨_¿g~ëU:bc¤XŒ=Ä'È[î±2&Wc86/3—{tDÞðsjüÎdzÅоê¬à®±º‰$kÚÆ-;=… ýÓ‡Ý|CШðÇWº‘ û‹àƒ4û+zC¬±±Õ`‰ßõG3Â|(S­ƒ}ûŒú ]N4ÖyížÑ½Êw®ÅµNh"îáÚ2¬ Ä´iŸ·"ù&5¿ïÒ/ÿ°×ä%©2{ñ~ ¦}qˆa–¯”‰.ù‘AsMIþ% ¨c³?¸'S]ÂÅwB?‚zè!õ£—h?·si·l¹x· RピD|/Ä7¥ ÞÎ#ó0lòx« ö}[Ù†»ªÛ·«Ó½nûJg§G±—K/¤N‹k7î‚l:=8R FžDÙCºƒ†ÿÏ“tv‰’¸$æücºå äù#n³@Š€‹m©H„¿_9­çr¦â²>°QqÆQ±ÙfI˜Dš¿+<_ܽù/Ì ž endstream endobj 379 0 obj << /Length 2231 /Filter /FlateDecode >> stream xÚXYܸ~Ÿ_ÑÈKÔÀ´¬ƒºömµc Ù v‚$ˆóÀ‘ØÓÚÕQ½¶üø­‹:zº<‘,YÅbÕWE»×]°{¸ n´ÿ½ ¡ vá.ý,-v* ýH%»²½{÷؆»Ÿú»¿Ý½¾{÷1ß~‘Féîù¸Ë¢]ä~»çj÷oï'Óí*RÞ·}”yý™æë°?D¹gÆÚt¥AbâM§}èéIæ«ôêeƒ6™ú9Õëy4–'kË䲩Ü:óLu$•»uÌ×jTãN§~GŠaÊÔó6¦kôøêˆ'³•ùg»ÿÏó'0ÎlR$ õ…NÔŸ»ªî^÷‡8Ž ¥|eÊÙΓå}cõþýÏÈóÏ?ñL#J’|’*¿Pj+ðõŠÓØë¶foë‰HÊÆþ¥1-Ï—ºFb+K4"r}¡ÛÁ™ÙHH>[ÙxugýØšJ0ÂYBoò÷‡$N¼G¹H‘Ô·ÃyÂKÁ}&§àÖ4xžÃµmÍe™²¹C[Qg­ÈQ¢,‡åÞö–̽ÙáâžV¤ï îÇúµît³H½ÇU…§»ê‚¼òÜLIù„|³gL½È'‡ ÏûW¿ ÊÏ«¸LS¿ÂĤŸ¨Tâ2º—q‘€"9+òx—0æ(r çZMê pÇìC÷›ðc&:và¶ÝFF:¸ÐëáIêýjJ!Ô­+³“x¯c„‚vÄŽ5ë <ÓtW$QNPîÈɾ´7…Ï»`žŠÐÀe~ž H)?·!Â[Qg¬}y¿¢Ãà ,ï³¶)ŠËýØíBk-/Ö#í¢ðÈ2#† õ*žp@ÍꃒÅj÷0Žý0ËA ï`—¸H½š´|£ORøªˆÝ‚Z³Ak¢ÄÏA –Þ™Âç‹ÄaŸ„´þÊÙãÈ )k 0²Î "D\H ïg‚u6Ø„›j$ÔýÇÏŠódö,Â…(Oý Ê·7Éa“ÄžE –º1¸4É=;f*qý‰(È:ö“&4L”ç–“áPApšíó˜/q œ£Ñ²¾Ší[#«#$òê<+‚—&÷²ÍÔ×|´‡8ŒÃÌ«ñ’BÜ"²cšƒVPXÅÀ=†(1[fœ>ž¡™¶9· )šÒ1sÚ¡™ƒv‰YøéT¨î¤éšEUD-diõo{Á²0gS¯”ç«0ÚÚÉs_Çzún¶Ã Šr‰®(Ç3¡Ï]9Áö–g¿sˆFz “ØÒ8´[<È&$ãþvžc£Æ1O» eÐvš+„ãØ·’!NˆXøBõM¯Çê¶µßã`]4á¨x ¸`¢¶ãVsÓôÖ6ÆÊäK=µèØÇdŠÅöí™cN– ÷Ó_î¹÷ðøQzt® öÞ£QÿÖ}°“ɉËÀU ¢k´"ÆÝémKÒ)\×Ï0Öñ-iÊ€™•`ä €]YJPÜR(?== ˜1ŽJ«È) dV:Ö”=])òÂÚ937Ô'F0D¸ „Ö”©',¨†¶%Äu÷€Ûê¦1#Ð záAaËbÉÒ3u—9ÙÚNýhªYêjF(}šo[ØdØ›-„ ä&„Ñ+Np—)— ؿ欑­@˜”1s4¶g†‡ägž\|:C/"͸˜AJ¿Êw¼§ÄONñ³$F®ƒpdOý¹©xY×Kî\Ê5JÝFæ1l¯Ü@T‚ ¸P´Lœ!_xÐT\Ãò%à]Âe麶—ŠRȲ2sr›S-9—´2«¥@®'—€ ”9Hƒ *–S³®9êú¶>ˆ‹ÂOòË’„‚ÓMmëy†·ÅCìGÑ\ÎÓŠX~’€žÇ`%ÁŽŠ‰d”d6JÌõNá¼p~TpB–¦þm5ÒÌ&$œTS;-(ÑólËáPÕÇoLЋ‚ÃjR /rºwIŽ|QNìâ”ѯ ¢/?\*ƒUògæbJ*ù…©'ë*òÑuÙ-®ÜI¡ü<™ñòïÝëwü!õó0r¬’Т0õ³è÷~äÊyùýÀÿ~   ^<Z0"à_%"q㬠]wpû|+phö-ó—ºidC)×/Dº/Wq¢•d)ªDíÿÝÎzaNòÁ“Š@¬bîYÝ1à•ûLÊ\Y›n¾Š2úÃÁ˜R5»ý,U³è·ëRÒöž¿|hVßQÙòe•JY¹PÿévQùi˜‹p±rÊ0Ø0}x¾û|% endstream endobj 371 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figs/fontbbox.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 381 0 R /BBox [133.702 216.819 267.958 271.893] /Resources << /ProcSet [ /PDF /Text ] /Font << /F15 384 0 R /F16 387 0 R >> /ExtGState << /alpha1000 << /CA 1 /ca 1 >> >>/ColorSpace << /PCS [/Pattern/DeviceRGB] >>/Pattern << /Pat101 388 0 R /Pat102 389 0 R >>>> /Length 206 /Filter /FlateDecode >> stream xÚmPMKCA ¼çWÌÑ ¦›ýÊî±-ô&îM<)m)¯ ½”þ{³Ï>+Rv“Éd’Á{ú‚㈉½%8·$)s‡Pq¸")qP|ŒÖPn!—®vØÜÓ³Í0u;‚ÿÂï‡ßR¿-uؒÊ®ðƒæÊ5«UiÙhþ$ >²´‘UÇ íƒ^ï³7´ugå¿, s.¦6’VÃùs÷Cœæ=¶qÑÉ óÀV¬ÎVUá\C÷`BDÙIÿŸÏÊšÊ-äÒÕ=x1åo×™J endstream endobj 388 0 obj << /Type /Pattern /PatternType 1 /PaintType 2 /TilingType 2 /BBox [ 0 0 100 4] /XStep 99 /YStep 4 /Resources << >> /Matrix [ 0.5 -0.866025 0.866025 0.5 0 0] /Length 21 /Filter /FlateDecode >> stream xÚ3P0P04b…¢T…4.U endstream endobj 389 0 obj << /Type /Pattern /PatternType 1 /PaintType 2 /TilingType 2 /BBox [ 0 0 100 4] /XStep 99 /YStep 4 /Resources << >> /Matrix [ 0.866025 0.5 -0.5 0.866025 0 0] /Length 21 /Filter /FlateDecode >> stream xÚ3P0P04b…¢T…4.U endstream endobj 376 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figs/fontbbox2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 392 0 R /BBox [134.454 170.337 300.941 303.869] /Resources << /ProcSet [ /PDF /Text ] /Font << /F15 394 0 R /F16 396 0 R >> /ExtGState << /alpha1000 << /CA 1 /ca 1 >> >>/ColorSpace << /PCS [/Pattern/DeviceRGB] >>/Pattern << /Pat101 397 0 R /Pat102 398 0 R >>>> /Length 240 /Filter /FlateDecode >> stream xÚPMKA ½çWä¨BÇd’™Ì+h¡7qoâ©Ò–² Ö‹øïÍ~¹Rz™äå½dò·ñg¤ øìoQAÂÏpŽA£`d ™»)b6l!j Uê5dRµpÄý<3¬š‰zIˆq5¿¶Œõ®C¯úoO @¸^Y®¡úð] Ü?q¨ÁŠ16{'› 6ïðz³¾}ÃfÛ³ò_–‡9ï66í÷Çq$Îó›i‡Ñ'·G\’…ü«¹ööLW7÷r3L|r™U½=/…Üe7ƒBóΗHû/dìüØî`ÿ endstream endobj 397 0 obj << /Type /Pattern /PatternType 1 /PaintType 2 /TilingType 2 /BBox [ 0 0 100 4] /XStep 99 /YStep 4 /Resources << >> /Matrix [ 0.5 -0.866025 0.866025 0.5 0 0] /Length 21 /Filter /FlateDecode >> stream xÚ3P0P04b…¢T…4.U endstream endobj 398 0 obj << /Type /Pattern /PatternType 1 /PaintType 2 /TilingType 2 /BBox [ 0 0 100 4] /XStep 99 /YStep 4 /Resources << >> /Matrix [ 0.866025 0.5 -0.5 0.866025 0 0] /Length 21 /Filter /FlateDecode >> stream xÚ3P0P04b…¢T…4.U endstream endobj 402 0 obj << /Length 3274 /Filter /FlateDecode >> stream xÚË’ã¶ñ¾_¡ìe9U#.ßßl'ërR±ïº\)Û IÈP¤ P;;ùúô $%qÖq."ÐhÝ@¿¡h³ßD›o^Eòýêë·ïªMÖERl>ì6e²)Ê4ŒKèµ›Ÿƒ“5GeŸï¶Y\NwúnÍh†þ.îœ%Âv í$ cžÔx`Àðp·ÍóàߺÃ1ÊxÐ pºúv± nÑiÚ$¼Û–Q|8èÞ#ãÈݯþúö]R/O³2,“¸"º¿¼Ë&$*-ƒ¦3§“é÷Ü;áÒG‹,™ßúE¶qÖ¹ÁÎÇ»mš¦LršfÁÞçÓÇP þ.©‚QpD4Ï¡ZlhÉ<Á}¢Í6)êªxƒ,ÌaFœäÁz§­îܦÌé슔ÎÎ1Dõ-7Üóñ.@€ß¡s·ÌÀ&q¦Uíd›1ͺ`ü ®^$xy„G…íoO„)½‹ËÄ¿Dyôt0 ®y`œÄ‘wÎÖiÆÇ}Ë@_lG‡ ÅÜj\’ר‰â¬×­€e}Å«´­Ùœxäe0¾¡Ã þ·èF¤ñ¹Óî õ¢äæt(pavqìp»—\Â8j},£W'|ÏH'P‘N5$­à‹y SP>"(ë8ÀG?8CêF ÿ$ñ¤öšdlgaeÂtÎL¿¿¤Ùˆ*¹¡¨ZÜtNʪ£µ5ÿ! ôdP‹±åF;<Þ‰ @Ÿåx3]'ëÝ`‘ߨÓNœD%,ÔŽ™¦ÞŠ"aw¼œ´~:h`ÓsÛ5î‹sâ ð$#2>Ø_YÆšFŸHc)²ÐXgT#X3¤ÐÙÁí°!ˆb9þÛ­È$À =,÷¬*0;Æ4Bã¨éŽS‘Ì>s‡èØ^H¯°ŠÄ‘$Õþê+Ú„[DÃÙÜÓtÀ`èHQ øsRÆr‹4-¡²l¦`MG¢éx€L¨’2½Aã¾çynð;ò ÕLL§G Ñqç—8ÍÜk¡;€]–ÁrZv>½^ãm ±@Ò¥à!ÛV[´8?©ƒIAâII‚ìc–]™Â2+/¨ÒeéLfAÌÒÙ* ¤ðÉ­Æ$"Ó¥(–˜åk¾T× HΓRŸY§Ñ0ŒÖ<œGíü›ŠlF¹qœ×4ä;ÑÖŒtŸ+–AÌá—´k‘ÏÆŒŒmæÍw.kk†ŽVõ®S#Û`ðC`³é¤ OÙms¯»§DÖSL3V¼ÑKØa¤í?o ðhF«Çoáà-m«ý-·î;*>fijwW×ru·<Ïô×X#)ôäg^2Íßîp²YIQßžŽ¡†·<Žjò•"¶÷tø¯y@2/ñ‘„=#x]YÚ{>”¢êwIÈ$Ñ4Ljê<G5šDò™‡ZãN¢ù¤A-ƒÙH3E‡—oe·+"òw „‹tTØ`g‡qö™äGTº8 >ÜUp<äÎ'”i˸«e&²¹»$–Í«A|d–|Y±I¥`»tè_"Â×Ãßo~ÀßïüîÏ«‹NìSV–ó•Ø„9=rÃÈwø;I; ’Y„'’Áwèýj¼ÚÊŸÞ^“¶ºXZÙ­ÏIF™QOoÂÉ"ã¨ö(îÀ&¬ŸÈ¥ï?Hð@kN#KEšEa™ÕWGuOçñO/š§¿+ûˆªZƒUÃkOëäZEdXb%oŒêxŒä†˜·#C$–¯E|´ˆp|vdµn$ª·;Õà å!ÏWTÁ„–AäBῲ °ŸÑ æB6A^*PD˜Ós“ɃFkILŸ &GUÇ>¨ÁKÉÈ,§?²8Ó JkÀ¬¥ÚJhÌÀnàÍé„ËšmgƱ“Õc°_²èSãÛî·30Î≠ò§ }°kªÑØÁ9íÐo‡ý‹ôûŒ”¤lò±áC}ìe¬›lÇÈÀFO‚Ié##¹ƒâKF†€Vëåz”ûá˜:ìp»1lp¹Â™$Ò74ü¯Ö]tµ(¼®BëÈ2MÑõ]íG‰«qà·³ñ—WW²Ë/¶8ÃÆÖœ® àŽ8 ¾%^Ù‚mâ/·—òÎ×üœàc¨µmêéÛNÖÀ·‡˪^oćµ»®X={›Ü‡y˜ˆ¸/Vkfùä9÷ÖЕU$½ëšWa1ûÚû•E‹0ª¦¡A';ôòHñÙ•ËìÆbe¶H«Î<²‹Ùßï1ÊüÝå³0‰§I¡hÄOÉu’H,ä{ÝcFsÏEÒ9|…l”F¦}iøÈæ¼Õñ¶Ð¤ô‹Úš7¼ñ=×í¤ÅóØïáÆxo+¯4@ÆeÌ6°œ²]`:„ÍdÚŸJZq¿` [CªóŠ‚¦&Î"½I$(a­â@*‹E¼ç<˜¹,ýo왼Ø’ߓޗÓKWÇYëšÝy×0ÝÈbcÜt´œ²{‡¤ü«kÈÁ~ÎõFæ7…gÉÈ•‹Ù›ó(.ƒBq)VI6¯ý &'¢½¹ÐF¦ÌaÀ%0Å‚ÕrHó ¿ã°ßûDpq'˜=ò^ëͨ/ÁN1Ž¿{ èÆ/b®‹¸GÓ¶~Зo)ÑœvòEbÝšq2àþYã"Û|Ùúÿq¦¯³àAÁVßqSüòÛ6ŒÌ|"x–=îÇXºW±àsz¹ˆ^…™–Ò²‰â¾Ï«Då÷ZÙ "`ôlÝ`·ÅïŒôæ‘dwùø9W¸ç÷z Ï(UôÜÀ›\û¶¢ £b*.¾Ã²F¶R_ÌÃ+¯ðö] >¬.ÓŠì%lÕ& ‹X¨Noר rËíIv›¢ék^VžX§10Ù¯»…ز¹É‡ð"?ùˇW¿½B³mbü3„Ùa‘fs|õó¯Ñ¦8(¸‡jóDXÇM\FY#ïÝæý«ò2 µÏ÷’ùJ)Ž!Ÿˆâú‚ý¸Ü”€ň—…qCäVqzÅ%a– éÅIÞ¡¡¯vüòyQuö> stream xÚ­ZIãÆ¾ûW>Q@‹f-Ü|s1A™FÄ9°%¶Ä˜"’šž6üãó¶*)uÃri_íoùÞRlŽ›dóÃW‰üþîñ«o>èl£T\¦©Þ<>or½Ér«<Û<6ÿŠÒXmwJé4úahÛÉÓhìªË¥éŽÛ?þæ—›2.3X¦'›*bSòdžb³b5¥fd0<Éa"ÍhFŸš¨®ÆWlÙhê…òåÒVMowEb£÷ŽÍùÒ¾òˆs]u£L:mUTMýu¬™vÙîtõc35}Ç$·õÐ_»C}à·;®Gßìä¸;fº««¡a7£“èÈl‚îQD}Ómág‚ƒ[›8.ÞtL„…Þé}9õ£ôï{0š®šêõt™Wá[EÏH»¶SsiÝ„þ™å~+iš"‹u®œpäj4 ù¹¾¥Éb•nô3Ìj[XuÁ±—S³ÇÜp9¸LÕqã‰.UóÇXOÜh¤—9ëq…/·Cnï¡RÐhcÝÉ>2Þž^§±MŒóc¢lÝPj™þ¹-LÔ_yS…ÞÎ'­ät¥¾Ù ùyèÏ‹þFÄvë¥<ŽÍS+““bò3U^Ä©YéÝ#ñØèÚ5¤"ÆŠí/[Zy÷Cs™¸S´>P* þ˜¤ ±&ý‘Ù’o²¸ÌMÁ¼Ëc½Ñqb5ïúÝ-ël š²ÙƒéØ)œ9Eº²räï=Ýnò?xû}Õ¶`y,À<Ô¬2N´×ç;ÒSIl³Yx©zà%YÓrÒ4øôì©ÿ{­ZfÚ8’Ô7¹æ‰Gw<¢éX´" ä±*õR³Šd©(44ªñ'n|¼xÕ†/Ú2Ë¢ñDJü"Ô“t‹À€[‰ñ ?^yèX·õ~Bd —È¢çk·'l»µ]‚EfÞN‘Š<úܰÞ07µqžû ¢Ö²ÛíúVÅÆzcû[S¿Ü®¸S#%`г9×tÏ+ae:ë÷X¥å¯Å’»ÝÈÍ$¢Ã5b Gò|À…“/¥ó¸( çã´ø¸ßÃÊFn~™î¹ºâÖÓâêþ~ªïòºˆË¤t¼ØoSõ,oí;Ë瀼™ Ý¢Q >]: nkíëaªÈt¡ë¹®€„ëªd *ë3Ó4ú(ËjÈ+Åu`êþ: à;Ém°Òñ¨Ã@¨÷šŸH3ë=ìÏâUñB®WR­Ž]=5{ÂRƒRn²5–pÌ¡vØ~¦ž¥Z²‘ï}3öР´a9Rè mpK#ÜȘߢ‡ÏÏ8g="­òN?YZºxˆªáu[ØèAô­;ˆ.ŠóÆÚ+«Y{tÆeãÒÚåú¤J`_ÚY³v‘ 6I°Oþz®n°”ðO…°÷*Ý(S¶ZÃÁQÍí9tÁ¥Ý¹"ˆ¢;ñŽYy÷DΉI,…¤—¦mE#î\°ëɺlàîáãGðÐdL<|£Œ A<0ú:4ãTuäjs¸ë%µ«îXKäê‘—«§é~ ^œ† ²o™¹}·©Žî eaâDy?ôy JVµW9dÓ1OL™Ä¹]…DÌÙ$.CýŒ*MWKpêíh<&‹>>3ñ…KÞ>X0µâŸSs˜$tìîn  gF;l]M^„‘¥û(ƒÏ‘/)c:ôHpÔ¾ûŽ‚9ì üʽ( Ub\zsT‹IR³‡¨ÂFî4ÝàwAî4»\híñ_0°€,Ê,…êBÌ}3ì['RïAê¶m.#¯ˆƒpÅœW”ÀÔ äÆ¡}¸Éµ­'áý¸vYçjøiá¦ÍÙK½)k ²¦dhzöŽ löŽÍ»âNË8×åBÞV‰Þa#%BÇ‹Kó¨güõ^È+Ãj¼±E󼨸Ÿ® ¦ÂL¦Ù"šÁÙFË34Í` ·q¡W)ÀJj•“Í-û[k@°p¬9¦x±¸/»2¤Ð U|ÂC%Ê›ÈöÉënµ ¤jÞ¥š$ó C®»AùN޽ Í„æßuGááÿ',/²ÔsÈ/Y÷Û!yùm¹ Ém’Ïñ¶õñ‘²7ñ‘²~2FZC³ŸÈ+ñLðÛ62×M¨ø‡=–þÒÀ®–µžú+8~ Ä!ƒWö6ĸSdÖ]ªšcÓÝ©”q¦<¿¸h”» dà/Ì\ ~»KVĩ՞ã_ˆC¯ãTŸï”ÊÖ§„Ј'„½Üµ1Ì„ƬŠïÌç‚YBneä ÷|î»Ï¨8Ë}0÷„É[EËÁ¹)úPø$Ú‹òðبeÌÐx¨_Úâ‘B „Eº°ag‹“(…VK-³å›nÁ ̲qúÄÇ÷D”Ì…ÃlèAÕíÞ,WY[€.YiŸª"Y+ÇMÔ%!g-…ަ;4ûŠm#Ѽüê#øáQ–ùÔ£å%…|0­âaaܪ=' ŸØ $›²È” ª]°·(ÔÆ€¾g¾˜Ý+y¥UÁ09Æ‹‹·`‡#q7qyœŠOÁJÊ®¬ËfjɱàòVSê@¿šã•¥Î",ÈuB¼ÒÏÎX¿œ‡zò)0¶@ýYmõÒ Yð,ޱ] —ª~¡:¹ÆÒÖx=sµn-îàÈÏuUmŒå¸7£ÛT7s¾Q”ïVƒç¢œ*îEx˜çˆ¼1—µ=·p3[H@ò`3ƒgèÚŒ‡´¢õ«>9 ,ü"­Ëñw‚kçÙ·%aé8›kúÔ5aïÛvœ 9&Xm¢?õ“?}%§ò2ÂY©ð«ïx 蜿LWo3RÅ*Eô¼}(É!°óõ…—SÃ:™øš}ˆ&Î++vƒ¬Þ‰/ôpŽb’0tÏ*ƽ;~‡€Ÿ®~Y¬Œ$jÐÔÀ¬†þ: nñ-÷nk~àUúj Šû ŸˆOÃ8 ŠÿYªÁx4hŸª‘â¼j¡Ã½vý48ly€o2ú9n-aNçá©ûÀ—¨Uh|ñ¸៨J¸çû˜*‡2ÂþâT!ªÎ[Ûò mWø%åã¡ú·j{i¢ï°î7÷!o¹(ª$Ì(¼«0=•V\Ú©äiO•)$¶Å=˜@†%bÍ…“ ’©Ðg iȘÂã(€þ~0©“4.K³Š&“òíh²<ËÂhÄý×ú\S´%Z5ðÖáiÂ;áVØYµcÏ€;I u ¸iÊU•h\%L¨ú_vAÂ>»qqã¾jkIÑ!A¨'.d>¬’ÿ¡ŸªIí¥Ž6T”ÊÐæyù:âÜ"ÁÛõ&ÿ’eS)¬ZHܮݎLÛò¢ž.ÄD=, l9„Þ¤m¯íw %™=>šçiwOÕ­Š kqJ *Ò!H4tP~ Â}¥PIý¢ü,³ÒÄÅ ½Aü !r2ÎBƒ±¼Œt¹€&ø¬d–|yïBRãZއØ~‡¥ç<냹ƒÒìÙ÷ÔÝjs—¹Ô~¥÷êâU«ÄÞþ⇢p´—vXÏgÊÔS4H9± “¨Ã±æ@ʸ›êÛЂš!“{ À.äúß­è“SL‡ø© z¸ow¸±ÂàRæó=ÜC}o‰s1„e ¤PÆåUmsìj™Æ¡6¨Ïâš1œa^ž¯«§êe]7,­¸²Ë€OéíÝ øØpÅZN†·»£èÙ:<ÇPfñ„³D*"£kcÐ~Â~2qåÐíP § xŠxF5ZQ›9kªE ¤À0>7 ¿Üí*Çõ—·£Zû²¨ž«øø Øu‰9óa‰ ‘ìþ4:Ï£COÞ+Ÿßå‘úމªò½¤x7r5±žë-µ·?Zš17ôÑ’÷-ÿOÍOÜ'1w!Ù³ÜÑGæ¹¼²RÐM²2º>ùˆ®×ÁÝ oG2Q™<ã©€F¥áktIí/Ð9U ¨¯ä—`;ÉÕ©2ü %/K\ñ†¯ŠÆV”ý Æñÿ¼éã¬Qes¬) /þ¯dùN:ž£ªê:õgðŸûwj«;•C꟬îÄi"ÿî¢ôbÊ÷_ý—±=P endstream endobj 414 0 obj << /Length 2715 /Filter /FlateDecode >> stream xÚ•YIs㺾ûWèHUY·Ü²<çMª’Tê¹*‡$š‚%f(R f¬üúô ”é™äD ±5zùºL6‡M²ùãCòƒï¯ ¾ÉFmvÊ$±ÉõF'I\*½iNŸ>ŸÒ͆‡¿Íó÷üðé©ÜTq•ë|óüºQ*“Ül2SÆYºyÞoþ=µ‡Ëh·»4M#õ›íΘ,ú¥¯ÏLéÚÞºí¿žÿô!S?=|•U\qe”®Ì¸Jµ‰“Tm²<‡»¼çJ\Û~«¢˜è<¶ÃØNí~zÒUpÌNgšÎÙå H¡äƒêþpéêNPiäø„n·ä±0p1¼%-Š·; GÏÇÖ'•‰NÃv§Ëho¹{qVê¿iÔö{{¦9ZýÏ€ÚþHªèÛ±mpìÈc~ûú2 §zj›ºë®LrVÖÛ¯¸ÀŽBŸÚ“Eö7;ay§T\e3~ŹÃ¦æ*ª÷{iðG6šì÷¿mÏ­f»SÑ‚·ØF Ù‚Å:ÂËÑÐ]C_w<4¼lwYýÛ6H,ƒñ¿ “å±éXOþ˜¶›‰Ò`¡p›„€ßuâìWºq²¼+o¦Ím3‰Ø€ø²v®¬h],5••×ô“zo ]ÏOxÄírX½ÔNŽÝ·#\¼ääºß3}žêØË4ZÉ¡“UG2ÞÏ\–ÑU6ðF0¯aÃÅŽÃ5è56ÎÐ 3¦u­c{(³81ÕšŒŠ®îÚƒ4å08â­•CÜÕMöÄíoítêpÂkkv虾rÒ¸¦õýX£Ì¾ñõÓ:;ôBϹ‰µÊf=§ÿƒžÓý™•;OìtAU¾ÐÐo¢ƒÎ .4s˜êù•<Ø[é$ËØm`ˆDßsŽ À`»Ùïó"©äÌ=é t§ãà=”¹Ha[Þ.%iÇ´‘2qeÌRºŒx&ɂۘd8x¬Óë~)L­÷_·Ú¹n} ClÏÀx>O¼`´§ºíý ÞÏit!œA韉J-áÒÔ2pñÐ¥Gã˜ÚŽ»3àÑ~S=N,¤µË5£ÕÑ•T†ª0*qn¸†CK\Ë+ý2 €ƒ~{žÈ&Û†A›ß¢NЇ:`cåÎt{»çiC/gø;­X?»]ŠWm»ŽMæu´–¢Ï]ÝXn²7Â8HÒŒn’ |Ýv†W ‘Û¡q/¦D™ÄØFæiûÅö™ht¶{dÚ†BdŠBòœ¾P ¶ÎãÀ1ÅŽÝuí®„,v/<°AŸê/b H­Ù©• ¼º„„))½[7ïÝÞÄ)$T2¾ƒà!6ÈG™E¤‹Åå’Xù½« ªZ`vgL€N€ Ð ³è’K·÷!^6hn}jÚÙG \4ô»{ÛEúÒvMZEŸ{ &w+þ! ‚l?ÎâfD ¬4‹Í ¨§á«}/[Ǧ˜ç°±¦÷(‡Ù’ןäyÖ5cûÂÁ_4>‡Waé–ÚÀŠ#ê×À¼T§  ñÄ0˜†8mD'”áˆzMWå]&õ[d&!ç!Ùê@vƒ¹ª*£?ÏÊÀ€×þàx#8RÉY‘$cê~è9ѶfqÁÍl°×Ôý©Swnà³7É®ÖF‰µÃ`ù!,Ö—·¶kkL0uå+hv{Mù.3ÃÍ Þò6ñX1˜TÐkImqþipSw•ýøÎ2¡±ã0bÒ¦Úaæœ ¡êÍŽM넌 F*j„k¤—i ;Â<;•ðU°ã¡\ÚÉ­X•HÔM±X¾áM5Ú6¡‹¸„Ü‘Žgµ(HÀÀÁàâp¥Ú§ƒ…€jáq²*ö#X´çÒféDx—2NýASÃÜ Uæl*Ù3 í{^|ïx6ÇŒ,0CÚ,DìO÷{sÆ-,9Ð 3„?h_y 3†'\¦iÀèN;R}ÃèÞÎîÑ@@c?ÛÑ®ªlvæ5÷¤hºÁûwÇ·¾È„I2ž£Œ 8:×¾tv†2]Q”{ä%ÝÒ`í­ðd{ ¡ÃãÆz…yŠÒ[)ëC˜@Ž™ÜÈý0+P·ÐàxD6-â%ŽN~×»KñJ‚¼p´¥ÛÉRü §Àµñp ²Ûƒ®{×RrÒÖ“—¨5{åua™}¯hY1¡óÕãÊ$6I8î0¶ûåŒxÍy~ú¶¿^$“¼-SªhŒñU¾Q…ˆÔh6gãËq£ƒøhØ0o&BÛÄ~ëVlIgy¬òòfK«õV^¥aÁì-%Ììø$3Þ ÌÏ“\Fã»R~¿E˜ýÅ¿Y˜¡#Ë„q©;!|ìè¥F{Ìér!„´#œøÈÍvâQ.¿Ð¯kÆ$¤%mQþ­`¦h FÃ¥ß×£‘žßRpçžWÖÂHã¨Åý>~' !å¹/¡õzé½À¡ç©€y¦BêéÜÙS˜A±FÌÝÐ ¾¥e&þ.M¾ è1 ŸòüÆÇ*¾½>Þ½«F»b“*³$ûÿLR§Ñçó(µò勆< Àè2 ùÞ*“%…˜Ðz8¢Ñµu⟅fUC«kû0VÃ$y#ÑÞ7u²ÛVìÁ0(éË(T̳3ʳ¨2U•wøF VV4X6ô‘)tªÎ*U¶ˆ*kR6Yœhõ]1ãð,æù–žI'·¨äN”‚b—>ζýp9…Ïi”aC?Ю÷uƒ.RZÑ›¤zŠ_ÓäUeUœdwÎàKÈäU‰/3ü;MúÎ~”dê.7È‚ä;AbÝ%ÙÅÉÙŽaSh”áÑ>T‰—Ù·ÖMLiûy9‡B¶^kw$ÎwEUDŸ_™*†ùÐðEË-oLJÌ-æ'yKnüp07(ppˆ³ù TŒÈHØ™èÀq’xŸ”&¬UXò>:àðý3Î\uÍÞ•uUxó¬Ê[M„5•„vÏ]ÿ€‹³æ…^¿E40_¨e‘SIû c‡¥ JKU¾ç£¸ñQz™Ñû ?ÊI<ÜÀÝ›Ö#þ}‚¾b®UÇ[4ù ã}áB)üG¶íá="YþÜp}Q¨äjñƒþÀ­$AÈ‹ˆa=:ò_„ÑÊätÎÕéD=µ£›h‡’wà''úÍ%¡mP3_ï HûCg5@ŽJPä&îjRÚ‚}’{©×̱ÔïͱÔ\ ûm¹iý+?ZÌFoÔ¥žŸn ûaòCžÃÚ¡è°J^çzUWl_Þâµ(¾{ —9ÝQýfbƒMP jÿê.œ¤>ãÞ+ÿÉ€ªpöš]G2U­q7ñÿØà$IÛôÂŒ4¾ÍdIíÜå4SjªáúNö ôƒÄßÅz`O/þ6ntRĹ* úÑqZð2•.æüôüð_^(åÚ endstream endobj 410 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figs/snaplines.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 419 0 R /BBox [246.136 369.636 348.864 472.364] /Resources << /ProcSet [ /PDF /Text ] /Font << /F8 422 0 R /F13 425 0 R >> >> /Length 382 /Filter /FlateDecode >> stream xÚ…RMOÃ0 ½çWøHx±8ÉuCÚ Ñp±ÃNü}œ´éª Ujóâ÷üüQ[ ørG8‚Ç?ŽKÆ §3ª TDö ÌȆÆé¼3¦b–4Çe¡›ÐÄ«gbìYEsÏØÎ;7»M±±’®ë5îÜþÎ=ÙÓË'øp5QJ½ ÙÊ }»ç±Uc-ï+‹&$fQ™ó U^±›OXf—vZ´õK%Öd"¨)Cˆ )•f{©‰MÁIÛ¤Nl=‡+|ñaáÁJ(Ìÿx0Kße°É‹Îc¸–ßc¶ï)¿ä€ùª&6E2—Þƒ¨íË|þæsê}N×=„ú2/iF¥€[‰Œ–X|AÊf l‹ös,¶}«É<ªpSçX‡^óy.Ʊµd>ß8Y"oo!ÁÈ„ƒ&ØæP}¬†;Ýß§‘‚EÝzp«M†‚EYaØ[t ïðrâíÛ°]mH@±$É•RÉ6-Š#ëÕ“Vž{¬¸_Õ’¿4 endstream endobj 411 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figs/intersection.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 428 0 R /BBox [212.311 388.314 382.689 453.486] /Resources << /ProcSet [ /PDF /Text ] /Font << /F15 431 0 R >> >> /Length 666 /Filter /FlateDecode >> stream xÚµTËn1 ¼ë+t´ „•(êu ÐÈ­¨oAéÆiØqZ;(ú÷IÞ—´¹ôâ5)5ήÑWÚêGõ]ýSYýM±ó$œ´8KÑ:½SΠ圴K‰¼½U_Ôç3L ˆ±dWH¦ƒ±ÄÉÄ)StçB2ÓLvV—ØâRÐA—Ëëy‹; "¥è&‘ܬÃó€hGÁ=vpdfw´¸S#‹¾¢gÙw˜ÏÑ©ûwt6jŽä—0Jb,£N2Y4ç@9A+Æ((±«Ç-‹ì)L <Ù)~ y¨o°´­¢â1Äì‚@O¡¯èö æ3¼6flJYOhWÆœd²Oš£«{HPQb®ç-ÈUÕ±‚¡ú´Ãó€h¡àœ;™Ù-.ˆžE_ѳì;Ì瘌z-7Úè;5ñý`˜Áƃ¶M©bü"Òõ Z@g% THs&_^/ÎŒy# ~-oσ¾l,ÞÌã,óg)È LNlµz T\"è‹÷žLï¶÷ÅêLbÐÁO¸*e®îg`/ôŒ=¹Òî´ðÌÕ·ÑÅÓº8•Ñ™’k Ž=m†m]†°‘l²§uñdÿлӇf®ÑyÕ®Y­p³ v`H '‹z !d‹q=³/kІ’peŸ£œ¯É¢‘ѶJÏ2 „Ìj7•_„ÅFRjÌ_Ä"?äîvêr¥Þ´^GÜ‚•­îq±­à½^ÝéëÅnÿrX//œ—Å3f±?lŽ›ýÓòfu¥>¬æl2¤N± öf&øÌØ¿2‘pbÒm÷‡õá8ã²yZâqÊT{~]^ø¼x\wÇWYZØÒÚf6ÿémw|¹Ýn5:‡§ÛçCûû°þ±)ý¸âqé endstream endobj 437 0 obj << /Length 1756 /Filter /FlateDecode >> stream xÚíYKsÛ6¾ûW°7jÆBˆAäØ6nÓCf:õLm´Kl$Òé:î¯ï ‚¤ÉJÚÉäЋàbß~»€³d“dÉW™ÿýööêÕM‘h¢s–'·÷I‘-D’+N¨‚'ëä·ô]Ó™ÅRh–vÛ²ëGUkG4]-–4-kœ”«î±ÜížqÑÞàóñ‡m]>6^°‰©Ôà$ˆ³Ÿª‘–ÎÜÌÛ)c.…8çiiíá ps”ƒß3*6?»Cígî7V|ÀhÿûæöêÃ…a–X3¢3šP,g,Yí¯^½Ý‹äûæêgD5Dµc6ºŠ%R(’IÊJ"·”ÉôÍÇrÿ°3íÖ¾‚ðÂòÖzNˆ´+ß;‡µ8m›½5B€mŽ dƒ‡dDµê4øôÞ˜=""àeéÅ›²õRžªnë?ÜúGë üÆÍÁ„PZ BJÙÙ¾q\;Lp±tøs1…°[ .hú‹`YowåCÒK%€,!ÓM«²xË!º¦÷!>ßbQ%xýä²ß¾BÔ Çɺ©½ o²Ý%®‹ ϦQbÍÂÛàà ™ JÓ×ó¨æŠ(òü×EÁ­B 4Ì6¦DÓÖlöÖwÞé)”Žù(S¤È!ù%*6U¼°+Éx¨Hà:WM‘ëd´æ:²l$اlÄ¢©é>K™iÛù†¬ 9 tlbÒr®û÷#QÎyO „ž–==¥ÂÇÜJ¦åÚ/wH·ƒuÙnè ©Ü!ÑÚ‘ :…¯ùØ™ºõê¸æÐ<UÎM*$É%¸~f¤=ýû¸[ qd|ˆ¹¥Èdÿž\NiðW Oh mR®©˜×k.9àÏG(BM¶›êeG¡¶Æ—B¦Æ¶ABɲ)Àœ¨‚Í<4•b=4H‘'¤Žx ¢×Ô×È ›øÂÒDJ¼f„1»ª6ñŽA†p8’,€$û2åc=âö-?V=¡=·Ù*b«(@~È‚_¶Õ}·¼‰¥çïõQœ&±]r%Á®|ŠòO‰nïºÚ“Î! I$ä™,€£|”ØVÔx¨8€SByX|C_ öE)^^ç AkÕ¦ï5BPqË#T¾CíWÖ' 9 thyóKÆ‚0ð;…'ûͳ¹“”8 øùè­vÕÊò{œîÌ}wœŽE×è#[ù†V=aB ¥„_V“乚䋟ŒQæq˜‚f_&/±û“3TÈq}«õ¡ÄóÖª™DÑÖÂÀ˜}ûÝ–}ï†EÙþy¶½P¬Åg$ƒ#Y¼Ó²g"ï´˜ä³N à‡˱ÓRØi1|± üYb÷¼Á³Æ1â€'˜ MÜwó½¡Kâcê2ó= Hw&›Ñ¸ÄãW¢Á7ƒsí,¨v-½}އ€.¦]N¡}LwSù‘vU½†þ¦Ã£1ìSa£ Y,áC¡§HŸ´D¾÷¿¨Õ€xB϶d™ ë»üÂnƒÚc.ÿª› ý7gzŒë£rfµ ejg¦åLg‘ò@uN$©åþ<„(aPX"òKø–Ûž9ÿ÷"ÿ²‰žk¿LÇ-ÞÀè"PÑǘßs-Žü~º‹š0Ι/j 8#ÃÕÛsL 6î™O)qÞ ÜHõç»±núZ«e(!a\—k¡¿[WA«#vkEô€Ÿ¿çvk’eÁù®–ƒÐÒˆ^öwƒµË•-P‰“Ç_‡(¥/ín^ÛkN…0¹'X@†H¹ cÔ—d+ôT*Kæ°.•áZ¼˜ÊºgSÙJá£TÆÒ«mg{”z=}gÅáYáMÉ,¨»¬µÃǃÛ„U}úÃd|ÅÆóô]¼Ã{ØÆ]‡úg¡¼ØJ’ùæ ÷´©By/®ûò¡úäÐ µÃ}t¨…Qì?ƒ]€Ãp=ò™ÊÞ|Põù©‰\P ädÛX˜âCZ½¤º§›M§Ï‚0¦Îð'¤0•ctž­\NAÃ][îðõg)ùŸ´ TÏ”³WóuÕú‹XìwUßïN#iuZ]€)˜“5Ðyþˆƒf( endstream endobj 433 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figs/example1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 441 0 R /BBox [235.112 371.02 359.888 466.764] /Resources << /ProcSet [ /PDF /Text ] /Font << /F7 444 0 R /F11 447 0 R /F13 449 0 R >> >> /Length 348 /Filter /FlateDecode >> stream xÚÅSÁJA ½ÏW䨇¦“I2É\+ô&î­ôdµ ,ü}³U·‹-e‚, ì$oòò^’a /igŽ xAs©›Ããnˆôgüfئ w)ïgæ Õ§›.ÍDаÕR¡{ޏ¹¡tX]½_¯»å|aP±{Ÿ X f„Òä+‡úœtÛ¥û1ÎŽU °+æ"VÎ+.¨d ¥"¹MfÖ—¦Ë̾©=Ëføˆ—¶©TÅ’KVÔʰKœæxBÈ£ ƒ×ôðÊL ,óÃŽB bX3ƒ‡a€†ІÕ$Ñv„ ‚¨  ^‚ÚdAÍxŠUogçƒcpI‘Tÿ¾ê~\u%ëoÒ©ì!WñÐið'V‰Zt:ÅþøÆ­GÔ±“ZbêõTãxS•ÃмÉÍÔKÍöƒ<’82x´±w19Ñ],Ô!)ùy$Ýv endstream endobj 434 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figs/example2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 452 0 R /BBox [219.389 361.264 369.887 476.963] /Resources << /ProcSet [ /PDF /Text ] /Font << /F11 454 0 R /F18 457 0 R >> >> /Length 363 /Filter /FlateDecode >> stream xÚµ“KKCA …÷ó+²TÁ8™d’™­¢Bwâ݉•*Ò‚Áǯ7sû†kiA¹P¸çtæË9i#Œ€à5Ì ¢ÀGˆhð’’(ˆ VË0 ‰fsE2šV˜¸"É•((fMÉŠ¹0°ÌÒ§f÷2°V”¤®pTŒ\€kEª¹)ÉPE@(brÇòó)9ËÒîyñI¸ñ! ¢?)W¬íùÀ¬ð8]YíÓ_£ÇˆpÂZ?µâûλpvE~ú`ÝØ}+†FÐ=ÁÝÑÛñ}7 —Ý6µ* ·8„Iå侀-*&_ùÌ^––u°zn“•2Y)U/N­•Û­4ì+•~Ɇ%ïßa—v§YÄù*‘5¡úæ–}ô?/ñk˜º¬‡ÐDþ!ì÷ vÑñ¡ØŒÅÒïØ¹ÝcߨT‘ýŸ#± Ä´7–±ðFÚDXsNKîÜï¹Ã-gTŸVH%7Ú·Ù=öaý^×ò endstream endobj 464 0 obj << /Length 1226 /Filter /FlateDecode >> stream xÚWMsã6 ½ûWhz’gj†à·zìvÓiof¦‡nŠ­Øš•%¯d7›þú‚„$K6ãMöbQ$ ‚xà{O¶ O~]ðþùóÃâî^ò$c™&yxJ¬HŒ• ,¾m’¿Ó_óý¡*–+©D*Zþóðûݽ›üÁhf-: Ö-LÑXd6}^ —æµÿ=ú|4´²is?ûÜÏîú?<5UÕ„…²ÞÒÔ'ªûüR•uñ[®””éÃ`ÞÔÕ móX{rWv4I›¹t[)h€IÔ’sÚ q¹>—eÖŒçÚ5mù_CgÉ+ÜÍ“•ÄD™L'+–é>ayUnëbƒ Ã`ŸËã.²»¶Œólp~¸Þ\3bXg~}„lx~|X|Yy`‡2Å„¶Éz¿¸ûmo“_šÅs°AM¶q†eJ%Z &£Ý>q°³ ç‘ù‘";途R¥yWxÈhúÔ8ý0?›}~,×d—×ÛS•·´ÖÕùá0Zzô¼‰G/L”ýsŽ»ˆtvºÅJèè÷ŸîPåë"‚žÐLO¬®ÑsLI3¬‡ÀÛƒiÁ‚IJ=Õ›¼}¡©áÐ?úW3Í'.R>•LÛb},}BC®pe}jÿõ†½žd‡I‹E«™2c±µ±p‹ø*Ü)Xè|+T>^0f.s;G°¬é™ñ>(™`µYéiHf¹NðúÀ»„¾ªW»½¿Ö.Ý·¡w€eß}Ý @@–nzFó«ÿܬpcúózC¾mÑud,ìÔb F^º‡k€ÙvêðÚ dLˆÑæÞE¼p¬ 8SÌJ)NÜ*Á()N_v KºuEÛa=ŽSס0%ú·*渾ØûC…•†þ?÷¹Þmᯅ€ôxjkšmCIÃy=Z@Æ|µƒT<Ë”QŒŸcýsW>W÷"20§FJöqEhâ ê²ÛÑÛx=ƒd‰³dUywì%‹¸À§Ô’<šQ¹ïl&Q‡Ñc¨{ÏKHøÙጌ"žIù $gN*Lf.»t”jtƒ+.=¨ÙLÑ==MË™`Zhò,Ç]Ûœ¶1%…½†ü†ÊiÚ½;ľ¸#"²ŠioÒ‡ÈlÔ`/e`FÈ·Wò…Z ¥eL!ë’P»7 µÀ†¹øýtÖ³:ænÐ @%À›F_c ÜÔ}¶§>˨¼ÛÿT÷(Çú*°œInnÒ!:Åu})…À¾JÎIðUª’»°ïàúm3öQ±WæF » 3gwŸ³×Ù]Áhã™/+$Ï >éF7ë¶dè¶hqS†N¡é•÷©mö1ˆ´açÎ÷[E“‚E ç¦ÿ}×â >‡#`ÞD¿¾nh'íäØYa¹niâ•R0Øûf7¥›•3!ŽÏ9Ï“]œ„±ÿâ˜o"a}A ;+'akኄò$l'$ì4‘0®„€lÈ Ý#._|Vù)ÿY…o›}YUþ»JgY¯ý.tåUÿ׿©ßaðå•¿i» M’2! !~XÔ$Ëý)fÐ’‹¾ˆ;O?;©9U›þã!(c_Ñ2Ö<:ì EèÍ­Þéßõ½£‰"B¯ÂáY‡ßc–Œ@Ϭ½ÿÇ®K endstream endobj 459 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figs/example3.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 469 0 R /BBox [182.546 380.029 412.454 456.06] /Resources << /ProcSet [ /PDF /Text ] /Font << /F11 471 0 R >> >> /Length 209 /Filter /FlateDecode >> stream xÚµŽ1KD1„ûýSjẻo“Ý´‚ ׉éÄJQ;ðlüûæ¾óð!6d&3ß6P¼ÐÂŽwR<“iጊ)…Ív‹âj<µ†-™;›øšâ³ÌB­+Â’™jcq[Q¾Ø[º¥›£ušÆáß×Íi+þ#£qæ•«¸$K$v‹5ßã)£WpMtÐÏb¬˜†MίTѸU«èOà EÄÝÉëé}ßÐe?¦FŽü?R÷«ÔñÁ5àEGþ™:×êïÔOìÛû¤0r endstream endobj 460 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figs/example4.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 472 0 R /BBox [219.098 334.756 375.903 507.244] /Resources << /ProcSet [ /PDF /Text ] /Font << /F11 474 0 R >> >> /Length 381 /Filter /FlateDecode >> stream xÚ­SÁjA ½ÏW蘢ÎHiæšÐr+Ù[ÈiCZJ ñ)¿Ÿ7»öÚ†æP( =é½'iäL÷TèOÚÓž2½'Ñε iíÜÂhwB^ÇYÿÁsÝË'žkz1½;7}´'äŸÓzSÒRp€½Ñ¸š^}\TÅßìšc9Ù×ô° endstream endobj 478 0 obj << /Length 1910 /Filter /FlateDecode >> stream xÚ¥XKsÜ6¾ëW°öâTY0@€ ˜ËVm{w[y¨*;zša…CNHŽmí¯O7 A‰ÉÒ @ãÕèÇ×ÝàÉ>áÉû+þHûו€–'"¹œ3žëD†ÉB%ÛãÕÛÿËäÇîê—h]¡X™ËõUáÔÝ\½}'TR²Rg:¹¹MŒf¥R‰*%Ó¥Hnvɇô#Åæ›ÿNÛÞ¾3ÑìI »µƒ7×RÊôó&+RÛö+‡¶:êvÿfR¯j÷Å®JÇŽH’ãuÀ™L€B¼FèŒqS$À˜È'Æ4­ŒùQ,7Éu´Ì_Ù[ÏœJ«¯õàù¸F{$ê—z<ÐqY'x}^øÛ¡¾¯ß‰•‹3* ëÞÜÙBÌ×2SLI Ú ¦üÛí˜%žÇîXõÖ¿­ÝŸ›ª_•ú®¯6™I¿ø•D»?ÚU8zUˆˆ‘LVrX9ýõP%3bZÀ.Š"3†iS¾\{o6`>+¼æLé‰Ó‡ŒæŒ‹Hgî SSm½I‚löu,uç/:÷žÔµ„N£G¬*`UåÄÙš= É 3ñ†·¯g Þ=­ygVNᑞ0JD•{Mèo×Äî|jêm5‚ð2ÃÉŠ6×"%ã"â£^–1Ã'FwkšÊd¤¨¬Nó™ëš—ð˜brÛ-X^–±x'p$°û?it>­œœK–‰Ë'O¹íz:©ïFpR4äø#ÏyÄv¿÷Èýëû«äƒÛóÃØ7 Ù;º˜™^ÔÇz·k,}ì΃Åmà[\³Ķð­OçqìZà@°ÍµR*ýYó&]Õ÷€À©ço«¦bã—ÄεöëxÞ›ºµ—ýŸ,èÅÞ9#l“³?nDê]R=Ï%…,/‹'I̸æÄ÷ÃÁ™aÚ ^U¿¥‹Ž4±³oBPÌs˜ÎêÊ£«£Rm½˜­gù;/\l<žè WØØÕ´øÇeኬ<¯W…|­‚kÁ$àÅóÑUåYºmÐà zì;³@®ôÞ_ºZŠð;¡<ÉŸy7HDõÃHÛî"!;ËGrwK-hןæÜБ֢¤(@:ýZŒäóüÄŠó&ì vÛæ2ƒiB´T£çÓL|z{üÍ6v2¦ys/zíûî|z¾Kê—ºdVò9.â`vBuaɾª[ä\òôÇ(~àxF×;¬/=æÝÇÆ€Oøô;šÒk‰#L@T“.qÔ—Ç‚©‚G¿ì„=MñÀW¤xQ4](°àú¶;÷kz¿p¬vÀ°Ëè’/Ò-¨ 8¼#Sú‡þôµ:ž\øÐ"Õß?ÆbbŠ•¿oŒLqu¦ š&0C fñ çd©ÕЇÁd6e‰Û5–bBÛkÈÅDìè oþÍݬI¸¬@ÁÛ[Z@ñ:λBC¤qôÉm¶3ÀZÛÒâá¼ÝÚa¨?;ª§Íp Ÿ9‡Â,õ[9%d„qé¹kë@$lWËÃ] ~ÒH±º +u^ÏÓ›ƒ¿9®p8¥¦0ˆâ ò“Vº{vÇCí{§ÞŽ#jøŽÆ¶î6F¹t9S˜O„6’gp“’ò|ÊRÝ 4;ª‘èuhjÝ 8\ÃMuèúŽlÏöÍß×ÔûÖ^óåKC];%J^¨ÀЏ^Ô>ÜC¦"R¿Í?éÎ' !fESðÚ.à%´?Ý,¾$ã[uZVúÏÁŸù; î‹R½âw ä‡j.ÿååòß@nÆ_Qý{Á* N¬H¨¼kWjh—sê™h/¸`yþr°2¼Ô)wã°J¤ó—J°è‡XZH¦Tq!3 ÎXT;¼Ê%°:Êùtß.K —¶}­¤Ž™aÜ”ÏÍߨ“¿)Z/—¾2K{{„ld {*´„5+á ¼`®Xû5‘ëb oþàÙ„?Ð W;ü)eê~`\QÓØ½û”A>()u&QƒmP5‰{>ÑÌè÷Cî=ƒ×Ïvœµ¢ ¥X!ôe˜¾"–ù.tóâ‰b@Fµ“†ø€Q‹2ÜB1aÄ2éŒÜ2Ó&JÂtg“0…2œ´ípî1á%Ð ¬}$ö¼¨\„)Š zägA¹ÈÿlÛ…|>›³&wmÓPïœÜsÞHBá%Sü^qÅpXÛwǵw×á@ëIYÎÒá°½Ãg탢Öi_ï.縜‹Ì•dHomÕ¯™Ç‚ð‰[õ„PÈTÂùΠ²Þ‘²A”¹ÊÓŸAYÃZ¯!‹ÅÅO50³¹l Ÿ\d®s¦Õ½ŠyB»ù?P­W}Xoϰö«Wêá× X¼"ú—ŒâÚÚ¿¤/ÿ×!>¡¹ÚÇúxïëÏuø ç?„™âL̉|¿æE!Ö±­ËtŽU.3ʧÛãüåoÕ'í endstream endobj 461 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figs/example5.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 481 0 R /BBox [211.306 337.235 382.994 504.765] /Resources << /ProcSet [ /PDF /Text ] /Font << /F11 483 0 R >> >> /Length 613 /Filter /FlateDecode >> stream xÚ­UMo1 ½çWøHÇÎçµ õV±7ÄiQAˆJôÄßç%»ÉÌew¨R['öóËóÇÝ“§ývž¾9­‘%{ êéÉY.ì-vë§ûä®ù¦Ì"™BRަ/ø¯ÑVØ9O–kE|¨\%Òïx+¿%Nbªrµt“ï°¢–_â»AD5®9!FX5“Iåubl1oqÖhx[ÙÏù½…+o„«B‰œB"5x+tÏ‘=Ì ä^™ e’v·…åÊ!•+2DÄà?ÅALl1àoå ª–—@[Ä›"{…ÚÕÄC³]£­°%qð•ÔGPD<ä—i‹··!öª;,³ŒrÇ+ ±¨«Ñ'È<çl¤ÞuBl!eO‚œKæÔÂ3ªct|š7í7LAV¡Î-ço3š¯å:>¹»ƒ{÷ýˆ)Ošèðˆû\2*L‡¯ôùÕ¯×_÷îýá2i[¥Rð¯øïYŸ×Y‡~­j¶ZXÓ‚Ö9åŠQSe¥e¹5ëï̹Çmêb.±Óî¾Ãdh}Žõ•˂ܭ£›yÏ·ƒÕˆ]8ÝãÓê´Zí³ ÒK«ž¤5p2oËEì´»ï°N´fl'=‘ÏOšyÏ·ƒÕˆ]8¯ž´Ú ‚OˆbÊ z½¶R]üepk&²ÖÖáíDÛÆ)T°9Uû‡Öîžû@£ëKî\ÑC/i~hE­ß-Žo—ÆÅÃyÀjðå¤\]dŒ#ݲÛÄõŠõq¿¼;ÕÌÌ÷|µ¶o@c±ÙÛp”Ô–Üwº;©ôàþ!‹„ endstream endobj 475 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figs/example6.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 484 0 R /BBox [212.272 338.941 382.928 503.259] /Resources << /ProcSet [ /PDF /Text ] /Font << /F11 486 0 R >> >> /Length 231 /Filter /FlateDecode >> stream xÚ­ÍJD1 …÷yŠ,U0æ§IÓí€ ³îN\¨ˆffãë›;ˆã€ˆ )zrz¾Ó2®QðvÈÔð˜ŸAÕ(3ÑF§lgÐl†ÎFìßÀ¼¬'B*uMl­îÈ"h#³À–B®º(ìkeäqð„Rd ¹t?xuû&¼àê ×TQÒ®U.Hnæ¯É²×‘댷Gý²§S¯ÜÍ « ®nDpÐ œžjÞ³Sœñþl{þ0­áz:ZùhÕËÉÍÿŸºû‘ÊB\ÿo–4šü™ºÄÊïÔOìþˆý—h* endstream endobj 489 0 obj << /Length 3291 /Filter /FlateDecode >> stream xÚZYoäÆ~÷¯Pô²Àâ’l’MÞvá#I`)H‚lzÈ #9á±² ÿøÔÕ ´®ÙmËkÐT6d¶&ÁhÅT<{– uí`Â(÷ÃhŠP{t-¦ ¿ò.Qìë4¼eèòÚ“•cŸ«áÈDÇKñ¡Ê®íJEJ—ÔKG ´²2uûÈm´:Æ l1¯P“›üTz㑟ϑ[X7ò¶c`+Úƒ§K&—z¿Šö˜)NሉGh{¼=x¬O{&D¢.ŸÔò/›p­xp3dh¤½B¢ {`øYn©l-sÔ0ÖŠ äÚ‹âT¡€èd–¹KuÜÛôÆq 1!C¿!F=µ+Äqy‚ ¸Ç´ÄmÆÑÈ4´,G)WÝf î@Nh=qìýs—)f¢r¨tÐÔ}+ºOÁöËŽÝGµ²úR•#„Ú ëèYY·B«j_;'$ãáwÁ@è51…0já‘Ôr¯´ƒíNä_pÝ0µ´Ì¼j«Âö«c¹stЗ3â^î;»xì=+þEì*8ÀvS°×?‰>;Wx®¦s±s°¶æ{lÍØ{‹@‰Ý¦•Y-Äwp{f²g<©?¶»êñ89Sµ`‚lràiE[·©YzòΆ‡ž«r8º!;¾4G*›j ¦$?­XÂïÉ<íÜãôBôØc[o¸³ÀaÔEÅùrRM’xÓoù´ üdm«Lcëi?Ì'¯VVx¶“Ë-ËÏ€oaŠáŸb0lØŸÌé\Û~ý¸šuÐ6/âœC‘\ßòDp¿:Yó¬@/Iâð«þe35Jòä ­ºª +õÜ'Ê Öä4b´ÝÖ %p ‘-Îs”÷0䩯+Í`ö¦—wü3›Më’›³ éüÓ„(°éÈ[6s6蛾)µrµÊ#¯ùÜpìñu?$ ;f¼§×lƒ!‚ó0†˜¼´-o™NÎèF¶X¤Þñ+è;΄‘°ÌéÒ"ÛŒpƉ›–\s ¡k»¾ õJpÛ&êž38yûBÇ|i$;‹z0:ð<§É:M½ûqßÛÿŽPÂe'~+¦¹Þ­0$JíN¼§LwÂÉGÓ3±‘ûZrj…œÇ{nÏEÕc«±•ïÃbŽAQ¸t…* ¼E^É’s4¿²:ìB —н+íÕ$ŸHJ+Ч'cú——e¢X·²``ªy/ƒJ) ð½¸YïW"øÞt²¯@;ðoÉ©Úz#ï…)ž@Ú"sâÒÀ¥ÍE×jª¢Ëä="à9Aé¶‘Æaì„0¥œ|½¤ÍËÌ>¢La $ÞÎþ‡v2vž·ýv•€''pþ·3%þF؉^â‡*º,ÎüFÍ|OÜ:Œ û1pôÝ·¯“¦¾N’ßÙ¡ /Aö>ªžXkõãÉöî|Æâ~°Ñ³é­ôéÎ éú=gOËgðbsr ¾Ò~tQºXM¥ÝFéH„¨ÕvUÒ)9M4Bš–ð­<–¦mÕUÉIå@÷¼"òÜ\ aË¡ëüˆUó\ýk†DêeoÝK”ºfèGá$ÌíBö3gU\J .¦ e}$ø©/%Ô:'m4&çÚÙ0õÒùà§ù0X2 ¤õíÉ2‘@žÎ]Õ.c„¬ !kAÈt€+~ô<ÔA/ñ9R¯¥új,¢(”¹ƒ,üUœqê(åPóWqpB_Q(;ƒßÅZC°ÑËÑÚÕ xÉ—]’PÕ›»„5èH©Yn(ÊâêcôVÊ䉡SandŒR[¸;w'…Aæ@2ÿØ´tÿX»(¨½s×îk{ßCú;§%qœ9VàŽìbå8þyF’éTª‡¡Û劾r¸àר;/¦²èF’¥ÔB…~#)ŒtºBøØuúÌ`'¢üŸ2ohuV’ü s_Û©LÎÃ.c™*Ô©w6¢*Tƹp‚îÌÉ\ýl¥Ê½*fÑÆ¨*»+ß«í^/|ÂvË*ö¢®ôéþ/.…žª©0þ!–ÜüÓa ºzÊÑŸ«þ¸Œ±‹ÊL0X ŽîØX.©=¡r䙨×.ØõèêìÃÑÝqU÷V,ßã#§¯dî<¢^{»4ÇšJæg™|õú¦:[Ѝ»»¸ŠNúÝ-_.g»Û÷¬§å˜ojóÒŽ/¤ÉïnÓ0â¾Î£[nµçªæÝmÀÝ@È$Õ‹oß‹¬¶N{ënúžý¸ –š{[¿ZÞvªÐc¸ ¿¸ø× ‰ýlN.ï—zÌßyR縡á4=Xæž›uGH™’lJÿ^N{Î7‹Šü,žÂ}8‚ 8ºOx˜‘{œL÷Ô ‰ ¯ÔuR|“¥{ùõص#[QB™bY— laä«u|cÅÜø±íÅʤl dùR¥IGJn. `r-p:I½ÿÖèy\`U÷ž4×·ÚÙƒílS¸ýÜ·I^+“u¦­mpàÀã˨§¯£Þ›Mq]„O—ß.°gøçÂ2‘y°!õ8ð9Ú¦!ÜQ×ꀶê¥à!Šc¾gp„ÀÖ̳”B+  f”ûT˜^}îÕ>2Fr‹O„º#ï¶“»8ô-E Ä=pñ… Õ‹rOã¢ÚT3Z²²)Ìå¢Ç©Ðòì_/ê8è‘ÇéÛ•â‚ ~{\Ùäÿå¯ñ@AÂèW\õž4 ·O}¡çß ãA­—|œ—0ù'üˆýîöÅö¯ì1Î7ßöïnCqå¡óåýеOx@ÁOŽAîÝíŸ>üøÃw»¦KÛ`… è­ÓßâÈöÅÞòë^¼+à/h`Éß?·¨äqNuYl3* ¤n u^Ê*|P§£ÄÑ =ü0ŽÜ¤ ‚ý‚[C.3v¨E| 3Ì'éÒ¯ã`%Óí -Åx¸m^ãýÁͺ1ñU¦^+G©(öþúí÷ÜØ.ÖD’à þ0E1¢©øsDK…XV\ G—Ï”êÀ¿ËºMÌÕüP[Ï}䎷}Ñ‚5ƒÏã¯=@ ”` ¢tÚ_ÙÙMh·¹ç2~y¨W“¾{øêJj‹‘ endstream endobj 494 0 obj << /Length 2769 /Filter /FlateDecode >> stream xÚµ]Û¸ñ=¿ÂX ¨ œQÔç!w@Šä9¤mp·ÀµhúÀ•èµY2$y½_ßù¢,YZ }è‹I ‡Ãá|l7ÁæçWŒ¹õú§l“ûy&›ûý&Kü<Š6Iª}•¤ÜüËûíù¸ 3ïa»ƒß¶î·;)¯0 NB[†žLgŽv°]õ‡-yýR ^4<å ÝVyí—m˜º­E[·Ýw0Ï#ïs ¢º¾…kïÄgÉÉ=" ¦‘Óú9³r" úÛ]œåÞý¡ê·ÿ¾ÿe³S]u§”ŸÇrÕ£5 °¦7̳$‡™e)†³©yþ´ÏÔgYj÷#nï°‡¡«΃‚UÏ(mS?3¤·O.¼Òì¬Å=F0ž·"E”1n«Ç´e@ÙÒÆâ|Ê0èÎÜ6æÛ~â i‡(ЉŽD"Š’%¸ZZTMS UÛÀvRM³¤jy½íóv”B 7†ñâ:÷£Ø¦d0ÑŒ^Õ­Ü Γ›£FÐf£L‰A¦jªæ‘a}‹ëHÇ!  ¶0,{?+õw2ÁõC‡æ Öˆr@3Œ4!íQ$Þ“ùë4ApV}ƒòuzÚ¬#6ëqO„\Äp «ÉR¯íJۢܭçf„ö’e+æ¦Êf4rz\Øbavî…Û@z¹OQ‘³À’s…ëy£û3¾þ)L'AH‡¡' nB7Þv$m˸Óx‡¾´Ãün…Xì§¡ž’ÚWY„"ågQ8#´I…>Hk.P 5ËcTîk˜MÎ9ÙfyŒNüDì 2@ÙoA “΂BÍCmùs©rQ—¸hÎC{4CU˜£ ‚Žæ±©Paxð€ÛŸyÛ´£šÕT¨ædH2Ä 8b$k{IFqìçúFDÝ[p¿‚.â¬EÚn3íµg¼\àÌ bfÝSàRάôw "À¡Ïµí–Â&À†–G±SË;MY’Ųñ —î‹Ð81Í\&Ì·ëZ”Ò…· BzEh;^ª$¢¼Gþ<Œ Mﳆu0Qñ˜XÂØÏr¹îG3دâÐ;uÖ·gmý¥…䡟æ£íÿ6åÚ üÈ¥ÞhW4AÄ2ÃáTÙB aüȦÈó©ÎÈrÓØòpúA¤ùÔ·+þáë,…;]‘îI·±k¼«¯àÊ?ÂãÍü_Mº®ö(^¼Ñ3‚Ûs'—¹M^lFÓ~zkk¿S$Òi6!‚_ ïgí Þû-P€ÜÀ“S'GÙ¾'·I³«ÛÀ|M\Y WKÿïâ žIAÀ¬N¥‡óÈ2äµ¾êÝí(¥ÙdkÅ>¬ðž‚C2£8.² B?Ïõ\¶½³>@Ö‘'®§µì SRõ_û®=2ŠD«a`€&åñäÛºnÑ™/”=K†ŽR"Ì8oîŒ,8ÈtˆðA–ÈjRg5p5^¯†ÞÖû5G æ.z¿Í¯ƒúJ‡â?Wü3Íý4‹~@Ygd{)…3ü¸Týgt{Ð"E3L Z@™X/@.‹‚Ðañ–ÆríÎÉ&a×Û“)*V!+YxŸéx’‰w:H˜ô³„)KÇ\ðáji÷æ\£¬ƒX*û)ºdÊ|"@´4H"À‡m a¸¯ ¿êŸWòeîg×´*Rq¬RíŠçN® `Ó8[‚© 0ÞÍQ)×¾uĮۂUÌÄ´P•â!h–*IœNtkšxÄ9gMYè ÚË“sq zŸHÃàÌEWd/;${*Ý"¬v„öÈÝHx£#†¹ê Ø[) ©{÷˜ËÜhÒØàç… ®Ý”¤õ=’»H7Þ–D±Ÿ@&ÛAi”‡âdoª“íŠ(qÈíÂwS§¸ûqÛ7ÌæótWü鎿ŸÝî?¾{½¾ýµ;öÇ¥‰í?RaS6ü¢ &£P-D‹°ÒÅS’0|PÁÑó"7Ž8£4…µ•’ð“Ó |z÷C ÐõbWfBJÀU_œ9E!:õjt”Ð7_·J½ysë¢9$@ -1 .H:JB‰…@$jJœÉ~b¾´ùZˆ£(ÔΡ’\H•œö>œÜ³@˜Eз+¯#g×dTîO"ϬlÕ,#œ,[ZÚ%}úHG³0ñ,F#0y*•u’=pwÕôƒøÛ¢k½_‰ˆ•Ý­ûù/=n ×=U¥mBÅ8m'Þûá4#aÄðâø<©ûÑ qÞaoÍpî¬ì’»üh¸•X"Pk("WLEqÁŒ±c‚ *9hœÇõ)~K Ÿ$@S‚H˜Hj7£šBGÃx ´'w<@ ï¯Y½í vÆðéÊ–Å× ¬ç/]exÃ&Ç¿;Vô¾TÉ÷_Û®ýƒ ý'RC¸J–uL§ön ú—½‰ëȲŹëF‹D@_ƒ ð”“;–[¸TMé:üÆÞþr¨ f…€7R\U†_û3¿ŽÁaEg­;…ž+Ç”ÁЩA‡@rªYSòrÚj»fÝNœãr‰8aÌo²´+Í’$Iå^`gCõ8a¢|h9ÇNÆ ì“yðâØv=ºä8€ÃE$Jƒú9á¶:Z!JÁF)Ô”n·ún2‘šùŠ⽫V¯q‹2eÕ˜Nr*$/$ô…Rë£dÖ±‚ý}´‰ž¦†º·”½USÔçÒöó3fî0‰èÄW8oCS?Ër‰ë¾z!²c;c²ȵÝ\‹ö*ƒÞ&wÏNçÙ"f¬T}I•öX6ñ…oAªñ4‹=®™ºá¡´eU çø¹(K{Ÿ–yq¯Šø5fðè{©M÷ˆƒó};zš Ù°ìòÈO257‚ Eb­B~¡±Áš­æ9«ZQ˜ÇË~LPô–ÛY*«3ï]ÛüYè d<Šƒ6(ðk¹ åŠ3ệÅo•ßþŠè?¿¿“£é…èáâ—ÎVÖ°WÆ7 žjâÄçºñ”µ¤ÇÆxû&Ãí˜\óÖŠ±vôD W§÷lÚÈ ‹énÞ,>LÉ02©FЄݗ3Óı oÜ÷ŽFpÆÕÓÊY>_hZT˜ùI:>Ëœ:l[ÐÖØÎÖ›—4„x|ìÉp[À“‡)—®wæ’†k¹ ŠZUL¼B bÅ`ݸQ‰¯ƒl®³Æ^Ʀº—™ˆJ[~M;ÔÞ7ÒoWÇ“Ó^ÏÑðÛjÿÀ5/ª¡çz}'ö‚sæf6fµù¿µƒÛRY4Iø?ë E&{* ·“ÂýEû$½-™ÈÀ`’±ÍÅ:ÓR«[®4¹P¢ñlþ?ãÖþ–êߨ4G¯‚ÑVÇyè5DôjÊÒµ-òæÒºçþ[‡ )M!"g·ù¥©|ö ºh˜fr_ÚÓ5£BT2])_xêŠ9ÂfÐÞ`Íóï¬ÔTˆ¾ôGîÖ߯¤?MF)gøÏU Ä˜ðn¦”<Öà„Meeùâ “ö#Ì#Ï NCg‡â°Òl¦ G5¦A[Ûk33Õ½åán'ÔgÞ2ehÚ>wÒA‡~öRýRëKD&|Îô¤~¢ ãÆ?oryïTÙlÇûûWÿ‹Zö- endstream endobj 368 0 obj << /Type /ObjStm /N 100 /First 876 /Length 2355 /Filter /FlateDecode >> stream xÚíZYoG~ç¯èGûeú¨êka°¥ub Á±Í® JÅÌÚ¤–¤6öþúýªIZsâTâ<, ÎôQÝ]]õÕÑ=¢@Ê( ?ü³¢HÊ1ÞAÊ?£¼•·WÁ;¢ )•®èäT"Q²*K=±²†¤•µó¦ ¬g)¬U” žPq RM6Òå•sX’2Ø ˜Ø €U¢_–øpì+Ga”cœ 衜•‹.£ƒ¶…ý¸l8Ä›:…äFl°„q-Q‘Å‚l°_¼ßD˜2ƒb¼Á¹ìŽ ö †=DÁVÄÄQ±+òñ#v²MŒ`ǘ“Ba#Q +ÝNXÕc[ü&c †‚—LÁ#vÄ‘114À1¡šÂ¦QkÞ8Ð1CA„.pâ¶ÌPŸgÊIù@BP€˜IùÈeaR‰(}‚üÙC³ÒeT l’¡¢@Âôd'Ð, dÊ(d™Ù² > †>C™T0T2ä‰-A,-@.›Œ2DØÅhDYTôe “H-)ZÌŒáÙÊ„Q%ƒé J#ë%‡Y9Aíì°„ŸdV“Ç:œDË"x+EðÂYJ<°)Al ŒgL0¸ÌÖª# "º,àH23Zœ,B'¢¯rQ9š‹  £ŒÇèÅ‹‘>W,Lî'¥þÇ?ÒÄÓû.Gß|³•&Åʱ쩢Ü!}=›.Õ‹J¿†¹:eÌkÁsZ—ÅØ€«u…­› ðÎ×ZUœØÛô`f¦MSó† $(F*`Gÿ8Ÿ]¿­—êBéÏ_+ý®þ´T_8}÷ù®FÇø—z¤ÏÀu=].`1…™‘þ©^Ìîç×õ¢x•ÒôC}3¿š}RÂc°¢ow‰eÆsŒ…ù¥ÝËét†©.Š»^Ä]É»³t¡é·÷WËRÿ~2ý×H¿šÍoêyYÂ^êïô}v!¢7—ÂÔ5vc]¨¦bc¬ œe‹7ÀróÝË¢·J;{7SPß³ÅýÕƒ'³i•*z.ây^€Í*A;ÖSeƒ@ËVÞ[q¥•un?/ÜäEpi?[4pÿ ‹Ãì"l€ì"MT¶PåŠÏíáõhå>ŽâA8ZO6¯ÇËÙ\={ƒe pH¬pts]wZ )Äz>^ÖêÙù_|…5ÖY¸Ê øavÓé# ¯Ïöy{3"»¤ÑB¢“ùbyö~<‡OéïÇÊß'7Ë÷ù©Ê çõâz>¹æ)­mèÕxQÍP6«–¿N¯g7“é/%7ö=Œ8ÞN°Ó+ч NÆ"Iƒ<‘*‰ÕåPÊ©´¯h¢‡2ŠBB‚”¼”òÖå™›cÊ3”À”¤óÞ”Ù¯~›2™‡ú†Nê¿$cÖ}_ÆZW!0%D‰ÎÂëzVŽ~›À}Oà¶'ðÐø¦†6¹½­HÁîE´ú[DÖïñLúÒ(§ïDâúóå ‚×//ÿ@PÛø§uþ?¨ÿXPgÿµ@]"S½R+zQH•~/_!êȶZ¯ä$–ýü·«_%rË 7‘ŠÅu^÷棜Â)Aë=Ñï‘ÉSÎO™49N6,™*±Î` È…Eª)Ù­‰Êw·³ÙËÕíŒ º‘ãÝ>=·iœœQ*É[÷Ñ9¤PvÝ:nª¥àíd§‰VÞÊÔw'ÚrÂõ§a%õ±ŽIŠhâuÄýIã:3èÜ^:‚öä%¡-]ì:'µR7™ûG£c¥o{Ç9Í‘>Ûíéé¼¾Fw=oòFã–8NƹèœMD½8Žump޽=49õ®==5‚ç:üô ;Ó ,ìB'°È úàHn¹ɹÉKòÛr vÔã$ö8áÁ!βžÝÕÓ+€²^‹iÞé[`BßNþS_>¡šqýtmÕG&s šsÜ™$y²)ŸMUnu*×*“c¤PM—qXÝ´ćuK‚ŽxMÓ¤_ÑÀ†*¹xËåI_VYõÆel)—ç6]ç®®ÉuuMf°®sÔc}¥¯‘ÌX]¯=Ñ¿®’ýQOõLÒ`b®z©ï;©Žx5»ÿøÝ¢±ˆ«!®ö(wX„‚0(—|U {ˆÅ§:éìoM×Ùºoj¸á~6„X³É†{’¥Øó±ä¿’uÁóã#k‘9Ÿ4>ÎMkš¶2ÒúòÜ‚x$×ï ž81ñMo`›§7È‘§,Ï ÇQÐb–ㇵbŸÎ ÏåTOIŽ>•Ü¿`Hì›úŒ¤ùú6kfßÛ›íí-¾7N­IåËÎT|d á4دpÒwóÉÇzXøX;9Ié‹*ôbØ@Îz6­õò·Ù“F,;€—hÔI­¨ãš8ƒ6äŠ[#Êÿ>ȃÅùs•ãs¡ŒÖËE@´Ò²Štrýz$FýöšÁX*ØÑ6Oàûœ¤'Ãï§BÔgÃ`–“¾jÀ3è%ôhô'ýYÿ·‹(ì„-$PÁ¹`/Tk¶Ë®ä#ÂIÇ»öÑ¡ [g½æ!°?Û§vÈ|ˆ’¨ÈG9ÚTyâ“âgèŸQÂ×:£À_øÝn„M^¿V¼j ºv¤Çá™ãÚôü)=/@óH¾Oþù .Roú+^0¹(——”*¹kÆà SÉÜ™Ä {/¾7qFKHâ{s4’éCæ9»øîÀ‚&鋾Эr{xZƘâÝ¡=³´$—$ß)sI¯üoA’ËÙÆÓ<˃­\ßzŒ ¿g¼81t¿ÝxÑ– ΡûùÁŠöÓIh Û¼k‡Î‘ìÔÐò‡MúȇéÖ·èçØ÷‡r͈3b0'¹ÀØ¿$‹ák¹À¸Ãžpþ†Øu´Ý åõ§™œß“º¾´5ZlD•þ„Ñ"ù¢…ap;W¦Èa­ç]†Ú2Á–¡î0ÇŽ 7 ½o¨Yþ»ic¨¶|p:ÉRSï{¿ü'Ζ*rJû¿"µi¹ÎîÐ9N•å§ü_‰Ž˜^îgzÙ+¼< eêÜñûÊsÞOç|¹YþŸI! endstream endobj 501 0 obj << /Length 4057 /Filter /FlateDecode >> stream xÚ}ÙŽã6ò}¾Â˜‡éVtP×"0“̳H²A¦7’}`Ûì¶2²dˆòôx‘ߺHQ¶œ[*‹ÅbÝT¼zZÅ«o_ÄòÿúþÅo«UÕEZ¬îWeº*Ê,JJxÛ®~_ßïÌÍ]¦Šõh>üd›ÿ ìt“–ëþÈ/››´Zïú›;øë­`<ý^æ;Bï„"oGk~j:$0šáQodð8oþ{ÿ¯/Þ¦uÀcšåQ\•°bñ$S­nòdýd^2~¸¥,ŽJ•;ì[$]¯{¿¬u·1°V"ëâ=è í¼Df·ƒé—Œ%JE™ÊÜRãsÉÍJbo¾ºK’¨ÎEÌö´ÇÝ?°ôÚfÃËèqš‡ãh,²ÇëNïM{’¥Ëpé4@.~i8-:§‹õàÕÊË$ü¼3ƒYØM–FUâ1½„/I¦**j¿ô^,‹kìͪ(ÏÏn‰j–DY•ŒÊñèn»@6-¢ ¸·?fÜì. qTWù¥ˆçfÄ «»¬ÊAk9¥<ÜZZ)ÜügëNþy14‡PyÕž1€q=låíæ.Yxä§Ö!ìŒq›ÑÍ‚×'¦`Í86Ý# 9%æ. ÆJg‹fY‘YâðF '{ýÔ5'†>ölmÄGD[NTT+5ßð;œ[æk½Ý6cÓw¸@»»IÖfáÊ8нd¿lõ©?Ž_-è ŠòÊ›‰iÍÞ0;¼Z#«Ž;4E|²#ŠDEBbØ`¶`´‰êŒuè†Z\Ì ³ÉaJÏÿÎáKÿx6ÓƒÙˆ"$iåe9—Ëaèy‰~@± ¾'±øxÐüX7wy±þˆõZp’“úÒhÀ}0ÇîuÛ’KL’µŒ€‘Güg/Š´ƒ=ÒtËSaÉ”“¨š<æ#™2¸’E[Î oG¨ŠY)Aw8à$zlü‚NVhž‘—6“•lB¡òꑟì®?¶[~~˜ÂAæ=lætæh²è¬èŠEæJEÌ-Ĉ¸ŠÒªry×AœÁÅ‹ÒE²¢€¥A ý§QFà˽¸ŽÝF´?SùÄ™ ·a£#'r‹P@£"•¥s¡ô¬$;0Á Zb–yÁjGÛò3á|dÍÈÛðÃs³…ƒ GR•LMcth 6DøGU9™òØŒ`|#Xà‚9pêU²hÎY™Í½t<ÃÁÙÉÿ!œøžÆ3Pñ§¥“M ©zrõÈÙ‚'Q:é1¸!ÛlÍÙ"8µþí\$¥20°A)£ßÄð¿rUÅE5?H/eæƒ$Ï ‚ǦÙ/3ø€ç÷$8GK>ÝâR.‘FYêø 8`L*¿<þÿJàõxÞèB5ÄQUŸë2/M)éJàÐë¹!T±Â?êÅðÙØþù쑸Vq¦üìNÊjý+WET—YŹøŸd•F±JûÕBü€Ì¼L€tO«åQ)À%K½ñpµ À¿ÞÀX9åj…§¦[~%Ñ”ep:³t+4ÆΗDíaÑ8ò”¦¸bÕ<Š!@´³ »€Íov§§,º¼’iÝ¥iñ™;Þì­]tûaF 9Ñ×ýþ‰'…—jý=NÑÐ1à½æ¨OfhÀt —¼¨xý½&vOŒr É¦?¬@;Þò³Jw–‰dIÉ;-)5ÁW£mCîoàw á8 $.H™aD =ðæõ“}]$5Y¢|RªËSÉÄ`d~(‰s0Ò6Vpø?6Cß¹µ<ÂR,“IÆÊ=è Ø½,§qé­Lr+HtJÎrDÇHÏX]/lüy´#fu¸ÛxîØzÐOƒ>ì¬ (y¼¬ÍeI99{Êž¯øzˆ ¹ZPg˧Ï9ZGz.v<ß" ŠÆã–Ýñí¬P"µÂɼ8@cãºÒˆû‚<¤Ìpì„á^Vxµú £ðò艡ä«L¦ÌÑ)3FwسuÕœ:ùJÞÜBžì£Ày¢êäÎîþRòu•™÷_šÇGXð«Åª-)²kb¿e/ΩeÆ!Ë…–}oÂL–EU–^†Þ=–~ª¨Œ½4ÝßE2ðBå”üܘçÿ^2/cP+V,ì”ÜZ UZf˜YAR[ñ”2JÁ\  ¦<Ge5£ÿ²3Ès•¯÷ë?€%r@® r$0òã7où¼»qkQ>€>7”qâ¤ožô­F×d™rÞ KŽÑ™¶ùp#޼âålÉO.'ò¶ž»¯çt*ˆÓ y˜Ú¨tý–R›SÞ0g…ìCCöŠ‚Üó`%I„76Ó3xÔôg~Ó<(5Q{zâd¹$¿Öñ ¸[FnØ¢€ÖÐèîéØj—\—ÊU÷çû#¥}‘¢mú–s,ŸºÐóGbJ²±Ñ’²c2’•¡*.ÅÂ:L}÷ÚoVhİd§Ö6œ?dâÀàÛ;Æq¼ðãNDjʲœ³LòU'GDöœ¨œ7G:Ü’…µ…PdùSg8#Ð-8åD ç(å¤Ô¦˜fªõó® Áì§u˜šCvƒzxhÀ%'f› úXf¸î1‰VZ@…3 ¤!uF 6l52ó±ÁùĈTàÂ?Xå-?ÙµâÉO¦ p%–²åÀŸ5Gã©0²—”›p5Å xé;R;@n¥»ùA( ·wÁ„- ¨Íî–KiÞÙ MR Þ{(Èaç=pÄsàH(èãóh°0DüçÕ#þ3…Wàæ,?jlpá ½lHᔊ§”|<†GD8»E—c¹úh,–9RãdkWÍø"i(¸ “‡ËDïËJR,©L:3˜Ô/ŸÎl$M‡Í^YKRÖ’)ž«Ð1¸ 4I-êùlj«9÷%ª~2ç®Q™,#Y¿qF{Ýž. ØE,í¶ïž,CÐOaÑ|ÒÜH@ *|hE?‰!X½„·WÓP冘ù‰`~q±Áq%€ÏÔ¿èÀ¢4i_* ù—fàÇÆíï™G»¤š`E*Jñ)%Á@Rxp§$™oÌò{ó$èNÁ‹‹ÊØCÚÒÑd\M õ©EЍš¡â•ðÔÁPoÜCQc¨×–•@À•ä”)øþ!´”M¸aG¿´ùÙnþ’(”—A KÖ*8šåTcø‰¶È=U7.òDý‘T8÷Žià7q„ä0ÌÖÑÆ‘$_¿%[N«ƒÙu°¡!®`Cýj"¼ä`©¸¡«’lª$øŠ§ ŽÏ7aة䬇Æ1!cËsZNÍ5ŽKè•ðœ8l ì‘[8ÓrSÏ­o[á³Çò\Ï\÷j÷(\¢ˆA;Æ#Üi^së`$v|“-†Ìò)žÅC½?´Îp°…_bM:~fy÷-ùY )³?Œ"#Z‹X‹‹×¿ ‚½4»vž;ñU:¾®ú+¹íC¹•©kz€ ˜GMA¡gAx_¤ÛÃNG/A§`ƒ?ôÂŽríX^ë‚'u•ˆ¯¢~ Ó¬3XçÄ17N×~\¬Sj¨ÃÊl¡™‹RÑMºdêìéFëJö™ÅQšç•WyÜQâó~2 u‰%5G½áröB;p¬a_ÖŸa² àáü„ säC€PõCOyÑàº;ž¨Bn\ sV Ö?á_/¹4f(? Aâ@Žâitk{ç-¤/ )ÀvrR•èĆ™»øßS5¯^Å^žù4·õ ·þR|™ëpšy͉2g¨Î=öø[Ú§£î“2Cާv‚³\ªNdcìÒë$h6ÌçýˆóÀŠÿsàwf&øÆÇl$ÃÑê$Ø]†ÿ9¦ãgèIZžkPçìÔ‹’n4Bǯ?Ë+–œ¹„e¼éøŸçÂCkÇâeOÍtóÄg²¦æIJÖéý¤®0:?Ì„o­àßšb)Þ„uîÁGV¢š/¬—ʈ\Õ³Ö,äyÂ9w°Óbuë7s“½•îŽç2µþZü6 ºøÓ Bª=€ü2¸›óžÑ^fAl¡œ^ Xïõ,UÀ"¹›TºËÛëñ|EšÒ7­¾å÷©1/» ª²Å6ÈL8Çîì8º2ü¼Y- œ’¶J… –V°• ™Õ¥kߨ©_£€1Ë­Û6[Rwº^`ùv›9æÓˆn¢v7¨‡ƒË~ú˜½çXlpÏ—€—{Ïd’]´…”ûåZW²¡êJkbZ%²#s_Dh»ÏF†t†¯^ápªœ%dßO0ArÙÂÜ®* ôŠŠ'¾ä‰Ž!þÓ‹ä¬{cî“#$lö‹™¾>Hñ§©zrGT¤*¬š†]Q_Ò¾-?ÒžàÕB@o“8+ønÐm‰+»sÅB~>Ñz5·¿€ï1pž¬üê ~úöÅêwšÿtn×<ŽŸ=íçÎÇVЊJ¯¤ÄsSÎÄA«x 9HÿI;ÆW”y<9ÙŽ…Ç‹[ÉóÉIr”Åާ]˜×‡I=ಘó˜"b)Öjgnýr‡0¹¢ºpêÄ=†¢…hvðTAúÙâÆ?„OU¾]ùž,ÉÒHÕ¾CýžŽãÕ œj;~þ¶À!áVÓõ÷dI[gtõ(¼qñ²šÿ°1phg`‹æÊ~ð‚Ã÷C1¿XüÎì.ÍŠ(NÏnö˜ï‰_ìâ_á·Š£$hÞ/uJ£"õýýû›²\ó7#ÄžYü¤G¥>1Þ³¶&¼Â+ù8›óì2ÇØRcÈ _Ê÷/ªæÌ.vMžK¤i¦:Õ)4 J @¢dP¾r^ƒúíÝì$ \,¬~Ø bÈdž"6$¸LqÝÛžØQ©7MÁª=ZqмR„‚Q†ø;Dn¨yUäîEa¿ Ü2f¯_ÿ1~}) Ð|q¯P}t¾å~Yn!’„ ÎÚ‰wêx»›Þ¢†ÈÖŸX¾/¸¤ÅܵË)‚mdÐExüpp…:H¹›Êí³Jß¿Œ»þ(ÍylŸ+4ÏxÞ5£¬‚ŸvA¦ÚΚ”Áç2î¾ão¾ŠÃÖTžýÙ<•ð‰à¦Û‰Jà2¥ìvAQÏô1y?ˆtØËÁ ðÍn„p:ŠHx°Ú2aSC¡…Ü*üPÂ5#ŸwõĪtU“Q½~~÷æ¯bkÿ+å$̱¤Ð±\1p¿žì´Û^Rè\>0#/à.YHãœÃ…áëecŸ@$\†løã†-¿¹$*¾r©{fü”@û‹Ü~6vʯyŒRÊàîg íi\Ò¥;{&ÆK&õ éÍý‹ÿþ7Â) endstream endobj 507 0 obj << /Length 1635 /Filter /FlateDecode >> stream xÚÅWKÛ6¾ï¯|’X+ê­" Aš`{jí¡h{ -ÚbW]QÞÿ}f8C[~l‘žzÉáÌpž©8Øqðå.æñãÓÝý礄ˆêlp™’›@¦ôÂdô‹– ¿pÝJÅC[þ%„K¥†Äu3H¾†³—⣠IîC[’pN†0¶zë’Koxn½Ž;ÈÞvÀw?˜Ñ9OÏéóçØ×™K9Ýø¶¡ÍäÙ#áF¨¤‡ÆFˆL×E1é1÷2¢¢Ó^Mv|FH(½r¯Å”àP~…€;ÝŽ{s~ߣ‡áÙÞF$m@³Ž%~´)'бȢ¬BdRÂÁ{ϧÁI9PÜâ(+γ÷ÞŽfG\f½†ß›‡YÅùQ1¼8f‚ÕàsŠôݸU 7•Õ·•tze‹[æÝû}¸ÆbQ®ƒGN¶¿²³t¥ßŸ®3åÞê&4ÜŽƒy†ÌÄìÝžC௼ÕÉÜ©þa–¾œ3çÇ-'ò’Þ]ÐÅÅÆ[ôö_®}o}Só¯£ï^|Èÿ·˜ÿôt÷Ïþ7ƪ,ÊëÞóe$â,Xmïî·BŸÌݯô«?5¬*ÔeT”™õ#‡±÷¨‚‰À?´3lû?ššŒ:kê3ÒYWc–’~ŠÅåõBžÄ>Á~ÂÃõ”ÕÛăiE)¢8Îáå’DI’Ñ9I|&YúµT€º endstream endobj 504 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figs/lingrad1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 509 0 R /BBox [0.5 0.5 399.5 199.5] /Resources << /ProcSet [ /PDF ] /Shading << /Grad16 510 0 R >>/ExtGState << /alpha1000 << /CA 1 /ca 1 >> >>>> /Length 110 /Filter /FlateDecode >> stream xÚM1 €0Ûï™]ìQ|àVœEÁ"UP¿oÚ‚³p¹„ã’tPlrr?b`È}+Š•Pìb›†2!Þ{ âh´4ÆÿÊ€CG! Mê'Æ#sWÜ󎲽¦EkÜîgP,u&C endstream endobj 515 0 obj << /Length 592 /Filter /FlateDecode >> stream xÚ¥UMÓ0½çWX9¥q3¶óa´] ‹–RoÀ!Û¤m´I½$†eÿ=“ŒSšÒ.N3OfÞø=;Û°ˆ½ó"g_/½ùH™æ: [®™\ `I*9¤)اળæaÆ"ÌzÝ•váG>­W¦6íÂZEÎøóëÙ—å{lp?S‡ÇÓJѤWŠÏV‚‹…q•›oÚ¼¨Êræ7ÙÁyЀVsPôÁ­…RÊ౪ëÞSAmf¡Hsï–ÕýLdAIiv[u/ûÊûcíÛ¥÷Õt#,S<Öš©¾a¦Ùªñæ· öÆx‰¨C\YµRLjà™Ò„ëõ[™¦1;Bò­s Ìšl?iîP»±{¨¶£íª£-kh]”Ÿ#P;WdSç]÷DwX‚ºû»‰Ô*œUN÷j$ƒ˜ÛåM¹ð±YíøµO 1ö”›¶è~¨œjëbª·™ù$…SJ¸Tèð¿ò<#ó‰<“”çc{@#¹½>$¢ ç´5PŽv墘A‹ÜNA›Xgè-ôAsHO2~h‹³HÕôH<}Þ‹ˆ:ãÚ[¶;–…d]ÆÞ-’.Óƒü>ˆ­ /Ç<šá6fÁ*·Õp0ô¸-Ûò á87~ŽW¤¸L¬Ä<“éT®¹Ý‹MnÛêÇ—§d'GiF{Ç)b¯È/}Œ\;ÍŸ•*d§Å}*Z>óôõð¯ÿü8{q<Žñq’ô8Mþ&‡Ä‹T#ó)“’Ç©;0“nØå'×ÙÛ endstream endobj 511 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figs/radgrad1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 517 0 R /BBox [0.5 0.5 399.5 199.5] /Resources << /ProcSet [ /PDF ] /Shading << /Grad16 518 0 R >>/ExtGState << /alpha1000 << /CA 1 /ca 1 >> >>>> /Length 110 /Filter /FlateDecode >> stream xÚM1 €0Ûï™]ìQ|àVœEÁ"UP¿oÚ‚³p¹„ã’tPlrr?b`È}+Š•Pìb›†2!Þ{ âh´4ÆÿÊ€CG! Mê'Æ#sWÜ󎲽¦EkÜîgP,u&C endstream endobj 512 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figs/radgrad2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 519 0 R /BBox [0.5 0.5 199.5 199.5] /Resources << /ProcSet [ /PDF ] /Shading << /Grad16 520 0 R >>/ExtGState << /alpha1000 << /CA 1 /ca 1 >> >>>> /Length 149 /Filter /FlateDecode >> stream xÚM±Â0 DwÅÍ ÁnBJ¿ [a`FA¢B-RËÀïc'-tpÞ%¾sdÆ ‚'Mz~ˆÁÊsK‚‡–`$iåP¨5Ø{f ud4š‡a¶”©ªqÇÊÿ¹t‰jvRǘo!þL&Õ“HÅjY¹ô‰¶~°Vò®;¼àa;ùò±5FìÛùv—ˆwNø+²2— endstream endobj 523 0 obj << /Length 2009 /Filter /FlateDecode >> stream xÚ­]ã4ðý~EUÔJ4;ß' ÄÝ „‚ q<¸Û†Mã*vo·TýïÌxì4is{ð’ÌŒÇãñx¾ìp²™„“w¯B÷ÿæáÕÝÛ|REÊÓÉÃz’§AÇ“4‹–¥œü1ûQµ;Q×Çy;˜/¢(šç<Ÿ©!OsžR—„–ò}ÈâF&ðÏôq‡S–óN¬i¬V„>VÍÆQªGdÎÝÔBë#‘– AUC£N•–¨Ú z¬¥[v+¥y=ÿóáûnËþ÷–g½/Xlw¾`@ãnç_V{© Hû ELXÄ)IâX6­(+Ù˜ù"áɬ;y?E-§D0Ç=GxÒJ©¶Ô÷ÓEL8 éÏé~,Ÿö¿Z[µ'6µ^kiî§a·F­Úû)sBÜozG²ÂOÊaC9W:y9‹1¥î¼E†ky“‚',цÖz&á3|üº¦^£ã™J5`,K¨ {Á"{a¶$a]Õõe^'w6_y㎛|Œ*é÷å.ñÒöiƒ}Žk—¹¸Õ0CçŽ÷ak×ͺ @˜‚ G_‰†Hf+D!æf´, ª.Œ”|«Ãf`ü Œ(,É@U‘=yžq˜€®VÇ_5ŠŒR ò壽 a f¤|ö„•/‡¹ÕÔ.þ$çD”áAçà†Ë_ÄÄÙ#XFd9ÆRe ›º:V¹Ã ²œYrÕZ`}†4Òê³óy´³½,yÕ Œ¨øÆÙ[¶‚$n܆ìð ´·UwíYö£u0dÁªé]eœm©fÄv”Iþ Nñ®)Ÿ´k#ŸVj·ƒ$vêì+›Ã®:[|½TÏøYωFþ'‹vN–c {åYL¡™gÔÆXà[ÈjKYÀbkå«a-MµrìrxTXTXÈØ…µj´gw=……áx Zaéë3ÇBïÅêQläi_zæ¨5ÊU1Tê²×Eü¼¬6+ù§ÔKÇÕÛ´R6}ùyÄ¡ Ò« [5ýw¯0¾¼{ñ"¥3çEwhm°¹A¸„[ÎÆÑ/Aì6Ñ?5„¸ZJ|>5YY¾“¶˜pì—^©7W$®ñòÙ\á­:Žøåa©.þ‡>òxc7‚«×{zÁyá±ìò<Íl[=ßOG½®ˆî g/›û)h°À‘àž®%Q žö_ŒÐÇŒ†ëîè·€¶×Ñ<Ý®p+Ì©¯ç,n'm¯Fpï.8{éÙèúÍlXßÇ,ûñæ©paÄú‰|¦8ØîÞÙT·Q¹ûÜŠSÏÎÂW+«äéöÐϧe}çÓQÖµz:Ÿûf|öMÜ ‚ù‹­Dχ¯˜,›À=J£©œf¼yxõ!‘íi endstream endobj 527 0 obj << /Length 2118 /Filter /FlateDecode >> stream xÚÅXëoã6ÿ¾…`ùºVô~ÝÛ»ö°‡¢(öôÃm?Ðmñ¢D¹‰/Èÿ~ó’mÙJvÑ/ˆ‡Ã™áo†ô»…·øçO¾?ܽ¹ý)[änžÉân»È7¢E’†®Ÿ¥XüÇù¥ôrƾ3”ÒØ[jN»=ü~÷¯ÛŸ‚ô\Zêf‘+‘œÏ~™NÛC½n«§FÕúùÉ}{ß­©ªç§N7Ï,æ\'”Š“£˜M[ת)Üå*Ê3çãÀ ¨ªj—AæU\aê|ì–Ààhîº(jM´¶bâ¶okn™Æš‚X3G1iзZ˜ÇÎõf@uãĹ+…wV¬±ü­Õ®1Ÿ=?Òº¾e¥Ú~0m›=ÈZ­|KQW?®Jmv% h³žì2æ]’Ç¢Ñ—ÐØìû^7ÌO„m{ÞSÿ(b j‚$ÏyX®|§\úh3ßé¹¼F&ÓÆ"r9.ÉœÏ^ì}h `Û‹EÈ<)™'eó ±l÷UÁíõÑGÐ)´5»FËÐОXÀ sFs…L°ù ¹+r¬ùŸ·mÏ Å#g&"™¨S[Óß .ì̧EýˆÓdå 3Š(zŒ\ÓìxL?ªº«ô;î=,iÔîu¡1.}!e½¯*-:pL„g&:md]í…°«”µnÛ®Ô½þ•>BÃø½8Ò«ã¦)ò€7õÝ®W…Ñ (±ƒGûýÍ¢ô† áò¨‘´iÛ¾°ïoV÷}¿¼ÉÇÏn¾g‹znH0±èwvÀÃ|ívkõðþÆ;.Rµýû_¤Èçæöû¹˜˜‘ãOå\(5ÊYÍju;Úä…ÅÏíÅNxm£JžQ«¡7 ‘ëEs»¦ËNgÁ5Bµ­>G?›wÌUŸ™åÒ*¸‡WÍÆ†™7Z×kU¯+ý²0Çz‹ŸJ­ue]›'ìöÊX½nŸ<7ÖÏD+¡/ÚŽ† uý4ÍTì˜ç'úÁßkÚO4„£“ @¦ ðìÀvÂÀ }áÛù>¬ù¡øc™~6„`)jÓ™=‰ %FAèf~("\_„ü»T=ÌÿYAâ¦àµeÒƒÁ0ÂÖaú$ûëY!˜jÈ Ð®³2ú&sÜù­FHÈ9@<©A¹ù˜HqõØí!7ô”%,󙦸+: u€Ù¬",àa ¹s Ž‘°alþƒ`²1ÇT†cèVä-•°µQ›¶–Û#—mkÍóái¤œM—FÅŒ!As$ÿAûjîˉ¡;‡k(r´eâ®ÃCçç½€¹Ýô¦×ùyÅÄn˜„cÅ´ï–Pü`ÚU­ì ûko&0!ù‡RI*©Õ=™ÕŽéÆHK+ÈYè¸rrÏMÃð:Õe~6–b=öÒÑÃ8@ÖI †F“³s,“®˜Ûc¹±—:óÆ\”}µ¹ÌÆ#'IgCÙÓîX¶`m(—bíÁeA ¶…3j~áudå`¿.|W¸8ÒÄ oßþ w¦ùØé_&®uÍS€•£' Î‘îCñš#ÏÛ·?6Å«2³ÐM²óýŸ•8V°b“+s¿ÃPbÙØ¯¬ ¼$œ–ó{¾¿ÄÛè¹Vb8‡¬X®×OŸžgç}ÙNà²ìBýOû¦9ÖeǪÑb âá[úŽÔŽÊ~•Ηðy L4|)í»óƒ*ÙþåØ>å¡3­áÒ«Í€ðæÓݯkž¸iã(†5¬:Áèif-\–(á÷Pi[j=‡@A»‘NOçªëˆ4þ#¸ÆfÂ5vÇ. IžÐeáŽÀ•À=T«&ÖÆXF!(úÝÀ»@!d~Ô…D=í–\Çà<âlÓ èZ ˜y¡Þ¿¬ÙGàbXOÇâ5z½ú¿§Mÿºx’¢p·¤»ý› s¿2Ä6pŠŠ‚ Í/ÆEž1ü?¹ïz^tDFYZÉ ú”ß!dÒ(¡ìC EAáþ/à9W@®Øùíý(‡è!¾#\ì鬊W1`-I|YNÞxyLö°*Vt‘çSE^ R ðÅÊ4¨veü@€´Ñ‡Ø†=Ø‹ù€€Â759sµ<¦ÕKãS„øÌûŽ‚¹ w¾tWŽüèz% ÑJ~xbB½èP û¤·ôV€œx”ÍVfó¬ð¨“UÁU¸#åÝ  #VÈ4¯žÀBDRB “…16·3*Öé¦Ò7xnÝ—JîÔ ât,¹)¹[æ‘Ó›áXvÃù…ßÑp·_*˜? ¦¤)ÍA ñí=•7 4ãרtݰù°K—ûTj딢=N'oVÐKùU„1r‰£J4NJ5»=d\îqa™òÛŒ‘·H<³Ì©[;0½€¤éIîqýY3·pˤD‚/BVWä~+x =€º? ±a"(ƒ.Á` ½1KypnU!ÓÎLw„:ÐãZøªâóëR8H¾[’öžÇ4¡÷Eâ•UÙvv“ò*f –+¨¾ÙUp±Ãí iª2Qfúû7ß •So¼@á â­ •°É."¡ªa½,ÇU;ŒzS©^Û‘.‹×z(õ ;Ê'ÔŒG¸.Ï×f§γ h$ü`#/_iþqyûQòdˆ8+¸½—Üùp> stream xÚ½Y[ÛÆ~ϯüb °h9äAÀµw×.ºp7hŠ$\j´b—"^¼YEÿzÏm(RËMÜí‹8sæÌíÌ9ß¹(XÝ®‚ÕÛ/ùþáú‹——a²RÊÏâ8\]ïV&\%&ò•IV×ÛÕ^êGëRaì]¯3íµÍpSÙn߬7Qè5}YßBËÄ^¿·Üø°þéú//#½2~f…‹ª8ñR«Ð7@§u_1Û|óØ¢hµ™°]#¬¤`6ГØ0ýÂѵYMÈßoЦ^GÊû„?¶íJèÒFé*󳶃m6p;? BhÀõ2žúî¸Þ„©‡·Hc—Þ'ü±mß!5ñzûKÏãÍÍzÇÞßmáÆvmsà1EÙróCS¸Ù5C[Xæmí±µ¥-ú¼ÇCò̆¿9NlfζÏåE.¤9=´ùlŸÊ¶©åœ²Â§u pЖ9è‘HÁLn*î«t¼ã»«‹¯®/¾óîãci$>JXmwM+÷èú¼íåeA,‰fæbqz° †Žc‡4šjŒ ½]^VøðÛæuWösWÞÊ û(hM}Ê”œÍÿ4‡; ò ÐFEsLâÓCgŠL½Á©ܮؼš;‰`‡þ4—„±tÓªAnÛÛ²;V9/Ž×ß2yÜÚÉÐä8hÚɈq#[>–íêç=S&Àv¶ø¦Ð8;l¡PtŠeXbJ HàDÂ~ŠÉiNæÝ6ÌN'Û,à<Øpè¥[ÐøÚÀmrãä2¹ÈÉŠ†¼ª¾ÄíÆpÏ}Ïì  8(vßq»«xµ¢¾òÞápô‘°±ÁÜÐøq–ºhQK´ø]]tkp0!¢b>2,ÞØu fš%çϘ\ÀP7º›–cu 9ÈGÞѹMOª{è›@ábÈ€þÊÁjª¦¾z÷mIa|ÙÃü,Íàþ)9S‚ühæ™Ä®À°°ŠÓANŸðûÝõå&妭 öB”cÑ C"‘³›S 0ÞÔÕ·öù)¶eŠ‹˜ Gj7´nœÃ0[¾è£FŠe]¼œ×níz[³ÊŽg±žŽT^‘rfÑC+ÅØ}À¸Äƒ£ëX")Nj‚ܤ‡ÈÌú-¬—xiˆüE„H^Y ‘öŽh=[m’Åé“B¡ÑôÌ·z2É+Hó¶"èRün.òìáy+þv‰²Œê¿Dæ $ÒO Q"<ƒ`áNiÈã"MìÛu ©êa Ûg‘x ‡6n:Æ€œLÞo9éÑ©#Z¿ip£b€Œ¡ŸnÝqo ѼíožE~¢•[c[æ/ÊÈ‘B¤;ebÆr&°ÁÅc©@ûAÆ›Dê±+SY@6àÁÓ¹“ð쎘:9Û»‡'¢8žëLƒãÃHÞÓY÷øÄC†:‡`JvÅfOQÁËéÖ‘žžé)Ô%¤$_£®#<è§ÂD\0¸CÇe%ê‹C¦8$à )‡®+ñixAþ.F\uè迹>èä.TL‹êðûÈ™ Ñ]ø88ÂÞñ»›pÑ.¦D~À¹ íÏʈ6aû©çØöûÐxîÐÏf´,ïŸ~½Éolõ`*Ó¿mðÐ÷¢„Ê%ˆ/$úØK^‚:e Á% ý(1“üG{†‰ñTÂÍ;·*ÝŒíùKÌ ©Ãâ€SyŽÞ…ø'ÛçN¡¥ŠáÔ[?qÚ8K™Ð8U¥q!ŒQ“bB @½Î NT–Ž¢ŒŠ¥T)RÁˆ%Ëþi[¸ì9›â0áÚ4`Sל$7ïjžç"&óÉ4n¸ˆY#ÃHÆöËh“>á°Î”éª{ýÐ>~¿R‹l¬LªáIïÈÝZç›êó a×Tk»…è?±Ùún$¿=ã×cW<´ Ö4bèĤF …Ä ^ë÷:šÇ–ÐÍy| $ŸZ¥ÿ§˜OSv|œÝ×4]„¡IáÐÓ ÃXöâRiºç<$ЏåBð±—Xab±d×Â6E~ Wž¥^ï!1¤U%R:À¶‘¬ˆî)¢öS'Lá²p-œöKZ• ¦czf¸`QàGzÚtd8Æ=ÙbqËÖþ<”TBb: QŽB$RZ¦¹2%‘%›UŒeˆ™bžå|Q"!©q†g¼‹ï^oÞäÁ;¡%ž2#ãò4sþälÑdÑgë<˜"E>ÇgGŸ[&‰ÏÊ$x’1†Ã0Âމ0ÚèÊÖ‰cvc/w2m?J6 A²gåsÂOº,ZTà_š‹Ä)‹YQ˜XḲ H¼·¶÷Y¹Gàic…ÊUÓGèx¾dJKÒCÜe·9Tr[K`§ÒÓ¢ìX\ð+6´p.‹ázªšíÜð߇ð(àcõoU|e»¯Ê£ízº–|ëü`¿~¶'«~öÍRáå+ò7n¾*>è×ÏìPlîÚ³I˨MÖ¼ï_½t˳<ìŽûÍì®gS`üDE ­ p¨g3.®¿øÏŠˆ endstream endobj 536 0 obj << /Length 1444 /Filter /FlateDecode >> stream xÚµWYÛ6~ß_a"#k®î#@¶‹M³A‚ˆ‹¶hŠצm"’(ˆÔ^èï ‡’-[Û¾´~ÉÎ g¾9ì϶3öó™ï¾?-Ï.Þ…é,X‘$ál¹™eá,Í"dél¹žýáå,™/‚ L¼«NUÉgYoç‹(K¼›¾'æ.?\¼Ëg+RBüÙ"ÈYTˆ¯²^‰ù"L¯RÚà*öÔ†NPH˜{‚N¥¦Ó‡V«7²&âÇŽŸÃ*Ë=^¸kD۴ˆ5–¼Þv|+o…,ÝjfÞnZõkMçw´Ýq¼q/UKl+^èî™v  ÔÂûí“­éÍÒìTo¢ÈkÅJU,¹‘ªf–=ˆYÇã;Ë@‡F^ÅñÉQ{+çs{“ˆªÁµ&:oÝ騆dÄÞ7?ˆK¡)6aqœÐÏX‚ÁViÓΈáF³²ã§‘Œ}‡AÏüÍOü­¨EËKR§…Á8i çºò€ñ KïTkVyAWR0ßÏu}G'‹§…uÙ"ö#EGN£ (ÞBô#¿Øë “ÈKõz¶"cA÷ê*Õiñ‚€1Ùe™'ô±ù"Ž2Ërµ"߉â 1å{+…øôÖ‚¶ 7;â€PN-Y\ žüºSˆ­páS5†{ÛA,C;wEIÊr?»Ëâèä…!†)ê…[,E„¥ Kr–å"Þ‹²™± HïZaÓ´C©â’þ„gª£ äØkCô’ü²âFй˜¤zšž˜@uJR÷BW°n6„p/?†…9y÷sÊ_<‘µ6¼,±h ÷¾ !qƒ¹ Äík™hµª1ðÈâª.çðÛ `a5Ù ˆ¢»z-áWY¯*xèÁ'é¡Ý¡­=ö¥SõB˪)Ÿ╲ö¯åÆ$ûB Z¹•5%lÜÃ/qδ€Í½WnÀ!DUp½u%ˆk¡m"åh[F1B-Ðy¸2Šn5­¢Ò¹vº.]9Áú¥sx)Œ²ãfº’Ú»[ÃÁ#·=Ɔ+Dt:‚ÖƒÔ;‡gEä}é~¹_k‘–‰'y@x¥ 2¶+ü’°Ø¨²¤’1ÈãPCµÌÜ­ö†89œ>®ìÝÙ‹®´¡1®Ô8ÞzM† Ê+þ(©ÛU/ƒæ™€¢ª·È3Lý’=;jä° ]n-þ“ßT”át‘Àñ鉾Gdƒ>|;¦%ûTàÿe*ÌÐ-ÁÙ·ÏJUdÎô |êÆ¾ïA-­¹5âÑÜÞ©ÇÑåW7¯Îÿùv¥ÖâV7¥¬0‡W/KóæÊ´å››W§Õx€ÁA$Ÿç‘K‘˜&œ(J¨šáɇæ t4àoV˜®4V0‘HÝg`bG,”S©vÈÔ^‰ª÷J /žæyì;ù¥íøÔôA¯òó¡ÛGÿvn?W§OO3F3#½¿h±(Â4»FµŠkg4<Ñ -ÞºžÔY{GÑ) CC±ü«kÜuEçÛApEóÖ«®¡±ë™ Ãt_FÐó¶”àŠ%Xuáw4¤6%_ÑXœÚ‰Ô±ö2…â¦&¿`i4ôùéÉ'V•x€¾á¤«z¤î¨ä#…f\aäÐ÷SÓ©Etû,MG# cÈ2˜Æa<š‹OÏ>©ï ·0{»Q.I ï3‚6ÌÔòAš÷õþÿ¬% öFµOÎØl”s>ËÂaºüáýçO× JØ•1}jÌ£yVô7\ÛC5ŠL¨åJ@»‡¼=²ÍÍÌT@aQ°ðIM1F騯hãþð¸áè¸Z˜#¼Ó(w/[U»±ÎqÜÏÈØVò»ÒAüæËõÇëå4øs|ùžZŽý#’LªiÊ‚Ôý[ “×õòìoè³Ã¡ endstream endobj 541 0 obj << /Length 2499 /Filter /FlateDecode >> stream xÚ­Y[oã6~Ÿ_áíK VEIÔ´H;MÑÅ.:(lm‹¶…Ê’W¢“É¿ßs£,9r0˜Ý—ð¢Ïý|d¢Õn­~zÉøýûoîãl¥Ò0I³xõ°]åñ*Ë“PåÙê¡ZýÜݬ•Šuð°·7ë$×ÁÏGU ³?"•6Bo»þ`ÜÍŸÿæ¾X•a™k`­Ö± ‹X1GdÈ@gy°1-Y0¸®—µª£›ÓÁ¶7@¸×ë–ÇÁ>á²íMà È1:ئ‚¡~l,³d†UHupwèÚÿÀíí)Ó[¾i+ÓW¼üñý|o+Ô•P*,µ˜å# Ð nØôõÑÝÞ¬Ó2 ž÷õ×÷0ÍV ‰G¯0Nzk*¿ B¿0mHQ?9›zc\ݵžÓÑV8é¶2ŠÛµÂ•á´A–r<»f ÙôÅ73ðx·é»õL?Íú=‚#{ü âÚ˜ÄeüÆGV[™w=oúi¦xªí3˜:K8ZGg7ã07LÄÕÀ‹µ¢ÃÏ­¬¶ì7Òž†º>ä$Ð/¼2ó¯‰êá’fÈI<£=Œ˜ܾ˜â1…@lít% ÚÎùO1j+Þ±·½½e’dÄ͇é1ìp¸ v–¿‹]™B˜ÒæÞ¢Û8ÌŠè~½}C0¶"E!‹Ë4}¥mOé± 0²NYt=¯…³sRGÁÄ$w Ny)1N„<0Aç#á(úÕTœáw(Òï$ÏÂHzºÑ:0uca[#?2²£ö‘X¹ @R÷7Eø3!¡¶n(+bu¶!~#"q„«d!ÊÚñ‡ƒ šº"#ÓÉíõȘ„2˜ëUšòòiÀ¢ <ÆVèGè‡ù¼w)˜ÅÂüÓ¡iê˜hh‰ëõJå'GƒA†ô{$×®[×G2Ê·~KÛu'ùñû-„¾}Ý0Gµ&'SÙBÓ:ð€AGí°†'`¹ ôàXQþ[ñ—GßS’©¿qF±Ž[*‹uÓ×eþ(¸i^xf$ŽìÜ1Ø$ržEÁ:Ûxqλå,Ê\‘²rÕsÜ/SL¬¾aÒ8â&Rª#_³ð“Ûûý|PÚ¦Ë32Àzˆr—ñÔ$ð¡ÞµP„äç üÂù0¯ÝŒ¿¾vKð@|uãVj W…²¾0õ\ã!HMêdô2¦êíø&‚™ö <ü‘twâ²Ù™ºe’ê Qc÷@×Lëÿ\²MÕ{ü¹aA1†ŠÖa€‡\þ'Jñg‡+ÒBÕ«ØÃµ±{ÆR´qFœ°j?m쑱ÁøÉÃ,”TY`•®,‹¢<n‘­9Ø%­À‰½“Öë%Jƒ?T’~ZÅËÛÞÚÆcˆŽ7˜JàÀ¥|txcf4©Óx.¥PxµÝßaFÄSâŒ30>7v¤ 0ÖÒ͆!_ãgûÉlU€˜!U©YmT¥#•ƒÅèì÷ËÅ,‰Â$)ü¦‰˜¦1 /’Y”~ XôB½„CA!Zº®Õ˜8BȽ‹"3U4É&ŠâdYÑ¢µÒS=ò,(«uXKÊ2{ÄÅ’CIË9âqò Rlýv8¡’¿€ÚÄa䓜Øt¼‹Â•I‰Ö,’vy¡Tœ–aªâQ«ï ·-h´NÊ$,@ûY}sf'wŠ'8y@Ø÷ÂA[#ÒmáÚ=ƒaïj±X‹Ò”bxŒü±‘˜è œ†Lk†N€õ̵øiIí² £<ÕþÛ‡_~xø÷Ç—™Å£ÛAeÎ;`]†¹¾Ì<,™(…=£]±{n Œœ-B"6ÜË麗3Î)ÄøÐPM®çô«DO•)ˆÜx!CçÌÆir¶X]…g4 ˆ2í1Š0)J7¡4Ÿ[åXJBç ·BsĪ7Ý7·=¤nš§^"Ì›ÞþçTC Ñu‡n|“ƒ+£Óæ$SÜ-÷2óiz÷ìåcCp'mÏ#%rÙ!Èš•cì5ØžðKB£±$’³u[!÷7çe²¦oj‹åuz¿B~Œt¨³|Bò¨1p?(3D8øûR^Ip©–Àé½u~—åM^¹/ˆ?P0›äoçæŽTo·Ü‘IÇ<š_'peéf*þž<Â?4KÍs® øÆô;ºsêLð[®£w\’öˆ.Ê”\Ÿaùœïz"µ©H­¯H­G©ñ"ÑûãÍÖƒf:½&@þðó£Î‚‚bL¼ö{à•ûŠå¤,=NËØCˆë”g|8à;‰..¢.±|éÙ±ïv½9p¥œgÎÏ:º¢Bt¿™q“&‡&èg™F‚=š{äƒ=R^4¿J¦ŠïÅÕÅæ±’G‘¸8’Ç ®Y {cçˆÔE‘aÓ„KEK´[ÇРKqÞà,[–‡á ã¨8Tù…I/¼°ú}­A€»Å^ =GO€¿%¤”†y”,ƒÂ~s—Ü·Tól~iŒE\l‹*Œ’s££›Ãã5ˆ“ÅéK™ga¦/ÄL®ˆ)IÐ×VÞã½]—a¡ËQôÇÚÌqAðT‡*Í+ﺯ m˜äñg"½e3 ŸgUDž‹yH¥ÿGCÍξjCœÆKb ¸)Àõ…·‡…‰Â\}.(—/›Jçô–Ç”‘ú ·«6¦²_Q/¯^šÛ SN—ÅWþŒÆ nÙ»Z•ÿ“È,§”t¸sɾ*Ö:Ô׉žw ××}²ÍBB:ûp¼ú t0ì­Å¦®“<ø×žžˆqõe‚oºº,§t¡x·*ɇó €éSݸu-wêó¿uxÆÏ¿òˆ »I9aë<3ûJ¶ùÛ»ì@K¶ÀRÓ‰¤Ýd#Xg¸®£+h=I³¥61ã‹h=R—h=äÚ ø\§ùãsW;~¤»Ò A%oà„k¯®)³¾}»0÷Yù1'·º$E¨Šä‹DÞ Àþ¢>« nÇXhŒ…o§ÙlÓïþ HùzÒ endstream endobj 553 0 obj << /Length 2479 /Filter /FlateDecode >> stream xÚ½Y[oÛÈ~ϯüDÖ„oÅ¢@sqݶv ´EÓZ[l(R%©8î¯ßsŠ”(:éC_ÌÑápÎeÎùÎÅþêqå¯>¼òOžoî^½¾ ýU¦²XÇ«»‡U¢Wqª _ÅêŸ^w¸¿^ÇÆû·Ýô×ÿºûyøôõm:úÌ*ˆcxA}ö#¿Ù÷eS笃ëu†^Ñ\¯uêm;[_âG²aQDnNXLD[ “u4-ò}¹µgŸŸðÑ´E· c(Eÿ“Œ_p\à\–åF,gÄìöù£ÝÁá fa—„ŒTà/R‡‘×o-.b¯©«g&}½ æÕÁòÏC]ضëYþ[ð›{Tá™?ÿ¸‡gâÉa%Ùîõ­NFâY¬"ð ‘çáPUݦµ`Ú;‘\«ÐÝÎ8DzÚ–ä¸e›üÐÙîD‹s›ÃÙ+,S~bÀŒÊ"1#ª„÷tOŸXþÑìùWm &”5_ŠËšÖ;1ˆåM¥?½»åEks´žZ¼cmTæ'Ó;y2,†Iœše¤S€ÆÒõåuàí®×SöL܇¦Ýå9´ÝªGÅäÏAhÞýAû~è:Ѿ |ÿJ½_(Ý$¾œÏ–ŸýÀ,ë–‚ç¾ ›3=¶Ô AÍÝ¥ëpú-Jμ'·Q#$vø÷žt°-áB$¾JütA?óÊ~’ûâB/–У÷³aä'*Ô™;ùÙvçñD*΂Qü„A.5Ÿûq?¸<üz*ɳaÕå3_¯ïØr°8 ¬N>Fw*{p¬-rñ½¯èdQïaUY&£¹8ƒ8U©¦±Hg‚ᯄcÛI@ŠóÚÜ?Rñ8Åç¡Öáôºî¶¥|m+K'Œ¾à5Ĩ,¾w Evûž- =ÅFºFjÀ5t¤ÒLœúO Ô "øÚ™ ‹š†ÚCLîî+ûÇQ¬= ¤îÖŸ_1pL”‰SX¤*̜∃™ö6 +}¼,¤6üìÉ>:;Ú‡²¾*e럙c²ŠU–„)9U˜¨8ˆVZù&åÏå2*LËF›îèž"…h:€‰þ~ ã™ùï,@×Úe)7 ÝSaÑ“ý€÷ È? ¼=ö²2MÒÿ“2tçx!.$PÌ'ŠG|Ý꺬ÙŸÃ@C:ˆ¦ñ1£V±!ñõ÷ˆ¯/ˆÍ‹ ⃋‘½ñ¹ol×É41-ì·žWͱ“MÓÍg`y&5©÷QŽè¶Í¡*$”²‘B°#‡º«nf€  âäN†|&@ D]8|‚É®hH¶~SåÝ ¼®C(Ë2(e&w´iv»¼.n¤ª8ÆlrÉBcYf`äN°ŽR€GïóÍAΩ±¯ÒÈÕ$Öz°bÖ»|ÓJ‘SXL“u‰)¨S‰#•tL´˜Ç0 é<¹aéÁÒ >A0†…Þch|º¤(Ô¾oK°Üœ”³úXÚzÓ4g…Qj†}èZ~è}|` }¸rÏÎbÁcÒPüH3Ñ–EÁwÄ[|!Þ¢ ñfNã øãUU’.ï+“žºšT‡®¨‘únk'žÆ‰¼í†ñŸ*$ VÊ®¬± Vª ;qÛÉ3.šØ‘Rl½q•Xý8—6ýó„þH¼/û]¾ŸK—Êœø{Ó%”M¾?M—ï]M1ãðF%q:/C:!ˆÍ¬¿£™$쬋LÁ:M 9×…p.c2dç¹pHÀ#-èOåpbFÀ–á àœ±Bë»Ù2G§*‹àäÚȰžÓÂox\~•K¥=ÔPÑæ .níek iJµ".Fõ0þ<oøë˜ý5ã‰Ös Õ=¶ugå=¿â:iîVN¸¹kabÛ!AÂîOöËg:ì4™-·¢ÿÄ`OeÑol†*Öæ²Í¤—Cæ¬8::éóöå7[½0p^ù¶¶|ÜuIÈXùAðƒBòÉ.^ŽÝöÌN¢›¾ 0ótšo›ªiƒä¹4˜ÑQ¼,0ßtÓuå}%±9ŒG\L·Ò?P—l¿–û¡¥FêùêfÔ?Ó›_‘þá jå^J¶ïzû—ürµ¬µ?¹¦7eß}¢Vû¶Ùí©Qmê$^ I‹ ½l‰ÑTè…>*}!„ÛDtº°_ìóÒ4Ké…†:eSã fFâÏf:¹¶ö[^Ø `f…·Åð¦(qˆíà\ Ÿô-¸b^w{¸ç¡‘Ÿ²,4>úÃ~í¦N*KO yq¨ö$yŸøHÂ_¹\^¹-:4*{óýã$ ˆÊÖˇ cŒTWTôKÑÚqµB%.1€•KoÛ£ß EÉÐâ'Î]ÚiUÂãÄÞvS2%6)bó> ÂSt½-Q¢%Ý¡áZ˜Ô˜ 8Å$ ¹©ãß„¸À›¼­ >{g]ed¯øÞ¤ÛòîíÝùê´à)î('æü€**ï®ãÑÙj*? §î52*"Æ7ˆÓÛvzg®È0G'üùÓû#«wh€Ÿ]rEH“>®Ï/Mù2hÁ“¥YtÀ~4’ŬѦ÷ygcsŪ¬ày´%Q©à•œÑà0ô0!ʱ|äúXå:ëƒæ&ëÇG°'¤²í5Í[ Ç- yã^˜aÑä,ÚFAŸŽ©÷ÔçÅaš@c÷]Å«èùâÎ&n<‰1,9á’A£ÉsÖbyeYž‚À‚”ITŒ­Ó‰/ã\2Êdl \¤}ïoÛ’î舸¦†4À{BCñˆžÞa%ÊX)|>ÖˆÂr(¶‡H%ƒŽ¿Iy¬)ÿèØÈGRZñv®P¾^€¾…FœDC}ý©¢îÿ(è-˜m”ÿIʃ§ÒUq-Ó;7-ŠiS&íÅø_N÷q–nu‘·Ç!çÊM5Ç"ýµ¡âÄÅ ¬x-RÁÊå'X‚“Éë¼eOÇ5, 1ºì׳ݒHªz;ÌwOö ÷îä¸}Ù>ðj¾CSôÊlnp;ÖugépèCٱχ)5ý•ů´q•?ÙDcqTÉÓÏgúß·Ò iÄ"a ´Áž@{ÂÊÙS²'ÅÏ i ¤ ·ž…#9ì ‰Ó´YCàs|‰"ç©Àµ1‘÷Níë=$NÆ.ݸüî^<¥uù{BиlÕG„‹8½èNY ™ËŒ¸vå­¢d0é7µ“hß0}RÖG'“Mïï^ýŽˆ´l endstream endobj 558 0 obj << /Length 2057 /Filter /FlateDecode >> stream xÚ½YKܸ¾ûW4rRnZ|H”cÍÃÁæäзÝÔ-ö´õ#zŒwþ}ªX$%j4mO`äâi‹Åz|¬nž6鿝R÷÷ûŸ¾ˆ|Ã9+³Llö§›\KÆu¾Ù×›_“Ÿ™Øî8Y²?›í?÷ûôEfó 9g β¾WOæ'â‹+Îd™y>Óš‹¹n%O'4Ý”¬Ìaðîx*X™jøQÀ.§ÉVŠdºæ0¦Ç]ÁøgÇsV–šX‡fhMÄñéK1“/2–¥…×å·4Ko÷¡¹]«~óíNæÒÉ€Ÿ*¹éÜôDA+‰†›ë¦¿·ÕVÉËVèÄÔ´T Ä\yN®~§5•´·íXK¤æê¶ÑçéÖ]H‚Lú;p‰96(ÄË8ЉN5§k?X*™¿Ù¥,O98ÇÆÌíÏÆ hçÇ…‡â" rî¶š£Õ÷mÏÊ’e:{Û³BÊd€JšaËt°ä`ü[;¯ Ãëü0‹Ú  7[Çá®~¨º¡¹>Ñ××f8/… i.¶Ý)Γ_ÜQÖaÈUyH¶ÈäzÜÞÎôN…äS®Xž±S4¸ôÐà"9‚‚` ¨†»GÓ™BÅeð¦ý°›¯Â¹ÏÍmœIE ¤¶ )p: À%ƒ£]æºE'`¨cA:¶çm–%U;fÒØ2+ ý„Š‚?Ìå>xàa@àìëÓGú•)$ë8ß/œ0k-mp¹BÏ@ÄKÉÒ‚{…Û¼¸Ä%SZz¦YQ0i­’±··)×~0U;zmÑ£~<|øYÎ ¡?/’=¥üiŸkB|‘ÇËsXžIßÄáËA~ì(Œøá1"$¡Ü®»ó¬{€Õ(Û…@·°–t®ãà/”‰éD© uøåÃ<Ǻrçã¹Aøm01è9ÜÕdJQÜçœóH+²ÃnYÞÓŽ ù„Áa`Ÿì#ÈÐe tE@Ó ë*`].°® ëÅë¸v¯Á]d)+¡Þ~ÜÅ…»L3&ÁAÜ/U÷o,µ ém¸+ÁxÎTPÌóä—P-ƒž’ÎÀІÉÜi ~ܻƃé‰(ãµ5}¿È,SÖZ¤”ÈsÜä&›Ü_»_*ÅÒ²ô¶\o¯}ÏSëÇÁÖ:YæL ÈÐ[ˆÜ5O@`ÓbèOÿÀ¡ªuÜÆð8z›_wYš&?;Øy‡¯˜”kV¤AßÏpÅMÿÓk³ X—R.Z²p¦s¡ÓLKãD¬jW¹Ú´vëûæÐ¾Ìï“…Ãüg4×㽕:  -B7ñ¹­^L÷;úW† ‘±!òÿnÈsc¾®Ù¡˜N¿Ï .v¨l‡½2¿ÜmKæ.Ðí°ÝÁ­û¤r× Ì”´ÇoӹDZ»˜Â•´°’™KHðU£‚lEkpûìʼîˆás§ò”t³IÄJ‡tÌͱjÑBKªk'·"BmNÕØD gáŒkuÁŠ«¿q©ªö~®þ0µ}¥R®¨8Ëžô§ñRíœR7Cuhmº‡üF~‰¶g“cìÎežŒƒkXzn®nz\K4•g/ b ©³5¾ÌA¯lq»¾žMçUn[bŠ|á;¾ÎK˜[úÁ¾‡¦…ò7_ωÞd›³0O2Že–Neœ¼`PTùjòŠÄ+HÊ’/JáÊ"ž'9Ó:ž'÷goÊÌD8Wnåz ¥dÖbCÿƒÍ‰‚Ûá‹üzé÷•¦Cìš|ol~÷ášÅÙ;•Xƒ%q*jwca²îóôµ·Å{¼=O±ßïí…ƒ‹÷Oìxñ• GÝuÙªéL=µG”¥N‹Æ Ñ­=ºCè\+‚Kc?ø€q@«æêoMã»­þ^Í7:+R8ÊϘ=J(&ä£ÑY¹–J¨¨wÅÏþ|Ûšx.)®”!)ý¡Óy1ýJ«S@Ôžð·" öKŠSaÓ"*Ö\kHÎܨ3¤!PGkƒ7 :ØŽ~±ǵІõ‰AØ…§º9½8ꌥŠ/Çr;%äk÷¨4…äÓl±( ¸fãKAÔTuð‹ôuŒö„îTÝ¢ âÉk0v½YÈšv[kíxÓ~ÅãI§çÜØ ð|ÆÉýûÌ05ÍÓÜᓽ¿Šˆ'*J; šŒ«õ~õÖÄ™²H\ý¿ØqÏßžCð òbŽ 3T¡¾£FLoŽL¾'kÍú©Hº¡éÛI ZöLýï9 ü¼/vVêõöpír)d/^:¯‹4šJ>s0,B3&¨³ŽYßDzG*_!–°…¨èI­'¦Úà{âÕÎŒði¡]µ-Ø‘`©޹WÜ^Çë­ ˜|²øâ½/[®½5VÇ¡y¶¾}äYÈ™ù㲦ХGl¨†0Æ%ƒŽ÷¯|½Û=ØÎг´Ù7ê‚U8. ‰ î=åoQ„r¥AdIÿb1CwñÖ6G"Û k9íÛ“°=1~>uÕýÜ{"mìÚp#j¸ØH¤G$×cGRÂ?¨ñþBjg‘4tÕµoPc—vr˜OOM!íL> stream xÚ½ZK“ÛÆ¾ûWléb°²„03x&qªìÄr)‡D‡½Ù>`ÉY P(iõëÓ=Ý3˜±´—r!‰yöóë˜Üî’»Ÿ¾Iøû‡‡o^¿‘ùq•eòîáé®wy¡bQäwû»Ÿ£ïcµÙ !³èíy³U"ÒðYdQÿ¸Ùæ*ú—ÞM4 [}ÒÝVLãæ×‡¿¿~£’»*®r8ÎMî¶¢ŒUE§þµ?ú6–*ª§ih/“6Ûmfì—mië’Ñ3~è!XùúMé]$«Xf×/I–ôç©é»º…ßb³Mó$úg×>Ó¯ºmû,£ø¡÷4ˆ”á÷/B¥SÞ¶úƒ™n_ñ<ðže†÷ñ†*MÇz¢É††­ÊiMí›ìÕM76{ÍdÄdá1¢ò4.i9ùó¹>è¿Ð:Ÿß­Ê˸JJ–Ñ"­fmÕS ŠJ“èሚ«ªèèªÛ ?6ݾÙÕ(}x,áq#‹hÚý4ÿñØìðœ#=‚àáÙÈc ¡‰N.}Žiàgà‘ixû´ØátÏ´0§f›îpÜ;ð8£½yîkÌmEd8džØï鉷eÑXŸøŸ°ñh õ¸Øq­é=Ðsu/°•¥‚Øšwä`u"@„#;Ñ)¡p`àh/êz@z 'ZŸuöE'-°0¥TÔLôíÄŒ©Ï8LQ0ÜAÁ fz¯‘ØMá¬åxMœ¤"´Ä{Zß‹¹½~ª/íħÕíùX¿¢ÉÀxâ…p±•)uBÀ©þ?Ýð}UÆY"^ö}•UÑ÷(ì$õû‹îvšžú'šáx30躥!#ÌË ?IÌz8*nÔçz×ÙÓžGbÎìúˆò;‚$›‰¯ÏõNß[Ó4>Ç&…îo6MCÝ[£ù­PqV¥¡é?õˆ 1À)2+øã  ÑE?€å²{èÜC:ºß›”\ÓíÚ [=®ñ%°ßžqùœ±ÆÞòdohŒ¬¸±qu0‰5äÃ@1ãÞaè/çàSðS9 ÷u ž™¦™Q6\Âx²rU%âbgûZÜ„@ìnò1 ½#ô:=\I wã Aø´|—­é3ÿ†C$e\–*ôˆ3Üz#&q 6ô¢;ÈTFïPí=ˆç±Õ4ñ!3ña¤çzÐk:’E¬TaÖãµÜ@“¿ÃNƼ 1)ƒ=ŸPr8ˆFŽƒFr8€ ƒd߯£â¢pz<^“RÄyZ\Qp¼dû1 ÙÎÒrì‡æsOzÿzÞ@ÖB± âŒËL„8 ÆAzÝÕ©ýd’ŒjfPMgà¤Éa`hijÎ30uèõ""˜ÙºÛ¯I¢Jã$³Œ~¸ d ¤# ?Ÿ 1FÀ,χV ]9ÿ5Á ÈAy‹ý† ƒÑd&UñlØ žƒ¶ñ†=— vݰg%Pk(ià§©Ÿ8Ê‹è„?šÎê~¤GÎÍn?Ç£R&üx¤4ƒ@(@:Áa:‡8ÎòÅ€žUq"Š™e#ètáŠdœª1ÆÌ®XÖŸˆ9ë®ÁòN_«^‚;ÂÆ5ݳj}ÿòoÈE,r»qhÍ~ÅÙágéq†2©œÌâÔ­œ†M‰I7¶³þÓ³$Δƒ‘x¥¸€»òXbºG—Un‹ŒÖDÅÜä™F÷ÖrtÆÑOËdBhGôÏ›„¾Qƒ”/0É}d ²CE2µFkÆßx€¬ÆWØS¾°»Ø0zã]9ïvG‚y±G&NšÏÇÔï±­MéðïW|Â@qÊŠI¿â;j¦ÄÒJ ®6‰I˜€­%<7ÍÕœF¡2JðË`gâ(bÀ€Y4Q3/æe†¸yI®¤H> µu÷“ .ÑôKbWMÇAkZÂI% ®%•´Æhº`)ãR@‘ïÿ9!S³Õ2Å9…ùÓµ1§q*÷ˆ_É\RQÄiZ†q+àÓÏZ‹”{öëðÔy>n~R¨Nøô±>»,¤FœxËÃô„øm¦÷zÜ€p6M““¢šéšOÕCcDïÃ1ô3òA^ÏTj ™£ÐÎFf˜ãbìcƒÒ °rp^oƒÑƒÓËAw°±m>ëqQë½ûÛþ5¥VîŸ9q¢üöN@a—. ›k×b@C8S€5ÔÒÐSoû4£-}mý`i/|ÚõÊIa õR ‘.úT^rðV,–‡õür•Áé Ò-?œzÆSxCåÊå5¹N㻌Ï&nú#qÊt°ÞÔé,õË#*%¾Å*6ä2±PÅÅpû ·Mç1ªfFÓˆ´Ó7®ôô-Fë=7(ÀºêæpôD3êƒW½¢}öÿOì®ePÁ‘™/ƒÝåÃ|ª’è‡íxF‘p3FpÁ ®e,¥Ë’ºDJb™»k–Fƒ'~ÍÂÌUIÂ4 èëÒ5˜ÄÒƒ©Ì0“a’…#™æ l\“ 5S¬Juƒ^(_•ãçHn±v\\ }K¸¦ ç“àƒ®…,¢;à s[æ¼ ƒvn³sECxkÎí…·rî´`DäÄÓ[‚¯€‘¹°”1¶:“ {‚×gçe¬²›'çóÉßažZD ÛÉIb%pÐ0ýúý¥á a¶˜7öó5}qVEå*Ä‹2•¡¹³u¢Ëü€Çü’HµI éÏf& °}Ç5Þª<Îæ"dUÿÅ\‚‡®_F2ldÚ³àŒ]=už]³ƒs¾ˆSï/õ`Þc¤´ŒÈ™ÅŒü&ˆ,–ªø ðþ €q¯±±Œ NŽòËÀqtè˜EPi–í!ÌXøíîÛ¯ŒƒzÕãçÌYÓmÛœG=7cm0Èʹ› ÃkA Ê8ÀZî—îÚ~Ô<Ä`Ï…4#'²0iÛ»¦‚Ï0I7tÜSßà¦y˜Ö4Ô¶Ü+¯ Ð^OõÁ¦O‹ä@•­v× »Öîõ°È®'L¯ý·9b˜{û×»‡¡zIUÿ»vë5íB`öµ[;èå襜u+CFÈ,âUWy\OTÅ– %iÖÕ‘÷›];stjÚˆ8B‚ ³Ž¥ ElÕºìÔ¶ó^:âÓП8ÿåä\v<Ÿ<4”v³Ã#ûA%ïôu5:®…Ÿ$“7!ªL_JWr øQÞŽšó«™+U—˜˜ç¨íÇ,Æe©u~|_Ü1!P õ-b§£ÀNÇ+zv) ®´Æç\Æ\9òj‚‘Ò5ðÈD Uw(⹞3Þ|ö5šÚîèT]Ä"ο®/kžYAÛÝe‘G~ú‰Ï/¥ŸI,Òê¦>‹¹­p¥O8x-Xe˜tE”ŸÀº€8‡â8á£8<ˆÅƒi»¿Ïª›ôe¡H=½ÛÒwņAᙺɳšmØOZWê¶ñþ¦ÚË$ÎÅïI1Ž«þ+Š+½£@­ûRµazöeò‚†J’,u±8µN–©u2WW̢۬ð‘§~à ¶,³©ºàz™x t­1wÁ÷‰Fw~“œáw~‘mÓCk%"âw!ãò]·k;}šV: ^jŽÚƒ}CGïíMLw~‚ïèLËnœlZSŒréeçú{ìwx,};7/Ä øȾ­¹³H |j$ˆ®`,yá-¿ñ=[ÿãmÞ\@ê{Ô$÷߯yœ=Ÿ]/$¤î\»¨2ñœ¼r¥»,ÓÓÀ8lzA[1þ›ês\v­÷Ž·}ó–bYÊè?/×ïÈÐÍç÷Áûåàà4‰¡ü]¼`VºþŽHD\ýÉ©ä9­_/…ß}ñõ6Ü^–k¯·!’Õ¬Ô‘žÑKàØÈGCׯ8GZ3õ•e¦Œ÷˜aú“4ÿÏyækΰ›}Dc|¥1BÜhš’ÿÖ“7áýÒµìOº7åO¶u;ÿéK&ábFo»ÍY‹~|øæ?¼¡Ùx endstream endobj 577 0 obj << /Length 2219 /Filter /FlateDecode >> stream xÚµXKã6¾Ï¯0r’6G|H”‚ À,Ù=åÐØË&ÙfwkG–Ižž^äǧŠEÒ’L;Ýy\l>JUd±øÕWLW«tõÏw©ûÿÇý»÷eº*Y™‹|uÿ°Òb•kɸ†Þ~õßäÃZŠdûz{ͰþùþßácøÙpøR8Ñ]Sgï?ÍB°"•0a…J³´;Žu×V ´ùz£Ò4¹2Ôø²Î²¤jNkžØžÔÍTô7˜_N¦Ý9ñîþÕøD­]×cÚ¡'s\oD‘˜¾»~¸ƒA®“‡®?ÔíãL5îã­JØÕJ0ž*Ø1ge–Ñ&àëõFJ™Œ¸n)UÒm×XùÿÌnhªn‡zïf˜LûîtdVí=$'Þ{/»X ŒþŠÄ«ÄÝz« âýG¡'~. &eæýü5õ=ÉMCBS*/fspFh©µ³UÑß`úÚ nÎü'çP·(ÜynwN•#û³HÛp%™à°u‘±¢ôñÆ`p ^Î(.÷—s&UöWªGó}D¿J™’|±A fr;O9ÓZCüU”oŽöm=ª[ñŽöó|ï=ÄlÝ›=Å»ä<ùϺæèC.Èé0\µ®Oî3¦§‰Þ<˜¾·±‰ócçä©ë–d‡öæ§”«Öìƒ&'yéP¡5„´%5‘QŠ•JÇCfbÃ…å ¢ `*+æwfßÙ¨ÙüÇw ΃D€ÍTϯG1vhSeqÃñ¹H>¢ã»SO½ÞT ¶ðÂÁêtÒõûº­Fñ9Fÿ±ذÎñ-®û…¦žŸêÑÐðp¬vpEê”|ctã¡á­K9Ÿ^CžSC˜~%½ÊY©eËKÄØ”Û? ÄZ¹šÈÜElåpÞÐË¥!ÅŠâ5†ô+ì¨òM;ߎ²?`Èá²O½q± I±äÙ<–wÕHwÁƒâѺs€x$|ìŠ ç}kúŒ†¤`‘Ì¡oƒØ]œΑ$’O“ˆHƒ^^†;«éΖ„8 ÓB¬šæÅ‰“#lDÙ—u¡éP¥É¿º°Oóemó)úKÀõ¹”€ºÅž­Ôž& ±Ê¤;xñxƒ–ËÀÎ`»HbŠegŒ­3BÌeeîb—3£{ l²Ô†ü,ô¡®è>›k‹w±ãdiˆÉC 0péP0(^¯ähÚÈ%ÃËÏ:ˆÈ·ûØ!gì_Cýÿȶ€N‰stªÏkŸ‘£vðü¿µÙC"%¢k9©wìa Ý:{ظ¢Ý΄ÙvM4§és< q[M:4s~µ¬ƒ»èÎ'ª™ág¼,0ÎX8 ,»É¹Æj1ŸÓp„Y ¶Ã-*׆‹ë5¿”yòãÚ‘$[©ã-Xûç±ð)'¤ŽŽ>ikÈ“K?:’p<ZvÓøº0!ë´Ƭïœé¢¡ú\€„¯P+€3+¬,ØqO¬C¸ZOøSÆIåCÖV†ÎÛ]_?Ö³yÏ#DìžÁì‚6Òàð2Œæ`0÷Tõ¡:5ãt…ídš½¹^³€‰7óæ…˦èy*ðþH¡öwxD]ƒ1ØÅo![í©hÔOUiÈnHˆHÂÁù“=»¶Þ9Û»\*ÚL—Ç“o&,Ù¾ˆ㉉÷ýäùeÛT;Tõù ^Ͻ ¹¢ sÅã\ÄñrÀÎ?ПÓeÛnÇ4ì=½©§é*ÙaëAl\'ÂçÃm9ôôÒ®ó4-Ëyx£ÓÌS™•f¼Ìgÿž)¤½¼oh‚>ʽנO2QÜð®ÐÚÆ³Î“¦n <×{däØœD1N,¢X;tÄÆ…_qüzKÎF0 Y¯¢7(k×ùÖUž­÷®gïr†›ü}ï¢.¨,-ÌB@TÍ7ocOJ®»9ù 7KÇõÀ¶Õe[ˆœÂ';5w ¿·(¬¿A´Š Z/"ôÕv ^½åŸÈÚiòïâÄHƒÍÚÖáÖ~–XhÛ5l‡®jãN¡€›SÓ]Õ„‰‡j7v½…ø, 3çƒâ‘·X'0MïÙo#Äé<̧âTÎ Î/ß³£†ÒåïJ‹«ÏÔ“ÑrúZbÇéëE„Bæ ˜cvY“©·Ôd£ù:ÆŠ2Èg"½þü\æ,Süõù/I©3;ÍZTz7!x>-ŸªBÑ4£C= ~w‹Üå ¶nšÈ1!ÆÝF·YD¸÷÷àÁmïèçPo版nWUïàœ]^›j»ÎàöÆJ: É(¬â\‡Í´•LžÃüP·õÕ!£½, (ïÊÙsÃuD•%ËÕ’ý9H•™‡h> stream xÚÅZÝoä6ß¿"È“$ZÈ’ z¸Ýø—‡Ý>(3šŒ[=µ=—lÿú’"eËŽg’àpèKƦ$Jüù#øêñ*¾úLJxñû·û?gñU)J•ª«ûÝ•N¯”ÎD¢ám{õst¼¹ËÒ¨ío~¹ÿç¸ìãç"X’&¢LRp ¾ÆyÜÙßOUg·ðœÀú"ŽîŸnÒ"j饳¦¦§æ&ÕÑé&‰øðpsíÍ]u@ëqüØ£éÌ`·´ä}£ç§}5Xzìfcoá¹L£­ý'²©šGö<éè6a`‡ vª¶¡‘v7› Cöyà¡e¿JEYæWw ›³nhr–EGƒœ‹Èvb¡§™nïR)ÊX ¥91yª¶Ãþ‚v³L¨T®i¶Ìu´k;|PÑ¡jª£y´DnA™@ü¤t Ý ý-J¶<¢Øh\ÅËuT›’< +ÉŽ8ë~oiøÉëOO;îèw؇GÈ"T ý²àöúË:cùg:ÛÛêq~9\Rœq’„Šó’³[‚áîÉ‚2ÚÁù$Ј9žŒÞkàoíI.ÔÏBÙœ+8%¾U6:âL¶­=¾æºÈÞ(1 ÄÈb(6Ï$‚\š…|ÕDx$ƒïÆo”ŒL]=6—d‘B&åyY`0úÑ޾¯j8¸Lc` Ç6õÉö4Ãt÷øø9-Þ 0ÏôÈ|h4)Ü?)ÄL“[»3§z ¶îf8þ´ít¿¸t‚$·k‘RÙèˆ7yµÃÐ^žYªü-'ˆt—ÉX”…æ ÄþÞã…™ÏPÅ¢˜\jƒ´Í`»—L•ÈÆóÝÒ¦Ù®ðLs!Õ\hÓÛºjìªØ Â"Ͻìk‰ND‹xðª£åà rÍÑ\Ê(¢ *®È!î×ß|Ënˆ”Ð ñýŒ©(Ô¸umwÊfB–rÒ늉„NG_î @­pIc‘ÊÐ8 ×ã(¡ùfƒ'3Ó,xBgÙ+âŸS±¾8Õæù8¦c®Z–¾ªž=4£•œ{øÖÂQá6:ÅOm \}ÅyH/¢^gw¶³Í&X2…kšòTù˜ÙÙž;ÅHÌ ~Œ`ˆÐK‹Œžß8^öæ³oµ½´ ‘$Å/–i†¨8 XÆ2ú­1•Ó‹¡ÿ"[ip¯Rg…³•JD¬ÀXf´Ñ/- ¡µP È4éÞ,9Ä CÐ#ú§€¢s|…( ’#¢«í5 UŒc|‰xêï ™‚ àá`†Á¡<p&q À$¬v ¥óÓ™#pãSè¤TÓ~øbè§ÿææÐP[W"7æÀój:0¯á”ù¸|@X‹FuT—J÷Ö¢ŸK°6)?0˜á”é¶{8g¢úý{ZCØ+\L)ž ŽjoP}õ5‚ÂB9ÊÆÒ-°]H„}¨þ°ž„?—ãØ5 “ÊèËŽètxÛtÕÃiàW¼öøÛ´=ávñŽÌ{\œ£¬ISq0Çc]Ùíû!x µCE÷ïÂ퓉HâKÀ«Œ£'T=\ü)Ž@°µ³ß%å©DQÄs'ŸÄ·±"ÂC?+>‰ŒÑ'7éHÑ®£âî÷-_ %’RÍkšƒ5\8Fw§ºþÆ0âh~?YA Q)Ù\‡´§Ê¢-¸hup>Úô‡©ƒL›öpbn HÖˆ|E#àÌ®›¶¢•Ìke”ÚkEžÑ å5•°tóΓé/5žR-ŠóêHu}‚¤h±¨)6i @Ã(h˜h]€²_NÍÆ~DB€ÑUÌ.IG€Ë¡”yÏ2úñ@•ƒ (ÏËlŽú“ #˜+áv´‘,]û9#Zò ÑâkzwE‰Ÿ4ì;k‰~¬žmÍëÛM›CMÚX¦€èûÁtTËàËÜ7¤‘3¨©s¸ÐóuÈ»ÌÈÉ`MÅNv-‡—ЄÎÙÀD&]«ÆùÛΠZžš÷#lúŠ`/µhR7Å…û–JÅhèpøä@ º"0ïr½r2õÔ&—“\³I*ù¤ J zEw£Æ™Û£eþèá*P¥_BŸ7ðÉåôSpþ@p(0U+HË©yí û±É4 AôþVÃÆ/Ù`A\\Š{Eðf=* YÌ#ì?€„]ɬ´_3-T>âÜÞr1;P߆ï,Ü-‚ièÝã¥Gëb­Š9Ö>rb_°Øãéà ®©ÁS°ËÙ(§uþ T#ʼn(–¶Úuía™¼&·¡¨mí0¿>ØÂxÿÍù{SoÎ/Y+‰ÏY €E,ÖÊÔ¸áÂTP’”/-•p… ¿d©„ã%þ¢¥bB¶z²lñ…—òpj‡fM”Š™&J|ËxöÔS ‰½¥r‡Pÿ*KQâíN[xàòizÁ^Ø¿Z|ñÊì‹Gœ­æYq‰ßaÒd*.}ïwæ0pòl4ûÔÖóFr<µ¬m»«)-DIBØxKIz×eäž\F©Î=ì¸7ç2 v¢ÔmqûÀ¢íÀ ¾Ã·µwœ£!(É4]|}uM`òCH O{KÑ_ ý¼èîæ¹ëôW.$ô4‰«˜pÇPœ¯§¢Ô±&Î=¬ÃusÎÙ—`»ÀórZƘø/sYÓu-VO¯|Öª©¹‘)u¦+|Ý´ ÛÞ5uJ>TC¯+GÞ’š{Ã!¤;dÕUóì5q V0<`¨qœQç`î•´6ÖŽ œŸ¿žB«E´X 4c1ìO2jfÜì£?2ïîêæÚÆ?³×u‹qÐù¾ƒ…òõ=5V‰s_ˆ…GjµŽ}Q¬þà'×x ‡ÆÓ¸vléƒþÒ¹˜ƒÖÜUhš!’Sƒÿw ÚõÚ E¹uR2õ2´ ´òâŽ×¾F˜7Ì5ÿK€&éá5_xEÏû–…Ÿ—ñžðÞŠç¡cQ¨ú^5lÄ•™<“þü8ZËÎ d÷PCµÑ_¶rgÈ’ÙœO÷þSÞóQ endstream endobj 591 0 obj << /Length 2233 /Filter /FlateDecode >> stream xÚXKÜ8¾çWúäºëaÙvd±Û‹ìeH/°Àd겪Ë3.»Öv%éùõCŠô³«j‘œ,ÉIññ‘T¼yÞÄ›½‰Wß¿?¾yû ãM.r«ìæq·IÕÆ¦ZÈfſ׍umÛÜj}½ýíñßãÁ·Ùì΄Î%üG>ÇIÜû²©]cy{¯”Ž>¹ƒ§Ñ®iiàjþ" •‹0-y¹ßóÖÁß¾íx¡([¿E4E†®_z‚œy.뺬Ÿi­Ù­6}Ž¥i;>ÚžŽ®ß£ÈbuÙ…Šîùº÷Öë©9ºmÙ£¢^®(ÊH!c}YQ:£Ÿ‰’JRX@©I ¾‚Œ¾FµôâöÞJ=îËŽ6pù„×Â*"¨tæJ*É…J“Á—ø=í\ø\"29î#ìË£Î÷,o°Òkú ¤O3ºê^+ÌJ„NæÄƒ3è\‹$×K Îcks$ô ¬S f%ö«!¤r€“•¸Y.2=椿a |wVÜÄ.<åÄR~OçèÉ€3þHz”³ëÛçð°çH Ûº¾i;pß$ɦ{1/Hûœu4 ê!51’t{wc ékâWëY¨|ãæPOô×ÕÅÛàyZ±I[¿–A`ÜCŸLY½¢3’™Ó M³kÁU«ßnȼ 5 á¢R‘eÝâƒ0àèpâq0—Næû­‰T£½Ê£ïú—Ê¿;GÛZOõ[Mˈ}‰ÎÄH$*ê›,gq0÷mùtê}·èè3$Çêáz’N¥¹†à’ ®Ñ Ko¿°–aBk„Ñàuƒq‰©õ…Ž2Ãf*¢*J¿ø«Û{ßóÑÐæà°6Ét„¹O6!üݺš³$¡Æ$1  ›ßâä~ÈÒYÈnóRì¾uct"-\ïW9…Í@X^$…?»¶9,œ0ø—_{è˜õå/¾t”çlªì®â‡ÊÕüÀÕP6çê~Xa3{Éç$BMž»À$_2;G0|éWÌ´„Ó£.ê’[X™%èÇÔNÀ¯º¡ïÑa:³œ*œ$`:£–¦kZÈx!ËTPÇŸ‰ÝÑ %8Ð|á1±Ë 詨ÁgâãMnÇø ‰'X(@›IáPË?5Õ»3”!Y»Ö÷PgÁeãÐ!£xÿŽpO~0Ü[H €à×äVq‰l‡pÇ…4b=ší«ý°qոТCG/h|¸ 5;–Ôv¾øëT—•˜M½&t+¡š'¬E¢ßý¶ï® Çä9ñ v-JŒHÔ•euh1ðÛï©T5JSZ6\™ª4  ?~ùÇ þË>| )UF8'ÛÖCb*hÂ¥?8-×~d±Ž¿@Ž»° Ã¿_¸àÅ\c¥]Ã*è(ùoäMÛSg‰¬ú‚Ü‚F{ú–‡cU ­ÐP%l:>>­¼á§›°PÑìæuNB蟞®ÐMSÅnjÍPBÂh*P*Èy²ã>.ÏE’­9À û*È"!‹n'qáµ6áï_ ZG;D|G{Ñ7ú}xæ‚Y‰¢n…hMC´â“8™…NƒI‘/û—áü…œ±¾ÔÚ|ò=™7°ãáÖÑñÎ +Ë@áN!]X.¿`ÜÍ©?žzÞ€67óJ ;ÐpH[7ëøð–l¾¥ Ũ¡®Ù6è%[òá°{­_’Èõt,4-†ëº3jvýð‚ÚgHåÕhÐßü¡>º‹MÒÇãøúˆÝЄ¥âlb2aŒ~]©ï)ˆŽc‡§±]°€h—êRI´¼4pL…±Ù²úäý5žg6¿$ʪ¶*9£SN@eÝA-tî¶¹ˆe>¯·ÏPW¹0é¹R»;¯xð„> stream xÚÍXMsÛ6½ëWà˜ a±X|Ìx|H\wzH›qrH›ÉA•ÙÔGÊÈr'ý÷}KÙ )ZMåƒåù°X<¼]$"ã ‘˜àL(Þ¤bÄ9ãÉá¿7ìo‹á@xÿ™ð<š#þ«m`c,3qÙKÉgt"üø¤¾ÐÖ †à áUÐQ½BÉ0Š¡ŒâQi1Ñx—ãLàË“÷xå÷¯|0ž3œÁHˆÆÃ¤zµ±ùl|t: ÀhÁF†à0y7W)" Ƥ³†Ê¢ *ÁÈè.0 xà" 8dÄ #ö:eÁ&í`Ïãqˆ'€F$è. Žl8‚ GQÝcQ#N¬<§¤FVÖÕPú%Í(âU.ð,¢0 Ì‹‹’  YÀ¨`¦ çA %¬±Š¡ë*˜W`%„ `…’º¶ &D¯À1ª!$"˜EHA Œ•²ðœuõ2«BÔ€çâà‡Ú……Ñ‚“* †¨”t bÑ%G 1cÁ˜ÎÄ+-I¹VZ’R¬´$,C °U"d<‰Y9ÒîQ£D+éÄ(ªê„Éy¨ Õ-ÆË*ˆV²u¶b„Ð`Hž‰.pQe‚ºèX1ÁDÒx!ÿèÁŸ'50Kø0‘U½˜{dØAGZE®÷š(Žg''³ù™yÎ\˜ùÛßÿ0rNV“du{}ý~vzzç¥Ø¼;_¯¶æäÄÌÏ!ÕâÏC:»ÎPð®¡/ò= êAbÝ5 @äÞ®êÀ´ë‚qæ¯6ëåëfkÞ™ù«³s3Ó|Þš/!¼ùïSƒ‹Ílþá4«í VV ÌÅl~Ñܬo7Ëæ¦­#í£—ÍåÕâùú³yçð ’VÿÃ,6è‹®í´;DheúJ ÕÇ@«¹XÆÿ1lõxèR×cë+A“9IûœhœÀÉ‹M³Ø®7æÙÕ§f»ÆIÖYù¡ ëòvÙ<ôªítµ^-¶y†/×—÷öß×/.¯VÚè½F~½Þ¼þ´Xb.gÍ¿WËæâççúx½¹¼ÁÌ“Ï(¥‘þô³¼ÄÓíæ¶iððüvµÔ1MËþ]£uÏXµõÇÅÕ =P€}¾¾]µnUVlõºZ®/›æþ¯ãWá×~àúWCÛ¡ 6´ñ¾ nóôôH?íƒ)~î:ü´Zêê;ŽÈØË˜ÙêWçØºp°²ôJØÄÑüxûÛŸÿ4ˇ_>’ÂQÉC2Hâï5y¸ž<‹Ú¢uo‘|ë ¨ì&)…Ǿ“ Ý=ë@‚>“8¢´×€‹¶¥‡tT†zd¨§©[þ}]y¬Üõ0Øò;ö¤§ƒ&ó0Üæ½LæaDÙ÷ýr¢³zŒ®â˜lÆùµ†Ã}ÍHz2¯Ý}cOŠSxeò:ùHÉ#Ž”ìÆm§{8Em*2j;e½UòöÖî¡t2‘q@$‡qDr)#ˆ”:‘Gž7¦ð†‚â2•‡0BPa¤ öpÁEësÝg±¹”*Îç`ýC‰¿‹Ùr b ×ãó>Z礎Ã|]bo ÕÃ#Š6DyºÜz·h^ø¡+õ7¨l2Ü9…¦ QFìœÒß9q’¶U¡† žlâ*ŒîÞùàÝ»ÇÞAÂ|©˜LqR'SœFPœÆåú>.F›BÝŸ8pì«°PÄꇱ*.‰¥T/riDx³õR—Qb2×ý±×øFøsÙ&ª8ïàoD|”áÏ…q{ùÁq@äSµœÜ@Ë1OÕr,u-÷0hywHË{¸’ R÷H¬~-¯átc8\~úk6ªõ£hè—üã>l¤áu!ÉÔÕL#® iÿ+RGà2ž¤Š“\¬ UX¶Ì\ÅqA¡s©Š£ä­1]±)–ã6§ž¾ñN•‡ºòÈ]y ‡êzèat÷ÎÐC¬ã"®eÂ.ßM¦wÇWÆ2<Ñç2•»2âD_ö¯~b™:œü7§ç, endstream endobj 599 0 obj << /Length 1490 /Filter /FlateDecode >> stream xÚÅXÏ“›6¾ç¯àˆgb­„$$f:™iÚl'zØCgšX#Û´¹€“lþú>! Æ,Þ6ÍÅôë½ï{zß“p° pðÓ+ìþß>¼º»§8HPGqð° DÄ‚""à- ~¿G ±ÕšŽÃ‡½ZýñðóÝ}$z#b‚(‹aº¶ÿwúÜÔÍS¡ÞؾƒÙM_N}_U¨ƒ*W4 Ó7X“(Bq’ÀƒD4q´íM•?žU›~õð³& ¢’Û®ezPƒw÷²·8%Hæÿ€9®Ôß§¼R<“ÕšRÚº,¬Ÿ«H†«5üê"ߨöv‰öÉŒo´ílz‰Ð<Õ*³]òÒþ7“¸E$FoO‹™íÖ7:JN\§Ôa'ÖÛ‰y9CÑÙÍ–7—óR†3®6µãõƉkLjaÖ‚s>`D©8=CA„HÍSð‹5V1J•fbD3ê£âÂ# ‚u¯ÓCUqÊÌw˜ýþ®û΃ÞçßìúÝrž9ŒûËÐ}<鯳춺RgºÛ!úލa“†Qœ‡ªMc?|Ú+-¹“×¶e»"¡®° ýð¢Ìcó,% IRe6Ãì>x|;|;ñvøWd'Ý6ªrtì-xSÔ [oa¨ZT†&ÒÝZ $%÷8"9gT~KF-Ò'}j¦Ò)ã(>6J§Cü× „±äÖ÷ΙL}À„•ªöP8 ‹Ô¤„'ó8l†¡LÃmår"´•£¶cz´ÄTŽ2-1îQç_Ô”xârUhW0©©šKLñX.Õ°ñʾ¶î€Th>…Úõ›SWù3Ù“B4‰…FÚÐöiÕöP[GâFW¥ÿzáCGèPÁFþù‰ÚW]ey™6vÖ:< €ñe€]øë“Ô®s;?õ_ùq.{r„Þ·N›\—i1a]æó¸Éîé©h<¼Uº«ÒãÞm³b_dš3§f°OJ&›¹JÅ´}Võ¼wÎÔw›JÏz_sÞ%,|o€N<ÐðáãŠÇaZœÜëd¹B˜¢‹joÆhu†$몕¼žš£s*|Rõå$²eÒÕ[¯Wk†“ðý±«ÝÀÂOyQاM¥l<Ãs:±œŒúxüV¿ÕŸ'd·ÕÇDù–tªˆÕhÀE`Çíl#([[G A82¡HPâÉúõÇûI½œ,lª”g¹‰o*àó¦P×+øqIJN$P¹r^.Ôœôè¶B¹¹žgw¾0æº^å…¸ìæÄD.×W„X%ÑõÜFšH´0IÙàÓun¶Ò}ída¥¶ªR*(Û½Ÿ±‡åL/¡»ò©Ÿ¯é¢|íܲ)à 7ºÐs¢jÎ.”,„ÂN6Ív Á3öÙµ† ÛHÀŒy6V¼Ð¼^˜mup¯3¬¡îNÏâT¶’ ª1þïNiÏ Âà¼KG§´}Zä»Ùƒ#*ØBÛCÉaöÅh‘%-œûfoíu|è|F‡ãY|¢â#a 1*A>®b>‹(IbôÑV`M¾¹ò›BCžçì?ˆž PÄ¥ˆ/O,â 1y·<UuUG’‚“/ÔFIrÓÑeVF¼z°°ÅãÔ»ê“_&&/9™|5™u½ïùHloPþ?«Ã¹¸ê’ßQ©s-}¬uÑ]£µ“[y¹¦)>K¦#…¿s¬¦·±]{\Ê[/ri6µy9F2Yzï@"Q9UŠáî•Àd–ÙÚÒJŸìuè®kdÿjÆ ÚÚÀ> D¸iõèp> stream xÚÍXKÛ6¾çWø(5ÇH‰E -š"½´@öÖô µ¹±R­äJr³þ÷áP²dÓÚíEO"©áóÍ›|õiÅW?¼âáûíÝ«×ï_Yf4«»‡U&W&SLd0Û­~IÞ²”ÙõFÍ“»½[ÿz÷ãëw2›ì0‚©Ô;OÿÍ¡è÷]ªÜ¢qGZ­ZW¹GW¯•Lz¢Í'¤!%3Ö gÊÒŽ÷ýz£”Jvî#ií:œ¦I ëű Dëû²þD$MK«x?5÷ë6Ég·í;¹,_m¤fF뀄¿hß–÷ÇúF$…[æ<'Òmq˜ýŸKrq  |äš7‡¾lꢂ± »}(]¼èh¸_pÎt:ÿÍ5–*e—°Ë< rOî9`#tƤ†¯eÊd´ûsSÖKÂ)–éÿ^8õw„³ ¤3Ã…EZUí±r 2*@EþŸd¼-“,ÍD°ß‰' ¾ìÊãÙù2ؖ͡ý)æÈš³Ü¾Ô‘E“Œ9ž¿€äàêv`ÎÀaY®cpÒÒÌ¢ƒÔIAŸÃz$Mו÷•£%:`-³äD ¬! ÕÑ#TmQu ýü­nð/u`ÛQ1̫þ،ÐØz“¦2y[U×çP«áà_!bvˆ3#‡ÜŽÛ‘•5} ú±ƒ{«-¨49®Eòˆƒ3@øˆãc×ý½'V9`tÁ:DÒ4M°÷T…ÀÚíëÿÝ Y£‡,8™`™H§NÖºßeëvädÒ8 >:éNˆ)É×Tå–þâ_ášMú†–î½ 8š°È¥Ç•>j”ÂZ¦sñ«”c,ˆsó@'þ‡²18÷î)âCUµ9ûE4¦ÕxIŸåža3ñ›åH©òœÙ4ç?Ö&%WYÐ!‡d`t¨ÓämMßâ¾k* fGÄ©ÏÞ8ðö‰ƒÁ•ÀF×¹JPÏÆúõë_Ð&œ ì9ÆúpRj×*°ÆÑGEîM‰ÎÕ“s½Úà ž,NãòñP•dÛ«†@tá¿ý¾è/œi¡ÐÝ‚o?+`\h2ý~tш.¡ ãÙ…¯a@% j‹]éê>Ñ òÅ¥Tˆ6›•f7zš0œÍ2ÕL˜}­ºIT;Ôs?w½kë(„ Kåb¸K÷:¿–#û1:äM¿ ›þͨ‡ çnÒ“{y0zŠ{¸\SéòWßÐx }8 9FeÈ^ñÐ'‚ö"õq }xBO4æeOÔ(:J®Ë1K0q²zÔöé€×J–” 3&TvöózVJ¨ô*km4•€~e>ÚQñTU$L[pšQn W±¤ÄÔ9k bbœà8•TˈI•3#伆läèü[›ƒÁš›µðõÅS¦2n8Q óxó\¶ËÏ=f×Lˆ>»å Ñb®ÃbéØ/µØÅûzWn  ¤UÉ—½ƒm-í &Ç(üUvô%¼|]tÁçNÞZ|Ö \|îz%¡çÙ#8ó±Þ-d™gT²ÂÔÈ·Þßµ]·Ü¤zÉȹMÞabõm3LÈTý°Ûƒôõ§¯ 0Jr‚ûƒ±þjá'ˆ«˜Aq‘Áà •xœ™Öç„°N ¿ðz>NMùÀ9.f*˦.ö$lhÀYr’8;| ¡¤šÀ•šRD²õª³^Nj8‰+,V®þ} M þ6ë‡p³e®³wÞð»máœ`e"i€J¡ƒt®+yÂQïç’º$>—¸n‚áÕn뺮hOƒý]4NÊ?ǵÃû…?3œ7X­ÂÆ.T\õîbwUŒ[k7ß­ßÒk†ùgíÁh_©5å[lŒ°ËµéO˜"Qd°UÿÆÓœ5M•·ÄãäAŵÏGbbg¾¿Ž« ~A™NÍjNºáByå±z¦@ÿî,åÙ¨åß„ ß·ÎÝ„¡Ÿôtò!Òzá.h½& ­ æ^TUs~˜ØÅû|’íºÏ—Ï÷ùgûëË <5ÖåC£fŒxé»­d™2/ëò͹F¢Ó£Ý\y>¹A²iÓ"dQd†µMÇ «4ù©öO'©…öË«(Ì:|£q³c–ò? ¶xú~š­a/è-ý¥¤7´äZHµcp¸»Pxw<„ ·íƒšÏ ’g`ñ™×tžÏWéŒèû»WMî endstream endobj 615 0 obj << /Length 2209 /Filter /FlateDecode >> stream xÚåYYã6~Ÿ_áGéæP"aNžÏý¬æp<£GkòÊ1OqšXÏ´7ÞÛ²}m3¤ÆAõIUô,»c•£œçyÔ™¢©·WÊ:ë !tÍ®¼‚d-^IÄʃ° N8B8u=õ>b'§„­Ú®]$’d®´ac{Ðlzr0Û÷Ñ"HYÅóHóIP Å2žÌ}}ºÅçú»–=Z†8CóëÑÐ%ÆhŒò]ÙúQ¯ „YÍ…‹!0>©ð+ÞÚ'G£5-)ÉÍÞ†NàÆ,µÐL°ª€(&ÞâÑ;ŠAZ€ÇCr4wwïmº»»! E<3 Ö®iÞd>æ…óT(Üj`ÓQÎ*…T3• å …ï°ÐYÀwNFëçÊP×åYÇ:™ÔݹÚü¼pã1/ë¡€î,Ô´‹<ÛEÒ.6w»hé¢PkîTêM@ «EÀÉÉâ™q°5†ñ¢©š6Ç3(G¾«gÖ÷Jf8kEi•p‰×NH‹k¦%Ik…×î9”Èø¾Šñ$EwÉÝ‹Xàâ¬)É ^9xt¥¯±êµ‡!:;>@é4Ä`‰êéI~@j/|ÄêgícWðEi!oÈØ#u¡ˆ¦fÑ<º²§žZX¹ø±u©«îÚ×> O`@ sôÑ7Z·.tؤ5¢;æÅÙ'åŒ/·düWðe›w‡®"8£3ˆiˆ3 #šEdAÎ@‹Ä:AîDÜq†¦ÜÙ$à‰1°Î6)š¶µEð™hš‡0[´å½ïÆ•­¤ú,à¶g¡±ÌV¸î”?BÅ­…^kz×û™ž<R´ð|ÙZ)„á8}¹Ž¦JdEÀPCås±Ru=Î ìw;šKé1ôMó–7ݬ¢r~i§|uÌ”/C.­¤ž'ïOƒ¦7û®ü-Hd &Yr_$O ŸÄÕD˜E©ÔBÙŒ406…†SøBY9u¥)ÜŒ-aæo¤\²ŠY–ÈÔ Ÿ$ÎV‚q%ýÇÌÙä$ˆx“E÷–éاq<‚¼aÇßOÆ'Ãÿr§hN-)•‚[YÓlŽ䬢wן 2ËXÌåòjaÈx¾²Á;§fø´µŒøíŽZÖÖ}kú"t© ŸYt‡Œl“ãÎ:sC‹Ä#%4°ƒrÅæÁXfŽ—å¸@hYNàÂCNxÁØSéoÇfg¼uŠÏ¿ÂëÉ=æôã,àÃÓ|X.bÃàÃ2äÃÞ+®ùp ¤K“רÐ|hª §c¦£ Ã7IN9p$R‹êÐ$^ú;"¦,œ"ËËÅ>1h;Ä uá›2Mý]'`D‡˜•.þë¡[TÈ]‘WÃW(ÑÚþî@•Õry®?Øó¶mž.Ù‹³T«ÏÊJÎ^ÓâN¶t#n+ˆP9ÑÅ¥]ù§¤©Î½Šâû¶Ü^rç˜ñ0`@@G<|ݘò‘NÔHÚ ýc`A‘×tõ†‹þ”WÕ3ÍŒ—SIâ ‹LÏÔn` `üo¼Ðs^Q·„¨ù…TAi¦8Mn@Á ÿq¡¨Ÿ†$(¶ëêyÎrÿ'בò÷…ƒx‡ÈŒ5”Ê> stream xÚYsÛ¼ñ=¿Â“‡†š±ÞÇc¾4î¸ÓÎd&n§Gú‰…š"U´£üúî2¿Œ_D`±X`ï](¸y¼ nþô.ïoï>ÞÅÁMé—Y”Ý<nòè&Ëc?ÌaVÝüÛûÜžNm³ÙÆEì)k;³¬î7ÿyøóH~¶!PˆdK£Nzðñ®˜‡~&°@È߃4èôÿÓé Æ!œÇÞ'ü$^9m¢ÂÛm¶ðÛÖfÏ«xÀ-_ŽŒrïÈSBz˳ުÎ2¥cEñ§ÖÖêŽ?¨ ´-?üüÀ+m'€O Øò¯þ 1n…KLʼ>o²ÄSõðKé~ž–o’N­U-Líú¶Åðìy“¦|MŽ {Ô¼Ó¢˜.g« µ¡ätLì}¼ƒ[…‰'YÄlñõ¶qä—‰èû·Í6 £Ô»Gyê]6qèµOŽ gÏ›8¢“2ôºâÑ=Ü`‚güeà —Ö|ƒ¹tÀÒ¢Ð/¢O¾ŸXÈr/ÇOᙞ§MkyðŒ¢» Ï*ó=cÝé…`yÏ¡kO¼¼$™É2Iæ,A€%†žêRÌ©M2Ï<ÞˆÜi& :Ù§änx¥afÜZ 5}4jÕÈI1?0£ñ7Û¤(¼‡ ÄÌ–a adÕ¬nb`Õp?œ&û°‘=_¾Â5¿ñ˜l¾_ÿxǃ¬‘@Qi4š -"¬8L,Àd1ð톆—XOiôË„BáwÍö¾‡qb„ýÃvjoßãñQ"¡¹ ÐEkô•ÄÌx æóú¿þ…!½ÑŸxlšÞT‚ ˜ÑªŒÌêÄ^¡ó÷A>”;ãÞùÆ—B”HN ˜Ls}ÖŒ¦79»ã'^Ž r÷¥¼f£yHÊ“:¾vgGeàÂ}8c gŽ-–7¤¨Ðû\s£øDž‰HVÝM ŽÐ K½~œ:EØ¡kYu›ˆÛÜðfrUà³à-'¦}Íÿ ÀEà†«E|àb@JáË1" k2‚´»0Ú_öµ Ûc×Ç+'n«ùS"¬ãËÌaèy,ÈçPŽ€ùÙ@Nå9yÜÁKþ{© V/Hñõ‹¼ŒÚbÆ0úvªpªx}YÈ|ê¶p™c ǙžÆA´ö{ªhG+0>7ÄÀއ?û[Ll˜öõÀ%*Ÿ¥y+>J®)ÓV^Œê<¾€ÃÜ]‰‰«JQ ð['BL-eÝ´ ;¤ÿtAcE 2*šŠuÀˆúX;þ5'¿ ~´Ë ŽbÐÔ †šº˜uíIÑÄ=TK˜…2ì§öC²4±ë l¥©KÖã# {¶ÁH”R½ÍE‹ÕÙ(Ú^þ]pö(º8vLÊpÕàsjMélì.´}C‰wß<±Pªã­W¢uûE]WreÎB*ù˜2ÅÃ`zä†iF±PÔY·‘¨­tá»nèfÀaä?ºÒe UuÔ.¼ˆ]  ”",q™¢¢RìNv0/cÏÕÙÒxYlùÄN¾~^þIy¹Ÿ…ùÍ6ƧӒÉÅÙéËûÿße·´ endstream endobj 632 0 obj << /Length 2870 /Filter /FlateDecode >> stream xÚ­YI“ܶ¾ëWLéÄ®ÒÐ\À-7K‘\“Rì©Êx©²}À4ÑÓˆØd‡ 5šDùï~Ø`O[Ñ!' ððÖïÉÕÃUrõÝ‹DÚ×w/¾y—'WMÜ”Yyu·»ª²«²Êã´‚Q{õkt»É³H?˜Íu^çÑ4êÞÙisFvè™f~KÒÜl'o~¿ûÛ7ïê`·4Sq™7pmv·7wÊó¨6Y=ÊÀ˜–{Ó€­Šî7×0mxÐâª÷kl/k÷2ï¦MVGOq{c&acu«kÏÈuVÄuQ3;7Gø>‹Ì4û‡Íu™'ÑhŽÞâIeÖ0ýÄ3V¦oÍxé®UeÜus]¨::ŽÃè8¨¢ßÒ\áNÀ/û’=â ´ãE'&pêž.Ç}Í zóÈc̲·®Ó4n Ñ`x$3ÿ UE=îíµ°‡ažF[T«îyÀ+±Ÿ‘œðkµ|æv>˜Y›Ó‘lo¿ÿŽ;ƒ|þŸp™wÃxР£ëJ%,#¤vzšüiVöû¸á3—MŠ@bo·†îšÈ% ¾äcãØvskQŸ8t|©vÐØ»‡N'fƒFõ0Æ­ÍêEbîypÓw—,*Y›Ò›ÙMÃÁþ[OàŒ£.â2 MƒVdM°$Kâ¬T~Íí¸)ÒÈì ·ý–bµŠZ«» NJã¢ZÙ$ŽJbCEvÚ/_^ ºm}Þ`˜žD?ù¢'6¥…/$³­CÇëiµFB k\,‘eJ!g¯…Õ/ŽFGgG2UTn¦ý%ƒW*ÓÂä ²Œ¢qÜ.¶—7nÈ'çì=º†³®YH‡›ír6Žðlî-ë¹y‡ùÈÝÀ^bL‹%‡ð³U¶ë¾W‘ðqRˆHzÔd&½ÆÎ¶Æ+ÉŠóS4G“ZÑ#ã_áýw°Ä/GpÚ~û„Ã˾_Õ'QŸ"a™‚†›<9Œ 4gá DäÔ„³æÓĽ@Œò¥î[î1S‘"ÎÖ¼‹L¼­|²3z‚쵸9r½´Z?ˆ‰käþãvÔ¶Ó÷>Î}çãŠó¹P܃·Pà4¸ü é¯E_gЏ…” !ù‹ŸÆI€17!¼(ÑÑ>0ÀÑÖ B@8òæˆxsª‘”VùÏô‰Qd%ŠD¶Öð¦D´P$Nxx¯1V ™ CŒæÁ¦Ï7Xiä¡ÓÎa^ w±ÑÁ¦)0yŸ- S%ÉPT‡VŒÌ;4.¡°©* ›ÐÑã½l>ÊÞ§Ëâhmmø½–­9ˆ ,½Ÿ»ÎL/åð^J(%-<ðZ±“Átÿ\y9äœjA;,Ævú1^Äèy©â"©Ï0úÚ>¸ºHf n;Ó_¬;–ìí7PEÆÙ;˜)±í†þ,ún¿trfÁ ¥™Ð8ÜÐÍŒM °A–O´Í‰',;ÎRï rXå­o; uV¸ÅþN»É»ß0?ìà )g?¨¢g!rî{³…<Æ@ˆîúãëaî1§Xó`™3 {~2—\³ÉbU—^¼?ï a—š±KEˆ™ „=±ã cù@ >Z󈎙Õu˜×a†Rõ@™j8`xÂà8O²”·×é1]®ãI5§êO¬áU#qŒF6ô—¢¬a'ä“éÃŽ[®93¾&"$•û ³ÜB`aTAP×£ h¥Ì¥„`ÏœbŽÈ>`±îÁ*&þ´^ªž£„6˜2@´ ôëÏõH´Rš—WÝ©r“î·’#òì øÝˆ:Á9©ÃsŽ"¬MPÉøÒ—P$Ò@Î$4d)Uq£Ôš¯±JÒ“HT’ˆÌLõ%´À r…“š)Ù‹“ôÜ<É›fÀÿÁRØ`§x[7ø¹X¡9 îË®š×ŽUuÿЦÚ~5ÛiÞ‚´„„ 7ïA\¨Þ¢!¾~ý~öËK&16(À<¨–ý€ykÑxü ½å(Ô,“¬D^Ê„RJcb°°Â-‰ÄE%!38)`èÂ¾ì¤Ø;!8øˆKoÿgsÛ[lE”²Dž‰]•«AÝmçòø†-ÅB6^wR®K€yäögÈ¥_ÊP¶þñ 3/‹ÀWa€Æ‚-(Õ±<²}kD¦ÐëQñÏœ¦'ù SК Å2ŒD@–H=T vþ4nC”ZD¥ Š¼‚$3J4¼£æés…âHÝÏÍ3xAúéæíÏ‹]ƨâ$úv#$BáÈÄ´ü¼ÄW€¡¤¨"YqÀï;üLŸT†›ˆ­‘§ë… ¹9·¤É[P gŽ¡Cò/ç>J`F*x€´Ë4]æ(w_›z©&ACÊ PÕpä'£BŒ:S°ä2Ú"yy¼Á„\‡ÏvpƒsÖd‚Oï¸å< ëoÿúî³TšTqzBsoè=j8¾>=gD¥q¥–ÚiyÓÄSœ™øªçÃcŸ½'òü‘ÄAF:Y" ¼ ôUÕgþÙóc@àINÏV‰Dl·­™Ìx°üšœ`ÔÉ*²aÿ¨‹‚¸=ÌOÒ h'9nY½®€˜FnÚË-ç®]¾  |«;í ,ž¢* F ÈÅ‚^-ÊiƒŸæ tÎ6•gq“ø§Hp©ŒåGÇþPq|È©ÄÃQøîYIö=Š :E‹Mã:K},üÜYR²*Ì⣎ÞS´IÑípˆCŽ»Ïáe[¹îç¥Âò––0’LüËôÈT¡½m÷‚ø¤ñé- ”Ʊ#yˆ!¼L«óJÙ—-ÿ£òAOaê8b™ñûÅ…gqúya"`DPÑŸc~ WP>šhõØòˆÞ¢µ‡!@@I`¯q‡â\®®²8Qïòí£Œóº‚8uZtG&VÄ| ôT‰Ÿ½]èÅU@þ…Ï—š¥DOè‡ëtõS‰d%¯nY£àÈê -yüŒ%”Ñí«ÕsYP0Ðï ¶ððwfPá-??zªqÃ'¹å¹âÿd]¿’ _Y°Ý p4€ ྠ€¸®%ïäÕê‹·w/þ6Ý´ endstream endobj 647 0 obj << /Length 3573 /Filter /FlateDecode >> stream xÚ­ÛŽã¶õ=_á.Df‘ºÈæÙm·HÛE2èI86m cK®.;;múï=7J”­ÙL‹¾Xä!yxxxît´Ú¯¢Õï>‹äûÍÝg_¾-VeXf:[ÝíVE–I²Êò8T9@¶«ƒ»uÍú6Žã ª7Çak¹Ó¨‘?E*Ù­€Rqâ *<¯oulwkÜðì§5š'àdq°iN'So¿Zÿ|÷‡‘P÷ýò­Î=ro“0)âÕ­*ÃDL.n/dî[s>T›î_»jß} ?HÑ¿ñüÔ·* “L žœñü©é"]* Íôܪܷã/ÒÚÔŒP—FÅa\É„ªnúëMUIæ¦ô cì˜_vSížÜîBò¸x”®ýØÛº«`{…cO̾͋àU¸¾Mâ(¸s„³B®ÏG­£P©#f… L‹¦ ¹¦Â2MyéÁkâ,>¬Ó,0mÕ hÎ= Gä>ž¿ÝÆà‘â ¦qk›ÞôVæÁ’ƒ´XÁÉÒ$ Þ’d¶¼¸ª»ÞÔ‹R–§×ès1˜Ú™ÓB†»5iôù ø1;ë‹ÄrIœxú#Ñöu¦?ÿOê+¦;&6×·*€k›µÎƒƒÓU”á™Ö>VÛ^F›Ý‚F§ÔIp/bÙœlÇsSQ×n÷e öuº9ý—lðÁší­–lL-ü™©˜wì8hí?†ªµ[^q°Õþ€ÆJ8÷X¿”GeašçNyhÕ‚¾Ç ,‚v³B’¯[Ça¤Ò¹˜ýÞ×UDv&V* Ò¡o?šÓù(ƒr¥0L—ß1ÔðÇl˜@‚ PEŸË4R5bU“ÅUÏß{”œ'n')ñ‚¬‚6ÍPgl{»96ÄÐ «ÎÊáTBÎdv6¶ª¾Dz¦ßbÓ­‘á~wh†ã–Û"ÜÙWpš]²Ã:ÒaVö~‚áÜÉÀïõé2TÉx“H×õuƒÝVéhÚM½?.#Jòxœä _ä×t–‡y¿Ô„è¢ãëä×-‰ï1ïw¶ÿî5‰@’úÖvÔŽ@s6–¡foªš|kît–èXÐ 4ï[AeZ;NäihŸ·¦Ý2X¼‘l†wB`>à{†¼ÿöíóòääå²ÀEü5üùŽÏŸ¯ ¬ÉÁÃùÓ4ÌT¹Òa”hFñz‰Iq‘Ã-L“4Lãá*‘ýߌðtåÿÆûoE3¼Û¿M‹1¬³֬Ơªk²:Ÿók'ù5Iѳ6L¦!ª¶{…¥A7¸øM— E'ùðÝ\‘†y<ú­?ZtoÛÊ|Ó,ÈG’Ó…¸P?J£Gð$ŽE°Eän8&ÐeéòX'¥å~WýÓÂrEôfÏP¦ÒHÞߒçmÎË”O"ýrÊbwˆ± ¦¤×ÚBÌhÇþcuÆ9|É)cEE)t¶¿aÐÎÑ»w¡Á›š¡ÂÛtŽôÈ@)L@ ›\%ˆ¦]À黀´g¬#¶×(íã‘b%Q’Ö0 šÑßÓùºt¡\3Õí\tK*9z•5 ¶³m‰,ªÀrƒ¦ e‡á¤ê³eÒ‰ Š%¤DÇY7Ž…N2z2°nÿ ¸,Wz9·Ñ^f³t4d „­S" É I²ˆÊuÃØ´ öØlAã øÅcPôÔ1eÖH»Át³zî¾Þ` (X¿·fk•H<´øÎ¡±­ºóÑp-Á?„˜ÓÝÀⓇè~™Pƒúލ±@~ÎŦx”Ž'Ù1¶sX¤¢Ð\v<µaG÷œ5À|H§¾Ä¤h£|§SMAcŠùÙfôÐæ)­TeS ˜™‡TƒU˜D2«åYkm+!ˆÎ O‚0ƒ 7gv¬™tÁ*µ_—šfµ<Ís‰DN#9 ³äÝðKÌX ö9ñ\ÆÈ§&œÛfß™ƒB»”<@”Y&c°ý¶Z¬ÞªpÊCE{‡›lpÑä¬5œ7p~²ê$ˆ1åîøÅ#^ÛÀ4,²ÒË)ŸÎÙ)ĹžŒ/´‰Ê]ô”ëñU ÇªpÏeŒæ¸ÃáÍÆ4¢"j-×Äktº×|æÉh¨9tqD\{$ 35z[{^x=ÔI˜éñømK’pßÛ“=á¡ï]z(äºXŽƒÈñÚ3÷ŒÄjvNò’CH\9ÝÕÞ¨xøýÂuxžÍÃs|?×|*¹«;UôŠà¯ò²ï«¹ò^Àa`Û0¬â?;ÖŽüܯƒÇ¶¢×vóß4 °$óˆÍ…ÿ&ydßc>£´“.Æ9Ò„…àÅ¢Dåê¹Ex>)¾ˆ =g—ó|üùçš#'–wh4BóÀ…¯„ _rÜZª±–¡ŠÇ0‹²ë˜´`ªó?Óëd6h;/+ÇÑ“÷$ð, :_I?6•‹ù³sæÐôøŒÛºÃí.7üÊ=fÄ“oþNÿþ¡!snÉü@zRÏË\jŸÍˆL,]L¯`Ø_xüBp%Øegi7¼’ôu8öÕ­«¿d~˜äú^CVJ 3äO:y³?I¬t”CD‰òeXò7Ÿ¸˜Mzs÷Ù… …â endstream endobj 651 0 obj << /Length 2234 /Filter /FlateDecode >> stream xÚ­XYܸ~÷¯èìKÔÀ6W©ËH$q8Ø\‹’Àöƒ¦Åžf¬–zuÌ‘Íþ÷T±Šººgì]äI¼TU¬ã«*†›»M¸ùã«¿¿»yõÍÛl“‹<‰’ÍÍa“F›$UB¦0+7ïƒóvei·;­Tp.îŒØîR­‚m34­ï‹šýÑðÈÖ[ì·;TŒJ3 Á‡P껡5M›š×o·ÀïiµÄ¢4èš=á‘f`™JX…Íýp2tê’ÎÐÙúnâÿñæOß¼ÒÙ­u¨E”Æ º4\“NÍU³ó§vRŠ”óXœÎ•ùg‘Ó®27š¸û¹‘¢Ï¡mN4röÁÁßÞ¼¥ªâE”{4œ ß(àYðØ7¤ŠÂÖNç¸Ö™{4Œi‹j"éH8!%4E_¢j‘k½¼à¾ªµ‹¶t¦=ØWú–¡Ð‰*™HãìY­¿GUüZ}üá`@?²é’ ˆ¡t9Ã{b*IÎ"½×c¿oN§¢FáÒ8¨,z,Žšso›º£É¸~¢dpoÛ¦FŸQ‘óظß&¸’-n+ÓM288ÂÍ.R"“š¹ ùeü)Î4:¥¨,'JïÀŠ þN´©eÚSCßšS›û¨Ô¡ˆTîôÙªÎ4oÚ¾£%r/šªjÐìä&jÎ&ÌÃÉñéL^/Œ¿2ú΋Cfç1=k"™W±ˆBéeïú'ts-u?lc¸FOÓº8™ÛEœf"ÊÇ8ýmY.ïªû:{W½á»u½Ã¦Š·I<ú¥¡oQ3zá~mª'VQk< :iœ~'ìëÄËúÒy ƒ¼[Žúiv¸. §íço+D_÷¶?‚–Àãú£E,O¶Äv,%¹DŠ.[¶ªèxi»sU ÐOþC—4ÝeÐNˆŽëMÍÀA2ºÅ1Îãš $Í…Žå§»¾l†þk¯_6Eoò:áÀ%­‚p#€£0]É;Ç<в´ãUcŸ—hR" :VÀÞžh…oš“c¹ä ¢è~Êf„«‚ÝÏ ÿÁd™KS¯hÑ„ä0š og™\Q.ª®q÷ —€;Ô¥i»°3h7 GP‘Ç6ôÞ)ÈqÃ©Ž•{;:ñ,þÞû¿m‹–wí¾süÐÁþ_°·ƒ­zŸ3š¸q&/!îÞš‡×pïøä*8A–:aVŠòh†„8ÃÃÐPú\¢^ •¦kÔs¿gÚjPø‡Žæ£gà-ˆßï»ÇõOݸ0û¿¦ï¤œy7ÀñÄø3MÀPm:¡ÊÒ- :ï¢Ïm©ðô”Ø7–G Ê8N\Ƈé=)«§J+ŒgêÔa2¹0ìšÖE[Ñ_Ë(¹é§7Nîpx´•%‰#/8§Ê|P‘ˆÃÈicÉbãà’£J… G†\ÀÜo]ÙëòVŒ®ì”æ€Û¹¥ÁÀÃ.(7¨NâRí¥…‹+Ó. Ä q6ÖW.+¶'ÐÊëŸ\áäþ²î¢@-†ÒàC‡4Ú=ž*ý—ÎX¶ñ!I£èó+†ÔßÐôGúXÈÓ}Op¿iíã•zùZ Fö ¥»6 MVEtˆýBoZOìpÞûÿHE4FÔ\l‚HçÁmúºU`Ù*ç“u³>(ù a1Î-³<·.Á‚¥îmiJLa:ÅÏÔ¤ìæ$r~rý wƒé˜®íik„GTƒ¨©KÂ6”±6W¯ 1õØ›ºc Æ`a˾âÚië¢NGZ ËwÜÊ€ÉÚz¥“_2ýÛ¢sú¡”x­@Ÿ:ðâY2Gþ«õTCO”ä‹Ç/ñú:S/yýäÚTÓK[ŸñÎü™à¿„•Z¨±‘£‚Ä! 2zb4”ˆzü©o®ÁVäšî«tÙòp…®†1ºhs­:D﵄Þþ_äù— t†Ï•àì³ ß™Ç3ô/T•c•5“ù/è¢y:ÏX0;í§áLc©ø¥¦®ô3úÒU`}ÝPQbÂ)¦Mˆnçê0q"QÉŠÇ3Œê†OߎРìÖ˜ËÚø0æs ÄàªtVУî‹~^ù>@`q$uÜœŠO[Ÿ?°ËjyäÛh7ùDYêL§'gÈÖÞÙº¨~ñ¢%G›Ì{T¿)]¥ò¼5ÈÀ2ž|9é5Á=éTO.åPÎLEfK•üµvÝNÄ©»qIsdßÑÐaã•#3C »|þm £Ûù‰ÉQB‹$usÒÁ\¢#Ê%°XxBâ$`»+édÌHÆÙ3 æ?~`êéÁñ/2UáÒ¥–\(ºgÎ?úŒ¶)Õ¸7G¿K_¹„·ÚN ~:㜋Ô«G@ˆ—îÚuï» òãg:Ï…3EìLd–ËÒsÙ˜ããÔŽ0óÓ‘€fæ ü-ŽDšªå5¾3]ßÚ}ïsרÈ÷¨+×ÁHÔ·éÔòâ›ÖÚ¢vo¤ZkoØ·­™aìå a”b†cÔÌ0sU®ÂP¹„0ùeÝ+­D¬ã•ò} ¯tÉ#Oåü%t÷™hßÅ"LVõñR¡k¥aç+_viL<ô ûc.*Ïà²?K¿y(â©iûê7Ž…–kçn‡ºHy|AsàŽa<> 7Ôôîö­ûÍ=¼ŽUÚ ˆƒÁ?ÿü-?̹:ÔçcÀÃþÑuÍ™Oç°b\â¼<ÓS™âÄIŽžy…ÃziOS™ù'mˆbh•ô*M›Âu±G¶Ô¦y·Øÿ&¦h£zUbÐ-ÆègHÝüê™ç¬¡’Ñ–o8l)™SEzn©.wÏrNÝRØ HXÓsf™J ¸{†¾“ب|qè7¯þî-ú endstream endobj 660 0 obj << /Length 2852 /Filter /FlateDecode >> stream xÚÕYëoÛÈÿž¿Â „,š\¾¯ŸZ$vs¸kÄW´¸»+‘’x¦HØúÇw^Kr%ÆM®_Z0w‡Ëݙٙß<ä]í¯¼«»Wž<ÿrÿêæ6ð®27‹U|u¿»JÔUœ®ŸÀ,¿úÙyZ­åmQçEûÝježS<1µiû²Þ¯Ö¡ œ¾á§æÇ¦ìút “ pÞ}ütÍä¦åç§¿¯àû»Õ¯÷ßßܦ³óUgtôý¡€SâÔ9µÍ¾ÕG^¬²ÙêØw½Ä¬/O«ÈNé?r{¹{º‰—šH •¢Ÿ¤ñ‘8'½/ðã+˜yn’¤Wkßw³HtÒì`Yè;=1ƒdW‰³]­}gXùÎE½‚½{YÚð=ѓʚŸÿvǃ]Óu“ÀþÐw~ñüØmaý®ÞêS7Tº/rÙoº¾Û¶å©7ŸG\<ük¦à…ƒ(°'’F,i·Õ•ÞTxV;ŸqÇbÛÓ7iäÀ¥œå¶ã·Ä PájaÙYwµŽ=>ýÃŽWm›¡íd_Ö#Û$虸mXº¬å€oxøž/N>;êöa@[ ²ÌéC|XÁ‹b±úÀ2ŸqM3ðää+NÖ«–gM[îËZW@Ý ‡¡s»JÙ ñ=pÙëz[ A×î;$ŒwMU5¸õ#9 ®Þ6Ç£®s~_•5q9z¥y‚±'3ãõ=7Œ}$uã006/ž Ž©"g}Âx„6LÃ@( Ý¦úK?òxp‚7EÝk|åžòÝD \ÜðÂÖK¬È…±‘°G¥>»|xì<©q ÌïR\)u¶ÃÑø{½¥ˆ8r£03n|Áþ¿iâ†ÉèöäR)»TêMHd\Q`ò\[¸š´…/NåSQu * \x³¬Kä c‹r\fË[wpceCmñÔ·zÛ#ÖÉ LÎWÎ?~ü¾ÓõmˆHã]ÛùµÙéˆU±±¡ï¦Þ³FÿãAA”šSñ£Dî Èt>Ìùø–ÎguÈΖ:tàè9ßÞâ€! DLF‰xÔyÁÔ ªí™ÇÄ#:3Íb^ÊûøNÂøó¸Ó“)vL*{y ;z~¶ËQ齬y,«ŠW=ˆ¶L/xÇZvÚñšÉ€q¶ÕuÝÈ> ÁAWÕ³…ADNšñL¤7HÁÌ\3•€ì¢¶¨M |ÓÊN¶a×iªiŠÏ¼Ø {^ tJB]C’Ï…AÙ+Âl§Ëª“Cd¯FÔ#k©ÈpŒ‚ìº`5î× šwh£!" •õ®¬È~æG3ôí×Kû>ÛñýŽ™¥[-u”y‘_[7àÞÆq©Qí~(ºŽ+L6(Ü3õÉh$/ÑþDÑ¿øAøt¬^Ïo eÍ缑60L‹¯‡‰x8AÎ À‰r2„_ ^Q¶†x‘s@€YÌ>¸ã ¥mg+ºÔ´’ÇÉÐ$IÝ,¸@ÃCQ¯Œ/âTwŒWe}z!cÈ,;[h²Üéo¢¼ÀÉg ýmÇè÷º[²ðX¢µ„âà7ø¢ÎLDA/—·M\þ~ŸñOzû°þ<Sšqpߢ6šgW(Gøö×6:õ“C¬Ìõ¿Õ»Op®‹‘ÓKv¨kf/Ifö3^×]jÏR7º0æ1…V´+²âevùð˜¯}l˾/d’2Á? š•®÷çI”%B B ÌXö¿)iöÈ‚—¡-ò€7…ÁŒ˜ÜCáüI{‡—í‡ûr> t7ÿÞ÷&öˆW7ðÕåàtkŠºë‹ö5Ì ¾Tn9ô 8H¹¥ÈÇÁµÖùì¨ÅRÃl!ªò&Í’Ax©µ&/[*EÊ¢f>ÈW?Õ%˜Ò“È+1Š_qø„Á©ÒÛ‚‡³ 3NÔëùyÝÈ›á܃@¹iƒùãBºYê›ýðã»W*Õ›/šaºQªÌG.›CèA›FvqXŒÝy Z¹1ù+8ÓY=e#(ɬ@ξ³@ìæÖ¿Œ4pÉÉÙrK8 ŒHi€¬Š-êRPygɨÙk.psP/IéTè¶*M¦ý ìaüÔõÿôóë¶2!sUþüÖ]ÿ¼”a‡ÊUQfÕŒ–nDÇ=E,Ň¢èíD˾Mô,ù»—EŠàX¥þ ‘f·B’-X&@R¦lÑüÀ˜]ü’ ‚'çBvL$ÿö-)ý™”fyf! ¢o–uCxF º6¡Ÿ–Rp¾Ø]²SŠA† Z¨ —.¹Ê²x2~‚xø“%©Üb2 (ám7ÔdŒØ-X _P*¹™—XAìÓç}ß”§0«‹Îg6¨·LïŒ&“Ò.cY’¹qrÖNË@[ÃSY!Dêö™)_n°ù^à¦áh °ˆèuy`á*¡n¡€‡ãf$¨íŽ'Fé¹)åzéù% ¥%Vç'™µ—¢$¤ê ‰¦ÃñR»J‚¾Æ¢‰S‡ ·€|RŒ.IÈèŽS*i/N¬Å1èOØã ¯N/á¾£€¶™m6r¿åTcÐ`S¦M‡Y×ÐK;AžT¶ݘ”J®Éc)­òwéVÁøÂÐ$ÿáj@ËñjMb8%•ºííD{Ìë¦ÒgÚíBŒr¹¥öOj©Ùµ.–”«F綺NW„D>\t4Åœ€ÍϘÿùÎò4,yÎ=-ðbç#:ZŽ˜1æ±Ô ^ àÍÛÛ…ªÈÜP…Fa£\*ŽY.ØÂDÝnJ¨Ñ5qzÞÅE5>ðuT``*:.›ähëvK¶t"•e¬-7JìÅ<°*x(Žüq‘—=ö„éÊ• ¬0¦¨—0EeGcÛžcÎîeã &³´†úoÊ^TFþ‹-G™bkж ,ïz:s;”U±.a3@j®5˜±9*Ë¢©%·žšHaH,pÕ¥¬‰š¿/.¤Îî÷züÌ´||€0WŽôG†ðضëyraL$€<ù Ÿ¤\€€Ô>ÿó¶m6ACÏsÞ‚‡–UE ¼kÚ%,ñ7 Æ<íÔ)¹Ð§ˆ!Û°.wÒ!„ÌÔGLR`ýÎ dâž ìkfñ%˦…ç bq3Ú7²mZ4f7i˜zVï9£bˆë®ÒïуF ºâLÜ‚ÏÈŠ®ÿdÝ…ÔÂðkor5¨§‘¨rh†*ç·c¬‚±®M™ “Ùï,0£œ(3 ôL«8M7c3® RVÑ]„_ˆ·]ý¦çÏò†Ÿ¢ôg£„ËA±© 0ŠÍÓŠÿ_V©&DùÀ¼¨ì®ÂoC×ÛK€÷Ö˜šˆ/ůè`$Tê&†M§ÍPVV\ ­¸~1®Px.uA"P(<ŸŽŶ…Þ` ¶/˜Eøð§Þ ÒÈëÎVR÷‰£±Áø‹½AH~U> stream xÚ­YYsÛ8~÷¯PíU1oæ-‡xË{7JMR3ó@“Ä EjxÄöËî_ßnt$%ZÉ/ÄI ÑÇ׆³Ø.œÅû ‡Ë7ë‹—Wž³Hì$tÃÅz³ˆÜEy¶ˆ •/~³®ŠmW‡åÊs-ùj¹Š¼ÀºÞS»nº¢Ú.W~XW×ï±â[¿;Âßöl—¬ÿúò*­ ‹ÚŽÃÎjéõNÂ/žc¥ýcQió„MašzÛ¤{úßMÆ 8¾C•P[)êaÉÓý¼ÀŽ}OÏÎêjéÆÖwüÀÆÂj–ÂêZÚ3%J4ñÔYTÔ‹gƒÅ+O„vE‹•v0‡6u³O»åÊ=üVïjj¥•×,qS7v­/¿Ü¬p{Ü ((¥ »ÀðzW´¼ —}+7}É}*Ÿpƒº7rªé-÷é·¥ÞÊÉB5ŠnÇ4¨ê½'âàüW^´Y=°ªAãñ>w@çÖ§zä;¾U^"¡^âhBjeõ*í»]Ý´4kŸæ’FF4bÈ ÓÿSPµ¬”4DçÀn}Z(pG@8i'Žu;¹§ÚCQ–´Ên‰b‡‰Z#xâÜYÓl‘vTËÒŠ*ò‘Èà95• °B–ñ‚i•ÏX´ëx¶ÿ´AƒùÇÆ QžÌº‚,!2ú¦:¡z0Lê—Tá´mqÔá^…™²r½Ø¡7åÍèèFÜZzZh¶ú_øvâûÓ¿?(ãz08Äföb†=¾kÎÂ/HôlBaUuGFÏ*}Y½?”²#艉qJÞ¤Š6u*œ¸W¸bå²liF½¡%d¬ \Õˆ:x¤Q.mx«´lkêjë½|@‰(Æ&ÂŽ…˜Bi^(‘6’¤šã&@ͮȰ­°+1×R³è¸ËØ#;‰ %ÓRÒ¡c‚:ÍD6¨-Ø{åhXG©Æ§‹ËK³UEå bà^2÷ÄÊkÚÿaîÃâýa°—{ËåÐg䄺ªU¼Ôˆ3´$É"¶¶MÝ`¾âWdÒ®“M5:@É#,«Øº[*umÖ‡Žú6„]k“×ûºŒ}ö41q6eûÀ…9Úg€lÒwçN§­CæE7±AYÌPµé•ü©»nÚ¢®ì¹ˆ`ƾ~",pÜ`l&ž“ °rH ùÄ_ì!R¡2H[à'»¦¸ï;EÛʉ|ETFžá8!%N$ƒ¯Ê:Íie%ºï‹’«ïßJ  í$AüÜ¡=ß·}Wü,,€c`H¦L*ØU5Êìû”qÊÁßÁøÕ_—ò1%{ÁæÅ-øöÍV6šØpA[¹¸=h‚Ù1ïûÎvA•„X—Õb¬ïESW{©êÈ€(‘‡èÈŠô¾œ‹"Q³b<ÏQ2£P šøsN1\ˆ}=Ÿë3~+°ýðhåF}{N–‰y¡!¢&;ëŒ gŸ 0V—%IÅ82{Ã+‚œþ}„†W¯p_Ûö+á‚3IÀV\a‡Pûî.o^/“ÐZ_~ywý÷£Æ'ˆðƒæÈÆzó¢CÔ »Í‡! ´š¾b»ËAaPðGû,½¼á ¤{¡!÷j 7Ûë_^ߣ,$ާÔúŽñ{Ø”;ê'Kw†‰ iâ>= 6øà %Bæ= æéóBu Ž6~ŠoÉÚAÁ1æäÍ!øWãm—V+r‰Ab±8r i£õo|>¦Ȩê!ßœªœëؾg¦ŒÐýÓÃØEpÂôw—o>¿?Ãî0´“ÈR+»qLä[„Ǭ4ò¾ßnY»•“Þúî´Ñ&Ç´½þøöúòãúîÝèð 7D‘»¢=5¦éLH~—ƒ‡z¤:ß2Ð5±j×¥ÁF=9¬¶ïP0ˆ¸2I¦&¸ÞÍŒ¾ëýy‹VŽ.°iÉ•ƒ[2tûÿÚ³&vä3·/ß]¯oÏDàØ±c"Pùˆqˆ! h¬›ñUatÕÙèœ5ÄÔ°s®,@ú?k~ ÁL±–|Z½¹ütN…c@tƒÐ*àZ%¸xª!Bø#¼+d‹ß 2þ:§‰÷$a½•û"«K¥øs]Qÿ¯ÓQLÐR‡Š°2™­á$ýP´äâ0dA< œ5 %Á( ÇVIñ{ýM]¯}}½v ;);uá ÃE…¸”É£¿¡G4Í,6±€4<ÏÕܽGO™¶EfíÓ|Þ&1Z¡U«¡UB—PÊÈízG˜ùÐàEE}¹¾øóqÉYMÇb"¸s‹lñÛÎ"‡AˆW!¢ˆjê~áÚIŒ”‹O£,ÙJÀ(\ZɉMØ8xÕ€ Á%C=4{Œ Ú ‚e¼ÉSŸòó Õ‰«põ©í”¼÷«‡"×Sæª?¯«BDPúȺÞèÕžÊÚƒžA*Ø%þAÈ#Â)ûÑÛ…†0¸ÔÈMÚ—5 2oÁ.Zj)×ÄÃ\uˆáÉÌ’éx·CÙ·sºãø¶3èÎ?_Úo½l»§Ù1€ð04ηü\lB^8|”î˜ß€Ú‰£aï›â^…yióôòšÉøô u‹È›V}û‰€î‹ýøu ü‰Npìær}‡ñmÎZ«po4Œ_аF!jžŠsÀÍ` “d¤“ØûÔ¾áXÚNn—®¨œÀvðµg€95¯’#| <;Œ£©tø2ˆ÷Ê8; FÝÊ]B<‡WÖ0rŒÀqaå8pÁS@|醢.ï@7ˆ h%/ö'h€û+4T?†º8¨LHý16!œ‚Éá¸Ô—c*d‡üçR„àüDr|õ60ᇠÁ°aÂÇ0=‹†ïÄ®†__TT$¬!AÉÓ@ü^›-xî ãø> stream xÚZmsÛÆþž_¡æ‹¡©¨À—~³ãX¥cÙKI<Ó´3Gâ$^̨¬L|w÷Ù@šr;£îööÞ÷åÙ=Æg÷gñÙÕw±~_Ý~÷—7‹³åår6ÝÞͧg³yz™Ì©Vœý=Z›Æç“4K¢ºÂww>]DO(Û/ûó U­w¶ÚØÔG×nQZÞ0ûã×Óèów¯ESé¸o­©&õÞ‚pm}iÛ:ØÛ¯Çèú­>­n&WïPáñþqû–¶5I’Ëe®¸6þÒ4úðïsYéî|BÜþ<‰.½@ënüðéúÕÒ­½ñOç‹4ºë¥‚ïø Ò B„›« E+#®å2+SqÒT誂×(m[íòŸGW56-õæ©iíîò|’eÓèçê®ömW™Öâø‰÷à”d”ᔆª×™¼5eù„rU·X‡ì½"!ª»ûíÅäé!0ùR—<‹õ\™ôy¢ÂØ8‘""ñá3Óè(ˆ*+1 *"¯õÎ>nM;êD_ƒ¾[Z_Ô‘YÆÂJŒâÛ3ö§Vì—²îá€kÍWÉ´;C¦ò®+µS½Ð×UƒBY´Žz­TÊÚçìM7íICÊ&8øLì'=¸q†%¨Ã‰13Ö0§5œC/çÑÿÖ#ýY¦tŵ ÷‡B4×6–lº¡’f¦ìØQƒ.G¼;­×ƒŠxåÚHåpb ãed]ÄÆ)Œ¤¡·lW™ýñ|X F6¼”L‘ü>ŒøpYK(Ö×z ÆÃ•e×´>„"Yô/BÚyT}!Ä ±y9)½Š>é>þJ†:I­ÔAœUÕæÑËý¾tÌú=ÚØÞì=¹«ó’ŽÎ/žtR×DÌAuƒkJܸ‘®+Œîë'¯€¡§˜Î‡e…áfCh =ÌãdFçûÞBF}üÄ­0>¬£®zÉhœÝéèŸMiÙ§q˜.×6´˜v¿ÈÈZ?w¸sâ©êV¢‡ÙB Ï|¬ä<÷©mÓÑÍr¦¥;ŠøQR qŠr¥É²dª¸.LÉx´¶TɪÀqĽ0"|¤|eÝèÄrR,ž¯®Q¸eûQ?<ÛòH¢¤'”ôôEøó8øî£ ºÂÊ!+öœÍBÈ%ÉÓpiä>fzo³ÈŠFª;Í|ÇLNàÿqg6ÍŸÔï-Í­tžc Ä¹ê6ŽÜŸÉ’CT¤¿PÑq ýê>D½¾u• +ûEp§¢­,=V”!cœE ÕCvA’³Ж²X =úÌ•·F3#¶ ˆxdeæ€â"f<ˆTNlV;9ýÓy<‚°Ìà”‘ìo"þC  ·Ú}ëÉt8S¡ëO•éàw$Ñ^WÁœ'jíc¤\fpÔ˜°õGácAš—èÿr*È”gxâ‚4û*j.5¾C3Ÿ«ûÃÄK\M¥¯ß€aH[r‚¬×@- 'Æ´£ä—$²Å§²`:LŽR‹æ4–ÿòÇ)»þ°á¹ï¼¼OÄé8½K5Y|b*hlÅ$JïäôÀ/¢F…`j›M’nßr”|ýrèáíïCÌ«aÒÀ”-q–Þ8ýfö|=N»jS’w(B-(9×ÂÂ9 ¬)Òn§Ékq&¼FÒorØÁcHª™¥–v¯™çÑÂ5ÛLŸµ;ÊB«bœ¼†×ã²)zòéTÔ¦ž˜Žì‰——Š\iÓ%£n]º†”Dd0MÈ— ´à6[(´à4>zÎÿÑu_à‘àöÜ@¾ûDâÕV®Ó;Ðóðº0ÕâE‚ªb:fËωË[ëQ t£W~ùCɯ !$ ©"dxú@õæNòÐX½]+ÑL’ ÜÀÜEäáùôMȸŠýÊ8/¨U½¨A‹n>ËIl Žl,“TP‡+‡G-äS”¡©ÀfQIe9Fv еËàðø —áúèÃáOiå­çYÅa(³§#SCÁYNnù#tÂB3ŸGû-žNÏó8–à’;ÜJ²ðŸç¡1H#®ˆ$™>2¸Ro5|׿wCKC¡øFGƒ™ BAª¶A¢jáf‹n0: ™ÛâãÃç¾ÐxšK1Ñ\ðöë”Ó%òX„B.ˆk–!䞸À€™ •¥55‚‘¹z§± T5&ib${ÇÀ×dqÀ÷^Å[¸×¿çÇ^nø ñ)îN[ˆþEPI¸‚½^Nú%*ÜöÆ7,ÇqðVD]á³Á{·‰@¥ eúŽ¡ŸkކŽYÑs<’caE?Ò‰­Ð‘z³i’z#nz¥Ï½É׿LOš€ÀíÖù"¼¬—š´óÇ„üˆæ¹‰¤–Q Ñò„îu!Uo¯$Gˆ¬ ãJÍŠ1Y;Áû6ZÒxb·ÓõŠؤ~‡Ï뎈s¡ºÓ¬·¾Ÿ~‚‹•´à:Dʽ± ;eVáx"BHi–‡/yÙ\áNÃõ–”JÀ± ÀÅÏB+r®ƒ·žeý‰7¥zI«äìmž.ÉU•ôgót¥³#÷$N{üø=ËG°‹*•N^ÖÈ» mÐW®Öh’,’(7@!fyôL´¢#Çí*–_R,éÀä?¼`„73«ÞÞÈÚÑ©ŽßSÄÃÖ¤æòR|ø.â´ù±¿—Þzª0™ð,ò_eôëš.òàj¹ØÒÀ8æ£8ký@¶0H¹üTc!Ñ“¦4g Câ³§á¼Ä» ý‘Û2ù+ç°â0BÁ ³¬ }Û°€Q‚ˆjŸ¯ß=ïúXàÅeç‹Jä‘Òw\‘§ô|ýÞñ¦ø…|Ü}>~f®ÙhWû§Úyà§/F *ªÀœÈð:éäç$²öuºÚÞJâ¥èK²J/ʧÒɾ–†@8§µ®> stream xÚ}ZË{Û¸¿ï_áæúûl-ߤ¶§Äi²ÞG7i²›CÓDBj’P2Ž·ýã;/P”#ç"ƒÁà5˜ùÍ@ñÅî"¾xó],ß—¾ûþu}±^­Ë´¼ø°½¨Ò‹²ÊVIµöâŸÑKÝuʸçþò:+ÖQs™VÑþ2‰ôåum¡°º¼.Ò,z10ƒV®{àâÁéÏFßsÅnù{{¸¼Nk쎵rC¡Œ£ûK *äS’å[ëzÕuϘät§•×-s«‘©ã^ä¼R;?NûŽk/ë,²îÎïíAF.ÿõá'Xñu’¬Ö…¬íÆö‡iT£±ƒÂ®Y½Ñ¶×£Ãdyd¦þª\ƒÜs5ãìŠ9Fˤæ·qjÔB–-ÂòbnÀh†OqRLzh4ìÀl´1U¤W4Ó$_­ó\¦[ðtƒå:`ÊJ¯,¼H±y'eÚ¼¦˜Äá„N» µáùȧqg™BíA80 W®†öÂhùfü\èÛihx/͸è¿á'O@ói\Ÿ[äQ?Ò<Ž þ¨¡åB’k%è^žäÑ?4Í÷Sœf—y•†æÏ—EÑ>Aå7ëG7õ\1ƒ7~Ô"T¥Áò×ën{í´—ÑÔõÑÀ‘;fh‹poˆ¡®ÛS"¾ ƒ¶"ïÞŒ{;':(ëõ¼U(‹ßk=zÖ Z5:ìÏã¢ó<ú®–çNp†–w—؉ÑN§ j†Æéž7jäCÇæÍ«2]˵é #óç vúô"HÃÛW¯™~pÁø 5ài¾…ɧp*·Xª"´t¯±Bʌ톅i·U–6é€Ç :ÒÑV!ñS\Ä÷{.)’&‘ZÎ=7Aw°ÒÀ„aÑÞÜN½6~:›¥ñøW„ÚN:·ŠÐ?­Ò÷{×q$údxÜHð£é:.¢†ìö´l ÔkQKlÂù©Ã—ûŒ)á"3§Ç@kÉUbõ°%ÉÿŒH0ž›@ÁQm¹²aƒŠíh„Ô> ª7 éǃÙYÕ’ ýë Ø;gÐ(dyA' ¸e$…à³lgwB§!óÑÚCEö9<ßû™‹wKöž½ P§¡…K@6¨: ¶’Ò8š Ám0ƒa²h¶ó È™»ˆ.fd ßð£r¯q/ŸÖéC‹b“”\\Gœ×Bû›Å¸ñ •Ö ÅŸfhùözîüYî¹!Ï,µZºN¨‘ñóúqoÂíDwª{ÒKÆ” ajT(ië›aß¾¡Î¸«F»¿<¹dÁY²ÐÓ,K~ÛÄ¥{®Ñ"á»X$Ô\q_Òî%#lkÏ¥p•±ŒWEp‡&]Å5 L‚ ŸAË^3_cÁ-€r¬¯/7@¶¬ÌH|öªåÂl k¾ºâÕ†Œ|™b™ïb'P°LpïÁEAo™²ãZ2ÈÐ_dsœ9ZrnÚj5NŽ6j‹m‡Ú·4Lf‚6 &°¼™Lwö>ˆ&ýŠOÔ,†ãok|£XRÇ|ᡳΙz³ClÔrmëlÏ¥w#Sþðìfze\ 3ìùÕâÅK«µƒ2Ãvê¤âØB4Ú{™ï¤Ï-5¸IÅ~þÕQ ZÛß<Ì>Ù @ê»`=¦@P ­±Á¶ôâTÅ™vv\ʆ>pºO[›äM²¢b{WÔG+¦Ü2¡EŸî µØ£p´ÿEPsm•(˜à†Ûnë[neÿÀô-wþí/¬Ï ÌyH˜KßëÖÀwÒ¡eÔdÚp-ÂàöiËâ'Í8»Ê–5:"øò-FÂÞø0úà­Šïé’©€*h%ø2Ö;¨„d\’¾ƒiDî‹··§#¶6 ('›P#¸4©d8Æs ÆN©DÝ`‡XE½Å~ŽéÁ;– /•w#^,ã.-„ùñ¤€‡'œWÇȵÅö“· éš=îrTшANgF鬾¯™`´sHõe}r†ë”Uv*Ç/x$á üÞÂzK(ÃXЋð ÕÃAÀAdà~‘žÓ\<,†‚C3³EnFÐÊ:à´rp°ÇÓZË¥ ó¬Bgqž|±×¢ ëpð\ÖbèÏö®{8ìðžèñÎoÌØ+ÛÁDä„Ò˜¢oo0” a¢€`á«¢ˆÎ¡Žÿ&îÎ 0Ā߸$F ŽrN;©õ©»€Àq;ÚæÁB|Ç;R0b<‘³ØÀ‚ÝÂäÃ@½3dýŠmÍ=æ8PÄ‹˜â3Ú1*ad“¯£´f–pCž´$<«t ¡ ¥Ï¤÷V¥’‘HO2P+ 4_”Î%v©P¼ç«/ U$o–J„dñÞÉP‹ƒZEñã ½?óÒåNýpÞä0V)ÈRr鈼¡bzØžnFV‚Q ð“ŽÏÊJ¤˜^ïe'Äþ#K+aV|ÀUŒNм;qr›Ç©øBx-«:Æ>%œYofRÐ&)I-g–È*e¦Œ{Gà*!@@*óLNêK¸@x¦¦õA üDâi zåÊé‚ «wh‹¿œðz®‘Þ%ùRï€Zž³¢ÒvrÑC¦í"/oÆÁ°jº»evéÄ Oõ´¡øÑó4|iaÇX†ƒ”Vw*`y@bÞJ$Ñ ƒøW èAvã ÚG‰Z ‹4Κ!k–ƒÑ·˜OÄ"š˜Ùw†ür‹pøþŒhZ "~½ú‘Óc1¹(ü, «¼5±x*q¢’åïÑ–Ò@ƒÈ›m)Ö*Ü©4e…¦æç=ŽG5Š€)0•Μ·ìO–„H= ‰ÃÆ“xÔ3•½I±‡‚l;Ò„'.&’°ˆa9DF“Î&9aÄ‘„ŒF"`‹Í³*ú»þ2ŠX{"d‰ï Ä6fwn§O p“B:Leå1,ÛHÒu†<øžQ/Í-ö¬˜[nŠøïvj‚˜Ñtœ¤¯0Ÿ=Â]< bTb4ãê@k:s8,;ìCË ë୆棎«s ûì®[ͪ¶ ¾[9wÌðeù1±ß+wGàå˜íÏ£÷ ïñßÓx˜Æo\}4”Åc¿G4:Ñ”¨&ÊS’1…ï‰Q%ý¼0 3ë(‘&å^úügb7T0Z„Ï&ôã¢àˆ‘J˜ð²(BÞÐlõiŸÓ‰•WO[‡Í$Q…Ocr”k%ü°ü¥#šâÏã4?Òœ>t`{{Q“Ç!Ì(  ÅCL‘œ„DÉ<²›†ÓêVÞéË/s‘& +ÌmûU5žRˆqôj†ë¤Aág ¨qàòG €o¢˜U”–ǯ @Z¼‚"£‡jþd—†éÔàÓèJ%PÁºeò ¯)žÏ´ÿ¨î&O¯dkDÏô~aå˜ÈiX4ÄSF?MƒPÄÉe1,l“X“n<0Lžïïº\>&BƒYF¦½½ñLdG¤?L«˜ö õôß=…XŸM#£þdÎ.饥Œº–8$­ŧUBù4w®W™Ñ˜°&ÒÑn§ôÜ£cÒVM´ÊÛd½ S‘^1™Ð:n$*é– $ØFÀw“ÔFQôŽæ[ç{t‘g“ÕÁ‚U|¿xxÍ8bØ\.KðaG ÿí`.d! ÖXIZ$ø,9gëœÍI=§MÑìÎ6pÒf<=_cqŠ€qžZ‡6ÔyŽ“k‰Új1| ùü¹ÈKî,Bõ!k?$\v#SðïVrô¼Ûž;Iš=™o(Ìä½eÒ-Cí` kÅ F:‡÷0(Š*cñÎr-†ùŒ?&ùS¬“E8íGgš=:XvóËL.ÿ.àg0Ò9úêÑ£4Ùj”è ý½`,ÿ*Ñqâ_¶õ¸íx*sȺL—‡wæwìò¾–èö²¼LñÏ)0ñ,Û/‡ô¶2ØxSèíÁˆ3ñiˆû.ÿÖ=ÓdU§Éãäu*¯£üx´uZ_=Ãèb-iäèÁŽJQže¡¤g€G êD(’–¿h ÉRjΈFŽg»8ÝšÐkļ˜ãIw~»M£F»]ì9¼Ï Ge¬ªjá™ð¯4e|$Å—ˆ_Rñ¯\ ÷ˇ ïv‡oXE7Α£"ûòWص˜ðRj§ƒºE§ 6ðºùÁÖÉT”“±‚Ê⤹‰Ö‰rGnà l 9%éÔ­%· ÁŒÿáɼÇÍãYg¾^e~¯²\I³’|¡Z×éª*«‹ë™ ÿàóµ&Ù*­3˜5ñ$ëuößiŠ¿[y¤ƒKp³×v Ü<ÿM z§«b]\çåª.R’g'LûðÝÿÐÞÊ endstream endobj 687 0 obj << /Length 1225 /Filter /FlateDecode >> stream xÚ}VÛŽÛ6}÷Wè‘bZ)QjžÜ »H‘-v‹ Hò K´MT–JŠã¿ï ‡òe½ `€Ãá19sæ¦8ÚFqô8‹ÃúûólùG/²$‹ž7QžñB©(Ó’ š:úÌžw¶Ÿ/¤ÌÙÁu[Wîq£Ù¤Ü8cH ÁºÍ\°ažhvœ'9+y §*f'Üv#A+„–-mœ©m?8»CwÚNʶ^vŽtûn¾€j‹œ®q9ÛÚ8ú˰ w Æíƒ‰`ÓùìëóŸË‡äÚç…PÞé…¼HƒÓíHÐkd"¹Î0GÓW6pu¬Ù_㺱ÉleÚÞЦìi=  ß™š¶kdãD2™ ÂÃ<—Œè„ÝS·5ñx…éÀár°]‹ÜŠ” w8|G¸A~åc@<˘$ˆç#>ó-‚cÄ@Jî/Þ uð¢§W±/q—éBDÃIwÀÀÃS¤‚/Ý”ƒ P2ÑõæÞ€›„÷WHœ‚,¡¥?øð›ÊzÊAc~T怢‰Ê›£)ÁàpW⨠ÿw{Û÷D(‡ׄ5`»mÿ£Í{„jú_ÂŽÀmïÂUïWHjìÚ•î,mk®ÒÙÓûš{懩ơ\7¦Gûó”2E+Ötí–¤Is)²M×4å…?$«@pæÛhÙÏúÐÜÇúöèǰÁô8ç1(Îy ò%acÛé•méjïW|ë‘ç]6MȈ )BIJÖ_2Z‡Œ­¿ùSWÔ„ {[qãº=0?OêY‰J/= 7“ò :´´zPØu!_&=&½G†õhÑM”Ö×À±7›±ˆ&™dð@è7ÅuÑ9×E6µ̯nÄ[56¼ ;–ÎÍSÌ©átßˆŠ„‹"™nx‹I)Q¡Ó£æ/drÛ× •¸«¦ŒFÁîE2pŽ£òB ã DôÞ! 9Y³7Þðj¦—kÛØ×Ђçéôè-¯ÝÊÁ© ò%jhMñS©†p(dØpðT¹ÁVcS†£Ã輺ëÍýûBj0 ˜®çó…Πãsáå~P(Í•ÐçöÿÚ„X¨XqU¼ÈÆË¤H¯*,½®0Øx§PØw.¨j3”¶éÁ<°i+ÈÍÐWÓPe©ú‰Í‰*¸ˆ‹_(žÈû©ö+[ýð‡µÄJþ>ÇHØÆW,Íø~²¸e† IJO±O~š¹ÆOEÉ>Q¡ÃÏA³æd­Žà»DË܇.Ny–%‘ä™7«{Ÿ°Är¨ è_œôPUcʦïHÕ­ë õß »Li°ÈÙÁúÎ ¾×ÅSWƲšF·zutÌytc×1{ßVüMÐÉTvKZ¦Sê|˾§Î·¢ƒùô6ˆÁÚÙxÝúÁŽ>®h!‹ ûçiå9=þñ<û6Ãoš8‘Nàê¨ÚÏ>£ÔÐè¹2´„Žy¬±5ÑÓìoúˆyÝFk"_BCH¢,ã2¹ ”X,|=q‘ÂGGÂs! U†~)åLÀóçF°†ÃoËåñxäÛyç¶K¨ˆSc6Ãr{hønØ77.Në‹'> stream xÚ­XÉŽ7½ë+xL.l² xÁÄÀ°çd0/J`Ä‚Yçïóªí$R·ÆÔ´æ¤jöc­ÅRkã‘IA›„êO5dÂ/SÈÅ—5PÂomFX ,%¬‰dàJ³UI9h¶/5¼'`ýYBaæPÌŸk°ìû%˜–@JÁZ±•}½„FúàG" @І7 Bƒp+gÆJvÁ|Eàt®XÉÔ¸On¿@(÷4,î"ÜÈ û~g­5yÐäÛ±«_Æ’¯08_œ\ <%€[Éðª5[‘ç/¹-¤”’¹€ìÁE5»Q‚O¹¹í4‚98C`Ï #¯õ…=þ Ÿ U‘B†Bm.@¡¿÷äR1ÜÝìô˜ƒQ 2{¡ªƒ… 8X ¹e‚ÏÐÜQ0À­A@u‰†€RêTD!@YјÁŒ‚¬±x(u¤ƒ+Êz‘a˜UxU»´ú z’Š4ÅW Xu=¸z6GSW‚{œdÅ•ìá…Р¹XòpP!xáB ÂFí…lP(¨§§F;ŠAÓ@7ñ°s¸¸‡ÁšQn©(H1èi(c1m`\Aq5;~«ç‡‘“€i*„ "Sq¯¸ú®Šã€ ž­†áR[‘{†_~ý-À;©…rØÜ}útµzòä>7‹†DtqÖ"Ãå|Nˆ.N5ªXÇn—öqçÛÍm8; Ã9¸ÅÈê¸ãŒɿȠãx|}pâé×, nxu½}ÿf}.ÃðêÅy.ÖŸoÖ.þþkoÿX¯†ç°ºÞÜÞ ¥ŒWÃëõÍöîúýúfì2ãÒÏëß>Û~—‡w kt3o¯±7x3pÜnÀu'àŒ˜­î%ÔŠ§²‹+%šôõ)Šk`hÇ5¦Ö·+‰"NhLDoêÁлbËÒÅå–¢_]\∆v§öx´K0_¯§°¨$›²È¯’e,òÛ­Ç¢}Ìý,šá$ÇTK§8ÒÜZ—r¬}˜Ä\úîq¥˜úÞåÒ¢6êãN'ÇRBd"óRBà¼t ±‡qB(ÑÇ©hôQ«‡“–£dîâXpzZÇ€Æù_ p‘G;©Èݬ0mia(õ Cé¸ÂLqYc=BfÓèóPÇ"èÐQâp¢}²íá0rÆšûv³ù=£]\#Ì8üpÞìŽ@0&⣖r…iÆNGq¥ˆL¹Â¹Ï•=Ì7¸2ÅáÐù„ÛÅ%ôÍ$]œ8Ðúv•p™Sß®T´ÿÔú8)Ñï..Õ(µo—-Åb]I‹ùXÂxÝä὇•òžÞÚd>„ˆ.¥«t†ÿ¿Tß üôðtÞ¹¥- OèÜ:éÈèŒz`²žâÔ0u$êã0c•C§b‚§ç¡:Åeø×ôáeÚûGµËbÿÔ¢2¯æÒ –4« ÖUpxºÙl¡êrü*à¾LLŽïWÛ»w·ãóO7®†gÛëëëQu¾^?Ï/MéÊy(ȃ,2!=„ëÒV´.3àžŽi|†¶Û€|ws÷î›?n7ÿ}¾÷´ìV§Á°v\¿ŸàÔ$Ê¡>>Áù‡ŸZº¸LѨtqäã¹õí¥¨‡f .ƒ±Tù;êøq¨Ì'Ç¥Œµù`‹';b°#'›ÞÄ>-¶..üÿÓSï°½™Ë¿ÿåÓ’<¿·lñ½e î­¥Ž×ùdGÞH•§Ž×#n¤:ýðæsU=ªãïÖìF׬êƒBßiåU³•g+Ñ›€ü3“ýÛhê]Nlå/ßnoaneÚÇë7õ„—¼Â endstream endobj 737 0 obj << /Length 1407 /Filter /FlateDecode >> stream xÚíš[s›F†ïý+èš „=°‡K'ãxÜq&™Xm:M{ÑÚ¢F AÇýõýö:QÉnìT–|cäxöÛ}¿ww#ïÚ‹¼Ó£Èß ^¿ÃÌC4$”aoxåqì1NBÄ™7y_ü·e1 ȯ•=Ì~ýŽDž %ƒ[á–È 0 %ö4$ŽýÏÉ|•§åD "¨_—úHüz¬ìsEYŒTuÕäö[Tå#{Eye‹Ï¦pD¾úi )$†gÀk¬>Û_ÂÅØ/›ÚVbnƾ{‹?"Dse>ãH†” ¨Ç½¸. ÚÒ¥º‰­ûTªJr[1 IÕÀ»±8‚ç6b €•”z‚ªâØU!aì¨àÛánâ¾”P¿„—cÿ/•êz¥Œý ¢hý@¥ü×sûs¢]´z_tëÇÐK¥Ñ*^ìðM Ô´©*ˆ_,üÚÒž©gÚÐÚèÿÿÖÜ–ÿ*qPß—šã׬¸¶l“b䘦IîJ‰ cÖ†±€ÎràYË‘:ŽuUÞh”j…£ rû;-󲀌¡í¥OG¼.ݤ±ƒûÑ€-^Y´£d6v1Zëw¹rg’ª2á|;{e/èZ¡Îò.ħI]«ªÐãqï,Ö“èžUR̦ Œ’éÝc…ÛþTÝx ]Þö󻉎0áo™géR A^Îʼ©•+®ë*»„u§'Ï U_s¯ƒc[Á î÷Ò"›¬›& Ú’óƒ-4¥#|Z•Í 3q¨øž’w'ù(‚»÷ybÔg€¹¯ŒªCÙÁ€{îlKœ#d¹¿/›™Ë²fã²ªÓÆx«X¼ÈÚ¦+F?híì¢3¦Ö…cÔdüÎæÀtß9ïÝë·Ùº_hDï8fÚ9f“Ø%õ¸Ï,cxüˈu¯Væ{;hªouŸ©#éIö»SÉ-¸[o}6I®U_h¿HófÈ ƒÊn¦LÓžÞˆŽÑ3 »g*ïE¹µàŸÔ•Òv²7ž—'Ž–’–fJ÷„k/Bô`­Æ^Étª§%¬˜‚ɤÝÜ5êS"EÈ%[n¢¸ÓÓ*k›Jüb€|W?h6}Õ·µ#Þ˜÷ÇŠê%=÷섲Тã,ij'ô}­ü²]·‚y\\7yâ–P¨Æb?½Ð½Q¯SeÛ©¶yæÂµJ܉À¯ÜÄèX­á†Ó=[Ãý‘ž¸’„íÍŒ•G¶€k5ïä[2™êÅÅ€Kü2p>¬ÏÓ«"sªh&p+UÏúÄ‘·+»¦t©n+ùX©™^âÆ~è ï­FÜWcùܰÚzuJæ©[‡p¯pŽ5¡;ïTô×LÝêµD†U*‡·Ü»ÕÖ7nþýf’T7ü…è “}Œq´13ä V4e ;×±$‡³ÍãÞZŒ£-áÛj±ÞõÓ®®;ÉÇäÖcjØÍL9tUµëLó,}e f‡’š‡ÆD/Hü`½nÕèë€iÿžzfg×4KÍ6(ΩÉýöA‰N$/ÆIÕm9O  ܽқ!ŠÌ ²9{›Õn-ÿN÷š²©ì¥Ý]ÄÙ+m&]ÏbBîÈð‹7ç’¢“»ÏfU>½å’¹€ÎM vÁâììø» 2YÚúP6—:sz7'ÞYsÐÜc¡äD˜€F,¤‘ðpQl«=^{Á¡Í/š¼,Ñ+DÔ½ÓIW{ Å¿©<øjv´Tf¢& _g’BÆÏ<ùÃ+{TDP(ØÚ@Ñêå/E–Úf©ÅáZb|pÿ{Y¯uŠV9ß6³ºœdwÞÞH)×R*éË~Բ˺ÓHâqâ’„ŒJ7C¾|ñÉðèð–È endstream endobj 774 0 obj << /Length 1226 /Filter /FlateDecode >> stream xÚíšMsÛ6†ïþ<‚!øXÄL§3Mb·ét¦÷”ö@YÌ–"5$åTÿ¾€HÉ2 %DãƒeóÄ@èÙÅ»»H´ŠHôóé®ïo¯ÞÝpi¬%“Ñí2R,’ŠcªìÓ"úŒ~Šg’St{oâO8ú´±W†º§? …|hYVë´±÷˜FLÆÝþúî&9é›ÖÑŒR¬Å¡Lã™Rlÿ…ý/˜:ù pÌ5·cÝ7þ!Û˜‡ý2ÁŽ»kdr³6EÌd#AØ^Èù hý­&y±˜ŽvŽ>Ï($¢³Êãkûç­)hgq4‰3J¢áŒQÃ\èG£ËÒcX´®óf‘' ɆÈYòMeÒõ<÷M!°d‹]Sö¯^ÞÔðV=”(¬"æˆçY³N7À 0•à ”¾l7 5è·ôàfW}Ü,@×7éÊ„IˆëúÒEãY¬‘ô¬aç?Mò‚½(Sûìao¹ßõ5—¯„rlÍ0³nÜËhX–çéÎTì@Ø'ž¢ê™ù2å*g#i2ˆ¤–‘-zÌy«¿®°\þÏ9*ç¶k‰þ6wMûâ€Q¡¦v%Bò$z“³8ØüÂ`ÿO ø`sâƒÍú1’Éö¶>[÷ûQ§¯¹î÷)Ê|BqÂÙÐË!|cþm¦x9¹·¶çX„Ôöis?!?‹œŽKQ lU±nvçWSü¡“"/}9%˜>ëÑWS2ˆ¤”¶Ô»õ¼Ì§•–a(íÓÖ æ¡ýœK‡ðHÖ‚¼ÞÏØ£Ü™åC,ä‰$¨·}Þ èWåàà­§ÓçÚ"@¿duSV»v^çQzç&Å?Eé._r³X扥Í@sÝ}²?)oÜ‹´3`ãZïªlusjÍæÚ‚MÄÕ1Øïùt~Í‘6£q@h „u¿yzlöúöê??\Šd endstream endobj 690 0 obj << /Type /ObjStm /N 100 /First 919 /Length 3640 /Filter /FlateDecode >> stream xÚí[[·‘~Ÿ_ÁÇì ‡U,Þ#€mE»6@û!‰à_ #ÆeÀù÷û}Ež£ÉšÓIºXÀ ÉÃ&‹Åº±ªš]û)Ô^‚åÐr Ò,Ô!¡ŒŒZCÓ†:‡^µ…1 êD2b‚6E£1Iwuô ÅzFÚ{h)é€Ò’µ¢¡A%4rPåÂÉ‚æÎF ZTШAkᘴ »k©™cFÈ ‹6I!rÆ¢M4dë|”C®„#r+|TBîÀ®I –°Ó&-˜´rפc÷‰cF0#>š‚ÂcÑTƒõе4Ø\S E2j …DhZC1ÂÁnK±~×´‡R;ö®#Å„2*ö•A£’´ ‚&C£â fp¤à š×†E3HÜA€–É•¢w Ô!Ç',J¹a-*ø6îóÑÀà.ìÁ„Q0Ðjè ÜkÖBWNµzîõ®Ž½`åV¸Þ0zý5ôA"”†s°@"´°§„‘‰O©a"UZ¬Vz=§;²aŒ†€$ rƒTIR EU´ŒHÖŒVÁ¬V - GÅ$u²c%Î>ÈþØ¡-’:(™×²‰®5¬!N‡F¹í‰}ʹ‡ †°Exlm ð4‘ð ðÔœ~‰-’¾žÊ$D²ßÙ•\(ÀL2õ¡aïb™¼î•-hUƒ,HIÂT”:k”,~ „Âî>ùäîþExU11…?…û?ÿ寡·èº¢qÓ×?ýýï_Ýýö·>ôåãë·á“OÂý˲¬9/!|PË( dbþhÕW °ëž@FæÈš¥ùëÜÿñÍã·_<¼ ¯Âý_¼ ÷_>üü6\Qøò?<àÁ×ÿópwÿ9ÐyxýöGÊ#§ßÝÿéáÇÇŸÞ|û𣋻wýáá»ï¿þìñçð*Ñ‘ñC¿Â2_¿Á\ˆ{žã>}ýú ^¹U".´J³Î«¶U—U×U·U÷U¯if-«ÖUçU۪˪ëªÛªûªî:ÞYӂߨÀÚ'øŠƒ§–›¶µ À°ðÑ“L„€ÿ¨”ÒëmTŽ×`…÷ܳ0£™SK±Ùª¯Á* ŽcwcÒpã&•n£r¼ kBÝyUÈL¥ÌTRé6*Ç«°ÀNL§¶…©ÌA—öùÎñáO=ÏÚúfw§G¹i\û ª#5yãé³¥”o£r¼êˆA^r)PYIa¸;¨r¼êœgav–6å쨥±ƒ*Ç«Ž(¼´>C.¾¤‘\ÞFå‰ê¼€üçM2Ùv•§YôÆð½– ¾é˶+c¹¦Ëù6j¬Û<ü»lû¿šFoöA½é¿˜FçÛ%Oç•^Î+½œWz9¯ô²­q¶ÆÙ·^ð¥Ò¬WÚVÚVÚVÚVZ»,xeÁ+ ^YðÊ‚W¼²à•¯,xeÁ« ^]ðê‚W¼ºàÕ¯.xuÁ« ^]ðÚ‚×䌴9¬­‚‚ÒáàÂêÖŽþ_9¾þᇇ×ß}ÿsüôp]ª1ñ4ù:ønÑ{¾™tûôH³+LqU|  =ý„‚@ ŽÑÇmÝlNÁÁ ¸ã”5;D7Zv¢£' £8¡Yjp§ ÑÑ3Fï)>ÇŸUpJÂöD"Jì°ˆìœ3(“ýÐÑ„¯Ë÷∎r»H£gHm°f\*d²@¡‚p¨ä~U­&ší¥Ð o@ª"*At2’âÇ\¿Ý–ž|m ¤Gì³*¢ü¼6ùé§ee#=ë¶¡3¤‡Q’ †Ôá¥AÛÚw"tË+ñp¿Š³2ÿŸw"d' ”]ü!Aô-{)TNxU“ :Œo=/üË·õëÚXë‘>çåܲŽ/í£¡_V!=Ú¯'»µû3Yš§ _V,Ò{¿HñÕÉh;:A¿Ì4v*<<°Røf)C¬öRè ÊÉë« ¡}/…Ê Iƒ÷qñ~Ly/…ê ¥â'í@ !+Lm/…Úñe&‘(4óŽ ¨ìD¨Ÿ€â,^ª¼5”Zw"4N@ˆ`¯W åßOöRèÈWÙWŒxs+¿‹y2CÔ²—Dr‚­Î ´zUüŒp5§Ý4:ÁXg8?–ß…aÙjÄÿ^ŒN°ÖàT,¦þÎŽ+ï=Çþ+²ãߥÂÙ¨¼<˜¢É¢Ñ>â]3ŸÿJ¨èWÅa »_qJ¼¶ò<ŸÌ S·.7ÌóóÚGn^ÑxqÂû õb ±±)‚‹‚àâö•Àg¼šÊ@ůöy5wÐn§o_œp]æ6Ž*üÒ jG­p|n%á~wü ˆfâ• æØk÷‹}Èóh¼|?™ÝòóÉìwIêæ¥•‰é¶#1ýª$ìâ¯sŠßÜÓK¹é±”žôæ‚0m•³_\ñ0 jI—Ù[¨Œ\øE„ õ*"šËìVá¸#^÷Dí‰ñׯåÿ] ªè’úˆ`røµü^‚“°‘®Å»²ƒÇ#ëä»—³§A‡ý³ŸèŸÝ@saA#?pÂçŸVtØ›9Êà Ïþu~cjSÀ޲F,˜>wµù–ϯ°—­è%?°m_iä…t)éÒr”·š=6rì«ÜöÌ1ÛþíÜÙ¯ žVèÌ,·äY ·È«‡Ã¯QU&cAà>¸9¾ío3)ûKí=¥ˆ/0§ý³“w^ÕÇŸl×~úäÉÔ§}-‘W³|f‰n ZsR«—³sèƒÖžR§õ¿c‚v‰ô²3¾J…‡›Â‹¹¡\ #ycx—ÞS§ W”³g@zźºŽÔ볜ƒæÂÛöv¤I¦ˆz¹Ælžfhª>öï”[Üf¹6ãçö,gÏÜ|ƒ:ÈeÛâz¯T eÁÜìZî#S•Š[î±ÖLkѦÕ)WúL«Ý…³œIs•µ®—’øÅݦ£Ú¸nb»¡7·6í€7í'Ü÷þ'RQi£y&ë¦,mÆÏ1¼KŽ+·Oç†f{oóà­NÊJ>qûX]™f9Ü>Î2c%^ïÂå—ïý÷ÊçE¦[Öx dº[}ØšÁ/4)°â#gÿj‚U¤©ŸkqôlmG™ê,}Å-„ž¯8þvû_³¯X,l"6ËÙ3w×Å­¹/ˆÏà…´›º¸%ªË€•°\ œ9)Æ» Í…Š^,O:H(O,œmè<’¦-ãˆN˜ ¯¡ ^6§×ļnÚï杖 7'oV›Þ7Üœ½[×T¯=“kæuôx§VñÒy³}:i5Û³,i“ìÒêúÁËÃNÑváj¢»Ÿ§c?eê#ewͰʂsš8G¼\#ºK¿&f>߿թkº¥ä«[oÞh¸¶}}c‰û™å„¸}Ê«Øý í9L÷” 榜kmÇÌžfÙÏC£¹g~EØœS¼ìËoÂÙëã‘:#ðB]CÇ’Có× êòãZ+Ì‘^Žá§ò¦grtK×-U¶{š=ä™óíúkÑûÚ·ÃÞɹɡ%9º8<•+Ç–ôäËìZ‰“¹²™ÓcËSIú@º^® ]|Jr:iº›†êFgLÕô1ÝãÓævn¶©ÉÓÌ.]Ÿã¼I~dmºjÝjîF«7í¥óSú%®ê–Ë¥±d¢ZmZ÷ɳ}LÍS7&çœëÞ^ýa¶ëœ5aŽ+4ÆÜÖñLÁìÔ¸B¥JâûL ÐþWa~¯«Á¸~èìçc/s,@?/ªå‹’Ã&‚F¢ùq\{òs>y,1ý~õÚWÙ’+ÅX¢I3ãÛwsP&ï&”‡UÝ—ÈÎÓmé^ &.ÂêŽûtñ³CÔĸ¥º`ubj­ù} õOÓÈWýò;VnÝ廊¨F/ˆ{6£´ø†¯“ñ÷”ÆbޤBÒ {¦{•!³ÿ ¦ŽÁ$ endstream endobj 798 0 obj << /Length1 2364 /Length2 19937 /Length3 0 /Length 21303 /Filter /FlateDecode >> stream xÚŒöPÚÒ ãîî ÜÝÝ݃Ûà0¸kpwKpw$¸'¸[‚»É›s®äÜïÿ«Þ+ª`VÛÚ«»÷h(Ô4™Å-Aæ@“;3; ›@RYB ÀÆÆÉÂÆÆDC£eëîü‰Fèêf røG„¤+ÐÌl“2s*ƒœ vN;;¯€ƒÿ? W€”™§­%@™ rº!ÑH‚œ}\m­mÜÁ<ÿù ³ °óóó2ýwºÚZ˜9”ÍÜm€Ž`F 3€&ÈÂèîó?%è„lÜÝXY½¼¼XÌÝX@®Ö"ôL/[w€Ð èê ´ü% bæü·4$€–­Û¿š +w/3W lp°µ:¹S<œ,®0;@S^  ê túW°Ò¿˜ÿn€…ý¿åþýW![§¿“Í,,@ŽÎfN>¶NÖ+[ @UF‰ÅÝÛ `ædùW ™ƒœoæifë`føûèfqu€Xá¿õ¹Y¸Ú:»»±¸Ù:ü¥‘õ¯2à6K;YJ‚NînHOÊÖhî»뿇kïòròû²²u²´úK†¥‡3«¶“­‹P^êß1`Ò›5ÐÀÍÆÆÆËú€Þ6¬hù8ÿv²ÿekðs9¬À2€¶V@ð$?73O ÀÝÕà÷OÇÿ"$vv€¥­…;Àhmë„ô§:Ø ´úÏßÕÖ`À^?vÛ_?ÿýdÞ0K“ƒÏŸð¿GÌ*­¨¤¬¬ÄøoÉÿuJH€¼~ÌÜ<fn6;;€ü!àëü·ÿQÿ·UÍÌöß§ûGEy'+€ÿ_"ÀÝûÏoÝ¿¯ =àT@à}èþ¬¿!7›øûÿçKðwÊÿ¿Ýÿ«ÊÿëúÿßÉx88üí§ûWÀÿßÌÑÖÁçßà}öpß eø†8ýßP]à¿.´ÈÁòÿúäÝÍÀ7DÜÉÚá¿m´u“±õZªÙº[Øük‰þ3pq[' ÈÍö¯ÀÌÎÆö|à;ga~TÜÀ³úÛ_©ÿ¥”v²Yþu÷8Às7su5óAŒ¸~ìàKj ôþ{·¬,N wp ,.`rEúk¢<ÜVñ¿LÿB<V‰?ˆÀ*ùñX¥þ ~ðþñ²Xeþ v«ìÄ`•ûƒ8¬ò˜]ñ³+ýA`vå?Ì®òÙUÿ‹øÀìj˜OãóiþA\V­?Ì®ýÙuþ 0»îf×ûƒÀìïÿ‹øÁ‘f8ÒüGZüqƒ} ð¨ÿcáâúËâèø'ÿ¯`µü÷ø§øŒÿZ¿ÿX8ÁúÀãu0süG¸V ¸‚Õ?à_NÛ?9ÿ‚žÿ øËòpýG9pˆõ? øÌ6€{hããltúGØfû>´Ý? ¸_öÿ€à¦8ü‚;ö)àçõOenpªøZüÃúsp2èÜ`1ÎÜàƒ8ƒŸÐ?úËVó­ìࣻýáû =ÿ¡î~¯ÿ$€kþ™ø}cu·qþ£`î^ $€5xü‚å{þ‚xýcVàìq€Ëûü‚ÕùþQ®ä týÕÿ¼®®àïÏ¿_qðòü÷—5è ´@ZYY†Ù5†u=6ˆ{1L ÏÓèfÑ3û­¸~õø…ŸN_ŸóaËõ^<}¬c}OšîNl•üÕ綠>²#U½óÙÿÅ$Ycö iyoxºäD¼iˆ‘„YKì‡ÿ«‹¿Nˆ=t;dM‹šZö£× ¬wÓPÕÚDÄâúzEä—ª9æxí8Ãòï4…æ¹ ”pî̤ X—Þèßïîç±ò§“+$3"œÆs–úéos$<-ønÔhq¸õRêBßaMÌÒúIf(à/ùU”Åm /åñF'Ž®† ¦,(êRª¸†U2  VêÁ¦îÍ÷²øäê c1­ }GÞ„àNS!k•ZG5Va’KbôôJEª™¢iÉøµ¬÷ô\»‡Á?%‘@€=þç”#Ù½0önwn ÏËkµÙ¬¬lºÄ&ÕªŠ*Þܤfa€´Æ˜[|s‰ŸÁÐïB–²f;h»Hÿ2wGÃMAdo>|µ©gsµæÃÔ‹³×Òž$›1ƒ–œ;ÜÐ “nþ¨½wŽ7ÎÔVÞ«0&y| ´³ê\¾Q…¬-¶G7m(Ýõ_–z§$³C¢hó¯¹ÝgU¢kêçX§\g@X¹xd£ù–lç “™IÑœ}¾ó<Б@›6‘G‰Tª¾c¶1ë¨YËüú E®L„‡[®Ñ”¼w%¡@ZrÝá5^JfüÖXj}.6;êÁ§ ðzí<ëféÃ/ŒÜ>»hP¾ÎÔ„S½$Ï{IÛÒŸ^aõƒÔä.“]e> =H+5>$ÞžeQ <© Ö™opAPR`4™E°›oÞEr{喝RDþhè­t©î’ ¤“"/¾NtüÄoÖo²ùŽöXFª_–J§³ôIÌÓ>fÌý ‹4‰¿ou~‘í'Á<•Ï(ªŠä¬|¿)/f1*åÄWy»EE(«óŠsñÝO3Ƽf¢¸‘{edP%t÷±‡k’Q¼ A•p0´œÃ}Ÿ4%ŽãÐKê¹vЮ&‚ÿ&_t+jàU E´;aH«ÿÓ´œp¶2¿{³ÅÍR(S–ùï ƒÛCÔ¹™-KþïfÛ%±ÂW &Ì’©3¬Ù;_¬Ðá ÓáÙŽyÏÈÌ4¦1é>¾(áÛaR}£pôÚäè¤êtúæºCíû{V ëL >-ÕhƯZ¯Üô÷/®!Ùt/ìÖšý5µG‰cëõf¯sû^™†Ø´‘@jëµq*Ýžk,%!Ñ> ùÍÝôÞøHbàW$ÁîÂgC¹Àã÷Ø&÷•ßRšßpž±-hzÑép(V‘<—ÜÐвFø]½~ÌlûíðD`ÕM¹M¥b*‡e#>Òª38øù.š6&[™¶‘·³3Ã]ëÆÐ•4ÈŸ;]¹ü 7eÓ†îzôÒÓÕc¡†¸©t©„¸&¦N¥+;Æ´äÓñî¯=ß ïOòÇr)½Ùúl¨ «·< ÄVvW(C‘Æ,å“¥™v=?Œ~ y²ô¹{·#àV"^¤ØK÷½w(ª/ °Œda* ÿl¹“LJ‡*&¯TÜÃk‘Bµsª—§ôÁÑ‹$FY—jõ¤í*Œ¸³9´Ííê_9Å€ÀÁönˆ;1o÷è%.‹˜ýœ2 `ʾÐiwËõíM9·@ êD•%›G)²p¨¾˜n%óÕ””k³„þ¬_Á“›1á>ÔKnµn4£W0ê`ýzü«}ŠÑ{úEו;X¾w"[Û¼rù¦ƒ ð]Aï[é1]‘:v[çšòeÇë¡J‹ õ?IþÌDŠÕfA•Ž•ìÜá̇ X•g –ïJc'×P<…H¾xOLz×9õKºPµPiÙv°`ÜÚ>ê.±^Ù0„Š*š®Žåb¬¼ÿ8²œêInD¯I+ù'²(W\ÓwòütQ¹æèÄ?Ážý‹9òá à·Ò# ²æluå§»/2çò†Ï®oYئQýË6±¿4pÔ$lEnögNJ/N×<£td Åmì?ƒ²Zë`·1rø`Èá ²a..àz†I£Uä‰Ô=Ëù¹ |;Gs-=8† œøèI¥r·ÌFVòà ]LjÓYÜ-?mÒ•˜ªrdƶ¿–¬ùšs²í!»c&ÐÒiðëªG|4‘»HŠ5Ž4èb;HŒìî¢f&¾pÅ©\…ö{EᵋˆôóË9ÕSg˜?¾có™Ý:«$ÈO ºS@а!lmDó>‡c¹_r×­rƧ “' Lu.wÀàW ÷/úh|Üù,Â"V•ëÚv‡âaSgãC±g¯óMs´Ž7RùQËfÔL+õgt2ò–@W‡¢ké¦-ÿ(|aôk>CÙöc²¥Â£áû* ´jYŸ`ô6.K:Œ-•Ä=’/~”xO†1#ûÑ:>¤ìGÈ‹Kñ aáéG×;€Î¾qÐ=ã÷ð¡†äZØpx¼âé­`@¢5Ïœ/x¦}Vu1[¹²áks\-Örù.–-’sÂvV,ýˆëE%JAàþûÍGäþ¥ÄðB‚A–LõÆó<¥V¹Lj½ÎSþ—uö]|¼-·d"¶ÈQpQ­Ÿãž°¦œ\•¹"±Î¬Ã\Óz ™ÈîM&%šïŽÚ$9]‡ØÍÀà.êr'÷§"ã®ÿF‡ºÛ È /î5<ËJ[ë-6¾1Pήý&åWXSr œug$¹uæhs•‚†T›§·Ë&º´²sî{.€ãî°})¿©çshQ9`§y;û«*ÁLTÊ”‰¡h‚®û7¡ÑpVÁöx”Ê$µŽýuùŸèëî+q>I'ºŽê²£ôÍϦ€ÒJg°!|ö£Wè%&b. »ÅV­CŽâ¦DÒ..+ia·|\Æ‹³ã»è=³Rù­$f/ü¼({%_zgüjÇÊ?aUëS4›˜2»®:¬$2\tº@~øD·O²Ò±S莣$ i=‡$àd®€õK©cÐ%‘(mÄõ§·ñ ?t•ІN“úÏZ^ îöu’S#ÍéÎtöûátQ÷Å  ²5˜(|®á/±{B.”ºî†‚…â°F/ÅŰdwÄVc^>>þr8…~ÇÚxB=foÊW¤°Y(ÝÁ˜çnkKíËÛè&³]ƒÏS "2S±ƒ™1ž)ê‘cvèùo˜DP)¿êrypiò,‚¡©JF[’3c¾©þ€E…BÍE'G¾3[Ñdÿx= Œüè—Aö@u3¶¥$8:÷iöJbJk D”¼,M ÜÕN1íb"~µ£ e\­Q´GUçÆÎ—­²ûö"qe®EŽ^^@Ñ$Òâu´áùÜ´ãOÏÂuœÊ 6ï&º†dû5í Ñl>´kèŠÏ&^=°­/ôäÉX5W¯$¹ß™>ÅXAºÆ•ˆ“AòäËâ-9·2œOû¡G»"=`ÅPþ€(Ê•–ŒSRîx= SÖµ__+üàùMëø¶qÑcwWe°¤h•>Lø›,¼±ŒÕ¤xšokd òjÓLØ Bï)¡HH˜ž»Û— J÷ ·FÉi ORÊdŸéa4Dú¯ûL_x¨cÚTÛ÷xréÀÏ—@âa)êvLåò]U¤õsb'@>c.¼1^Nf>SY¡ È" @^He¹IÖµ­Æ5+™ #†ô -%©& œÈч檜Ÿ·\¨`LŠx n¢!•FåX°ÈNW3’%LÐH8µ2óΠàåi~ä¸x`¸’N¹ öD-tN³þÀLèà96¨@QÂX<Ç}é#nÓB¹^G¨,”‰Nkî¸Zæ»l¡NÊË·<ˆ¥¥b#Ÿ=¦¹{4Ï«ONÌ`´ÎVyqpmb,…÷Z²šŸKÐ×?Á[s•r¾nÈÒB°:«„öÓ §“®Öv¹§þ@…Ì€Œ#p>#wÔŽÊ)‡5^©x×­Æû˜’Nõ,Qƒñ‹…öN5©–Ö$]=yë‹´¢±åMs/åõ›f,‹âPU>­?¯K¤×‚ì+áò§_yÔÛ:ѳ*…ÝËoŽs<.†òAÛ™që“=§%”QbfœôƒHÈ*¼‡ ¼Mä0ßwØy+›}¤ ¶žÆ' 0MA4ndØc¢´4xø>}øQUzº™Ê:+ ’•“Oä“ßr­{+­h™F —/n¶… YOƒ×šõŠpkEyR@Óç;²&o›Á/‹Ž—©¤÷Ÿ;OU(èæWr3.4ž¿K-tå1GB>ì«ÝXÑ¿;õ|ኙ®î“VÐ š2àïq,„Š:uMBs…¢ˆžNž 6{χ®«„fMdÕ$Ûñê–S}jšK›‡O[oéБ¥ Ú¶ÝÇ7Ø—/×ûr¸÷I¸ç^´ûÈ3ŽUk\¶ò«0„MÅM‰ûnbê(Y‰üÆ#†9’gÑÚÄó’ÒP©tý—á¢@yúfE N½«)¯¯XÈJêX~}YîSÀ4â{‹aCf„rñ|ñ¬¾wœÊècØþ{À’JçÛÏn¸ØÆ|ŠìYÏ> Ö¬iƒ«¼5Çš![»Ñ4‹ÁW]OÅRDÂѵZo=½a*(yP8o,rBïý:æÂr…‚Å®À£&YOh' óÐÙ¬| †òtÔ͈6³~m×(Çþæ¬_³YéÂçtÓäÍîñ[–ÆR«ÐÅàz¢}Á•µ­ºÿ“5|ߺéÞ¦b1nR?‡[S•J1߀e©†àÇ­ÅJ!ìµ Ð'Ëvr ˜Æ­Ýañ•wGŒ$|b>>êš'ã˜iÓz¾oyŽG+œÞK·Ñ¶Šñµn±3)–±M+®’ŸõDoºBÓ't‚t-}6Ö¸Гšfí×OØNf‘5;:m47Û÷ãé¿à“/ýª"ŠNoqøb¾ãvIÜðæy" ï×lJ Ðt~[øŽÒY”•\÷~ÓºZ„¿òaf€±î:iE*P¼„ëµí„F¾*ˆÞž8ÿ¥ˆøQÔ:¡F%Ù%â8† ¢‘ƒ~0Q«tqÈ¢k£"KC³}Zq|RàÄž«øg]!#`ES(cíx¼Eè8 ©m 5›r¾ÅhþmEÉ-&‹XôãÊÜçÒˆä¾[w‘AG5‘L¹Ö}u‘IóÒÚÁĨ¥€-<¦î˜Yv\oáÑ·éQÖ?¡ÐÊ$ÅÕHZ6ymËÌe-'Á:©ÜqÁ¨EÙ©øw&‚']ƒT#kóíª’y5fÐQì’åîÅŠF­àšì'QQ3…-ô7ãõÚßmÖÅŽÛMõ9âwf¢ücagüöÅ,2Õ5KP\œ,é6Ñ×r|²¯ÛîAR“¦ZU ’‰0ë7r‘¾fë·#ó¤j/¯ÅKiKÇÑãÞÃ9’boq©ÊÎSB‰ñlÓ¢¯ÀA(}­ãÛDÆðJ ƒ"ûGë¡éòøß8¸¡³øif°á=”U.hÆŸÍ/º·VFö^‚ßN]NW®üëÚ0t`U’$Tû´}ÑÆÖåÌ/Ídë¥äÐêϨy¨¹Ü•ºZ0êÌ![ºäÏUä $s\ZÌX³1™†kQD‚%S|Òxßå9Z¥"Ó6ƒÆÙ‡v*ÂؾͅWbx6¢:ömU¦ƒ!ó³¡ÄØϧ¸çút…ßñ‰Õ°9{!E¬¢÷L«n½ž} —k·{ŒR”Ø\@; Kg#€ìÛ•‹mB®ý I ‰J¥ŸÏÞ“ìn&•5„t†ã{úûÝú,óëH²¢»Ä!Ç@¢Ü¸fÖV¾#TtÎmçŒ>L)¦ÔánÚÇ tNe”Û7¸A÷EVì骾/Z(‚?ÏSž[Ñ%qÓŒ¤¤>{°m@Á£,”¨¿û¿—ª2(Jj»¤Ø@¤…îQMãˆþ´oo@F¥WF¼:{–%Ñ kÑ•G%§ÔxÏ{Y®ûÖ¹>1¼8Üp}‘½ÇÆ(6Õ´ µ¡¢5"z‹W²vbÖ©PííØÎG8êáÜRäÚ!Ê}Ñ@ø›Ú€ÞíUÅR(—*¡~fûH»Zù;ß *Y¶¹tú‰Ö†;K¿ÏO¢ÓÅÂmœ‰e”‘|†ƒBï½ é|UÛ¥$Ó6WVC Ðt´¦ÀŒTȃ°˜â½øG>V[Ù~ÞJ-šµ©œ£êJVuU9?‚ZRA7ü—grPÿHú,RúØjØŒ*ŽíÚ°|Å _ž†¶f…Çñ£SÍâû옾ʔ„å&õ]‹¼ýåpa“?«`‡2!?éÄEøQâ|KÜi_ Õú„–Ú§[ÕúÙ†ÞðŠüu“IÂí55ÇeýÑ b*ýšD‰$‡ÃÌ•G]n N@ˆæ=¼pÌäAÞWE´"#^âãÊ»ˆòóGOº÷Ü"’&ž6ŒCÎæüÚ:ÏÖÆëçX’Oý¥ç,ï”èiÍ2ÎI( šn‰W§{õ6Î ÔŒ°Ì(»¶±ÒƒÚ×}ÝÑÓBVAŒØw%䩾 ¼:æÈ0Î$,ì!OÁü–:’v-ýV‚^«ú<‹!¥gV"ÁóðM¶•w%7Gä£í“ÉzK:!æAº£¸Á ¦ Êüjm?/ö‰©UqYQÉÍ¢îì)é¸inôŒ´:u)f˜ƒ);È&Rù³¤î·Û̲}Îòµ×f yÃË—[?‡Ùc·ë¤ô˼››ÿTÏAÄpMãTp_»Nz×^n`‰B„í…™glàƒœyUæü /t²#è]æ—þq<éô)çë/AÈ8š £xKšPŒå ‘ôu¨°óˆ¤ZlxN½ …Y~"…œ%@üŽo×]ô%Öø] „JÖõäqÄ#åñ‰ïLº;“òKO7ßH–U×ì|<‡;5+¬äíNÐUˆX=Ìð$:íubÉNÇ\ë¬]5ŠÉ¶Èx$­i¿¼%4.NÛw<=AäÕúˆ×á]ÀTCR¼˜‡âh‡½6Ò>‰#Tè<«ç2lT“ؘğûú?${äªø%0#¬§x|8wuì cö›ÁìŠÍPS G$¼ aÛt‹Sk>y¶•„@’ÍLÏ ’áò×ÀX$±#ùR–ؤÏz+?5PgŸþx‰|æ—–lÔ¾Ó<6À'eO¶@(Èî¯Þ2#{Ð%D¿Žâk•àіΧÉËÃÏâ-h‡|)I…!7Þº–sŒÀðÃ|ŠFájIHi¾s²v!g¥»<£„³Áwvâ¡<ãmÆÐ?Ô¦£v%'{[ÂI$›ù­M:LJÀ#dqÐUt^éüe@ Z2‰´gç¡y+¦ Y×IJ0S67VööØo`Ï&.·ôÒ ¥KTÌŽ¢²Ÿ6sçZ î—*û4ÓŠ˜^%×z¾D;¢ŠSìr<:߸¸ˆl#±«L×î«jrÄo»c~HW÷[þô¢fUXá[ì¡ãá°®[ž k;ÍZábÎòÄpYËëÅD¢~åîµêBo™XŲWU«aiÐÁÄd1$GñüØ¡{÷&ňMâ¼íHÐ.cSÖÝ!Þ?xŸo~üÀˆÃ`Õ†‘Äá±Øt#Û,ÏçËÖ{ìs¬b"`\Ÿ7% 3ªm 'l²dr¨ûð(rsßÎÎÙpʳ$¯¤¡Æʲ7!~žYÙkѥΩéíÍ a¸ j–jýlýPjî*åÚXMþdOèÂù1›c±h²Ft3v :·­M•üµ¿ •ÁBL[äδÂ÷ÍâÇvÝ«§eªM_Ø‘žà0<7]x€ùN‹5ÒgÔ€ë7¥ J–övÒK¶¿™€L¡”UÒ[+Ó,z­ ™E³l½C@GFêñCfÄ*RpØ2:räUþ¡E¼Ø§ãŒ¼Âˆ‡ä1=êm4T%œ,§ÓôªúGäMrîÁ7ÕËpX´TïÍ"ÒaÁ÷¦îoÊ^ó'o%‘ëbl{ÅÇöÉ__LµH®.æRΡŸ[ëÕo:T=MÔz'HÅzÐUf÷.>÷ÁøZR8x:ïGçÎ<ö?éòçWöžyN-¼ÀÈݯ&|{³HuüÈ ¿åÓiÕ)&2öˆŽ¼Q#Dë9þ¡E–{³KorÎçW:î ãô·ßëË—óBo^\U¸›<í¯Õ ­ý­ý6Ý"ëk¿­ÒÓõô‡\ã™Ëãk•z¼»ª Ñ!o•Gz›Îv±T•œWOÊ~}2ããìx£ŒJ˜ m,ÜÀ‹×BÉ~š¦¨Lâ )Œ,»ÞÄ`ÖÊ ðŽÉñ.œÑE¿Y …T$Ý Æ”È¦Gæ‹ ¨ÿ¢~aðpŠÉ¼Ä$CMvÔÈi‹ùÅïëÕR¾©Û“*÷ /{ÊW=Ì`Ä(GŠÄQ}oƒ+#Ï;ioL]ƒè… ÖJªì´&‡ ¨È®èk׈ „¯$OÇÕ[ƒôŽª¡ß…öKs†„½s3÷~À÷G» ³D£½ƒyDJr,Š¢»H}eñÀ\Q.ÜÒ=jÐÇÓ‡×ûåKÂjŽø®¥Ø›%7‘”5Y[¼Ô$„å¼Oø¹ÚŸÕm€üuI°µg"ù}m¦<ŸæŒÀûš:)Ÿ‡_¹tßBfxŽôŽ+· R8}™:hùú§8z™ú °hûCé{ŠHv÷ÜÁ$§Ÿˆ¯ò&âTÒµåäò]q >:Û&¶¨èãè½EX_OÈ•`5y™X¸Iñ}úøkötö‡<Ó¥¼™…ʰ=/ŸEþ^ t ²[ÒÒ`ZÝeØÏ¸_=»àDI@ìâåTxD+üMo·gøõ£,À½¾J¯àõÝq¶€ëVÍ@vkx*#•a3ÕØbxߎTNÄðÝܬÇ`MÚÝãyÌÉö|AÐÚZxŽñL¢?ôd6Yâ«úŠf!u"{B¸ê$‡çü®Ýi4rÙþïGÂÏÄ&JP:óÑåʼ‰êlN»Çpåç>vù×½Äo—&0x$D8tWM}²;U“Gê5s®1>ƒ¹Ð µ’²–J( 3ƒ¶Kf8T¦µ„ϼ·”¶U ©ñug]0{T³sÍ¥ûɆ5^-§B¢Evßä~4ñ@F'û  …¹òéd.-?Oµž+5iö aàVO?¸ŒÚ¸HÉÚ×Óçn ¦X¤¨µzTmJ;I–"–ˆ7X§QzTç¤áðÄŽŠÍL é/úo0?<Å?Y³Æ )= 0†\¨³!@(Eçòè}ç¡ýŽsÁÃ›Ë Ù‹@Ž*·Î fN1›³´ïÛko^f~„î›bWÎw¢Þ1BÿMÕcoÞ¸1úðXP¬¿åÞ¿wìÓíyÈ­L±Øœü]Îo}ä¦7蜾¯…$d$V9àÓ:Ú(Úzë/ßXÓ}†‚­êég‹»—µß¼‚þ»{ûnþ¼­;(*IÿÀr¶Ù8Ï¡Ç2x=ü±e)Ýõ^x˜xtÀ¥§tW|2v“?³ËÚ 9r×`ov²˜mýN»È~Y6JXç÷,žë·Ù¨&§†ËÓ?Yñщ/!ÞÈÎBD‚¼è8B3Ö"w²Ïº:Ý9‘ÎèGFUûe À{‚Oîk!=2—¡ü† *=÷n’’Ѿ¹]|Ï/²‰QL ì´[‘ˬ÷èRÞ‰ZÒ!=ÕîDÏp,äÈ8Jœ¡j@7ë“|7¹.ï«ÐûÃÒÆ[~š®­÷JAœ¬K³Î]ð×_ãܾ‡¶¥ÂL@‰ñiì Šór2Þ- 3ï*ÁŒÌ¥–éH ü"tö'Inþ('‡^èêÜ?l`zyB6E¡…Ì{b®YLo˜¡þ‹9…á Òª<~Dñµ]Þ5nè’Õ•¤ÛâìÕžÐOAI{ˆ…ÈS÷lï µES.ßå•lÐ\ŽÊØ’ä ÿR7>©x·W¯ËEáw)ˆp¶!û…·»¬¦UH}ÀÛÖÀ2ªKKÚùÜC/Æß8°H/ÉЪß6:]â8´]ƨyH2ÇhpOîý0e¸ÈXú™ßtà¬iÚ2|NLj›Ã‡øR‘Åq[ÍKmï%òx("æx„4*ôú¥Peç€Ù$W!íó•¼.´Šu±?‘DÄÌ(›&4?ͧzØÀfqh˜á>ð‘Mîô{y#¶Gì¦5Ù(ô©î²6ÿ´Â‘Ÿø3#žÂŨ.OŠåR†J õh¢j²U/€°{ê–ODSå~Œgks )+tG×SoF—*¡Vöj>o¼ý—µI:C9_þ1%q1ËŠ¢Ò؉­[oŒ Éæ¥0ä/þ§£È@wPžx+SA9ÉÛšs7,jîŒàÚ¾¾\éTï÷›i)ô»B–ïX)«*´2fçÅ눇âöÔ~ÃÞaR6}¼æþMXÕÓéD(¢²÷B_nÜż±Cw½ 1S.¤ßÅ‘KÖA*†÷_g2ikXó\:(}¡Êè?Šáç;ä~Òkð¬NšEkŸ÷¬cŠ!uä¿GkQ39O ïηÿ`èU¡®„êu޹¾Ç6Õ/ëÕiéÌB`XÚ%Lù)wR÷üá Ê·4£e²/¯äi°Ü'Íé{„œYWç†M+Ó˜X%kY÷Øi÷s;áíð´ùиsJQ)‘Eu©¤‡³~Ô[ÎúȮ“ŕWܶ“L"UL"Ûî!®à6É¡ÈÂŽãyYÙt§¾íöÙç7Öâ§ô0@ï {%î= ;TB¯k[†=›éÑEÑ»Xã^™¹¨Á€žœvÚXÓÑC¹ê·¤«Ú[›!ˆÖÒ·¤ÈìÖðÇ#Ìö&|Ñ‘Ð5ì'Y ùYÂX° üNñs°% 'צ!Òelà`+ƼQhÉ€´G¡„Vž×@žÔ¹r6¨ ƒ{ú™·aÂÌàÎÛ]ñƒ0fX\÷º…ò®e¿—†®•xowÒκ±vxl±êû\>d+‚”°4A¾q(z\Ó ã™`=Àã“,{°a|óøkË }άÄoíÌ,^“-lû•òQ¨R(<_³S¢ NýY,®€R Ý‹ãóöo{B‡ÜI¤ªsÔЬÑ1«tÁ²Ó?ŠˆÖê¶+Ò/i«|)¥ÙŠûiï˜>ºïÅøÃ,SMƒ´Ëñ:rp‰°±Ñ-”Ü<[³©­ñ}¶óú<Òjé •Ó1׸´H¸+LJŸgRs}˜C)O÷èw#g>‰%=|uót?'C.%¢Ý¶ J|%I ×Ä~¸ ¶šŽOF1öLT›ñnŠñtñèeî&r=†IÏÑŠf·Ä‚²¿ÞÜA$Tu7⛎rh°õnsìbÅ•4h{>oݵ t_n‚˜~¸»ÊÖÝÜÕÐèêÅfÿÒ6€Q+\}ªw•ocöNó³cŠº}âebí7¡ ÷¨™[6ÒÀ÷á‘Ù±lÛbó¹—>m¡“fA¤S~Zm1¿ërøaܰ0@â_ßHH~Ž<| ÄÃ_=óÒNµ¥ˆ¨ÚfLµHà:‚ºkVgÞà4Fo¡šýæ)k‘~ÂZÕ¼`¡j cÊx’qŒ>ÆEk;‰ùœ4;aÍç»Üî÷I­Å˜1‘·‘.éS×áTÂljþ{·#µPfIãPÐ8t}aÞö°Š¦-Óz •§ëš‚QWΪ›´^As:P‹Þ¬U+«6¯^Ëm /¾àt¨Çc­<³Rrr©»QfÆFMB¶,§Ýhq|eAƒé\=æãçB¿iÆå+)êœO ’ÉPw¢Â”øÂcÇ*Ð@¼yJ Óõ´ë&•¨úЦ€£…ñ©~ñ§µ#²¨-ÏKÈÛó…ñ—oÜ$ éÌñn~e¢üÚŠÏšƒH³o¨†çŸïø)KKTwªÓªŽà‘· NAÄØi_ª•vO˜Ë°ê‰Ú=' guéy´IÓ&ß ”ʨo:}ü°ÂÌ0È·&w´þhuª\"o¢ÐÂá2ÓÞuȶu]‚.é-—3ªÁQØËr¶îš~Œ›S‘)-ÈYçr0ýö»cß?¸ÄDÄŽ”Œx'š8†XC¤q6>i¤ýHÊVÓ-;ÜÇÊUÈìÝðÞO3JÏRrÏØz=ôý®[±×¦xHuvUÉêyã\W*ÁCé—¥ ;™y¯íœã»¾áƒÞå.ýdÛ|³~½Ê+A­I4÷†Gΰ•§UáˆO"sìníõ9¥9‚߯OpÕ \ سî–Zcw\/9ÆŒM%¾ùf°æž÷¹Aq*SÁÊÂÖùad˜ì¥¨51¡z—™ƒØÑiM:$—Op…ÜNŸö^MøÜ îFÉÄq?¥×üªX‰ž¾ƒosêÄò;7Ó+±HøÈøe¬Ä֖솂¢Ø’Ÿá·ì²ôU u³døB`ƒ/d§Ìâ .´HëYJÆÇ1V`fV!³ 4r;ÑÊþ¥_q§îÈåìXSÄ`u®ÆôÏܹš™Tõæçd’äy]%a~¼øÛ2ds )#ù) ô1W"Tãvxø´ßdè}‘Däíä¿îþüi=çhÆÝÆìyþ}¥%æ–txE0Rêë”`*è0Ùe—+¦qt ?œô¬–aYÀ ŸEä:ïOKc{;N„¡–·˜ è LjQÿÏLãO/¼ím¢¿Šq%ÊZìÌÑÝ á^T%ô¸±É”Ó÷‰f®ïá.†Þ·™‡^Î%9wÔ­4(’ß!‰ê˜ÛXRÜɉo¾Æ]|Ná 8¥®ˆ «n’ÖÇI›€o#äΊ¼j³oýé²¼÷WÈ‘mà,¡UÙ-®“®y>õÒr8ú‚8-Õ™Â|¬úìû­bHoƲ|â{,NÛHº¬ß0üµklÓˆ°u~TJcÏÆœv«Gùw_+¨„ί|özÇØ!ÿCÉYé0ì7Ç„gOýE¡½§Â|P¯j”'¶ŠQnkn°RsÅ´ã×5É–:xŒXôVWkÙC•¯ãõ1ª†3í©Ì?jÏzË}tHž çL“0¥Y‹Ý ìé?|ËοÎNì:yëó¼óÞ¡ØÂ‰Ù:à‹kÞÞ*H9†k¸‰ÍðqZa¥ö캮d§ˆQE-bÜ´AerÍé§c–“d–˜“)Ñ _fkÓ1øºÙ_Ž7B›;J;éQOÓˆºÁ{uGZ."6™\OÊ4Êúî‰szUä תxœçV¢þ¸® H0AâÜ3&üjÎÜûþæ´›è;\Á¾Žv!ÉE¢ÖMb@3ëFðsØÅ$ücH£#‹’œàQ²ìåIÕú¶Yú4­¹oöÜò{dßu?Ó}™WÍó7ÔÖ»©ÁØ¢$žšxeLÌ=¨šjâÛØat¿Ž_§ÔæBæVï²#›ª…©¾tzi*ÐSƒÌ­ÇûÜfÑV˜ Ýš ¿õK€Õä׊YÃ@Ù·vMK"6rõ³Câg#»‰]âÅF‰å­¢áf›(IfÝwƒBq|¸SdP”a÷ò·.™~ÉGÚŠÕ_]˜œql"¹'6 hqÅaûT?‹R²»v¶0!…0'˜*lȤ„%hˆ?ó¤7γ¦üŠ ¨ ªˆ t#·ÜRW“_U55ß}óª×z;Ú†Gïú¦$c•œ™ájU4œSä­ »©E¦®r’®c¡.}6ÎÇã÷Ûšõv`\„ÇS«ýYsQ´®G?ÑXµìcV7J'Š&Ý—¾KdRímµÆx,çÙmB“}¸ó_q|ÞI;úÁ 7Oè0W -›‚«š¢ÿ'gùMšVd­yÝkG~K[ÅTFæûFuñÝ)yŒ†|>t sàJÃdNr]Nùû”å>_ýíYX¼ÙJZ%ì³,ZíH{Ϙod.àÊ ¢IAÕÿqs²ëùuq-‘¹{äÕ$ÝIï¥{€¥bƒÅFMà÷õãô͹Ñಠ9Ü9Ú¶tÓõE¢*ÛMñ>´Š39†ÿã òòùÜb˾_ ±‚qk²ØÒ¦°E ž Ÿš‘Ùè ×áÊk¼òè[s›f¢Ñ·cò /‹ö ‘šêOuø0…§âŒI‡P67VéoõßáÏß+J¬íïõF#ei¡ÓtHR!¬+©£ø;Ú7ŠJÏ/?ö¿øAAˆú•qÍäaPÊÀó|‡"œTcá%uÓTWuÊŽÃ fn1ETo 4Æô¡r.FQ''ª¶¥¡êòÏ—Ç(²b/àí ì¼…£‚3T{c¬,}ËÊôÛCg08h ~Üv¶~B[Ȭ‹ 1`;í#Jß+•fÌÊêæ,óï⌶*2iŽ °b¨»Ÿ·ôH^Šsè¸ÊzjãÇ ÷Ž´§E,)lÃ0é<¨g¤Œâ0»k†Ö÷Æðò!¿ˆž…/lä}áÈŽ3 H'OKBíú­ao߉©A“:ʼn’""ù K‡Þnê h*ÊfíÚ£(£t("8—¸õÝYZì› _Õ ŠàZ5WÅ@XÒðacW(£¼5sCÓ¹‡Çà’®+ÿëÏg¾ÁÔi ùJ8öÝ]#½3ž‚4©7˵c‚Ä1ïј¨ ¬-ûÔN+’mÏW…y?”•ÌßZ;¨}vtðA×ʱoQ±fGéRôµø´ô²Áöð¢^ÃÇ*ùhýy7•·š¾EJ]ÂW²ír!™oƒU$‘Ä”w!/k  g{E.U‘Ô»~á®5NT üÌùÜüQË"ï+§?5¦¿›‡;ðˆ-eoXMÄ—IJ, oPy/Âäûiub°ÑKуÄh§´Ep´œË{Fc9Ä·¬†^R| G\¡Œ‰€lÕg.²©íb=.›Z„Þª“òg* Ÿ6ô™R‘ˆ_GiºõÙôÝØÁÐù]—Ѻ† pÛ§éiEþ¤K·EU~6Cs´Xó§Á’9ïòÅyÚ3gÕÛg·­¾*듵c†±[lçy¢ðýî·ã°sžÙ±sÇ(yÅÏ+É!:GìB‘tR¼ˆ2MN<èb‰¹fæƒ ³A0CSuC­geþhÌÚÒ2ý4®Ä¥s®Žá>fËnymñ™åljä1ÏÅ(FëΩôZ«âTu%×rtÍ ™?~³á ÊÐsΓB•AÈ´ °ÂC(´ÉÎK á÷}^Îçu*y8ŠÏ‹®Æ9 »û¡˜În”6ö¤ï&ù¾“5°Èì¼fRàRoÍ¡kJ!ÁL4÷¦†+ÊjP0K‘ôʳF–~,`mì µ4„¯D½QëM;ÚÜUŠ«ä{@…:‡tWqÂáŠFÖ 5¸³‘;û ^6ö]øé †è#7I´,Í|ÄÃñ“E›Jkd'†ðÌ’-Ç.x'~f)³.Pe)FÚlæIú…Ú}VkÛ-ëqЇÚw5 ›æEHôôÎyôì’À+Lœù•dÞîŠBItYVin$I·* ŠÞë}YŸ oˆk>ªÃoåûTg^L‚ãR·~f.±õ<À‹È/ör& ³Î«‡q.¶2ïß-Sî Ø[5½ÇÁ¥‹¼çH¿±ÁÈ™~Ó(æ%|Éìšqœ^pH~EȹÚ-Ž[¬„lÐÕÌ2ù¶Å£ˆ?’ß3_k8“2ržfY¢7{ôf#í¬‘bðo6-|{\%!i÷Ñÿ 1ª®'jºµîÕXâÿÍÛ¡!ú› ÆjÁ¡Y?_-üÇ8®Ò¸õ»!øÆ÷|¸n0_ê™°\Ú|¡ø^hl¿¹wœ½Â Ž»†…Šc/麗>ýZrõýù)ÂLÂx\j°ùõõÚÝ‹,ØœÑEžÄo'hLEßµV±UbÐ/ŽYgË89†ÍÁJvY¶/¡Öa›¹Ê晹àózý¨%rÕá‹î£;¿ss¸né¼ÿö-¿_  rÁÀ)ÓkŒ“dé‚bPÔ‘R»¿N¯’õfRzVF:þ‹.ÑV”m2K·æfp´E’±räÂÂÃä¾X£ñqœ½»±©a_5“ïÃ/t¯­ßÝ×JZ?_yU}4”7Ø—ü’t饎ᛓ/G¦±d]º„Ô‡³Y®l®/XÍ(Dï ¬…PTì¿©èŒÀö웺96á©S¾F ”¦ <´Ñ‘-PG"Ag²Ú_íyBÌü™é§÷ * iSýš3€‚rÏ+V9b€ÜóJ-+îAÍ¥P‰§ö0x/Qn ¦^¦å¸«žƒ¼™ )K\ÎLu’5Œ¤½^Ã=­xxAÚñ[¬Y¬2_WÝ]&½VAÝ;¹#ÍN"á:Æýš~o«¬n?ø×›Æ˜ÒOº»·*øHKUZ&%‚D_Ð…Z1s Qá÷ZFJ¤°Ù‰²"Í•NB²P|Ù­¾Öê÷w4ú)”îÄ7›‡«bmê^Áê!êtÉïãwó/¦¡“ ¥ÝÛ¹ýMÄèÃâá³Ñ!Ô” ‘ŒjêZ&Œ:IK‹ÂÃÜd¤"fÏyG’HtLìûn °c¥ï2xR»U•r*wý‡ž2Švl~µÇ,}F]¬ê†¦M<¹„ª AÏ}«q­gøžv½ñNïÆ:˜âç±)Œòy”,~zO±´ñÀ±uôð´ïXΚo‡žc-v’jÁ s“>ÒoyxËw̸…*ah Ì$áö‘B½b%xCÆâì”qÙ‹iÈæŽz}mñ1gIüÁíp÷NÍnÄHn(™baiãp¦ð]qÏ?ϵ¡©ÝÉâU&‚^*äf<,r±VÄ:dúZMÑÈj¥f¦Ÿðn;o{ü•!ÞO þÌäŒ2ÏeÄžçùÃÝY­®ýYHyp÷8•¥&5õI)ô ³t6¾šêúWt‘7¾~‹ÀÍ/–ø²0U3ïF!]=©%d4lVBÖÊ#.z«+©øª4¨ìVk„â¥Måf-BcVhe™½w6:ÛWÊ@{›‚×aúƒ¢æú¶±ÿþŽ×Ó©TˆÌá Lìw¿'•ÍÂ7hŒTF¨mdŽÏM€1É<†Ã5Ú%Ø”…Ó,ç–~[|7Í'ù"©”dI-îf×Ê^g¬^o‚¼&ÿO’mîÒñÒZ„ÌCȳ>R•»V£<_N°[»%AÀ±D?JvSzqÁ˜³( ›‹ #¦<<Ãý ¼J+€'RÛðEvÕ‘•JÌ—®0SÿB&ÉÚ_ Ú+*ZïÎŽÐ箓O%ÿB8wwúî–C>åÑúåv ø³­ÍR\É¢˜áÀÐ?v%‘ÛQøÿ¹+ñB£fí#&øçAþ ÌM´)¥x#<È9}_9ŸùØFBO—-µÊy©µ˜sÇÛÂÇQE!NíûwÌàHÔ»Q³ª¨4 Ü(úð,X1^ÿâ†ÖOjßÕØôkœŒ AШ4†pR¤ž-|@§¯•à6‡*}°çmÑ:ÞÒ/Tx6×»© 8Â#!R•¿|GiXc“Î×F?8¹/>wµ\â‘ äCSZœiúR¼}Äò4â •9_ô÷Ÿ|žèüÛjߌ'¥§+,6‘‰nº ©ƒ‹øLUM¼ÚGf:à¨[,Ä ÃØéf€¥;Ê šÍ[¬ÅÁûmÉ»2µ¿å'¶Í}¦½c#ëQ{ˆ7Ê«ÂÕ¸.¡-$ñ·s–#ý ÏÞ­]eÞÔm*ÏÉ Ò:6øeYbžñßÊ Q•ý| Ð"}B6Ò¼èÂǹ…¤ÊsêRÂß™Ú&b¿äîÑvh½†­'OIeÕ“LXs"¢èc¸¤Fó6ž’/ÖEð›>úÑudšøða2$Ÿçé!õ G°è¨ôÎÂ8MDKç nusÝž¬Þ Ö5D~1RÒý¿ÿíc{àÀ£›ÝÅ%uèvïÙžɹ´Z.·2ÏÆ TÝ,¡7£z çÔz`eÃjJL1Œ07Gè#ÆLõÅW 3j«Ë=Ÿ¶ý?tgf{(”„h¸X™ûÙ’©_†5»UÙHÔHðk˜ ƒJ¹ûÄ28à§çFŒ.´°ÓÖ<6€® :Z¢KƒG(ô|‚æŽÄ¶ÏÌÂÐÉ#Îrò»²-Ü«MÝò0žöñOÎÙ­ gä¨3)ÚA†¹#‡AV],ázs‡õ9BÁ‡™Ô:Lé&œà\Dtfd3NˆdôJïwPlÇw&X;Ã9éµÕÄðšk¬ε4W à„=`™)áKØë€ÈÍØ8/“èÎU¡EœñR”{&>š&âr&ŠŽ ÚÓUçßå’¡WM.í§6v€%Í;-wš*p”SR|Ó`“q⌻¼`¨[…§<†Â·üû~}Um¨0Ô¡ô!¸¤3ÑK¼ðb*C€nç“oxƒ³Ðý¿Ÿq5yí¦ÚˆÓ®~ùdO ãI£p tº¶h¤¿ån/©n@QHŸf8S,Vòñpµ2´.?‘Ø7ÚÉ÷¹mt£"néûEÓ?–ˆtÑGë®tätç]Æ ‘$óYœJ-ÜTu¤¾¥_©C£ãQÄ(k¬gÚEúÀ±k`‰»ÝîF}¯}™Oñ§&ŠÌʦyN ò%óiv¡éw—­ÏߢÉ-U8Á„tžô ãdÒa€P—yƒVkTh-|œ@(Ñ2Å­0üÁq’A?§yüœTL£Üïã÷ÔÓ?6[­¸„]Qž)ªžNâ3§ê¯Í$øÑœžím2ÉÎ7ÎŽi},êf‚î…³¥ cZ[‹j»{»½Þ=~àhSq¤“Œ”Ò¾„òcõj”ÌN”l–Åg¨xÚùýRä ³PÌ9U8°i »Ð =2‹V#²¦Èˆ‘åZ²z}Ï_шuƒ…Rcø*ÇÀ½ÝvfÓë-.†‹k@ÏT„Š …„Q „ƒ-ÿÎNÙ«! NxÚÓZ?v›zÀ÷ïKZLæ¼@U ½GX5· ø,—mxö2ÇMD.*¾ŠTýAùÙdÑc<^ÏFðýS®ïüa•‹òN6©'&.øfŠgñè%­ W2¦ šå츶áÕèj¾=‹v!.¨ˆÖÿûŽ#ý<ܨPòD‡Y¯ˆóaŒÜwL¬d<9eCÈ.óÊ´h&Þt+æïÆbd¾Ó0±–ã¸[úë33~£Å9¥ ÀNÛƒÑ^ŒlC|{¸s@}˜+s¯§£Å %“š=è~bôÀ¨M¸<}ás(² £ù†M@šIµöÁ©ºáì—Bþi,ü?"yˆ÷X €ÕÅ x—©=œí¾w;ýžÜµ”‚¼Õç':HeÑÊZ@<Æ/­å¡Èõ@ci(ò清‚OåöXZNª‚ˆP t¥¸Kz_ö—^=‡ûá?ÛO’¹«ÒÕL\xY½*`«ü [LÆü¢ÎÚ+pŽmn±Mb®½{h‘AÞ‡K«ý_Ì@2Õd£ñãl]ÈÌ›ñ©ü6§Â‘¤ziZ%½âlä¤Ð“ÎnF,§åƒ˜ªQ—zoTÐÀ{×áImŽc|0ì ùäƒÄ¨¶a„Ú„Š¦a*2ÌoÒn(÷ØîL.î¥?F¦Ã~Ü\òµbÞïå65p 3›Íá€@ ¼ÞKLm„]{»›’û\¤ÅYˆãf}Ž˜ö elÎ}ëartO4µÎÿOòPgUÔúOëCNéšÀ5'MCK)°×‡bä>Ù0dy;e BªŠ²±Šð8kUWçW·éûëÏ©šÁC^¼d|Y+ Wr1ð/ÓÅêÁú´ Ôm¤q]O^éßÂù샙; <×ÔðóþliVg;xàAå1p•^ÜÄ[.ÏqQNHºÚ¥H¤-šï-m’޼UIŠÕß»ßÒ­‹ŒãQ»y‹¢Rf_2s‘˘~i¬V9Ë:µŽ5±)bø,½y¡…^q÷4É×ɳ6Áœº>||/E`nàäÜ>=ýÔÂ4gµÔS‚#Ù•§-FÇîJêô”õ¿móàœ_iZ+u¨Ôòë/ :,Þa©Tyý¥¥,Õ™8LÈq+º >ƒ½Óô-¢\³>º­¿õè—¿ 2À"˜±®}û·?Ñ $X(¨i…÷t8è&a½K3_ž|æõ.fÀ/ÅÆ5ÓNfüñ}ÀKæHÁæ˜îhDRn£å—v.m=ñ=Y•"„ᙈ’· +<àkÐQF º+âÖ7œ²~¥¸, cï¡JJBkÂS4Vç÷‚ b¦¤ÎY¸ûjW"ž^}’Þ”³ÇÓÀ'’ËD¢ ŸS*¶»Ë–ÌÈìzÎO ·€²L7¨¿;·ý(‹R‹ïŠ"§w´:p¨ ´JtrîøÏjot„uàÞœª"mÀ9"8µ!( ´Y’­§)ƒ+\ã€"hÖ¸8¹S³?#Žî¾ÜïuQŒ·}ËkÖ.â/„QŒÎj›F Ê…·?n^Äãf´}Ä^oTy¹ªãv­ÝL\oþÙ¥ˆ?$g­ÕñÅÆÍ°W¦ü-ìÃAV’B±V¯”ìÓ¸Ööõì´Û~±…ÚK8Öñ†ûIFýåÙÝß`Âëœýû¦JÂ!šÒÒæûe‹ÄùW(0)í% '[ʸFÖjñFh„¢H£ÜÍœqø7‹êñ[@Ê«0Aàkl‰+ÁÒ/&„Ö™HZ~çSÜ0<÷óˆUåô0‚,¢‘ýS„†·àð÷®a…\çb©„P\W‰aÁSˆ rb¼ÈE«Ûèù£ëàkjƒéì1Ž©Æ-LYü¯1 áO†“T ê×ÄQ¬ ÆtYú»ÑB `g:µD2 ÿ8™h7ØÆØñ*€ñ ’|kÎÇsX~W—â[(?;€8Î)[Ôq2 ÔÄŠ V„‘´ŽÚážî¨HçÚduG›SBЙ†i!E5×ËÔŒw@¾ªÄÖ!Xl¢íßWÛ—Â<^ÁÛ´B°¥è=ñBd]8a­·U´XžÒc‘ª_Œâ0jÉsÌ::y£L •‰hU8ê £ùÒ„èd²ãµ¹1ÿÕ}–„Æy=Ut¯®õeƒÆc'Ii6:ÛÁ¢f´Ë¾§p¨Þ¼øML\y¨ç²R~ÆKTxxwX¹õ_˜ôIjGÊö«?O|˜Je‚b_X=œŸ Z/+^XyÙE:‚ËüãcÇBã å T3Åü{ƒŽ0qÆ'k{ÄEœàv>a7‰olû@‚ ¨ tçoÎ x½ãvãPŸ=UdwïiNõ!M¿úC>øt­˜‚b#ô$  ÜÈß+–Ñfƒ=â¹4ßõ‹S ëÚóÛ¥bkBò\T1AÎi~æÚ.Õc¾nïN¦â¡ÊoÿÛôF!È‚lÉíEm"ŒÎD`jH›˜ŠÖØÏ„tÏ@{ÅöWß—·Î¬Ò• G=­ñ.:k¥áîݽpp~ m~£ûsøÑŸœèo 4Øóš(’ÛèÃFßkÂøOFÖÁk”G·rðï(ÄKx>_cá©´u’n€Må½U@£öm€ Ë 3Ž~î–5ò"†CÖg༒gh Ž¥’Ý>­-Ä\¨îÀÆ0‹‚‡SìSûÄ0¤ÜIªÔ`«[Ñ>rÒÈÍ>MB@œ­‰Vº¿U‹B1q±LA7XþDA áå’F5Ý]0¹ôÈŸW¼ßaÖÅÝÉjë²”Ü4ÞÔ|°?gÁh_RàJ¡£5ÁqÉQ`¬.þû6å²”ù€»×ï¶nŽyûÓÑ·Ÿ‚Šz*M”‘öØQ16ª$ŸYJ& ÏìFöº©¿qËûµrõ«oP–™‰žþ[MîÊýŒî‡‹&ËÕSnß2he×q{Ö(ú£VŠõ,³'@…ê½ñ<'¡þ)\TpúÇ“˜¢LF¹lppÏY*Žx©ª8ÙÌÂùçíI6îÌ ? Ùû—>2EYFBbùÕu*;çgKAT»©vî~½ÅÖýX0zÒ~Ý`â.*[¦ERÈYc¡lê`¤¾p.¨Òþl]¤ßa¿ÞÝ,‰VÈÈi·É \ E‹èÖ1‹eXž#ÆáúœuiËõ@þ²N9÷J|Óc\¼¾”ü?‡Þ°öc'+­-‰bÀQ„Ã?¦$¦§.4\txKK—>_À9<žJ\¾zIٔܯyµ{ËÎgPZWkCßÔ-^W2ó9åíg*û‹¸©YÕ&ŒÎ¿ÏPäÇ„0±ãËÖ;ÔÂXô”Ó£DÌF[銺€/Ýs¨û'©ýŠX7ÿàøÓE‘ ñm¤aY§ §ÙcqSÓ‡]s ºèéžo4I— ñ¯®eG¾‹›¯už]{V_x¤^ß endstream endobj 800 0 obj << /Length1 2303 /Length2 16611 /Length3 0 /Length 17958 /Filter /FlateDecode >> stream xÚŒ÷PœÛÖŠâ!¸Ó¸»»»»;Mpww$¸»ww—àîÜÝpÙûHöùß«º·ºª»Çô1לëë&#RT¡2µ3ŠÛÙ:Ó1Ñ3rDä„5™˜ŒŒ,ôŒŒÌpddªÎÖÀÿÈáÈÔŽNv¶Üÿ°q9ÈDœ? åìlÒ.Ö&;77##€™‘‘ë?†vŽÜQ#W S€=@ÚÎèG&bgïáhñÅÜù#Ͼ(M¨L\\´»„l€Ž&F¶9#gs ÍGF#k€Š‰ÐÙãBPòš;;Ûs30¸¹¹ÑÙ8ÑÛ9~á§¢¸Y8›”N@GW )à/Êy#à¿©ÑÑTÍ-œþ¥P±3sv3r>Ö&@[§[S #à#;@EJ `´ý—±ì¿ hÿn€‰žé¿áþíýW Û¿LLìlìl=,l¿Ì,¬qYzgwgZ€‘­é_†FÖNvþF®FÖFÆ—nR}0ü7?'G {g'z' ë¿82üæ£Íb¶¦"v66@[g'¸¿êµpš|ô݃á߇kekçfëõdfakjö S{5[  ”è¿m>Dpd_€Î6FFFv.Ðt71gø+ª‡=ðo%Ó_â>^övö³@ 3àÇœ—“‘+àìèôñú§âÀÔÂÄ` üba ÷'ú‡hö/üqþŽîÆñc0þõúï7½ 3µ³µöøcþ÷3ˆ©¨)©‹Òü›ò•ÂÂvî/:63€‰‰… ÀÁÆðùß8ÿíÀØÿ-U4²øwuŒ"JÙšÙ¸þEâ£{ÿ!âúïÉ ü÷ÚPþ7ƒ¼ÝÇ<”Æ_—‘ÑäãéÿóüíòÿoöÿŠòÿ:þÿ·"qkë¿õ”ÿ2øÿÑÙXX{üÛâcž]œ?vCÎîcClÿ¯©ð_ -lgmúuRÎF"dûÅú¿m´p·pš*Z8›˜ÿkˆþs Á­-lŠvN]8:&FÆÿ£ûØ9«KÅéã¬þV?VêSŠÙšØ™þµ{Ìlì#GG#8Æcfcx1},©)ÐýïÙ0ÐÛÚ9¸>ÈùÌìáþ:Qv6ƒÐ_¢!vƒðÄ`ùƒ8 ¢×Çþq0Äÿ &ƒÄÄ `üƒX RÐG>Ù?è#ŸÜô‘AῈó#ƒâôSùúˆ©ò±Tÿ ~jÐG>õ?è#ŸÆôÁOó¿ˆë#Ÿöôaiô}XÿAušü±~dÿ¸mþXÿuª ¦ÿ€Ýþ~ÿê?–6fmdóŸ¾fà_ÈâO–¿ ë?bþ¥·sqü‡ÿ‡É—À"Íÿ”üÑ"s{óÀ‹™Å?àG•–ÿ€í°úüè‡õ?àGCþQ;Óý?‘Ù>\m?&ûú~Øý)æÃÙîÔdìÿ¨? ±ÿ¸5ìþÑP¦6ÿàÊôQºÓŸ|! ë?¸±}˜;}\¹>bþiÿÇÅàlîüG;?8»ÙýÃჃË?à}×Ànÿ8«ï$cþïñøÁÎó»Hž@Ç¥úŸ57qqtüxþ}ÜÿÁ?o@w  Üò‚ O°empûcµ®ÝÞß,ÙžF ײc‡Ë3t"UUFà†ã½Pâp/òÚŽåà á›×IK=tXk¼RÛ‹÷«A¬òô^ÜÒÆà䡺|X<:UÁ}ï7oõ+ðÐ.i²N$Å<ÔG·~ ÷ºÒձЅ=¥ý*vø×ÒºïjßtŠæÈr3籈¡œéða¨Q.Ý?ÍÝÝÏ¢dO¾JÇÒÀùœ~g)ðÒÞdŽzš÷üU®ÊìÔMŠ­…~‡26Mî%|˜$¹èU\-Yh†¯¿ÐÄßñÉȵ†¨k™·ttrkëÈ @¤ôÓÎth´‰Ò6™ðð‘µJv'JNGÑÌ“A>œ“RçÁ†gdÅ\†cÀ •ó™"sXj_œ5Að¥TçaØaÒ"ûvÞà—ï E}Ü»Ÿ`ì³q®³N—‘;âY'Çã•Ï䤄-L–έªÖ¿êÞ0‰Ñ“9Q6”áY–ÆÐ`%Ê»?(nÉ÷i0˱š é.O¤÷>ù¬“ }Þý'A°ÍEÕ=—à%ÓRàtTš%·t-ĨÌK ³J^µNÂÉ@¦°1ŠÀX¹h ]p-GU±‘Ѥð< œæ°/·EŠøÜõÓ%3_áL«„Mã¼§¥J§ÎC$õݾÊ}ª,›’ˆŠ^0e–±hÄçw‡ÓMÝtIÓc°/VÎáó¦¨bË Ÿ7ð;bQb—ËþDÏJBØ"IçoÒ¶ì¹7Ïn IQûíVõ~µ÷ZO³Û7µ­»¥!O/R@©>£{!¿¿—ÓÑÛÌò rNHàÚÚÙ©§D.T±é¡¾3ÊÃLÅ£xk¡ËxóóxŸ!— ¾}Ôà½âöPLµ¼‹ã•,Ÿ‹yIÔ|àÌèÄrnkâ\¤~‘VS3!dw÷Ü.]ñ„§õø*KùïýŽdfçž7Øü0t!ÒÂÖ8}Â4º‰{k)F¾+Vr)eZ ¯6oûR›Ìê\Zè,çëg‰Ž\FPªn?G­òøîÅ*´a“

ÖnÝ¡çÍŠÎqßÍß&9(‹r†°Å›á¨Df\üŠÇU>0â?Jî+ø!—öSPS ÷`XãÛñ9=`j04ÒXgOØVŸ±xùi%}+õˆ@Õø«|?£¬ûRApa&IdÓ¡ÓLÎ…A%3?¶ÇؤYì?Md28Ö$–œÞðk—­ LFsn+jƒÚÆ@‘ØEo§ÓŠ¿²·âÆ&Á :Ÿ lN=•ÑIñg_ÁuÄrX½PCúí=•4žŽè`ÛŠ ¤ ÷âmÌãKf×íÍþ:éME0ô™ "Œ.xjyø§ä¥{«´BÓ°ntÄ4¬u¤ëü3-?RøH*‚2Ô`íbáUÎÃtÒ ?áñ'òÃòo´M£/KÌÃ’bj#£ûùÝåÏJòÖíw¢À 3[$dý— Ìùo²gí¾ßΞägâtƒ¬Hó\JÓèÚÀMâIc¿°côZa£F-ØpCÉ# Egzt:.‡æìn^BŸLxùÖ+]}ÒÇ>)‚ˆlÀÌPGx; -&ŸšÉ ÒÜV0T|/ŠW±}ú1°ãKòÝÏà3u¨~Vƒ®Å%ú“ô¸EƈÃhŠ4@¦`Ö‘óÕƒZå Éç>ÜBBÝͨ s‹Ô¦6Ô•ÙS[ W_vþ€QþXÙ!ížh•šcØEV¡}‚ÏØoÜ÷üÕà—4ì›H ”/ÛU$¼*‚§SQý™‹¬a’Ü’i'1G–Lç,<øùÃAÛõnè/N@¤×õuÌïWC*‚^zÑP<<–ÜåýDÒDl´üCØÔv-‹_mZÒÌ/§¾LQ̶ÍYå÷ðø‚^UÄFÿ1“è2æÓØ ²€WQ]¹úÏ*\’K—JßÛç3Ín%Šô_uÙØÂIv–]ÑuB´&ë©Ð0dvU ôñê}m[R+äp4_h9Éó9ŒMI'ÿJ„×wfÐ@ Xò˜ìòëêÇ*‚¹)gmV’ñ¢Zæ Ñm7åo³Ã¯h§Û/'âXÓ? *ÆÉ¾G{—ß“ØC³wÉ|G’%TÔÝð4F*ÌÖ5™yðy8£"Ô]’1S`þô«2`{@)?W¯SEW|ïpôËþví‚ \ÖâñMÕʃ¿•b³Vòlak:.ê©ëÅ¥®Û…ͺÞôn—µá¨Ù³ÄDÖ),ãQUJ‡²Üuç5dÿ›€F¸üc¤:u+bµ<¤ÅŹ¬Ù™øC‘|>ÈX‚òĘÑ8QÎâ¶ð±³Þg nf:dùz‚2Cª#ë“à ¹çâ$ŒyôEq7¿¡ E”Þµ_½v·â8ýhÔâbc¡c•ÀbŒQðð§ Ùx :pܸIôÏ¥‘k,>ª Øi+¹Ñ¶Ý$Cúü`Ñ39 9téÍþëþkânr ª1U¢NÒ)£J¸­õÏ=A^а/ªëM·Ì•êØ±•òN3Q/ןü:É„ƒVÌ¿]¯’â-ÒnÝðgï‡áÜØÉ$¯KfNV!Í}Ê4—1O#«sPH×P6^´áÿLŸ¾®0aR”ú³õ@o£4j9,Nf™]¬XÇtÞæiÌ<\Y£á¿.Gc#ÓÜ2øÓŒ–xÅ7¿¿Šçå>‰#£§‚oÔŽî@™Ì?bÓ6 OZ¸OÐvô]ˆñ¨×¼MYœ«:[uÁ+†2<å’t#$Æ{ôÖ¼ çáý.Zîݲûº8a ÷”,F S=ø}å«ÄökS ”€¡ ÷æ ·4Ð^yp¬qøÓ£ß6WzÈ·œÑ_¼Z:¶CÉ·?×Á¢N`Ðf7;·‚8IŸ»Hˆ0S|(óVøðøWfëfÁ¹IÑß²Gá+QJëÝpŸŠî&IåÛ‚WxóÞŠß¿[jB¶i:¿É9â,‹UÕŸfÎ˾R›aѤª …ÇNŽ€!Ð ° tï¸s$]±“àv½ÝDð}Ý!B}yƒNv)ÀŒ4Îkfˆßèª[#H*>è–èoíÌ“Þ;òuR Ä0â­‘s±‡hÍÕô˜ãï²úkqì×/ÈÙë‘äyr>K«ÅC,Ù¢VCæ†ßu³]Lù7®x,Z„p :ÏÃÑáìÄ ¦SM¬îäÓç" m óž]Ñ穘ÓWSãvIIÎÙŸ¦½~_À¼–lW6ꊻީjàÃwù[ŸÃ‘¹Cê|©ŸC> ±d÷-@ŸC_#ދӷ²©½ðøÔºF†÷›jŠÌ¶Qc^À¿ò®ê ˆÅï¸k2:0iµÁ³jUMŽ9zœ“0ŒÈ5ˆ¯´æœry¬“Çx°ž‡\Ü;cu[–¿m]ïÒo£Hùãr`ŒýݯÛv Ú Geûšû³á=ÊBKリo'Ù>M+ 2x™(‰\ù”™Žtà -Þû.í8ÖU³¶½eOÇܵ}3SÌ·k:óï’›¥Ñ§ MA:g7`XÕð2_¾fŸN;³<¨Sñ™ù}&æ ?í1߸±µ`‰ [¼^çë™.ëå ¤ ¢ t˶‚:hç:-— 3‚pMþ“‹jæqS#!ù95$ð‡¼>y‘‹”÷ÝS0ÍûcI1<7ÈåSuš2oÏÆõv#ñ7=ø‰ïDê# yÅKèrƒ*lˆ,®þv¾mÇ ¼Œ/ïÚ¨{ʶ‹‡‘<É•’ &ç”íi’ŽAa`oEëo·Ðp59Óƒ³¥ÎÔßëfõáÐS nÜ¿~‘Œ"‘ëʵò¤S7±ÇÞ½nëËõÎx¼H˜¶ÜÉâ±Õ’ȬÛoÆÒ¦íØÚ÷`ÈújˆÒx;˜jH°WÖz0A—¡Ak²BÊHÔ’ôŸsL°ÌÓ9b #DzÛ"N%Iß,£àB%n¢óÐû‚F‹ÊÌƒŽ®ÙjNñ任ߴŸ`½÷j0Ø$öŽt â&‹m¶39_` ‰`ºêÁ±DÊÍ_Òè³?,M>˜g tÕ«øImʪ6b>3{ҙàB—ÎUÑ×A|Õ3®tuäéØb ¿­ÙnõŒŽÁm=RØÍhh±AnŸ:aÉv ¤QÀg†/¾ýœºxKu’®‡öÉ–ú‰JÖØ: MN_ǽÙ<.¤Ïh£‚*¿ß‡aUzØíÉz‡X8¼Òž2¡QÅÕy?ñz@_]ȦôÐh¬òB¯ª…ŽNO>dmá¢1QƒËþKŸžlù[yýHÁ´ÿ±a¾~6‡E¦H¸}˜D€ïÓ¹ ÓñèÖì%¹²718OÏû¾÷4áU‘ a¿Z0´v©|@ÑŒ'¶£(zÌ Ùíò»¶:˜ÞZdA`.!©fY’\¤Y¨.CV\ur”_ž‹Yk†–y„_°ÖÙE´jѦF*™EEzÄa~94›“éGwˆv¬«íš‡§ž`/²ËSìPdûÚy|d¸†vt¶|_C–&~û3£“ ËS;Õ‰ŸÇ©äKz›]0Ò:C¿«éú þì"'ç´ØÕçJoäÿì6 ¤É¥+²nêÎ5ÍHwE½àß.Ža¶ß"Ð!ÆÄ¸Á²œÛZ…ßV‰·+7Êœy‹àÊ}&fjš_ËN7”Ê %æâMR¸—vwVœÍ"y@Žûd=êá;¬GŸ)×Å”}^XÈê%] Þ2½ý˜íö™Z‚¿ ¼·Ö]BöGcH ³&ÜæmÇNÚzô£ËÝãæ“dcR„©–Ü)O­Ý–ÅÉK¶Q6ßj<0‘,³hò釳PGFß Aô±û÷šŸÇ|aŽk1êÂ@T;˜úÑRÐü0ÿ½æf2Úá Edú­ œõ{R[-à÷¹g ›éßD¹J‘Âs)Î ÛÀÀA¾ó²÷‚sä7–CÔ ©ë-*Á,”(¹‘^V“ÕΧ™. ÅѤd$DÓüÊèy|V:ü.<´F¬‚«È$öð|”JúUʾSñ³Q{¬ikBÑЯ0YHWWU‰Úª!صéé½ ‡8ùïëo­ù)AôQ«£Ïž5عH}‹F±bâ7TÛÅôÞÏÌ7\¤êŸÛÁ$/Õ}ò8­JòŒzX)mBÈ-ñæÊ¸8o9G,Ì0_$ÒŸG8 ?~»øüDÞ€•»‰šmˆÓÔüù‹ÿèct–W–8÷l”̧ѥâ³{ŸO“ß幇qGçáw¢ûBHâŽq72™(“»¥AüS•eu¤¯Þ¹¨Ü—aøõqÝÖRÁŸb'9ºÍ*e+Ìh%e‹¹LJx.¢ KjÐja¤ä†ÔNü®¸öQ Ñ»V5øç¾°9KØ û7R!ÃØdòÅÈš}2}»§Ž•‹ îx%8V9…\¦P¨€OU¨Ø ë1È•¶Êá/è QJ=xR¨ÉL’†øÀ‡í­ÄXìT™é;Žù^³"ç×/©¥•†å?åSÙ{cÆ”–$HcŒE’s‹aÞãìWø\·-H9Ž,œËULáÕ=lÛàaæñ=ƒ˜Ù!D²ù)i “o•ººÞ¡ nËã­ÙžébžVˆJ±-ÜÝT¼Øûe‹öÀ%cåÆ4ÊϦ‰ÏRîœ=Ìc/󪄀RõÓçëð­o'Ž6y°'æ(“¬¾bËßñ6VØ*Ù‹ubø+êf¾• w«SÊ`EÁøo€*-ÅÃLLê:§½dehhΪfâQ7φºÁT²Aké•r ,†¥=›Ìç=WVØ×,4 ¤£w©©U°Æd Q%î@q»`ëÐ÷&{fCvP¿–€(%Í':$‹¦GŨî‰èÖdZs=2Ô;xjˆÂR3é}JGp¦6ýÚ~ÿÜ ª2áàÒ.^¦„Ò®c£uÍ•H¨ôš)\™o¥Ð]»ìÈVÍya•*ƒ~+¡·,a“âQëÎ.„AŸ?Q‹àËá¶›À“=i툥"VÄx% {XÆ R,dQ¯ç@Œ °|’ NUÍSˆaõ¹k3@fÁzTÀ²jILŸ¯ÈÍx°È ë©KnMÍC ÔŸž„_î¸UAÏÞîédØ™³ÿáÍkž%Ú—hIÌh$]?˜ø#Ëx2¶U&,S>az›±Ú“ _8+ís¨€n:œëÄÔ62<ÂëllŠ>Ë1öÿ‹#?³ØþI2z¥2PH5òH=ìÖÏÄ]®Ùä¾ê«…óeg>°Õ‘P4¶6ƒ«0¦Z¹%Äpco€…b±XŸU"ñx¥(qªüŠý屚ÂoßpÉŠ™ cƒJn:=êúV)ª‰tåüH,ô¼Â1J \9yçÝjÑÈl.W€açŽ:ÆðI&WD¹W“MêaÿZèÛÁUòCÿRG”‹±•ÓŽ¢º’ õKsœ‚—ÏÏŸ ØÜèi›Ì»¹ŸzÒG˜x«ß NE+FzªA.Üòˆ a^b7Ï­ä,ÆçmƒÀp{s¡ËTp®Ûˆ]ä$вšÇŒhšç´…[BÉBg1¦ý^™Ûî„ÞCöÐLl^7…·ÒŽäI7(÷g'&{«´V2¨Ž‡ÅÙ®bçöï·Uy§ËÙ¡¶´Nm¡I¾pªÏQlÁA’ ñ+çkàØAOCÜk˼]‚LP°.8ËåÁ¢`mÏ#d`A&€¢&%<¢U–Žäíc€u%¸¶¼‹ç¹dÇPkP7W+©W^Ó+%H+÷~!¹¢å¤Šü'~^w tˆÊYcšè gB¯¶G42ÑÎ+_í™ß{”r;ðaáì1äTFæýÙ'˳’ÀûƢ꠶ ‘Òäðã1Ö_é7XóBÒ’³%'HÍqËæÊÚØK>¡+_£K˜)8)<žqŠ>+EÒ‹ï&âJްAD"+s²ße5é´xç´LYŽ­LÒ`×â4JrÒx–~#¼~öÝ¿BG£ç×GæI±’]m_s`ÞeÉ!ÙGck´&)ìk9ˆÞÃq­á(dÔŸ² E¬4l½ÜâŸìú£=z²ê Ë-í .|òå|á Obm—¥AäïÆ(Ó+ÓØ6—Õ0¥Ï=U]]íM¢õ¡f›+dŽÌy›1buêqç|YÜ)Oâg0¹#Êï7âm{öj <4‚“Œ™j6À¹F‡ Eô‰gà%y·’¹ô+®WŠ#Û?GL“Ot÷uQe°Ùðõò•ÒIb bUÿ3êÕ1éYb}šòù3ÅìÍZx$Y™Û¥Îõ; †¸•o,Q<ø‘%zzÏPÌ8%äÌBPÏ‹„„-hm1IÑP–(‡I “®¨uFÛ#SóC§è€ž¬‚‰Å«š>O¢[‹bAÁƒÆe©D ˆ„~0üÎdü•Y}ÛU4H dÒÚD?Á×T]ï¸<ð½ï¾H?4D(Û?­øhÆC—,„èØ2ñÇüΠΨMð˜ñÀàaKÂÄÓ¨ÏóAÊLméÀLÐyM(`”Ñ#Ï\è¡g=*Í!Õ›¸5Á:de6EImJC˜ôHÏõk®½†0>÷^&ïÛ˜;;FëÆ‚¦³uBa¹XÏ«-MU›S„./:1Œ,ņ™»Ê5r;ƒ+q”‡l5hfùîÒÝ×öæ¬õ™Œå9?“âb*0“÷< )¬'Dìbyoš¢EÛ¦ô0 ÚÜ;d,ïÃ)¯mÞ³A¡oL© °…îñ™¶íN iãÈ%µþ"ÊÏS—÷Ïx°EÔ‘îMµ*O¼s>àBr@e—þÜ|§sŒ@™poÔÙ uË4{œú‹uƒ> ðØÃ!;r|Nå=ˆ»C¬Þt ÌŠí6Ÿ0ù- W×:ò1à¾OáÊ ><&Ã_ t¹›W^wýЗ°†l^CýeŽ‚ǘ+{£{ÍÂy¡SšZ#-Fs¬K9UD#,…®:"áHV§(Ž â»¢Po¨6Ã3"ÆØðÿº´çŽäÛòò’þ­Tœ×ûî.Ùgn £Â(ÛUÿ«—š¬¬îEWfHñ>$¸˜ õÅëòaUiô»8—ä1¯NΠk/é;)ÛNׯJCd÷¯;¥ãßYótOø"ÉQ¯íMãÛƒéü áÒq·++Í·÷±ÆŸ%ˆ_Ý1Æ*KåuÉ-0ïÇvVˆ ʆÒ×—Ka;è¢÷ìW¦w±}íâÚšv‰eµ©Å J%)oh²ÛþjñÝBÔÍ‚@… @«/E(#EmQŽ(TÕ=‘°äkP@‰Ìz5ƒ~›TtOÊ—L¯þ’ŒÌØËíÁ5Ž Peò¼lßw>_y¦ùajîºQÿq³L6–ût;lÓõ¥DSîeÒ*ÇPEX•J®§ÚÃ`)&)ßé=gµ^o3D!ØU"wˆ™*æ"Pƒ GmÂd8½ˆ¿`aeH«¹[¨ê¿î®Å•ýÜÕ/Ö ~ƒûR›WU‹å× R6Èù&%PDÜÃÊÂøÜù5ÔCÇuœäkÙ …›VgUÚÞCd£Kf9‰Ù4"³V:qbœô&ìþ€üSè¯Ü~U}Mî¯êåQˆ«ê ÆÕêw$D ~SØtT«à6t_{×+cOÍN²^«ø«Ñ1[Ÿ‘@[ÄzŽû%ð8äI.ÒJ›VoH‡aéÁÆÑ3ô]aO¹Ö m È GˆUôß™RñCÞ›Œß"WHãõåô^Z=ºþöK~ü~/1m«qso¶o±Ž8YcT( ÙY°Ù>¨ÆLò²ht—¸ã®Ÿp­6p…¬Þo!L€åº;”[ ÌÇ:Üþø‘{©UŽÞ +57Yí{Ó'R²+Þ‡%Æ™s—:ÖØŠâ¡¦?:ÃÑ0L6˜[c+`qÞBÙ~R®× ·[—¸Û~!ØÈ VK}ÒK«Šoär´ú€oµS»ó^ꋯºù“°î)ÈBz)Çf21'°.cGÁS –t‹hˆ~ÿ> `4÷T‚´WRùÆß8¨]òrÎ᩾Ÿ–Ÿ›:–zŒL ë^\1Á&†sÓXUNwžøY:àɸš)ÏÃ|€¤q—c‰Ygp2è]ó½h¯«¨ºðK Z"Ùßr c@÷Y+Θ@HæÏºÁ(®ïLAÑ ·nÚû‚Å_Qõy‚+ÆÏ„$ó9:ý$Çu›ÁA7uNº£wüÍa¼ÆSÔWãO;I¢£Lý+ј2t¼I*tÅ´7oó.ЉgÚ…KTÚ”×93‹Ëzôó¯‰ äØ3Q51vfXà%zØ!ÂÅŠ¢ütÕÌÓÖ7ø*©¾-⤑À{Á{.·ŸmdŸm}bŸJÆQØ$ ëuâÙX»ëЧŽt²¶©@û@Ö5*»¢š $aýI–ìq{TðRÆÇXj ©× ‚“ªj– ͹¯Ì‡ù†FAc':YÇpÝ!O€w†Ù¹öhôû ]ëq˜Ô%\Â^×`}/ò^5ÙÉë©|:០¦ kE‘Ô\XY7XÏèhšÒûæê}†?!ÓaçÀêÆDvOs„FüÆúõ -7µ,ûô \ÊŒmnÕEk:wÐA Ù\[ý>¼Š,[‰¸Ã§wtçÉàEŒ®A@€â]¯ºzK3ðWž ‘Þû" >Ñ}uù®%)±¶U¾^àèQ±§=2M“Þ?kx*@ö*Tjšë G ÉG=¿p]úÝDùõ *?¶ßEÛóïá;v’:Êô.w’û«æ þÍ 5áHT˜æaÔ‘ä° ÑEwrçBúx :S˨¿¬@Ô‘ðÂsñF ›±—r)žŒKÁ| ­¾ #¥ç ª°¬‚9 ²Ù¡÷œ ^à9—`we»¶ñö¯«¯/8¤Q@Ó¼ë©3‡ÔÃôYŸnn+/hnW¦wow$%A©ìµ„¡IWé¢0Æ©I‰æNs‚ Ñøà¢ÅŒmÓµì "·-Ã4ë§²Â<òç ,²ÀäÕüv$dÆ-yëYµ QhÂT¿ä®3,¤Ea÷3zï™ú×|AÉœ @dÓõ#Ô/#¼ÔÂ-gí*‘äõbÞ6^Ö—Óÿ~DÙryö0mZ¾Å9PDáü9C7ŸŸ•Í)yå=*¼xTÖSqSE…φ@®7 êÜËÊØÄß‚ZŽÀi—þ6shOìuÛû¾€R>¤C<•…xϵ?›1Ƙъ@²`hÒtïNqØ€iwãÚ`&¾³æaÁkª(iEئÐíL…rf°¤¨| «K&%Ùp4á¬Ä]¥­…A¸7@ûÜø„J]¨;_ÙKNÃãœí ›g¹IºÇ_üršc_Í‹çý²gr»Poûü(Éýzôa)wg€šjpv¢ÃyJ†Ì)oý·[Væ±qY¯$yä˜ëMhs´Ô\º^_A ï÷wCvÊ£U_^uïGPIþË\?*ÀãKqb,Cp`<"à¸Oˆÿ÷AZB=‰¥å9lP}l,Œf´æ"ÕfUU¯­8“æÖ¢‡»Jfæñû[ŸÛæVqÉU¥á×´Of¸²jW BoE™ŒºµÐOTA÷î¹Ùî<ò.iñNwŸ˜â©ìÖ¨üŒèÈS–aªM§ô…†µ6ôÅãa¸+¡ò¶Å;HËé~¯ï˜°uÌD•ÅõÈï6|m«WyJûU-.-!³øù1ùï=¢ÊßðfóúQÂsq„ÔºTmîè¤DÐ:‡†š¢…Ͱ!öâ@vu‹¨ŸÐõ›b‹ë¦7ÁÍg4-]æW“”.Ž=mÊ¡=ñ¶²e»•GwÀжöʂΠûÃLë¡D Ufòm‡­uA)ú©Hµõíì¯Ïô¨hSÐÞâ“‚íˆÌ”nG¹`zZƒy]µö×ç ivk…û\åLa0ÞÕÙï±+"à¶.¬ïìËFD6îš:—G¾Õ_-îœú•0¼DßÃË ÕÖkW™Ø|Õeèeć§aá £«¤’Ýûv[ûJô£)ýâj"v¢¿Þõƒ*Ë ·¥fPr5â9T3›À¾«Á³`mòPZË]Û Œ‰ø'žw’Ö¨+Yv‡BW»Ebó¥[p±½ã°&89Zøj]‚ncèB³(}:UoÖL@;\^r@R“ùŠ ¯Ä“6Ûóã³ÈØšx>Ý‚ KË*§zÑJ€.=œRzí«ÅÀ‰Ñ.»Bú—²#Žè©JP>Žþ7é¹YØp”ðø“¯áºHô6ãIÒ».öúa<ß°$QÒo„Æâð¬j[,>•N£ò`]†w›áÌ´uüØõÛ~äׄ o0Í»˜~Ü8U)HŽëR(›[DçpK箌d8•‰Ýð‹©Ëø„$¼2zRܨÐN6¦AÙ”«!®—™^ú“µwœr„ÙÌ}$"‹‚lüÏCCš2Üûð§{Né`p&§^DN « Nq¶X0jû>0õ? ÝrŸYߎ®Â z¤¹¸BWÜÌý›šqìõ|{WéñM¿ž—!Ͻ¾â«ªÊé(|«0¡åÊy^Ž%¥XKEò–Õ—à€AoVXÖ„Ïo$³2#uõM·N“ýÞÅ”çsäÖOqª’bó»…G þhâMápcïFýï¡•K±hþ‹YVÕÞ!ȯç²_ y*{´ü²p£H(LŒ1ݤØî• ‘ù+Ÿ–IôèÄòSF@™Ô)lÍp¶¬·ŠÄ/”!í—|¸\Q9Tu’nÄû1²¬/ךBg’ê-Ðk §ò}!ý¢e5ÌRÆ%æ†Å­:ˆ9àN‚lÖéFºS:WcÌl«ONAyt%(¢¥œª¹_ƒÀ0¿U”VUE:­=WÏÔŸ¹w¾áéKHód”opU]•+#]å·ÛåÑ¢y»ó׊•L½p”t{ˆ¼1%Ó€bñ¥fq“ÄŸ5Máb&ƒT¶¤T4mêÍUõ.Ò<Ÿ5Ãè3î÷ Þ]©„¢&”Œ=Óˆc«®-Þü5»ÿ(OoNcJŒNfÊî,›:?ðŽt¶kA…‹ SM² ¹"Ójé+†îчQ#s€v|¦åª–À¦¾´˜­r3W`¨mm¥á»Æ'xî×ì}w5yæ¨`õ‰Iã`Í‚¬Ãµ×‘%SGÎäk’\Œj^6½ò± H¢X~e<ÿk¡žªEèaQSD6E`»ðIKàf«4nÆ}Wm¼¡*ã1XŽœº|½mð¯Ñ–Ü©8>Nì>rFÉ¥Œ££Q|_6èWœˆ‘ôW.Ÿoº¯âü[˜)[g)5À³Gv;FYM„TfÙ$½f`Vk©2^WBÉ~¸Ê_ô¯çîh,Fä—óßq®mÒs¨X¹Ùë’¡Ð^å›ô›[nü¯­S«Š+Ëô¨mºþÄ¡ª[ï uDçÑÝRè“6ÏY@+‚Ddì¶µ¢It-Ô`OË´^‡ÖÁHNTɨõ*ÈM)H œlUl™v¯/xÍ)„ËšLñ›Ø£TàÞ,¦«ç!“§íÿ)Q [[^ímCÍS‚ÿZ,¹ ÙòsyÒ7!½EEžØ"Âx :ùt…WŒXfÛ[yi»ZãiçØOßGÚý8ÙQ‚è’«ñêòg>‰R8ô¾ºóC¤b »aoË„Ù`B-ƶU¡¬ ê¹ýš¥óNÊ+PTX\ÊÐˇ Gq²×ìe ËAÅ'*ìS BzüÔ[¡e4Cÿod⠞νýÃoF¶ˆüKb§ÉnŸé6ƒ`qªÜÀÏ¡ëΈ䪲S8ÙnL` ª•“·§O²tŠæYTy˜3xO­^HFê`¹Ð¦+ëŸhÖ­:¦ÒRņ›–ãà¡®;Ö/JsÛè`¹Ä»¬DŸ°Ì‰OÒטê`­ƒØeAl‰;ÀTŽùBx„ÿÆMË ÄÏûU¯i,Ù~Uøi1 LenÌóH^ü7B²gƒái;Ô[äT ¥Á*'ú”Ác_8Ÿá0b½ž9G%ÖÐð>«åT{ƒà»^@Gbôk;e‡«¬·ú›#}µ|Ö·Ô͵WŠÈ!¥s4 Ðu³’óói þä`ýPC¶YPV§—+<µ×õs™ñ0ÅÖ‘áƒã„íFÚ:ì4{\ò„sW€¯nžñÏðrïØÀ‹Ú‚Lʵp¹çftñÂÔ¿ùJR­$»{8©ÄæL­ûn'Ç‚µ‰“~Õ 46ñJtº­Ý‹=º /A3%¿("…d•™ @^©B.ÀùÂßZ§g›²-J>ÅØ@!ÑSα‰#7~7c:ìôF„^Ê'tQŸEë{›ú»°Óãv6 c!Kvèp“MÅ­<7Αáwkš¹M¿>œ.<€øhŠ†Ô»9ó²á,¸¶]HâµðÂNêÄF™ú`{§©×Ô¨û‰¼6¤ªo©ÈyÄÙ6R¬Ñ^ø›@sÀ®ÿÎK*8òõ³n&”Q žõ™Ó}Óí‘Z ßyÍ·/„~t°ß<™$m]¼MÆ5¤µPÊ<¹ßÛå0H™ D¯&çoŠôPzp ­užx²€¤-'K¢ |^B Õ ’DH뉎9J3¹öZ…3S¿$Ö1LÁñv¹J¶’-¨×6¿ŸÃÇoŒjVZI$ìhÔš‹2‘' EV7`ÔJ¦ê7¨ à Yñq rÎnéñÍÑšb¬ø#ò¬ÓiÞVœ³_²(¯¡HtŸe%¾DfÑö†B%òaS|aiÅ<ä mïÚ„,â]¾O9·PÝ“;˜“žóz*ÅþUMmî¨Ã ÝWîU´=‘h¥8ø•r”£2õVé[Edž’˜ë¼GÈéºÏ¢­|šKÌÌ¥˜JaÔ¯@jÁ ¼ûeUý‚(O%ë´t¨ç£}¾‘Í~Qßœ«¹5ÜQègÙy¼(­Ä€¢J¸œQ#°ß³%‚?ÝÝF#Ú–øÔ£xÙ’bäÑÇß¾’&ò³Ç9B’ž IøÜ2Ȧ]õ-’PÊ ÀX§œå{¾ã¥ c&;ÜÏR~eÏó–Êá¹×£$Æwl®íÞl4l+Ë‹tüBsϳ+:”bx0¹kÆnüº=&ãðŽC kpÀ»ÍÅ>b-™ãjÞTÓ’ aH-=пæÒýÊnðÛ)þ¥›,y†àqÛªM#w´Uí]ŸáB_×nš÷µNdB—>î¶ä'ݛԷғàí™ekQ60­WpiR¤ðò¨À¶28^Ý'p9`qä†ù8JX'œqüÔ MÐ\¶§ò6<°&Þ®-0Eòø¾pñû7½t$¶×>i€AVÇKÖÏÞKcõD 0½á¥”l®è%¯ÞÕ=hQìÊ6q®ü†×´ö†ÀIj¹É–H¦ßIYp±ÅÕi𼕬™dÕÂçþ‚Ák?d¢úÁn\18ר„'عÂ3 ];ªê4¦:àiž¾æá+Ó¹XË¦ÜøUQrî"ƒ9ot—ÉŒ÷ "1(ñžº!‚ë÷=áÀcM¢ 8jåqà[õ;}Þ,Hâû(æW¾¦a Ùs™H¾µ¡«ËþŠk>Äx¸¤žN>àêÉ=µŸÅ E;Å…„úKXl…”¤éIlºÂ´£¸×1ü™*OâU8â%‘ʨË¡v_ê[*¶ò›ËÙÉw|¦Ì/®‚‹hhcÊø&ÊÆ2Òô“Ç»‡žS_»º¹A[ƒ›”mRfÄ ŸŒYm‰ ™Gv\K„Ž!@œ„¯Îwø}tGÌõùæc‰Û6v;ø6è¯é©žžÝÇë¨AVÌÒ$ÊuôeM)ÁŠ—†ÒœœS\i4éìOæà¿¹³Ž:¥q()ÑfÍ©™w 2 1–D:Æ@Ý|;Ž´ÔHDïv'üƒ+ÊUUv Œòfë»s'ÛM…íB.õ@Ñ÷cyÔÝn1¿,af vjËïa­ VxÓÝÃoЃžÑŸ4ó“|¶íâyK¶tÝànmd¦ìÛD=)žÀ \¾8úÞNÆÑ-bGfŠL<)Îh)fBúd´7dû"ɸ@8ú„è«îÊ¡¬Ãøæñ(BW¡&oó§&&¿œÀ„7ŠÁÿ2OCîì¿™¡/zkÅhF5-šˆÀd¦ \#¿õäî¨WúÆçý檑³!CWˆ  ¥"|ˆºžÈ•BŠ +Ê26Á™©Æú+j }–BŠçίK·žÑòÏÚ`wu\žáM’Ru­µMõoÙ·h@[Ð{¤%7-Ê¡h+úÜ \&´‰ÿŸˆwûÕí{§ãQ|±ñ¡µ9Š,5](}§á Pâç%Mû«“Ï~}V¼ì³ff¥þ IÆü¢©×¢²å; ŠÚ™õ¥v>¼é!]ª«zþ8m)ЗRåN½êSЧòJ' ¨ÔÙ‘²_ÂIâñGo±ÉÉ[•KÅÓÃ䦎‹w+d²¼eæŸ YÞäAPmßPŽ‚E<öÏëU4?ͲíâëêX6—ÒòW¨É·’]@ò÷ 6r¾;7êûsl¬Av? -.×ñן¢žƒô²¯˜ U .f±ã0 º­aѪö.ãÃ- ϶î9·×(B—2„?¤VÁM‘(óð3†ÔÀön'nׂó×XÜÏ0£¿ê~`½Æi½Øë uæ‘ìZ"äZ"æ¯B‹z&Û‰iâ$à+Õ•¬@NÙìÙù2L½ÿ­°ÐTˆ©0 «ñS$¸” ì/óAY=£÷Be'Ò¨ô¤älmM®\ÝÍ|,â'x˜ªˆ•'»¿)¹iNx*Ìd´”âX%6’©×ïBZQTý»÷4TŠÓVS×Këâ±(§'%UpuS„Ð\C «¢¸Köx„PÀ*Ž‚ÁßöÒt¹ê„RñNÎEPZgèÅD÷¹ûlê QЦ4 “í°ˆzHQ`’3ýೌu^ž !@¨Ç+S5Ý|Ff™Ôਫ਼ìpjÎhh¾Ò”¨u¤}v6¬eà­uÔu5{LÀ3utŠ;A¡*¡®åèÐУ/1_9  ÎhØ#ýæuJwÒ#Ý"¸7¡Ž­_#<Ïd}¹Õ~:ײ‹=@~ïp  jïèˆr2‚þ9UÏmpJ?Z‹ßϯ~Q±·žµß” F‚Xu@ø3B-€4!ÉÊÁ;•|#’5áî®¸æ¬æÙ endstream endobj 802 0 obj << /Length1 1383 /Length2 6023 /Length3 0 /Length 6967 /Filter /FlateDecode >> stream xÚW4Üí³„X!Hô¶zg-z´è½—Xv±Ê.»«dõÞEHˆÞQ¢&¢$D-Z”ˆDw7åû¾ûýï=çÞ³çìþÞ™gfÞgfžß9ËÁ¢g( AØAUp´€° èPIû®™$DF0´+ôÀaE¢`øÿPBBÁh¬MŒÆâ´p †§+PX(,~GXâ¤þ"w€Ê`/¨-Ô@À¡(‡ÂÝ stBcËüõä¶ç KIIðÿ *ºA‘0{0¨ F;AݰíÁ®@C„= ŠöýW n'4ÚýŽ··· Ø %ˆ@:Êñð½ah' EzA!ÀŸ„:`7èof‚ ‘ õÛnˆp@{ƒ‘P Öà ³‡ÂQØO8Šb‹ Õµ€ºîPøo°Öo?ðOo€Â‚§ûý3 þ+lopsÃ}apG Ì ÔUÕDû ù`8ä'ìŠB`ãÁ^`˜+Ø øus0PUQÆüCe„¹£Q‚(˜ëOŠB?Ó`»¬‡(!ÜÜ p4 ðó~Ê0$ÔÛv_¡ß“u#¼áþ08Äá' ˆ§»1æá UWþÁšÿØ¡h ’B=€P{'¡Ÿé|Ý¡¿œÂ?ÍXþîw –4æÅþüQ`/(ô„úÿwÇ¿Oaa fÚAapÀ?Ù±f¨Ãï3vøH˜Ð„Ý=a èççï'kìzApWßà¿æ+¤­end¤Ê÷›ñß¾»w>@1) €ˆ(,"*”À>þ;Íß ø‹ü/«öçr 2ªÃ@©ß°Íû‹‡×Ÿµàþ#à¿+è °» rÿ³úV 1=öKøÿ-€_!ÿÛÞÿÌò­þ^HÕÓÕõ—›û—ÿ¸Án0Wß?ì*{¢±²ÐF`ÅÿO¨)ô·”ï"\!ÿéSGƒ±âP„;ºþÝDJæ…èÁÐöN¿7è¯`“»ÂàP= öóUþÇ•›½ öu‚ÂNê— ŠUÓ¿KªÀퟲ‚‘H°/;xìI è/ŒÕ'êók±B‚pÄ’ : €Ÿó )þ4þ•ÖމĪíר±5ÿ:ÿ’6êµLO ì¥CkC[ž+Ò{ ¬Ê~àX5}Ä#à?ló¾ŸXÕ_«×$>+ˆ3޵ )ãxf÷dœ†•-Àx—â›Ï±ƒÃ9C—ÌI|€À/q¢…þ‹"ñÇã~sF"¨W´ì´4ŒxïG8ýï®§kPOú—E½x66^|Ïw§eeoµw¸ÒL+Gï–[2ÈH:‰L# ØõÿàŸr7}f}QNÏÜMÍdžiMl/ý 5„W¨8%{ !Èþb]{±'ãµî›o\,«ƒv¥7èØgÝ&¬Xo«²mjÓMxv7YOçÞ^™"%¸s% 'áÅûØ–4ÞÄ(¡p¢ýT›‹o–Zl´½ÝãkhL—ÒC36-6â+G "YÐs£ÖÅ ƒ¯ô¼D(ŸIÙƒC+±oÊÑÇ·B÷wXXsåûDšRòÃ,QGÃÉ—‡ÃòÚ)‚T]÷ð’ŒèuÂ(ïd‹31>û( ê¥Ó=ÃzßL O Œ6ª½rˆºPôŠcç¶_tôQGÆ0‹¹!þNç~•ºšOå€Ô‹1q–ñ8DÃF8õGmý þuöž;“Y/3N4o©Ï™°·dWÐE«dJ(Ûv.ßæ9W9IåË1|¬¹÷°¤oo.?ÒÖQ7‘›Äð²PÏ®P”üíü|_/œ”Æù¼yÛÙ:kèøåîå ðzbLŒCHùýÕŒ«a†˜›~GµCìé‹)¦DYC<‹_wù¢ð^r]Zq׫÷u+:>\n»%UÓ:2¬üƒÚJ•¹0•¡Î £Iù#Ð.H^PbiCC“‚8]oY[)ñ4¡-HÝY¦ià&ÝùÚÖé*q•]P­Bg²d÷—“ƺõ8²°°«¸§gWŒª/ ò\”«iw(ßSóÚrßf+ʼ2²ly5’6ýs?AàÛ‚ô×&O:E-g˜%^VcîÄu‹ûzõ—••O8G2gx›÷9e`Mu‚sã3u£“Ç"„Ò‘¥„¯ø—¼Ï¥¢û \E^YàE¤WÜçû\®ôt´ÁŽÛ–‘ô/•|÷kÑ2w9Y$³'ÞË{ÇJ†Òx»ˆ7cð½†H 4á3Ø‚—„·.ÆÖF;b;]Èݽn±5ò”Njßr»?¤î>Z|eO¬KA¦ò[sða¹û;Ðõlòn‹R ¯̽ééJ€äñ˜VÑÏn¶Þ~M|8F»c]"Qö#WÛ˜úô\#€}”:¯xÜ“VDhÜG›©}¾ñyÎÜͲˆ[ö™=ô—•à«}ÖHÅe~ÚáÍú’Y°WeùXøµë-W»ß 4´*¬ãÁ‰š ©#’PŠ[“qQñ9YB¥t¯»hç“-¼$=jï]Î2îbhX¯­ÐBE‹Q»·ëVMÒ¹³F8¬U¶ŽKÏÒûH¡Z5GL‘j×i9™‰qª‰rr3ùx{Áæ‘zkcï6£ñmÌ?u²½~£ô@æÇ¹+2ñ¬•!‰]®«ŸhLbXÑ£²óh_$”€v,ÀæuƵ_úØ»Nµ7#ï¾HFm…öOTÏÎ#Yð@4Óo,·¾úÜ~«¦z—‡±š³C·¡i6 BŽÐ€¥m.Ißztsl8Äkš6©Ôîº//Gê-G¦?¸êã”Ï’{¾ÇÛ¯ñãŒÒðP»˜û×m"ÌVu7Qj‡­E„,MŽUŽ«.@·ÞþÂ[6Žþ-ñ]Š÷ñæ•ºŠªqZQšê£×Ÿä•BüF¢• ¦¯N»æ¤2'_}¿œ°9¹Üw,fÓ­= ­ŸÉOq¸{C´±ç¦|‰'D¦(Ï­;Ù–•3Ú(õè±òNÅÈbÐûx˜e;þ§®è­œ#õkp膊ñ4¯[|-Ç[WѾP‰®Ó ©S^s ÁÇ̳X„s7g„o9Ë"–Ïn&·Œ‡Åz0Aä3—½Î‡GêÖ›¶$»|Úy.pN«ž?£ÂoëƒpK¾™{ÖÏÿÁ¾B«q¬ËÀhu”ù.…Q5¡s!‡°õÈè‰â×1?)™È;Ÿ©°TèÏk´]‚[¹ëÇ~6ÀSbÅ{üM±(ì­å "½«Yo^΄ä¾,z;FÝ3° záyoZÉí{…H^®1)õyÛþ¡)…[õyÿ8Éü'¯ñäB@ü-/Pd±Aõ\Wâ‡¸ÕøÝUCŒXceÕ看·Ã{¹¯’'”'mê¦Ý?¹£e[3pÀ¡®V ]Á—»<~0è2E³Þ'ær_~¨ÑjÃ0Ib¤naº<ÈEå,kÙn?+ànîs\F»Ï$`RÚÕZ\ʦç—äÊÙÈbpLι5r¶$s gtßbf™çITyϤ—»\Aï£üµ]ÁYƒÇe:prQI•Ëx½Ø¨šlÝÕhˆ¤ÇU1ÞHïA{Ù§úÚÁÖæ%ŵՋI;‡‰£IáîDÚÈÌ~Í ÖiÌWj@€Ù«ÝÇ/c%‹é?^wޏù9M6n7qi\xÊ”o9ù}â&~„¥d>§ïðvÆíWº·å³Ó_Ç´¸Ýê+° Rƒ ½¢ˆqºªÒÄÈhæÀB>ó2*IFõŸÞङ^}Ãö`â-B9âýÒÒËÏéÞ€ïLM”ó®©ŠN ·× ÞåN¹K2oÙyÃŽ­ÞI¹~ç/êiûBÞû$*àöÒ0€˜äTƒïé£Ô3ոב‰Mq*á¡™/é?$j‘ÚÑÅñ”“« 9±·±øÄÍ}2øz¾'ê0ÃÏlâªÆI¿q_p§²2ƒp8 Ÿ…3¹zŽàËvÎ<˜á˜µö:Í¹Ž§fÉkÉ}–S™­UHöð0{›‚ædJÌñH„Ÿ1]õ^Xj)CÚ·kwkƒ¼6®#݇ÍèÑ+àØ ¡HE«q“ò]j• L´OFL’`‰bpªÜ„ÃHÚ!R'ŸG7gô&€úÞ¸oƒ¨³/íÕõé=J‰€üÀ‚ªJx@ÃÌV÷ãg­•˜#ßGöm³ú‹…ž×c;^4ÅÑL{hpîpØNç^lãäÿaˆß>]¤ lÜÒ¾ZNf…Ûóî‰&© ¥ä L·ûžµ%¬ØC_sÅÆâž©¿JS(bï.ZJO¥{#Ë´ð)BMâ„}â>‚tÃ=Ç¢ˆŒºÀ¢tɯÅBøfB¶D¢Y&ÖÖ<_%ÒMžÈ.ÃMc­:vê%µ kc>Ƙq¾ŸmAR<É=™=2)•°æëy!B#–ùýÌFŠNufx¾|jLÏÀ_ü ²Lijâf»Q}ƒÜ%½Œhj&CLœ7Ø:wŒ™^Ð/í t#ò›ôzÕWλǶ_ þÈð!@(mP ÷=ݨ™*÷Î0³ÂòÐÞ ˜µG@…[oaá{åxlq'×÷ž8ÍàvŠstRHÃbu¹·û8Ák¶R Ha–=¡øîÀÝ“¸Ðõ‚ãkלy~<K!íᦔ’R§ç||íö}©Ê²º½Å9•¢¤.p ˜"%€Á±¸È7|»´{m«Ráp¥&²&Å?癋®ðëoé©¶êWSSV>¬éÕžÝp£0‘-FU,G pw¡&ö|xC˜Ü¤¹{ï|$oa¡¢òÈ«FL‰ Ô™’‚tõð¹Ð_ü®„ êÄ[æ+~¡AîÉî¨Y«‘ÖÒ%~>Ö§k¡¼+ò˜¿dc01á€Âïsv8ŽkYíÃmÕïvQÚ• g§=N.Vö¡,™Víž—‡¶J:m³KaÖ× tã:pt´Sð‰s"ì¬\œn ½qýu5;=&ßYî.ícÅk }8JÎÍNŸ0öàrODº܉ìβ½1)“ák‰b¿ k` ñC¼›ã½=Zc´’ÿ¦ÅجiÆ£Ç7ÙñØ|74ØÕgaÍ5ÿ\:õaSxqH¢,Ø'ÀˆX/¼ÉÐÐ(éÓ0ÆÊÍ¢W»P:câ*ÂGÊ2Óó,`׊ _ü$W_^ËZ&:0óí„ùÛ&ëø9šù`Â8ÏÅòª’ZP#­nÍ’>åFÇ]&ã^‹VZz¥!çb’Û ®–ÖJuÜÓ“©Aîð6ŸµJæÓÂÁ˜®sFùÉ’‰ÍI¼šk&®µœ®Àï›Æžt—"–²©ë3Œ  ÍîÊ”}Z±kÁký²%.}‹L,^®•¡ ±š0Òðݻ؂tƒ…•:чe&]&¯ÍOPJ"¬ ¢nœÊÄ]êÆHdb¡v.å‘8^@giÄìØœqz:èd+L©o5%P­—ùœ§ûµ5GF:ݦOîýï7ÜB(“ßÁK05$³sºIÒ–u$O÷¶KǾføÀ'¨ëŒª.ØSBÞØ¦ë–M,¦öXáíubnXbdW¾E¬>«s`šÙ¹åßwŽb¡Ô†ü>U(×ù0r0,æ­[|ž÷äó­• à»–ÚÝdOOx‹‰?b‡É±[_AýšÎB_ÚÁˆžÛA^ŸÖ4„êú-Õ/}=Uô—O!Ãô£¤ì7à3…ånÆ"å^v˜CYEtó©Â‰íÜå9½´´ÁJO™‰{ŽñŽ/;3b–ô³§™šŸA¢…é7dÍ™Óã–~0ÕùžeìÊðÌÒªåÀ3R¾âv=s0jþ!^YG F´˜Ÿ‡K4³“a­å•uøQw‚çMgΨDÆT–hÐõœUK3J‹7æ/#§às:z7òßž©Ñ¹¼'æ^˜?ùvSetŒ[i“ÒéZ}WúÞn¨k– ÒIBhäYZ¦¾õ:|¹ó•Ã~‚ìBÍÆÝHR¹féP°à^!£—˜OiÂDs{\\¹•Ï…t?\…) ¾>½s˜%tíG!žMú£Ï&–>äQýŒbßúÑÊVÛCwÔS¹tâ-Ê•'«4øaÑër´ì¯)<Ý`Hðø1ÚR•è¥t¼½ÄH´‚A'àdr‹N=}j53Ïf’Öàú㈜~¯¾”®0%Ä8ÃYü”7ÃJŸÀÞ ‘,Ù"±ù>©hc2邹ÎËw;·NèÙˆ­¿°N\ºc•õµ­gßI$üBò¾4iÛÊ6™8/>¦ãd.~û t BÙa!hû:õÂh5Òéûúå…ã=9‰Ý!r–¬”Ç:jñ§¶„{LûuúõÌo‚/*?ÔIz;;Û*ñÈu8Ï’KLëî3UwQó­ï‚xŸ÷–0Eùƒ f¿‹2ëû2ÅÌC¨ÇŸ&¤Í›F{büëÖ;BÇ8««¶ŽÝ’³àq%j&?¾1ºt ¦Ÿé58?Å“³1UúHM¶žÖ ¡”¸Ïm S·…¹sÛ¾ŠcuXâ¨ñ‹ÅúÆ»g˜®U¿0O’‹Þ%:6ˆ3Åí5³Ûgèó„QFôÒÕÈr] ^¿Ú{Eh˜&%9ÉÕ’ø\[˜VQßçVU¬¡Œgi |2ÿÎÀLœ’’×ôA>צxeîÇ|ÿÊp­ÿ«Ä©ª4=ÛÆó öïÎn”ý_ª {‡Ï©kãkŸª»ÙÌžsK¶ÉÉ|fh¾ÖîŽèj±¾ãxjî´Ä¤Ä]àói˜lipŒå.TáDe’+Úæf–«÷=`Û‰ÝF”^ßGÚ0J÷F§_K=[vÇøFÜ\ùnùý’aÚ6#6‚ÚªAb!¶Ÿ}³MV†%È‹•Y!£³’õ‰,5³ >þ ²NIÛB›íöR'ë+²óÔq#òº"x oï¬|z%ÎÃ꣪&®yVyúdŸ[b´Ð}]ØzЈÒ3í2ÈŒ1œ&)áT«»ZÞ?Ñõtz~Œ~Í2¿ßçÅ”éðã¡Ó$pEö|ùi=²›õœÅ’‰¸Œ@F±$Ý õ[é%ÆÑ—2ˆ¹”R£Þ ųgC o±¬úáy0Ù¨9 ÓäçõöŠ} ¶¤á¨âÕJ©œÔGë0hyñ6N†`bRâ(ÄÏi¾îVWg?)ª¤ÁïŽ*þˆ"ZÔV¤ï|£6{3ô‘Qd¿V¢qpùŠâ0"çdº×-®¼°2UóG 4"›°”楌˜nÿH›7Ø•cŸ´¯Sï¨â¬EXèï|?Ë’¿<\#Ì}~o¯èj1†™ážbÀ•³ä ÃÛE9M\+Š+Ç…Çi56{¢Â#Vó—á¬vÙNÆ#»ý³ì%8Y)„=¼Ï÷F¥M¶›&ÓÇ#ÛH×pÁvÆš½Ê 8˜NÅ»½o¾Lp¶Ÿ‰¹|™+þ…}éJÊד:Ì˸œ\²9&¾¡N³FGªý†IÇ[rœ?ʺÿ m›s© endstream endobj 804 0 obj << /Length1 1532 /Length2 7710 /Length3 0 /Length 8715 /Filter /FlateDecode >> stream xÚwuTÔß-%¥t ÂÐÍ ÒŒJ#!- 08ÌÀ04ˆ4Ò’" ’ÒÝ­Ò)--H ’ýöï½?Þšµf>çœ}ϹûÞ½?k ;³¶.¿‚5Ò F"Ðü‚ )€’†¢¡Þ#A„ÙÙõ`h8ôŸ !»å C"¤þ…QBA!蛜2}Õ@"ª.p€ 0@PLJP\ @’‘()€2Äf Ш"PgBv%¤£ fk‡¾™ô×#€ËŠ ())Î÷{9@ÁŠ‚YA Úêp3Ñ è"­`P´ÇZpÉØ¡ÑŽR@ ›››ÄÁY‰²•忏ÁÐv€ÇPg(Êj øE  q€þMN€ gsþ£¤‹´A»APPÀM³‚"œo¹ ¬¡(ÀÍ|€î#u€–#ñXýàÏã þÝîÏÕ¿Á¿C¬¬Ž„ a °Á¡-°ºÚÍ€ ¬!pgäÍzˆ+‡XÞ~o+è 7ÿdèl…‚9¢œað_,¿ÚÜ´ ÂZ éàE  íO†‚ZÝœ¼ðï+~†@º!¼þ‰m`k›_T¬]ú˜“ ô‘òŸ¨›á?9[( ÄÅP'ÔÝÊøkˆž‡#ôwñwú†‡—#Ò`sCê³Þüz9C\¡4ÊêãõïÂ#BAA€5Ì °„Ú„ÿt¿ICmþˆoT€‚¹L@7"€~}þ~2»Ñ™5÷øþû¢OT”©¨ðþMúï²¢"ÒàÅ/$ à…ÄEâ¢"Ÿÿvúû þâÿ;« ý¹¿u|„°A$ÿ qs~QqýS\Ú‡ðß šÈ]C\ÿØÀ$ ²ºùüÿ6Ãï%ÿ/üêòÿaƒÿÝØÿàú ò! 0¸ÇŸ˜e» o\¢¼ñ â¡O ˜[ ·þßÚ#4äÆ+ Û½ó Š€DþÈÜÁ0w¨µ6 me÷‡žþºŽ› pªt†ýzݬþ§vcA«g7oç›Kû]‚Þ8ì¿sUVHë_V@P(ˆán"Q€—àg­¡î¿e è›%€†>$Šð×ÕJŠ€_©ß‘àÐ…" Ý¿B þ¯Ptø'¼Ñ$ñ¯PtþW(¢ÿ …nyüÿCÇÊ…ºqþoåÝpý+þýšBÝ¡V„ÓH+é@ûŠÀÆÓ2z7þÕOB"DÝ/ðŸ|U¡s]×ñW’ùy(œ>¥Ð:¶þs‘|[(ÿºæ™!5è™ù‚÷›p)êéÊÆ[6–+|ÞCä÷϶Õ]„ÖÔZZŒ-„Ö¶Ôßk÷ºÉrÓð9í¯Ž§n>á¨-9)¶ûŽÇYýMàÖ§ÈpOƒÑ’Z–‚šëÒ¨GÕHr0íòÌcêä; NfADå ÎU%•C›g±¸ìC¾Z#,Ñ_Ò' ůü,;®Äô3¹…(“Äšqî;m-òGLèö]ö—¯¨D·{nœ|,\ž~–Óå[xÈK[ÀPj×dèé¶¼=0w,¼ûìÂëm“…=[*;ˆ'¡x(ÃQ[à+{5ƒÙZ=Yô,o%/ŽI>~M‹âwcªü(¿÷sUQ·tbÃ{qê6=!QƒêÇ1‹{)¥ägú~Ñ'ٽϚâìW qý¾…SLD佘РÛ"‚-¬Q ³²Ty»Höb6¬CÄFœókgï,çñëêJ…9DZÝÉ´Þ´4Ã4m/g»*À^üN£þBtHïlòCLi°vÞkž¡¤jKˆ(f”]óDd'åÍÙŒÇ3bgGøšéQzß’ÂÄ@6.üTÚ·ÜN}R<—>ÕÓSf R]ä#áë%Ÿ~AÛ¹d7ºòí°Â3Òš|3\_´#Ù%í#]ÕwùI‚ÔûÒ‘ÛX±þdÆ@Ÿ÷HþTþÞKl Ú‡¯d© y³£ºmÊnØ­Ü!¬)žŠÃâÄ¥<; õ ‘êaÝ#kiµ7q‡sÉPéz¢¡z;möµA.Tíé\·Ûn Àè¬xjÕR´­^Ù9ú>7[Þ:=³ü„ÈÖÉz[:ŽF<±TâyÚg€˜YKs¼—j~WÈ |x¾’MÆrÉ`)QQë±ü"e:’RµÀO`G•¿`LüV×3¨'Y˜~GŠQ^Ê‹³WŸô1ýrŠñ æKîHýVÅ×*ð¹ä,Iq0YGGÌ´æ­üý]¤Èwý‹ évírÛ ›Ét[å&ŽTt{ïÚzº¥ów¢÷k[>èÕ乸ON\’ø·X°)<¾ŽÆywîæ¤…˜Lc7´È®êì2yDŧYÕWñ ׃De1T]×ø§¯­……ëP“œ÷‚*(¸¤*s(’%SI®Jh1}ÁwŒJÛÄ«Ÿâ·X㠤ᥠOûªç\Š™ v^eàœKÔúÊáÌÁ8ÃØ‘\â=q-Éj›5ÖGư£P3²¾$c ¥YYr6ƒ©Fpb ŸJMÔÈ0{%Ò"ØæÌ±›sâ}JÒYP°×ùÂrAkÃîg6ù²Ë]<y3èX(‹¢Þ«¯:}žï¤ÞÚ` £+‹%´# -åÇžè4<¤ÏfSäbÑÂa—~™ó d9ðÚô°HäÛ(Ê…Ø«tÇžú@7p†½Ëèc:š‚ŽS/€^ý’ ƒGóÌx‘?ü X&ú«å£Î‡í8©ëîÁÌw€:!•&6cõ/¯Ÿ3p–ñæ*âtô)ùвªÃ™XU‘ ·ìÞ.ù¸/ÿ ŠUSÛ¢zâNNæO#"ôU©]t‚²³9–?xVkpFe€“§ðƒ@ÿª-Ö®MGp.áó¡†/GÍ¥=¹¡õšÖòÌX· ™‡¡|‰|£Å ÿ ŹcŒõü·üN“:¥°·ï‹hÒ¨æc§H{å#õnÑô¶m¾‹Š—J1”Û3üö¹3­™!¥øIn2µ'lËãJ‹m梖fÖzñÙeS3òôM÷«—¯´D#© µt 4N¶•×(›Ç‘'Ù bc[ƒÑ!Lî…\4M°k~zÄ¢¨°Ùþ#~Ÿ"ïouKùܼϣž;µv„ü è4ÐÚ¦„}Z“OŽJðmuQΡÃþÞ3ò°<Ë^޼féðeA?*ܳò!ÉÎ]ŠËÌ®¨™ÁNcLŸ{O"NöQÁqdÚA´®TÎ`ƒ>%Tm9ójåEæÑ;´\—RKyR¾Ö)á¼5ÅÙ]NßÖb¼ø†¼-eÛä[ƒGM½,‹”XÜ5·¬'ì:Ä"Ã1NwÏ&¾17öhL1dqžÞl­¥×BåktÄFX}ù_A|™$Çõš£IÔµµ¸Q#eÐ~šÜ2Ô˜ý½dz„ÏŠò­]8çŠjÍ-¤øøÂ¡fÊÈ<“Ðð匤pL[ƒiÌJ8Îü]†ð(@ îX©C¨nªÂŒ«wȲ’˜è»L>aã‘÷~›”•Ul©Ë¾b»¹µµ7Q2Wá;Cå¸'™-¬HÚø<ìóUíÈ/ÞæÞ³Ö¼û ?<~\ì‘/a‚6ÌÕu¡Q«¬RŸ`æt·¶RÐRmµdÄt êäãïþ­¨xúêÙ¼¢Ÿ×$ä«á6EXùDÉ>¿LXtš¯·„È»PcA!á‚®õIãà6gÒŽ5åÁ1à§ï|ž‰ƒ¿pn‡¤ iWö^‹afT+ uybðAÕâÂRæb%t®öZF¼šwH^ö –Ž?höcûÜ­†ë4Ó–ZÀÚ³sÇ 6?¯Æ+‘^²ÀF0ÃdôCHs?ß-WuÖ'¨¿küq­zER¦Í—–ØÝÜp¯uìÓŽ~¸9^}t’íÝFgûçDöKÂÓû&?„òeuà(Aû>U¹±¯’ˆTáÙÞµûÙû!Æ‘s\Åôr‰ÁhVÌ:`zjRyÆ®‰y–Qµ ÏŒ[98yÄá:œl´ª¬è$ñÈùãÖZáV‡¢¹e?©‰òØ*Û\B¼m×ôrn*J/ìôR<-&Œö]'2ÅOÚ–"\B¶˜à¦ŠBÒisvÓ 0ã!¤féîøA!Õv6 /5-±w§ƒ+‰ä‹\6ãîc–úÏnÀ Õ’:$Krû׬>­ŠR 'ªëÖ³s“þg?‡N]pVF|ÊGfô{”ð ód\ŽqÚàü©óÙQ™ÚòIofýÃ÷NƘT˜¹j𝥠4®Ëìïéû=c˜¦S-¶(¼Ã¸³— WLŒ«í8s4`Î=âîSã\™/ÊÅâK½ïÄ՜׾sK ÛF6jìeÿ±[ánvÇç9«¬ÏÞý^›‡º›¶­• ]\ÚZ·ÍìõFðf“¼§¦_-¼yÔÂ|@®yÄd¼pIBô›–VÄ^L6U›ð‰tÁCô¶Ÿ%<Ú³-Â`¦-meY‰~_Ž[Š&#YÜ¢ E¦‰¢ûÝcãfÞcë¢ËºàL%dbÙ©x‚$ã¯q7¦ËMÃ8A'§1¡@ŽWìf«‘7RJeî²Ìo[z>YïJ©épÝR]†£Î(F¥rÃ?ö xmè(aç8ö³™èÙÍUeû%xrr3<žmᚉÁ0XuÍ7²¡ÿ4n&`+#'¶”PÿŽGSq0ø±>Ë•åÚgü:¾¸²¶[¤óѱún«—-ÌÑá=;Ö]ú£-M{m‡Ž-*Ä)b ¯óð ã^k3ß· ½-eü.éöÅ]£™A:¥GGƒ³K±MܶÑK`š>€ó#ÊæóO§(Yö Õ.ʾ&âž©yû³ÌѱN)éÆËe÷Ž*=CûçsU<»^>†¯>h*ÿV÷TcÀü5ßAvaàãó±8›ûütR߆(ÈQK •E£îO‘h~µÊá¾ú9li€{r ¢Ý¶`®¬¨AF²ffâê GÜj倹µ*–ï©6Z/‚ˆ©xÛ²cÒi"šÛßjuž+&n+ ›ÔÂ`à¤Y·3ÉeæVA­ø*ÏsÈi(b£"¡+ ‡îå;æDuS“¶xÓ˜ms̉»e`3Y+lm U‰ÙÅËà’:7Na~¬qã»75‰™·ö^|U)C /()•¡¶ñ§hVçà,Aëñ¸í/ Ì·cŒ´¦=Q ù Fiäz³µÅFêkš¯6ñ>™: ÷°ªÅ£…^¼rŰ®Ððs>yðææ ŒùÖ›5NbÊú…ÕØÕ¹}o,^Ÿ¯?L¨ âB¿n.~4Ò’®‰{+'T«‘hãs°mråÒ¼'u5g‰"ÏmL2ÎÄï QôvÅé…‹¸‹äxSØÂPØi!vèÌ”¨åãX‰=•à¦å}NG]{EÏg6b4ù—ÄçÖŲµØ×ÚÞµÛ«Ó‚ /†FX;³_)yÙ Üõ§áª¥Ò.(Ïa×¹û¹ÓJ2$…õ ‰Ïº+íŠw+y÷HýúË×a2~³©Ãxw’¬W÷À­Ç½ ò"«ª±tú{£j «‰Ÿ©û?Í£€¶yTÎ?»…¤Â2¤´Ç†’™¬}Ex:ñ†ÔsûéÅÂBŠÒ¼±¥/¨úu…]î¶ôf™¬ï/×9MQ–>Ûá$`ê~wÊ ¯:æ%b[›£¯¾¤J !q÷×&þ!~D¼‘à㆟rÕî?{óàݽÅ™˜ø=n}~Á?<9N±ùÄ‹¤N€—ÿzg£àºŠØÀ@šB©ÛÏ‘ y‰'XØëæ$<3‰ê1:\Rà«¢)‚Ñ'˜Lü…ð´çA–ƒª+ Šó‚Ô€•àÔþ箨¹V]“R„Y’Ëgði Øëa²-½V.­ÈH¢Ùx;.S§J|ÿ[~ŸF1÷cJoÊaŒg'¼Ÿêº ·U\:É„¶ÅÉBºYß?ž™ä~øÙú'8Q ³‘CC/_’(è8Z§â^–"á(-çnÓ팫áç¡Æ ÞœõÞu ;,^aë©3]îd\h ™ª{*ª)nn䇯a£Ú›mHóOAcB96›‹IÎêJuú­ÅÓÐ+že;Öãµb1½9çŸM31z@. 4 ­@“~žcÝ­úÒ³Ð6½‹³Öz™Ÿ¾•íª. ÙßÏ)[él(°ù³7'dZ˜¼ÕÉ¿´ùÛî,¾ðœLƒ>+™æH;ž«àç ’t•²š#YMøêN[±Ýyá²ð†Á£Djmji{y\G!*€ÿóF|ý*ñrBzGunM2–VÂ>é¾RJC{d‹ד0¾d#/Uºƨ½hCxxñ·”·°Gó+õ80E‹7~$rƒ¦æÿƒ\¬ÓwÀ)B–‡"ˆK;ûÛ7üÒLÝnºêƵEiõÖøssN“¤c)†ÎÒù&c¯§±¢?]ÀÙ>½ó(Dùµ8¯}ލ¬™pw9\.F TΉ]h¯÷Âít‰—ø-¦ºQk•GÕ.Ç8|F®÷64¼7¸ãÐ[_ØSwƒ³Õ$ÿ4$RÎCa/¸Œ…½µêTÌÑzßXMßVõêz¨Ð,Iž¸ÜÚ²YúÅTΟ”»Mø%¸GѰBšüâ =áéãÒíº²ºrS•N>#žQZGYÜMUÊÒÛýÏ3=Yõó°kú°Í—j+‰ï_cGÕŸŸŽ;‰^«™tÛ‹.•ÈÇè!Æ‹ ¶°Éjãê«>>Mö™'ip¨÷"´Ugë }}©«?1V–¥×¨9È‘Wþp5¾Æ¹¤QŠ ¶`7ïLµ>xBÁ\}ÛcÍßó}ì圿'„×a~ïdˆ}²©gxaCš>Oø§Ñ{ÊXËç*$FÃÎq¼Üƒ…v÷ µ±é: j~*ó0¥¥‘»º¹ŽÝ^M Új²zV¤_6Ï ‡•šºõâpI§C°h”“v|,<$è¿^¿dÈ Ç\W9ñÀSû PHòÀìþš<ÝÙ>ßHKöŽZ ú¢–nJ÷áIxv_b Å»^'iú·žÂ5as︨š.¥sÅ{ò­…›×*{óûœÐMWµìŠr·Bšb6üÇùËØ¯÷äÏÝ 7×ÛøÈƒÅP[Ú\q´º9M"¬¹ ,þVg2dUô>Jß„üð¤&Gëv¦oÑ„(•Ôf¤›åå Sm¾gX utzíMÂ^õRgÙÖº.h$û 1‹„`á·åíyÿÉñcn0™»áiþ5£×Y$˜×D³½ò`_óø´;n“Zê¥Õc¥§ÓÁDCeòKÞU\ˆú’!þÝ"S_uëÓá5‚Åœ3ÑÉþÖçùõ½`þ·r‚ïÛ‚{ÏN: ̲¶8Ž™:¶R“K’iü„²v—>ðÜéáµÇD÷|8e}Ê;‡ÈzsØ3ÁˆÉnSËÐgÙ,¸õ´ˆÕõ8™4*µÊö.Á«•¸91P‚Föai®£hå@·3Hd‰wš­X_h#ÞrîešF g¥„ýfÛÝ%Ì`®“II3Áõ÷&`msùF£ÆÈ%£kuÀ…êQ¾Â®òkñµ‰MšíŸ4â+öû‰ÎÕö15:§= §)ò4B/Ëñƒq}jj'Ó+£mYéy)ïD™z˜}ŒÌZè!¸ªÁoX‘ç!·NZÀ̯\ú~XF.f9òC~:‘ è•¡¡xv8!èZ¿oþé¡q@wyV²ƒ±•'Wf«­r#õ³×˜¦‹~w©pK$ö¥”ñÖàßIýÒ½êBk]{è)òÄßÞf3¦rÚ¨–«ØQl§`õ¢õôÒ;¢×Så¨jÜÕáK»´bìå ¯pêw™îîúæãH±È_|ÎUR£–̳ªœß}~NQß'0îOYáâöT§Øá~{<ù'îõ†Œ·•Ÿ¢à2_<­4GÁŒKl¸ÁÖÂ!øLS;’öl“"ÈtÉ8,ÿ\Øï wQº`¿‘kœ³¥Šä®×™„ð¥ƒËËáJ5•_7 —©ÀtŸ¨œ4Owü”A[Ÿ­°YÍ÷>V 9EA“±Ü¾j6ªë9Ëeºs/Gã/¹w@Òª €¸—Sz{×&îÓš—3;äi/f·³À4â·¿à9À?6÷‡åñ–GIÝ Ç=,l g`>ÔÛaªä½â^¯pG3¼#¢‹dlï½-†ÙÉ;L_Ãz¿ð½}*ü>uijjP#œN­>,”ÉI—Ûѱ‘ ²CZ×? i˕Ǧ¦ý0:q…,‹—ð|Z ”Ô-Ìò¢ ¿Õ‰?¶aT§qÌ Vð,{1B…LqDcùHR±É½w§í6axøøl4t“Âa`>lv«’‰O›îÔ'$_[ c@…­ß}Cݘs¢<ýiÌ‹ašig¦'Kc¯ÆÜ£®fĠA÷‚UU&VÛøu4¼õÎýGL/sŽirýÒÃŽDØDñ"k#¶“a—G±éì™{û¤ ¾“÷“rOÝ¢¹ŒZõÚàñ4²yǺwÌ„Jg~:ýüDÏú8ˇjgüèØ³jxvúûòßÃæhy);’¡@•©Ë^I@ú–ø·.\ì;DC˜òS'¬Ò´k±éCåÓò +9kØ>l'éq÷tikØ~Dÿ *8P•!K&[uB¯C³Ä¸[n]òeöãgq¤D& vÊÒ_-Û>ß•×H— >uˆb×·ôü ê8Wàü¶¶ÞÍ«£?&K|‚¯<ѰZMÑ×YÔÌÙÐÅzÿjÕ€ÉÞˆRïDæÚYmüØÚ|gÕ¸žØâr¬+/¸âèヅÉLQtÞœ{5"5m,á¹K¹Ân‘ðî àÛɀѨîÂ.s¿cêÁQ®ñ c•&WûröLÉ—c j»ióœv$O(ƒ/EZ‹r–©]U'±lÛÎEÓ³pW/ôZSg V¾ÊE`õÅn¼Æj4^")l’Õ/Kˆ—¶¼ÀN4¾M1åݵ ܈ÿ9¦Y˜'ÇÁ'åþ¼Næ\'g’Ïm téaÚ<™Ã$ç›’-Ûê&t ‘•mùÁº>Ô50‘Ô‡tÜZ•œŸá0~­ŒJŒènÞ~Ä «Õu‘øoÓ‡Ê_~ 7ìÚ#õX¥ë½-ÏqAލO_Ú(†õ]Çö˜‚Óg£ÚšoÇ üqµÂw‹¤Š2±ž† Še«º¯JâÎÛåRîtV]³^qqyœ_èÆm¢'NùæM´54Ip<œxšñP9¥·aHuùuR/q·ÏC™þX{nçœÞSDuóT"/ŒºRÑ"Ÿ”»)­hS<…½Br”ÒŽ›°´J»¬ &ºÊ«(µÏzQw84x²Þ€5wŒr¢xÊÛ°o°åeª‰ÎÑ‘E‹í"î‰PÕÁOãR¤ãn+úQƒ¸ÉŠTß¿p3 ~S2éS³­^‰q×QíªÕ% ¤lwk‡¼˜èærz 2˜§'ö#ibÍå-%¤»ÏKìºe–¸/øÅ:ÞrÝ,¸å{7B¤lä©’åÆ)$? ÅÖ1/#$júXeë´W‚!|–@³ûÀ€ÒܶòªsjµF4œëL‚q¼]\Ë{4šá; 1ß`ürsÆŽ СQÿžKyêkž•ž˜XÜ?â›`« ëF#ÂÂ@ØÂÝþˆ~¶ìuüìlðêµ>j~®ÇôÕ[‚¼¤©»½vT»~dæ»N;¡Æ™ðð"©¸Á‹kk =ÞSÙFwë’8}©ªbÒãw˜Ç~}zýCÕ…B º‡øŽ}2u®¢Í}"^+»v;ÄPYÝ3º¯Œ}fF¡ð1ÌÒÏM ¹œ½óº–·»sO”Ö槇ªÃNñõw^Òæ(k¥§Ø(UŽ_öWàk©z·Ók.WÌwa¨bARéµ:‰#øF«}ÈtŸCX»TÇ"êj_ße¢â»öÚæã`=S:65k~˜„ù¶Ÿ]¢–ŸåY=ÊwôäûdZ‘Gm¶p!椥å4pQg_pßx¤@Ç£‚¥ó¼ë4}úÿëñ* endstream endobj 806 0 obj << /Length1 1520 /Length2 7259 /Length3 0 /Length 8264 /Filter /FlateDecode >> stream xÚ´T”ï6 Hw ‚Ä‚tíÒÝ„¤¤ËÂ.°Ä.ÂÒ¡´””„ Ý€€€twJH "  ¤„ïê¯ÿßwÎûž=çÙçš¹fî¹æžyØYò+B‘605$Å/(’(ë(* ‚ °$DÈÎnG9Ãþv²›ÀÜÜáH„Ô¿(Ên0 mS ÐL$ åá ŠI ŠK@!Hò/"ÒM  ñ„C:-$æNÈ®ŒtõqƒÛ; Ðýõ à²åJJŠóý(ºÀÜà¶@‚r€¹ O´…8 ‘¶pÊç?)¸dP(W) ÐËËKââ.€t³—ãæxÁQ˜;ÌÍü Ð…¸ÀþÒ&@È0r€»ÿá1DÚ¡¼ n0Úà ·…!ÜÑ1(Ì €>`¨© Ðs…!þ kÿAàüÙ€ €àßéþŒþ•Žø ±µEº¸B>p„=Àî è©i  ¼Q|ú‹qvG¢ã!ž¸3ÄMø]; ¦¨€ %þ)ÐÝÖ îŠrp‡;ÿ ü•ÝgUTéâC Ü Õ§wƒÙ¢ïüë~H/„ßßÐŽ€Úýõp#à=`š*’Ð&Âlö0@$!.À`Þ¶À_Gù¸Â~;™Ñ*ü\‘®;´X܆þ#ôs‡xÂ(7X€ß¿ÿE„‚‚(ܰÙÄÿdG›av`ô¸Á½ ô @¿~¿Y¡‡ ŠD8ûüCÿ}Ë@}%-3eÞ¿4ÿíURBzüEüB¢ € H\ Ž~ øož¿;ð—úßÖøŸÕý+¡& øuÂ/èöý¥ÄóÏáàúsu¸ÿ=B‰ži€ëŸ°‰‚lÑÁÿçEøòÿ7ÿ¿²üßWàKRópvþMàú“ñÿ!@\àÎ>RÐCíB/ˆ½&ˆÿ¥>„ý±Ö:0(ÜÃ彚(zQöÎ÷î®÷†AÀQ¶LÒ_WNï GÀ Ýá¿><~Aè|èÕ³uB\ÜÑö‡ âŽÞCÔï»ý…aèMûo ª[$ô×J ‰Š nnBô< ‘(z<л …yÿxPD¡Ch¹;¤á¯[Õ™~#Iqò’mÿF¿ªBÿ…@» zt€ˆA´×õ_Øã7üOõ¶nnhy¿g-í/üûëƒyÃl Þ#m¥CkC[ÏkïzñoŽÉछ ñ<ÂGõªN?&f¾Z¼_¦¶Ð#¨öȱ]WéñyÖÊÜw¿OuÌõ>"§üÌjŸí™mâßÿ<ÅœIò;c`}OÖ„‘û0E‰IªØ­ãc4y<Ô¾×ÌŸ³¶{>É‹ƒºDM\+¬U·­£¦ä•6 ƒ¤ÉÞºê­Í€Ñ¦èñÎìu—¸ËÈTÝtÖû2m„‰^ÕäkýCK=ŒÑAZžÁ›‡lá( Ué¼j“¥<Ò«ìbÏÝtJ?u*…]hoÕ¦?Œ Àc²j2p)eÙ#Ϧúr¿à¶š6T™À÷½]Žm£ß”¸ÂÞB©zKëphÛ!LÍüéö¶O:_ÕIöBE4ÔK¢dÓKJ]s8—6ÔWÊT„ sˆ¦q;Ñ xG§{KZä X‹ ÚÉ#­‚ @îrŸuK|Ñ 0®n‹0ô(ð®}ÿ¾ÈÝIƒï ñ¼~1QWPBÿÁQ­íc£š×)•ÔOmU0ù‹Á-éþÜ­ÑÒø7™¶2\·³M|—D[Cå‡~¼”ñ34‚Œžß›‹5‡àWL”:ÕžÆdu}ì ¿ µ¥®Þ3¡:Ъ˜‘‰q®ìþþM†Õê§7 <=Æ‹r öŒ–.†*¦¥9P¨‚ã®](ƒâ*|y0ª9ØíòÓCècTܰ¨bÈwœÏœkêã0¥’0ÔLñŒj·,>lÝaL×ò¿5ÖÙÈšÀ]ÚÌ!É¢Ï7ù9ç¥Uh&ýà„Zšo­~¹êùÂM“£\¾2°|²°ßy£ÌÇCQškŠ—Ç ¼ý¶ÂwµÒæú¾ví°¬m¬®®|ÓH%OöŠ<‚_uw´}SóAÊ[¢ƒiJã„—ÖžnV‹ðÜÔ“L7sÙ‰TŸI¤gùÒ-¹úè¼ØÍ|qìáQ“âJ>îgf9ðÉ.ð"ùÎÆÃ“M}{CVuGõƒ¾r®Ã%òïþz®×Úöb#¶ËKÈgi³©Ã*B¸[¥°&¸ˆbä=ñp³„cÇÍ:F‰‹“hu‰£À› õ£¦–®f9Ç-Á· •"ë†@[3TLÆ’`ö+hÞ™ ˆÀñD¤£xæ`1yrk>|EÙg?‚}Þ4ÿ¡n­ž—þƒe=ÕPOp´­ô¥7*¯ò€ø^8¾ô«vêV‚ðr ²!r…ñè‚´¹U@ÙõæX„/9«Q½•+ÊÌ»Ùíôé~bPBjûgÞ‚H÷ì‰ËûSÆ—5«uŽâo?4}kðösqk´1 ŒS22:½óÐZÄfíǧÕ;“Wà›™vê-ç˜@ë7þ{Ÿ©Ž™Îªû WWêOõ!£fa–ÚÞŠÃéIN[þ N%øaܾ«{FO½.«•Iü Šˆ_èȾT$d›nÙ}!xëÊ÷yØ<΃³É¼@‘ê™OU‰É}ÛFÚFÅZ²˜U> õíÍ:ŽŽ£6ÚQgAn—!«òÌ)äÆì½tìù—Ö ÑÒ µ€KæuâÅrºðÂPBé4I´ºÕi)Ø-¶¼±Ï¿_oqâIBÇyò³rî³NbìÏx®Ä¢4vL©„ §›çó'²Lù–¤<þóNlÁ\öï×-âk@¦aԷû‰bO§µY¢†ÃsÏ&ºÂ[ÒòM •“Ö=±B‚D î¦!Ì’pÖ}04è5ü&¸Î¥åuVèóùïÌ ÙWN†füÔF@›¢ÙîÀO+ÛòX¾Ñ ª‹¹ؘŒ5qü0^ÏëucµªzK‰S ³0tjqÜ,ƒ5Uhúq_ü%n‡Ay{PkB$×u5b@'EÍÖ3FKñcåדyšxcí¾Ùâ±ÛïU·« 3öŒ®yW!©™îJ°OñÏÅÌœÀÑ%‰vNûd›NaÖU‘Õaéu£ãƒ-òÖþÓI3À ©µ2¤ÃMÅnZ=BÙûV Œgý&^øaÜÆ\®–’x|ìbh†w«ïÑ’–t¢;ÅÜi]g9-HΞ^´ïñãl2ÝeÞ‚ðdÉV/ŒH.$¼º¯X¦Ç[i]ÀÈ/y5p@IDoär4À©àá?I •e®ÇD)Ðfá±µV‘¸39”À=‰fÙRŸŽúë6{°={ñ~¶Ð2¯åØun(YÝ6Vç0²:Ø«åݯ%ô m\g`Íf#¬ˆ3|w×!R®ŠŠc—™DChâø‡®ÕgWõ÷Íßk]˜îuMôÏû=Cå²%¿!ýé;Ÿ&ûÒâ–ÿñºtû"&ËX „z›_eý•ð‰‰ïåJëÃçÅgÚ"ø”óï™VΟl¥peh?›å’*pbÕ }ïU&úÐÓ”˜®ŽEsNŒ^lŽ¶Ü ømÊ™ÆÞ‘‰ç}j,EÚ…-~}ªª¼ñ³#AÚäŽÁ´¬ÙQi6å} ô¾E»¬IA!§™GñÊÃÉS>k1mf– v O"?V=ý£4ÆGªõÙÖYŸ8·bÙ8´,Ù¶Ù]¹°¼RµG ‹®¨Atd€×æÉÎfPæ¿£þò1æÆ›ÛJ—û8ã¥= ëî8uâuÊÕªŸDrMLœÁ’ü×ñÇ¢¯ÅçÆ² >¾x ÎÉr*Ám­ æ Y¡+÷ŸEmD­£›&óùæ®8¢ý¬Ú°9®}VGøäía_²FrÕ|QPHY—NúÝövGyÂŽââ¼]òK°Mh€Ñ€ >õ{Îâëñ«Ý¹=>ýãÏ5'„^à¡É‘~a祆ÜVÔr“T¹Leåoä[¦œøˆCŸŸISD-Ô{¼°˜!柪E—b’Í›jeˆ¬¸ óv]b9lø Ú`²¯W‚¿(_?™gñBœÍ“= g}tÃ+þÚ…Á[]H™´L(ÅUmhw¢eWmæÙ¼ñ²ÂõŒ5¬ÀÚ²ë 1¼N“/J8tÎpþûœq\AW·¿Ñæ~û“¼!§Ï†f»Ž6AT!YêríƒG=®dÓ´t¸6õ;ƒÃ²·‰oá´ö‘íMæå*¥€ó/q¯‰|î2ÂGõ˜{JÔñVˆ×(4/Qz& ®å?zŸ•‘ãʪ»àÈ}zô9µ}ÂŽÈÛn[ª¹c×ÈÍ÷»>I¬*šZ©¼¾ù$dsëIùté ÅÖ+¶Ö m‹Îû§ÀÛœœjÞ&Š´I/Â'¾™³ãÓs±½XÅ·XFh˜f¨"ÊJqæáÌ?¬²ÈÇX©0Åœ²p/¤‘Î×TUªº#“"Ôë÷oº]䎋­Ê±oÖ ¡[«p»Ðªªà@•Dða;%ÈÙþ6h–ÌixÝ¥?³®Q+—ª¡¡9 2ÂY&­)ÂCÈÚÀB_i îE%ž“ëÉÅÂØx¹»{Á­³}©&“ZL®øÆ|É¡£ƒ¶ýÌiƺÂæyñ†Þ "éc˜ú÷ZÜýÞ­} K®9囕Ãê‚N߇¸ë{eFZ·—ŠÞøÁˆë=¶ºY¦‘"¤Û[[ƒk´ÀYT’¤M ³ÃÚ*lWÏ ;L’ŸÊÚ÷ù@<µ YA•Çÿ49ÿÀ’o:BAã›Àbxœ.Ÿ½MT·.v´"ßqA<•’¾÷Ë­âTö«æçyrí¬eæÓÄÃßy.c¦2îá{¼ÆÃßÛÚ¡IeltMóˆhÕUr¨ê¸yóLVwP¥t"oLÒ>‰gœjÙ¶KŽËcÁ€ –M™QöI*½íéåI¥pc|P½gÕ«Kîhà©kpë¸Õd[UÔaä; ™èœž°‘-V'íŠn÷‘u‹Œ³LšùdÔ «}`»‘WõÒ‰o+ËpQD5‰·‡)'µã0ƒÄa údѬnrMÒcœ`¥í›M+Uí²bÈ~aùGÙâÕʧÙײOûæg!¼=TnmV~¸…’TsÇ¥íÃ2DÇÁb ³ h2œ0¼§B²d–Gë壷íB–ŸŠ[î†è«w]›S½$ {PŠ`’‚ï¥B„fúƒ×iU½Y/S¨—ÀTb˳~­è? c`•ÂqK¸¤}þhеy]홌¬µi€z®±ÌâÆh)ÖБp˜€Û‡ÎnºöÓŒYêÝL¦ÓÙmþ±m½2¯üÔàmÓš]?û}ÏÜ”¢ëX¥žƒò|ðB<Ê ·£"ÕÓÁÅгüíÈÉÊöLÖ0ÊûXìdÔÙ>)›Nå’…oÈEsç$÷«K [ú…©¿&|ïûšé‹˜Bq¸Ï—[}¹ôP¿7E$U¬»d“¦ø[}oë¼}wldûçî«0ùC˜úñÕ„‚/8‹ŽóTðhh 2±µ¦Ê̪Rå¼ó.ñD ýò0 ÷ÒnO) =×Ó>O—w5Žëº'-mùEv½‰<ëÍÃ& MÑÓVŽfê€ò§XDß–)8URôi<Ïm¶ísƒ(æ“j5o¯:¯/¾ÆüØ“­ÄºNÝìýy¶ònC¤Í ½¹þØkŒñe³çâ–o/_Þª ÓU»Ì-oOOy0°ëçÑÖâgŸ@æEœ)0H´·ûášñtSË;i!7/™ÍñtÚ„%4õ­>€·Šyo¬3ŒŽÏzE¶þÃãI²üëLº~™v.ò‹>AF¹³»Î«9Y–±Q­.Özk‰cS’[ÛçcΞÊë‡ý*ZÏIZDz@.Í?G•qûËÄŒ§t»5ojüÄ&è÷Sgœv]§Æç”õ ¤XÌ ò ÂUþ7‚"ŒoL';Ö¶JϬ;gE‚#·¦.g‰¾{[_²bNá¤/§qÜçÓÖ'š¤ =Señ¡ð Ï£Ä剛ådmÓôÞ7(=}Ó˜ãâ{ÏÚcºOa´ZÜ{š°gÄg®á`ž<‘¥óÜBÏÛ칟’ÝùNãWIÊž·—ꌠfÎÇù³ÝSÂÑœý¼ööÊTðQ gÏ÷¥7+ÒÒ?¾ :—ùºËœ™ñ—Ú}¹~.¤š0;ÿË4wsta*ßì¨ oUÇ8Áý.—÷M+0Dô¬’Õ7é‚ûlæqĨrÜÈN½FSíÏÎÒ²Xaˆ4/Í)hêið«Ë’õŠˆüe|…î]–&õOëu Ôs-_øÛÓX[ÝûÖ¨ßg7I˪çØjïÎÔ©zæ‘Xѽ²Ù'Û Ñì“U«S9˜b£¢s¯4]û‡WœlR+Tø6.Ì%m¸]ï¦#÷¾D”z‘MI1¥ô5Ì%Aï}t¾õD )ÓÒ›G³vÖ;“vÐ;éåõ\ Oæq=ïË{aË}TjÉÓßùRýåÍèHŒÅ7h_×%8.íz/mÇåÉI&Èpˬð\n&C(†Ú¦tÇ|‡’ Õ"Ú_´5ñ§—Čؔ´áü‡‡_fÓ/¥¼¼Z\`›ÛLÑ)¦Æ[ˆònp©Æ©)jŠãªvÊâH˜uû¢ñÔ•ŸõMBÙØsêN:,!—yzµ´¤5T ˆ«°I–'ðƒë¶Ý™%›‡¿þ%þˆ/²ƒ6„2S|þM`HCQ²Æ‰wÆŒºP-)ר¼±‰oUàÌÿŠ¡(/¨`¼.Á´•J[§t…qF‚ÿîxjL´´Ÿõþ¦±ÊÒ@ñùݽ™üÔXÏ*1œ‡&„e]©oº<³ZN¨|¦/Â$P0Ɯ̿5@„+NÉýô~”Ð×"AâòP!ãŒu" ‹+~öÀóíü ` ·}`ã½ûâN?ؽÞ9Ižt¸©ÌØz4óòl%àîY½MÐaÀ°-:°œ éWyY°Iç-ïmú´Õ9ˆQÑ1$‹;÷àëóÝiß²eïðŸCwŽBÃj–믿xÛÓÏ^oFq··oŠœ¾#7Yä>ŠÔ¡}Òr´p‚ùÕÚƒõÝy4î$Jðð1;á=pQ0Y›l²pÙ/®{«ºC-8ÅÏ›T£GŒÑu§ƒ¾‘dHY ô6Æ@xJôÁR]%“¾CíÓ…ð¯_o=:3àÕòÏ.¿<åÄÛM< $ÔÖk–I  à¹‚͈ ‡h¦Åɺ.w+ǘ¼+$»ŽÐª°_›Õe‰aŽ/üIËã³Õ1(â¬îv÷¼Â2¾¨^gó^"ê]Ösþ>ÃÏÀªÌ\ß±¡çø[x‰)ôŽìyc:â\ûŸ¸ßùiÝ;õQK—<¸þ’tJ2þbŸòt¬*9kåšéƒÀvØœ.™±½b1M êò­¾SÂ)çÊðÅ+bI¦½@ ’âgæ¤|ÓŒÖ$Ö,DÍÃé?÷ýÝ/À¡'ûZ[¢_Ó“¼´’µ^»:KP%á—° p-ÉÓò“¶%êj\ùë–¥Ç|\È©2tl’ô­¬ òB ɡ͖/?m…ž?#¢\½5@ga(¢LWåN Š}ìÙ¡žÁÄöã°ÄÉýÝûªT¾Ä /¾|©Í¾£<µ41âˆÉû‘ï)ù(á©öÌñÜg ×ê›'Ð 7¤RÆyÃD(zÿ#µ|CÝûâÚÓ ÂŸ4Z¹£Ø˽[â­æ=,L×Ì›Ý[Aw'wi´±ôê¾iõ›:“­¾?ÀþjnsÌMбåUhIogèbÍX-lØ©Ý9ÕÐWlÐðFÿ»L$c³_nå=2¸ŠfRhéö‰öÛ¨Ÿ ÙÊ-#„ŒÑ»F(Êîp®õáØcý8ò™:ñFòlà é-N ø†§ùi=˜.˜|‡¨‘x1:ê“eóÓføËÊC {¯⎿£;ÏG¦w›Þž(j–ñÅtf³Ò’Ëj/“o~ùõ=X6êfå¹Jëô›3*Wž4ñhû0.Ü—®%«4¿½Ïñx÷m@i›b¼J˜K?ákƒå1ÆÄýì esËŒýlEò§Œ0µ¼À@7æ;Y"Ây½¡oP4ƒ¡Û˜ÁØv«£ìÂÆ…SGnFÅéÓâ3$g‚/6Y ¿SÏé_•#êë$uº×8å^íµÌŒÜÁhð6 Ð!o“éd\ )_t"xI×tp—wõ«¼†k{©²ôë厢o¶M“ÄœDrXm‹Q&,æ"ù²(Îà;?3ëÇ ]È{Ü”ÉT€€˜DiµOPMš¥lËì»cssm>|"Tâìj~‚•ã]=¹¿]¦Æ?¡z.ë³Iª†ìúÕ=³%û#s§å¥Ã†Ù\QLùƃ8›¯αZ­ñÒ×n-?¾×#F¯ìws’S^’T?X­RRÜ•¸C‘Ôf‰„ºW|´¦4览IÇÍ'ñ5™|-[?LQWIÚ†§ÜlÉB·Æv¾—CjŸtXi„…oólÖŠŽ4à\­u¹ayé]rÖ¶.Y‡³T¨ëÆq¨{^3R/¦ï-Ö…^ÊåÑu­Ãy³¶Ïú²‚Fk^Ìe`ŠÇ§+xÉäÁ|J­NÇÞõ1¯œ²¸ Y*ÞY>ï˜R8¨&°W[ÑžNóY™S JS JgÏûÌÈm½NkÙŠTá7Ú1Ù²ŽËgÊÁ óXkÚÃ8„,Ó> ý`Õ÷MaD^‹(”„6§$Þ‹'™°ÜpWý Ò.¾w${¤­×M=k:Àþ²~>WÕ88UlL±¢{ꘫ#Ÿµ,&g.—ZÃ5¡Ý7}Ù£!†Ã*-)åIgìΓ՜µ‰ØÙŒº ‰Ë—æ‡òe –´!­})èkÀ‰¬¢¹@M¬È»ÌC›‰ÓæØÛÌB/SŸ‹ë¼èè»a²<Á&Ö˜ÿúD "6ð6QΓià§5|šM—Îÿ†¢h endstream endobj 808 0 obj << /Length1 1701 /Length2 9799 /Length3 0 /Length 10899 /Filter /FlateDecode >> stream xÚ·PœÛ-Œ»CÎàÜÝÝ5èƒÃ Ìw‚[àÁÝ-xp   ,@€GŽÜsîýÿª÷jª˜ou¯îÞ½{õW¶§Œ-Ĭqƒsòpq‹ä44Tx¸ÜÜ|\ÜܼXLLúŽpðßv,&C°Ìâ&ú/†œ´ÉƒàD ˆ@õ… €‡À#(Ê#$ÊÍ àåæù›ñȃ<m\Uˆ†Å$úx8Ú;Àëüý`µaðˆˆ=û# ã öp´¹4@p°ëcE @bã†ûüW Vq8* zyyq\a\{I¶g/G¸@ {x‚m¿[h‚\ÁµÆ…ÅÐwp„ýéЃØÁ½@`À£ÁÅÑì{ yáf ö‡‚› Äö÷Nò @ ¬GI<"€ÏãòÚ‚½ÿÐ<Èå?†{ØA<°~ZP”ûmú s€Úÿ PçÄ êþ‰<ÆþA õ?H´ùø7û6Ï£îàÁG†ë?ðQ‡@·ÁǺв=V‚>ª bû/èþ/Èzü €°AAþä},æý/øx2ŸÁÇÚ¾Àÿºt›Sùc['ò7þã­{ƒm° 6báNõá?ke(½8¿NŠ£gü4æåœ,²À€*ÌZn&éå¼YR+W\àQ´pêÑ”uÿ™»öéÌo»¶Ñ‡ÿ’“VqÏžÖúõÂÃ%â|²ßý~+Â[£4YÑRAmêX‚^L)[ûA=&|–úþÏÉ^Ì$eŠBªšÝ½µeoÔI©D ¿}Ñ…·Yè8'cÉûâš¶gö2]3‹^M¼û+É«†`cxtd…p€ú}lˆªgèׯH8¡‚Ø•>\OÇŒj<`Óî0z±É¥Ÿ/ÿ}ÁYw·,ó’{M¬[{Jг7x´¦Ý–´ÖË''²T†Eë7C¡cèÍ?Œèi¿“#m7çd÷m€~ìCž+´ÙÂSŠ˜Žmy´yÅivTÍ)K^È\œ`,ç$š¤âu~o¬ãqz^f_†‡ÖÃcÝÝöFµäoÕí_jÄöÞË$ìØÆ”™Û)å¤ÞAÈç§=q†¹^KD3jPôžsöÀnÁº]°Ä¤tá÷5Ü?ÛsÓ=Ûè¡¶ŒK×4°#ùú§%¦9rµˆŒ³½ÎÌ–Ô{µã›JHpÎfg”uâ;ֆ‹ුEÛ: F%Z¹š¼á9æ˜Y"œCÄÿfÔTÏ; …¼‘¿}Sñ¹Û[rÔî“rÃ)­¹¾Âå{§,Ý‘˜@ Ç-öö6é +ƒ`ÕExÛ×x% Zž—£LgxµbÛL×,fË_P¨_Œ¿( úlëÆ“„ÁF-}eAŒÃwê ºq\ ‘/®3ài‘Îܺנ$È}ÈZð+O¼ÊMÛ¤s„xúãU¢Dô][³ø‰“Ú¯WsŒÎ­.—kL–箌æ™"[œaù_Ÿ:ƒÔÇ‚(V®3ô§´yü¦Cˆ)HÜò_¾ú˜«¸äg­ß5Þi‡ùå{~•ßKõÙCæèÞ^¬Qã‘­Ñ’›«£¦uI©â¥íFýüÏ##]¯¬¹MQ¬(šlpÛ1ðæËö=jª÷d¤>·ß[ñÂó£à;KÆaíôBÁ?Üááv7½D;3)lµ‘Â(zºsÆ©>O‰ÄßÀyRµ,:7ÃÚ ˜zq rÚ#6ü$çãù•5ïä\!ë_¹'™*ÞB—ŸÚîú9òKÆÅ [xÉ—œHƒuÎmñ@޶&3Ò=MRPG>1ªúÙÁ6jðí-Íðùò }•šÍþŽ%ֹ䯿ô!3EìTÄ­Æn|Š‚ ÄhŒ™“T ’àúàÞç|¢d9-”#â&J3~³¢)k,VÁ¯ˆë××%R“dñ1ß3:Û-Ï«#Ð gí´0ŒÖ¦‘¶ÊòÊ^\s¯^%Æ;“ª™k.p>Ì–]7}üŒRǹ®nbø¼Üú¿q®é8÷‹q'RI…yçúàz:ãÁ^õ×ÝÍ?ß'¤×^fo4¢\nô•©FÜfï}²ÀCC¿`2(+ob |´“þæ´€óÌíJß¶UÍjæTŠ¥<ÒM‘\@$±áă)E߯’î`ƒÏ@5$d—Ov‚ÞîùÔ˜>Xõ^u¡ÊÊÀv¦›eëTçäš_&u>ïéf§ê£tïÂz½® d3Ÿ&6·§Rí¹†{¡ªÍä4×h´#”Πˆ|SRß•q»Œº`¢ôOv*쫦väHD¤|slL§ïª ’ÝË«›µXQ{Ì8ŸÓÅ‘Óäªöc)³Qyè\¾n¢Ö¸, Ò'³VJN 8}#»’Ðñ*к"øÍ@)šúéY%©º¶TbÓðèSM¹ê=ËŽÇq—$Sñ‡¦®¢¿â|=åcÿäÄ`ÔŸ# ¼ËøcÎÿG.]‹bÌúèxLë=Åþ’z²˜e–­Nšª cs{Z¿Éëg2RW]÷=â«BUS²¤@»d‘gi‚ _žZòÜÎz°;ßQé=C•âI ÃÀ>[™\÷qa ÝRGl›‚wäÓ"¼&:ú¶‡ÙK^á*=ËNzûZŸDäõ²BR±‘–=çRÚÂû8üZå}èH†ÃÌ·è®8;G®àdˆê—ÃóòŒg5ó.†Û¿Øöå†Ëc £™æLÁô'rå]Ë· ¼½°²ß®´¯ Õ¨ø³ŒÅ²åØêHÀ˜×»¢­²¤€…µOÌÁJ”¹³“ŸÛòkÐeP<8vÛ3iÏqŠ(À2ëƒ+Ë ^Ód±ä7¿:F1ýÁ[8™È•âok(»¦îüû¸üÒmj£\~r¿*Œf-%] ’ÃÈà8š j¥Z|Þze0Ÿ€JñÊ“•ã]ØÖŸ®ñ¡VÂ×u¿:f»0r3y;ÓÝÉeŠ‹ìïZNrv8ªÏHï~¯ìÃS’°¨pø|Àæ\“Ýæˆ)l=—øSfñô§·ÒWb$þ!™ÖUdÖóØ#§š-Eý•ÎiÜgŒ ã0 ÝåÚ˜]JcaÑg3×`gHÇNFÔøÎ:Jð{…ƒ(ëãØgrÕîgýÌ‘wÆÄ‡*…ÙCó(]fËÍ}¡¾Üê‚!VžI›í¶O¡Rߦæ«kÞØ}”›|‚V÷n¡Íõ9æŒV69"“OKÀºh®±Mþ‰“€äråµEHÕÌG­Ô:—Õ©i ªó2 _…¸r_ÆûÐ1›ïkÜcÎz1Є.™$‡RvDW´ªêDò½slgÛ¸’‚Ã<óžÔ“°@!ñF5¥UjΖ´H,]ÄLZ=¤Ÿn® Çþ†ïÛSÃBÁþþÊ@,’Sa†âkD2¤CßúËjÀvMKϯ.Þ”nÉŠojÞî|ýÅ,á¥ÔUÙû¯§ýgŒ>1EsŽKì($J×´§póZlx4‹æ±R+KV‚÷–´ÇWæÅj®>zàjôfŸó´IcSfÒf³x·x×k•&±L†u‘Òs·£{Âñµ’ú*Ò]Žb×Ì”¬¬/A4ÂEY-Œ¬k?F, øˆkܳç/Ž·ÎäPé+<{b[/œî â¥2ònVÆd¨çZv¸Ê`¢ÝæÃ”bʼÕ]õR.=õ6$DÛ÷ÚÅWçt`ŒÂåN8Ï«Ï@ àp¢µxdjòÊó-ð«ß:ÚþL ${2Ÿ8F½àCJºò¤ÜvîÔ˜/KÒtiÍÛò˜s Âb8Ao4>œÁP¨ó,j%ìåN CV¥®÷?ù¢‹Å[š'wz>þ#¬œ\óÿ…ݶ'(÷NHÉþU[ÆõJQükY Æ ôÓáC2ÆlöÁÄ‹›ü º0LZp¥ØÞ^ð¬Ñ W™mà•Ò=·BÆæ$&BÑš4Ïvsq¼·cmŒa¹;NâxkMEJÁt×¾HÑËÇ|}ÁìÍ Œ×Ýõè^*—ës±ZóÍ¥˜ßÅ…~(Ado^_B©fÁñ<ÁZ·óáÆ€í†÷{‰á°Òèbó$s€~Ronû‘Jèí÷lÞUòjÜâ(”ÌûƒASÌÚt¬I6/î|Ú tCœ7_?þ"i}IY1Òîßi¬=ŸoØ5Ⱥï»6sàêçÙõª_Ξ7~šeC€ ŸY7N‘„m)wž_ãÌÎ9à§f*-mFU,»>Î$Çù¹ú½žYF+µ:öÁ®Ž‰uå:)¿¬LÏËŒšÁ ÁV;¬}i½uÎG'ñBáLg?%ƒõP^\¬Á©v`´åf}Qåë5/Œ„º yýV¦Ñ>R)yBSo8ÆfˆwþWû'"®ÈÕ-¡r¯,ädó7c÷jI$V=^ÏX¥ý yãâ^ÅÊk¾Ú“© ¦ÌQÛKán þ&U: åI»:ŶˆÏøGò„ÐJ;PïVBmõAJázG2;›¹ãìe¡‡#/&£é§8 ÷”¯áð‹‰ÁÛJ÷0Ô&v$«|À»+ìªdá¡áAÈkv( ‡êW¡øÒŹÔZÚM‡ãl\L71Î-7é%¯ÏTd iøbsMÇžÚþg5Cý0† aŠÍ¸ÜT¨‚h·×hNî ©‚ vr^e¿„ÊÅþËRÕa«“)ÆlºÞÇkIû¯‘¼1f¸–Ê0Úå•Éò¹Glšß·‘ªãlE¶‡‹º£8ø¨­6Þ+Љ›<äMGü ì÷ÿQѲŽ9OH|®ôè¹+¡­9–°>è.l¼Ýv©drñ=çÎÂv“åµå4ùÕÌšWìH)0œêºÍ^¥Òl:3¬æ'Iëåßø«b³=œ+›¡P¢‘¡%KŸqOEãrÓ'!K˜”¨Aí_ÛÒÃ'a%H1„Š„šÇ%žv¥q,ØC·¾N}“׆ˆµ•GÍA#&›¢´ä+L ¤çeެg|é|±=!½…ÑT’ ÒŽîK{JÂ0Zö¿Í8·®ùB“‰Wž©ãNöŸš;èÖ¢a[wŸþJ ˜ ÇLÓÊC*”ð®/nD]Âý\b¹3(ñLpÇ‘^3«%ò5R&`œì­ö¦þ3 o˸÷¨ ½ëoµ0¢œd—¶„¥"¤Âw¿Ê£vÄ#$R™¾:÷‘OYìAw5*±dH²Ž=¤ù{±ªXmàWõ;‚@þ !X'—jŽ>”žoDFšyÇGºë;é—¹P ZRox™Ÿ¡ÀöÆN=»à'ej>Vž²ü©#~NÆã Ó n ÓGlXvþ(nk »IS~Ufëlúêî£;+>L³é-qÎùÆ3å—ÒI@­IÛ‘¯MæüyÍ'›#Ò©«áÂ:k¥zVÚ–‘}ì;Ä{I `~3¢~€‚ùi'ßÛõR=&*fVŸøB¹¢Lëë­Ö’xL¯'j…XW]ªªÄ7˜… ‚ÛÔ.FQâhü÷?5F-)Ìõ£3Y2ë/ô+þd²Ô‹Ò°µðPõH45†€»•Ô„®¢FîFðýÇqû­WÐ^»¥u$7ä{„n!|ÛÊ¢¶Äïj‡D¦êX>­î˜²½ÍŒýÒ,äÑ£‚ûtF‡X“¯ož4©´ þ|v«¢ÿž1*þ~Ò'{1ê(Q9 êØ¶ó`hãkNæÂ¼¼þV±U´­@«hŸ‘a$ƒN^´ !–!‚‰ D¶•­á|72Lo©ž~#EÕgKÄ~#µÀ}Ìk.äÍú­Š]­-ÜÉNÅ…â)@ ³¿xÕ`®®É}Ìþ³Yí{ê'ŽiI0ç¤|.aï^޼š%ííP°Ë(ÁñÐŒY ¹.ÇFÏ~Hš|qæ’}ä:ƽOÈõAþˆŠZV?ÄFjsrôÄ™£°ˆëýÝ)ÍH×»ìŸñ ¤ÃÒ¤6…ê8Ž”N½bšµa{r²þ¬½j¾´¨´Î©óWÕqß u2¯P&Þ“XïœÉ¿ïl $Š :ÖÏåëij¥ø%·_ˆ .#ßhßp*Ý%U¡4ßñP°3×8u>!5¦ŒÖa®†™ >h¿¿”©{q­­Ü„ºjó‰É‚§xáPÙ¢Ðg5‡sdwÝzæÆÌê/‚ô»ŸÎ§.¢…–EîeºÈ2CïÉú{Ÿ[]õ²¼o3ys´›ŒGšámGÕÏnš·LÙÀ 8ëoòÏ9ó£"VÆÍ§üQõ6 øA–ŸÜ3‡—ºŠ@”<çûÒDÕj>°ò‰Î´©p†§é5„¡5®®l5ö~…?‘ÿçËš¦à¨ýšfµŠQE­/ÆòÞè©À|潓Ÿïw¬gºV¸|²÷mW?´Ê®Z³¬ø;ÝÒÇøNü|€¹UiÙË}Ë}K3¾¥1¬Èðcç=O«>§ò·ñqlccTçtsˆë!)Ö ù^ÍQbÃèG n¿;SR|­%¯“ìÔ<+謗H¥—ZjY¿SêÉЯ Ô­æÅŠB­ˆø_ !§†÷ ±/?Ø¶Ü Ú±-¶¼UDa0CV;›=FÉAÞ ð¹ãVQ¢­ÛVs†Žø{îR »!Š™]Ðvžªrasœ£Ûn.1wGŸUw}ÏdÀÿª{›^|”Þh÷*[*ƒm¼\KÙgø=§)­Ûvpñ=õØâðzß7†ç+ú#&Åï:âµÝøýÞeâ$ãÓ6ª8ÖÖJÔ'Nœ-Åg2«t½šêSMÝíµ-[4Œgñ! a~»JïÂÕYl¦ÎÌÚëÉåâG´nÂQÕ>³$öshB6âeð‡ììdˆˆI-ß*Éà˜ˆ„ï+VâðŒïרmÚÄÂG•òÔ§åGÖѦŸE1,Ü2î:z…'aø&² 5þ}Þð$-e:Î}R‘Jb`I÷Ÿ4¾2ÓâPè ežqvé4ZàWÞùgÙø·¥Wö}e»`–Ê¡×Q]íONCÊÎHæ?J³¯#JøOsꦧô¨OXri1q~^_HÀ&àò»Â©J]SXOùäsq:k[9öû .z.ú°øƒ_Ñ/Q—³|èõÒE Bº¬˜Õ ™ÉPJ¿.që^¸y‰ã¯54ávì(GÉ@SJFè-áê6^™%ú&:©5U:ûP ÙñòG‡'r¤è1”囟©vJ[tM—¦b©ù £¬YŒ£ôŒ<Æ.abȇmŽ<Á£»á¶-Å—;‡zq-¾ꢭù—ªÛM— ä–tÓ"O±ï½D$·ŒL•®´è‚|*’òßÒ§Åo‘fËé#1à™2ÜähM»aWv¤tÁ”m»¤m1;ÆÌ¶“:µ›úò"¬ôÎ)†ÒäM¾lˆ$hݼøuÞ€®¾)ý„AÐYFAnWËÏÒOÙ½ÕP G÷µR¡„ädÇ­ý½wé%»Ád*Œ€$ùvÆ •ÜB^Ð2Êßhb'7Û¹W¯ÏOÕ¹$–øŒ°‘'\¤YSùmà¥ì·˜™Æ x=þFÉhÝBÒ?+å¼]Ѱ»áKÝŒÐ+é ÷°K§È`âR·çÅ‹Â^ I®O¤ŸŸ¹tÔÃßlÐÒ ž¹BàÓ‡ p¨~§ øæÌµnKYéÞ¥)…åë=Ì}GÐÿ**ÝàÍW|úûx žM¶“åU?ãmÖ'=0?ëmŸH÷ù’ç÷y[ã±8„˜7§ä­c»Q¦¬Îßk¶~-ÞÈšŒ¥)uyäh½kHÄ.!´$šöÙ¨ P‡í’É#œ>½Ë°ðÕ­uÁûx±LÔøI¸8° M_ã~Çö\«4Å/œ-@WÔ¦‡RñC¾M\«Îì.y_ï6Ê#(_¡ãlö„Ï“À¾hÂhS%Í*–éîÖÀÿÞºt³Ø’Ib› &ÒJÝÚ8î‚Ë aMÐy¡H*‰ú¹Ôð+9ÌÈæh-'d¶Ì™Vi Éi'A@WK¯Ç½«!¿mÅz ÅkŠÍ–‘øÖJ9œDª‚‡• αú¾–ÚW4νá¿ý< ØÛ¹˜pdü=+î^gŒé©$æ)^¹'`Ü™ƒYâ•Gš†ŽV‚CJzlk R(™¦Fxc…üXž‰''t• !ä­ïE¹‹d³s˜'éµIjMÜ ñª¹Œô¯˜^‘ªõŸwÊ1 lswYy}ÅqÔGì¾ÙòÇrX!WÏ âîDRÒÓ¹ëEÍ ´{²ÙcÑælWÚ¡WÞß7$Â_µà_]˜y`V§‹‘ .>ט’ËìûNþ µH>±€Ì5®O޹¿õvÉBŽgkêG¡Ð6ž ø‘`û‡20ñ§‡Z)h`ªw‰F”=Á+Ã\ºV<’-M×J»`–{Ù!ш’5QÈLqÁ]ŽGq‹§Úù«M>'“ÅÄ`”)Û'9¨ ÒàÞlH¢(#!FðI³¹°N飡zú}R<.ÏeZu::Í]"Ì ™åÙ«nQ³¼×9ú®GØö£ŽÙxõÚ¨÷šÓ¦x¬ñ-Í‚¼´¼ØÉ23.)ÓktOЗNÖ×´½x%˾ž*Àöë¹ÞaD\5íYŽqIàP>ûÁõGÓ\œE³Â¥uÌ^|ÁƲ,–pHˆÄ †ß~çp;¥)Ãe«PÖ‘)ELñ_ξYïííÛ&¬U… §É'߃Ó|_§¦LÈ`*‹‹ÊwüÚÞçÙ+°¨û†ÜèõüÁþýRPAú•_¼ÈWáb7O”¬Ë€Ömê !÷òŸ1©/¶sã"Éâ d°ã†ÎœJÔÒÒHyhyeݪܯ.ì…ñéY07¯“™ú"]3šjï¬Ê '토ð Êä0hn³®ÇÝÐyX¶VúIÌõ ´\úªf°u (<3àËBÌ]ô 0™)°?·õ§Õ‚S¥Ž$õL R–…'%"_‘-öÌêf¼*/À‘ð—ÒÀÓûÆþO¨=á³ê±]q°ÖŒÉ¾–%åxã–{-OfÓFCTa¢6ä{môrƒtùÙ'ºò²“†¹úø}2~'eÑOÁéç7³Ò{ôF §¼á‹;yö}‹òc¢fÙˆÒ÷â“ø~–ã­ÌΗîŠUi£¸ ·¤Ù–EpV9C]oq¾Ýi²TÝE¿.žSËÌÏgÞx œ 70X–@ÊϪê}êc÷U¶¢Èó nri“z§Ñç® ’j´”ÔIcSr§Òp­m£Ó‡+bßÖèÎnëò`çSÎFžq”Yñ/2+°ÕÂOïŽk^H"ê¿àˆÚgvÑ¥oîjOõ;·œä ²½÷]{XRn¨L¸“äÖF•½Èëvô»{ŽgµáÕ=ôOÛ33»×ãÔ §ÊAVɽ™ì6ù«µÕÖEÄ«‘ºNÀÕÔæRs¾Uõ쨣i^üü«ñ(„¤í E;ä"w£miS‡jþyÍ/Yðøo½‰Ä)˵`$îýHÐôò+TWh»ÄȤ ¤Žé&äY–¨IÑ59TäQÛÑl÷¢b—ÛÛ€mŸÉ£Í§tîÈŠ¤¢*Ãjh_B+гk~H þA‘*årº^ 3Å”w“ëd™ï¦‡ôà ’¿}á)4}Ù|ÌSlÊ€ažð¢(Á'iëyÃ>I—_îäÏ;âNdFËúü«ÂMM™u 1Ÿ‹4Þ4N³´rÏ{µðù2|»‡é®-^Ù˜CJ±|Ä„…Ć’[h[‚Id{ H«¾à^X6AáÕ¶ÄoÈÿ¬Ëž’6‰{v?éUï‰ îÊQÆéf|r !«<–•œ Ï<Ì7 ×DÔ#Ⴣbº·>š¿@ÁoTNaöbOG¬ºüñc2’û4'[Ð’ &'±‰¦Ì:I zæmð¿õ<ì0CfÙ©>ŒÇ½W|y`÷’7¹ó™^Óxàz3ÍÅ’+ÇÖ¸ÿQiùç¹ç ë2±Mõ‰³2µÔó˜Œfzí\zh®äD_üä[í¸´Õ ĺŒ›Á×õß?Ã=ßç|é™èëÛDyîƒp¨6h*äø)”=QEH0äãæ•Ó¼HªCµ§7˵¾çºôMžÇ~Ê;V’_㔫(ÆJïÑóJv‡" á"ૈb²t ±o<>“¸íUø9Ô:Iyñ}OYZž¼]³¼$èåÎÃ1*¢ÌÄÚ¸}aËxyžŸé¬Æ§Å깓­žû¼ó…²/nÝ9“~ICM„xáŠÌrúíBdúˆ°›Év©© ÷pçÐÜÂnœ6 EHËÊÏcD''­™:û2üœfW¨›uß§[„!²'ñºp½z ¯†•LJŸô-{ZÈùi̾1…6P²tu.>Ëæp [ø–k÷ûS½! ϶'cZÆòœù²RP#+§‰à7|j™¨/šR‚ÔíÑŸZÈ¡ûjá&ïC«µ1·"ÎW-¸‰eåÆÒ>#ê£ j×=‘H–zÎíTË©á0s!ZþAÍBWUZZ—߆ôýNYU:qºi»ïÿ9'b endstream endobj 809 0 obj << /Length1 1415 /Length2 5992 /Length3 0 /Length 6952 /Filter /FlateDecode >> stream xÚvT“[Ó.¨ DAŠJÇД¡7éE¤7éH! BIè ½‰€tÞ‘"M‚Qºô*½wDŠðGç;ÿùî]ëÞ•µ’½gž™ÙÏžgÞ7lLÚzkýÛ`{Ec(¤ÄÿB( ¡`,ΦÆâ€($ð±“$‰H€D%øùüüâQh  "Øa Ôà>F!¡›ÊÁ €Á±¸:/ì H\\”ûw8PΊF@ÀH  ‡Úã*BÀv@=źý+»‹uàãsqqáÛcxQh˜47Ð…u¡(Új üE¨ ¶‡þ¡Æ `êØ¿z(¬  â v‰Á…8!­¡h ®:POU¨åEþVÿ À üs9@/è?éþDÿJ„@þC ({0Ò „mvP –²:/ÖË #­Áv.ì FØ­p€ßG•åt€`Ã?ü04‹áÅ ì~qäû•wÍJHk”½=‰Å~O†Bp÷îÆ÷§¹Ï(¤Çß;ÒÚæ k'>$ÂÑ ªªøƒ3þ±Á X 0¿˜¨ ˜ê„ºBà|¿ è»9@;A¿Ì8^(  ŽÔ aÅý<0`g(‹v‚zyüoÇ¿wh€`VP ø';Î µùkë?á 4åÇÉäÿõùÏʧ0kÒÎíøïó(«qý¡ü§¼<ÊèÁ#òóAü"@QÜÂëßyþs³ÿmÕ#þœŽÿŸŒªH.Ï_,p×÷7ç?Ò`ÿ37À—ÐDá ²ÿ£3~a~î ôÿ=¿Cþoâÿ•åÿ©ÿÿ>‘²“Ýo?û_€ÿöGعýAàí„Å ‡ 7"Èÿ†Bÿšh ¨5ÂÉþ¿½ªX0nHä0œÐy@B¼üBÙe„+ÔZ…ÀÿÓßÝÀÕ°C ¡Ú( â׃ÅÏÿ_>ÜìAžá.\Ïþr1¸AÄþnï¯=7jÿ>‡‚²þ5“Â"@0 và$Û =@¸áµ†ºþÖ<‰ÂâB€8Î^@ð«Ñ"¢@>…_&À¿ÒBœÐh\ÝßzÀÕü{ÿ{î¡PW(0>‚‚HØV4ü(“£sáYê•"ØIüa$ÀÓ›cA„mW|ú-Z/5eB­Pyü#HÙ¶YSÞñGÚÌèÇbå½wnBßyî)¯ÂîY½¹üŽÿ5Æã˜žyäV ^¦a¼<£D>ºO›!Œ¬…XÆÖ®ÇvËóAEÛXŒËýÛÊ¢4›ZÊ RÔïÒ‹?Ùœ×ÅÖZué/ R?HŸ·ô_xiš ùšYMªéíRJ6×ÙÝ5Eþ‘áC˜ïcg¿¥]Ö ,¹’d½¢ÐõÒ'SY¤çéùί)<¬T(îêid2éRº²bkw¨ÍÎY®Ù¦„ÂcÔ·³^¯äÂQ> '‚­þb é_™ƒa/<¬¥¦•u}šjGƒ»©ŽÇ æºín´ô׳§°x‹ ö½Ÿ–Ó ³M| 1áá5Ì€ŽPf~¤àtðß8®U%H¹¦µçì'6J Çc$Y[Þ—µÑ­.+wtÆÀÛî_Í*+u¯ÀvÏ:0ƒ%YǽE¢õñØë±q±TóÛ‘ž|Õ21‘pâ´”DšËëû¢ŽÎX²›òn+³‹+†U‹ƒý$6s‹wnV¸÷cž7õ·õD˜nüH«£Ð?’ ²)]ö¥¬MËé¤é¦NߟT 3}È,¤D¬^—wýl–4¼p_TäÎ}éý‹ªSEö×Ä^Ñb ÆÖ«]Ü™†çqò˜¬÷Ì 2Èqñ2å'³µL'wúª=–™,`ž%·3 ¿WÁhòÒ1OîÕ]“(VËAD¤ºà]yÝ™žÄgõÈ2ÜfNkú'±p¡%WªÂ•nlô{‡—^iÔÛLÈSSâk™½½¶C¡š Ùj­?3/•m~qä)òvIéÔ1ž­*«uµÁ¡š×('2ú\fÉÛïb’Zl0‰^’slnɳ†ü‘XvÁkr‡.z¢çe6‚bÀó‚­ß{XÌSЋÉü¹lœäÃZÖ¡ZKntì-RvŸeÌ5§ˆ£_îèZ”§áç¸Nô®*bM¬¨n= @M‘°}h#Z©ÉŒ.#9h l+ŠhTÓëç›\Î0Á4‘'R)é¯hœÖ·?Ö‹LZw]ÝÕ^™P¤‹óoW¥`ÈMèßÅ7˜û~ƒâWe‹ûÓp¶n~>x÷}ëÙ”­îçÛÌadqPOP•®–ˆû“ëú‰cö׳J/'l³9® ß>ëzk›ÇM›æ+¶¸ÔºÖqÎf—õÊ®°O¼ ÌïjXÍ#ÚïÅç´Š¸fÝ ÃªP§8;XjŸÁRʼnN†BI ßÇZÙkôr_Ka+å pKºí33 Sæ>Ì(›ÇJÞ*e¤½>忤׉ÏAk6©€ãçIh–UW YûsØÃZ;™Sƒ( Ê8.h/ &B’ÊÌ®^×7ys½°º@—~Öt×pe]-í<\$[ôfLS¢m‹eWröüvÈõ±)ëñÈ$õó­é¤â„jö¾=Ä.* 4›ú_‰ê ^3ì*m«ÒuÓ–pM©¤íóÏm¦]® ' ÷D K=ß”'vC·ï}ê  *VX¤Gzj1‡Þ°ï{²Ú\¡xsBî§mÚi÷#É^öQrÞ”xÃX³ïDî³½zã]Š®«D„•ÒhLøGv›é©© Oq`9Üš“MDn²öih Š£ÄDe*yîE™BÌÇ Û½´Ä^§EÚdûõI_®³aöT4“ o2€®Œô+¿ ¸1„J£”&ЇõQÞñ=#Òl~¤mºÈßc舥/¾î³¤;àrÉ%bU³ÓJß^¶çÝó)­Ç´˜ç[µùCx~cŸSY^³uAXk¢Þ¬aoå¹ã¥\PE¯`p %•âÑgDþ ü\ñ;é®¶ïž°^„ä̧Ц~SANTØ´3 poúsQù{§Ãë/«v/´=Ü*èxUjªîª<¥º­ÿêK¡á«+‹§ÏE»mÓ˜4Ô È®IÞˆ‚Ôä”%À5:8Q‡“©º)­›š¦²™+JÔ´Þ3Ìž¢«$MÛæíð}#´ Î+uiùË6ù3EXê”ѳú×kð\Î:}„VˆíØðTTÆÇTM¨dÅ|!U¢7ÞÓÞŠ Â˜ŽWÉÛ·—Ÿ›S4TŸ<Ê XÕÚ]SZ/b«ÝÏ#ü1{)«—WtlV] ×ïl‚€'—­X…ùýÜëx´¹\íLz´X©¿O†!3.«6³zëئži"¸Ÿ‘Dö¿Z+á­LJ§”¶L¸ÔKÜÔG_½%xëŽe«Y;unäHwGùaÕãMÒ@¯+þݰ[Žó×eŸ|´J¡ŠâàþV¦ºæqJl,+ }¯ØWÑ%8 ùîÞçò³¨#ˆ±ØÓ‡Qª8§g`ћߧLjÍj¾`×>Ñ+w0µw/Ä^£¢™y,Và=PyHã2gOÃâ;ù+ã>ìÖ3)“Mß_¿©gžÿáp3˜å‡Ò¼›®û=ÝÑVÑYªº£·pîX¡»K­Äþ†B;ý¶o´£]MR#yéû¢Oäçß—µØ7+`tÛñ½fMÖ‚!Tù™¡ät3 ‰{g#²wó(’Þ*Û}ã;´¿y[Dx’¨ª™­­7/æŽÔá܆­Jü¥ºšzʼnóᤱWø—JŸå3%šžcãaâƒO¸=½‹C~ú  Z°Ĺ˜õêWÿÇåhÞ-Ë{eªám‰gËdu„ìÑFþ¦&޹ž êyѵ%©5<òôÃbUÕ~°ßÒr& ‰÷Ù´×Ñå—혗µÒW£+³Kª[ü<ò&îœÎíU ר-QÚó”Í)¡n½ØâÞýÄ”ý´Žã-ÿ¸Ý„3³@Äuѹ +2Þ#‰ç<Ö­èÓ•W€°üÁý+#÷AÕK9Š”nTêgC\w_ ÷s9¯ §›Íc3·™ÔbŽ(GRWrÒ¹£Øš wï´è9"^pgÊÊAeõœD»Lú _t0Ý1dž2îÔµèÈ–7„ð”›YÚágK,.°Zå}ØeôÄ×6ý #1A»ÛÈ·ÀGb(GÓY.YЖV*!¤©lѦd®”WÑí¾w·y`4—ú•þf1ÚçÂv`稽ÏxÔcÓd"oÕ0➯ă)Âä¼ã’ñ"[:OÒáYt²ô,dâÆmod85w^ï ½Ù _.n÷ø”€YîŸP+±äYŠÙÞoÙc4É ó—Ñ5þD–|)’úy•¥,bïû÷ŸtŽÊ(‰ù1¹pyH¤åàœ™Å‘øªDtáZëþNë—ò^Ù჈hVôêÎiùü—ÄÄ©ýƒÍνÄÜÛ3vtGøvºÆyøørNM>ëÂáKÝÙŸã…Å"Œ¹êý¤îÇ\›—æ¾jy/R:‡Þp úU6ÚôNZÒm´ÌÈÓe†¼RÞbóž ¨Žý|îqÈ ”<ׯfmØíÝÂ+&ìÛ×NðoOHÀø»ì„V[4Ðr§W–R7-Þ2ؼ­èŽ¢ ŸÔ}D?%bêSmnþÎõ §PÁ’Ök[ÌA/Hü§%öTDüuzæ.\Z† †n™<TB=’!)3YùîçǺšUÙpËÛ~øžtÑ37ޝ¨çª»hÑQ»´Ô&ÿp0L°¬¤ C“‘<óºnÉ£Yxh'}Þ–K÷Š`åîxü+øDÔcþ\Í^­”òö/WñÙžâù~¼ˆ%RÎz>sl;µd±K¦Iµ¿,b´9uY€Ä ¤° iC¶ËÎT]çSïÂÏÃs"ërzæqð€ÆÁÁ§eEs)ùíë1Â.'q îŸFн—%î9^(O ¯q²Þ{ùs vi[˜‹T+S¥‹Û47¬„vR¥çû²Ð3}®JàbŽYô±ó†‹¾]"=ݶØfÊÅŸV0¬%.~JÐÊM7†uâs±ZUOþ6cÛ'ÌéÛãÒ=^Åží.ÇØ×`Ò«”yØîÚ¦}°È¨¸¿Z£Y,¨õ5t˜õ*$³h–«ò=ÝM{]™G£+H¼…Án06BZ†¨8Ëklܾ¾‘ÏÍ è$’[[{%(gʳm†ûÐŒÃ>N$ä,ô¹fƒÅ¤Þ䛹Ó"¢Ev¾þo£w¯ž°ó ø¾=%·FÄg;»x–D6íy•Lg=}£b>Qê¸ÖÁ«„ëõÏézˆ¨.„R¥¾iGVÞ¸sîÊt1PòÂõ¹ÌOfm•ÛZ©xJžnî¯ÔúåÓÎâ¯él±&DèÍyämî·‹Ý'/œ Í—Q­É8æ¸\Ó¶=LÛØ!Ô •¯åð“g£Ÿèÿ@Š yhñs–!u "Ù¹•§²ì—’XL¦ó`›túÅcrD¾5Fµ:‘fõ–öM·« ý ¹ô.–ö»ˆdè'}¼ÐL{žñö«v—²_ïÒ¥…¦}Ш4¦ëÈìŒ0\îP­_>ÚO ×+e܈5õf[xv?±N‘û˜ða•âïëpBHY¦£צXßD²5’…‡\E‘ÐÃÖÅ ¶Ý ”ò΄§›à bfñe@•ü„ÒªVÏ2T)eÇCPA‰ È>Þa­¡yáM‹’Ý5UŸüü‚Í/åSwÖ<‰NèÀ˜Û7ìŸcZKD¶ð´àB­­·ÓìšAcj•Õ3]‚;ó…$-ý[€ìÊ7Ò­RÁ®ã†<£Á,leÅjky%4¥EÄùלwôu»ä=<>àåk;|#Õ |ÖFrjд'µëœõ}çªÛé6öeDÚ¦ûÈ›ë¼÷y¹'Ùn}UApdlM²fá1ƒP†ƒÅÁs,ê1†ADŒ~ªû|¥G.y;¯ëï[Nˆ$ŸvPy…„‰ë`è¤ÆÍT”_­´_Ùoø:‹¢Ž”ø0ÍУY^T²Q6z¯}]wf¹.Œ›QˆÒ«ÁõØj–®qC´6¬ cÕ[´±sJP$è/|·Ë›D:Ü„÷zÌ'¤þÄ ÿ6žË±ÄÁÕå– •ýâ\¶áFFI!uƒþ›¢Ä <Úfdzmý˜•ÑÊ’߆ö_#‚Ê WÐÃx?yŽYüX˜lÉÂçð¾l5\Ü)˜öõËRúÙ‘¿¤a7·½6í˜KÞ¶I{‰ôU¢–ýxEFÔ¦%zhÅ,²c/Žï’‹"5£tîöëh¼àq¥è{|R' ÐkF#]KÂ}¾Õbi•\ñÃÃsùÕ]ë“ÜFU‹7Kj›îùЖxqrYA§|ø¿…V°l9-¾¤Þó¨§Ò7´è¥[l$L†>¹v˜çˆïuwÌø²µš,¬o=Tö“©Vܯ±ÏFöYP|¹Ã¨7Çfâ2ûüs7æ¡¥Ü1Ú”]ÏLSkvn!·á»¦EÃX“ð÷Ê õäp;VQ¹'~u[DNÀ¢¶EyØ„‘—üƒ ¤K³—¬Ï85›{½péí5× wrñ»‚ÖrS*Ù-™Í¡F¯íeÃf žÉæÇk¯=JÍå¾ä¹¤g Hù%Ì+A®’—ÈÍïä FÇ[\.׃Ò(æ. 7ãLWU}YBär×ä pÜ §y…u鬄x¯¾Š¿Þ²;‡]&k€ß´Õt)ʾ¤1¼$Í–*%äž2ä¤C-·HŽ*•Eö “2ì ËñŸÇ‘·É{m|$yó«3 µ™ ”0ðÓÙvB®j^&Cé(ÊzÌÛ±ÉTwÙgóã˜6»aú«ï‚@tžÌZj¥ÑVº97ámácm±zÓÃÕó»ª9¡yóö+WÙ¨šcWÈ™Ý/žÚ|½àr[cx—ãÄð°:ãbuúÊÑÃ&#¯¢cõPës#‰-ŽÒµ}:EË,l澦Üöf˜å4'wG/>בþxÖŽljF2"–&uæ8Ðà 7›õ[fî‚‘tšµ êoFÃ3öƒ‡‚:‘å‚ VL]¦çcF—[é›±~­ ÛÔŸ ð¢<­Þ:¸ò°svÍ~HõÄóUk]…¦ÄÅÆî{­ÐÒ•ó`RçÆ“ozÝ34ô“<ÈQŽð¦Ú¬¸ÅøÏæø‰}Ë?ÍyÊ<®¨8æ¸ç’ÏM¦òïk§+2éÑûG$iñÞúŒn'ô&¶æÊšöꥣ™ñ­‹rÌó“(<@õ ¼ÓדHQ·žS޾ˆ|V×7“ù˜…z{×ìå"¾çÌI/g@Õ§’̇ùÐéó<ëÖàøU%4*Fjß-qkw—G¡‰«D°Ì¹1 ¯¸ g×ÀO¸³—8;ŠÏ]­"æÆ0±SÂbQ‡“¬‚Óxû«ç½ÁÅkb’U³¹Ž&óÖ—äï®@‰<«öN%;Ãi·×RU4ðZ{·ˆ5Þ>AGf¨Ú\Z8GCõûLÕ}%;»?3‹EéÛ¼Æ u¯½aƽáÈàî¡•Wžpñ=Ab>¶µã=ºñ!²E!†¤O|,J¦R’•h—ý|½T#`mg–2›­)ÒTci)·õ´óÎÕõØ),Ê tYúgä-|"“¬…ç†l2¾5×éR €C+¥ŽÚ°@©º WÌÌÃ\bŠb¥íC¼ô Z娙`téœ—Ž¯æÉ{0XÈÒH“<_"‹é^SO€ÎÀ—Œ–kVBr/‹åßoæ¾jNr&åi7ÙY¤,У™oTê|íÛêÑ&ÜE决Y 5Ç ÖsgõaDÌ]Ü{…Â6”7Ÿìv}·‰²ýIÐ2£€¿”ÿm=â\òeè§£íV ÀR %(Kòž[`¶Mµ}è*­Ä͇dÞ? ¢”¡:ë–*F&¾nf|ï~06ÎÜLo<0ߟý¡Ëöª&£n~eæ,÷Ó½ö Ø£vÜ?©Ø-ö6Þ¤l¸äàâý·ÊÑwy®(63.;`<±)®‘)/ÕÅI‰;ð‰âclÙ¸&\Ï{¾I´.$r,hÚºTX¶‘SÃÜs–Lí•h7'¯`8üdíÛWžk endstream endobj 810 0 obj << /Length1 1422 /Length2 6470 /Length3 0 /Length 7439 /Filter /FlateDecode >> stream xÚtTÔk×/)ˆÒ #ÝÌÐ% Ò’ 0Ä 14HH£€ ÒÝÝ Ý H£‚HHIJÇ7ê9ïùÎ{ïZ÷®Yë?Ïîý{öo?L5u¸¤­á–8 ÁâŠdÕÔ”„@ 7È‹ÇĤ E8BþRã1éC\Ý p˜èÿru…€(òSƒÃÊîŽ$( ¼@ ÈߎpWQ€Øj Pã(Ãa7<&Y¸³·+ÔÖ*ó÷ÀjʼnˆqþH;A\¡V`@ Œ°ƒ8¡*Z:p+(áý¯¬âv„³(§§'7ØÉîj+ÁÆ ð„"ìÚ7ˆ«Äð 0@ìùƒŒ  kuû£×Û <Á®JᵂÀÜPî0kˆ+U £¤ Ðp†Àþ8«þqàüu77è?éþŠþ• û ¶²‚;9ƒaÞP˜-Àêh(¨r#¼œ0Ìú—#ØÑ ŽŠ{€¡Ž`K”ÃïÎÁi-ð/xnV®Pg„·ÔñDž_iP·,³–…;9A`7¼_ýÉA]!V¨k÷æù3YÜæû—`…YÛüaíîÌ£ƒº¸C”äþrA©ðþÑÙB °Ÿ0/â€xYÙñüJ¯ëí ùmýR£øû:Ã6(¨ õ‡çëö€®îßÿmø·„¬¡V€%Ä Ãû';J ±ù#£†ï õQÜ€¿~ÿ9™¢èe ‡9zÿãþ{¾<†22ò ÿÇ&#÷ør\¼@$¡þÿÎòücÿ­ÕCÿê øOB%˜ þÁ€º¼¿qxüE Ö¿V† ðïêp—!Ö¨oZ¡> ÿïøòãý¯,ÿ/êÿwC ¿Í¬¿íÿ‡ìuôþËEewj-Ôà¨å€ý·«äÏ*«A¬¡îNÿmUB€Që! ³EQœ ÄÏ äÿ£‡º)@½ ÖšP„•Ý"ý= T G( ¢ wƒþzqPQ@àÙP[gå€zUÜPûc»¡Vñ{¸¿djÉþ݇<Ì nýky`WW°7Š(Ià B­­5Äë7ß<Ü08@aöØÀ]ñ~ð@éþEc‚H^l€FާBÿS6ÁUFÇö[b_˧$2ŠlÆ“lȸµÔ^ƒm¬€ðŠ!§õWëî9b]öÛÅWiÒŸCji Ó,´FúÖ~ÔT}R>¦»¢Ä ºÓ[η/õîÑNî¡b+¦Â±§„ ·BóDç=~{w–ÎG7æqéìPÞÚHm?zÞ‘à§=æ]ÃÇÖ ÆÅÏ£»m‘Ÿ+'Ïó¢’l·ŸÝèZSHÖú³SFÊ\9|,`’œ¶ áŠÎVS›kξcþŠ´‰GDD;]»îžãMN×±µi0ÁÝÒë¥2y½^êëó Šç6ŸéÒ·Ù/ìOIËÎ_ãgF>·hfuxí&õ÷mœ‘bý÷¢ºˆvßÍ"‰÷nSs…¹"5_NÇ“´X˜ºrÍ^Þ/ª‹d)#^Ãty§KvwJõ§Ìk¦ÐJœè#Ù^›g_®ªx¦9€|ê aÔ£Š°Ñów@h¸_oÑ÷NC!:Mí\Q–=$;dâK]‘ñO;,¾–ògপ÷û*]¢Yôɇ~h›Üç§0zY®ô)š£ŠÔ À ’‰ÖÒf†—6†X—›¤¼¨[ò•któ çdã±Ê¾{ÿ§ºM›zöa+knpΰî:曥½ÛÕ³#‘Š¡8æS-œz²‡Ì7ëã4gW<æH^ ßK¾…À¢ÝáÏ ‘aDÜ,ÝñpáðQü»·&lâ_‰£üŠùå°DùWô/+»=]Ò53ܬº67Óà 2˜ä Kli4ü~øðº~¦ÕšYý(Ómua›<ùä]ü-•Ô7â[3Àí<ÿÚSÊuÞ· èK¥?.œÔB”Ñ„ôÐ=ìh†9ô,Ô—^ĉ?rñ[í;<,ˆ ÚåIŒ !&Ê !}£ry½-Üã=´5G¿Ð§—us—#µÿÍ‚hY[H@¶1©$ÚQšß “˜ø’ÏÂŒ-øõÎ>Ü. /EÔÀc¤vðými5!›}rÖ¤Vëæ««¢)Ϻ·Y!M‘Ñb58s š¤‚ŠÕj8¯œž>3¼ÑòÀ°v¹Ù’5.âH{g`JŸm‰E¥Y©_E)]ó0qýxG³„v)APÓ”Ê<|RßÚœf<мÄT-8ì5|ÿ¸ƒP•»@þ+Ä<[öÝ€«Õ‘ýƒ€³c#Aëjg8ƒÁU7yøöõñloy¶>;ÉÃ43®gŠv¦qç×jÝÖãÌ•ž6ð«uÏj̽Rê5²ë>ž=…ë#¿2Ag…},Þ‘Š÷‡µ†‘è,Sôïû²Ús«h½üÙqEÆàöãMS×·„ü$˜öØôLBD*¤Þk»cz#ã7$ëu¯z×½ONä·ß•F¼®[#Î :ï+l îcœfO±T Xò‡Šñ6û3ÐPPváaÊ’¹“™}´@›ÆÖ¯õ2çúŒµ”älÒ»wû*æ"ôþàÀ´C#áGùªW_¶1 šAc^;ǰsXʦaŽ}$‘d¥•Ìbé×ÌäŸÍ{˜”ûüêž1”­_…ü\^ *~Ü»”“˜FS¹íOC¡XÅ×ûY޶?˜oæ=+ó÷"B§üÂd ¨Ù²_&ç]FŒÎ ¦xø“æóóÊDH`ôN޹”2<ÿ&^Væ5Êo1$ ïËr¬èx£=§~g6‚ê{]·â5y'W>2,©åD?}Ò• º(Ë€Ý V„H›.ûºþRÎ>´L‹™Ú¶ízC¹Xø†_U–ûÀMT¤ÖÜŠŽû¦‚1FY'¥(NÝ.ûëU~Ÿõ|ÿ[Œ¤“CYÎHF’X:º}ʶûã" c=LÔÒkï—ƒ¿„w4.O5T9¬Ie}- GÜÞ㘊)ˆ‰,yÞqDðÍŒ¿…“"yŒ>„!ö¸®ígÞ°®‹R»,#{•0еëÝpÓÃrAÊPý\©Fµ+' ø6í–@²ÆR-óÞ{¨L˧©‘¨ñN†N–Þ·e`érË!@àõÃ[|ÞMBštIƒò¾1Ræ±µYw›ŠÊ,fÖãZí™s“ì\'"Ûä©b´¡EèýZx„žMÁªLöâ_m0'9“gÅhöe‚5Ÿ å?™â—~!ŠäSz–¢G‚9}&¹óô“5…æë{Ë)×ðÀê‹Z³W$Q"g`µ¶†›åØ2â®Õ©Ã-Ž'·uÑâõ à[== ̶þPî¦ø(¿Ei³fy(º¬æõp[ˆ"xɨ/Ï ¸)Ž5®’;ڻì‚#6oº®,ZˆYm¥¦íjx²ÛãD§>¯S†#Úh€-Þ=%E( ¿ˆÝŽšQKμ„²ÈüäkD´dE´Xn¸r`—4Ó±|ÒˆOž½’÷ˆ:¯åÆ“M8›˜îcÿÐäýZOsÙl*õXÑÉu£ç‘LÖ4™“a ki$ š‚{Gåg"#Ú•%Óv¦=\Üï‘úI7Ì6ù4÷«¯ËU’ Q›‘^žŒ*5c<Í|»±¤Äí®]~a‘X1›øn+¯½ŠVå~«ï¬DîÌ,d,â²H¤Wúq}U§Ÿˆ«Æk î‰=t²¢Ñ•]} ¼ö«²™çYQˆu->ÇM ÔÖ÷¸zmv|„µ_~ýdį§ˆ+ÁyÎëéîõf á«tœIœhÛŸ9rÇêBdøÙþgæõX CcþÛ&ézY…²”D#§w¡f÷v¤^r“äϹÍ4ÇíIPÛ<6¥™›U&Êœü(ûàéu¥;eóæ´y̤·llk¹Û<ù7üîÊæÈê %]j"…Ñ@åÝvÈðá÷WÌ\ÕFýÌq&Šê»=ŸÈw=NXRïEן!£ñ—Ú¥ƒç„RsL+¡³D|#ܯá‘Õµo*Ó}¼-‰3t³5‹øÃ ‹ê.4¢õç,5éþ˜G|7X›‡S¬ë« ’™Eºç]›>SÚöÒžgîå`a„úP¥KÖöAAp.ãô/o^¾ÖÑHû A–½%õº¬#º®…zÕ›ˆÖ´«Ð[2‚“Øý‚-ÊLA%(Ð_™ûìƒí¿áÒ¨=á›#†gp?Ÿ¬3µN <#Œ•UBu^ACó:ÌYó³–kl´4e`ÎÁÔEæ9sÞ Òˆòëw & šº&þ,Í}[ý ²>é±ñ=Ö¦Ïdï±iܲs¿ÃpjE‡œÍI’z…L$­È×%Ô=(3î@ï^‰wÒ¨,Á¼L)|p—RÇêílÔ1Õ£!ÿ¹ 5'9½ÄV»©M•›Cßþ.›æ .#‘b»1ùƪí’"ùU÷¾¹Ýû%»*ôƒW‡Iá­Ÿ^ÓÖ‡ÊÖU9Ž—ÁP,f`Û^r]ÒÎýؽJ£¸ƒóÐßI i¹ïœa¿°ëÕhÀ¦©àˆ]ž#3'ÜÐ!äþëÅ~ë;\nßj_[lb™LF³ôÝlï¶=^Q¨žH±©–iœ±™íùTÀʆVS‘B¯õj™ÉrBвׅ#ÞL³APúê;]qÿ2Vˆ¦èSV,lû ŠìÊþ`z í…)óŒ:Á`oóS´cš´|Üm_µ%a:9öjmγU&®’›r"í™/3æãÙš>½Z#kKX.w¦ÔØô€v³ ò­SüjG•ØŒWeÁ!ÓÕíìbb/õ7Òúršöˆp­:éÊX"Ýyá)ð~ÄÛ1\übJù™¦Ð5s«rl혩¼êÄ}Ž _RõèXW½ýÖ‡äÑrNHæù¨¯h«Œà™]¦ÎnxQø‘o˜Z×|åðÛÑÃs?–&ï,'<Ãxoâ[ݼ-Çå¬1(3ÑúÙ?åƒ Í퀳ÞýÜÕò;<÷›¦Å¼sßä\÷L@ú(¨&{3%o¼TÝ;·-W_HoÉ£¸„aS’aå·©Pž0lµ—œϘwˆ’D<5«bÃ^Ñ!"hzÆPT+mÇVµ%þ°Üd†"šjÝ$‡9~!QÇ£ù䆉Z%Ik+j…°žP…sý_äcÛô+2E\¹A ‘·ëІرXbarSåÄÕц7§üòÁùò´þeï‡å€H‚ÑÓÞ#œ‹U ®OPfÇ;ˆGPD,ã\õØMè]jÊ,ò)Îÿõƒjñå ãñUFoÚþŒ…"Žh6Öxl/ ÊÏÕ ÍžëO³mˆ²ÈLD*2.¿•þ"„G-Y6C<ìÙ²ðó2H+ÄaEc@÷<û§%«àx„伕ù˜}öžéb›þ´Ý®ì`Ö+ó~³â—t¢¾£’ù·2z—8³8ÌYÍèwÖ>ŸLÝÜQìqÑã=<çÚD%Yå¶ZïËÕßË¥’]{¯}&ࡲ.Õÿòø¢q㼩¶JÌå aü#BÜuDÜ•“ò(i×þyUמž­‘KkÈÚîFlŒN'MbíÒ¾Á(©¸ÍôT£udW"ÏP%Fu—¾WB¤‚12Vôó~™Ø·€;)‹8…ÕZ÷ ÉÓø§¾ÒŒÔb×fgœ²*½ê\˜Ç'êR Ÿ»Ïד¸{¤91B ïŸÍx£Üäýf£ÛL-ïÜb±âxJ*ö Ô2·æ¡KK´ƒ7Bµ|ÇÒͰŠ0 jž«Hv0Àó(Žò~Jaa?™jô¿‹G.Žžya·bä‡î\œL£2°É©éµàlAœµ'ï—–æýÈAK[¼KtÿZñmÌpÓ‘–hÎà;ZÒûß3?ä¾€VVTD{q8ž\±ÏEl…ž>À/©­âû6Çe w̯ìÏæ½„²ø¨u¥Jîâž;ôšÝÔˆýhažÑóÃSò’’gu¾±©ìŸC»£ ñ«ÓóI“Ö‚‚9—”»‹"4.´kK^5äµ–ó‰>ˆÒPŠ´g,r7ïØ£ëó}˪7r:`pghŠRµøÔ ^ ],q Å£•v¸Uâ§Ø­/R%ß§lv°Òp9{I,L]À̦´°/_šù2ωõI¡1?¿KC€Ë³GîCk@Msž×óÛ’ ôîȦÝÐú¶\1©—µ€Š±é¹õŒ¨ÄHzKAVõ˜[k}fè õׇLìL%¤9œÜkÑ…Ãúñp›“P+n±ÜÎ?£îÑ€Ïy¢+œ™6 3oï²»ÓSªØ &s®^åSG’ ö~ÉÓ’°·9Ö&*øùP·ó‡êÆnoÁA-É”/®]/F},kçzQ ’¢ž—isØÌMõÚ^㫌ÅvBÙw·%©ÿN‹”aY¡¸°|Â&žþXj€]p‘;Ï™„GÈ%p!ŽSáâãúþ͆9e+ó€z ç([ü«­ô§ýeƒ‹Â-æúBÈRò!ûÃñÁ©æ¾s™%—"Òüe×ápmû ©ppÄ>'CªÉáÓò‘9^øÚ§' \åÁÝl¼óO{°7ñM` ¹9§£âæ‹>#¬ÜVbÃß¼½a£OŸÈ¯#[;!AúñÝk†pÛÖ®Ÿ‚|\)½Ä83Ð ­$ š‹XFª‰DfÎÕòÜÒ;2^“µRÞœüch ìì­šF¼w‹WÒSÊÇN¼Wlçt%JŽÏόˉ ‘¾r MÙ¾¤J¹Ç5 jØ÷&{¶yÒþKZÊÍ&Y8ý ?“¯ì¶/Æ‘mo±&etFŒX7KÞ\ƒ[Q]O!y~0ÑÓñæP=E•ƒÇ±‰ø›ÖðN™K»!é,^õ^ªçñĨ™Á¶gÏÕ~±–œ)ej÷s)áç¬ ô7Ï&¯õÒÉ:ߪУO ÈéÞáA“’ݺ>sTà´ß¯0¤Ô²ñ’ýÖúÆPôÞQÓGÇÀ7ƒ-.Ãó7;°¬H<ê­öÆð¡¸uGÙøŽ #as£•qoLr²Ð?Ü 4òÆ&£ìïó_ó¶½ïi\õê“`Œ[N–€vç1MEüs.ñî…ñžO•ÄéJ“”å䵎 ß”ó‘TMÄÑ’»ÿìEÄ{µÍ•ð³sá^š^z‡[YÕ©X¼s—ô…ãÈÌØG㎤ i[Ù8"äH™@5û6à÷[|“e •'Û0yªæ Ým·Bãºz’Ñ…Œ4¸ÕêKÓIûn¹ïÃÄîø÷x5´BÆÀTÇöV:ÉÖ …µçpcÓ]úÎýmÿøº îר¢Û¡{ì»ä¤uÞ@üíÿÉÛ»wnŠäL9Q‘­ß–“ÌäEwÕœ u„húÑÐô˜ËiHÖ R1wëìVϺl^ÄEž·=”rê­q‡WvD‚¸ +l×"¤ö37¾:h)Nª“è·îh]t¼ëY £¯©5–)û;Ó:ô?hÙæà É£€nê¬vèØ_H‰Ì¤˜|¶%=ZLRŽ¸Ø“˜¡x+Aö ÿr,—¼7WU7#å3‡•ê2Åûaî¼êebÇT’ˆ¯þ©C'¯×ÉP}4µÀ}ÙÇŸwgf—xñòebÈ<µ¯Jn(:™/+8+˜¶˜vè¿K«þP«ŠsÚÄ7Hñ}#|ÞÉ–ZÁ¨'Iâ³?k7kØŠïû±íµ©&×®CSsº$Ñ»´w:?vƒÆéCÛùïàÜÓQÇoÒÒrϨ¼·¼§í‚æöêO+àLm°ˆëdD¨ïO+ÿm“'Kùë ÿÑ-|¸ÅÈkjöu ù–tÙQ¦¹f~•€Ëñ2sœê^c#²³s\²ã(~}šùîA±`Ä!¼Î%%¨"f=/#È&8íixMjæ‘ÞÕüˆŸáÃÃã˜(Ëù^³âh}ÏN„°<¤yÂÂ`pΦ(Et’ú±kvÌ*ˆçNm¹Ï&Ç·p1`Ê|Ïa¨#®×bIÒ…Ít5ÀÖ¨0ÝÜÔ·zƒ×çb»(gîÙÖº—\{óჾÔ/¥FÕlÇJÊ…‚YýW+ÉâeøZ<¬[…ôï¿ÒÛP½Ó’Ð}µP°<œT,e4ÏHHuçñþ)ä…{QøM7O]q'rÞ–H¡ ÂÖã¾Á”™Å3và1R…êýÏq R¡v9;'>ñÅì[24W‹¬ÕN3ˆM‹ÏKCï,»Ýóò·º¸ßŒç_ƒ1ÐÐÒi©ÁÍVof¼ a®4¶glŸàsõýf¼¼^ƒxÓpŠQÜuO{ëã}½í€ÀU®H=ELté§óTƒìA$YÐ&W³–Á;¢Gc›Dc3Z„c?"½µŸšÊçœÇLïTYs¸æ›u*Žè°CTë7ÐÚéÞÃÔ #©›h˜ ¨§ã¹U(]¿Ökm4›N0däËg “f†ö×ÿhttƬñzJloPœ 7Û üáœ1­VŠs}Lþ|è¼H¿?C¤ÝXD'º|Z¬‚[D”¥ž¸òåT`ÄIP×ÐÙ6x‚“ÿŠ©‘˜IÃý¥m{Ávz¨ÏË_5þ6@jÑp¦u¼D’öÂØ ¦þÄÇ930aæ´°_·Âã®oưu÷N6s„Ë«:”£;ª ÂöËÜÿœD6C†cÄCp•iܲ #d5²¢î½>ëÿ;èk[ endstream endobj 812 0 obj << /Length1 2894 /Length2 24747 /Length3 0 /Length 26360 /Filter /FlateDecode >> stream xÚŒ÷P]YÓ ãÁÝõàÜ5¸»»ÃÁ‚»w'8 ‡`ÁÝ4¸»»;Ü“™y'™ïÿ«î-ª`?ݽºŸ¶µ7”¤Jª Âfö&@ {;Ff^€¨¼ 3€™™‘™™ž’RÍÊÅøžRèäleoÇû‡¨ÐØ$3vÙÉÛÛd\m,lN^.^ff+33Ïÿ íxbÆnVfyF€Œ½ÐžRÔÞÁÓÉÊÂÒæSZ ý_Ƕ@'+Sc;€¼±‹%ÐÑÔØ jojtñü ~K^&&wwwFc[gF{' Zz€»•‹%@è trš~% P0¶þ#<%@ÍÒÊùo¹ª½¹‹»±ØX™íœA'\íÌ€NPp€ª´@Ñh÷·±Üßô€j`adù×Ý?§9²²ûë°±©©½­ƒ±§•ÀÜÊP”ctñp¡Û™ý24¶q¶7v3¶²16üÅÜ !¬ 0%øOzΦNV.ÎŒÎV6¿RdúåTeq;3Q{[[ ‹3ü/~bVN@SPÙ=™þîì{;{w;•™ù¯$Ì\˜Ôí¬]Òbÿ˜€Dð¿e@333èz˜Z2ýr¯æéüKÉòK ÊÀ×ÛÁÞ`Jèkeý÷v6v\œ\¾Þ*þ‹àYXfV¦. …•üoï 1Ðüo j¾“•@—4{,æ_?ÿ>éƒÆËÌÞÎÆó·ù_ýeWSR¦û;ãu""öovf+3€å×q|ÿëæßü/ù¿¤JÆVÿûã´¹=€çï@Åû_nÿŒÍ?+C øo{Ð,4¿G_™ƒÙô‹åÿóüuäÿßÜÿòòÿ6úÿ—„«Í_jš¿ôÿ?jc[+Ï @£ìêZ y{ÐrØý_SMàß«,4³rµý¿ZicÐzÛYØü[F+g + ™’•‹©åß3ô¿.€ÜÛXÙ•ì­~]6PÃþ´p¦ïAŠ3¨W©€ }úoHq;S{³_‹ÇÊÁ 0vr2ö„µ„8Þ,  5zü5Ú&F;{Ð(=_€¹½ü¯Žrr˜„‰þFœ&‘߈ À$úq˜Ä~#Ðþ‹¸˜L¿ €Iò7b0IýFl&é߈À$ó¸ÈþF .r¿ˆ‹üoâ¢ð¸(þ‹¸A\”~#åßÄEå7qQý@\Ô~#õßÄEã7qÑü@\´~#툋Îo:gü/bY›‚Fí_ È“±­h¹~]›ÿ“²ƒ8;ƒ&ÒÊùýoW S“ß”¤‰“±é{ èÅfîò[Îö¯üï5üWŠmú27µr2uµ5·MËÿÄ ¦ö6 Éü—Ê/CÐMüG ‘eúÍ•…”¢™Ð è ºõøýN4§LÀÿÐaa9Úš;[þ!‘ûŸ2Î_~]A—Ä¿%ûeäajclûG4PÁÌCÐó? û/hõGþ 9Ø~A·ßdY~ ~ÇãøenïêôG4Åoª™…“ñŸ˜A§Àš+KOK Ý ÙŒ˜Aõ±þ‚JúþŠ`óuòÜA¯¦ßž9@Gí@×ÈzP5ì“¶ÿ”žÃo5È™è›Áî?CÅÎòô¿#ÅŠ]зÁ¦œɬìÿ˜fP¹l\ÿŽ_vüÝâ_Èèü×øï€²þÚ»ÍLlþÃ…ý·âÿÐáùGó_1˯þÿÑ=PésárÚZýwê9~ÙÝþèȉ³ÕïMaåîlóŸée¥þ;,è½Çäbéüc @µuq·ÿãȇëÔf·? ˆ™ûC :íñ¹÷ü‚Êåõ›È“ÐéïPÿyw˜º:Úèò×Û´iÿÃ}Á@Søù{S¾`ëšàÖ»¯Âî Û£ï&)·5Óh¼çÚ\ß$ÓVe®:Ý'u£.mŠÓ\ -<{6Õ½ kNRnyôy2LP™ØnŸÇî+8®í#‚#dPÚñyvôÑxÙÞ!C™ëèʬ”qçÞ+éQÛWº8:³­¼SÅ)‹ðTú“!F=Z/ hŠ2Ï${— Æ…ö-ú™ÊÔõÍ$zÎØ+‰L¼ïQ [¡·Îkìý´×r¹«s'ž.ä5úð•·È^Š Î¬wqáRÿœG!I}ê*ãkf••J”]COµÛð|;ËVn2 ˜š c+©º¤ÓЉL«ªÅ0 Ã¥ší=h¯Ý\d¹õF£ËÜ:•pçgí+` IÛòп±Ëû±Îqyè{?ÃmhjóÝPÃ÷Í._Í"Á>AB w–·â–º‘K‹¼™D©Ð¥.#š@iLTú·dî'hã~ïÀs‘|–ffnèðaÂŽ\ŸóXߊú3…öµ)´Ywtý × N…W“ŽÔ³³~"€—céÖý”vµYø–4Ú°é¯ü-û¶§u ÷sY+C–g+¹Á«ûþ°õõ_¿f á ^r¥b#çBë&·_r{(ñ³³L]¾s»“[@AâãLojôu’ueÙg{ÌPƒ¶ÊÀ®“r©¨™˜ô½ñÄ%žyñ3%¦Ô[u<õ×knÞaWdw#ÕÍ4¼•nÎÿzZ[õ„Õ¿c…ϼJTv!/s/Ÿ£Í\>çæÍ¹ŠûqFï®á”ã8”AƆ÷îòc¶ÚOmYÆ%Y܃!Ú.zÉï²ÞÆá¢:"’ŸÚà‰‰<i#e©C{X™'5R+9¥•((l÷Ê’pÖt;q§€#CQwø°x²Ã³T¬”Mª¼Âne†ñÒé]íýäËY{q½V\Ósæ8ßf´¼ý‚Ô×T6ñÊÓ1Z¼*ØûYö#¶)-î±Ûu½3‹— *Á’ÍØ±Þ«G;µC÷¶¤VŠ\3=ÑÆÌ‚ÑÅ›™1¡BMV’=nGR9³Ÿ•›ö‡~[,Lу"¯ŽI™»´óì½î)ŽïÇoü){+:&†°Ü×WÖYõíK{V•†Ï‚Ò–?P\÷òDlO$`pxëYaçRÌ`K=9o;VDHÅÁ¸rvªîT% ‡“_«>IzÝóྤNÜ¢~n•~²Tx¨›ñÞRD §±@ʹ™NÛbA[Õé¤$“?:°íjМ­À-¨°]2¡džOƒ~û`”qø¦7/i5‰Éüº'Û¦RIœ5—XC˜VUDŽi‡¿û„£Tô“ðçÕÛl¾Jï4äÍsZÐv0‰d°Q`i`ÁÜÞ*sö‰h]½j84[†šg&Â/d}ìå 1f&S5ÑV_Ú<·ä÷^9ýËr« Ún]>‘À )²æ1eƒIœ“|üÆæILž¾iŠ"/?;.Ù§ó¼¬ i[þÚì5-ñݦô¾Œ¬[F 5§!§)B軫Aµ¤:¸h…GŸw°Rtª‚ŽÝˆ]ØÖ"3YÚ¦”͸×&5áïqõ×PwTK# gàòJ9· IMéõÚ-(÷ø>Ñáe?ÈéƒeÒCc’+öy|p´7>ì-Pùv&ÞPȇ“ _jUÉØm O}ËðkÎf¿N ñÛÒ­ôª8yºÿP>ïåÒa¸€ e6ì= ¾¹¼Ö‘ðId$ôJEFÅOkVô­ÜÜe3ÄAG=¡!9ïôÞ­ ‘I¬=ÈJÜ©å™<¦%´kÄÚÐØXTve/˜ü¬ˆY&mÜ+N™þ¡·þ|ô̮óuØPƳá¨QØX4\Ht6xœïl›i‡ì•Ðû¦âónï ¡Ü'/<ýX´³R'„ÈÂüÒ 7±ö(yI. i9«ª$á9 ‚u;NOð0¸8 Åú ~Y¸íC¥‘ÅXaaÜïn¡IV~ÚäSíÖßioÏÖQÏ‚i.ŒoQuæ3È^ð°2˜¬à¬æºÂ™|Âï…çèõ–*œÎa‡÷d¼ÐÍõhÚXvav­(ÍFtcÔeÿ¬:Çjâþ‘ÎàRRp¢Äǵ$®YFè#K'%öÛ*ã£ãrÐ+p÷ÀC×Þ„7Xæ¯YÚKÂB'Ì1\jJ‘¬¿]?Û÷§!F´iÀ˜8a1Zâve¼t¥;Ùœ'{¸à;£ÿà5T7A oßRµšë9Èœæˆ63ˆ‡®É"á1v2µ—º °x±Mˆ©÷Ðð¼®_@›È&Ó'÷òÃM-rp»èBÊ& MH¿™ë+ftበÀ²kÔ­eyèu)5"¿-æ¯6%ûs¤ëT˜ù4¨}݇q¬íôm­ž#D,ŒºÓSz¸‚•WÏ?º|‰>›” êœF‘Ц®©×QE‘ž_s¡ü¼õš’Õ©[LËÕKÕþ”k9j—X·¯M=µhÜýM­çœZËéÃÔj:“¡]2¤Œ\6,MŠ|Ínîñ øŠz"oY‰úÕÅ3ƒ÷™&+Ýv~ØÇFrUŸõa ÔóÀ›ú¼ŸÂÑÝ6NåV—šwòÙ“®XÒ(>`8Ù ¿ž8'cv÷_^Øé¬B¾MoyWrûÝùúÌ>ÓDÈ;Ás–TT”$ÊÇ–QóƒÎ·£Sâf;„5‡ g¥43 † ½›ªÑ©L*9~‡(ôF DŸ&¿Ì:î½ơޔotæ£^žÅnA$ë†5"^•ßÃrB¯XݦZaa .[¯gÃz´À?“rãMØÂ§,†áZ¸Ï“¾‡½ãÚ–€ÓòTÕ÷;ÉH¯¸·±™Ù/O‚#IÉv#e¾ßkˆ”øˆ¸¼úpR"¾j¬h~§äÁî/’‹åsðFó©ŽoQ’xUƒŒMäŠcþòiçn]Jl²LæŽ%e4ýØ”CᎧÔA€•K¦Eäù²Þ™ ò$ò›ÍU‰–2=²‹€nå÷H’¤s_c/‰ >'&Uøƒ­g%­U=^¤Ûоu÷fq”\¯Šˆ‘Šˆ±MÇ¡G­aî¬v6o ‡|QÔêÎÉ"æiäŒØ– ”z‚ÅLÖ!k}óy¤¾+FOŨ4 ýK·f”µš(`¤V‹vQ†]¤ *Zá> N3Îkž ÍÙa•9¥ ^Ù-tÃ"µ+>mº+@3È!Ù¥D¥ B®`†,Z`&Öû}Âîã‹1"þ:~\,+¶rÆ ìýÖµDR•Ð/ðqϦCÙ!!¿,ÿÃ$mgè·ìûú ¦¾7ªxÔˆM×¼[.P2ÕÖB˜eµAâ4Ì’ßùF›±•!bK>¾W£n:û„Ê÷‰?Þ‘ÀnnË5ÀÅFN”%I«À1‚Ÿ ï˜0Ûëø³0@p+jÜ‹ET•®“ð³K1pB•u­L&E~á{p² Íùd=,q3pHy›ÉÖAC– \óéCÛ³8·b)•R±¦Ó4YÅî£îÛÑ×»ÛsU ƒ©˜ ý‘¢|tvO:. ;¥½]<™ƒ'K¹gZ(^ÕxDü˜ùNd~XZŸÀ_†å@~9ÙŒf‰<¬«*gYªÍ°è§êôâiÌWÒ–,™ç#æŠ!Ô‡*™ÀÑÃŽ âðO\^ Á‡¿ËJ@Èî j“²ËGÝtÆr ôXJßaìXŸ©ªÊ{ŸZ¹`ÓËG•REο»ñõOk>±%á•iÔ0Ð ˜¿)m &¤*E•Âÿ Ýšxt³ãÆÈ–$ÔÛÔ¨.eë»4®&õôlÝä=Ÿ¤ÃüdJúÙã :%ÐdLþe&bÉÜ—m5%óðÇ—M2É’´Š]jsyç‰7S$ZšêϾO7õ Ú½õ1þS³”Ö#¤Rí§QŠR¯°C#±$†÷ߢøöÂjF/>$lÈ4ºå!×è/‘ÃSÌ¿)EY¤µ àHçVÅ}&j9þñµë\(©7.ø¼ÎŸ3]øƒidè¾½&x<ÍEŒXCù¢Ñ츶·õ¢› „Q¥Q3µ´Mîó‡µjÒíº§¼ëI¥îïGÞóaÄ«ÒNß:ï ÌY*¾‡4Ên8ÉÜt¸{@¬àvõ\¢pºHY¾Lv…7÷5uì¡ãèòô#}^ÖŸÎ~ ¸ëÛýzƒoU’®†’™oîêçY¾<¢¸0EO!¼¬Å oœÁ¯±GT³TØ…>Š ø:ÀÐ혗ZðXR=÷ë ÊßÍül’”½áã(ƒ)p8lÚ’vr<.f3\ÕF³r-÷ï^Þê¹h›8=ú‰®í„ºO$v}ó`FüF¥r$삆xÈPOI»Ñl\Z0Ôl¹1Æ£;Uäú «º‹Ë#›ˆŒÖ«&[b¬E±ån1”ôM1HwÂ#ŠÀq è³'”4MÊk«5*‡\Q©t§i½¯%q'E‚—؆úXw¼{‹v ]Ûs¹ïèénïXA_KÇE½Í‡y`'Á¸‘ë¾Tù ÖÌRø^]F¿Á'Á Ó'ωG#ã³<ô/ƒH‘ºU£‘¨F?Û‡Å?}îvÇï‚>2&&@ÌóÚ±º3ÆA÷µþþuwHèñsä¶oß”SÍoÐoÒ·íœcÓ˜íÞ"{#WÙê”x]F%GhÜå>&q`› üüy*k$0ª+¦ì6JÉ?Yîr.lvûÑÒo ÷ñ6kæYùûz±‚‰yÝbkûJð'{2¸˜ù"u¸V¯‰K‹‹ã­Øx×:‰Ü‰tþ ­ÏåÆÒòqˆ‡·­ƒ7¯ì‚Z¬úÝñìÅR#ù™³]ãŽr@ûš¬4õãK?ÄÛÂÄÄq.#Úþ‚Ët)»øOÍÅÂ\dûÞb¡*üL¬.Ïò}W÷ÎÛ_üßóHk]%š.Éš€Üx{~¤Ã˜ÿ¢%~T”‚:Èx°NÚ9ÞCöVfQ• ¹sA›¸ –púÔz‰ˆêç¼ðž "]ÙNxGS ,úú»ë…¼m N·U|5m´òEÜJ¹ÔWöÑ¢“]ÁL°1ꛣ۞û8f’r3ôt»ØÎXå’/kL%Žu=PC7à–Ñ}(å÷÷:Äå^Áb%.Bˆl·@ôŒÌœ=ù9!kZ~MK£-ùÖp×Ùü¡W¿uàÚ±†˜Ì´Ojs³ŠïD‘¨Sä N¿Ú ðà‚9î3DÚçÄJ¾|Бd“­²7“ä£ j¹ È·z»øÏ·SIDø|ép>*1½Þ@$)×)ÎWå¾çñ4êle¶A>òÆX¶KÕaÞRk´ãEÊF™„7Lßó_O²ˆœ4Vºñ<ô¿6Á´ ÐnœætÕëûÛdßCrØ·£êîæKð¡Ò+PScX•DêU+(wI_HM\“t ªñ ÍIœâì*¼"¼QÕêZf®æ/§m±\Óœ hc7o’k°Œ[dœ«Uƒ 5P…ž` ±s÷}¦G×QhÇ¿ªºEÐFˆQÖ{uOÝœ±µþÔƒÿ6çrüò¢½Îa‡#ág˜éÑ©þÉ'ŠZ+±~ ,XRE}•SA$=xwéFà‰wHÃðbH`ú Ï[if_ìÉz=2ï9,ØS6õ¯þó!×-‰,sÈáù‚k¥Õâï´âñáÜ(Oê…Yî´•g‘?°§x×Ì¬É ›ª–°Â-ß8 fµ:Û#14 %ÂËBJrÅm’Uø(‡Aì”>lt.¼œ}B}?÷ÊMשbDòú›—NÛ¶u ³ÆÍœ©"°ö¾ÃK˜Ñ­5k˜Kz’ÉÒ[ªÅ&® ¼À6=ZÀõºGñùáÒnÍ2ÑŸ)¼ëô‰UÙ9Qù‚7,ãÖM/KâwQ2–¬±ŸŸö”©\§»´Â¯Þ¥ÅK¸°(hJwC¹V w¬Ð²$¢ÊÁzÔU Sú‰¬g¦7«ÖbOm¿uyËÀ¤D³f‘¦æ- Ú¦ün+2:i3ÄSÔ©¢GÛ«¿0” Ç)•OØLZ”Àˆ)<ÀžÁÎé¥÷Ãæeø92K–ÿíH€,Þì²f¡ê¶RÔH¥p©$uP/vïÒNíøÏañSÖ¹q)%®.œ*âcí-Í!†‰!tqù„YýŒA‘ˆ t0ýsVJ~å¦ ¿HKƒuâÍýᣯ>/ x›}qpŸ&³z°: ±‡åqJQ÷¶óúáË©ªùNÉpó; ¢^ Ъ¬æ \¨ ¢[y«h_ð¬©ÈYÊhÖ¿^/Dº;›º'l€_‰³+‹P¹$ÚÀGé²4<Ò½£Jרم¤Ûˆ‘@:D|?*%Bn2É Oâ'y Î[J<˜¥úS¢«ójËÌþîÞ²OlÎ\´AŠMÙnc~Ø‹~ÙR[” î[_˜UŽÏËË%p¿Îe5(‚œ!м2|¸*|£tF$Æð$K¦%)@t(%š‚PÊú4ÿì¤~zxâer¡&… JmSȺ±€ÁÈF9Z‰[³ƒFxÀ-º! B§öíp[[ýÖÔ¯'•ý»¢Ú@¨‰‚l–—+ŠyÍz*w4šÀ†¡è„ÖE0d™†kÏv!Ù|;úŽì\ª%¯)€ìpsÒíÍ}LÉÈÖ²ˆˆÃ™sŒÀa“9bR²ÚXvÇpJ=–žkÚÌ,æ„ñ:k/ª:D¸ï€{pÊD*RF‚þÛ¸/VöÓÛ›9vŠsÖE‰j˜²Cwþ9£â5.Zäò2ÞyDæ\LéñËÓ9 ó¦´ªeŽöÓ5½½c—?wHß[©–â>¿`nÔ°id¾bÍhCDmº‰ïð˜îsy¬>‚¾lOw=QWë|?õ6Û¢Ûz+v©f–ìÎêmlí.ˆTøSÇ{mÏÃ7ÝøàÂ!7Ç—?ð¸Ì~d6IL|±¿½ôc Ñmx9Þ,¸‚sHµ ¬P߈¶”ýÀÇž¦R°ï'§/h•Zù"Éåà¢ë.–^]‰ÿÃ/Ž6È|YšÀ¾Ú£¦ñ®¸rìz “xèýbÃ-úhRùFìFÇîWýÛ&e„×|#ójJ—êE,íº„La{'XÁa“+DÂì)à6»ùó©Œ tݦQ¦iþÛUMùíð¹ +©ˆì‹aYÎá8ìuF”<õGfíl%ÝK™u±·+Ù²DsňŠ;ƒwócîf[LF.î¦Ê*Š,;çÚ•rUv+3'ùîš³´}Þ'yQÓ}3ó×±nïo¦Øý5Ü’…å?¡€-!Æõ‘nÍ&ÛC…ˆr3Qù8ìqCiBlmU/ IÎ'Òc3ŸÊúMSË#ˆ)ŸD)ã²3M¡§-€ 5Û‹ÿÐÁ¸z~«‹JT;ô\ïútø#¤ Âf× Jmn¡Š`ôÌÖ-6£àæ€ß@m~Ï¢†zl[œ'½túâA +F²bž-,1V@l‚Î7“¸Ü™Î­8"-ÞVÝU¡ÛÑ“Õ.îí¼`òˆ‘%loïkz¹Í&3ƒðÃ?Úø¤r DܼE¨Œ'æÀ§š ÏF¿EìWŽvS ãá÷è(|ÂLñ9¯Ëña¦×&£C;ŽS¾©'®Wn[M#65K¾Ô[ŽXÀ¾_àÀMNÒŸÙîEº»í È|dk¡81#pM`Š{Öø“žžbø2©Uu6ßÀD$.Ì4ηòÁ-x™ïªimÀùø¹KÊ{JÝ9Xê=AVjkŸëÔß¼dJ#ÝP³Žj3ýÌÉòô{2»´x%e´‰.Àid3òâeY wÒ½1‰`+C›Ï°ÜHY€Ï *À¼ÝÚ9N^º]þ†ã(}ÖOAŸíB¿! /ýˆ7˜cÛÈ?_Ç-£=,Œx ú®„²ÈV]A-ò¿ïÁ=ÕÄOÁ¿Ý]A舽ò»ßèXv.Šáþôµxi—âÛë·'hD3ª5å5±+”ŸcgcÚ6ÝxøäT3RÁ(Œ?¬`Ëžölú¿¯7,M"uÅÍævæàíw2·Ó–÷f¨  ÚÚŠ>Ò„âEÜxçá™lþðˆÔ=Wpblj˜UÝåp¼|$l¹Œ·EvØCbȉO‹h1d…‘Ùñ·¬¦)!kB_{×VÅjÆîjÖî™—û À^Æ]_Û6TÍ §r{¶"K“Ǹösläj[=å=¼ /qçÁaã)ñÂÝb5E€úÍø©;±ÍD'£D&²ŸÙÏPªþ9—’^_ êê |B— ƒkÒ pÜCŸßÜ 3<×4mÑH¦©%”F%\\TqîT¼¥ÌPÍY÷ÝÇJƒHš®íº*ÆFŒj×=¤“¨Ãv%ØAK^íÑX'æ‡w ç»3!¶q ébÂ+äíA“g/þᆼPnëñ<ƒÜ§Ý«ìW¦œË‹x<´wqz£Ù(ñô p†vgñNDýøÓKgf',£™©½ûUîh­^´cŽJ˜£Fr?¦¿¨üL9í pqÓ ä¨¶™ËÞ:‘5LŒ–Wëw“]÷K?¤lÝ î¬a:®¬™¸Í2_QÊw”:‡Ñ·)íY7gø©#×É|!Ñ_ýºy×;vï”>!^϶¶äÀœDá§H§çÀ§“Ú)8ôž(*ºWU +õÛ'W*ßn –²IxN@»2§ù¥ý×3Åñ ¸’Oü-„ Ñn½¢_ôðÃbQƒT•Ï·,еÈÜx9" ©¸¨7…DÛWÚÛ8òÙ¢ç¦{ó¸:™ßœÏž™ §1ús“zçÜÑ“"ÊĺN>7œpBžsIåçl(uèq1Áëý2 ;e¨x¹oÂ?¸;8ë Ï5äz=×;‰ô¬Óm0cCÝc‚ú³+·¶TÏÚe–´±v¬!Æ‹F»’xkw…ï¦dÈ`3cU³¡ýžj仩9¦¾š ºµùky"˜ ôº³’¢cíÞ/CkLíÁ|KÜçeåß¿¼>³º±éITìh™ZÒþ’¥ËÄÙpî[‚¯ ÖFN²&¾ÔÍ$Ï5{K–&ŸðTl2º`ÉÊF³mñȵw‹˜jAŸ~þL_ßž&°™x¼ÇºØUj+ì÷ÒE´¥¨ÿê72Zä~D*™ØÙÚ 7Û‡•Vª¬@yxÐA^Ô™ËÏJõ$"ŒHÌlݲ˜ò·Zׄ%´z/{¦šÆç]¨Ø"WÄuá÷ýìËÛó9Í”èÆTõ–g³#6¿Å¯F6YRw%¹QXÞ>êoU,‡~Z"aB]÷äðýMma[lj&‡ïã ;ZJmZ-U„¢dCG9²èß%ñO!HB8éôÄþU3_Þ€5îfEÙÛZ-•2Ãrë¤ À×$‘!½§¿8føÉ ;ìw¨C•Ú@÷þ“€"ºmn\eÍ+ÊòuZèÙo–Ò~ RÞ–-ã´¬(VÈÙ™©ê Ibý±7cp·23UÒt¿×Mstœà¥ X: €v–¹Ý´ŸÇªŠp!“q-}%Џ“,«¨³9õ¯¹R=dùÍiUS'Y¦yù2…JÂ|I1ß+±#U‹¨ðð'E(UßÙŽsˆþþ“b´8Î$Q†Ã™½Xö£*C;iê–êçgÌsä`AA5¬5¹f‹Ÿ‡j¯>_•t?ÕwWÏÐàO6åhç (ŸŽ‚Ÿpù´ÈwÎþÀÚXýy#“Mâ?ôy x½\ß~ˆµü]^$ÌG2ª~¨É+€[ª}-Ê…RN¡¦ºLsÔÐaT?‹~±ðܪy½øuÉ€ƒê«•õ­A©—¦F:e»U4±kR2àË m†â<Ù¦îkô»[Ê‹7Dꢗ¸ÇE‹ŸÄÓÛÎã‘Qµ=Ù4tž£è$ª7>tÅeúñï;ÌŸ­+L>ÞöcÒA7*£(¹Ÿº ±‘_c«Üç\Ä~ ‡šl×k"qÍGÿ"6ó”p)¶K˜Âr µ>Õ¦«ÔC¢\Šk,W|cIúql£DÉTi .q6Î}àÌáôœuú*V?ÅÙ<¨‡]Õé´ád²  ¥9A52 ÷äß°s Ù]M ë€tÎuì±§6cؼRx¯Å1µÏåhLH• ãÒ|ª •2@ˆjÝ›c:«ŠÍ1šóä¥3Ŷ6Yg&wËGG3àåœÌ)Ó.ͰÄÞ½ÂhùÐyOí¡(ϳR¼ºDàvž76<û0c»‹"­õXñ¤t><»%Ƴ~65Dªù€- r 0ÏMf£c&ìÍ·¡Â:–¹×˜€ÍÍ—6È%?¥]Ï÷òÁ5ÉWÇ2f«½8gNŸŒ6ܼVJˆiç¥V´B¢§éŒĘ 2œŸ÷÷ ?8ó!ô¼}£Ä oUKwEž]kSví;1Th⃤ŦªC¨¦}DÈ_ŒÈ»Šã´WöaòV]2e¯ÂÆÞ¹lì)ó:oAß]sHKÊý|˜–¯9; ¢§íznŸ0°ŒyVú"‹=ÞÆ“=-a؉ÊèÛu„ÖnÂѨ@s}¡Ë#m “³Ú‘ðM¯pÈÓº‰e!35•g§îÚþÄIýÕÈïPÿ v@4¯[wÊÚšë-]gn¸¥ØHÇ×°ír!ûîB#xÇ »õóSyË:7)äŸS¤aG;Â/¨ ½ìÓ;nÉLéio —òCE#N¯%ðûÕPZëÆ¢øM4)FdÚh…kŸ¦óÔ‚懛‡‰¿ì¯‡ŸzÉ3T”t§4 ˜Á éÐg5 †édÈ ÐÒÛzd¸›.%¶GíÊðcôñ+ ‘ƒ–ßöcAÞäÇÌâO3ÄÏT‹æªû™‘M`ÐQMyÝ­`œMä)ðøÀ @!aÆÛ&TO¨èÄ öñJÞè* `Î|Í}Ù÷Jåt²ùîÛ!Jy¤½ÞžÞùiuýpêºÙ~™`|# ‘±ä»ÿR¯²?: ßfÔÐï»,ãˆísŠè[áÎâwK·`–,ÅÎS”»Ê"mq#8+žÕH™z Ýdà[vc圙=׳ H=^½EoîÃ÷ú?·h¤ðw¯½b'¦BÈž²ýî{IÕ\ê5%‰úó$£¬6o\b¸š^:X¸Ò,”Êš¾7kòRX¡†—ÒÌçBC£-wÙ^~êy™´Û²Á[¾„bŒÁÆ«£¿×ËècN:æŸÈ«[løæ\Ö$F¯ùb•5ö½ÝZùÉÇgÜiœiŸc ?Õì:œóEÄÓx¶X±ïÅBÆ„}=.OýÉR R^j}‹»TŽ`fèÚÙþ™m˜¥Ã¹ØM0Ü¥–d]Ë?^d'+ÀÅeóúañç»  Ä„»?ꢜâ1׋ø»`÷:ÅÊÍ©vè÷m0îòÚù4o¿¿¡´ˆ~·»üœˆ1VòžñÆî® ýÊr˯ú¡òÛË-î.¡º­Ì9G\ZoÌ âWø $­ ê~ÀöP—…%‚*QÙ‡ØÐl‰ÝH †6ƒnL/\Lð¯#Ó•ôOU¼ˆŸbpjùs(X9®> _±Á›JÌ8¹ø$ ‚‹l0D• 1´B°a³Èùó9¹;>³™»Ë]íE¼jчøâˆ«¥ ®òTûÙ'˜ýDVzyx€šCö©‘éÕì¾.l«¥Ögüü ÍÀdÒ ¾ñAv‰ZšÛqÊyÖâBMIdÀ£j‘yŠ‹Ì 6ïIO‘€è†Ä¾!vpk«I uNB1ïhƦ2A…@GS4(Y~ ‹¼h™Ixé‚>½E¥÷KãïîH¡9Å™ \¨!*ïÃ…Ã'T¥-f<™ŒB|ýIñf²—JL9¼²ú|)Þ“÷aLƒÉßÉf†/Ô1˜ ¸SX° pl-dÏ£’}?FÃC œx@Èg‘ö|ÿ!‘.†ì“ð4sÖ•9Tv@Ïh>’#ßbK'­asMt0„\¦¸èûa×<<Ÿ‡V[>Ú=u°†*êbg .F5™©ƒ¼ý¸oÃAImGSA•-_(‘£lÏ…ZÑkƒŸò¬•o‰*¿@Þ4®"“ºE ÖäÝO¸`“ÌJ<,õZ%ˆãF´Žã·¶?ó?ÁòkY¿1ª"]í¿r?g§ðdš`•ûí#Ûk™`£Šš3¯ÒÛ{ˆ?uBJ¾Èw #Ýõïië-XÞG) ù{m× oáâ 5Ó“nz;]vÁ¢ °Ï*‡j®”…% :qG•м£—“¥DÁ_}mËW³ÎµF³²=âÙÅ\J§LW—¯“ðm¹Ÿ ÖÔèWïÖkFŽÄVûfÈèG§ÐÅ…ƒ)½†¾QM&-Ih|Y¥3’lŸ#à$ ñ…ä¯Ä0{•åîÔrISôÃsóJ}ü@6¼{n ÞÚ¨î’Ã_Å£-¦G»ñ~a4K÷±…T€$ ’ý’„Jš&»+Ié IB¨‚. ÀûÝi qd­›ìðŠ$yœúv kÎÎQŪ,NûÅYÓ[6b¦Xð~Åâí9!ÀÛë !ô뺡Ç{+t_¶æÝã=9y~:Z]žè™W*ª¼¤úˆ±¥Ì„y“Ý)Y!¥½ÁÐÚ2šJY†6âÁËÁB±GRÌܵªSJçáXQ†Úâ$õÐr«Ëj5ÄÅî, ½ƒÛ¦?iØñOxÚ¾Û:#~¦•Ë6 ~_jõùf²JŸÎ˜F&áζ`=NÄïÚÖD'ö,Ÿ­¦†(”‚Òéìת9 óÄ&‰ª&é:ù<È#ËöJDŽƒ° <³eʤ¼á"ûd¬¶ö@±Ø'Ü4'üÔáf¢(óþ`†AÎðQiQóvQuÚsݼa?µx0Íç1Ù&ýÑ8'»îέ}ͧV¦èZ¥ŒN2[zl’8]‚Ï­m‹Šß‹W(a‰>S’PÙL·„Ù„ÃÔ¿Ó씺Òi“Ô·•M£RÓ® œKcƒË­œ[¶Åºla9Q{,b$P¼Ñh,!µ ¨±ÎIs)"𼉘-¦q_bòâ @²¶çNžýJ¥ÄÞñX<Ú⩈Ú[ú<@øLz¶ücb=Ãf »,ÿ­€”ÞêÇm?‡Ï~0ÇÝšHóí5 0” ˜|Ù¼}•¤Ïøtœ.”ÔÁ?ÑDM#4IÓî-ùIÒ¸¿ËíUh‡‰Í/ý‘PN&öž?å5+*ç>b¸Jýiây?ã~Ü2!ó#߇Dá†å=EŽÈ–¤4¬Ívd…Á+Ž­ó Móù·T@às“톷CÉlÄ—8A4§U01>!væÙ`™b‡3ľÃŸ­[N+DÅŠ=ë©ARoüH¼ŒçY*\iïj¢—ÔûSõY³<Ãýp–.Jz¶äÝ41Že‚•0©ÚŠADW¯æý|­%ǯ±WM»–ôß>Šg?Fæ)EÒ,Œu ÕÞ]sÆ¡f¬¹7Å—fÚ[Ýcg®”‡HÏr2ÕŸ× å߀-Ul$À`jÇ¢×ô°6 ²pÄèkù•à”oš>å\fòâÀË„$e´7C$“¼×6N`MfÒ2ÝyÇ©”!Ë=fZ\ƒÇ«“ßÛÝÏAec#!Pß$ø¬œfæ¢$.¾LOÐ4¹{Gl¬WÞEä¯ú|ðó;Ú"÷›p¸ÉMa?ºóþà0n¿+òu0žEsÑ ½Ã»^"Ø;w³€nU'µþGfì߈¬ËÈýÌsÞ÷úq6ÇÒ ©ôæ{¹Xæ¾[ië3*ߘ†Â†^íA×¼ÛïÎ/ªõ3«Ï[P_'¤wkZd M‚zúHX¸CÆŠ³KãŠÕrA &à…0b˜4Ò×Ê#§ìyÜÏõ6‘ìÌk¦/-Ñö>xQÕ‰æÌy]vÚ«Þ ÖêØzå?à4F4)Gù@­^T4@þ¶µÔI-º~ÄýœdQ)„:ÕǶÈÁJÉž¸„‡ž±t÷ÂVŒ…EÊŒL˽YÇÖ\ìÈÞœéðsÄ€iCƒá‚ßCJ’`i^lA™;‰-;ß²wñëÛ&ºK÷<«Ëxhõw¯ý´Vq\= Ýt‰³Û´F~ú‹-×*­e™í¨Z´«ìz\—íœO?ƒÖü‚XtÙî$MGÐíæÍ‡TÈHîDC /ËeèV{ÍÉ" Ë ÏYOÓ8|@H}g6¯ÊA~7¼9¹^i#¤k c„­A#MQ¤fV­¦çÁ‘ìZË™‰Ý5mÖp’hCå­8h÷¾ôÚÁ?-ÔîEµXBO o„P¦ì2¹u[²DõñëÇ3ÿÈ“k–¾G?CwÂÖ¨LcûüÐ&”Äe»·ð ƒw‹B0[x„!郓,pàçÞœiQèœæ1¾Z:÷¬º5$˜ÝLôSHë~XÇgÑæ%•a[Ž1þ¦´'C5 …‹ï7²ŒŒ`šE'z¯=ƧÇÿ½òê*ž(Œ RD‚>ƒ¢*2uSm'GqC: -ýŠšx(´»œ¨w­Æ =ÈklMƺ»Ò¶ ņô‘þ»³qÖ—È4&MîOÆKûjÜ»áÖ®6©QŒŒ.ˆªSã/=ø$™ŽôrDÙ+"bOÅ{GÛ–^é]RwÎ=×aà$`FÂà.tAæl©šY²ã)i¼‘CyÁÇ„9VòÎ÷d‡f°Ú˜9š¨aÙŠñSî?æ“~‚¥®½oùyk9ÄÔô­¤—“‚¾`£×¤•:ƒbºøýëòÍ©) rµÜÇù\Ÿ]ð©<ߌm竜Tõ9EôÞ-ýXC˜-Š¿xYá–ž ™r!á; QI½-©³GÈYflÝœN·Ê3¬âsj_ù j¡˜uŒpæ|üD ‚µ„2õµÕÏÏ!”%vqbÌìÒá²ì—2nDÓâ‡mCŒ9^11~h¡“þ4RÈ ÇÒ]ˆ~|­k˹aûªô޹ò"G}}éÆ,õ;¥/}ãwŽ.Sþ‹èx’‡¦›ëÔÀ¬DµÏ|FµTâ$µn‘´Þ¤;‘ÅG½†Sõ·¹—ii#R&AØÕþ6gvôEï<Ï×}Äy1c\ýä+£У›« ÞxÒ\ð1ÅŽlo¶„­•°^§™©q®•ðr£W‘‹ÓåÑ¢-«ˆ ¶tå|í–Þ=X‡`ê3x›ØˆT]óíþ~…ÍrJ±õɘ®º£<žç%^¨Ewα°)­÷n!ö]eÙ'îUí£±‚ƒ{nü£¶Þ& òØgœ)V½ˆŽ‰ ì5âƒîyÅ×e9>fH4Ãn!j°­•·Ckd>"Ü,„б;K,×ý ¥Û:˜‚™Ö‡*³ªg÷Qöð”nAr*uÒ~Í5þ¬1‰ü;¼¤‹1òï2rêRÛäý£/‡žXÕ‰O|7xr„¿ þLv"(J"Dɉå&T»P¨k×Ó]d– {U,WÔ„ oxþð…NöúI';„qßÀè< Èü],Üv{ƒO×úSe¨ëË%MJ½‚šðO…lGÃiWäbW¥Eü?NòÂ[ÆÉŸ!<¯÷?7³™–nXÙáþ…íIj’þTÉJ\^(ËJ‘8Ú`I¼²¨:mƺ/øw™õ/x†Es”•Ž] ´$à΃®YVLü3ÎÉÈ&‚Ô¥øbh‹IŸÜ1þŸõ$ Û©´*‚|¢Û)ƒ¤UB·ÆëF1Æ~Õ¥>¹£>â¤ðµ f(š‚,äH^Zk-šbÇi$ÈÙœÎK±¼ }RÎÆH„ü²‚ü@  g­$èFˈ›Þ²‡½\ÎÛñáØ9 Fó¹…±¾.ŽšÛ"Å¿á­#}kÉS;ÐèIO(Wg¤‘9'÷›§vlO·ð³¶Ý|áXGES Ñ̵¶t$Vw-ö)Bø>›ZÇb! ÔÓ ¼šç¶ (Â5>ˆ·†ùÄAyv¿6&­aà‚¸CÔ—E±¬T–p(_\G'„½1zoëN®Û©ß™•"=FnTñVüUd߸ t _øæR$J \¥EÚˆ´A]ü/ &%l²<æÁVñd^`}“ÚŒ7 ݆ì ÊÍ0c,©Ç:¦Ièaæ#õµ) úêZÅ¡$pŸ¶>éÝßÌZ‰ŠÚàñ’¬_ŸÐ8V¼„p1izXìy[¸«3Ë$R%³¡s_|'ÈÂü°síüœ%E@´ëKÙÓ>V’®áGMT r‹3.úÅÜ EASlÒÙ"ë¾2Jh;Μ_ƒ)©Î9ŸÁSMÍŠ³kï>kO‹ã€TJ¡ðsôÿÕâˆa%ùNq…ÖqÔïÈÈÖNJSm&dˆ¼,ËôåÒ%Ô¡w~HœÎEh6gÔãÿu-Ç®ÓÞ¯ˆNÑ>sß­ƒ&cÛÈ:Y&f‘5A°F›!'QºÏˆY,FÊ•`ðæ+eè¿Ãcy^æ¥1Íê—?ÜêŒJG,De`í ƒ£ÿ·ŸL±ÛÏutŠÙÜSß’‚eÊeÜm óà½Õ£¡ë%.÷ˆ}ÇÒ$3˜‚õTDÈA Fé‡ï¢Ó·|\·‹ànE$dŒi <Ë×à´ –S¦rMê!n¡åéÄgÈóá»ÔõQ¢%Z&Ú4½¹z8EHÛ÷õÊœ™‰Eáö‘ê?£‡L§>?r§SglWRGÆ;×# K™?;±Õwˆ› ×=÷É3¤Iû§Ê`¦Ú*XÜVSTõ±ö~Ó]9bí°5Ÿ8Eß îñ¶] ôm ’ùÁ¢é¨î‹ø˜´Ò\)rj®ˆtÊmÀ%ØeJu „¿KàåR¡âÐr`œ.l˜æ „\f+dv5¼˜î3ñV%’Õuj ÁpßVU ›ö…VYÜé#×¾¶H[‡ÀDÑI~pøY¥upÇVÊ=Û.㺴½y6OEÝžó[Ógà%Ós\vŒHãS žñˆöG”é³»YFȼ̦þܯ­Õ…Ñ,ÌsÎFÜE4%¿/Fœ:ê2µm–Ey²¢Ÿ~÷ÂÃ#F¶)¸2ƒrƒÿÇVð9(k5¨R¶gÿ¥QÀæñl‹V´–ûP¿½¨ÿøÎ–stÄðŠÍ7ÙØú„IÈ]µE öÞÚ+¦N1äWØ~\a“A-¾®]m÷‚¬xöŠʘŠýjBÅ¥ÐPÈÀrˬ-ÚƞɅ?!Àe&ê÷4$87°RnUö1¾|&a,`[ô•¼¼¾ŽÎÊ­‡ÍwÉ¡$— S¿F3ñ‡F©:Ldoqñ=Èžç–³¶ÑxÂËÒkÕ¥F ÕԹǬ¸øð°CG^Ä:^äI¹Xp1ÚíÁãy¨%<Úìkf½ õü×@ä Ï¶¸ó>·¢áúÆÇ£¯ö„]€XŠC;ÈL’±L§¸ø„Ϭ‹H( |ñ˜‚„µ±x¾ôr‹gÉû`}“Öœãç’é½ggQ¢äö8>ýýsÑ´Ÿ-<Û–ÍàÇ"„3%tòG`Á?tñ†ËDŒK% oh¾¬‘‹‹ÝFüóÑÅ'”Ë•¥®S–žå-Ùz`‰t–ô ÏFº>®ÅK̆Yó}zÓ åz;jë¤ 9•Q^ŒT¶iÊŸ|°åJ–yé¦3õ/‘"ÄàØb3’ƒÐª¨,ú¬j|í:æî­%÷>¨‹Œ¤*; c´TOnið^³³Ô <4gN&‹r4wZ3‹’tüºØ—ý:|f¨ZNâxß1cµ§!9±•ÔÛ4Ò›JîS4’o•|vèb«n‹fñaÖIo#iRã¹²£Œ÷¢lãÓµ'GœÏlVRïôlËF„„‚ܪ¶‡;{ϬÄL” ë=ãSJ8»Î7UæŠ>n¹ÅW9¯¿»çmöûaØœIfZ¾BüKÿU«Œ žË¾¦©Ê}ú–. 'ÏÍ’00<)ì£áúñ‹ç†¦_ãdÉÂtësGO"vk¯¶‚<Ør”öKê‚Eú›|u"weÀëúe‚8‚vAËÄ® ‡[rqYgTŸf^…à%ÿœÛ;Ǥ³ßœÒ ëL~.‘¯$É­Ú<׈á…üŸ >oØs Ä Uƒ{cZšŠ—J¶Ëí]¦èàšG³ž ˜%ÌØ*Ÿ/Ï)§º7-Ü"ÿaŠ7óÆ~6úiZ—Ð-šÜ ¶ ô{Ó¯ƒ—èˆá£À9$´m×üuÞ}óõ8[Àe¬ç‡'‚q`0w¼ff-¨"Uä-*ƒtŽ˜Æ„*¢'x|Ñ:ÛDU/DÍ õõ”bq+ŠYÌ„ÁòípLÖ¦]E9 p½Ûœ¿©Ã—¿Ð'YÜSÇØNÅY ÉÁÿ£]ƒV“Ñ×AH')¯Ðöù²£Û˜ûã´ ÞeVÿs-+â¾Êo:‹|¦*qÿ“iœÍ ÖJÿˆǨ_ÑüŠ‘ÒpD2§Ï¸½í0Ÿ(ËúÅUù·Š€§nµLöåŠÉ¹:j©Ol¦¸í!-ÿ§v®Þ,I Ké+ÍňZæ9.ï1׊ɭ–rJ1mþ‰OÈyxAà°Ø|š7‰,¥Œ2”o-Ú\”Æ=RŒ'n”Ž rÖ‚‹›ÚÑ1ðö`è&,Ñ ¤”¶Â¯La5ócÃÍÀÝg3›û¬"´P¾hñÝzÝĶCFš/ ¾ÿ•c¬û,`^b…„?ÃQ)ftbfÑ#àú­üǦÞèUYÖ'Y¦(ÅÇ]ÿQtŸXÎÚ]`uø¤¯$MDtßs:º¦Ž”+ï"jiBu3RÃã¶›o{‰ÈvtÝRæg·”;ÿ<!ŠuŠBñ3¸šO³BG³×°·ÌÛM-öA&.Md)"TÚÈE¥ß¾Üš×wDr›b@òßËáÓ*9kÅ¡P}÷•UB‡P[…b¨l‹Û4Ì÷Á`ÈÈÐQ†OvQPCÇø»%^}­;"ˆH Ô½…:8ãvø»êÛø]°N½#”#|ûƒž,4;,JnÆ;†±×ˆüâßœ®P˜¶úÔ­`>ƒ°þ’?v^Kå ~QKþ9£ÚÏï×ÙÄ$€’…uâ>!T¬öïƒöË5­é²aû<Ú‚B˜û(ÙòÏÚMJK¿t$äç_ª%Š·ÈþÉSâ¿äé¶ŠžôYÁæ¿FŸê¥Ø\¾QâŒïW’ÀAÚÅr6Iƒ¨Î7‡¹\Û-jè§'×È]×ÑØLK9‹À«‹ÙéõG}7¢dé—tZ÷†vTš‰4ƒ»ÁŒô&…ݠ|˜Z8;«TÜèõ"Éò.äM€ fª'I b‚‘——¦RÊwジ»6U"ÅsSè2åÊq'] êÕS(êàfŒQŒ†èƒM©f±'œacPÃ)¸V–g$¹ãµhE}ºlmÛ„áÆ3 ¯yÖ(õZ}dºîMŽKÒŸCÏTGo®ýS°H0>¬õúé;_Ý7Ú?ÜëENª~ôë%Œ%gl.¨åîG¾D!©^kÊÔ)E­ó¡ò#øD^E:þ3='C»´ æ!#*ôå-ÊžÜ¶Ïæx<Ü(Å—U}°%#øöLßî’%^ߢÜDª÷ÕåûAÇÒ‚y·¯dûÙ®(FѶ<ßÎótÉkJh¶9+aVip¶1â‹Mv˜e(§ÕQ+I=Léq+$aŽ]GWMÒ5  N!u ¾Ò=ŠŽ=c¢Zb³§ùåík¨Ý®NEïÆ³Ë9Ï9 bMx¬J: AqÃ^Éÿ¨”qÅÌ:µ1zOØn1Î üXõOhñBÛX?^µÄ¤gIŒk, ŧ*¿ð+ýWa^ñYq‚!þ–!ûêåj=¼ÉˆvÍ¢Î'i E4ð2ëBv¾äÍàU„SÉ«ØÍ§X¾[y]~»ñ¬ÚN¼¥üþúße›,I¤ÔAûmOýE$¾¥½ýî>G·&BÎϺg)Ò[6Jy/BýM` U ¹V¹É‡aÅÁrèQ•¼>v»¬¤…”¡Ë £û¨ë³Æ+õ«Kª¶A ”v]mÈXƒnf®ŽKˆvB¥mu>6ê­±k3o@õˆÆý©¶åçP(ËöÇ®­~œrBT€Ž/Ž—!] fC=Æa‡AOÞ.v$Ï—œ÷k©ø¦iÙˆoäÿõÓ+I¦ˆå”ФbH“K¿?þV‹Íd5‰âó¤ 'ÆUq{qu´ê¦ž´9"Ë)ô¹ƒÌ@~ÔÓ[U}ÎOB¯ðŠ Ó*þŸÔî°˜¶(ä=Ü›³,ÿÌÇŠØé;d¶]8ÍWu‚ÝÏ×½ÙrßÑ.dÌEœ3†,9ʾ©5Å;~|¾¿Xœ¦a÷JCL4>ì ôöOu$5îç˜þÇU·/)ös.ýPнmXsÃÏ iN¯nŸë5‡$äÕ˜6ZñËýîK2Yÿ´î7(êo¬Õ5wà<³´YªØ«E} €(ÿ–tpÀËÊ¢­Ë!ZY‡Q[Na[©F±¸&«ÎAcQ4ýàPö{Ï)2›kÁ¨'Ä:¿>å€ïè®›»Fb-®o¶xob÷Bi+È{­ÈQîQøµ°ìoñ IÃ(5qÝ/ÅËtEQš¶  aü;Í0,;=/Ä[e.Ê8VYˆ’9Ç&}BÈÚM·£j=‡\±¥ÇCK •#Ìñ¥µ”rkW5«cÒHYOEÁßqDÃÜ®s•2e‚<àíc¬¢ Br¬—ž_bmÞu§N·uwf9 1¶272 Ç=H:]PµÉÖ›¡âì 5@;n"€e"ŠX5i—Ùi= ?mÿPAeÇÏÙ?RñÂïͯQ܃¦!Yöºt“Œ£ëδòdWзÈXÿ*qI]Ü Lʘ¿\ÐonwŠÕ¤îÄH>Ž…ìë° üÅU2N’-µ-m†¶,à#RUó¹xá=Ô ›)©ÛÐ ž0{ÂIö!»½÷ä"ŸÜ*‘°œA-‡­¿~ ØQ YÀãñ°ÒmÁVI†µjˆ&2C׊'®IC¨ 1–Ç‚`;£o•ŸZ‹Êžr3M»7>cTŠÆ¾a´cg¿@iŽÔ €éÞ8>Y¶ʶi8ó†!—o§g¡Ø‘q½øþ†ß~ìóÞWׇÏVrsE,QàþNÑ‹ºÖ6Ïl\ä|Å¡N¬¤U=Hö+‰¦–>¥"‘­P3ÐJ›é,€©Ë†hJâ}…6ºÚkiêg[þFéuÖÓ{B}6èñÕ}Ž‘é~ƒtéþUqXà/Ëf1Ó¯-(~’BipÖОF.\oDô„$ñró"OP‰‰ñFö‚Å< §~ïBõFÖÖLÙ]ÞeuÚ#ŽpåŒIV¸)é™ ¥më=Z…݆ãïÖö|µ‹s¢*¿49ëŠÞ…5Þ`ÅÉïû¢¤³ºv‚uËHÏ8;eXqN7XðÓ €%‘P:†e˜óClØÂÎç€zEþw쯵ÆyÐ_pŸêsUÁº÷EÒ}à¦-+Ç;Ò~Ó;!•¾fËèS–Øý?meŒš‚§HŠRs/%~?•Zþ#E.À„Å+xÒæî|gY Oïudâ6(ƒÀ´¨²ñžã„€Çs=5–²&Õ9þmU&¹ðèùùkÝõz$3WÀª_7ßpé†Roÿ²õ¹K.b]jÓaá–¤Ÿ×Zà©+‡n¨ µ#R‰_O{$\¢1ãL™'Ÿ.#ûœáªÉßÇŸqåÏEϬÏðQDZ?ÞW€cDDÉ úÒi‘j:­ª½…Ú„‹©Q kXm*œ„ø¯Cýñ\¨ìÝ9ôvG˜÷ø½•ÙJ¤ÉàÑ/Åqˆx'ä’3ƒ)Y²‚f³>0Oë¢t½ “ÝŒžÁ¯yÚO.× °Iøžû/ÆP¦<& #ËûɆ&/Ãvþ€Öì:€˜×g «ÛC;IJõFë6·L þ™(Ó¶œhkÈŒûé³ÉÆfÜ¡©A—™»þÂ’(}콟è¡Uô)È ­è&Ž(sAžý«A–ñÜä8 €âM"»§(9DFVEjô=àБ‰Éà/'8©– ý͆çǼ‰K…ò‹Òè÷éOÚ‚Q’˜-U“‡ópFîbò‹t§u,xh¸©ËóØQQê /oÚÆzc)âÄ.¢ðžö¢úÝYV&þ¿YɃQ;ºã ‰¯Šñ'`q¯œçæk½4µ«äÀ¿ÁŠ`¬5&5ñ¬ÖþEÃb‡f¢ÛÏï+cTk %ðýž˜Þ9Rô!Ó.ßö 9P*>‘!Þêßí09è…SŇä‚YòÑs–d'¨ñCAÆ;¯ZŒy0A.£”,¥Ú·áU;ÈÁÈ™(Uà\Y~Õl°pcË‚™ÆUkHÆ+bŸ‹] ITµ+2 lû:…“¦w»ñ&S\ºoÉ•b6*šDU 7p¼ñâÝŸX/ÚÔÈdL¹Tv.ÃÃî$3ÒR.“”mSžìËèjÒÀCÆ‚OWÔxïÑÖAŠÀxÂçš@×›2Ò%EŒr%SoPf6jQ+rÑþ-Dûq-þw¹¯L`Rp!¢&ab;1«Ô$Éfˆ§vhQ‰ÕÓà _êý¯ª§µ$È ¡–-‡ {ö®h•YÆrÅ·Œ‡F·v µ³û]8Öˆ­¤t¢¨íÃbFCHe[ôÌx¥ Ë=šNîVÓ/Ht½ßáËìnOF‚×̹ã¦Ñ~€ñòÝ ÿ#}_ú÷`û67¤Ñ”»úø ÐMt^{ Lg)4%œ&9%˜M8Ð[–¢ Mó7ªÄeú%4‹;D®)1_ýÒ¬# 4ÐîÜíÒö“kÛ[’GÕb1dÇÁe™tUXS™RÑøƒý0>šÚ¨ì¬{O,» ²OU¼/„'½wÚ &ª2æ÷ä¡›ñX¨×œÒ1NµìFž:£6¯O±ÅÝlÿÊ2ï䦿t)Þ-Ä’ªZ­%LÔ ¢O“¬Ã3—9câ¾f3àÔüQÙ',nË5Äǯòacàc\ ;=.pp!aé9_*kžT9Ê9œaè®°ƒpí;Ÿ9‘¶Ú‘lکν<‘­t°·Nl³c(ß×®Ž=ÈÌ(`Ïv;¢Èº’G&z/÷®Œ>‘TÓ4Föp7už­Ç58çÞËeèK¨ÁðCE£uÿWÃr»#¿d‚·ö,(c Îù×¢>WŸŠâÐC*]ŠþTÆH®æò$Œ£Ðÿ2Pß»A™#Z‡fΛìŨÖçûð›kd*n‰&H³ðšd7‹AMki?¡—òš¥âáðµÜœÛ{Œµû}OúoÂpÀôÈémðž#¢Ò¢3ß«X›h­nÊûÒLSû<ªôƒPã uK¨±i?3ø{/)ÆLl“¹è­çlÚHR‡ÏÔo‚¹Æí…$0"ùçSQø…˜á.ÙßÛxLî#©î~-%ÿùÓ»ƒCÞ+€Y;¦¦%ïÏ6;ïTîðÊIYÚÑ'Eƒ» ¥¯“*‹d“'E™:IJä¼_p¸;›™ïÉÌýÂõSJfœ<õÞ÷•‡jœ¶ÒV>ŸðŸÔU¨#E{ÐçïCÒµ©°W¨ŒþÔK,üš‚ô¯ ¡ ½ƒÈ–ò.›jÆ„Ô?ptåÞ•+\ªìkÝ®AË~øØTèæˆLäÍ–¦¦¬¾¼Jôz9ºÞ,ac†G¤<áFÝ  •‹õ’¹Î0àˆÏE1šÑm‘š&k°ã{²"ûNÃ…)á!³jo˜ èe@èÙH Qü÷Q.aÍi‡ãc!"uQÔèlž~‡V ºÑØ6ÂlÛ¸AQ¯ïc·îÿ¾$†póëƒê‰TÜ«ù­˜Q×}w}ä‘Kfã¦æ´žûí8¦Fá6¤[KªHŒ©=­ÀK¹8¢/K¯¡Ù£ˆbš1Ö*õ®Ê=ų ¬-*Ó‹¦7ÿ?ìvԨł´ÎÑ]`6Y7›ŒÓnÆþÛiê9Ëg –\êS_Jj¸»oùVÉ^u0»/²rø'sä2íú•À r´íÜ¥7ŠTgýÁ2YÁŒŽÓ UätR~ó?»ó·A6òì0þ¼#dX$Ÿ5 c2i'0j°E¥@yè~øXÊùB½WDM/TJaIÃ-vî\N¾®®Ë.•µBi¹rLw³ñÚq]Ͼî†g V+ªëÈ¢(µ‚ò¡²“{ÇÄdò¼aIÕ“ ¹§1bä§^ª.„›7!ÀwáÌEå Þj•N­ÿŸd+–ôb,íþ—/ç6Á÷~u¾Ä¢-‹÷8÷Òq‘t$åUþåÇŒÿÃ’õ—R¶Ðon‹CðT4ñêvÔç¢[ˆ`ú¼FšÀhCÐ."í‘X¯Çø0½*ÝCèÇé!h3Ž ÒŠJu©6f†“wÆ6IL UBPûîŒ z° HWÀÄøhxjŠý|&¼Ùwyèÿ´}“¸þÚ‰ý„ôogC/"ë½cë9e䇥ˆå=Í„u¥ìYJËû†lŸæyPáÿrlá«4ë"S¸‚IBtPkfojò£¼žEí€Õ q7– ©˜jHŸBèD endstream endobj 813 0 obj << /Length1 1690 /Length2 9487 /Length3 0 /Length 10573 /Filter /FlateDecode >> stream xÚ´TØ-Š<¸CãîîÜ5xh¤¦qw îÁ5Xp·—Bp‡` \á‘™¹3sïÿk½·z­îÞUuvÕ>Uuh´t9d¬_^8C`<œÜ¢9u^77'77/:ƒæúËŒÎ`‚º!¢ÿ ƒ‚€°'›<ö§î ¨¸;xø<‚¢y0dõtíÞ\vÖâì ñý Ø€!Ö6¿EX»»péCÀ®î eù¿BžLèÿØlA0€77·?ä yYÙqý¦×óvýáäùm~Ràïëâì°yòÛ€ž~Ð}Ý€ êò÷ý·ã¿:Àl¼Ù‚!èÿ°?™A6â§æCÁ^î§ÙãpÿþüýÏìi¼¬!ŽÞÿ„ÿÑ_.#¥ªj2l*þÛ'+ëìðåàãpð ðD„…BÜÿÿfù[ÿ´ÿaÕ‚ÿªûBeˆ3@äO Ow÷Mó_Ãøï ÎO£ 0ÿ3ù¦ÜÜVO_<ÿÏóÿÇ‘ÿ¿±ÿÍò›üÿ-è…»£ãnæ?üÿ7Ð ìèýWÀÓ$»Ãž¶BÝùi7 ÿjús“ÕAÖ`w§ÿõ*ÀOÛ!±uüûÁn/À^ k-0ÌÊîÏúOžèÁ–³ø÷[ààáæþßÓ¾Y9<½'nO½úÃzZ§ÿN©±r¶þ½w¼‚  ôFç~/^€/ÏÓ‚Zƒ¼þ˜l'Äötð$Ï`ã EÿÝQA!—ÜoÓHHÀ¥ñpiþDž|¯þFüü®§¥wþmù]=—õ¿ € ô/È à²ù ð=!°Ç¿ýOÛÁ'~»Aø_ð©2§ ÏSfÈ¿àSfç*}Š}z“ÿå~¢†þ ¸`ÿöDótþ—ûI¶Ç?dOÈýÓÿ_°r‡BŸ¨?Vå©KÿÁ¼† È }qÎÙJ,̾!¬ë¦N†Ü“cç³Ä4ÃŽa& ‡ï"´Ûý5¥6'dz%“6Ú÷|eKùRz‰úÁ÷ ½ 5²#E»ó§ß½E’ÎäN'ú¢¡‰’™ÆAJ4 =éo~®~ÁˆíðT \Ý…±µŠðo<½+—Ç"æv´¿Õ ªbÜWNqÄéÇš—Í0¾Ê%¡EqP>cÅ;ñ™¹¼šÆËŸx¤VIbC÷?Œã+õ5þÊ;ë³úN×­‡”žÔ˜„ñol’ÑWv7]…xÞ·¼t:–1KÔ=¾á”Êã¸Ëì³£¡sÝ;3gd˜e&%áB$P~»Þ¡”ìTF“ŒÂŸ{²¢²î¥|&ÔþÊ]3ü¨é(Ô( ƒ!²Ó{—ß賋ÊLØ`Ä©cG˜ÖH 鈤„ÏodÄŽ*Þ±¾#^3¶Zý¸JÐÜ&‚m©@ÙÞ´i›Ó༷ªG3ºâ5¢Õµ‹ß¡–s47Gó_jáp‘î˜\=®¡I×wþz‹ZÐêã©M±"Y×"dÞÎwîD­K«VâJ)nåÏÐYR"éx_=„2·£ßL8Ïþ‚Âoœu%46 ÿ] zÇ%›$TCó‹ c52~"ÅÎ } ß쵂¤^÷„CÝÆ³=¨{xÝKiuHL«ûgCK)2maÊ OE>[Ê _b]Ö¥(m+ŽÑÆÉÚy0Sô7Î/Ý{73åæ^3 ¾Ô»dÒ¹ˆ&³Ÿ‚Ëwžã¡T¯„ø«ýJ`ƒ;IÕüÕÌ5fy-ú}::~‡Žp”¿-¾©J;LóõØ}ÕKàl!šLR -7‘²v*é¹øšJÆO?ñ#AÔÅÅmiXœ«QD¬äÆh‚‹2q5C3•Ñ…GÚÇoBþýÊïiÞµ@qAŠŒ4\d¢ÓùQôÝÌ^‰Ù&ÁSÅq¨‰~½æ"|·T3æ‚\H†#ºõ…Çëv8õldÛ2 Å 'í”QA!?XªÅê9 öÜ ¦ÜrÆð!¡ËáEz¤ÚjuuÔ}Ê}"¿ÆpF·ØÏ˜5‚F4¶të‰H“OÜí°`s˜õb|†óŒ3õu™Eøaª3/ö–øjg%BT=Å0V/U¤—z¢òsôî‹jzky½}ã¹ç·˜Sýö­_CRÀ~šœßD<_é"t¸ Ê¢ú$nÌe4Ñ4gñÚž ”ÌÝ–?ÿº<þ Õ šIÝ~¶œdHƃ(C»1*;åi†ïä‡$«RöjÊqiÈTlHˆÛ Hš{1#{7 <.å)RÕõ.Á„‰Ÿûkä_Ì)ÇË KMÎŒþP•UJý&8‘da 9ˆÖ̾åÁ‡Áž¤E=|Þ'°8ÚÛ>(ˆ{ø`†Êf3yx¹3F7‡ÑÐ×€|®eÙâ«ûë@Y3WÆC+ô`¬ž”|ï$áFr.ÌŽ9ƒŽ­Ú²‹Å²öþ³àÜç¬æ/üɨé¤0µÈ¿Å·q Ü¤“9õØŸ¤æ$?{áAa0 ŽV=Yà|ŽjÊô²èj(þÂ8$&?Ž2:jÎïž#jN÷ öš Tg£%H»+ÒÊPˆÖÆÛ9â2‰Aè¦ 1I ÒÔq•ßKî(L`”úÀÝÕÚk}ªe·7üœJ¤³Tã.ÔäŠuØycï䈓ŗO³rB*M; ‹£í=·t¦i 'k´B*¿Õ×s¯ùQ,À¹§ ÷ÆZ2,f„ìÙGì±ô[,jÛŽ÷¨ÈðŽú÷Î¥1ùl¸´Ú >ôåúpðîâ­„*‚:ŠW›VÆ"=œÖ¶‰.oû;ó§ÌÞIhÉù‡Ý¯Xð® Ï8<\à3 !`ì‰ê…æ“‘K•Óob»¹µmz¹:’®Ðb~R“®gçht7ýxãS^|‹›K„ñ‰^*Ú'F^³8¤e-ª3ɼ.[Ö‘”£èXW7÷¿3‹°V“uocöÌdÌ*ª°âϼ×ãö#Ø•órþP Öˆ R•ÖÎŒ= ȼ¶©Ø^½ å]«+éÏA …&‘#(Šð½b&ÇùK…^ j= ª)p˜ýÕ+ïéB[%fZ'ƒtWöÙRWÇ´å%v=ç”§ÆWâ¹ú$‡oüª€5w%º=faì ¡F€Î:—21†­Øn ·º ™ïBòÏ|”h)q¡ºžJùzî#Ô»ƒ ïËm MIhPyŽ Ÿ”ÂU<§Îó|Yløuäà d« }?ͳr¶v}Jú&è¤Äbdtb 9$ñ¡é»€åXZ1û× ®™s¨˜€™ÈÇ…IíyEc0jè»õëœ$ÛŒ ߈i œ‘7Ü3Jã’ÌŸšÜ »§K}ü²õÆš¶ ”Õ·jmX׋ÃûQǬ¾×,™‹gäèŒ{pxÖ°î¨ã,$DÝž§ó„½ÅGJm…¨ÈÚ„æPê¼E@ûn+Ñ5ñÛa0‡ÃÛt¡ ¿ç˜‹Ÿßï'¾aö?Ì&¹þF¤—ƒ¢‡¡ž‘¦U]byì2Uhéëû‹);'Ê 3ú˜-+ý±øqØ|²ˆFÖbïØº£²eÁª[n¿Ä±§nls ‰ø*°„GåsekÜ|݇ 5“7­qn¬V¶—Ò N6år«‡ñÃ"°°Dô\Œ¥ÌqCdžË ÀB.­U¼-i!ÚjUB %.=X­DÖÒßYtÌzí¤–LœÂ]¤è½Š3¸Ù‘<¿I9û4že·®ò Åyˆzù<þܩý‚½TϤë¥xqvÌ4_z¿ØúY‚­€sfÑ<ÅÎô¶O‹eéüKY”uwƒß0Üež¾ƒBß—’#¶¥|2D6šüAæºTð¦h©9æçºm‰\¸¶ñ™o qº¿ƒ~cŸëÜoJ]箕Ã2–ük-f…˜à7õ;¿Áü~Û€³ ë—÷J“zÇ3fç®ÅG”™`[²7Ž 8‡ž)­m½salA±.ÖKFŽ òFîÔEyŠíT¯xÕ@ÕX;Ѭ ùù›u°Î²‘—p»Ìn†D/ÍT‡°¥À;Caz'8»ñM_(¹ýĽžɱVJ´¶eñÂLÏo`ÒûÏWCõÝïu‰)ˆçrøU²Ð)‡ìÛì_qÏ@3qì»q³7Ô2Ås/rš¸^™^ní6x(¯^EhÅ@,ÔÆ[Ã;Ï…—¯ŸÙ?ÿépã–^d'Ù’ež”Œ«Ðªc°gЪ‰h•ÄAoV4tLS ž”Bx“¹Ý|rûö i5©‚±7ÆÎýޱ›J>‚þylHÜ Ã]¼ˆ•©&­"3íæàfåíÃesÄÆ!òhO/AÚÔs8Ÿp$ŠØü 6Ú”í ò6‚¥¶ÐJƒM¥˜7É—K¤Íq<ŠKù×J^1›/qºöôƧªFáÝ9ú]tcQªzå \EÑCED¼@V(f:Ó¾>rõˆ‘RÞšºsœßؾêÑYÞ[Ò.‚ц’rxe²%w)BÍVwIu|&%lp£÷ÒYnlíeVS˜¼"_ÉjY‹×n•šOųOÓàôzÌî8-`¨Ð$Õ³Š×Ôsé6 Œô!H¨‰øQš,ëðmÜÉð²i„ZÐnzÀ½DS¸L69æÄ)üWá:ÞÑ’ \¾Ó¢Ïggó³ÙE¡œÁºY(l#ÄÒŒ8Ý1I¦“f=¹¯ × iŠ4ÖJ] ý?¸“mºV!Óè òq˜M.¨»rPÑÓºsJÜ™CíçHÅÛpI»›c¹†ÍäˆD¾TINrú ­b­Ú°_ä[¹&51Æë•x¸öCYM~/µù©G¾É‰ƒ&~;oïÜÉÇ~²bL Ä}Xjؽ5æMÚ ôèAd"Ð=¡Z•¶üÅgdr’9ç RnFê­’2ã¤Êk´O—Å{°Åâ_xTö× QŸŸ0„±á$]mG­ìÛq q~T“<{£T;fåÆKûÅ.€¼\®ïk(Åàh*q¬Æ§’1­|JCœ³Q=Ì54ÄrXlàÂXh¥š_°”Hù;?цùhNÞmë§@JbUÎÔ4)= ±°18ÔWô ÊÌnÃxØá›HZÄ6:ô4Z.I©[Ÿ­©ýãe Ô•ôd.,ÿÎáðs†èõô™ýs<×r4ùø<袘. GÝ–æ=M\¯ˆRD×—gÅ#™osâôš×|^_Å蹡O4?HýüѬ#ð’-÷ 95®kÕ7þSg½-s‡‡)¹ªÉ†]̀ߚñ–Ål;®Hñ›f‹): 1–]žf¦úËÁ”¡‹“tÙ¯i«ôU~iK¸ïi³yI—²²Ã¢ªÈµ[MN?]eáÌ­;XH©s¿Ôj ‰dQzN)µÛ~ô ?‡âue?µ.n«Äs2™æÑ’¡í"2¿®ìŒ"’§¦þÀ&ö u½êì,ò6°\ÍÝVŒ=R_<7:U°?¹Y]Ê*ÇH ›¿x¨&³0ˆ$­Z„>NÞP&…æJˆ»2Ã*aàqhYñmûLìm¢å,¡ÆÒ Õkþædà™óÇê£eo5¯OþþŠ$©™³.­7ð¾EÅ/õ¹u">k¢[´T¢oòýl“;'ó·¬à”eùî==}MûÜ$.‰¬lªWYä}’_’Ê v`Ëý]&h§ö$ré.ÈÜø`öxöÔA–ÅK$ô ¶'| Ðôa¦¿¹Ÿ‰×``¹Ámzãã´˜37›¸~vI3[¼1/“ÏbbêkMw°cú|ãÊ|›9Ê7ôm”òÅ‘Jµ£ý3T2ê±)Šz:Ët­tœm1I œùG¬]žYÛL½•Hëc^÷„™Ñ9¥ŽØÅTö­Ö Â’1Áljá…-bQ¦FRà{@(qóÇJ)d! é¸×7z•Ì'0QɰFutŠ“¨$–ÍI>Z 8l¬ºñÉ­—µÂÐÖ×sa™Z|‘"žì¾5úQ°²koÅÄ›àî<'úܱóæØLáó˜à]v –L¸é…Uì® JzZÌÔ§ÅËýŠ‘šÚ dÕ2ª®,ÿz+ÿTëÑÒÆèM^‡u‡›’/®x­ïl¸¨Àë·êï1Ú†¾Ïâ„íÞÑùçì2êÖ\X ]`£ATKñ9·Ø£ØV”¶?Åoßnô£@êg$!ÈÀg$/¦ò´ò÷ä ·Ûƒ3‡ÛÞ»Ã3[µ >ÞAÎ ¾ŸNW0u*n¾æX{Ñ\òã-©ò«·Tшr" œòˆ¨# ˆð8é»n !«œù/ýŠøê]?DáÀ0šò‚;q1²œƒ™j1 <û¤: ‚>¯ÛÚ)E҇ɅôFãt¾O¥èˆñ]œ,ݧ-;…Á¢æÛëHÁrœ†ÌS8“ðö}0þJ“.,‘79='âƒm(7#ר’øTEo bLÍÿ„⢧wkéÆnžýºLl´ý†ö€5âU.¡e{•ÛÇ]ŸÆÀ—I-ýÃl²[-ù8êsÙ¦½Ía¸ìÐ&”Cÿ3úNV†v‹Q- ËU²ãj¼®ªAÉò«„”Î:œi…#3²c¨Z@Ò½3;4Δ M~Ð@“ÅïãWëìÈÙ÷ƒïÃ3–áGò5ùè“§È (íðK…­uB§^‡Ìp˜ñ \Öûç.BRT±0¿æ¼—Gr Pd]u¾Ùò)ã`¡¥ñq5˜ÚY`‡#ôÆ®(qu4˜d F9|zTÂøùr©ÕÞÏ’é4_-zdÁÕ,üµï0ÎLæ=2&Fãk(»ÉÐÚºC[ÌzýàñÑ„RlRªdBš\5ã/R|ã ¯ªó*JLÓ¥¨Ÿ/Ý)©•]&ˆ†–è;ê%¼Ùnm’—RWi4øNdÛû/½ü$犨Q­B*N\—޼!ÚoLÔ[ߨ"Q¹Ç¾íMÑzÛÔ¹R漣Ô;ÛãÏÔ¼³uÆFqë*sctÂ3Ç2$±€Üûè„ ÅЄ›r n1÷ÌWŧU‚1{¤ „.J²*$Þ PÜ}óCÅ_ÖbÓhGaD‘1ÞÕX™W/tö‹ÁJ>CøÔÅ!Œö¾_èA=¨^:§~•ù%î˜+nØ¡ð}c2ÞøøÛd;r o ËIJ‰³QfÂçe{ž¥Ú3;¯CY;çmz›luNž[†Öó¨OAQÓÚ¼ç<©»æŒ/°¢/!AÛï£úÐ_ÖH/ó7*FtõŸÕNÕ%ƽæ)‡:ûÌ”‡(ÓQxg ÓTÉ^8]?ßÌ ¬ 娗FE¡œ¢¸¿ìÝ—0gï 32î“:ˆËм².v`’xz|pç ÿ¥i»²‰§7ÛõÅ ýsßDCHG›«˜Ôpf\keÖÐ~n”tNóWœôÊÞê´`à.MXU^±Úagp1²R8 ]¨l?«*»#µ¼*ïÃjÔ#=-vÁ¸u€‰Ñ>5]8úµÚBïp¿­³Ñé§aŠ™×¹ÒcÒF¹{(l© AÔˆö*ñˆ¼°“3UŠg½ùÙ¾:˜Ø¾üνtÖàêÄZj&ü‡»õõ#T†ÍGÀ˜þµ¾…¤_ïJZ¨Ô6#ι•[!ÝN J6Ÿum#í!þ¡¤)zH†;•<¥ó6U—®M„Kjy§êx«È=åˆÕ]p46¡˜î;Ö#_RrÓ}Ë}ªƒ‚åôï¨G® J’¦v]Az…pØÂΕŸŽ=¤–ý5w²*íéìÍJ}õš-k/¦w5ËeY…{âeø|õã¾uÇà bDÕM,ñ²÷îýHÔjèI®'~¬vYFÜIëZ‚‘õY¨ûsŽgû‹¢–²ðÛ¡¶Y£å¥D¸ÊI$°²¿Û­˜hàüþŽ-S¨-D!Ù±¶ íŒ~—{Õ÷ø6‹Ž)ùŠhýæêMDrf€­`Åb~§>·†ò\®T•è ½«!&¿D¡† UÑàôKèD¶ ß AIËéÔa©u¿ôèÁ¨s†u_Aö1z+íîÊ!¬ŸhF¬IÜIœ C)à~k»ÑJœÉÙ³Ò)Kñ}y‘6°gåû¦z!d„©Ç„GÐÚ÷Á†–šRa)G |_Ó«_¹iÙ¥ç¯u@Æ­€q¢´G'V”nŒ¿Ì¥;¿þA¼:øî™û÷öÞ]õí²‘]s §Ù5Ñ^É’’ª\ú3ø«ªÉì2M¢D4kE•s+ænÁŠ˜¾d%ŠßX?_˜¯Ê|¶¢JO@)ƒ<Ìy ͼ]WÕ^;X™SdÇØ¹‡Íj¢ÏWɰSÜžTLmE02‰’¤¥¡ûR}c>I_'`„j¦<¯én°Ž»t«»B‡iœ×¤½¼cövø™×äÃA—ºàޝáÇ´x'–>nQq%]2ÚX”DÂö@\¼ó)rÂñ Í€±ûºðȦLrX;A¸•SÝëæôiÉò²ÈÞ—]¹ì¯$ÉKbQM6t“âàZÉõ”em?×V‡TR}éåÕÁv|í›3Ýã¸TÍjýˆ=Ÿ¥§½øƒ‘[…QI'Vl=¾jP9Ci6ž5¥Á#õj1ÏŒ1y@NNšó…FŠ0UŒ!š:¼¤º>iƒ«³Ké×éé1ûºïâw ¨íYÉ>˜«‡Uν­xHDiõ<檕ÞËhëö£›øíiK´×v0AÄ´*XLÅ´i8’jä‹ U<Ãf•Á /QÏiìß4ø¨ÒQJâ0J塾Ÿ¾íe^ #Þ{v‹kô0g´'¥ÑB˯kž°o‰1iœ@²u¿Ø=yµ\ Ç ehК C7Tßhÿ¢lB/‹ÀëI4ÉàG_1âá+A@ßkýÄåÛ_ûÖ3:7Á:ÉÚçej]âÄîµ^~PÚÃýiU¬AǾ»!t§Nï”1ô…^5€IûƒFÊÀaôÖêédþtãÎF¥L±4ㇹåNPýÐÑÈpSÝÈfjuøjÕ}uŠRÇXϘ§ó‘RúCPÈ¡œÔ²z1ŸîÍz,Qê›,ë±²›©øRÞ— ÕòrêÆã³:ÝëÓëÂ÷™#ûåõ_"èhwâX´Ðk¢ÂÓý²€¼Á’kS}F-#ñÅ.û¯ 6‰²O¨is ““æÔî‹)á¿I"‚ätÐ~ÙËàšØ_®³ç÷§È1ŒQa&êþ³×•-ø¾Ò¾¾Ü”&¯ HÈ*ô7„xššËBŸÈ)q1¾4“:z`´œõ²Ê±õô[•Žüi—Îèb¶(,ìÿ’Îi÷ÒÚ ûÄ”àÁ;›ˆ‘óé›a_(‰ØÖ³Î¨V6âÌ2VôLɲ¹~ÂÐò)èv8¢\a2B'âÁ/àGsú?¤K½×êZîUA1]KÉ­žøîhTã>vÏœ^L_~.R˜*±ûu¡RSZrŽe+)jÁqì6×ñÃb¤K«<ø*vS­‹9Fþmñ¤Ûž‹+ö6öM£¯H¿>®šÅH¬Üâ1š”íGSÿ·ê‰§Uß>ÎùÝ~yhczÖm"ÂhëŠ4õ•„Ü£ì %BT"’ÿê\M;Ñ#o»zcûgÊ'-`Òl½E§’E3™·RHϨƒÙÒÊÉÈáÏÖȼ Û 2Ÿ¶\¤Í 4]R/‘úè ÁTõ.îpž=ãÇijßçM/^‰t̉÷sõ›)ž¦•—ªkó®ÓË-«-a\¾,²_sdè]]ÑÄ".XªÌãÚµÁLó&Ežv‘£CeÁÇ_´nÿ%W) endstream endobj 815 0 obj << /Length1 1531 /Length2 7808 /Length3 0 /Length 8819 /Filter /FlateDecode >> stream xÚ·T”ß-ŒtI‡ 1”tƒtwwç 3tHw7ÒHK‡ -]Ò¡tˆHJ—\ô×ÿï[ëÞ5kͼûɳÏÙÏYïÐQ©k±JXÁ,@²0¨++'‡ @JE““ÀÁÁÍÆÁÁ…NG§ v…€þ4£Ó邜]À0¨à¿¤œA@×G›4Ðõ1N(ºAœÜΗ‚œ|‚.¿a΂i ;Ø  ÂP„AA.ètR0G/g°­ëc›¿ –ŒN>–ßé 3ب]mA-€Ì rõúO a[WWGAvv6 ƒ ÌÙF”‘àvµh‚\@Îî +À/ÂU èflètm[°Ëv-˜µ«Ðx4@À– ¨Ëc†Ô ä xlÐRP¨9‚ +ÿÀøsoœlœ—û3ûW!0ôw2ÐÒæà„z¡6k0P“Ufsõte¡V¿Øc>І-~¯•Ð þIÏÅÒìèêÂæ†ü¢Èþ«Ìã.Ë@­¤` ¨« ú¯õIƒA–ÛîÅþÇÉÚCaPï?5jeý‹„•›#»ìäRþ3äÑ„þÍä àåàààà€œ OK[ö_åµ½A¿œ¿Ì |½aŽëG _°5èñÝÛè¸:»|½ÿíø/BçäX-] 0ýŸêfõøñðÁž#ŽGíq8~}þ~2y”— ñú'ü÷ù²+è©È(2ÿÁøoŸ¤$ÌàÍÊÍ `åâåððøx¾ÿ­ò7ÿ¿¸ÿ¶ªÁ®ãŸ‚ Pk@à {÷ ÷?UÁðçÄ0þÛAö(e€áåsðrX>~qþ?ëÿwÊÿŸìUù¿)ÿ$ëüv3üöÿÜ@0ÄëÏ€G%»¹>N… ìq6 ÿªúc’U@V`7‡ÿõ*¸§Cjù{Á.²`O•:ØÕÒö ýu å!`(Hæþu×X998þÇ÷8o–ö÷‰ËãYývÇé¿-e –0«_sÇÅûtvz¡s<Ê‹‹—àÍù8 V Ïßʰ³Aa®)€Gz¾k˜3ú¯}É `—øeúø¸ì #~»ößH€Àüq>*”ô/økû/È`‡ü Øþœvè¿ €Ýñ_ð±‘Ûoø¦–nÎÎ7Ào->nÃ_ø÷uy‚,Ñç`–B!vu!®j$ž{°n‹LÓmë¥3²z/:·»Ý`¡¼f¬ÎZu¾x=ÔƒóeS†á\|‰òÞûûû”ðÖd¶[Ÿ;³DÍÉí6ô…ODýo¾KÔ÷‘£‘±j‹ïøÜ;ùèÚ#¼Ò©H—ï䯥^ˆåñQγ¾¯üóhØÜ¶ÆNõK%Œ»ò)ÖXãÀ’º‹œÙgÔÈ®¬ä¨LxÇžØ3çÓxy”ЉÌè¾û±ÜÅÞ†k\q׳¯–+µ¹\ºHhI Ÿ‘#œãN¾ð–ÜMU$ž÷.}ÓÂ6ÂUx¯˜c²‰¾ HÅ`ºÐëm7®Ô"½±õÂÖ>²sà‹ŒzüJöƒTjôŽ^¨œg·H«ƒ,e—ÍÇð¢ÓçjÖí@q²$“lðt”£cå}T¡s:ƒ ®any‚/‹›§Ö›îŽc›B™¾Hç^þFI\¬½Uõi±×rK…ù8HŸÕ3ø:°—³ºwÒDÍ£ÍP|h#Á‹Âr¾Š™“ÕVÙ¸Ð-.U‘‡_§ÙšŸô2”kO±<‰¡Ò®Ñ_O»ôµ±wÈ‘Ç#ÞJ”xî]uÏ.áq%z¦zpMÚóbSovïœ'p÷‚ÉsÃvêÃ*Ox#¹‚GªãÓá$á\iþ¹cn]â]÷ÌÉw÷ lw¡w°OË:u&*²½M,w«{­z1Á',Úõ³”¨æ+lÃÚÖÈÏ_Þà2XÝ)h À‰ 3–ÏÝýd !ëÒŠI¾ h`γŽ/iR' ;Èä0ú“M¯×c“Vö˜IÀ¡à÷yVË€ÉÙdlöL5~ÍŽTwù*„à`S[ý!»ÿpÉSF+>#å¬Ë·Ö&AÜú½*t+køöà=‹AO6¬&Žîƒi÷8­Â†oí`¾Î;v‚BøW;6_)ÚÕ÷_À\&¢[üD‰¼*3¡¬BXž…œ&÷cÜ''zGÉ ^G]c‹¸/²Š= À¸ÃóoA‰¶ÄÉ03Q$]}6×Þ ‚ƃž²à>ž§ZržÉE¤Ú<—±²> Ž*ty–3+½‚Š3ÁêíeúZ£• eÓ ›2À#AKÆ S°}7݇T°Ëô á¹ì+3üáëñÛµÿª;:á´x½jÙv“0…š‰³¾ç×/q'£Ç]<¨&RäŸá©1 ¨ OQÃ׸KâÇœ¿ë[e´.I…šøZMÆGJ.Õ“‚¶Có¸Sæðåí„Rb\ÝÈ$TC´| ·BýË Ÿ™¾yÒ†çÍŸ¤›¨4Sª1[ä–@"I e›lšÆ~Œ µ/ŒÓ©÷9{S3‹Xv{õêˆ e¡k#W0Ï¿=ht?ÁœŒ—ë­út3wÖ‰¸«|(éÙ'WûnñÜ\>knGcéCT¬ J£û ìòZVÃq‡ïRòœâÏeÕD10NµéMj›§8RG––4çð17Ìæ»£gå$Ú/±°‹Š‡Ú^—z”èh÷¬ôoºRýð™·dFab™¼_ÀÖ·õâ­ð·ä¦+ƵÍ85 ±ÎÄT.o`»y… dUú$°P„Æ”*ÔV÷ÈÚ a^j’óÎ-ÉWîû$À¯Q.÷¨{¶™ ûƒõ²9”F¤Ã´3*0ê—Bä>œ~Ñž >JÛ²¿Bæ›ïa-xû³ ág£šu–$c-‚Τ”µ ?[ýS=™·‡¡)»hø’µ—Qc¡’øš$Ž4¶mËȸX{Jf«áç*g‹>:ÒQ+³ÑLcL}‹ÇÝSêž¹5Î{„ëÑüìúÃÚ$„|íš!’ìn˜Wú\—~zúѵ€Ö`ÓK[iðÞ†îNP6¥¶P©ÑngÅ즄B‡R1¾çIÍ-âJE›î9ÂÈ Xsý¨±ÿ§_ÑÈèBŒÀ ýsdã’æ²\¬% Çñ½ÊDE^ÞŠd›W| 6ròUR q‹Ó·K ¡l¬òÂk$¨c$Ø‘ümÒŠ+‹† õþr3žÄj/Ú‚B‡ú ú7EÖpûïæ%öžz¡´>ëšÊ:|‰): ¡ ¼¹¹BŽ)É´e»8ºÝ–~ËÀQúl™G\_$`’ÛòGÛÃ2ÝHÃ6ª=uÏ•ì\~›%¾Ç«vÖ–‡×ÆôEL‰kpºÏà4;7¸oóÏ é¿¹!Æjláöí…=(=S©Ï¶B·Íhï¨}Òâ–é¢mpg«P´æOájbµÜ#ü“‡¿êÓyùy|´ÈÏ¢÷¹nïõÇE4a§3æ%(_WrÞé^Ï’›Óⳋ¾j²à[̽§·ûª@‚ÌI Þ†íòÜNnöt°-Mr½a׫*¢WÕ©Ø ¥Ž:]J eæ‘a,gbTO[4*²40Íi-Ã^x|È6H"J‚hèÍx1݃Yp\à[Î,e?óeÅ[ãv˜Ÿ”’íÁ²_FköTš±ã°ì¬ú™¹jÂbbe .ó>g€DÖ=¦ŸD¿{0{ß„JZ 㙉);‘Z²èØî´–¢³´ L9k¹µÿ¦ñZŸ¼“]øªÝ³i[ÿA*3¯Eå0\_y“ºK´,}¹]<:Ø„¢âÁkf0äô&¥òÚF¼ÒjgѪ9Ù6ažŸVA=îkò,7)$ÊóM—ý"—WÞÁñü‹èÐ%®m×vH?4J´æNèÆk¥fz—(ø*wÅGjuTÝØ*e®î&—ò0($?LÙ«ŠNÃÏc+©¤&æãȃ¤ÙéND´NÕnY<‡»Uùü{?ë¦{~Ã^nII t^VÅ®µƒÙ#JD4µ6fPNĆ&„¯59|–ù²¦ Èü«×ß7x€J>¾>õàžÔÎ_×Yç’ÃGœöTøJ©ætnüz±ê‹y(Æ•Öd&„4;ƒ¯ø¥—Šˆñ %ZŸOóô¬mc‹å‡¢pÙšµ0W~\´c0•#óVs'b«pmn©ÆwôŽž³M‘^…O¼åFïuö¹¶J/ÝcدôӢ¾e(¸k$gౚ6~eëbü,bl£žý¦2¥ùÄ‹q¿‡­‰ 3B̨æ“îSòçhêÈ€%?Ì(ÈøçªWÊøéã‚·.%–íG2ÈÛi"}^è>p†j$ÌkïF·˜¤@…™f4¹¢n¾éˆ_l×Ë4Òñrïðo¨ˆµ¦¤|ŒŽ(Ú=«æ…ec>ܸ:îwÃØM/ŵ´˜âkz$AÑŒOAþäë.ü&Àv¸o’“,ùñFY¼îoëA`lºŒä™ûgpu!¼ ƒ/Äi×?1¼Ø¶»áqf¬Iu‹fI‘[Ö8KЃ éÖ)òô#ð¼9Ñ­fiÅ3©ã™úÔâ9¾)‚–J“›ƒzºUs4žÛ¯Uì…éç¡@Z/ ¼ÄrÖJG;TÊïHÜY7—L«@ÅS¬ÏQ›ÓÄÄt1c!rFÔ9cRB´]þ¥Èå®Hû SÅxèIS¼Ma+Ú§]Ö×-g™–£Òá mˆ’¨Ó…—FìR‰—vxjb´TY0üÆê.D'o–ŸË¹" ¯Z"éOî­üT´m]…Ö\SÑÛ„K†^BTp^ z_°5[b±ûgxq¢/ƒÍ.fç:6¸^‹ŽÞ/ὬÏÉÚ:/…Çõ â=oË1yQO’š¢âW9>Õe`õ…DU>¥9Íýiº»(ÃD•]3YJ÷vQ_ç´të6T‡S®)Oã$jb°Lö˽ªØÞÀ½¥¹B“ѬûÓkKm¡±WvcúM`&9"ÊÃ`Âæ]ht+r¸õÃqº}•Nƒ¸as %â8§•«5é ®Ú±­¹Ù±ñKeÆŒyV"ÅbÕwÄI¥ÍõI¼Ó¤*(²€ÊÇéÌÃb+´¹/M÷-ˆ¶A»ú5¥^×4ÙO&w"‘Ÿ×UÊ(ÌêJò¥*½y¬Õ pþô’_Vâpa9†±©n4s|.w®J½Ẽi×ýŒ²Œ‚H·©¹â‹Q8ž5!¯éÒ‡ú<ìÇÈ¿Öa–­â¥”„§X"¾«jB>C@•hý8›†®IXœé7(Ð&¥Õ¦ÒUÛzþU d k IQž `pR˜TNM‡ÇΪêC½ÿ4Ù¶±ú:¸»¹‚{C0M½)mPµ€/ížË¦¢¼¯J³Ž·â”JÚJùñ<æ(Dlvf~fÞ6µN±ñUðý‡ðh 顟ÜöÞ=¥r4Ëí¶t×`A󳋯äS¿˜Ãg!&19ÑñÉ8•¬ Æ9Ð’ öX ùŒDk÷°¢sHÏáõ3`K©·‹lg^`BN„¥ï©Ý„>Úv ¹ëF|ò`( ¾ fPa{â‘í Ã9}|kð6ØM\éÇ»÷Z9Ö§ûšûv#ÕKdõl°=¾`öÎÝ0YF ¹5rÈfý‰Â³oØÖ1ßNõ'¹6Þ±; 4Ù7¬Õ탞3XyÔ2‰iX†UH·éO7º1µžFsœ©f—N"K‰5¾_Sõà d!n´’îWI\ß=÷ù€Á§í6lm¡Wee¹YòÐUrð9jÿ©z [ÊðÌeõ²œTþG"HQ ŸÆ{‡Šnøz¤ú1.Ã|ã}ú Ë!Õ2ûÌ®` åÓQ$«yé÷€\±Jcu¤/IžŸá tPƒ‘¹a q*p˜ip9ß'>ºÔˆhßžœ²ÐœÍF)k®±¿- G·Kd[n< ¹™ÃpìÍŠ÷\Ýð¬ÐŠuðÀ·;(Ý|áÏ2‹cÛØKù(êÕÜ`bxFPÆeYÃi*Ãij–PéA«]ìC¼Ó°Ç ÅôPNºÛ‘ˆËk¹Pt?gÜIwÕOÑšÍz¾ÓzÅÞ¿EëÑ—&[E`°Ž‘ƒëÿ~U˜‘æ·aKý5©®S÷R°Ñ¬ŽŽÐy¹úKN´Í÷EQ$î_׆›yRP(;©Ý”P ¶Þ œóL| …Bó£)êAÑ€ÂÍ«<ÑœT¼ç›cZ§å¼ô¥DãÇ™€žÊœLÝLî/Ðôiûš±Tó3;—ŠÃqÛ­çtÊj® ¨$š韡 ˆd9oÖÜÈlÕyŒ5SThŠèü6h¾õE£ÂW;>*’,ë5$mË48ë2Â0_SH.%^ÀŽ6ù¢‚)´)Jû“Vãie0û§oYr-„€Óôç$Ïbêø; #ÑÑ­ÍLCß6÷hÐVH(οØ&"YÜetÚk}gËÚz¥÷À.’Úf t~ÕôÆ+•âþe~ÅËD²¨ÔÑÇÕ."³ž”~f²z‘KÍÆ{âyk8u§IœQó ªJ‹wÁÓ¾y)Ð6Ù°x—ûÑ·ÊZÀeèˆÞœºѲªûjΈ«×IÁgªOâÅí!iÐ’Ac\%߈ §Ì!ž—Õ—PôÖWƾ¹›ñ…jF[ ?d‡çfßë1öð4 ‹Ä“ì.÷Éû‡©$é”±X2rlE0çõIöG®ž‘dú®Ugü m{J›78ixX—:¦¶Ë–n¹.§aPŒ§GðýÔ#r(IAe~wÂxPÔaý¨ÆsxëyŠmÙPüú–[<í°tXÕoÆ2(•U=Žåµ-FÙ¯Eƒ5ÙŒ e SäþþFÞnB7¶¢€¡îÇM!D6œ’¹G×^ðnŒ•/³%¥;_È gž]òÂ\¨."«ùÊÜa½Ô]ä9Ð1cëb D£\+¤ "MhÍ—¤Õ?ˆNðÛC¢AW±À× ‘8¼Œ–}ÆÏvµó‚ÓR,Œ&‹˜*ꋤríÙÏþEâûùpÁa$9~èMƒ´SÊÆwä;•"üò}E œñÌw¦ÚYÓ˜½vÖ?>V hÏKÚé9•i&p…ÍY‰ò:Ö‹éȱܜ©á¯äAž·Äò¤,HU=Ï¢ß41ìåiè*”vJ84°×o¹f¤“Í@bLG]îùŸÍÕ]OxùuŽW$O‰Âj 8z±ófoÜý±}|*Vê®o&l­ÎÄWÊ/./ A3ÚR¸/"òÓÊcÂJB¿7yglFK|@ÖrЫßI 0᥎¾w–q_ÜŽ ¹a [²=)Èþ¨ÝÑÆQÔojÈh'WŒôK»á‘Œ8q,cN÷²/²&\b :ðË­v¢Ò 5àÁ=dîpy•êð .ø ³œú8¿V¾¦B¬!²ܱa¿1B—qþ*k *ÞýXS)ÿbOVz! c-Õ¼V•rŽ-þAª+þË…ašèkS%´³µZ¹JxÂ( ”Ê¥Ëಷªóä=*Eõ¢5Üq>”LëÝÐÊADzðFì4ŽfÈl_ í¨Èþ֘aèÓÂΪ?B Å8îHu9zˆjáƒÎdZ²E:t!\ØM‰jíZõÚÃÙ¼•ig"º—.›F`Æ{Äb«75•ïqûY›ÙÑÀ@uÐRˆÁ³Æ|‰W6ßGDž¶ -‹¸„>þÀè¸Zøª;S+€ýÑáðMò’Lx͇ùçrQOÇu˜²ô!!ßDyë;ãØ €¬CðïJBsnÝžÜ} ß¹ò²÷?ºøñ"O©|æ$ÐY +†çcœêDËùಈi­:÷˜Su ìó‘¥xJkÁ}öÕ†…tæóÊÉ9ïäQ‰-4•ר,#Ä$z)Ó]Ô4pj#¨¬øìÕ&ŸƒB(ù³íWKÞ¡ .ºŽ@Nðä{@š?ˆxÙbüz§rFy¸_ô—(7„¾†lv.ªFQžG`÷S7 "99*öÍðÔMøÞÅ'J‹iKú¸crŸá¥æ+³Õ ³¤ ªo3Âh¾\.—•-Á–$ºñuü @áã¢æF©éXb­ÉßiÞá±{ï*pÖ¢L£›¬™'À»ºé0¤5åSšÊû˜‚½M­ð­–GãùB­Ø c¾qé-]Š©££[J´;ìC>w0 „Ysw”l?q°ç{#ò‰»Ã²®x‡è“Ãȉ`¯DŠ×P´:ÝKvbÂVø¸ÜÃ\­±§8¨ötŒQüX;ì²jÒúôA°ë8ê—϶…ŽéÌlœsTÂ’T¸£&ÖÛÆÒº¤ô{Ôjìê¬É2îqõ¦ Å!ìc}£H0h×x™N]í³tƒÞ¾cþz}é˽sîÔ÷{9[‹ø‡KíÙD‡kúܳ@*ç!48ìÝÅI|igÿ"$ãÐI§.>n3ðˆ5I)“Z»·F\½”sÿ’òq®ÅMö ûT½C.K)­k° °)ç4 ¹aþ¡(+*Ê´lE¨K°FcçÁ¨m †Õ¸ò©»ƒÇæç­^Ô¬”C­„sÐû#-2ííil6.²òøkZð„¿üâZMGrÁö×!kù7e²«ºéýô¹»v.¬1qøð Mlƒè‡9uýh…(H²ÜhÃIDSáM¬õ28›Q~‡¿]|ö .þ'–ã—Ò°Užá×Dï:Àâ[8÷ Ï+€5Ý®_wÊÜ3;`œa_ÜiS|ÒÓ3Ox(õ©ñF,Æ·¥Ú HŠFÀ)£‚[?|J‚ahøÖk|µ¥¥‚7›’•·Ìo·^ >÷ž :ža^Ýæ"YŸ:°~.bèïÛgêl(‹<¤P¯7¯Äwø6ÑFà®—ä4õÌfACN0K%â®_‚{]Û#›Ð!Eš Ã@ª õ$…eŒ¡‘}}ýó$ó9½8ÅaSl¼J } JðÙ­.w° ³681o¿ßzm¶³ä’çR¶ª–w1êLUÒ™ôžÆqÓÅ#â­תéA2Ú-bñü₞ü}4KÓ)b¡ë\4Áx …xwý¶éšåñøžÕ^çaÌš)‰ËÛG)Q\Ú%ùì×C£¥\> ö®UóK¥\wÌÕ ÅñöbAUýtc@Bën8¶{NÍ-aþ>_ý*åü«¿î—&oÄ3à %žP«g˜/Q,)Zú=%×z'<Ä’ˆ‰Á‹†p‰wl F#Þ×9AôƒÅ¤ÌlЗÙ=(ˆ®»U¨B›ZŒáÉ)ãø³~g ‡7':˜€$ìtäÖb ¤2ßy4{…—oøFéIÞµV½WykáŠ]4ZKö¹ÿæ;ªúØÃô÷±Y½¤ädnns;<#J=hú ý}pTôîiÆ pn\ý„¬ÉÍÒù,ñ¡•8zósÓ÷¾@^`‹õôÉT–ÊãbS­ÀõéOûè¼9q”½«w2wñö™ i ª*×lpS¢¢¾{¡St¥Z ¸0Ó&õŒgïÉÛRše# †©èЍB@RïcbØ£QCkŠGz¼`a›qsŠ6„rĸl“ Áîn@$¼öQ§-HÜâv9ƒdöNè¹8Ÿß7>ôýk ,ðûN6/NݾZʼ(ÙV— Ñ4:}˜r žÃLÉÍ:`ÅaYNwgæ"ó*ÖÒïø Õ±®m3‘'Ћ=:šOÞŠQoTJǵôž¶d¹U¥÷vu¬ÿ®Ó·!i{Y*ÞQE‚EÃ.²6Ìûr²çƒ®»ÔŒ?<´‡y·YQh W—п¸‹á#-šðƒ'3+0—8è((£ü:k6"=NrJY{Qcß8Ìëóä†{¹WŒÚXYíp¥°Ù:Šp¤®g)UH8ÅSK˜x"åË’¸ßªt‹ª˜íjÉ: X©³8ôÒZ¢óV¿bõSi¨ /½„@!Ç@h¥¾“›¾¹ØºOS‘œ!¯„£ÝoÀÇ`¸­Å¡Y[šþÞsÙqHö<Öºs™I€°ÜÏC9ù¦~þÐsÂïxØf~ñ[©bÙZCcb¯â+/>ì×Uç%2Ÿ§°ËÞ¥¶b?HZy„{®N ŒÁh2¼BC´‚K^¡®ª«Â¡¯" EÄ ÈŸV™´qD_‹¢èÇ}?ÇÅ[uö‘5Ö*éèâ³÷:u’aÜn+ÒOÃi–÷ÚBåúÖu¡U,O@ÖÊj##„%0`ƒ«,QOhl¿)vØzXî“ÒÝæìS¹(:B‡¼;¦_wÓ¥4&~›šÃTL”‘|:¾[\æòySy:q愦NÍ„ûçÍõÉä.:Ó¡ýtL¶”¹N>.FãCºÌ¤Ùc'-¸Ë™LoÌšU2¶Ïá*ò‚¨ð>NØ.¨â8‘Ü-÷ªLß2hˆß'>Õ0‡hÞ#o‹ïì0}(Ïýö]z<‹¨‘Þ¶TTEPŽÇš0~þòd—>.tg=$ÍÇß±¢Þ¾ Ô?ÝÚMU„à„!)$Ð>…]\“ÿäqky»{Ì”]ÇÊØÈ+YLÓ¹±àið7ãÙ¤D}5^Ó=a­ô-Â*ŸÐš1²g4XÇž©<^O,¯îI¡ŽU vϾ¥ÆgͰË»8¾n];˶Ðþ€çm«žŒ õ Ï¿ƒÖ¶ÙŽh7ð\ÓŽ²ÛuµÃ²Û*X vd]«oƒe4 .É}1®Q2“¯´@²$›áf*é±| YÝÄ»õ³xÎûg}É““ýyÊ4Fä|JÿÆž ø endstream endobj 816 0 obj << /Length1 1430 /Length2 6441 /Length3 0 /Length 7410 /Filter /FlateDecode >> stream xÚwTîÛ6€€¤€ #FÇèîî)aÀ€ l86Ò"H "R’Št# ’Š %! !ñNõÿý¿ïœ÷=;g{îëŽç¾îxÎÙÀ˜OÑnQƒÃ|‚ü )€²®‘愈@(Ò òJ 4ƒ <¡p˜Ôè•0ƒ©€‘3]8  …r ŤÅ¥@ €$ù—!!P{Aºü-8 âI T†{ø  Î.HÌ-œ\AIIqÞßîEwê†tÁHˆ;æF°Àî… }þ‚SƉôðööæ»{òÃÎr\¼o(Ò`ñ„ ¼ Ž€_tz`wÈobüÄ@€‰ ÔóØî„ô# àu€À<1(˜#ÀÜ 0ÖÔè{@`ëüaÀ ø³4A~Á¿Ãýéý+öÛìàw÷Ã| 0g€Ô ÐWÓáG¢‘¼0Ìñ—!ØÍŽñ{¡n`{ŒÁïÄÁ5ECÃïOvž¨Ò“ßêö‹¡À¯0˜"«Â•áîîÒ“øW~*PÄSußmu…Á½a~œ 0G§_Q¦0è#DSåO Düæ ADA ¸„$òA;¸ü nâãù­ücòðó€{œ0 P'æ‡ØÏì (H€ß*þ- ¡H€=Ä #þ':†8ý!c:€¢V Ìà @¿>Ÿl0³å‡¹ùücþ»¹¦–fJ<¿ ÿ­RR‚£~|B Ÿ( (() Çþåoþqÿ€¡æú'¢&Ì üƒ¦vÑðús&8ÿ\.À¿oЃcæàügì­A¢ Ì—àÿyø»üÿfþW”ÿeìÿ;5”›Ûo-ç/õÿ£»CÝ|þÔc¦…Äl„.³°ÿ65‡ü±ÄºG(Êý¿µšH0f3aÎnê©EC  H—?è¯`»Aa¸'ô×3àþK‡Ù5WÌSâ‰éÔo³Jÿ¾RæwüµsB¢b0ö!Æ4#‰ü1ËéAÿžk€? ŽÄ¸0ôNpñ¯~Š œà(Ä/ô7 " À¼^˘† ]ÿ@@Äþ[þW.(³Ÿ¿g“è_òïÇACˆçfàÒáëÂÛNkïxó­ÊN×ÌŸrñùÍ!ÚQçd„é\Õ١ˈŠéon-¬ªr+|dºôÛni ŒlM5|ýÓÿÂ6Ùhbí5ñ‡qÚÞ±¢mÅúw÷ˆîò™(¬û_>ò7 qÅmÁîÔæ?BIRz÷¨£ëß•ÍG̬®W‹i“\”MòÅ›ÆY‡”¼ØçLÓ± ùîÝà¦ÜG“¿?þ1E™7vͤ•ÌC°/\ìg¹"”p6í»Xa"äÙEÏFoIw÷˜rx‚ÝOiã‰ÖíY¿—ÅˈáŒiÚö‘Oîi‚nœ¾kzF§ˆÍïØcRœôt¸Ôš±qË­)î%Ì)"9û ZËhÍïâ-öž¼ú)Ðk}7ñ:¼Š©ÌëöÔwwil/¯O4Œòm©Ê‘ — ¥Õ ãd֤ݤÞë§ß*üdÌ­/ÿV²-lyîÓJÆQ eÞiÓÄ]¾«HüŸ¥§Þg: ,O äL³jÉ#P‘ÜP$Yßñ­ù˜–4òGI5ÔDî–*6⃭-ú®|ê¶‹ÖŸ‡¨j|Ô³ur.Ó²"’ô$ΟíHm¾-ºµî®,pŸŸ×0Ìðóý@²Û͉ԞxåýE!»®à”ðÈ"ùÊkZ•QüÜäÓÊ}¥¢Œí™kžï'tÂLé]éÜ5Êoª=š7q´dÛ8Ú¯œôÏ\XoF»}¬ÒDÍ¢;RœÕ7ü± ¤vØõ`AûlZª†ë{>_—ÂD®ßË•zøp|a~výºÈ?1ÅÐ÷â>Þd`Ìêèˆ=ˆµžc/­V&Ái fã?K­b Lñ‘½Šp†1†X>‰š[S¦}ñc½òe’oÄW°¸Ýñ“øu[K™*çœËÎËí‘ʆ²§‚å¼¼  é¼ÐGéQ9¬T‰î x;óökW§‘ÁÝgät%¤k¥€åûÔ¸÷“"Í(\i¨?ð „Wm)L2Íù»Øc)‡´ù†Öh0Úâ•Uá@y9fÇ 2Ť ·ª¶œN•ííÅÞ“dÃí²üN5íècã†dL@ÜʧͣËÊ”‹£¢ÖO‚o ¶[ïr"ÉWiùU}Í9£XCuõ†“Å>rϪJÏt^+÷ÒVƒžøˆ–,vr¸´ø8×zRÜúÈ/2V#ZÕå¥Pgríi›¸]áz\Ì*ÌÉÙÐ_;}žÃ1Ÿü>/n˜¨n¶¶R+º8”'kƒ¿i™dGQ¸›Á½Ž(N²Á’Kž#ñcœÃú‡ï{ æœ’˜KS?‹ÿ -Z³Ó ¿²Äâ…¡ ƒÝ«äR¼^]=æq‚TÚãîO÷½7¥ö×ë¤#•Yè²Sylœ“k¶¨,ßS<¾"½„{z—¥nš†pe7IÄVõƒc>+>÷yÉ¡{ã{†4BÛlaƒsX!™±ô{L× A±ÆÈ¬AõœñŠ›“ÚmtâQBN9•ʹ  uwA”|hØíi‘hö'6Û_?>­v¹V ^ðpߢ"l6¥¬&wiΟªËë¦gó.¶®Ör$”àé2ÎW•-éº} k2KNÍËOVÏä©Z‰„ŽUãšÿ6™H°&ÿŠkèq¤|„p€¿ÏÉNÜÑ×è€C“$óà}«~˜´š&nQA“‘ræWís>§ã‡mÇ» ¾£„¯› &ÆÙÛ;.«qž<+Ü©ô¦|ÙÕLËäÖ=—œw»eU¬¹.–€xÈàã'\¬/çR¢uç2eÏDõØ^Ò f¸V’»”¯÷Púß­jç²ìwØ[ ™m‹• HJëz€3ì]ÄA½wÂר&õ`Fóu²x2ŸÍ¿ôøP祇u£?ÃG"=ð0+7òñ8-µí7÷÷*}ÍQˆÍšz—Xos”m÷ê´Ø+ÚÆÙFâ³>›»åÍBòÀ6âÊÖw[\1ÚFi-AþÙÝùü2Ü‚h{lÛðëFñFøàÑ֘ǂ:ÝÐërOnN?mÐÏ9§ ©éb¼Ïlµ:÷!/ÁîlÀ Ïé»À'£ó$"–XZ‚@. Í7¯›Ëªl¦å™Ö±¯Ì¥·ãr&µA•7Å^³Í—¬Ç&U¸Ê¿ñyís%ò¸•JÿÇâÒþPÊ#Yeu6Àþí'Í ŽsݵøM‡Š‚†¡Š|þËÑö‚v¾•µ± IOæ_\XZß*äïCì•ÞÌüÒçÙ™ÉòÊ~ë¶‘Off&;¢_tËE'Ëxšk«ÂWLw]ösÕ G‹¾þÆ“«^Lý‰ü„xÒÙnMÔÈÌ®¼Nù>hn÷£îìý[¢Á:YŽý¤lÞ™E—Ò·ßÃ\{ç¶•T³CDÏÕlbÆc}žÀ\üï;Þ¸MH0.ÀÙÈ~õµË ¦XIò•ò5:8N’øli‹(H÷é„W2›bLÿ†öÎÔ7º§ x^w©5xã¨å&ÅÝåkHÃaáQém>D¸èÈØ*òˆ­k½Ñz%ùum¾3i—&Hèä¡ ³€›PùóŒ7_¶:EzÓk»œ¯Í°Súˆn¯qQ/eKhæj9Xeïè3]ä”DL%˜<Ù:¡YüI%™sWe’ssÈgJr¯à©'d–þqŽ÷7£H ñEæºÑx²gJ =2íf R¡^‘Ói÷¾Æ}çþBV¥zà( c²ÄYDQ:ôs^ZKÚÎÑ…sñ<©zZZ²XšøÕ-Á #–™x'X%ŸP¶ „«©oý¹¢y¯ˆ°Ì‰onz㙊ý¥wUtÐX°ÐcеÙîÂ,°Ö²*‹DöCÅ•fÿã¾×så‹o{5¡ r†ŒöÕ ¬ð¶¨K}9<òÙÛ±¸MØë?Ô¶Þ%ã›%Á~1-ÝbÙË;Wd:8…ºO.Ý“tY/‰ˆoZ< jhË.Ÿ`Ïß© Þ‹8»ÓëÿB¬%ÓŸi-3©?Q=‘Z3£É®ÇÉõÑp€²ß’=‡#ùì—ÂÅáïíñ4KœïšæŠÞƒWö÷^–*¶WcÉ ä½(ùÎõ•V J£×aßÅRÊ­s³z2ô¦ŒZ–ø{<‰ÃêNë‚ín3þúìD¸µëý"Bv[þÛ*<Êç½# bÞÅJPånýg$µ”äjƒÝzh›‘<ÆÛoxˆ,,AУ™÷ú·ð"­,gBÓJ¾<îÈô?=´o“L Q:Q{ÉK§ž Þ½ÝmF`1³òsy—ô nÔÝ /9!Zs֗ ¯Û]¶J0Ñ5©&­»×³ñïçú[,/y‰©Â¤8óÊÛ­K{¥ºÐ&…½ëã«Z‚#â…ãøhdúä ìF¼©îÌJÉ–¦_è‰-n<™ õT^g’—FÅÜ”zø*î=º‹^ÎêÞ˜.vo ­HzýßÐò'š(q;šÛïöXÌt`¤AdÅmá“Ñ ZƒöU‚Àöø—w ÄK|f:¢=¼]KL>Ïšñ߉cí^Ü`ª[`Ž®ýHçtÚ FpV_ZÁÊ1芒7Rù7ÚkV¯.3 wôØ‘½RrtªúƒZZ{Zø×E)– ©e›×J|ÌX>m“ôÓÃ1“Ø«ùáQ+3ÕŽßH)|¶ŠÎ—…‹VÒ$qwqÞÓÂ6xöŽ£º¨Rñ‹ÉicÓ¡24Kã»#û§""6÷ɦ[×S:Nî=•¬’4‘iŸ7øL{ ÷ùãþu•ï3œ'qÙÒ3·6gµè^îÛ¼8åî+œ}.¹J…‡<£eE¸üÌ¡: !ƒ³f–¤/NòøJÀdåa'êér'8+ g{†8yi³^è‡y“lʈ¨Áò™×[|ï˜Ý9§éÑÌ|½õ¡ŽÇĵ ~[²êé¼ùò€¹õY”Wÿ-Ÿ`EQš´õÞ7Îß±œläŠq]÷¢Ÿ•ùÌ3ë%ŠÆ:óNI åÄfEíªÅ·Q¿¢¦Uív«¾aM)m ƒ¼Onp.VDd±7=È: Í ¥ŽÕ{ql6¶Q;Ÿ[4¦Ø¯DêÊÃŽóFa€clâi„ç›°ˆÖ[éVÂÌŠ&ê˜GÇœ¶¥—Í9RßÚøç¤¸vCi­&ˆäñì¯ïøõö_øw½7˜sï xÓ%…ª^aWd1-ËÕnb=k‰ÞÖ EÀàBó÷ó&z†Àg^í!*®¦éGV]“³< ¼Ûåu3oéèx‡poè“|.G²áSip\¼«U&  l¸jŒMÆ»wQØ=íÏ[è%Û²°‘ͤU–íc'fAfÀݼ~”ˆ›ŠXê’ RûÁEÒ×[õ”™ oˆmWÚ˜»ÖLò¿g/å5–:â]ËéF u·<Ð{´KÖm¥7­žÏmùêǽuiV—mñ¯¬BÒÕÊ‹…¡?k…H½•)«’Y¦˜z­|TʵúyYGìƒÞD[†G™q‹ÐËOµ¿HçÆ&Œ§ù y§KŠiri²±1'÷L ¼<{%Ñq Oá4(ô1Úên 35~nGF.ÃtFÍìG“£þb¼ÒƶΩZR¬yó~ÜmÃÄeõ„ä4ýáŒl¢jÁÁt½Ð©²pè°!¨¢†FˆÇa¸Û:I[H- ÝœŸô1ù,@ù÷ŸP… ÿkv‡ðw{ñ‚?5ûqîê´b‹~Úe' e–AèÚ¦Ö¸)OÌ=ûJÌ0€O3«GÎú¢/)¡^„,M΋—Gwé@pëk—‡G´íjuÂN%hj|5’ž¾ÚVq™Ôì\Üa)•(ü8pÊ™â³*ëú¨ \]±Ïß%Hþ%ûÇ”4×Ì’Ó>ï¶ØmÚá«Îœb-8lîsé‘V]t K>Š6—éÙgâì@Ùâ1åqáp«¿ Ä%öÂCͳsý†¤Ä†a×4L¹i> œÅª4Ü]?å:+8–#—ÃD£H]HƒÂÍ‚3íx7޽Â&÷L¦ü–¯Û…iô;æ/÷rlãd¶GçTvxˆJ®±—\h–¢ë„©C©d>­Aù·ö½5¤j¦FÙÚn©p†4]¾-¯Ü-ŸbÔ†W串åôS–trKGë¤XÍÕHØ ¨JOX'ÖoPÐáŠÄ“ú",ån°²:çSŒ=cê¬áƒ×ÖSâêq•d4ýÇü/››å߯6$&¶t9âÎÿ˜/ܽêÅ{&Wäa|tËŒ5µ%%×îd7FÆb«”‡¥1{ëudŒù(‹>CØËÄJÿ9ªð\žç±™hì4ãØöU•ÄJqÅZ|ƒ[¼=xÔó R4ÍÒЄà]PJ¹ýà³®Þ;-<ꮆ§Å× Cqű˜åDòtI€ªHþ€¯b寙y"bø ÐnFcÎòõÄCvÀ/ô–¿Ëï++GÙq=J—b#Á¤våûÛôwxV¡Î‡š~ouõRzƒˆìqïBv"ÔäI›mìQ93^Ý!åES“¬„eÆDt•LŠh<ÀM+½v«JÐãå ý`*ëù"œê%xoóðj–ZIâK¬œËù}¹”!Žw„ŽU0t›^F+ôV¾«­âÒ³Æéú°šBOVé¶Þý?F’±±…Šg—ºæÕ{N8ú3ͲE\W"7)= §»› Sç›+)Jp–'wXV7Z•Šz›4ÞÕ¯õ›!YÙbcðñÏ¿¸Œ½¾ŽêYªéÞw~f³ (A y7[§ÇæWí¦r#9õCßÁZÂEmV%t´R=[Òƒ´°]4 Óu3Æ“³ƒ|8èoË ¹¤¶ Iºìß»= ¡Þª ìÜRúÒJêgZêyÓ6`îb²caDžö´­Ö6&¦ù~[°ý:êº!fºMíµèl_ýè3};iì0'K‰­J Ü»›}«{VEC£Ø(·®û~½Žë®¯ü5È(¼ªºœå4IólÚ#›9Oµ'z|•­¶¦œÅ7V‡3=-¤¹üvÌë[a{±i×2ZÅ´É‘ùLWÛ‡rÝsÊÕú!ªôQ¸ï©_ŸüYws¡¥ÜòuA^¹“BóGjqË¢D‘ö»ù???—@a *”)9p«…0E=TʮşJNÌ0G{-TžŒìñšm.o?¸Wÿs]ë©1Év©»æ²ôâ— ˜à ÙDÔj Yšƒ®=-·sîwIĘ’°ÿ©w5võMë¹ÓÀží`âüTV¨Ä8ë¥+ûÇ®¢Ôf Õºµ”—•8«î?_n¶a=,g§b-l÷ôøü¬gøYçG’ ~p|ÒÄ•áH¿pRÿÛ ^E¿B ýz0xn;ÈÕ¦5 $ + äGÛ)¬îÅ[ù^b¬™"±ýKl_Û^9˜¶^ÎÔƒÎk7“Æ=ç(_>¸:I?L#й™ª³–".¡;A/(Œ¥ ´c¯ÎqlŸ`‰ÅÖ#NíQú¸Û6ño†goòXpú5þPXP endstream endobj 818 0 obj << /Length1 1478 /Length2 6908 /Length3 0 /Length 7903 /Filter /FlateDecode >> stream xÚVT$F—´LJzH*Ý)%%5Æ€ Æè”–$¥Q¤AAZBJRJÒi.ú«ûûß{νgçlß÷¼ñ½Ï÷>ïwÆ{ÝÀXDÉmWG£p"Q°,PEÏH ‹‹‚Áb^^Î þ à5…c=h”쳫`áPÜ%¦ Å]ºé¡Q@mO7 D‘”…HÉ‚Á@10Xæ/G4V¨ õB8õDÚhÜÀ«‚ÆøbNθËSþZùa@ˆŒŒ”ðïp ŽEÀ ( ç G^žƒºÑ0çû¯ü·q8Œ,äíí- Ezˆ¢±NòÂ@oÎh÷€c½àÀ_túP$ü71Q/ÐÄáñlŒvÄyC±pà%à†€ÁQ—ž(8xy6ÐXKxGýá¬û‡ƒ0ðÏ«BD!§û3úW"êw0C#1P”/åtD¸ÁwÔuEq>8a åðËêæ¾Œ‡zAnPûK‡ß…CêJ†@è%¿?ÙyÀ° ÎCÔáö‹!èWšËKVC9¨ ‘H8 çøUŸ* ‡]Þº/èw[]Qho”ÿkGÊÁñO è. áî ×RýÓãüƒ9Áq@ 0,%ÂÝp˜3èWr_ ü·ò ¾¬?ЃÆ/)ÀŽðË€¿Ô Äa=áþÿÝðï: `8 =Ü ü“ý†;þ±¿ì<á¼¾þõù{e}©-4ÊÍ÷÷ßÍYèkjê ý&ü·IYíô“ŠˆI€ˆ˜Pêrøï,óÿ‹ûoÔŠø³6ð?µPŽh Ì.ïî/^j‚ÿÏqþû}ô¥Žá@þdo–Ã.¿ ÿoñÿùß4ÿ+Ëÿ!ûÿ¬GÝÓÍí·•ÿ—ùX¡H„›ïŸöK{â.'B}9¨ÿt5ƒÿ1Äzp„'ò?­Z8èåd(¡œÜþ¾D„‡:Âî`€ÀÁœÿÐ_=¸Lï†@Á Ј_Ï Pÿ‡írÖ`®—O‰Çe§~›à—£ôï#ÕP0´Ã¯™“B±X¨/à²ñ—;  ?är8à>¿u ‰¢Ð¸Ëà%½@ # øÕOI Héô{'!9¢=±7e€ Ë·ìŸ½8„qóôø'ᜱð\.+á¼Ñÿ„HA~pìÀ¿j‡yb±—óü[[—ÄþÚÿ~<àp8 05†ÝzàòúÁ›ÃJ%6o‘•A¹QÞ³tÿ)l³ç1IŠÀˬÐyìRJoÍì²ÿ¾â4ç™ÿfC5IDc’aÓIÀ©m¢ÑÈJ`røêÛ¡g›JUÝdì"&Š«gî¦÷] ð[µysÝ=¥© òé½»4|ªºËfúÃ'V W_JꟖ}yt7Öê~ñožýÓqf.bœ© ÝžõØþÁ(]ÎЧv¢ pë‘x¡¿å‚XÜѸߧç&bm,<,–Ì„ûtý#|þÊë©ÚLýK ç Æ¬<‹¢ÄgÛð¬5‚&–Ȥnû"¥_)ô^_uZü¹ÕJ^߇Öˆ¬˜N}¶z&\\!X];ïçôÓìøOp”ÑÕ¾æj=}&¥rXÁ¸$¢Í}UNnÿF2ç6fÚ‹S~šSãKjÅõp%§!¥:•^uP·#yM0ßÍuQڞР‘ —§è.8%sHÖ¶)¯yÈÆB$¼7dj“ð[cbbý ÈFö­F(ÒÕ¹t”ÀåŽ÷zó¬ûÙž+ŸpÒª­BHFÿyo$ìWJá hpÜ,2I ;)u<†“¾uƒ°ˆì‘kgêjtŠÝö#ËuÉ ñÆt”ä©‚ )5ÄÁ°’ÏÉ+fÝNè–ÄijqÖ÷¯íÛÒÎpÖJCjÄñƒÞÆ›êy‰Gô^õïž„P˜î¬”\Lhà \ëí\vÇ÷>ÛµeÖ´«•ß@“î|©1Û#wQÖwŒiŸi«3è5‰$n,úµåÙÝ yAÙë©êÀ>)gHz¦Ìbiìèëy“b=»Ä§c¡¨qq~DÿèöyN,d’íÃRžù¢kŠÓ¨Vfƒ¶): ªùšc[RT+îX&”¨õŠ%ÌÊm&ñóÚ”4ƒÄLÛê™ê[XŸ~ùÐýî3ÿüÞ6r·‘ű‘…ä »Qœ˜Ùn.ªÎDù„ðÙ>N÷ñ{öPJ?I=ä+ÎÂW…Y{§“dB6õ^JUohµ¾s Î2/ö­mó:-%‚ÞïfÕ9ÏHzŽÇå}¦U:ÊZ7%FˆÂ’ì^÷εÙH¢8b˜ì*œôJæ'ü1rSX¤ ÞñõÍhS©È(jy+M!NµÊîÞžÚAûôQ9;i•H^n ©Úög6ýÑÕ„|Aqô›ÅŠôP‹1!°¿¾èñYMH·üPdä ¹Üûuï´´OØ;ŽÖý*\The®X(„Ì_üXNítÚ¥b“àæþ˜¥þ{1ÞË} Aïû çø?®>[ßáN­Î '’)c½õPM¤tEà‰/¹Tdà¬M Ò“M}'kòØqt^òóJŸ ¤dñmS7BÎA?ÓxߟÏ¸Ô ¥©5hóV»?wÕuµ(Gº4S­½‰î4N·K°²¡f½xr"ThÍí6¿a â’<­A¢ÈXð°ØŸ”Õ~NIߥ¢Îù¸É®¹êôÑñ”ºSH®ŒÖw÷â>n¥¯?Ë:I|ãœ<ãnà0ú$O1–ìû=*OÖ>=2¯ŸÔ"0ÅÐ$'¹‡A\ï[ÓôÝd´¶ÖÙ#ðÿ|“ÛÈÇAvVÛÁ½Ä"I¾6sÖ]ìrÔ«Á”CùÏåÔœ7ùH5º°…V’™%T=ºpïŽ"æÄÙÎte!ì˜rlm&;Wüa» 3mázõsY°¿'‹.àZgþ°Ò5’—@wq3e¼ÒO?ñŸÑ3[âõ8£Àf]FëñÆ‹ xžtGxÓ]g[i–Ýœ•µ)‘ñˆDTõòø{¹©æúéÜwé›Iþ5/åÖ‘V¡÷CSZ=iÝl4œõ{8'‰O6øÙÓ<(}ˆšŽ%“¦Ø_ÙëEÜ¿A'ø…´öaYQ·äŠÂç•MT«RnƒVve§pS$Ò?Sí rKtÂÈ©“¥Ñu~•ŸÏ›>³ÁM¬wDSFØš3³ºh¥†ÍR…\¬TÏ“fìcζpÛ¾ŸÈXçÑÛÔòG|ÿâs¨mÚË:ヶö2À=ÕŒrÑÔ܈m:³Úhó~y”õýGŽÝÇk¦_*Æ“Êç\¤L¡¶ÐÞ¶ïû\"þÜÛ£ÛL«Ål"÷²kìöwÒfî} ÝÑ|ñ†dLÉœ`Zm³)¹ë¢øç]§œÛ®5îÅxº,UÊå«ï]ž6Ò:SMhÅÞ à¹Ò¢8-‹ ¹§ñ–aÜ€Ê! 6J+ÇOmص´f*œ•½'Îɼ|¬‘ÉÛk‚\ØÃÔºÖØ[VÒ»žA;+÷d9…4TBd¼VâÒ§ ²oFX¦#YÒ”pŠÆC[C9È!¹Ê2Ó.zMb³\ƒáño'¹d˜«©°å®ƒÔZíÇ–ž{¦æÙ»)¢E¸æ—êï[±ãµ¾ A¹ÕÌŽÓ5ÍÃ㼌=a‡~œû5ô ƒÆäâ úvU‡Üð>ÿÐ¥5Á¼³x‹Ñ^> `‰´…Í>•Ý™ÇsIÚX.™—?–gçFѬ÷YIÈʘߺDeÎ;q[×díZÖ—$.7…]ßõåÊŽ"Ý|íÂ-ôné]UÆ„Ò@r°oÊZYŠõp3õÃ"Öo5øc ©éÉ÷“àË€S-kK‡çkYàšt˪ƒ©6bEÀn̵æp¦XrÁ/%¬-™¾Þ{WÏhh)tr¨‡®Ë§W¬oŠº{¥‰ªWØr˜+¥æ©ÄH˜)ûÚÐƚɊùÝIq_%*.v¯ +ˆeãÊ><ÇjõõÎròË{¬’Ìmï_WZ(–5ö”H—®ÓÔùk5ÇMÈÓ÷û^Y }V©þ´Æ©$&צ|¤°Sð¦Ë(’¶ÐîdÛ+T{òÓ]T-ˆB÷¥™HÞB(˜GÛ÷ß ûô#÷žÝvNÈL06}Q§; ÚäKÒu°ü!nö=“Vtófq\˜èN“ ï€`á0GÕÕ>Õ©€]K…ªíRâÌ {ø/()Uo,Cú\¬¢Èý´[èSr?y,Ïñ•A•5GÁÀöb7ŒÎø®’ }V½_Ç·?G6Ë>‘ƒdf0&–ghy;ÉGq+xpéž„pe:?&Åî FQ];ˆ:tfß{#:Öm:ñI]¨Ï[œþSNÚg#sjnŽú¢£|™B¿›_Í£¸^sÛ/Q{êúgÃðÂÕCô_àá-ºÞÈ|›k=–ˆk8`?cûh2 ÚÝ.>hícK (³í¾F¿Ç<ŸPî:ÄÿBý @-K fŸ²[à‰q‰:ámˆ+O>¿>ömÀcNú ™Ðàò§pÊÔDzýÔ†ªTCïUÕÓ¦£ŠïÜ+/÷gÚÐj'zàQ0¦UÖ£fu¿kªâDh’C*õ½-y“áOR¿0£®(Ê!f„*Zùq–\@n.ЇP̞Ѵ3³ÅŒóÇn ƒÑžçÞ›­ëj)1îð­{Ï>R +uÆjW›$* RîdOïÞ}/«€~áNQEcfE}þžñë gŽ{4A“Á<Þ{Üí}Fgü嚎w‹FÂ^/¥b¨ÕìñB»W-%äX÷å;3ÒH2öº'² ¸›œéŒ”ª¶äźæˆÃHïŒ+¸Qs¹ÏñS¨~¹±ïéºOxÓ6sæ]6w)^¡~kä1X¿œ$”¦ÉVeåù”òí%¹r§M;TÐ1´ùúöõˆ±$~;í¾YdD#Þô•øBH\Hоº¡Òt«~Ú; ] ) e~14PæÙ­ýÊÅ[uˆ"³×£cc&¥{Ï_ó¡ÕUs]ÛÌ´¥нúŽØ–ôaùÆÈòuzŠæá§N';`Ýû¯Wj=SÉjO–LÐ& ¶åj<áÅáÀ:]K•Íûö_¨hã˜й=ÏáëŸHÖoçÓ ‰»Ùˆ/®FÅܶ¬®ƒP=ÿq˜b-U›¶ŒZx–²ÚJ%G#u° ºÆm÷‚­gW¯µðù±†J4 ¬{Aë‘Q¿#-~5„Za)eC^ˆÄB‡„MÅ’á!oY²ƒæÃÐÏ9Ÿ½ƒ Í;LªFèžDÅFÌÐ.•–*Ô…¿(ÎÔ%x²ÔQ6Új±“ÆÔ&5nsñ]Ë”¹ðTïšÀ¯è ÅŒ¾uxÉùì 1•Šñ^>Æ~¢o´µçªgÈ?ò¨›YL2_`§m´«âÉGvR}Ä] oL è; ¼¦}ò`ciTý”9ÓïΠ…IªŠõ*bìèøí— ‹MMQ„!1´Gå"Ï?–øþâ³R:’vÅÛ·ŠUf*Ÿú~ºF‰Yh.Ð$'hðljOuí%¥Ý©‘׺OÉ.¤>ó]”œWgv;ÿâ£Ù45ÕôÆœ™åŠO»!MþɸQCQšÉ3HvÍ3à'ù]ìzØAfêvtì-õákÅ_oœµpȾî.-p`ܺj1„ Ðz³o=PRàãZc†Fœ6z Šôyì1©!0u·ïÚ{K5Õ7÷Žªn¼›Å·`ŠÙ3,\Ü—WÐuõ}h‡IÑ é¦^LÊ3/ GJ1ï¾L—±Ò‘ éØ {K‰LÑyŠÇµ»B?ç1òh-)|ÑG`ò-†¡:~Ýj»sع¿áÇ@š1–ð#š’ŒÌÓrF¯…ÈKåµmþ9È$=|UÄLÜÿÁEêbi­\wû„÷èp¬Gw‡Ñ¢H*G¤/¤m¸rî“ãí>›^Å%œ s­íêıSi[{÷¶÷Zì¦ âã^m‡±·ÂüS·Ø˜ƒ¸26c?§`s›Ìš®N‹é_gä@}‹ª”h{<>AÛ¸£õ*PŒóŒÕ§«»Kgýû$·Hªj¹«•4$•j9»ßè.à6×øŠOEÙ–n ¥QM)5ã·kµï˜SÒt©WÙ} mL©À§1ôT×ÉÔá„¡¥°™b_’ÉÇ©ãÏó§]¼—§×DiO¦$VÉûq‹ùÈé-·¾5Ï»%0Ct§¨»OYƒœ]\8uð•lruŒ ý¦w•%üLBi=ÞY¨RhªÆHÑ“é!\8ØUPQÚ³¯a$ó1¿÷K.†ŒÊê®å]qƒ¨Û©ÆYG’f3.YþL|-ð<^Zt/‚Ê{£~@¿œ«é_¹g¾l¯ áSìÏ‘²h¹ô’.¬Š2ÊÃiœíàÁ^Ö€Óèáêui™šßômû׃åPòï¾~SKlBt¯/ÿã\ø =›©ßLJXß —k|Ž~UòœéÛѳqª DZÛ¤‹Ív°¹f)ïÍJ!½MBœ÷63p8¶=fœ”?ðÈ-ä{×ôhrÁ™,Qå/TâŸn?ô=ÜYò¤¯EùìR´lu•†ŽÐ¹ìîˆ Y¡&~_Wi|²–n¨áÄé£$—Ä/“IІ}wìµx¡0O±’R °à0$Vl #°Îܯf1s.}4Û 0ÿê5Óšdè=%ü6%Ô–t ¥“5/S¯{¿>¶B¡Ü®Qä„"Dèaû·´Ì]æ —îáþÍoßÍpV±?wÞÓhÓstcÙZiÙTÊøæøÃQ*¡ªBÃS*Ù°äæ”Ðr–R+xs”'HŸÎ¾Ì£·ÀV^tŽ\rà!©J*á¡ÇÁW'ܤ ÐÙÓŠHJ~¶oñH« +óìe¥žÖÌà›™výÖ/·S’¼Â—抭ñäÙgsš%‰D¥Ô]UVA xIm ‡ÌUfx–F竨cÖ0÷ЊԆÎE<¯P¶ù¶ùlýwCëŠVͼ„oIÂá*¶[òô<æûÒ0åoõ7ý) sP9†×^[ê¿Å’UÅ£rŠš s$Ê~”«L¶ÃY±Ÿ¬u¬‰P’ª컺¬mÎ"Q®\Ù>J»€Äbƒž/ÛÇÄï«U<”ùÉÝ®žŠ´˜)] ÐWżH3a7‘´äýz2¬I£9íÆ¹”}óÏÉš¶b &ÓTÀì…2F÷2ßæ‹wŽƒ`7§&ʶñtæN_ÚT“/ŠÛïò*³*ò”é9ÔnñHóoz$ż7ƒY\ìÉŠ¥Œèó}s§%˜½™¾ŸÀ“(1µðªêx«YKÜÀd eÑÀ’ )Ä——Jö~–_òðßã««(U¤4÷£¥ø|òšû³¦¦*o¬—eÙG ¦¤âÝâ„úäêGïgÉ ã“äîqQp5Õ`‘ÏáY‘i›é}þ“cç⺜¬RñkNYOßU¥½Ù4"²3Ô‘~Åiu¸·3âvÞÏ} ¹]q!Í÷Ò7lò-@&²ÏêÁüÑ–jxƒÍ‹wÝ9Hÿ«‡3Änbß¡§ÎðÔ1º*lh„)É#¢·ž‚cLìÄHj¦ã1þÁÃbkb‹,s„Æö®Hথà×DZOAÈMpH}aݳzTÙþ‡rYâM¢8#’ >C3"À”£júf¹Äs§Î)c4g¯{0tXSBvl0¸Ë!ÏœypˆÉá^7aÝÆË'ÛÎ"±”¬~oߨLÑ@ÝéI•·bÒ¾«7gI Ö4ˆØhĸ}ø dzSR#Å·¶ÿuâv¸Ž€“\$'ËšìʉțÔ}Ûœ ç=â…ßÊëoQÅ?¥|¶¦M|Ïh˜áõI¾çë¡äU®ƒyŽÃ"ë·'#âÏA~£zM3_}ó%…¼XR*ÐoG߯Hɯ…áÍL|²Û1P‹ñéh'ÔϽšK¾ë'.eœTýógwáæ f=óûâ7$æåw[¯äÈõŸ;gëŠ9qv±’Ó–ß‹„úµ —Æò2[Zßê¿B,U]BË÷zýYXãd~“7ñÑÎ…Ý+_il]±ác$ú¢WÁûf‚éãC×®‰EÃç…õ׉÷ëíòq±½äךí·}üêŠ×N•I²ÏâJdÌâÁÆkµõj¼o§†yo|ä”ë‰ѹ¥gô¿Ìœ'øpмpt«(»¾¦b[ã‘>›6»°Oòí*ñ k}§ZÉûöLÈø U›.¶É·%WhB:—"K]ßb)­!-•ź@âzk¶Kzˆ¹Î°©ÉÁÎqæ… iÑOJ¯ÀG=‡&1ë–ˆ,9Ï$™Í² ¥Œß©‚i¾Ë~,ð€`>4}Ò–j÷Iý¸¹üí Ší>ã/7ú¤rƒïþ¬6øY©ÛùiÁØx2Ek#Æ.bˆ‡)YW\Â~LgvË\Ä®3îé®ð½æúmš)÷aJ©8'QfuäÖ·À‡ ¬½YÂrƒ±þ‚³Fñ½À3ÿª——”æÎNéë¨8£|­ÔµÅ’#/)~¾¡ÞÛaCÛ"np4““@$±b/¥‚0nç Gîvj¹ ¥øÚ&î:ÑäŽ%’^×di£ç7#†f'«“&š|ì3u lÐîî"úz•ÿ#~ÉÏ:?ïiË™µ6ôF³>žPÔë•—*}Óämqd ,#†¬É´÷ÛŠMúO#ƒ¿wØW¸º1g^|È—"öOÝ@ ùæL¨•ÔÓvÌØ]®Í¿2ŒŸ"]­æPŠAyÒ^¨E1vµÜQ6‰js‘ô©®Z€ÇªYú¸Ý© j¥ô™•_R©µúõ#3è‰ðÑoðœÍ ÿ“@\ñ%¦úzXÖ0|[æÚ4WöùÉp2F‹ÿ*AúiË{ ½qa龟é_Mž Áãw§âÎHòWŸ¬”å.hsº¿¿þ¢ôþ&N# N5¦{†Ç-]¤À%Ø7Á'Eçåã7ÁºŸx€9fËfÎÐs"${Þ'lKD9ñáÊ×2 Q¾ðŒ³þø®*‚ž„º&Y*fÅÂçD_M¸66jõk€-ÐhE£Té2ë½v›÷BÅ™ŠÂØB‚žÔÏÿ¯T7ë endstream endobj 819 0 obj << /Length1 2161 /Length2 15297 /Length3 0 /Length 16582 /Filter /FlateDecode >> stream xÚ÷P\kÓ ãÜ]wwww×àƒ»»w‡àîîîîÁ=Á!¸s9畜÷ûÿª{kª˜½Úž^ýt÷ȉ•Té…Míöv.ôÌ L<Qy.+ ,9¹š¥‹ ð_RXr  “³¥½Ï?ô¢N@#—™˜‘ˇ™¼½@ÆÕÀÌ `æàaæäab°01qÿÇÐÞ‰ fäfi gÈØÛaÉEí<,Í-\>NùÏ#€Ê„ÀÌÍÍI÷·;@Øèdibd7r±Ú~œhbdPµ7±ºxþO*> FFwww#[g{'sj:€»¥‹@è tršþ¢ P0²þMŒ– faéü/±ª½™‹»‘ð!°±4Ú98¸Ú™gT¥åŠ@»ËýË€ðïÒ˜˜ÿîßÞ²´ûÛÙÈÄÄÞÖÁÈÎÓÒÎ`fi(JÈ1¸x¸ÐŒìLÿ24²q¶ÿð7r3²´12þ0ø;q#€„°2Àèƒß¿Ù9›8Y:¸838[ÚüÅñ¯0E·3µ·µÚ¹8Ãþ•Ÿ˜¥Ðä£êžŒ_«µ½»÷¿žÍ,íLÍþ¢`êêÀ¨ngéè ”û·Å‡öÌè`gbbâäf@ Æ¿‚«y:ÿVþ-þÈß×ÛÁÞ`öAèkiüø‚õv6r\œ\¾ÞÿTü/‚ef˜Zš¸Œæ–v°¢ˆfÿÂ7ïdéÐeúh}þè-S{;Ï?æ_.£ˆ°Œ˜¸:íß„ÿ«±÷xÓ³rèYØ™ÌLœLÎßÿò_þÿáþ·TÉÈòß¹1ý‰(mgfàþ…Úý‡†Û¿{‚êßãB øßì?ú úÓözLìL&˜ÿ?7ÿß.ÿÿzþ¯(ÿ/mÿó‘pµ±ù[Kõ—úÿGkdkiãùoýG»º|L„¼ýÇ\Øý_SM࿆XhjéjûµÒ.F“!lgnóß"Z:KXzM•,]L,þÕ@ÿ¹ƒð6–v@%{gË¿Ö €ž™‰éÿè>fÍÄúc•8ÜÔß*àÇ(ýï‘âv&ö¦Í ;ÀÈÉÉÈöãâ?;À›ùc8M÷5€‘ÁÎÞåÃðAÏ`fïû×}r°…ÿý qÅþ‹>š‡Qâb0JýAlF™?è#ŠìׇŸÒÄ `Týƒ>üÔþ ?õ?ˆÀ¨ñq5ÿ‹¸?Ñô‘§ñÄ `4ù/bû8ácÙþ±þ«®Œ¦ÿ€ÌFàáGÙÿu© >¨šý!Ë?ö¬A7à?Ì?$æÿ€ XüI烢…§ƒÅÇZýcñ!³üüÈÀêðƒªõ?àW›À²¶ óµ?‘Ù?\í>úæú®ö’ùp¶ÿõ7‡?ê`ï; ÙŸr°1ÿ[êô?UbûÈÚác|íÿT–õ#¼£«ýÇôüo=™?*âôøAßùOÎJçõ÷GýøóÇÂ`t±pþ3é–®ÿ€rûüHÂý—÷ÁéÁY>Âyþ~ð÷úCé#’Ðé_õúŸ13quú(€Ëßkðcÿƒÿ~Ï@Ø•%{Þ`«†à®‡:a$éÑ8\±6ºt ü³–Cî¥bŽ>F=Z/°t<ß8{›Ê…ž†õÒiáön5wúH&Ö÷4†µØ[g›%öqÑk£Jʇ G›üub–Â[ä0UkÙ»¬xËi"m³{rÇ6™ÙæÊë@AåÁéèJŸ‚|š‡ ›]:*z«C*Ѷ”8Š-ûr]fËCúŠ³ÝØ™N1Ñò]ц³Ñ`èÚ|¶ñk·3ïÏ”¥´€ì´¦¶j_T&º>i7™HÖ!mœÓ¡®`Ÿù×Ïü*ZˆÒ1~eKí:ÙðJ}â™ òHPbT{N~—KÇ»ú6£ú Mél¼‰×Y¸ì矆å£Ô î‚©`¢ˆÑVS-¯áŠiŒóÆçAµ8a=?ž5>UÊ"ì&ê·· …r-„uòQËW÷…D‡îñÁ€ÙnAÄ”ñNüJMÀODªöU4eþ¬£:…þ‹ÐV)Èl’­n¡ƒšà«¯|D¦RÉØ¡9ËLƒ ³yÌÄ®ÄíÔQâÅfBšH«ïU´wK)Ÿ. >»¥Œ¢v…Àä";8ªV$ªN~ÙéÝ&3{â'è¶_;6ô¡N~ùjÊôY R½zˆXÿ¬­ ëTÓiy0%Ìé#NxOaûnšò4­Ê ž¿ä«Cާ¾Ô´›‡·Cª‰&DÁ=³{×á@ÏÆ*îFħ6‰#ys*UÐÈ]@˜à5Äi‡ o—<ÚDᙈÂV•dÖmœ˜%Ò±=¸<‚RÍŠj×€ªÖš¤®õÉ]tœù7Ýs—¬þÁk´zu}Á„Ëïc³f,‘m9ã¿9ïï"H<ÎÔA»m;b»o ­ŠMƬ›È\yÚ T*ÐWB"-Å©w w.æO!çòví¶,2èkSÔ] Å·ßÄãv(BxììIè8€­å²êñ‘ž_;M#·ïœ©ŒÍP´ã»R1'MåëJÇË™AfI ’¡ ¿öY™í‡‘ÌJ*=\<Ë:Aß¶æ^mX B¿zࢼ–1ŽrÓÒѳº·skÆ?p‚ùf/¯QÎN¼w ÛñÛŠß&çËqÕ=_Õžú\–ŸÛb#~¼¤°°•ý2â˜s.K û…I µ ˜ °\Ž&ÛlÔÛ¾vp"‹wgO.ÓCw° Ï ×¶cv-r0Õ=?³±î‡$¶Q9Ýw» ˆb‹6ðAí:4 $Ã…Òнx†J’Òy͹—­}vÒs¿ÍïJôw%?7hÈ@Їëç/ÜI8DOYÈ  5ëþJN¿¼ÖÚÛ¨"е© 6…ä"t3þmˆ¯=LÔ©é{ûÜ«ðç~’ØlÈW*´; oí16Œø4ˆ x@HÏ­9&ÁZIØ–[Pãhuƒçã/΄Eqµ}#ˆZ=JõÞs…Dˆ 1)¤9à- ®l}±Ñ¨zó¹ŸB*š¥G)À·:6ÛånîÑx1¾Éoü„ʦö¼fÚ`…ÍF|¤ÑÕñuØpë©ã¶ CÔ(™ …d‚ÕÛ8Ó–,‚zt{_³iBó;:Y ¯Óew’ óu„Q»t³µ]:¨4–Bå1ÏÙ9ë »û4¤¡x‚n9õóWÒja5©Ï¬§í==Û$=Ýøï,8³‰;Í'ĘîÊîæç6-âGú¸`y$Ês´×üá¸Õ-æo#t×ÎcÍÒª…i™CY¨ï$úgVœ¬YâßÝ4 ÒÓ© ÔôÏeïè ¬£]dÌ'2ìðšzS/î8ÀˆX`ÁвUƹª‚£i¨<Ûáy²M*æå# wþROL[¼;Æ¥•9Ië@Ávg•ޱÓr§¨ßÅ\_¬æà#¢Ÿ>4M±†pãAöµùŒÖÌæfß#1'ÿ'g-ÿ.³*‡Þ¥Æ“<^˜€m{‹éó;BZá¤VzˆhÉæø:Úqÿ'È‘çwvW±*ý'JÁ½­O¯V@ĠCèþ§ÛRHøº.*4,˜îÇù¤eqW3rC*[PP8*c'GmGWÐÏS•RæßV†@°‹8ó’ ªyêV”…1LA»ÎBµS~^([Sù`Ì Üû«2ŽŽßs%i<Ž’SÚ¯º‘¨³ÄW–ZX°+ Æ]çWPÿŒL1§É';'*EG X§Ûþ¶f¥úƒâ;ó©„ãÌÍè1ÍÚ˜VMlœe…MØ•ª™B2Zš·£þ§ZJp¡oÛ¦v6mÞ¯$²Cb7 ïß–Ø\ÖÔ´ã°¸3Þµ|Ù,€Êð6ýœBÉ(:øêCå=ŒÅÂ&43h åÂýzl¼ óÞMPDlïgù/ì·Uû}rµý+üÄì p=Ù¾N ²;ϘŎ_öUÓÁi(UžøsxzÆ\$@ |5è±ÏqV_3$øïÆðÒèävÆoöçE"KÚGïaÅc—Åè„ÉNÓ×_Ï>®fpgi`01F:€{‡(¯Vb:¢—‘Üγ²Ñ2çù§êö®33Hš¼€ÍõäÆÏøÂ'ÝÅ\L¨S™ìJ ÇoéýÐ279ùÉÖ®£"ž ¤´uåÌR§rF'ÆßåbÉ鿃nFà4‰ê>S+Ç ,[™ÙAÇ;X"¸T§óNéůGßqñÓy‡74ð¿‚Ë ‰±èjÖˆux‹ s®wp÷ßáQÊlæÜÏ<“2ßL3[¥ñÌÚÑÞBJÐ-OÓ¥` ùÛ8¿±vm|‘~W“ÚŽ“Â1L¹ËpËêI9)?à'Ÿg0úé *Qí)/òhGÜ­êjíéFÂ^¿&æ»TºŽGɆ;v¿5¬ìƒ@±TÖ1Ú7ßÚ¡‚mÂjM1ßµ"“—Ïf;…p­û£O7iÔÂgê3AûþÖ,·LËhL;áèíâÒ<,S5ââ^®ùÕ>N¿,¾»ÝN¯÷Q—²p+¤xiy»¤y’´Tjôghq„Ç:Äë{ÿaì÷Öƒ€.6ª0˜q½=µ"m"hg¾ÞƼ¶íÔA…vÁmXùÜQø3„#ʺï-ôj¶¢zn;ì-µéK8Ò(ï ®Â ãXql5³.B/‡Å®? µ·0G;¿ ¿ï\Û9îTõÅÕHN\qNÓUÙ6€í‰—·qp ¤Ì¿”qJ…â §-bwgoª½÷fjòb5æÇ é”îÔ’6m¦ráÌÌsx¥ßº·úS HÒ×Dæ—æÅëœëkÞC¨ kpÖx(û1HÏÅe&ÌÙAUXJá­27¿!6-Ø I -dHS`˜út¤Ð~,4cýб…2ªlUÀª5ÊmÆÏè|Ë8‘ÁAU€*ÇYFHäVÌÄMVÁ帑 ¿^hÈ%4´"<çøºì¡8U_,NÚÄgħë@·i®ý° ëõòßÄ£½Ø¹ßÏ|=üœ:W¾A¨ß²šŽr>›¤–œ/YùUÄúR #k}ms\¶bÅGóH°}Š{|ÖáX,¿á,h= å‘MX8ŽHªßyÜð“0…P0¯`†‘œêøI~ž2¹X–Ü|º6½¹?¼Äì¹ÛˆµyU‰>èÞ-jyö³¢ª>g‘Y¢_Ù,b{¸3*…[/åâXh +óØêÕp8~‹~t¾8ÄLã+y[=¼™ŒWÄÄž>!\feJc Øe+‚  ‰e2.Ô(¸ ó[PÁ¹6*âR¨N[þÍ«~Ðü¬yˆéà'uîyÆ=Ÿü›yén5TÌ \2ƒÌ*Ì~æôg/´)ÉeÉo‡ðŒ`$ -%µ÷·öe|t4 1µX?îVH—µÛ/ólQÄ[‰n`ŽÖ»žaßÊvVÔ»ÄB®ÎÀï²\ŸÜÄ]brº¤6ľ_®ã+áv^sÚA£_B¬~„…f…c–RÒU,è‘b-ÐËxc, ä‹íG~T™ÔÆ!Mß {4«ƒC!dŠ<§šÍ} ,¿mJý]::;…™Ö’b’•é¿aÙ÷Íþ&´´§ûœ„€æö­ Ü J*gjð¹<Ýð<ƒ ª³bÎ*U@42™Ft,£lK5;ÝØåÙ)Ì Ì$MÓ±çÞ%@PWÚ’ˆÏÑtg¾PÛýü9£©iƒy$ˆV¨b?ÈзdÎŽÖz¨ýÓé¼l& í‹s‡3-Õ3¨xuÊ(3m¨|Ò™_ù¥}e܃÷ˆJ"͹X5ÝTcúñ>êŠÒH^‰T²ÏDãF¼.Ä']ë oà Íñ—åŽ<#Šé(,Ì#3—77 L%® ôDZp/?…Àž5Z~ÿyL”{w³è{öç·°h‚­JáÕ i™(Ê8oza›2 Þ [Òjå6Bv"SS&\WVÚ ¢%Q“ÀŠ[yÄÙ¨æ^‘¡Ï¼?‘ZvòÔ ë:f}{¢6»Ž¯½inâs[ˆ¡õÇØxKú8¶F†¤Ç¢ÓméG<„®Áæ×¾Ç9Ïéö²€tE|ŠVÀ]1NýJ[hùÓ¿3³€v,ú¡rÕÅÕw;;7ºæ2úÜʦ =9Y¬™Ì<Æ7b¥}†9’Up—»|̉}î²6‰OÕ³YÏX}LüÔR©gD§O‰Ã+¶U5oNêWà¡eÔVwÓGO¼ÚÝÎ<éÔèZôŠòwüZA€«LÉžèUI‡í¥á»Ë,0î M/¸¥·î¾ëí¦ë“rÐ;Ž¢MUxøÁq‘´âh-ÚÌõk •5“0'®Í2§7ãR0Ü ~J´]ÖºßÒ`¿MAõM‰êá>KŒ¬{˜Û£0¯ôæÜ Kð .P²ÌwyhíSÐʩќ\ê4ª`BÐ8½ ¼üþkTõ×@¿™ÂÙnúŽY6õgÈ,TˆÃÞjÝÆêîC~v}½ïÅõ¡£ "ïø[,lc$¤E›²YÕrïâ4"G¶åøëîp&tcut¹|¤fäo´„[rìly)žÏG½* 01¤±iתÎm±!´3Ð7VäÝ#£;KÏˇƒN޹2uÙ½ñ _êú÷¿ßã@ßK¦Õ®C¡¨ú¤ÜRasêÞ-éP0ˆ¸Ér±yûMÖRŠ'cÙìß•lm<ŠpÃs˜DÚ©"QøžMHÈe²;1ûjfw òNK}«Ý"PR¤g#7˜Ÿ„TöŒ@cÒ2wƒ]~÷Ý ¼åœÒSýj#+.Tõ j¸H™dzóúŒ\Cìº<¢**¶##tîg»çq8/f©•!C9QkÊ1Õ#wÃúî‹é'âÒd&Þ¸¸TF]С¨kRGû]ÓØÏÙŠ}Pü^ôÔ•ï•-¦%æš6>v0r‹ Ÿ~ïIĉKÍeêùÙPâ½#Î'Ž£·ïü¾˜:ˆw}ÞãP/– ¿øŸKÖˆôØµÆ ÈÊODd¿(ö•¥ö] ÇÇ*í ¡Ao2î>û­5/¡žBŽZÅzàÌocô»Õ±mn&Kþ4ˉ'â×Ëõ{î„VãQ·©uûÌ[Ž«&?“-¥ ô'<ìw¼S¯„óX‡"‡£#|[‡IûnfkÀ0ÓX7Ä2uOn0Óý7 &릴&•zœ&ª›Q>ºÚìu‡üwLÃ’Â;‚@Љ/9 O{#3sVÊ“”Ñ…$šŸ][:H«ÞÜyz?Ñõí‘•Ï#Èd…ópxb_<ø96—DÉDX@?“lù5'ÈáGîo9”+¬ì…ÀñÐÍ @od“ zØé/¶¸ö›×¼”dƒt ‰cU©éÃ%±IQ¤ÍfÊô ça+Hg½-¤Ù!÷kÚ©zª·|¯ŽJ¬·ß®8öÊÌHŽkp±a5Ë‚í8ðB\{!Ö¥!$eÝÓ.ÙÞ…Ù-ýú) kâÖ¼¤Íʺé& êŠ~Ž~×.ÛlZ¼Â„Ù–v–^˜YŸ{áÍ*Tµ@mÒ¼tuÜÔ–Rk:c E0®£fÓ§‚Pٸ›ä=DxÔ+ö61b}r$YW4Hø<«Y=S±¼Ò 8¼g"ºUnùmË芫³æÏµQΣC!°‡«—È.?%!|DENf %Dè@s-xíž‘+¿}öa}“*£²Ü¾¯/•]°QäæmT¼©ŒÙ6ÐØe¹íEyð4lUÄaº¾“(§t˜Ì(M1r/}·RÂað.^Ú¼Ö»‡A©Ÿa³‘V³£p*Ln: ð"óiNÔV2V ðçN×_MÏ:eÖlP@¹f}¯ì”0î!íÆ3÷GÓíj¢­áÕBOè>r†ÿ’©ÞÀpÑO…ô}´)ÉaôŽA|9T hK߃¤É —>u]"e –:úÊ"ÄÛÀ¹C ¡ jO©nv´­ï¹U» ŠègÈÁ®…¿·žPÈäÞDŸø]}‚®B°¾ŒŠ;rŸDB[¨ãGÝŒ9¡R´‰½Îåüæám¿÷á/¹3¥u>¾„ý^mg°sÞÈ× =—hdž>1ˆ †LHš°°? «Th®A|¯Ó‰KºA¢¶:!_œ÷ì ­ü!ŽJ‰Ñ¤¼òæz˦'a€€†óòÌà3%ÎÀTL<¢îO‹VqÕSV>§?«ë²M–]\(p”òtv##!NÕÎ]ÌèÛŸ/Ë¿'$Ê!Ô (Ós=Dõ£t2"Mˆ±‡+§Tm»Ïéà=uU-x5± µnìWú„´ÄXUÃý>9ÿ;!Æåáy^·p0ú’{Ó£yb\ûàYN¼×¡Šå ´_šÞšÁ J\2”ó¼@vd̶”«.Ï,çY½©¡1 nr3sÊ«šQÂÿì(n§ìÀ²£ÓŸB‘{¥,ÿÓD,å´Š„µ…Îì‚d*+Ëkã îŒä†yÁ#eÑŤUûgz¬y´„ms8Á äÞÚ¾FÊÑ2\!kìDD¶H,Z’qPÛl,fN2fåÓbÀeµDqšÏ‹ÛŒñ¼þ;z¤p Ü‘j’rÔ±Á<²õšeæ%¸-{¶È›eOܹ´ô×lÚ&º7§†k+0y(¦°@ãò¢Ï=ÈÐìSo3g3jÞœi–’a®B©4º¥Üç>‚ëŒ.ücý½c8¯CŸ—^\…c`kÝ\gECgXˆôWAï”Ùƒ2D:gðßÂzw5I­Z+SývQ0•¥/Çñ·½¡”ȇˆ4_pv*[`Z§bu¥|jþ¤n¦~f°DÞ^Fbapšú4ë#YVáiÃà`$i-dPã·-S·`[!IPlHAPîŒXï’åððó]±5çS£ZöKc_#ÿׄ¼únlÛù`nÝ‹|ióÇUj¥ƒÌ¦˜õ|‘Ni˜øÇÆš¥U+0df6D×î+ÿ–Ï)^ ±¾7Ç5¾(ÙÀå[Òž VE%:LþÕwE^O; ëfÖÈèT`v2ÞdœûÖ,øéx¶‹hîVË"ÚÊVLR©YÃzn+_­¶¯ZAÇ% 3…¶$n2êKAŒüÿ GT­Ä'Pã×.x3DÂŽ“"È:ˆ³NŽjøE[Ö®`iyh.#Ÿ¥v¥Å¡f! Бèdzt ÿ0]ã:*ŠË7³nIWÒ|qáÑ×W‰ôjdM“àQñÕeñÃÁcÙÚÿ!OÖC¦Ë¼·TýQüæmølÜÌ|\¨ä†;¸ÑïÎ?ò¿Û¦ëbyU¶GÁ«¥sŸ* ̡مϺ֑qÙGC¿ïô$gá¾Dã9!?n6™ {B§>†ÊTdt)*ç Òtûð)¸äÙx'¾|Ä!MùÒÊ}òÎõÓ<[<úñ*qvœ½{Àj-ÄjÔn•Äñ$ò îéõ(i`÷Ë$®3ß'I:ÒØé™ü[Ò°/åú^H'òm8+®ØL«ÄôBŽ$X½E4‘Œh6r—ï¨ýÑw_Ï\ºÅR½“ÃÐåìÕE`צ.;ˆdcÛàÎvø~'p˜#ËÅ#´›µq»U.Çøîûh“SšdýVº'?w  ¼ÁXkQfÅÚ‹k(1^C$x+¹n×OÁÔÜŒân¶ÚDbÜÔÐÜŒÚ Žë‘úú …Ó§Š4Å» 7ue«HÄâ²Õ;ج[Ÿd´zF j>­s ±[˜¬×&®O¥ç«å\c?’>½:í Wz×;ƒŒé°YX±;Œ:+ºeÐjsÝ)Mà`ꀚ ÍFÙ5È6Û ÄJçŸ6½ìYi­À§EŒæ×“ý€ß/\Í›è«f¶õ0:ÕСà9ÇÜsãÁ{ñ`•Ãig™ $GÒ&$#•M…hÇsøðàÂ*ö[8GàÝi“;Qáü92ÿ,,Nµ‘>áà¢Ø˜‚Ž"¼Yõt+S½þÊ#v–6ðfÉÝ8ÔG—<ªv™#ާ:ó‘[º¾Õ†˜ÃM•N\g ìÈÏ´ˆÃK#s>ÐMxìF†X?Ad¾븢óøîAýeô6y)R¢U!zú±H tRcD”LE©=yG±`ý”[4jvTÉöZ}£ó™kC n¹fX=ô÷οŽáGéTäIt‘œcûœ“4°æ2”´¿ýò8q!0<£ÖqOâË>áÓ‘IF$NÌm5'âG'ºà…‘¢É¬Òb`ùš<ñS†Š*²màLªÙ¾yƒHÖ–|CXa§Íõ¨ØÌ ð,7oÖúŒË§ ¥¢Ñ¯ÄöT'ä»ÃUÜì {åB‹ðªùyØí„­°g9䪪s6´ºèükÄÏÚI£ÅØ¢Mnƒ®µ›ÅØ%ûâOÉIÈ(|›ÖÌPö†žûÀéûqêÀÎ*û5™†ÑHö$tCã]E»üÏ?°âm ÏM`s„ˆlgÖó"¢Ÿ×§éjn¦„E‰½}ôKdt&eDâÌê3Ù‡5¸Ëå‰cülf º-É1¢Ilž7øÁºÑêªøñBç˘{ÅÇH¤%€Î:î‰%_ú-YHê8/‰sÉíEs‚ÓQ _œ°‡UŽêÔªLÂ_– ðËQˆe ãû˜£,þx™e1ôœIµ¤t:8² ¹5Ÿ–çüP©Ï0$}ý—–ÖÇhR°€CDu† ¦’nZ‹±±bêÑeÃú[—Ù‚ôk­ôœí¹")6µsn“K@í Ó³^µìé8YÎÎRâuRµ&p0Pk1Öºè»Ó&ˆ¥`ìûA?³-æ&š l]ŠE tb|ˆ‚ ”æòûL=‹9fä¶jî ÇøÎX”r,ËFÅC—õ’ÃÃŽÏŠAKëòc-°¸õNvâ ʯ¯dpP”·à™1ûº/öäIG¿¨Kn¨ ùµÏ`ó¦Äb2¹‹ë·æG1ëL Nfiø/ß§¾…€Têô<§ÀÍ¢lL%—~‰Ë¯úÁ]AÉ“+ÀðPP•,+Ck¬Üÿc› ¥c^Œ Sí› ]*UNwÛ”ÁJ±Ñ7‰–0v[¡>|þ²ä¼ZgaÝQ Ñ¢‚6¡æmö‘ñÛŒ­-ÉDÏ®nñŠ¸Ã²&®3µˆí˜v—Áû€b|Í Y”ÌÑØûo¹¬ÔY&ÒOÒž檌Ùʘ!~„„ ®ûAù²½'OüÎz˜mDÓ³è¢z–6à¦DÜ$Õø) ö‹|[Cò“A 1[/><Á˳ çÇß ðNõ_ÁŽIA½Ö»X©4˜(©8‹¬‹ÆÑüUp~n†—üΊëX&½ bÖ†ûg=ß²o«ˆ­mÎA“sź=´Ú¾To‘Ö97ìP°ð-¦œð#Æ&T? \#xd3tžf»·V:µ¾ ”‚9Ï`‡‘Ç¿gq˿؜î0Šš6®õ3Ôw–²•ã”cUæ…WŽ£±‘µÚXaÙÛH¤Dén;õ–C0ï™1`æ'ˆ@ ¡ hFÏQy‰ë@¡tœàךXx÷†qBêzáߦ%æ coéÇÆÙ¨^êâÄñ桬Ç@ ­ßÚʘ˅lClÑ!¼,åþâMà}|mnÆèmÍqµG"M¢Q˜íÇœ3èBíºX‘%·»7QÞ¡Ë]#ûÊý¨6È_ÊÉ/KBµi¨Äˆ)ä—/È-ÈX˜=~0RŸ>Ö3ícyÉwtu%uÿ °Í0q?Õ}Dâ—læ`qµ¡§åu’¾@ Þ†ß ëAfÈ#˜ ÐOŽˆüN¬/yôÙ=é_öIü4~]©´ƒœ~QVJ(ú i©[³µ˜I¡g…?òC[*a+©%¶å.Y½0¼»߃·×Dõës_0|ÁŒëu-ok>ŸŸH¥òBÞ×r?j×IR¹je%Œ¹Z¨—§a‡— $ÙuÄoâ`qÒtù«%Œ™D¶å±Ÿ šæaB{¢‰ùyÝ6È1ßÞ+†ÂÔô| ›ÒJ'Q-á³s†÷E¼j‰V¼\nÕ=þmã-ƒ~äªÛ=϶$T¸.qž ‹õ¶óƒ»ƒQ籃@ |~ uÿžìóü¯S°@¦2Z‹l.6vn°l¹^gº½âú–ØyƒÔ$6{¯ óÇ^áõ‹ÊCX·áЇf 5Кˆ÷‹9Måv©[¨y¤ Ô\ø¶­Œ€‘UÂ~ÁÆIšÓÕ6|Iú}ŽJ[çl|ÓOüëú„YŽœ¹J"*š™#©ãÐ7[Í?~,Yâ ÈOŒƒ’¢…£ÒvÓ¶gÜeÂJUfg6„å᳉€6ÎSWÈ ÃY¶åüt5Ð-ÖÙ—ß=¢…bƒ›øº.ÕÝʸ5š´œî“ ¬Ô HM¶jîˆ^ Þëß>¿OA~.08âàðN0EuçQJØ.‰a“œkžÀL†£®;õLÄHï‰ýV›¨ar¾P¶ôy?“zâj‹ÞSÂ)‡H,k¢;Hb«JK4ä¡¶f¯•õ´>YoñH…D'êȒ䨲ò«y\ŠâO ”¨4Ý+ ñëI½Fµ ¿Ò}V-Ëtf &d':æ‰õ§Kô¥ êáæ §$ËMk½Àù$ÑB¤üþ¾ul€%ÿcÆÀå2¢°ÀÆ´;ŸÄ! „­!ÈÞæÊŠî]:)íŠÑ­aȃåBN$l‹ÚÀÖKèÅ[P—§Zój>ð-*'âÇäu—Þ±ÍzI–Í‹µ¶iöËj@ZÜ%Þ°ð ÖÊk‰ñÅœI€§‹tò ¦©Ÿþæ1uÆ‘i8Þ”L,§ Aø6›h9ó%W¹‡£³‹½’×–å®[‰@ä‹#$¬Ù™Nঠ¶ŒQÇc!>Œ/ò HäìZ—YB uHðˆsr/ÃÔ«ÄŒŸOO0`tËŽ›âZ_ïoÃyÄƬ#ÜÅçSÃA ƒ[n¿A\?+› VcÁ°“ª~G\ç*îœn±©¯Ü)( ¶¯Lo¦ôYgÉPØÃ Ý\Ñï÷³.6ÌsÌ•“½Òx´k«ÔÖˆÚiu¥ ¢ªkþ~Þ—³ï¹Ým‘ \Í 2ª˜æÍ´h#Ý" p¬ÂñŸùú’´ ®° RÎD§Ð¦ëyWB |cÁĨ”V—í|Îr9 ám?ŽžHÌ  „ "ƒ@p¨´TžúE””Ó˜œ&ÐäÓ¾ålmRw\_Ôí¯10ÚhZ6ùÀãØÇp挔ìŽT¢¯;­M‡ÿ–¡ ±-(«þ|ÈJÍ䢆¥zÍXýônqy˜i6äÖJ‹¿0ÓѲ/z{bÉlß._fc'²Q÷q"³ôHƒZµFâ+jpôœeÁéÀÑš‚ ‰É™ßyª1çµy»;\vBÅ ¤n% 2jÐå|WÀHf„–J½¹­Y8ÕáÑ(7þ¸q ©­êUWöH*õªÊݘ‘¸1È÷5>G…âøuÇ_\õ_jÑ ]¿#S÷˦ݽÑ* 6á²ÉÌT{mD}ç¼Ä4›™ÓáþQÜÔÝ¢=Âl”‹øÔØ|h#™—7ýðm!T%8}D¨S^ 3n픃 ù¢¦ {3P“bÃkkÓzP§³^]jnÈŠ…kÀ”ý¢ ˜ÁÊÕ}*tò^Ê ,Ý”Æ÷b/ÕjŠ¥áˆm½ ¥V ‹ÿ—*l…ãA𠙞ÖåÓ1.¨ÆY3NH¢î¢ ¹´ÙÜ‘QúS:tæè+4@ÎÑOÿQ\Á«‡Á|QI2û»¨ü‘S“å³&%N?[m<……öî¤I‡ÜiÃwò`+~Ûgë~úšNqT£ÊnêCŽÞÁórcûH}¸R£è*;7 ‚* ÕîëÕ8Hå‹Ì†Ïû€ZŠLM¿*²Ì ÆÙWTG¢ Õ£eAžÇD ÷x‘ ,¢a†ì” ÚTN«3Ša«ßß°0³ü¬¹½Um¯=d9;–ÚQe¨c8•Û¸Ó vžÿPn)]}# [ؤÐÓl+0~>CdËåŠQ9 Ú!NØ¥¡Ð¶;ÛÛÿEŽË´ß0=yðík$››çA‚BgÄñ뱂zŠE$×¼H ¦ßpÄ”C>ÒMƒ!„UßWÍ9 Hæäý=/´Q8ƒV*öV©ˆ‹ÚôæÎŸë ퟲÎ%"²“žOlÂÉÄg‡®TÑ*†³lŸŠõqrî8£ÍVI³b"¸³ûÊ›ë„8…ÏBò('è´ø@mÍàXb²«w¸Ÿ ípk7Œ§œnÄ\ÆÙfk¹n±6ACðòÞÀññ}”“ý1TAç a™Æe‚¡P†@~ K’•µçù`Ýf}‡»öà¾r±F5wŠ+Öþ>Ý'uv>òEÖtÌa+2~ç׋K`ÔáĹ‹ ä ÙïÐL_…–!- 5ƒ9ÆLàPu\Oï îécÁªðöz6e“Tõ^›n4¿#ë’áå#²¨ˆ¶Þqª×$¦õèÉÎJ¤hÁÀr-yçn´QsIS¯Sï°£ö5dSîþŒâž"»OÇHÍÚ{(#eiÖ‰BÙЫÆf»„©æw…3Ûñ¶2K´Ç1(e™™²«2èøÂɼRŸwA”`æ&-=e %ÝäõöÛ™\µt‡•ø~¿y&ò©Ö•S'.¾:$ªúBUÈ®8^yß>Ì„’À÷–%ðn1 Ì‘´x ¢Î—çö 4EÕ¥KnÝ£64 ¾ òhiF23± ò 4žø³3¾zžA÷ þ3"ü¼]$õ(?$´¾›¼Z/ª0uQ<÷"Ùq<Ö™ÔðÍ8£Q<þ<â,[--~á µÚ’;£Ï…-v³z-ûì·Î=±hÇckéãy­I>‡µ`;VšeA5®RÙ*ÊRD7> DŒhî÷Ãø÷¶ºÑЧeuÃTõ¹óK-%kÞ¯¬OOŒ‰¹sÖâã8­y"Ýâx¢[yɃW²}Û‡t=eýE {аg{ϹsÏ#óšñÍ"Þ¿,?ÅŸÆ â-úŽýªÝH ¨h^j¨úÚì¹ás§O·¸ò;Ž [ßnªB§¦œÆókÚ›ï©)ÄÆ!MÉ3Ê·:Ù¶¢.9jÌKâóU÷T UæQxŽö°&V&õ’ËS˜Ya³Lù¦µü%I÷ét¶gª'‹F)¿€€j#ò.G·6xO¦9¥~âÆ‰*fñŠŒâQ›*ˆÖV= ýl^ ÌãQÊ•BÏçS Ü.ñ$A‹ÓeZfòÒðãÃ5RïÁEI¡_dZ£¤pî8£˜LÂG߈>#ŒçÚÑò|±cüÂXé{0˜Æ 7sØF‘C 1À¬VÑK°½Â˜û!óF]ߥOVœåfÈ ‰[˜ˆyK#|6`÷ªU#8÷ ‹ª+¦vþ÷Üo#•'T-íŸS-i}@î•ê–F¢5ôôèΧå‰FâÌ,[æLŸâ7ÓVçßG´k ¹¿ã+z¾®”5x”Gˆ>¦<Ñ«ÎÞÅ`e*Äš¬×¸Š!ZØÎYõðïF_¾Šù ü¸K ÊvÕžÈ%\`2H1Ï‘UäðHüÜáMÒÆ …Ç7¹æZÞFy£¨bj•Â/œ<K„`¤×í/À¥ $±9W¿szõU½ˆ¢D_@˜Y)§ÎñÊ}âp3ïφ·ƒÚb£˜ ŒqŒºÈé²!ú枨¾Ó?ÂØKUPZ†¿‰øïÄâê?t#äoTq˜Õ}W-*H3bïOBðø5HÝÔP9ë·+sÖ½Ò3Ó¿¸©vP:ŽüG²÷œï$ó„~ ¬(—àõ£Z©Ô-Ã:îE,ãi[°°È‹¶Tó[–XáóÃ#|9O›Í¤Çó׉ÿ¼™¾*$B:²_–‚ü-ê×·aqÁ* ¼‘ÔT@X³úE&w?³TRþ´*gèW¼uoYzÕÁ)í¶Úñ@Ö*Q$j`ïÛÄÏVoioàÝÙ!Ö¸«éÆÞ–bݬó(áÉN‹„Ñ?F…-leÙt°SIÓ¤\l£Ãƒ Õ.v§kQ/(Ù2,ÄWкñgÓõà•kb_ð:¨§ø<ÍÃ×Ç­£ö¹õÀU’DZˆ¦¿)ƒ²O<4[ûwñ›Åq H²Åj+ó|ÿ;jU_øÚçÌú;ëTÉ"‘S†õ§GdO#ÙwM•a3µõÆ¡«º0>Fäh†Æ ÝÞ²ÛfsG‘1+ž];^P‚žÆ¦ŒY870àÇÿ¯Ç‚(ÏR­c ‡“E#_ª-\¯ûôn‘:¢óì‹äµfví<D¯”ðî:y;¤ër“²üûZ&~[LTÛ¼¶Ôˆvý¶úu)¹æ)›5蘇ž”á#;Ã`´]‡Í?s–”v¢û=Ö èye¯¹:DQKzU‘X*Îàp<ù]Þñ·Gޤ×ÅÓæžÎ!]ï‚’!PµW‡ -wsl8ߨ¦—m„&‚‡¤¶Ìæ¯C[Ømö,цñWüó^'XŸv”½yozr½tröƬ âõgÏ8Ò{œ-u2¹ÏÓ,<ùkئO¯Ò;ŸGó£Jûa~ mòÈ/N—¦¥¦vÞ&:”—ænÆÃåkf©ÛŠ %ãnÚÃd¸;]?ý&1æ-<#ëN¡ÓSØž Øay†Ño÷EdAŸÛYW'Ö”#vTXx»ã}Êt¸¡ KKËgO0J+¢@#—Z]]²šž†{õ£´¢ì·OÁÈÃ+ .,ÝŠ9O"©^ô£ ¸p9·ª¢ÆxvYúZ4 nDMé5—,ˆ[ðÍf&Â'ÍŸÈÔ‰Ú"ò<-(¤C¡t˜XvòS'ªao8åŽÈ•ßci,’»ÃS‹‰­jê¹{Zð¤ÅÖÕæÈzI`ÛÎ [ýÊK†Ð‘l—=Ÿz|†bŠÐqtúôzò–ðÕáŽb Kì¾{Ï}ÓÎ]ùtVŒŽxœ'&”ÞÚåd.‘ H ¤À¨ÿ•úfå](!åi³ nhÒ¡É£LC*þ„È[è4;GŽ}qA©x ŠX …5œË ð1†Ñã>³Ð¬ô‚ùšÉ5ã› ¹­N›ÅÌÚ€Hë[ߨÆûÿš$ÞêÕÛ§X*5Ø~*MmèÑ’Ú«Cz€™3{)ÎP”J×GÌ º¤£¹3r§Ó ÅQ*zŽzxk‰kGïah1+¶dm-pgäLAv_ÚÇ"W "ß¾Ei‹ÈŠ€½niàõov'Ý4"ò}ç>î;¥EÈÅ4ÞÛ¼¹÷x HUÈV—L`™ ì“·­·ûâ4svÁxµƒ5¨<×y0ò <ÑQÎMŒz„±¨öÄû‰çìËò¾ 6A×àåjïé@SW±ÙÏ5Û'Œ$U?ã3ƒÜ$æsÚÂ])üQàpcg¿t(ÜœhlXM›øOK×½µâ@ÈAãÔØã:pïû±F?[(ã«pÃâ°ð”ùi¯0%ÚÏէº ›)¸l>\^ףΞn©›ün¸ó£xø5]ÅtwyuRÚ%âpaå㶈×Ú˜OO®¤cVß©¬›æ…8K *¾ñ¬ ¬Pz—KnJ`¼ÝK»¾b½\r™ÛØeÚç‘äzÑ(™§dë!‰Än>bïHÅ_d¹Òý¬¢UÑ6_%'÷·2wÅé;&¹'ÒsÁ~ÜÆJØ;š¬<ÒÖ{ÉÌÈ!Ú]ו97.£ÀÑ3:X>f[wðd* kÏæ†!O^¦ºTGx†ÔÌ¡ 8‚:½ËKƒ‰‰/ŒäÔ¯D½Ó÷›ã®„¬ŒÿF Ý ½„êBEä‚rצæ^к" oÕûæ[±±ßLB’6§^Ÿ¹m=MûÜúÿ˜Žcr endstream endobj 820 0 obj << /Length1 1402 /Length2 6034 /Length3 0 /Length 6983 /Filter /FlateDecode >> stream xÚwP“ÝÖµÒQzS$€H ½÷ФwiJ $@ $ M¤(½w¤H—.Hï‚ ½‹€ M:¢4ù¢¯ï½÷½ÿ?ó}“™ä9{¯½÷Yç¬õÌ„“ÍÀ‚ í êH(, $PÑ5Ö ‰  ‰rršÀ0pèßqRNS( C"dþ¡‚‚‚1¸˜*ƒê"-8@X ,!#,)#$’þˆDÉTÁ`€®@ ‰€¢I9Un^(˜£7çïG·=@XZZ’ÿw9ä EÁìÁ€.ãuÅM´ÃÆH{ãõÜrNŒ›Œ  §§§Ø-€D9*ðð@ PD\ ,," Ä=øý³Ï¿Nàoö¿£`ØŸÝýGGM„ ý ÜéýMäÑepÿ± àŸô8=CÜÿ–ÿC!q!{Ü—ðÿÙ¿KþÚÿÕå•ÿïHÝÿçþ ðÿäÁ®0¸×NÏœ7t‘8‡ þjýËкPÌÃõ¿³š0Î# „#Nç@i1‰¿Â0´: …À0öNIéï»À€ÃP$öëµ ýWç<{Ü«»±ß)(ÎXÿ«†°GB~9PD\F¡À^¤8àVâaœU!Pìo…H ®€£èp@¢HÝ«¨@‚„ÃÁ¨_qÒô¶÷@¡pîû­Üà¿×¿­…b¡ö¤3“H{Ù`çªà¦¯A7=«C"b=ψÍVÔ˜­ªÈŠæ…OƒÚÆ¿„Ÿ,Ro‰¼º¬w1§r±þä›.C?SÓtÍÁî3¿ï0µüéZÇCä‹vk«¥­(âH¿ûƨÏóHiŒ‡ß}u"cãžÜÝ7åßËœv‰¸ê¾ ã E†1JI‰’ã7ƒ2šË•+Acã-šwÐJCÛñ,ê'©Ý"âË=³ÅüWaK©777)Ü´26RÖ;$˜µm‡cœ+jŒg1ÜGMÁÜvè÷ÆŠ²™š+Ã;™æ5”—#Ñ¡':ü”d5Ò\ֈɷæúÚ´m¢+ºÝ±º.á»ßéz5Ä\l'ˆõï[4F(}”qÞ;ÄXÕãûо#ÛmìRd°¼T!ÌeX7:Wj04:Ò-{K~.8)ÈŒOñ´Px:ÃB®ì]ÑíD/2¦üØ Ð\yGjÅÆŠå²þLŸŠØŸVÇü’…"µP¯.1„‚JïŽ}„zÏ‘ÆS¶ö”ÉèÄT¯W]µU+9ðÓ GJèÈâšFVBö0,uWÏã·6õ#¨É¤;\°Ô«²{Ýx5wqÎÙè²ãÆæ«Ï=P3¾‡25ž;Ž™Œê±Q?væy ?šŽ;nCA9«A7”;2rô¿·Hé®éH>O32` h„‹n…–Øù‹)6ºQˆHºåCdÄŒ]àµèÑ,?¹ ht—™G“màGt1¾R™KUZeioîÁB[}Vó¹Þü7þÓ{0±šÃ=?“o «ÕëlDë¢aýós äk&Z˜Gé>ekݼD‡Š,‘2cÞ·Ë.o_@ª}*¼ºéÇÔ#΢Ó3¾Aƒlf°‡±7–äN-é|äéà¯àL&KK^º0rÚ\k)ÒXr?³{ŠÝIˆòŒÙùúZeÝÜ注ïªKRôÉRM”ȵ½Ëù…Æ7¥Ï¢_yrsÃô Ã11¤ªpüË&jB­æ•€¬U£K×ÇŒ™Þê´ždJµ½—Ö3i6ñ Ù/MEZÌá¡zŒ àÒ3y‘s1kÆf / »,=­%R“0k‰ ãl©ì€Húh“ð’aÒ§ h·³b`üÖpŒÔaVå.šþùñ”b/CD—šU´§Þ…sº^ðJÁÄåS²Ò•|D¾ $ëP]þŽÀAµ  “˜{ ÉÙ²ÛVÆ&õ,•ªV±ï£eê)Œ/5a’9 ™HìMUÏÜ1À¹öJ}nQ—Åh¥7Ù6ÔØhZ~OL¾ þ“[}3,•µ£¾õóxDP-D,:\j1Ãl× Ýy–ö%–,;¯ïv«¾Øšâ ²… Þѩ΋¬Odd̵Ó[N~V+Û§î¦Ë‘|Ügjˆ’\[]ö5w úúƒ^ãw£yùÒ.ÂEÏÄâ;T9•ì¼þìÆ—=v‘ó–]…+Xý¯\ÃÈCg&2Že-.<ýÞ«ow~௔Áù?©=˜ìLÏc®ÖzJ`u¸yj»Þz:À@êþÒµÓ"‰ â•8™¸<_ÿ“DœÍ?æ«YÚ0^Ûrücº‚…ÃÙtËO×_>GÖD—*€ˆ®°ïÊó­o‘d·äß¼#ò“,ÀÛtº‰êÍîz«¢v£²(Q}à%×O2®ƒïÑw>ï »~óX‡¾Ëc~m7pˆ¸M]ô¢û H*‚þ Ù[gu$Ci~ØáÙPð¬tshóVѨ0 !gýŠl­q÷ͱãDÍ{¨§Í;|±[,yooUÓìÛ—Ó´Ÿ—‚$™¹%‚Â^1ÒhWR´Õò–NÜówæf_V¹ö¨·ÑÄW˪¦©ÚlLœ:¾û^²Öò3¶úZôÍN?Ãn*´„¶gulò¡ÊtFrF¶§{/„åFîÁSLª'›ñÖÊêžÐ˜Nówi\ÆËµ¦ ‹i†tvûû®ÂQQ¶–¬‡<ô3›“Ѧ-@®ÿªxoéa±´³‘‡g#L¢¹Û%dlÃZøòf×/0è5$ Šé¹×ÂoL“5û‰ƒÂ^íÝ=|Ëí [£Q™ÄÕ1Ï™ §ýr mÆpdÇÛlÛ¦ü­ËÀðíúy¹KüÇ•ôx%‘¬àJ•ç¡üȀ瞥ÌìJ@ä®ðõÙR»J.ûï' S;ž*Øó½cþ±ýn9©â‘Q¨*k›Û­ŒVrƒÀR¾<£"ª’-=ü|Þ8s|‹W µ¥ˆðoÙçW­a Þ Ð‡Çô?íó307Õ››—¾l%ë‘çÙ×µ#)›Þ”Ê+Ë%+r”kž,ð2¹ËmB_ê¡g¹<ÓðûÏ¢>ߦ{C Û$ØRÐ’6ÜpV¶dÔ¶$G[öi×~ƒ»ß¡ÃK¹J{sZ®Q¿ÆíCÌýHЉ´gvŸ O6ÐS1¼¹híÃ^úÖ8êÀøEö§´Ù¶¡Éý4ûúºÝú•nBZt8+„rªÁ4}ãDŽ»1XÉW:!oäSJç)ªíTküE—©ÿ¶*¢WÚ~t’¶|•©¡‰Ä¢‹×öë‡Ö7Éw~ô K“WÌ8M4p6ÜâxTÙ*Ù£J¿ýõ8ë«~°ŸsSÕ4Û”jQÿEÒàýÇU ‘¥[Q=þ«A× rî÷¬w+›š²L_µÍïõ¥‰Ô,út"{‘_zÌg<qÛæ“ÉY‘k9ÍéƒP(©T/w.Ñ”@¬R;è!RŠ\sÞ9ø)'Ê·9†ó!k‡Â© ™ŠÑ튧imîŸìúíσ™ê çƒDnæµzÛ¬ß yjz^m0ãßÿèðå¢S S«T—Œ"´#jÑ@Þóp#®dûܰi-óJ%™ »*êW<%±&~ðŠ„O,Ô¦ð8ãë>¸ˆu«¥$UÎúØ®úe/q;üùLø>½…¯–¹6-¹»cøŠ‡O“ÑW'ÀÁ•:¬ºN/ó‹#Úq£’4“b}“ÅñLäçVr[äþ¡š4¿$¿ŽsÞ*Ü6FoæÖa®åªr6:»€=B’·¯€"u¯ ëhÛ¹að2ܲ«¼µ Oñmá»I‹«ìÎΚbŒ©ù\ÝÓ÷ 4Òõ²âÏçÒ_ˆ —zòÒʼ}×!ç…uø:Ô­o2$v-¸™¢åÚFKÒ<ó€ñ½óÖëNc`¹LoF¬ ^«âë›_‰‰î«¦:YßSËgʪ³f™,¦|º[ÕXž®D2x9mqï'Þ„3ßîQ“œ<A»8ß+¬Ñ¦“¤?È—¯(5˜V&Šô1“u+À£4 5øo¶ŸÍ? uÎvzr]㪫l`Éù¹î8Àþ&ÝxJƉ9SìäÐBsØÄw+î‰ù8“ IGÎbÓ£‹/¾……Ñ)ñÌUÙóW»6b×}àÎP’wU‚*ÒHÙèÆˆÇ=ØL›X Á}_nR™Ä¶ÈéUé'¨)Åp´Þͦì¶;P¦ñôÔBË{+a Ÿ½ý¶â­ìšèm4­hÆ#EÁr%nSÜ0±Â×wfœ1Ö£n-P$®iç m¢ìo>@Èÿd§ýà·y×Ü´£+O`°"'ÔÀmç{õ ž.žú¦*âßyÇho”Æûï׋å\5äW½¬Ž$iD%ÇõXõ¥kú»JyOI-*kÛJ­çÄÓ¾ ÕJÒȳ¤‡¦ïÜ\ŸæÑðZrøL ïéû\+½qo´¢ÇÆ,2Â.[ÛøÞøX9ðqx·°žw…½A½Ðï½ù¥rá«Aå\Ýáë) Ü_z[†ÀáÞyŒ½o­MÎhã ´¼Æo§ìxÑ µ-àeÍÙï)OLdMê$ŒÏâ¤Ðà¾ô~ïNÍõ8ìÏ¢Äõ07³î=Fqrºá± iZVÓé ]{6r”D}Ú'44H~µQÓ©â‚bi„˜XªÛdÜ÷Ë”°›Ó÷'Sê-€g~H戭¢Ký~éIJ‰ÇçãU, v¥ªhÅî72M!¬‡§iŠðnL›ó“…é—8Ÿd¼ÜJYãZ¹«¤ó)h¯¿Š¯]Zß›Ÿâ,°FïwXîƒt™ÍZ:ü*û¨wÿQ;%‘Sj "°Œ!æ"½?S“/²>Zðäõ±[UÞÐ`þä•ã 5ñã•O4l‡œ=¢Ðú3´1Dw†4¼e¹e>›cÓqÿ“¹Š??®$GˆŒ„dw*š•GçÏD;ÛU¹³º(\qñœ"mÀÔŸÇç’Ç=¿Ø H`Ø•÷·Ù½Ù9瘝iq>˜!l”í۞ŶU‹× †gêì\3N­& òtxkb>ookr0lÊEÌËDVÌ@ßjoœBŒA–ÄDú¼*³ˆ‚¸*fé‰âïN’KÔÖ”ðpJ¡˜/šn?¶V“héCr&F~Í€…ÏrD6÷Z1ø ùÅ/Éõ2ù(A4Y™çO”Œ*¡“pYÀ_VÌ5/zyÛéîMyÑ}&ÿ0Йq„¿ž©i}5ì‚2Ø4ù=–öabh–gçÄëÈ?çÚÖïFËšI·lŇ…Y½å?áN`ÿB˜_g¥ðâ¶k“{h¹HùcM¶ò º£‡‡z¨r1­ã}ÓZü„v”o¾•°&1a;؉÷¥ ߘŸ„Ï9f!”BiÒ%ôç±Ã®AïÃÑ“­¸òCe_$Œzr‡Ï…ìÁ<ôZhK…¤Ü(…R²»®µÖ»ŠyL")y‰NÊIÚñçMø.ÿC¨\JÑT!=§Ö¥ëû¨”MÓË©ÅRèð7†–úVY±e*æÒÚ—)v¾¯˜¾”å¢ÎìV$ó„ˆõª—¤´¸ï•º«æšdŸÇj_ìÌ´†»{~€ž…Ç<”$ñöT¸Ïç]§½ýô¶$´–"ó»{¦ºy*ƲûÖ£`ª¼ Þ,E2Ç»Žù˜œ˜E®ÀollÖ¨ar I'œÄ¦~}BÔQ î‚uŽúÍ}Š×ÉXh^Û}•³b{Ò4úÃñûOÝøìšÇñOrOEé.ú¨8b£ZUÊûtcå›Ïfõ„òfPœý‹&û?·Žn¼ã V}&²Û'uƒºçð<‰åÜÓ0×_1ØkÆ"êt7ƒÍ>^Y™«|/ÜotÉ îKØu1™þ¸R½ÏšOõQ‹!^ó©—¬LÙmLrcz8ÖwD¡£§I0µQ““?X_]2'ë\• )ùáժϴ§l‹® ÍûËP™UþòeÝ’|ŸþþY‡aFêMöz΃‹=¦%Éü˜îê¦û,]—){!¯ÕêRÝÚ¼È/óÈ…‡mÅ8%*¦ƒÍDYØÜº—Yü³–3+ã3 v7hµæxmFf“¨õGVïWN›šZy¯¦ŠÆî1꺦–ÙÒzÊ´2šZ„=k¡’ÜY\‘ 7§¼m{h|K¦‚~ˆÁÊ…IÎ2ÜÛ¥üj£ÌjÕ“ô"ƒ(›ú–ŽªÍÈi•cfdÍQõ~ìœC &n·%ò$ÓªKpÎè‘;”´°ú­»Ë5cxãÕkXÃé úà§òѵÂUÓq£6«Wy{²làaf¡×—C y\Æ?º¾†3ú—³¶ùyÉ[§Ôw¾—V9ÍjVi_5¡½.OÃü£T“UO¡Äd?‚pih}VL7Hh`Óµ—¿>·ýþa ÷úÿ¡[;Üô·H´R\0óÙåã#l{Ûíûw÷†öå2B…©å˜îvÚÖdQ ?3'Îï|dýzaðš÷™°‹»kÜ¢­@RóáYúFw…iÂ…&>’Îëp6Ã1¤@^Ì£º·ñïhiFüzb·ç‹˜i*4µÏÐác_È¥o J0¸¢«h"}ùAXèåjaÓˆoq·ÈLÝÊõPˆÊôNÞõ.¼K1Ž…n´ýø­ëœY™—ïAj¶F¡+(Í‹IŠ‚3*þvêUBw_ë=8)Q CN½ï$g‹“ÓdÖÕB\ 8ËŒØL'|´ÏªSóÛÄg4lzç··7Ê&_(Q¸?Eˆ±°Þ¤vv OìK[Qf­§YQÌ—Y¶L±ÿ.Ø;;0v¤$Ð>á>³@)³0}w;Nè]®ØµÆQ¯8tâqwæÙêly|’óõæçûÆX%ªW_ºIæM>“h\m«úÚP +»$°Ë]íyFù&\ÜùǦ|`ã:pYüãpšü"öº(@û¤îwÙüƒ§É–Ú²ÍðïKõü’ý§ ¦x2ÇA”MÈ£ ÌS‰‰gÄVÒ ´‘ vÛV"ÖWb}; ¦®Õø® RYq³oÏ]5­ sZ°òžðãéˆ_’ËBÝèF-±g¼ÎÓ³PrUQ·®>ú$F26,1CÎ×{Óäþó‡RTÌöä?ðÐu†2$ZáeNC ?,MËô§„(Â^Íží‹Ê]ε à­Ôj4éÂ¥îv…µÑë½VÑ|x‡þMø]Òå°q‹¦“Àèó¯ê1æ ä¥aƒ¨$¹¶oMeß÷&5¸ëgO§S¬nd‹ûYFɧþ#W”î8Ýú1`X2ž<ívîdñë–áÉLýFjý×£ŠŒ°@Œˆ×jóm»/}+é7 ˜øÝ¤—R"Îð Ñ&‰.ÞZÁ/±â £öî«@–-[á¯Ñ:òwb¥)›Uºq¼©Cæõ§X5½l9núäóZU}Œñ‰=ŒÿÁÊÛ‚¬HHÑhã傇„|ˆºP…"¬X}ñ¬ì£Pf´£s²úryÍçŽå0n_7ò6®7÷hlâ7ï!¿†=W!tð 9Nò"[ø$/³—ç×}žÒ5 i;ïê9f©„Ä 8»]6ÜCǯEtë{À4¢@ݯkýñ’.‘.³}]Lˆ°¢™™½Œ©W³f½dÅÅRÂi?¹eEØvTÙ8Œ·ÝoïÛa_,¦_DÏs¹âݵ¹ÝÇ÷çl<îX¬.œ’Ù]s`çJyï-“Í~Ùåš0 J P‡IÏm_„ ‰Má’©ûkÕøóZ§©º®4îe%»| 9½Sh ¹]SºžÝQ±ãR“ß\✰ê9v]zR쪭ç8œ/þ"2—*·5w9È×á´ýj¬“¸/½ ‡‰”½Øg'›òk‡”eóKÔAWÂkš5Ž{ik%”àCÄÝINø—É^ÒW½|¯ÏŸdE°kJCW•Pa‹÷'Øl¹š’úhD9[ãûoå1¥Ý P´¤:ÒQ9z<´Þøzaą⢆@ªE§…*ÏþÒ˜¿\Õ +¸ÙBxE5üæã¬­qb»AvnÊ{Ò¨­Þèj‚hÛgÆ}#½\Ÿ%t| +÷ô¤ïvÁ¤_xÝkbª{]ï7#X4@3\œOèÜpQmppRû¿)ªÑ endstream endobj 822 0 obj << /Length1 1470 /Length2 6400 /Length3 0 /Length 7394 /Filter /FlateDecode >> stream xÚxTÓ}Û?% ’RÒéÜ@Zº»Kš±Á`lÈFw‡tI ‚Ò 4 ÒÒ Ò*è;½½Ÿç¹Ÿÿÿœ÷=;gû}¯þ\×çúng¬úF ŽHˆ* ¥J:F …‰88Œah8äo9‡)ÄC"¤þÃBÉbÆÈ”íÑC$ é €D 1)¸%ÿ6DzH”í½`ŽA€&Aq(!Ý}=`NÎhLž¿Ü`HRRœÿ·;@Á âÛ#:öhgˆ&#Ø0B‚a´ï?BpßwF£Ý¥„„¼½½íÝP‚H'Y~€7 í 0„  ^GÀ/È]{7Èh‚Dcgê/…Šö¶÷€08 A 0.žGˆ“`¤¡ Ðs‡ þ2ÖþË€ð§9 è_áþxÿ Cüv¶ƒ‘nîö_ …Á!=UmA´š`püehG!1þö^ö0¸½ÆàwéöU€=á|(°ÌDÁà¿0 ý ƒi³ ÂQ éæA QD¿êS†y@À˜¾û ý®+éðÿû…!¡¿`8zº ™ `=!Êl0"¢Ëœ h€(PRLL€<@|ÀÎB¿ûºC~+‹1ýÝ‘î($…`>ˆüQö^ÚÃèÿŸŠžˆ@ €# Œ8@œ`¢GLj!пΘù{À|–@ ý@à¯×¿ž¬1 sD"à¾ÿ6ÿ=b!}3%c-¾?ÿ¥TTDúü„%’b@ˆ‹‹ÿç_øýo©¾=ìOuÿQE$ÿéÞß@¼þ0ƒûÏÚðþ™A‰á3Àýoú[E`Ìèÿ¼¿]þÜÿå¥ÿW¤ê ‡ÿÖsÿeðÿèíÝ`pß?>{¢1»¡ƒÄlâ¿MÍ -´ÄæéößZ ´=fGNž €î ïý%‡¡Ta>G}ìü—þ&†€è#Q°_÷Æ ü/fõÀ®˜»…Ùo³YÿÌ«‚#­ °¨ÀÞÃÃÞ—ÃÌIàÂìª#Äç7ÅB‚$ãÀ` @‘D¿ 9`z„¡=Fþ—H †y€áð¯1þ[! 9ýºü ‡ž˜‰ý­„Ü`OÔoÁ?Ê{zx`6ø70µÿ}þ}]@ >0Ñü ,áRÑqY«Àà-°1‚¿¼Ò›lÑ#Šæœ}êï¬M£6ùPÑαúÎðcý¹ò¨‰™ÞÃËQ«×y¡K™êh,•¾5ÅcÂÁ¯§¯ ÌŽHz§1ñDZkG)Ldv–x–\if3W‘â="[/6Ÿ_w¡¶HîÜ%ç䬙 è…ü®=œG¬ì+è! +òÄÛ–YžÆ&c×8`‰Šñt_}×,³‡>~|›×ß÷Xä¤H«·F¬:Š’ŽÊO“58u€Ž:%Oó% ‹SQô\©<#™®Ø-Šs ×N|éûTQ{Ê€ˆg““®Rè-½ wÍž HÑ™üž¥FÛõ\ã¯B$wZRcùk³+rÔ8beÕˆÀ zñh˜ø ]‹?u¦¥eÚ8 ÍñAá"6›ãw.írR@ÂÖ2p‰OÏÅôáÌîÃP³…«ûJzJ} \]V—Ïá»ü‚_žõÁ*ÍYÒgÛ-o;†z¢‘ì‡LÔ“¡Éæ9{ovS^jˆž¿§0åUC×iÍ"»my’ò“¦‚ òñôÛ»Ô¤ÈKγ%™ŠSÌkoaeéÞ´ŠT™"'¥t=,gz±P%öî©LX‹L†D0hqü[Ù`?‰¼ní–AÏ×6ÉÇB„6Z]œíJu¹4Ñ÷’aÍ{ÉWÛŠ“¡Çâ3KŠ?L‚m)Ë‚¬   ß¿l5˜+4Ä<€Ç¦wO¯Ù>{ÇÔù ?‘1ëÕø~o'WÆ–zÓ·s¼cJ‡!5©¶ˆbxes’h›ÒÇ~êXË~{펳BžwÐæ³¯Ä Ë é{ë¡î6ÛMºGîß+**n“qÍEJЬUë„pJúãǘ+“|‘¸Mb?Þ&<ƒÄr†6­Ãå´hŠö,ÙµÄQ4|Ss?>ïeüHÙVÇ(¤9à¾À-S•øî¥/òᓹžØ[_dwÝaÐÞ–µÙCå0Vü‹{Ë¥§Q-EIÓïŠÌõU޵¯…×l…[oU·–#Õ3ü‰@´>“tTƒ»\ÝžtíH’Ëóofº,L†9*é'%Ù­IS8gß9Óײà,ª?i¬‚µ)p A/˜Uó>—TòEÃI”.­%Å‹=Ü„Œ^Ðid8tìNžÎÞKCà\ŽÌ»ÃvXmlXµi]áµNþV¡U¡78™Èªq+¾~ªþûÖ/†?lÑSfÒÙÝï>g xÊsß­@ó¾+¥œºeò4Ï?`í˃@{‘ Õ28nFש„^ÁóItªº™BYOõªtë‚éÒø¥¶!ªpSdÃãE¯¶üýT¹ž†téô¼:™á²üýk¥•]Vl•_›3rh' nx*eÌãå(;Ñ‘NÉÛòçÐ ç‘uºÞ¦Ip€Â·4.õmp*²½çs(K5Õý\¹Á"á>ß“™ãC÷†Lô5 þZ£å#(úHâËšŽÂ¡}¯×Ic–…­ßç˜[´9ô å÷²ÕãÒnß_ÒçJÔ|6¼ì•2ÍßÏÞÈælRª#wÖ°'·’æÎ;!îE:K+³¨B®©‘¥É?×Mµ9Ɉ5Þh€¶Eè} J¢Ã[õx"Iª€âS›“¤‘7#ÔˆŸK5ô{Fyz Ýñ·¡Pvþpv½È?;{U1cxw&ðÛ«þù|”0”KéÔwiµÖvàÅÔ yk0³DZ‚^ü!W8Ý&¶VÌÕ=W=Úƒ•ò3&€Ô²pþúH•GK´›®8ï³yIÅ âZ.°âï_|{9:·=e…l³™eÉ¿qzbM!ÏHZ‰j匈x-”¼ºjÓÃj¼ñ&Äžäg¥êp~¼a…&´Óˆ­P:i;ãÊÓË(–HAô$[LQ†b±È ±˜m¼FXT7ÖÁ9qQNi-„?"è3Ñ?(_0•É÷ˆ1FŠ}]¶uG .®5N}šö¯ Ñ-Ã:ræ@}­Ø9Î`µÎ®è>§ [ߨ2]Xï¶/ϱ>Û–›æ'Æ98q@ÂÓ²œÉÅR~êÅxõØ–âî¼kL6Øàê°¸_Ü|ÌpÑê!vÑñZº¸áAævwÿº×³¤+±/E"M“zª¯»4½òàì Í…î”7.ula]õ1×ÁOMIŽ#,ò±Ø›u».sD,a¸ØP›}óe«ÔÏÎ÷<ƒ‰*wç¶‹¹ªz7ºZ›‰ß c 1ô8>'FÏw3ÄÏ} %vެypEÿ¦H›TbìÕÙ|xø´i I5S—«­^ü¾MëÃÙis>OÖ‚‡ù|³‹` ߌ¾‘öâ‚\l"J[wñ×vò ÀÛ¦ø× \gycuãçåh£²ÁçdŽrëÌ©ñ(¹Ã-Â#ß\¸êš5Y¼:P»¿­عãÚ°ØK°lxÀ½0=f#<ÇAÄQ¸ºÞw‹hÇŠ%Û¸…#§Þî—ߣ3Øh£®Ž(ô}B–´àÅrûˆ/(ùyó›t•&pâûúyÜTþ½Y¡ês&š=ô\$î•:$'j^_©qÇK÷p‹MM,¸dŸä  ߺ T¨@›ü*>/`«–{½ÕtúórœZY\…@Ê“J %]XÞ® Ñw˜/ÕA<â„eI0¶„ñÞ£0v ÓÜÐÆÊ^S9X÷íÛ±~§[ý}ÝŲŽ?]|sB{›LÝ6¯Ð=,}ç¤4D—ršr4÷ª-[ÒïFû†qŒÒR°ÐtP[J_VÔR$ïÁcÉø~±iG…H—“­sJ—Â6Á›üø#—| Ú™úÏĽ¹peí#ƒ¸"¡ÍúäYÇI'×ýq‹Îe|ˆÀ>Hè’4¾@<4žWEôîcÇèÏÏ‘‰™þÖJ²ì?pUoú9±ŽÇð>C¶aMÝp‰{/ û=ô`¤x¤y"‘Ô§åmàô1Á=dCI&8ód´g¯ŽXÛ46èìíÏ«K7*¸ý(‰5Õ¾ [‰]r{¹í ƒ—0Æ`úu÷Wç}‰ÌC¨TQ_Aóð$\ÆÉ‘<Ÿ7‹Œ °JÎAZE®••ïâ\>W2 €~´j/˜VXƾLÚ³/73Øáð‹˜º£Yß:gþœ¾¨G­á |ÓõLoênlŸeÚÝçLáÊwUÞ‡¥º»×¨òV–}©[Êò:òЛrEˆ#n=§˜Ä…J†óÖ0ì›K}éÚ’èÈ‘âYÒf‚âŒ$P÷J¦rÚ§ºHó1ùS·£oòŒ/(¤:õÖjñkõà,š6sùÍ?8}§À´Àsqx>v«aÚ¸#¢7;yQ{t™TsïèdÇFVvmYr,…ºÿäC‹pëgª%“èo¹X™wñ¿ŠšFìA'Lâvê‡^\MÈüŒÏÁüžéÕ ÐïÅßFåH~.eN \ßHã%bâsrWá¯å-àR),J¡4&žûeš8õ(³¦éñ#y°àŽjÃ`ë0°(m˜·Ò‡#ÈÆè !v¦§ë&Õy YŸqs?9ÔŒF6Ê×Ö­f†þ´=ÞU˜ )]5 ÞéVd6= b?–T)j£Iv‘!zd-¨Ü~âï}£Æ–LTä¢XõÐiª»áÞÅìíõÜ}…²ÊÛ+ëÇŽ‡ÉX–_-MÜk"ˆcŽ~ž<~z¡½óþfÕ)ÿŒQ_ØÙZÇ Æ§ÏK-S>¾ö²ûDÜÑT÷=ö¬;ØçBýgCDñî˜``aëè­wé/Ëh?Œu©Žd§ƒkërRÂdîT¿†²Òb³ðwVâ my㿉5”hã–ŸŸ”ãGné”ïÕåÔp{œÿñ™¬9ë[· Èç!ùQ8 ©ÙO¶IS%õíË'ï]i§SnÜ÷½ÌÓõ$±O'Ø-.ëì,é?ÂAë6¿‰ ד·¸*hXGóÐê\’7mþ´ÈœG4ч%àãg'Ms–ñÚ$2 ¤p]å±ÈVï\q¾ ¸¿<Ú÷üñEóýAíퟻó|é`Òêæû…A¾\nû¨ûÙ&;¡’]8¥ _Ö¹JtsÕVndÉ’âô•¼r±n¼81—Õ,ô“›W>‘ѽŒÄît@0%ø?¤u°à–e›—àÝ~Ô58âZæ+r‰\»Äú9U_ë!IRö^m½´~BÜÉL½çøÔ_%•z¨¸÷‘wè<ÝJ6… ;µéÊ–3=:ïÜÏ•ÝÕ•ÝúÞ^ 5Þ1ÚRø­†¼] Ï,Sþdøô»È“óÇî,pƒš§i›Ù±x+eÔBî§ØM§OÓv©NHàÙþ˜V HíFìQ¼'øY䦕èÏé'}º;?ÔídÍ&þnŒ¦q/ïÙg.^šë‡æ!ÆØˆô}†éx×!B¹ra7:žüá1èYkÍAÆÊjÑ¥ï]îµ;Žÿ òRÖæ²ÛÞÄ' #X¶* ¡XÕv…ÙŸ"=5ÅEž“ï6žx­ìvŸk-šùçéL-‰ÈÍ&%”ëœX•2£“¦¢ðbIŽ$Ϻa¾*}#B‘%õfl©9e’ þІ´\«ñó€à­—(š}Üsëõá©2æq?n]§Š6¾Š ñÑAËúÊÔDñ®…:(ávÙt¢û<ê á\Í—}%W§ØVgsƒŒÚ¡8{á…úiœâh4ι§šŸ´–Ó½…Ó‰fé—žedöxu_}Q jëÖ oJUe3¬Ênáãœñ}Ð2˜ŠÒ± MUNÈì…~Fí,„û 5­Wf+Xßy_‰é} |”‚Þ¥8.2].oà«¢(~YUýêŠI<®Á–ób¦¼ßwkcèMqA¼’蕚‡Óª þrÑwìIÑã9j“šºãƒ2>ªU¬ÏIä?Þ%)¬Á×ñÚXæv¡E—†¯-H>!>äZZ÷à¼3»©7—BãF*ÿ,±úø¦¡eíxR÷¾ËÝMÂ\a[o:@Õ”s¤¯¤YÈŽ#­t‚Ÿ€g¸¥æ Iurç‘Qk”²ï1kÅ8Eã•÷m?ï)ß"£”Ï3®JLsÙŸ³qôkØh~*z»vâ©•—KxÊrýFBRðz¦´}ËÞK̬ÒÍ'G<(Zà —<3oÕ—G8ÝÔPÝ’’ëA§Ï%ã™è‚ûI]„•Ü,‹?Uê‰Ë†ºš}s-.*ïÄ6¯á ¯?d*¡É#£î¹oRZ?«»(¡ttYDÍ’ŠGËgße ÿœ9æ2Ïp¤–äS¯;Ö]Ç'ÌvŒ—ðï³>‰wk}"Mw«ÿ3y~ûl"u±#½Ý# œ(|‹Ìó,ÞHwʳlÖl•7úOÄUåwÆÞ¸è“I®žT³å¾vJSŒ{?Ú7¯˜x&­hc¤Wž&òµ›Wñ–HC¸'¢—ýå²F?éîÏ[=|È»÷D,Y쯖íÂ$© „Þoè4@Bòåæ^ îNÖ6a3“ï;¯ãZÇ•8wß¼Þiß­´Ý¾?q9’ÙχG¾f쩨µË«‹¡Ó,üQ®'ÿœC'E#li‡]Ò4ç…5mEß*ä°6Ñ{¢cªJ=ý9Ê窱!l&) Í , ¿|Ó|&‚Žn®üÙVèRUÒÀVÚ¸yv˜q‰yŸ¬‰™×+‘w+k1ëÐ½Ž†ær;É{[CKL³‡{,wƒƒöâAª_w˜mÈD¼ªn¬êåzMÖ06 c{ù}Û0nYú6 œÿHåp÷<Û2×Ïw,ušªZt}ìh¨°oÇÝ)ïŸ,sÃ×L¶û8f]ö[JÍ–¯üfßÏV“•o„¿ÿRèU—ûgß÷Ut/‡³rú$µß/~”A(àXˆ·Øé¹¾k…Õ3‚³É–|Áåy8@Í*»(òؘ@ÛÛñÌfúEúžélÿ—zI­µz3ß„É ËzÉ|Þnï²Äôžy+:§¬v\]·çç²ÍVÀsŽÏý¤[ë²4|§­Tfo¼Þu÷(sÕ!~)/ßá|õT$# Þ;‹6ºØ|ÃÁzÀ³-än8p¹4ÿª‚íŽp“'Q– $Uô’ïÍ|-ªôÁ =!U]ké—¬O[1õôgǵFðÛ.}ç€d:z?/:,ò¥Õ AJ-?+]ªÂ¸ˆ­«µ •]þ5ˆ©ð$…Œ-’’‡J T<`úé¹Ô$½É¼ðD‹ì (fömY·YÛÓp½ë/)÷xõü¾· ‚[N]À镜WËææÆ(“öweöÄo§[ÜÉn<¿|{¼Ë¯ ŠÒXVËÊ“»z—½BbmlÔú¡4ÝŽCЦýp­©& ô „09H>6¢ãüšWE¸ ÜðèúT©Yʬ’r#ô G·Úª[Îæ×aÞ¶Cù`ûË+.)­I;owð˜1efë‡EÛŸÄçêY µ—q­ ã¢RN0ùgöÑ,þPïv{€F¦J^ÚªìZN)0ÈxÙ5ï“ý÷@ïy)óÓˆ¸4Ç6GÕén0˜ˆ­2ëVÀ1¥3³¦¡"½Õ܆*Žwb=ëõ"Û5š< aN´õ|Æ='±¯K/±:¢†<Ë„œ63=:ÐüZ(¾Ïü›mÁ¹G“h%ÐR*É4ªêX•1’ùo£õ ó5ÏEÊ™ò«y ƒ#W·HBX'©‰øÍ‹[³{ •µ–äbÃìy×ì|ÉÊò ¤o+yëeØ£®7Û¿êÓÙ¥îH”ªY@±Kéü?'5¬Y¥Ò®…‡Ù9P\Q£ð÷ KL×ß}¦òQÍ “ÚØè‹iýãÐ6gûþ ¦ú ÛS‹ø5OiŸ•!sÛOª‰_é¦|ª'^¢J;—Å*$i“¾HǪxÜÕÀaO’xq[f£‡vÝ@SÐð3×K2dIèÈhÍhdÊâ‰/:CÈ£ï‡QöϨ½žªº1Òø‰Œ€’§øtûÒ;ߤQÆ‘Ò-5æÛsV?ÎR™JXÀ÷ ·ò¯ÃS·Çé „³­¾àKÌc+úÞ‘ŠrØ•#vm íN‹Ðp]ªð 1©¾OØŒjx¯v¾«¾ÑÊãˆ7º+±)¡SAQZïM¾ä@Ûðý¬Í„íÛµäXró’›\·Q‡6RɉÙ/{ï—ù„b ­Ç¦]xvBC³… eOY‚VRÚuUx?ãÌKÞ;2-ïÞ._^*~íLMø ©ZÐ endstream endobj 824 0 obj << /Length1 1434 /Length2 6219 /Length3 0 /Length 7196 /Filter /FlateDecode >> stream xÚtTTmÛ.Ý(ô €„0 -¥t7ÒÃ0À30 Ý”tH‰”Aƒ ‚tw H—t‡ ü£¾ï÷þïwÎZ笽ÖÞû¹îz®û¹î‡U[WÆaUDÀQ¼ >~q€œ†ž±(€Ÿ_Ÿ_€ˆ]†r„þ±@‘®0\ü9È!¡`“£Ð~8@ÕÍ€DÄA¢âüü~þ‡;"ây°;Ì ÁPEÀ¡®Dìrg/$ÌÖ….ó÷/€Â=|(úàw8@Æ Š„AÀp€euBW„€z ŠòúW NI;ÊYôððà;¹ò!¶Ò\0”@ê EºC­¿4ÁNÐ?ÌøˆØúv0×?¸ÂåFBhÀÂ]Ñnpk(€.ÐSQh9CáœÕÿ8<üÕˆôŸtEÿJƒÿC 'g0Ü ·ØÀ¡-Eu>”'ê ·þåvtE ãÁî`˜#Ø íð{ç`€¢ŒŒ&ø=WæŒrås…9þ¢ü•Ýe¸µÂÉ G¹ýÚŸ< … Ûîüs²p„Ü篅 nmó‹„µ›3ð æâU‘ÿË ýƒÙBQaþ‡""Bb¨ ê ±þJ¯ïå ýmý‚Ñ ü|œÎ4 ¨ÌŠþù¸‚Ý¡Ò êçó¿ ÿ^@k°‚ÚÂàDÿdGÃP›?kôá#ažS~´ö@þ_Ïþž¢åe€;zýãþû|Z2Æê:*<ÿÇ&+‹ðøð‚„¼…Aú%*&ðûwšÿ4àoò¿Qm0ì¯Íñÿ“Qnƒ<üÃݼ¿y¸ÿ% οF† ðï š´–¡Î¤oÆ/ÌA¿@ÿßð;äÿ¦û_Yþ_Òÿï )º9:þ6sþ¶ÿf°ÌÑë/´”ÝPè±Ð@ ‡þß®†Ð?£¬µ†¹9ý·UF‡ Ü-q^¿Ðæªó„ZkÃP»?Búû(Ð5ap¨6ÂöëÆAGñóÿ— =uô­âŠ>°ß&(z¨þ]WAXÿš>a‰{ñ£E& , ð¡ÇÔêù[ß B‡Ðý6$ѯcå`p7×_èo$"Ð׺oèAøFk茄¡Ûô ù× nH$z@+½¿¿×¿o(Ô !ú2‰€H„ÚW…6žWÈ0xð~Ä[\nzoÜ)Œâ˜zéc§ŽÿBiÌEÖÒºôNšöô›ðÑI_îýó!O³Ö¬ …Tå\†Bçªì!o^ïÅI«-”ÙAo;,šöl•ü A‡é¶¥)Žéý$ÃÉŸa¢m‚eëWM®&wN€¢od¬© ¨X™œ¦¬hcV¶eTŸ±YÒ4ÝM_åÉðV4,î»lc ݅תi\Fßü|OVWgšàñ+µör‘ÒpJ:*oUÖœþÄn:ê„,Õ:W YáoroRâïÒ:…s,`;UM€Ùâ:èøÅŒöý2°HÌD¤ÖmÕᚆÆÑŽIÖŸÞ^x/Ù¥o5"õS´ÀXàQX)'dË«¸/¡i½éè™RÍ×Å©÷¡À°1[v”^÷áþ½6N¹Ü£h—Cå[šZ—QK­ñÎ R°¡§,:eÂò£&3z³êU$¾:"óИ‚Ïv'ëfrtÏ)(îÈÝu<2ZŸz¡t´³4)ë OÆgÜ1ÌÄ-¿¡°aº¬aq©¬qÙß.ò†B¹l5㜳hbU«0BÞ{ÐoŽ˜Z«Ùê{I£T¡·Ä?gvmœ;9Vd ¥žåâ‡K0@>JGŠò­ïÉZ5éÆ`Uú,|}¨€YE¬GÕÁWó'€¢o‹ïñá˜!RiT’þ^íVÐt“_Òœaê€B>¦ŒÓ¼sÇ’ºÄj¢ŠÃ -!Î\Òî­'pãë?sß%pQv¼• >ÄÉ!çLॠÇ‘”†vd´³ä\\}¯¢Å©Þ‘‡Ÿ)¢Äïáö…w>¬ÏæhÉ¥—ïõ !Òϯ2ŒÛ£ïÂ}s¯ ,ª¾d¿òÂj쥹ï*ì‘Íè{2k)h|í|Ñøþ¡| KÝ£‰•[µÂïåû]#áø?n\9u¢Öð=ëŒlDá3KJÁÃ,ƒÎTƒÈPhÖ€¬JìK”Söb ß‚©Ÿä÷UÑ+Ò™†Xy¹ËmÏÌ[Ý>éÑ,½¡ey÷~gä]ç ©\âXÊÕµz/oÖ—ãy˜$Ò팛‡oúP™A3Þýƒ'q´x½ÔwÜÈåDÒ­Rªê—YZcâF8¤+'m^J#fb­zu–^ ü «wØvi{’v#°V8œ·÷¡¹ÃåCEdy´Òëà ¥&a2\I™ú³)•wšN þ†U«Á¯ÌBî uï2Éä•]¯?%¥)1û Ÿo€’³r÷lRDîÔ>c1ƒÉ7\žDõËôG²­Çß.Ί|Ô?¹I¯jœ—)À~DðœGØ‹¿&fGYô‘ ÑûUô%Ð[Ü¡ž÷ÛJRiC€Êš€žpN˜È'Æ›R‡ÆÀ„5y–c‘éW/¤h  G¨Þ¶í)þ3 u¼g·…²1¹Éx®™t"dtö·ù°}gSãÞÖ>U¡1Zž}·ñ9šd!‹›0¹ÓGwñY¾1;V¦pïJ„Èî¸ÅnS‘M vIÒ”ÎYO4·Ã340JhàZþ.°£ å{é&°Ó ê2É30™‹Žå7©[ >]ruÀ+¢ÆôU OFÎ$’X$8ctÕäz~ µÛ>b|Ý¡IRš“D¹Ï\¢zÃX¹EL²©n˸¤9¨u¥±m&PݘMG¸bËÜÏ#™è×ñhÕÞ·ˆ@b%KË›…±¥Æ<Ù®³k¥%:£0aPpºM$],JÑßö‘µØ·KŸÓ37»iOö1¡„ßÀf|fÙùõˆS¼eX«ý‡qv1ÓÎ˨›ÚAQ’Ú(Û}Ÿ1ágÿç(%ªY‰HÊc­w‚„Çt…›6wèÞ¿×8[\ü—  U€YH÷ºš8b!F{7é]p´2¦•Ä}a¦Ï‡gåÇ)÷&H„Ûd4®ïµ/Ž`•èaêÙµ-§çW%–Ü£\xåáÃŒ&ù_«gjWχßj|Æal|idqEV¥2ZU¨åü¢P¸%üš4\v‡½kúáëùO·MX¨§g$îW/sÈq*‚Ô¢…è´ð­Æ°FhØg‹:}ð¸˜]kÒV\ê•“Kϰ£ó$Bì“ÝGïôúìß]ô™ÝäpàQÖ";À­X¼2,º‰:ÖW 9ðŠ‘.s)áÄ_8|H/„‡;ÆÄéЄ+{re^‡Ðû¶·0` ô¯d” ˜'©:ÞÄÞcw Ô¨ Yò‰«u™Æ¸ÃZò9`Cø1Ô£.†ñÑSã÷Ì/Z¾ª$Ö‚šR[ºÃ—¼gw·A‡oI5S ÇvEFöÁ;ŽvIôúµ+umæÔLÙ}æÝ'ÇNP,å—-éX›˜à°éÇŽOL÷8´‡JóÒH1à¿Té¥T]çÕ•áÖ~\ÇêÖüì°v«o¶}Òç)4)ÿýÕ›÷‹°ôæø2 ß…È’¬ëˆjÉsê~ÂNqu)7š}yÂu•Å3þ¦”Ê Ÿ[r,]YkÞ3ÝÍ›ï&E‡bfÚùÝWuéM-ëk˜c~~ŸéäŠåi÷½|þΔŠ"¨bpóÆû»ùêåä=3î!€Yn}ñF*¶ûØ+)˜*G¿ â,°õ‹×û2AcÀ[UÎ}~aíB5TiºÕn>L9I¶ÖˆüâEKÛ‘@:{_?±V!iü4Ÿa°¬e”}³ÃÓÓv âq9½š”ø¬)†Së`‘ ;N&ÜHUHÃ8óí]>Æ&cŸo.ÈpûOå£r3÷Íô+·ŠÃ>ª#vTJå5²Ntf¼ˆ0Î`ŠÞñj­Kæ`0äôlúÔ¥®+Ab$ØÎ(“ç#cúΡqÇBM4‡>›‚‡¼ŠmŠþÉ÷ýv3·EfØ­Ò¯?U‹ÿôJT'‡mCUÞÓÏ+Þx:뜥<¨…ih¾>Ú¸†¼|AuÜÏ`kX½J©–(É|MvôéÕÍö“ŽR-$ÓæWÞ(ÞóƒW(¢Hûó ClÝG¢Ú:!_…®2ÞëâFj\ˆ|úÂ<áv'¤z‡óQëÊ{M:U¥GøÁÏò¸1à{½õ³Å5Ül‚ã)²×eD»äþë g÷s©|—êR4…ïRø“ôè¨ß+…Ss¹È[ûJ$ñÞXuIµ‹èíAÒþTxò¶£œýÏîô˜ZBÝ]I˜iØPGR cÙ¯Îæ¿K@Cg'øºÌ~òöaT* ‘8´°rc »“mžäP}üÒL©YP ÝiR¥æðÓÜû8¿,»_Çzyñ…z’…È"šzá ÷PD£­t¤&¬õXæMÇ×Övmy&w™{ݦá`£óެÞÊOCº ×/æ È3ij±:Ȫ×;=šÁ¿k ¥,]gc¯š×EÒ,ê0ê‘n¼C%/5yQÌBŠù½M¥ÿ­oçPhY]ïT¨l‡ïÅQÄǘ…ÉdI¤í§EåiÐmÕ¹zÚì:ÑØ`Çx“<±“™jQ¡Vý$í,犬¡7Ot[*R;ðmv#ñgyRšb@_Sš»¹<†Þ÷{Ýô˜²¹‡S\5εLâ§O/ËaS7ZíÖÀl2NÂÎc áwz:ÂÃæ¢…Fè Ä Š3ë_eº™úÞâDZ7kš“,Mü‘)iZ…‹‘±û˜Ô㘫C¬=è‘Õú>·þé#ý€Úγë£/F‘÷k¢,õ/›W–ûÒ^çßm'ì‘yL ÔcÓÛXæ]}RÐØÎN´ó ƺÖr™¯bà•fBEE¾…ë:I™èF®»Üåwupñ…“’ ÿ‘n»èQj$ÌbsLW]îZJüÙ®–6lÖg¦¾ìLõÖIïtõ®e’g¥üϬ KçbFžÀÉ­ŽÊz{-^Má’ \LƒJE¥¦ÕìO)Í»×Å)QÜj³?:ò#̺Öø*öÎH—™ Œªõ «¾Èëç¦OÉÓ÷èpD”D³Î€_õ•¡J³Î>™"_¨1êÕ[Õ~éÔ#öÉObea¤˜§á£ ñ[$šâ•íã h_ȸYMþÑ›¹ bh÷ÿR/©!ú>ðKxcrÛÞİœ ë†«ø€_Žß§Á./8Þsý·bB ”Ø%kþ‚ú"d¯‹‹o;~Ë¿%€¨­gÍå)'ê²p‰á o¯Ó"³ÍìlÝÒŽ¨!¼fd Ée–5(Éj}¸dŸHsë2)&JÿfO˜Y,*)»Ö‘b2+éUSÓ°‘B!rm7ØW;Þà~ð hW]­m¿Þä³fIBÜ,/wêaAiG{úXá,Uªdɼíå‚¶9Üûñá ñSlËRÄCÎÁOÒxà ÇÆÜtæÝóQ©gÁj8Ÿˆû‚keF|«±”xôe£·²u×§BHµ&dVe?8¶ú¬»:Þ¥:}¬9ôÑ[$@×Fy)nâuÂ5Ku2?Óaf%ï§ÆrÚ:¤¶ê°BæÅv¹«ò¨–Ø¥4Jœ°Â[L‹óžb‰Ö)‡·Æ{ðÞ1B“K)u„$…U$–™JAzŠZE Al¾ZŸÔfzò$Bø»\Ò½Q»D²'·;ßYg ‡§}Ïk|²1zô¿ çé æšöšv²io8A#GBsfùxû‡K¾>u¬êjî=.Ë»zAMu-9¤ŠµÃ«T<ÚñØ› ù¨q¨¿äðÌ<Éy¼Œ&79®©©™ƒßõBnµnÚA¿,ç·•X³õrSä”ê|›ÍfÖ¥þzpÒ#o-g4–IT£Ø¹­ì=ø†ª`‰`0?"àÌ&²’][U‡¼d6„1é9k·É,æ³ Rz~úNï9 úc@*¡Ç Æí^z"Cr™{yÖ•fkæÒñöÆ½Ó ‚],έë#œ½­˜} ¶8”ß‘$3‘2î% ²hÏ«ÎXÚ†/õ°›,ñèn÷JX ÕGû7„~o©yÈâµËŽìøò‹ª‹'Î>н,é·SS¢²Øç¯f šDœz†üäzêÙÆ´Ûñv³µšpç‹ ÓÑ'‘WßÈMû¼úÁô 7÷·ÒŽê†…ŒÚš.Ù_•bÝN ¯“÷oœ%æã½;HTªí ¤vUZT«‰™ˆæOtfµd­áÒòÔ2Ð`d—±Ç’+vLê‚N½KˆðÆä{ıhWl«¢}*Œýƒo(¤/÷Eæ7Hˆ»ÔÒuìÎ dÝ2$¦ ¹Þöºî¼§»•ðµÿŠ"#j¢æÔnÚ!‹ZF© »ÌGìùÖ9ÔxJ¶½ÑˆEQ¢~æô EÝUÏ­Ÿõ¸bl¿«±_ΙÏéd2þ¤4#îc#©‡K<ˆÈûn]ÊèY-´µ¬OK¼§˜hD"©Þ|a"ùnÆ<¯±_axE\R S\ùqÿ­â̆5]I‹ÏïNGE<¼0¢§mzè•Þ×1´;{&Þþº ÅaXoèGéc »,îÁo‡ÂJh†rs=|9:í_“GY½L$šŸ³ts'¿ý ö%¾u_W"XÆ`‘ÊH-’Eó õxŇ?¶ÂÈ(àrÂuÒUh\ºÒlå Ê_/Ÿ»çGNE‘Û{‘l }‰×ÖmÓ«fmÃë¡jgììv‘A³5½’VòcZ¤$<†¶S‰ïÉèà›ªJ~ ïJ°näÉÍ(ÓÔñžÛ[—â´Ms¼»ID0hZªg´äo§Å‘%AŠ.aO ±øïäC¾w’؅ܶÙ5‘&¤¬ðKÄQ6=k—Üx.ÖØ™Ç†:¦›÷—ÌorTÅœ%åÁfÄøÉe-ÂBœ±éKŒÏ7ƒ)»ÁוÞ8ÊÏôžÑàç(÷Öô'°ñ?àz0ÚM6$Ëe­'LNhc0ò~{ÑÝ·ÕoºMj]Föš,•¦yG$ˆ/4¬Áz{ì(+7Ôð2 \Ž´|^ùàq… Q&oV›ˆ²%šÌb“y±Z3M7&´¶ÿ¸­#KÏiLŸRá ¦›â]K~ü.ªíüÊŠ†µ}3jŒÂuMØ3ÅrV5y<ú­}[˜ Ðú?íØ endstream endobj 825 0 obj << /Length1 2390 /Length2 20733 /Length3 0 /Length 22120 /Filter /FlateDecode >> stream xÚŒ÷tœm× ÇIc§Q3±mÛV“¶±'¶4¶Ùضm4hØØ¶oîûAïçýÿµ¾oÍZ3×±}ìsïóZCN¬¤J/ldc`,acíHÏÌÀÄ•W“ff01±201±À““«-ÿ#‡'ÿllï´±æù‡…¨½±¾#H&¦ï2”·±È8Y˜YÌ<ÌœUlç%qßvíöÕþ”ç/†5a0@¿š.ÛÆóiC’ü4ƒØt\r²ã—3K"K”‡¾ô”Uš ЗNÕR¨£é<¸PÎ^>¥Ääí—dÃAÅDÇeúJE6q8§éŒG£áy¬õöÛºòƒ™æ›:/^À>§æÐ/voXùT÷}©A„.µM”Ä[óÂDA_œþgÂÍ4ø99³ŠÊÂgiGl/TBãiØmLŠÎ}:a¥Æ•Û‹7>€/·üæöÔþ¨ j˜²+‰!_DüÒº·‚YE9Ó¹ÞR°XÅîmp”ÝÙå’5"o,ãåfCvq†sr¢Wš‘f'’â§ÂªMN†å8"Bɉ‚2ÍœmUQyeÍ]ö’7ôÒë½JŠÍõK•,©Òb4›¶¶×žw­ã&Ïâ˜{ÅN =fíô# uÝ•L}ÞÔ®l,ÉûR,pASÇ6‘1f¦ÇcНlš–¿¯먰‘4ÌMÒBZ.FsI6TÚž¾å榕(æVËGõp#‰ÉTv¹a¼œ.fãÑÍ'·¦å5rp°óD ªú¢Ú“²4Ý‚ÿ€E{­}Ú90êŒ]T±~¼Øßóö™_Q‡Ë{|bg3°|õÀLí˾ÏKxÝÕÂk¾¸-ðFû°Øb“I¾_ZDíǠÇ7}”õ>«cª`ù™çò(P aå‰*ó‰hÚœŒ!æ1CtgDà׃‘ýZ÷—÷^Ö„Ÿbx:$DTÏ«¥nq%‚¥UËOe`Ab+Ù>±ÀÊ<<̾Øä}.Hi:öZêWZ“¦|S7[i‚|þDÐæ nMl{–çl늰´“¢Ìƒ`yºENê‚«]Vœ´Œd)T哯?Á ~kÃKsè&²ÉEüÖú,æxõ|¨¿#Kè;á“Ìãõµƒ›Qþ·¶ÉiŒæoK“«<ú'‰ ÏE@ß‚0óÕÇ åÁD”jF–7.€*ÖaÚn[É£NòŒÑgD¸oú#hù2îuÍR LÑN™;X¾5SªMË6Œ_ô`)M©Ù1GKy´ªýÍP²¾$ØKv'¶¸¸kæìûÌÀ 3êõLÝK+×mp'SÈ„B´¹r˳TöÅo”nê/5ÌêûÁv¸kK bI/æt¹/×ìÉMx’ˆŠW»x‰ìe tV2U²RØ^;gSæq’Mq鸡µõvw´ûQçÏ“¬_G‡äæO¤‹ûå#×Y‡Àa·¶çbr² ÛÇh¬# =¶×¶ßzTFŒê1v‡_ ÛçpÚ*Ôü·{ŽûKÈt¼|Dä_×tcd,Œ$§`(˜×&>EY9DäÔ*䣫\¿ÍK²8`㈬αÒìàÆÄ•éE‰~:$É6;‹ùU\5h•ûó«°âŒ`= Yžˆ:æn“Q®…™HdüÏÁ8ÆéÒNâ˜6‚ø¦3ì©=Ü¥±ÑõÈľ7S’_ìûüÉæsöçY×r;ݘ\ñf<Çæ„Àb»†Á\ g–§U½(ž–žhh±ˆ%uŒe+i¼”©T,JÚ|6­ïgjfà-µúE_}7xò7#2(=égüݾcͳƒo‰%£=‹‡Nþ¬e]JF.(Ì%H|ègÊeO´&j-ñu®ˆ¦!6 Á€¿Ø6Ò²@Œ{oœOvÙPóÊð¶¤M‡lȰ4ýrÓf`~„Û£4ΠdÚßÓ*>B—ïpä!ˆö3í^< µò?²O`Ç®-¡ÁttÔ”ÅwR”#ʆžG=ö+.™eß…ŠW²BÍì7 5¶ÜyëúVaÀ=Ú¼ö¨ RbØGÎ$‹·q>İÝubÀÕ¯–›*êF§„åtÊENß9˜ÎŒþ³±íFÇ_VMzÙ½¥8ë÷ŽÉãf­Ã>6XeIªÐE’‚eÔ WŒO3åvJjâ¾ ÒyvÆÿ A@3™-èê#þÀ,Å&‰£¶s§:ëÕˆ]NKoŒ±ÅÆ×8ƒO,>-VRæ¡Ì^v¯meºJ,Øž«ú\'#Þ!cãµJ›wl6…ºÇûÁ¨'[üü»hX‘®S œÓgcƒ¯#Q¯ËFÖ—r=¨³kÑA>B虦>¼1†á·Ý|õçymfžD5h‚@+ä~Åñ“Ð †œïª`º7ÜoÚ±ÎUY è–¾ ±­wª Ž»³ÛÇשÙ]½ßÃÞ‘”3e>sDmæ§ Ø8¾°S°\^çb·7}Õ˜${ë’WæQšlïÖ:ëžp)¼kc¼v2oæŸxßЕK *¸/uéSøÕ è%±b¤É ×;væ>´w>AÞª/_lØ—ís̘{Fpi`ðÉG–+=Ån­ÌÄMÙ?*µGŠÞúSeÁ†1,ˆÒ%r®\‡F#7A¿¶¸ #$Ô¦ñò9l“91ÅòŒ—ºžÂã +€v±þû}§é[^zÂë{àQ'q­i=’/¥IŸ ]K[¨ãB†lî×¹gÇû[ èiˆl:>R°Wê­/)tî)îáS]‘а{…UäÌĉù`CÙÕuA$¶N“/€«}{æâõmû——j !Ñ`*Ì&$ÇÆÍw¦Â ðŸ²Žèçs](¦"uÏ$sëE÷çb&Äëüžáq%Ê ðÛì[ëMEŽscÊvã•§¿SIZNÜmžyäg~ð,Ri}„x•GE8ÀÔÆt6; D¡bÏqãà:æâ²9Ba{ÈG®. ÍQUFv ONÈ^o›ƒØn‰ýláÀoél°6™Á5âY;ܧաKîqñ«¸N€‚Â@+ã¶Yãés‡êP]8òüsí*ØLÙ°˜Wbû­äíËA¦1¿‰œ'Ê €ö”zÃ5vZõôÉåÜmÊ7Mg[ÄIIW ‹t«jtŸ¾\€1æc®H]KM™„Ækûè¢#’|ߟg¡åŸú…΢Ö;Þ<¼'Z¥Øò-¨n£ræéê˜é#0ß…ÐF‹Û Ndç\‘5„N$×&ë÷”­»B>·&×c£Ýµ¦à*×W{€‚yó¡ÑfÔåª!Ì‚gðŠæ…öÔŸGÆŠ= þIü‚ÛÄ鋜ð*o`:ÞOo°gíÏÆÊÊrœÇç¿Û®D¶Ë`9ÚS(±qóR}'Ï>Âä‡'ÍlŽl†h=‚šâþ›ÕÎ6'©}–43Ùƒ‘Ç*6¡Ÿ¸#«^¤Q,õ½K—ëµßgB9¼%ôãÔö‰sa„{ìdF ª–vè¬ïñ£ÚórNqK=÷w·°n5ú¤±5Qg8'Õ½;*nu{ UÎ)‡õ® VÄˤs¥Îå'Þ¡—jq6Æ}6­gWö×>­z´‡6_mz?€Iz±º“õM.ņפ‰«=­)¸¿LÕù9,ý%Ä”L`ÅÕ_øøAä»»j8ðh%ù»Ûm´ºâ‡¯ýÙ’‚™VÓårCgïû —0–JVU~h0çË¥¶BÖtn>½lóØ?ŠÀGy\Ò2qd5õYHŸàᢠ]¨_©œÁµõÛã [ÈmƒKAtkÖ×nÚ&Rº¯:¼ ÈnRêqÐŒ«¤$ÔŸæÞ›aÎJÆ|Kº‰'Ó.¡®?p =|ŽÝDoVE <ç:?V  6µ¥òÖl'rbXôÄ'äïd¾Ë«2_u¤ìÈès7¸¯jt;ä%L‰UCÃiJ=¡gh-gÆ™wúP³º®[¿RZÀ:±|d‹žª¬T0µV¥ÙmXŠÞìS¦B_–Ùwiñ¦{¹_·ššâ™Fêë ,¸„_B«F¿ßUÓ!Û% ôƯ@ˆ‡¶²)ˆ”:Á]uo»9¢L¹kÛ–· %D%1öŽÇMWÍ2®X®|³\¥ÈØÇÄCUñŽÖp!뉻¶Ö䢕fwù¢-匱RÛÁ«N2”Bt°¡€û±g½å‚í*=hr•f¦ÿ–ßãkæ‰:G´ ­ùÏUþ×êÀж:ç‘4'¯2;‡jÿîb:å­j‰*A•NI+ý 讇àÞîA7D·—cƒ×)u¹˜h 4åû|!” õzŽJãåÃß-­´ÒØuƒ‰ŽÄ&¸.ƒgMV ãí¾r›7Û-¯_ç¾LË-+^æß»É”+ÇSt+C²€‘ñiµ›QŠ~PüT 5…‹œqFô^‡-lý f:ˆ§;6špžo‘hŠa½gm÷é8:¤ ÞL„ã¼NǼåp‰À5bFÀ@пVºìW.|}Ê0zCUHÏ·T/D°*'uÝèqÃâþ¾ \RrjX©žkÞrž£sQ+©TÜÆV±¶ò\ü^«øwäIªgèY1þ¥\¿:Ó`;?|Ð¥fŽ$: û—İD/Öæ!€D‡ñÓÛ‰kC &«¾¢s s$$È~•7ÃO²¿—´Õü1›}·­ËÛ†·ãDˆÃè¨KÑ…Ð^[©µíŸœ)ñÞù1=þͤÔß@[ÀSïý… m|DÂa_ò¾Qli6ÓcÇ}*»Ï6zŸç‡gÚÆPÏ6¢ƒh%ün«Ë\ñVÏ`Ë–ðjÐ<,à’Uc¯[êYàæM<Ùà» òˆµ‡^[ƒš øÀªÏ•%ÔØï?&CD°Î뎆Dº~ñåÀ¾X´==Åbʧ}Zæs:¤Nl9²Dðj7'J3kOë{ob£äáÒCÔWþÔšˆ!ÛÍa‹j.wÙþŒ¿þËÁµzi,Mï$!$牅_Õž:‘"o°Ü›ù\ŒÌ•”}Þp(íw§ýÆœ™‚vÔm«Ñ‚ùÂ?qÞVnãf5£>Azïñˆ´dŠ·Ýk #¿çû‹7•ÞÇIÌí'G2.µ3¶pÚi¶8õ!d}š øÚœØÝqÐå*5mAè`B•šª#¯+LY}§(FºÞB!ÇCú"â†Öóð=@¿RT•Áãë¨òÞ”ïøáºà{Êñ·×$K*¬Íœõ±oxu9ú‘ßÕÛB‹Ïkž¾» mE¤ãYR{êo¬–bK—~’Í!õ~+¿O¶«ßñ‚= fÕMÀ¢I“ʪž•´š| §šÀ‚"èÈZÚõœõÏ•z£´hd7WÄgöPaºC¢O³-× þ2Ù Æ:ó¢ÂŸhÅÊ—­Ç9/—bO¤Ð…„ù=ÆK1¦ }¢Û /îGMß®êÌ*º_bgÕ%ŠXöõšõÍO+©sr0©‚‘ÌÒä “;ƾ:ªè•E-)eû“&zı·¦G¤‡mk»î«®(RÑE!Ÿ¬%EH}9‰“oY{—BÂpssìƒËz«dÅÉVäMŽôùŠ07=X9 _uÌ›(ð˜WÅÜìB ‹´D4¿L"z$,Š£ˆŸþœäÈhUùt)Ìü1 9©¸ñs©ˆ `JQ“Hé!³Í×”ÉgJ÷ËÈ×Ã8ã5Qn½u¦f liެRHåLÓr”Žú#¶½•¼h0ˆN»34ÉùúúܳP`‰$âËyÖµ·^)Ñ„b¶f²Ò0¸.iüÂ$Fýçt=¿ÓúÞÏ&‰‘Øò5’ØkTD9y03(Çù$’UýÒïg›žl'jQ³"¢Uæé¾³* º¾ôÌÚÜNeŸ´i§¸ ³ÒÕì*é8 ›‹éÁå` ß~B5bÌ‹C½¨\{†QËc=®XÛ*¢2‘öaJ4Ð4稇ңÙLB‘jÀÒG®8ï>‘ ¦æÌ8•¨œD[E»%Rœ˜×Bâ՚Ǔgh°cr“›Ó…cËñ ΓaJé`Az¶êZ$Dßà€½T³°ÊŒWÛTmÀk*ZŒ£›'›ÈŒ©fÅï‚,6# ˜;¨Ù $𸊿w.XðË)ð ‰X<ÇËï¼ ÁÊ Ô‡fÇÉ[Ÿ¦ò`8Ÿ¢k¹?D”«9<8}³­çlës’¦ºnkbõ×Nñ¾‹BCwÄÚôÄFÅð«„´ð6²? ßM$t×!Òû£¦-+â=ùQRÕ¶¢ï?:¢é6ô7*à¥ØµPB£¢¯ƒ“#°9}eýˆ©nnÉÿ•íJŠg'0º\€d?£r–EK wS¨ù- èLãg«úLo\]ŸµUz,b(k/Aw"ò=ôv•‰Ø’§×¥u qÏôà{B9Ï­KÌĤ9ÏŠ¦5úÂÎÇçà~H‚=NZZ,hT@ÁvS®É«W«“Cƒˆ§]C§Øöû å·opžÁ2㡤n๺ÜFj5;ˆÝþ©Ӊ½ s@YY Ú®·X’ºá/ Zb¬öøEå"LÞ+IJ¤ áD|í¹¾‹ùB®KtÐ7ë° ¤°IcÈ£€^˵Ô!C‚ØÇÓíFߦg“Ïë«“´Tjb+ÁOjø"KÉ)½“é«ß‚C-/è«à^—ëí`]J¼¶së·uç\éýŸ:Jnjm¬¸4òܲND§øOw «ûËÛT¨Ž’÷·+x]5°k€øJäSy‰-ä=äöòÒ#œ |¯F†“-nˆ=iT͋ܘçmª¾Åý¾¿ñ–~™„Æc¸¾yº(¥‡ÿ÷ëw„@N®{@ì­ºêÍ™UMëîEzÝ0åG¥‹îá Ô«ºšéôÓB`t=>®çr¦æ*ó!üÚð¿Lu'º>Ú‘ïêåb\ÓYÓ†ë¸,ÇÜ£¥ÑË:ïKESh¬øâtCÍß$0†Gì¨h¦1êÖX²ëfÑ»;~1&^5Eûþ]CŽ” 93$dc%K“•o&-,@Š÷gÏÙáíS"÷7åöð ‘Œ.bs‹p¯è„å%½âipÞúyJ‘¯U î‚ÃÌÑØùËbà §†)E¾5ü0ý =¬ yµíùCèH„S–läfö[9¡ürO®t ­‡ò~ +ü”$Ó}ÛEfÇòù;ñ•¶ÐõîûYŽùвf‘ [‘Ø#KîüO¤!SÐóÖ* ·„âs¾ÔBPXd) ‚\Rìå0áTâú0ž=ÎþãQC— Z‹&WgŸÒ‰U·råZGíÇÑ8¿{ âAÁÌ\מ~ÙWò¾)÷,½Î¥Aw(‚\Û¥‚1d“ò‘¶àVßV!¾[Þ09ý†PwYÚ-ô5æ â}U¿`BóEňu2õ9JŸàó`‘˜QÁ~?= YM%ËF¼YXÕf¹~òv{¸µuDµ~•ƒÛì]$ûöÔÓ–K—Ñó±1D—%·ïña•ZÅ@†fYX—¸Ã±¥ËŒ‚ÜðôN¦s~',Ù娛VešAŽÎ£˜Ø -u¶š%,Vm[¿HÝ”ìð©Ô¯´ˆž!bÑu‰ …æn*ÇÏ;ĹÜÎP4r94QÌ¡¶Û>Wû)ú²Æj½Çâ ~_á7ˆUÞç”»ø%Ö”Aú„]Ü4Ü ˆ[|::ÎÒÔmy^Aò|ˇ›ÀýfÍ¢Úµ)L‚áxËãXÉcôEá:C×íJ±¤S–1.Ü?ŒaɃí\!ÁlÒPäÙåsQ´a®û‘˾ÁL¦' 6·Ócð”E÷5Cm›Ÿ—o×UÿèãÌ48LFí—à6ÖX$ã$vB–zGm#ÿIóqÎÀ€RQCeŸÖN2¹st8 *ˬÎ'dÑh0Ñëf¯îds„J8‚AbÀ;Qvºp‰a”űoî ‹òÎÃäe!ö‡áôçU,%¡ jf²Bo¦Eu‰«¥<¦hªb?2ä”úìŒ|óÔdtXÒ,XäsKPB‡ýdù;PÔÃÞô´êe)NLƒ47Ƴ6»³œ 1µFç Ñëá*‰Sù*?MêR5r䊟îã ʺR[YrT¡ÕýœE‹«Êf³³Öü`öùö¾÷M«0Xqë4(0Vµ¯ÇØIxefçŒM'A+Z¸ÔÌ#.Œ\„9%Ž"U‘l1Ž"\jù¥Ö$øyød¼˜ôœ.§sß"~<Ë~ú¢l°O˜ òÉ…/©³=!íáÐÖ߆iö¾ìÄ~¶fÓMCëÕ•öºkÉZÌùÕ¼r›µX|ÈË‹-jÈ*¨Áìa~6;J¬y€WU”Šõ{Š5êÛè}- ©´Ðk | å~ÞÊÊÍd³ìÍòî2}ÿˆÆ¢yºtá:Þ~/“lsš-Ò¿å‡GÓ}>rœ¿äXqF!.+½Qà¦Ñ|4ô#®w(Ð=Á"/‰ ÷€Ñ߯MÚv&œ°¥!Nïd< FmOCc{9Sôò®0îââ(LâÅ&š›á“BÒÉΊñ/˜Íi‰¾a¶ mtð&ù:7‡i­—4]<}fÆôÁôj1I\©6Ø*Óf˜2†“nj©:ß^Ÿž|óЇœ¤{d…Ô'†ÉýL¹½¥àn«“´‘5yƒÌeŠÆÓ*¼K)K¿Ðæ´r*ED %#>Mß>ŠGzhM²ân÷•WëÔ¡zÜrØS÷„ÿ~‚e;sr¸+&$3#¨ûˆ)NlIAeŽùÃo…T>|M í;î`¹¸÷q/9ßy-ɲaÿºêªæŽiJ7ý†‹ªtÍ®„æ] sz³ñº Ôr¬ l2:ïÙâ0:‚“y›³s ðIÉm„¤QŽº> jv–¢ŠË»ÕƒŠ‡Ú×Þù"‹¦¬^\]ô}4žÜ_Œ²ô}“’÷G^ãøÚ»ò»$õAG>/Ø{ci1“ŸŸcíÍ]"Á|v ·ú÷ôƒ0VBí&>NqDÞs'`Øç³Òã : ÉÖì¶ [Lö—Ä iHÏk÷× Qþæu’ëÔÓæ6Ô¥df"ܯ»ÌA¾„Õ¨‘*W ÐyÕ=«læ–q¡¡Y?Ͱ/ ¶X?ÙÔ€½wÖ7Ú>¦¯Þ-5à†æð+…>ˆ‚ ,ôz܃þìÊüAmÑsÐçHP+úú¥«75õj„£Yˆ4®Ïúì3V^«ÛÝ%¯Bò7äeÍåèà›:I´xX}L8Ë%°0kUÀ5ÝyùWä QeyÇüÈ6gÄZfÎJ ÍÕÚê½jÏ#™m½ôZcÕ¸uŒ0>}’ºúœ6߫ʎCDß¶šmã¢ðr ˆáwˆË3n&N²©îþ¯¬ßçŒX4.l'ê\9ëQc+Ñr!Xcê}*ôÜÉŽÕ»¾™~l4ki0+®;)Ò†š´"œîNë4U€sÿˆ›Îöâ½Þ]P8Å=«°ûÉÞ+F¦ðk§O=ÚÁ—Ãc.匶ädù±žUXÈiéÛœí³ }•lU®‰øµ RUH  ì,×À f[©¯Zª©‰mÑ„†âë^± ’´UèíÞ*yª9ó‰î£TÁÖßhÂI±( ¸èƒ ª§er‹S.ëõæC##(e¥½îŒbù"vãºpcþ¥C1Þ…!Ul Æ6ãÐåøË*+ÒpqYr©eõÎjP—1C|4³ß%e –>ÇÀõ°ZîiÂ{bš$ÝOQgvø]5œ¦CåÒûz\Çdi=@ªzcìÊ“éÆ²™àñ©n¿6äÜ„uÕ<¹%b)ÆýÆ·ß9'Ö–H¹Ë&ê¾W ?³ÌÎmIšÀ>Û`4+^Nûv»6êͯ+¡‡ ƒpj+ §ØþàK\Ä+1„p‚iÏ9ç¾Ø±°µ ö1_ÌÛvÄ\þ©éô†§Ÿ°ÛiÉðv?PÌ_‡Ì03"gGýypm+ìa‹´õöóÌÉb_4Cã\~qË’¶w*幸Šái8ðŒ §('¸¨£¶Ë¦¢«PTÄbx¾ÞET¼]¢/î ñ7#€…pžF[ñæY…¯ÕLi á1Zß àÝ.Orz&Ö…}‚…TNÔä‰]é¨8årñ±¦ÿl"\³Œ ˜Àë 4H›ÚÚîºyA’Ò7ä¬@+9ºN†6G{ñXå2dìQ„…_O°ù2¦}}6ô踫ʳ[W\+™t¯ZÄcèîqQFßà,ýŒ¶väu¬•íQⲖˆž¨¶ÆSe›ŒµÃæ±j \G?$ÝHˆå!¥^G›ì51¿Û¤wÃ%iš©éi1h÷äšÇùÔšÍ Â<ÐæÑE=aÒ¡ëä"á¸ñþj¨æoñ³Ø©§Ò Çi¹ˆ3E Úë'º>nùpÅPýSzêÃ’¹7£gTs 2[É„ÒÄ g†„ÞŒ´™Á@sƒÔ=u’¶J”q‰û6|·›Í¯oØDÆk¬rJqЦ&jYæÅE{ºêdY!­¥8=‹¥ãp¤îW‹42Ï¢¢†¢<úpž6î\“Qm&“å!"w|yùâ«]¡@OR½N.ˆ6Ѫ™T€7Yº,½žqÁÌûtùsã¾Q"Ñ-æ¦Ö˜*‘޲@!ä«e®ç¡ ´Š2y)'§_!±5—´@Mâ·å=ÝD•Nh¸>*l yó¨ð˜ãè†ã¾•Ÿª>3ªh޼€1Úk„Á…Ç(œ Ï1èªêâ¦ÙšðÓähÈ ¢0–Œ¶ ÓÒ*&ÈrJ¡¼qÌ~R¬i³%®m¹…Æ"ÕIU7{lå¤v9ÞóÝ—z«é«`Ç §¼-å¸P°'ªrobQõ$hp©Dò; õcÜðw–Üsse\©adÙ}`žÇÓd|áš5#<¿ƒí›s)óp*×$ƒv”ØRM¢*Q½z¼È«²b3Óêì÷•H²Íž­Ôž°½Þlê=ºõÉøÙb{.±r5%Fþ­Ë¡cˆ~óë ¤;Ò¸þ|û>ŸÐcaô­þ~c¢ TOúpuH[Xƙ᫓üj.í쪴¶Á¼+èÅÕKÃ*0„G?+EÒ“¬Î,3ôîÙ¾Ž/ÔÕÀWô@ºØM²éÿæ6Q:õå> B¨“µ÷¼sÄÃ4w{F÷I®ˆ£ãBU0õz×ú^Nì0蓲ÊÍØî¹:40òB»â‚Šâ Ôôí«—¿Àɯ¼åÈ£\¿, ‹šÔ/o<˜ßf·r&¯‚Ù§i6lgõ½¢^/Û—½ö<îˆ#_˜‹d…Ž·.óî#Á¿7)ÎûåÆb®X"¹°è[!#ºMå·±wI‹W*]©H\v2û'„üöüøŠõ”‘(vv¥äV2p‰öÜ•¶m³M1Ä •E»“’óÌ–Cë²}F !ö½RëøîÓ3 {®#ÄRuŸh} šAf®¡0ÄM06›÷ÃȽGÁ™|ñ½ $Ÿ‘œ}½õ±SQnµÅ™+xÏŸ^ÀÖ³{œŒ¾Ó5Ûo¸ø9Æ¡GãÍŒeX¤xÜ Áö‘›Å/ì\òÉð'ß%À¡¯|trQP ùÞÈœürÝEq•~qðT3aˆÀÔÏN‰k…Ñ O"ªô&½¿eFòr<õƒ0efýçT¹Üª5/Ê *dT[$Kv혊ù㯟r7ⶈ´ ²4sÎ š“ÉE|æòiíÊ_0SÞN‰‚4Kø¤ì”aà¡7ž¿!ì«>ÍÌg”~Š­uÐñ0‰›½&¤`Ï+zÖÊ´pì=‰g~Í ‚²sÄ]+™ÇâPOìøz0_Ê5Ò³µxµ²SE4|„´º¢Åçk„éUš4­ó]„¯Ò²UŒ×‰ì£ãü¦*ÝÜÄñúà‹8tD*y´*ñ]÷aª„sD>TCwí©Ô)n”Úô^ê DŒ$8;Y‚:ˆêp“Þ‡¯lÊþƒXèè e¹Ï*³QFûL<5}y¼.Oyl•µwª’—^3 VÚêì½¶~d|©-žqUsO}Þ^í"6‰0©Ì÷=UÃ*”Zh÷Zm–¿n—4‹rúƒ+Ùù`Åt´ò—VT§¬w5’ÀÏ„VÄÚÞ©{­;[ΘGw±˜a[R¶2~³@Êð!j x³AZJ½L{2w÷ŸÌÅ­÷ E[2ìªÃä­¶û+ÁÑ¿i°·“ ¥ÉĸŸk9 oær`›BSnǨqqdý ø’oþ¶¿€nŠY&¯®#ȺCÙÞì4,îu™lšt©öauf´‰âò“ÌlHù‡Ø]h±Ô_ñð6¾Ý÷Nz¸KÝŽ$OÿT—ÿãªÍhæNÌ@xDÐâ5ÿÿ\*šdz!Àî+fPkÒñ)ý‡Lź›å’Ër‘sÍIZêãoàG3?I!MôøD2.9æ ËÓȸ“êL&†\ÑL-b8,DŒzëXΈŒ3WÐ)Ò3Mԩ8ž7¢³¬öPYîWö^·w²öx0-w:zÆ!]é0ãÁwGØ.y>3f–{6¦Ü„ÚfçTeA­º’èÇ) ž-!JËŠ Ü"(RwQ-¶ãu?Û«NWÇvÚ›¥l½ìúvö9•1ž¯>Ý/¦¡;ô¯G=s¢™Ác‡—¼’ôq õ^½M¨9Fñûf½?LeýMßa;Í1‘Yв5C6¡Îõ‰ƒ‘ý<çñ¶¼Ês+{ß9÷´ô”SÚ|¼jÔé£bæÉK~¯®¡pˆ„ “îÜ3ìCVul„nz46q~+[–$¯/Ý¢Iþdpš3ê/ D§78˜€ƒ­!Í„á‹]”‹ò”¡Ï³ŸPœŽ¿§&X2eK„ÝÓ¶³·Q6‚ ¨^·œH ¢'¹Õkœì_Íèè-ñ—„æ‡+…hØ]ÛˆüÐìbÌDéPÉ•oh%7ò¢¬ÿŽóz‚QþÕ4 øÅÝFÝ ­ÐïÒ^#…#S×Á¥³Tšò[î\,øn‰õ[x ÚúƉ#îÃh¥eÀœLéÞü{«><´ 7¿€þcpm†íl×±Š`àÚ6;A]Œhb$âÝB j©xõ]¶fcËܧ à çõq§z;2ïÖðY™Ë¢£<7‹5mîW éå”ó$F'@þ¸£ëòH'–ÖÈ».ŽW#d/ªuÏíJŒ .%¿}²Ÿ}œ£î©¥ûÀ¾k£¹n±ÎU?íMÍ×Ö­M¿ŽŒü_ÖäÖ`Y¿DoH/OºßfªÆ6•jÀŸœºûèmmyf»Íi–•x…·}Àät‹òÑ+â^·.¾âÒ–ßÆ£¯Ÿa Ÿ2KCèTsƒgâ팉¾üœ ãƒwM/Æü6I“,ÓCá&ÂUdzÁHÍøTe/ôÛN=sž*Œšl_Íöiº Âþã@Š\m¤ÌM®"…ÇôÖùPüìr¤×ïÍ£&xYM\Ù‰JüèUÒ,}càËb©{¤ìñü À⬌Ÿ"ŸÇ6êÇÒ–»Žn(ap·<È:¹É8^gÔÉU•V>­±§à/ë C*Ñá判äîÀdL°Ãˆö'ŒÁÍëEÃÈwûy¡;¹ Š'õa¸C…-²á}$3rÈÁ%ïY®bçÌ—¨è IÒIój€C@C`›Ý¦7¬åAc³~)'²"P—FÕãy±Ã´óæê¹3g@ÒÏË&@JÏ€>® V¸¢Â‚è6Y¼Ò²û„cáFþ Š—²DUyZ¡5ë{­J"6eïÞOe%¡ûçê:"›2Â{×ÞÀ úŒ©êÍÉZø 7VÁ/”h'1ÙÖæGüQèº^ˆ«c—ªPƒ½¯²B ”M!V¯¿ãJ{RøïÑÏbÇ*á „ÝN©*÷VítUiõ!ÆÐ˜~¥^œ ?ÒÆõ&k_›šIæ9i%Üåa…P"ë:kÛAM´?|*œsì,QæJ6àßúúþÓÐ{îf›-Þ1š3ÿYRED%ŸñlGûä¦U³‘á’?鉌R^9èݽ ŒuÓ”®žéc˜÷.UX;г…i<]¬ß~-4B‹@Ùný”ë8^z§ÞÕ©TîJuK‡[I XƒÕ>¨ºö7 ^*öXCGœz˜,|0¦wså}4cóÓFN¶uð²:È_G.ä‘[fZöA°eŸ«JJެ+"¹KtúaÄ_ØGë¿{;Il¸×d¿|Û±²Ñ°'WŒÕŒýÐwõ‡†¡÷ô–/±†D•Yí÷Š ŸÜ¥' 뛌ònZ°E¼1|˜VNYØ-µ§í}’"ÂÁ6nÌE0ôvþ´nö+“Ê`á|vÀkƔա@C¬ ³¹å+“pHò%¶ÅAÂÜi$vXÔG"ñ.)­ÜÞÅØž Õ=P¬K©±-åbê2fÂkÿ¢ƒ c^I;=iÁP²Fn`âZÞì!ä±hHsà‘.¬Ô*¹qŒ#•c²©E jãH~Þ -…Y‘óˆ‚PƘm˜†°‹l5%­§†“oQŽe^q†‚bp--š³ÿqäÎúJ?f¶³û>?²Ýƒ¨ZÜ®xÌuìW{ìïkVÊ~öB‡­áÇA€s­ÄTnÛG  T«y¸kHu%9šÔAõìòÆhtG;Yz¨åët «îë21Û,%JÌ&a«ŒÑ嬣…œ§*(ÐÍSB¸~XïÀZ‹æ@"ó.ìªùóQàÒœIãv?ÚÕÓû™Ì ö;>nPPôæE`8p†’-À÷ß󨪂ê§t$¤CœóŠƒôË…‡¢4 Ì€Bø8ë”ÔÁ§T²ù"€ÂФSo"'œÅ€:dzÎVTýÛm¸I/ž¶òÁæ(k瞆ž=r6ÞÆ¢g.“Ü* ñ¿3µoº6 7) ÁÐ6Ä!^°=xB×rШͩ""¹Ù.ì–Ø¸6r¼¸d0µ1ï0&6õEAl¸«å½èN^ÇA謿4Û‚NîÃ#Q´{f b¡bÕFQ¶êY°æi§$šYñ„wòï›fžCê_Øä(ÔÔ>æÈ„¹Iü?MoZkÁ;[1ûòú†Âvª©í^Lƒ5ü¾Örq¸±Õj6˜òä¢kŠÅÚ L7k(¹=R^œÐ°«µí-xüЃ]WT hVÈTTFÑ«—åj8Ë5A«qgšEbDܬLƒ×4­@8¶àÛ.[’0^K{Ú¢å—@4 §‰bJŒƒidD¥Å@™´hï6áQJ²z„ùš+›Ÿ`n3…ý¯uAþ®xáÏÜ}êcအ&€›ɇÈxÒò˜J^Íþ%?x'ŽP0¾±[ªÐäêYáü1‘!èÆ{2ï<ꯓ¶¯ªŠO܃ÁŠÕfûG[}äÄÀÅ6u¦H M£'áC–LÒà¼S^ì3VªbÜZK¨£ÃZóm¹-ŠøøÒiÉ_1…]ÙJßæqBæŠtŠ(â”îÉ|¦ó­ÔW„ùî­o¶†T"·PÂOR¬§±kdfªnK.|2Öì¹eçüUj™ZÉ›"=0®ï.«’Ôh-L’WÍ® Á£/ÎæZ†¯èe„_©{J/Áóƒ`—OÅÄ\DÏ”2„ö9Ùðæâ? =Z¨8-ša\V£«]üqD^ªx°íJÜÙ+Õ†ñfec$ÛËgZ¦u£ðä¡wa7³oZô—TÝd`†:\̤ÛÈ眊0ùŸ¶Ã˜w.}˜ F!7;€‚~â•|ÿ¾ÙBKîR µdJXÕnzj€B£¼ª•óí,lCA!êXMŸ\wÊè;Ýóç?Ã¥ûX¦´ŸÈõ¨-›+A/«…˜+±Ý7fØÎpš xš \ü‡ùۦ륢Q=g}¾ô&bÑD4Ø·×E·éԼϥա®ô…E¾¿3<{:GÉf5£üÙË¿’Íÿx„v7pþºN‡Gèß¶¢áùìÏéAeÓO›l»Ÿ¡¾$zø»ZËv#ÎÆfñÕõ8ÂanÁ„W6e†Mn%-U Å<¸0É™£¸ÛÏ"-îyæ‰QØ Ðò÷®_P9r»sÍnòâMOy+fOzí5¾€šñ""ø6æl\_Îßì³ãÚvyXÊãúñã[OPW[” ÅH J±ìÒ’ð C ¯Ø¥c»–Ëø øOÅÞFY©„l°hM™¢`èË6xzÖ+¹oì>ì¹ —Þ‘j¾{hTøeÞÆ{°\ÊIh _på¨-£Û”Õkçl ®ÀÆ hHÝôÃÖâñ¡.¦'ƒz«fRK$»Ä°0”hc @¬ nÑ~p¨LÝ+íi³¤i_—®ÐA‘9¯Ë£*N+)Ñ4mÁùa â¡Ç(ŽFy®‰8±ßs²,,Üê ªˆ{ŸØeö¬ëîü>R ýI:œ!GÉZ;˜kJ¼Õ8áÐOQüÔM¤ºÈ#ƒßÎû¹Y„°›2-‘ y”HF½Í__¿\­î%×…õË3Í%t€Pôä\çŒ]]«Ì©±ÎÄï f؃Ïf©FÎ/Ŭ;u¼1Ü€ Et T:!ˆ€Ù…Ù.ËKËLîÍ™¾Y3]šCzY)Jú ‚æäªYî?4MíµCN«—¶S†d~eÔd¾+cÍÔ¸O¢@’ÕR˜ÀÚݯéUh½¼ìzƒéRLH™jß÷Gž•’›{º=âµzºå<‰Ü{½æÇ8¯05¬¸„jcØ=¯l-”ä‰!»±Ðè.<^kÈ$˜ ZÆö§Q»; uʲS˜)fÂh„k$mê{½'Ñ5Ö9{¬=Ú…ÑK"γšÍ¸ëûï„3-”.óqwS¹Í.s/C³Y‹A[\q[¼G`9ÿªUÇê¬ÏêQà}”±‡×*“­|1xó²‰"ܧ³z{·›U†«|”ÍV>Ä›Îc8óØÈ1°i­é?›áŽ ¾­MÇ’|ûǰé¿%ÕÔµÉtæÿ¡¶ Ö?“«Ò=¿ÔŠ ¶Æ3˜Vpm÷W¼ ¡n$W,)‘pô­:Fž-ù•c¡ŸghæõÏRØ9·=«a6¨Û}Âýùõnñ\-C»°MWëcëƒ õ{j°kÕÂÏý‡[ÏDÿÙá ¶~ð-–øËNÿ£?Ü0KÕ ·é­ó¶µÍ¥RýÏVIBÜðœã•ëI¦ùúÍð9§¡—+*=Èåûî“æÂkQ¡42k2Q\dzÊ€—7•::#¬&:ÕxÑ )Šñ6’îvakHù\¯ßWž&æ9–˜eT!Í6pE6Êì:~×a½rþrGí²4 ß}1¬œâ,µÖʿꄦ•"˜òwb³HÂû×É> ™í™ÙUÛqU}6ŠeÑ„®°åf݈ò¼ç¡o‘Üðc£y7|˜&^ÝÏGÃìÞãÔrûòóDÄØ!^+"v¼YõK:ú³#nî “¦_¨û‘bÚ$ˆNõ•ÖÍ­mæ`>Ÿ´rF1~q¢› ¡Í¾|!Ùí›Ãc#›ýlò‘c›TæVAƒvüÔ¦zÐŒ2Oz§Dˆ˜ ðÈ»Rº~/ÅìÌ©«´¤¾I„›ƒkî¡R‘!~ÃÃFL£èªÜÛMuç{’e¶ƒ‘¤ð¨jà†š=À6è5ë‰ëB%µÆô‚Üž”eÿé ý#Vœ"¢[SkÍ­>?è“ì £—ìÓ•Ù,¶É7Ù7wLr¼\J‚€_੼ààjár(O–=‡M æÍÕW“ *Bxn óÆ´6ŠªîI2KšÙd’}#AeU¤z¸ÿ8à×úN·[n¢\ÛIae[Ñ—_âïäÖó:Áƒïµ¾j &„p-¼û†e%ªî]-‘RÌ­{»ÇÁf0u懡PiØeKƒç9Ϫi»øÝ ƒ…?è§\š•_ôl»dKuÏS¾-%Ó›3FÂóõ†Ë¯› ßʧa"SAq„È">}î'ßÄ5{ï ¶-ɲÓò¦5Ö«•ªýsÛyÏغŠõQŒ Û©1€«ÌqhÍHõ£— …£”CÔ™° ‡rK¿ÝKUiJh Ÿ/<¯ÇraKéËšžBqI|(}ð>é?.Î ‘ò‡c¸| {`Ê ¤É”Ž€«-Au[â %c©²„xwÙ# BT{c5oSÈ¢ÄvφøP[Z³7.€›Ì+¶â®Æu¾níÖ·¤´(¾ßQžæ!¸Š ¾¤Qý¦ LŋӺ^¢‚ç6hž~[~“ðú9ø4fïƒã~â‡Ïguœ%i=4ßgm·5›^X ‰ Î5½¤Ñ;1q¿Rý÷ý25ÕGé½z Ê¼@ï5{` ¼[â ÓC[_¦nÔn‚ Š ¨+žDxjò¿"Þ ©ØJÔRÙ–§¾OýYLÝš‡‚:zh=Ør½I¬¥îlì Z¢‰Eļ~ªÙWß‹¦½oI(ŸuTÍçµÒçö!K:äõŠK÷¿\e„ä碓 Áéà-ÄnøDXHòÞëQ¼Í„ÏÌâôˆ~ƒœßô ìMPŒPhldnŠ÷ÏÚàa’ÆbXIÅI†'!94³Ñµp!¹Ñ½,;Cp(sv”¦kU ˜3ø–ž£h¨Z,aŠ/÷}C±pتsÏy´µ#ÙV…£†á³Âk½Í"r¿þŬ›{æzo‡’3ˆøwœ¯,lÞ¹ô h7^¦‰K']ó çÎAö¢l®A$þÃ(”ß ™è|§>cÒ ËR¦¡§‰øtèO*ýH%.áéž_²ûb° *d-ª/,šY”Éßbtl¼Ð%ן yš¶~×ҵݪ2¨d|õ]H-Þž·lY< hèÌ}˜Ð<ÓEÝ‘î3Èáªjj5[ â[k‘oä¼EL)"d]ú#Æô$û64ú Ý꒒胅ðH€üûM;N‡Ú.œI €Tå¶[’¦1qa2 œñÊR(0´ø‡>õì«×€@Ä;: ~ KÄ’»UQ…*1…]o¾qÿX¡xšôjÃ6: hŠNKÚ(è#7®}Ù¤å§nÓ ù)¶åYõ*=cF+r¼¸Fg¬gHTJ¦ÖzFwcÅÂe ‘aKÕ–´ÉÏðî*£¡š¢©™s?¢gàÓn)¬Eks_¯õ!™V½D§:GÏïÌV¾­u®™l—×[bÊÙŃ7܉çöoSÇe™×&°éà\çq;Q­yÎkÞß×sÝÇs|l³ÝJé;¤“˘J5ɾ]æÀÿ·´¥ÕN¤Ÿ,¿²¬t¼F¸uä9ØšQ£;âÓÇ÷LeÏ^Iq»é{>+ÿdÑ1ˆ~#qÂd: W‘éUÀ-[¬Q7H/ÿö—Œ•ÿ/8)$U‹0XU5½,!wlÚ¶éaŸhº4{›¦)à÷ï§Ü~¦5g¿»uþEY{û#x‚~J‚[—§Dòü—§ÊùNv¯k´¡bYÞ²¡ŸšŸ÷XR£6þ-ƒ6Âpc~G;MuWAŒ5^&A²çɹòr endstream endobj 827 0 obj << /Length1 1458 /Length2 6859 /Length3 0 /Length 7841 /Filter /FlateDecode >> stream xÚuT”k×6 %Ý%1tHÌЭtƒ”t 0À3ÀÐ%-ÝÒ „€ " Ò݈t)-ßèñ¼ç;ïÿ¯õÿkÖšyöÞ׎뾯ý +ã]¸DsçñÅrz* ~(À òã°²êAÝ ûqXŸBÜP8Lü!äÜ `w¤OìŽjÀaU'H‰ˆ~ Pìo ÜM ö„Ú4xªpÃ*wñqƒÚÙ»#ûüýà°æ€ÄÄD¸§dœ!nPk0  v·‡8#;Zƒºpk(ÄÝç_%8$íÝÝ]Äùø¼¼¼xÁÎ^¸›4'7À ênÐ nžÀ/ÊM°3ä5^V€ž=ñW@nëîvƒ'¨5†@¦xÀl ndw€®Š:@Ëû ¬þ€ðçp ^ÐÊýÉþU û ¶¶†;»€a>P˜Àêh)ªóº{»sÀ0›_@°ŽÌ{‚¡N`+$à÷è`€¢Œ6Œdø‡ÂÚ êâŽàE@~qäûUyÌ 09¸³3æŽÀù5Ÿ<Ô bÿÀ_1Ÿò]½‡(ÿ'(+ ÷øñxø…@(þ]ç?'ð7ûßÞ'`èŸé€ÿTTÙÂb‘@žÞßD<ÿ(ƒãÏÚpþÝAŽÔ3ÀñüMB@käèÿ{ ~§üß´ÿ«ÊÿSþÿ=‘¢‡“Óï8Ç_€ÿ#v†:ùüA õìáŽÜ 8rC`ÿ 5€üµÐ¨‡óGUÜÁÈ‘Ù!uÎä þå‡"¡Þ›'Pwkû¿´ô÷e {8Aa'pô×{™þW ¹zÖŽÈw ye¿Cäfý»¯Ìnókù…„`77°©3~!!€¹«6ïßðñÂàîÈ’cÀî†óëbE@>¥_®ß95Ÿýÿ2E|Nÿ˜HÍñ¹ücò#s}~›ÿÉÚÃÍ ¹µ¿µƒœ÷oû÷+ñ†XãÌMí%ÂjÃZ/jdxñl ó â÷GŸb¬+P{ni‡ÈI^žÆÌÊtNnÆ\®ìñ—ýlt4¤:šñÏŠ§˜«o۵Zãö%‘ºÚC¨{ðoªut[ Àlì(Þë|ò:}<ÁIÉíz´1õbGI’í}Õy¥ý{Ã>/Úp\ •¨¨ZX›Ì‹¶*Ù·2“í*,ˆãÇÃßRèw.³zø…V{ç+¸Q¡_³ìî⻨¾Ø•ÎÜþ L£f9 ˜`]ÿ @uÈrÚÌa…Ô•|¯£“À«žò̦e×+p]%1ÄEY@ôaìVÆQò…IèXnu8¿³ZÈåT4~IÂî“R;^`¬Á¸{’cwˆòZmºÆ3ëEãÞ*b‡;˜»˜Kyþ}˜¦pEN[Ø9ŸfÓò£™e§O“ â]G2?=–w8îg¬EíŠv¼#³. ø!ÿMW˜åyµ"Ú‘h‡InD¸À¿c¼ô#c|vÐVL¶‰x:ÆT{܆žwþ¡lœk‘âÊz4±c¦V¡J¥îø#ûLzÖëô´Ëàmûáy‰ûõzÊmûZXO£ý&œ3–̪†³ìÊ0™t¤Ñä%6×P7·ïéc—Œ¥<#yÇ„ÉDR#Îzeý@û­«8G°Æ¸Ö4g£? 6M ]¹7 clŸŒˆ¦7G_K¥Ê­nØ®’ õ=ìíÉ„ƒ!z£„Šn©—ØyDbL+Æ¡!G‹ †‹6Ùe¬ÔW-7|tŽ¼Ñ’›UD•wܶÑJ‡r½£xž¡ ÆPê>º³ƒ¬Ú7ž¯Y펲k²g ‹šÃƒâh¾áIÊ Õ[ s(d:·@Ÿ¥©Çõ¨ Ð-3){¹Q-Pe®ë×–Û†mCÕWy‰°gÒÌÙGí_'g0øþöÒ±žYEû,BìåœÍƒòï/ë¼W\ʨûðT[RÒT›)QµH®‹ª0~plíaëkÕäg\JIãž`Iù3ÛÎmtª¯?•¼¥Ve†sïžñv¢°èW„p•I=§iR⑜T7Gx‹G×­1»A} i&(>dëŠ.q5»“áo6éÉ=ð(awXy4º¨’±ÿö<&x4Äš'˜ÌF?ÀÒú¦Ã÷bФ‡rN¦:ú§üÝ"ýaß!!FE©éáä£n‹êƤ×íØùAmNn§>3ý f¨´ Y2uéXD£†ý¦yþç¢Nš<‚ŬÝ„æ­k´zæG4t¸ÐY¯=³#@Û ŠŸAíÔ謷1agd…Ü7Þ†«êc]?ª% ¹µ#S„ˆÐ²²ÄÜ_l%Fý6ò) f…+ž¾vøZ~ïB´ª@WA~CÕx#$ˆUú@°Ñµ¸lh­H…¾/̬2®^"ÏØ$¦+³¡hiSůÖxnÒäÁpÛ³ÏN®‡’\Ê=(—ÓL¶ÕäªÖ?-ñsÞˆãl¿ø9AÒoîäÒ[D¾½ÖB)K·1d†Fýç¾Lª!ƒ"©0þçá³h¡€Ð˜É‡Õx#…B¸7Ln­ÈQŸ_Õx·]àI«:nÕl°Z(—)k0à³® F|©_¡Á9•Õv(5Z˜uKUeïªE†~.U6.NèÁÌ¡õÒúZ(žµ6&LLœ%—Â(c¶Û`ÇmM%3÷ö|åQÂ÷ñ—-í]—$‚ëUÞPæË(•%®=éPS#ï/ûÙÔ½-{Œ°X3ëy^-ϯ¢ðeÿÖà‡šfÞ[.¨ «{HA9.:îë¦n^¸7Þ×næOl¨ºÍöò(L'¯…üÂa4½1?Ê¢X%üx¥Ä£æªÌdRÂv®+õ¡xRÏÜñНN{ybüÆE“ Ž"‡]®‘>z:1ú0h·?26ãͼhÒiîšZu°3 šž 8ˆ4L±KT]á l@½þ™›*F|øF¹6гBiP@OfDÀZR‘á+Àô†)§÷°ù9N-“XDþz º¬H…Ÿ‘±G˜ô;³^©4û…†w¹ÔÕÌ‹3ï’4ËNû¤†E©í›ŽuÍ·‡C†lˆók½[Ñ·‚°ãOè‰vñp»^IcËNðÁì²ë•ËY@ìŠè¬Œ’žmAÎhðÚw óïÃyátâ*syÅNfsV;äõ÷«J©Öƒ>Ôè24Ãilè/<íR‚ oºpZ§;–J0Å,?ïæÏ8‡í߯'ؼۋzü¡%/U‚$C¿£æÍÄš0Ò ©ø5-¬6‚êHcû‘чgX™8lÖ`BDãDÿgyÁ ßUª¾ ·9^N*- ¤ûûˆ±%A·M_Öäðt#ð¯Æi\•ìö¾ ù®ê¬¡ë‚ßYO%°×v…©´Ï«ç‚Ö±ëÓø4HøIüÉ¥¥„Êòø ^ïãMúýꆦb™µÊéõ6æ¼ÔŠA’ï4_÷‰b[)Sj±¢tÉã©í›;†çìÙïù n›x”öo…J»š–ý¬¿Fœe=°Ãå6>V»¥0üŠB3z—2ëx™2 Éõå쮺\1Ø|=¼>à ä|mv`œPƒ"–R§—ÜS1;/ñ*O>%û$8$T*šY§÷ ÁÇ¢“ŽaéBõ³›ÐùžÓ“âœQÓèwÉ;ôv[»,üYù,³×hÎÛ”¸!8 ® ”Uïï-ʸڄzôle UÉ}ë!îÜŠ|1Ô÷Z<ÆI1Þñå¾Ôº {¸-~¹N@î¦ÙE„$šæj[>…oÂhðÔ 'ó7 kãÀaK”’Ì'v‡@˜›ÝümälzáÃT™Ø«j¸ø•4ºÊu†©Î½ŠwŸ súD/cO)r¿T¦æxd‡­²»wÄtÖjY\¡L×vg“ U4*£+ƒ yÅ?»^|í­$r À‹¬ùÜ]ׯiÎä¶[6þíóÕ˜»®éS5 {±4¦û,%ѯÁ©ìι¥m¼ýábôWkFo‹vÒGÐ3y ²7WÑ©g\÷lÚ¿Rê„ Ðªàc‡Ä–~PT,Õܾs –ãq]îë<-­Åqpf6|þ£N…ÎWL€MbØS“F/ЏêB?‹ç:Cx(ÁÏ4kÝñɨA:‡’½ZSŒ‘ÛgG<4U:VôT­w5ü>IŠƒEW*JO·ÂÅ|Qølf~š;Ë{¾‰‰]²¾ïêóÉ“V , †–—? \ô•ØX1¾×y¥¿Ý¬~éOð¾Nà žºÉÜOͯCŠmê#f…p¤»ú¶"ã{/ŒZ£`ªAo•lbÙXR¼ Ÿž»‚÷Ë–î‘û¡T™®ƒâ¬õ¨‹Êê¦ïȲ[H@•ì9¼ïDó=A:7¾¹åñ,—ÀšFj Z’…Ñí_h'6âB,‡—øØ—ì¢mj!DB"yÍcg£ÈCÖNMÛªí*Ð"÷ˆ©o ñ¤GÖ3œôhá $/ÁÊüê,,pú5gVzž1dá2{ ùY»IŽW5Æ£‘¥ºd…ñ—ïø,ú5·lRJ¬™b^ìø•7Eó@Q…Œ¤£œ Å¢~p¤÷8ûF£^$a˜eƒÁÁä¢Aó`D­¬D-͘0*3'Ñãtೌ•ªpQåIý€ç•;Ïòu—muƒÇÛëûõ$C"¡(µýåÉr†ŸXmtÑ¡®²ñ/Pbg*닺h8ÄiCØ®p´>ŸÝŽì'mò^?5Ly¬e=½`™_PÆ–Ôk!‹YIã~ó2F+ÁNç–Äsd•ŒØåä~Øï·­ï<Ìž +‘ãŒzæ´Âý±šêzt^.®>¶2ZÁ¡FV<¶º~»ª“°»¸}³Ygk´Œô=°N“ÉX¥è@G뢦ßA²¤vp~))ö¶Y”a |rÁW#7 ô–èc¬×º•ü3ñÂÑ"‰Ö~vPã­Ô,ÇÞBæ,­ðªYÂGÅ.Œ“HìcÕ›““&Õ”i\Ë4™îÒR@Ú0ðšd¢_¶ÎžöÓ¶ I;tÎxú–„—Ù7¯Rÿ`æÆ“9¹o.rsNÎ~-ž,ÉvžìÙ»A¡Ógþ$¸"9¬OØ™[Í}Î|P¶7ó³ÅÔ·‘¨¤óõ«Ýa[7åñÛé%ö’Æ”#ílÌ7•mò=:’cµd×:õkN'Ø2¬+0o¼e1NŒ©Co¶£Û.µ q¿E@ ”×±w”®xr÷iŸ7ßÕ)¶ÉÏÙVt ²ô­úxÂÙ×K%}™jûˆ oòœHŠÒèˆo÷<Ìëûìkæ¾Æƒ‰1l¯ýó ‰øâøc¢>ZòÜ`8–°¶“Bˆ?(Ëeͤãžõ˾FEÜ“¡ºž˜"vÄ¥Øþ2hò[˱+Ó×'ãQÃÛD9Vôð‡S‰Cwб Ož‰µÇ»¦‚ ?+5ŸpbnÅý¨¡ù²TÐñ¬åYÀ‰ =Ü^‘_,EÎÌ=Ò%HПæÓÀì1v…8XV„YM$z –¶Žz¾›Æ´'Zôi”÷rûù"¦_¾æÚá1Ez•„» ~˜)öÀ—ðŠ?XƒüNkõ-'¦¬:s;Þ{IÝDGe9Ÿ¼ZüîN6½¸C‚ûð?"$¢Ž&%»È~$½­=ÑÕwj×ý]>)mY‘ÀñÀýN›à˜‘¼ŸV{OÖ‰£õ³`ʆô²x¨}ð’g¥ëU×¹ÊrïƒNy®ƒ²…u¡`ßR¥ÂùcDùì‘ëÏ lSCOçBç{霚Žy„(5Ê»4g»D"DèƒâWz¦§Šh´Ä°¯Å¢÷.§zW"÷:b #CûΨ†áHkiçGâà”‚Eßd1m ¡Â÷æFUmÑ¿&­,l÷ÝXÅ [JõMÆÓã 9‹ \Î'¥«qùØÛÖÙÙ/Ÿ?‘! YZ°foÕeЧäAOòÏPªëý”âÏ×ËDßÒ©A§VçØ¥@KÍ¢étƒšù90ÈK.I¸„Ô7„wûÞ9Èô3'y—ÖHìnûW2[Fõ°¿õXÏ,Q8ÄPʪ¥} ÃÜð ³ÿ’?< 8éP݉Ì唕qúðí䱈ìEi®=½O E¶ÇʶwµÉts7Q”2CI—ð¥@r׋ʄؠ¨šËïl ¹ëý>eÓ/ç-ï‘;±½|Ò¦†»0ýFÛÏy†ýæ¹õzH5õWV%©ðH3sÍ #y^AÈ”¾'ïÏ㘃pº£¡Z×f3Ô§%ö:•¼¶6KoãávnÞÔN ±71çWñû®ˆž†•Ef°ÏjÚUôÛ¬ ö[g/uùJ6#ÔÁIÁÇ øî/®­»ÅñŽ,n©æ‡­D‹íŸƒõIWæ.Í £ùí=cˆ%ml‹”µ^°¨˜µ/êfNj²"Ìû<Þõ*¿ùÄ„6ÄíkÍdF“\&qN"&ëìÓ¹ #B¤qà,jrüÑÍ<Öâ;ÉÿIò}IÅcõÁ¡í81¹…VŠîè";/­*O Åð»âè,03»ècé´ˆük‰rZLpŒvãªÀßN9­³zæ9³"ÔO;~z6hkkî®ÀL½@Šýv‰¨Dqf Óêð ŸÙ\kVoüª d óh“É|î›ùÈ/ƒæj}~J&gÙæ$\6ƒ ø’a,Kõª×\Î.gy*¾¾f’Ã?Ùüõ&L3«YÊ-˃ïqžÍhã½ã³€Z£0VÒÅ$¶ ¾´’‹Ò®[s½VQA•BN–ûØ„mŠV£¾ŸçѼJFÒêiX Êxœ$ÛÚ¶«{–v Ž–z¤Ž¬[±µµ\É/¢V^'$©’›©˜N4ŠŒêKÀŠÓ]-· Q¯hß$§´±9ùøfZ‘°ym)ÑL™EV­¶»|AÂ<›Ê,XøÍ³‹S{7ïo¼}Ÿ"‘YBC 8w¶» b缕VžÙ÷ °C¯X ±Yê­þÁJ"| ËÅ¡ò‘ì+Ÿ¹ †ñ¨é¸T)­=<Üy’ðP8\„:r{fÅkó–[)¦Ô¸{?]¿±8,NT’ÎúRøèåÉ56|oåÄ™û²€ÕzA¤ µW+&ýîÚº`€•PØ7­ªéµê¦ç®è~ƒÝŽ´‰"Õ.3©g&µÒû°÷KS§ºI?XˆÎäòQµbF÷m`2ã·¦ô†Azš¨"ç–ž˜ _äaIÜvÌËêþd"qèôûØqòÏ'1;¨9"Á(ß™Ø&ì›Ò9æ¢XŒSZêƒÇ8ä—64á7Å4ŠÌò~õÉ®¹½°$úrdÜÓôô æÖ.ÔPit¾ARþ}Î,—^O¿q‡Æµ=S„ñSmE4ÛB¶ÝI(ÓàaÅ~÷eN{Ö7ǵ§É¤£‘ו{ ÛL@ï¸~DÎ!yŽ’t¹UÚØØ[pl&ô¶¾EBJtΆ( éÇ¡©4Ñ]&£{r”qDÓÛÜ#0âmœXG7õ˜2íÕr ÿ—SF“Ú^ùù6 ® Þ¨øÞ¥ãNC±Ò”.þ©¾·i’Õ¦õû_‰¼ªPϨebjÚÏ$ˆ<Ѩeqš_I7Ý:aõ­Ö¥ð]DéÞpê¸ e¤½ EUØF4¹)G–+'lÉ™Ôö@çØß²}¶™^-Y’ΰõ‘¦&}Pé´ÞëЊr&¥OŽÅ›ÝÒóg·ÊÍ­¬{úÑ að VzÜÉë]Lø…F‚¦†|ê£<"’‰sÃ9!AÅùôLNð×ÑÑ6¨°Öu*@ô9@­2H­fNœz^u`.5â¾þ¤ÚƒùŒ`c:z®–(—¦…–&³¾¿lÐsQ›n §eÛ¸ÀúV¥ä:Aêcê`çµÎ.è™Pùrsgsæ¢}ʃ‚Ñ à”+`†C×=ö£ªM“ªpøˆ°jê^O¯-.-`€¾ÀP@\ò­‡Õ~N¨Dàš÷?Õ T¿.ô93,2$§5_2œcÈEsª%ÎÞ¼eW´Ãªÿ®|b¬aW§´ ‚¢î~¶xØà}»ºk[9Œ:6ÀAkÀ¹r¨ZÂØÒ¥*ÃhƒŸ 0m9xW‚\ñT‡­ŒVúΨÓîêŽåîqÂÛû_#ÄD×kùUuúhLš_G3U×S EÑÎ#í¸h¤›.x†~Ê4ïÁCÖmBDA<òLÊá{Û^ƒô\4#Y…`óÕÇ‘2¼ÌNp¢f! ÉîòËg'®?ËRß"l˜"jAñµX¨Y®´š· {XÕ³gÊX¸Ó*gçXË6ÂÐå¶,ðò¯@?ÒÞ?W}p5Køó¦‰½‘ZÇ&ÑežBõ­¢´ÁÖnåK7Q}: )^ÒFRÿ‘6,›^ŸîÏPþÄø0ª3Éۄμâ'±¯SƒZÆbïf¶»l),óÎ?1-Œ˜e<loªð(|KÀÿð ê|h¬&-˜ôÔoÇøBV¹M½šH²ÕHü‰É¸ bWãêxÍ–!‰2VXœPnþÖƒïsÜ]ÓÔl˜¸9ñŒ2mà‰k^û!Õã’éƒ7À ¬®cô§oç;rÂ圧š¶më|¦¨2ʃƚ2a6R„”–á7.‚+µMR½dä‰ó»9[I`ìì»å-èóäàØÆ„ÌÎDŒé¦Ý¢5ìÿ2l endstream endobj 828 0 obj << /Length1 1659 /Length2 9478 /Length3 0 /Length 10550 /Filter /FlateDecode >> stream xÚ´T”ë6,! )Ý0”„ÔÐ-ÝÝ]ÃCÌÀÐÝÒÒ Ò‚ÒÝJI·„ ÒÝH|èÞçœ}Îÿ¯õ}kÖzç¹î|®;u-6 +˜%Xue²s ¤T´œœÜ윜\è ÚWðßbt]0܃ ýÃ@ ¶p}”I[¸>Ú©À E7äò qr¸89ÿeƒ ¤-Ü!Vv€" vAg‚9yÁ!6¶®iþu0˜@AA~Ö?î G0²€T,\mÁŽA-võú¯L"¶®®NBìŽ.ì0¸3+Àâj л€áî`+ÀoÂU Gð_ÌØÑÚ¶—¿äZ0kW 8ð(p€€ÀP—G7¨xLÐRP¨9¡+ÿeÀ ø»6 ;ðßáþöþýãlÁ, ^¨ Àâ¨É*³»zº², V¿ -\`þî ËGƒ?7·ÈJh, þMχ8¹º°»@~Säøæ±Ê2P+)˜£#êê‚þû~Ò8ôXv/Ž¿:k…y@}þÖ¨•õoVnN:Pˆ³XAúo“Gúd6`W/''§ì {‚l9~‡×örÿQ‹øù8ÁœÖ$À~kð㺋…;à wûùüSñßXA@®K° ŠþŸèb°õ_ø±ùpˆ'Àˆóqö€Îß¿ŸLÇË uðúùŸþrh*JéiH¼ü‹ñ¿u’’0O€7/€‹— rø~ÿæßøù?Ru Èß—ãüOD¨5 ø‡Çâý‹‡ûßcÁô÷Ê0þ;ƒ*ìq–Á¦ÿŒ¾1'/'èñü^€?.ÿsÿ;Êÿmôÿ÷B²nÔLôÿµ…#ÄÁëoƒÇQvs}\ Øãr@ÿ×Tü×*«€­ nŽÿ«Upµx\ ¨Í㈳yØ9yþ’C\d!ž`+uˆ+Èö¯AúW+s8@ `u˜ ä÷‹óèÅÉù?ºÇ­Ù?¾*. û£?.Õç•‚`V¿·‹—`‡[x¡?öÿñ|€kjöü3ßv(ÌõÑðÈÑ` ƒ£ÿn+?€Cê·èâ8äþ8êÿF‚–ÿA‚п¯À#‚9<’ø—ä7«ÀÇÈà@‡í? /€òøÎáð1—ã ð1ò?=.ì Àáôø˜þø˜ÈåÀáúøHÑíü¯ƒÜàðÇèÏ*<6à_øÏs{‚Aèó³0p¨]MhÛU•¹ÛÆ(VßIÔšÞº ©û¦F°”Èõ)÷»7_%º¦¾¹þŽ·ËUúÐh¯OÄioºâ›þFˆh¾®í©µåVßq<Ñ›]e7®ŸJ†æÜP+¢Ã&Í3ñ)fbVç㙬m9‘M.+mQöØ1GcÞ ’pc"†¶Kdµ¬–˜šîP w9ÝK)»}Þ;ÄŻַPΊYM'ßÙÁrR:ËÚKÛêá#S2L1¬÷ÈüŠg >k b²tÖiÒÔŒcW~`Õºãá¿A<Þ½/®ÊöKnÑĪ"Wf+ÒaöbËôS6+$8d¤ÔàÂ&$Øù2ÚoÅèØžu«i³ÿ.-ÂTäÄ­NQ”ßónÜÓ9õ¢®°)æyíGd?RlËQëõx‚ÖRRRc«Ñ«oì ‘v$^iˆø²eyKµ©*ã|5—€äº yQgåJÍš‚(ݹdµó@ ªA§†ÃâSÍDc†lò_úZ&˜0¥Ì°<ýa˜ƒq4OÝ€•¦è­jÍ¢ã) ZÀ""«Î×…jã»-·’™J˜«ZF´Ò«ÄÊÒTܯ‰àë›Æ›‘JÓì/,ÎÖ.û‹Yg%ÔkšQ^<°ì¶ø{1Üã²/ßp(?Í­:f ŸZbŸP\è2}ŠãÒMÆ™œV“­Ê‘ˆtüŇª hРª"¬ Ù%‘ÈŠ}AO£ÿN_ab§q¥ AË¿q‡A–J¥»²çÌŒ‰äYÓ.™7¶Wm0Yá–·Íí…³Ì}Úv{i£ÀZïLò¶UCT޳mø½†U}%« v2ï‚'d`åMNñéÅ=K+²±¯ÐnüÅÂÜUu$rù¾ø[:!’€r¥WÃüfÏá”?t’µ‚Eª1iOY„Bí½åʤ¨Ó6Z@èkׯ¨Ðr!Ù3T´ooÛæ+öìÑ6X°»›cZ%èsx:RhÕðøå=BÛÖmh‚õBoëÇ£éfHä¾…ëú{P&¬ÊZôÕg½§Ú0dŸÜ«Žl;IY_ß¿Á*}kC,öP—\î”Ðé¿ì“ÿú³Æ¹q^ïáG˜”mº–îŠ N™m­Ûu)Åàr™GºBR¯°3rÜûêX s}}î>ž .ÉI³š6F>ϦÊ“ö{Ît¤` —ç ùœýRÒ8.t…(~G`_z·–jP|…®@¸phÝÊO{…_Åý4}õø‘väÔ´Koð'LŽ­Ìq©É?™ù`½7q¢ :«|ºkî@Ö¥ŽßÈï:È좗ɮ“'<),uÐXq°_ÓãÏþ^­ÀÏG4hÖ™xžx.t¬øÃg©ü¬åFǹٴԚ°¯®ñÚH2ñœ³BfRÌy„;ªU£xçxÏáˆr!n7î¥û*•C­#¤î¦*.D¯Ÿ"¾Ã¬£Ýýh’™ìkæp)÷^©H¯iš½6" ðo„â2‡Q×ÀEã Óîr¸Éóz‰q¦œ,RΚª °ЦÎ>î©-]…±‚rxÏëœgŸm‘„´ˆ¿]q“¡¤8×µAM ©Üx´Xuê’`"£œD·ÿ"v©ð¡ë»³Tã êp2Ÿ'z x(OeÒàgë &®• ÆFz=QÞ‹Ò*ÜMåNÉl ÷¼IËÈ¿,¿«$¹Ê1QÓ/"ß´¢¢Ä¤v=“L2ë¦Îr@Zï4gsGr^ÎÏ·*æžq=ƒ&Õçu°åÄw×I4–Ô“Q2OPØM­«øøô~»TІRÒØ±äÖ%íÏùŠ|š­ ±ŒTôðÏ-xI­pJÅøó[:§µBJv¼èæÁ¯Ï¼bFÅZ_K²Ê‹õò«ôsÖ E ¥¬¯÷7ÚÎQu]ëÏwŽŸ¦ÌckÞÝ]Þú9¼zž~[~-À0E›èHÊU$d8 k‰ôEv¶xOòƒZœšS$mL¤<> ©²­TÒñ\~´q’Ò5†U)WœÀj­EÞûçÓÔ¨™Ê0B¿“¸«RO‚ŸÍÇ20ÎüD©±.>øJ”,úƒš±KÍïDã ºå»Ñú€êB+«'˜ï­Üpx„Ù:}‡:ð 7UïSOS ¥uÄP y“À¢!¸Æ‹nN†,bÏô]îv˜¤§?É:ýÊ&B-ò³‘,(t.Ø]WÐ6a¦b»Žq{ÌTyÊáãýûîMºLÿ¬©*ÆíWÅIè2Ö{²ê×㯳 éj”æ=v©Œ‰/•½?œ½}ÅVÆ ÆˆæPò°„ÐíC?3?M ¶œÜb¡Óß¿b¯ã<_A~i™¦iMNaÑ0!ËìJìÊ5þZ}&®ßƒ¡Cå)G…V|Ÿ е8Çù·úuLÁ"︣â,„H²²´ýócsÁû†¢Ë¤“ðMÌ~Œ™$¼º7zñýÂVÞÞ™=çFöÃÖߘDæ&Ü ¨òv-bŸOc2‚g±˜ÀŠº¯œºÌöâÛÑèçÇŠ°¥ñ7<z§í¢½7¨:´œè*HIQ_)ÿêPÝÿ„êó.+Äu snŠrû‚íÃ~ü­;ˆ–`êA)Ú¾Ûq€V‹èRëÕv€´k- ËPžIÌC%•)¡ñ${fD¥iK;Ï¿NÝ”ØéO6HÿÚw†n¸CÕÊÑj{‡Vůe5ÏÔ®—²|¬Ma´’ï)@½øN}%qì½j|ø5·W=+ câ—§Wù*þª,ˆ¹Ã-Â=uñ´Äp·D§-[j2ªè•-S49‚Í¥ßÀ‹CÅ M;X©lºcÎ$ú–…K“}5â« Kï'vóÂ_jÃkôª÷µ°a…OÆ®Òë™±^(ÜÏ ‡»­Æ¿[ QΛÛ]>GcûyGÛóðTÐbRWVˆŸ±cÚèûÛ·¼pšù±5UÑB9n²©uË4û&:ê{ 4N™h"Ï$ãÆr} <ÈsióüYQ¸t­ùÜÌceÁü\8AosËo?v]6–£±Iû¸ôïbú¿ê%[íâLù°»õ]±a 'êË,¯ËwÑ›±,-ýg’°¸·Ÿ7Ý'öu‡x¥?ã9þ¨›:èáÎfÕ•BY‹x»¹ŠId‰ôjyˆ}/îu/‰Ö·ˆ8ù–ƒŒ®Ùä†"Ñ"¦÷­iÙ"¥fêø@鉅è! ×­Cû0ý©<Îù, QUÖâFÉÈEªå*å=rËw¼I…{]±%Í H&yµÆµV ·r›‡‚WmŽÎzCì¹N¾ eǤõðž’jÎù[G5ìÒåÁkí2seä×Fm¿ž§v%5HJ˜Mô*¸Î ‡ME…d)ŠU!nâ„ º”­!Yͯ옲ßh2²'naúÖø¨g r¿·$¡+ñ†«$@µ ’Û2aLM„êÕòâ/$¡ÑÚ±¬÷p¯MÔ ÚÕÒ/"ÅóôÂRÂá¡6Ñ÷l]]‡M@=íK… ËjFÐ BšRáø ’âèš{-T‘S`îx Ï+Éõïúdæ«mý™#.FU† -IþþšXHìfh˜¿H±imSÆz{»Ì:xÙ®§Ó 0¯³]_Öv&öC£ŒøW…™gŒH¶¬± Ο×~TRŠeødù4]û—¾¡Á™äTcìLÝù+,_}õ²°UP*ö8µ+D8)Šj’,×Xöš>rÈ&Zœ¹Œ3á°óèJ"Á´‡øo$«(X)Þï Å( ¾=›zÁjœé™+‡ÔÒª–ÞÙå9/|ªÃ-ú²9fo—1ÜW¯Vv?)ŽÛ;%¶"G‚zÅ]|Rþ±ý%ÓdgùuÊZÅsZA[.ÿñ!–æl¶y}™!.ýIx¢¼CdϦb¦ôª³ ëAÂX¡RqÕËÅàÔu¿–›ÚÉFžÖ«˜¨Ñ¼4¶àb'a!?¿”$©Žµü"ÛÀ R&”ù&&&„¿7öt­æŠ5DäKDÑ[ž–º¯{ÜŒ¥öMÑæ”úéj'«K‡®ÌÚãAQP—ŠLU_ ¡¾3J+ <ŸLƶÊwËùÑpNn¹©P‹:¥‡gJ¤‘–Ô¢²‘$ÏàȞѫÆõÖtFâ=^Yô(qvë°ëk« ¤aa[W¯ƒŠ¦^N0«L³·Õ€•*ÛOUl‹ÀqäŸùQd ᛇd:1­o~‡0ž¬f‚¥€Ã½F¦%*ýQÁsþPÈÏÝÏÉ<ßî·˜Ö¼SéÏ;¾F®mˆó`ßB•¹ýÑß©šµFÉßÂŒ•u²‘‹‡E[rQg¬–[Ö»<ÜÌ–Éü"'Ý&ù5’/ì¹/­]⳸ÀÖá³—R;ÛvŸ/;ž2¾Ø11|£z[y“†¹ýÄT¾·O›f 6ƒKKIÇbP®Ïý™öæ“x+)±iaçørdÆzZZÛѱ`¶N\D—¶—¡1²úôÆ]ÁvÜ ÃËC.ª¹v×òh½iÙÔJƸT¥åTGÙÕ½ebê…ȱ°'Iw'%<=EÀc£=;EvÇ0©x•|pè¨ó·%‡ÆÜoíäìÁ]9û‹&ë±uŒÒŸ}ð=ø±¶RE+a¿D“+„PsP:ÑË oŽ~~ÇöËMtBóÕÓÎô:ѱ˜}ŽDû`T.ˆ“ÓO;æg«ŠD”Šîᇻ'PŠÍ"ƒÞZ‚%3³·Ô7KQ8¹B5Ì“ó(ˆÖ5i¢áGÐ2wÒ×öªß'± ¨ž”ÎÍàLÄæëo5÷Ó¯´»É²òÎ}xÎÁKlzfûiZQ—/C‚¤Pnâ–Ù`7Eªë$€¦c](£únŽÎm´¶½'”‚¼ˆl“Wú§_ GÚÔí5ã©Hž.ŧ>lÕ#WŠí¨ ˜¶™&3 =»G,=1ÔZ³3«ŸucÅ kÁd™Žé?ù[ü\+áþø­Ó›FQÀrÍÌÜ–ß žãmê8t.p.éŸÐ(Jx¡õ˜“¾°b$`¼ÁâZŸÙx® êÁËı׹ç?ç6§Yè¶CºZ¹m[E::ØÏ/|† …_ì_)è_[™?D˜•- »Dü¹tÚ~žöIµ|VväË©´mŸƒø!Ú >ÓaQúÙrûhNÊ;5^js,¡(üE ¢àmn ¢Ä%áMºªÙQéuœæ¡”ÒZ¼W·ŽA‹Óع-¯=Æ ©C#+éæÈ†Ï¼JX‹ž÷„£—Ü"̽SªäìNO¢œöQ`ù Yy^õ7wÔ{bWPo[ÑK8áÓ2Ç 6z ð ¦Ÿ6à.}XŠÌÈ+R•ÌáŒràÈŠ:Á¤Ž‹5[ÄŽË…·ë[pu¬äõäYá4)­‘ž5—Ü »—Êǽ—¦t²P?§uѵ{uÊN{(Ü‚qC¹#ƒÃPÁhË|1Þúð€ZÊÐÃßfb6Ñ`l×ï,á6¹ÌÞ‹Ô’/tœ2£.A–›Ý<ÈåÛìü><(‘Hfö£qÏ>™ÌúD0è5q ãû}šït_;íŠ.JÊWÎFBxSïßmÚ?´äŒ a° ë_T½“+$­Ñø*$ï?¼=ƒÀ$ýýšåMµ×Ë>Ø'dbÌe$: 0ÊÊt¢v;Q3+¿ N:}o0At¬Eb)3sÐü•o-Mjveÿô;a·»PˆÅe¥ÁÁpº…ÿ™ÂLºŸ¿‰…eòTºýáñEäá©oú$~nÈfé­îV0áH_° &ÖÆÁŒM:ë«mîp4 1¹BA‚Âê}N± »køÌ$îµ4ëœ5­)“/ïCˆ­äÓ(’Üž„’û¯0èÚÀ6Ä\ÄÖ»„—*Nw< êq~Õ9#Y~VHÙö€ÍÜÂG\1=ß·]ÝlÑY‡8ßÊŠìdÈu³p9è›È9ŽÔÊdÔehøÛéáhSĉråþašNÕmJÀ;!óûNIAÅœñ˰Ús ž*—låtyVZKI¹½hµù"þ¨D­5OŠðÒM5Öyg’cÂŒÛvú;a³H'Œ¬ÿÞ]jm-AE¾¦Üº¤Ú ÂÌî7‡^ww­*ã¢ñ;LÍGP™›³ìÕ-ñì’‚AȸBu¶à‡/©.‡f [”µž/„¤fØÍr]*.WÐa9>ÿr ú¥^µÐËQ 5“ÒŠwˆ-½ßPíGl¶û%u“Kù&ò’ÈLlIéÞhÕœH?| R€Ñ±³Æ<·´‡TP­dÇëRޱ"Ó‘¹Á©‹ÞÜgtŸ/G±î¼5¸köSÇšLˆ'£¹²Ç:ü„‰uÅpÛµg)O:‰`qßË)LöÔ³¨¨/d°úH ï ¶æfZ;VÿË*o†d½¬ a‡ÎŒ«œ»ê“ªÂ§õ£´ Ÿ¶ùhÞF‹qŒ™Ð§uß¡d4%ð+m_ÂwW°³,ÆÙ‘8¶D¯¤Nwçž„ëU,„«"ÿÜñë«'P”Éi÷Žl×¢1q—eiޱ„'õ%Ë(‡oÄó1ÍUÖÐ'¬Ä¹__Àd÷Â@(­ñ6…ŽðÎâE _š2ÚôϹjßú¤{Œeµ7ÍÌ 5s¬jÖøÔ;ð`%Ý.›pJ*ú¦•–éö³úf aUaq©ÉS…#ÌLÜ–áUôx˜WæÐß{¥Ø7`º‘uœ8Ü=¢#éÁ¥jÂù0±ˆž]ÞÔyušÆë‹íP;vl™“¸)⟚£ŸMXxå$öåèç0 JT …=ô×ûpÏÌÍw“r'ËwåRk_Mß É“B5)©Y/²¶¶9¢{ ×F¢8³§‘>Ì8\þ†x ñLáí^®£ ¤QÞ:žß®·ÀTØHæ]¤!ß½7p¹8„àNßÈ”ÆÚkЋ‹NȨOãn^A*çHË. d‚Ï:™‹¯l<¯f̕䀘ßdŽC¤IU‚ìí¨ROòóóhyÖ2ÍÞÐÖL–ãyÇÈ$Ó2ê–ôÜñù3O¤sé^½¤;9eÎýËß›—Oü‚0Ì<™ÚÚ¾Á=>z R-Â2ÛÒcu½ÁU£“˜4n1q#=â©ÖOÊ0úÐüI+ú bé2š× †e¦|õý~˜oëIÅì¢^¨µÿⳋ¤.·›Ä'{°™Ê[×´™ŸÉȽ]yíÝlI3W{ÆÃ1œgàÀйbÁ@eÉá“"£À47fäÛP¢àOyiwK›Ùw”'Íøìå5Al+ÈÅQÑ6¥hk­úy¥¥‘g3o …Çkd·“„Vh"¿å¤=š¸_)¦ª.Œº'z¢©@ÊÛ}ð þã=A‚ šô¹¥—Ç6cÙ;C ½Pm5ú”žö¶íYº¥m¯XíØN4ôÈ«NÖ•Ȇ²­?v‚[Q÷ë×À‡ÓyåOˆ`ÁÍ\_–®Ö'Fïè矿‘­Dê“N*(sê }–Lƒ‹BÓpÕCÆÍkØ£­g‰ÚB\šxÏJã^Ë9kýõ™~ÍÃ3RKÎp7lÔP¯MW6¯…G^n–ÈðµÁÌŠ½à©âá]¡óÞ³²œPPhÓ4dÂ)[Ü›‚lŃé¡ìØnW¾dfØÂœ|²”è÷a³ÜVÞzŸÀÔdŒíÎ\UædB ŽÌ³þÑ•}d 9der|¯ûƒNG•'—FºÌ5±ë²@}y<ÛÙºŽþ3oŸ7×|ti¬âëd¿¡îiæq=´mï‰qžéÛ?_mP½ø ‘3Þ°™D…þv¥i?øa>î¶,ÊFÚ1<6û©…–¸”îú<ÇoõMéh»ÈY-]*J¦È‡Ü7Ö” Ÿu²ÛŒÞ´/:±}Ù[ ²~¡të¼RÕ÷~j'gö3ì×=Â[܆aRaÒ³ðŒ´ëôª®Ø\ýݯHËîôdTƒU$uUëò,ýÐ5÷†‹¯¼á§3éJ<»ßiI]晽©@~ãµ<­Ñn6èŸÍX«ôΧž3W@õ˜ŒpïˆL_‰F²®1˜v؇£G­ Ć&nüð¤Æ;JO|ó‘Û™²™0ˆí.ÒftšöûÅnµÀ²½ù졚E   G‹ÃÆ~_©3tø`ïÍE§"F¡Ð>¹ÅEZ:uŒTÉU-·GR‘C…ä¢Ç‡P®¾ v¼Ã iáRk¡‡›Íá7,§|."`ÑH©Ì_ jƒ!涺ø³5S ¢+Â[Ýg¶P÷ElCi—=^_§ëD¯®Œépš¨5…±b©ðñÔ,·hs’˜Ÿ¹ÔE_¼*èÆS&ŒÚs÷ˆø„· l…Ã"¤­z*­B÷¼ ßç¬ñ=Ó«M-5ŽÄ†ÄåÐ9/>d«©É{rí“ͯ’£%ïÌHV=¾$$—+ë‹mà» 'Íg“}–jåñ‹¥n%<2:1TLµM‰›–Üš•JSãKbíNËžer”¿ÏwÑp½Ú‘¦Ú7K–ç£NÝ9þeÕÚ{Øÿ¶Ù7L¥ù³-³Û§Èñö½2ÔåJÚ°É ¤óPÆ›¶G}ðAäÎ'|«>\.òÝ, 3SÞñœ ^%ž†…¹Ÿ_ø}ÓÆ4·ºÒ†ãP]F¤ë•<±¨?*©(ySŸÆU`Yi¥au6B„\tÿÛvU5YfhËb„5Q°LH1÷ŒÌXèwé3ÁÒÀ€ˆAÏ;µü!Ù,›ƒûs¹÷R$}ê®ÄB3_u "ÁzU¼©éù7])gªo*öJ“ŸÄuàg?ãvŠ{À„]¦TÖuÏ“Öû ´f!®%z¶%Ë&‰nô_S€3ÔE¸¦ºÕâ‚«Æ=L{xÌXX?¾Ø“h3{•֖͉[ zÝ4Ç(:µÌ »ß÷I=Qr¼µÇ)k¸+õ3ˆ ù¾¼U´¢=×W>_ØJE¶f]É‘"ïÔD\9º8æâ¬‘0bΦâmë4³^Ÿ“)…&Bu¦@ƒÓ=ºe'(\«þeI¡Ÿ|Ië#aÕ„‡vkR#½Þ/€÷"|Ü,Òãp!uÒé¦l²øW¤ªá;ÐÉäwºïûÓE~öFSúC(¡…Q_‚ôYŸT º‹¥Âé‰å T¹Uaó’×¢ï–k®”«-Gqñi.ô·ì;ÊÎH<Ðf]—é²Äf±/Ê`ùùw¿X¹>Â5é ->–8Vâ ÜpF5.~lz^«¾•â­=ø\pÍåþl3 ÆÕåú£’ ðJƦ¨/ž>c‰TŸàòâ²îôÔ{­H£(•®A¾žf^®´UŽ­£åµùT%™»×Ï¥nÂÅ„«ŠbN¨î®¢N²Ù¢Ò5j«äیɩ®8o^ÙkâVÑ jföÃmïYÉÞ‹› ¡Ø~_ 7¡Óz³:p|Ö^ÒRB/š ±8ú…åäy‰ÿƒN)Ì÷}J¶wÁܧòà gDéŠB7Á‘Ï»}-a¡òÙÅebŹÝÈÇKšàOBrÏÌLƒŸœ-Eâ|Sî0xr˜P-fNÎŽ’7c^U<þe‘˜ä Ážmì ßLOÎò>q_#Úu#@Ç8‰>åCq˜´ÅÐJ ÙÜg¤mæÝN>Ý\šË¼÷¯µqäñ:°«`ãçalCªÂSl(‰9V¶´Ë»æ‚ÛÝ"Áå¼"ÄÖ㇂fÈÁ¾¬ÓÖ†‘Bf™>üóÄ€_c­[sv+ƒrÇÄöéÖ’]KµU["6º«ÜKI®FЮ´EAe@#?6Ùï‘ÈOrQi3 Y”>ã?Ũyíë¯#õ½ÀQ_Wxë€c%wqÂÔà„èðë*¯¾Î—XËÌyð²ôf%¿’ ïÇÈÊe™‚ÀŽ®Òp›„•§+­­ßV1p³‘AC!ÙbÉØø4MškójT™ç«~Ü3>ï*% ú¨ÅE§¹}çå' dî9ªu±‚Ù¾D*urùþê¹2 Ò/H»kÇŠc2«Óîiú 4‚Ò‰´BÊL¼œxýï—WÉ9­¡ÎͯV¬Éý-‰(RÀ1¿lÕ®jý®FŒúÓVc&¾bÀ>·£ä.ûSÚ3¢º¢š÷xAhyÝ?’ÕÓŸ–£l!ôØS [ìÝÃPkÜŸÉîaN½Dï¹ÂL|ï*— »eôÅWá¿Vzª/m¿áe¯•ÏÍáó¼2ö,ñ2Ç¢bs¼Û{‡mšy2ô]ýëôÙ'ÒÈ †µõ„Ëä‘\†¾¢”9¼/6Š2\äµ9é¶]ÇrÑ-»–ƒ«BßÂ&o Cq°Í\ªªŒËÞ T°J£–ܼþ¨@~N_·ðºG¤?CZÅAm¼µà ™xn6-e(f¡cý¹xÖ²„ íJ”rk~E¥× ÞØì®/krHijýt%æ&‚ýð€8ÂàƒŠ•Û8¿bÜIwé[X:ÞLÐۙΣ ¾fÄü“¼ïzU:ÑÃ?¡-+ƒgVÇæê<”R;¾líÈ«; ½Ø%_ŸdˆZ|"~!›½©Q,+õa1pŠac´@Úk ø°~$è-›îf‡iNN\ų»íÝZí]”=dk¬YÄ“¸ ©ŒÉ÷Î*Ê\Îpž©Ÿ“]É›?) å×\…bQ× í3˜ëm¦¾èœ´!ITC%æô¨U+8:d|ëùß@Z†‹=bœê€iÝËß×UÄÃõʪòæÂÀéì˜ôÙ[㯿‡º•J ¹êØ\ÛmU}îݱHŸÛAxpUÿ² ¨M¥úQ«Ñ™ê1‹x“8ÛI/š½ÇR‡<•rºl¬š´ûŽp™Âã?-X¹þ̓ÀYVúYaÈG®üæÍ³`k®š‡ä&TQϧ%9Œ×O­Xïy<#±.—Å9ËÊ$ÆþKæý¢“ŸÝÄÞ¶Cq_Þø]:RJÔ$‰½ÈF%iÂCqb¥áte]sënˆ¥|pÑhÎ S_£×Eé}>õ­-ìûä¾É€Œ3dæ,§:çeÚ¥÷“%„ # ôñi<ó°î¾=EôöO9dÒ,¤Fx÷=`Ó ¥™ý²Ïd+;Œ\G½?‡t*ƒ?ñX“Ì=™¹¡–w3Ö’ƒØÕ…\ElUê.S§É³{u­$ÆGÝ_ ÆaLV¥+‡,Bo¹ÏjÂŽæþc¢ÈÐr.Zßá9m§e7ÏÓ^¾º[d0bÎÇ‹‹œ¬ØúBé âüé™cÜûô«%«û”È&jÁטvñ=Ì2ónzShÇ»M©%b«©_• Àz‘˜ö¯ÀÌ)VÅ¥Õ–¤y»ÉS®ËÅUç¿øéYl?©±×7YÈ!Äã¿NØä/›µW6È„\-Y"î”{d'Û¥¡$*f„'-æï‰™3÷´ ˜‰ÃGhœ²}:Âðn ïNéJ"3m~2Ë'*-qJöаÌ>ìÉm‘¶U-®]Í,L¾Î2Éb %­ãŠ›¾u›w1c$Ëð“YÌ3âkA©Y‚¾TÙ€ ;•Gs¨±ÑÞ‡gÙ+SZ¶Y½‰cèµÏì~eÓ?xn†ñÒÃK¢ž.ÚØœ¬tg6’æú®gÏдTj&»¼#ñ4>"2®IëÃ6¶:þÖ1Ž'fæåbµò“ïB2{Û|‹)¿1Õ%²?”Tg„:Íñ>;ù©&in¥†Š)0 ‚RÅ nÐè¹ñ‡±ûñE¿½9$ZIg~©¥òáCÃ…Xò.ükm3<òï©› H²§bzzI·šÂ!u~ªÒ!nA`­L—‰Ä€ ‰6xˆ³›‡i Y»Ù“,Ð's=¶eÙ7Ó š‚ZOg_$ÿ\¾ iŠå_ÉW3Uë0–ì}¨Ñœtì5!‰ÔÈlþ÷ìXçY)aõôž\Öº>¦…–1ÌìI×OgB˵vKsB’‡ÁžNÞ8R.š‰)R\ês‰¯AaÏÜÜŠÛªUïÔ±w¡¶£zSÎÎþý´ú|²Øºö–as ›{*Ž•®³î434\%B£ø0FG2mÜ‚ÙÛ%¤}Óµ/”$Âì5µ¢g™ÊïZd(Yìt‹|’Kô0(H¯Á†w¦RâÔšUvÔF¥$“ßsgÙ D€ÇÔ¾ŸˆýÄT¶ø’YùñöŽópWT\qýA ÞR/ †Ï«E™=L×í TÖ;IUaLvÎÿ8šxj endstream endobj 830 0 obj << /Length1 2672 /Length2 18727 /Length3 0 /Length 20260 /Filter /FlateDecode >> stream xÚŒ÷P\ÛÖ ã. A‚7w÷àî®ÁiiÜÝ îÁ-'¸»C ¸w x}Î=÷$÷ûÿª÷Šª¦Çœsék÷¦$SVc1™%Aö`FV&>€˜‚º:+ €……‰…… …’RÝ l ü¯…Rèäl²çûÃBÌ h †ÈÄÁC=@ÖÅÀÊ`åâcåæca°±°ðþ×äÄ7vµ2(0dAö@gJ1ƒ‡“•…%âç¿_4¦´V^^n†¿Dì€NV¦Æöc°%ÐâÑÔØ 2µ‚=þ‡‚FÀ vàcfvssc2¶sf9YÒ2ܬÀ–U 3ÐÉhø+e€¢±ðŸÔ˜P(ê–VÎÿQ¨ÌÁnÆN@D`ke ´w†q±7: Þj2ò% ýŒåÿcÀø§8V&Öéþ9ý‘•ý߇MMAvÆöVös+[ @IRž ìfÛ›ýehlë ‚œ7v5¶²56üº1@RD` ÉðŸüœM¬ÀÎLÎV¶åÈü ¤Ìöfb ;; =Ø坸ĭœ€¦º{0ÿÓ\{›½×‘¹•½™ù_i˜¹80kØ[9ºeÄÿ±ˆP~Ë,€`' ;躛Z2ÿå@ÝÃø·’õ/1$/À’ÐÇÊù‡âålì €\€>^*þ¡°²̬LÁ …•=Êovˆhþ é¿“•;@2~¬–¿þþý¦™03½­Çoó¿[Ì,­.£+#AÿOÊÿ*EEAî/F#;;€“ÀÅËðù_–óÿoîK•­þ‰í>{s€÷?)@j÷ß4\ÿ™ š–†ð¿Aih~ÿNSÈëÿçøûÈÿ¿Éÿ‹åÿuøÿoD’.¶¶ëiþcðÿ£7¶³²õøÇ2Í.`Èf(€ ûaÿMµ€ÿYg ™•‹ÝÿÕÊ€!"boaûo!­œ%­ÜfÊV`SË¿'æ¿m€°ÛZÙ•AÎVÝ7FV–ÿ£ƒ¬œ© äNq†4ëo²QÿëQÂÞdö×ê±qrŒœŒ=PX óÅÆÉ ðb…ì¨ÐýïÑ03ÙƒÀ#Hv>sÊ_-åâ0‹ü%úâ0‹þFÜf±ßˆÀ,þñ˜%þEÜ,fÉ߈À,õ±Aæõ7b0ËüFïr¿Ä»üoñ®ðAü)ý‹x þ”#ˆÕßâAí7â0«ÿF´#§Î¿ˆâÏø_Äá4v†Œ•³ÍoÈq“ßbbbljãlkìlù¯”•ã/±ÓH@&NƦ@[ 9ø1ç?âÿ¬È¿¬¬ÿÛÁÿcÏËþ¯üÿ€daú/â„„h ²…ŒÓ¿™pü%±³ûÛ_sÆlö/d‡”Ý dkûgÌ ˆø›bü§\é] ûú/ $>ÈœÙÛýÁ©ùoˆ…¹•ë´©A.º…˜XüvÑ[üõþiIçwµ9 E´ôp°Úÿa‘Yý!}µùB ô;j.H%lÿÚ¯ßzH9ÿHr½2ÿææ„pÙCöò=¤ ßá@ƒþG IÁá·Bæy ÛÿOg9Xÿ‘þo_!·7³Ð ò¸ýÔëo™èw÷8 %s°uù#ÈOfÇßþ…\€Î_1ÿrsü%f&¶„Hÿ¨4+¤Ž¿i9ÿB@×? Í 1w†<ºþðÿÙVH¼¿£‡\ÿÌ`K'à)Ø ôLJËïцøüûWг)ÈéϪBzèú„TÝíÅ‚ºÿ!^=þ€ŽxþŽÂä túOÿs±šº8AZþûÙ¹uÿ‹ÿþºMQ–@¦üÁÖuÁ_ïkEÝw'ÞÏRîj¥Ñ2z-9µ»<` &ÓÖd®;ÝŠ$÷¼ZÙ– ¹^&ýåuÔRÖš¨Òöèýd¯:½Û†òm w`²èHäK?12£ºðž÷/GoÍØèNYÊ•Ï0ÆhD(™£Ì7ÉžKŽf$F¢Ã:wÇœ»¹ÅÊ|!•§Gñ9Žaÿ䥻ÁûsÞsµR͹ Ÿ_÷-1ì ÖØ4•—èY¼E¯Òâèõ÷‹9,´LPëcý¤Þ£d'|zò2Xx,¶NK¼Rc>m_˜´{ѳvÕŒèêŽ0ßÒ›»¹IJ(5÷ì …!ß…;Ñ›)¸~DTôðÚÛ\‚»Ñ9º‘;:©›ÔóÑ3ßBFÙÂYi]ÿæèƒ­€@t½ÇÓå]dYFñÙ«×zòØaÖ}Ï]­} BâÔ±(9óÕ›¢ŒFnÊáø›Ïo8> ×ð¶™@!è¦ÕÆ_–ÔøÎäx±÷Ìq’?¦›Æ#÷èéæFÔàa›4Y,Ãi‚ÕDjm¢‹S ƒ‘ÉÈ[´0\.÷™ïþ°ìw³jáé6Écèq…°ý»nÃòüG³×ï,èëŽÞ7ý<Š„›ÓÍ3öknJÕ"ŠT¼ÁŽ”æÔa^ÞЭ(úQ”ÖŸK(1þIot‚*/Fµ‡ãÇüÝ-zôB æ[Kó¦pE½ª,J\ѧá‘ËÉ! Õt¹²/úãqj³ÊÍ]/˜+?½¿)ßÒ#êM\Ò¯}ç›6¦;Û­ûÍcÄ}¨&º.ìó`€•¸^üìT&VÃnë{Ϻ_GûFbÑ¥‚ôk!ç`›Ã÷8Q™¯Å›ù‘jܧ²ôtø¨:3Ô”c8ÆÊ”äÁ绸Ö$°ÄdàLÓj0út?+~oa¤ªP cvröeO±#n0¢AÙc4 «…ÛÝ>[W>sq^n3{§pÅÖ‡ZnÏïÆž‡Ó¬D´MLéçWQî:Ô­Cåw‡œá’¦~ïí­;ضÚçL±ű¢Å<Ýý`÷7É•ÑËŠìöh®ã‹ÛA7_È/[9ŒJÜ=¼(~,5·8¦ìtȰº U"¡¡ö*û8_7ŠáVñ¬¶§̤æ¹&ÜúÂ69ѵçCr'Yå/:_ ši?ycÔzª[œ‹€z´ôBWŠ­ä5-™Ñk¼™©5ðx?ÉϹšU¤l'27DŸ§¹8â¹:R˜iŠKöÖˆÝ@%WÙ…Š ¶v»û°2^ÿNU5³\쓜A ç/Þw×"'›ôBƒ¢Gû+ƒ´‡Â u|%4ZÔ{ °aPÏ¢ýRåhøŒN cêù¡Éó¸:Vþp˜Á¢ 6Ù°¥ûT¯ü&*$È3].Ú–t6ÊŒÎ_O‘@ÕÓ$WÍR#Ø¥?£ÊQcÊmÍ¢S æ¾Î’ØPVdàSøá©Æ.ŦŠ!Ìõ!wCˆñ|ÞW;†Úÿû?I\&GË´^ø;ÂÜËGÛ@ãòR·±%Åj ‡ñ£ªªë­ ÞÏ;†Ø²3&nd[©hc_ûFÔg’ ªÄ»`M‡ù´Éôý¬òÝÚ^~•Á!FSïömX ô ©«”©°—ŽÚî4¼nO¸Œ½ëÍ3ÂZ½]ØHó¿]\P—’8„¯c쇫ÐamÙ»­ˆÈÓ蜮,e>Vz€WG¡4¢:&ò ¦y+×ÏÇ$vl5.Ç[Ðé.ÝÏøÆuKâiŽÃÝ“$|÷cÞRëSdFÃuN‰Ù–-'µÉ¨Éª#CŠô-@)±öOÿ&²¢¢ýnŸÔ%<¢£Ë8IÓàç…$˜Žën‹Çƒ93fX&DЉ/]_{ ÖfkæH'Ûá~´…õ´Î„é/uL“ræ%B0嬰Ml$x–Ó0êƒÿÊë2 «Ô`f¹„æq™µÓ5WZû雈u™&ÜU çûêLüc+’%·«ÐQo¼Ò·Ù¡®b5QÊ@ÏmI¸Ïk1F’A[²ˆJd]Ïžùƒ½…L´<…"Y`#úÔ ÐáÒaRuº'¶Ñ™÷³_•1]õ¸Ù¾j"-X†ÈÒ1~ñ9œ„Ž6ÏñÔ¿õ³à~°"Πr?ûéÐÇ nÌ>^%p£»wÌ9§ ìU‹ÃÀ·çÇo<ˆëÉZiDŽâòýí_c½VNŒê°‡ÌÜ’½ƒÑ¥d_<™›²~HSwèRG,A¥S˜(â‰)Úˆý8 ûj,<ºI€{Ý«FÞaíuï&-å¬Í6#+ìAÁÇéê ¢'1{Á&ݧ¡Z¯6'¼n Ý^‰òÜ…9©êM—xÞeÁ #¾cÇ8s`Ѧï†ûVÊGµï,s^ÒÅJ¡.í &—!Qws)‰'&7-þÇtC2Þ'Qy¹/D^s$ ‹'hÛï ª¯„þ3o1†Œé ç(n#ˆ;]ß­4 sk›ø÷6"V@Q7Á`‡Ù7+bN¥O°Fgìk­ T<#–.½h® •¥)º Ðó¾,crp¿Žò¤™îy^_G/ @ïéŠ$¯òÙÂ)õ&yWšê>yŠí 7éú‹®vüÜ6.º§ìšÅí ’Oà$C¿ #êt…œf-àE¨[ˆÖÛ½YŠáÕø%y([#DŽ¥ç ßƒº ?â0aý­;o¢+¡ô"T†Çr>Ñ3­C>Tè‹ÿL"Þ‰\õÍC¾Ö å˜vRð Å·0><“a^‡ízI³ Ñ ’YUh.=Fuº²¬˜i(#j…†_4°¨UH5'# o*”EÞ ˜Çû«“›E“à ïRŸµK¨T;ú$PõKÙäýCû ¸àÐ.„,iy¨Æp˜E_™ݦ$’áµ²„7œƒ_5)ôGÁj³@{¶³®SpQà4ù<h ¬³ZïZmqsíÿ¢èàø „®­ÿØ/“ßepÈWwQùjá[½|áCÜ Q?ZJ³­62:ΔØY˺F‹jöˆôîjDaœ¿Í_Y«}¸á¢Wºó9ùéGr« ,CùPfvbÀí¶‰hîäÄÐÓ"÷Êw©ÉœµÕ³ü­Òh(ö›¦láë5î¤ÚØy¬dB|8›¯[Rv_á‚ß‘ônà Q¶Lß%[Gªuõ<3rãP!>€‘uKÚÔñc4XkƇ¤à¾c¥`.×O—¢8a“ ä¨~d+÷zÓU#§ïXTN]ûDè2LJXñ?.· ¾F @gU;T3ƒ¿†z»«CqbD[ÔSu3Ý÷v‘>÷´3ùµ>ê½*–þ”¤Lµºûy¦µ…IŽt¢ J÷ÖYESôL*e‘ƒcgùµ ®_¥ Á§;ò—A¸©¾S樺)´¡å&h­,¨¾"ökr¬Ä?帠Ïó“Û£¹I4$ï„îïõÞ¼«±’‚ yßïCwDù“. ë¡ülæ\€›)­èiÚØ–QòÈ)å;î÷­§98d‹"ž3« ‚ŽÜÖ7qö¤îâÛ4Ö©/OäxKò ¦˜Óeý½,‰úåCU¢t84O©Îf®}ó›©I¯§ÏŒ˜_ïrÀ/3>ÊOÇIà>œ‚Y÷/É<‹C³ªDß7™ð>x¹¬¾èá„’6”\S´°w‡| áîù0ïdª(KÚpø5y™þ+O²Ê¦²õ üe‡’ugj;Aõúò}=¢`~ʹLa^35жü>-åª{±\öBGób4“§þ¸‹µû‚Ù;YyV\¡7 õCBoÈû3MJÆTº1ˆÎ:ZÌM›¦fsêÛkP,l}cÎRã9ujä&ߨí^虡‡ù"rÎK;o>Þ¬à 2_nµFÙh­ºìYìø%ýÊZ8}åCÍa›<•´+ü³¦ÓPIf½…?s’Ù+ÎÎÓƒÑÌiü­;º9a~ûé·ìúôÂÅ}ðâl×]½ZvÙ6u.¡§~Ë‘IçYSe$ߨo(,ùŸ{zï‹Ç= ·ef«È‚ÑÕƒš£TË)f>‘–3çý…*:Þ  ’HCàéþ’>ø¤€ì¦q—uÌ‘úm¹!kê8LÇh½…øM_‡>ÆñZ!¾ˆ®)Û·•°Ës¥U`Í#@cOlJ84U§0”0W\¿utÝÎ%;t‚ëÑGé_‚IݤA÷õ|‹oÆkCöHÍ‚úSü<„zBÕòĸEuS ‡ç›èe PÙÔX­nªNœo-]šŸÁ‡SÒòÈÃÂ{aÜfJ½…{#ÁŽZQ¡Æñ—ø5+Ux9|Îx”ˆ®$tä c$i‹[Ö¼Š2àÓ8c,çW1?$FþÜ‘'1™Ãéf¨±P²§æÁ~*¯ª&Ã#˜ ¥æ'~aÅ„m‡føQã_ël÷‰Jg+o¹’çO˜ø«Ï§«&¹9LXgâ$Î[j³Þ}á§¾)‚¯7(vʤ9»ò{èæ”êB ò¼2Œ3ž0@%$5D6K¥·­P'÷"±âª5tuÒTúŽ[Šg޲ŸXn´nÁœîÞ–_«8}20«Á&ti!vŠ­PýÎÅGGQN/ðg8CÇìHÚ™ªò)¢²•À–:ônbQúÆ‘Q8xB)š¼±+Æqkw1ì/}KIJþ–ý“a§]ï{Xæë~*×_\̯· P.¨eá Ú¶„†ß8Z—_¤Ó¢ŒÄeÌÖÑç4æ‹` NO9lµ•qQIO%‰ñ.Ø9Á{÷r;Õa]Iý¤ä »”uznX£©°2èé«ÿâ[ã®|€`à/·µ6‡×½¡ó ">šH~ßœD-dÞÄM’ºœ±îóº%A{tô#|Ÿý)‹z‹^=èÍ}ã›ë~Ï+Ù‘°€0’HÆvA;KK²ÚF²„BáU¿Æ'Ná ls±2Ýsß‘õwC1ÕõnìÆ†§Ò›&±Š\ž¡ÎßA=Ömt ð°{‹Ä{JnêpÜj!~S#’I“Ý,É9 õ}Á¦Ì*1Ñë|­$Ô{ÑÏ“«ê¶Þ2(QÅY(Dž£µëíÏ?_-Ãu“¤ CýÁ,ò‡ÜÏkg¶h|/Z7ÙC0¢öF,Ž»K´*;Œz¦#g¼‰7‰ïÑC‚ÀÛc7¾‰ˆOH@n:Á'yí9%®ýGæWÔ0F|¤“sí0õõñ¥$­Ð8<Ñ2Ð7R É/c F>R‡ÅYx#B´¦ +ðkW)/Ü›r¨d<¢#í±¶ÐÃL+h0 ’I܆y—pW¹¦`5¡q]r⯗ 9 ˜Í…³$típ3c ºïàF“?=2Fdž€T‹kŒ‡ ¯`I=9 ëAñɇ*àD¥L#ššóëaQõ¦èù9×K¬%à†|RdÕ6W[ ï*«»cG‡óvw¨i'жôƒJø—tWÏ‹ýÌþ s`øÒÇG£ÒÁ1`™É]Z«P…&u±û9 ZÝæ8.ò`>t›o”®˜ØuADuÒ Ë ¹S¡s愚XõÌûž´G½¹Ç92ÆbVŠZNù¤5…ׯeŸqç“dN¡XÃÌÞeaÉòžR¥Ë|„ y÷0Ùo»ÞhJ×&úš¾´ gERËÞ,TÁgRUÇ%ÝD¶)°Ê5cßTÈÐBÁ†SÔZÅÞ!*Íý4cž ë‹·~"Õ#8÷ô­áh<œ!÷U^eÚ¶…Ͱ>ŒÏ›&!Ø´ÜoFÆáŠÌF%˜û[llV°¥àQdf½>ámo~±âu(}c'®íyíô`­f˜¯bQ‘PPJ¸·*Ç:F¥ûF²†¢5$–%sŽoxÐÈø‡™.' ;éú:åî*Ïö3M:“ŠäðS½L@r™2{öÓÁ fB·y âKö„îùïxÕGb¡×çÔe˜{Ðj ™Í}ˆßõ­Ô-†¢bô ×u ­C‰ª Ÿ“8‹jJ©yÜ0Â)é%ø\£Q"Gȃa›gËÏÊü6‹Ýqù'uÐb¾Ø¡Ý}žÆ\ž•‘›8oX9 2ôèÚ÷–f²ïõD§Æh>}¶øz,Æù xOq¬ú³é%·áy¥ò¾&—vK–ÏÔºœ½8М E1¡]L,Ž_éÕˆ+¹€îÐ!Þ÷saÆ ³o‡¼°FÛ"o©|ä÷ì]²‹ýÞ~âøž«©7¶AÏT`brXJ¾­ˆc=djô^œí6~ªñÚ©Èt=¾[i^Çó\¸x@‡ºHš*\…âsBX{Û@ženLI£ð8˜*_È×<èk¥¼íY˜™,\ÝfÍy}ãGª\$šÐ¤EG¬+6<©”s¨à|ÄòåÀÞø#^kàÄBW+®ZðgΉä;Fîˆ@¤¹Ü%ÆîL:¼f±ê^¬C-¡"‘iëºý_v«ñ”âi¤P ìÓ°¸¶I±¿~,àµÚæ\7y-þKñ®Ž”„ÚM¾z—«Îš<ùJËõ‹‡Â„‰¹kfKÑO"*†ùPiÄêРWÓ_¥ôÍCNúp¨Ë”»Ü›ë©d°Þf¤¿}´zOƒ9šš÷Ó/PÏAqø ¸7­_Ÿ¿/cëZí¡|½ôd=«G~Ýê9í¶Ã?m eú‰7¥æ@MçË+;c>[§R–Ãǹ圚‰>œñ+l›6˜vÝŽ*J^kLe}[ž;‘¶ê‹Å­S@èâUüx|#9Sx××s@ø+‰Ì_t[(˜µx #·|ÜD57Öv™i°håd ÔÅpØì-îØ}„zN€Ó ¸Óˆ<ü#û¸UƒtçÖa¾\ƒT¯^^‰Äþ&ìi"˜1žéUÑm°À²Ö»£/ZÎß‘Ù|z^ìùêO*Šüšö=‹z”lë²y™žcwì§œeñ®9 =\¾nØõW‘ÄoÊkÉ1KÔüZ«DyQÒq»z•L÷‰”1É~¢ë×GYmÓ²¶7XOB5RŠòŠtzA4æhW”R„?dQ>¡NuÓk“µ,QKÄÉte,êRÏÏj®-w´+8 ï]‡Î(F½]-¬GMõ3“)”N|õ†‰lYÀÅl+˜i`Æyå'†è½œ›ùZÿáæ–’þZÇ ÁÎfkãþé±m^ñ©+ïøüÅNÉqHˆ©ì=±[|‡FáL=Ãá‘ nDù.-SýCÊþs²ŽxÏ +´”ë—³Š›°œ‚Û½±™õ"×sÞ%Úûï‹ìKÒ„û ´¦‚S¡N7,O=j–Tùô¤$;¶¢æ~îVé71nwð:¼`ö’×&Qñv§å³Â°Ñ˜¬&#fŽ/«¦Á9E|<ŸèÛ:Éÿþà©^8Fl~‹ô¬JLÁ¿‡k 'K¥ÍÈË0À]Õ¾?â:Ðèegà]°u"âœÚ •Ë×™ ƒ©ü'Äž?kZyçi¸©£"‡ªÝ.ÅÛ>Ïq;®ó–Ï·ó!¢I:ÚÀ&Åï Û¿¿|ƒ¡¿'·’<8«*p3>ZçüEÀgt΋Ãu²ÉòÌãÔì¹k—²©®ümÊûVKÕÕÏÓw¶(§ÎS\±\r¸Ùe\Ôu+3Ï®VQÇVú”Š ¥¹ï÷uBS{àzÕ¹…}\@z¨Ì‹ËÜG›6ö*´å[$k…öÍt‰T2½µ\%}˜9› åºÙi­Û[_Ÿï%h¼l¬ë‹ç0ÏoKÝ}=Œ&Gn¹$›³¾6H Ú(œ ñµÄXõüäGµÓïÒô…kH›J]| :<'¤ä-y§÷¦ù£KY]¥L/yn`aÅ-ʦ¹ú´àrZœ­–UarÄD•–ï†8KÄìf·–G샠fÜê3£,¼ª±b•3ùaB4òTk®?XàËž×h,|§É­&'SzÝCÓFú†Ê§¢6å[‰Tv‚½÷M3Þž:¢R«ЉIÿ[þ¢ñƪ¯Â 6Ò$ .Mñ%S:/r¶œNGÛ·б8îý¬Æ×Z܈ª…‚ª­¬TÞôs¦Vj7ñ/™ö¹Î„ˆ`Nf)ê•÷¢øN0ãJòêWilÐÙœÈknf’ô$2:9¤¾Ð’–z)"ìæ]]ö¤ËÁd Ù™Èò7ÑzÌ”J:ï·CôYõì^kJؤ¬iT´¡ë~Ì„#3|]eNøµ±¾ø8Õ§]uMQz@Ê9ÞÆEá‹]Ê2ü‚æ.¯ŽÖhÆŒä&?¯˜iˆ¦Þ©æ†Êº=~á<óúª®ø(Ê&ógK|ºSÙÛ”“]ùÕH/L˜Âap„æÌB™ÿÞÎWb%Â%]{óîÖ׳ÀÀJ–ÍÄ}²b©QužõнïÓßæ wK´ÎïôߨZlýíônÛ‘¯r2f ¿¨‰ÞDûªc²< ‘"U£ë±½.ºpmòNïGα’þ>q}'€:[Y ó‘ï.ÙˆÂêöã1¸qh ¾u¤Þ^ÅñM€aèƒô?¿Ü—ÑäŠÒ+*E^ÊÖ³}ÏïØ ²m:ÍêjÎï”?…ÄúǼáuÕó¥Â‹R2Þ,'üªúEoMìÇñÖñáBÑÇETdQúQÄ3ï'ê7Ï#Zj˜‹¥R›!¯=…÷ ]lÎXJOqYõ•ÖÛ[¢ðbx½Þ-¹ÍH©ª°µÅ“Å9ó¿[E͇l£mê"6†Þù¢7Xß}ˆ9@ßûtò‰Ÿ2ÖøâÍáÉ7+&¶m×ZÝ0mØ¥v¦>žXEo½UÄ5 c¶PVÌg߆F}ûenuÏ,nÔöI%aÔ t¬]ýâŠx ìÄ >ò˜Ý‚Ê{;µeE¶S& |ÊÆ=ËLB}sSÉ·;:œY›Q€™p¡Lúš ¯ˆ„–ý-ÏAuyÐÄš­qç­ÌWŠp¯R¬¿7“RX:ßð;¦#?X¬vš“omÔnxÙˆœŸ[rlý³§¤Ñ߇Œž°a¶¯wŸ€à¡ó„ÇE|õÆ/KŽ9U>QÍš»½R²ÞµÑù–o/S/¨ƒÞèyñÏxZóbš$M_Gr >fú>È$w¦Úz@›ã;Î+/tH<Ÿ&¡êUÆUžÅMò# Žr%Úü0U¬Vç3¡Cn¢»5ãc~Ê~TËÔIa°6ŸFï½êb(ñJ¡šòË™Ã*¥|P’„.† O°’>)×–²Ží ¿ëÈw‚k:êÂAàÝ]ȪŠ9?éÇ=!”§^ÛûP7·4_pÜ.T~§9Ó5,Òøg2šW#¸?V¾çì~ÿ•~ôJÊO }tÞã[3 ýîí´ï*˪µïP[)‰ˆÙ=õ•ig%Á ¨ŠpM~´óÛzCÈD%Â=Mã“iQºÞÃY+­ôô`øQ­we×v8FkÙôÜ‘ÁqqÔʲíd3~­Ù’H’ž˜xÛLþú̔͡n$\ŒÀ¡G›Gï7“b?ƒfg/× GùôéÔœÑJ7`Ÿ¶'T)ëHw€d] m!&9yÊëôC»׿qFmt¾¢yZ†¶ÓÁek©sUø¬Â+ïa3Á€è©~Ñ/aë26å-„ÉB<ÊìC6þ!â{>â‚ᤠ¬–Á€átŸû]¢—þHI^œ$Œ ¢Õõ¹s­†u¹²œy$ø½BHünkfú¹k+¥9F#‡izd© >Z§¡& ”<Û1þûþå¼­f1UÞ·k½ÄGÃζ!Åœ;Ѽ±Ògôl$7¤=Ÿ ƒ†8y ä×¹¢·ÆFíå5¨5iï|Ô†A—¢Î̉y˜B?Ÿ1î ¸Ngq0'çÛ]‚Ò¯Ñ,Ç‚-|…>ŸãÛ— WÛýP*¥eÛlS}!”¸–½©.˜Œ£Ø1}‘¾“IuB›H z<%Eõ –È-%ÆS[8aj°ÐÓb—«éW²;¥)b çþÜê¸Eõ@;~“ë4™‹A=›G™ þòú"ºÞº1µáƒ⨠®èþæ÷ùª&­“†k5S(%‚h&3<ó ÜÔ夕}¹Yf’"žPmßt`ÎÚÑm„ ¢, muÙÉÖÓàÎY°eW6¡üa]žÇvX&s«gêI9züwºD4Û>€Ûáµ”Â3–D¡i>œ^ñ2t%ˆRY^˙ٹ¹‘ë^æ¤|^Žï­æB„úR¹i„é ü¤5fý¨md­Z!±®Ÿ “ÄQI¸sc>ŠùúÂÆ¹­cÅÁ› 'iouQ|°¯e­N,÷ÒŸlLƒmØÛzûmj±ï tƒ³Œ“Ë=tfÞkBÆ´žô]'|•®…Ê ~z×2q™=Åæ–ûDfÍE¬·þìè¤t*IÄg}ÓqõáQEhƒ‘7µ¤Îu²©is#ªkŸ£‘+®Ž PâÙ^õÍcê¶ÕrX‹/ã\÷?-LOÞôr+ÃæûJ) Ajç7!3á<€<³b´ÌÀMPœSû‘ ?MÁX¶Þ‡f —¯¡..b™Ã÷»eý\æˆéüØÕñxöQ¶g[dYL'¢oÿôÖ¶’’ŠNGÕ(›a/ë§Ç«ztÄõZúÎ…ïDt8(ÉCêÞf(û©ÓzëÊ=þ¢Ï\^%Î1ýy÷áó,÷ÈX+ÖŠþòÙây,>½Ðh²¬õº8€áŠVã‘ýûå=ÊóòŸÈ„Õ¼h×Þüàî¾ýHìMᬒ+Uô-­CÑBÇ`Îí¯Çw»¤µ¢-k•§úÌXï¯v³%Bcy¨7Ä[œGÇjŸ_×ø ˜Ï‚úü’`24»Â¾.8åj÷‡ï8Q‹””¨è [jÐ/yWµôp§ðÚÝP™¿ž´Q(~ |Å!è;>Y®ëüDÔoðkIgE"gÀ¢Ûè©è4Î)½°OòœWznz°â» ~:‹Ñ’$nu<>ÅÝ2¸;S3Ùòä ’qÝbݨ8‚¶€;YÝ·Òe°vrä&@Ž ZI_¿PRKGOñU™ëOtpM5ß Í‡ïƒú0DäÌ&HÞÞzàë7Xô=Æ™Ÿ2ö&e˜ Ÿ^¥>kd/§ÀôØhyi£ÁlïÇÛ ×7ñM¬'¥¦iP‡j}íK?š[ºýÌÂÌžÜ1iCn5·œ…f3úFô¨ø­©Z•_®ÙòŪ~º{uà›DÑ%2Çàv=}ü¡wWµã‰|B3ŒÊ”• Hõ-Ké›wÈÛË/{ÕTh¶E†‹ôÅ¡Z¬ÝßÊkÝ6â1ˆ.BzŒåº¯ã¢¥ $¸Š5=#§7ªÙ4½yX#à ŸÌ|âtiÓ ýÓÜœ=uÙDxÒÇA¬Ì™IPë:U—ÚWåýõEæàò'š—ZFž|Á5”ÓÃn×b=ðª(ÑJ8Ï¡<™¥Ÿ2e5"0×”J©h j‡ÿ Ín7Íõn¶KÐp!¯©û8ºzÍÞäݯ7ÅÜö߸ÈYNËøÍñ«Š1£ ¬\p€E=^|í—vÎq¥mý‹4ÚÔçѯZE|íRÊŒ~Ýð&´«Ù¸qÏt2]f/“9Ñ,ó+qMÑní‘+#L¦%Öý¬‹-ͬçÐjöΪSñëýÔ¾fêVJã7Ó¨Þ®ltžYjä–¦Î}gaÀG¦ü^\VÓ‰ù)î¡õ\Ea,*ð•h$÷*ŽÜO·Üq ‰±Ü3öîX¬[˜ý ™n;Ö2wÉtÿ1Œ¶K;ÙRÛŒùتZ$cž#û§_é*ûˆPsZ€>†d<7ý¥FâõQ»4‹ôuáð;ÄÅuðË¡/¸£Û#4ƒ»In)›}E™$œ6„W–ǂױ­u:eú äΔçÒÙ‡ø`ìØv— ‘ìA¿<䨼wPU:CïóBÖòHÑȱ‚÷ökΚɗå)w‹ŽÛh'v=F/¤Mšs°ò˜¾|Šüþ±úëBӨķâä›Î×Ö‰¸ªi¯®Í}SqŠë®÷ÛSú³v—˜ç‡»¯ •ŽÙJ EÌÔûîÄÆ+¨c¶¨5šmë·o§¡\ÓHlá<ø¥³ïƒ­dN"“ý<­,¿ ˜¨`•×çãk‘ž~=v”• ’± ù6»Óµí2A8‘€O_ú Åèä¡3Ê(é7…w}É¢ç^;¸ ˜ÝáóÝe|e”uÒØBZF¸Þ†!‚…Jpð¡Ë÷´¾:rûÖ} [Š_~ß}ŸÔýú–†þ‡†º5CMëu„‹·màNj‘Ÿ×æêý‰äYñK ~¸!âLš.<ÝÕ°NÚ (g/caUvZ•xêï4â¿+Ì%C> ½Jí g¯¼;”¤Â6)¥kÀ¯ cmÆ{éö#ÀFŒ(”Ýü 6Éuu¼/µÉ»¸4²%…žÄêç|·K¸èßéÏZqU½=Ä®9y¦®´¾¹dzD‰*R¡ ÓÍûª©[õÏ’*ÇW•åñ™ãŒr t‹°Ø¡3¬Åæq‹f(! ŒÛþtô%¬ïJfÐît&µö®+™1­4oª4ó 2Øn4Co¬‘rx¡ß˜ß¾¤oËšÒݵò¨ÏÝ­f XtÆá ¯Q‘Ì€1ÆÄ ªÛ®÷щ¬ScqHÜ}D.ê!o1E¢ŒðònÃÍaú ’è¼3úY;_âØ mˆéœ‚”Å{cûÄûÀ³Dšºã}‘Niø×|ÔàÚ˱7&^Þ…Æ}u»wóër»8è“ÜëÛƒ9ßéßïêÜe¹í~å°¥uÁwòЧ뫬D5¿‡¢[ç(?q³ZU)`ÊÂÑ}èðk“Î6زAù8Ëq]Ûsµz<úèãˆ7ef.å.y—ŒiÉsi€Û5),®ÂX <}aÇÉGãv¨Ù¦’lax7ù¾y¤èxˆ©ÍÔ&Ÿ’¶ÖhÉPkþ:ïU‚¬~áÚ ‚Þü碾Q7„ž¸,j¤Q]ë“xD¶[^q­@­ ªcX¨•4jÎe¾’OËw™½šÖQëéÃΘƒÜö±Š‹ñVü}àò¡þm—íñè_Ò9ãæì¯¨½$Ù·‹äló¹`“Ÿ…%JÔnýÞ#U ©”ð·[³ï—<Žr@Ý~4Ýe_ùxž\Χï‚*«Ž©ûL^%¼ßª¸*ÊEõVŒ›Y™Ϙùînµ¸+&ƒÉœÚÍMNôŠËBaL¤ElTYOäOÖ‘^]„ù㎌ɢ¨ÍÅmJš2Y. O¿YcÆ›`ýØn¼Ô$†¤tu#GÌ̸hP.§WÄ÷wm`GNép`k]óÂ6-3ò%ÔH/ Dƒ ®SͬøÉ!p~~Ù¯>Ó×/×V¡i°¿¢íKoõ1^ÒþÚçûÅ&ëvJýþ6ø¦\TÐx ç0#BFòª×Iwƒ[œô¡¹ ÏŠ¼ìÕNW¼±ÛXw-ñ3“`Èíý±ZÜB{}ŸBþ¤JX£Ò—Ué¡:Š7[JWü9HT¢LÐnBé&1¹ÕY|I—¬Z4|h.Š<Ÿ"5¶ïÝ%Ž´¯âeCà ¦1ß ¿Ê<ô~‚ÍÎ@ 87"sл$¸ÐËb¢£°n¾pGµpZâ9‡¶‡Ë6Ÿr7:Áw˜~:÷7x}’bƒÙׂæ)‰¥©àˆ± {â¥"0ñ6š_žËyüÎo³.NRÐÊ›…¢iW×ÙhõÌ—‰œ‘—Ç[kK.Æ9!Kƒš²ÚÞ7…¾Ç®ür3b¸# †øèýœd‡ÂÎZó5ˆxsT¥ÈÁ;óçZ#‘Q“ð-p=Ûï€TeL$)Væ­qÌ7ªÏîÙÕóžcIܸ-ðB,j‘·IŽ³ÝŸɺçÀ–+¸Þ'Æ/¾¸¶¨TÀ k¶ôÀÇÌ»_=xõ¶×ŠnôRÇß¹­’Zé§-ÃCz™šm§•Í85ÙÅ:=OVêÔ¼ŒÙ²B ‹ý>"Ÿ™âé#ŒDÝu40ØÿjÍ’jhþâ°£:~‹ Z”XNeŽ;qNa/"øµJ“ÅÅ_óý BÊ”3úWÚ:6£ÏåÚ٨Іä;ï*ö2þ‘ ‹)Ûø#.ÅKÁ¸9å ÿà~±ÇÅXÊe¶Ö«S.µÌ¦X‘Fþî^uÐ;’T‹ôõ”ïy¾ÀÉyÙ7oà‚v[+[–7¢Ì@U#[…ßãUb~2UƒYl? °kŠí³¬Ñ“©Z½oÚÈYtÏÂlw4p©íýû¯_ŸAj‘Ûv£*yf~Âz®ÇkÞ=<‚©$Õ´ŠV;¿Â9Ÿ(((Ëh©?Ñg9 ÑÎíþA5Ö…±Üa=5ÌSðÙb} ®õšéÈ— n‡Gó@Ñ㧆œú€}Míч•s´Ø{URZªá²ðÏq_Z:˜gæÂ3¥/ØÚtÏO p©üQ œ_mÛ=µ_Ð÷ä+\™=2—5×0ËÜŒºŠv­[û1¤÷$J> i’ÜY¢=\`½ø Âå:΋ŽzÊH×TyÀ{w‰£BÇ=eëí‰xiÎJ&²ÓNH¶ÞE°zЄª”Ú;I¹»³Sº‘ŸrõGRéd'{ÒûaõÊñ«Á‰™™ùÇ$eöcÊä.u51J-.íþ O¹¬¸J|0”^¾ž…·ç™ÛB Ì!‰³³»þ5U‘‘÷ˆ=yOhßôró)üAÂ/™¸·¶®TûÝ>n¶(‹š]àa%ÿu•¸×!¿&¦=Jíþ™„–ôàÎ?…ýŠÛIŸ3•IwÚÏjªš²ÈgoXjÏíõ°ßU?@µv S ¢}*MüÉ/}îzN]¤«/¼Ǭ¨¡^–•﹕wÑTšcî†óÔp¡fà¼0‚݉v¿iôpM 8`mÑr³ $ñ”À¿vÕø´?pµ„KS>_˜Y˜Öhøæ¿øã“&G·\>™š1\‡Å{¹»× ‹n_ë"ynvâ¾<éÀƒ6X§ô–VM\Ñăȫ‰~ÄðÆD‚é‘"²à)%e"ÍE~Wìl0E†p¹g>¯Ç¥\R1ù!Mˆ'g„µlô¨ÍZζ ÇÞØ7ÃEèJRñùð§JÙñà«§¨NÈB¿çko±ßP3m=c–üžƒ:‡`©ŒRuíNaç%xê]Ÿü.ù×,þu¾"Ö]Þ b‡çÛļ?¥ÅÊ8Œž/dâêeå¹A;>¶Ý9O^¿UvÂ4[äEuްòÓòºŒ‡MhPÊIJèòÅOPmÒ6âô¢8Ì ½ªaSˆ¥ë¬Y ,ž2ó¥á0Û§Ç9Hm{W‘¿ñ0ËR¥7è{nºF!ù}…f\^õæÁÓà×a¤Ïƒ‹ ,”?§ƒýúP™¸û zdÑ~¤Aõ DWÏ‹0§‘÷ºv4^˜;Ò´§oAH)fiÒCöù3ÕÞ‡W1ø¦çRåõ V?Öô ŽèK¹¼§ãØ:忈¦»JÙ0W>ó ~hò`ȱU›ÿôöx\𾫞¸yˆ æ¡«KÍ.á)©£äe …é7ÿ$‚uñ°L€‘Mó³M‚yûr- Ð÷ÊFE 5Mé­{QBM׆µìýY¹;]•^¿u… ̉Ì(çrÕI ü¢xà–a¢P—Ý;nXTa­ô°-L(ü„ZÈ~@I±ž¯Ò§ö Ô¸Ñn­±r“Ë•Q{UÅi£³T ¢æÉÃ;fãKx¾àÑ1ðqÜÙøW4ãäOe½ÏßÖå„6~¤³[j朔¸'CVFj~–,Km]„}ª°J”­¹.‡Ú³ýI“uc©g@*¶ºÉ…ÛzD^’ÌA+¼?Yà7Èb×­tn`à›L QNqùóªý 3'µMcÃ<&üá;ÕÀ…ïÑJLjظ5˜ZHnÌ}«Úæ ~Ð\ æÑœ–Na¤kF†2HsЭÂ` z|*—üaöE¬:Šæl¨Ì5¼Ò´UÁ+…Íò¶Fí“&zÔŒé/mb‡–zö*$ 4Uyüco œÈø˜ìÔ˜Eº‹u€W¾ :1Zäþ¤EGâuÛ¦¶´3¬më&V¡Ú›JÇYÁ˜éák)¸…¥£Èh/ý©|C[À¯SxžÀSŸ²ÕKu)|iІû®bÖeÔÒyôÔºP|§ä·F4k—¶WÝìsu߸$lGUt¹ùѦä¦Úå§?ÃÄ)LÀ¶Ó!Y_±{S·¼ó óuÇk*l.ÌáçT1>|Õ! KÖÎŒÇ)Ñ=+Öð¹×tÔ‹ô]þ2¹ÀHýuç‡úìÐDµ97ÀÈô¢ úÞŸ“Èó©•§GgîÚª¥@*êÕ!l1Ü/d*¬@Oâ)ƒÕFº¡¬™6†2çŽûxwGÙ .žÀˆ”"‘߯Ä?Eûh–ùÝí;+Ǫ(•Í!Ö{ˆ€Ú¨mõ )|Þ§ÖóüêU½Ë¬3-ÄÐüØ Ïi}ð1#ƒì>j3óç ¥áƒA3ÒÊ‘s ÞWbUÊU½€‡Lc£ _p?U ð†ä§mˆþÀ(±ÐFkg×$Œ3ŒéÓ¥Ã0®G?îLECÒãÂ( àÃÔÊ6q¤:[¤ð¯ežBåÂ:ºùQy=21h™²áÙ½NÛ<±˸ø—džÄ×¹øŽr&lŽVïä&C‰ŠðšF‡?|íB™Â;aâQü ÃL@yÀÚ¼i@ð¾=2Æ À_wBæbŸau¤¦ 4›è€p¢$LÅí¤ˆ·6K' ÐÑœ`u¦ÕUY²`/sã1/¤Ï ÅLm5iýê#áÜE½Ö`ð®ÁÆèöÃís!Û¹¤”JFoQ¯ìå:‚b¶}-#æ–Œÿz ÝÒ£€²ñX¦ïè²BÎbDæmóf}ûáLF‰ÌåÛ•è¹8bRw øìÛà^ÓAÀ0ö[£§ …‰ãöZ÷ þXS=Q»#3xÄz{©Õž¡¬3--TÌ7”Å"w–•8xnʱ»u{´p³gêôë.IiÔÚ·ã˜}É/T!0WU3‰É/¸‡gæÙ›Ý‹"fФËiêäÙáÁ>>3¹v§&z:GÎzNÔ)/"ÁGcn+º ™§MRnsÔlz2išüN·‡ø)5‹MÁ…uH÷ÈëÍ!ÃвFK}ÆŒ(Â& GŠ¥öŤ$zg[fí~SŽx¾þ’|¯r»÷—‡ QÜ7B“'c®äC%)猂ósã]{ÎG媛`&§UဠV¹ï³®¶=Ô_Üu¹{sǘûl‚½Œºc}ª;c]q)pâµLÄëaËjK«\;cÓ„ÊjµIÊί·Mßûy³mÌ.¶–ÖdÍWÜ+8+(™T’¿c¯¾z¹?W†÷ïbþÞ¼³á°aaÝn@»vìúl_û¥`2Ú|ÊjBn¿(> Ì:~þ©.YŽºd •âV!Ô½ý˜ñS0ß–:AìøÚüù>á‡2F*~÷3}ýp߇þŒ×&}\®Çž\€^j–I¤óÀ¥ýŒ• Ý)ïÍ€æJÅT(ÆwüVŒE×È‚°œ>°Dßœ›é3 çÚÅûóñ³](CãI×Xr}>ˆÌa;™Uº#ß:ÍÉ1¢áQË•sÑÿª/1 dœ<£'œ¤c˜Ò¶É÷â‡amʬ£Š ]hªçÅ'/%u¿ë™êЇ: ;´£§ññ}Op ²w«“æivšK0$+®8V•ääßÉÑŒ¹°–ÅžI<ÁÙ¼ÎTÉ‹òÞöZÝ…³ÊtG…ð¢ÿì P‘'!\ç¢Ù¶y¥þîJ§åîšê*ûÆÕÓwÜGhE¢ª¥@ö¨ïÄvùB•´*å ytG^—zA(ûF¦.Zu¤xÌ?pëeáÝø@¸õ0*í`¶“•Œ žz€]/ç½£8…Œ§NU,fÑ=9Þš`êðýþð‚aW¨á‡8ñû«Vϱ^ò´­O–I—‹{ΧNï²)O52_^pžW”Ža×1séÓv"úù™ª£/`¶pMà¤hµOg¢Ã¹ÚøßíÛÇKV¯5,Š¥„hÜ® mβ5ÿÈüò¬å‡~lý³¤úNõ5ŸÁ)\˜ÿ•±šha’†Þ6!Ɉ °H­÷ØÇ>€ÃvUIÄ!Ø'ºsu =ûj¹|éá>²Fáõ¤T8ÂY jÛên§†áRÌŒç:ýÜ#vîø= ÂòÞ¹;Aìó*Íõ…´dÊɚˑ˜³ìF`Š…e¹R Eû£bv‹þϧÂç´S©ÀÜ[.AIpM+\%œÔ³¨ŒöŠ5€‹¥¢CÅ¥\Œª‘Ù®#ÉOJ›Núë­Yì£zë™^wz”ã~elý®µV¾Q°ï*l¨yÛ1æ£3ij»|éªÆ×B¾}Yü©k’29ºñôM.”GÉjÜØ¶¢Ø=ÄáÓ¤‡ ¶Zîp–Ú½¶T¸ìRñzß.åçç0Јº(òÇäÈC¿W =òå±.d+Ÿ•ï#L{È|Ξâߎ^å ƒhÊÀç`@'¨úÜÜ,>Î.¤_ܣ̵ղ;PÂ}çî‡7»É?gkfœ­ ”£3l¿u¬[ùw¦ñ™Chå2‚=ñÀÝækí"QÝ(n¦ÇóÛ±¨œñÔÿZª#½55´¤<º´ï-Tò î0è&&ÿòT/¼HIwÇF«n3@‹š¶Zøâ>âó[Ø’&¶|~š$Ï…`èD\!äG^ø*T©À MÎD³¦ˆš,/²%)£StprªãÛWý§½[äz5Ž3EY9IdwÒà^oã$z¦ÏÓ;ºJA–…jä(³˜Ó‹ÕF{U %¬ ÿ‡‰cG¾ÒG™žÅº3xàÉÞIX Ø–0±nK?Í”ªñܬãÕVMS¼ì„ÿÌÅôêcî&l"Dí,Èr8šD ÕD¤ KeO-Û¤Ô焊% ÁtB{ø» !ðü_‰gÞ»C}[ØìÔê\Ç/ÏJÀÍlùÝÎê%›ë¥d˜¹R†ò@0¼'-)ÜSãZÞì×H%^røAù¼/1ü¾f‘SV$sŠ¢q—E¾JrçÜî ‹¸#Ó °_hinèØ“cÔ¥d WE¶Ÿ`´•3^zC<\ZÖ€O™™Í¹…}ÐBÂֈŀ·øÊwNó¯v° 9K"ëÍtÙtæÚ¢4þt6ˆ=´`°x*±^pªÞÜee­j7%уaË÷5\%ý½ ª7³ƒ·«SÜ€k²ò~™ZÊóŸî«ËŸ¿3>‡˜•¢L¾&C§z¨Ø¦ÀèNHcy×JÍÑmaì//*«ÙAÙ×Ë.!chW”ž_¼œæ¿z8:UOÚ­ûsËN.EwcYl/J©{¨ó™ °G=ˆ¿×…*Dôpć,JéÁ:ã‘R›8°B­ÅaõE2>þ5’” Áñ4Ùfòãù“Ù¢‰”øÿ#àß«¡Úúo .J#§ŸÅžØ  Ñt•{W _Õ£tîæí"P‡MÈ=÷ýܹØYX.+™×³NÙ)2‡zž¬) ‘h$Qj»1¸ÔGR‹œ¬@^[·C_0/â e‹àT‡­é£Á¦3+¸ýÁÆÛ~7ÝÂRÕ£Ùë%¶ƒ`ÔL1w1! ¼dÈ+ùº¡ø”þ²„¤à âq߉}R܇ŠúLéZú–’Ûô:³˜;5Í62b¸jª”à”µàU»i„䯴¿ü#M㞃GÒ¹;Û'-oËžhufy¶Cº¸p¬WŒÄçï‚C&!·ôØÜRŽŠMRZФà¦JÜy6r)˜ ê(ºw´è²Š´¾~M^¹ÍºƒÈ¶­÷B0*ì‹V\RtŽ[ZNýW'’Ö§j9Àr³ˆ=¡9¨#cá¼nbÉ8(>‡ ŠX´Ÿ·æ˜:Vf%£lkÖÈþ3\ºDºtc'¿¢vU³¡Œ¾‡Tz;VLò¼q2÷‡!šKE0‹ÕV ”¢» ¾,eë1ÙG:¤åˆz¬WL¤r.èÜO¾ù“VÈ̳\&Ž3¥û¯çÉ¢ÆòWÃÒ‘hcø¤ t¸’­ãÈ!ç4^Û%fTcCr4•<\¬A§š£˜´† 7V?E¾ØO`¦Š~$i/ò;K«FÎÍ*&e*Ç™Le't1ß]ÿýWy_ä<ÿ8W¡yÚ_5USn3@#®¥£ ¡v˜Šúáüc«›Ñá©.íSïéý)ðZz+W𨭇3bŽªž„ÜIEJù8¯v©~Ý@H d ¢³© ›œ{`Õû—ð4Ó>…œÐ¿#mª¦=ÿ#pføé–…ø4Ç I5J_ð±&ž#òîÔ*oZP»ƒ¬ :ÿ°V·¦ñDÎùµb?÷:‘$HÙ¼ÎX¥¿Ì:º”Ûµ ‹C€”VޝèÝž D±Îk_VWš¶ëiC ]„äÊÃŒ|‹‚‡VbŒf|FAqÓ–Äž3F¹ÒéÃéýKqJî¾¥T%ßç²À_°¾¿âŽìªÛo© T½M<ùkE+,e¢ó»2œî÷f¯ïôc”ÉH÷…Fø «zëè ü°û…j°Ûà.•ä-Ô@9Ýya:øбúð° #tXÿ…ÁØØ¨ùÖ>š©”í¿1‚Þ±+VrùÌÁTôJ()õŒ¦.$a=%_Ö-¡=Y׈!Ì‘NÏH*µr‚ì8•óï1 ïá×KffO±…èÙ¨˜¶|yU¤DD‘…J»"L/ç€ÌHÈ2ƒ©¸âq²Üµ1EöO×—øi éû쫪[ãð~É(–Ó½Ø\²Š]ÿc­vßÜne‹ƒa]¼‰ú33¯ñ?ƒšM¨¯2_<cìE@#ðQT#õ/GŽL4+D‡’#g½fwÏÉÐï®4{™„öâG3;AB[H`Rúd,CÎ-;Bk,0YeÀã]xð­¯çŸ ”_‰‰ŸÁ‚ÅY±›¥Q#_¦ cY ÜH]”]Ðz+‘ mÎù®2µ&àð*;:¤ç¶ÚFªûª¶-]sô_ßÉ#2¡D×" TŽÁ)‚çܬbÒ½NéZÇõ:ã¦~b¹í;¹vÃ^ÿ¼óu±ãÖ›JƳ;r×\u·UÉ^ºÅÉŽóË7€fÒêÒÃ!ÜE6 Èä&½{áùº¡cPFcMCÛço«Oßœb)âJ÷У~êW‡ ZÊž4Äõ…6Ö—ÇÈ@Ä™Z±›ï~,×µ¹þá+*4ÕYdØ8GS{¼«4?K#ÆÇd?)×V¹ºïM»‰+ÿ¿&±S‘+ŠÛ íúû£o]«ð?ª¨@©ÏÿTe¦þ[’˾†Ç¥`¿ü§3ì¤øÆjÿ†×]éè£Bó_«Øá›å g°·òœø$‘«7qq%ïÌÉ: uSb‚=‚»6‘Ž `å¸ù(!wè$ÚÓu™ÃK¼µ>dÄø¼¸„,†;ÚàŒòiïzu ° {²ƒ#¯ßGŒ‹>+¬”SyÂ~Ú_\ôƦ¨ÆVlÃ"Þ\•«lˆYŽ1úÙ…=°…ni9S>à NßPÁÿiBÀŸlrš.=º4ÔYÍHl½ ü(Ýa³û9E`©“KÊÇk^RZæ´{ ‘¢Ršûwy»Å5ÇÕ}Ï~¿é.¡\BI,펃‹,Ü™txö"ÉmdøVi‡û›MÈÍÊsÚBJ\®X½P•@ì[Œ¯#ÂgN9  dÀÿóH†Á(cÿfqîÊï‹k}Ÿ?^‚v2-Ñloc;*ýâèÈYkZ]L4ÃAÅHöösëöjh&UÛ±Róã¾ủ˜¶¸RqÇDÜ“P=Aï„. ¾›çìi)® ;O³­‚^ú²¥ì©pÆ¥ý_±&4±Í…ù¦°¼ÃÀҦ|ªR‹|Þ š@`´fV›2Qàc/ûüƒÁ¸%|Ð+,"2Ò=½¾›™ÙCÅ4»&^öƒUêßjñÚTˆ®ÎÈíR¤é7“K]x¢`ຠendstream endobj 832 0 obj << /Length1 1547 /Length2 2850 /Length3 0 /Length 3822 /Filter /FlateDecode >> stream xÚT 8”m÷O¤L %…ð(ÃXga„¦ì»ìJ‘3Ï0Œf†!¼!²†BÉ–´(¢†ìymñÒ"{x³UÖ¬…7}i{ÿÿëú¾k®kfÎ9¿sÎý;÷ïÜpIKEm"Í4 Q™Šh%” {ÄÖP(e% ƒÃmÉL øÝƒé 2ªñ B—â™OÏ„€GhTÀÄ› •´ªú€ `P(õï@]ÐÃû‰À%À„F0¸.ÍÓNvqeB}¾ÿY­®~@a-Ðöédž Á3]A¨#Olh2Èôû­çÊdzj ‘,K ïÁP¢Ñ]Ë*,2Ó° Ý$«”s¼¸NM l]ÉŒo‰ÉÂÓArPÈÊ€R¼©D@Ýc3À¤~›}(ëÃÐJèåÖ³W ‘©kÉxæá‰§ú‘©.‰L 3%¦/SÀS‰«@<…Aƒòñ>x2ï ÖŽŽ ´­<Äpƒ@'{2J 2e•#rµ 4f}*Q—æáR™ ØêùôÈtÍݹ~¹îT‹êÿÝ"‘©DÒ* ¢·'ÒŽJöòõÖ1 öÓç2, …RSV@/ô%¸"WØúy‚kAôªâèïIóH 0L¡˜?ïLº7èÿkàw †FD2 8ƒ.d*ìguÈ ’¾ÙÐýÓɾ€ ’@­~~ü; )ŒH£Rü~Â×®©k¢om¬/¿NùGPG‡æ ø+¢EŒ² €Å¨ªêX ð÷*?øç¾æµÄ“×φúYϘJ¢êß(@³ûNÃg]ˆõ¥‘~ï`NƒÔ ˆŸâwDaQè ý?¯ÀZÊÿ§üÕ*ÿUüÿ>‘7…²G|üŸ8ÞƒLñ[G@jöfB›q„íõßÐcà·u>ÉÞÿŽ3ñІhS](?If}A¢%™Ip]SÌ÷k€ªSÈTÐ’Æ ¯¾7€"…úW Z9‚;ô¦0 ËZ ÐFýÞQŸJ WWƒUðt:Þ†‚ô…Áb4´£DÐwMÚR‰JcB)Ä. Ñè°Õ+U? ñ«®5  þb*H—¦*²V=h8?!XIþÅT”Ÿ(ÈZ=þ8$W¤ç/&”ýkT@2šè4~kæoœ Þt:ô¬ÉÈw{ííA_ëj§†º„–}Î×e)·`Txëf¢æ¶Òöyg¢‹[œUΊîÔ®z=½ø÷Ž1Ìí¯EîöB(w§þ€äh ¡®Ge›H΃ /vZc˜ycFL++OœV¦]„¦Š­XsZ­²»¼¦‡Û®0ÄI?øtßuj³ {\iÛÆ– Ñ›÷¨©)oÛZ®}½üÎCíÖׯRŒ­–‰Ëb“k›0Øºî» ä·É¢££¼ž¦s×G'½¯V1=ýh…UëïYŽG„Ì•…#œYÆg«ˆlgŠÆ²½-ö…Ó‹' †ŒžßËÅ ¾Òœ³µ?*çâpqX‰¯ÛLg˃’:†½%ÞQ†;®¨ñâ—Í Ùšû3´Òýí+§eÄ[Ú;ì^ d•ÑÁ;±îÖm‰rÖ¥é¹ÉÌüM1og–:–2<µRM Ùƒ|³ÐâÍÌÏì¯j|›¾Ü‡xå;°ÉùxŠ4%gÿ)3óMò„\þø-ûGŽ­‹a8(ß=-{Ç¥‰ ©í!^zô}rI¬C1§pQyÖ‚èš­FYÕë$$YIÏöÊ-Óf[y ïJIe©\ì™n ¼7Go:Õ[|Þ)·^|Ÿ÷É™7 sœ…̪Æè÷<ÔØ«?UÕ•œ«TÚÖ-òð‰ÉèEħ¤™{)u ÿš}žhøó==<^ቮg¼N¸eïLs,Ôõ~°Ñâeæ`ìWÁ:Ç¿h(dÃâÜA¯œcþ>g­$™‘É«í+/çï×–2E[r0oÑgÃBI)¡^[ƒ:™6}êïù4N,È\{’Óºý%¡_ç]Å‘™‘Ç_ærŽÒçß {oi1KSwöÍEðHÇÒ‹‚Ìâ‚çùüòöfq ^>˜Ê ¶µmÈ|9)‹¼Ñcôt‡þ#á•ðDçi I™=y}½ê®Î/™d ˜ÃË}¼ôм¢áÐ>6n׃Å‹«ÈÅ:ÏÚô`G‰úaíÚ„³SWE.5U¤–’¤û5̰7ÖŽL”ë$éþ9Z¿jÍüRUrHî3ñú0²ÙË‚“”©L­»;Õ92{¨ß”—åÜavŸÂ'$î}¹vÎýs2Íó~Ç®˜ì+`ôå½Á³…Ó´T«{÷3ô†ø€NÉixï5ÝÄWÓ¹DͧÑz‡ŒN< ¶\Ú!q­—«h4jCAöÓ»G8";ÇvZ/ *‡°„ÂðÔXŽ>צ§R\728›ãº²d¢ãöž¹<žög©C·ªð®cÏçi]9ÕéÖ4:4l^tKB‹ˆ]ßeWpO8ˆb§ª°ÌaÝÚ“|Z±*^^b:“–à^ñ=‚¦®«&—b— Ë?íf O-›H^FÖ/|=3Lñº³k™¤ÁµAL7›ë^½¾;¹·QC1º3ï°Ó“2ÿ·qNE7µêíð]BÁ5ï&Ü=‚9†ªiøã@ËH1Y…|=®é„ÍHãcÚ›Y&Í¥žå؇٘Do\†_z –ÄU}?Xõ gÌu­ÙçÒ­åOÝ~•jÄÆR³[ªá[o ÎÁû©_³‡—nmôA”7äÛ™³ÇçD¸Î#ž?jøì¼3~÷UÉÅîš·Áão„z;t?H÷è•—§hÇÞ ¼ÀÀ‰i*PN1koW¾´÷ÎÔdivE"fkª±š»ÿô%â1cŽ‚$š\L]m_ôxÕ‰‡I ·zž“—Íö•¾Á«±íÐ&êSfH«ý5K±=qÜÒt¦­¸»0&.[û0w¢ysZ 5 dž]@LÚÂÍó6=e ˜D¬ôÝ,¼ôôÐç*5Þw –€xÏÞįEد½K^ŠìÁT~~zk“{=ÿç /Ú_7™+õuáz¦ÐÄßj/ >6mÖŠ_LRHÑ`VÌöæ=X”ëÜm7USw°zÃ嬣—Ä|:ø¾èL7ØeÅâØ¿Ó‹Ÿ»¸},ùÓ߆çJÜŠ(¶––mKYÏÿ9÷EÅÃ6현Pñfn\J )ùFŸ³ôÌ)ø©ìθ,«gBaüöh¯àØùˆW¥!'.»Í»:îù(¿Ù«¦i{¡æ± zõxŽ=¯ê²9q)¹ž\aÙ¿v€sç5V¸ïÅÍ}ƒ³ÄHŠÎ’Œª>¾p¦aæêåZhŒ¸õͯ˜¹ÊÂÙ²b%{Íþñ‰±¬2ÙûX€>à¹@I~Låw{¤-Û¾Õ?áU`Œ´EÞŽú{Ø5ü‹–=‰lªä?)KÏ€êåöRûôJïAñÂõñÇ?m’O¬¿¾Gœ5U¹ÿ@÷Ë^ž ‚·EcOí6s^¿ÀÝ7[L¡??WÊí-•dý ã¹:o°Oõ+ìÂÇÎjC·®¸”Žþ=oÆûêˆR©‹Ê>7Þn+Ó.¨Ø%=ÒÏhã9êÐß»"D"¨G8Š\ýû&ªò¬bu[Ðe‚@xÄá;Ÿ§G¬ _ŠäÎt¤_‰‘O& åÌëÞS~¸w2‹d)éäeeºþÏþmC·‚¢{3àéìy.Œ_ÊÉ!˜ƒôõ&9åIpØôq¸r§C ³·ù¥TsÓÌZpRZ™)]ä<8Æ?¡¤¸u¸¤&ÊpÖ[,@è§-Øïtž¨2õÙñRNÁ,}-«OBN†1x†7Ù=ûxàbæ—£Z*ˆÊC—GÑÇ“¦ >ÛmwÓ^ \G îC¦Ý½+œ“ÿ´v“®Ä½”á6G’j^GÞL\LêµkrÌȺ?r)¦8ìÅü¼fíäëá½øð졨ö0Þ˼°²ÁÅÙZùqt•SÛXν”®ÐRǬúûön‰±Ç¹óonLu2MçÙG™•RëùCXuû)ÕϸѮ鞜[·Ø¶K<*œWîª1¾ï¼¸2Ûð×Ü‘SyóÀÆeùl‰Œ¦.©¦WóÁøHüYžÝN¼À¤õá$PtÂJ4*(g6ì]Ö³ì–çñ¥¤4Ù"6. òðô…°1öE+îs•÷]õûi!\²—qÔFRöZø³ÕS1í4¡n×rD{抜¶¼‚¡ïŠA/¦Ö_ÖÐÿé²EÌlY#ç8noVªQ7j·FZäášÉ¡¿d—jÞ”v”àk¼ÚÉ#»ˆ¯2xUÌö6t˜ÁL®X§×ŠOÅOÓQ°¬W>ã|l‹Ž³7OÎxî÷h-}"tÑA(|ƒŽôíD;'¶EÏIS!^*1.Ê(nI9©0ÄÁEt¦sd4L|é`O ÖÝ “m.Õ¸rÀŲ+€¿íÔñíÝæf‘¶¹ o”¸Îr_(aÌjM§‘c®ùÖŸZ†YnåJë8À­Þr¦Jó‘÷N,¯L½î™¶üO*ìÛåOnDÙ)…|w9&£Æš¥þæ$“Ê endstream endobj 834 0 obj << /Length1 1647 /Length2 3668 /Length3 0 /Length 4694 /Filter /FlateDecode >> stream xÚt 8”mÔ–l¡HRJ)d™…Q–²“]ö,iŒ“1Ã,Œ]–²d­”RdÉVv²Fe) ÉZDY³%$Ò÷P½yßÿÿº¾ïšëš™ß9¿sÎ}Îý;÷1A#I‚=¨IÀ“%Rpy@MßÔô‡KKÁáH¶cÇL±døÛÌvÌ$’°¼ü6‚D“!›:š ñô x@‡‚ÒBVqRp¸Ü"(¨£=°€¾ CÀƒ$¶cj7/"ÖÉ™ •ùóň9¹“[ည+HÄbÐx@Mv]¡Š40!`° Ùë_)DÉd7yÌÓÓS íJ’"ΈIžX²3` ’@¢èl6  ]Á_I±L±¤_v‚#ÙMÈ€Ãb@< Š à@"L´õC7ÿ‹¬÷‹ üž €Bü“îwôf",~+Á\ÝÐx/,Þ pÄâ@ÀPSOŠL%Kh¼Ã&# x´‹CÛC„­“£M•sjðw{$ ëF&I‘°¸Ía›i )kàÔ®® žLbÛ<Ÿ:–b ±{Á~ݬ žà‰÷ù ±xÇÍ&(n03<Öj«ÿ¦@&¶¿6'  àpø)i8º ã ÛLoêån9›f¨?7‚à5úaAè‡Í‡„ö2‘úùlwü±!€CìA',žíovÈ :þÂÐå±TÀiÀ7?ÿü³…äå@Àã¼þÒ·îvÎTWKEWüWÇÿøTU TÀGH"¥‘JÈÊÉ~ÿNòOûZß²¡±¿ÿ›OïHä~uîO¿E!ú{aÄ€W0 @Jѿ·£àè ñ–ÿVÈÿOõ›Yþ7áÿ÷@šnË-ºåÿÜhW,Îë72… -…>Z ü©à¯EÖ°×ÿzµÉhh9TðN¸ƈ%ib© ƒ–ŒqÞ’ËŸK€²ã°xЈ@Ân¾4€$ÿÚ6Œ ôš «ÚrÐ2ý»¢CpØÜ:$J@‰h/68$.$ ø  õt©[º`Rx  îüG‘móB!uÀ0›¦-„:!:Ì Ò! Ü‘Ìq”`NÛ  sÞ¡t¸mªåú"àl[!hQ`„m*äö”‘…$‚Ã6TŒø—q€‘phÒ¶ò(ˆ¼ B Ê6Æó/DBå½¶à¿æ‹¡‰Ð«³µÐðÿà­'© †­¯›€Q¹TRý­@…ßSr´)ÃѸñ•ÅbDã€Çø¹ 5ÅÕEé´È^•ºÎ±ÈÕ!î)dÖÏ'.–¼p— ƒ¾‰‘ò¼}%Õ;í‡%|Û¹OŸ"éQcºµµV¥ñN¼´rã—ž_•߉í—pŸíJú¢¥x¼åº ‡âÇ-Q†)Ñ Ÿjùª¢í½&PLHqƨ¾äþ»µ·'è" É¯Ú BáÌÅsëtô…ÜÉújÃáyCðžx›ø»C#Zñá6ùÇX{#¬lÄcøfN’ïF6£]¯é,W¯•aè×Ïç3¬E>L‹D¼²Q PÇǰæyTýLÁÎp *Ÿ°håbÉøÜƒ (þ[õ¡¸¡‚{–z¸^‹U µµ1ó \™™}-xî9eü´]ûîµOpmŇ;ü}i] 5ø<­ëÔ¹öDØM{ùÐ\ÍÓ¯,ûì°]kPø2õî¬Zè.»WhÞ›–µ·lÆÊ^Xdž4½"±¸CeÎä1Ñæ”äëÆµº+)“o—^ê×qú~GÝ2>ñ=»§Mœ†š"/œ@DÊgn”ï©éãxé8V1c´>üb–_]’Æu©Ÿn¯ï—i3­,=Ú=C.ÊTŠa_>"uqÆ'4é üƒûk½G-»ûèê§åŇ-®’Gëó%¦’zšæwEŠ)|¶9Uµ´t\¯|ÖÏ ©»ˆoA«+Ô8R'½#Á5µ&8.‰jÛFøpvåsæ•öЪ;|©ßNvóiÍôqоBE‘uE¶˜¨¬ ÃL.¼_I¡¤„ÖïÚm¹‘?¦º¼ÈR8Ñ®¸N<š<†ÊY¶iêþ¡RËÙ:¾1à=ÿ8<µ~@°ªPí"|ïlŒÁì˧fdëØKÚºUHÚS¥-3æ+KâÖ.;G¦$ŸÛ©à"ð.ا3=-‡±[aÞ3˜{‡8õ=³2üTÇñLºÃÉŽÏõL”Þ?ñ/ë?¾XQÚ*§ê÷%ü1zÁðxn=ËÑÓŽe9œe©Ñfkµû sìÍ•,¶È8ß°”â['Hy@zâZ¡žè¥d¡Éš“¦pQ‘/+1œáz]Y[Õyq%°µùõÒÙ§òSi4”éû[û:b>%-½dÒJlêCÉ~Ò l¦ð^ uýydâ¦Ýí²)C†äÄOÉ9ãA×ãÚÛ ö ›En¼<‘`¼kò™‰sG žŠŽCq—~¾ÚêÃ-Áb/Ž*clémìI¹ù¸îN¡-Bêg2Åù½Åâé ÖÖJÍwKØÕ‘ƒ¨7ÙÓ&%£±=–Ji,÷©ÍŒ)V ùýG#%f*»¤÷±[u÷˜‚WvÒOK\7Pª@ź&™->‹±vÍÇ0÷úp|]µc¶³Åå” N¥éûÆ ¾|DQÆš€Ú÷(µEÕ 6Æ…qyt9O<=’Ýè‰ÿG:s1·ñÀÖ½åkK¬*C,:Ü·Ÿœö8_¨ÓÊéÈ·ß=EªÕ‹œÞ;dEŽúfŒgz4{MÔ–Rث۶rçÅ”Ï}–KZ¢vD‰X³Y — ^Bƒçu:ºõÇâä볦^‘lØ·j)wÛçæÚ`W¨ÈìÇÔ@/Žê'½(p=îMµèÐôt۞𘣞oy› ï¿0|5T^ddõ»ç}7& S,…‡e¹…rö>À‘–z ÎÓÃ;Lu/ÉVgâ*Âg²ö¼ËÕ(¥š6{Lr¾÷1›|$°÷¡Ò"3±ÿ¢ê¢Ü¾qÀHÞJ“èš›v¶™êv(,ÁYÈ8*páêÅCeûmYƒ ÈëÖ¤FÖÑ2ýoÇׄî‹R’¿_BÔ§OtÙf¾øÜqÒ$‡0?æ; |Nå@w× é)~~ ÃÝš÷è>ÀÝ#Ý!*„lŠ9ZÄò¤^ÿ,£d*ônì,¬•Z:-ñxy é’ÒÙ·j×}=,ÜÝàCÈFíäL0`¬ÅwäÃL^xj3çá…{­ç¶+]Jáy¿ô9—yǽÖtgzÓƒñ+%¹š“0WùNÉÄU•ˆ)ZôšÇAŒ!Ó)úŒTý‡(¾¬ä¢gáîw^ÂÓ]àÌ©-º×–=S”ðý•ÙâÙÀZ¶éeõ4#º+ƒ‹C9û§˜;tî©_ê]ºâCÜQǸÖB&ô¿}6?ȇ E‡y„QÍ/×ËÅË5+D™¾JÕåÄYæõ\½|ÖÌqä¨_ØEºúü•ö³ÆZ¤¢O g¸®÷-‚?Úã9xì+,RØÅN8ìbâÀºHêÑaÖï©“!j;(-áÆ]ùœB@‚¨4†swpôÀWZæD!öf+Ê¡Ðf¶˜ððDCb É0@ïÅ{;30¯û`7=ç\c±Þu£ÞNNiº¨n¾qROfœžy»v^#Êÿjµ. iðÂeôøõ7í,naÎ#=’õ´ÚÏ “‹Ë¬d¥X8$eã4Ú&/žGÙë÷ÔwÙºA¹Aü™™@ÓFÍ9s¶Ê' ‚"¬s,6ƒqÙ£œ¥x±¦kñYBÏžñ0ÙÍ;yÔEh)ð¯·ßŸðå·iŠb˜¸v^Cšæ}´¼2 ¤¦ÝÖõpM¼_¹Ë±¢X¦m‰iÆNnÔyV} 6¤º[h—GãS¼7¦¦²týùøìÅF.¢eZwV“‰!Z³cüm‘ÒÑqïý¯¦Î«ÁͲÖ,ŒÇI+w{] ¸”.#ÍÙ7õ®HGlÖÈN«ÈžÉÛÊ*ìvÒš¨îÇÅuÌ\£3sQ{âø¦ëɆG—Þ™œ9°AF’¿y`p´½Sþ‹C¼BJaªãýÕG½)îQ.ê+Äõ7ÄU/wŒ?‰ñs²lUp}ŽzCo.ÜTÁ›Í«¸+«Ïû“É¥#Ac®ßãý9Ý~ãž2v¹tö{Ÿ·I;»±)·¥Ú1ÓԚǔ€(`£þYgO)®qD[õÝ·Zÿ‰|~¬ã…&ãlÖ¾W°…cS½¹£³BWÙ8±ôæuöÇ«8?6$>.Ö¦ZJT–ïâÌp© ½ƒ&ÕSù5ü?¨àô‘Šb7÷õÊôÅ*èäËØç¹=)œöâ¼8m²,¹î»L>NO¼#íÉ6ÿÄ»ªY#£6xýpÊýÀK e¨}²'ß©*éjõ/ÈP;îìJ“S)y§¯ÇV\dØœ4QqˆZ#ýFµBV»z$N7Þ— 0nß™æ:(/µxo¤¦R°Ì¾h¨®w./"ÞÒˆùÊþs%Ó-þac¬Çò“®w-7)RëR ç‡Úq­^&áÄSºËW”¢^*×}]`~êÑÜJ”&pòó2ÃÛö•ŒÁ BWµ»êņ¤”´™ÌçyT{­¹ PöÉaŽò«©9¼ÛE8 D޾º¥Ør—’=iµ00ÓFÓåjïœþá÷ˆT”0ü¼æ6þØýÎAÛ¹Z¡^Ïæ‚™¿Ã'`eÉc•Ó"žãr…¾öã:Ça•¸å\?†fû ÎJ–»ÝcÉ5i³‘l¶;±ß2|ÂÙMöžÍ+ßÔØ;•¹YïÃk¸"žZé¸>mMu*«´âôgªKä9éÅ?¿·*wáësiÒQ&£Äjš*…ùlÃÍÀ3jOî¸qÞýJëû?.úßIPÊ÷¾eÅzkKƒéqý¥;ç£ ¯ˆóŒkò¯ó¬RïÂF‚f˜UÈ )÷2ÜÀ—)gô£ùD¥7‚ªA¼ãW–°Êá_m^l°¼ÿRšB»•3ªƒFÉÏ,±¼K6”Jäþ)Ê÷Ä?àõèzÌI28‘B‹v¹UmDd lö³ñþ §¤ñ*Ì j“Ê"ù£b™Ny|;ÛÐÁÿÐþºj˜—ñ žô N%¬“å`*›=«¢j#Ë­Ñ›÷ä/fܵóÎïÁhÁjT‡¦9ýsl(ô«MgO‰ x…ÓF¯Þ?̤¹V&<êã;WEU´ð¹À}+i¬àê”ý³ê½ù glÝ®2'| mÏë‰x1{HÍ7ªn’igÛ®áþÙ-Ü÷ÌâÓDá·Œ—ÝÙ­ûÈÄù×—´Ê÷¤h'Ò¸–3~  }°•á|3êù…þ€ñH‚}F²‰f«2³úyFyâÚé$ÿ3EÚ!AšC)ùÖ_†«v…gsϼ"&$KG? NÒ•òíõBüâ§O endstream endobj 792 0 obj << /Type /ObjStm /N 100 /First 949 /Length 3797 /Filter /FlateDecode >> stream xÚí[[s;~÷¯˜ÇÝÚ"Ý¥ªS§*W’@$P<˜dH¼8vð…ç×o·¤¹Hž1¶“:OKáiF­î¯»ÕÝ’mi–gÚòŒrw‘ÉÜÀ]f”r •Q--4tƨÄ!6c‚±Ìä4c&·Ð৆CCfœÕ3¹Î¸¢y&$͸a"^ná‰ÉD®á"%4€¯¡4Ì@)gŠ!e.à•GdžJÎm&ƒ†D*I©(̤Ö0³€WÚ²Lp–©ÌBEe4S\cƒgJd¨3…=O ×=Üu.,𢙀”ƒLZ(óh… ¯,î>BhhÈÌ( paŒ±€”S™Ùpƒ¼™¥ÚôÌe9* İ(§6³Råð$Ϭ2@NUf.‡µ^šçJe\`‹Z¤3бôIs!òž‚4— ô«´ˆÏ¾58ÐÓÜͧ4˜4WÈ [T/qfŠBˆ Žˆ8ÃgRƒ¸`*J•æ=|©†g2Ç·[ŸYlh±ZJ€Œj§Rh1ªù—¨+àËÐ Ò2Éð™Å–É{%` ú‹2îe‘Bƒz:(ÃÑÌ …uÎ0XA‹b 4ƒ¡E•É7@ãyÆÀr”ó\õê…£1…( “H!Áù™D t[&B˜õ̵ (9Cà%@Á‘‚s20?`­c@!(8#sÃü˜¡ÆH-Ž-”/G ø-¤`–çØÂ5‡¡Ð€Š Ô=E= ð¸Þ'ã<Žo¡“Š-ÚRÙ-ù¤k˜³qEN`ê­òŠ}#øÿÜû$êÿ?ÿèµn@ûûä– WˆF[<\alXBî-¸SúÑ.ÁéÐ[°ÇØË´£Á¾ÍÙ†ÊÁ©ücÖ¸âϦn5GqcÐÝÕMß|ׯM°®[ÂÏ*4Šî¯þ BÓ¹A™<,…(”ÉAJ"0 ‹E»q°Ì· D7p*P°¥*¼Ïm˜+¤p óK¯Nš³Š=|Å©k i«¡7Y°F£Ý°ž{Ù”ÕsSÈx´ñ  pëæói¼õ|Û_kŸ€¤Y\uãôÃõVyå”áB„Å\i¿á Φ¨Æ8J£Ë÷ànfË¥ž—s3b»çèGûv=J¸¾hŒhÌPµ–K¸Ê5ÌØÌ!à鮨÷X¡FBóxœ@  Áj§\ã8ðBX®Ú¢Á¡@„< üMK0&iT“Uº¨2N‘؆$oÑÚ0ŒÐJ¸qÖé2•oú+Ô•Ôȧ©&")®æíäî«i_|YÝâÕ?ñVqtÕXÿÒÚ(L°RýÎkÈ·ÃÕùƒR3à°%ŒÓÔ®8KùѰòá¹BÕù«¢¡P–WVÒÂE¥ U š€»QP, Í¡BJæ–ƒŽ¢åßqçzP¶Ãhß®Þ)8DP—¦èÖÔbŒÐàmç¬ ÿÔºài–oÃè>9:”Bj?Ò_­è'Â4Å’ ùHƒxÚÍ'~f¨µP–F›Áâ1ј@럻ÐïŸhH´¤mÎéÆp‰AŠKÄêÛîíçÞôÈůÇ"#ãÑl¯˜ÞL³ñ¤çú¯ûðfÿøäôôä?»§;W4‡ÃþÝ4~ÄÎÎøgöé…TÙ †iƒB½ ãslOoŠÑ ô#wû‡Åà“"Èß½ øòhÖn¶GwÃ"ƒéßÍŠ‡8{ä*A‡9îû“wÅ,ûÙ&;d—ì‘}r@^’CrDŽÉ 9%¯ÉrFÞ’w䂼'È%¹"פO¾r3ŽGp}xè“[R71)~Þ ûä+ù ÿðÿGA¾ŽçrGîÉý¯ÇûbDä¿ä’2"£Á¨ c2†ë#y,&ƒñ-™)™?`ätð“ÌÈì~RdöטÌÉòùI~‘¿ÉßÅdüo¯²ƒÕÖÀõmïÏ?W3Á»÷çö¼ X‡ 8š€âÞÇ> r»† ЋêÿX©¿Kñÿ¨Ö ä5´~zr}qqà´n:”nƒß3Eƒ¬2¦h5!g%HabÐi‚tÝÊ„Læ&D¤5¸]Xãç°Ê›ëºp&¬Öæw·:g~ Æè« G®¯ß]y,l%ô1E;zZ¢Çƒ¯gA¯d„>†c×qÑ«7;;ûN~Ý.~)=Õô7Á„¯¸ü íôÒyˆÀÐ*4’ý‹³·ûÛ éÛ3"h…&òÒ2¹}Šeªõ§ìò|ô** ÎÊÌLý›ù¬ ýðÛitKúÓxðô¸ö—Iÿæ[1_ge{â2øü`r3ø:,~&UÅí ˜ÓÁ´Îr·ýé=)Fþö}ÞÆ%‡Ë~!Ëx7éÿ(VÉ„ýI1rº–  æÊ¥ø8œOa=~ŸÓÙDý>ÏŠÛ/CGVv<¥ëù¦O®¯N³Ó!âX9ÙÒµ2ÔÕáÁñ‰÷¡®Õ-|…cyÊòÈ›K»cqì:¿ùÒ¨[¾z3a‰2p¶ðf˜ :@?ZàójA__žî¿rØôJʈÚ•Áý‚²ômc= ­'ì®°ž$×Ó¬–f‚N•ë÷ýÇ;ggˆGu”e|À#üç0.ë0®[gh¼ÊcduŠ~{ýúðð5нšÙšãÛaê&cÏu+lnå× uÑ;ëT¼³ýjoÿ=JmVBÙßª´òçA©b”{æ]ˆ?k„õö­F½Ç¸{BPuuM!åqp­2aÿtïüãh÷ÝIW2U¬ò¢'-–¶éF«åv<ö' ¶Ö.êìür÷â]/ÛxX…€(ždÈN‡Y½òy'¢/sÈ3—LJÅÍøñ×dI·èƒq}Ž~ŒæÓq•ÊÈ›íë“ó#gµ ´×}àãÖ³›6¬ß°h½`·‚$Ýð£¸à‘ñc1 Ø'ƒ‡"F¸Övëðêtïw"Ý›IØ—N*ž©šU¦Ó¦m`Û™?’¨K¾8b,Te!#9Œ¨ª¬Î⪌U5Þ®PA±*É’Ëó£w^ã«í—bŠ%ÏŒr¾V îv<Åã­0ÖÉÖ²à¾ööÕîåù¶Ãa~çj6&WÓ|Imø\ª_*Þº*iP¹ÆcØþÆõ[ë¼ïðâèã×\\tî¨3ÇŸ,h@©) c·¶/uî§V^[ÇÉqŸ?gmnŸ`Çä}ýKâ6PEµ• )tÙ+ÞV¹Toª’mTãô0ñæšÅ;,¦ÓçÝ>%Çmû¢ùèBÌÍxR,[à|­Lºûjÿmé¬û¿waøÅ|ºWto‘psP«|Pêù±å(¯µ<¿8~¹}ìPvº"Hüª¿t±O‰ÕeÈÒ15ÜU{¡qtŒ?+'°;R*ð™¹.>†;ýio¿k‰´ä~§†S’ƒÁd:C13ÄxÒ/;ˆñrp;»ŸB­ 6`Ÿ|ϳÇ_Ç¥ìY{+×gŸ¸§ÜyÊݳ⎒¹¶ë3_<"OùË”¿ÕzÚ@¯/ÀÂvÊ_§üud|<*¨ŒoÖçŸ/Çìñ׎ {i:Ÿ¯Ï>9MÀÓE×Ë›ÖwßVUè70r†™€[žî…×нÝ`Ý'§_)x‘rÇoR–7 î,ûä¸)æŽ?-LýŽwùÝÀïãáú‚ÓãÖ¦b.›oƒˆŸØ¤¿\ðŽ€céú¼ãs”Ôáìê¡Öl’h’c†Díla¹qÕ`*Ômàpé™@Ê}!Òç æÍ8køúÌ“ yªø¥¼Ec¥¶>ïtãœW¿ 3 ½› –Z²—J¹Ûå>J08|º«IØóEŸ‹â k®· ìž–Ï)ûÅò"ïLï¤×¤®M¹/dW¡º¸›–ìzÖ¿+¦PºŽçX÷ ?Á²©îæ=ÜN³OÜ›q² w‘‡»öwélñy#2Ì©¨¿kîž·ðU$þÅÄÆ<„ÿrâ±òwú¾î‚exy?Ùˆ‡ô?ɤÿÎ%àïþ0îá¹ßÄmÆ#è_ýKæ–‡TÖß}ÝŒ‡ rÛÀÃÿô¼Û˯.ÅÖ¡›<”_»™aN™‡»—_éðþ÷8D'æôüñ²¿ëßÚ˜77‘³²àœ28Œÿ^ÄýÒ7ô½C-c‚!­ þ ‰—ü·’â¢÷DÁŠ¥¢7óÙp0B:0²P b¼ÀUû^KT¤ƒìKyø ÙÎx¹¥ªäàlRüp³ÒŒ3š•ԬܶR³P„“×ÅÏZ¦h.~çæ’Ñ\µŸ+ ÷ZÔÔ´ÚñfIQ¨óŠ:dÒ.2ÂÑLR•`^ñ%£ ø,aiTÍ’/eI›â'»™0Wm½Ì TåÑ\mfеtb†²ôré63èÚ š.£V‘Qt›Qtm¥—Î%£¹ÚäRµ¶_:W¤mÕ¦mUk[ÚesIÍÕ¦mYk[.Õ¶äÑ\´m®Z÷r©îE¤{Ù¦{Yë^,Õ½ˆt/Ût/jÝ‹¥º‘îE›îE­{¾T÷<Ò½hÓ=¯uÏ—êžGºmºçµîùRݳH÷¼M÷¼Ö=[ª{éž·éžÕºgº÷Ô¬MÛ¬Ö6µ]EW¬Ša)˜„:„i b´¶íPÍëñÒ6„´Ö<¥Ë¨óHó´Mó´Ö|®—Îi¾U®:±²2KvÌÅä¼ÍežÙZÓ>W nñsZ&"¤ˬh"IXœÜJ1½MilS™²ä5Ë> endobj 840 0 obj << /Type /ObjStm /N 90 /First 776 /Length 2649 /Filter /FlateDecode >> stream xÚZM$· ½÷¯¨£;€gõ- 0 Lvc$Hb‰} |˜xÛƒvg³½óïçRUI*ªf‘ÃNWS"ùøH‘UÕ«ÉMjÒ¤¦`&ÿ‹üÏLƦIš¬öüé& yP“‹4i&Ÿ,š)x^w4E«OÚ¹‰ïsj"âu¦äxݲmÅÊÚ°²6üÍ8¾HüÍ@ñ}[¯°ÎðGÁ“‰'­\CÂË!Ø)'Œ@'vÆŸ1MŒN62ˆÉ(€ “aÇâA`1ŽN±:M É 0އÅïó«šÀó¥ ,çxLôqb—†8ŽÇPJüg2)ªGc•Óì”ùôÀŸ ÀðV–³Bã]N¥æ‹èù‚׃ |a™àÄÙ£MAˆis ‡xÙ™hù"2-šœç4KœË{`„“דW–³À‘xM†/ìä-ÇGÞMÞ;}"N˜{ENqdA%l&.ƒˆÍÌ Œ‡ ± _\'QiVç&ùû÷—ßñò·o¿m´õª©ÕEûÇ—Ëò™ªlqEçoß=¼|‚é²ø·;|KÆÛ§ÏlçkÛ¹d*V—®séj—Ñ€™ìU[iªÇ Øâä.¶Bmm I؈F¦®¯²`3Y؈¬°åÇ·ù!›êpm¨\š%­‹Ë:?ÆèÆ¥ë\ú-?¾ËÏâdvé%Vü–¯Ž´]“/åÇmùqáÐV“-—Û²åÌ¡­&wN:4nKŠ%ÙVÑv‚¶Ýøµî(¥ÚÔ¶B[E ̹Š|[E¾w¹%ÅvIYœÌ.®ÙÒ`¡v“+¥Áli0æÐV“×–MG¶t“#%EoIÑN¶U´•¤½ñ«ÕQJUSô¶í¢ Ì9¥Ö¦TmIQáÀ%59ÑRNÔ–Õæ„šŽª¤ÐÕš„DcÝÔd@ Hk’;°ÓäB”ÖT$5¶Cu’Ð{h¥—‚hfÖèÜæq7ŽÛ¼´#b©‹¹¨™…­A!l¼›ßÍø–Æß6‡»1ÜjÖŒ“@ø6»yܘi¦±„f›ÅÝ(nÍÔìKSyÊÝLnøB;Ù&íñ møpuÚš)» }9kÛŒíGlݸ¤A¶Í×~¼ÖšÍp•fë6ZûÉÚ˜©é–ÐlSµª™š{i¢nµŸ§µ™f¶J£u›¬ö€U[gÐ ½MK{@±©)¶ÅÛØ473S™ÛÄ47ãRš–Õ°< ¸™”â Üæ¤Lñ¬)MŠmFÈšÕî–§Ý ÖÝX»À«f2JGm,™[@­÷ýÝÇ˧é__½{úõë^ï^®g~°Î–§¯þüÛÓÓõñéz¹Ñ,Ë·––έ¯–Ú3—èn¯;s K³ô/×ËG˜ôóAþ… zøøpí`,Û~é¡f¹z¬ìY¨8jžÁT‚­×cZü-{d@]?»{~¾<¾øýæöÌ7º©þñÌå®:á[]'|!uÂ?1ëómÄ$c¨÷퀮kßÁFñöÛÃýç—œb§C#2ŽŸïîç2к(–,±ÌØQ¶‡W{^7îðÍ p«Rm%¥}-áä:Kµ„³ëB³‡Óëbc‡óëÒŽºÕëºkŒ Þ¸Hœte* Ž„©)3 [j¤•¿0=KPÌÆÉ¸è¼í’q”¾i\ ömƒ Åo`¨~×ìAù{WKPÔsýî€Áëºk ôĺ^XÇ6(,è‰5v z¨¦Ç‚žT#µl'(9‘pºî’qY4£&'–é MN,ÓLã”é ÖÖ¦'¸Æ;ó]Ǽ®»d`m¶ö阞jÓbÂHjôPc'·_q­°xÓ³›Óæ˜ë£à½>l¼Ãúg„ Î=a|X“?¯›dLL´]|ºüz}xzüCîOËA؄̡[zÔ&EŸJº—¢÷¤ÐKÑæ§½RT[½q‡v[ÌÉõ¶q0Ý.N¿Ãœènož<»½8{såÔ˜4Íî1pô4ÛÛÏ}-ôLåÞb/Åަ—¢m-•¼IÁRtCÜæÜn>€ f—þ¿IÁì®r룾rû£n0K}Œ¹³é˜zóv§%wÅÔÏÜû‚˜»cÌÜôú`rãÛëM³û8:¦ÚAD×T}rçÔ}r÷Ô=p4EÛãÎQ›1îpnwq玪û|殪û^’;«é““»«é#G ¦OŽËs% M³û8¨5;à vר5}pÏdwBPkûh\˙ǵ%ÖrÜŸJpómª ÇÝjä¨ý¸ìõ*Ç¡ òöÝM<ßï rvµ gJ¢丫O‡¡¤óNå(È´‡æ9iAΓä 9%AîQÿ{Nb.Sí‚ñóéhuŽ‚‰¹`uœáø …ÃB€[(?ʸ…:£ìü°Ðâ|+ÜêD·Pi”q{ p ‡ù6ãŠó6ãŽIX€ót”!êOέxŸ\¯ã°µsöðÌòÆ Y0XÛBÓU­æÐôhñÅ£ø2\QQ ²!5##+û6ÅÑjf~€{nðõYkWÁ×zO¿[EV$żC/j¿øÜϵðX¤37PcÜp•'˜ j¸ í0Ö3áÕØ­˜ô¬þjð.¿x0Ñ 1äa7 ×Ýj CÓ°l‡–A»S¯Å>ãÕ¿ öCú#V‡±ñ6~[Âjx}8ËÚ+ø¿>¼gMš.òÿ5œ?mùtåÓ—ÏÃ_;vïxë±hSùœÏ*•·CTú6 Þ:;zAUì—Ç*/~©´{šÊÿuqþ¤/|—T?³.> ærÚ¨¼Ñ¤òLBe’Pp_ô|y³÷PžM¨<Péâ kå!‚¢úÂ;Ðfø'¥ùS9‘T^^Qyì ÿ£ýKõTN4ÅCy·Ke¬Ry{E¤êéÐÓ»Ë'V jBüïóezóöîz÷áé¿ÞóѤåçí>_?<»Dvù­ñþò÷§÷—7?º,›Yíùòx›1Lv~r»ÿËj… endstream endobj 886 0 obj << /Type /XRef /Index [0 887] /Size 887 /W [1 3 1] /Root 884 0 R /Info 885 0 R /ID [<53A0BBF6241CB0AD65FBF15E462CC068> <53A0BBF6241CB0AD65FBF15E462CC068>] /Length 2109 /Filter /FlateDecode >> stream xÚ%˜Yh×ÇÏ7W÷J²%k³¬‘­}·oZ¼È›¬m$K²$ËÖj[ ú0„ÚJ¡ÉC¡u[’<•6>ä!š‡@ ЇR4˜BK)…”RJkúÐ)…¼µóûëåwÏ÷Ÿ;÷ΜïÿïÌ8çÜÿ"ç"gÎÕä.\‹\!A3¡]G&,€2´)´!Â"(¡Í¢ –ƒ ´9´ó„•àÚ<ÚáIP…¶ŒÖOX N¡­ õÖ€Z´‡h½„u m­‡°œF{„ÖMØΠ=Fë"l1ÚZ'a38‹¶‹ÖAx´ í¡µ¶‚6´}4F‘ägXZަ¯èG»ÐÑø•HÔƒvM?¯›éC;‡ÆDšˆ´4]š&q­«”€a´.4Ý–’w­;.‚Kh—Ñ4%—Á4å’Y‹FÁÚ4Mç8˜ÈµÌ¡1ãÑUp ÍДŠëàZlE“à&ÚI4¥ñ¸V…F¦£;à.Zš,0î¡i^pI4 fÐ4/²Ï,˜CkEÃaÑXBëC“m—Á Ú ÎŽ€U´!4Y~ ¬£]A£*¢‡`í*šÊåxŒ¦Ú¢¢¢M°…v M¥¶ vÐfШÆhì¡Q[ñáð:Š Ÿ}´%´BámmŸy±¿¶DÍgI̹+Ú&ÚSB®>”¡m£ñ¿;%´§h{„ÌZ¨@;Bãš3òTD$Þ!$[¡ ­€Æý2N¡•¡mâ’P‹V‰Æ\êÑ0Rü˜w†ÓhÕhÌsÀÙá Z Ú!Ub´:4r¨¨pâŒ× ©ÆÐ‚† cò¨äІ֌¶JH±‡4Lã@±‡.4 ¯Rì¡BŒñU ØCÚÚ!ÅÐn¢áÉ@±‡A´i´EBŠ= £a?Š=\@SÞBŠ=\BÛB£Å® =C›#¤ØÃ Äà sÅ~õ€ €ã `Pñ0ÐK€úˆ)ˆø<78÷˜4W·®ß» 0z¬Û¿ ¨øpèÞtáÓæÚÞÒ3@¡_07<§²·nð#Ý– ²fnrH_Q.eÖ-sÉ’4y‚OÍmÔJÓD°@…#©T¨&r(ݬã©|PÇH­¨Ÿ°•Ñy SׂByCW5dŸüÒ~ûAþ—/æô,æé¨¹_¿¡²è§Ó`Œ34‰4–T«b¤›¡)¥t¡Tž¤¥Æ' 'Á ŠÒ<ÓqR™°ÚÜKùü©ão¯éYÛÓYs¿{©–.AúÐbRzJ:À}°hî%ÆêæNüóñt²À§Û€6‘ÒÒ‡àØô…ôØ5÷ò¬Nc½OµÀ³ §ûæ¾:ž«ÀŠž™=×dZ‹ fÕU µŠÞ2ëþ§B,••›µN(<´RWš Ì9³AÓì˜2ëý@!6Ë0\†×2Òa¸,fCÕ÷Î —5›UKÃpY7h7»ùsi\U?#¡Ç,y[z9 ½U– ˜­|K´ hƒÁî&Ã>v̰cÆN&» F6ãf[?Ô¹Ú«`Œe“f‡Ç´Ñ¿áLû) ]†Ë´ÐÆa ,š½ú/K¦3‘ik€#²]°nöú+ú ©ÍÔüÕíÕÞÕÏÕ˜÷̾} ï=Z}î° +ƒfïüLGш@Ñ¢–}…ê~y.ßSXÔaÕRÕCÕ4[AƒÙO7õ=5HuDµ@õ¼s@©ÍìßÕ÷ÚºšÚØEÐkæßÐQµ¬~p¨3 õ£ .t \2ûì¹N» ÔvFÁà*¸®ƒ`’y¹ËH¸mö›sú)ÍU¦Ìþp íÐÎHís̃Eð,˜}ùu}ù>XË`¨‰èúVÁXÛ`Ãìå_tî#ð쳯.èÀ.ØO,ªøDšvFSŒÈ¥7F5Íéèš³hd€Ð@(‚(ä×W’ìO2í«éö5€œû:€A| ç¾xßȾoXÀcÏfÇãÏÇc|'À¾`ß ðÇž÷˜Á“x_<›OÎ=sêñ†ÏŸ#»néV1Ç43xÌà1ƒÇ 3xÌà1ƒÇ ~ÜøÊßøÀã Ï{,à§Á ˜øÀã_üÀ x,à±€Çþ ûžì{²ï7ÀˆEÕºpŒä±€Ç~l\âw>ðxÃ?OÁ3€7ü´CvVºòŽÚ»¶ЖX«w^ñ“/t´dÑ÷ßҨܢßwhTaÑ¿¿Ð¨Ò §×5:a…ñzg…ýÖßøLZÞqVæ~©°ÞÊßÌÃåW6ZÙ«_äáÛ}9±vÖÊþÞ£Ñ9+–}ÓY±³^a›_ÿOþ¤Ja§?ÿT£.+ÕnjÔm¥öãÿí÷€6®Ú©ÎZiºIì'“‹€E¢‡Q==±ÓJèö =>™z„Ò3“^@Ü, M=уÓmpÜzåÏþ<Ñs”^Jè-„^;$`,‚û€Me¢zãÀ¢ðÌ”¬u ×zÏ  z“ÀŽ;a‹l[iêEžÕå/ÝÿCÉZâ endstream endobj startxref 413152 %%EOF ipe-7.1.10/build/doc/functions_func_v.html0000644000175000017500000001426112624020245020332 0ustar otfriedotfried Ipelib: Class Members - Functions

 

- v -


ipe-7.1.10/build/doc/classipe_1_1_transform_tool.html0000644000175000017500000011416312624020245022357 0ustar otfriedotfried Ipelib: ipe::TransformTool Class Reference

#include <ipetool.h>

Inherits ipe::Tool.

Public Types

enum  TType { ETranslate, EScale, EStretch, ERotate }
 

Public Member Functions

 TransformTool (CanvasBase *canvas, Page *page, int view, TType type, bool withShift)
 
bool isValid () const
 
virtual void draw (Painter &painter) const
 
virtual void mouseButton (int button, bool press)
 
virtual void mouseMove ()
 
virtual void report ()
 
- Public Member Functions inherited from ipe::Tool
virtual ~Tool ()
 
virtual bool key (String text, int modifiers)
 
virtual void snapVtx (const Vector &mouse, Vector &pos, double &bound, bool cp) const
 

Protected Member Functions

void compute (const Vector &v)
 
- Protected Member Functions inherited from ipe::Tool
 Tool (CanvasBase *canvas)
 

Protected Attributes

PageiPage
 
int iView
 
TType iType
 
bool iWithShift
 
bool iOnlyHorizontal
 
bool iOnlyVertical
 
Vector iMouseDown
 
Matrix iTransform
 
Vector iOrigin
 
bool iValid
 
- Protected Attributes inherited from ipe::Tool
CanvasBaseiCanvas
 

Detailed Description

A tool for transforming the selected objects on the canvas.

Supports moving, rotating, scaling, and stretching.

Member Enumeration Documentation

Enumerator
ETranslate 
EScale 
EStretch 
ERotate 

Constructor & Destructor Documentation

TransformTool::TransformTool ( CanvasBase canvas,
Page page,
int  view,
TType  type,
bool  withShift 
)

Constructor starts transformation.

After constructing a TransformTool, you must call isValid() to ensure that the transformation can be performed.

A transformation can fail because the selection contains pinned objects, or because the initial mouse position is identical to the transformation origin.

References ipe::Rect::addRect(), ipe::Page::bbox(), ipe::Rect::bottomLeft(), ipe::Page::count(), ipe::EFixedPin, ipe::CanvasBase::EHandCursor, ipe::ENoPin, EScale, EStretch, ETranslate, ipe::EVerticalPin, ipe::Tool::iCanvas, iMouseDown, iOnlyHorizontal, iOnlyVertical, ipe::Snap::iOrigin, iOrigin, iPage, iType, iValid, iView, ipe::Snap::iWithAxes, iWithShift, ipe::Page::object(), ipe::Object::pinned(), ipe::CanvasBase::pos(), ipe::Page::select(), ipe::CanvasBase::setAutoOrigin(), ipe::CanvasBase::setCursor(), ipe::CanvasBase::snap(), ipe::Rect::topRight(), ipe::Vector::x, and ipe::Vector::y.

Member Function Documentation

bool TransformTool::isValid ( ) const

Check that the transformation can be performed.

References iValid.

void TransformTool::mouseButton ( int  button,
bool  press 
)
virtual

Called when a mouse button is pressed or released on the canvas.

button is 1, 2, or 3, with Shift/Ctrl/Alt/Meta modifiers added in (as defined in CanvasBase::TModifiers. press is true for button-down, and false for button-up.

Reimplemented from ipe::Tool.

References compute(), ipe::CanvasBase::finishTool(), ipe::Tool::iCanvas, ipe::CanvasBase::pos(), and report().

void TransformTool::mouseMove ( )
virtual

Called when the mouse is moved on the canvas.

Reimplemented from ipe::Tool.

References compute(), ipe::Tool::iCanvas, ipe::CanvasBase::pos(), and ipe::CanvasBase::updateTool().

void TransformTool::report ( )
virtual

Report the final transformation chosen.

The implementation in TransformTool does nothing. Derived classes should reimplement report().

Referenced by mouseButton().

Member Data Documentation

Page* ipe::TransformTool::iPage
protected

Referenced by draw(), and TransformTool().

int ipe::TransformTool::iView
protected

Referenced by TransformTool().

TType ipe::TransformTool::iType
protected

Referenced by compute(), and TransformTool().

bool ipe::TransformTool::iWithShift
protected

Referenced by compute(), and TransformTool().

bool ipe::TransformTool::iOnlyHorizontal
protected

Referenced by compute(), and TransformTool().

bool ipe::TransformTool::iOnlyVertical
protected

Referenced by compute(), and TransformTool().

Vector ipe::TransformTool::iMouseDown
protected

Referenced by compute(), and TransformTool().

Matrix ipe::TransformTool::iTransform
protected

Referenced by compute(), and draw().

Vector ipe::TransformTool::iOrigin
protected

Referenced by compute(), and TransformTool().

bool ipe::TransformTool::iValid
protected

Referenced by isValid(), and TransformTool().


The documentation for this class was generated from the following files:
  • ipetool.h
  • ipetool.cpp

ipe-7.1.10/build/doc/ftv2ns.png0000644000175000017500000000060412624020245016020 0ustar otfriedotfried‰PNG  IHDRÚ}\ˆKIDATxíÝ1K1Àñ­ž ØG•â‚n‚Šà ‚âælÁE¿€‹“ (nºêââêäࢋƒÐMAá@°‹ µât¾ÄK¡à%Ü•Û ý]BIïå%áuÍ…a™€,e × v¯ç¥«ˆi‹º¨Õö–î\tòòuénÄ0ã æÜÉoV\Ì$G.&@Y=ÆË%$um·¢ûÛ6–'Úß«9Qó\bÙ)²º0Ðë-Zœ¥TèHÍ`pÀcsm µö5:>Áë‡Þ¦I µØ ‚F‹Çà]» ›jg—ìoÏáõ©[ œõ š­onë €Ô¬¨vqõ„?\Ðç”  6»øüÒTe ÃÉéŸeç ÀÅlQ ¡c”€ª¬ü3*d€ÅWTMÏ\rÿÿh6™ø1±F ‹°fžIEND®B`‚ipe-7.1.10/build/doc/modules.html0000644000175000017500000000736312624020245016437 0ustar otfriedotfried Ipelib: Modules
Modules
Here is a list of all modules:
 Ipe AttributesAttributes for Ipe objects
 Ipe BaseBasic classes for Ipe
 Ipe DocumentThe classes managing an Ipe document
 Ipe GeometryGeometric primitives for Ipe
 Ipe ObjectsThe Ipe object model
 Ipe UtilitiesClasses to manage Ipe documents and objects
 The Ipelet interfaceImplementation of Ipe plugins
 Ipe Cairo interfaceDrawing Ipe objects using the Cairo library
 Ipe canvasA widget (control) that displays an Ipe document page

ipe-7.1.10/build/doc/classipe_1_1_tool-members.html0000644000175000017500000001073612624020245021715 0ustar otfriedotfried Ipelib: Member List
ipe::Tool Member List

This is the complete list of members for ipe::Tool, including all inherited members.

draw(Painter &painter) const =0ipe::Toolpure virtual
iCanvasipe::Toolprotected
key(String text, int modifiers)ipe::Toolvirtual
mouseButton(int button, bool press)ipe::Toolvirtual
mouseMove()ipe::Toolvirtual
snapVtx(const Vector &mouse, Vector &pos, double &bound, bool cp) const ipe::Toolvirtual
Tool(CanvasBase *canvas)ipe::Toolprotected
~Tool()ipe::Toolvirtual

ipe-7.1.10/build/doc/functions_vars_n.html0000644000175000017500000000664212624020245020346 0ustar otfriedotfried Ipelib: Class Members - Variables
 

- n -


ipe-7.1.10/build/doc/example4.svg0000644000175000017500000001252512624020245016335 0ustar otfriedotfried ipe-7.1.10/build/doc/tabs.css0000644000175000017500000000221312624020245015531 0ustar otfriedotfried.tabs, .tabs2, .tabs3 { background-image: url('tab_b.png'); width: 100%; z-index: 101; font-size: 13px; font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; } .tabs2 { font-size: 10px; } .tabs3 { font-size: 9px; } .tablist { margin: 0; padding: 0; display: table; } .tablist li { float: left; display: table-cell; background-image: url('tab_b.png'); line-height: 36px; list-style: none; } .tablist a { display: block; padding: 0 20px; font-weight: bold; background-image:url('tab_s.png'); background-repeat:no-repeat; background-position:right; color: #283A5D; text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); text-decoration: none; outline: none; } .tabs3 .tablist a { padding: 0 10px; } .tablist a:hover { background-image: url('tab_h.png'); background-repeat:repeat-x; color: #fff; text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); text-decoration: none; } .tablist li.current a { background-image: url('tab_a.png'); background-repeat:repeat-x; color: #fff; text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); } ipe-7.1.10/build/doc/manual_6.html0000644000175000017500000001006312624020245016460 0ustar otfriedotfried Ipe Manual -- 3.3 Moving and scaling objects
3.4 Stroke and fill colors3 General Concepts3.2 The current selection3.3 Moving and scaling objects

3.3 Moving and scaling objects

There are three modes for transforming objects: translate, stretch, and rotate. If you hold the shift key while pressing the left mouse button, the stretch function keeps the aspect ratio of the objects (an operation we call scaling), and the translate function is restricted to horizontal and vertical translations.

Normally, the transformation functions work on the current selection. However, to make it more convenient to move around many different objects, there is an exception: When the mouse button is pressed while the cursor is not near the current selection, but there is some other object close to the cursor, that object is moved, rotated, or scaled instead.

By default, the rotate function rotates around the center of the bounding box for the selected objects. This behavior can be overridden by specifying an axis system. If an axis system is set, then the origin is used as the center.

The scale and stretch functions use a corner of the bounding box for the selected objects as the fix-point of the transformation. Again, if an axis system is set, the origin of the system is used instead.

It is often convenient to rotate or scale around a vertex of an object. This is easy to achieve by setting the origin of the axis system to that vertex, using the Snap to vertex function for setting the axis system.

ipe-7.1.10/build/doc/ftv2splitbar.png0000644000175000017500000000047212624020245017223 0ustar otfriedotfried‰PNG  IHDRM¸¿IDATxíÝ¡JCa‡ñç(˜ ëƒ%±Ø4 b±È˜Í¶3˜v^Á±˜…ãó–ŽELƒõ…¥•³ ,ÿb;íç{Ã/¼ðÞÀaYÕ¯åóøq:¼º¹›\òIIIIIIIIIIIIIIIIII-Òçl¹›«õ抢è_t/Ï»ã£ÑíYQVõðêäíã÷´×ùY¬Úÿµ§¦ivók¾_íåýÛ£I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$ýC[Vì=ü[„fÆIEND®B`‚ipe-7.1.10/build/doc/structipe_1_1_layout-members.html0000644000175000017500000001033012624020245022462 0ustar otfriedotfried Ipelib: Member List
ipe::Layout Member List

This is the complete list of members for ipe::Layout, including all inherited members.

iCropipe::Layout
iFrameSizeipe::Layout
iOriginipe::Layout
iPaperSizeipe::Layout
iParagraphSkipipe::Layout
isNull() const ipe::Layoutinline
Layout()ipe::Layoutinline
paper() const ipe::Layoutinline

ipe-7.1.10/build/doc/functions_q.html0000644000175000017500000001066412624020245017315 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- q -


ipe-7.1.10/build/doc/classipe_1_1_a85_stream.html0000644000175000017500000003062212624020245021254 0ustar otfriedotfried Ipelib: ipe::A85Stream Class Reference

#include <ipeutils.h>

Inherits ipe::Stream.

Public Member Functions

 A85Stream (Stream &stream)
 
virtual void putChar (char ch)
 
virtual void close ()
 
- Public Member Functions inherited from ipe::Stream
virtual ~Stream ()
 
virtual void putString (String s)
 
virtual void putCString (const char *s)
 
virtual void putRaw (const char *data, int size)
 
Streamoperator<< (char ch)
 
Streamoperator<< (const String &s)
 
Streamoperator<< (const char *s)
 
Streamoperator<< (int i)
 
Streamoperator<< (double d)
 
void putHexByte (char b)
 
void putXmlString (String s)
 

Detailed Description

Filter stream adding ASCII85 encoding.

Constructor & Destructor Documentation

A85Stream::A85Stream ( Stream stream)

Member Function Documentation

void A85Stream::putChar ( char  ch)
virtual

Output character.

Implements ipe::Stream.

References ipe::Stream::putChar(), and ipe::Stream::putCString().

void A85Stream::close ( )
virtual

Close the stream. No more writing allowed!

Reimplemented from ipe::Stream.

References ipe::Stream::close(), and ipe::Stream::putCString().


The documentation for this class was generated from the following files:
  • ipeutils.h
  • ipeutils.cpp

ipe-7.1.10/build/doc/classipe_1_1_transform_tool-members.html0000644000175000017500000002431712624020245024010 0ustar otfriedotfried Ipelib: Member List
ipe::TransformTool Member List

This is the complete list of members for ipe::TransformTool, including all inherited members.

compute(const Vector &v)ipe::TransformToolprotected
draw(Painter &painter) const ipe::TransformToolvirtual
ERotate enum valueipe::TransformTool
EScale enum valueipe::TransformTool
EStretch enum valueipe::TransformTool
ETranslate enum valueipe::TransformTool
iCanvasipe::Toolprotected
iMouseDownipe::TransformToolprotected
iOnlyHorizontalipe::TransformToolprotected
iOnlyVerticalipe::TransformToolprotected
iOriginipe::TransformToolprotected
iPageipe::TransformToolprotected
isValid() const ipe::TransformTool
iTransformipe::TransformToolprotected
iTypeipe::TransformToolprotected
iValidipe::TransformToolprotected
iViewipe::TransformToolprotected
iWithShiftipe::TransformToolprotected
key(String text, int modifiers)ipe::Toolvirtual
mouseButton(int button, bool press)ipe::TransformToolvirtual
mouseMove()ipe::TransformToolvirtual
report()ipe::TransformToolvirtual
snapVtx(const Vector &mouse, Vector &pos, double &bound, bool cp) const ipe::Toolvirtual
Tool(CanvasBase *canvas)ipe::Toolprotected
TransformTool(CanvasBase *canvas, Page *page, int view, TType type, bool withShift)ipe::TransformTool
TType enum nameipe::TransformTool
~Tool()ipe::Toolvirtual

ipe-7.1.10/build/doc/nav_h.png0000644000175000017500000000014212624020245015666 0ustar otfriedotfried‰PNG  IHDR ,é@)IDATxíÝA @BQ­³šÛ›Ð¢Žáà) )ëý éaÅèÜ¿Æo‡RlÐßIEND®B`‚ipe-7.1.10/build/doc/manual_23.html0000644000175000017500000000737112624020245016547 0ustar otfriedotfried Ipe Manual -- 5.2 Context snapping
5.3 Angular snapping5 Snapping5.1 Grid snapping5.2 Context snapping

5.2 Context snapping

When context snapping is enabled, certain features of the objects of your current drawing become magnetic. There are three buttons to enable three different features of your objects: vertices, the boundary, and intersection points.

When the mouse is too far away from the nearest interesting feature, the mouse position will not be "snapped". The snapping distance can be changed by setting Snapping distance value in the preference dialog. If you use a high setting, you will need to toggle snapping on and off during drawing. Some people prefer to set snapping on once and for all, and to set the snap distance to a very small value like 3 or 4.

The features that you can make "magnetic" are the following:

 

vertices
are vertices of polygonal objects, control points of multiplicity three of splines, centers of circles and ellipses, centers and end points of circular arcs, and mark positions.

 

boundaries
are the object boundaries of polygonal objects, splines and splinegons, circles and ellipses, and circular arcs.

 

intersections
are the intersection points between the boundaries of path objects.
ipe-7.1.10/build/doc/next.png0000644000175000017500000000211412624020245015552 0ustar otfriedotfried‰PNG  IHDR D¤ŠÆsRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<PLTEÿÿÿ™ÌÿÂõ†¹ì|¯âs¦ÙiœÏ_’ÅV‰¼L²Cv©:m 0c–&YŒPƒ =p3fŸ‰ñ pHYsÄÄ•+©IDAT8OÍ“Éà CÙZ(ËÿmM2°¦×øÞ€ÉÆþóD žpjÛEæ>¦ùI쀫LT'„bÓ7&¾°žÐ ÖF!"x‚>'!†ð«Ëe…Q­Y!Ÿ÷ž ˜šö2§dˆtßhdCuáÄDyh€_…ÓP€ Yd”E”óŠ[4·7*̬ËU¨EÃR–M¤OÜÇ4Ë„ûp_¦GnÖºí?h“qÍtZIEND®B`‚ipe-7.1.10/build/doc/classipe_1_1_attribute.html0000644000175000017500000031156312624020245021315 0ustar otfriedotfried Ipelib: ipe::Attribute Class Reference

#include <ipeattributes.h>

Public Member Functions

 Attribute ()
 
 Attribute (bool symbolic, String name)
 
 Attribute (Fixed value)
 
 Attribute (Color color)
 
 Attribute (THorizontalAlignment align)
 
 Attribute (TVerticalAlignment align)
 
 Attribute (TLineJoin join)
 
 Attribute (TLineCap cap)
 
 Attribute (TFillRule rule)
 
 Attribute (TPinned pin)
 
 Attribute (TTransformations trans)
 
 Attribute (TPathMode pm)
 
bool isSymbolic () const
 
bool isString () const
 
bool isColor () const
 
bool isNumber () const
 
bool isEnum () const
 
bool isBoolean () const
 
bool isNormal () const
 
int index () const
 
int internal () const
 
String string () const
 
Fixed number () const
 
Color color () const
 
bool boolean () const
 
THorizontalAlignment horizontalAlignment () const
 
TVerticalAlignment verticalAlignment () const
 
TLineJoin lineJoin () const
 
TLineCap lineCap () const
 
TFillRule fillRule () const
 
TPinned pinned () const
 
TTransformations transformations () const
 
TPathMode pathMode () const
 
bool operator== (const Attribute &rhs) const
 
bool operator!= (const Attribute &rhs) const
 
bool isArcArrow () const
 

Static Public Member Functions

static Attribute Boolean (bool flag)
 
static Attribute BLACK ()
 
static Attribute WHITE ()
 
static Attribute ONE ()
 
static Attribute NORMAL ()
 
static Attribute UNDEFINED ()
 
static Attribute BACKGROUND ()
 
static Attribute SYM_STROKE ()
 
static Attribute SYM_FILL ()
 
static Attribute SYM_PEN ()
 
static Attribute ARROW_NORMAL ()
 
static Attribute OPAQUE ()
 
static Attribute ARROW_ARC ()
 
static Attribute ARROW_FARC ()
 
static Attribute ARROW_PTARC ()
 
static Attribute ARROW_FPTARC ()
 
static Attribute makeColor (String str, Attribute deflt)
 
static Attribute makeScalar (String str, Attribute deflt)
 
static Attribute makeDashStyle (String str)
 
static Attribute makeTextSize (String str)
 
static Attribute normal (Kind kind)
 

Friends

class StyleSheet
 

Detailed Description

An attribute of an Ipe Object.

An attribute is either an absolute value or a symbolic name that has to be looked up in a StyleSheet.

All string values are replaced by indices into a Repository (that applies both to symbolic names and to absolute values that are strings). All other values are stored directly inside the attribute, either as a Fixed or a Color.

There are five different kinds of Attribute objects:

  • if isSymbolic() is true, index() returns the index into the repository, and string() returns the symbolic name.
  • if isColor() is true, color() returns an absolute RGB color.
  • if isNumeric() is true, number() returns an absolute scalar value.
  • if isEnum() is true, the attribute represents an enumeration value.
  • otherwise, isString() is true, and index() returns the index into the repository (for a string expressing the absolute value of the attribute), and string() returns the string itself.

Constructor & Destructor Documentation

Attribute::Attribute ( bool  symbolic,
String  name 
)
explicit

Create an attribute with string value.

References ipe::Repository::get(), index(), and ipe::Repository::toIndex().

Attribute::Attribute ( Fixed  value)
explicit

Create an absolute numeric attribute.

References ipe::Fixed::internal().

Attribute::Attribute ( Color  color)
explicit

Create an attribute with absolute color.

References ipe::Color::iBlue, ipe::Color::iGreen, ipe::Fixed::internal(), and ipe::Color::iRed.

ipe::Attribute::Attribute ( THorizontalAlignment  align)
inlineexplicit
ipe::Attribute::Attribute ( TVerticalAlignment  align)
inlineexplicit
ipe::Attribute::Attribute ( TLineJoin  join)
inlineexplicit
ipe::Attribute::Attribute ( TLineCap  cap)
inlineexplicit
ipe::Attribute::Attribute ( TFillRule  rule)
inlineexplicit
ipe::Attribute::Attribute ( TPinned  pin)
inlineexplicit
ipe::Attribute::Attribute ( TTransformations  trans)
inlineexplicit
ipe::Attribute::Attribute ( TPathMode  pm)
inlineexplicit

Member Function Documentation

static Attribute ipe::Attribute::Boolean ( bool  flag)
inlinestatic
bool ipe::Attribute::isString ( ) const
inline

Is it an absolute string value?

Referenced by string().

bool ipe::Attribute::isColor ( ) const
inline

Is it a color?

Referenced by color(), ipe::ImlParser::parseStyle(), and string().

bool ipe::Attribute::isNumber ( ) const
inline
bool ipe::Attribute::isEnum ( ) const
inline
bool ipe::Attribute::isBoolean ( ) const
inline

Is it a boolean?

References index(), and isEnum().

int ipe::Attribute::internal ( ) const
inline
bool ipe::Attribute::boolean ( ) const
inline
THorizontalAlignment ipe::Attribute::horizontalAlignment ( ) const
inline

References index().

Referenced by ipe::Text::setAttribute().

TVerticalAlignment ipe::Attribute::verticalAlignment ( ) const
inline

References index().

Referenced by ipe::Text::setAttribute().

TLineJoin ipe::Attribute::lineJoin ( ) const
inline

References index().

Referenced by ipe::Path::setAttribute().

TLineCap ipe::Attribute::lineCap ( ) const
inline

References index().

Referenced by ipe::Path::setAttribute().

TFillRule ipe::Attribute::fillRule ( ) const
inline

References index().

Referenced by ipe::Path::setAttribute().

TPinned ipe::Attribute::pinned ( ) const
inline

References index().

Referenced by ipe::Object::setAttribute().

TTransformations ipe::Attribute::transformations ( ) const
inline

References index().

Referenced by ipe::Object::setAttribute().

TPathMode ipe::Attribute::pathMode ( ) const
inline

References index().

Referenced by ipe::Path::setAttribute().

bool ipe::Attribute::operator== ( const Attribute rhs) const
inline

Are two values equal (only compares index!)

bool ipe::Attribute::operator!= ( const Attribute rhs) const
inline

Are two values different (only compares index!)

static Attribute ipe::Attribute::BLACK ( )
inlinestatic
static Attribute ipe::Attribute::WHITE ( )
inlinestatic

Create absolute white color.

References Attribute().

Referenced by ipe::PdfPainter::doDrawText(), ipe::Reference::Reference(), and ipe::Reference::saveAsXml().

static Attribute ipe::Attribute::ONE ( )
inlinestatic
static Attribute ipe::Attribute::UNDEFINED ( )
inlinestatic

Create symbolic attribute "undefined".

References Attribute().

Referenced by ipe::StyleSheet::find(), ipe::Cascade::find(), and ipe::Object::getAttribute().

static Attribute ipe::Attribute::BACKGROUND ( )
inlinestatic

Create symbolic attribute "Background".

References Attribute().

Referenced by ipe::PdfWriter::createPageView(), ipe::CanvasBase::drawObjects(), and ipe::Thumbnail::saveRender().

static Attribute ipe::Attribute::SYM_STROKE ( )
inlinestatic

Create symbolic attribute "sym-stroke".

References Attribute().

Referenced by ipe::Painter::setFill(), ipe::Painter::setStroke(), ipe::Painter::setSymFill(), and ipe::Painter::setSymStroke().

static Attribute ipe::Attribute::SYM_FILL ( )
inlinestatic

Create symbolic attribute "sym-fill".

References Attribute().

Referenced by ipe::Painter::setFill(), ipe::Painter::setStroke(), ipe::Painter::setSymFill(), and ipe::Painter::setSymStroke().

static Attribute ipe::Attribute::SYM_PEN ( )
inlinestatic

Create symbolic attribute "sym-pen".

References Attribute().

Referenced by ipe::Painter::setPen(), and ipe::Painter::setSymPen().

static Attribute ipe::Attribute::ARROW_NORMAL ( )
inlinestatic

Create symbolic attribute "arrow/normal(spx)".

References Attribute().

static Attribute ipe::Attribute::OPAQUE ( )
inlinestatic

Create symbolic attribute "opaque".

References Attribute().

Referenced by ipe::Text::saveAsXml(), ipe::Path::saveAsXml(), and ipe::Text::Text().

static Attribute ipe::Attribute::ARROW_ARC ( )
inlinestatic

Create symbolic attribute "arrow/arc(spx)".

References Attribute().

Referenced by ipe::Path::draw().

static Attribute ipe::Attribute::ARROW_FARC ( )
inlinestatic

Create symbolic attribute "arrow/farc(spx)".

References Attribute().

Referenced by ipe::Path::draw(), and ipe::Path::drawArrow().

static Attribute ipe::Attribute::ARROW_PTARC ( )
inlinestatic

Create symbolic attribute "arrow/ptarc(spx)".

References Attribute().

Referenced by ipe::Path::drawArrow().

static Attribute ipe::Attribute::ARROW_FPTARC ( )
inlinestatic

Create symbolic attribute "arrow/fptarc(spx)".

References Attribute().

Referenced by ipe::Path::drawArrow().

bool ipe::Attribute::isArcArrow ( ) const
inline

Is it one of the symbolic attributes "arrow/*arc(spc)"?

Referenced by ipe::Path::draw(), and ipe::Path::drawArrow().

Attribute Attribute::makeColor ( String  str,
Attribute  deflt 
)
static

Make a color attribute.

If the string starts with a letter, make a symbolic attribute. Otherwise, it's either a single gray value (0.0 to 1.0), or the three red, green, and blue components, separated by spaces. If it's an empty string, return deflt.

References Attribute(), and ipe::String::isEmpty().

Referenced by ipe::PdfPainter::doDrawText(), ipe::ImlParser::parseStyle(), ipe::Reference::Reference(), and ipe::Text::Text().

Attribute Attribute::makeScalar ( String  str,
Attribute  deflt 
)
static

Make a scalar attribute.

If str is empty, simply return deflt. If str starts with a letter, make a symbolic attribute. Otherwise, must be a number.

References Attribute(), and ipe::String::isEmpty().

Referenced by ipe::PdfPainter::doDrawText(), ipe::ImlParser::parseStyle(), and ipe::Reference::Reference().

Attribute Attribute::makeDashStyle ( String  str)
static

Construct dash style attribute from string.

Strings starting with '[' create an absolute dash style. The empty string is equivalent to 'normal'. Any other string creates a symbolic dash style.

References Attribute(), ipe::String::isEmpty(), and NORMAL().

Referenced by ipe::ImlParser::parseStyle().

Attribute Attribute::makeTextSize ( String  str)
static

Construct text size attribute from string.

String starting with digit creates a numeric absolute value, string starting with letter creates symbolic text size, anything else creates absolute (string) text size. The empty string is treated like "normal".

References Attribute(), ipe::String::empty(), and NORMAL().

Referenced by ipe::ImlParser::parseStyle(), and ipe::Text::Text().

Attribute Attribute::normal ( Kind  kind)
static

Return a standard value for attribute of kind.

The value is used if the stylesheet doesn't define a symbolic attribute used in the document.

References Attribute(), BLACK(), ipe::EAngleSize, ipe::EArrowSize, ipe::EColor, ipe::EDashStyle, ipe::EGridSize, ipe::EOpacity, ipe::EPen, ipe::ESymbolSize, ipe::ETextSize, ipe::ETextStretch, ipe::ETextStyle, NORMAL(), and ONE().

Referenced by ipe::Cascade::find().

Friends And Related Function Documentation

friend class StyleSheet
friend

The documentation for this class was generated from the following files:
  • ipeattributes.h
  • ipeattributes.cpp

ipe-7.1.10/build/doc/functions_f.html0000644000175000017500000002353012624020245017276 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- f -


ipe-7.1.10/build/doc/functions_func_l.html0000644000175000017500000001750512624020245020324 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- l -


ipe-7.1.10/build/doc/functions_n.html0000644000175000017500000001464712624020245017317 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- n -


ipe-7.1.10/build/doc/classipe_1_1_iml_parser.html0000644000175000017500000013775312624020245021456 0ustar otfriedotfried Ipelib: ipe::ImlParser Class Reference

#include <ipeiml.h>

Inherits ipe::XmlParser.

Inherited by PdfStreamParser, and PsStreamParser.

Public Types

enum  Errors { ESuccess = 0, EVersionTooOld, EVersionTooRecent, ESyntaxError }
 

Public Member Functions

 ImlParser (DataSource &source)
 
int parseDocument (Document &doc)
 
bool parsePage (Page &page)
 
ObjectparseObject (String tag, Page *page=0, int *currentLayer=0)
 
StyleSheetparseStyleSheet ()
 
bool parseStyle (StyleSheet &sheet)
 
PageparsePageSelection ()
 
virtual Buffer pdfStream (int objNum)
 
bool parseBitmap ()
 
bool parseFontmap (String *stdNames, String *paths)
 
- Public Member Functions inherited from ipe::XmlParser
 XmlParser (DataSource &source)
 
virtual ~XmlParser ()
 
int parsePosition () const
 
String parseToTag ()
 
bool parseAttributes (XmlAttributes &attr, bool qm=false)
 
bool parsePCDATA (String tag, String &pcdata)
 
bool isTagChar (int ch)
 
void getChar ()
 
bool eos ()
 
void skipWhitespace ()
 

Additional Inherited Members

- Protected Member Functions inherited from ipe::XmlParser
String parseToTagX ()
 
- Protected Attributes inherited from ipe::XmlParser
DataSourceiSource
 
String iTopElement
 
int iCh
 
int iPos
 

Detailed Description

XML Parser for Ipe documents and style sheets.

A recursive descent parser for the XML streams.

After experimenting with various XML parsing frameworks, this turned out to work best for Ipe.

Member Enumeration Documentation

Enumerator
ESuccess 
EVersionTooOld 
EVersionTooRecent 
ESyntaxError 

Constructor & Destructor Documentation

ImlParser::ImlParser ( DataSource source)
explicit

Member Function Documentation

StyleSheet * ImlParser::parseStyleSheet ( )

parse a complete style sheet.

On calling, stream must be before the 'ipestyle' tag. A <?xml> tag is allowed.

References ipe::XmlParser::parseAttributes(), parseStyle(), and ipe::XmlParser::parseToTag().

Referenced by ipe::StyleSheet::standard().

bool ImlParser::parseStyle ( StyleSheet sheet)

Parse a style sheet.

On calling, stream must be just past the style tag.

References ipe::StyleSheet::add(), ipe::StyleSheet::addCMap(), ipe::StyleSheet::addEffect(), ipe::StyleSheet::addGradient(), ipe::StyleSheet::addSymbol(), ipe::StyleSheet::addTiling(), ipe::Attribute::BLACK(), ipe::Gradient::Stop::color, ipe::Angle::Degrees(), ipe::EAlignBaseline, ipe::EAlignLeft, ipe::EAngleSize, ipe::EArrowSize, ipe::Gradient::EAxial, ipe::EColor, ipe::EDashStyle, ipe::EEvenOddRule, ipe::EGridSize, ipe::Reference::EHasFill, ipe::Reference::EHasPen, ipe::Reference::EHasSize, ipe::Reference::EHasStroke, ipe::String::empty(), ipe::EOpacity, ipe::EPen, ipe::Gradient::ERadial, ipe::ESymbolSize, ipe::ETextSize, ipe::ETextStretch, ipe::ETextStyle, ipe::ETransformationsRigidMotions, ipe::ETransformationsTranslations, ipe::EWindRule, ipe::Reference::flagsFromName(), ipe::Lex::getDouble(), ipe::Lex::getInt(), ipe::XmlAttributes::has(), ipe::Tiling::iAngle, ipe::TextPadding::iBottom, ipe::StyleSheet::TitleStyle::iColor, ipe::StyleSheet::PageNumberStyle::iColor, ipe::Layout::iCrop, ipe::StyleSheet::TitleStyle::iDefined, ipe::StyleSheet::PageNumberStyle::iDefined, ipe::Effect::iDuration, ipe::Effect::iEffect, ipe::Gradient::iExtend, ipe::StyleSheet::PageNumberStyle::iFontSize, ipe::Layout::iFrameSize, ipe::StyleSheet::TitleStyle::iHorizontalAlignment, ipe::TextPadding::iLeft, ipe::Gradient::iMatrix, ipe::Layout::iOrigin, ipe::Layout::iPaperSize, ipe::Layout::iParagraphSkip, ipe::StyleSheet::TitleStyle::iPos, ipe::StyleSheet::PageNumberStyle::iPos, ipe::Gradient::iRadius, ipe::TextPadding::iRight, ipe::Attribute::isColor(), ipe::StyleSheet::TitleStyle::iSize, ipe::Attribute::isSymbolic(), ipe::Tiling::iStep, ipe::Gradient::iStops, ipe::TextPadding::iTop, ipe::Symbol::iTransformations, ipe::Effect::iTransitionTime, ipe::Gradient::iType, ipe::Gradient::iV, ipe::StyleSheet::TitleStyle::iVerticalAlignment, ipe::Tiling::iWidth, ipe::Symbol::iXForm, ipe::Attribute::makeColor(), ipe::Attribute::makeDashStyle(), ipe::Text::makeHAlign(), ipe::Attribute::makeScalar(), ipe::Attribute::makeTextSize(), ipe::Text::makeVAlign(), ipe::Attribute::NORMAL(), ipe::Gradient::Stop::offset, ipe::XmlParser::parseAttributes(), parseBitmap(), parseObject(), ipe::XmlParser::parsePCDATA(), ipe::XmlParser::parseToTag(), ipe::StyleSheet::setEncoding(), ipe::StyleSheet::setFillRule(), ipe::StyleSheet::setLayout(), ipe::StyleSheet::setLineCap(), ipe::StyleSheet::setLineJoin(), ipe::StyleSheet::setName(), ipe::StyleSheet::setPageNumberStyle(), ipe::StyleSheet::setPreamble(), ipe::StyleSheet::setTextPadding(), ipe::StyleSheet::setTitleStyle(), ipe::XmlAttributes::slash(), ipe::Vector::x, and ipe::Vector::y.

Referenced by parseDocument(), and parseStyleSheet().

Page * ImlParser::parsePageSelection ( )

parse an <ipepage> element (used on clipboard).

References ipe::XmlParser::parseAttributes(), parseBitmap(), parsePage(), ipe::XmlParser::parseToTag(), and IpeAutoPtr< T >::take().

Buffer ImlParser::pdfStream ( int  objNum)
virtual

XML contents can refer to data in PDF.

If the XML stream is embedded in a PDF file, XML contents can refer to PDF objects. A derived parser must implement this method to access PDF data.

It is assumed that PDF object objNum is a stream. Its contents (uncompressed!) is returned in a buffer.

Referenced by parseBitmap().

bool ImlParser::parseBitmap ( )
bool ipe::ImlParser::parseFontmap ( String stdNames,
String paths 
)

The documentation for this class was generated from the following files:
  • ipeiml.h
  • ipeiml.cpp

ipe-7.1.10/build/doc/classipe_1_1_canvas_base.html0000644000175000017500000042027612624020245021561 0ustar otfriedotfried Ipelib: ipe::CanvasBase Class Reference

#include <ipecanvas.h>

Inherited by ipe::Canvas, ipe::Canvas, and ipe::Canvas.

Classes

struct  Style
 

Public Types

enum  TModifiers { EShift = 0x100, EControl = 0x200, EAlt = 0x400, EMeta = 0x800 }
 
enum  TCursor { EStandardCursor, EHandCursor, ECrossCursor, EDotCursor }
 

Public Member Functions

virtual ~CanvasBase ()
 
void setPage (const Page *page, int pno, int view, const Cascade *sheet)
 
void setFontPool (const FontPool *fontPool)
 
Vector pan () const
 
double zoom () const
 
const Cascadecascade () const
 
Vector center () const
 
Vector pos () const
 
Vector unsnappedPos () const
 
Vector globalPos () const
 
Vector simpleSnapPos () const
 
const Snapsnap () const
 
int additionalModifiers () const
 
void setAdditionalModifiers (int mod)
 
Vector devToUser (const Vector &arg) const
 
Vector userToDev (const Vector &arg) const
 
void setCanvasStyle (const Style &style)
 
Style canvasStyle () const
 
void setPan (const Vector &v)
 
void setZoom (double zoom)
 
void setSnap (const Snap &s)
 
void setDimmed (bool dimmed)
 
void setAutoOrigin (const Vector &v)
 
Matrix canvasTfm () const
 
void setRetina (int r)
 
void setObserver (CanvasObserver *observer)
 
void setFifiVisible (bool visible)
 
void setSelectionVisible (bool visible)
 
void setTool (Tool *tool)
 
void finishTool ()
 
Tooltool ()
 
void update ()
 
void updateTool ()
 
int canvasWidth () const
 
int canvasHeight () const
 
virtual void setCursor (TCursor cursor, double w=1.0, Color *color=0)=0
 
virtual void invalidate (int x, int y, int w, int h)=0
 

Static Public Member Functions

static int selectPageOrView (Document *doc, int page=-1, int startIndex=0, int pageWidth=240, int width=600, int height=480)
 

Protected Member Functions

 CanvasBase ()
 
void drawPaper (cairo_t *cc)
 
void drawFrame (cairo_t *cc)
 
void drawAxes (cairo_t *cc)
 
void drawGrid (cairo_t *cc)
 
void drawObjects (cairo_t *cc)
 
void drawTool (Painter &painter)
 
void snapToPaperAndFrame ()
 
void refreshSurface ()
 
void computeFifi (double x, double y)
 
void drawFifi (cairo_t *cr)
 
virtual void invalidate ()=0
 

Protected Attributes

CanvasObserveriObserver
 
TooliTool
 
const PageiPage
 
int iPageNumber
 
int iView
 
const CascadeiCascade
 
Style iStyle
 
Vector iPan
 
double iZoom
 
Snap iSnap
 
bool iDimmed
 
bool iAutoSnap
 
Vector iAutoOrigin
 
int iAdditionalModifiers
 
int iRetina
 
bool iRepaintObjects
 
int iWidth
 
int iHeight
 
cairo_surface_t * iSurface
 
Vector iUnsnappedMousePos
 
Vector iMousePos
 
Vector iGlobalPos
 
Vector iOldFifi
 
bool iFifiVisible
 
Snap::TSnapModes iFifiMode
 
bool iSelectionVisible
 
FontsiFonts
 

Member Enumeration Documentation

Keyboard modifiers.

Enumerator
EShift 
EControl 
EAlt 
EMeta 
Enumerator
EStandardCursor 
EHandCursor 
ECrossCursor 
EDotCursor 

Constructor & Destructor Documentation

CanvasBase::~CanvasBase ( )
virtual

destructor.

References iFonts, iSurface, and iTool.

CanvasBase::CanvasBase ( )
protected

Construct a new canvas.

Member Function Documentation

void CanvasBase::setPage ( const Page page,
int  pno,
int  view,
const Cascade sheet 
)

Set the page to be displayed.

Doesn't take ownership of any argument. The page number pno is only needed if page numbering is turned on.

References iCascade, iPage, iPageNumber, and iView.

void CanvasBase::setFontPool ( const FontPool *  fontPool)

set information about Latex fonts (from ipe::Document)

References iFonts, and ipe::Fonts::New().

Vector ipe::CanvasBase::pan ( ) const
inline

Return current pan.

References iPan.

Referenced by ipe::PanTool::mouseButton().

double ipe::CanvasBase::zoom ( ) const
inline

Return current zoom.

References iZoom.

Referenced by ipe::SelectTool::draw(), ipe::SelectTool::SelectTool(), and setZoom().

const Cascade* ipe::CanvasBase::cascade ( ) const
inline

Return current style sheet cascade.

References iCascade.

Referenced by ipe::PanTool::draw().

Vector ipe::CanvasBase::center ( ) const
inline

Return center of canvas.

References iHeight, and iWidth.

Referenced by canvasTfm(), devToUser(), and userToDev().

Vector ipe::CanvasBase::pos ( ) const
inline

Return last mouse position (snapped!) in user coordinates.

References iMousePos.

Referenced by ipe::TransformTool::mouseButton(), ipe::TransformTool::mouseMove(), simpleSnapPos(), and ipe::TransformTool::TransformTool().

Vector ipe::CanvasBase::unsnappedPos ( ) const
inline

Return last unsnapped mouse position in user coordinates.

References iUnsnappedMousePos.

Referenced by ipe::PanTool::mouseButton(), ipe::PanTool::mouseMove(), ipe::SelectTool::mouseMove(), ipe::PanTool::PanTool(), and ipe::SelectTool::SelectTool().

Vector ipe::CanvasBase::globalPos ( ) const
inline

Return global mouse position of last mouse press/release.

References iGlobalPos.

Referenced by ipe::Canvas::tabletEvent().

Vector CanvasBase::simpleSnapPos ( ) const

Return snapped mouse position without angular snapping.

References iPage, iSnap, ipe::Snap::iSnapDistance, iUnsnappedMousePos, iZoom, pos(), and ipe::Snap::simpleSnap().

const Snap& ipe::CanvasBase::snap ( ) const
inline

Return current snapping information.

References iSnap.

Referenced by snapToPaperAndFrame(), and ipe::TransformTool::TransformTool().

int ipe::CanvasBase::additionalModifiers ( ) const
inline

Return current additional modifiers.

References iAdditionalModifiers.

void CanvasBase::setAdditionalModifiers ( int  mod)

Set additional modifiers.

These modifier bits are passed to the Tool when a key is pressed or a drawing action is performed in addition to the actual keyboard modifiers.

References iAdditionalModifiers.

Vector CanvasBase::devToUser ( const Vector arg) const

Convert canvas (device) coordinates to user coordinates.

References center(), iPan, iZoom, ipe::Vector::x, and ipe::Vector::y.

Referenced by computeFifi(), and drawGrid().

Vector CanvasBase::userToDev ( const Vector arg) const

Convert user coordinates to canvas (device) coordinates.

References center(), iPan, iZoom, ipe::Vector::x, and ipe::Vector::y.

Referenced by computeFifi(), ipe::Canvas::drawFifi(), and drawFifi().

void CanvasBase::setCanvasStyle ( const Style style)

Set style of canvas drawing.

Includes paper color, pretty text, and grid.

References iStyle.

Style ipe::CanvasBase::canvasStyle ( ) const
inline

Return canvas style.

References iStyle.

void CanvasBase::setPan ( const Vector v)

Set current pan position.

The pan position is the user coordinate that is displayed at the very center of the canvas.

References iPan.

Referenced by ipe::PanTool::mouseButton().

void CanvasBase::setZoom ( double  zoom)

Set current zoom factor.

The zoom factor maps user coordinates to screen pixel coordinates.

References iZoom, and zoom().

void CanvasBase::setSnap ( const Snap s)

Set the snapping information.

References iSnap.

void CanvasBase::setDimmed ( bool  dimmed)

Dim whole canvas, except for the Tool.

This mode will be reset when the Tool finishes.

References iDimmed.

void CanvasBase::setAutoOrigin ( const Vector v)

Enable automatic angular snapping with this origin.

References iAutoOrigin, and iAutoSnap.

Referenced by ipe::TransformTool::TransformTool().

Matrix CanvasBase::canvasTfm ( ) const

Matrix mapping user coordinates to canvas coordinates.

References center(), iPan, and iZoom.

Referenced by ipe::Canvas::paintEvent().

void CanvasBase::setRetina ( int  r)

Set MacOS Retina display.

References iRetina, and update().

void CanvasBase::setObserver ( CanvasObserver observer)

Set an observer.

Use 0 to delete current observer.

References iObserver.

void CanvasBase::setFifiVisible ( bool  visible)

Set whether Fifi should be shown.

Fifi will only be shown if a snapping mode is active.

References iFifiVisible, and updateTool().

void CanvasBase::setSelectionVisible ( bool  visible)

Set whether selection should be shown when there is no tool.

References iSelectionVisible, and updateTool().

void CanvasBase::setTool ( Tool tool)

Set a new tool.

Calls canvasObserverToolChanged().

References ipe::CanvasObserver::canvasObserverToolChanged(), iObserver, iTool, tool(), and updateTool().

Tool* ipe::CanvasBase::tool ( )
inline

References iTool.

Referenced by setTool().

void CanvasBase::update ( )

Mark for update with redrawing of objects.

References invalidate(), and iRepaintObjects.

Referenced by finishTool(), and setRetina().

void CanvasBase::updateTool ( )
int ipe::CanvasBase::canvasWidth ( ) const
inline

References iWidth.

int ipe::CanvasBase::canvasHeight ( ) const
inline

References iHeight.

virtual void ipe::CanvasBase::setCursor ( TCursor  cursor,
double  w = 1.0,
Color color = 0 
)
pure virtual
int CanvasBase::selectPageOrView ( Document doc,
int  page = -1,
int  startIndex = 0,
int  pageWidth = 240,
int  width = 600,
int  height = 480 
)
static

Show dialog to select a page or a view.

If page is negative (the default), shows thumbnails of all pages of the document in a dialog. If the user selects a page, the page number is returned. If the dialog is canceled, -1 is returned.

If page is non-negative, all views of this page are shown, and the selected view number is returned.

itemWidth is the width of the page thumbnails (the height is computed automatically).

If page is negative (the default), shows thumbnails of all pages of the document in a dialog. If the user selects a page, the page number is returned. If the dialog is canceled, -1 is returned.

If page is non-negative, all views of this page are shown, and the selected view number is returned.

References ipe::Document::countPages(), ipe::Page::countViews(), and ipe::Document::page().

virtual void ipe::CanvasBase::invalidate ( int  x,
int  y,
int  w,
int  h 
)
pure virtual

Implemented in ipe::Canvas.

void CanvasBase::drawFrame ( cairo_t *  cc)
protected
void CanvasBase::drawAxes ( cairo_t *  cc)
protected
void CanvasBase::drawTool ( Painter painter)
protected
void CanvasBase::computeFifi ( double  x,
double  y 
)
protected
virtual void ipe::CanvasBase::invalidate ( )
protectedpure virtual

Implemented in ipe::Canvas.

Referenced by computeFifi(), update(), and updateTool().

Member Data Documentation

const Page* ipe::CanvasBase::iPage
protected
int ipe::CanvasBase::iPageNumber
protected

Referenced by drawObjects(), and setPage().

int ipe::CanvasBase::iView
protected

Referenced by drawObjects(), drawTool(), and setPage().

const Cascade* ipe::CanvasBase::iCascade
protected
Style ipe::CanvasBase::iStyle
protected
Vector ipe::CanvasBase::iPan
protected
bool ipe::CanvasBase::iDimmed
protected

Referenced by drawObjects(), finishTool(), and setDimmed().

bool ipe::CanvasBase::iAutoSnap
protected
Vector ipe::CanvasBase::iAutoOrigin
protected

Referenced by computeFifi(), and setAutoOrigin().

int ipe::CanvasBase::iRetina
protected
bool ipe::CanvasBase::iRepaintObjects
protected

Referenced by refreshSurface(), and update().

int ipe::CanvasBase::iWidth
protected
int ipe::CanvasBase::iHeight
protected
cairo_surface_t* ipe::CanvasBase::iSurface
protected
Vector ipe::CanvasBase::iUnsnappedMousePos
protected
Vector ipe::CanvasBase::iMousePos
protected
Vector ipe::CanvasBase::iGlobalPos
protected
Vector ipe::CanvasBase::iOldFifi
protected
bool ipe::CanvasBase::iFifiVisible
protected
Snap::TSnapModes ipe::CanvasBase::iFifiMode
protected
bool ipe::CanvasBase::iSelectionVisible
protected
Fonts* ipe::CanvasBase::iFonts
protected

The documentation for this class was generated from the following files:
  • ipecanvas.h
  • ipecanvas.cpp
  • ipeselector_gtk.cpp
  • ipeselector_qt.cpp
  • ipeselector_win.cpp

ipe-7.1.10/build/doc/example6.svg0000644000175000017500000001206012624020245016331 0ustar otfriedotfried ipe-7.1.10/build/doc/structipe_1_1_gradient_1_1_stop-members.html0000644000175000017500000000554112624020245024457 0ustar otfriedotfried Ipelib: Member List
ipe::Gradient::Stop Member List

This is the complete list of members for ipe::Gradient::Stop, including all inherited members.

coloripe::Gradient::Stop
offsetipe::Gradient::Stop

ipe-7.1.10/build/doc/functions_d.html0000644000175000017500000004466712624020245017312 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- d -


ipe-7.1.10/build/doc/classipe_1_1_pdf_obj-members.html0000644000175000017500000001236612624020245022344 0ustar otfriedotfried Ipelib: Member List
ipe::PdfObj Member List

This is the complete list of members for ipe::PdfObj, including all inherited members.

array() const ipe::PdfObjvirtual
boolean() const ipe::PdfObjvirtual
dict() const ipe::PdfObjvirtual
name() const ipe::PdfObjvirtual
null() const ipe::PdfObjvirtual
number() const ipe::PdfObjvirtual
ref() const ipe::PdfObjvirtual
repr() const ipe::PdfObj
string() const ipe::PdfObjvirtual
write(Stream &stream) const =0ipe::PdfObjpure virtual
~PdfObj()=0ipe::PdfObjpure virtual

ipe-7.1.10/build/doc/classipe_1_1_painter-members.html0000644000175000017500000005275612624020245022412 0ustar otfriedotfried Ipelib: Member List
ipe::Painter Member List

This is the complete list of members for ipe::Painter, including all inherited members.

addClipPath()ipe::Painter
cascade() const ipe::Painterinline
closePath()ipe::Painter
curveTo(const Vector &v1, const Vector &v2, const Vector &v3)ipe::Painter
curveTo(const Bezier &bezier)ipe::Painterinline
dashStyle() const ipe::Painterinline
dashStyle(std::vector< double > &dashes, double &offset) const ipe::Painter
doAddClipPath()ipe::Painterprotectedvirtual
doClosePath()ipe::Painterprotectedvirtual
doCurveTo(const Vector &v1, const Vector &v2, const Vector &v3)ipe::Painterprotectedvirtual
doDrawArc(const Arc &arc)ipe::Painterprotectedvirtual
doDrawBitmap(Bitmap bitmap)ipe::Painterprotectedvirtual
doDrawPath(TPathMode mode)ipe::Painterprotectedvirtual
doDrawSymbol(Attribute symbol)ipe::Painterprotectedvirtual
doDrawText(const Text *text)ipe::Painterprotectedvirtual
doLineTo(const Vector &v)ipe::Painterprotectedvirtual
doMoveTo(const Vector &v)ipe::Painterprotectedvirtual
doNewPath()ipe::Painterprotectedvirtual
doPop()ipe::Painterprotectedvirtual
doPush()ipe::Painterprotectedvirtual
drawArc(const Arc &arc)ipe::Painter
drawArcAsBezier(double alpha)ipe::Painterprotected
drawBitmap(Bitmap bitmap)ipe::Painter
drawEllipse()ipe::Painter
drawPath(TPathMode mode)ipe::Painter
drawSymbol(Attribute symbol)ipe::Painter
drawText(const Text *text)ipe::Painter
fill() const ipe::Painterinline
fillRule() const ipe::Painterinline
gradient() const ipe::Painterinline
iCascadeipe::Painterprotected
iInPathipe::Painterprotected
iMatrixipe::Painterprotected
iStateipe::Painterprotected
lineCap() const ipe::Painterinline
lineJoin() const ipe::Painterinline
lineTo(const Vector &v)ipe::Painter
matrix() const ipe::Painterinline
moveTo(const Vector &v)ipe::Painter
newPath()ipe::Painter
opacity() const ipe::Painterinline
Painter(const Cascade *style)ipe::Painter
pen() const ipe::Painterinline
pop()ipe::Painter
popMatrix()ipe::Painter
push()ipe::Painter
pushMatrix()ipe::Painter
rect(const Rect &re)ipe::Painter
setDashStyle(Attribute dash)ipe::Painter
setFill(Attribute color)ipe::Painter
setFillRule(TFillRule rule)ipe::Painter
setGradient(Attribute grad)ipe::Painter
setLineCap(TLineCap cap)ipe::Painter
setLineJoin(TLineJoin join)ipe::Painter
setOpacity(Attribute opaq)ipe::Painter
setPen(Attribute pen)ipe::Painter
setStroke(Attribute color)ipe::Painter
setSymFill(Attribute color)ipe::Painter
setSymPen(Attribute wid)ipe::Painter
setSymStroke(Attribute color)ipe::Painter
setTiling(Attribute til)ipe::Painter
stroke() const ipe::Painterinline
symFill() const ipe::Painterinline
symPen() const ipe::Painterinline
symStroke() const ipe::Painterinline
tiling() const ipe::Painterinline
transform(const Matrix &m)ipe::Painter
translate(const Vector &v)ipe::Painter
untransform(TTransformations trans)ipe::Painter
~Painter()ipe::Paintervirtual

ipe-7.1.10/build/doc/doxygen.css0000644000175000017500000006142312624020245016265 0ustar otfriedotfried/* The standard CSS for doxygen 1.8.7 */ body, table, div, p, dl { font: 400 14px/22px Roboto,sans-serif; } /* @group Heading Levels */ h1.groupheader { font-size: 150%; } .title { font: 400 14px/28px Roboto,sans-serif; font-size: 150%; font-weight: bold; margin: 10px 2px; } h2.groupheader { border-bottom: 1px solid #879ECB; color: #354C7B; font-size: 150%; font-weight: normal; margin-top: 1.75em; padding-top: 8px; padding-bottom: 4px; width: 100%; } h3.groupheader { font-size: 100%; } h1, h2, h3, h4, h5, h6 { -webkit-transition: text-shadow 0.5s linear; -moz-transition: text-shadow 0.5s linear; -ms-transition: text-shadow 0.5s linear; -o-transition: text-shadow 0.5s linear; transition: text-shadow 0.5s linear; margin-right: 15px; } h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { text-shadow: 0 0 15px cyan; } dt { font-weight: bold; } div.multicol { -moz-column-gap: 1em; -webkit-column-gap: 1em; -moz-column-count: 3; -webkit-column-count: 3; } p.startli, p.startdd { margin-top: 2px; } p.starttd { margin-top: 0px; } p.endli { margin-bottom: 0px; } p.enddd { margin-bottom: 4px; } p.endtd { margin-bottom: 2px; } /* @end */ caption { font-weight: bold; } span.legend { font-size: 70%; text-align: center; } h3.version { font-size: 90%; text-align: center; } div.qindex, div.navtab{ background-color: #EBEFF6; border: 1px solid #A3B4D7; text-align: center; } div.qindex, div.navpath { width: 100%; line-height: 140%; } div.navtab { margin-right: 15px; } /* @group Link Styling */ a { color: #3D578C; font-weight: normal; text-decoration: none; } .contents a:visited { color: #4665A2; } a:hover { text-decoration: underline; } a.qindex { font-weight: bold; } a.qindexHL { font-weight: bold; background-color: #9CAFD4; color: #ffffff; border: 1px double #869DCA; } .contents a.qindexHL:visited { color: #ffffff; } a.el { font-weight: bold; } a.elRef { } a.code, a.code:visited, a.line, a.line:visited { color: #4665A2; } a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { color: #4665A2; } /* @end */ dl.el { margin-left: -1cm; } pre.fragment { border: 1px solid #C4CFE5; background-color: #FBFCFD; padding: 4px 6px; margin: 4px 8px 4px 2px; overflow: auto; word-wrap: break-word; font-size: 9pt; line-height: 125%; font-family: monospace, fixed; font-size: 105%; } div.fragment { padding: 4px 6px; margin: 4px 8px 4px 2px; background-color: #FBFCFD; border: 1px solid #C4CFE5; } div.line { font-family: monospace, fixed; font-size: 13px; min-height: 13px; line-height: 1.0; text-wrap: unrestricted; white-space: -moz-pre-wrap; /* Moz */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ white-space: pre-wrap; /* CSS3 */ word-wrap: break-word; /* IE 5.5+ */ text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition-property: background-color, box-shadow; -webkit-transition-duration: 0.5s; -moz-transition-property: background-color, box-shadow; -moz-transition-duration: 0.5s; -ms-transition-property: background-color, box-shadow; -ms-transition-duration: 0.5s; -o-transition-property: background-color, box-shadow; -o-transition-duration: 0.5s; transition-property: background-color, box-shadow; transition-duration: 0.5s; } div.line.glow { background-color: cyan; box-shadow: 0 0 10px cyan; } span.lineno { padding-right: 4px; text-align: right; border-right: 2px solid #0F0; background-color: #E8E8E8; white-space: pre; } span.lineno a { background-color: #D8D8D8; } span.lineno a:hover { background-color: #C8C8C8; } div.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px; padding: 0.2em; border: solid thin #333; border-radius: 0.5em; -webkit-border-radius: .5em; -moz-border-radius: .5em; box-shadow: 2px 2px 3px #999; -webkit-box-shadow: 2px 2px 3px #999; -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); } div.groupHeader { margin-left: 16px; margin-top: 12px; font-weight: bold; } div.groupText { margin-left: 16px; font-style: italic; } body { background-color: white; color: black; margin: 0; } div.contents { margin-top: 10px; margin-left: 12px; margin-right: 8px; } td.indexkey { background-color: #EBEFF6; font-weight: bold; border: 1px solid #C4CFE5; margin: 2px 0px 2px 0; padding: 2px 10px; white-space: nowrap; vertical-align: top; } td.indexvalue { background-color: #EBEFF6; border: 1px solid #C4CFE5; padding: 2px 10px; margin: 2px 0px; } tr.memlist { background-color: #EEF1F7; } p.formulaDsp { text-align: center; } img.formulaDsp { } img.formulaInl { vertical-align: middle; } div.center { text-align: center; margin-top: 0px; margin-bottom: 0px; padding: 0px; } div.center img { border: 0px; } address.footer { text-align: right; padding-right: 12px; } img.footer { border: 0px; vertical-align: middle; } /* @group Code Colorization */ span.keyword { color: #008000 } span.keywordtype { color: #604020 } span.keywordflow { color: #e08000 } span.comment { color: #800000 } span.preprocessor { color: #806020 } span.stringliteral { color: #002080 } span.charliteral { color: #008080 } span.vhdldigit { color: #ff00ff } span.vhdlchar { color: #000000 } span.vhdlkeyword { color: #700070 } span.vhdllogic { color: #ff0000 } blockquote { background-color: #F7F8FB; border-left: 2px solid #9CAFD4; margin: 0 24px 0 4px; padding: 0 12px 0 16px; } /* @end */ /* .search { color: #003399; font-weight: bold; } form.search { margin-bottom: 0px; margin-top: 0px; } input.search { font-size: 75%; color: #000080; font-weight: normal; background-color: #e8eef2; } */ td.tiny { font-size: 75%; } .dirtab { padding: 4px; border-collapse: collapse; border: 1px solid #A3B4D7; } th.dirtab { background: #EBEFF6; font-weight: bold; } hr { height: 0px; border: none; border-top: 1px solid #4A6AAA; } hr.footer { height: 1px; } /* @group Member Descriptions */ table.memberdecls { border-spacing: 0px; padding: 0px; } .memberdecls td, .fieldtable tr { -webkit-transition-property: background-color, box-shadow; -webkit-transition-duration: 0.5s; -moz-transition-property: background-color, box-shadow; -moz-transition-duration: 0.5s; -ms-transition-property: background-color, box-shadow; -ms-transition-duration: 0.5s; -o-transition-property: background-color, box-shadow; -o-transition-duration: 0.5s; transition-property: background-color, box-shadow; transition-duration: 0.5s; } .memberdecls td.glow, .fieldtable tr.glow { background-color: cyan; box-shadow: 0 0 15px cyan; } .mdescLeft, .mdescRight, .memItemLeft, .memItemRight, .memTemplItemLeft, .memTemplItemRight, .memTemplParams { background-color: #F9FAFC; border: none; margin: 4px; padding: 1px 0 0 8px; } .mdescLeft, .mdescRight { padding: 0px 8px 4px 8px; color: #555; } .memSeparator { border-bottom: 1px solid #DEE4F0; line-height: 1px; margin: 0px; padding: 0px; } .memItemLeft, .memTemplItemLeft { white-space: nowrap; } .memItemRight { width: 100%; } .memTemplParams { color: #4665A2; white-space: nowrap; font-size: 80%; } /* @end */ /* @group Member Details */ /* Styles for detailed member documentation */ .memtemplate { font-size: 80%; color: #4665A2; font-weight: normal; margin-left: 9px; } .memnav { background-color: #EBEFF6; border: 1px solid #A3B4D7; text-align: center; margin: 2px; margin-right: 15px; padding: 2px; } .mempage { width: 100%; } .memitem { padding: 0; margin-bottom: 10px; margin-right: 5px; -webkit-transition: box-shadow 0.5s linear; -moz-transition: box-shadow 0.5s linear; -ms-transition: box-shadow 0.5s linear; -o-transition: box-shadow 0.5s linear; transition: box-shadow 0.5s linear; display: table !important; width: 100%; } .memitem.glow { box-shadow: 0 0 15px cyan; } .memname { font-weight: bold; margin-left: 6px; } .memname td { vertical-align: bottom; } .memproto, dl.reflist dt { border-top: 1px solid #A8B8D9; border-left: 1px solid #A8B8D9; border-right: 1px solid #A8B8D9; padding: 6px 0px 6px 0px; color: #253555; font-weight: bold; text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); background-image:url('nav_f.png'); background-repeat:repeat-x; background-color: #E2E8F2; /* opera specific markup */ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); border-top-right-radius: 4px; border-top-left-radius: 4px; /* firefox specific markup */ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; -moz-border-radius-topright: 4px; -moz-border-radius-topleft: 4px; /* webkit specific markup */ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -webkit-border-top-right-radius: 4px; -webkit-border-top-left-radius: 4px; } .memdoc, dl.reflist dd { border-bottom: 1px solid #A8B8D9; border-left: 1px solid #A8B8D9; border-right: 1px solid #A8B8D9; padding: 6px 10px 2px 10px; background-color: #FBFCFD; border-top-width: 0; background-image:url('nav_g.png'); background-repeat:repeat-x; background-color: #FFFFFF; /* opera specific markup */ border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); /* firefox specific markup */ -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; /* webkit specific markup */ -webkit-border-bottom-left-radius: 4px; -webkit-border-bottom-right-radius: 4px; -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); } dl.reflist dt { padding: 5px; } dl.reflist dd { margin: 0px 0px 10px 0px; padding: 5px; } .paramkey { text-align: right; } .paramtype { white-space: nowrap; } .paramname { color: #602020; white-space: nowrap; } .paramname em { font-style: normal; } .paramname code { line-height: 14px; } .params, .retval, .exception, .tparams { margin-left: 0px; padding-left: 0px; } .params .paramname, .retval .paramname { font-weight: bold; vertical-align: top; } .params .paramtype { font-style: italic; vertical-align: top; } .params .paramdir { font-family: "courier new",courier,monospace; vertical-align: top; } table.mlabels { border-spacing: 0px; } td.mlabels-left { width: 100%; padding: 0px; } td.mlabels-right { vertical-align: bottom; padding: 0px; white-space: nowrap; } span.mlabels { margin-left: 8px; } span.mlabel { background-color: #728DC1; border-top:1px solid #5373B4; border-left:1px solid #5373B4; border-right:1px solid #C4CFE5; border-bottom:1px solid #C4CFE5; text-shadow: none; color: white; margin-right: 4px; padding: 2px 3px; border-radius: 3px; font-size: 7pt; white-space: nowrap; vertical-align: middle; } /* @end */ /* these are for tree view inside a (index) page */ div.directory { margin: 10px 0px; border-top: 1px solid #9CAFD4; border-bottom: 1px solid #9CAFD4; width: 100%; } .directory table { border-collapse:collapse; } .directory td { margin: 0px; padding: 0px; vertical-align: top; } .directory td.entry { white-space: nowrap; padding-right: 6px; padding-top: 3px; } .directory td.entry a { outline:none; } .directory td.entry a img { border: none; } .directory td.desc { width: 100%; padding-left: 6px; padding-right: 6px; padding-top: 3px; border-left: 1px solid rgba(0,0,0,0.05); } .directory tr.even { padding-left: 6px; background-color: #F7F8FB; } .directory img { vertical-align: -30%; } .directory .levels { white-space: nowrap; width: 100%; text-align: right; font-size: 9pt; } .directory .levels span { cursor: pointer; padding-left: 2px; padding-right: 2px; color: #3D578C; } .arrow { color: #9CAFD4; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; cursor: pointer; font-size: 80%; display: inline-block; width: 16px; height: 22px; } .icon { font-family: Arial, Helvetica; font-weight: bold; font-size: 12px; height: 14px; width: 16px; display: inline-block; background-color: #728DC1; color: white; text-align: center; border-radius: 4px; margin-left: 2px; margin-right: 2px; } .icona { width: 24px; height: 22px; display: inline-block; } .iconfopen { width: 24px; height: 18px; margin-bottom: 4px; background-image:url('ftv2folderopen.png'); background-position: 0px -4px; background-repeat: repeat-y; vertical-align:top; display: inline-block; } .iconfclosed { width: 24px; height: 18px; margin-bottom: 4px; background-image:url('ftv2folderclosed.png'); background-position: 0px -4px; background-repeat: repeat-y; vertical-align:top; display: inline-block; } .icondoc { width: 24px; height: 18px; margin-bottom: 4px; background-image:url('ftv2doc.png'); background-position: 0px -4px; background-repeat: repeat-y; vertical-align:top; display: inline-block; } table.directory { font: 400 14px Roboto,sans-serif; } /* @end */ div.dynheader { margin-top: 8px; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } address { font-style: normal; color: #2A3D61; } table.doxtable { border-collapse:collapse; margin-top: 4px; margin-bottom: 4px; } table.doxtable td, table.doxtable th { border: 1px solid #2D4068; padding: 3px 7px 2px; } table.doxtable th { background-color: #374F7F; color: #FFFFFF; font-size: 110%; padding-bottom: 4px; padding-top: 5px; } table.fieldtable { /*width: 100%;*/ margin-bottom: 10px; border: 1px solid #A8B8D9; border-spacing: 0px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); } .fieldtable td, .fieldtable th { padding: 3px 7px 2px; } .fieldtable td.fieldtype, .fieldtable td.fieldname { white-space: nowrap; border-right: 1px solid #A8B8D9; border-bottom: 1px solid #A8B8D9; vertical-align: top; } .fieldtable td.fieldname { padding-top: 3px; } .fieldtable td.fielddoc { border-bottom: 1px solid #A8B8D9; /*width: 100%;*/ } .fieldtable td.fielddoc p:first-child { margin-top: 0px; } .fieldtable td.fielddoc p:last-child { margin-bottom: 2px; } .fieldtable tr:last-child td { border-bottom: none; } .fieldtable th { background-image:url('nav_f.png'); background-repeat:repeat-x; background-color: #E2E8F2; font-size: 90%; color: #253555; padding-bottom: 4px; padding-top: 5px; text-align:left; -moz-border-radius-topleft: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-left-radius: 4px; -webkit-border-top-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom: 1px solid #A8B8D9; } .tabsearch { top: 0px; left: 10px; height: 36px; background-image: url('tab_b.png'); z-index: 101; overflow: hidden; font-size: 13px; } .navpath ul { font-size: 11px; background-image:url('tab_b.png'); background-repeat:repeat-x; background-position: 0 -5px; height:30px; line-height:30px; color:#8AA0CC; border:solid 1px #C2CDE4; overflow:hidden; margin:0px; padding:0px; } .navpath li { list-style-type:none; float:left; padding-left:10px; padding-right:15px; background-image:url('bc_s.png'); background-repeat:no-repeat; background-position:right; color:#364D7C; } .navpath li.navelem a { height:32px; display:block; text-decoration: none; outline: none; color: #283A5D; font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); text-decoration: none; } .navpath li.navelem a:hover { color:#6884BD; } .navpath li.footer { list-style-type:none; float:right; padding-left:10px; padding-right:15px; background-image:none; background-repeat:no-repeat; background-position:right; color:#364D7C; font-size: 8pt; } div.summary { float: right; font-size: 8pt; padding-right: 5px; width: 50%; text-align: right; } div.summary a { white-space: nowrap; } div.ingroups { font-size: 8pt; width: 50%; text-align: left; } div.ingroups a { white-space: nowrap; } div.header { background-image:url('nav_h.png'); background-repeat:repeat-x; background-color: #F9FAFC; margin: 0px; border-bottom: 1px solid #C4CFE5; } div.headertitle { padding: 5px 5px 5px 10px; } dl { padding: 0 0 0 10px; } /* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ dl.section { margin-left: 0px; padding-left: 0px; } dl.note { margin-left:-7px; padding-left: 3px; border-left:4px solid; border-color: #D0C000; } dl.warning, dl.attention { margin-left:-7px; padding-left: 3px; border-left:4px solid; border-color: #FF0000; } dl.pre, dl.post, dl.invariant { margin-left:-7px; padding-left: 3px; border-left:4px solid; border-color: #00D000; } dl.deprecated { margin-left:-7px; padding-left: 3px; border-left:4px solid; border-color: #505050; } dl.todo { margin-left:-7px; padding-left: 3px; border-left:4px solid; border-color: #00C0E0; } dl.test { margin-left:-7px; padding-left: 3px; border-left:4px solid; border-color: #3030E0; } dl.bug { margin-left:-7px; padding-left: 3px; border-left:4px solid; border-color: #C08050; } dl.section dd { margin-bottom: 6px; } #projectlogo { text-align: center; vertical-align: bottom; border-collapse: separate; } #projectlogo img { border: 0px none; } #projectname { font: 300% Tahoma, Arial,sans-serif; margin: 0px; padding: 2px 0px; } #projectbrief { font: 120% Tahoma, Arial,sans-serif; margin: 0px; padding: 0px; } #projectnumber { font: 50% Tahoma, Arial,sans-serif; margin: 0px; padding: 0px; } #titlearea { padding: 0px; margin: 0px; width: 100%; border-bottom: 1px solid #5373B4; } .image { text-align: center; } .dotgraph { text-align: center; } .mscgraph { text-align: center; } .diagraph { text-align: center; } .caption { font-weight: bold; } div.zoom { border: 1px solid #90A5CE; } dl.citelist { margin-bottom:50px; } dl.citelist dt { color:#334975; float:left; font-weight:bold; margin-right:10px; padding:5px; } dl.citelist dd { margin:2px 0; padding:5px 0; } div.toc { padding: 14px 25px; background-color: #F4F6FA; border: 1px solid #D8DFEE; border-radius: 7px 7px 7px 7px; float: right; height: auto; margin: 0 20px 10px 10px; width: 200px; } div.toc li { background: url("bdwn.png") no-repeat scroll 0 5px transparent; font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; margin-top: 5px; padding-left: 10px; padding-top: 2px; } div.toc h3 { font: bold 12px/1.2 Arial,FreeSans,sans-serif; color: #4665A2; border-bottom: 0 none; margin: 0; } div.toc ul { list-style: none outside none; border: medium none; padding: 0px; } div.toc li.level1 { margin-left: 0px; } div.toc li.level2 { margin-left: 15px; } div.toc li.level3 { margin-left: 30px; } div.toc li.level4 { margin-left: 45px; } .inherit_header { font-weight: bold; color: gray; cursor: pointer; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .inherit_header td { padding: 6px 0px 2px 5px; } .inherit { display: none; } tr.heading h2 { margin-top: 12px; margin-bottom: 4px; } /* tooltip related style info */ .ttc { position: absolute; display: none; } #powerTip { cursor: default; white-space: nowrap; background-color: white; border: 1px solid gray; border-radius: 4px 4px 4px 4px; box-shadow: 1px 1px 7px gray; display: none; font-size: smaller; max-width: 80%; opacity: 0.9; padding: 1ex 1em 1em; position: absolute; z-index: 2147483647; } #powerTip div.ttdoc { color: grey; font-style: italic; } #powerTip div.ttname a { font-weight: bold; } #powerTip div.ttname { font-weight: bold; } #powerTip div.ttdeci { color: #006318; } #powerTip div { margin: 0px; padding: 0px; font: 12px/16px Roboto,sans-serif; } #powerTip:before, #powerTip:after { content: ""; position: absolute; margin: 0px; } #powerTip.n:after, #powerTip.n:before, #powerTip.s:after, #powerTip.s:before, #powerTip.w:after, #powerTip.w:before, #powerTip.e:after, #powerTip.e:before, #powerTip.ne:after, #powerTip.ne:before, #powerTip.se:after, #powerTip.se:before, #powerTip.nw:after, #powerTip.nw:before, #powerTip.sw:after, #powerTip.sw:before { border: solid transparent; content: " "; height: 0; width: 0; position: absolute; } #powerTip.n:after, #powerTip.s:after, #powerTip.w:after, #powerTip.e:after, #powerTip.nw:after, #powerTip.ne:after, #powerTip.sw:after, #powerTip.se:after { border-color: rgba(255, 255, 255, 0); } #powerTip.n:before, #powerTip.s:before, #powerTip.w:before, #powerTip.e:before, #powerTip.nw:before, #powerTip.ne:before, #powerTip.sw:before, #powerTip.se:before { border-color: rgba(128, 128, 128, 0); } #powerTip.n:after, #powerTip.n:before, #powerTip.ne:after, #powerTip.ne:before, #powerTip.nw:after, #powerTip.nw:before { top: 100%; } #powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { border-top-color: #ffffff; border-width: 10px; margin: 0px -10px; } #powerTip.n:before { border-top-color: #808080; border-width: 11px; margin: 0px -11px; } #powerTip.n:after, #powerTip.n:before { left: 50%; } #powerTip.nw:after, #powerTip.nw:before { right: 14px; } #powerTip.ne:after, #powerTip.ne:before { left: 14px; } #powerTip.s:after, #powerTip.s:before, #powerTip.se:after, #powerTip.se:before, #powerTip.sw:after, #powerTip.sw:before { bottom: 100%; } #powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { border-bottom-color: #ffffff; border-width: 10px; margin: 0px -10px; } #powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { border-bottom-color: #808080; border-width: 11px; margin: 0px -11px; } #powerTip.s:after, #powerTip.s:before { left: 50%; } #powerTip.sw:after, #powerTip.sw:before { right: 14px; } #powerTip.se:after, #powerTip.se:before { left: 14px; } #powerTip.e:after, #powerTip.e:before { left: 100%; } #powerTip.e:after { border-left-color: #ffffff; border-width: 10px; top: 50%; margin-top: -10px; } #powerTip.e:before { border-left-color: #808080; border-width: 11px; top: 50%; margin-top: -11px; } #powerTip.w:after, #powerTip.w:before { right: 100%; } #powerTip.w:after { border-right-color: #ffffff; border-width: 10px; top: 50%; margin-top: -10px; } #powerTip.w:before { border-right-color: #808080; border-width: 11px; top: 50%; margin-top: -11px; } @media print { #top { display: none; } #side-nav { display: none; } #nav-path { display: none; } body { overflow:visible; } h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } .summary { display: none; } .memitem { page-break-inside: avoid; } #doc-content { margin-left:0 !important; height:auto !important; width:auto !important; overflow:inherit; display:inline; } } ipe-7.1.10/build/doc/classipe_1_1_sub_path.html0000644000175000017500000006524012624020245021115 0ustar otfriedotfried Ipelib: ipe::SubPath Class Reference
ipe::SubPath Class Referenceabstract

#include <ipeshape.h>

Inherited by ipe::ClosedSpline, ipe::Curve, and ipe::Ellipse.

Public Types

enum  Type { ECurve, EEllipse, EClosedSpline }
 

Public Member Functions

virtual ~SubPath ()=0
 
virtual Type type () const =0
 
virtual bool closed () const
 
virtual const EllipseasEllipse () const
 
virtual const ClosedSplineasClosedSpline () const
 
virtual const CurveasCurve () const
 
virtual void save (Stream &stream) const =0
 
virtual void draw (Painter &painter) const =0
 
virtual void addToBBox (Rect &box, const Matrix &m, bool cp) const =0
 
virtual double distance (const Vector &v, const Matrix &m, double bound) const =0
 
virtual void snapVtx (const Vector &mouse, const Matrix &m, Vector &pos, double &bound, bool cp) const =0
 
virtual void snapBnd (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const =0
 

Detailed Description

A subpath of a Path.

A subpath is either open, or closed. There are two special kinds of closed subpaths, namely ellipses and closed B-splines.

Member Enumeration Documentation

The subpath types.

Enumerator
ECurve 
EEllipse 
EClosedSpline 

Constructor & Destructor Documentation

SubPath::~SubPath ( )
pure virtual

Implementation of pure virtual destructor.

Member Function Documentation

virtual Type ipe::SubPath::type ( ) const
pure virtual

Return type of this subpath.

Implemented in ipe::Curve, ipe::ClosedSpline, and ipe::Ellipse.

Referenced by ipe::Shape::isSegment().

bool SubPath::closed ( ) const
virtual

Is this subpath closed?

Default implementation returns true.

Reimplemented in ipe::Curve.

Referenced by ipe::Shape::isSegment().

const Ellipse * SubPath::asEllipse ( ) const
virtual

Return this object as an Ellipse, or 0 if it's not an ellipse.

Reimplemented in ipe::Ellipse.

const ClosedSpline * SubPath::asClosedSpline ( ) const
virtual

Return this object as an ClosedSpline, or 0 if it's not a closed spline.

Reimplemented in ipe::ClosedSpline.

const Curve * SubPath::asCurve ( ) const
virtual

Return this object as an Curve, or else 0.

Reimplemented in ipe::Curve.

Referenced by ipe::Path::draw(), ipe::Shape::isSegment(), and ipe::Shape::load().

virtual void ipe::SubPath::save ( Stream stream) const
pure virtual

Save subpath to XML stream.

Implemented in ipe::Curve, ipe::ClosedSpline, and ipe::Ellipse.

Referenced by ipe::Shape::save().

virtual void ipe::SubPath::draw ( Painter painter) const
pure virtual

Draw subpath (does not call drawPath()).

Implemented in ipe::Curve, ipe::ClosedSpline, and ipe::Ellipse.

Referenced by ipe::Shape::draw().

virtual void ipe::SubPath::addToBBox ( Rect box,
const Matrix m,
bool  cp 
) const
pure virtual

Add subpath to box.

Implemented in ipe::Curve, ipe::ClosedSpline, and ipe::Ellipse.

Referenced by ipe::Shape::addToBBox().

virtual double ipe::SubPath::distance ( const Vector v,
const Matrix m,
double  bound 
) const
pure virtual

Return distance from v to subpath transformed by m.

Implemented in ipe::Curve, ipe::ClosedSpline, and ipe::Ellipse.

Referenced by ipe::Shape::distance().

virtual void ipe::SubPath::snapVtx ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound,
bool  cp 
) const
pure virtual

Snap to vertex.

Implemented in ipe::Curve, ipe::ClosedSpline, and ipe::Ellipse.

Referenced by ipe::Shape::snapVtx().

virtual void ipe::SubPath::snapBnd ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
pure virtual

Snap to boundary of subpath.

Implemented in ipe::Curve, ipe::ClosedSpline, and ipe::Ellipse.

Referenced by ipe::Shape::snapBnd().


The documentation for this class was generated from the following files:
  • ipeshape.h
  • ipeshape.cpp

ipe-7.1.10/build/doc/classipe_1_1_pdf_string-members.html0000644000175000017500000001361512624020245023076 0ustar otfriedotfried Ipelib: Member List
ipe::PdfString Member List

This is the complete list of members for ipe::PdfString, including all inherited members.

array() const ipe::PdfObjvirtual
boolean() const ipe::PdfObjvirtual
dict() const ipe::PdfObjvirtual
name() const ipe::PdfObjvirtual
null() const ipe::PdfObjvirtual
number() const ipe::PdfObjvirtual
PdfString(const String &val)ipe::PdfStringinlineexplicit
ref() const ipe::PdfObjvirtual
repr() const ipe::PdfObj
string() const ipe::PdfStringvirtual
value() const ipe::PdfStringinline
write(Stream &stream) const ipe::PdfStringvirtual
~PdfObj()=0ipe::PdfObjpure virtual

ipe-7.1.10/build/doc/functions_enum.html0000644000175000017500000001060712624020245020016 0ustar otfriedotfried Ipelib: Class Members - Enumerations
 

ipe-7.1.10/build/doc/structipe_1_1_canvas_base_1_1_style-members.html0000644000175000017500000001153712624020245025304 0ustar otfriedotfried Ipelib: Member List
ipe::CanvasBase::Style Member List

ipe-7.1.10/build/doc/classipe_1_1_reference.html0000644000175000017500000023454212624020245021251 0ustar otfriedotfried Ipelib: ipe::Reference Class Reference

#include <ipereference.h>

Inherits ipe::Object.

Public Types

enum  {
  EHasStroke = 0x001, EHasFill = 0x002, EHasPen = 0x004, EHasSize = 0x008,
  EIsMark = 0x010, EIsArrow = 0x020
}
 
- Public Types inherited from ipe::Object
enum  Type {
  EGroup, EPath, EText, EImage,
  EReference
}
 

Public Member Functions

 Reference (const AllAttributes &attr, Attribute name, Vector pos)
 
 Reference (const XmlAttributes &attr, String data)
 
virtual Objectclone () const
 
virtual ReferenceasReference ()
 
virtual Type type () const
 
virtual void accept (Visitor &visitor) const
 
virtual void saveAsXml (Stream &stream, String layer) const
 
virtual void draw (Painter &painter) const
 
virtual void drawSimple (Painter &painter) const
 
virtual void addToBBox (Rect &box, const Matrix &m, bool cp) const
 
virtual double distance (const Vector &v, const Matrix &m, double bound) const
 
virtual void snapVtx (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
virtual void snapBnd (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 
virtual void checkStyle (const Cascade *sheet, AttributeSeq &seq) const
 
void setName (Attribute name)
 
Attribute name () const
 
void setStroke (Attribute color)
 
Attribute stroke () const
 
void setFill (Attribute color)
 
Attribute fill () const
 
Attribute pen () const
 
void setPen (Attribute pen)
 
void setSize (Attribute size)
 
Attribute size () const
 
Vector position () const
 
virtual bool setAttribute (Property prop, Attribute value)
 
virtual Attribute getAttribute (Property prop)
 
uint flags () const
 
- Public Member Functions inherited from ipe::Object
virtual ~Object ()=0
 
virtual GroupasGroup ()
 
virtual TextasText ()
 
virtual PathasPath ()
 
virtual ImageasImage ()
 
virtual TPinned pinned () const
 
void setPinned (TPinned pin)
 
TTransformations transformations () const
 
void setTransformations (TTransformations trans)
 
void setMatrix (const Matrix &matrix)
 
const Matrixmatrix () const
 
virtual void snapCtl (const Vector &mouse, const Matrix &m, Vector &pos, double &bound) const
 

Static Public Member Functions

static uint flagsFromName (String name)
 

Additional Inherited Members

- Protected Member Functions inherited from ipe::Object
 Object ()
 
 Object (const AllAttributes &attr)
 
 Object (const Object &rhs)
 
 Object (const XmlAttributes &attr)
 
void saveAttributesAsXml (Stream &stream, String layer) const
 
- Static Protected Member Functions inherited from ipe::Object
static void checkSymbol (Kind kind, Attribute attr, const Cascade *sheet, AttributeSeq &seq)
 
- Protected Attributes inherited from ipe::Object
Matrix iMatrix
 
TPinned iPinned: 8
 
TTransformations iTransformations: 8
 

Detailed Description

The reference object.

A Reference uses a symbol, that is, an object defined in an Ipe StyleSheet. The object is defined as a named symbol in the style sheet, and can be reused arbitrarily often in the document. This can, for instance, be used for backgrounds on multi-page documents.

It is admissible to refer to an undefined object (that is, the current style sheet cascade does not define a symbol with the given name). Nothing will be drawn in this case.

The Reference has a stroke, fill, and pen attribute. When drawing a symbol, these attributes are made available to the symbol through the names "sym-stroke", "sym-fill", and "sym-pen". These are not defined by the style sheet, but resolved by the Painter when the symbol sets its attributes.

Note that it is not possible to determine whether a symbol is filled from the Reference object.

The size attribute is of type ESymbolSize, and indicates a magnification factor applied to the symbol. This magnification is applied after the untransformation indicated in the Reference and in the Symbol has been performed, so that symbols are magnified even if they specify ETransformationsTranslations.

The size is meant for symbols such as marks, that can be shown in different sizes. Another application of symbols is for backgrounds and logos. Their size should not be changed when the user changes the symbolsize for the entire page. For such symbols, the size attribute of the Reference should be set to the absolute value zero. This means that no magnification is applied to the object, and it also stops setAttribute() from modifying the size. (The size can still be changed using setSize(), but this is not available from Lua.)

Member Enumeration Documentation

anonymous enum
Enumerator
EHasStroke 
EHasFill 
EHasPen 
EHasSize 
EIsMark 
EIsArrow 

Constructor & Destructor Documentation

Reference::Reference ( const AllAttributes attr,
Attribute  name,
Vector  pos 
)
explicit

Create a reference to the named object in stylesheet.

Referenced by clone().

Member Function Documentation

Object * Reference::clone ( ) const
virtual

Clone object.

Implements ipe::Object.

References Reference().

Reference * Reference::asReference ( )
virtual

Return pointer to this object.

Reimplemented from ipe::Object.

Object::Type Reference::type ( ) const
virtual

Implements ipe::Object.

References ipe::Object::EReference.

void Reference::accept ( Visitor visitor) const
virtual

Call visitReference of visitor.

Implements ipe::Object.

References ipe::Visitor::visitReference().

void Reference::saveAsXml ( Stream stream,
String  layer 
) const
virtual
void Reference::addToBBox ( Rect box,
const Matrix m,
bool  cp 
) const
virtual

Extend box to include the object transformed by m.

For objects in a page, don't call this directly. The Page caches the bounding box of each object, so it is far more efficient to call Page::bbox.

Control points that lie outside the visual object are included if cp is true.

If called with an empty box and cp == false, the result of this function is a tight bounding box for the object, with a little leeway in case the boundary is determined by a spline (it has to be approximated to perform this operation).

This only adds the position to the box.

Implements ipe::Object.

References ipe::Rect::addPoint(), and ipe::Object::matrix().

double Reference::distance ( const Vector v,
const Matrix m,
double  bound 
) const
virtual

Return distance of transformed object to point v. If larger than bound, can just return bound.

Implements ipe::Object.

References ipe::Object::matrix().

void Reference::snapVtx ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
virtual

Compute vertex snapping position for transformed object.

Looks only for positions closer than bound. If successful, modify pos and bound. The default implementation does nothing.

Reimplemented from ipe::Object.

References ipe::Object::matrix().

void Reference::snapBnd ( const Vector mouse,
const Matrix m,
Vector pos,
double &  bound 
) const
virtual

Compute boundary snapping position for transformed object.

Looks only for positions closer than bound. If successful, modify pos and bound. The default implementation does nothing.

Reimplemented from ipe::Object.

void Reference::checkStyle ( const Cascade sheet,
AttributeSeq seq 
) const
virtual

Check all symbolic attributes.

Reimplemented from ipe::Object.

References ipe::Object::checkSymbol(), ipe::EColor, EHasFill, ipe::EPen, ipe::ESymbolSize, and ipe::Cascade::findSymbol().

void Reference::setName ( Attribute  name)

Set name of symbol referenced.

References flagsFromName(), name(), and ipe::Attribute::string().

Referenced by setAttribute().

Attribute ipe::Reference::name ( ) const
inline

Return symbolic name.

Referenced by getAttribute(), setAttribute(), and setName().

void Reference::setStroke ( Attribute  color)

Set stroke color.

Referenced by setAttribute().

Attribute ipe::Reference::stroke ( ) const
inline

Return stroke color.

Referenced by getAttribute(), and setAttribute().

void Reference::setFill ( Attribute  color)

Set fill color.

Referenced by setAttribute().

Attribute ipe::Reference::fill ( ) const
inline

Return fill color.

Referenced by getAttribute(), and setAttribute().

Attribute ipe::Reference::pen ( ) const
inline

Return pen.

Referenced by getAttribute(), setAttribute(), and setPen().

void Reference::setPen ( Attribute  pen)

Set pen.

References pen().

Referenced by setAttribute().

void Reference::setSize ( Attribute  size)

Set size (magnification) of symbol.

References size().

Referenced by setAttribute().

Attribute ipe::Reference::size ( ) const
inline

Return symbol size.

Referenced by drawSimple(), getAttribute(), setAttribute(), and setSize().

Vector ipe::Reference::position ( ) const
inline

Return position of symbol on page.

bool Reference::setAttribute ( Property  prop,
Attribute  value 
)
virtual

Set an attribute on this object.

Returns true if an attribute was actually changed.

Reimplemented from ipe::Object.

References EHasFill, EIsMark, ipe::EPropFillColor, ipe::EPropMarkShape, ipe::EPropPen, ipe::EPropStrokeColor, ipe::EPropSymbolSize, fill(), name(), pen(), ipe::Object::setAttribute(), setFill(), setName(), setPen(), setSize(), setStroke(), size(), and stroke().

Attribute Reference::getAttribute ( Property  prop)
virtual

Get setting of an attribute of this object.

If object does not have this attribute, returnes "undefined" attribute.

Reimplemented from ipe::Object.

References EHasFill, EIsMark, ipe::EPropFillColor, ipe::EPropMarkShape, ipe::EPropPen, ipe::EPropStrokeColor, ipe::EPropSymbolSize, fill(), ipe::Object::getAttribute(), name(), pen(), size(), and stroke().

uint ipe::Reference::flags ( ) const
inline

Referenced by flagsFromName().


The documentation for this class was generated from the following files:
  • ipereference.h
  • ipereference.cpp

ipe-7.1.10/build/doc/bdwn.png0000644000175000017500000000022312624020245015525 0ustar otfriedotfried‰PNG  IHDR5åZIDATxíË € DŸP–1ñlžmÀ r±j².e è†D[ØÉ¾ÙÏÔ¼µ¦ã´Þ|陣6€Všë3´Å?Ls'(}¬>+ žKó÷¥¿ch`‚ ^׃ÞnIEND®B`‚ipe-7.1.10/build/doc/structipe_1_1_select_tool_1_1_s_obj.html0000644000175000017500000001045412624020245023654 0ustar otfriedotfried Ipelib: ipe::SelectTool::SObj Struct Reference
ipe::SelectTool::SObj Struct Reference

#include <ipetool.h>

Public Attributes

int index
 
double distance
 

Member Data Documentation

int ipe::SelectTool::SObj::index
double ipe::SelectTool::SObj::distance

The documentation for this struct was generated from the following file:
  • ipetool.h

ipe-7.1.10/build/doc/open.png0000644000175000017500000000017312624020245015540 0ustar otfriedotfried‰PNG  IHDR à‘BIDATxíÝÁ €0 Ð׬ՙ\Àº€39—b!©9{|ðI>$#Àß´ý8/¨ÄØzƒ/Ï>2À[ÎgiU,/¬~¼Ï\ Ä9Ù¸IEND®B`‚ipe-7.1.10/build/doc/functions_func_b.html0000644000175000017500000001700212624020245020302 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- b -


ipe-7.1.10/build/doc/classipe_1_1_snap.html0000644000175000017500000007777212624020245020266 0ustar otfriedotfried Ipelib: ipe::Snap Class Reference

#include <ipesnap.h>

Public Types

enum  TSnapModes {
  ESnapNone = 0, ESnapVtx = 1, ESnapCtl = 2, ESnapBd = 4,
  ESnapInt = 8, ESnapGrid = 0x10, ESnapAngle = 0x20, ESnapAuto = 0x40
}
 

Public Member Functions

void intersectionSnap (const Vector &pos, Vector &fifi, const Page *page, double &snapDist) const
 
bool snapAngularIntersection (Vector &pos, const Line &l, const Page *page, double snapDist) const
 
TSnapModes simpleSnap (Vector &pos, const Page *page, double snapDist, Tool *tool=0) const
 
TSnapModes snap (Vector &pos, const Page *page, double snapDist, Tool *tool=0, Vector *autoOrg=0) const
 
Line getLine (const Vector &mouse, const Vector &base) const
 
bool setEdge (const Vector &pos, const Page *page)
 

Public Attributes

int iSnap
 
bool iGridVisible
 
int iGridSize
 
double iAngleSize
 
int iSnapDistance
 
bool iWithAxes
 
Vector iOrigin
 
Angle iDir
 

Detailed Description

Performs snapping operations, and stores snapping state.

Member Enumeration Documentation

The different snap modes as bitmasks.

Enumerator
ESnapNone 
ESnapVtx 
ESnapCtl 
ESnapBd 
ESnapInt 
ESnapGrid 
ESnapAngle 
ESnapAuto 

Member Function Documentation

void Snap::intersectionSnap ( const Vector pos,
Vector fifi,
const Page page,
double &  snapDist 
) const

Perform intersection snapping.

Referenced by simpleSnap().

bool Snap::snapAngularIntersection ( Vector pos,
const Line l,
const Page page,
double  snapDist 
) const

Perform snapping to intersection of angular line and pos.

Referenced by snap().

Snap::TSnapModes Snap::simpleSnap ( Vector pos,
const Page page,
double  snapDist,
Tool tool = 0 
) const

Tries vertex, intersection, boundary, and grid snapping.

If snapping occurred, pos is set to the new user space position.

References ipe::Page::count(), ESnapBd, ESnapCtl, ESnapGrid, ESnapInt, ESnapNone, ESnapVtx, ipe::Page::hasSnapping(), iGridSize, intersectionSnap(), iSnap, ipe::Page::layerOf(), ipe::Page::snapBnd(), ipe::Page::snapCtl(), ipe::Tool::snapVtx(), ipe::Page::snapVtx(), ipe::Vector::x, and ipe::Vector::y.

Referenced by ipe::CanvasBase::simpleSnapPos(), and snap().

Snap::TSnapModes Snap::snap ( Vector pos,
const Page page,
double  snapDist,
Tool tool = 0,
Vector autoOrg = 0 
) const

Performs snapping of position pos.

Returns true if snapping occurred. In that case pos is set to the new user space position.

Automatic angular snapping occurs if autoOrg is not null — the value is then used as the origin for automatic angular snapping.

References ESnapAngle, ESnapAuto, ESnapBd, getLine(), ipe::Line::intersects(), iOrigin, iSnap, ipe::Line::project(), simpleSnap(), snapAngularIntersection(), and ipe::Vector::sqLen().

Referenced by ipe::CanvasBase::computeFifi().

Line Snap::getLine ( const Vector mouse,
const Vector base 
) const

Find line through base with slope determined by angular snap size and direction.

References ipe::Vector::angle(), iAngleSize, iDir, ipe::Vector::len(), and ipe::Angle::normalize().

Referenced by snap().

bool Snap::setEdge ( const Vector pos,
const Page page 
)

Member Data Documentation

int ipe::Snap::iSnap

Activated snapping modes (TSnapModes)

Referenced by ipe::CanvasBase::computeFifi(), simpleSnap(), snap(), and ipe::CanvasBase::snapToPaperAndFrame().

bool ipe::Snap::iGridVisible

Is the grid visible?

Referenced by ipe::CanvasBase::refreshSurface().

int ipe::Snap::iGridSize

Snap grid spacing.

Referenced by ipe::CanvasBase::drawGrid(), and simpleSnap().

double ipe::Snap::iAngleSize

Angle for angular snapping.

Referenced by ipe::CanvasBase::drawAxes(), and getLine().

int ipe::Snap::iSnapDistance
bool ipe::Snap::iWithAxes

Show coordinate system?

Referenced by ipe::CanvasBase::refreshSurface(), and ipe::TransformTool::TransformTool().

Vector ipe::Snap::iOrigin

Origin of coordinate system.

Referenced by ipe::CanvasBase::drawAxes(), setEdge(), snap(), and ipe::TransformTool::TransformTool().

Angle ipe::Snap::iDir

Direction of x-axis.

Referenced by ipe::CanvasBase::drawAxes(), getLine(), and setEdge().


The documentation for this class was generated from the following files:
  • ipesnap.h
  • ipesnap.cpp

ipe-7.1.10/build/doc/classipe_1_1_cairo_painter-members.html0000644000175000017500000005524012624020245023556 0ustar otfriedotfried Ipelib: Member List
ipe::CairoPainter Member List

This is the complete list of members for ipe::CairoPainter, including all inherited members.

addClipPath()ipe::Painter
CairoPainter(const Cascade *sheet, Fonts *fonts, cairo_t *cc, double zoom, bool pretty)ipe::CairoPainter
cascade() const ipe::Painterinline
closePath()ipe::Painter
curveTo(const Vector &v1, const Vector &v2, const Vector &v3)ipe::Painter
curveTo(const Bezier &bezier)ipe::Painterinline
dashStyle() const ipe::Painterinline
dashStyle(std::vector< double > &dashes, double &offset) const ipe::Painter
doAddClipPath()ipe::CairoPainterprotectedvirtual
doClosePath()ipe::CairoPainterprotectedvirtual
doCurveTo(const Vector &v1, const Vector &v2, const Vector &v3)ipe::CairoPainterprotectedvirtual
doDrawArc(const Arc &arc)ipe::CairoPainterprotectedvirtual
doDrawBitmap(Bitmap bitmap)ipe::CairoPainterprotectedvirtual
doDrawPath(TPathMode mode)ipe::CairoPainterprotectedvirtual
doDrawSymbol(Attribute symbol)ipe::Painterprotectedvirtual
doDrawText(const Text *text)ipe::CairoPainterprotectedvirtual
doLineTo(const Vector &v)ipe::CairoPainterprotectedvirtual
doMoveTo(const Vector &v)ipe::CairoPainterprotectedvirtual
doNewPath()ipe::Painterprotectedvirtual
doPop()ipe::CairoPainterprotectedvirtual
doPush()ipe::CairoPainterprotectedvirtual
drawArc(const Arc &arc)ipe::Painter
drawArcAsBezier(double alpha)ipe::Painterprotected
drawBitmap(Bitmap bitmap)ipe::Painter
drawEllipse()ipe::Painter
drawPath(TPathMode mode)ipe::Painter
drawSymbol(Attribute symbol)ipe::Painter
drawText(const Text *text)ipe::Painter
fill() const ipe::Painterinline
fillRule() const ipe::Painterinline
gradient() const ipe::Painterinline
iCascadeipe::Painterprotected
iInPathipe::Painterprotected
iMatrixipe::Painterprotected
iStateipe::Painterprotected
lineCap() const ipe::Painterinline
lineJoin() const ipe::Painterinline
lineTo(const Vector &v)ipe::Painter
matrix() const ipe::Painterinline
moveTo(const Vector &v)ipe::Painter
newPath()ipe::Painter
opacity() const ipe::Painterinline
Painter(const Cascade *style)ipe::Painter
pen() const ipe::Painterinline
pop()ipe::Painter
popMatrix()ipe::Painter
push()ipe::Painter
pushMatrix()ipe::Painter
rect(const Rect &re)ipe::Painter
setDashStyle(Attribute dash)ipe::Painter
setDimmed(bool dim)ipe::CairoPainterinline
setFill(Attribute color)ipe::Painter
setFillRule(TFillRule rule)ipe::Painter
setGradient(Attribute grad)ipe::Painter
setLineCap(TLineCap cap)ipe::Painter
setLineJoin(TLineJoin join)ipe::Painter
setOpacity(Attribute opaq)ipe::Painter
setPen(Attribute pen)ipe::Painter
setStroke(Attribute color)ipe::Painter
setSymFill(Attribute color)ipe::Painter
setSymPen(Attribute wid)ipe::Painter
setSymStroke(Attribute color)ipe::Painter
setTiling(Attribute til)ipe::Painter
stroke() const ipe::Painterinline
symFill() const ipe::Painterinline
symPen() const ipe::Painterinline
symStroke() const ipe::Painterinline
tiling() const ipe::Painterinline
transform(const Matrix &m)ipe::Painter
translate(const Vector &v)ipe::Painter
untransform(TTransformations trans)ipe::Painter
~CairoPainter()ipe::CairoPainterinlinevirtual
~Painter()ipe::Paintervirtual

ipe-7.1.10/build/doc/classipe_1_1_object_factory.html0000644000175000017500000001627612624020245022312 0ustar otfriedotfried Ipelib: ipe::ObjectFactory Class Reference

#include <ipefactory.h>

Static Public Member Functions

static ObjectcreateObject (String name, const XmlAttributes &attr, String data)
 
static ObjectcreateImage (String name, const XmlAttributes &attr, Bitmap bitmap)
 

Detailed Description

Factory for Ipe leaf objects.

Member Function Documentation

Object * ObjectFactory::createObject ( String  name,
const XmlAttributes attr,
String  data 
)
static

Create an Ipe object by calling the right constructor.

Referenced by ipe::ImlParser::parseObject().

Object * ObjectFactory::createImage ( String  name,
const XmlAttributes attr,
Bitmap  bitmap 
)
static

Create an Image with a given bitmap.

Referenced by ipe::ImlParser::parseObject().


The documentation for this class was generated from the following files:
  • ipefactory.h
  • ipefactory.cpp

ipe-7.1.10/build/doc/functions_func_d.html0000644000175000017500000004423612624020245020315 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- d -


ipe-7.1.10/build/doc/example2.svg0000644000175000017500000003067312624020245016337 0ustar otfriedotfried ipe-7.1.10/build/doc/classipe_1_1_xml_parser.html0000644000175000017500000006610312624020245021463 0ustar otfriedotfried Ipelib: ipe::XmlParser Class Reference

#include <ipexml.h>

Inherited by FontmapParser, and ipe::ImlParser.

Public Member Functions

 XmlParser (DataSource &source)
 
virtual ~XmlParser ()
 
int parsePosition () const
 
String parseToTag ()
 
bool parseAttributes (XmlAttributes &attr, bool qm=false)
 
bool parsePCDATA (String tag, String &pcdata)
 
bool isTagChar (int ch)
 
void getChar ()
 
bool eos ()
 
void skipWhitespace ()
 

Protected Member Functions

String parseToTagX ()
 

Protected Attributes

DataSourceiSource
 
String iTopElement
 
int iCh
 
int iPos
 

Detailed Description

Base class for XML stream parsing.

This is the base class for Ipe's XML parser. It only provides some utility functions for parsing tags and PCDATA. Derived classes implement the actual parsing using recursive descent parsers—after experimenting with various schemes for XML parsing, this seems to work best for Ipe.

Tag names and attribute names must consist of ASCII letters only. Only entities for '&', '<', and '>' are recognized.

Constructor & Destructor Documentation

XmlParser::XmlParser ( DataSource source)

Construct with a data source.

XmlParser::~XmlParser ( )
virtual

Virtual destructor, so one can destroy through pointer.

Member Function Documentation

int ipe::XmlParser::parsePosition ( ) const
inline

References iPos.

String XmlParser::parseToTag ( )

Parse whitespace and the name of a tag.

Like ParseToTagX, but silently skips over all tags whose name starts with "x-"

References parseAttributes(), parseToTagX(), and ipe::String::size().

Referenced by ipe::ImlParser::parseDocument(), ipe::ImlParser::parseObject(), ipe::ImlParser::parsePage(), ipe::ImlParser::parsePageSelection(), ipe::ImlParser::parseStyle(), and ipe::ImlParser::parseStyleSheet().

bool XmlParser::parseAttributes ( XmlAttributes attr,
bool  qm = false 
)

Parse XML attributes.

Returns with stream just after >. Caller can check whether the tag ended with a / by checking attr.slash().

Set qm to true to allow a question mark just before the >.

References ipe::XmlAttributes::add(), ipe::XmlAttributes::clear(), ipe::String::empty(), eos(), getChar(), iCh, isTagChar(), ipe::XmlAttributes::setSlash(), and skipWhitespace().

Referenced by ipe::ImlParser::parseBitmap(), ipe::ImlParser::parseDocument(), ipe::ImlParser::parseObject(), ipe::ImlParser::parsePage(), ipe::ImlParser::parsePageSelection(), ipe::ImlParser::parseStyle(), ipe::ImlParser::parseStyleSheet(), and parseToTag().

bool XmlParser::parsePCDATA ( String  tag,
String pcdata 
)

Parse PCDATA.

Checks whether the data is terminated by </tag>, and returns with stream past the >.

References eos(), getChar(), iCh, ipe::String::size(), and skipWhitespace().

Referenced by ipe::ImlParser::parseBitmap(), ipe::ImlParser::parseDocument(), ipe::ImlParser::parseObject(), ipe::ImlParser::parsePage(), and ipe::ImlParser::parseStyle().

bool ipe::XmlParser::isTagChar ( int  ch)
inline

Referenced by parseAttributes(), and parseToTagX().

void ipe::XmlParser::getChar ( )
inline
bool ipe::XmlParser::eos ( )
inline
void XmlParser::skipWhitespace ( )

References eos(), getChar(), and iCh.

Referenced by parseAttributes(), parsePCDATA(), and parseToTagX().

String XmlParser::parseToTagX ( )
protected

Parse whitespace and the name of a tag.

If the tag is a closing tag, skips > and returns with stream after that. Otherwise, returns with stream just after the tag name.

Comments and <!TAG .. > are skipped silently.

References eos(), getChar(), iCh, isTagChar(), and skipWhitespace().

Referenced by parseToTag().

Member Data Documentation

DataSource& ipe::XmlParser::iSource
protected

Referenced by getChar().

String ipe::XmlParser::iTopElement
protected
int ipe::XmlParser::iCh
protected
int ipe::XmlParser::iPos
protected

Referenced by getChar(), and parsePosition().


The documentation for this class was generated from the following files:
  • ipexml.h
  • ipexml.cpp

ipe-7.1.10/build/doc/manual_38.html0000644000175000017500000001120512624020245016544 0ustar otfriedotfried Ipe Manual -- 8.4 Unicode text
8.5 Customizing Ipe8 Advanced topics8.3 Troubleshooting the LaTeX-conversion8.4 Unicode text

8.4 Unicode text

If you make figures containing text objects in languages other than English, you will need to enter accented characters, or characters from other scripts such as Greek, Hangul, Kana, or Chinese characters. Of course you can still use the LaTeX syntax K\"onig to enter the German word "König", but for larger runs of text it's more convenient to enter text in a script supported by your system. When Ipe writes the Pdflatex source file, it writes the text in UTF-8 encoded Unicode. You only have to make sure that Pdflatex can handle this file.

An easy solution, sufficient for German, French, and other languages for which support is already in a standard LaTeX-setup, is to add the line

\usepackage[utf8]{inputenc}
in your Latex preamble (set in the Document properties dialog, available on the Edit menu).

When setting this up, you have to keep in mind that Ipe can only handle scalable fonts, such as Postscript Type1 fonts. You'll have to choose a setup that uses such scalable fonts.

For instance, to use UTF-8 encoded Russian in LaTeX, it is sufficient to put this in the preamble:

\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
However, this will not work with Ipe: This setup uses Metafont fonts, which are included in the PDF output as bitmaps, and Ipe cannot use these fonts. In this case the solution is to install the PsCyr package, and the following preamble:
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\usepackage{pscyr}

For some languages a LaTeX-setup is available that does not support UTF-8. For instance, Korean Hangul can be typeset using the hfont package, but this requires that the input file is encoded in the EUC-KR encoding. Ipe can convert the LaTeX source to a desired encoding if this is specified in a style sheet. For instance, the following style sheet would enable the use of Korean in the Ipe document:

<ipestyle name="hangul">
<preamble encoding="euc-kr">
\usepackage{hfont}
</preamble>
</ipestyle>
ipe-7.1.10/build/doc/manual_50.html0000644000175000017500000002663012624020245016546 0ustar otfriedotfried Ipe Manual -- 13 History and acknowledgments
14 CopyrightTop12 Command line options and environment variables13 History and acknowledgments

13 History and acknowledgments

The name "Ipe" is older than the program itself. When I made figures for my papers using Idraw in 1992, I was annoyed that I had to store two versions of each figure: one with Latex text, one with Postscript information. I came up with a file format that I called "Ipe", for "Integrated Picture Environment", and which was at the same time legal Latex source code and a legal Postscript file.

When I wrote the first version of Ipe at Utrecht University in the summer of 1993, it created this file format directly, and inherited the name. The first versions of Ipe (Ipe 2.0 up to 4.1) were based on my experiences with Idraw, XFig, and Jean-Pierre Merlet's JPDraw, used IRIS-GL and Mark Overmars' FORMS library, and run on SGI workstations only.

Due to popular demand, I spent two weeks in the summer of 1994 to teach myself Motif and to rewrite Ipe to run under the X window system. Unfortunately, two weeks were really not enough, and the 1994 X-version of Ipe was somewhat of a hack. I didn't have time to port the code that displayed bitmaps on the screen, it crashed on both monochrome and truecolor (24-bit) displays, and was in general quite unmaintainable.

These versions of Ipe were supported by the Netherlands' Organization for Scientific Research (NWO), and I would never have started working on it without Geert-Jan Giezeman's PLAGEO library. For testing, support, and inspiration in that original period, I'm grateful to Mark de Berg, Maarten Pennings, Jules Vleugels, Vincenzo Ferrucci, and Anil Rao. Many students of the department at Utrecht University served as alpha-testers (who apparently referred to Ipe as "the cute little core-dumper").

I gave a presentation about Ipe at the Dagstuhl Workshop on Computational Geometry in 1995, and made a poster presentation at the ACM Symposium on Computational Geometry in Vancouver in the same year. Both served to create a small but faithful community of Ipe addicts within the Computational Geometry community.

Ipe proved itself invaluable to me over the years, especially when we used it to make all the illustrations in our book "Computational Geometry: Theory and Applications" (Springer 1997, with Mark de Berg, Marc van Kreveld, and Mark Overmars). Nevertheless, the problems were undeniable: It was hard to compile Ipe on other C++ compilers and it only worked on 8-bit displays. It was only due to the efforts of Ipe fans such as Tycho Strijk, Robert-Paul Berretty, Alexander Wolff, and Sariel Har-Peled that the 1994 version of Ipe continued to be used until 2003.

I was teaching myself C++ while writing the first version of Ipe, and it showed—Ipe 5 was full of elementary object-oriented design mistakes. When teaching C++ to second-year students at Postech in 1996 I started to think about a clean rewrite of Ipe. My first notes on such a rewrite stem from evenings spent at a hotel in Machida, close to IBM Tokyo in July 1996 (the idea at that time was to embed Ipe into Emacs!). It proved impossible, though, to do a full rewrite next to teaching and research, and nothing really happened until the Dagstuhl Workshop on Computational Geometry in 2001, where Christian Knauer explained to me how to use Pdflatex to create presentations. I realized that PDF was ideally suited for a new version of Ipe.

Ipe 5 figures were at the same time Latex and Postscript files, and required special handling to be included into Latex documents, which sometimes required a bit of explaining when talking to co-authors or publishers. While editing a figure, Ipe 5 kept a Ghostscript window open that would show what the figure looked like after processing by Latex.

Several developments that had happened between 1993 and 2001 allowed me to use a completely new approach: First, Hàn Thê Thàn's Pdflatex takes Latex source and directly produces a PDF file with a PDF representation of the text and all necessary fonts. Second, Derek Noonburg's Xpdf contained an open-source PDF parser that I could use to parse this PDF representation and to extract the processed text and fonts. Third, all relevant Latex fonts are now available as scalable Type1 fonts, and so it is possible to embed Latex text and formulas in figures that may still need to be scaled later. Finally, the Ghostscript window was no longer necessary as Ipe could use the beautiful Freetype library to directly display the text on-screen as it will appear on paper.

Directly after the Dagstuhl workshop I implemented a proof-of-concept: I defined the Ipe XML format (there was no question that Ipe 6 would have to be able to communicate in XML, of course), wrote "ipe5toxml" (reusing my old Ipe parsing code) and a program that runs Pdflatex, parses its PDF output, extracts text objects and font data, and creates a PDF file for the whole Ipe figure.

All that remained to be done was to rewrite the user interface. Mark de Berg and the TU Eindhoven made it possible for me to take some time off from teaching and research. The final design changes were made during the Second McGill-INRIA Workshop on Computational Geometry in Computer Graphics at McGill's Bellairs Research Institute in February 2003, and much inspiration was due to the atmosphere at the workshop and the magnificient cooking by Gwen, Bellair's chef. An early preview of Ipe 6.0 was "formally" released at the Dagstuhl Workshop on Computational Geometry in March 2003, to celebrate the Dagstuhl influence on Ipe.

Other than the file format, there weren't really that many changes to Ipe's functionality between Ipe 5 and Ipe 6. René van Oostrum insisted that no self-respecting drawing program can do without style sheets and layers. Views allow you to incrementally build up a page in a PDF presentation.

I also revised the interface to ipelets (which used to be called "Iums" in the good old days when people still thought that "applets" were small apples)—it is now based on dynamically loaded libraries (a technology that was still somewhat poorly understood in the early nineties, at least by me).

And, of course, there was a Windows version of Ipe 6. Who would have thought that ten years earlier!

There were many releases of Ipe 6.0, all of them called "previews", because I never considered that I had reached a stable state. A number of experimental features were tried and either built into Ipe or discarded. Ipe 6 migrated from Qt 2 and Qt 3 to Qt 4, a somewhat painful process due to a number of annyoing Qt bugs that cost me a lot of time.

When in 2007 I discovered the fantastic Cairo library for rendering, I immediately decided to switch Ipe to use this: a small dedicated library with a nice API to do the rendering, instead of the buggy monster that was Qt. The Cairo API fit Ipe so well that I could write a Cairo painter for Ipe in an hour or so. Cairo supports Freetype directly, instead of Ipe having to render each glyph into a bitmap that is then blit onto the canvas.

I made the huge mistake of announcing on the Ipe discussion list that Ipe 6.0 preview 28 was the last version of Ipe 6, and that there would soon be a new version, Ipe 7. I should have known that this was impossible during a time where I advised several graduate students, taught several new courses, and went through the tenure process. I had to release several bugfix releases of Ipe 6 while really wanting to work on Ipe 7.

However, the delay left me with enough time to carefully think about another change I wanted to make: It would be nice if Ipe embedded a scripting language that could be used to write simple ipelets without compilation. I looked at Scheme/Guile, Python, and Lua, and finally decided for Lua: a small, elegant, stable language with a tiny footprint, easily embedded with a very nice C interface.

In 2009, I had my first sabbatical ever, which I spent in the group of Ulrik Brandes at the University of Konstanz. Here I finally had the time to work on Ipe 7, and I'm very grateful to Ulrik and all members of his group for the wonderful time I had in Konstanz. Next to the two big changes mentioned above, Ipe 7 introduced tiling patterns, gradients, clipping paths, transparency, user-definable arrows and marks, and SVG output.

I wanted to avoid Qt in Ipe 7 as it had caused me quite a bit of pain during the life of Ipe 6, but it was hard to find a good replacement that would allow Ipe to run on Linux, Windows, and Macs. During the Korean Workshop on Computational Geometry organized by Tetsuo Asano at Hakusan seminar house in June 2009, I discussed using Ipe on tablet PCs with Vida Dujmovic, Jit Bose, and Stefan Langerman. It is their fault that Ipe 7 comes with a tablet input tool, and finally Stefan and Sébastien Collette convinced me that there isn't really an alternative to Qt that has the same support for tablets and Macs. So Ipe 7 is still using Qt, but in a much more restricted way than before, and hopefully much less sensitive to bugs in Qt.

ipe-7.1.10/build/doc/classipe_1_1_string_stream.html0000644000175000017500000003631112624020245022166 0ustar otfriedotfried Ipelib: ipe::StringStream Class Reference
ipe::StringStream Class Reference

#include <ipebase.h>

Inherits ipe::TellStream.

Public Member Functions

 StringStream (String &string)
 
virtual void putChar (char ch)
 
virtual void putString (String s)
 
virtual void putCString (const char *s)
 
virtual void putRaw (const char *data, int size)
 
virtual long tell () const
 
- Public Member Functions inherited from ipe::Stream
virtual ~Stream ()
 
virtual void close ()
 
Streamoperator<< (char ch)
 
Streamoperator<< (const String &s)
 
Streamoperator<< (const char *s)
 
Streamoperator<< (int i)
 
Streamoperator<< (double d)
 
void putHexByte (char b)
 
void putXmlString (String s)
 

Detailed Description

Stream writing into an String.

Constructor & Destructor Documentation

StringStream::StringStream ( String string)

Construct with string reference.

Member Function Documentation

void StringStream::putChar ( char  ch)
virtual

Output character.

Implements ipe::Stream.

void StringStream::putString ( String  s)
virtual

Output string.

Default implementation uses PutChar.

Reimplemented from ipe::Stream.

void StringStream::putCString ( const char *  s)
virtual

Output C string.

Default implementation uses PutChar.

Reimplemented from ipe::Stream.

void StringStream::putRaw ( const char *  data,
int  size 
)
virtual

Output raw character data.

Default implementation uses PutChar.

Reimplemented from ipe::Stream.

long StringStream::tell ( ) const
virtual

Implements ipe::TellStream.

References ipe::String::size().


The documentation for this class was generated from the following files:
  • ipebase.h
  • ipebase.cpp

ipe-7.1.10/build/doc/classipe_1_1_bitmap-members.html0000644000175000017500000003215112624020245022207 0ustar otfriedotfried Ipelib: Member List
ipe::Bitmap Member List

This is the complete list of members for ipe::Bitmap, including all inherited members.

Bitmap()ipe::Bitmap
Bitmap(int width, int height, TColorSpace colorSpace, int bitsPerComponent, Buffer data, TFilter filter, bool deflate=false)ipe::Bitmap
Bitmap(const XmlAttributes &attr, String data)ipe::Bitmap
Bitmap(const XmlAttributes &attr, Buffer data)ipe::Bitmap
Bitmap(const Bitmap &rhs)ipe::Bitmap
bitsPerComponent() const ipe::Bitmapinline
colorKey() const ipe::Bitmap
colorSpace() const ipe::Bitmapinline
components() const ipe::Bitmapinline
data() const ipe::Bitmapinline
EDCTDecode enum valueipe::Bitmap
EDeviceCMYK enum valueipe::Bitmap
EDeviceGray enum valueipe::Bitmap
EDeviceRGB enum valueipe::Bitmap
EDirect enum valueipe::Bitmap
EFlateDecode enum valueipe::Bitmap
equal(Bitmap rhs) const ipe::Bitmap
filter() const ipe::Bitmapinline
height() const ipe::Bitmapinline
isNull() const ipe::Bitmapinline
objNum() const ipe::Bitmapinline
operator!=(const Bitmap &rhs) const ipe::Bitmapinline
operator<(const Bitmap &rhs) const ipe::Bitmapinline
operator=(const Bitmap &rhs)ipe::Bitmap
operator==(const Bitmap &rhs) const ipe::Bitmapinline
pixelData() const ipe::Bitmap
readJpeg(const char *fname, Vector &dotsPerInch, const char *&errmsg)ipe::Bitmapstatic
readJpegInfo(FILE *file, int &width, int &height, Vector &dotsPerInch, TColorSpace &colorSpace, int &bitsPerComponent)ipe::Bitmapstatic
readPNG(const char *fname, bool deflate, Vector &dotsPerInch, const char *&errmsg)ipe::Bitmapstatic
renderData() const ipe::Bitmapinline
saveAsXml(Stream &stream, int id, int pdfObjNum=-1) const ipe::Bitmap
setColorKey(int key)ipe::Bitmap
setObjNum(int objNum) const ipe::Bitmapinline
setRenderData(MRenderData *data) const ipe::Bitmap
size() const ipe::Bitmapinline
TColorSpace enum nameipe::Bitmap
TFilter enum nameipe::Bitmap
width() const ipe::Bitmapinline
~Bitmap()ipe::Bitmap

ipe-7.1.10/build/doc/manual_20.html0000644000175000017500000001063412624020245016540 0ustar otfriedotfried Ipe Manual -- 4.5 Reference objects and symbols
4 Object types4.4 Group objects4.5 Reference objects and symbols

4.5 Reference objects and symbols

A symbol is a single Ipe object (which can of course be a group) that is defined in a document's stylesheet. A reference object is a reference to a symbol, placed at a given position on the page.

Symbols can be parameterized with stroke and fill color, pen width, and symbol size. Whether or not a symbol accepts which parameter is visible from the symbol's name: if it takes any parameter, the name must end in a pair of parentheses containing some of the letters "s", "f", "p", "x" (in this order), for the parameters stroke, fill, pen, and size. References to parameterized symbols allow all the attributes that the symbol accepts.

All references can be translated around the page. Whether or not the symbol can be rotated or stretched depends on the definition of the symbol in the stylesheet.

If a symbol named "Background" exists in your stylesheet, it is automatically displayed on each page, at the very back. To suppress the automatic display, create a layer named "BACKGROUND" on the page, and set it to be invisible. Note that the background symbol is not shown in Postscript output!

Marks are symbols with special support from the Ipe user interface. They are used to mark points in the drawing, and come in several different looks (little circles, discs, squares, boxes, or crosses). You can define your own mark shapes by defining appropriate symbols in your stylesheet.

Note that marks behave quite different from path objects. In particular, you should not confuse a disc mark with a little disc created as a circle object:

  • a solid mark (type disk and square) only obeys the stroke color (but fdisk and fsquare marks are filled with the fill color)
  • when you scale a mark, it will not change its size (you can change the mark size from the properties panel, though)
  • when you rotate a mark, it does not change its orientation
You can change a mark's shape and size later.
ipe-7.1.10/build/doc/classipe_1_1_page_selector-members.html0000644000175000017500000000624112624020245023550 0ustar otfriedotfried Ipelib: Member List
ipe::PageSelector Member List

This is the complete list of members for ipe::PageSelector, including all inherited members.

PageSelector(Document *doc, int page, int startIndex, int width, QWidget *parent=0)ipe::PageSelector
selectedIndex() const ipe::PageSelectorinline
selectionMade()ipe::PageSelectorsignal

ipe-7.1.10/build/doc/functions_y.html0000644000175000017500000001065112624020245017321 0ustar otfriedotfried Ipelib: Class Members
Here is a list of all class members with links to the classes they belong to:

- y -


ipe-7.1.10/build/doc/previous.png0000644000175000017500000000212512624020245016452 0ustar otfriedotfried‰PNG  IHDR D¤ŠÆsRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<PLTEÿÿÿ™ÌÿÂõ†¹ì|¯âs¦ÙiœÏ_’ÅV‰¼L²Cv©:m 0c–&YŒPƒFy =p3f sx pHYsÄÄ•+²IDAT8O͓˃ EyµXÅÿÿÙB.P…@·fåLŽÌÉ%ù§ÄÓë©^W¯«äv¦ ææý”£þ~ïË èú^5sÀêo],°è/}lèY&VXý G@A­#Na&ýÓI¡ 7¨O<Á΀w j†’DÆA³»“€<ÆÞ¦L?P¢Ž;Ih¬£$e…ɺÜ&Fi–¥:¤¢­ £íc§ñ¸‡3NròÄ¿?q-L¢ÚIEND®B`‚ipe-7.1.10/build/doc/classipe_1_1_snap-members.html0000644000175000017500000002041312624020245021672 0ustar otfriedotfried Ipelib: Member List
ipe::Snap Member List

This is the complete list of members for ipe::Snap, including all inherited members.

ESnapAngle enum valueipe::Snap
ESnapAuto enum valueipe::Snap
ESnapBd enum valueipe::Snap
ESnapCtl enum valueipe::Snap
ESnapGrid enum valueipe::Snap
ESnapInt enum valueipe::Snap
ESnapNone enum valueipe::Snap
ESnapVtx enum valueipe::Snap
getLine(const Vector &mouse, const Vector &base) const ipe::Snap
iAngleSizeipe::Snap
iDiripe::Snap
iGridSizeipe::Snap
iGridVisibleipe::Snap
intersectionSnap(const Vector &pos, Vector &fifi, const Page *page, double &snapDist) const ipe::Snap
iOriginipe::Snap
iSnapipe::Snap
iSnapDistanceipe::Snap
iWithAxesipe::Snap
setEdge(const Vector &pos, const Page *page)ipe::Snap
simpleSnap(Vector &pos, const Page *page, double snapDist, Tool *tool=0) const ipe::Snap
snap(Vector &pos, const Page *page, double snapDist, Tool *tool=0, Vector *autoOrg=0) const ipe::Snap
snapAngularIntersection(Vector &pos, const Line &l, const Page *page, double snapDist) const ipe::Snap
TSnapModes enum nameipe::Snap

ipe-7.1.10/build/doc/classipe_1_1_deflate_stream.html0000644000175000017500000004205112624020245022262 0ustar otfriedotfried Ipelib: ipe::DeflateStream Class Reference

#include <ipeutils.h>

Inherits ipe::Stream.

Public Member Functions

 DeflateStream (Stream &stream, int level)
 
virtual ~DeflateStream ()
 
virtual void putChar (char ch)
 
virtual void close ()
 
- Public Member Functions inherited from ipe::Stream
virtual ~Stream ()
 
virtual void putString (String s)
 
virtual void putCString (const char *s)
 
virtual void putRaw (const char *data, int size)
 
Streamoperator<< (char ch)
 
Streamoperator<< (const String &s)
 
Streamoperator<< (const char *s)
 
Streamoperator<< (int i)
 
Streamoperator<< (double d)
 
void putHexByte (char b)
 
void putXmlString (String s)
 

Static Public Member Functions

static Buffer deflate (const char *data, int size, int &deflatedSize, int compressLevel)
 

Detailed Description

Filter stream adding flate compression.

Constructor & Destructor Documentation

DeflateStream::DeflateStream ( Stream stream,
int  level 
)
DeflateStream::~DeflateStream ( )
virtual

Member Function Documentation

void DeflateStream::putChar ( char  ch)
virtual

Output character.

Implements ipe::Stream.

References ipe::Buffer::data(), deflate(), ipe::Stream::putRaw(), and ipe::Buffer::size().

void DeflateStream::close ( )
virtual

Close the stream. No more writing allowed!

Reimplemented from ipe::Stream.

References ipe::Stream::close(), ipe::Buffer::data(), deflate(), ipe::Stream::putRaw(), and ipe::Buffer::size().

Referenced by ipe::PdfWriter::createPageView(), and ipe::Document::save().

Buffer DeflateStream::deflate ( const char *  data,
int  size,
int &  deflatedSize,
int  compressLevel 
)
static

Deflate a buffer in a single run.

The returned buffer may be larger than necessary: deflatedSize is set to the number of bytes actually used.

References ipe::Buffer::data().

Referenced by ipe::Bitmap::Bitmap(), close(), and putChar().


The documentation for this class was generated from the following files:
  • ipeutils.h
  • ipeutils.cpp

ipe-7.1.10/build/doc/classipe_1_1_xml_attributes.html0000644000175000017500000004052612624020245022356 0ustar otfriedotfried Ipelib: ipe::XmlAttributes Class Reference
ipe::XmlAttributes Class Reference

#include <ipexml.h>

Public Types

typedef Map::const_iterator const_iterator
 

Public Member Functions

const_iterator begin () const
 
const_iterator end () const
 
 XmlAttributes ()
 
void clear ()
 
String operator[] (String str) const
 
bool has (String str) const
 
bool has (String str, String &val) const
 
void add (String key, String val)
 
void setSlash ()
 
bool slash () const
 

Detailed Description

Stores attributes of an XML tag.

Member Typedef Documentation

typedef Map::const_iterator ipe::XmlAttributes::const_iterator

Iterator for (key, value) pairs.

Constructor & Destructor Documentation

XmlAttributes::XmlAttributes ( )

Constructor for an empty collection.

Member Function Documentation

const_iterator ipe::XmlAttributes::begin ( ) const
inline

Return const iterator for first attribute.

const_iterator ipe::XmlAttributes::end ( ) const
inline

Return const iterator for end of attributes.

void XmlAttributes::clear ( )

Remove all attributes.

Referenced by ipe::XmlParser::parseAttributes().

String XmlAttributes::operator[] ( String  str) const

Return attribute with given key.

Returns an empty string if no attribute with this key exists.

bool XmlAttributes::has ( String  str,
String val 
) const

Check whether attribute exists, set val if so.

void XmlAttributes::add ( String  key,
String  val 
)

Add a new attribute.

Referenced by ipe::XmlParser::parseAttributes().

void ipe::XmlAttributes::setSlash ( )
inline

Set that the tag contains the final /.

Referenced by ipe::XmlParser::parseAttributes().

bool ipe::XmlAttributes::slash ( ) const
inline

Return whether tag contains the final /.

Referenced by ipe::ImlParser::parseBitmap(), ipe::ImlParser::parseObject(), and ipe::ImlParser::parseStyle().


The documentation for this class was generated from the following files:
  • ipexml.h
  • ipexml.cpp

ipe-7.1.10/build/doc/functions_func_c.html0000644000175000017500000003511112624020245020304 0ustar otfriedotfried Ipelib: Class Members - Functions
 

- c -


ipe-7.1.10/build/doc/annotated.html0000644000175000017500000010776012624020245016746 0ustar otfriedotfried Ipelib: Class List
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
[detail level 123]
 Nipe
 CA85SourceFilter source adding ASCII85 decoding
 CA85StreamFilter stream adding ASCII85 encoding
 CAllAttributesCollection of all object attributes
 CAngleA double that's an angle
 CArcAn arc of an ellipse
 CAttributeAn attribute of an Ipe Object
 CBase64SourceFilter source adding Base64 decoding
 CBase64StreamFilter stream adding Base64 encoding
 CBBoxPainterPaint objects using this painter to compute an accurate bounding box
 CBezierA cubic Bezier spline
 CBitmapA bitmap
 CBitmapFinderA visitor that recursively scans objects and collects all bitmaps
 CBufferA memory buffer
 CBufferSourceData source for parsing from a buffer
 CCairoPainterIpe Painter using Cairo and Freetype as a backend
 CCanvasA widget (control) that displays an Ipe document page
 CCanvasBase
 CCanvasObserver
 CCascadeA cascade of style sheets
 CClosedSplineA closed B-spline curve
 CColorAn absolute RGB color
 CCurveSubpath consisting of a sequence of CurveSegment's
 CCurveSegmentA segment on an SubPath
 CDataSourceInterface for getting data for parsing
 CDeflateStreamFilter stream adding flate compression
 CDocumentThe model for an Ipe document
 CEffectEffect that Acrobat Reader will show on page change
 CEllipseAn ellipse subpath
 CFaceA typeface (aka font), actually loaded (from a font file or PDF file)
 CFileSourceData source for parsing from a file
 CFileStreamStream writing into an open file
 CFixedFixed point number with three (decimal) fractional digits
 CFontA text font
 CFontsProvides the fonts used to render text
 CGradientA gradient pattern
 CGroupThe group object
 CImageThe image object
 CImlParserXML Parser for Ipe documents and style sheets
 CInflateSourceFilter source adding flate decompression
 CIpeletAbstract base class for Ipelets
 CIpeletDataInformation provided to an ipelet when it is run
 CIpeletHelperService provider for Ipelets
 CLatexObject that converts latex source to PDF format
 CLayoutLayout of a Page
 CLexLexical analyser. Seeded with a string
 CLineA directed line
 CLinearLinear transformation in the plane (2x2 matrix)
 CMatrixHomogeneous transformation in the plane
 CObjectBase class for all Ipe objects, composite or leaf
 CObjectFactoryFactory for Ipe leaf objects
 CPageAn Ipe document page
 CPageSelectorA Qt widget that displays a list of Ipe pages
 CPainterInterface for drawing
 CPanToolA tool for panning the canvas
 CPathThe path object (polylines, polygons, and generalizations)
 CPdfArrayThe PDF array object
 CPdfBoolThe PDF bool object
 CPdfDictThe PDF dictionary and stream objects
 CPdfFileAll information obtained by parsing a PDF file
 CPdfNameThe PDF name object
 CPdfNullThe PDF null object
 CPdfNumberThe PDF number object
 CPdfObjAbstract base class for PDF objects
 CPdfPainter
 CPdfParserPDF parser
 CPdfRefThe PDF reference object (indirect object)
 CPdfStringThe PDF string object
 CPdfTokenA PDF lexical token
 CPdfWriterCreate PDF file
 CPlatformPlatform dependent methods
 CPsPainter
 CPsWriter
 CRectAxis-parallel rectangle (which can be empty)
 CReferenceThe reference object
 CRepositoryRepository of strings
 CSegmentA directed line segment
 CSelectToolA tool for selecting objects
 CShapeA geometric shape, consisting of several (open or closed) subpaths
 CSnapPerforms snapping operations, and stores snapping state
 CStreamAbstract base class for output streams
 CStringStrings and buffers
 CStringStreamStream writing into an String
 CStyleSheetA style sheet maps symbolic names to absolute values
 CSubPathA subpath of a Path
 CSymbolA symbol is a named object defined in an ipe::StyleSheet
 CTellStreamAdds position feedback to IpeStream
 CTextThe text object
 CTextPaddingPadding for text bounding box
 CThumbnail
 CTilingA tiling pattern
 CToolAbstract base class for various canvas tools
 CTransformToolA tool for transforming the selected objects on the canvas
 CVectorTwo-dimensional vector
 CVisitorBase class for visitors to Object
 CXmlAttributesStores attributes of an XML tag
 CXmlParserBase class for XML stream parsing
 CIpeAutoPtr

ipe-7.1.10/build/doc/classipe_1_1_file_source.html0000644000175000017500000001324612624020245021606 0ustar otfriedotfried Ipelib: ipe::FileSource Class Reference
ipe::FileSource Class Reference

#include <ipebase.h>

Inherits ipe::DataSource.

Public Member Functions

 FileSource (std::FILE *file)
 
virtual int getChar ()
 
- Public Member Functions inherited from ipe::DataSource
virtual ~DataSource ()=0
 

Detailed Description

Data source for parsing from a file.

Constructor & Destructor Documentation

FileSource::FileSource ( std::FILE *  file)

Member Function Documentation

int FileSource::getChar ( )
virtual

Get one more character, or EOF.

Implements ipe::DataSource.


The documentation for this class was generated from the following files:
  • ipebase.h
  • ipebase.cpp

ipe-7.1.10/news.txt0000644000175000017500000020730112624020245013744 0ustar otfriedotfried---------------------------------------------------------------------- Ipe 7.1.10 (2015-11-21) * "Export to EPS" replaces saving in EPS format. Ipe can still load Ipe figures in EPS format, but will not save in this format anymore. Use "Export to EPS" if you need EPS figures for your publisher. * I learnt how to compile on Mac OS X, and now build "Ipe.app" binaries myself. The makefiles and instructions for Mac OS are updated. * Ipe now compiles with both Qt 4 and Qt 5. This is useful since Qt 5 drops support for older Mac platforms (in particular Snow Leopard). * Transparency now available by default. * Trying both .dylib and .so extension when loading compiled ipelets on Mac OS. * Ipelets compiled using -bundle and .so extension on Mac OS. * Removed lfs from Ipe, added Platform::listDirectory that works correctly with UTF-8 on Windows. * Ipe now runs correctly on Windows if installed in a directory with non-ASCII characters (feature #17). * On Windows, when closing from the cross icon in the window frame, the "Save" option now works. * Fixed problem with Enter key closing edit dialogs (bug #6). * Windows and Mac OS binaries using Lua 5.3. * On Windows libpng/libjpeg replaced by Windows GDI+ calls. "Insert image" now also supports BMP, GIF, and TIFF. * On Mac OS, libjpeg replaced by CoreGraphics calls. * "Export to PNG" added to user interface (feature #22). * Removed auto-exporting functionality. ---------------------------------------------------------------------- Ipe 7.1.9 (2015-10-24) * Migrated to Qt5. * Windows binary now works on WinXP by dynamically loading GetGestureInfo (issue #9, thanks to czietz for the patch). * Ignore spurious double-click (bug #17). * Fixed Ctrl+F shortcut on Windows (bug #9). * Fixed updating of style sheets on Windows (bug #8). * Fixed crash when right-clicking on a toolbar icon on Windows (bug #7). * Changed ordering of Ipelet directories (bug #16). * Fixed misleading caption on layer menu (bug #14). * Compiling with clang++-3.5 for testing. * Bitmaps read from files are now compressed during insertion, crash during insertion of PNG files with color palette fixed. Inserting PNG images with color-keyed transparent color works now (bugs #19, #20). * Improved "About ipelets" dialog. -------------------------------------------------------------------- Ipe 7.1.8 (2015-07-11) * (Partial) support for MacOS retina displays. You need to set prefs.retina to true to enable this. Thanks to Michael Thon for testing my experiments. * Fixed compilation of qvoronoi ipelet on Mac OS X (bug #31). * Now using standard libjpeg API for embedded JPEG images, rather than the TurboJPEG API. Therefore Ipe now compiles with either JPEG library. Thanks to Michael Thon for the patch (bug #32). * IPEBUNDLE variable to compile Ipe without references to the file system. * IPENOGESTURE variable to compile Ipe for Windows Vista and older. * Fixed Document properties dialog (bug #33). * Fixed first entry in layer list popup menu. * Fixed crash in Voronoi ipelet on Windows (issue #5). -------------------------------------------------------------------- Ipe 7.1.7 (2015-02-23) * Fifi shape and color now depends on the context: whether snapping to a vertex, boundary, the grid, etc. When no snapping occurs, Fifi is not drawn at all. * The definition of B-splines has changed. For reasons lost in the mist of time, Ipe has for many years used an incorrect definition of uniform B-splines, which handled the boundary conditions wrongly. In particular, the first and final segment of a spline was always a straight segment. This has now been fixed, and the line/spline tools from now on create correct uniform B-splines. In particular, splines with four control points are now identical to cubic Bezier segments. As a generalization, a spline with three control points generates a quadratic Bezier segment, so the special keys 'q' and 'c' in the line tool are no longer needed. One benefit of this change is that it is now possible to cut B-splines (both open and closed) at any knot value, so that splines can be cut without first decomposing them entirely into Bezier curves. Splines created with older versions of Ipe continue to work as before and can still be edited. They are now called "old splines". As a result, the Ipe file format version was updated to 70107. Older versions of Ipe will not read files created with Ipe 7.1.7. * Separate snap mode for snapping to "control points". These are the control points of splines, but also the centers of ellipses/circles/arcs, the corners of images, and the corners and reference point of text objects. * The midpoint of every straight segment is now also a snap point (when control point snapping is on). * When drawing a polyline or spline object, the previous segments of the object being drawn are now already magnetic and can be snapped to. This feature was actually used in several snapping examples in the manual, but didn't work since Ipe 7.0.0. * A left double-click can now be used to terminate a path object instead of a right click. * Windows binaries now use a native UI without Qt. * On Windows, can now use two-finger touch gestures for pan and zoom. They work even in the middle of drawing an object with the mouse or the pen. * The paste actions (Ctrl+V) will now create an image object if the clipboard contains a bitmap (this function used to be "Insert image from clipboard"). * When selecting objects by dragging a rectangle, select all objects included in the rectangle when dragging is from left to right, select all objects intersecting the rectangle when dragging is from right to left. * Windows shell no longer pops up when running Latex (feature #2). * Abort button for current drawing operation (useful on tablet computers without Escape key). * Focus now on text field in text creation dialogs. * When an external editor is defined, the dialog displaying the Latex error log now offers to show the Latex source used by Ipe (feature #24). * Changed file extension of dynamic libraries to .dylib on Mac OS X (feature #20). * Charset support for Latex conversion now supported on Windows. * Static member function "selectPageOrView" moved from "PageSelector" to "CanvasBase". "PageSelector" is now considered an internal class and should not be used by external code (it doesn't even exist in Windows code). * Developer menu with useful functions for customizing ipelets: reload all ipelets (this is useful when working on an ipelet), list all the keyboard shortcuts, check if there are any duplicate shortcuts defined. The developer menu needs to be enabled by setting prefs.developer. * "Insert image" moved into Ipe program itself instead of an ipelet, now implemented using turbojpeg and libpng libraries instead of Qt. * Fixed creation of arc defined by three collinear points. * Lua bindings for: (1) getting gradient from a stylesheet; (2) creating gradients, tilings, and effects through an XML string; (3) removing definitions of symbolic names from a stylesheet. * In "Save as" file dialog, start with the current filename (feature #22). * Fixed missed intersection points between splines and splines/segments (bug #8). * Unused arguments of Object::setAttribute removed. * Fixed crash when snapping to the intersection of two parallel lines (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=728479). * Changed default "Save as" destination on Windows to something more useful. -------------------------------------------------------------------- Ipe 7.1.6 (2014-12-05) * Fixed crash when input file contains zero-radius arc (bug #1). * Added missing "qhull.dll" (bug #3). * IPESTYLES and IPELETPATH now use semicolon as separator on Windows and colon on Unix (bug #4). * New arrow styles "ptarc" and "fptarc" for pointed arrows on circular arcs (feature #19). * Using a separate locale for number conversion, hopefully fixing the problems Ipe users on European locales with a comma for the decimal separator were having (bug #11). * Option "Pretty display" to avoid drawing the green bounding box for text objects, so that one can see what the drawing really looks like (feature #13). * Fixed snapping to negative grid coordinates (bug #9). * Preference prefs.editable_textfile to set the name of the text file to be written for editing in an external text editor. -------------------------------------------------------------------- Ipe 7.1.5 (2014-05-07) * Enabled automatic shortcuts on MacOS X. The shortcuts Alt+Letter for menu items and dialog buttons should now also work on Macs (thanks Sascha). * Included Voronoi ipelet in Windows binaries * New -nocrop option in iperender. * prefs.editor_size setting now works in Qt build (bug #140). * prefs.docks to choose left/right dock side and prefs.hide_docks to select which docks should be visible when Ipe starts. * prefs.editor_closes_dialog to make editing dialog close immediately when user exits external editor * Fixed crash when Ipe file named on command line exists but cannot be loaded. * Fixed error message when trying to open PDF file that was not created by Ipe. * Iperender will now include the page background if used with -nocrop. * Fix compilation on MacOS X 10.9 (bug #145). * Del key on Mac keyboard now works to delete last vertex (bug #149). * Bitmaps are now displayed on screen with better quality (thanks Dmitriy). * Link to IpePresenter in Ipe manual and on the webpage. IpePresenter executable included in Windows binary package. * Layer names with non-ASCII characters now work and no longer cause a crash (bugs #137 and #132). * Using libturbojpeg for decoding embedded JPEG images. It's faster and fixes bug #125. * "Insert text box" now computes position of new textbox based on the position of the visible text only (feature #141). * When text size is changed, Latex is automatically run. -------------------------------------------------------------------- Ipe 7.1.4 (2013-3-15) * Windows binaries provided again. * Migrated to using Lua 5.2 (feature #113). * Fixed bug in "ipescript update-master" with several figures (bug #85). * Ipe scripts (to be run with "ipescript