syfi-1.0.0.dfsg.orig/0000700000175000017500000000000011674103626014217 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/syfi/0000755000175000017500000000000011674103626015203 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/syfi/RaviartThomas.cpp0000644000175000017500000005033311672223006020470 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "RaviartThomas.h" #include #include "tools.h" using std::cout; using std::endl; using std::string; namespace SyFi { RaviartThomas:: RaviartThomas() : StandardFE() { description = "RaviartThomas"; } RaviartThomas:: RaviartThomas(Polygon& p, int order, bool pointwise_) : StandardFE(p, order) { pointwise = pointwise_; compute_basis_functions(); } void RaviartThomas:: compute_basis_functions() { if ( order < 1 ) { throw(std::logic_error("Raviart-Thomas elements must be of order 1 or higher.")); } if ( p == NULL ) { throw(std::logic_error("You need to set a polygon before the basisfunctions can be computed")); } // see e.g. Brezzi and Fortin book page 116 for the definition GiNaC::ex nsymb = GiNaC::symbol("n"); if (pointwise) { if ( p->str().find("ReferenceLine") != string::npos ) { cout <<"Can not define the Raviart-Thomas element on a line"<str().find("Triangle") != string::npos ) { description = istr("RaviartThomas_", order) + "_2D"; Triangle& triangle = (Triangle&)(*p); GiNaC::lst equations; GiNaC::lst variables; GiNaC::ex polynom_space1 = bernstein(order-1, triangle, "a"); GiNaC::ex polynom1 = polynom_space1.op(0); GiNaC::ex polynom1_vars = polynom_space1.op(1); GiNaC::ex polynom1_basis = polynom_space1.op(2); GiNaC::lst polynom_space2 = bernsteinv(2,order-1, triangle, "b"); GiNaC::ex polynom2 = polynom_space2.op(0).op(0); GiNaC::ex polynom3 = polynom_space2.op(0).op(1); GiNaC::lst pspace = GiNaC::lst( polynom2 + polynom1*x, polynom3 + polynom1*y); GiNaC::lst v2 = collapse(GiNaC::ex_to(polynom_space2.op(1))); variables = collapse(GiNaC::lst(polynom_space1.op(1), v2)); // remove multiple dofs if ( order >= 2) { GiNaC::ex expanded_pol = GiNaC::expand(polynom1); for (unsigned int c1=0; c1<= order-2;c1++) { for (unsigned int c2=0; c2<= order-2;c2++) { for (unsigned int c3=0; c3<= order-2;c3++) { if ( c1 + c2 + c3 <= order -2 ) { GiNaC::ex eq = expanded_pol.coeff(x,c1).coeff(y,c2).coeff(z,c3); if ( eq != GiNaC::numeric(0) ) { equations.append(eq == 0); } } } } } } int removed_dofs = equations.nops(); GiNaC::ex bernstein_pol; int counter = 0; GiNaC::symbol t("t"); GiNaC::ex dofi; // dofs related to edges for (int i=0; i< 3; i++) { Line line = triangle.line(i); GiNaC::lst normal_vec = normal(triangle, i); GiNaC::ex Vn = inner(pspace, normal_vec); GiNaC::lst points = interior_coordinates(line, order-1); GiNaC::ex edge_length = line.integrate(GiNaC::numeric(1)); GiNaC::ex point; for (unsigned int j=0; j< points.nops(); j++) { point = points.op(j); dofi = Vn.subs(x == point.op(0)).subs(y == point.op(1))*edge_length; GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); dofs.insert(dofs.end(), GiNaC::lst(point,nsymb)); } } // dofs related to the whole triangle if ( order > 1) { counter++; GiNaC::lst points = interior_coordinates(triangle, order-2); GiNaC::ex point; for (unsigned int j=0; j< points.nops(); j++) { point = points.op(j); // x -component dofi = pspace.op(0).subs(x == point.op(0)).subs(y == point.op(1)); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); dofs.insert(dofs.end(), GiNaC::lst(point,0)); // y -component dofi = pspace.op(1).subs(x == point.op(0)).subs(y == point.op(1)); eq = dofi == GiNaC::numeric(0); equations.append(eq); dofs.insert(dofs.end(), GiNaC::lst(point,1)); } } // std::cout <<"no variables "<(b)); GiNaC::lst subs; for (unsigned int ii=0; iistr().find("Tetrahedron") != string::npos ) { description = istr("RaviartThomas_", order) + "_3D"; Tetrahedron& tetrahedron = (Tetrahedron&)(*p); GiNaC::lst equations; GiNaC::lst variables; GiNaC::ex polynom_space1 = bernstein(order-1, tetrahedron, "a"); GiNaC::ex polynom1 = polynom_space1.op(0); GiNaC::ex polynom1_vars = polynom_space1.op(1); GiNaC::ex polynom1_basis = polynom_space1.op(2); GiNaC::lst polynom_space2 = bernsteinv(3,order-1, tetrahedron, "b"); GiNaC::ex polynom2 = polynom_space2.op(0).op(0); GiNaC::ex polynom3 = polynom_space2.op(0).op(1); GiNaC::ex polynom4 = polynom_space2.op(0).op(2); GiNaC::lst pspace = GiNaC::lst( polynom2 + polynom1*x, polynom3 + polynom1*y, polynom4 + polynom1*z); GiNaC::lst v2 = collapse(GiNaC::ex_to(polynom_space2.op(1))); variables = collapse(GiNaC::lst(polynom_space1.op(1), v2)); GiNaC::ex bernstein_pol; // remove multiple dofs if ( order >= 2) { GiNaC::ex expanded_pol = GiNaC::expand(polynom1); for (unsigned int c1=0; c1<= order-2;c1++) { for (unsigned int c2=0; c2<= order-2;c2++) { for (unsigned int c3=0; c3<= order-2;c3++) { if ( c1 + c2 + c3 <= order -2 ) { GiNaC::ex eq = expanded_pol.coeff(x,c1).coeff(y,c2).coeff(z,c3); if ( eq != GiNaC::numeric(0) ) { equations.append(eq == 0); } } } } } } int removed_dofs = equations.nops(); GiNaC::symbol t("t"); GiNaC::ex dofi; // dofs related to edges for (int i=0; i< 4; i++) { Triangle triangle = tetrahedron.triangle(i); GiNaC::lst normal_vec = normal(tetrahedron, i); GiNaC::ex Vn = inner(pspace, normal_vec); GiNaC::lst points = interior_coordinates(triangle, order-1); GiNaC::ex triangle_size = triangle.integrate(GiNaC::numeric(1)); GiNaC::ex point; for (unsigned int j=0; j< points.nops(); j++) { point = points.op(j); dofi = Vn.subs(x == point.op(0)).subs(y == point.op(1)).subs(z == point.op(2))*triangle_size; GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); dofs.insert(dofs.end(), GiNaC::lst(point,nsymb)); } } // dofs related to the whole tetrahedron if ( order > 1) { GiNaC::lst points = interior_coordinates(tetrahedron, order-2); GiNaC::ex point; for (unsigned int j=0; j< points.nops(); j++) { point = points.op(j); // x -component dofi = pspace.op(0).subs(x == point.op(0)).subs(y == point.op(1)).subs(z == point.op(2)); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); dofs.insert(dofs.end(), GiNaC::lst(point,0)); // y -component dofi = pspace.op(1).subs(x == point.op(0)).subs(y == point.op(1)).subs(z == point.op(2)); eq = dofi == GiNaC::numeric(0); equations.append(eq); dofs.insert(dofs.end(), GiNaC::lst(point,1)); // z -component dofi = pspace.op(2).subs(x == point.op(0)).subs(y == point.op(1)).subs(z == point.op(2)); eq = dofi == GiNaC::numeric(0); equations.append(eq); dofs.insert(dofs.end(), GiNaC::lst(point,1)); } } // std::cout <<"no variables "<(b)); GiNaC::lst subs; for (unsigned int ii=0; iistr().find("ReferenceLine") != string::npos ) { cout <<"Can not define the Raviart-Thomas element on a line"<str().find("Triangle") != string::npos ) { description = istr("RaviartThomas_", order) + "_2D"; Triangle& triangle = (Triangle&)(*p); GiNaC::lst equations; GiNaC::lst variables; GiNaC::ex polynom_space1 = bernstein(order-1, triangle, "a"); GiNaC::ex polynom1 = polynom_space1.op(0); GiNaC::ex polynom1_vars = polynom_space1.op(1); GiNaC::ex polynom1_basis = polynom_space1.op(2); GiNaC::lst polynom_space2 = bernsteinv(2,order-1, triangle, "b"); GiNaC::ex polynom2 = polynom_space2.op(0).op(0); GiNaC::ex polynom3 = polynom_space2.op(0).op(1); GiNaC::lst pspace = GiNaC::lst( polynom2 + polynom1*x, polynom3 + polynom1*y); GiNaC::lst v2 = collapse(GiNaC::ex_to(polynom_space2.op(1))); variables = collapse(GiNaC::lst(polynom_space1.op(1), v2)); // remove multiple dofs if ( order >= 2) { GiNaC::ex expanded_pol = GiNaC::expand(polynom1); for (unsigned int c1=0; c1<= order-2;c1++) { for (unsigned int c2=0; c2<= order-2;c2++) { for (unsigned int c3=0; c3<= order-2;c3++) { if ( c1 + c2 + c3 <= order -2 ) { GiNaC::ex eq = expanded_pol.coeff(x,c1).coeff(y,c2).coeff(z,c3); if ( eq != GiNaC::numeric(0) ) { equations.append(eq == 0); } } } } } } int removed_dofs = equations.nops(); GiNaC::ex bernstein_pol; int counter = 0; GiNaC::symbol t("t"); GiNaC::ex dofi; // dofs related to edges for (int i=0; i< 3; i++) { Line line = triangle.line(i); GiNaC::lst normal_vec = normal(triangle, i); bernstein_pol = bernstein(order-1, line, istr("a",i)); GiNaC::ex basis_space = bernstein_pol.op(2); GiNaC::ex pspace_n = inner(pspace, normal_vec); GiNaC::ex basis; for (unsigned int j=0; j< basis_space.nops(); j++) { counter++; basis = basis_space.op(j); GiNaC::ex integrand = pspace_n*basis; dofi = line.integrate(integrand); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); GiNaC::lst d = GiNaC::lst(GiNaC::lst(line.vertex(0), line.vertex(1)),j); dofs.insert(dofs.end(), d); GiNaC::ex u = GiNaC::matrix(2,1,GiNaC::lst(GiNaC::symbol("v[0]"), GiNaC::symbol("v[1]"))); GiNaC::ex n = GiNaC::matrix(2,1,GiNaC::lst(GiNaC::symbol("normal_vec[0]"), GiNaC::symbol("normal_vec[1]"))); dof_repr.append(GiNaC::lst(inner(u,n)*basis.subs( x == GiNaC::symbol("xi[0]")) .subs( y == GiNaC::symbol("xi[1]")), d)); } } // dofs related to the whole triangle GiNaC::lst bernstein_polv; if ( order > 1) { counter++; bernstein_polv = bernsteinv(2,order-2, triangle, "a"); GiNaC::ex basis_space = bernstein_polv.op(2); for (unsigned int i=0; i< basis_space.nops(); i++) { GiNaC::lst basis = GiNaC::ex_to(basis_space.op(i)); GiNaC::ex integrand = inner(pspace, basis); dofi = triangle.integrate(integrand); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); GiNaC::lst d = GiNaC::lst(GiNaC::lst(triangle.vertex(0), triangle.vertex(1), triangle.vertex(2)), i); dofs.insert(dofs.end(), d); } } // invert the matrix: // GiNaC has a bit strange way to invert a matrix. // It solves the system AA^{-1} = Id. // It seems that this way is the only way to do // properly with the solve_algo::gauss flag. // GiNaC::matrix b; GiNaC::matrix A; matrix_from_equations(equations, variables, A, b); unsigned int ncols = A.cols(); GiNaC::matrix vars_sq(ncols, ncols); // matrix of symbols for (unsigned r=0; r(b)); GiNaC::lst subs; for (unsigned int ii=0; iistr().find("Tetrahedron") != string::npos ) { description = istr("RaviartThomas_", order) + "_3D"; Tetrahedron& tetrahedron = (Tetrahedron&)(*p); GiNaC::lst equations; GiNaC::lst variables; GiNaC::ex polynom_space1 = bernstein(order-1, tetrahedron, "a"); GiNaC::ex polynom1 = polynom_space1.op(0); GiNaC::ex polynom1_vars = polynom_space1.op(1); GiNaC::ex polynom1_basis = polynom_space1.op(2); GiNaC::lst polynom_space2 = bernsteinv(3,order-1, tetrahedron, "b"); GiNaC::ex polynom2 = polynom_space2.op(0).op(0); GiNaC::ex polynom3 = polynom_space2.op(0).op(1); GiNaC::ex polynom4 = polynom_space2.op(0).op(2); GiNaC::lst pspace = GiNaC::lst( polynom2 + polynom1*x, polynom3 + polynom1*y, polynom4 + polynom1*z); GiNaC::lst v2 = collapse(GiNaC::ex_to(polynom_space2.op(1))); variables = collapse(GiNaC::lst(polynom_space1.op(1), v2)); GiNaC::ex bernstein_pol; // remove multiple dofs if ( order >= 2) { GiNaC::ex expanded_pol = GiNaC::expand(polynom1); for (unsigned int c1=0; c1<= order-2;c1++) { for (unsigned int c2=0; c2<= order-2;c2++) { for (unsigned int c3=0; c3<= order-2;c3++) { if ( c1 + c2 + c3 <= order -2 ) { GiNaC::ex eq = expanded_pol.coeff(x,c1).coeff(y,c2).coeff(z,c3); if ( eq != GiNaC::numeric(0) ) { equations.append(eq == 0); } } } } } } int removed_dofs = equations.nops(); int counter = 0; GiNaC::symbol t("t"); GiNaC::ex dofi; // dofs related to edges for (int i=0; i< 4; i++) { Triangle triangle = tetrahedron.triangle(i); GiNaC::lst normal_vec = normal(tetrahedron, i); bernstein_pol = bernstein(order-1, triangle, istr("a",i)); GiNaC::ex basis_space = bernstein_pol.op(2); GiNaC::ex pspace_n = inner(pspace, normal_vec); GiNaC::ex basis; for (unsigned int j=0; j< basis_space.nops(); j++) { counter++; basis = basis_space.op(j); GiNaC::ex integrand = pspace_n*basis; dofi = triangle.integrate(integrand); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); GiNaC::lst d = GiNaC::lst(GiNaC::lst(triangle.vertex(0), triangle.vertex(1), triangle.vertex(2)), j); dofs.insert(dofs.end(), d); GiNaC::ex u = GiNaC::matrix(3,1,GiNaC::lst(GiNaC::symbol("v[0]"), GiNaC::symbol("v[1]"), GiNaC::symbol("v[2]"))); GiNaC::ex n = GiNaC::matrix(3,1,GiNaC::lst(GiNaC::symbol("normal_vec[0]"), GiNaC::symbol("normal_vec[1]"), GiNaC::symbol("normal_vec[2]"))); dof_repr.append(GiNaC::lst(inner(u,n)*basis.subs( x == GiNaC::symbol("xi[0]")) .subs( y == GiNaC::symbol("xi[1]")) .subs( z == GiNaC::symbol("xi[2]")), d)); } } // dofs related to the whole tetrahedron GiNaC::lst bernstein_polv; if ( order > 1) { counter++; bernstein_polv = bernsteinv(3,order-2, tetrahedron, "a"); GiNaC::ex basis_space = bernstein_polv.op(2); for (unsigned int i=0; i< basis_space.nops(); i++) { GiNaC::lst basis = GiNaC::ex_to(basis_space.op(i)); GiNaC::ex integrand = inner(pspace, basis); dofi = tetrahedron.integrate(integrand); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); GiNaC::lst d = GiNaC::lst(GiNaC::lst(tetrahedron.vertex(0), tetrahedron.vertex(1), tetrahedron.vertex(2), tetrahedron.vertex(3)), i); dofs.insert(dofs.end(), d); } } // invert the matrix: // GiNaC has a bit strange way to invert a matrix. // It solves the system AA^{-1} = Id. // It seems that this way is the only way to do // properly with the solve_algo::gauss flag. // GiNaC::matrix b; GiNaC::matrix A; matrix_from_equations(equations, variables, A, b); unsigned int ncols = A.cols(); GiNaC::matrix vars_sq(ncols, ncols); // matrix of symbols for (unsigned r=0; r(b)); GiNaC::lst subs; for (unsigned int ii=0; ii. #ifndef TIMEELEMENT_IS_INCLUDED #define TIMEELEMENT_IS_INCLUDED #include "FE.h" namespace SyFi { class SpaceTimeDomain : public Polygon { Line* time_line; Polygon* polygon; public: SpaceTimeDomain(Line& time_line_, Polygon& polygon_); SpaceTimeDomain(const SpaceTimeDomain& space_time_domain_); Polygon& get_space_domain() const { return *((*polygon).copy()); } Line& get_time_domain() const { return *((*time_line).copy()); } virtual unsigned int no_space_dim() const; virtual Line line(unsigned int i) const; virtual GiNaC::ex repr(Repr_format = SUBS_PERFORMED) const; virtual const std::string str() const; virtual GiNaC::ex integrate(GiNaC::ex f, Repr_format format = SUBS_PERFORMED); virtual SpaceTimeDomain* copy() const; }; class SpaceTimeElement : public StandardFE { int order; Line* time_line; StandardFE* fe; public: SpaceTimeElement(); SpaceTimeElement(Line* time_line_, unsigned int order_, StandardFE* fe_); virtual ~SpaceTimeElement() {} void set_time_domain(Line* line); void set_order_in_time(unsigned int order); void set_spatial_element(StandardFE* fe); virtual void compute_basis_functions(); }; } // namespace SyFi #endif syfi-1.0.0.dfsg.orig/syfi/FE.h0000644000175000017500000000402211672223006015635 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef FE_IS_INCLUDED #define FE_IS_INCLUDED #include #include "Polygon.h" namespace SyFi { class FE { public: FE() {} virtual ~FE() {} // Set polygonal domain virtual void set_polygon(Polygon& p) = 0; // Get polygonal domain virtual Polygon& get_polygon() = 0; // precompute basis functions virtual void compute_basis_functions() = 0; // Number of basis functions/ degrees of freedom virtual unsigned int nbf() const = 0; // The i'th basis function virtual GiNaC::ex N(unsigned int i) = 0; // The i'th degree of freedom virtual GiNaC::ex dof(unsigned int i) = 0 ; virtual std::string str() = 0; }; class StandardFE : public FE { protected: GiNaC::exvector Ns; GiNaC::exvector dofs; Polygon* p; unsigned int order; std::string description; public: StandardFE(); StandardFE(Polygon& p, unsigned int order); virtual ~StandardFE(); virtual void set_order(unsigned int order); virtual unsigned int get_order(); virtual void set_polygon(Polygon& p); virtual Polygon& get_polygon(); virtual void compute_basis_functions(); virtual unsigned int nbf() const; virtual GiNaC::ex N(unsigned int i); virtual GiNaC::ex dof(unsigned int i); virtual std::string str(); }; } #endif syfi-1.0.0.dfsg.orig/syfi/Hermite.h0000644000175000017500000000202111672223006016735 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef HERMITE_FE_IS_INCLUDED #define HERMITE_FE_IS_INCLUDED #include "FE.h" namespace SyFi { class Hermite : public StandardFE { public: Hermite(); Hermite(Polygon& p, int order = 1); virtual ~Hermite() {} virtual void compute_basis_functions(); }; } // namespace SyFi #endif syfi-1.0.0.dfsg.orig/syfi/containers.h0000644000175000017500000000267211672223006017521 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef CONTAINERS_IS_INCLUDED #define CONTAINERS_IS_INCLUDED #include #include #include #include #include #include namespace SyFi { // container typedefs typedef std::pair symexpair; typedef std::list< std::pair > symexlist; //typedef std::vector exvector; typedef std::list exlist; typedef std::set exset; //typedef std::map exmap; typedef std::map ex_int_map; } // namespace SyFi #endif syfi-1.0.0.dfsg.orig/syfi/Ptv_tools.cpp0000644000175000017500000001161611672223006017676 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "Ptv_tools.h" #include #include #include #include #include using namespace std; namespace SyFi { void sort_vector(vector& a) { sort(a.begin(), a.end(), Ptv_is_less()); } void set_tolerance(double tolerance) { Ptv::tol = tolerance; } double mul(const Ptv&a, const Ptv& b) { if ( a.size() != b.size() ) { throw(std::logic_error("Exception from mul(const Ptv&, const Ptv&): The dimentions of a and b must be the same.")); } double sum = 0; for (unsigned int i=0; i< a.size(); i++) { sum += (a[i])*(b[i]); } return sum; } double norm(const Ptv& a) { double sum = 0.0; for (unsigned int i=0; i < a.size(); i++) { sum += a[i]*a[i]; } sum = sqrt(sum); return sum; } void normalize(Ptv& a) { double invn = 1.0/norm(a); for (unsigned int i=0; i< a.size(); i++) { a[i] *= invn; } } void add(const Ptv&a, const Ptv& b, Ptv& c) { if ( a.size() != b.size() ) { throw(std::logic_error("Exception from add(const Ptv&, const Ptv&, Ptv&): The dimentions of a and b must be the same.")); } c.redim(a.size()); for (unsigned int i=0; i< c.size(); i++) { c[i] = a[i] + b[i]; } } void sub(const Ptv&a, const Ptv& b, Ptv& c) { if ( a.size() != b.size() ) { throw(std::logic_error("Exception from add(const Ptv&, const Ptv&, Ptv&): The dimentions of a and b must be the same.")); } c.redim(a.size()); for (unsigned int i=0; i< c.size(); i++) { c[i] = a[i] - b[i]; } } void cross(const Ptv& a, const Ptv& b, Ptv& c) { if ( a.size() != b.size() ) { throw(std::logic_error("Exception from cross (const Ptv&, const Ptv&, Ptv&): The dimentions of a and b must be the same.")); } if ( a.size() == 2 ) { c.redim(1); c[0] = a[0]*b[1] - a[1]*b[0]; } else if ( a.size() == 3 ) { c.redim(3); c[0] = a[1]*b[2] - b[1]*a[2]; c[1] = - a[0]*b[2] + b[0]*a[2]; c[2] = a[0]*b[1] - b[0]*a[1]; } else { throw(std::logic_error("The cross product can only be computed in 2D and 3D.")); } } bool is_equal(Ptv& a, Ptv& b) { if (a.size() != b.size()) return false; for (unsigned int i=0; i < a.size(); i++ ) { if ( fabs( a[i] - b[i]) > Ptv::tol ) { return false; } } return true; } bool line_contains(Ptv& e0, Ptv& e1, Ptv& p) { if ( is_equal(e0, p) || is_equal(e1, p) ) return true; // vec0 = e1-e0 Ptv vec0; sub(e1,e0, vec0); // vec1 = e1-p Ptv vec1; sub(e1, p, vec1); // check if the vec0 and vec1 are parallel Ptv c; cross(vec0, vec1, c); if (norm(c) > Ptv::tol) { return false; } // check whether the edge (e0,e1) contains p . if ( e0.less(p) && e1.less(p) ) return false; if ( p.less(e0) && p.less(e1) ) return false; return true; } bool is_inside_triangle(Ptv& e0, Ptv& e1, Ptv& e2, Ptv& p) { Ptv n0; sub(e0, p, n0); normalize(n0); Ptv n1; sub(e1, p, n1); normalize(n1); Ptv n2; sub(e2, p, n2); normalize(n2); double c0 = acos(mul(n0,n1)); double c1 = acos(mul(n1,n2)); double c2 = acos(mul(n2,n1)); if ( fabs(c0 + c1 + c2 - 2*3.1415926535897931) < Ptv::tol) return true; return false; } // FIXME this code can be made more general and put in // a more appropriate place. For now it is only used by // the boundary function. It only works in 2D. bool contains2D(Ptv& e0, Ptv& e1, Ptv& p) { if ( e0.size() != e1.size() || e0.size() != p.size() ) { throw(std::logic_error("Exception from contains2D(Ptv&, Ptv&, Ptv&): The dimentions of a and b must be the same.")); } bool b = line_contains(e0, e1, p); return b; } bool contains3D(Ptv& e0, Ptv& e1, Ptv& e2, Ptv& p) { // check if p is either e0, e1, or e2 if ( is_equal(e0, p) ) return true; else if ( is_equal(e1, p) ) return true; else if ( is_equal(e2, p) ) return true; // check if p is on the lines connecting e0, e1, and e2 if ( line_contains(e0, e1, p) ) return true; else if ( line_contains(e1, e2, p) ) return true; else if ( line_contains(e2, e1, p) ) return true; // check if p is inside the triangle with verticies e0, e1, and e2 if ( is_inside_triangle(e0, e1, e2, p) ) return true; return false; } } // namespace SyFi syfi-1.0.0.dfsg.orig/syfi/ArnoldFalkWintherWeakSym.cpp0000644000175000017500000001302011672223006022553 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "ArnoldFalkWintherWeakSym.h" #include "Nedelec2Hdiv.h" #include "DiscontinuousLagrange.h" #include "P0.h" #include "utilities.h" using std::cout; using std::endl; namespace SyFi { //------------ sigma element ArnoldFalkWintherWeakSymSigma::ArnoldFalkWintherWeakSymSigma() : StandardFE() { description = "ArnoldFalkWintherWeakSymSigma"; } ArnoldFalkWintherWeakSymSigma::ArnoldFalkWintherWeakSymSigma(Polygon& p, int order) : StandardFE(p, order) { compute_basis_functions(); } void ArnoldFalkWintherWeakSymSigma:: compute_basis_functions() { // remove previously computed basis functions and dofs Ns.clear(); dofs.clear(); if ( order < 1 ) { throw(std::logic_error("Arnold-Falk-Winther elements must be of order 1 or higher.")); } if ( p == NULL ) { throw(std::logic_error("You need to set a polygon before the basisfunctions can be computed")); } description = istr("ArnoldFalkWintherWeakSymSigma_", order) + "_3D"; Nedelec2Hdiv fe; fe.set_order(order); fe.set_polygon(*p); fe.compute_basis_functions(); for (int d=0; d<3; d++) { for (unsigned int i=0; i 1 ) { VectorDiscontinuousLagrange fe; fe.set_order(order-1); fe.set_size(3); fe.set_polygon(*p); fe.compute_basis_functions(); for (unsigned int i=0; i 1 ) { VectorDiscontinuousLagrange fe; fe.set_order(order); fe.set_size(3); fe.set_polygon(*p); fe.compute_basis_functions(); for (unsigned int i=0; i. #ifndef UTILITIES_IS_INCLUDED #define UTILITIES_IS_INCLUDED #include #include #include "containers.h" namespace SyFi { extern const int version_major; extern const int version_minor; extern const char* version_micro; // dirac delta function int dirac(unsigned int i, unsigned int j); // string utilities std::string int2string(int i); std::string istr(const std::string & a, int b); std::string istr(const std::string & a, int b, int c); std::string lst2string(GiNaC::lst& l); //std::string lst2string(GiNaC::exvector& v); //GiNaC::lst compute_functions(GiNaC::lst& equations, GiNaC::lst& variables, GiNaC::lst& space); // print functions #ifndef SWIG void print(GiNaC::exvector& v); void print(GiNaC::lst& l); void print(GiNaC::exmap m); void print(ex_int_map m); void print(std::map, GiNaC::ex> & A); #endif } // namespace SyFi #endif syfi-1.0.0.dfsg.orig/syfi/tools.h0000644000175000017500000000204411672223006016505 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef TOOLS_IS_INCLUDED #define TOOLS_IS_INCLUDED #include "utilities.h" // basic utilitites and definitions #include "symbol_factory.h" // constructing symbols #include "diff_tools.h" // differential operators #include "ginac_tools.h" // constructing polynomials, inspecting and manipulating ginac objects #endif syfi-1.0.0.dfsg.orig/syfi/Ptv.cpp0000644000175000017500000000735111672223006016457 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "Ptv.h" #include #include using std::ostream; using std::endl; double Ptv::tol = 1.0e-9; double Ptv_match::tol = 1.0e-9; //double Ptv::tol = .0; //double Ptv_match::tol = .0; Ptv::Ptv() : dim(0) { v = new double[0]; } Ptv::Ptv(double x, double y) { dim = 2; v = new double[2]; v[0] = x; v[1] = y; } Ptv::Ptv(double x, double y, double z) { dim = 3; v = new double[3]; v[0] = x; v[1] = y; v[2] = z; } Ptv::Ptv(unsigned int size_) { dim = size_; v = new double[dim]; for (unsigned int i=0; i< dim; i++) { v[i] = 0.0; } } // FIXME: // The constructor which takes int, double* could/should work // on the double* provided instead of creating a copy. // This however affects the destructor. Since Ptv should // not delete memory. // We could introduce a bool external_storage in Ptv which // is used as a test in the destructor. Ptv::Ptv(unsigned int size_, double* v_) { dim = size_; v = new double[dim]; for (unsigned int i=0; i< dim; i++) { v[i] = v_[i]; } } Ptv::Ptv(const Ptv& p) { dim = p.size(); v = new double[dim]; for (unsigned int i=0; i< dim; i++) { v[i] = p[i]; } } Ptv::~Ptv() { delete [] v; } void Ptv::redim(unsigned int size_, double* v_) { if (dim != size_ ) { delete [] v; dim = size_; v = new double[dim]; } for (unsigned int i=0; i< dim; i++) { v[i] = v_[i]; } } void Ptv::redim(unsigned int size_) { if (dim != size_ ) { delete [] v; dim = size_; v = new double[dim]; } for (unsigned int i=0; i< dim; i++) { v[i] = 0.0; } } void Ptv::fill(double* v_) { for (unsigned int i=0; i< dim; i++) { v[i] = v_[i]; } } const unsigned int Ptv::size() const { return dim;} const double& Ptv::operator [] (unsigned int i) const { return v[i]; } double& Ptv::operator [] (unsigned int i) { return v[i]; } Ptv& Ptv::operator = (const Ptv& p) { if ( this != &p) { if ( dim != p.size()) { delete [] v; dim = p.size(); v = new double[dim]; } for (unsigned int i=0; i< dim; i++) { v[i] = p[i]; } } return *this; } bool Ptv::less(const Ptv& p) const { if ( dim < p.size() ) return true ; if ( dim > p.size() ) return false; /* for (int i=dim-1; i>= 0; i--) { if ( fabs(v[i] - p[i]) > tol ) { if (v[i] < p[i]) return true; else return false; } } */ for (int i=dim-1; i>= 0; i--) { if ( v[i] + tol >= p[i] - tol && v[i] - tol <= p[i] + tol ) { } else if (v[i] + tol < p[i] - tol ) { return true; } else if ( v[i] - tol > p[i] + tol ) { return false; } } return false; } ostream & operator<< ( ostream& os, const Ptv& p) { if (p.size() >= 1) { os <<"["; for (unsigned int i=0; i< p.size()-1; i++) { os <= p[d] && v - tol <= p[d] ) return true; else return false; } syfi-1.0.0.dfsg.orig/syfi/Robust.cpp0000644000175000017500000004773211672223006017173 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "Robust.h" #include #include "tools.h" using std::cout; using std::endl; using std::string; using GiNaC::exmap; namespace SyFi { Robust:: Robust() : StandardFE() { description = "Robust"; } Robust:: Robust(Polygon& p, int unsigned order, bool pointwise_) : StandardFE(p, order) { pointwise = pointwise_; compute_basis_functions(); } void Robust:: compute_basis_functions() { // remove previously computed basis functions and dofs Ns.clear(); dofs.clear(); GiNaC::ex nsymb = GiNaC::symbol("n"); GiNaC::ex tsymb = GiNaC::symbol("t"); if ( p == NULL ) { throw(std::logic_error("You need to set a polygon before the basisfunctions can be computed")); } if ( p->str().find("Line") != string::npos ) { cout <<"Can not define the Robust element on a line"<str().find("Triangle") != string::npos ) { if (pointwise) { description = "Robust_2D"; Triangle& triangle = (Triangle&)(*p); GiNaC::lst equations; GiNaC::lst variables; GiNaC::ex V_space = bernsteinv(2, order+3, triangle, "a"); GiNaC::ex V = V_space.op(0); GiNaC::ex V_vars = V_space.op(1); GiNaC::ex divV = div(V); exmap basis2coeff = pol2basisandcoeff(divV); exmap::iterator iter; // div constraints: for (iter = basis2coeff.begin(); iter != basis2coeff.end(); iter++) { GiNaC::ex basis = (*iter).first; GiNaC::ex coeff= (*iter).second; if ( coeff != 0 ) { } if ( coeff != 0 && ( basis.degree(x) + basis.degree(y) > int(order) ) ) { equations.append( coeff == 0 ); } } // normal constraints on edges: for (int i=0; i< 3; i++) { Line line = triangle.line(i); GiNaC::symbol s("s"); GiNaC::lst normal_vec = normal(triangle, i); GiNaC::ex Vn = inner(V, normal_vec); Vn = Vn.subs(line.repr(s).op(0)).subs(line.repr(s).op(1)); basis2coeff = pol2basisandcoeff(Vn,s); for (iter = basis2coeff.begin(); iter != basis2coeff.end(); iter++) { GiNaC::ex basis = (*iter).first; GiNaC::ex coeff= (*iter).second; if ( coeff != 0 && basis.degree(s) > int(order+1) ) { equations.append( coeff == 0 ); } } } if ( order%2==1 ) { // tangent constraints on edges: for (int i=0; i< 3; i++) { Line line = triangle.line(i); GiNaC::symbol s("s"); GiNaC::lst tangent_vec = tangent(triangle, i); GiNaC::ex Vt = inner(V, tangent_vec); Vt = Vt.subs(line.repr(s).op(0)).subs(line.repr(s).op(1)); basis2coeff = pol2basisandcoeff(Vt,s); for (iter = basis2coeff.begin(); iter != basis2coeff.end(); iter++) { GiNaC::ex basis = (*iter).first; GiNaC::ex coeff= (*iter).second; if ( coeff != 0 && basis.degree(s) > int(order+2) ) { equations.append( coeff == 0 ); } } } } GiNaC::ex dofi; // dofs related to the normal on the edges for (int i=0; i< 3; i++) { Line line = triangle.line(i); GiNaC::lst normal_vec = normal(triangle, i); GiNaC::ex Vn = inner(V, normal_vec); GiNaC::lst points = interior_coordinates(line, order + 1); GiNaC::ex edge_length = line.integrate(GiNaC::numeric(1)); GiNaC::ex point; for (unsigned int j=0; j< points.nops(); j++) { point = points.op(j); dofi = Vn.subs(x == point.op(0)).subs(y == point.op(1))*edge_length; dofs.insert(dofs.end(), GiNaC::lst(point,nsymb)); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); } } if ( order%2==0) { // dofs related to the tangent on the edges for (int i=0; i< 3; i++) { Line line = triangle.line(i); GiNaC::lst tangent_vec = tangent(triangle, i); GiNaC::ex Vt = inner(V, tangent_vec); GiNaC::lst points = interior_coordinates(line, order); GiNaC::ex edge_length = line.integrate(GiNaC::numeric(1)); GiNaC::ex point; for (unsigned int j=0; j< points.nops(); j++) { point = points.op(j); dofi = Vt.subs(x == point.op(0)).subs(y == point.op(1))*edge_length; dofs.insert(dofs.end(), GiNaC::lst(point,tsymb)); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); } } } if ( order%2==1 ) { // dofs related to the tangent on the edges for (int i=0; i< 3; i++) { Line line = triangle.line(i); GiNaC::lst tangent_vec = tangent(triangle, i); GiNaC::ex Vt = inner(V, tangent_vec); GiNaC::lst points = interior_coordinates(line, order-1); GiNaC::ex edge_length = line.integrate(GiNaC::numeric(1)); GiNaC::ex point; for (unsigned int j=0; j< points.nops(); j++) { point = points.op(j); dofi = Vt.subs(x == point.op(0)).subs(y == point.op(1))*edge_length; dofs.insert(dofs.end(), GiNaC::lst(point,tsymb)); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); } } } // dofs related to the whole triangle GiNaC::lst bernstein_polv; if ( order > 0) { GiNaC::lst points = interior_coordinates(triangle, order-1); GiNaC::ex point; GiNaC::ex eq; for (unsigned int i=0; i< points.nops(); i++) { point = points.op(i); // x - components of interior dofs dofi = V.op(0).subs(x == point.op(0)).subs(y == point.op(1)); eq = dofi == GiNaC::numeric(0); equations.append(eq); dofs.insert(dofs.end(), GiNaC::lst(point,0)); // y - components of interior dofs dofi = V.op(1).subs(x == point.op(0)).subs(y == point.op(1)); eq = dofi == GiNaC::numeric(0); equations.append(eq); dofs.insert(dofs.end(), GiNaC::lst(point,1)); } } variables = collapse(GiNaC::lst(V_vars.op(0),V_vars.op(1))); // std::cout <<"no variables "<(b)); GiNaC::lst subs; for (unsigned int ii=0; ii int(order) ) ) { equations.append( coeff == 0 ); } } // normal constraints on edges: for (int i=0; i< 3; i++) { Line line = triangle.line(i); GiNaC::symbol s("s"); GiNaC::lst normal_vec = normal(triangle, i); GiNaC::ex Vn = inner(V, normal_vec); Vn = Vn.subs(line.repr(s).op(0)).subs(line.repr(s).op(1)); basis2coeff = pol2basisandcoeff(Vn,s); for (iter = basis2coeff.begin(); iter != basis2coeff.end(); iter++) { GiNaC::ex basis = (*iter).first; GiNaC::ex coeff= (*iter).second; if ( coeff != 0 && basis.degree(s) > int(order+1) ) { equations.append( coeff == 0 ); } } } if ( order%2==1 ) { // tangent constraints on edges: for (int i=0; i< 3; i++) { Line line = triangle.line(i); GiNaC::symbol s("s"); GiNaC::lst tangent_vec = tangent(triangle, i); GiNaC::ex Vt = inner(V, tangent_vec); Vt = Vt.subs(line.repr(s).op(0)).subs(line.repr(s).op(1)); basis2coeff = pol2basisandcoeff(Vt,s); for (iter = basis2coeff.begin(); iter != basis2coeff.end(); iter++) { GiNaC::ex basis = (*iter).first; GiNaC::ex coeff= (*iter).second; if ( coeff != 0 && basis.degree(s) > int(order+2) ) { equations.append( coeff == 0 ); } } } } // dofs related to the normal on the edges for (int i=0; i< 3; i++) { Line line = triangle.line(i); GiNaC::lst normal_vec = normal(triangle, i); GiNaC::ex Pk1_space = bernstein(order+1, line, istr("a",i)); GiNaC::ex Pk1 = Pk1_space.op(2); GiNaC::ex Vn = inner(V, normal_vec); GiNaC::ex basis; for (unsigned int j=0; j< Pk1.nops(); j++) { basis = Pk1.op(j); GiNaC::ex integrand = Vn*basis; GiNaC::ex dofi = line.integrate(integrand); // dofs.insert(dofs.end(), dofi); GiNaC::lst d = GiNaC::lst(GiNaC::lst(line.vertex(0), line.vertex(1)),j); dofs.insert(dofs.end(), d); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); GiNaC::ex u = GiNaC::matrix(2,1,GiNaC::lst(GiNaC::symbol("v[0]"), GiNaC::symbol("v[1]"))); GiNaC::ex n = GiNaC::matrix(2,1,GiNaC::lst(GiNaC::symbol("normal_vec[0]"), GiNaC::symbol("normal_vec[1]"))); dof_repr.append(GiNaC::lst(inner(u,n)*basis.subs( x == GiNaC::symbol("xi[0]")) .subs( y == GiNaC::symbol("xi[1]")), d)); } } // dofs related to the tangent on the edges if ( order%2==0 ) { for (int i=0; i< 3; i++) { Line line = triangle.line(i); GiNaC::lst tangent_vec = tangent(triangle, i); GiNaC::ex Pk_space = bernstein(order, line, istr("a",i)); GiNaC::ex Pk = Pk_space.op(2); GiNaC::ex Vt = inner(V, tangent_vec); GiNaC::ex basis; for (unsigned int j=0; j< Pk.nops(); j++) { basis = Pk.op(j); GiNaC::ex integrand = Vt*basis; GiNaC::ex dofi = line.integrate(integrand); // dofs.insert(dofs.end(), dofi); GiNaC::lst d = GiNaC::lst(GiNaC::lst(line.vertex(0), line.vertex(1)),2); dofs.insert(dofs.end(), d); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); GiNaC::ex u = GiNaC::matrix(2,1,GiNaC::lst(GiNaC::symbol("v[0]"), GiNaC::symbol("v[1]"))); GiNaC::ex t = GiNaC::matrix(2,1,GiNaC::lst(-GiNaC::symbol("normal_vec[1]"), GiNaC::symbol("normal_vec[0]"))); dof_repr.append(GiNaC::lst(inner(u,t)*basis.subs( x == GiNaC::symbol("xi[0]")) .subs( y == GiNaC::symbol("xi[1]")), d)); } } } if ( order%2==1 ) { for (int i=0; i< 3; i++) { Line line = triangle.line(i); GiNaC::lst tangent_vec = tangent(triangle, i); GiNaC::ex Pk_space = bernstein(order-1, line, istr("a",i)); GiNaC::ex Pk = Pk_space.op(2); GiNaC::ex Vt = inner(V, tangent_vec); GiNaC::ex basis; for (unsigned int j=0; j< Pk.nops(); j++) { basis = Pk.op(j); GiNaC::ex integrand = Vt*basis; GiNaC::ex dofi = line.integrate(integrand); // dofs.insert(dofs.end(), dofi); GiNaC::lst d = GiNaC::lst(GiNaC::lst(line.vertex(0), line.vertex(1)),2); dofs.insert(dofs.end(), d); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); GiNaC::ex u = GiNaC::matrix(2,1,GiNaC::lst(GiNaC::symbol("v[0]"), GiNaC::symbol("v[1]"))); GiNaC::ex t = GiNaC::matrix(2,1,GiNaC::lst(-GiNaC::symbol("normal_vec[1]"), GiNaC::symbol("normal_vec[0]"))); dof_repr.append(GiNaC::lst(inner(u,t)*basis.subs( x == GiNaC::symbol("xi[0]")) .subs( y == GiNaC::symbol("xi[1]")), d)); } } } // dofs related to the whole triangle GiNaC::lst bernstein_polv; if ( order > 0) { bernstein_polv = bernsteinv(2,order-1, triangle, "a"); GiNaC::ex basis_space = bernstein_polv.op(2); for (unsigned int i=0; i< basis_space.nops(); i++) { GiNaC::lst basis = GiNaC::ex_to(basis_space.op(i)); GiNaC::ex integrand = inner(V, basis); GiNaC::ex dofi = triangle.integrate(integrand); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); GiNaC::lst d = GiNaC::lst(GiNaC::lst(triangle.vertex(0), triangle.vertex(1), triangle.vertex(2)), i); dofs.insert(dofs.end(), d); } } variables = collapse(GiNaC::lst(V_vars.op(0),V_vars.op(1))); // std::cout <<"no variables "<(b)); GiNaC::lst subs; for (unsigned int ii=0; iistr().find("Line") != string::npos ) { cout <<"Can not define the Robust element on a line"<str().find("Triangle") != string::npos ) { description = "Robust_2D"; Triangle& triangle = (Triangle&)(*p); GiNaC::lst equations; GiNaC::lst variables; GiNaC::ex V_space = bernsteinv(2, order, triangle, "a"); GiNaC::ex V = V_space.op(0); GiNaC::ex V_vars = V_space.op(1); GiNaC::ex divV = div(V); exmap basis2coeff = pol2basisandcoeff(divV); exmap::iterator iter; // div constraints: for (iter = basis2coeff.begin(); iter != basis2coeff.end(); iter++) { GiNaC::ex basis = (*iter).first; GiNaC::ex coeff= (*iter).second; if ( coeff != 0 && ( basis.degree(x) > 0 || basis.degree(y) > 0 ) ) { equations.append( coeff == 0 ); } } // constraints on edges: for (int i=0; i< 3; i++) { Line line = triangle.line(i); GiNaC::symbol s("s"); GiNaC::lst normal_vec = normal(triangle, i); GiNaC::ex Vn = inner(V, normal_vec); Vn = Vn.subs(line.repr(s).op(0)).subs(line.repr(s).op(1)); basis2coeff = pol2basisandcoeff(Vn,s); for (iter = basis2coeff.begin(); iter != basis2coeff.end(); iter++) { GiNaC::ex basis = (*iter).first; GiNaC::ex coeff= (*iter).second; if ( coeff != 0 && basis.degree(s) > 1 ) { equations.append( coeff == 0 ); } } } // dofs related to the normal on the edges for (int i=0; i< 3; i++) { Line line = triangle.line(i); GiNaC::lst normal_vec = normal(triangle, i); GiNaC::ex Pk1_space = bernstein(1, line, istr("a",i)); GiNaC::ex Pk1 = Pk1_space.op(2); GiNaC::ex Vn = inner(V, normal_vec); GiNaC::ex basis; for (unsigned int j=0; j< Pk1.nops(); j++) { basis = Pk1.op(j); GiNaC::ex integrand = Vn*basis; GiNaC::ex dofi = line.integrate(integrand); // dofs.insert(dofs.end(), dofi); GiNaC::lst d = GiNaC::lst(GiNaC::lst(line.vertex(0), line.vertex(1)),j); dofs.insert(dofs.end(), d); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); GiNaC::ex u = GiNaC::matrix(2,1,GiNaC::lst(GiNaC::symbol("v[0]"), GiNaC::symbol("v[1]"))); GiNaC::ex n = GiNaC::matrix(2,1,GiNaC::lst(GiNaC::symbol("normal_vec[0]"), GiNaC::symbol("normal_vec[1]"))); dof_repr.append(GiNaC::lst(inner(u,n)*basis.subs( x == GiNaC::symbol("xi[0]")) .subs( y == GiNaC::symbol("xi[1]")), d)); } } // dofs related to the tangent on the edges for (int i=0; i< 3; i++) { Line line = triangle.line(i); GiNaC::lst tangent_vec = tangent(triangle, i); GiNaC::ex Pk_space = bernstein(0, line, istr("a",i)); GiNaC::ex Pk = Pk_space.op(2); GiNaC::ex Vt = inner(V, tangent_vec); GiNaC::ex basis; for (unsigned int j=0; j< Pk.nops(); j++) { basis = Pk.op(j); GiNaC::ex integrand = Vt*basis; GiNaC::ex dofi = line.integrate(integrand); // dofs.insert(dofs.end(), dofi); GiNaC::lst d = GiNaC::lst(GiNaC::lst(line.vertex(0), line.vertex(1)),2); dofs.insert(dofs.end(), d); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); GiNaC::ex u = GiNaC::matrix(2,1,GiNaC::lst(GiNaC::symbol("v[0]"), GiNaC::symbol("v[1]"))); GiNaC::ex t = GiNaC::matrix(2,1,GiNaC::lst(-GiNaC::symbol("normal_vec[1]"), GiNaC::symbol("normal_vec[0]"))); dof_repr.append(GiNaC::lst(inner(u,t)*basis.subs( x == GiNaC::symbol("xi[0]")) .subs( y == GiNaC::symbol("xi[1]")), d)); } } variables = collapse(GiNaC::lst(V_vars.op(0),V_vars.op(1))); GiNaC::matrix b; GiNaC::matrix A; matrix_from_equations(equations, variables, A, b); unsigned int ncols = A.cols(); GiNaC::matrix vars_sq(ncols, ncols); // matrix of symbols for (unsigned r=0; r(b)); GiNaC::lst subs; for (unsigned int ii=0; ii. #include "ElementComputations.h" #include "tools.h" using std::cout; using std::endl; namespace SyFi { void usage(FE& fe) { for (unsigned int i=0; i< fe.nbf(); i++) { cout <<"fe.N("<. #include "Dof.h" using namespace std; namespace SyFi { void Dof::clear() { counter = 0; emax = 0; imax = 0; loc2glob.clear(); dof2glob.clear(); glob2dof.clear(); glob2loc_map.clear(); } unsigned int Dof:: insert_dof(unsigned int e, unsigned int i, GiNaC::ex Li) { if (e > emax) emax = e; if (i > imax) imax = i; unsigned int return_dof; // check if the dof is new, if so // update counter, dof2glob and create // a new vector in glob2loc_map std::map< GiNaC::ex, unsigned int, GiNaC::ex_is_less >::iterator index_iter = dof2glob.find(Li); if( index_iter == dof2glob.end() ) { // define a new dof return_dof = counter; // count inserted global indices counter++; // the central "D -> global index" map dof2glob[Li] = return_dof; if ( create_glob2dof ) { std::pair p(return_dof, Li); glob2dof.insert(p); } if ( create_glob2loc ) { // initialize with empty vector glob2loc_map[return_dof] = vector_ii(); glob2loc_map[return_dof].reserve(imax); } } else // dof is not new { return_dof = index_iter->second; } // loc2glob should always be updated pair_ii index(e, i); loc2glob[index] = return_dof; // insert (e,i) in glob2loc_map[Li] if ( create_glob2loc ) { glob2loc_map[return_dof].push_back(index); } return return_dof; } unsigned int Dof::glob_dof(unsigned int e, unsigned int i) { pair_ii index(e, i); std::map::iterator res = loc2glob.find(index); if ( res == loc2glob.end() ) { //throw std::runtime_error("In glob_dof(e,i): Not found"); return -1; } return res->second; } unsigned int Dof::glob_dof(GiNaC::ex Lj) { std::map::iterator res = dof2glob.find(Lj); if ( res == dof2glob.end() ) { //throw std::runtime_error("In glob_dof(Lj): Not found"); return -1; } return res->second; } GiNaC::ex Dof::glob_dof(unsigned int j) { if ( !create_glob2dof ) { throw std::runtime_error("This structure has not been created, you must turn on the create_glob2dof flag before initialization!"); } std::map::iterator iter = glob2dof.find(j); if ( iter == glob2dof.end() ) { //throw std::runtime_error("In glob_dof(j): Not found"); std::cerr << "In glob_dof(j): Not found" << std::endl; return GiNaC::ex(); } return iter->second; } vector_ii Dof::glob2loc(unsigned int j) { if ( !create_glob2loc ) { throw std::runtime_error("This structure has not been created, you must turn on the create_glob2loc flag before initialization!"); } return glob2loc_map[j]; } } syfi-1.0.0.dfsg.orig/syfi/SpaceTimeElement.cpp0000644000175000017500000000744611672223006021077 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "symbol_factory.h" #include "diff_tools.h" #include "Lagrange.h" #include "P0.h" #include "SpaceTimeElement.h" namespace SyFi { SpaceTimeDomain::SpaceTimeDomain(Line& time_line_, Polygon& polygon_) { time_line = time_line_.copy(); polygon = polygon_.copy(); } SpaceTimeDomain* SpaceTimeDomain::copy() const { return new SpaceTimeDomain(*this); } SpaceTimeDomain::SpaceTimeDomain(const SpaceTimeDomain& domain) { if (time_line) { delete time_line; } if (polygon) { delete polygon; } time_line = domain.get_time_domain().copy(); polygon = domain.get_space_domain().copy(); } const std::string SpaceTimeDomain::str() const { return "Time" + polygon->str(); } unsigned int SpaceTimeDomain:: no_space_dim() const { return polygon->no_space_dim() +1; } Line SpaceTimeDomain ::line(unsigned int i) const { //FIXME // Could use the convention that the time line is the first line, the // next lines are the lines in the polygon return Line(); } GiNaC::ex SpaceTimeDomain:: repr(Repr_format format) const { return GiNaC::lst(time_line->repr(t, format), polygon->repr(format)); } GiNaC::ex SpaceTimeDomain::integrate(GiNaC::ex f, Repr_format format) { GiNaC::ex intf; // integrate in space intf = polygon->integrate(f, format); // integrate in time ((x,y,z) are now integrated away) intf = intf.subs( t == x ); intf = time_line->integrate(intf , format); return intf; } SpaceTimeElement:: SpaceTimeElement() : StandardFE() { description = "SpaceTimeElement"; } SpaceTimeElement:: SpaceTimeElement(Line* time_line_, unsigned int order_, StandardFE* fe_) { time_line = time_line_; order = order_; fe = fe_; compute_basis_functions(); } void SpaceTimeElement:: set_time_domain(Line* line_) { time_line = line_; } void SpaceTimeElement:: set_order_in_time(unsigned int order_) { order = order_; } void SpaceTimeElement:: set_spatial_element(StandardFE* fe_) { fe = fe_; } void SpaceTimeElement:: compute_basis_functions() { // remove previously computed basis functions and dofs Ns.clear(); dofs.clear(); if ( order < 1 ) { throw(std::logic_error("The elements must be of order 1 or higher.")); } if ( time_line == NULL ) { throw(std::logic_error("You need to set a time domain before the basisfunctions can be computed")); } if ( fe == NULL ) { throw(std::logic_error("You need to set a spatial element before the basisfunctions can be computed")); } StandardFE* time_element; if ( order == 0) { time_element = new P0(*time_line); } else { time_element = new Lagrange(*time_line, order); } for (unsigned int j = 0; j < fe->nbf(); j++) { GiNaC::ex Nj = fe->N(j); for (unsigned int i = 0; i < (*time_element).nbf(); i++) { GiNaC::ex Ni = (*time_element).N(i); Ni = Ni.subs(x == t); GiNaC::ex N = Nj*Ni; Ns.insert(Ns.end(), N); dofs.insert(dofs.end(), GiNaC::lst((*time_element).dof(i), fe->dof(j))); } } description = time_element->str() + "_" + fe->str(); delete time_element; } } // namespace SyFi syfi-1.0.0.dfsg.orig/syfi/symbol_factory.cpp0000644000175000017500000001055111672223006020736 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "symbol_factory.h" #include "utilities.h" #include #include #include using namespace std; using namespace GiNaC; namespace SyFi { // TODO: make structure for these //namespace space //{ unsigned int nsd = 2; //GiNaC::symbol p[4]; GiNaC::symbol x("(x is not initialized since initSyFi has never been called)"); GiNaC::symbol y("(y is not initialized since initSyFi has never been called)"); GiNaC::symbol z("(z is not initialized since initSyFi has never been called)"); GiNaC::symbol t("(t is not initialized since initSyFi has never been called)"); GiNaC::lst p; //} GiNaC::symbol infinity("(infinity is not initialized since initSyFi has never been called)"); GiNaC::symbol DUMMY("(DUMMY is not initialized since initSyFi has never been called)"); // Initialize global variables of SyFi void initSyFi(unsigned int nsd_) { // initSyFi uses the global coordinates x for nsd == 1 // initSyFi uses the global coordinates x,y for nsd == 2 // initSyFi uses the global coordinates x,y,z for nsd == 3 // when nsd > 3 the coordinates can be found in the p, which is of type lst // FIXME: this whole thing is just a mess, but it's a nontrivial job to fix it all over syfi... SyFi::nsd = nsd_; SyFi::t = get_symbol("t"); SyFi::infinity = get_symbol("infinity"); SyFi::DUMMY = get_symbol("DUMMY"); SyFi::x = get_symbol("(SyFi::x is not initialized)"); SyFi::y = get_symbol("(SyFi::y is not initialized)"); SyFi::z = get_symbol("(SyFi::z is not initialized)"); /* std::cout << "SyFi::p before remove_all:" << std::endl; std::cout << SyFi::p << std::endl; */ SyFi::p.remove_all(); /* std::cout << "SyFi::p after remove_all:" << std::endl; std::cout << SyFi::p << std::endl; */ if ( nsd > 3 ) { SyFi::x = get_symbol("(SyFi::x is an invalid symbol when nsd>3)"); SyFi::y = get_symbol("(SyFi::y is an invalid symbol when nsd>3)"); SyFi::z = get_symbol("(SyFi::z is an invalid symbol when nsd>3)"); ex tmp = get_symbolic_vector(nsd, "x"); for (unsigned int i=0; i 0 ) { SyFi::x = get_symbol("x"); SyFi::p.append(SyFi::x); } if ( nsd > 1 ) { SyFi::y = get_symbol("y"); SyFi::p.append(SyFi::y); } if ( nsd > 2 ) { SyFi::z = get_symbol("z"); SyFi::p.append(SyFi::z); } } /* std::cout << "SyFi::p at end of initSyFi:" << std::endl; std::cout << SyFi::p << std::endl; */ } // =========== symbol factory implementation from ginac manual page 14-15 map symbol_collection; bool symbol_exists(const string & name) { return symbol_collection.find(name) != symbol_collection.end(); } const symbol & get_symbol(const string & name) { map::iterator i = symbol_collection.find(name); if( i != symbol_collection.end() ) { return i->second; } return symbol_collection.insert(make_pair(name, symbol(name))).first->second; } const symbol & isymb(const string & a, int b) { return get_symbol(istr(a,b)); } const symbol & isymb(const string & a, int b, int c) { return get_symbol(istr(a,b,c)); } GiNaC::ex get_symbolic_vector(int m, const std::string & basename) { GiNaC::matrix A(m,1); for(int i=0; i. #ifndef ARNOLDFALKWINTHERWEAKSYM #define ARNOLDFALKWINTHERWEAKSYM #include "FE.h" namespace SyFi { class ArnoldFalkWintherWeakSymSigma : public StandardFE { public: ArnoldFalkWintherWeakSymSigma(); ArnoldFalkWintherWeakSymSigma(Polygon& p, int order = 1 ); virtual ~ArnoldFalkWintherWeakSymSigma() {} virtual void compute_basis_functions(); }; class ArnoldFalkWintherWeakSymU : public StandardFE { public: ArnoldFalkWintherWeakSymU(); ArnoldFalkWintherWeakSymU(Polygon& p, int order = 1); virtual ~ArnoldFalkWintherWeakSymU() {} virtual void compute_basis_functions(); }; class ArnoldFalkWintherWeakSymP : public StandardFE { public: ArnoldFalkWintherWeakSymP(); ArnoldFalkWintherWeakSymP(Polygon& p, int order = 1); virtual ~ArnoldFalkWintherWeakSymP() {} virtual void compute_basis_functions(); }; } // namespace SyFi #endif syfi-1.0.0.dfsg.orig/syfi/FE.cpp0000644000175000017500000000423411672223006016175 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "FE.h" #include using namespace std; namespace SyFi { StandardFE:: StandardFE() { p = NULL; order = -1; description = "StandardFE"; } StandardFE:: StandardFE(Polygon& p_, unsigned int order) { p = NULL; set_polygon(p_); set_order(order); description = "StandardFE"; } StandardFE:: ~StandardFE() { if (p) { delete p; } } unsigned int StandardFE:: nbf() const { return Ns.size(); } std::string StandardFE:: str() { return description; } void StandardFE:: compute_basis_functions() { cout <<"StandardFE compute_basis_functions not implemented."< nbf()-1) { throw(std::out_of_range("The index is out of range!")); } return dofs[i]; } GiNaC::ex StandardFE::N(unsigned int i) { if ( i < 0 || i > nbf()-1) { throw(std::out_of_range("The index is out of range!")); } return Ns[i]; } } // namespace SyFi syfi-1.0.0.dfsg.orig/syfi/syfi_version.h.in0000644000175000017500000000050011672223006020464 0ustar johannrjohannr#ifndef __SYFI_VERSION_H__ #define __SYFI_VERSION_H__ /* Major, minor, and micro version number of the SyFi library. */ int SYFILIB_MAJOR_VERSION = @SYFILIB_MAJOR_VERSION@; int SYFILIB_MINOR_VERSION = @SYFILIB_MINOR_VERSION@; char SYFILIB_MICRO_VERSION[] = "@SYFILIB_MICRO_VERSION@"; #endif // ndef __SYFI_VERSION_H__ syfi-1.0.0.dfsg.orig/syfi/OrderedPtvSet.h0000644000175000017500000000546511672223006020111 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef SIMPLEX_IS_INCLUDED #define SIMPLEX_IS_INCLUDED #include "Ptv.h" #include #include #include /* * Note: at present the OrderedPtvSet class is more general than a OrderedPtvSet. * It is actually a point set. Still, we will only use it as a OrderedPtvSet. * It might be that we should use a different name and/or implement * a sub class or something which is strictly a OrderedPtvSet. */ using namespace std; namespace SyFi { class OrderedPtvSet { vector Ptvs; public: OrderedPtvSet(); OrderedPtvSet(const Ptv& p0, const Ptv& p1); OrderedPtvSet(const Ptv& p0, const Ptv& p1, const Ptv& p2); OrderedPtvSet(const Ptv& p0, const Ptv& p1, const Ptv& p2, const Ptv& p3); virtual ~OrderedPtvSet(); void append(const Ptv& p); unsigned int size() const; const Ptv& operator [] (unsigned int i) const; Ptv& operator [] (unsigned int i); OrderedPtvSet& operator = (const OrderedPtvSet& p); bool less(const OrderedPtvSet& s) const; }; struct OrderedPtvSet_is_less : public std::binary_function { bool operator() (const OrderedPtvSet &lh, const OrderedPtvSet &rh) const { return lh.less(rh); } }; std::ostream & operator<< ( std::ostream& os, const OrderedPtvSet& p); // Note that this OrderedPtvSet_i might be implemented as a subclass ? class OrderedPtvSet_i { pair > si; public: OrderedPtvSet_i(); OrderedPtvSet_i(OrderedPtvSet& s, unsigned int i); OrderedPtvSet_i(OrderedPtvSet& s, unsigned int i0, unsigned int i1); virtual ~OrderedPtvSet_i(); const OrderedPtvSet& get_OrderedPtvSet() const; unsigned int get_i(unsigned int n) const; unsigned int size() const; bool less(const OrderedPtvSet_i& si) const; }; struct OrderedPtvSet_i_is_less : public std::binary_function { bool operator() (const OrderedPtvSet_i &lh, const OrderedPtvSet_i &rh) const { return lh.less(rh); } }; std::ostream & operator<< ( std::ostream& os, const OrderedPtvSet_i& si); } // namespace SyFi #endif syfi-1.0.0.dfsg.orig/syfi/Nedelec2Hdiv.h0000644000175000017500000000211211672223006017575 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef NEDELEC2HDIV_IS_INCLUDED #define NEDELEC2HDIV_IS_INCLUDED #include "FE.h" namespace SyFi { class Nedelec2Hdiv : public StandardFE { public: GiNaC::lst dof_repr; Nedelec2Hdiv(); Nedelec2Hdiv(Polygon& p, unsigned int order = 1); virtual ~Nedelec2Hdiv() {} virtual void compute_basis_functions(); }; } // namespace SyFi #endif syfi-1.0.0.dfsg.orig/syfi/OrderedPtvSet.cpp0000644000175000017500000001052411672223006020434 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "Ptv.h" #include "OrderedPtvSet.h" #include #include #include namespace SyFi { // --- OrderedPtvSet OrderedPtvSet:: OrderedPtvSet() { } OrderedPtvSet::~OrderedPtvSet() { Ptvs.clear(); } OrderedPtvSet:: OrderedPtvSet(const Ptv& p0, const Ptv& p1) { Ptvs.push_back(p0); Ptvs.push_back(p1); std::sort(Ptvs.begin(), Ptvs.end(), Ptv_is_less()); } OrderedPtvSet:: OrderedPtvSet(const Ptv& p0, const Ptv& p1, const Ptv& p2) { Ptvs.push_back(p0); Ptvs.push_back(p1); Ptvs.push_back(p2); std::sort(Ptvs.begin(), Ptvs.end(), Ptv_is_less()); } OrderedPtvSet:: OrderedPtvSet(const Ptv& p0, const Ptv& p1, const Ptv& p2, const Ptv& p3) { Ptvs.push_back(p0); Ptvs.push_back(p1); Ptvs.push_back(p2); Ptvs.push_back(p3); std::sort(Ptvs.begin(), Ptvs.end(), Ptv_is_less()); } void OrderedPtvSet:: append(const Ptv& p) { Ptvs.push_back(p); std::sort(Ptvs.begin(), Ptvs.end(), Ptv_is_less()); } unsigned int OrderedPtvSet:: size() const { return Ptvs.size(); } const Ptv& OrderedPtvSet:: operator [] (unsigned int i) const { return Ptvs[i]; } Ptv& OrderedPtvSet:: operator [] (unsigned int i) { return Ptvs[i]; } OrderedPtvSet& OrderedPtvSet::operator = (const OrderedPtvSet& p) { if ( this != &p) { Ptvs.clear(); for (unsigned int i=0; i p.size() ) return false; for (unsigned int i=Ptvs.size()-1; i>= 0; i--) { if ( Ptvs[i].less(p[i]) && p[i].less(Ptvs[i])) { } else if ( Ptvs[i].less(p[i]) ) { return true; } else if ( p[i].less(Ptvs[i]) ) { return false; } } return false; } std::ostream & operator<< ( std::ostream& os, const OrderedPtvSet& p) { if (p.size() >= 1) { os <<"["; for (unsigned int i=0; i< p.size()-1; i++) { os <= 0 && n < si.second.size() ) { return si.second[n]; } else { throw(std::out_of_range("The index is out of range!")); } } unsigned int OrderedPtvSet_i:: size() const { return si.second.size(); } bool OrderedPtvSet_i::less(const OrderedPtvSet_i& ss) const { if ( si.second.size() < ss.size() ) return true; if ( si.second.size() > ss.size() ) return false; for (unsigned int d=0; d< si.second.size(); d++) { if ( si.second[d] < ss.get_i(d) ) return true; if ( si.second[d] > ss.get_i(d) ) return false; } return si.first.less(ss.get_OrderedPtvSet()); } std::ostream & operator<< ( std::ostream& os, const OrderedPtvSet_i& p) { cout <= 1) { os <<",["; for (unsigned int i=0; i< p.size()-1; i++) { os <. #include "Nedelec.h" #include #include "tools.h" using std::cout; using std::endl; using std::string; using GiNaC::exmap; namespace SyFi { Nedelec:: Nedelec() : StandardFE() { description = "Nedelec"; } Nedelec:: Nedelec(Polygon& p, int order) : StandardFE(p, order) { compute_basis_functions(); } void Nedelec:: compute_basis_functions() { // remove previously computed basis functions and dofs Ns.clear(); dofs.clear(); if ( order < 0 ) { throw(std::logic_error("Nedelec elements must be of order 0 or higher.")); } if ( p == NULL ) { throw(std::logic_error("You need to set a polygon before the basisfunctions can be computed")); } if ( p->str().find("Line") != string::npos ) { cout <<"Can not define the Nedelec element on a line"<str().find("Triangle") != string::npos ) { description = istr("Nedelec_", order) + "2D"; int k = order; int removed_dofs=0; Triangle& triangle = (Triangle&)(*p); GiNaC::lst equations; GiNaC::lst variables; // create r GiNaC::ex R_k = homogenous_polv(2,k+1, 2, "a"); GiNaC::ex R_k_x = R_k.op(0).op(0); GiNaC::ex R_k_y = R_k.op(0).op(1); // Equations that make sure that r*x = 0 GiNaC::ex rx = (R_k_x*x + R_k_y*y).expand(); exmap pol_map = pol2basisandcoeff(rx); exmap::iterator iter; for (iter = pol_map.begin(); iter != pol_map.end(); iter++) { if ((*iter).second != 0 ) { equations.append((*iter).second == 0 ); removed_dofs++; } } // create p GiNaC::ex P_k = bernsteinv(2,k, triangle, "b"); GiNaC::ex P_k_x = P_k.op(0).op(0); GiNaC::ex P_k_y = P_k.op(0).op(1); // collect the variables of r and p in one list variables = collapse(GiNaC::lst(collapse(GiNaC::ex_to(R_k.op(1))), collapse(GiNaC::ex_to(P_k.op(1))))); // create the polynomial space GiNaC::lst pspace = GiNaC::lst( R_k_x + P_k_x, R_k_y + P_k_y); int counter = 0; GiNaC::symbol t("t"); GiNaC::ex dofi; // dofs related to edges for (int i=0; i< 3; i++) { Line line = triangle.line(i); GiNaC::lst tangent_vec = tangent(triangle, i); GiNaC::ex bernstein_pol = bernstein(order, line, istr("a",i)); GiNaC::ex basis_space = bernstein_pol.op(2); GiNaC::ex pspace_t = inner(pspace, tangent_vec); GiNaC::ex basis; for (unsigned int j=0; j< basis_space.nops(); j++) { counter++; basis = basis_space.op(j); GiNaC::ex integrand = pspace_t*basis; dofi = line.integrate(integrand); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); GiNaC::lst d = GiNaC::lst(GiNaC::lst(line.vertex(0), line.vertex(1)),j); dofs.insert(dofs.end(), d); } } // dofs related to the whole triangle GiNaC::lst bernstein_polv; if ( order > 0) { counter++; bernstein_polv = bernsteinv(2,order-1, triangle, "a"); GiNaC::ex basis_space = bernstein_polv.op(2); for (unsigned int i=0; i< basis_space.nops(); i++) { GiNaC::lst basis = GiNaC::ex_to(basis_space.op(i)); GiNaC::ex integrand = inner(pspace, basis); dofi = triangle.integrate(integrand); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); GiNaC::lst d = GiNaC::lst(GiNaC::lst(triangle.vertex(0), triangle.vertex(1), triangle.vertex(2)), i); dofs.insert(dofs.end(), d); } } // invert the matrix: // GiNaC has a bit strange way to invert a matrix. // It solves the system AA^{-1} = Id. // It seems that this way is the only way to do // properly with the solve_algo::gauss flag. GiNaC::matrix b; GiNaC::matrix A; matrix_from_equations(equations, variables, A, b); unsigned int ncols = A.cols(); GiNaC::matrix vars_sq(ncols, ncols); // matrix of symbols for (unsigned r=0; r(b)); GiNaC::lst subs; for (unsigned int ii=0; iistr().find("Tetrahedron") != string::npos ) { description = istr("Nedelec_", order) + "3D"; int k = order; int removed_dofs=0; Tetrahedron& tetrahedron= (Tetrahedron&)(*p); GiNaC::lst equations; GiNaC::lst variables; // create r GiNaC::ex R_k = homogenous_polv(3,k+1, 3, "a"); GiNaC::ex R_k_x = R_k.op(0).op(0); GiNaC::ex R_k_y = R_k.op(0).op(1); GiNaC::ex R_k_z = R_k.op(0).op(2); // Equations that make sure that r*x = 0 GiNaC::ex rx = (R_k_x*x + R_k_y*y + R_k_z*z).expand(); exmap pol_map = pol2basisandcoeff(rx); exmap::iterator iter; for (iter = pol_map.begin(); iter != pol_map.end(); iter++) { if ((*iter).second != 0 ) { equations.append((*iter).second == 0 ); removed_dofs++; } } // create p GiNaC::ex P_k = bernsteinv(3,k, tetrahedron, "b"); GiNaC::ex P_k_x = P_k.op(0).op(0); GiNaC::ex P_k_y = P_k.op(0).op(1); GiNaC::ex P_k_z = P_k.op(0).op(2); // collect the variables of r and p in one list variables = collapse(GiNaC::lst(collapse(GiNaC::ex_to(R_k.op(1))), collapse(GiNaC::ex_to(P_k.op(1))))); // create the polynomial space GiNaC::lst pspace = GiNaC::lst( R_k_x + P_k_x, R_k_y + P_k_y, R_k_z + P_k_z); int counter = 0; GiNaC::symbol t("t"); GiNaC::ex dofi; // dofs related to edges for (int i=0; i< 6; i++) { Line line = tetrahedron.line(i); GiNaC::ex line_repr = line.repr(t); GiNaC::lst tangent_vec = GiNaC::lst(line_repr.op(0).rhs().coeff(t,1), line_repr.op(1).rhs().coeff(t,1), line_repr.op(2).rhs().coeff(t,1)); GiNaC::ex bernstein_pol = bernstein(order, line, istr("a",i)); GiNaC::ex basis_space = bernstein_pol.op(2); GiNaC::ex pspace_t = inner(pspace, tangent_vec); GiNaC::ex basis; for (unsigned int j=0; j< basis_space.nops(); j++) { counter++; basis = basis_space.op(j); GiNaC::ex integrand = pspace_t*basis; dofi = line.integrate(integrand); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); GiNaC::lst d = GiNaC::lst(GiNaC::lst(line.vertex(0), line.vertex(1)),j); dofs.insert(dofs.end(), d); } } // dofs related to faces if ( order > 0 ) { for (int i=0; i< 4; i++) { Triangle triangle = tetrahedron.triangle(i); GiNaC::ex bernstein_pol = bernsteinv(3,order-1, triangle, istr("b", i)); GiNaC::ex basis_space = bernstein_pol.op(2); GiNaC::ex basis; GiNaC::lst normal_vec = normal(tetrahedron, i); GiNaC::ex pspace_n = cross(pspace, normal_vec); if ( normal_vec.op(0) != GiNaC::numeric(0) && normal_vec.op(1) != GiNaC::numeric(0) && normal_vec.op(2) != GiNaC::numeric(0) ) { for (unsigned int j=0; j 1 ) { GiNaC::ex bernstein_pol = bernsteinv(3,order-2, tetrahedron, istr("c", 0)); GiNaC::ex basis_space = bernstein_pol.op(2); GiNaC::ex basis; for (unsigned int j=0; j(b)); GiNaC::lst subs; for (unsigned int ii=0; ii. #include "DofT.h" #include "OrderedPtvSet.h" typedef DofT Dof_OrderedPtvSet; typedef DofT Dof_OrderedPtvSet_i; syfi-1.0.0.dfsg.orig/syfi/Hermite.cpp0000644000175000017500000002503611672223006017303 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "Hermite.h" #include "tools.h" using std::cout; using std::endl; using std::string; namespace SyFi { Hermite:: Hermite() : StandardFE() { description = "Hermite"; } Hermite:: Hermite(Polygon& p, int order) : StandardFE(p,order) { compute_basis_functions(); } void Hermite:: compute_basis_functions() { // remove previously computed basis functions and dofs Ns.clear(); dofs.clear(); if ( p == NULL ) { throw(std::logic_error("You need to set a polygon before the basisfunctions can be computed")); } GiNaC::ex polynom_space; GiNaC::ex polynom; GiNaC::lst variables; GiNaC::lst equations; if ( p->str().find("Line") != string::npos ) { description = "Hermite_1D"; polynom_space = legendre(3, 1, "a"); polynom = polynom_space.op(0); variables = GiNaC::ex_to(polynom_space.op(1)); for (int i=0; i< 2; i++) { GiNaC::ex v = p->vertex(i); GiNaC::ex dofv = polynom.subs(GiNaC::lst(x == v.op(0))); GiNaC::ex dofvdx = diff(polynom,x).subs(GiNaC::lst(x == v.op(0))); equations.append( dofv == GiNaC::numeric(0)); equations.append( dofvdx == GiNaC::numeric(0)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), 0)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), 1)); } } if ( p->str().find("Triangle") != string::npos ) { description = "Hermite_2D"; polynom_space = pol(3, 2, "a"); polynom = polynom_space.op(0); variables = GiNaC::ex_to(polynom_space.op(1)); for (int i=0; i<= 2; i++) { GiNaC::ex v = p->vertex(i); GiNaC::ex dofv = polynom.subs(GiNaC::lst(x == v.op(0), y == v.op(1))); GiNaC::ex dofvdx = diff(polynom,x).subs(GiNaC::lst(x == v.op(0), y == v.op(1))); GiNaC::ex dofvdy = diff(polynom,y).subs(GiNaC::lst(x == v.op(0), y == v.op(1))); equations.append( dofv == GiNaC::numeric(0)); equations.append( dofvdx == GiNaC::numeric(0)); equations.append( dofvdy == GiNaC::numeric(0)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), 0)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), 1)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), 2)); } GiNaC::ex midpoint = GiNaC::lst((p->vertex(0).op(0) + p->vertex(1).op(0) + p->vertex(2).op(0))/3, (p->vertex(0).op(1) + p->vertex(1).op(1) + p->vertex(2).op(1))/3); GiNaC::ex dofm = polynom.subs(GiNaC::lst(x == midpoint.op(0), y == midpoint.op(1))); dofs.insert(dofs.end(), midpoint ); equations.append( dofm == GiNaC::numeric(0)); } else if ( p->str().find("Rectangle") != string::npos ) { description = "Hermite_2D"; polynom_space = legendre(3, 2, "a"); polynom = polynom_space.op(0); variables = GiNaC::ex_to(polynom_space.op(1)); for (int i=0; i< 4; i++) { GiNaC::ex v = p->vertex(i); GiNaC::ex dofv = polynom.subs(GiNaC::lst(x == v.op(0), y == v.op(1))); GiNaC::ex dofvdx = diff(polynom,x).subs(GiNaC::lst(x == v.op(0), y == v.op(1))); GiNaC::ex dofvdy = diff(polynom,y).subs(GiNaC::lst(x == v.op(0), y == v.op(1))); GiNaC::ex dofvdyx = diff(diff(polynom,y),x).subs(GiNaC::lst(x == v.op(0), y == v.op(1))); equations.append( dofv == GiNaC::numeric(0)); equations.append( dofvdx == GiNaC::numeric(0)); equations.append( dofvdy == GiNaC::numeric(0)); equations.append( dofvdyx == GiNaC::numeric(0)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), 0)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), 1)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), 2)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), 3)); } } else if ( p->str().find("Tetrahedron") != string::npos ) { description = "Hermite_3D"; polynom_space = pol(3, 3, "a"); polynom = polynom_space.op(0); variables = GiNaC::ex_to(polynom_space.op(1)); for (int i=0; i<= 3; i++) { GiNaC::ex v = p->vertex(i); GiNaC::ex dofv = polynom.subs(GiNaC::lst(x == v.op(0), y == v.op(1), z == v.op(2) )); GiNaC::ex dofvdx = diff(polynom,x).subs(GiNaC::lst(x == v.op(0), y == v.op(1), z == v.op(2) )); GiNaC::ex dofvdy = diff(polynom,y).subs(GiNaC::lst(x == v.op(0), y == v.op(1), z == v.op(2) )); GiNaC::ex dofvdz = diff(polynom,z).subs(GiNaC::lst(x == v.op(0), y == v.op(1), z == v.op(2) )); equations.append( dofv == GiNaC::numeric(0)); equations.append( dofvdx == GiNaC::numeric(0)); equations.append( dofvdy == GiNaC::numeric(0)); equations.append( dofvdz == GiNaC::numeric(0)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), 0)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), 1)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), 2)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), 3)); } GiNaC::ex midpoint1 = GiNaC::lst( (p->vertex(0).op(0)*2 + p->vertex(1).op(0) + p->vertex(2).op(0) + p->vertex(3).op(0))/5, (p->vertex(0).op(1)*2 + p->vertex(1).op(1) + p->vertex(2).op(1) + p->vertex(3).op(1))/5, (p->vertex(0).op(2)*2 + p->vertex(1).op(2) + p->vertex(2).op(2) + p->vertex(3).op(2))/5); GiNaC::ex midpoint2 = GiNaC::lst( (p->vertex(0).op(0) + p->vertex(1).op(0)*2 + p->vertex(2).op(0) + p->vertex(3).op(0))/5, (p->vertex(0).op(1) + p->vertex(1).op(1)*2 + p->vertex(2).op(1) + p->vertex(3).op(1))/5, (p->vertex(0).op(2) + p->vertex(1).op(2)*2 + p->vertex(2).op(2) + p->vertex(3).op(2))/5); GiNaC::ex midpoint3 = GiNaC::lst( (p->vertex(0).op(0) + p->vertex(1).op(0) + p->vertex(2).op(0)*2 + p->vertex(3).op(0))/5, (p->vertex(0).op(1) + p->vertex(1).op(1) + p->vertex(2).op(1)*2 + p->vertex(3).op(1))/5, (p->vertex(0).op(2) + p->vertex(1).op(2) + p->vertex(2).op(2)*2 + p->vertex(3).op(2))/5); GiNaC::ex midpoint4 = GiNaC::lst( (p->vertex(0).op(0) + p->vertex(1).op(0) + p->vertex(2).op(0) + p->vertex(3).op(0)*2)/5, (p->vertex(0).op(1) + p->vertex(1).op(1) + p->vertex(2).op(1) + p->vertex(3).op(1)*2)/5, (p->vertex(0).op(2) + p->vertex(1).op(2) + p->vertex(2).op(2) + p->vertex(3).op(2)*2)/5); GiNaC::ex dofm1 = polynom.subs(GiNaC::lst(x == midpoint1.op(0), y == midpoint1.op(1), z == midpoint1.op(2))); GiNaC::ex dofm2 = polynom.subs(GiNaC::lst(x == midpoint2.op(0), y == midpoint2.op(1), z == midpoint2.op(2))); GiNaC::ex dofm3 = polynom.subs(GiNaC::lst(x == midpoint3.op(0), y == midpoint3.op(1), z == midpoint3.op(2))); GiNaC::ex dofm4 = polynom.subs(GiNaC::lst(x == midpoint4.op(0), y == midpoint4.op(1), z == midpoint4.op(2))); dofs.insert(dofs.end(), midpoint1 ); dofs.insert(dofs.end(), midpoint2 ); dofs.insert(dofs.end(), midpoint3 ); dofs.insert(dofs.end(), midpoint4 ); equations.append( dofm1 == GiNaC::numeric(0)); equations.append( dofm2 == GiNaC::numeric(0)); equations.append( dofm3 == GiNaC::numeric(0)); equations.append( dofm4 == GiNaC::numeric(0)); } else if ( p->str().find("Box") != string::npos ) { description = "Hermite_3D"; polynom_space = legendre(3, 3, "a"); polynom = polynom_space.op(0); variables = GiNaC::ex_to(polynom_space.op(1)); for (int i=0; i<= 7; i++) { GiNaC::ex v = p->vertex(i); GiNaC::ex dofv = polynom.subs(GiNaC::lst(x == v.op(0), y == v.op(1), z == v.op(2) )); GiNaC::ex dofvdx = diff(polynom,x).subs(GiNaC::lst(x == v.op(0), y == v.op(1), z == v.op(2) )); GiNaC::ex dofvdy = diff(polynom,y).subs(GiNaC::lst(x == v.op(0), y == v.op(1), z == v.op(2) )); GiNaC::ex dofvdyx = diff(diff(polynom,y),x).subs(GiNaC::lst(x == v.op(0), y == v.op(1), z == v.op(2) )); GiNaC::ex dofvdz = diff(polynom,z).subs(GiNaC::lst(x == v.op(0), y == v.op(1), z == v.op(2) )); GiNaC::ex dofvdzy = diff(diff(polynom,z),y).subs(GiNaC::lst(x == v.op(0), y == v.op(1), z == v.op(2) )); GiNaC::ex dofvdzx = diff(diff(polynom,z),x).subs(GiNaC::lst(x == v.op(0), y == v.op(1), z == v.op(2) )); GiNaC::ex dofvdzyx = diff(diff(diff(polynom,z),y),x).subs(GiNaC::lst(x == v.op(0), y == v.op(1), z == v.op(2) )); equations.append( dofv == GiNaC::numeric(0)); equations.append( dofvdx == GiNaC::numeric(0)); equations.append( dofvdy == GiNaC::numeric(0)); equations.append( dofvdyx == GiNaC::numeric(0)); equations.append( dofvdz == GiNaC::numeric(0)); // FIXME check Andrew/Ola numbering equations.append( dofvdzy == GiNaC::numeric(0)); // FIXME check Andrew/Ola numbering equations.append( dofvdzx == GiNaC::numeric(0)); equations.append( dofvdzyx == GiNaC::numeric(0)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), v.op(2), 0)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), v.op(2), 1)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), v.op(2), 2)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), v.op(2), 3)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), v.op(2), 4)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), v.op(2), 5)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), v.op(2), 6)); dofs.insert(dofs.end(), GiNaC::lst(v.op(0), v.op(1), v.op(2), 7)); } } GiNaC::matrix b; GiNaC::matrix A; matrix_from_equations(equations, variables, A, b); unsigned int ncols = A.cols(); GiNaC::matrix vars_sq(ncols, ncols); // matrix of symbols for (unsigned r=0; r(b)); GiNaC::lst subs; for (unsigned int ii=0; ii. #include "ginac_tools.h" #include "symbol_factory.h" #include #include #include #include #include using namespace std; using namespace GiNaC; namespace SyFi { GiNaC::lst cross(GiNaC::lst& v1, GiNaC::lst& v2) { GiNaC::lst ret; if ( v1.nops() != v2.nops() ) { cout <<"incompatible vectors "<(a) && GiNaC::is_a(b)) { GiNaC::matrix ma = GiNaC::ex_to(a); GiNaC::matrix mb = GiNaC::ex_to(b); if ( !transposed ) { if (ma.cols() != mb.cols() || ma.rows() != mb.rows() ) { cout <<"Incompatible matrices "<(a) && GiNaC::is_a(b)) { return inner(GiNaC::ex_to(a), GiNaC::ex_to(b)); } else { return a*b; } } GiNaC::ex inner(GiNaC::lst v1, GiNaC::lst v2) { GiNaC::ex ret; if ( v1.nops() != v2.nops() ) { cout <<"incompatible vectors "<(v1.op(i)) && GiNaC::is_a(v2.op(i)) ) { ret += inner(GiNaC::ex_to(v1.op(i)), GiNaC::ex_to(v2.op(i))); } else { ret += v1.op(i)*v2.op(i); } } return ret; } GiNaC::ex inner(GiNaC::exvector& v1, GiNaC::exvector& v2) { GiNaC::ex ret; for (unsigned int i=0; i< v1.size(); i++) { ret += v1[i]*v2[i]; } return ret; } GiNaC::lst matvec(GiNaC::matrix& M, GiNaC::lst& x) { GiNaC::lst ret; int nr = M.rows(); int nc = M.cols(); for (int i = 0; i < nr; i++) { GiNaC::ex tmp; for (int j = 0; j < nc; j++) { tmp = tmp + M(i,j)*(x.op(j)); } ret.append(tmp); } return ret; } GiNaC::ex matvec(GiNaC::ex A, GiNaC::ex x) { ex sol; if (GiNaC::is_a(A) && GiNaC::is_a(x)) { GiNaC::matrix AA = GiNaC::ex_to(A); GiNaC::matrix xx = GiNaC::ex_to(x); sol = AA.mul(xx); } else { throw std::runtime_error("Invalid argument types, need matrices"); } return sol; } GiNaC::lst ex2equations(GiNaC::ex rel) { GiNaC::ex lhs = rel.lhs(); GiNaC::ex rhs = rel.rhs(); GiNaC::ex l; GiNaC::ex r; GiNaC::lst eqs; for (int i=lhs.ldegree(x); i<=lhs.degree(x); ++i) { for (int j=lhs.ldegree(y); j<=lhs.degree(y); ++j) { for (int k=lhs.ldegree(z); k<=lhs.degree(z); ++k) { l = lhs.coeff(x,i).coeff(y, j).coeff(z,k); r = rhs.coeff(x,i).coeff(y, j).coeff(z,k); // if (! (l == 0 && r == 0 ) ) eqs.append(l == r); OLD VERSION if ( (l != 0 && (r == 0 || r == 1) ) ) eqs.append(l == r); } } } eqs.sort(); return eqs; } GiNaC::lst collapse(GiNaC::lst l) { GiNaC::lst lc; GiNaC::lst::const_iterator iter1, iter2; for (iter1 = l.begin(); iter1 != l.end(); ++iter1) { if (GiNaC::is_a(*iter1)) { for (iter2 = GiNaC::ex_to(*iter1).begin(); iter2 != GiNaC::ex_to(*iter1).end(); ++iter2) { lc.append(*iter2); } } else { lc.append(*iter1); } } lc.sort(); lc.unique(); return lc; } GiNaC::matrix equations2matrix(const GiNaC::ex &eqns, const GiNaC::ex &symbols) { GiNaC::matrix sys(eqns.nops(),symbols.nops()); GiNaC::matrix rhs(eqns.nops(),1); GiNaC::matrix vars(symbols.nops(),1); for (size_t r=0; r(symbols.op(c)),1); linpart -= co*symbols.op(c); sys(r,c) = co; } linpart = linpart.expand(); rhs(r,0) = -linpart; } return sys; } void matrix_from_equations(const GiNaC::ex &eqns, const GiNaC::ex &symbols, GiNaC::matrix& A, GiNaC::matrix& b) { // build matrix from equation system GiNaC::matrix sys(eqns.nops(),symbols.nops()); GiNaC::matrix rhs(eqns.nops(),1); GiNaC::matrix vars(symbols.nops(),1); for (size_t r=0; r(symbols.op(c)),1); linpart -= co*symbols.op(c); sys(r,c) = co; } linpart = linpart.expand(); rhs(r,0) = -linpart; } A = sys; b = rhs; } GiNaC::ex lst_to_matrix2(const GiNaC::lst& l) { GiNaC::lst::const_iterator itr, itc; // Find number of rows and columns size_t rows = l.nops(), cols = 0; for (itr = l.begin(); itr != l.end(); ++itr) { if (!GiNaC::is_a(*itr)) // throw (std::invalid_argument("lst_to_matrix: argument must be a list of lists")); cols = 1; if (itr->nops() > cols) cols = itr->nops(); } // Allocate and fill matrix GiNaC::matrix &M = *new GiNaC::matrix(rows, cols); M.setflag(GiNaC::status_flags::dynallocated); unsigned i; for (itr = l.begin(), i = 0; itr != l.end(); ++itr, ++i) { unsigned j; if (cols == 1) { M(i, 0) = *itr; } else { for (itc = GiNaC::ex_to(*itr).begin(), j = 0; itc != GiNaC::ex_to(*itr).end(); ++itc, ++j) M(i, j) = *itc; } } return M; } GiNaC::lst matrix_to_lst2(const GiNaC::ex& m) { if (GiNaC::is_a(m)) { GiNaC::matrix A = GiNaC::ex_to(m); int cols = A.cols(); int rows = A.rows(); GiNaC::lst ret; if ( cols == 1 ) { for (unsigned int i=0; i<=A.rows()-1; i++) { ret.append(A(i,0)); } } else if ( rows == 1 ) { for (unsigned int i=0; i<=A.cols()-1; i++) { ret.append(A(0,i)); } } else { for (unsigned int i=0; i<=A.rows()-1; i++) { GiNaC::lst rl; for (unsigned int j=0; j<=A.cols()-1; j++) { rl.append(A(i,j)); } ret.append(rl); } } return ret; } else { return GiNaC::lst(); } } GiNaC::lst lst_equals(GiNaC::ex a, GiNaC::ex b) { GiNaC::lst ret; if ( (GiNaC::is_a(a)) && (GiNaC::is_a(b)) /*&& (a.nops() == b.nops())*/ ) { for (unsigned int i=0; i<= a.nops()-1; i++) { ret.append(b.op(i) == a.op(i)); } } else if ( !(GiNaC::is_a(a)) && !(GiNaC::is_a(b))) { ret.append(b == a); } else if ( !(GiNaC::is_a(a)) && (GiNaC::is_a(b))) { ret.append(b.op(0) == a); } else { throw(std::invalid_argument("Make sure that the lists a and b are comparable.")); } return ret; } int find(GiNaC::ex e, GiNaC::lst list) { for (unsigned int i=0; i< list.nops(); i++) { if ( e == list.op(i) ) return i; } return -1; } void visitor_subst_pow(GiNaC::ex e, GiNaC::exmap& map, ex_int_map& intmap, string a) { static int i=0; if (map.find(e) != map.end()) { intmap[e] = intmap[e]+1; return; } if (GiNaC::is_exactly_a(e)) { std::ostringstream s; s <(e)) { std::ostringstream s; s <(e)) { if (e.nops() > 4 && e.nops() < 10 ) { std::ostringstream s; s <(e)) { for (unsigned int i=0; i< e.nops(); i++) { GiNaC::ex e2 = e.op(i); visitor_subst_pow(e2,map,intmap,a); } } } void check_visitor(GiNaC::ex e, GiNaC::lst& exlist) { if (find(e, exlist) >= 0) return; // cout <<"ex e "<(e)) { } else if (GiNaC::is_a(e) ) { // cout <<"e "< 4 && e.nops() < 10 ) exlist.append(e); for (unsigned int i=0; i< e.nops(); i++) { GiNaC::ex e2 = e.op(i); // cout <<"add e "<(e)) { for (unsigned int i=0; i< e.nops(); i++) { GiNaC::ex e2 = e.op(i); // cout <<"mul e "<(e)) { for (unsigned int i=0; i< e.nops(); i++) { GiNaC::ex e2 = e.op(i); // cout <<"GiNaC::lst e "<(e)) { exlist.append(e); for (unsigned int i=0; i< e.nops(); i++) { GiNaC::ex e2 = e.op(i); // cout <<"power e "<(e)) { exlist.append(e); for (unsigned int i=0; i< e.nops(); i++) { GiNaC::ex e2 = e.op(i); // cout <<"function e "<(polspace.op(2)); for (GiNaC::lst::const_iterator basis_iterator = basis_tmp.begin(); basis_iterator != basis_tmp.end(); ++basis_iterator) { GiNaC::lst tmp_lst; for (unsigned int d=1; d<=no_fields; d++) tmp_lst.append(0); tmp_lst.let_op(i) = (*basis_iterator); ret3.append(tmp_lst); } } return GiNaC::lst(ret1,ret2,ret3); } GiNaC::ex pol(unsigned int order, unsigned int nsd, const string a) { using SyFi::x; using SyFi::y; using SyFi::z; GiNaC::ex ret; // ex to return int dof; // degrees of freedom GiNaC::ex A; // ex holding the coefficients a_0 .. a_dof GiNaC::lst basis; if (nsd == 1) { /* 1D: * P^n = a_0 + a_1*x + .... + a_n*x^n * dof : n+1 */ dof = order+1; A = get_symbolic_matrix(1,dof, a); int o=0; for (GiNaC::const_iterator i = A.begin(); i != A.end(); ++i) { ret += (*i)*pow(x,o); basis.append(pow(x,o)); o++; } } else if ( nsd == 2) { /* 2D: structure of coefficients (a_i) * [ a_0 a_1 x a_3 x^2 a_6 x^3 * [ a_2 y a_4 xy a_7 x^2y * [ a_5 y^2 a_8 xy^2 * [ a_9 y^3 */ dof = (order+1)*(order+2)/2; A = get_symbolic_matrix(1, dof , a); size_t i=0; for (unsigned int o = 0; o <= order; o++) { for (unsigned int d = 0; d <= o; d++) { ret += A.op(i)*pow(y,d)*pow(x,o-d); basis.append(pow(y,d)*pow(x,o-d)); i++; } } } else if (nsd == 3) { /* Similar structure as in 2D, but * structured as a tetraheder, i.e., * a_o + a_1 x + a_2 y + a_3 z * + a_4 x^2 + a_5 xy + */ dof = 0; for (unsigned int j=0; j<= order; j++) { dof += (j+1)*(j+2)/2; } A = get_symbolic_matrix(1, dof , a); size_t i=0; for (unsigned int o = 0; o <= order; o++) { for (unsigned int d = 0; d <= o; d++) { for (unsigned int f = 0; f <= o; f++) { if ( int(o)-int(d)-int(f) >= 0) { ret += A.op(i)*pow(y,f)*pow(z,d)*pow(x,o-d-f); basis.append(pow(y,f)*pow(z,d)*pow(x,o-d-f)); i++; } } } } } return GiNaC::lst(ret,matrix_to_lst2(A), basis); } GiNaC::lst polv(unsigned int no_fields, unsigned int order, unsigned int nsd, const string a) { GiNaC::lst ret1; // contains the polynom GiNaC::lst ret2; // contains the coefficients GiNaC::lst ret3; // constains the basis functions GiNaC::lst basis_tmp; for (unsigned int i=0; i< no_fields; i++) { GiNaC::lst basis; std::ostringstream s; s <(polspace.op(2)); for (GiNaC::lst::const_iterator basis_iterator = basis_tmp.begin(); basis_iterator != basis_tmp.end(); ++basis_iterator) { GiNaC::lst tmp_lst; for (unsigned int d=1; d<=no_fields; d++) tmp_lst.append(0); tmp_lst.let_op(i) = (*basis_iterator); ret3.append(tmp_lst); } } return GiNaC::lst(ret1,ret2,ret3); /* Old Code: GiNaC::lst ret; for (int i=1; i<= nsd; i++) { std::ostringstream s; s <(s)) { GiNaC::symbol ss = GiNaC::ex_to(s); e = expand(e); GiNaC::ex c; GiNaC::ex b; GiNaC::exmap map; for (int i=e.ldegree(ss); i<=e.degree(ss); ++i) { c = e.coeff(ss,i); b = pow(ss,i); map[b] = c; } return map; } else { throw(std::invalid_argument("The second argument must be a symbol.")); } } GiNaC::exmap pol2basisandcoeff(GiNaC::ex e) { using SyFi::x; using SyFi::y; using SyFi::z; e = expand(e); GiNaC::ex c; GiNaC::ex b; GiNaC::exmap map; for (int i=e.ldegree(x); i<=e.degree(x); ++i) { for (int j=e.ldegree(y); j<=e.degree(y); ++j) { for (int k=e.ldegree(z); k<=e.degree(z); ++k) { c = e.coeff(x,i).coeff(y, j).coeff(z,k); b = pow(x,i)*pow(y,j)*pow(z,k); map[b] = c; } } } return map; } GiNaC::ex legendre1D(const GiNaC::symbol x, unsigned int n) { GiNaC::ex P; // Rodrigue's formula for Legendre polynomial of 1D // The interval [-1, 1] P=1/(pow(2,n)*GiNaC::factorial(n))*GiNaC::diff(GiNaC::pow((x*x-1),n),x,n); // ----------------- // The interval [0,1] // GiNaC::ex xx = 2*x - 1; // P=1/(pow(2,2*n)*GiNaC::factorial(n))*GiNaC::diff(GiNaC::pow((xx*xx-1),n),x,n); return P; } GiNaC::ex legendre(unsigned int order, unsigned int nsd, const string s) { using SyFi::x; using SyFi::y; using SyFi::z; // The Legendre polynomials to be used in FiniteElement GiNaC::ex leg; GiNaC::ex A; GiNaC::lst basis; int dof; GiNaC::ex b; // 1D if(nsd == 1) { dof = order+1; A = get_symbolic_matrix(1,dof,s); int o=0; for(GiNaC::const_iterator i = A.begin(); i!=A.end(); ++i) { b= legendre1D(x,o); leg+= (*i)*b; basis.append(b); o++; } } // 2D /* else if(nsd == 2){ // NB: Only for tensor products on TRIANGLES (not boxes) / * 2D: structure of coefficients (a_i) * [ a_0 a_1 P_1(x) a_3 P_2(x) a_6 P_3(x) * [ a_2 P_1(y) a_4 P_1(x)*P_1(y) a_7 P_2(x)*P_1(y) * [ a_5 P_2(y) a_8 P_1(x)*P_2(y) * [ a_9 P_3(y) * / dof = (order+1)*(order+2)/2; A = get_symbolic_matrix(1,dof,s); size_t i=0; for (int o = 0; o <= order; o++) { for (int d = 0; d <= o; d++) { b = legendre1D(y,d)*legendre1D(x,o-d); leg += A.op(i)*b; basis.append(b); i++; } } } */ else if(nsd == 2) // NB: Only for tensor products on rectangles { dof = (order+1)*(order+1); A = get_symbolic_matrix(1,dof,s); size_t i=0; for (unsigned int o = 0; o <= order; o++) { for (unsigned int d = 0; d <= order; d++) { b = legendre1D(y,d)*legendre1D(x,o); leg += A.op(i)*b; basis.append(b); i++; } } } /* tetrahedron else if(nsd==3){ dof = 0; for (int j=0; j<= order; j++) { dof += (j+1)*(j+2)/2; } A = get_symbolic_matrix(1, dof , s); size_t i=0; for (int o = 0; o <= order; o++) { for (int d = 0; d <= o; d++) { for (int f = 0; f <= o; f++) { if ( o-d-f >= 0) { b = legendre1D(y,f)*legendre1D(z,d)*legendre1D(x,o-d-f); leg += A.op(i)*b; basis.append(b); i++; } } } } } */ else if(nsd==3) { dof = (order+1)*(order+1)*(order+1); A = get_symbolic_matrix(1, dof , s); size_t i=0; for (unsigned int o = 0; o <= order; o++) { for (unsigned int d = 0; d <= order; d++) { for (unsigned int f = 0; f <= order; f++) { b = legendre1D(y,f)*legendre1D(z,d)*legendre1D(x,o); leg += A.op(i)*b; basis.append(b); i++; } } } } return GiNaC::lst(leg,matrix_to_lst2(A), basis); } GiNaC::lst legendrev(unsigned int no_fields, unsigned int order, unsigned int nsd, const string a) { GiNaC::lst ret1; // contains the polynom GiNaC::lst ret2; // contains the coefficients GiNaC::lst ret3; // constains the basis functions GiNaC::lst basis_tmp; for (unsigned int i=1; i<= no_fields; i++) { GiNaC::lst basis; std::ostringstream s; s <(polspace.op(2)); for (GiNaC::lst::const_iterator basis_iterator = basis_tmp.begin(); basis_iterator != basis_tmp.end(); ++basis_iterator) { GiNaC::lst tmp_lst; for (unsigned int d=1; d<=no_fields; d++) tmp_lst.append(0); tmp_lst.let_op(i-1) = (*basis_iterator); ret3.append(tmp_lst); } } return GiNaC::lst(ret1,ret2,ret3); } bool compare(const ex & e, const string & s) { ostringstream ss; ss << e; return ss.str() == s; } void EQUAL_OR_DIE(const ex & e, const string & s) { if (!compare(e, s)) { ostringstream os; os << "ERROR: expression e: " <second++; } else { //GiNaC::exmap::value_type p(ex(s), ex(s)); //symbolmap.insert(p); symbolmap[ex(s)] = ex(s); } } }; class SymbolCounterVisitor: public visitor, public symbol::visitor, public basic::visitor { public: exhashmap symbolcount; void visit(const basic & s) { std::cout << "visiting basic " << std::endl; } void visit(const symbol & s) { ex e = s; std::cout << "visiting symbol " << e << std::endl; exhashmap::iterator it = symbolcount.find(s); if(it != symbolcount.end()) { std::cout << "found symbol " << e << std::endl; it->second++; } else { std::cout << "adding symbol " << e << std::endl; pair p; p.first = ex(s); p.second = 1; symbolcount.insert(p); } } }; exhashmap count_symbols(const ex & e) { SymbolCounterVisitor v; e.traverse(v); return v.symbolcount; } /* GiNaC::exvector get_symbols3(const GiNaC::ex & e) { // Implemented directly to avoid copying map: SymbolCounterVisitor v; e.traverse(v); exhashmap & sc = v.symbolcount; int i = 0; GiNaC::exvector l(sc.size()); for(exhashmap::iterator it=sc.begin(); it!=sc.end(); it++) { //l.push_back(it->first); l[i] = it->first; i++; } return l; } std::list get_symbols2(const ex & e) { // Implemented directly to avoid copying map: SymbolCounterVisitor v; e.traverse(v); exhashmap & sc = v.symbolcount; list l; for(exhashmap::iterator it=sc.begin(); it!=sc.end(); it++) { l.push_back(it->first); } return l; } void get_symbols(const ex & e, GiNaC::exmap & em) { SymbolMapBuilderVisitor v(em); e.traverse(v); } */ ex extract_symbols(const ex & e) { // Implemented directly to avoid copying map: SymbolCounterVisitor v; e.traverse(v); exhashmap & sc = v.symbolcount; lst l; for(exhashmap::iterator it=sc.begin(); it!=sc.end(); it++) { l.append(it->first); std::cout << (it->first) << std::endl; } ex ret = l; return ret; } // Collect all symbols of an expression void collect_symbols(const GiNaC::ex & e, exset & v) { if (GiNaC::is_a(e)) { v.insert(e); } else { for (size_t i=0; i> a1; if2 >> a2; // compare size int n = a1.num_expressions(); int n2 = a2.num_expressions(); if(n != n2) { os << "Archives " << first << " and " << second << " has a different number of expressions, " << n << " and " << n2 << "." << endl; os << "Comparing common expressions." << endl; ret = false; } // iterate over all expressions in first archive ex e1,e2; for(int i=0; i(extract_symbols(e1)); // os << "Comparing " << exname << " with symbols " << syms << endl; // is this in the second archive? try { e2 = a2.unarchive_ex(syms, exname.c_str()); // got it, now compare bool isequal = is_zero(e1-e2); if(!isequal) { if(ret) { os << "Archives " << first << " and " << second << " are not equal, details follow:" << endl; } os << "Expression with name " << exname << " is not equal:" << endl; os << "First: " << endl << e1 << endl; os << "Second: " << endl << e2 << endl; ret = false; } } catch(...) { os << "Expression " << exname << " is missing from " << second << "." << endl; ret = false; } } return ret; } class ExStatsVisitor: public visitor, public power::visitor, public mul::visitor, public add::visitor, public function::visitor { public: ExStats es; void visit(const power & e) { //cout << "pow" << endl; ex b = e.op(1); ex c = b.evalf(); if( is_a(c) ) { numeric nu = ex_to(c); int n = (int) to_double(nu); if( is_zero(nu-n) ) { // is an integer power, interpret as a sequence of multiplications es.muls += n-1; es.flops += n-1; } } es.pows++; } void visit(const mul & e) { //cout << "mul" << endl; es.muls += e.nops()-1; es.flops += e.nops()-1; } void visit(const add & e) { //cout << "add" << endl; es.adds += e.nops()-1; es.flops += e.nops()-1; } void visit(const function & e) { //cout << "func" << endl; es.functions++; } }; ExStats count_ops(const ex & e) { //cout << "count_ops " << e << endl; //cout << "is an add: " << GiNaC::is(e) << endl; //cout << "is a mul: " << GiNaC::is(e) << endl; ExStatsVisitor v; e.traverse(v); return v.es; } // =========== expression manipulation utilities // Returns in sel a list with symbol/expression pairs for all // power replacement variables introduced. Works best on // expressions in expanded form. ex replace_powers(const ex & ein, const list & symbols, list & sel, const string & tmpsymbolprefix) { ex e = ein; // build power expressions list::const_iterator it = symbols.begin(); for(; it != symbols.end(); it++) { int deg = e.degree(*it); if(deg > 0) { symbol sym = ex_to(*it); string sname = tmpsymbolprefix + sym.get_name(); // make list of new symbols vector symbols(deg); symbols[0] = sym; for(int i=1; i=1; i--) { e = e.subs(power(sym,i+1) == symbols[i], subs_options::algebraic); } } } return e; } }; // namespace SyFi syfi-1.0.0.dfsg.orig/syfi/Bubble.cpp0000644000175000017500000000504611672223006017100 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "Bubble.h" #include "tools.h" using std::cout; using std::endl; using std::string; namespace SyFi { Bubble::Bubble(): StandardFE() { description = "Bubble"; } Bubble::Bubble(Polygon& p, unsigned int order): StandardFE(p, order) { compute_basis_functions(); } void Bubble:: compute_basis_functions() { // remove previously computed basis functions and dofs Ns.clear(); dofs.clear(); if ( p == NULL ) { throw(std::logic_error("You need to set a polygon before the basisfunctions can be computed")); } if ( p->str().find("ReferenceLine") != string::npos ) { Ns.insert(Ns.end(), x*(1-x)); description = "Bubble_1D"; } else if ( p->str().find("Triangle") != string::npos ) { GiNaC::ex b = barycenter_triangle(p->vertex(0), p->vertex(1), p->vertex(2)); GiNaC::ex N = GiNaC::numeric(1); for (unsigned int d=0; d< b.nops(); d++) { N = N*b.op(d).rhs(); } Ns.insert(Ns.end(), N); description = "Bubble_2D"; } else if ( p->str().find("Tetrahedron") != string::npos ) { GiNaC::ex b = barycenter_tetrahedron(p->vertex(0), p->vertex(1), p->vertex(2), p->vertex(3)); GiNaC::ex N = GiNaC::numeric(1); for (unsigned int d=0; d< b.nops(); d++) { N = N*b.op(d).rhs(); } Ns.insert(Ns.end(), N); description = "Bubble_3D"; } // create and insert dof GiNaC::lst midpoint = GiNaC::lst(); for (unsigned int d=0; d< p->vertex(1).nops(); d++) { midpoint.append(GiNaC::numeric(0)); } for (unsigned int i=1; i<= p->no_vertices(); i++) { for (unsigned int d=0; d< p->vertex(i-1).nops(); d++) { midpoint.let_op(d) += p->vertex(i-1).op(d); } } for (unsigned int d=0; d< p->vertex(1).nops(); d++) { midpoint.let_op(d) = midpoint.op(d)/p->no_vertices(); } dofs.insert(dofs.end(), midpoint); } } // namespace SyFi syfi-1.0.0.dfsg.orig/syfi/BrezziDouglasMarini.cpp0000644000175000017500000001037311672223006021630 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "BrezziDouglasMarini.h" #include #include "tools.h" using std::cout; using std::endl; using std::string; namespace SyFi { BrezziDouglasMarini:: BrezziDouglasMarini() : StandardFE() { description = "BrezziDouglasMarini"; } BrezziDouglasMarini:: BrezziDouglasMarini(Polygon& p, int order, bool pointwise_) : StandardFE(p, order) { pointwise = pointwise_; compute_basis_functions(); } void BrezziDouglasMarini:: compute_basis_functions() { if ( order < 1 ) { throw(std::logic_error("Brezzi-Douglas-Marini elements must be of order 1 or higher.")); } if ( p == NULL ) { throw(std::logic_error("You need to set a polygon before the basisfunctions can be computed")); } GiNaC::ex nsymb = GiNaC::symbol("n"); if (pointwise) { if ( p->str().find("ReferenceLine") != string::npos ) { cout <<"Can not define the Brezzi-Douglas-Marini element on a line"<str().find("ReferenceTetrahedron") != string::npos ) { cout <<"Can not define the Brezzi-Douglas-Marini element on a tetrahedron, see Nedelec2Hdiv"<str().find("Triangle") != string::npos ) { description = istr("BrezziDouglasMarini_", order) + "_2D"; Triangle& triangle = (Triangle&)(*p); GiNaC::lst equations; GiNaC::lst variables; GiNaC::lst polynom_space = bernsteinv(2,order, triangle, "b"); GiNaC::ex pspace = polynom_space.op(0); variables = collapse(GiNaC::ex_to(polynom_space.op(1))); GiNaC::symbol t("t"); GiNaC::ex dofi; // dofs related to edges for (int i=0; i< 3; i++) { Line line = triangle.line(i); GiNaC::lst normal_vec = normal(triangle, i); GiNaC::ex Vn = inner(pspace, normal_vec); GiNaC::lst points = interior_coordinates(line, order); GiNaC::ex point; for (unsigned int j=0; j< points.nops(); j++) { point = points.op(j); dofi = Vn.subs(x == point.op(0)).subs(y == point.op(1)); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); dofs.insert(dofs.end(), GiNaC::lst(point,nsymb)); } } // std::cout <<"no variables "<(b)); GiNaC::lst subs; for (unsigned int ii=0; ii. #ifndef RAVIARTTHOMAS_IS_INCLUDED #define RAVIARTTHOMAS_IS_INCLUDED #include "FE.h" namespace SyFi { class RaviartThomas : public StandardFE { public: bool pointwise; GiNaC::lst dof_repr; RaviartThomas(); RaviartThomas(Polygon& p, int order = 1, bool pointwise=true); virtual ~RaviartThomas() {} virtual void compute_basis_functions(); }; } // namespace SyFi #endif syfi-1.0.0.dfsg.orig/syfi/Polygon.h0000644000175000017500000002167511672223006017007 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef POLYGON_IS_INCLUDED #define POLYGON_IS_INCLUDED #include #include namespace SyFi { enum Repr_format { SUBS_PERFORMED = 1, SUBS_NOT_PERFORMED = 2 }; // TODO: Can be const too: // integrate class Line; class Triangle; class Rectangle; class Polygon { protected: Polygon(const std::string & subscript_="", unsigned int no_vert=0); Polygon(const Polygon& polygon); std::string subscript; GiNaC::exvector p; public: virtual ~Polygon() {} /* Return the topological dimension of the object. */ virtual unsigned int no_space_dim() const = 0; virtual unsigned int no_vertices() const; virtual GiNaC::ex vertex(unsigned int i) const; virtual GiNaC::ex repr(Repr_format format = SUBS_PERFORMED) const = 0; virtual const std::string str() const = 0; virtual GiNaC::ex integrate(GiNaC::ex f, Repr_format format = SUBS_PERFORMED) = 0; virtual Polygon* copy() const = 0; // This design isn't very good, but doing it differently will require solving some memory issues: virtual Line line(unsigned int i) const; virtual Triangle triangle(unsigned int i) const; virtual Rectangle rectangle(unsigned int i) const; }; class Line : public Polygon { protected: GiNaC::ex a_; GiNaC::ex b_; public: /* Constructing an empty object. */ Line() {} /* x0_ and x1_ are points, of the type GiNaC::lst if dim>1 */ Line(GiNaC::ex x0, GiNaC::ex x1, const std::string & subscript = ""); Line(const Line& line); virtual ~Line(){} virtual unsigned int no_space_dim() const; GiNaC::ex a() const; GiNaC::ex b() const; virtual GiNaC::ex repr(Repr_format format = SUBS_PERFORMED) const; virtual GiNaC::ex repr(GiNaC::ex t, Repr_format format = SUBS_PERFORMED) const; virtual const std::string str() const; virtual GiNaC::ex integrate(GiNaC::ex f, Repr_format format = SUBS_PERFORMED); virtual Line* copy() const; }; class ReferenceLine : public Line { public: ReferenceLine(const std::string & subscript = ""); ReferenceLine(const ReferenceLine& line); virtual ~ReferenceLine(){} virtual GiNaC::ex repr(GiNaC::ex t, Repr_format format = SUBS_PERFORMED) const; virtual const std::string str() const; virtual GiNaC::ex integrate(GiNaC::ex f, Repr_format format = SUBS_PERFORMED); virtual ReferenceLine* copy() const; }; class Triangle : public Polygon { protected: Triangle(const std::string & subscript = ""); public: Triangle(GiNaC::ex x0, GiNaC::ex x1, GiNaC::ex x2, const std::string & subscript = ""); Triangle(const Triangle& triangle); virtual ~Triangle(){} virtual unsigned int no_space_dim() const; virtual Line line(unsigned int i) const; virtual GiNaC::ex repr(Repr_format = SUBS_PERFORMED) const; virtual const std::string str() const; virtual GiNaC::ex integrate(GiNaC::ex f, Repr_format format = SUBS_PERFORMED); virtual Triangle* copy() const; }; class ReferenceTriangle : public Triangle { public: ReferenceTriangle(const std::string & subscript = ""); ReferenceTriangle(const ReferenceTriangle& triangle); virtual ~ReferenceTriangle(){} virtual const std::string str() const; virtual GiNaC::ex integrate(GiNaC::ex f, Repr_format format = SUBS_PERFORMED); virtual ReferenceTriangle* copy() const; }; class Rectangle : public Polygon { protected: Rectangle(const std::string & subscript = ""); public: Rectangle(GiNaC::ex p0, GiNaC::ex p1, const std::string & subscript = ""); Rectangle(GiNaC::ex p0, GiNaC::ex p1, GiNaC::ex p2, GiNaC::ex p3, const std::string & subscript = ""); Rectangle(const Rectangle& rectangle); virtual ~Rectangle(){} virtual unsigned int no_space_dim() const; virtual Line line(unsigned int i) const; virtual GiNaC::ex repr(Repr_format format = SUBS_PERFORMED) const; virtual const std::string str() const; virtual GiNaC::ex integrate(GiNaC::ex f, Repr_format format = SUBS_PERFORMED); virtual Rectangle* copy() const; }; class ReferenceRectangle : public Rectangle { public: ReferenceRectangle(const std::string & subscript = ""); ReferenceRectangle(const ReferenceRectangle& rectangle); virtual ~ReferenceRectangle(){} virtual const std::string str() const; virtual ReferenceRectangle* copy() const; }; class Tetrahedron : public Polygon { public: Tetrahedron(GiNaC::ex x0, GiNaC::ex x1, GiNaC::ex x2, GiNaC::ex x3, const std::string & subscript = ""); Tetrahedron(const Tetrahedron& tetrahedron); virtual ~Tetrahedron(){} virtual unsigned int no_space_dim() const; virtual Line line(unsigned int i) const; virtual Triangle triangle(unsigned int i) const; virtual GiNaC::ex repr(Repr_format format = SUBS_PERFORMED) const; virtual const std::string str() const; virtual GiNaC::ex integrate(GiNaC::ex f, Repr_format format = SUBS_PERFORMED); virtual Tetrahedron* copy() const; }; class ReferenceTetrahedron : public Tetrahedron { public: ReferenceTetrahedron(const std::string & subscript = ""); ReferenceTetrahedron(const ReferenceTetrahedron& tetrahedron); virtual ~ReferenceTetrahedron(){} virtual const std::string str() const; virtual GiNaC::ex integrate(GiNaC::ex f, Repr_format format = SUBS_PERFORMED); virtual ReferenceTetrahedron* copy() const; }; class Box: public Polygon { public: Box(GiNaC::ex p0, GiNaC::ex p1, const std::string & subscript=""); Box(GiNaC::ex p0, GiNaC::ex p1, GiNaC::ex p2, GiNaC::ex p3, GiNaC::ex p4, GiNaC::ex p5, GiNaC::ex p6, GiNaC::ex p7, const std::string & subscript=""); Box(const Box& box); Box(){} virtual ~Box(){} virtual unsigned int no_space_dim() const; virtual Line line(unsigned int i) const; virtual Rectangle rectangle(unsigned int i) const; virtual GiNaC::ex repr(Repr_format format = SUBS_PERFORMED) const; virtual const std::string str() const; virtual GiNaC::ex integrate(GiNaC::ex f, Repr_format format = SUBS_PERFORMED); virtual Box* copy() const; }; class ReferenceBox: public Box { public: ReferenceBox(const std::string & subscript = ""); ReferenceBox(const ReferenceBox& box); virtual ~ReferenceBox(){} virtual const std::string str() const; virtual ReferenceBox* copy() const; }; class Simplex : public Polygon { public: Simplex(GiNaC::lst vertices, const std::string & subscript = ""); Simplex(const Simplex& simplex); virtual ~Simplex(){} virtual unsigned int no_space_dim() const; virtual GiNaC::ex repr(Repr_format format = SUBS_PERFORMED) const; virtual const std::string str() const; virtual GiNaC::ex integrate(GiNaC::ex f, Repr_format format = SUBS_PERFORMED); Simplex sub_simplex(unsigned int i); virtual Simplex* copy() const; }; /* class ReferenceSimplex : public Simplex { public: ReferenceSimplex(const std::string & subscript = ""); virtual ~ReferenceSimplex(){} virtual std::string str(); virtual GiNaC::ex integrate(GiNaC::ex f, Repr_format format = SUBS_PERFORMED); }; */ // ---- Some tools for Polygons // FIXME: change to barycenter(Triangle&) // FIXME: and barycenter(Tetrahedron&) GiNaC::ex barycenter_line(GiNaC::ex p0, GiNaC::ex p1); GiNaC::ex barycenter_triangle(GiNaC::ex p0, GiNaC::ex p1, GiNaC::ex p2); GiNaC::ex barycenter_tetrahedron(GiNaC::ex p0, GiNaC::ex p1, GiNaC::ex p2, GiNaC::ex p3); GiNaC::ex barycenter(Simplex& simplex); GiNaC::lst bezier_ordinates(Line& line, unsigned int d); GiNaC::lst bezier_ordinates(Triangle& triangle, unsigned int d); GiNaC::lst bezier_ordinates(Tetrahedron& tetrahedra, unsigned int d); GiNaC::lst interior_coordinates(Line& line, unsigned int d); GiNaC::lst interior_coordinates(Triangle& triangle, unsigned int d); GiNaC::lst interior_coordinates(Tetrahedron& tetrahedra, unsigned int d); // polynom of arbitrary order on a line, a triangle, // or a tetrahedron using the Bernstein basis GiNaC::ex bernstein(unsigned int order, Polygon& p, const std::string & a); // vector polynom of arbitrary order on a line, a triangle, // or a tetrahedron using the Bernstein basis GiNaC::lst bernsteinv(unsigned int no_fields, unsigned int order, Polygon& p, const std::string & a); GiNaC::lst normal(Triangle&, unsigned int i); GiNaC::lst normal(Tetrahedron&, unsigned int i); GiNaC::lst tangent(Triangle&, unsigned int i); } #endif syfi-1.0.0.dfsg.orig/syfi/Nedelec.h0000644000175000017500000000201411672223006016701 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef NEDELEC_IS_INCLUDED #define NEDELEC_IS_INCLUDED #include "FE.h" namespace SyFi { class Nedelec : public StandardFE { public: Nedelec(); Nedelec(Polygon& p, int order = 1 ); virtual ~Nedelec() {} virtual void compute_basis_functions(); }; } // namespace SyFi #endif syfi-1.0.0.dfsg.orig/syfi/P0.cpp0000644000175000017500000001113011672223006016153 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "P0.h" #include "tools.h" using std::cout; using std::endl; namespace SyFi { P0::P0() : StandardFE() { description = "P0"; } P0:: P0(Polygon& p, unsigned int order) : StandardFE (p,order) { compute_basis_functions(); } void P0:: compute_basis_functions() { // remove previously computed basis functions and dofs Ns.clear(); dofs.clear(); if ( p == NULL ) { throw(std::logic_error("You need to set a polygon before the basisfunctions can be computed")); } // insert basis function Ns.insert(Ns.end(), GiNaC::numeric(1)); GiNaC::lst midpoint = GiNaC::lst(); // create and insert dof // p is a lst if (GiNaC::is_a(p->vertex(0))) { for (unsigned int d=0; d< p->vertex(1).nops(); d++) { midpoint.append(GiNaC::numeric(0)); } for (unsigned int i=0; i< p->no_vertices(); i++) { int nops; nops = p->vertex(i).nops(); for (int d=0; d< nops; d++) { midpoint.let_op(d) += p->vertex(i).op(d); } } for (unsigned int d=0; d< p->vertex(1).nops(); d++) { midpoint.let_op(d) = midpoint.op(d)/p->no_vertices(); } } else { midpoint.append(GiNaC::numeric(0)); for (unsigned int i=0; i< p->no_vertices(); i++) { midpoint.let_op(0) += p->vertex(i); } midpoint.let_op(0) = midpoint.op(0)/p->no_vertices(); } dofs.insert(dofs.end(), midpoint); description = istr("P0_" , midpoint.nops()) + "D"; } // ------------VectorP0 --- VectorP0::VectorP0() : StandardFE() { description = "VectorP0"; } VectorP0::VectorP0(Polygon& p, unsigned int order, unsigned int size_) : StandardFE(p, order) { size = size_ < 0 ? nsd: size_; compute_basis_functions(); } void VectorP0:: compute_basis_functions() { // remove previously computed basis functions and dofs Ns.clear(); dofs.clear(); if ( p == NULL ) { throw(std::logic_error("You need to set a polygon before the basisfunctions can be computed")); } if ( size == 0) { throw(std::logic_error("You need to set the size of the vector before the basisfunctions can be computed")); } P0 fe(*p); GiNaC::lst zero_list; for (unsigned int s=1; s<= size ; s++) { zero_list.append(0); } for (unsigned int i=0; i< fe.nbf() ; i++) { for (unsigned int s=0; s< size ; s++) { GiNaC::lst Nis = zero_list; Nis.let_op(s) = fe.N(i); GiNaC::ex Nmat = GiNaC::matrix(size,1,Nis); Ns.insert(Ns.end(), Nmat); GiNaC::lst dof = GiNaC::lst(fe.dof(i), s) ; dofs.insert(dofs.end(), dof); } } description = "Vector" + fe.str(); } void VectorP0:: set_size(unsigned int size_) { size = size_; } // ------------TensorP0 --- TensorP0::TensorP0() : StandardFE() { description = "TensorP0"; } TensorP0::TensorP0(Polygon& p, unsigned int order, unsigned int size_) : StandardFE(p, order) { size = size_ < 0 ? nsd: size_; compute_basis_functions(); } void TensorP0:: compute_basis_functions() { // remove previously computed basis functions and dofs Ns.clear(); dofs.clear(); if ( p == NULL ) { throw(std::logic_error("You need to set a polygon before the basisfunctions can be computed")); } if ( size == 0) { throw(std::logic_error("You need to set the size of the vector before the basisfunctions can be computed")); } P0 fe(*p); GiNaC::lst zero_list; for (unsigned int s=1; s<= size*size ; s++) { zero_list.append(0); } for (unsigned int i=0; i< fe.nbf() ; i++) { for (unsigned int r=0; r< size ; r++) { for (unsigned int s=0; s< size ; s++) { GiNaC::lst Nis = zero_list; Nis.let_op((size)*r + s) = fe.N(i); GiNaC::ex Nmat = GiNaC::matrix(size,size,Nis); Ns.insert(Ns.end(), Nmat); GiNaC::lst dof = GiNaC::lst(fe.dof(i), r, s) ; dofs.insert(dofs.end(), dof); } } } description = "Tensor" + fe.str(); } void TensorP0:: set_size(unsigned int size_) { size = size_; } } syfi-1.0.0.dfsg.orig/syfi/BrezziDouglasMarini.h0000644000175000017500000000222311672223006021270 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef BREZZIDOUGLASMARINI_IS_INCLUDED #define BREZZIDOUGLASMARINI_IS_INCLUDED #include "FE.h" namespace SyFi { class BrezziDouglasMarini : public StandardFE { public: bool pointwise; GiNaC::lst dof_repr; BrezziDouglasMarini(); BrezziDouglasMarini(Polygon& p, int order = 1, bool pointwise=true); virtual ~BrezziDouglasMarini() {} virtual void compute_basis_functions(); }; } // namespace SyFi #endif syfi-1.0.0.dfsg.orig/syfi/Dof_OrderedPtvSet.cpp0000644000175000017500000000137411672223006021227 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "Dof_OrderedPtvSet.h" syfi-1.0.0.dfsg.orig/syfi/swig/0000755000175000017500000000000011674103626016154 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/syfi/swig/typemaps.1.4.i0000644000175000017500000000640411672223006020466 0ustar johannrjohannr/* (c) Copyright 2003, 2004, 2005 Author: Ola Skavhaug and Ondrej Certik This file is part of swiginac. swiginac is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. swiginac 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 swiginac; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ %typemap(in) (int idx0, int idx1) { if(PyTuple_Check($input)) { $1 = PyInt_AsLong(PyTuple_GetItem($input,0)); if(PyTuple_Size($input) > 1) $2 = PyInt_AsLong(PyTuple_GetItem($input,1)); else $2 = 0; } else { $1 = PyInt_AsLong($input); $2 = 0; } } %typemap(in) GiNaC::lst & { $1=list2lst($input); if (!$1) return NULL; } %typemap(typecheck, precedence=1200) GiNaC::lst & { $1 = (PyList_Check($input)) ? 1 : 0; } %{ // class to handle deleting a temporary resource in an input typemap template class TDeleter { public: T * obj; TDeleter(): obj(0) { //std::cout << "TDeleter constructor." << std::endl; } ~TDeleter() { //std::cout << "TDeleter destructor, obj = " << obj << std::endl; if(obj) { //std::cout << "TDeleter deleting obj:" << std::endl; delete obj; //std::cout << "TDeleter done deleting obj." << std::endl; } //std::cout << "TDeleter is now destroyed." << std::endl; } }; typedef TDeleter ex_deleter; typedef TDeleter const_ex_deleter; %} %typemap(in) GiNaC::ex & (ex_deleter deleter) { $1 = type2ex($input); if ($1 == NULL ) { return NULL; } deleter.obj = $1; } %typemap(in) const GiNaC::ex & (const_ex_deleter deleter) { $1 = type2ex($input); if ($1 == NULL ) { return NULL; } deleter.obj = $1; } //%typemap(in) const ex & = ex &; %typemap(in) GiNaC::ex { ex *tmp = type2ex($input); if (tmp == NULL ) { return NULL; } $1 = *(tmp); delete tmp; } %typemap(in) const GiNaC::ex = GiNaC::ex; %typemap(in) numeric & { $1 = type2numeric($input); if (!$1) return NULL; } %typemap(typecheck, precedence=1210) GiNaC::ex & { $1 = (checktype2ex($input)) ? 1 : 0; } %typemap(typecheck, precedence=1209) GiNaC::ex { $1 = (checktype2ex($input)) ? 1 : 0; // TODO: This could be wrong, while ex& is treated as a pointer by swig, ex is not, at least in the typemap(in) above. } %typemap(out) GiNaC::ex { $result = ex2type(&($1)); } //%typemap(out) GiNaC::ex *{ // $result = ex2type($1); // delete $1; //} %typemap(out) GiNaC::exvector { $result = exvector2list(&($1)); } %typemap(out) GiNaC::lst & { $result = lst2list($1); } %typemap(out) GiNaC::lst { $result = lst2list(&($1)); } //it seems we don't need these /* %typemap(out) ex &{ $result = ex2type($1); }*/ // vim:ft=cpp: syfi-1.0.0.dfsg.orig/syfi/swig/README0000644000175000017500000000026411672223006017027 0ustar johannrjohannr This directory contains SWIG wrappers for the SyFi C++ code, and the Python module sfc (the SyFi Form Compiler). Python unit tests and regression tests are located under tests/. syfi-1.0.0.dfsg.orig/syfi/swig/ex.1.3.i0000644000175000017500000001376411672223006017246 0ustar johannrjohannr/* (c) Copyright 2003, 2004, 2005 Author: Ola Skavhaug and Ondrej Certik This file is part of swiginac. swiginac is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. swiginac 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 swiginac; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ %{ GiNaC::lst* list2lst(PyObject *input); PyObject* lst2list(GiNaC::lst *input); //GETDESC1 and GETDESC2 are equivalent - GETDESC1 is the official way how to do //it, but it's slower than the undocumented way GETDESC2. #define GETDESC1(NAME) \ static swig_type_info *NAME##descr=0;\ if (!NAME##descr){\ NAME##descr=SWIG_TypeQuery("GiNaC::"#NAME" *");\ if (!NAME##descr) {\ PyErr_SetString(PyExc_ValueError,"Cannot get a "#NAME" descriptor. Fix in ex.i");\ return NULL;\ }\ } #define GETDESC2(NAME) \ static swig_type_info *NAME##descr=SWIGTYPE_p_GiNaC__##NAME #define GETDESC(NAME) GETDESC1(NAME) //converts any type from python to ex GiNaC::ex * type2ex(PyObject * input) { GiNaC::basic *btmp; GETDESC(basic); if (not((SWIG_ConvertPtr(input, (void **) &btmp, basicdescr,0)) == -1)) return new GiNaC::ex((*btmp)); if (PyInt_Check(input)) return new GiNaC::ex(numeric(PyInt_AsLong(input))); if (PyFloat_Check(input)) return new GiNaC::ex(numeric(PyFloat_AsDouble(input))); if (PyList_Check(input)) { GiNaC::lst *l=list2lst(input); if (l==NULL) return NULL; return new GiNaC::ex(l->eval()); } return NULL; } GiNaC::numeric * type2numeric(PyObject * input) { GiNaC::numeric *btmp; GETDESC(numeric); if (not((SWIG_ConvertPtr(input, (void **) &btmp, numericdescr,0)) == -1)) return new numeric((*btmp)); if (PyInt_Check(input)) return new numeric(PyInt_AsLong(input)); if (PyFloat_Check(input)) return new numeric(PyFloat_AsDouble(input)); return NULL; } bool checktype2ex(PyObject * input) { //we assume, that everything can be converted to ex. //if you find some counterexample, write test for it first (which fail) //and then implement it here. return true; } #define EX2(NAME) \ case TINFO_##NAME: {\ NAME *p = new NAME(GiNaC::ex_to(*convert));\ GETDESC(NAME);\ return SWIG_NewPointerObj((void *)p, NAME##descr, 1);\ } //unwraps ex and return python object PyObject * ex2type(const GiNaC::ex* input) { GiNaC::ex tmp; try { tmp = input->evalm(); } catch(std::exception & e) { tmp = *input; } const GiNaC::ex* convert = &tmp; switch (GiNaC::ex_to(*convert).tinfo()) { EX2(symbol) EX2(constant) EX2(numeric) case TINFO_lst: { GiNaC::lst *l = new GiNaC::lst(GiNaC::ex_to(*convert)); return lst2list(l); } EX2(pseries) EX2(su3one) EX2(su3t) EX2(su3f) EX2(su3d) EX2(diracone) EX2(diracgamma) EX2(diracgamma5) EX2(diracgammaL) EX2(diracgammaR) EX2(tensor) EX2(tensdelta) EX2(tensmetric) EX2(minkmetric) EX2(spinmetric) EX2(tensepsilon) EX2(wildcard) EX2(indexed) EX2(color) EX2(clifford) EX2(idx) EX2(varidx) EX2(spinidx) EX2(symmetry) EX2(integral) EX2(cliffordunit) EX2(relational) EX2(function) EX2(add) EX2(mul) EX2(ncmul) EX2(matrix) EX2(power) default: throw (std::logic_error("Cannot unwrap ex. Fix in ex.i")); } } //converts ginac lst to python list (unwrapping all exs) PyObject *lst2list(GiNaC::lst *input) { GiNaC::lst::const_iterator i = input->begin(); GiNaC::lst::const_iterator i_end = input->end(); PyObject *pylist = PyList_New(0); while (i!=i_end) { PyObject *item = ex2type(&(*i)); PyList_Append(pylist, item); //is this necessary? Py_INCREF(item); i++; } return (pylist); } /* PyObject *lst2list(GiNaC::lst *input) { GiNaC::lst *l = input; int n = l->nops(); PyObject *pylist = PyList_New(n); PyObject *item; for (int i=0;ilet_op(i))); PyList_SetItem(pylist, i, item); Py_INCREF(item); } return (pylist); }*/ //convert any python list to ginac lst GiNaC::lst* list2lst(PyObject * input) { GiNaC::lst *out=new GiNaC::lst(); if PyList_Check(input) { int n = PyList_Size(input); PyObject *item; GiNaC::ex *tmp; for (int i = 0; iappend(*tmp); } else { PyErr_SetString(PyExc_ValueError,"Cannot convert type to ex."); return NULL; } } return out; } else { PyErr_SetString(PyExc_ValueError,"List expected."); delete out; return NULL; } } //converts ginac exvector to python list (unwrapping all exs) PyObject *exvector2list(GiNaC::exvector *input) { GiNaC::exvector::const_iterator i = input->begin(); GiNaC::exvector::const_iterator i_end = input->end(); PyObject *pylist = PyList_New(0); while (i!=i_end) { PyObject *item = ex2type(&(*i)); PyList_Append(pylist, item); //is this necessary? Py_INCREF(item); i++; } return (pylist); } %} // vim:ft=cpp: syfi-1.0.0.dfsg.orig/syfi/swig/ex.1.4.i0000644000175000017500000001401711672223006017237 0ustar johannrjohannr/* (c) Copyright 2003, 2004, 2005 Author: Ola Skavhaug and Ondrej Certik This file is part of swiginac. swiginac is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. swiginac 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 swiginac; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ %{ GiNaC::lst* list2lst(PyObject *input); PyObject* lst2list(GiNaC::lst *input); //GETDESC1 and GETDESC2 are equivalent - GETDESC1 is the official way how to do //it, but it's slower than the undocumented way GETDESC2. #define GETDESC1(NAME) \ static swig_type_info *NAME##descr=0;\ if (!NAME##descr){\ NAME##descr=SWIG_TypeQuery("GiNaC::"#NAME" *");\ if (!NAME##descr) {\ PyErr_SetString(PyExc_ValueError,"Cannot get a "#NAME" descriptor. Fix in ex.i");\ return NULL;\ }\ } #define GETDESC2(NAME) \ static swig_type_info *NAME##descr=SWIGTYPE_p_GiNaC__##NAME #define GETDESC(NAME) GETDESC1(NAME) //converts any type from python to ex GiNaC::ex * type2ex(PyObject * input) { basic *btmp; GETDESC(basic); if (not((SWIG_ConvertPtr(input, (void **) &btmp, basicdescr,0)) == -1)) return new GiNaC::ex((*btmp)); if (PyInt_Check(input)) return new GiNaC::ex(numeric(PyInt_AsLong(input))); if (PyFloat_Check(input)) return new GiNaC::ex(numeric(PyFloat_AsDouble(input))); if (PyList_Check(input)) { lst *l=list2lst(input); if (l==NULL) return NULL; return new GiNaC::ex(l->eval()); } return NULL; } GiNaC::numeric * type2numeric(PyObject * input) { GiNaC::numeric *btmp; GETDESC(numeric); if (not((SWIG_ConvertPtr(input, (void **) &btmp, numericdescr,0)) == -1)) return new numeric((*btmp)); if (PyInt_Check(input)) return new numeric(PyInt_AsLong(input)); if (PyFloat_Check(input)) return new numeric(PyFloat_AsDouble(input)); return NULL; } bool checktype2ex(PyObject * input) { //we assume, that everything can be converted to ex. //if you find some counterexample, write test for it first (which fail) //and then implement it here. return true; } #define EX2(NAME) \ if (tinfo_key == &NAME::tinfo_static) {\ NAME *p = new NAME(GiNaC::ex_to(*convert));\ GETDESC(NAME);\ return SWIG_NewPointerObj((void *)p, NAME##descr, 1);\ } else //unwraps ex and return python object PyObject * ex2type(const GiNaC::ex* input) { GiNaC::ex tmp; try { tmp = input->evalm(); } catch(std::exception & e) { tmp = *input; } const GiNaC::ex* convert = &tmp; //switch (GiNaC::ex_to(*convert).tinfo()) { tinfo_t tinfo_key = GiNaC::ex_to(*convert).tinfo(); EX2(symbol) EX2(constant) EX2(numeric) if (tinfo_key == &lst::tinfo_static) { GiNaC::lst *l = new GiNaC::lst(GiNaC::ex_to(*convert)); return lst2list(l); } else EX2(pseries) EX2(su3one) EX2(su3t) EX2(su3f) EX2(su3d) EX2(diracone) EX2(diracgamma) EX2(diracgamma5) EX2(diracgammaL) EX2(diracgammaR) EX2(tensor) EX2(tensdelta) EX2(tensmetric) EX2(minkmetric) EX2(spinmetric) EX2(tensepsilon) EX2(wildcard) EX2(indexed) EX2(color) EX2(clifford) EX2(idx) EX2(varidx) EX2(spinidx) EX2(symmetry) EX2(integral) EX2(cliffordunit) EX2(relational) EX2(function) EX2(add) EX2(mul) EX2(ncmul) EX2(matrix) EX2(power) { throw (std::logic_error("Cannot unwrap ex. Fix in ex.i")); } } //converts ginac lst to python list (unwrapping all exs) PyObject *lst2list(GiNaC::lst *input) { lst::const_iterator i = input->begin(); lst::const_iterator i_end = input->end(); PyObject *pylist = PyList_New(0); while (i!=i_end) { PyObject *item = ex2type(&(*i)); PyList_Append(pylist, item); //is this necessary? Py_INCREF(item); i++; } return (pylist); } /* PyObject *lst2list(GiNaC::lst *input) { GiNaC::lst *l = input; int n = l->nops(); PyObject *pylist = PyList_New(n); PyObject *item; for (int i=0;ilet_op(i))); PyList_SetItem(pylist, i, item); Py_INCREF(item); } return (pylist); }*/ //convert any python list to ginac lst GiNaC::lst* list2lst(PyObject * input) { GiNaC::lst *out=new lst(); if PyList_Check(input) { int n = PyList_Size(input); PyObject *item; GiNaC::ex *tmp; for (int i = 0; iappend(*tmp); } else { PyErr_SetString(PyExc_ValueError,"Cannot convert type to ex."); return NULL; } } return out; } else { PyErr_SetString(PyExc_ValueError,"List expected."); delete out; return NULL; } } //converts ginac exvector to python list (unwrapping all exs) PyObject *exvector2list(GiNaC::exvector *input) { exvector::const_iterator i = input->begin(); exvector::const_iterator i_end = input->end(); PyObject *pylist = PyList_New(0); while (i!=i_end) { PyObject *item = ex2type(&(*i)); PyList_Append(pylist, item); //is this necessary? Py_INCREF(item); i++; } return (pylist); } %} // vim:ft=cpp: syfi-1.0.0.dfsg.orig/syfi/swig/typemaps.1.5.i0000644000175000017500000000652511672223006020473 0ustar johannrjohannr/* (c) Copyright 2003, 2004, 2005 Author: Ola Skavhaug and Ondrej Certik This file is part of swiginac. swiginac is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. swiginac 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 swiginac; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ %typemap(in) (int idx0, int idx1) { if(PyTuple_Check($input)) { $1 = PyInt_AsLong(PyTuple_GetItem($input,0)); if(PyTuple_Size($input) > 1) $2 = PyInt_AsLong(PyTuple_GetItem($input,1)); else $2 = 0; } else { $1 = PyInt_AsLong($input); $2 = 0; } } %typemap(in) GiNaC::lst & { $1=list2lst($input); if (!$1) return NULL; } %typemap(in) const lst & { $1=list2lst($input); if (!$1) return NULL; } %typemap(typecheck, precedence=1200) GiNaC::lst & { $1 = (PyList_Check($input)) ? 1 : 0; } %{ // class to handle deleting a temporary resource in an input typemap template class TDeleter { public: T * obj; TDeleter(): obj(0) { //std::cout << "TDeleter constructor." << std::endl; } ~TDeleter() { //std::cout << "TDeleter destructor, obj = " << obj << std::endl; if(obj) { //std::cout << "TDeleter deleting obj:" << std::endl; delete obj; //std::cout << "TDeleter done deleting obj." << std::endl; } //std::cout << "TDeleter is now destroyed." << std::endl; } }; typedef TDeleter ex_deleter; typedef TDeleter const_ex_deleter; %} %typemap(in) GiNaC::ex & (ex_deleter deleter) { $1 = type2ex($input); if ($1 == NULL ) { return NULL; } deleter.obj = $1; } %typemap(in) const GiNaC::ex & (const_ex_deleter deleter) { $1 = type2ex($input); if ($1 == NULL ) { return NULL; } deleter.obj = $1; } //%typemap(in) const ex & = ex &; %typemap(in) GiNaC::ex { ex *tmp = type2ex($input); if (tmp == NULL ) { return NULL; } $1 = *(tmp); delete tmp; } %typemap(in) const GiNaC::ex = GiNaC::ex; %typemap(in) numeric & { $1 = type2numeric($input); if (!$1) return NULL; } %typemap(typecheck, precedence=1210) GiNaC::ex & { $1 = (checktype2ex($input)) ? 1 : 0; } %typemap(typecheck, precedence=1209) GiNaC::ex { $1 = (checktype2ex($input)) ? 1 : 0; // TODO: This could be wrong, while ex& is treated as a pointer by swig, ex is not, at least in the typemap(in) above. } %typemap(out) GiNaC::ex { $result = ex2type(&($1)); } //%typemap(out) GiNaC::ex *{ // $result = ex2type($1); // delete $1; //} %typemap(out) GiNaC::exvector { $result = exvector2list(&($1)); } %typemap(out) GiNaC::lst & { $result = lst2list($1); } %typemap(out) GiNaC::lst { $result = lst2list(&($1)); } //it seems we don't need these /* %typemap(out) ex &{ $result = ex2type($1); }*/ // vim:ft=cpp: syfi-1.0.0.dfsg.orig/syfi/swig/SyFi.i.in0000644000175000017500000000607311672223006017604 0ustar johannrjohannr%module SyFi %feature("autodoc", "1"); %{ #include "../SyFi.h" #include using namespace GiNaC; using namespace SyFi; %} // utility function: %{ void setDigits (int a) { Digits = a; } %} void setDigits (int a); %include cpp2py_exceptions.i namespace GiNaC { #define GINACLIB_MAJOR_VERSION @GINACLIB_MAJOR_VERSION@ #define GINACLIB_MINOR_VERSION @GINACLIB_MINOR_VERSION@ #define GINACLIB_MICRO_VERSION @GINACLIB_MICRO_VERSION@ //#define GINACLIB_MINOR_VERSION 4 #if GINACLIB_MINOR_VERSION == 6 %include ex.1.5.i %include typemaps.1.5.i #elif GINACLIB_MINOR_VERSION == 5 %include ex.1.5.i %include typemaps.1.5.i #elif GINACLIB_MINOR_VERSION == 4 %include ex.1.4.i %include typemaps.1.4.i #else %include ex.1.3.i %include typemaps.1.3.i #endif } // typedefs and template instantiations for stl containers with ginac objects %include stl.i %include std_string.i %include std_pair.i %include std_list.i %include std_vector.i %include std_set.i %include std_map.i %typedef std::vector GiNaC::exvector; %template(exvector) std::vector; %typedef std::map GiNaC::exmap; %template(exmap) std::map; %typedef std::map ex_int_map; %template(ex_int_map) std::map; %typedef std::pair symexpair; %template(symexpair) std::pair; %typedef std::list< std::pair > symexlist; %template(symexlist) std::list< std::pair >; %typedef std::list exlist; %template(exlist) std::list; %typedef std::set exset; %template(exset) std::set; %include tools.h %include containers.h %include utilities.h %include diff_tools.h %include ginac_tools.h %include symbol_factory.h %include Polygon.h %include FE.h %include Lagrange.h %include Dof.h %include CrouzeixRaviart.h %include P0.h %include RaviartThomas.h %include DiscontinuousLagrange.h %include Hermite.h %include Nedelec.h %include Nedelec2Hdiv.h %include Bubble.h %include ElementComputations.h %include ArnoldFalkWintherWeakSym.h %include Robust.h %include MixedFE.h %include SpaceTimeElement.h /* namespace GiNaC{ class exvector{}; class lst{}; } */ /* %extend GiNaC::lst{ void append(GiNaC::ex& e) { self->append(e); } GiNaC::ex __getitem__(int i) { if ( i >= 0 && unsigned(i) <= (*self).nops()-1) { return (*self)[i]; } else { // cout << "Outside range of lst!\n"; return DUMMY; } } }; %extend GiNaC::exvector { void append(GiNaC::ex& e) { self->insert(self->end(), e); } GiNaC::ex __getitem__(int i) { if ( i >= 0 && unsigned(i) <= (*self).size()-1) { return (*self)[i]; } else { // cout << "Outside range of exvector!\n"; return DUMMY; } } }; */ //%pythoncode %{ //from pytools import * //%} syfi-1.0.0.dfsg.orig/syfi/swig/ex.1.5.i0000644000175000017500000001342111672223006017236 0ustar johannrjohannr/* (c) Copyright 2003, 2004, 2005 Author: Ola Skavhaug and Ondrej Certik This file is part of swiginac. swiginac is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. swiginac 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 swiginac; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ %{ GiNaC::lst* list2lst(PyObject *input); PyObject* lst2list(const GiNaC::lst *input); //GETDESC1 and GETDESC2 are equivalent - GETDESC1 is the official way how to do //it, but it is slower than the undocumented way GETDESC2. #define GETDESC1(NAME) \ static swig_type_info *NAME##descr=0;\ if (!NAME##descr){\ NAME##descr=SWIG_TypeQuery("GiNaC::"#NAME" *");\ if (!NAME##descr) {\ PyErr_SetString(PyExc_ValueError,"Cannot get a "#NAME" descriptor. Fix in ex.i");\ return NULL;\ }\ } #define GETDESC2(NAME) \ static swig_type_info *NAME##descr=SWIGTYPE_p_GiNaC__##NAME #define GETDESC(NAME) GETDESC1(NAME) //converts any type from python to ex GiNaC::ex * type2ex(PyObject * input) { basic *btmp; GETDESC(basic); if (not((SWIG_ConvertPtr(input, (void **) &btmp, basicdescr,0)) == -1)) return new GiNaC::ex((*btmp)); if (PyInt_Check(input)) return new GiNaC::ex(numeric(PyInt_AsLong(input))); if (PyFloat_Check(input)) return new GiNaC::ex(numeric(PyFloat_AsDouble(input))); if (PyList_Check(input)) { lst *l=list2lst(input); if (l==NULL) return NULL; return new GiNaC::ex(l->eval()); } return NULL; } GiNaC::numeric * type2numeric(PyObject * input) { GiNaC::numeric *btmp; GETDESC(numeric); if (not((SWIG_ConvertPtr(input, (void **) &btmp, numericdescr,0)) == -1)) return new numeric((*btmp)); if (PyInt_Check(input)) return new numeric(PyInt_AsLong(input)); if (PyFloat_Check(input)) return new numeric(PyFloat_AsDouble(input)); return NULL; } bool checktype2ex(PyObject * input) { //we assume, that everything can be converted to ex. //if you find some counterexample, write test for it first (which fail) //and then implement it here. return true; } #define EX2(NAME) \ if (GiNaC::is_a(*convert)) {\ NAME *p = new NAME(GiNaC::ex_to(*convert));\ GETDESC(NAME);\ return SWIG_NewPointerObj((void *)p, NAME##descr, 1);\ } //unwraps ex and return python object PyObject * ex2type(const GiNaC::ex* input) { GiNaC::ex tmp; try { tmp = input->evalm(); } catch(std::exception & e) { tmp = *input; } const GiNaC::ex* convert = &tmp; EX2(symbol) EX2(constant) EX2(numeric) if (GiNaC::is_a(*convert)) { const GiNaC::lst *l = &GiNaC::ex_to(*convert); return lst2list(l); } EX2(pseries) EX2(su3one) EX2(su3t) EX2(su3f) EX2(su3d) EX2(diracone) EX2(diracgamma) EX2(diracgamma5) EX2(diracgammaL) EX2(diracgammaR) EX2(cliffordunit) EX2(tensor) EX2(tensdelta) EX2(tensmetric) EX2(minkmetric) EX2(spinmetric) EX2(tensepsilon) EX2(wildcard) EX2(color) EX2(clifford) EX2(indexed) EX2(varidx) EX2(spinidx) EX2(idx) EX2(symmetry) EX2(integral) EX2(relational) EX2(function) EX2(add) EX2(mul) EX2(ncmul) EX2(matrix) EX2(power) // Nothing converted, throw exception throw (std::logic_error("Cannot unwrap ex. Fix in ex.i")); } //converts ginac lst to python list (unwrapping all exs) PyObject *lst2list(const GiNaC::lst *input) { lst::const_iterator i = input->begin(); lst::const_iterator i_end = input->end(); PyObject *pylist = PyList_New(0); while (i!=i_end) { PyObject *item = ex2type(&(*i)); PyList_Append(pylist, item); //is this necessary? Py_INCREF(item); i++; } return (pylist); } /* PyObject *lst2list(GiNaC::lst *input) { GiNaC::lst *l = input; int n = l->nops(); PyObject *pylist = PyList_New(n); PyObject *item; for (int i=0;ilet_op(i))); PyList_SetItem(pylist, i, item); Py_INCREF(item); } return (pylist); }*/ //convert any python list to ginac lst GiNaC::lst* list2lst(PyObject * input) { GiNaC::lst *out=new lst(); if PyList_Check(input) { int n = PyList_Size(input); PyObject *item; GiNaC::ex *tmp; for (int i = 0; iappend(*tmp); } else { PyErr_SetString(PyExc_ValueError,"Cannot convert type to ex."); return NULL; } } return out; } else { PyErr_SetString(PyExc_ValueError,"List expected."); delete out; return NULL; } } //converts ginac exvector to python list (unwrapping all exs) PyObject *exvector2list(GiNaC::exvector *input) { exvector::const_iterator i = input->begin(); exvector::const_iterator i_end = input->end(); PyObject *pylist = PyList_New(0); while (i!=i_end) { PyObject *item = ex2type(&(*i)); PyList_Append(pylist, item); //is this necessary? Py_INCREF(item); i++; } return (pylist); } %} // vim:ft=cpp: syfi-1.0.0.dfsg.orig/syfi/swig/CMakeLists.txt0000644000175000017500000000512411672223006020707 0ustar johannrjohannr# Set SWIG module name set(SWIG_MODULE_NAME SyFi) # Set SWIG flags set(CMAKE_SWIG_FLAGS -module ${SWIG_MODULE_NAME} -shadow -modern -modernargs -fastdispatch -fvirtual -nosafecstrings -noproxydel -fastproxy -fastinit -fastunpack -fastquery -nobuildnone ${SYFI_CXX_DEFINITIONS} ) set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}) # Add needed include directories include_directories( ${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIRS} ) # Get all SWIG interface files file(GLOB SYFI_SWIG_INTERFACE_FILES "*.i") # Set GiNaC version number in SWIG source file string(REGEX REPLACE "([^ ])..?..?" "\\1" GINACLIB_MAJOR_VERSION "${GINAC_VERSION}") string(REGEX REPLACE ".?.([^ ])..?" "\\1" GINACLIB_MINOR_VERSION "${GINAC_VERSION}") string(REGEX REPLACE ".?..?.([^ ])" "\\1" GINACLIB_MICRO_VERSION "${GINAC_VERSION}") configure_file(${CMAKE_CURRENT_SOURCE_DIR}/SyFi.i.in ${CMAKE_CURRENT_BINARY_DIR}/SyFi.i @ONLY) # Set SWIG source file set(SWIG_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/${SWIG_MODULE_NAME}.i) set_source_files_properties(${SWIG_SOURCES} PROPERTIES CPLUSPLUS ON) # Remove '-Werror' and '-Wall' flags (if present) when compiling SWIG-generated files string(REGEX REPLACE "-Wall" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") string(REGEX REPLACE "-Wall" " " CMAKE_CXX_FLAGS_DEVELOPER "${CMAKE_CXX_FLAGS_DEVELOPER}") string(REGEX REPLACE "-Werror=format-security" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") string(REGEX REPLACE "-Werror=format-security" " " CMAKE_CXX_FLAGS_DEVELOPER "${CMAKE_CXX_FLAGS_DEVELOPER}") string(REGEX REPLACE "-Werror" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") string(REGEX REPLACE "-Werror" " " CMAKE_CXX_FLAGS_DEVELOPER "${CMAKE_CXX_FLAGS_DEVELOPER}") # The prevents swig being run unnecessarily set_source_files_properties(${SWIG_SOURCES} PROPERTIES SWIG_MODULE_NAME ${SWIG_MODULE_NAME}) # Tell CMake which SWIG interface files should be checked for changes when recompile set(SWIG_MODULE_${SWIG_MODULE_NAME}_EXTRA_DEPS ${SYFI_SWIG_INTERFACE_FILES} ${CMAKE_SOURCE_DIR}/syfi/SyFi.h ) swig_add_module(${SWIG_MODULE_NAME} python ${SWIG_SOURCES}) swig_link_libraries(${SWIG_MODULE_NAME} syfi ${SYFI_TARGET_LINK_LIBRARIES} ${PYTHON_LIBRARIES}) # Install Python .py files get_target_property(SWIG_MODULE_LOCATION ${SWIG_MODULE_${SWIG_MODULE_NAME}_REAL_NAME} LOCATION) install(FILES ${SWIG_MODULE_LOCATION} ${CMAKE_CURRENT_BINARY_DIR}/${SWIG_MODULE_NAME}.py DESTINATION ${SYFI_PYTHON_EXT_DIR}/ COMPONENT RuntimeLibraries ) # Install SWIG interface files install(FILES ${SYFI_SWIG_INTERFACE_FILES} DESTINATION ${SYFI_INCLUDE_DIR}/SyFi/swig COMPONENT Development ) syfi-1.0.0.dfsg.orig/syfi/swig/typemaps.1.3.i0000644000175000017500000000571711672223006020473 0ustar johannrjohannr/* (c) Copyright 2003, 2004, 2005 Author: Ola Skavhaug and Ondrej Certik This file is part of swiginac. swiginac is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. swiginac 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 swiginac; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ %typemap(in) (int idx0, int idx1) { $1 = PyInt_AsLong(PyTuple_GetItem($input,0)); $2 = PyInt_AsLong(PyTuple_GetItem($input,1)); } %typemap(in) GiNaC::lst & { $1=list2lst($input); if (!$1) return NULL; } %typemap(typecheck, precedence=1200) GiNaC::lst & { $1 = (PyList_Check($input)) ? 1 : 0; } %{ // class to handle deleting a temporary resource in an input typemap template class TDeleter { public: T * obj; TDeleter(): obj(0) { //std::cout << "TDeleter constructor." << std::endl; } ~TDeleter() { //std::cout << "TDeleter destructor, obj = " << obj << std::endl; if(obj) { //std::cout << "TDeleter deleting obj:" << std::endl; delete obj; //std::cout << "TDeleter done deleting obj." << std::endl; } //std::cout << "TDeleter is now destroyed." << std::endl; } }; typedef TDeleter ex_deleter; typedef TDeleter const_ex_deleter; %} %typemap(in) GiNaC::ex & (ex_deleter deleter) { $1 = type2ex($input); if ($1 == NULL ) { return NULL; } deleter.obj = $1; } %typemap(in) const GiNaC::ex & (const_ex_deleter deleter) { $1 = type2ex($input); if ($1 == NULL ) { return NULL; } deleter.obj = $1; } //%typemap(in) const ex & = ex &; %typemap(in) GiNaC::ex { GiNaC::ex *tmp = type2ex($input); if (tmp == NULL ) { return NULL; } $1 = *(tmp); delete tmp; } %typemap(in) const GiNaC::ex = GiNaC::ex; %typemap(in) GiNaC::numeric & { $1 = type2numeric($input); if (!$1) return NULL; } %typemap(typecheck, precedence=1210) GiNaC::ex & { $1 = (checktype2ex($input)) ? 1 : 0; } %typemap(typecheck, precedence=1209) GiNaC::ex { $1 = (checktype2ex($input)) ? 1 : 0; } %typemap(out) GiNaC::ex { $result = ex2type(&($1)); } //%typemap(out) ex *{ // $result = ex2type($1); // delete $1; //} %typemap(out) GiNaC::exvector { $result = exvector2list(&($1)); } %typemap(out) GiNaC::lst & { $result = lst2list($1); } %typemap(out) GiNaC::lst { $result = lst2list(&($1)); } //it seems we don't need these /* %typemap(out) ex &{ $result = ex2type($1); }*/ // vim:ft=cpp: syfi-1.0.0.dfsg.orig/syfi/swig/cpp2py_exceptions.i0000644000175000017500000000125211672223006021775 0ustar johannrjohannr %exception { try { $action } // all out_of_range subclasses catch (std::out_of_range &e) { PyErr_SetString(PyExc_IndexError, const_cast(e.what())); return NULL; } // all logic_error subclasses catch (std::logic_error &e) { PyErr_SetString(PyExc_StandardError, const_cast(e.what())); return NULL; } // all runtime_error subclasses catch (std::runtime_error &e) { PyErr_SetString(PyExc_RuntimeError, const_cast(e.what())); return NULL; } // all the rest catch (std::exception &e) { PyErr_SetString(PyExc_Exception, const_cast(e.what())); return NULL; } } syfi-1.0.0.dfsg.orig/syfi/SyFi.h0000644000175000017500000000276411672223006016230 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef SYFI_IS_INCLUDED #define SYFI_IS_INCLUDED // misc #include "tools.h" // dof mapping #include "Dof.h" #include "DofT.h" // base classes for element hierarchy #include "Polygon.h" #include "FE.h" #include "MixedFE.h" // concrete element implementations #include "Lagrange.h" #include "CrouzeixRaviart.h" #include "P0.h" #include "RaviartThomas.h" #include "BrezziDouglasMarini.h" #include "DiscontinuousLagrange.h" #include "Hermite.h" #include "Nedelec.h" #include "Nedelec2Hdiv.h" #include "Bubble.h" #include "ArnoldFalkWintherWeakSym.h" #include "Robust.h" #include "SpaceTimeElement.h" // example code #include "ElementComputations.h" // code generation related /* #include "TempSymbolHandler.h" #include "ExpressionCollection.h" #include "ExpressionSimplifier.h" */ #endif syfi-1.0.0.dfsg.orig/syfi/Lagrange.cpp0000644000175000017500000003534711672223006017434 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include #include "Lagrange.h" #include "ElementComputations.h" #include "tools.h" using std::cout; using std::endl; using std::string; namespace SyFi { Lagrange::Lagrange() : StandardFE() { description = "Lagrange"; } Lagrange::Lagrange(Polygon& p, unsigned int order) : StandardFE(p, order) { compute_basis_functions(); } void Lagrange:: compute_basis_functions() { // NOTE: in the below code dof(i) is not used to // determine the basis functions // remove previously computed basis functions and dofs Ns.clear(); dofs.clear(); if ( order < 1 ) { throw(std::logic_error("Lagrangian elements must be of order 1 or higher.")); } if ( p == NULL ) { throw(std::logic_error("You need to set a polygon before the basisfunctions can be computed")); } GiNaC::lst equations; GiNaC::lst variables; GiNaC::ex polynom; if (p->str().find("ReferenceLine") != string::npos) { description = istr("Lagrange_", order) + "_1D"; // Look at the case with the Triangle for a documented code // polynom = pol(order, 1, "a"); // variables = coeffs(polynom); GiNaC::ex polynom_space = bernstein(order, *p, "a"); // GiNaC::ex polynom_space = pol(order, 1, "a"); polynom = polynom_space.op(0); variables = GiNaC::ex_to(polynom_space.op(1)); GiNaC::ex increment = GiNaC::numeric(1,order); GiNaC::ex Nj; for (GiNaC::ex p=0; p<= 1 ; p += increment ) { GiNaC::ex eq = polynom == GiNaC::numeric(0); equations.append(eq.subs(x == p)); dofs.insert(dofs.end(), GiNaC::lst(p)); } } else if (p->str().find("Line") != string::npos ) { description = istr("Lagrange_", order) + "_1D"; // Look at the case with the Triangle for a documented code // polynom = pol(order, 1, "a"); // variables = coeffs(polynom); GiNaC::ex polynom_space = bernstein(order, *p, "a"); // GiNaC::ex polynom_space = pol(order, 1, "a"); polynom = polynom_space.op(0); variables = GiNaC::ex_to(polynom_space.op(1)); Polygon& pp = *p; Line& l = (Line&) pp; GiNaC::lst points = bezier_ordinates(l,order); GiNaC::ex Nj; for (unsigned int i=1; i<= points.nops() ; i++ ) { GiNaC::ex point = points.op(i-1); GiNaC::ex eq = polynom == GiNaC::numeric(0); if (point.nops() == 0) eq = eq.subs(x == point); if (point.nops() > 0) eq = eq.subs(x == point.op(0)); if (point.nops() > 1) eq = eq.subs(y == point.op(1)); if (point.nops() > 2) eq = eq.subs(z == point.op(2)); equations.append(eq); dofs.insert(dofs.end(), GiNaC::lst(point)); } } else if (p->str().find("ReferenceTriangle") != string::npos ) { description = istr("Lagrange_", order) + "_2D"; // Look at the case with the Triangle for a documented code // polynom = pol(order, 2, "b"); // variables = coeffs(polynom); GiNaC::ex polynom_space = bernstein(order, *p, "b"); // GiNaC::ex polynom_space = pol(order, 2, "a"); polynom = polynom_space.op(0); variables = GiNaC::ex_to(polynom_space.op(1)); GiNaC::ex increment = GiNaC::numeric(1,order); GiNaC::ex Nj; GiNaC::numeric one = 1; for (GiNaC::ex q=0; q<= one ; q += increment ) { for (GiNaC::ex p=0; p<= one-q ; p += increment ) { GiNaC::ex eq = polynom == GiNaC::numeric(0); equations.append(eq.subs(GiNaC::lst(x == p, y == q))); dofs.insert(dofs.end(), GiNaC::lst(p,q)); } } } else if ( p->str().find("Triangle") != string::npos) { description = istr("Lagrange_", order) + "_2D"; // Look HERE for the documented code // GiNaC::ex polynom_space = pol(order, 2, "a"); GiNaC::ex polynom_space = bernstein(order, *p, "b"); // the polynomial spaces on the form: // first item: a0 + a1*x + a2*y + a3*x^2 + a4*x*y ... the polynom // second item: a0, a1, a2, ... the coefficents // third item 1, x, y, x^2, .. the basis // Could also do: // GiNaC::ex polynom_space = bernstein(order, t, "a"); polynom = polynom_space.op(0); variables = GiNaC::ex_to(polynom_space.op(1)); GiNaC::ex Nj; Polygon& pp = *p; Triangle& t = (Triangle&) pp; // The bezier ordinates (in which the basis function should be either 0 or 1) GiNaC::lst points = bezier_ordinates(t,order); for (unsigned int i=1; i<= points.nops() ; i++ ) { GiNaC::ex point = points.op(i-1); GiNaC::ex eq = polynom == GiNaC::numeric(0); equations.append(eq.subs(GiNaC::lst(x == point.op(0) , y == point.op(1)))); dofs.insert(dofs.end(), GiNaC::lst(point.op(0),point.op(1))); } } else if ( p->str().find("ReferenceRectangle") != string::npos) { description = istr("Lagrange_", order) + "_2D"; // create 1D element, then create tensor product ReferenceLine line; Lagrange fe(line, order); for (unsigned int i=0; i< fe.nbf(); i++) { for (unsigned int j=0; j< fe.nbf(); j++) { Ns.insert(Ns.end(), fe.N(i)*fe.N(j).subs(x==y)); dofs.insert(dofs.end(), GiNaC::lst(fe.dof(i).op(0), fe.dof(j).op(0))); } } return; /* OLD CODE GiNaC::ex polynom_space = legendre(order, 2, "b"); polynom = polynom_space.op(0); variables = GiNaC::ex_to(polynom_space.op(1)); GiNaC::ex Nj; Polygon& pp = *p; ReferenceRectangle& b = (ReferenceRectangle&) pp; int no_points = (order+1)*(order+1); GiNaC::ex increment = GiNaC::numeric(1,order); GiNaC::numeric one=1.0; for (GiNaC::ex q=0; q <= one ; q += increment ) { for (GiNaC::ex p=0; p <= one ; p += increment ) { GiNaC::ex eq = polynom == GiNaC::numeric(0); equations.append(eq.subs(GiNaC::lst(x == p, y == q))); dofs.push_back(GiNaC::lst(p,q)); } } */ } else if ( p->str().find("ReferenceTetrahedron") != string::npos) { description = istr("Lagrange_", order) + "_3D"; // Look at the case with the Triangle for a documented code // polynom = pol(order, 3, "b"); // GiNaC::ex polynom_space = pol(order, 3, "a"); GiNaC::ex polynom_space = bernstein(order, *p, "b"); polynom = polynom_space.op(0); variables = GiNaC::ex_to(polynom_space.op(1)); int nno =0; for (unsigned int j=0; j<= order; j++) { nno += (j+1)*(j+2)/2; } GiNaC::ex increment = GiNaC::numeric(1,order); GiNaC::ex Nj; for (GiNaC::ex r=0; r<= 1 ; r += increment ) { for (GiNaC::ex q=0; q<= 1-r ; q += increment ) { for (GiNaC::ex p=0; p<= 1-r-q ; p += increment ) { GiNaC::ex eq = polynom == GiNaC::numeric(0); equations.append(eq.subs(GiNaC::lst(x == p, y == q, z == r ))); dofs.push_back(GiNaC::lst(p,q,r)); } } } } else if ( p->str().find("Tetrahedron") != string::npos) { description = istr("Lagrange_", order) + "_3D"; // Look at the case with the Triangle for a documented code GiNaC::ex polynom_space = pol(order, 3, "a"); // GiNaC::ex polynom_space = bernstein(order, *p, "b"); polynom = polynom_space.op(0); variables = GiNaC::ex_to(polynom_space.op(1)); GiNaC::ex increment = GiNaC::numeric(1,order); GiNaC::ex Nj; Polygon& pp = *p; Tetrahedron& t = (Tetrahedron&) pp; GiNaC::lst points = bezier_ordinates(t,order); for (unsigned int i=1; i<= points.nops() ; i++ ) { GiNaC::ex point = points.op(i-1); GiNaC::ex eq = polynom == GiNaC::numeric(0); equations.append(eq.subs(GiNaC::lst(x == point.op(0) , y == point.op(1), z == point.op(2)))); dofs.push_back(GiNaC::lst(point.op(0),point.op(1),point.op(2))); } } else if ( p->str().find("ReferenceBox") != string::npos) { description = istr("Lagrange_", order) + "_3D"; ReferenceLine line; Lagrange fe(line, order); for (unsigned int i=0; i< fe.nbf(); i++) { for (unsigned int j=0; j< fe.nbf(); j++) { for (unsigned int k=0; k< fe.nbf(); k++) { Ns.insert(Ns.end(), fe.N(i)*fe.N(j).subs(x==y)*fe.N(k).subs(x==z)); dofs.insert(dofs.end(), GiNaC::lst(fe.dof(i).op(0), fe.dof(j).op(0), fe.dof(k).op(0))); } } } return; /* OLD CODE GiNaC::ex polynom_space = legendre(order, 3, "b"); polynom = polynom_space.op(0); variables = GiNaC::ex_to(polynom_space.op(1)); GiNaC::ex Nj; Polygon& pp = *p; ReferenceRectangle& b = (ReferenceRectangle&) pp; int no_points = (order+1)*(order+1)*(order+1); GiNaC::ex increment = GiNaC::numeric(1,order); GiNaC::numeric one = 1; for (GiNaC::ex p=0; p <= one ; p += increment) { for (GiNaC::ex q=0; q <= one ; q += increment) { for (GiNaC::ex r=0; r <= one ; r += increment) { GiNaC::ex eq = polynom == GiNaC::numeric(0); equations.append(eq.subs(GiNaC::lst(x == p, y == q, z==r))); dofs.push_back(GiNaC::lst(p,q,r)); } } } / * GiNaC::ex subs = lsolve(equations, variables); Nj = polynom.subs(subs); Ns.push_back(Nj); */ } // invert the matrix: // GiNaC has a bit strange way to invert a matrix. // It solves the system AA^{-1} = Id. // It seems that this way is the only way to do // properly with the solve_algo::gauss flag. // // std::cout <<"no variables "<(b)); GiNaC::lst subs; for (unsigned int ii=0; ii. #include "Dof_Ptv.h" syfi-1.0.0.dfsg.orig/syfi/Bubble.h0000644000175000017500000000202211672223006016534 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef BUBBLEFE_IS_INCLUDED #define BUBBLEFE_IS_INCLUDED #include "FE.h" namespace SyFi { class Bubble : public StandardFE { public: Bubble(); Bubble(Polygon& p, unsigned int order = 3); virtual ~Bubble() {} virtual void compute_basis_functions(); }; } // namespace SyFi #endif syfi-1.0.0.dfsg.orig/syfi/Lagrange.h0000644000175000017500000000347111672223006017072 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef LAGRANGEFE_IS_INCLUDED #define LAGRANGEFE_IS_INCLUDED #include "FE.h" namespace SyFi { class Lagrange : public StandardFE { public: Lagrange(); Lagrange(Polygon& p, unsigned int order = 1); virtual ~Lagrange() {} virtual void compute_basis_functions(); }; class VectorLagrange : public StandardFE { protected: unsigned int size; public: VectorLagrange(); VectorLagrange(Polygon& p, unsigned int order = 1, unsigned int size = 0); ~VectorLagrange() {} virtual void set_size(unsigned int size_); virtual void compute_basis_functions(); }; class TensorLagrange : public StandardFE { protected: unsigned int size; public: TensorLagrange(); TensorLagrange(Polygon& p, unsigned int order = 1, unsigned int size = 0); ~TensorLagrange() {} virtual void set_size(unsigned int size_); virtual void compute_basis_functions(); }; GiNaC::ex lagrange(unsigned int order, Polygon& p, const std::string & a); GiNaC::lst lagrangev(unsigned int no_fields, unsigned int order, Polygon& p, const std::string & a); } // namespace SyFi #endif syfi-1.0.0.dfsg.orig/syfi/Robust.h0000644000175000017500000000217511672223006016630 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef ROBUST_IS_INCLUDED #define ROBUST_IS_INCLUDED #include "FE.h" namespace SyFi { class Robust : public StandardFE { public: bool pointwise; GiNaC::lst dof_repr; Robust(); Robust(Polygon& p, unsigned int order = 0, bool pointwise=true); virtual ~Robust() {} virtual void compute_basis_functions(); virtual void compute_basis_functions_old(); }; } // namespace SyFi #endif syfi-1.0.0.dfsg.orig/syfi/Ptv_tools.h0000644000175000017500000000266711672223006017351 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef PTV_TOOLS_IS_INCLUDED #define PTV_TOOLS_IS_INCLUDED #include "Ptv.h" #include using namespace std; namespace SyFi { void sort_vector(vector& a); void set_tolerance(double tolerance); double mul(const Ptv&a, const Ptv& b); double norm(const Ptv& a); void normalize(Ptv& a); void add(const Ptv&a, const Ptv& b, Ptv& c); void sub(const Ptv&a, const Ptv& b, Ptv& c); void cross(const Ptv& a, const Ptv& b, Ptv& c); bool is_equal(Ptv& a, Ptv& b); bool line_contains(Ptv& e0, Ptv& e1, Ptv& p); bool is_inside_triangle(Ptv& e0, Ptv& e1, Ptv& e2, Ptv& p); bool contains2D(Ptv& e0, Ptv& e1, Ptv& p); bool contains3D(Ptv& e0, Ptv& e1, Ptv& e2, Ptv& p); } // namespace SyFi #endif syfi-1.0.0.dfsg.orig/syfi/diff_tools.cpp0000644000175000017500000001644011672223006020035 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "diff_tools.h" #include "symbol_factory.h" #include namespace SyFi { /* Alternative implementation for any vector representation GiNaC::ex div(GiNaC::ex v){ using SyFi::nsd; using SyFi::p; if(nsd != v.nops()) { throw std::invalid_argument("In div(v): The number of elements must equal nsd."); } GiNaC::ex ret = 0; for(int i=0; i(v)) { GiNaC::matrix m = GiNaC::ex_to(v); if ( m.cols() == 1 && m.rows() == nsd ) { if (nsd == 1) { ret = diff(m,x); } else if (nsd == 2) { ret = diff(m.op(0),x) + diff(m.op(1),y) ; } else if (nsd == 3) { ret = diff(m.op(0),x) + diff(m.op(1),y) + diff(m.op(2),z) ; } else { throw std::runtime_error("Invalid nsd"); } } else { GiNaC::matrix retm = GiNaC::matrix(m.cols(),1); if ( nsd != m.rows() ) { throw(std::invalid_argument("The number of rows must equal nsd.")); } GiNaC::symbol xr; GiNaC::ex tmp; for (unsigned int c=0; c(v)) { GiNaC::lst l = GiNaC::ex_to(v); return div(l); } throw std::invalid_argument("v must be a matrix or lst."); } GiNaC::ex div(GiNaC::ex v, GiNaC::ex G) { using SyFi::nsd; using SyFi::x; using SyFi::y; using SyFi::z; GiNaC::ex ret; if (GiNaC::is_a(v) && GiNaC::is_a(G)) { GiNaC::matrix m = GiNaC::ex_to(v); GiNaC::matrix GG = GiNaC::ex_to(G); if ( m.cols() == 1 && m.rows() == nsd && GG.rows() == nsd && GG.cols() == nsd ) { if ( nsd == 1 || nsd == 2 || nsd == 3) { ret = GiNaC::numeric(0); GiNaC::symbol xj; for (unsigned int i=0; i< nsd; i++) { for (unsigned int j=0; j< nsd; j++) { if (j == 0) xj = x; if (j == 1) xj = y; if (j == 2) xj = z; ret += m.op(i).diff(xj)*GG(i,j); } } } else { throw std::runtime_error("Invalid nsd"); } } else { throw std::invalid_argument("This functions needs v and G on the form: v.cols()=1, v.rows()=G.rows()=G.cols()=nsd."); } } else if (GiNaC::is_a(v)) { GiNaC::lst l = GiNaC::ex_to(v); return div(l,G); } else { throw std::invalid_argument("v must be a matrix or lst."); } return ret; } GiNaC::ex div(GiNaC::lst& v) { using SyFi::x; using SyFi::y; using SyFi::z; using SyFi::nsd; nsd = v.nops(); GiNaC::ex ret; if (nsd == 1) { ret = v.op(0).diff(x); } else if (nsd == 2) { ret = v.op(0).diff(x) + v.op(1).diff(y); } else if (nsd == 3) { ret = v.op(0).diff(x) + v.op(1).diff(y) + v.op(2).diff(z); } return ret; } GiNaC::ex div(GiNaC::lst& v, GiNaC::ex G) { using SyFi::x; using SyFi::y; using SyFi::z; using SyFi::nsd; nsd = v.nops(); GiNaC::ex ret; if (GiNaC::is_a(G)) { GiNaC::matrix GG = GiNaC::ex_to(G); if ( nsd != GG.cols() || nsd != GG.rows()) { throw(std::invalid_argument("The number of rows and cols in G must equal the size of v.")); } if (nsd == 1 || nsd == 2 || nsd == 3 ) { GiNaC::symbol xj; ret = GiNaC::numeric(0); for (unsigned int i=0; i< nsd; i++) { for (unsigned int j=0; j< nsd; j++) { if (i == 0) xj = x; if (i == 1) xj = y; if (i == 2) xj = z; ret += v.op(i).diff(xj)*GG(i,j); } } } else { throw std::runtime_error("Invalid nsd"); } } else { throw std::invalid_argument("v must be a matrix."); } return ret; } GiNaC::ex div(GiNaC::exvector& v) { using SyFi::nsd; using SyFi::x; using SyFi::y; using SyFi::z; GiNaC::ex ret; if (nsd == 2) { ret = v[0].diff(x) + v[1].diff(y); } else if (nsd == 3) { ret = v[0].diff(x) + v[1].diff(y) + v[2].diff(z); } return ret; } GiNaC::ex grad(GiNaC::ex f) { using SyFi::nsd; using SyFi::x; using SyFi::y; using SyFi::z; if (GiNaC::is_a(f)) { GiNaC::matrix m = GiNaC::ex_to(f); GiNaC::matrix ret_m(nsd,m.rows()); for (unsigned int r=0; r< m.rows(); r++) { if (nsd == 1) { // ret_m(0,r) = diff(m.op(r),x); return diff(f, x); } else if ( nsd == 2) { ret_m(0,r) = diff(m.op(r),x); ret_m(1,r) = diff(m.op(r),y); } else if ( nsd == 3) { ret_m(0,r) = diff(m.op(r),x); ret_m(1,r) = diff(m.op(r),y); ret_m(2,r) = diff(m.op(r),z); } } return ret_m; } else { if (nsd == 1) { // return GiNaC::matrix(nsd,1,GiNaC::lst(diff(f,x))); return diff(f,x); } else if ( nsd == 2) { return GiNaC::matrix(nsd,1,GiNaC::lst(diff(f,x), diff(f,y))); } else if ( nsd == 3) { return GiNaC::matrix(nsd,1,GiNaC::lst(diff(f,x), diff(f,y), diff(f,z))); } else { throw(std::invalid_argument("nsd must be either 1, 2, or 3.")); return GiNaC::matrix(); } } } GiNaC::ex grad(GiNaC::ex f, GiNaC::ex G) { using SyFi::nsd; using SyFi::x; using SyFi::y; using SyFi::z; GiNaC::symbol xr; if ( GiNaC::is_a(G)) { GiNaC::matrix GG = GiNaC::ex_to(G); if (! (GG.rows() == nsd && GG.cols() == nsd )) { throw(std::invalid_argument("The number of cols/rows in G must equal nsd.")); } if (GiNaC::is_a(f) ) { GiNaC::matrix m = GiNaC::ex_to(f); GiNaC::matrix ret_m(nsd,m.rows()); for (unsigned int k=0; k< m.rows(); k++) { for (unsigned int c=0; c. #ifndef P0FE_IS_INCLUDED #define P0FE_IS_INCLUDED #include "FE.h" namespace SyFi { class P0 : public StandardFE { public: P0(); P0(Polygon& p, unsigned int order = 0); virtual ~P0() {} virtual void compute_basis_functions(); }; class VectorP0 : public StandardFE { protected: unsigned int size; public: VectorP0(); VectorP0(Polygon& p, unsigned int order = 0, unsigned int size = 0 ); ~VectorP0() {} virtual void set_size(unsigned int size_); virtual void compute_basis_functions(); }; class TensorP0 : public StandardFE { protected: unsigned int size; public: TensorP0(); TensorP0(Polygon& p, unsigned int order = 0, unsigned int size = 0 ); ~TensorP0() {} virtual void set_size(unsigned int size_); virtual void compute_basis_functions(); }; } #endif syfi-1.0.0.dfsg.orig/syfi/utilities.cpp0000644000175000017500000000614511672223006017721 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "utilities.h" #include "syfi_version.h" #include #include using namespace std; namespace SyFi { /* Version information buried into the library */ const int version_major = SYFILIB_MAJOR_VERSION; const int version_minor = SYFILIB_MINOR_VERSION; const char* version_micro = SYFILIB_MICRO_VERSION; int dirac(unsigned int i, unsigned int j) { if (i==j) return 1; else return 0; } string int2string(int i) { ostringstream os; os << i; return os.str(); } string istr(const string & a, int b) { ostringstream s; s << a << b; return s.str(); } string istr(const string & a, int b, int c) { ostringstream s; s << a << b << "_" <, GiNaC::ex>& A) { map,GiNaC::ex>::iterator iter; for (iter = A.begin(); iter != A.end() ; iter++) { cout <<"A["<<(*iter).first.first<<","<<(*iter).first.second<<"]="<<(*iter).second<. #include "CrouzeixRaviart.h" #include "tools.h" using std::cout; using std::endl; using std::string; namespace SyFi { CrouzeixRaviart:: CrouzeixRaviart() : StandardFE() { order = 1; } CrouzeixRaviart:: CrouzeixRaviart (Polygon& p, unsigned int order) : StandardFE(p, order) { compute_basis_functions(); } void CrouzeixRaviart:: compute_basis_functions() { // remove previously computed basis functions and dofs Ns.clear(); dofs.clear(); if ( p == NULL ) { throw(std::logic_error("You need to set a polygon before the basisfunctions can be computed")); } if (order != 1) { throw(std::logic_error("Only Crouziex-Raviart elements of order 1 is possible")); } // see e.g. Brezzi and Fortin book page 116 for the definition if ( p->str().find("ReferenceLine") != string::npos ) { cout <<"Can not define the Raviart-Thomas element on a line"<str().find("Triangle") != string::npos ) { description = "CrouzeixRaviart_2D"; Triangle& triangle = (Triangle&)(*p); // create the polynomial space GiNaC::ex polynom_space = bernstein(1, triangle, "a"); GiNaC::ex polynom = polynom_space.op(0); GiNaC::lst variables = GiNaC::ex_to(polynom_space.op(1)); GiNaC::ex basis = polynom_space.op(2); // create the dofs GiNaC::symbol t("t"); for (int j=0; j< 3; j++) { // solve the linear system to compute // each of the basis functions GiNaC::lst equations; for (int i=0; i< 3; i++) { Line line = triangle.line(i); // GiNaC::ex dofi = line.integrate(polynom); GiNaC::lst midpoint = GiNaC::lst( (line.vertex(0).op(0) + line.vertex(1).op(0))/2, (line.vertex(0).op(1) + line.vertex(1).op(1))/2); dofs.insert(dofs.end(), midpoint); // GiNaC::ex dofi = polynom.subs( x == midpoint.op(0)).subs( y == midpoint.op(1)); GiNaC::ex dofi = line.integrate(polynom); equations.append( dofi == dirac(i,j)); if (j == 1) { // GiNaC::lst d = GiNaC::lst(line.vertex(0) , line.vertex(1)); dofs.insert(dofs.end(), midpoint); } } GiNaC::ex sub = lsolve(equations, variables); GiNaC::ex Ni = polynom.subs(sub); Ns.insert(Ns.end(),Ni); } } else if ( p->str().find("Tetrahedron") != string::npos ) { description = "CrouzeixRaviart_3D"; Tetrahedron& tetrahedron = (Tetrahedron&)(*p); GiNaC::ex polynom_space = bernstein(1, tetrahedron, "a"); GiNaC::ex polynom = polynom_space.op(0); GiNaC::lst variables = GiNaC::ex_to(polynom_space.op(1)); GiNaC::ex basis = polynom_space.op(2); GiNaC::ex bernstein_pol; GiNaC::symbol t("t"); // dofs related to edges for (int j=0; j< 4; j++) { GiNaC::lst equations; for (int i=0; i< 4; i++) { Triangle triangle = tetrahedron.triangle(i); GiNaC::lst midpoint = GiNaC::lst( (triangle.vertex(0).op(0) + triangle.vertex(1).op(0) + triangle.vertex(2).op(0))/3, (triangle.vertex(0).op(1) + triangle.vertex(1).op(1) + triangle.vertex(2).op(1))/3, (triangle.vertex(0).op(2) + triangle.vertex(1).op(2) + triangle.vertex(2).op(2))/3 ); GiNaC::ex dofi = polynom.subs(x == midpoint.op(0)).subs(y == midpoint.op(1)).subs(z == midpoint.op(2)); equations.append( dofi == dirac(i,j)); if ( j == 1 ) { // GiNaC::lst d = GiNaC::lst(triangle.vertex(0), triangle.vertex(1), triangle.vertex(2)); dofs.insert(dofs.end(), midpoint); } } GiNaC::ex sub = lsolve(equations, variables); GiNaC::ex Ni = polynom.subs(sub); Ns.insert(Ns.end(),Ni); } } } // ------------VectorCrouzeixRaviart --- VectorCrouzeixRaviart:: VectorCrouzeixRaviart (Polygon& p, unsigned int order, unsigned int size_) : StandardFE(p, order) { size = size_ < 0 ? nsd: size_; compute_basis_functions(); } VectorCrouzeixRaviart:: VectorCrouzeixRaviart() : StandardFE() { description = "VectorCrouzeixRaviart"; order = 1; } void VectorCrouzeixRaviart:: compute_basis_functions() { if (order != 1) { throw(std::logic_error("Only Crouziex-Raviart elements of order 1 is possible")); } CrouzeixRaviart fe; fe.set_polygon(*p); fe.compute_basis_functions(); description = "Vector" + fe.str(); GiNaC::lst zero_list; for (unsigned int s=1; s<= size ; s++) { zero_list.append(0); } for (unsigned int s=0; s< size ; s++) { for (unsigned int i=0; i< fe.nbf() ; i++) { GiNaC::lst Nis = zero_list; Nis.let_op(s) = fe.N(i); GiNaC::ex Nmat = GiNaC::matrix(size,1,Nis); Ns.insert(Ns.end(), Nmat); GiNaC::lst dof = GiNaC::lst(fe.dof(i), s) ; dofs.insert(dofs.end(), dof); } } } void VectorCrouzeixRaviart:: set_size(unsigned int size_) { size = size_; } } // namespace SyFi syfi-1.0.0.dfsg.orig/syfi/ginac_tools.h0000644000175000017500000001273211672223006017653 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef GINAC_TOOLS_IS_INCLUDED #define GINAC_TOOLS_IS_INCLUDED #include #include #include #include #include "utilities.h" namespace SyFi { bool compare(const GiNaC::ex & e, const std::string & s); void EQUAL_OR_DIE(const GiNaC::ex & e, const std::string & s); // Read two archive files and compare the expressions. // If any expressions are not equal, prints them and // returns false. Returns true if all expressions are equal. bool compare_archives(const std::string & first, const std::string & second, std::ostream & os=std::cout); // using lst as a vector // inner product of vectors or lst GiNaC::ex inner(GiNaC::ex a, GiNaC::ex b, bool transposed = false); GiNaC::ex inner(GiNaC::exvector& v1, GiNaC::exvector& v2); GiNaC::ex inner(GiNaC::lst v1, GiNaC::lst v2); GiNaC::lst cross(GiNaC::lst& v1, GiNaC::lst& v2); // matrix vector product GiNaC::lst matvec(GiNaC::matrix& M, GiNaC::lst& x); GiNaC::ex matvec(GiNaC::ex A, GiNaC::ex x); GiNaC::lst ex2equations(GiNaC::ex rel); GiNaC::lst collapse(GiNaC::lst l); GiNaC::matrix equations2matrix (const GiNaC::ex &eqns, const GiNaC::ex &symbols); void matrix_from_equations(const GiNaC::ex &eqns, const GiNaC::ex &symbols, GiNaC::matrix &A, GiNaC::matrix& b); GiNaC::ex lst_to_matrix2(const GiNaC::lst & l); GiNaC::lst matrix_to_lst2(const GiNaC::ex & m ); GiNaC::lst lst_equals(GiNaC::ex a, GiNaC::ex b); // FIXME bad name int find(GiNaC::ex e, GiNaC::lst list); // TODO: remove these two: void check_visitor(GiNaC::ex e, GiNaC::lst& exlist); void visitor_subst_pow(GiNaC::ex e, GiNaC::exmap& map, ex_int_map& intmap, std::string a); // generates a polynom of arbitrary order on a line, a triangle, or a tetrahedron GiNaC::ex pol(unsigned int order, unsigned int nsd, const std::string a); // generates a vector polynom of arbitrary order on a line, a triangle or a tetrahedron GiNaC::lst polv(unsigned int no_fields, unsigned int order, unsigned int nsd, const std::string a); // generates a polynom of arbitrary order on a square or a box GiNaC::ex polb(unsigned int order, unsigned int nsd, const std::string a); // generates a vector polynom of arbitrary order on a squart or a box //lst polbv(int order, int nsd, const std::string a); // generates a homogenous polynom of arbitrary order on a line, a triangle, or a tetrahedron GiNaC::ex homogenous_pol(unsigned int order, unsigned int nsd, const std::string a); // generates a homogenous vector polynom of arbitrary order GiNaC::lst homogenous_polv(unsigned int no_fields, unsigned int order, unsigned int nsd, const std::string a); // generates a Legendre polynom of arbitrary order GiNaC::ex legendre(unsigned int order, unsigned int nsd, const std::string a); // generates a Legendre vector polynom of arbitrary order GiNaC::lst legendrev(unsigned int no_fields, unsigned int order, unsigned int nsd, const std::string a); // extracts the coefficents from a polynomial GiNaC::exvector coeff(GiNaC::ex pol); GiNaC::lst coeffs(GiNaC::ex pol); GiNaC::lst coeffs(GiNaC::lst pols); // extract the basisfunctions and corresponding coefficents from a polynomial GiNaC::exmap pol2basisandcoeff(GiNaC::ex e); GiNaC::exmap pol2basisandcoeff(GiNaC::ex e, GiNaC::ex s); // Collect all symbols of an expression void collect_symbols(const GiNaC::ex & e, exset & v); GiNaC::exvector collect_symbols(const GiNaC::ex & e); // Builds a map with the number of occurrences of each symbol. // Highly dependent on the current form of the expression. GiNaC::exhashmap count_symbols(const GiNaC::ex & e); // Extract all symbols into a lst. Useful for comparing // expressions to other ex read from an archive. GiNaC::ex extract_symbols(const GiNaC::ex & e); //std::list get_symbols(const GiNaC::ex & e); //GiNaC::exvector get_symbols(const GiNaC::ex & e); //void get_symbols(const GiNaC::ex & e, GiNaC::exmap & em); // Utility class to collect statistics about an expression. class ExStats { public: ExStats(): muls(0), adds(0), pows(0), functions(0), flops(0) {} inline const ExStats & operator+=(const ExStats & rhs) { muls += rhs.muls; adds += rhs.adds; pows += rhs.pows; functions += rhs.functions; flops += rhs.flops; return *this; } int muls; int adds; int pows; int functions; // flops = sum of multiplications and additions, with integer powers interpreted as many multiplications int flops; }; // Count the number of operations in an expression. ExStats count_ops(const GiNaC::ex & e); // ===== expression manipulation GiNaC::ex replace_powers(const GiNaC::ex & e, const std::list & symbols, std::list & sel, const std::string & tmpsymbolprefix="p_"); }; // namespace SyFi #endif syfi-1.0.0.dfsg.orig/syfi/Ptv.h0000644000175000017500000000347111672223006016123 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef PTV_INCLUDED #define PTV_INCLUDED #include #include class Ptv { public: unsigned int dim; double* v; static double tol; Ptv(unsigned int size_); Ptv(unsigned int size_, double* v_); Ptv(double x, double y); Ptv(double x, double y, double z); Ptv(const Ptv& p); Ptv(); void redim(unsigned int size_, double *v_); void redim(unsigned int size_); void fill(double *v_); virtual ~Ptv(); const unsigned int size() const; const double& operator [] (unsigned int i) const; double& operator [] (unsigned int i); Ptv& operator = (const Ptv& p); bool less(const Ptv& p) const; }; struct Ptv_is_less : public std::binary_function { bool operator() (const Ptv &lh, const Ptv &rh) const { return lh.less(rh); } }; class Ptv_match : public std::unary_function { protected: static double tol; unsigned int d; double v; public: Ptv_match(); Ptv_match(unsigned int d_, double v_); virtual ~Ptv_match() {} bool operator() (const Ptv &p); }; std::ostream & operator<< ( std::ostream& os, const Ptv& p); #endif syfi-1.0.0.dfsg.orig/syfi/Polygon.cpp0000644000175000017500000013530511672223006017336 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include #include "Polygon.h" #include "tools.h" #include "symbol_factory.h" //using namespace std; using std::string; using GiNaC::ex; using GiNaC::lst; using GiNaC::exvector; using GiNaC::ex_to; using GiNaC::is_a; using GiNaC::numeric; namespace SyFi { //--- Polygon ------------------------------------ // Polygon::Polygon(const string & subscript_, unsigned int no_vert): subscript(subscript_), p(no_vert) { } Polygon::Polygon(const Polygon& polygon) : subscript(polygon.str()), p(polygon.no_vertices()) { for (unsigned int i=0; i p.size()-1 ) { throw std::out_of_range("Vertex index is out of range!"); } return p[i]; } Line Polygon::line(unsigned int i) const { throw std::logic_error("line not implemented for this polygon subclass"); } Triangle Polygon::triangle(unsigned int i) const { throw std::logic_error("triangle not implemented for this polygon subclass"); } Rectangle Polygon::rectangle(unsigned int i) const { throw std::logic_error("rectangle not implemented for this polygon subclass"); } //--- Line ------------------------------------ // Line::Line(ex x0, ex x1, const string & subscript_): Polygon(subscript_, 2) { /* Lines on the form * x = x_0 + a_1 t * y = y_0 + a_2 t * z = z_0 + a_3 t */ p[0] = x0; p[1] = x1; //update internal structure if ( nsd == 1 ) { a_ = x1-x0; b_ = x0; } else if ( (GiNaC::is_a(x0) && GiNaC::is_a(x1)) && (x0.nops() == x1.nops()) ) { // TODO: support matrix in addition to lst? lst aa; lst bb; // compute aa and bb for (unsigned int i=0; i<= x0.nops()-1; i++) { bb.append(x0.op(i)); aa.append(x1.op(i) - x0.op(i)); } a_ = aa; b_ = bb; } else { throw(std::logic_error("The points x0 and x1 needs to be of type lst if nsd > 1.")); } } Line::Line(const Line& line): Polygon(line), a_(line.a_), b_(line.b_) { } unsigned int Line::no_space_dim() const { return 1; } ex Line::a() const { return a_; } ex Line::b() const { return b_; } ex Line::repr(Repr_format format) const { return repr(GiNaC::symbol("t"), format); } ex Line::repr(ex t, Repr_format format) const { /* NOTE: use the same symbols in this * description as in the actual symbols * below and in the documentation. * * Lines on the form * x = x_0 + a_1 t, * y = y_0 + a_2 t, * z = z_0 + a_3 t. * for t in [0,1] */ lst r; if ( format == SUBS_PERFORMED ) { if (!GiNaC::is_a(a_)) { r = lst( x == b_ + a_*t); } else { if ( a_.nops() == 1) { r = lst( x == b_.op(0) + a_.op(0)*t); } // 2D else if ( a_.nops() == 2) { r = lst( x == b_.op(0) + a_.op(0)*t, y == b_.op(1) + a_.op(1)*t); // 3D } else if ( a_.nops() == 3) { r = lst( x == b_.op(0) + a_.op(0)*t, y == b_.op(1) + a_.op(1)*t, z == b_.op(2) + a_.op(2)*t); } } r.append(lst(t,0,1)); } else if ( format == SUBS_NOT_PERFORMED ) { // NOTE: decide how the constant should be !! GiNaC::symbol a1("A"+subscript); GiNaC::symbol a2("C"+subscript); GiNaC::symbol a3("E"+subscript); GiNaC::symbol b1("B"+subscript); GiNaC::symbol b2("D"+subscript); GiNaC::symbol b3("F"+subscript); // 2D if ( a_.nops() == 2) { r = lst( x == b1 + a1*t, y == b2 + a2*t); r.append( a1 == a_.op(0)); r.append( b1 == b_.op(0)); r.append( a2 == a_.op(1)); r.append( b2 == b_.op(1)); // 3D } else if ( a_.nops() == 3) { r = lst( x == b1 + a1*t, y == b2 + a2*t, z == b3 + a3*t); r.append( a1 == a_.op(0)); r.append( b1 == b_.op(0)); r.append( a2 == a_.op(1)); r.append( b2 == b_.op(1)); r.append( a3 == a_.op(2)); r.append( b3 == b_.op(2)); } r.append(lst(t,0,1)); } return r; } const string Line::str() const { std::ostringstream s; // s <<"Line("<=nsd; i--) { intf = GiNaC::integral(s_repr.op(i).op(0), s_repr.op(i).op(1), s_repr.op(i).op(2), intf); intf = GiNaC::eval_integ(intf); } return intf; } Simplex Simplex::sub_simplex(unsigned int i) { if ( i < 0 || i >= p.size()) { throw std::out_of_range("Can only create subsimplices between 0 and the number of vertices-1."); } lst v; for (unsigned int k=0; k< p.size(); k++) { if ( k != i) { v.append(p[k]); } } return Simplex(v, istr(subscript, i)); } Simplex* Simplex::copy() const { return new Simplex(*this); } //-- tools for Polygons ------------------------------------------------------ lst bezier_ordinates(Tetrahedron& tetrahedra, unsigned int d) { //FIXME: ugly conversion to matrix lst ret; ex V1 = tetrahedra.vertex(0); ex V2 = tetrahedra.vertex(1); ex V3 = tetrahedra.vertex(2); ex V4 = tetrahedra.vertex(3); lst V1l = ex_to(V1); lst V2l = ex_to(V2); lst V3l = ex_to(V3); lst V4l = ex_to(V4); ex V1m = lst_to_matrix2(V1l); ex V2m = lst_to_matrix2(V2l); ex V3m = lst_to_matrix2(V3l); ex V4m = lst_to_matrix2(V4l); int l; for (unsigned int i=0; i<= d; i++) { for (unsigned int j=0; j<= d; j++) { for (unsigned int k=0; k<= d; k++) { if ( d - i - j -k >= 0 ) { l= d - i - j -k; ex sum = (l*V1m + k*V2m + j*V3m + i*V4m)/d; ret.append(matrix_to_lst2(sum.evalm())); } } } } // FIXME how should these be sorted ????? // ret = ret.sort(); return ret; } lst interior_coordinates(Tetrahedron& tetrahedra, unsigned int d) { //FIXME: ugly conversion to matrix d = d+4; lst ret; ex V1 = tetrahedra.vertex(0); ex V2 = tetrahedra.vertex(1); ex V3 = tetrahedra.vertex(2); ex V4 = tetrahedra.vertex(3); lst V1l = ex_to(V1); lst V2l = ex_to(V2); lst V3l = ex_to(V3); lst V4l = ex_to(V4); ex V1m = lst_to_matrix2(V1l); ex V2m = lst_to_matrix2(V2l); ex V3m = lst_to_matrix2(V3l); ex V4m = lst_to_matrix2(V4l); int l; for (unsigned int i=1; i< d; i++) { for (unsigned int j=1; j< d; j++) { for (unsigned int k=1; k< d; k++) { if ( int(d) - int(i) - int(j) - int(k) >= 1 ) { l= int(d) - int(i) - int(j) - int(k); ex sum = (l*V1m + k*V2m + j*V3m + i*V4m)/d; ret.append(matrix_to_lst2(sum.evalm())); } } } } // FIXME how should these be sorted ????? // ret = ret.sort(); return ret; } lst bezier_ordinates(Triangle& triangle, unsigned int d) { //FIXME: ugly conversion to matrix lst ret; ex V1 = triangle.vertex(0); ex V2 = triangle.vertex(1); ex V3 = triangle.vertex(2); lst V1l = ex_to(V1); lst V2l = ex_to(V2); lst V3l = ex_to(V3); ex V1m = lst_to_matrix2(V1l); ex V2m = lst_to_matrix2(V2l); ex V3m = lst_to_matrix2(V3l); int k; for (unsigned int i=0; i <= d; i++) { for (unsigned int j=0; j <= d; j++) { if ( int(d) - int(i) - int(j) >= 0 ) { k = d - i - j; ex sum = (k*V1m + j*V2m + i*V3m)/d; ret.append(matrix_to_lst2(sum.evalm())); } } } // FIXME how should these be sorted ????? // ret = ret.sort(); return ret; } lst interior_coordinates(Triangle& triangle, unsigned int d) { //FIXME: ugly conversion to matrix // d=d+3; lst ret; ex V1 = triangle.vertex(0); ex V2 = triangle.vertex(1); ex V3 = triangle.vertex(2); lst V1l = ex_to(V1); lst V2l = ex_to(V2); lst V3l = ex_to(V3); ex V1m = lst_to_matrix2(V1l); ex V2m = lst_to_matrix2(V2l); ex V3m = lst_to_matrix2(V3l); int k; for (unsigned int i=1; i < d; i++) { for (unsigned int j=1; j < d; j++) { if ( int(d) - int(i) - int(j) >= 1 ) { k = d - i - j; ex sum = (k*V1m + j*V2m + i*V3m)/d; ret.append(matrix_to_lst2(sum.evalm())); } } } // FIXME how should these be sorted ????? // ret = ret.sort(); return ret; } lst bezier_ordinates(Line& line, unsigned int d) { lst ret; ex V1 = line.vertex(0); ex V2 = line.vertex(1); if (!GiNaC::is_a(V1)) { int k; for (unsigned int i=0; i <= d; i++) { k = d - i; ex sum = (k*V1 + i*V2)/d; ret.append(sum); } } else { //FIXME: ugly conversion to matrix lst V1l = ex_to(V1); lst V2l = ex_to(V2); ex V1m = lst_to_matrix2(V1l); ex V2m = lst_to_matrix2(V2l); int k; for (unsigned int i=0; i <= d; i++) { k = d - i; ex sum = (k*V1m + i*V2m)/d; ret.append(matrix_to_lst2(sum.evalm())); } // FIXME how should these be sorted ????? // ret = ret.sort(); } return ret; } lst interior_coordinates(Line& line, unsigned int d) { //FIXME: ugly conversion to matrix d = d+2; lst ret; ex V1 = line.vertex(0); ex V2 = line.vertex(1); lst V1l = ex_to(V1); lst V2l = ex_to(V2); ex V1m = lst_to_matrix2(V1l); ex V2m = lst_to_matrix2(V2l); int k; for (unsigned int i=1; i < d; i++) { k = d - i; ex sum = (k*V1m + i*V2m)/d; ret.append(matrix_to_lst2(sum.evalm())); } // FIXME how should these be sorted ????? // ret = ret.sort(); return ret; } // FIXME barycenter_line, barycenter_triangle, barycenter_tetrahedron // all needs to determine which equations to use in a proper way ex barycenter_line(ex p0, ex p1) { ex sol; // 1D if (!GiNaC::is_a(p0)) { GiNaC::symbol b0("b0"), b1("b1"); ex eq1 = x == b0*p0 + b1*p1; ex eq2 = 1 == b0 + b1; sol = lsolve(lst(eq1, eq2), lst(b0, b1)); } else if (p0.nops() == 1 && p1.nops() == 1) { GiNaC::symbol b0("b0"), b1("b1"); ex eq1 = x == b0*p0.op(0) + b1*p1.op(0); ex eq2 = 1 == b0 + b1; sol = lsolve(lst(eq1, eq2), lst(b0, b1)); if ( sol == 0 ) { ex eq1 = y == b0*p0.op(1) + b1*p1.op(1); sol = lsolve(lst(eq1, eq2), lst(b0, b1)); } if ( sol == 0 ) { ex eq1 = z == b0*p0.op(2) + b1*p1.op(2); sol = lsolve(lst(eq1, eq2), lst(b0, b1)); } } //2D else if ( p0.nops() == 2 && p1.nops() == 2 ) { GiNaC::symbol b0("b0"), b1("b1"); ex eq1 = x == b0*p0.op(0) + b1*p1.op(0); ex eq3 = 1 == b0 + b1; sol = lsolve(lst(eq1, eq3), lst(b0, b1)); if (sol.nops() == 0) { ex eq2 = y == b0*p0.op(1) + b1*p1.op(1); sol = lsolve(lst(eq2, eq3), lst(b0, b1)); } } //3D else if ( p0.nops() == 3 && p1.nops() == 3 ) { GiNaC::symbol b0("b0"), b1("b1"); ex eq1 = x == b0*p0.op(0) + b1*p1.op(0); ex eq4 = 1 == b0 + b1; sol = lsolve(lst(eq1, eq4), lst(b0, b1)); if (sol.nops() == 0) { ex eq2 = y == b0*p0.op(1) + b1*p1.op(1); sol = lsolve(lst(eq2, eq4), lst(b0, b1)); } if (sol.nops() == 0) { ex eq3 = z == b0*p0.op(2) + b1*p1.op(2); sol = lsolve(lst(eq3, eq4), lst(b0, b1)); } } else { throw std::runtime_error("Could not compute the barycentric coordinates. Check the coordinates."); } return sol; } ex barycenter_triangle(ex p0, ex p1, ex p2) { ex sol; // 2D if ( p0.nops() == 2 && p1.nops() == 2 && p2.nops() == 2) { GiNaC::symbol b0("b0"), b1("b1"), b2("b2"); ex eq1 = x == b0*p0.op(0) + b1*p1.op(0) + b2*p2.op(0); ex eq2 = y == b0*p0.op(1) + b1*p1.op(1) + b2*p2.op(1); ex eq3 = 1 == b0 + b1 + b2; sol = lsolve(lst(eq1, eq2, eq3), lst(b0, b1, b2)); } // 3D else if ( p0.nops() == 3 && p1.nops() == 3 && p2.nops() == 3) { lst n1(p1.op(0) - p0.op(0), p1.op(1) - p0.op(1), p1.op(2) - p0.op(2)); lst n2 = lst(p2.op(0) - p0.op(0), p2.op(1) - p0.op(1), p2.op(2) - p0.op(2)); lst n = cross(n1,n2); lst midpoint = lst((p0.op(0) + p1.op(0) + p2.op(0))/3, (p0.op(1) + p1.op(1) + p2.op(1))/3, (p0.op(2) + p1.op(2) + p2.op(2))/3); ex p3 = lst(midpoint.op(0) + n.op(0), midpoint.op(1) + n.op(1), midpoint.op(2) + n.op(2)); ex s = barycenter_tetrahedron(p0, p1, p2, p3); lst solution; for (unsigned int i=0; i(d)) { // FIXME: bad test, should use the toleranse variable set by CLN or something if ( GiNaC::abs(GiNaC::ex_to(d)) < 10e-8) { solution.append(s.op(i)); } } else { if ( d.is_zero() ) { solution.append(s.op(i)); } } } sol = solution; } else { throw std::runtime_error("Could not compute the barycentric coordinates. Check the coordinates."); } return sol; } ex barycenter_tetrahedron(ex p0, ex p1, ex p2, ex p3) { GiNaC::symbol b0("b0"), b1("b1"), b2("b2"), b3("b3"); // 3D ex eq1 = x == b0*p0.op(0) + b1*p1.op(0) + b2*p2.op(0) + b3*p3.op(0); ex eq2 = y == b0*p0.op(1) + b1*p1.op(1) + b2*p2.op(1) + b3*p3.op(1); ex eq3 = z == b0*p0.op(2) + b1*p1.op(2) + b2*p2.op(2) + b3*p3.op(2); ex eq4 = 1 == b0 + b1 + b2 +b3; ex sol = lsolve(lst(eq1, eq2, eq3, eq4), lst(b0, b1, b2, b3)); return sol; } ex barycenter(Simplex& simplex) { if (nsd != simplex.no_vertices()-1) { throw std::runtime_error("Could not compute the barycentric coordinates. Not implemented yet for simplices with no_vertices != nsd +1."); } // put symbols in lst ex b = get_symbolic_vector(simplex.no_vertices(), "b"); lst symbols; for (unsigned int i=0; i(pol.op(2)); for (lst::const_iterator basis_iterator = basis_tmp.begin(); basis_iterator != basis_tmp.end(); ++basis_iterator) { lst tmp_lst; for (unsigned int d=1; d<=no_fields; d++) tmp_lst.append(0); tmp_lst.let_op(i) = (*basis_iterator); ret3.append(tmp_lst); } } return lst(ret1,ret2,ret3); } lst normal(Tetrahedron& tetrahedron, unsigned int i) { // Normal as defined by Maries note Triangle triangle = tetrahedron.triangle(i); lst vertex_i = ex_to(tetrahedron.vertex(i)); lst vertex_0 = ex_to(triangle.vertex(0)); lst vertex_1 = ex_to(triangle.vertex(1)); lst vertex_2 = ex_to(triangle.vertex(2)); lst n1(vertex_1.op(0) - vertex_0.op(0), vertex_1.op(1) - vertex_0.op(1), vertex_1.op(2) - vertex_0.op(2)); lst n2(vertex_2.op(0) - vertex_0.op(0), vertex_2.op(1) - vertex_0.op(1), vertex_2.op(2) - vertex_0.op(2)); /* lst n3(vertex_0.op(0) - vertex_i.op(0), vertex_0.op(1) - vertex_i.op(1), vertex_0.op(2) - vertex_i.op(2)); */ lst n4 = cross(n1,n2); /* ex nn = inner(n3, n4); int sign = 1; if ( is_a(nn)) { if ( nn > 0 ) { sign = 1; } else if ( nn < 0) { sign = -1; } else { sign = 0; } } */ ex norm = sqrt(pow(n4.op(0),2) + pow(n4.op(1),2) + pow(n4.op(2),2)); n4.let_op(0) = n4.op(0)/norm; n4.let_op(1) = n4.op(1)/norm; n4.let_op(2) = n4.op(2)/norm; return n4; } lst normal(Triangle& triangle, unsigned int i) { Line line = triangle.line(i); lst vertex_i = ex_to(triangle.vertex(i)); lst vertex_0 = ex_to(line.vertex(0)); lst vertex_1 = ex_to(line.vertex(1)); /* lst n1 = lst (- (vertex_1.op(1) - vertex_0.op(1)), vertex_1.op(0) - vertex_0.op(0) ); lst n2 = lst (vertex_0.op(0) - vertex_i.op(0), vertex_0.op(1) - vertex_i.op(1)); ex nn = inner(n1, n2); int sign = 1; / * if ( is_a(nn)) { if ( nn > 0 ) { sign = 1; } else if ( nn < 0) { sign = -1; } else { sign = 0; } } ex norm = sqrt(pow(n1.op(0),2) + pow(n1.op(1),2)); n1.let_op(0) = sign*n1.op(0)/norm; n1.let_op(1) = sign*n1.op(1)/norm; */ // normal vector as Marie has defined them lst n1 = lst ( (vertex_1.op(1) - vertex_0.op(1)), -(vertex_1.op(0) - vertex_0.op(0)) ); ex norm = sqrt(pow(n1.op(0),2) + pow(n1.op(1),2)); n1.let_op(0) = n1.op(0)/norm; n1.let_op(1) = n1.op(1)/norm; return n1; } lst tangent(Triangle& triangle, unsigned int i) { /* Line line = triangle.line(i); //FIXME: 5 lines to compute the tangent vector, these should // be put somewhere else. GiNaC::symbol t("t"); ex line_repr = line.repr(t); ex t1 = line_repr.op(0).rhs().coeff(t,1); ex t2 = line_repr.op(1).rhs().coeff(t,1); ex norm = sqrt(pow(t1,2) + pow(t2,2)); lst tangent = lst(t1/norm,t2/norm); return tangent; */ /* ex t1, t2; if ( i == 0 ) { t1 = triangle.vertex(2).op(0) - triangle.vertex(1).op(0); t2 = triangle.vertex(2).op(1) - triangle.vertex(1).op(1); } else if ( i == 1 ) { t1 = triangle.vertex(0).op(0) - triangle.vertex(2).op(0); t2 = triangle.vertex(0).op(1) - triangle.vertex(2).op(1); } else if ( i == 2 ) { t1 = triangle.vertex(1).op(0) - triangle.vertex(0).op(0); t2 = triangle.vertex(1).op(1) - triangle.vertex(0).op(1); } else { throw(std::out_of_range("The side index is out of range!")); } */ Line line = triangle.line(i); ex t1 = line.vertex(1).op(0) - line.vertex(0).op(0); ex t2 = line.vertex(1).op(1) - line.vertex(0).op(1); ex norm = sqrt(pow(t1,2) + pow(t2,2)); lst tangent = lst(t1/norm,t2/norm); return tangent; } } //namespace SyFi syfi-1.0.0.dfsg.orig/syfi/ElementComputations.h0000644000175000017500000000244211672223006021346 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef ELEMENTCOMPUTATIONS_IS_INCLUDED #define ELEMENTCOMPUTATIONS_IS_INCLUDED #include "FE.h" #include "Dof.h" namespace SyFi { void usage(FE& fe); void usage(FE& v_fe, FE& p_fe); void compute_Poisson_element_matrix(FE& fe, Dof& dof, std::map, GiNaC::ex>& A); void compute_Stokes_element_matrix(FE& v_fe, FE& p_fe, Dof& dof, std::map, GiNaC::ex>& A); void compute_mixed_Poisson_element_matrix(FE& v_fe, FE& p_fe, Dof& dof, std::map, GiNaC::ex>& A); } #endif syfi-1.0.0.dfsg.orig/syfi/Dof_Ptv.h0000644000175000017500000000155011672223006016707 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef DOF_PTV_IS_INCLUDED #define DOF_PTV_IS_INCLUDED #include "DofT.h" #include "Ptv.h" typedef DofT Dof_Ptv; #endif syfi-1.0.0.dfsg.orig/syfi/MixedFE.h0000644000175000017500000000421111672223006016624 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef MIXED_FE_IS_INCLUDED #define MIXED_FE_IS_INCLUDED #include "FE.h" #include #include namespace SyFi { // FIXME: what about memory management ??? // // FIXME: one assumption when using this MixedFE is that none of the dofs // in the vector of finite elements have different dofs. This assumption // is valid for all elements I know of. // If this is not appropriate, we could add an int to the dof, in a // similar way that it is done with the vector elements. // The current implementation is more efficient. // Could do a consistency check. class MixedFE : public FE { std::string description; public: std::vector mfe; public: MixedFE(); MixedFE(StandardFE* fe1, StandardFE* fe2); virtual ~MixedFE(); //FIXME: check that the domain are ok. // Set polygonal domain virtual void set_polygon(Polygon& p) { } // Get polygonal domain virtual Polygon& get_polygon() { return (*(mfe[0])).get_polygon(); } virtual void compute_basis_functions() { } StandardFE* get(unsigned int i); void append(StandardFE* fe); // The i'th basis function virtual GiNaC::ex N(unsigned int i); // The i'th degree of freedom virtual GiNaC::ex dof(unsigned int i); // Number of basis functions/degrees of freedom virtual unsigned int nbf() const; virtual std::string str(); }; } // namespace SyFi #endif syfi-1.0.0.dfsg.orig/syfi/DiscontinuousLagrange.h0000644000175000017500000000314111672223006021653 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef DISCONTINUOUSLAGRANGEFE_IS_INCLUDED #define DISCONTINUOUSLAGRANGEFE_IS_INCLUDED #include "Lagrange.h" #include namespace SyFi { class DiscontinuousLagrange : public Lagrange { GiNaC::ex element; public: DiscontinuousLagrange(); DiscontinuousLagrange(Polygon& p, unsigned int order = 1); virtual ~DiscontinuousLagrange() {} virtual void set_element_number(unsigned int element); virtual void compute_basis_functions(); }; class VectorDiscontinuousLagrange : public VectorLagrange { GiNaC::ex element; public: VectorDiscontinuousLagrange(); VectorDiscontinuousLagrange(Polygon& p, unsigned int order = 1); virtual ~VectorDiscontinuousLagrange() {} virtual void set_element_number(unsigned int element); virtual void set_size(unsigned int size_); virtual void compute_basis_functions(); }; } // namespace SyFi #endif syfi-1.0.0.dfsg.orig/syfi/diff_tools.h0000644000175000017500000000217011672223006017475 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef DIFF_TOOLS_IS_INCLUDED #define DIFF_TOOLS_IS_INCLUDED #include namespace SyFi { // the divergence // GiNaC::ex div(GiNaC::exvector& v); GiNaC::ex div(GiNaC::lst& v); GiNaC::ex div(GiNaC::lst& v,GiNaC::ex G); GiNaC::ex div(GiNaC::ex v); GiNaC::ex div(GiNaC::ex v, GiNaC::ex G); // the gradient GiNaC::ex grad(GiNaC::ex f); GiNaC::ex grad(GiNaC::ex f, GiNaC::ex G); } #endif syfi-1.0.0.dfsg.orig/syfi/MixedFE.cpp0000644000175000017500000000465311672223006017171 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "MixedFE.h" using namespace std; namespace SyFi { MixedFE::MixedFE() : FE() { description = "MixedFE"; } MixedFE::MixedFE(StandardFE* fe1, StandardFE* fe2) : FE() { mfe.push_back(fe1); mfe.push_back(fe2); description = "MixedFE_" + fe1->str() + "_" + fe2->str(); } MixedFE::~MixedFE() { mfe.clear(); } StandardFE* MixedFE::get(unsigned int i) { if ( i < 0 || i > mfe.size()) { throw(std::out_of_range("The index is out of range!")); } return mfe[i]; } void MixedFE::append(StandardFE* fe) { mfe.push_back(fe); description = description + "_" + fe->str(); } GiNaC::ex MixedFE::N(unsigned int i) { if ( i < 0 || i > nbf()-1) { throw(std::out_of_range("The index is out of range!")); } bool found = false; unsigned int e = 0; unsigned int tmp_nbf = (*mfe[0]).nbf() ; unsigned int tmp_i = i; while ( e < mfe.size() && !found) { tmp_nbf = (*mfe[0]).nbf() ; if ( tmp_i < tmp_nbf ) { found = true; } else { tmp_i -= (*mfe[e]).nbf(); e++; } } return (*mfe[e]).N(tmp_i); } GiNaC::ex MixedFE::dof(unsigned int i) { if ( i < 0 || i > nbf()-1) { throw(std::out_of_range("The index is out of range!")); } bool found = false; unsigned int e = 0; unsigned int tmp_nbf = (*mfe[0]).nbf() ; unsigned int tmp_i = i; while ( e < mfe.size() && !found) { if ( tmp_i < tmp_nbf) { found = true; } else { tmp_i -= (*mfe[e]).nbf(); e++; } } return (*mfe[e]).dof(tmp_i); } unsigned int MixedFE::nbf() const { int sum = 0; for (unsigned int i=0; i< mfe.size(); i++) { sum += (*mfe[i]).nbf(); } return sum; } std::string MixedFE:: str() { return description; } } syfi-1.0.0.dfsg.orig/syfi/Dof.h0000644000175000017500000000621111672223006016055 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef DOF_IS_INCLUDED #define DOF_IS_INCLUDED #include "FE.h" #include #include #include #include #include namespace SyFi { typedef std::pair pair_ii; typedef std::vector< std::pair > vector_ii; class Dof { protected: // running counter for inserted global indices unsigned int counter; // highest element number inserted unsigned int emax; // highest local index inserted unsigned int imax; // the structures loc2dof, dof2index, and doc2loc are completely dynamic // they are all initialized and updated by insert_dof(int e, int i, ex Li) // (int e, int i) -> int j std::map, unsigned int> loc2glob; // (ex j) -> vector< pair, .. pair > bool create_glob2loc; std::map< unsigned int, vector_ii > glob2loc_map; // (ex Lj) -> int j std::map dof2glob; // (int j) -> ex Lj bool create_glob2dof; std::map< unsigned int, GiNaC::ex > glob2dof; public: Dof(bool create_glob2dof = false, bool create_glob2loc = false): counter(0), emax(0), imax(0), create_glob2loc(create_glob2loc), create_glob2dof(create_glob2dof) { } ~Dof() {} void clear(); // Update the internal structures with a new dof. unsigned int insert_dof(unsigned int e, unsigned int i, GiNaC::ex Li); // --- Helper functions to be used after all the dofs have been inserted. // These do not modify the internal structure. --- // Return the number of global dofs inserted. unsigned int size() const { return counter; } // Return the number of elements inserted. unsigned int num_elements() const { return emax+1; } // Return the number of dofs per elements. unsigned int max_dofs_per_element() const { return imax+1; } // Return the global index for local dof i in element e. unsigned int glob_dof(unsigned int e, unsigned int i); // Return the global index for dof Lj represented with GiNaC::ex. unsigned int glob_dof(GiNaC::ex Lj); // Return the dof GiNaC::ex for global index j. GiNaC::ex glob_dof(unsigned int j); // Return a vector of all the (element,index) pairs this global index is equivalent with. vector_ii glob2loc(unsigned int j); }; } #endif syfi-1.0.0.dfsg.orig/syfi/symbol_factory.h0000644000175000017500000000412511672223006020403 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #ifndef SYMBOL_FACTORY_IS_INCLUDED #define SYMBOL_FACTORY_IS_INCLUDED #include #include namespace SyFi { // TODO: make a class SymbolSpace or something /* class SpaceSymbols { public: SpaceSymbols(int nsd_, const std::string & base_name); int nsd() const; GiNaC::symbol x(int i) const; GiNaC::symbol t() const; }; ex diff(e, i, ss=default_ss, ss2=default_ss2); ex div(e, ss=default_ss, ss2=default_ss2); ex grad(e, ss=default_ss, ss2=default_ss2); */ // Initialize global variables of SyFi void initSyFi(unsigned int nsd); // spacial variables, used by differential operators extern unsigned int nsd; extern GiNaC::symbol x; extern GiNaC::symbol y; extern GiNaC::symbol z; extern GiNaC::symbol t; extern GiNaC::lst p; // utility symbols extern GiNaC::symbol infinity; extern GiNaC::symbol DUMMY; // ===== symbol factory // TODO: is it useful to make a singleton for this? bool symbol_exists(const std::string & name); // TODO: we don't need the const & ? const GiNaC::symbol & get_symbol(const std::string & name); const GiNaC::symbol & isymb(const std::string & a, int b); const GiNaC::symbol & isymb(const std::string & a, int b, int c); GiNaC::ex get_symbolic_vector(int m, const std::string & basename); GiNaC::ex get_symbolic_matrix(int m, int n, const std::string & basename); } // namespace SyFi #endif syfi-1.0.0.dfsg.orig/syfi/DiscontinuousLagrange.cpp0000644000175000017500000000567311672223006022222 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "DiscontinuousLagrange.h" #include "ElementComputations.h" using std::cout; using std::endl; namespace SyFi { DiscontinuousLagrange:: DiscontinuousLagrange(Polygon& p, unsigned int order) : Lagrange(p,order) { compute_basis_functions(); element = GiNaC::symbol("e"); } DiscontinuousLagrange:: DiscontinuousLagrange() : Lagrange() { description = "DiscontinuousLagrange"; element = GiNaC::symbol("e"); } void DiscontinuousLagrange:: compute_basis_functions() { // remove previously computed basis functions and dofs Ns.clear(); dofs.clear(); if ( order < 1 ) { throw(std::logic_error("Discontinuous Lagrangian elements must be of order 1 or higher.")); } if ( p == NULL ) { throw(std::logic_error("You need to set a polygon before the basisfunctions can be computed")); } //FIXME should have element defined somehow other than //setting it to zero // //It could be a symbol 'e' instead ? Lagrange:: compute_basis_functions(); for (unsigned int i=0; i< dofs.size(); i++) { dofs[i] = GiNaC::lst(dofs[i], element); } description = "Discontinuous" + Lagrange:: str(); } void DiscontinuousLagrange:: set_element_number(unsigned int element_) { element = element_; } // ------------VectorDiscontinuousLagrange --- VectorDiscontinuousLagrange:: VectorDiscontinuousLagrange(Polygon& p, unsigned int order) : VectorLagrange(p,order) { compute_basis_functions(); element = GiNaC::symbol("e"); } VectorDiscontinuousLagrange:: VectorDiscontinuousLagrange() : VectorLagrange() { description = "DiscontinuousLagrange"; element = GiNaC::symbol("e"); } void VectorDiscontinuousLagrange:: compute_basis_functions() { // remove previously computed basis functions and dofs Ns.clear(); dofs.clear(); VectorLagrange:: compute_basis_functions(); for (unsigned int i=0; i< dofs.size(); i++) { dofs[i] = GiNaC::lst(dofs[i].op(0), dofs[i].op(1), element); } description = "Discontinuous" + VectorLagrange:: str(); } void VectorDiscontinuousLagrange:: set_size(unsigned int size_) { VectorLagrange::set_size(size_); } void VectorDiscontinuousLagrange:: set_element_number(unsigned int element_) { element = element_; } } // namespace SyFi syfi-1.0.0.dfsg.orig/syfi/Nedelec2Hdiv.cpp0000644000175000017500000002073411672223006020142 0ustar johannrjohannr// Copyright (C) 2006-2009 Kent-Andre Mardal and Simula Research Laboratory // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . #include "Nedelec2Hdiv.h" #include #include "tools.h" using std::cout; using std::endl; using std::string; using GiNaC::exmap; using namespace GiNaC; namespace SyFi { Nedelec2Hdiv:: Nedelec2Hdiv() : StandardFE() { description = "Nedelec2Hdiv"; } Nedelec2Hdiv:: Nedelec2Hdiv(Polygon& p, unsigned int order) : StandardFE(p, order) { compute_basis_functions(); } void Nedelec2Hdiv:: compute_basis_functions() { // remove previously computed basis functions and dofs Ns.clear(); dofs.clear(); if ( order < 1 ) { throw(std::logic_error("Nedelec2Hdiv elements must be of order 1 or higher.")); } if ( p == NULL ) { throw(std::logic_error("You need to set a polygon before the basisfunctions can be computed")); } if ( p->str().find("Line") != string::npos ) { cout <<"Can not define the Nedelec2Hdiv element on a line"<str().find("Triangle") != string::npos ) { cout <<"Can not define the Nedelec2Hdiv element on a Triangle "<str().find("Tetrahedron") != string::npos ) { description = istr( "Nedelec2Hdiv_", order) + "_3D"; int k = order; Tetrahedron& tetrahedron= (Tetrahedron&)(*p); GiNaC::lst equations; GiNaC::lst variables; // create p GiNaC::ex P_k = bernsteinv(3,k, tetrahedron, "b"); GiNaC::ex P_k_x = P_k.op(0).op(0); GiNaC::ex P_k_y = P_k.op(0).op(1); GiNaC::ex P_k_z = P_k.op(0).op(2); GiNaC::lst pspace = GiNaC::lst( P_k_x, P_k_y, P_k_z); variables = collapse(GiNaC::ex_to(P_k.op(1))); int counter = 0; GiNaC::symbol t("t"); GiNaC::ex dofi; GiNaC::ex bernstein_pol; // dofs related to edges for (int i=0; i< 4; i++) { Triangle triangle = tetrahedron.triangle(i); GiNaC::lst normal_vec = normal(tetrahedron, i); bernstein_pol = bernstein(order, triangle, istr("a",i)); GiNaC::ex basis_space = bernstein_pol.op(2); GiNaC::ex pspace_n = inner(pspace, normal_vec); GiNaC::ex basis; for (unsigned int j=0; j< basis_space.nops(); j++) { counter++; basis = basis_space.op(j); GiNaC::ex integrand = pspace_n*basis; dofi = triangle.integrate(integrand); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); // GiNaC::lst d = GiNaC::lst(triangle.integrate(x*basis), // triangle.integrate(y*basis), // triangle.integrate(z*basis)); GiNaC::lst d = GiNaC::lst(GiNaC::lst(triangle.vertex(0), triangle.vertex(1), triangle.vertex(2)),j); dofs.insert(dofs.end(), d); GiNaC::ex u = GiNaC::matrix(3,1,GiNaC::lst(GiNaC::symbol("v[0]"), GiNaC::symbol("v[1]"), GiNaC::symbol("v[2]"))); GiNaC::ex n = GiNaC::matrix(3,1,GiNaC::lst(GiNaC::symbol("normal_vec[0]"), GiNaC::symbol("normal_vec[1]"), GiNaC::symbol("normal_vec[2]"))); dof_repr.append(GiNaC::lst(inner(u,n)*basis.subs( x == GiNaC::symbol("xi[0]")) .subs( y == GiNaC::symbol("xi[1]")) .subs( z == GiNaC::symbol("xi[2]")), d)); } } // dofs related to tetrahedron int tetradofs = 0; if ( order > 1 ) { GiNaC::ex bernstein_pol = bernsteinv(3,k-2, tetrahedron, istr("c", 0)); GiNaC::ex basis_space = bernstein_pol.op(2); GiNaC::ex basis; tetradofs += basis_space.nops(); for (unsigned int j=0; j= 1 ) { GiNaC::ex H_k = homogenous_polv(3,k-1, 3, "a"); GiNaC::ex H_k_x = H_k.op(0).op(0); GiNaC::ex H_k_y = H_k.op(0).op(1); GiNaC::ex H_k_z = H_k.op(0).op(2); GiNaC::lst H_variables = collapse(GiNaC::ex_to(H_k.op(1))); // Equations that make sure that r*x = 0 GiNaC::ex rx = (H_k_x*x + H_k_y*y + H_k_z*z).expand(); exmap pol_map = pol2basisandcoeff(rx); exmap::iterator iter; GiNaC::lst S_k; GiNaC::lst S_k_equations; GiNaC::lst null_eqs; for (unsigned int i=0; i 1 ) { if (coeff.nops() == 2) { S_k_equations.remove_all(); S_k_equations.append(coeff.op(0) == GiNaC::numeric(1)); S_k_equations.append(coeff.op(1) == GiNaC::numeric(-1)); basis = H_k.op(0).subs(S_k_equations).subs(null_eqs);; S_k.append(basis); } else if ( coeff.nops() == 3 ) { // 2 basis functions is added // The first: S_k_equations.remove_all(); S_k_equations.append(coeff.op(0) == GiNaC::numeric(-1,2)); S_k_equations.append(coeff.op(1) == GiNaC::numeric(1)); S_k_equations.append(coeff.op(2) == GiNaC::numeric(-1,2)); basis = H_k.op(0).subs(S_k_equations).subs(null_eqs);; S_k.append(basis); // The second: S_k_equations.remove_all(); S_k_equations.append(coeff.op(0) == GiNaC::numeric(-1,2)); S_k_equations.append(coeff.op(1) == GiNaC::numeric(-1,2)); S_k_equations.append(coeff.op(2) == GiNaC::numeric(1)); basis = H_k.op(0).subs(S_k_equations).subs(null_eqs);; S_k.append(basis); } } } std::cout <<"len (S_k) " <= 1 ) { GiNaC::ex basis; for (unsigned int j=0; j(b)); GiNaC::lst subs; for (unsigned int ii=0; ii. #ifndef DOFT_IS_INCLUDED #define DOFT_IS_INCLUDED #include #include #include #include template class DofT { protected: bool create_index2dof, create_dof2loc; int counter; int emax; int imax; // the structures loc2dof, dof2index, and doc2loc are completely dynamic // they are all initialized and updated by insert_dof(int e, int i, ex Li) // (int e, int i) -> int j std::map< std::pair, int> loc2dof; // (ex Lj) -> int j std::map dof2index; typename std::map:: iterator iter; // (int j) -> ex Lj std::map index2dof; // (ex j) -> vector< pair, .. pair > std::map > > dof2loc; public: DofT( bool create_index2dof_ = false, bool create_dof2loc_ = false ) { counter = -1; emax = -1; imax = -1; create_index2dof = create_index2dof_; create_dof2loc = create_dof2loc_; } ~DofT() {} // to update the internal structures int insert_dof(int e, int i, D Li); // helper functions when the dofs have been set // These do not modify the internal structure int glob_dof(int e, int i); int glob_dof(D Lj); D glob_dof(int j); int size() const; int num_elements() const { return emax+1; } int num_basis_functions() const { return imax+1; } std::vector > glob2loc(int j); void clear(); }; template int DofT :: size() const { return counter+1; } template int DofT:: insert_dof(int e, int i, D Li) { if (e > emax) emax = e; if (i > imax) imax = i; // first we update loc2dof, which always should be updated std::pair index; index.first = e; index.second = i; int return_dof; // check if the dof is new, if so // update counter, dof2index and create // a new vector in dof2loc iter = dof2index.find(Li); //dof is new if ( iter == dof2index.end() ) { counter++; return_dof = counter; dof2index[Li] = counter; loc2dof[index] = counter; if ( create_index2dof) { std::pair p(counter, Li); index2dof.insert(p); // index2dof[counter] = Li; // } if ( create_dof2loc ) { std::vector > v; dof2loc[counter] = v; } } // dof is not new else { loc2dof[index] = (*iter).second; return_dof = (*iter).second; } // insert (e,i) in dof2loc[Li] if (create_dof2loc) { dof2loc[return_dof].push_back(index); } return return_dof; } template int DofT:: glob_dof(int e, int i) { std::pair index; index.first = e; index.second = i; if ( loc2dof.find(index) != loc2dof.end()) { return (*(loc2dof.find(index))).second; } else { return -1; } } template int DofT:: glob_dof(D Lj) { if ( dof2index.find(Lj) != dof2index.end()) { return (*(dof2index.find(Lj))).second; } else { return -1; } } template D DofT:: glob_dof(int j) { if ( create_index2dof) { if ( index2dof.find(j) != index2dof.end() ) { return (*(index2dof.find(j))).second; } else { std::cout <<"not found "< std::vector > DofT:: glob2loc(int j) { if ( create_dof2loc ) { return dof2loc[j]; } else { std::cout <<"This structure has not been created "< >(); } } template void DofT:: clear() { counter = -1; emax = -1; imax = -1; loc2dof.clear(); dof2index.clear(); index2dof.clear(); dof2loc.clear(); } #endif syfi-1.0.0.dfsg.orig/syfi/CMakeLists.txt0000644000175000017500000000446711672223006017747 0ustar johannrjohannr#------------------------------------------------------------------------------ # Install header files file(GLOB SYFI_HEADERS *.h) file(GLOB SYFI_SOURCES *.cpp) install(FILES ${SYFI_HEADERS} DESTINATION ${SYFI_INCLUDE_DIR}/SyFi COMPONENT Development) #------------------------------------------------------------------------------ # Generate and install syfi_version.h configure_file(${CMAKE_CURRENT_SOURCE_DIR}/syfi_version.h.in ${CMAKE_CURRENT_BINARY_DIR}/syfi_version.h @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/syfi_version.h DESTINATION ${SYFI_INCLUDE_DIR}/SyFi COMPONENT Development) #------------------------------------------------------------------------------ # Build and install library # Define libraries add_library(syfi ${SYFI_HEADERS} ${SYFI_SOURCES}) # Append the library version information to the library target properties if (SYFI_WITH_LIBRARY_VERSION) string(REPLACE "+" "" SYFI_LIBRARY_VERSION ${SYFILIB_VERSION}) # This setting of SOVERSION assumes that any API change # will increment either the minor or major version number. set(SYFI_LIBRARY_PROPERTIES ${SYFI_LIBRARY_PROPERTIES} VERSION ${SYFI_LIBRARY_VERSION} SOVERSION ${SYFILIB_MAJOR_VERSION}.${SYFILIB_MINOR_VERSION} ) endif() set_target_properties(syfi PROPERTIES ${SYFI_LIBRARY_PROPERTIES}) # Add SyFi target libraries target_link_libraries(syfi ${SYFI_TARGET_LINK_LIBRARIES}) # Install library install(TARGETS syfi RUNTIME DESTINATION ${SYFI_LIB_DIR} COMPONENT RuntimeExecutables LIBRARY DESTINATION ${SYFI_LIB_DIR} COMPONENT RuntimeLibraries ARCHIVE DESTINATION ${SYFI_LIB_DIR} COMPONENT Development ) #------------------------------------------------------------------------------ # SWIG add_subdirectory(swig) #------------------------------------------------------------------------------ # Generate CMake config file (syfi-config.cmake) # Set library location get_target_property(SYFI_LIBRARY_LOCATION syfi LOCATION) get_filename_component(SYFI_LIBRARY_FILENAME ${SYFI_LIBRARY_LOCATION} NAME) set(SYFI_LIBRARY "${CMAKE_INSTALL_PREFIX}/${SYFI_LIB_DIR}/${SYFI_LIBRARY_FILENAME}") configure_file(${SYFI_SOURCE_DIR}/cmake/templates/syfi-config.cmake.in ${CMAKE_BINARY_DIR}/syfi-config.cmake @ONLY) install(FILES ${CMAKE_BINARY_DIR}/syfi-config.cmake DESTINATION ${SYFI_SHARE_DIR}/cmake COMPONENT Development ) syfi-1.0.0.dfsg.orig/README0000644000175000017500000000304011672223006015077 0ustar johannrjohannrSyFi - Symbolic Finite Elements =============================== SyFi is a package for defining finite element methods. In contrast to most other finite element packages, the finite elements, the weak forms etc are defined symbolically instead of numerically. SyFi relies on the symbolic math library GiNaC (www.ginac.de). SFC - The SyFi Form Compiler ============================ The SyFi Form Compiler is a Python module for compiling variational forms written using UFL to C++ code implementing the UFC interface. Installation ============ See the file "INSTALL". License ======= This software is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this software. If not, see . Copyright ========= SyFi is copyright (c) 2006-2011, Kent-Andre Mardal and Simula Resarch Laboratory. SFC is copyright (c) 2007-2011, Martin Sandve Alnes and Simula Resarch Laboratory. Contact information =================== Homepage: http://www.fenicsproject.org Questions, bug reports, patches etc should be sent directly to syfi@lists.launchpad.net syfi-1.0.0.dfsg.orig/doc/0000755000175000017500000000000011674103626014776 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/doc/sfc_reference/0000755000175000017500000000000011674103625017566 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/doc/sfc_reference/makedoc.sh0000755000175000017500000000052211672223006021521 0ustar johannrjohannr#!/bin/sh -x epydoc \ --html \ --name sfc \ --url http://www.fenics.org/syfi \ --graph all \ ../../site-packages/sfc/*.py \ ../../site-packages/sfc/*/*.py \ #epydoc \ #--pdf \ #--name sfc \ #--url http://www.fenics.org/syfi \ #--graph all \ #../../site-packages/sfc/*.py \ #--target sfc \ #--output html_reference \ #--css white \ syfi-1.0.0.dfsg.orig/doc/reference/0000755000175000017500000000000011674103625016733 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/doc/reference/DoxyfileHTML0000644000175000017500000014275511672223006021136 0ustar johannrjohannr# Doxyfile 1.4.4 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = SyFi # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = 0.3 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, # Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, # Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, # Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, # Swedish, and Ukrainian. OUTPUT_LANGUAGE = English # This tag can be used to specify the encoding used in the generated output. # The encoding is not always determined by the language that is chosen, # but also whether or not the output is meant for Windows or non-Windows users. # In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES # forces the Windows encoding (this is the default for the Windows binary), # whereas setting the tag to NO uses a Unix-style encoding (the default for # all platforms other than Windows). USE_WINDOWS_ENCODING = NO # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = NO # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like the Qt-style comments (thus requiring an # explicit @brief command for a brief description. JAVADOC_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the DETAILS_AT_TOP tag is set to YES then Doxygen # will output the detailed description near the top, like JavaDoc. # If set to NO, the detailed description appears after the member # documentation. DETAILS_AT_TOP = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources # only. Doxygen will then generate output that is more tailored for Java. # For instance, namespaces will be presented as packages, qualified scopes # will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = YES # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = NO # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = NO # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= NO # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # If the sources in your project are distributed over multiple directories # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. The default is YES. SHOW_DIRECTORIES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from the # version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the progam writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = NO # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be abled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = YES # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = ../../syfi ../../tests # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm FILE_PATTERNS = # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. Note that the wildcards are matched # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # is applied to all files. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = YES # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = YES # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen # built-in source browser. The htags tool is part of GNU's global source # tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compressed HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = YES # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. GENERATE_TREEVIEW = YES # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = NO # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = NO # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = NO # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. This is useful # if you want to understand what is going on. On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_PREDEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse # the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option is superseded by the HAVE_DOT option below. This is only a # fallback. It is recommended to install and use dot, since it yields more # powerful graphs. CLASS_DIAGRAMS = YES # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will # generate a call dependency graph for every global function or class method. # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable call graphs for selected # functions only using the \callgraph command. CALL_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_WIDTH = 1024 # The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_HEIGHT = 1024 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that a graph may be further truncated if the graph's # image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH # and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), # the graph is not depth-constrained. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, which results in a white background. # Warning: Depending on the platform used, enabling this option may lead to # badly anti-aliased labels on the edges of a graph (i.e. they become hard to # read). DOT_TRANSPARENT = NO # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = YES syfi-1.0.0.dfsg.orig/doc/reference/makedoc.sh0000755000175000017500000000004211672223006020663 0ustar johannrjohannr#!/bin/bash doxygen DoxyfileHTML syfi-1.0.0.dfsg.orig/doc/man/0000755000175000017500000000000011674103625015550 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/doc/man/man1/0000755000175000017500000000000011672223006016376 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/doc/man/man1/sfc.1.gz0000644000175000017500000000156211672223006017656 0ustar johannrjohannr‹;˜ÔIsfc.1mUÁrÛ6½ã+vr²&gÚ³§™¢l¦²¨!¥L3q¹” €¶•êôǺi’Êø&.Þ¾]¼}Xûø­ÃðcAöÛåcÄL™Ãög„ì²°Vº†PÕ¨Pw°ìë6ÙeqÆ‚; 4ûöTÆÉn'Ûì©Lÿ!›Ö¥K ‚ ËYEY˜ÆÄÞç†jeŸ›¿”ZÕ`)iIf¬Ñê;ævÞ#„<Á3ׂ[¡$¯|²“R”‹®Ø†ËSËO7‡õfƬ,K‘ ”ÂAÔM…5}y2ª¼Ê_pc°>Vêºð$á,`Ô7´ ˜K}T•È_Æx jJ!…EÀŽ»oÎIЫӫǂýŽ=•wO‹3 9ÿ“>°jè›­„i*~÷ _-pYP-aƒ1SVq…û$ý:p¨ÖÒP ¡¯ŽYâÃ@qTé˄ȕ„]­ã¿ºU)^Ƕó0VÓ&ɉÃl¢/ц óUµøé•… Ÿ±š$ä.!\†ÑP,çù‡0;„Ïñ~´…?ŸP‡}ŒöÉjàÒâIû’‹íY#ˆe 梼À(è!P“ÜGœ 'iø§åáZM£/°ämeg 4{›{c7¾P’®¢ôÝf”.Pw[ñÉý^¦ž(TE¦Z¼hÞ4¨³Ç=J¤T„U²YÇ[ïçþœD+¦R§TG”ù¹æú‡#I[ CÀÙ¿÷,ùM¥½úm÷:&|fÊgx‰5Õstnhî\^Î(áÔµé^íÍ(èÌ·8§†…?ru*´ÈzE¼ÑÇGÕJ"ôïrÒÅÉ{;º;Ü{çZá±ýåŒE’+šqr—à§®ü•^vz?çbéøÞHº€#piSNÚT9µÜ¿r*Þ=ñ é:tC¿ æd+4~ÝÌêƒÆFiZhÉP´¡Ì¥t‡çO%J‘›@éSO¸‰Ãh›E~ÑÞ$ÒhUµ’œã—ßýö›ûݾI\G¿Ï}Üð¡#YÈéé‡ÓŸF Ç Ê«OFÔmÅ©þpkˆýIwY,eAoƒ Ú÷?\ˆÎ&ЀþX¨JÍeKˆÆmâ«¢ì³:s)i—¦NÒÛïþS_1°ÿ~) ç¸syfi-1.0.0.dfsg.orig/doc/manual/0000755000175000017500000000000011674103625016252 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/doc/manual/syfi-user-manual.pdf0000644000175000017500000225454511672223006022161 0ustar johannrjohannr%PDF-1.4 %Çì¢ 81 0 obj <> stream xœ}SKo“1¼û'pòÑ‘ˆñÚûðƒªJéâ€úRE´Uü{Öþžˆ‡rÈd4Ùofv¿GŸ"øÔ>ã÷õѽz_‹¿?¹N{ðg3úìŒ?Ò(÷¯÷íèAb"¿¿s0êkZD=ÇÂà÷Gw.n’)Y…ÃۇͶ0G¢>T „ÓfkšŒ‰%Ü6 ‚XrxäÈÎM\…4|j0{RøÒÙ” Ây€2„C›–ª¨I>îß¹7{wá@£VÿìjÕØý¢˜aðG‡"+ÏÌÁ]þ»ö€± çuEÙJ° £¤:t°k†ª˜£ðm“9Š5dá,3Q¶Ì­‹jñˆšãbȤ)Ix9°¨!/dê°"¨“:‘-î°©Åå¶$‰já·Hê÷7æí¼wOY€¬¸’"c̓¹T —ð½™'LÝg΄•­ù¾)v‡5m‹Ø²_t–mOm¿…%f{İFµúfœ—1œuG 5×éX+­Õ£§Ê9l«ˆ©†Ýoóf8d±Èm\3"ŠSîB<çVXkWFÓ,š4 i‘ Í5  ¯ëCš˜ÿRýë!Ù(2ÅÔ^³vGÏ=vÍÌBU;¤¸°w {»ÀþÂXdƾ̑½^àiÄ…ýº°O {?ù‰ ÷ '„æüendstream endobj 82 0 obj 502 endobj 93 0 obj <> stream xœS»nÛ@ìùWR…λ·÷tH“TIˆ4AŠ@Ö›~ Ÿ=K[憻³·÷ 4*ÈÏðÞª«/‘Ô±«zZ¡ú4¡Ûê¾Âá¹zßð‰ä¢NΡjÚ =éà¿£N>©æT}¯¿Ýl@ŒRÝ ü¸ÙrÖÒæc®"JO59vmöìñ+kÉp±œ#KÒˆ{þà¯%ø#P¨_ÿ²Âk[BüÀ;¡éV< ü ôÇ·5g\rz•=%ml“j9`BïÙœ³¶\ÈÞd¼ŽÎŒ± ;ÄŠ`Áå–È8ˆê»yH?gyðÀ4؈TwƒyÀúyc‚¶ÖÒBñ NÊ /üžÅO‚?Îr_OvúÑêÜ&Ã1ò‹ gõ¥5Çh4˜iÑå¢ü Ñ®,ÙVà½Ðÿ,ð»O©¿°Ð½~'øÿ_hЉ¯¯Xè‹KŒžGhÇôt ³øCS}æçjÛ1endstream endobj 94 0 obj 486 endobj 100 0 obj <> stream xœí™Ks7€ïû+æ¨=XQ?ô:ŠP$©T€½Q9›T°/yýû´4ãV²³.ðNª(,kZn}ênµßwÎBçÊÏðûìjõͳDÝåvU»;è~ص~[½_Áð‡Ä»›2‚;dS„ns±‚A>%›)æÎùæ|·¹Z½0×'²XÈ hÞ–¶K,“¹^K?g0¤éÉc6¯ª<²ÏaJd[ºbÀ_6߯mVO‡-<{<4n.'·Ž:›½ß»wN` {‡õIvÁ"%ó¤l‹(dO²-cˆuWž˜ibÄ€¾¨)ÍyžÌïµÉ”ÑœU½0RÖ3üZTL]2…tsrÞ÷F¨ãvÚ~ÌQMè+g`£çVß\WŽxÃR›Å~! û|´Rú¢˜“O¹˜¨˜›\4–Vâ„æt]NSHƒá!8ئpTS ÎŽ Õv¦2t«e¿oIãpŽË7Ê·6=Ù;-MHÞå‚(8Öù±ÚŒ]ŽXY$ lÎ;GX TnQvr{„«B´Ü4Žf«>|’é&ÔˆlsjÕ°ëÙŒeÙ°49g|ÛÚûùë\ô>Rþ#Túh×<:}”|¹ðÿ'ãEnÐúP/eUNÇIÞŒ“¨¦Æ'ö8GN©: ”Þ˜ô2G„Ú ­Ñ~™8,e{°ä±ôÁ‡°¤ËŸkÎÁœ1š¿KÔ`‰$¹¡ëµÂõí8Ÿà%1Ú:ñ›Ï{ ` ÇGéwª_Ú"-î7èInýê&“WI&Z«|v"L¦Ÿ‘LÌñ`¼æ‘ÌGŠÌ¿F2• ¼êó唈Ô”ÃÔ}ÛË)êI®ÕÀó"!yWd³YKæçµIAã­·ëcbJY–Ë­¾"9;’®dÌxI?"ù¸²Ât ù“Âéa3)„äÅ#}‰!kß§0=.J¥OÞ—n :á¥ìciaÒˆ,Kà§bÙûäM=a8[‰Ú½å^+·õªg.ˆÛÚö1¼zµ.áÙE2/‡Ø ÜòW‡•5.Ê(ÉN ´kúÎéL¾t¼56øì×nÁ×?Ï—¢ˋȇC¢®g”8ä=M².G Š$–—´ú|9‡¾”}ܧÒ7_ÆT’žòaøîÈÚ'þñpÝdðsüá¶TÛ(±ÌS]Ê>öÐ ]1Ú Ï‘Ì6‰p·9oÀØÞÓÕ?z`ï8endstream endobj 101 0 obj 1154 endobj 120 0 obj <> stream xœí›K—Ó6€÷ù ]yé,¢JººÒÕ -§@tÕvÁa€r˜™Âd ´¿¾W¶c_%¶‡@LÃL‹$ëñé>åw…V¦Ðé_óûülöý‚âÕjV¦¸ß>½™½›™æ?º©^Ü^¦®0FEDS,_ÎLSߨàCá)ªÈ¿Ë³ÙoåÓù‚_œ×Pþ3çG0ÁPù£(~=_€÷Ê’+MÅÖêX®¸¶¦@ÆÄòE*×h4‚+/Rý ¸åê<—>ãê–bä^ÎÓ#—/ßw¢Â)?ëèåÏi>^ÎÇjPÓ¬–'<ƒ‡©²‹V§.¬WÊ‹Ëj¤NÇ`ÓxtιÈ/_€EEÚ”·RK~‹ üƪ wªá™ƒ¦ò»4¦`¼v<]n—feù5©ok±©ŒÞºò$Õð Ñ•÷S ž•imRÏQ²ëz€à‰¨\TÕ'Í œ£˜÷Ý6¼xQ¿ÇÖs¯j=w๟tíäPÅÓ²Þ]ÎÏ £@Åß3f#¨Š çyq‹³Z Ê`[r:{Úôä§æáâÕ { ăq…GîÒ›š@HkìPó®©yK—(]crP.çdRÍÏ×Íϯ»ºÏºΫõ5Úi,_uŧ]e±IíÚìrâúçk=òI£|¾j¾p1*é µVŽQ¼ºðsÚLQ¸·Ž(EÁÈîPèÝr6òûÝ‘ƒ>ä䙾øIkþ‚ޱü³æ¯’4²é‰(—MÿêEwŸ`’SΆ|UŽ ¦Ç ÔFkwgÐu >I²ñ >#éùÛB°‚í« Á€ÊDÈg}ØÑtØap¬Àiwì°ÃîvBAGô,Ødóãã|måì“¿=öAn㡌c“Ø[3NhÛòþhöIFpJ:S§ãîËG R© ™óO‹P& Då³Êlm~ûî´¶Í­³µ?ÓtòV˜}¢¶”•R†®æhØlµŽlNlå!û3ã8›}¥¦_ÔI<¤&Q]I}+VÏk—ÍF³>Œê¤B¸é{¤€×—ÿ”­óuárBË}nF wçR8¼DDCb&l¹<ÔÐÁs"áEFk ‰æš`™-óuÁ2Lˆ¥gÓÜŒÆa†|ƒå½m"¡3qD+,e¹hù^ ÚZˆ†ožVìYýoÌ8é ðÖ¸ÎÆ¼Õˆ1\Ç­ˆGëß–4Q|¹) =ÏÖ—wE0¸ß=ÎIÏ™Nˆ’²ó ¼él…ŽîOBÓuœè Ñ4<„0ÄÁÍ;ý’OÄF{½áäžI#ù¼a/ëRˆ±'£ ÚMõÞß4¤÷žP¶pGL¿Ø2Ʋ|)° Ÿ°°Œšýˆì 3ž·¸Ö³Æ{ç¼÷i$^ª! ™À£®!”ëÔ_dO>éHKžšvUûm×qššŒ'Ä:5ÈÆª8æ®A»æÝUóe]jÈ3Ç)ßC¨½'vœƒ MFÎðêÉâËTlRîp=fÜ]©ØOEíf ©ºµÞùøÐ®Ðõ¼ú²×À&¡&E>ß#œ·æ[šc_â £é`Å/܈¯qujœõ£ê”u²Æý«ÓZ¦ÔšïU²ôê´1…l)¸ W4yã{uj­o«û"¨´©«kå-ÅÂ1ë«F)®†&xÚ§„mÑÆÞÜ aˆ{†ã~àãÇ¡¿",´œ·Wòt^¢5™ƒ.܈m]ÿ‰™™Á\vŠu^¼C¶SÁE¥mÌ—þÈg?Ÿ–°Š_ì̧݅ÏºÉæ÷ýnÒ¿vd—þÉn°ˆå³*Uä<”ººý\Ë!]¦A“:lÄC2É!ß½ÃfØOçY$åh a{3ìŠù5«-»‚½#—ÛvJ»BnÍ3+¦ˆR­Å6$§Û3ÿ¹fE{Ÿ²—9or´fîQêÅ´Ä¡cÏ­XðÙc7ÐÖmt†Üæ\Iy§-¿S69hi¼†]nÊ‘ö=Ò®AØÝißÉH¹Ó¹æB¯dÎ>»— Š¹ŠÈDwõw³DÂ€Å³Ž²Á×µäµÝǹ"šè\9ËçÊc¾ýß4ÏÁ¢O¡µXàÚX,z<"c\[ë–Ô„m¯Ûÿ^æ˜m©&§Åõü“.ìöZ|=ða³——ze´ïœO£2X(lpýÔCgôOéòÇW%¦FÓÇX¶}Kžõ®¾eûÜx­>µÞ=”ݽ7_†8Œ‡m 5îj¶Q7W&ŽühHðÊ9WãúËÐmaßò¼IHû> stream xœí[Ks7Îy’_°§>ö¤J½‚díÉIœ¤òªÄž­=${p$GvÙ²µ›ÇŸÈfOƒãž‘dOÛ“ì–¢)ÁO¶~nLIÿÊÏÓ‹ÅßïÛœ¯yºæËÍèÉâç”ÿ˜BÞ|´J+¨è¢sЬ~Z@¡¡‹ÖdžCì"ûfu±ø¾½¿<‘ͼc¤ö×¥ -"†öÓ~šØØöñòÄ2w¨ýgšFÎÄv-Ô&øÛ‡iÞ80ÎR{Yè}l¿ÎlгL?z !²mŸ¥¡ÌYn¯ò œ&x*Cë)ü{õE:롱éX«39Â׉˜"È]°Î·—/³¨d¢Çt„9EÙüÄ¢ë‚öNZ)»—3‰°ñY<ðÑ›Ðþ-Éä ÉyeïŒEÙ&ñv¢*Wˆ=3·g‰‚;ç¨ý2QXc½('qŽÀjj-àI&—CÀ Qˆ…:ßÍÙ(ÓåÃþÑÚþìYQÃÙeÃ˳qU1©õîjñÝ ¡ùïBôÞõà å6 òž:Qü0ótq¿@éÞgepy¾‚ÑMA w}ÃÎvÁRÒ19#·Ö-7ð¢å \SF;¹Ê ų¬4BÖÓY¯@Þæö7ŽۻꂟŽÔúr.2I¢Ä­K>°¯x¯Ë-0O•0ÕC¬­4!Kä¨v?ï¯Ç!ò-½™Ž1Äú‡vÜ’; ø”eœerHvöXYî’Š©Éþ±‘¼ð3?„N0GKK‡s‘€'¥ÅÎ3nvÿaYK›ñv76!Œ””^c¨[ž8c:´Èb”;¯G“¿~k““¿äÐòhq3-ôP6'Î öÙœmîNo9^fßÐüÄDŒ»…ù e‡ý%©ã–$Ù3¶¥eΚ(ÿ|<£êÑ+Zc;ñÏ£…&Gn; T¼/Þ@k.[›Š¼Õf6(åÁxdåˆúm,2nR* ²óxŠWœXn|'Á*¯D²¼üÌ‹`™Tá9Àmݺ¬ü»ÿÆjR>ÀûŒ•ÿ*Òì3šßiŸå‚$l)…Äý¤ü5y9YŸ‡"MÆf‰âqpîh\ç j@¼&„-îù×8ƒ)Y+É 7ÎÛÎíM5yrľ %@¶]UÀ#eSƒñxj¿Ñæp¦\ož/…Ñ«:-lÄ|nnƒ18‚ëp$j}þˆ•â¶]ÙVáí‘l‹ê$׊âìц’V º¤v{œ«jôF¼æ/9£v}…Ýg ©Ì”;ˆžÅñ'`Fïmµ0×,©§_¦ip6dvÖË}Šç»«œúSE­v¼ÈJ‘\0³h!È6’8ÈÞçDº®üõ­¡·CƒÄ$…7ÔL·VBÍ8Nþ\"U’Nòë2$IÏútØ{·'Ì 3òTfœÒDíYJ$u\ç $Ë6ÑïÛ±42ÊA$öuʘÛ.J!šÖø£€°Y}µX}ø}/¯È4”¦l´A X1 %Á0‘zŽï%Žh(ð´Ðix+™6'‚ñûEb¡^ä$Kb™A D887™J³@Á>VIô64ƒ`ߤV˜èà!CLø|{e¨Íhfîßćï÷D{‘÷y¼7褄±JÜÂV^Ñw ©ýx䬃òWʘëß?Í[mYš‘!ŠP÷²cÆsqWÄVÊÓ ­âü`Ú_½ì…–‚ñ¨³+¡,ª/ø¸S•0#ÌìC¹}(¿7Fø‚>Ä[£o3.¸æè¦2ú•ýTHTÜË3¹øçÀ³ºÉã†óŒÝJ¯2LûðLoÏw44Ÿ)­p§€¤ëHí”?M)$P KµîÉ´/ÿW&Ž H¬ú1 ˆ^nè©`~ÛC×m½jÝü¥žÜs†¶auïï裳nÍŒ%¦ ‚PÄþÄ<–˜9_"ìsT•¥®cÉÌÛcÉx5UŸ£¾+äçKÝò±žÒ+º`r«Þ&QWáH›>>ð^Wì—£‡w›£ ÕGã ì›Ô³×h> stream xœí›K“7€ï®T~@Ns”Vôh½Ž@€ „J›SÈaÙ……³`C€Ÿ–F¶Zö̬M<À.[¬=z´>µº{4ïÁe#â¿ü{2ŸüúÈëæl9IÕlî¯K¯&ï&2ÿ!²xsó(>”<#›£ç™å¥ÖÜY×XxÀߣùäoöx:ÃÎX¡Ùç)µtÒ³;¤úåt¦­åÊû+V+él‰ÒÂ;/e`Ïb½0R låÇ'¤V”³X{Œâʇ€­¼‰E¬Ó–}(E"ð‹ÚHþŸ£{q>–ÎG Íuˆ³::Å<ˆÂ”ˆM(˽6Ž-Þ§‘‚NÅ àè@y;Ÿie¸’݈Ob/à°Ç$‚͸4<邞ýÇ䤀ÓÅçâ¬vÛ6Z)“…UÀN£„寻%pVÂEÝÄ–ƒRÓ¦Ûjë½g³$®qò& À‡ºíõƒ‹gm?Ö›vîIQ«¹kœûiyŽ•Ì1ªõöÑäáD" ¾ù8A6Ol€Eå6ó‰QJsiÖ5¯'3IîæÂ⬗@)ô ‚Fsï2‚a: ùÒùŠóQʶxe ¾L¤)'¬mubAÅÎPŸC}¿µÒh/Ù‹$`µå Ê"æëÚÏI%JàÐó¸¾Á¹–r6ÎbmŽ+võÃÊEÕ,›·KãÙ­X+•ö•ì<ÖB ÙÛÒq; ‰ëfá«rÚ<Á}WzY/Ñ>¿GíF(ÜØj—i¼NàÞ¥hÖÅÂÈΫLç¢ÉØÆ¦Í¡W‹UdîU>]Û9I!$2¦eò€­Äl½S_é“)nH‰{Ÿ½*°,ÓÆÊ³9.½,H5ù"5wÏ)Àµ3õ<ùtf„à€æ‹·æ•kè{ ¢T¢2¯˜(E».œJƒCP* Q© •¿j×j• ¢…ê„5W &Y.<ƒ>ygê%Z4ÏçݬÎ[k§Û Z}V¤?–çÉÆûàÑâlœ<؈ ÊSøÑÈ­P£zC£? ¡nB‡[cþŸ„aBû¬©ÄE¹u"„.n«ûr)ÒÞ£r¶¥7¡Ì­ÜcÙmâu½.Òt„í­hè<„z®½Xn.°¨}vv,^oÆVŒÁXê,É“ËçÉõF'IVmñ„ †rGš!vœñ°dê€ÆÜTš¾‚FÕȨtxÚý!Õ#Bz«„›çÓYŒç0ˆ«Úþ™šC #i<ÉçX¼µ’•=ž•Ô£¦Z¡Wú¨ƒÊìŒBLÍ€¢R茷G3XØÉ/]“xÈ Ê¬¯5ñ­y¸\†¹´Š[冸„Q¹¤GjJÃ)`¿—ÔJŽn즧Y:?Û¢ÕªhËÅ=$Î8 â*^“õÝ ñÁÏyІk1˜t‚‹‚§ÃÞhí|%ð©ä®Þ’]A)¥âËå7ò5+M^C¸„Âñà#¢nIDt·}¥`ðÏŠ‚@/ƒÔ(R®Z’,`}ÒÂðÀÏ™Wãѯ¥ˆWV8ßàú‚ žê äÜ£ñ¯ì;ñ†és$Q@ЇEÞÙxîÔëvi@–㬽àÖ¦¢ºA&QÓcb¨>Û7Ÿ¦e—–=ÅÐÇÅIƒ¬uõ  M&YöyáwÜm·Mwª&ÒD‚DQ#äH+Eþ(Çü˜` íÏ%.i2’œÉ„ŽÊ¾Ò³º'wyP›¤œá2èj¦×ÑP?ljØr4”ÞÇÈÁÜ‘1"iÊbóöœÅó üXNÔž³úE>~ÁWÙ¥Î0‰ŸvÛÓü†Ö³Wm»R[v‰²¬ÝpõzßÔÃxԫ๠ƒ¹)[¨¯R™›Ô{­W4-8¡gÁ»6ƒ6›ð®Ežeï;ºó ‘¶5š>ôÓj+¶zä†é'­ {ÖiàŸ2úî´sc—^Vû„JÔÚ\ ó@·C+œ.¢äêt±(mÜö ÞTêëÜü‹Ü£±ì߸µ¬®dûvn5݈¦ÖñŠoò%®v²Þ8øÊùFôðpo«šîî½5ƳÕÞrøëókîK÷A±Û‡®]äœVû&ƒó%…'ŒT÷Ŭ´GZß“™¶eÜ‘Ùóå´§Ë'ÓÒçdµ°—Æw“t€øvˆt_Hÿ“\{»}FXQ¿ùúNR'PÏãòøÌßË8†ùñ žuÜ _÷ ßÐÒŽér ©jm^Ãûÿá½àÞ´tS£ô¯G7Ž $4÷Þ¥‹.Ê9§åêbq¼\OnEÓkÈoJõi{ÿðè¼MíÐïx›¸WpuoSw,FÚˆªKíÁ ž~Üm¹«äupý. }0Zížåj?ìèÍrµiWW2ÏÛZ¶©}Ž_ùd¤ëÎvßËÜü¥…òr#ŒKîžC#ÙãîÉ%ëp¥-¹ 5FwEµ è/Û¹V…k’eÛ(ù‰ëSÖV—W Õç1¤Õ€óþ˜e¢—¼è‰¼Ø1&ÁF0àÞ%&É·bý—FM=›g31ºo¿ýï를„”ëÊóWRèˆáÜ$ùJjU¿’Ú׎<®lãjÍÉV]ß;<œüŠendstream endobj 182 0 obj 1956 endobj 206 0 obj <> stream xœåTMo1½ïOàä£÷°Æc=ã# ŠDÕCÛô„8 ¢Š¤USâß3v¼Y‰Tå„rÈäåy>Þ<ûAYÊæOýþ¼î^^±WËÇ®À Ôù.úÚ=tPØJW¯gù*“B5ûÒAå3›ä)©ÈɤHj¶î>èë~b¢Cý³—Ð;çXŸmaŒÖëÛ~ð1Ǩo2쀃MúQØ–‰’^dܰÁ£ÞT>%}QÒ8оcNÑë» æ£þ^B‡ZÂJBÀ!œ½ÏÅv g½ñ)5›Ë™ŒÉÙ()\4ìéÍ·Ò*ÚD.O í¡$Ç$Åï‚a úU>)U¤b¡H*í%²¬_䞢E™WΑ±ÞI™œ;ˆT¡’)ƨç™M¨Ï3Ã#XO"NΜ,€oÙmƒC¡Ë06…È©²ËnæSO›Åv‚äývö"Ô8»Ü̧sm«ÍŒYÖ·³î²ñ«èn¶æÀ(âªu‡DhDøYu×ÕJWïj°Yµ` ‡,6L¤bð†©Z²Æ¬lÍN¡éwNóý$YdýfZÇ}?äyeȬ{– ÐE½Øî †¤—S²ý´ì ߯"ÙÑ«b~âíš*|;õt?%¿«Æp»NŠ£ÚÜÍÉåÞÉ‘¾[È)÷ü°È.°æ}‘hh­Aq½„˜’Htø”3ÿ<ü·C Z/¹)Ä]8ùþ¹œ,›G‚¿t2>ÍÉg=ƒàCk»Ö¯ër³™åúWïJëÝ‹z®õqcAqf©ˆìõÍÛ¯¦°A÷n@ÿœ'yeíoâÿ/f¦?Í<>Þ jË2›Ç{Dòã}¢Æœ ÊJR#¨}ÙýÛó¾endstream endobj 207 0 obj 641 endobj 214 0 obj <> stream xœ½ZKs·¾³\ù {&Ú1oä;±+J•%Þ$¤]JrI$W\*’þ}º˜™ÆÌ`µ´].<F?¿~`?lTEÿ•ÿïn.¾}ÍæÍñ‚—7°ù÷øõîâÔ¨²}óݰmûl®^_@ÙcŸLHçu¯5þéæây÷ýå/óÉ‚îÞ^â§M÷’–•Ñv‡¼ntø©¬6N§îšjë’ïî/·ÆûÞÓ6(¾ú×…‡>ø 7Wÿ¹¸úóóîŸDÌâßcw;§ Ñ+‹´è;i|w‡tUï"^±Ÿ¸û8Üѧ·6†Š·_˜ ¯•ƒDDFŽÊ¥*%fîÛ§ü Oα²PíB¸½bQ?“zD™íƒCfmê½Ó×ð˨¼qã¾:ƒßø}´©;âíœö¡Ð×ÁÇã1’UGT€éÞ“€Þ‹6Ù‰ÔC°Ý«ñâ- …åSè>á§ÑÚ£ðb53n•™NiT!ò¨ÁZm ;¼W{(›Ñ ͬzL@éx·N©»áÝV¥ %½[Þ­¼ÑPDEËX¹ã}¦acHƒ÷i"í*wKVqó‡¬{ô~-o‘ôŠ4Þú¢ÇÐ'¼Rì>•£/ÊÍw…?ƒ6!—2V!³CîjVëN^ë!»þrëïÚòïÙUÁGçö\p&û‰“l·å=.àéDn‡·`{kmÊï²Ì:¼T9é…ZŒQ:¬Ô¥¤PxÑ>Ihö©vÂáÏE`g­/^Þ„)ÊTÜÜ)Ô9 (‰ ›Yß Ò0~“c TpëÜžv$Ô5´œý:Óð(ËnÝÇîK i3HË;ä5Yô˜@ÂðdIŽ©E£ñ>Ö8ø‘ Ľiñ.[Ád?coróXbÇEK—Ç•ßEø8ÚLÄ‚«¼ù³rr±ëñØNìÍw J£†ó=‚¦ º'SdW/™7Ì/º{&ùB¸iBMÿÀ‚˜=纘Ü\ˆz̫ٜyƒŽXã‘j«¿°Y"T‰¾iGÐZÊ/¨½lÜg%e¬d¿,Û„¦ý’éE¬>äÉù[Yå$ñ÷•X‰!§ïBú¶°gü`A¾\ì8 D¹ú:ƒÀ>™ Ì …·‚¡ÁP£G¡é2šRÉ$øiT7gæ96Y¤Œ`»ÉE2X¬œ)y¹8U«\Q¥W!ÎYÔ„\Μ6 ;ÛiÓðò—L¯ì~ä“¡ $ÁÿŠ“ßçÝhÇçãèW?]P'¡6O,÷oš]HÙC)p±b<)Åå.$—‹{ÎïwÖoÒÊ  ¾¾éçIäž 74¶WS„¼®[" Â¡ªbLLUÆíX žÁ¤eï»ãú å¥{áµÇ|QB¾&â€MA;÷™vD¦œdG>éás·Ûeº#®eÜQX¶¹\CC 8¨‰3à ƒ‡R`Á): k ì]EüØ¡É1{*Îjãv^¡ôïæTy+Z÷’!1ƒ¹°ûßd¡Ê}ÅÙ$x)º©õ;|ÍvÂ₹»u{)IpIIþ±;îž/N.}OŸŠX>†ëÛ3nWÎEÀkjì°.¥ìZÃ…ÙcŽ9³`—¢üYöÙNÕ!*É ÍßWqи=SL¶ÎjD:º`KjÉLÔu°ƒûªèaâ\[ó·S sÓ Ëc±Y«\Ÿ¸2¡;®eÊx:S®à]‘jÇþ<‘•“5F¥§£ Øpéc¾HÓ,„ŒYFß̣י̗jZ/q¾äƒ¨ Ж`?¯“¤&>ŠoA¼– ö/Ê™ÚÔ”÷B§-0ˆù‘š"öm’^U“ðA‘Ö5xG®`]\¢[`€®š Ÿ:¹ìÎåÞ¥¥ßJ“2©QðvVò2ežt~#Ôp;~ízpaÅ"¼ƒÂœ3æh^>–“I¯Ÿs–óIxD+"Ò`±ìÉ48Tng·U˜z*FŸ‰åvýB»} ¸•‡õìÝzÜÜä½”ND3²Äsî´¤Ç l(†&ÏAã?M÷¢W>øt”œyû‹K:©°IwuÚX‹ßœ«½Ês¬Bᘯö6œê/X¥C„3X±‚Ç™ô™Fž4m ‘:Ü›¥,EutúWôú°Ó½þ_…6ïˤ;ïSoŠpn_À0–R ÝdÙ²Œ¡ ‡¯vÝ×™ µzþ$©È›~™ém ˆ ètbâ@;´‹3¶¤ž€¬Ê<%¹ZÀ™U~|Rú[³[&8»Bãô·˜yW2FÔÑÐ*P–=à»æŽ6/×hJ{”Ú‘NUO(ÎÇš®ìÞgê>ÄY%®B ´E$çÃY~•ƒœÆD¦Ák]•³}PWRÈ:ë,æ8!áUfßA!~¡ÀåØÃXÔ[3ÂÚ|D„ºs.U¾ÐW«¨—žV½bMp0X…|*O¡‘ÞÝ«v¢ªÿçbåâ `» ÓÂѧÌ>xa*¯P:[ö‘^¸œT°[ kž,¢¿ãŒJ®î1šeLõeWÀDù‰ëÊ_Uy¥¬Nô!o‡sç¢eº¼9>zlrÁOÕ§Ð%6&Oð`Ô==UΤÌÔn€0k[IÓr剂^¸š¤÷â¾yñÎ5|}0'w|""úä€a”Ù ì–¹CN<±w †9 ÆwÅ#”nÁÌs­Y–¬à§®{,ÄËõu¬Õ‘aºá¼—n,=b[O×Ñç=9Ð5ÆÇy@&ÎÛrfÉV½ÓAÖ ÂçÍ(ò¨^k‘ºxêv@üÊ3Í#^ÐH^tÕÍn _8ý–îo‘vMhŽtÚ.ݘL§ö\[­=¾­?—ÑÄuðûì—…B~:³e¾™{ïÅÜ¢’iп¥7ìˆÑmª½³‰¦K=(š.ñæhm ¾†®N|T%ßådHv‡ NÅòC¦B#жå‘Ymô6>ŸÂcÙÓ’öKñoT ÉÁè. £,ÔO_+õТ4ku$ó1­ÃöÍY™nÇù…ÒnðÍ‚M<ì¾¹5i^³ "ЄLþµ†Å=±1L\­ï5ý„,Uƒ•R¶>Y¶ƒÂ ã¹'å§"¦šT--œªnö%çmk22áßO梵9dóaˆ¨ÕuIcLÚ‚ûLÃj^â-êÌD¤ßkI÷Y…Ç­ñ>V ©èþJ°Œ¡AÞjZ[ãÉŸä+ÑõCÅÿúïŽã5Œ?X<ñè-aîùrJ¿|ÁY¼z>â'OØŸä¡‘›µ:¦¥ºèuƒž–T¨çÁÇÆsÛj0v7cU6F «¯|Þ\r1<öWßOŸ×Óg?}î¦ÏÃ…µ wššÁ1Èit= ö׺I¡wÁd7[‡e³*&ZùyÅOÿuX¹ãendstream endobj 215 0 obj 3006 endobj 224 0 obj <> stream xœÅ\Ýs$µßä/ÈÓV^²†[¾?*ÅI’’œÊ*ß­ÏgðÙ>¯}º¥™Q÷Ìh¼öRÅœ®%õ·~ÝÒòv-…ZKü§ûïË7«ç_F³>Û¯òðZ­?¾¾_½]©î²#_ÿégصR"9§ÖǯVª£WƈàÃÚÇ$ü÷øÍêëÍWG[Ø,X/ÍæÝ|TÜ|B†Ï¶Æ{¡£Ýü‡µŠN¦Í¨e Q©´9Åqé”tÆnn>˜ùy^E£'@®cJ°Ê%~˜ñ›ê'!¸€Oã”¶ñÛã¿£<žÊ£¥&¡TÇ;às$¶IK\B{ ››ÛÌ©•)h¸³:F›`ó­ÑND©6ãLØÅØ1“À2!³§B 2n~‡<å¥qaJ¥a\Û­]Gì¼¶›RxáœÝ|† • ¨\9I¥ ]º0h|Œq³Íä„wSÖÆÄ×&Þœ–}|tEö¬¨^v²ïê<Ê*‘Õú—ãÕ+®×?­À7‚Ⱦa=(wýfå´6B¹aäbõÕÊ‚¸¸Ó—ŸÖYÎJé¤2€s€& $‘QD\x00à3 LSà'„¨ŽTª~¢ñVXKW‚Y©ìV£¤q66œ^­=°‚)¡qZŒ¨¥‹›»£­SVÀ¿›k2|ŽÃUzó~:ð¿1Äú¢|+ †QdÜ’ï?ÖïÁ0ƒŽM b3m%®e%ªé&=…jÀ½ŒŽ‹ªé?ÁÙ>ªŸ{"ê;¢Ž7düù¾"ß„þ› ù‹ß“ï;BDÇ¿9z°’{ýµNu,ƒÖ%çIéI” ã²ÿ½šUòË©³>¨ò™ïf•g¦¨A \u‰jÊ%£ˆšpŠ{_t)k–}ñ‚‡é 람ßváUåÅ”:+æ¶¥Êkò}N&ê2oÄ£Á¥~ÚùÁ>[k-$-q Ïy 38µù'ÑÉŸ3HM¨ð8Gá=(íoè:bCQ‰Ñ¶¥œ ë­Â³Ã¦â>¯‰SCÀŠNA|WrZ¨ä¨ÑÛ·…ÒßXœ¦ñ·Ð¤˜R}PÕSõÏîHݹÚ@Ì<0Br+‰">Á\g#hôO˜ã6Gù#Œ’¥è¾ÌÊSWHuZôa€Ý|þ¦”1ÚDÝô-ˆ XÑ·4vÂlt¿NQbmRKš]‘@Jä= ÜJžÂV· ŽÏŽfƒj‰Ïâ÷c>µ€"°;îú¨;=šM³™w۳΃a_Sðù‚£×õó¢̭맨/Ç+äѺØ\–wC­'Ë)ÜÉÊÏ~ç¢ÔÎ z.v#䯔/"©Z€;‡+Ñpª~¥hc)ÑèÒɼ°²IXo`q8ÐC×xN ÒóZ霓áË)ôé‘Õìø >Sšüý3¡9!ã3kNà.ð¶XH3ˆÖƒfðX‚ô((û/YEwÂB<|X˺wmêY׆mÕ„Ìò {³‚ŠD<&ϲïYçövà F7t±ó|¡qGˆ? Zè¡·ÔEg…šêŒRÓñƒnÕS¢eå¯uÄ£¡¤Òð ˆÈÚU?Ñ‚Ñ%U>ÎrO¤|ë ÊõbíåË+2NkjâèSBs9 ¦LC׿'à2ý_3¶,àvgÇk"WL ¶›J›Wy¾¼ uºŠæµ‰pX€æg^㸷é ‹ÁYê‰1Ô_&¶JÜ©Ì蘑ó—RÓÕnjqj‡‰MšZâÒ¶×ÃKܪefÅÃU R4\q–<ð"¶¶gF5 ‘+5*ÎÒOdT©!óÄG®·dœõY#ðÈÀúèܤÔ3ÜLœã£†ÝiðBó!Ÿ9_ó·&ôÏêù~ΙŸmÓÌ(*·uJÐB;ËtCÐë×,{éçS©ÐûóúÖOu_Ö¿›*3M¾%Yžö˜T©ÞèÎ~û`tRC€EŽfÕU9jœäYáiHH|BºVôð8y5›ü~!Ç™¸E‹ÆI‘Øp9Y>ã.8{†–D«µ˜‘O}Qa<1)Î2=U"¶¶1¬UTNXCJ¢~ä)Z…ð“ë¯"ºþ „k ðþÍÖ*(òxÁMzû«ŽÂ«¾M3îxì EÔ&·i21ïLÐ:›6_^’ÎÝmƒ†7`y7:&°²±Ñ‡alõŒK5îÁ¨M¼zW;˜×Söº¶e%ßïïïíïiÍꀷ¹¦OW¥ØDÞ×ÏÛá³Ñ¦õ1 <¶œ,Ð$ý)ßßoû&|…qƒÒª(”R‹}K0HJ} +º0˜/StòæKÛÅþÚ\¥_e¾}¢¡ —qÔ=¹¬]Ž«¹.m¯@6( q,5B Ô„Z{=þT/¿iï’˜üå‘°žOH #2m«‰6ãûYy3Mßâ8eI%ËɆzáϼˆ+gF®¯£…?Ma¼îѾ¦¡r÷&.4Ñ-¬}(5:¥OìYû^VCu £'õó¶~’@µpà ¯<à‡!˜Îëç% ±–|»x1e½¦(Ô|º_Ç¿~D…’ëB QFÕû¸qØéSæÏKªø¢6ú@kÝ+9)Òc-âßãÛôSÆ>ˆÁw7m[š¼àˆTždá¯ÕàÃ`Ñ”?J3˜Jåp­övµD÷Ï’F~B‘˜¤Ãù-Œ):«Ø]Y׺÷Ž-.Ø™´EÜ)ÿ-¾qH¾Ë²ÿÁK ç|FƒFÃ!‘f´î¤4ºy£Åøêþ£1›Ö=ß®lå–³¾DÂ7S- ¹h7oÇüJ 6‚Øf]•Åñ¤'wówˆ”ïÑ .o©Z2ܰ-‡)&"Û¿.L…QÊaˆ9ô° Õ¨¬ãI‡FÑÔÑØÑøN椔d,j†ø8(‰eËË” Ü“mGžŒeî·à@¡ ÚXw›×$÷pûd­ød›×ï4wnô~ë 7ÅSÓÑÜ7½'pˆwí-ãl·/K+¥›‰°qi|3¶ÊÄßIˆ£mpVD§-@@ãlV_a†7 +'ËQ­2^äwœršrÑéz9¡ä5¿ ÃïâSÃz;¶'º~ÙÏKã’ýÅ3õ^Œldj$züÏ›¢8wÇCvn(ã +46²Q õnšfæS['—Ê´oqu‚£LNÀ%Œj8o®kàNÔ{W Myžžåí½>‰/:Œh!AżEôà¬É0ØS»xm‹£.5ƒ÷ÿ~až¹öjáÂ)bbu^ëš<»µÄô?€'º//lºÃêÎì>jœŽR|Ç2®ûÎÏ”ç‰a„š ¾£MarÖðã…>·:-Ÿ!-A¾ƒƒDS¥ÜŸ3iBi`7|S4@ž´ùWö³ˆïÊÆØùÀ3€XŠ0ÍŸAaû V9ìpAbÌ"²0€ˆ`é¯Htè-åMŒ>7³Ng©žð7`ùïç4Êž‚eÞ¬pÙ$Þ·lÙÄÅ×Ì9  ä—*Ô !/ó]7î­\|à©gEñÙnK^4r1¾oÒJÙzl”uRÕÈ^yX ™ìŠyÄ›w‘*±v ¡æà´°‘'šEËG±Žê›<+Ÿ’¢ù4ŠJ;i@·û²•Ñ §š#†I'•5ÃÎÄEwZD9sZ_ci¸%À™™÷½_ù¼Mö‘صٜä㎉Ñ˦óqÍ»ií• Nö±{cÕ!êÎOÚÊe?<Ë!«ür{_ø¯—þ3Ú³ÁBFÇ}aHÓ¬©ë­H]f®¿›ôrS'GøèÝÖÖÂqé¬ç5Hv´‘é—ßÍåpz(\Aí8=~¥‰£Þ¿÷#Í¥–Wo­UŸñtç?Ö›Iአ‹P5GJ9ìò0þRfëÒg `ScF³#»Õ:!kNkÊ<3¿gVÖÌ ÄL‚½•„ä=pü[N óh`¾¢Þ*òøÄŽ´ _E†À‹«ì\Tœi&ŽÏ.ÖL„Y€C[â´ì†(õÅ„ÿ„eĨÄõ|T…Ó¿±M¼q¦”|h$€ ÖÓëÛ+ˆ‡ûµ0­±‘… K-iÖæÜöërwý-ñ¨F­I«ÇÓ®½ªÕ蜟ͬía9äîµR5uþ³Â 6ÂNÊg2áAåw_üU‘U‰J8Â>8ú`œ éFïç´LÄ–ÀÓß0îËâV.ýº)‚r¿|E€WÞQón{IΰPð½ßR£ÝA÷™´ŸÔº`iÁâ"iªú"Ì4…N¹÷?ÀuUî§@ã¦uwÐzÏÅÐs-ÌÇ€ÐbóŠö '` s›FG‡fb> stream xœ½\[“\·q®¼n\ùyš§Ôl™s„ûE’]Å8’c[VÉÖ¦RY•Zq–¤Hî’š!MÒ©ü÷t8@8;«]§ô ÛÝú‚ƒžŸ6lâ†ÿ¥ÿ?¹>ûäÏNnžÏB÷†oþ[/Ï~:ãé,‘oþõG¨ ç“ךo.žžñDïÜä¥õãüäÝ\\Ÿ}·ýö|‹Ym„Ú~<‡¦B¸í—±[&·?žï¤1“pjûØ-¸ÓÌo@Íœuœûíö3Í™–j{HôÖoÿ¦Ö@÷%Р缑ÛlBŸ4Ûw¡)×”à4¥æB¹ï/~2tC‚ÉIzÜÖŶðG$V^0S39©íöð6°ª˜·wì)˜\yX|'…žãÛÇ8VQV $0 ìqë-sÛFž,7LÁ~aœ˜° έAT:[cÌvfÒZmÿ€Rq&-göŒsI©)ƒ»@›à3SJ9Ÿ¨ƒnö…§ÃUÜ—2î=jÞ;,xØ—q”U²Gëg:〷yrŸ"8”án®Ï”µjÁÏ=¯Î¾ÎëUÀi99›÷4lºøö5 Wi†ê‚-+Èý/‚,8W ®²†~<ÏÐ ¢ãN( ƒ»Iö© _jÚ}Dà驄 ÏZ«qîÈɘ8-o úyä)¦a?;TV¡?&…§{8Æu¸7óø²’ .£¼Õ|ÓùNI>9'¶ÿJ·À«Øþ5Élµ•ß³¸ ev¸$KéÌö‡>OÇ΀¢Ôwdà ™ûÉ@€dB‚‡›V~QR—ç\Ι‘ý­À`ÉÔ乘a™8Þ¯W#'mÕ)ÆhuP^4¡‡Mh>Êó‰·€y-æ)¸_§³ã]¥a²…yçðÀö޹éí?PÏ`o~A˜`ÊU pò™£¯‘›hÖÀ±Õ Ã-²uDŽDµ6õCWÉw˜Ê=Mâ“ZF³Ìêˆlé Š}EqHfö Çÿ­P|Aº%¦”÷W¯i—>ÊT)׋ÓÁ>Ê^Žq;¶áÎH‡NyÆýÈj[z“ I˜vÒÇYg!ÓCð1’XÉ—¦F‚Q¤¨^ÆK­ªRšYß 4á¹Ôhtº›ãs\CÝQšD&ßòw:¬Æ»ÙYà„q7H‰¯#œ—#V’w “Eé¹öæ‡áåÕ h¸<á¸4† ÉŒêçÕÑyBô7^ŸáxËa€\v1ß9Í¡=ˆ¿ÓµGœ¯¤©Uï¥-æEÜá ßrQŒðñ©‡7.ù!Y~˜ï!ìæI97Z3¹àМ;¬ ±`kÑ(¬ß#'޾ ‘±†pLA/‘­òú@þTÀMíüRÐ!8>-,‚U„žãίMÉ,û©wûÌ£â×).%ýü±ã^c¸°4 ?Ã8œlûøüâÒÂ?íä-̉´/ÐÀ“õœ‰¸*2Á5ƒ°í²­•:®Ô|gAû¡6Õà_‡É«1bRÂù æû–³¾ý¯.kàÍ• Ìg˜ÙàüÂ[•önÞMÚCv¾Ö€©0û!Í^ ?A"IÒ_ý€qO\7¼à·)ÇåPP]^À8HÆ\-Ÿ€øEˆ‰y ŒuÕǸåëâ œYÛrÖê­YÂ^NÅÝao“2„¤óJs_عêüå,•’¨S4á8Ï,vF^wqy"š*s ½y?t¡@°K£cw†§Ý… ‚ž´ì´hë'˜$2¦æ¯Á£Áw’šðø¤»Èu™™¼…Ô*nÒ†Øàþ¡ëÇ«°>7%Š{Zzßu=ï“ÒL×!ÁQ2hü±ì§›#VŽD{uH|&K) ú¢'" {!ñn’/NDå4³:¨™[˜®ïçX‰ øW…–•ÞϺ´ŸÏP’«'´….ÂS‚Ü1ŠCÆÝÇ/›f: ç% ;åò#ë«Us¥TgˆÓ40»oÈå$”…éUTi?ÓÚ·‚ Í­Œ[[ÓÏ«»Ürüh„Æ$åá³Sä—ESK´Ix˜S“©'î›ðÌ WµîÖs=èÎÅ‹;œ B»8­ËŸZ|¿sñâ´sù<é\dUšu–!¼Ñx£~½ÐôýôŠ‚i%c:›‡:ý€³84쓘!h'çäÕÃíò,’j%\É„IäÆñû†çIžÂ9`4Å畸Rb£è¾/[\’˜;$i¨(˜A©žnºz:ôANÒù6õhÞ÷Ç­µØüº2+@Ïmãm«µ? ö3¤f)Å6¹I’Cä“ý+ ’^žò8V0æu€O®'F³€0ÎÜ3 `ÔЂԹKiÀÿ72^ÜŽŒÚ"³[¯‹¸*1›:ŽøNŠÊ4 {C€U\’¯‚Ç]'ù¢¸Qb / -é­wÌdá[õº¶PñM3ŽX®8Å«.AãP­Ôæ.¯¡ÿ‡ü}»¥önñeqÙ$ê_]ŸrœgLµP¬€§œ™uã°ûƺ3ò@¼"ýØw·Á¦}÷¡4¿Ÿ…e©3¡˜†oxÓ8¨œ¨‘(—|yèwžõ,W¯¡[ÝÑÞö'«h RÞv1A²éS¾]Í×€©Cy!E ^/ó ¡¼P¡4䳞V¸Îü´û¨¸†¹ñªüºÞ‡|˜ëp!LeîÀtf§Ú†l¢AóŠ*ÄqîžÑàüHDpƒo¹(×øHd…ëÌOµׄÌ»úËC'EõJ¦PU³'ªùYPœ<Ë™{N“ÀúÏ’à?Ÿ¯«‡0Júð©PJ<­¾^ ¥ÛR›Rú—–#|U²Ô‚Ýáåþ¢Ü§}¬žžpÎ…^MuzZÜÕ½ôí)Á£o¨•—íó.‰…Õ‹ë¹îÎò+ái_¦Á¢Ìó©¾ì>н¸s|JïÄwƉY±ý"½BÀgØùBºn 4fL‰õÊR•áù¡eo‰¸yü]’N1fd§.Š å‡õ[Iaœ+Ñ”0„"~~ ¸o9 €U•ÜÈ\ƒò³c§"¼.”Ç¿3§V’ô“Ñ0Ü*-©°¨_…Neºª69÷¦qÎÐG`C†Å~k¿íãAîÍÃ`¯N>4%«ŸHÞþþqPi]¿gÖ‡úþþk×R¨æL®‡žÁ²m3ã罃—Á㊵ôZžU¯åu¨DË¿Bñ!T T冾ȣ-Û¼ÈÇ+;-˜Uª÷Œ>\ÕùæAþ¢Ì£fk'þ¸Dó‘;Á˜ºs™ãÖ8>`òà†µ4×e0M‰þŒ÷.÷’MƳF¨¹ü¯Ë7 %Þ” ø6¼[2if|Yn–|ëè—Lv2ÔÿK®b)ž°ªò»'b“x…ô¿­¦Ôøk«eÓaõŸíœòk?¬„FÕθ®D1Y1ôÀt Ýíèeú¢ÂöèìÀ$“‚ªX)ç\íñŽø“>á‘”Ú~½VóÙ3ÁÁÁîðìa™eîÆß Áê®SKX3¦¾*nÄN[Þ¨G¿6ø}£áÛ}Å<þ¶bò„aa6ÔåKúÉïa|—ÖŒUKjÝó/[õ,~ŠctFŽiö–ÙëȪŷ'<Ð'b#tó‡HáE]q0¨ð£ž²ã…ÏÁdøÍ‹ˆqɼ®‹=(Í!•¾€^Ä úog\ O‘€ñ> stream xœµZMs·½oô rÚãlâh|úæ8–+±]e››òAÅMR’cR¢¸¤Uþ|ºÌLcf0\JÜÒAC,¦»ÑóÐýºkÑʵ ùÿóëÕß~ö°~³_Åáµ\×?ý¾ú°’ù‘§¯ÿ¾£7ôZÊ6#×»×+™çK€ÖY·¶>´ÿß]¯^5'›-*sÚ h>n𤓾yɆÛlÁÚVyÝü›†•ôF„f³…w^ÊÐ\Ò¸0RÐÍ-Íw-¾ùC”¢œÅÑ3œ®|(å=âØæ~xd®ðŒTÚŸîþEë±|=J@ Vµ»Àü@“uP‚D(Ûz0®¹½‹–jœ¢ uZy¯*ß‚2­²ùŠÞD-Ú¡Æ8ŸhžtÁ ßü™lrÒ ËÅ÷hU ÕlJ™<ÙX¥› ša[ctóÍÀU G¾!ÉAH \t2¬÷¾ÙÆé€‹7Ù(­}(e÷/Þ^&=Ö›´öè¨ní€k¿Þ㦲5’[¿Ù­~ZI„‚_?¬®ØÐ»¾^¥ •¦¹ZTñÌ"Þ ´Þe¼í¾«–R+[8é6¢F;¨¡µ:ÝJ‘¤ ¯;á546½Óï™ìß6=fïÒ‹:Õ½(B /Ñ£5¡yÝ&˦‡x£%wçÕðX gZ‡ÀNs­¶.î;­lþØÝ¨™_SñĽ}¿!ØÂÒÕíþì0ZÆà®=z÷-ºÂîRÀù²ì #¶[‰K¯˜Œ9a¨û8€1SðÞî½?{­PÍ//1nØHŸ gÃN™wùUš« Å•Y%>i=¾F™´?6äã-W|–å*U8‰É-ðpÃÀVûo™}e<ÞÝOì-“]¢õ(¾Î ÙŸoæƒȼ›ŸÂÖ÷.)Õ¾Àßëä0pÐÆßw¦»ºŠÑ ¡U"tè>°_ ž€[ øÑz•WÃ6L°DXAÂqÖWâ8_édô¹0Ç8Œåú…7&sÐS,æÜã„FŽytϤŸ´¤Ñ” Í¡e ¾|^‹¯n&ð¢ž,¦ ÅϦ.–‡t1+ÿ¿ÇÅ"A÷:‰v4ïÙ”›4¬Œj~|9B*"'AÑ Ä†ÐÓxAÇEöü†× ¼*÷VÛÏÈ0N#Œ dÿ—d™´jhdS¢c-îÿG°k1ªÑý›‚FËf²¿ÂúIVƒ¬ïU?¡§fD¡ÄúçoóÃí›'Ò/¥1ò«°¶RP²MôKi,ë9¼°¨iB$ ÷ M§ p©É³mn¬MZáê[v‰E¢-X•,üÞ>Øbÿaœ{*.£Æì³?cÒ8gT‡åšáéñ p÷åf«A"mÈR-`‘ÝS¹CÙ «$á)`ÆxUl¤gZ× %ì1€§ƒ%šR^+{çèK5VŠV!÷79 Hу{ñeÄf>ܾ˜Ô]$GGس¸0ˬ ®‹ÂY\9†ç¤m¡ÔtZpS‹µ!`-;EÆkèÐdš²KXœÛ§Q×J?„ÏÜ=(OiU&Ž.Ý©’ ò¬Å’ãe’b1m±Jï}ÈV+\•o¾`¢9ñ.H?ü†$"mB‰/Øp%=Ü‚¾éC¯†ê¨šN§¬ÍY3áGä ¬ÒR¥:çÇö«ÂXB¾L‚àG;$f~­0Hš.óÝ Nû Ù°nD6Ye2S,vÒþÆoåG~cLÍX!#:¦Lh¥”G!¯6´^ʵ±X¬…œŸà(äÕj|ŠN“³œ†QF‹wÔlM@>¿7&Ÿ{R ž~§·T¨'¾ÉŠ"‘¨­ñ†5†Ú"Ö°½ph4Ê™bˆ"Œ¢Ù¯Ë]l6>zލÅM_§Ì½nÖF ?ÜPÏ7Ó\ÂÛ[q#òç¥Om47ÍBFPºk:HU|Ò ˜¶±§á51ƒ€uøBs#Ó%žœrÒeNýï ±çBû~¡mæ[!m5gw¦S#®k¾•¼”Õ{rYãøiý®NŒîæ???©£.åô¶³]Þ9YÉ”ü‡ÁsÜ)ïu"sjI L- Vb¾ËÒ.5ÃGgZ!ý0]Ð1Q—a¥Z̰‹Ÿ³ ¡ù ×ÀžGs_‰º£RQloº“©«Œò`é Á AøX±EðÊ¢jõÇwžÜÖE†¥?Å`ŠìwÄËÞGIJÔ,ë°œ[½ÂNu&qê?H‰ù¨Î׉<·8H n)üw+*ËúÇM=¸Q®š 8qsPÀÁTe-rFE)9¤ór:4ß<©T°\œrW‚gT°K‡UGái^" ²k£€Îh}’ƒUê(”-}ÐRéiò¿÷aÜ…ÀQHMú]ë™B°#ñ "±b aÂxÅW ðÓ2ñÝÚî÷I’boŽËiÁò‘†ÈÀ‡ë6sH<(¢iåN9iTº²ïÁ÷T­¶¯q«ËìBÜzxû’H&ÐyxWß[:|ërÓˆä ×¨o–uSx±£$:m¬AgŠ•t•@þ<Âc…„eÂ3ŽæT9ï=‘ðÄÆAŒx_Ue÷†ð¯A5­£$Ž’(¨áŒ1[ÓIµ›$Šg-èé\R—šXkù|L¾ù6:Hc]V/ XoåÇä!Pþ…õ¿’¥Ýþ¢Uð‡8hÊ/: Bް²yI§Ò¨úÕþœfÓ‘|µ_1®þˆå”ŠŽŒqŸ^pÇp·Öé¬eäïèBa«wrq–oò9Ñ+:@ñê™§RcNy3õÆýËî•uvx2`!îËÔçùÂb­Ê¯0ƒûIørtY¯’÷I‰“K';ÔÑ7êSÎa”iƒš9‡™6ާ톜¨‹s2EªðäV3Äã“2/0_¥èBš¥…UëÝ÷«Ý_^Õ®®ñ/6ŸYŠ$CË(›AgÔЂw‹Å„…UDÉîÎâïŸrëP›YÞÌ‹£F3™•$ý.MíçŽ9ºÝu€}®{<_n¶V`¬A‰ÓNþ„[eõ ¸'7–I`P~NM0% c‚2^e;Å ÙÜÒ™é–&î÷á[y4–ÿ» Š Ê¶yS X¬ ©?Ædœœ/n&ÃÊàvÃ÷vv¦çzåžI7©ó j4Ë8ÉnPw#O¿A Šú$ríÝE’‡T×?­þ[ ýäendstream endobj 237 0 obj 2771 endobj 249 0 obj <> stream xœ½ZIoǾùï8 Äqï t¢9Nâ0ŽH"ì(Q´‚D”¬G…à¿ÏWÕ=3Õ³<ÒŽè V¿îÚº–¯jôóNõz§èOýûÍû£¯^&»ûiÄÛ;½ûÓ¸úçÑÏGºþCÕ㻯/è†Û×ÇõîâæH×ó)õÙÆ¼óÁôÆà§÷G?t¿;>³6Ý»c,­ÎÉvW´­¬ö:¹îcÙwYwwX*g¬7¹{ËWó9tŸŽOl}ˆ¶3|5¹¨|úûÅ‚îcˆfwñÝÑÅoèΉ‚ñZÛ}G»&§ñl¬ê½³¶»ç8\ÑÂEŸÁ‹dÈÆÅ e ^¬ºŽ½ÑÞ“êÑöÑÄ8ð6Ì;;|×cm\Ò ¢O´V îºïˆž ÊØîE¸˜!l÷†n&“ƒxF¯înÉ4ôéö|ÕX ]Ä‘"Vö;­ûì=¿ˆó½µV˜§­Öxî­³*æî&bS‚´ÆiÕ'«A›ÕWZÛî}‘1%Xêc¡bœ‹Ý¿H9¼Ê°±‰½õÙKÒ{"§AÆv¿çkÎk£Áe¼vvÅöñÊGòb£ïÄî­àw]è‘ê‚ÆÈ…”tÁC[7ã‹Ê)ß(óIœ‘û7$·º˜Ø·§YÀœÍ…$ÕN9y×hy7géµòXú„îõ± }°߉S1ôD£aán°CLzC¼7B[©ù­°Ô^þð ­îââþ˜<Ìz×ç׈êjbçRåc”g/†/h8,r"%Z'±í.šÕVAÿ;á±0¾5f1Y¾g“;›U¨QãEÓðä¡è(UX$ª ·ùU†A²³3 {gýÁ½ÔBR¼¦›¡7x£×Ç'DCéÖ —1…§½Ÿ^¹'#‚–Í!!þm¹Ýó"†Üÿ7íâ¹ÜZD°°xr“ñzp­s¡ýv¾0È÷ZÅY@š”{l~$öòƒ…ÂbùPh¸4á °Ÿ“¸Ã§šûP¶áÝO›•weŠ2e° á+ùg<€n¼ƒø#–QmèD˨éÆô ÅébzÚwÍiV¤ÿ§âÖÁtcˆ/•© µ<±iãºlÂéJ2M>ºÍ|ÛÚcH%3TˆµSÁQŠ¥ŒÖ~L äJ­ãÙwÄîGqâSã£I„a—F *&ÊçDϨU.Èñ¢fl«É§¹æQå,oÞQêÏAY´Wë²IÂÏAÖŽÀ1%¬•ê}.Œágw¶¥•Oømé囯ä7>_ﺜ<óZ8¨ áÖÏùfå’ÍQ¬¯¦#mÝfÉãÙ¯ ¼Ü…™_³¦#{³pá‡BÌ'ŒbÚA?&q+Šb­B)g_» Ñ–¼ë¦ÌQ(+…‚Å:øh¹ lصߖ#yb 2F*ã¾rûz56xç†v@X| OY‰Ï.ë~nËÁ¤µ‚ÉšÒÀÂà@-ó€ã­3I'ÛªíUÚÜàƒ§Wÿ¡î°(¨RÀ}Ù’ip±t‡Ç%ܿ۰ÊuMi3Ç<{ ‚Ï(ØÁÉßNºsœ4ªº OÉÇžZ­¯Ê&¢qÚÞ›šÎ`姤3FCh¨ÊDÕ¦°ÑëVÂŽ$¤=„}?,r_|^eœ}¶è&H­Fpåì¦kï7¥"8©ð8fÚ}V(ÏÎV~ &û±Û,õ,’Ñ›…a´äH®9!}ùn=»/ʧ<®Ì畆½“ºëï|(GmP4gÕå{š¼jò„¦¢š<ª”'#¶~2ø@£OÝý—€ =EÏ “©l-ÄX)ÍŒì—f¶Ä!YŒm¨ÜYô"…/†©—cž­«qT²A9¼Zz˜^ët:Ù4 Y’ÉÇ,{&q é6ølö¹íÅF)6ÞäA›Ú¨K™»¸¾ë£6ƒëÏŒN s»¿±z™þ°Ô>ô?Åõ,µ9ßþ…KXò@ÝåôCuÜ£$lo «Ó³W` ©Ð'0ЊÀ¾ïN_ËÓ3ѼzN7SŸœß°æÖ;md›»"Iœµ¼ë]ém9 °rнt˜ÇH3…ù(ޝ—ß¹£ÏøxíÚ€,·Týbšë`â’MT v´H‹v šõ?O‰î…:/I¤S§<Åè‰P+}p;ýšžUÉ]&X‹ý•IÈ€AÇj^&å’³Èî5Åã;r™ŒþÔÍkíæœš!@!c7ÍìÙ 1™9NpNT,aPaÅ®º5ºý­ñ»î³ Ýiú=élÉs±„DQ²Bˆ‘Ø¥4ÄéËB.¤ÜàÉKáÿr_ÆÚ¹p£ªX@m0ÔÉ3MÛè8kY uh<ÉG°ªÀ9ÒØš5ß´ÍöÖäîIxZV:òoGOTw0cƒ¼^‹õ"„¢ƒ«¿fsö Æ® ÉAŒMp0äíal©ü¦éd¶Çµ,•Ž›s n„ÖëÅþàèí;hnË<÷àùå³70®`FØ?x.ôòâ§%ú< Ñ&Ui¥¯&ßjq„¢ëPjC“}X4iji—¨å”ûbð¥aöÜ"ÎzË@ŒAë¢ ÚÏEo‰«4Hþ‚½%©“ÿÛæ²Š»t|ÆœOœ¹3Fp 3ÂãňT`Ø\> Mƒ† O(PIµPà~°Ë> ÜmD†÷ÛÝÿl-¢ ~1È;njÏ2µ? Ë›ÂRE×¼·`#CšZ¨ „ Jî›iŠf<“Úð¶v! YÈmhiQNÍé0Ïùº6‹1¡ÓOì«I|'dØ€dÒe–lv™Ÿ)<Æ8Ÿ{–m»$ßìI`"ÙÉÐè'Íwa¢§¥Ÿùz¬SH%ç5ûRA"¬xºÞ¯m·—@BÐxO×”‰±)ŒN%›´A~eH&BŸÖâR§¦{b< §¥–yZ2Ý„Ät—Ò»Ne 1–±³e(‰î±VûõZN=ζëÃX±~á')]¯£ÝLD³^þîPžøÑŠrˆsóΕk{ºýçõ ØþjÒôÿ~µÂŸì<·°TXþ/¾ø0ñü¯ùR….…¾Nl|©™`?NÚ'퇎ø—Ä˲rbñפg Ì=äiļ4Ȕ쮞×HžaûH<*eŽz¤…–ß»çE`! ÷â¢ëÇÃu¨ö…[Øì£Ðü7mÇ?Vã-€V’2r]š÷ÇÌ2?®éÖì]*XM6ç”ì[_—‰Q§ÜëwèÁú”².n³švéø‹‹£¿âÏÓqÉ“endstream endobj 250 0 obj 2477 endobj 254 0 obj <> stream xœ­ZKs·¾oéä´Ça¬¡ñFU*[‰Ä±*–è“+…KJ,ñ!sI+ü÷é0@cw0Z=Jb[  ÑèÇ×ùm-FX ú—ÿž]¯ž½ôjýf·Šä5¬,£w«ßVˆÌ¾þî”fè5ÀŒõéÅ 2?(5:ëÖÖ‡1àßÓëկë“ næ´jx<Á¡~øž‘/O6ÊÚQz=üBd Þˆ0ì[xçÂpNta@¥‡;âw#Îü)®"Eêkd—>\円HSvx¨CÆp…Ce@jÿŸÓÒy,?jTNuºÅüDÌ:HAKH;zeÜpw%Õ"8I@é´ô^Ü|£¤½€á[š‰»h‡;F\ÆEñÀ'üð’É‹óèT·¡µ’Òdfc¥¶ÄaGcôð#qà©„#ÝÐÊA(¾tPYïý°‰ì o²PZûЮ]&Þ§}¬7éìQQÓÙž}[çqQÙI­;]ý¼4¿þ°BÛpc´ mQ¹ëë•‘R` åjõªkoÁ,Ú›Q£wÙÞþA²Y££26šìDCRh'ÐPÞFehiÉ®´5c@–3¦Æh*Ú¼è]d±£ƒáC½¬¼F¼Ú¨ÿjšeŸi"²Ïl/´0u{9ünu Ë_ÒT&G¦šâ²¹°íýW¹Î˜\çIZ²¢Âr{²¡KÕªµ¢]Ë…fÁÛª•û$ rxÂ824ºº¤í´â³ØÑï¦ô´GÖÈüÁ²ÔÑlÇ“7ÅóÃóx%ÊjË÷¹!Sudø\ñìR¹ú¦£8â&»UŽì8q´µž 2Á¹ùìR ¶‘œ-’B—„°¦p+­&ß0è·Ú–ص‹×kœ™‚o°^uxY‡›:ÜÖáyþ^‡¡¡–è|1Æ{3»ÅYîê c¥ÞÖá]¾)Ãtæ6„CÔtä±xIŽí˜«RŒ!æ þCpë@ä+“t±2P²I hLMÉäx·)®åm›VKw„¼˜,ÝÌän)~ # 9(z¤Ùû‘˜0.†4W‹çÈÉ$óÜ2¹Ò¶`-;XÕ‚ò(4Žþµ:ýã¯Ã_é ˜ƒoSç{4*1FÙzʘ¸€‰wŸ3fåì¤ïeM wJÞýæîLiT~(â¾bîðxR2[ Ê{k"HÀ3cy$'Qa4^gŒŸÏk þ&Þ×äÞß$fa{Qõ¿,”ÝÍGŽLÖ#ßcÚQ«&aðˆ¹Í;zµj(j³G¥_D}cšƒ^°8O¢8 Ëz0¸x dK_'Œ×G6S¤eÊb*Ü;mÖ›™-9Ò.ˇ[~j´Ÿ¡Ç¹˜´ÄY!MŒÛñ„2S¸Ï‚ +?AOÇ»6RZ°n7ÓmÀ_@à |ÄÞ"ï²½EòcZŽ 3ß…ƒ•Ä^Ö¦Ãj‘Li9ƒ’µÝ½›ÄkðVï{ ìýǶÎeŠ©aO}s†®%Д´  )ÒÑ3û†OÚ®áG[Ž*”#Y×yÉ6AŽ òiE(oç­z6+ £¶„¤ÄédŽyxS‡uxY‡oj’}¨Ô»:~lv§ï[àƒ1|4Áì‡n¤"ÐŒ! ‡¨‚a×úOU/3Ü«ÄEœunàP”  *ïñ¶WÍ|hÛšZ”QHt’ðÒÄ¢‰¦y-K†ÛÖjnsW{: ø cÚC+vÉ:=keGxÁ·ôE€™ %Ý&…`U\vŒô±0=·á+¦då‹n`%àÅëáïm4I8[˜Ú¹‰Ï…ž§Åó2äN³Z“ì•ÒáEA·¸£°æ˜6/pÔYT£ ôn»Ís´ •œŸaš4ëêãÂdÙþ)NÄ+T¶GÇ0ǪeÞr¨ÅÃïC-½á» ”ÆÎ”zPŠç"^8ó» &9£2…O7ˆ±l׃UW³±;ÆhDA…¿OöˆÈ8¸‚.+ë ÜIŒÖMÃÇ£ÅË`ú}Å$;Ä·á=;S2ó,L2s£’Là%áyx±WÒSOÇømì9ÉÙÅ„abª–²*--ÿz°×S®5:¶à 6“ 5WùÕd¦1Çx‘JŽçqi#°J¢‡cá”–¼ÌI %½õhˆ‘Å*”䡲P*Eç§þ£Ç".éR'4R»Olz*Ûë\nS—Ó£%Qí)lÐ*73«±¦-=ž§ÓéäCÆ'œjfd®{öj9Ií·¤Øo©{$4ihJPÞ«}84®égðnm”–3®Y¡‘?îÜÒÐCµÔ£Z,ÏÒa$|$÷Eë~Âf²ÐÕ †ó}¾xÈ×Rí;Oàó•Ú–Ž£F~¡dê¶’/Á9v¦‹­,.117gŒÜÈZXËy4n‘:ße2Emz“ï7Xp”ýŒ‘âr’­ ËÜÌ‘dÎu¦Ýèi´HRî]lPÓ nz–}Âÿ¡?/öâþrôª¸hd`+^r‡‰†o@)úÊ=¸ô>­–¬3/ЂãC?ަµèǵÒÂ;B¸s >à5_ÓlG;åÑ ¼·ÂÛWN“ÔÔ`òÏÕç3}ˆ¬lVü_Å]œÌ­ WMbÆ/V|Q ê¨ÖBþ‘7ûnXcîÓÛħ5v¿þ°Joa/(OlˆX‚öÄ6Qè‰ ¨õ‡L2s"ÓD uçg8œ˜ÓS¡0®i" ™ÇV¢Y ˆ§>*wŸ’ýüÓšŒÅµz°M/{É4:ŒOÏŽù6wŒŽWb@! þ̨#ã~ÆègŒ~Ëèé4Ãeá¹dã7ŒçÑïØø¼ŽË­•ë**-úkÔž8éTjé2%7a¿Š’…Á×*ùšq¿fôw‡ !ú‚BÊY™ŠÊaóù”£ýs«£Yö«X btê‹­îH…ÐLgZãâ¸côûÃ%ãøŠñ_ctU}Ö-´:&h_U(§ií  I©í 9­gpø r6ô^oÞÕÔDM«bñÔ¶~h;%÷;¨D…½ÜÂ6ÙM¡S%ŒFýÍN¯• /©TiÌ=tZk<—Ò7QR”ÿ¨’>ª.9wZÛB }•ÇÃö|óûtªK#ô’hýõñè ¦L0í1IæÁîõ êQ?©8ê¼m%,—%ŠXÎè\jÌ7o–¾¶˜^—ÁÀ°cí§î‹MƒN¨O¦Ìh­ç½–Þ0 ìOF`˜olö"#J0]¡§Cñ-^GB(0ü^fT¶Ü‡Ï¨ì3Ú±‹ZHŒ>¡~$V?Qàß;ÄšôþòºRÙW›Yêíì O<Ý‹ú±²T­ÑFEã±KŸêDã­cu*{þÊ56Åó~Gnƒ9¯O¯7¥7GB¾Œ ¤ÎÜìÇ š¼G pÞkz`©•…£À[zoR×-`ÌŒë€Vn€%È}¼ÁöŒÑó7ñ¸4Õhç1@–U®O ë©5½¶i#ÓM#‹²ô|ã‡Ç£&gzwi‰ôQF¼™·u‰¤À’µŠ[ñQFû%Ýômbÿ3¹½âÍ"„uuòš›*hêÜgÓ“á Š§(âC¿Š§£³mîïøýL¾¦P‚HtoËÒ{Ùî‡Ä=m׫X;Í‹p½èÕ™Ê[5Ó*±—ôfõ1žœb¹Fã›[üNæ·©øžÍ¢Iæ_´Œ.èÚܘ‹fsÃ9[•¸¼¶o„-ä@(PŸ+æ B' ƒ¼´!ž£b^äA4˜·2 ãš&bøm`+Ñ,©¾Fä<Ái²=,m#—¼µ@Ù0òC&[hÈ/ˆ¬ÑñUC¾«Ü¯ù‘U-ß·²€ ôãe/c¾ë5ã¿eô-IƒWa4i#Ê‹¸ôKvúã¿é”h¼d}|!éásfÍIâÙ5ïX“÷>Þ±ÎY‚Ã6`MåÚo`?RSV‹o%›üäâgæ4ËùÖÁ S³væ* ¡¸ç)‘+x^]­ÌÃx‰‘ÏË”Oÿ]Iô{L™>`2r¹‡5œê2,zûyõEë;Æendstream endobj 255 0 obj 3206 endobj 259 0 obj <> stream xœµÛn\·ñ}‘/èÓ¢O« {Âûi‹º“¦IšØVЇ$lK–…Z²³+ÛñßwfÈs8ä9\¯EPz4‡œûÜ_×bkÿËÿÿôjõéà×û×rýõ´úßêוÌÿ}ýSü¬¥¢µr}úl%3~CÔ>®]ˆCt~}zµúqóèd ‡yë”Ù¼;¥VJ…Í lœÐ›Ë“­vnPÁl~@°’ÁЏÙ¶>H7çV «Íf—ñ}Ü|KÛ(ïüðUÑéÍ5.¦Ýæ5-•‘–#¼€¥¶R™ðóé¿‘!ÇRB:"[§gÀ·ˆl¢¶PnÚúÍî†H5"z…y67ßje‡ äæ~ §' lã‰<é£aó'¤ÉK' ð ßùAhÇàÞDe3²wÎmÎà ֚Í׈¡Úƒppç(¤Ô›¸%t`BŽDbÆ&Ýœšv牃¨uâ5òîÎÊwœTÆ#ŠõþéêÁJ‚-„õÛÈ}HÆaw}µ2Þ›?B^¬u .Úƒgõ|6¸qqìÈ>ÀÊ`ÍàIéJÆ5Zªr†´îç¼µþ2Ö`lÖ—Ž.(²¡ ½*Ëó‚ð· š©)×f Ng쟓^¤4Êm^¢)+`¿× Œ¦š=ôƒ×aó–~0Bô ì‘]/´©¬âUÚOaù~ˉO6ÿr:RmÞS½,{ܰ#Ÿ'JŒGWGòŒÑ l‘?ì®{»f`FÒYS H‡¶–£ð/Ï ‹ê•1‚OÆZ½¤²³F½FI°ü›©—·P/Ñב©C Ø È:ÎÔ œ;} õ:ãü‘êåBÛªh!œ†õVÔ^L|$Í+ 1t®yò­ç)2)g[ƒ˜ìx *ª¢†›:ç¯ã¹ r8ÇGH!7éL©âÈm¸¾éÈk˜˜@¦a`Xýfuúñ›ÓÂìùJâ>tÚS4i@©£d ßÞÛéËÖÙè¬ý#k$§ƒ©ˆíÖh21Ñ/‹^û%%’u±Ìðˆñ;ÊZ@FN‰]‡à,%v”nŒ·$–A¯Ùé廜ÐBŒ¶óáþ&qéTGIËI €á‡)õï‹ç¿+Ëg%J\èv1¢œÜ7õJËÍßËòYYž—åuY^–åӲܗåP–/ËrW¾˜ KA â"fø‘åa ¹4‚ZÏÄZDÞê¹V«õÖÚÁá‚>Rh]* ´Èл>ÙJ)„’Í÷HƒÕÁE’$œ½£ ›Ê:Œ!€áDL¾» ð™ëTë°ÉG¯‚¯zEKé`7ðFÿ°hÀírÄŽm¼¨¡rˆnòùl˪‰C¶, G/æÅÙÂTH•³íÓ‡HêÁ :ÅQ)Ý~Ï FFSƒ½”^®Ó‰ kJžj^Õk )@ÿ’`†“-·Cˆ&‡Gâž¹æ=„óÒ!”TÇ LXz:5%,úòõrU3’"U2Ø‹EgM Ë›<¡ºŒ ¸! ÏÕÙûË´1m!Xë0úQ¸’ñs ²VÕévÜ­ÎÄ\û£TÀ°˜ ¡×6 `ù“Uc^ù/aD E¾ctT›/2Tà›«œH¥;–Øbýð˼Ø]ܲ<—V Véµ…v Kå¹,¤êiÉŽ<¾ íê ÈMÕ‡þ\ìLÙB”° À$0M–g=| ‚È£Sþ2pmÔ“Å~‚Ñ â¦m;ò#Ј þøê±” ÄBUø1„ýË´w0~!ÁÒv{ÎÎò.£}©ªXŽl,_w2zU¢ÂÆâ~ȶ8¦ ;±EP2¤ÓµEó!lÑ(lpõ’-R>šƒ¨µD ¾ÉuiŽÎÆžICµ%twFM;‹`VŽ7¦ÌD>ÉáÝžÉë±gº=@†Ûì{ÎÁ,§i‰ŒS )Óx½q§&]Ç«ê“}¯‡†M $UÍƲY¨ž;öÆFgi?ÚA£<45AQá8 jȲ·Ëª¾†mÎØYW¨æÆ¸¼<³Ü—IÀMíN2q°†]GÞ*-ÕG40h‰c»ÒD]¢àœÖÙ€’ô›4FVjR¦®Ô=Ù@Ý‘]/—PÍðÚ6Ê=V¦ËbŸL%0ÛFÐc ”zÒU­C¶88 ;ù¬ZRnñ9…4îD§Ñ‹=ä”á|ëO‡ Ú„Ë®W#íÓù¡N¡˜ª¡ã:;á꤭ܠ:¼WÅ1_yRFmáæ°øo›R•î{mU[gÞuWlu­J5“Ös¡9Õíž]`—Š·#Êæ’b¼œ„mn1FÈDoâU|5^X‹ÈT%/Ÿ„ñYy=£¡/A oÑŵw5÷ &@ˆï4;Q¼ç–ß«¸1ݺÐY¸Xò˜ÊF=ß/!öAYþPbð½ý¦ŠÁTÚ€zíúí ΋àÈkÈË`f}¨1LC×¥-…cÑ_Š´Ò\ô|WÈy8'jF‰—´Œ ݬòˆÓʆŽÏ _•åýInKYJb!æ%ÏRKÓDh´ oê¸ð[ QóKLj;צÙNƒocY/X?m¸ñCG; v>^I»Ã[46ÈYPÄ;ß8tNæÂÅ|]Àn¨Iޝ ôE[$Œ—Õ©„W|^­1à@¾…ƒå³z‚ü…à TMõ} ù¢þ¦Ô+ ʆ‚ð´@_µËÊtÓÑÐŒŒO´@O•ìéÁA–TÊF ÌYP:`”>Pî#|‰y€aHÁ¿TQ9új¯ôb•.¦ûÎ&,Ž8…œ²°»ƒâÑ&iîÓ¸ÒGÀ±ÄdÛW þ„Á_28´VbaãÀ+ 8™qÆÿ3ûÃoøO'쟕?ÌU2 ­¨l%Fï121Òw À;c€¿e›<¯¹„~k€ÿ0ñÒÒñ_Ë’ËêcÆ9‡Và¤0ñWÉ%ó7ñì4ø7&úÎÜ‘19LÃ%_3†oœD¥A§’‹ê˜/Ïü‚Áw þ8­éÙÓ M•þÀÍó¶s8áËþ3†³dÚïQ꤮Jͦ1m°fåJÅïâ™¶Õw“N¿ò¸5¼™+c !ü¿dðkâ“ÌyüY؈næ KqÂŽSؤŠJ…±ñBœÅÊ ñ;{G^¨4ÄÙ ï3=`¬ýÀà÷üÿ…Á¿cð‡œÏü+ç4,éã&\0œc<ºqJ‹ãï ÇtÃQèÓO\ÏÓÓï5‰IÙ•‘ØÆ‡5øŒˆÜ$`c¨ÒªŠ¡`±Ý'¬±F, í«QFÈqæuø¡¤ú\¾‡J·Áéf„ÀŸZmñKšÅËûqâ€(¶iŒÎì?Èæö¡Þ¼çmż*çÞ¡±±¡zõ?‘ûÛÙýÏ~ÿþëÝ‘;p$IòʵØlàÇ®M–oP’°ì` û¨[gÚ#«W1Aò!Ì«åÓæPº…bý›I¼K{K³»éVHè±ýêßGÚŽœZäë&‡O*æÚ›½ ¼…öÒœ! yd}‡Mƒ" †tJKã±W€TèC~$=Íóeõ¤é§ué9 І·7¼¹\žGx1@”Z³÷\¹uº(KöÐuwxlq¸1M±>b”v^î1Î"ë&´·\Ó§gYªNÞÚåûž…;j¡ ‰ßV«‘v˜5×»»g¨ Ä.§ž ]Fz[ÝÜÖÏÑzï`ßX6íj„ÆTn¬b 0 CÕÙ9ÇÝ‹(è£]=Õmãx&ïßLÃ{3ÆÎGË1¢œïÄ·øË`ŠqxùÛ膬toe«§2L/©ñ´å—2Í+©h|ƒn¼h§ä‰‡wH”éý -Wõe‹ìS2Fõì¯JÑ\ŠG(ŸÎ—RV>“vÂ1ïH¡=“W_þ/\Ö“õÓã÷H/&ž0{â—õ?ÄŽÆ,LéC.ç…)0TžWV@N8t„Êèî•ÆÅÌpg5G+gäMÙæúÏérŽ{Y°óò¿ »¸¡÷±sÌã´4p Ïœ4'¤U+Ý« Î:޽K»“š™üë¥åg%µ¡’éË\/>Àœ>[¾{¹NÇP+‰•? ŽÄ®ëª_'øúgÉîmuESÛ.¤ãÁº÷ÁüZ…?ƒ%»ëáÜqJn ÚÆ;õ{ÒNbmJièF”joÀކÛßæ$ÜîõÑíê£Ô b;ÙçE:î¨*s¢ÎÞ]ý1€úÑ"GqèjPÀ)ƒ¯(Ù%£7Њ°ïÛ!ò¼F {ò}UêóÞx;Qï,“SaÎëˆy&ŸEÁñ±’÷GxÄö*~ðOo¯Ü¡ú•È6w߉5ÑÞñ%ÜÅ÷bÖõ{§ÅŸkÂqºç yĹýÏ5AÉPé5lmðÖ®}ƒk«Ú˜Èy°ú?ËÜŒ™endstream endobj 260 0 obj 3711 endobj 267 0 obj <> stream xœÝZYoÇ~_ääií§ÙXÛê£ú‚å۱ĶËÌSI˜K*" ÿ÷Tõ1S½³Í,Á ‚zа·ª¦Ž¯Žžî_–R¨¥¤åÿ“ËÅóWÁ,ßliy©–ߎO_ü²PåYÈ—_,•ÑZµ<:_¨B¯ŒÞù¥ QDüÿèrñ×áÇÕ_æÁI3ܯðÑ(¯Âð5[~·Zç„0ü…–µ VÆaƒÔ2ø TÎh]Z%­á†è½@Îï“í®#¹1¢”+zÄ5ㆻé‘\ࣱJCøÛÑŸÉÇíÑÒɪ£S´à{"†¨%‰ÐNcýps›4½&P;Ð!@Ä—¯¶"H5|NœøðøÆD‚b|ROùèe~O:yå$ ¹ÈGVi| ɶFk[ˆ­Ó0œ…ÖÂð-Q UÒ“oHr”J.:+h\aX'rƒÆÛ¢@ˆ­ì‘ñæ,¿Ç›mOŽª¶´ýtâãª2É­_-~X(„BXþsØð"a:wy¹°Z¡ì¸r±øqc$ÎpzõÍÄeAŠÀ™òñ MD"ƒ$x\0¸à ²)Ä #šV&ªÊh. ¹b~Û”%ÝÜ;s¢g–õöÞäÜx—£¨¥ ›1¢:«0—ìpÍ(nÅ)[?cë7™Sb?£G£ŧùYI3iô÷è•ÑçbëqMÁen*LqbÍèÝôªcìyß ;ׯØúÉœ†\2Íå¤çwìù˜Ñó°½aÏŒå“÷ æœl¥'ŠÒ¹Æ\z¢¿hÒÿ±Á­qÛŽ6­ôV€eÁMLñ0ÁÅßB(9ð ÄñÜÜò;9ófÐôü5sÛW”J`†Tìp&’Ÿ†6CbxJ¸ž‘>X亃ŒÓ+Wç§cøtúáŒámA9l4Š€X,4å´P4Rmƒ#ë5¬I ±yÙ Qå‚£ç,æÏKýtº[ zðâÐÙ0·n:µàº­^·xmv£«©ÉÜéÕƒÕ©´`±JLî0•غ€1-•ø¸ã5^MßÎ=•Öß·.Á¡3ÛäÏÍcq<޸˵„ˆ3‡`b:-Ž,²wx?ÚÊçÒÎkuI$F¼5ÕîïUCòsŽlk~jùº¡~Qºÿ¥Nt*×ëy‹—ÆZs&58®Â'Œ÷“-Öjà¯{EyŒ`÷6Œ5B³(“b8…Eġ술Šç€è42^NØúÛNÿßNãúÏNð¡¢}âþ’Ç…3ó—&Ñ›8ï?›¦J®4/•½®ÙÈÿ˜1¼œ¯×ö¸ÓC ö¸5'Œáç¹v¼ê&šÚå=Ró†m¨ïØŠÅÁ¾-KGBÏËRbzbYª€Å ¨–ðX>]ÏyçB·c¥Ã}Œúùÿ ÷´; G¶Ðn+¯Äíƒa@&¦p éƒÆc[*ïo0P¹jÓØšÜƒˆÃn๗˜3@tô}%«Ì÷ïçó@Ö~¿3÷xÎð¾,Ó…f¦:·ù¨(N ÏÍÒðßäszV´}3·eV9=7ŒgØã!<źEHað´šð˜âa w»®@ø}|PÞ Xýžó‚‘ŒÓ<4?ç¡S= %‚ÑŸtèùhÓ‘³sxÜÐÔ„5¶Y팤Oy—[Q=H aþÙî|‡é‡æå|¶1¸dëÿ˜wãY†ôºkþÝ{&Ÿ7Â] o†¦Ç¶~þQò¥bVƨÁK- ÀTÎÝô*³|̼b¶>w'楀!hcÓ+çyj‰Xðõ~û¥)¶Ò‡' àFØ7ƒÄíAÆO°ZD_JÞŽ/­³Vw3îawV9Óx‰ÑãÞ»=²é£Dõ3Î F´ÙñQyö±Žk°_‰#Òı„¤F ß$"¯qÄu ¨™ ¬)5®7ˆÜ²õ»N4¯ò€£+OóÙ`?ŒÆ6>j¢pge9ŽQ :E:HÕ× dxÌô9©ÃŒõuÆnâØÄœ¸Ú“ª‰¦=T¥c1$²È>‹•…ýlGd=pˆk<Ž˜ZgÛ?§Ór,‹À6Ö ü½9yü°b%NF­´>w8B0¦t¸z:ÊKB¬”Fç3P”më>/ó×lNØ t ¼4€Ù?J|½Zkj×*4¬§Y¸ˉ¯Êª±ÛE\n—J‚¬Ôg€¬ ƒª†úŽQóõëÉ]™¯.²lÇ×8×Yq޶-×t`~]BÍ+J b° j’¦ÛA(~jèÛÃeí„.66Î\ŒÛŸÐ±É] ‹XS»ZOĆÿPÝ ža ™é†ŒIÌ'üZÅ%ÝJÐíëªÍZÑÑ}ÛËJÑ…6ƒN™è‚NÊ*#ØŒù m:™t]AWk7! ´«øT1T˜§e2v1.—» °TW¬Í†”­±ŠGpÅMöëH—'²ðä9»Z+%Ñr¾I¯0_]î/þÍãTNå+ =çÔðe¾£¸?ZE%ŒE6‚]©ÀÅkö¾‹"-jÜ{¤1RkÎOêãö œ&õ‹ H|ünqôR;½Ó>iLÔ¤ö®el(JFŒ**õ6ÝóÐøÎ”'¨ªExä+$"º÷þ’*”D{,E€â ã*HÒRÒœ/!O‰ ‚´å„¢J¡òƒÁ€ ;yÅYëé¼ õh¹îW;áÐ¥6T‹ÿDBf¥×Ý$‚Ö98PŠâ°xÉ’êËtsM¶4é‚ô"ȸ+¶Îˆ[ƒÖ\^¯ÈæD§‹#·»«Ö-D‰vŸ•Vé®Â¨ÜyÖÈkCÞ#0cî§q¹¢».Ò›š R5åò"K@hó÷nòªÆúrÅtg|·ùuΛ®u¿cuâªCsšÅHGúѽRd´ÕðjT\¤qƯêùQ½ô’y?œ×VŠ!ݹSÎ_2k)é¶ÎmŽaÄ,x+*6{Äh­1E½Øö¦ñ¬+S[øš†˜‚?Y6•èÒ¥yuºb Ûêeñ†V^þã5°Äß5ñçiKàÇ(L¶8|‘ô02Z×ó±€éqÇ⻩÷š0~-ViÕD¿×ð¬\Â’ýyá,M«–òeMšó¹²NzÊEM[iÔ«+l®T{€dŸ±T3XNDÓÊDU­B#—„\Ê4{N¤²"ð»˜u%Q•ëž“_G>¬q¢^Ê|e…ø·G5šNÿÕ2à6=x•ݯ¦’îÆÇÑo?,þÚa9endstream endobj 268 0 obj 2608 endobj 272 0 obj <> stream xœå[Ko¹¾OþANƒ=µ«Í÷#AN ’Í"صrÚ ’F~Ä3’W3öJþõ©*²ÙÅ~Œ4öAøàV©X$«¾zEý¼­\ ü—ÿ¿Ü,žôòõvAä¥\~S¾Þ-~^ÈüƒÈìË?œá³”²ÖÊåÙ«…Ìü!´Qû¸t!¶ÑùåÙfñCóòä&óÖ)ÓÜŸÀ§VJ…æëD6NèæíÉ©v®UÁ4ÿ@²’ÁŠØl[¤ŒÍÒ…•ÂjÓÜf~›oIŒòÈçÀ¯BˆN7×ø 4íšô©Œ´œa ŸÚJeÂ?ÏþŠr|CJèVGÜÖÙ ¶ð-2›¨„ʵA[ßÜîh©FD¯p°<ÂM„ÉOµ²m²y#aãaFb1ž–'}ô"4¿Æ5yé„ýÂ8ß ­`”mAU63{ç\³B×ZkšoC)´å ä(¤Ôœ›/ð”Øa²[”1!fn²Íª_ÓíUÚAÔ:íÕí&¼]õãøRÙQ­:[|·€…°üezo8Œå.7 ã½iAñe½x9 ¸h÷Îê6ø ¸m@ ½99Å5c*%¡¦m­Qh,â6Ê7êË °î9La€$loO 6¹´uOFÁfœ4Hs¨`ù¸ëD•`†K&â­hmpͶæ.øáìWiu^!¦Ë4çýòùÀUâ%7éSD>&4^èZ5¯ PY‘oÓHðì«<ò&‘uÚz™’máWÉ¡•j(prþk™÷Áu&14[f„Í úˆðwŸFHÃ-Ǭ±mON‹m¡9; ôÛ¯5¶­Æ!dµ5­Q±óü8™1.«bŽ“•Þ¤] #:3;ã< …vÒN%ün‘„þ‚B5€Ÿ„AhxÃpxN Nºn~£9+Óî†öžúž`=TÎ>Vztµq‰Ã ˆG†@äÁÛ\Bœ§†¨¼/%käüZÒ&”:ФiFg8<ܹoÔð,,o÷ˆÈ–ü.àш…4 äŒl!¹Úù$µ«!‡ñös| &´ž‡>Eú•`~Õ'LèD_+y‰ÏG–P$_ÜE²ÅúuÏQÇ Õ$º†ê…|È» 3ȹ¡Åô{]AµÌUõæ`oA‚2K†cpÉ;v–ð†¡…™ì›g—ä ;l §ßn™ xü{†jsž{•6yý`\‚dØîM¥r4š’Í¿¦Í>Öm’æ`ÉçÓ¸ë†V? ö°ckÏq$˜ÙÌ¶Í V+éáè ×:ºvpb!êš°o;„@ä›ÙÎL“AJÒ£VgŒf}‚ÆÃÐ/±dˆHÞ!2B…ÅW‰  à†Ÿ˜ˆÇHûâ©ãíÝdí°­¬Ž!HBEÝ \¡@‹ð-Ä«9ÄuÞuqÒ “à}Œ WIqJMªàQy7­Íèa ¬`ŠÆqºJq;ÉLDïfTzZ‰UlʱÔÉVºKù$3qµ®ÀÆ4 LÔê$—-çUªÞuôc“Q4Ë*v™Œ‚æÐdP¯[=Y*íAme2¬ä°X¢Š’ü> ¤`®†n^*Ü @˜¶(7ÿ°Îçº\† Ô8T‘åâTi•ó·¾¶*ç âฑßÿ¹œ;,D´Övîè(xîQ‚z€‡ÈZÀU(ìi-qÁHŒŒ«PWi w¹,cäêÛ³‡ì0uæzV+ û±féÌs•NƒÊ‚šî ãb(þ$²°¡‘HÖ­wªù=~Bì&Ç‘…tvŒþ£oýžÑ7Œ~Á¾oÏšÑlØ/¾bßwì\Ëé?ž°~×3»ƒ“õWfËê/&Ñ5ÜH8N©ãÉè6‚ÌÇIýß©¨¿2[V1‰‚į*OÂqþHž¤ †sٓΙ‘¸·36¸eôWE“L)¤O·Cµâù‰Ñ?1ú£ß2úÍ„mè‡;Æ$ýtl3úVÌ~h3ˆŸP(Ùϱ_±LeQ?p2) °WN†ã´ª£j᪤ë &:°[…Ž„! ¦R{öCþT69iúüO9é[F¿ƒ‹lüq .ÎO<»1Ð8À ¨ËÍ~ñ 1ä[Gj>'ð{g½Õ+´„g&Hߎ3gŽÌM€ŠDú½Øxñ_‡ £Ÿ×F<\æÝØ’)ÕÉ /Ž™† DfNœ×pRáÁqñ8áÄx(Týþpr9 ™¹œqÏèÜtSy›~qɾ¿ÚŽÖRu©¡Ò9ãq:/Ú¬¬njUÀ¦À¦¶‚=’›Zõƒºt~€wŽÒöz&ýó”Ͻj|m[žÍçJ6êÕ O*BkbøŒR ·j…;ð7c+¹é±ü¾ª “]˜º0y8p³]Gy$ŠÌ|MÌöã–’0q4 E¤0àðJ'NPCpÆ5vD6:’ Iñ·y‰do½Šº¹ßàÉ\H%-5bœ=é¾¢I7´ÖàåSjqâ%û+b0^ <¼Ã0k|×õ]—4˜¨\ó>µ=កßÑwØ®C¹*ßg8ìâU,ë,odÎqçNÜBa`˜xÑϹîYÏNíØeéW˜š­u3O8çøüÛâì7?4¤ÛG%åä#]}ð»vÁTß\¨ ùÅû‡oU˜8> ]]y [¤»›mšQ«È¯UظwéVD` X„’}÷Ñ o€ù)ÚjSÛb_§ÙµöWÞÐyðcµçÎŽ4¦÷m9l-zpˆK tHFp©èÀÇüT‡„‰XexÈ"mtÃ=¸^ݵõ6›fÜ´A‰¦ßÑœ—®ÜyÑÀº½2Fåûu „î »%×~«Íq‡û¶àj‡^gó‹A”àÀ‡û²Žú8¹Jò¬·s÷‹\Èm5òá[c¶Ÿ¾÷‡Íaa „úælÔñ t•EAÎç͇ƒÄÀ›@ˆjnçI5×à™–pÁ :ÓØ%+Œ@}wévϱºøÁ³¡°I͈Ÿòø© {šw•vy ·ŒŸ¾~qPž¤7àxÏdÌpç§)!F›îÑóÒkàýB¦&î&ü*}=©Iî<&N• ¨÷õÖ Øaؤ)»àë«tˆq7ø)ÏðYŠÈù }ÓúQßêXíæz3íèA/6¦}ô!P¶¶ó Ñê)qモª-N‚áóMåôpA .ÐxIuŽ’èO3=ß •Ò÷%kð.×.In€j$2;H8º‡âsmÍm·XÚAß{ŸwÖÏ긷E» ðyquãèï”áƒÑ.tð“!Á]WèêoNÒfå¥[Oo>·­Š¢ÑCŸƒeÆ¿0•Àú¥ðãŠ)Ál“Ю¡º.͉&\ŠÌÉÇØH,¨à\픪7ƒ[÷£à¦žÝW,`cuâ„Ç)"p^°mÎ5??öfŸVÛž7MÊILȵC¬ò²j×wzњŊªô¢U‡àªXfHÝâQo¶Ì¨ž¶>ô„h&Zrn4›Ç~$5nq3x›ÉÌ%×ixúÊðÃÚrªhç_2,4‘|dº»Èe—IAœŽ”®ñ†—å@xöʨëü·KûѱvV–î§üY]Sù!Gë´ŠáC©a0 „ï5[F2ø´ÂßÌèŽÃÎZð:…íê7S”ÍðÕ£ŒSñ. d?š)<íÁ]BA‘Áð/Àú1©`ÇÙUÕc™´7aá“MS=©KÊŒƒ‚ê‘Àæ ÃS <-$êo•vß fic·“5Ü|¶b"µtsÁ|îùʰÉ«¨ñBÝÊÔðIÅñAçÌ»¼G¥5œTáû¬/}½Â^\=|æá“[Wãô,nºg1.ì©lhG2 )KÌ¿x…Dž4óò> stream xœµYËnÇÝF¾áf7 tÇ]]ýŒ‘…ØA!€"É [)ÅÔ‹—¶¬¿Ï©îž™êጤ80¼Ð¸Y]¯®ç¹of¤ƒ‘ÿÚ¿O_ž}þ(ñáútVŽtøÇüõãÙÛ3jÿcùá« ¹áÖ1E:\\Q£OiÌóÁ;Z‹?½<{<üùüa!;²Ãós|2åÄÃ÷rl˜<%7¼©ç.Óp‡Oã,{›‡gåªu>‡áöüÈ!Œ!òÀåjrÑøôÝÅßÏ1D{¸xxvñ‡ÇוÒE;|#̬' <¼(·‚5žòðjد¤ ŸäyøZŽcމ†M>)HÆ /«AÑYPé?TY&ç¤Ù‹âÅGKÞ‹#ÑÆ8ÂEûìlðÈoëÅ0Ðù‘Șѹá«"†9 ‡ŠD†ÿ‡“[|ûÔÌK1à ÃS1Éä€g¹çòðºÊ1pXÑ5˜J+÷¬õÖ7s¢O¾>U¥(Öx2žyéLˆÕ²ìDcö¾D'hO“aç‰FŸXDY¢&?žÛ“C˜8)¢þûM¥‚E¼?;„¾™àP^ Îøâ ŽñqøAQœôÕÛú ±¦ªdjòBBÉ›ê1‹Ó,‘T¸[ç¢8¡È›åž6GI”ØNyäà†w⎡†)ØÉ‚"£)ír¶M£àB¬œË[¸áÉ­¢_u"Dë­2Fkò3¾Ù1\Û¨)ÞU]BÞô½‡uã¼®Ë4í)­®VK9å¦Ê4†‡ËNŽÄÃKÞET‹KÔ˜Ï*si~B\ÌAª–`]¿dñÛëEà«)¾’>½jjH)'*'Žä¸ž;U…pR¥DžòìŠ;q›õc¶Ôùj'fjI)1¯\k¾3óAåÓSõ7|i]‰JzÞã"R= :-ìP¬¡î;Ô4v£J?÷«îšÛª!Ц~y}ó² 5ðà¿Ô±Î/õXw*9Ï>ž‡ûúâìÛ3iWæðè¯íãöz·Õõ…lju0f´Ñ :©ŽEr*Mâ§·×™gèZæwÕÊ¥(ͥ؞K·»+`}ñ™ßo'ìîê#~W&Ä(qg–]ô³¿‰+3šµ+WÎÆ•Ÿ?"Úˑ ª<^nÁ¿9ÕÔÿ‹ÜÊh©5LbFû¬tLÇyj¯Þ—Ç@{&„ÒHIš1uÇò äÊW©MÑ2¯ðr:*bÚ;.=$>1_Öc›êŒd1ÛÄI'–¤©Šq‚ºãªªãÚl£Tꌑ¤ËÜ(êæ!¹´Ìvj™Ä0¦·ÈAq~r>}Vï£Tkï[b8}*ýb‰CkBUª¥×äI«!õ»Œ@0D*^©%¢B‡‚϶©­ñHÅ̙لî¼_L89öôZÔ]c™d~‚Z2zÖwAŽíI<â#ªè¤¡gªã¦liT§jgÌWêރ廴'Êð §UŒR|#\?žqŽÔ‹Å‰%É() “q“SH«KЬ1«¿¿®¶ã}IÓhÓ¾×W‹Þ9ÔòùTÝ«nåœýt¯xJ?šfÝÌÄ_¨å&w¹‰þ0bŸiÑqÑ{¡$Y Fõ¸È¬.dFÃA‡·,}„*•ýÿ]Ø ŠŒ¹}ÇÍ~ò†7± ´8ñ±Q"Ÿ´Kü¹¹ Ö½‰î#á>yäßÂ/S´é?°lü¾ÿ 6ªþ#ÛüÇ{þ³ þö¡,kªSlP¦F¯vÕ.™.¸žUËáèëåú­—}ý³'Ûq? w,))êt½ª2Q±§T+ñXyy3ó¢ ¾.—ûŠÕË* ¢9”BÜ ÔÅæÅÚSÈ;ˆo¬ 9ý¼·•Ÿ½j¯;вm¦„HÔÅKù·”Úöý±Ð°6ËR==öÃÊÞeÛr‹|:D¬r† 9>ƒŒñE‹Œ­·¤—`¬7vsMÄ‹)5º+\7ã^- ?óÞ^Äbòéã{ŒÎÍÿ{áxn5仸¦Ò"'âG…3¯Ý)&sA˜¨áN›Y¶ýÚö³3çYÅKØrY” Ey¢þS ‹i"еoéˆö˜æ‹_œ¡Ÿ ÏpøîgQ4í«2ó$òÛ>AµÖâ“®G±÷c€u…r¹R½“#lP0²È)YKÛi 8#’›FB¾a3û²j‹a“¶\I’qž6\y¹½Èµu,'Lt’ÕóZ·­K@Qry/P{]V•y:O雎v£÷*h´©(»nây¾Ÿ*%wµu ̤j—î«©i>¿me…¥8íul}an6]”©{tÌÁĹWý$¼S–„Û›þÞ*UùÞô÷~\—Äþ‘ŽÖJÁË«ë·0gCÄ‚h°i¿êV㙾‹³~ÍS@ÂrW^Ÿ1ô»Ô‰°&vßôjÓÛ\æwµQÙÐã;EeÁ%«Ôà:Km 'ÅäT©s;¬·kYFY»qóÁÔz°n/}ÈUÕ¯æÙTÄ#͸Ô?‹Þž'¸wÕ"3b+ÑÇZäJ!–ÚwÈëµR½QÊ#O܈u.å©Ê‹Ì«E7˜‰&:cè÷tà 9Ú1%c’ª”’?!!²¤ëx˜³]bI*{>X ⺹XqD¡^¡Ÿ>—3¶fÞŠý©/k¼'v„'ÁÏ6ˆ£¬T ܨV -„ Ó §÷ç3bzÚK&¥Ùa¬†Oí /\A6 Ãö¸éÛEØO*m•jD©5¤V1ð{¿J¦@Я鉦òéã^Dþ‡q¡œ8¯Æ½©.­n¥ßªÕýªû\òÄ–^NI$C¯×¹Ìà̾¼Míc{„+@ÐÜêw>£Ý; JÅ{¾»§îJ\„/Å^ß/V¯¼JD‡ÕŒçÁL;½,hþ­)¢ÐÍõ4rä€P)¡0ðš2÷!ÝÒ /k˜[l.'¢ {ü¹þÄ —ï ü¼èú¤®ô ùw§†S%¶˜©3Mö5Ë™)¹¨aª7 Xw£µ ÷J¿‰“>h;$îa­ÃÆß *T(ZÕÔ¢Ô–ze÷K&jŠÒPD¢€ô3 ¬” E[µ RÍ+1t ‚ij±ï¼E­Ïïã}¢ƒûjÍ*À$sÃ9‹ì çLIáÏ;WÈßåç€j"/hWKfêãmb…q>]@µY†Ì½åÇ&õ;ÌÝNñºï*—Ëò>ó­~Áõ•§>í§ÝeåÓ êÏÆex»kï—iC×0ɱ=à”3³=¸½!a­ÒCël’­íæREòSSð‡£Í33-Àõþkßžý??lendstream endobj 279 0 obj 2642 endobj 285 0 obj <> stream xœÕ[K“$7æ@OÛ¶.6‡ÙÙÙ‡ñ><½¶™Ï—’ª*¥Ru÷¬w ˆ=Lmµ”™JåãË”êÛåNпò÷æåů>z÷ìp‘^ïäîãùé_ß^ÈòQ†ï~wE3ÌNÊ1Z+wWO/d/µ½ó;âñ÷êåŗ×{0óÆ =Ü_âQK/ÃðöúÅå^;7ª`†¿Ók%ƒq8`´>H‡[z/¬V›áŽÆû3?MT”wx{á*Ä*¯èï´¾[Ù€oð¨­T&üóê/´Ç×£„u¤U]=Á >¥Á&*A$”ƒ¶~¸{›$5"zE €tF…`"˜ïµ²crø-ÍãÁ1 ŸÄ“>z†Ÿ“L^:a°\Ì£U)°!ÚV+eË`딞Ð7Zk†iV%<é†(G!¥æ¤³€Ú…†}®±x[„2&Äšö<ñî6óqÁæµ'EMk×Xû“e•­‘Ôúû«‹Ï.$L!ì~¸€mø1Ù†qPîîå…UJÒÎo¾¹øbÓÞ”tG Îê1øbpyÝÒã†ç‹ÁÑ¢¢#-ðÒÄÑYHœÌJ¬exšTä•‹ümj qöòU*¼6j¸¡VúÌ ø1D?‰`ŒJÆºØÆ‹ÌD:p¹N² ýDÐi%‡g™öQ%3ÎCn7ñOïÇ˽õr„÷ Ÿ$þ^Äj 84U)P“Ða²ð+²Bc…õyt«nÚ'?~œ—,Ý¢SS-ùù²²2Bªâ‰“.ëå*y[F{ù¡T˜ÈØ »VÊÙ0IÙ¬"¶Øðïs°JÞÁÕ\‚€tÆù‰ÆëÉ*´/ÃóT hÊz-bVs´•–iG£š´üÕf/ÛD³AívŠÑ¸P™ú›ËI¨‹ àÃhbJ‡Îà¹V.Â>uI4åmy`ROÙIº6ªP[“Ü—A³§™ƒ2¾o%é [›ž˜,5Ü$NTqk]ÃÒà.&±²º-,—û}©5÷ùËÃݳ͞^C»´ô€]a¡;ÐQÈ=½±ãÜ (¥m„yÏÌÒÂÞ`o=tjþ'­&Pijb*`´jÊ%á9 º[âY¯"àÉL)]¶ÙP\u¯5‚„°«þE kgs„¶BëlmXù Ppäú6*œ><¾¼úz- ò)BfËßQ˜T¯Íæd§WKè26[Û ºZDèó@Á#Õ-Xm5g»d£v³7’ù}ÕX,ïyÚ°éqoìd;dð‰JˆFîÍÚÔS!ÊAêºca”ß*iP²áÕûÌ­çØI*̨´bm¯VïëVú“ÔɱçÛ¶ÑŒW*ñ€wi•,§X¨ˆO§s ›V o¶ WvÃsž0Zm-¬RfY€ôä["tÅnn»Ô_WЮ{U+ø°JæHL_ÇxB6ŸÂ‚{çðAéN¨H_·äCMãÉK´¥„[3üíRão°ùôa›¿±ÈMV&cT3É‚§1||úÄà }È $åL7c Þô˜¡r“) Lïxª0€X6 ?e¯ùv3+(TœHng6ß±lÄ×jo—vÓ´3.A ¾݉ïÏ™Œ”ܘ†?Éd¼nrÝ‘‘¦ZÙ:Jd™&ÊóǬ·¸e¶œÑ #Ι¾ac¦å›Ø„&zK‡Ÿ¶­OÌr%õ§Vã¼huVž  ä)[=+¾”7ùÒV.Ê,âôÆœ“Ѐ¨U8á+/ÆV>fêŽ)7­²õÂ*0‘ýWçmó7R‹Gg£›äéTMÓW8Êì¯*sm£[þXŽ1¯³®(`n1ge]LÅÚlè¹QZ0ŸJG¨tB©üeQÆhÏ+—ÉU9ëX‹ÂÍô¦Œ–ö}ƒ L8šci%¤3$næ/ BXp¾‡*Ý¥6©“Ëv×ZKv·unOÆý¬Yì䛞…ö“x5DÚ²î-ɘ8u¼_—ô~c*}Ì!-}Dy »DÚ.l‘­ʆÝðÖÀÈ"]×›­Sº´%A hzÙúQ¤Ãe}†sS§lÃê­Š.}«C5(òÈÚãÖ&y›å@µ=¹_‹¿ ¹ßd™LÉò© C'ªŸ²úBm`«‚÷ ÇÚ˜Ï) "¹pmN <Þ°Ýýýûꎿ/pß™Í:òÀ-hƒ~LÉÐzUó.4ø9½rÓØÆÊBíT’oÛõ™%ù8X.ü•{ÁšyìÃÞéͱ{û·ð´RôAÔŽ>k ^æ[xj©n '1>»ø…ñ&úendstream endobj 286 0 obj 3798 endobj 291 0 obj <> stream xœÅZKs·ÎyË¿ §9c- tãi—Iœ¸"ËU±Ì\"ë`‰z$‘Ę”Kv~}¾æ™Ùå’\:ÄbÐ~ üÔhe-ÿºÿŸ¾Þ}ö0róâz—§Ó|3Œþ³ûigº?t·¼ùÓ¹|acTrÎ4çÏw¦[£JRãcRɇæüõîQûýÙÄ‚ódÛ_Ï0d"Ší_Ë´õšÛíÙ{EѶÿi2ÑéÔ^cµŽ!“Úg2¯ÑŽm{Õ­©ý6oCÁcúG¬§“çö 1Ǿý9ÉW/x…!;C6>>¿/òõH³â$Ç:¿À¾•Å6‘öØ‚¼ŠìB{õ6³ju $'{›Ûâ{&§¢6íåKP±ól2{&¤ cû{á)¯-΋ï‚ÒL #{;ˆÊu‹ƒ÷¾½^9gÛod[£9@8²sÒÆp½ºfpŸ—ã¦gÊÚ˜ºÕY7#OWÏÊ s9{Tv¼º¿«Y­Î(býËùî»-ÄæÝrWÅ8¬‡p›×;‚U|?ój÷ýªÁ%·dpÄN6÷6(çc±·bX£wPË`L/dh†æ~β(Z¹Ê«mаŸgEº>˜–ÇÕjÜÃŒ³ŸŸí-ˆ{— Î",³Uuk+Òo*zµªÆaEå-dešûbƒZ%Û8kœõõŽg s«8fi鿦µQB0p?¢¥…l£QÁb†X9L<ß±ò £›¯oõýËÍšb'ÚV»ÈPÉ^°7>mL³OZYcMq¾Úé²Ïæš„…?TÎúKŽ6Øúå¾ †mòr(Øš=Ž”Œ¦ò•ÆWÎxãÊ7ÓCXõú{Ýð9§cÏS‰{>/²äTÐްÄRðѬðÄ Û¿Wÿ® W¸‚…ÃïÌÕgS r‚ưÞè(Aò.jæ@a‹šÍ)î=Ÿäé7Ñó-¸šë9G´­UBŽõ´TUØ@J—ØÁ™TDPÍaY0zë[:˜¶œ‡ÙˆLû —‘¬„hr6ú¾^@Þ,•nz;œžœ‘²4cø`wþ‡G9øD÷äŽc)oÍÁ¶½ÎiÀi¤z[g¦×9ÆôgY‰ ܹ’Ô»„uû!2[$¡U®¿WxBÐ>9Û£¢°ÚØÉvoe»äÈ´ïÎð;Ÿ&¿OIçÝ`-ÝgHÕg—1×þw¤u9i" 9Dôarˆë³Î*5OK0«tâÑÝå|¤ñë¢ÃäµqS°Š2Ò3#þçq¤\òí£ã^f¼ñniÎáAÐ[ð³/`Í(QÁ 8F*$Ò­4-¥°JóD8Mx›&I>î,ËS)Ü‹=ÕÅÔEk«Ý¢ Iåë”qÊt°‹áàf6„ÐnnC~µ,Û#I­âp£>‹ I½¼Á†NÓ/á,:¾nU\¬p•Ppšru¢¼Ú;¤Cc(( ¹´’fá¼4ä³/s,Š.¦•ä’”ö´©ÚÝšþÀc‚B&Ÿ|zŠ/¬öp¡Ž¯‹K;Ž“nÃ3Î$a4ƒë÷¨+ÿƒÈѺ6ˆy‘y¨Ò ‹%`¡a¦åÒü@9Fº¥v>¼{ÊyR”Ã7)'Iàæºá­ºÑ!ÝX—ÊŒ#iDY|£n>È}ºyÚ;Žß¨›6èÆnÓ †¹©ßTÜuŸy=å çÒƒÁdÆC\LÒ&âãÆ ;‹|ŒîÜA©)Æ!|—’<ðà@¥jÛ=>Ù7Q1HÞnq·®Ž={Ô$‘f9å]z¹RAäíR*,žY×Ñ[`¢q‹º‚­ù€‚jêwª]6pR–F¡ß® g¦m¸™­-:ÞïÄÁ ÊX©°eHwãêTsðn Äéó/ JQ»G½©ôßK#êæÒ×6úHÿ\yrï£ Z®IVnŒ§|“ôŠ|¬ø üÕk¤ š2)Ý)?ÖT¶Ûkêcµ†§W {²„: åÀ-ÝÁ¿ 3>7òJ )‰½]{5º©#ceõ—,ºœX “Qذž}.³Z‚³NZG˜CòŽM¦r„®íé¤ó–‰{mxxÿåŠý$¹Cí5%ôQQA<‹Æ@¹j0Ü¡Ë>Àw—àÈû|óý±ÆÐ”°M#Û’ÿDÆ.Æ$»,è·ˆ~j/G.YRó®ãÊZ×ÁìNK·nÉ®hÌ«è‡ñ`zIzPVˆƒŒ›wÀlJu¯u­(†]˜´cë«G»(„`ÆOò•¯Fí"±›m0žK¹¢#àl(­œ¥0{Ý»@âÜ{ÜázÅéjw¨››Üä Û›Z¢Á<ß+39ô´ÿ,I׸8Ëÿ–Œ  ("U3ä\Zî˜"W; ˜ÒÛ>ž_æ:fÉ/Ãüò(#H«¹Í֭ω:Žù¥P„ êY°$¯)¤ë_Í–73…‚°~5¡ÎÔ›Kiü m“&ÚµKŽÛ3h/%Ò½S  «&FþïÕ¢_úÈ<ñ£kµÓÔ±·ÜýñÍó8±/OÌl÷#—qƒ»µŒ>Ú)N4/Œö3ÿ§„¡N~(D¿Â‘£¦‰µ£Pøó 4Œ R‹F·‚†ýI4ŒÍrAèãaœ…Fqoã,UxÖ É¡ˆ›¤b`c R5öÍÝêüØIÝÜß!í8¸pCòÂËë2QÁ 3ÇCÍÙõ²±©TI‘ȺÒËžcüÀ a!‹â{uMœ#x·‡ûÉ'Ÿžê ª‘— âñb1ô ¶‰— ty9ÚŠx9DwXU%ñW§ Î”-5óŸéʽ¡¨‚çfoå_(ßÔ'/³Ék²¹wÎÂà¡ uG#—ò2 õ²É§Wg}7.—º>æÙ?çœ& ý®-¡ ˆ¡ÀÄf^k;YQ½«œ¼È,óù‘eŽXZŸŸÉE;>¢}®èº7…+®½¼´Ö½¼8_ {¸RÆþ5@}ÏÖ?>šOÞ¬ÊtQ`TIàçP±ç{4Û=g0œpŒòv²Ì>†‹‹­ÐBEßUà12‹Ä«·¢Ã’:¸ÕË¡bùìaE‘„c 2d¦ÚÌ^yLß(ŽOm—0ô+Ù0J ºùÍãž{ ¬öȨXø äfxGˆ0W¬Û}Rá¾5’²‡Áù‰ê»Í± ‚ð—õF&¨T¾8 ¾’Œú‡»dòÅÆ4ï]¯¼©Y´9òAE2ÿß³Iê˜ê†¯Æá¯ãðÅl- w/ˬ‡/‡áb䨣ÓbAñùºÇ;áÙÛ^(S½íígnñ¶7ˆ ¹ÁÖ!¦d³ê"pá:ø»ÝÿhŽ£endstream endobj 292 0 obj 2666 endobj 297 0 obj <> stream xœ½[Ks·¾oåä´¥Ó0%Bx?ùàT'±\‰dúd§T"EI¬¢¼KI”UòoO7043ë¡8Lù°c°»î¯_xè—5gbÍñ¿þ÷äbõà©WëWÛU^‹õwÃ×W¿¬Dÿ?¼'_ÿå9ôZŒ룗+ÑÓ ¥˜³nm}`~.V?u?ÂdN[®ºð©„¾û>;8TÖ2éu÷#Ká ݨ¹w^ˆÐâ87‚¥» Ò;œßG)ÒY}äÒ‡RÞà'Œ)Û½+Ÿ„à>•Rûÿýõ±TÉSµ:z|Ä:HŽ"¤e^×m®âJ5N¢°:-½×&?TÒ0ÏE÷ rÂ,ÚÁŒ‘ĸ¸<á‚ã¾û#®É Ë5¨ |¨•„iP¶QRšžØX©»Ha™1ºû)@+îÐ6(9p!¨¬÷¾;Œä ”7ý¢´ö¡–=0nNÓ<Ö›¤{4TÖ]î/ ]*ÑÍúèhõd%Àüúà |ñèÚ‚q×+#¥b #ç«V0âäNO¿-\Fsæ)S@  I¸g l¤6~BˆÊH¡ÊŒÊj¦5•\!ÍV¢d26üxl8&ìÚ²S)4Nˆ’Ÿl×úœŒoÉ8|¡Œ’3Bò†ŒŸ&rçD÷~jf¤·„ú]ú@=&ãt1Tú Š‘àõºû7¾$b(ëGòýj‚,8¸=¤„O…dpŸÁ¼p*LCí ÝŽØ3- ’>xJ¬}Ý[ÛÊ ¿gDï?—ñ= æµïjLõãÎ0mˆ‚‘),¢ üÉ{µWÁã[)8,¾V9P MP‚¨‡,æ–øéÀ´U Ù1­zßEÞEŽ'"󌌟ñ¯æ(ÞëTÙÁT¸ç1½Å‘…ñ[âš÷ŒÜ;3 ã?wä?ä<`rÐÆñÏ%®÷XaБÚ%+™õ¶Z2â‘É.äÖƒÙýv ¸îMb ~ܤºû}ÑrBn†êM9EÍ IÒ3×= r@ŠÉ)Ÿ•)Ÿ·ÚE’ýô\NN?!eCHN -04Ó·æMýÈU]á~¿ ÎQ¹”­#IC˜[I‘é–‘ä±7µkhÀÀ_uò -qˆ«Ö:Sž•‹": ZÖù©²LiN&€ SQ$®rÈÊîëÒ Ü#÷ˆŒðݬþ;  ¯aªÃZÅ$™ÜBa ­ ”߈ñOäo ­s9ÄS¼¿Ü<×e}++¹ÚS%´/Žzjd UßZˆjѵu94 ŠB&¿uô­¦·îû ×ÞL„Â;2NÈyÉ™#ñªäŠÍ+´yßbÚDÈUë4¢r:ºQ߈ó‚$#Táê+К!Oý!2-Óè`qïwg0NÔµX¢Ñ6u‚…¥n»ÆeDœ÷ìVh$jüª Ó»Ù‚Vd ËöЊۻ º ´6h½mgmƒ‚2 =‘­VöHd#WЄ:n¬â¸‘¿ØAf ,ìä݅Ͷƒ&>nØCL‰Í`´Ìï¯hÅÊ;ØP$4´cštï‘)˜e 0 «û¿ÇÄžd3šµ^µ«‰ôÏ[ˆš°‹§²¨Ã@óòvñ4 TáÚC”Q‰,ЀB®[¢˜Î`ÿÍŒêãé3eÞꇅUúì,ðäž,fÀÃEÚU""z Êg@Å™Ðäð1̳XuÏY¹ ¼G¤ãl-!–/ñ`Xn\·G‘Ú1¯,~‰£ž ‘IhÇ•î^G bÑwÏ Ä8j}$ŠäÊ‚kn ÿ)ÇÈTâÙÁp"Ofï9ãÙö¶ŸÇ)Jü&­s5¶À8e¢¶^P+èB΋¼çÄ"Û${8ÕOÃ2MÖö;ÛÓqÄ&ô|œR_ìl¦òaþت¨1É0Uþr|± Ò[åMÇ!Žüýò@:X”ì>Ägë£þ÷8 ²PW PbZ­û[ *ÿ>:.õ$ƒ¯¨Þ.Þ8}%RôêÅ‹ƒ½¾‘ ízë+(%]·HØâ, câ0/ýPàI'nâ’x[äµqQo¡‚õpF A[GšÔ1Ág{¼¨£,¿òŽÞh–öÕ<yº¥Ñàë[p üÎU$Ô8g£žrž„H'¦åªrårõõ/a\È×;sB4‚‡~I×ZÑ•+§×ħO{ÅÀGÚd)I£w·¢xîö.îZBÞ$3pßìZrdÕÔÍ)=Õx›®õ‚·ûb(š²Òs¼Ñ“׬eesxI Q(*˹t(ÇKaS1ñ‡õHCÐ:VS¯üNÕ‚„ hÇ«Ãø à’„ZWâžeyèÌPðyàÌ9©5JƒjsœÂ’‹XpPJYåïc‚œ¹[÷Q¤c{°¬«Zœý.‚ e[nõqè­œõ-8QâvЕ¤ªãXà6GÛÒr¤¤BþQ’XQ¦TØn÷֔Ȼ+9ÌK©}6ó$Kä<ÛÑ N] æV®¯ŽþôÓHO—7€ñ!tòÇd˜î¤HðôÔ¶Ú"n õ«ò9ˆ6»9H„xÒŸÚêYÕ½ŸZVu·o¹ê'RK#%õr×%¢€ÖÀ¶JÃQ–Fµ×ñ*ˆÛæUxè†}×y)gåóMé^KO;–røÉ­ž/Ç»qå>VFð¨a*ÔvÖ3Äšs˜^Q“FæÃ’®Ë§(«ceôdwÓµÓ‡UB r5U sØ´g;ù°E:'†“©xØ’GÈáŽtðcÈ£„½1Ó¾:Ü)De¤PeF Y* ¯9©ÄTà•Ùû†¾?áù´QÓZúúd;qðXròÍ¿ßÒG6!ç¦ô7?‘,@TøUïò0¾¡R°I,s®,áW…Ù`‰eÀ7Kܬ9ô_ÖDŸ¨N`%æîZ=W¤Ñ®l*IXÁ,y6¹ÄBQ*937z Ÿ`ÊŒõ_Ñ—{±¦4b¯ùo3Š+»‹:º8lŸÅ ¹Ü^Q%ÛUx ï Ë¤x!—\/ºGì1õƒ§ôEÎkb«K2þ¡¼¥ïþhÐÒ«z“]€û,1¿üâ ÔiàŠ%+dœpØÂà"—˘Ûá…iŸ:Ñ·½düxÂàùŠM¾ªÇ6Ñ>ô5M™÷F¼~¶*ö©ÌêkŸ5ª5ñÙÈ¥òYQÜW[h6yÖºI“Mh-Ú”à‰ZtFl6ò쉖ŸæÆrdÖ†¦ÊmcWýó/˜ ~ªvy ?ŠºÑ§ÑNo’¯†šðŒ>l¸yNü6ÏøhL<$¬tZ:ÕˆS͆÷a;Wã>;OJG×0Ïl+—u¸Ê Y áŠ\z¡pUè}yD {Btù‘ŒCÆiAmþ/2þ´¥‰vû+¡ÿù~4ÒF4ÿØâ Îm‡áŽ9U¿ýDÄзÁ_O|Ó7'´“ùØÒGšÞ¦ úu‚~μŸöËŸÓiÇïÏÍw:¢«Kó»²âÕëë:Ó h‡5Ít7JuWVˆˆì*ÿ ¬y³-8nzèf;ì;n˜8Ù“øØW¬=n±]<åuì@õÉê0mØendstream endobj 298 0 obj 2968 endobj 304 0 obj <> stream xœÕ\Ý“·ÏóUþ‚’ù"“oþtJ3ôFÊ!#7§çG2Ó{?åÂÆú0ë6§/¾ß~{|‚›9cAoßã§¿ýsÖV¨íóãeí^o¿£aÞˆ°½Bjá—2lŸÐ¸0R¥·—™Þ…í×qp‡Dzð>Xµ}EŸ8¦ìöMü- 'xŸÊHÐþ‡Ó¿Ð,?5¨@Ç:=Ã#|MÄ:€°¸ØÁ+ã¶—¯#«ZtdOãâ:àæ' Ìà…ÜÞ§™¸‹v¸c$Áe\dOºà„ßþxrÒ çÅyn pZÛ ¨L&vÖÚíQØÁ½ý’(”–B9­„”ŠSsO"9BŽLiíC¦Žº9›yº|’N”Jg‚ÏŽ^žÍó8«ìŒ$ÖÏNIÄ‚ßür„r8´Eán^içô€‚G^}{¤QÉHœðôðó#ä Òè`Ò¬iÄ*\YÅY3t»€õ-ÀJ¡ fc¼Ë€=O’aüö"}+PCÔ©g¶Û2’çŒäÉIâð'Œ\°ñ»mò{4¬ü/ 7Ïü;Óþ%¾*yŸè‡%Ãñû‚Ñð¹Wì{X"·R”®5ùü[%ï­/¹ÐØùrî"{yÒY§‘±Œyý:´UhÙU†ª0v\¥yÚ¨TùA‰l§Ÿ1Á=`ûŽßgã_±qžp~ÃÆvh>eã_°qÎCa>{z‹I§äT‘;KF¡Øø%MüFÏ×ið¯<ª±Ö~©kdÙWvœŠ@ Á1>@ [ÿ>|PÛΧ%f>>¥ôÅüŨA*•„^bPèS²È¹>™âb’/|ðFËœå£3¹Í˜h.“úPºèÒ]e@9Iž±UFÌ¡Ý_q¾$CàÓ4Õtàüv™,ûŠ`ˆÂ ³£¾nóU"ØÒøè9ªØüÝCœ¥·±-뤎{šÝ㜔Yý‰Tš4¾9ÁdLk,]£¶¯ºÌk…E¸òÛ_æ–-£å–þl$æšVpSŒ} p(SRôü §9£Å1†°²ø,"”"Z;¼¤óP‹3©!p1^%1¢SæJ‡öŽ|.µ—&ØÄS.í0˜ 7$»àâ2íN÷ û²0‚†ÐÁ©Ñ¼;¦*Í€§ôÝY1xŸ\‘UÊQD‰ëW `â'"7¯_—ccÝKÄE^f ¥!èfÈk)UîòëñP :W¨½Ž”ך— {›¦—¸ Paç]eÓÓŠg#ãkzŒ$Âé XڼڰȇÒHü.A$Õí#v»±,î‰â(‚x¾‹BÑ$/³§™¹ŸgŸý†ùl¶ ÝÌ&ÁF&¨g~J¬WÎ6b:¤êF þcÛ-!sÎX|Ú>[âÅ tv/i¹€J÷¹>Jë1„Ðù˜âjÕØFâ̳´ ®‹‘´¸Õ6º::Rº«ì3+ìó*mC—‘kPŒ’’]³ØWTËl¨øCMd Œê2V:‹H ë©A>FODWã2 röî›<µô¤Üß°¥_ÌŠX‰P9úvC‹a=Ÿª…SG^#È^<ï]B»ág ª•ÃòªÍ8ÁóÊä¢Pý½¦%ñºÑÐéCQÒ\ãZUž˜T¢ï‰KÓÃü²rŠˆãþ£çÞúY 1NwÄ:gOˆ5þ‰¯ü¦´ˆ$À¾Ç½W1ÝÐÓ³”Ÿ€[º•ñ@vá&³Œ/²J0ƒ@¥EXtêX^‰S‘ñ‘Ã×`Ô»¡Ì¯8ó œÔ+[çÓœÝäo%°Ò«é—òÍiHQÿ\å· ®xz#%óàÓó(|_g):c®ÿÏcƒYð¿eÞŸp˜Î—ß”è Oi TSj38ÐÈ¿::ýèûÔ³‘wŽó„ržü,†µBW t°ä•è\‚ 1xRÜO(¬žþÁhoS;Wxgµtã;çljÿJ×x1“Ç~ t‹¡V%Œé5FV9r}?JoÂaÁ´ÜI”žÖ(ÎK›`kkŽÚ"s±ÿ~éL4g¹€ñ¾Ê†i4˜ôæ€5gÃM’râë,Ë»A¬øžžy<Éë¥Çd¢BÙJÁw̲«À” ÷ÎCLÊŠ^†Æ\PNÍŒxï3çWH®ìÆ¡9!±Ý„¾Íí~pAti–ÀÍ ¢ÄËHôàø„+[¨˜òô:*Ä””®bJÎÔ‰¶( «WrøQSM¾1b{?gÇ×ãˆoÀ" iq ¾cÙˆèÅxqÿм=ù7-C/ŸOys¯+ÓÈ\(/™Òlåe•‹¤NGl‡ö;äméƒ/¿p¥y–Ü.Œá<ˆ ë× rùÐψW,“¦ÊbÃNç­xwS"WÓWZÛCáÆxÓW¤QÆìÅ@:§”•£vûhö-œ××äQ(”£Ê©t6T2à5~VùZV“¯€²­¬yµ˜Æd¯æý>^:@NKCŒëô ÑØdˆRpÒ5D?X%è](Ÿ²De&`O·7M ·§©7¸ši ‹›û99óê´¾+—©Ñy ëëðœ÷‘Äþ"ef=7„ÏÈЪեÓÞx¬جºVx˜ÔµkV˜š2ËuTîÍ@aþ¢¯ÍnŽ}¾£aµ“6ªp*”»ö³4óm^C±èùªÞ†ðêË¢6ÆL g ÎV6½Dp¬õ°ÔITÍóO%Lì$ª†0ΘÃ2³…cM¶Ò´ý*:Ã7ƒ`®—D–1` ¾J_ò:(<ÂÓæNO¼ âÜ*ô¢¢‚Xd꟒øÄ‹ÔÅŠŽ]2åÖ3H¨Üj †áô[ å½-ò4–*U Vž3_ÇÛÔ‡Ÿç˧^¬+GÌè˜, “naÕÌË\&Gß‘F‹çûþ ¥³¿7ƒ@|ûïÖÙhQ¡YÚÎm¨EŠýеøêì4祽)j;—H®%`ºoêt¡p-)£úC_Þð%Ïr¯aÙ1"{+lýZ–Ùœ·ZVJ5´rà\Ëà$&ñXçŒ6-žÚí=Û gP-^¹\ÜZÜ¢=z¤-+²Û»øBj ì%6YP£±iƒz–:4ê'¸Ç£ø; 0,½Ú*Ëïj¥5¿oH¯“²ºkCMvóhz0”¨›|FLÁëèç~¼%·`=4_\ ÞÑ;Ã5õ^¯]©Ý NßRkjÇYzþUòxoµc"Ô5c$f˜€‹9ˆ;þP@~%!)¥o²DÙp]Ó¯×^@@+ßzÑò¯ Ô^UÝên X/ä5ApN b‹%Ô{ÂaÀŠNA†€ÊâcÜåiVT~@h;+½Zï|³D—~Ь€ù~Î,D‘Y,¸Cìï'‹[—¦^X-L»Èzéò~0€éÚHý;R:ímOa~Ü·Ž ¼ÁÏ+ÿP·X˕ѥè½HPpó‹•=°0KÉzX ™ [‡úàKTHåäÿ*v)æ ]°¶B8ÄH#²¯˜xknAUÙkø–ÕfûF½²oß9gm<:LÍfÿÆR¢»è»¨½mÝ1‘9˜‡5÷¢Í皸t“ÑYÁÑcRKQ“AJÏws”¢Ï Ë”Lj§}?™ìÕ“Sé[ëI+BÕ½I.BbfÚÁ‹åUÉÖzŽ»»©TíѬsGh½+Á’ô{Eµ«´^ÊU![²èºËJ7’÷(ЉŠÂ: ‹bÙ9L{ä?V©ƒòŸ¦$¢q‘‡-ïZª¦ QXt»½‚d“Í=šÍÓÚi0=à.Xݾ®Æßxe»žÀcì±ûykýA&·h‚ÕѥΠ]¾‡Îÿ‡®€zM}W eKì¦eoüK¯u[GMWÐe‹\ýL¨! ÎÖu\.¸‚/ŠlÅR(è¢ØÓL©Àœ¤ô œ‚&ôã›XéÕs|Ñ’šMÁ5ž6æfÓî7‡ûýä€î*JhÔIÞ;oä8±]–^Qf•Ö]vÌÿLÍY~ÙtíJWöøôÓXj¡¡/Þ^ñ®ì#ö}Õ9æ/÷’ôzý4(ϪFlë6‰ºJºÞþõøô„$ã+ÿ¢Ñw“Õ¢Qǧ© šmb4ææˆoAP‹×U§î¨$ô¾•wÌÖÖH`yÜd¼&þFYú7ìZt¯ÂK|EÊ£Ë*#–:¥aj²°ˆö6íNñQd)ý„ÉñÑÄ’’¶i˜zPjx‹¦I¥\ ƒF#ßHÚ[†B·•óÂI˜ªnN0@›Vsbè%­£þ®‚Õ_G—%‚0à ³ÂVÆÝýÉsŸ Q7Bø¹ð& zëÍjðÏê·hѱÙΟN¨Å8»ã´u©§ó[ƒ=¦-°ûß ìŸâ6Acíª«%mnËüî’n½(öäbx|ÆÑü÷£Ðåá‡d¿GÖ~1ؾ*Š¥¡Q\½ƒLWE󥫰'výUÉùÖendstream endobj 305 0 obj 4206 endobj 310 0 obj <> stream xœÅZKs·Îy+¿À§©œfc/Œ÷Ã.òp\ñ£Ê–×'Û•¢HŠRBR4IYRRöoÏ×ÀÌ ±;+iÉ¥]<,Øìúñu£ÑËŸ:)T'égø<¾X|ø(šîìf‘É꾘VÿYü´PÃ/r`ïþº& Û)%’sª[?Y¨_#‚I$|®/ß÷ß.W8,X/Mÿz‰¥QAÅþŒül¹2Þ mÿ‘µŠN¦þÜ2†¨TêO‰.’ÎØþšøƒ€äWy<¨G`×1%ìrIKÐŒï_Ô%c8ÇÒ8¥müqý9Ùã¹=ZaYµ>_³MZÒÚ‹h\è¯o³¦V¦ ÉhguŒ6áð•ÑND©ú¿$N±'fl²z*¤ cÿé”—æBެÒ8†övFk70;¯mB^8gû/ˆVÉ@¾¡“TÊð­‹‚ÆÇûUf70Þ JYS»÷$x}ZÎñÑÛ³£FÛ l?©r\Uf#¹õÓõâ›…b÷rl‘±a=œÛ],œÖF(7QÎßîÄ[rsxCÜERºó6çcÁ[–‰Ñ;ÄeÓ-­“݋쌖ëÌmƒ€NKààf*·¨{èJýh¹²Æ ïR¿^F%\,¸œ6cGU±Ër´´ÒqÎ+3 æäÃ(¼%vŸšØ4 J /Z¥¤H HHºìEÙ-¬Ôn]Jô,§•F‰@‹O¢»ãOqþ ï&ûÅB'Š˜é¼ò¶ge œ!t \2Îr)½°€ŠDe‘–)z7i¦ä–CçtÔÉe3±@<ˤ“*‡(™„fÞEöéÞ©`‚FÇÎz¸æäT`x$,­R°¶Spt â†¢³þ÷‚ÒGêný¼{¨q„Þ#ÔwÐj3Ô+-QÑüiéPï•Ñû†Z¿-Ô‡HiµÙ#ÐoÕéwÉé;hµèÜDìÓÞÏß1c{oB†vëem`Ÿ–æFY훞´í±¨—hrçÁ…#¢V©x¬ÿ;ÝN[êà¾övrê'¹¸P¯j£v\[*%˜ˆHA, ]M¯‚É?e/w>Ôd9œá:ôËtÕáÎFÍH™‰r‡^uȱÆyûæÚqy4)<ž#CðRUÃËæ\B†ž¼ô‚ž–6úÙshée¹Oò9ŠM§¥ÖÁ¤9üa‰GÙ$¸‰¼-Œ“A~ÖúÞá×D­™÷—+­5‚äßîD4W½Ö¨ãѦ“·“ä†ñŒ³q':=2?˜¾œ±³ëÈ¥9{.ÆZ¨zë/ë?£w\1+þâP«-ì-ÍÞ77ËávÀåBÓ)×ݹÔEù NëÒ ZWìT&¡‡ÈvÔ£J½¬Ë³º<¯ËÓi9 3¨^QÏÆÙ;1E¼©)ÓÀ`~JÐò·³ íÑøÄßr4fÂmIóÊgò ôž#Ú-ꨤ\ÝÓnÚyù|Ø0µGx.‚\Dši~§ÿç2?F-¨·åpë"?ä¦P NØ!|»?ú0›ç9)^‹¡±wÜ\Ç’Ò82PÆm@²Dàt ì†î íŒ/{yUS–û®ÅÆph Í«„ÎÅ-¤Eñ²©€ëëŠßç›HÍÔ×uÉ ü¼R/ëRT†§uàÈšo PXx5ú/érÿEÝңϦ!²Ó—éÑ80)Ô„+ 0¹D8ÓHð“y ‡rªÓDa\£ '¼b;‘N-ƒµ±‡Þ9ós ®QÛDƒÎÜú—.ËÜtæ1ú £cíÐù¢B‘ª,׌å£1ú%[—Šl•4¡9ö”¶×¨H,Q ´ªOáxÁ$3úù¶y}\v¤‰ó׌ü|‡¯·•Üâ¿”D½ú_ei^8:Sx§X6‚9Æ÷š@ðAê^G¤­ÇËWY²®„üŠÅç3ññ(ðx3úG•þÛ'³6½ÁmW^ ¯™í$¥üal׸[‹åwDl¦Ÿmc-ÓOÙºTÌ%§Là!]•Íˉ,û%±‚SÛ’ÈT].©-Ésü–±Ì¸i.™ÇãÛìÊTÎÃñt;âG]µª9Ä~ü¤–‡?1¾.¥~øåãºûÐ:±Á¯j‹<4¸ ­$”©”.î÷À+yËåw´áe­ÿ¥ò¼Áq“OW†&ÍU º|ƒÃ=©“æhÔ©ªd¿ýÊl\o!¬Ð9Âøe7sKñŠÈ}XÜÖïBÜÞN¬þiܪôáÑÑ«U'f©¨š£25{Ç6.Ò”‹íDRæ@áðÙ”ŽŸw¸‡ãv»plÁû|¼wÝ\)ÊѸ­’ßÞÿbôŸÛÖcS³qË]Ål­çåmYâãwij„šÀš†‚¤ÒaÊ‘²‘úœ‹ãŽ k&.[·ÑíŽØ½Ú•œoÄL©{Ïî®)MS›u:¡ãYGRö@YWæÖ®/·Ý9vÄm  j®‹œcŸO—]·õ‰pÏpM‘hhÛ좯™-Ï.M¯·e—"¼üæÙu½íþ쵫íSRÅ&2ÏO>ÿ1§úr|q+IïTÅ^Ü#eÿ¯= ÍiˆŽÏcÑ‹aþ: Hì´œìøfñÃâæ endstream endobj 311 0 obj 2301 endobj 315 0 obj <> stream xœÕËŽ·ñ>0{NŸz -Íâ›°|P'q,#<>%A°Ö>dD/ϬlÙ†þ=Ud7YìÇì¬4kÅ0sk«Èb½ÙUûÃZ XKú¯ÿÿ“ç«O½¾Ú­x ë¯Êê¿«VÐÿ {ôõŸ6DaÖ"Z ëÍå züDÔ>®]ˆ":¿Þ<_ý³ûæäóÖ)Óý|‚K­” Ý_2Ø8©»ïONµsBÓ}K`ÁÊØí[bwApiAZmºmïc÷uÚFy‡à3ÄW!D§»´D˜vÝë´T,Gx†KmA™ðïÍßéBŽ_HI-t¤kmÎñ _²‰J:ÜB9´õÝö:±jdôŠn€ìÜÜD<üT++‚„îQâ)Æã‰ ·ñ‰=ðÑËÐý‘xòà¤Áû"R+<†ö¶(*Û#{ç\wNNXkº¯CÚ£phç(4Çæ ž&t¼ Lbts^yÚ^äD­óÝ“ †»ãÛóJÇYew$±~±Y=ZÚBXÿ´B¹‹lÆ¡p×ÏWÆ{#PðäÙꛕA%#r¶§Ç]…ÂHÄ1ÑfªqwÖ‰ªšî¢Á†9ƒi„Sví¬Á÷ûc–¬’6d½¢I4µ-ƒ_3øk?cp†-$xÒì,évᨠ~EÛ(£›Û&éËHÿÕñNØŸUŠ¢œ"gÔ…èÕUÎÂä\d¯­Ñpm ÇÑh´º3m\0”7ìvOàŒòšÁ/üŠÁ·LgSÚ´¾`8–ø¦‰)<â\Î(2V±G‘EEj{µaL¦q+tv Aï¥È¨„V€®® ú~ïVo{qYWL‘D·ç…7v§Â[á¼ø ˆÎæ{Ê‚ÕìÞc•ЄùH¸ÀCS9LÑîËŠÖG6 ãoz‰ÿP’,+øó~9|hê1v oõæ-Ù/Äü^{lyoÏà§õ=¶†ðoÿˆ¯ªh5[…9|C£ûžî( sXQ>9Pap…ÁïSaEc6 ³’ÒWÑ©ãèËZ!åá¦>Œƒ"ÿß@_EG¡U;…‰•«‹È¼mckÁj6÷#Õ+ðø„ã{Ýq>cc¹ƒÆ×«~3ý<™„Ä?sòO•£oÎüÃ)ÿüIߢ•5!qûªËŽéòÕòŠáÃ8jÆpøwò §è±ÑûmßùøŠo ‡ÈÂÈp V³yh GG*™Ã!:sÃÑ‘ûcÆvAQ¯ZCH_Ó=ðXrdSé[^.œï?Ã%oL?Äß¾]RµÒhÓ´ªóßdÜ Yßgè·ècAOÉ-fb*=8>ž•䪗%ÝMô{ºžØoäœ/ØÒA_•Øè>޼45˸—&º#iÚ/Ĭê/˜@±‹}Ëàü!ƒÿ‡ÁÿÁàpþÌà_28ç¡q¤cEÑÆh|µâ«n°“„ý+ÃxÃàŸ/¬G;øÏSü„ÃiyÃiYÀçëÛ–2ü^Û¹pžÙÞNiþ¯ÜkÊ[þò'äÔÁ²«ž.øèÛ…5×aRóæ‡9Zq¡ÆõF~F½LÛ„Tgh@¤É¬«n^± eê*6>Ktî8>›zÙvof½¬©’eÍ7 ù“©5Oà¿0øa‚.÷näåZáP›´i¯&28RD£ŠûŸ–‡tå/?xÙ13¼±·ÿµàRg g†¶©ŒÓ—¼–¹u[µÛŒDbe+=·žî(6RXcffYš«¹n¥˜ gç ^`,mɵ”q9¥ý •¢­±–¹NUÄ'†S\§Dljz*âCôwP§\n¨Sxþÿ”Áù ÓL­ó}¶j®Ñ8´q[…€ïS>¡•è<4 ²b5»÷XçgIJ‚OÅô€-Ŭ1 kƒ,Ï Å(ƒV¤†f<^(“>¶£x‚3.‹±,½ dÄRºÍ ÞÑb‰‘= ¼mrk ZJj,-r„•4§©\÷4‰zïÊó f”/3R÷s“cö[¿è!}s ͵-¤‚é$ˆ•“àb‡‰u‚Ú¾XmØœ38'mû¡ëô¸ß„lyßîÁ÷þ(Ãy;vîü¼¹é¾K¢Ò)tq©mŽÛÌ8GjŒIhøoº‹Ô Î7"Ûd5 Kµ­s,ÿ\êØTQÕ> ¢k·ö"z¼Gnž®¨…*|jN•ÄÃ-F˜mÜÒ“Ñ 9ɸI?bË£W¡éÞ†-éÈ-¸‘-?[ê]ØBõcÉæÃL5›q™å\'Lx?=ëÛsNs:c¤ò݃M™ùˆÍ¸Äa×[ KÞ„ù£ZîÜj ljgaò,ͨˆ·tÃØŽÕ™Kjdë€%ñ‡ ?Ú£‚›Yv°!±è¥Ý.†S9‚ºƒÆ|½…G|¼Y¥ö˜%1¢‘U>†ð&ƒ æ½iæÄdOda¾ˆHmû§ z”jm¬6Hû‘fŒ1MOŸýþ9šü1„²vð.>ƒ¹›.‰ƒnò²·¹Tz°ÞŒ´Ÿ”X$“Œ;ÇñÓáÄåY–Á£ö ^Õ{¾“MJCZ­Oµ¥é‹7þCêჇ0çù¸ ʱ‡‰ÿÕQ,³1 ~´àyÚÔ míA³3ý4‹^VuÅæ¶Í•²48µ1†Æß+ìO˜A8´eÛÒwŒûJ ïþike§4l.QŒ§ ÁèØV¶ã|¿…”h¥è¬ô1o2©÷>ƇñÊչɻ²>Iëõa¬oZuÜX/]¥µ½Ù¿°B–ci(¦ÛÙ7+5?ª¬<Í‘é5nm‚ïßôª Ì–eaçÑêÇßvÿendstream endobj 316 0 obj 2994 endobj 322 0 obj <> stream xœí[K“· öyÊU¹ç4·ô$†à›qåà<+q\Û›Kd$íj¥X{ÇŠåüúd?@{z{Ö«HU©=l/—ü øÝV ØJúé?~±ùõAo¯›Ô¼…í§ã×7›ï6Ðÿ!ûîÛß]гÑZØ^<Ù@ß´Þù­ QDü}ñbó ûr·ÇżqRw?îðSƒ‡Ðý‰5?ÛíµsBÓýƒš+cwÀÞ2ø»+j—¤Õ¦»¡þ^àÈÏÒ,Ê;l}ˆÝUˆgyIŸØ¦]÷zúdžã§¶ Løúâ¯Äãü(©…ŽÄÕÅ%rðu6QIšB9´õÝÍ÷‰R#£WÄRgT&ââ{­¬ºOh$®b<®˜ºà4>‘>zºŸMœ4È.Ž#®.Cs[­”í;[§LwI=œ°ÖtŸRäJz’ Í%€æSgµ !tûÔ]#ó¶'ʘ˹Ç7Wylæ= jà]#ï—Ó8N*ã‘ÄúÇ‹Íç@(„íĆ Æ¡p·/6V)-ÀŽ-Ï7_Îâ Ôœ¡¶Îj|·ŸË;m1h÷Ô°³ID`¼Dø%ñŸ}oí¶^  õö¤ôa»á#H•GI\Ò‚wZB©pQ>äa›©Ë‰©&µJ¡E‘ñnäê“äá•-‰ýhܯ~•~{ˆ;­·{D0¤GýÔÐ{’Ñ ¯Yg޼~B£¢  £¿- QÛz›(DÑjÜm_a †Z’aÿßÀÀWäª%j¦r%½0àz Zu?@ü53PV#³Ýƒwq`ÏwÛÂ÷ q?½áóè ÈÞð)wOx;0ܼÙ~N?ÒIÜ𧃳ôŸ³Aw³p§Má ê-|¯ZQàm1$p»§@Â@îs1¹È%^Æí(,Ò8Jò– oB¤ZÄÈØÿŤ ¯Êá²P6ß0`2ÎìÄujö2FÝ+š¸8Q´™Þ;[¬Í9FÂð!m¼åÙÒÏóÒ\÷ï*•1FÈo¸é›-˜hîÃ3>tX<”ºÄ´šsË»|ËXø>ÏâTh™ZSÛp´ÊUp˜,Ýá°NpÇ¢@|kÔ†½Œep– z팸LÛU/Ί«ÓtÓʌܸ(†J"&i,†èf*´†ØY^|OK-HF[u”—3çjÍD—ųcÌo™öp]+€vŘU%`À>'¥Ë¼ª5À <|”=‡ G`öKœÑ¡Ã«Ì›S:TU¦"×G>@·Œ:œõ\Ô=ÙíA:ôÁW‚.è3Q§×¢lìa§úÒHðhgf") â¹®žûvFÛhÞ:ì®)™ý_†zêL4$ŸGÉ b`çõ  †Šj•)e }³£èÅjWáÎ"îây¸3ëp‡î èÊÜ1J›?Š£ÃQö*ù/*ø`šÜ`§T˃ÉÃ…‡qD6†0fOË Ý íø ÔS—a•F¨ö½? ¨)i‚›ÛSîÿ×À<š[Y zÅÜS:dÁZÒ> ùú´ß„!¯¹µüâB;wæì:Ìyá+KwÄw8‡ž°‹ÿGÜ *’ݽT˜(Ì™†È­EȨ0JÝJÑÈïRÞP,m˪UÀEá§Ãoݾøù}Ùk›²ˆ9Ô"Ù¦ùX̹Uq+†ó”3‚²6qÛ™÷Èâ›Ñas¸Ãξ¨ÒNÍF“¯PÎ] ]*>5ñŠáúL–|%úÔ`–)TtQXæv92\¾›ªœˆXyNK&B çÌ*º–#Öjæ-Ô¸f)vA£Á|­,@¢çyYÜ"¤rÊþ´¢Xð§‰BÊ?¿mQÜÂÍwtu½ÂÍoJ‚[’î#T¯`¨RdY½ÐÕõvÊ<Œ-"é•9îM÷©©žáHçÆ@îv:o}¥[ֻؖbÒ-ëZ·5HŒ1+u‚13Âjéü]mçt£ó”Î\¡ó÷/‹²R%Ô[´, ŠÜ‚Îãj…Îß¿(È:¡óŒ¬õ:Ïo÷:H⪛€ã;°äHŒeRöª™Ží‘×>™ˆ~‹š<CÙ«„#ÂØ~}“.WºU3þ‚‘,êÞeƒá‚[í/ÙŽµçr}uZI QºuCR¼³þ‚~û²xoü…eQ'àVåî!+¸l:×þ!R âèú¿7Ÿ²‘ðUàÁL ¿ l—ÌE,ãE_ykž® 1þ˜»6¼>Z;ÕÛ1’fîÇË+Ôt jï00 @×Óåh›üvi ïñ‚¾§êéêæ“L¯áQ£ä¨¬+Ózà—–Ø÷a†eÞüº¼Ì_–Ð8{}Sˆ!a}S´F¡“¨tºî.þEP¶¡²oFAÜ’p¥Wz¨.I….Ñ·m{ˆþ¨¶¨a¸V@YúèL;%a¹Ð¼A˜±Ö²œ>3Ò£í°íê"¢³sÊ¢T§[J+~¸$Ä kP Û 7yEŒðy+’DuòaŠÖ©5“„ÐlŒ”3ŽG÷Õަ뛼¹¨Î…bs+ë™Ú>U”7"­½ZFŸ¯”SvŸ2¶IbJRÂ’ãT\XžŽ—ÙõÉr+>ÂàæH9âäƒ$Âà‚¼Ù¼6°,SÒtƒÐl[mнy‹Û‰¤Š]…þ™áÛ±{JÚ÷Ím=¹äׄ+'?$O[¢+Úe*º² ’¬s\(˜ “ÕÀ#ð-ÛÖìƒowæì7TÝ„®~á[³ þäˆÃñURe•,9ï·¶J!'<Ë£¢SííÙâ|^¸¢îƒaº'=f8=,ZÇð2÷ø)ãtëó\4ZŠÉ‡3†ô” ZœREó¡o†P4sÖÈ—p¦}Õ¶ÇӲ̨êZyn*|¬[›3 A zÈ`2¯GeqªcjùˆËEÔ0óõÐGõÉoc¢wc ú¸™¢êìó¦2ÖÞoV©ÜŽÖ×>pŽy« î¤Kî\ЦyÍ£M/YÕ¿m.~ù 3õ%P )…Ÿ€¶˜óá¾ûán¥§aäÊÆ(“ã=Õ)ÑL( }4Ùþ”Ò°zôŒ0üÄ£’¤:@ÙŽÚºKª5–îUŠtÈ5ŽðZ¤M ÖaÔcû€6E‚N?: TÝ<“ì‚èE¦ äý¢ô(Åœ&úMµå»ÎT,`2álÖË4ˆ¿è|•–•^›þ½’5EÄF‘bìêC_>•CkªoVé’/SšðêBjý}šÉJ¥|1ë 2{ù­!F8™Ñ =œVÀ_{æg¢ì-dßž@/cº5E¦÷·Í¡m¸ØEdWûò}iÑ›QË>­×ì‡^¦vkPØÀ6µ-#¤M¾áìÁ=[û¾7q…ð奶,æE­Ã2; ΤÐɈ '·é"§SÍætijE1¶ÞL­§Ï§Ó'v9}¦axé\ÌÞ·¾?›îŠNÖ§a ËÄKÄ‹RúI$Eÿò¡,Ù,Ätõ–# Ö§7¸ô©,𨿜¢²°ÓóäVÕõsšÐ¦'++j·ëüÂÓ³¾®v›J̓ ú¡­pZçc…xvfˆÌé¬ÌB±TDP¬ÂWÿM=÷~撦Ѩ¡@ç.§€}îÊX¶“ÅÖ= 4±u–Ÿ×é¼ 8P—æUiwõp R‡°„)sø÷I!œŸO ÿqj½ž>›ÐOy0®Gi†fäL!™ŒM§ª´á¹f¼l›Q„ì±õÐrê±õL7†‡tì†(Lðë¸Y¡íTü1’ñùæ¿ó‚l"endstream endobj 323 0 obj 3188 endobj 328 0 obj <> stream xœÍZÝo$· ß?¡Oƒ>¬"ê[9ô¡Ú —h.Û§¦(ûníÖësÖv>´{Ii>¨s»ö^‹<œÌEþH‘³ú®‘Iÿuÿ^ìVŸ¾ ºÙÞ¯¹æ‹aõÏÕw+èþ{ó» I˜@Dk¡Ù¼[AÇ‚ˆÚÇÆ…(¢óÍf·úkûõÙ7óÖ)Óþt†K­” í2Ù8©Ûë³µvN¨`Ú¿YA°2¶÷È-ƒ±}KtiAZmÚ}ÇïcûeR£¼Cò9ò«¢Óí--‘¦]û˜–Ê€å 7¸Ô” Û¼¦9~ %µÐ‘޵¹Ä#|IÌ&*éP…r"hëÛýC2ÕÈèÍ3¨ÜDÜ|­•ABû[’Ä]ŒÇ ªñÉ<ðÑËÐþŠlòà¤Áó¢œR+܆t[t•혽s®½$'¬5íÄ¡ HíÑ9¤9J͹¹ëÄŽ‡€Þ(cBì¸Sl.G›öoó ¢ÖùìÉQýÙqÃýå(ÇMeg$·þ~³újˆ…Ðü°B¿‹ ãйÍne¼7ßSnV_/.ÚàX4C5Îxa]È€ËÈÒ!8‹qд¥¥±C÷˜œ‘òOÜÆKPlÄ›¹Å¨ƒQ?;[#º„IþÌb6d—ÚÆ¨pz·£‰QeDf…WÌ(.z976‰¾EoËhí œÁ@óz14´1”0Ì#…xj †s6Å@6Û"< Ot)z¸Æ©mÀ4!Šá‰òn¥…ídóù‘®pÿÎÞ)ûn¥¬ Dqàž=«lD\ÒK†*—²6é'ƒÒ0C“fFÎZ·Q¦c¢/êQÆåM@F¡ —eö)£½hЇn1à)ŒGšáÂB¨b‘â<ñŒ'ý¤K£“ µ×X+½ìÀ0eRÚÚÄÒå]#ü”ëA6J(M2ï5(I 7 Oº ó1ÒW‡WLŒ‘QXsURFª˜xïlþ±Âm•·¡YƒÅ:ít¾ùXu¤r²²@£›(µ±¬'¦‡’ ¯0KšÐ×&„N+¹Äðz«šAabúa¸ ÓfÖ ßzÁ“¡Äð}ºˆµô1[cÑW!\`7Mfú¦-íùô mÀ|aЭìvÿ1µÆ›à{v×x7!$v'œð¸‹ð¤ÊR¥,8°Y¦ô6š¥5º§ø¤¨Ì3«aÖb ê¬Ê­]bU£,:ÅâÝyz£°C‹½Qÿ"£¬Œ2˜èæ@£ŒŠ¾4꛳2‚xÅcŸ Q/â>xxNœµWþ8C²Þ»' ´ Jè“X54„"}„UÓP¯•Ä¢‹UCI‹ýª=]JK&æ«’ÒOFÚ)[5ê„ø;*ÒGX5‹4Ý´’®ÀÛ_ÌÚ­O\&ªÝ§0jçk÷áFMÜ&ƒ£{ ^¯ròæóaÔ>àTÉÆÁŽ@=UÀîÜH"áMhf)!1 âý`×H¹Il“©¡ÞÍ´çÙç€ ¡ÖaE…½viÚaó:ϤyZWÖÅ<$ã1‡çn}Ÿ×ÔÝÐÚuh¡Ý0–·ŒåÑ÷ŒÎU^1ú[F¿\}Ïè·dK“®Åµ8ßß1ÞGöâ[F¿aëk¶¾ 58DÛþy¾eRÃEbëíÿmV©œkYÔ Pà0„~ ™ #W`ÄŒ™àã0T€4‚Š»¶8¨îKÅs÷#;ã·Œ^qg¢_0úg#ý‰Ã÷Ç*¼Ñk8*BW˜"9’Ø49Ž<<}0 ]Jüq=ÐóuSÉ¿%#®çŠ¡–†o]hYJÎÃã¸güÉÛ[˜K"ÙA/™È0•Äò*ÕQ’ {š .©ê’Ô'– êÓš;l;–t®æ7£¿fd¾Î]B÷Ç«üm: ž'àšX ×NŠ—Ôé³Ó®@¯/T¼¤6vÅë? ›ø=Ì3›ßù‰~5G‡îLöý<‰ÞC·pnú?•ºð ÷ÄàEîúÞ‹½gUAw5‰9S4dS¡Û•QSÞhìÒ™ª,ö2QSÇIú2´KŸF¿\/x˜Gíq!j7]w¾v!ô©”3¬ßßýû9„f7lÒW <\–gdIâÕ‡ôMcˆÊÈN Aßx#‰ù—¹,”3B™x²8òäJ¯*vªf¶ÓDÍxS· Ñ»-#Üßæ×Ï‹W‰"€~’w†¾žy—Ä^(ïLAž.ïþ´ ò¶ XbWÅÈõw=_®™ûg)ŽÓ‡5Ï ×‰2€“ôÒ4¼ðp‘Xx¡ôÒ8¬ÚÓ¥oï–úéó…ÀlK•ex³ÿ+Wí¬‰®¨çÃål­áa¦t†ì',Gà¡t0I_Àf=é›Ä^(}Ž©pºô](·û2¼ƒäÝ|ŠŽýG>,]?I<‰­¦æ½N/÷"ž–8»ÓeÞýt¤K%qèï]MÍlL¨v¬Ãÿ…tôó4><¼£Oz»2>/S!âHª>:ìŸh"«é°§C Æù\–—²y'Rr‘çݳÊס"²eù“€áI•Äâó’ªÿöJ‹õ]RõS}{}5zî‰ ¶GŠ z‰s¿“œ-& ‘©PÞiê¾€#“ÄÑ’}ï)æ‹ú/ýýc<ÐZýgú…]Øþ½åÒçÂi…±'ª³úßìbt1ØädjZ‡‡RõÇIùG ½Ä–>ýL»ÕÈþÅAúíÄØü ttAá0PG†ÚoÊ |µ­Ë÷XVâjŠ÷XÝ1¥‘¶àçG¦§y~?I©­ƒ¢§‹éaw`vöû‡Ìa}˜ïß¹ínaOÎs_>ëSNø ]a:Û•[‹õAGš—ôìµü$/AŸûíÐÒ*ÐóZõs0RÕ°,RïCmY0ç §ti Õ,Âsбýy4à4¾p‘^äè _г[̤™/¼ˆ³5f*NÐþ‘ÒÈY“°•¼#ŽxÉÚ­Ó‹Ñ9¬Ÿ*HtÆùIî'͘Áœù}qúµF“$ÐOFcbñª(U–¾VÅüƒÞjáH[¨{þ;ÇMfþ´¥-Uë„ Ž3?dª2P¼ïdöõr..ºbîNl+GHúnwåÓZ±x„j¦5×—Ô›±*_ËôØ(„/Û˜q‹ÌyICÖlŽ3 hûu­È;ÀRh†_¶ÏëÇa®ŸK À›°×ò0n¿ŸXÏu^=ÀvdÈžñ8Ct>HËÎi}=.oÇeïU0t> uÍxÁxd`ëyvMŸïUßc£ƒâÐvçñû.íª6éÖ®{+²\ö¾ZýúHåbendstream endobj 329 0 obj 2577 endobj 335 0 obj <> stream xœí[KÇ ¾ò rä’YS.V±^°|p9plô>ÙF°Ú7"­Ö;«H²àÿÖ£»YýØYM 0tØEV“üHk‹úy),eüS~½\|úÔëåÙf‘ÈKX~Ý­þ½øyå/²°/ÿv%p ‚1°<8]@á­…³ni}~¼\üÐ<[­éc­ÔÍ»-58ðÍ—Œ|±Zkk…òØ|É ¼‘¡Ù·ô΄æ$Ò¥i46×‘ß ’ü6í¢œ%ê!±+ír—DÓ¶yÝ/à Zj ýOÿŒöXn’Zè­:8& ¾Ì”Œ[(+¼6®¹¾Iš¢ NEH;TÞc ¯µ2ÂKh¾ˆ’ôtôÅÄBÛ¸¤¸à¤oþur`%’¹$­Rô™¸·ÑJ™Âl¬Âæ8rXa 6_G²Jºè›¸sšoÔÖ{߬»&ãMQ чzïNðú$Çz“mOŽjm×dûq/ÇUe6F·>>Xâ3wm«!XZî¿öZ >S^§Ð.3&œd@N 4Ò¸Šã¸„"3a¤Diî4ÒkÚøf$'s™ÅcÓ’Þg=™yЧÐÃü nK…esµZ“h¿ÊÍ[ßL«õŸUD¥*Á¤Š¢í€j¤aµ5HRmʦ5X%œÃåÚ¡‚…쫯b*ZЧú‹›l„#Ÿ³ÐdNÙ0¥ŽJÂÛ*36Œ›¹­­Îp»6%¨êoôZœ¦ªC™ Í«IØòUô‘6ä‚7ƒòèIP7?6ÜRîÇQT*Ëx)‹©rÐ1c¥oí&GÁúŒFY&** h €ŽzØ/Ï'ÅŽûåu¿Ã«žzÙ-»êˆTž¨8jã S\šà ³õåB[ MMG¹­8m,Õ‘¶ ®ãÂxÈÕ‘éû¶_B¯¯è©Gýòjj9™ÉÑ¿ºËûW ©‡+^’ýYÓ§ÿèŽãÕþxh)ÑÄDd’A˜ÈÔèúÄCr@-cê)=W+HA&¤å;‘”M,}?4ÛùÉS é+–ünelZ¿§óšRÜ“ã×âÉÙ“e$#©ŒÍçeÙž©å ßä5H:ƒo=çCù‹dkÁ8ýá˜?ñˆ™}våϰ¦ÏúãÞaÓQág+°ÈOÂrØ£…È^ÐÊMȶ`Á~À‚¬ˆ ¾‚D uåB:†V‘Ú Zšþ ·Ï-õÿÉ-ø}ÀÕ!1ÃE÷2aƒ+JÁžJ!8±=Xúã(„Û€{°:*ø ª„»à¹¥T`ÏTíí*ØÑ#u• ö$¥ö;z£,á~À>aºaôkF?dôóê²ÛÓDzÉѯÿeŒ )†*RNf"hB…´>gü\ýã±ì” ÓzµETr¸'­ãŸãÑŒ§Ðô[Eh2U¤©:B-uŠEh’òƒ혪½}¡&Þîy„F)½§5!šr[eºž Ü«:ø»^±~ñ&fø',ñT±z8逫ðÖuœ uyšÇI” ûééVem†÷ˆáŽõšÑo2ŽR5õãþKÍý!~6 èΧÚ-ù}4&[&þëñ>£=Of„‡Õ‹]¬à úP§1ÝNEài¥pOi¬éª¥ÊIó˜Aô„Ùõ=£Áèß0ú¿ý;F:æIþù;ãÿŠ­O”üHÛI%ÜH/Ðù*NÞ3ö·ŒþùÌš‡$?Þù—ÝÌœ:¿ÌðóõÍÌwßÏÄöÃ-NDÞwý:âI¿ã¾%V»0¬¢ë¢Ô#/J*ÞN?¬()§„‘ô= ‹¦+EéýØÏ#_mã‡õŒ?ÝÂÿ7àÿõLœLè3‹¯ylOœ4wÚáÅ`î+êoA¼E)c«Ž¤gªö6UxhOm´aᑤ`?g–¦V ½½µ%9í{ Ön¼e̘ÏyŽ?ç/?Ð#ÿ¼›{»+wAífëãsN‘Ú‹sη:ç‚‘/Çažè§E¿vÁø',éy¶…ž73zV½Þ)cÚ½ïë#`8÷Œ9~RMÞý¤º‰ŸD:mµwylLOÎE AÍ>»^Æ ”¯´bß|—M³Æo~U¯ã ,Ið‡HþÉ›‘[òØÉq”TÂkÕ[Å#k(<±}Î+>M³#Gñ‘´Ig_TÙØtÔdûpÄíƒkú½>)šaÑ2›ÞÆ[=×”ÞHAÔNÔÏÓY}LZH¹ Lª§Ê]a¢‹é ‰ÒœŸDÀÖD+YÊwêå8ù'ñÔQèÎ!?ô‡H¯é¤r„oð^·‚·»Ì¥ï¾ÂÂö§Ü‡|…®dú~ÀÀ®À€.À *ÁÇ2}ºº‡?Ù µ2RxÔƒ”aÉ= uÜÔÈ소žGfò¿aPÕ Ô<²ß¤µ”Ýÿ†¦{Xú8]ëÊïϘn¾‚"©ódñ_^,§1endstream endobj 336 0 obj 2734 endobj 341 0 obj <> stream xœÍZKs·ÎyË¿ §9Φ´o(•ƒórEŽS6Í\bç ‘2å„"e.UŠì?ïÀÌ ±;Cî’‘ââ`³Ñèú5ø¡“‚:™~†ßg¯W¿= º»Ø®2¸£îóiõŸÕ+þz÷‡Ó´ÃtD"ZKÝéw+ðCQûعEt¾;}½ú¦ÿz½ÁaÞ:eú÷k,µR*ô)`ã¤î¿_o´sBÓÿ#+c¿¶ >Åþe‚KKÒjÓß ø>ö_d2Ê;€Ÿ_…î¯Ò0íú·y© YŽp‰¥¶¤Lø×é³$ã)©…ŽI¬ÓsˆðEB6QIʉ ­ïon3«FF¯’`Ï€¸‰8|£•ARÿiÚ‰SŒÇ‰d|f|ô2ô¿N/ Ÿ¬™c; ƒ¸âGäßç¤)Â,iRÂPŒÇD–%§›n rpk*Õ*ñWÉXŠ¢æY²SdéDéuŒÐ¿XŸþ{l*iwToCœ§˜T¯B<âbíÐ]ÞS=eÜõKÜ!êÐ}—¹ï¸KQx\…\~^ÖÒH;˸Ân#ãgw^“ 4‡9ÆVìšni«GÙéA,=ÀN"•kHoÚö¿®†ºeáŒÕм\KE!AïÑ5دªY¹åo ¶õ¡ ›Œö@DÅ)ÈæJ|!ÈÎë퉡ëK'Lµ„ dùù v@¸@aé]´•àt˜^ï“ÕdŠî‡9ý Sah„1V—MÃ%£8v@%5š ŵðkJ?ßåP…†i91r̘`#…GðmXá%ÊØ­"¬ÙI©_úßiâì9DªBõÑZ`'þ.’«£FΩ„{Î',þ\-àŒŸç Ù)q'¿^c¥µB±’ÿ-Ü÷†z0Ï&x¸k¥J%­¡„H 4ðm õ’/‡+²pãXÊlå9›’Ã1)ªqÒ\ ³ðŒ ‘" ²oŽ(ŒÅ6¤Ï•¼ ÷¶½¹J³ ‡þ¶:ýÍ7ý§ÛaÈàÛHõ|½ zÁÖÛ‘9ø-sÔƒ44Qß-Û•¦&ãv„ê I—3^ÿÏ’ŽÉ†FÂrc’'VÙ“OòQѹ0_tÒˆÐêËT$•=IùÒGgôlNêraJÙþô¿[oÈ¥xQ§o´M²º jÌ^UØr‚ŠYi51²¾‡'lîˆü Ph—Âå9²æP°„òU8D-,Á9gKNƒ0ŠÊu©,ß±.¬ŠKêæÅÕ@­Ø˜·­€ó6Õm4N1Ìt®›\ÆD3/¢4z¶•ÜaDäï²×hýÿaÀ¨G20¶wrÀZ—½î(ëàc_6Û­ÕËLàÔoR2VÒ~•¶eX¿Dï]X‚_úE |¿ôXÊTÒ ›ÿ„C£ÞX0o +N)ÝP2#T*oÁÚu§TRyƒ‹î!ô‡š[Gn¦ &-´«ýë!ãJ63«;*ŽY7±BBœŸ•µBZ˜ ¯ý´q諵 ³>Ò—½È'Ê„c—#çÔÏÞ9`TiDcŽ×Õ¡óÅwÏ °$?OJq˜rŒÒ¼@­¥ö­³0¨ÎYè•ï´m#qÌTÐAÑ<ÀÕ+óÁ{4L‚Bu©ÇkøÐ)4’dŽq½Š_lŸ!lTÔÂ¥²Ê(¡ƒjaþá:«‡¢Â³5ˆU:$°z—W>NCr§:€§pµKêB†þ1S²R)?RõýúëõtsRšƒ½Mh^5x~¨c7"·DM“¿4ÔC XÊúò5¾ìeß—5* §Ç½6isxñc0üØ ¦…ú¢¡8ç Ú \§B©t²§KQ·ôñÔŽQç{ëívˆŠb—(gòÜ—„qjrº“\EcË|ƒÐÙ•ÉÐÛº|^®*ô¢./+ÂË :'¯•"šZì1wºPø´NVžzÀ…õz yûX#õÆH¥M÷¸4èô8·X‹ÞRØýÔ'2smü4y1K öÒŒ›¡3VºÛýñ×Ç|±ANB‹kú¿& £¿ð¹ Jœ8©ø¼hǤ·=Kc§Oؘþjgo¾$Ó§Ú0qÏ#Ê.L=šy'¤‘u–O9†‡Cýt3¿ÛrÙzöÊùô«ö°_Ö s]/Ìe…¾ß½\áºBÙíáÕ:ý@‚˜m¤S7X¿7eéÓ&øçù«¿wïV²{¶*ãԓϦwFØ•>2°wF#$½3 F&˜NèÀªÓ›™„…J¤$3aUHÅšvª§S ->lg¬:+^|Tæ&Ĺ,™ŠRYŠ˜'Ä9e#™XË£+¬¥ %«ëmY#ëä1œE½ erHAyÉPÎü–Á9É+¿`ðË–&Ò ¼X§Ìeáÿ>þ†í,S³òtíƒ_²õ÷-g‰búð%_32|ëû}&÷ð¯&Q¶ýTQš¹~v¦ÉÜ“i—L;™›2LãL ‘¤G9¥aTzåDÉ]q€7Lão™/ö­Âõ™ág þ´Âï~’‹éc’k|àWå›® â "¿‚äOýR5huÒ&•£Y ìëLœ–“_­~è>äÑendstream endobj 342 0 obj 2625 endobj 348 0 obj <> stream xœÝ[KsG¾ó'쉕Ó0kÎöûkÉn’ªMœÝØÊi“J)zŵ’¬´c'åüö=3Ýg†¢ä‘µåòMÀtãû€F÷P¿ÌE-çÿµŸÇ—³¿= z~¾ž%ñ\οʣÿÍ~™Éö‹hÕ矢…™KYGkåüðl&[}©uퟻ럇—³ÿVÏKx˜7Nèê͆Zzª/ˆøùb©«U0Õw(V2X«5h‹àƒ”±:E¹°RXmªêû,Ÿ$/Ê;º 1‚—+‚L»êe… j+• ?þ ×ãèz”ÐµŽ¸ªÃXÁT6Q t¡\´õÕj“fjDô ³3*ááK­l„¬>EKxŠñðĤn|šžôÑ‹Pýç䥖 v¸*AßV+e[e딩NPÃÕÖšê+Ô€U ±AÏQH©©ëf‚Ú…ªeR×°xÛNʘ¹ïl¸:mžã‚mÖžÕ­]ÃÚOŠ*Y#†õóÃÙ·3 Tó_gÀ _'nÁ_άRº–6K.fÏf0å†NO¿D«Xƒ‘‰¶1ê>¢N6…·£l ƒl5±6NÏÕuð-[Ÿ6qU††smŒ‰|CäGD~EäçD~Ñ÷)„ñûŠ|IÆÏÉøbpDäÿ ãOˆÎ'Œeüz±´"Ô&†êšˆ1}*2ØÊ¡Ù$•oúK¿ólÈ:9<™5QÙ•ÕHÈ®ÙÏѪcôèÆJS[ êßËð#bHÇß/È—ÇÅc&væ(ðXB "$ÍÂÒŽ¸ÚŠ:Âd´2a&ƒG£Õ3#…ºö€îïDþ¶ìbŽ k .fPŠ;$ˆP¢ pNDe bµåàY0¥Øj$ˆ/‰œæÇECCålõ?%1Àˆ2žb”ô0ê5資Qþò;±x[ä;@Êñ'°e:L„S°ÐÊ6@f»¬Ä|[·Ò×–ÂVr¸mtÐd„{ƒ»_˜š@oJ}£H¾ *?ù«‘Bºâ.ëáñ#Ö7±#Y<Þ‡"†¬dŒ°ÞÆO‘¬Ü4µÏY;£ï Ç÷·#@ÝÛî6ã^†‹òNâ S¹2¸ŒŽg²S¡v$““•š(“áH ãýeò×# ¸âX¤¬ö²«Ã7©gà˜A—}g¸2 @ÅÖGZù‰Ö*¨~B®úÉòº¿>Òc-À€qoS8ëo=ýË‘ånš&MÀÁsÀM¯àìtƒý5kªŸïÈø32ntš..ê?düy?Piüÿ»§Óø|²@ök3²®;ÊS‡ÿë‡öK œ,¥<¯wÍÇåvBM’?:ÔZÜ_¹»Û©+÷£+öq3Þš>.; è¢¼ EBÂ)BYEúˆÓ@¡t܇PÊv´ ƒ–çýön*lôúƒ–»;lœ™Hœ~‘±MÀ)6²¡‘~Ǽ×ÐÞ8p œ“mÚ¿%ÜÙoöÝÄØr4O¡à®Èì“Qd·¢Ä]ç0¤Ë>+dÀë¿rÙ×Iö‹D´»®™3u°M$>…:£œ€tTxM ‘Ò(ÇîF×ÇäKb«4NH¼ÎwÎ?_¥3=i¼ ª_Ë-±Û4î¼Ð¦ú¹QöÁn‹qZ‹ÔL³UªÝè›KâvR&FÅÿjA’#?ó ÄÝ·E¤q’#®q1Bª{Q<¼YLÎ D÷Šú}„î`;5~çºlè!ËP謖lrWD™ÂA/‘L¥¹³W2Îñ=œ]Ò¥=LÍtûü*½hð ž~Z†×eXgœiÊÔBoer§#“~IFõé‚×Mtà©XË$¥M‹‡3´´rÈf¼ôÜ †¬ul§A£ MÒ—³TJž/¡3À¦fmŠ,ut€™#tZ³B+Ó4‚"Ä`Mº™Õu[̓rùŸ2ïñÓ`u~ÛL°+YÈt(-°¶&ÕuáD]æ+‹4ä!+„û¾ÛžŠjöb>•fûh£Dß±tÑÀLž,JÁÎÍÑPEªï%oÍüŽhÔ‹¥3 «ÃR0&• £pç'">*3_:£v¨e0¼ÖuRÁN[^VÌΩt½rMëW“ z4éªVª×G½R•<’Y‘D?m—ãYJw阷œd¡-ªÁú‚ž<\”òbµ_[hIýX7ÏA²„­Öt…d9úáb¤®{+JER´ZC¨m¶–’zj¬¦8Dé‡($SøÒؾnïÔ ³;|…÷š(Lúù7·=Ó—õm‡…ÁCÍs®!YñhæšÓ ?hä' &´ÆÑîæ5‹6šÐ)’ÀÒ+ÌõÈiâ×Ä€Êõõ“N=âçö÷%² Ïa4P)<…­¦¹‰Æw˜ý£/§‰¾¼eôåýD?–áÁ.–µ–°7Qî£Q°<‰²s8ŒÒ«:PÑjš6­p/1ïíuú ×É7¼îÝÙ ¼Þ}3ð»ʙ޶àÉþ)98»ŠÐBÁA†òâO²sOT·õKæzšb«¢‚3Ý™î«úÐ2°*/HxŸt U`à¹tÆû]âîO‡ÕƒèáÃ:àîðc“ èC­Ú{5šÔôÅ ½«m_à UéÑþˆÈé5ø@”ozý“n‚b¿P: ¦ïÜÁˆOjK+ØIŸH·€9CH€Ïv°Zh–IÖdåXÖæÚ1?xP™ÈXmCL•ùøO–[u"+1ß’ ‡¤Ô@+?5p)vw{pFÄjð4À¶Wú3Ÿ¿ÞБ¥/cÇâÉø·[ƒ”£Æ‚íH2xìŽHhÑJ¹IB‹÷ÃÀ‰ÙÞq¶‰lÿ@ÕÛi9¾÷ãì]`ûÃR"΀RŒñÐ!C»CŸ¬Â4Œ—oYmù0¸ìç»^KÜ—r†Tàéb¡ $]’•æ5­(1ßš#làCS„Ñ*N„°¥8÷!Õ@«2vLîþbaP‡²ïö¿3*02ô#gІ½²OVf‹5Y‰ù6œ5ßèPÖ(ì³'bÄ¥¸)ÊY®ºßQLJêŸ)Qn8@ïõ³À»%#GÏÐu†U ìÞ!HIÞ!t’]/Q†_ j¥jØ“çð^öÞPŠþ»ÈogTZÞendstream endobj 349 0 obj 2597 endobj 355 0 obj <> stream xœíZKs]· îúNAWwº:j}O |¥Î"NÓ¦™iluS7 [²e·²äèÚc»¿¾ÉóÏCÒ•c7‹Œ¢( Àöª¥­J?Ýï“W›ß= f{¶ßäé-m¿FÿÙü°¡îÕ‘o§¼%j£µ´=~¾¡Ž>„6·.Ä6:¿=~µyÜ<:ÚA˜·NsóáC£µÍŸÊ4;eš—G;ã\«7ÿHÓš‚U±ÙƒZˆbó,Í+KÊn®:z›o3í¦Ÿ€^‡i.ÒsÆ5oóP3YIpŽ¡±¤9|ü×´!'7¤•iMLÛ:>žMĵr`¡]ŒõÍÕ›¬*«èuÚÔc0çá;£m5_¥•Â3 Øø¬ùèUh~•tòäc¿Xç[e4Ä$Þ¦²±wÎ5§‰ÂµÖróM¢0LÊx'qŽŠÈHj©à.“cÔ+ÅbG}s:êtõ¬ì Söž Õï¯NÇuRU±ÇdÖ?o¾Û°¶ï6°{[ÀÁÆÝ¾Ú°÷ÜÂðýÌùæÑ†ád<=üó&DjY†£-«†gÀÙäU#tW–KŠ[§íÖYÓßö¤XV+šË26 P{+æaZK¦õžšûbú¾ ÿµ˜ß‹y-æ[1%柉ñëšÆbpGÏ>OßX¸?g™ÇÏÄøµ ¿š«v-OÉçBŒOý¹˜ÿý8 1xÐ-rÉèÝaFxw𸱪,1Öq(ÈéWT÷ŽjX‰`n¹ÂPŽØûqð¤ ïð$ù>9á@.)£›–†|#æŸ×ÎISˆÏ/;.ˆ¸ÔdꓬÃü“¹Ôì²3As>ww¦‘ðÈ}9‡D¦³›³ø=™[a¦Ã¿ñ‰yF¢£ƒ8ÀAÀh€Ãå4Ò›MZgÃR­5æ“%¡7Íàñ\ÌgÀi¤v®ØHö2I,°—žÌ4 û?$›Á‹•÷í$AànÉI_§udêd3PUÜ;ªáÈSG¤‘G^7sKÜ ÚbìËé¥jËZ´6&—CÇ5"G±ñÁ±+¶®¦ÙDÝØ£©ˆSGüLDc}† ­ò’p¼FڪυB„ëÚ±%DŽ=l>rQC”ÁÕÙêQ]r(ñ‚jƒµ[Æù`à»î¬tiG í0[U0·½˜Y‘( (©ä#±A{nŽÇKˆU(žÐ´št`nì5¾ÏnÒ‹þµs»w,^‹xX£ÙÏkŠ Üj.:-R-S ß>hªD9½ÝéÐz˾µ”Á r·_Šr­#ó˘Á†ePl•'Çæ“8s{hÚ›BDåZ-ùíMzÚéátÎMy²© ƒ 5Y‡:»Çë¢!,¼ï9TEÆô9Ï¢>fyögZ¸¨êN+ ÿÀOl’E`¹etA›7‘"}G7MyO¼d[É}v/=Í7L­Î¼›¼›i}7ïØC½cuÞÑ¡üo² %¢°¨]ºuTw ¢)ï™wð"ìå“1†äìÍ~ŠñŽ~r‡úIÓ4Š®’-÷[tjF: –/ݼF}·XQPh­2ƒAçªÎ»™rðo Áô ¯7™EKíà …F#|?Y÷1RPšÁœ|7ÇøCƒS»ŽékŽQìâÏŽ9Ì1á0Ç žc3‰ÛËžA]í”þÙ3‡y&®{½š mºB- Küß—S/D•¿ÖšN*þÙVAñ¼T-m5¶èÄ¢Ÿ` //Ÿºe=Ú¿TìA¿Zù¥nŽÙEØ-Ö¿HÙµœZÆPêÓJÕZݪżrhe­U¡h…Žâøß ¶ŽAÙ[—µõïTÜѤ|¸½õw ëßB«ôùà¢fµÁO—U\hßs?xZ·ò3½uºJvóªgùJÄ8ùOÑxgx§BïfOeìÜÝSŸ ü\ôT[ÅÉN£R$‘Ógt×]p~µïúl_7·òTÜ^Šû’µ”y¯4öÝô×nòçl&|z¹*W Öõex¾T`?½ëLÒ‰äõàšþÏ5´vW_ÝWÎ.ÒãîΙ|m"4™ÜE]Ãð•!GÒS1Þ¯lYNË/·²ÐÀ}šSµ¡ ôéCu(•Œ3*c§ùgI­dÃ$Ë3…m²­JÍMFÙÃ,*:–SB@FPÈ ¤`¤Á¼(Y_ùèØ,¦†d/ÂRµ°|[ÓZ+^ëˆÓ*}$‡NÅ–>6mÖ ³Ì7t£HhÚŒ-ØMu!’'ëñìÏ饇IßÔ²D휅J:}ü¥ g‹J@çb>àÖãVӿĽ;RˆR—zpĆõ¡òožº\¶3ùk⬮إ[ÞäÊ6pj€É)?‘´­R},0󙥳þé}Z¾V¼8Qf‡VÞ}?}>ì¯^Qö…Ú¹— @eYFP}óT¦Í›¡IdY”æÖ‘5QDˆ¿á²ZãíÍùSÜð ÷g”ô¥Ÿô†oÞ=†*Žw€Ðˆ:—­Ì“oŠ*Nk9»ïf‰ûY¥½­6V/«µF#I©¬A*àT~ú†»[hdÈ >æpÇ6R\Ú?íÊptÊ‹nJ÷xnüjÑNÊ…ú¡ïÎà ^¡Óc4c®Ïiò‰oy¬¤œÑTª,˰œeQLÁ–iäs—a\t¾j,!ùã yöëÌÉ*­}ÏÕÖ¨Ìa¨ôÀÌ)Å…xý[½.óù)p/ «Ô›/Žv°lÁñAr]¤¡@yÃlrZ%l*.b&=Iqº§1Çk`ÁÎp ÔJEÙ-?Kõߥ4Åmzª¡çBzpÖƒ¬Và ºS6Í.†%dë¡AõcWð¢4Õ#˜•g ’|þ%Á;{ã‹m~Úœìà”–ÝÀäãnýa|ö½Ô1œw ýœïn²ÄµÇò™$JÂkþ’¼â,coÊr]¿§Ø—Ùô€ü€Çy»)ØÜy`1xš<«éœÜSVŸhÅxÛ(¬ØÓÂþ¾ˆíóqöÃ8< .ÇÙ‹qØŽ/®N•¢Š‹§ÖUj\|Ûw`@â¡_?“úöÍ%Lo¶`ÍÉÎÓ7ãUí Îw›ÿäR3endstream endobj 356 0 obj 2893 endobj 361 0 obj <> stream xœÝZIoǾ?ää4Èi˜íÞ>DŽmÀŽ[¢Oq`PE !Eù‘²åÉo÷WÝ3=Õof(®>:°U¯ªºöª™šŸ:)T'éßð÷èlóñ³hº“‹Mwªûºžþ½ùi£†ÿȽ{|@¶SJ$çTwðj£|eŒ>t>&‘ð÷àlóÏþùÞ>. ÖKÓÿº‡£QAÅþ ~½·o¼:Úþ;kLý°e Q©Ô\:%±ý–ðƒå“ÌEè!ÐuL \ÞÐ0ãûwÓ‘!œâhœÒ6þëà+ÒÇs}´4Â$Òêà%4xBÈ6iI,´ѸÐo/³¤V¦ IHguŒ6áò}£ˆRõ%JÜbnÌ(`²x*¤ cÿg’)(/-Ôi¥q ñvFk7 ;¯mÿ’0¼pÎö_´’lCœ“TÊpÖE@ãcŒý~F7PÞ BYSË»nË=>º¢{6Ô¨»î/':.*Ó‘ÌúùÁæÛB(Äî— b#ˆÖøÝÙÆim„rrºy¾oÉ-Å›`®bç-X'[â­–‰Ñ;ø¥Ó ­“pÝ»lŒâ–mƶA"€FµƒêÍ„-&n‚>ÚÛ·Æ ïì™É“'œ‘Éùþ|Î46|¿W]51«ŠÂ[²O÷âÖò©³ÞÀÒH§dDÒÒ. È»í1,„X‡Ò¦ƒ‘£°„c‰p<þ[P6.ú³JäU´`L–6Vá!eg«¼.’N7X(Bu†…û uZ.Œ"†Å¤¬X7ó­2¸FÙÎ0ˆºøöû~rWI\„§c™û>Wl #ºïDE®:œí” ݾ!)© ••S^¹BÓÊgE0ÝP|Ô¸u&¼‡:—F©J¤]Ê!” Òà 圌£Pÿ!¡œF<­…pGŠÝU¨ï÷Zjªg‚!T¥Ò­ÜìsqÕÍ2Äá ¯e°ö†&õÖ‡ó󇥲æÆRÍ+ôº£»»T»žÎÅ΢<¢ØI»’æÏ¾¬Á Ñ£²Î0B¨z+ Ô|CH# JlÆ¢j3!Uà 1”êÈY[Ÿq¦YhuŠËU ÖöM'Q«R´ŽJ«ÖpvéC/8dð ÇÙ¡êJtâÇ åœ¡¼gðG= k½e(¥ÉY%ѯ_08—à5;êmûoøœ±á¤¿²óÉ þ›AL{ÿPj,Ô¨Nªi9¸dôayxôa©îæ6KטÎ8 ~Á¿½eF~ÇT|±âÏ× ~Äà&øºWµ˜5ª^£ªÆ:êªg»Æ¸ÝÑ»“bö:Wªôð×ìVOœüg,NÍ5̵ÍÅþ‘¾‰rÉØ|4$‚S£4Ü-åé<ýòù³¹3ÉfÒP²èFµ, OîK†²]IÅ7mnÑM4·s6kÙ}Áæ|ƒkW½mEÃ0$ðó)*¯ïÿÂø¹T÷á?ŸL·^á5xwcžG8FIa#‹pƒ‡©ï'µoË5ο°zÖÿïZù]cö¨šÊâÉÏL{¢r÷”ß”>vÈïŸWÒuËà—óxãi§äóóiˆm”âOÃŸÏ •Ï_°ó?f8…ç“=Š~céÝ•_Æp†[H 6^(jn4)eÚz§ÉȨâ=Õ;ä«ñWïà1jÍâôÁ}AWø¢š¹ñNl‹™ÄóPäÅŒ¨ì=3‰‡yõG(fW ‹”'s3þáÜí³¹ôFcVOW˜ÞFExɦؼ[´ÎHMüÙ&ó9yæUºcæ—·*á¹: ‰Ïž†¯'þ$Y£Pj’EÅ èEàÙ®>üámBÚå=pʯ™UôI8Ã^3ë™bm]UVßô·¾ù=˜–»?fS(eµçûÚò6þêhcŽ©7¯Ÿ!ÛnlËÁº)ñ“ôÞ©B'„¥—óà“­K‰WyûëQã4ËTR«ìDØ>9§Š²6%Í·©çÓ&”UÇI»³L1ÉðáRi¥kð¹ÄÎòy½¬-j™Žyg?\Ï$¹síòšKõªÐE¯šÛd·ƒrö’]ÎÿCç²û9÷+ E0~&`·07Κ í·Û»+òá>n„ê/p ÂJe‡µÑTš²ñª¦´[¯<ÀHÚµë1œvWue矓‚V;ù°=¹a2YZÚdš­ä³P:C“²ª·¡)6×ý¤eYzzŠÎµ¢ðÕÿ´‚îÝ7‘‚‘–¨ŠHœ´’þª4­-–?]Ð4=„”£=jEiì$è‹ ‹©Äò/&VÂ~6Ñ5¥è° ëü©ŒæôÇå»›„Pç_x\ð„¾ Ñ1pvƒ<¨ƒ¬<žó|©†<å9ž¿ð@ý2ûŠÇºÔø¼ãC@ň†T;À‹©ìŸOGÚz£v#2«§æH½:9è#ãÑUª«>ÄØbp--3•Š­kwä(GUEʱ7@v»ÖÎq©k/¼œ,ÐDRÞwcÀpjõ+#T<«x“ 7ÿÅh ª.b´Æ„1Ë2=ϧo7¿Ž)ûæendstream endobj 362 0 obj 2237 endobj 368 0 obj <> stream xœÅ[[o\·~_ôôiѧ£Æ{Êû¥q´ Ò$@â¨@¦²%YjmÙÑÚ‰ýïû y.CžÕÊ–S†éÙr8÷!y~ÚŠ^nýþ}öró‡'AoŸï7 ¼•Û¯§Ñ7?mäð1 o¿8% ³•²ÖÊíéåFø!ôQû¸u!öÑùíéËÍ¿ºNvXÌ[§L÷þC­” Ýß2Ø8¡»ë“v®WÁtÿ °’ÁŠØí-‚RÆî‚àÂJaµén|»oÓ4Ê;€Ï€¯BˆNw74L»îm*#-Gx¡¶R™ðïӿӆߺב¶uzŽ-|KÈ&*á0…r}ÐÖw·o«FD¯h`Ï`r±øN+Û!»?%V1+&Lã{ÒG/B÷[âÉK' ö :ß ­° Ím!*; {ç\wN®·Öt_†6RháÐÌQH©96gp—б 92eLˆvÒÍùÌÓíEÞAÔ:ï= jÜ;¼=Ÿé8«l$Ö¿žn¾ßHØBØþ²ÜûlÆA¸Û—ã½é!øòbóÃÆ@É@ÎöôäË™ÊÑN”D¢ì } ™gˆ„œfö^õ°Ûk†ÌX¥v¦7¦˜ t1¯8»Êªƒ„–ƒHaz§ìÖwïuv‹¬I%lèÞì¬4=þv¯XÌà? ÃQÚÆ>µ€O¼að;öÃŽý ¼/—šÆ˜í~ƒ6ô\—Ó&œmÿxÂþóùL0ÙÔd“ 'ujŽ•(2F®ÓìAt çÐ*­SùQ:µR÷BÒLà†4G-¶÷²¥¸¤.ü{¢·tE㺵P+¯P•ð¶7–ë*‘ÅÒ—'¬ròXÌe£–|""²£t}oô ô/˜Ð_1©¼$j»§ëm­‚WÒ¯Œj¡™ôÃQšUH×–z±>Pþaâ$¢^”z™±øÔ#ÖDéŒê¹f™{ ͸Þ»ã-_¬Hývvæ¦Ç(’ûã+%¯ºåºëØ÷w±I²…B\¥Jãu…*Y|ù[¤òh²üŸ­ˆë-ƒ¿™ý˜3ôß1øÓ•üÅ¥x±â%I§ ¥‘.¦|Ìdþx©<>åAå=^އ2m†ß°ñ9¿`øÇ©zÒb©üÊÕ´Õ½âª&2oJ¯‘й}e5 yÕV“ÈÈjPu*azí5s1òyù ^{ÇJ ¥>_1ˆ³%-7¦ìä<ì_6Âø=LbRQ©ÙÊ$²®æz$²ð@ÑW¢Àµñ“yÿõÒ•Æi¸“—;ÛòrîkS.”}¹¤ý•¼|TV¡ãP¹¦Ð¨£ /OdUnž°ÊÉëú-`©Þð†k„gÑ: 0΢ÍÌ#Ÿè ¨ë“©ûϲ“Ò(—wc…õ©q0ØðýIˆ‚.UF í¤—±ûåÝ´ö.9š¢¾¿=ÕþUÆÐVu/ia:ݪ³‚Þg“ÆC’œãWóÔ7y:éb|•÷$Œ°œ‘7„v;….€4‡17›Q>R8gÓ1£ًRȯ26ÊU®/2 ÄÀ™B`…¨4 ]«îgct¦ñˆ?f”m ÖÈ–pC8Š{r0ԛ鈆Ïužy¤Ÿg œÔ W·’³¾ßsÒý£ )Ÿ ¡ØÒa–BñCF…M«qÕoÒy–WZ&V‡áÍ<¼˜†yºÒ-”€ Ü8YZZ:ã|séÈAnw’º%3ÕiZ! GuJò#ƒ]en¢ *íu€ÞÌÐç3ôÅ<¼˜ZìÙ­JvI7MvC3~Ä>m-]OPÆüÙŒpU“¥áùŒÀÈ^ÍЛ ÚÚ‡õ¨#æÓ½»7쬥'ó*l#dgˆT!ãM-zÆ}¾¨&K34Eï{áÐ>M,ï LÑ—ñ즚»B,wVéqÂ/fF˜ßäIZHÆËOEà5Óåãî,!€—2Jz-wû"`¼fˆoîÀw˜Xä*l¯Ò†CÑ/o§,,4Ý2ÂÛ•u†£ØcRÍN¡H¼òëýëS¥WUäž²"O+‰)BJo½]²c2ºAMCØ9ty>9—Åx É$ëx½hËh©¢áXÿÍŠð®ÛªÞÓ’0U— ÄHðµ˜xUÝþ-áÄd Ë´‘ç^O'M'S:`£w„ŽË9t0èm—E‘g­Ð1$¤½n’ŽðΣñGF”&*Ìat±»”/[¹pØÝ Í̳¼ù¬IvÚœeÞ³f~>_›šÝècS3*(ÚfF•YHD¸È“×e-'–þjèœÇúÎÐÓ&t‘VëB`‘VÂy3V©÷³áHãAœ Jè_Ñ5$n^Œ4wžá@â^õ¨hà%’'n$'¤úÐÄ­0ÖæW”ÛÒ`=Ž(Ô“)ô•)Ðå1Úäœä<*†Þ:·E·Ž¶ %}"Ò^Ñ2Pûž&0AzðNJÊßtßhülæ ¸tS<\A2Úûì·„iŸ(¡Üˆ-üÐê!™I'‡+ÜàŸõ¯´Î­:Ý5#åÿð:O¡†b@H¹"ˆ É½¿ô(gT¾½Q mxÓ[zÜöô›Íéïs}¬°6z–+–b)U¡ì¶1Õ­~¸NÂÀvEÅpI@Õ‹è»×¼MkµÁ$¯âè"/·–¼YÚÍy‹¶|Ÿ×Öq#^Âð„ʪˆ¡01ªe^«÷ûA:T5A},—üiÞ;¯ Šó‚Ä·ŒºêšGŒ¬g8MÑäYä„0ylz™lf´äAÇÕ*­+±5]µØßeã£Kù=l)¡c{9äj䨈$…½K¡F~ˆJib³W‚ôˆ£‚†ÎXlH¥þk&ª¢R¢ßÅMj°“‚_ÒÜsý¬7£ÜS‘6Ø_z¥ÀÏ9ÎVlqYë{D®§úägêòw*Ðie¾Ãs¢,_ c)üØ›º´Z½öê€Ô¬µÜùöo¼,~»RŠwüCšÚ+ño˜Roî>cÅ %Ý  Õ[iûžZ.8RCŒLOe®ê¸1¿ Z°Uøp !Tmf‘™Ó±VyŸuFQhnoÏÆÃ®ÂÊÓé²¼œûëú”ÊKV»,Þè®áì—„ã+%Û)»KnS£eF]´‘ôÉDüà>}ÞëF  ‘jKvóF‚ß{ç &P|7|ŽÛ¥³Ö‡»A<¨:ºŸçÝsù­f‘övâÏØXTƒl¾ÅÞ“§ø@¤ô:íÓÚSyd­\ñ6éz «U´!I¹é`‡ú¨$?Rˆ—•´ÓÉpƒT¡IÍÉx8š‹„ÁÒ33¥¥—1KÇH8«Æ­÷fcòÑÈyž^ÿ4=ˆ©ÐL0S¨WA‰´§çOÛ‹ï+ïÄގ7ƒË€þ *aáè¡Î4É_æBŒn ÃÁ±e!«E‘‚²¡ÂŽŠüU¶ËWïRy‹>Ùû l#:^l(ºË rk}t¡@dQÅÙd ¢€?mwãåëÀ"3®ðݬ†4ŒÅ…’¿»k¡ˆ=ÎÚÞx½{Zj]÷ÃOá«•ý4]”LZèÊEÉ|L…Û½jΜ )”wH#õQæÛv†Ya—{GYl¥7©J %£³ZVu==Ÿ%kÿµÖ$Ëáé®ñ¶*©è¹®Ž~ÍXŸs•‘UÔ×Mãùnº}}òå0¸}¾zk[9ñxmK…‘v«<ª¥8¼©’…3O×ÖǾ o_«ˆRv£¼î£Ë •Ç;z›>¹²±¯N¨77ÔiÞ ‚ ˰˜†wtUšŽË]ÝUÑ;õծʧ[¹{tU±‡í*[vUU˜ §–¨‹*3•J]w#^«p_¿w_QÔGä®®Ž3ôÂ]™C‡óãÓóU7Ÿ¹“6S zo©MØî´î‹ÃÙÒÏyŠ(¼kkŒˆ© ÿS:È 6ÄØÎhiÑCŒègÙ`¤5ÍÄHÙ I©²QeÆ’!ê6¢‹¥¹|v[ÀvêãØ’'w%ìåáÀ"ñÖÂÕÂÎw"÷ÜÅ ‘?ÚÕ6KoU²>Õˆ½µ¶¢Ö!È]†ë•Ò£ÂˆæØ¸€òÐ(zW- °\I†ÞD މ*„••”–|©Cåè°ÄNÓƒq­¦µD@˜o¯…JƒÎíwðQ9úE¢P+µ`‚¨üI¢øBTÛ}­}Þ¼ßJMߨK®åÞ²ä%‹ÅB?~†ûK × U –hAký¾ž#]?× *æa~È›}zG;†v$FÅcoŽÔüH¬]ñÀÊ•ú0hÈPû;r1ôkî“‹ƒº*Žt#qW*žsqÝÑ߬$Ïêq¥5*&«\Œú0ØÿW.¦èš-ëÇåbDäJ¯•»)úTF&;••«@5de‰ÖLÙð!ê³9P­ø¿ ~Nüÿ9ÙY:k“*¿-(«ÂZP«ÐŠˆÇ,tgh—H²t·„0#œGÇzTh‡Ûè”(¶/¢zkzo§­V´S„mcU{w±GÞ›ï<ïï鱕IáÞ¨ãý ëá¾Á¬.k+å’|`n×” L1Þ¦È?“äïa]Píxæèx+hêýT”‚Ω;*hî—aäz†ImÞøFX¢’£'˜/7ˆ2TELz#¼Öøi/·{DÔ+_ŽÃa!©B‚™{Lò$í5¿ Gèè™3J'';ÿ*Ù9š›n‘4J:¢§ë}£ê®ÎÒH{“ñ{¾{ÆÀùË;Py×]<pDŸÊÍÅ8u‰~ÅpÞRÚ3FJ!SЦWº{; Ãó© Í’®=F§©mº} )ÝVæo ƒdÎH/®ÓŠÚZ5íÝXÎ÷m†zí»o’nµAûÚ]<ŸQ.nÎùJ#7éóEz¼@g‹lÆó’é¾å=e.†ñ’† á*Ÿ} ÈgõIN\8ý^ýšaî(Ø;õrÈW< ÔјÚÐÃÆd‚Ì/æáÄÎ÷›ÿÿjÓendstream endobj 369 0 obj 3756 endobj 378 0 obj <> stream xœí[YoÇ~ߟ§}&Üq߇•<8qb$Ž4 Î%J”‘”Hêú÷ùª»g¦zŽå.µLd@0ÚÕÕu|uôlÍëµhåZÐåï'«/~ z}~³JËk¹þ¶úÏêõJ–ˆB¾þã í0k)Ûh­\Ÿ<[ÉB/µn½ókbñ÷ÉÅêŸÍOGæºùp„G-½ Í_Øò‹£v®UÁ4?Ó²’ÁŠØÜ€Z¤ŒÍSZV «MsMô¾ÅÎïåVOA®BŒàrIXÓ®y3<2‚—xÔV*þuò7ÒÇq}”Ð­Ž¤ÕÉ4øŽˆMT‚X(×m}s}›$5"zE @:£B0‡o´²m²ùŠvâãqb"ŸÄ“>zšßL^:a .ö‘V Ço«•²…Ø:eš3¢p­µ¦ù–( •ðdâ…”š³ÎjBh6‰\Cy[„2&Äšw¿ñúi>Ç›uO†êt×ÐýlØÇEe:’Yÿ|²úa%…°~·6|›°aŒ»¾XY¥t+m¿òrõÓ"ޢ݊7«Ûà ÞþJ²9k’1z‹*²³±žû:kg¼i®†Õ˼ªàÍ×G½iß$»IiTO&>ËËÂK`ÄÆ @ðÅQÞ—Ã#Ûxˈ¹Û8FΘÜ÷ϲÒV˜•Þ˳ßçð"uäaí[øW&rßB¿ ×Ùú(…Ê».Ó.a¤)‡Ôv­5Béuµ‡é|“m1š›WÙD û§•™ûåKfEnŒ³@paó8aqÔ‘Öͳ`8]vþ™°{ÂØÝÎ;èj^(¦Ã<:8»ç•IÀØ l0îã‹)!RòK¢QF.®Òš[= U#ßµ1Ûûmf…wó>‚÷„ëpð‡žÁ"ògq èc\KÛm™K‘+RÕ#<"”ßÍ¿6²ØÐü>‰l'±«˜ÚÖÃg• y-2²|ìÈ' TZr 7Ò·JµÞ˜F€úiÛ?’¦Xaö ]kdöõ^’ÈîÛUÀŸUóúÅV¢†Åý&Vzæ})){#J$,­BÞšcUÚùPuåG¡ÊŸJ[ k9”½:jß§ÚªÁ×/ê,”\›6š™3gBÑ ÊmªM¹æ» ô’všœ_ík4JÿˆDüóKÃâKa×öÑÅWY=øåhØHÇm4`î4ð…Še­ÏìO†Býœ…®T"ÔyΙ†½£4Ï3eK*0\ÌK¼ä°,ÆIÎsò:6…ŸUbåäÃPã8 F\RTn¿Ø‰UyJõUµ˜ï¹Q*KšE[Vk“Òl¬|ÕlÍ9×¶, ‹\òB•p_1[f›8ã|%ߤP[-¢uœüCÖ0˜)p‰we*‚ÑûØ'&ßùðÈVß0f7mtéY«|ÓñÞÝŠ(KnáÝ÷Uâ&¼†Ä©DYCU-Zrsó.=ùäd-ÑE)Xt (ÈFv!­þ)q²B)_q½úBØÌlŒ¦£@HIޙ疞õ­e=™ÆŽ¨û¨ŽÞ¢¥!†äŠáÐÉ—L#\ô…5>TÄL¾¼±e÷‚|³Pº³\Q¦gLj jIÔéJ—¹”¥ JÕœ¿¯N~»5™Pep–÷8ó̯Žàzm±ëÝÀwš#Ò”#Pž£qßFA 31h×7•:GX¹›k…oGá.Më$òKdd$¢m¼#ý1žf ‘ƒxï¾<µéLŒªÎg7;Û$‚b±C$Q‚ [ºÌ”GÐɾÇcVª'T ™yKÆd”&|¹µ@”ìFúKºB#fwÊ\6³Ph`` ,[É»÷Æå"¢bN£]_·¶Úª‘‘xõîžéžøã7åáú|ßûeÄG¯M@fu&_/ÇEÖ‡­Šþ±—cŸ7+ó’ !S×¢ðÆ¥9¦|‹fþL¡pvö´…|[X EOL!(8T÷d J=K÷Î3‚K7µ‡±UÄåUÚ=m¥ÂVÈï(ßScÍáf9å ÇBø:[Ñ;wGç›.æÍ®óµ»w¾¹™/$é=Öy–…*ñ[Õ+¾vN“r_Ÿ´ÆßrÒJÙR…ËÅ8]Ž{aOog{a3ƒî”7ϺWvΣ¥ÏÊmíQÚ)…ïj†©E_jF%Œ^Ù8»„Šº× ;€7v§c †æ$œÍÍg}Dè½~·ÊÁA^ÞJÂèw {+Ù­Ð[IPÅ–ˆllLÃBÀB"Á6+F3¬ôDÝ6*ò>p>ؤ3Íó‹ïÞÃü»ÐT}¦7ÏåUèù%1â%г•ôºTQ´ôËOÙ{äË…õk¶~ÊÖoèoè(•®…§ôhZ\ä‹÷2EîÉqw×åÅxYÿ0•fBÁÖ_°çÓš§…¬ì.=™äYgYéqÉv~( Uí¼f$gl}d&â.D¨¶^ŽRsk¼\ÐârÂ<¿´?Ö«òPÜC­VG]£OzâÊЗzNôáTtc[ÑÇŒÀt=5Èp ç â9€x5uTÁHÎ$1¿Â€ã-=?gô\€³]Í{|‹g{§U¾.^ë)èg'žWh—9L^h˜dÉ+O™Þž}Å–¹†/Ùzn¸füÌ["IúûáÔýf.Ä:çváθY8鸦èÖ8›f¸p•¼,÷[g"`’Ε8þrGWø<Ú P=V*ˆ™*UhÜÁ‰ªìâo óæœ<î!œÒ.£Mí<ò)–¼· )åÉ”#Ò¤TK¹ÿWT9 áò¾•ÓÛIfœÉÓR9|V°.í0k#.J,Ò®b§[þß•3aØš)'ýË']-GUþuJÂáżI»ìaR’‰ô³Vö&/³%a§ÂÉsIWDÓÿØZÚfÝù¹ˆö©õãŠè¡ y¶Îô2Êò¬a+FE´'b¼{ªn£D3/8bi—; bݧ?Å"ú+ª~ÿƒ{#Çýköüf¢Q®~×õ¡Ù¾n‡ÿx¡/y¿S`ôH­îêÀô³  Ú%SN…m}Ô}]áV¸+ë¦õÃf]òàÖ¬›û­=²®÷ò¾i—úi¤Ý8Þd•,UÀuFòdI»¼®Òî@TñöN•§¡ †Ó´K§Ê£-úL»Ÿï.ûDmÿ+è‰ùNÅg°ceþPµ¡ jÚ¥ÔÔ¹I}ÈîŸä-[Ÿ{6Éå·9.Ì$H?—¤í%)ýc§’4À©B¡®œ^¢Ï0WvU%©'ó.œÒïU 2mÔì÷ªne7ünŸ§W`%;{ðq:H”(øo¸3¿¦È;‡fÊ0j4}R¢è'ìg+‡g©úùâWiî+º “òH?ùBè4;C[ kKs™üçD>‹Çé'Ãã¶M…4ýLëÌÂÔÑÍm÷Ci\˜Úýx› Þ64??èìØ0_Š ¯£¹…òÙT›æ‡´Y”~½ˆ±©ç.6J…ÖúîU§W³ñýU dt6w¥ÍÀCöY7ŠMïI-zHDõÒˆÈüâc–JÙÑÕàN— Я4 ¤ >Íy¨»ã³“Ù¨{4DÃgJêd¬:@¤?ZÆú1 úâVùj˜kÕjgöÿ˜ â™ÅÙØüÕn0T2ʵ-a£?æ cTetÊÕ£S ÑÓ"ξIól|ù¼kXÜ.ÆcV9Ù‘|:G 8ƽ+gŽ2'Gã£ÓÀ ô=j_E^X^ì—mܹ‚³3†&÷N¬hQî—XGŸ2-~^‹ãQ.%»t+û^«•Jʵ&x9™c5Ó‰ÕVÿ‘zÌ¢endstream endobj 379 0 obj 3124 endobj 386 0 obj <> stream xœÕ[Ks7¾Oí/ØÓTN-Ûêðý¨8‡¤6»µ›¤6v”S²»¥H#Û½¢±ûßï²`ws4²'©JåAø‚ô¯kÑʵ ÿºÿŸ]­>}ôúÅv•Èk¹þzý²úu%»ˆŽ}ýå Í0k)Ûh­\Ÿ\¬dÇBµkb_Ÿ\­~l¾?:ÆbÞ:eš÷Gj¥ThþžÉÆ Ý¼::Öε*˜æ"+¬ˆÍÜ"ø el6DV «Ms×ñûØ|›Ä(ï@>¿ !:Ý\Ó4íš7i¨Œ´œáCm¥2á?'ÿ¢ 9¾!%t«#mëä[ø–˜MTÂA„rmÐÖ7w¯“ªFD¯hPÏ@¸‰XüX+Û!›/h&V1+&ˆñI=飡ù+éä¥ûÅ<ß ­° ɶ0•혽s®9'×Zkš¯‰C)´‡qHrRjÎÍ„‰]’FS匒€ãÏ#õ= éÁwÙ‡^ Olæ¾Mô7£ªÿ5!G´Î»¤Iç~†„-—²Í8 VÂ_2áÌT¯37ðÊ©¥¶·Xƒ’¡ï*E]ˆÁ Žë0mk{Nt«E´ýæœq‰‹±Hs¿N÷Àæ1­^ŒCFå6Þ¶ÃDòà1Òap}Œ4ƒ¿Çì¹j8ÚÂFÆPž*`ø3c/\tÇšñObž$Z«É¢©Òð0Û¾Oǃ>öJKÎ=”2œ™»skK(›Ÿ¦öM¤žq¢^ ̇ª—Dè7Û[&¥b¾Â;?õÚ†‚©Dq¸H>ì§w«+²yÛW#öÒ–•@ü|i¢{#liëZ¡†lPÁ4ÆÃˆc¶;GCŒ)÷‚¥i ¾,ÿrцó¸8ëMŸ"“=Ÿt'¼ Å–ÛQ ‹+F}’kåd‰™í¦ðJ>ÖëÈA±˜¬aƒV¢öÛã(IÃvžÃÛ¥áR×®Ey8”a„£acå¡—* ‹¢ÐÈ¥Áó ‡õP;:Vqôª8B”@hÎkTà(XÕXâÂLÕbç#×@a\ÃL‹ãÇI.‹æI›¸ÆB»Z^‡¥j‡¬ï”…täÉsµó*×À}è°œC`³R·ÞÂ5#Çã8gô £ßõ3có9 MkQÚ)ÆýÙÈ=°ú`—Á…í: v|ZYXæùÃÊ(lÃìk¨kƱ- %­ÑØÌÇdØja"_ÚCéØú94MÙ…W!\Ml‹SË¢yá0¶…Í‚µÙ¶f‹w‰¿où†ô’Ñß3úu…ÿŠÑÿWq_ë”ÑÏJ”ã WîÈ[Æ}ÃnU—ŒžsjÉÔË0áœÑ7ž'óí¦ñoœnlqÜ4Ÿ0–SÆÂé9EvÿØ•H p…I&Zц•4M&Ÿ™[#3’Î*xÃè}ÄzÙa<¿Á) æ&yÃYú ‹‹æ©2ï\…t5©E•­ Ò< Zƒ¿ÉþÇÜÑáüñ’¿æq³òò÷Å<\Çg ú9Öä'ùËŸ³ª—ß²^×&ðƒr¢†—1 ÖJìKkÍ0þ¤¢Ãl-xÑ㝵°¯4AÖÖzøa:B´€¶Ÿ…Æ%ÂAAóôSúÍ 2wU0;^¥y\¨` ÝÙÁ×2ú«¹œrù;—Ïu;­ c)dæÏŒƒ{ XèI6St·,²Í ÊfʵÂý~¯› ®éÅLÍË]?ƒÍ)£_vo…Ž^Nò„›rù k]HæÀ¸¨8½ÆÏÁ6}CÍÉçõ\Ê ² aÆ/*É™kö9ãYx"™_U´çzî~FI?.ïYƒæß¶‘×ÌÐß³_d ˜/b%LÒ£ ¿鑿™¥GüÍI÷'¨F÷L҃ߗ«QÉ8>etÇÆ Uê¬Ò|| ™ UíN™œÿÏD;€8@¬€¦)S´ŠôQ¤hš?.E+åQ%H÷­ô]ŠÞǵºŸ[wáqho™fëÖî-ÜK÷xoç½HWòÞÃOáÑy…Ó'í*Ä@/÷W3§óûÉÈ5•ždu àrôãÊØðÑSö„‹YãÓÆ©¥fSê장’‘dʤVØ*8ãÈFGE."Æ6ÊæË”Þ%ÓÔŽ&Z%´ú–±'Ûu?uò‚Ù!eÃ'¦~%\cBê]¥–ho|óÝ Áë|8Ë p¢tÝQÆiۼﺣ½wË5Š ©d× –t½"—#é·«wçä›ÕÉ£›/*q -’³ö>ë*ö¶hé›·õÝsÄ­MÑç[öÎõKfÅ¥-š¿?à¾?N¿Ëö¦>õž;¬}=TK}½0Y þ/ê6*OJ›Å9'M\²M„3•×ëbÎt ¸ÓKSm!Ýt»ÄðKÖÂ91oaCƒò¬­›À4¸ÎâSXá¸{Ü< õÏÖ'cwüK&{n+ÄUŽi_â °¬‹öÖP•:ðEÔE×ßQ¥¶‘´PQ· E£ârwmÍÒ"-ø6ˆiá¶oNºØòŽ>BÄtkœ«#ŠÀrÀ¦ÖÜv¼OS+’'2uà2.²Ê6úšY»ãˬ¾’ªh™ä†}q4 s‘yË&HÞVylqf £u’à ’+Љ7 â[ÀeºzÔ™ÓCÀŽ`.{™É$Rʽt/Pš¡>‘-¸+uºNÝ•;hwÅ-»m± ¹?¶S"!ÛêÙ—Å6j‘Zì1‡iYXêݸù[†ÐšË¶E+,¤¨Zó´GG­®4\z¶¾ÅYí}¾¦Of|,c–Ë`‹Ÿe•„ “Fê‡^TÉ>±˜lf)ÖrÒ–¾å JÇÈo÷¦Ý.#†”;Cc+þ’bĺ г­mØuÈìW´*½ô-X†·mU~"å0ê3ÙíMVµð'·#w€JßH½ž$ë~á2Y󄘟ú~n!›íçf¹|Ÿnû¼ Wjšg}då”T–¿á˜í”?ôJu2 ÿ<¸{Q­¯¥v¼„îc¸ø‰«š5Tå[a]‹z7È↱Ëß)úÂÄy¬$(+õ/´Ë‡øÙ¢ßmúK‡D-F÷Ö« £q¤ ”]ßµiÜ;L¡ég9þF¢à"µ– ¥hFSAu•¨F ÉšóFG÷¦cêTöÑŸÏ…Bç'ů1’ª‚‰6­õ!{ÇÁ.ù0ñú®æA!óEDkÝjèoò«¿ÖôCí†Ê õ weàn“.3Fcð²;Éùæ/×™][Ëx˜ˆ›DÃ]*a©Q°¹‚z‘×Ò-¯ñ¼;âé;²Ó#º6Ròy›n_õÛO œŽbSªE¼„Èô:æve:\d&"Yá‡å6—ã"ƽ¹¦,CzVêi‡ÍW¿¦DæŠô =^u{Êÿ¦T8Î5¢¢MèßCô÷vê<[ýn»B¶endstream endobj 387 0 obj 3317 endobj 392 0 obj <> stream xœí[Ks·ÎyÉ-§Í%µL¼c¼vùàÄI*±]ñƒ©JUœ-R”,“´¹’eýû| `f3˜}È´Êq¹tàÝ]‹N®ý+?ݬÞþ,èõõn•†×rýáðõlõíJ–_D™¾þÓ9­0k)»h­\Ÿ?^É2_jÝyç×.Ä.âçùÍê?›Ï϶ØÌ'ôæÕ>µô2lþʆŸžmµs fó/V2X7;ÌÁ)ãæŠÆ…•Âj³¹§ù¾ÃÊåF/0]…Aå–>1¦ÝæÅøÉ&|Om¥2á¿çÿ y—G ÝéHR_B‚i²‰J 庠­ßÜ?Oœ½"ÀQ!˜ˆÍ·ZÙ.¹yŸVbã±cš2>±'}ô"l~K¤JxÒ QŽBJÍIgµ !l¶iº†ð¶0eLˆ5íaáýUÞÇ›eOŠêe×ýr\ÇYe2’Zÿr¾út%a aýrÛð]² ã ÜõÍÊ*¥;i‡‘¯WŸ/Ú[´{íÍê.øbo'Þœ5IƒF%éÙX“û`ü|«(TmIã,éIÒ–”F¹ÍU>ÍßœmAÍi6w# 2¥b°¯Î†3¹Í$ÒѳÉ7ICŦŸŽ+/8½Ä´2jó%#ÂfìØÂ]–ÀëMcPJ¾÷mU°×†°Â; «7“•@³{¶°Èt Mö»g‡ÂÑð‹v!Üz«ñ!cÌŽõ'2\o­²¬²aí;¡L«B¢’q½•R¨¼Š…% 8Ò»øÄAÃú²Â!…4…ƒ‰É˜NF°Ä ½—L7XxE^¢´¬Ö¨.×fo}^óë¬mSN ‚ÑÉõ6À0ÝÈñ–kâ˜F!Ü#ÍJ …ŲɌƒiLÅñ(,/ùÍ~n ?¡tÞgàû„ªÚ+ï›J‡ß[áÃÚtàq®ó–r–‰·mµæ‹ 3–ÑÿʦNTzÓ*ö€û+ra%Lpm%Ó§ê'Ïä©y#q¤ôýì/ÎF¦šâÀ+a%Ê̸¤S|‘ET‹0ŸvAÅ0ˆ;UîDܶvß=Û ,¸š×TÊ š!š½G(æ)lÄôP&zX6iGDiDŽÍ;ËŸPùÜlÖAZ… ħ3®yR[e°:ÅÆß¿eh|Ùc˜Ý¼#'ƒ¾‚lNþŸø7qݧ  ìCp=wg€g] r0ÒOr¶C³i8øœœ ÝL‹5ðïÔ±dàbþ.t}ëñпû¦-4d·U¨÷éO%j§$‰‚a¢íêXòbg›Sù]›©‡ v€Hs|°S€aÙô›-ÐÌÇ‘ž‘–“ù.“‹Â»öi‚)˜›ÖÁiêœ%8•éÙÀ¤ííK»qàÁOì‹üßJïB[ÓyekëšGìzŸvÄží3…\¥Å(ù A]Ü6ªÍþxHq˜ „ÿAŠ“‡40œ®:mô€š3î54çÔ ¹=A™~B‘‰jkæ•DÒŽœìæM˜HˆêvžHÎtËvjhÎ+©ÚZÐTªšC‘ÍÃ$Œ.€Ð'|ÿÌú6È*D#`B„–¨¨8%ĵÕŒ©¢Òõ<¢¶ Ëù;Mšû`‘vGùÚ±—«cUÞGDeÆø<$]fuveÿ€ÏœGmô{·¨8ýÆÊ¶>&¤ˆÁŽõé`è“‹0rÏ3ÿR—å%[Ó& › àUÑ“·U·6)–Zl—T£ôt·¨œŒ±:“_8JžUŠÝÂWõ¡ÝÑ0¨ƒÆõH£îbð|/VebTÓ’™ÚÚª¹ ¶g ×MÛ¨Œ*oãó£ËÆcíQÏŸýÁÎ2ƒƒcœ¥ÈžÂôBÖa2N½ú’þBUØ/pF‡¹ý¤6…ð<ù*ïn,ªv¾åÝÎW£Jž£áíDŽ& @F=D‹„ÒLá _iè\¥MÆÕ fì ©ÝØ8OMîÏþV>î¯OmŽ{hÜ»µ ®‹¹5®GNº‘?UuÒÞ§\-ì(Q7|÷ªÕpO¥6çcb9‹v%›ì ø°/á øŸO§2ÔDøƒº‡o”…O'œ®±Ñg 퀧4Õ¡£¨¼?ÐUŸ?ŒYhD Ýì}O[¸¹õ]2†ßU Löjè¯_‚8¦kcA뛕ŠåšFöÝ1Më¼bÉ ÚQ“Ipç”˶| åª»ˆmŽ ^eBÐýì¯Òak„«iKqL¾&ég)îÀñt[Ïѱ‹}€4!ɽ¦Ö%ÉÓ.EN Ý¢õ'>oz»º! ‹Ž~}þÑêüG5\ÒåHGj7Gð‚³ìg’ÆqšÖXe›¼ ²Ø«žu4/éç‰zy–°)L8F/Ó¼fÖ,‘ŠéL/Õͪj)"dä’1 ÆM=x aâ3ïõà˜'ööÛy ÎQx]Úû =Bb!C?¦Õ*Ç{.4"ý’±\úŽã¾ä—BXóFA)H8bJ¹Q ÷?òB+\ÍžÄúë\Àþ '×`ßÀu·û©ü²Da-ÒsW0¹;FÈߊ†4ÂA^ôï´18†¦ma "õ,-rç…{à :)Ôg¬œöø{Ð0¬©øgŸHü®Šíã5ñ{§?Ô´Ff%‘‰¬é‚ÐráæaºEëæáÄœn"r kޏ’ÐIÿÍiÒ¨;ÀnôÜ—bÌ’ j£®DˆìÍ+ñ•C½d²¬Ñ6{éf¹”¥²¸.¨ó©|“Ýh†ÙØÑOKüž#V~G×ÎE°< ““VÔ»Œ}üJ`¡«º¤¾I™ŒÆ˜¥PÓqÅŠp6ú‚±7iùMß8R”°3'^üUã]¢‚Tƨ¬YA0-::¤ÍËôåÓiÙI§ SÌCq²JQÐèŸ%+”òÕ›³á½4 b6FÓÏpZIþâ1?•dïËxR4ÌYž­ÞV¾ƒÂ<䛉düpðèÔôÉåÀ/#™©ä£.䘟ðà!¿!¼Í/7¥Ò½ ÁËJñefy-*\ôeO‹Ê¸šÌôÂ6i¾óä¼6K6DAŸù|—qBù‰ Y³¾Ê©ÕdÝÒ«ž^Ó‘® ôDˆD±öÀ%̬3Ãá`±;˜i lÃðì†Ô `Ò¼¹ÚV^ÝÝ$…¨:‰ü~$Ë_®ð.kգܩ‘H>wøAH;E†0á¤G?F¡þÓš’‰c2ô€Ì5=¤¬U8¶pëqÏ$#ÓbŽKOÃ¼Ž‡¢`ZÊ©³ÆùÂD êL:¤;þ#ÍõåüòøSöý|a~ƒNú~E[©ô$únaé%¿ªç$æE-Ó- ›t}Q>û÷ë5¿‰øíñ·FâŒJCº™.Fw©¨_ÏÏ©µkÿ]5ì“­ö8_e³ÅúŠAÊhb¹­Ó*ÂBe’R9»ÇBïØð}"¦¡Ë4ãjnAétîgzÍßOؾörÁ„föh0±`kÞ±éOëéü“|¶¶ó 7y %\³Cž u;ç`¦„«CK‚Ð{óÊ/ØÊÝÂÊ]èm3-¨2¼bB½™!ᣙ¡ô?Ê`¨-ÍìŠYË÷£™}¹`D÷l¼¡ã4þ|~>i¼qúI›ùÑ{û øÁ%ë²þuð¬†Õ†|†ïŽ!ë¯æs._Pך>”pÐ#Üt•ÝTîìKv<Ì&Hæpà*ÏOûË/ï’£aŽöŒXÛE*O÷Àíw ~ðhÁÞgðL¶æ*c8ÆÖnæß”ctnžW ¡ùÿ1¯’"+-Š=wB^‘½Ï+äO.­M¸²|Y{Œö I>³sZå&­ çmFÿ’Vü¼ÓŠÁ‚*Ãs5œ¢zë‡SZ¥N©NyÁÔ ga,Bÿއ¼ÙFZ@lÒóÅhÉ6ÚAâ eƒ½Vf®jì”ÑSᦲr?É6†Im?¸GjwЕrcÖîèGÒ¬òwÙ££ ërz-ùº2rú_hk?Žr"j/gÏÐÜð9èíÓÕÿ¬*f endstream endobj 393 0 obj 3492 endobj 398 0 obj <> stream xœÕ\K—µÎúžü‚¬nXõà¹BïG0 ’N$†MxäØžã0/fllÿûTIêîRKº<8á° -—¤RÕWUŸúVûÇ5gbÍñ¿üÿ'—«÷¾ðjýôn‡×býÉôôÃêÇ•ÈàY|ýÇœ¡×B°`ŒXŸœ¯D–÷žåÂÚúÀ‚uë“ËÕ××GØÌ+õðú•”ÒIÃÚr5<;Ú(k™ôzø ‡¥ð†‡á¤¹w^ˆ0œá87‚¥‡Û,ïÂðY\F: Ã@^z¬®ðÆ”^ÄG©…¡ð¨ŒÚ{ò7<¥’\1ðX'§p„ÏPXÉ-,!-óʸáöyTUóà$žÔÓ°¸°ùFIÃ<Ç8vÑvŒ"°Œ‹ê ÷ÃïP'',×p^˜çW¶Áµ ˜Êdag­NQÂ2côð J(-¸r`\9p!•¦ n¢8BŒJiíC–޾9uº=K'J¥³GCg‡ oOçyTUrF4ëG'«ÏW°à×/W`w–À¡-w}¹ÒÎi†G.V_vÌVÀżˀ;‰•þ}<µZÚÂHwp@íA`¥óh XATfñ«ô]÷„LF[¸°zÚp㊙w¸aÆ)-Ntu1<­Çã8U€Ê_¥e¼¸yO²ý]å.NAØÐál ®yŽ„¤îó$­§£¥¶ÙX’JÐc’ዦMžÎdôÑ(* à÷¢Pú:íÍ]÷(gÙÄBh›ËV¼Ñ‚žàô± ¹ƒqnNÄc@.‚t·Æ|Ò×n‚®º—ÝÍ4JZ½AÀõhâ‡7Á`JqR„5æei5ÆáL[ÆÞÄÔìuöPÁz-šFÓ‹0 Ì5®Pc#*~:«ÒÔCJæ,ß[á§­*IÈ(¸A^l^&jNŠubÎÇGÈÆþTLÍ9XZ¿0xÌÝÐ7íÀ !°EJ“1¥}ñq~¸}z`*TƤZ[˜V2¥B5ï©§ÇiËC ~gS¡˜]nÊ&FÄKp‰õf½£ADdÄ(¡"poF'ÕYºá¤%æG'ÉÊI2Õ›b¸Npq½vÞ8ë@äÖþä‡S†ò(èÌ¿“}þ”41fªFK`dKxÕO×gÙXZ/“#¦"k5…"9͸´”4Å\V@l7^=È)Ê_g²{YdZ!F×~š å·™¡(á1M+@¥5söˆpà¢a«­‹ Tià[ªØœvx6Ï\Ö8É!RNÏ:¤œnTRåî†dr2™‚º8Ðq&w@ˆ¿hÉ:+f$fVš—º|>J3ÝB\º½Ó-›ŸÌ7­ÇV>V–ߘô7GóÁ¦<¤ AL)2àȃBV™™â8‚LÑކ1ØHM#NÈ‘OÂLÉà¶2KM#Djši”cÁѵp¥æ|Ù½ùV–ˆA–4°ºK™”%ÏRêùáÕÑèK¤07dø:=+Y삌¿&ãWùK2þoò|Gdè^Èø2~FÆ%¨É1Y¨áƒ¬1pþÇDâŒ\Jnk-ã3Õàyq‰™ÇŸÕs£LŠ‹üô¸t³Ó΢Tæ˜È<ïÈP%yz˜§µ‹ª}ÑlÌ&†w:KÒñ"JùÌðþüEÙŽq2!yBmöŒÚ É*(pŶQžÁÿïÛÀkmØÚr&PzKà&¿©]AÁ_ÁY’qV£°Z³€*¯ý›fìçßÉsÄã“ç&oJ ¡È]8ÏÞSî’«Jrð“ŽÝ_ñçèVÅœÃC2üˆ¿CÆoj“Æñ 2þšŒoq½c#+–œðV¤.v‰W¨’‹UvÊÓȧ©ë´Æs|Þ“o LØE„'gQàXfðqe~Õüêh~ó¤-n³T±º\Ï:Á$^œçï§Z×ic·Ò±ÓNõ•dü´ôtÎ=-¡tJ˜ÏÉøyùtÛ °Çû¤½ çlæÂ=~áXƒ¯Q ÇâáñA'>ìoy*=w¬_Éï÷iKLð.ÂÂ,J…+¹)JÎoV*2OU®ûÞÕ<õ¾ðÑx|¯ø¸?†8Û¹ðX¤$li£/¦â4ë ‚8 kg¡ñ÷{ŠK~¿Göô«^ãÏýÚÊVϧ ð ÜØèç^HÀVÞjÛÖ*H4»à@/ƒ€,‡¯æ„”*Õ•XéT·„—Dèxî+vÎÆ~Ùüx‹\)›ú3¬ƒ©nøç‘â½\Â…çPwrïˆ¶Ê ¯ÉjTä{T8\®rà ˆŒ˜ãØ`,m^%ާ.é8ÜlÀ€R`Ö'Ÿ®NÞýó»Rà8Ûi”[V°kwSÏmZ͇­m7qVj»!¥6í±½íf¹ßîçbÔc¢m¥¢mŸ(m¡,„~ï XcÒ¿ÝʺhúE=¥é·…–­QÉŠfè÷ߢ„ eO9ë> SÙ[†«Vä,Òè1óa×odDûf§vϲw«Õk•ºœÆŽÞ0²é1öñ%À“R.zhôØ«U4J¥®«¬NÙuÕéðCr¸Û–©rãa–Љùä¾yÚ©Ýîàì5»¶öÇtò3b%.WÇJú2¢+s Àý–c –zãã×´q6 iàî­i üdߨŽê…JiϬV=\' $‘&¶»$„F¦†B«ÞÄûÇV¿ !u&[ë»quCB¥'³™o&¹©0éQ6н€»’¯°Ý…Ô7ª]¥ÞZ*.l/ᮯª“ÀyÒ*Ted5Mß§%ð“^Ã6‘¾%™©lœŸ#äeÌ,ÈŸ%Cê!Þv Œ` ;\c‹Þ¿%®¿êÈ`G¹ðÌU%¥™²Æ®à¨”reO-¢ÂÛ²é6wËÊÀŒšºe):2@ÌrËØ„з_Oy=± 0hÑwo¡ÞÉ)l~ƒM¡BE·8I`2X?Ý­Å¢cU(E¥¡6N¿¿Ð¢\×0 Ä/ÔëßÎUéxѼë,䙹̂P•‘ñó‰…VÀq­†Ûü|¤©Æi±rÌß?Á$ ÛØ›ÿ;_Á£EáÀV˜gýg9Ãá¯ÚÇ.Èú˜D[„› FoÎß°½Š4Q;훦‹UXLmÁx¹ÔšßÏHo 5áL ´[±W××(5ÃÉ-Wää=¿¸_N½}z©Fº„¯•YÜx OŒ÷†‹´7öìi…¯žÈ—C‹­“§e÷&p7ºÔ˜]·ó1elFMËÛ…ØuúºH·?¯ZB¬¼P9pÒhŽšì”‰µMvRfµÂ´"®pp[2ú{±êíå{8¨¶xE­=~7tñí! åhìüÏ P{§ï¯œ)Ð?ò¸¸…LÃÇ‹ †¿lÓš@d“xãɇü§6+β‰˜@…yƒ¨ –¤“6?yà ©X@¿æŠß:† B§6¿HîÅ&%> ÜH¥ pæïwHÁ=²aB v²áCVÿyǾȯ€lV9…<‹Ûÿ«s>´ “ü66¸ C@d „›Ð+F¿ÝÂ4¯3¶ðÎÁsßÎ>Rb€ ¤h†OaRòºH•!ø¡ÁvÊÄ—Ë•ÂlÊõ4²+—Á¹?Œ±;JÀmÉ:5_QŠð)Q¼\q>ÝŠëû‰-¥­´³«$ðXEcG˜‚1- á1ÙŽd àʼ·;H%$¨`´êz®Þ,znþ]â×9~¥ƒ»† ßiöÞº —>þóõy–o.dJ½qâ`SÎ-µá÷|Úæ¿‹tùµlùd¸º+°, ÷}Qýc®¾®¾ú/\×´endstream endobj 399 0 obj 3943 endobj 404 0 obj <> stream xœå[[o·~?è/èÓAžV…φÃ;ç¡M›S4‰ hŠÂ–lEˆe):¾ö×÷ãew‡g¹GÇ–ìº(ô Šg†g8³£_×¢§µˆ?å÷ÉÅêó¼ZŸmWizMëoÇÑ/«_WTþ…|ý‡ã¸B¯‰ú` ­Ÿ®¨Ð“R½³nm}è~_¬þÑýx´ÁfN[¡º·G*r仯ÙôùÑFYÛK¯»¿ÅiIÞˆÐmA-¼óD¡{ç…!a”î®#½ë±ò»ÄE:‹ÙG —>py‡˜S¶{9 Á3 •!©ý?ÿõ±\)T¯BÔêø|‰u"²¶÷ʸîúE’T‹àdTÒi齨|£¤é½ î÷q%vÑ;&°qI¤ÚóÓÞ{3°ÄKO·Sz?ØM|öÑ{+}ô®-æ¸8¶wšÖ¸Z‰ÇC^4#»‘z0`ýÆC²bõ¯ÓstÁÞˆ“0žŽ¯(Y\]Ú¾—teÞQÄ3ªïDnèD•gæ±õ7ÌK?oG“0Mo$íÆ7Ó[¥º§ ˆ5T9}ήRì`²^¶£õ¨íPÄY‰Örú[ë¡îïÜ­ºV€ÓsiÖƒKæ]±.¯\&7!œÒ2û£ááI”ècNÔ½N#—2"…ÃJx ÐÏÙŽõiö«ÄÉ)]ÅõbÊ_ñl3‚(,žò¼‚K,¿.óɳ Ø ·ªUÜ?Úhï{k 4¼ê ÆÛj‰ÿé4ÜÕ.æ—a6¬DŸjå‰"lp…±ÑÎWÄÌç<ÕoTJŠŽ)×j>ª4®;nñÃÕñïö¦áºàöYbˆ—G@¬2È _O|kï?n“1Hú¡/ ô¹*SÆ<Õ¯XÆ9.­“¿l'è³eƒ‹h#ÔßPf` œf†–òÿ«y]#e€œ|»=Ì&q'gŠí½qz!ª·Ÿe9¥P;ϲˆÏÅg™—éU#Ö¯2gœÏ¯²qÑK‰íž,_Å’ÚþGMèm y‘©X‘A…årIO•B/ ¼W)*>¬âsp"g8ã縭_B©d‡0nÖ¯W¹ÆöÃ7céN+…HïYén˜‰¥;Pá2`JˆL4N¨èA ÖÁ]KF4ÍLTÃB„¨Á9‰­D3«KÔ¾]2Dä³à#åŠáç¹–*…ñql(VeñÑyú +·>_˜¿fóØü‹úmÜJâPR½×àÐ,Åɱ°›Æxƒ¸A>Ï¥IãSF]Ó§ÌP%ÊÓ—Œü›»ÀžÓ_–ÖÓ‰äiQ8|47MZù˜ÍŸÏÍ4£oð¤DŠ7d%ÀõÜÌd¹ÎhFÌ`9¢¯m߀H%à`‡;Ã[ûN *ð,ö6Cô†!n´¿,`î+6ŸÍߟc1ß Æ¤ wÀqœ¸Bt¾ÀèE”o<åZ§›–ÎOwŽ€{¥ñÐ;%6/Ê…7T °]Øé^!Ç›ëdáj4ØL:)Do¿;Ý”ýœ!–³<tª¯FNoË_„ð¼ ó#z  •OÚÂã*s'NXBdû?t¯ØŸ,Àbç þ}yÆë¦ÿK¾|q…}Sùrå$Ò_æËÓ*º_®œEŠù}ù36žùhJòƒûõWŒfðñ³ ßðñBØEdþ«†c“%×åÙb¸7¿7˜DÞ/údlÞ;›#ì*´Rí…‘° ‘gØŒ«ìí¼0î;¤8­Œ%ý ÎO=LÎ ¸„®³ÉOÞ.LN¶¯ŽÌÖÎÃh×Î(®’²Êz&¢Š·:eY Â¹H–e 3‡öþV =º¹¡S‚åüOb-˦Ø0/¦$ržþ7Š))'=¨p÷AæºÓ¹Ð®ÎðtÓ?lLO´P Ùr&iO·˜Ï×Å™ÈÙ‰}]ÙTr©µ¡Ý¿Á,Šl¶ªM™=í6[Ľ÷¨ò$ˈ^öNåó©MbÁ4U‡Sà´tJ¡bü¸;nR‰Šs±sãðވ̵.„|`ü•oÖ±yMZ>h"ã³Ó7ø«TOõºœ©`½Lö̳ &Œ­å¦—ÁM9Ò×ʰ#GÚ|W-qÕŒ‡ÙfO‚>Ó.5öl¹99Ò™9KÍ¿IÆ»à> ^µ¯E»:5“%oKRip}öŽ^06Ý8¿+b…°¸Aö¹PÃ*Ú¹°©ñÕ›öUÙm#q$6èulÕ â÷ÔЭÇå”´†Ž-l]/­DnÖ –åñaJUGÛÒäîá 9ƒjþ*¢üþÚl$Q²ú°­©¸`O3µ û:ºF†{oèªK혻={6uìí(L^< H jœõevÑ ñÐùá²WþœºwcS xÈ)RßÜuí*wÙ/;o£æ}&”f0è 0£«¨clÃñÏ‚ï›ãxŒO¿XG2v`ÀO­ur?JÃã¶?Û6º=T³d±÷aióŸ ‹/´£¡>”-7ÿÐlÞ,¬±¯œè=†bhÇŠáÈI•?@•áYsöù4<Úu“¶Ÿ†'Óðª5löh!ªêñfT "ýxæ™ÁðR—Èóà7ØK}˜a™TÂf¢qBaBW™ÁD4ÍLTÃB²Ô[É9aÙÛ(t@pRkèÚ›*Lµ„Y¾SÀ!K"M«(7¤t_NE69ÏÄbv·œ‰M¨ìV,0E²gnï¸ÊÑÝX)“9ØN¼H¹­íDFKÜÛÙcTµ²Pѵ¨OÞå5q•´þ&¢Š·¬,KN"Ye–M«üÝX–\,”ËξLäZð›æu^üjÔ;9ýPïix…‰3xm•×x5ãIùH×ÈŽñ£~?9¼\:gzo.D¢Ù.ð‰5§lðÝgs뤥|¾TZr)ì J˰ —¾Æ³ñ Ù Ca\¥îÆ ’M× ðdm/ÙüP«’¹¯Ì>`ÔŸ±ùF½žã7YðÀzý>ü¦ñ£¿¿i?¸léƒ9ËOIü¦œæ43ŒŸÎå?¼"8A°B®ª½¥Æ/Že\¨ö»#QÅ;Ôˆ—A÷#>®Òw„xU¡›üîàܘŸkxã÷ýútWÞx¤ï ÊaU}£sÇõx:¡ê`u 2©}à‚«éÅ…OŠ8²ÿžkøö² *ÏoßÙ5î}¢?$À¾û½Oüx„Ã?:NG9ä È×p:Äò„aæÝÿå1ýüƒÇ¹§æÙ –ŸW°¾_ýÅP}endstream endobj 405 0 obj 3253 endobj 410 0 obj <> stream xœå[YÇ~çOÈ‘§Y[õ}ÈëÇIÄqË €ô^¦½»’—ZYBÿž¯º{fª93W¢á‡À<*VUwW}uô¡Ÿ–¢•KAÿ•ÿŸß.ž>zy½]$òR.¿ì¿~\ü´å/¢°/wFf)e­•˳«…,ü!´Qû¸t!¶ÑùåÙíâÛæ›“óÖ)Ó¼=Á§VJ…æ™lœÐÍæd¥kU0Í߉¬d°"6[p‹àƒ”±¹$º°RXmšûÂïcóUR£¼y ~Btº¹£OдkÒ§2Òr†|j+• ÿ:û3-Èñ)¡[iYgXÂWÄl¢*”kƒ¶¾¹•¦jDôŠV€é(7ƒ¯´²m²ùŒ$1Šñ1±@OÓ“>zšßМ¼tÂ`½ó­Ð Ãn SÙÂìsÍq¸ÖZÓ|IÚH¡=ŒCš£Rsn>ÁUbÇ"d7)cB,ÜÉ7Üî/ó ¢ÖyíÉPÝÚ1àýŠǧÊÖHfýÃÙâë…ÂòçìÞfpã.oÆ{ÓÂðåfñÍÂÀÉ`ÎxzþÅ"DÙm–ê)NC³ÎRÞ«˜¸z ãê%µm4\É™¸†0˜˜¿¦uÊ.i@£Uÿeö’64oNVVšÈ=ùeþÖh¾Øe×­÷²ù´HœcÃ$¯ýŠÑÿÙÌ õ„áç 8a?|2üÐû³wMoâÞœ•Š9{#zZS9°Øcte€²’qÎÙ’_°¥=0ú«Áº§Œ|ÊØËèŒþr†ž¦klv˜E\»JË)3íéØí\;§|t:þ.y` ßÍè¿y´{{Ç1‡÷Žë)œBäs÷’œ u|ö\•v[CÅFé[[A…ääq b£CU {ã“»X d‡7ŒcËÌûŠÑ»ØK?¬Ør‡‰>Á“üÔÅd8Èiƒ +ÓËÚiÖ{ÝJî´$玓m­3ú`CËãZ²žÌÐ;ƒ¦¿|2XzA{SU&v;Èu*´Ž#7É©ºJ \•vµã ª7×ErþHαªõ¶8ç9³Ï!<‘¾bô5£ó+„“@Ub i ù‚æíÉNæw›WŸïp6ƒäzRß6m\l~®EʺÒ% Sq~‚ÉIèw’24ÛñÐpº‘•=¸Í˜¾jªœ›íä¥áÓ¾gZ.3‡Ã~êMv˵\¥Kgµ¬xnHTµ^Ç”Ox[a3 B>ÚzÌâaX>!”i)²º{­Þו¶92z¹M 1ZR»êô®ObV=”YYغ‚ Ÿ-ÓÿÀX`~TÙWt slJ[]JÌÇk×™‘ò•TÂ×q‡¥GU7L½C¢…Å|(¶IÓƒ½¥‰Sáo[g µ\UBhÒ\ Þ¶9›Þù’HȆÓz´‡ŠïcÚ4â‡ÄºÁ‚=`=ë|1»³¦­lT3ªoò²‚ªóãNNìé$z´Õ1±¦d£pÍkú2(½õôd.Ù™âD*8Ö»8Ù®GF AëÖ®Í÷¾“!s=ç×…gü¶·Ñ$¬=~èo*XK+ü<¬óuDQ‹h!jXo*TÐ’}›w™¨PìÕ°àßçÛråfû’Á†“õnÚ-ùJݶäûïÒý6 GÇ•DD¡þUC«@é”ëèlàÕþ*/íY±y1 ‘ ôÏR["à¤âi­¹×Œ¥G.WØ…é²Ó^geQøÉþñ ÔõXJG…*XTŒÌM»ÞîˆÖ(à$m}ÈBÿHB"”YÈ ½EÄE´}$„=¶E¨ÓÄL|§Üv‘Ž"%ú:t¿Íøl騧#(L–ºµAB}ºÙÑ“‡×èÔÙðŽ:ÐÐ?Iǃ2ºh&'KŸÒ«Žû‡\15©;À´Hp•ùö覅¡Ñ,µCg©'ýI«TOC,b$´ÎM²´f2Ú±XãUøÖG)Ô¹è„"›Â…R[­ÒÚ*é4ƒQLˆóΆéIa‰åTúߤ&Y#ÍLç $G¤§€5agR“iìƒ,e &’ß%¹ ôÜâ5\]ó­hQ¶¼ ªžD­Z"ÊtA¶ %I†¿…Ê[vá´’9^­A†Gt#(U ,Ò—O‰®’N!‚Á§Ir[èB¢~ž4Y‘SFÒêÛ´!)ƒ!‹irŠ0{&U=°ºÞL¥l#` D~õ"ëÊ_ðÃ~Í9ï«E±á Ù¨þÐ&³L j5ë|&\¶l”ãòêlð²bÞx =ff¶þä‰ÒVDÍâÚ²RîœÊ}´aË š’°`½/Ë9Z©™]µ1ýç‹Ô~XWõJu…쇸Îu1ú‰-GbàUê|¼/rBj®».BÃæ¦¬ÄM´ùå!Ú»[9VëN­4>¨†¬¼Þ’K§Ñû‹rµOLö@ʬ¦÷fÐË»‡2;ƒ¼Xo·š„š—ðî<Ù€¡ƒáû t+ÝWht`; Ø“ª/¬Ï©ºƒ#é¤m»£ªtpÔQøQ¦ˆý&?ª—ºƒ©«§0®^Òhšë"9Ôˆ9©‹ Tb==veé¨êi)õˆ{ÚÅëêJeâ¼rDçö‡ßœ¿{Ïb1EƒºŽý¿gü\÷v†ÎOÁù‘þݘ>º‚y`ô2›úˆ3óãØ‰ ýÿm÷ ÎUó½ ¼otÛ´rïMÃ}=Ë|Ç¥v¯¿'Ï›/‡c ®fþðv€híÑ¶Š®ûª  9ãŽdM±$3¿`@æˆAæçŒþŒÑŸÍ öÍpiøž0ÝL/Ø÷s¿MäOCAêÔÍâ(>èžD„vh ÊoO²y?wYIMw#ƒ]&ŸÀvf¤'ÃÎùÌb'Ôôk*¯u&Îæ¾aà¯_Z¥“C‹]¶H‚íöܤ½#lú€¨©D$ÒbóPå-v Ç I‘ûÿ’ÿ'î»ÀJ9‹}=£æ|;£÷D÷G-:êŠâÁÉ_¹xŒ.”ëâ±ü=¬Y8ô°îþµÄï¾C+Šž’7`…BrsAP·]`?í„^B5öp²»¯ëÕØöëøzñ?n«yendstream endobj 411 0 obj 3085 endobj 417 0 obj <> stream xœÅ[Is·¾¿ò/Èé\)½öE>y‘Š—òœìTJ)FŠ’9”U*ùíùÀÌ4fO&‚Fw£w¿nE'·‚~Êïg/7 z{ÑoÒðVn¿¿þ±ùu#Ë¢€o?;¥f+e­•ÛÓçYà¥Öw~ëBì"~Ÿ¾Üü¼ûédżqBïÞŸàSK/ÃîK6üâd¯ëT0»¿Ð°’ÁЏë-‚RÆÝ9 +…ÕfwMð¾ÃÌoåFŸ\…åŠ>1¦ÝîÍôÉ.ñ©­T&üõôÏÄãü(¡;‰«Ó3pð-›¨¡P® ÚúÝõM¢Ôˆè1êŒ ÁD,¾×ÊvAÈݧ4«ÐøDžôÑ‹°ûÑä¥ìbq¥° á¶Z)[€­SfwF®³Öì¾&p%<Ɇ0G!¥æ¨3Ú…vû®Á¼-Db{œx}ž×qÁfÞ“ Þ5x?›æqR$Öǧ›6ª¶ï6Ð ß%Ý0ÂݾÜX¥t'í8r¹ùic°ÇÎêôãW4+v˜d¢Í“†‡_Q§9“Þ6µ5¬k«ï¤Û:«»à‹²~•Ū„ yS‹ˆ¿cãOØøçlüÄÆ/ÙwÏ`°?dA¸»¿³áWù[ úår<}_T»?Á_5àß0NÂߨ÷ë —lü-ûþeÇ€¸¬®f<ŠÐ™ÖhKS9 ÏÙ÷‹œž3öÝ3˜ƒhõe $IîÊÔ’ºn`?gÄaLߣÊÚ —ðNL}Ǧ¿ƒJk+ºh˜ŽÓ,î¤ãžLYØ0­²’‰é¬PÕfqÁžÕ¬“ý¬±µ+X&͇ìíbxœz½Ð„,{Žò‚Ð(ø`WÙä/'ìOŽÚŸQôÕŽÙûƒ Çö~Þ:ÁL˜ †{„} †WÄÿ˜,#Çíu´‡¢¯ä]ÞëÓ)¾d'#¥QnwžcTTªø†<Ü—q‰˜öŠf+ëžçQglÞ#i¼Ðs„Sx°D)É« ¦! GHá·ù÷'3]Ìá’''8ä/¦™OVñõ9vye8À5#{äÀ ]Y&k$_æruÅ뼌TºÉ«ŒÛgkšKJa‡åe¨D܆žbûuž ܇¤êŒóEªØw=H5a[J•³›fVR%“ÑZACÍ òuÅ,éìŸÕDŒ±ežf Øj*CIkï‡Å÷ðK‰E¦ÏXn²f»Æöò¼AX7‚”té­Ç<' ‚‹Â7›Ó?þ¼Ó„DEÒÇ<ÑxâÈœì¥d"ÃJù¬ƒ\¾|Q´7*+s¾å}Vã7£õè¤4ÙªÝcÂ.<(.©U?Ϲ³E~–¶&<eë0Ô™·Úyè2áx oŸ%h-¢u•°ž§œ©’ä:ÄŽÕ |2ÁÝ»l­ö.æÁ€ˆ¥¸aÀ ˼Éà~þŒù‚[èVÚå§L/Ù0w/´’ï¬r¯Áëåºý.“¢bœÛ7 #¬î8!L&|•žO-ÄšGŸ›€8ž›LVô–"ZZ ÙáG új7¾ÐyFâ]mZÉ"„&ý™†+?PWdæÞY¾-\´lûÚ†“Û°.Vn£–¡ ^ãõ²(Èj7ðÅ„“¯ÿ KWì»!.6¼ÜFš8•2)ÐRU’>®/n QÀ·ÆÅNx™´žÖœ¼ÐN~`´ÊeŽ-ÚשRÈÄP¶ÖT!·C}؉èfÖlQ¦Á1­X•— Ü1†òŒeK (¼W,)}3%¼a–HE'æKQÊéc5ïáˆW•Ô2ÖA­ßL-êV ÕV%†J-\ô¹R“n¹øç ¡«žØw”+ó<Ë=÷8Ò'B æ‰ê"ËTÓ¿˜ì|î0S:y^ÅÏ} Q+ľd± Úäæ»b™iû—–9†!õ’äeû1|ÂÕNŸû± !V}Aiã°Ì5“üohh‚dÖò*SÜ BI£ŸmÎzP«²ê†Óâá"­Ù²¸jSK )½o±º"ÄYГ›P¢s2JwÓ&Êvð`iaÙ#Xo`e9¥ÚtLD¹ÎÏbh-¦¬ÝK&ýI¶EOÜ (*kåöëJ¶§±"Ç´åê/…ʳhuÕTÖæ¾×E€£ÔV!Ù3:Ïy² 3Y uþ —hÜ ² 2¶öŸ§k -ò«¢Ê6M€§ýíôŠÈÕÞ7¹‹]ÅqO ]£Sq^˜ ‚;ð µÅ[£Ðh™Èªb@;aƒb|“àÇŽçB1ðéL0kŠ¢&Íä†>¡#;#¿bW ú"Ú$ >mø6f }–›©l=žÜŶÆ=ËÍÂeÌæàEÇe8®f^ƒmx>Ô¼vv}ÎæíŠÃUÄÛ$ÖÖBløà·äõžÅÊž:QZ“™êEÀ­E¬Âk‚Y>`¬]¶0, GúûQŒ|©›%52¬z™±{u‹ˆÌ’ˆʪ$‚Ði¤”tCäÜS0ñ?kyŸÅ/êÖÍ\çH¶þÃV •S9ѱŠ\À2¨¤Àœȸš~Î;Á)‘LE­ãµ‚¬z~ Úw— õÕæàzFOryíj¬CPPóîÓí£‘ ·Ñ`ïÑíB«ä!C%î:l¨~<º…¡ù¦ÆJ*?:u t2ÔN1ºi@Üò_¯ u™”Ü N2aPò§SÑžó^¯×EÏÖÈ \VH lõŠÏTKE˜²µ·ð<‡k)Ÿ”¿‹ãy8¡)¦mÚ¦}ØhÓš}fzÅ“ YA˜C¥m¡ãVÈ$ÈÖnä—Ìí.RûçÉØò_ÈiC—S)D“ò Äïåý´HO ¯ºiÐÕF< WÝê«"\©ŽoYjÿ¼ÞG­ú&l;ˆT‹@±ÞmáõÛPrï& TöÓ^Õ¹Öž÷­©dE>‘Õi!­LÛ“ÕøÚŵÔr¥ 'àcÓÆ~`ÞûVÙNÿV¾YF_F//þG™ºŒÎKÚtñ£}’Z+ÝϬ^,²ï’¿Ÿ‡*,I&ÈNrŽ–»ÿŒŽ$×Ëû”¬ÝVݰIÇúrÊæ—Á2 TOʧ3•¿n””Ë“º| ¸~ È [}“gùºQíd¥—oÛI&APœ©ú”û19ܾӟOkï1§;>AÎvFUm¼\CLûŠÇ±¸Ì–Fw½&K«t=ë7ü®ÝöyÙ ­æD4:×:ûì»1±™Nóxã¥,³7(¼4]S;›]SËw„‡‰d&¬Vƒ äÜéØï]úò©®Ð2u¯ NA)ó¶¸Fóý +”òÖ—'ãª×Tö¢pf€ Kü [¾ûÆ.x•ñ$k ؃GÔ±9v¸Z—°§VC¾¿•g¢  |´ 1G"ùìØ»+WßÂËêáôñ‹…z¹Ÿ´å EÀ08:˜5ÒLë#sRA¨ÕzÒÊ/‹×\á/Ëҵᱼæ53äVÓ÷M‡¡¨ÿ(ëFîú=„¾ÏÐnž$Â7Ú°•QÇp|>¥Fˆáô#né.§r&u¿tÀ†éÉBéœ#º ïùsmŸ¥@ŠïÇj)в…ÒšGdF è\ûȱì­ZŠ)W5 1:Tn©Î"iEºµy(6ÉXnøR'‡°%ºýÕ¾Õp—º†çJ#[Wµ„ê‚ ¢õu…—FmÔâ…[Èû ¬õ­š`=¿¥¦¦À2H6øµƒö¥˜LêÁ£†Dwˆ‡{ ãE¡$U+_Dàƒ]ÐÖé1aYï";ºoæfÇ Zſ颯­šÈˆÆQ†º‹Üî%ÉêCÅ @LŸ-,Îg?[h9ПHÃS©“MÉ»ÎÊyÕêõ.ÛO+í¢=Ýï3ÁÌó5º²9¦5n9Y!t¾´ý›N¢EG}«“³zÕT2m}­%mWA*Ì\EV*Rׂi}%@›”&4åÆ[UM-úðE÷<¦#¢ú —FíêiÄd¶³ð'Qû"9¾kø#Ççá§ ª?5:dÍÎRªîéÄëðCÄiÊN×CË•Y´œ·´O®‡ëÎlê›cÏ[VŠœßt?'%+Ué1¿{UÕÊM‰»”URÕui¹H‰4¯çQ§ASSž5¨ªó¸úÖóp Ê­aìò0Ân=có‘\ªéÖ3`$RƒêÖó4LPÃD!QïzŽ ³¼¼7J8j ç»Kå6:{‘rò'lœ_;ïË=vQ%Çå’:ª¸MÃíKä•X ƒ…g¼ê<'ÍB1z'!òÀ‘Î ²^3NÞ0fŸ6„ó‚óëüŽa}âªFak`Ý«{XO³Â÷`Ý“˜íâÈËðb%ýƒÎfËó¶½»OðøY©$ê­¶A#\2~i–¾§­vIà‰Ýÿ0ò¿dì>æÜî¸N&¿=ï#[•4t½×FSÒÊx§YQV^cªpÇZŠtJ¹MÊ7îGŠšX)ó–I‚¿¹fã7lü çÏO.Ë«8~þ\Š¿‹áèÏŠ›ñ²rJüÅ_õ¶/¶Þ³ï Ãß<]­ØHúãûÆ„•ÌÅ’ ÅÓ‹0ßym+ú‡G; Ï''{¤£HavÈÃò< áí§¥¤ª‡E¦~¼ÅiáOêò¶å‡El aÔÌJ¡MmÒ"÷㆗îÉéÉtïìwSßï›~|öqAoMóãÿMÝç:ˆì©#Õh(áWmúóë6y ’³c@‹Í’ÝÿDÝGMf0ªòðÊwRé!ËDš -•,ËFhÞí®ªk¥¨­± TžWÕÍ”‹ª,I|ü°ù/†\Ñendstream endobj 418 0 obj 3703 endobj 423 0 obj <> stream xœí[[· ~?è/èÓ_:›ìÊ¢îªí‡h 4$[ôÁI{o6º»qö¬Aþ{)i¤¡æ¶sv§IŒ~°ÌCrDò)rÆßm9ƒ-Ú¿O®6¿tr{±ÛDò¶Ÿ•Õ6ßm ýoÙ·>j À¼Ö°=>ß@ËïóÒú­qžyc·ÇW›ÍWGø0«P͇\J!„kþšÈÊpÙ¼98’Æ0áTóÏ@à4÷͹¹³À7gÎ5p-UsÓò[ß|Õküù…sÞÈæ:,‘&Mó..…M.q)5å¾9þ{0ÈPƒ—Lú`Öñ)šðy`V^pƒ*„aNjÛÜÜÆ­*î­àö*W~$…fŽCó§ ‰OQŸYPÛë-wÍïÞ,®Ð^”³ŒK º5ºJ·ÌÖÓœôVÍgC*àÒ¢s‚fÏ$å¦<ŠìhäM)å|ËcsÚíéæ,Yà¥L¶GGeÛñ7§Ý*±1¸õ/Ç›/6€XpÛï7èw–À¡ :w{µQÖ*†ŽÏ”ËÍW…AFæ„§/ÿ¶q˜âÈ£¼NR…b$j–Qªƒî$`Ý`+f„Þ-™³-`ÿ›<+¸v)®#ŽP»!ô[BGè/ ¡A26¡·eyŸÈÖˆæ9!ÝÑ7ä‡kB¿meµ¯vöõÃä1ÚcHšÇ„çqU Å›cB~]Á¨Õ•ö?–ÛZ4²[h^òK¾Ú×»Ö5ˆµó¡'ãšš}’Àë¼×Õ¨ÊoÇe ¢u‚aþêU(QeRsæÅ]SnÜá•?5îN ™úí|¨ ;£¥@–¼ZÓÀ ¸- (±61U¥GLÚXJÖ©P˜ÃÿéñÎt—©‘ãU•qÄfÆ q–aÕ¾?¯‡6EÅjkgµo&1•60’As¦ì„©Ý"ìT4T¤p#°hSì9ý°'Bv•ˆàLK™°3áý‘];¬ýÔù'j@vVä¡[Iq}AøçxWÎ8V\5–MïQq~4]oíÑ[ï ;Þ9DÚ¼g»Å!º©ȨKFr^ÿ´L;¥3·rÔ¸ÕÖJ·QÎ< ·^0)ÀoµfT‹ÛÛ4£ML&9åÌXPöVÙdzaµJboB-r"ÙÙéÊ\•ö–+_«‘ pçäZ)˼áõ\G§%.’7ŽcË"+zÊ•J˜~t V&×âDÞÅ®Ki®Cý-ËÂðQ¨ç‰ŠºCDœ`²j~G´¥c:ª7¥UŒ°™D¨FÍÀ¬ÔUctÙqSr$wÞi釶ɼÝ6Rñʆ։,{&Ê’¶8·¬ÊZ‰@Ó¤òV㉢i’sR"M“WI“„«èrØŠ8Z4¢œ\§ŸSxÉT 3Ä{ÍW¨¤ªjúéýyQ]é¶_™-뺢Œ3õ°$Ê­4,Qø`%²ŸöDó–Xr).!ìG¾Š³Ðx85 tó 4æ…Cíž™ÜËõŽlöó³v)tÚ0BN]2Œìæê§¢ø¡vŸ¯½O-u–ÀÛà©ÈÎÍ wU̇ix`¨s÷ÕX9÷9嘣iú L3ŽÎ.$ž/.ÌnÅ[Zœë_õ<¿*9Þõr§¶0Çæ“·'ZGºÚH?ßÅy*z÷‘ïüV»»F±t€Ç’87ŠÁ:(–XK„oQ|2á\:â#‰ûi‰ û#B¼ådп"ä‘ÑØÄó/V,¦]b5šÈ¢ì#òÃÓ‰5}ÖÏ#Z„è9}6d¢Â¥Ï÷|ðÙÀøáXûr˜7î€vm…uèå ƒw[ y#‰­“7¤|°ú9¡}Ga9†kp‰ Í“z0̳¼ª#ïk"M#es_h|xJ`¾?´ jk°÷²¶ÆÅRh1±RÖÖ"ÿsB{ê©4ŒS³ušÙßK.MóG„†ô"l =®íälšV‹Ã¶ˆˆ4ú(NË»è;¤å ¨ÿò Tİ Éc¶'ò™ã‘_ÑËüñÞQeþ(öÀÌß6¬a¸çµªgû³ýD·ŸÚŒÞ™–Ú0Yê 'U5¨ê¸*í-WŒ!—bx«í&c™²Æ<_âYˆöÃÅÙŸ3²7ΧãÃ8¾ùÕØðK:Ó~×~¸$ê1*^wëÑ1µµÌr¼ØVcj§´SƒEv)‚*EÞ‹­,”{Œ©QsIEçš³ný1u¤Žž±ï3ΖÇÛo¶¸ï½°Tgr†KéÖ}Ê{Žpà@·äkdi½Ë'ã/Ê`׊jÞûšˆ’O¼ü¢‚ØEßÏ\$Xxã{`)·ÄÜ·C)O4à &Ê‹S@N¦Ð£*¬ôx"GUXãóØ,ÌŽ«£t\ER{͸©tÉp»]#W #Ã÷†ùÍ[WT_×»®ÝÑ, šÒ]÷Em€G¾ÄŠô‘fi ’–žA³çc“P ?L•BA>!ôdýoÂ#ýhœ:ñw±­0Q¿TÈf¦S½”Óí…Øw.DÇ¥#…¿»V-Ežzô^jÜ3¢/ˆÀ Bçdý á9Ê¢ „ŸÎ]YBx> ŸÕ_Ï ¤ ÂM € É ãôzåV‰T̫ʼnâŽûù?ôý(éíPÏà;.:”›øßï~–É ú"ìý@xý€Q,ý¸%Ò}„Tx:Ї +ÁÙ¯¤lˆ%V ÊMﺄ° =ôêË :øAήtðÖôâPÿ ĢØMˆ}“ùHáˆü#zâú=áÙ¿(”¨Wh±u‡¿Ù* 9±NÔià·š°ÜhM E„~Io¡#µb–Q é€Qª÷= Xá° #ð‰rnÔ‚6æ²_I‘K 1Õ|j±¨ùXT]ºàV p½ ¢¶ˆ4ƒD9¹R1…gqYÒ©ârÏnb¶pL ‘Ngy¡éPGö2…’¾NF9¿R¦PˆTc~«4ûaoªÒPœð½+G‰t…ßKÂcÃX¥ §VJ2@rñÍãã®jI¨&Fz‘ÙêBÓÒ’žfªí9™[R@ÕK?€ °ªÒOøÿ'|¥ôñ‹ÓÏ/¬L-ÂÏ’2µ#åh¶¯¢¸uó¸]ŒóõU’ ’ò7ï•_ VpA_ dÊÜÛ¢ñ÷h"¼€ÒrëÂËÛ¦9ս䀲,v|±ù½'ôendstream endobj 424 0 obj 2860 endobj 428 0 obj <> stream xœí[Ýo·¿?¡O‡<­jk³ü&;€ Ø-'hõÉuY_•+ÝÈò¿g†äîΗ§½èZH¡QÔp8œùÍ ?f\v­Xvø“Ÿ\/>ýÖ«åÅz»—bùåÐú×âÇ…Èt™|ù§#¡—B´Á±<:_ˆL/”juKëCà÷ÑõâUóÝÁ!Læ´íTóñšJ8ᛤûòàPYÛJ¯›¿c·Þt¡Yuç"4gØßÑ¥›[¤w-Œü*r‘ÎBï1KpYaú”m>ŒMBpMe„ÔþõÑ_q=–®GvªUWut +ø ‰u²¶õʸæö}”TwÁI\H§¥÷:Àä‡JšÖw¢y†#aí`ÆHl\O¸à:ßüerÂv– ãpU¦AÞFIi2±±R7§Ha[ctó%RÀª:‡ºAΡBQÖI@e½÷Ía$W°x“…ÒÚÎ{x{–æ±Þ¤µGEõkW°öÓq•¬ÕúühñÍBüò§`õÚ‚r—× #¥j…z®ß-4؈œ¾ý3Ž - ÒÁ¤A}‡…_AÅ1#n«hõ“hÕ¡ÕV-­Q­w­GI¯²3¾ù'Óñ¡€nÓœŠw„â–ôßò‘C{Ú¢%Þ~ÊgEhNIÿeIÛ(¨ÐyZ²ŒlÎIÿã¼'š—¤û ¡×ô䧤ý3Ðñ †¶ 4Ÿ’~IÚ¿Œí4ƒý#ü›`è!èA¡L×MP‚£´ßJ€£Vr.JÞŠã±ÿ’÷ãÈÜZëQ 5ú i¿/Aé'@5"@Bè’Í×5˜98¬@æ¤ý‘ÐÐþ»’OlëôßФG%*O¤'|¶ mÃ_FR.È­¦1 â$Dïý Mj›³cÒE%ö“þZ,9«@ì}† $Фó<©DÏ+2àUÅr; ¬ ÷ú;Bóº·^í(C'ioAÛ$‚¿I=¸:+!µ´á(³§ØùÃ(õÿ ¸‚i¤"ÓEŠ0š1çeÀ 7†Å$„k I8Jì'&™`a;î'ÐÎAÝßÌÉ>Ëþ"»=ªd·Z¼ù¾D[‘ ) k±³Æ‡ÔüÛ5ú»‘gñ#˜™spˆ q1޲û‰‹Æ‹ÖêÙqñ, ÏBp- OXqÊ‹=ߎ{²û2r¤¯!ŒzΜÝÂ#‚ì{2{!ÛëYÀÉ0my̶ҷ–Äì8Jî)f[׊0;fÿ2û,¯˜s¶íͬ >šáCòxf‚o½ hÀQ.!f71ÞnÀU¼i1˜°ãMKß3YÁl»ã褔î‘5Üb%` ¡¥Ex(«Zc k¼£z‡ÔÚtÆ5×H › ¯TMº-û@¸Äì.´ëú;>m;çY÷åÁpiH˜¯Òô¡3´÷{5l¯9‹,w§:Ê-[/»[»g¡Ýy Á-Ò?ò5å /Ìœ³'BIœãÄÇ£TT”ÛÔÖ!Hº²»ÄDZ k@Y­Q‚®ì6­L…)i¤¿ॢ½!%l×ë •ÉЛ#*ä–HG¨Ó/]%Få@€0bS9ÈÐzŸç´ÚºxÕ‰À˜Ñc”6xÚ߸®ÓJÔ°To›ùjäE&~‡KUþS$ð°À '8ìg8 !Ðmš(…†¼²5œ´Ó±a‰×ÚÒêxG¬Zí»ÐK|o¶½ÙÎb3X/ÇKPëÁv©ƒïÚ½ÛÎ =è’5GܘyðD' Æ{`áÀ©CòijQŽ»AØÏ ½íØ< nÆÞ&þfP¶µ®ÆSÍú{<€ª ‚}PÒpji… A©ï!APï[9Æ@m…o…c1p :Q?NkLk„Qö’Zõ­›Cš /I?=­Hÿé¿"ýgãÖ猪ͮÊ\œˆØ€9ÙŒ¥ÅÇ);¦&‹ôS“Ñ㬢œ,ÌvžlbeÅɼœ \(4ŸT4÷I94í?Ÿ“ïGôqÌQB«Bq×ûA¨Ò-òæ"±8`ÄÍß» †O9&馰?°?Ŧn4ìèøùh†-jê5Àô–UÐkEÝzêÈqPàa ⬹¾;39.ÆAaOúî ùˆé5ÇûŠ6?#ýŸ‘þkÒO7¤ý„@¼æù§%ÿHOç½)çŠ4—ÜÒCûIݦ­“®XÛæSú/=zh‡÷î–Þ~|ÑÃ[wE^† À§¼5`p˜8h?)DÈýR?0F¤÷kÔ¥£Ö&ŒX3Jqs9A_f´Jç[í|•œbs¸ó­8ZˆÛ•¹½rð/bEdñ6u/VtVšÝþe%áϹZUèÏHûQáó”ÀÿìL¯’f%ªA9D¥ƒvz…ÁYßæ¯¹F÷äxµÝŸ%Ï+é¦%ýër¹…ßü@ú'RÛVR ±íÓÄ¥uÒHSet°3´¥sSqhk%[K ƒƒÄž ­]kú£ÅÂ07¥‘Š}-½²£{eJ¿š0XüãˆMàÏèuË,"¸gHØÔuÔiÐ^ô¯ðþpÇ8)õSì(¨Î?”6*0üi¿©ì¨Ý7uÊgâ…§ÈyáYOàá·b`°ï*(lY-¹µ‹ƒàp»¼6œpÂ`”·ñýr‹¶·uSJIžMu\Qq«/õ“¼ëß’ÚŠ}Þ”XH桾»i«|Z£"Ð+ÿGCûþ<Ëʃ™Ý³ ³Uá8ZA]G¹‡YÙŠÖY»TÆ£þöÃZí(vGúÛŠj'6ôS‡‡þ°OŽt—Ü ÷ç­QOL½ìnFzØk;â2q| ËdeJZ¼œÛ“ËôûÛQowrJýßw™t›Be¸Ïg@äY.3ZÙ]r—qëo‰™qÔŸg†€€7ž·æ24ƒî@éOfdÓì>@BÜç-7É ÷tÆTÍ^ ¥S}'ŠƒÔݧW¬Å;éáFyTà]ÿì,Y6¡; Sº‹;î½­Z¨³­*V¨nÌ/*DT´Ó‰ÁÅn¤æŠÕgvºæ~ÅecçfJÔÈè˜#i«¨Å&í>Qã ‰é ³.êî[¤Œ ŠG ÿR4ਠ{Àj8‚[³°Ïʵø6£ÂæQ©ÛÙWXBsp91¶´Ýª‚” +h~ƒEc1³ƒ§”ÎæÇ,ba½§[ì.W[SËÑ•{B~a‹ZŽþq…XýYɽÇÈŽútÃ4ª¹GX¤¦!Ý~6“+§\ö‡_F5mx…,mØDÀs571û9ãà7ý[Ú,yGiØ Œá"l¯Ù{5iëá=2¾Z‘íã£eîØG!…ÐßôÓÚÿBŸ ó«»íøs4æ| ß¹ñÅÛÙte–ñ²ŒãH`…mþ-|[I¤¶u^öu±æ‚=Ÿ&š{Š$‹ó¬¸ƒIò†uz…/ß²ˆ¨ù9ùåø"}<6/° î£P%S« ÚÔßá›#‡ç[Ÿ·Ä/Ä|/jáÑõ´Ä%*Rœ ‚…еUh aX™ER—O¡›°Z …HŽúR¡©¾+4ñÓŽ·t¹ZbZÝ€Þ0h;jE9©DÖ 6§´‚×éÆq­`€¬‚ƒW¶ up´$—Á@.û8-•j(?¿ã¥7Õó+qºNÉ\‰ã;X(UD|¥ˆ×öùc>"ûÅXnDK`ÅŠ`áb²¾†« a{¬+â«øÊ°Yík \º˜7ÄlD쉂¤ÍµÓîiv«üFEÒ@qÊbGå" ì´,DqˆVeEÙt`ad­¢lE¨×|±ÐHx€õPh”ý/V0Q†y  †¢v£P*`²-” J0õ¨ÉŠ Ú³Díóñkçø' .•A[Ȱ‰Bô&ɵz#‡õIÅ>„ ‰V›y˜Kë+™€*f8ÀNgYevA¤ïˆ³§Ñ'Ä3fÕö\Æê¬˜‘±H)6n/vÌäJÂÖ)@&sqÊäzœ³%÷ô² Ïܱ+Réø¥0—jœ´ú.àÐ ­¾g[Z]3"¹‡]žw¢ÐŒ,þÍâW_é›Ñendstream endobj 429 0 obj 3114 endobj 434 0 obj <> stream xœå\K·¾/ò ršÜzO›ïG‚”؉ÛÛˆƒåµÖi%ïH¶õïóÉî&ÙdïÌî AøàVo5Y,Öã«bq~Ú±‘ïý—þÿÍ‹‹÷?wrw}¼¯w|÷ñüôãÅO<ýƒ%òÝŸ/é µã|ôZóÝå³ žè½´~gœ½±»Ë__ì˜Ìj#ÔðvG)„pÃ_ãke˜¾ß¤1£pjø½Üiæ‡#¨™³Žs?|Kï™æLK5Ü&zë‡OÃ0¼þôÂ9oäpCx'Íð&< ÅuNðRs¡Ü¿/ÿN 2ù‚“£ô´¬Ë+,áS"V^0ƒ!„Ôv¸}XUÌ[A+{ ƒ+ÉRèÑ1><¡/1‹²˜1`ØãÖ[æ†ßO–¦°^|gG&¦¡±5D¥±5Æ WDaF­Õð1QHÅ™´ìç2§Î<r,‚OL)å|¢{sµðtûm\—2®=jZ;&¼½Z¾ËYÍÖHbýðòâ³ ]p»_. ÷1*‡2îîÅ…²VüôæùÅ› g¡Z7NËÑÙ¤p’¤!¼F#IW9nÍ ÷Ε>Jãœá**–®㗠òºMï•Ânä4´IF˜qxÉIA‡gô{Š¿î%‰{ÑÄé(jÄæÅ/WÎFô:×Ié°<}rqùû/‡'㣀Þü²‡ÖHk‚•ÐKnÜð]ØpŒ&‚Ò‚Àp3üLO üä¤Ç ?šAñT¥K á#„—¿ V¤4#Æy´¨d¸ß/ù‡‰Zy/†÷ö(æ¹< ÚyFa,#{Ò¨ÞÜßÐR0§¥­–%ŸÏÛ\)3çÆ§qåÑ«ÜzÃrt4®,“*î—²p¤Ó\Oî!î¬TØÄÖÆé{àgê°r ï ×Á¤} .#í›èìÛ×q{<ö'[ëËýÌê5%÷<a!¯c.™×IæPÿl'ž¥Y˜%÷C¼1Åt!Òë•Fè ’üù¸'1à0àÀÄîÀ-ÍGñ”3+fFr_™’lΔø*b6`ÚzÖÜWíGŸvê“Ò›\»?˜Èñh´;k·ÎOÊÀF­Œu‚¾Ëò˜n²Z2 é¬òº¥(wVï †yµ¨KÐ u™CEnÝ™µE›P¨ï¢–iïò¿ß¤·´ÙžU&?K.7Ž\ê¥*Ñ€Lú†[H[(„èyˆÕŒM7£˜É‹w½ÅÞVíø‘iJ9ϱsr‘²0Ò|ÄßdÒ¿ÙÔì0xöºrÅœ@Žë¡•›Iº«5™GÍðqleT*è­—ZXÀE"'øSx‰`‚#ò“=Ü&Råz_·¥Ó”^>ŒhCò5S'ü4Í´Z+ÙÒê¡òÓ&¦t €‚doвŸ÷ZÁð¸(ÿ>oÚ›l„*&жÔõ×ñ-¾À®+ ºÞQ“^¼#_C‰²0…²m¼Ÿ½~o~lÂ?À»Ñ¾;dÿHÏC$Jž3¿ŠHÏ3ÑÎåð7‰]|òÕpGÚíÑYUâçHÍ4­9ÌÈ<ˉú«=Áø5'‡?…”ÝiçÛ‚Œ¿çDëe°­eü˜ íÈ—ãÉž+_àèRºûó¤û‡JWÊ ">>êŠp<~ô$Ç(eLizðÊ ”èç¯]àÃ:Q&3¼Ê|o‘ób<9'ë@·V™Mè F@_*2rgÊÅlcÉ€hª ‚ɵ°¥CžÜjÛ*©ndNÕz<¾ìâËAKÑwBÄsuÀÁKÉ\A›‡Á"Æiy –\ó+IòX, è@‹žÇË•7z±Ü^*yI‡wk•uQqB[ײ./Úºßt^”¦zˆÚë:Öb¹ «3Iù¬#*iCðI)%Õnãt"‡7‡‰ŸRϯ2=Ï Š'D@äÈΆ‰·Ê›Ç?k¸ pxø7ŒzαAc‡óΈ Ä ˜ZšçM´<èµ)¼{¦ZfkW¦6a5ÆsüG> »ÍÑY›¹ÿYð|„ Š)_&1èmíw…”Š#ºùíÓ¶3{žfðæaá5ŒÈÕTõ©Àé´URóÈÕv qæe’=ë ^+ØÝU–è3Ïœj+¹t”›ߌûƒ±,œ_.Hh£®Šø ØYôÚ߆íyÕ¤ò·Š©ÑS”äæJ_# L¿:Û 1¶ê÷&Û|7'r÷XшFÛœ‰ýˆAjZ¦½&×àµàÅ™z[‹gy¨»–@'ϥÊèN’ɺ[»®yÎNoÁAjKéMªâÊäΧ°1¬Úï|ëªi£™ãøþ"ÿT Ñ¥`¾)ºd"de’ÍRö|JÜ$ÅV©$ȯ$ãmWßb ŠŸ‰-«³­%«ÝlªQó™gã¹å}õŽdzo ½òº[„äj~zí"AQ¡R~©d_°YhXáú€äœ–ü‡6S‹‚A?-Ó˜Äc ïzê¶³¿ŒaÉ*úý¨FÆêÜéÜÊK%†?îÜÆ©Ø Ø/;`Fc˜Ïë1Õœ†åô–ÀÇDý;ZDèjì®FáÄùÝ+^ÍÁ±,Ú`òP<*ºW–jÖŠU+=p) e(×¼–×E¶´Ð=¶˜’%8+;;xŒÏÉYÎm—”8UÊŒh„„¦ÄdCãb8ÙÛì±V ÄP.CEÒLk(\I§y£}º ÁÄ}ñ&Ø6H÷su²…ÉêÖõOï3[ W`V×âóh2Yv{]9ð˶1ªF*«š“;íÕD½ÑÇ¡ LöÞG!½ÈcZ®Å󺱫FCíT©M"à²{xU2¹xáÈ®;^ +¬çJ'°Þа¾,è´YŽ^HwîR¶½ÃŠÝXZÎ?¹S¯âIZÁëô ˜Ÿ^ˆ¸3; ³x¾u@E$N‹<À¯K’«JW[R©»“ÜŒ¯ò¼“­Bšuœ ñ†QDxiz(Å;ÀA­¤Ëoæ\ pNnÛ9ý*çÊ‹Ü)é˜ó(Lejkͯp¿ f88ÊJÖ“¦J6†[¬¿„§Ø.9òXA2j’µ.$ÑÒ¸ðö/a$ÍDh £Z©d7OöŠR­Ñ0¦ Šìvwq/<¾W½_G‡gœ,ÙA9K gñ”0ÆÚòÓë8¼¢;å‘]cUº´›éÎòÁ1^ø¥S‡R$é*{¼l(§.—Ÿ×ù¹"ÍkÊÇ{‘¦avøha=^d÷Þ©\ÙËõör–…•fAŽò)7ÃÈ'›”ÔOû°,$Œ¢Ë®·gñ­d§[Ü9ýÄøZwvÚ¥ ïªö]°jµ{@¶>Þ8ö©îG ¢î`E‰À%šÕ–WžùöhŽeq"”4™é–4¯hVt^ô¡#/ÒU7õRC)BýÔKÒ©°ÎÓ.­À¾ÿ:?v ¬¡VÑÒ(sy’¡W&?¼êtˆ­®xW¼¤òЕºO!ò  äÏNéf<#!Ë*áÅVs™WÖ­¤õõY.€$õ»Z÷ ª«Fá ìyœžµO¿³ûA¡ïî&Nïtè= BÒºÈ˩ܞ{årB‰Óª¡RÇ}T£«º¥'¬NÅ‚…ܨNÆN…}yããõB [ÏJ3y¤îʹ&=BÁŒ6oãî[W¬¢£3½£Û陆 «Æƒþ¯1Ài!ˆ6¥W×$›ª(úÁYKÓl˜á®öðOòáå°,zs °új ½eòô8¯Ù¹²Øú‡(xÞ«L5è *¡MרòE^ErÏê.…¸JÏ«!ˆfÑáFQ¬ÓÒ­£9…ª1<ÑJýxEÛ,¥mœ¾}¸O)#‘ÅŸ¦ ?#óùßÒÃíu÷çg*çž~~ÆS°ýè_~~&Ï}£Äš'½3#çüôR›XÄ(KFÈe*ºÄQÞ1ªŽT‰BR֙¬èL©w" n`­E4Û¢Šå”ƒºáŸtØ£u´O’cýV›ì—Yˆ”pâ;!]ˆFJ†` ^è×$rÔ“Í™ƒ¸c¯qêîZŠHDìc\¼ ‘ÉQB—øô“*¥ôIKEðîsîô&áç‹¢fª0Y:) ,󮣭ëÚÉþ%šNŽ'›Žjå`¿eéXžŸ;˜~D lâg?¢5½Ùú­¶eÐ}0 €‹¡à“e¨MõÙÅï‘YZendstream endobj 435 0 obj 4342 endobj 443 0 obj <> stream xœÍ\Is·¾¿ŸÓ;>¦Hûâ(®rÊI\±|°Íœ’TŠ"µPáf>j³Kùíé3Á`4GvÊ n úë¯`üÓ–3±åø_÷çéåæÑ^m_ì7qx+¶ßöOÿÙü´Ý_x'¾ýÓ1jè­,#¶ÇÏ7¢“J1gÝÖúÀüy|¹ùÇîǃ#x™Ó–«ÝûxT ¿û >?8RÖ2éõîï8,…7<ìö ͽóB„Ý3çFp£ôîåÍïâ,ÒY=qéC€Y®ðƔݽ‰À<*#¤öÿ:þÚc©=’+¦Zu||‡Â:HŽSH˼2nw{Wªyp €Õié½ðò#% ó\ì¾BMx‹vðÆ(Ó¸¸<á‚ã~÷;\“–k0ôÐ* ¯Á¹’ÒtÂÆJ½;C ˌѻoQ¬â±Á™BѩӕõÞ¸ãM·(­}(çîoŸ¥÷Xo’í¨l»ÛÏ=ºTb#ÂúçãÍ÷TðÛ·à†c‘Ú¸ÛË‘R1aú‘‹Í >áD§þ:hÍ™§Jiu@&0ážyœ¸P0`£ ¨ à F©¬¨¬fZÓ™@+¤· QÒŒ ?Ž »µ°lçT ÓäDÉOØu=!ã{2ÏF(ÆÁG_‘k"ò<‰8³ûeíÑãÚ[ß›Z Jd%:‘ÀÑ)=˜¶ æßKŸð¸!FÝ£®Éø]Aüaü”Œß‘q*s–ž±žlù/Šw†iCà‰Jaxàß¼ïèrNL¹*Íí|~Ú`Åë¶æÌÿ‹€êA(¡ )” 0¡ŠY‡E&8¦UÇ¢GÄØG4V¤xYÚÝ¡·¯iV¡ñšæœ!kOEJßÌÅLO«%# 5*Ù•ªõó •Òõª´°£+-;7TrRá]Óµ›‘öáé'¬hzsßðÂmýÖ(ÿï{æÙîdÎXŸ¡íÓ%¥?¾ü»édI4G™8J"vÔk?XDÅ̲‚›¶Ìœꯥ™3*…¢õ„Ê©KN+£˜$¡’[‰Ó0£Õa–ÓÙŸq|Â+¹7ȹ¨òg‚ÖŸ)E<‘zDÆ¿fløùÉt¦qg¸p‹+Ý)a à¨;£ÒJ…¶Æ’ëä…K‚*Mt#ð¸1~R›N+'Õ­{«>\.e¾¹pÓÎ7Û£äOøý,MߢN}pnI‰2 9ls!*ù•ÂS¡¹GVÔµå ‘xEÁX‚Aà´kÅÒ‚è|µÊŒR­/bIØyKQiXÒÁâIΧÅÝ¿«c€f@Zâ«þñ°Qb)ñiY¥èï2}k%¿;Wy6Yø>ÛngQ¼ (iSÄ›v¸}H•Â:ñ¦½`Þ®[öHxÄ€ÓBìŠ á,3L¸¡ 8«8žç]ް]J똖Ÿo3§7ý8=Ú¿+qÜsȨ́’—A%?Ñ-Þƒì=ø#—Qiè5Ù·D¥`Öñm¶û-‹Ë›ûª°ß5ð¦»ÙÇÝþØÚbGÒèPè†f"ËGy1nVÓö›N#fš›.öfÈEé™uS‹¬lZdÚOO,²jµ‹¼# Ó®w†¡=û ÎvôËŒ Š¢ÖJ …2eÔÇsHÇÄÇm®Ò¬‘³"ûÆ í“èGOVhº{—sAeÆí§i%½‰>¤ê%&újÎê£ ´´)b ÀÏ“§®Õüžg› SpÏÝ‚ò%¿ìù MÁÀ$üòF÷냙º—ÊŠöœF jÙu"…ã~]ן†èùúS2>qW}úbŸÁ°·ª£øH¨ôú–bˆJb$¡‚a"telæS_?^œCåãüNøKW™¤)` ­1…sáÇ¡\™þ8ÌÎK¢ærøa g, ˆ‚jÊAÛ,Õ¢–[oÇs&áý_‚ë×5fq|ê 09â CG÷_`ãø‡%ýí`bŒ+`°Ðò:»¨$Wâ… åÒ- úí7=såøÒ<àŒîÕ´æTÏhEk;“ÏYûЀáXP¹=ÆÙi8Þ4 9!•c¦H¾–UÒgdšÛ†|ã[Ç ‰{‚´–e0kØH̨õ°_X(¯˜”a« lx)öc÷ DêO½ Vÿô‘O½ãfaµÇâwJá>*©²lBÅÔª„_@K (ü¨µÎ¡”’@@kf·`ß4RÄ¿©áÌ绉ã¦È ¯fËs´ý»npŸs¹7Í9柖‹œŠazf5ú˜»ö·d¸õôª«éåRFÒ3_Ö«4šL$ÊŸCÐx3¶c£'Ÿ¯ñÖ78jbm&FzÖd/NÒ‡öד/HYijC16r–ÙÇdøemxõ“®þ£uUû2Å®¾$uê²!Bg¤õ€ÒàýN³Äª¿Zµ„[5ŸÊªJÞåO¤åÏñ œ¤âžBcâžIåÏP+ˆUx&ƒfÜ™¥Ø "1±Œã4f'®* N5\Û¡çmð: Wn›–Ÿ>>)\Ù9%;Îá!IQK¯“ ¤ƒ-ëâúWõ[Õ´òxh¶´i]€~lá]†ŸH ú·Ú+……]³ïÂfôy+Sþ¿ÅÊßÃI¼Ðã™!ÖÐ~sÊxÔ2+1Þ –2žn '~,UõƒÕ±Æ=áé-/3%%ôÙ†RµÄJ”T–ÉÐQòMÃJú«¾‰ÃÙê÷€ôLxâkÎâ>Zšö/æÆg³]S›¿‰È>ÑÑ¿ "trüéM~¥ ë SðL”A'`Ó%hС–])èàµ^‹šU×µwóß»ÍCëÊÁ³šGw ˜?¡@ôHÚ29tô–F#jÉFcº{!9´Á&Ø>ƒ—-¿_Ya,ÝÎ9PŒÜ•ˆZ®¼„2s»ˆxåE„àûo©ñ04,ƒ²ÎÌ-a%sÝVæz(:\hËãA×0eZ‰ðB;®t·OBK‹Ò°$â¨5 ýšH¤x\s ÑÙÄ|K­;ìFU ”¨¦a!żDLö®“Ux:ZŽƒpÇ´‘Ÿ“G4UÚg7žÖÄŒ¡Ä<Hr×¶™vŠ»‘w¤SEK©bâÛ1?!mÀv…ð³cy¼U·?@ÓŽ€ÌA+vUP’Iq¯Î½÷ån~çç1$H@EEMË]ˆ0«‘Ÿ"„¦ô‹w| .Ò?t—\¯ÐkÎYC=1 àbLL¬äBiç'#Ì€!†xeñ¥ÚY2/áÎRBÄøzAŽ[m³“ƒÐùÄ4JÍòOøÒÌ;¼qÓ  w_~aî†â‘´bch4$¶i(vn †¿~Ã_ø…Ýq¼Ë«ÀâŒN´’$Œ.3(QªuÊ Z‡¡fõ7Ÿ”…•=Wl£ ×e2J½O²²õ*3Î 5ÎMn“ÓÊfd¸ñ¾“1­â(ø™DN3gÂ:0.Ý‘•¬íu—u¢Žâ7Ó6Ô‰:jîñÊôvPv_¨ZU+ãffsq"õ"µðã ·}tϯ{ÌNÊºîЇ¦Ÿ¾û$ÖË-”L¬:°1¡ËODï–S½Q¦Feo C[4ì¸0>ˆ3ôåhy:L—òáyÆ Ã4ïÓÝ+M« ^u·üGÕ:ªžïL¥—ïéÔÝåénŸF 2}Äô¢\£ó —·ä@pØ 4¯ïƒÉå›”iWÒ̵¹Ó{d‡b }’ö®ÛÎêaéÃc¿œï7ÿÞ…Aendstream endobj 444 0 obj 3335 endobj 448 0 obj <> stream xœí\ÍsÅ¿ë’{N/œV…ß0ß±IU UÁåR”í' d=9@¥ò¿§{fw¦gvöY~zÄ„¨(ŠÕ¨»§§û×_³+¾_q&Vÿÿûâêèƒ/¼ZoâòJ¬>ÍOß}$ÆøH¾úÓ rè•,#V'gGb¤÷žåÂÊúÀ‚u«“«£¿_¯a3g¬ÔÃOÇ𨤔~ø$-kËÕpq¼VÖ2éõð7\–†-Psï¼a8Åun7J7#½ ÃgQŒt–Ÿ½ô>X5¼ÄGXSvx¥†\£2Bjÿ“¿â,=䊩€Ç:ÙÀ>Cb$· BZæ•qÃÍmTUóà$žÔÓ \Ø|­¤až‹áÈ »h;Fã¢zÂÇýð[ÔÉ Ë5œøãJÂ6(Û€©ÌH쬵Ã),3FŸ"…Ò‚+ÆAÉ ¡(5UpÉábRJkFêè›MÑéæ4 (•Î 56¼Ù>ª*9#šõã“£Ï`Á¯~8»³mÁ¸««#íœf`øiåòèËEÀzˆ8XY£˜w#â~Q&œ}+EX! ¥Õ‘W0€˜œ{©½6£[T°^¢í Xx†óBpY®Ëêóü˜­«pfÐÚ2ëA=Í™‡# «<ãaZØuâVëéÄN%oŠ2×Eų²úÕPž/ Å˲šœà4<W•š³;i椤_ççä‚`¨÷‚d^¸Ê9ä#À 4¢WhÇ!²¿‰è\s3l^E¸ùà)¸µáp–W„||Ž!H6zI–Ï“D'£ò®Is¡UÝkfÁú£æ1+ ¥!G ×’’Ð)¤}z§ ‚È[µ[ÖXwàg3Qÿ.'¶®zÂ@2Qñ·˜D¯ëéaüBd=×J7Z¬¥óL@N\ƒ»¹"qýb-™âœ™@£l\¹O˜ÉÀ¼±{„‰¢§(rÃÓ²úm/Z‚7»ž‚Zµï—/g?D°PmŸÖ5È_9…FŒðVk³Z æ‚àr‚.p f[ˆ 8'€±ây‡±¡ÀôÆ¥ØÂí§:/z¿€€þë)ÄgÚb@ýH^Ø'Œg%€­Žª3 ‡Åòñ?-î(yh°œ{¥ûÃDZmk’—¾ ´7†„A~ ¹W©øg7“¾ Ðé¡ï¦¬>)¯ Á³.$ûlK˜Í±=rLCë»ÔMy}øÃuaÓ#4M\ŽñiÛøNlÏ˪\¦¥ÖI!4;:7˜%:…h1ò$‡f$üE˜Bw{¸*ðÞØ5jÙÈ<¹³m´ÚvKRÛ6î¿g¿àiiCn3iSš@a%mÙ1Uq­¤!Wke˜w&æ“8ÒB‹h&ÿ-j ]`0‚Æ¡Œ0"Âwôþeñ2y¼>†SÆšá‡2*Ï·€N^{ÁŒK±0ÍÄ×Çkœ\ j3W(—5í¨­¢;nQ4ñ7‚‰[×’4°b׉¿ˆúïP†Æž&b Ä·8l8 Æ-œ Qnú”ÌöDT‰¼$ÉJŠ~üPƒÖĨ•¢ºc Þ¡Ëãù ¨ê›; L H-³Åì)<HÂöˆ'e È ñJÞ˜â­EÜ_blWÛŒw>“Ð9Š[Cè@ÝS•ÔEÕ$vù’zÔfêJKJ×/Æaò‡´Œˆ‚.dø)-ßÍ|ÐÄH_Áò²kóíö¸_qÊ1'û\…ž•ü}^²þM[óÚ@J©°Ÿ ¿© 3ÐôòјbÜ´úHrFRn©(„ @i•¸í“\WŽþኮ– ´`lÿ„©ÝÚòÝû"§áXxÁ¦{´ &.4=é–šh" ¶1ñQ±ÿ¦Ä\ (©˜Õ~ (’2¯G¤åR y.s‰W·ÐArý²Š²+EÀÜ;IézÒB‚'esû¦¶ò÷åñ¬õY\½ji[§þØÅÂUy$Ýèe#!aa» œ`µè–jH©P)€´Î(Ätç•éð=(³£g+¾ BÆ xÎe]©c™µ¼®¾D“è}H Ðt.%€yÓ!ÈŠ¤Ê OÞ4Ñ^I[›6­wämª> ¼JÛ€ ÚâŽûîbÁCÂ(¨]¦‰¡sj£ÌŸ“`© ª¥d®†-­T·i][Ó˜WÑm›…à[h fæ÷Ù&‰J´æŸö9˜ù!2öfaè'q³ÊG%ÖÚëŠÅ›7èó­w¢Ü­µ†f½Ž/ÚRm’¦Þ…j€¡P&É;µ0*'‡qè"*C¾&"n“d§ì® I Ô‚· Kô—·¢rÀ>¸(a™p¡çEº8±¬%ŠÜŸM¡0GŒåEºCµ=iÆ«€ÅS‹:Ž¶Ð¼îÄúÝïí|û ¤ñ=t #IãŸH¬ë–˜lóû{À†H´ø^SÞ9!Äs7ÄIî—a£"Ö¹6«J|Sç˜U£“DÝ>ngº@ê­}CŒ²-»i ©HO1œn-gÏññ,?–wxJK|{ÝŒ@_X*§ó{\¢?X%z6™nQO‹?–GV_”ÇWÍãbÞR&Få»=v-izÊGMê}ñ—ü’V[ –¼¤VðØ>è!qMàà TeEãuX¤NÈ)šP••B•9µS• `2ÉÊåÄÅÏ|ÿå°†ÑÕ¬´Òy&šû£ôÞ\â@~ž‡l}†Ã¨bnMºyýqYŸ13©²Ãx¤|L%=3• ß]UÌTTôD•9…×LPQÈfdCÈæN67[|þ„Ð|Œvøn¶ 8jåÇe}‡ ³y*«úlW ù3y(¼ø“#Ø–ÃÈúvQ³¾ìk²¾<ózÕ½… Y–©º£Çwª,Ù蕳ê–\qhÓuod ‚7wL¸ŸÏ3¯æ^šuí?-DF§²Ï=Ö™4£gzÞxC²É†®üê@‘Þ+ª@A¾ÃxCÑá¿wvG§¡’ù;…qºàõ‚˨+¿&ëÏ–.Ö¿&Þ UúõBÃöbîÕYUï@bVá'xì ƒâà   †%þÝþÅÀA`à`NösÐÓç [¨K#ÁTʨªý‡„œ×Õ¹GþdÖÎ?¶à¡çäùŒ:ˆsë-,€ºnßß'¼ï7¬“Êÿº“Ÿ³ ‰ç³ ³[ ´úœ†{ä³÷ó³°ñãJ‰_¨«1Ü_,8úuß‹Oj·dò÷ÈzÇGqú¨sU:ã­"ê=ò‹'óçY½DóÞ’ß±a䉃ïíyŸÌÁ4›¡ïL »x±¤Ü’Kó1ݙΠwKE|hë||mÂl•ŠMÜ3MÅW»Ï¥éÖ‚¥æë¶ÜqÐŽ€úˆÆÅ³ÚšÓ ·4`ž•1±É‹Ó€Ù¹HœÕš¹f ¤Û”NWTnG’³Iª÷ŠÛ¬dTèM:S0>qGÁ2ò,J³ Íô§}Ò‚FÑ[ÀhÖžÓ&¶/wÑ¡wå]ðh!<*ùé.Eð ¹gß^&»»…I aq>£ @>qÏ"753’³ÿ.fß¡sÖ¦:…h²qp¹ªOáDuK\¨*é®>¿ðÛn* ùäaÎ/@&üá–ø×}K\@TOÖ°…Z{ ÛÈçï™'¨9@»5×Äók⥠ÝÁÚÌÿ›ïìʸ§œo2™ÙÕÓLùÔ2™ÿuÜÉ{ÖbèÊAÍÇ5B+ü‡ºù¢]{ Š‡Ë¢wxYT<\!#4a)þ5%Åòé…¥B(Š‡ë¢Ÿõº¨ø°ò½n"^@{­«ˆ—8Ãf¾Áfî‹î‹úÍè#¨Íè›þ/>…Ó§¢IB~E?Vv}!Û|f?J•ÿÔS­@´ÆÏî#Vuùê×T_úÆs|~ôæ;DEendstream endobj 449 0 obj 3434 endobj 453 0 obj <> stream xœÍ\Ks·¾oåä´¥ÓnYãýˆåT%)?ÇI,3—Ø.—Lвr)sIYr*ÿ=Ýf¦{f0œ×®”Cx4º¿þºùãZ4r-ð¿òóìjõþÓ ×/ö«Ô¼–ëϺ¯¯~\Éò?¢t_ÿñG˜µ”M´V®O/V²ô—Z7Þùµ ±‰ðóôjõÕæËí ,æzóv ŸZz6“æ—Ûí\£‚Ùü›• VÄÍz‹àƒ”qóÛ…•Âj³¹Áþ¾‘Ÿ§Y”wÐú º«#̲ÃOhÓns×’—ð©­T&|súÜ£ûQB7:â®NÏaŸcg•À)”k‚¶~ss›$5"z…éŒ ÁDXüD+Û!7À‘°Šñ°bêÓø$žôÑ‹°ù-Ê䥶 ãpW –Á¹­VÊ–ÎÖ)³9Ç®±Öl>ð+áQ78sRj:uP»Âæ$u×°y[„2&D>w7ðæy^Ç›÷žÕî]ÃÞÏûqTT²GTëG§«/V Ö?­¾IØ0”»¾ZY¥t#m×r¹úreÀÆÐ9Ãéé'8*60ÈD›µ ~DÆô¸­¢5L¢ÕI@«[;«›à ZßÏzUÂü¶] \šwDõ{Òþœ´ßï[œF5¨úKÒ|¿¥…ž‘ögäû2K À(ç•¡ØÅ4VtB¦.»Vv¹yÁ'ìF^“öïæȲïâúinËJV²[¹“3¢™ÚA§C E‚—t--4´M4+8Ê„ã`f4Ze¬œã¶Þµ7¤ý%L€¨Õr×þ-ù^¢Û¯7äéôx,\ú†v+Bcb`óP«7ó2P=¤þLºÖ×[ÚkKþåƒþ{µHй[uÃn$€Ò€h Pp&7Àp…>þÛ›xFæN²‹NžVDáp)‘GÙ¼¯n\׉ÍmÙîm”¾±t÷8Jg÷6:ˆÑa–<ÿAšoøCÇ(NwÓ¤C=ã{îIm—#1àyÅèô7ã>£þû<¥r®Æ˜ãGì@¿k,pÕ¯D÷´ëWšÐÞhö—$y û«¼Gªd·ÞCø'O£Üyº…e3z–gú¾©Àõ9i§”ýªB;Òç|¤NÖ'}¿@ÑÖ+Ox0HaJ9Šmm^qD.€T‡2ǙΩÐ8Âti”:ÓAÅ!caº×•¼bêv¼ß¦žöWäûÑÏˊ垌1•ú¨”FõÉ9kýY€o¼¶é rü×¼Ph.ŠÜ½±˜'  YÄ¢8ʉ$¬o+$1¡ýQªYnB›éû]´l  èœè>" Â7cS`ÿStZfÆñܹò«¡iŽb -ŠoQž}ÓÓõ yH+³Yø2-´ª…*ABr©,ÑBú£¨‡ƒ+x¼¨lë¦Mkº”ú>¦î^².I—Äú¼˜|BzاUKjZ'Ð ’ÖÏ·œ, ,(Ò2)ß#½ß£Ól{üg3uFæÐˆ  @€€ƒôÝ¡T™V ä´;,Á}› |ØÓö¡¶:4eþ¶ÂK9¶íT=x{µ–`öÓÌoM„²HS¿Mƒè·Å\&Bèõ½™AñÛ_Ñ*´ØŸÈ)iÊrl«ôçvbNd lH¾–™ã8‘ t\œ¨–ëß©¸ÆvÊ}æM12ã=5¥2jþX/Óì£/4å{R1ÕDŸôýhº­/:¹±–sœWy±@Ê ©›à 2Ò6àR?,Ÿ"6KVÇÿ=Y&:úÏ­Ž`®¹Œ Ð#KˆËÿ¤·Âz……’ ¬­½ÃÇ/0OÁaóº4/C y°œ£‰Âg~2ó§5…?G3Y1Ø "?Ó¸êÉÔ ÐjŸüòúH¹ `däJ¸Žñx¹N‰ëÀϱÛoÈvxÝõ¾ðˆ­ßY¥Òañ9[%?ÛÏè%†Ø3=t›¿Å®7€¬Jj°­U xù¢¤¹t4î?+eCl¬ïè™9@»s& æg<ª_†TDðR/äµy’D–ú®ïÒR6ó8þ†„l4,¹'½‹i ‰æå3±d¥aÈ@Û`Ñô6¯"d|H!W:2¾¯—vÄ#¸h”±w_åKâÔ^k º…¹oR¬1ÃúEþ]Ü ÷&¸ <1‚·Ã7#Úb9Ò"ºšê¶™‹ŠÏ ñxܧœ<ûÉkó<ÖÀyuŽé¹!Ðu5øˆˆÇ$;MŠ-ù£wâ™’ú,¬¬:&ÉâïùC R©-$Êîÿ§ v1FÞ_‘&•jW+¡¨yï¦ýœøs‡45é›1QUN×r;sXbÝ0 qš`xi©¯íJ+øù\Ò”;H›+gTÃŒFFÕ¤L‘z uŠ-ÎñÐJ¤ô›™æÄÔ½¦CMùÌ4¡Dñ~óéu›ÃõQ—Ÿ¦"µAA:'¤–úoɧìQAõ V‚ŸÊøNy¯Ps­=,ï… Ã=§Ðc`btŽx¹lòïÓ–>·¤æžO·L›V4Ó5OÏc°KavHÔ+”©sar@?¦ Èc€®˜ä€=a[¸F‰îàôm æ`˜=Ù÷²¨Ql*GY%‚Ä óÿzšSDâ'z”Àï˜5S^Ç«‚’çŽ÷Û@Ê,µœ%jj$î˜JÊ1'Ç6¹ìzEį·û}ÕqvL,Ϧ=‡¬ýv:W xše(¡•ôæÍlNÑ®Ïi%pKn>I»3V*vˆü7"ן¶ÝÉKΛO#¾ÞÛ+üÍeW(îïùðÓ¨ï¸òÒ[°Œ¢*jooäÂñn!Ëu[ƒ{YÏoÕ5qÝçÃ1HðþPùaö­Æ¹#fï0!$Qž¯ ¥ç°˜dŒgtcXt1“u§uw©¡_W”˪¹k¥2šfÒîzÛöôQ‚®Ó5c—Š.Ë•ßô‚Š´dÅ(ÏG¶‡‘ÛDl¦ð•ô¬’|¿hd½1ÄHÉŠÓ­LùË´Ë-WËøŠ9¼¿>íÖœ$)Õ8Ù´ïzj/ê3ÓØrõn­ÃÔÿpu€JTpÜ|QîôkÞW5ú´2Mbs=ùãº5„éƒwP˜rÑN¼G5}ÓR9w§A~$: ¹‘J¾Xw'xwPTó“Ÿã+çÍtÜ’ D´¶óW=È’BE`¤ºÄÿƒÁ£ ÿénàto”oú“/@õº\<¥ß“dX0S„M‡e¦œ=øD'?¦ðnH)æúÅq œ ÍÄLs%/¡÷%û|ÔŽAù»‹êÑþEØý"'£÷çc‡ð zpˆêM”ªAŸ !?†$9÷¶‡U9Ûš<„f9Kù9äT(ý·p÷]«ðš` ;$Ùyÿ.ëÂxõÛ øu.Ö1]¬+-GëP„HзWI ›mOo(IL]˜éUz›[[töæ÷ŸíÖs½‡±iëQ…Gº` [¦Y¦ç;+àï_­!¾ ac·oL™-i"0‚vù©«²Pù¥øä_€A-)ɓĶß$öQ+ÕH°K€ˆ¼Ì/MïÑŽ1nç‹Õÿàòw€endstream endobj 454 0 obj 3964 endobj 458 0 obj <> stream xœí[YoÇ~ߟ৅^<„ÅVßG$=8ÈıÛÌSl2‘öòÐ.iIòßSÕÓÓ]=ÇzhNÄ ô a±ª»ë«¯ª«†»ïל‰5ÇéÿãËÕ‹o½Z¿Û­¢x-Ö_å§ŸWïW"ýÀ“úúGh¡×B°`ŒX­DÒ÷žåÂÚúÀ‚uë£ËÕ?›ïa3g¬ÔͧxTRJßü¥kËUsqp¨¬eÒëæ(–šhsA9E97‚¥›mÒw¡ù:.#ñ[ЗÞ«š+|™²Í]|”Zª°Ge„Ôþ‡£¿¡C–:$¹b* [G'àÂר¬ƒä––ye\³½GÕ<8‰Àñ4,®l~¨¤až‹æK´„]´ƒ£ ,ãâñ„ Žûæ3<“–kðìãJÂ6¸¶¨LRvÖÚæ5,3F7_¡†Ò‚+ààÊ ¡¨6=àaT'Dw(­}HÚ16'åLÛÓÖƒ Të{ªó6Üž;zTâ#Âúç£Õ7+\ðë+ÀµäÐÀ]_®´sšðd³ún’pÁì%œQÌ»D¸/G §WükDWñº‹¡¥E¡†ˆnS?Ƙ+»EmÍ88¡ñ¶ls!ðpjnÚµSø3¯Oq=‹tivçDåú¢¯4°ó!ÅsÐ6œ9ÚwDûµ…Ѫ9oÏ["A²=ë»rÀm̈Q• }î4Š"xÖJ90ä,R`ÝzŽCN­—ŽÅ57tÁ˨àMÑ&h^µ®!›ÁaÍ…n„ãAÚ!¨VÛŒ»q6øøHñ¼äÀœêHI?x£E/ºÊI¬G]¸p’8†V‡Ù¡ÐLÆ­u²0ÿæ}a e$ñ™0…<~÷…ƒ²ZíOÌv†×•¥9Q9q^ÑT,s6×LâtQŽq…5Àyü¶ÝXÚür`43¸Å¸w¬ÜµKçg$ÂU«ì,Õy’Ô¹ wšv‘U>N¥Á/%>d›a‰‹t˜0¿2´Œ»!¬KFKB(¾oZ"Â\˜Žˆ»‰ko1)¯^iu,“ŽY¸l;ÛX´¡´×åñ,?æ’­á¦…Š­5‡ú*×V¨Ï+6ˆ ®fɾŠÝ?K*Ù°Üpq ¦•lKöi9ÎÇò(Ë#+Çåñµ±ÔR/ú÷…² úŒ|Ÿ@¨ò‡\²ÿíI¿ýk¾³ Tæ%¹³: "àƒ€”AdQ@­"›Í·7XJ¥¡hIÑÊ–~§]µ„“‹¨UZµÉÍÝ—À7`„YC®2ãM þŸÚN ðÀ‹ÃL](÷F(æLªr£Yþ²È‡8fO³WìUöTHà|…#Ú[㘵ªÕ“Vg©ƒWP`èZh'‘KfCÂñAãb5QàÍVÄ[Þ)‘¿%ò["?Åe$ ÁVâDý:Gévb£ Ò)Ò®Èó;¢³2>ïŠÎt„ ÞUœDaí!ûp´³v‘¨hh ¡ßo£r´•üWDþŽÈ7ðHhÃ)肨Cõ.¿Ø QŒòÛ)N~ñœ„†ÊÛ"V”`6b®>²ÑÍââ7mîCÿzïͦ<S›u?D­YE¦«"¥í€-´0D;¹LaÐR2ØG§ \Œ‚S¬˜ Ô 3¹*RÊ^4[JA´sõ=W´ªÕ]ÎÐH2WÑíÔBt†¦-pûØ÷Üy½Lºçn&º‘ ‰Ò§‰{îšè\S1µìÕ]hÓ+YåfâJ=¿:÷%‡­ ·êEZÁTE´ó ]—Š3mE׉p?–à¾!⟊øuz”¿•(Ëùø‹çD.‡òøülógSiûrV¿’¡­Bâ{Ù%p>ö4Én‘Àâ\¤ì:žÀñ®.Ú1œh^ñ«!*Qþ†ÈjMñγ¼©UzaÏòWÃçô"r<íN&ÚËyÅ4ƒß ‘ ð;˜+/ë y·Lˆ8—räï•‹¡Ç¥¢µ!ÚÌSòiPŠ»LÉÝ Š—ŽyÊÛh§—á­òú,;Z8ðÅ$(Í/îí|v«‚C÷a¡ëÓ”Ñ.¸êz-ZÕꡤQ_c_Ö«›…€40°¨ý×ë w…t×D|•ÄŽ)Ø·õ*ô’noÝPõS[’Ï#Wço/÷D;c_ÅÌô¢­¾ƒ¤2ÐrñeòÎý|Êÿ³‰Pls‹RuÒS9Oª8^OÜ‘/ÇÕi)~TthTS-‹Tu–/HP¾è]¢ÝNÿž  = Y†>‡C|ýI„vö)_¦yX=@9LšYq;'I35Î3"§¦‘¸{ØõЗ1ýnE[,<]ˆÒ%t7«ÐžóçA ½C7µ$UFŸ×·x§BÑû¼^…šö®ºAK=„FùÌJe²T$³½œЪÙ*çÑN<0ç;Jð>¤7Ô3ï±JÝ÷úg3ôo‡T‹a¡o è 62w úµŠ¦oˆmüú”5Ü3üg‡çì;r¶2ðáLhæõ„¨Ð!ﬨ|˜X…‚|\ÈÙñš×Y@nÇ=ôÍĬ-êŠ(´±¢ªˆhçV%ÜšcÅa¬Ó®j*úñy; é ¼\õCR]A”™ƒÂ@£<ÂÌÁ$·™m­ÛÕ•Azœheˆvr™Ê = lü•͸2è[9z}l‡ùåÿ"ò9g¾cž—ß±¥ôÞ“]£¦ƒ2‘y‚†SdÚM©I·úfâ”´ õøÖÍÂ3ÊÇÄ}¶‡©™ƒwe¯Øø‘ÊT´óËé`n5û‹ÀÈ+æè;%Òû lÑ V¿áüu±=Àvíæt Ë*½?ÓJm–Óñd·Ä¤ Å"Õ†ÿ”üÛsê|ž¾Õ©„Tzj´óªšf‹VµzÒÊ– †¿»¬WW ! aš•ò¦Ù‘’I_ÃV§-ÔÉx{ñ¨“m‰C?Õ‹<‡ÎWU‘G» –‰V„Ø=M¶£ÊÐW! u:‰  U:¡~`:¥fCœlå’“-ý+áÓdû¸“m!KE2]ç¼ð?žJ(%NÄÌùŽR?-êž&Û}-ëÓd;JßLÌBèBÌLV .§1Ú™‡UÄ®©&[¥~o“m­Ûô*ƒ$6Ue@;±Pe0†Pùÿl% ÁÓdû¿™l +îŠ^À˪ ]¨h˜lõþ"ðû™l –U l¯6Hh³lUâ–™~7)ø{L¶å<•²Ç`BôÔhç|5Ù­jõ¤Õ}P´LþËpü v'A­î«H‰lÇ¡+S‚Ú%Éý¿”$Ãoάaií»Ï èò=—3r߬þ 15˜endstream endobj 459 0 obj 2538 endobj 463 0 obj <> stream xœÝ\YsÇ ~ßääió6›"G}ŠãªÄrœŠ*ÛLåÁN¹(QÔñ0—²ÌøÏèž™¦g–»ÔØ®¤üÀa>|@£{†ú~-Z¹ø_÷óÙÅêÑWA¯_lWix-ןOÿ^}¿’Ý/¢_ÿåg˜µ”m´V®OÎW²“—Z·Þùµ ±ðóäbõMóõæóÆ ÝÜmàQK/CóW2üjs¬kU0Í?pXÉ`El¶ -‚RÆæ9Ž +…Õ¦¹AyßÂÌϓ匞‚¸ 1‚–K|„1횷呼Gm¥2á_'GõG Ýêˆ^œŸ£°‰J  åÚ ­onn“¥FD¯Ð°Î¨L„ŵ²m²ù3΄UŒ‡“¨ñÉ<飡ùÚä¥Ü…yè•‚eP·ÕJÙNØ:eš3”p­µ¦ù%À+áÔ…”šªÎjBhŽ“¸çmg”1!rÝÃÄ›çylö=Õû®Á÷³2šJ|DX?>Y}¹’@…°~·nø6qÃ8w}±²JéVÚaäÍêë‡òÍê6ø ¾]%·…×F5çÉ£¥d´h‘WÍ»ôäl§-[é äÐÎ é¾4úQÒd…‚ðQ­‰k­ÑôN+I¹˜IL"Õ§H‰hc¶y¼96!T¶y‚"Ê9ï9ÿ_dõFAð³¹Îƒ-L=›°Í fe¦÷yÙ¦C¼ÇîLùY±ê»Èy©„oþVLŸÎK¢¢$#_¥Ksåd!üÚs ¾´ˆ=j³Æª¬ÜA €}¬È]Îÿh)¿´øNŸ­NþðMóÏMs.!mlkÀ©w%o_m†Šõ†>‚¬k…ë0VXO¶WY› ÆñP(h6oŸmà®ñB³5ŸnŽ¡jøÚGּ̣"j¦ûûÍP@Þ’å§%wY]4ÈÃA–× ‘7¥l°e’BØfq uJLŒŠ‰ô¾GÌÏAú¼ÃXúœÿJ…d†p”âÉa„¥ /²B {ó’Hp¸‡úz¶Azi¡nÛIÆÒ×£“x˜Øn àª:riéIÚRЕ’6Ï6s©mD>º¯ŠâmZø¸_ùXšÖfÙ€ÎBi”£®AŠh/95H×¶#€´‡¢%Ur™•'›Oò©()_¿ ?*Yt”ÕATŸ¼%ßf Èv’|/‰0Y¤Ã'$x:{¨ñ©„¬‘X¸‡EѯP‡¶° Þ•TÙf}Òtûë‹:ݹo¹&öݧ öI5d%âØ%±u;7•h§4n7Ƕ³(±žÞǰ~ymF&FÆk £ïA31²öXA/B¬Î„ísÂÒ*8 âÌUª’­“Û h© Hð!Ž:d‘~ÐþD°i@bx‡rð?!g½ÞËF¶ØÖmüáK‹Êó¬0}¿º˜œ²zTQuë‹ò–ªd\ã1@9“zj£a‡(ó$¢ jjP…„½p]]gÙ l=Í^zhBi f d=­0$;l.¦t]C Qö†•)Zÿ©-·cå9Ï®*ߺ\í—Oy¡,´ ¦Ï «3.'ULC´µa6°t  žiH6lóh€ 1·°";YrfÛè*Q†.8GìKL6'— ¶{Ö†UàìÕ7ÕÝÄ«ì—urg²ˆ€GZ³çÒꇲ%«H0iOµãà OY®é›LÎé$„.ÚñôJgvçÃãTbJh}‚²kX„2øîúcˆÉË"¹&YÒsq>8|óHš”áj@´àG»ÈKÆhœë¤ƒ@"ƤJi$)3µ¦YUĺl:Ùª ‰^“»*†³G7!3'!Õ ßnSfvôˬÍ!Ø@ùƒÂ­v±ñFôtºßm…À6Øl¡iNʹüìŒwPvÏ3~ZI–6#jg·Ç‰£ÂðúJë1Åã2/ý6Åü7Y‰‰nDÀ¾Õq±'|Ï÷ÚgȵËÐÞ€2ÎËkÂ0ê~g‹™‚8êÁáH …¬ŽB°®{Éj ŠxËŽvo&¡]úôan'ÔlmàêR 8HŒùzžNÑ~,¡{ùõ4AiÓ𢳤’Hs¿mŠÝå+Ý8}õI÷póbö¦jT/»›*8©á%ÙÚ‚3ÑÛ|S¥‹m1…Œšáq0äKÚSÀ3åÛM†Eư£ÛÊM»ƒ?¬?úJjMM°z:è>™^£¸×VúNÚ *ñ"I Ò¿G³ôŒfR7îLЕõÒ_äûºrÃ+mX{pŒËʵ÷^C*¶>J¡z‹Žñ€i•îJ­0¾lÊ´±h¿÷bÌ…¡õÓF"J¹hXw¶~¼—ÃK\¯Âžç§,­w”ît=­F•ïº#x@Î3mõ·»ÊVAÓ×0jgµfÛÑÇ_*r“——Ê7¿>¡W\·RŽPØYÎ3]3•S3]{RFÛòørç1HK`©ŽAë†r€[ôúÝ*g6–§î–ÝŠ ZèÓÊ-{?‚·ì [²¢ 3üð2<‰À48ü«"SŠP7PrkTNÊ7ú¥`ÍÞí‡é»}è)èNÇë\¥nó’¶äy~Nø¿&ãoÈø)é±°¼^@†Ÿåg)´ïÕ¤©TÍ–?C±iñýÊ2|„ðÛHÝk¤†%í;5Bk#B÷ò!X¦²M!…¿R‰cdaó`/QK“ŒY$jÀ«BŽÚ3ë”i|Æñ'D䊈œ“ñ“,î½l~*";°éÝf`u~÷P8 Ž0:OzOF›Ý—åØÐ˜ Î5ñä†xxEÆoÉøóš£S”žÏÓïÏà:ŒSÇ@J^0´ì{§Ç UÅ ÎÓ™ð_qF%¶(Ƴ›È&ª•I0}GÆ_‘çK"sVÏMÏ?’g5#?Aä$ƒµB@Óc‹ì ¡KêÊ„ Iæ¼6™Ö¨JžÚöǽ•ÉÂfyºi½M7˜æ2ŒÂ’ºt{E¸pÉLEÄ2ÑH½Ÿ9 ýÍÁ0 Pàzz`À“V p’[(õ4ºK½GÄÝG8N±2ó’{Þá·­ W…Ç[òw}KJÃ<_ ƒËèסó%¹’f…÷Ì•¾…åø]‰=ø³lŸÿW^¦ƒ~i9— nG}Ot‡À±x^ ,œ«©i–^¨¸D¯ÜŸö)`Åæ„æ„4¿ò$&ã¬øž„L÷|@H˜ÁÏê §¾¨Úãþ”í em‰i'¹×†Y@`ØE\ü#ŽHƒ‹³Ì{·GJc¨dÔßèTH}·»£Yº§¢kYÑý?ØJk½ I· Ï9 ݘ¡9§ð¸ºPÎI¤òDÎ-Ť«zªäòç&̯և—8z îÿÍðþ»d)ðö€~—Üìú×?fþA©úÈuâߤ%Z”?™hBý×_®þ p‰oCendstream endobj 464 0 obj 3647 endobj 469 0 obj <> stream xœÍ[[o%Å~?Ê/ÈÓyBc´žíû"¤D›€H 8O€ñ±w—ø²øØ‹‚ßžªî™îª¹œ¯'ÑŠÏÖ©êéúê«êêîáç­håVàÝß³«ÍÓ¯ƒÞ¾Øo’x+·Ÿ—§o~ÞÈî¢Sßþí-ÌVÊ6Z+·'Ùé‡ÐFíãÖ…ØFç·'W›o›oŽŽáeÞ:eš_àQ+¥Bó,6NèæÕѱv®UÁ4ÿB±’ÁŠØìA[¤ŒÍ9Ê…•ÂjÓÜvú>6_¦a”w >}Btº¹ÆGi×ܧGe¤¥ —ð¨­T&|òOtÈQ‡”ЭŽèÖÉ\ø•MTÂÁʵA[ßÜÞ¥©½B`z7^~¬•mƒÍ_ÑÞb<¼1©À0>MOúèEhþŒsòÒ þ‚o…VðÛT¶Söιf‡®µÖ4Ÿ£†6RhààÈQH©©6àqR'd?)cBì´SlvuN·çÙƒ¨uö=Õû/¼ÝU;:Uâ#Âú÷“ÍW \Û_6€{›Éa€»½ÚïM À÷’ËÍ7Aå̧¯?Ý„([#@ÇD›­ŠÄiY'«JÝY†)ÂJaZ§ìÖYÝßö÷Œ¬6'Ê|`Ϊö×ù ™O™£¶¢†ÎíLXgÖðB£UžõuÖͳü¬$È ‘_ù ‘×¾;::¶R·Búæ7¢ô{Õ9Kq˜Õ9\@€Lj &P ˆ¿,Êãº`¾"\/ﲓÞÎjì‰üœÈo‰üŽÈ òy¾!:s OL"evš¦h½ñlOºÙ;Ù[&ñÈÒ´V(¦B,Ÿu·_Œ§’A.”>>:–B…Ö…æ)?­#Þñk2ÌŽÈOyÊó9£Úí!—¨:Ö³€ú·cýÑ«.±·ð’ð¹ð²pU8E޲íìã’Zk…Utë ÜVëÌÞœ÷c @‹³}ªs;7ëìW aPZžö6JßZ–öh'3¼½eÕb£Kë½n% B²sëTVdë BÊͧ]ÎHÓ|6S.‰üõÔ$¿íÉîXI¸9É'â—ä4QnHÌeÌ‚§†gÛMï‡n~&aßó1H¯Qå»n¥PÍ/DúrFûº#°—l*õ\•%«Ô·‹¡oyÄ—ã¼Oêo†ÞeõÇ=_÷ë`` w>FznkEšO”J[Fw7H‡e–&J²Së¬ÖùVBKvˆÜ´;x9v>É÷ch…­}ýˆ×\<±_ÍDœ22ž2á׺z,àÖòf\©þ`Á(kþ¯å¹]Rž+ŸÕ ¤š``»@Y‡v~¥’j`¯—ve/ˆÆå˜IN“x¢ûšku_u:EïÔ}ÉÖ÷SIçãE¡+AaÁôƒ‚¡a+àiä:³U"§C«Ex/#÷¬Ë:ØÑAt~:ÐÃ.À¼Gs¹„}  s5B\sR×e˳ÔxÃ^ϼGi›÷§Ç‘»`È¡i{Ê@F3½¹à*“›n ibÿg¦ìñÌàN0ñð)Cq!¦9M„V[3&&³u˜h"ì¦}ÇÄ73nžùÝ Íè ö"MžOgØ7g;Q~Gsx’Ù*„Y´îRzÚOêþø_è‹!mdhÚ©úg4IJ³®FK»JÎ3žvÖ·–ö É̬“v&À.W…1«nf°«½;%­ç3D¢6£“®òË¢|,˜0(Í tô†æc6{\>FÕj%#ŒîZ4?ª´naA©sã. BolÁi?‘ì¬aõªÅFï´úã^в°—&ǽ½dѺi0xº,LFã$¥+)m×øKi”C^@ÀÁGÜw*×Fdº‰`'UY÷ÕQ¹}8#‡êéâÀ@–¤c|-hØó*.:Üpâ“V¸ ÑÆÀ&×i¼ÐIl„ËdìÄéØÞ ¡•é'!Œ°cn{~ήxòGW­ƒ(m¡DˆÁ o-“Þßå‰IÏÜ"̲ûG¾y!J×ymúMY¾Ù ÓzQµ;7LŒŠ©0—òˆByúž‹Œ—‡mãEº«pVËYXèóŽÀȽKî«ØEØçéËO0g´vÄ»þÚ§ÿÝh „Øiè°d¬.!°ÀïÛ¢ã÷/8†uÅ2ù=Ÿñ¸V6žÍx K¤-jÍ Þ£xÎþÌM'”YtÁU=ÀÁßE=­{:vWE…N‚‘dÌÌè"ƒb%HDŸ 5ÎZB>íÇsÉtœLv8؃áIº]x\ZëÑÊ:ž d\’ìûýQ¾ÄÊ‹wš êÞ:ß:i{¢ÝšK=Úù¡x²”ïfTnó(êŸf©—îG¡5ÌE ^—òd_>êõvus’dÒ{X´ôR’5m•¾,“Ôs©,÷c„ AÒ ì³ÔC‘¡ÑI•£±¾™tð’F«u V½ïþ¨(Œ;–¾ÐNéz íX´ƒ>LIÒ±€–Ö±T­*©ZÅÚ˜Šôýq‡¯}û†÷£°«È KßÉbûF¯ NÉ3=LÜ×SÖç3»7ýµŸ¤—·ó au–ÄOµ†¾N3tÑ,Øu 3$¯ $´q§{z¦:ƒÝ |´ˆâ#ƒ¦ó±ø-ñ7Æ ´[gShÀ_³ô,b7†'i\w5‡÷ƒÕ)ßÕh¼ú5ŒhÇ⺀v¤»²Ÿ»<¿Ÿ9㢙C%>¬ß1¼y0$Å[Räl€5öŒ h·$ òÃÃß„É~†æsô§ì9«—„¶ænfzÔ±æ ~€²×j&A?³Âï„hm¯Zdð¢U,m´PlèXhçV)dÊá¾ÐŽ Ù¼£Ó‹AÄŠ|Qñªn18÷hèZ©ïh&W¢«‰ø=TòýÀâ4}ó–b‡)üГWzòýðƒ×ŠƒXؤa©ôœ¤·[Qìu}?!}r°¨Œ®/'ŠÊè*óÃþ.DZþ¢ò𻜢ahY ¥Ã¥—íäãêB ¤‚žïÃx6wtÚ=Xˆ°Ë_ò®ê±*=‡ø™rE!/%h‡ëüGÞ¯”0jû®HO¿Åçâ CÁsnÉàq!§>£rlùªZltÅñƒ$À•ìÂ:øá†ösãCyZæ>¤kÜ軈\oè'ªÏyIšìíyyVÁb ‡Ax,´ †'ÙéAxŠ]Âc4nZéXhW XùÖqA]àÛ†·® kÜröKmd| 6d1êˆqAœE*b¬ð“ÅíÌ ÆE‹n1–°|c…Í×J1–èÎãc¼Öêƒ~M¶ì.wâ»ÆÑNúŽî@oëGSßñ÷õ3Ä©žfD¡»rg;üئæOÄB B§B‹þÿ¨ôè· ð±;¤ã­^‚v»SÏØô†6V¡D"Sæ";oL~|µù/r‰Ðendstream endobj 470 0 obj 2731 endobj 474 0 obj <> stream xœ½Ër$Gñ.8râ4§±ÓÔû6ó´c‹v»–Ök¬Õ.íÚ†ð¿“YÕÌꪞDø°íRVuV¾_=ÿÞˆNnþ×ÿû嫳Ÿôæ«ýYZÞÈÍGãÓ7gÿ>“ýÿˆ|óÁî0)»h­Ü\¼8“=¼ÔºóÎo\ˆ]„/^ýcûÙù^æzûý9ŽÞG Ý鈷º¸„üMTP® Úúíí]ÂÔˆè^°3*áå;­l„ÜþwÂ[Œ‡7&8Æ'ô¤^„íO'/0p]؇·Rð<Ûj¥ll2ÛK„pµfûBÀ­„GÚàÉQH©éÑAíBÛ]×pyÛ#eLˆüìqãíU~ 6ß=j¸»†»_Nû(ªäŽHÖß^œýíL‚(„Í·g ¾K²awóêÌ*¥;iÇ•ë³ÏÎ ð€³8}ú{Ü;Ød¢Í›†ÿDöLrÛ”ÖP•V;ãôÆYÝßKëe¦«6l_¿%ëÏÉú5Y¿"ëOÎw@5<ËŽy“Ÿ¥*Rð[òüŒ<ßø×>’ð²ü.›Î‚ |¾%ë_“cnøñÛ 5@¤ÕÏÏ ø/§?Œ<Ù,” ~„?ã aÐÀ3mE a"î2áa˜'­2?!L¹#{GÖŸŒWMVß0µšÖOàÏû=O@?O¾ll¥üÙ—¼Rjð' Þ•æØKv©{ðvdãvÏ·•`;CŒ˜²3îÈÙ#Ô°Q86„œ„»ìI‰Õ:KÉó†ªSy¸.$­R¶ü“C—ÒCÙ˜hN÷ž.¢óà‹N”‡´îä€%ÂÌbìç¯JÏ¿œàDiä- ËDÉFé;KE wI.J;[2Q²Þƒƒ!¢”v¹E ܘtdçL/I?X¥SfìBŽ©Ð9Bˆ´K„ØÙŠÂ¡ 9 wù‡!„U ƒ=!ö Ã{KÖßÎe~€O&ÓØUöûŸs÷6Ó5 SÑÍ™>îÙÙí/V1q¤*c†çLÌÿ¼*Yqå†È@z:-B&ý›‰©•»nÐìËɵTô;‘é’¬ÿ¢ñüœÀÓã©ýxF`¨Sý~nRÓó ÿ¶q&µœw+V,j‚¬¯1£OT`² ð] ÝÝç dèó5‰ÒÕ{¹ýï*a䬔N*‹ü¶²DÓ?ñA\«…`>¸{¹ÖG Àfn6e‡'ç1òãÄc‰ýV¢û-MQyY—–{¸âDLÈÞ‘8þ¤A(ŠÌÈÕ+Ø4H“e÷nŠ)Ö ï(˜\œ#“^qh ‹›ô‰–ÔIÀ,©!–½%¥ÎêjNÌ™…¥ð7ƒP8fl_>tËŽ‹ZÀRPYáî¨4v“B™8ýÃ*v œ`üÓÌÖ˜VRS[“6hkrÈa¢é¢¿oì5aÆïÄ̀ìv$ôJ›Œa¡×ÃN6œ Â:CÈ7= œëD8yÑzFÅoÏ,t圙ý¥v™ÚâW}FòõdJz©ü1>¿Ç½9µí §5Ôú¶’ŸÛƵ âŒÏO¦Ô­BûtÌà L¼¯õ…È¡â hÍòB˼UHCRýP]§_£ÈsEáúeäo$.N»l¡`#;ÛŽ– Še!#ÅaeŽE»TÊ6ðBïúºÒÅT¬ÍÆTJ£­¿æj²’qƒpH`9ÙvFŒDü$ÕÀƒ±¬âctAK†Õ|ÇJ‰.‚ìOø’Ô{±Ý—ËSyÛ€1Ay0„¨·û¯'$„"Ä`ÍPªÓ#Ì÷y+x`ö¢×Óé7XöÞÙ,TÒx1”ß3yã ž;°à&¿ÃMWoÉi·ìdåAì‚q³–âó¢_u¡×è|'‘ݵÐx^¿6-¢÷Ô“Ún¿XžnhŽÞûe~wn ®y+rè1Jùë âªç¡òq~û‚(Eâ ïU'½ïåTø §é쫤Ò;¬¶kµÙq4ÆÄ¹LÂõ܉ÊËü~NHM¿g³SJuäüEj>8«åÀ”¤B7„A•»’xùðòlÙ9@pÿr‘û%Ç/û $LŽZ )mû¿+¹ý&oò*RјíëU…œTϾÍ'Ÿœ)>£ØðJ#)r¦X¨„Áyú’l;Àv1ãaUÆfÖw©©¦½ò½¥ Ph°[^BÜу«„µ > ‡[Ö*ƒGAˆzðOS·-Z§è°ñp"Ü¡ðI‚!3 >ô¢—x¬‡L²fûöì„ÛìØ&¢û,]" ÜM«™ Z.É&çj,IRÇ­Ó 3U‚ZG­qîi†àlƒžàŽbIOçjÒ3Øcè)‚ãô|•T,X¯kä„Ýý'çÓ‘pÉDhp *ö&‹{3—÷¤ºD&³šh—r ¥@”$ûû>¯bË÷†œ@ü.Cxc×ÅI¿˜ÑÞ/ÝŒwsJÃn®`ÏSŽOyÌÒj†‡Z•ábŠ«ùëä¸ Úå·E.€¯ó>ðm-ÏVÝ1Ùþî<@”CjzÑL0YxÝ ·†“n™\JSˆB•"}[÷)Ä£õÜ·÷S VMøQeF9PMu¼Ê xï=‹ZÈ ˆ¶3·Id¢°»‘$ÙV÷ÒÏb‰Á?UU"ek&s—©ñ& ÆT;ªŸ®sVø¯ë|„;ï’°ËJ'mÝÜà1¼”îxÿ|zÞÉ(ûô¾§˜¯[~‡£ž¢÷A>jï…Oæ Ir­€9nâ$HÈßôêÐ4pœ€ÄÀüð¤"k1€j0¸;¶çiqù‚RàjáRªí$ç|•Ò|]Æ kpnf cÅ£1V>c!–ÂÇõœíCµœ…X@KÎÎMZ2{—“1©“[Ãõ=ÒfŽæ7œtš"×c™.X~î<°IwDtª%Æ€è³^Ž~ ž6䜴™?±¨}dŽK (…VÞWTÒœ—Õ¾ÈÁh²Å¤:EúÚcÌ9D¦‘ìi²ßLtÓ!pÜ·)<ÁÊOΰµJÁìTRÒäΫ2dÁí2†9#+2”!vI¾„P¸gÖ³ÝC”Ö»iÍk4}Æ•_)èÁªÆ;¤†AAà“uµª‰xRŠoóÆ"(8W$)Hnx¯Ó´HMÓ–×9¨²ð‡0z=GÀ¢[ ‰x–½~—=’—s6i‹’­Š0Wƒž fšÿ˜„î”ÓŽáN¥üq)7ìƒE<ÂI*ÿ¼P’ ¼7EáWÁ„¯8úÙ´óÀÿ‹Æ‹·ršQ‹VÚÉ…YÑN¾‡¦ SevZÔ!×~4µOñ²°zÛ÷Û&°(˜°éزaîÖ‚V„ºÃ@ó-å#€ˆ¬OšUtñ¨"Dì‚3³"D#›ºšÉ?£"Ìä_ùê߸'±íeެXk,+Vsט¢Áþ åM+ ß×qœÅ^ÑDV–.[’é;Ó(yw!aM#Ff]§fj„xš),?Fn<6@mÛpro^¯Vü ±°Æª*=¨­™—#c䆘VŽU2 ÁÀª !eÓŠ£uZý£ŒªdbŒ=~‚WÁ˜º† ;9ꬊtž*Xšéj—Q ä–vê=„eÃOµœ§– âm“Ñò¸÷€eÓ Ø‘{ô$ÿ\VJ3½,KsË6—йeÃ×êàM¬Ë‚C:Æ´ñwÖMÛ²VÔÄ[28Xoü o]}p¸}(Z+;åpD¬Ú.k$Ø sÙz­³SíuÓˆ[—Yhæãä™ ôp’·rÄg3Z™UÙÌ‚;¾J­gÑÀ<¤e'ÿ(kŸ1ÊÌ»†•¡‚}>Ìåb+Ê™.jYà:B_6wNÍĪ›\¾òSOì«|wCQ¡H—ôíÆõ¬¶h8äX(äe£›úÕÁ‚eßIB«üª0“©²Ž",d£l¾cñ¼þ™RŽ‹*¾Dõp¥E𛺄 â„7P@ý"RÀU¹Dý„)¶ùCç^NIòã$‘é;áút˜H“Îcj8Ž„=›ßà£Q`«ùbL=C¢J B##ZpºkÀ´ø‡öC7ˆ`>8Ÿ†,èŒÕ]¦Š›çIîï29…Ü‘*Ç—9¤sqÜâõœš™,Šz¥-e}`ì-KUAÍ­9=s¦;h®¢M_<úøT#>Ñ{èÚu+XMÜç'gƒp3ºFXŸìñ¾÷8‹¶ ùéR^2¡{“ßhÚ\½êq—¼^ŒO%àÑ*,îN¡0ׄ -ks—m:„ƒ¤ÓEÓˆs~ÌÞYL&¦Ë[Ý€®š˜Ý€WÙo'QK[ÓœD•¶saªw,ß Ýa†#\0åŸzHYeH%©Õ \Z—¾’A8­x ©pX¸V–î]W¯‹ùç$ÂòM>¦Ÿ¢^ ^j©3±< —ÇD>œØPÎ/Y9ÕÔÖÍ'ZÕÔ Þ:/6,Á¸|8!úzz|1âœ|a^­æCbã NŽâ â.`àúÛ–’^fi*Q@œq+@áIvʰ4`~›‘ÞÚ0Ѝ1"îÜ|öhHµvJCHJ¥]`õRß+{•çN¼Q\4® FðÄåëª$µ¢°Ë|x´¾á5 mA`¥•ׯ,£!VR !Gk] )äæïœ+yç¡‹â0Lˆ‡òÈ—>Ž˜Ó—òzc¦ðÌÅ|ó},ù¯‡ß*¹y;¦hr´°B@f ÖàÕè€7‰8 èG×üa1™54øëAä#£¯ÿx.ié•+´®}ͺ։ÿÿ5‹W® ¥ "?¨ /6}êéïžÛÿME$³ý ÍçoMݲ…¯H3¾òè¾gÇà/Œ²ºÝH‡ú&Ë£‡)Þ—Aãy™;¯Êá×&È,1 ‹wPL[x¬ RÒ%+Ì€`«CUOî“áp—afÓç„ßç±Í;ZE'2 šÃÚú’³!UØ…;*ãõÚT¥¤/>>»øÙXÐå†Ú‚ŽÈø=DüNÞÇ27·6ýøÑÃõá5nm)7ßrñ+À´yÛVÓtF3içÍÓîgdhó@?XBÛŸx²JÛô(DY#=j¤TF9S4,îòºö¥u„E–¿‘:¨£ÕŸäœ#`N~AgXÁ_Ð9îwsÒL-Ä|!∣̿›c'<ù8^BçogÿÆ©endstream endobj 475 0 obj 4960 endobj 479 0 obj <> stream xœíZKoG¾ïOÈiOh,áN¿DJ¤$Râ圀ƒñ.`Å6°kŒ’(ùí©êî™®žÇ²Æ $Äv¹º¦ê«¯ªº=ónÉ™Xrü—ÿ?9_|ûØ«å«í"Š—by¯[ý±x·ùžÕ—?ὂcÄòèåBd}ïYP.,­,X·<:_XÕ\àdÊ6ïãRja¨Â,•RûçG¿a@–$¹b*`XG+á>*ë ¹Ò2¯Œk6—ÑU̓“¸§Á¸ððC% ó\4?âNxŠvðĨf\tO¸à¸o¾AŸœ°\C¼°Ï1®$<m€Êdeg­mV¨a™1º¹‡J ®€ƒ–BQmêàaT‡ Dë”Ö>d혛Uñi³N¥Rì¨6vxàfUöQWIŒëÏG‹G \ðË À%rh à.ÏÚ9ÍøVr¶x2I8)ÂI%­eœQ̸̻‡‘eÛàÒkÈ×U’Z/Sƃ©(l˜õ®ËømÀ+æ¤l>”½Ž ¡¥­0ßDjDŽ̛–Ö;“†nÞ im8²‰(¯v?Ær%Ó•ÉER${•l[°H4XN‚T´¶£2µÕ!ÈÉÐÎcv}ðF‹)âÞ\¦«ä Š_DêÀ/ D!0x®¹¡O™êå^J‰lSõ°ËkÎv\Ælk)€ÁwŠ”,ÏÊr]–ÛÞ2Z㋤i}x+ H( Ý0.HT'C°cäGBº“@,ÀÆ£ÈEeµm‹UÜ2 Ú*} †(%SçK¦·Û èzöòPhH‘)’–{¡m+†C?ÒC»Éåãqñ%!m`ìuRö‰ DqµÃ¹9Eq&¶ˆ?gM°¯Œ5´‚£-Uó¬!o)ç×É k©Äò¶<{” ÂzæLGÐ…S›²\‚®GÖ=Ý´ì³=Y(½ Æí˜R¬,_露óL+#Û0ž¼îtht}^W Í§¾üø×Òï…V?í÷Y‚ýÞheðdeA«H4HTÔ‚&Ñ*’¢Õî40½ÏkëÚD­rÌ™<Üø±ÃMLa¢É@Û4iNÒ–Ɔ4û`ÍO31¯·i­¸‹ü6B13öQÙ•‘¯‰|3!§úÉú’è\ù"_õñ<Ñ¥´Ëe‹vA¶ÊHF¶ÃßKÉ4Í¥ÁÓàà§gúôw¸Ü9C‚¨¹g,PS¾ÄMæf|æÍ,ŒO*y|5‘Ä“‰Ä½™ Éw×LúÈ;˜X{)SÂÞ-ëwøU ›+ŒRL;ŠrÞG+¼hõ­W¶4(ÂóÚº±ód Û“N{K€yO€yAägD~Jä'D~§ÈwÙ…UÁ‘ÃêB…³ ÷ 1Oð0]Èö™6©(Oó;ÿ" §š´ÁºC±B_ôˆ&8^/)Ö¸ÏÎD48z©/ jÊjÚŸ.È…”¶0d8%BçO+îÔ¯ˆüV‘΀o‰˜õÛYε#ÎD•‹zèVÎä|gQcÞGÚeÇ©Š‹¶®r ¤a¶ªrÜ'ç©r¸ç±À¿RÞÍ[ʘ34SÔ.|匤‰ªë`šþ…ØUAȺñjì•´ñÆ}nžÆ«½Á3áWöeÿ<쿽Oã/œ®jÁõ¿…;–£?îS7lüC¼À|·Wnëë+²è ‰f£nžDu£éYà©`U½öa$Þ)ˆ¸ÏÏÔ> ÜB­ÞéN'úeÖ{"?&ò³–e®ù—¨<˜0¹šh› ùH{Š˜"ýH{è·í©Qk¿TvIª’ë{õ œc¾ªܧë{cѪ¬ë-$Þ.+Zà¾0-¤ƒÁ6B Z[§uNÚ¡1¢ÅBïŸtÚ\LPalbLÕ÷à¶ëú$ðõý DèÒR¥3ôˆÀñmOEÜgf:C$RæÆH“tÑG Û êÿšÈ×à¶j„d!ØOÉQ'¿[€Þn[·©+C¸‚hEÁÍûæWÏœ{MqVVÓz繪ֲ:$Q‚NµËã¡õÈaêä&eNÝ<%âç(Öªª›âéÄiä²”eO"Èí'jú“t71JÊûT©ˆáB|{^SÅÈyˆá5Sʶïm÷Î.7Czgéaz£¸K¯¾Vz¹d÷z±€_%-ƒß%ÄÂ)ÒÐÚUnT|¦ÚµÝÏÿ²t+O/mǨ‘?”¸F©1˜vƒÊÌ@R¿Ç¥aÒÙš'[wÞC€mZ󢙑cÞÀûõ„þ>3|Ø~¬óûŸÝ Q; !jG^„™W÷Ù™:˜ÒíÝŸþŸ&Œòç¬túŠo=Ìé`r]çú>>ö€oB~öäàФ‚©C?(ñÿŸdc*¦Ù^›ÄoÆlÕ&qŸ˜çÍ$øãÜ&ÿÉ9Å÷Â{½(¾U1‰^e€œƒh¸ÏÉê*T´*ëY«}-ZšyI^Ë·Ôj?Ú*¨´û Ž޶˾V²ëó­ÞÇVÙªtø…†Z‚iíÛ‹“)ß\ˆê;‹ˆÜ£Å6ÇBendstream endobj 480 0 obj 1991 endobj 485 0 obj <> stream xœÍYKs·¾oåGÌq6ÉBh<yò°“8ªT¬lURåÊA%Ñ1EÒ\)¶þ}¾fv€Y #Ù:¤tÐlôûñ5øí  ZþMÿ¿x³{òŒíðú´ËÇ >}³ûvGÓz"~{”n0NEŽ4_íh¢gVÉÆ4ø`”1øÕ›ÝWãïö É‘¯÷ø´”ØŽÏåX[òÄn¼/ç.ÑøŸÚëM_æ«ÆùƇýÁ† B´£ËWÙEíùŸÇ/vT Ñ Ç§»ãO¿ÿ&Œ' v¼«HÇ7EdLFá-ü¤&bŠLã÷ù®¡@®Õp¾ë ¨Šº:%oòy0ÚÓ¢/i7ž&}uœ•ð!á‡Wåœm?ÏÂ\0–ǯ «mHãíâ¦æ¼çȘ¤˜Í>¨Lêj(mLªqÛÆIŽÉÆ`Dà“gÉD*yŸs6yQ@˜;ç(xxR+°Ö>JÁÅMšá˜Øë3ÏŸ/³È¤!*ݰ²ÁÕ·åÔ;Xƒ%r&4_Tßo‹È¨mÃånQêvá"¦}vÜ}9åô³?L¯7k¡õÃ\ ÄY?8í”Õ±”‚]DªEw>= ÿ˜RÜŸ"‚Å­üŸÇE¸ó»½‰ ±Ì)!‡”ÌxUü`œ‹7O/Ú˜ôÜù¯ý~j®^ ÷¨b¤&×E’vÚŸ`ßU œª¬y½|ÎÔ‘ë¾*§Á“”­HLaumÑévm¦'í¡TmY%üfòš7ãOª›·• •j+_Uœqüœ÷¨GOÍq©GNì­ô5D!ÕÌÕþà~Š~ü“Tf°N®´’l:Ïr ؆ãòàmU„S$»6íËPTíöT|¤µ…]XÂ…¬&á2k#YÒHA7 nêOвâÆÓuUëw™›C‡ÿ®p3Èžë*:… €´"øÏÞ;åAÑéHXñ®Šô©(dÿÉ€¹‚4Š—ÉpÙù.“aJÒ~2ÌáòvË´Ùëš^vÁR|5ó‰Khïö’VV aƒN“ó©“&ùuæÎqŸ,2¿^J¡±ø¾ògñPp!þ˜ré(s.’Ùœ¶JÖ±ž8ïAaÚkÂ,Q–94 °´ù23›$É{iÖÞâJ°óÌt$pöå¢cŠa¤ýHkh6~^àÂx*s:hLìæøm)W뜙QŽôE>pÅMM]ôì‹GaÇút’²p–<´3¾¡ÇžRø,“µµÉ3*jž3ç4ÒÌÜCä•àxôª)*ÔLËâQ'­ÀýÁ ßið?8:]ʈ‘¹ ÐÃÈ'ñìêØYä¸8àN!ÚGA¬&˜6ûÒ[3>ͧdÌŒc3•dàd†FãêCö·E|gš“.à΋ɵå ÁNë×ä*ÓL…T¨á2C¤çϱ )‡‰¢ö¸’)1$ï¸â,\é #ÿ¾gBS Ó(Ó*¸kÚÖ2Hµ« |ÖCyu…áZzELÜ ‰M?²¿-D=ëD. I™`·ÀoO…›q:ÅfUxe‹Ô6TÔ•FÏW‘”ç›8b¢ì.kÃ!&Õ³‰¦ k•CŠMåþûÂÀ…±ãÿÅ·e \š§GeöRçQºû¤CÛÝ9‹ ‘_§‘@fÓˆï$BNÖ:YZÀ(<°×™üËŒæy_]|<™ürº¥Ð‚‹Júe*&äÛU¦ŠÖ»56#õìCŸ.¡„¡´ÎvÚfýìÜ4¶ñ»¾…×…ƒ‡ÖËd@žÉgD—G˜yìÿ¦&(! ,˦^M|Ñúl}-'5P$²¥‡~ž¯¼,šqmFå ’œ¯69_IÇæl©ƒCsžÖàjB'l60Ë£=Ó«„‰ö¢ÏÊžÓi_&†LU G`k'##Áíìì ÀAΗ’ ›ôz½œ>t n×´ùóåò)%Pp"#™rÚaÞÀéŒ0Z7eü ×8- Aˆ~#hÆå׋1ζ*ì¢yßHyßäC·ãµ³A‹üþ?~’0Z†9~•dNòcoËé'|“õÇ“måË›„“÷0ûè#Ñªï» ¡JØ ’×%ROm)2vÞÁySbÌœ§û~¯£¹ªi`^û)©*#ÿ:aë`ÜLÎCT)jÊäH4 â„–€>OzJÑl üA.õ²>©häý¯¹ÓOж æd¶üH“{Œ4]ì\ ZÓ—›t^Úê°nmd“ÁÍ—EpÞÓÐq@ø˜Q5·~;­Õ­¦mµ¶T!tè3¢mXø]$ÿ%KÃ>ÐYµŸ_gÀÇžSêÆœàLJiÀ¾ã¬¯Â‡Õ@›8ëê;ˆ ëe•úYY&{ßÚCÒ§™üßûƒgE¨íW7[AĆU°±åÃ]$®±Tûé€ê°ˆV6¥Ñw}¹öì1Í&qW ªÃKZ„Ä+’—ïÖeã/ñéHÂ#¶jy.6}û&p¤Ô±oÔ`â±D1õÓ‚UˆÅŽfa —ûÏK}cÉÚprÎÄUyWŠ_jÛÈŒ²Â½Íõüw ¶à7„#§’ëÈì ²ø¥M²J×—Þçá‹Ùk·¬³üæÎÿ°HvNˆZ úÅê餭.bÂÁ º7Rå=¡óΛ'ñF¿Îã'Yĸ}-ºÃ1cJ»¹Ânµ²z›m pÛQüø 9KEi½qtjŸn…:aK«_½«Ô@÷Á’²Cï»Ñ4$YuFÇë&¹ÊŽIlWÕðMö6„î£ï¡c[-nƒýŒØ.÷¯æ}q½€½/W=¸> stream xœÝ[YoÇ~_þyÚ§`6ÑNú>èø!6$±lăˆƒ€"%š1™K] œßž¯ºç¨žcwI‘†›Íêꮪ¯®îÑKQË¥ ÿšŸÇ‹ß~ôòt³HÓK¹ü¢}¿øa!›_DC¾üôV˜¥”u´V._.dC/µ®½óKbñóðbñ·êÙjͼqBWïWjée¨ž°é³ÕZ;W«`ª?Ó´’ÁŠXm@-‚RÆêÍ +…Õ¦º&z_cå—‰‹ò³G W!Fp¹¤!æ´«^÷CFpŽ¡¶R™ð÷Ã?’<ŽË£„®u$©O Á—Dl¢ÄB¹:hë«ë›tR#¢W$NgT&bóµV¶BV¿§•ØÅxì˜HÀƧãI½Õ/éL^:a .Ö‘T Ûo«•² ±uÊT'DájkMõQ@*áI7Ä9 )5g¨]¡Z'r áms(cB,yw ¯_ä}\°Yö¤¨Vv ÙOúuü¨LFRëãÃÅ× („åÛ°áë„ ã ÜåÅÂ*¥ki»™óųY¼E»oV×Á7xKV6VÀFÏ“ÔRåªMR‡4^dÑØ hŒÑ3EÞd@w/“¾°‡¬®zÚkÆî"É =k]=ZµøÍÈ‹£YÉåZð1#ì«tP(±]dÃÒ×0†L‹b­áz¹–µR¨¼èû´«w¶Áp©£P­tÄ—|’Œ,p0¹‘TµQ¶ø‰?¥Eg$ˆ"•$r|"9Dhå7I/ر“[¾p騒ÿsµ¶,Uõ»ÑÊr#)jãm·Ñ'·Ûè2‘ #M#ºÒ’ëk  j#ÜrmjáàyÙ_“ÆDP1Lî“hxƒÚZ V}Œ¡‘dY’TÔÖX5-]¬%âbœ®`b¥wANC*À¯ œÀ¨æ G9¼Jkf”è*¿4uL§Ÿ”¯CT¤†§‹Ã_B%)Îãof— 9@D“y¿K±\cO?s g…åÆÈ+6BÁe],Ê9Æ¥ç$×A 6Ú!‘©i‰lt0ðôÒÿÖÊÈÚB¢µMÒ¢Ã>ÞÇ¢SÂ×Hh@o› S’ƒ>t³®0å…-~”ÃS ÖÈ‚þ¬“ Ó7éõ’½Šý7«iô‰@8kq»î\ Ü!„8;€õÅnÜ ’þæ¡ÎJü¥9Íd¼~‘5¬à•\«< Ó<§Qm„ìiSöí²ù‹2S £*æ'2D6Sûågc‚“l`PĶ+§vDg[J•1Z4ºîM}:‡³ž„³+­µQ¨œV¤© ð“7c5ÆË\ƒèèy²u+P?–Xe /š¢FÎF–ì1^ÄØV@…ݼå:q’_‹H*†£ÖÖ›Het,ŽÊö9oj])«7+kjH®Ê¿wNôzÆ17™„á »Ân¯CïAòªLÕ…“Ó)‚óÓñT”õ±·ƒÞ»Ü9ã¦ó¦GM#P<—¥a šhX&3Ò&øôeã°ùÜ´_UÓ© ±‡«•M?Z WúÛZjrRÔTË]»ÛÓ²M˜):«†åî° •jbÉÎXYÖè=@nQÖI¯çZdÀYÛ‰’|³T4ña¨$:‘]ªÛT—qšP1‹S(â¶6ugˆkW¦‘cµmðš†çƒj¬ ŽÇ3ñîcÓ•A¨Þ® ´w鯥öRqÄî2>Ü¡™:Ò´RÐȠРy ?e’ Yõ9þˆøUæ\'åL=å{E"ãj4AøîâQÓ±çîabï[e{XD†p§tOõîö)+ÙMmÏ )¶69aPão2ôOÃÂÓ³Õ'ݿͼ‘0ݽÈ4ÚoI{ûTÂ(ékF6—0¶éŒöïIҕɶ–¤óÂÔ’ø½Z‡N@xs›–ĄԒPc81û>Ä›hwõ! µjŒe#2{‡d4Õ€¥°Å`ëH²‚Ñ~l¯µ†ðÛ0Ým2goÍ ¥KfÕã01†ìÔÜ)êÕÚ[‰>ÅUY4¼¶‰|8*lßG¥ÐèßЯΤ ±W·¢Kò®QBþÍ ('e8=òLKlüš‰·i´­šK"TŸ¦˜¬E´e¬þפãÂèº HkTrÂë0_ßs=a9bÜ ²Ú¼-b']~ƒtäXƒtÊã:êÑŠt0§³6™šjÞÔÒlœë:.gâÒ¦!Ì„‚e¹)3³ ÇyÖ^±íY{ð>/µ1%VŒõbáŒb·4öĆú¬AƹµG\bÓç½þÞ'/.3A¯ÓÌÿo*aK[ÖªËml“qlé}º›Ë-i÷„ìæýª{lØÌA]‚ÏÔ…뀸äÃþ½5þÿ/½€’òƒzMÍÞO}ÄŸo/pGÍ}ÔÞ“'„òÍòÌ [-j+]˜ÜÊwyÁàã]7Ʊ6´kÿ”0[7¤+ «öªÒ«¢2ÅsØ|Ý®LT|кa:@ 0nnïïÝõÀ(åÓöšÞQ,×dí›k|þ¨}• 0••f ¥ß›šJz¼FOH£| Eå ªûk¢SÁ‡|‰†šŸf?Ë" ¥|ÁõbÕ=·"ÇiÊeÑ´N+ɼóK9{næ“PÖÄËPê¥w#›^$D”!:*×8z“‡&£Ûþ„~ʶgâL¿ÂsâäFí“2#Noú³Ó:t÷ÏôåY!Þ9WÎψ;P,•ó±}f˜}—ABvu„*S¦jÞû™÷ä«__/ʹ£î?vQÌœ¤$6ÁC–¥%+g&rn®bfŸpH­Ý¨œBë&Tµ£šJ޾÷öE»]œ-TOò±¬.”¹iÔíl®Õèòå?ÍÓŒŒ¡?çCm榡c(ËRØë›è¯d\Ò+Ê™ A}Jˆž%ø{¥É§»áQ?¼ì‡'£?’{Œ žôÃÇÝp2l©ô$Öž§ÎQðŒZ¯EmÓÈ—]:Uupä-]úH}Ù]:ÐE ù‹qnö0{¥ÚGùŽ›òö.}NbñåÛEþþã›Ï»ÏJTŒîÎ>+igè³PÅšˆÂoQ7%Ñ Öa¬Q?ÓSµ ƒ„Z4ç„UÊ'šþCªÙϧÂôç,ÈÙ¼Š•¿f9N*5(¦Bþ¼¦)ÃØü†Ícl%ä!¬†äˆ‘œ²ùë1Ë4Ζ4¨ó|Kß|jÔŸ0šÇ´-Z9 ¨•mBH¦~ͨŸ³y.ÔUÓKÏØô c3qà4> •è¯ghfùwOÒÁ¯Ã]‡~$´àpž\˜¡…Võah¡‚Äé%²Êïæã§W̶¯™ˆÏg`tÆæÙüA?¿EöN¬B\­¨áÚ&{³ê^dGCI—e¿#ÞÓüå ý 6À¤£ÏíQûËŠ„rD @Õýâ- ít5T1W(šÛZE¦PZôý(Ô¨Úµ_n¾aÂs×¼fó7cà<»²BVÿ›~:ãʧã­F®#šü<e7'B¸»îÕá­[ðñ^¦³z–X€LF˜1rÑ*s?QVÆH9þ¯BãÕ {žßãI¢¹šAC™?Í,˜Ø`TPÍmð+zR¦·µ²Šº=|zd€2Ed‘h’kÃ"‹ŒX¿ŸÈ"ƒ©CøÙD–ãò‹Èð2ŠWŸÜÃ9ܞϤ5Û³ñ|¢ç|^ŽÏ0J}Çã³qþ[!Ì÷¥Äî—ý0ÖÁ§G]ŸRu±`!*­²÷¢¼¨Ö†±‰¬ÐÆœ„«îµeŒnÇzÞ^oô*,4oK_¶¨Á-÷eZ%ïÉ—­¥¯.LÏŸÏ€ø«q˜ÆŸ±ñ£?˜IÅïr{gbÁ±5Ë(lŒ 2ué¾wˆÈ »ÊÒ[4 ɽ…V¹{òú4Ý<œ·ütVä%æ³N·Ã‘… jÝÎp…½]é£ m‚ã>J«Ôúh¾>’ôÚý‘k¿ãw'+R%8e¤/ÕØñi•/[šž¨àí;E¤{;PYTìÞ®ITÍ?ëUÒ­À²–|]3sûF¦,å2À;½ðæl;iºa§·¯ÿÖÐàendstream endobj 493 0 obj 3271 endobj 497 0 obj <> stream xœÍ[YsÇ ~ߟ§­< -rÔ÷a[©ŠÙU¶ì*ÛÌSœ¸(RÔa^Ú¥,ÑùóA÷ Lw/‡äH•òƒG ú>|zfß®YË×,ü×ÿÿø|õøg'×/·«(^óõ÷ãÓï«·+Þÿƒõêë¯Ãµæ¼õZóõáéŠ÷úε^Z¿6Î·ÞØõáùê_Í/{°˜ÕF¨æf¥Â5ßtbe˜l^ïHcZáTóÏ Üiæ›-h3gç¾yäLs¦¥j6½¾õÍqa ˆ@_8çl.Â#ȤiÞÅG¡¸Æ gð(5Êýûð»p ƒ$˜l¥Ç:<#ü”•ÌÀ´NjÛl®ãVóV„ÀöL®<,~ …nãÍßÃHXEYX1ªÀ46n[o™kþöd¹a Î ãlˤ€eÂÜL¥{ekŒiN‚†iµVÍ÷AC*Τã„™=ã\bm¼Áƒ¨‡àæ”r¾×޾9I{Ú¼èNà¥ìÎ 5œÜœ¤qx«èŒÁ¬OW?­8`Á­ß¯ÀîmeÀ¸ëó•²Vµ`øAr¶úå¾€Ó²u¶Üa°†çàfѼJ8xÑÆhß|¡™W\Ægf¥=j"T:ì98mgF樀h ¥êç>ŽeŠéAÛ2Æ Àb4]¶bÜD|Ú‹%§kv‡ÐʺñV5Ïb,'dkïaS/»ùŒïi ÐÀʯ±Ÿ‘rÜ’éÓ8Îjb‡†åy‚‘£ûsi8™îÏkìX© ˜<>[~Ö¹RXÁÁ!¯â^9W"Î.@ÓÁã3„ñ¸o¥çËøh˜lBY60D§qæ{™ÄÁ =ýPe!!´#±v–”±ø<² Mˆk]4C˜/lé2­rÚI%ðZïÿy·é4´Ók¤R9.ßtëú¼,kœ uð 6ý¾…ÁË÷Öá^7<Í÷øh™÷Í~§ €-Äm ¹‹"{žôkÀže} H ¶ %¹n¡ßö˜1ªßºQÆ®ÒÖ@,^uëEbŒ® `Yr­wZñ‚o½¡ÎÀȦa{Ãþ¸jPf·MjÖˆP`¸.T÷ëX…Q‘%™“TÇNYŽâ£nˆÐ¢ÂE’"ÝIá›$}š¤m’§Ç«¤p5JKqne ÆõÃÞÛ½%m >äc>œ„|ÌH"Ðd†£cø¢XD—{P¥6ºyŸæÍm!ö²K¿Á‡ÇÈoÀÐ!íY…¤ý¢KÅ(Í·í¤–s‚êßÃŽ”zŸ8N‡‡Cƒ°Œ À«ëž&¯$¿ŽùYOCzšçP€|Ë,dgi™hu’ìÊÎÓõûô S@efRS]vFÈúCLƒŸ90f›¤ÇS8M‹|ÂRT´c¬îööó·cE¢!#¤Šd„3;Ï[Å@f´\Ö(qP&rµ`¤€4‰´F ÒGáZãñ\aœQ+âÕjÈ•ª!Î ˆƒÙ!” æê«¡X'B´õ©ò0}äGH~ä/‘ü ÉûþÁµªCy/þµ©èo‘¼4 ± )í£g†t~Ý£J¬ ‡¥¢p‹´¯‘œìçKe[(-¥üÝ×*+൵†D­/ÒrüŽÑDPØ£iD˜rP\iŒ¹~Ü"˜Ó²™ì0‡±uA}¯!ÛiÆûº7‡å …Ù(ß„¡²eÐ<ég HLµpµæ1øYãO~Œž/‘þÝØ€ùKº¯Qý¤2=Ú;Ÿ‘.ÉÏ»V pMäKNax FFïOQC0"¥o-†H&Ô2‘Ò€Ò@ò܇ޡ\õ%X'¾Ìmå7¶ºÌl8cxÞaŸáäÄ`ýÉGk@‰ÚùÄ` …€&Öô!´ƒ>‡ú£Âà$äGHþ¼ÎìÅeçÙp4µêcL³Öa†aRÑ4:(‘¹%uÔNŠ;§Ñ ²æ­~g o+Åèq…¤1yŸ †2÷ êfu­xÅ>­<¿Fúǹï2+ˆ+%è@A‡û;Ç4è H¨O5¡Ô²…è \7¹;ÑÁÔ?¶NûÉ=µÀG* ¤ÑLضƒ™FÓñPþc[†af¡PÐûÉÝ¡T«”plLúÀ!±}ÜðÁ•0.¦¶•p¸;ÔÓ™ Øʆ€={ Ø­ W0»k…ïÁΑÙö“ƒ>LÅ`ÃI9°Ÿ*ÀB‰V³ ;–ÚˆB`îÍÎ3#-Yé¡ÙR»1ûu…æß!ùÅì¼£ŠÊ–N9¤{|s€9|Vq• 5501§…JÙdÎ8N,cMëaÊ2›Öü¶Rÿˆä˜,±õ?σ.kW?ô4J–š®×¹¿å^Œ:¸¦ÞÑ]iÎ_^=§㌛ÊÎ ·¨Y¢í.N›üˆ¸'ÁwoÙ¤Xg8Š"äŠã¯ƒ`yÇÙÝqͺãLð%°ãº )#³ Q†Qð7ÿÉï¯~CÏ…¾> œò¬¶ysúÀÛsÛ'-tº[ 11qd1ä6êÄŒ` ²Z„Ò6!Æ-ó"FÂz`óO…˜HFwžï÷Íÿ#–Ê[r|_U}•RÂÃî:,yš „¾$‘I$ sšÜN&-2¹›@‹‡¿h…qËÔÜR„öuwƽývò#^!ðèr² ÓãWzûÔÔÞÑMú©áL¥‡Ú‡Ñ;Ä«´,— JuEà†ù… ŸÎñÜjø â¡`ЋŠÝ/ÿp'ð&§÷Ý/ŸÒîÑ¡Õô#¡¡hdØZqœYæˆF†Oƒwr2þ£ÌÉ_U¸ôÏ `cnҥ㜒­Ð-dEXáÆeJí“i†²î=ãˬ~LufÜÛÜ7ÉdžA…~‚€= ã ]ùö– ±çÂßVܼMÖÁï—ÞUJClØë|ÊŒŠ›Âg°Hè+•žýÞ¿Ö1ìøê&/H—€±ˆ+ô?+\QkõpÖýüSÎÀ“k‰biQ¸õÈÚ¬s÷î3Af 5,nBÆqC³÷¨EfçFc<–“çtv»HÃqôîÜö¬Lü­×UºôÄâ?v%´N½p¥š¾z¸÷]þ„S1¹eo¼ œšÑXáu`Z*~Aø#’¾I¼Xøsˆ—Ò«¤ÌDµ–Î#­»{«½Ä›õê)!Ž ÕRŒs³ãaœX¦æâ0'Õ.X>­dZü÷UÂÙÃóÒ s9…Í„üW㵡¾Ì©@'Ÿód\€¥1hq QÀ4ǹehŒ[@¬ÙMc7I|”*ŽÚw×c¹í4ÍqVqxÁ®Y‹ºR·"*oÑ4ï*CïAV£Î¬WPÉiÄÙnºP‡™ Ž“ 1‰è*y–k%!VÌ¡~ÈîApIj€¡¹BW(…z&+j·¡äûwg¸nyƒ ½YÞíLü#'¦døùöFç 4€0æ^½0¶ú63Žº›­·}PjŒO]~‚˜*õˈ°g4½c{Ì‘¥zÌ1…²jW›v“’JíF/EÑ••v€t„­ŸP†_áÊãÔB”!CœôÕ–²ë¼OòâÁþó¿7Húiã/0¾H}“HåK¤ý$9e~u—csz[ÑÇs^U@z­é¥¦f>‚ “ë#¤òh2v8úg!fÄÁšÐ‡6KZá>è´&|+d@N­™Ý«cz›W‡Y‘Y¸ªÉZ¨‹|Ùù—ÊÉ<Ȭ£y†ßê'3 ¿‘ã,\iqô¹A²ëwô§yƒ1… ¿É”k˜Z9Û‡ŸN¿oLã9~Zý¡Tz3endstream endobj 498 0 obj 3273 endobj 502 0 obj <> stream xœÍ[K·¾ÏOÈiàSO¬iñý€¤C8Fb[€¥ r}Xi–¼»’ö!iä¿§ŠdwWu7[³Þè°Q,Öã«Ùœ÷kÑʵÀåï«óÕÃgA¯O¯Viz-×ßõ£_WïW²üGòõ_p…YKÙFkåúàd% ½Ôºõί]ˆm„¿ç«ÍóÍ6óÆ ÝÜn`¨¥—¡ù;™~½ÙjçZLó/œV2X›+ Á)csŒóÂJaµi.‘Þ·°ò‡ÄEy³‡@®BŒÀå‡0§]s3 Á µ•Ê„Ÿþ‰ú8ªºÕµ:8 ~@b•@ʵA[ß\^'Iˆ^¡ Q!˜›oµ²m²ù ®„]Œ‡ °ñI<飡ùÊä¥Ô…u¨•‚m·ÕJÙBl2ÍR¸ÖZÓ|‡ •ðhä…”š²ÎjBh¶‰\ƒò¶eLˆœw¿ðò8ïã‚ͺ'CuºkÐýhXGE%:¢Y¿9Xý¸’…°þ¸lø6aÃ80îú|e•Ò­´ýÌÙêùÊ€8ÃéÙ·¸*¶°ÈD›uþDÖ ¸­¢5Ì¢ÕÃn.®Õm𭯳]•°ÙÛŒi% ÛviöIKFdþÑ0î ÑëzKÀ,QªŸ!ZuŠj+Úhˆæ¸Ê„ýhVYó¢ù[¢Ëe¯ùO ™~MTŸ3”—UKIn)$ŠQ?&ÔO´HÞ’·„„.ÉÒ¯}[¡§<ßMצ13ÂO0©áQ‘Sqˆ|Mx~=¨’Wfòÿì„– ? 8 Gµ†Æ Ä.d”û¡%@xzØOå' ZU¤iˆæ¿Í;ÉßãÄ„HLŸæñ·`´ÞÄŒ½A: § k£á*{ÏëŒè°Zg££}Œv‹<Pô%‚ƒæw„f.¤ñ–Œ%]°¹svì½ÂœiÞm”¾µï¸Jîï6:h?Â}ñ~LHÞ’2Xñ M²o¹¡&CÙ5ÍS2ý¦æ"89óLàsTÙö²"æ«™œ8ÁÛƒšp›] 0x—B²èµÞCA¢7­rû‰^dëÌrôŽü›Üîä.‘yFæow(IçÅq2tå´+­Ý¦˜w‹éÁWÌÅŽÇ´S¡u$¦Ó*µ§˜†cƒŒË1ýœ¨uCô}Yéj{=åCé‡Þ¤îžLÂ:왬4ÉP»d%ÖîÕ"±­ †úýe…†mpVÑ캶‹›0­7zÚºdLî~|™fÏY¦âлšî ï§­Îp{Pr(G†\Çõ@€‹‹ôýRŒv`AØÆŠØYR /ó¸eåȲ=WÖ-Öÿ³[Ù—¹D³Ôa"œ5MiÑ=SG¹83Ñ´Ñ—Ôñß!uÔEÄáJ0Ш-é|Ó"“Õêu4Œ³áº;èª Ñ=/ŠœQOÄYs‰ hyÎøÚ{ÖÉ΄ŽV*Vê$DÕü›L€¾ªšf¥<vÞº´Z‰½àg3øeéÆŒaBÞÖ+õ,Ëó]êgq s§å0ÐÐùX XÒŠ=…€†“T0•£qöß™^8IuÝ 9¦Ô ÍA îÞ¹,~©¶+ ¦ie“í\NÙOD Õø¬¢ Ýv&—¦ô»£$XJ:à€§[I€„‹Üž‚³›^NÏwÒg=wÇ#ù¤OÏùç´¶ë¡Oß!ÏT.î<Õ9¹ÎñðÇÑO‹öò"´*–J\òfðTŠah¼Ûçµ×l?Bq?ÓÁN@Á.¸îÜþÞ¹I\ÁÈ ‚ŒEÜ…‹ü~KG8ߘX¯ˆ»ÞNuOóäàø˜Ðq_‘ù€»ûUeéãúÒÏÒÏœ€Æ×S V;9¨·=ó˜gñ¤=4iÎ *‹îåè²<ðÔÚxaîÐDÒŒt`+×çLoYï71Ö…ªûT¯½ € ò©¾›ÙMýh—‰h…§™¢þ?ðA³&½`Øjk!rÊID/´)YTJ£¤tòF$QC&dÏ >mH9ÅgÐm—L"Bº;Ia„M¯A ?|ú`]+”šÛ=Qç-•ï>šätûÓaÏËÌÅĨ wJh±Ù¯<ɳŽ'éɆ³Zvü’T5~GDÚ·L}ÔMGÂÕ$t- ŽÆpΔø¶Èº_#ÇÞì¬\^À <}XBJxá—å‚@_* Èܤ޼q¾b¨‹ †ŒÖ01<Ú9Võ‚Zì­ptàr{P·_WŒMÌ€[o»½·PÛÁ‹haìK­-7燅f@[M h¼! ¯ˆH,A¨O‹¢fx݇]êWDêÊöÌ#=—ü¾ ‚žåH0BøÎW2Ã(¼+ä6¬=œ°a;$‡là4[HœQ •Wýšè-o¸xº‰­v[Â…Ñ»YpŒá ¤¡j2vÊAFuÌ9EÁtw€jzÝÓž³ºÃ)KHëFºãÎû…òsºCö6HÊ–äö§¨ùqxvF5& ½Âø‡¼%‘ %dãfí§šosív:Sä Jû·G&áŒÙ55p-ßd”ë™( éJBLñª´B=J¼b„z™¸ 3†ÏÇÐ\Ñ|IÆW•0(ÓNÀ¾4šèüg£¦ô›…;¦È Z8â7ß'¸äW‡•Œ0²*âA‘èPí]®qo£ˆLgt˜h%T¯+^nc'g«t/‹Á]Tq#áMxÐZ›ó¦“Pó¥teµˆÖ€¬£s¬H.×îÅZ{U„µXjsŠmP}:É`@àûUñÞ‚¥øä 9˜*¼±pé$¬Z™šÍçñq›ùE‹5¦UWÕ$CèürBðrÜ* ™ÁjaX—1q6Á¥Á¾Áo\«œìšÖeÄ2mvúõ,À«PåØ2Ÿ-¹Éø{í‘£7èç﹄`‰o±û 5ê ³Ó̵Æ¥þ ,-´ãéâº, ’ ÚI—«˜‚Ã1¾WÎ`Ûv‚pd§GäÁƒOi]PsePŠˆB§³[ÛC©<7kØdWiçnéÖj|^ž˜dÁNkp9@ßÈùiµ.Ô‘ÍÁ/麊*cÀ9|EÖYi,^0*õ‰Qv×½/¥WasÜü†C|Á]žHo”ÐO[œÆÀ!üÙÀú0ç ç#„ÍÂæp]«3 i¸»²2z oj=4ªß$ÞR8éJïž–•-$ À8P@ç˧/±¯“ &¸Yiˆ4iÁä߯þü¢9˜t%©Ò¢É¤ÂHM&+—¤žLÝ̧¬ßƈ/ÉŽéùd¿Ô–,avëäRq.…ÑCCJ ’ðøf™m˜žv.å§¹¯„&73”©…zÁÀ[î °â<û¶ .Oïx*Wé€üò$\ ªé~È®'vý½Èü¦`J¬Ò|ÓŸ³žÆLÎù€£õbv•øQI±ê0m°&šJFŽEË gþ‰Ê´:¥ßXœ}xGú~Ó·Ì7„˜´Ï³=9Õ“§œ>BÈ(Q­õã‚“¢üð¥0 {]03RÎc;u_x—s³Õ%7W­JP<tE‚hø‘·Öˆ… ÛåzÚ{ȹµ®Ò,êù¸Æ³NÀÇïf±Ü ¥h §Ûkô4–!)Â^ûÐÈùIã³ÚíóÆ)à5ßâ bÐ(©ùP.áªíq€£bwÐzæâ$aû¦h¢÷üé)wÔEÞwÔn#óï½"4Eô‚‘@‰:­t¡¬îr“€’HÇNRøƒ)¿˜ “DšõÌ5ì\=È,MdR·óð&ÓFMÔø–ÇDü¶Þjì J•"vøØÌ}Gt&Œïz–ï; ÌŽozèmǬpK~ã7¹‚â;¤\ì[b<+¢êòêF }ÃìF*5eñwntG5°A{nÖºªå6 ÒS¹§L]œ. ´ã1Pà"—H€F6êÙ=4ê+ m»¡„f(S`ØôV%ê¨ ªQ"è~ñAÁÑ Ü}ðf* ´âÐÅú5¡|Q.J˜š6\ãß5BäE°"ùXÒÍàÇ’;öEJµvm/s_d‡à¦ÍØ«ÿ5U<šendstream endobj 503 0 obj 3329 endobj 508 0 obj <> stream xœíZKoǾ/ô rÚS0 ¼£~?$äà(¶XbŠ¹Ä zIJLÈ%Å%iJAòÛóõczªç±"E:‚@5k««ë]ÕSý~ÉZ¾dá_þ}¾x¾ïäòívÁK¾ü¶¬þ¾x¿àù–Ñ—¿9;Ô’óÖkÍ—' žñk½´~iœo½±ËƒóÅÍ›½³ÚÕ|ØÃR !\óu+Ãdsº·’ƴ©æ,¸ÓÌ7[`3gç¾9p¦9ÓR5Wßúæ»HFXð!ð…sÞÈf–€IÓÜÄ¥P\S„3,¥æB¹¿ü.d¨@‚ÉVú ÖÁDø. +/˜ aZ'µm®®#«Šy+‚`O¸ò8|%…nãÍ—a'NQ'F±‘=n½e®ùEàÉrÃäÅ>Û2)pL ­¡*‘­1¦9 ¦ÕZ5ß ©8“Ê ”=ã\RlÊà*¢CÞ1¥”ó;Úæ¨çéê8Ià¥L²GEu²ãÀ«£~e•ÈÔúÕÁâû‡/¸åO è½MΡ ”»<_(kU Åw³Å›Y‡óz§ÃiÙ:›QÁaðwQjΕ0•’®¢×(Ëà5®´®’+p)éYR¶šÙÎî¢O*«œÍØÚ-m µñˆmZ£9·Ëo­çL¤]çQãÒÛìmµ4Øî¹[V;þÜô,N²¥àÄEc|p©-“|éV +Õ€¯ÓÀ—³Êë)¾VØÚƒg0Öj.ãæ©€rÄavº¬ÚZýq£äÚ^â\‰9JØL1Ý\î­ Šû"`(Íry|Ñ:cÃGu“ Æ¹)Žâ…£:€21fßö“›¤üóEácÒ4\«Ö>È2ŠŸ²ŒgÂÞÓ2íÞ tZ#dó%žJö>¦1É6oˆD«·{`]îRªL’Ÿõ¿×‰&XÀ3—,À‘dU¥<ŠüŒè}CÖñlÁ Ve¦Ä’Q0ï´M ô$AQ%vXºp´¹Bªj"nÅU«­’3ïÜw5%꣼‘Å£èÛœ;µr æH£'1 eñ{Ñ£*%ÏS)`ÚWøI×D6ƒÀ+deÃY–üu¶G.Š¥Qn:yìpQ'ý#³ÚmB÷Ìš©3 ¾¾ä朄…’l~«’ÓÎgEÉë ß ¯qvh#xÔC󧽃¿Mft|%TæŒùC4VN&‡z¾Fc ›[‹½Qx/”Aa‚k!#ùÓL¾–X‡‚ÄpI-ŠÜ‚ üâ’ù‘BÑÉlS¥Õañr`çZ1+Èéĵ+ê?˜®ŒƒD Út2ÂJv ƒ(a4¬¹Ïˆo¦O§€¤œ£G™‡lÒŸ…×äÚ»)BàŒ.c eª¸¥œ¶ÝÖÍ®’-Ë׋ƒ_ÕííE¤ÈŒ{1ʵ’1-IÖ†6ì…•‡{õÒ¤à t¹*Êa\„¾Š”4ÂvTQ½El$òa—!﵆1Uaηê™7}ÕŒ®1”רÎîÁЉx0ð®"# Š1¸ÎlÅn0NåNí¶F¹k>VÙmÕ+ø´ï)ïâ€oÑ¢ö-ô~ênsË"Ù{tÛcI—‚òt”‰røUäÈjAšþZ7ç}Ï<¡³¨„¬3í›î•T¸…ØÎ+f"-¨ÒŠV;UOÍUÀ°º…¡þùq¦8'¿ë«{nö¡3 MƈQVF=f\BÔ|Z˜‚&ѨC­Íš°q6¹q»M"T·4ÃFä~™ç 0 3U8ýÄ–€sÇéV|&1ÔÂK‹:™d/|\$ÚÒ›{ë!Añ`=ïC0!½•Rx”NGbÏ „ÓVQ…\%ëÅÎŽ7¸P^“»!a›xNì”:&êNiÜEß=¬¬Sœž`O;Û¦»÷Öê™é;éíaÜ¢W⿨ry¼*Dî£é¹ÿM¹˜*T½V{i„k©ó  ãÑ0„ËkX+LÄÂFÑ¢ZôXB°ÊN¤ŽðÛyM]ºˆÕ™ý㦮Ä*Ц(íÃ(]‰×) m|º£cö ÝÝóz›Ö1)`½-CsÿŠ \” ¿!ð~Là§~GÖû‡²s;³÷|÷ üÀè0rëÑû½Ü£“ñ9¸ó¤?øÙø¤¸^2È0H¢oêƒ ™CßõÑX¨Ãçk‚óU8–Çûì?z”â½Åm‹k7ªÜ/»Qq-ÅlúêR¹Ÿ—r6¤Ü85¨ãBe\r¶ËÏø‘À'tákÑÃwH_äªô‘å*²¢ói}jaŸz\¨éC&r¨ý—ÆK„_ø5§kYþ!Ü¢Š3¾¼—íVVQäܵ• ò¶'1îqÜf¼%ÒœÞCü›uå,Èmó/‚òj†äÅ É~XßWe²Çª‰ûš–¨d„¶¡„?ßH\}pãûÍÅXÙ~”|Ââ.¼‰ÜkÿëL˜(”ΧŠPêÓ›ú`\\Z«mÅþñƒ£±/Žüæá  ˜ˆX¶˜¨˜Í8:¯óeýÓ2,ÿ#†¼œ!O;«dývÆ 6Žü`‸þ@p&9Ç/sÌ;S5EŸaìbÇÚüƒ¨Õ E‘;lãOµÚµáÛâç{=ƒ~Nà]ã¨h#®ig9×^ÓÞýS';óq¨Mi·t=¦?òŸÍ̹£êPþ¸ŸGt¶®\„Â÷æ–Wá·=Qø«PI&Âÿ‰ê?u¦QÊ…cuø±œÐÖêSzÞ]z{ÖšDž@ÿk©žÃ6ñD‘‡HWÞÿlzþf†äïg¶Ònû“»C©wér¥ Å*ùÆ`ØY]ÓøtÂŒH *»ŠA¸ptТ —¸í‰Â…‡®þÌHš b‰“ óŽrï†lèÌËmÞb¹Úàu” ®ÙQó†mòqQÚ}û‰SR–£4wõñÛÏË^‡óÖ*‰¤ð/Ñõ "@ÚVwø=VM<ë"x oDú/oäžÊØùI(ßZ)’2v8ÂÉÏN^Èü$½KŠ óXÀÝÐéÃMO{¿ÖÆï¯Õà… 0êsâ´4+ðIK^Ÿù®·tBXõÿ9Íî9㟞Ó(!ÃÌŽNëÉÇöj¢HÆaÀ¢ž™CÖ_Åqº$ΫiLYYxËÜ õ ì„O zHf~8FY†¸táw%Tx{7˜–1÷sê„|`Ì¢Ú|=íþŸÇòHWá± 0*Žå¡ ÍCWѼqiNš—q¤%8â驪~ì—Çýò´_ÞõËýžÂa½Üv8ÉÃuO¡í¡ë~y9XFÜ)ô>úz'r°®Æ%>¼¤ºM¾¥Tgvi”)T¦ãfnçÀ€r0ÍÉÖŒ#œ.¼´G ožlBèi!*çÌ„Œn¡›oÁÏrÕ o?õÌ`b¨V=ñ’†úÛ&7N6¢gä·qi™÷á‰UàÉ™óÆ(ô2rðŒìg~V¾1Ô:¿s1d›¦±³Dn5%M°dœUJÛB“ç[E©¼‘T©ê@`ÞþÓÉsó µëN¿RÛ^¤! äΓŸ‰L'õâRÔ4ùÕ­pbè.êç_ÅL<¡ žŒÅ×/Pê6­ëš¸Ao%éš:íÓ¸vÈ´O–ìºÑ®+ë± „`•J†£)­°ÏóÇÝI¸A‹ˆŸºcº>­oöé·É¹É½}Ó¯aô“Üqšç ­ª/{ŸI>^è9úåð^×ù^•²:‹Š…Wu£÷©zâÜcUÔU=qF›ÃZUPøðòi ȃ8ـωƞçy,bp=£øãÅ_í罩Àïj2ùs ý„w1c±37}Š>su<¬iv[ú•ï’ P™ÖÓN³ÃQŠÙˆ¹‹Ùº÷õ½ùJ†@:A¢¡"CþÒ>¼«”Z.A > stream xœí[KÇ ¾ÏOÈi Ó,¬-ÕûK‡$HıË›“mÚ—´ÊÎîjfW±俇UÝÕENuÍÎhzu0¦D‘õ ?²ÈjêÜ31çñOÿ{¶œ½xíÕüíz–Ès1ÿfýköa&ú¿ðž}þ§“(¡çB°`Œ˜Ÿ\ÎDÏ/”bκ¹õø=YÎ~\üpt ‹9m¹Z|:‚¡NøÅ_ùêèXYˤ׋F²Þð°X7÷Î ‘ÎàFéÅ*ò;’ߦY¤³@}ìÒ‡³ÜÄ!Д]<”!b¸†¡2BjÿóÉßãy,>䊩Our'ø62ë yœBZæ•q‹Õ}Ú©æÁÉxØ–Þë‹+i˜çbñÇ( «h+&˜Æ¥í ÷‹?Ä=9a¹†ã‚\<•„eâÜFIizfc¥^œGˌыo"œŠ»¨›8sàB(йÁÕE·Žõ¦;{RT>»‚³Ÿ9¼UtƨֿœÌ¾Ÿ €‚Ÿÿ{Øp,aC[Pî|93R*&Ì@¹žý0Ó`c`îàôúoQ*0ÒÁtB™`á'¨$SpÛD«E«€V;·F1ïz´^tz•ܸŝGÇFDDËÅ"ß"Õ_#ú'D¿Aãž_pÐÜÑAã5â¹Cô7h|FL[ãÌ_Å¡fôJ9†W­Ñøñ_ úU-›x~Z hü¼ßðÜ#ò É^5Nˆ÷öñ_×ç*KIpB¹xÖ˜Ó:B^ðuù‡«ìš ÂÝ@AÀËXT†³ 8£”öÓ€fÔJ~)pÆ)9Dgª»76ʆþÀÏêµÒø®T^áûË×Eb K€ô¦ÎÖ‡{‚i« ~BTŸRC8Ý«>"2Vâ Ñ[xºƒ×­‹×ý^a"ƒÉ€œÜJ¸+L¢”™(j@6Jm…Éi&ëLÖ½¨ ¿[³ËÃÌ>X”Áè`‚pÌàè¥D,W˜ÈÜ‚È8éP’²žÎ40‘¹-Ý“•žY´§$%§‰Xu`‚â „­Šgˆ¼ªYAôžòÄh¯tL~GÓ™¹"fУð»ÏŠÚÆ.:#ª–ÔDÚkˆ“H±QÊMããÆH8RïãWHS7TSÝÑ‰Ž±3< -Ü´uŒsÉý­Åa€ïë,E5D£Ž³ûYnêsõ)Ïïq‰cŽVKD?­¡“è×€–è,–¤´g ÅŽd§ÀNÙé žM¥b HP¤A:L?aBçmÁËÀV³Jª«×±N–WˆEP°¥œUî—ˆ;£XT-è,]ç+$ùÕ†uò¾þ³“qÅSsb ¥GƉBê@€;(¢!2•ƒèþíšOô‹rB|{_5ÄÅ yžºâc ž‘3U‘‹\õW¶ÝÓó²Ýˆµñ<àòWØó’О×W¨Üöï¼vÈê®»*6GVÜÑü›VÙÊߺOÞÖˆ©PÒz› ÅYÝHÜÊD+þåAÈ(V§X!n¯!ê0”o%!=Ûk©¿ìÝ~é\8V¯÷4äºaÈUÃØÄHç ¥ä_U Q¯š“,FRøçˆk$ ¬v?V <ƒla‚ M„…L\£Ñ Ms5kk÷}€øo1÷–-Û¡‡ ÈÕt–äF“Š£ç ³zn‰žÁçÆ':·‚rÃë­åƺáø½ìc}ÓÅÊw‡cßà¹ñD“‹ìfŸÐ4#o¶Õ”Ëñšè¶¤¤îCIׂºÆ«œwÜ$uhn¯~ì¹÷²¡NœÇŒ|&Kt\0ü‚è·µI«oU­¼‡$’‡õ.%ÝÓWá¹!-®"@Azh‹kÖ4\ò>·¸>…¦GÚ¥·–ø 5濱@õ³Ê^”[lR´›n!AÃÝ£IêÐîÑlˆ‘Z´õ´,0ò5)ÑG¾&áЄ­T¥à¸ ô3>™ > stream xœÍ[Ë–· ÝOþ «^Öä¸+ߌOyÈqbùÄI69Y$š±dG/OKVü÷¹ ëV“ížhFÉñ­ @àâ,}¿S#íÿ7ýÿÉ‹‹_~Íîéá"?ÞÑî³å׿.¾¿ éjZ¾ûí¿awDcrŽvWß\д>Æ1™v>¦1ù°»zqñ·áëË=6 Îk;üx‰ŸFk‡OÊc땾½ÜïGíð~¬):•†V«"Qnø¹r¤œ±Ãí´>¤áó,FÇÿÀzcòfxÉ?ñÌøámþ©-9¹à9~GÚÆ¿_ý‰ òÒ ­Ìh›uu >çÅ6iå!Bû1†Û7YU«RÐlÔ³n6ßíÆ¨hø ¿‰]lÀŽy Ä„¬…T~Î:òÊÂ^¼Fe4¶aÙ®rÓâ཮y…³Ãg¼ÂXR&À9,9)"#WK÷y9Œ Y)kcšVç³¹^uº½)$cŠíÙQ³íØðöz}Oª*ld·>ººøò‚ q÷î~KpXçî^\ØìÇÏOž_|Ý ¸äNœ3c 2à ‚föŒSp©f£Ô)Ö)r Ìñöª€¦P|G6(ÄÕ³I Õ~‚3úBè9BŒBDNoz…ØÞÌçÿjÝóe9FgÙþE–St–†×åMe•“*Ê“®Ö×!á!ùTY!l–…- ­|úMñ!þɺqÞúP®r¶Òîlk¦d/ÖïxOVŠt’Z¿œ²Æêùä³»¥ì'BÜ9¶¯±›ãì«?L?nŸÞ1>-éÑZSÇgX¶Zö¹ ôövŠ£N›Æå0&jsx;ǯÂmÈHüÞ; Ðq©€egé„`wE€ü /÷DJÁœá“‚v1$í¨@ˆWÉÕã7%óŒÅ¹Ü¼öxüˆ%*FëçrõÍT$¢+€d‹A>vY%óišcL·–RøY,'c¤é”ô ›ñýq^€¦eõÆÅ4Z”‚'`fyCWgXö/²Þ¦4/ö»0¢R^Fg5¥Ýž¦¤ôê&Gž\KÛ8z“ØqòóÁ/¢¸6<„ ûžˆ5d/~8d;HÄ;1õ#\ç溓!ôÛ¶²Måów+“‘Ûß|¶¨˜§5Ï{:%kªiuI;|TJ ØŽÜrlë-´ül† þ8ºä‘ aô6–cü¡lœTðÓK^É—ü¨’^ï»’xä¢ )°JÍpP‡ÔUfPx×¶b y«=?’¯üúºfqÀ‰ж¶ .ø”æ˜ÿxcù&Û4ƒÝXþî'“ùr*‚s55‚sv‹F9•ñfjj„jPÖ¦µ2®¦H¦s¨Úkv×hUa/’Qð·§ë‚NŒŽ—{kü&Ê1ÿ¬9³žhy’-î nšŠt³Y½rÔ£FSꡱyÛ¦³oÿ›I_ˆ2{ŸtBE9,Ðtì'­œ£»pßÉO+PŒ—kQᎾ²‘ÖáãT§eÇú*Û¢ 0É­ExA¸AADgŠäà__Øk4BÃB¬Óh\KÏác~ú»,É)­Ã,0¬s…œ6C˜B˜WÊV+D3[µÁ/×Î6‹FO)ò‰Ÿ*Z^=ËúF_+–ñ–ÐÑVŠÝŠMÞ]¢¬›In!w¾¹¼ò¿VƒƒN M›ÇW¿¸k¯¦»½w§ ä÷ÙÉæt+R™pF †—£ÚÙ4?E äžA^+:¥I†çYœh¥Þ®?¥ñøPêQD~?ÎOa)#¼Y§åMebÊ• ½¬&[¯{ÊåE+ë›—û¦g4uŒ¤<ÊÔóÕ†ûì—>±dØQóQ…|¬bäAøR–|Ì—J¿Ãzïp ŸV„óÓ…÷rJrS‘TB¥z1îè§r²½dáðv/!g¿£zÈ'ž·áû¶1|{U‡Í”oS%²»uè7£«a^튊Tu ,§s±—øøœó }9gÝ;çiBSÊL`?o\0ÖNÜôé‘[3GCº³¢(¯¢¾7VQƒbT­eÿ{mµäÈ%²ô½)R¨]·”'1RB§;™·Ó¾+®.£eµ>±ù*üDzxz*=XUí ËáLÈ}½0ûs"l,~Thé>­O}}·w’-Ô¡Äô´{Žig¦˜цf3¼ªY\û¾¦êß÷&ºqË`L4£îäˆKȺû°àvO¥yzê¹Ç:·ÙNÑÂÑ;<è7Uæd”[üðO:’õnæXÐ^Ф•©w¼g]Éú–µª±nò¼"žNàÙ´ƒÒ¥¿±Š§c4•ÃÜí™êySÄÆµØH0ÝŸe”&m6Ðx4é:?r f¬²ê¼9™„HŒMä°­]In$þ×<Æ$Ç·þ§yÌÑñ¿a7¡þ> Ég°eUÐÂíÞ§JëW›ƒ è&Í9L㿼Hw£C33AÅrfL“ÎxÃr“Ó4õO ØÕßoÂšÍØ~eÐËq˜IµšÃ̇4uÕ }18†º <Ô[¾¨ðiå÷¨M.š\;¬²c»5ùF˼ñ-HEÁH67×pާI2’¯èÄ÷èÒ×xèòHøœ!NrÅ·E"w3'I4Á©?`<®ûÍ–{ßKñë²ÂùSä)/a$¹?:4³÷ÂîiôdïB‡V»ž¯Õ¢Ü&m$™¨~Ñ¢N“G­oà¨g:vGÏîLPcPþ8z~€ ¦}°§Éq^$¥Í‹JÌþxÉ7óm3+êQ²Ë·c&Fï:% Š}oyèyX½£Ä§X¾¼°«*âÚ±¾ª»§/?€l %ÕöÖ°×øáPc|>×üÒ©ÑæðâNÂK–ë¾é¶$Ev"»¤KÎ-q€s˜ÌI[g6îpQ|ÃrsøñåžøCkùz¤÷3fÉWMËÖï<òÇ_΂]¥X¥Fˆn2¹×¾Nì8tØÝåà{ôt²á%(¥X”ù[q¢Mß)üùâG°Ãt)ðѪHkÕíÜ/ÄžŸøWNóDÉ7?ÀIüñ€2bºîyZKÀÔ~rÚmæ…x}¸B—Ždû€Ì7ŽÎ6&xïSŠNÓ‚µ™ãûòfT*nšš.ÏëXΞ4œM˜iu>Èqþh¥ŸGA›§e7åU%íV6Y ¥œÓ5ÎøZµCÛ6ÉŒF±·xg)Þ¤ÿqÙ´é}f)¶êÆ¿)Oƒª:ý^»¹‹k±¡Å#Dõpá0Ín›UⵃøÄýŸ1<俤04àm²ÕüµÄ^'<{_Áp‰–p¹ÑèÀ6Ê ¸±\Ù·ÎùúIó ð{;ªù—ÑVãcàé»ä½unÓ3žÇüfô¦—޽,áÌŽiŒîÔ$Õ!Ô“{øYÂOµŽI }8De÷“ê{š%°ßÖÑçZýSN¸+ž²@Vi‰lðÿ¼˜“m +‡Üѧè--JHOûÖdæº ãÔ;g²(Ë2“߈Âh PÓ–×íXzQ²P,<õ¾w¼*éqt ¢Ü*/öº=Û¹-.N›ªx’‡–‡·¾¥ÜëA÷SóN ŸHï;QÎçÆ·]aö+¾¼Óüíò‰‘Z{Û ¦Î!N“IÝ&ø'¡JW±Å¥×%þ« :—ZÛÆÏR9sí©ÏÅ)}Ô]óÝh:¿KÎîzð.YpþŒ?P÷¼MÖ ,Þëz¾Vñ-DŸìö¡~޵Îâ8¯Ã–C:þË¡‰Ì?£}OþW7ÊGTë\÷Hù6?é&ÒZJÇH[jÔyH;O–8˜ÿ4Áÿˆl~r÷D–?¤FÏÑ|çV"cmë‡tŽ_^üCò(endstream endobj 519 0 obj 3345 endobj 526 0 obj <> stream xœÅ[K“žOøø4Ç^‡¦]ï‡>`¶1p­á>`­Ð’Vh$°üëýeUuwVMukLÄŽj²òUù®š÷b”{Aÿ•¿ží~ÿyÐû'Ç]ZÞËýÇó§v?îdù‡(àû?_Ó³—rŒÖÊýõ·;Yà¥Ö£w~ïB#þ^?Û}5<¼:€˜7NèáÍ>jéeþÊ–¿»:hçFÌðOZV2X‡# EðAÊ8<¦ua¥°Ú / ÞØùi¢¼Ãê7W!F`yN±¦ÝðzùȞ⣶R™ð¯ë<ŽË£„u$©®o Á§l¢„B¹1h뇗¯§FD¯HpgT&‚øA+;!‡h'¨Š h|bOúèE~K+pt¯“2¤0Â’)Úxzœ.ÂÜÌ=.8ä²ú‡«Lj4Rf/§|·@þ¼Ã̉ß{3¡]ž)Nlk= áÖÖŒVZp^™@£¤È›gÄ|‚`À‘‘+ÄNE•¸{ØR~¶ÓJDܽuQâz¼wýýÎjò4¿×#ˆ»HayPôÅÆä½×{Fá…Oßèô¿tÈ`)链ÑK훥o¬*:‹oäw*}ó}“Lì³û†§’•£ƒŠRxÚôK'`è·K<ÉÉ xªìD®æìôÅbÄ,'3tÍKÒ0½<"l!XBïÇ,!±€óˆTâR|Ðn )ñÌ!Žû$‹HÅ…MŒªI!$"—TaãÛŒ;"¥~›Ò‘³Z6Á˜ãX>ß°ðTÇ!B£äj¥x¨%¥'.âñxwuH¹ jàq­‚×ÒͤŸsƒ-€Cª!SÿÍ„á f$Î8ŸE£ ¾h ŽaªVRDJè\šWmrI³Ë$Ô%Ð 9Ù_ÂÇö=º"ûÒÚP¸Ÿì©ˆ%&Ý– ò =í5ûƒ4ˆø&æ2çã*UÜ]ßæD<Ûä£ôü M "Öh§ìå9yð®o5t•Ù9üuJ}æ¼ÔÇL‡ZJß*Û?È)Q9ß)’³ÞL™× ÿ]q(ÎÀ]–Ó«*}¿f_17?2oZmQùxâ=…nÖCÙôN…KÆÙÖC˜Ë6ÎFYÊüªm c@p0H9wÔíÊ]"&¼FÍ‘œÏØ(8ÎaQÂkè“Oñ.-‚€S¨r=éBZýKÂd…R¾Âúl)¤_,F3A8 «a­LîX¡_Ö“E´1@³T˜¢¢qÞפ‰(C·ê¶œ ©è/«ß-…~î»rI÷èŠEÛ.W…z€l– b¼ãHØò1«ÊƒëORè‚Ò¼a{Âö1÷{>Ì8ª€Sl­ÔÔr]¯³c*¨†¾—ñÕU/!ZB‹(r>Ù]ÿî«t"%OÜ./Ÿˆ!³æn_ªé€–‹Œƒu’ÝÚŸƒ×! ÑÕθ’ßù&O€?ç|›Ã±êßâæ$dä%ÏÐ+}Eâö,ר+b¡ßæáé4j%>’yéÑ¡-ù„µíL §•L«&VôjÛ¦EÑZC+aªj¢NÏΣ“ÍæƒƒRSjkÊÒtÛÑ.¸wŒ§ Š7™g+Ãھ㛫iè3|a'gx«3W(j(Ñ YÓÔÇùšùÁö¢dDid{&•`êê.A{wªäUÿ`J.)•+9!Äÿ2¡¶¿µ’8c£™ËV6ï ¨PU—w™¸õ›NF; zË™& /áLIí.¼³3µcï’•£Cb&+¯·ÁnÓ àRn•tg ó„ÒØ ÖO«ïAšÛ¦ð8LÕ¥ðßkžçD9Ì:YÄáu÷€1P˯t˜š‹´|Ú\L¦ ‘YÆm€ÔfsÑK3–Dƒmˆ¸“r-Þä^Ôàôn3í:ÿK]ˆCC«Ä熳šŽ ;2NWM ·‹h¸Q,|IÖa­ ó!ÝQX"S‡eâɸ àqÎNŽ&ΞÒt§Äh°¶‰'½Á ‚Ú0y)Q|Áé¹õnÃp¶r…7eD§ºŹÔI…¿ªÐÝ{¨ÐÌ<ålSœ$ã —0,'¼Ì„S¼BK)l<£È£œ¼ä}N­Zå kG­e+9è(wAɉŒÑU¸«xM~Óm´Õp=õë‚à#HÉB0J#y1Ö‚Ð;7cMUžŽ±çÕýL~,¦ª´½ÚHÆEs}”iŸÒü´æÚŽ˜¨k»5·®Û Ñë°n.*ªQÙ³Â>á á‚ÞÌÿBîÇxfþQ¹]‡wœ…š4ÕK«€¸œÃB£ÚÜF«ZÙÊ‚9>6¤A±Br'½2å¤hÊ”I±Ï+³qkq2n>ÏyœO›¬ñT=Þ53¦û‡Í9aόԩ¯ ¤ÈØp߳ϥæ›~ ¢@ÒÀ`ËMÙ;ª v °^O£͉+ä•K¬ÔOòNí{p²# ÉÂ,"îG€†M.I·Âév\N¢¬B‡Ár=0Vß”Ck¦¬u›ATÛh%-¸j”]¤µžnL^0[ÝàÆâ Ãz/Ó"¨…^Íš¼¿¯¯<‰Úz?8y?ÝœÕAÓuÿº·Å Ú™íœNmš]N-?3²êXæ× Ì[×»z,@·6͘ä‚Tçp´Zo3ð¶­a4‰pö÷à'¹UüÐg‘·y²#և߰eUÙýUjHßz}2`K-‹ìðyMõD&ÛjÁVÛêñEßòê¬r@o ­ÈˆI&V)Ö>@o„×ks©€:듲!€`œ§Õý’FçN¬Ü>£° º3¼¼à³ˆá½¿ø¯­4^fQóýØfŸ\æT—†ÜwN,×óÎ{Eådc¯¤ k¬êš+:Ì¡Ö4Ì-5íñcˆh…¦ÉPö4¸“ßb]aEF›ñ}=¼Å:‘D,{«úS» Ô=‰¡ýõ8zÜ ‡?¥yH°!öcMzeâ*!˜á*¥á{zDu¢ADg%E®#Ø[6ô" ›¼ Yà˜žw(ÆTX¯…Rº+7¥Z„èÖãùeºÍáU{hl5¼Ò+µ^x];t¨ÀÛÚZéPîÃÖg×ï8 ×ÑkƒlÜBãf¡£NZ…Qîn»,étÉ«.m¢Uæû°@ '¡²µÛô•;¬ò~AnWê€7´Ç3žwî`RY¸qqÆüð‚ˆSU¸’ï<‚ü¹E º@˜¡Û–Ô~Ë@^uÙ²+Í^„÷H>A½sî¡ù‡S¨Ot™ ÍLV¢]QŒ\âÊ[3ˆ¤¥èšîµûˆ¬²Vv/MTTs¥ÜÜ ©àƨ6j]†û‡TßZµ<ý²îœºx%Ât!•Éïäé·aCæSOv\J¹w(V¦zà4ô@µ½ë‘Ç\Æ® [û©NGÁï<¦hPÜ«•Ìó¸ôÚX¶ƒ˜ò^’ùagH|Ò¯\¨<-Ï2£_—C.V·@§—CiR2Ý$úÐ a¶KZ«è5}U#$_½oU?ƒ#RËІ^Ò¢5UôÔo˜ï" ¨Ü8»4Z7mÌÉÀb½“®jQgÐs£ÝûéEû­½¸}­7[#|:¨_û6‘XE{üÿ{V#ýÊìbï_Hé+žŽe¶âˆ±¥“M Ö¨ú ±tÕ`¶ŠQŒ§ª¾Z~V~4hš%ûEØ´rÿ_„i¥èeø>Dz¢!óO.ÜB_T1¼üªãuîéendstream endobj 527 0 obj 3395 endobj 532 0 obj <> stream xœí\[o\·~ú ú´OÅbó~±›‡¶¹S4‰Š>8F`¯dG¨.ŽVªíoï ÉCÏ!×+k 8AáÓ³Cr8óÍpHÎñO+6òÃ?éïõÅÁÃo\½ÚòН¾Ê­ütÀÓ?Xb_ýñ{¨ç£×š¯Ž_ðÄïÜè¥õ+ãüè]_<¾;<‚ɬ6B ?BS !ÜðE$+Ãäpvx$…SÃß,¸ÓÌàfÎ:ÎýpŠt¦9ÓR ׉ßúáë0Œ°ÈÏ_8ç.± 4i†ÛЊkÊpM©¹PîÙñŸqA†.H09JË:>%|ÌÊ f`aF'µ®o‚¨Šy+p ž‚Á•‡É¤Ð£c|øö„Y”… cƒxÜzËÜð[”ÉrìúÙ‘IÓàØT¥³5Æ 'ÈaF­ÕðrHÅ™´ Ù3Î%å¦vXŸ„RÊùÄlsRdº>+ðRƵEMk‡ ¯OJ?**Y#ªõóãƒo8`Á­Þ€ÞÇe@¹«‹e­Añåüà».à¼Þ 8-Ggà®P£J3°ÑK\‡¹Q\Y@ù1(ƒÙ a©r4Jk¢F2È%.4ª«1Î3N#ƒËߒɉ`Œ,Foåð„Øçyá~š†Y‡@Ï>§•ñ^2©fF ü'ç…™’/‚wZñøCò¹¶ÄÁò¦™2S;2ƒ[´Ä«„>!+Lm¦˜îLÈWm5‘±Ï£Å5³µ±’YX„›ŸÎAµD”NÉ×q-†¯‰ÌdêŽ=—JOöæ'ãÄð%¸_aÌF¡Më8âjTàq9§!üzº>M§Ò €jœAZÔËB½ÉÍ8oí–ŠVý¤<êpDçëCw\‚8?¦Ð'*[nb¸³|»÷b û7NÉErk,•ÿ^ ÌŒû¾8<‚¦b¼k›a<#,g5K¦¯ ýŠÐ/ ýf9΂ç–Я:ô Idžžç¤ýŠð\wx.;ü§„þi*(i!Çy„ÚíBóz)e塟“6Õà‡­ÝëÖBÂ0¯ý Yð7xp!€°ïðïÂ’ý#;F†n†éÞÌ n¡ßžÐcáõ#O/» ôÆñšBl(Üh ¢o–’Qzà§ã¼\ʰˆUë¥l‹ØÖC÷žùyAO…ºÄ4R«eñ„¿'Œ¼2ý`{÷áŸæé/–f ôwªùAÖ Q|Ö`ÖªÂËKõœúíEÏ ÎùòÃùò—!ÿÒéú'BDèäê ºgyo¡T± çÁ¶æ§ñrò¬aÇ;„äl¡¹e+; 8èhAí¨pz³;J>rÿ+0#=ÐÝýeü½ãÇ”¤EéïmÞl8bðl¸lLŽoŒ•›b?s?7ná7˜ÁFû¦“v¸…ßé>±ÈV­ÉÌʼB ]Ôkâ¦:v®jôÄ5½‚—}™(»icû»»´ßQ£6ÂES`Ózô4¬~×:k¿ÑÑש‡G4àì♑@áDx€>©ÈÍÇZ:8e‰oŒIª0„Ti3«$Ày¬RéAËhÉ·—Úôùš x§Á§A2àU%+2xÍ÷W˜^ —… A¶°n>âÓèÖ„moˆw-Lª{Ðg„÷°1½ûíþˆ+™kµÕ±‰†“Ðó >ÝJ¬4èî4Ù^¨®iéË~*ªqÞk”ÿhZ@ýêNñŸFÒ°®aS—íLÍ‹7ÿ„KÀ‘Ш˜=´ - hØmðiX)ÙZ^˜½“u¹ÓØÎÎq r„ãÓôþ}Õ´u4ˆ3vaè¥Yqûhá¶ÀhÓ«ˆJ°ÌûI5Öð¹ËÕMOÌ‹°C§YŽ\ èѲï¥Yº ™›¸¿‘Hf°´K-ŒÇÑf³õ¨vþ‹R4ÔäêÌu] Ž&øTc^×/ãh¬ß䦥‡°³òþ~3óÍFSk<ÖSòÜ&‘kO˜½®°bR ðŒÂ«YÔ;Bÿ°LwÃü‹-èÀß1’éàéa<0IÕñ*’Í,XÌwì ÑsÓ¯ÕI£ƒ7 V<¯‰µÚ8¤†Y·q¸Sq†P°S[?«/Y„å}]-ƒàÔnY¨wœÄu*Ø*ì8Âi”ۦvÃ:“æ˜wËJ–Ï»ûvð ™É'æa †öÌΣô‘y)»là l§©#¶µŒLèòÒηyЭdKÇ÷XØDC`,©âRV5UO+ÒÞ¢`NYåR‡ß,˜DEv3Èß-?g"öBÈHgU\Áb˜ÂBžG{@:ËA´Äã—Ê:Þ*úâèF* ¸{› Ø:Õ`ý8G‡¶Z0–ûЊg¢YÌfFåàHºZt¡aooÝV 7vûæ:.÷ýXÄ…kKG¦‡Aió•»l½5Îõçž$nª0=*Á‹«m…œÐ8YØ=¶·r¾iõ‹r¾0c*çÓbK9ŸÀªæêJ<¢÷E¨`Fmg›ßš¤~í„øf™(N'aœo/² IðoZ´ááçÉ>Ç9‹ê8„IÇgŽƒÂiH.œhVZÌPuÁÍ™C„¸¾¬„œ×…"R,fK ¢ ™Á;¶Ú`Ø1Cpë_:"5ƒ†„`ž«¢XÚË­¨†ŽÊUgGšÅ]v2€»Õ8o›ÅÀÜÃÂXNqüTØ{Uš¡ò¼\â 'SoKó¦4Kip¾éw\±’ÜúQ®.€q—ÛJûçâ¦;aq„ÑŠtÇð¢Hñ¼47¡ihõ¬4 µÔІœÃ1q}1–0kW‹ù²Hq[š—¥¹.Í›™ðÑWÍnõ’އÉo©¿~”Ë ©ézHxÃó#V¸š(ôBJxáGZ# :ì ¶ºÊL…P˜rGë4Þ«_ÌÆö{¹œÃƒ¾S²¾|ÅS­éi<^YHÄ~Õe‹—¯T›yfÆ¡ØHµ´¸éƒý¯÷/>ð •÷P*X»BKºÝJs‹{Ô^åk'2xt¥>„Ýø~ fð>R™èCw(k¤À[žòÓ׆ðZ/¡z ,ñÿ潿0g,Uäu $´ø*j‡n÷‹ÚqZŽ^©içl›ø:¿O ÞZÐyS; ŸvFèÛì¿OßpµÓk…ÉØ1ø_¤}º«I'_ }B:2?±8c·ð“í\Ãc~$ÞµR0`7qÏðà 䇜Á§ðsÒ UúÓ2ž•÷ÓO˧çQè^™â®xÚ±û3Ò~P,úqÅeëV ³€ ðûÂ* „n{ 7AU¿±n}W-òÔ˘—ø Ýäý€›sO¼c~ñ0¼EèIœjr¦i&á7I…ŽÝªÔ;3ÍÆ¦/ÁÀÄFG¿»ž(ûx æfIeBñ€/ðÒ¥õ­¦ÕwÒ›ö ãiü‚ÐX=4¿ÝÐKí7[ašÎƒtú¢^äÔmz¥êÜ·OØxª´ùÎ뤜LÏf‡Ôx¸kÁ/Kó¼yÌ}UF¸n2\ÎxûÇu&œÕÀhztXP!Þ ñLyŸó:$ºŒÕH ¿-ͱ©‰×­fë˜+9àYö.œ'¨ôϼÀÊGáˆ#Lêx\Id'Žˆñ“{N~V¸ ¥påžÂ+¼¹¨GWû©8=‚Éøò#©Ù–™ò§]6ÕRDzªJª.Ç(€Gtí0ÆöS5‡wÓÒ¦/?’<,©=5\/÷ÏÅá†îÿ§Ó'¦"¿©3¤Ù›ÎD4¥ßåhÞøÄqžGn±JÖ7±SÖ÷ôŸq½g¯€—¿Õˆ^‘(wÿo9ðòVj¹‚¡•³ ™¦`ž›yßü¹}oxendstream endobj 533 0 obj 3600 endobj 537 0 obj <> stream xœí[Y7~ŸŸ§Oãû)Q RR€Í  »° 첈òßSv_Uc{˜a Jâ¡{M•ú¾ºº{^/9Kÿ ×'‡‹Ëw¼Zœ,ÒðR,oNw.^/ÄðÄ—?îE ½‚cÄro!y¡sÖ-­,Àuïpq¯»{þ,æ´åª{n•pÂw7Ðð³ó—”µLzÝý‡¥ð†‡î¤¹w^ˆÐ=ãÜn”¼c y+Í"…ÑG .}0ËQ¼…1e»Óù ¼€[e„ÔþÁÞ/ñ<ŸGrÅTˆ§Ú[Á nEa$SH˼2®;~“vªyp2v§¥÷:Àâ—”4ÌsÑý5aí`Å$Ó¸´=á‚ã¾û.îÉ Ë5ôâ©$,ç6JJ3+u·Š–£»›QNÅ]´Mœ9p!žºß ²ÞûîRWpx3lJkèÜ“âñÓ~ëMöd¨ñì ξšõðVÑ£Y¯ï-n/PÁ/ÿZ7KÜÐŒ»<\)fy±¸»Ð€1÷tºósÔ ”t0½Ò8`áTÒ™y[e«/²U¦­ZZ£˜w[÷z»Jn|¤Ùdãghü?Bãhüs‚ÁHºÇdý½à`Ñû]®›îOÐý›šG÷‘¿ž +1§\i±¤‹wJŸ´˜`ºx°ÍkÕ&jk$©+óLtœ˜ì9µ¦Ä­‘nÊp4â_ÔÒ¾ ÿ`F­äçŸlÆ¿%ª0}ãß̶‰Z„‘·FºAî þAL†L‘d&½IÍ=IŠÜJÑh¦¨e105JõLÆŒ=¢,2êÓ½¬p}E¹;÷šRÔµx«™¤#‘Ä•Ùú,>™€X΋› 3ØâQKP‹ÏBdnA,nœƒ4‡,ž´l‹/˜ÕƒÅBv{–S=?Aã/ë­Ïƒe·OóyÒýiÅÅ~Eã8~ ™ãŠÌQEs㺿ä@ƒÝ>)“vtÍ9¸¥D±Ò3‹ˆ’´d›ÒÄ@•+ |JðîWÜ‚¡ñ“ü¼iG¸‡h¼à‚É>«|žÑ³H™^V„V¼ÈD8‚nåÂ³Ñ V’:žö t„LÔrÏHaêó!ó*G)ç°÷¹c`‡LòGIJl^ÍgÛùÉdh‚£~Ò_×Ñi†òLñÏè&XæE…ч—ÁQ³0&sZ™óq%”•\2ï/vuÄkeŒ©€JEjº„6 BwèíVKm؈ثNsà3PVx„ä1™ i7ÉàypN:­ŸåM>ròuóý $˜¦´„*XH•T#ÏæpƒgcÀNr0²{-ñŒ›z¡«÷éìÄbŠx‰PŒ(ì%I©—è Yp/YKÈCÉ=š!«q9VèN‘kÈ8œ2)•å’H_*t¡ªE«øqUÞs®“yhñð. Ý kªãÿÞåAŠ;qí,À4£œ”ôݦtÖ.µ‡ÆJn°ª ŒÑǦ­5b8>J³ ׇ¸ÚÀPW“ÑÅJÀ¼XÁ½ð³Ú²`ˆ|8zÛöí#ã„6ሦŽo¡[ÐÈñ{¥FŽo-ã~püfˆ7lyÚ=e±†`rHN`4iz 2«¡çVPý|nPa¼Ñ¹´D^%…·< 'CcpFKÆk1ÀˆJ¶MzÖº ¾Þ`ò`uwPG¼Ê–z‡‹Å–”y÷L†<ì[áݼ𞦴 ž­|¬Î ¢’kãÙ*@÷¥Ã¶ðžÎN,戗(ETO‡kkbW^p’ouw»º{p v ²…ºK¢ü–”œiRw+ Ý• ÿãº碯¡îžá&$ð) ~ˆQ«Í#ùøºl‡º{Þ 9yV­TÑ ³8*yC*ïYˆLíéÙ…“Ìã³G­FIVµr8ûeDï˃c[Ùý††k/°‹¯‹ï‘FgèEñ‹?(UG‘Â[ðŒ©…Šb”oÊãW2…7 i<ýq.“ÉŸ /ß­]÷•R˜>¦g*Î^‹‡óJkoÏÆ• ÖËfïqê¿BçÛ@ï‰p„§4s(a5¦wT g Ò#+¹‹_.mdå“z†.²'8^¿ÊmŸ•«Ìšyª=>€0´¯ÄpâJ4ãhÿ¼)GaJ‘%¶Þ~¢%G·`Ôı@âœô^±€ã\ÔjÃ( ­•¦gÔÛ¼fMÇ”z“7£ÔU4Ž»!ÜÑ<«wµ’L oíqFÏæ¬Éߘ;håMº¾¬x[¡ fæVI{ÆŠ@Lñtp1(DÄ)ã×€MuÐÒO ¶ÏT · •ûtÿ)¶‡PÀ¹-‰o|ÿ.bó{óÙÈšÉÊ£á ÔØyVÒ²m€°*~>Û#ƒì»9V¯ ¯Ç”õ÷vV˜Hìb‰tl=0£’hDG¸–žš}ÞÞQP¶”{ÇIúÚ\QmÓtàþ ð\&ɨÐxã³’Ø_šÏÓ^Îfê ju½!j¹&í¥TÐ^ê²7lCûÂ×p»bµkµü°–>Öfáp÷~f$€Ž MkÑ3±Q© \Z¿ƒ×~ALp_¨&qµÒ“ÉÞë(aP¸ˆ:%YT´–ãf€¥Væ¯=qBÎì8ôÛŒE†ãGºI©å& ŒQöÜL\î]­`UI÷çÊ-l}ÑâJxÆZűÍc Ú.û9û.ó(Ÿ33÷veæÄ3BÏh÷„w±¸GdŒZ²M„AÄ„Ò(±“‡ÔžW{ù¡ðó ´…ª>‹ É×Þ²|@2¥l^Œ(cÓ‹7×,ŸÏÐFHŒ “„^£¤åÏŒÑ6ÀhÍæàkŸ·¿+&ômš°{è[ö’ßʃfã›zêAº9<(i©3zÐhA› Ü5šGŽÔ¢&Ä8Á¥ƒJ‹˜ûŒ¯“Ç&ÛDÐZXû8GYìŠû•9q»Zû]KÅ:¸0ÁLØ¡¨7i¸(ìMQ+œÍ›d ãJÃ䑌ƒ7¡ôØè‰ÙRb+@ ŸCd±¸öMÉj‹}ø‹tûô»sš1'T 4HÈøa"QK7J³*2SìðfÞ9ŰŸñ7ªó¾Æ_« [u~­:ŽD½Úîƒ)í^IÉ @XzX×»a÷6þþÚ¿o§sÜ^ü lZMendstream endobj 538 0 obj 2419 endobj 542 0 obj <> stream xœÅ\Y“Çq¶_7ü ô4½6¦]÷!?I¤.ë‰Z‡"Lé æba èÿw™UÝÕÝ5;ct0l6rª²²òøòhüí F}PôOýï³WWÿúE²‡—÷Wüú ¿žŸ¾½úÛ•®ÿ£*ùá§7ô wÐzÌÞëÃÍ_¯t¥OiÌ6æCHyÌ!n^]}9üñúˆÍ¢Æ ß_ãÑcÒðóòÚe‡o®6„Ñ$7ü½6:y•‡{P«“ÖyxAï•×Ê[7¼­ô1¿åeL xýô&¥ìpGxgÃðŽÓ^ÜâÑzm\úËͿӂ_~'Yg$±þìæêWºß]AîcQ Üë+£!øéÍíÕ¯.ÄEŸ¾øÅUÊzt 4.ûò«ùM°XÙò¯Õí*lÚSX­ÜŒ?oÇ«ÂþO‘¬Q>͇˜ùÏf„ö/üÌo? ×ÁØòU{—ÊYçµ&ªfõJ5ËÍ;ú(åVßœ'ìOš¬v£·©HàO¤“.ÁL¾fYhíLXiÙÑ„4B‹–i,P’s- ÔqÌyx#ÞŠ¾æ½‚]½\%Û.¼ELë²¹Êføó°C6:Èû˜àøœ ~»ɒYomrXü~Ì!v4`ICÝŸ-o_/wËãíòøty|¹¬ðv—ànE[_Ì…ùöŽ¢¡„yâýÏ×tî<†ɼ+2UN‘¯8Îçþ èc†ÅyEzÚëé6˜º®èrž¨¡^ä©`ó1ÃaË{®j°†¸¹wb¹ºKJaÐ …)o=9²™TêÕöò™!I"ŸgÅj4è¯eg5i›ä£kDÖ[ï¹¥X𻵔“wš.ê?9ºp8Âhœ‡àû2¾+~ÚdÍ 5-/–,rÁ7r­<â§ ñýCY/%Ý¿.n:Â#çBႾ["JÇŸ]#Ìh20£q­"¼îÿ;"µ¤‹¾]~ö¼Æ/熯Hõàð4ɺĈ´Üœm£6oënÞ\&¬FÞ¬¥ˆ½’µ-Ç|±÷•!x’߈)ä}ÒUŽ–mµ`©%f¹´z|{Mªd T‘§Ú¸$Z·r¾{â¸g«­ 6ª½'grœv:z=ªÊ~Ž–5úᇱx}Ã`¯Z+5â&^ M‚€µ³ *‡¡yý@Ëxpá ß7ÀYÀëŸÑŠŠ Ù­¤~QaòåŒÐÏåۺ˲2Á>¶vZY‡8ì1…Çrp`"yrÍT3‰ø—aæ¤m!÷®”öd‹×hõœ³ÏuuÛ¬(åØà/@ÅoÞÓñÁ»6»¸÷h“pïíFt@$¾?cñScG§añ&MHRKÐD¾? Á   \½v~Tã^UFxÔÃÍ×C‚Ó•à _^• °ƒŒƒÓqxϪHš[…û% ÈŒ3¾(MLXosÒ¼á%€–±ÿP6´P\r\Äž²€ ¯È)@FŒÏyÇs –ãÔˆ•DŠ»Á*vV˜YhøÛöõݲåÂß^¨µðßüæê柿ßäBÆæ-:"G=¤*\™°ôÆd…3Nòû²F®C„,z ˆÄ709r¾Ò}ψUÈxö}ŒôS"ŠTÜŸ VõT–ôãë}7Ùð/±¼«òʅͬœv\5oë8®*UÀš/çò&¨ ä]Þ¾¼àš ¤˜`J“×#|k–“åù±ÁúçæÁû{BNcL¹Ýô/å˜vƒŒI°Ú›%dŠ‘M±Ûž˜dG g[°€­ù:˜£”R?ðа)P¡ÄIòæ¥6 r!YÅ`â^æ°^‘Ñ–1 è@¸@X<ߤe0 /EúMe2 šÀoÚÖr_ïÛÏ+2;Ï ­Ùø÷%Þ$­ yk»Æ¨ôÖ…žA‰G±®T‡‡ b¯à++d@©‹ï_íC¹®9e]„÷yøÇ]¼µó!íުЇûÂ"©xÒἨ§H'´¤žÓuL§qº³û¼+° qX/°«ü*kpÇ…3ÏOåÂ|XÀzÿFp$H䱿£¸V¬Û#­nWƒÑHÍ剄c¯XįÊVcB‚<ê÷K‰m"OdKlq~ ‡žÌÆhÉ[-øÑ_s툒pSXd¶pVíò^õ#ârNƒ7Ä >©%+ÜÂWšÞm¹{,mɰn‘‘·Íé¨uútÙeÅé<²ÙPN—ºwºD¥ÃétÀ®,ø/ &“G|ØS°¬Œ5ÝÈ&GR?CÕö¤ÐpWøØØ$ke„îÈc0`mnÉà`ò'?nÂî&ª9 0'ððbnÑMÎød2á§š…¬ÏÒá™gø—*ŠýÉPçSN껵¥¹>i¦P´©Pur¸Mæï•¢¨0%…>®½4¥Ê.ɰñ÷Uèl\H~”¿'«k1V7÷¢"¹áÃ1S ððŸ×7ÿµU¤cŽ cä&U4vI6qv2;gÃòbä`Œ‰Çll²¤^`‡+뫵N±Mh3*ªXñòï7Ê”üUK}®Š5ücga8b&å»›#ήjçÑÁgÿǾYmMÞ5?"¹®·öó-€Ô´»G¤L5¿y^ÓX€»ûR÷>þßV¸’€aSªÚí¦›»äH>@ß”`â˜ÌÎ`_ñƒòµ(ÿl_9kÁ}3é( IµÒWÁƒÂ¾w°ÇþÇY<“ߪ›¡, Vu—ÉÝI«³‘›XWÏ·5еŸycšŒ»_¾±ñ~¸ï vgd©ëbTÚ9 ó!SµÓœWÉâII¯,{ñ›M’U ‘oÁåÜÌaž¸O—Ÿ/gœÕž!¡éUM¡y}‚ùCRÖ€‚§îÅÙuÕºs ’?õ ;b¯dÐkŸ+hLŸ‚š¸µÞÿcµm:amÛõ/ aYÓ_•Uw”qÝE²> stream xœåËr·1g~BN{J-SÞ Þù»l§â8ËLå`§R)ÉŠõ2—’­J9ßžî0Ó˜v—OËNé lýîF7†ß¯Ä WÿåÿÏ^ýáaЫ§Û#š^ÉÕçã軣ïdþAdðÕG'¸Â¬¤¢µruòäHfx©õà_¹‡ÿŸ¼8úzýÕñóÆ ½~w C-½ ëOÙô³ãvnPÁ¬ÿŽÓJ+âz Ð"ø e\?Æya¥°Ú¬/Þ°ò ÚEy³§®BŒ°ËKœvë7Ó<‡¡¶R™ðÏ“?#=ŽÓ£„tDªN΂/ØD%p 冠­__\¦FD¯ÀΨL„Ã7ZÙ!¹þ#®„SŒ‡ ¶ñ„žôÑ‹°þ-âä¥È…uH•‚cpo«•²Ø:eÖçákÍús„ª„GÞàÎQH©ùÖ AíBë k Þf¤Œ ±Þ{\xñ8ã‚M´£ íh?ŸÖqTÈÖON޾<’  aõÃè†H7Œæ®^Y¥ô í8óüè«#2à¤N?›VY#†À¥ \0q@†€&ÁÀ2 z€¦™ ª,ÔÎ Æð`UL§MVҵж ?H·r€¶÷:™ÆY¢6$Þež²ù-›‡±•z £‡ 䔼eóÏ–[Òø"¥Q^²ù6þ–Á¼bó/:{j |°‘8´ ÕnýšA¼a;>bóœpŽñn£ÀÂLr!yú’mÃxÉÆçK$ þ¢ó)ƒù•ðyýŸ dTçQ3Gý•¥Ò±Xë¦B3` •ÝH¡LŒÓ°7X I£^3ñ¿a>êhÚ36ÆæLó;H/TÍyÁ)ÞÆ2ÒiQ¼Òáw!dcº¦EÐüÅRÁhþ„¯a#ü7kö‹oŽAÅD׬¸Š­šìàùÈÏZ ‘3ÝF-Çq‰½e³ÑFgeëqö‚Ísÿò¦#¡çÙÒ]ÿ—M?ìXúÛŽÃèYzÃÅÌ·l~@ ž{â¶@í5šeUÉ×V&d}À˜? — "Vm⨲Ð50Í Eî–4ÃÀûî4ãíRZ$¾ýyŠÞËJX;ñî_àññ|¹Ï¦RŽÏËZ K€¼æY£® ><$@B¯TÅÕ*fÀ®W1Zt;^ÒUÐCóKÕŒ×íy}ÇÆO;q‚+C¥1ë,h@0O;jËøz$?xm+ü¯¡=£fÔúTûmõ ˜öà"K~vt&¾/ÚsÖÑÑž„ñÔ•Û7×¶G ÇµöÙržàù>O–8 W’³%n|ÿ¼3»8LÅŠöT:çk¥ §öÜAÑ¢[rPp[WâîT#$CjeeÅZ®\Œ{Ù¼'ÑYX3¾¶d¼flÆEá–,Ÿ·wgÉŸuTø¯Ë|ŽÆ³ñÿ †L7C«‹TNcüQÒµñ^ÃùTR •­˜‚Àm…ÝŽ­˜è°xô+"϶¸'ïšÜ32ÜP¸“àjqWj<^'áÒ¢xC Mµ)à:í²þÄduö±ŠœX«¦7ÃüK^Äo2Ìlç¼ÕH–ÕóÄ\ØY½6*©™ 'X[" “þv*%?Nh#³Z¡T –ÂÛr Zis;­“5ˆÜ™¬Üø`x•ú gEÐn„¶QD”Jl>ÇiE‘ƒjáÑWÓOJI½>2‘`‰¸x“oÚ¥Ê;ÉßRµ^¸èùá§Çp¯”¦Æ¿:dsw$ȱIã„Ôëí%ûáƒã‘lĬ8V~ÐÞ‘ßѲנ³³‘Ä6^®ßž±òî^êìPÈ`G?UKaK#ðÇRÉH}†Wt¼ƒs~HÇ›’Ýå_¥uÀÑ”´ñó 0Á¯¿Ã=ŒÚ || 0bñRaâ‹ …ÄSÆÝžO¤¼;žyЂóœQJMÆ„S¾ Z¾}Íva ÄU«AÞn$!wžh˜dþØk ÁÅÓ®Û¨5¦¸ £8'ÍàT.Eš “Hp¸-i6J#+'zhË­s:¸=mC}~ =YVÃñÆYðŸ15*¯›"Aê1í’ ‘$è¥ÓE‚¤ ˜µšÎ Ha°Q®6kÃx“ÞZ–39Å®˜Ñ?Ы"f2Ÿ¹˜³9TVõÁ¸c²ui«þ:F-õ*÷÷èž\P+?D›!¸GŸnP0ø(…J«ˆ| 2£–C±ƒƒá–¯™+ ¥5_^ȲÎãÉHkëлàåŒRGŽ e9“¸¡O"k2FÃÍÞ¹«ð%@xiûåJAUp¸Ä£;‡h›½ê,S0#áW÷˲WËpV:JSq¨Ý•œÛÓ àU[sEÇLùìtŠl%3nŒŒ4fLÚVrº 0B }4‘EÅo72œÏ?‚Cà~D­a»X¨ÂI«ÜŽ€1âDBZø\-jñ„ºÔÎj™¯ Éú99q<3¶t¸¿=NÊ¡d\áSå ) $6Q©¢(ÿ ÆzÂYêè‚¢¬'Ͼœf·Óðr²eϦ!-ƒx®uÓ Àc' ‡ZòŒÈŠÁµ‡š”9N#"7'%g‹8Û¤J‘+(ø`¾$°ø`ª¬§râÅàl¥2-©Ï3¦·”¿¥ª…•©ÂUÇ¢Rt”žtþO)uÒªJá¦õiW+j49ú…ª gY`[a—5†N¨S/£ë\ÿ›ì"XoŠ]pÉFUŽºÒHí}6*«ÊÄ3R+@ÀÃhmNZ DÅkDããf¬ñÀL¯®„1Úlw/£Í{bs˜h•Eu¼&ÈqÇ\ÁÅÜÊ6c~)ý•ä/!»)|¬¯3#OYÔ}¼t&‚îò›RÏŠÁ%€ë$Ü·>ªîmÄ„ú†‡ŽAaá,ºõv×S”% ‹à8IOÒ¤»Âi¶L+Çiš¡µ}6åïÛ 6”#쓼d7Nç<¯‡Dqvž×w<ò2“÷@l">¿ª¢:"$¹Ó3xšÓ¼E¥f9“‚{ô’gAµÛåGâ„õ®[gÃb>&àz†Wòñµ×D† Rz¶N"Ȫ*fÏ2Ç6‹;wrn@d–$öñt›\Š—Ô')yªâäò…³Â©À×'( ÁqáU…4‚ú±&CÍCæ–sgém ¦#¥¦+Ýdj%Ï.ß®ît©Ë›‘A†â]½„€o™ÒU ‹V:Ù,V4<ððÅuÖ¯ï}½ˆMßð¾<Í¡g¨B6šl’)ô&B@+=)ÄeÊ×n˜;ªáKÕ²Smý‹zôv‹MØáeCݸNкžbìÆ’¯¯ë cÄÜKáÛW—òY‹Y蛉J ðE:î8+gÌc±"-ËÀr‘K­©¨tŽÑ ¨Q+¡‹bP~}[ÜZ yÛ¦Zt%+VÈ»c…¸{V(n‡Xí¨¤A{åýžƒèmä´ðx!M0·¦WµÊG ¼pÀ–½¼@þÿ¼¬8D-°ì^1·_+´·á>µâ6ŵµ"}y‚ýœ¸r¥p®­w”ºåVЇ6ß™öÐ*#œ§+‹‹¢uæ†E–ÕÌ3”V|O¢âo~MLŸº¨^çd9UUÑ…/UÜ™e€±øwª’e°Ä¡]ö}ÎÓ,ú`ߌ‰uY¤%„ž¦¯}¢‹ïS"CxÔ£NéKtôåý T`ï`ˆfÔ¯ý.I8eÉ%M‹î+h7- P¢|¾ÂH‘aydç°ÅèoBÆ=pztþ÷Ïéìò]PÍ2»Tƒ¿j€ýŒªvÓè×eŵ£ß•T¡¤Dï'f–H¬pn·%.b\ÃïHŸltáF6›9¶õ.†}™ö5üm¨Ö”Xí¸…M«Œ¢f6¡¡!È©R8™ý©þ”vÊÇê¢Qþ:ÖìwO:Ú„Ú;oÂÇD[ŸæŠµH¡,66Õš~·"•qÌ•”Ië¤îÏ9Ýõ³b)e†ª.Ž÷ŠúU羓t •&l¤†l¯ Ô/)h^¨¯!é׬áxZÚ˜ïÒoQRu;—[ZXäY,ïžnð‹N`\7S®[ Ú©!½æò V=fàIoûŠƒÌà £®*äÛD€Í–À¼÷q™ …´môÞßq<êíFbÊ.v÷=Y¢0Wôà‚·†_¥´5cOaŽÿ›ªZ›!ˆ8»ÒÝàÏÕzª7­F_éÙJµÕS%²vCóª ë\JÕ¬²ã+óûÕ[½Bu;<ÖòºZž4§ù‘†õãÔN{{ƒ7ZoêG‹WF8ê:YЯ(×ÿÀI°¹dÅi:¨'ö2‘¨Å¼.PžËf·gR€PO¦mµðkÄðÞ¼¢]C*vu7ñA^+]Ï¥¥¡Ú‰EÒçúõö˜‡¯ùœšuß´Ej³‹[öF{ì"ëÙÔ[ÕºöR+„V¦Ö:cñ›ÐÆ{Ò=ÕØÎQzÖ•×ÖS`}{lÁòàœ^ÂÐ)ïÔw¢OÊCgÕ QÄ.º>§ž.°Ê±«V½Úvèeå§^¸œ=Ro½gªr¤ùke‹‚ù¯•k ï5ª3)£¤gòERHè¥hÛçÄ‚!pZ¬Ä·…Ô ´`d²sï 3v¤øàªiæåœŸYc1á6£zÕ)+ò·hÃFâgôt•þÚŒ+„Î_lÍ+Œ°P4CªU3ŒJÑ*ø›Uœ O“ÓÜÑþ¹!’¨@®ÁÌÓ[”ƒÒu˜^%«bCÄûŠÈ­š/‡™ˆk™Iì*{¥”Òb¡PÔŒ_Ò;½"Ä٥ƤMÎ2"½‰î¹ÇÊ÷Mƒœ~¸¾ÿœ>%!¢¢…›Yœ%°‹âL 0¯ ÍYª—¡+ëã -ãìé7LBº³ör&ÚMúÐlüȲÛ-½ «À)`)ç®C2bT;€Â.ƒÁ✅›ŸD$âÇo;Ý|Ñ?öæÀGIä;ý•§Wvêîì#¥ ·Ôô«hS¿pÐæHŠ”Z³¹:ç¬]βvcSE©÷µÝ2j$/°‹¥¯ŽzJ°Í ¶ÿJ©]:kY%8"¸5‹Ü`et²ÄO'f¥*Ç>Pø ºUPùäVu-¼ OÒ” m%öøÚûƒ^@çN#6 >“ªÖtÍNÙLNð;^Dæÿ>9áÙuP`\Ñ4ÅTÏK¶½M¥ä< ’ö×Kîù ÐlN:Î;ðigÃýQûƒÃçÜÙÔíuº¤BXóOMfq(]‹¾/3ø™øÕ¾³Ôø"D"±7}gé&ŒM%BçË£ÿ,{»Iendstream endobj 554 0 obj 4129 endobj 559 0 obj <> stream xœí[Ks¹ ¾ÏOÈi’ÃV+ë¡ù~”¢T%•GU¶ö°^å”M¹dKòº"ÉòHvì¤òß²Ù$ÐÝ”f4#kó(La>€ »ûý’3±äñ_þÿõåâù ¯–on‰¼ËoÊèo‹÷ ‘ÿà™}ùÛã(¡—B°`ŒXŸ/Dæ÷žåÂÒúÀ‚uËãËÅ_ºïV0™3Vêîó •”ÒwèÉÚrÕ½=X)k™ôºûs$Ká Ý psA;‹tn7JwëÌïB÷mR#ò ðKïƒUÝUMÙîCJ- f¸€¡2Bjÿ×ã?ÅY¼ ÉS!.ëø–ðmdÖAr *¤e^×­o“©š'ã À< Êu€ÉWJæ¹è~%aí`ÆÄj\2O¸à¸ï~mrÂr ë9Ǹ’0MÔmÀU&3;kmw9,3FwßD¥Wœ5.„ÂÜØÀUb‡EˆÁ(­}ÈÜ)6§Õ¦õY¿‚ T¿öä¨aí0áú´ÊaSÑ£[¼øn! ~ù÷øõàМ»¼\hç4Ç”‹Å÷MÀs'àŒbÞeÀ½=(‚H€-ÌZßÉHÕ†Cä~×SyÝ]Âvðóê`î×Ò„î]å¾E?f}Z4ôTêUò¸Z¦¸%9#;5#çI/ªý˜|™|ëƒ70{ú!gÃU DÜSozåx1ç=M]S'D³¹æ{«Æì -ŸÓ¨Á? >+a+B”¡@ô)ýâµRðl+E¦ÄJáÁ÷šÛ¥ ~‹\¸4s>q¤d°[U®‚¹Š.°‹)‹t%¹¾4Õý±¹+ú¹"%„eAzP˲¦/RÇ}ùlúà¨ö³·ˆ~‚èWˆþÑ/ý ¿:XAцR=~·Ÿ*ß ]æÑϲz؈ŽâP3忯¦™å‰ÎL›Æ3Ó&þ™Óž¯½GØð¶â—Hâº%qX™ (  ‚ 6¦ã°ñK  ,¶AÙþ­å6‡ƒ ‚‡÷ˆåC#ð(8Jïýª1ía¥ßáÂâ±S‰ÿ؇Q.ˆýøÐr¦Ù؉ÎZ7œu‚è¯6HÔíXÜCÜFUQ§õb'F9½' BÃÆUïC¼˜OÙoBÉ–Èï~øÜ(p˜ÿÑ_6üv݈ÑëFé`&‡=9\½^5¸×S+ÓxÔÏ;\àHÂËÅ“6”bž]V¡?ë—(KùÇ’‰ûž:|_ù'3TàÜó‹†FLÏuWùèüÃúÃx/H& GECÂoš -à,µ§¢¡ƒRõÅ/f·Ùë)v&š™i‰è/§Àžì™¦V¡³Æ¼dƉÀg6è$±P t  ,„ôŒ“ÂåÌž #L(ôSàd\$Ï=›×m8H2ýýÿưð0VÐCPgh1‚¬b†£('öTŒ¸d6·†Igç&M¸ÁÊGÉ´|ý¸y‰Œoâ?ѽ~·1]QAДQQ°ã¥cã0Éi¹v$(µlðp¶—¹Œ>†·Ô“Çë™+<÷©¸Ÿ„MÜ™CãOrÁ‘bQ¹ˆö0 ¸Q>¾]pIµ›Ý> e<“*ü9ÊÛçußÄp‹÷A\ó?Rþï,aÿÐØ~q…ÀöuèÝiçÓ}󞇓@™Qˆ´8†„Ø@ŸÍ÷SÃÁF8BŠáeê ó–¾‚ö „_Í\¯OB·ÎÅ—ûî׈å¨jé{ºêþ¹‘ ‹sS‹sŠÃ¤‰¯(`F9»#²e|$ @;B”»³#‘ïÝúpG8sÌÄôɆð¨ûLw“ŠÜMâ`}Ú Û»š}Ús=v™Ýþê§B€@ÇŽrM@?fI®E9±c® @—ûá‘óy£¦­k¿4¸tòX£ã¶t7¸]ÂÎ:BtÜVö’ÎÐ^ ×þŠªÉ=ð>$ñ#6I÷}“Û¯ã¾jô·î›UfA«† ÐP R5¢œÛ±jhhša/Vœ3­Ý`ˆ!Ú Î ‰üy„DgÀë4ƒ¼ q¦/‰¹8·›¡¡Æ™àÃÑÒ }÷Œrz豪rÌ…Ù>(ÌÃ^³›Òk,­زY JHèü(m tœÆÊr;Êy¦¡O—N±BnÜú½¯ëg Ö{kÁΦô4~ÙÐ9s5™Æ ñ¿nðã‹>|ðÁcÒâ…¡[ŠfëOÌw€ „w Ç*0¢œW;,ƒ&Â/¥Ž/ÅçleÓ¥Mñ³†¿Îñò±ïp«ü¬œ¹'£{Šfÿ,ˆXô©E“hª–E‡Uë‘-1#±Î1+q¶øÛ%µÚSzKϤ”Žq`Qªÿ|\CûÒŠÓø Àe*3ïýN‚:w‡^Ò)>Œo_j‹—ItÔ(Ë8¨ɲ(vË2bco–253§ì™—qÓŠg^ƸçÀÌcäɬóz:žTáËcÔäÇÂGó¨Ùíµ®#Û@³JX Yåô~²J„x_’³ê_5’m««=dšâOxèÚ5ÆŸñп#þrO&<Þ½ÛÆêbO]Gµ§Øh¡»äØ×IÎìèë|®N™Jmcu±‡¬ÃŒ|m Õ2Ä×QNìèë|6ư,[X]ì!ë#_+øM_G9»£¯óõÎ`ýV{È:ìÈ×é™ ñu”“;ú:_‹ø‘dØÊ×Ų9òµŽ~I”äF_U.¢}ø’(»\¦< Iß. ”È5|Y=Qä8Ô …¿y(Û)cʨ%¨Ö~xèië‡u¦ ‹ç¾[üq²endstream endobj 560 0 obj 2633 endobj 564 0 obj <> stream xœí[Ks·N®ûrÚÊiÖ&a¼¥èW%®ŠíTl3—Ø)%’c¾´KKV¥òßÓx ¦{f°ÜWŠ)‚Ý@?>ô¼^r&–<þ+ÿ¿¸^|ñ½WË—›Eš^Šå×uôóâõB”x!_~y9ôRŒË“‹…(ôB)æ¬[ZX€ÿO®?v?¬Ža3§-WÝ» •pÂwFÓ—«ce-“^wÓRxÃC·jî"tçqžÁÒÝ:Ò;œß¦U¤³0{ äÒ‡«ÜÄ!Ì)Ûý2 Á •Rûžü%êc±>’+¦BÔêä 4ø6ë y\BZæ•qÝú>Iªyp2*Òié½°ù±’†y.º?FNØE;Ø1‘À2.‰'\pÜw¿‹29a¹u/j%a›¸¶QRšBl¬ÔÝY¤°ÌÝ})@+î¢mâÊ ¡ðÒY@e½÷Ýq"W ¼)Bií]»2®Ïó>Ö›¬{2T¯»ÝÏ>,*Ò1šõO'‹ï à—o€ Ç6´ã.¯FJÅ„©3W‹šx f+ÞŒbÞa¼)!´´Ä2/Ðø6Z]n¢/ò³*A,y@%*‡‡P!<ÕH&|J¨`u¿)3a(½©rý-Wıªš• ŠîåbÑh 6`4ßýº:6"^}Èx•P§ÏÑÐÍß ù ßç1”‹Žð^¢ñ ¢y†æïÐø¯ý“ažôsÉaÕ¨Õ‚ÄðÅ„½U…ƒ¬†¹ÀzÄa•ˆ¬]¨zFè± ÔG+E.} ‡qÀ (»lxà¾8Ï@D(° A6¼™ú«Üù 4븢d‹º§q…’4GÔOê-ž¨¦!ÕÄ H5È~‘+øƒØO8±NeûmuÞ!]®Ñüó) ÓüU¶H–-?Åj¿oXÏç(´œû³Bí44†ƒ {¦ƒØÐyæäö qÖÞš¿œÂçÍ{¥Æ¦ÀŠ›ûK¤yb ‡Ñ -é z¾@ª|1h~ÕЃç®;AHÞ4¢åz ?m«þÈ Ây†H^NÏö8^o1}5+uF ¶×>²˜ANh ä.^װן Ìp®¹¬ŠIž"Aɹ$Ô@Ô}d5et–îó9âü|z¹þ½“k²Õ‰§ =Pñ0â`aü‘gÂAd,ÿ\PÎÄ7ÛíÞ×½~WÓ’`’’ΫÝQæ¹§n¯ŒxÏÓéþiü’›Ù3Á43:Mre¾ Ã{„úê8ììÞs½33972ÙGž»Þ¹’CÁ]ÎŽl£"¯œ;l’[Z>Œ“ëÄE8šá2ðMÃÌ/⮂Á·’€8ñC£íäçI#‹— @–¿²8$¦nÓ_B^>ÁÆÁ€98/E¬aÒYRà7s() ªn§&™äì³¥ñq#I%$AIäü®±•÷™;*q–f©m‘0øoz3µíicþh{€,«®ö.+²éy ÑRyh8$Bdr‡‰–*ÈxK³s7}ŠÜ²iØÏ?kÐßMmÞ‡HšF!\â`ù1¡¿ogÏ4w­ã$g"çîi…“#‘S9h³Šœ™é0‘SÁR–ë­Ø¹›&àd‡ÿ§ñ‹†ŸQ¥ÎÞhŒŒ–gjžIl"-ð]>؈\ÄngÜÇ.2æ£ÓNi … HzX…@™¼&÷N•†¬ì):5ôc£31Z~¡÷m|“ G§÷Ã5¾Ï§N(´¦ŒÇ}ßR¦éÖÝÆÂýtɉ®7ã­à”i9&I'.};6/Ášš£ð¼±ÓýpS7s€KÒq°ÇZÇ2Þ øE¦p Äª4hôáën)¢W˜%ÐC(ŒfÞ"+d¦ƒAæ¥Þ÷dk¸ÃÈè’wþ¤Gñ{ÁCU7uŒ+œ»fª,ô¢W©²~îg2®·86ìv‹3 g„7Œ.)P£V?1ó8xyË”ƒí¸ÿË;àß ¶™j÷ÎvP¬è^Ì!½5,àÓ¹c8 JO;ÛÓ”™¦Q~ ‡'m¼N3’ìߢ "Ž¥^t2^ë ^¦ø ÄaÜèÒG*Lƒ˜ÞvaN‘둟ՔÞTr¿¦ÏNúÏशȃ4D ò‹ð±'B¨JLꑨ*ŸâÚ{H\¥!:(jdèСO@"G®@nó²t½MI_‘BŸ¦wS{ûCFa¢¦ÅSÿqôI¼8z;qÃøÓÜчÐÑ9ÆÏ}c=þ¸þ´¾wë¿}M_ÇŽ¿±ÎÊbuȱÓWMÒ´téU“—\mÕ¤$œúªé$J#epýK ú¢Êo_bÄ;ÿ v~©¤LÐË^*yɬ>Ô½T¿‡Ñ6„‡Ä+1“fV¢ÇP¿IŽñÖÓ¿9±Ô<Æ;_ŸèˆøÚK8[_ÂŒ9¡¡|n½kú5ºÐgëOF.¿kŠB¨åÿàYÓ‡4×øÍ7àÂñh ¸F ë,ŽùH_ž|³8ùì#„fÍ2>8_¼×[­“:æ6ðL{'*ñã^\;î‡è IWàÜXföݯ¤dv‡R Š“¢b£%º&q¾[üe>›Nendstream endobj 565 0 obj 3327 endobj 571 0 obj <> stream xœÍ[YoÇN^ ? O‹<ÍÆÞqßG°‘ÉÄ2óÙ0hR¢h‹Å¥,9Aþ{¾êžcµ$×H`««»«¾ºº{_®D+W‚þ)ÿ=½-OúèEh~CkòÒ ƒýbœo…V˜†d[¨ÊfïœkΈõ֚æSâÐF í¡’…”šsón;6!»EbáN¶9Ötó$ï j÷žÕíÞœ ãøRÙI­:>úòH aõúzo38ŒƒrW—GÆ{ÓBñåùÑW‹€‹v'à¬nƒ/€»X3%}ylšQ/Ó*CÀVšë¤—ÎB= ×(g¯5M¢£‹YÑÒx&+`D“Íe[kT†ž±ÀÙ®{ݰB5y3þ2èHë0ÒQ¡ŽB”­D®5\EƒbFª~:p ”«)ò*Yg}âBÃb@sö‘ÒµQ…•S¢B²}ÞËÈUÂú¶Ò´ø—”Õ“_äo-àáO}Kìºõ^R èÉOûsF?aôÛþ3©!LÇ’È/º…éŠü¬òº¼+›× ,/¦ Kße¨€¯qé7lè£ó}\±ïsÆ?ß}÷Pë1Ö£ ·x…”bñBúÖV£qR˜>ãâymhn¹d „ÓïŒÈÁÀ´eôÛ©‚ýbaì·Œ~]#clÓd€ýý½ Ы¶2IQm§n¼FÎä qî0Ži!ÓÕÎaÇOÇüº)ßð/ËMíEK†é€þ!}Zä:×HÆýõº¸‘“Í¿÷QÛ J‘®Æ­õ*´62µuã¤6[¥%¤ûVÆ‚ÛÓ…ÀõjXK‘ˆƒøé7Ñwh¨ßûXg•†l0HZ\C4Î…ÃhHö¶ëÿÈm}䶨*[üÿÁ€ó靈&nŽù™sûv9¢§_LÇNùÚl¤á©ál>ÔW<FWìû]ìQ„ÖÄŸ=󤩀Ä¿]Èé¨B 1Úýâçà øÀ=¨Ž­«S U™(€ÃóÍ?9úO¦˜áhžÐ¿] _/È<×'²µÿ+\óµß5¶SþÄÃåT¾¢¦PÊ#öƒR’ \j1UDþª"&óŠ˜=Œ+“½£0ÐÕBÝö'ø¹ª£gÊ¿ªŠ—0nÁèïå5ø‡¡æø9aZÞ.àÓ¿]à¿^yºWÚé^'Åöõt ‰§ÂL‡“.³v‘oà6øÑØNWû•-=x*ÐùQ´’¹¨ŠV4N?0Z„£!=¶FîSnS[sŸÀÕ{,äpÓ½Y£Î‹#o6Í,…¥—ÂÃ=q;Yèp»«Õ¢/8p9VÇÀÝ}=®*<êQ€èÇtàh\x`€ëÐ'L½ZȕԨŪn©f>gô›©=&rºnß(Ñ¥ vµ`É›‹MÒÓ TÏLºž/<É=(âÞ#ö¨ê(e‚“m¨¢3‡‰R& äšq²Ï©ÐEŸä˜MoÁöê–{ó ~&aW[ç Xâö»;B`â‰ðNãîAg€I/SãѽtÒ¸x˜ c¼k…×ûƒi;µñÎ ‹'Ã¥ÞövÉ~g )áéB*j@qµ s¹ÜI} ƒ–eed^kóE\¼4`zWЈ£¨‚ö­<ª¤qö@Q:vfN~94p,ª¼A]4è*C^h0œsqs½b#/÷È7ÜåO—p%–*‡ýü¶7De@;ò[C§L•ßZ(| ¿5¾•AOÍõrª»gýStóª`§Ïs™×ÓïI'¼—ò|3wOÖƒ˜åz ôVQèdEåV4ÎæÄhÕz]Üê?ƒîv¬º_Oµ7B—¤Ž¼B“DW9ö62´*껬º_Oµ9Òµ‘N¢/'ûà7r×Xz’UîÁå¡ZvØQöÓÀîSí¡rYŠñ¿Òm®C;ªòÝ5]ÅW—šùNKJ£\Óß W—š(Sb¼@¸|±Æ—ÆŸ¤cŒÎc\ë¬CÌnPát£ìEXÙ Ä›×I–w‘‹(«Iw¶'‰ÁaÔìlOÓU·³Zb²~±7lkåv7kd¹¼Í ÎºÛøYU#ì  ÍïŽÙMó[)¿:>©ÖB‹™þ§õõËœ&F5w×ûn?U~Å ÑÐq£{ˆ@ ß(Ù*G­½fø,Iè/é1ʆ•Gkù4 ŸÎ”‰ŽQŠ2Šv¥CÝ ^ÓÈçÕö²ÞfׇœjÙ3‹3{ÞÍÍAJRÑwÜ/•OY‚r« …sH}jIÆFFØ¢òØãu@šÁŠ ‚ÚÂ×™½–^ ¼bˆ­$‰Êš.D,.T¸gÀù‘̯Leý‚\'äÜ[ª¥Ìc[/j|Û:'â ßÓ(kPÍ™‰®žào5j?¶Ô¬Íª§¸ßXR•ƒ}¸òo˜wL£·O’ÈMÛ)ß×ìSå+Ôœò‡gsÊ×13Ùç°žå÷#&æaª5ÎŽbñF”D] IovΊJ¤j¶Y²3®ëÕ¦ÜfvDÀ€ó•–gBt “ÝÇÐk#Š­1[s…ûk¶×% XË'¸b_P9gA“ŠìÑZ¡+„¼¨{‚k¤HpuÀþõÈ€-S¼š‹q»é0®½ s ǧ²5ÄO7¬5ðîa-¦–/JâR©ÿÐÚ´Jìò¤ý=Òj[c‘¯¢l>é³ôë¼@ hqR†²mžßÛfôÌ "¬•}§à[ðÂWˆ¬õGò‚t¼®èÇÉfû¤rè:\¶á‹îäíÔk/$Û[ɸ¢WŒ e ¾‰þŠ# J6”Þ3FábZ¾Ô8 š¨.¨´ˆB=¨7õvø<ž Ôõr,,}n†v žŸ×ÃuOÜ¡ ±Ï í¨¶ 'Ÿx£+*è£0P-°åó“´`þ4L€=!§ZS­7¨„¡dÙ?˯4c¾0 ×Øü‚¨ >XÎV$2H°é©¢rÚ{ד%ì™|J§mG¶ ÅÁi–‡é+!™Û鮇+dR²*Êš|5Ly[äi—JP#¦#€´l%ËÃÕ€ ËUB’Q ­hª‘L6E G™²ù! .”@™7VñvŸ³šðùÙÑñï'p)¯¤´ãJDQÇ›/¸ÕÕø@_x!y:¼y,ÑVT±ÙѳŸ¾pûdÍÛ­Id¥Ã_Õׄ¼†\*–PÅH `6vІ|ôû,|±ø/)Ý¥säN`•¯èïÁù* ÜTé*U%^·_URi_™nF)’a«Ç•k–†•T††5ܜ߱/Ôt÷iý Þ†ücs_¨†ªìÛ÷Èû¾_˜TQßéêI¿¶ü.¶lC:2«³ )ÂÕ-ß|™öñ*:îj%þ8ÛÑLê-C@Ž ’D&KîÈÖi©HY)UdŽÜ³"§¥L¡—NótUOÝ㓌ë4¥Q¨0ªÓœ~ÚÜdETo”‘v%ªty7Zx!í}­ ²*Ú/mê:õÍPÍL£¼§¾fª½Í+”&.jŸí'qÃ¥v9O2‹Êó ‡s%«¼x‹?UlþñÂÅ,¬žçX(mË{Æ2ê[h}qì ]}[ÿ€Áô¦Ïå/éЩùrpA­Þ‘± xÒUHé ”˜.¤]CoPÿ|¼z¥@¡î»¯®gÎE¶uó<[žå½ÛPé8îëͬ¨é BN{lœŽ£‹õÆÓ»…TãlzDÊ3BÇn¡orûI¡`v_óKé︯ºÓyË6Ð÷ëÉqN»æËÚ耬Gç“Q1ÞÇœ¥\‡``D„ *½R‰éÅê¸ËÑ«Ùx;®UfU‡% Û+úQ ¨C:fí¸âèLZ¢Ë«¡×TŸ89{ô[ƒ”FE1²ÐžÌFïó¼_Êè3Õì®1û§è©E´nñøâ_ ßLõ,Ý4Lkñt`É–õŠyôùìÎxváòò/¸ŒŠv&ñ¥~v!p\dMØ»¤(^ée­T•© eýã 驯 ´•h¡bÀú§õ•ü9ê+TFÈgºžô›¡Ðh×ôT‚•RAS·öŒ5j£­¡H6jƒ»º> stream xœÝZ[o·nߊƒü‚>§bUàly¿(ÈC81’ÆH}hŠB–,[‰%;:’7H{¿!¹ÜáÙÝcÙ–ƒ6Ѓ¨Ñp8—o†Ã%¿_‹^®ý”ß'«?= zýd»Jäµ\^Gß­¾_Éò‡(ìë¿Ñ ³–²ÖÊõÑÙJ~©uï_»ûˆßG«t_l°˜7NèîÕ†ZzºOùü`£ëU0Ý߈¬d°"v[p‹àƒ”±{Lta¥°ÚtWÄï{Ìü"IQÞz vb„”K‚¦]w3Ã3 µ•Ê„}Fö8nº×‘¬::…_³‰Jåú ­ï®®“¦FD¯ÈhgT&bñV¶Bv¦™XÅx¬˜X Æ'õ¤^„î÷¤“—N˜‹yd•Â2$Ûj¥la¶N™î”8\o­é>'X%<ù†$G!¥æ¢³‚Ú…ºMb×0Þ¥Œ ±•]'^=Îë¸`³íÉQƒí¶ŸŽó¸ªÌFrë½£ÕW+ („õ+`Ã÷ ÆÁ¹ë‹•UJ÷ÒVʳÕ׋x‹v/Þ¬îƒ/x»ÏÝq•ðaÌè9èÒ6Q—Ò)r½Ñ¶÷ZÈü‡ ?¶“ÂÚ÷ð“L“Bï´z6²÷Q •'}—á-ðÚQßÖH >㣃 \ÛcF÷M—•öB›YEá6§ì€Î/s"Q0 ·v\CßCAµ6}4u5 £¬ô.ÈY£|¢Šðç_WGœZ#âÜÚ8é}~“ô ÕøENÇ]î¨ÒºÊô^ÄD"ñ¯4囃‰ƒœà³G€º²Äï­J˜à⎡Ę̂VGßN‚\0JÆÖ‰·hÍÅZ¬)E\ošI åmV—MŒð†Â,€Ñh^£” ûušÏÛ>J ,jì3‘ÀÂËZ ÏR .úÂ-v¬Žžáq;kjÊíÈ”³JEJó¸ÇPES‘s7¬-Î"˜QûÞøóhsaeˆì¾Íñi RÝ´ÉêÖsum:WicÐθY5D¡ÎÔþ¶äb±«®qq˜sLy¸F[Bˆò¡Îu‚´2VX?«6 #!Ov±²›!~»©Ñê·Q*PfPyV²”çÆýói‚”F¹nf ÇgºØc烀(Ñ› ô9•B€3037Í»5]:슪V¨S§c¼ nØHG~Œh—ÈØ‚«Tcº“W­”r6Çp¯›0Vãû·MÜ&Àƒ]tcc/£Îx÷ö<9XxmT*Ú¸}†F£KC0häѺh °©äÁœÒÔ¡IÔ“$+š!.õbì+^€¹£8œV’wv¹%d}O¡§¾GDƒ°ÝáÁÆÀ0çmwDNŽ2D(ð´CÍ'í¼ˆªœó¾í7O·5>´ô±‹l•9!ºÚéYÉÐï8^Çr'7[³©`)9WF¨$Ä CÏSpQ.|÷XÑø]çt«lƒ´Ø0Âå^2Ô[55­˜œ#äs-ýrtQñ@tÝ|&ëЛHz]*óÑR"ƒýšâ<©O’ýYÅxC>yMÞ;K-‹ÿ¥BBæ6Š_$g¢™AÝ.Õkp8Š-aÉßä">²™SǵjwÛmqh¨>LǾæ̆KÆs>J¼f&3òóq¡Ë¼Žq CY=¢šl¹±’Ñçm¸*ÄÚ\çY¶3¡!?eÖ4‰¨¨¾Tòd‡(ŽxYa•RàFÞd!é,U; kž·'¬„2-T ¨jâËSYƒU°ÿm¤é š€Ì¿”°^2ž7 f¸ÍÛöªPy°Ä/ŸÊ~Z{Ôxõžõ Žzà‰á© Ï@—x0 ÛˆbL•¸ÊDá1m˜$š…xÆ‹Ÿ4ÂüÓcÇ‚llØ^åæI>{#ª!y FŽ}Ëè[d¿´ÃŒ,Ëé‹/tT.?¨èŠï3žSF?gã—¤œ–C¢ñÄÙýã¸aR-hÃ%ž4ÄÑæ~¡¯™˜cF¿œÎý—ø¯x>a<÷hY‰Z¬»ŸF– ÊŠÆ3#@\„ (B'ƒã4ËèwC‘‰¨„z­ƒ‚³Ë‡Š,æ7ÌÄG ð:gtÿѾÇöjVãb×`ª£ŠÍ2(ÍŠï˜AƒíÔ¿‡’Bo™:OEÅÆ·Ìƒ:Î{x™@;4 `Â3V÷óȳÇÑÕ‡ëc 2Ý ž9šfÙ;™Õ=ÄeG¿dNáÆ_1úõ4õý¸ ¥8Z¼î?Œü€¹m&޼nñ8NøgêY⹿ s&Ž9têÇ ß"Ž5DMdm›0Ú„Þò„1…>4›×ÈÄdW®a¢ØD9"h–»#D(ƒrÞ"x&=gÑ8o£G› ÷²Ùù¦ÆWý×T$×r’Øx@p}ø&twD!ÜÛ®UñV'|x«©F½‹kA&p wd4KÞQU†ÝŠûÿŸÐx± žï›¯Øø ãy¾€†2_.L˜Y ñ  dSYT”8ÜòÊB³üÝTmÌÿLe9Y`¿X€ o»x·Ê3œÃíãásØžO鉟Ë9›êx8JN¦ºqù{!Ì×l‰õ[al„Oƒ:ß”(åé|ÆJTš¥î¦D)´OF¼¿5³+ 5'áÊÊÆ·<ޝõóþ~ctaãyÕæ²CÏ®˜›Ë¤;q³Ã×¾¿TþtÃOý˜ÿáÂNüc> šØHlû½û?EºÍÞ7/È5>»Qå14À³·,ˆiR¼› ZEçá_AyÃÅKùbʽ&… ïܸ6ܱ‰.}ùÒ,¸4)¼c†æoPé›§+ ú3‹Õí´kÌ -4!¢7¼¾¤I±9ÎŒL­èê†ôå\¶Gc0~ú(·ôÄÞFÒ§Û¥ìŠ|¯#êÝ{h*o›ò…2Ò–§F!hÝ\_ðë+öh¼ßi/›ÎÇK“öÎ*?Wо!Ÿ ¯žÚ%Ÿ6—MéjÊ›_ìj*˜>ªúúWt5¥w¯篦”¥J‘¯¦Œ|ÝÕÚ’ÞØöÞeé³yùÊžž"ñ ‡ÆÄåÜê«<) P—õ,Se‹× , ÛÌ$½»Û(#Tåî½OòUt€€¢d¦yÕxäU±€®«Þå’Èà,d¤Ü½$"ÙÊë}—Dd=RÜ׼åbfâšî†Nò ¦`Õä*q„â¹u|}ÜcAóÒm3,ÜÞÑ˶2ù˜b¼«É•ל_ë4éŸF–…|a64¡ä·“ôð0 Ðé»C#{þ°1Ú$dþý{Ÿµ.5ôX3Âkì)É<ºžåšÊ¸Ûx~ñV1=Îêæ*±åÎï/iî_÷uæ16·¸<ã8voÏv[L¶Ë÷¤m •<¨­¡ ÑØÚ…­/`–,Åg¡!›õ åÍŸ…j¥pb•뀞8x™»7:/ÔaUç«Õ oAXendstream endobj 579 0 obj 2642 endobj 583 0 obj <> stream xœí\ëo·•ÇîG¡A±.úiTäNù~$ÈMÚݶ‹6Ñ&À&AaKò£–mU7±ëÿ¾¿Crf9Ã+Yv»SyHž÷kôåNÐåßó'¿ù*èÝ“ÃIšÞÉÝçÑó“œÈòƒ(Ëw¿=£f'å­•»³Ç'²¬aŒÚÇ qŒÎïÎ^œ|7|}ºÇaÞ:e†·§j¥T¾ÌÓÆ =<;ÝkçFÌð?4­d°"¬Á)ãpIóÂJaµnÊz‡?'0Ê;L?ÄzBtzxICÌi7ü”†ÊHË\a¨­T&üpö_ô Ǥ„u¤g]à ¦Å&*áB¹1h뇛ÓUˆ^Ñ p=à&âð½Vv Bh'N1'¦%ãÓõ¤^„á—t'/0x/öùQh…c¶ªlYìsíp£µfø#­ÐF í‚…”š¯æܧåx„œ.eLˆeu¢ÍÅr§›Ëü‚¨u~{BÔôvxs±ìãWeo$´~qvò× ^»7'Àû˜™Ã8 w÷âÄxoF ~š¹:ùú(Ãy0†µ› g*3œ!l¨h”³ÃHØ5Az‡é½”BŒÆ _fr••ND7TÓ?+´1ЏÎaú ‚(ˆÝ®øêËÂåÁ/ÒPšàùl9eL¬¬ÍY:?l] ÃÌŸRë Q ÔÄ È[­¡ð³55Â쨧Åß;Æhã&l7Ѝ¢Ÿ–'Rƒ£ÀüÏ^ã¶`lðÐgI’4ªÀ -Æ ,—©À8qûraÔn‘¶ïO›ûEËes¹æö:€¶2o:Kb¤$¤üibu@9"€ÁÕáÁM"†ñ )‰è¼æUâ+¬OZ¡(Ÿ ¶â@q Lå ¶‚¥ÕE™¬¶=Ï6 øqyØðÛ´ J#AûÂË$eBfñ-÷-oFØJÚo˜I)òiv!>ý"³I ÖÈü‹¢PÓ™P–¥Û)'‡ïf ³,“̉ÝW¿/ƒ›']y­i6É« …;ðÍHOò*<…yÈŽ¼»Uê*ñ¶æÌò37Ã㤠ՒsBB,$AúkŒPÿLVA _#y¢¯²=’0Æ8p"3ØçlgšVÂ&Í:E¨]XÒt?ãpÍxƒó8{Í£¼$©ü«\—7§„ÿ½‚5ò^íö@VÏ¢Vñê^›@êaÐËi¿Ë³zx³Ø6¶©<Ù œú´€ysŠÓ´w56®žçµÑ†áðvÁ}¹x€aÚ`ð¦œibTŽÞ’8;IÄ5ŒH0³þHF›“*O¶—Cà§pª­Å+²rr3ŽxK°ýh¥€#d ¹¶ðgv.Ø­/:Úâ"/ ºÈ«µdy¤ê˜ÂŸØ±œtâP«’iuñ(lí’ÃÚ#X\ŠäÏx [N†ðã´Ò­¢L"s?¼lÐÒÆ#:‘|æ×Î OµªÈÕ&ƒ¦Z fœ¨Þª Âäì¯ý{òט1pÌ NÓâ4<*5ºP„Çê¼f’Aè‚é NøZ—qØš1¨­juv€æ  Q[ ‡z‰‹*ÈEfæŒD±Ú¼‘½€¦I±@ŽVè†N4 ÈÕÑkCt«ƒ…ÃóÓó1 jñѬ¬˜œñþUÞFhºõÎ×Yޱ†3=üw£Úka+¦§ã 2öc1“¶hðû:¾PÖ*ç;LåTˆ,À¨Tò :Ô†eáõE ˜t‰ÀÊ}_§i+ÁÌ›‡"jòš {Dºðèü‡³+…•T–ƒõÅÖ H6Â4ÖæpÉÌ ŽÖ&³Ìc€¢mîZ7Náƒvôkç$¤ ‚Ç-•È×\½eUŠóA×nÝÜOiÕú~t¸c_w4ý9cÄŽ£»’%y|xyð·òaÚſtß,å’ (gŽËMôæ¬úY"¡F ˜«[‘J$}ølÛF]fŒÃ ã¬X™[›;ëG{^ÀQ¦0öåÄɧÀ!\˜îág4Ø1Ìi|²Ì>M· ¦¾Æ¾vöJêÎU#Ýo†“ƒ ù=øï›lì9#•Ç…´±îÚâGÛC³2e¸ÍJk½ªe÷°Ž&‚p=‚l»cM¸cRJ/ùËw¾âÝ“}sµGrwéàzN¿e#åg5^ÀÊÚ°ÐÓå”®å¤+ûÐzesuÖ‹ÔÖ\BÃZ륀Ex³ikT.hí1c¢§§ ¡u•˜›’Oì²ð6Dí»L÷îaC$÷šƒ!%jý¦±2+]ÿ"±Mnä½òR3Š¡) å×Öo)~‡M‚t¢»³_·É·«Šé ˆ?wº^eªPûªb4Úè]Í¢lE…‡òÃTþhôtZNæ 3e%)ˆ‰Ÿu˜Ý¦rˆõÎÇõ;f‰ÞÉx´šzºHÍæwâ[2ê¡ïét.ÀÀ16ô‡üNmTS#L¯× Œ®ÊOUü…·S„}Ûwjè@/«ªCí°p§"ÝNÅáwi…1ö¢%î޼͕Ü*ˆÎé-|•Hà~9»TNE›Ð$3 *ÎäT/`\çB’×Û9SMê•jA„ïo*_Žbدƒ`e'—²UÐuƒKàú©ÓxÙdÚÃûSvÝ4,õ¢›VŦÚSOÇÙ‹ËèÈç ÏÕ/§¥>?ÒãÖq­]wnÃsZ­¹Èwµª àŸVZ¤({–†Ô”©P»½2£·ßÓÀ„Øí¤cê¹¹o¢ól–œ-Ø!iEÞ1»lŸ';ðû°YP¸–гœ\é§ÄiónÕ³‚Aʳ.\²®/Pî}.Ú©D…›LO®ë4Måå/Ř;5cÈíð(/dZî©XäÎ@d¥PÓ-¸"!]È!Yͳ?œý:—,–_n~¢U;…ÿKü&ûôtÏÕn.ãÂ׳¦ØDBëÜGƒ¯@åM[3¾Dƒ’z$ñŸ5’Q#1RáEª#l.ޱùmŠÄÓ±ø®Ã¿žýýVÍŽ ›©\aCxa±E ik‚ž6Õ„ T¬¶Ð5O­ï^=uø{¹{} zË”Á9v›0ÂDíY_ç.Ììû1l™§¾WŽä^.{†Pž]³|}C1Þ\ÝOÞ8BØ`¯£p}9©¡7ròE¦“Ú.ÿÆÔPfÞOO/×[õôÝY滔ӮТ1þgM`×ôÂÁ-¡˜°¼åMÏžIiäÕæ…(Ðên&L"Lz~jcç#‚P•sΑÊIU~¿ÒÆ©Û ¸Æ“H¬ÞtŸÚŒÑÚ×L;°ãÈ|Òú  ‚v'ê¨SVt ïG»ˆF®úØfSÉÐÆÓK‡²3¸u”¢ÍG†HYú{½qE›Úf„‘\žð3Ú F£}cKïmΘds•Ù«ê:Y†ì$-ÆÕ~7VE2ìÔÊç0 ·N½¶- ÐÕªIÂÒ$h³Å2IÝ´,s¤ÙÀÙQD×75 ¨è¢]xbo ]p2?UÌvi5šÆ‚ÒW ¦Ù° Ï‘¼&ôznd뀵*PG³øF&aî'j»›Š#–š¨–h£›¢á&ܯ „säÜ)fTÕ‰[kôDE82õÒÏOVb±ªÓÝÆ]2Æ„~1«þðc>ØÅwï‘‹¥NÒiUƒ}§lƒ¥àÃA& ž¥mTÁåÈäh&G@…ßð × RéÁz„–¡’îc5±œ"ðŠ\ʦ¬Ó?Émo¯Jr(ÌÖpcG@{]/Or€qÒw¦¯ïúš,% œ»cW^]êt´3 ßhĺ'ÏyÑÊ0ÍêÈ­lõ½¬P-Æ '²ÛùpÌ7‚ Wéqš å¨G§lb¼á7#¤)T Î^Fn{êh¼&ÆðÑÆ¥õ•'£)õÿþ#×D–VÎa$iލávWÆÈMù«æOáÁì«M¬‡Zê´ ±Çs–ʃ¹/ Œ¿ùN Q.jóó\U4Ѹw­n¦¥qðxV~•f‹åqÐv ¶· ½õøN1ý‡ nMóîܲ8þãŠ*Þx®6bOõ5rä§¼ßÿ‘ŠÉqkÇELïŽp‡çW5ÄmÉ=ÊðÒ*ª“þ?ÿ?ÃzK~N·Ãú0-¸4!Q£³wj¶ºSí…à·NÑ[ý¤ 6ŽÞiSZuµ_Êá|ÕTm¦·÷>ÍÛîiÌÅ9ë,oNL° ¥*®™;´çp‰T²½¼¢š¾Ž>¢Àû õ¤)'üðà+}ãÝð`1…ƒË‹a½|¼—*ÓµSš*,!MÏÏ«J[9°Í¾œý½rgJ¤öä< /ùÍéÜ3s½Ì²œ›v6 ŲÀÝŒA`M@çËìe;d­AiöÙ2d=>OÚƒÓðzY°zE3;· ˜ŠïÍ ¬}…¾S@."•Ý ÌhŠêæ™c¸7T˜ØLGÿRù‹ ×›KÈÉ}HçËìåæõMµ P“evl©ÒBx\adåSJxÑô\¿RXð.* w¾0ä"A½ãÆÚ$cücQL: §Þ¯ñ7C±æ¨„[ê¾Gó'IÜÞÎîr/É·ñQqÚÙj ¥x¯uÆ&k7E²©ø‘ì'9à£>«uwk†Ê—pÀòÓ¼ V«×»zì[ÊvÛN$ËòÏ©­TY¹TéK°wO´ßCß,wZ7V¯z4{ïÐX½ÊX·™¢8*;WîX¿ƒ&HÐf­Î$õmÕÊçž&ImTÓßãAûúïqL3¤®àš‚ÑiNØÑЪe†¾rwivÒ·ÓlÕ2³¬šw:GßåU°°î?­Zš®º $l¶Z©8¦pÃÓçz:«Ê³D )*âÍW-óÙüK6ÿ„Í_±y(+õSfnxwði\À§?àrÅæ/—ñšh3ZgV¨/(œÑj%Â…Šh´OêƒhhÈ% Ñ—ìÅÿ$ÁO†zü†Mÿ=òÀæ¯ÙüC6^#ÅJþÃç:äÿÑm 7”ØøG¶þrM:¾7­yÍæ³/Y~Plü Ý ÊB8ˆ^3MÑÓ±iú†¶FÂ}8&ZÇáWkˆi'ŸÏÖ¸üðÙof©Š KÍlFidYI8ísH }…«ïÅx×lþUGÀßvÂ+6~±f™„݇5Lâ¯+¦ý†­øÛyXßrÅ ç¦Ùø[ÃáTL+6˜ í¸Ìä­ØÂ5Ú‡þ|ˆ«´Oª.| íCi¡x?í󺣞oØü†@¦ùGl¼!„)IíGGvù~dŸ Z1‚jd_F?ÉÉžþŽL¨=…yU½¬š}-Âî›”Z5ýe±…•æ}‚>.‘|_™9‚õ>!¦¼‚ÞtîZ'†[šÅ‡X…Ó s=ùr¦}–endstream endobj 584 0 obj 4647 endobj 591 0 obj <> stream xœÍÙn%ÅUyµP> O7/èpSû™HDÊ Hò@¢hÆË0à™1ö0 ù÷œS[Ÿª®ºîëEQ4MùTõÙ·:}¿Û°‰oþ/ý{òüàýÏÜ<½>˾ù¸<}{ðÝOÿÁøæwǸCm8Ÿ¼Ö|s|~À<—r²ÆnŒó“‡Ÿ|µýâð^f•arûã!š4ÛïçGpRs¡Ü?ÿ‚ôJ`r’©:> >E`åÃ#„™œÔv{õ*`ª˜· ì”pNyxù‘zrŒo?Âðeáޱ=n½enû+ÄÉrà û*¯Á³µB'`m„Úž"„™´VÛ¨byƒ'{ƹ¤GG¥qÎm¸âuBJ)çë³ËÆ«³øãt¤=0*Ó.öÓyE•ЈlýýñÁgTÁmÞ€nØ)è†2ÀÜÍó-„œ¸.+_ õÍëú¦åälÒ·?Qv\ý%ƒg²….¸ß ¢ £‚ÔPê³Ð¿ ªê”žIQ €H‰±~r€·Vlr@è3Ë »èh^Y±|â¼!äº`°½ Þ8”8­žÌg ’VóK²É‚:fÒž;’ÎB2ª W–)}Ô…3Å4Z‚pß-”fðÂ'‡G «Šqµ}yO´ö5>(¥dÞãA™žpÞiÅMu²¨œôÍ·—óÛ^TøÌgœÆ÷h0µ‹y#¥žý^YïÊŸ+7æjÈ, µ‘Ƀ¾hTŠÛKNôu-y"î—ó#RÈ•¥O~4¬¾èÂ>ŸŸ5ºO‡I+$ï)ŒÙ 9qB8^ h®Ht$ÈA083 08¤sð‡5:wI­¥m”±R ••š`âüØ#áÄdŒÜq…êê#•IQx8ªAÛ—†Õ÷¢¯º"8½XlP5³ïïj›ƒ`´ÃÝpÏÑ×o (DGã•…ÊÊmÿcIò´ó|r4ÉË+è²ÊO±Ï#PYuC€} 4¯ÌPy£åzÒŠždЗ˜¹¬3®›\ZÈ÷Œ‡Ã!—÷ÉS^Ä´b—CSRpPÍ!Õ±PI«ßÅgÐ uȼþ¸ÞYžŸø—dýy¾&0ÎëKY~æÌœ¹“P£²À]#ï…ƒ†C¬q‘ƒg„ƒ?$®‘ ,.S6¼&¤™À-ß>ÂGðØPtœHwþc[3ÿápovNU N¬ÊÜSè*©Bâ.~O å’÷²ËÎBØ¿È:UÉL ýù@=/‘Ñ >Ÿb]\dçIVý$Ç%~I /–§„ç'Ë÷øë¥tf@ñ¥¦B5ãd`Z”7çæ|¤=kÔ­§aá?ÖiXQžJçxm°˜Ärj°¸ËÞ“ÁJ£o°·Ö0*½à.EHŸ›åN¼Ú›……;Smm¤PÿL–)î÷d¤ÜM˜ ¾OXõþ*ŸœYmfÔ‰‹hr50ÊñæÕàÌVq¼0³’¨”².9 ª´¸ËÝ“Ò2¨ÍuRÚsÂÚ—5ORœ®ŒúÙ€ gË­Œ9}vxŲ> üܺB@Ê­_ ^Ú¹µöHÛ_“ÕLdÒûRu¶À8¶©³¼{øûž Ê Þ%ëï6çUÄÖè﬚•F»Êc(§ÜäˆÇ»ä=†w2k8ÜC^]‡õìP{rY%;:[IⱋÞÁý¤‡}8zUãÖUÔU~–D%@Y»ËÔ$‰´Ò¦{‘xkÜNiœw'çX\äPzGLÞï꼯‚*´=Ü‘½án™í”l|6_'=qæô„ }W%½eŠ—ÏÒ{ª¯ž—L ÚM/±:L v4dšlrIŽõõ(žÝ½PÂ[ëÚ %œÐ^(Y ÆPŒã¶tiÅ ìnÚ-Ž[AfüÉÁñ;_m%ý[«Fx͈—_V8ü©3©‚.MÊÞï|ËÞ$à8¦ùf;2$©¾$‹4Aµ×•è^’¦Jï'-Mí"Mm;„T|€h EŠóY}®tÄï»5_¡"ˆ5#ÚGΠA]Zæ[uÑÉÕrºè„4ùø›%oÞö{Ý»€ÜÁ[ÇÎÒ-¡Ï#œvÞw‘æ<3·@†7È4ƒ¤…®qù忤ÖöðÇ–³`2«ßÃa.š{Ü›1#DΙ®5‚89ãæá—7"¾4®Èt §¹Èàbrf¾Q82ÔÝÈè:#¶oÔñ¯;.ì3 é£jÏÑ­oAv+±Õ<`¾ÕvAóTM)I§±»î–½¡Yén*•SPù³}æ ñXfu“-âôÃÙ$:XR m=w“xkP"Änµsb&"/FˆÐôKšÂ&vÎHôêÏh]v•BHŸµm´M»…¶A$Ú=g4Ut}-v³²•-K•ÑX—P¡]GžrU“ýC™æ©òv «É®k2à¸ÌXó¬cxSÉZB:¾&U1r0Üøzn¬öÏØ=o0zQŒŠHA¡Rå®IB÷î…T‘Éjd²3Úkížù}[ iðgöA‡óú* uÏRcÖÈuörµ²ÌÅ•k\ãne…:\@}P{Æå$iÙCNx»s Ncc¯õ3]vѸŠifOèž„2.MQզᨈ®þ>fw«jš˜@5–ˆwFV"§öN6^c·Á ³0©ÄE$09Nojü2Ä4¦³+dXQåA*¼ºði {ãáµÂf¾q¢\Ì«d¬— û^w[ó„/…%3餣pÒÅál>á|^{ÖãXCɪ¡Ör@®ð2uBÏäë*°ÒXd9{dƒ t¯äS¤´Q[„?YPò‘yU|¡ïN÷–XéEâÍ’`Þ¶£n×c [úñ&®';p`¸­¼Y°¿íÒ Ë!ãó¡y†ŒEÛ^ÃwrÚ¬ lH3¹Î©í¿«&L¿—ó2‚+Çë·ôÝ>vnµ¾9ΙÉê*¶Û!hÆÂðB3¾ÔçìWºX¨^TËÝ\;øu‰ô7LK‡Cî2-MR¿€ R"ÝQͪ³’FÊ+›Ä!é ‹Ý!iH¦s¹XùEkêÁ/]Ÿ%ÏïÆoˆP€\ÛôAfjå$ï6=6(ùe-Òx¿R‘ZãYŒ.ßn¿é¦¾_öÁvcÓŒ£WL4è¤ùqg]É[óã^í5?¾ìµ-“6ÍÌÓ(Í©Së¨3uf1ì¦2º>7óÆïê½#Œ·Ƹªálü.ƒAœù¾ê—¦ƒKCCóÞ6`Ù]]ú°ÑàP9áNCKdw$n=ÎÙùœHEob]¸'­ëݺ8F,»A«8…sø[]¹„ÜeÿV:¾Ò¹¶J½÷ï:Ê>¼R` ¦^oÿ~è8hLÆTxŒ Á:¼ÓÄ 0P`UToS”6LP1iVvRö‹¯ „dzˆNÔMêóuÄ@9Ñê<©${ÂêFJ¼®Ó¶d`ávšƒþõ½¤ ’¡Û@¾°qX[Ï¢ú‹É˲‚ U8¡ì¢›éÄo§ÚÏÇŸ÷I+ð+÷¥[D΃"ø²ýc‰ÜÝp‰Ÿ1%‡á²i€‚ç…“¡×Ý)"]z÷×W”R•9.‹Í`•ë~LÙ%R|>+ØÍÜx-÷Žàދŵ ~îcÜÚR"ð ê»ú;¹ÀW— OFžk)áËeqPß:`…wjƒ|Dt2ÂPk_’ÃoÑÝBú,³©¨uÚªA§!Æ"¸”Þëš’Y©àz;~*€ ‚ ¶ú@vÚT,Óì ˜,ç}ºíhàD$ûC ^Ñn[µ·*Z7n™÷Øá@d  Y;7¿fW¡É,Žû”»»¤¬+è ¼ó[¸gºþ[œ^ˆµUg“Ç»–]UvØÝ\¨DŸ$¥d¾ŠÆÏµ ¤—¾škÊ Êü#É„lØ®å>¦zñǰ?»ë{βü3¬¾Ÿk'Øó8§ƒçô›Ã³ŽÌðãæ™ó•Àë³4„W“§‚Æ]ÊÜx$ê¿óÇŸ/jñ䟠RxDÀ9Yÿ°|TI¡C óT>€ÈåFüì‡î|—ì\~ÚñZõµÆÌøJ^ªú Î5ƒ˜O¤#ð§­îhk„[ V}¢1 ŽÈ»H.ÿúÞ,ÁâœÁ“C\ Î9­ìÿ;|R`.Ä7´ ÓÖ g;‡V%ŽÏþ\/ endstream endobj 592 0 obj 4425 endobj 596 0 obj <> stream xœí\K·F®ó‚&>½¶–fñMÈ I8üØø†´yí]=v¤8†‘ÿž*v³»ØlÎöhÇ>>hDUßWÅ*’­×[)`+é¿áÏóÛ͇_½}¾Û¤æ-l?}¿y½á/rß~|F=Ì@Dka{vµA>µ[¢ˆÎoÏn7ÿê¾<9ÅɼuÊt?žàO­” Ý_úfã¤î®ONµsBÓý“š+c·Ci|ˆÝ%µK ÒjÓÝ ò>vŸ¦a”wØüåUÑéîýÄ6íº·é§2`¹À þÔ” ÿ>û;)ä¸BJj¡#©uv*|JÂ&*épåDÐÖwwoÒRŒ^‘¸<ƒƒ›ˆ“ŸjeEÐý‰zâ,ÆãŒI‡ñiyࣗ¡û-­Éƒ“õÅ~^H­pÛ¢©ì ìsÝI8a­é>! m@jÆ¡‘£Ð\š/ð4‰£eLˆƒtÂæbZÓÝe¯AÔº×=*ëŽÞ]LýøR™ŽdÖ?Ÿm>ßr!lØ ÝEOãиÛÛñÞ4|n¹Ù|¹12 ÷|ú⯛A‰2&Ú¾×Øâ4ެS¯‰ºM†%‚Õ'ß:úÓ„Ýõ–UÒ$lú­%Rí–µ?cí/Y;m%btÅ0_w ­÷XßûÍÛ¿>aOÿc´êh 4¢B˜Æf ÑhÚJ 7#õ3á8fÄ V½o˜þ\Í7d"-<{’xÉ$îXû-kÊ~ß0û|ÃÚÿÃ~_2™sšÎÜ=¡ŸFX5®€Ã˜¤ïjØ÷® 㛜«’„®ñEU£#É)ø°{X1â]ðÄ–žn#xa O§~ð0OWY¡pp‡É\èI!j#% ­ Éý•ÇÈVX€¶ Ü_­ KÐV3¼lŒZ@ ó%h×;ÿ`<”Îo½×¸ó§~î8ÎogçÆ\X1mÎÇ€ÅWt€»¯jäišëšDI¦µÿ^”‹å_Ö\I¿¯˜ÌU á¯êÉR‡GkBÅ:àGH *¸™;„ãþú©ãìäÖyqpð«vj7Ÿ-”D8LoXûeÝUb}ÂHÃI »¨h†;ýó¤uîXš ?Û`Þ4¢P¶‚‡î÷¬9«…9ê¡j]6–Ìù|Ïò)9†¥å7²'b´Ý¬ýƒÖø?­âðÈ΂Õj¼L0XÓrS?ÿÀàåƒ07)«›º‘öi'i+ÃÎo 0Þo$(ûXØ28%®ƒÞ•k[$뺠3BQ@ègAGcQè9^C·£à¥ƒÐ2ìÅë¼E•C^5~?Jc~ÀvÅqŸç±´åçëÀ˰ÌÑ,°,•åà¥nñ8à)Ü8Üàl× ¥« <²zv™;Üdv¼F”•Óà`ø$#ÿ®9FUF\4ˆÁëýV©ÁïÍAéT ÝýqR XÄ9YÅ‹ò’)±$†´RÎ ê¦äÔ¨†Á©šx±gÑy9…º$³‰Xñè‚Ì©ÛÃÈL'Ÿ6݈èË#óšö¶fS6®Y狚eU)ÉÇ|Uÿ®¼e!ótÄdÔC¼îɽ^·Tâì¯d'KðK~ï*uêfŽÃO$.~àçÿÖðs\N¡…™ñÓaÆn8?ûn ¶Cvn•ßúEë)Õ˜YÚ éoK%ìí¬y¶Æb%©â!KîSh`gV6+%Å—Œ„nƲ:Kå› ”Ýdä–uêG»ï ×&$2=©ÿ7ºoÁ²:*rZƒîƒ.˜Â/µé¾Mö0Ê‘ktÁbSäúd¼e»c"ÃØ¸ó톮N¢Ëò ¦WYÆu?œ( q±ŸÒo\·Cl6àË‹©sö›M•.£œÕ@—-p÷‘‹ªI#í¨ZŽWýÕŸæ9 m0(ø¬™‰h5.ÂGŠncÏ«¾ÕÏ×Ç-Õï‚-– ˜‡eˆÁ íbĘ5\‚êœmA²ã¦x„ëÒ9p¢mON£-¦Æ[Í4!:”…AÉ`½YÂ82 {šÇ=%“*Ÿ.Ò&˜¤,ê„›àåß2> Äçb–`&|Á:¦›Rôï ZÕAl{ÁXó¼¿n¥ÛÑÈ ûc QÜ}•Dåý6 §%•$dƒ/hi˜¾`¦@3âj©ΨèÑpt€{Øh8ÌÆuoÝy˜@+¬‹·Â`ë>-ìW=Ì$uÙËZv¡îzìq'¹8æ‘“x÷›“³ïê!-z!ò.™n’ZgqÕÈI¤¼ÊÂý¾_¬Wï[ïï’8Œ¯‹†$—ð€1“Ž%Ô`üïdÞÙ°8…ÅÑO‹N˜„n•5°?‘Öƒ[Ô}DFˆé €³)Lo2i§…@wï!w|™¸PPfñ@ÓM$•û…1ÚÐñòÞ@>cÍÀ4þ¦Á0þ’øiÉnÐüuGã9éeƒ /1ªt®UÏIa†ïðšt!šìý°åQö­öÓçvO‹Ò_ÞcžÖíy®}«zø#ö‰nsš¤G¯8)©i—RX)BÉ…o’>«Ñ­‚Õi«§fç ¨ù¦³ð I)Gü°Œ/€‚Ùî"‹Ÿ"VP?¤XA̰ûùõc±0Ñ*Pö¥«AðT‹qL©ŸrEÍ8I£«’à±Pœ©_8?À{:*ØË…çÛܫ쒷¯z¡6©X˜&ÌŒjCú,ê¶4>Nü—°xè§ 5eÖß1‘'ŒŒ²äß¶s馧E=?÷¤ê=có«¿y:”³?¾ž£UVœ ôŒýFÓa úŲx—&СDýåÕJš/|¥°¤ûöžÔá»`xœºÇ¥F»öŽ3—Rô·p)êgèRÙºé3FØû©?à;Kë³~Ö …=_§‹M\ø|¶ÚÎÞgí ÏØ«¼°õŒ}B£í ÌÌŒÿ€‰œ)ø¯¨d=ÿHâö"´pdX}»w=†®'éCT܈‹ò­ÆZTÈµŠ¥ã„5WÅgkâæ×eg‹F6ä6dbE>éI‡ ÀNºs õ;ì±­ÂŒA[½Å¡MðƒwûévŠÇ\IÏ7ÿìÚymendstream endobj 597 0 obj 3614 endobj 601 0 obj <> stream xœ½[[sG†×­üЇ}œïÐ÷ )?„‰!$Eœ…œPåHJìØ’l­ÇTñßùNwÏÌ鹬wc›òƒG­Ó§ÏýÖ­WkÑʵ åÿ³ËÕ½þa¿JËk¹þ¼ÿz¾zµ’åQÀ×Úѳ–²ÖÊõîû•,ðRëÖ;¿v!¶ÿï.W›¯7[æºy³Á§–^†æS¶ül³Õε*˜æ´¬d°"6{@‹àƒ”±¹ ua¥°Ú47ï[ìü"aQÞaõ ÀUˆX®èkÚ5wÃ'xOm¥2áÛÝ_‰ÇùQB·:W»sp𛨡P® Úúææ6QjDôŠuF…`"ßjeÛ dó íÄ)ÆãÄ4>‘'}ô"4¿!š¼t€]ì#®Ž!ÜV+e °uÊ4çáZkMó9A€+áI6„9 )5G Ô.„Ðl¸ó¶eLˆ5î~ãÍE>Ç›yO‚êx×àý|ØÇIe<’XìV_­$L!¬_¯`¾M¶a„»¾\Y¥t+m¿òbõõÊ@ÇÎæôè3Ú[l2ÑæMÝ‚ÃQ§=ƒÝ.Zk˜³V:^¹vV·Ák=gr½ÎßR€åïÙúž}·ìûƒ¿Z€¿`07lý–}Ó°ÎÙ†k¶>CP‚i§‡¥ï«œÕaßlØ÷6[+´'³bg[¤úÅb¹XãO˜l·Kââx~^"HL¹ÌXï ¿èm¶7?˜¨Dxaöׯ0ìlR[ÑFÃŒ”v™ðNFªÂ)0­²‘/ÝÌãaéæï㥛qVÒ•m(" ©æÇ%˜ê‡‡#¨£—t¥ "êNúˆ×­á1q ÑõýÄ eà%fŒDd¥i-B1_~EË”esŸ>-‚¾;*Ø<Ë;…¢ýêýá®ô;†äòEsã9{‹ëäh1ÕÕÛ\§WÓ^¯‡N5Â)$¦+ÚeßÍuz]IÑZ­§ºzÅ»cëO\K‹‡â™X? ÅçËéw‚?9\Ï0SyTÚqœ–zTz³•GÙ(}k¹GÑ.™5Ùí€*ܲҷõ©Ÿé;írï¦o »¶A¶Î}ÿ÷îr*.\ͽSÀϸO»Ô»ÅÀ­R‹rôW4+aÚ{r*.T-g ™À.+&|¨5ÖU¸}Ï}ªÛ…ê/°º­[9Žÿhu «Â~î tÎÂåún {„”F•JÞXa}ªä û|³!#°.e ¯mô:û²4^ YxʰÁ1Uqµny(«¼ÉXL8áß{Â[‡¨}=ìü>¯¢Á'ƒÊSvøUKø YÂ˦/B ¨r£´¬Älmëä”è(\îfÑ~ô*Òä-Nî!D[°Á¨è×[JWaÚDÄX´ÔyS­MÓ¢õÝð•Ê[r¤ÊŒ•“ô«]Ö².+& Fo /hŠ88¢Š‹pÒÞüz³ûqŠRCäG‡ò–Ú‰ÖoŽh¤`h¢?>ÇÌŠ\}ˆÜ¤’„¼ùmþtF¨¹ƒ¤j­€tÊÆbJ)¤ÜAÅ̤¯²D©šïðé[#¤¬Ôs¯à&P’I6æ Ü’*øºqDw磋•›ŒŒ1…gÜ@¬NÄöÇ3vö zãDlR}¡;¿j x8ÉŒë¦c}$ú-uî.Y/l>šE¾2ñXvªÐ¨’PsHN:Lêו²‡võF¬šØj´õˤ'åt§·4'X /?mX2GÈC²¯Ba:ÇKÓ…‘R…+®ØIÅñÓØ(»Ó‹ÈOIrãÈ™x€Þ[ä$­I8ÁŽR… ÀqOÞ6û;¶ïrC¶EU«ñ¾sãÊ‘žLxdâK¶üŸúîmxÐÛv‡dûµ%ú¾Þ@ôÚ»Tñ) AÀ ¸i>IN:˜ iÉÍAyê¼îA_gkT³™µ+m­;nÌ>š÷À!€Q#תA"‚"5uu$z547]&Ê[f.‹Î7Ø|><ÀÎ_Cµ§ ‚á8#) Æ ßq²þu‡ :<Æ7Ä´O0ef9ŠkÀ= "T ÌhšÚ&iT(ì(Ep7NF«l‹ÌÞí¨!íß9Þ"Ñ4|ž49êj9[¥,g ¦*€ý&Ûr9»ŽÅó]WŠTcXÚDzùß“¬ÒĸKÐŽW. JxÔ±†æTLÒ&²C+LÓߪ‘®w[í~÷¸ÑüwÓšÆ+»VøYâ ú9ôà%6ëÔ9¸×Ù¢Ÿo µñÁLÑ‚ÃäŽs±€|¶ºÂ(åûªãŸ›”£Œ ³%JêûRhZ¹,…v=…s¸Q1/«:K£q0¼Úãˆy6òhpÅäàbø(FªkÃb’úhê¾7©iÃ)îO™Ôq,qœo.fSÖR6y6Fµ‡eiŪëVi Á–—ˆù›^ Éu¥¥‰Ó¸Œâ†›r% q‹*Lê%•2Ë(Ä;b-}*_uk ]PaéèHÅÂ@w³¿]ˆÎ—>XÇ;säD !¬SXGöNaD©nÔôç…¼0%ÊP~Ñyž¤žËôLH…Ùͧ†~QˆÖ¶ŠOU±•R‘ÓmP¦‹Ó^%+櫓ZDërr)ØF…þ´N–ÄÝ.i…Ð*õTé¢Ëéí[ʹ¤Õ”Ó¢˜D.j䌓Jc.ãš.E•3)(º3‹0¨'—ˆ!W½åó;úDÅ ºV÷ÃçíðÙŸgÃçËÃË~u¶V4–èSmÛsR®GÍZ"yJk 2§i„jÕ#o¤=†¨"]׿ýÆ“BÝf+¥PRói¾& >ªÏ@Ñ5Õòm_3åÀá T9£ðÐP¹e,à¹(°Áæ8MÏWË1cÔû‚:ÄfŽ*Õ!(«¬Ë¨PÓôrz˜fY«$a’ G:7.²Ä ì1FY^À]+"Í^ x2Ií]—ßݤ2OFÙ_³F¤Ï«“íñ”[KêD•dœJê„•¢ ]oÉ‹•Q:I„&œ´)´7AÌÍ/KhYDšY4»§¤*§ ÎN$ð/S² BÇN;)];£öÞõJS¡doeÀaµ|–/þ ÷YÛ‚:™ í´öîKŠy0IY/_ G&²&¸Y§Ð†ª”Е‹I¦$š*>-ÜY/Õ“ö DÓxTšNõÒ„‚¥ÖG/U( Ùæ,S[O(x‰¹07ªP̦bÎÍé U>!_Õ<®"Lq“Å>ú¬|Üüpâ,Y£â…²×ZQ-ó0™eI_•©ýTýØ'/ ‡J[øm¶9<ø¾¥ñöüÔ©*ؘXG%­@èôxLB«¡ùri25×IÚ-æb£›Bçjñ„¢—\ûÂ|ôKC“‹ÎZUWB޼Œ¿é[Ô\·Ù*ÄÔTP~âè\Y2øYÅÅÔ|Sú§Jˆ"+RÆ'ûlÉ& ºáÌhþ‡vOº¥»ŠýuÆ€ørÐP‚»äûßÇÕ¶öúàÜܶN©\“àHß—¨JœŸB.h’R ¹h»Br2ž™ªÆRÀžkPÂ4ïõþ0;Žßt#èÔìEJG•Æ>SLöQC°s'¢G§;ŽmµiÔâ‘ÝiYU÷LtŒ£R(§"b4Q®·èÄ´G±|¼3¦Ù`ÔJèî ª¿¨‚ËÃÁ ºjoâ©ÕruO*ÓjáýW¹.vÁÚÙá$½¥ ‡.àrC£G ž’ pÃ`µiËïS¯lˆ‰ ϵN#E_jöWÎŒì oï‘«]I J˜àfEQT9TÁ•èž§à³BG¡ 8Æ6}<ê*G•±-k‰ù2õ–Å ÛÁ†ØêøöaÏ$ù$3¡kÞr‘2Î<“AÓdB— ÷,ràB½‡†&œ tº?YèÐÕa¡Oæ¬F†‘Èï×F3+ººï…þ´oqf¯à¥@LîÛJ•$¨`Öf–s|ªhâÐ+ŸÎqí¡ä–GÉ ò›?ެn$GÏ ¢:^² x ohˆmeÒ›Iþ¬a2y7˜ô}êòêz׈ʮ¶J»Ö‘ï*숅·é”0Ù3Kq³šQ¼vx‘5#­˜ß£n¡ÛÕyÌz'4[Áv儤äcï4[JuWCçoßR.æ¿`ë¬e^ª?–.Ð oŽfhýýÚü ›Í 0WôÍ×Í/j¹JŠSê¤ {Jâ,×.ß×cºNÌWYð¨¸óŸkÌ4‹‡ 7Ò«2†¿H-3=êO'÷÷Ëô(snµõ(+d*òj¤«ýÉê{nþ-]ÑZ_S5šQ°ˆl£ò{Ú frssÂC´ùçeÜ´/#k;ö(úKiÂ{|NÂÅòåæè: Àˆ£ït×±æOZ„ÆK7yÓ;ú™ù]¹%X¼a<Üuæk‹¢±žŒ"é¯qd]=ëoøYWz•‘òùèëÏó•ÒèõÉäù r ½ Éz#]aPÚûWI{uþvônPR]eœ78I¾FYàmm˜}²7yˆv´»¦XοÞÉ~ˆ~7Nèu¥ŠÉÓ?‚½LkÃøý¼¦‡5…ڷ֖ÛPÔ#¦³¤øE˜D½¢â,ÆHƒEßdSu…§iPi'ÔBy_÷>¦uЉø½ö>ùÝEEÍ©ïò°_?‚…Ñ¹Ø ôÔ‡ŸoébðD/š#º»ÜÅÌ8¤Eéæó€Ó“Þ:¤¦?¨r—ËQDÍ¥~ ½Urâ?Ó‚X~”;rÈ—‡åŸe7‘¿Ì éíu§±Þ Ç¡gä…ï¹ó9ÕÓ¤µ>£ùM'èj°L'>¨ƒª#”Z,ÍÿéÁÐ)ÈÇý޸ߢ'‚áÿtËþ9û®ÐYDqÁþP¢[¡?”8ñvI)ºò]‡˜d’ Ìá‹¥øžœ¯VÿqÀÐÓendstream endobj 602 0 obj 3896 endobj 608 0 obj <> stream xœÝ[Io\Ǿü rä<*f«÷EF‰#;ˆc"¦äà5CŠ„¹i†”IÎoOõ^ý–ÑPR ƒ‹ÕÕµ|]]ÝÕ|3§„Í©ÿ—þ_\ΞZ1½žòœÍ¿)_?ÎÞÌXú&öùŸŽü9gŒ8¥ØüètÆ¿µÄ ãæÚ:â´™]Î~è¾ßۇɌÒ\v{ð)8ç¶û*’¥¦¢;ßÛZne÷OæÌ*êº5pSk,c®;ñtªUBv«Äo\÷mÃò1ðskÝ•ÿšÐÝ]øä’)ÌpŸB1.í¿þê ÒØ NΛu´¾õÌÒqªA×Ä eºÕmPURg¸·Ô“ \:˜|_pE,eÝýH˜E˜1°€ÔcÆj»ßx ÓT‚½0Î*8Lãe+p•JÌFkÝ-=‡&JÉîÏ!$£Â€s¼dG˜+¸ØÁ–•’ÒºÄb³¬:­N¢Nˆh{pT¶&\-ë8¬*²Ñ»õåÑì»,ØùO3ð;‰àœ;¿œIc$ÇgÊÅìû÷œÄšÀ]³©œu§Á)À·{‚¬î§ðemÇ{‚¦9  ø8àNzÔ mõË IQáKR¼»¬ž¸nJ4¥²á@XlP|U"q¢”éîÅÞ¾´†8xäë –wg¡ ÈvžÊµ6¦¾ ÜJÛÒ+î=ÁfEBð_†‘Fñ!o’qY!6bPÐ0¤œ¥*.0§p…„Ekáóo³£g?;¹á \q<ǘäÑNI>ª;À_6<•îN¹“IŒ1Ûp_Õ­ ÷ ß¢ P’GÅ…<#…,±^GfcuV;d,ù³H§’úÅ^yΫÄàO& 7#òuè*©lÃf§\tkDN6‚c%Ãìã6¬¢'l£ÇuœÑhÓÏ59€:,ŽbØ*²Kçx㈷!ϲqFÞ!!Ù4á§ñƒ5 CxNÚÁNpcá¦ÄW§øRX^6‡,3YÈ¡(µz5ö³ûL FFuR`ä«‘ÀjÊÄt` Ø×¤°”ü*aýAz ñðë’g•…|æ4ʳ™âó¬u ô4ê0pU $1ÊŒäRo媔ÊUFj¥ˆnDQo\`ªÕÅdŠ·c)ÞqHÆ ÌÑŽ€i1Å/âæÇ÷ø¦Êƽ(}¯ãw@|+&…ˆ –IJœ _LÐI$3>a+ˆµ‚ ðqß!îWh·¾@ôó¾DNœSq Kä[4ôѯ†Ê‡ïcÄ¿šàù ñ¼ôÓ2Æt?W–¯‚«ùå)Ê%ò^$k`†¹'aÖ!Ñ\tåWVÄÂ;\è#.ô¢¿¨ô Æ»Zw¸Öz_l¼ÆŸ¶Šñ>¡º´vˆæBÿW‡Ø‹¨ä²À#ÐÙ *Ùûx*p€½{+Û‰³bµõéÞ Ñoýn˜Y²óÒÿ/b9@,'ˆ¾œ _LÐÇbVjŒÅ`©æXxž ±(nîE§‰5††cá‡#›Ý p5ÂW)áôå –åÇÙÄU:C´þpqÅ"¯'’Ç2±ó¼Õ VÕ-¢ÿѯ‡J† eÀ“1Ø>®Ú‰¡&'F™÷+|{À•_l³âkаØÎm£, j7а sŸ(4n†0 èû5⹞@C™¿O ™ ð¼žÀ-žàw`.µDÂçæið)Èh%z™EKIÎ,aÜnj ç}¨—?ø,&¸/ýf¨À pÄÐÃpÃu)Vx=Ô Ó?–s:Ô!ð`”,†ºaù!Œçmàœ1~Øc= êÚ ÎŸM‰kR”&w”¢hÀ?\ŠÂXl ¶…L ¯†qljI?o.8ª ÏËÞZ¾–oÖ²¢t7^pb4êƒyùë ‘C¿DôˆŽMx«=éšÊ²©7îÿñ¼{>ÄG$äžBÉá)ñâ $m–Фv´T8Ì/þbˆë-¼±ŸŽÄvª¶ rlÙ“c[×D[õ(…S‚j¨Çvr©ÚúÛÝÞtŒ —:_Tn0 ¨Ö˜Äzú M´Åúûaº=ÒT®FxâÊWjÀ%!{¢+µLÙÒ›BS©èŒM7ÿ^/7Ù@m…Ø@ 7ÙéB޻Ǝ»*{ÚB᪳éGœ×6@;O츖|šÈ‚µsž5 ‰`„‘Ÿrû‚´ßݾuOn_1lîíÚ:\uãkæÓÔSu¼wõ_.öc2ÑšÀìRR¤8ócŽ©;÷ÔõÍLÓ_Eª¿V¹ïŠ1‰E÷zž™‘¼rü9ªäÛÌHi܉Y¦q¦£Ãznš¯ùµÔ&GEírÁ›±u!q²ô›ѯpºÀμ#cc"ÍÒ6&Z_ÒÔ£ˆ¨÷9Ú·ò¹¿jŒ%=>J‡å tó­T±Å„Ó–Ç>2¦†Ï‹Ê€¨‹úI*¢ÞTêM¡Ž­HeˆbµcO`“t€ª»¿ô0TÚ-~yHìÖw8‚ˆXBk¸tæÇ[dQ€S±µÌ´}P{Y§›o¸-†D#vÜcl–„2´ + Ô°r²Á¸^ ]Ðo%¦Å?ÇèœÍ‚Àëà#€8&üž)½±ñçE¨‘ ÷Þ=9¨ÇËj¢¥åäbKÝ9ë\\† ¢Ó"P"âå¦"X¡à\Ž(™~”´eÃà 1q,ãs %y?sùç²—ŒÊgÛìƒIÀ³.ï9ÿܳ Ü¡ã#ÿXÜþÚYpœ×·ñᣦÁÓT›i9µY­¢DkÇ0P¶¿ðˆÄ¯Ý±ÌŒýP;¿W æ sr| „ô;Æò‚C98t×bÁÆgýX.¼£ õáJ¨Ï ÞŒ«×“u]›Šr]Ç"þäïøX×ɱð"jSínûk|~XŠ„ ×Î )ZŸ»Éƒ62”OÊRTóf ®²½òDãC pù×M•]¹*¥r•‘‚Bæ6¬8îIJé’[.aLGŽçè¨öâËÜ“ÜÅÕø\:}ˆ©Öö½Ôø„içaì?ŽéÝø„C¢G~•ql'"2¾Kü±ÜRý¡6ÖÏ&ŽÏ—C:¾Ça\Hb~|i‰/?{7ÿvꪆ£_|ÞZ[¾øY˯¨!Fª¾˜à(8ü‘ñLüUiE]ƒVÖ>!á”AܬW?Îìh½úå¡>*tŽÒïë•‚íáJ!.8êd’7ˆ¿¹¢S×>ï4嘤íoxkàÀ˜6u1 ¿3MêòãønRÔü>W~ìèxøÑÁž„Ž÷/¼MÌø×r8y„q–5…Cåj¤ÛÒ”Äb¤…qB·² W#]ôôòÝÑèåǹÝ$5&Á­7!/ùÍp§ÚX„œC›Aù}\F3z†ÐŸz’xË=ž@íIÚš kvS¼Ë®ÆÙñþ»uÁBž!îûäG`Aë - ¸-‘oãzXãêÈk~œÜQV¢¿~Z[õÉŠÈ…Mª9DÉ‚ƒêñ?ëïþ‘ô%Ðc²c/ÇŽbÓ›4FÓÉPÍArÄ`Ÿz}9x°õ¸Š«Âª£ì%''Ù$'ؤ;JNÌã?%§Pú޼k¹ŸØñƒüJ÷¦‚?äy™2%rš,Rk ÜmŠw\\¿š¾Íˈmžé.?¶;óñLö WCï¿/ø ¬ ¬òßñTxå+F%|0tE)›þ¢gâÒÄ"”˜ƒhiMÊ€¦^šˆáMÉw³ÿf!Òendstream endobj 609 0 obj 2895 endobj 614 0 obj <> stream xœÝ[Ks·¾ïOÈiãÓЖ 4ÞpìC’ŠU?ªl3§8¥’HЦ#RÒ’²•rå¿§fºwËÙì2JR:pv÷Ý_¿0­·k)`-Ó¿òóìzõä» ×—·«¼¼†õ—ÃÓßWoWP~‘…|ý‡ÓÄaÖ"Z ëÓ—+(ô µðί]ˆ"âÏÓëÕ_»ïOã˼qRwÿ8ÁG B÷Y¾:y¬*˜î/iYA°2v·H-ƒ±»HëÒ‚´Út›Dïr~¥(ïpõ9’«#J¹I¸¦]÷n|$¯ðQ[P&üíôÏé<ŽžGI-tL§:=Ç|ˆMT2‰PNm}·¹Ë;52z•€»3*ñåµ²"Hè~Ÿ8ñ-Æã3 Šñy{ࣗ¡ûMÚ“' ùÒ©¾&ɶZ)[ˆ­S¦;ONXkº/žJú¤›$9JME÷Ô.„Ð=Îäo˦Œ ‘Ë7ý{\°ýÙ³¢êÙ5žý|ä£[%gLjýÓéêÛ Âú—bËŒ ãP¹ëë•UJ °ÃÊ«Õ÷+ƒ6FâNß=M\Q “‰¶gª DyFÜ6ÑfÑêÑêÖÎj|AëE¯W%mèÞ?#ëdý=YFÖ¯úg¨.4j•dêr&¹#$Tä†<ÿn|4:(~¢a…¨§jL[)¢!*L\&G…(ÑhÕ«ð%QÉk~.  l÷CGHª$±JççéÑ‹p{C(^ÎWS»åçkòüœÐS9‚<¿hìærjçü|Cèëó~8™š4Qí0é`-fäb®jAŒHÂP¯@OÅøq˜I£" 7è¸Å+®ˆ½î±‘÷Ðý–,W{alzh{]š²~NM1g—ÌvÁ¤#R„Ü×K?™>÷ 8)žï\÷ë"O,J€0˜´ZY:…Q–˜=qÙ=ÙcèuhvÂj=5ûËb^§¸ûÖ_ò?nxÆ]ÃJ›cP³f¢Û)s~>kÀiËôÙ¨A·@)ÇxÒ›«^f®ÁÌ€–y©à…¥^š¸à@/ ˜2½BáK¤0Í]oÉißå³8ã|Ïe°Þ¡ùûìÝߤë…în ÐÇ` lÝB p]Ü 'TÔ †ÍLKut”…¤7u…ƒ½€1® b̳¸2Ð „¨òy­„³DPfŠ\Ð@ÄEóÙ„"‚“ç‘n a’½arŒIM4”™âQÂ}?½œx õ Ñ ™9ÓÄKY|µeÛjY0¬vcÖŽÌótpX*QÏËLz^1nª”°¦=(³L² Í2T¹ô¦â®Ï2)¦ÝMm:I+¾myülûs#Ñ¥-HÌãå†ÀbIìd7 1ôêrÓ@Ò ´'a¾íGé$Â,8—gêx®,òh"àD&—.ߎNï°ŒŽÎù²çEÃï7S£Lî@Z÷Ò­,Eq:s_ qj=ÿÉ]2ünåä­r¤ÿ˜Ùº’Ô_ü*«öˆº½ÈG‹ [ÑH0<À±"Ôb )d3ÓañTG+°ÝZëtõ\;¾«©ú'¡aCŽÈÔüQ#|ÄÕ¹+©û;þ !®Wîø&uWD‹‰ ŽäøÆ >¨ãÓÐÛP3]Ö ÓyÆw“sá‡rï…Ah  Ê˰¬ƒcEÃ'p§VØCJ Çžé(hÔéfúk¤y4¾™Zwò•¾é¬˜guæ`­…‹™xÑهƙ-S`L>uÍlyH%ã-/Ǧ™ç†Ÿ|ÛWiq8ÙÂÙaà¸b YÀ&ۑ˰Ì–]=DLt¡*ŒØFü‰ËüÒ$¸ü/…âE££Î˜ªÙ-£ ØŒyb¡Ì¤ìQ«BAÆ}ï<èÉ'Ž@î<~"ËôÎCrE•ΛR6Þ6}À„8<ÓdCƒS+ñÐP¹sÜ'7I1°³ÏŒŒ ¼ý-O\vk3B‡Nq¿õ¦ ¾×q¾+ŸnmŠßž5àõ®£{‹ÖtÍ¢ø8žœ)Œ}„TÛÏ@½/1齯ªÇI¡xß‹Fø¢PÚ‚ùÌÜÛ›³Ðûfeöõ–½ÓÜh"fXÍQnðOš¢&… âܧܨ·ñ4¢…!̲˜@KbJæ‚£ P’ öÿp"x µ#-o Fý3³³‘Ã.J’yÊtŒ–<ý¬ßB SŽ»Ù>ݲÅÎÆ’aÊÌâªLN€E‰Ñî³ça;ìÀÕl•aƒ¶™Ë9v751Ùn8}ž C*5Ìûä¹°ºrŒP€ˆþåî'‚‡C@³½=ŠƒÎ)XiJ>ÒyÄ P¹q]6Š;Á‹ÅæéN²íW£Œª¨ÀÅQÌïú†hä²-Q¥flÔ@š ªÉØhžÉty5‚cŽªˆò#E}jåwöjù`S£ÕpÍÿ`ŠÅC e%…=Ç{1~v! ƒ^ÝëɺM6lçÛÕ¿¤¦UÆendstream endobj 615 0 obj 2770 endobj 621 0 obj <> stream xœÍZ[oT7~ߟЧ£>(‰ñýM¥µHE éS©„FÍu—[Uõ¿wìµ}ÆÇÇÛ]v¡(ŠâŒfìñÌ7ŸÇÞ½í(aõ?ñïëËÙ§Vto³ îX÷0þœÝÎXü‡FõîÇco!;ƈSŠuÇg3õ­%N×iëˆÓ¦;¾œýÖ?Û;„ÅŒÒ\öíÁPpÎmÿóR,5ýùޡКp+û_½˜3«¨ë M­±Œ¹þÔË©bT ÙÏ£¾qý£0 7Ä/AŸ[ë´è¯üdB÷ïÂK¦°Â …b\ÚßñÒxCœ "œßÖñ lá‘W–ŽS SpM¬P¦Ÿ¿ ®Jê ÷;÷$L.,~(¸"–²þo «H+˜Æ÷˜q†Úþï“ašJØ/ØB‡eüÜ B¥¢²ÑZ÷'^C¥dÿÐkɨ0?³£Œ ¬< ê° –œ’Òº¨rs2ø4?]îÀ ±Ü{TÚ;,8?ì°«h>¬?ÏžÌ`Ávfw²‡ÔÜîr&‘Ÿ$³gMÀ9µpJk"àB–¥¢£ÅÁ^BSöGŒÀåO ~q'‰°Ø¯(ñ~YLj¤^¦9‘´‰‰ Z`É ÔÆ 5H­lɘ%”sÒAk(ÇfÚ©˜0¦‰ãf×Pkl“;K´pª¬+& üzÂíZ ËÛé-Ñ?Î)Í^þûÐbä5g„3äu°c¶øÌ{Ð*fZéSvá„Ø OÙ“Äk¥ï ‘HvŒJ0d—$›k€Cà ¦–ÖÄ×33|k@åaŽÜ“Ù¿ÃTpendstream endobj 622 0 obj 1744 endobj 627 0 obj <> stream xœµZK“ÇÖy¬1LJ¦UïÇU6–lˈ؀fa`í,ÂHÞ_VUwguwÍ΂6tÐlQ™Uùú2³~ÙŠ^nýWþÿüÝæÛGAo_7iy+·ÿ½Ùü²‘åQ¶o¿» /ÌV™Þ/·/7²ì¡ÚÇ­uªW ÿônó¸ûËnf.©ºŸwø©e º{FËBK+ƒéÞçuewƒŸÂ(mUì^¤O•±Ñu×»½v®w^w6}Œ6<½øÇÆÉÞ;¯¶?n.þü¸ûW¦,¬Ö¶{þpJX»ÿmæ¤h[bwÈ´-$ù[Úb¥tºþör±ZŸÉKtLìЪ>Èî-ß=œH Ó½Ërz£°‹ÿCf%b õ#-K£¬¡Cû(Ú­”}´6é|•õ¡ºlŽt¢W2X‘/@ ÉÀ(G!¥¦óÀ³ûš>ÓÄÅAŒô[ã9›LÙ lAzÜ~¨è½vóå|à‚ÖÕúåN¹Þ{o‰6Ñ‹f¸ƒ5²Ú]ø›Éž&¯v{IÛlù˜IE_bC4¸íOÓ=¼_?åsÆñ-+¬ç'c??åûƒŠÉLI:/´©¤~I¥³º>ÌuþÒK7œ+}y•…¶VUgaòŸ×TV™ò«bßþ¶~6.ÀëÙ˜¡!·/ðä«iïe–;@g·)*Ñ+ŠW´TTZåÊeë çÉNIÂíéöÒô‡ÌB™n7‹á–H|µî<Œ1{™WA¦{˜6ƒòÝ_§ò²ŽÂ4dè>ÒèSŒ‡NÎôb©®¤ò ­pjÙÒôŸhYI¥ƒZ£²8[ñ¦,Ф8Ã׌ö%»ô¥_zYª™µžökfV"úšAg+âÇBÜ;n}×+ì!øîÊó˜…ÃIg¸oÕæB¼SMKøÈÚ‹ñ[GÉb0þÏSC•cg»-„³ÝZé—ƒJ$ÐACÉpÞLæÌ—¯vÊ÷Z#–1ƒãŽýno¥î£“HjAöÒj;»m5Žä¸T$ø½=«œÜ󜩛ÿ¢Nþ)gÔ‰§öa…gÒ1kLØbbȧ²Ù­ë?ƒÿ°*NÒãÉu•Ièn–?Ò5†5¦É™M6 W9—äõ,¶Žd˜ˆóìå ¢©ŒŠ)fk(ÉÁlOæ1g\ù‰Ôe‰pâf î&ì»ã.›paR‡Þ'ƒubÑxÕ¸ÎÝ“]þ4â÷tþI?ÞQÀNÿlÕ(Èå3ü'RŽ1=0Õ©ø¡€‹™îW¢‡«Ð­€9d=„#®“*ÓˆM),#=)4‡z2Ú’*þ5E¦¤Á5`ˆŸšÐqÙ½ôãtÜC¾I­ý9§m9CínßUΧ«ó…ØK1¢Ž÷¹~ZŵãYJ$X*»õLÈ\Ýß .;ø™ Ð a'þ1¯z¯˜E-´—=ƒùË›Éû.™÷eƒ2FƒÒØÌ7È~ÚÌü†#ê3P¨]Èî ŒZSOAØâ!°û£t¡‘p,0aü[¡Ž…/»cåÇ“Xª‡ü¥Vº*ž¡›ßAÚê§ûšC¬W»Úàk ž ´B«_º¦gÕ>IZ´ÑœD-؂⾑B¾†Á[?¸@;%~`ö:Ç[d:Ò¶ìŸ/ïb´Ù¨ ûÚ¨‡L‡8V¨Z!´,!ø:Ð\B%º‹„+Õ»à–G,´yYfÔ jˆ r ã&n$6!¶#á,ˆ`7ê 3Ì0í’€­ Y+¨†ILQW¬~o•6Ýs ”™£×ºˆÕ Pë:s<,.aƒàöd"шàÆò¸Zc€Ê³ÖÓ¿‹|•Yêt¿N·ð7äôÝcÀ 6Ü KÁø±š³¶ÊiQËa»™ª_€½u¦Ÿ‘ 'š < ]ŒhL ™“9?oÐ^qx1Ùj °“®‹|Ìô4$ª½‰bD;DÍ„hÌ¢o»®kg{GP¹ö“$þ¬¶÷«­&z…ë¾KAC‹hW‚I¡÷[ã÷ëµÏw2Y¥QóŒ6›Œ¡WRj0ãZù£n¿Œ‘÷r°;ß=®¬÷ÁÅæ§ u]ÅöÑ÷åÇõ«fÇv KÇÖ8¸‘Œ[ h—;¶Š{Úð“±<¿MÜ`ê Nj¦Og®l¯â¬F>ášpåM÷}Z6Vªªî¼^/LØâ&Ó“ˆÔªwäh»G;V"'(‚í§™¨ÄÿxÜý‡©XIdvÛ¦¨äBÅæ>T õö1ºšéÓé*úêœÐ2¹cØ*Eü(‘øßI²àtf…¥PÔCŸÅdÀì8pVL:a³C“ §ím=¼>Ñvá*}ÌÂ9-1šh+ÓŒÑÍÞnÝҠć¿ø«öÂY}Qbùî ÂÄÓ´ÐÄ—õ‰¶ÔUgﺺCÞ¢#x=‡«>ŽuòxOCùšØ ûjÝWŸUœ§S-1qâ|&$¾®OOukRŸk€‰L² '³&¶LŽØˆH\KÌY€Å½Ä¥òzìø¯V +Y?ª:uß4â^£˜µàELÉÛ Zw³jlb¯lu+Õ¼_òãÌf^ }ÑÌ&Ríûn˜®6®`ó¡üÊx˜ ±ÕѼ´kmR‰[oèeÒs(Œ< ûi¶e×Ça\–çÌÌ ŸAˈ¿ÂÜŒáY€@æ3æ“tï+NQ«*Ê…°¸3¡ïe C´hÏ2)`ÈXcGAíü®±jÛƒºr{†\­À÷"S‰2ÔájèK3˜++õX»ªtæX+I`äUCÐÜHµŸY+cÖOܾµ-—M–2æ—̧¹ú•5«eÐ0T#dž1–}ÖoÅÍ[ÚaOêrµÍw¿Úîn‰Ÿ‰ÊÙŽSÝ\œu-›3çFHζޥ!1Ú 4zÖܼ.Χ‹Êiˆ>Ë·¹ÆHÚm'¼‡d‘ÓƒÞàç :þe#4Yüµ‹$u•tä¦~çø;o ÑÓ“™z„6=7@¶j|nb‰ŠøÎ晼ëän/¥¾K̵íü ȉèò% T¢ìµ5Ô—Ðô ê¨O9fDÊÏh‚§yåmЄJ®ÏŒi0ØýX„àdÙ¨ Óh-ý¤aö!³“Ù“‚µ//{=úÉÿ.{¬——7Ñ‘7fyQ% x¼ ¶Œ.¬ã×¢Œë))º{¸»øïr¼!é¼ÂoQ?"KűS^÷hGti‹Ðr¸]’PE'Ë|Ârž€}Q¡†7ôH#ø*ÑSÞi½*¨DDųݫޭ2á5YØ+¤>Ãà_¥[¨áÖF7‘…qóT“®„ dâ\zeê*EÑd–",SRMð/c_N:·Æ*+:%újÉõñüšÀ{ AjànRUË,FNKJÊy¹¸×ˆ!ÖQâ ’äzZñ´ývÕy ø}Zþ¡Ìn¼_Ò áOØhÄu¢gq¢lÏ!–ƒ92f86Òû °‡å>QËÛÖ S‹ `—Ú¸à;§‹*[Ô©]6Ú9Fš¸j]æ"QÁ¢šY·±¹Ì*¿‹»›Ì{‰Ø/Åhó ¹ÿÈ"°Eá&«OqÈ; íøvziè§gUd÷Ñ2¬Žo©¢Gâݘ…u8áO<ÊÑ”úœ6¾Ä}ÜAp‹<Ö`X[ð3Æk7y·w'ÞÕ`’†íjQʯ—æï™»5z‹5W­ËÇok“(Ú°VOoše*ø–ö·Æfç>–0ÈÅíÇ2¼`ŒFlÖ+üña õ•¿'c&â^¾Ù«Y\=Šá¦D›µ8])!°Ç9³÷Dº0¾ÊXLá3ü+SxcòtŽx¯„÷$Â!K ˜snxß2,L{ì¬ó¾ùê(yŬR’Dz:GמWÍ’À}ì~L9ØÒ#‘ E¸yh5ä¸g°²r½OÕ/5qìÝJéoòg±v“ì’oòIhwÎD8ÝD¸ŸVô •oaŠïÆ=äÇ4©=åÅtä„‹bÖ¤›¡Tñ³>ÀÐŽ˜£Aö2?ÔRô$¸à2?Ñ™~ŽCŽŸ6ÿYB)endstream endobj 628 0 obj 3103 endobj 634 0 obj <> stream xœí[[o\·îó¾÷¥Oû¸[dOy¿4h&ˆ[4Ð$j_š"-[bEŠÖ—Øýóý†ä9žËJ–×.š~͇s'gÎkÑɵ åïãËÕï¾ z}¾_¥éµ\>Œ¾_ý¸’å?¢€¯?9¡f-e­•ë“§+Yà¥Öw~íBì"þž\®þ¹ùz»ÃfÞ8¡7¯·jéeØ<`ÓÛv®SÁlþNÓJ+âfh|2nžÐ¼°RXm67ï;¬ü"aQÞaöà*Ä,?ÐsÚm^Ô!x†¡¶R™ð¯“¿Òy?ºÓ‘Nur†|AÀ&*A(”ë‚¶~sóB“ÉÐíÓhÕá&šM£XU!ÐĨš±ß¿X„Jˆ TÇ 4D¼¾qÕyÖ)Éùù´°Ù啹ŒóYæ/9ÍönièA&ŽˆA<˜•À'½oNýQ¤·ró*%LÊÔ‹#][Ón)¢Α¶ B'%Ø`½é“I7FÕ# ÷Y[,²Š¬ ¤ùò€.4ÙÚÎDü#œ„é`K‘yÐ’ßqV뻃 ²ÈÏ…{]gçÓxáhFZB³¬áZ}1¿Ëc†™Ï¿ªI-Çý$¿‚HòÊ=ŸµlöÏ—ÔŽÁðß;¼‡Ó3uBǹ)1HjÞ†™·ØÜ@KÏCвgts‹ª¢{¦˜¯óJD£ªF¦ìLâÉ'‰&-¢uœSغl¼ÿ~k!yD+ÍÞƒ’÷{d%¶zºUQO'dûfòfa|QÜho‘Rþ36Îüò&„ž1iS¦\ JÔ5ù)m.êK.µx÷Úa¯Ž°žP ²!) ü’ÖŠ;«g³Ûs£ýwþËÐ:$&‚Zé”JÂ]Dû~41Äê†á­;&z|Tï=p)áë–œÖTÉ'áï¬ìtOŸ“Å=;«å§a6ÉÂs4¸Š CøâÙ'{¥c8Y”XÄØ×Ýsžé¬éé×÷”KÑù0dÏ)aÒ^ìÓ:|]‡Ïêðªohh’hÞž Ãá—»~µ2Ñ#÷³k+2Gï§Bà†é†™Cï§£ƒõ¨@$.}Ãj!ç§:ìêðq^†é˜s9—–H°tXÊêÓI3M_ýyx+6`~§4{+îg謀B–€)‹ÜWh˜Yp‚Á:䕊Õ™ Õ/D؇ÍrLX…[ÁÔêÈbM$̾Q#?@tr M´™Åÿȯ÷HaB®l'ó˜Í?góWlþ†Í?dó§l|žÇ¸ ûþ”`cÏéyÀÆŸmw°ÇNY•¯ôeú[¶ôiS”¨ãëx*ìA ÷¡ö÷Ùv† ›VågY ›%ô’qó[v”§ ’ëØü~Ê.QŽ3±íŠÁsiMñL$š½_ùb@ÙÂÞJo‘æöüÖ¸uEn#´ÊÉF´ëœ¶^þ‚ß,H`ŽëY[u7® mä`[µG ïÁ¸N×q$µœé×SW2­:~ÍàÏàXÌÙ‚K¶àtAò Ò·7¥A^L̃Àz"öu‚›­rG2%á;\œß]ªÂÐ%_3f½`ðϧ1‰ÂÓžÁ\Lç9~– <Ì=f0Ï¿¤Y|ßFËæ´ƒVÐŽAð¾¸Æäu¹Ó‘î¼MZSܲÑ3í ÝÃ+¦´ÊGÏ4¦èÙL:ÂÓ‹IúÂS–™t„ëe?`ò ttYäù× ªõNéHåZÃlß É!öLHi•:Ž_ÖÎÐ -³öú1‘ïäD+s™¨V¹ rDÅ•›V…#)7þFë>¼~Æ¡± ¬‘shíJC*^3©–UG‘ªÆMLÁ®þ«àÇúµCI§ËF]‚jCãÔà.Pý ƒV&.Ù C?s7M;Ü—Fµ.mË}æþÍÚêqÅòÖ. ¬ÒTU¬Ef'‚ ¹Èœ+îKEæIgH®Ç6eæÛ:C±ò¿Ðrß*ë¸e”æ}5†XA/q^i B5z¥¥YïÛMØ:Vâï¡… z|©Þ€9ãvZÙ–L¦5¾„i¾Æ×V^ëÕ¡òi&g\Ž [â›WhZ©„2µ•Èî²ãDn¹pxXnmCèä¥=ÕLõ½Â3µ…¿ùr/d|Wº€ÌlágÞ)ŒÞo dªüФ³O¯° yùñ6º Ês5ÍÎÖ÷cgk›{‘ç¥k® \]§å­»×eró8œ$Ïøtµs®3Ôƒ|¾³¶X›¥ÝT¤æï¼Þxz±WÔë€tÁøS¢A;0,¿«;S=‡ZÉÑ©uY:Sú³ƒÊæGm“«0É5Ù`Soµ£:Ú|J Á ·¹¹bd¼È›Šß›Äga€Ýòö™vº³®­?3mø©ÏFÕ!ZµMŒ.¨¹3`jÄ+™ 5/4rÜlKÞñžøïJiʵ/·,É™ë^à$% „Œ#Ö‰ BÆqE³p©AÐQú`[ššØÄ8¬p¾èÆÙÍz, –Ôzq^ÈBüb…´)0¯_Kj„ҖÄ̛™n˜ûzéž«‹- ¼ì´ëikëÞËnQ g í¡ÈlŒ^Ò‡Röµ£@ßÄê‰q.·8™È^îßÃ5‰ì÷=µj¸Ôx¬V â’RaYçh?¯o‰ßÄióÎ W w7«éÃUœÚ¤±¨lÀ O+Äaß4îHz“•^S§ÞPï<ì¤LDxÉNJEÛû¨Ðû(O.¬‹dÙGµº]Hhó“£}“$H-ZD¬wqT뇇@’}fWÛrz‘-50Í,ù¯yÝb QèQNšf•ÍŸœÍìÉíâ­R˜ú5SºáQ‰: nÎßòf©wר ô¥|±dêž5UJß$LgÛFÌá}×ïö¨¢–DãZª>?=e<Šûïæ½O£Iə黷ÐMÛI“÷`w^ wÞª…:¬¡ô¸½>Ší¡ ^¤¶&\ò_ðî‚n3 °Ç-Þyn±Œä–-£G™\€ò†îÐ#02štQ½ÑŒï÷Ëû ËÑŒF†Ðéè×H¡Ô!£Q·˜ÒFI•žªÚ«ÎŽª:ÑâŠ84£Ýí3 Ò´˜?Á<–Çn{-¥‡Þ Ò‡*ã'Z&ìß \MÔŸhÂyß½ ŒpÑ]EnËTÏ4åôç–&0eé658£Üü”.Ø7uxµz¼^ÔÙ|3LÝQO*ÀEeýU7uÈšË^ÖáÅ,[VÛÓjï˜S‘Z @?””>º5.ÅÈaæMc@†rn‡zÆThË\¹n¨Ÿ\Ia B/~2û¥1ÔZ³ÙÛn?óö_ëÔ#!×!¦×Ð|h_õ)L=Ì—«ÿD­mendstream endobj 635 0 obj 3367 endobj 641 0 obj <> stream xœí[[o·~??¡O}ÚST ‡wÖèC/N\€DVû’†-ɲQÉvÎ9râüúλËáîR’“‹†a˜¢f†ä|ß Éáúû­°•ô§ÿ÷üfóÙiÐÛ«Ã&uoaûåØú÷æû ô?È^|ûç3Ò0[­…íÙ‹ ôò!ˆ¨}ܺEt~{v³ù®{²;ÁÁ¼uÊtïwØÔJ©Ð}ž»“º{µ;ÑÎ L÷wêV¬ŒÝ¥eð v—Ô/-H«M·ïå}ì¾Nf”wØý åUÑéî55±O»î65•Ë®±©-(þuö-Èñ)©…Ž´¬³ \Â×$l¢’M('‚¶¾ÛÓTŒ^Ñ pz›ˆƒŸheEÐý‰4qãqÄ$‚f|šøèeè~Csòà¤Áõ¢žR+†l[t•í…½s®» '¬5Ý—$¡ HíÑ9d9JÍ¥ùO’8.†Ib/°¹(sÚ_æD­óÚ“£†µã€û‹¢Ç§ÊÖHn}|¶ùvÈ…°ýaƒ~™Æ¡s·7ã½èø¡çzódcdÎ|:ý[ѲFŠÀ•ré„ÂHê’A²\zt ádÙ{%·Eªô©QS;#Œ©l¡^ µ­Qª²'óRänªW#¡uÍX K±Ò§,Gß©cí4“BIrÄ`HŒ’þ}£ÿ5ë?oÈœ±þ=ëÅúŸ5l^±þëÚ>¾Hl,oÕoXÿ³ù¨|¤$ÿ¨ôŒÉ5‚64ŵBQz+Œå0&µX3b”ªÇÊ–¸!R²ëðÁF/ŒîùðvÓãÜÓ3Lÿ2ïOí7Læ–õÿÄú/Y?GéGÖ:G5õ¿cH¾j ¿g2Gâ ôމP‚fè’’qtƒB.éŒî;æ©§ˆvÁú „Ž ›‡Š?5ÆúgÇ~¡ø/vì 0w8}ô(‡aðèèeg”àA•ÔÜJAåâ>¾Ûß6‚'Í÷¬ÿª!Ï“ïM ‡…<›Ú7Læ!yv€õbi¬ÂÙM¢É`:sU4%µ•¢Éâq#š_ëy#‡Þ°öÛF®<6(Áçð¼±§.DeBƒÓla-IævŽ$߆|ºˆüµfã4«¢žÓ㞨‘¯ 3‰zmµPœ¤æMµ'B•m?ašÂƒ›¯˜–ÔVbž¦•ì™ö CMâŽFàß*ÖBÀG¥ÿ7ŽËª½1q£ÄóŽæk'µ°Rò‰3ˆyíºÈOÉsÖ° çPS/{Q„ŠÒImJ›èèùËaý”¹è]fxc´JeÔ hî”4­—ŠI€w;xtH5+mmîÙNã|4U¬Ž»¡|¥»ÒŒ`ìÂDÁ9dH¢>€ ¾FëLXíÈIÐ=¦¥—¦ÏfÈý¬m°³ÁzSÁdž€«bSÊ5°hy¼ë€žÅÖW›³ß}‡3¥2mq¢Ä@´¬’— oБïv ožè¯ªu½ËyÈ{ªY§0LŠÄ«"q¤StŽ …h× ë›Öx÷Mv®JOjahÏ{o)ižÖy>Þ!r°‚ñÁê(´ã=dèѲOU@A(3ôcŒ†S¡ÑXIeBf˜Òä\´ºwnªöc§Šá›b¥_a Ö·Þ¯ ªø~ÊV.w¥ Ú;ÊUŽº`SáV=¾<æÌ¹Äü U‰]Zº)÷Õ ÅŠ8œqTM‹Á’‹Æ#e8>ôq6t²Â¼öºX)åÈ”Z0WæÆþª™’êp˜¦$0Ÿz•S’)cŠâ½Ø co•¿Zy_žÕl=+Üd­w˜€ÌÆðÕ^# U¿Ãænj…üá¶)…†”°Öã!ÍÌšI¼jÜ\ÀšŠœ\‚¤b¥f5I1Íp¼˜Eà-cä!¯Öá¦ý6]âù ³u¿ßM6ûVlçwŽå$r=÷®|‘ÝFÇÌ"çj9%qÖÎh]í¸Rˆc§7–Àª¥í9nˆažqQc°\LOóÑmõ&s¢-îHÚnO€j³&fÃßô{›Sf˜´ÛbFôhˆÔ0OË P Ñ©²’ı,,M= ²‘$\e­mˆÞo†É„ÖD"§ôúà¼;ç:YïžCÎU¡R½è_•TM÷܉çŽ'4Îâ²4óTKVVKµ Ï\xðÙâ&‰;œ¿+Õª—jUÄ3Ôõ¬~Ÿý©ð0øÃòfÎÜVÑ'C¯Â]'âŒÃÃÛ9é-†%às×çópÄcû$1ÓMâ1±‡ÁãÕR@F*¾}O@âEÎÂ=ûL‘yŸl÷?9é'æ)ŒD–çtÁ‘¦yÒ VA_>èIp¨÷ølÛµŽo*>;Åî–¾æPÎ$ÏÊ~ã`Ow"ôZPù¢š›ïÒMIáñ!1p.ÀÔŽ‹Í—Å›Ò{³hì06GæÐuY ì**Ül·7*˜ˆc%ZTš®¸çšÈ Wñ³™K—e?–¦g¿”ÍÀ"´~ü¸$Wwz¬þPq³.î ¥-¢¯X©eèáÅ-U†?ˆi‰(]ÀP¤JO‘4²RÙB=»J‘AVgòx]vA §‚è‹îó"ÅŒR£¦VHîó¤çÖñ¹ÓôÓÿÛG#Çù,ïüt€3ìŠÉ_Ï«ÊUU6 ý¶¦çØæýCåö២Ø+ºÔ'Q~®â©ÁJ‰G çÜàžã¥ ÞáËŸh8^Îëâ¼ö?³y ¦ç¤PMaᣎpùèÍ ˜Ä#&Y!y±|Ð[ÅçÚˆhìü%zae©_°~þqÙpúSÖ~Ûp:§ýûFàqy>Õ÷GÁB”sT“ÌBò(ï¿qœ‡ÕÃßË zSÔ+ŒÁÂÁ1&=X)é*)>Âü‰‰§ë‹ÆXû’÷š!³_@é"qô…L²Ÿ<ñV‘Hz~¥H$¢ØŸ‰ÓyÃu O™©}ÛÀ’»”ãú¼·ÒC`á)“?§Îñ|>·Ùfºð”Éùš·ï{ʼ‡#ÚK|¹<"9'HOÕŸþ©ÊºªùvŠó+é…uøÞ§+iâ×_Û(÷ÖóøëwZGhþlÞún“óè«ÆÖÏ¿’à‡¬‡¬8¯?gíÇt„£Š1T›Ó‹†êƒˆS`¬àâX<×Nœ¤§×IùàßfŸH|ÚÕWÙÕ xèzÏFÓÅ™CLzq¥x6È2ç>Æÿ£ûzA B.NBQE<W¡Hzf¥PÔDøy8}Ú×Wß× ÚKÌ$vO馊]Ed¨÷õQŠY¥†ÿ€T4TÒØVIzîª6J͸¯k«·hÚPu/ñÌ—kœ×·¿ÝüëeIJendstream endobj 642 0 obj 2805 endobj 649 0 obj <> stream xœí[Is·®Êñå$—W> cs‚}©(§b9Û)Û¢¢ƒâƒ,R‹‹iR²¬Ÿ¯™A3C>‘Tâ¸R:j4½wóãVôr+èßð÷ùÙæß½}yµIÓ[¹ýbl~ÜÈá‡À·9 f+e­•Ûƒ9ÀK­{ïüÖ…ØGü=8Û<íííc3oœÐÝ»= µô2tÙôñÞ¾v®WÁtiZÉ`Eì®-‚RÆîˆæ…•ÂjÓ]¼ï±ò«„Ey‡ÙgW!F`9§!æ´ëÞ”!8ÅP[©LøîàïtÇÏ£„îu¤Sâ_°‰J åú ­ï._'Jˆ^Ñ@Q!˜ˆÍ÷µ²}²û”Vbã±cŸÈ“>zºßM^:ap\¬£S)lC¸­VÊÀÖ)Ó„ë­5ÝS O¼!ÌQH©9êL v!„n?kÞDb{Zxy”÷qÁæ³'Fg×8ûaYÇIeg$¶~v°ùf#¡ aûvÝð}Ò ãÀÜíÙÆ*¥{i§™ÓÍ£ŒœÕéÛÏiUì±ÈD›¢NkŠÞ®jkXÔV{ãôÖYÝ?hë‹ÌW%lè~`<†ÊY í¶Ý¿:rÌ@ÎÙüëÜË äÏy,˜(ØüŸ2¸Pôš5=þ§û‰M¿`HŽØ|?§%¿gð/ØüxücA%rdÚ˜Óó1ùxa-ý˜ä>‰b–0Q&Ãi† q”«¶¢† šV™p7A; ·ä¶´Ñ* úùŠ ßÌ¥±<`³>b+d4˜gç2úÇ‚,fH¬ŒüÌG †ËhTCÄϾ¯ö­žìxEk–Ž0Ûëô!ƒ9­ iMœ”¬ÒÍAËFŃ»ï w9pƒpÎ fZ71ÜÔ¸P8¯È0Ñ*{G—½Õúí¼.~Îk’a%z[©ŒÒ÷–« ­’wŒRƒó²Ñ! Êy-ÈèWâ¼ÞWû~áΫ(Y¥›²r96ß{Y41­r¡r^¨Âí&Nù ,\Ëׯ™µ•‚GFoíR¥`5ügY«-å±*R‰PròÀwfo_J!zcºâÔNÕ½¢Ô‰èˆÏT>8£Sº*s‡œ<ø¨¬ì~ÞKU…Fú›¤‚äÉía^€íS†ùò<£¦…?0šN9ÆÃ³Oè‚£ªFSr-m*6¤c½î$ýðÚSE’WJc»'4’(oQ‹i=À|¬ÊBŸ/;6„¹3€s†l$ÀOtBr>§ÚKÈñÔ‰àWŒ`ΙˌMXÛ=P0BF’—/WM·–øhº¦ò¶&’ dË•åXaV>lׯÂÊžRõNéjÏïò) ¬þEªhƒõ† n`C%¶"ná:õ ÕôiYÈäxÅEÂp?g+Ùôk’dD霚!ÚÀj’í+ µn»¬É@­sïá‚™WVvÎïÓ:Nyu~ê3Dìac­a˜…>+ßé‚û¯Ù ‹Iá U÷¶˜;ÃШ&íჰò½ö®¦ˆ1ð¤‘ÿŽ0 8Ç÷¨Þµ¾²×«F’DG@tõ®ìS¡ÙÉÃpÞ¿FS ™ÑÀmû*“ï(”Uºr•ªdëhÖÁ;­Ù:§…Ó{4VOž*ï‘~i‹üQO=­ß€B€ ªõ‹¸“òÒ`T%½×z;³›U¥L!a¾•‡Tknå0„Ì{¤À3 Çú=m%”ôj€F†îaÈ@LÐH¬Ð´ö>J¡ò" ¦J« †HÅ®œPÒä,|J VÁ³H9,§âH×ß»­UÎ/ESlP&»š®è,…#Šé!Ž{ —Þ¹Ä3øBdâa»_­Yt-˜FÐÿLÍlŠK{À´î¶rÑŒK/n”‹ƒSüe Æ âø æ‹”í ÜÒöâBXÌ>LúêCXE^êFwŸšô;¸çevPµQOÕą̊áÅ 0YCTñîšä ÐlžùçUœªO·(äšÒd칉“,7YT2e‹Ä$–ß$±H+–½®Bé7…M›º ¨";?þ%Ë X~²rÌîjfµ¬PÁ#O»Ù¹ÔT²6²nÌ£Âõ²¢cB·&Y¥4eUV£¶+ù‰Ò;CY8?/GÁ)©Óó‰ƒÝaMJ:’·È4©}ïùðmôÆ7w”ÊÖ¾Aßä jÿÆ7ÅR7Î˹ÄãÃb½‹„kR¼ÚwÈ. 6‹ï¨ 3 {=S¤'œÝÑ03xpµ°Çê*[+Mc­7Øe@¹Mc7»”HØK’ é6R ^žœ$mSµS|K¨Àƒ_Jòóýñ{'ù•Q'k4÷äzâºFú(É6¦^ÌJ”tc¯Ið,‚ O)_²{ŽÏØ>\áI¾«“üO²$‰s‡íùGvq>¬VÑrÃø>×… §­êIŒÊ:|>Ì“_*,ôSÖœÃ2¯ýK¹O} ºÏNƒ÷ï¹DEW§ÆÀ \n˜²c_è0S÷è»/0SØT¨¶$…½j—”]„×½ cIhõ,Nñ˃Э*ÅèêÞCV3!ôðbš^¦7¥E0Ô’(½·ôRE9“œܼP“Ñ; ©‘¸‘c˜†©E ÝÒ¹àfOËð° –á³6c8)³OÊð¸Ù-_—á«‚áh‘H†ì¨¡a¶ñ£2|W†g‹ÇÃËEØrÌEÇneïJàƒã³J¥.ïÎŽ¯.[à6#“X.'ªåz9™:Pávt|*W-Ó’•¦àõޝîndÇGº‰ò¦M·1 ó¡§54ÔÚ6ýœ|}ÿ)³§?¹Ï\U›mÏýZé;{ûÃÕbî2²ÞðNèõˆÝˆÃŸçbÂw+Mñ…ªÆ ©y7°éNz¨ v¹KÂI8BãÝï¹a¾\mQN‚Øy£›½‹h `ߦH§t¸½oóJ—^àa™}V† ö¤ Ÿ”áqž—áë2|U†GexÙ ãί¥mü¨ ß•áY>ž†Ë…–è½²Å_†—£\°ô²0’Õƒ!åw:gj™d>ËQõ¾¥u¹éî-r½”ã—lm ö‘NS)2Iþ^Z;­ôÆÿ’Cí,uEš2—faVÉGº|ÅÈ3F¼ê#Ó•š•;û¾áz±õ}ɸIðÕ^ÞÎ÷¥Í×}ŽhôTÿÔ®ïmþo¾ã°ÞÅ:)^(\ÚÜöyÆÊ-î.åO{V®Ú’ñz¶$ÛÛ®ûº5@-Õ›p›ŒsÐÀ»9eÚž^#Üì–ÉÔۋÿgœyøõõYdë•÷ ²Hêå,r¡ zÆ¡¹ZW&qÁÀo—ѵ*±bÌ"ê|-éŒò×4^”ăÆd†bWÈ*×Y Ë©½'jSƒ`RÆÔ¨Ešý¡ gJ˜f–a«„yø?¡„oPBƒÊ`²Üõw¼0g}ºûµ˜ÿ}%e_ß”UœoJ'ª'©Q¸‘˜ ˜)¾,³¯òE·©mhõ…ÉÑ–Yöl•oz å1ije4Ð¤ß Ì²Ç¦a«”ÅÏk²Ã ¡uóV!=’ò¥Y=ÔÛ ÚÇ6Ý¢Ù`ªd³»ºš{ÁæÇ²C֛ޮ,䣑¿5Y‘ãÅÀ2gטº’³5–ª”I=Þkšé™•öSͬCQ¡¢¯";½áPtó3ù‹A.ÈËÒ½èð-ãÁËev¬ÜZ¼lL#Õ2ðpo—Éù09œŽ’nG^·µÎb#8u˜@®é»PóP¨aüØžõžÓŽC†¸¢åË€î­L̖ͫ^õj½Ö N”¨fï±A¬%U²¦j=$&.W½ K“Fú•·e•Ç,]¿Õxëä')”kï³v{ÿU™í¨Žµ€“éÅâ¼ÜŒÓÁî”z¶±E œ]Á]oUt¯}}~ÚOsRrÍÞ®š#¿GkƒìL†ùÎ e;ºÚúÍß ú]}sE}¡ù¬9‚Ï_©TbŽ” ½šrïÜmôjOÝ¡—ö_KÛ>h/­/Ãçex±4\¾èv°µÜl[ü”&#Ù§ ã }šðž.ŒJÈ(·~ø ¡¼eîÄÜo~³ù7Âþ­Éendstream endobj 650 0 obj 3364 endobj 657 0 obj <> stream xœÅZYs·~ß<ø/¬ßf.Œûpž|¨|æ°Âª¤Êʃ%Z¤J¢Hq%[ü÷énÌÌ60ÀrE1IéAClºÑÇ׿ÍZ µ–øoüÿÙåê³ÇѬÏw+Z^«õóÓËÕ›•ÿ#ùúËS|îµ!µ>}¾R#}Œ"™ÖÎk¡5üt¹úyøj³f>Y¥‡‹ <•¢~Áei”SÑ×yÝ&5¼…Giµq: ¿Ò«Úºä‡›ÍÖx/|0ƒ§W£ ÒÅŸ~¿òJôúôÇÕéK†WŒt¸Ì,ƒÕQq–ïöReî*zi‡Dîµt* ¯÷äçY’¨ÜðÉC °ß+N= ®`›‚+ÿ!o)SŠÀ–¶4Ú!rœnR’vÒØB37ôœ´ ~’ÓHãÓð 7õÖÆPðÚá²Ò:ZTØg“[+%’sd?`­]ˆ“ÿ†/©ñtÏv±M`¥I–•Õø,R)3¼‡gc èÏd%Ìy|ö`8Å/@•. »—™$‡€eL +¬À/^ebò!'ŽWûý²¦cŠÎ¢}IB ‡à[þš·´^‡xµ—…/ÛÓNIgÐÚ‹¼›ÏTIÍÍùßäg›’æ àÇãìÄfëƒàpÓ–ÀFœ†qºaœØ‘^´OÇe9½áHÞ„‚ä·ö¶­‰Í-™?(‘„ž¾ Œp8=(¸ÈvïÅ€hqjr&2Õy>Ãð;Rã­e†§O’ß{5¯"«íÈk«¬°pŽÌòéf‹BKEÖ6 âóŒ¹/s ×ÌO&jÉÝíÞ«/QRT°ÙmE?k[ˆ³ÇÛMT‚Î ö¶ÑˆhüpJÊPˆK…”{7¼)=;Kïz1QX8ßÒÈFwm\ÈOJì©¶nžv×Ñôn”Äëá9*ZyÖ¿*Ä6V 9cï1 ¦êÊ™ðE]FÝ£˜}ÂU BÎk¤€Ô3yï]ðBϨãËÌ™—¡Mv›ìÐ#ÿìÑÎd1þçÞ8sû|^ÍI¼‘g…~côzk¢Êgi?Éy3¨ØJ<ðµ×“†‘†!vÁb#ØßrD/á™IÖ0/ÅöÒ/ÈsÐ/ß0I–yWƒêe4¦+®Â·ù½Æ“ ò׫‰MžÜ´wé"u2hÊMþ×°wñž%ú0ɧ l¸.³ù̘k‡=—nkÐKÚÝ»"ÆX {²aúô°Cm'÷Øâ¡}Œ÷p©¯›ÊùU8ÊXiº8Ç×I™€¶È´áÒŽä¢]i ' Ê=Ï«^D+ †$— 9‚ÖM𩇶/3m4©ª3“ËÌ[;f]• àYúJ¢,~r˜™'÷t®ë[o³€® ß«¼œ”=F ¿mœp0ÝKsm=e»±‚¢8BN2Bô§É›tï²<¶cq·cÔ †y™1̈?²+k˜UFŒ4Iú"¹Þæ@„À¨Õ íƒ&ÜQ5ÇhLïŽVE3î˜Tv笊$°ã÷¬ZÚè{ðyµ0 ±on„›(Õ ƺ@ÎN¢mçDz ìÕÖ„©°ÇßYÒbhÃsY‰zâÔsqD½¤îzß!±‡:ÅÆ ’Éõòþn*‚JM–-PH‘‚*ÜbW í"Uꦡ&VœïYöú‘ykSùÂl¦³LaLèÕªàî8F]ä*á  Ù§ÞQŽEX0e³ÑÎ*»¬Ièk Œˆ]?<ÐÎâ~Zè&8±G8¦l±‡¡ÜÄ <ÂØ¶i#RRUß¶¯˜ñM=–hÖ÷sè–^41%—ñmÜ·Ä·ŽiÈ]”8© º^ð]§OX… ´[ bÞð‘4pº£\fÅ%ÓY§ƒÁðFæÊ´jj'‘w²]‡[z Q§øßpgÜ:>3k •\åÌÙ>\šÆ†B»‘qclƒÁa\RcL3‹ì©€|2ø"AgWŸÅ¨K¹¦Zž²ÑÄÁŠ`;q,}˜£ew”C9ÃÛPÌ"Í^³õ†b¨¼ü?d‹õÉáL![c•}&ŠîÈ$†0²Ñì†#šÝ]5ÄÈZ¬î²³]+ƒèƒÁxB ¨ÕtD¥æhéÎ'uj0@8.l1¸fߣ¡”9Ê ßö‚¨7­<¡p™ƒ$–û^¡¡H1¾¨F™•˜&/¨¢ÈCs|ÉÙCù+Üž†9ìoóÖ(ÄΚ5¤x¯«ùàq‰Ey8֘׹ 'Ê<dJy°‘6Ê3çi³) vIÀ›|ÂËGÃýŽ<#>ôHfnÉ:ú3 &ØNåv5ë¸ç‹2edÑ/SÊ9ÔV+HÖ‹â Wcˆëjö±pûÚ­3þû‘»×Õ, W =StLÜK{Á|T‰‘ÏèëJŒôq¸ƒGñæÒökȃÕaöÖº:Ä­Ýb¸rŒLhôpÕ!mœ²³4<Ñê!‹Ìw#ïóHjºÍrã× q€S!9x3<ðIˆE%u~KK§e°vz©àañ`]¼ñçMŦ”Ê m  ù8©ÔRAtÅZ®­‚ZBvø¼ÿq™Ò]gèÂ_ûg€’¨>ƒóÕÈ‚`@eS«LrÂ[By†“B.ºÒµóÔ4¿g¶Î¨:cÞæ^ŒÓÕ2?Ô×8XTFuß‹¼U)¡.õÃ?ñêÉ9š*æÎŒÒõD°Hœ$¥ïdË⺇m¯sª«¬idÝ ×rGƒ{é*ÆUª»ØÎtR¤oHU"å6fŽ•&¼ÀOØ”o è:¹.Þ‰Ú¹õ÷Šè= %P繡uN«­»S¦×#… Õ,UE”z(c/¯7çÙ1ý®Õð²™3Îö [Ïm“®9;QªÞ ©]:.¯¢–wú¹ÂµWQÞ{@—ì^Moc6…À¾oÂ|+Š­Y«üjP¦Â i«qäÌXgU F¶vÅ…GŽTç?šr‹Ù˜'LAЦ›W²x)á¡Î#ppàmÓ¢ÓÏÊ|Üwt¼€µ€ ?Rb³2ÝLÎ*8¨Õ‹_€@Úý‚^rÁÈf^³ð†Œ ‹—ö_Ð÷V¦(Ò¸`µ^€J&rüq]ÐükT Ô¥G]Jj7¦/UȾAÝ}Ðû,á6“@rÌW gíT~vв¶Á\K+R27¡ËB k†}F÷î8ÔÀ]P’G§«ŸÆý3>Üœw?¬Ä?TAS(Ø øãô‘`œyÎ|>äsÄ'€6 Š*88‚Ú‚@êÌi÷@m: L{F®~µÇ¨?QìE&>#veBh"Í,kÑÅqAÊL‚Äxcq¨Ùqx‰WæÐ£>vh}Tv›YÆx×5ãñ_ÏÔ¹¶‡2}9ÕXj—S ~?M5&F”‰¼Ñ;]uü÷ïÊ»wåÈV¹$¨õÐ t7…ÿ>¨“ªââ§ÕVÄ$zendstream endobj 658 0 obj 2603 endobj 663 0 obj <> stream xœÕ[Ùr·u^ï'äé>¹†‰îû"/Û‘“Ší”&‘].Ú¤vR2IYråçs˜4fpQbªR| ˆj,Ý}ºqþ²½\ ú~ÿ|¾úÓ·A¯^­R÷Z®¿˜ZOW¿¬äð‡ÄןÓ³–²ÖÊõñƒ•ä¥Ö½w~íBì#~Ÿ¯îwßm°˜7Nèî·#4µô2tŸ³îÇGí\¯‚éþIÝJ+bwi|2vgÔ/¬V›î’ä}‘_¥Y”wè=¸ 1b– j¢O»îei2ghj+• ?ÿôq\%t¯#iu| ¾"a• )”냶¾»¼N;5"zE `wF…`"ßheû d÷ Ä*ÆcÅ$‚i|ÚžôÑ‹Ðýžöä¥êbi¥° ÍmµRv¶N™î”$\o­é¾ h%<Ù†fŽBJͧÎÔ.„Ðm’¸†òvØ”1!ÖsO/Ïò:.ج{2Ô¨»†î§eß*Ó‘ÌzïxõÍJ aýjlø>aÃ8w}¾²Jé^Ú©çÙê»xóÀ…µM¼YÝ?àÍ‘5T$Øt=Y×d¾“G)…èÜœ°Ý×G]ÁØî9–Ý|TV’[0 I†¶rp3p‘g„70#LcµtÝ%—ø‰º  ŸñÙφ00ðúyjK|e´”:@´¾\ÿá~w\pó(ùã”ëFÏyƒ˜¬Õi§ÊXÔ>>*ÑuÅú/ìÙ½ÈÓ%Ð^¦Á¡QñY~b"ÏÊŒ‡çy#¸ákæ^ƒÌGø#®ó‚^èI/aà§³SQëîA‚/\^ÍqÉžgÇ`¡ÎiõlT˜¬J]Z"#Åõ†f7.戼¥°y×òDìUDTéáwl¹a ­kyo-2Ì OIÆ Ún–ðžÒ£ìG pÁ"p›S#º¬9Š?8ÚX`ÃÌô®W¯•™Vaš€ ºï/&Œ5×V `ÕÓ$õ‚›`¾õQkŒR·®y‹AŰ_u¬Ö8aÝ^u*Ž#ÿœ–ŒH ¡µåJQ¼¾´¦ kß#áÊ$zlÂX¬÷QŠÁb÷h +p¬¨æ–<0ïD\Wƒfž@ÚCêÁÄÈðÓÞ­¡Ä§fNI9ÛôØ÷+XÊ"‚ýÚZ‡qHÙ8= ,4õìJÙsã 9“¦m Xp°ä”Ív“¬”M×ØË®íœå&8yH™òHæ{`ÿ}S˜Xý¿€‰pƒÇÿ‘²_øÛ0 °F8Vƒv넨zM+©ÐÇèà¼Úvî”ÔÏSqê·œ¦Cp€%ç¶RB5ïÒVåÎ f pv†v²2° 7^h¯S¤u{c·>z"("Ùµt?UA¶ÁËQx{à’ÒÏôX€«^ƒckÓÏR˜^TXr½™¸ƒÃ„Fh6dkí]Í-NJ,>Ͳ8zã`ÀTp‰y 2¶‹}@;Y•Q‡²*ŒóN½CV… ‰ÔÍXmϹîûŽ©Àì4ŠèXÙ4w‚=bkŸ$OüJ-nÊEÙ¬y—Žèõ “Šv›«Nó©îømp›38~НøP.ÿýSëîaJ;gÆŒÐÎå$&u6›FúÊ1W§INËJÍÐÚŒSÒI ­#'-€vØÅtvN!¦öů¤pâ÷_ir‰¯޲c˜“‚G¤Öz ;õQ×áxõ’Å×ÏäUiáÕGû‰7s iÓ\EH3óäëµøKðS‚êö¬aû¥2/ܧÙF¢“Øè¯y’(|3¹ƒ’Æ2A‹‘¨í^.¡`1žìˆ×ã'‹É‰¡8tÝP¡=[Cö|ïo2ûüÄŸ×BVð£z!«7›ݰ{±ßEt‰´ù&ÑìöèÐnJÍ+AVzÚŘé½6:Ôñqw²tQ±ÿ½zk"´,IçG<Š36ÒTÄÿ§8  sVùe)Ô 5ë³)GQî‘IÁîß#Üf.vFÅ¡K¹eâ}Ĭ”v¶‰ºÐ; ”¡"!'§é/›h¦kJƦæõéÌ8IÂtä îüà"‹ÙÛž¤‹*¸A8{gC>‹€íº×é–Ó"kŒ•+¨™6  TH°c‰qÑM PéÎî&n?ÿ Fê=Î’ƒ|.Þ¥Ïç%ÎÜçé:DyÝËà÷Û¾yå¦úTl êþqŠh¦ð0)‹Ö:¾Gó§Käa7Øâò¬£,¨ƒLd@ÆÎ)Ý'Ûu0ÒÌ¢ÀŽÔT'[€}µÍrÅîtïVl¤FA\E5mб† –O÷TΊ„x;rô4ÝÆy+LhH û(9»1ÙW=Âz†å‰N½dô›q¿eë[å|óØK@ÓkÔçväìÔ›³¯p~U#d ÞÀ–dT¹Ê Ý“õµÃ4Œ Eœ9,•° ÞVµOy0*­„f5ì,Ì¢g躚…I*ÆqXß,baS!‚ZkŠqèÕRЧé™” IËQø†X˜Ðá)åÛÞµ+¶YÛ·xìÎ’iñ(/¢nGÁ(¦Û*¤²¢âHŒá®Mƒ¢ÉÎî”@ФJKÑËÏxëþùQôvb+æÄl‚ò׈7†V½’RL]Ãÿt×wÐ=ɺpØ5ɲu-M1„m%ý5«úÙÊõÝ;Ía±á7dd¥Éöë‚ò’h~@½ §<ïQ+_&õ¾–n×}ÕÕÛùë£é1À6 +!šºœ ¤L½Å¾ÔêË’}¹Xç ¦û4i A¸ÜŒ[§ .Vnø.˜Õ.* V=+¯'V’f— ¸ã"¹ÆµC¢ø®ª®ËüÏÛF¼Î±/Uw¿ ‹t÷Nwäbýí_‡Æåíì³€ßD½o¬á‹vË÷ë²ì#Vñ>¬xø»ÿ–5}ºU«ý¡ÀcHvLù³R61üœ´#m ¬¯ó•î6 R‡ªÀÕʨ²AuTF†ö ÖYI§w Ù}ɾFXb9% ‡m4nA>“®¿/ÈWFAß†íµ¶( ãVÛÛÛ°=ŽMp°Ãö;‰Rz_s2i‰½ú¤I€r®ÑŠ f€²ùIb6 Bv E±ôDƒ·ÊPnõ!=h ±ÉÖ#=&I½UûöóÙùãæDAö¬Hïrþ(³ÛÆ ÈôæW/eØ_ä*‘™|ª•®*ÀyñRŠÜA’DÒç%Ñ›&ǽ–}8üRãF~™›i¶úJ‰Ø]5æïCØ™÷oˆ‹A‹×¨-·-w'îÑäÌ(šƒ­^VÜŒªdÃŽÙùÍlz[0êdÕ+g¾0%}*¶Ð‰«… uõ´Äïù—IÞ _3gv×ÏV´ëtaË·\%L[•·r[ C½~Š}˜.šUÉ?Õ·M}~ÁNÒƒÉùtÄ9GUT¹jö4FëKfåCr›oVGcù6®x™ó’á‡3½ƒ@S¿®Ñ%KJEÎäÇúÞcúž‚&—™/—YCó¼4_”æËÒ¼>J¯ŒúdÜ˾[ã^­Œ5tËO®L߯œ£ÇÓ‘1õìúne¾ï˜lj©ññuS‹Ç¥yÕl>/Z\4´ˆ&ôÆóíGìŒÍo?Òm½¯·_L˜@:4Ïšþ`½eû×Ëí£~W=7¾Å™Šz›Ýc äuYïžmîd†Ü¼lºäõ´ûæ…¦ô™Ôü¸³1Ŷ&ïÔtÈÝK+3<—K]Pƒ5Sïyiž‹Ò{]šŸçóRï‹Ò|Yš×¥y2ëÍn|<Ÿ—í!5¯J³/Ã~n.\šMKÉM,³&×S.—é >VÈB”†O†Ç‚¤bOB”Ihê0ôu\’Á8‰tÉ„JO‘ÊàU¾=Î_»•ƒfë§Ê¡ýi¼§ðd”T+$ü¦+UmÀèÎh3Ý > stream xœí[[o·~??¡Oç©]ÁÍû‰R$)Ú4F“¨OI`È:’¬TG—FAÿÞáe¹Ã%y´’Ž-üà5Ï 9œùf8CŽ^SÂÖÔÿI]¬^}kÅúôf†×lýUþú×êçKÿ ‰|ýçÏ!׌§[œ¬X¢·–8aÜZ[Gœ6냋Õ÷Ãw{û°˜QšËá×=øœs;|‡¥¦b8ÛÛZnåðO?Ì™UÔ 7@M­±Œ¹áØSŨr¸NôÆ _‡i¸Ñ0|ôÜZ§Åpé?aLèá.|rÉ&8‡O¡—öǃ¿ù i¼!NÎoë`[øÚKÇ©†)¸&V(3\ßQ%u†û€x&—ß\KÙð™ç„U¤ Lc‚xÌ8Cíð/“ašJØ/ðB‡eüÜ T¥±ÑZO¡‰RrøÊSɨ0 ?³£Œ LÜä° 6 %¥u‰:Øf3Ét}wà„ˆ{Š÷ ^o&>,*Ú£Wë«oV °`׿¬@ï$‚CjPîúb%‘?Žœ¯¾[I02G<}û—•uŒH 4Ò©È•G´€™Eä2†ÀäD•GUæŠ'ñ\žOÚ@5¹Aü¶~Æ(¬®ý‚RðþWÑJœ*ë¿Äh>ü _ÆoAGü4~ŒÆ¯Ñø­Ÿ†ç’Óð{D~ìI$QÀsDr… s„ÈÑ÷y’ 6匙õ´ ÓTô7Q`ˆ¼B$'IHÀìI=cÂu{v,ÞÔÅ´Ò"¹D$·%k0ˆaÅðûR‚@¢X±íóZ€ðý.z™uNÕZõ63ÃçV¤ƒì:Ù 2š3r Ä'äf4C "²ðð`ˆ+ÏÃ7•Ds³KpèÜOjxVŒz~IÃ*¦£%ÎÐðkDNÑø'mòOGDÉQ‹¤®°D ¥?ü°‡þdíºbS/ï‹ë(òo‹,mˆlŸm˜íJ5‡x‹-íùÔs#™&ŽÛµ†ˆ¦„ˆ–Þt,€µ‹ ó@ˆ ß8’à¸ö¶öû­2cÈ/káÂ÷ËŽéqÀ!µ¦ãÀ¥gO{3P`<-@E¶wUú¿rÌUø¿çc»ñå4de6¢â÷Ió}©'yŠ}°ËÊAÆràÓ¶8á'ªbv=Ó€æ–h¬ÀÇw¤msIÿè`¼¿¢ñÓ=‡L瘒]È_ ñÃl£Û™Âë!G[Okì˜;æ‡ÎŒÏɆ*úËž®¨¹Ê:|:i%¤È(žÏÌ@—©ŠÙÍ t2?ƒ§Jl;Áœ°DPÛÉ*ã¡w°- ‡1¬½üòb:©Š³»‘öUèÛLÙã]bÇT¯1K°ic/Á¿;Øb÷Ñ sã¦b5V/fÆs»±PÖˆÿgH5CšlXšÞ•–¦1[lhÏ&žé”)ARJ=–œ²—ðàŽ}8Ôh¨¤›92Q8Æ÷ $lô^¼?ïä7oMc­n>T ÑH²ž6éÙ JÝ“ƒ)áó—1†šWíR».cí«¼÷)â5KÈ"úÎüàOõ±ŠXÃä[°?¢ºpQ9é 5E lÏ rB;Â4‡Ù¡ 4¢8æÊ\«nÉÌ¥^†¾ª&-”Ê+Ä4¶ŠTØän„´PGq»à<ˆw69(~zÜyð"ùôaàŒó‹°³ó ›°°¼œù„†bAbŸˆlÏ<ø¹ƒÄ’Áì>´ˆÝž½‚ù¨öŠÖZAåÖþoŸp[OÅŠˆPò¯õxÀRö‡-Á]úÄ,ÔIˆÚ¥G¨çº|&( °ûï?¢ ½©Y Pà©"P¡; Â+Ea§¾Ÿtì+åÄq\_NµWðuHŽnE¡ªÒnT‚µ õný;~YœK—7ONíÆÈä$=ä5æøjÇ? äá ö¶ÜÀøÊ°Å© 0C ãr„X†à„0ŒCϦŸç°\@… þÊ91"ùëÂÊ|«·^œ¾ée Ë¢ó<—Ê€xÏÚK€Ž‘µÀw•ÿl™x4^as= 5ÊV]„šÀ¶£PC-án{¨ù Ÿ•†IwuöðØÉÊÇ‚ƪ3’V¼5ô.;–~‡Î;4óÜvÎ|>^Ò¿ù²G„Ÿø]‡ŸÔã1¥hÖ­/Ç8Úí\gÈ–H/C, ‡Ƶg3Ï,ª®…ƒ&SìÂþ¾ÆÕ“rð§Køhøuå6x¥*Ûô7ÔRETø:¦± äÍGkà¼è˜ð¶2s4ÿY½ÓífÎ,ìnÊð% ”ÓZ#3'¶]”ÎÂ8˜R>â±ig¶‹Bfíóy|ª6£vrÿ+´„ßÜc„ÎòÛHòd!QÃc©=ßóµ'‚ƒãúÎÀ[)´ÒÛБÅ)¶!f2 F,¾€ lV,U1y¢;‡@ ÈïêG–)·4­ [f,*àÍ•oË’Šªt1©iÈ*|wšñõ‘oºR” .} ñìÔÙ‘ÚP!SJȘä:öžå dªJ¹4_èv»Œs@ÉÖQßDjfxÑýu¿‡"B^0 jU’¥3°JUè‚KâY^úÉ!ÆpæBE%…pW«dÐïÆÖ’;,sI„›ŠbG^òtšü:Î"+÷†¿óö5ë$®cA”“Ðã¦|^#©zóm´WmÅÅ>Aï*¾¹‘CçÁ}|1™C[œpÚò0Kúô²€ý˜qŽA1²42Û%j“´Ì¶kÙ넹Òà‡m»aµ`AˆR !¨¹aXüRÛõ>œMRúxà°[ª]k‹~SL7¶XÚ&6r‡Ñ€ Š ó®íYˆ˜äO/Ñþ(Â>÷­†:‰}š/9cj›Ÿ‹ w?Rwˆø!úAªóM\ƹ¹uãáŒÂø¤ùá¨':–¨q훞ãÔO—7£ñf®šú+ôK ¥ÕðKÕ¬*ÕX &+Þt\¬í>¾=¢}ÆÉä3Çù3@’<º×\;؃?,a j’<â^🭜¯® Ñ3ú)ˆÔn,“²÷Ó§ÌnÀ•F¦Ï­Ï–?M4¹½8I/ Ü–'ïxri¹ß÷tŽ#øèõ6%'9<¼D”½ Õ42QeN';5Å\‘o 0IÕlnx°¾Ä= ¸¨Á¹ÿý”ËW 21—_Ø‘Ço¦Û¶NSkï’ì¶–±ºÅÄ5pëTÉ¢œ¹ë”“øR¾±©±;÷áB`2ÿ6H¼;j\ð>ˆº; TnZ¹Í÷WPô ¿ÜáðUCÔ‹šŽ& šKÈZ¡Ì@ê‚õäùÌŽœÉ›J%M,pŽÆ WÕðs^êmáß{ÂôÓ ¾Æ÷07¥ÕÛ ý€»<)¢™ß!û–.ZkUÎÛê4ÅkU2TkÅ×ÐG¯ÕØW``½µß=7A´€¶)žYøÍïùønžÁœ:Õcï wS6n!0=¾ ýÑ|‘j/ë1.?YRÔOÚ)´ÊË`œ…œ é0ðÙÝfÀŒZÕ­Kú0Ž +ƒñ-B Íã¨1Q€ñuߨ6Û»'­Ö²3|+ÞI.Jk‰á[x|4Ó|¨ÍTÛÇv&&kDÿêÁ®ý«çÄózcÍŸ‡ÃÖd°ÂÐbærRø<›Õ󹹜´þmp¹]{‡0~×±=ÆnÎÆÆØ¸±ä¬3Ž[9ð#î]ǬG5<ªëñ¶ª3½8ÇŸ€ƒlánæÞÜ÷°îíù¤. ¤‰ª˜]Î0Å”¿»Ãsq§Ý¦ü%‘I˜ú¼ã§'9û]òÿd–é1ï i#ïjüŸÓîÆä†† Ôqd[‰Þ¾ŸåÆ_>ˆ5L-­Iù€î,DþÌûøfõBºIHendstream endobj 673 0 obj 2989 endobj 677 0 obj <> stream xœí[[o\·~ßþƒ>-ò´¼Ç¼_b£€Û:Aš G$aK–êVGk%Ò¿ï yÎáÌ9äj×Ù¤}ô°wfH¿¹œýi):¹ø×ž\.¿zy¾Y¤î¥\~>¶þ³øi!ûDO¾üë1r˜¥”]´V.ϲ§—ZwÞù¥ ±‹ðy|¹ø~õíÑóÆ ½º?‚¦–^†Õ'¤ûíÑZ;ש`VÿÄn%ƒqµj|2®Þ`¿°RXmV7Hï;àü2IQÞAï+ W!Fr…MèÓnu[š„àšÚJeÂÇÿÀõ8º%t§#®êøVð%›¨ŠP® ÚúÕÍû4S#¢W¸˜Q!˜ƒ¯µ²]rõ 9aãaÄDb|šžôÑ‹°ú3ÎÉK' ,øpU †AÙV+e{bë”Y"…ë¬5«Ï‘V%<ê%G!¥¦¢óµ !¬Ö‰\Ãâm?)cBä²GÆ›7yl^{RÔ°v k?-|tªd¨ÖçÇ‹o –¿,¾KØ0”»¼\X¥t'íØs±øva`8ÃéŧÈ;`2Ñf¦¡ÃÁGÔ‰§à¶‰ÖPE«‰qzé¬î‚ïѺÉzUÂö ìu|Jú?&ý“þKÒÿŠô¿#í§¹-¨qCè+cQù‰žŽûn>V¢yKúoHû)i¿%ôW9êaè9 8"ôOÊ[09¡´ÇÛˆIøJ8‚Ið¬àïM‘4Ù#ÕèE5øUøŽxѾg7|G»-~Û¨ÁÛŒïÏÐ×;kRpYk:!MÞ=i¼€Àû¯¤!)Jñ½sZçpkÀøÕë£5D6ƒŒ×GÐÒã~Ɔ1FžÀBÙÝÁÍ(*ÁI„`F½]Ia„M!½O¨”GËì„­Í9q¦ñ!´Í&UdÜF*ämò䨤'”u“U1qõKZ¹w±){P葈¾Â¸ëƒóll*㼨§"ÚĨVÔ Äë°E­i•þ³”<ëq'ÇQk‹0B‹Ñ ‚7C6ÕÐòým&Rc#5ÔTÐ]Š Ñ˜‘LvéŠ,˜0újpÜG©œº^"p…ðšO¨–Mw´v’Tg¦®!·š!,Qp2Ê 1“tþU}e‡b,uÕ^‘•œãR½ÝÓD Î¥æiRÖ|AÁ—æ¢Þ²¬d 2©#èýŒÛÃÏäOùùˆ̆g„÷Ê·:ÏksDwÚö ¹û®mlúОÇÈ!fYí Ïü‡#ÁªÎLh Ã±YˆJO¡e„Pe¨$ಇɭ2pÕ9B>&ÙÚãFXÉ|R%óIýw˜™(8X™iú'k¹ã,—¢¹×&³Â†²´ð »Mg3†Æî{"‘Jy=Ϫhæ8=×´3¦²=lW-˘gº³d {¦ƒl¡ˆp ócß}c +KOýýVk»#Ý‚hdÈ]ïG—2Pš!-+¦¯Üw0¹ó`,±ª}ÇR»ŒµÓÑoÄÃE3àã"Þ"\rŃ€“zeôAAs¿/hîhî÷M‹aÐÜï šïM‡‹;Æ;Ó‘£Yb’‡ñ4&ˆÎÇÞÓïàüi°¸"ýçs‡›úß”`A£Â Q! "ñ©}Nè[7Í}¤ •‹­9CËõ=ÚŽôù=ù}ç•©M"‘P­4'!w˜3™êa›Íƒš “Ȳ_IïàZ¦17ø'åšm}Ñfb:PÀƒÜ?“6ÏæZ €LýÝý3zšÓ«NzMGwåt®Î™ƒcf}Ý z@Ð^þ• àÛÆ!/­É&!“>äæõñ÷Ù¤wD=•ÀÌ[7è©y±»ÝJ›] Ó'ŠÎŽ$E|h61ì#Û}Í-RÀIFS‹LL²HðråÃ6{ÇŠÔ¾mì ‹^ö¿&ôÔßnæû8{£r¨½mìõI#Ë 8iŽ&ÌsÔñ€õ›Í!¬½ïÈ­Fb2†EΑ†I6 YÚCæj²2Óa¥=œˆ}¬¿7r6¼Ü±'ÑëùÞ¥þ½^Y W צD—‰ÅÆ“jç;ÿx þ߿ӓÆnÐɨ`H²Üz d¢†œòËApc!÷æáÿ»a £F¼'6;½OÎb¤±ÒVèHç»-ˆñÈ0Ì« Þ‰^2[ËÇHÄ÷TÃõ;P©Îrý>ôâÉX X‰ðµ'cw±ýdLÞj6H`N=t'Íäãñ %ãËÍæDg §V©ÆÚ­g©â,‹‡/lFTfœ,HÃ| Ìô|»<Óá¢áo2ì¹­öŠIÖ©²š\ëaª€JÏXôa—=m¶>ü%ÞMI'»ª¼1—ðúSÏÏGÄ.[lI3Bm{êK“0þC^Üx SUÖwX²–=DæÍ›Ž6´ÒÐæ­vý.UZïbÈݲ’‘ÜuÎ –k §;)TæÀe•ð¦>†é<xéna_‚³Õ%–•ùÀˆÊ0 QÑó!³wêÕ˜Täº]4$!x+p.{hHJ?™¯|PCàÝÂau4s¦£ù PËï¥x‰ ãòŠ€Õ‡n˜”’fõo‚ß`蹬tÒþ~Ú› ¹#À°jTªÈÔÒ×½„þµëJ­ê R >=׸ÚÎj¬QHä®w(±x5ówÉÕœW½ØXá*÷)S*³dHáßk-;‡³VXÖêz¤—€2©—‚°‰ÕÒ«Osú`!zÑu}E&ø7¤†ã?PÅâ×ó(1:4xÜgyämhÅÇ;ÞF À­Šº9›¼,åfõlwR¬Ñ÷™ØùÐçcyD²ž?a·’à¦U3>T*‡Ö%ÙFiRxõjØURæ°É:ð“ê ë^ÕФUfsðõ%F8nTŽKÔuKD¼Ï’¥ßV‰•QáQçéJß"X/2‘6Š E*-šnâÖ²`^Âó7ƒÁÔËm%¤Dõ@Q -ßK%TÍê½4¤óªUo4¯þ¬° ÂPvNjVt—Å^*uÛØÜ«¼* `á™”±XióÓB®ÿ¯ûÕ(Î-Uç±®~HG‘Éz}ÅÜ±Ú !YX3¦â:b "Ñ€œÐoÙó¤×±ô&.`KFó]¿Q&V ™,ï=ñ ÔLhPŠÖ®‘$Op’ô%üV¬'ø˜V"ÍIÛ«‘§¥]=#H8$ˆrF8IÒ«¾Ú¬oÞ–æû±™mÆa¦ž¤OËIãéxÒHPí{_•æûBð¦ôÞ•æ“­gc!»ñ¬Ò°’zÝ´T³‚ÌN† Ý:s´níÃèªo œÍ% ›Ý’’8º‰t6zÇ]jÑ /ŒC!I: ÷äè­„ñX$pY:> stream xœí]Ks·ÎyBNS9 )-„ÆeùฒTÅñÁ6S9È:ÈzØrDÚ&¥¢ôïÓæÑ˜×Î.GÔ*;¥ƒ†ÍFh|ý`À? Πàá_õÿóËÍ£ï,~¾ÙDrÅ7ÍÓ7l úWìÅ_/B U0¯5¯6Pñ;Ǽ´¾0Î3olqq¹yRþp¶Åά6B•ÎðQ !\ù÷DV†ËòõÙVÄSå¿Y€ÓÜ—7ÈÍu¾|è\×R•׿õå·QŒ°ÉÏ_8ç,¯Â#Ò¤)ßÅG¡@S†7ø(5åž^ü3LÈÐ .™ôaZ/p ßfå7(B椶åõÛ8TŽa8<…•ÇηRhæ8”_…–Ø‹²ØcdA16¬·Ü•c²`¸Âùb;˸ØM­QUºb¶Æ˜òEà0LkU~8¤.-*'Hö@Rn:ÀmdÇI@=(¥œ¯¸ãÚ¼hÇtý2ÍÀK™æUÏ;¼~Ѷ£C%s jýÛÅæ» \q»A½³eP¹ÅåFY«*¾¦¼Ùü0 8¯'§%s¶\œ6 °P¿Äi#€¢–ªI‰ò· t¥9.cÅm9¨æVÂd:½NjÑÑ4ÒPÓ:“qMz}Ö`™6¼©bEBdÈ5ò2uhPŽ7­¸›ßVðÇò÷4ê²Jˆò>LrÖËrpÓ°¼KÏ\!ý9!å˜FËü?ˆy[éMy@‘%›½3pE:Í×-ppÊø%cAµH…&~ÛZÖUbΖ”7JKîµéôЋÖÂÐäk'ðãá`q)Œ26¹’âs+¼fd±•À Â% Ù]üÚC²C麋'íC3ÓÁCfrñ)ãÅ(Š‘`¨Àb ¿K,ÄL—[‰±P0­R(<ÌrCÝËYfíó.Õ<ÇBtÞÛ¹‚2â\—qs4p §}Á>j‘èr8ô€¹öÍÓ‹9 @—q”&pH¤ñX–|ÜHs°TÜ˲žê˜¡™…öÓbZp«†ãÌ 2,î±Úž9©Ü¬xœ)/]^a&#põÞ8h˱Ùx›ìg,‡ØUö‘&kÙ·–}kÙ·–}kÙwe¦NL›B{Ðá]hSöÕ„CÊ> ²Ð(Á}oUßAñ÷3®úZUÆ»}§^ôõ°»èû41êÞLàâ̧´€UôaùÖ¯ùFûÙ é°ŒñÅV†S.CZ½‡ˆžäÈ^>þÎ"X † ­­d8ޏyèCÄ«)‡lZ\r”©L˜ùÜÍC‰õ]Ü<ô3+E”÷ Ç÷Q%Jb ÅóåX^̨&5cp "fþj­&×jr­&×jr­&O¦štXME‚b¬& Ü%(:ÎbPıb ;µmÄÝÆ°{] Êã,(÷õ†o¢kAyo»ˆÇZPÞ[¨Ù/ÃÚk>»mÄp <””\sG@=¹ˆ5›ÓÕ6¢³âMÜFT"sΉÏ1ÈÇþÞÜøzØK„cÍMÿO*²cðkE¦÷Sѧ ukEvTï!*²ÞÐ;>>­»¶Æ»}_å6ñ°z*ãWZHì"{ˆá¢OàÚèǸ¾Ç¢oÝE<ŠŒ÷䋾uqÝE\wïõèh§æ›ÚFD¨èe¶Ó7ˆÊyÍ€|‚XÿQa– F6sè |¸–‰k™¸–‰k™¸–‰ÇX¼L ‡Iœ|kjãÑY‰>TBV_6a°ª ‚Õ·‡ £a<½rb»†ëLJkyâäúñáúñá=|(Ãýaýø×¯ •ÄÑCUAZ»«„t`ÔD ™N¢*“–œD­)‡ŸDUJ1Ð{DuÜÏz©J¢æ¹ÃÈAÔ˜E´+9ã êz›ÍZÏ®Q½žýlP¿Ö³Gõg×AÔ6&ÖQ遲¨J fÁŸ\I¹D=ñŠr=ˆºD]¢ËAÔNI‰u •¶ Ñê¥Øè?g0Õ\$ܹ@—\e{UÝä,v^ßkëë{ã¥ÃôZrypºi؃K·Þj ºŽÞ…ûŽˆ¨ïâ-¿NJ‹l”#·Óûy6=7…±b\·›½¿ÿGs™³t Nr—sE)óÀÂç¤XŽŠtásKÑH1‘  æáj)-WÓÒ`5íU& Û)¹ÚÌGï-wƒéW,Ø#­©zÃý<]°-Ð$‚Ò³äÖWÊNtT¶ɬ…ò1!?&ì!ô¯[ö1é/ýeËþªÏoþ¾&M/Éó3ò)¶tÖÓU £y$Lt§¥¿%ôßû¡¬F D}Õ`°A‡@•Úé… MI&deh¿“ÙP<¿&ô«q =Õ Õ/¾"¿”élo5³Ï´¦;€’KLCuÚÌ[ÕI¯¸Gð#2OZQæé{ú~|É93¾ª³.‚{·@^xßÜ—n&îÇonÓu¨FK A‰„;ò˜®g×FÓëÙ³P×vñs ’ÞÎ `UP¶#ã!±u8W —؉êº÷#½¬=æ ¨ÂnÒRY€ÿ‡ziA/áºãšB GXéÃõ%¡_ûëÚLZ®–Òr5-µÇu3™,lgîä§¼/³q:F†/‘’ÝÔîE‹ßº ω§¡ô§„þå€ÿŠ?¼'LœÐÏ ý=¡sB¯}\üÅ£~ܦ¡(>ßÒÆÔ‹nI$þПN|>'™ë+-ƒÌtnÕÚWf—yZ ˜¤®šõ=# `‘Nßž dá}ÜR¨¸ŸÉº`lò½Že«®w´;\ød(80 ïñÜ- ßo^4ìH¾§ ü|ÈmÙ™bÊÿÇ¢Ôy~cH™Ú<€ÃßÙ,„vb™(#ÎN),—è·àÌ@-òˆV8&hĈíÜ2#žö4‰þXþ¼&úk¢?+ÑŸÀ}ƒèÌ\Çuk'™£®;¶“ ¹nMouÝ'åºgdj°m™¹³ãJútì0²_È]+´cÖMð?b‚?a º3«ð×-¼b>sÝ¡ZÈuË`†kڽϲ5 ’-¤ê¸.М©Ìu…¿ Îr]cú™æbš=Cq>¶èc9蘳ã=Œv—-ô¤ï˜ã_îR‚dÎi´N§ÞcG’Ù äÐk@EÀØ€ 1á]uP/«Þ™vÑèÎ|MÙÿø¾°á ‡,\دÿ2»kO*èþ—ußmþƒ3>endstream endobj 683 0 obj 3165 endobj 687 0 obj <> stream xœÍ\I“dµ¶¯ÿŸêøjL=´/8aìlc°¶/Àa0³@ÃÌü{)½%¥'UUÏ0„ƒÃ¼VK©ÌÔ—«Ôü°£Ü úoú÷þã«·? z÷õñ* ïäîÃå뻫®äôƒ˜¦ïþ|M+ÌNÊ1Z+wׯä4_j=zçw.Ä1âßëÇWŸŸíØÌ'ôðrO-½ ÃûløÛýA;7ª`†Ó°’ÁŠ81[¤ŒÃW4.¬V›á†æû+?JT”w½‹é*Ä*OècÚ ÏÖO6á>µ•Ê„/¯ÿNò8.zÔ‘¤º~ >¢É&*A$”ƒ¶~¸ù1qjDôŠwF…`"6?heÇ äð.­Ä.ÆcÇ4d|bOúèE~G¤JxÒ QŽBJÍIgµ ! ‡4]Cx;1eLˆ%íeáÍWyl–=)j–]Cöë:Î*“‘ÔúÞõÕ'WP»çWÀ†6Œƒrw¯¬Rz”vytõÙ•Ácr†Ó§Ъ8b‘‰6/šþ‰:­YqÛEkh£ÕÒíœÕcðXßÎjU†á{¦â§lü9ÿb`¿8°_¼dã’}ßas^°qÅÆÛ9R@í‚ßÙî•æp:¿ßÎIß‚Ío𓾛ӣ£¶ü¤ùœŽìðs[¹dG?·•K²9oud·4óaïW+Zð½@p–pE «ËëŒ_mÅ 4­2ág4­2 ï0Œ=d²Üeã÷Øø‘Ïàî"=}¿Øj+7N{s“F·G?ï–fõ0×ÀÁOžõСÔgc K)vÛ@°Øíup]ÈSüðvÇ tÐ|À 6 HOàœñŠh8î‘%»ÒœeÝ2‰Ñ^fÍ ¥G¨‘Œ­²¡¤´L*hÛ…§[O jñØ2\fVÑžÊj,X@ê’íê]ŠÖ†¦"¢?KY: 6:;ÜgQùÑ:ƒë”+(H‰ ²! Ã/騡8“c¸4^ ¿ù&žF؂ʑµP)Æ_ì—sÏ¡,'"ÓN&FU’929ž®œ=akgñ¼.Ä»[Ì&µx¥É­ 1"±•F‘ƒÝ0زKä¼Ébé¹>·:LD¾^‡9 ƒ–•“ÃÙÛÈ|‚ðZV3‚ÉlÃßSêµ0…d€2!cËÓ\agM³›R¾µ' ÔÖÁâœiÞK)Ò\²"&‚+¶æû±œŽHfZiFƒóÍ$¦lIŽäªz–iJ£WfÉࢠ]/ùæ@“FÀ¾*ÑžæaïÝÀ1õ8e‡!kdHÆ›ÎOûÀ©Ë ‚ˆöÛðä¼UtÃ_Ÿîwìýyúð®„ÇO4ЬÛÔ Þh|ÎÝ›b&Éàùi2K[˜˜¶s:¯±0ÉÐPJ=«#•œ¡¯2F)=÷fÆè¤—l-[½$"Ǽ¥ÇY‰Î8ò§½ŒS«3YîOÕ 4u±I2IÔ3lÆ1 eê¦T!š¨òŸò0j8ÔcB¦CÂŽ·¾ÉTBP¿€›¥¼ìã½ô4[*ÅG9/“âò‘öÂÏL£§ 'ä›|0)ƒïÎCEA¢r‘Y°XÅŒE®ù½æÈ™E”%œ21”åßg :K,ΔcäÈÖmüæ´¬ô›÷Ú’ŒÉø18·qy†rßry3z[óloB¨=èY¯/÷xÄVø%RÚ)êØ -Œ÷%Lä$\µ²=8_îƒÀ‚¥ˆíc Ôð> J«Š˜z“ùÑ2𠎹;°ãÞ‡óD.ÙC¯ÒžtÉ`€L§T}ö°;ífHöíæNù×ÉfÒ ¶VO°Í…F&›[[Ò žÕšÑZÖÛúur”´ÂO³µæ³#…6T›ÓìÜ¿ ÁÙy¶Û ŒÓlT~ÄÒè£*/’Xd¥“¶¹ò¤ý¨gù’©óg`¾¹j+¥¯6RÕF¥àÀHˆÂ•Ÿ>ÝêQ^-q{ù_IÏY|ï‚Ì‹Êj¦)~ªiU°ð…=ù½S±<~”¾[¢b«!¿ÑÍó×^ù¾¢…¿Œ¬¾œ²gغÜn«yNµÅk)à¾zp; ¼Öjl]ÀVÙ\×XõZxñßšåR0Êæ€a ìçS P‚ïîP¬yät‰”TdkL†*¦ÑçVKJôra€Ôκ"¹˜gS¡ÂòÂyXGû*ymâ Óy>‘ä¡\ihSÛ*m$)y¬ÚMÈē֨Qü¡Î?_æÉv)Õêü©‰YoG hf³ÞÝ_ÿ·og»ù|%-–:‡ˆÈ—ç…X¶€fG¥}X¼ÓJzørÝ#<5€´­‰Ã?W×GbÒ‚T½BôY'>Vé"]LJÛ¯àËf>½7“´kª™ŒŽß0:[™_V˜?È|(£êáaThw¦V/<‰6ßçÇNÚ»lê ]9Ìš{¹ô.’ýÄ€Z!ÖöÓÁ~/Õ§VŽõð,vøÛ>µpLÕ¤GêàÊF_YÈZ0çK+wÌuØrÓÌçYu#i¶B¡ÁÏ“{¶Ì¬Ê——›–P»/Ž+«èJl䃩‹^jW:g¸®™o™ùZåªxKÚmµTδ¦.ª˜ˆí úýåÉ©óe'±ÿFtòò¤WtÑtkkxÛ´Í[”Ͱcј:èt‰áº¡Š„pÎB‡3ެŽò6@`õž ‰´{»œ»#D$èØkÀszÙž–'çîún«Òo<ÌŒØXJó[n©\?ßrV®rÏË;›õjP ËJ¯ÉüÔ'ɲ¬ž5µ1Užœ0Ý·$ Ão˜ºyŸ•_ °Àò$£WÛQ‹¥oû5‘£K±nˆ+üXñCÛ#gO»”¾÷ÈQÆ[iü!Êé —¦oìsr¿sÐK}³N¼8R4–Y™,N¡ŠFZ†Ñ†PxÇ4—~–~ïÀÔdåFç™ ÊØå•OÞà¢ÆÜ£&Ä8ì$2#VÆ‹û…YÄMó¬G§}¢Ù¬#r©­›¾¢)<@ÏÍVŽ ”ágç«#vå…çzÄ“|y&W+$ -‡Ì)ŒKè˜àœv-ÑüCdÏ^–7S½s¾»YÈÛÂõñÏä°ðBC³m8u/‹Ê…:§Kë\'@ó¬·ª`¹ OV JÆ=TΤZ: ®4~>Óû©˜Ž¨¦Ôå“ÔM£,à¾[>—‡ ˆ¸p±qGÇ O¿{Œx-ݨ—ºôï]õלMwýô<Á% p”Ó›°ŸV.¾]?+›lôÇõóéúy³~Žëçý•Â÷ëè÷… uÁãähôâÒ —Ÿžº!MÏ#¶;ž¯Kg”PôYHf„ã²õô€Òì¤ÇˆµÄ&–RçØïȨct2óë›RfÆïj‰š1¨$ÓuŒ3ÿÚ£*Æçnÿ¼,¿´ >*+óc%¥ŒÈÅTʉł'ûé‚ǃ"€#¬ð÷R¶/ˆà#N==9E„1:]Š;kEœìø£DÅkSñø"›‡Nñ.´!Û-4t«¡)"&ã¦/éåp“<LØØ& è…—3awý«ë;Ÿ×´G~DÊÓÂŇˆNà°VwâÊñX% K²[€²Ù÷z¬(ˆa.qOí;ÙãÓÌá±v`5ðò|U7Ûà™†{t–]×™qç«ÛQF›9ú:.'Uš~´ðTÐ~«ˆKo*EÙ–TzŒ¨Eã©lx¶ŸëÖfûSR£Ó®7?˜Ëè1ÑlÅ(|*ŠË+é¤VÍ^Œ´°ƒõ®äûÌ"…$±ˆÛÞÆ$ò²Ž”UËÒÎÁ'«Z _bçUi¨w¬‚ÛŠÎè&dô›U_©¨?ø¬=#ÃÅPãÔ›Ú‹]X½wrI&ž¼AíRéDÉÂÌíÂ¥½4 ÚWèíÉù­7mJ FD¶ÐLÈÔÂr­¼=0x ?Pi¹¹•ù8ÙsTqN5*–Â(œv¾¼.(姸rAU¦±ñÕÑ¥÷k_åM]ЇJHÙd% <"\Æ |®ðîÿòx·wAïÑVÛÇKmjüº<ÞwNµ‡D‰ʨóñö…czÈ*ôû¬tO}d?RŒ»°Ÿeõê­åqSùù \¯_TµÓ,½%Vå³¹KJžV#‡ð—™¶ñÝæïl›7›,å²¹Ø2ÈØO0’ýÉG…4ÅcÊ”'–7G§òDKŽlÑíçÙæ‰©¸`— s±¯ ¶Å™?ÎÑ;ãí~Ò^ô¤gÓi¶(KûmØq0EÑÃ# æ¢N#‰ešº¢átómùk7ÚÒJ;t°<m\MÕŠyDáb·ù÷&™dо¯6šàâ©çßiЉîÖȤuÁª×BfQÁþB¬®T3v¡Øõ‰À¶BÈäúBfunÁëÍ%Âê¼w ê­E$|ÏMoSOcb†é°¼Kù ÞîÜ\j$OÏû cA°‚œ:_¨¢nG˜–;*Fÿ»<×Ù¯°FgG >¤Q*ŸN6Kh ýÜxXGw?[éLµª¯EÓ6õ›„‹ ÒÌà-Õǯ­ßÉÐ…±Ó_ñ¦—jë;ŠfFlY%iíÛOx(ßœ§æ¿rRÎÕ®¿$%ŠKÒõ’— 2×Ì¢¨ä°rzQ”0;¥þÊEëÚY”¡·¡JïŠEؤstàs*Ü—g²Û®H›×H\¤OHYBÉùùb•®Ñ_€÷Sw3÷ ÝÒ¸¿Y›—åeõ«¡òb`0S¦hÕì—R Ûµ³^¸“°ä—¬¢R}ñ’uSQÖé®q0¿ ‹ÖêaÉO¹¹¸vcê—u ¸´eéÁ µèO¢Ï¾¯ @ œ6‚Ch<¤1TèFûªzÙð¾QLÁü»Ý†åD&p©©ãc•oi•ÍcšK!?~Ji×Ü1Îÿ|òŸ=»“À®¨ŸéÁ·EXát¼¡ÙÈ@1b”ìcmëµÇ@âØÖÆ9'X>ö“¹CÞzÀ¨„7=•À]Åf£`½ ¨´8×:ÒtIÀs‰QÔ:zöˆ’ñi;7ìTxc¶u[Ÿ³˜ÖéÓÿ›¡ƒøÀÚ§MK÷M ñ¹!4‚‚€„'„> ù3¼ÛÑ­Mæ_Äœô)sÚp[‘¤»jwÊœ. À™õ®›‰ôò"ÞðºøæÿW VDœfû<œºmÿų¦/%Ddfó_<‡•¡•ã…O®þd«Oendstream endobj 688 0 obj 4012 endobj 692 0 obj <> stream xœå[YIf_û'ðÔÕ .ò>!± {{ã$ öŒ¯µgÆžïìþ{¾È¬ª<*«{z<6È.§óˆŒøâÌè÷kÖó5£?Ãß§ç«ßüÕÉõËÝ* ¯ùú›éëÍêýŠÿ`ÃôõNh…ZsÞ{­ùúäÅŠóë½´~mœï½±ë“óÕ“îñf‹Ã¬6Bu?oð)…®{‡•a²{½ÙJczáT÷7Üiæ»f3gç¾{NãLs¦¥ê®†ùÖwß…m„5~ŠùÂ9odwAŸ“¦û>…â:ŸðŸRs¡Ü¿OþL2ù…“½ôt­“3\á;š¬¼`[Ó;©mwuHUÌ[A7y ›+÷RèÞ1Þ}E+qв81LÁ66Ç­·Ìu¿$š,7Lá¾Xg{&Ž¡½5X¥‡ÉÖÓÑ Ók­ºoh†TœI æÐΞq.óÙ9Û0—à#QJ9?̲9K4]=7ðRÆ»FwÇWgi]NjvGb냓գÜúf¾÷Ê€¹ëó•²Võ`ü8òvõxp^½³ànG‡À_…[s®„)˜tP£,j¸fຊPàRgA$²@“.Bâi„/×â’>ƒÍ³#~þÕ¥ó†3Xq†‚H3¼d¹ÑŠË&E¶WÆ{1ÎþífÔ˜æÞºÒ:?Îþ1ˆK0üo‹r ñÐî‘òÍfë¤è­’ÝïÂJ§’çK¥ìµõ8›4“{Ú ûçæä‡p³¶=°Åö%0cKh7Âg]К itó&®‡±—8ë-þj³Ê°Bxdo†Ût_ ÄÔüñÖp»ÈŸŠù—sITgA²œ ÍOÁ\ik¼db”±-&sÉ{à7àÑZ©4ƒ…é7#%J£$’ L%…[Ix Äâ¦ÃÕŸÅ«—d(º9†>J·Ü^¨î}`±4ι&wŒ‚ð%-ØÍÛ@й{…`‰§aLàÑzfÖdËnË8ß+\гÁ-Á úŽXƒÙ\5}Öà&`Çs¬=la D0ì²krÖ@F÷Fè0øO/n ô>#Ú¬¨…ŠJ…K¤º;JWÃ`Û¦ /H×ì•.«¥ëz|&á>é¾.• ÜxAyu›žÛ˜”»8§ÿ– !¨5ù«Ýàò9™»-Q™ˆËÐ*ÄvÊŠ%x8Í{ Š‹ãš´æ„w nÐJÆ&ûpqØŽºñ©=à.†‚Z,€Ì÷FV{XÀö¹?5Äi§ðÕpXÔa¤• ›¸£ƒÐ £ÐÞ„(Öj¦\3ºs½RÜ­‹5þÒ•¶ =²ƒå(l.5Ã&ß)‚Î ìݾ:>…WÓæ éŠdÖ/i(¼)…³/3Å4RšÑðµ<5F1k{îd÷åþÀSê~Y±«û"GÚ¨À}~t? ;–ÒG’'8ó•ø˜`”þ °IŠÌ•ÝÍ2|¿!9(×b ¤Æ|-É,à¬cÉÆÍ2•^ᤑ0À˜¬ž„›¡à‹S’Å1Jà@Â)[çb O6HÂF²Ø±IÛg;$Ùéì,Ú{IÉ:ÈŽfË‘*«`z"}þ¼pž³·òU¬OÁò'Uàoði›tˆ@b”€²Æ5]'–h §±-ÖÌR^Ÿ9ÝâV.´øÖZOL"ý[ä’œqÉé’K©Ø0ã’%gƒha/—fa§…¾Ôl*3l€Ü4!@paÍy´)EVGá½É”jo¨2ª1¼%bÀ¸†ªDÜ;æ´O4·ÚÎWÉê öŒñÖÉ·«“_= &`ÂŒ¤HNXs?D‹¯'Î!ê%]4Z¶9OO¸ :ÁC'˜iÚGªC±,ƒ¾˜ªhM7­ÛÊÐÔÌ#Îíp¥—æ–Ÿßkƒ3?ÿ±×¨£E¥yò€,Þ Vr¿7,Iz[¬Éëko“Øwùx_)’ƒ¾YŠØ`UQÄN–êw[áÉØ JÈ¥ÓŒ‹øª­§Ù©×Ñ%ÆeÈË\f+•D@5lp•ääaq§Àõ4T±ÂÂËðéÝy}—>?¤ ×iôùô9•IeX7+hŽ@N´VÌûÞ‰õ9F9«id_•´"{,“b @9løʤ½¯‘”z‚™Þ@d=›>'z‘øÞ2B‘,"\C(å›2n‘ýK¢#c÷ëDè.îšs/ä­¡M9ùƪF ùªáuI~ÆÆ·éóy"ÿ¼­i€S/™Fæ2ò%óð¦þcÈÇðk®“@ÇÓŠ¤HþU%“ Gͳ0“êþ“ÙËtò"ÂÑ 5¥¾Ý+èÌvˆZmE°:Óçuú|Ú}>/ÓçE ß0Ú§ÏÓôù®õÙbë–“V¹€Á"Ÿq¹Ñ;žÁ9Þe¦37©×퇒ðTå)X/fTæ:ÌÀ™ ž!Îi)_³„­¦s¤×ÈËÌ8Ù;$ñM/^('exáQTÊðõS¤Êy•;‘Œ)WÃ1Í‹…DâyœÁmIGqȘ°w9‹ µð0iT\ÒJäGg;ìv¥sŠët!¦ü†ÙìgÙ”ýÌŽt÷›­Qaîþ±A¡µr“ð„ìnB¤/µ%^”’©·©Zó–V!g€È/2†]6%€qÛ£ñZ\!fŒcA ëÞ¸J¼Ã`Æ›œña•¡|²…¥DAQÆ%†q´ezÌ;ƒ žÇ dýªž½FIŽ›$Ïè³WŒ«bv~fþÇwã¡``v¹‘#P¡üÊqT#Uÿ‘` 9ÈÅÇÒŸãd`ì²=–4!còÓJ–^© _ƽ…sût¦ ^]f}€+Jž’‰q™—EI ¿äîtáÆÔˆÊ¤e[FP‡— .½â#šÝk=üUiö†Y™ë¸!\ênÊЂ³;-Áá X'º.†¶¡–Î:SÒˆ„w³ [ÈEv‘ÿ"ŽJ?a9(Ênd…ji¶åü˜ðAPÊžJç™sOñJô±Ñ5×ñæ,ÈÜo†RÀf²%»†ÿ‚u1°@9é8r—€ÍØ^»°)!mof—êÓ¥Në¦úllÈ…­œWæq±Èb‰ …!9à"×[¤Κ!u¦?C.ŒÐ;n RÌNRm’1\ û*öõÀåñuıTƒ“ÄJêêÞl$-õ.¶q«9¶‹+áÎcº¯nº«|Ý36LD?‹<ýcØFODðB\³†#)¶âc1d9Kh±ñ©Ge˜ ®/5kĶ£…=®Ú{<˦,;|Ú)×T¡ÊŒÊ¾/šƒc¨iaa¾$«„9±ýK:gô‚ç^´Yl°¯ì.¼ªÏ‹9„D6¶ï´rÿÚ”Ï 0BôÖ¤‚e7\ŠfiY”ËJZ»Ü¬’乆«}Ù‰hg‘ãí·YR…Ó`ðzÌðö b€ø›O¶H$¡ö“n‘I¬Éw\KëT´:À÷ìùñI÷ëYõ¬*sðwlýކ÷ÙêxØAw[pÝ;™š)Õø9eÀé5áÅjŸ¦Ÿ¦×X%)ô¨¡SH; 8T ¹tâ ¡‘‘Þž`g¤p÷Ô±RñxØ;ñ˜ZÆ<3‡Eâöe¢ù4쫤œ&Ë*öôÇrãĽ ~Ú3kšô›À°»n_½³®bj™½·*ö¼OUì²ÿ ¾¢:åÛÁZ_Vã3^ÇÈÛp³@|%€ŠúR¸Ciÿ}ƒ¤Åb­×ª×’J†’XœFö…p5‡Ç’!àbiSgfL áŽ$ùP\Ÿˆ]OÏТíæOmÈ¿mììeÞå„5=÷©¯ê»Õ»×¢©Z~Vý˜=VÍÞ†˜•L—úQ¿ïÎÊ…žô<´6Sû¡÷—1²½¡àáTefQÊ›E0· CöŠˆ}¹&G´¸M¾ü8‹²®Û5²!ìv‡ÂµÂî1 FîsQ°Ò”Ø-ö–Î^ÜmjݺM[Böà~—^ª—A5,PÖŽ¨a[…$Zšõ©{dnzª )X}T AÖhqàÑ^"1L9Ã./± ñ»øøø}ÖPK,õ!€—ÌŽéJHRÿ~m@)ý”dž*ÌŽ<5rÆTáSô·ꃬˆßÚY.JE†²uá7uOýÆ"±÷a0ÕÄBŸbÞ.ðé›q÷"»Úý@æB­¢ôËž(^×l;uï«Ûè(ãg¼š?©+ëGù‚éSmÕÒô#3ÌÝÓ*K]ŠE÷?ôsú4ÚÊ¥ÇåÝmÓ^å %xêLªÏì³~`Ç;·ª%?S‘Þü…œ>xö ¹qäø_È…öM¤&ØZ9Ëc~á’?²ß9Vÿi5(½endstream endobj 693 0 obj 3342 endobj 699 0 obj <> stream xœí[Ys\ůóò4O©™à¹î}@…“…¥(yIQ²%ÙÆÉ–¼•ÿž¯—{ûtOÏhŒ&R)hšÓ§Ïò­ïèÙœ |ÎÂ?ùßÖ³»_99x=‹Ûs>ÿtZ=™=›ñü,“ÏwN¨9çƒ×šÏÎf<Ós)kìÜ8?xüûh=ûfñõr…ˬ2L.Þ,±”Ür·ø„l?^®¤1ƒpjñ×°-¸ÓÌ/®AÍœuœûÅiØgš3-Õâ*ÐÛ'?\„5Ø=¹pÞƒËEXbOšÅ‹²$çXJÍ…rÿ<úsÐÇP}“ƒôA«£hðy V^°ÀB˜ÁImWÏ£¤Šy+‚N ç”Çå+)ôà_|Nâeqc$ÅãÖ[æ¿ 2Yn˜‚º8´¸&ðÖR‰µjq(Ì µZ|( ³Á6³gœKÊ: (sn±ŠäÊë,”RÎ×¼§ƒW§éãtÒ=jÔ]B÷“rŽŠJt f½w4ûrÆ756챡 Œ;_Ï´ràzÚ9Ÿ}½o^ïÄ›–ƒ³o¯ŠEE­9WÂTFºŠ¨Q–5q_3X]%(€)½Ë»3?_ 7hÁyBÄq/×ùL-žoãìŸ,Êuù V]¡àQ·€Xn´â²+”ñ^ŒÔï/ÇxéòÖ@€u~¤~½%þoOrâ±=J¾\®œƒUrñA<é4 ”N ÉéQ¸B[»ÇVÈÀ`ñ÷åÑwQ3· Å³yŒ<˜`7Ræ».š°:kb½À H°gƒõÑðcâ_«r(*·æl ”¸eÚ÷ZcÖ" ô`ËL½ßíoák¹"ÀI„ ÙêuÌ~Úﲓ21®V#Œš¯$v£0÷“0µr F7Øú‘€¸â&@_-ž•Ì³ÅæÎ¿ÊD”ëþ"H(˜r¦‹I,…3{bRsnoÉoBrB ̺Å;Ë®™9R‰WûšÙ æp#5lÊ“FuÙ ,·¯8CÇ^AÏ7¨Æ!izk»Aâ B°ÎvÉ]8ºz0Bÿà”00åÔ¦ê¹÷ì„âV®J9ânŽÐ!.‹=’#º¦I óî öÄÒ†¸<œ=!ã<(kµË…‘‡Œ±âh]8éØPB£br×uðÏC&Ð:æ#Ú©}ÀCVÐÿy0auhÛBd%:ÖCÏÚÐó"ôÔ T6ÛßB‹e8¢<2^Q[et´08ÚìI´4çZë~Àz'ÂÝôÌfnmÒ’€¥ýŽÊµad:£L.b¯%Ю÷kKÌÅz"ÿãrl_G{›Fi4|Ž &ƒ"ñ @±Æu{‡d¦™›¯ª3½–ªªè7ë\õG‹ï2²n":F;ÆÊø¿æ1 =dWáQh¶(œ7¡t/œB竬虽‰wödˆ¤ÑBûÀ‚44Onˆœ‘ZqC{ŠTãÑEle¾Ñ8¨)·¾5 YH˜¬é nä<¦kÁ·†rÓW?\î,ˆÐ’‡á¡Ë{Å5ŒæțVZŸˆ¾ , d»¦è!øVK´™=[æFµHgÂäɽÀÝ™K,ç+? ’ññÈgõ|·b,±Â¨Œ“ZDg¡¶|6;úuòÉ®6* ì™…xèy(WZ¾= œp=lsôª:CGöóâõkº?Ôc5…>žû!sùâ2ÀYÚ¦'´ŒËŒ#«œ[<(oá¡ i`@e©ã3}J8® áÆíâÕá+ÑŠEØÔÊÇâ Ðq$0`ð2¬Jº›Œy‰`Ež&½©8$ž&j¦˜¦Ô„‚Úë$]ÈMW½È$Êä‚㫓ϦŠ] x¼a]…^O쑌kŒ"±K ®’xVé}Ä[G$¢"£¤‚\_'6FˆäÛ¬B-ÉÄñzÛÛÐË8¿ILsºŒk› ÄÊÕ¹&>¶ÝY²]½†AJa°„BÐjë)1F³iþNc$ï¶Òi·Ö‹ŠÎ ¤Ï®|)˜Y;ùåî$ïk7À#‹€¾¯)<æ‹jˆçº_èÐy{LŽ#1O‚( ˆZÿ2o» n÷ N)8‰ ‰ ‰ZØÅõ›ö dÕPØPöBo–ŽFû6Q)´èA<„Þ [ühÛÛå ™j¨KÞ…‘â‚hú`S,’ð:!Y;+4Xñ˨XOl“ –â ><""“¼\ÇöG ¶ M»/ÊòyYžNËéX…wˆW3!:S4ýRC>_ÏF¿Ãϸ³ë‰¸‘{|# ”¸Èbˆ=Iú&Ñ“ì²hñ¤'oü ш.,F9m¨ÌÖ„>ýV2[ ØÌÔ29Îé’Ìë®Ì=U'ñ%—.¼½ñ®P:o!½ M½«…'²7%á¯Êîã²|]Iܦ‰Ð)Õu$ïÄ4:*©§žçÞ »ø}N‰rÏñ—/ÊòyYww—åeY^”+®§Ý~úÇÚúÚVa3Zz:|JÊÕy)h4ÑmÍ€áóER«óõ2É1H„WŒ Sn|·õWáóÐgÜV½³˜eå(sL}4%Rî)á›ð&»¥‹ª3¢4l@m¤»giW8Z=2)fÊmÍênÓåï™ÉtÈAºxnkoCå¿ê7\¯ƒTM)ßÞe±­4»º¬ä•>àvª(aø$5´NUú^§k ØÑ&•–ÇÍb½7ö†Üœ¹Áñ) ¤*ìQ›È/kãPWkD­Â'M ¡NÝ!·VŠʈä|aD²a¹p_Sü^ÆF_I{¥‹ñë® šs1®¶¡&qÐ8F8ÔDLß)á~õ‡éëªôh®_åëê¸9¨àRl1¢i§uú‹sí!*;…j)î"µüWBQôSu~gí'Í{Píuhñ-Ñ>Òî@êk`ýžú?=´þ“n•E²r£¾ ¸4ÄùÔa  0Šü“»Oô‹¶Ð8hÒï\vÑÞ™–; 0éÖš„@2”E N)} „¹Ãêd€ë">I DÕ÷Úe›Ûô ~SvIÛ¸".ßë.Ÿ–ÌCòÉÂ)/S=…€ä9A~¿¤'i*%²8£„ i×Ò‚ŸOÒá“¢·‚4IuÒx‹»-ÞvÍu-ÞvaóÜøÀ»…ïI· (|ŒM¾h]H&¼Æÿ¢58œ:PÞþï.ñvž+N©|YUOá01Ò>ÄCÂU=z!ªX‹š“åb`¤§ƒ‹Ãç:ü—nm=/»oÊòaÛBÇÝ‹NͶ[j6ytì—–‹Ìcî¹b"7ƒmß|ÖõñP–DÞÓ.ŒHsÿ´Õ­íóßtù’#‚>ÒÓâ³Ò&ß·¡Ñ>|à §¸®¡6U¼yUÑ„²r`¤¢ÅSæ¶M ÔÒÀ 1ârI»[ q7ûfûS‹$2µîõbJ•¼Q'!©‰ot±xž1C¥ÓÆùsÙiwy=Ê`êÆ5‹.sÛ6Udx$ÌNºZ¬Ë76U—¥;Úa³0TOækß1ï—%yþ(´¬¸éý–6wÚ9døM‡÷›c4m%uÚÂÕ˜Ý$•çÝf9›„ÿ~Ÿl7y±u>uµrp¤#Чn;”agÖ€¹Á˜[¢'Íá&Go$®6¸ûo@ýàÞâ¾½iÚØ}YŽm¼#´éjØ.Oâ°!ÏÆÍ6•/2Ù…ÉÍ:êrŹ$í±Dü¤t ¨çz`ðJÈåë–ña¬¨døiú®Ùè¨ìö&³ùŒ„pÜ]—$G±ø°!ÞƒÆosLÑïmwÊäÒrHËãÂì¤Üü²‹öp™ìÞz‹:GØð×lÄ9Ò[¤É9#·”?Ѫú?Ôÿ/çOn=~mïiU §ô¡ª*÷á7ÀÉÕÄ9íkâÆkÄëÖÊq÷¬ #ÕW™Ñ°ä±kG}M6î¿põ9î7Pcs¯Þ/ÖÿµÚþèS¹ÎÉ2îÞ-QÑ—ˆüëAY>*¯<Ïéî´<-Á}Rv«wŒøS–ðƒ^1ýF÷¬KzUòõ˲ûmY–Ší”)ªÐÉA0þÅ~ †ñ×%œ)À›“_—Œ;oÿ·ûázйóƒrãÈì–ÓÏÊrÒãËÙ¿µ ¶Pendstream endobj 700 0 obj 3598 endobj 704 0 obj <> stream xœí\[“T·N^Çÿ Oóxp<Ý/v\Ç·*_Hloœãr»`0³À΂¡Rùïé–t¤–ŽÎì.;W*勦ÕjuÝjõñlÍF¾fø_úÿ½íêæ·N®ìV¼æë/óè—Õ³O`‰}ý·#œ¡Öœ^k¾>º¿â‰ß¹ÑKëׯùÑ»>Ú®~¾»±Å¬6B ¯nÀP !ÜðY$+ÃäððÆF3 §†"Yp§™vÀÍœuœûáéLs¦¥Î¿õÃ×AŒ°Èw€_8çNq4i†ça(×”á1 ¥æB¹¾À º!Áä(=nëè¶ð52+/˜ÂŒNj;œUóVà@=•‡Å7RèÑ1>|„3aeaÅÀblP[o™þ„:Yn˜‚ýÂ<;2)`”­ÁT:1[cÌpŒfÔZ _"‡TœI ÆAÉžq.)7UpØa|RJ)çwðÍqÑéì$îÀK÷ 5í<;.ó¨ªdhÖOV߬8`Á­]ÝÇeÀ¸ëíJY«F0üDy¼ún¥ÀÉÀñôíç+çù¨ðh&w[(FˆQÙ0«@w °‚û5‚RE  Y/Ggbï”:N~†Þ8 ÓB¶|{( Çi¡ž#³ 7ãBý°ð²Bý Ëû—´¸àE™öS-•àÀpR¨c«NÞm¦ÅaÜFqûF¡…e2éˆn†yZVþß™#û>»\ îSÄ™Bܘ]+ÄŸ¢ÎÆy^_ÓÙBŽàeD:7ÑًɉÁŽ õ¤ _¶vÔ]ËîuAD rœ¬,à"úRáqá}Òõ5qðƒ2|Üv·N”°g Š‹8n±Eæ>öÚ5fÓèe†5$³›…zíæG±¨Ñy™v¯PN˜e&2LT"!…ú´+$‡ ®…Øz3 ÷“,a’ ‰5IÚxQ¨?•á£<Ü69 ª@J‘ƒNïfÀ[…z§ ?. ï*½LQÇÔi+Œ`:PS†A*xDÉyn.ÃYâ<ëcóA—ãN7šöÅÍ,ÈNº!}«/l$FÅÌ»7õÎG’êddG…(É5$Ãn‹´§…ú¼ÉV$Å´rAŠR !—œ–áyž”ᚘ²:wºJêÛƒ¨Œ• c +? T5ž" çÉå%fðfðÆòÒGÝ%‡\xœo[Ó·AN²Õ¸Ì%T¨¹LÞšdŠÓî¼»eÞã.ì’t£~)îúT~Ó‘‚ –xÏÓj:Ì_3f_&PrT¡#«8Ñži¸ñÒ8IÓ(ÚÃíÊû(Å?´#Õp*Uˆ‘j8 œn6ÝÒu'ùY-ÆL¦R8\”õN¾Žé0×içHyÚž 9zñnñbåÐ$ÁD(ÎÎHÄ!×˼Ä2$Š·[T˜°Nš^|Ã<~ ‹¯vMßÿdìÑ:ëSíƒ×78m $ezƒ óÌuopPôZ²@Og® tV§Ú†©ëg­•ó›*æ…ÎÄ43sµÒ+Y N O‹¨0O_³ˆš  °[–j¨›%Šn–ˆ;*Ô6ÒlÙžsg…ºMÑÅë†Ç¦ EÕaø¢\¯žê{%*Ÿu‹=Þ˶¬| ë"CKfc_‰øàºQ’Ì-!S ~aw(öJÝ!b· »C„—t‡žêžRxVL ;D6w˜îPq!q}“X¸³è’íÌï‡I‡BŒÒøCµ†îw‘@blGkšdW>/ [´¹o¸ô´+â°ý Ùm·[XrHáP÷/ o¤”‡÷c5Éñæ“5¸°ô´PI?¨T{%GA:U¬0ãFQ•8Ϫtà „º7×3çݬø?ß3/n¬ÜïêĨ¼r£­*.œ'Ô3WÞJ¿ýžy³IroëàKÞZà\2GF—kNõsd”pqžµ¬ºäL¿ÕùÖæ%ª(’uÁ¯œð ŠÄÌ4ï01ã !°Ô0¯B"Wé³ :˜óE¡~OŸ{Ü›BmäYá1[ îk4Ï¡ôn7f_?â´×iÓfÌKuz+ý¦Ô9Ê ¯Ý™ Õ`SÃñšâæõ{´åmtT±`™‡#‰ÆÎ×½°N±`Õ¨áÖ¼'®ÞWmOŠm¡Þé #GÉÛë«î‰ 8ïûEl++üñ÷×L½ ¸Ùk¶P B+d‹º  ´g#£m€0ïº5ïc#Fíùÿ[¨Å‹o³…Zœ]¤©Œ6*Ú2˜¦Ñ¶^áj…W²¤f€* çéCÁKºޝ}}½OhæË×SJ%‘Ù0œt¡8« ¼©ì‚ KÙ—$yw²›Ÿg¿²-ü L”Ÿýª>«ejŽôíåôO”{óæŠ:@¾_Eì õUêyª~9Õ $ûnK,>ì Ø_îU˜è&À@–ÖÛY˜&(À¼V˜}AA®“¯ºå¶·H%=9âûßζq-¥Ñ§øWR«ÑûêkόߣuÖ§ÝG¥µr ?{ØÖûàõ×…«’ž¸¦7À%F!É›ˆ‰r9 às; ®uï9Žý,Oßx0Š*²—PŽ[3(¸eÊÙjQK K:H#Ÿ}UüïàRÌ‚¬x‡‰ ìÂøòŠ—ÌÿÈ;: ’sÈ0ñ¦¬“b²›fÎ9º©mr#\z—ä5}—$ýùx}ôÕêè݆¿µœ’ƶ›üÒmË4¤¼2œ@¦z%„éW*ÐÕc#ä\%–8³)¥Yü&õv.Ô³ò¸)¿Ú:‰ò¤6ÑEIÞ“"„*XÒ³.ºüY0\6€~JÚ%éŸ#…!W¼â˜/ÄÓTÇeH'ÒåÉ–Ï’}Ò®»¼¡X¨7ð `¥d%ŒN;'û"zÔJãz±ËY´#ÌïÄ7rB†›6±ÍzÄWoT«gé7kÉ(]ŸƒÌ”L'ô×–oÊàF "FQþ+rXi”Áß2Ç’£ uÛ$å60Á¨>êø+ÚXBšD¤ XPjÉ3Kp}Nx^)5ÜouEþ¹Š¢Èâ¶,Z@!SêWz2.,›Ð2këV|ÉüÉ\ ó q÷Ë(Ÿb ©GËÊAgÈG„½‡çùá ÌT‚)g¨ F¾ÛGé ¨ ÝjˆØËH æi_]H#¦&ÃWqƒZ7±K€¿ø…ãÕgÀïrÁƒ¨1—“•ÂyÆ£Y"ƒ–Ã-êX‚xjç~¨D'"ʵŒŠ½’ÃxƆ¿š6èû‚µ—2œÇ¸Ý—á+ò\4¬£àI…œÆ‹*½ ˆïEœ}å™ë'eÍO£k9â³$ãuÆ/ëŠfÁû \V×EŒÁâ­r{( Äó‘3IH wãá$·aÕ»e¬3þz 12¯Ó/píéËq‡E8~Çq`e„ž˜ÿ#°« Q<ç®"~´Z;³¤H#ß°ˆü»ã‡±È€¬à»²!E3ËÉGO-»¬Øõ(%aÿ rz«Š€+§R™¹ŽÕðTŠ–Ûá­wxAÝ]\Ê‘t©9ãXŸf¼…Ê9¡y,‡ +Ô ±áΪÄ:YŠßÞ¡fM×8ø]­¸Š;àX™˜çSgwnð…x6ë_Ã<Ü™ºU.Öè¬Àõ"ã‡I2Dbï<Þ?Äüë—ý õ>¤l'b’B£¡GA]°ª®r$Aï.%Cá–θÓÈ! ²¯Òe (­wçgš]‹À'óe ã§²Êø¥:ø—r|_‰‘—ÞFÁŽWÄîýé´±é߀:Êæ…Cøx†ªêËC¯/Ÿ_mIÆ"Èκ~¨âñãtF,þ$/ᶨ`á·¶àsÆsîÖÂB\ãLL±· H0B÷ èÌ®«);ZÏßC—p ·‰Ÿ‹Ÿ–ª·>ÒÈÕ^6‡ëg·ÞÚnj¢ìÚ'qÃp%íRjdk|Hê²s^Äë9†kOs¨zálTôØœ'5&S_>¹öëŸ"¡Öó‹ 6X38LÜpD=šoâXa{jisø&®_¯ák Þ¼¾hØU}—ÁIî®JçÔvéþûWŸ›Ù¡×5Q°×µÔájÎÄÔáB?J(™A´r65§É‰ì+§u¾Yý[YŒWendstream endobj 705 0 obj 3590 endobj 709 0 obj <> stream xœí\Ys·N^7ÿ O[~píFâ÷a[.'å#e—]>È<ÄI\2IQÑ$u•+ÿ=Ý ÐÀ`g–âê-åÃÐèFÝý5fåß–¬ãK†ÿÄ^,ýèäòäf¦—|ùM-~[ðø,._þmw¨%çך/÷Ÿ.x\ϥ쬱Kã|çáßû‹ŸW?­÷à0« “«·kJn¹[}I¦O×{Ò˜N8µ:ÀiÁf~u«™³Žs¿:Æy¦9ÓR­®q½í`ç·AаfŸÀrá¼)—8„9iV/ó,8‡¡Ô\(÷ïý¯ÑCíLvÒ£UûG`Á·¸XyÁP„0“Ú®®oƒ¦Šy+ÐÐN 甇Ã÷¤Ðc|õWÜ §( '†% Æõ¸õ–¹ÕŸQ'Ë S`.ìC«ƒ²µBÇÅÚµ:¦ÓZ­¾Á`³x7(Ù3Î%Ý+(snµ–K0^G¥”r¾”6^÷ç§{ÛÃE ¶K°ý(ñZ¿Ø_ü°à·|½lØ.`C¸ÜåÅB !;®ÓÌùâ§xózoZvÎF¼½Î7ú,X͹¦¸¤ë€e &Ìk·®z(p&éY $0±ÜtT¼GÄ—á o­ì÷”ê¹NiÎퟭòqí#À£nˆXn´âQ8XIWÛNïŰúãõ/MÙ`V¿ Þ þ´¥¹Åø€Ø4_¯÷ÀáÌ>;õ;…ät+.sH8ı¬þ¹Þ 0KÛ´xX À’Âq¸R»>žu‰h€Õ-Õ`W˜vXg=3;ºZà \avJÖÿq½'„è„Ìõº)ëÎOH¯ï¶ðÞm¥z© ø‚3úõ L•µw½5i#ïVÐñà—õ= pLoBªÕÖx×Ò •I—ŸWf°CÈÈ[bA îg±PÝë l€! à£Ö a!ÿÓ. âÒõ|TGV©äá|™Û¾CÿÔÈ-ô4“;¥Ô&ÿxˆé-ýÃݼ{J³îùyõ´ÍïÜßïÜ(cïpŸLX/”C‰kf›=)uI| …N`ÑòÀ ”fkx®-Gýë|;O0Þ ã ²X¼`e…œ¦£GWôæ1i¨;! (ì9 Ϲnkí Ô <šî%îZ9Ñ)î'0:Ê‘ï#.Át,­€ag§å_¬ep˜©Œ®Á—ªƒR;À×8kk–,ÀT€±½bÏ(vK­ vi.ž³¹(‹«çšÚQÕ1œ”û,\QZð¦Á ´D±M‘U ùDœº«ƒI:›IB¶¸æ›áB<ÔµÂG V¥¿34f5 pÖ47ä2¦ß¬«b\Ëö€Ëª4ä¼S%ဗZÈšÒ´ýžýM¼tOb¬ïþuL9CÍ!!®/òô¯DÆi2µÊP(Y‹' nâyÊ4¤…Nå¶'& „Š#2.ÉjÊ«±?a¾³Ð¯ýšhØ ç “ÌØÐuEtÛ-¡ãt<>‘)¦ƒ«zÚ qz¨-IYYñ+_†Þ=ù‡´îFbZ‡¦´ØR¿{„GBÕ9³|½ÐñÀÚ%v8uË‹…4OH3So„µ?ã#¡ œ]j†’DÿHHü:& …=ìLA+Ïn |ûÄÆ¡Ù“Ô¤Q‚BP˜1N äØIÖX:Ü×µfùêŠlÛ”“hî¡BúÇÑþÑý<‚·½pél‘žž‘|Ü?‚{)!kBº“Ö`Ç‘½h4¤©iÈz|DXƒ%œöÙ”¼^6Î…Õ“ÙzPxÈÖ?ÑoS(įÒ9Sèô0>Äs[D|¼°x‘Ã+zÁæ ¾©Ó9VêðbdT‘ƒÜ¢Rñ oõÀÇ$Bâðy>ÉÃÃ<|NžfO›Ûò$2¡£z½P=§–Êj©"F®³:ÍLEfeØ™°µs…B¬ãóýqVçMvMÛ®ªa0³™‰8P¦ç1šƒúò•:Ö`t¯Þ_¥@PÀ|òÍ"N Ñ°XÓýØ)X’þ[Bò·a ì‚NPä5y"/öIè_¬§‚Â&\’¿ÐÝñ¦á’ p,•÷ü*ÜSº%.½q"â"ÌB°i i–«xåõÚ‹<{•‡/ó‚Û<{œ‡¿ä—›çyö0_Tkûá«<<ÊNóìÓæ|Ü<ø¸¶­ž½¬lë%üÒÜö¤¾‡0¼®®º—ð&ÏB:Æc8&Ø$ŒTÈ¢8øEÕá&çî $‹/¨ Ò’‹H¡£s¿È–|ñ#TtBXð°Ù –&+ Û£ƒe@¾1]¶Cs±S¹ëÄ>oF±ïÃ5GM?Ín¸«“mÅ•Dã{Sš|â®Ý\ƒó  „ ¸É¦XåÙêáD`\åá'ùZnš‘Cnó£æ0WzÉ ×Õi£0¬Ã›Àt$¬ >¥Ûا˜'‘þiÞ@£±ýç‡T°ÞÉõ5b>¤gPÆÁîr'EEzè •êáñ{òþf•³6…¢(§Ðš¸ŽgÃ&Ë况²á Ú|3¹¢IÉ{’‡#¸…Ùnmµá6ÍO7Ðõ)µA.)m~¼Ä’+ F_ î1ÆAŸDüÕoÚ» ö}3ŸçÙ·yxR'à0{Y%kŒ;Ký]Sœ©œr%@#ó8f~Vrí]vÒ\@Ïç³ÖeÓ7di^B­Ã‰ëîS#9úA5LY)éùû6Y)9¬ð³* ÷ø+âUÜåïK€´ë˜$ðÛZ,PíBB|ÝÍ9u”bjöÚ®YaœûùfÂ1š%‰¥ÆÅ;œ|Z@¤9Þª%@ð%‰dÀ,e‘q×n‚¿ö™È"ÿ›œ6¡sR§¶‚è,¼†?¢L w•4¯)DõS8Éñéê¢,îÛÿGÛñmÒ*?U?É£Á.)š„6ßÒï½~4™Úi¥äˆghªhDØã8«Š–<ˆ:I÷,kFÖÖ °$ˆð•¦µ`¾úe<(%h,#¤kصÐX0Âï¼Áûo2hòìÁpÇ*SkI·{aµ<´H‰*áM%G‚„ö Ír¬)‚ÌŽsßP¥çs_öRí\êJíE§ ‘ »øŽˆŒ0Š®žråË<ûœ^]Œ^C½JJéfH¸¾1jûj_ZøK–pç§YœÈLpÚ©T¿TÊ»2¨$cxMR|õA3µ|P0¨;•ÒŒ”`¼`PBYÙ1 Â.s_5ÀI³ð%è=ðâ³<;Ë‹Ïò‚÷É‹‰wzŠÌ=z3/æ îIÙ­xqvXágS$!µì!Hîðb!þ¼µ÷j;³?hzg”:/®É'ÈU}ãý͵/ÿ/›ãväáïÚ¾Ü Üʵµ·‘…ÙGQ™(g?Î &x@Ï|îÁ’Ëk¤P\);GHhص«Ú÷@ƒ·æÍY›Âˆ2?q®ðKêEa‚¯xsZTˆöâÞƒ(Š»vc<“øSØqN^ü*Ï’ÊzÛ௒>27aD½k3ûy“,8Šùª Ö7¶O2®'Êm/vާm†CvPíWêEgu'ý »ÜŽ Ì=œ‹±½8EIIûS—«7¹Ñ!%¤¨ýbO( !/$ ’ ÷vý EßAqÐÌÊD÷W•£¾ê¢}ÆäëÀL’ËÞ/@㊔Á­ÖÀ'Dp—”EÊÈ‹ Ù²(£ÁŽ“2:ìÚ Ø þU@ñÿGÃirt—GÃì°ÚÏÔ«š›þ·NÔÍ;âF\#@clj /‰E‡UÅ[˜}Út: ï¢e²8ùd5ûM÷Äg€‘£IºÚò™pËVj÷Ž{ÐԺθ ¤­ô>×?L{–‹õIž%?Û{‘‡äWyOèÚôÂtD·!¦%÷]þ{NOÓOà=A¹ˆ€î`R¡‹ÿE:L‹jÑT’°øSd"Iz ¨ßQäàùä†Ow}WA~Ôþ ßþæO^õ&žû‡8¿ú‡g=ä\›¿in+¾Õ¦–ð¶ ¸ë|ÄEþt×ú$-ã=T§M $ù¸;9nð%´6§Ä wéû«Á¹miMû]©wîIM¬¿‰?\LÃD¬}œ=©1Q“âÜëi·{Â0¾!o´Îx‘ƒšüŠõe <Ïiºy–‡éI¼H7×ÍÄB²É)•Pì¬Ã\jIx(`1üß?20†ŸÔr¦ÀÕœü¦v˜¹ûÿ?Àá_éq¾Snè,ý:ýèš­é­ƒ?,þ¹ÒŠ€endstream endobj 710 0 obj 3817 endobj 714 0 obj <> stream xœÍ\Y·Îó"ÈÈÓ<ÎÚšïÃŽ8m@>Û+$€m²vulöw$ òßSE²É"›Ý3£ÙÀ†Lq‹E²ê«ƒEöü°b_1ü/ýÿéõÉïœ\=ßž„î_}š[ÿ:ùá„§°D¾úËŽP+ί5_=;á‰Þ¹ÁKëWÆùÁ»:»>ùfýõé&³ÚµþåšRáÖÇne˜\¿<ÝHcáÔú1v î4óë-P3gç~}ýLs¦¥Zß%zëן6Âè~ôÂ9oäú›Ð'ÍúMh Å5%¸‚¦Ô\(÷ÝÙ#Ü¡LÒã¶ÎÎa Ÿ#±ò‚`!Ìशë»×a©Šy+p°<Ì•‡É7RèÁ1¾þGÂ,ÊÂŒØØ°.J)çuÐÍyYÓÝEÜ—2î=jÜ;Lxw^ÆÑ¥’=¢X?:;ùò„Üê§ûÁ¡ wu}¢¬U~ì¹:ùúD’8âé«ONœçƒb@£™@ÚëÒc„” £ tç+¸_!(…Q± 1örp6!ö" Ô)Pòϧ-Ô`A—Þ—¡éë–Þó.Á³ÒKšo Á¶;ì¶ôœö„·þ—££$¥½išJpXïEé½+Ío×¥ý¼Kñ¤°8/½KóÁéÆHÆÏ×Kïô4v_º2Ç·§¥ýN³âÈ£å,­ôÞ•æ“V¡—DWÝè±íê†Úwm¼Îju·o¿ +Ž[lzÈ”” ïÃoJs[š¯ šn»4 ¤0É)í³q&É}‡ãÏè©P'+ˆiÏ4ä¨biؽ`L{ðÿÞI` ¸!JеI$©P#,ñcªÞÜûÎÂtD‘Äu•ОB ÛÐEÓ]nWÔìdHRøÐÛ2ñtÄA^—Iˆ9½iEÑz["«6[‰Ø»+Í6[©nè.èÜ/E) l±[AÕ:=hšA‡qüž2híìå¸ z)h…ÞwÅÐIКFÖ´¸¸çdúq«÷6.FΫãÒøRª™}Ñ_ÄLªö œ $­¿=c@XKæíäxÜ>È,Òóiþ‚Ýd‹¨,‰×©½†£4œi©Ýà8sO©½¶°P—Rû~l|ÓÅá$çÞ‘3•}Tû7uέ5œÅ͹Çq4ç.T-÷Š—8{šs‡qúžrnä%ÜbÎÝ}ç«$²Ý¶X%n¦õ-/ºw‰/¯òó¹Œ8÷nÓ0f¨ÝßÒa9yê*qT÷”Ö£[pÓ”³_uÒlK‘ÙФäÑ]C»¡V™5ViZÔŒ‚CÉÀhƛà ›Ò+eÄ }ÊaÈ‘¹_®’œZΓräR‘»Ãy¸47"Îþ¶QZ8)‘3÷UwQ{?‡i§˜â¢EÙd{r‹ãœæ¯RðÜ.á|8snïãžD'Æ ÇŒaÅaDX¤\uU ¨çéÜ.iò¹½ªµŽÍøg`WѤHÐ7(šºÃîþšÁ~R•€÷—"€ëÒû}ÇY,v©&é~߀Hºÿº ¡?5©Al¶‹œèî¶«ç?÷ÑMª —Ýé†.cR—§ÜöC·„p?A7zuNÁû¤YQœÄ6ŸŒ*i’,3ûtrðKi^—æ÷¥Ià}uºëŒØè®% ÏÓcD§ïË­K78Ët¦•ºú²Äð§Tâ÷÷|û°'è”&ŸÅŽuÖbê£æ“…T™Ì^ô§ÒKj¢¯Ks(÷¦oJïå>Î5ã«Â¥n¼+ðÀSÀõ—÷ƒBؽf …€B²¶J=¹êê'C¤|Ö¿ÉÞyÓEP1sɺ+ûoÑ-Áz5îþuEwo»Îå~{`ŠzTI’…§]ÇIÜéË2Yuù ¨²zL,5£0ƒ ðÖ0*3àœ®:øâ8uìÁw4‚²éàKÿM‹ ’y·5ëIâšß•Šó»¥÷ƒÝæ•{Ã…¿Æ»¡¬‘ÀJJç­òº¾/z¹/–r÷5ýtôºK@é]A?ç], (c£Â”ªßÒ{™ EŽó÷uøÆ7h<¾ÿ›µ7¿ê²žj¾>ZJ³dÑã°ã ‹…ÔCBÒã ?`ÍãjÚMTK¶áª)¦©Ún‘‡!„“XÒ|x¢èzK>%íÛ‚ Îó´8"Š;Âs²Êü.N qq~Ìl­Ñ¨ƒ@y&s¿!“©;<Â߆œgÃÌeÅjé‚RÊG=|–ñ+#¨<Mì«¶ôd"‹d…¹›h­&Ÿ^I¢µªZÁëo‚Xl-–íƒôÕ·Tµ/û¼É”çD›ÛÈÃrÙó#I…ù£<ÜIntJ>Ó& ë)îL…ó©7 «xÅäïè2P¤Å)]•jhp¡kfJ4-œHõyŠå;¦ 9ÞÙåÄšè!çÏß”ÝðíÈìòC´þéD0³è•ðÖ Oè‚3‰þzìYòüýø <<Æ7x¢ZÊa°8@3-òݸí|wdªˆéFâÏYº€õ Ì1;À‚<ɈôYiêeuÃ&¬Ö¾Þh8ÄxÇ\cV`Æ ’0×̸Ï >;ï\ ðYÆñRÀg8H WÕŽ@|»j…ÇOžtŠc 9¤Gž¿Ú]†zY p§ÝNS“øØ‚9"P)ÁD¸=B <»6¶Ë qÐ3âP)jom#E±(E@œ6à t‚ɉ“a)ðkŒ:$i¸Ì1Iâ÷¬vHª¬Bô€8‹>eî}¼‘ÄùðûNÎÕ™nÆ §&-»Ñ™ÍT¬˜EwwŒ€átÍ‘gî wÍ[0Æå¡òÌ*•D­ w=±Ih:˜±ýíšdu¦¬~(9uß{á¥{“,ÕŠÝà—AÊËÕ378cSÕrÍloxw!ö¬¨8î1–oÀðB,7¿={Žˆåp˜SÞ½…£q> ¦=oo0f§ÁLàƒ\ N,»Åªði¯§b5RwŒXÁ#ä9#ÖÃ,FYy¨„;®\/ºrŽ´@ ®ÜJðL³Ò²ÚÆRiy©ñõáÒ²:|Á_I‹ z+ÿrœ´Šs. ÎÇw¦f)×]„"M uæD¸p|…³Û² ‡TË÷0ðC‚ãq¶îÿŸÁqYÀ¼BåBÁ­¨pz{ [,uë_½ «VÂõDá,µóÞâYBÂ8ÊÞ&‚’fA7ÄfLŸr.òÿû©ƒ,F• -LWuÜ'¡‚1~Ä–RJFR4gS‘«Z^úQ áìú“ø£3-Á|A*UÔÈœ‚nS·ó´ØU§J&–ˆó‰ôÊg”ù¸ ã÷)>;È5ºøà’køÆ»qŸüú‡ñW4ÀÑ÷u=hÀ`ªt– V8Æ ÖÁHøŒ`ý¨þI|‚ ‹_U4ÿ¨Ëœü™,¹ž·"K$cAY*±±D'ÌìÀ-ˆ ž(ûûSLÔ”hJÈçQÀXD¬ ¾±n©ÖCÐ1­:eÒ å·I‚Ãøê“Ô¸{~ £QXć@%¤ƒi’£q=GSÝ íû+;3“=XÀB5i°rn”I>  ÇBÖ!–pÎp@»Ñà`/  RÇñʃ‚¬¿g`b<àEòÏ‘?œWÖ¯N%>pb"üN Ãßá ?ÅFî­Úñ§qœé˜‘Ùð2Ã_}=’€Ï汸 nÂ¥/Ú ÃÞ+JRÑÿyc´ð±\ï„€ü9Þ¿îM¼Žæ.ë±·áf\–éZ]0´>;9{`‘‘ÍíUåb„SgsÀ«Šò3¶áJû“Û…nIç”\ÏÝž½"sÞU^­8Áí–°Ÿ¹PÙÆ™´Y([#>Õ™¹7Ù稺V*\f]så"p~—z-ÖÕë¥à$Í¡$?½B¯“‚nYÛWÑEq[+—.wrÍâÑFâ»A¼–’2W¤¯J€þ%NâAÄ7ý{£ro”~Ó 2ZM™¼Ì® brÑfs×°WßBí-Ïp'„âTହX¸ô€’¦0(† Üb':=|í…^žyYåéþâó‹H ýÕêRP3F5pDbH¢æ7ˆ^TÃè½½ï!+®ÐEúÿ½ѳ†¨ðG\Õû,ör×½]“ P+¦Æ?Fez9E,qÙûîÏ#w«]Çû@f‚—ôñAÊüƒj³+Ù’;ÔÔ`ЦIi¨ÝŒÖ0žzeyÆ^ó>#ÇLe3F’¨™®çù9ãDf¯Y¥‘ã~}` ‡/Kñ t-ª¤{1až• Åpk íõ©á`oös"s^EyµçþµõfÞÜ‘À/¥ù£ç廇Cƒ}ðzQ˜Äô‚?Ÿš2™ý©=ø«Ï¯ÀÂõãØó6!¼%—+` ©YzÖå{ʼœ/Oþ‚å1endstream endobj 715 0 obj 4367 endobj 720 0 obj <> stream xœÕZYo$·~ùyøaѬhÞrŽá8ˆáö*ðƒm,´ºVX$«¥¬'¿>U<º‹ÝÍñ(’û°U,«¾úªÈÖOkÎÄšã¿üÿévõé·^­/ûUœ^‹õWÃèÃê§•È?ð,¾þó1®Ðk!X0F¬/V"Ë ¥˜³nm}`þ?Þ®¾ïÞlŽ`3§-WÝnC%œðÝ_ÈôÕæHYˤ×Ý?qZ oxèzæÞy!BwŽóÜn”îîQÞ1XùuÔ"…Ù—>ÐrƒC˜S¶{‡Dà†Ê©ýÇÃóXzÉSOu|'ø…uUH˼2®»ˆ–jœÄ€uZz¯l~¤¤až‹î3\ »h;FPã¢yÂÇ}÷;´É Ë5Öá©$lƒº’Òdac¥îÎPÂ2ct÷JÀ©¸Cß æÀ…PTu2PYï}wÅÞd£´ö¡Ö=,¼?OûXoÒÙ££ÊÙœýl\GM%gD·~q¼úf% ~ýqØp,bC[pîz»2R*&Ì0s½zÓÄ[0{ñfó.ãí=ª ‡]lŽd  a'bì3ÂNFÙûˆ$í8 érœ>O*  ]¿Û .ßn0R<¨î8¦¹Ðtg²ÇÕ8<ÍÊD³ŸG½w1N 1Ù"‚¬Äûž¨${Þ$í6â‘$Q<¸>ùÀAº¨î_h¿ÖZUš©viôˆºÁ&¢ø·1Ø9=O‰–G"Oüð:Ý>%9Ì»e%ÔÚm2 x£E÷ Ë%ƒ¤A½IZ¸æû ÈþrÎ÷Dä|ƒ°UJÃzU²ÿ‘d}1wΪ…ËNŒ–K°íx®ÆYªpDZqTÌ8#’5 ôO¡V’y1%Žh‰ÐÒRü“…7Õ£ ä‰Îjáº/?sT'Áù¬²¿Àb¢"ýPïÞ¤J\õob8 -5…HW…)b´-ØÐéÁal÷ÝÆ lj|‰±ƒjKOusÁBÿ•ë–UT”:Ûn oª¦'a:[1mTÆôÁô!•&ñ ‡6M'X{®Äã$ ¬:bfU,¿Þ0nm2šG“^Á[†ˆ!Ä@BÒ ¼4‘zv›lÒpÈ r£©€Ü¾…Œ»åD!âÑ»têÞjV~¢6ÊØô<•’á%:©ÀŽU¹}ƒ†k‹NÆf]ÒŠ£HæV€‚ºà;±„2E#œþ…Ãïm%Wg“`ž IÔmÔœºé"ºLRÂû©ÒBÃ`=¤Ÿ>¯¶:g}"ñnOŠå8c›j±áqm"„k³Ðà˜= ·>*Ýèf‡Ù%%ä ƒþ•ÏcE86òTÒç¿ù}rµ팭u'—´pžÔáà¾ÒíÐéjD• †. º©,m„‘Õ…Ârw¼œ,ç92ÚÏy-º&åHºY‰÷ðÚÀT1)Šýu?Sß“4\û5\÷^Ž,øŽ…®›ócl~(+تIëùüÎñp–öá¦ìÄ9BÆ7cÜ·odK‰K3ã2 \ =¸š¼ZP˜ô×é¦û¡kîEö•µIôý›¤ÔjÓÊÏú°‹ìœ‘a ñLÔíE]˜nSÀvÄ `›÷ƺ}¨]Ol —çYÏ’•Ö¸­k5M”Z6Hô‘€²KÝjZûå²~9r×ûÔÖë:fdÙ.õõÂ/Tø|bâõ½¼õ¥ÔT¥ Ë*uµáñ9Êp 0´Îcݪ/ß³· Ö~n¿œ6 f*MiìÊý­!û!ÉB…žÐnhàØê .3k5Ê•R”-s#.€Ùœ~•p5l[tsR4Vý¼‘­¨Ý¸>~H×^“8@æq"®'œŽÂàŠü~Þšì{gtY@—·"×´øZû¾‚3ìþ·Âh Úr\º$é Ÿå—{'ÔBBïìžÓÜÿ¦Ý³FÓá^wºYl(òþ‚WïVŇþ@rŸ ÷T{ÃqÕÞ›ñ]ú½žÜ'Z/{™ƒ¡I½CÑVCõfsÓg.>|2žÿŒã2̼ ôàúÔÛ—Êå÷áÇWip `|X÷érGý¬»>ÍÊ@iø“ü^ E•¦ÉäÁv±``á✱ç&TµäDX)—½ë>Ë^v LûëžPài‰‰¯`Ÿ…ÜhîðV•¥ç ßãN2N%S†t 3G@’gä¢YØš 3P£ºúâ×SrLÏ‹ø~òq¤²›òáÉ× ¹xILð’há3|÷Ñ·õÇUúPóí—Ã÷Ãl`É÷Ÿ2ƒß@*0·Öà( ”'@&d”uÀ/’•*U4y ¿ÅEVG‘ñƒgó3§_þì7{ ª=^cÒW§/¢“µÄ'“ŸÓ˜uš¿'óçd¾'ó=™¿"ã["sCæßù+2Þ¦1lyóKó×sù(sÑÐsNÆ`¿áºSM÷DÍïÇù †À•˜T‘ÌA)q²øÑŠ - /8‡ÏÈ*®FæOÈü™?#óé^“A•¾mDw7V¿#î¼mDî5F"ÀµLV‘xK–Òù@–€.Ê/2ÊP`,2ùaód8 ¡®*<à6Ià`ã·ÄƒN«ú¯‡‹ÿ.þÿáP"]áÃÕì ‘‡(;ÄE/Ãx_åúp8ÐyJÙÛ¹›ãüõœâ£ÌE Jÿ­?_Õ®Ó ßäñ'.òº®·E¦ÒìëÀá™§‰‹^&0"½kÇÀ´œHSêÌÿRD(üZ^Å⤻ûå¥4Ô;ˆ…„eÅ5‘Ç„…+´vš˜z7Ø­ûSJC‡¯Æ!5在^(ð³$~HÛãýñ  Q­±PAH(«šD…g2´Ç?Ùí åuö0ŠŽ^¸l´0Dæm#PD†Bèn.3Ó¹˜«OµnFÞ °›5y-‚§§¤܃ó¤£ÑÓÄ<"*…Š0”—y;Â&/z¾€KS2óÅå¼;›õÒŸÏ1«ë|oö—ï8ô .?œ6jÿúÆ> 5èϤ‡çD}ˆè4ê.Ä? ÜV0¦ª7£P¥:K•û$Hy¼jŽ÷É2¥ò_ŽP*ë Ä¸“ueæé‡¨¤„vU¬}`Ú;‘ƇY=}F·}³ú–nýÌendstream endobj 721 0 obj 2638 endobj 725 0 obj <> stream xœåZKs5¾ï¯Øâ4lEïU\HA H‰]Å!á`gmÇà^»lÿ{>=FÓšÝñƒ8ÅÊ!жÕj}ýu«Õ“¿çœ‰9ÊßOg/ßy5?ZÍÒô\Ì®£¿fÏDù/âóïvã =—š9ïÄ|÷p&м÷,(æÆJ&%~:½ï^-¶±™ ZÈîÓC%‚WÝ^œæJáuw‘çu݆\KedèÒR©M°Ýåb[YˬSKK½vÜø?všYÁœur¾ûf¶ûâ}÷Ùð.jƒ)Vè¢YxËuoHÜðœhëÎò.&¸n'-5BXÕ]'q‚/¦–á¶âLY@µ„™q“ µ³ô(ÑÌ—ï‚™ Á‚1 5ì#ó½Ù;Ñ%Lf+­¸ Ýé4Ê{kºcl<¬RÝǼBawÎ7®;͇ñ^) 7ˆ¬òJ Po¢´…ã8Þð[ã6ÚrÊÂF‹Œ%×8PcÔH:Ú-µvÔ’³^‰ïV×Dä¢KÇ4L +/³rÇ•î7Jc¶Ø¶ÿv‡3ÐíòžQb‡L?ŒæýÇL»ßwLǶ,Ø«¤eÞBù’¬,HpÍMw2 _ —ÜŸX V§AaãnŠõñÞ"²Lò;ÄãîÑw5!¼ÌvûníäF”ƒUõl÷ж…fÐd}ׄ¥+Ÿ³2¯¥íŽÛÚ(†€Ú„`9È"Þ·"=jVSŒO¢0ŒºIÔñ{’hÿƒÒjd÷: Kº]³;4;Ïm³!_ß|3œìå`’(ÚÛdÕÕZÐa¥wml4B½ã`âdòí§su)E˜€‹Žå¥ׂïI¼Ju«“*3´ O‡áÅ0<†Ñ$8H(•h¸.{W‡›j\Üby¤†Ö[ ­¿ß½i¤ÓùÍ,¿&Þ½žyX|P( ƒšS(tB9™íÌ|?ÎY…âRÃLÀŒMRX)Þ-ƒÔ03HÕ•¨æ™Ó.¬“>I O¥É’§0ô¤ ™ŠnÑqiªü@:Ì©^rNÁ8¾EÎɵ¥(©œˆAQ§oò8ÝmÇdþhbþŒÌï‘ùQ=ÞlF7â§Dübݲ4IÆWYM¦{1LWïV·Và+Ès Èx —ËÆ­q­[«T£½HÕ•Hœñ·ÓV»z&· ä%QÜzÁÐÌHÓ}; ©÷ît§d~ŸÌSœùœ8Ê_‘ñ-¢ó9ôôHŧÁUµ‘x’0EA,ËžDŽ}­Ï Þý7 Þ}ˆž1ª †^sæ 1/ «©Vy›ø¤ ¨©ª¸,Óþˆ 2a„)Ž€sP Ò²ð<@˜ÀŒ*ÑݧÃqҞʶW9sÞ­Ç•Á“Jl ‡Ãô=@U ZèFŒÑܱ(c$jçJ›ØƒÊ@- Päu¾ä¬þv#(,'XuØâ·9šé[ëéñ)Ìë¡"W¨*|÷oMËž‰yŠ3«Ÿ—yË D—m˜&¿ X˜ËuôWn¬ð€W,[Œ,Š6Gë„nóg•j´©¾¼„”`R‘ò²Ÿyœ÷ÚšwÜ g†}É{íò"‚Dû "¥?y¬Vkm^ƒªzôP©Ï¬e0ÚÐçà5‘8#¯º}y¢ëšÆÈùÚ>ù½÷Éœ{žOѵö|Šë¤ºÿù7îÐd}Ò}n7ªC÷ç:Ù«¼ò­ îZ?¦qË‹¸Mì\%m_7)Ö6-cà;hÛ?ª*z¢ÙQeiMÛÍ}54 ¾ÎÝCíá2:f‹mXzîõA/âC_|ÑJù`dƒâíàZ‚bÓ…§½¤Q»¥ºUãŽèDç àétB$ú®õò°Îúq[äaK)á®F¤ˆ¦ŒvjY–½áÛÏ?ݿƂÜÌT<[ÚΦî|<]­®{éþc(‰6|l l>ºc·Y<_èâÓMïò"oÑw¯ô>­F´Ç¦1 ¶„I«Õ¸»ëâgÀñÄ°ËÆqUzŸˆLC áÚ7Ytç‘äΣҰa"Z¦>~}ê Ÿk²«x™-Œä7)®5®¹ Ž6+\¿BÊ6¡> stream xœå[Is·¾¿Ê/Èé•S©Fâûb—ŽJrÇ*[f*ÛJ\ôd’’IŠ&ýëÓ Ì`ô$>Å•¤|xÜèéåë ^³ž¯þ7ü¾8_ýù™“ëÓ«U˜^óõWiôÓêçþÁòõ_p…ZsÞ{­ùúàdÅz.eo]ç{¿ç«ï»ïööácV&»»=Jn¹ëžéÍÞ¾4¦NuÿÄiÁf¾»jæ¬ãÜwÇ8Ï4gZªîém+¿\„50{äÂy\.psÒtoóœÁPj.”ûñà﨡ú&{éQ«ƒ#Ðàk$V^0d!L虜ÝåuT1o*Ò)áœòðñ})tïï¾À•ðeá‹ØØ ·Þ2×ýe²Ü0êÂ:ÔJÀg·–BèX¡º#¤0½Öªû )@+fÑ6ÈÙ3Î%e”Æ9×ír ÊëA(¥œ/y§…—Çñ;Æé¨{0Ô¨»Ýò:**ÑÍúø`õíŠÜú—`ÃöÊ€q×ç+-„ì¹N3g«ïV | ÄNϾÄU¾‡EÊë¸hœ0ðãeX“qÛD««£Õöܬ–½³XO¢YÓQ–LüšÌŸïík.{&"´‡Ù;Bý„Ìo"µµ<¢d 9cÎÀœoæ c*À5²=úïOy:Y9 ŒÊ! ˆÅÒ 1ÙhE©Yï1+®R.Фu‰¨à=P !8zE (ïÄAB„½!¦eƒiè>Ç¡ê5€ðû’"YðáöóÁ+?šÏ¢õu¾ q7`¤H ’ùŠt~[Ä;` øû °´äy˜äú ÌH ¸J»Àƒ³^KáqÝˆß ™?$ódþ”ÌŸ‘ùc´,ï5`¦!a›î`¨Áh4È+_ ãSBV$ò<þ¡kdˆ t $övB2A]ͧÈI$?ìmåèäÃÂõºÈÚsÛkšpßIÐÞ@;àæ‰ú¸šþÑpùi"‡dþ‚Xç´á '„æqÅqcÚþ”Ì>ÜBÉCB¯¨[¹4{«p2/bW[ ešÄnXev»ÚñÞ(9Oí­Ø½(mê0t,4$’¾±ô9ŸÐHèÞ߆É<…UMF¸Þ°«ÄnÂ:aî+a1i%bˆýHŒ‰aǺœN0N%ƒ-g­V‘£¯xk–.Ÿú“V¤Þše´îӭܘƒÃ¬ž\4|}ÙòûiƒˆJsÔòãÉükaÇÓÖ—7@Ìÿñð·–5üãÕ\¼¸Ïn ¾€Þ˜S8SðrØ} MÐ~ünÐ [rg†$ôAã¦ÔxHBuØélÝ÷ ž•°šùqpTÖÎ}½i„Ó~x¢G†C¾€ ƒ-¼#ˆÁErGùŽAùâîÞ-Ü'dú‹VKöÇ2÷U3A‹¦(,Ÿ“ÿñIãÍŒDkà«VµÂ}s½²nTg† š9ú9‚Âø†ÐSÔœµÝ6#" É2Ñ0Áz/lÂ"_œe¢’uÂ_8ôÓŒ;<̇~ãÌvôzé¸YÁžÅ3!Ï•¥s+a:Kލã\‰áXœ6œdx·‡ûm‚!›ãùB÷Ëž°½´&øGJÓ+í»«—„ïë@½Ð…ç£ÏVÛ}ƒ¤Ã ðÝ^™;¸²LªnàŒ_g)/"f •Â"sÞi5îí9SLSMèÑpA_ž Ô²+Ñi"@MÂBî“Á ÊÕ´ ²G˜ïå£ðKBùyB¿ ÃÑuŠæÝ¯Dª×m6òpþ lx÷ ¯•€ }æ$„Æ z{“Îý£ªFKAe»Fé…wŇϲlïák45 ´?J´UVt¢`1à‚Ù„Lá†ZhÔ®@8å +=ˆVÖ@å þ·Çžw¾ \§ÿ¬fq_~T ö<ƒÖ †'ášÃhÉ)Ó·ÄDD¿£¸1;Éá#Æ.8~±ûa]7W¼kܯñ~L.›´…*FÐ= WdÞ8܈§áëˆYÈxáB ¶þBFàÃãL°É³·yø,óð&7U‚Ë<¼ÎÃ>_äá›,Û4u.¸÷áNiT9–¬Á¶P¶ÎuO‰ßÈV °š°r PiƤÁÛ9nj–‡ëH,­œ 8Áž²ÖH긊<”aW×i6b†mOëIÁ “S1Ò²‘ù+—uƒ\G ðþn)1‰’4ZÑCÛ*°—«½zP@1‘N9Αp }¤yšg!#¦ñ&Ãð"Ïb« 64ÌP¤ô–€ =®âf”âp¦Â˜:ƪT×ÏuD©Êƒ*Ãíkœ}‡'DЮ©Y×QÁ’à ‚Y¯õ4Žæš†ÈÀ$é¡ É*lÉ»²6±†Sð¡Ûì«›ÉØ¤šÒÍJ¥ÆA%ìU¡?¢‚‚3ðºõ>‚J4²È‚žTÍHÚ«z÷±©ºç¢¦jµ'±=3Ì“Òyñ3ìêCìê¼R5¢œ„+9„ˆSÚàžÙJ  [ŠæSü‚ƒ6²Œ«Û\€HJ«A…zUœ€†¼Ü…à•zÏ줆}äà/sæ°+^V ¯•¦«Nôž[Q‰Õ¥­{˜ýµ N·f‘ ¢›ê²Ãª ×™CŸgIê¸[ì%½ê9ªž`:Zh~À<žøJ…•Ìßq†œ0K.ò 3Ða¼ÓæL”g2Õ¸Pr@8§œ`l N‰¨à=P Á¡½£2áª{Þ•Ä—> [îyizEf™_'ÌÞ¯U.\fW/ò›ÂÿäËÔlàÂ/ÅÕ4ÉvÞÄ ¸ÈëxÁÏÿÚsßl°Â̾€¶€ÄÉ‹XW•1’i Ö% ?šxß½ãÃíxGX»­å×tžÞ¼néŸ4.®%ý[Ý¡e3ã%;Œ¦Ñ^C'¶ÂU¦´y¢)X© .t-„.â»±¹òøT<Øü6ßè“ËýÄ87Äh‡ø¡ïînÉüøŒÙ(tPûC‹WŸ•…ñ¡ÿlZî ÒîúC¿æàüCæØzDBJ¿ú2ß}_52ÂyÉ2>Ðó͇¡tés²+ŸÜGÙmÍ‘3µ7 6Ï"ЫëØäUbGS8§‚çâ’á•"Áü°ªžD”fÕ¸_+r•VñI&¢‚7/ãñP>Î Ö–ï$Q­c Ò;›{*Ì_ÖNpz´EU{[⹊\ZÀh?kÄËÍ 8óg6“"—ÆŸfš…Œ›Œ_øÌ¾æ Ÿ¥¾ÆUÂìä‘&÷¸wŒú„˜“¾!!ómU²”…r¢”p¨†la•»'؆‡;Ü"è´}Ó(ô¡âË”.Æ”b¶jyZé‚ÒÓùÊ;«ò®È{MèQLæCÖ¦‰òdÌ«¼àò²”&$yhÍód ¡ïZû„æY#?ßœÜz]7í%Aq¡Ea×e?Döïðô2.À=!¹WF®†ÞÓ‘È «ä=#w„» ñÐ~Ð@õXcˆ§Ò£ÏRYY÷ÞÝë·ýµ^6žè£mÁ„̓ü‡>ÿ%a¸)6þ%ÛÄ Ñ9~ Z"e™nüHšnq•ßQºUÆÌ÷›¹Sè_5å¤CëùN“ÎǨçô¹.ízß4Æ„~Á‹ÉA…_}™E„WųŰJí¨þK„ÑN€$f¡*É¡•U‘·Šeœ‰ïD5þýuÖ|<¢ã ÷}œÑ3K‡êõ§˜Rˆz£µ œìãóA±*n}‚E¾]ý;›Ôendstream endobj 731 0 obj 3400 endobj 735 0 obj <> stream xœå[Ko7¾ÏOØÓÀ§`1|?ä°»HØ ’hOŽèáñ*+ɲl9È¿ß"»›]Õ$G-MË— ‡´KUl²ê«âWdχ-gbËãÃÿϯ7_ýìÕöÝÇMoÅö‡üô¿Í‡þÁõí?N¢…Þ Á‚1b{²ÛˆAß{” [ë ÖmO®7¯»_ŽŽáeÎX©»?àQI)}÷}/Ö–«îòèXYˤ×Ý¢X oxè>‚6÷Î º·QÎàFéînÐw¡û1 #ñ)èKïƒUÝM|™²Ý}z”Z¬pÊ©ý›“ÇY¼ ÉS!.ëä–ðcTÖAr CH˼2®»û”¦ªyp2®¦§apàåÇJæ¹èþ-á-ÚÁ“ ãÒô„ ŽûîoqNNX®a½`çW^Ç6à*3(;kmw5,3Fw?D ¥WœG\…µñ“:,BŒ“ÒÚ‡A;ÅæbšÓÝÛ~A©~íÉQãÚá…w“ž*Zctëw'›Ÿ6°à·lÀ﬇¶àÜíõF;§8~”\m~Ùh2(÷xúù_Ótt0½U–X#«d5A· X_¬àšYi¶Ö(æÝ؋޳’ßÃ`Äj»£c#s¦û iü†4.‘ü¦!ÿ„ä•qÒó¯RúؘÎ’ï^Æirær·Hý=R¹Bò?Ñó»†>^˯Gè_OJ9Þ9t^É PL¡ËºNe8 8ÚiX€…eAúm|¡V²ð ä¹h5/¢ç43·ÿD*ï‘Ê ’DòOH~‡ä÷H~Þ@Á{jÛ/Ìg–ƒä{|ž½I¢0x3{*Ó$© Õ¡­ãs©!ó‡¤zŠ“œ!ù+š 1 ¹pÝ·C¸ î¼FÚoù'¯y,¯<{ƒ[ å û'Ú™•0 6J˜v¬PÄa7P‡ù-{„xÒP\™ 3WÑN¬ƒ+,иß*å1ɱm¥<ÖŠ‚ùjï±oŸ¡ø¶ã2yœDJP<çÏÉήƒgã³z<Ÿ7âr݈.²¸°¾mlÓgH~Zî´Éë—¥oÙ#!Èú÷å&‘žÏ‘žÛe¹Fl›ôñ{ %À{ðLäh”ØY®Zé™Å¹šìdœl™µÈèr†/í5”heKØ'aƒÀcE»un9â¤Ü_g›¼I¢@O˜•f¢Hø¢™7ëdœžm‡ ‰—ÿ-æ¾áF¼yUN÷q»õð¦nû7–É#Ä‘~UÿF íVÚXdd×Ë¡úûsA•Ôýç„jö&‰ÂloàÀÂ4j4 BU `æ Fwñk/Õ¥›~~ÚæÐ:uÅRe1˜—í='>mŒyÐÝk¬¬²»ããÎí÷2ýGìÎ#ÈæyÙð[¿Æþ 7ŒM‹sÏr#¦Šqéü=Ü1ýø 7çœ $‰-SÒ{Å)SÑnê.4†Ò”| Ÿ:ŸMeªÁyqè*_ $9>bhÖ&ü‡H~_òi@Çw2 ?!]Ž|.‡_r"7z'ë·š,r߸SÔ ZfЀž‚FüØ2~-¸ 64°>°áêØ_“U¬ÁÊ¥×@U…χâø~ 9-ôgvòpvUvŸrÌq®%;»Ž?­Š_É®þí×ÜíKz”‚ÌήyêÕwŒ­^¤ûfQ8²£I€,†ŽÍ w4´/™´ÈàbY¼YÈF;·ÊWRiØ ÌÒ¯0pª<õ³V¼CaÎÒ:coým¬")à*Šs—¿›‘šë(ª_‹`U6ü¢/:ª‚K@á(„”#`0[ZÓ¥XrÐôT`¤ç—¥7Àè?Ñk]É~A`<‚!& `æ q`2æ"ˆá"61ÑΉu/äf1fpïqö˜yæ¢Ñº $ßÑ?Ðn,SÒ©ìá 9î/CÜG,ï"wÆèˆvÒ’ÝiÒ"£KŠ4 ýÀµ0Ò’t¬¬EF÷³y`ŽÏ+Ù©Ãêô Jа6-‡\Û›î?ǯGßRWŽËß ù7ÓÅ>&6¢ÊJq• ¸@¶ÎCx}ªL ‰åôYMc¼1Ö·{&ð0ˆ'ø¨ð´Š¿@Â`‰va¼¬EF3àÉø ^´Ó+OÅåˆyŸò*WÔ‹ÏÈf×Õ•FNƯßjo*J^ òm•é03• û]ÎA™U–¿)Š$úz†üJÜÈÈèg¸ÉZhô¬5þnBÆøs8Ø"C>¿M?‡%Ñ®…Ÿ`jø‘Î1eÔ†ÖÞ ø ñ†@ëL~Ì>ùió.«3endstream endobj 736 0 obj 2551 endobj 740 0 obj <> stream xœµXÛn7}ßOèÓ"@ˆYÞ†—yh‹¶@ƒˆ£>µEáX’aÔ’9iÓ~}†Ü]îp/Â:V¡‡¥Fg†Ã9‡C®>Ô‚ËZÄOû¼ÚUß^x]_ßWÉ\ËúeýU}¨dûE´ðúûUô0µ”<Èzµ­d‹—Zsg]m}àŸ«]õ{{vŽ“9c…fÿžáPK'=û‰˜oÎεµ\yÃ~f%=ˆÀî-¼óR¶‰vR€6ìñŽ£ç«E9‹ÖK„+FÙÇ!Ú´eŸú!ÜâPƒTÆÿ±ú%®ÇÒõ(¡¹qU«5®àU› D ¡,÷;|L™œŠ ÀìŒòÞœü\+à^Hö]ôÄYŒÃø”žtÁ Ͼ‰99i…Áå¢_\•ÂiblÐJA « [G„冽Œ\•p±61rRjºIP[ï=;Op‹‡6)c|(cgÇæ™ÇzhÖž Õ­]ãÚ×½M•¬1–õÇUõ¦’(_ÿS¡6OÚ0‹[ï*PJs Ùr[½­ rŒàFN?G¯ÀÑÉhœ:ƒÅGÐɧ×í¬Zý´Z—¶¶ ¹w­X·MY•%2 Z±qh8à ˆ!áŽØ?ûeÄ8–kxC0ŸÉø‚`.‰ýo2¦¾—OóùHÆ¿3¢?Ýû5ß̆NvÖÉ*È„"é7,a4[¥Ë†Ð½Œ? íÐh5I{^ 'ö«²wÄþ~,‚4¦5ßûŸÄþn¦þ÷3Ý ³%c*Ä=Á_Íå†`îÆ¾tÞ±°Ÿ9-¤Ð’ÚñŒ½–ºß±ag< ñÊ`Gj÷;%lb3$û¾,Vì »äÍìgøÝÒ²±‡ož\RÕ\Ÿ®dÂ*lƤ†Ñ š:g¿ *bCÁé8P6¢—< ,žñ~¼ ©üm'†ÈK׈u­ú@ÌKÚØfN΂üðl†» ÞGûåÁo'&+xm$ö|‰ z† be!pÏ["ˆäeÙM ¶Q«kð’[£½«žÈë9jž’Öƒ*j+â-ÙOäéÌŒ K0Šã•g;VG‚S‚§RuЂG>•žëô¼¿]Òf‹¨ïìÍÝoPõ<¾š[ϲ†ÔK«P¤-ÛˆUž[ÒF’—zdéô‡ï2ø“êïz\Ðѵl=GÓ¬B¨‡â-¾àËwúz%í÷¹×sçØÍ±…Mî(:Åñ=Ñ(yV¥Ø´Y7Q—î‰#[!«¼ØªlÅÆ|w$[!z¹µbPxTž¶S•Ü-9ÐŽ©\x÷þŸ[ôDÊÇï^Sš}¨L~ªu/‘i#Áã2}xëNQè5K±P°+[wóØ õK¯’3ŒLãH¼ê+ Ò#”2¨ ŠH_#< ô £SDÖEF&àuWÓŒ’S™Q*CgqOö’“)3ʘ"²)3²xr’Qã4È(ƒÊÐeFàñVHhK^0H)ƒŠØsJÿÚ ð~Gþµé, ÕþÇÓw®ÎO lJZ¿Îýæú[€©þ¦Þhƒ¬=¶9ïdÓßBüÿÌ ŽÙ<ÌjS}h%2Ìendstream endobj 741 0 obj 1193 endobj 745 0 obj <> stream xœÍ[Ër·Ý3®|Ã]cqŒ÷c™Ø‘+‰ãÄ2«²°½PHŠr,‘ /eYŸn3ÓFCKV¥¼0bºÓOàþ÷ Fyø_ùÿÅ˓Ϟ}¸>ž¤éƒ<ümýtòßYþ!ÊòßÎñ sPfôÁËÃù³YÖ‡0FíãÁ:5*zyòÝðùé0sÑH5tŠæ^LNH?:¾)„C×Ê.+Áj'‘¶rx (J“è¥^ÿp$¹!ó×Y>iõð-™&X|œð¤Cp–j£¨N-'g¯•JÒ_±?/læd– r9éÔO‚¤=¾™áŸI+G RÏ42C°”™\ú®ãTÆÓ3ØÂðG<#à8‰&³‚×ÅÆ¬Þ¶1æyùa¦3QÌ^' S»È;P€7z ÷RÜ€¨@(Kmê< ¸‚gØ„ötç|9žJ @c}'G©â{’Iö%AÑkr6DŠ9‚ø·™^4qp•u SËm¦^à!/¸ù`äVfe>@NM E: O‘† ƒã´oQÛF¬vPŠÄ ³UäI±)'rÁú:KÃFë,hf˜\Øq±,&ªëä4`ðŠ(å5AÔý  ðûRôh QÃ÷CÏò NñçSˆV) ´N–ÚÔ1S3$<„‹¤àÌ<ânïøýi¦ì”nIï¶N–@òä|79Nb™÷* f_ù¨xSÙtìµ\ÇÎIþ.\*°ÂËHV£rB2³œc&ÉöC6±ðÌŽ™mbš-°Î¼9¬©{¼ :fÜžÔ–jƒ¬NÚ;Ëüd7¡oåÔ¥53©½›_Ê:Ø”õ[ɬPvó\ÓÆ= Ç„KÞ®uÌs0‘¶cDbCµs•…Âóž5-n~w¾€ÛtÖ¿J0÷ë™­_·Íž)6aJÈi&LçÏ¢4’&OW'í«ÈñbÁ0®Šÿ*©MðcŽæ4c½Èı^E$H‚è–ô—ÄWçŒiøpš…–$ÈGˆ>¶ÐvUÀÄIòªå³/JÎ¥U°‰õeù2Ï5;̹]ØÙ:@#e#=, üpèDÜqJ÷,d†²' FA‘CaÖËn{PNÍp&=ÓoÑßZ—|߆]â6¡4û)jN³îǧëµd"Ÿ–ÃÑæ};Ï(ÄxuWõù°»)8òOü#e[7¡¸¡x[—DÒ ‘W{(¬V«#/Ž?˜’³_WH OCJãaqâ$¾q—ñ+¢óûLÅ™í@žö¦zÀê÷"õ¢ÓÛL]š®k§â¾Ú¯ízuòÍÒ\ Êz>gZÅjº^hg¢Rù^sÕöì×,âÒ(œ`nud©OJ§É™n·`¤Xud aèÌpKP`|Mö±N;¼ !S.=ó©-fåMxoK+ú„JÉ8»Õû¼‰´éõ`¸ÎÈËqÓ/5¦¼¬§Ná—¤†÷ñ½)G/ñOŠôB­ÃúÚ)uí¨Ö¸CD-ä¤t¬æ6F©ÙÍ\³;=7%ÒïTPw³zhØEžd$¼(™Ž©}·@µnì`ÉÒ^r¾X\à0ºr.°¼‹Ê«¼DÇw5­V.¹ÊËÞ¿éM«Ì²)UݽϫmxWÆüBzÚ„of2sH’«E"bânM(ài|Ì4ÌŠq½9Ï€D>Îð¦.øÅB­Ñ&[¶nÁ­£ËóÁÃÆ¦ô#óàð¥~yÛvP»‰R÷²Õ3šÒÚfùªÜŠÐÂAûÓâÉ {Ã=D Å@‡’ï[Ááds£`“R¦‰[§“½q­jWÇmžî´ŠgbÏEé`e÷XÇMìEz;oæ&‡ jir$ZÊÇÊ$—-j—]–®‚g¶ŸEÑsOYq ç&°’Ò6.$¢åƲ6œ N@]ã?•…„’uÀžš}ø¾ç–BkI¸Ún³®ŠÐcþP­c°–q·¯†ÕƶºæuZºæéZ¿ LâÂÁ EÅ¡É,^«NÛènÒßv•kôÝ€=Sàõ”I]|¦µœPx DKB1ŸÌËÒÛ ”¹]ñÉ’L¨ u+‡ÙLI$2o^þWß­Å˃rb Æç[hÅLêÝwGHtÍéŒ~nLGAM&ƒËšÔ΍I®½äQ‡ÉpI ·E±seÐu¬o=³xžçɼ’V`sgß5{ëú+A(ŽP|(p„@NGWá¿°>²Ö%NÊ@9àâž».eð†¼õfeuÑÜ 7™úZ)âÍérÍ|›¥‰*¼‡ÚÉD‚éåÙè ÏXî ,Ÿ·ý$[>kÚnœzÒa™E·æÞ]A±4,òçuüG½2&C~¼±ò€™“rM[+1‚Nòï˜Mi¯ŠÎËð~Þ-×!Öú= Çý¸Iá¢Iì¶I÷í Lò-X”ô{L´öÀB’ [>Ú…ÍĽ×Õžˆ»Ð»J¢7„½^z¯X…òèÒ.o+ëÆGvÉPâ±—?ýƈC¾•±wG°Þ£!u ˜Z…_‰5°2õM@]¨9µKÓ”86eÄVø»(Z­1Êl oÏÑ'•úàüj Éhû¨lGÓ¦o“ÁáÍ+÷mÉ kß–=7±Þ•oKÃÇM  …•o«½÷mµý{|(ã¡q¾'ŽæÄö>j‡Jç³Ó›:Hÿi¿ðezÊ'l·çعµ¿!%Äuf"\àUÊôº%޲hPõËÀ Šù©e;­Þ•Í—å¨ e!³ª«KœµP¹ÝC:?~Ë€#σnpÖa¾·y ð¡ìB³.Î2¹Oï‰tó§*ÎÒè+„„¿É‡Ç•…$ÑÖ¾«PX¶Ùü)éG•†b;Y±R}tƒþÕ¹šPϛ٠yË4ƒÑÐF±v”d~÷ý”ÁÇÃ~ã] öî|c~ÇcÒU›†§ÚGH4ìö}Lz¶}“Øìº†^ñÝ û̸¢ÂŸ³ ÿ }Û¬)lßnuo`‰ã//öäwùË ,3Áµ‚Ò—Ôé<š7ݶzú¶–œÚ+¯FëÒC: ‚¿<¸y˜g~ENŸß '¢£s’æôuåv½ Ÿ÷ÅÏû»\f¯Zûk—kFŽXaqC|Mb»Žë¹>Q.ÎOì¾8+’h<[fÏçaK((u¢œß6ám]€¨îc÷yPë'Oõ³·é'O*ÔŽIC"fUåZ¥r’ý,bõЮñ ¡{?AËü­Œ†'_–ÁƒûŠÊÊ1@/ñw ®„"ò숼Õ^á°Û¨ B Zqþø¦j]kÔCûÛ¨o£šU sÍ?±ä?«~PVý à>Ìå΋ŒØÕoñŒk!ñW)±d>érý9ISë×LÒãý¼©oÃé}"}wÑyÁ€6à5äûëªw4(·ž4'mdUWioÒ¯v>öV×Oý6iø[0ïÜG7¿¾ÚÂ_ú͹Ùf`G…V]EÄWpýÛÈuq’:½fpÿÒÕc !6ÓL÷Ê[åX÷÷óŠ®Ôzi[B±ç¯¹zSh+r¥`²^ãò¥_;ÉoNþòdÜ€endstream endobj 746 0 obj 3541 endobj 753 0 obj <> stream xœÍ\[“\·qN^7ùyšr•+³)Î î)r•œXvl+[›JU(ÅÅ›(J¼È;d$þû| àœÓÀfg—¤ìÒƒ±¸4î¯/˜?ïÄ$w‚þ+ÿôââŸÿôîéñ"5ïäîwË×w¾å¢tßýòŠF˜”S´V¾¥¿ÔzòÎï\ˆSÄÿ¯^\ÜßqyÀbÞ8¡÷o/ñ©¥—aÿk~vyÐÎM*˜ýQ³’ÁЏ?¢·>H÷O¨]X)¬6ûkêï'Œü<Í¢¼CëtW!FÌò’>ѦÝþÍúÉ:<ǧ¶R™ðÕÕoi?ŽïG =éH»ºzŒ|NMT‚¦Pn ÚúýõëD©Ñ+Ú¨3*±øA+;!÷ŸÒH¬b}EÐ"ÐSHs_—¹k‘•BŸë?ÒáCšJâ¤aKôM]J`‚†cc> 1íA5K 9õQ=Nr&ÉÀý˜ ¦õâüÑ"åÝ3×r2^ÍÄ~¹gš™åV®­_^®½irc3™ v-&Cp…¥øH;Ù^ð”³v 1Ìg«1¢‚§vÆd{“&ðÍmwp¶`ªû}О‰?°5f|»ib½ž„2J­üÌ7©c0Æ‚†|Ôm qG®z‡€… ‰Õ€¥nöîÉó›ïÈþo{›&gÏIßSÛïtªt5?è©Úè•?óT °ßöT# ñî§zZEÀ+äßt®'á>ôAVfW 2d‹¯$‰ãÙWbŽx«¨Lº[øJê_‰B„Î}ÁpÒ7ÌB0óýèHJ.RC±´(ÔK­`rÏz{“»X2ðkÑ™üœø¾8̨N4 ÀDš†×I!B|iòžÒEžyUƈ0´Xi–ºE‰ÔjëÖ—¹ÕËýßÂUƒ[Ú=Ý£x‹ß^–Ÿ³ }Ò5Hì@)¿"ŠX$iº<ÀÁ–)XV ŒWö‹¹©pÎóŸä€•µ“[=ùD…ž_Wÿ` vÊ:vVl®,˜e¢„n¬)“¹GùpÔÿÑn\&A>îS«'s 8¹ºüuù¸~zÛ`/yÝp»¹á&»ÈíõËç¨*ý•¿Mnc°|P“ô¡^?¡ÊhÁÙœS³“[4÷^xÃEŒ>‡òC0ƒ"÷^˜3Ü$(—Á.au•¸ŽaWïmf˜•Ü—žÏ>ÐBo¸Ëö$Ï"th”µÆZÁñ Ãöʦ.|îÚ«f·°,-öI7Y@!ò@zÑÛ!9ºÑàŠ¹ýqäß<_CÓýzæq¨šsTDW~ÑPw™Ç´Ý§±egÁœé/(éGnI.£MX#ŶQS±RêÞ1úZS­I׃¹¯i$$ÛÜ ¼Ó!Ö¹‹\„‰ò–¿y5Û»®ZõdqH3Ã3Ÿò¹i‹üÂ<èó£òÊÓ½íÊÆÜóÛДÓIž¼Ðby“ø¾Ì éƒ(@£ídÔ¢7Q°²¯ÿ!YÿEiä{ÔX…V½>é?Ú³ xµ¹˜ìú áUO¼ÍK£f/âÒñp%`‡ds+»œ‰Wþ;<ÃBôf Xüø†Ýߢ¦eì)"._©÷F4u¦|iOwd¬ÏJœóT̓`rÃÅä.ŽƒN%° JÞæÎ>ÚQpz òYKÝþ7˜c±ëÞ‡‚ð(CúÆ®ÑÉ@ß¹¾`\|Ã$Ž QÚ³š¨p¡2¶i:‘íäÜÊf›Ï*‰Üà >%LV°'Ù'™Szƒ‹89”áµhçz¼£¹R{ÑÞ˜jl¯Išl€×»ÉÀ÷¡:íÄ囟@&ÂŒk¡$5‹PcÑMØŠ|!&̓~øH$œ"Jº[Š_¨÷ÀŒ›ÀÇÌŒ1ú s‰ødÉ’Úò'5²½„þu^Ä4¬=Ã[íK–ã²F-Èï„’<:ðØjŠMNÅYhK¡GòÎ÷ÎXW.i¯*¡«Æ!ïò<Íç§ÆI ¦"Žeu 8W’úy¨Ç œ_]*ÃtÎ6Ž¿î¥'µo/ƒœœu©’ĬًTÛògm‹ß¼Çy¤‰¡•M…‰T:¨Þ1wRPIh5Î$šYh›”^"Öůø¦o »éøÃ¼~h«ÿriùvÞNZ^ òF 0¡Âf%ä¡Z¨²ln¹KB^ÀÕSPž6þE3òq~œeaU—è»U“ §d²uCWŠ:˜“—£ mæ`gÚ>[·ÄŽ÷¸ò‡ïçݾ¬Ãëç÷ë ºl=öØÚã¥“Ó `y§2.pNP•kĉŸ„þgš;×{²ë¿Rg¯Ñ;ºh"%Eã@ÇÉÔ+´Pð¿bSoë(˜m'ÛT~gŸÉîP"^Bʤ¯²ýçr(«àó$”F‹Sk€Ä]‘޶a<Óç;ÀbžØbâûKgæòÉìoæÛÜ …• cˆ-¡¼XI”­€íûвYøF׋~Eû$íÜCF‰)3'ä‰ÒIšÁx•k³Ë°«Ë%ñû<ƒpãJG¡žYo7åtþ ,ô³ ²_o_z¹^Ûžê`Jâ_R«W©hù|°vx¶¶^¯Ÿlëðrý|½~Þ»Eß_4Ã2 ×ÖWëç›õóáúù|ý|Ò›·_â8¥Ý\CÖ\ÁïÑbm¶ø!àR³„›Dȃ(¤"T¤Ò§<ñ9¦rh͘ý/3Xƒn)‡¡´Î–‡T¥I?&òQ¥hG*õ‡{‹°MÖ¤ø«¦¼ażâs>ÍØM*\Ù]ýþâêŸîïÿ;©›Ñ²ÖfRê~-R…S_Ç–O 9Ž´á gŒ‚~ú$$M]L8/v2àh…ÐjX` ·m-6LÀ_ľV‚ý¤O±{‡aˆ®SiZÇÄ—wyöˆE‚ƒÄQ^œO¶ÜžÞP% üÞâ±×Í*¯­à†’¡¤±Ç?#É.±ŠÞȨ[{†Úlâjø›zHmS³‘äBÜ"èØ (½AXÙŸCž”dïk “4géü«@´Op •¤«—Ïz``ß…¬²¡°÷ƒã¥ˆµ‘¦&*Å Q”ª[hrÛû‘úfÙ¥â†ù~´»ûÉ€c•F(5br¡xVÇM) ÷~7 ì:»Ó¢Ã/…)Ö.…©ªýq¾á¶ÎÆñ>¹äÄT„Ù$Œ4n}ñAñ?HÓÓË³Ì 4tz¾z¨F]5£6•؆IOSÙK@ñäSç¹Fèô‹²tz³°IÒŽNu^ÉØªo~HnÇö ƒ,£Šº[ëá,åœ@HT¢«íf,vƒnîi ÂúÊ©Ÿjc7?1Þ¼Jï ÎÔã©öîîjÓ±W Ïr®t}(ÈÃÜܡʬŠ©¤,kÛ³JªŒ…¡úv”\ý°¼ªú–¶ç±oÓUñTÎJÞo¶;TMæôè‡)Úßm@ïP÷?À7”uTóJ´w2p‰.¤>¼&¢•¼OÈ7i m)Wð‡Uµs2ÎöøÚjƒÎ£ÅÔLMqÄõ½zuÙGBWv}i˜S ›'w.¨¥óqNs n…sîUÎM®j‹Íå|æ¿Åü˳ÌÿŽñ‚¿+Ú+¸rï‡ïC­ˆ}[¯"ôó‰RJ‡Hùßa‰òëÁUê¼jÏ¡´“e6äùÍEÊå×Ý$t›·ÃéôMt{€ÙðœL“n“D«²'K«gV~ çÌDºŸ“Eݼ¾)…Õ¤xQí0#²Ì?¨6S•7|ûÙâ~ú+—¶YgYµ6C£¨ ž›Ë¢ˆ±ðKYkIõÓŠÆi¾âFçm_ª…û¡„—OüLP]E•Ö¶fT•ý²üPÓ¦r6‘lÏ,¢K½a«§„G.Só±4¿PµRZWÒn²ЗðÈ+¬Ú\3Ë@¯Yåõ×N<½kQ;` 5í^\˜@¬ÔK˲&˜‚ÂÌ;úi£X¶üb×6»ÍréÓúÉòù)Ï3LŠÀ—¤Ë™9P½€¯ß{.Õ2=H(¿S†®`˜ýNÙÜBÛ–·¢NšP6:-  &õ±TÒní´¶¬½æô6(*>EÆ\ê³–’ /ô Þ†K?“”ÌÌÎj°{ª»8,¸êÒÂ,yBkkÖã kÀÚ_füSþ–Bûý§ƒöãvžôÍ×}Æú¿díOs¾`íœÎãö;õÏ·peC»áÜé’ýá£õ{+@Ë!/'Z B9Òù”% ¬á”^“Éw;vCË&!¹sùÜ?e§ô§-'R{s$ôÐìú4\ÆýÏ.a—Tœð‘;¿bœzÃÚ²ïç5gR¡ÀL%÷Ù4?gí|©¯îÖ?õù˜µùåè/‰88и?cÍ?¿…Ȥïi ··c·“yË¿Øx¯P¤o\lÞÀ2´³Xž¿³Øö'¤{\&ï‹äÎ?ú¸Jð¢Vaá` ¹Z--·ÿùGx“Œrg‚/ú-®ö2T62íãÿpÅ®¬endstream endobj 754 0 obj 4842 endobj 762 0 obj <> stream xœí[IoǾ¿ŸÓCÃDìô¾ÄÐA‰²:6`›9ɆA“E…‹üHmÿ>ÕËtWÍB>ò  tP³XÝS]õÕ×ÕSÃ_Öœ‰5ÿÊÿG«?~çÕúôz•Äk±þªŽþ»úe%ʼ¨¯ÿ|gèµ,#Ö/W¢è{Ï‚ram}`ÁºõÁÅêE÷ýÞ><Ì+u÷q†JJ黿e±¶\ug{ûÊZ&½îþÅRxÃCw ÚÜ;/DèN¢œÁÒݦè»Ð}–‘΂øô¥÷Áªî2A¦l÷6 ¥+œÃP!µÿñà_qCoHrÅTˆÛ:8†-|•uÜÂÒ2¯Œë67ÉT̓“q`ž†Åu€‡ï+i˜ç¢{gÂS´ƒ'&XÆ%ó„ Žûî7Ñ&',×°_˜çW×6à*S”µ¶;Ž–£»¯¢†Ò‚+Ή+.„ÂÚØÀý¤›½QZûP´SlŽ›M›“¼ƒ TÞ{rT¿wxàæ¸Íæ¢=F·þõ`õíJüúý üÎ28´ç®/VÚ9ÍÀñ½ä|õýJCA9ã黿¯|LsÐÑÁäYUb¬¬Ò¬ÝYÀú)À ®™•fmbÞÀgÏJn|w•ÇŠÔ.üÉÏB¾b!ØîijfÀ-/‘Æ šÉüÉOüÉBò7H~…°pŽäÑøtFÿÉèð{M«³Æb'°@‹K• ¸ÔX)ÃYÐ8zqžö9æý̪EV/Zu&¤!Ó €OÈše 5Àµ áw-„ç3 ¸¢!1B1ç¿›‰ì¦©"1àyQ1Ý7aJñ;›Yüá–U"ÇWV§r+!•±›ã<ã—q³àÌ(•ÝürÆ·›ºû³82À“vœm `eÔLÎË-RŒÀž£_‡õT¬Ó2Ç}®I¢ò©¼™ÕdÕ¥ogºü¤ö‚&Q¾³LRí°ÝÌlil˜òð¤[°ž¡GðjHWPï‚t˜ÄøB'¡‚+C_  }1fŽ4þñaúIçéõ}1ÞÕíÅÛs¤ô%^õ‡¹âí—{¦½»>ùŽ¶Æ¤u?Œ ˆ8ÍîÈXÁ² R2§ cõ¾ÃGlr¾‚ãËŸÍ”Xÿ“T±;­ºÝK\»c~›` [Ù£‰§=øÜìaAÐdl" Ü%Oš687«]¼à°tl@ (wlzÉv@ æ¶f¡r@…¢0ÓAê†I!L¡d!´´1¸Ò&âå0 ­Q±²ŽÝ-(M]êæ•¦!^íIu¬5ÝûÖd;k¿¿DO8ÍOpÒãuß"N¡Wº@!Ë‹NêñÝÄU4³Üâç\çµ¥ìç%ÝM^O‡ ã©[kŽ÷åkV)Ks ò#ÔãÃý>¬ÿ$.ĢɎ_!4³tQ/³±Î*²‡ë±‡’ü4«ÃûxF[xØü¹ÉžP& ´§ŠûàËÁ[ÎåIyA>Œ)£à@’pq(Û~:AÂu°“Í¢ç%î$¼4N^4o¤ì5õPO8ÌÊh#Ñ®ýÞ°}¨m4D=Û—¹@hËa¿×'$Æû*^ÃÒ­a è× §¹…-!mcß]@ži¨¥­­ž¸H­w¯M^O¨`½„]Wé¦ ÏšÂ‡*m ] $G•² ŽHD€ËLDV˜ã‚‘õTrpß3iMÆmèßLO™|Ô¤Èú«¦€6ò±J«õ’߉¬—‚Ï©]̇%€Ì$5ÿ¢™„Ì5o¥òp`’:¾lAÖ1¹“qÊÀÝ„Ú&›AÏÛ5ÛŽ†ïÍÒ9db$±f@A*¾ùÐvŽ‚cE‚†PÅß+€PHi:ö”>P&D\MH¡¦/ZnLU‰X¯K¢•¶•')¹¦åÜQ´É Fö—Šü”üp«­Ã|5pò÷‹‘ӥ뾎çgö:‰vD<֥˴cbo-FéßQKj®­ÄÊ–Yî!~³‚/†/ºBò‰ûZ’«ñ-É¿lãùš¶¹Š¸¸¸ªwŸ \ÆÀ]Pïx!*þ”!þ?qCÆŽà[8‚Ï8â)“‡G¿`3^W“§;Æ„ï¬#Ñ8Ì\ÉöÇNÄst9Ÿ‡S ½"IgàúŽÓ3M ˤ§ôésºÝá$î '='äÉíöò <^Jïåsé"…, ØÉB‰0;¥y ÁÉÂ%E-ÀN8YáôyàTB6@“¶ÂNV¤¯c“lª½öb&À‹uhZM(_(<ñ{nNÈ)γˠI¥oâw‡Ó½ÏºÇÒiq8U €Ñ[ܵ8³„œâ4±9IÉÔ•Ó6hz<ê>?š*P¾Ä€œ8ˆ äç¹eÐÄ úr’gÝÿœ*PÀA“ˆGÈ)N“Ë“Š-¦Ç[ÝgSà —¤Ü$œvp‘Ghêç-‚& R[O÷>ë+§ÅñT‘2DÅ“p¹™N&-yÁÜ´ÈêE«¥ Z†)üJ»—,јJ1/EÆæ?è+ùèŽÜ˜ëKÇFØd}o»ú´E®,ÔjBèž]â$«pgIÿ5!®û¥¥\®ç”n :ÑLN}~´¹y#i+ýa³°~jÇ¥Ù*š)Ø<îÑà= ÆÔDk(2ÍÔÞ¢ÑÌîçþŽS<K—:ôñ²¨uëKÇŠ|ípÞÚeب_>¥HxÔvG}¶‰¯$âÚ¹_Œ Ýø÷íë©b@jÑ£Ffn†B’ º¡Î—½ƒ¼gYúéú§å@½`+<µûgl³Zð^ŠH2öÞŽîqKrÆT$ L9f(À®²”‹¹æ*‰î¨Á×/4RãfëiÞ™ì¿tŸ8¨h£ÌWXÐ:vÌWXpú>}VälȦBðÄm]kP '^ ßy”¦¸K9ŽN,Lü <9|”´tB;,ôO>Mþ9>Xjç-Ÿ!ErÛ§Ó'‡tñ{+µ†¥µwåäÍ5mXÍùvõ??‘SÕendstream endobj 763 0 obj 2947 endobj 767 0 obj <> stream xœí\I\·¾÷OÈ©OAO¬¦¸/‰%À‰q Øò9È‚ if¤Õ£ñ,²„üù—Gùøz™y2r0|E‹µ|µ|­_–”°%õÿ¥?ßlŸY±|{½ÓK¶ü6~^ü²`é/4‘/ÿzìWÈ%cÄ)Å–Çg –è™Äh³ÔÖoÏW?­a3#5«ÏG0Ì0»úš>?Z ­ ·rõo?Í™UÔ­®šZcs«S?O£JÈÕ•§7V~¸p£aösëp¹ðC˜zu[†ˆà= …b\ÚÇÿôúh¬§‚çµ:> ¾óÄÒqêYpM¬Pfuu$•Ôîé$·V:Ø|-¸"–²Õ7~%ì" ìH€ â1ã µ«?x™ ÓT‚º°ÎkÅaÏ[ ÎU"VšËÕ‰§ÐD)¹úÖS€VÔxÛxÎŽ2&0ë( ÐÖÚÕ: P^%¡¤´®æ^Æ}´UQ÷`¨AwºŸ”uXT¤£7ëß?,@Á.]6 ØŒ»Ü,ç‚0•gÞ/~œÄ›S[ñ¦±&áí2¨Ê˜äÞùëì€`x+a‹Q¹`DÂ0‘ hz‡ØœF+Øê­÷—TT™€¡„Ôeö5Úò&ÔT~ÃLA¬¯¢ Ò9^‘àñuJi¼ýY܇Ã>gÁÏ`6ð ŠMñKbQIf¸‰Û8e±:H‡“¸%3• 5(Kg±ó›JÚ¨%SiÁ„Z¬þg•sXË[¤AÚ2 ü ó>÷[r  Â _yì êÕnHäh-!)pËVÿ9²Ì‡ ²q«Õ¯!Œ…–:re0J‰ ÿ_ô }(° Ëÿô­‘ÖL ؈’^ø5V×üÁL)Ä\œ0Ý7 òb°îÓeÆMmµ0+e/ˆ‚ªÈ.×<µ&Ìò*^°o¢Ø rÿz±_kÄ–º‘þ⬒l“'q/m'…?Pº&¥A†;©V’«h$nÕ”‡ÞUÙªÐà«~.QF¨ 5"¬²É9Á²ÀÊ'i†EùÙ“ø(Ç^ˆ@øŒ3·ôõšké“«à@;ÿM¨Ø¢-0LÓ2<ÍÜò%8d|i¥‚š³ÔÂA~—ñ¥5P™g¶eüFª!å ¨"‘‚Ç”ÿ¶'N,nqHÊð² C7"9T‘hˆºÈ@~FØ’ÃÅ`´Êgƒ%Ä,qŒ§`<.Õ¼­ ê©Ú…Y åu(`©kÈq'…ö@Ž2¤g®y'&8álÍ…£bvysˆ Ä\yðÓÛB‡+FÚ¥|ŒÑK´´S¾·ÕŠ-:@[Åm['A3hßöqë’4”PF;Û$Ÿ•1ï÷´ºÖ¸Ò&Ô¦ÀÓj@ÞU«b¬(ŸŽré”HлUñg{©ˆ}ƒ$ºFªDà'áÖ!Tx±1,Ä(t„ØRU•ê¡W5ª€‡ïEÿ…ºlD«¤¦ÆN58¿£šŠ©‰¡w'šÛ\jJêg*Wg¡|µãNB¦n÷¬Z(PŽF[]e{Ï–ÇuSi2—ýB$mß÷än¡Ff‹ Ýn¶!õ‚(( õ7 Âl‰–"ÕdD@³&2¼¾RmѬ…}”.À^3…Ü÷4À^ŸüQŽL8ñï«ZÜåS<¤ £¦b÷"(C“å;ÊB¹ð§SGÕDJŸªéðÉ­˜@`·›`!Éævbª¯Ó6FsÞäB ÊæÙó2ü”‡¹É€'t,•c–Pžµà<)ó̺ oÁS¢©ŽÝÅYWæ7Eæ›2û¡ ‘&Ÿ;âkØJi,¾S9s/ñµ"ÚéZü¾É¯‹ø×é …ö Kçàøcïg\H‰,Št¼ˆô¤ I‘5 eØí× tA>nü9'„¬aéÙÓ|/¡ ¨! ѽÄ0ãU*G€HÁÙOx¢aBƒІzåÉ8"Ê3ˆjX(5ó­ð¦eíiÊMÜ&ëþ—ÀQ«háÁjЋŒÎó2 ­¸$’æ̶ág¯Êpžaöe¶qƒý‰øî7‘oä°У!ZÖGÚË]2œ§]æÍçLbõÓªL·RF—eöë2¼ìjtÞl9|Ý%¸èZõAC9ôi‡"Ìñ§ò!ˆ”àCG>t¼-Ã×eø¾ ÑyìqþÑÛÌBûÊ’Âì«2¼)ë2ãÝ’¼ì®ò² y÷€Töq  â9ÔË„U꾽̭ …vj~ °€Ð/¿-Ø@èË{ dWÐPU;ä/uNþâÞ·p $lË¿ø8àÿ8àà /ï=p0¸#ûxp»°2¨‹H‹ª “iΘ÷ê .",²3uRP¡™ OOqånèБ«>aOd_®Óâ;HÌ,ãIÌ€§§Ý-XÙâQWÞÈ;Rˆ6xÊožxÊ>®aëž…IM îYü*¡g³„+ó€Àv¡ŸÜ>ÿ¦@`»€ÐOBë®B‡!û¸‚†¨[NÊýS BZU¥–LÔòFœ„£à}ܳøU|¦žE8I„œ­gy2x9CL¼¼.®Gç |[Ø|4üSa1Ž<\OóXÃwD˺ËÒ©vïºTüYÁ€Wý‰0ÖV|V¡'ÓTœMUà„Ö–HTàÒ¢y°c( Ó?Üö/ƒ®Ëìi¢+:Üö9¼Mç\j1fÑ;BÜûT:Õæ ›·ërÿ_Ý('¨Wï[ïšXðÙ“§“}›Ï>t^GH1-dNxïº.Ê']ª+ûÜù¥ÈÛr¯}V†è.g Ô3úÌb„*iýߦ‚¬²5Ô3QÅZUµWHî|Þ´¬ç;$fÅÍž—œˆ¡g”_Û¡çeVL7¾;êS±Ck>l,ÿݤEõ)¬’3]‰.3Û•HŸz`­ ˉâNg‡bʨ².ÌÌ?Ý¢ÂV¹¹ 3çðçÖÂ<2@Ž{aöE>*Õ]nÚUŒˆ©Ku”&û–ïŸÚÐÆå#ÃQ÷µË5Ùꕳ\]>)”&ƒëgZ5kõF×|_LX½(åTpYFÖDñßâ8eãtìÏÓèñ½ÁŽ@Ñzáà&%°µ;²2w†› ¿j¦C/wÖ Ð¦Û;fÓ*b^a·¨;NÊlÿ…õ°í“øèƒ˜—­Ý1FoíýrÞ¾m{ÛFPbÝÙËnq8ÖvÔ«£ }UmçV0ÿ=ʦ¯»„BT±æ5'Ã8¡¨KV̓Zpr³Ðwæ}”f)|Å:­Q± •ãD¡Þ!¬b3õ\s(½[{‡‘.|ý;0â¯Ú"9¾)Ø¿Hö½tÇ"ùU«Å–3ï^á—½Y€U½—FŠz°JÏÔëpå±!¿@AE–Ÿ¡ bnÔbÀÊîºj[¸P‚HÔ¶ «æ±²€C€¦qÇ’ŠZÎßKêL}ˆRR·¡mWLg µøÃhãB‹Ú·°ª¾¡,4ë:70&‰ÀµÙ/rsõþ—l¶Ç»ç©¨Ù:•M]Õ”0ç fpS’VÍcBÿŒÞÚ”Œ 0SEí×­ûWÔ¾—vVÔ§…C{™;òîÅ›-°Ë­Q„£&*¬²35QÌÁ¾Ã×ä³VTdù**æv`E-¬ìn«ÜÄŒR "²²_%fê[˜qÐ'ɹ**êe¯¨c0‰îì!uÚvÅtR…?QõoL Mê߆U¸¤¢–7椘& Õæ°ªa”i*Ö5ÐÐךMËxüKÿã·íèM·Ü oQî¹mžˆÒ …ÙöäßCæø¶8¿‡Ì÷«¬1š²[ZgbßùŸHÔÀ*Chýk!B¼3Õ°)C®5~•š«Ö0µMÏÕ¡}Óí?PW‚Jûˆà.Z±NeÔdžá_j)fbé·QŒJç¿J.¿fÿ7[lã¿ì°ŽH;\{ú%ýüö†Y¥ÿÃB¦endstream endobj 768 0 obj 3390 endobj 772 0 obj <> stream xœí[Ks·¾oåä´¹¤†NÂû?ª9IÅ.Ub‹ÉÅáAÒ’’.)“¢l•Ëÿ= èÆ —»Ü‘R©bé Ûݺ¿~a –œ‰%òß/6‹Gßyµ|y½HÓK±ü¦Œþ³øa!ò?x&_þñ8rè¥,#–Çg ‘é½gA¹°´>°`Ýòx³ø¾{z´‚Åœ±Rwï`¨¤”¾ûs?­-WÝ룕²–I¯»Äi)¼á¡»jî"t§qžÁÒÝU¦w¡{’ÄHgaúÐKïƒUÝEœ²ÝMJ- &8‡¡2Bjrüu<Å’\1ⱎ×p„'‘XÉ-ˆ–ye\wõ6mUóàd<lOƒp`ñ•’†y.º/#'¬¢¬˜H@ŒKÛ.8î»_Ç=9a¹†óŸc\IX&Ê6 *“‰µ¶[G ËŒÑÝ7‘BiÁ•åDÉ ¡05Þà*‘Ã!İ)­}ÈÔÉ6뺧«ÓþA©þìIQÃÙaÁ«uåÃ[EgŒjýÓñâÛ…,øå Ð;ëÁ¡-(w¹Yhç4Å3ç‹§ FâOßýeáƒ`šá2Ònꌕ’i—¸*to¬aA)­Æˆ Õy®˜w°_&z 6þ> ƒõ²ãuöd‚Ï+Á¿º:íë4«³ª&‚Ñì= Ê8ÔR B=­ÃU«ˆÊ–OTE|R§¿ªÃO˰`§À æ×eÁ @Cyð_Áù‚™,…°Eì= $ÂVÛÎÞ“ààaoi´õÿX |2 4 O0§0X2ß,`‘ñ7}XäX>X Zø°@Ú„òƒ%òy9X„g\Èm`™÷MC`¹'X |2 4¸ÔÌ –ȧæÁ ·±>+{e¡‡’åžX)( èQ*&p½†Jf›+&@YÂAXyHB+-zXœ7Ìà^(ñ‰yz!ã%dk/4…‡$ô‘ÁR`@à#h/d¬…D{¡Ägçé…Œƒ}ú­½Ð`yè…>X |,테іiÜ |³€Åx&ÕÖ^èN°ì•†J–{‚¥À …‹––Ü %>ÓÁ…³P醖ÊFq×_ "éŽ *$Htë„wh›‘ÜYà+%S6WQ*­ŒWRº{]g/ªÊ¯ëìi^U‚·ƒBpÞB ÍnZa‰à¢ÎÂ$¡}†W+A{x]‡? Û±xöbRÂe¦¶{Y ÐÖ/+íó:û Ó–Õ6“;ìwHh´x"âB©¬"ŸoX¨ˆtOÁ¨ƒöÌ‘ÄùÔ<‰WϴɉwvÃá¬|‡š9®ppÛ%VÔcõ(šX´—D!e |³(ÃC@á9±¼™=RÑU~6I@œ©ü¾Î޼ѦáQŽiq[HXO†„ äÝT_”Úƒ¨Þñþ‰Uùäö@j-Ä?ïb¢wb/IŸ†šzslÈwh+'“ÐÃi+™ b[”¸‰¨r:›´ò§ë&ú€[*ƒËëI ëIÜ ;¡±4î’ì´Å EÕÄDMÔ†9¦q 1°ÍcÃ!Ó…;Ý´%õ~îòï=ÜÑŽÜ%±µîÒ»ÀHœîRßÚ‹˜GNЉÏê/R< ˆ÷ÌBT›É_F…_"x1ivdÔuv)Ç®ÓúÀ—bw¸²Ù¾®SÔNÌeß‘JÄÄ¿™kã€NœÌ%Ï–Òv”åG¥"j*·øÖz²þFN²ÄàÙùr=«r;Áz“ìk§»œ¨X µ±“‚yRŒE>}h16Ä8€u¹û¥(fË®Ë~È94­cTБ:&ò…™ê˜ø®@¨Ý7]·CŽhzW~shÏÛA{Ž"âO ¤·o:p¶lzØN{ ºg-㧬MsŠ@š JE…çxûl?öfvS@0ÛÞ™)£™Õ¦?ÿ LyoMr±üˆì"=|àp¶ÿ)87×™ ßyÁ¬±ªý•ŽYnº ”WΦGh*ĵ¡§…ä^& mÐ& Í÷˜ ¦BDžg ˆ£JÄ\ÃzyáȆŸ­bGÁ¡¥è¥Á&ÞÅÖZõˆ±a#ú‡u H­$æ?í‰ìmŽw]7Ó?ÂlÂäàÞ2Ð+̃n‡ DLIxQ% vŸTäeø~œ„U|€¦äRiéûIÅç„N•™êöŒð "ÞMfCÎJ¯&÷²îþÕ]»U4• —Ð×®²o®RÓðÍÔ°·ÏÖ±àÜ`¯Ø À§¤’!$¨O*œ!ò ÉIR"9IJO““ U™AT…“Céêp!1ðÍ“”´x6?âyW’26 ê,ÖµKz2YÒ¢ë¬i‚}jÞ‘¤YÔŒ •[ ûö÷]Zga-7coêìM{Šš­Ë÷Ð-Ãõí´#¹çÓá!·ÛèCJ?þy‡©‚ª#†ž F@bÁЋ|ž ¸ážJòP![\Y&6ég©†¥‡ô¤ÃŽ·Ë§µIšª²‰¶‹Ù^Z׳•ÈFNHÆñUÀÀG”Y¨ZéD–ï5ø®>ñ‰yîê¥ ›‘6‡ûwEoz6­+´w (Î#%1i¦›I¹Oëìôu9 hè3"ò Í­Ôið…jeK¯¡ÄN·EÕ`ÄЂ~u€nTA!ƒÍù¬¢)TDº¥H*Hêgo–¦YªÔWô™¾E¦|^‡ä+aùŒˆ¬Š>£+Ñwôݽ³(¢U Q—Tªoüˆu¨A[ñ›²@[bnm=ý58….Š!¬¬È 惶„a\„ -9·¶Š"ˆþü"ˆ$òg>ìÖ•ª•Ndyg@IHVâó3U€PÁí=îûOfóIãüµ-àÚ+gTÀMWޤØ+·š/Ú=¤áy­£ÐpèG/OFɬ–m£¦×\ŸwàÝoÚ¬T…6†lráö"?«¸¥ð«›h¿qŒ:ÇV?£aŸá¢0¿S†«À$€ö4rg @Ã7ò)šá*‘®h†VY&p†øf¹¾ÐJž3‚ôHµèéÁöhQ7Ü”ËÐ:ÎD‰¾RªDDx# vcÑf${iˆ~ëû¢¿µaºõcÔÕ‘%x¿»+>¼”0 ®kózÖ «`ï ›JûUC0 +HØÔ)ì>Qe |Š9[£K5,N6ÀçŸé‹£ˆlT~mýÏ=ŒƒPƒÿÛúø YšW¡Š8Û|r—©o jS÷Ýd\$Þ¦Öµâ½>½Þ.ßêñÑ‹ñŠA…q, ò™Ck€ÁÄ"ÞtÙkbñmbq€‰‹ñˆÑ³ñ†ÿ|^8Ü; ®Cù~—m×µÓߣ$ÐÒ/A´öC[Ï”ï¼yÖÙr¤oÿ='Ïendstream endobj 773 0 obj 2847 endobj 777 0 obj <> stream xœí[[o\·~_äôiŸÚ³—áýR#iÓh’‰Õ¾ØA`Kò±$G+;Šþ÷Î<ä{ÎZ+­Ü!fˆ™á ùÍ7Ã#î/KÎÄ’ãùßã³Å?xµ|µYÄé¥X~SF?/~Yˆü?<‹/ÿt„z) ƈåÑË…ÈòB)æ¬[ZX€ÎO‡'«5,æ´åj¸^ÁP 'üðW2ýfµVÖ2éõð/œ–† Hsï¼a8Åyn7J—(ïh~­Hgaö9ˆKX9Ç!Ì);¼¯C"ð†Ê©ýGÇx,GrÅTÀ¨ŽN ‚ïPXÉÑ„´Ì+ã†Ë«è©æÁI ¼ÓÒ{`ñµ’†y.†¯PVÑVŒ"`ÆE÷„ Žûáwè“–kô0* Ë m£¤4YØX©‡”°Ì=|ƒw¸7h9p!5TÖ{?¬£¸‚àMvJkZÛEñò4­c½I±ÇcWûIÕ£®’q[ÿr´ø~! ~ùë°áXƶ°¹Ë³…‘R1aÊÌÛÅ“…†3á§þ†Z’á’Á• +%Ó.êTÜΡUаDDJ«¸ZÏN`]1ï2\ÿ!ê5ñië% ®Ì^M üVg¿Z<%é‡U@â¬fN‰áË<ärx6T‰Ïëð‡ZB°t·“Ãg«:fuøaÒÄe^ÕáVÉðPMÈéõ—a9ïrtp¼R“œ]™!‡7ž§òrš0jeŠ^jlg©Q’v™XÊZ¥"ÔÛ¦– G€Šˆ%Ôòò@ žqX8‚ž/†!¡ý¹Î^ö‡gŸÏœf¶`SR§Ù‹:|_ÏõÅ$¤ˆ…ç“Ø¹¬ˆÀunª…_ëì›Îßdáu––FñºsòEJPüèN1örÒõ‹*{¶ÇÂ)“„ô=­ÃË:¼ªÃ7u¸•ÈqvS†;Ò¦ ¯m†ßˆHîÙ@ ŠZê@å+nB車:^7èi?‡?æ}…zùejE¹X`uƒŽ'Áz1yŠ”¦f¸ÚãÕzÁtލ÷çi5&êlQ"ïÿcD×4¢ppÁI/E±d7Ðn,e¥ƒ€É(í!lIt[¿?˜Ä'Þú©h0}êˆöSJ/Š&ç 3¤c‹Zâ@›ñbr[h’ÝÞï&ù‰÷þchê#ÚMŸ:¢}ÑT€ÒàK4í¡±p=ä¤=ŒZ¶m«PcÛ6í!Ü,Ó¤=µKE¨·M-ihòi£–9P{ˆ¶¤Ïíá¦x«›êï$ä`_×YzÏè9&9äéûÁœ< Í1­å🛜qÙªf‡MÓ˸˦‹aÝà»Ò…L›¦¡ÖÉÜÉ×]!-ä¦ëúR[(jFýñ&q–Hä-…wÌ‘";ªÜ)N)à’î4p¯R6Ù³Ñt«|ÙC©'¤Ÿêðegl‹D®æñµE ?U ÓNn&‡DpÚדþî ²]wbŠñé›ùY51}ûÚ±«IíQo·Þh&ÆÙ‹:|Y‡êðtrö]ò ˆâY½YÆ/^ª7DTÖaæþ8~\†;2£à¾ÏšÈOÒžµüI $ü«¡m‰ÉñbòÀN'÷ç= Z‰¢ Þ7< ƒöÌÑ‚†Zʆïtðð¯ÝŸïä~|W£h‚WMÅÕ^°TCµrªÚCÂü@y·¤<úeïòHy÷}ºÐäp<@æ‘ä@-yÇ&²$‡ÓÌ@{ß”W£h‚—MÄÄ'ý]Ô:P‡§­d&Ü¢ÃS{2^ ¢‰½åv˜bšôx£ÒaÎÔpfÕCwkÂS„wO„Wpßg Mø ¤Ç‹Zæ@=žVB¼ÿ¯FÑoZ€ÝÂ^è¬ý0ŒWj'oÑãé=¯DÑOCB0O{<ÔÒ‡êñ¸ëz¼[Sž~ ¼{¢¼‚û&]tÓã©$S´ÇC­p¨ÿº.î¿Ç«Q4Á‡¦ÇSÞIøç¬ý Œ§ ˜x{‹ÏìÇx%ˆ>t¨3Š Òã%¥õxÊyøCwkÂ3„w?„WqßfKÓã)«³¤Ç‹Zwý˜_’B„‹ôý^‰¢ ¾ýž¯ŒˆOÖÎúØòG e4 !÷xÿ-Œ·ÃçâNõY æ‰Ï¨%îØ¬ ãwv©´Â'€{ø\Üi¢m •Î0NjhÔ²wýc›vP <Œ{µ‡ÏÅ& ÛCa #ŸxG¥»¹¬°Ë¿-‰=<éCh†‚i$ñ8*…æo£U¨5] ¾ò)Å }å9ÎÜ,ú`v½/–.0;RÀ?\¥6<þŸkË…ŠL,…ÓÞÇúÆ çJêa|ÛjÕ(í¸Òø _ÅkäwÂÅ J Pœæš›¼ŽÕÖ¥¼p-ƒÙ¸d~“{±ZãËYœ>IŠñEðiz'8þUW:¦œ  æ’,ˆÜ•_ûægÂÚ»XK”°&W˜ª‡^x#‡oÉeÕ«éEˆÄ9ñ“H§XããìV8>\–ÍKä·U–NŸÅ7Â>x£SÙuŸãóbç¬ivzÜRáiˆ/Ó¬ fnÃNÈ Ñå/Ç+¦U*&}(m’¬öÍ!Ÿ§YéC,¤yí¯ëßBHÉ»ùm¹^ ÚÆ –×ã‚Г‚˜KËztQ|ëžôµÃµäj-çp¡€08 °Ná…š©Z.Hï:Óð±GÇ顺w…Î'å“Óm*ÏÇŽß.Ž>Jƒ¥{û‚äÐ{2~5‰<‚¥mke,3°½Ÿç[5)TN“&×îp8DƒÁ雥sÙ$Mü5qvœU®ÅrIâ6ú¨÷GOóôo•¨fN ·–D¼½C×ÉEíìÈq16’ìÙº %úøK‚Gø“ ¬Ú[ô™wðmÍ Ó”x —câ­MQ›%Ýí5 €žŠã^›Yd Пõèк­¡#éý¢˜ž«3t´ùøã0ÝüܾX­‹.©¨•7ÓP¦¹AJeÜ¡«ÖG«ò“zÆPvÛbDâEò›‹³=~AÚñ¦N7É“ìÑu4³^ÍW_T´èÂ6;EW§nÏ,ÃØDÅVÒ–1 ðç3×Éhª¥ú4)ñ :h¢¾Çûp® ƒìq^"Å_yHLêF›8¸™8c̵Öl5º¯hœîÒÅX½&yÏûx'¬[@Hà"F` ïsõV2gÌ×µ‹èÊrîÅ ‚˜%;›°–”Ú¬¦ç~e§`¿£G9ݖ4sˆIjä$A_w×ÉŸUFãï‰qJÐÔÌó¹ Rwegºxò™nhiìo9òOB+téÐÔg´Ö&ÞÍ“ í|Ö£-,—°rÆè?cOê¡õ=@§ŠXè(@jh›§ÜQ14>ž‰+¸H¸éµ]+Vq¨úsg@0ÕÕv\.1ãçÔuå÷ôƒGv0ц =íFË|þLÛ Aivp* xÓT¥DâŠq|–äjGÙšâ&٫⛂ä?Чù$šË|:>I ^jô4‰ÕãdÕv%29 E¯^ìZæJÆfCLnooÔݬr×¼j‰xþffE¼º‘í&»ö6 ˆù»i¬w¿5í6­q]!{PͨG”‹æzº>1¸£~¢WP2ž ;o”…FA\1×ËŽCAžë±)‹+)×rsÕ¤‘E„©®Þàóæ"Ž\\ðÃW4äí¯Ñ“×!ý½BæÐt^ÉW -žä‹©‚jUú†|~ [¯Qø(Gö]1n«žo¨¦wmöç¼ ÊŸ…⇞q?ôì÷y?jIèiðï=Þå[¢úÃë°Þ¼‹gß/þiÈÈendstream endobj 778 0 obj 2929 endobj 782 0 obj <> stream xœí\YÇ ~Ÿøäig`m¹î#’8€ Žloò†´—ÖÖÞYI«äχ¬ê®&û˜ÙmÉAb‚Ú‹Åï#‹U=£_–R¨¥Äÿš¿._|Íòl³Èâ¥Z~]Ÿ~^ü²PÍÿÈF}ù§Ca—J‰äœZž.T££H&¤¥I$–‡‹¬¾_ÀdÁymWÖðh´Öqõ¢ˆ­—fu¾>0Þ íêo(Ö*:™VЖ1D¥ÒêåÒ)éŒ]Ý4ú!­¾Éftð ~ ú:ÆäÍêAfüêm~ÔV9ªðSÚÆþäé‚´4Â$\Öá1,áT¶IK&´Ѹ°º¹Í®Z™‚Æ€{ŒÛ“íD”jõ%Ž„Yl€³ ˜ Ù=Rqõ{ô)(/-¬Æ!†iжƒP¹F9xïWǨá…svõ5j«¤ ´œ¤R†jS²:,BµNYS£±9î|º9)+HÆ”µç@µk‡ oŽ»qÔU²F ëW‡‹o ¸—ïwQÈa=wy±°!Xo%oßO.¹­„sFÄÐî #jtg\5ð'éÀ:ó¸Õ‰×K¦mD"@5n2Å€¨ð|2>ò¶¨ ,<)V”3«³NùÖКø÷ªñÏjOͽ)®¦èWŸÌ f5ÒJ„«ö“;˜3WÉìT|‘áŠ):«ÊM‚]"Ò@"ÇŒož€u¹¥Qùkâ úâ•¡Þnšð¤ô µYá]ük+ni‰bä®ÑQh]KÀýk$Ò›:øÄÖx5Jœø ù@Ya!—Šnjʸ …ÂŽ1Ӊƈ±ÂAàÉa $„6=‡;ã§¹R@Ò1é@»–žnzš@'eúä-Í:’x5‰E‹zp>Ž?’Õ˜( Fõr¼†ë¸ €[]¯ òZ©øŠè<%Piu—j\{J2¾E߯Ý,gs6%=U_ˆé>˜^Hï§W›i­`ƒ‘±¥õñ í¼OWvam¢žŒG>¯Qú¡§Q@Ÿ­kÉS«6:U¢ñ™'`%lM6ŒÕ¥A:ÞàH¨´:íNÍ[ SafÞ,¦˜)Ö>@©ôblÚõ8Uœâ4ê ÜЇpg4yvÏXñ9è}×z¼&Öy±,‘…ø¼_C†˜às/†B í×È>9 ÇûLï^B‹Ò§É¥NêZÒfgI„Þ¡ƒPkÝ$eÄ9ŒÞÔ"?¿2·ïm+¬T§’w¹‹42¤ÂêfîÌjgV“*C¬ Ù–6Qˆ>`5C«4 ôn„U9E&¶]"f-J•’Ç<1TÀ`Xò‘qÇÅ p}ù1$¬œØ÷Êdò ¡‰³| Òñjø–¹)Ám¯q¨ÊYñD*7•dš#ôU™ˆŸ£aèÖ©£W …„ñÞR‡~nÊñ–&r™þ¬6t……Êfºø2$J»"!’~¬]Æ%·þÔ\ëGo“ºjÎ|F ^+tµš7}Lq©”mgŠg‡Xñ\4ˆ×œ£ð ûã?©§Útš'ņÓzKåìøx»Ma u»½Š Ýj× mBL­ò=.S»ôwõÚ„èIÏHQ ¤4iD•ó=DÕ}ˆ#ÝÑ(qcÝÐô0@íÿ  P¤ð6.m9óÒ³Õs Ÿ÷Â\嘣{NË`í^Y<æmrO Õ¾˜OÙ},æ;úk¶%1Ù¤òjÿ°~§ 4zM‡X4$Ñ(µgäAäšÈŸ“R…V=«¢¢‰¼äTóÁÓbÛF»‰Z¤WØ:ÒØæa3e‚÷pòµ‰­Ú7¶ö“ƶ†G»Ç[ Uà‚ÇÚÍÄZ§àïôÈê}#«ö‹¬y\dKÌX ]³øÕÇ8kñ½ÆLœ5pÚ g'ÊôùD™¾$ò3"§5åO¤·ÇüÞ\œ¯É’CZŸ¯‰¾ÚA‡qi¬+ýÈ . !E‡y˶ýªÄlûq¤IÐ(RSyØLÄ‘Qèd?ŶÿnojžîéW|ÚÖÌÉBÍí:ùÅø–ÞR1ëß6Œ†sÊépÖ¬rÓ–"…Îçpäo0ƒ%J†¹þšûÕaV¡GŸV¿DÀ=°ñC}rc.ìÑøT*rsêÃDÍ¡Oá9k’‰›=äï£T•ÿuÈäA¹ºÙ³¼ÑìxAä_!pȃð;"þ‘y:Ìnõ© 6R€ŽÕ{R§çÁ($0Ùšö?’ÅœN`G7ñÍDš`Íùpƒ†ŽÎ˪ÊèQ‘g„‰½j ð3V pïñ;%fœ÷øFBßoÓpXš‰i‡áS´ø””–½¼Qù¯Þâ_ÿÖâ[ÂDFàÄ™¯c4"1æã¸y誓Æo¢¾Žtæƒ=èf‚Q#Û-¤ã¹¤5Ûw©ÇO;ùtl»¨±h÷B Yw´à×ð-Ì,± Q´×Æû®ñ¿¢CTôƒ5ÉŒÎF]p &5¸5àwIÙÇùyð£øé!ø?ìò: ?š¶¸çvî)\ déÒÜ…½&ÕêüåÓV²ÿ¿Ô“ý y¦m Mžu?Á!¿š!?t©Kúvñ¨}=’endstream endobj 783 0 obj 3489 endobj 787 0 obj <> stream xœµYÉn7½Ï'ä4ÇžÀjs_äàY l+¹$F K¶¬X›µY>äßóŠdw{ƒ'ðA4§X¬åUÕã̇­håVпò÷ðlóôEÐÛãëMÚÞÊíOýêýæÃF–ÿˆ"¾ýfŸN˜­”m´Vn÷ßnd‘—Z·Þù­ ±ø»¶ù½y¹ÛÃeÞ8¡›O;,µô24ß±í“Ýžv®UÁ4¿Ò¶’ÁŠØ\CZ¤ŒÍÚV «MsEò¾ÅÉŸ“åv ®BŒÐrNKìi×ÜK&pŠ¥¶R™ðjÿGòÇq”ЭŽäÕþ<ø™„MT‚T(×m}su“,5"zEÀ:£B0—ïieÛ dóŒNâãqcŸÌ“>zš/È&/0pçÈ+…kH·ÕJÙ"l2ÍI¸ÖZÓüDðJxŠ iŽBJÍUgµ !4{I\Ãy[Œ2&ÄZwðêM¾Ç›}Oê|×ðýh8ÇMe>RX¿Ýß<ßH@!l?n€ ß&l‡ànÏ6V)ÝJÛïœn^n r á §ßÓ©Øâ‰6ê6þDÎ ¸]Dk˜E«Çm.nÕmð­or\•°¡¹ßíYIˆVù~û$¯¥@$îX~cë¯ËQ›K¶ý';ú¶Êà°nÙú&ÿGÃ>8aë?vLêKöÁÑ»%­wÿ‡©-™Úý'}òÕ°î¡Ó£H‘¨rƒ~‡á ƒ†¶¢†a…N™ðß`V«Xy¶€•¿HÄ´V¨ ,Q37,WLš'쀭ÏÙú˜ÉŸ®çh¢“ë¹™žMòÇSÛ¸=IfælN5ÇÀÑ‚3åóo¡Ñg½KI{‡´ðÖð6‚Ö††ûß@CtºÒF8~Ÿ–aÚ?Ÿh’{¶ÿŠ@£Ðk Çϳ©ömŒ`Ó>:]À„Sèð,‚tÊ~fq9‰Âq['EkµÎü{ˆÔŠÍ½9•¶ÊºÒ·–gNÉÏ̺A#pÊ8Jx„̓9•²Š³ Á·^6§S.ûÕkê…*Ý®÷> \HÙãm¸ÝÎÃüvêYÄAÈâÿþ@fÞ¥PHi”#@«ZƒmNUˆƒ¦Ç·Ï‰iÑzÄl@?¼÷©e 3€Iᬑ™ß+léJÒx‘Ù"­MŒDÔú;ï³URøæ]sÅNòë§Ê“B.r”5z×¼NT tŒ7퉠*›Jx„¶ØäŒóDÉ30¢Ê¦‹ÝéóÎ"SÊW°ºæãÌQ{¹×%îÖ-Þ]8]Nñ’‰ð€0Ss:¢ •îI8$h„½Q·LõM6Ð /UŒ6hÙªãÝçL´ÄVŒ²ÅWP`|—ôîÅ{hš‰Ëú/FYØ–@ì›*¬øãt†¨' üŽ„æbß•ésêU‘½K”·P) —¢IúWŸWd¸€Â‡š#å–as)ˆ^ÖEB›xC¬5™¥½ùwΡ'ã¢Þ9 NKºƒõ†ëà.s}óðø”QK¯¶¶Lö¼xëäºc„Õ\,™0£¹\83ö•¹ OŸvŒ9ö#sñr%Z‘é[±÷šgpdÌÓJÆ-½÷•34!ð0wFû.驨£C¼–dŠS$%¢ìž Ëó~ÙOR¥µIã+=Ï1Ïð¶…±®Û q¶4ÄF6vS   ©Äø,Sìl°â`d[¶x° ìº_Ë˹eV=M ÊU÷Àɬ·Ä¼ÝÀ߈l~“Ê]‹ˆFN¥¢)µ{ty.´8Vû笀óEJ.MÁC9(1™zDiúÌ lgç*³”"uŽÛÿ¶xhVKÇ0† ‚;¢ ’MÀ‹ÞòGtŠ!¹SÎ#35U ünÁþêL Þ#.4†¢»eÍŸE=ÒYÛ¼d«²…2ÙKÓrVË™‘šÒ6š™d…ë¡4t“ª+žOiŽŠ ,”^úri©×OiY×7«ðK—²EeA$o}ÌŒÁ–Ûyq*@*dóÈÞôG™5\æ …C§ZÛE Ðj.ê‘¡0YÏòû”OðÝ5géýbˆNÊ0Ñxâõ=aƃôÍ]ÏmŒ Ýd«¥w#†I»bT×ÌÒ u*e¬[íš)¡Ä{Âäkl«ˆdéængñ E~x¡2I^> stream xœ½Z[sÝÆ ~?ãéo8TÑ{ÁÞúÒ™¶I§m®Ž<íŒãG²e7²¤ø(IÓüù»KXrÔ4îøÁX\?`õÝ^z¯è_ýÿüíîñ“h÷—‡]~½×û¿ÍOßî¾Ûéúƒªäû?œÑ°70†ôþìÕNWúÇdCÚ;oFcðWowφ?žœ¢0Ÿ@›áõ >Z¢^ÐkeµÓ†Ûò’îðQ±Î¤áeþÔ€K~xwrj½}°CÊŸFÊÅçgÝy=Ìþì“ÝÙoŸ Oó¯]r1¹á@œµ Þ oò{o”Ói¸^$^ÎQ»*\G¯€ëú²R@¾" ÞØ8ü”Ÿµ÷1 ³÷o yˆ_[5:cýpCOÈÚàIHH2üð¶‚°ÒM9ŸóI¢ ;ykªTJQžæªü`‘n¶šW¸,²Ôã'Éíµ“sÙq(Ú¸'Ë}œ¿´1z7ü…Dy°É ÿø4¿Ð'eQ€<Ãð»“S}î‡3$7AÃ!…ÕŒG-ñµŽN%ôÛ1¦4œŸ˜€üå ¢§\ÀSæ×  G²h¯4¹!F¡?)H´;qÉäŒK•§ñí5£¸Y(î …UføÃ •âRøóu‘ˆg¾günë—†‹mEê ¡)9Ë…á«úÐ;«¹~ùŒ€¡ì'ÄÔó*PŽ|‰fç‡äb~¬NRy I2;ïS–9Ë¿k¹8ŒHÔñú„BÌZÌ} XÎ.0ûŸò˜ú„ž ¨ÌpšÕµެ?Ÿˆ{°±ÖDCbN'9§F@}‹¸¯jDaÂh6~LÁ{L®ù|ã|&â‚6;Å b£±ðÐD#ƒwæzæO¯)ý-X’Hœ7Dí125¾ŽzÔκƫ³ùÞZ…YËtdÄ%ûcŒÖNi‘­Ä\sµ<6 B¬#–Ο«FJdÙ7,^¸zAòÃr\&}ç«/Šx;/KäÎÉÖ šë)ëF¶Æï‹…à V†˜#6ò¤Íú몎†Éº)’³°ê¢J+8µ)×b55V\§KL`;"‘9샽 Sؿގh¦^ âú• âób<‡¸'òÙŽÄ‚SÊÈ¥ÐÙÑG €ü˜f··T‘•Â^Ç*!“Í3qç•ïRûj¾,Î?œË˜œ½ÃØðÀ¾Û&‘þ#¡„q^•·6ð>bVºÞδø¥ÁŸdáï$˜žbm¥ 1ÆQ>†TÑÊŠÞÀƒ»g.‰7öí¿‰ˆ±*`pê)˜ŒÒ•ÀƒUŒ3aœ›jV/›Øo¸øaÞð\á]”GæBÕ8炳5®¸â˜|niÙ€3=çü@´+?âW/¶äž„Ð.Dz&¾Æ%q”ZnvÃ\¶ê%ŸW¾ÖÇ­ª´â@ø6 ÀzÍ»I…[6aÍût"ÑSÊ´È©+ßž cOþëËåQä(ñD{Nû…,Öh-°Ïáeyo­=†P2 À=6­À¥P»ž®+”S“ŽçÎÃzR>¡‚GŠ ì#ù%Z»ßªˆ@£6¿bIT«ƒ ±úm¯‡t«INa𢔛R¸dNòi]# »k&e±^ɭʪôg GµRêÈi9ÎXªÑ™Æf M Îo±r0ï‰ nÑGÀ9G1ÄÑÅõvõ”È¿T£÷ú×+Þ¤ŠµIRw¢«œyÌ·9‡¶Búnæðf–ã ÈÌüº0 îx*" tëèh0û 2Ñæ·B R«ñL3îá:—¡Sd‰âÉ&ƨSwX²\-¹u|,(úHDõ´ä0„œÂÑ¡È8<5û£³Ý—;Zb¨ý“?ׇw—݈œ£§ˆ&óڸLjD”ˆ^ÎãEZV‘ߺt„Z¬>­ÐçåœÆ¸áë9åéõötγ­-”Ñ=h’YR¤Îv>9{o‘± &‘¦ÈD >r8ÊÃ!‘cáüõ ËÅñäԣѢAÏ“ˆgn‚Õ²  eÑ@°Kˆj§„½÷èÔN'ó˜fQ?ç-À]ŽW¯ëêÁ6Â-)ÕÌž¶8^£7£k»¨ ätB{Õ+ÕÙ?1¯¢“nÇíi Âlœ(–6£Θ„^4ï'áp.ÇÞ$ f¾J8ý~‘j4Rès:g½kpÓœUÅTyDF~Á3áÄ™æO ËŠ+ÑåAìS hÄgëî3ÑŸµ´ ïÃü({D¸!-aÞ‡Í àȱgóC³’k×sÍ(Íóç®0Á`ݨU<¤V—‘­JÑåÙÔ|I$M¶¿öÛ.«‡i•)à7‚,gýEa:ˆ)¢*péÏæŽZVÃ8¦rËìeÎÌý÷9Öpš‰qs“Œ˜Ý.óæsÁ»´¢i¶›«GÛèëH|C QAXÜšèV>g·šcnǶ¨<ûîĵ™Êš±Â«{[ S/§S€ô=)ÒŒÊëOñ7/çÛ ¤©ÜuHò½CìªoR«TfŒÃß©™9Wî²å4t[# âvž%-ÂjÍ’6§â¥;R3µ]à]WÍØÌ?N1÷ýv÷cÀñP„ƒi²t©%V+W«ë œ7ë lCʼnݞ|V‘>Öý~gȨÛwך²ŸfÆþÓ/yniÍ×É“ƒ÷‚OYìÛkÇCag´nvÍKE^³ïŠ \šÅs=tºlob®Š„“Ìÿ0ÒýkñËãåúq™çP9s Ê|޳¹UÍk˜MW(uö)bä”?MÚt%²¬c‡+„ÑE8 `×-+Wh /Ù‡ò¡IÇÖ^"‰|³¤,›…>ÁbÜ~,¿Íb䦼V¦?'U ÿÿe2µ/kå29WÔÖOX:AÞáM`äŠy±ïrü²¥*j¦à®:Èõ0ïò7u+Œßòkº‡^ú4]Níæ¥l´¿z·òFÎonz¨ã¢ˆ2nÃuU3k'8ÃËÂäª}]Réx D¡Ï@Àhy;?]x·ýÞÐ)u3h¬¥B€šà—Ë\ ¤b•U éÍÆËoVøù‚ƒ Q Ž*Î×y´QÄç×?M¬‹í_<´åv÷«Ä}7çCN*²»ÖëWÝ\ÑK‡ÏürRL&2G·e½¥@ÄðvÚ ê~ÓsÍË÷…EŒóË£‚ôôº÷—GG­ú×%™‡qÏ!Cн­ng3ÙŸfMòÖ¨Äõ¡CÝnNIY§«Ûdžª;Ÿ˜÷ÂHi <ót¢åAßvÖÞ…:¨”J0Ä|7Ë[ÀÍ6¿£b¶Ú²N[({§˱B—´´ñ÷Fù¾ØÓ+Lç^¢»ÍÆEˆýëòÎñ`mÌ>#<²÷“Ow%öA\£âhˆÅJzȦ‹Øö§ 1½K±˜Ÿ­îÔòèæÇy£ôåî?ûœxendstream endobj 793 0 obj 2636 endobj 800 0 obj <> stream xœÍ[[o\·~_ôôi‘¾Ëû%@Ü86ÚT@œl€nP¬µ’%X+ÛZÉŽÿ}‡‡<äðhV»’Œ ¡©™!ùÍ7C÷ðÜ31çñ¿üÿãõìï¿x5³™õÝs1ÿ©´ÞÎ>ÌDþÏâó,¢†ž Á‚1b¾8‰,/”bκ¹õøÿb={Õýzpƒ9m¹ê>@S '|÷uŸ*k™ôºû-vKá ݤ¹w^ˆÐÄ~n7JwWQÞ1Ð<ê­Hg¡w âÒ‡V.cú”ínj \@S!µÿ}ñ¯¸‹×#¹b*ÄU-V°‚£(¬ƒäÑ„´Ì+㺫ë~¦š'ã`vZz¯ ~¨¤až‹îiÔ„Q´ƒ{0ãúé ÷Ý_㜜°\ÃrA/®JÂ0ѶQRš,l¬ÔÝ*JXfŒî~а*î"6ÑràB(l:MPYï}wØ‹+X¼É“ÒÚ‡ÖvQ¼:IãXoÒÚ{ †µ+Xûªêá©¢5FX\Ì^ÎPÁÏ?Í€ŽõÜÐÀ¯gFJÅ„)=³_ïä›^CòÍ(æ]æ[ˆhÈiÓ±ˆ®’¹N Á9Óº{Ù“Æ{+tO@_‘è]ˆÿ8‚e½íÿà$xÕD/Mð;ؼ>8©Æ 7‘¥;±+Ì.åaNÐú÷lñí«nqà3øû.¡®­îÞôócfUâáãÐCo»“DÝÃÉæÀõ #nzw ¡¥ÅŽ£a­KŠDÅ_’lOÒ«p`Ýæ:ÍGðfë„RðF‹î}Òå:.;é:KÁŒÜlö»º°Ëd^z‡{OS¯ ®ûTCã ÍqY…ó ½5)Ëd‰ç‘¨ÁÁ2Èè@(® Õ´jcgó${À‡äÿÜßNº,8¯ËFv­P?6y•gèE ÇŒÏGV6iºâ»¿Ÿ®ávœÈ.e4ãÜ ¹ê»b­D üÝ@¦ùåE‰D”¶¡Hzb$‚T`Qr!Dݺv@ÐÙË€ž€ì‹„jO•õŒ l)iE™º÷lËRèb‡Ñ–=7ž BʧHó(Wµù®6Ã×€“ë÷˜Ü‹ÔŽ£€e%þµÒ|OÚE£]g Útß–Þâ’â‹‚WgŒ)FÐ*ÉŒEF-Ѻ¢È4¦EcGØf$²“•&ñäâ!ÿ-‚ Y$ë³ Í 9ÂùËö0‚k±ÚilMö^bŸ”æfŸ˜Æàb,•…ôí–QKˆi°Ôq«1 LšrŠÏµù†”½Ìœ„Äø}ŽºoH€NÈ^Dðemž‘j«]Qˆ<óÍ>î(H7-µeܱ0µ£–ˆÚñLäDrÇÏuörH'*ášÿ|·Ïwÿ㔌ÿoGÁ ;di¾ `O4ª?©OÂÀÆ.œ@,lôÍò`&'7ܰm`òÀá\…˜µ&a‚€ýRÚÄ„E>'™°Øå¦ ÖÕ×e³?ø}™Pœ<æb‚†ƒ7œt¢€ð¾Y…ÛYj°ä¡š1¡Z´¦à”öšåc윧»èµ+§õ+Ò‡7·áVxÇ^Á>€rŽÑÈQËúi|à$ÓN%ÜT írA„|°$â9‰ Âꘄí|Wðà`n¶¤ûREµqF†u@ÚhÏÐñsPšyãY>!ÿqò'±0nv¸$Çøc´µè‹²u ˜nm˜r:Á}DÂý5 l¶Î{BXàiA †ÒÁÆ‚jÎA«IýEhl[ZFàÖi73„gÒ™GÈü´}ÚD9ž>æ# «‘Ÿ“s8Û5ßU=6Ð9àœÄìt fTBÙÔe®IHèÒ( ïÇþ؇ȅY !ÛƒçPz ²fPš„~\³aÏ[‘œæ¬ Ô#BM&ˆ£c¢gFátô¤¸È^ºÈBJÅ7£/¸3{®h4Æ\ŽwÅáÁ0ïmAm 6†Öòø ‚6j¹/­žh­fÜÛ[Ð~œÚqîø ÐÔ°]SŽ*mû|»n°–S±Ö@A¬d‚ÁEßçÝÐ÷„ÚlˆÎæW´P^®7ám@ÝÊñ<´´¸§ ÂcdËp%¨–´ðѰ mcK"(æPEÚkÉi*R%ÓJÝ:¢{;ú†¾'jÎì%&#š»Ür†{O m·Ùß ‘–£ÞåËå{\RìáùâŠÆƒ²)c‡Z¥¥IÜÅ šËØ%YW!ÏÑW¨ùš”E`¿­ÍçûØÄ'=Ɔô8ýkÙT塳Ú÷ìP’ÙöŒòj{ZOçR4‡ß±Àœè0&¢Œ R2‡jñ¤ô…µ¸TšÁ `Ý2¥r1~LD×t)xLöîqCw( œy‚Úüу!®ðµ 7µºt>~áQ1´¦Á؃-naLÿªˆšÿÛu^x`5}Ñ Ÿ*½ù¯Pt!îµÇVoŒ]j`]šôZí[eÓÍ+°€ ²“•¦HÙÒ6|9€6Ø$x;O>ôåÀp%ãânTÆþ¡îµt  ó'µ £ÕèOÎIžÔÁ·>)Ý>ø«ˆ=˜Uœ=¦f„ò<~f°n(¢¦ùÙ]Æz^Ùa§RÁh·¸Fvxÿ“¦~ƒVsN@@ì—!Š‹Ϫ¦„—RGB!?f­&E¡±mlIÀÑË¡Šµ×RÓüÞ+…S¬½•$žîJ«ôO´¯·¸«$‰ò7¤…wäͦSäh’ŸÉ©ÓûÚº^.ßjô&ù¦&ªŸÉŸ‘«@kÛuí} 3B©¦*Ái&Q7hMB.˜òþ_§­Š õ À#~¾VуŽ!öÊ3‡*î^KMóë¹€3CÐù×óK²ðuy|Ÿ5•é6«TÍÉD8®˜D…Á 5Éšâp!×þôí(ðÎ*mТ#ѾòE•)Ší×äÀxg ¾å zSÅÜg©ý‚½`¬c(õ÷JjšŠ>^¬y+ú§$±è²ùÁ»À®Ý÷ñŽ!Ãâ§>&ìÃ;ìÑ|„4x—DçÜÖæjU–èK§ïÈo?éϦè‹Ì“šÅÒOñ7¹[ /v¾ã;oï_>ˆ ÓÈÒEé> stream xœíZK“žO(ÂwŸ&|êÁL»Y/"|,`#.؇Ѿd³³+Íì"-¿ž¯ÝÕÓ½ZB2J¹YYY_}•êy¹­\Šø_ùÿÉnñ—§^//‹$^Êå“~ôÃâåB–ˆ¢¾ühgÐRÊ6#—›ó…,úÞ·A»°´>´Áºåf·ø¾ùfµÆbÎXEÍÝ C­”òÍ'YLVèæß«µ¶¶Užšo£XIoDhÐÞy)CsåÂHa45û¢ïBóe2£œ…x }å}°º¹ŠCÈ´mnÓP‘4\áCm¤"ÿ¯ÍçqC–oH Ýê·µ9žŒÊ”°0¡lëµqÍþ&¹J"8w÷Æ)`ñµV¦õB6Æ™X…VL*0ã’{Ò'|óÇè““Vö‹y®Za™hÛ*S”µ¶9¶5†š'QC“Úœh9)5׿®“:6!;§ˆ|(ÚélNŸögyAë¼÷T·w,¸?æqWÙ#¬7‹¯\ðËW àÞfr¸ËÝ‚œ£Àw’ËÅ7³„ æ^ÂÝzW÷qBTIøŸ“ož@¢8ÖBÁkß\G 2§ølµ6Ô%›ÿ$T`IVxž°ñM6²el%9Þ=OØJIÊfŠeÓE3AžÔ»‘÷À±y‘'zô*iùBõ¢¼!9:g† 6T®V…ξ‚˨VCTè|›©£îÏ9£Ñ “03æú×L¾gãÝ “½©Ϙ–Ž»xÓ®Ö¤¨ÕÖ7›á.3rb¿ÈvÌø*E¡Sº»eÍaÞ#vQxùXUàƒÊEv%öòÛl½AuÛxŠæ—“ïh.Ͱ¹?Í„£Ó²Ï0_“õËì²®6~T8ððÛ#x )Ⱥ})Alæf÷áéexœi‡òrX÷yFÑ‚ÓåP0ÕõXÊgNNöÇÍe©vYs™™eÂLâÏi®˜­ë¯®€5×¡ŽŸk±6yÜþõÅQŒÍJÍ%ÀCINnH@¬|Jò‚êäÂL¼Îo/RÕ'ûAÝÓ{г|µÈO?íß5P´ëÖ+ö®ÑI⻆]/dƒ ¡ÕKH!<ú¤…™(¬ˆiõ¦ÕÏTäP8p[ˆ˜IexË›}ÁóS*AµZIlFD"Ê*¥çW&—HÈG­ÁÉýµ Ñ{}R4Dºkû´ü†ÉϘü1“_Îèìfä|­&ÿgÞ,ÎÙ¶L¾crîè%ß1}”&ÅA*¡*«\ϘÜΘ¿™” ÞN=¬$¾ÔÙ±NÞîª~}IœíÉÚÓ©§£Üˆ©°€ú–³+NB]óNæXýP~}7sæ'3g~Íäœßùõkñ«'OŸBžŽP:ßš*€ÅyòÝ0LÄrÒ<”b›ûáwŠýv(6§"1Ly”¹Œaiš5Uº´*ãE«KðÐBQdX‚ï$£ëýŸ0´1ñ»N¦ë|ißUB3½={BàO¦¼ÍŸøˆ qòW˹Narûüíå.n¥Œ¥'$‘ûòt ÂL<•—‚\„_7O]‘7ŽJ—ï|.×é—è/a¼Îˆí¡–èz§ÐÂÐ+ÛŸËŸ†Å>ŠéO3⸚ 8¥Í¨Ç‰þJ¸‰ò¸˜¾fì­@“}1M½í43o rŽnÅ s»Â6T˜{ç.§PQàúè2äùr|Ø GfúóÆÜg¡V,N6r9Šñ+5>ïîðÖðFxåßîÀÙ ñä×83í¹þú§éÿøUßîø× |Ÿï{^,>Äiù–¬a÷í骷¿ã—î‰vÚB9Ÿô”t|öiÓG¯0å Dõ²ÜŸ,ûŒYÜ Â¥a¸ø¸¨Ë÷Ô1 f’#çnòí®2êÐû[ϧ,«òz‹gቲ-ɯÞmþ_ËŽ8Æ_Áߜώ~²!„Vcjý·£ÎÑ7èâÅÜ'¶­šÔÕ‹h/¯Æ0F$©üºëåpãùÝbÛâoÇ3g;ýýû ?IF¦“T ÁäÏžú0¬{è$¿ügO õLSúº{9x&†¡;öìëÅϤC´endstream endobj 806 0 obj 2453 endobj 810 0 obj <> stream xœíZKs$G¾sç4a.=ÓÔûq𵽎À°-|Á!ôX Kò®FÚeùõdfUwguWI#† tP)•••Ϫ¬¯ëÍZôr-ð'ÿ>¹^ýêë ×¯v+"¯åú‹qôýêÍJæ?Df_¿8Âf-e­•ë£ó•ÌüRëÞ;¿v!ö~]¯þÔ}³ÙÂbÞ8¡»÷jéeè^2òåf«ëU0Ý‘¬d°"v;àÁ)cw†ta¥°Út·Èï{˜ù%IQÞõØUˆ¤ÜàhÚu÷Ó1\ÁP[©LøóÑoÐÇíQB÷:¢UG§`Á—Èl¢(B¹>hë»Û;ÒÔˆèÚ‚‰°øV+Û!»_ãLXÅxX‘X@Œ'õ¤^„îg¨“—N0æ¡U –AÙV+e3³uÊt§ÈázkM÷r€U£oPrRj.:)¨]¡Û»ãmVʘKÙãÄÛ³´Ž 6ÙNŽl×`ûé4«ÊlD·~v´új%!ÂúÝ rÃ÷”Æs××+«”î¥)W«ošùª&œ•½Z;«ûàsºýtL±Ùh‹‰£§†È~„Þ7V@¥^Ö˳Pz{÷8BBWž°2%¼É¯ÓÚ´ó5DÛt­/ŽSóL„î/ási̦ròyêó4Ó‡"Ùšx ‚¶ÑD) C 5¦²8èýmJ„ÎxUÁV©=ÚôRF9Üã~BT0 žúZì½=ü¥¨#ûZÖóÛþŽA÷Œ·ÄäÅĨx]^Dµ‡”uvŽü6S–ƒ ÓÅ«pœ&ãà’űŽJãð—wMf}ºÿ`¸„Åâò¶„ŽèVô}æv~Ñ»lx·ñtÁiëW1‚dó‰·Éfd-qä„«2ݨ20]IÛAIyÁÎŽc¶iî §¿dô{FçÍÌI£™á2+ׄa¯ž×fÐ}4zpb=¶5ëq³ôã¼£Æa¸[*K㊡‹Ã§b(ñá„ñp÷=ì‚XÄ*A…Ñýfk Bd ©‚/¸h˜¯õÕI˜ÌÃ`ÔˆR20 ê&â†{0œµˆ…Ö!¥„Íû€FÍ*o´r·ÄëBÐ .Æ,n¾#ãW– ‡´˜Ã†?¡“LBF¨ù>Ó@èÉÁºVКL£­€½šu7™ÀZ)è]boãÔKi8ë`ƒ*z©‰i¢L\ÃDt—4\Ìrá;nšÁäNêíÔ¢³ný¨Ñ­ó²²™½RIT=ÿÆf2vè4á-ûÇ_»^åj@ãÊÕ`±ëqÃöë³§hAv‚§¡iëOœ¥ôAB »¢Ž!…ôþÑr<ë²qXr”î gÅ7ÊÊì~Þ°÷Hxü͛ߦ<±á#W<‡nˆ¦€²’–…7Ï:Dx…‡åŠýùÓ3£7Æ…ûÿí±æ2o1m\hðà蜹O™¡'”ðëºð¨2‡p Šº‡[úC[Þ›Æç«Êö÷®1pE¸sä†àzãñCÄu탔‡ò±N?´ûý×D÷Ç·ûM‘+ã]Ö®—?c\ñÖ¦è|&¦B¶6Œ\¶7š5Zå0’“:ü+(’~.éÂy¤±”"ZôŸqÁR{*…’b Pf¶*h¾4Cž†ý®ñÁ²fhÒU÷Ž>&ƒ~¸8µò³€g&DÙÅìÃ8˜N±h8¯ ``†ZáT|«µnC«{UÜ`u¼gøúñ!¿Oq~vi~ó'Oß-Q2ҚÔ,?Vi ddCùTi—¨¸Û§¡r¦}#¼F—n“W¤~‰Y¡h _¥Œ ACÞövB5Ø‚ÆÛ©ôõ>Ï*o•û¿ÂÈ7ÉÅuϧ€9®ÛñïþE–Ô3néßWÊá–N'øÛŒ¬¤jˆ¦BµRÙÝx7$´„Ø`ZBzaŸEŽ·r–¸UeWyþD¸+ÏÀ=²ŽË|•+T)æ´*Dcñ¹çø¸jÿó3=È|ÂùÙBšè+û„41'A²[l d÷·éÉOSkþ6†A•3¼™ƒ¬= œÞ~I”gž)Ã,‘*ζ¤zU@êó'IÈ¡ÝPÇü½&eÍn-ü³gßþÁÏÇRìÅ ‡“ÁÁ¢ oÍ€Hä€eµØ_³y{}æU½uÑ&êGÓ®~Ó®¤ôôhj¨ kà$~ùà€ðA ÜÄ4R×0:£ç Y‡Á9$žYÎq^íô¢ž à/vªŠzŽ®œ>(Gˆ¸*Xø›¥ÖîÙ˜½GJŸ+ß®÷C·¦€yPÂP£øˆEgùPæÏÈTÈö¡¸œü=Ü@!®ü€~ʤqÔ Ÿ—)=¥Ÿ=ˆÏRµÄgs~boð“%œœ QLÃPœ…ä¯VÿtåJ endstream endobj 811 0 obj 2837 endobj 815 0 obj <> stream xœÍ[Ks·¾3®ü€œXÎe™'x?:8‰årlWÅ]9Ø®MÊ#Š”¸”då×çk3Ó˜–ËX®JùàØÝ_?}s(y(è¿òÿ³W~ôáÅö Ê羚—odù‡(ä‡9¡æPÊ!Z+O~>…>„!j]ˆCtþðäÕÁ÷›gGÇØÌ[§ÌæÃ>µR*lžäaã„Þ\kçÌæ;V2X7[P‹àƒ”qóœÆ…•Âj³¹-ô>n¾IË(ï0| zBtzsMŸÓnó6}*#-'¸Â§¶R™ðãÉßé@ŽH =èHÇ:9Ǿ!b•pXB¹!hë7·w‰U#¢Wt°g°¸‰ØüX+;!7ŸÑLìbÏ'ˆZç³'Agdž·çó<Î*;#‰õó“ƒo$°ß@îC‡qîá«ã½ øqäêàYpÑîœÕCðpŸæmØl_¤cKi”Ûܤ¤»„ãPs—¿€ðΘ ß²©wYîRËJÖ¿$\h^Ͱ½c«oóLIþœÄVå‚"V‘v§ù6ŸäqaáxBÛ“_äó{èé‡ cå5[&OuÆðÃâç缟AÊÊI~8*qµÙQ9“•N9 I+ÆM%ÄGÓ¦¬ ˜ª2ž~1ÃKù0ÈÀáUF^!ÊÁ3ä?@5xŒ˜D…™j€‹›©æ‘™jš)…‚ªÖ"@»D5{Õ®/ -hG5h%qi+e†ö«lôʺHø´éozó¸|ÂÿZ(Г¿>¯Ùø–ß±ñÓ=§ÉˆjñÉ¯Øøs6þ˜ù¬O×ôiü-ç4„¯ñ&íOú™tQé°èbÒð ²\ce^¥ý‰j¹zZkÄ›ppp’ã­Œì§ýÝŽ ŠŒ·YûÙ •D$ã~YäÙâ‡Ô@Ç‹l*Å&Q³7ªÝ؛ٽm¯ûîÈ^NnªWóßë”,X„Ñk† +kž=ÂZ£T­1ŒIuáz´F„Úò¬Ñ›Wzœ©æ‘™jš©œÁÖÕZ˜··w[±Õ`~ÔãsfÅWkSI߯ôùøum»°þAHÏ=ÀF}Ù1ÖËŽàÆú9op™ŒµÁ%ß‹¯Ÿè+ïÁ­ûoŒè‹Í#œ11”P–‡oØÔ+6þ}_tè¯ËK…LÆlDÃï}ßïÌè©PWÐ3!JR2Tá•æ™)¬„£Óû “·˜œu`r¹'ç:P<_ci5ÞÀÒJGK žDU$§{Àóña+úFÊÞ+Íš®bê8þÉorÍàìD‘&²”ô%B ÖPDKäxègÚXÚÇ—Æ.r‘ªS¸òØ›´ßó]8ýå"–$:@ÙÜåm„ÑË ŒQ–w¯™J´41VÑ»“J·C2ÌC?ߟñ[VÜe‰©¸äiR£ ?dVU¬­ÑD€ÂàÛå ‰ ¢¥|4)QRå@ö¢Æ¥5ci}=. –ÅT<—ZW±uM».ãUdæ)c¨rN^Šwº¨« ÀDMè/‚ (½{EìH wÛÙžIôœÉŽ sœTÉ]ôu¡6'ó¦® Ù"Ì$K+"Ä88­RáœiÕቤHbl -“Nˆh—ô§3U9™»Y#֒ﳚJ‡'_œüéûM¤5T„JÊ*+ÙðEni!1MÎÉ‘ ¨I¦IT %ôe,n@|æ¾öÜÈl ÎS¸?i— =ƒ}xr¬¥¸ªWZ ´Dë‘/1åÖ]P\uÏóÿކ<2-ž’\«Ù‡Ô‘¡Ýáâ° ¹+ŸX¢/­RŸ±„ŸmfØ[½(B2÷Æq«¿ÉÄV¸…]`]#$¯]*\Þåy!ª Ñ¿®‰c0p¶_°UFeÁOçú S{jK» Ͳ•g½[Rd×zSµ†Û–ÌQ·|ÆUÑqQ¬7=/Å=|ñÔyì©MÌ[Õ"1> Ôo}Æ ÄãËÔ™2­í× W¹ó™C³Z™Í¢3Gäœ?aKs~©I…lj0Jn¶¼4®BUå”vÉ?é?U-ñàºXjÙ‡nplÈʘ*™à¶TçjÝõkp¬2Q„UQ¤Qãtò¤’ÍO¢¥nAæ3Ì}úîI†mH±r„mƇÆZpå¯5àsc:+êˆÉCpíâÈã8Ýí.¿œ=ðiµ„Å-'ÔÖnùX[VìHa¹¼´ƒDðèô[9uÏ£n ”íæ—ÀÍhQFÄsV„`BD jIRâXq’úo]/¦#®­žDÅAÕøÒYï!ðµ+šS—ÑÍ?Ïr6jWZ˜(dxp´HÒI*5'`²Üå%¹[C|L,ÕÉì/s­Xb`ºæ¼j¦?j²S5$ë ¶Žja½\±d£ï2׋XûˆÂ–#%7¼`Â16GùŠp è+xoyv3Ò‡X›FÝP§ \w,ÿåݵ¬ü*¬Ò)C] Åo {º.¬"?{èe!dÜ4ö0‡e‚m¨Ñ”+HH†}ÓC%‚ìVÚü¢µG³­%š2DÐ&§Ô¹ ]-Ãz-9~öèeݺrSa–Ê$¹ÿnr×^Šçª)­m²Ïñ¼Ë̯#oÙ8ïº>eã¼cûzoùhä"λÖõýqÊ@ ÜB'Åh?#¢vßÌs­+F›šâÍžÊu¦Æ,bQJaäÜ $R£Õfyó` Ôu£¿KÅë6=^sw³ÈãélRúEbžÖ]]'#ºÊÔX§6¡Ôhqý¼çb%ÁdªþˆàámÃÏ=ÿÆ>|ñvÈ»Í'p:p 3FzR¸+'OFŠt ¸Ð2ÒÝBXÚ1 IÛ.¸”êÁÆOÍÔœûhfêUšÎZlÙ®»a‹—=¿`ÀœßSñ%üìyæ¢xºG¡müªfQAqÙ¹oóN±½\Ù ·õÿÒDó[BÞ„š'xbÂs7Š©Ê*«Í£ÐÞ…Nâ]ßúΓ5¨(àÝh ùn¬P§É,XdMš¶°Ïn‹¶ð;û$EX+ªg.\ÛKsU›ËÞE 9þVlTdTaꨲXwÎbÝyëò#:­p2u¨´ù–Oj¤¿^N#»ϵï±ÌGÓ ƒ!ßíu0Ànpgé’´œAg%Äõkt–új5ƒ—Œ‘ÆÕðŠñ 6~ËÆù=ñâ@ËìÂ" †ù5h­p,‘ú3°›ª§7H".Ò¢Õ{Î`#-ZÝ¿Þ͸¡Ç@*4hÊG§”¶êð:ǺÞ4 ²Ýë¢ÚMŽqU+Ìž4ÚþZÿ»ŽGiåÐkCç¿ÛºyüÊuEW‰;îyÿ„¯Ê+?’a=_fG®Ë­Ì æX;ÁìËk+«§@ X¦ñ{`ééÁŠþ°äÁÆ)ºfv›IÞ;_\ø§:XëlW“×Á÷íùJRT­ó—™Yý¢0£Ý¨Sý¢{* Ô÷Y©Q­›¤˜ççnÃZ'&²Nž«œ†„÷y»¸D¿ïÚô!‰lî(„¥e¦¹.S ãPK:=ø™ªê:NY¨‡ª·{®6ómµêõЯšú/û;Û ·Î‹üN?úÞã/^£§G®z\=¾Ï¾×DYŽ¥/L§DU{·,m÷ødÖå7 ÆUµ!LiɉêZ¡ÿ°SÚëTì™Ò8ÂF!ÔD3{%-7T£fªyd¦šf8骵0Ïïù.Š^Ö¡zŠ"6ÝIj­;ÿ÷ì)Ó¯)TŒ!äþdùüyþ¼œ?¯9-V@ZfÒɸ›v3ÞΟ¯Æi2ãfµÅÝüùb¦e£ïùycMí…iôtþÜ6·Ø6ù¶y̳&g—Íc^ó-ÀYjæpvÁy9Ûø´ª-ß|¶³ænmeµõvÖÍ+PEu½§#}{ð_Úð¤endstream endobj 816 0 obj 3553 endobj 820 0 obj <> stream xœí[Ks·¾o¹’{N[•ËnÊ;žÆ‡”g9Ž–™“ãJQ$E+æCæR²T©ü÷| `f³>,ÊåCJ‚P£Ñh|ýð‡ußѺçåçÉåê³çA¯Ï÷«4½¦õãèûÕ+*¿ô…|ý‡#^aÖD]´–ÖG/WTèIëÎ;¿v!v?.Wßl¾Þî°™7®×›÷[ 5y ›¿ˆéWÛv®SÁlþÁÓŠ‚íãfê>ø@7g<ß[ê­6›¦÷V~™¸(ï0{ rb—+bN»Í›i(.0Ô–” ßýÏãäyT¯;ùTG§8Á—Ll¢ê™…r]ÐÖonn“¤¦^ñ Q!˜ˆÍwZÙ.ô´yÆ+±‹ñØ1‘€O⑾›ß°Lž\op\¬ãS)lü­VÊbë”Ùœ2…ë¬5›/˜§ê=ë†9ÇžHKÖY@íB›]"×8¼-BbÍ{\xs–÷qÁæ³'E g×8ûé´NŠ*ÎÈjýóÑê« aýã Øð]†qPîúre•ÒÙqæbõõÊàŽAœáôü¯¼*vXdbèz^4L8@Íé´fÂíZELu±\U[’Õ]ð®'|!ÀHp›ëix6 _6‡¯¦áIsVp¸š†·Ó×OÖû.êÍï·; )7ß4ù~; ?‡£ÊGíAÃëêg„þ•j§:g„Žy…'Ò±Ž”Î:Š}ÝÔÅ«æ%\UÊ2ª§Î©¬ÿLÿ†ÿÜ>DEãé+¥•ãQ°O*‹˜d\6ÐÌ9K>PRç¬`”ÅS5ÁÀÈ­i(ÃdMÿ–•c:ÓÛìý²FNåVç4}VÔ«µ @ó…ff†ä ¶á.8œOÛix|À7x#9\ÉàõÄìw3ÑóÙ^6%v»|FÆk«/;Ê»µÑºŽ$Hʪ§¸[#|h<ðT¯š*>䥑½vMmŸ6‡ÿj:¢%´–=1$&ûÞ<ÒÖ§+šß¬¼Ç úιéÓ*UÙúDS±VDQþŸË9ã'ÁƒW 7u¡ô ¦þ¢i/oš7xÚ¼ qmï'óýXØó¾óäï!ò‰ŸÄCL—=‡ˆD„5lżJÑÓ ÂÆ®W.CBÜâ’‡‡}A‡£ì,ô…¸Ðw÷ÝøMSÞöuˆ-^6%k{©Û&‡ÇÃÒ;dÄÁ5ب UÀ1àÅA%TV= €ŒíL Çˆþ _€FlÌ!%¤ƒAÍ&Ä«Ô,¸Do5F·TÎJ!±åÜ0ó00F{W#Á¢7¾¸gI/¹5p‘+T ÂŒå°v“ºÆ÷Úd-çé7©ø%2н8—¨(‰áòëºì|T¥l.Lö¹”ÎUÓ×#ïÒ=ò±ïŒCóà/¢P¿Îcêu‘µÌ_Šñóª°Ÿè_OóyÓZs(¡£ScËbA)caOâ …unS”cšUuÖ· ¾Ôb›ñFtN)rOC° ü®´:`ûú&Þ{±ö…˜(8+׃ái¦èÙçHŽlÚÔÞHa "R$ñC™j‰EÔ)QÑ›·[k:«’ꌼµ3näp°ß¾Ùl˜5y¬²–¯iÇ^Öàžv–:Ïõ0ßVdp ({Iãy³Ýõ=¹Jʃå“ɨ o eÖ'¼Ò9gUiæ¸^Y*ý¨<ã—>7¬·vÔæsžEðA²»Ítãa÷`“‰ bßd~áþ/Äî-¬ê€bô÷ÕÑï`ÖW“y¶Ì‰ÐX="ûólÐp(pɶr+æÏÄü¹˜—6w,æ/Äø¹°9ÉçûóÜ‹ 0H)ìØe()Úü;aÑá0dNĘHŽ;%ÕôõƒÅ KXäW93ðŠ1=:U‚9ùÊn¥M¾œN D’¦ø×Ü´ÛHAý ‹gJäm]J’HJ;X^Êr%lôÕdºrú<9u\y@p{ûEÚ–#8+ZUºÞƒÃ w^åÁ¥ çmýo] å¨5n@“pQݸÓí8Öö°¥"³×Ö‰¡BtêÛC…\!_^Œˆ9ܲ釤éP¾r×SåÛçØz¿ ¨°MÏ Ër†‰gÑ!ËFU8ºáèz Ù´†ƒy»ÍR°8ë*—̬{Ñ㼉 ác@NS_ò&pzÉn“.è`ÌÍ"rkx#ö–˜Y²Å{CkËò¾Þ Ø/$ ·µ£Ji"NÁag­¡GÉÈÖ Cã gk‹{B+G°4Ì!¨ô¤ž ¡»îÄ=Mã+ñ1âôðiüNŒK ¹¨i°©¼¿`“ÙŸ‹ù†÷?à#ÅA¾}§Ë<¸iägÆW'Š;í‘ GWòÛ÷Z%+âù0OŠÆ4õ,ØHµ+NVæü#¼J2ã¶=Í» h/{ví5\Q½‹`wÂö‚](åt`¦HU´ AêЋ3ÏgôÎJòw8Qijû¹ÜXkòw“ßXr2•ãØ˜iä¤ë*sÖŒÉD®Ù%$ÿÃê$Ëm7vfÞ1“[Sp‘Œ2LÞÅ1‘X@Ó¸è-ŒqU HäÅ9`ö³¶$ 2zu]—PKɃðõ‰*å“R;έ‘Q.Õ‡IÇ£Rä¤×³c=÷ÍLiQ®ÉŠA,otŸ© }\O¾ÙZ’ŒÞÕÕÎY@ÏÒ£ïªÒ$ð2JÕK- oäq<¡ à­,lnóî»ÿ1Õt˜ªï?Al“•¢Ì:ðÓ÷É Q*jÔÉHP¤„{2Ëì1²o.ÿS—\»"N핟 Ÿ¶A's›GÖ¾m3H)Ê)e¡ææ€î«Û¬]µâö .èir¢´¡c_ù~¢ÎOïõ .*‹aLïîˆ(¼Gtñ‰ï¡UeY¸~]Œ]L`A+¢¢ÜF/惷á(BU!~3·¸ ÷“"f˜€ý¦mÅ·šFi46#ff]ê ¡§OgÈ/bÖÐÑöÝsWÈ⨖+L j¯Úù<Ðf’+ä,Dwå$ P¢u˜¢‡Ÿµ[~%ïMÒ Y³‹©2îFê©icpN•Þ¿i1÷b nò<ȹ€M{š¶;ê‘"#“{–Ú½=ÌUçÄ”‚ê# O” VúȤ{RdÇF‹ zxÏÄ·ùíS)=™áÜnÞ½ÞjêpôÒãæ¾ªxä×TqÕ8C„ÍýI ½.OƒÊ–‚ºÙÎ1üËê9ÚŽÝ¿YF HvÁ.åšm'šœÅ…µ»Š¢yÄ:E&„¸ÐóQø%×rŸ5Öé»"{&™9ŸYÁŽ ÕUhì™|¨Ø½½§b/Ý…vÅžw1KžUÓéð}˜ç¦<í<-¶b?ŽðêP¤†î'Â(Îv1«–™*x‘ž¨ÁØ7ïG\ÒÞIJvŒOŸõ*~Ȧ–ºÞ²¼ißÊBû]^Æyi´{ÿt89MÿÐt˜®?ºñäO*í`ýZH%¥]j^X°&]xXu›¤â{É)ÚÇ:í~s-$Ù¤Õ=¿ÏžÃÖ}ˆˆâ¸õNÛNÍY¢_o‡·¶Í®:ñ3V5ˆ_ú*©.{)²{Þ‰ù·Ó¼xé #DE©ˆzÔ üu1Tcjœy|“ œ,8€Áððé…êXt¾dGL6ŠäüДJ $Ñ}Ý«9Ê úzÎÊÅÅz7˧‹•`\êJÆrš rÒ©Hû¼ÍN=ü[ø²pÞǸxG÷ƒ…Ö‚)å³åÜÆ Nªß TN*Qû’ûÉšõJD™;½TβÏU.&…؆YܨÝIr ‘†ðv-/˜Ã·KU×Ö.Sü!P‘×[¹³ºùÀŸ‚}Õaœ'ÂsW3¸2Çü žæDÌ_‹yÙò~)æ_.Ø÷É‚s|–:Ê?ÙiŒ°É©qö‘A¢á5Ò|#„*=oì¦oêê©{žwsW«˜“ «>zÝ–ö ¿pÜîÅüÙ!®JcäTÈðùù)iƒcðãÄ;ËÆ‡™ÇGNŽ˜¨ûÒSš hùǫ́—¾‡HKyøç™ù7©ÖÇyùy&Ñßóy&ÑÜk{Jáªíp_/Ô3\ý oR6Ö~ýÉ¿´ÔɾW ãLm¢×"nÝ,ìYŒ³¹ø FÝ…v]OIµ, â"ÄæZ©ZM"8¦ÈH.vÖÏ#cõ9$7ÉÛªŽn!E—«4ôyçý¥™n›õ¦ð|C”:‡ ªDLÏ]|Py–JÇŸ~ãëÄ[®»*˜µÜ~¡/ÜÎç5"˜ Ì‹Lw}†°ÔYúÀ^êÄ]Bü}€ûÜ—cmåõèzÅÑeµ'-FØÅ¼ÂƒÜšªÇ9¹kþu–E‹çŒÃÌ]¸ýˆ1uc­_‡ˆ|ÕLÓY݇£d_­þ '(endstream endobj 821 0 obj 3331 endobj 825 0 obj <> stream xœÍZM·ErœÉ=§¹¥'Ðtøý [ˆ ÄvYÃjw%m²ZË;+Yú÷yE²»‹ÝÍÑ(Cõrª‹Åâ«WUdÿ¸½Ü úWþ¿x±ùã·AoŸ6ix+·_OÿÙü¸‘åQÄ·ŸŸÑf+e­•Û³§YäCè£öqëBì£óÛ³›ïºÇ»=&óÖ)Ó½ÝáQ+¥B÷E6Nèîz·×Îõ*˜îï4¬d°"vH‹àƒ”±»¢qa¥°ÚtwEÞÇFy‡ásÈ«¢ÓÝ-=bL»îUzTFZ.pƒGm¥2á_g¥9¾ %t¯#-ëìKø†„MTÂA…r}ÐÖww÷ÉT#¢W´˜g ÜDL¾×ÊöAÈî3z³“ÔødžôÑ‹ÐýŽlòÒ ƒõâ=ß ­0 é¶p•-ÂÞ9×]’„ë­5ÝW$¡ÚÃ9¤9 )5—æî“8!£Œ ±H§½¹œlº»Ê+ˆZçµ'G kÇ„w—Ó{ÜT¶Frë_Î66XÛŸ6ð{ŸÁaœ»}±1Þ›ŽFn6›€‹v pR†^F¿uV÷ÁÀ½ÜíáE#¤©s—¼áùiò”u?û1èà à ô"-$Ä`ÌZ¬À¾˜¼Ø#åº'ÉÀ$`Üå஄v-¥À$±ÝÃi“û݈ïïwÓŒ…+ƒ]uŠV¹WŽÛ½ñ@pÈXŒé€ Iª°ýÁיŰÑQuj·—"bd÷åUŽ8'±¾²¸øá9CH…á"÷´ÅVKÇÀd¡µ£HÅ£²&¸î"aPª{”FƒÐ±D›30E|q;gÅP¡Š:ã´]Ž: ÂF¤ðpØo ¹˜/tÈÑ;$¢íaÒ!ËV…ëe–›Iuf—d]v>¶§Â0¤µÚ˜l42»ÿ·‰Á¤—o„ê `ó o\çU†Œ $ÒzÆÆ{6þš¿aãßwì®4#(Ke{fqbzƒhÜž}½9ûÃwÝ·»à<2îYd¼ÊøMŒÅ#æ– ;Àµç™Œ{½Ý¿ØQŒ<™‚1‡š6qaâ1AE°äwY X5X—¬~ž­F$¬õŒkË©{¬?Ÿ™Øg_0]4·Ç$µI£—ÌŽëiÆÛõiø ®òœ«üñ4êèò—1z¼’ŠZÝ”ß J*›&¾YEù>AÖÀÜkÄOó/9‚;ŽóÝôËœ?,†±í½Òd °DßWY$ÄÈ7ó7…Õ+…EZbãªäÁ^}ÉPó’½Ú@Єê²sZ×±ŸcÙøôìßËðWЫâ°O,Ô8ža¹²”=j îh¦d &"éÔåÈ´ cƒsC%Í¢—¯dã ù[ʰÈ)”>²å±7 eƒªT-9YÓ—µG ½…#RYTs)&†[X œZùKG?0KGóúQK#8ª-Kp¢LÿøÁyÉÆ¯Øø=ÿ¹pT½<¾ *ü²^̹°…ƒ¹ÚÑ£\ïQh•}Æ$DFÙ›hgL¯¢F)d%62\ØÚÉfÜ.¥} ŸˆwÐPP¥{ŒwP¶j¢¿@ð2J÷Nú‚–²èÊÓq½Êë¡ÊîÀ½R‹Œ‘Êâð2»Vš8H¤\ü|ÆùMF¹ˆA©®iñ™£ÐÉîÇJŠÄñÄìâNüýäÛ„ªŒÛùsZúÕÎLlãõÑ­¢Fz4?ï= Ïƒ ÌxîŠ%í²á³@Y@Õ“Y5˜R ¸yå3ifdÌcmF»Ð ñî§©yº®¼ÊM"açMÓÒëi‹Åh0:Kflnî¥:™p«Ú*!T1OSöœ!m–“}©·!\iô­N»!@ŠÃBx‡%‘F‘Yš}T.6¡x˜®Fñ2ü¸ØTG{ÕŸY!yÍÆoÙ8ï©ÎZ=Õ»ú¨]xšÞͶlQxBDÔ À5ž¯³Îa8û¨Ñz˜ó ´+³²ïî?ƒ}r‘ÙŒEÞÂqaþäÔ–Ä?UI­œ§s¨Ó3ÛêE£ZÞ¨ëäsŸ×ànÖ ”Õ ØÂó=„rZòh!•™ô¬ðMyX0%‡Yn U•Иë~Eà |¦ÚGi+En¨qËÎ{o2Ðs?»kp^ÊNý°[å8µø°—Œ ¤sÕ×ÇY¬jÃBÝh×3ú䯱{Æf¼c3ž/+ñÖì*ôVªñŒºÁ3äÌÍR¨™YlúW̬;6~ó³k¥Yíwüø”¡>eÖàÙáÿÚ½”–«d9õ/IRóÚ7IܧÏX” í]`­óªaê y´±)ÞYÉ5É5)vÂVÃËÀ\öUóÂ/Â(×HE§Wg`¢YyN£0œÂŒµ÷J¾‡<%].º¾…¯ßf7 6Ky¬'ÖJuŸB²f ·õà¾Øog —y36*Ër¯ÌÒÎüFãn}gWcà õòlé=¦¸E§tì’0Mâ•iµbL˜QmRÝÝÁ ÷0湈ÑÓEÌcÆÞ¢Yí޲˗'ÔÉ!!*=Üo’ܦ¦—ùå ]P¨îkEäuóÆåYV—®KZ4\†]ž¬ñ ¦êqºUøGr{kúªûK—f³cv~î8ªò2®f»c TZ̃šÛ{´iLtü|0*®]]øöÕŨ)¾ØåLæíJ&½|Y­ÃÒÃa=«ÌA5§}¡7ya°§uXÛhyáÚ:þ=dåÆëyíQéºÃºãYH³Nü6“"¡Þš•B†£%-[!Vt«ãÎá‘t.h¥¶qÜeíê#€L”eæD”V¢26nhpÒý0ÕòØ„žèüdÇ­fŽ%åfîWˆøÒëRÉÇû76åÃÉ/ò‹ÑºVšºÊ©æ¤êLòzgM%UT{͵VÈ?Y§Ú¤_÷dn«l\Bpo1Ü<'… ¡`š]bºdO²ÆI°S½µ.N+Mt§§ü%ÊÊe„äè‚f#zk-²Õ®9)óåò^±ÄÉ4\·°ûaºÕ\?ð\"Ș¯Ó)mhÀö$<%é`dEÐU§‘r¹®™zÖåA}uÒ¾èu¡§kúʱvî*‹ ç«Rl¥Ÿ— ë8.ß7‡ô;jÂû¼.«[G’ÃÇ ú=¸ât¾­¥“éPÅB ²ƒ×|<©×Î0Fì ¿BÊíš{±xÚì3NX`œ§[?gÃ7N¥@üõ²:_Ôx–ú3ûPƒVºæ‡:°œŠi;Ë¿4*­k­þe– »â}cT…c'bdUÕÛº@åWŸ#‘›²€ðaŠíd¯¢mpêoØÃK·DÅÎÒ7 {«¢'vgi?o¬ôp•×du“9oßüJàoÈhvÖ"CV·CÃ$µV/b¥NöùËôÝ'7¶éÅV=>¢QÝgãsì>/ÇzòXæ/†´šð•cç´ƒ8Ö›¾¿)èþ4¾pü+d1)ôxú³Ç>á=YÈhyP+2Ó÷™ÔÓÈ¥X=¶‘€Ž‘ðg²Nj\=[Òˆ+gçt鬈‚³q~zXÝ*¼b?`ƒ,é–~ȼ‹ÓÆ[6ÎNë[‹ÝôÂúš±=‚ey Æ\ºWJ¥ûÀ_¬{—ªb4§ß»ü[ƒëåê—'t¯ØÉ£(q£ûÈ¥ágþ’Ü„>^¬ß-€ï [úÇsêEwlüædȪ^9óAœ> >ÃâA²‡‘÷ÿXAQa Õp•ÌˉÔVG‹mþ dÅϳendstream endobj 826 0 obj 2868 endobj 830 0 obj <> stream xœíZKoÇF® ¹ç´@.CYÛî÷À2"Žm ¶6';(’R(‰”Ì%iëßçëÇÌTÏö»ä&È!ЭFUu×WïžýuÉ™Xòø¯ü=¹X|ñ“WË7›EÚ^ŠåwÃêÝâ×…(ÿá…|ùÕ:rè¥,#–ë× Qè…RÌY·´>°€¿ë‹ÅÏÝË£sÚrÕ}:ÂR '|÷5Ù>?Z)k™ôºû{ܖº ¨¹w^ˆÐÅ}n7JwW‘Þ1pþ¤Hg±{ réC€”˸вÝ͸$ï±TFHíÿ±þkÔÇR}$WL…¨Õúü‰u<Š–ye\wunªyp2*€Ûié½8|¥¤až‹îyäÄ)ÚáÄD1.]O¸à¸ïþïä„åê‚/j%qL”m””¦+uw),3FwßE hÅ]Ä&J\EEç *ë½ïV‰\AyS.¥µµìñê,Ÿc½Éº' zÝt?ùèU‰ŽÖëÅ WðËßð Ç’oh p— #¥b ;ï/gý 5Î&—Ö(æ]q·?.–-‹s+NÍ'{Ó>ÿ*bç¬ñ\fú`*OÌŒŽð,éê5|2K%*á’ÁÂÒÃû5·™éoñBþWîcüÒ1à,z+ürY ™å]Â1Þª©ƒc^ç–Šé^°À¦ë·ÛÂ=sÎ@6sAp™eŸGƒúÀá†å˜×¶òŒC’[V2b—M<óAŠ09gÁ·Eð²{5ÚHÓB@ *î¼ÿ–xõÂEÍ`¦çG+# ÂÊvOâR3œ…{Ó:WifችŒ_º”Y´ã9ß klobðb;¤™ õ!…¥”£ #|³»HÀûà”äzûL‚L6+?žÆô%ȳ@«­ƒÀ”u„”ÝǬ×ÜT*€íùÛ§„¤¨œÉ A…žùËÑphq–:W1‚Q~VR#U9‘Áß3†oóÓô(„Õ~6ˆï÷¥ì@Ä—n§¾4UK+f£”¤—6î!zm©59j©€,“È»?” P‹4H¾ïBS²ÄVÀñ`çsÜô’HT"„ùKÖÙÀB¸Ä–†§:_òÛ:!ƒÓÍ#lÄyE˜fïn“»ï˜&NI ýׂ«3e?§òbõîit¤ªTO ýÑ(¨íhšþ¿“¿RÆ ÄÆ"³ôÔ[9}K¶ïh¯*è7{WA«¦•ªyŒa*‰¯xpÌ´m!¥<‡3¢Øz%^lï9Æ¡I  ÔÞqèĬ‚ ‹îæ¥öœøþ%‰¡Ëª=×WØJ Ï·cK¢Íýj¯Øq¢UL⸀ô&¸obÁ뻄ùœë,º¦¹ Yé@h¾WpÅô»g‹)]özm÷n1½ô‚bƒhp3©ÞZŽ4±ÕøÝuAç£j¼¯¨˜xRÐ÷œ4Å™Çñæ1ξwÁ¸iŒÛýœš{„©,^mgZ‰ÉÅk§.”¨ªU“ý“íˆMû•BωÖýÍç› þwÇã£oNs͆ìœ1×f[Ó¬PCÓÊFs£ÃJdoÔåÑŽ”²ò2wÇh}m53œå×€Ÿ6ÊÿªÈ3‰’Ýgd›Œý€î|·ù4NGñý€Õ½Jã–æ"vïÃ4@$‘‚ôîÃÔ®*ëo ‰:WH¡º],¤Ní°s×Ð>©6ef‡ôI*¦ÊS;Ÿ®·&Ÿ4¨Ëoظþ˜^%¥Ý§ Šò¦{ž8¬Á¬EÔ/˜7²}šièU?ê¤+Q~FÈ/ A”J'Ûä*—ù*ÒIºûºhÜo²|©’ýq´=¥¦ÝÌ„Xc5lg¸S¦´!ñõ½¹FVê3”ÅŒ³Òh+/q’pºÈÓ Õ³Û(ѽHf¡ÀïÇy°µ.*yÍÊQ0 ”LÏzΕ¸Ú*“ÃY8#½*¯‡^Ù¬»˜÷…@îY¿X?ù¹ûž¼æ%Ô çJÖ1ŠÄÆ6êM±LÇ–W¦|i3| v” C|MKKo'ÃûŒ Î29jÕìkÄñ}¾™ñË“|Wjy䩈®.K_ ªô4JAÝÓFÇ6b>*ãéÒ<*äèö›(Ñ1e*ì/‰ÓŒ¦u®z¹ø°ƒšÓŒ”»ÑÇ”L=ðM±¶6½á‘Ó dIÖù(ër&Ü›žÏ]•ƒÑ£Å3¥QÞö“Ô¼CŒœUZƒ£ãUNµè•7ê ¸‚rÌÜC­Éeá§o†'b¥=bÄ'â~'VPÁW±em4ˆ† ‘hÀ‡ÙF¢qg¤ê•TLf‰ã‘¹§/Ácž|8˜•ÅŸK\|3—!xŸû²DÊÇt†öHÍ ËóqyÙ¤ýç¸|¿Ûñ¸¼j ;kÊ%l›qyÝ<ø¤¹Kh?Kôaâø|G‰ßâ£qýå°Üö­ÁþÙØS¡îïdÆ ãá‘až,ã„Î.ñm,è§p÷gÅdÀî Ñé]¨L!$¨°¦É7mÁG»À6€BìQéBÑÄ”E+\‡AŽ£ãkDî›ûÜûv\®#´¼‚¢¼†ûÖ4Ùn(Nq'(Ë¡-A9rÕyo¤©DWiO:@å(§g:ˆµ¤G«U>ÉýyDà{F 0$A’(>Ü—Û©±jΚv»nǼ}FȦ@S\­V ÝðE´ÂÕ¢¢´$`ÛÉøb\¾jFüÓÚPÚ›²«J2B+Ñ·;;†Éÿ€íö¹Ñ\••E+#WĦ…« ºh*›JRN2㉤ÈÚÃx‡hƶÃîuÓ2WcØ÷yO—Ù%ÒäÒêΛø~L¸¯©µ¬xÒ4èyó¾U)KGxŒ,7»y@½2V½·¨Ä4…ë0¦A¿ìœÌ¦¹×€§e½øM³|]ŽíH!È_4£êªiÆë&íCûWÍ36Mad÷P”ZÈv/D5íÎr»ËÄ,s‡» ž4u@ên‚Ç—w‹\B=ÒݼŒuW¢,Áã²·ýe’䳯­^NIw´z9ZÚu¿zâ"ä¿ÐßÝîbÖèÊ>Uç,â™%ónÏtk(üQ÷6wÙo›ÍÝíÿ›»ÿ\sŸž·{»¸»gk7zÑÔ÷¨« £˜ O‰Ë=ò @rƒx˜rv«¹=hoGš´þ½À>ü%l§^c@­»ÀÖÿŽ|„¯ÿ\ ¸Ž?Ë!Ÿ úý?N+¿D¹eü•ž¿Xˆ'ÇÉß5ÈRËA¥ÿìï+9endstream endobj 831 0 obj 2709 endobj 835 0 obj <> stream xœí[Ko$·¾ÏOÈià\ZvD³øf€œx³p l˾$A°Öû‰¶FZcÿ}Šl6YÕâhf¤Ža –˩*’ßWEV±¹?¯¥€µLÊß§W«O¿ zýãf•»×°þ²¶þ³úy岈¯ÿ|’4Ì@Dka}r±‚"‚ˆÚǵ QDç×'W«¿ßã`Þ:e†GØÔJ©0üuì6NêáÝѱvN¨`†ïR·‚`e6(-ƒq8OýÒ‚´Ú ·EÞÇá«lFy‡ÝoP^…®Sû´îsS°Tà›Ú‚2áŸ'K rtAJj¡cZÖÉ.á«$l¢’M('‚¶~¸½ËS52z•V€Ó3hÜDüX++‚„᳤‰£#f4ãóôÀG/Ãð»4'N\/êy!µÂa’m‹PÙ"ìsÃY’pÂZ3|™$´©=‚“,G  ©4àqÇEÀ4)cB,Ò™›³6§ÛóqQëqí¨ií8àíYÓ£S%kL°¾:Y}½ô…°þe…¸‹Ñ9ŒCp×W+ã½üÔs¹úvedýé›×«A‰2&!“VíqZ §³VsÝm« b—ˆ228_4fµ¾xì»DIŒ!¸ÑÆæ]kž·æ­yÛšoº=‹üzðßRÓ ¥â–Ñ®»£‘!þ1´ö¦5ßu§vÕÚÊ|Э?o½ïÉGµ]é¬Ì {Jà>И©=„™Ê–vJ8CùKzâÏ —*ý€¿».¢ ÝyWí_­ùY}Ú~7C7 føwÒQ¡Ãûÿ¡ËHf¥‰Ñ[hjdj”ò”Ì¢—C¸Úš¤æÖ³­i;ÐZ ¯évPz˜” èRJ•6/< „t^2`åóªR­§IMš6ž0Ìa‹Þ³6*ôSüÉF+\T£Ã–pó§<_4÷8ë:ÂE×ïú;qãËÔÞÌ}-x穱ó®]¢¶éº3ø´ÛKd?tW1 x‡çR? Nw |Ó]ü–hîo$4šÿ¸Gx5§š;#s=0èY—õôsÏ:ÀG£± ˜rÖ}qtœ’#Œ¨ñL28žÅÞîr4¢‹î¦oxŸ­©¡ÂÐÔüœ±Îà*-Å®è-ƒÃ=–sæõ®@"GéI fçCP1eØ´ºî~–ês²7³gMs쬇H/ 'êFrad|^ÖŒ¡y¿¥ˆ­ý`!Ø_u«ŸÏõ‹¡§æ$?tÇèÒ¤w)Êyk?/¢+‚~ªyhÚÙ|‰ù`ñ¥ê_.¦ëêqEïy‡ÛX¯±Æ‚Ñã>§8ööúEî–¼”°RŽ,!Ÿœ;í³i7Øæp3p­¡i”õ°\\'Dß—g c8œû²¢ëÅ;oˆÿÔÝRú·-Ÿ“ LFB³lÒ%,­à'½e 7N8[*øW Q’ÞÓ…Í=~<ê>ÙÅ÷Æ)~ø´é©}«PÌ!d€©(Ç›Ya|nÝ9¦µ1Œ€veÉk§q݇%œÕÂÇ[¯›ø¢QùIp”í |ßxµO•Æ\ä5®kRbuõ€9š6©¹ufKB,F’Z4 Q.tH 8B¸3áx$§Ÿ °Ë¦,¿BÞ÷~r'¨C‘WÃ:®7¯æ -‡ŽJköÌúȵõT¦étTö®/^²¾ß\Ö×\iæÌß¼ ÂÐ+‚¬Ÿ{EP¾ËhÒoò’÷ÍŸÈyùÔ¤do¿RÒ×`chG^©kø­á&½eÀuVhk_>ZþѲ13g”ñ‡? CïG²^|îýÈÄŸ…tÛóòÍrîqrYYbìF7ãÒxai¦“õ,°¤©I1ëEjú‰RV8 _#§žýü·‰G^Ïh‰¦d9¤óÆä€Þæ'F%hÇJå³gzüq“¾æ _ã^z6—NÕJ~Éöòsj/s9¾º9=ÂðíbÈïQ”Ÿ’€ñR*›žX)µ*¯WpJ —AdÚÞé3•Í´ïå48«!åáõÁÌ5Q¥‹Ü2—|Ä›<óšXÙŒk÷8U¼‡÷:]7f ã 1wKô®Fá 32Èæ-ü&a©Ó÷ëé™OÀ|ä[x,Î%]U²`QXõ÷‡Q1ù¨ iç¡ßÕ§Êûˆ“¨PA¢òR¢IÕ"U5ÑÂÒÓ.ë°&Ŭßy•Eû’ÞEMz‹|}W©4òÀòàôõìM$%¾š¾QÀ–¤ð´{SJίþm­|w uï±å5xæ°25þféSÖÅ ©RÌ:ðË…bˆµUô–!$éþå9ÄaÏ!žâ¹ÂXæ­Bc|î)Ì/@‚°ôÎ(ëÁBoÌ7˽&IºÍGÖRgÉV|3„è’ѵ=/MjnÙ Z ZÆg5xf?… œ¼ /áòõz¨úsEà=¸h…dž7ª-àÓ)cžm’³µ±•XÇ,›­ øk¾&ÅŒ¯Ä1É5*Io¡t ¦¾â?µp¼éº÷‡®30ªw¤äþhWµóKÍÛ®ÚYW­ïÞíÃm…šQÄSܼ‚p4ïœÔ–!D+1½Ò:o|\vè_G²’¶ÇÇ÷]µþ¾ÑOú^uÝã°™uwâ*iÍ×]TÐëü?1¶d©‡y.³›kQ³å>óªÎ1÷)æB`5N›ºPÒó¼ÜhRÌz‘šþoBs¸©|²´ÄŸz’Þa…½BOk4mjÕ‘AëKÒÔµYáùzõ_äw˜‹endstream endobj 836 0 obj 2286 endobj 840 0 obj <> stream xœí[KoǾ3A~@N‹œ–Ž9é÷#@yXãø`›X†°"W”"rIsEËú÷ùª»g¦z¶g¹´È1ÔjUWWW}õêžý~!:¹ô§ü}vuô»¯ƒ^\lÒôB.¾Fo¾?’å¢/þtJ+ÌBÊ.Z+§¯Žd¡—ZwÞù… ±‹øûôêèÛå7Ç'ØÌ'ôòÃ1†Zz–ÏØô›ãí\§‚Yþƒ¦• VÄåÔ"ø e\®i^X)¬6Ë[¢÷V~™¸(ï0»¹ 1‚ˆ†˜Óny7Á%†ÚJeÂw§£ó8~%t§#êô'ø’ˆMT‚X(×mýòö]’ÔˆèÒ‚‰ØüD+Û!—¤•ØÅxì˜HÀÆ'ñ¤^„å¯I&/08.ÖÑ©¶!ÞV+e ±uÊ,ωÂuÖšåDS Oº!ÎQH©9ë, v!„åI"×8¼-BbÍ{Xx»Îû¸`óÙ“¢ú³kœý|\ÇEeg$µ~vzôÕ‘Ââý°á»„ ã ÜÅÕ‘UJwÒ3—GߨÄN_ÿ•VÅ‹L  Eý„ÔœNkFÜΡUɈ©.Š8«ï¤[8«»à Z8>±ÊtFØåhh;¥âò”¬à—”]†Ûqøn>‡wãp3ÏšËÞŒÃëæ²ç˦—ÍÙ«æì¦¹óóãaì°€}Öœ}×DÛøÓC 0XejKn:kÈY˜éh•’iº:/4¸ÇN(—÷ò> ½iξz¢¤¸%‹†ŽÊxfÜoG‚¸º3Ö\†ïhAÕ•…Š®{õiЙ0{”Ucc;d¶ÇYSCë¦æ_=¼÷V м„_uQÏhþa©µ¶:ôWMÐ0ƒDcLmÈ-¦|@‡Â,F«Ô$ŠDoU‡QiЇ°ªµ_õ(aT†N•Mß5#Ê™]î¸áZF¾mÂäÞHÜ5|Þ¾hb®}/›Ë؉۠\s=´Dß)Ù½C/ÊóÉa˜Œ<ÅG‚èQY›™V©Çi3­0èžK›yÞÔ@ÛÝ7MÚMÕß»lÕTò‹û¬ûT¹•ÛñÍhÞÊ;hèÁ†•éUÕ¨š€êF²v¥_ŃÇH4åÍ9yí:–ÇÓ"e1ÁÚëð?;ØÆ?ÞÚ}{[²ÍS0Év‚Ö\O©v~€DU8TU»mœbøÍ‹§Ý6Ù7˜ÿ*¨^L ”ÚÖ„ë¢9o ”˜Ôàª#˜q¶óìN _UÅÂhÊ›sÒ2±¾6­zœ:Êà/lßÞS¢0³ðuÓÔoû:®\_õ ºE;|=¨•^=ƒ…*ÆڊB deV¤Ez‚‡¨b­<¤»~£bèŒewýýÌaˆvß+“Ž–žN2$òs’ÆéíòócºlB¥¯—ÿÌDFFXï3öóûò”"©áT¾3Æèê!å6/Êu6e~“"Ki ‰Òs HòK‹4hõÌòuzi‘‚.Kò:gœÏ;g1 Dý.×Ç' e >Ï Óc¤¼O™…ôàe-iÂÊN/Nÿ~túÉ·ËH¤GAÊœŸ§ý,š=ºt3fù—$4#M~F“%‘\þ’V:ç¬*AN(œ+¿eéy^:©Ô G:£”)¥rt2pR.^ÃÄXéë*.¾”K͵vÞïNÛ“þEqrLQo™õ§„M.2jç¢G;wÆËqáå^2Œøì˜¥Uè"Z×òý6+ÄZWì¬7½t‰C‘(½ðîµW–c×^‰Ë¶HÆÇÜ‚é]6 n/fC·Ôná»è±q+v+Än×?æIl„@,m•¸ýa&I×E£±ª”¾n˜÷B¸=ò¢ÛkµŒn6|ÉxTV£´€0ù–øÆáI‹DvPÛ׌ãuÛE˜Ðçe¥Ò“DÔvœ&bÃéŠýM½y î7•±Ï«;îÇr0sútj”+^ϦÜ^Seß 9´§>çý£à|Çê<½3:§{g<íÀœñºbFÑï¹Jö'ÚÈ. ¶:‘íMÌ;1$r°¥°?É_’¨å6M[!´2$€N‰¥òùWyVG?èi¶ ]ê§OT.¹=ˆ"9”Ÿ­§¸B~Å!Íé™$ë!雂Z’‹#b¢&Ce¥ …سã€BØj;1Ry•<;ј\ aì½åbèºFâ*fÝ…nJ…ûl˜z“¼u4Èx}I1Kn3-}qÅ p½#D’³Š%Ÿæ•1ºÙ]zÌèYwÒ\¡ÉxT &.ðü'hÖ“ªˆ™ªßÒ–9F×ñ§®H Ž¢u)ðsïû²©£Yú«r®ß‹¥u•ÚëÈ@hŠª „9ê)ê¨3kam=i†j‹ã y\ˆø‰Î«-jŒ›vfä ·Yõ\„â»tùM-k=7ýÁ+²z!*Ôð>UúÞÅ9s¡ÉÁÐÎ#?íËÄÛûð$Õ#8KEI‚¶Ž¨Ümí݈’va5ñyf!m¨¤^%5814ëNïöȨ-y%xÒo^#š.Uä¥o5m¤;‡Rû·©Å ègCs‹Hý­ˆ£ç¦‹A©e‹7Å\ãm;ë !陨Ùà‡}ÊÑöý²÷¸9šö "WÓJxõø‘m«Rj*+ô¡*Ê:6ÒÄ–"uÍrˆwuqt6Ì_©¬ó(GÌÖi#õÛÌP©}é°§nžÌ;ÑjÙÄN6-QU38üäƒm†ö“g­+B¾ ÛŒª;®ÂqPÒNÊ»¤?¾PÊ>º ´F¡tb„HAî¹4Ò`ÜäóÓ¢&ÿiÑË¢3¯G±— ý]øi‚Öóþ’Yû©ý0äFˆ TúÀzm¶Õ˜Ök—y;;5Ûº¥v¾ÉÇÃçáý‘lÅ ²¦³J.ÿ=¦eÎa.ö#ɨ¨:ºMœÀ ›˜¸á ñ€Ð–v’» ‰­¨…2=Ôšê&CºI«+“m)©TÃÆ,ZQf›ªÙPwhOÚLâç#ØK}•EJ·FïÔWœén7N-WÁ¡ú©9¼~ª®Áµ£rñ·lþŠÍÍæ×l>—HF í©ºæWlþœÍ³ñp‰£pzz‘¾÷¢M¥éæÚ 3ô 0û “кÖ(ƒt¨²ò­Î'­½ ÅRÃ÷6TöèÙÛ <°¶Þü S†)ç›çнØ5J¢_±ùK6~¾dDÏë£N“¨(„êÁÃjRáLÿ¢æTÅZ“®Î ðB{äX6½Â&ªu!öñµ§AK"Àðý˜qX V]¼&Z¥§Í$œ3þaw· §ï«‰éÍ4«ív)9ñ]©L71]Iη` ˜Âó-˜ ]°¤n…>äu2Úé]qsqo“+ëŒÂ²9ŸÞmÞZ·0ÄЋy$VW×»ÍR‚%õGHz`Å `v¶ÉÒ9½=äœü‚!ô©ƒ@‰Tëu±qŠäqÂå#£}´nò:ó›íа÷޾<4Z4ÓÍ¥VèÏR³ï»Žñ~ï=v~Ù+Ÿl@&a¨` QvT •™}“örAwk:ØúÉ^Ó«87¾ö!ŸUêY¢Œ~.¬œ¡µt ©…]œhx8ð’µG¿Yö¼’ý÷Õ¢ÚCÏŽQf:ïû§ Í)ëcÚ†ë«ìD¢¯hIµ2€¥JW‘în|²>Jeødú†53Hòtq ©_—}«¬±*Y©HO÷iMÏ-ã¦&<ýŒDóÛc´;ê\œGyKío—£=z‡CÝmÎè£]ÙÛH)2¾ 윣¬\ —Ñå@ùz5þÿ»üÿ|Û߬úeé;M€¸j¼>'j×Y‘s@á¼Íœ¬f7™³‘Ï&ÇBqÒ/Æé»«d˜aGÙ'b%s>“¤/ ®³ÑÆrþ4Ë^¯oËB8ÏÙu*­§þfM×hÛàkŸ'³Akó>t=kЬ‰Íå¨çK®rHg$òòûQæ¬%4Ÿ¾T‰BÜ”Clˆ}|Å6%`ƒ!¢ 5µÄ­‹ž„Ã>'ŒxýÑÐïÖ×t¥à¨‰Á$2~´LÚI›hßoâüœYÖ™¯¾H™€²|HÐ}nV3Ú·AýNeëàôYÛ±º,Æpð3ܽä]÷¬ïZ.°Iòêtÿ>¤+Rð³%!2æPÔ›% ÓëÕú—› ÕQ÷ÄÈgð©”K¢$×ch'kXVSzLK?ÀOÕ!ù¨ c¢NÆjbŒqWŽ6û›}ÄJdZɾãëgö%…ö‡š®(Ñd÷н'Çdʆf’}uôTIæ±endstream endobj 841 0 obj 3890 endobj 848 0 obj <> stream xœÝ[Ks·ޝ[©ü€œö8k¼vùG‰œ8N•e¦R9›¤,Y)q%Rü÷é03 f¸K­œTJ ±@£ñõÝ àÍš3±æø/ÿújõûÇ^­Ú­bóZ¬¿¾^¬Þ¬Dþƒçîë/Op„^ Á‚1b}òt%rïYP.¬­,X·>yµzÒ}·ÙÂdÎX©»Û |*)¥ïþœšµåª{¾Ù*k™ôºû6Ká ÝzsA;Çvn7JwW¹¿ Ý7‘Œtš€þÒû`UwŸÐ¦l÷.~J- íð>•RûŸüdé‚$WL\ÖÉ,á쬃äHH˼2®»zYÕ<8‰+ö4×&ß*i˜ç¢ûŽ„Y´ƒc ã"{ÂÇ}÷[äÉ Ë5¬Æ9Æ•„i¶¨Lî쬵Ýö°ÌÝ}=”\9).„¢½)ƒÛØ!z¦´ö!÷޲9yº:O+J¥µG úµÃ„Wgã8Ê*Y#Âú§“Õ·+ºà×7+À%åÐÀ]¿Ziç4àû–—«ïf.˜E…3Šy—îŸ/"«»~Üt7#ÌÏ7ƒ†½¤Ÿ|©#ÊÐÒÐ¾Š«óÁ-ºKª 7(ͱÿ.‚.@­aÀUúv¼WÎÔŸvéY”Ý3Bår¬( _7IâÚÈ~X¤v™›A„™Û¨c—‰š]§½3i®ˆ´z«­Kúsƒ6=*0 »J³øjrJŽhÊ\Š…sXºè®7F3˜\R˜è8"³)u©h"d`¶gœW+G¥EfÖ›Þö)…ì6És¥¨jn% À˜õV‚¾[ë™Óäî”ñ2 +Ú€ÕpªyÒï;2ëçÃÊšæÂÐÅõp¬Vº5¸m½&Úl¶Ò9Ÿé¾ˆ†ìýD–—N‘É ‡‰^D_ÎmpM¶@°Î 7ËVE¼âkJÜ®KŠC‰o,^p™ d„³^´Vâ6†ûu1d²f©Dáh$§ÖwuÿÚœüšÀ t:ãýõX1á]rˆàGaï#ãlðÙŒÐñ5pÌÕ´¿0ú †ŸôHDeË­hD}ï9Ÿ ˜z½U´0¢öcB­äB£^(P6š„ÁiÂu긳­5ZÀS†Á$ïð+†Iåx¿RÙXô+ÆíicÂßÃÄD´áã›õp¾ä°u? „ŸYçPAy BŒq!QÁ')t-4Ej1FñM†öTF…1=ÍŸo¶Â"9£q<„õM @Ø#…Ãô&²j¦LÛýÛ …¾¿‚ªã)h³FªB?{²ø©ÇVz4σÝë²Ø`ÌZŠmÅ|½ÙKŒ¢Žk]Ÿ-[—ð˜ó`]jÞº@±5ÄÞŒIBtœHþ„U„CBHnrN2rÈnc®©À9AðŠÁ7‡X“$aìû¡oÛñI¦¸ üE¬]4¬Â-lkÇ´TÂÊm3œ†°Í8ÕÒÇîÁ&ºBy0É Ÿ‘$*æ(c¥¡•»´Qߊ}7caû¸“ôe‡ÚI>èôBÖ•¦Ìhv…‰(ö Їä8ïÈBirtJ†îVE*îHO â&ìçH0c £•Ö æµ=”I™Ì»Ìpe{¤À£è©H:¯7–L‘J´gÐ…‡ÚBLÛ……$œ‰†ý%[餮”£5‰&ÌàÍåõfylSùÐ>FË+aÆŒß!>©Â`u±âKÀ œ’‹xÍ¿I™±÷JÝ é²H…“8W–)X¡I[e˜2àcA¦5(òúÇh³Rˆ*Ÿo•t~$.–t>ÅâŠ0BB–k>°‰7L$£ŠÞ|tðw›H_h±Rg!¦}žú[+éä Toç}ÂO“âŠA6T.r}6]lÛsšÊ;ÆÒŸÆHóf•ju %@ ᓆ”û,ú ˜æØ&aÏÖÐkl1¸‹Ç^0ö^Mz-c¯a¤ð[A* ÃNcá{®úˆ‰=„g‡¢ü4þÆ‹áU*?biT†Š1OïQð[âAÔ¾[Åø .é<|>Èã¬H¢N­oÇÏŸ‰ÍøýÙð9HcÃTJeœ2ìB‡…ƒ öo$õ+ {4òO{1~^Ÿ'#0_à'øÐ¾º¹„?›­)(‚øÌ‚%ð¡Ä9Õ(ÎyÜqp¬¤ 燕^BðFØÕøùÃøy¶¯â‚Éßè½À`«á.Àå÷w .Ž;–ÃvêxÖa‚×ySß5±½Èê¬Í FMºW{ËÁiÚŠ!q/÷Oó§ ǘúá<â 7Óa?ab,Ä_’ †3ÈÍ^M¤O·±WM¼ åAÄÊZq\ÇÙ7”7Ìb1f¯}c7¶^Þ¥N§M‘Q9]OU$è‰È’†}çq-äÊMòÀ•d§íqÌVÁÌãáÿq³½>ÐJFØ ¸u¥ÚFk¦hHÔ+ÌdèUS/hí° (-§Ý‘ÌhÈö3“Ó¦™´w›ó¦Å©?¿‹Ø’Iyf„¦ŠCLêæ2´A2…D³diáÑI<’¯%zCSHÔý?Çx#‚5òÎB9hFÇAæpœ…ƒRMb¼wGñj}þø1Þ[w†m€’sÉ ló°ã`ËÁrÿßß,âö(±Zí„Ò~ó°¹êyú¤TãÍA¡ö“e/¥Z¸T”2Ào¦Øøã°PìMc¯’xs­zqfèu£¾e?½X¾x$-¬ä­)êuªMÕÕ}è/½è~Mšiñ$k¡¶v®¾Bj7´@õŠÞ¦¶ Ë2VQ½cXÞ$å§§irg–k«¸†P–÷ö-ÁÅÒ¤§X´9SÖÅlŸ×t32ÑÙ^´zþfYõ Ð4±X·gX½?9Tc±¼!ã«ßèh¬ªî•n¬j‹ÚffÊh‘¬5sbdÊ}¤×x忸QËu^•±%Ÿ˜ „t9ç\ì5ÁœªmuW¯vcxGz&¸(¤ ÈX{œ.2Ç4CóÔsæ€e®vs› ^ß÷ñ%ó nÅâ3† 1¤!÷"i—)¯€`À,_zöŠ9p´G$åIž>;™¹ ÆkÂÕëvÎDƒ±‘ÛöÍv‡Gs9(éå×VÒ‡%`HàˆýZƒ?Æ[ð‘Ó_Å¥øDõÚøò5ŠñäÊü v—ÒZ×¼{ ÁX,yPRéﺓ*§gLi®0@7}»M—M­REX¶œÀÇܦ~âk™†}çCª§ý^æÕ#Ôõ¡>°h¿ÓõËl±ùR´'àEÖñèªo9ü¥< _²®ñ°Å»|é…¼a$Ÿ¦P×ÈÙ·«ÿŠ˜endstream endobj 849 0 obj 3650 endobj 853 0 obj <> stream xœí[Yo¹~ääi§VÖbx¯ò,Ö»Éb=ìƒcÖØ:b^egÿ}ªH6»ØÃIö±€À¢9Å"ùÕÝ]ýëR µ”ô¯ü]].þôS0ËÓõ"M/Õò»:z½øu¡Êd!_þõˆVÀR)­UË£“…*ôÊá_ºEÄ¿G—‹gÃχ¸™'ÍðÛò* OÙôùÁ¡qNèÃ?hZ«`eÖH-ƒJÅáÍK«¤50ܽ¸òûÄE{‡³/\‡‘Ë qθáv2‚ «4„çG§û8~-0‘nuôoð=CÔ’Xh'‚±~¸y›N 2zMÀÓ"n~h´Aªá/´w;&dãÓñ”^†á÷t&¯œ¼.®£[i܆x[£µ-ÄÖi^…ÖÂðQà­¤'lˆs”JÎ:иÂp˜È ^Þ–C„Øò® o^å}\°ùî ¨ñîïþrZÇÊîH°~}´øq¡PÂòýuˤàÜååÂjm„²uæbñóV}‹v§¾Y#‚/úv4!z–n­hG ¤ †cyRAƒ©DQ¼ë$09¼Ï«bµb´×4[JK2©2÷ÐaXŸ±ùÌœA~\܉Øûa“Öá‰ÙÞI” ¼D5¿ÎÓ)Ú½§ãý.ÏK¤>íùl¤‚ÉÀJ늗™9ÊpvßJ}™db°å¶Ñù„ƒ²ÂNú“Žw8I*ˆbSœõ »å%+aäH¬‡1qsZ7Wg÷Z’¨çŠðÍ·ÒœÃIžÊ!¾¤¯@€s£ÙŸ±Ë%ä"ê/߀)R–Zî;‰šŠ˜ŽÜ•A F}O›¬úg¿è‚yÌôyã¢ÆÅáuv!8æß²e\Ø|ï¢a£æ’¼î«ÉZT’jè€îí<[æOßTƒ·¨+Â3øq† ©¢ "ôÿžˆêDÄ •hpB'ψ¦™‰j\è:rNŽÜV¢™BÜ6G£UÄ)eœyDÕ!süBv4„°Æh*c^OCÔa‹@+ŸBY™eËVDà¡{ΗÕá›._¶ÛÛÂìðÇ:[EReQñªà4˜tFÀl´Â[†`YÕÈ¢ÍysNÝ…aŒhQ€ýˆÂ&7”EñĈA7ßiˆF‡öût"`H_ugßNÃWÓðëixÑ%¸ìÎ^uùþs˜Æ˜†_MÃoºOðF&¥M|ömW5Ø^tÏsz×fë È%(vƒûèܨê„Öü ÊÉ;¦)yQ£q•fÆ™óÁ`‰>Šñ¡EÁîGã´1{wpˆ‘sÅÕ쨋ãº+*¦’·]ù¬ºË˜X¯»Ë¸n5vñ@±U(,Gx1˜x]ΰ¼eÄHj3Þ·wá}§æ_<è+ªsa0è!ª ŒfÐÓ*¬cö= …Æ1Êõ€ÿÌœÀi0-èŒú 1‡ŸL«`?Ê È3þŒáûG‰a…§AZ-t@y/ð¬âž{"šóæœ,x˜Z]6¬AïG3(âª+ {ûNƒ »´L\¯»¾¦ŸÂ]ö%·ê®cQå¤;<ïr8ïrèç&X—*‹â‘.ÃÈé8<ëîöœg÷P©*ãF5ŠG¹ïÐt˜"”U¥ðxhX /õ¨ =Xú2ÿ×]d?m<íʼ¯aë’daùÛGþÛ®53!Üϰ+Às¹p)`•Qiì§Œ¼¥‚°!„U7wï[B¿J:ïûª+Æ“.ßYæýð®P6€&s%­0¬èW5Ž´Íy3N&:ômŒ-‚ý] =1È‚;žDÄÔõsó£ý=Ö]•éWéû ÎÞAH6n´pNm±ñwì]«àu¦Ð2Á€0¬Ð*‹>η"OÜ™{¬aìÿñË{ÍÞã×„Þ sް‹S †0-‚,A+ÄÞˆhgôZw5â¶»Eÿnt“, BSÃëŒ0¬ WíÃazö-íè0Y¤;~(Þʹ8Þ Ñ8YášVk"ÝDÔð†¦€3:b‘ÅJ†qÕ^$gð*²p/þê>m¨{RŒágx¨{®ú0W#®4Ê:Œ Lihø=ùg…,úÜCàûǸÂ× M-o$þdX:®ÚÆÒ -ýã ‚}`gx×=Ã> zpÀ¬‚›Ë›IW‡`EdzZY ·KÊäœÝî# ˜/ˆ÷e#-Þ(Érv\…íÛ‘‰ˆñ®Tã»X¤úmz;ÎÜOv»Û0´–¢¤:¿%¬u©p‡±+!½†æ¯ú×o3‰Šjìh( éåóUû^H™¢iz$Îæ$xãø«töŽûjK{Ã~“yD[OÂò“Œ»Ûö>M‡Ä4Ý4W¤JÇÓõÞxïì0‚†XG‘¢Y-tØÕÙAëŒ¥Æ d!¨ÔUšˆÞäfCs¢u^ð†mëDÚîÔQ0f8VêÓiú–-¼Ì­Ö‡¡¼´b´NEÔ¡Ù»žS%jÀ+grDSœÏ-…ë¡B÷PZ0x{æ!£pÖ¤;:@™»¤‰˜ uVXçx_¥2’:^zëª(sP»àãÎä²%?ç*”¢7Ôf±dÜÚY’|°³£JÌdÄOÄ›EζXÏMÙ=Îm-A–ÚÉÒPâµ¾šÐ»oLÚo£Æ¢F¾žÄÿ”¼r.ìè2G~³ét¡[”j¨áßµõˆßmUÚ…¼ðÚŽ:Ê!‡Á¢¿pPÚÑ êàUê¼K˜ À¬BÕ-ýA™]«œ;Ž•z{Úc5"ÒÔƒüüÔsF/ßëiކ׽Êäè†õV¤m$J®¯B¥½24qCP~nÅZ¯óXIS:Í&ïTÇçl|Áè_Mó5âRG&j©èÕU |˜` N˜:³«ëpvì1ÅEzOĘêŸl¹Ã ›¿lÏ7¦ôLÜêæP¸…1Y–®¯ºÛHJ(Ž-öºá¦>Ú*2fKmüjb ÛÉP,6iõ©4Ø€–þE¦PfÞ>8o—¬Mu¤ÊíèñKJwÅâ!íÜÜkxM6§0EÌ6[›Ûáî1ÿšGÈÝ¡<c:áËûÖ箟dOdõΨ‘¶o³§Ž_Nó<¦rú¦X’¤Žc:c÷Öø9q)G×ÊrW?Sœt¹ð18xdöþN—[lõêlDu ¨”,ŒÀ„¥ðwCµ‡´ô~âe›S\”ì%PTm™ t=r޳VÔQu{þòpä—ÕÔž·Þ(4þgÅæ¿dó_n¡¿fó7l|‡¿²èr$ÖŠå’ò3:¤Íì¹ï"P´^™Î¬‹³îÖ¾À7U3)ð†mÙOø×ÛrÒS¼ŽQ¾ä±ÐQbŽŒ“˜7¢¤o¹íl© N3¹ÇËÿ )Piaæ×ÜLc'Ï\rÀ„ :?:¨l©")a™7§,×R%ãñ'§1áÈñKMÇMì®uë}¿ Ù²'V›Ž>a{>Ï·„¶X\¦gªqO•,übb=/w’ &™*4}Ó‚IK²ÁÚ¾Ík0VL ;‰,Ûæ~îÚuеíëÿéóØ̹öx»‹‡6ͧܯÍZ÷‘ ’ÜWñujqù“Ÿ2ýK:VT¸=³‡oˆÕ˵g•ÝÞ4Ü,<fh„vnCÅͧPqÊߥwí¦Ï (^ïúâ"ÉJóìmžT!VXI¨@bB§·"å?‰3HÍyqŽTµM %@’è[%f§ëë UPºyòÂöä%«oØš<¶9/ìÂvêùK »‘<òŒñÅŸDõºôx¯ù÷(4ëûOUƘH`àïù HÌîfÁ¯ìšãqçÕý6¯º¥ZhÊ“|Øò[>*ÌÓ,6WIðÓò}污 `8TŸönJ~8¶ýV’YûØïN›®ˆÕŽ}Æg Ö×/w™ãb2Ÿãþñ¦:=!©h¯V?ìû¡­îþ~¨óùÐü;ÁÔ¢9öŸ§GÕãÌÿ¤·r˜/,1„CðjÃ˱¡Ûtx?.þ ,Ðendstream endobj 854 0 obj 3061 endobj 861 0 obj <> stream xœ­ZKs·¾o¥ò|Úã0ÖNÐxê'vE¶“XfNN*%‰¤$‹+Ê$õú÷ùÀÌ4fgVT¤òÁ£ÞF£Ñ¯»þ¶U=mÿWÿÿd¿ùãÃh¶Oo6™¼¥í÷ã׋ÍoªÿP•}ûçS^a·D}r޶§ªü1öÉ„´õ1õɇíé~óK÷óÉ›çµíÞŸàÓh­c÷m![¯L÷üdg¼ïu´Ý¿˜¬):•ºp«"QêΙ®)glw]ùCê~Ìbtð ?¿Ž1yÓ½äOÐŒï^çOmÉI†K|GÚÆÿœ>àyy ­Loëô Gø‘™mÒÊC„ö}4.t×·YU«RÐ|¨g!Ü&l¾3ÚõQQ÷5¯Ä.6`ÇÌ1!«G!»/X§@^YœëB¯ŒÆ6,ÛÁT®2ï}wƾwÎvß3‡±¤L€qXrRDFrKw™‡ A)kcªÜÙ7g“N×çåɘröl¨áìØðúlZ'Ugd³þõtóÓ† qûv»÷%8¬‡q·û Áö0ü@¹Üü|4àùŀs¦¡\bkèdµw]ÏÖµ‘‚ïüÉŽH©ÞÚîÖÞ™èSwU˜L´Ï¡D–§öÎDtÚîÈ_l*<§ÙךÐBT ªËL×J*N‘r$’CÔ’¢ŸH“ËðzWä´>w Kì訡ž—z…v¢žMŽ=à©G¸9´}T¾Qv%ôžòþv=M”‹4ê× e£—6iãg$?nr+S#kÇEµT0«›?}œ³Ü>ÒÝì:ì½ã8ˆ†%dÄÁ\ÜU@¥Y,¡w(êúÜp¿ ÷ÜŸðôhØ£{J“€ûMÔÔÁ÷$c¶Ÿéƒ5¿G³Þc„\pŸ,ƒÖMØ¥Aû‘¹ä*ê®Kf–¬OD©~•©øJÕk‘з+ÙsVÚaô¸+8ü‚¡ÞZ¥ç:æØBàÒ²>ünì„ö¨ $:áÂpL(Ši]sM—›™ +5ðWpM”‰k\©oÆ7²°®´ÞÓü·Ú„Ç¥©/¡º uÝbHÀ\iÂÿèÔzîºþ4}>(C  >–¹.TKåD¿ôÇ‚þ\ÐK¾Ô¾ß%Î ×hÿÑð£iF34æK3[9‡•¶âeÖµv¹á•kô4ÆVd°ôt¥ÜÑðG§k]¯”;:ý„ÿoúizñÅ.ýpÊÍtógôì¢ÜJÓÐT[îÒöåwå³?ùb bÒé¾ËŠ 3·ZöñbA½ƒS™Ïø†À,ÎB=¾¨f Iv&_ Ä2“Ú° ¢jPo êr×?œþ°9ýÃ/Ý×¢°¬! ªŒõ¼,1¸,v²éz)xkp&?e‰±Žt‡{í- ‰OéîTâž sA£É«¢¬Ñ3!¼‰‡vßL­°Àp”âSÖó¦ús¯ì´”ŽY^”ç®b]ù¬ÑÌ*LeæÃfº¶Êù@AùY#Áë(ùc]L^ˆîúšà¹Ûã/Øæ}Vf0Üd°$Væ¬Y-š-Yù®O8¬80ƒ‹®hZj äŠ&eÙ¥V¥º:† +‹Zz5¨ý¦”.kÑ÷x¼·ðˆ[²Å<ù¼RRœµnÎæ›Ž_§„›HÜ–ðEŽé ˜ÃùYOP¶¶©©êbÝÍÍÌfEJëäIízØVºäúèâà™'¢]‰k¸½ ¿ß²r]6×v‡µÊèˆÆÎoMRœÌ¨p’éµ)GoÉ 4$ÝKè}Ð¥N\¬âZÐ÷­‚¸Çí¦öã&ââ…Ü=5›§ófe¶?ÀÙ!ÍÊFjA)ƒ„ê¾Ì73ðhJò;'Xx¾?ÚTŽÓívs‡5{m®YkG…µjÊÒÁL ÆiÉÌ“8C¥&ö+oJß,Q÷Oqý~‚Û…D_¸‘`yÖ·‰ünYÈš?o„ÞsáˆPŒMUªöözD<Ù¸ÏoG–Ü »6Â_U( «Ržè¦¨h’;°=qì¯]7€7˜«ü#ks¸ÜPRò7æäž&õÞ¤•íKq¨›·q½ÐL ¥Ì;G®Ðr¼ËÀß &sNx»x-P“f\ør%—¬7¿//!&Ú Èt76=} ‚ˆ[, ¥aº,}-ÐóB ª,_­|K~9- 2ó,!2&>à×a7¯… jѤÔb’°iS4Û{±vŽÆÀQèƒ|Ê(rÂpÉA \\P›Ajâš(׸R1ü˜FÖÁŸc‚Eôõv(u>Õ\¤þ+F̵Yu/è Õ?Ó/Å·¨þd{c‚–ÓògØiÞg 'ùØ€k¦î¼@Žïw›º'ß5>¯¾›Ñô^Ëø¬”»EËìFk6vkt·­ZŽ–•+â¶IFŒaÜõŸÒ$³ˆäÑ&YkÆ1=k’óÖº½îš7ÆP¶iž6Ú*'!Ëàò${Y“ÆúôísÀaßîUˆ3(ÓÍŸWö ZÞ-ÍM™£þ¹•MM\y±=P¢ƒ™Ï‰y’ óÊÆZ4Uòη-[EÜá>´KtôÕµþ—…ÃãRJ{vQÖ,Ʊð‰ãX.„”BøÁlpËKyê9WøÆ® &”<ßž ”c·gËq E߯ùñð:¸µºw8LÍÿ,‹ð!ÊÇ«¬!À긅h•iò‹ø ‡Uç§Íÿé.²¢endstream endobj 862 0 obj 2915 endobj 866 0 obj <> stream xœÝ[K·¾oü r$—žXÓáûa GˆÄ1ÛëS’ge+ÚÙ]íÌJ‚ü÷T‘ìf‘M¶VZéè°‡,‹_=É~µa#ß0ü—þþx8ûý·Nn~:ž…î ß|5·^ž½:ãé?, ßüñg¨ ç£×šoΟŸñ4žK9Zc7ÆùÑÃßóÃÙ?†ï¶;XÌ*Ãäðv MÉ-wÃÒýb»“ƌ©á{ìÜiæ‡#ŒfÎ:ÎýpýLs¦¥nq¼aæ×аzŸÂpá¼*WØ„>i†»Ü$.¡)5Êýóü/¸C÷#˜¥Ç]ïa_ã`åCÂŒNj;Üž§Šy+pÀÎ)‹ï¤Ð£c|øgÂ*ÊŠa±=n½enø5òd¹a ¶ ópW–AÚZ ¡Ó`m„ö8ÂŒZ«á+»beƒ”=ã\RÒ‘AiœsÃ. —°y˜RÊù’ö<ñö"®cœŽ{‚šö.aïû<²JöˆbýÓùÙ7g à6oÎv ØP„»9œi!äÈõÜsyöÝ*Þ,àBë&Þ´Mxó( á6ÈÒU2;¸íŽsÆF¥†¿Ð8g¸np'† ÍA^Âd:Pg=þpM(^åñǰs!ŒòD^SI‡Gï7ç=;ÿ]Rɹ¦8°×[8s¥´,zo‹ Ð°Ušé"áùèŒ L¥ÞBú'Z ñb;«}G3Å4nAx1rfé*¿Š:¨/eêÇmVÁSœ)„+–ü™¿ˆÌ ï‡7¸IiGA þ6ÐL Ï á9åó–=ÄãðN+Þaš¿ˆ#˜2‘çÄ?!^¼!L™]æ&•Â>ŽJýr£1|] À‹.×$¼OQP —7Ø4\ƒÔ°ˆ fÅÊÉ.u„E9yJÏÔ×¢1˜ÎÄó š?ÆË“lHžàÌÅO35äf7±³ã ¬|äª!ˆú²¨$X”—?“Í3 ÇˆÑ‚%ƒŸÇ^… ùv;ÛÄ.Á˜•t‹×T“æ5Šå€˜•1´7IÎäT€,³öÓâ$à0•þ½ô×fÆW‹Ûó &¯òîîÉ"{‚»Û6 (” e{:)#KüäÑûÈ8‰Äx09Ñ Py_®"¼-؃ÙíÞuæö:°/ô¯°ªÈ6x.ªhÑü€¢©„êÈEDµ–‘Â,5·7D(=Håõ ‘g„HÇÐŒÛ:6ù‡ì.Æ!ÝO;$EÊ—Ûòø‘ÏÒ¬ˆ\A. #9βö㈜ñQ¾ù+²ß»¥B{OÚÿ"ã¯Iÿír|sÑS$6£k¤ÞW´Yj…°ma(”óe šÃ,ù04stóVqPsžÐüßûh`f§Ø…,á`œ„\ðŒ³œ-Œ[TÐvåî5dÃŽîg©î>7¥À8mþi¶DÄ(=!&¬˜ÐOü[ÒOÑsCPC²ôÃH~—ý–Ä*ÔRš§Ž¡ã¯ÈøÙºÛH}îžó¨š¹@‡*Q%=„ U8ËW¨š´}‰*¡BqéPÖUbC‘JJ¿]7@ãö^2™™,ö¦K™ppšÊDhˆ`*™Ìƒ2í<*M”¬:£2ÁYæãÈËgÒ®iÚc"j¿/I?õiÏ:ã©Ë|IúŸÜÃöSMž´tU3©ö¢–2‘©ø¿ÕÒ ‘YF”8’d…I¼ä<¦ Ìg<†0ZzÐ$AÃè©çžˆ\­üJŸÀs­V~}®ü>Æê-’TcÁÌŠH¤S¤\Ô€/éŠ_bE˜ƒi ÞK ñ:C*ƒi7f"œ‹P™i“2r(8!§˜·Y/Ò.A÷ÊÎLÎeçó­ƒ°ËÅÌV8ù‹.+Ê­zçu¨ÒÈߤY¹¼ÓÂ^±ºWzùŒdm4Õ¯’<á ¢‘Ž–„ï–3uZX¹wÕ{*/àž˜åS6^ÒŽ-¶”©zF.õÇ©;"GÖò÷.XÓ*Y§ò»”N(9¬Ü  t‡Ã ©F KŒNÑ‚VIeZ—Ǹ úDj3±_û"ly{¿]{Lx=†xc'”½ªþÒXèù×qÞÝPxX© ÅŽ±×Ç{²Lï®tÅ/{1p_ò=èíÝŸ¶ŒÞÈjèMxµ¼ðÃNæ#¸%ià˜Ú¡hz„"D+þ™î¤$ü£ØÈ1.‚™Yä†F¾é¹G6R½:Îø2ѵª¾§ÃûNcªè:ðÃúö»2 nzV—ôH×êõH†h-Ky±„Y#üáð}$ÃËWõ­sb´¼uN˺ÅU`ÐÆ¹^!J؉®—ÿafçâpzo&<Å{>=Ê÷r(Xzç´õû'¸ETƒà Y¨ã;RËŘc¤¢Yx°*ù,³z¢ÁÐET7™ïz4Ò}v)Н.t—ÞÊ@f•ŸN¬GæÃ¹÷‹æXBáªIáÔtÏ×­i-?f,ÄVvâo¼ F÷Í"ô gR$Ëx//þŽ‚wLô^Y\Å\_ñÒiK™ºÈ¤— TVƒ‰Je‚Váú^`!¶ýé=Û4³‰ª%õŒ±¾Îç÷4÷^ææ]= 4 Q™€ˆo»Ã’ ‚¨L#1›z> *˜£! H÷DŒÊöM$>Ϩý€P¬ aŽY4| F=…*¿ê[ð‡÷e©¢pc`´…WG’é‡k=Ñ䫪w¡õ­ðÛc‹œ³bXæ9g ¥åâ˜óÒ šuxhö^Õû˜R½EÍ!Žu“XkÇú‚.#¥åY¹ŒòB°v×63¥g”­Y{ U½éa /Í+kÒs“Ë7Š «FŒI_£sÌ&ê×–’ã«Ï"ÜX¥W>›­ëƒ‡HP³Åkµ´ÌÚk5Ž™Ï'©#iÈ«ð¢Üê‹g0I£®,¦ÇPµï¦.#i × fêwÉj‚LY «ÇêíîF±1XLrz‰ Ê ìlÚŽ7YÕ3^xS”š‡[hz%«yM¶‰òŒsoD}â­Œ”; áµÀôi ÒôûŘaiþÎdŽÂo^Ù.£~Äj§>AUŸ´F‚R-Þª)ƒÞ[\Ï=â­]$‹INFöÉþN*X^ëÙVù¼ÄÈ¡BËÃy~’¯ð¸5o%²˜U ·Úæ¢X„ àÿ·Sþ¸üF#SFžd Á@Ø}¿’L_P”’9>Äû®ðæ;åú ‘å£Ë¬³Àçè™Úìæ4o]gñÚÇ«¡ó¶•x2ª°4Y^7_~©ÒT?‹•Q3;~Õ¥^Z}ï–wa2?g/1)±ÉK„ÔIJ‹í›Äêð Ø×þÇ48€kQ¤OØ÷WýªòdÕj\îìÊ'Ñô0ª‹›üI_«îØË÷q?ømQ.¤¼÷%N- 5J/–ñxôHe<–·ªqÓ7=ОV €UøÕ‘%ËR‰¢ˆ±<¡É{‡áZ6bþà’jëÌð÷05~|H.«3ÃÁT_¥À:ÎÚúû¥ÔÙ½¾ìXJÌõÁ\‡5¥¸çfõïáA\`ÜË{!¾.¡lž®ó½,õEëm]V@yk7 ²—ÛC,.1û8ØC‰ >ÇÕ„Óþyd‡änˆÓ,~&0Y˜Å}q\aq§'•P¼Ï§);©ü(´¹'@‰@G|U¥Bõxiôk[Ð4Íž¡×óeÉ"Øã_ró&›æÛV Do¬I³8èÅ`7ùÇL ÔÚå'™‘L$ÄYšëÃï.{Âç;º„ó5Iýå²À•¨Ó' k.UN¢(éO!]¿ä¿ô¡øqÈiZѼW@0CÀâWÑQh¨"wð[~hvÆŒ\Þ5?7Óáa2y~6õ¬E¹Õ›…é"#üíÆy8{›^²ó,vÒtssæì›³ÿ¶S ¶endstream endobj 867 0 obj 3884 endobj 871 0 obj <> stream xœÕ[I\·¾÷OÈ©¡CðÆÑPÜ—>Ä †XžœÃg$Yñ,r·–™ùï©"ùÈâk¾^Ô=D±«Šµ|U,V·~]r&–ÿä¿/oÏž{µ|³^Äí¥X~SV¿,~]ˆüžÉ—_] ‡^ Á‚1byñz!2½÷,(–Ö¬[^Ü,^ ߟÃaÎX©‡‡3X*)¥þœ¶µåjx{v®¬eÒëáï¸-…7< k æÞy!Âð ÷¹Ü(=¬2½ ÷QŒt¶_½ô>X5Üâö”>Ä¥ÔÂP‚kX*#¤ö?\ü ²Ô ÉSͺ¸¾Eb$· BZæ•qÃê}TUóà$Zêi®~®¤až‹áÈ §h'Fã¢zÂÇýðÔÉ Ë5Ø |Žq%á”mÀU&;kíp…–£‡oBiÁ•ç äÀ…P”š*xÉÁ1*¥µ™:Ææªê´z•,J%Û££FÛáÀÕU壪Ñ­__,¾[À‚_~Z€ßY‡¶àÜåÍB;§8~ܹ^|? ¸`¶Î(æ]\Œ²6b´^ˆv§ÜDí¼—W¥ãÌx‘\&´ã§»´íe?á’i.4wì¾ÌÆ ÏŒfΡ§#Æ2”ßÖe/^[5•êmGÓ(e}–ž5™EøªAø9pCÍ·½ŒÌPŽ$BøaM¤´µH³joà bÿG•&ž¹ÒåQc¼~Š)äÃ?ûÅÄs4§ÀLåLUÛj3ü’dÔ*Ó+ÉÙaRe¦~/Õ] íÅœi-R±(;Ý&ú'>Þ%V[×ðˆo,?v„÷]â±ÎÄ\Æ¥KZd'hMžPHõ Å/ ²¹1–Ó©ÊF(Ÿ« ™ƒIA¸YÃ7êAÂ}bU˜NÜ5RÐ^€åÁ€Ô$+ï­éܘ/ý~£¹k¡ŒXcðƒ~‘MUžÎŸ=R÷‘ìm³çå„BA'¤&=WÒÊÓh¬ICÎ#7ÐÌÕ$K<‘µ¿½7P¶·S.#–€šÌ˜ ¾‘A$t‚kõLÓ‘ ›Ieب|/d7Â|6Ûrç)<ÚJ ¥Z+³Q T{þ‹Cñ†ƒ<³Z_ņGñ`Ú暢@ àJ„~5ê¥hÚN€ÎíÝ›Hør&ª›7KÓ¯Æ\ Z¼Ê§ÀÓíoä÷Pvb!s×Õj{K—+i¤VпËhˆ–šŠÛmñßF_˜Ëqj2ÀõP3pß$‚T© ÃR«Gí1rƒ‘´h âÚ`´Öã[Ù‹ÔÂRCUËECZiŽ(͵ñì¹a‰i5¾N½ÆQFyCܜŮM"T°^‚#Êîª.ßV‚û²›i_ÀÐÚ*§<)*q0À§yPôÏ£ qÚVüó«¶ÒÑf„`g¦¢íÊ›„æÐy_Õ>¢N{Šì™ª3} ¡^ly`G ã÷KÄZ¤XI‘2ÞÐðáòÓ"Í#žÿ¥Œ9Œ6^h2æwpÌჀ« ÷$TuÇà‘ 8%óšPÕJU8,Ì5¢ÕáÞÜ„A³ÐŒXà²Uø‘Ñpqà∳OB×/xa -JJ¾´„ä3àL…g]w_×å%x¥æ›od+Ëw]¹ä´÷éoSééÐFN»®ËWuùcWßuyK­ êôޏë²=EÕ&ÚRïø8‘ÒÂAÉÊZ¿«à= -l±»XD‹Ô…ôgññpñTñž68̧þÌ|§ñ'NT¬:ÊŸŸÙƒP¶†ßŽs&IÙRíLUò0Ý÷ˆNñû4^Mtð›µ&8ø£~ä(½”Cx;9ᛞu»Ò£:ÄŠ¢NQQx8’>¶2Ûq: ¼€A–Œ¿ øß$hï¶þ²{õ“\Ý· ÀÆìáóäniR§ù¯Ï“+»rÿ°R &Øi®d†>ñ 1s"¨pϬ·ýgÞasq,ƒÁÝ áî9ã^¾-n#Þ.n])þĦICä;òµ;úVx²Yó¾»|{Ð$ù !ï>ίnmÂѾÚ%ε 5Œl§q>þs³‹=Þ÷r—ïoÀ¾—ï‹[§ÑhœoU`œŽL"Ÿ=rdRœo6ûÞW‡T•ßBìÜâ¶ÆÝ¶ËH½ƒ¡s™‘ï$‰4ši™ç2ÿÙGë¢ÏÔŽFke=ãt„ùì‘#„qŠ&5þ”Ø5Zãm/·Õ“¬œ > stream xœµYY5~¿a{P¦c—]>xÄÉ"€‡%›Äî,ìl®O•îr“!å!^]e—¿úêè¿·ª×[ÅÿÊÿOo6³}qܤé­Þ~=ŒþÜü½ÑåU–o?½àv ¶÷ÁëíÅó.ëCè£ñq‹zúéfós÷ÙnOÊ\´ºßw44:Ó]ò´2u°Ý_yÞFÝÝÓPY0±{–¶‚Å躻ÝÞ8×;o:¶ë†N‰?~½øjãtï‡íÅ7›‹î>M"´´UªåIþH(Ô±;Œ'¹Ê1–3éà”•Ÿå¤»{Â+À:0¡{›ÆÚ9Ró…˜ÿ#/÷hÚ¨Á¸î–G$肬$‚õ®»ÉKmc¼Û|StQy^ÁæsÖ¨æ—1ôSì®óZ9_/ï”·R›ìáãˆ[­ûˆ˜ž“4úPMøEÚiBpØ}Éšœ5ºŸ¥y«#½ÔçI“%™¾ûd· „×]Ðrð:ÛV~ G‡¤iPÅîÈ‹MbìžîÀ“¼få%¯´¨ÐÓ%Ó4X2÷}Ví”æWH—QšÆwY5ZS¥¤åBJѧiö VÜŽ+îó £ û†¾·JÛF‹²Fºc÷RÈû«ì4–a´trÉ”RàÕ(ðùŽ7:4Zž/ÝÑö ]•áYM¹¯² ù­Ó%Éìò’RÍëòHŠ7Ji— w'+O꿟JA£"ñ°cˆCŒ`,±ÄÅqÂSß𬊺}:®!8 [¸‘|Á‰µêV³¯zöÚö–ΛÕ=)ˆ"r"4ƒë£wŽ|k¸_?܉¥Ð½©øÏ ­ñˆÃžØð?1;¿Ò¡{1îê^±‹Á5ÛŽ… u³CžÕ.†h¨ì'昪ð#Ïå£Ô;Áqžè¨ñçYLN`“m¥|s¥Lg!´º)-¿^V߬oý‘^ÏGׂsîwiZàvn²µ›=o¸ˆ¦òô ¬Ïºœu¾œ1„0wš‘U ˆ[bãXWÙ– ‰" Q{KUxör Ö7®„odñJ°$Ø‚äzÑb…í4ú%D%€3:ùÖÚLÐ9xÉU^¸$Ÿ);¦DbÜ()N¼èSq’¬Ò«˜b¢ì½m û¸æ Ǽ>††È_Šº[F”<Ö‹¢ÔèFŠÔ)Ùîe³u°Ö2–Ï(ÇJi?î‚î]ʉ¬‹½'Ø%!ÉKÝ.?˜P&`ñ6 ´ çexÆñÚBvãÓåÌ,Þ·½Êªè¯Õ&°&Bʼngbö}YGi® ÄØù-û~Þ×ÐûåÌ?¦‡»ËÛ(ZüÒ uó|‹ b†| (4¶éÖp—Ç»Aˆ\!Êù•åß&*sÄ1ÐÌÿ²k e ‘Œ©·fNáGò±WDœÕ`>Œ&IIóЈđfpµi$½Î"h×’ñ|°ö3ž£ðe=åâ®Ïæó”šO~`ûñ‘)›_Ë,W3>î½ ôK‹5™ŸQ™@¦ T5޶–ÀžåÃQìö¨}"²cÑF!­ÒtcT\ÒÐ…•ЦáÎÌè¹ cL1*PR?ªZÂ’K&P¬æ󨟨ídŒ¨Ø2Œn×ðÝíLÜ{åÃݰ‰˜Ñ¨m¨¿\Æò¤ÕTíÌÛ‚®1¯|ì´5e-42×!>’t®öæ Piš­ q½È.qÚªí°ŒÌÓ·¤<¦üKQ)à‡’Cꓵ—!(*ˆómï\S…L|2­Ûx“Ôø¡Hâ+kfµL¹@›¯I$W/r·…ÄKη9Aêâ3ƒFä²mtÔ•Ï5o„HÈÇNå1#1 ±AïéÝ^k¥ètÄt4«YãM¶"%ÅÉ^Œñ…æÉ´Ó¹]áTt¥A|Ô¹2 ¸L~U_ɼ¹9óBLç~†Ç€¹gãT‘Qgï²v]i*%P¹¤txÈ 3ªL‰A ÙRÒ° z©gbBŒz&µ¦µn¨î‘,ϯÇI®V¡‰k5É$›}(¦›Ä›±‹Ï«Ó’rnLM ¨\X·‰SÊ‹•žPÓÂÚt9‰p¸ ¦}‚j/Ài©žê-ÃÚZ†ùL¡|ŒΟxs.¸4ûÊîo‹‚©Ud:µ¬"uaä[Vêê^ʼP~Ý'sº…‡ŒŽ¹êG"ÑÏá7çN ÕC+™H±$¶½ÎÛ¬³S“Ò¬G<¢i 9 …Hq¤¬eg‡T~¯ÂjA:¦¶ðå«-“¼×i¬™ì71ÿRŒ¯WÖK9ÏÆ1Ÿàó‹Í÷nÐm_o xæ—­¦t¦‡íÍ")Sÿ¾ÞŽ$å§ÊÅ$Ã-õ«aïóšàO5¬Há’£LáÔ–)à(8(· geÏ{GÂÁRTB¿ÊGÕ0ý0°pyœ ›íÝû.óˆ@HLÖ¸ÙU ŸÉüpM Y[/.÷22 ¥Î‹Ø)}&㽜­üSAÕ+φrgͪ8¦÷ÿ3ìWyM—ë»ÜW2‘`¤Æsp‡)eøî„¤xú ×"Ƭåäò¬ɨ)×O¿•,z5˜>|¬‘™¨HcSôˆå#;XJS4ôèM›0×:w@¿‚K sî‚ó¢÷ø¬Í¦ÃñKoÂDííÚ¡V™v*[–IÆÕá]Ï4d§†kÀžÐº‡H9ê| =*‚q8Îé÷›÷7endstream endobj 878 0 obj 2362 endobj 882 0 obj <> stream xœí\M“5¾ÏOà4'ª7°ËßÅ H°œE-™$oêÝ O¶øóHî/iº=30Þ°Téu$ÙÖóH–Üým­ZX+úÓÿýàruûÛhÖŸ¯òðÖ_Oÿ_ý¶‚þÕ‹¯?=# »h“s°>{´‚^ŒiƒkS›ðï³ËÕý滓Sœ,X¯Lsu‚Äæ 6üääÔxßêh›ïiXCt*5ÏQZÅRóÆ•åŒmž‘|hQó^¶¢ƒÇÑs×1%´ò”qÌøæåôÈ.ðÑ8Ð6þxö%íÇóýheZ“hWgÜÁ=¶I+2¡} ͳy¥V¥ i¸:«c´ '?5ÚµQAó iâ,6àŒYÍ„¼<)¨Ø¼Gk à•Åí¢íJã4dÛ­]/켶͆$|ëœm¾" Ü• 䲜€á¦»clN³¸ÁÍ»~QÖÆ$mŠÏvóøèº½gG {7¸÷ͤǗÊöHnýülõÍ qýz…Ümæ†õèÜõåÊimZpãÈÅ껕EŒQ¸£Ó·w'-gU¹R7@:(“ZQ±dx08à³ ªò„ M#“Ô h¼m­å–P+u³MQRŒ¸¡¿ö¸ìL¯:µr±ù…ú„#æL«tó€>dÒlü‚ÿÄÆ{‹  ±o’y!h4É·Ÿež°ñG…ç§LþaÁæó¼¯çœ­ásÿäç{óñ,ÿuaï™LÉ?O ò|__°¸ü¼°6(Œköü³sç„‚ÏhJžnÈaw&á14Ç(ca$¾ˆ—$ãLSH³à蕎 Ìæ ÚÆL c/¹_fã/ qpÎü½ÀñÎ%Ž!çVŽÿ Ú°à /ç›Éò…EÜ <Â@Ê4ü!eÛbvRŸiê[a™“ŠŠK‹Ìª ‹ä^‰GCK¤»Õ/O…Å|Ùñµ_LðÀ­¼–;=€¼/·Ù̹«‚k­cäÍJé(òj,]ŒÅÔŽÿcŸÚ@„{þSå&ïžòÌÅü9˼OÓÂŒCü(XPí¨~ÒãæÒßü@G°$ĉ#ê’'©¸#sQwP»ZkúTôÇ”ZÊëí—"–ïý\ˆT½Më%•VG?°©µÞ¬]¤Hìéw›åÂÛC|Éâ—9fyœ§³Í%Ĺdñ¾ã{‡ÿFïpî<æ­nâYɉøàA°òMÁU/ÙøB^ª3ʋںæw6¬¦„ýñrº<$îÚB¸/àɧىÄK¤€#Çå‘~Aš(òˆMصDžG²RÉ¿Ñ srÍ%›7$šGà_´ˆfˆØhͤêD3$,ž\åhÞsõ÷·¢¹dóFó…@0ˆh†€E`ÑœµLh†€¥€zÛ¢¹ÖÙ\²ù&£y˜¬ûdO¶ÐåçR;tÐ=åÄ&AB#S}–nXŠÈZ±NSTz¨Ù•l}8±¯+9eh96¾‡ç7b²=œÌ ;nÈiX˦¸æÞÃó_1íæy¦öJŽl$•ÿ[èk‡%{­*Y©é¡Ï‚<«Ý¸,øßëP&à·ùÂÙAWÛ†} ™µb¨Ãƒ%w€7ÃŽw]ÏFx+¢x£àMy† -[)Ch,ËôÊÿáZ¹|$m¦£¤b54rFP­'ÍðK&ò ¿(žÃÿÃËŸˆ #¤W¢XrK£þ]»°ŽÈ´8¤ _Ø`r¡ÑKã–¾Yý ͆hendstream endobj 883 0 obj 2307 endobj 887 0 obj <> stream xœí\K“·¾³RÉ='‡rAW¥r°KU±}°Íœ$¯¤(Ñ®dRÊÆ‡üw73ÓÎP\í˜æÊ[>Æv7è¯?4H¶\JKÿ)ÿþárñ§ï¼^¾Ü-Òô–_u£ÿ,~\@ùYÄ—_l¢.D0–› (òÞ‹ ]XZD°n¹¹\š´ :Z1‰—ÜœôÍ£O¬DÚ/é9!µ¢e¢mCGeа³Ö6Q c°ù*Jh©N´$€æÒÜÁu§M@ë¢E:Åæ¢÷iû<ï h÷žªÝ;-¸½èõ¸«lñX¿Ü,¾]aÁ/¯tî"ƒ-îòrΡ ƒog^/¾_ ™„3ž¾{´ðJ’Á`²V7c5YÖI«‡î$`ý`A¢°Ê,­Ñ»ØÏóÉ*i|ó8µ$¨i6ÿ€ÍËÕÚ€΄æ³8Daè(“~Z$¬jþÒKºÈWˆ)‘ïÐ@÷‚ÀŠšˆ0‰ÆçÁ‡BâOw|[´-µäUJç.ÁÑŸéGÈ\·ªT!ã‚Î (•½ÊÆŠÓ8ö5eËèÁÙXkH)›¿¥5¼·›š@iX*¶@ј„b ­Ö<Ì]7Þe"²4mÑò®³='+ƒ± ,Xší+®™z¬ŒÃ—Y5¸æ¯q’kSXRû”Ï­BY2nüÅ•õ™8AÓ*“+8ãKûR^Ín‡ûÂUÝT½éuóY×, é%;'¾^l<ÎÉCa¦u÷ž%`­÷ÿ)oc´¨$D1œ½h±êÆpVqŠVmŠ¥i¶ ×|VPNà²e0³¢ôÕ¶Ä/JÅÓ´|€Î„Å*ïv<{ »"¹#o™8Ï –œlɘ½‰ÝLò`jhÃ)­€š ­ë¾9n;¾wbŠÁ:ލ‚±[eL‘õêj!/4¡ŠYýó÷©qˆÅÇ€HC¯¬jébÓ{=ćõB°8>÷ÂEéwvQ©ö"œ¯&dv9­‚Òg©)÷ÍF.½›îË”8¹y‘„‹T¹U¼‚ô‰Âãî”ç(¡Ð›ø˜‚æßýÉ pðpwÙœž¾ 9¶'/ñ}_½´Sèæçö²pŸÒ“w]ð¡‹Zò¤ØH ˜É4= Î>]C±w»kˆ;úº×»A€-×X·‹¬éE‹&~×Ú½§0‹êE·íÑ´Z§1~¹Ž¿[’qrμ* Î+0ô>»uZ‘T#Å^Rl]¡À~‘.k-ƒ©Y‡ai÷påî7U×MW *SПæ[òÏÕæMó‹ÂA$e”«QÀ×ñ¯ BLN膥xT²ð¿³"›F– 57¼È³V™ƒå‰À`SU‚¤dÒšâ-˜>&SŠ…”)ˆ%Sö(ÓH©V¸ØÕØÉß(igNÚ§ux8iJípÛ¬‰÷¹ÃCi“n|×䔈Ÿ¬Í—dÚPñw›” D[uÄ î¨”(ï¾×Ñ‚<Õ~ÏAÊåÙf3æòÿa»”6åÓÑÒØó¼‰Ïó›=ÊéqJé—d‰”ó£úÃPýPwÃγo?€‚MUendstream endobj 888 0 obj 2402 endobj 892 0 obj <> stream xœÕ[YoÇ~ßÈ{ž„ ï¨ï#@|Ä9±D?YAñTÌ¥(.iE’ßžª¾¦zfz¸²6 ?hÔª®®ªþêìõ›5ëùšáéÏÓíêé3'×—»UX^óõWåë‡Õ›Oa‰|ýÙ1îPkÎ{¯5__¬x¢çRöÖØµq¾÷ðçñvõ]÷üh‡Ye˜ìÞÁ§ä–»îK²üêh#é…SÝ·¸,¸ÓÌw; fÎ:Î}wŽëLs¦¥êîÞö°óëÀEX«'@.œ÷Àå?aMšîaø$×ð)5ÊýõøO¨¡ú&{éQ«ã3Ðàk$V^0d!L虜ÝÝ}T1o*Ò)áœòpøF Ý;Æ»Oq'œ¢,œH€ âqë-sÝ/P&Ë S .ìC­ƒ¼µB'bm„êÎÂôZ«î+¤­˜EÛ gÏ8—”uPç\· ä”×I(¥œ¯y—wçñãtÔ=*ë.A÷³a•èˆfýÝñê›(¸õÛ`ÃöÊ€q×Û•Bö\—•ëÕó&ÞÀ@³€Ó¼k£eïl‚ÛÏ ÄâÍz]mäx{"ßìñ`ý«`!Ε06©\¯<Ã⎚¨lïÁg‘&\2%ù(®3Åðçiv‘ Bå$ž)…×p }ò)ÍoéÊ2@ú6ØÙy§ïž¡ÂÀÏšŠõmäǼ§\^m´êµàÝß Àt¼ÚvJ¾ï‘…ï•ÖÝÛÁP¯ŽŠƒÞ™®âyÎVR׊G«rÜ/ñ ìv÷‘ÂøŠÇE\õVvŸ¡tZ2¯“7GŠ]`"\r·‹Ö3àfÓ¨éXT \jðxÎymH„—Ôº—Ve8/ÃÝäÞpÕ+p‹HµŸåQ*ÃFÀñ,|žL ™Â‚°jÉô’$K¦G÷6~lzI\9ÊÂø†˜xѬñ˜‘YA$-å‡à³²ëË)ÑïGc“=‡)âU*X m…X`]Äø%XT1^]Ö-±)…-¹-rùTñq8A¨H7vÍÂ0K+föÄ…„žµ{†<Ϩî(‘Ù0ë¡ÚÞø¦i.çU$F½¼?ê:áq›´RKº:mÕH×*@Bæ\Ó»áèyìbêôBþϱûA)A&ù,ôo²áDebüÓ£fgW >ð‚•÷brÁQ Ç.ø¿ f<ÏÕÖB]iûùã`¦q9§WWŠU-È'sô Éñ®:3 —,3”v»fž,LG´€Œ E÷Ñ **-—ÍÀIUq—»qXžžÉŰ , 7‡ «ÀO°ÅPó(…cu2Ø¥ÎÇ;Ãl6ò)é2^ÇoΠæÝ’õ[òýŠ|_úóa½4 *9è €@õV¬¡™°±/P\q(wÊÊR_PKŸÛà@2È ƒ‹©.áûŽ|oën A­p¶xB}¿ÁØ\´¼Ï€(xÍ F™Õ¥‚à!ºD·&ð+$¡ðÖ÷ÒÙQáIÂFÝ2R÷©D…@†Û·´ƒ°YåbÀéÁÊÆÂ¥.ù6ÂCYàÖH–»¨2I!pÿ EÅÑçCì˜Ïäó%±Î$aAcÜýpTà“Z0RÛõx0Sº*¾£d^Õµuƒh—ù Ð;Õ›åx¤´ TY–F»[B}2/m LJ•ðHd­A_*Ô´73q YjO+# Ës"ME¨OÒ‰nî‘ l+ÜA·<–zM£æ“u=êÊ®à„”1çÉðPdÏcp;KO.²·Zf˜ÿx„Ã]«ï¦Ž>ÓP XM|k¬.Íê¨'\…\Z4b/½ŸËTIÞ ‡/‰ZÕÖ¢9ùlžS(êþëo|NFËó5u0߯C*t JüÆzÒ8û~CM ?"ªúv±¹•¨«¼4©`ÓQ5ñ»sæÎb!íóž{Ëz¯0¯Ò¢ Def1­æÆèªÁºr„Ùz<ÎŒ°ï0­I}>G×-3ñBê.ý®¢a•”¸Ù G•¢×ª ˾q >ÚòôQ /øiÈv ú[£«ë8YòœèÿÈYõkïp·õT‹öãQÁ¤ÅO‰BÜ»Èißý%”‘ñG"ïæ³E£é¸‰L¬¬Ç˹m5®OŒçIC&÷{¼'ÖÃ}fÞuI„L4XrG™Ó½Óër“@VnÆ·ŠÀ™`m[hÙk_zèVÞ£žmÔtµ - OÕé§àdM礬Rò<ÒÆ"ô%¦¼S${•Â4*l”Tà`ݧeЫZuÎÉDèÛ&ãø¨²]­·a¦ŸÊ¨]ü­ƒ~Ð Y‡%ãnœDðºHá*¾ÂñÆ”VH±·R.ûaŠ•^å %>w<û}ùu•°úN~]•Wð¨|Dð‡F¢²`<èh`t‚ +UÞ¨½Æñ϶bmÉðsÂ÷{¼á»ûµ0ßûâÛMz‡ã8ú–”ߘÂú5Yÿž¬Ó7©²~ßàyIÖéÛÐÉôÜð¶õ=Y§gm Ííto*Gæéϧ2‰ ÑœL×'2Ð7;à£ñ©Mêî·ðÉ5àÊtê 5]ñbøËz „L…p@èn ^p ô€Q_ ^ž’;|J4yŠŠccÇBñºÝÔÂT<›6nªñÚ¸`Êb¦Ê¸ÉNÙt¡¨´Ä–i×!l‰^%ç{BT#Ú¤ õJŠê“† wdÚ™"yÛðJ¼Žãþ†¬Óï'„fNê‰/ž 3RStLü¾‡ÏI=aZI„TÁ5•D4ÇÞ8·x‘䢳–ö§`r=ý^ bQáø»áû†’—óðž ˜‘ÏX÷?({õnxoñƒðês˜$$XŸ¼à0.²T*ð:2Ì©ãâ.{ÇEƒé÷qÜŸüÂ÷Cƒ'EÊLð‹>9ãÐDÅb·ÊܶBwVàÏI¶•µÅAÐÀ=GìÛþs8 ÂT:ˆ ÜâÏJÂ.Ç«jl ªx»ZwípG8á.yÝMÐdÏìúE#Šï yT03  ë{eÔÁ4•Ee} þô&p—?ˆcr÷gÌÿsFý¡yÒÊe3Ùu’-g4Èêlò˜É®‹!dš]ó–€”»¯ ãk_Ü¥ã`Êß#Ù ÒTJ¨Ó¦¢˜X¦ÓMö¦Ï><„ï™êz’Àî÷¾_‚lEL\Œ•ÿG¦Áh¹éæ [Útç•¥Ÿ.Ž~Ýš¸J8Fh»vØjÛ>Ì.Äð©ÊgQé›Õ¿à°ƒiendstream endobj 893 0 obj 3233 endobj 897 0 obj <> stream xœÍÛŽÅõ}?!O#"¢¶åmê~±”B‚E€yŠ#„½»¶ÅîØì¬!åßsNUwõ©[ÏìÎXŠ¢©=uúÜoÕ5¿lØÈ7 ÿ™þûêæì³ïœÜ¼Þ…å ß|ž~>ûåŒOÿÃ&ðÍßžãµá|ôZóÍó«3>Á;7ziýÆ8?zc7ÏoÎþ5|ÿè^fµjøýíNã Q-et‹_‰[¼#æ÷–<_,bý”,¿ja†?\W‚ëÔtwd}Ûq¤›ÚÂú‹G¤O‰]<í˜Zó+Ó¼îÀßÕö`~\‡™M9Á¯øðÂä@6\t6|èøÙu‡ˆÇ IÆĠŸ“å' šÓMF™³Î#ºöÜŽ:‹è¸Ñ%šdí TO.šî!j—k&ø5s-y†­:ÆQÈ-FŠÇKiCÕNˆ‰Aæ.™€"‰5ÃoµN𹯓EÚ™–xN´µrä4œ„}æ¸p’tâøh”]¨Nq2$Z@=°„£xhü ë@_e'šÍ>¬ßÒ4ú¨í+úH’Î4d +’P»[ªŽiÛIÔ!Ý(™»Gs‘È)¹ÈhæÐ#M‰ÛüiˆÐ™É†>!6ô Qy^a&Ñ™³ç n ôS™ pŸTY§´@eØ'¨¹Ã(9B”]:Ìyå0Éx½6ÜœØGÉü% ¯ÂâxAi¦1C#ÏQì„-§ýðר@{e‡/â¢p —Þ‡ÓìƒàÚí"´Nu$W–I5 .25:= ãTg_e5Ч°~“»QÉ>ô…FÈ„ñI"±õz3r ™{¥ÃUÃsp‹½?ˆWVЍy•w?c #õg*#üÎq,õ~]ÜÊ,æ…·…ªno[¯¯•΋¨<ƒhÀ©¨¼â£8FR^Í2—T£:¨ª†›šÖª„¿[—¬’(.q°hôI®3¼²QÌdÖ&3£¤"”"žˆÈä¬T¶Ç0 €¶@çÒ§ŽG%X[M¿.…þÅŽ^Z!™¨ÑC,`€`¢öšÊªð¦R1zBS9W 3àxsE¿RX^^,T‡Ò`Kž{Í< “)+¾eŠ Lc¤Œä.@ \A2…ºz^¹¿è¡TÐz¨8¨ÍTeñ«Cw-b­b£7”X ªáA, °¦ –Nž6S{òð‚¹„Ô¨˜f£ñ°ƒ–/x–%GzPñ¾ ~»8tù..+ïÅN'4Ò8¾EFKÔÄsÞiÅ „R@ÄÖfØÝxº÷íRm µ¯ sã£s%ÃaÑðž‰xŒ'@ hO¿¦}±ü³Æ@ý‡‡>| g*¤ÈŽqªZJL”p@ËEª%'ÈP_çà)#«Ž~ªüœ(n 쬖™ÐªpÊ÷\{Ωž9礤·áÕú0 £L^Lµ±ÐuâÙÓ|ø}ªÃ!>IÍ.v¢œ)¦±C‰(hÌïU={JÒU\õN TûoÈk.bžñ¿¥7+$éAXC¾ çœŠáh TÏ¢¿AžáÅA^¿~®8HCôȧÍ:°DH—@ =Èk¾ˆ#|(¦Ô7“çOd›m8(Jéáï ¾LÚÈŠÓVM¶Jø¬_š‚A8“$Α¿–!¢iÌ|&'7óxª,ƒv¬ö^Lt™Ê,Š˜1)Têê𨖨›j‡:C®5зÁeÈ#K©}ÒšU†ÚÌeÛØÈciÂû„©™™P¼®4‚(>ÁLÈ(,=4c,7]úJê"qL3½"¤w5 O ö7ëÞap÷Ü ?Èë(9˜ipx`Ê\¯—Dô+>±È!½ES3ÝN†nFÚ‘ëTadBü²!FwA¼‚‚šgé „ÃÀ½¡Û }z‘ÔiåþFÍ-b¹0‡`E+z³Vì³ï 8©ÖvÇ@AÙq OçŽaÇá‘’;ŠÐ”(7"ÌoûSÎ6BcÉpL,KÖ—¤é(Ë.¦7êkþK=3 Ñïɻ׫•_—+ÞäµP'¦öCC$0/¯qÑÛ9Q…zW 4K$=¾+`‰ß¾ \›Y›¡4Ü…\}î5ôžŒS‰»®CÁm4f;Âd^ÌEÈlÔþ;"éUEìJh°‚J™A §Ef}r áPÈBi?N‚xœ‹Þ „H•@¼$†•9þ¹²P€¶²¦€|?ÇšØù*‡ŸrºáÅ‹å-ŸçÈðu"¥ªStç:š ,é7Òb¥æÃ±ÔàÚ¥•ÔlXª€srÊ1=¥>¶«í§®ÙvŸ,@øe! šˆ:蛨7gÌš÷!:üä°¿æðÐ\–sjðùÃê…WˆNΫã„@ƒsç<nT·ÊòVàFõb=µï²ûá %4Eu-'7™Ù”JÎÃÃlè´žùÅ;Cä_å}[âàéh¢"›Q†âE…YTÀhÖ×v;T^F¢¥2Eùyç"€+zÌŽðoÛ.8ìÞÇ9›Ðeê …L¢¶;, ´øˆO›Å·åû:HĽœ>qL[z# GûÄÓ'Ž‚©´rÿ€¾€§1óQ±{¢ø%<ÐpbE0cGk¦m\UFb'ÓìÀâ'rE’™fPœëÆT²ª¡÷L%×Úæ’Òà§Ó*MvÆ{Nv!^iÕ¸;Z‚Aš¨<ˆ˜y'IÝM4‚ˆáv&Ü7páµÝŠ`}î‘W‘R&ÝAñ ÌÉ‹Öâ£øÕ’ó¦÷x,eBe¤pPo–3ã=Þ†'³¼MÙùÂZ•Vàmšãè1@Ö˜.-<Ž„Z±À+?18Q°+'%Ýf3Ôqº›îT¸ÓaZA/  !²¡œ=#>À¿bFoa|‰/Üg„ å P8QTtÕ(É2:ß»ˆ\¬¶(½¦pNÐ×DáìÀëÊ´Ë’èT9bH ?´?%\ïa¤Ï:ãº) „p€$;CÃ>QQž Ç약Jö"÷Îó‰Êò<Ÿfñ˜y¦‚"+ózP€);kÊÅïñ•ØN5 ©Ñ“c% •o”D®øÌ.‹ÛxáŽâ—m-åÓýL˜Q8þÀÊ­\­ì±z˺_zDþ¾c•ïÚàû ×âDßΜ>êD=ؾ„–núÜ¿]žÊEZ=õ“n"$Zôôî< ÓÏ.“¦p²Îð„ž7J‡9È#„`ÍâRE‡iú¶2è\ò˜ODKÍñé¢òø8ñ¹ôÂL‡/^$S?•„^˜áy—H+è…öÂÃȘ˜?+¹ÇçóÅ$ëé)¬AÑzÀ‘¾…»õöõbäzûŒh|–A:Ÿ ì󭤶zòWEËy虵9@¶ãÝ)íKòžä=äÖoì«:ˆ*du2S÷2ýgNa%œŸîÕpDMмò€é?G] ùmg23yÕIc2“R³5#‡È[ŸÔ9 3²4>–è8.Ó‰48‰î–•ËÛN¾èi¼<5Hlñ9L¼Fš&ô{Nq£!gSž¢DBÞ„ÎruÁË¢íAþ:IÅÖŸ%”ç ø,!:CÜÆcÃú,¾ÎŠþX ÿ®¥˜’Ò`g¾¨Æ*‘*‹(wê<ôee?}`ŸëFû=ó‰^;Mü|žt­|_ÇcRS}'c¾!!”øyÁrCb^¡w2;TµäN†À±Îo¯/PËÊ•vJf QÏpÅ}§¸­"$„"¥³{uá3ÔÞ¥¥âzí|¯î+rï)éW«ÕM^JÂæYÏ®Aþ@oMÐÛ—5¢êÓüm¾÷á'ýи¸ ŸÖ³ XäVaÿúÏ¢øÒ`2óàÚ AÍ÷qs”ypŽqÎm ŠŒ“q\t4yµü²À„^bë}lKש xjeï:ô\ç´%e<Á[É>ܨ}UƒW:m\#¯î"4®‘W÷)žÌ—@çóÔ„¢é™*5½kWM¯qo‡šm)·õÖòšý‚û\j©¼e:2”nTäÄ0¡^ùņÒXzÒ Ò‹8÷Hã¡ÎšÜ0sßÉ “k2eHËqŸ=.–sìö•ÜàEyHúÑ]÷¸GX§âÉzÃ?öå¦7ü#ýþÇdlm_nÿÈ^¹¢Ç¤¡L³6ºÜY€R=â>qdÐôȧáÇ«±o*56âM•“Vý(J#Þ´Ò¤f.œ¯µÿGž™,ŽÈÝú‡uÝä†ãNãîx¯š†ãí¤ðÃú{òÜø­òì!·»ù瑾¼۲ó¢a(þÁ µÃÃÓ^ÍmÜÖÒÞjñØBußõ#ä»;OœY¾+¡vrt4†}ÒdíΕa—…Ï(éóëìaŸ?Òg¦z–+`ǘƒ+Ú×mg^Ò[ùµ®ôL•IïÉQe6‚_0ŠV5\5ªán…³'ä%Åd õ…)à}hŸ™îS'ÊŒ-hJ^|÷#©iþQµÞïÍš ½°èBSG|_ÃTaó@²[º‹~í#Ý©n‰i½€‹‘é Ÿ!Y *3DUD ±Ê¢†ðzd'Ê´-ßä¿eVÚµ©]2’`þXVØMŒ$Fæ_„\šçRœ)xàd.5¯<àdàÍ @­Ü|3ƒ/C3±<êú¬åÛ³ÿqw{Cendstream endobj 898 0 obj 4534 endobj 902 0 obj <> stream xœÝ\Ío·¿/ ôÞÓ¢EÑUk1üþÐC¤äG=Õ…¡X’ãF’­\ׇþï}ä;ÃÝÕìF. 4¦ßÇïýH9úyÉ™Xrü—¾¼Y|öÌ«å«õ"6/Åò›òôÓâç…ÈÿáY|ù—3ì¡—B°`ŒXž]-D–J1gÝÒúÀü<»YücõýÉ) æ´åjõá•p¯þJš_Ÿœ*k™ôzõwl–ÂVkæÞy!ÂêÛ¹Ü(½ºCyÇ ç·Q‹tZÏA\ú@Ë->B›²«wõ‘\ã2Bjÿϳ¿¡?–ú#¹b* WgàÁ·(¬ƒä¨BZæ•q«»ûh©æÁIt¬ÓÒ{`ðS% ó\¬¾Àž0Šv0b5.š'\pܯ~ƒ69a¹w¡z%aÔm””& +õê%,3F¯¾A ðŠ;Œ j\EU'•õÞ¯N£¸çM6JkZÝ¥ãÝeÇz“||WàûEíGM%>bX¿:[|·¿|¿l8±¡-wy³0R*&Li¹^|¿ÐcNpzö5ö :é`R§¡Á bŸŠÛ.ZýZ¥pF½´F1ï2Zÿ@âú2= ®rúrû9y^Ÿ£ümGþ†È\’vW™à<~~rj„fºn²2`?l`o!?)ÓðÐEåŽTŒ­½0¿ :w¤bäûŽ•C) ¬Ü ˜óî–K¿D*ú›¢ ç`GDˆ8ö²Ç!bãðb&âÿîes1§ñ¶eù–”uì%“_¥_jtËÖ{í5€žhÂ^î0ï…‡½¥ƒñŒdÎdïW«j¼êÇ;BÉ×ÓØ¡›˜¢°¡“†@(þÇÄR&¢(Ɇ8÷«?ç-ÑFª&'ÜÞ¾’׋Nn{+]ýoLîqí£V¿¯þ»ƒÿÎÚvKöKf[<„&ývøžd;)ÝNhƒL£Y50ÒÖÀŠÂ(v:ŒtÐ,¸ £—F”7Þ¶E¶­²6'±#ÁëճƋîØn…#}±I¡ùº£ómǯ ö™GkÜûŽ ½—›ëÎ=°]áÖ‚´Á¶ªfd±;éãLŽÚÃN_ú_ ’""‚Ðö‚ÈWeŠ»(弄 ˆ8ã#ÍâŒør©ëËÊA’u“8ãYbªNÒLÌ(]ðU:×ÚúÇŠÕ„>oœž(§hô-¡¤‹ä|J„zÒge¾$íôcáÏk‡þ¥Ò 9,„áøºå†æaqN¬`Îâ_úA Ú”‹N¶¯†ï–†Ë×Qbâ[‚QÈ'>q}‡ðb"£ïƒ'À7ú¾æIú^¯÷Æ¥ß#ÞuÔÓ«ÄS)Ý~O¸f‹$¹¤kø @5m…|€ã€Ð(ùä–9¯×“°½Ä—_Þe•%e}´å±¸ôÝâ“:Oâendstream endobj 903 0 obj 3265 endobj 907 0 obj <> stream xœí\[sdµ~ŸŸ§Iå嘬º_¨ÊÙ‚!T 0O¢¼ÛëൗØŸn]ÎiIã1önñâaeM«%u}“tøyÍF¾fø_ú÷ìÍêãoœ\_îV¡{Í×_N­ŸV?¯xúƒ%òõßOp„Zs>z­ùúäbŽs£—Ö¯ó£7v}òfõýðíÑ1LfµjxwM)„pÃç±[&‡«£ciÌ(œ¾ÃnÁf~Ø5sÖqî‡sìgš3-Õ°MôÖ_6Âè>záœ7r¸Á&ôI3܇¦P\S‚khJÍ…rÿ9ù'nÈÐ &Géq['ØÂWH¬¼`X3:©í°½ KUÌ[;€å)`®%ý»Nû¦Cÿ¦\µMý [jÔ²«Z'É%éßv¶ô6šó^ònl„ê,>Žml¤¢/7‚ö ¥@W”ÝÊ‹™`²– ø`rTøSþd R³Ñ+j8N¹'™‡`Ü®qB%E4×µh+n:âßz GŠ®[B³íˆó´„„…‘s& ¹¯¹ŽTÑ=Ð]]w€qˆQÞuxö€zºw®¼†ô«±H?ÛpæÙÄž!ÄϨšzª&¤A\¥Øƒ€aìy°'Ä䚯j<‰¾íHî¼C¾_cž©&é(VojtTè»íh£íìÊ5³£Wûá±]íö†à°m ¶Ú%Nû í’þȳg¥vƒs†ä†ŸsCÍ•~8zÀƒG›™ìƒØÕd“Í0# u¢V„ãôÓ<ø”à€‡ÔRF+Ú‘¤£ïC?õÈ#éoßÐßK‚ÎIÿÛè©ís‡ó@¿Gþ“d èÒ‹iÏí¨ /†ãxÔR9SÜy©K‘šS]†q扺äfô­µã£QI—›Ž./’€¡¹ìÜþ;j¥fòŠôß“v#_ ý=ACg†&‡4×ê9Ð'å³ÔŒ‡O1éYÁ0ÌRF¸ÑPH…qâyjmìÈ¡²¢1›®ær´F¼OK¯ò¹†]V‘hGèßu¼÷«N¼¤0£k;#ô‡)oRK¡N±°aå”8Ty8Î>ц ˆZ‹ÑêdÃgDºtÇ ÛJµœúÎËé{s‘F ô¯Hÿ}-ó½ùÐû6mʳ‘ÉTëìe2t®w„¾½j=”½” É ¥©1’: ¢B|D@ÌnmLð.ÌÂ.<˜„ÊÏRHÞÅI7J–Í®kAV쓹Ï&óò—».öÈ¡¤šn2 óÏcèBŽÎüßÐ? ¡ÿ\ïqïE£L©öuOì³g{p‘Q#òVÑí0롦3ë…'8$.N†PÚ/Í…i6:j-8L>“K`~T<¹„mÇôi2r_‹$ŸÛj.@úP£;@>yç…Àä›0Á K§ò Ã|YFLT%ó$êtRɻóóù¤<÷(kµ†¤Tp­[—4Jy˜0êq¼A^ £Ûxï°ÄÇ­ÔÑ1çŒJ /ñôÜ· Æ,Ã¥Š‹†yƒâ”˜¼æ‘ˆw.[Jƒ…˹r6\Ép!eÐk¸ÅÀâ8¶ÃmLw+Îz?ÜÄI°yo”ÔÃwHî¡(R—bd¼›pF3[þÐPÁ­vé¼Wa”÷E^SC$CÓ;ù×êä£ï‡“#¨Ð´“Q: ffóÁlZ˜â¾/¢Ò}×[¤v ˜’↌ÜÝ“?๲ ¶}Ç*îŽò¤g„ÍmP%àÌ–¯æìî Žt xóÃPVa˰‚BFKNYÓ5½‰ÂôN+ïÞ"MšEyX,‘¬$­0\œ]¦ý4ÉDq%Þê‚G3SLg™hŽX™6D¦9?*.'ŽõÂ+ñlâD”Â*çÏÈóÎépŠN°7ÅaûªTò-vÛ  Â$Nà @?­Qá‘tØ­'H9'óÏPFeƒ+«-P÷–ÈXZ Ë?Lai"õpD@_Z(N þ-Ë4ð¦–CðBvFØÕÄiïóºwvX.ÇIðZÓEôëÎvvY*GÞ¶z?ó²¢R®¢ÁCq›] ‹´Åㄚó;2 uZ ¾q–_ÈÁÓy.u.Ò¨ÑÀ¦)žÈ?‘d¬ë”Œ4-÷“¼|˜FŠ¥^‚l¦Ö j±ðë(~Ƥ(´i;ƒW=¸—’ ’ÝeD7I<Ææ³%p¢¥%©…õ10Ù²äh¦Óæe±ªrÂýl¦Þà“Ü,OÊó]\¼ µ~€pxªÐtÊ”ß ˆ«$°ªe\5gK˜WÁ›ø—àM¬5lãðtppÕ…géÂí‡èSO/BÄ>°Jpjh˜u{c)V2îP׌Ô&œW’‡C¡×rÄ'„WM‚î·í/)ßqêF­Ô‰ñ9¿û•Ë0û…M(ÅÂ{œ=‚SPÝpæ gCÀº»‹$?_µõ³?3§{hâ )8Xå(н_D®lûÝÉïãïÈá×`ûÖ,üGHC6D¢«°ÝÈŽGÝtL)°¶.F¿Ìú46¡R©¢6˜—E¤$îDÛ6nŠU$Q—A¦@4‰[ihxWEläEôPÞ¨àX‘L…ivDÄžTvHt‰]é&™˜—eºOm*Mf—ý4$K4=“+ÊwðUNËå•iõpªwGE/ è9G>H¡?Tƒë ^œu,K5‹/½ø´fH€ŒSX<ö Ò¯(ŽDÍ-F B2«¬ù„ 6lZož1–ÍÅòV¢›Åds¿?ƒeñÑuY£P_3‘;zMÌ«C½Ì¹ÉŠd%x¾DÓÎû쩽´ÀWMô"½ÿdn_ò†¼­ªÓÈÄ$…¡ø®6frZ©¢î** 1üýÇ §¤q‹ÂrõE“n¢,GmË|®HVfÛ[¢É"¼‡…P$Í)žRb«Í2÷€Í˜hÝs‰°ßx’–|NR¿6¢{Zð9,q­Ì#N\,óeì¡rWe*´@ÄST`¡ŽP9 Èrœ1¼NGÕ|4Þà1óÄ0\E -ÊnæHõÑs‡ˆB5ÏKg“€Ô5˜`tÝ4¨]HuZ—9T ¨lYA-í¯1‰Õ€!lã0]åãу£uO~­Û…°Žö¹we\øfO,»ç¾’Ë*x©Z|eìÊÈ÷TÍÀDñÔó µÛ«ÓÆ@ÑN§Ít¼ó´]½ô%a¶R³»ñø¦.ǵű÷[³ðær`~H.»þüUǦˆÒFü ÀC¯†/Žðúf yò¶‚w¢Ôî6Y´ã…å&Í(½,gâ9•õüåãþ„)_Ñ»˜Ê3'v%L{ž¹wPõVìñ^/=CÞô;§W8;®!)4ýŒUxpNÌub×Xs†?2Wòq)ŽÁ2þd¤8‹ÓÞ0?XVï´åÁ§‡Oi!çqS¦—üeQkß8Œ Lz¾û`Ê!,›T;Â|'ÿ­Ž%ðÑ\e Ó7o½OU®fÜÒ£Ëé1d™µà{HºG£ãŸøçqÏ>\‡2?áþ¨œvynéñ¾hÓ¦:Ñp3­[¨‘OÊûñè6]/…©…6ó¡,¶ÉÁíü9/¸ÌZ@=5apÎàêy¼<€Ãèl×ûÑo*<ùRO­çu¬ ¤‚ªT ŸÞä3°2Ðþ6{„ÓʇK™þkpÉä–iE¸²{l!ÜBA¡qà¥&NR&™;B]„ñHluÇ£µ‹•tØÕ)‰½»O&‚úí[~ŠÆ­}ѧh¹‡>~ãêXAß ãë©üà6?u›©æž™j©¡Ôs¢àJë'=4ôƒ1ìLjœh!ˆÿó ºácÒ¦ï é“dú “ÒÓoeŸ‡RþÔ/UW'¿ÄÐï½Ê: ýv‚^ЯCëÖøNj–x¡©$ñI J"$¨^pÄøgÑ xF~6(æ‚(†>î¼%í7ósiªú´–>¥Ïl_Ö,{×U¡ýy-Ü oHãuï½tþØu-”8è;×Þ3ê»øô#ÙËš<°é} ÜØá!ŸaW»ê½'Ÿ íá°˜ `è0!,ÞÙ†q)üL#'ª‚»Z@šCê® H‡4ç™ Íq;fò5ùIÿJã{¦êb“Þ®6l›B.EŸ@Ë‚eÃEì]Ây†“)f>2ã-ÿ¶÷»€Þ· eäùü¤Lz#úžô–ÿ¿#³þ¦`ÆðÁ$§Á,õìK]ÊôcúL(áÖÀZ9Ëç×Ô)‹¹i§æ´¥¯WÿCOÆ endstream endobj 908 0 obj 3977 endobj 912 0 obj <> stream xœÅZMoǽïOÈi!ÀðŽ&ýýaA‡ÄˆÄðÁ6}RCâR²l­“T#ÞU=_¯83Üï„ÛÛ¬êézõêu÷ôþºUµÞ*þk?/ö›¿|—ìöíͦtoõöë¾õËæ×n¿¨Ö|û·söp[­ëì½Þž¿ÙèÖ^[[Ç·!å:Óçù~ó¢úþì)=,º lõÛ5­Ž:U_B÷»³§6„Ú$WýÀÝF'¯ruCÖ*Ťu®.¹_y­¼uÕ5ÛÇš<¿)£˜¨÷™›”3ò›ÔgCõqh‚Á{jZ¯K/ÏÿÉñŒÇ([ÛÌQï(‚oØØe£xêd}¬®oËLÊÑp4;gRr™þÔ_'¥«¿²'=ÅEzb1¡ab™žŽ9ªTý‰çuPŽÂ%?ŽÊÐcxloñ­±ÆU;¶µ÷®úš-(*9+­-ÝLІ”Rõ´˜[ Þ·“r.e9vïx}Ù<'$ßÄ^€êb·ûnðéBŒ ëßÏ7ßn4Q!mï6ÄXn¸@àn÷oŒ­µï{Þo¾ß8Ê17túî+öÊ59¹ì§®#ÐG¶Ågàí,[Ó4[c­Ã6x[§Ø’õM«Q>5‘µ_@ÿ%ôßBÿпƒþ+h¿Ê·§i¸ÕsnºÚ†/Àâ_UóE+ÝÀ?þÌö¶V¦R÷{i¢ÆQÎ`”Ö3zÝ^Œü´Þ->LÛÄéáÓÄðåËˡݬç ñI“Yú`KG ëU0н\*6½_o$Æn­:GÒ…Ú!7©^¨ŠWá¦qT=-7/Æœqí²'Pê‹ãûþ/¡}‰»†þ=´_Íí¸8ZÚ×`/X‚¹~ ¿=à§ñ. *’"È {ù´JV´ª½µ‹²Ò÷×Ðÿz Pé íw`óaFmn }ྛIÆØü4¡7åËh¿‡ YÄF,x²<Á}îDʽ(;Ÿu¬=–{éUÊÎç@4^®$‹ë`.¸3µ ˜¥ÿ¦5ú~¢;-¼ç¿@üq¦ç íÕ 0m"ÿ¸TMä¼8L,…¥ý#ØìÆj2ÿ'‚ÿù1|¨ ¤… øi·‚P¼Â‰‚4¥š“tÜÿF (o¡ÿôƒ>*L”盦ˆ2ñ¸ŠÀ9 ²bƒIu€Š-^æÄŠí2@ç.ÙŸï—,[Ù`w‹æ¨¹¨õÿ¯”Ñ(»SeÄF$±ÏH«‘eä’£S$‘½â‰e”èéyÞPrŽ+£N:ùü Lžùz2ãy@‰JûØ2“Š—ü(Cˆˆׄuå™\»¹2xŠœÿ ®°kÞM¤ù@jû¬‰dGYŸÍÇþ~ªW)O›j«Òé9Wˆ ®>B8ÊólÍ)~n÷ÑFl5ŒpËG^e·BÇè–->í!á3è}>ÈàèÞÍ5·=ø6ïgDä ôˆ{ø$èY`¬è´–bv²'ò·…XåÚéè;·›ŸóEDp’¦4 ƒG€jM]¦}¶Eš§Uhê2eãš4ýtœŸ€^xfÅÝ5ºÍïÃnÆ,IÊç3m\Ò?Žó6ó?·M@ùšØ>Œž{5c3uš+ÿ˜™èfö'XÆï–”¯]p‡ cóò¶Í­˜ÛD½Ï9Dê3¦¾u¼ŒæîÍíÜÙS,ÄŸ£ÏWÏP²ž„9ÚqÔ°Á-NnrIQ`+(ÐÕo, 9Í/ý¬ŸŽ[4{¨ÀNªQ 3„5jœÖQ£ÀGüNlsj¾ïjJÿÝLa¡b`M½«Y‚y§Ì‚ä°#Þ‹øuìéŒL¥Yÿ7 p=FaŠmE/T" ¯¡_H"ˆ¯3'X¾`9mqØzI_ç,ÿkÐÖ*‹W̃ÜYu—&dEÿKpiÒõ—˜ìº®s$âÚ„&3wÃ…TC7­ ”˜þZîâÌPBm(|ä{"M›ÐƶdB»¨¬cÀùÖ(d×âݘ4ÊÓÜŒ]ÀõU¹Êjoùnš{4¾_»…ÛY)šuuÙšXK+÷o5=“/æHŸc¹çk§ Í+ŽÀúà1ZˆðÌîms+—ƒìxLÏ¿y`p!V¿5@Ù47O„¬¬|*åänî,›—³¯ÿví¢1ÕCheÿd’§%ŽÛ%gT%8ñ6O‘@Ý €{“q)tì´1™ÚG`g×Õ`#-—tÜ´¤+ªa0z«Î1ÐJa4ŽD^ѯ!R6Ð&Õ·"u@ªG „ËÈ”Tã àÒÆÊ4à#`mê0såd ²×*oÏùÒŒ¶ç †ÿÂz`ÆýdD 2ë–ÖbÖÙ)­“uK›Ç›‰7÷Ž& zzY=Ä!¢O2;:M–½Öyc ¯Ãmz޼£èû_@?^=w¯Áè(¯ÁðÊúÙQÔíãp‰eÕ*“è0ذS>‘8ŠOÇFÄF-Ʀ[ •qLJ–Ö*‡½ÖÁÆdSGãOÇG/gˆ[À%±‰ôá8üsþ½É*àÄTwdz×3›ÛËeùúŸ£!C$JÏžT Âe¯°†^š`ùGPD/õR½ÂѪãmf–ôJ™u™Mòré³¾[ ¥%,-¥ Þëw^«€ci¿äVЄÂi£Ó~/D‡# pH+^úÄ2éÐ1´z ½t‹±éÃhiYVJ—Õp/ÀŠ+1‡“ãýc)fŠ@ .èy…ƒxÙˬ"™:kfÞPL³T1‡0DôFä–¶´`An‹WZ'·:rÌ+0ÿ°f†¥Ìx%ÉOÛ‰L(^vUС¤ç$3.§[Àe%u}X¤{啨ã(;!<†h¦Åèô ¼²¤Žá{.¤{¹•¨c9=ú‘DsE à$4­©Ù`xÃv"ZÑÔŒ÷.gÈ0q]ú'.¢QO~;1DÀô!v¿oBí^‹iÅ;G ¯Åºö[öªÖÒcŒÛDð§Ø@ïÍÐL}³éÛÍï õ6endstream endobj 913 0 obj 2301 endobj 917 0 obj <> stream xœÅZKs#·¾³\•{NL.V–0Þuå°©<ÊqùàµrJR)Y”dYe‹Rì=ä¿çk3ÓàpÄ]ÉÞÔ¶ýÂ×€ûÃR µ”ô¯~žÝ.>}Íòr·Èä¥Z~1¬®?,Tý"+ûò'´Ã.•É9µ<¹X¨Ê£H&¤¥I$–'·‹t_¯ÖPœ×¶{·ÂÒh­c÷—B¶^šîjµ6Þ m÷w"kLÝÜ2†¨TêΉ.’ÎØî¾ò‡Ô}™ÅèàA>¿Ž1yÓmi šñÝc^j«g¸ÁÒ8¥mü×ÉßÈ!ÏÒÒ“È­“ \ø’˜mÒÒC„ö"ºû‡lª•)hòæY· Ê×F;¥êÞÐNh±3 Ä„lž )ÈØýšl ÊK ±/i4Ôl‡P¹Ê¼÷݆8¼pÎv_‡±Jš€àä$•2œ›¸ÎìpBõFYSåÎg³mº?/$cŠï9P½ïPx¿÷qS™Ö?Ÿ,¾Z(`!.\ Ãzwy»°!XÀ÷”›Å× ‹CsÁÓÛ¿.bRÂJðØäÊ®â $›¼k„î,`ã!À*åEÒqé1TÀ>”Èjéb÷mY ¨Ý3ú£ÿ¸Z;eDp„Ø‘å±lý5£¿fô{FdôíTf>ô+ÆËÖçlýï$Wø:óÜÍðü³c_~Ë6|Îè[¶þã9eô¶¾jä¤ÖÛî‚‘O™˜³Jø¥Œl+Ï73bxÄÔÛ†ûòÙ¸°>ÀÐÖEr„í@a° lœÉrpÓ>_î¤…Ñ …ÖèîÿV49ÿ”Õƒ=ÕžÑj­>o¹ ßFY=“>p EÁ L(Í‹B¥¼_’{ª9:«JþD×m¡bD)«}9eƒD#¹Z =hËX.Qa:*çx`w…ÃùØ}Â6ތܼT?V™Ñ*cD¥mØ_‘ð(” ÍÎo™"ªÛ8º€4ºÝäN«î»\ùQíT#ùì°Qµ3¶àrAÄúÎÈ“òŽeÐæp–‰íaéˆN™z×+t@kmë:__ü•Vº!ÞN7!ágy:ÆáŒd+‡î]öixœ.ˆª…T{@× Ñ·Qo[næ°-S„ÆÄµ«~Ú”ôôð½u8ü½‚^Å¢êGMõ5P½ƒ ­`Ä»›Ì‚Çòw‰ó¬QÍÓÞ)ñ¯ûƒÛGô–ñþ®)&$ !l’òæ hv\ষÃp¯ÙÆ›#äþ7Ly#zMž×¦FËòXíÊ~Œ˜xhf5Àhïs&[ÿLL0cµöÄ|ãÿÕHÝ2%—þCåiÝklÑÛÏeèzÃxGk>Ò53ÎÙ̬ǹs¾yõt‘£ÀI3T9*åÚ×Ö¶L÷ã:åO+fÖ^M¬ùó=;Ж…óņî¶©F»¢=à‚0S?9óôíbàÉŤ÷›€eÎ%»ÿ†wUfØ|[•Á6k1G t¼5]ŒmŽóPXƒ¿·¿Fï¡ÐÝkDŒ:6yÝ–ß!}Õ aj,$£~OmÊòx±žiÃó§8HÙ=ÎÌ䨶pÜ-Ç š­H%:ÃeûXO£Bm­hkV­&¡t!&:b‚â!a~ÝaøC¿o¿MAM..c¤.é¬tœ6ÒÞ«#—B3 o3^ ,Õ½æ¶ÈTkUêoä^ŸL;Ãqf†|ò´ Ö©|`äF ã>ívlëåa ÌÍ–¹EÓƒÅþ4pwÀà8/²8/†ì9ǦåÂø‡{x“±a3d©ËÉK…œå'/]•evoø£}ÝîÝXoo© J µLJpš Ù&¦áÕáŸo>¸Þ7Ù“Ñl0þ騣¹æ!Xš(… ®‘7©Ò9¸– †«¾Œag*†Û˜ö}¤t4mn˜ãèzY .MÊY[Jº2*`V¼ÎR¢ ®ôKu}G—t9ÌÏ|#¼‡:'ÌLÑ j0¤!Í(o ©±láÄ\(— §Ý~¡£}ɤ§"Q¶MÜo¤Ï¨ 2,M4GE¤}Ñ>Ô¶f¢b|ÌA\>¸#˜ËYtÏcÎÞÔ™ ¤ù†,Çßû‘aëš¹ñîòña0ÝÉÜ ™õ¸Ô§zt¡UÇÁ';æÜ)‰0Ô™‡zò’!b,0û}ÚFÆ«M­í¯›qçÓ·ÊË&GèÊfôrm0þx©‹Ü_ éqð†ëšöºüåtâä¯mDŸZM°ô²;îûË[$)ÄAoO¡×”|"¥^-IÀÕhúBʧãë±5 ™e°5xà¿ÄÖ@Óskë‰}2áóWIþZÉß9?í^1ž»©ÏýÕiò”š7pA9y·º7"‚¬ëAõ›UÿóÈá7¬ZÑfjd6ì‘Ñù«*æ9=Îjd‘mìý숹kMAzܶ|¤Ä1^¡aðÄ©”$Žq½þ2g4¶ÏœçÛg7v.u.ýjW3(¿šÓ±táy7ɵëqÇ…Nnë“t‘"ÄôÿJ—”òÓ¦Sôjëº?ŒK~ Ç“HÒO…5‡âGk>JQƒç9T)/È!ü wÑ_ ‡Fcûz¾±}qcO™Q»)'9tÉÖ·ïÑxJË› $ä W0z4o=×êgåÍÏxIÏM»k˜ŒÐ‰!¾§<ñ€ë™ÿùÏŒ­ˆ±ñ±ñ¼nfÿÌa*óCù‡SEèQ”Ë(lô/Eùï™þñùz1‹øƒÿŸ·",ûé´§> stream xœíYKs5¾/ùsœ…¬¬÷ƒ „âQ!KqHåàÄÄv%v6!ÀßNK³3óiVò>ˆ+qAå­¬•ºûëþú±¯ÎDÃã¿õÿÏ.fG?yÕœ®fi»ÍwÃêÅìõL¬?ðõñæÞ2~C7R3çh–Ïgb}Þ{” ±’IIº˜=nïÍô˜ÐÒèö<®¹¥¥ÖíÓ9í+¼j_®÷¹a8”>¼J¼vÜøö?üF_ç:Híl{œþ „^·Wã½giÉCðíŸñ¸Öúðdù-©L# Æ$ ó¦YXˤñ²YžàéRxÃC+âRn\ûd¾Ð>0omûÅe|VEݢїãã«J+îB»‚wç %½%Z9îòâÒŽKFo+ìӤ™´Ì“‰Ú7ɾd¥³õU'×Ü´Ÿ×Á’“<š;ÓþÚÙ• ¡Èúx"^'µÎL§à†^dãö3¸dûoA¨gszRDUÆ›ÏËW€éNÇå+´LQ¢¸ú-¬æF3Z˜öïy´¨²Žüi´ˆWto;ò'´]†|ô-8£»)$’•…O°:ï}åEç÷Á-b¬Dß A®¿hµuñÙEÿîB&8÷n ¾nüeÑ¢€ñpóK0GòbË&7¿7/¶œßË‹ßÅ¥–ëÊ,ýØ´húâõ@_ÒU€ì™åê rΕÌóUÅY±Û3¦¸´÷o”D{Ãkew·‡ó‚ÚáÚwûYZ{E)±_ŸW_à„蛘VQÄ?æC—;íe<†ïº"*Œë+ æÜíýÑÅÀ$“Äì‹î÷uO!s bhc;w);9Z,<Ü-LÍ€9êÅë_óbŸ¾—UžAu æMêV)fÂ+a+°àš?ŸÝO†¡œnÆü~Ë¡¬!( é$ʺ‘W-ÄDÑ^Ê7´Kl¥'ùk…&Y/»É†ÍSÏP0»¬®’˜!›ÜU€¸^ÓÀóvÀô¬|w-¾® €¬<°ü1q.õ¡Ò¡~;÷G§¼Û)E¤a÷…†"•)uHÕ5red°ËÚÊòHÙÛÛ x¥ Á‰ŒaRÌ]–g7GÑH2ÍMV/âPÑÄ¡âqœPwÙþ>ù¬Â8v(³îYÅ-6ç hß8kºvå-]á:Nõ™ v]ù`˜±ÃÎþí:Ý@}~¼â0öα]ŸÚ1ÎÊtì [ðZ5z>:zmM®¼®…»#PdTç¥ÃáiÿÏ9³Âw˜šÌ:–G§ ‚@wÂaÀIùGŒväq¬–û¢Ä~,Õï {“bÊPCý.y¾³¡æžµ­XSY¹5,çÎW…D= `m¼·+XC;œæiœÒªì‹ÜIÆ]ÿq—œ[žä¢¿ý’NA.Þ¥b­‚ìK%l>–ÔºO´‚íó"‡±»v¸åÉc‹­ÒîXËaÜÇÇ?¬ÜLÜw *¢Îµ*‰Áá÷0ؽ,ÇP¥X}ºžÚšPfCr>/¢¾Ú,~7ÒåÓ*pò°qçÆ“ˆ•Ë’cv@-†Æåf"ö¿K÷h€CšV}«H¤<úüùA²¥v“Ê;27qûÿ®úþŒû#N¬/+3ÿ0Zu)>ˆ.—“ï¸;TÓgÿ-Ïendstream endobj 924 0 obj 1562 endobj 928 0 obj <> stream xœ½\I—Ǿ·uÓͧ>ÖøÑEî‹nHÆ6H Ʋߓt`ðLƒ$¤?ïˆÈ¬ªÈªÌêô8PS“¹E|ñEDÖ¼ÙŠ^nþËÿ?8Û\½ôöÉ~C¯·rûõøô|óf#ó"7ß~yŠ=ÌVÊ>Z+·§72·—Z÷Þù­ ±ðÿéÙæÇîîÉóÆ Ý½?G-½ Ý?Øëg';í\¯‚éþ¯• VÄn­EðAÊØ=Â÷ÂJaµéα½ï¡ç-’¢¼ƒ·÷ ¹ 1‚”—øï´ëÞM¬Á xÔV*~>½‰ëq|=Jè^G\ÕéCXÁ-ll¢(B¹>hë»ó·4S#¢W¸˜Q!˜ƒï´²}²»†=aãaDjbÙÁfõ”ðŸia}²ûj:‰ô¨,éJÞr);5‰ÕG6FchÓG¥º§´m ºé@¤ñ”•?¿¦YHa„í¾˜fuÇŸLعóç~’ÁZ¿ÄyxT†wid‹ƒÃS^EÝA…1½‡·w‹È#*À¦ A3áøïUÇx~2Ú^"ÃÛ¾dr&¹f\ŸÄ¨_”FŽŒc¼LjSjÍS¶|nõ|‹zÔXÑ› 3:FÏ$ÿvREŽ$V}È]f~¬Æöƒytz î¯ûuÇj­ôŠУˆ&ôæg†¸8 ð îC ÿ Ûì<¿gî€ÞÆÂ'q{gæÃ•žt¹± ]ìƒuý”iS+DsóºP’{S‹†>E—xáÐQ irGåu,:>›4 –I&+c£¼HóÇÓ»‰è²b“±œ3žý>‰@Üf-§·°«ÙÑ%sÉžùäJ[†®@ëLH2$ $ '•#pªCχbâɤ5=DE3+^J¢}ÎcqycÈŠ_áÆEŽo|‰Ñ¸RˆQj–m<šAìŒ1øB9OåX»t„ÔœÇ™å £–À¨@V‘(DÌÔÝ#“<òsÛ€ öhšä~¥u ‚hGfT‡7A)œÕ!}Â틪á8¸ù½ñü,‹ÉÆW‡’Ç@˜¨Þ0¼3ŒÈ.Éý" Y#ô!Pq*šÅÊäÂÀBJÿ-)­öQ%»5Ñ’ë·d…À-Ÿ›µ€%ÆÂòßߟlàœÇÞ|HêªÀ;™±sìªFTû(vŽ"5̦՜Ïàé„Wsk¦—Éš½U? gÔ&{æh§X63ˆáNô5S2®¶GZºr¥4 Ðî£Y:DLàZºlZ:ð/áK¯‘ U•RX:Ù”.1pi¡´‘¥ß«ú¨«°#©c`aœ+l‰  swUC ´çÙxÚ¨iÆêQ!ÅÙ^Ä"ÐW?ÅFTBãt¡bã•Áçbr6®ÁÌ΂êÏí“/&ݧÆð{uI0…ÎK‡D;À‘Œ½iÀ„ ¾@ƒ%jxà '\:+Ý»rH¬/ù,«à¬á ;cññ‹i,ö–Ÿï‡0}9~ ÓhÉT5uH¦j5g"„ õq½Fl€ðð3¦šËYˆRO'[!ëz\Ÿ³µ)ñ„y.³Hø®vÐ G„û^„‹ N`?lã9,%ùSÇÖ¯’úÂ|À êûÓ kñÅ4h™è?¦GÖVO–Ãxé‹òÚ¾ˆ/¹²Í :u†F,$ Ãýœ{ ¯Cn vªîHBuâ—p$ì‘9’ïÈ'ºu«z§ËŒôðà…²L¥ÊôRÍ•¶R%H]t}TS®)âF"ͬ3°uª•Б„Pú¾»Ž“"Û›p2 7„;Ä+a½Ÿ-u(Èè2jš‡“™g99%jý§i¿šÚfR.³†³…£Õ¾XO½žg{e0Lƒ;ˆ—¿EŸãÜœ ‘²÷Ù¤nƒ©QÓä¿QL/š*g´«E,Ô!öôé.Ë8¼Ó0×îÚ-¦sWF¸Hf ' ¢œ™õÁ$‘:ÎÜDhºjne„¤Ñ»‹"Gĉnƒ"ýÎÜ7­Â “lˆÀVh¶€c @u˜kÃôdQ1¸GäЬûeòó‡Á Ìí,DJ€Òp¢M¯<‚Hယ¡ÁI’.k)íhTwx ‚¹šu"@Bw+Ö ÈÅÇi¹˜dš|ð'iª(í…K$ã\“}ˆ€ýÌ>ŽgYDýÊœ%‘¬„nF‚j{\Öü);‹eÉ„^ï“HT[+ ¬DÆn_¯ÊÕUv¦((Â:5¯Q0¢–¦ÈXH˜b5ò _š íÈû4ÁY1“òÑh·¤ôªxû†Ö¶¦,!MY›uR † ìûkΓµ£ó¾C ]¸Fbœ¶€"7ØÎÞ9A#%¿EÀ‰ 6ãx’Uêé5lnºgÇ ^BñD/÷Fˆf&ô`Þ·ÓèÐÅ\\ Ñaƒs‡ ®ûüÄx‹¹Ÿç¢øYs\‡õµ¢£¨¬®ÎÜ{dÀº±ªEÎ?D ë´ÑWåÎüX4¿j¥ØÁüãñÌýÐç’sÁ™²s?Æ”Œû1f™o“4W ÐÂBWõWÅÝ’ar`Ûw­2Vé}/§:Þ%)Ònu¡†—ä¤*úÞÖR…©už€1ÊT8é<÷—â¥zJܲ,‚` u›™<˱þÂ8"'¨œ;žÿ1µ¿[®fÜ,6ès¶.¦LUî$xP¡çŽ\%Uàr$ê $ÒÔ©Á‹yêjdçÔ‚o}ݪ¡þ;+{ÐŒ?¯îÙÐ?%ÊbØvåÕã4¼?ŠT³H˜Ñ¿ˆ«Z  ²Œgñ%¦íxbo‰/´¥lY ¯ÞhݪÙ‚ íÄHü–rRøeœ^³KÜ –ÕQ²d1L6×ϲâ©Æ§Èýþ¼U?Ëp±x³ŠØŸtÁÚ¢ù_ ïJ‘%–ˆÖ+”ŨóQM4‹†ß0ql×ud.˜aJiÉ´´J°K;¥T(ð CN ”&aGàqÎw£®škJ2`J†ãT¹Šã†ýÜ›ô—H8Œ/÷IZðq¥$ft²¿r¯I´´…ìØŸ'!ZËF–úkŠyfºK­ä[X¹ƒ¬­˜þ“q_ªY“R’!²—°åyœ"¼Ø0CÍß&rÍÁcHýÑÝŠiŒŒ%ûáŽcJúYáÀ(Õ;cs¬L&a~ÍiäçïZ5Q¦”ÝÈ«.•óè`†ò¤ÅUE*Š›X$R—ÇÊTý„¢¼yÎôá­•(†Ti_OÆ“o:WýbÃs>*†\¸ÆyF½!¼V¯?g9¯i8ÃecWf™±I#ap8 n>ÀrZy5ºš ¼SÛÑ æ‘ OÙÉÞÈãÚŒR02ðõÉXœ¥³”BD[VîVë2õ»·xáÂIp°ÝAÈìÞŽ Sšðã^UÁ"¬B ÌÁyÏ®náñ\äÔ®Lq;B*ÞbY/"<ÒÃNÏ@Øú×z1l«TÿÞêM 6¼Ö¯Í+Ê€4¥w©w,%i5ÏU´‹‹$G bæÊ÷™C!»¡šRTÞóŒÚ"Odƒ›ç‰½¯»ŸÎÙa½JõgåøåÝClVb†¦võ{扟[)!.ú&uÑáx”„ÉrÕŠW‹[7CŠl2§†¤i“Ü)Œ>Ø‘2€’ØJb‡eFà±’% Š\µ- gXæ§ÞMWÐtðþ¡¾x]cB]e1L—G…`õoXØMŒ%ý63<„†€ÎˤÈâç'Æ)Øh?óQƒ¹ÖßÈO—ß¡ì€Ý‚RÙ ‰€“jüaq·}aÁ؄ПäÆ O“gH:,µ.­¡à!)1øÓÿQ·õ=„F2•[{!‚[,9ú'Om¥w¡j¦÷ZǰÝ}†·±Q}/.°&­Ò]õëÆÃÚšj·+ùbbì¾%T 0¦Ð˜F¶}`ó¶é,“-ñË2£8˜avz‰ý릋'Ýá7’q¢ƒ†C vá0Ë&ÿ55Á;DÌ¡÷¡˜-1ó(¿Áå9W÷'Éø}DKÆÊK޾ø˜P.]qÿ$0‘v3–ád´°T'ÿ0tP›j-¿‰øu¬ÚVµ¿f6-p`Rê—˜M00ìJ2²hð ¢Ù·Û‰ iÕýBʘê-ê×nù€^©ÖÅð£2¤A€ú·)eV(ª&N%~©A‡¯@r†€Ê$R]¸L‚ÂôztŽ5açJD¢ E7¿‘^žNÈTÖˆçFŸ¾ÐæEûT© aºã¥åØ7M:˜°oì9O#\üƒDfßé.â% ‹œk­+ 0 èž/¸ã> /Contents 81 0 R >> endobj 92 0 obj <> /Contents 93 0 R >> endobj 99 0 obj <> /Annots[102 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R]/Contents 100 0 R >> endobj 119 0 obj <> /Annots[122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R 128 0 R 129 0 R 130 0 R 131 0 R 132 0 R 135 0 R 138 0 R 139 0 R 140 0 R 141 0 R 142 0 R 143 0 R 144 0 R 145 0 R]/Contents 120 0 R >> endobj 148 0 obj <> /Annots[151 0 R 152 0 R 153 0 R 154 0 R 155 0 R 164 0 R 165 0 R 166 0 R 167 0 R 168 0 R 169 0 R 170 0 R 171 0 R 172 0 R 173 0 R 174 0 R 175 0 R 176 0 R 177 0 R]/Contents 149 0 R >> endobj 180 0 obj <> /Annots[183 0 R 184 0 R 185 0 R 186 0 R 187 0 R 188 0 R 189 0 R 190 0 R 191 0 R 192 0 R 193 0 R 194 0 R 195 0 R 196 0 R 197 0 R 198 0 R 199 0 R 200 0 R 201 0 R 202 0 R]/Contents 181 0 R >> endobj 205 0 obj <> /Annots[208 0 R 209 0 R]/Contents 206 0 R >> endobj 212 0 obj <> >> endobj 213 0 obj <> /Annots[218 0 R]/Contents 214 0 R >> endobj 223 0 obj <> /Contents 224 0 R >> endobj 228 0 obj <> /Contents 229 0 R >> endobj 235 0 obj <> /Annots[238 0 R 239 0 R 240 0 R 241 0 R 242 0 R 243 0 R 244 0 R 245 0 R]/Contents 236 0 R >> endobj 248 0 obj <> /Contents 249 0 R >> endobj 253 0 obj <> /Contents 254 0 R >> endobj 258 0 obj <> /Annots[261 0 R 262 0 R 263 0 R]/Contents 259 0 R >> endobj 266 0 obj <> /Contents 267 0 R >> endobj 271 0 obj <> /Contents 272 0 R >> endobj 276 0 obj <> >> endobj 277 0 obj <> /Annots[280 0 R 281 0 R]/Contents 278 0 R >> endobj 284 0 obj <> /Annots[287 0 R]/Contents 285 0 R >> endobj 290 0 obj <> /Annots[293 0 R]/Contents 291 0 R >> endobj 296 0 obj <> /Annots[299 0 R 300 0 R]/Contents 297 0 R >> endobj 303 0 obj <> /Annots[306 0 R]/Contents 304 0 R >> endobj 309 0 obj <> /Contents 310 0 R >> endobj 314 0 obj <> /Annots[317 0 R 318 0 R]/Contents 315 0 R >> endobj 321 0 obj <> /Annots[324 0 R]/Contents 322 0 R >> endobj 327 0 obj <> /Annots[330 0 R 331 0 R]/Contents 328 0 R >> endobj 334 0 obj <> /Annots[337 0 R]/Contents 335 0 R >> endobj 340 0 obj <> /Annots[343 0 R 344 0 R]/Contents 341 0 R >> endobj 347 0 obj <> /Annots[350 0 R 351 0 R]/Contents 348 0 R >> endobj 354 0 obj <> /Annots[357 0 R]/Contents 355 0 R >> endobj 360 0 obj <> /Annots[363 0 R 364 0 R]/Contents 361 0 R >> endobj 367 0 obj <> /Annots[370 0 R]/Contents 368 0 R >> endobj 377 0 obj <> /Annots[380 0 R 381 0 R 382 0 R]/Contents 378 0 R >> endobj 385 0 obj <> /Annots[388 0 R]/Contents 386 0 R >> endobj 391 0 obj <> /Annots[394 0 R]/Contents 392 0 R >> endobj 397 0 obj <> /Annots[400 0 R]/Contents 398 0 R >> endobj 403 0 obj <> /Annots[406 0 R]/Contents 404 0 R >> endobj 409 0 obj <> /Contents 410 0 R >> endobj 416 0 obj <> /Annots[419 0 R]/Contents 417 0 R >> endobj 422 0 obj <> /Contents 423 0 R >> endobj 427 0 obj <> /Annots[430 0 R]/Contents 428 0 R >> endobj 433 0 obj <> /Annots[438 0 R 439 0 R]/Contents 434 0 R >> endobj 442 0 obj <> /Contents 443 0 R >> endobj 447 0 obj <> /Contents 448 0 R >> endobj 452 0 obj <> /Contents 453 0 R >> endobj 457 0 obj <> /Contents 458 0 R >> endobj 462 0 obj <> /Annots[465 0 R]/Contents 463 0 R >> endobj 468 0 obj <> /Contents 469 0 R >> endobj 473 0 obj <> /Contents 474 0 R >> endobj 478 0 obj <> /Contents 479 0 R >> endobj 483 0 obj <> >> endobj 484 0 obj <> /Annots[487 0 R 488 0 R]/Contents 485 0 R >> endobj 491 0 obj <> /Contents 492 0 R >> endobj 496 0 obj <> /Contents 497 0 R >> endobj 501 0 obj <> /Annots[504 0 R]/Contents 502 0 R >> endobj 507 0 obj <> /Contents 508 0 R >> endobj 512 0 obj <> /Contents 513 0 R >> endobj 517 0 obj <> /Annots[520 0 R 521 0 R 522 0 R]/Contents 518 0 R >> endobj 525 0 obj <> /Contents 526 0 R >> endobj 531 0 obj <> /Contents 532 0 R >> endobj 536 0 obj <> /Contents 537 0 R >> endobj 541 0 obj <> /Annots[546 0 R 547 0 R 548 0 R 549 0 R]/Contents 542 0 R >> endobj 552 0 obj <> /Annots[555 0 R]/Contents 553 0 R >> endobj 558 0 obj <> /Contents 559 0 R >> endobj 563 0 obj <> /Annots[566 0 R 567 0 R]/Contents 564 0 R >> endobj 570 0 obj <> /Annots[573 0 R 574 0 R]/Contents 571 0 R >> endobj 577 0 obj <> /Contents 578 0 R >> endobj 582 0 obj <> /Annots[585 0 R 586 0 R 587 0 R]/Contents 583 0 R >> endobj 590 0 obj <> /Contents 591 0 R >> endobj 595 0 obj <> /Contents 596 0 R >> endobj 600 0 obj <> /Annots[603 0 R 604 0 R]/Contents 601 0 R >> endobj 607 0 obj <> /Annots[610 0 R]/Contents 608 0 R >> endobj 613 0 obj <> /Annots[616 0 R 617 0 R]/Contents 614 0 R >> endobj 620 0 obj <> /Contents 621 0 R >> endobj 625 0 obj <> >> endobj 626 0 obj <> /Annots[629 0 R 630 0 R]/Contents 627 0 R >> endobj 633 0 obj <> /Annots[636 0 R 637 0 R]/Contents 634 0 R >> endobj 640 0 obj <> /Annots[643 0 R 644 0 R 645 0 R]/Contents 641 0 R >> endobj 648 0 obj <> /Annots[651 0 R 652 0 R 653 0 R]/Contents 649 0 R >> endobj 656 0 obj <> /Annots[659 0 R]/Contents 657 0 R >> endobj 662 0 obj <> /Annots[665 0 R 666 0 R 667 0 R 668 0 R]/Contents 663 0 R >> endobj 671 0 obj <> /Contents 672 0 R >> endobj 676 0 obj <> /Contents 677 0 R >> endobj 681 0 obj <> /Contents 682 0 R >> endobj 686 0 obj <> /Contents 687 0 R >> endobj 691 0 obj <> /Contents 692 0 R >> endobj 698 0 obj <> /Contents 699 0 R >> endobj 703 0 obj <> /Contents 704 0 R >> endobj 708 0 obj <> /Contents 709 0 R >> endobj 713 0 obj <> /Annots[716 0 R]/Contents 714 0 R >> endobj 719 0 obj <> /Contents 720 0 R >> endobj 724 0 obj <> /Contents 725 0 R >> endobj 729 0 obj <> /Contents 730 0 R >> endobj 734 0 obj <> /Contents 735 0 R >> endobj 739 0 obj <> /Contents 740 0 R >> endobj 744 0 obj <> /Annots[747 0 R 748 0 R 749 0 R]/Contents 745 0 R >> endobj 752 0 obj <> /Annots[755 0 R 756 0 R 757 0 R 758 0 R]/Contents 753 0 R >> endobj 761 0 obj <> /Contents 762 0 R >> endobj 766 0 obj <> /Contents 767 0 R >> endobj 771 0 obj <> /Contents 772 0 R >> endobj 776 0 obj <> /Contents 777 0 R >> endobj 781 0 obj <> /Contents 782 0 R >> endobj 786 0 obj <> /Contents 787 0 R >> endobj 791 0 obj <> /Annots[794 0 R 795 0 R 796 0 R]/Contents 792 0 R >> endobj 799 0 obj <> /Contents 800 0 R >> endobj 804 0 obj <> /Contents 805 0 R >> endobj 809 0 obj <> /Contents 810 0 R >> endobj 814 0 obj <> /Contents 815 0 R >> endobj 819 0 obj <> /Contents 820 0 R >> endobj 824 0 obj <> /Contents 825 0 R >> endobj 829 0 obj <> /Contents 830 0 R >> endobj 834 0 obj <> /Contents 835 0 R >> endobj 839 0 obj <> /Annots[842 0 R]/Contents 840 0 R >> endobj 847 0 obj <> /Contents 848 0 R >> endobj 852 0 obj <> /Annots[855 0 R 856 0 R 857 0 R]/Contents 853 0 R >> endobj 860 0 obj <> /Contents 861 0 R >> endobj 865 0 obj <> /Contents 866 0 R >> endobj 870 0 obj <> /Contents 871 0 R >> endobj 875 0 obj <> >> endobj 876 0 obj <> /Contents 877 0 R >> endobj 881 0 obj <> /Contents 882 0 R >> endobj 886 0 obj <> /Contents 887 0 R >> endobj 891 0 obj <> /Contents 892 0 R >> endobj 896 0 obj <> /Contents 897 0 R >> endobj 901 0 obj <> /Contents 902 0 R >> endobj 906 0 obj <> /Contents 907 0 R >> endobj 911 0 obj <> /Contents 912 0 R >> endobj 916 0 obj <> /Contents 917 0 R >> endobj 921 0 obj <> >> endobj 922 0 obj <> /Contents 923 0 R >> endobj 927 0 obj <> /Contents 928 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R 92 0 R 99 0 R 119 0 R 148 0 R 180 0 R 205 0 R 212 0 R 213 0 R 223 0 R 228 0 R 235 0 R 248 0 R 253 0 R 258 0 R 266 0 R 271 0 R 276 0 R 277 0 R 284 0 R 290 0 R 296 0 R 303 0 R 309 0 R 314 0 R 321 0 R 327 0 R 334 0 R 340 0 R 347 0 R 354 0 R 360 0 R 367 0 R 377 0 R 385 0 R 391 0 R 397 0 R 403 0 R 409 0 R 416 0 R 422 0 R 427 0 R 433 0 R 442 0 R 447 0 R 452 0 R 457 0 R 462 0 R 468 0 R 473 0 R 478 0 R 483 0 R 484 0 R 491 0 R 496 0 R 501 0 R 507 0 R 512 0 R 517 0 R 525 0 R 531 0 R 536 0 R 541 0 R 552 0 R 558 0 R 563 0 R 570 0 R 577 0 R 582 0 R 590 0 R 595 0 R 600 0 R 607 0 R 613 0 R 620 0 R 625 0 R 626 0 R 633 0 R 640 0 R 648 0 R 656 0 R 662 0 R 671 0 R 676 0 R 681 0 R 686 0 R 691 0 R 698 0 R 703 0 R 708 0 R 713 0 R 719 0 R 724 0 R 729 0 R 734 0 R 739 0 R 744 0 R 752 0 R 761 0 R 766 0 R 771 0 R 776 0 R 781 0 R 786 0 R 791 0 R 799 0 R 804 0 R 809 0 R 814 0 R 819 0 R 824 0 R 829 0 R 834 0 R 839 0 R 847 0 R 852 0 R 860 0 R 865 0 R 870 0 R 875 0 R 876 0 R 881 0 R 886 0 R 891 0 R 896 0 R 901 0 R 906 0 R 911 0 R 916 0 R 921 0 R 922 0 R 927 0 R ] /Count 132 >> endobj 6 0 obj << /Count 10 /First 7 0 R /Last 76 0 R >> endobj 1 0 obj <> endobj 7 0 obj << /Title(Introduction) /Dest/chapter.1 /Parent 6 0 R /Next 8 0 R >> endobj 9 0 obj << /Title(License) /Dest/section.2.1 /Parent 8 0 R /Next 10 0 R >> endobj 10 0 obj << /Title(Installation) /Dest/section.2.2 /Parent 8 0 R /Prev 9 0 R /Next 11 0 R >> endobj 11 0 obj << /Title(Python Support) /Dest/section.2.3 /Parent 8 0 R /Prev 10 0 R /Next 12 0 R >> endobj 12 0 obj << /Title(Examples and Tests) /Dest/section.2.4 /Parent 8 0 R /Prev 11 0 R /Next 13 0 R >> endobj 14 0 obj << /Title(The symbol factory) /Dest/subsection.2.5.1 /Parent 13 0 R /Next 15 0 R >> endobj 15 0 obj << /Title(Symbols for spatial variables) /Dest/subsection.2.5.2 /Parent 13 0 R /Prev 14 0 R >> endobj 13 0 obj << /Title(GiNaC Tools) /Dest/section.2.5 /Count -2 /Parent 8 0 R /Prev 12 0 R /First 14 0 R /Last 15 0 R >> endobj 8 0 obj << /Title(Software) /Dest/chapter.2 /Count -5 /Parent 6 0 R /Prev 7 0 R /Next 16 0 R /First 9 0 R /Last 13 0 R >> endobj 17 0 obj << /Title(Basic Concepts) /Dest/section.3.1 /Parent 16 0 R /Next 18 0 R >> endobj 19 0 obj << /Title(Line) /Dest/subsection.3.2.1 /Parent 18 0 R /Next 20 0 R >> endobj 20 0 obj << /Title(Triangle) /Dest/subsection.3.2.2 /Parent 18 0 R /Prev 19 0 R /Next 21 0 R >> endobj 21 0 obj << /Title(Tetrahedron) /Dest/subsection.3.2.3 /Parent 18 0 R /Prev 20 0 R /Next 22 0 R >> endobj 22 0 obj << /Title(Rectangle) /Dest/subsection.3.2.4 /Parent 18 0 R /Prev 21 0 R /Next 23 0 R >> endobj 23 0 obj << /Title(Box) /Dest/subsection.3.2.5 /Parent 18 0 R /Prev 22 0 R >> endobj 18 0 obj << /Title(Polygons) /Dest/section.3.2 /Count -5 /Parent 16 0 R /Prev 17 0 R /Next 24 0 R /First 19 0 R /Last 23 0 R >> endobj 25 0 obj << /Title(Bernstein Polynomials) /Dest/subsection.3.3.1 /Parent 24 0 R /Next 26 0 R >> endobj 26 0 obj << /Title(Legendre Polynomials) /Dest/subsection.3.3.2 /Parent 24 0 R /Prev 25 0 R /Next 27 0 R >> endobj 27 0 obj << /Title(Homogeneous Polynomials) /Dest/subsection.3.3.3 /Parent 24 0 R /Prev 26 0 R >> endobj 24 0 obj << /Title(Polynomial Spaces) /Dest/section.3.3 /Count -3 /Parent 16 0 R /Prev 18 0 R /Next 28 0 R /First 25 0 R /Last 27 0 R >> endobj 28 0 obj << /Title(A Finite Element) /Dest/section.3.4 /Parent 16 0 R /Prev 24 0 R /Next 29 0 R >> endobj 29 0 obj << /Title(Degrees of Freedom) /Dest/section.3.5 /Parent 16 0 R /Prev 28 0 R >> endobj 16 0 obj << /Title(A Finite Element) /Dest/chapter.3 /Count -5 /Parent 6 0 R /Prev 8 0 R /Next 30 0 R /First 17 0 R /Last 29 0 R >> endobj 32 0 obj << /Title(The Lagrangian Element) /Dest/subsection.4.1.1 /Parent 31 0 R /Next 33 0 R >> endobj 33 0 obj << /Title(The Crouizex-Raviart Element) /Dest/subsection.4.1.2 /Parent 31 0 R /Prev 32 0 R >> endobj 31 0 obj << /Title(Finite Elements in H1 ) /Dest/section.4.1 /Count -2 /Parent 30 0 R /Next 34 0 R /First 32 0 R /Last 33 0 R >> endobj 35 0 obj << /Title(The P0 Element) /Dest/subsection.4.2.1 /Parent 34 0 R /Next 36 0 R >> endobj 36 0 obj << /Title(The Discontinuous Lagrangian Element) /Dest/subsection.4.2.2 /Parent 34 0 R /Prev 35 0 R >> endobj 34 0 obj << /Title(Finite Elements in L2 ) /Dest/section.4.2 /Count -2 /Parent 30 0 R /Prev 31 0 R /Next 37 0 R /First 35 0 R /Last 36 0 R >> endobj 38 0 obj << /Title(The Raviart-Thomas Element) /Dest/subsection.4.3.1 /Parent 37 0 R /Next 39 0 R >> endobj 39 0 obj << /Title(The Nedelec element of second kind) /Dest/subsection.4.3.2 /Parent 37 0 R /Prev 38 0 R >> endobj 37 0 obj << /Title(Finite Elements in H\(div\) ) /Dest/section.4.3 /Count -2 /Parent 30 0 R /Prev 34 0 R /Next 40 0 R /First 38 0 R /Last 39 0 R >> endobj 40 0 obj << /Title(Finite Elements in H\(div,M\) ) /Dest/section.4.4 /Parent 30 0 R /Prev 37 0 R /Next 41 0 R >> endobj 41 0 obj << /Title(A Finite Element in Both H\(div\) and H1) /Dest/section.4.5 /Parent 30 0 R /Prev 40 0 R /Next 42 0 R >> endobj 43 0 obj << /Title(The Nedelec Element) /Dest/subsection.4.6.1 /Parent 42 0 R >> endobj 42 0 obj << /Title(Finite Elements in H\(curl\) ) /Dest/section.4.6 /Count -1 /Parent 30 0 R /Prev 41 0 R /First 43 0 R /Last 43 0 R >> endobj 30 0 obj << /Title(Some Examples of Finite Elements) /Dest/chapter.4 /Count -6 /Parent 6 0 R /Prev 16 0 R /Next 44 0 R /First 31 0 R /Last 42 0 R >> endobj 45 0 obj << /Title(The Taylor--Hood and the \266dn-\266n-2 Elements ) /Dest/section.5.1 /Parent 44 0 R /Next 46 0 R >> endobj 46 0 obj << /Title(The Mixed Crouizex-Raviart Element) /Dest/section.5.2 /Parent 44 0 R /Prev 45 0 R /Next 47 0 R >> endobj 47 0 obj << /Title(The Mixed Raviart-Thomas Element) /Dest/section.5.3 /Parent 44 0 R /Prev 46 0 R /Next 48 0 R >> endobj 48 0 obj << /Title(The Mixed Arnold-Falk-Winther element) /Dest/section.5.4 /Parent 44 0 R /Prev 47 0 R >> endobj 44 0 obj << /Title(Mixed Finite Elements) /Dest/chapter.5 /Count -4 /Parent 6 0 R /Prev 30 0 R /Next 49 0 R /First 45 0 R /Last 48 0 R >> endobj 50 0 obj << /Title(A Poisson Problem) /Dest/section.6.1 /Parent 49 0 R /Next 51 0 R >> endobj 51 0 obj << /Title(A Poisson Problem on Mixed Form) /Dest/section.6.2 /Parent 49 0 R /Prev 50 0 R /Next 52 0 R >> endobj 52 0 obj << /Title(A Stokes Problem) /Dest/section.6.3 /Parent 49 0 R /Prev 51 0 R /Next 53 0 R >> endobj 53 0 obj << /Title(A Nonlinear Convection Diffusion Problem) /Dest/section.6.4 /Parent 49 0 R /Prev 52 0 R /Next 54 0 R >> endobj 54 0 obj << /Title(Expression Simplification) /Dest/section.6.5 /Parent 49 0 R /Prev 53 0 R >> endobj 49 0 obj << /Title(Computing Element Matrices) /Dest/chapter.6 /Count -5 /Parent 6 0 R /Prev 44 0 R /Next 55 0 R /First 50 0 R /Last 54 0 R >> endobj 55 0 obj << /Title(Python Support) /Dest/chapter.7 /Parent 6 0 R /Prev 49 0 R /Next 56 0 R >> endobj 57 0 obj << /Title(Basic Tools) /Dest/section.8.1 /Parent 56 0 R /Next 58 0 R >> endobj 58 0 obj << /Title(Debugging) /Dest/section.8.2 /Parent 56 0 R /Prev 57 0 R >> endobj 56 0 obj << /Title(Code Generation) /Dest/chapter.8 /Count -2 /Parent 6 0 R /Prev 55 0 R /Next 59 0 R /First 57 0 R /Last 58 0 R >> endobj 60 0 obj << /Title(Quickstart) /Dest/section.9.1 /Parent 59 0 R /Next 61 0 R >> endobj 62 0 obj << /Title(Defining Finite Elements) /Dest/subsection.9.2.1 /Parent 61 0 R /Next 63 0 R >> endobj 63 0 obj << /Title(Defining Basisfunctions) /Dest/subsection.9.2.2 /Parent 61 0 R /Prev 62 0 R /Next 64 0 R >> endobj 64 0 obj << /Title(Defining Coefficients) /Dest/subsection.9.2.3 /Parent 61 0 R /Prev 63 0 R >> endobj 61 0 obj << /Title(Defining Form Arguments) /Dest/section.9.2 /Count -3 /Parent 59 0 R /Prev 60 0 R /Next 65 0 R /First 62 0 R /Last 64 0 R >> endobj 65 0 obj << /Title(Defining a Form) /Dest/section.9.3 /Parent 59 0 R /Prev 61 0 R /Next 66 0 R >> endobj 67 0 obj << /Title(Argument expressions) /Dest/subsection.9.4.1 /Parent 66 0 R /Next 68 0 R >> endobj 68 0 obj << /Title(Geometric Quantities on Cells) /Dest/subsection.9.4.2 /Parent 66 0 R /Prev 67 0 R /Next 69 0 R >> endobj 69 0 obj << /Title(Symbolic Language) /Dest/subsection.9.4.3 /Parent 66 0 R /Prev 68 0 R /Next 70 0 R >> endobj 70 0 obj << /Title(Examples) /Dest/subsection.9.4.4 /Parent 66 0 R /Prev 69 0 R >> endobj 66 0 obj << /Title(Defining an Integral) /Dest/section.9.4 /Count -4 /Parent 59 0 R /Prev 65 0 R /Next 71 0 R /First 67 0 R /Last 70 0 R >> endobj 71 0 obj << /Title(Defining forms with callback functions) /Dest/section.9.5 /Parent 59 0 R /Prev 66 0 R /Next 72 0 R >> endobj 72 0 obj << /Title(Computing the Jacobi matrix form from a nonlinear vector form) /Dest/section.9.6 /Parent 59 0 R /Prev 71 0 R /Next 73 0 R >> endobj 73 0 obj << /Title(Compiling a Form \(Generating Code\)) /Dest/section.9.7 /Parent 59 0 R /Prev 72 0 R /Next 74 0 R >> endobj 74 0 obj << /Title(Options) /Dest/section.9.8 /Parent 59 0 R /Prev 73 0 R /Next 75 0 R >> endobj 75 0 obj << /Title(Compiling a function) /Dest/section.9.9 /Parent 59 0 R /Prev 74 0 R >> endobj 59 0 obj << /Title(Using the SyFi Form Compiler) /Dest/chapter.9 /Count -9 /Parent 6 0 R /Prev 56 0 R /Next 76 0 R /First 60 0 R /Last 75 0 R >> endobj 77 0 obj << /Title(Example of generated code) /Dest/section.10.1 /Parent 76 0 R /Next 78 0 R >> endobj 78 0 obj << /Title(Data Flow During Code Generation) /Dest/section.10.2 /Parent 76 0 R /Prev 77 0 R /Next 79 0 R >> endobj 79 0 obj << /Title(Code generation design) /Dest/section.10.3 /Parent 76 0 R /Prev 78 0 R /Next 80 0 R >> endobj 80 0 obj << /Title(Code Formatting Utilities) /Dest/section.10.4 /Parent 76 0 R /Prev 79 0 R >> endobj 83 0 obj <>endobj 90 0 obj <> endobj 91 0 obj <> endobj 97 0 obj <> endobj 98 0 obj <> endobj 102 0 obj <>endobj 105 0 obj <>endobj 106 0 obj <>endobj 107 0 obj <>endobj 108 0 obj <>endobj 109 0 obj <>endobj 110 0 obj <>endobj 111 0 obj <>endobj 112 0 obj <>endobj 113 0 obj <>endobj 114 0 obj <>endobj 115 0 obj <>endobj 116 0 obj <>endobj 117 0 obj <> endobj 118 0 obj <> endobj 122 0 obj <>endobj 123 0 obj <>endobj 124 0 obj <>endobj 125 0 obj <>endobj 126 0 obj <>endobj 127 0 obj <>endobj 128 0 obj <>endobj 129 0 obj <>endobj 130 0 obj <>endobj 131 0 obj <>endobj 132 0 obj <>endobj 135 0 obj <>endobj 138 0 obj <>endobj 139 0 obj <>endobj 140 0 obj <>endobj 141 0 obj <>endobj 142 0 obj <>endobj 143 0 obj <>endobj 144 0 obj <>endobj 145 0 obj <>endobj 146 0 obj <> endobj 147 0 obj <> endobj 151 0 obj <>endobj 152 0 obj <>endobj 153 0 obj <>endobj 154 0 obj <>endobj 155 0 obj <>endobj 164 0 obj <>endobj 165 0 obj <>endobj 166 0 obj <>endobj 167 0 obj <>endobj 168 0 obj <>endobj 169 0 obj <>endobj 170 0 obj <>endobj 171 0 obj <>endobj 172 0 obj <>endobj 173 0 obj <>endobj 174 0 obj <>endobj 175 0 obj <>endobj 176 0 obj <>endobj 177 0 obj <>endobj 178 0 obj <> endobj 179 0 obj <> endobj 183 0 obj <>endobj 184 0 obj <>endobj 185 0 obj <>endobj 186 0 obj <>endobj 187 0 obj <>endobj 188 0 obj <>endobj 189 0 obj <>endobj 190 0 obj <>endobj 191 0 obj <>endobj 192 0 obj <>endobj 193 0 obj <>endobj 194 0 obj <>endobj 195 0 obj <>endobj 196 0 obj <>endobj 197 0 obj <>endobj 198 0 obj <>endobj 199 0 obj <>endobj 200 0 obj <>endobj 201 0 obj <>endobj 202 0 obj <>endobj 203 0 obj <> endobj 204 0 obj <> endobj 208 0 obj <>endobj 209 0 obj <>endobj 210 0 obj <> endobj 211 0 obj <> endobj 218 0 obj <>endobj 221 0 obj <> endobj 222 0 obj <> endobj 226 0 obj <> endobj 227 0 obj <> endobj 233 0 obj <> endobj 234 0 obj <> endobj 238 0 obj <>endobj 239 0 obj <>endobj 240 0 obj <>endobj 241 0 obj <>endobj 242 0 obj <>endobj 243 0 obj <>endobj 244 0 obj <>endobj 245 0 obj <>endobj 246 0 obj <> endobj 247 0 obj <> endobj 251 0 obj <> endobj 252 0 obj <> endobj 256 0 obj <> endobj 257 0 obj <> endobj 261 0 obj <>endobj 262 0 obj <>endobj 263 0 obj <>endobj 264 0 obj <> endobj 265 0 obj <> endobj 269 0 obj <> endobj 270 0 obj <> endobj 274 0 obj <> endobj 275 0 obj <> endobj 280 0 obj <>endobj 281 0 obj <>endobj 282 0 obj <> endobj 283 0 obj <> endobj 287 0 obj <>endobj 288 0 obj <> endobj 289 0 obj <> endobj 293 0 obj <>endobj 294 0 obj <> endobj 295 0 obj <> endobj 299 0 obj <>endobj 300 0 obj <>endobj 301 0 obj <> endobj 302 0 obj <> endobj 306 0 obj <>endobj 307 0 obj <> endobj 308 0 obj <> endobj 312 0 obj <> endobj 313 0 obj <> endobj 317 0 obj <>endobj 318 0 obj <>endobj 319 0 obj <> endobj 320 0 obj <> endobj 324 0 obj <>endobj 325 0 obj <> endobj 326 0 obj <> endobj 330 0 obj <>endobj 331 0 obj <>endobj 332 0 obj <> endobj 333 0 obj <> endobj 337 0 obj <>endobj 338 0 obj <> endobj 339 0 obj <> endobj 343 0 obj <>endobj 344 0 obj <>endobj 345 0 obj <> endobj 346 0 obj <> endobj 350 0 obj <>endobj 351 0 obj <>endobj 352 0 obj <> endobj 353 0 obj <> endobj 357 0 obj <>endobj 358 0 obj <> endobj 359 0 obj <> endobj 363 0 obj <>endobj 364 0 obj <>endobj 365 0 obj <> endobj 366 0 obj <> endobj 370 0 obj <>endobj 375 0 obj <> endobj 376 0 obj <> endobj 380 0 obj <>endobj 381 0 obj <>endobj 382 0 obj <>endobj 383 0 obj <> endobj 384 0 obj <> endobj 388 0 obj <>endobj 389 0 obj <> endobj 390 0 obj <> endobj 394 0 obj <>endobj 395 0 obj <> endobj 396 0 obj <> endobj 400 0 obj <>endobj 401 0 obj <> endobj 402 0 obj <> endobj 406 0 obj <>endobj 407 0 obj <> endobj 408 0 obj <> endobj 414 0 obj <> endobj 415 0 obj <> endobj 419 0 obj <>endobj 420 0 obj <> endobj 421 0 obj <> endobj 425 0 obj <> endobj 426 0 obj <> endobj 430 0 obj <>endobj 431 0 obj <> endobj 432 0 obj <> endobj 438 0 obj <>endobj 439 0 obj <>endobj 440 0 obj <> endobj 441 0 obj <> endobj 445 0 obj <> endobj 446 0 obj <> endobj 450 0 obj <> endobj 451 0 obj <> endobj 455 0 obj <> endobj 456 0 obj <> endobj 460 0 obj <> endobj 461 0 obj <> endobj 465 0 obj <>endobj 466 0 obj <> endobj 467 0 obj <> endobj 471 0 obj <> endobj 472 0 obj <> endobj 476 0 obj <> endobj 477 0 obj <> endobj 481 0 obj <> endobj 482 0 obj <> endobj 487 0 obj <>endobj 488 0 obj <>endobj 489 0 obj <> endobj 490 0 obj <> endobj 494 0 obj <> endobj 495 0 obj <> endobj 499 0 obj <> endobj 500 0 obj <> endobj 504 0 obj <>endobj 505 0 obj <> endobj 506 0 obj <> endobj 510 0 obj <> endobj 511 0 obj <> endobj 515 0 obj <> endobj 516 0 obj <> endobj 520 0 obj <>endobj 521 0 obj <>endobj 522 0 obj <>endobj 523 0 obj <> endobj 524 0 obj <> endobj 529 0 obj <> endobj 530 0 obj <> endobj 534 0 obj <> endobj 535 0 obj <> endobj 539 0 obj <> endobj 540 0 obj <> endobj 546 0 obj <>endobj 547 0 obj <>endobj 548 0 obj <>endobj 549 0 obj <>endobj 550 0 obj <> endobj 551 0 obj <> endobj 555 0 obj <>endobj 556 0 obj <> endobj 557 0 obj <> endobj 561 0 obj <> endobj 562 0 obj <> endobj 566 0 obj <>endobj 567 0 obj <>endobj 568 0 obj <> endobj 569 0 obj <> endobj 573 0 obj <>endobj 574 0 obj <>endobj 575 0 obj <> endobj 576 0 obj <> endobj 580 0 obj <> endobj 581 0 obj <> endobj 585 0 obj <>endobj 586 0 obj <>endobj 587 0 obj <>endobj 588 0 obj <> endobj 589 0 obj <> endobj 593 0 obj <> endobj 594 0 obj <> endobj 598 0 obj <> endobj 599 0 obj <> endobj 603 0 obj <>endobj 604 0 obj <>endobj 605 0 obj <> endobj 606 0 obj <> endobj 610 0 obj <>endobj 611 0 obj <> endobj 612 0 obj <> endobj 616 0 obj <>endobj 617 0 obj <>endobj 618 0 obj <> endobj 619 0 obj <> endobj 623 0 obj <> endobj 624 0 obj <> endobj 629 0 obj <>endobj 630 0 obj <>endobj 631 0 obj <> endobj 632 0 obj <> endobj 636 0 obj <>endobj 637 0 obj <>endobj 638 0 obj <> endobj 639 0 obj <> endobj 643 0 obj <>endobj 644 0 obj <>endobj 645 0 obj <>endobj 646 0 obj <> endobj 647 0 obj <> endobj 651 0 obj <>endobj 652 0 obj <>endobj 653 0 obj <>endobj 654 0 obj <> endobj 655 0 obj <> endobj 659 0 obj <>endobj 660 0 obj <> endobj 661 0 obj <> endobj 665 0 obj <>endobj 666 0 obj <>endobj 667 0 obj <>endobj 668 0 obj <>endobj 669 0 obj <> endobj 670 0 obj <> endobj 674 0 obj <> endobj 675 0 obj <> endobj 679 0 obj <> endobj 680 0 obj <> endobj 684 0 obj <> endobj 685 0 obj <> endobj 689 0 obj <> endobj 690 0 obj <> endobj 696 0 obj <> endobj 697 0 obj <> endobj 701 0 obj <> endobj 702 0 obj <> endobj 706 0 obj <> endobj 707 0 obj <> endobj 711 0 obj <> endobj 712 0 obj <> endobj 716 0 obj <>endobj 717 0 obj <> endobj 718 0 obj <> endobj 722 0 obj <> endobj 723 0 obj <> endobj 727 0 obj <> endobj 728 0 obj <> endobj 732 0 obj <> endobj 733 0 obj <> endobj 737 0 obj <> endobj 738 0 obj <> endobj 742 0 obj <> endobj 743 0 obj <> endobj 747 0 obj <>endobj 748 0 obj <>endobj 749 0 obj <>endobj 750 0 obj <> endobj 751 0 obj <> endobj 755 0 obj <>endobj 756 0 obj <>endobj 757 0 obj <>endobj 758 0 obj <>endobj 759 0 obj <> endobj 760 0 obj <> endobj 764 0 obj <> endobj 765 0 obj <> endobj 769 0 obj <> endobj 770 0 obj <> endobj 774 0 obj <> endobj 775 0 obj <> endobj 779 0 obj <> endobj 780 0 obj <> endobj 784 0 obj <> endobj 785 0 obj <> endobj 789 0 obj <> endobj 790 0 obj <> endobj 794 0 obj <>endobj 795 0 obj <>endobj 796 0 obj <>endobj 797 0 obj <> endobj 798 0 obj <> endobj 802 0 obj <> endobj 803 0 obj <> endobj 807 0 obj <> endobj 808 0 obj <> endobj 812 0 obj <> endobj 813 0 obj <> endobj 817 0 obj <> endobj 818 0 obj <> endobj 822 0 obj <> endobj 823 0 obj <> endobj 827 0 obj <> endobj 828 0 obj <> endobj 832 0 obj <> endobj 833 0 obj <> endobj 837 0 obj <> endobj 838 0 obj <> endobj 842 0 obj <>endobj 845 0 obj <> endobj 846 0 obj <> endobj 850 0 obj <> endobj 851 0 obj <> endobj 855 0 obj <>endobj 856 0 obj <>endobj 857 0 obj <>endobj 858 0 obj <> endobj 859 0 obj <> endobj 863 0 obj <> endobj 864 0 obj <> endobj 868 0 obj <> endobj 869 0 obj <> endobj 873 0 obj <> endobj 874 0 obj <> endobj 879 0 obj <> endobj 880 0 obj <> endobj 884 0 obj <> endobj 885 0 obj <> endobj 889 0 obj <> endobj 890 0 obj <> endobj 894 0 obj <> endobj 895 0 obj <> endobj 899 0 obj <> endobj 900 0 obj <> endobj 904 0 obj <> endobj 905 0 obj <> endobj 909 0 obj <> endobj 910 0 obj <> endobj 914 0 obj <> endobj 915 0 obj <> endobj 919 0 obj <> endobj 920 0 obj <> endobj 925 0 obj <> endobj 926 0 obj <> endobj 930 0 obj <> endobj 931 0 obj <> endobj 371 0 obj <> endobj 95 0 obj <> endobj 953 0 obj <> endobj 528 0 obj <> endobj 954 0 obj <>stream xœ]Aƒ E÷œ‚ VM »qѦi{„Á°⢷/ŒÚE’ÇÌþ°a¼ŽÖDÊÁÉDªUV· t‚ÙXRVTÂ*á n¿?h½ó],Àž]SãS¹›¤S°z!!;é‹‚÷ZsVýµêÝ0écòRq”nx GéVwkŽJXdl8*á„ËÏ5ùŸœø Hå؈gaìœÖXø]îÏ.šD¾{Ä^~ endstream endobj 231 0 obj <> endobj 955 0 obj <> endobj 88 0 obj <> endobj 956 0 obj <> endobj 843 0 obj <> endobj 219 0 obj <> endobj 216 0 obj <> endobj 957 0 obj <> endobj 86 0 obj <> endobj 958 0 obj <> endobj 694 0 obj <> endobj 162 0 obj <> endobj 959 0 obj <> endobj 84 0 obj <> endobj 960 0 obj <> endobj 961 0 obj <>stream xœ]‘Ánà @ï|p“°H—öÒæiÛ0U%ˆ¦‡ýýlh§i‡éalc§;žOç´î²{/›ÿÄ]Æ5…‚·í^<Ê/kdXýþ°úõW—Ew|uùë;£¤ ›¿¹+vÓ¨ë‘nI~ xËÎcqé‚bVÊÎ1Z)ü é¾e,ñÏU@ƒ%ÛPÁ°¾Ø À4°F[|Y÷vÖGÇž´}0qô@eª@Jeµµó°Ø 8Òq´¥ÌÂjl…4°:[!õ¤†ÞkÚ›9×PÓ™:ós8ŸùÜ›ô÷R0íuÛu›¼Ä5áïÉ[æ,IˆðÛ}u endstream endobj 160 0 obj <> endobj 962 0 obj <> endobj 158 0 obj <> endobj 963 0 obj <> endobj 544 0 obj <> endobj 156 0 obj <> endobj 136 0 obj <> endobj 964 0 obj <> endobj 133 0 obj <> endobj 965 0 obj <> endobj 436 0 obj <> endobj 103 0 obj <> endobj 966 0 obj <> endobj 412 0 obj <> endobj 967 0 obj <> endobj 373 0 obj <> endobj 968 0 obj <> endobj 372 0 obj <> endobj 932 0 obj <>stream xœcd`ab`ddduö 21T~H3þaú!ËÜÝý£÷§k7s7˺ï…¾ ~×ãÿ®%ÀÀÌÈèæéœ_PY”™žQ¢ á¬©`hii®à˜›Z”™œ˜§à›X’‘š›Xää(ç'g¦–Tê)8æä(t+¥§•¥¦€ìuÎÏ-(-I-RðÍOI-Êc```24b`bÙÄzä?cÃk¾ÿL–… Ýë,Y¿}>ã÷Iw˜¿?þ) º¬³'_ÎÛÇ +©›#}q÷ÙîCË9þLbÏê®S—KMg›Ûó¿oC÷ªîïB »8Ö§²«wÏX#5íÁ÷7__¬g<õõ{óæ½ß½D3Ù:Jê›[íºk»9~û°}y±nùñ]W]8ÙýŠã;¯âÕß"¿ÌMô#¶µM]¼bÎú¹-ëÂåV]:¿pW7Çûý¶V&¾nÙéò¿[756uwvçKþ0`ã+ŸÿÓ~þï%³¾çMeû8}=×-n9.óù<œË'óðÜšÍÃËÀê_¡( endstream endobj 96 0 obj <> endobj 933 0 obj <>stream xœµyX×Þ÷¬+;c71cÀ˜{¯Ø{ÔX°cA ,½×¥,»ûß…–^v鋊`݉F£&šhÔcÊÍrHî{fcrssßû=ï÷¬úˆž³sþíWÎH¨Î(‰D"³w\=ÑVüÛ0á-‰Ð¿“ð¶tNûÅ¿%Á ºK¡{çšþcn½., åôB3{SVÉÂ¥Înžö~þ;¼·a?rÀÄ3¦ ˜ïë¸ÃÃ]>ÀÑ=x»—¯{0ùÁgÀ?^ÁãÌ÷ñ°ZÜ4`µWW`¨—§åáö~¾þ!Á^ý<½å+|½¼Ý¼|‚Ý)ŠÚ4_¾ÁÎo£½¿CÀ‚À…A‹‚ß Yº$Ì}iøÖeŽ‘žË½Vl[é½jûêkv®Ýåä³Îwý¤ÉSM6púŒ™³†öæ:gx¬Ëˆy#GmÝ}LÍc£ÆŸ0Ѷ«¤[OŠD­ fPƒ©•ÔLjµŠJ­¦†Qk¨áÔZjåD¤ÖQ£¨õÔhjeG¡6RöÔXÊ™r ÆQ›¨Ôxj!5ZDM¤Þ¥l©ÅÔ$j 5™ZJM¡–QS)GjµœšN½A±T_*Œz“²¦:Q6T?ê-ª?%£b(šŠ¥8Š¡â¨TjÕ•êFͦºS¾TJNÍ¥zR~T/ª7õõ:ÕG¢‘€„œ›r!…#[AÒSr½Ó²Nû¤³¥5§v6YõµR[½¹Ð2º€¾Ï(˜G]¦w©é*ëz¢ÛÂn¿uÿ ‡}œž£z*{ èÜëûÞѽï¼fûZþëÌëÏû”¾1òïÙEì/}7õ=ÿ¦ß›÷­yël›Õý^ëWÞ¿UÚߺQáí¹o7q ¸Xî:ŸÏ0 vÀÇmº ,d3(pЋÁË=„²nÈCgýlhë°7†æ8L=¼ëðuÃÏØ:¢f¤ÿ(Jn¥zþ³Ó½Î˜Ñ³à`”o¶,cSrÔé1j•2 {µ>µŽÙê°TÃÈéó:ì…*8 jÆL»kMä§tÐés#k¤—Âõq •ïäät©î6YRסTܲ" ¦‘ÁÅB ‹|ß GËÈør¡¿Q‚¨ËÈã²TX…RXx UÁ{äû\ÒwÀ(ðšžÆh~áþñVrúÃÌ$g—Ñ®ñ°„<¥B×Lža†æ¶ƒ-ƒCøæŽÝg¸[.ÿ´èê%¸ÁÜŸ|¿Éá…ø#é轺Œƒz]ö]í§Åë§c)?ź©3öòÈŒVÐß4M›;sùü‘|ÏJždRŠÁÖ(©¾‰ªoJ7´“EìÈ0ƒ»ˆ_Ço|7ÉP×gߢ×9¼»²ÛÀµ@~Ìÿæ,ì‡z8¿ûPÕƒ5°öGTzîÞ Ë`lÇ¿M›Ã½à5BŸÝ– ß ÷Ù½'ç’ƒ5j5Yí¤ b¶Í¦Ø XµJÅã9¸ /GÍÉYêTH·1U¤ŠÅ VÏ$¥ñ‡¶â|¹ªoäŸZã9’•êî’4›á®%Ía´:«†G.49ÉéQT¨¹e¼YÒüXª¶ h™Ã^‘¬Q+’9çÙ®§Õ؃ ^ŠmÉg ö@“ñ´MŒ£NÙ¯Ð(“ø< 3 F³¯Ù¡ýhåÁë?}m‹Gy]¨r€ÉƒT#ß6"x7 cK$?^F7¥Hg°m½nG6z^Ñ/ž!õû-–LrY–¢â¯Ð˜GæZz’ߺó/ažÅB1h³ ª+®æÆ¹ ¸3î¶hò\ynq\m„*±ß\ì¨ÁÛ·…¾¤ûÿ²¿Ð24 õC£#r"³1Ïäqß_µµ°¿­¹~’݃<r€aàk4cWÏßé¾bë4Kµ;Ÿ}%âš›¨€àÂRÁ‘ “mQïyjÉo§Ác±5îóÍH$i>XÞTËcǿÄe(ƒ…]òà`ïm^ªh`æ­|‚¤¨ûµÏ?¹½Êz1Ïù¶â]4£ºÝÔÿr.‘¶¼Ž lˆ,OrÀs€ÁýemSPúˆþ&Ûg _‚ BdSâ}FsJÖ67624voÌÇC˜Y ²jm”emiªx9†Íý$ÑçÚÑïÇ‹?ß–’¼Å°Ï}š©M—˜• þŒ¼4¾ÀhÌ­¬ö¯Ú2U>><™Ó © ÷û 0¬Ò‚j‚(YElÛìZ¾gKVùÕÖÚ©ð!iÚÖÊ=•¬L÷ù†øÌä|éÉêœZ龤ŸdíœÖí4ÅαÜ$”Õík24Ìëòð@- )a:¥0 S‹${¡ˆCRtG˜e™Äð„$ΧÜ'}ÉcïÅkãa{ýv~ß{I‡NÅçªÊÊ¢sCÀÙ¸iÒâMõß…p)E ÕhÕi) &”<îOG€2K¯Õš 9}èò ê]š n2?8s»yçžï½Û?}qŽoº]œcv›?D’ôq>:N›˜©Àdƒ¾ˆÔ[J4C¨Åš…–ažuGÚÂ#gv_šþÁ‰õBð…]0ü N즿Lóæ—ÒX†ßL ˜WEûÈЮ:xíÁËð‚ NÿûÐ"ý*$Èk—ŸCZv1™ù‰Ø@Â$ K>ºSz©Ž/Úµwg&0™^À·uÓ~f4Ý(ùá2ê_"E³…a,hÆѲ™f¬÷è *&ì ¼›ÆÒO‚O^Ü{á:÷~ÈZÚ^îî¹r/™ý2ie³¥æ'îH…'Âl]jÖuÎh–©g†ò…lŸa¬À'ÈÉÿvÍïsNZEÄÈê—i¯ÊªãQ:‹þ~M¤‘&y«¡ƒõÑû‚ÛÑ΋詮ïÌP9É¡Ïi»¯úß‘"ß¶ðop%bhSH`¾¤¶bh%ôßC{‡ }ŸºXŽB¿Ó~l‚K “ð–YR$K…1è+ÖPRxà’–€Œ\> ѰY¤•ýj½/ÄC‚Z©Œг­qgT£ÌÓ õPDú+P½žÖN¢˜–‹NCVJŽŒ±ÖÇè”9麌B¦§¡Æó?qfÉñçh4!¿ÞÂÏb^±|‡=)ÑΗ=ú•Ø£­n´­ËJ§Ð•™g|¹jeuÔ2eQå;‚b¶9\v|ðùãs¨ׯdíÑ´ØJ…ïI4%ê ÅhÕ$99œ“x¸Cê $¥(Æã|ëᨖœP©6Uu`"ñSo%«w‘õkÄõõ«ÎŽÕ'çìÌ›ŠUÖ£Q¹2—¬O³©ÜÅ–ƒo$Áû‘õËÄõÇIðÙ»Ðë$ø´øÔ¤l0€>U_ðª·þ×ë£ô*ØdCjFZ6Ó.9Œ(²¸üî9£äàGhëå›Óú"#K ¿Ámßö=®ynÀÌXæ´D^SZVXXÖè Ñ|éþ£E À>ë5‘÷ ñfÕ¼i0—™ýuàù5-æÒ\v{Ia:“÷:d ½:(1Æ NæsKޱ#ívnqÞZ{Y£¹9µ:1-Ó^é/¢§±ùûê ò‰z|»ªê¶ÎÒqà °²M;š4E ÑI !¡ø >jnÒDzás‹f|uÚèϳÁ™o-£ãa'ʾW爞ÇDæGÝquZrZ’Ni£KÑ*!™ñó†(˞ɞ h‚qDêwmgWB:]Ì’,!IŠö¢xÖ\¿¿¹ØÔxøHÆQQm!ŠÊ¼Hu6ŠgÉU$C0D&Ä''.i=çUZ²2l ]_TÝÖ-^måãP¬6ù£.x¬µN–L [5g¤"ÖÍÉ-~‹¨a뉗8@„ŸšÄƒ¥¦äCddfåæ›ö6–í®Ú^é]é]B¾0£üÅ]ºc„Ô÷’]çÄ]ë B´‡y‰%ãhG¡QTDÔѬ–%l›ô± JëÓ:-³ª)-£tÛ¯?J%éZ—@÷¼Î‰…"Ðe”Õ4¦ú§8¼ö]…{7æã᳜`{Mde¬ Ò P|ªÇåW‹Å"ÃcqlÌä6• ¼G×êrpÕf™\=‰ˆT_°ýk0@Ö.{¶‹n ñfIñ ©0=`+¯ÑC;Àì"eh±:µ!˜8*0)Š¡Xo¥¨<982­ME -æL&L¬âjqÃÈTæú ‘­¬Ý‚:%1Ò×ßËŸð"à¡&­¦,<7"2T!÷ªÛvòt㱋"5Œ%t„Ìw›-:Ìõžý&ÈØ¸m°5¨0²¬´8Ï|eÁÑ™¸Ë¸Á¢Ò'bÌ YW£îC¨4ª8âàäëÌò™'Ñ4󋯦úSÑž¥"ÿ*¦v¤/ ?‘¢È–1lR±†Éàñ/ʼn–ö—1YwÒb(O¶Éº1p¤’hi”ükW‰Y`c †4=¥´ô´Ö¶Þý.ç?³ÈùÏÚu‘…†„ªªÃãe! Ñ$†cyëÖmQC‰`c”T ¤ÂkÂpÖ-“‘¾"‹Ç“¬Jdéß×! i'F†÷µ¾m¡ƒÝ– eV!²,‹Ü„»‰bGö§6%©,º(E'EÝNzt¨yKÍr²š>¿û<‰:Ý<ØTœÇ/¤ÑÀ—Ô&üƒ^Òú KJ¯Š Ú¾U¾˜Le¡u×sJöòÆÝ »›àÔ¸fEåD’âGüÑ>õ/&–IQhËD6!W£ !+—€r¨LbZ÷Ñò—k3/”Ò™‰ 6Ä!;£¾ä÷›Ø9+F«É x­KÓêá*m†#O-Í·Îâ²ÖA€Ø|OÁEη.¦_v”1²·XÆÄ R¡ŠfKtPüÂé îe“†àÞØúûQDžw;„(Sº2-9‘©š˜ön°;0îêÐ|¾˜Ö³™hâ—EUð3¤ãÚb¨-z*´´ev‰(é¼K[Ö£¯YäÇ [lGüíH<™(074ODöh&¡Í¾²C±õ7È€Ôˆ¿÷ä9zk Vâ\Üü(qFoÃL”n” ÉÅGD¬¿#Ê2+3¦QÙÃÇ3óÕÉ9\Š&0äLpATiYAAY·yÓ‚ÙNC9ÜeŽü¾ó÷J½Ãƒì/#ÚM´YèÔc)’#bÊçÈP—Ÿo¿x6êKü¾œŽÿ ÇÔ¨˜Eåmžë‰ MlµÅˆˆÖîݱ» 9ºoB:“äüUduß1’v´˜=âÓÙÀ<¼òá§•‰õ»öðûŽ€žÀù­V¤(ÏÄdÅdéKŠbª¶¯÷ÜÃù–nÏ%Ž}⻋殮ٖ•ÀÇEGÈ ™¬ª ÌTnŽÝì ë™…OV£^¨Ûó“7ʓήØÍm¨ØS`9$AD±"+¡LP˜^˜•ÇGhøJ¿÷¼ˆl^³!àà–üèýÁ§¹•ûÀ”†x$+4¼r…ÜlőēšŒäªò¤¦”=¾»ã³*׿3csX¢®óeP 9¦4ƒ¶ŒÀÜAo=Ùe)î+6z¯V1LêóL_)²ZÙŠÐR¿€Pß²ð²ÝE%æðrÈ— ÉËÕ£$€l8ïYî1Sôûx¡3ÝV¤PsËÄJIótýŒy SØ ¹®Mp‰¹vúâ-4½OÝ’Îéâ %«Ýv"W‹3T¥@l·sù¦ ‹s܈3”δº©Ð­Îƒ¯ñ¬Iø(¢&ñTL^ò‘àÝN°†ygÃtWÇìÎܪ)×5{5" wØaW‹N×êr2¸´LS]f~­ÇÅ÷I«v¾óu:|È/¿ík¶gÓ†cDb|&ÄXr±ãÞ#’ 7’Œê â ¿Ðÿ€’Šêâ²2·$ã†Aì©!ôÚøù«Ô>ÌUè3‹‰*, ŒŒÚÔpâúÙ 8!¾ýzŒ0 õž}@üôÀ–™lë3Y"t™‡l µÈ–è¬*ÈTUÚ8fZÍôˆÉyËe{t?À>òùöD{Ó#!ï=^0ÓP®3¤eêÌP d»Á;ÛZîÚ•¬l ¥Ÿ¨e‹XÐ&e‚R/6gf^=wPkj˜:€ˆ¯qRE:*Ôä$@¡á0Q.VB(ý—#$Ö^4‚G¡êåýƒ¾túýYÅr£Ü&?4#b˜ˆe(Y\Nj%Q¶DÝŠ‹ý‰ƒòklg_Ò'ýÚ¬ø?*E¹ÉâcfŒ]1¸ÙsÂÿÁt÷¤ñPÄ B}õÿŽzÒç?µ¸ÈµaY9‘§<ëÿ²ß[¬Úšý?ÉáWÂ;f ¯é•ðÚÏkj$CG©€„;¬¡¼ðà-1‘,ÖàåeëqM¾„•®NŽÁ+ZÖx£P¨µ’ÎÆÜåc3Ïr¾¨ÍØ\€È÷@±­­Ÿ›G”¿6Uô¹ÿ”Žÿù¯DÌkqÿæM÷Qž1Ÿ:•,ûÿöfàÿ(¥Ï;µ§¬ð7é/¯ wÙ‚£fc“¶ÝM¹‘ÞsjKÀyMÑ.’2¥*Q„Ç´Ê­ñT4©êL⦫OB™%eóIÊä„-E= yªìˆŒØ Ÿ\o<¸uµ5ž,(IæDÿ]}*,—Úó,mо£™LJŽrnýÍZ–b€LÑO磙B5šÕZ Ö«2Eµœ–¦ÏowÔ¡•_}‹†–¡®”I>|„6å± a6R“¢F¡'ývXöEý‚ÑøÍEÛ7Í(ý@ÎïQšÅës¨Ñ/( ÆËö+;Q´}ùèÅ×ó¯.䔟þn1·gœ5|þr;݉ù¦²üê=Ay!ÉjШ¸úŸ=Áì½=2\µF¾…÷uÛ¡"v¯íH„x8³àFâèRôk σ>&Qq‰nnõ¶’£‚ ô6µÂ®jÚÞ7ýAä?zaF/z°­=p Ý)¢¿D«ˆ¿‘m”¼¨DQw¤è á{ ¦FC$²º~//M­O&…KIà×mRÀbp1†g&¥’c“ÉQÖ«Ó5$ØÂʬ÷ªÂ #<§~(ª\«çOÉhw›õ|Ðj·@¿€ve&Œ0¡w]õ6¢¹F)ê)üÊj“ˆÁ…˜¹paB‚ø²Qê•zÃíOìBpƒ‡<<$À¿8¤º2·XË¡Õ}ÿ«õɆ¿¾ÛX&i¼‹RîJ‰R{Á¢tÔ«¡¹¶6Þ·˜‹ó‚­!ùáå…ùæ^Ç'ßgYì«PwÇ/äñSÔÙŒûj¸íι~ õ²ËÀ÷t‚)¡Bq ®1·kŸ?6 Ã:Š$tBY?ÈyEкԚ@.]–¡®M‡:¦$º8 *2À±Éýz õ@6È•àÎW&áN£Æ“ÂY?žøÝ'õÍÇ~c*©“ÿñ„â¨zÂw‡à4­h,ª¬47Ãû`Þ˜lt†©ÍLó=‰ëH&Rzœ+¹°ö ¸Þ×}AI=Ïq›38ƒk£û±#gÞ;{âËšó¦º"kíÔÏïo½÷WEù¥@rJ"¶Íß5p«÷*¯e¤i(ê»u¯¨úú9Ü`²4ˆ™±|Ó âò…œ.)U¬œŠ8w5óþ%6ôL‡p¹S_S{*mrØ’Cƒ¸­ó؆ Œ¼äà¸jy’˜~ÏW¤í¯¬ãµ©'ÞÏ4´#‚Ð`º{T‚d(OŠÔ¢œy÷/ˆF²=¤ ߪ- ˆ«C#ë$Í-¥-ÓЧl^GB4ßz_á…Ï ÷‰®ýËÿikÍØ]H0×á¿ÅÜöÃ^{$¹‹nI…·[ưryhØ.ˆ†˜TSXNXn0lƒ@—õy1Öf³É¸ò ½ï5ÆcK¡JÊœèˆyø34Ÿ4Âø6X ³š  ¹ðî\½j0ˆ €!gQ&ÌžeŽ¥ æâ’ŠÊð_ÿØpHÿÕú¶·O8ÍôËZ£äÛf)º…‰øJ]dáðkÐ @[­;‚f!uÍjû¶t¥.%v†ýHgnðà€{mîvbÀYÜýîÂ¥iz]º˜Ø+[,È‹nÝ»A¦óÞÕ’nJQ8R²p¶ìË7ªL»ásÞý‚©• –zW&æ–åT—(J5WrâLÙI‘œÁÎkeDxd¿È.dÈM„†S²³!£ˆ«Ã,ˆí$ººÄþ=,NâªA:n*Pï5ˆY‰ºÏ¸LŠR¬ua$ÿݰÓxà-€×¹àY˜Á]meOÖ«Órï^ÿöwüûRDêÞ^(tÝ$ô3J.¡_¥(SÈeQïñ9 ⵘM^NvA¾"-AÏãAWÑ€«9é†4È·)ˆËŽQ)!!ŽÃ½Çå¡©Ú\MIØDCl\j,£ óðTÜûë8ƒF›61qñQÑY)%-ÄÆ%'¤@´MTN|^ª 9êý8Ï´RÒª˜Ü¸|(m‰&·îpjÝ/¶uÄÔIQ*NeëFýbû¬÷û-šn›™¹&ÔP‡If~«“ ƒQ‹Ì²—ãÍâOP‘Ñ6c3ýr\ùIEÄ æs/ï,º4 ^Ÿ×ˆo´‘ñ ÙdPhÔâ‡Lƒ» +Ù÷êÏfÕì¨æÜU>ñò²ØÂ¢²œÝÇ]Í€»nÄé?]—ý«QAwÐDúpzìVWþÝ:‹Wÿt$Èž ÓúöBè>ÏŽáÍÏÎЧs©©ZâÄ(—¬pÛ̧¨È™SÚæýæ'ˆ~%J32¶Ç(,%€”¤ U&‹<ÊÔ¹>Ìàk‡ü/ñúû¸µ°ÈŠ~zóÐÇ5:H*ã´)M|B¢‚<)15²0ÁïЬyWRóñ„Êp¿mÏ~³µ õßÏ/ÜJ¡UÍ’l”+EehÛŒsÚ…12% ÄH…d`­1atÍ·qü±eéöKÄTÓ/kÈ\ ¯I»WV/¾ìÓYÈ3V•«äðÃßì”±bzlâ3³sS³²Ó:´Œ±¥ŸH\(ó¦TX‹>fážòŽ÷Í­÷ìKœa8È·M÷[¦pLÁ¨ »Z‡}ó®€ÐtÂ|¦ö†î[8Ãà-øv,) G’øsp®Á]ø¤àlá•ã»ÅMg‚‹§ä®†Ùă¾ óâ—‡ãNË·ÃK—!4˜’ð»*E-,[ Ú0.Èã¶!@˜¯”TâTÓZD{«â&q>rY¥îì%Ÿo ’Tȇž¤Ê©mçnøýòY™%Çž D».C³Ù™*2q­"*)a51ö v”U–ž¿TQ†Æ §OÀsÑ>%0Ã,1eÃAH5Uäï© /öK°8¤â›_æ‹ã§:Ï_½”Ç®8Ô*Ht\¶œm±2ŠwÝK[F¡ äqÊe@b¨2J•¸ ˜Ù²œÓ棎||øc¸Ç [£ÎÖfµÂoÏ8dÄŽÛ¿¤Ú%{ Y» T™ÊüD“Ò¬,#ú`ž`…ÆËJtPôÑ®aÇyùmÿá&ƒÆý|ãùóŸßÁãæù½ã7Ÿ‹Ü´}<80á©âûq²v/U<Ùáo©`ß²ŒMÊS§ÅT§$Åà¿N·V«ÔÉd¸’µ#×2GfÔjÓÓÔéêT¾ÕZx΢ŠÖ&«Öýâ-Ϭ1¿ß½“‰ó¼øõm©°D¼}—™1ƒºÈîl:˜Ÿ§T¥ÿùö½v{õF¯ˆ @. nޘѸóúÿË™ôü·õ¸!q(¿ÿ¢þ\ÆA5sþÊÄpa¤!&?9…€9Ä´£_Þlü-Àñà¿G»5þ~»ø°wãF`ÆazÀÿ|ù/ ´õ@¼ôk›w×)œ›zGbdVTA2¯I"Ë`šîjj™gÂùÈ/K†Ý³is×Ëݸ®§»w1ºw¿\нEýëò endstream endobj 232 0 obj <> endobj 934 0 obj <>stream xœeS{LSg¿—¶·W|lÝÐ]ÚÊ\|/ê†ç┌± ” Î×FÖÚRª¥”ry–—€Ðöô¥<Šê☠S3|L N§&†á+Q¢d`\¢˜çâwñ«²[ð±¸?î—óËù}¿{Îï;‡$„AI’☄/6-]çrï‘Ä… €yr‰í8"‚` `Dc38át4<Ý™FL%ÉØø­ÚÜŠÝÍŽÿ~uèŽÉ0䵚4V>/f¾|itô'òÕéj£v›B/OP°iêtË|}Æ6­šÍÿP¾Z§“'ndÉ“ÔYjcŽZ5QHLFº!›Uå *µQ¯4*¶íP³ãâ¬á¿Hɾ@:uêëT(YƒÂ¨Ö‡ZfL\áQ€§~™ÊÊNT–¡gÕy¬–?5F….¿J¨´Y"ÿeî4*Tvx ‚ ‚?Š\öñŒ·f%&mÚb H+ ¤´“ÒIV“»IYCºÉZ"„·› ˆÂ@ÔSÈò ÅAÁ;‚fá2aæ™° jì ˜Qy+Cuö‘¨½O€Úy(écÄb<‹š¨—”Ù} ÕÕòŠ’*ÁM±h§ÅRoªôó”þ ê,jêÃÿSyA™-Aƒ}¸‰§«üÉü´2“–óÕ€`4‘yrMN‹ÝâH=ׇ‰êÖ [ÀIy¢N÷£ˆ;wº»°ƒƒ®­€¢" Jñ]|>Ÿþhð‡ßóË‘ ŸiaVÕÔ—ØÁ´Çµ²7þË%¸vçI€ _Êɱ ÉmSU,©·@Ð%e°³ÊYe·Èº4½q½˜@‘¸î:¾~ `¯àh|z%ŽˆŠR(,f‹ÌôN7Ô{ìÐØ(EwÑù¸à¢éÐѲ×Íx3Ñ/ñÁÈ"4-Ñ[ÊónµwÕV^-S¶`Éå4Çâ:¸@sn1œ€ñ·U§’ŽÇv ÷ 9pŽæ®‹á ·Ñ7Ã5NÞFºlÙ¼%™Òy[æ¯ÌÁ¡æ\(ƒ8Ú¯ƒ6ZKË"Ö.ÁT¼©ÌjجžòÞÔá˜<ÝÉ‚JéÐ1¡ÌITпÙgú#¥so A"+)¬Vó.«ò ”Û÷,-Ìßè¼³*Á:a?’ ƒ’¼û0âêûxŽ~õPð˜A%’ŸìM^ðÑŒ{Ø,caÚ¦SŠ‹hÑ9TŒ~¹*½‰ú.£k=èÆ!¤=„¾íD’ú_ùã0t€/ÏYµÝR Fz»ÏÔÖîkìêÙp8yÕzLâï“¥æRÌðô,"/ÖãO·cYþšïpâ  5Æ6…>-ä—¢•Vñ;²2°`³Õ6sÝŒ0'ÌÕ0¾{uåî’⪲ÒJ©¿áùE¬å*°LÞhºÚ# Ím¡œß">1ùÄéda~Fð¤#®à`þ !ˆøâ¤ endstream endobj 89 0 obj <> endobj 935 0 obj <>stream xœ­Z X×·Ÿ˜ŒZëT°v—ªh¥Ö÷…º¸àހТl²„@v²¹!ì„=a‹l"*b]°*Æåß(jÝ­µ¶µUkmm_{ã»ô½w@bµoù¾÷Eøœ™;÷ÜsÎï,¿8„M‚Ãáð\=Ö¯ÿdJçÇšÞç˜Fô1}ÀU"±I÷ÊÍ à‚6µ#ÆÍbšóT‚“\géÊ­®aáb~àžãxW'ÇOfÍšé¸h¯??pçŽPG‚ÿ½;ø"Äq]ØÎ@ØÙqQHˆ£g瑎žþ‘þühÿ]ݲ]Ãö†G üùŽa»üù¡Al^ºyq˜kø§KøK#— –G­ˆvîù­ïôˆÙµÊõî5{Öx® Z¼!dãÞMñS¦MŸ1s¤Ë¨Y£gÏùpîØyãæwZ8aëDï|&ù:oûxrì'qSb±š˜EŒ&ÖcˆµÄ‡„'1–XGŒ#Ö㉠„±‘˜@l"&›‰ÅÄ•˜DxŸÎÄVb ñ1±”˜L,#>!–SˆÄT˜F¸Ó‰•Ä Âƒ˜I¬"\_b(± ‰÷ˆa„=чp ¸Äp†xŸAÄ`Š`‰¾D?b$ÑŸ˜K æ‰ù„±€D,$ïÞćx—Ø‚½„_‰#~á8û8õ)æäîâ~i³ÚæˆíxÛãäb²‚7‘—Í»GÍ¥2ûŽéÛØoz?M¿Ÿú‹úß5àÖÀÅÏÙ9Ú)ì^ Z5¸ÿàæw&½scˆókﺾ[1tÂÐŒ¡7è9ôý÷ßë–6ì{/ûvw‡r‡¾kø‰÷]ÞÿyÄ„  û`/3‡IdÚØal0{ÚñSÇç#'Žlùۨɣ6ÒŽjõtô˜Ñ‚Ñ/Ç|:&tÌÃÿìÓ'°ëú ÐÆ`¨åèMÛ¹ð¢é-= SdÁhpÇ>û  ÕƒBö'²Pjj"A[ mlá ²ÙØ†D¾þX‚X¤€óéìÚ³0)ó¥"Õ‚ÂU@y ‰í{…Þ4p~2ÂõF®i¼ëÍ2v!rž mKªÌod­%á@$BHk+²Ü}Ö-‰„ì3èýyÛÆ„›ÍñÌraï!`¬ú8?a¬‘{Ùé®:—WvH#»¢,L&!÷üw÷®{ç–°­ÅçN€/©k > z•ÐÐæ}]é±Ç{ת™,"ÐÆÂa¼_µÓ½ü=¦°Ýåøµc0B6´7 ¡á;“_àÕÄäñè4äljþùãOpƒ¶"ÚÕãö³'_\¾ví‹Î=ºš÷H4˜Š œÃFx¦k 5= ‹Ay˜X‘$KaR¥RqªÌï€OÑ@!Ú1hr‡}ÐûpìûÕ“ïê¢Ab|¬"&•¢wÆÊbå<ràD8ñ$~8s~ûÇ…¬:*W®T(Õš%"¾NéH†‘ }Ÿ¶ò{YÞÚ¨?ž<ƒïÂA3½Øg[²„mE¯ƒ§c¿xþ0ÅÑçÚÚŒ_2qÙ²Oîþ¦•±FÇ#,1r/õx¥ËëR¡ü¶’~GÁ)pš œˆXdÛÑJ›¤Ïx:µ'ÑÀ5Èq^Wä¾Ól„Zì7“#] *‚ƒ@”ˆñDÚ݇—bËqœ&¡¡Èî»ñs£¹¥\Ç¢H_^|àǬú’nÒë¼\æ,ð¸ñøéµkwo·ÌöèÕÆàÎ.³Ù¯aÃM‡Í4´'€¨¡T”2yÝÒE ²‡;aš)‚úP^Æ\æÕÉóôd¯d}‡4ÜreJ6dçÖ³_ñzUpGZ^¯ìv_på]. kiØÿáõo2³€2“QïÙ—š ¨Šâ’ò–Å[–{î]çÃê–7ÖbÞÛ¨}•±•–e  0 5p^áãq¬áXKÃo×p …ª75ì°±èTÛ!Ýk¹‚£-"·’Ö!tÝ‹ \“‹ilü#å%³³Ò±÷fF¹úU†í±õâŃ„C²û `=µ;0ÀÙ}GÕ—ÑŒ¢05Ÿ(|(!;† ¢öirAssÌÿóÔ:@AäýŽë¶f³S‹Vç#”¾®þé³ ßˆt&]Xšªy-< p¶ž0pšŒ°ƒj%  µÕf€ +åšIŪðQ³5{>º Ðùþ÷NœöWÀªùe ϼ)üשRŒ»"ÄÔ—Æ5¡×‚hƲÛ13kÏœe ÙG(“tþ"ðË3/ô/µ <(DE3ÊÕžÉ@Í­•ìß²å## Àz.4µÒå=ù6ŽE‹¦åÈ@¿rK à§q|³¼òiT7®ª@ 9–UQ8i Ø(+pÈ¢žìEZ)Ú[®LÃé.½V¤ö’³–EùÎêXÉ{ó¹†üøBØ‹«J´ÌžJPÂ\þÇ…MÙ‚U}ieÉrË^/;¤ZI¹eÕ‡æ}:øÊÀ©0pMs±Kª­ŒÒÇ¢h‰ëÀ-DÀ[¶Uo_QMBzžXÊ€C(ùû©Þ’aàÜþ .ŃϪ·Úažåtw:>!§Î–Ç$nI¯`2³Ô¹ —ÒÅ–E ÄqaîíÞ?>¼ú c}ê"“ˆkÚˆO]Yõ@'· ƒ­’L©ŽmK®S5A ¤$ŠÝ…Ëd¡©bJIn‚ÜuYNc~» T²Г¬€âÔ àp¤çh¯æ6ŸUëq{¢JÈ ÓÍ×.O—%@ ²›¨^ÇÏ6üaà´¡k:6Ñ·=ï£÷wLKÃËâʳÒ¨©RéÒ5ª `?hàa tMÚÚá–÷=`õé¿V?©¿”yàsFÔšvP••Ýn‹¦gųn—iÜtEû‰b¼A* Öl¯o>ÿç~8}-½6B~gû2Ñ¶Ñ ÜnƒWbŽ™ÿ›mEåßžtº¢‘„ýÑD\ô]l­ÐÞ§{gÁ!Ñ[~d´¸–H¸o€Toažnºòf0täv¦ÜÎLQÃüC¡F}mþÛJ #”ãýal}n¥êËÑ:¤AVµ‰è®Mx%ݵI̸!¹¹6!ìg8Gîý6Ë͉÷Ä0R”§ä'ë¡Ò¾âí‹õ$tDÉ (@ZÄ´¸0y2ß{k¦J­ÎùTEl±€#ð¯ßÙú¼Ò9jƺžÜĈºÛÙ’qèj> R¤ñ &j½—<P3\¯?9UƒÝlcO\T³R^߬Öínmù ‚5 U¼¬u’fÏuiŸ.Í «Á/ÉÉ)Í,ú6€Bª#êí/JyÕ=Ñ»‘Üä‰ÒÊÆ'Œ°‡Ó:‡Öägd€Rª! ˆôˆ ’JƒØ¼ÞŠ]³xè:º˜”’ÄA81ðnWŸ²´!¨Š÷7€6ugë·Í&c‹ýö¯ÔÈ'¢!hÐ#§ßŒ-‡ÊËØ áðë©Ù ÚÓë|f-t]{ãñOíí×Ç×lz ª?´ÁplêÕ¦›tâ~!ˆ”Û?Už_¬ I„iQRnDéfèÔáb¯ Ä…PµõAÖ”[Îë­r㬊\‡HI¦æKªÅ§,ùÉñ,|'¨vXv™kš×Óº2Ðû®xŠCr‡›Ñ!¿:ÁA>þ}uVZyˆH.‹“³üµn p+þ•t‡R¥ ¾1¶þ üt32¶PÖmÿY#Ôc3nƒÖ£hEt8jAGuáp\¡ÓÃù" =DU&K8ƒsà p=ÿDáÙÚ‚à¨O,ܨñóÀ*àæ'mHÚé ¬‡âˆw3¾¼Ï… ³‡hñ[É»×@=“–³»¡¸B³ïÜ·`Îö)̆ñ–†âÔnÅÔ`Žåý,£§‚®Ä•ÖÕ«h8˜„Ôµ¿âú="YòO}/ìoñ[8i’ÚüAþÔ²d£§ïòIìHóþHÜ—¶Ú _§Ý×ãBÏ‹t¢8S¦ÎÈÈaµñ õõªäuÑ lua¥ºH•R£TJS•S[×°Nì›´ƒ ªÌ Ôä%‹§GeúïÛÊÂR÷‚DP–#Y¿W¸ì¢\~]‰S껿^zÇ % ˆñ†$½Å÷èùóÇŽž<Ýâãé¹Ýg#[ƒ~¥=V”ÙØTÁVå«€úöS}osê¡)¬înoßê$@¦¡jú¸¶àpîõ¬Vð58H½éùÂz Ò0üZB~^lN'tK‹AY–xR‹x0”–¦ dd¼ˆªTµ‚mž›)Jœ.Ó”Ê&–œ%Ç’O‚Ûà4¸®çÌ7”—?Ï€N¿6Ï , &b-h¹ÙS~Þ@Ï7¯éÿËô ÑàcfCp3ên~CvYÓ:œº›/qM+ÌC€è4éŽDÆ«Å3;§Ò ¦®iÜ•%gì(Iù7þ­˜’”ª°Ò¨<>£6l_=wºkÓw FY¤,ÙkæBˆé"Cºôœ#æìö«²fL†l¯ûýµíGS3ØÍ¢Œ±•‚¬]¹Òt¿¢ FðuºõäÕ[§vÎ(`Ô¢ô„}¯O DÓáNí߇s±þoÕuþ• ˜…v“I ¶‡í‘˜ÎEªb2¨BдK,Huý>Ð Nµ2yy;”i)ÏÊ(Ý Ú‡¡ƒ¹k‡o!œït¶–ÂvïnµÝô7™gwn´3pþÄõ¥æà„ûÙÖZ%DZß5’hr¶…¿w‹\eyòY‡Ô×ÊÇc­† É»7q[8Å6¸g†m,Û‡“ÖÝþ-#LÀ!çþ·n¿¿UÖDÏIÄqÛ°i£ûYH0ð¹ž÷ë~#ÑÀ¯'½xñõS8y ù1×l4Î*ví:¤ÈÎêú’•ìÌ'•èL œRŸkZ…ÏYWa^`žðU‚Zv6º°9f‰ÜÏAIÊ%Inž ÿÓ¾¶Ò2 ì”PWªHèÐQ‘»G‡³›C9¦¹û­Óçt¤:ÿqM[`] ÍÔ€ÀØÝጼ(êàVà BB¥e}4jo϶u,jçG™•xØÓ}‡°p%ïáÓG÷åx3HÊë"Þø?-±6C¾)‰kÚƒÍ]cVn‘ÅävtGæ)ñPúcC(®{ÃÍ ]†[Q þDItŠÄy)–ã¾Q©O+TÞlcoE¯Í[Õ€,l§/;´jaºh?pÈ:[‘žõ9fœÄÌ*Ãçs“!ÉvŽöƒt­ºÔlC¤,QßÉA«órªÊ*J@©³} ¦AZ¼ÒÆ=e´$S1P¢g`ê³Ú*¶>µÄÖjØç–åj!üw²A–ÈÈH P&Š(4¯c Cáo¶è7^¯uàLç»®^Ëd1h‰Õ2X* a‘–øµÅ™y9LmãÑâÏu÷ħŸÎ^²ræ¦UÇÅlFFv6>¾^P# Vìšùµ+ìþüÚüºð¢‚¶É;¸Þ"ôØy8‡åMXŽ]Ú>¢ó ý·¿üŒ#·"µ(6E‘¢q”¨0ººº¨¬â´ßñ)hþØáöU¹KžýùìL¥úNûnôfO‘Ïvó»Ã´c¡R©2šY)˜áS†3†wÏ.Ÿ;ÍmµkOqÔ™š œã¬l?¬,Ú„B’¸Q ¸¡NUWȨáæpÄ›æçaÆS@uƒA÷H•¼PÐÅaö˜‹ƒ®²'#>~¨3}„𸳘_¡[÷¨%É)^qÙ¨Vµ‹Q­SIAH/PiÕpAu>ý¢ú p‘ê(·y£îYpß5Q;g„ØHßÀ¯éû•ŸmÔ—»¨/êë2oÖڛÁþKÁ:ÊéÇiôv?>zqv÷µë™…5ôÜu'Ïœ5œ¸sǰuýO¯y,ºl3}åÅËׯœ{ðиzù·µ3Íqïé`Öà݇qán“‘VUÈjA*Ø©T{å£öª$U„ìªjUWÂí´úD€Z €twzJ> ´WÅ«"ö}çŠü^j眇ǰ¯°ü&ׄ:9Ì? —ð0µ¸ÄºøöÙ–ƒu•Lý®Ã{[0}¨¾v¼ž¯JM‰!ilZ¨$8P{¶ËHWg¦g²º¦ÒÃE‡)ä ‡Ò±ÐTÔ¹ŠšÊF°@)­Yƈ }Ðåg†\(Ÿäí;URrôxOXo1~kä4™VrMKáKº £=¨s"ÿœŒ AÁu@×è#º¨4Ô‡€DýI&ìÅPnÀTȼ‡Q×`¦RmàÂ*“–VÉ@çgóælÛœªc‹ã u/¯@»; þ!q‚¨ÈÒh}.®Ì̾Z ÷Ñšìì| ¥IÙÒLôô·—eH³$€Š'F‹óåy2¶ •˜Âz$Ë0@ÅÑ¥‰ELº*G•òsÌÀÔ½àÀžßù}ƒ' dñyˆyGƒçàY=Ÿæew¦ð<¶è îOòIb¶¢4w¸Ó¡áÙ‚OBÑ84z|‚Dª ”$+¦¢ê¦ÁxŒ1<¨~ ¾ïýœ5Àýø§¥íÛ6¸#ê“NÈÄ5×}:²AýÚgß<ù´.¸ -Böhz3ùåp²‡<½s±·|Éq)@’Ìù'aç8 r°–~þýeÍ‘$· Ö]§}ü.Ý}øÙ¹æcÍófúzú™{¬3 ÇŠ /pMóM6´&+7Qe1šx™T‘*gw)اþ”;”ÄÄÆÆ'ŠCT¥dTBÕZ @Ü«örµ4S¨ø˜DQ\®D#g!娕‰r‰Ä9ˆJ ³s2ÕY ä^Uº§Å€]@„³@bQqaAIEêw`ÓÝ lVƦƒl@–hÊ4²\IË/Z_ã§ëm6_9áN3;ué«ÁVÍÈb2H& fÿrç…d%ïgàb+RáôÊÉœ=¿ÑÁ9F8WÛÓ«VÓp”%Ç£Qp4Yꃃ@.é£Ñh^oÚ†øŠÄM®ë¸ °FÃ9Ó.ôj--•ç 1Hc£¥é)jl­ÎLΉÑ‡¢.'-#5‹}-s`Íy.¬QÓŠ¡¿WŒ$-ND]éVÿâ$$NÙ¶[TY—•­JÏb^³‚ëpüÕH3ÅZlÕö9ý儜¬®wZÍ[mìµ)X‹òW,5ÊÜΆê~Òr^À«\XozAÇå¦þÈÓ’ä¨ï û$¹T†c;5=¸‰ý¯ÿæQˆ‘ƒ V^unIr–4ƒí­X=ŦíÍZӽƹçDÎÿÝ,ö6mÂõE­ÎÙ]õ%Z“¬`ÐW­L•¥âìã]’X¤Ë)ÎÏ|mêÑj„M9»:g «ÆC\¾qû€†#w´ê#r~†Ã¡;ƒv" =w% ÓÕ_nܸ:9¡ñ+‘ÝÜž£¼NzLzT€ÆŒÜ’¦'é5€Ê+ÌÑÕD‘7!/aÑ'Ï endstream endobj 844 0 obj <> endobj 936 0 obj <>stream xœ•”mL[çǯ117Ñ´‰×YÍ(…¶i›´j”NÕ’x4J ‚RòÒ¤ ˜àÆ1Æ6866ׯ÷ØÄ€íØ¿1à0Í $@B›BéREÛ2õ%/Ú4©í—Vj´çF‰] QûqÕóåy><çüÏÿüÎáa™ÇË’•ÚõÊêuó Ù–Áü–¯b¥Ì݇‡7@r2SÛ²¶=…ÊžDo>^ÙŒñy¼· OHš”­*ùÉ:µ8O’/ÞµwïñþF™J^-Uˆ‹¤ê:Y£TÍ=Äï5UËeêÖ—ÄûÄ¥«?šÅ¥²f™J#«YÏ-ijT¶¨e*qQSL¥À0,[Ѥn‘VU×Êë0¬+ÁcG°˜û#v{+ÄŠ°N>–…Mó¶ò\{3>ççÏfÉ|°á¦`ß O¶€å®dìÞƒ™âÌÎ8Ùr#¼ÈGmH"ôÄ»bžxà¸ú†ƒS·ÿ ø¤»\STÁfªI£ÜѼbèäô7çQ¾ÇGÅÎ3v‚R*óß\C‡‚ ß`Ï»ˆ2a¿S?¾÷D±ÎHXfä#•p´j}£®ÚXNÜìOÀåŠ{ˆð­ÈL ðAP˜ô]OîcçœVÚ‘©çLô\_w¤›È]á­l{¤eÜBçnñ™.”~Wò××ØÍ¬}–ݱýÏEwÑf$DϢ綋 kjS›Dü?}D¦§G>|f¨¢¤²e{}1©(;V~p.pᚢ’Dy(ûS> 0Û…÷}~ˆœë=ù{Aå ‚<¢X›Ç¬2k¸²kØW7¼.h3®Ý ½äW {¶Ûõ`½?Z}ý‡kLjº•"ZOTï+\ ‰Þnèí"¹&ü&õ¸ —C7øŒyFèîry ÷S!m£EA9‰ì”­œF‘®IÑXxyÇäèâèKdOÌ„>{*UùR›g]·Ô»‰}‘Ýñú•‚Û㓱™ ¤ÿxZ3ö'+‰ ©ú¢7Êÿ€Z™M¡áKdbñÊìEÈÄQ©“¶9­d.S¹¦Õ^⡬Oò/|tãá.¡«ÓÝÃÅ÷Z;)‡™¦DÕN›hЉL>N»-f‡Ã4‘·LÒsÈD{.ü;ÊDÑóè¹ÿÏËäšz9áXΪNÅnOzdž‘€ìw(:|aâüàS¾Òz©’ÍV¼C¶«* Žq­ªA_N­Ó)½Ïg2¿¾o…*Žu½_ߟˆOÌT¦ßy kÞ¡£­w¿y(?e§i3Eìß¹ÛÞøaÕÔü\òÁà49þùìØøaʪZuw c¥ñÈWŒ.…v~‹óT÷Ðg÷øh„ãõŽ Ïám䛂à?:á[=iÿÜ8ô@ÌÐ7Ú Í Å[ÂæÞD":v¹ª¿*_ÅþZn!4lƆC½ ´œA!ò3ÁåíEæ*«FDÉGO‚t¦Ðˆ'8Q<ÞêÓ«TÚºòËšôQíøÚhî~D2}ýÚzãêÇÒ;OoaÐ=ô;áÏö„Bù·'(ƒ+9 ¤Éø'1îø†¹†Eðe‰Úr6ßöÅÞÑÁoÖ(¶©›M ‹Ž45˜”Úxª;™“Œ× T]ÿv=–ØòÀƨ… mA£Ô6©¢T0:&Ö;³ôu`”«7îÿ2PؼåÑNºœ"“÷Ld¤{Èë&®¡Š´í¦Þì×7 ˜qÉUUz2>ññ‰à"7Ç?an<¦;ÈM¯ÒÙíïryHO \€¥‚d¡·?‹%S×>¼2 è6¹h©ÅVnôêãCá‰ÁÖóåG*¥Õr¢ô^_×ÆÑ€­¸9Ó /ñ¾ýôVô䲃¶Û´pFtd¼vz"šLˆ¾±àÍG‚mV°9‹ª­@'mÑúd†ºÈÜ–øÃ?ÄÙ¤5»¬ÔŸ•Ú´”MlÊÜÍÙ÷æä`Øÿã•pŠ endstream endobj 220 0 obj <> endobj 937 0 obj <>stream xœZ\×ÖŸeavìGAÍ 64jŒ=JŒ±GPŒÁŠŠ"dY:KYêî]:Òa—&McW¬D][\kž‰¦(F“KbÞßåý~ß]ØÍß÷>]Ô™¹sï=çüÏÿüÏ]E”¥%‰$ ]\¦L6üÓ^&†[ï‰Sq¤°ï­“ê-F½-ë‡.(Ø€Ä~0¹?%‰–,߸0hW¤ÔÇË[f7náûvSfÏþÈn~€§Ôgû¶@;çm2oÏ€m2ráo·&h»§,r’Ý|»Õ†7BìV{†xJä–P“©Ï¨)ÔRj*åHM£œ¨éÔ2jµœšI9SQ+¨Y”;5ˆb©ÁÔÊ‚²¥ÄÔPÊ’F §Þ£$GñTª'5‚êEÍ¡zS}¨¹T_ª5êO  6Q)kj5 y%œz) ½°˜bQ.$öß²\iyÄÊÞª…žO—KFK²%ß0³U» =§ö,íù[¯ˆ^×{õ¾Ñg^Ÿ}{ö è{«ß‡ý{õß;`ä€ËíÞ°^`]>hô ¤AÙqìÁ!ƒÿ9$eÈ _›ßm—Úž:`hñ°Ï‡)‡}3üýáoÞ›ñžâ½Ü{œ†ŸÂðÇø?ì&Ù­±“ÙØÝ1|D͈?Gn*ú H÷‡ôD{_1è…¬â€\íQ4Rxâ>íZ9’¡de|rrŠejP)÷š.«Bõ áÈ‹¯üà fÒ•£¬¼Â‘@*ã_Ó¥5¨¾0ew\ŸœŠbƒ !ìuü•¶¡;–„Ë:ÝÀçzpѱþ8ƒØFT¼[@GKÉ45¨ˆ?†/o1]Á4ºˆÌÚ EÑüXL[{y÷Àé³EAŸs8|‡¤cÜøÌÇÅЯÖ™³ÔÝ'"‚ëXWëDw1…oX°™U]lŒbøQtŒøW¢J~¶Ÿ öVšJÔP/5> &jP1_ICoŠmq©U(BÖ­&wÿ0N‚düSp}]­d¡}dXAÖi}˜ÜuÒCŒ~#q€Ó…,  ¨pöõðsϦam{µâèt™¹³â!s8Œ–öPJø=írÚúÍ.3÷¨h°ºÔv_¿ñšC9ïˆ Xl aÀÑ?Ô/pß°cåtž,œ¬ƒèD_ê¡Z/¼ÀŸ¬8é¶Ä–“ÆáØú—‰`¿ü 9¼ Ï`ç;ß{öÓµk·n_uš<ÉyÞ|Ãñ:!W':¨‡—ÄB„pŸ-AÕ‘) I)œ2)c¥¾µ›5ëHÀY2ïPì„—ùócÛ“½!(^!CJ>é}‡ÄLžñ'Œ‡÷ýÙvéüf‡">#*=º1MH«1,†¥:øP7:¡’M<õ ”½xáì•»LŸ°Øiñ'ÞOrØÞòж#ŠFÄ€èù/` ý¦þ6b£{¤¿oý¼NYäù`µ×þ'`ÑÝ y¨‡2½ø’lçÈb¾¢]Jw_ CƒÌ€é3`<¶å±¤ý+È•€U+ƒ{¬Âý°ØÌ’»®«$ÞwìØrTáã¢<¹]u5«‰Ï,ÇLÄÖ¸ÿÏãÁâÆñæJ-ý6H: YEbÓÅÕ‹æ7ÐKØÕfÏžïtóÉÓ›úoï›ëh„8„ê`K‡Ã†èé7§ý빎 0í\àé½9y|›Ä¸ƒ°pn ÖH¬Û!†HTQÎ=ë|íÁá!°”®t ÝgwGÒ¼Û‡kïaJ‹zóĆô°äÑëc …ìÏ…>œ:¤4¼1š’=š¸Ã³Ö-‹\îÂ[ë÷§Ât·¥ðeÓ™ò‹;Wñ5|D¯õ0œØ(†O¡–…áô;÷>|!ã{`òÈÞv¹¯Yd'™íFwåÍÀÛ:ˆÓùë†X¿‚ÓËÊ2Ã3¤Y™Ÿ /˜šÆ†_¾+ ÎàÔQéQ ÖK Ù’*ORr[´[P‰ñDzÙ^¾‰z*ç­Ÿµ$~ë:tçNßÉ›Öäß—r)e©ùÁˆ1D„/‰FÒú¼us×âuVYK =µñ»“`Vë—eLE˜¦ƒ£„ÏôPC µ<Ù*_u8ª—ɇé8l¹a“+b> ÆÂßþ~¿éŠ S¥|zTv\MçvïØoXJ¼O ç]¿½xÙoïÑxvÄËÿÀ¶ÐëËÃõ•>…½ltÍ Ýï‘!àSI ¤ÍÂ,“ÿð¬‡t7ÊfO7ò´ã4z ¯;wi+CZo_UX§r^ CÌ\t¦š7#JÑ#=x  IV›Ímfc5vÇÞàþ×§Ýä\Ý.—š® —i””¤7“šÁÍü©1ú.Tw«øW#«öÓ¢2ÄÜ¡Kª;.çÝá!Ý«¿T0R§¦8ÄùÍA{9¨”ü}D=ArçСݵͦ Ä•§ %2ÃþS²Õ.Ç”Ùõ³q”aשgàžNT%ì HLêÍÓÃdl-EøÁ=«Ú¿ŒèvV= ü¬ÀGƒ´È¶U¢ü½Œ±¤éD·Ú` ‰Ë²Óú.W 8š6ö°}=svJDâFTÈefef¡¦*B#•…Æø-¿¾éeÛƒs? OÕÂ|=ˆu¢!^,l6lYKæ A‘„WéÈŽº\ηÐëñi+Z{<îPä•´|o”@+>4-i;æRÃí§‰Äê(2ÑýºÕó—p[¦,#æ ²=ˆ2òÊtÕÕEŒšÎrkÆ=2 ¢ÊPjF%™LWì§è^êž×omgÿ0Á¢‘­ð?©:€˜Ú £<Ø–•‘ȃ¿äÖÚïñè­cЂmtUqm^³šC¹jµ&½H]ˆòóõÿE¼õ ¼8 ÷[?aè’+N¯›/ç4œàâ M~$!:+lG¤W”;JDŒ³Ç¾/Z~l†1™|³æ#†ƒ e†qVé¢=]Aï jÚÃÏ·ÿô•UMçÖ:žwŠ£ƒ4ôÄãp<Ãj»é.ô0†> ùó?B¿6ÜÏ*¨K»gÝklïÌ-€¬ºKr Qo6,8ýÜíÙt8 #\¡©æ¬[¶"zØßê3^oyGò·‚nJ‘’I6,!k5³w¦ ¢Ííò¦+¡wWu#%¼Fª[²ÄP„#tÂ>èÈ£ÿ’ ±OìÎäÈ$[R®Ð&•O‚$›êwçG #ñṲ̂D*[¤”ÎŽ•ºx)cTH•‹ ™êÈ2鮨Èàmû¶·¼<6ù™\·»£‡6±°Dlm JŽNP†'qɱ›æ#fæÂ›?¬ Ó~¼Ú»\^…˜*miÝQÈÏûŸ†{ÿ<¿ï·ÒNˆŒÒC½Nt³ª[ÅpD°bã¼É$)NLƒevB•ɳÆh¯5òír‰_X§1»€àÇ ÁjIþæ«Ø%36WV處”XT€ QQnnQFö]p–Q·Óï|Y.iÔvâo ©Ê©rE0Ó â=ê¨WoY­FJ™}¡(‚ÃÏhßÄD_~³¤»T×@º_Ã-aáª4eëSÊ9¡]‘4¨˜¹`Ò/ž¸BÒ•®7:À¹¿ œÿ:Åz!ùAΜ«…ìwpõTÚº¥Î×£dë0,šÐ!ÄžŒÿ³õðžºZü,IָϚ»èó[m¿Þ¼vójËFŸµBñ÷já6·7&cb>3«L†ÚÓ}õ§Yq‚Ô4,oO+ô.QÕ Ûú‚Œ¼]-é1¼‚©:¥ÈðK0H':Êo‰…9°†Õ–£f —ý†ã^ÆÉÙ÷•=°`sâIµV‘‰iI|èºµŠ 4Í;ý#£¾Äݹxþ&"Ý…4o4Ó-ì[õ°‡„Æ.°p8¬;cç°]ø>¬Ýΰ¼bæ°Îe§!©6îTÜiôG—Ñüã… ¢{¨IQìR°‰¬´9£EñkãׇMEÝч$§—ëŸ?C¶A+ô5K«¾'èû_¡z.5oG“¦²¤öÒÇ(úã¹›§s®cMÂá¾loVøªL…ϾS.שM„”„7@ih¬€¹óäÙ³ùO°„Ç23ÑÚ.7ÆÀš&  ¹åŸô¯G–¸ºn]2ÄÂÀ ‘—`þ—ç/ÁæKë.DÁVÝbýÏxÃ"ví¶g¿Q¹3*?{å**¹¸:™Vžß[^Ï—KÈþžÁea(kl¬Fše‹¾Œû˜þ¤ ð#iëW‚Ò²6´"((44(¨"´¶¶¢¢–ëâ†g®AÉ5Ïk†É[`[›ü]8šÎ¸m]9'hCæžíܶ=©‡UeªRU™_gƒm:š˜Šì¢Æ<î`€.ú*ib˜ÛÛ®zŽ+ä=îÊù¤Œ±~åP¶­À³ °=Ýròô,þÀ?›ËÍOÖt5&6ÆF*%* ‘óhZ[àN€%ž7gæÒãŽß…ð™ªç²¢4¦»Â7œlƒ!Žx#Xv;b*ÝM"0¸ýE!Ï`ï]žþDv¢¸ô˜tRŒÒQS++ “…F~ú:cöC﫜µ üþNß+@lõ`Ó¥ÚmÞÑn3V·¦êvlÛånf þüÿÕw ³!L‹VƒìËe¡H¬šÌ´þ$3Dã™x¢¼1.èd*:-íò f ŽY{»áýí]BOï:\ÓÓ4½?Ý-õïé!ÞP´ÿ—Ôg͸ÿLÛ9º¹¹:ù'?×KÈ4ïõ‚Æý}øò壧Ðïo-ÏWUGâ&½kvýЬd 6ì0QkÐueBŒqûµëŽ1.«EMü\|1Ö5âÓ¤­M×”Zªh/ØÚ4ýmä~¶öÒÝž%¨ÙîAå(¯¹;½\t϶B/ÃÇp%ưÊúp‰?Óëø²Ä+¬“L=†¼xøLbÝÒvèġʢ('Ë%]Œsï/ƒþë"kžà»#ˆ‹ÙTæ‹üP€<$”épÐÃ2(_P‰… â‹ü.Á<ÇŒŒè-øÇÄInª âä«›`ƒ*[Q)C ÒJ…£ÒJm›Rœ‰jDYªò¤sn‚¹ücljQ¯¦o·k²¼«HÓd›GDÙnMFÎ9ˆÍúEó ˜Wg£S¨–y"AûQñþ’ýÅ'ÕD1gk²«êCÔ |ˆ[¤+[ZÒ/`¶}Þ»ôÛ Q<ÄðˆmÝ_û%:ÇÜ]ð–àÞ‹7.ñ­–k´•¥µEÉ»Ó2¸††[†.îÆ)/÷€ï]¡¼_°Té¥\ƒP cý»!¿¸ãô‹ÓKW­X³|òö¹ù'‚ù¬¬¢W»›Þ©ÏW‘,òÃÓg·6]t¬ï<³£tBî¶Š@«ˆ%íD8ã›—ÔÀA¦œÍjÇRS œºoºúÞÐ{“r}¸ :¥¨bÃüq;Â^[á×£Ý :˜A¨¼ÍU*ƒÕP/زÞhK’G(«!É$>q훤ðãq¹$ÉË2³vçr{•]@Œõ›‡Ç8}¼èó‚–åž"&ææëd%a1г¾_ –0àÅ¿šû)…Ƶ›/Ãl’B߀¼Í­ãл?üÄÁˆŸ>FûPI|V ù•Œ"™²ðšjMi}‹×¹ñx(ùÝ»sÖopX.x¢ß¾‡Þ@OkÃnnQîØáC¬ÚÑ®Sf«²ÉO¦:O•£,E9¶—/úúÁÙ¥óg8®^Øáë—ßk…ÄÕÞ/ÅpM¸ÌžõÈT(î…{4ÇaõñõßsÖ¿Ï [¶rÞÐñϦÁøôñó{Nçk¹9¸‘åØª×]¸òÓÓ/—¯Xâ¸f–AÁ-dKþòð1 WÙŒ>¹±(Ægl)Ä[lÔ1aµ¨e•©K áÝú02û24“0éÝÚ ö¾!1FC ›€û2na/uXIfVV6éÚª"5ÁÒ𨿲EDŽÚT€ $NŒÅú‰Xl?‹Ž~<,Μ)=tŒÃ£3Yׯî>ºÕzûH­,¼„¯ñ-XGĪR¥D)(%3)—µ«guÄI #o‚ýM©5 Ä‚|Ä~M4¡¦&oÇ;Òe`ouÒtÓ.IVsÈîdëRUq1¸ÍèwÞKÇy#oï&TÀEGb{« ¦_ÐѸJE*&²(JÛQWΕ@_«ßßq&þ½c†Ñ›xÀˆ` Ã}Á’m¨ñó”úûï¬nº_lÙ. ðó¬“îÍÎQ§çp& ä#çߎè”ÛŽfíÁÄÂÍ®穆̩ºi„ýl²wÓÆo™ÈÓÈ] vùïFLìšdâœc–ö­L#º L îoû±9%jDR½,¦4<4)&6™Ãßý{IR´ ¡DÛÈâ(MENqavw£*:¥‡/H| ‡X+ÆÀl-Çv|½â5`ù†‘ØÞ8—ýĉ8rØë_ܽsó}<sÂ=?áß!TKYR'fä–xœÞd–$¼‘‹±(vZ¯JFëQ3EBDkŒW´WÌz• u(Ô€*Õn¾F¢´ôµ v ä~&ð°ì|ÒIÄ”U¡†:©ZÁãáDo40@änuÚ!—úÃÕÅ{ÕÕÆæCè«{M`“Böqµó;÷ˆä¸¸Îs¦[|„2Z¦$kKËRŠËe8ʵ;L–˜c¦ Š“;¿à& Ý™6(Ö‹¿ºÀ*“Sœ1ü¿žƒ]Óy´Äa}ñô¯÷޼Òzü*ú–Þö÷p_ÜsÎì™;kãK ⸠¥P‘Ã?Ñp1ÿ±yÚâ «]ø¾ñùäã5y4ŽÌ‘èzê{q=-#ƒz÷Ðõî­ï݇¢þ v<š endstream endobj 217 0 obj <> endobj 938 0 obj <>stream xœ­YyxSeº?!4°£dÐsewP@AqeËV ”Ò.)é–6M›=9yO’fíÞ´é–î¥ -Ê¢ì eÓ玌˽ã8ΗÎé½Þ/-¸]¯s½ÏÃ¥íwr¾÷ýmï[1|ÁãñF,YºjÎ\ÿ—S}y¾'‡ùžâ's–Fõ« Ã럤SÇ¡KcQô4ûQ‚Ïã-Þ¾Dœœ)‰‹‰M4}ÉŒIs,xiÒ›‰Q’¸ˆð¤IkÂSc£ÃSñ&mGÄE¥f>7éÍ„„I!þ)“B¢R¢$éQ‘CŸ½Dœ˜œ–%™´F%I"âÅ7“ÄK’—î_&Yž’º2mUúêŒpéÞà̈5‘k£ÖE¯‰ ‰ÛŸøÂøé3ÿ0KöÜœ¹ÄÓÄ:b=1™Ø@L!Bˆ©ÄFbJl"f›‰™ÄâY"ŒXLl%–³ˆmÄRâ9bñ<±œ˜M¬ æ+‰UÄ ÄjâEbL¬!Örb$1ŠH$FA„˜CŒ#ÆóFópåˆáD9o¯tØ”a×øëø_ ¿*xJP<âÑß’î‘4âzû‘ÐÀqÅ£Ÿ}6èAß©ytӣǎë7ÜÙñû[öØE¡íñÕO<õ„eBŠè ÑQ­è¿»0qÄÄ…#&ª&þíÉî§. ¿}7ìÚ-¼(Üë[âæ¡`4\˜*NݪSÕFÈ"•N0UÖ˜ Šª/S ¤Íe5«¥SLò|(ƒB{£¸ØÛq¹ØK¢l‹›ÇÊLÉkŒ"¹ ¤ø´¥±ÅMt#41 @Zó¡Ô¥œm:[5Cïî'åF³Dr0h5¹$—4°LˆBÐ'î“€ _Òí{ÞÍó«x‡XT)´Vœ@}ä!Øšµf7˜µVIô*H'·×'vÜk@3,ès†l=¥ŠKž³ÈlµÍS骷»éê›îÁ)òxê‘…kvÄìÚGºZvB*ìW¦ï‘F笆Tç1Ëz¬TÑé²ÓM@VCR®TŸ¦—Ó‹¹n½Œ åÚsK=ÎÒ ä3 ½$vå_àû´¨AøÍ[§Þà‚¸qÜï¹éqqÓ„Æ¡gÐTŠ®B×réP%ÖøÝz¡·®ÈÞê!{R¸€øPzïÒ0I,AýëÓ½ýÏ{yhúM~KÿB!kfí`"`=¨4ÔêWãO‡Õ­·‹‹åR9%· ›…Æ#ÞÍ6;}÷“âOý¿¯­ZoT¨]Ü,näëÏ9{Áôd­ -úýŽî}ÿÏï~$æsôîl&ÕM«F¨ìç4±Åƒ÷ã6{ÑóCXyžÿ)÷˜P ÑF©P‚Tmcòª½&¨¡ë ñÞï°2ÓöC‘ƒµõ `Ú)©ŠíÁÁC#ÐshÊÝï.Þò–FG«ŽÄTÄ=TùÓõÙôÛYB{ýÙ;'l)‹Þ¼1Ž›NÇ.Û+Nrö/¸>f“ƈ¾›„Ýàåõ¿qœý‹„™~,Ú ¬ªdZ00Zš{jà°*V«^ ¢ÁÚ¡˜F=´m@±HЦ/øœ ¢¹e+…ŽVÀïñ•ñ޾:sƒ˜›ü,¶ðÕ¸’“IFÖe7ÙM6:È·ù‡J!âß'õÍ²Ö 2OoÑ©£ãd”›Һ HŽÇÀý˜:·'øRK‹»¹‰f9Û”áÙkEòMÀ¼e$sîó§®ÉõtæOýO«k“ÉA[C¨I^7o›™ùGШâvºú\wïA ÏZŸ3Ðy.J¾¿(è¼µÖóúç ¡Å&`I§ : è3tŠPîw{C¸ø ƒ/g“¥~ÕÜ\´ËÄ™1£¦1hð«ƒ%Ÿµ˜©·‘dèª"ÿ1ÿä*cQfÊ _œC¬£ÙÆ6€ @×Þµ*ÈÐÅÓ c” #ÈËs©™ªDË7Ì"—²¨-‚¬ûÍ9 j¥ÌBnâ@ûÏ;狸e­EdÐw¼¡,G×?,Ä€qòP›ÐœßÆ| yP òl½4$dz±º¨´¦ ¥w…M¼3*mK4¥:½§(ùÿ,e~º|7,g°ÐGñ¿z:ƒn ?œwf‹eÚdƒÂ_7~ªÿÆ.“¹ÐLBŠ€ÓSÒ7d’—|Mð.*|P±‚¿W&®2 ©4#—ý/Øê‡(îYk» ÐpiÒÝ©­D&€{¨áA¾ÉJ÷Ù«èÅ Çܼ«7Ð[Gø¾q¾áÂ=“zRa“»=%¥M‡"¼ÅÆNÙ]–îPR%²2ÝAe•®7BÉ䔸a1[ {Ôat`-*Ï´ç¨#õ¡k߉}MêBüŸ,-Þ­1vè&«+.Ýîð¦ÇÛ¨ t«ê“^´SiÔI>rø¦ ?”8Ý#‹~MÐŽæ°&CXäÐI%ª4¬÷‘Üœ€ù‚ïAq[°„ëÐe@.îÐΚð“_EÓóüî 02 •›9c5v¹­±Èâ±Ñß{Ộ$^Þ{ýV~‚Ï't4Yíç€,qàW.6š:¢L1@ª?–`ÎÀÕ Î ÝÐ9ÑCžû¹ á.5·š …n6¦HûP—²7‚ÝA›Š.£ÆT+XÉU<ì!;›Çšp_+îûÕ¬wÊŽñ}Œï ¡¥+…,ÊuäˆÕLÜ%\'Ƶ’щ2£cw¹KÕÝx¦ùsÏÚîÉ+7Ùžr`Ûì8nšVå‡"k.´PöºêÏO™ïÒ¥H”ûÓ7Ðñss ’œs:åHg³»½rEÖ§7C¸½Þ’æüwÀL™µ1UKe¼,™¦+/{Оôæ}!?ç{•ï òõ íMNÛ Ëíø^JÐGG2MGA¤)z°¦™ ”œ‚­^æG~«*F«Y†r¨<-m&h¥@;Óz¿<Š“ dHM±ˆß/Ïsï”C£ïøU|´°7£ S*‘¦ªL:ŒrO²9däþ\>72LÞÕ~ªéžç,e¯|èÒDp|} ˆÉ)×eè•Cè?«ýÊÁK"ÒÝ—?õi¼¼ÿ¸Ç÷UùþžÝÚ‰O:1¤a`{M‘@ªîß—¶ Ú!]Ϩzš5˜µ|ã¢ Š‚¨Jía³Ñ6 Ëë<å²ÂtýX¼¢7êÌŸïÞø¸œê§\÷Tɱ?¾ƒVà B …šDc ¨IyÂK›6(Ž7u•œnüŒ*ê°8ò‚ûæ(v@ 9ãjZou“õL U±î¬¶®CÛÅš+Ehœ!©ª?);:}Süö0 ýµ­µÕ£mu¥Ú½Ö*Wä U#ÁzùCúòû­Ø7Nhv+K]¯‰Êh”öÄå'ãô#Ãíè¨î>@»Öv+= Ç¥BíþuóÑfÏØæjŒ0Cø)º‚”×òݼÞ>tâ:ßé{V˜¦ÍÉ„Œï-§'Ô•´5aor6¥hLhÞ ä´­œ(Ã_Ok*Σ=×>¤Ç#ÛžªŒP'к´8n"£VÄI6í¤Af¡×n«„|²LîÌÚŸ‘–Ñ•ÙÞÑPÓYAÙSªwaŽ|Õ‹DîÁ “¥£ÓWìŹ#\{¨´ÜÞ„¶V8;lµe}î¾3ØË¡TN>@?Š«ã!Á1”|žzû_šl¬—Õ¡aeÆiª r£Ê™$Ù£ RêQGM˜¡Šý ýápè94 ÙèÖÛº7B&£˜G„»ä':Û\íÿF›&§Ùél;Ûwü—â&CÔƒçíû»ÐÑjs\ÇÃǨAÎ@ ¦¨‡QÓÁ0GP,XK®£Ä 8+ZqÃmZ³Fa4JTTÒ‚=Ü#Üó@.øI¦s{ܽý5ÉDâbî°:!b#¦ÝoÕʃuÅÅ”rwnXlXü®˜ôXHq¦õ°‰õ{h‘¢0CÁlkÛ×ûÍÝo?¯¤»†:¯õ !Q7ø¾Å¾‘B‰1M )¤¤Bçp¶Zõ„·®}0“L9»îzôÎ_ mj»Ö`4ªÔÔæ%oˆýŒKî>}4i:s¤é Xá8nÇ á'Ü~ªÿëg¦èwdn¤   ”q÷>˜°Éwž©0²)˜v£¿¾pg­ÜÎ$2"Ò˜©²-µõ&ðâ¢~p†x0c&²bß\nMô˜À N üÓ$5òA„Pž½À7¢8þ6÷ôÀÅŸ:¡¹ žÍØ [ýNhû'4üv¿|ta¤³V“å׎%–ZÏ©ä ïžß¢)yµæ:´ì¡¢û`*¬|”ï–°ø\§­ÕDZ\l‰ßĉ $щ`JRƒ‰€«i£[n$‚ çJ-7| t·ÚW£+2²éø­ß·ÄQÚ ?YºÿõvLðUN@‘ßXrY7°î²–’! A7z£Qpéšø( e ›Ñz@㺣¬†£§pK§[òÇŸB¾ÁUª› ]¶Zgmu ÛÑ _9Kl÷ˆã&q¯@<¶,Uº§ÿµ šzÇsƒß_è ¢)óQGq;¹ÝœŠ“q“?á†# mCá(åRO¬ÎÝpõ —o£ôÅ¿Üî¼äG—VqOp[8šëàVÑAè8f{é5ŸÒ‹^¼\áæ%÷¡+}|T…ÃçÂç"ã µ¥ä–£Ëu´ƒ¥ Фqm2(Hi¡²Äã)ml‹ôì}VÂ=§¡Ò9^@ð÷©œ>-X:ÀÏ]ǨdkEŠðÜ1  ›SÚj³Ô}PÍSS3÷E¶¦vÜîAãмzêûá­³GS^ÿ˜Û|t]¢Y4Mø+õѪó“h®í—˜ö¯¥Êô”ïžxmÐä]Á¶}ë2U³Â6ÒzÃîí³ñL8Nàs÷¸]WþêöMñ ÎÿôÝÔœô,†2 ”IÎŽ¿çHn 7õù£Þ;Þ}Èf£ã¹Ç Q‹^‘â`¿«ÂápC!Y *NÍdÅGµÉú¾¾öîM7%G!Bõ¾µ 7¹‰éË?\‡ŠÐU˜]Øsíó´ŒQǨ~J䛃«¢AÓ²²¿Be=£ÄTæ¦Ü6äñL%Êqä–ÔZ«m& O«VÏ 4þ ýæ5Ó[áÑqbÏálWŽ{ø¶ôŽóÙ/·ßyb|¶Oƒî Ñ£Þ?‚É[o^ä‚(Îòpml:0¤n~¡—PeÀønDn–lŽ–©ã4Z#VEãòúyɉ[uß8üáAظd[ıû€Œg¼µu¶ã–zLy­Pö6ï*%ä §ÞC%ö›ÙÁŠl¦:(òÜ×ðl¦Ž[Ïíösf¨øÔUß{ô]éç Ë䮬Ìý2q<îÊÒjŠ ° Õi*rC[zãg?¯áþ9!@*ró*« [JÐîîe'Ux¶-%{÷ÕD>¿›®û‘ƒ6TßÃZRÅ~m–&£ 'ÝÛ?§†‡¶CágùýDÿëBvp6öïÀƒjj׺èËoB&Á‘Ü0 ÌÀ4ÓÞ–Hº<µT÷~F¾¾#×ÎtÊK#a9ûõɳ.mûÚiª±VR¬=?D§`Œ2=µ…‹45ÊŽ‡e–ÍwRÝgjövÇßÄóúhœ}CߌèÞZL«MËÊ¥ÖxÇŽB¸F~róîÇ(¸á 9¥O¢-žæ$nµÍ5´lë_…žhâùZ±ÅÚj­y8„˜¼€ðn‡vy¢:Ì ó¯4þÂàêÅ\l¦êÐ*“Vä—'jÀˆ˜l-<¿§fhOcv²¬ÛNE3**Ñ“@6 < ×hýè÷ÏITÑjå|å¡ÏöCGLÐC†£LN×}ñËdŒ•a V²PŒƒ£Éä¼/ú}W †8ØyæRßoäà1Qiè“ÁJN»:F‰ÇxÈÉ¥])­­•Õ %TYSÁÛxøÁ\å!Òµ{€ÌÌuÕW€ÉÑLç•\pm~ùN»·Øíiïiéjï<np(X&N§–@ö` ÷xʪ¥u»×ïÞ¼3’Ú¸2C©&ƒYéîŸPÇ»wrè*¿ž î_eÜ˨ð -ÚÜ{¨Éí©-¤J ßÅÄôÔé5 ÅÊhÐgT9Û²ÖÅý8 õw Í2ý¿†ùtþu÷ý?¬»·Æ„ÆPÚK;<ÛalKˆÙú[VßùÅ6·29 ™Öª¼ ky^…³õ$yÏÿ¦a² |$“^Å•àJ€)ì9?lËÓ݈¸ŠhïyŒ7ï/µ×j>u_y¯‹ö1ôµ0KÁg…RºF€«6?S1{o³}Sžw7ooºJƒƒlUZžjç,ï ¹ƒEc¾E£šg—×шwàÄðy9ìì\Žœöôü5²ê]-GÜ ¯R¯Ñk`,ZÊ&gsAOÆÄ‰“qùKûþôåW]i+ä*.”{ÅÿŽ>K9šŽÍíO(‚ïs÷Úò œP„ã~~¶<'Çh¤¸g¸i*µ'R;4y«ÙlÆ''s–ò†â“ÓñQ§â)Á¤udÕìº ˆ†[M¾Yȃ²˜‹,ؔʻ¶lÇêÈmÛÌÕGÃçú¢pÏʃk ´ä±þäû§~ÔÍGÞ~•P‹ |›‚>ñ’m&l‚ùQ3¹Nš‹¹€énd5ö‚s'ÚZ(´­üZ ÿHA¼7ú0W{CÎíÁýÚÌëcÎç'ÏÞ :hëÖf~·¹½Þê×Âl©¥ÔRBßDWZQ\®ÀÞʺÝî/ ΣÑPg *)A§L†2Ç!ó`Â5^æ –Fp“)錟F¤Å#sƒs¶iÓDê„Üí‘prÛTŽÞø’‡†ÍG‹„Y v­Ûq¿z‹6¯BhD…¶1:>Yœ .W–yŠ YŸý 9Æû#?C„nÜ3³Ëdµ–ÕÏZ|¡A†¿Õ F«•‚ÖOúb?LÃÍûÌÊ÷ ‡°ÈÎÁ-êÀdA¶ ”ƒWÁïþwúw>Š9%¬Kud‰’ÒŠ³*kªýϯOR‹†¹y¾-ýÂ-°¬ј«¢Â7„n]¬ÉÅfY˜ŸGmg·ƒâدŽS©Hý@°mMÐI„.¦sp©;$ØjÁRpäã±×¿RÃô»àr£"<.b8½\ƒÝhÊ{|ô-2 « +K*KÞ?Þó6|F~üÁ\nÚkÜîÕû ÄÍ7Ûјæreý™u”-›ÍÆ•ÇrÂ¥†â’‹¢ hLw׾ײ˜—ÃS;V¿²c67óÅn¶|l”VkrY(GCq]4@µÔ›Q#­ÍÂé ºÐRûýU…\OËÂÂ׬ÅÓK¬#źיlݵ?Ô†Þ?ßìbYŒà/ˆéWÊñ;«½Ü‡¦÷ñ}§Ö‡J¿.<îh¬(scC¨i¢F•‚ÍÄÖ«Ê˽{Ê÷L—pcc4T7<€Ë¸z nq5Ú¬ùN—ÝSÜ‚óP=Sžµ_››ŽEÿÁÁŽÝk¹ ûf.–S“cÈ?‡Ùƒ2+¹/TÛ¥/fEŠŒ³|H!Õ*ϯ°—BÅà9IzzÒî#ÒîËÇÏyK¨–35è÷l”^Þ¿¨œ«v¢“€ÛãáuþjÔð—Ü#ÝŽÀ@‚øoL¾— endstream endobj 87 0 obj <> endobj 939 0 obj <>stream xœ5TkTSW=7—ÜÜ*ØZ¼._M¢Ó«"Š.KÁ'E"‹µá  /q¤E¾P±>@”ÅCd*(‚ Õˆ!¨ ‹4h™±Ì8bµ³Ú™Yãwé27¥ýwÎ:gûÛûÛç0ÄAF†Qx»­²/ÿ ÎgÄ2ñ hèØá1­YpthX ˜þ:f¢æU\ùaF³u··!9Óÿa\ªú-ï%j7wµW’Þ¹W™§OŠL•6‰ê`Ct¼>5ÓU하¨ÞaG¤¨wèSôÆt}Ì··!)9-UoTbôƽ„Y^{“)©‘þ1úøD÷y.ËW®"d $A$˜ì$!ä]âB\‰Ñ- sH1™GœÈ 2“8ARFÒ•LÒO~bb™™“ÌKvVöĦ±Ÿ±=9rV¾Pî!oàd“Œ&ŠÌ˜”¦*QÛ%®®`jÅ'¬ÈŽi…Õ-žÐÊ­Ü êäØÀY©Nþ„£·Çd:ÒI9ý”›1ɼÜ&AÅW,Ì Ãl¬¸;…;Ù£Ô)x·q·^Ù·y<ĆEŠžê¿Ùž}¦SÒv›b FC+ÑÝ‚Ï{˜‡6$ö‹Æ>T•Ý‘ˆdÕ®’yc +˜§YüItð4þI¾œ£ÿ—ËE¹û„ö1¦+PFsþ,•ÆÏþó|H,bQ/‡rÚ!qÂÄÞ‚oojZÌrGÐCô-ÿš7ÿ<4¦¥—âk ÐÒ-aT³(w_ÈåŸÍn̾’Ù Elá§""éþÞ‚ÉLƒ ?±²âZ©º½Îíi ;¼ËúßÓÙT°¾ù¼±«äÆMÕ.›¤pšgÔ¿Í»_ùß6›¯Ôg$TÙ­l^n/é݉Žæâט×ÍŠË0M€kGî|ÔÕïs|/ð”¸ýNª:çśȷÝ*m¾¥‚£ùuPTh*¨‚£ÛßÛž—À¯¿àü±NáìýöŽn¨ƒþ¬³ ¥¦ÉÓ {Wà’‘_2¸jl­°fÍwˆ.¼Æ·[¹ßîØ=û%¤vIZûóÝq’[)ö1¸t˜Å ñ±P%¦àÑ‘ ô¡^ô} Ãü0XúãQ†ß;¾l‹gY×Ò_•Í03mnÃ}vl­$îr!†Ó·³7Á†@eJcT³ž»“ùÍiª½^}ø–Ö„ ª]THu°’/_ñìh7”u*û**ꎟºÞeèþQï—'Šó«¡X5e….",+|@Ó[€v/Ê­7Û¾‚/áZlÉ;<íòL™EI°Ò!-!#-ë£C{¡q]Ž·©¦§[ÐÍ‚“·™«°`˜¨®Çµl•4;ãt| XCÙþÕÞ‘ ‘qªÝ;> …<îQæé`WC{“òSªÖ¾µ¢ ±4ù¸½—/õ_ø|þÅSmè,ÀÈïîÂòÛªs­ç¤ÿ gݶÂü2TÉË‚JÎM‘BŸx­‡ÁñoؽÂVq~Õ(r §0x5w¾öÙè]³õnoŒòÈnø7CÉÎÍ®ÉÊúh(8‘Só²ñ†ø‘.ß5aéA¾~ªé•cÚJz® wUr4ò”Â2Í6]9ÍÁ½Âñ•ÎcŽŽ¶“ŽN„üm5d7 endstream endobj 695 0 obj <> endobj 940 0 obj <>stream xœŽOhÓ`Æ¿/I›Xcç„ÂFµ~ …!ó s¡+›ö`U¢=(e ¶¬]jÚ;V•ÕŽê«™[ױ̩a=Q†ËÉ¿ NðêÑ«§7åfçíyàùñü(‘B)õÇâC×Îî¥ã^˜z‡ïˆ•¶¿=âUUÚð¢‡ðL7öwaßA"RzþB2fæËVæVºÈNÄN²Óƒƒ,š3¬ÌhjœÅSÅ´‘K;%Ë.›££X>Å¢Ù,Kì–0 †U2ôÿÇ13—Ÿ(‹›ºaB„±~B.’n"vüˆL¨°K—®’à®0S'àâoŸ(J¨ˆžWCÈþ8ÍÆÜ7èuåtý!\&ክhò2ØõÙ×ø±/)ó‘ªO“?΃~ôïÆ°&oÙ¯aZ°[uÅFŸ¼½ùl¼fzLA5¢Éìx|…7ÍY‡š}ÏQ:2ú}Riy¿ZtÃøâ÷wB¨Lc?áv•Op?—æùmœÅ§sh¡á‹üm(f³´2¶6åÞ…øÑ|¿ôýË‹ux?kË}$œƒKÀË•J6W6K)P‚§=äð…E¼ùÜÏo4d7€Áý‘€4ðRÝ×jª*WÕÕ !ÿÕ}Ư endstream endobj 163 0 obj <> endobj 941 0 obj <>stream xœcd`ab`dddsö Ž´±T~H3þaú!ËÜíý³äÇ Önæn–¹ß/ }·ünÁÿÝD€…‘ÑÍ;*Ñ9¿ ²(3=£DAÃYSÁÐÒÒ\Á17µ(391OÁ7±$#57±ÈÉQÎOÎL-©ÔSpÌÉQé(VJ-N-*KMÛ윟[PZ’Z¤à›Ÿ’Z”—š“š›šWÂÀÀÀÄ`ÄÀ°Œ±‹™‘‘Ikßf«4†ïå;Ÿü”fþð½\tæÂîE‹J»kåÿ\f«-í.)YØ=Sžï?Ó‘Pïß;AˆñÉ.æ·PÔ±Íü®úïýw¥nŽï6lp‰ßöl¿~ký–ùíöÛí;þî ÿÝIÞ†í·R÷o¾÷µßU9øŠÿ´_Àö[h2ûN®'Ü;gñð00(A† endstream endobj 85 0 obj <> endobj 942 0 obj <>stream xœ¥Y TS×Ö¾1zsUÄj½ sqxUÛj‡jµâPPAEEDPf s€’ì$„@ €Ê$hQÄç¡ÚZµZZ«¶[ëÐjßkík_÷åÖë.•>ß°ÖƒÅZÜœsöÞß·÷÷dLçNŒL&ë:{±—×,ŸÑ£¤?^_‘‰nÄr 濚3º€“œ:ïu:õ™^˜ÐǽÄÈe²yïúÍŽˆLˆÞ¬r6{¸ûèÉ“'ºÏ ŒÞàî¾Ø_毢„º{ElT%ŒtŸêî)}"ÆÝ30&0:.pcûî³#Â"cUÑî‹#6F‡3 3{fø¬ˆÙ‘sæFÏ‹yG5?Ö#nA¼ÿ­%,NÜønà’MKƒ–{nöòY¶rì¸ñ&Nê?ù­aÃF$|sÔè1Ýf³„Ì,e†0˘?1¯2^ÌPÆ›Æ,g†3+˜×˜•ÌëŒ3‹yƒñef3#˜UÌf$³š™Ë¼ÉÌcF1ï0£™ùÌƃË,`Æ1ã™EÌf1ó.3‰éÃðL_¦ã¸2¦?ó ӕ鯄1ÎLÓ“y‰éÅôf^–u“ugæÐT3 &•¹#[,ËïÔ«Sf§;òÙr‹ü~guç.©]¾`'°›ØF…³ÂÆ9sqœØuC×mÝtËé>¸{b÷ÇNNG{tï±µÇuç='õ´¿Ä¾äõ’ØkN¯#½»öžÜûÒË }zõQõù‘ãoôÓÏ­_i¿Ÿ\»ìq]åšáºËµ©¿SÿØþ^ñpë: Ûï²ðÆù÷Nÿ·œ2ì{Wô(•‰áÍŸ\ñÀeã!’ד –'.ÚTЃ–‹Ü EÊ:v;Ô@Ñ¡ƒ(wÁ÷Ø’5¦¬’õ…ÁÖøãÀe‹vBµLZ»Ðˆ¯òÅGíòê8#k‰}žê1©u!a,Ýv´ÝVtj’]B7œŠnrQ‡·ù¿®;ü§Ak§G¦* 'Ù=š’ ÊÍlPšz“ÐÒYT¶_yˆ=`³ï0Jñíû‡O·©|”d—"Äšt¸ý­¶îbfÝ•=Äx9 Í xÇRKa5û.²£$Bù¦\Ỳ3§á6‡óÉfðW’ä$AØUq9ÝÂ’~-Ž|Äc&öVìC?Ä]³ZpÕ·ñ~“¬†Æ"ÅRŒ±wRÿìõ‰0ã{âT¸€Æ3µåW^Ü}šOF’Τ‹š &›¥,¦×0€ ®{„ ~£K•cÒª•°5Û¬‡ö§Ú‚R‚‹O°·áŽî6pû*วh…[Ë€¶h¾sl/¾á§Hq\[Vúèa¥2† ôü2Õ$‰;OÓl¹Êq&òðøÎÁË9Û&€*®QQ Ö„ˆYé„Y£4\q:¤# ÷?Em€Ä¬y„¾¿´ú4ÉÏ:}ëÙ›ð¹î&pµÏºGÇCŸj_SVUÃPd>øD¶ÿõ£\tÇ<œÛ—PPœëŸçm ȃƒÜá½y¯ÕEÇV)mé&È¡02åsLy¶ó´R%+ŠÔ9!Æ(àÖ’þ@¯*«Žö…Ô\Pï֞ʀuÜššë¼ìç×(µ9 ÒAŸaÈÒ§¤yÒ_>S çÃ6àNaïÖÆÒØŸðGx¬îø1E[óP<ÉWŒQJ22¢„E”ÑP¥¼N²šÀìZù5q8™Šq&úÿx$ ø `Ò›uíH.þÖ¥36)Ö¶¸z¥}*ý™2×…¤¾Dz¡]ȱf3}R‚¢,ÿ5)SMM(/•Ýþr ûò÷ÙÂ:¨« ‚4aÌWŽò…:R=I¥Po‚  :(JI.ûjÝúëùG¡ä´r›åýí°ÌzkV™¶TŸ›Z0²²Ô™‘±þÀÅ$o»*´A¿ áŽR©ÚxC"¼gs¾u60=•V<ƒÜÀ EÛKxÑVcÜ7ÈG|Zv‰ÉêD—Òçš«8Ò±r@ÛÊé `Ï9^YEg”Ø h{«u²_áþ~Ø/ÕŸÀ7Ê(ÇÒOQ*[`¦çnX*ûN‚h泿èt΢Ž6ùñ¥²*ÑK.‹oò–"©4Ü®hHVƱþ NΈFι Ãsš2Mùjpa“£!BzKŠ€Ý[ºù×ÀvpýÔ1uŽHJ%uÉïKeXG{†8½ý«±µ¤)âÀkì²=ÛS”™6½ÉG}º64}특º™£.eî·oÎbW)eßG1Ž£V6/”7ˆ³xÝ®…5¦KY;m•ì9ϸd•k*ü T¢ÊH^Gf“®S°Î%½V]°¸xv+Ä.âo-}\ì~U°¸]l#äªøªŽ‚ÿ´Ñè’ëy”Œ±¯)²l= ÜÇl=Ø mµœ³X®nÂ'Wéé‹S¤²mÄë<Ž!o}×øfGÌWÆehu Mî2c¦1Ë¢µR~šéWý±“åÒñ[²e©¬&Åz2tîù™÷joÚ®7 ñŠHÜþÆ|tþ‘uþ‚‚u—QIã'÷Úêú‚_œ,§ý¡°€²*ǵ,R”ﲉTÄÅ“›ä‚ îVtÏmu¯mCåTÊE9SWLÉàz‰-+‚ÝÏðP)®ãYLçñO8ÏVH[ŽÅµ<žbb=›i’¬Õ.—¨¢4wI,SUÀ­cSc!Vcζf ø:™OÆ•Yšl-dºÆ–SURÏ|ïî#»êw×÷8´´hkQ|!”w”-*ƒò¼ìM~;9šè´FÿÒgSnE;†6u è» ÞãÁßSPBGàfiô$K'ûú¥gfÞ^ø^EpOàÍ3á ÒÙ?zg‘ZÚiåÊñFi[;‹G^ÈeüÉ‘¶|E…a§Ÿ’f‰ø#ž+•Õ‰m´±SÚX¸êHHUƲI É*ö-¥ÏXí‰ ß¯ÿ!Ⲧظ(6%¢²Í“VÀe-ã2ãtj]ºkږĵËa ¨ŠÔV:÷:à´™º´ÌÜyæl!?í¬¾ð%8Ýò*¥vøý=©R°_‚¡ßI ²ôvÎL…E¶ÒÓ•‰Ék6Ln0<ùèKË×?_©N « Õÿ4>ò59‰y«ËÃlsi>r.™MÞº;_¯¾d¬½&ìjU-’¸qé){Š ØS.žÆ/ø8ŸMofÓ3ê6üw†ôÁë.‰‡C ¸I“Xݦ;ŠŒŠ‚µÇˆ¼r)rä€Ëöõ•PK¿+a{=öÁk.¶Ê³èf­âŒ-El+-Ú?øØQ›‰l4Dë7HYø2€Oñʧ²q¤\œ&öæmvˆÜ‘PHT’lj0nÚÕ{¾4Áa?KtäÃôT½’\iÛÚ¦Äk¬}ì? á¾+ôà+ø±@ Í/.§êAÌ~†@G‡ŽW¬­÷µ†Ò¬­â½ÊÈr\u¤¾°¡^ØT”^Û.´ˆÛ-!#<>:I¥OîUøîæMx„wW§Ç•?5í©•ÑÔâùæA|Ü¡0Iç|qË ÜÕò^YÀ{P ®ßwÌQd[£-7(h–~o gÄt“0Q.gã¾b§ñòKî’ádÜÔÑä 2éñ}à‚eïU¡¼Àj†B°êvò²k ÆŒV¹ªN_ê³D¤ ¤Ý×}ÄÏðæJo~ _@ñ2óÛmš1ö ñ–¤P‡Š=¤©‰yô›…3I1yo)ñ" É’+d.V`Ám‹TÊß#ûy² 0ðá=Ê_\ŠË€xŽ$ˆ,•†ÚÒV3"kÂÙM²»’”‹ Ãÿø³áïƒ2¶ ]ÙSš±µTiÍ”t3g[‰Ð €Jƒq³5<7ŽÎnqJ$¯ SqÁTÔB¹@þQç’€Žp‹î¶Nþm’;ÉÀ2ß`qô£«T ¿>ü )ó‹G¾“xÇ~ö%sç«’þqÆ"–Z²¡ »¢¬¡ —4É$¬›–ãšïø H”ÂìœÄb¨«ÑdÌmŒº(õÅ#8pòû±û2 „m°«sôV½¸ ² =ìªû è…Þ@6ŒYƒ½*ÓJB¦•¤dKlyιJìý'ó:Ôo^DŠÒ@½å‹§Éá^ø¨oÂX‡/*¥øãñSþrñã´IsèKÂ`­’h:.~¼mñ”+p9TSåàz‘-¥#Lh™€ã1û*+óóXš²œô¤»1¿›ºç'Ðêb~n^ȇ$e~Š[ê~åiö8”5ÒŸÕÂar ÃŒ$ÿx…‰E™XñWºT/Šé^r¬ó±–ÅpûæSíù“©«O(K’†œÒëyc´}ξ¥àÆ7ãÈ’9ûývÄ §V6¦ßN8ŸZ®-·¥—ÅA 7b¼nËÄYµÇ|•i…zÚ9²@«Ó%'sÑgÒ.¢ƒ¸_‚,úkqgõUtf¿ö辉'}=´¢ýv L¼„dØ Íåñk¾¥®ÅÄ:ÅQÀκ£T¼U>ç³Î8ÏT¬®„]’jêÝ®†¯cW9^Å<ŽÄÁ…ÔWä9TÓ2*h¶‚*Ž !ý]ðÇBq+·Ý±ë/Š’¢ââ’¢KS?|+/}[,íÀg‹Ê¡ÜÖt»ài±wÅßžá”ä˜ÆµÏ6eß2Q1<|q&\èÅ¿*ÅIÇ8 ·6àËÈâ¬Z S¶C@ Âábÿ…zZeù†šV\kEÿÛŽyscæxoñR&ý0ÁìO÷‡µ[BUñ!šdî?Þè<øàÀ‰ãq+$Nü—o9ÿÞÙ¹]¸þ]KOžSDõ‡‘ÛISÇÆC¤­Ø¢tIñÉØ’±NÒJÕ`йGq¸‹ú`¼%86®õ±±äK—èaê5™!ú$W›y:æ^âåñø©KZ}8„Û̦DB¸²s¨1™Ôò¤Àí¢®WÙ2Ø… ¿Š¯¸Ÿµî²çŒlá²Üèí ~néá"=U \SëSÔ¾ˆ±°ôS ¹/C‘âïñ4Ÿ—f¡ °‚)Çb=õé'`î£ü-«R`uh ­Ó« [ :½FG¡žÄ%8LñQöaç´ùQ!3­—ç ùc¶ÃzëÁ¶´\êÝ·°Îøø;t}°úƒÑÊ/V_¡\Äqd°}0xfVn¦Ñ@Eg#í:.ÄéÔV]ÆnòƒXÌg&S.%pÑŽ…±ƒŠi—#ù¿Q<½›ð³uêÂMÊYÔÿ$CšŠ#½[¦ò8ók,Û8#yÌ:B¿Ô„ƒ’}EN‰}›Å‡<ú°ÆŠê*¨\-¶µý‹Šµ†êª|¨,RV¬-=ܘþö4˜>(ôü;‚.W—«ÊwmVfŠJ .ó ap0Ž¿÷%N@ï¿Ñ1Ù1JÇÎ÷špØ}YH³Ñ].ÎiÅSYh ¶GÙ"iÖ8rÈá±C€bÊ­ã; §ßϽ·¹ €ï’•Þ¡Ë"•–ÆòâC»?¿š¿ÚÒ*]eªµõ+„ÂbŒl9ÏOU?¸ûUåçŸ|s† ‡ùZïËÄÏ‘Ñà ’‹rÚqˆŠ øp­)m`KöÀAÁŒÆoÑðõ<äÑ Ê¡Ú߸ÙHü`p‹ØÕñ°ZHU@l-˰f塞€Jc´ãª C¥|Gš/‰ÝøöÞ€cqœt'²AɨÛ>S Ÿ ‹82êëy’ä¸}_{¸þ” å ýüDý‰K×sܹc š³Ìà3Q ßu«?ë \¿ÿÞñ˜¡_6®mJ;¤ß ‡iŠp²òæµTþIàÀ¾K¿&Ê0]à Á¿v¥u ,‡ÕY‹"ã3ÿµ‘½ Üû&oa¡b¬ŽlÊÒ[·g4**‡s7”×¼д\‚ãŇÊw•´^z>§"³@¯ÏÌôóóL ‚Qó±î›VyÂþí×ð9äL1yqä“wxs¤1#?ܤ5jAÏÅl˜é·¿êºæÖ™ÚÐ2¸ ¿—RéŽsp Ç÷yC†q«n½öÝ„WI'*ŠÂó"wjsu&m+µ™[CRTÅež^ñ¬<üà7æ’øÅê…+•þÞ_˜‹Lžõž‡V6$ŸÁ¾‹öîµ~ 4ýøghzx½dÚ  C^—4éhÚ•)u}°Ÿì[ì'ÝGÍvÜŒMs\ŒMsô€[l•ÑX%~ä þùn)ž˜®·çCÌe÷*¥ —ÞÏš3ø:+’ˆÓ«ÓÈt Á@zì$8…¼^¶Õ$5­ílIØÍ`J³ ‹nÍÞ€å€_!wîjŽÅD­gWC’²ÃêèO—¿GWORCªô…©Â‡Ónž@Ê4L"œ÷ü, ÝXÏ¥@ }Û¥+¸tzr §ƒtÇÜ#É|=n‡¾Mr-hÓçOÐMÒç8C2Låͯt|„éO™øüµþCÑÁ^ÍÆ ü.ÓÞšZ[lZ®Ò”mβJš¾ D8¥ ¤2EçF[Ó$M?ØÓ›t&ÿKI/(ž:…%ÔßIÿXÁåM²Bl£ —óOß%¾,…¥ãÖ¢ ¡Ibƒ\Ô#<{¨åù‡ÚqІ_þ $ à(Áât¹×<“Ï-#X¹ò„Ò˜ðôè ’<ø‡kV2@ã»=¾r·mg¾¹ïMâCÉ4¸á",ÍøÕ$‰$I%d+&a2` J’Lø™ þNW­9à0\„rO˜«m÷>§À.œhŽ·úÀTXžð¶Æ[¥5£µGA“h¿x‚¢$Èi Þ»×ÅgëÓÒ” I›†é¹„(MxÐ>°¿·Ï’·[h±¿­H•2O_ð[°Ÿ¦i¨…¹Ò<ßÄÜŸdøíçW¾áÓéèƒD.³íVåG} P;âò59!N±cˆ¥½~{ôð±#õGŠíjŠ‹Î=wîsè<24ØS»qµ2Cã”0ÿäB—ÜLs¶òÁd5–^¯=òp·÷Ìywaàü% ÛÿÝðœ{lEg«ƒ<ñÌA®t8È«ÿÑAN ròo$¾ÿ—•[Rÿp¥+OÚÓ‘]3Ûbhnúß¶?·²zOal†åÃèÉN+¤ÁeQY’¤ÁëîíEdB‹ú´:ÿŒVKYrå|yoCmIbJÒ¬3gçvˆ3Ü•»R8Ç8 oý¾vXØ9¶¼yA9)ØÆ’ …ŠGÝЭ»²[牥N]Ñ­À©‡ÑÉ™aþJ1š endstream endobj 161 0 obj <> endobj 943 0 obj <>stream xœuT}lå¿ËÅö‘FiǸ5fál*hÃ2 i£$tekIÇÖ–h‚†ˆA8‰›¸8Nj'qÓÆ±}ŽãÇçóçù£¤vš´dŒB© j‘Ê„ö)A»IÛ´©ÛÐBZþÞs^'ìu²Â&mzO§»÷y=?ý~Ïï¡©ê*ЦiMGç¡'›ï¯|nU¾I+ UÊ ¬v-?TTPË@mõ|ƒæÔ­èý¯¡—6¢Ì&ªŽ¦~¤»oÐ11ÏÎ^|³chxÜfîÑ7vÜ£o~à6ýÞA“ÍÜk´ê;#¦Aãù±è õšM#ãÛõ{-ýc• »þ1“Ýd3õ­Ãè1ÙôC}&›uÔj3ÙìF‹Åd·›Ž-½f[¯Å4lµ“ØÕh³ 9Öz÷ÛLFR¸–d²˜MÖ›±¯ÒÖjì±­¦~bÈj·í=F[_…¢¨[7öŽm¿í¾“Û1lk}Ž¢F¨g¨êe£ ÔÓtˆ:L‹t„–è(£ãt‚NR_'eTµz‹¾>LŸ¨ª­j«Ê15ŒÄü¹º¥úŒŠUYTo¨–Ô-uJàj-åé«ÊfFùŠpŸïüÛL·îØ¢ÿ{˧ˆ¾ñá§bñ5УvÛøøˆýûþéß>Ö‚ÔÒ‡—¯‰<:¨áÔÙ²Ùsç~)±ñx8•ò'¬{6ÒZ€%¶î æ–÷¨dAéÌÓh›â`”Vu#ƒ,‹"$´²t{ý~A౜§‘Á-E/h=Áí•üIA‡ºI w{<ø´î”Jˆ¢,óÈP9ØòÄ1ЦI9ݲn½+:Q¤ÿ¢ ¦t:ÁeOC>œºòÏÔÎãàpœ†,É£9’÷ägô_?cPA¶`Ÿ³Zív«uξ°07·p“Ò#sŠ9“Ò÷8¸³só33gæÞ—¢aI‚+{ÁµmÇARdžœÎááGüìÔTȳNùëc°ÅOiàQ0_9òú௽/›N€¼ÎÚîè‘7…W2ˆð2‹ˆ&?ËÁÔäoží“QÍyø^`×APˇ¢ Eí,¹,œv8ณ_Ý¥qÂñ|Ngùº/ªš"ÔhA¹¿ˆìy”we±tMCÂrÒ5é÷xü|+¶«ð»ê6tl:H:×ÙB êÒ!iåîèdDÈ‚6RR’Yܬ4sh^°¢Z§ßQDÛ ÊËùuÂÛ•¸”” ÃVô ÁçæËïàœgZðä\©é¤_¹‚sõ²O X9™”ÓSWLWžEa•’(;nJ6¡+ÕNÇ—’UúµÏ£·çÑâ<}µò&S2Uæª7¡F¼wâFÜ„àNÔ„Ñ~Ô‰Q:À¯Ü–áh;ªA›Ñƒ)/jH1‡ô ¼9·“µ ÿŽÃßIáZÄyQ3‹Õèú7¼¸×brïaÑÛÂkîEj´¨¼KüXT¬EFù\ùÅW” Öâ; M߯[ÞB·ó £ù*¦Öà­hë>‚`3Úz ÝÍ×-O\+  Ÿ§Kÿ$³º§ëh;xY!ˆ§Å˜$ò¹ó?½¾t)Ãgã¾Hˆ|þÑ =ù“Á¨Ø)o@ð¾Ôþû.ÝJJ=1N˜šœî*Ó†þÀ%¥TÒ$O´|eë'ãDj`Ý‚àvÅŸN™Åáò, þ5¹ÜIA–DˆÉ¼ò*6ü?]*”ô‰éÖ|÷£\ú/Û}WF ¨æcÔ,jQÀmjÜ‚ïÂux7Þ…¶àM¨M‡Zÿ#¾Sõ€5Ÿ¸Ðí•u²÷qjµkmö¯— Œ¢]ù„Ã+ þD06ÚÙf‚·qO½[…€xOòÇ"dÏ$ù+ÑSåÄœbHí)¥xN1,ï«Êá0D×¼à L¹|üz£…Rõt©Pjâ¢IbÇ0›ðÁI~å€ú¤¼!FÉbúÇÊ®ø¤8ý> endobj 944 0 obj <>stream xœ­W pS畾²¸ ¤¥"v›Þë’¬ºlMC€´ÙÖ`Ìü_ÁÆ–Áo[’eÉzYï+«÷[¶ä·ecù…mÌÓM %†@ÓÒ„°d™În§ùå\·é/›l'´³;ÛÑhF÷ŽîýÏùÎw¾ï‘–Bðx<þʼ¼×–&e'~ÀK<š’øaªŠ+ørÙäÞYž éi½Îý.Ò|åÏCË&Òx¼U¹;…+«kä¢Òý$YO®\”õì²e/d­¨ŠJ‹ «²ò %„•…|Q‘µ©º¨T(‘?•µ¢¢"+?ù„8+_(ФÂâé³WVWÖÔI„¢¬¼êb¡¨ª¦P$)-¬(.-)!bAUŽHœ»¶x°dÿüÒ²Íå•?{ñe‚XOd›ˆÍÄbâ߈âib±šx•xxŽXCäÏk‰üù(Ê úôvƒÆbÐ2”xYa±H…Þ×ÞîióuÒááq4Þ"ßß6¸rù¶Â*ÊpjoßvØ"‰¢B¼[»,¤ÎmöYG—› œˆ¼=d—KT'7Éôe´E¯Ü`V)^3Ôª6š•F˜IITŒ„7ewyú­äܯRŒG§ã¨w7©EJÍasƒ´YªF+S§¥r¹ìÝ›¸€äÖðu6À ›Ç溌º2¾à¿Ö”[Aa¨¦-&«ÒʪC›«ÙA½„¬Ý[¦Oï4¨­†Uÿóåó@>Á?‹ôÞAÖ6 ™è>J?'5‰@FkÜ&Oˆõ6Û¨z‰uâÜ™! È©©¾L2Uší°4Ó­ŒL£ÕÄ}*ž¡Zô+€üú_tb˜ß ,x"8OÞÍ:BÛŠNÞ âjñ-ˆøûûÆY›»‡uÚ½£]}=ýÎø!b i tÆБuÍʶîÞ¶‘ÁŠüÕ{^¯‘RõWWƒö~$¯7nÇIÿßë0àŽõ{(ØÝ|L¢ñ;èñ†c<ôè9ôÜùÔĉtÄ,•ƒˆ”Ômáƒþ#ç×tæqß/\¼=TMµË›™_h §µ° jeeÕ²ñN«İÚ!™°¹G!@öÖ¸5Š}šÍÎ ?E¯ ¡yc·EKÜÔ.o±ÆÈHó¥{ÇkÃÔÜ/¿ñÄŸâ¼D"[`µ™|8[sÀç¾q×ã­}C­G6ÄblÜF—¬PÍ€,â7€t¬ŠmøÒ ™•Õ„­´ÇÚd (ê,V½!ƒaÌf3µ˜;‘q½ë´y߃̖DYkP![¬2z-ÿ_¡ÖŽ_bRâ  9Þ ³Õʨi\ßþ™òf&Ëk¶kƒÑ¥‘€ßd[Â@:à k G`k ¥6Æ>p¹;íMþqõæ´=ÈŒÑe#Ë-uèýuK \šk£v:lu“oØÆz©3ü;À0A aˆ†T`¤‹Yµ[Ñy”rÅCÜG*#ñ_o¿ÍȘ¢6K@)­´X¥ôJþc NæaVL3±éïæ1CÓú$MYOÔ{méÅÝÒh1( Ôþ§ ¸4n5n½ùßh½d GgÄ ð_OM L.°6{XÒiöjÌŒEBm2×Y´VgªB8FQ_fª§ê–k¥/èš«¯ÃïžÃ=ÂÑÜ“½³þƒ §&Z"tdÕ/-8 íÞæ–ÁÐ,.³[£±EFJµY¶­H‰.‹Úýö ýò‚«¶IËÜ#ûűî/ÚÆéžs'ÆŽy1úŠÆ,Zd¬¥Õ»Á¢-HêMî–ûøMÆWmWí¤Ïã ºL­AÆÀ úEPÛuX ™F½:hõÒç,P*0ɬàR¦ÖdpÆDT±`®gr ørõ4[Z=½`lŸFX³£¶îUK¦Qc•zŸ£ÝWéf¼3% 4Ú ô~¶Òà´‡€E$¢,œºëV°?dâ›GsR8îÝÂ8£’z6Æ;quޤ¢=H&hƒ÷Ù7¢÷ÚÏB˜|kkßn÷üO¸œ9¿¥ gnþ>äÕºF†1š¨Ÿ=Å¥A¯Ô«×{ÄÑL{b‚>4÷?&€®/ú1· i|ØŸË ® ¾•(£…·Â1Þ©»è×wSó Ÿò“íRCý~Ómßi~“Ýý›ÂÐÄõX Ó ÓÈ¡ž”DTm=ÝÇvuì*]«xºœÒIÀRÃe‘/ó뿦ßþÊ© Y¶rÉVÈd@ ²ÀQ?ŒaµËCu5Uaááê“çÆ.t©ÁKíè;6_•Éh2Pô±„ Æ»†égHÌ`l]ÉeµD.—š)}¸òðúi†-à2¹lޏ²åWGG;{â´b­oH‘ÛXh¨*.+Ü/Ä"1+v¶|­ÐLvȃRQE}QþuóY´ðʵsaªíªëê¥2AX¹+OUüìX'âuOÐ}§ÅG€|'²BG3ªY¸;ŠsþÚèÓî|äÕ XLrŠ[8uɬÄ^mÍl©¢M!_Г4Í>gKû'3>¶¶¾þ–ÇoÚ*ÞºBjÖRB3ÄÑñ:ÿnâÜG=Ÿ?2_‰åfË kòCþo>.ß+ÉÙSFï*Ío܈!žÇGj…Í;x÷}øùñ¢‹MqÇgšãIд”¶ÛØú<ÿSèa\@ºB34cä3Jj±ƒœ6뼈š2æA ø·c»ö© Õ&)­¯Òœ|éRÙ¯>ý<ê`|êFFg¶Ru« ¤U@–˜cñ¸kܧ½˜>8[<°59yðJOÞ/‘àïÖåø»©hb2MЦh’ÔV‰+ëší]=½—=•*¨y ó6Ǥ4a'wïãÞ7‘•¼¸o_³»Ã ¤}ݾnÿý¯·=psêdÑÀörYê³vùìT쳣ݽ@†|¦j­U¥­L¶`ÿP’Ù‰¦ãR~†$WSÏâÀ¢Ê¨¸²¶ºV–uôvź(Nø§%åºkÖ” {0ìèï4w«jDeÂ!Ñés(e¥÷R·Ñ—ö€ÍáÌS{müQÞý(ü¬=ì¦z/OLœ²5 *S1øƒ£H)ó%eò‹^b{Òf¦'%òÿ²"cÕD[­:<ª½ŒËïpEíT7Ú0kfPúˆ/ÂÆf®ãVdXLŒŒ¤ÞmôømÎfuý´'€yˆßËZõŒ¹Þj¦¹Œ©6i| 2赯 AÝÜ}ÙÝôïø1x—‰éI:a#Ôˆõ`«¥ËífÁÁ:ìI5HYôRR#ßÏôÛékoÝýõ[¿§/ä |c]ô2¾#ƒü¤ú[´ŒÚ‚}€Ü0^pf¬ë`4Hu 59C£ÜL©w×¾ºÈZc[w 8Ûi,ãMx ûÍã‘íî¡¶þþ@ðÔ›G†ŽãèŒG»Å»ÁúõŒ7Ú/ܱqÛÞü|jc¾¨QaHÒôç?¹M¦áÁþfNT¶¾„ÑK:O°ù+q:yå'·÷·ù©H<ü68IãVë“•²0&9Ó¨Ü(+ܤØÐÞ1c§Xú®Þß+&—ÿÍ^a÷¹:l>›3~q<Þß÷àÊ µÔí%¯Ó†Ú†W5Êõ¦C%†éoÇýÿQ®oÛNfËvÑÚZ<ÑɾU¹– ÿ®r­Êߟ÷:¥ÿundìuŠÍ+ gwÅvÃIJñ¦²óŸ²©,/!r[7[xŸLþ u² \^É Ö§f0áÕÔÔMn@ƒ‡Pg‚Úk øFFÐ`;AŸ/Ô¹4.zêŠb“à=ñ8ÁmmE+P*­¥¢õa¬Qåç噋¨÷ÝßÞ@\ï=P_]S­ê‡X,Ó)O#¤½‰¥±ów®wñÆn}†ü¦&Tèž@õ¦ðíg`1¬ß»k_öO#ñ‘wœ›ƒÿö“Ñ;¿¤.Ý>ž„ß“hIöc[|j÷½ qDÝÚ×ÑÓdÚ‹Xjä⥠î÷Ûr8r³f«j;ÍY¹[.ÍøYË¡ž?bü»Þ>í.7ss^Êá„ÜÓô\iëä¿·r]>¿ŸÏøf÷=x}õ`Ú -éÄééñƒ“ɽ endstream endobj 545 0 obj <> endobj 945 0 obj <>stream xœcd`ab`dddsö 24±TH3þaú!ËÜý»ïû±Ÿ¬Ý<ÌÝ<,ë¾ÿún&øÝÿ»®3#£›w”s~AeQfzF‰‚†³¦‚¡¥¥¹‚cnjQfrbž‚obIFjnb “£œŸœ™ZR©§à˜“£ÒQ¬”ZœZT–š¶Ù9?· ´$µHÁ7?%µ(IC““ d{Ò¾ÿŒºøþ3&)0üî[ð+h>ãÓíÌßýîíîéîíè‹Ýõ›ÿ»H÷÷3@ô÷»ðž½Ý=½½Ý}}½í fŽ¿™¢ä"3×þfèÖîvžô›ïøoÑÝÊw¦wsLèíí—G1ú{>ÐìÙß{E»/·|çóÿ.ýÙòJ}7GG{W[gOWO§üîÈï|¿…»Ÿîþ}æ7ïoá¨È®Î®®îN޶þ®¾i®~gÚ#·÷;óÌï ݯ9øªgÿ´Ÿý{áôïù“Ù~'La_Êu€[Ž‹¥2Ÿ‡söTž3xx‡¾¢ˆ endstream endobj 157 0 obj <> endobj 946 0 obj <>stream xœ¥”}Lwǯ¯7e:ç.‚c½Î—M7Eq:å—©ó%:ŒâPt/ÄfQh‹p¥PèAKï¹–¾AK¡P^(x¢@6usèTÔlnÓ-™É¦n™Éæ^²EÍïð×d»"lÉ2Í’år÷»K~ÏïžÏ÷ù>‚ˆ! …*uã²ÔäyÑ×Ò“ )1FzJ E÷’‡^qJˆ‹íLTõ<Ž–LDIЌǥB±òÕ Ë÷屺œÝÙÍÌå³4É))‹4Ks³t9;¶íÕ¤n3dgån3ÈZÍÆ};r² l’f©V«I‹Fè5iYú,Ýþ¬÷½¢@›¥#Bµzmêú´›b1›H"’‰ˆÄ"‚’ó$b “¤\KO&‘·ÑÀø?”  ¢þc¨[TÜ‘U~(‡J7éª=g} Ð2«Æm$[ ¬±¼gª¹­ Öc+Ò«º'bW½QU¾Éd#[!5j#CA5¡,­Êw‚A&dŦ‡ï‰€?´q! )HŽ˜©ˆCfÐyY +HoÚÀOI³$ÇÛ9Š-aQb£ÐQ)%K è/"ÅÝÁsÜ ^¡N€ uŸk7ÉÊ«©Ž÷ðL»­V°¯Øh±`ÅôxCAZš~?…œÿS‹tUÀ/uÁgWœ{åm|m Ø]¥•¼Ýnãõ¶JJ)6ÔGÌÎ 19lÕœÇâ«ðXÝÔ‹ÒW´Ö`‡Ý{ ¥a*¢‰`zTYˆ‹ƒ4èNâ{c0Mò P“ßUБvÉÐ^ضòZymT²žüQÉbDé€x]–lÚEãÒë\y€× ëd Ëßnçš™ÈAì‡ÌU•Ev(žºO>w8çáæ%7ôC %YU‚€ª"_{YO•üàôºüÈ.}/ðc"Ö;¦é_ŽÉUAÞýÔ]#ø\P;R½t2ì`ÙOἈ–öÞoË|:ÞNâ"©ÏàJü ß‘X!ke$Nùr‚@I7¤ßè»dò¥"ù*`!¿EGÉ5·Á;’u‰Ù‘í 6¿FÍ”"þ.*Q§«ålLÖ˜.cågO×·î¬5yÌNh ©‡3ôVz,f—wë'ú®Šš-Ÿ¬FÄ÷õß4ŽB ~ö«Æ—þnWÅ–(ëkEW4ÊÚþÖtÔJwô8à]8Q9°§¯Ïò«Vf]“›1½ˆÂ騄C÷…ýÙx,¦µEx¾ZF½Eíß0j ´?õ6ê¢=Bµà•Û£ÙtõˆÀ+¯-¦ž#ežwfqhŠøx§˜'ö‰ˆCb@œ<éË+whêæšÀh7q2? ÑWsî¾s©W´ÛgnÎì8œ­^?h?Í”óZX(6ªñ:•ŠC§ÓíR7Ô‡œÙ2­Ÿ­ÏÔ õ²ŠÓÑ„/Ðäë7ñ´˜I·æžyôó)§¿|åç—5ª%Žò:  ¾A³UòjälÖ*›Úb))ÓÉ lðš«÷ø Õ¹@áÄy«qšöU(i ƒÊѺ¢ÖR³¯³]¨÷ÊFžôËÛ‘ïéºN¡¨§Ë]O!n(‘6—ZÍŶ²²|k™ààƒß^¢"™[iK#ÛawPh*iµqVyl¬BOàÙ5/~|aÓÐÒFo÷«zÇöŽS]Ô÷ˆèŠ‹“ïG âO1QÍ endstream endobj 137 0 obj <> endobj 947 0 obj <>stream xœUTkTT×¾×Ëܹ"bÀ^Å;ã#)6˜ˆIŠßXÀ©¯(º ˆ  ÂòŠ3l‘×Àa@yŠ”‡¢ñAkd©-(F£ã*1µfùÜwrè²—¥þèÚÎ9ûìsö÷ó}4e7Ž¢iZæí¿iÑØà#q-ºŽg2@ô¶bÛ80à`wÜ•ótÆX'\7 }@ÉhÚgíö Pou\J|d„J£tóž§ôðòòT®Œ ‹ ‰Uú‡hTa1!i­Ü¬ Ó¤|¢\­Ü4V‘ Ü–Ÿ¶{ìnouL\¢&,^é¯Þûǘ°ˆߘ˜Š¢œV~öù¿÷ô Zê6ïã í¥µÙÔo(žšBM¥¦QÓ© J ÆSö”åD9S“é|(g %§ èÉtÔ8§q Œ#SΜµ£íìNËìd9²ìjvHþÅz×ï(Ç7ÌŒA ¬`W›hñK›ŸW¡-M…Ðæä¥“„ÑáiÙqI;½€‹’·è/@ ´@œÕrVypÁ^4B1ºÐiÖ³—ˆ[Q&KÌ6P Qò!}!\„KRÙ©$U¾²K3[8Ò.xœDîɰŽoÆM^A%5 ƒ'Ÿ_9Bßz†»^0xòwÏmœMœV‡oݲÂtA¥8Qo±¶h,{âÔ©¡îÏü‘E—ŸF~y°fðÃZÅ݆Þp»çqyŽrñÆåáõiGšMµ­{* „ö‹wô5ÀÌ™û‡Øô4EL´F÷ÕÁ}ù9ùÁ¥—Bµð¶ ‰‹©V1ÈDcÿmFl3x”$eäç§g ¤4T…ÇÉõYËM;ï²…0$ÁÓÈ—iË[^YgÉWˆ2~TFŠåïѽ|Š> ÈLôk+êFTн|ÅÁSÙíÀ¡ÓàÆò\}žNy»÷f~ `‡1Ú]¤ƒ|à2 +EA:å)YU¢?TR$Œ'{†$j–( „Ýžÿµ:x_LhôVX ëÚ4}úüÃP\CmMsklErÊžìß/@9:½z‚ çùœØoÿSZd˜â}›¢KÃ#§ŽÐgžà¡Ç øOœø[Ó¹ž¶ïÀZ‹*Hw0²¸Kj]McùÉ¿õ 2‹L#ѤýžtŸ¯8Ý!œúæX;<äpªÛa¼wîÐÈ“ÛüVˆjÝß éÐÝ€“ÜÓooÝ9×´WõÁA EprÄÞ@UJ0pïº2‹½÷%ÞpãcFÔ‹¯øÒr‰ñZ޳ñ]_¸íP~©¶Š‹f#I„¬™-4–߬,)/º F‰Z;—„%î d!,qɆÀ®.è0ÝrÀ¹uh¶ïý5MÍOî7ˆ®øÇXôoFtÅnžh ²1i›¾9N8sHo…2®IS›æ{i×ÎÄ)èŠQXAäƒs‰ý¬OÉTÂ?™²œîè©Èt_>b͉­šVè†è…ö£mõ'ZL]p×èóÌ; –B2·d§ûÂw_P´šq¼„v¶2Xc[Ë“Ùdº)Ÿ¢£›É"“D»8œÂ‰¸¸“îµmcljæ&°X`¿â¿ãÙý  Ñ˜À¨°M$*ÞX'e’Ç2Nìþd)S'eßÐ5ŸQDoþu³‰~ÞÇà0Ñó%0Ê/ȨP™ÈGâW€Ÿ¶áœÑÓYYQPE\ÑÁâì´ír$lD©&~@€h?tý˜û¿cQ+{õ<üœ†¬?ÚïYðC pÙÚÜ<É# ™ T—²È'@N‘ Ä5 0CÒäqyúܲªs=¥%NGeú:po‘Ï1ãwxM²«éŒè‡ÉŽhH >UI/³.Ãc87áïåÍϾ/«‡cp3Õ´À°V€¯$iÌÍI³}Ò£Þÿm°Š-Ö3W™w¼nsâê â„]¡[ÜÇ,÷(| WŽr£e’ådº ª(¶M? R<„6ÉrTrw­¡õzá>þòò?VúÂKÔüÌàqÜÉWÛ­U•W/÷^„q8á·wˆqX²`áŽor+ÍÍÆ“ç·C¦Ð8p½þ,p?u/ñœ³j9±'Ä™LÉÌÄ»ˆ ¶}eѬ69g{æ¾?ç,‡4àˆÏ˜o¿ ¢à†øÒB÷¾׿`l¡èÅG³ºì¬€ÜÔ¼,mÎà³Õ½M§;®¹ÚÓú%²d½JI”®Ÿwû^\*´4Wo”önmI^ynuV®LÒóqâ%Ã嬹jTC{¯*Ô7bû¡ŸÃy(xýe+‰ÛjµO¼¿³Jå Þœæ0X\6Ö›¡pŒÜ_­4~8ˆmKøÑÓQµì¬pŨQ®“,<ñ­…_‡.€‰Ï=òùPy\!šåÇ ‹;”³’ªÖVžkf“̶åfrĈê2–„”Ë­öƒ{;O“Ãø†"‡Á*‡‰õ?UýÓ endstream endobj 134 0 obj <> endobj 948 0 obj <>stream xœ­yy\SWúþ‘xk­µb*©ö^ëÖMk­ítêh«µZwq_•}‘EÙ×7ûF @€°PÅ «(ÔÖZ¬µê`µvº·c;3ßz™ßüÎkg¾cg:¿ÏøC!çÜsž÷}ŸçyßË!FŽ 8Ψ%kÖ¬˜ûûÏ™¡IœÐä¡G¹iŒåGË€2 ÆpaÌȆÉSçŒG_?„”¢ÕãˆQβÕQ{â’…K2÷I²S’’s¦<±äÉ)s_zéÅ)‹Ó²Sâb2¦¬‰ÉINHÉÁÿI›²13.%!GòÌ”ÅiiS6°+„S6$²s⇟¿$3}Ÿ('!{ÊšÌø„ì aJ^#ŠOHˉÙ“““Ÿ’˜HÄó‹3^ÍÜ÷ZÖÒìeÂ×s–‹rWæÅ¬Ç®–Ä­É_›™´>yCJꦽi[Ò¼ü»ù 'M»ˆ ¦ëˆiD$±ž˜Al f‰Ç‰MÄÄfâIb ±•xšØF¼JÌ"¶KˆÙÄâ5â"ŠXJÌ!–¯s‰åÄsÄ b±’XE¼@¬&Ö/k‰G šx€xÇ1r€c☉0ªÄ(¢‘“9âÑ9ÜyÜö‘ÛÃV„}Ë;>êuri¾O3zÑè³÷/>¦ó³c5Ò'÷ùCÝã áK'ð&ìã?È<¼fâø‰"ê/ Î?"™´cÒ¥É;M|´“"©õT6ÕLßOÇÑŸNIý;gÍfbì@6Q\0´ØÏ90ð<½Œ¸üäÈ”¼(½Ü¨›ÎQÞi†r*M†z íÅPáR™4tŽYì„”Ø=Þª«h|ròLJP™”–¬âi &Ó· ärÈ]`/ó›¡Œ:Ë{ŽL@:_Kå¼”¤¢ÀÔTãi°—Ðþ3h$œ%{“;_ynçêl ¥?Û¸ö‚HœŸ"I*\:RgÕ:œ&Sµò½Y~¶ÈjgAºH¯N£•IŠ$e’N,ߥ•¨³ä;AKzä¥Å%öR'e¶¹šm~Gƒ³ÁÑ@âK|ÞO`¨ûü¨#8>tûÖ¾›ÿ1|W«ÕŒ¯€æ¡0xZ9þt&‚f¦óPŠ8þï®Âçäõe½LÅ\ቕ V¸ ôMPÉ  ÑIifÒ`sXøíd¥A±t’Xñ¶ƒŸF_óÐl4‘·?\rr¾“f¦27øÌ$^!àU&¹Éh'8Ìv³ëjŽ@‘<4˜ª§ŸŸÁŒ£ÇþóAÇÈ]D.rC;Q=ÿ«5ï=ËD03Ó™Çfí3$@|4=F1%L9{bû¥£ïëOÒ׺ky¢-ni\µtìòMYx¼í×é³%ˆæ GóÅ hÍîa&œ¯Nשb”)@l0©<Þ3xéüJè2T¥\¹G ùÑz‡³¸-²WӞ̺øS´04=Žÿ|ë…E«6¯)”Óª“ñµq9…âÁµÿÁÒžŠž;ê: Ý+ç;ê냾{}Gü»·Fe2aÙ[éìÍÑQÑ@¾.ÿØj1;M6zìÀi„9;~ÏEs¯ð•Ér ÆüíBÛQ¢é/ü3¾gÀ®Zî†|ïË·1Ôö<æÕ§˜tfê+˘Q@2¼{ĉ…ïà´€ïàdösCkBKø8ǵªø¤d1%éL«ÛƒwcÆ23™'ž8·þÝ7Ž´WWÒ&£lGÑö¢me’2] ;9[m×;JÊÍPBÏ+…2Cép}»U ݉Á¶™L/m@¾6 …bQæî=;ŒÍií9ÓˆFVtÐ.kÁ7yÇû’ʨ/2pîŒxÿ›éoQk#çèÀfîÀ*$å›,XI›Î¦ÑŒz=e0‚A™ÉLÙ³ŽyŸxæ=î܇‚ßñ®ÛóÓ T§ÓQzRmÓÛ]&G‰•:‹¤aì–J£®PG彜'zÈY¼óÈèj6[Mã¡kR_1B¦.•6êŒ0*¼Þaµ–›©J´,f7˜%H¨A)o(š(;j¹Ö¨ÓËÙkµàn¨CF^˜L•£‹ E%êë/a ª»Å B³ùišˆHa…ª¤¾:ÐДV¿=.Z²6†R¿‡S4òÒe¢ü$é:Lÿ¢½çpŠùÿ–d<¿²8[ÑÓöj[•½ÒVe-±ú,^‹«îDMU±§¶úøÀ§÷*Yö‘\gcrÿ°1y‹N¢ßó¿æ]µçg µ"Z-†FmÕáƒX}Vê* ³êíj m¾ŽÊ]”—‹£ô,ï*þ ÚGxè¡òÄ×4 Ògah E¸Ö~ÚŒ_-VŠ ¬4&Ã*ª€t±µ±Àà(µ™fËNïü³Ó¹~4çSþñ]iO¡gºv]šþ#£ü2}Ænôê: ŠL˜Ϲ‹,gò¨v­¿ªÈÊBOž(#Wdob?šÕ‰Fž*…ú½MTv@hÛì!ÃÿºÏ¾ÇÕùˆ¿üòW‡ ’ÜÔnC‚1·Bã*©÷tt$^ÈLLžûÊ•‚j-> wä"7ˆŠ‚¡'‚œ“7CU Ü¢U|— (TÔ²ßjyÍñÕ‚=¸2¥8ÓS“ÁÈ™—ï1ôÔåÏo¤= Uû`“Å&³³ÙVî{;¹ßZâhp·™-gL¤•­KèóÅЛy1°ÛŒ)S)‰Â `¤kx¿•Ô(ž)N§6.ȉòeæ¡v´øbÍþ…Ño]þâÄ'˜uFwÌœS A!­tƒÅc2•[) jŒ›¥üÉAôªŸÓÛËEÑ¡™üÏyî!üóèy¼V4ÓZfp|E®"UŽ~¯ŠŠgæ…Íæå±$çÀqû”·‚)S%ëP$عO÷íÓh¦Ã®³h0:eÄ_ê‚ÜíÑK×™n¨©2A…¥˜Eñé×Ùü¼€9#ˆóó î€<ô?|׳û= ËÙ#(A#É5€˜fFóÄk©– ?µ÷.µ®e´aÌ^/R/üú¥¬Œ²©¸ 9jüGXÊ+‡Rq4¯* @:︖µàt›0A9é>Ô†ºyù+¶1 <½"¤Lùk—㺜½œ}†_áÿ—´¤gbø5ôå9¾wãqYš Pé;PÖâí 9ìc´R%Y&Ù‡ñƒýÞj‹ÛÝA;êuöúÒsÞ.ïiG Ž…,•¹¥êìl ¥ˆßÌìU'“áÆø—^´UÑÙz¶¾¿ö"]Üdó‚Ÿ<œÖ5'‘™¡b9ÈeÂ$B>>؆ÅÐí3îÍ’gHèÝÌýÚH'g\+8ôv󑀟͗ë»ïX„¿ô–t£ÉsCÑ¡Ñü·öZUB‘0OæÀTB¹•µû`+³Ž)bƬ•uµž¬¾Tw™ò²ºñ£;ÒÛvÜûÑ®2H~t3Ò@"KlcfKÚIpá žõŸeá{t‘ë¿øUHäôÇ 5†~ä;Ìî@ú†#¯.—MCåóÏåÒÏ– ¨u43j0:kÆòQ H(Ÿì «Ñf´¹¿6ô)*Ó%1Š•«Oí¾üÙ·}_ØçÿînØþÚëíþ¾©N ïB߼ɯZw^ÞW¡óú¾ês­(zÈ7ÓìÊ; Øt”kHÉœ»3smbÜV Ãon”t ºš­etZ`ó»šÁ*¸D!Äf¡N¤Ë9ˆ@¸7ÁhË òÓðÊ®ðAY“ãH'ºŸ.n é=p­ùä`KëpHµ›¿›ÞÉ<¤ˆ…rêÇ⮲Nx¯ò°õï7úÇ·_@q*v¢Óèþ_/ý¥½|yí¾ö­ÿl?Î;¼¿ž¿é>–ß0©åå-¾%o™ŸRZ)^É,ÃP믶x\iG­ÊlEO¹ZÀN–È=Ò½ªd™çwñ}İ;:ÐÇ éCOð,XMeÞ¦Úý5M5è‘?iî³;Ln€2Ò®·©ä2È©^¤šÓ‡@¢pí´ b-ª4ƒ“™s7ÑÍ;äQáb\í]ò€È,R%¿—¿·ŽÝw¯êwØk¬>ú šƒf¡ûƒ«Þ`&zR`ј5 &ÓãŒJ¥b˜Aš[ÍÐL¿ë̆·PЉ¦"§´…•õY©8}בð†×Ï©¿…ÞÃÞ##4‹¿W#âŒõ •µuQ1kSÖ‰•TÎk¬ø 363EC¦Ãl·šéˆ{±2d§+F(ÒäÈ¢è‚U:iáz麌M[@ Ùëmq8 ˜ôK‹Å¬ܽ1Çćh;TIù"OæáÔúþ4šXu'¢*=½oÞúØ]@&‹kUY}¾wèâ£Þ7Ü­¥½ŽÅ U•E¬wªŒ&”ÒÎ9z).pQÁÀ\¾Éj¶ƒÄèŒIzƒ„Ê7J £Ð 6âÞNáw(jU†NB ŸVÄm`òt6ò¡ˆœqvËD¢1èI4ƒm ¶îÜ“'¦Üƒ#ù{“×÷[*Ê/ѯïm«×ììùôÝ{¹~ més?¥YèCnˆúïj³¸±~ÖaÝpËA——cÀ²È<‚5EÄjÊN‹!ç¸iØ9–_C)f¾¦…´k­Zì¾°@²¦X%Þ;o® …@>ý }À‡i³Ç¬ÿØ:þQfOi÷Äð¿ 3’¿/!>eÈ Ê,=j1Ú0Údƒ¿¶ºZì”$Ëvl;œ|öO·?GÜzúÛÐ#&öö!ªQæêÒUÔbæ˜V‚O!„™—š5i£öLÝÙºku—iOÐ^ò ¼}«­ýà?òöf"¤‚œõ®èd°ÅÕÚL™ŒÒHE|ò¾@m;:Øßéç´_D¢¸¡I¡1|1(¡P¦ÑÊ¥P@æ•Ê*uþöãѭ˘‰ø{3õùÓ ¾ÇJóW¯]cÓé¸R¨U¿™%Mr™¨÷dsÙ7-ïÒµÇNŸ~ ¼pÆà߃±â¶/½Ç?Fsœò³­*o5[ÙcxÙ`4Ê 9ƒW"…úôUFÈ3î^íö„A‡,*G´\/ÐËŒù¸Ô­þ.3ìq^ .Ó’áá†KaÒÑ©¦½vh7`„:aâÝüÇ"4é] ð€Íis…fŒÃ¿ff ^ý_ü141aÝCæ²{»NÏï Åy¯•ø½ç9‡C/pQø þáÍ';{OÕÖ””^êk>NÒ©ƒÚ Sk©ì=ÂÜ,ȹKÈ­É/ËòÕÝÏæêM¶ý ]Ö~Ü) üêJe[Ÿ·m`3¥ÆoŽÚ»jc¾$O¼vMb$¦*Í`·›LÅÊWÓÔÚŠ¹Õþì QYnßv£ðj«Ñ®Pu =-ŠŒÆãçæ9r]q>9K™RÇfóà[?sÀòpCð¿8`îNîp@öpBÉ “R¡1`õ¡Ö2ºaéü«ô¸#±ðÀ+T:êéµîÿ¦×厛pWŒ°i‡>à{û®ZHK±©ŒõyÛX–ˆÂ…,1©a'®dº×`Í (q+\È„ n`RCAµÏhá;Œ½ë¨m= 4°W¤Á`l‡0w…^ U%˜-ÿ!ñœf—Ù‰&…š"ìC«)ÿa“™5.6'-Ö2üs}l%fûÑB?§óäkä¢×q»^ïš—_ :ÎA9y$¡}ÅTæéY̲©½¯~vïÜÞy¥jJߦm~þaôÌW¥8 Ž4d%LÅÝ} ›¬¨fIËßÊ¢Ù7*üœ®[¨ëÕÜgøCC =ŸWñCÉ{Î&{ ²ºgT¥Ò­Œ×É2 ˆü em1Õ»÷ÄìÏ£$ÉŠ¤f"¹œw—^ßæIž‰ers¦ä?/}u;è!$]V8¦!éÊKÏOØsDtðû´ê¤‡*¿vU؆æsySؤ#€›ÎÀô[\t½ÇG xˆBÔ÷ˆw}Å{Ìxš9ÿ ¸_©þ댷Íä0Ùh49tâ§9Ðw¼Î eý&:šÎ—D%<‹Ôc< Ùûý,dhµ?4žµeå·²/L }†Âùºƒ®H»%FŒM`jZmß hdU'ìîlïJR ­/ +íæ3[·ã9Ì8æQæÉiom{ûcþr:ü‹üå`ÐænÒd'%ÇÆ&`k™Ùælg“ËYÒ'ó‰„Yy©±‡ >Bü‹7O{)Ä m²cI1 XS&,ÌÛ§gMÙ(9Álùä£ô ?ÔTÅ9~qüè±:´¯ŸzÙÎG‹úдР½Ä·™)¸ Ncò™f öÛÜM”föb2õ£û uv;A+×S¢Õ[“vÃ6(jÖ^#™å6þ‚º„›ð9\ªE‚wn_A¼ïº®ùçK/2/NfLL$3‚Övö®rsôær«Ôª¦Ñ¬b~RAš&HE2ii>ÚyÒ“²]*£†uõóê~&"t£»¢‡‹ü—DÄ2¹NÊŠ¶@T¦s—y½Õ‰V Ohž0U+‚½×†‡ÖãŽhÝ¿Zÿ.1&nxh][ÜdõÐåÇ;Ñh874´Þ°}ßÖX ÿˆ/W¹•8}»ýèLp|¨îýƒO Ï üy¼|™÷ñÛY ·e13Ñ4ÆC12>W÷M?|L^_p™¡)&p—u~][\Žs»ü^ÊtU…áæa ï«òu©RE¼:‹–Gë±="_;—zñFów%­E£2àJøZ¬$ÈìOg ø3\¶V¬7Nx?²1¡˜%¨µä Lº1þj÷±î=7'†‡P šÆÿ¤¬gcÓR”ZêŠ< tà|5þ¶8åPñoí îp‹RU":é0¤<«)ÐÜ Ãç-h¦ƒ Ÿ® ‰ø¥²rQN–(+»RU\W][Åv¿î‡ÙÒ }?t®¢[(§'zè`? K|«J°ÊœÛÓ´kæff¦ZkÕÙ±ººmTû7'q{[é‘' g > ^¼sã&è°:ŠÝ[E†*/K(J=’¨ï³®?Õà“ G^â×ä:eûðY¤Å’*|’Z6ø ?e5ˆ8À <Ë ½€Ž=`v•Zæý˜AÉ?Ó-”ê4‰´Q†!³»Áæ³PA´Ôìbgv¼C áå`¤‘¬e–G 8ZFÛR»ÓlõZ©ô@e7y‘pƒ\iC‚­ïàE¼Añ²‡sÃVSk†=Ë«:C ÷ÇÊš ®Rœ¸ëÁÐým+9—>,.´ƒçûnýk¡ý²ë×±§˜iƒ}ÿPhõöªF'åjÕv ß^VN‡(ЀN/ÅŸ‘–\ßßu4ÐQâ¤*[½Ýw-€®@GnÍ]º ȼ"w[…µÊZJ[ËÁÅгeÿœâ–ª–ƒ%¥gß>ØtªÁ®qhu…Y7ÔZÕª›‚9 »6íŠÿÝk”B–˜XȦì´F|ÁˆvÎ1Ì ŽÿöbãÕz¹A‚í­q]û«ª}TÙþ’·þÉ·Ü5• ûœó/c˜äœXÇ ý=ÔÇ?pº1Ðeu›œ€UÜj°+%{ ¡2 ÝŒ9P…ÛL¥Ëh¥[õ¸'”´0Çhd.j#–†Z‚§ÌžR×P«£ÏÏ3@>µ‘÷*^h21ì ××eQf[èþÁ¿YrA_‚b°YÜìHœ»MüÓ»y=(¦¥üÒK;œz²tÑVÐË¢TéâŹNªÉÝÐŒ»ÁVÝâ¢*>¨ý¡ôM³ózøÿÁšË7'DÆQúÓ©‡Ás°sµ${øµß~iôÿðÚoÀFdV†<~·¡/¹‡ øåN³ì¤Gå”pÁRƒmŒY¢2¨q*ƒÚ¤©P†ð/"¼3núHÓé±'=XŒaÿº#ó+\&;¶éClCæˆ"»ÁdÀ|¨V¨dNWC‡<Œb°˜Qb‚g£r(ŠÍ&“½„e² fs%Zô -ñsÑVÿœøpìÞ‚,‘¨t߯ÇêrQf³ ×i†Bmªfåú•´\†KÏ@jmZ›óÚ4êÎFð çßpÑêãü Ð/ÌÈ 3y ?`?ð¥“`,•?nôsN‡â†DóÁd/3Y¬p¨´J©(æ“ÿ³Œ\Ù™[í´»L•–äféÙŒâžæ´Cu½Ü-ôß»šªÄØ52Y<æ)†`~ÇŒþÍ™×þˆF#> GOT¶ ÷ÓLÊ —¿-ñ`_o ŠB>žûrrÁ‹Éëé¤ÈÍ©»†^K6¼DÈ+ÙÍÑì \ÔŽ·Fóy?ï^©1¢wdeìÝš¡¾Ça²ØmÔ©Of¹›¼iÌ×Z–Œô¹£Ðßh«+µ°nÛOÈüÏ7pÚÏýPóí;\ä -ç3Òæ0`î#§\^×F÷£ß ÁcÎdï§­»ÇÉ2oÃ‘Æ y~åÒTy±^”Vú*¤–d'½Ó]ù@æ? 3vÔl8°‚öˆùm JÓa%¹0†™û\üÆÚ/.´¢õhr ‹ÚÈO‰ÜºÐÿûý7œ¶÷ŽÝBú>nhú_Ó|q.ë3™é¸³ž·¶ƒ…&#ùmô zMŸ¸ÌfÆ&|ŸÒ.ªo.m*kLƒ"úЕ«Ž: ?é^ÊŒ\%^¬H¤9sƒ?»àJÇ‘úJ[ioÃÙÛò³Ê›¯dr˜g豘“^©djÝÙãU5úÂýÔè‘/úÇÜWå3† þ/è»` endstream endobj 437 0 obj <> endobj 949 0 obj <>stream xœ’oluÇ×våÍCµÚ; Š‚Q#8IœsRfã˜1Ù„Ëh²v[{ÝÚr½­Ýúïžë]»þÛm--ë²N^lÁd DeALŒFÃŒñ˜ oÔÀ«ßk2 ïž'O¾ù~>ÉC ƒaì°Û?ÜÿhÚ©>K¨ÏéÔçõzÙhk“L†Ë¿?…nǯoï<‰ôqøhwÇÀ ßíè;ËÒ/v¼D¿ÖÚz€nw2nÇé^mïeÏ2Î^¶±ôÓ'N;Ö¿nïï§?Jxè㌇q3gw 8½,ã¦íg· !d8tŒq ´½Š£#¨©A‰¶ Û„L¨ºô&aÿµlêÇ×,áÕ%\ùŠPõøŽo5Þ“ýžøXd„’|QI¦Š²í7‰‰©—˜àã6oë ·HMg¼‰ƒ™š˜¼ Vüž[—Ù=þ˜T@ÔŒ˜)%m%|HZ7Xë·¾ ¸¹)8_šƒ‰ !ˆÄÎiO×K¸/1ñ.,ÿø^¢Ô¿ŒeH‚,I$' …‹÷p7L’ÓÄx!ÎŽÙ>Ðö|Ò¥µ7 Ž}€Q‰lèÜ¢:êƒ%â¡AýÅœ¿Zž[—ÈôŒ8›‹¤Cžbà¡NŠ~–` DùQn2Ôªpž‡!ˆ !¢éêG-Ú¼ª„Š‚è«¶ÓèãL ̦¿„h•Ò,õjˆáœoÅ­|xÂG‰114 UøN®Â ÁR‚J¼dE¬¤¨¸‚QøL™‚yH‹²”Ç;ÔŒÿTÿ{2˜Œ+`-B2%—Èõn¨†{jøåñÇ]¼²¢ÇCØkþÖS_ÿüBþ¦ÉkŸ.ï×¶iAµ½ðó›x;>öë…ìX~<*gë|Wð$o»nþsKTvѼˆ›ÿ­­¹º<Ü·O;4Õ²I\WP¨¦>SÃ;*ß– lùíâºßß0˜«þvÐ5är—¸ µ¹Ës¶NíYÎe«rVÊÊ9(’k§NíêÖ,Þ¨V)•l—þùföåIž‰4~ƒ ôø{=£.HðÞå!@v­ôݸ[.$…‚?(D}Û¹®Ï;»€ô‡ Õrzzjj®l´U´ù\>oÔzr[®4ßÙjk6(›ž¸"›Lýùo‘· endstream endobj 104 0 obj <> endobj 950 0 obj <>stream xœX XW¶®¶¡«DÜS &©ÆwÆ%‰qApEqÇ¥Mv‘¥Ù¡ûtƒì;4‹ÈÒŠ4Љ[¢&Æ$êĨ‰ã˜8Îèè)¼Ì›w tÌK2ï½o¾j¾š[U÷?ç?ÿùÏ•1f}™LÆÚ9-Þ4ãé×qâ›2ñ­>âÛr /r»ÌÁR–fÍoY×ÁkƒÑ{ NÄÈe2GW»À=‘Á>^Þ¡6¶vlfÌ›7Çf‘¿g°‡[€“[¨·§¿[(ýÃÏÆ%ÐÃÇ34rªÍ"??›µÒ!6k=C<ƒÃ=wö¾Û.ÐOX¨g°SàNÏà†af/ Xh·gI}°CÈÒÐeaËÃ#Üö:Fz8í\å¹ËÙËÛÇÅw½ßÿ™³Þ=gî<Û,§N§ ˜QÌjf4ãÌŒaÖ0c™µÌ8Æ…Ϭcl™õÌf3‘ÙÈlb3›™)Ìf 3•±g¦1ÌRf³ŒYά`f1ŽÌlƉ™Ã¬bÞ`xf3œ±b¬™L_Ɔ±`ü™Ì`f3”™Cãǘ1jæGÙj™±Ï´>†>¢ÜMþ‘™•Y°ù0ófó.…¿â kÆzr,—ÜwDßÍ}o[,¶øC¿eýþhéhÙÐß¼ÿæ H8iàùA‹E úfpèþC¶y14zè£7ßø‰_É6lʰ†a—‡Ï®þLì7àŸò5L8Ý$®(—‰Û»æñI¥šý! š”¤H¢ë~n•šÀ´à´T.R¥8 ÿj¡®B¥†3±aà yé9 ×gtâ0+4(.’éæSTŠýCh‚øTÓ…“YrWŒâ‘#-æ$F1 ËL¢…Q†r”áv”ÉŃxžÿÉý$écçä½ÐGÐb™Ÿh®b/dÁN%ùÒAÅV꿆ƒôê}·ú°ÈÜì¼tIJ@ 5¿]ÀR„ʳÂŒXi’áXˆÄ·äG»óªgÝGªÄM,λuïÁOs¯þ9JSsð6´s÷çÜ$³²ž|Îc%.gŸæo¶ßiGú*Éò¡+‹}K³ÝÑç=Â*ü³Ï;qLr£8Â(«GKÌGK¹Xƒ<¾9í™AæÌM†‘á÷§à œs÷ˆž¬áÉ0À¾·ÛᣲFeEó±Rœ…Æ=%å^°\¹¹@8 Åä8FmÂå¸Â€î&Ù)êZå]ñ]³øJHÚ¹œXVµ¬I"™JÆ’]Ä' ¨AdqZ”$ë¢ãã!N«L “ ¿q¬€™¥.½›|O ðsÑÕö3—®?Î=×û»Õ‘%ú„È®ôUJš/²Á„câðFÙSš²L “I¼®ST‡µ¾ýü;‡ÂÔ{äMçM¾ÊS,Yô¯vgÿ:Cb äDgñQà>;ïL¬ÈX»M+UªŠv?Pùö%4sâCš¶18T|‹¦­éuÚæ±¸mi:wc8™Œ‰³’8ÿc8/>ĉì]øÒçÈÆZ÷²-@x }£7zoõÞ¶l÷ àh¢Öt2¯±4ÑdeJô+7ð»æzwliXNã(Œ~—Œ"£ÏF«¦Žì“§”dûïl4Vòn8Çînåêóø&ŽûCûùÇÞÛ&1⮟D½VŸ0Xá<š² ÒŠp2a×|²82[Ï+äº/P¶b›ba¼Û$Á‹qº§€qEá¹VEÆ›wÿB¿?RÕe®ðOÙ¥¦·€ž>}‚œwboÌ™ØWˆ‰KÚ‘œ»q_uµ±¤¥cãA×|ÜbhIÉdî¯Kê:…S · ŠšE+¦Ï™ÉÒ¶kéçå¶gÒm[tÍç»ïõî@Q«GN¸'é]ÄkO³²w,îŰ8qÇ$aÖâh΄êÅ…¤?Å@7}¢“I6Š6u²¦/0ê ¹Ø_\À—AVt²¢…Ô´¸¤”´Àâ]™^Àù“‰@†ÂAaõ)Êšcr4'4ƒ÷átßäXü0PH.×êöi¡J²{!©(KÅå²cÞC)XŸÆÁùh}"ÈQªt?䓹>weÞê<8Á}v (Ï´Ö ºØl‰æH¯”XºHª4W“8¤·ÌÞA+Zg¸¿aR„hlÀVÁrX¥çT8r, áèëïkÁ¶ÐéêÎc!ŸZ“’/uþû‚Âö/ÜËßu¶(ùž I.r‹éæd­=ÚpA¹ìo´ û·ÊÑKËãƒ.n ­­«­m·û©gGÞýúZÛ™kB§ÛFv¹€ßj¸\)‰I`…”àc&,5õ&ø¦„1¤k8ÿ̤ ½èeã3RJnbé3û«ï¥"dkõÏ¡‘^Ï¡–Ò`$ÛäØo¿g©zмs¯ÕŸ‰«øW<ÜÄ.ؾjþÂÔêÓ>`‰Ãk†Æ³ã/<¯º·L‚î=.Ê47±NIpT)šQªÊ*É+‰M!àA ÍL /Íxp£×xð’òdÖý˜©ØFých¥×ch”H+=@Ò‚ƒÈ›db¢8€Ï*ÊȾ´«yi4à{@kéØšŠ”$-hS╤/É%<2?mR„jìé’XAtÑE—tÉÙ«O©ëbÈÖç”s½ÂÝû‚®b>«$=ëœô‚M,¥;ÄöìÍ9 ±ô©ñÊQ¤€°Ød~Vb›3}þ&º‰ÍtÍy6=qlFBzrn¤€&-I›¶€¬±" –I«C5Kéj_pÿžÕ8¥{pVdFRXçQÖe—?ÃR«g¤8'LúÓºÒ3³J%9u‡%º×à,£ìM»¤†*<Åß_|Œt!)sÜ"kêj MeI¥ûòcN”÷E‹ç<¥KÞ!3wùtä"®|s²µ­\¹ T:†l¨0$@ŒÒQÅPÉÙ~ÊœHß-îÆã?"Sÿó~¡7”‹/h@ ö­ó r²¿këB“àCã«‚@)Fe†”$êJ4å¬ ¶Øß¼õfXß³â+§“µ´ÍŽWÇ$%Íkû‰^õTÝZá dVö†ïÏÒ.+[ùÍQNÞ4wS)ªô—©ÖQ5“ÖØK¬¨úùuç¡•ÁõHv’Cź 8Úc¬MŠ-šw`ì¢x]â¹—¤"[âg&Y…ËDq ŸY˜‘}IJ¼&õ—ÌÒµClZZ²6MbÖ~òÖIÌ ¡¸)rçf]bÑ©{lŠ:& Em¾Ý×ÁRA q™z]]>4qƃ¿_H¸ÏÖ6·On|­­\ ¦Q™xÙÝ–¢…\ôƾ|~ÄGiµê!iïžeÓhï 8ùØyÇáYç5)Z­V£U¦¥ÅFC0çvh_µ¡© ý6a3×{êDXòÖOÓp<ΨG.‹&ÏlÒÈWqß.>•ÞS‡Cy’$N ™§¢æCãrYaZmPj¤&B \¨JQ©¿ÑÓE¿í颡¬Žô€ ­*8ñ´ŽÅêîçûã2ãKÀº2s÷ça]W+bEþ)¢×S¨‘ÄE|øÌD|ØpH€„p®WiFq}Ç¿Z;>–lÃKEÙΆ•í¨u àG›IlÈèG³Ñút{™ñ¨r#‹¯õEd‰¬ûÞmÕ¦XÚŽÈ À¡ŸS£VѤ¬?s>³Z -Ò¸ƒ{%§½li“ÛåhêšÍÇçiuô¾ ÿ FVLìþsžZ§-ë*ȬTŠ·X¨Ðéd”êËu¥´…HÜŸO9@(åH%[z¨J«MÕi!Œëž-ñP¶Šv t©Å{MiÂ}¹¸ ƒøÊL¨®Kº¾­]éÖêR°F2!³Ç’!ÄæÉtœ„“Ž=+)Іä(mZl²2hÅòpWºb¬ß<£¬5Ó·èŽËW˜¨¼çKÝfÙÆ—eŒ!ÔÒ›?½'Y©1)L¤ßÅÓÏ‹yz­&SˆŽOØáœGCäŠÆ¢¶¯Ö%ӉܓpÂØEªkäÅïZ9“$=¾¨ ;{Ý ¶ãH95çxüPïÿùÎd&ß!ó”Ý“{ Qñë„#ć´÷ËuoõQîÛéM…^U¹Ë’ì k9çÏ–¡#¾÷ýÇ×ÿ´¦68_p­Z 3éĵRtª,uÕÖl]Q^‡ý2ùYpåøq¸r÷.8lÛ³”gˆ+õËØÞÞk¨_¶ò:Óté")_ÍSïg¤·e‰¿äÿ~VüÒŸûÏF*ÙÜ8)bÇ_qŒ”l9†tÉù–Ýõ;Ýý|<=ë}ZŽë[²„,§ewþVó Â¥ž¼:‰“$_ 6u±Í² ?àÕä˜%:ò¶i_C!×a<ÿðáÝ­d¸AHmÙKƒ†Î¬d“Ò´ñ ‚jK°aóщTfF/˜AdË·Æ(Om<˜ü4ôqX¾¦"¼ ¶66qªðˆÙL¢¬Ãq‰‚¶Ò#^™Fç^Ó¨Óåä yy9ÕÕç¶ÝŽ•F™éŸ?{ö§ˆ¬Zù‹.…®ÔpËñyò·üܼœ+R« ÒDÐN.=ÅÈæW¥%¦&§ÒVEVq梊ýmØ¥XÔÀ•—aÁçT”b2Ý*+‘Ê–‹€AÅVé?§ ; Z¥§‹IOM+”ÔG•Kýª(öö*qÔq95]ü¿S‹ù¿«ƒY2zÜbAìRqÄ9Aœû;~oK¨}èƒÛÐé{:R^A|ØÑËÿ®üoq~Õƒó«×ù “`èêG‘wÃgdä^®Ä¤ðÓØA"Ýâ’ÞVÐã`\JŒqëö&~b¼ùŸM _Í$ð¤&Ç‚éšX¬ýG¿œˆm±d¹r!Ç E¤.ŽùÅÙÂŽÞy×Z ÷wž"fã¶.õ¢î,-Z “`£S¸+÷ÿ½ßr×í.%1›çüÞæ£Qj—¯Œ?´5Khmù2»þþ©Û|Ý•A>AOZ¡MÕ$§A¤rû2¡\èÝe¸¢ç ¿‘ÄÃgðMÅEŠjmFp¤¢ÕyؽÚ\…Gˆ‚È$›ÿˆ*ì!xÔÓ‰'Ò†)òä+ÿBúÆ)Æ¿¢y>}*s%—>U,æ%ÖPi­‚³p¹¥¾ìÔ1ê÷C¾Z«”xa[Ô–8:N¹æm-IÒ§éÓ€SCü>%i£åWž«×åf ù…mw€»S>°ƒÑdà.dz>ÊÎ‚æŠÆ š]þ»#·Îúvöéïá 0÷.yÛÃ5ÑW¥|µ7$ÆÑâ`£¬yô¡r\ŒÿÅçé~\ÑÚqô3*ÄiUÁž©Q°‡óª m8`,iûÄãÓQd0™?Ÿ.R„ñhõó ´A›‰×H¿ˆ•0ÛC@ù„_ Á§fÇá&äp8°óÔùGðþx[xôËp« b!ZHq‘œ“Q|ÀçäÒ²4rÄK‘dÂ~µ>8C“§ÉåÜ» ˜·*(î/Kòr2¿£†šÃå êÉFÆFù9;.alá–u@vuaAV–PPLM~à”B4»x{…Y¼GáÞÄOnJ³·ÿÑ3Gà÷dZ‘ë% &®¯Y}m§@Ì7ïu€Ôð=v¡Ó¡íݛԗËÞmßtP Ëžðy•t—7Ÿë+ïœØ¾Ü=Rµv·@ú¾Ë×G~£ª‹4î5…PÑ}ÿý`;[—Îo¯;~¢æäæ*´8mÄÿ’‚>½ñ ¹8óö@Ét?¯ìâp¡6Ó`€®qO¥oÐî};ìOozB—Nýó.("LxŸ¼M”¢eëGE_5D±·…[??€»(»T¹6.C™ë¯w‚Ýœ}€í¡wl&†ë$RdAyÈýÞRb†f*\ÒgóIœf”ªù:dpùjHIÐ@x@Æv)qêý‰ã²Gî@˜žê ·?ò%B ]ÈŽ¹jÀØ÷¨Qv-N´ÞNÈ*±‚‡?½tý˜¡àX \âpY^dØJ§eîu{kj*Ž”$ݲ…–#gõÀý%Ýcó:ulä>匩0<9_VŸÙRÿÛoPv|³oƒ‡‡¯¯‡GƒossCCó¯ÆÝ—ã-Ô󀎸”ŒB.¨BñÀ¥¨A š²H%š3݇ôÙ¼…Ì&fÄ\­Öj©¨óaŽ ÚOØ/Ðp×ã.ðÅ©«hiNœp'•ûÇâ:>•ŒyÌÒQÊ"·9¯"ê¿øØâvÕ„2¬l:½ýÜ8ª“}HaÜk÷?z¾@{¶:Së­$×û_qê+ÇAÍÆ÷8FŽ{¿îñ;wû¹»ýŽöx—ô2ŠŒ²6êtc¤ã×Büš˜LâH<¤‰“€¨1ãtýH _vð¾Ra®Ž*T×p)ûTᣯ³* .DΡ^î=X$.:Æß?"bO|p¯¤RL7µÑ`Ç ¹u±|­|…E+‰\:&ß«*S†ÎÌæ®»‚(Ul«þïÐN¯g==œ¼ýR -ðZw˜dgÐ¥rУ/5Ó“œ£ã“æC4µ“ÓM ?þ¡(åß}Ñ8´°ùŠš?ó‰+'o0EWÖ7Ž·úü2„æãª‰m íæo°sW)‰?‰ˆO n"ÒzŸ8— ÎïZœO²rpG¹‚lËbM(ë'X˜Í)·ì{(ÇÒe•–ýu–濞°¿ endstream endobj 413 0 obj <> endobj 951 0 obj <>stream xœEÏILaðoÚ"V\bMŒ:M0r@å`!I BÅ@ˆ¬J…‘v  e(”¥¶hå ¥ ”¥ã”ÒP"H$„ A"D#F½h¸©ñàÍLëh°‰·÷ïÿ~ˆAx™\ž“v~{LŽC"Ç‘B¯ˆ¼‰¦ÄA±ŠEá¨æwñ wa?wî"Èå¼2™VgÔ«j”~F–‚§ed¤ãÙjB¯ªRhp¹‚Rj[êðBm•Š Œgñìº:¼`û¢/ ½¨Þy-Óªu¡ÇåÚjB¯ˆ4*2€|pä‚} .ñ` )D> Nm!ò"´%(Îf6’Ê"ܯ•¡WÂÏ/$ö¶N v¡FŸuh`ÔÅôctÏÀ¼3Øv…ûÃNÖÉ:}#® ºohrñëwˆÎ¹ïòRþpk¥ÔJuß…f´|Z9¿9Ãvy¬Ðnö¶.¬é YX Ñ–O ès³RÿâN—ѵÊYYZi.Õ‚u=¿=Y+`sµÅتj¿m¨Å{<4Í:±‘wÌÂ#ˆ2^i°›M7¤I[H±u‡Îù‚¬¯<]r3Ñ8 Ó>Létõºf_ËX cY¿Å’‰XPÈÅ8|ÐÎÕΔ¤|²u'¾gØ…6gÃSuÀZC‡Áf‘Þ«¿É£­•–z hù”r!V(Ùý¿1¼V¼[Èé ¬nƒ†×¯`=Ÿ"½ÿL¦ NóR9CùÛG(5¥nòµB¡ñÆWüI—4g•ÂNØîpÿÐ8dÐa³_§×jªfÞ~[üÄ6"}°÷è²bº$¹`×í¦i¿ ®>[]‚¨oÔ¦ ìf[˶B²ø¢Ü¥Ÿ—à ¹[´äµþq5Ù¤×ê˜ú‡ƒ}nÖÛCÓ4Diº»=[™O’R³Þ‡v´Ãasx×?p XR#Íbù×;¸‡Wxã'ßïÅEéŒ8!è‹ø ·ÂT‹ endstream endobj 374 0 obj <> endobj 952 0 obj <>stream xœ­W{TSg¶?!sT@%s*ZoÓÚú¨RÖZ{µ *>ªµ*Xµy jx"Ï@|„4qPùà¼!â!§}e¾¥¾ŸúUø}éÿ†…ÿ­¡EC{†Þ6h˜æ‘hIãß¿\¸Úå^h5÷‡ˆÝÏõ/æ +õ%¹ :M¡ŠÄ>ü60{Ul^„“³uÆý¦6pÁ }³s±«§ÙXf4 ‡p„‚ä$™dÔš4 ™´Rer¶Íü)ì…ýpÈÐ¥ç\ÙìRP•¨[8bw—ñèC®ú¥Äÿ‘×Kf\nŸ.¥=½Î/îÁøžÒô»<±±‘jX@Ïj575€“ßã1¾@ \Ì>¸xúÂùòˆå2¢ú?ž|`ØÍá n€KÞ¦ªÙh]¡°6*e '½ô3K~¯ö‘³Ÿ–n_#PgÎDPg°ÛŽ®®áÙ»¡?ŒºQáöâÑÀ¶˜JËp˜änëk+ßZ3ˆ…¿nåïZz.ÀgÜ7/Ež‘=ô’×K®˜Ô ÂÃzVús‚^ý¦,]î-Á‘·nþí›é—‰¸BXBzy2\²V_Ò" ßaïu/˜ûîô1‚¿[§v¸'ÛE×p÷5±{näñwcûˆ>ˆÈpÂ?x ¡ßýïQ*#id-ël©‡à#hƒ8U áÐaÛ>8û•Î(g,ƒxH€å:eäºäÕÀ 䜬táD»{d—ÂÐ׃Õ×FH¿Ä9x‹o:~´é8p—>z…ø¿yÓBbã­©‚ÊF°ráÞŹ]Ÿ‡C|h°Ñ°‡þôç“I» *„Íq¥Ñ¥œôÊŠò•gGµ:;o Wñ¹IfܺLÀUB±E¸ÏÖ@‰ºPù2vËV­.¾1ò€#þñ V$V§4(…æ´FÍŸU%Ñö¿0j޵bŠ _·Šôà(‡CÜcx|ÞEžÇÅ ‰azRÐx-§üš4±dè‚¶‹/ÈÎ(ÂY*tëÀ_kdp«íÊ.šhZb–å~¶—ŸÂâ˜r;o[ÉQæY2ö×|†±¯¾7?tšöð ~ýË« ûƒ@&°3a2N<} ñã&z¾hÃh c¿È%ÂÑ7ŨtÿÈ·™Ë{eN—$Q7ƒ²/f@¢™“;Ù^ó@e$èÔ3dirI«¹—jDôB+…*¡{ •×ÐsŒÚæåYÜ*±ûU¼ÁשׂÙßm¤ôÉÐ'2 Þ7å©,µÊ3 ¶êµZõ ¤4xc³¦’fÜ4ÒÙµ2›dX¡Ï€Tˆ5&™è ç¡HS)Ç1w¨L…•P E;‹Ê¶þHÚ‹ÔžŸFV‚ù±ãT3ì9.Üdk¸uÄÐuå½Û8­ç’c„4W7>ç‹b¢gû¨êKá´b»L¡QoÔ,–áZº #¡=®cuõ{ÀM[»0Éšãl¬µ:+ [Þ7 ­GË›;z&îÂzVzL½J7O·8iöÅ»°Ž{ã®â|÷¡}‡-²íø:?–8gC䚘Öct]Ãé;žOmu±ãú.Zâh¡2sg»ýxüô±xL¶‡w¬ÑXZÕp˜“æeìêZýÙ³Ofü="™µ6;W0“jcX°€±¼ºãô¥õpÚÒêã1æåëõK“#7Ëã7F@$$Ô§·SÍ2C-çßïCE=Öê–=f(~í»{±œWHÔ/¨¨¤Î¥¡ˆ±{7»ª¾•µ¸$ ºÉôÈ8˜ù˜¹õìM¢èµ’š’h{íu·’2õºØý ¥Œóüqc5<%j6¬5)=”qªsh3ÚbмH DŒvm™¾ˆrÀÙÊ4ÃB}ίD=B­JÄ E…ùªš|exJØ[P”ïµ®¢R;TsάêŒLe~RdW±ógÎÔ{ÊñhšG7Zn·;D{®á»·ÅHÜÏð1:Mäsiµ™NkÍîOfu¼I†¿L2ŒüîÞ8äpT3ú–•m­%^–¼¨`=p+_ÙSqÚW]'wž7$´ ¿‘“‘Q¥&,Ý#¤yîað YûTPÜ~‹0‘³Ò£mÉQΈgÉàçÆžH¿‡’ ÷4;´y“h–æJ¯ÎIz/RåЙ¾7­Sw:¡Ýt®é Íµ·å´BWž+²<ôÍ=5Ɇ¡{æÖn±{æòv3ØîEÜ¥àr/¡ß£~ž€,úD±¥l›©p«^³M/$Ž™[`5ÄîÎhO:ÝÐÆmüݱ¸ŸÊȳqž¶1e`@qá«×Kí"ôî¾ýÃ<*,q‘AÈIþräÈó.ؾKV ÍΗQÙдËZß¾¾eå¼×Vþ^FØò^rå_7(·ŽÄÔáò³×ëêOd^ÆÐË­'FHÿŽ œÍ¿ ?Ô5›w9„ÒŠºÆ}À}c3R ›ò¶‚Œ”XàÆ•ò): pwzz®´ç¶+ê„¶=mŵThŠÁlPk ÕPÀåTT—YJêj šã2×ib¢eÑ-Ñf%pÁaao®³Ç;6 ùyÙ!‘“öƒ¼2Þ•¹4gSÄrsî…£?~püj«êøªFÙÊÆeð6¥tl7n*Úì‚f(‚º+‡Ròˆ1ìøÉC{Û˜…%7ЦFÌ]=^x:ð=&h ‰Ýïc1ÿÛm¬[š›Àð¾ä·*Qóïš©_f”vª 'íx‚{²h@ŸY?}ç!ÍÁ ì㱂…:¨°›ËLM`îzkÉ aéoqÂùüÝú«ÁUî;"¹NÆÊÈŸ~3÷ý¢’6óEÚÛ:à"´QœÓÙ7=8ã*¤ÈJª©ö¶nØ›rX‹ ¶3¾3áÍnà®Ö|Õ¸ÊóÕ°u»AÐÌMÌVÀØv\u'ÿ‹Àì kZÂ-æóçf'ôë ¸Ü7–àœç~›'Až|ýq§†ÖœýIš§Lõ´xZ²°P[Ü!Hï¹÷òÍ [Š\™š–jOs5:lͲ>HžnÃvQ›Kob©CÜÜ?ˆ’,¢ôqHªpê®| jijËô6-¨!ƒ£¡oÕs²X¹¤Óü#¢?A' =–}ªöîz–&²ª¶¨œBbúú®Ud*ç<‰§_D9!îã¼þEü?E¾ÅxÒäÕ·?EÞÿ‘8$âmçœÖ×"ñÿ]9<ŒÎ‰W}Rùtý¸ü?Öñ s ŽÜ‡ÁûD§û'‰ûçàü. X­Y ~'QeAf¦v îoÉJ¾jàNžððo’¼;UÂÀØH̶ÿZaÝ;+Æëd;O» )§† Ç€M¸ p`è^ Å¡8¼Ò3„˜¹­Y³eÊ|"}G¶Šx1uwf9ñû€øœ#Co,*nG‘¹äOÇ\z|šy¸ªF¿pôYŠC§þ‘NÍ­V£½%[ø~Üò x ³Ö“¹´ÓäPåÖqš"펲[Ÿ ôCÙqôª@1\çâ݆÷á!«Èí³Oìž„9<6Kªž$4c‹¤ ,™™¥’‘Òªž„ŽôJ¢‚,«,U²_7K×6+²7Û<+.¾½ˆÊ1¼FåûPI~Œ@êþ±Üb–lÍ5ÐŒÔô Nz Fɽû>Þݶ%Ã*‹ÑkR —ÛèÌ·ÔÕUïþ0¼+$˜ YED2"ùÙÿgð ;À}aÃÙ}"\hãüjÞh4¨ÞJy{ÝZA£¡ÆµÜöbmqEo/²Ò;c³SÓÒjRÛª+v”–yZ>]çqéYQ9ÖŠ± —ògIí²_†>Ñ>1†Ÿä›Òë““ÓÓ““ëÓ›šêëéèîÖ)íývQÇ5,¥Ûf^âá‹Â/?{ÿ»éÕѰBÓb‚7…΄ÿ„ÙES:gíãRæQ8ŸÛ|ÛÜS|z9’@.ñqðŽ#û;õ9¸ Âè.=eÁ!—w: º³-ãÊVÀ,X ³a¾ú­¼‰Ë“"éJ-ϲ“†L.—˜ Ö5¸gˆl°÷4«ï ûN_ß«¯Ãü7ñÕ¥ò endstream endobj 76 0 obj << /Title(Behind the SyFi Form Compiler) /Dest/chapter.10 /Count -4 /Parent 6 0 R /Prev 59 0 R /First 77 0 R /Last 80 0 R >> endobj 5 0 obj <> /Doc-Start<> /page.2<> /page.3<> /chapter*.1<> /page.4<> /page.5<> /page.6<> /page.7<> /page.8<> /page.9<> /chapter.1<> /page.10<> /page.11<> /page.12<> /page.13<> /chapter.2<> /section.2.1<> /page.14<> /section.2.2<> /section*.2<> /section*.3<> /section*.4<> /page.15<> /section.2.3<> /section.2.4<> /page.16<> /section.2.5<> /subsection.2.5.1<> /page.17<> /subsection.2.5.2<> /page.18<> /page.19<> /chapter.3<> /section.3.1<> /definition.3.1.1<> /Item.1<> /Item.2<> /Item.3<> /equation.3.1<> /example.3.1.1<> /page.20<> /section.3.2<> /page.21<> /figure.3.1<> /subsection.3.2.1<> /equation.3.2<> /equation.3.6<> /section*.5<> /page.22<> /page.23<> /subsection.3.2.2<> /equation.3.7<> /page.24<> /figure.3.2<> /section*.6<> /page.25<> /subsection.3.2.3<> /page.26<> /equation.3.12<> /section*.7<> /page.27<> /figure.3.3<> /page.28<> /subsection.3.2.4<> /equation.3.18<> /page.29<> /figure.3.4<> /section*.8<> /page.30<> /page.31<> /subsection.3.2.5<> /equation.3.24<> /section*.9<> /page.32<> /figure.3.5<> /page.33<> /section.3.3<> /equation.3.30<> /equation.3.31<> /Hfootnote.1<> /page.34<> /equation.3.32<> /section*.10<> /Item.4<> /Item.5<> /Item.6<> /page.35<> /subsection.3.3.1<> /Hfootnote.2<> /page.36<> /section*.11<> /page.37<> /subsection.3.3.2<> /page.38<> /section*.12<> /page.39<> /subsection.3.3.3<> /section*.13<> /page.40<> /section.3.4<> /section*.14<> /page.41<> /page.42<> /page.43<> /section.3.5<> /equation.3.33<> /equation.3.34<> /section*.15<> /page.44<> /page.45<> /page.46<> /page.47<> /page.48<> /section*.16<> /page.49<> /page.50<> /page.51<> /page.52<> /page.53<> /chapter.4<> /section.4.1<> /subsection.4.1.1<> /page.54<> /section*.17<> /page.55<> /section*.18<> /page.56<> /subsection.4.1.2<> /page.57<> /section*.19<> /section*.20<> /page.58<> /page.59<> /section.4.2<> /subsection.4.2.1<> /section*.21<> /subsection.4.2.2<> /page.60<> /figure.4.1<> /section*.22<> /page.61<> /page.62<> /page.63<> /section.4.3<> /subsection.4.3.1<> /equation.4.1<> /equation.4.2<> /section*.23<> /page.64<> /section*.24<> /page.65<> /page.66<> /page.67<> /subsection.4.3.2<> /page.68<> /section*.25<> /section*.26<> /page.69<> /section.4.4<> /section.4.5<> /page.70<> /page.71<> /page.72<> /section.4.6<> /subsection.4.6.1<> /equation.4.4<> /equation.4.5<> /page.73<> /section*.27<> /section*.28<> /page.74<> /page.75<> /page.76<> /page.77<> /chapter.5<> /section.5.1<> /page.78<> /section.5.2<> /page.79<> /section.5.3<> /page.80<> /section.5.4<> /page.81<> /chapter.6<> /page.82<> /section.6.1<> /equation.6.1<> /page.83<> /page.84<> /page.85<> /page.86<> /section.6.2<> /equation.6.2<> /page.87<> /equation.6.4<> /section.6.3<> /page.88<> /page.89<> /section.6.4<> /equation.6.8<> /page.90<> /page.91<> /equation.6.10<> /section.6.5<> /page.92<> /page.93<> /chapter.7<> /page.94<> /page.95<> /page.96<> /page.97<> /chapter.8<> /page.98<> /equation.8.1<> /equation.8.2<> /section.8.1<> /page.99<> /page.100<> /page.101<> /page.102<> /section.8.2<> /page.103<> /page.104<> /page.105<> /chapter.9<> /page.106<> /section.9.1<> /page.107<> /section.9.2<> /subsection.9.2.1<> /page.108<> /subsection.9.2.2<> /subsection.9.2.3<> /page.109<> /section.9.3<> /page.110<> /section.9.4<> /subsection.9.4.1<> /page.111<> /subsection.9.4.2<> /subsection.9.4.3<> /page.112<> /subsection.9.4.4<> /page.113<> /page.114<> /section.9.5<> /Hfootnote.3<> /page.115<> /equation.9.1<> /equation.9.2<> /equation.9.3<> /page.116<> /page.117<> /section.9.6<> /section.9.7<> /page.118<> /section.9.8<> /section.9.9<> /page.119<> /page.120<> /page.121<> /chapter.10<> /section.10.1<> /page.122<> /page.123<> /section.10.2<> /page.124<> /section.10.3<> /page.125<> /page.126<> /page.127<> /section.10.4<> /page.128<> /page.129<> /page.130<> /page.131<> /chapter*.29<> /cite.analysa<> /cite.www:dolfin<> /cite.DSEL<> /cite.FEniCS<> /cite.FFC<> /cite.FIAT<> /cite.FreeFem<> /cite.getdp<> /cite.www:ginac<> /cite.www:Instant<> /cite.www:pycc<> /cite.sundance<> /cite.www:swig<> /cite.www:swiginac<> /cite.www:trilinos<> /cite.www:ufc<> /page.132<> /cite.www:gcc<> /cite.AFWweak3D<> /cite.BrennerScott<> /cite.BrezziFortin<> /cite.Brezzi:1985:TFM<> /cite.Ciarlet<> /cite.CR<> /cite.GiraultRaviart<> /cite.HPLBook<> /cite.robust<> /cite.Nedelec:1980:MFE<> /cite.Nedelec:1986:NFM<> /cite.RT<>>>endobj 969 0 obj <>stream LaTeX with hyperref package ()() endstream endobj 2 0 obj <>endobj xref 0 970 0000000000 65535 f 0000422650 00000 n 0000592941 00000 n 0000421486 00000 n 0000398172 00000 n 0000558382 00000 n 0000422593 00000 n 0000422792 00000 n 0000423603 00000 n 0000422876 00000 n 0000422958 00000 n 0000423058 00000 n 0000423161 00000 n 0000423479 00000 n 0000423268 00000 n 0000423368 00000 n 0000425110 00000 n 0000423732 00000 n 0000424307 00000 n 0000423823 00000 n 0000423909 00000 n 0000424012 00000 n 0000424118 00000 n 0000424222 00000 n 0000424765 00000 n 0000424442 00000 n 0000424545 00000 n 0000424660 00000 n 0000424909 00000 n 0000425015 00000 n 0000426822 00000 n 0000425463 00000 n 0000425249 00000 n 0000425353 00000 n 0000425813 00000 n 0000425599 00000 n 0000425695 00000 n 0000426186 00000 n 0000425962 00000 n 0000426070 00000 n 0000426341 00000 n 0000426461 00000 n 0000426679 00000 n 0000426591 00000 n 0000427464 00000 n 0000426978 00000 n 0000427104 00000 n 0000427228 00000 n 0000427350 00000 n 0000428162 00000 n 0000427609 00000 n 0000427703 00000 n 0000427824 00000 n 0000427930 00000 n 0000428060 00000 n 0000428312 00000 n 0000428587 00000 n 0000428413 00000 n 0000428501 00000 n 0000430569 00000 n 0000428726 00000 n 0000429140 00000 n 0000428813 00000 n 0000428919 00000 n 0000429037 00000 n 0000429290 00000 n 0000429823 00000 n 0000429395 00000 n 0000429497 00000 n 0000429621 00000 n 0000429733 00000 n 0000429970 00000 n 0000430098 00000 n 0000430249 00000 n 0000430375 00000 n 0000430472 00000 n 0000558241 00000 n 0000430721 00000 n 0000430824 00000 n 0000430947 00000 n 0000431060 00000 n 0000000015 00000 n 0000000589 00000 n 0000431163 00000 n 0000477561 00000 n 0000521803 00000 n 0000476486 00000 n 0000518316 00000 n 0000474581 00000 n 0000494615 00000 n 0000431205 00000 n 0000431237 00000 n 0000398333 00000 n 0000000609 00000 n 0000001167 00000 n 0000472827 00000 n 0000483431 00000 n 0000431291 00000 n 0000431323 00000 n 0000398495 00000 n 0000001187 00000 n 0000002415 00000 n 0000431366 00000 n 0000481298 00000 n 0000547326 00000 n 0000431500 00000 n 0000431633 00000 n 0000431769 00000 n 0000431905 00000 n 0000432040 00000 n 0000432176 00000 n 0000432312 00000 n 0000432452 00000 n 0000432592 00000 n 0000432726 00000 n 0000432862 00000 n 0000432997 00000 n 0000433137 00000 n 0000433170 00000 n 0000398772 00000 n 0000002437 00000 n 0000004328 00000 n 0000433227 00000 n 0000433368 00000 n 0000433508 00000 n 0000433649 00000 n 0000433790 00000 n 0000433925 00000 n 0000434066 00000 n 0000434207 00000 n 0000434348 00000 n 0000434481 00000 n 0000434616 00000 n 0000480454 00000 n 0000538992 00000 n 0000434750 00000 n 0000479978 00000 n 0000536624 00000 n 0000434885 00000 n 0000435026 00000 n 0000435167 00000 n 0000435302 00000 n 0000435442 00000 n 0000435583 00000 n 0000435718 00000 n 0000435859 00000 n 0000436000 00000 n 0000436033 00000 n 0000399106 00000 n 0000004350 00000 n 0000006637 00000 n 0000436127 00000 n 0000436260 00000 n 0000436396 00000 n 0000436531 00000 n 0000436671 00000 n 0000479781 00000 n 0000534743 00000 n 0000479215 00000 n 0000530403 00000 n 0000478501 00000 n 0000528262 00000 n 0000477214 00000 n 0000521193 00000 n 0000436804 00000 n 0000436940 00000 n 0000437074 00000 n 0000437210 00000 n 0000437346 00000 n 0000437480 00000 n 0000437615 00000 n 0000437751 00000 n 0000437887 00000 n 0000438023 00000 n 0000438157 00000 n 0000438291 00000 n 0000438424 00000 n 0000438560 00000 n 0000438695 00000 n 0000438728 00000 n 0000399432 00000 n 0000006659 00000 n 0000008689 00000 n 0000438874 00000 n 0000439007 00000 n 0000439142 00000 n 0000439277 00000 n 0000439418 00000 n 0000439559 00000 n 0000439699 00000 n 0000439834 00000 n 0000439968 00000 n 0000440109 00000 n 0000440250 00000 n 0000440391 00000 n 0000440532 00000 n 0000440666 00000 n 0000440801 00000 n 0000440935 00000 n 0000441070 00000 n 0000441205 00000 n 0000441340 00000 n 0000441476 00000 n 0000441611 00000 n 0000441644 00000 n 0000399766 00000 n 0000008711 00000 n 0000009426 00000 n 0000441712 00000 n 0000441848 00000 n 0000441985 00000 n 0000442018 00000 n 0000399956 00000 n 0000400056 00000 n 0000009447 00000 n 0000012527 00000 n 0000475902 00000 n 0000512037 00000 n 0000442073 00000 n 0000475400 00000 n 0000504466 00000 n 0000442212 00000 n 0000442245 00000 n 0000400238 00000 n 0000012549 00000 n 0000016630 00000 n 0000442315 00000 n 0000442348 00000 n 0000400404 00000 n 0000016652 00000 n 0000021567 00000 n 0000473924 00000 n 0000492783 00000 n 0000442453 00000 n 0000442486 00000 n 0000400570 00000 n 0000021589 00000 n 0000024434 00000 n 0000442632 00000 n 0000442768 00000 n 0000442902 00000 n 0000443035 00000 n 0000443169 00000 n 0000443306 00000 n 0000443441 00000 n 0000443576 00000 n 0000443713 00000 n 0000443746 00000 n 0000400808 00000 n 0000024456 00000 n 0000027007 00000 n 0000443801 00000 n 0000443834 00000 n 0000400974 00000 n 0000027029 00000 n 0000030309 00000 n 0000443878 00000 n 0000443911 00000 n 0000401140 00000 n 0000030331 00000 n 0000034116 00000 n 0000443990 00000 n 0000444128 00000 n 0000444270 00000 n 0000444404 00000 n 0000444437 00000 n 0000401338 00000 n 0000034138 00000 n 0000036820 00000 n 0000444516 00000 n 0000444549 00000 n 0000401504 00000 n 0000036842 00000 n 0000040438 00000 n 0000444628 00000 n 0000444661 00000 n 0000401670 00000 n 0000401770 00000 n 0000040460 00000 n 0000043176 00000 n 0000444727 00000 n 0000444867 00000 n 0000445003 00000 n 0000445036 00000 n 0000401960 00000 n 0000043198 00000 n 0000047070 00000 n 0000445171 00000 n 0000445308 00000 n 0000445341 00000 n 0000402142 00000 n 0000047092 00000 n 0000049832 00000 n 0000445487 00000 n 0000445622 00000 n 0000445655 00000 n 0000402324 00000 n 0000049854 00000 n 0000052896 00000 n 0000445801 00000 n 0000445938 00000 n 0000446075 00000 n 0000446108 00000 n 0000402514 00000 n 0000052918 00000 n 0000057198 00000 n 0000446187 00000 n 0000446322 00000 n 0000446355 00000 n 0000402696 00000 n 0000057220 00000 n 0000059595 00000 n 0000446525 00000 n 0000446558 00000 n 0000402862 00000 n 0000059617 00000 n 0000062685 00000 n 0000446689 00000 n 0000446825 00000 n 0000446961 00000 n 0000446994 00000 n 0000403052 00000 n 0000062707 00000 n 0000065969 00000 n 0000447112 00000 n 0000447247 00000 n 0000447280 00000 n 0000403234 00000 n 0000065991 00000 n 0000068642 00000 n 0000447439 00000 n 0000447577 00000 n 0000447715 00000 n 0000447748 00000 n 0000403424 00000 n 0000068664 00000 n 0000071472 00000 n 0000447853 00000 n 0000447988 00000 n 0000448021 00000 n 0000403606 00000 n 0000071494 00000 n 0000074193 00000 n 0000448152 00000 n 0000448290 00000 n 0000448428 00000 n 0000448461 00000 n 0000403796 00000 n 0000074215 00000 n 0000076886 00000 n 0000448605 00000 n 0000448743 00000 n 0000448881 00000 n 0000448914 00000 n 0000403986 00000 n 0000076908 00000 n 0000079875 00000 n 0000448993 00000 n 0000449128 00000 n 0000449161 00000 n 0000404168 00000 n 0000079897 00000 n 0000082208 00000 n 0000449318 00000 n 0000449456 00000 n 0000449593 00000 n 0000449626 00000 n 0000404358 00000 n 0000082230 00000 n 0000086060 00000 n 0000449731 00000 n 0000472668 00000 n 0000482726 00000 n 0000482204 00000 n 0000554116 00000 n 0000449867 00000 n 0000449900 00000 n 0000404540 00000 n 0000086082 00000 n 0000089280 00000 n 0000450070 00000 n 0000450208 00000 n 0000450346 00000 n 0000450484 00000 n 0000450517 00000 n 0000404738 00000 n 0000089302 00000 n 0000092693 00000 n 0000450661 00000 n 0000450797 00000 n 0000450830 00000 n 0000404920 00000 n 0000092715 00000 n 0000096281 00000 n 0000450974 00000 n 0000451105 00000 n 0000451138 00000 n 0000405102 00000 n 0000096303 00000 n 0000100320 00000 n 0000451295 00000 n 0000451431 00000 n 0000451464 00000 n 0000405284 00000 n 0000100342 00000 n 0000103669 00000 n 0000451621 00000 n 0000451757 00000 n 0000451790 00000 n 0000405466 00000 n 0000103691 00000 n 0000106850 00000 n 0000481858 00000 n 0000553044 00000 n 0000451934 00000 n 0000451967 00000 n 0000405632 00000 n 0000106872 00000 n 0000110649 00000 n 0000452111 00000 n 0000452252 00000 n 0000452285 00000 n 0000405814 00000 n 0000110671 00000 n 0000113605 00000 n 0000452403 00000 n 0000452436 00000 n 0000405980 00000 n 0000113627 00000 n 0000116815 00000 n 0000452515 00000 n 0000452654 00000 n 0000452687 00000 n 0000406162 00000 n 0000116837 00000 n 0000121253 00000 n 0000481063 00000 n 0000546139 00000 n 0000452766 00000 n 0000452904 00000 n 0000453040 00000 n 0000453073 00000 n 0000406352 00000 n 0000121275 00000 n 0000124684 00000 n 0000453245 00000 n 0000453278 00000 n 0000406518 00000 n 0000124706 00000 n 0000128214 00000 n 0000453383 00000 n 0000453416 00000 n 0000406684 00000 n 0000128236 00000 n 0000132274 00000 n 0000453534 00000 n 0000453567 00000 n 0000406850 00000 n 0000132296 00000 n 0000134908 00000 n 0000453724 00000 n 0000453757 00000 n 0000407016 00000 n 0000134930 00000 n 0000138651 00000 n 0000453836 00000 n 0000453974 00000 n 0000454007 00000 n 0000407198 00000 n 0000138673 00000 n 0000141478 00000 n 0000454125 00000 n 0000454158 00000 n 0000407364 00000 n 0000141500 00000 n 0000146534 00000 n 0000454237 00000 n 0000454270 00000 n 0000407530 00000 n 0000146556 00000 n 0000148621 00000 n 0000454427 00000 n 0000454460 00000 n 0000407696 00000 n 0000407796 00000 n 0000148643 00000 n 0000150903 00000 n 0000454539 00000 n 0000454675 00000 n 0000454811 00000 n 0000454844 00000 n 0000407986 00000 n 0000150925 00000 n 0000154270 00000 n 0000454966 00000 n 0000454999 00000 n 0000408152 00000 n 0000154292 00000 n 0000157639 00000 n 0000455143 00000 n 0000455176 00000 n 0000408318 00000 n 0000157661 00000 n 0000161064 00000 n 0000455255 00000 n 0000455387 00000 n 0000455420 00000 n 0000408500 00000 n 0000161086 00000 n 0000164218 00000 n 0000455564 00000 n 0000455597 00000 n 0000408666 00000 n 0000164240 00000 n 0000167054 00000 n 0000455728 00000 n 0000455761 00000 n 0000408832 00000 n 0000167076 00000 n 0000170495 00000 n 0000455840 00000 n 0000455974 00000 n 0000456108 00000 n 0000456242 00000 n 0000456275 00000 n 0000409030 00000 n 0000170517 00000 n 0000173986 00000 n 0000473604 00000 n 0000456408 00000 n 0000456441 00000 n 0000409196 00000 n 0000174008 00000 n 0000177682 00000 n 0000456561 00000 n 0000456594 00000 n 0000409362 00000 n 0000177704 00000 n 0000180197 00000 n 0000456699 00000 n 0000456732 00000 n 0000409528 00000 n 0000180219 00000 n 0000184573 00000 n 0000479621 00000 n 0000534033 00000 n 0000456798 00000 n 0000456929 00000 n 0000457070 00000 n 0000457207 00000 n 0000457344 00000 n 0000457377 00000 n 0000409734 00000 n 0000184595 00000 n 0000188798 00000 n 0000457586 00000 n 0000457723 00000 n 0000457756 00000 n 0000409916 00000 n 0000188820 00000 n 0000191527 00000 n 0000457913 00000 n 0000457946 00000 n 0000410082 00000 n 0000191549 00000 n 0000194950 00000 n 0000458025 00000 n 0000458162 00000 n 0000458299 00000 n 0000458332 00000 n 0000410272 00000 n 0000194972 00000 n 0000198859 00000 n 0000458515 00000 n 0000458661 00000 n 0000458806 00000 n 0000458839 00000 n 0000410462 00000 n 0000198881 00000 n 0000201597 00000 n 0000459022 00000 n 0000459055 00000 n 0000410628 00000 n 0000201619 00000 n 0000206340 00000 n 0000459212 00000 n 0000459351 00000 n 0000459492 00000 n 0000459628 00000 n 0000459661 00000 n 0000410826 00000 n 0000206362 00000 n 0000210861 00000 n 0000459844 00000 n 0000459877 00000 n 0000410992 00000 n 0000210883 00000 n 0000214571 00000 n 0000460034 00000 n 0000460067 00000 n 0000411158 00000 n 0000214593 00000 n 0000218563 00000 n 0000460224 00000 n 0000460370 00000 n 0000460511 00000 n 0000460544 00000 n 0000411348 00000 n 0000218585 00000 n 0000221554 00000 n 0000460740 00000 n 0000460877 00000 n 0000460910 00000 n 0000411530 00000 n 0000221576 00000 n 0000224420 00000 n 0000460989 00000 n 0000461126 00000 n 0000461262 00000 n 0000461295 00000 n 0000411720 00000 n 0000224442 00000 n 0000226260 00000 n 0000461361 00000 n 0000461394 00000 n 0000411886 00000 n 0000411986 00000 n 0000226282 00000 n 0000229459 00000 n 0000461460 00000 n 0000461601 00000 n 0000461745 00000 n 0000461778 00000 n 0000412176 00000 n 0000229481 00000 n 0000232922 00000 n 0000461913 00000 n 0000462054 00000 n 0000462195 00000 n 0000462228 00000 n 0000412366 00000 n 0000232944 00000 n 0000235823 00000 n 0000462398 00000 n 0000462539 00000 n 0000462680 00000 n 0000462821 00000 n 0000462854 00000 n 0000412564 00000 n 0000235845 00000 n 0000239283 00000 n 0000462985 00000 n 0000463123 00000 n 0000463258 00000 n 0000463398 00000 n 0000463431 00000 n 0000412762 00000 n 0000239305 00000 n 0000241982 00000 n 0000463588 00000 n 0000463722 00000 n 0000463755 00000 n 0000412944 00000 n 0000242004 00000 n 0000245508 00000 n 0000463864 00000 n 0000464006 00000 n 0000464142 00000 n 0000464279 00000 n 0000464416 00000 n 0000464449 00000 n 0000413150 00000 n 0000245530 00000 n 0000248593 00000 n 0000464606 00000 n 0000464639 00000 n 0000413316 00000 n 0000248615 00000 n 0000251995 00000 n 0000464718 00000 n 0000464751 00000 n 0000413482 00000 n 0000252017 00000 n 0000255256 00000 n 0000464856 00000 n 0000464889 00000 n 0000413648 00000 n 0000255278 00000 n 0000259364 00000 n 0000464994 00000 n 0000465027 00000 n 0000413814 00000 n 0000259386 00000 n 0000262802 00000 n 0000476937 00000 n 0000520410 00000 n 0000465171 00000 n 0000465204 00000 n 0000413980 00000 n 0000262824 00000 n 0000266496 00000 n 0000465376 00000 n 0000465409 00000 n 0000414146 00000 n 0000266518 00000 n 0000270182 00000 n 0000465581 00000 n 0000465614 00000 n 0000414312 00000 n 0000270204 00000 n 0000274095 00000 n 0000465747 00000 n 0000465780 00000 n 0000414478 00000 n 0000274117 00000 n 0000278558 00000 n 0000465939 00000 n 0000466076 00000 n 0000466109 00000 n 0000414660 00000 n 0000278580 00000 n 0000281292 00000 n 0000466216 00000 n 0000466249 00000 n 0000414826 00000 n 0000281314 00000 n 0000283447 00000 n 0000466315 00000 n 0000466348 00000 n 0000414992 00000 n 0000283469 00000 n 0000286943 00000 n 0000466416 00000 n 0000466449 00000 n 0000415158 00000 n 0000286965 00000 n 0000289590 00000 n 0000466528 00000 n 0000466561 00000 n 0000415324 00000 n 0000289612 00000 n 0000290879 00000 n 0000466627 00000 n 0000466660 00000 n 0000415490 00000 n 0000290901 00000 n 0000294516 00000 n 0000466726 00000 n 0000466863 00000 n 0000467003 00000 n 0000467138 00000 n 0000467171 00000 n 0000415688 00000 n 0000294538 00000 n 0000299454 00000 n 0000467228 00000 n 0000467365 00000 n 0000467500 00000 n 0000467637 00000 n 0000467779 00000 n 0000467812 00000 n 0000415894 00000 n 0000299476 00000 n 0000302497 00000 n 0000467969 00000 n 0000468002 00000 n 0000416060 00000 n 0000302519 00000 n 0000305983 00000 n 0000468094 00000 n 0000468127 00000 n 0000416226 00000 n 0000306005 00000 n 0000308926 00000 n 0000468195 00000 n 0000468228 00000 n 0000416392 00000 n 0000308948 00000 n 0000311951 00000 n 0000468296 00000 n 0000468329 00000 n 0000416558 00000 n 0000311973 00000 n 0000315536 00000 n 0000468397 00000 n 0000468430 00000 n 0000416724 00000 n 0000315558 00000 n 0000317647 00000 n 0000468548 00000 n 0000468581 00000 n 0000416890 00000 n 0000317669 00000 n 0000320379 00000 n 0000468660 00000 n 0000468797 00000 n 0000468935 00000 n 0000469075 00000 n 0000469108 00000 n 0000417088 00000 n 0000320401 00000 n 0000323290 00000 n 0000469165 00000 n 0000469198 00000 n 0000417254 00000 n 0000323312 00000 n 0000325839 00000 n 0000469277 00000 n 0000469310 00000 n 0000417420 00000 n 0000325861 00000 n 0000328772 00000 n 0000469389 00000 n 0000469422 00000 n 0000417586 00000 n 0000328794 00000 n 0000332421 00000 n 0000469501 00000 n 0000469534 00000 n 0000417752 00000 n 0000332443 00000 n 0000335848 00000 n 0000469626 00000 n 0000469659 00000 n 0000417918 00000 n 0000335870 00000 n 0000338812 00000 n 0000469751 00000 n 0000469784 00000 n 0000418084 00000 n 0000338834 00000 n 0000341617 00000 n 0000469876 00000 n 0000469909 00000 n 0000418250 00000 n 0000341639 00000 n 0000343999 00000 n 0000470040 00000 n 0000470073 00000 n 0000418416 00000 n 0000344021 00000 n 0000347985 00000 n 0000470141 00000 n 0000475182 00000 n 0000502535 00000 n 0000470277 00000 n 0000470310 00000 n 0000418598 00000 n 0000348007 00000 n 0000351731 00000 n 0000470454 00000 n 0000470487 00000 n 0000418764 00000 n 0000351753 00000 n 0000354888 00000 n 0000470657 00000 n 0000470796 00000 n 0000470933 00000 n 0000471069 00000 n 0000471102 00000 n 0000418962 00000 n 0000354910 00000 n 0000357899 00000 n 0000471181 00000 n 0000471214 00000 n 0000419128 00000 n 0000357921 00000 n 0000361879 00000 n 0000471293 00000 n 0000471326 00000 n 0000419294 00000 n 0000361901 00000 n 0000364781 00000 n 0000471405 00000 n 0000471438 00000 n 0000419460 00000 n 0000419560 00000 n 0000364803 00000 n 0000367239 00000 n 0000471506 00000 n 0000471539 00000 n 0000419726 00000 n 0000367261 00000 n 0000369642 00000 n 0000471607 00000 n 0000471640 00000 n 0000419892 00000 n 0000369664 00000 n 0000372140 00000 n 0000471706 00000 n 0000471739 00000 n 0000420058 00000 n 0000372162 00000 n 0000375469 00000 n 0000471818 00000 n 0000471851 00000 n 0000420224 00000 n 0000375491 00000 n 0000380099 00000 n 0000471930 00000 n 0000471963 00000 n 0000420390 00000 n 0000380121 00000 n 0000383460 00000 n 0000472029 00000 n 0000472062 00000 n 0000420556 00000 n 0000383482 00000 n 0000387533 00000 n 0000472141 00000 n 0000472174 00000 n 0000420722 00000 n 0000387555 00000 n 0000389930 00000 n 0000472240 00000 n 0000472273 00000 n 0000420888 00000 n 0000389952 00000 n 0000392286 00000 n 0000472339 00000 n 0000472372 00000 n 0000421054 00000 n 0000421154 00000 n 0000392308 00000 n 0000393944 00000 n 0000472464 00000 n 0000472497 00000 n 0000421320 00000 n 0000393966 00000 n 0000398150 00000 n 0000472541 00000 n 0000472574 00000 n 0000482941 00000 n 0000484043 00000 n 0000493167 00000 n 0000495238 00000 n 0000502788 00000 n 0000505056 00000 n 0000512418 00000 n 0000518603 00000 n 0000520630 00000 n 0000521402 00000 n 0000522240 00000 n 0000528622 00000 n 0000530691 00000 n 0000534268 00000 n 0000534971 00000 n 0000536939 00000 n 0000539367 00000 n 0000546375 00000 n 0000547721 00000 n 0000553287 00000 n 0000554455 00000 n 0000473404 00000 n 0000473672 00000 n 0000474305 00000 n 0000475089 00000 n 0000476378 00000 n 0000476852 00000 n 0000477463 00000 n 0000478068 00000 n 0000478180 00000 n 0000478929 00000 n 0000479518 00000 n 0000480344 00000 n 0000480922 00000 n 0000481773 00000 n 0000482116 00000 n 0000482641 00000 n 0000591502 00000 n trailer << /Size 970 /Root 1 0 R /Info 2 0 R /ID [] >> startxref 593152 %%EOF syfi-1.0.0.dfsg.orig/doc/manual/refs.bib0000644000175000017500000002214311672223006017663 0ustar johannrjohannr @misc{www:Instant, title = { Instant }, year = {2006}, note = {{http://pyinstant.sf.net}} } @misc{analysa, title = {Analysa}, year = {2006}, note = {{http://people.cs.uchicago.edu/\~ridg/al/aa.html }} } @misc{DSEL, title = {DSEL}, year = {2006}, note = {http://www.hpc2n.umu.se/para06/papers/paper\_147.pdf} } @misc{FEniCS, title = {FEniCS}, year = {2006}, note = {http://www.fenics.org} } @misc{FFC, title = {FFC}, year = {2006}, note = {http://www.fenics.org/ffc/} } @misc{FIAT, title = { FIAT }, year = { 2006}, note = {http://www.fenics.org/fiat/} } @misc{FreeFem, title = {FreeFEM}, year = {2006}, note = {http://www.freefem.org/ff++/index.htm} } @misc{getdp, title = {GetDP}, year = {2006}, note = {http://www.geuz.org/getdp/} } @article{Brezzi:1985:TFM, author = "Franco Brezzi and Jim {Douglas, Jr.} and L. D. Marini", title = "Two families of mixed finite elements for second order elliptic problems", journal = j-NUM-MATH, volume = "47", number = "2", pages = "217--235", month = sep, year = "1985", CODEN = "NUMMA7", ISSN = "0029-599X (print), 0945-3245 (electronic)", MRclass = "65N30", MRnumber = "87g:65133", MRreviewer = "Bruce A. Finlayson", bibdate = "Mon May 26 11:49:34 MDT 1997", acknowledgement = ack-nhfb, classification = "B0290B (Error analysis in numerical methods); B0290P (Differential equations); C4110 (Error analysis in numerical methods); C4170 (Differential equations)", corpsource = "Dipartimento di Meccanica Strutturale, Pavia Univ. and Istituto di Anal. Numerica, CNR, Pavia, Italy", keywords = "convergence; convergence of numerical methods; error analysis; error estimates; finite element analysis; hybrid finite elements; mixed finite elements; partial differential equations; Raviart-Thomas-Nedelec spaces; rectangles; second order elliptic problems; superconvergence phenomena; triangles", treatment = "T Theoretical or Mathematical", } @article{Nedelec:1980:MFE, author = "J.-C. N{\'e}d{\'e}lec", title = "Mixed finite elements in ${R}^3$", journal = j-NUM-MATH, volume = "35", number = "3", pages = "315--341", month = oct, year = "1980", CODEN = "NUMMA7", ISSN = "0029-599X (print), 0945-3245 (electronic)", MRclass = "65N30", MRnumber = "81k:65125", MRreviewer = "P. G. Ciarlet", bibdate = "Mon May 26 11:49:34 MDT 1997", acknowledgement = ack-nhfb, classification = "C4130 (Interpolation and function approximation)", corpsource = "Centre de Math. Appl., {\'E}cole Polytech., Palaiseau, France", keywords = "approximation theory; elasticity equation; finite element analysis; Maxwell equation; non conforming finite elements", treatment = "A Application; T Theoretical or Mathematical", } @Article{Nedelec:1986:NFM, author = "J.-C. N{\'e}d{\'e}lec", title = "A new family of mixed finite elements in ${R}^3$", journal = j-NUM-MATH, volume = "50", number = "1", pages = "57--81", month = nov, year = "1986", CODEN = "NUMMA7", ISSN = "0029-599X (print), 0945-3245 (electronic)", MRclass = "65N30", MRnumber = "88e:65145", MRreviewer = "Reinhard Scholz", bibdate = "Mon May 26 11:49:34 MDT 1997", acknowledgement = ack-nhfb, classification = "B0290P (Differential equations); C4170 (Differential equations)", corpsource = "Math. Appl., {\'E}cole Polytechn., Plaiseau, France", keywords = "differential equations; finite element analysis; mixed finite elements; Stoke system", treatment = "T Theoretical or Mathematical", } @article{AFWweak3D, author = { D. N. Arnold and R. S. Falk and R. Winther }, title = { Mixed finite element methods for linear elasticity with weakly imposed symmetry }, journal = { Submitted to Math. Comp. }, year = { 2006} } @article{robust, author = { K.A. Mardal and X.-C. Tai and R. Winther }, title = {A robust finite element method for Darcy--Stokes flow}, journal = {SIAM J. Numer. Anal.}, pages = {1605--1631}, year = { 2002 }, volume = 40, } @article{CR, author = { M. Crouzeix and P.A. Raviart }, title = {Conforming and non--conforming finite element methods for solving the stationary Stokes equations}, journal = {RAIRO Anal. Num\'{e}r.}, year = 1973, pages = { 33-76}, volume = 7 } @article{RT, author = {P. A. Raviart and J. M. Thomas}, title = {A Mixed Finite Element Method for 2-order Elliptic Problems}, journal = {Matematical Aspects of Finite Element Methods}, year = {1977}, } @misc{sundance, title = {Sundance}, year = {2006}, note = {http://software.sandia.gov/sundance/} } @misc{SWIG, title = {SWIG}, year = {2006}, note = {http://www.swig.org} } @misc{Swiginac, title = {Swiginac}, year = {2006}, note = {http://swiginac.berlios.de/} } @misc{Trilinos, title = {Trilinos}, year = {2006}, note = {http://software.sandia.gov/trilinos/} } @misc{www:pycc, title = {{PyCC}}, year = {2006}, note = {{http://home.simula.no/~skavhaug/heart\_simulations.html}}, } @misc{www:gcc, title = {{GCC}}, year = {2007}, note = {{http://gcc.gnu.org/}}, } @misc{www:swig, title = {{SWIG}}, year = {2006}, note = {{http://www.swig.org/}}, } @misc{www:dolfin, title = {DOLFIN}, year = {2006}, note = {{http://www.fenics.org/dolfin}}, } @misc{www:ufc, title = {{UFC}}, year = {2006}, note = {{http://www.fenics.org/ufc}}, } @misc{www:fenics, title = {{FEniCS}}, year = {2006}, note = {{http://www.fenics.org}}, } @misc{www:ml, title = {{ML}}, year = {2006}, note = {{http://software.sandia.gov/trilinos/packages/ml/index.html}}, } @misc{www:trilinos, title = {{Trilinos}}, year = {2006}, note = {{http://software.sandia.gov/trilinos}}, } @misc{www:petsc, title = {Portable, Extensible Toolkit for Scientific Computation PETSc}, year = {2005}, note = {{http://www-unix.mcs.anl.gov/petsc/petsc-2/}}, } @misc{www:hypre, title = {Hypre}, year = {2005}, note = {{http://acts.nersc.gov/hypre/}}, } @misc{www:VTK, title = {The {V}isualization {T}oolkit ({VTK})}, year = {2005}, note = {{http://www.vtk.org/}}, } @misc{www:ParaView, title = {Para{V}iew}, year = {2005}, note = {{http://www.paraview.org/}}, } @misc{www:MayaVi, title = {Maya{V}i}, year = {2005}, note = {{http://mayavi.sourceforge.net/}}, } @misc{www:OpenDX, title = {Open{DX}}, year = {2005}, note = {{http://www.opendx.org/}}, } @misc{www:Octave, title = {Octave}, year = {2005}, note = {{http://www.octave.org/}}, } @misc{www:MATLAB, title = {{MATLAB}}, year = {2005}, note = {{http://www.mathworks.com/}}, } @misc{www:Tecplot, title = {Tecplot}, year = {2005}, note = {{http://www.tecplot.com/}}, } @misc{www:GiD, title = {Gi{D}}, year = {2005}, note = {{http://gid.cimne.upc.es/}}, } @misc{www:ginac, title = {{GiNaC}}, year = 2006, note = {{http://www.ginac.de}} } @misc{www:swiginac, title = {{Swiginac}}, year = 2006, note = {{http://swiginac.berlios.de/}} } @misc{www:syfi, title = {{SyFi}}, year = 2006, note = {{http://syfi.sf.net}} } @Book{solin-sergeth-dolezel, author = { P. Solin and K Segeth and I Dolezel }, title = { Higher--Order Finite Element Methods}, series = { Studies in Advanced Mathematics}, publisher = { Chapman and Hall/CRC }, year = { 2004 }, } @Book{HPLBook, author = {H. P. Langtangen}, title = {Computational Partial Differential Equations - Numerical Methods and {Diffpack} Programming}, edition = {2nd}, series = {Textbooks in Computational Science and Engineering}, publisher = {Springer}, year = {2003}, } @Book{Ciarlet, author = {P. G. Ciarlet}, title = {The Finite Element Method for Elliptic Problems}, publisher = {SIAM}, year = {2002}, } @Book{GiraultRaviart, author = { V. Girault and P.-A. Raviart}, title = { Finite element methods for Navier--Stokes equations }, publisher = { Springer Verlag }, year = { 1986 } } @Book{BrezziFortin, author = { F. Brezzi and M. Fortin }, title = { Mixed and hybrid finite element methods }, publisher = { Springer Verlag }, year = { 1991 } } @Book{BrennerScott, author = { S. C. Brenner and L. R. Scott }, title = { The mathematical theory of finite element methods }, publisher = { Springer Verlag }, year = { 1994 } } } syfi-1.0.0.dfsg.orig/doc/manual/code/0000755000175000017500000000000011674103625017164 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/doc/manual/code/linear_elasticity.py0000644000175000017500000000547411672223006023246 0ustar johannrjohannr from sfc import * def define_linear_elasticity(itg): I = Id(itg.nsd) GinvT = itg.GinvT() # get coefficients lambd, mu = itg.coefficients() # for all trial functions u for j, u in enumerate(itg.v_basis(1)): Du = grad(u, GinvT) DuT = Du.transpose() E = (Du + DuT) / 2 sigma = lambd * Du * I + 2*mu*E # for all test functions v for i, v in enumerate(itg.v_basis(0)): Dv = grad(v, GinvT) integrand = inner(sigma, Dv) itg.set_A((i, j), integrand) def define_linear_elasticity_traction(itg): I = Id(itg.nsd) GinvT = itg.GinvT() # get coefficients lambd, mu, t = itg.coefficients() # for all test functions v for i, v in enumerate(itg.v_basis(0)): integrand = inner(t, v) itg.set_A(i, integrand) def define_linear_elasticity_pressure(itg): I = Id(itg.nsd) GinvT = itg.GinvT() n = itg.n() # get coefficients lambd, mu, p = itg.coefficients() # for all test functions v for i, v in enumerate(itg.v_basis(0)): integrand = inner(p*n, v) itg.set_A(i, integrand) polygon = "tetrahedron" vfe1 = VectorElement("CG", polygon, 1) v = TestFunction(vfe1) u = TrialFunction(vfe1) lambd = Constant(polygon, "lambd") mu = Constant(polygon, "mu") p = Constant(polygon, "p") t = Function(vfe1, "t") # the momentum form object a = Form(name = "elasticity", basisfunctions = [v, u], coefficients = [lambd, mu]) itg = a.add_cell_integral() define_linear_elasticity(itg) # the traction form object b = Form(name = "elasticity_traction", basisfunctions = [v], coefficients = [lambd, mu, t]) itg = b.add_exterior_facet_integral() define_linear_elasticity_traction(itg) # the pressure form object c = Form(name = "elasticity_pressure", basisfunctions = [v], coefficients = [lambd, mu, p]) itg = c.add_exterior_facet_integral() define_linear_elasticity_pressure(itg) # generate code and compile extension module a_compiled = compile_form(a) b_compiled = compile_form(b) c_compiled = compile_form(c) # assemble, solve and plot with PyDOLFIN from dolfin import * n = 10 mesh = UnitCube(n, n, n) lambd = Function(mesh, 0.3) mu = Function(mesh, 0.3) class Pressure(cpp_Function): def __init__(self, mesh): cpp_Function.__init__(self, mesh) def eval(self, v, x): v[0] = 10000.0*x[0] def rank(self): return 0 p = Pressure(mesh) #t = Function(mesh, (1.0, 1.0, 1.0)) A, dms = assemble(a_compiled, mesh, coefficients=[lambd, mu], return_dofmaps = True) b = assemble(c_compiled, mesh, coefficients=[lambd, mu, p]) #b = assemble(b_compiled, mesh, coefficients=[lambd, mu, t]) uvec = Vector() u = cpp_Function(mesh, uvec, dms.sub(1), a_compiled, 1) solve(A, u.vector(), b) plot(u) syfi-1.0.0.dfsg.orig/doc/manual/code/quickstart.py0000644000175000017500000000215411672223006021724 0ustar johannrjohannrfrom sfc import * # Define elements polygon = "tetrahedron" P2 = FiniteElement("CG", polygon, 2) T0 = TensorElement("DG", polygon, 0) # Define form arguments u = TrialFunction(P2) v = TestFunction(P2) M = Function(T0) # Define integrand for a weighted stiffness matrix def stiffness(v, u, M, itg): GinvT = itg.GinvT() Du = grad(u, GinvT) Dv = grad(v, GinvT) return inner(M*Du, Dv) # Collect the pieces as a form a = CallbackForm(basisfunctions = [v, u], coefficients = [M], cell_integrands = [stiffness]) # Generate UFC code, compile and import a_form = compile_form(a) # Assemble the global system using PyDOLFIN from dolfin import * n = 10 mesh = UnitCube(n, n, n) class Conductivity(cpp_Function): def __init__(self, mesh): cpp_Function.__init__(self, mesh) def rank(self): return 2 def dim(self, i): return 3 def eval(self, v, x): v[0], v[1], v[2] = 1.0, 0.0, 0.0 v[3], v[4], v[5] = 0.0, 2.0, 0.0 v[6], v[7], v[8] = 0.0, 0.0, 3.0 M = Conductivity(mesh) A = assemble(a_form, mesh, coefficients = [M]) syfi-1.0.0.dfsg.orig/doc/manual/code/defining_form.py0000644000175000017500000000064111672223006022337 0ustar johannrjohannrfrom sfc import * ... # define a form with two basisfunctions and one coefficient a = FormRep(name = "my_form", basisfunctions = [v, u], coefficients = [c], options = {}) # add one cell integral to the form citg = a.add_cell_integral() # add two boundary integrals to the form bitg0 = a.add_exterior_facet_integral() bitg1 = a.add_exterior_facet_integral() syfi-1.0.0.dfsg.orig/doc/manual/syfi-user-manual.tex0000644000175000017500000000377211672223006022200 0ustar johannrjohannr\documentclass{fenicsmanual} %\documentclass{article} \usepackage{moreverb,relsize,ttname} \usepackage{epsfig} \usepackage{epic} \usepackage{eepic} \usepackage{bm} \usepackage{amssymb} \usepackage{amsmath} \RequirePackage{url} \newcommand{\emp}[1]{{\smaller\texttt{#1}}} %%\newcommand{\eqref}[1]{(\ref{#1})} \newtheorem{example}{Example}[section] \newtheorem{definition}{Definition}[section] %\usepackage{hyperref} \renewcommand{\P}{{\mathbb P}} \renewcommand{\S}{{\mathbb S}} \renewcommand{\H}{{\mathbb H}} \renewcommand{\R}{{\mathbb R}} \newcommand{\xx}{\mathbf{x}} \newcommand{\ff}{\mathbf{f}} \newcommand{\kk}{\mathbf{k}} \renewcommand{\gg}{\mathbf{g}} \newcommand{\vv}{\mathbf{v}} \newcommand{\VV}{\mathbf{V}} \newcommand{\HH}{\mathbf{H}} \newcommand{\GG}{\mathbf{G}} \newcommand{\uu}{\mathbf{u}} \newcommand{\nn}{\mathbf{n}} \renewcommand{\tt}{\mathbf{t}} \newcommand{\hh}{\mathbf{h}} \newcommand{\FF}{\mathbf{F}} \newcommand{\NN}{\mathbf{N}} \newcommand{\LL}{\mathbf{L}} \newcommand{\pp}{\mathbf{p}} \newcommand{\qq}{\mathbf{q}} \newcommand{\rr}{\mathbf{r}} \newcommand{\nnull}{\mathbf{0}} \newcommand{\grad}{\operatorname{\bf grad}} \newcommand{\curl}{\operatorname{\bf curl}} \renewcommand{\div}{\operatorname{div}} \newcommand{\rot}{\operatorname{rot}} \newcommand{\Hdiv}{\HH(\div)} \newcommand{\Hcurl}{\HH(\curl)} %\title{SyFi Tutorial} %\author{Kent-Andre Mardal} \begin{document} \fenicstitle{SyFi User Manual} \fenicsauthor{Martin Aln\ae s and Kent-Andre Mardal} \fenicspackage{\textbf{\textsf{SyFi}}}{syfi} %\fenicsimage{eps/dolfin.eps} \maketitle{} \include{chapters/introduction} \include{chapters/software} \include{chapters/fem} \include{chapters/femexamples} \include{chapters/mixedfem} \include{chapters/computing_element_matrices} \include{chapters/python} \include{chapters/code_generation} \include{chapters/sfcuser} \include{chapters/sfctech} \bibliographystyle{plain} \bibliography{refs} \end{document} %% BEGIN CODE FROM simple.h %\begin{code} %\end{code} %% END CODE FROM simple.h syfi-1.0.0.dfsg.orig/doc/manual/figs/0000755000175000017500000000000011674103625017202 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/doc/manual/figs/box.xfig.eepicemu0000644000175000017500000000146111672223006022440 0ustar johannrjohannr\setlength{\unitlength}{0.00047489in} % \begingroup\makeatletter\ifx\SetFigFont\undefined% \gdef\SetFigFont#1#2#3#4#5{% \reset@font\fontsize{#1}{#2pt}% \fontfamily{#3}\fontseries{#4}\fontshape{#5}% \selectfont}% \fi\endgroup% {\renewcommand{\dashlinestretch}{30} \begin{picture}(11282,6177)(0,-10) \thicklines \path(1995,861)(6090,861)(6090,4551) (1995,4551)(1995,861) \path(4200,1716)(8295,1716)(8295,5406) (4200,5406)(4200,1716) \path(1995,4551)(4200,5406) \path(6089,4554)(8294,5409) \path(6089,864)(8294,1719) \path(1994,864)(4199,1719) \put(15,141){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\familydefault}{\mddefault}{\updefault}($x_0$, $y_0$, $z_0$)}}}} \put(8160,5811){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\rmdefault}{\mddefault}{\updefault}($x_1$, $y_1$, $z_1$) }}}} \end{picture} } syfi-1.0.0.dfsg.orig/doc/manual/figs/tetrahedron.xfig.bak0000644000175000017500000000223611672223006023131 0ustar johannrjohannr#FIG 3.2 Produced by xfig version 3.2.5-alpha5 Landscape Center Metric A4 100.00 Single -2 1200 2 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 2385 7200 8370 7785 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 8370 7785 5040 2925 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 2385 7200 5040 2925 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 4770 5985 8370 7785 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 2385 7200 4770 5985 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 4770 5985 5040 2925 4 0 0 12 -1 0 28 0.0000 2 420 2910 1035 7965 (x_0, y_0, z_0)\001 4 0 0 12 -1 0 28 0.0000 4 420 3030 7605 8505 (x_1, y_1, z_1) \001 4 0 0 12 -1 0 28 0.0000 2 420 2910 2970 2475 (x_2, y_2, z_2)\001 4 0 0 50 -1 0 28 0.0000 4 210 180 4410 3330 s\001 4 0 0 12 -1 0 28 0.0000 2 420 2910 1350 5850 (x_3, y_3, z_3)\001 4 0 0 50 -1 0 28 0.0000 4 210 150 6885 8010 r\001 4 0 0 50 -1 0 28 0.0000 4 270 135 3915 6255 t\001 4 0 0 50 -1 0 28 0.0000 4 210 240 4725 4185 u\001 4 0 0 50 -1 0 28 0.0000 4 210 345 7245 7155 w\001 4 0 0 50 -1 0 28 0.0000 4 210 240 5580 3375 v\001 syfi-1.0.0.dfsg.orig/doc/manual/figs/discont.xfig0000644000175000017500000000135111672223006021516 0ustar johannrjohannr#FIG 3.2 Produced by xfig version 3.2.5-alpha5 Landscape Center Metric A4 100.00 Single -2 1200 2 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 8 4905 1800 3105 3150 3105 6120 6390 7920 9045 6975 8730 4860 6885 2880 4905 1800 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 3105 3150 5760 4950 3105 6120 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 6390 7965 5760 4950 8730 4860 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 6885 2880 5760 4950 4905 1800 4 0 0 50 -1 0 20 0.0000 4 225 165 4995 6435 1\001 4 0 0 50 -1 0 20 0.0000 4 225 165 7245 6300 2\001 4 0 0 50 -1 0 20 0.0000 4 225 165 6930 4275 3\001 4 0 0 50 -1 0 20 0.0000 4 225 165 5985 3150 4\001 4 0 0 50 -1 0 20 0.0000 4 240 165 4500 3285 5\001 4 0 0 50 -1 0 20 0.0000 4 225 240 5355 4905 V\001 syfi-1.0.0.dfsg.orig/doc/manual/figs/rectangle.xfig.bak0000644000175000017500000000130511672223006022552 0ustar johannrjohannr#FIG 3.2 Produced by xfig version 3.2.5-alpha5 Landscape Center Metric A4 100.00 Single -2 1200 2 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 2385 7200 8370 7785 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 8370 7785 5040 2925 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 2385 7200 5040 2925 4 0 0 12 -1 0 28 0.0000 2 420 2910 1035 7965 (x_0, y_0, z_0)\001 4 0 0 12 -1 0 28 0.0000 4 420 3030 7605 8505 (x_1, y_1, z_1) \001 4 0 0 12 -1 0 28 0.0000 2 420 2910 2970 2475 (x_2, y_2, z_2)\001 4 0 0 50 -1 0 28 0.0000 4 210 150 7290 7470 r\001 4 0 0 50 -1 0 28 0.0000 4 210 180 4410 3330 s\001 4 0 0 50 -1 0 28 0.0000 4 270 135 5805 3555 t\001 syfi-1.0.0.dfsg.orig/doc/manual/figs/box.xfig.bak0000644000175000017500000000223611672223006021402 0ustar johannrjohannr#FIG 3.2 Produced by xfig version 3.2.5-alpha5 Landscape Center Metric A4 100.00 Single -2 1200 2 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 2385 7200 8370 7785 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 8370 7785 5040 2925 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 2385 7200 5040 2925 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 4770 5985 8370 7785 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 2385 7200 4770 5985 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 4770 5985 5040 2925 4 0 0 12 -1 0 28 0.0000 2 420 2910 1035 7965 (x_0, y_0, z_0)\001 4 0 0 12 -1 0 28 0.0000 4 420 3030 7605 8505 (x_1, y_1, z_1) \001 4 0 0 12 -1 0 28 0.0000 2 420 2910 2970 2475 (x_2, y_2, z_2)\001 4 0 0 50 -1 0 28 0.0000 4 210 180 4410 3330 s\001 4 0 0 12 -1 0 28 0.0000 2 420 2910 1350 5850 (x_3, y_3, z_3)\001 4 0 0 50 -1 0 28 0.0000 4 210 150 6885 8010 r\001 4 0 0 50 -1 0 28 0.0000 4 270 135 3915 6255 t\001 4 0 0 50 -1 0 28 0.0000 4 210 240 4725 4185 u\001 4 0 0 50 -1 0 28 0.0000 4 210 345 7245 7155 w\001 4 0 0 50 -1 0 28 0.0000 4 210 240 5580 3375 v\001 syfi-1.0.0.dfsg.orig/doc/manual/figs/line.xfig0000644000175000017500000000056411672223006021007 0ustar johannrjohannr#FIG 3.2 Produced by xfig version 3.2.5-alpha5 Landscape Center Metric A4 100.00 Single -2 1200 2 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 3015 7110 7515 4680 4 0 0 12 -1 0 28 0.0000 2 420 2910 2430 7650 (x_0, y_0, z_0)\001 4 0 0 12 -1 0 28 0.0000 4 420 3030 5085 4455 (x_1, y_1, z_1) \001 4 0 0 50 -1 0 28 0.0000 4 210 150 7605 4995 r\001 syfi-1.0.0.dfsg.orig/doc/manual/figs/triangle.xfig.bak0000644000175000017500000000056411672223006022421 0ustar johannrjohannr#FIG 3.2 Produced by xfig version 3.2.5-alpha5 Landscape Center Metric A4 100.00 Single -2 1200 2 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 3015 7110 7515 4680 4 0 0 12 -1 0 28 0.0000 2 420 2910 2430 7650 (x_0, y_0, z_0)\001 4 0 0 12 -1 0 28 0.0000 4 420 3030 5085 4455 (x_1, y_1, z_1) \001 4 0 0 50 -1 0 28 0.0000 4 210 150 7605 4995 r\001 syfi-1.0.0.dfsg.orig/doc/manual/figs/rectangle.xfig0000644000175000017500000000051011672223006022013 0ustar johannrjohannr#FIG 3.2 Produced by xfig version 3.2.5-alpha5 Landscape Center Metric A4 100.00 Single -2 1200 2 2 2 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 2880 7245 9585 7245 9585 1530 2880 1530 2880 7245 4 0 0 12 -1 0 28 0.0000 2 420 2910 1035 7965 (x_0, y_0, z_0)\001 4 0 0 12 -1 0 28 0.0000 4 420 3030 9540 1125 (x_1, y_1, z_1) \001 syfi-1.0.0.dfsg.orig/doc/manual/figs/discont.xfig.eps0000644000175000017500000000710311672223006022305 0ustar johannrjohannr%!PS-Adobe-2.0 EPSF-2.0 %%Title: discont.xfig %%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 %%CreationDate: Tue Jan 3 13:24:03 2006 %%For: kent-and@ubuntu (Kent-Andre Mardal,,,) %%BoundingBox: 0 0 376 390 %Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 390 moveto 0 0 lineto 376 0 lineto 376 390 lineto closepath clip newpath -194.8 502.5 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06299 0.06299 sc % % Fig objects follow % % % here starts figure with depth 50 % Polyline 0 slj 0 slc 7.500 slw n 4905 1800 m 3105 3150 l 3105 6120 l 6390 7920 l 9045 6975 l 8730 4860 l 6885 2880 l 4905 1800 l cp gs col0 s gr % Polyline n 3105 3150 m 5760 4950 l 3105 6120 l gs col0 s gr % Polyline n 6390 7965 m 5760 4950 l 8730 4860 l gs col0 s gr % Polyline n 6885 2880 m 5760 4950 l 4905 1800 l gs col0 s gr /Times-Roman ff 317.50 scf sf 4995 6435 m gs 1 -1 sc (1) col0 sh gr /Times-Roman ff 317.50 scf sf 7245 6300 m gs 1 -1 sc (2) col0 sh gr /Times-Roman ff 317.50 scf sf 6930 4275 m gs 1 -1 sc (3) col0 sh gr /Times-Roman ff 317.50 scf sf 5985 3150 m gs 1 -1 sc (4) col0 sh gr /Times-Roman ff 317.50 scf sf 4500 3285 m gs 1 -1 sc (5) col0 sh gr /Times-Roman ff 317.50 scf sf 5355 4905 m gs 1 -1 sc (V) col0 sh gr % here ends figure; $F2psEnd rs showpage %%Trailer %EOF syfi-1.0.0.dfsg.orig/doc/manual/figs/rectangle.xfig.eepicemu0000644000175000017500000000120411672223006023607 0ustar johannrjohannr\setlength{\unitlength}{0.00037489in} % \begingroup\makeatletter\ifx\SetFigFont\undefined% \gdef\SetFigFont#1#2#3#4#5{% \reset@font\fontsize{#1}{#2pt}% \fontfamily{#3}\fontseries{#4}\fontshape{#5}% \selectfont}% \fi\endgroup% {\renewcommand{\dashlinestretch}{30} \begin{picture}(11642,7347)(0,-10) \thicklines \path(1860,861)(8565,861)(8565,6576) (1860,6576)(1860,861) \put(15,141){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\familydefault}{\mddefault}{\updefault}($x_0$, $y_0$, $z_0$)}}}} \put(8520,6981){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\rmdefault}{\mddefault}{\updefault}($x_1$, $y_1$, $z_1$) }}}} \end{picture} } syfi-1.0.0.dfsg.orig/doc/manual/figs/triangle.xfig.eepicemu0000644000175000017500000000262711672223006023462 0ustar johannrjohannr\setlength{\unitlength}{0.00047489in} % \begingroup\makeatletter\ifx\SetFigFont\undefined% \gdef\SetFigFont#1#2#3#4#5{% \reset@font\fontsize{#1}{#2pt}% \fontfamily{#3}\fontseries{#4}\fontshape{#5}% \selectfont}% \fi\endgroup% {\renewcommand{\dashlinestretch}{30} \begin{picture}(9707,6537)(0,-10) \thicklines \path(1365,1446)(7350,861) \blacken\thinlines \path(7105.301,824.632)(7350.000,861.000)(7116.975,944.063)(7105.301,824.632) \thicklines \path(7350,861)(4020,5721) \blacken\thinlines \path(4205.151,5556.930)(4020.000,5721.000)(4106.160,5489.102)(4205.151,5556.930) \thicklines \path(1365,1446)(4020,5721) \blacken\thinlines \path(3944.350,5485.464)(4020.000,5721.000)(3842.409,5548.775)(3944.350,5485.464) \put(6270,1176){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\rmdefault}{\mddefault}{\updefault}r}}}} \put(3390,5316){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\rmdefault}{\mddefault}{\updefault}s}}}} \put(4785,5091){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\rmdefault}{\mddefault}{\updefault}t}}}} \put(15,681){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\familydefault}{\mddefault}{\updefault}($x_0$, $y_0$, $z_0$)}}}} \put(6585,141){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\rmdefault}{\mddefault}{\updefault}($x_1$, $y_1$, $z_1$) }}}} \put(1950,6171){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\familydefault}{\mddefault}{\updefault}($x_2$, $y_2$, $z_2$)}}}} \end{picture} } syfi-1.0.0.dfsg.orig/doc/manual/figs/box.xfig0000644000175000017500000000123411672223006020643 0ustar johannrjohannr#FIG 3.2 Produced by xfig version 3.2.5-alpha5 Landscape Center Metric A4 100.00 Single -2 1200 2 2 2 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 3150 6795 7245 6795 7245 3105 3150 3105 3150 6795 2 2 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 5355 5940 9450 5940 9450 2250 5355 2250 5355 5940 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 3150 3105 5355 2250 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 7244 3102 9449 2247 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 7244 6792 9449 5937 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 3149 6792 5354 5937 4 0 0 12 -1 0 28 0.0000 2 420 2910 1170 7515 (x_0, y_0, z_0)\001 4 0 0 12 -1 0 28 0.0000 4 420 3030 9315 1845 (x_1, y_1, z_1) \001 syfi-1.0.0.dfsg.orig/doc/manual/figs/tetrahedron.xfig0000644000175000017500000000223611672223006022375 0ustar johannrjohannr#FIG 3.2 Produced by xfig version 3.2.5-alpha5 Landscape Center Metric A4 100.00 Single -2 1200 2 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 2385 7200 8370 7785 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 8370 7785 5040 2925 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 2385 7200 5040 2925 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 4770 5985 8370 7785 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 2385 7200 4770 5985 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 4770 5985 5040 2925 4 0 0 12 -1 0 28 0.0000 2 420 2910 1035 7965 (x_0, y_0, z_0)\001 4 0 0 12 -1 0 28 0.0000 4 420 3030 7605 8505 (x_1, y_1, z_1) \001 4 0 0 12 -1 0 28 0.0000 2 420 2910 2970 2475 (x_2, y_2, z_2)\001 4 0 0 50 -1 0 28 0.0000 4 210 180 4410 3330 s\001 4 0 0 12 -1 0 28 0.0000 2 420 2910 1350 5850 (x_3, y_3, z_3)\001 4 0 0 50 -1 0 28 0.0000 4 210 150 6885 8010 r\001 4 0 0 50 -1 0 28 0.0000 4 270 135 3915 6255 t\001 4 0 0 50 -1 0 28 0.0000 4 210 240 4725 4185 u\001 4 0 0 50 -1 0 28 0.0000 4 210 345 7245 7155 w\001 4 0 0 50 -1 0 28 0.0000 4 210 240 5580 3375 v\001 syfi-1.0.0.dfsg.orig/doc/manual/figs/triangle.xfig0000644000175000017500000000130511672223006021657 0ustar johannrjohannr#FIG 3.2 Produced by xfig version 3.2.5-alpha5 Landscape Center Metric A4 100.00 Single -2 1200 2 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 2385 7200 8370 7785 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 8370 7785 5040 2925 2 1 0 3 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 1 1 1.00 120.00 240.00 2385 7200 5040 2925 4 0 0 12 -1 0 28 0.0000 2 420 2910 1035 7965 (x_0, y_0, z_0)\001 4 0 0 12 -1 0 28 0.0000 4 420 3030 7605 8505 (x_1, y_1, z_1) \001 4 0 0 12 -1 0 28 0.0000 2 420 2910 2970 2475 (x_2, y_2, z_2)\001 4 0 0 50 -1 0 28 0.0000 4 210 150 7290 7470 r\001 4 0 0 50 -1 0 28 0.0000 4 210 180 4410 3330 s\001 4 0 0 50 -1 0 28 0.0000 4 270 135 5805 3555 t\001 syfi-1.0.0.dfsg.orig/doc/manual/figs/line.xfig.eepicemu0000644000175000017500000000145711672223006022604 0ustar johannrjohannr\setlength{\unitlength}{0.00047489in} % \begingroup\makeatletter\ifx\SetFigFont\undefined% \gdef\SetFigFont#1#2#3#4#5{% \reset@font\fontsize{#1}{#2pt}% \fontfamily{#3}\fontseries{#4}\fontshape{#5}% \selectfont}% \fi\endgroup% {\renewcommand{\dashlinestretch}{30} \begin{picture}(5792,3702)(0,-10) \thicklines \path(600,681)(5100,3111) \blacken\thinlines \path(4917.332,2944.170)(5100.000,3111.000)(4860.314,3049.759)(4917.332,2944.170) \put(5190,2796){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\rmdefault}{\mddefault}{\updefault}r}}}} \put(15,141){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\familydefault}{\mddefault}{\updefault}($x_0$, $y_0$, $z_0$)}}}} \put(2670,3336){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\rmdefault}{\mddefault}{\updefault}($x_1$, $y_1$, $z_1$) }}}} \end{picture} } syfi-1.0.0.dfsg.orig/doc/manual/figs/tetrahedron.xfig.eepicemu0000644000175000017500000000436411672223006024174 0ustar johannrjohannr\setlength{\unitlength}{0.00047489in} % \begingroup\makeatletter\ifx\SetFigFont\undefined% \gdef\SetFigFont#1#2#3#4#5{% \reset@font\fontsize{#1}{#2pt}% \fontfamily{#3}\fontseries{#4}\fontshape{#5}% \selectfont}% \fi\endgroup% {\renewcommand{\dashlinestretch}{30} \begin{picture}(9707,6537)(0,-10) \thicklines \path(1365,1446)(7350,861) \blacken\thinlines \path(7105.301,824.632)(7350.000,861.000)(7116.975,944.063)(7105.301,824.632) \thicklines \path(7350,861)(4020,5721) \blacken\thinlines \path(4205.151,5556.930)(4020.000,5721.000)(4106.160,5489.102)(4205.151,5556.930) \thicklines \path(1365,1446)(4020,5721) \blacken\thinlines \path(3944.350,5485.464)(4020.000,5721.000)(3842.409,5548.775)(3944.350,5485.464) \thicklines \path(3750,2661)(7350,861) \blacken\thinlines \path(7108.505,914.666)(7350.000,861.000)(7162.170,1021.997)(7108.505,914.666) \thicklines \path(1365,1446)(3750,2661) \blacken\thinlines \path(3563.386,2498.595)(3750.000,2661.000)(3508.915,2605.520)(3563.386,2498.595) \thicklines \path(3750,2661)(4020,5721) \blacken\thinlines \path(4058.673,5476.655)(4020.000,5721.000)(3939.138,5487.202)(4058.673,5476.655) \put(3390,5316){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\rmdefault}{\mddefault}{\updefault}s}}}} \put(5865,636){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\rmdefault}{\mddefault}{\updefault}r}}}} \put(2895,2391){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\rmdefault}{\mddefault}{\updefault}t}}}} \put(3705,4461){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\rmdefault}{\mddefault}{\updefault}u}}}} \put(6225,1491){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\rmdefault}{\mddefault}{\updefault}w}}}} \put(4560,5271){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\rmdefault}{\mddefault}{\updefault}v}}}} \put(15,681){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\familydefault}{\mddefault}{\updefault}($x_0$, $y_0$, $z_0$)}}}} \put(6585,141){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\rmdefault}{\mddefault}{\updefault}($x_1$, $y_1$, $z_1$) }}}} \put(1950,6171){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\familydefault}{\mddefault}{\updefault}($x_2$, $y_2$, $z_2$)}}}} \put(330,2796){\makebox(0,0)[lb]{\smash{{\SetFigFont{12}{30.0}{\familydefault}{\mddefault}{\updefault}($x_3$, $y_3$, $z_3$)}}}} \end{picture} } syfi-1.0.0.dfsg.orig/doc/manual/chapters/0000755000175000017500000000000011674103625020063 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/doc/manual/chapters/computing_element_matrices.tex0000644000175000017500000004223211672223006026207 0ustar johannrjohannr\chapter{Computing Element Matrices} Our next task is to compute element matrices. As earlier, everything will be done symbolically. There are several reasons for doing the computations symbolically: \begin{itemize} \item Everything is exact (No floating point precision issues)! \item Differentiation of the weak form with respect to the variables is possible (Easy to compute the Jacobian for nonlinear PDEs). \item In case one uses integers and rational numbers as input (e.g., the vertices of the polygon) one gets rational numbers as output. This enables nice output. \item In case one uses symbols as input, one get symbols as output. Hence, one might actually compute an abstract element matrix, where each entry in the matrix is a function of the vertices of the polygon, $\xx_0, \xx_1,\ldots, \xx_n$, which are symbols. We will consider this in more detail later. \item Every step can be checked against analytic computations. We can even, as we will see, produce output in \LaTeX\ format, for easy reading. \item In Section \ref{sec:code:gen} we generate C++ code from the exactly computed element matrices. \end{itemize} \section{A Poisson Problem} The Poisson problem is on the form, \begin{eqnarray*} -\Delta u &=& f, \quad \text{ in } \Omega, \\ u &=& h, \quad \text{ on } \partial \Omega_E, \\ \frac{\partial u}{\partial n} &=& g, \quad \text{ on } \partial \Omega_N, \end{eqnarray*} where $\partial \Omega = \partial\Omega_E \cup \partial\Omega_N$. The weak form of the Poisson problem is (as we have already used): Find $u\in V_h$ such that \[ a(u,v) = b(v), \quad \forall v\in V_0 . \] where, \begin{eqnarray*} a(u,v) &=& \int_\Omega \nabla u \cdot \nabla v \, dx, \\ f(v) &=& \int_\Omega f \, v \, dx + \int_{\Gamma_N} g \, v \, ds . \end{eqnarray*} and $V_k={ v \in H^1 ; v|_{\partial\Omega_E} = k }$, for $k=0,h$. From this weak form we obtain the element matrix, see e.g., Brenner and Scott \cite{BrennerScott}, Ciarlet \cite{Ciarlet}, or Langtangen \cite{HPLBook}, \begin{equation} \label{poisson:element:matrix} A_{ij} = a(N_i, N_j) = \int_T \nabla N_j \cdot \nabla N_i \, dx . \end{equation} The computation of \eqref{poisson:element:matrix} is implemented in the function \emp{compute\_Poisson\_element\_matrix} in \emp{ElementComputations.cpp}, %% BEGIN CODE FROM ElementComputations.h \begin{code} void compute_Poisson_element_matrix( FE& fe, Dof& dof, std::map, ex>& A) { std::pair index; // Insert the local degrees of freedom into the global Dof for (int i=0; i< fe.nbf(); i++) { dof.insert_dof(1,i,fe.dof(i)); } Polygon& domain = fe.get_polygon(); // The term (grad u, grad v) for (int i=0; i< fe.nbf(); i++) { index.first = dof.glob_dof(fe.dof(i)); // fetch the i'th // global dof for (int j=0; j< fe.nbf(); j++) { index.second = dof.glob_dof(fe.dof(j));// fetch the j'th // global dof ex nabla = inner(grad(fe.N(i)), // compute the grad(fe.N(j))); // integrand ex Aij = domain.integrate(nabla); // compute integral A[index] += Aij; // add to matrix } } } \end{code} %% END CODE FROM ElementComputations.h \noindent Notice that in this example, both the degrees of freedom \emp{dof} and the matrix \emp{A} are global. This function can be used as follows (see \emp{fe\_ex4.cpp}), %% BEGIN CODE FROM fe_ex4.h \begin{code} //matrix in terms of rational numbers int order = 1; Triangle triangle(lst(0,0), lst(1,0), lst(0,1)); LagrangeFE fe; fe.set_order(order); fe.set_polygon(triangle); fe.compute_basis_functions(); Dof dof; std::map, ex> A; compute_Poisson_element_matrix(fe, dof, A); \end{code} %% END CODE FROM fe_ex4.h In the above example, the vertices were integers, therefore the entries in the matrix will be rational numbers. In the following example the vertices are symbols. %% BEGIN CODE FROM fe_ex4.h \begin{code} //matrix in terms of symbols symbol x0("x0"), x1("x1"), x2("x2"); symbol y0("y0"), y1("y1"), y2("y2"); Triangle triangle2(lst(x0,y0), lst(x1,y1), lst(x2,y2)); LagrangeFE fe2; fe2.set_order(order); fe2.set_polygon(triangle2); fe2.compute_basis_functions(); Dof dof2; std::map, ex> A2; compute_Poisson_element_matrix(fe2, dof2, A2); \end{code} %% END CODE FROM fe_ex4.h \noindent In this case \emp{A2} will contain expressions involving the vertices, $(x_0, y_0)$, $(x_1, y_1)$, $(x_2, y_2)$ (we used a triangle above). The GiNaC library supports many different ways to print out the output. In the example below, we turn on \LaTeX\ output with the command \emp{cout <, ex>& A) { std::pair index; std::pair index2; Polygon& domain = v_fe.get_polygon(); // Insert the local degrees of freedom into the global Dof for (int i=0; i< v_fe.nbf(); i++) { dof.insert_dof(1,i,v_fe.dof(i)); } for (int i=0; i< p_fe.nbf(); i++) { dof.insert_dof(1,v_fe.nbf()+i,p_fe.dof(i)); } // The term (grad u, grad v) for (int i=0; i< v_fe.nbf(); i++) { index.first = dof.glob_dof(v_fe.dof(i)); // fetch the dof for v_i for (int j=0; j< v_fe.nbf(); j++) { index.second = dof.glob_dof(v_fe.dof(j));// fetch the dof for v_j GiNaC::ex nabla = inner(grad(v_fe.N(i)), grad(v_fe.N(j)));// compute the integrand GiNaC::ex Aij = domain.integrate(nabla); // compute the integral A[index] += Aij; // add to global matrix } } // The term (-div u, q) for (int i=0; i< p_fe.nbf(); i++) { index.first = dof.glob_dof(p_fe.dof(i)); // fetch the dof for p_i for (int j=1; j< v_fe.nbf(); j++) { index.second=dof.glob_dof(v_fe.dof(j)); // fetch the dof for v_j ex divV= -p_fe.N(i)*div(v_fe.N(j)); // compute the integrand ex Aij = domain.integrate(divV); // compute the integral A[index] += Aij; // add to global matrix // Do not need to compute the term (grad(p),v), since the system is // symmetric. We simply set Aji = Aij index2.first = index.second; index2.second = index.first; A[index2] -= Aij; } } } \end{code} } %% END CODE FROM stokes_ex.cpp \section{A Nonlinear Convection Diffusion Problem} Our next example concerns a nonlinear convection diffusion equation, where we compute the element matrix for the Jacobian typically arising in a Newton iteration. Let the PDE be, \begin{eqnarray} (\uu\cdot\nabla)\uu - \Delta \uu &=& \ff, \quad \text{ in } \Omega, \\ \uu &=& \gg, \quad \text{ on } \partial \Omega. \end{eqnarray} This can be stated on weak form as: Find $\uu\in\VV_g$ such that \[ \FF(\uu,\vv) = 0, \quad \forall \vv\in \VV_\nnull, \] where \begin{eqnarray*} \FF(\uu,\vv) &=& \int_\Omega (\uu\cdot\nabla\uu)\cdot\vv \, dx + \int_\Omega \nabla\uu:\nabla \vv \, dx - \int_\Omega \ff \cdot \vv \, dx \end{eqnarray*} and \[ \VV_\kk = { \vv \in \HH^1 : \vv |_{\partial \Omega} = \kk }, \quad \kk=\nnull,\gg. \] The Jacobian is obtained by letting $\uu=\hat{\uu}=\sum_j u_j \NN_j$, $\vv=\NN_i$ and differentiating $\FF$ with respect to $u_j$, \[ J_{ij} = \frac{\partial F(\hat{\uu}, \NN_i)}{\partial u_j } . \] This is precisely the way it is done with SyFi, (see also \emp{nljacobian\_ex.cpp}), %% BEGIN CODE FROM nljacobian_ex.cpp {\footnotesize \begin{code} void compute_nlconvdiff_element_matrix( FE& fe, Dof& dof, std::map, ex>& A) { std::pair index; Polygon& domain = fe.get_polygon(); // insert the local dofs into the global Dof object for (int i=0; i< fe.nbf() ; i++) { dof.insert_dof(1,i,fe.dof(i)); } // create the local U field: U = sum_k u_k N_k ex UU = matrix(2,1,lst(0,0)); ex ujs = symbolic_matrix(1,fe.nbf(), "u"); for (int k=0; k< fe.nbf(); k++) { UU +=ujs.op(k)*fe.N(k); // U += u_k N_k } //Get U represented as a matrix matrix U = ex_to(UU.evalm()); for (int i=0; i< fe.nbf() ; i++) { index.first = dof.glob_dof(fe.dof(i)); // fetch global dof // First: the diffusion term in Fi ex gradU = grad(U); // compute the gradient ex Fi_diffusion = inner(gradU, // grad(U)*grad(Ni) grad(fe.N(i))); // Second: the convection term in Fi ex Ut = U.transpose(); // get the transposed of U ex UgradU = (Ut*gradU).evalm(); // compute U*grad(U) ex Fi_convection = inner(UgradU, fe.N(i), // compute U*grad(U)*Ni true); // add together terms for convection and diffusion ex Fi = Fi_convection + Fi_diffusion; // Loop over all uj and differentiate Fi with respect // to uj to get the Jacobian Jij for (int j=0; j< fe.nbf() ; j++) { index.second = dof.glob_dof(fe.dof(j)); // fetch global dof symbol uj = ex_to(ujs.op(j)); // cast uj to a symbol ex Jij = Fi.diff(uj,1); // differentiate Fi wrt. uj ex Aij = domain.integrate(Jij); // intergrate the Jacobian Jij A[index] += Aij; // update the global matrix } } } \end{code} } %% END CODE FROM nljacobian_ex.cpp \noindent Running the example \emp{nljacobian\_ex}, which employs second order continuous Lagrangian elements, yields the following output for $A[1,1]$, \begin{eqnarray} A[1,1]&=&\frac{1}{2}+\frac{2}{105} u_{3}+\frac{2}{105} u_{7} +\frac{1}{21} u_{2} \frac{13}{420} u_{1}-\frac{1}{280} u_{11} \\ &-&\frac{1}{21} u_{6} - \frac{1}{280} u_{5} \frac{1}{140} u_{10}+\frac{1}{210} u_{9}-\frac{1}{140} u_{4} . \end{eqnarray} We have used GiNaC to generate the \LaTeX code, as described on Page \pageref{ginac:output:format}. \section{Expression Simplification} When generating expressions for complicated forms, and specially non-linear forms, there is much room for optimization of the resulting expressions to generate more efficient code. Generating optimal code for the computation of a large symbolic expression is a very difficult problem, and the underlying symbolic engine in GiNaC has limited support for this. However, GiNaC has many of the building blocks to perform this optimization. We have implemented a basic algorithm to simplify general expressions, which generates helper variables for basic binary operations that are repeated. The algorithm is very simple, and the resulting speedup (in the tests) ranges from a factor four to slightly negative. Obviously more work is needed in this area to make this usable. The current expression simplifier can be tested by running "make simplify \&\& ./simplify v" under tests/. A basic code example is shown below. \begin{code} ExpressionSimplifier es; es.add(e_symbol, e_expression); es.add(f_symbol, f_expression); es.simplify(); list< pair< symbol, ex > > & selist = es.get_output().get_symex_list(); genCodeSymbols(cout, selist); \end{code} syfi-1.0.0.dfsg.orig/doc/manual/chapters/python.tex0000644000175000017500000000644611672223006022132 0ustar johannrjohannr\chapter{Python Support} \label{sec:python} SyFi comes with Python support. The SyFi Python module is created by using the tool SWIG (http://www.swig.org). One should also install the Python interface to GiNaC called Swiginac (http://swiginac.berlios.de/). The following code shows how Swiginac can be used (see also \emp{simple.py}), %% BEGIN CODE FROM simple.py \begin{code} from swiginac import * x = symbol("x") y = symbol("y") f = sin(x) print "f = ", f dfdx = diff(f,x) print "dfdx = ", dfdx \end{code} %% END CODE FROM simple.py \noindent SyFi classes and functions can be used in Python just as they are used in C++. The following example shows how to compute the element matrix for a Poisson problem using forth order Lagrangian elements, %% BEGIN CODE FROM poisson1.py \begin{code} from swiginac import * from SyFi import * p0 = [0,0,0]; p1 = [1,0,0]; p2 = [0,1,0] triangle = Triangle(p0, p1, p2) fe = LagrangeFE(triangle,4) print fe.nbf() for i in range(0,fe.nbf()): for j in range(0,fe.nbf()): integrand = inner(grad(fe.N(i)),grad(fe.N(j))) Aij = triangle.integrate(integrand) print "A(%d,%d)="%(i,j), Aij.eval() \end{code} %% END CODE FROM poisson1.py Finally, we show a Python implementation of the Crouizex-Raviart element (The C++ implementation can be found in the file \emp{CrouzeixRaviart.cpp}). Notice that in this code we inherit the functions \emp{ex N(int i)} and \emp{ex dof(int i)} and the \emp{exvector}s \emp{Ns} and \emp{dofs} from the C++ class \emp{StandardFE}. Hence, thanks to SWIG, cross-language inheritance works, and we therefore only need to implement the function \emp{compute\_basis\_functions}. The following example is implemented in \emp{crouzeixraviart.py}. %% BEGIN CODE FROM crouzeixraviart.py \begin{code} from swiginac import * from SyFi import * initSyFi(3) x = cvar.x; y = cvar.y; z = cvar.z # fetch some global variables class CrouzeixRaviart: """ Python implementation of the Crouzeix-Raviart element. The corresponding C++ implementation is in the file CrouzeixRaviart.cpp. """ def __init__(self, polygon): """ Constructor """ self.Ns = [] self.dofs = [] self.polygon = polygon self.compute_basis_functions() def compute_basis_functions(self): """ Compute the basis functions and degrees of freedom and put them in Ns and dofs, respectively. """ polspace = bernstein(1,triangle,"a") N = polspace[0] variables = polspace[1] for i in range(0,3): line = triangle.line(i) dofi = line.integrate(N) self.dofs.append(dofi) for i in range(0,3): equations = [] for j in range(0,3): equations.append(relational(self.dofs[j], dirac(i,j))) sub = lsolve(equations, variables) Ni = N.subs(sub) self.Ns.append(Ni); def N(self,i): return self.Ns[i] def dof(self,i): return self.dofs[i] def nbf(self): return len(self.Ns) p0 = [0,0,0]; p1 = [1,0,0]; p2 = [0,1,0]; triangle = Triangle(p0, p1, p2) fe = CrouzeixRaviart(triangle) fe.compute_basis_functions() print fe.nbf() for i in range(0,fe.nbf()): print "N(%d) = "%i, fe.N(i).eval().printc() print "grad(N(%d)) = "%i, grad(fe.N(i)).eval().printc() print "dof(%d) = "%i, fe.dof(i).eval().printc() \end{code} %% END CODE FROM crouzeixraviart.py syfi-1.0.0.dfsg.orig/doc/manual/chapters/sfctech.tex0000644000175000017500000002602511672223006022223 0ustar johannrjohannr\chapter{Behind the SyFi Form Compiler} FIXME: This chapter has not been updated for the new rewritten UFL-based SFC. This chapter gives an overview of the implementation of SFC, intended for developers and technical users during debugging. We strongly recommend reading the UFC paper (FIXME:REFERENCE) and UFC manual (FIXME:REFERENCE) before proceeding, since much mathematical notation, numerical concepts and technical details are defined there. \section{Example of generated code} Let us first look at an example of UFC code that is generated by SFC. Shown below is the function \texttt{tabulate\_tensor} which computes the element tensor for a stiffness matrix with a scalar conductivity. The form uses scalar linear elements for the test and trial functions v and u, and a scalar piecewise constant element (P0) for the coefficient $M$. FIXME: update code \begin{code} void cell_integral_stiffness_with_M_LagrangeFE_1_2D:: tabulate_tensor(double* A, const double * const * w, const ufc::cell& cell) const { // coordinates double x0 = cell.coordinates[0][0]; double y0 = cell.coordinates[0][1]; double x1 = cell.coordinates[1][0]; double y1 = cell.coordinates[1][1]; double x2 = cell.coordinates[2][0]; double y2 = cell.coordinates[2][1]; // affine map double G00 = x1 - x0; double G01 = x2 - x0; double G10 = y1 - y0; double G11 = y2 - y0; double detG_tmp = G00*G11-G01*G10; double detG = fabs(detG_tmp); double Ginv00 = G11 / detG_tmp; double Ginv01 = -G10 / detG_tmp; double Ginv10 = -G01 / detG_tmp; double Ginv11 = G00 / detG_tmp; A[3*0 + 0] = (5.e-01*(Ginv01*Ginv01)*w[0][0] +5.e-01*(Ginv00*Ginv00)*w[0][0] +Ginv11*Ginv01*w[0][0] +5.e-01*(Ginv11*Ginv11)*w[0][0] +Ginv10*Ginv00*w[0][0] +5.e-01*(Ginv10*Ginv10)*w[0][0])*detG; A[3*0 + 1] = (-5.e-01*(Ginv01*Ginv01)*w[0][0] -5.e-01*(Ginv00*Ginv00)*w[0][0] -5.e-01*Ginv11*Ginv01*w[0][0] -5.e-01*Ginv10*Ginv00*w[0][0])*detG; A[3*0 + 2] = (-5.e-01*Ginv11*Ginv01*w[0][0] -5.e-01*(Ginv11*Ginv11)*w[0][0] -5.e-01*Ginv10*Ginv00*w[0][0] -5.e-01*(Ginv10*Ginv10)*w[0][0])*detG; A[3*1 + 0] = (-5.e-01*(Ginv01*Ginv01)*w[0][0] -5.e-01*(Ginv00*Ginv00)*w[0][0] -5.e-01*Ginv11*Ginv01*w[0][0] -5.e-01*Ginv10*Ginv00*w[0][0])*detG; A[3*1 + 1] = (5.e-01*(Ginv01*Ginv01)*w[0][0] +5.e-01*(Ginv00*Ginv00)*w[0][0])*detG; A[3*1 + 2] = (5.e-01*Ginv11*Ginv01*w[0][0] +5.e-01*Ginv10*Ginv00*w[0][0])*detG; A[3*2 + 0] = (-5.e-01*Ginv11*Ginv01*w[0][0] -5.e-01*(Ginv11*Ginv11)*w[0][0] -5.e-01*Ginv10*Ginv00*w[0][0] -5.e-01*(Ginv10*Ginv10)*w[0][0])*detG; A[3*2 + 1] = (5.e-01*Ginv11*Ginv01*w[0][0] +5.e-01*Ginv10*Ginv00*w[0][0])*detG; A[3*2 + 2] = (5.e-01*(Ginv11*Ginv11)*w[0][0] +5.e-01*(Ginv10*Ginv10)*w[0][0])*detG; } \end{code} (The expressions for A had to be edited manually to fit on the page.) \section{Data Flow During Code Generation} A summary of the data flow in a user application can be written as \begin{itemize} \item The user defines FiniteElement objects representing all finite element spaces. \item The user defines one BasisFunction object for each axis of the element tensor. \item The user defines one Function object for each coefficient. \item The user defines a FormRep object with one list of BasisFunction objects and one list of Function objects. \item The user populates the FormRep object with IntegralRep objects. \item The user fills in each IntegralRep object with integrand expressions. \item The user passes the FormRep object to \texttt{compile\_form} or another code generation function. \end{itemize} If CallbackForm is used, the apparent data flow in the user code will be slightly different from the above, but a quick look at the CallbackForm code in SFC (it's quite short) should remove any confusion. \section{Code generation design} Here we describe the overall design of the code generation software, intended for developers who wish to extend SFC, and perhaps usable for advanced users during debugging. The C++ interface is fixed, defined by the header file ufc.h from UFC. UFC also contains a utility Python module with format strings for generating UFC compliant code. An example of a format string is seen below. \begin{code} cell_integral_implementation = """\ /// Constructor %(classname)s::%(classname)s() : ufc::cell_integral() { %(constructor)s } /// Destructor %(classname)s::~%(classname)s() { %(destructor)s } /// Tabulate the tensor for the contribution from a local cell void %(classname)s::tabulate_tensor(double* A, const double * const * w, const ufc::cell& c) const { %(tabulate_tensor)s } """ \end{code} Each UFC class (\texttt{form}, \texttt{dof\_map}, \texttt{finite\_element}, \texttt{cell\_integral}, \texttt{exterior\_facet\_integral}, \texttt{interior\_facet\_integral}) has separate format strings. In SFC, each UFC class is mirrored by a subclass of the class CodeGenerator (FormCG, DofMapCG, FiniteElementCG, CellIntegralCG, etc). These classes have only one function in common, called generate\_code(). This function should return a tuple (header\_code, cpp\_code) when called, and each implementation of it follows the same pattern. Each function in the UFC interface has a format string variable (like ``\%(tabulate\_tensor)s") with the same name. For each format string variable foo there is a corresponding function gen\_foo() in the CodeGenerator subclass. The result from each of these functions gen\_* are code for function bodies (without the function signature), which is inserted in a dictionary that is combined with the appropriate format string from UFC. The three ufc::*\_integral classes have the same single function tabulate\_tensor, which is reflected by a common base class IntegralCG for their code generators. \begin{code} class IntegralCG(CodeGenerator): def __init__(self, classname, header_format, implementation_format): self.classname = classname self.header_format = header_format self.implementation_format = implementation_format def generate_code(self): # generate code components for integral class vars = { 'classname' : self.classname, 'constructor' : indent(self.gen_constructor()), 'destructor' : indent(self.gen_destructor()), 'members' : indent(self.gen_members()), 'tabulate_tensor' : indent(self.gen_tabulate_tensor()) } # combine generated code components with # code templates defined in the ufc module hcode = self.header_format % vars cppcode = self.gen_members_implementation() cppcode += self.implementation_format % vars return hcode, cppcode \end{code} The actual code generation for the most complicated function, tabulate\_tensor, is ``outsourced'' to a set of functions gen\_tabulate\_tensor\_* found in gen\_tabulate\_tensor.py. Among the functions defined here are \begin{itemize} \item gen\_tabulate\_tensor\_cell\_symbolic \item gen\_tabulate\_tensor\_cell\_quadrature \item gen\_tabulate\_tensor\_exterior\_facet\_symbolic \item gen\_tabulate\_tensor\_exterior\_facet\_quadrature \item gen\_tabulate\_tensor\_interior\_facet\_symbolic \item gen\_tabulate\_tensor\_interior\_facet\_quadrature \end{itemize} Each of these functions take a single argument itgrep, which is an Integral object describing a single integral from a user form. \begin{code} class CellIntegralCG(IntegralCG): def __init__(self, itgrep): IntegralCG.__init__(self, classname = itgrep.classname, header_format = ufc.cell_integral_header, implementation_format = ufc.cell_integral_implementation) self.itgrep = itgrep def gen_tabulate_tensor(self): if self.itgrep.symbolic: code = gen_tabulate_tensor_cell_symbolic(self.itgrep) else: code = gen_tabulate_tensor_cell_quadrature(self.itgrep) return code \end{code} \section{Code Formatting Utilities} To help ensure a consistent formatting of the generated code, it has proved useful to have some simple code generation utilities. These utilities assist in making the code readable, and provide some basic consistency checks to ensure that the generated code is valid. At the most basic level, if you want to indent a multiline string, use the function \texttt{indent(text)}. This ensures a consistent indentation throughout the generated code, and removes. One of the central utilities is the CodeFormatter class, which handles newlines, braces and indentation for code with block constructs like if, while, do, switch and class. Errors in calls to the CodeFormatter will often be detected during code generation, reducing the chance of C++ compiler errors on generated code which can be cumbersome to debug. It also does consistency checks for nested block constructs if you use its functions \texttt{begin\_*} and \texttt{end\_*}. An example of its basic usage follows: \begin{code} #!/usr/bin/env python from sfc.CodeFormatter import CodeFormatter # fictional choice of integers facet_dofs = [(2, 0, 1), (5, 3, 4), (6, 7, 8)] code = CodeFormatter() code.begin_switch("facet") for i, dofs in enumerate(facet_dofs): code.begin_case(i) for j, d in enumerate(dofs): code += "dofs[%d] = %d;" % (j, d) code.end_case() code += "default:" code.indent() code += 'throw std::runtime_error("Invalid facet number.");' code.outdent() code.end_switch() print str(code) \end{code} which produces the following nicely formatted C++ code \begin{code} switch(facet) { case 0: dofs[0] = 2; dofs[1] = 0; dofs[2] = 1; break; case 1: dofs[0] = 5; dofs[1] = 3; dofs[2] = 4; break; case 2: dofs[0] = 6; dofs[1] = 7; dofs[2] = 8; break; default: throw std::runtime_error("Invalid facet number."); } \end{code} During its filetime, the object \texttt{code} keeps track of intentation level and the current scope (on a stack). If you haven't closed all blocks when calling \texttt{str(code)}, an exception is raised. Another useful set of helper functions can generate code for declarations, definitions, assignments and additions for a list of symbol,expression pairs, or \emph{tokens}. A token list is a list of (symbol, expression) tuples. The functions are: \begin{itemize} \item \texttt{gen\_token\_declarations(tokens)} $\rightarrow$ \texttt{double s;} \item \texttt{gen\_token\_definitions(tokens)} $\rightarrow$ \texttt{double s = e;} \item \texttt{gen\_token\_assigments(tokens)} $\rightarrow$ \texttt{s = e;} \item \texttt{gen\_token\_additions(tokens)} $\rightarrow$ \texttt{s += e;} \end{itemize} %In the files \emp{affine\_map.py} and \emp{quadrature.py}, additional code generation %utilities are found. Quadrature rules are taken from \cite{solin-sergeth-dolezel}. syfi-1.0.0.dfsg.orig/doc/manual/chapters/mixedfem.tex0000644000175000017500000001172511672223006022403 0ustar johannrjohannr\chapter{Mixed Finite Elements} Mixed finite element methods typically refer to discretization methods for systems of PDEs where different finite elements are used for the different unknowns. For instance, in incompressible flow problems, one typically has (at least) two unknowns, the velocity $\vv$ and the pressure $p$. It is wellknown that the velocity elements should have higher order than the pressure elements. The reasons for this have been extensively studied the last 30 years, and we will not go into details on this here, see e.g., Brezzi and Fortin \cite{BrezziFortin} and Girault and Raviart\cite{GiraultRaviart}. What we will do here is to describe mixed finite elements from the programmers point of view. In this setting, we simply refer to mixed elements as a collection of finite elements of different types on the same polygon. The elements themselves and their implementation were discussed in the previous section. \section{The Taylor--Hood and the $\P^d_n-\P_{n-2}$ Elements } The Taylor--Hood and the $\P^d_n-\P_{n-2}$ elements are mixed elements that are popular for incompressible flow. The elements for both the velocity and the pressure are of Lagrangian type, but have different order. The Taylor--Hood element on a polygon $T$ is, \[ \vv(T) \in \P^d_2 \quad \text{and} \quad p(T)\in \P_1 . \] The $\P_n-\P_{n-2}$ element on a polygon $T$ is, \[ \vv(T) \in \P^d_n \quad \text{and} \quad p(T)\in \P_{n-2}, \quad n\ge 2. \] For $n>2$ the pressure element is of Lagrangian type, while for n=2 the pressure element is piecewise constant. These elements satisfy the Babuska-Brezzi condition. The Taylor--Hood elements can be created as follows, (see also \emp{taylorhood\_ex.cpp}) %% BEGIN CODE FROM taylorhood.h \begin{code} VectorLagrangeFE v_fe; v_fe.set_order(2); v_fe.set_size(2); v_fe.set_polygon(domain); v_fe.compute_basis_functions(); LagrangeFE p_fe; p_fe.set_order(1); p_fe.set_polygon(domain); p_fe.compute_basis_functions(); \end{code} %% END CODE FROM taylorhood.h The $\P_n^d-\P_{n-2}$ element can be made by changing the order of the elements with the \emp{set} function. \section{The Mixed Crouizex-Raviart Element} The mixed Crouizex-Raviart element is a nonconforming linear element for the velocity and piecewise constant for the pressure. The Crouizex-Raviart element was described in Section \ref{CR:element}, while the $P_0$ element was described in Section \ref{P0:element}. These elements can be made as follows (see also \emp{crouzeixraviart\_ex2.cpp}) %% BEGIN CODE FROM crouzeixraviart_ex2.cpp \begin{code} ReferenceTriangle domain; VectorCrouzeixRaviart v_fe; v_fe.set_size(2); v_fe.set_polygon(domain); v_fe.compute_basis_functions(); P0 p_fe; p_fe.set_polygon(domain); p_fe.compute_basis_functions(); \end{code} %% END CODE FROM crouzeixraviart_ex2.cpp \section{The Mixed Raviart-Thomas Element} The velocity element is the Raviart-Thomas element described in Section \ref{sec:fem:rt}. The pressure element is discontinuous polynomials of degree $n$. The $\P_0$ element is described in Section \ref{P0:element}, while the discontinuous $\P_n$ element is described in Section \ref{discont:Lagrange:element}. The can be made as such (see also \emp{raviartthomas\_ex2}): %% BEGIN CODE FROM raviartthomas_ex2.cpp \begin{code} int order = 3; ReferenceTriangle triangle("t"); RaviartThomas vfe; vfe.set_polygon(triangle); vfe.set_order(order); vfe.compute_basis_functions(); DiscontinuousLagrangeFE pfe; pfe.set_polygon(triangle); pfe.set_order(order); pfe.compute_basis_functions(); for (int i=0; i< vfe.nbf(); i++) cout <<"vfe.N("<(polynom_space.op(1)); ex Nj; // The Bezier ordinates in which the // basis function should be either 0 or 1 lst points = bezier_ordinates(t,order); // Loop over all basis functions Nj and all points. // Each basis function Nj is determined // by a set of linear equations: // Nj(xi) = dirac(i,j) // This system of equations is then solved by lsolve for (int j=1; j <= points.nops(); j++) { lst equations; int i=0; for (int i=1; i<= points.nops() ; i++ ) { // The point xi ex point = points.op(i-1); // The equation Nj(x) = dirac(i,j) ex eq = polynom == dirac(i,j); // Substitute x = xi and y = yi and // appended the equation to the list of equations // to the list of equations equations.append(eq.subs(lst(x == point.op(0) , y == point.op(1)))); } // We solve the linear system ex subs = lsolve(equations, variables); // Substitute to get the Nj Nj = polynom.subs(subs); cout <<"Nj "<= 2) { ex expanded_pol = expand(polynom1); for (int c1=0; c1<= order-2;c1++) { for (int c2=0; c2<= order-2;c2++) { for (int c3=0; c3<= order-2;c3++) { if ( c1 + c2 + c3 <= order -2 ) { ex eq = expanded_pol.coeff(x,c1) .coeff(y,c2).coeff(z,c3); if ( eq != numeric(0) ) { equations.append(eq == 0); } } } } } } \end{code} %% END CODE FROM RaviartThomas.cpp Second, we described how to implement the degrees of freedom \eqref{dof:rt:1}-\eqref{dof:rt:2}. The degrees of freedom associated with the edges, \[ \int_{e_i} \vv\cdot \nn \, p_k \, ds, \forall p_k \in \P_k(e_i), \\ \] are implemented as follows (Notice that the polynomial space on the edges of the triangle is made by creating Bernstein polynomials in standard fashion). %% BEGIN CODE FROM RaviartThomas.cpp \begin{code} ex bernstein_pol; int counter = 0; symbol t("t"); ex dofi; // loop over all edges for (int i=1; i<= 3; i++) { Line line = triangle.line(i); lst normal_vec = normal(triangle, i); bernstein_pol = bernstein(order-1, line, istr("a",i)); ex basis_space = bernstein_pol.op(2); ex pspace_n = inner(pspace, normal_vec); // loop over all basis functions on current edge ex basis; for (int i=0; i< basis_space.nops(); i++) { counter++; basis = basis_space.op(i); ex integrand = pspace_n*basis; dofi = line.integrate(integrand); dofs.insert(dofs.end(), dofi); ex eq = dofi == numeric(0); equations.append(eq); } } \end{code} %% END CODE FROM RaviartThomas.cpp The degrees of freedom associated with the whole triangle, \[ \int_{T} \vv\cdot \pp_{k-1} \, dx, \forall p_{k-1} \in \P^d_{k-1}(T), \] is implemented as %% BEGIN CODE FROM RaviartThomas.cpp \begin{code} // dofs related to the whole triangle lst bernstein_polv; if ( order > 1) { counter++; bernstein_polv = bernsteinv(order-2, triangle, "a"); ex basis_space = bernstein_polv.op(2); for (int i=0; i< basis_space.nops(); i++) { lst basis = ex_to(basis_space.op(i)); ex integrand = inner(pspace, basis); dofi = triangle.integrate(integrand); dofs.insert(dofs.end(), dofi); ex eq = dofi == numeric(0); equations.append(eq); } } \end{code} %% END CODE FROM RaviartThomas.cpp \noindent In the above code we have formed the linear system, \[ L_i(v) = 0 \] To compute the different $v_j$ we then produce different right hand sides corresponding to $\delta_{ij}$ and solve the system. How this is done can be seen in the \emp{RaviartThomas.cpp}. \subsection{The Nedelec element of second kind} \label{sec:nedelec:2nd} The Nedelec $\Hdiv$ element introduced in \cite{Nedelec:1986:NFM}, is very similar to the Raviart-Thomas element, except that the polynomial space is $\P_n^d$ instead of $\P_n^d + \xx \P_n$. Hence, it is the $\R^3$ analog of the Brezzi-Douglas-Marini element \cite{Brezzi:1985:TFM}. The degrees of freedom in the Nedelec $\Hdiv$ element are, \begin{eqnarray*} \int_f (\pp \cdot \nn) ds, \quad \forall q\in \P_k(f), \\ \int_K (\pp \cdot \qq) dx, \quad \forall \qq \in \R_{k-1}. \end{eqnarray*} Here \begin{eqnarray*} \R_k &=& (\P_{k-1}^3) \oplus \S^k, \\ \S^k &=& \{ \pp \in \H_k^3 | \ (\rr\cdot\pp) = 0 \}, \end{eqnarray*} where $\rr = (x,y,z)$. \subsubsection{Software Component: The Nedelec $\Hdiv$ Element} The Nedelec $\Hdiv$ element class definition is similar to the previous element definitions. %% BEGIN CODE FROM Nedelec2Hdiv.h \begin{code} class Nedelec2Hdiv : public StandardFE { public: Nedelec2Hdiv() {} virtual ~Nedelec2Hdiv() {} virtual void set_order(int order); virtual void set_polygon(Polygon& p); virtual void compute_basis_functions(); virtual int nbf(); virtual GiNaC::ex N(int i); virtual GiNaC::ex dof(int i); }; \end{code} %% END CODE FROM Nedelec2Hdiv.h \subsubsection{The Construction of the Nedelec $\Hdiv$ Element} The construction of this element is very similar to the construction of the Raviart--Thomas element. We will therefore not discuss this here. \section{Finite Elements in $H(div,\mathbf{M})$ } \label{sec:afw:hdiv} The Arnold, Falk and Winther element~\cite{AFWweak3D} for mixed elasticity problems in 3D with weak symmetry, has recently been added to SyFi. This element consists of basis functions which take values in $\mathbb{M}$, which is the space of $3 \times 3$ matrices. Each row is either a null row or the Nedelec $H(div)$ element of second kind as described in Section \ref{sec:nedelec:2nd}. The implementation is straightforward, since it is essentially a loop where each row is created as the basis functions a Nedelec element. We therefore do not comment the implementation details here. The finite element is defined in \emp{ArnoldFalkWintherWeakSym.h}. \section{A Finite Element in Both $\mathbf{H}(div)$ and $H^1$} In \cite{robust} an element for both Darcy and Stokes types of flow was introduced. The element is defined as: \[ \VV(T) = \{ \vv \in \P^2_3 \ : \ \div \vv \in \P_0, \ (\vv\cdot\nn_e) |_e \in \P_1 \ \forall e \in E(T) \}, \] where $T$ is a given triangle, $E(T)$ is the edges of $T$, $\nn_e$ is the normal vector on edge $e$, and $\P_k$ is the space of polynomials of degree $k$ and $\P_k^d$ the corresponding vector space. The degrees of freedom are, \begin{align*} &\int_e (\vv\cdot \nn) \tau^k \, d\tau, \quad k=0,1, &\forall e \in E(T), \\ &\int_e (\vv\cdot \tt) \, d\tau, &\forall e \in E(T). \end{align*} This element is implemented as follows (see also the PARA06 proceeding \emp{../para06/proceeding/para\_proceeding.pdf}). First we create the polynomial space, which consist of cubic vector functions, $\P^2_3$ %% BEGIN CODE FROM Robust.cpp \begin{code} Triangle triangle ex V_space = bernsteinv(2, 3, triangle, "a"); ex V_polynomial = V_space.op(0); ex V_variables = V_space.op(1); \end{code} Here \emp{V\_space} is the above mentioned list, \emp{V\_polynomial} contains the polynomial, and \emp{V\_variables} contains the variables. In the second step we first specify the constraint $\div \vv \in \P_0$: %% BEGIN CODE FROM Robust.cpp \begin{code} lst equations; ex divV = div(V); ex_ex_map b2c = pol2basisandcoeff(divV); ex_ex_it iter; // div constraints: for (iter = b2c.begin(); iter != b2c.end(); iter++) { ex basis = (*iter).first; ex coeff= (*iter).second; if ( coeff != 0 && ( basis.degree(x) > 0 || basis.degree(y) > 0 ) ) { equations.append( coeff == 0 ); } } \end{code} Here, the divergence is computed with the \emp{div} function. The divergence of a function in $\P^2_3$ is in $\P_2$. Hence, it is on the form $b_0 + b_1 x + b_2 y + b_3 x y + b_4 x^2 + b_5 y^2$. In the above code we find the coefficients $b_i$, as expressions involving the above mentioned variables $a_i$ and the corresponding polynomial basis, with the function \emp{pol2basisandcoeff}. Then we ensure that the only coefficient which is not zero is $b_0$. The next constraints $(\vv\cdot\nn_e) |_e \in \P_1$ are implemented in much of the same way as the divergence constraint. We create a loop over each edge $e$ of the triangle and multiply $\vv$ with the normal $\nn_e$. Then we substitute the expression for the edge, i.e., in mathematical notation $|_e$, into $\vv\cdot\nn$. After substituting the expression for these lines to get $(\vv\cdot\nn_e) |_e$ , we check that the remaining polynomial is in $\P_1$ in the same way as we did above. %% BEGIN CODE FROM Robust.cpp \begin{code} // constraints on edges: for (int i=1; i<= 3; i++) { Line line = triangle.line(i); symbol s("s"); lst normal_vec = normal(triangle, i); ex Vn = inner(V, normal_vec); Vn = Vn.subs(line.repr(s).op(0)) .subs(line.repr(s).op(1)); b2c = pol2basisandcoeff(Vn,s); for (iter = b2c.begin(); iter != b2c.end(); iter++){ ex basis = (*iter).first; ex coeff= (*iter).second; if ( coeff != 0 && basis.degree(s) > 1 ) { equations.append( coeff == 0 ); } } } \end{code} In the third step we specify the degrees of freedom. First, we specify the equations coming from $\int_e (\vv\cdot \nn) \tau^k, k=0,1$ on all edges. To do this we need to create a loop over all edges, and on each edge we create the space of linear Bernstein polynomials in barycentric coordinates on $e$, i.e., $\P_1(e)$. Then we create a loop over the basis functions $\tau^k$ in $\P_1(e)$ and compute the integral $\int_e (\vv\cdot \nn) \tau^k \, d\tau $. %% BEGIN CODE FROM Robust.cpp \begin{code} // dofs related to the normal on the edges for (int i=1; i<= 3; i++) { Line line = triangle.line(i); lst normal_vec = normal(triangle, i); ex P1_space = bernstein(1, line, istr("a",i)); ex P1 = P1_space.op(2); ex Vn = inner(V, normal_vec); ex basis; for (int j=0; j< P1.nops(); j++) { basis = P1.op(j); ex integrand = Vn*basis; ex dofi = line.integrate(integrand); dofs.insert(dofs.end(), lst(line.vertex(0), line.vertex(1), j)); ex eq = dofi == numeric(0); equations.append(eq); } } \end{code} Finally, the degrees of freedom $\int_e (\vv\cdot \tt) d\tau $, can be implemented in basically the same fashion as the previously described degrees of freedom To summarize, we have now specified 20 equations which is precisely the number of unknowns in $\P^2_3$. Hence, the space $\VV(T)$ is uniquely defined, what remains is simply to solve a linear system with 20 equations and 20 unknowns. The complete source code is in \emp{Robust.cpp}. \section{Finite Elements in $\mathbf{H}(curl)$ } \subsection{The Nedelec Element} In electromagnetic applications, \cite{Nedelec:1980:MFE} the family of Nedelec elements are very common. As was also the case with the Raviart-Thomas elements, $\P^n$ is not the most convenient space to define the basis functions. Instead, we will use \begin{equation} \label{nedlec:pol:space} \P_{n-1}^d + \hat{\H}^k, \end{equation} where \[ \hat{\H}^k = { \hh \in \H_k^d : \hh \cdot \xx = 0 } \] and $\H$ is the space of homogenous polynomials described in Section \ref{sec:homo:pol}. The degrees of freedom that defines the Nedelec elements are (in 2D), \begin{eqnarray} \label{nedelec:dof:1} \int_e \tt \cdot \uu p \, dx, \quad \forall p\in\P_{k-1}(e), \\ \label{nedelec:dof:2} \int_T \ \uu \cdot \pp \, dx, \quad \forall \pp\in\P^n_{k-2}(T). \end{eqnarray} \subsubsection{Software Component: The Nedelec Element} The Nedelec element class definition is similar to the previous element definitions. %% BEGIN CODE FROM Nedelec.h \begin{code} class Nedelec : public StandardFE { public: Nedelec() {} virtual ~Nedelec() {} virtual void set_order(int order); virtual void set_polygon(Polygon& p); virtual void compute_basis_functions(); virtual int nbf(); virtual GiNaC::ex N(int i); virtual GiNaC::ex dof(int i); }; \end{code} %% END CODE FROM Nedelec.h \subsubsection{The Construction of the Nedelec Element} The Nedelec element of arbitrary order in both 2D and 3D is implemented in \emp{Nedelec.cpp}. Here we will for simplicity describe how the element is implemented in 2D. We first consider the polynomial space \eqref{nedlec:pol:space}, %% BEGIN CODE FROM Nedelec.h \begin{code} // create r GiNaC::ex R_k = homogenous_polv(2,k+1, 2, "a"); GiNaC::ex R_k_x = R_k.op(0).op(0); GiNaC::ex R_k_y = R_k.op(0).op(1); // Equations that make sure that r*x = 0 GiNaC::ex rx = (R_k_x*x + R_k_y*y).expand(); ex_ex_map pol_map = pol2basisandcoeff(rx); ex_ex_it iter; for (iter = pol_map.begin(); iter != pol_map.end(); iter++) { if ((*iter).second != 0 ) { equations.append((*iter).second == 0 ); removed_dofs++; } } \end{code} %% END CODE FROM Nedelec.h The degree of freedom associated with the edges \eqref{nedelec:dof:1} are implemented as, %% BEGIN CODE FROM Nedelec.h \begin{code} GiNaC::ex dofi; // dofs related to edges for (int i=1; i<= 3; i++) { Line line = triangle.line(i); GiNaC::lst tangent_vec = tangent(triangle, i); GiNaC::ex bernstein_pol = bernstein(order, line, istr("a",i)); GiNaC::ex basis_space = bernstein_pol.op(2); GiNaC::ex pspace_t = inner(pspace, tangent_vec); GiNaC::ex basis; for (int j=0; j< basis_space.nops(); j++) { counter++; basis = basis_space.op(j); GiNaC::ex integrand = pspace_t*basis; dofi = line.integrate(integrand); dofs.insert(dofs.end(), dofi); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); } } \end{code} %% END CODE FROM Nedelec.h The degree of freedom associated with whole triangle \eqref{nedelec:dof:2} are implemented as, %% BEGIN CODE FROM Nedelec.h \begin{code} // dofs related to the whole triangle GiNaC::lst bernstein_polv; if ( order > 0) { counter++; bernstein_polv = bernsteinv(2,order-1, triangle, "a"); GiNaC::ex basis_space = bernstein_polv.op(2); for (int i=0; i< basis_space.nops(); i++) { GiNaC::lst basis = GiNaC::ex_to ( basis_space.op(i)); GiNaC::ex integrand = inner(pspace, basis); dofi = triangle.integrate(integrand); dofs.insert(dofs.end(), dofi); GiNaC::ex eq = dofi == GiNaC::numeric(0); equations.append(eq); } } \end{code} %% END CODE FROM Nedelec.h syfi-1.0.0.dfsg.orig/doc/manual/chapters/software.tex0000644000175000017500000001323611672223006022436 0ustar johannrjohannr\chapter{Software} \section{License} SyFi employs GiNaC and is therefore limited by GiNaCs license, which is the GPL-2 licence listed below. However, SyFi is usually used to generated code. The generated code is free. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Notice, however that SyFi is usually used to generate code. This code is free, but it comes without any warranty for fitness of any purpose. In the case where the GNU licence does not fit your need. Contact the authors at \emp{syfi-dev@fenics.org}. \section{Installation} \subsubsection{Dependencies} SyFi is a C++ library and therefore a C++ compiler is needed. At present the library has only been tested with the GNU C++ compiler. The \emp{configure} script is a shell script made by the tools Automake and Autoconf. Hence, you can run this script with, e.g., the GNU Bourne-again shell. Finally, SyFi relies on the C++ library GiNaC. \subsubsection{Configuration and Installation} As mention earlier, the configuration, build and installation scripts are all made by the Autoconf and Automake tools. Hence, to configure, build and install the package, simply execute the commands, \begin{code} bash >./configure bash >make bash >make install \end{code} \noindent If this does not work, it is most likely because GiNaC is not properly installed on your system. Check if you have the script \emp{ginac-config} in your path. \subsubsection{Reporting Bugs/Submitting Patches} In case, you want to contribute code, please create a patch with \emp{diff}, \begin{code} bash >diff -u -N -r SyFi SyFi-mod > SyFi--.patch \end{code} \noindent Here \emp{} should be replaced with your name and \emp{} should be replaced with the current date. The patch should be mailed to the SyFi mailing-list at \emp{syfi-dev@fenics.org}. \section{Python Support} SyFi comes with Python support. The Python module is made by using the tool SWIG \cite{www:swig}. In addition, one should also install Swiginac \cite{www:swiginac}, which is a Python interface to GiNaC created by using SWIG. More about the usage of the Python interface can be found in Section \ref{sec:python}. \section{Examples and Tests} A series of tests are located in the subdir \emp{tests}, these test serve as unit test and document the features of SyFi as described in this tutorial. If the tests are simple we use the function \emp{EQUAL\_OR\_DIE}, an example is (see also \emp{simple\_test.cpp} \begin{code} symbol x("x"); ex f = x*x; ex intf = integral(x,0,1,f); intf = eval_integ(intf); EQUAL_OR_DIE(integral1, "1/3"); \end{code} When the tests or computed expressions are bigger we typically store the expressions in a GiNaC archive (\emp{.gar} files) and compare the archive with a previously created and verified archive. The following code demostrates how the basis functions and degrees of freedom of a first order Lagrangian element is computed, stored in an archive and then compared with the previously verified basis functions and degrees of freedom. \begin{code} int order = 1; ReferenceTriangle triangle; LagrangeFE fe(triangle, order); // regression test archive ar; for (int i=0; i< fe.nbf(); i++) { ar.archive_ex(fe.N(i) , istr("N",i).c_str()); ar.archive_ex(fe.dof(i) , istr("D",i).c_str()); } ofstream vfile("fe_ex1.gar.v"); vfile << ar; vfile.close(); if(!compare_archives("fe_ex1.gar.v", "fe_ex1.gar.r")) { cerr << "Failure!" << endl; return -1; } \end{code} All examples described in this tutorial are also implemented as tests in the \emp{tests} subdir. \section{GiNaC Tools} \subsection{The symbol factory} In GiNaC, the identity of a symbol is not defined by its name, but by an internal number. Because of this, the code \begin{code} ex a = symbol("x"); ex b = symbol("x"); ex c = a-b; \end{code} does not yield 0 in c, since a and b refer to different symbols. To solve this we have implemented a simple symbol factory, so we can refer to variables by name without passing the symbol objects around everywhere. The user can ask if a symbol exists, or get numbered symbols and vectors or matrices of numbered symbols in a convenient way. \begin{code} ex x1 = get_symbol("x"); ex x2 = get_symbol("x"); assert( is_zero(x1-x2) ); ex u = get_symbolic_vector(3, "u"); ex A = get_symbolic_matrix(3, 3, "A"); ex c = isymb("c", 2); assert( symbol_exists("c2") ); \end{code} \subsection{Symbols for spatial variables} Certain operations like the differential operators diff and grad needs to know certain symbols to operate correctly. The spatial variables x,y,z and t are particularly important, and because of this we have a shortcut to these variables. Operations like grad also need to know the number of spatial dimensions, often abbreviated nsd in SyFi. Therefore, a call to initSyFi(nsd) must be made before one can use these operators. It is safe to call initSyFi more than once. The spatial symbols x,y,z,t can also be retrieved from the symbol factory. \begin{code} initSyFi(3); int space_dim = SyFi::nsd; ex x = SyFi::x; ex y = SyFi::y; ex z = SyFi::z; ex t = SyFi::t; // or: ex x = get_symbol("x"); \end{code} %\section{Notes on Style} syfi-1.0.0.dfsg.orig/doc/manual/chapters/code_generation.tex0000644000175000017500000002605011672223006023727 0ustar johannrjohannr\chapter{Code Generation} \label{sec:code:gen} In this section we will describe some matrix factories created for the PyCC project~\cite{www:pycc}, which have been made by using SyFi, GiNaC and Swiginac. At present, we have written ca. 1500 lines of Python code using SyFi, Swiginac etc., which have generated roughly 60 000 lines of C++ code for the computation (of various variants) of the mass matrix, the stiffness matrix, the convection matrix and the divergence matrix using Lagrangian elements of order 1-5 in 2D and 1-3 in 3D. Furthermore, the generated C++ code is efficient, since everything except the geometry mapping can be computed exactly. Notice also that although only Lagrangian elements have been used so far, most of the Python code that generated the C++ code is completely element independent. In addition to the generated C++ code we have also written about 1500 lines of code which loops over the cells of a Dolfin mesh ~\cite{www:dolfin} such that global matrices are made. We have create two matrix factories. These are implemented in \emp{MatrixFactory} and \emp{MatrixFactory\_highorder}. There are three differences between these two factories. The first difference is that \emp{MatrixFactory} employs the numbering of degrees of freedom in the Dolfin mesh. Therefore, this \emp{MatrixFactory} is limited to linear Lagrangian elements. On the other hand, \emp{MatrixFactory\_highorder} uses \emp{DofT}, described in Section \ref{sec:dof}, which works for general elements. The second difference is that in \emp{MatrixFactory} the integration is performed on a global element with global basis functions, e.g., for the stiffness matrix, \begin{equation} \label{stiffness:global} A_{ij} = \int_T \nabla N_i \nabla N_j dx. \end{equation} In \emp{MatrixFactory\_highorder}, the integration is performed on the reference element with a geometry tensor $G$ (the Jacobian of the geometry mapping) and $D = \det(G)$, \begin{equation} \label{stiffness:reference} A_{ij} = \int_{\hat{T}} (G^{-T} \nabla \hat{N}_i)\cdot (G^{-T} \nabla \hat{N}_j) D \, dx . \end{equation} which is the typical way to do it in finite element codes. At present, we favor \eqref{stiffness:reference} to \eqref{stiffness:global} simply because it produces much smaller expressions and therefore faster code. However, the large expressions in \eqref{stiffness:global} typically involve subexpressions repeated many times. Hence, it should be possible to postprocess these expressions to create smaller expressions and faster code. However, we have not done this yet. Finally, the third difference is that \emp{MatrixFactory\_highorder} works for the \emp{FastMatSparse} matrix in PyCC, the Epetra matrix in Trilinos \cite{www:trilinos} and for STL maps of type \emp{map,double>}. \section{Basic Tools} We will illustrate the code generation by considering what was done for the mass matrix in \emp{MatrixFactory\_highorder}. The entries of a mass matrix are: \[ M_{kl} = \int_T N_k N_l \, dx = \int_{\hat{T}} \hat{N}_i \hat{N}_j D \, dx, , \] where $T$ is the global polygon, $N_k$ and $N_l$ are the $k$'th and $l$'th global basis functions, respectively, $\hat{T}$ is the reference polygon, $\hat{N}_i$ and $\hat{N}_j$ are the $i$'th and $j$'th basis functions on the reference polygon corresponding to $k$ and $l$, respectively, and $D$ is the determinant of the Jacobian of the geometry mapping. The following code shows how this can be done (see also \emp{code\_gen.py}): %% BEGIN CODE FROM code_gen.py \begin{code} def create_A_string_mass(fe): A_str = " double A[%d][%d];\\n "%(fe.nbf(), fe.nbf()) domain = fe.get_polygon() # loop over all N(i) for i in range(0,fe.nbf()): # loop over all N(j) for j in range(0,fe.nbf()): # compute the integrand N(i)*N(j) integrand = fe.N(i).eval()*fe.N(j).eval() # integrate over the domain Aij = domain.integrate(toex(integrand)) # generate C string and append the string to the rest A_str += " A[%d][%d]=(%s)*D;\\n "% (i,j,Aij.eval().evalf().printc()) \end{code} %% END CODE FROM code_gen.py \noindent The following output is produced, when using linear element on a 2D triangle (see also \emp{matrix\_factory\_mass\_2D.cc}, which also contains code for higher order Lagrangian elements), %% BEGIN CODE FROM matrix_factory_mass_2D.cc \begin{code} double A[3][3]; A[0][0]=(8.3333333333333329e-02)*D; A[0][1]=(4.1666666666666664e-02)*D; A[0][2]=(4.1666666666666664e-02)*D; A[1][0]=(4.1666666666666664e-02)*D; A[1][1]=(8.3333333333333329e-02)*D; A[1][2]=(4.1666666666666664e-02)*D; A[2][0]=(4.1666666666666664e-02)*D; A[2][1]=(4.1666666666666664e-02)*D; A[2][2]=(8.3333333333333329e-02)*D; \end{code} %% END CODE FROM matrix_factory_mass_2D.cc Hence, this is the mass element matrix on the reference element multiplied with $D$. In addition to computing the element matrix we also need to computed the global degrees of freedom and generate a C function. We will not go into details on this, but recommend the reader to have a look in \emp{code\_gen.py}. The complete function for the computation of the element matrix, in the case of linear Lagrangian elements, and the insertion of the element matrix in the global matrix can be found in \emp{matrix\_factory\_mass\_2D.cc} is: %% BEGIN CODE FROM matrix_factory_mass_2D.cc {\footnotesize \begin{code} void matrix_factory_mass_2D_order1 (map,double>& matrix, DofT& dof, int element, double pp0[2], double pp1[2], double pp2[2]){ // geometry related stuff double x0 = pp0[0]; double y0 = pp0[1]; double x1 = pp1[0]; double y1 = pp1[1]; double x2 = pp2[0]; double y2 = pp2[1]; double G00 = x1 - x0; double G01 = x2 - x0; double G10 = y1 - y0; double G11 = y2 - y0; double D = fabs(G00*G11-G01*G10); // inserting local dofs in the global dof handler (dof) int iidof[3]; double dof1[2]; dof1[0]=x0; dof1[1]=y0; Ptv pdof1(2,dof1); iidof[0] = dof.insert_dof(element,1,pdof1); double dof2[2]; dof2[0]=G01+x0; dof2[1]=y0+G11; Ptv pdof2(2,dof2); iidof[1] = dof.insert_dof(element,2,pdof2); double dof3[2]; dof3[0]=G00+x0; dof3[1]=G10+y0; Ptv pdof3(2,dof3); iidof[2] = dof.insert_dof(element,3,pdof3); // compute the element matrix double A[3][3]; A[0][0]=(8.3333333333333329e-02)*D; A[0][1]=(4.1666666666666664e-02)*D; A[0][2]=(4.1666666666666664e-02)*D; A[1][0]=(4.1666666666666664e-02)*D; A[1][1]=(8.3333333333333329e-02)*D; A[1][2]=(4.1666666666666664e-02)*D; A[2][0]=(4.1666666666666664e-02)*D; A[2][1]=(4.1666666666666664e-02)*D; A[2][2]=(8.3333333333333329e-02)*D; // insert element matrix into global matrix int nbf = 3; pair index; for (int i=0; i< nbf; i++) { index.first = iidof[i]; for (int j=0; j< nbf; j++) { index.second = iidof[j]; matrix[index] += A[i][j]; } } } \end{code} } %% END CODE FROM matrix_factory_mass_2D.cc Finally, we show how the above function is used in PyCC to compute the mass matrix on a Dolfin mesh (see also \emp{MatrixFactory\_highorder.cpp}) %% BEGIN CODE FROM MatrixFactory_highorder.cpp {\footnotesize \begin{code} void MapMatrixFactory:: computeMassMatrix(){ int e = -1; if (mesh->numSpaceDim() == 2) { double p0[2]; double p1[2]; double p2[2]; for (CellIterator cell(*mesh); !cell.end(); ++cell) { e++; // Obtain vertices from Dolfin mesh Vertex& v0 = (*cell).vertex(0); Vertex& v1 = (*cell).vertex(1); Vertex& v2 = (*cell).vertex(2); // Create double arrays with the data from the vertices p0[0] = v0.coord().x; p0[1] = v0.coord().y; p1[0] = v1.coord().x; p1[1] = v1.coord().y; p2[0] = v2.coord().x; p2[1] = v2.coord().y; switch(order1) { case 1 : matrix_factory_mass_2D_order1(*matrix,*idof,e,p0,p1,p2); break; case 2 : matrix_factory_mass_2D_order2(*matrix,*idof,e,p0,p1,p2); break; case 3 : matrix_factory_mass_2D_order3(*matrix,*idof,e,p0,p1,p2); break; case 4 : matrix_factory_mass_2D_order4(*matrix,*idof,e,p0,p1,p2); break; case 5 : matrix_factory_mass_2D_order5(*matrix,*idof,e,p0,p1,p2); break; } } } } \end{code} } %% END CODE FROM MatrixFactory_highorder.cpp Notice that this code works for Lagrangian elements of order 1-5 in 2D. %\chapter{The Finite Element Method: The Poisson Problem} % \section{Mixed Problems} % \section{Stokes Problem} % \subsection{Finite Elements} % \subsection{Software Components} % % % % \section{Mixed Poisson} % \subsection{\Hdiv approximation} % \subsection{Finite Elements} % \subsection{Software Components} % \section{Debugging} Debugging finite element codes is often extremely hard, at least that is the authors' experience. This has been one of the reasons why we have chosen to employ a symbolic math engine behind the curtain in the first place. One of the advantages of SyFi is that one obtain explicit symbolic expressions for all the basis functions (and its derivatives). Another good thing is that one can create global finite elements, that is finite elements that are not defined on reference geometries, and perform integration and differentiation on their geometries. For instance, when we created the divergence matrix factory we initially had a mysterious bug which took us several hours to find. To locate the bug, we computed the divergence element matrix on a global element with the vertices $\xx_0 = (0.2,0.2)$, $\xx_1 = (0.4,0.2)$, and $\xx_2 = (0.1,0.3)$, and compared it with the divergence element matrix on the reference element with the corresponding geometry tensor. To do this, we wrote the following code (see also \emp{main\_syfi.cpp}): %% BEGIN CODE FROM main_syfi.cpp \begin{code} // create global triangle lst p0(0.2, 0.2); lst p1(0.4, 0.2); lst p2(0.1, 0.3); Triangle triangle(p0,p1,p2); // create vector element for v on the global triangle VectorLagrangeFE v_fe; v_fe.set_size(2); v_fe.set_order(vorder); v_fe.set_polygon(triangle); v_fe.compute_basis_functions(); // create scalar element for p on the global triangle LagrangeFE p_fe; p_fe.set_order(1); p_fe.set_polygon(triangle); p_fe.compute_basis_functions(); // compute global element matrix map, ex> A; pair index; for (int i=0; i< p_fe.nbf(); i++) { index.first = i; for (int j=0; j< v_fe.nbf(); j++) { index.second= j; ex divV= p_fe.N(i)*div(v_fe.N(j)); ex Aij = triangle.integrate(divV); A[index] = Aij; } } \end{code} %% END CODE FROM main_syfi.cpp The element matrix created by this code was then printed out and compared with the element matrix computed by the matrix factory on the same polygon (see \emp{dolfin\_main.cpp}). By comparing each entry of the two matrices we quickly found the (uninteresting) bug. Hence, in out experience it is extremely valuable to have the concrete basis functions etc. on global element, and being able to work with them both with a pen and a paper and the computer, to reveal what is going on. syfi-1.0.0.dfsg.orig/doc/manual/chapters/introduction.tex0000644000175000017500000001423011672223006023320 0ustar johannrjohannr\chapter{Introduction} \emph{The reader should be aware that this manual is not quite up to date. Discrepancies between this manual and the current source code is to be expected, but the general concepts should stay the same.} The finite element package SyFi is a C++ library built on top of the symbolic math library GiNaC \cite{www:ginac}. The name SyFi stands for Symbolic Finite elements. The package provides polygonal domains, polynomial spaces, and degrees of freedom as symbolic expressions that are easily manipulated. This makes it easy to define and use finite elements. The SyFi Form Compiler (SFC) allows the use of the symbolic expressions for finite elements from SyFi to compile efficient C++ code. All the test examples described in this tutorial can be found in the directory \emp{tests}. The reader is of course encouraged to run the examples along with the reading. Before we start to describe SyFi, we need to briefly review the basic concepts in GiNaC. GiNaC is an open source C++ library for symbolic mathematics, which has a strong support for polynomials. The basic structure in GiNaC is an \emp{ex}, which may contain either a number, a symbol, a function, a list of expressions, etc. (see \emp{simple.cpp}): %% BEGIN CODE FROM simple.h \begin{code} ex pi = 3.14; ex x = symbol("x"); ex f = cos(x); ex list = lst(pi,x,f); \end{code} %% END CODE FROM simple.h \noindent Hence, \emp{ex} is a quite general class, and it is the cornerstone of GiNaC. It has a lot of functionality, for instance differentiation and integration (see \emp{simple2.cpp}), %% BEGIN CODE FROM simple2.h \begin{code} // initialization (f = x^2 + y^2) ex f = x*x + y*y; // differentiation (dfdx = df/dx = 2x) ex dfdx = f.diff(x,1); // integration (intf=1/3+y^2, integral of f(x,y) on x=[0,1]) ex intf = integral(x,0,1,f); \end{code} %% END CODE FROM simple2.h GiNaC also has a structure for lists of expressions, \emp{lst}, with the function \emp{nops()} which returns the size of the list, and \emp{operator [int i]} or the function \emp{op(int i)} which returns the $i$'th element. We recommend the reader to glance through the GiNaC documentation before proceeding with this tutorial. GiNaC provides all the basic tools for manipulation of polynomials, such as differentiation and integration with respect to one variable. Our goal with the SyFi package is to employ GiNaC, but also to provide higher level constructs such as differentiation with respect to several variables (e.g., $\nabla$), integration of functions over polygonal domains, and polynomial spaces. All of which are basic ingredients in the finite element method. Our motivation behind this project is threefold. First, we wish to make advanced finite element methods more readily available. We want to do this by implementing a variety of finite elements and functions for computing element matrices. Second, in our experience developing and debugging codes for finite element methods is hard. Having the basis functions and the weak form as symbolic expressions, and being able to manipulate them may be extremely valuable. For instance, being able to differentiate the weak form to compute the Jacobian in the case of a nonlinear PDE, eliminates a lot of handwriting and coding. Third, having the symbolic expressions and employing GiNaCs tools for code generation, we are able to write efficient and directly compilable C++ code for the computation of element matrices etc. To try to motivate the reader, we also show an example where we compute the element matrix for the weak form of the Poisson equation, i.e., \[ A_{ij} = \int_T \nabla N_i \cdot \nabla N_j \, dx . \] We remark that the following example is an attempt to make an appetizer. All concepts will be carefully described during the tutorial. %% BEGIN CODE FROM check_poisson.h {\footnotesize \begin{code} void compute_element_matrix(Polygon& T, int order) { std::map, ex> A; // matrix of expression std::pair index; // index in matrix LagrangeFE fe; // Lagrange element (any order) fe.set_order(order); // set the order fe.set_polygon(domain); // set the polygon fe.compute_basis_functions(); // compute the basis functions for (int i=0; i< fe.nbf(); i++) { index.first = i; for (int j=0; j< fe.nbf(); j++) { index.second = j; ex nabla = inner(grad(fe.N(i)), // compute integrands grad(fe.N(j))); ex Aij = T.integrate(nabla); // compute weak form A[index] = Aij; // update element matrix } } } \end{code} } %% END CODE FROM check_poisson.h \noindent In the above example, everything is computed symbolically. Even the polygon may be an abstract polygon, e.g., specified as a triangle with vertices $\xx_0$, $\xx_1$, and $\xx_2$, where the vertices are symbols and not concrete points. Notice also, that we usually use STL containers to store our datastructure. This leads to the somewhat unfamiliar notation \emp{A[index]} instead of \emp{A[i,j]}. There are quite a few other projects that are similar in various respects to SyFi. We will not give a comprehensive description of these projects, only mention the projects such that the readers can look them up by themselves. Within the FEniCS~\cite{FEniCS} project there are two Python projects: FIAT~\cite{FIAT} and FFC~\cite{FFC}. FIAT is a Python module for defining finite elements while FFC generates C++ code based on a high--level Python description of variational forms. The DSEL project~\cite{DSEL} is a project which employs high--level C++ programming techniques such as expression templates and meta-programming for defining variational forms, performing automatic differentiation, interpolation and more. Sundance~\cite{sundance} is a C++ library with a powerful symbolic engine which supports automatic generation of discrete system for a given variational form. Analysa~\cite{analysa}, GetDP~\cite{getdp}, and FreeFem++~\cite{FreeFem} define domain-specific languages for finite element computations. Finally, we have to warn the reader: This project is still within its initial phase. syfi-1.0.0.dfsg.orig/doc/manual/chapters/fem.tex0000644000175000017500000011767311672223006021365 0ustar johannrjohannr\chapter{A Finite Element} \section{Basic Concepts} To keep the abstractions clear we briefly review the general definition of a finite element, see e.g., Brenner and Scott \cite{BrennerScott} or Ciarlet \cite{Ciarlet}. \begin{definition}[A Finite Element] \label{def:finite:element} A finite element consists of, \begin{enumerate} \item A polygonal domain, $T$. \item A polynomial space, $V$. \item A set of degrees of freedom (linear forms), $L_i : V \rightarrow \R $, for $i=1,\ldots,n$, where $n=\dim(V)$, that determines $V$ uniquely. \end{enumerate} \end{definition} Furthermore, to determine a basis in $V$, $\{N_i\}_{i=1}^{n}$, we form the linear system of equations, \begin{equation} \label{dofdelta} L_i(N_j) = \delta_{ij}, \end{equation} and solve it. \begin{example}[Linear Lagrangian element on the reference triangle] In this example we describe how the linear Lagrangian element is defined on the reference triangle. Let $T$ be the unit triangle with vertices $(0,0)$, $(1,0)$, and $(0,1)$. Furthermore, the polynomial space $V$ consists of linear polynomials, i.e., polynomials on the form $ N(x,y) = a + b x + c y$. The degrees of freedom for a linear Lagrangian element are simply the pointvalues at the vertices, $\xx_i$, $L_i(N_j) = N_j(\xx_i)$. The degrees of freedom and \eqref{dofdelta} determined $a_j$, $b_j$, and $c_j$ for each basis function $N_j$. For instance $N_1$, which is on the form $a_1 + b_1 x + c_1 y$, is determined by, \[ L_i(N_1) = N_1(\xx_i) = \delta_{i1}, \] or written out as a system of linear equations, \[ \left[ \begin{array}{ccc} 1 & 0 & 0 \\ 1 & 1 & 0 \\ 1 & 0 & 1 \\ \end{array} \right] \left[ \begin{array}{c} a_1 \\ b_1 \\ c_1 \\ \end{array} \right] = \left[ \begin{array}{c} 1 \\ 0 \\ 0 \\ \end{array} \right] \] Hence, \[ N_1 = 1 - x - y . \] The functions $N_2$ and $N_3$ can be determined similarly. \end{example} \noindent In the next sections we will go detailed through polygons, polynomial spaces and degrees of freedom, and the corresponding software components. \section{Polygons} In the finite element method we need the concept of simple polygons to define integration, polynomial spaces etc. The basic polygons are lines, triangles, tetrahedra, and orthogonal rectangles and boxes. These basic components will be briefly described in this section. \subsection{Line} A line segment, L, between two points $\xx_0 = [x_0, y_0, z_0]$ and $\xx_1 = [x_1, y_1, z_1]$ in 3D is defined as, see also Figure \ref{fig:line}, \begin{eqnarray} \label{line:repr:x} x &=& x_0 + a\, t, \\ \label{line:repr:y} y &=& y_0 + b\, t, \\ \label{line:repr:z} z &=& z_0 + c\, t, \\ \label{line:repr:t} t &\in& [0,1], \end{eqnarray} where $a = x_1 - x_0$, $b = y_1 - y_0$, and $c = z_1 - z_0 $. Integration of a function $f(x,y,z)$ along the line segment $L$ is performed by substitution, \begin{equation} \int_L f(x,y,z) \, dx \, dy \, dz = \int_0^1 f(x(t), y(t), z(t)) \, D \,dt, \end{equation} where $D = \sqrt{a^2 + b^2 + c^2}$. \begin{figure} \begin{center} \label{fig:line} \caption{A line.} \input{figs/line.xfig.eepicemu} \end{center} \end{figure} \subsubsection{Software Component: Line} The class \emp{Line} implements a general line. It is defined as follows (see \emp{Polygon.h}): %% BEGIN CODE FROM Polygon.h \begin{code} class Line : public Polygon { ex a_; ex b_; public: Line() {} Line(ex x0, ex x1, // x0_ and x1_ are points string subscript = ""); ~Line(){} virtual int no_vertices(); virtual ex vertex(int i); virtual ex repr(ex t); virtual string str(); virtual ex integrate(ex f); }; \end{code} %% END CODE FROM Polygon.h \noindent Most of the functions in this class are self-explanatory. However, the function \emp{repr} deserves special attention. The function \emp{repr} returns the mathematical definition of a line. To be precise, this function returns a list of expressions (\emp{lst}), where the items are the items in \eqref{line:repr:x}-\eqref{line:repr:t} (see also the example below). \noindent The basic usage of a line is as follows (see \emp{line\_ex1.cpp}), %% BEGIN CODE FROM line_ex1.cpp \begin{code} ex p0 = lst(0.0,0.0,0.0); ex p1 = lst(1.0,1.0,1.0); Line line(p0,p1); // show usage of repr symbol t("t"); ex l_repr = line.repr(t); cout <<"l.repr "<, ex> A; std::pair index; LagrangeFE fe; fe.set_order(order); fe.set_polygon(T); fe.compute_basis_functions(); for (int i=0; i< fe.nbf(); i++) { index.first = i; for (int j=0; j< fe.nbf(); j++) { index.second = j; ex nabla = inner(grad(fe.N(i)), grad(fe.N(j))); ex Aij = T.integrate(nabla); A[index] = Aij; } } \end{code} %% END CODE FROM fe_ex2.cp \noindent Here, we have used the class \emp{LagrangeFE}, which is a subclass of \emp{FE}, that implements Lagrangian elements of arbitrary order. The construction of this element is described later in Section \ref{Lagrangian:element}. \section{Degrees of Freedom} \label{sec:dof} As we have seen earlier, for each element $e$, we have a local set of degrees of freedom ${L_i^e}$, which in general are linear forms on the polynomial space. Degrees of freedom and linear forms are quite general concepts, but the reader not familiar with this general definition can think of them for instance as nodal values at vertices, i.e., \[ L_i(v) = v(\xx_i) . \] Another example is the integral of $v$ over an edge (or a face), $e_i$, of the polygon, \[ L_i(v) = \int_{e_i} v \, ds. \] The most important thing with the degrees of freedom, besides defining a basis for the polynomial space, is that they provide a mapping from the local degree of freedom, $L_i^e$, on a given element, $e$, to the global degree of freedom, $L_j$. This mapping does in turn provide the mapping between the element matrices/vectors and the global matrix/vector. Hence, we have the following mapping, \begin{equation} \label{dof:loc2glob} (e,i) \rightarrow L^e_i \rightarrow L_j \rightarrow j . \end{equation} Here $e$, $i$, and $j$ are integers, while $L^e_i$ and $L_j$ are degrees of freedom (or linear forms). Additionally, given a global degree of freedom we have a mapping to the local degrees of freedom, \begin{equation} \label{dof:glob2loc} j \rightarrow L_j \rightarrow {L^e_{i(e)}}_{e\in E(j)} \rightarrow { (e,i(e)) }_{e \in E(j)} . \end{equation} Here $E(j)$ is the set of elements sharing the degree of freedom $L_j$. \subsubsection{Software Component: Degrees of Freedom Handler} A degree of freedom, local or global, is well represented as an \emp{ex} (in fact \emp{ex} is more general than a linear form). Hence, to implement proper tools for handling the degrees of freedom, we only need to provide the mappings \eqref{dof:loc2glob} and \eqref{dof:glob2loc}. We have implemented a class \emp{Dof} which provides these mappings, %% BEGIN CODE FROM Dof.h \begin{code} class Dof { protected: int counter; // the structures loc2dof, dof2index, and doc2loc // are completely dynamic. They are all initialized // and updated by insert_dof(int e, int d, ex dof) // (int e, int i) -> ex Li map, ex> loc2dof; // (ex Lj) -> int j map dof2index; // (int j) -> ex Lj map index2dof; // (ex Lj) -> vector< pair, .. pair > map >,ex_is_less > dof2loc; public: Dof() { counter = 0; } ~Dof() {} int insert_dof(int e, int j, ex Lj); // update internal // structures // Helper functions to be used when the dofs have been set. // These do not modify the internal structure int glob_dof(int e, int j); int glob_dof(ex Lj); ex glob_dof(int j); int size(); vector > glob2loc(int j); void clear(); }; \end{code} %% END CODE FROM Dof.h \noindent Here, the function \emp{int insert\_dof(int e, int i, ex Li)} creates the various mappings between the local dof $L^e_i$, in element $e$, and the global dof $L_j$. This is the only function for initializing the mappings. After the mappings have been initialized, they can be used as follows, \begin{itemize} \item \emp{int glob\_dof(int e, int i)} is the mapping $(e,i) \rightarrow j$, \item \emp{int glob\_dof(ex Lj)} is the mapping $L_j \rightarrow j$, \item \emp{ex glob\_dof(int j)} is the mapping $j \rightarrow L_j$, \item \emp{vector > glob2loc(int j)} is the mapping $j\rightarrow { (e,i(e)) }$. \end{itemize} \noindent The following code shows how to make two Lagrangian elements, implemented by the class \emp{LagrangeFE} (The description of \emp{LagrangeFE} is postponed until Section \emp{sec:fem:examples}), assign their local degrees of freedom to the global set of degrees of freedom in \emp{Dof}, and print out the local degrees of freedom associated with each global degree of freedom (see also \emp{dof\_ex.cpp}): %% BEGIN CODE FROM dof_ex.h \begin{code} Dof dof; Triangle t1(lst(0,0), lst(1,0), lst(0,1)); Triangle t2(lst(1,1), lst(1,0), lst(0,1)); // Create a finite element and corresponding // degrees of freedom on the first triangle int order = 2; LagrangeFE fe; fe.set_order(order); fe.set_polygon(t1); fe.compute_basis_functions(); for (int i=0; i< fe.nbf(); i++) { cout <<"fe.dof("< class DofT { protected: bool create_index2dof, create_dof2loc; int counter; // the structures loc2dof, dof2index, and doc2loc are // completely dynamic. They are all initialized and // updated by insert_dof(int e, int i, ex Li). // (int e, int i) -> int j map, int> loc2dof; // (ex Lj) -> int j map dof2index; typename map:: iterator iter; // (int j) -> ex Lj map index2dof; // (ex j) -> vector< pair, .. pair > map > > dof2loc; public: DofT(bool create_index2dof_ = false, bool create_dof2loc_ = false) { counter = -1; create_index2dof = create_index2dof_; create_dof2loc = create_dof2loc; } ~DofT() {} int insert_dof(int e, int i, D Li); // update internal // structures // Helper functions to be used when the dofs have been set. // These do not modify the internal structure. int glob_dof(int e, int i); int glob_dof(D Lj); D glob_dof(int j); int size(); vector > glob2loc(int j); void clear(); }; \end{code} %% END CODE FROM DofT.h The typical way to represent most common degrees of freedom is as points. Hence, we have implemented a simple point class \emp{Ptv} and its comparison function. The header file (see also \emp{Ptv.h}) is as follows: %% BEGIN CODE FROM Ptv.h \begin{code} class Ptv { private: int dim; double* v; static double tol; public: Ptv(int size_); Ptv(int size_, double* v_); Ptv(const Ptv& p); Ptv(); virtual ~Ptv(); const int size() const; const double& operator [] (int i) const; double& operator [] (int i); Ptv& operator = (const Ptv& p); bool is_less(const Ptv& p) const; }; struct Ptv_is_less : public std::binary_function { bool operator() (const Ptv &lh, const Ptv &rh) const { return lh.is_less(rh); } }; std::ostream & operator<< ( std::ostream& os, const Ptv& p); \end{code} %% END CODE FROM Ptv.h The \emp{Ptv} class simply contain an array of doubles with variable size. The comparison function should check whether a point $x\in \R^n$ is less than $y \in \R^m$, which is not necessarily obvious how to do. For instance, which is the smallest of $x_1 = (1,0) \ \in \ \R^2$, $x_2 = (0,1) \ \in \R^2$ and $x_3 = (0,0,1) \ \in \R^3$ ? There are many possible ways to compare points. The convention we have chosen so far is to first check the size of the points. Hence, $x Ptvs; public: OrderedPtvSet(); OrderedPtvSet(const Ptv& p0, const Ptv& p1); OrderedPtvSet(const Ptv& p0, const Ptv& p1, const Ptv& p2); OrderedPtvSet(const Ptv& p0, const Ptv& p1, const Ptv& p2, const Ptv& p3); virtual ~OrderedPtvSet(); void append(const Ptv& p); int size() const; const Ptv& operator [] (int i) const; Ptv& operator [] (int i); OrderedPtvSet& operator = (const OrderedPtvSet& p); bool less(const OrderedPtvSet& s) const; }; \end{code} %% END CODE FROM OrderedPtvSet.h syfi-1.0.0.dfsg.orig/doc/manual/fenicsmanual.cls0000644000175000017500000000634511672223006021424 0ustar johannrjohannr% Copyright (C) 2005 Anders Logg. % Licensed under the GNU GPL Version 2. % % First added: 2004-09-03 % Last changed: 2005-09-30 % % LaTeX document class for FEniCS manuals. %--- Set up class ---- \ProvidesClass{fenicsmanual}[2005/09/03 FEniCS manual] \NeedsTeXFormat{LaTeX2e} \LoadClass[12pt,twoside]{book} %--- Load packages --- \RequirePackage{graphicx} \RequirePackage{psfrag} \RequirePackage{fancyhdr} \RequirePackage{fancybox} \RequirePackage{fancyvrb} \RequirePackage{sectsty} \RequirePackage{amsmath} \RequirePackage{amssymb} \RequirePackage{makeidx} \RequirePackage{url} \RequirePackage[latin1]{inputenc} \RequirePackage[colorlinks]{hyperref} %--- Misc options --- \setlength{\parindent}{0pt} \setlength{\parskip}{12pt} \allsectionsfont{\sffamily} \makeindex %--- Remove header and footer from blank pages --- \let\origdoublepage\cleardoublepage \newcommand{\clearemptydoublepage}{% \clearpage {\pagestyle{empty}\origdoublepage}% } \let\cleardoublepage\clearemptydoublepage %--- Print index at end of document --- \AtEndDocument{\cleardoublepage\printindex} %--- Variables --- \newcommand{\@fenicstitle}{} \newcommand{\fenicstitle}[1]{\renewcommand{\@fenicstitle}{#1}} \newcommand{\@fenicsauthor}{} \newcommand{\fenicsauthor}[1]{\renewcommand{\@fenicsauthor}{#1}} \newcommand{\@fenicsimage}{\vspace{8cm}} \newcommand{\fenicsimage}[1]{\renewcommand{\@fenicsimage}{ \begin{center} \includegraphics[height=8cm]{#1} \end{center}}} \newcommand{\@fenicspackage}{} \newcommand{\@fenicspackagett}{} \newcommand{\fenicspackage}[2]{\renewcommand{\@fenicspackage}{#1}\renewcommand{\@fenicspackagett}{#2}} \newcommand{\package}{\@fenicspackage} \newcommand{\packagett}{\@fenicspackagett} %--- Commands --- \renewcommand{\maketitle}{ \lhead{\textsf{\textbf{\@fenicstitle}}} \rhead{\textsf{\@fenicsauthor}} \pagestyle{fancy} \renewcommand{\footrulewidth}{2pt} \renewcommand{\headrulewidth}{2pt} \thispagestyle{empty} \Large\textsf{\textbf{\@fenicstitle}} \\ \vspace{-0.5cm} \hrule height 2pt \hfill\large\textsf{\today} \vspace{3cm} \@fenicsimage \vfill\large\textsf{\textbf{\@fenicsauthor}} \\ \hrule height 2pt \hfill\large\texttt{www.fenics.org} \newpage \null\vfill \normalsize Visit \texttt{http://www.fenics.org/} for the latest version of this manual. \\ Send comments and suggestions to \texttt{\@fenicspackagett{}-dev@fenics.org}. \thispagestyle{empty} \cleardoublepage \tableofcontents} \newcommand{\fenics}{\textbf{\textsf{\normalsize{FE}\Large{ni}\normalsize{CS}}}} \newcommand{\dolfin}{\textbf{\textsf{DOLFIN}}} \newcommand{\ffc}{\textbf{\textsf{FFC}}} \newcommand{\fiat}{\textbf{\textsf{FIAT}}} \newcommand{\fixme}[1]{\ \\ \begin{tabular}{||p{\textwidth}||}\hline\rm\textbf{FIXME:}\rm #1 \\ \hline\end{tabular} \\} \newcommand{\devnote}[1]{$\blacktriangleright$ \emph{Developer's note:} #1} %--- Environments --- \DefineVerbatimEnvironment{code}{Verbatim}{frame=single,rulecolor=\color{blue}} \DefineVerbatimEnvironment{macrocode}{Verbatim}{commandchars=\\\{\},frame=single,rulecolor=\color{blue}} %--- Macros --- \newcommand{\dx}{\, \mathrm{d}x} \newcommand{\dX}{\, \mathrm{d}X} \newcommand{\ds}{\, \mathrm{d}s} \newcommand{\dS}{\, \mathrm{d}S} \newcommand{\R}{\mathbb{R}} syfi-1.0.0.dfsg.orig/doc/manual/ttname.sty0000644000175000017500000000276111672223006020303 0ustar johannrjohannr% A package for typesetting long names (of files, e-mail addresses, % lisp-functions, etc) while allowing breaking (at `/', `.', `-', % etc). % % Based on a similar package by Donald Arsenau (asnd@erich.triumf.ca) % and Eric Eide (eeide@jaguar.cs.utah.edu). % Load style only once. \@ifundefined{ttemail}{}{\endinput} % Introduce another language, one without any hyphenation patterns: \newlanguage \ttname@lang % First, define the simple \ttname: \DeclareRobustCommand{\ttname}[1]{{\ttfamily \language\ttname@lang \def \-{\discretionary{\textrm{-}}{}{}}% #1}} % Then define \ttfilename which allows breaking after `/': \DeclareRobustCommand{\ttfilename}[1]{{\ttfamily \language\ttname@lang \@tempcnta = \hyphenchar\font \hyphenchar\font = `/ {\def \-{\discretionary{\textrm{-}}{}{}}% \def \nb/{\mbox{/}}% \@ifnextchar/{\nb}{}#1}% \hyphenchar\font = \@tempcnta}} % Then define \ttemail which allows breaking after `.': \DeclareRobustCommand{\ttemail}[1]{{\ttfamily \language\ttname@lang \@tempcnta = \hyphenchar\font \hyphenchar\font = `. {\def \-{\discretionary{\textrm{-}}{}{}}% \def \nb.{\mbox{.}}% \@ifnextchar.{\nb}{}#1}% \hyphenchar\font = \@tempcnta}} % Then define \ttlispname which allows breaking after `-': \DeclareRobustCommand{\ttlispname}[1]{{\ttfamily \language\ttname@lang \@tempcnta = \hyphenchar\font \hyphenchar\font = `- {\def \-{\discretionary{\textrm{-}}{}{}}% \def \nb-{\mbox{-}}% \@ifnextchar-{\nb}{}#1}% \hyphenchar\font = \@tempcnta}} syfi-1.0.0.dfsg.orig/etc/0000755000175000017500000000000011674103626015004 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/etc/maketarball.sh0000755000175000017500000000061111672223006017611 0ustar johannrjohannr#!/bin/sh SYFI_VERSION=0.6.2 rm -f syfi-$SYFI_VERSION.tar.gz PPWD=$PWD cd .. rm dorsal_build scons -c cd demo python cleanall.py cd .. cd .. cp -r fenics-syfi syfi-$SYFI_VERSION files=`find syfi-$SYFI_VERSION -type f| grep -v bzr` #echo $files tar -cf syfi-$SYFI_VERSION.tar $files gzip syfi-$SYFI_VERSION.tar ls -s syfi-$SYFI_VERSION.tar.gz cp syfi-$SYFI_VERSION.tar.gz $PPWD syfi-1.0.0.dfsg.orig/etc/syfi-install0000644000175000017500000000437211672223006017344 0ustar johannrjohannr#!/bin/bash echo "Example script for installing syfi." echo "Notice that the versions of SWIG, CLN, GiNaC, swiginac, mercurial are" echo "not necessarily the newest" # default installation path, modify PREFIX # if it is not appropriate PREFIX=$HOME/local # set some enviroment variables. # .bashrc must be modified accordingly afterwards export PATH=$PREFIX/bin:$PATH export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PREFIX/lib VERSION=`python -c 'import sys; print sys.version[:3]'` export PYTHONPATH=$PYTHONPATH:$PREFIX/lib:$PREFIX/lib/python$VERSION/site-packages mkdir -p $PREFIX/src cd $PREFIX/src #SWIG lwp-download http://prdownloads.sourceforge.net/swig/swig-1.3.31.tar.gz tar xzvf swig-1.3.31.tar.gz cd swig-1.3.31 ./configure --prefix=$PREFIX make make install cd .. # CLN lwp-download ftp://ftpthep.physik.uni-mainz.de/pub/gnu/cln-1.1.13.tar.bz2 bunzip2 cln-1.1.13.tar.bz2 tar xvf cln-1.1.13.tar cd cln-1.1.13 ./configure --prefix=$PREFIX make make install cd .. # GiNaC lwp-download http://www.ginac.de/ginac-1.3.7.tar.bz2 bunzip2 ginac-1.3.7.tar.bz2 tar xvf ginac-1.3.7.tar cd ginac-1.3.7 ./configure --prefix=$PREFIX make make install cd .. # swiginac lwp-download http://download.berlios.de/swiginac/swiginac-0.9.5.tgz gunzip swiginac-0.9.5.tgz tar xvf swiginac-0.9.5.tar cd swiginac-0.9.5 python setup.py build python setup.py install --prefix=$PREFIX cd .. # mercurial lwp-download http://www.selenic.com/mercurial/release/mercurial-0.9.3.tar.gz tar -xzf mercurial-0.9.3.tar.gz cd mercurial-0.9.3 python setup.py install --prefix=$PREFIX cd .. # SyFi hg clone http://www.fenics.org/hg/syfi cd syfi ./configure --prefix=$PREFIX make make install cd .. echo "" echo "" echo 'Put the following lines in your .bashrc file (if you do not have them already).' echo "" echo "" echo "PREFIX=$PREFIX" echo 'export PATH=\$PATH:$PREFIX/bin' echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PREFIX/lib' echo "VERSION=`python -c 'import sys; print sys.version[:3]'`" echo 'export PYTHONPATH=$PYTHONPATH:$PREFIX/lib:$PREFIX/lib/python$VERSION/site-packages' echo "" echo "" echo "" echo "" echo "Example script for installing syfi." echo "Notice that the versions of SWIG, CLN, GiNaC, swiginac, mercurial are" echo "not necessarily the newest" syfi-1.0.0.dfsg.orig/INSTALL0000644000175000017500000000205211672223006015252 0ustar johannrjohannr(The installation notes are currently very brief. In case of problems contact the authors through syfi@lists.launchpad.net.) SyFi depends on: - GiNaC (http://www.ginac.de) - swiginac (http://swiginac.berlios.de) - UFC (http://www.launchpad.net/ufc) - UFL (http://www.launchpad.net/ufl) Building and installing SyFi is done with CMake. Installation is typically done as cmake . make install or cmake . -DCMAKE_INSTALL_PREFIX:PATH= make install You might need to source the syfi.conf file eg. put the following in your .bashrc file . /syfi.conf If you wish to install locally in the current source tree, run ./cmake.local If this does not work, GiNaC is probably not properly installed on you system. Check if you have the pkg-config file 'ginac.pc' somewhere in your pkg-config path (PKG_CONFIG_PATH). Check also that the libraries listed by 'pkg-config --libs ginac' really exist. On Debian systems we have experienced that these libraries do not exist, or are in packages that the ginac packages do not depend on. syfi-1.0.0.dfsg.orig/ChangeLog0000644000175000017500000000207411672223006015777 0ustar johannrjohannr0.1 The initial release of SyFi. Only Lagrangian elements and element matrices for the Poisson problem has been implemented (in a nice way) so far. 0.2 Added Bernstein polynomials, the Crouzeix-Raviart element, the Raviart-Thomas element, Python support and the computation of the Jacobian of a nonlinear convection diffusion problem based on symbolic differentiation. 0.3 Added Legendre polynomials, the Hermite and the Nedelec elements. In addition some code generation examples for DOLFIN and Diffpack are made. 0.4 Added Nedelec element of second kind and Arnold-Falk-Winther element with weakly imposed symmetry in 3D. The code generation tools have been made UFC compliant. 0.5 First release of SFC, the SyFi Form Compiler. 0.5.1 Updated with many examples demostrating the use of SFC and DOLFIN. 0.6.0 Rewritten SFC based on UFL. 0.6.1 Updated SFC for UFL 0.3. Updated SyFi for GiNaC 1.5. Some cleanup in demo directory. 1.0-beta Change build system to CMake. Updated SyFi for GiNaC 1.6. Updated SFC for UFL 1.0-beta2 Updated for DOLFIN 1.0-beta. 1.0 Some bug fixes. syfi-1.0.0.dfsg.orig/cmake/0000755000175000017500000000000011674103625015310 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/cmake/modules/0000755000175000017500000000000011674103625016760 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/cmake/modules/FindNumPy.cmake0000644000175000017500000000123611672223006021627 0ustar johannrjohannr# - Try to find NumPy # Once done this will define # # NUMPY_FOUND - system has NumPy # NUMPY_INCLUDE_DIRS - include directories for NumPy if (NOT NUMPY_INCLUDE_DIRS) execute_process( COMMAND ${PYTHON_EXECUTABLE} -c "import numpy; print numpy.get_include()" OUTPUT_VARIABLE NUMPY_INCLUDE_DIR OUTPUT_STRIP_TRAILING_WHITESPACE) if (EXISTS ${NUMPY_INCLUDE_DIR}) set(NUMPY_INCLUDE_DIRS ${NUMPY_INCLUDE_DIR} CACHE STRING "NumPy include path") mark_as_advanced(NUMPY_INCLUDE_DIRS) endif() endif() # Standard package handling include(FindPackageHandleStandardArgs) find_package_handle_standard_args(NumPy DEFAULT_MSG NUMPY_INCLUDE_DIRS) syfi-1.0.0.dfsg.orig/cmake/modules/FindCLN.cmake0000644000175000017500000000142411672223006021172 0ustar johannrjohannr# - Try to find CLN # Once done this will define # # CLN_FOUND - System has CLN # CLN_INCLUDE_DIRS - The CLN include directories # CLN_LIBRARIES - The libraries needed to use CLN # CLN_VERSION - CLN version string (MAJOR.MINOR.MICRO) include(FindPkgConfig) pkg_check_modules(PC_CLN cln) set(CLN_VERSION ${PC_CLN_VERSION}) find_path(CLN_INCLUDE_DIR cln/cln.h HINTS ${PC_CLN_INCLUDEDIR} ${CLN_DIR}/include $ENV{CLN_DIR}/include) find_library(CLN_LIBRARY cln HINTS ${PC_CLN_LIBDIR} ${CLN_DIR}/lib $ENV{CLN_DIR}/lib) set(CLN_LIBRARIES ${CLN_LIBRARY}) set(CLN_INCLUDE_DIRS ${CLN_INCLUDE_DIR}) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(CLN DEFAULT_MSG CLN_LIBRARY CLN_INCLUDE_DIR) mark_as_advanced(CLN_INCLUDE_DIR CLN_LIBRARY) syfi-1.0.0.dfsg.orig/cmake/modules/FindGiNaC.cmake0000644000175000017500000000172011672223006021476 0ustar johannrjohannr# - Try to find GiNaC # Once done this will define # # GINAC_FOUND - System has GiNaC # GINAC_INCLUDE_DIRS - The GiNaC include directories # GINAC_LIBRARIES - The libraries needed to use GiNaC # GINAC_VERSION - GiNaC version string (MAJOR.MINOR.MICRO) include(FindPkgConfig) pkg_check_modules(PC_GINAC ginac>=1.4.1) set(GINAC_VERSION ${PC_GINAC_VERSION}) find_path(GINAC_INCLUDE_DIR ginac/ginac.h HINTS ${PC_GINAC_INCLUDEDIR} ${GINAC_DIR}/include $ENV{GINAC_DIR}/include) find_library(GINAC_LIBRARY ginac HINTS ${PC_GINAC_LIBDIR} ${GINAC_DIR}/lib $ENV{GINAC_DIR}/lib) # GiNaC requires CLN if (NOT CLN_FOUND) find_package(CLN REQUIRED) endif() set(GINAC_LIBRARIES ${GINAC_LIBRARY} ${CLN_LIBRARIES}) set(GINAC_INCLUDE_DIRS ${GINAC_INCLUDE_DIR} ${CLN_INCLUDE_DIRS}) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(GiNaC DEFAULT_MSG GINAC_LIBRARY GINAC_INCLUDE_DIR) mark_as_advanced(GINAC_INCLUDE_DIR GINAC_LIBRARY) syfi-1.0.0.dfsg.orig/cmake/templates/0000755000175000017500000000000011674103625017306 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/cmake/templates/syfi-config.cmake.in0000644000175000017500000000165211672223006023130 0ustar johannrjohannr# - Build details for SyFi # # This file has been automatically generated. # Package found set(SYFI_FOUND TRUE) # Compilers set(SYFI_CXX_COMPILER "@CMAKE_CXX_COMPILER@") # Compiler defintions set(SYFI_CXX_DEFINITIONS "@SYFI_CXX_DEFINITIONS@") # Compiler flags set(SYFI_CXX_FLAGS "@CMAKE_CXX_FLAGS@") # Include directories set(SYFI_INCLUDE_DIRS "@CMAKE_INSTALL_PREFIX@/@SYFI_INCLUDE_DIR@") # Third party include directories set(SYFI_3RD_PARTY_INCLUDE_DIRS "@SYFI_INCLUDE_DIRECTORIES@") # SyFi library set(SYFI_LIBRARIES "@SYFI_LIBRARY@") # Third-party library directories set(SYIF_3RD_PARTY_LIBRARY_DIR "@SYFI_TARGET_LINK_LIBRARIES_DIRS@") # Third-party libraries set(SYFI_3RD_PARTY_LIBRARIES "@SYFI_TARGET_LINK_LIBRARIES@") # Version set(SYFI_VERSION_MAJOR "@SYFILIB_MAJOR_VERSION@") set(SYFI_VERSION_MINOR "@SYFILIB_MINOR_VERSION@") set(SYFI_VERSION_MICRO "@SYFILIB_MICRO_VERSION@") set(SYFI_VERSION_STR "@SYFILIB_VERSION@") syfi-1.0.0.dfsg.orig/cmake/templates/cmake_uninstall.cmake.in0000644000175000017500000000143111672223006024057 0ustar johannrjohannrif (NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") message(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") endif() file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) string(REGEX REPLACE "\n" ";" files "${files}") foreach (file ${files}) message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") if (EXISTS "$ENV{DESTDIR}${file}") exec_program( "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" OUTPUT_VARIABLE rm_out RETURN_VALUE rm_retval ) if (NOT "${rm_retval}" STREQUAL 0) message(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") endif() else() message(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") endif() endforeach() syfi-1.0.0.dfsg.orig/cmake/templates/syfi.pc.in0000644000175000017500000000102511672223006021201 0ustar johannrjohannr# pkg-config configuration for SyFi prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=@CMAKE_INSTALL_PREFIX@ libdir=${exec_prefix}/@SYFI_LIB_DIR@ includedir=${prefix}/@SYFI_INCLIDE_DIR@ compiler=@CMAKE_CXX_COMPILER@ definitions=@SYFI_DEFINITIONS@ swigcflags=@PYTHON_CPPFLAGS@ extlibs=@SYFI_EXT_LIBS@ Name: SyFi Description: C++ library for symbolic calculations Version: @SYFILIB_VERSION@ Requires: @PKG_REQUIRES@ Conflicts: Libs: @PKG_LINKFLAGS@ -L${libdir} -lsyfi Cflags: @PKG_CXXFLAGS@ @PKG_DEFINITIONS@ -I${includedir} @PKG_INCLUDES@ syfi-1.0.0.dfsg.orig/cmake/templates/syfi.conf.in0000644000175000017500000000075511672223006021535 0ustar johannrjohannr# Helper file for setting non-default SyFi environment variables # Common Unix variables export LD_LIBRARY_PATH=@CMAKE_INSTALL_PREFIX@/@SYFI_LIB_DIR@:$LD_LIBRARY_PATH export PATH=@CMAKE_INSTALL_PREFIX@/@SYFI_BIN_DIR@:$PATH export PKG_CONFIG_PATH=@CMAKE_INSTALL_PREFIX@/@SYFI_PKGCONFIG_DIR@:$PKG_CONFIG_PATH export PYTHONPATH=@CMAKE_INSTALL_PREFIX@/@SYFI_PYTHON_MODULE_DIR@:@CMAKE_INSTALL_PREFIX@/@SYFI_PYTHON_EXT_DIR@:$PYTHONPATH export MANPATH=@CMAKE_INSTALL_PREFIX@/@SYFI_MAN_DIR@:$MANPATH syfi-1.0.0.dfsg.orig/demo/0000755000175000017500000000000011674103625015154 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/NonLinearPoisson/0000755000175000017500000000000011674103625020414 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/NonLinearPoisson/python/0000755000175000017500000000000011672223006021727 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/NonLinearPoisson/python/Makefile0000644000175000017500000000011111672223006023360 0ustar johannrjohannr default: echo "do nothing" clean: rm -rf *.pvd *.vtu sfc_jit* syfi-1.0.0.dfsg.orig/demo/NonLinearPoisson/python/manufactored_solution.py0000644000175000017500000000023311672223006026703 0ustar johannrjohannr from swiginac import * x,y = symbol('x'), symbol('y') P = 4 u = (0.5*(x + y))**2 F = u**(P-1) - diff(diff(u,x),x) - diff(diff(u,x),x) print F syfi-1.0.0.dfsg.orig/demo/NonLinearPoisson/python/demo.py0000644000175000017500000000215711672223006023232 0ustar johannrjohannr from dolfin import * parameters["form_compiler"]["name"]= "sfc" class Source(Expression): def eval(self, values, x): values[0] = -1.0+((0.5)*x[0]+(0.5)*x[1])**6 class Solution(Expression): def eval(self, values, x): values[0] = (0.5*(x[0] + x[1]))**2 class DirichletBoundary(SubDomain): def inside(self, x, on_boundary): return bool(on_boundary) # Geometry N = 80 P = 4 mesh = UnitSquare(N, N) # Function spaces X = FunctionSpace(mesh, 'CG', 1) # Unknown function U = Function(X) # Basis functions v = TestFunction(X) u = TrialFunction(X) # Source term source = Source(element=X.ufl_element()) # Forms L = inner(grad(U),grad(U))*dx + U**P*dx + source*U*dx F = derivative(L, U, v) # Analytical solution solution = Solution(element=X.ufl_element()) sol = project(solution, X) # Solve nonlinear variational problem dirichlet_boundary = DirichletBoundary() bc = DirichletBC(X, solution, dirichlet_boundary) solve(F==0, U, bc) # Write solution to file file = File("u.pvd") file << U file = File("u0.pvd") file << sol # Plot and wait plot(sol) plot(U) interactive() syfi-1.0.0.dfsg.orig/demo/BratuProblem/0000755000175000017500000000000011674103625017552 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/BratuProblem/python/0000755000175000017500000000000011672223006021065 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/BratuProblem/python/Makefile0000644000175000017500000000010711672223006022523 0ustar johannrjohannr default: echo "do nothing" clean: rm -r *.pvd *.vtu sfc_jit* syfi-1.0.0.dfsg.orig/demo/BratuProblem/python/demo.py0000644000175000017500000000221111672223006022357 0ustar johannrjohannr import math import ufl from dolfin import * parameters["form_compiler"]["name"]= "sfc" class Source(Expression): def eval(self, values, x): values[0] = -2 + math.exp(x[0]*x[0]) class Solution(Expression): def eval(self, values, x): values[0] = x[0]*x[0] class DirichletBoundary(SubDomain): def inside(self, x, on_boundary): return bool(on_boundary) # Geometry N = 80 mesh = UnitSquare(N,N) # Function spaces X = FunctionSpace(mesh, 'CG', 1) # Unknown function U = Function(X) # Basis functions v = TestFunction(X) u = TrialFunction(X) # Source term source = Source(element=X.ufl_element()) s = Function(X) s.interpolate(source) # Forms F = inner(grad(U),grad(v))*dx + exp(U)*v*dx J = derivative(F, U, u) # Analytical solution solution = Solution(element=X.ufl_element()) sol = project(solution, X) # Solve nonlinear variational problem dirichlet_boundary = DirichletBoundary() bc = DirichletBC(X, sol, dirichlet_boundary) solve(F == 0, U, bc, J=J) # Write solution to file file = File("u.pvd") file << U file = File("sol.pvd") file << sol # Plot and wait plot(sol) plot(U) interactive() syfi-1.0.0.dfsg.orig/demo/ProjectionVector/0000755000175000017500000000000011674103625020453 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/ProjectionVector/cpp/0000755000175000017500000000000011672223006021227 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/ProjectionVector/cpp/Makefile0000644000175000017500000000076611672223006022700 0ustar johannrjohannr FLAGS=--integration-method=symbolic #FLAGS=--integration-method=quadrature --integration-order=3 FORM=ProjectionVector demo: main.cpp build/generated_code/$(FORM).h cd build && cmake .. && $(MAKE) build/generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -obuild/generated_code $(FORM).ufl bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl view: run paraview --data=build/u.pvd & run: demo cd build && rm -f *.pvd *.vtu && ./demo debug: demo cd build && gdb ./demo clean: rm -rf build syfi-1.0.0.dfsg.orig/demo/ProjectionVector/cpp/main.cpp0000644000175000017500000000370211672223006022661 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-01-01 // Last changed: 2009-04-01 // // This demo program computes a projection of a function // between two vector finite element spaces. #include #include "generated_code/ProjectionVector.h" using namespace dolfin; using namespace ProjectionVector; class Weight: public Expression { public: void eval(Array& values, const Array& x) const { values[0] = 1.0; } }; class Source: public Expression { public: Source() : Expression(2) {} void eval(Array& values, const Array& x) const { double dx = x[0] - 0.5; double dy = x[1] - 0.5; //values[0] = cos(2*DOLFIN_PI*dx*dx); //values[1] = cos(2*DOLFIN_PI*dy*dy); values[0] = x[0] + x[1]; values[1] = x[0] + x[1]; } }; int main(int argc, char ** argv) { UnitSquare mesh(10, 10); BilinearForm::TrialSpace V(mesh); CoefficientSpace_c C(mesh); CoefficientSpace_f F(mesh); Weight c; Source f; Function u(V); BilinearForm a(V, V); LinearForm L(V); a.c = c; L.f = f; solve(a == L, u); // Interpolate f onto the discrete space V Source f2; Function fi(V); fi.interpolate(f2); File u_file("u.pvd"); u_file << u; File f_file("f.pvd"); f_file << fi; //plot(u); return 0; } syfi-1.0.0.dfsg.orig/demo/ProjectionVector/cpp/ProjectionVector.ufl0000644000175000017500000000044711672223006025243 0ustar johannrjohannr polygon = "triangle" element0 = FiniteElement("DG", polygon, 0) element1 = VectorElement("CG", polygon, 1) element2 = VectorElement("CG", polygon, 2) u = TrialFunction(element1) v = TestFunction(element1) c = Coefficient(element0) f = Coefficient(element2) a = c*dot(u,v)*dx L = dot(f,v)*dx syfi-1.0.0.dfsg.orig/demo/ProjectionVector/cpp/CMakeLists.txt0000644000175000017500000000205111672223006023765 0ustar johannrjohannr# Require CMake 2.8 cmake_minimum_required(VERSION 2.8) project(ProjectionVector) # Get DOLFIN configuration data find_package(dolfin) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Add special DOLFIN compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DOLFIN_CXX_FLAGS}") # Generated code is not this robust (yet) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable -g") # Include directories include_directories( ${DOLFIN_INCLUDE_DIRS} ${DOLFIN_3RD_PARTY_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) # Executable file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/*.cpp) file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/generated_code/*.cpp) add_executable(demo ${SOURCES} ${GENERATED_SOURCES}) # Target libraries target_link_libraries(demo ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) syfi-1.0.0.dfsg.orig/demo/README0000644000175000017500000000070311672223006016026 0ustar johannrjohannr This directory contains a host of demo applications using SFC together with DOLFIN to solve partial differential equations. Feel free to send additional demos to syfi-dev@fenics.org. Note that this version of SFC depends on UFL 0.3, which does not work with PyDOLFIN from FEniCS 2009-04. Use DOLFIN in C++ or try the development version of PyDOLFIN. Some of the demos are only available in Python and require the development version of PyDOLFIN. syfi-1.0.0.dfsg.orig/demo/cleanall.py0000755000175000017500000000075311672223006017303 0ustar johannrjohannr#!/usr/bin/env python import os from glob import glob for f in glob("*"): if os.path.isdir(f): os.chdir(f) if os.path.isdir("cpp"): os.chdir("cpp") if os.path.exists("Makefile"): os.system("make clean") os.chdir("..") if os.path.isdir("python"): os.chdir("python") if os.path.exists("Makefile"): os.system("make clean") os.chdir("..") os.chdir("..") syfi-1.0.0.dfsg.orig/demo/Projection/0000755000175000017500000000000011674103625017270 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/Projection/cpp/0000755000175000017500000000000011672223006020044 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/Projection/cpp/Makefile0000644000175000017500000000104511672223006021504 0ustar johannrjohannr FLAGS=--integration-method=symbolic #FLAGS=--integration-method=quadrature --integration-order=3 FORM=Projection demo: main.cpp build/generated_code/$(FORM).h cd build && cmake .. && $(MAKE) build/generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -obuild/generated_code $(FORM).ufl generate: clean demo bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl view: run paraview --data=build/u.pvd & paraview --data=build/f.pvd & run: demo cd build && rm -f *.pvd *.vtu && ./demo debug: demo cd build && gdb ./demo clean: rm -rf build syfi-1.0.0.dfsg.orig/demo/Projection/cpp/main.cpp0000644000175000017500000000370511672223006021501 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-01-01 // Last changed: 2009-04-01 // // This demo program computes a projection of a function // between two scalar finite element spaces. #include #include "generated_code/Projection.h" using namespace dolfin; using namespace Projection; class Weight: public Expression { public: void eval(Array& values, const Array& x) const { values[0] = 1.0; } }; class Source: public Expression { public: void eval(Array& values, const Array& x) const { double dx = x[0] - 0.5; double dy = x[1] - 0.5; //values[0] = 500.0*exp(-(dx*dx + dy*dy)/0.02); values[0] = x[0] + x[1]; } }; int main(int argc, char ** argv) { // Geometry UnitSquare mesh(10, 10); // Function spaces BilinearForm::TrialSpace V(mesh); CoefficientSpace_c C(mesh); CoefficientSpace_f F(mesh); // Functions Weight c; Source f; Function u(V); // Forms BilinearForm a(V, V); LinearForm L(V); // Form coefficients a.c = c; L.f = f; solve(a == L, u); // Interpolate f onto the discrete space V Source f2; Function fi(V); fi.interpolate(f2); // Write u and f to file File u_file("u.pvd"); u_file << u; File f_file("f.pvd"); f_file << fi; //plot(u); return 0; } syfi-1.0.0.dfsg.orig/demo/Projection/cpp/Projection.ufl0000644000175000017500000000041711672223006022672 0ustar johannrjohannr cell = triangle element0 = FiniteElement("DG", cell, 0) element1 = FiniteElement("CG", cell, 1) element2 = FiniteElement("CG", cell, 2) u = TrialFunction(element1) v = TestFunction(element1) c = Coefficient(element0) f = Coefficient(element2) a = c*u*v*dx L = f*v*dx syfi-1.0.0.dfsg.orig/demo/Projection/cpp/CMakeLists.txt0000644000175000017500000000204311672223006022603 0ustar johannrjohannr# Require CMake 2.8 cmake_minimum_required(VERSION 2.8) project(Projection) # Get DOLFIN configuration data find_package(dolfin) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Add special DOLFIN compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DOLFIN_CXX_FLAGS}") # Generated code is not this robust (yet) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable -g") # Include directories include_directories( ${DOLFIN_INCLUDE_DIRS} ${DOLFIN_3RD_PARTY_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) # Executable file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/*.cpp) file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/generated_code/*.cpp) add_executable(demo ${SOURCES} ${GENERATED_SOURCES}) # Target libraries target_link_libraries(demo ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) syfi-1.0.0.dfsg.orig/demo/HyperElasticitySVK/0000755000175000017500000000000011674103625020662 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/HyperElasticitySVK/cpp/0000755000175000017500000000000011672223006021436 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/HyperElasticitySVK/cpp/Makefile0000644000175000017500000000103311672223006023073 0ustar johannrjohannr #FLAGS=--integration-method=symbolic FLAGS=--integration-method=quadrature --integration-order=5 --safemode=0 FORM=HyperElasticitySVK demo: main.cpp build/generated_code/$(FORM).h cd build && cmake .. && $(MAKE) build/generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -obuild/generated_code $(FORM).ufl generate: clean demo bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl view: run paraview --data=build/u.pvd & run: demo cd build && rm -f *.pvd *.vtu && ./demo debug: demo cd build && gdb ./demo clean: rm -rf build syfi-1.0.0.dfsg.orig/demo/HyperElasticitySVK/cpp/main.cpp0000644000175000017500000001230511672223006023067 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-01-01 // Last changed: 2009-04-01 // // This demo program solves a hyperelasticity problem // in 3D using the Saint-Vernant-Kirchoff model. #include #include #include #include "generated_code/HyperElasticitySVK.h" using namespace dolfin; using namespace HyperElasticitySVK; // ---------------------------------------- Functions class BodyForce: public Expression { public: BodyForce() : Expression(3) {} void eval(Array& values, const Array& x) const { const double dx = x[0] - 0.5; const double dy = x[1] - 0.5; const double dz = x[2] - 0.5; values[0] = 0.0; values[1] = 0.0; values[2] = 0.0; } }; class BoundaryPressure: public Expression { public: void eval(Array& values, const Array& x) const { values[0] = 0.0; } }; // Dirichlet boundary condition for rotation at right end class Rotation : public Expression { public: Rotation() : Expression(3) {} void eval(Array& values, const Array& x) const { // Center of rotation double y0 = 0.5; double z0 = 0.5; // Angle of rotation (60 degrees) double theta = 0.5236*2; // New coordinates double y = y0 + (x[1] - y0)*cos(theta) - (x[2] - z0)*sin(theta); double z = z0 + (x[1] - y0)*sin(theta) + (x[2] - z0)*cos(theta); // Clamp at right end values[0] = 0.0; values[1] = y - x[1]; values[2] = z - x[2]; } }; // ---------------------------------------- Subdomains // Sub domain for clamp at left end class Left : public SubDomain { bool inside(const Array& x, bool on_boundary) const { return on_boundary && x[0] < 0.0 + DOLFIN_EPS; } }; // Sub domain for rotation at right end class Right : public SubDomain { bool inside(const Array& x, bool on_boundary) const { return on_boundary && x[0] > 1.0 - DOLFIN_EPS; } }; class EntireBoundary: public SubDomain { bool inside(const Array& x, bool on_boundary) const { return on_boundary; } }; // ---------------------------------------- Main program int main(int argc, char**argv) { // Geometry info("Mesh"); unsigned n = 12; UnitCube mesh(n, n, n); // Function spaces info("Function spaces"); Form_a_F::TestSpace V(mesh); CoefficientSpace_sigma_0 P(mesh); CoefficientSpace_mu C(mesh); // Coefficient functions info("Functions"); // Displacement at current and two previous timesteps Function u(V); u.vector().zero(); // External forces BodyForce g; BoundaryPressure sigma_0; // BCs Constant uleft(3, 0.0, 0.0); Rotation uright; // Material parameters Constant mu(4.0); Constant lamda(6.0); // Forms info("Forms"); Form_a_f f(mesh); f.u = u; f.mu = mu; f.lamda = lamda; Form_a_F L(V); L.u = u; L.g = g; L.sigma_0 = sigma_0; L.mu = mu; L.lamda = lamda; Form_a_J a(V, V); a.u = u; a.sigma_0 = sigma_0; a.mu = mu; a.lamda = lamda; // Setup boundary conditions info("Boundary conditions"); // Dirichlet boundary conditions Left left_boundary; DirichletBC leftbc(V, uleft, left_boundary); Right right_boundary; DirichletBC rightbc(V, uright, right_boundary); std::vector bcs; bcs.push_back(&leftbc); bcs.push_back(&rightbc); // Create variational problem (a, L, bcs, cell_domains, exterior_facet_domains, interior_facet_domains, nonlinear) // Solve! info("Solving"); solve(a==L, u, bcs); // Postprocessing info("Postprocessing"); // Compute internal energy for u and exact solution double f_value = assemble(f); // Compute F at u for verification Vector F; assemble(F, L); // Print limits of u cout << endl; cout << "==========================" << endl; cout << "Norm of u_h = " << u.vector().norm("l2") << endl; cout << "Min of u_h = " << u.vector().min() << endl; cout << "Max of u_h = " << u.vector().max() << endl; cout << "==========================" << endl; cout << endl; cout << "==========================" << endl; cout << "f(u) = " << f_value << endl; cout << "Norm of F = " << F.norm("l2") << endl; cout << "Min of F = " << F.min() << endl; cout << "Max of F = " << F.max() << endl; cout << "==========================" << endl; // Write displacement to file info("Writing to file"); File ufile("u.pvd"); ufile << u; //plot(w); info("Done!"); } syfi-1.0.0.dfsg.orig/demo/HyperElasticitySVK/cpp/HyperElasticitySVK.ufl0000644000175000017500000000213411672223006025654 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-12-22 -- 2009-03-16 # # Cell and its properties cell = tetrahedron d = cell.d n = cell.n x = cell.x # Elements u_element = VectorElement("CG", cell, 1) p_element = FiniteElement("CG", cell, 1) # Test and trial functions v = TestFunction(u_element) w = TrialFunction(u_element) # Displacement u = Coefficient(u_element) # External forces g = Coefficient(u_element) sigma_0 = Coefficient(p_element) # Material parameters lamda = Constant(cell) mu = Constant(cell) # Deformation gradient I = Identity(d) F = I + grad(u).T Finv = inv(F) J = det(F) # Right Cauchy-Green deformation tensor C = F.T*F # Green strain tensor E = (C-I)/2 E = variable(E) # Strain energy function psi(Q(Ef)), Saint Vernant-Kirchoff constitutive law psi = lamda/2 * tr(E)**2 + mu * tr(E*E) # First Piola-Kirchoff stress tensor P = F*diff(psi, E) # Energy functional a_f = psi*dx # Residual equation a_F = inner(P, grad(v).T)*dx \ - dot(g, v)*dx \ - dot(J*sigma_0*Finv.T*n, v)*ds # Jacobi matrix of residual equation a_J = derivative(a_F, u, w) forms = [a_f, a_F, a_J] syfi-1.0.0.dfsg.orig/demo/HyperElasticitySVK/cpp/CMakeLists.txt0000644000175000017500000000216411672223006024201 0ustar johannrjohannr# Require CMake 2.8 cmake_minimum_required(VERSION 2.8) project(HyperElasticitySVK) # Get DOLFIN configuration data find_package(dolfin) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Add special DOLFIN compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DOLFIN_CXX_FLAGS}") # Code generation is not this robust (yet) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable") # Enable no optimization set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0") # Include directories include_directories( ${DOLFIN_INCLUDE_DIRS} ${DOLFIN_3RD_PARTY_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) # Executable file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/*.cpp) file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/generated_code/*.cpp) add_executable(demo ${SOURCES} ${GENERATED_SOURCES}) # Target libraries target_link_libraries(demo ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) syfi-1.0.0.dfsg.orig/demo/HyperElasticityMooneyRivlin/0000755000175000017500000000000011674103625022651 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/HyperElasticityMooneyRivlin/cpp/0000755000175000017500000000000011672223006023425 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/HyperElasticityMooneyRivlin/cpp/Makefile0000644000175000017500000000104411672223006025064 0ustar johannrjohannr #FLAGS=--integration-method=symbolic FLAGS=--integration-method=quadrature --integration-order=5 --safemode=0 FORM=HyperElasticityMooneyRivlin demo: main.cpp build/generated_code/$(FORM).h cd build && cmake .. && $(MAKE) build/generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -obuild/generated_code $(FORM).ufl generate: clean demo bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl view: run paraview --data=build/u.pvd & run: demo cd build && rm -f *.pvd *.vtu && ./demo debug: demo cd build && gdb ./demo clean: rm -rf build syfi-1.0.0.dfsg.orig/demo/HyperElasticityMooneyRivlin/cpp/main.cpp0000644000175000017500000000615111672223006025060 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-01-01 // Last changed: 2009-04-01 // // This demo program solves a hyperelasticity problem // in 3D using the Mooney-Rivlin model. #include #include #include #include "generated_code/HyperElasticityMooneyRivlin.h" using namespace dolfin; using namespace HyperElasticityMooneyRivlin; // ---------------------------------------- Functions class Displacement: public Expression { public: Displacement() : Expression(3) {} void eval(Array& values, const Array& x) const { const double a = -0.1; const double b = 0.05; double dy = x[1]-0.5; double dz = x[2]-0.5; values[0] = x[0]*a; values[1] = dy*b; values[2] = dz*b; } }; // ---------------------------------------- Subdomains class DirichletBoundary: public SubDomain { bool inside(const Array& x, bool on_boundary) const { return on_boundary && (x[0] < DOLFIN_EPS || x[0] > 1.0-DOLFIN_EPS); //return on_boundary; } }; // ---------------------------------------- Main program int main(int argc, char**argv) { // Geometry info("Mesh"); unsigned n = 5; UnitCube mesh(n, n, n); // Function spaces info("Function spaces"); Form_a::TestSpace V(mesh); CoefficientSpace_c1 C(mesh); // Coefficient functions info("Functions"); // Displacement Function u(V); u.vector().zero(); // Material parameters Constant c1(3.0); Constant c2(3.0); Constant c3(100.0); // Dirichlet BC function Displacement ubc; // Forms info("Forms"); Form_M M(mesh); M.u = u; M.c1 = c1; M.c2 = c2; M.c3 = c3; Form_L L(V); L.u = u; L.c1 = c1; L.c2 = c2; L.c3 = c3; Form_a a(V, V); a.u = u; a.c1 = c1; a.c2 = c2; a.c3 = c3; // Setup boundary conditions info("Boundary conditions"); DirichletBoundary boundary; DirichletBC bc(V, ubc, boundary); // Compute integral of strain energy over domain, should be zero double energy = 0.0; energy = assemble(M); cout << "Energy before solve: " << energy << endl; // Solve! info("Solving"); solve(a==L, u, bc); // Compute integral of strain energy over domain energy = assemble(M); cout << "Energy after solve: " << energy << endl; // Write functions to file info("Writing to file"); File ufile("u.pvd"); ufile << u; //plot(u); info("Done!"); return 0; } syfi-1.0.0.dfsg.orig/demo/HyperElasticityMooneyRivlin/cpp/HyperElasticityMooneyRivlin.ufl0000644000175000017500000000137311672223006031636 0ustar johannrjohannr# Form arguments cell = tetrahedron element = VectorElement("CG", cell, 2) V = TestFunction(element) U = TrialFunction(element) u = Coefficient(element) c1 = Constant(cell) c2 = Constant(cell) c3 = Constant(cell) # Right Cauchy-Green strain tensor C I = Identity(cell.d) F = I + grad(u).T C = variable(F.T*F) I_C = tr(C) II_C = (I_C**2 - tr(C*C))/2 III_C = det(C) # Modified invariants J = sqrt(III_C) J23 = III_C**(-1./3.) # J**(-2./3.) Im_C = J23 * I_C IIm_C = J23 * II_C # Mooney-Rivlin constitutive law psi = c1*(Im_C-3) + c2*(IIm_C-3) + c3*(J-1)**2 # Second Piola-Kirchoff stress tensor S = 2*diff(psi, C) # First Piola-Kirchoff stress tensor P = F*S # Weak forms M = psi*dx #L = inner(P, grad(V).T)*dx L = derivative(M, u, V) a = derivative(L, u, U) syfi-1.0.0.dfsg.orig/demo/HyperElasticityMooneyRivlin/cpp/CMakeLists.txt0000644000175000017500000000217511672223006026172 0ustar johannrjohannr# Require CMake 2.8 cmake_minimum_required(VERSION 2.8) project(HyperElasticityMooneyRivlin) # Get DOLFIN configuration data find_package(dolfin) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Add special DOLFIN compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DOLFIN_CXX_FLAGS}") # Code generation is not this robust (yet) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable") # Enable no optimization set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0") # Include directories include_directories( ${DOLFIN_INCLUDE_DIRS} ${DOLFIN_3RD_PARTY_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) # Executable file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/*.cpp) file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/generated_code/*.cpp) add_executable(demo ${SOURCES} ${GENERATED_SOURCES}) # Target libraries target_link_libraries(demo ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) syfi-1.0.0.dfsg.orig/demo/makeall.py0000755000175000017500000000113711672223006017133 0ustar johannrjohannr#!/usr/bin/env python import os, time from glob import glob skiplist = ("Elements",) times = [] for f in glob("*"): if f in skiplist: continue if os.path.isdir(f): os.chdir(f) if os.path.isdir("cpp"): os.chdir("cpp") if os.path.exists("Makefile"): t = -time.time() os.system("make") t += time.time() msg = "%8.1f seconds to make %s" % (t, f) times.append(msg) os.chdir("..") os.chdir("..") print print "="*80 print "Timing:" print "\n".join(times) syfi-1.0.0.dfsg.orig/demo/NonLinearVectorPoisson/0000755000175000017500000000000011674103625021577 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/NonLinearVectorPoisson/python/0000755000175000017500000000000011672223006023112 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/NonLinearVectorPoisson/python/Makefile0000644000175000017500000000010711672223006024550 0ustar johannrjohannr default: echo "do nothing" clean: rm -r *.pvd *.vtu sfc_jit* syfi-1.0.0.dfsg.orig/demo/NonLinearVectorPoisson/python/demo.py0000644000175000017500000000204211672223006024406 0ustar johannrjohannr from dolfin import * parameters["form_compiler"]["name"]= "sfc" class BoundaryFunction(Expression): def eval(self, values, x): values[0] = (0.5*(x[0] + x[1]))**2 values[1] = (1-0.5*(x[0] + x[1]))**2 def value_shape(self): return (2,) class DirichletBoundary(SubDomain): def inside(self, x, on_boundary): return bool(on_boundary) # Geometry N = 80 P = 5 mesh = UnitSquare(N,N) # Function spaces V = VectorFunctionSpace(mesh, "CG", 1) # BoundaryFunction function U = Function(V) # Basis functions v = TestFunction(V) u = TrialFunction(V) # Forms L = inner(grad(U),grad(U))*dx + dot(U,U)**P*dx F = derivative(L, U, v) # Start vector boundary_function = BoundaryFunction(element=V.ufl_element()) x0 = project(boundary_function, V) # Solve nonlinear variational problem dirichlet_boundary = DirichletBoundary() bc = DirichletBC(V, boundary_function, dirichlet_boundary) solve(F==0, U, bc) # Write solution to file file = File("u.pvd") file << U # Plot and wait plot(U) interactive() syfi-1.0.0.dfsg.orig/demo/Poisson1D/0000755000175000017500000000000011674103625016773 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/Poisson1D/python/0000755000175000017500000000000011674103625020314 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/Poisson1D/python/Makefile0000644000175000017500000000010711672223006021744 0ustar johannrjohannr default: echo "do nothing" clean: rm -r *.pvd *.vtu sfc_jit* syfi-1.0.0.dfsg.orig/demo/Poisson1D/python/demo.py0000644000175000017500000000335711672223006021614 0ustar johannrjohannr"""This demo program solves Poisson's equation - div grad u(x) = f(x) on the unit interval with source f given by f(x) = 9*pi^2*sin(3*pi*x[0]) and boundary conditions given by u(x) = 0 for x = 0 du/dx = 0 for x = 1 """ # Copyright (C) 2007 Kristian B. Oelgaard # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2007-11-28 # Last changed: 2008-12-19 from dolfin import * parameters["form_compiler"]["name"] = "sfc" # Create mesh and function space mesh = UnitInterval(50) V = FunctionSpace(mesh, "CG", 1) # Sub domain for Dirichlet boundary condition class DirichletBoundary(SubDomain): def inside(self, x, on_boundary): return on_boundary and x[0] < DOLFIN_EPS # Define variational problem v = TestFunction(V) u = TrialFunction(V) f = Expression("9.0*pi*pi*sin(3.0*pi*x[0])") g = Expression("3.0*pi*cos(3.0*pi*x[0])") a = dot(grad(v), grad(u))*dx L = v*f*dx + v*g*ds # Define boundary condition u0 = Constant(0.0) bc = DirichletBC(V, u0, DirichletBoundary()) # Solve PDE and plot solution u = Function(V) solve(a==L, u, bc) # Save solution to file file = File("poisson.pvd") file << u # Plot solution plot(u) interactive() syfi-1.0.0.dfsg.orig/demo/Poisson1D/cpp/0000755000175000017500000000000011674103625017555 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/Poisson1D/cpp/Makefile0000644000175000017500000000077711672223006021222 0ustar johannrjohannr FLAGS=--integration-method=symbolic #FLAGS=--integration-method=quadrature --integration-order=3 FORM=Poisson1D demo: main.cpp build/generated_code/$(FORM).h cd build && cmake .. && $(MAKE) build/generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -obuild/generated_code $(FORM).ufl generate: clean demo bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl view: run paraview --data=build/u.pvd & run: demo cd build && rm -f *.pvd *.vtu && ./demo debug: demo cd && gdb ./demo clean: rm -rf build syfi-1.0.0.dfsg.orig/demo/Poisson1D/cpp/Poisson1D.ufl0000644000175000017500000000035611672223006022102 0ustar johannrjohannr cell = interval element = FiniteElement("CG", cell, 1) u = TrialFunction(element) v = TestFunction(element) c = Coefficient(element) f = Coefficient(element) g = Coefficient(element) a = c*dot(grad(u),grad(v))*dx L = -f*v*dx + g*v*ds syfi-1.0.0.dfsg.orig/demo/Poisson1D/cpp/main.cpp0000644000175000017500000000433411672223006021203 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-01-01 // Last changed: 2009-04-01 // // This demo program solves Poissons equation in 1D. #include #include "generated_code/Poisson1D.h" using namespace dolfin; using namespace Poisson1D; class Weight: public Expression { public: void eval(Array& values, const Array& x) const { values[0] = 1.0; } }; class Source: public Expression { public: void eval(Array& values, const Array& x) const { double dx = x[0] - 0.5; values[0] = 10.0; } }; class BoundarySource: public Expression { public: void eval(Array& values, const Array& x) const { values[0] = 10.0; } }; class BoundaryValue: public Expression { public: void eval(Array& values, const Array& x) const { values[0] = x[0]; } }; class EntireBoundary: public SubDomain { bool inside(const Array& x, bool on_boundary) const { return x[0] < DOLFIN_EPS || x[0] > 1.0-DOLFIN_EPS; } }; int main(int argc, char ** argv) { UnitInterval mesh(10); BilinearForm::TrialSpace V(mesh); CoefficientSpace_c C(mesh); CoefficientSpace_f F(mesh); CoefficientSpace_g G(mesh); BilinearForm a(V, V); LinearForm L(V); Weight c; Source f; BoundarySource g; BoundaryValue ubc; a.c = c; L.f = f; L.g = g; EntireBoundary boundary; DirichletBC bc(V, ubc, boundary); Function u(V); solve(a == L, u, bc); File ufile("u.pvd"); ufile << u; //plot(u); } syfi-1.0.0.dfsg.orig/demo/Poisson1D/cpp/CMakeLists.txt0000644000175000017500000000203711672223006022311 0ustar johannrjohannr# Require CMake 2.8 cmake_minimum_required(VERSION 2.8) project(Poisson1D) # Get DOLFIN configuration data find_package(dolfin) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Add special DOLFIN compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DOLFIN_CXX_FLAGS}") # Generated code is not this robust (yet) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable") # Include directories include_directories( ${DOLFIN_INCLUDE_DIRS} ${DOLFIN_3RD_PARTY_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) # Executable file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/*.cpp) file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/generated_code/*.cpp) add_executable(demo ${SOURCES} ${GENERATED_SOURCES}) # Target libraries target_link_libraries(demo ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) syfi-1.0.0.dfsg.orig/demo/Poisson2D/0000755000175000017500000000000011674103625016774 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/Poisson2D/python/0000755000175000017500000000000011674103625020315 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/Poisson2D/python/Makefile0000644000175000017500000000010711672223006021745 0ustar johannrjohannr default: echo "do nothing" clean: rm -r *.pvd *.vtu sfc_jit* syfi-1.0.0.dfsg.orig/demo/Poisson2D/python/demo.py0000644000175000017500000000353111672223006021607 0ustar johannrjohannr"""This demo program solves Poisson's equation - div grad u(x, y) = f(x, y) on the unit square with source f given by f(x, y) = 500*exp(-((x - 0.5)^2 + (y - 0.5)^2) / 0.02) and boundary conditions given by u(x, y) = 0 for x = 0 or x = 1 """ # Copyright (C) 2007-2008 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified to work with SFC by Kent-Andre Mardal. # # First added: 2007-08-16 # Last changed: 2008-12-13 from dolfin import * parameters["form_compiler"]["name"] = "sfc" # Create mesh and define function space mesh = UnitSquare(32, 32) V = FunctionSpace(mesh, "CG", 1) # Define Dirichlet boundary (x = 0 or x = 1) class DirichletBoundary(SubDomain): def inside(self, x, on_boundary): return x[0] < DOLFIN_EPS or x[0] > 1.0 - DOLFIN_EPS # Define boundary condition u0 = Constant(0.0, cell=V.cell()) bc = DirichletBC(V, u0, DirichletBoundary()) # Define variational problem v = TestFunction(V) u = TrialFunction(V) f = Function(V) f.interpolate(Expression("500.0 * exp(-(pow(x[0] - 0.5, 2) + pow(x[1] - 0.5, 2)) / 0.02)")) a = dot(grad(v), grad(u))*dx L = f*v*dx # Compute solution u = Function(V) solve(a==L, u, bc) # Save solution in VTK format file = File("poisson.pvd") file << u # Plot and wait plot(u) interactive() syfi-1.0.0.dfsg.orig/demo/Poisson2D/cpp/0000755000175000017500000000000011674103625017556 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/Poisson2D/cpp/Makefile0000644000175000017500000000100411672223006021203 0ustar johannrjohannr FLAGS=--integration-method=symbolic #FLAGS=--integration-method=quadrature --integration-order=15 FORM=Poisson demo: main.cpp build/generated_code/$(FORM).h cd build && cmake .. && $(MAKE) build/generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -obuild/generated_code $(FORM).ufl generate: clean demo bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl view: run paraview --data=build/u.pvd & run: demo cd build && rm -f *.pvd *.vtu && ./demo debug: demo cd build && gdb ./demo clean: rm -rf build syfi-1.0.0.dfsg.orig/demo/Poisson2D/cpp/main.cpp0000644000175000017500000000441011672223006021177 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-01-01 // Last changed: 2009-04-01 // // This demo program solves Poissons equation in 2D. #include #include "generated_code/Poisson.h" using namespace dolfin; using namespace Poisson; class Weight: public Expression { public: void eval(Array& values, const Array& x) const { values[0] = 1.0; } }; class Source: public Expression { public: void eval(Array& values, const Array& x) const { double dx = x[0] - 0.5; double dy = x[1] - 0.5; values[0] = 25.0*exp(-(dx*dx + dy*dy)/0.02); } }; class BoundarySource: public Expression { public: void eval(Array& values, const Array& x) const { values[0] = 10.0; } }; class BoundaryValue: public Expression { public: void eval(Array& values, const Array& x) const { values[0] = x[0] + x[1]; } }; class DirichletBoundary: public SubDomain { bool inside(const Array& x, bool on_boundary) const { return x[1] < DOLFIN_EPS || x[1] > 1.0-DOLFIN_EPS; } }; int main() { UnitSquare mesh(30,30); BilinearForm::TrialSpace V(mesh); CoefficientSpace_c C(mesh); CoefficientSpace_f F(mesh); CoefficientSpace_g G(mesh); BilinearForm a(V, V); LinearForm L(V); Weight c; Source f; BoundarySource g; BoundaryValue ubc; a.c = c; L.f = f; L.g = g; DirichletBoundary boundary; DirichletBC bc(V, ubc, boundary); Function u(V); solve(a==L, u, bc); File ufile("u.pvd"); ufile << u; //plot(u); } syfi-1.0.0.dfsg.orig/demo/Poisson2D/cpp/Poisson.ufl0000644000175000017500000000035611672223006021716 0ustar johannrjohannr cell = triangle element = FiniteElement("CG", cell, 1) u = TrialFunction(element) v = TestFunction(element) c = Coefficient(element) f = Coefficient(element) g = Coefficient(element) a = c*dot(grad(u),grad(v))*dx L = -f*v*dx + g*v*ds syfi-1.0.0.dfsg.orig/demo/Poisson2D/cpp/CMakeLists.txt0000644000175000017500000000203711672223006022312 0ustar johannrjohannr# Require CMake 2.8 cmake_minimum_required(VERSION 2.8) project(Poisson2D) # Get DOLFIN configuration data find_package(dolfin) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Add special DOLFIN compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DOLFIN_CXX_FLAGS}") # Generated code is not this robust (yet) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable") # Include directories include_directories( ${DOLFIN_INCLUDE_DIRS} ${DOLFIN_3RD_PARTY_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) # Executable file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/*.cpp) file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/generated_code/*.cpp) add_executable(demo ${SOURCES} ${GENERATED_SOURCES}) # Target libraries target_link_libraries(demo ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) syfi-1.0.0.dfsg.orig/demo/Projection1D/0000755000175000017500000000000011674103625017455 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/Projection1D/cpp/0000755000175000017500000000000011672223006020231 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/Projection1D/cpp/Projection1D.ufl0000644000175000017500000000041711672223006023244 0ustar johannrjohannr cell = interval element0 = FiniteElement("DG", cell, 0) element1 = FiniteElement("CG", cell, 1) element2 = FiniteElement("CG", cell, 2) u = TrialFunction(element1) v = TestFunction(element1) c = Coefficient(element0) f = Coefficient(element2) a = c*u*v*dx L = f*v*dx syfi-1.0.0.dfsg.orig/demo/Projection1D/cpp/Makefile0000644000175000017500000000104711672223006021673 0ustar johannrjohannr FLAGS=--integration-method=symbolic #FLAGS=--integration-method=quadrature --integration-order=9 FORM=Projection1D demo: main.cpp build/generated_code/$(FORM).h cd build && cmake .. && $(MAKE) build/generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -obuild/generated_code $(FORM).ufl generate: clean demo bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl view: run paraview --data=build/u.pvd & paraview --data=build/f.pvd & run: demo cd build && rm -f *.pvd *.vtu && ./demo debug: demo cd build && gdb ./demo clean: rm -rf build syfi-1.0.0.dfsg.orig/demo/Projection1D/cpp/main.cpp0000644000175000017500000000361611672223006021667 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-01-01 // Last changed: 2009-04-01 // // This demo program computes a projection in 1D. #include #include "generated_code/Projection1D.h" using namespace dolfin; using namespace Projection1D; class Weight: public Expression { public: void eval(Array& values, const Array& x) const { values[0] = 1.0; } }; class Source: public Expression { public: void eval(Array& values, const Array& x) const { double dx = x[0] - 0.5; values[0] = dx*dx; } }; int main() { // Geometry UnitInterval mesh(20); // Function spaces BilinearForm::TrialSpace V(mesh); CoefficientSpace_c C(mesh); CoefficientSpace_f F(mesh); // Functions Weight c; Source f; Function u(V); // Forms BilinearForm a(V, V); LinearForm L(V); // Form coefficients a.c = c; L.f = f; u = Function(V); solve(a == L, u); // Write solution to file File u_file("u.pvd"); u_file << u; // Interpolate f onto the discrete space V Source source; Function finterpolated(V); finterpolated.interpolate(source); // Write interpolated solution to file File f_file("f.pvd"); f_file << finterpolated; //plot(u); return 0; } syfi-1.0.0.dfsg.orig/demo/Projection1D/cpp/CMakeLists.txt0000644000175000017500000000204511672223006022772 0ustar johannrjohannr# Require CMake 2.8 cmake_minimum_required(VERSION 2.8) project(Projection1D) # Get DOLFIN configuration data find_package(dolfin) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Add special DOLFIN compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DOLFIN_CXX_FLAGS}") # Generated code is not this robust (yet) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable -g") # Include directories include_directories( ${DOLFIN_INCLUDE_DIRS} ${DOLFIN_3RD_PARTY_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) # Executable file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/*.cpp) file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/generated_code/*.cpp) add_executable(demo ${SOURCES} ${GENERATED_SOURCES}) # Target libraries target_link_libraries(demo ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) syfi-1.0.0.dfsg.orig/demo/data/0000755000175000017500000000000011674103625016065 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/data/cylinder.xml0000644000175000017500000151170511672223006020424 0ustar johannrjohannr syfi-1.0.0.dfsg.orig/demo/data/gear.xml.gz0000644000175000017500000166407711672223006020163 0ustar johannrjohannr‹uIgear.xmlœ½ÛŽF=nxŸ§hôýØ::qr7O0óƒ¸31à´Û˜ž~ÈoW­ÅBWoQŽàïîÿ[¥-QÉÅÃøOÿó¿ýãþ¿?ýó¿üÃ?ýùïþXÿ¦üñúóþ§¿ÿ‡?ÿ¿÷Çÿûÿú?ÿõÇÿôÿÝ¿ûÿOÿø_þáϰûÏÿòïŸÿðwü¯ÿú¯ÿýßÿíßþÿñ?þæ¿üéÏÿðŸÿåoþéŸÿß¿}þ׿ýãüwøÃøoú—ÿú‡ÿü§üÇý_ÿýO÷ÇýÓ¿þóÿó_ÿô÷ÿüOþãþþþÛßý±þ=û7mÿúÿùOÿò‡ù‡ÿmÿæZ{|ýO_ÿãŸþçþáÏÿ§ÿùw´Eúÿÿ7ÚÊØëø_Ÿÿ°´¶úÇ?üoÿ¥éÿð·åçõûç:÷Àχjîçíøs©½µñ×úqý'ùF˜]÷üFÙÊÊ|‚~ÿ|õÝú÷Ï›HéÉŒãNm4¬YF`?âu6~>ûÖ¯ŸËÞºS2\²D¾>÷çW©õ×zZÁ¡…-˜‹Ð9Ó‹èGˆ÷}€$ŽöYøó{;‘•»‹züýñ ‹mvù%©cîÔe¨óøûã¾eÑNoB¥¶ÞsÒô-Œ2×Ô…ßÛuHý¾AK+ü}i3ù ­!Þ—ÐŽŸp\·,J£Y0Ô¾eQTUð ö+{š!Þ—0ŽŸp\·8Jµ'¥ñF~ôlb ëøûã ޵/œ¥Ö9r—º—ãïOä·8JÃ6ªiö!©4ƒðyeÖ¬0ö~XÀÒXe”Š÷©ì´rîzüŒ÷m€4šv,aŽÚFê÷“wZ~¿´Ì”(öuüûÇ-ØÇ%m¥ò›r¶G×nhæ+š±–Q¿7Ó-¥¤qÆú~çwѺR§ D±7ú[w%÷ç!‡¾í?ŸRp—f·Ç·¿`@ǶÿÃ'Ô%3Aaœ££ÌÜ.@Mú÷)l-‹wá¸È£½ó0Ý·ØYä¶ÂØ·ÀXÙ&ÛôNkPHcSíXÃ(fò¤L÷ÊoPH³9"£æ×‰lE$r ÉéåCÝôûž¥öü¨w­3ºjn ’Õ<ÅÊ}(3çñ¥®}v~CÑžþ>Õ“ú;aæÌ6åSÝ»PfÒ‹ƒ8Úe¦8-C³Ÿ0øT›:j…UÒÛ0¾EÒ<ˆE‰´;’Ò¯£áçk5~†Yàù%|Kd7wŒ:vóÇRkø–Æ>ÇÆAêÊiø¡øµ Ô‚š²ÎmÀÀâwã•Ö™—Ä1ùýu@;öµÒ:~,|DÙkB«¦ûñ-Ýä¿Q¿VRJeþ~ã÷ËÖœóç'¤pî]¿ßeìÌÆ=(ýû$ÖªšSŒb8—@!,5»7÷ $A±ö8”ô;;!Œ« Á>ˆˆæ¾Ò¸[]ߢ´L´KZ¹OŠ£þ†Ô’’¥IYùÅÕf‘ÔmžÅYÛÂ66]é/X”F;|ìb«s¥<iì£A£,3þ{J·/HbïuâÊRMé”It;'P»äŸèi4q„ûa5oî,Hc³Aù5·Æ6~]÷οp ²X×ÇiøÂÑRô‚,ÚÙß6•PfêN/c5aܤÑs†ï†$6ÛwsÏ›½û[Û^ZMÖ^©ë´!‹ÅÞ|@úuÙ0§lðB®ƒ}œßÛ¿ {q™V‚¡b Y:1vøx Ô´\O"Ð…±{D+ƒçs± ³ô‘E€Éh9‰`FôH"ÀjÕÝüÉB-0ÍØàNÎ*w!ßÑÍUŒÝ$¹µÀ‹ñ{EˆA³ë©,.Û4‡&…ª(ÉmF8,/ó[úC”/n)3ˆvOŸ$³˜S%5ºÌô‰@6‹ù³€¢;)Yµ@U.ó&ðè¹f˜YhKm…O·©îô^€š1—*<ݦ½ó|½gŸ‹Dsz„àþñŠ¿­¨*Ù­5cª~(Ï´Hú@*•¦ýa¡Öݰ«UN_üu ¨Í-cšpî.iHçÔJÝ­qÀ3Äs˜âãU5õ=ÓPžööÍ7¶¦!6‘©ØQ{þ`[1ÀÖˆn*é±”4Ô§épîèl;½$lìÂBÔ¦ù/aÜß0jñêìŒÁ@ÐüÄ^¾Ã µŸ1 2¥ ÑRòûA*û;L;.0²S†­9­µ3ƒBmBJïù…ݵR‡ºž°üÒyfÿö<”¨ù];@´‘09öµÙø¢Ìô™tzBUù4ÚÏü2è •Í%?c€é¶'ºB‘šsEÚ<úbDW:êa•¨Œñ.1 £k- ÊxÌ4DÔÜ *Á¡t(Î$vf#0›æ1ÈìL»¤TÆn|¥1 IgУæ%çÈ|—îüÆ(°½ÎP¤*áu›æ¥O…Di Vy_i#ÑÓÍ£‡£c¤! GÍ”gDÙ¶fùƒz”–Ï.‹¡À3dÔt쯱VË ãëæûSë’ô2H÷Ó©Ð>}”Ç`d³*\ @ŸŸ1 HÇ*¥Œ•0Ð>]g0imƒÓrÖ§«= ÜRsÚòËP*ô nMÓçiû£v*¼ofÃkkc®ò¦ÐÁþhµóÜTÆtÛÎHb³Ÿ‘…2 làbjV=o‹éuÚ&öÔƒ½ oåŒMºË'iè[ΚþpAÎâМ²ø:1 Kíª3ßœ‘Æ i¾&É(3FÌ%ê|ÌõÈ ”©Ø…áKk~TZNÁ ‰IUÅ·¸´ä÷ƒÚt-®j=¶dÏ»RÎô†‚!2€ ·ÄZúCÀ™…®´ÐoɯºtUal¿—’¿´)š;(ÓÒ?c@™šKL˶¯>Ó—–lÑxôÖWl·–ü¥%c¤¶~*dí-.LÂdÞ<>ܾ÷£Û­ìoI˜`lÈJezÆ@Z°é¢¬cÉc,fcºÆ BnØ3Ó15„y{A˜á ìà"3ªcHÇ¢óyÚÁH—½vªÔ~$ÄÐ4ôèêŸÎ_¾+g èѱWp ¸í3Ô¨=* %÷X[óŸÂ„8³È€¡•&Ôƒñ{Ï*6Ç)}S6øB ]în¤!*!è¿-;äžrKæ°M†YÅ\ª´ˆ‚XêÛ e|Š?1y Òîs3ØÑûÔ´„]2…>i¤›q\óûE:{c ƒÊÞù£Ý9ìd`èûw¥ÅtS‘Ú•…Øf‡åâ ©þlýu (Rq'ʸ ø÷'ŒVXè³™uhçz´õUB¨bòXŽP¤¶¢@wµ›O&µ›SB@jµf‚ô Ñ5úQ¨Ú[>KªÔÿò¯O‚!(©bЦ! Igi{#iêŒÁX¾~ Ãoù’•ƨŒå›5{¡JÕôv€mÁ.–žQ°M¢2aŸ›×5Á¬ÎVñ8-âH}©!ÝÃÌõ–>ZN}{¾ 1öÈo)SêVe‘è”üÑ2‰©o†t &2éfB×ê’ÿ(R­Ašn„Ñõ¬R Yž¥ÏÖÒ,›”Р9ƒ üÈšTº2Ì`¶6riÎФýat¿“0æ4i—N®gš˜ßShÒÞ{  xpg „¡z¥÷åNBHgŒÉuDÞ™sxÆÀƒß¦® ‘k¾x«Ñsª3>,’þÖ ™‘Nˆüï¡H×ü‘^£é`åÐSɉ×- ÀD§µˆ`‡SóߣOŒÙ•_iÑbíñ@º˜¥¯+뇆>¥JºŽ«‘n²;δ’©’_iûLZ{–Ò•²­‡·^`z~ˆ¦·”t“ŽÎì^OjH÷‘n’¦…1,¦už!˜÷T™/oo”ô´2'ßdNœHÃX’Çà[¿õ1ˆü…•ðÔJмŽôÉ‚o² à{`p{æ·tr‚0¼9³ÒÓR ÂÉ…űfÉïÆ·ŒŽ6Xï/l.Sµl²Ÿ×¢´¹¾à™Ì_Ã5Ûe¤ÇÓ<x&³þè,q¦óUˆ&¯¬â…÷X`*e¶f2³“¹ËKþr¿W~E¨ñuç?b` OŽêÆXÐ8‡EL,Â^e,¯‹­ü–J»,dݦÎs•´ ìÒèe*ß3,i8®ôÒ¨c3ûWׇ N¬bP4Kk44‰E4."d²™ËÅ"Æ÷Etô`yA¶è€b¹AÔÙ.îX%ObŽõƒ+WlÔåÒLèjóâ@!›µL¨éðž+JN„7ÆeZeiñy09=@sgN¬&»x˜ LêtΑ;QÐIæÅ °Ö?|’iÌjðvíÉÏ€K4Ë"[p±ð‡ìí%W0ÚÎWz4PIÞÑ…ïǧ'J‘n&I™?°rw”<’™vô†ªûFùEÀ2=QøŽši{?È"™{‚Ÿµ!ëãÐÂمI‘fX´\•p#$Úx˜ró˜“A²ÝCàÓ ï^r·œü‘E ¡´Â7ð¼ g[pd–ús”[Cž‹ªÆŒ»™«Aj ´šWH+õ“¼›ýÈeªª¥¥æ ™#{¸É[G õÀ|»^&=’»@ÎÈ_íðMó›¬ÑÞ,Yv\d#e´J¨ô´ò¼’a1Ò0]Og°Œd»#™ªc&‚Yzûb¡‰©äæ¸0î{XÝóÊp‡;RYúæ…T¢)‰•¼ß¬FšfS-ª©PÞwÞX˜ú¤“€¶g>ü{CQ4œž\GÉžtEÃK³sY>ǦYf¯Î—,LL§Ui­ "XGؘޤ‚e­Ã8BÀÄtö2$¥Õš>™=B›×вµY$‘=7±*~±mË‚ÎOoÓx»§·“&æZ4F©=+¡UÜ`)ЕÝN¶Š³;Â:;´\°WœŽÁòz»c’• öŠ“ÝôV<ÙR·Îvqöw5í"Ô#µ°ÍVºu–#Ùk¾£.MÈ !rêìØÙò®Îb$ϣΒþ(ÎA·‰ØSMB/4¼ý…¢•>c@qŽÊ^0­o˜xg(N5S?t¯¨éÒ›Zhx[N*_]3ÿ)B ¥ú•I*åŒ婺˜;aÊÅ–B{z»0Ð1N±g‹€zcôh–11‹%.П1ça›•Ç€z÷)bŒFG ðBº·2ÃYÚH—upC:í9fràîéÛnHÇ\ÈyÇÒt5e=dþ- ÷L–<ÉËQ˜%dj¤åwƒÅH²X`Z4¿¬EªÉÐÊ|¸3Ƥ.×E5ÚÛȯcƒ<¬éÑÕÒ—ìyƒ.â®ä2N%ì9컸†½sÙò›vhxöI»µÐàŒeê¾ c×f å1 Lgí¡ž²,f81„…»´ÕóëPîigV°ô‘®Zéà‡†]S¶—-鲨~ÈyPZÚAž1 L=-(d©ùý ‘à‰äòƒ$Qm¡U–9 °«ÏP¦k“ë/cåWÁ˜ç.4ãÆb º3F{J¨˜åbP¦ÎqGŒ™>Ye€Iƒ¥!Ç3CL­JkÐu–UÓ[ riT Ų¥Œ™ðKfjT0·~ñ5¿¨ÒM¾ÒKœò«àT,Jû|…3󓇆tþ5vƒùɽ³ÿ¢ù=麹’ÉÁ&öΕõ<ó“—Æ Óyq*ßRj\g:¿)tÖ9åâ x¦YXj&KÓõ"šizý1TX©=]#à™ £21¬êà©1:0ŠÒÃo]ÓÅ ªÉ0zPÇÊ|Ø3†bG×d¾F3Ã.[¸" ›fÑÆªÊ¶Ø¬èŒUºKèŠc§"ùu@•Î:ܛԴ<cúcÓ4éMךIeT¿U†íúÕô~€qòLTÄféiñã4jcÀc©—¤1:Õ1{9øÀ'ÕΖ5'YnûïKúX8¦Hl Bê·äEsŠ|¼ã¶»^-‹=ìEa*|mcŸ1Xݹó¼ž:¿P¦­ÄXÃÌ'n ȧYÍå a:;’ïÎT§Ò Ïet8¤g ªÓö‰£}?Ø==MÓ9$ó>ÔQCF˜²K~K•a g‡ä11*}ëºvº¾J@>ÍV•I픚?–ÅuØ »î ß猱ƒˆýês!:Ÿ|³·C Í•ÞQPOæMæ…t‘ž_Q¥²·E÷.ÀiŒˆbB…O<ÈCÀ{OêÚ×n´ÑÒÂîÉ.ienãfRá‚é%5Ø¥æL§ë÷Ü“Y¢¡nDGÇqÆ`‚‰é-ªŽ~#`$HkèqÞ­†#¹§R™o꽚>ZŽ9ZsS÷§ßOƒI&SBh¥+“Ô“š ÅÜ<  ÎLgói–'ó¦_POªBªÅ^ü‘®ÁPO*»…nï‹u0¡¹VŠéì=¿ ¦3ïÎþí£HºrWÀs(?îFÀ;™æd‡C¿4¹ò"é´J)Èx4ù¼(°Nsù¬`NÖä‰ ¬ÂT/ | [ΫÀKï£kzî5WŽ"`œV‘ŽÂËÛ›¦Õ”ÓÜ¡z¹_šJ+ðM¶Š \£oN“:8£„öòô.É,¢…߇Ö-½å’ÄL“(ôkhÏ—q¨&;Ñʽ)=yÓÁ3™t·×”Ö’ÌmŠÝ,ÛE‰¯EjÞ„_‘'‘EÚ|DûSN˜øRHf…´¤ºWþj€C2»#—®-'” FmÁË6K§ät ø£ašŽ©@º$»Q 2ówä‘Ù¡_tQN;=dÉ ¸£é̬uÏI>¨#S •7Ô|Ÿ’\…‚9²{­á<…q¤#D„²»ƒ=…#[¢`Ž BBf„ ¦Ÿ `c:ÉʧǜÚäv*x#S‘ƶºcœ…À;¾Ù€w,¦ƒŸ~Oór1+Ý~Ÿð£`ŒÌ´ eLP5-M‰P¤[/9B0?bUgz$™Öà ò=¯*»’E¶ƒ<ÐRZv'È™º'á]–fk¤”TQŸ=?ÙÉh ¦Èkù¿j&ôÉ>Qä9ì¡+ÎJSðDö!!)ÞNÒ{1©°Êb„bôt1Œ‚&šÞ\ábö•NïW°Dòá‹^LÂ$‘™–‹i×ô¬$Gd9ÂøÃü¬$Ed¯F¡g.,Õ:"@mšeRò=]£ ˆ–çà†â9FŠÏž²ÐkkzÚ’’!Ú{ÇÜmÆÏtÏ× Á’*°²ÎôÎËŽCïVÉï)ô§]Ek}¥o )¢Ú8ù؈’Ç G4Xa0½¤%}¶äˆLS0‰¼tÉC°þxP ×ÕÒÅkJŠH$dÔ·²JúdIIc{™ÕûÖü:è­Ï ¼ï'yªÑµ° ³#©OÙð ŠÈϪxÈL—Òh§Ý! ¢VÖ¦1@Ù.rDÚjÌ?"@vý}ªØz´@µÛƤkq‘Ó[¡ýÝèéQI ‚È–ß©Áúædã3†òq£Ãíýò;:¨Œw †ðºØRà÷Š™Êš—/¡‹TChM•©qg (R§¤éÿkI )¢ÖBM=¸5-d‰Š*Òj½gzÀ²‡ÝGL¡‹WééëÆv:´Òªfó3ÃJR‘ ¶êhé iÊFvÞ<‡Fñ–™t6²Ó¥¡Ic3¿hRÏBƒ&µ‡›ßrH†W2Eö·ð¼MÛ'íš´¯p[JM—Ñ(©"é!šîÙœÙêSä©Éù·Æâÿ3t©Œ8ä^4]_ $ŒD9Ö\Ö¬1 K¥I ‘CN¤>c@—úHØHØ_œ ”i«#ZÇ-=•GGð›B_3‹ÒegJÎh· õmwÌ (Slˆàw6Ôƒ¬Q¯•špOI—®)™£*Í ì•Øùoy466ÙÞôt”‚>CƒãSÖìùOaæRg—!· G~KYŽÌ„ú&3]ǧ †‡J‚ñ²àÏž1 ¤]ÙrŽYÒƒhtR—®butB½‚CZžå8q²µ¦+X4’™‹ÑÄ"šû¤`‘|bõq+’ÞðHÇ \ßpÎÐ¥fOÑ“¬Êºê3†p;*;zÕ%éQG 2É~ÔÙ§¿™y˜_tiolâ-¦Aœ1øäÇYÈŸ!ti :O œ«Ïyq¶Ð¥Ÿ†ØÓ­sįd ¸Z„…S™ÏÐ¥Þ˜5í’ÞPKÓ§‰bæÏ¥gz)™¥©•o­—ôä×ÁÞ1Z;úLß|ÒK³I¸.Þ6mêQ$ŠiÕt]¢’a2s\§™,±µ}¶<”©7±£VëÌnÇ Ëä%…VÒ•Vƒ4Ó`éH‘ˆÚA¸ƒ©7e¢•ʪT²5Û'¿›Ð£Òhƒ™.n(-8cð¹¯Zõ÷ÿ¾ö±k[’®$š¦grÑ~jé©AªIÖ'=WK_µªÉ»˜¢"Ú“rW~Ô¢{…e”:ò1—!“ioìÅv°©C«$&ÊÓ.'‰š:”g–sN‹¹“MY3rF˜¼('1å™<òÁ8eðM>- vœ½/Ìăî}˜Ø=}œB6‡}q2;%l³¸ûŒ-:ËhAÐósŽ9'ŸpFF P‹ž1 E§´h¢§‹WI'ŸIHˆ.xëÏ–wÖóKá91·t?r("Hg ˆ©×ð­üè¨ÒÉca¼.u±ÂƒžSHéo4âŽA¨ÑÉ"ìÓsÆ /Ú'ûªü—€ròŠWa<­¥gÀ PNfÔÓüÁ|1ª“Í\ܶ®iAçd˨H[žã郔Ä3êýÎqgMÓ§køH§i1_§qqßÀ9ͺ8GÔs,Ó¥<ƒeI¦úù)»Izž×`YÒÖ1y´ùʦÁŽx»²Åާ$ä¯,;âíè—5Zz;ØÏM†Àj2ByÆ`ë‘:˜'ZvIW­ ²N³N¼pc˜A’Jë䜖ýÝïñ6[©>ò|ÓòyS X#Ÿr;@8™×.ò3®"]m1@8yeúšé°rYítÓ® ±ïáÜ[:Yt€n²½T*žƧñ-›»6)›%ÌO¬¢ãKqžfëçZû0MÛLY³%D%‹P,b-ÞÔº5)Yà™ÌweVü,Kòsˆ¦]7‡£™Üxªï«XØ=¢«€ÍÍÈl™µ´|"ó”ÍÔ^k{ç6 Ón}-ÊD焃ó" ›ÞŠ/b’»``—vÙA.¥´ÜtjÉô¥Òos!û7ñÊUpö”ØÌK¸% ­é Ò\|Ÿ—ã䯹 JË^cZáº$»He)ìFféó6€R² ÎðÓ‡æ•Õ¤oÔçæ^ ¶@~ÿJ>\_Òg[‹`‰p ’+¨à’<»”šJjË•IÎ<#€j—läo ðHfÅðõ!åâ8™:R9$ÙíŠÜæL¡»]†êÅ*Xò`ñðщE€BòÊd¥ªLNÖ ¦wÎWªÚÕóJÒô§ 7£—•›À5ÀMó{Ð;hêÓ„,Àê¸ÍNÎî#ýŸÍÞ!ÃA¥Ä>À’ÉüŠéS†òæÈŸ FO¼§dîz6šZhN™ýÈIC¼ÓÇ '8£^yEgé ÷À²ÍLÃUJ®Èo-ah¢]“›]äsHa%ë`¥á!}lFL5ÀcðþKÉ”ø²È,úĦk¶Â`ì`]NØu&kl¿}„€mÙkC¤Âvˆ)Ë'—½ nùð¡ÉZ‹žÈ{#.bö’\ÅO´»· ¡Ï‘-Eš%X—­Ö ´³ß1K0.ÙÁŒËü"h^NƺÐÒ?"@2½¤®sOï%Ùö oØ¿WìˆÀ$PÑùÚÙQI“¥H»+ƒ{NÎé8A„J÷`ywôV0ii(ÛbxÙFV(H©¶É磱hñŠÝ™Â5='#»ä‡Æ¢déÙÉ<³R4;»zB|6÷|VÊf­°µ‡9€¬:b(¯iA¶‘ùe…vGŒA•Õ¨²ÌªHÏ‘™•Šsle¨¥°}烪s±-™ùH×#ÍJÝ9™‚a¦SYvÄhTžƒ©1öެt±ÇlTŸaTˆééy Žú€ˆyžÞLŸ-è¡]…ÅU¶¼Ågõˆ9µW¬P·rAž]7ýkOãLŸ-ù¡öPüxW#äÒK8ÛÅxÃ>QC?ÓæavÞ‚K\üG7¯#k’F“ɧÍÄ#}å:=#oMA =`l’ša$âÔ§]~#¾ó šÐÔ§Nùç³S›rœ„O«N—¿ÌNe:ÚwóÿqiÏT¦³-Ï+ùé3”©‰(¼£á5_Ùb ‚hÛ£Ö;ߥå÷cs»Ó&/KÒû‚hK¥òðOÁãrÆ€2õ¦IT껦G§L¡2ÝlpãÅàh:wÆ€˜667£¨¦ky&";‡Ò¨<öNš$ˆF럢=]ˆ3ɵÁ äá”fúÆ‘'*‚”¸1÷HžÌP–´6‚*Þ·?= k†¾u%Ôµ6{z¬K›­íÅ©éz Éº$S$|®ûšéyG“ÍëV_¨ÝõÈ[^ÒUd/̹ºY€wÈ?Ÿ¼¦Žì(c¤ `&É"on†KkfYËc *Œ/¬ÌÖ¿L²E>4 ¦RJ~;¨K‡ÌUM8LrF>n…ë˜Êã„AÊÈÜH: £–týË$käsâá0Ø7¦‡ÀL²FÞÅÇb6TºÐb’92/ŽùØ¡ZþŒAeº*ß|Sïé1T“uIÞ'‹HZºÆj².‰•¦>¯#[Ø4cQR£z 1/,JKœìîùuP•†!Ûæq0#äˆÁ¢¤.¦‰fZFY“´Ê éÐKþº±Ÿ7Ë ÊxS¡1¨H•MlF™9µ‡ÜóIi‡6ƺC.낊t°‚ÏÌu%ÏT¤ƒó†÷Ëc@“je¶âðQ4ùo&Õ¶ZïôÔ“ 6É0à²Øofº6j‚PÚÎä§LméOYT¤ƒ iîF¥ 5&8%{ßXï:¼9^¶h‚V2 ½ £&½§ y&˜%ÏžZôеÍô±°(Él~îÇê¥ç¿…Štr8ª9>Zòë .Uãì %•Îh–™¶Lê?bôìBv©èNáLL^°KöuKÏcP™N6ë˜-ÌIƒÊt+3A#%zÄ ó´ÖdFN)3«™'Ó?4LkÛšÇhÜŽ¢äKxótž GHéòÿô…qJ3^•ÎS™¸,:;‰Ÿ1 ¤ÞwúxÖ’N¨_dŸÄžkÁ»0ÙéŒA]Ú5Ä+&›á1¨Kw`ãìlÇ>c@™Ž¢t®Mu¤ zÙ§QZdtÃ"ùd[@3Êœ‡¼x|ÒÍTÝá]þòŸÒù.Æ üˆòß1ÕZÍýÉ6g <ùÒi õIËi Šé~‹êL-Y Ÿ¶×CS›rzÀÊÔîJ§×Qjz’Õbm’GòIsÌt©ÖŠÅI ê=Ó4/è,Nê™Iæ ÎüÉ‚|29JºÔ d?Õ±¨;dô€ŸEî©6Ž@!›·5Ø vÌéB¾ÅÚ¤=&šÈúSœ1H çnZ[Ÿ1~uŸfñati i­?7ÍJ/i 6ij'޹&EZº²h‘{2U wÁÌþd±À ÄÓb[P-#ùóþÛÏÅ[ò£Là”á·"뤸&²æÊ÷Ÿ_ ¼¸ o}î#FxŸKLj aIâï‡Gæ¬ÖÅ»~Xxo1D€ÊމEð…WÔujÓPõºV$ÍÆAÊjß0ò‹`IÒ¬‹2ÙŸv¯™U@&§0²©uä›è/ÒL3ži¯-y,IzÆA~ÿ¾çf2,LS<ó’Ý|îë"Ã4Ã í¶ŒTV÷"¿4Y+§ýáš2¿_ü öà÷!·;5I.Í^…{¹4_ ´È.ͧïߢm%·bD±DÄËGs ÏyÍg–ÛbNvËñ̵ûòIlwSYÝ‹¬Ò†Â,³ójI@0ÇàŒ&5ÛyäµÝöf£¦»ÈÅ‘’üTd|ªw„M•˜-pJÛ“¸S$¯(B]Òà3]{&%Ï™z»;\ôwXš»MžèÚ%W›µXäA\å÷ŒÌ±²`ÌÙ®;šä’T´ñ3аæá}Ìd£w}\جK’0÷Gìá° v»Y,PÏ£M~ÌËnKÇgìÎÖ‰Ï`ámÓ2+WÖ»Ø×®Ið¢lKre¨‹MíZ爋Ñ{Ï•Ÿ,¶´ksA*‡xÏ?€ìi÷¼8_3 }v]¿­BËÞ-¿;(`êã±Ó»È¡Í6¤ÚûÌï(Ù!;Á=µiz?ÈÕ^èYj˜ xÆ íl1ë­þ%A—¨0aÈÙ¦ÿzE'W¤¤/-K“ºL¸fæMhzªÎf뺮…exÅû ¦1h‚v¹þ©ŒT¥ChÍ·ì®F§2´dÅCfK6ù¡½ç F•"²Ïz+¡é|V@š}ËWÉ͈ª……LÝ¥`­2[ö¼RSÖàÁªärnka-“:ž¸ÅÜüÄ: Цa+7™Èh°š;щ°KòÆ’™23wáC¤æ“ëk!7%ƒ©Ýs,S©Ôµ„žyþfoså§áÔÛæ ¬!³ä‘rZÆ"Àã¹À¼ò‰eüÖëɳérã…j!/¥­"Ä.M»¯ÀLy{îo”±KIê/òRæŸ"¹§Ï±seM^W „øÚWÑ\Ý…!„RzÎù4s· eu“wÜê\ǸQ¡¼©ljãÝw®ÈªÖ6O½€‡)œÈY+œØ4O|êSRo—ÚÂÖŶÍU„Ö‘K#ä{¶1Z/ý˜8zqÕX㤃dt ÍmOË Eªœ[hJ¨#&³ 𤓳z¤?56©uÐUE`HDr#j Nƒš\dõv¡3XædÖ'Ýc]3{_Yç${P´ì”sFO–¯35O;8“{$µ«œÝ¾×Q²Iÿµ°Ô©«ÏÄ~ä!Ø ·1Ÿº—˜¢~ÄÀãî-9'1ÚʯÏ»™ßªw_`²2¦–Ð/Œì±cÑ‹ýè'îüe€îÖòûÌOò>Úδ@_f»p=[acô’úDAG÷Ù=­%”/WðY}‡ñug >ñÒÙ0cGfv?jaØ©÷N3¡otc:cðýy©“¡ði³6Å;Ýd¥’„òjÌBn;}Æ| ÈíyQ~T§ºÑCæl3Á):Ô4ï<-o©5Ô>UΚñnÉÙ:ŠZI?•ÐWªy la‰@™Ö5Aú´¯~-YöË,Œ³-ÉWüÔä- HÛÏQgA P›÷èÈ\éùLµ’~êµñ©’.òΤÁåÚÔìºÁƒ%@¨R홂Jm«qæÕ„:µueXrïr±¯;ì+:þÙ£%+iŒYësï’?œFµZòPÌ Õ’ßØF½Z”,eéé²ZY %1oÂ[ã÷‡ÚÕôc#uqÜÙd-#­ûÔ‹Óv­{“ÆnÅgÞm[&£V&wéê3¡v•Šd}ÒuNO£‘¯ëAV'§žéTÑ¡ÍöfO¨^eB›HŸé?µÆr):I"Ofw„i(k…ºeïlk?èùª«ZCÉÔTÐ}Í f j%9Õ[[TŽ-äÙAÈO-ÏUüÑ•RóŒ7þ6€™®äš>]´d P±¦ÝÁ 9H¹X TlYLúwtUI­¬Ÿ*,âj&véDµ²~Êßdå ×ô€aNÊæ6ãµ´‹•°/¹’6Y²Æ*Oö'+`¾ÛÅJ¨aeÀ¢·ßÕ‹Ï!ge^0õšÙm°é Ô°%¤OÙB8âå B ë¡Z¨éž.·1 *X¡Ígv[¾$@¨`Y#OÆ PÛÏ&dÒöÎß>²W^ Ʋè…2 4VÖÚõVæH¨Im8`»ìê1k¿’Ʋ‚sñtYtï=ƒ€ÇZsL$sùLçl Q­¡¢*$í7%Œgfþ/6h~/¾†úµ,Tq;² !Ý-_}KPƒ‚-ÂFoÍ»æ]€PÁ¶ Í  k Óƒ]6 ‹ª~ÑÁXaÚedóõ y”%_ñf úµ†ÔT“ÿôÇ4Z¢S.c],„ P‡ 㤡~}ȇ/+xÌôðªçMø2´˜G4zZè[(­jEêŒx¾È«‘ÖR‰éD}¦ Ÿä°/ï~qèøŒ¢tES#³å³T!ôö=×c"u#·Õ*‡„x´/=ʦ6[Ë ½i왞­a ä ÖF<º™E&a Ìa)“¼”½æé)2µÜZ&²DF¹øŽÒ{r•¾Aj¾¨…ùO½ í¶yrºÎ¤ÝZž±ÊÏQIO q–•+iHä¸] $vvÃl}Í|±J#»U„Í,›§Ÿ¦ 3k«Üÿ‚°®+:¬­ò•ÞŸV½ U&ü{o†’±Sk«J›¼€fäßì $vŽ Ö¡7º f^ÉdTºíüDªÚHoIeóè]l ¶ííè}€4/°¤·Zè}Ñ5ôùL€PŶ>ééô Q#¿eçKÞÁìÙ•ß’0j–61œ¡Ë58ºÞΦ_(Wõ=A6#¨ Ј։øèÄ‹•P`ux(;?º¬¶P\Õ6" óË—¾5†òŠ¹ï•˜iKWç=û°áša˜„y•’¬‰j`·æjhc]¤|7Ð[s”†`£9? Æ ƒR²;Èv³5™ÚHn•Áu([¤gÖQ5cò^MÉ#ØqZ»÷—a¯ÞèfTï}ÓŸZÇ Ù˜ÒQu“šÎ¬#6þÃ^‡oö\¨T÷ýYuÍ‹2‰¹-Þ9“ûä4{Õ˜z]ê¦|¬™=Y6ýë•=‰lG×EñK±eÏJX YÓ‡u„ƒ”ÕÄu\œ¬’  ×ÑVnŠKmà´Öc[~) ä$·'sýÛie$Üìÿü—Ú”¾•çéBýpFßi \=3¾>£O0É™e„¦Ù±¦¿Ø*â°YãéMþ… ³gc]ÖXõб‹ %¥•íªÌ,\7 Qõ>ß îÞe?FxÙX«Öä)’J¯ƒjtÑgÖ9r³’ €Ztm˜„›IýGúÊl|ò«å·ZÊ"Ù3;ÇÖg¶¯½7;gúe©ÉšÎæjšh0Äë‰ùùRÈêj:ðµ²z¼Õ4çzÃ+rs¸jiåƒ2È^׋ZÊÆÊªRÎÕGÝ$ £+«jgû°OÅBÒiGЈÀAñ'g­–ék•‹ÛÎʪÚgø'%%ê)ô¾B óð5a†ÔdnR—Ö.äs…W~0€©-B–AŸ) >2„’Fu%Tû¦Ÿ¨>wcåI7…f •9)4!‡­*[&ÑÀPM- ³Û ³KÏcRuñ‰×Á^NgêÐMíWÕ#˜i (‹W¼ãHC›ª»Ó䑵9<ãˆu]Cƒº”žÇ`¨¿ÏMSöiȘĠªµõuô‰¼Œ3F0BYdU¿"%1B&àÀ#oÆŽ¥g š¢sGÍ\Ù3CP]höÉJî3}úζeNegBÕNjÎ5B:qMß–^øÒïÎDþÒKº~®“’*!·kKV6:é(·z؄¥#5õÍ>½ñ‰=cP•JeiDȼ=C@ŽVQGH¦:&ßwPQSBò½ýSc’*õ¦DÐ¥2N$@(¥»¦éÙNµ“Š*Þz %AHEy3m¸Â}K¾Dª“ŠzšÊ}/„-SVûg°UzIOzZ>~I«,jCí3_¾ÖkW:£1“8Ü&ÖœÚÅ›í:µw¦ñ×ÝZÉË+‰(ÛU\`çŒÌ…äÕ‹ý™è¦ãâæTªÕÊ,æJô¼”4êUv-6(5ÿ1,²276”ž¯ë,²ò>öìCÕä#„Jl§ÆòE,”§ýâk| àÔ«VΚ3k†½\Ž)ø4Ôìì~Çåò,Ôô€±Rå ,z£°®^©ÒzÈY?ƒÐÙWv„v¥ËœÙ#X(GD#ÑfÉoI§»¿+uZè,ŵµð9}rÜÊ„ò*t‡yXéÑSµ“…jaæ“©èR.>G)ôÌw5ËyäëN:Y¨ö¼_fokpG !8UÀ‡™¯§7 ‰›‘äö¤žg1 °#IÙ§\왨9B¬Î y%µÙ`³×þL`0@µµîÛ’ÀD™©äâ 2ª³>ÑLÉ®[õ*•ƒªh-~LÀï £f{8²o™ïéi4OŸÁo)©¼8ýÉŽÊ‚P\g¥¢oZÛÅç;!«e^Ÿ‹#ˆÒlCáÉDõ»&£Ãž$²òŸ£”ØÊn½NÞ±Zò ÒiT ‘Ñíæk °.2ÐjÒƒÀžAX]œfçµÓ7+alµÆq¶‘'e Œ\±6°•Mƒ/Ay­ÔŒ1‹*qõ¶´€gKÏ+«}P¿–NýjÚVóB2(®›E'›â„âû&x¯t…S'GU|N4ƒ{ä‡4U%˜ôcäˤ:XªiûPh#­’žîb P°ÞïZÚ ÓYüdÕÔ†¦žÀÃ4â3äuè@EWO¥'«ÔN¶j†…øŸ®oêä«|0&AZZq©4*z+Yr¼šUÁ,Š:ê¼X I«Æ4ø|ì ÓÞÏ ŒfmÎÅõ¬¡–—ùIyí —ör%jÔ¯…Ó›ìQò_³˜IÕÏ6¶^¬dQ¿ö†\óf[œ¯ë`°<‚Ìrô­ì·¡¼†¾4NO3ê×2aT´5녘ƪ»F”cÑNé÷<–IW¥z-ãò"É^¯åé`²¦Ý_†Í³ÏלôEwëéÊö¢£å¿fS^MGÃà+²J~%`³Ì¤W+AúMòjo-cÉ%´ØH€@^=SV£½ëù 8„–wifÞž7x¿¼îÉi¨õà çA °Ûþe ¬|2³ T°É÷Õ‹cÓµIœ–*gåzG/¾+åèͧA„´–Ž5ƒ~æ¥^J0B±òÒž¿ÄR¨`KA9Wkiy•BýÊ^ñÞˆu¤ÏWÈmyŒ••t“s WŸ}ET&dþ˜-`·ÌLzåRv¾”@Àn /¹$½.<àäÕº©‘ÖÊO‘äµLêÆš/ó[ÓGÍ|˼ý[e%@*-“©øP:X| È«6…Z3ê›GÄêÓfû Å,ÉŸ.Ó'|v¼LwÃÓI ’Ý…Ù«¶Gz±-б΄"\‡ä ¤RÇŽ‚ž†žC¹/@Å¥ŒÑµÚ/®).Ÿh}𝑢,X®«ëÎKJ£UÐI Õ­šß& ¹¦ †ìÅhëb%Ùþô2ýz½´^\°\Ó£ap1„£N ìBUí^W^¥äŠ*¥©Ô|­£–«°»¢7ɸPn¤¹FÐçCqòõŸBšË7–¦ÖÌO“¢°l„Þ<8œ—µ@sÍø‹u1gL:­‚Ð.ºyAÎÅJ¾v´Q&ÍX7s¾@Þs×0Ï©PÙ›™=²ÊE0¢eú t­>ç 8®á át˜zEgŠ ¬‚&–p3YÃ"`¸¼[„µxl$Ddò-®C'-a;¤>Yô¾p\Ãë¼+)­\X®1Vie¡†í´’ˆ²á™³ñ‚Û™•@\§´±Ã)S+¼Ú#XXìÑ "ŸX dvêB–HQs¬“•9’kÌÁ S‹»§?Â:¤óò©·Û¹9`H¬¹) »ícÂ<×ÓJv‘J]õb¾ƒ€ä2-ÖƒÄúŠ\^·€âë©ù 1hSdV‰µ]€(Ãû6&¯(.su;ûÛE’s­ —{•WoÜI«2¦¥løj®Æ¬Y=†Ë !0ÛÂä?Wš"ä·Jcu¾‡Oú¸‘¥ï`ÒËd()s dîûßšy2\5$¼”YzRRÉn¹xÃn•’-â’A!Ýl‚ï$|¿¸þƒrjú+0 s$õР˜6%Õ>GÝIñ«e·v0Æh+‚3žù¨Ô¥d·½Gyò¾Ò>7ˆ®DkíBw€Ôr:VÕ6åš|Àh™¿ÙØÈ¢<Í2ೆ?'È@,ŒK$>„|V©‹¡ýúÄ’SË€•Úúf¡b¯L:!@:Í  WÚBòÄ UõÔ xeã¢lI@cÍÖBñ6+Ú9fP˜7X8a¸õ¾³-Y,»åȶmžäz!¡¤±Ì·ªÜÔRJV¾³êáK|ÌCRý‘Á2+ ´Õ½“UüBúJzpÙ›\” è«á!žXχÃ}ÊÙÐW£”À•½ÓÅO²èI=U¿Íì¡éÙNöÊsžàJ©Îvñ1Т2™®TÔtqºhHÀ^ ³²‘ççiòùj }e¾ÆDV¸ EÈù BGÊ”òsvïé•€¾2Ó‹¦ºsÀéóÝ4LëD仸·ZÒg³ùâGWlk~ ‘€»ždKSnÍ|a™€»ö»ý±8 ïŒA'Êt;L¨¡5=ñJÀ\ñä6|¿ù%/!›L€°ÛC³—7]œ&$®|Š|Ðf¶Çƒ&iŸ¬™nEÓZDI[ùûÆu˜“ÝS%kåõÅ¡»@˜àsÄ€ –§ÍØ—ùh¤t „‚¶Òâ˜nd§+v´•¹L{†{·V~ª‘‚·^NB×ó ÒÅJâÊÓÑb†üÈGR2W] sÂåʵ³ïw1¹óUH êjHàÛ™W‘.—ÑÊ@•î6WÚÅÕ§bkZ{ü6³s(\ï.ÄøAß"y¡{5¼áR¥ø×0®íŒÑõ¬4ðNìq‚;š0oØ •ü=weÚ½dµ:œ«ºX•¯¬RrWÅ+‰è’tDñ P´Ey:í¡’’¤®ê6§ m:P´M•ym{µ•?0Wê]e)j¶?eóöÔ•çü²CXñÁKyÈ«i€IËqiÙKÄz0÷XæÃ°gQ ²Í¼ MHÆ%PH¦ó+È-“^¢¨öÈç«ü–Ç+ø§mOLÌL |ˬšpf7ó~æ°(8®OsVØ^]7gÍ'P&PºDuæ0_?¢ ºtÓ}1Ùò¥J ®Ë¿eåöAú©ûI¢ïzhÀ/]Ù@$eÛâ$žÀ—?gp^nÖ6ú/ÞJ1Îཆ”A»v¬GËdQ låéAô%þKGþ„À} ÓôH©p¶T.@虱϶F»çKu’Uùô‡è Lw I¦âØe"eF¬VŸ •ÇXÔµ%tÙeä‹ô$ØØ³17yî|9¨‚SŸÇÔù°¯ž £ Á¨­Ïö½~òa½„e^ež8bÞ¡‰u-MI ̃µç+š/õQ2b}¶ÐmÛ; æA gýo—»Ö‹•0±pG¯=? j&ÚÑÐB×’Ÿ6À‰ý0®½½ \¬z¶Ov½(Ó+þÒ9胤˜ÙŸÈgñ¼Ú;=ÛÖÆü ²½9ÞŠòå`c!³uÊB”(EkÚ%(&³®‘¨œ@™|99ÞŸæñYhZSD4$m§{¾šd€3C›Å»†r‘œ?ÀŠÙR¤Õüì¬VÌÓÈ™và­+J^æÀŠyÅ }fç+uX1»Ö#xæ¥å«ÿY±²;ãMÒš\È?y1“¸*Ñ‹µPÙ +Ë'út±/P·î°Åô7¸Ø ô­y”Ê'¨Œ‹•0ôåYÎû[žA-NkórçüÈ›jlxu7œfFvöCèöÐ.R*ël䲊òDújõ›\–ôXd<• RO…\–·fwâÅÆ L{ B)g zPKY‡ÞÍ96 hWOY¢+´hl'@ ]]Æ©¢Ëó⃠^ûb'^S• G(P°RZpÚÍPåµ3 4¬H«TŽ+?j‚»giè":ï“.±™ ¯Ìj,0GDò3feˆJZ|ÿòÈ&¨+ÙEOÈ‹ ™«²"Ħa¥äTM0WꃂŠmùYhÄ•bØ*ü ¾:gzWcÕ‘¿ùÖp}<…4/°à¬t†Òþ k^bAZé*¡ß†è¼XVê½°©f›æ§ÃM°VbÌ^¥×|EËkåýL™nW&3  P³î±²{0!5Ûbj¿|5€Í¢@ÏzCÒû=twI @Ï6a…µÓû­]l.ô¬w¼ :Š^ ,>b줡T:m hZ'7‚Î7½’?iWâEÒÔ´N—\ @rg)!´Ø$_Ñ5É_-b8IÁ±=g ® д½æ‹—&ù+3pBkí~Qw4A_yÑÄÖ WòÕŒ–FeÛW7÷/>ªVgãü.O IW/MX¦¡''‡hïùÒ¿ úJGÈùö>#¿' °ìk*“åÜ¿ù–XóxXm‚Ò8ÂûXe0Á`yO#æ˜ú¦ œA ³fà„b,»Ô0¼(YŸÏ º_‹R¾â&9ù¹W“b7käŬ–ù££U;Xáy!÷:{à z¿¸@`¶d×Њ]/ä$0[ªÁµ'ùb¤ Æ*ë¦ýâpÈ„lz#p!i°XDâÙšÿ²Z£0ØÞ»È%0 fcÌn A‹c}Á±Õ×à€ïêþKºZb‚Úêk7ÄRŠîE ="Ð÷výƒ‘R8f-¢@Q‰ásìÒåFWß#¦½Ž!ùêœ ŠË^°PVÖí‹òUX4—”ʬñâQ¦üìª ªKÜ^ç¾xŸ< ¨.ñ,UîKä¹(дRCVokçëÊ&(/Ñ^HÛË%?Àj‚ö’YKh#m勹&h/3w6ö¥úx¿‹‚ªé6ÞKôºöSÕŒ½úÅž@×ÚãCŠØôÛ¼8dfìÁ9G½Y ”íÐÀshïS4(P¶Þ²™î©—ô¦Ë(±>Vµe}ö›}²O% ¢* {%PvX é91û8?îh³OX¡³YÝùÚ‹NÌý ZÝi§ËŸV¥K¦œ6í¸*k /¶2òœøv!. Å¼!_fI¾°eOö %jfå/ˆ1Xée¶&HêJ Í…1–]‡vqFdsweg Ss_ Ï-ah ‰ígF’¡•«Ü}ÂØ×s&ßÊç•É1ûÓ¤éd•š8’cf‡H¸ùfù}%7¶:û.ÄxSƒ\n(*–=ó¶x1þ #E{çëÓh1õºh‚,½Ð)Âøt„ú:ßÉšþ „ö Sý6¼j~á'æ¤ óú¼9Pbm“™3Ë_“"ø07˜x¾M“3FÈ0oïÏÏxj€cVåÖÖ\AÚgñdPßb÷'D5Ùyüô1ëXLf¬öü%‹Ûh0Cˆ•ï¶ äÜ‚¬ùôå"æÅĤÌPY‰]È–&P@ƒµµ+?ÇÐ"š‡Ï æõX9lŠEEɬ¤q%Ü•b®ÇÈÜÓJ(ª³²)õòF[ùà%Ö0Ò¦x‹Ý¬œsÚ?ºÙœ ª3Dß}b­\d˜/`-˜³Çd÷Ã: ­Þâˆ÷ÌŒ`õSb×­!ü8kgwßÃJÀ~™2”°©e싺ú«{>$>È{Z䞀ûêe…&]Ã^®q!h ¿z{Ò¡¾é¯žO®.W Í&Íó+Ùë ÞËLw¾ˆ¥Ùƒ¯ÕL+wt1€“Ù8[]©ŠL©ˆÜ ÀÙ2ƒŒlÑô¬Ó\!ÁRzZ •vÞXø¢ sàh±[õÚÖ\¡Ê ´Waêêï]ò`éµj0îJIÖ¶-2^sr ú§6âb+HxUN`rJ39i‘ìZfK„:™yc?²k)»#’­ò] º¤¬EJt<¡Ðs ZáííZ.ŠI.ÓÉdPtI²¶m‘àòô¤âÎñ¼'ºR½Ò^×&+)ž$¶¤@uK‘ †Ä–è ³ãZ+jƒÄ–ÆK¯e&o+I--‹­¦ìî_”æ/ÐZžßÒ’ÖHÖ /pZ†ÆØ™÷þv(jå.ÃN^°Y&\Ñb‹êÄV€ÍòJc¦¾õ%éš¡µ‚mÊ9ð®7˜Ä€a:$´£©ìü}†è„æ°n³Ó“¨¨,QÒG>ÚŠ©ÛG%È`ƒ*ÿÍa)G˜¦cTÖ/oša:vhygÖ÷DþЄÆiçùºÍ¯nY+˜¦ÂΆž .éÓ‰e¦5;ïŸî‘®‘Yà°zk!ÓÌgœ´ôÆ‚Âêž3Jî•VÂlÀ¡ àdòŒAæu…¢åa.ZZI^•º©‰|ZPZ»ê-rü&sùý€N5Ë4$ІêÖ3#©¥0VžF7I &ÎÅsñÚšìžn0Wö›'T.?l0WžâÍ×Ò\±qŪ}îªÙT«¶NâÊû@¤«76ˆ«æAvqã™EEÑßQâTàÊà®ÐðÖŠ÷#2yʕѕ¯Û…‘ªBz™Õ­'õºÚ —kr«ùªtþ½6ÃCz1Ìm“¸ªæñ SÖÅZ a¹¢†Ufƒ$@ cÕbš­uäËmÐVÝ{ýc%>Íùâs˜IXI¸zÛ‰vBÒêq“¾=’Úò²OÎÊœˆØ`‚}î ¡0¦µè³"J”¡ƒ5Fkíý3Ó `¬ìh*{Uè3Kàr¬1Ø`¬>Í“¨jç뛪•ÒËÌ ç4„3T­¶¨^;x±!HA_³IqDéÄÆñx ŒÁ- ]ûJÍWrmPVÍØnüfG dÍ}/!¿$P e}juµgCå7¥“ƒVÛ5Í ’Vs°z×^°Y/–%Û‚WßÊÌW mpWÝ;F0µ\€@Çêêl0µå¶3~ ÒYš\€° æ™Íð:Ì¥?ƒ° F„‘4 ì ±–„4,]ùª´Í.„îgÑ¿æð&AÈ_Ù :£–•¯/Ød°dQ×{ˆ0],±I_õ2îõéµé’M«q’©É_m²Wmõ´´€FK€(Aèï8Eyñ1P°N^“kÝ-_«´I_yE4gçLò hX5æ«k¾6n“ÁÒ)Ì(3¬¬üñÄæ» N`.æEÉà‡å­4X¶±÷f²k*Ö{x1‰1Ì•L€P¿–0ÉeŒ’³Ó (/wzhRÈèëd„c,YÉ–uÄ$uÀàˆÄâ§ÐðLÄl ƒal.£pOMWïüÁ€éò7}çð”eµ°£Pk»å7¤RT«†@’ì yËÕz[Ü[ʸXIi±¬ÊÚÅJÈΖÐzÜß㋳aý@ 7ФKT #ddÏÀ”ÉJ j$—7°ã­±7<= Í@ [ëcP©ÅÕÓ#ïZÉÕ½ƒ9öuKzHV+฼•ü~ê¼² p´œø*ù%ù-ÇÕgpagŸéÊ»V@qu¥Ní’—’ÆhVgæ¾·½P‹à¸º½Û?zßÎä–,º¢Z.¤„%°ƒ¹>Mùæs ^géÐóvÙ(í51Ñ'š~#ø€F<¿žQJˆ6„oQ­‚Œˆ¦m³¬ã”ÙØ ¨-צyUF:?²[.ž¶Ñ+E¾å[Pý™Ã¡x¸ž7‰uÀøJ P< 4U·Ó ˆ­êE ØUŸ¬’ÎàmÌ–}Á¤=3³ØÕì´˜m°ÑT»IÍn´–W¶0gÍÜó\²{+à´ª'N,ãém–]H­ê…¸û{äÊ  `†ˆí(H¾;!tîçO‹ùâ²HÒEš0f½ž–¡/¶ëw혯Nit–‡vè$îgJUjÐÝÙ m-7纂 s‘wúºÈòÑ+:ˆ;¹£ ±l ²µŠæ+u<"5Ø9WÏcx¹2»V”Št 0C%W‹Ù è+“Þ¹›ªrqçÁ_yƒ,Ú@¶ùñ:®¨¾QÖl=œËN*WíSvÀ;Ð0&³ r½‘•Xöö']#@6Á‡jf–\«_ûð"äjA[!i%ah[k£‰½ keÎ:¾ÄÌ”>’W…”Õ¨¬+ñÉ‘ùÉm­³›bZ¯%W­cð¡LO€ÒoöŸr#[![µž¾Z_º8…*ñ%Ñm~”±ûíIŽÍk¯›ê¼ká€cÔ4 ÒìÝÏÌç¶–ª¹öD³Ézb/&kÖïã3g œֹiäïÅ0êákEÆ­í²óõŽ­¢òæ;@YÚgòÊ’ŸòrÔ¢²[ò²‘œªæ'AšáÔ’*”ÌT‰Wæ¹9X¼ô_ÍR¿MóØÚ!O¿Su„z¶:[ðŸ1ðÒ·Ù(lRæLc,Z£µ ;ÊÇb&ì/½JâʺvLêó'~u3Îxí½Ÿ•Yg~xë[ úëyp“xè{iôBMâZþS‚9:Ù×mW¶¡8cPLw¡½°”½áÎÓ¹ÍÚæŽ%+–Z!%e¶)BsnVõ´˜’‘êÖæëlL/9Cð±Ñ±U¤w”l”éžlo:Ò—dT³càKm]¶¬’Q¥$77o)Ÿ–RpQÞ¤˜q½ÁVIg>öO~Ö·€i^À6½¦PöØÌΆ1yÊÄoLTõN¯Ù]Óc£žöÁ_Úc+ü·æe,ÙR#W¡i$é»»³y ¨SŸÎ„…±g ¨S»ÂÜVo0\ó áÀÙÖ>¯Y ᆔ·Au_,„.~í(jóût ‹„0 zLX/>'8ùs†°ËÌ‹k%¥k2’UòãÉZ \Ôh•["’,Öj ©4ƒW]¤§EµJ2JtuÞ›ü¦’Š:ˆÐ·¶ èÕåu¾ô<º\lˆP£±X£ùÛ‹ ¡f-Á»õ†ÑùóT”²•Õ~˜Ý,¤Õí9|Žyt频VÁEùdd$Ș&©érœV+•kcÔÁLæ™®•²ëåZ”ó™šÏÖ{µk qu‘†dÕkY q½c½øœþûJÊ”‹•@¿zgM ¦ LDy: Ý›Z“¾/VBýZíá<ýÅJ¨_ËÁóžé©JOß•oÃw`ít9\«d£Öœ!¢ÒçÊï ®¼¨šG¼Xa› ¹ÕTl£Ì•¿ì¨sñ•s A kê‰æ€òN€°ûZÛȧôÒýtMÝÓ]ý{%Bmb6íͶBÚmÃl¬½æ…" +ÕØ’®íÉn §üVÉKÉÓhèQ°®ÊÖX´J^ªh§5CÝÿÔTqºùK£÷tÍH« ¦¼Õµ2ào{¶,¡UðSæ1yp(3{žÑ_ßkñA.´êWºDÂ* ŒÇMb9-kVxˆv2ÂC¢´-=Û©U2Uíñ6¾M¥Róˆ*6Di­Ž›Ó!ã¿9IÝ;±õÂ’+³¼:¥mÖtY£†Že?…6ÖL#3 êØÒ©ÚTòó¡< Z©m¾]ÝÛmæAÈÑæYky åB&UAífK c‡ôNW‡ñ’¤ÕàPNà±ìt™Æ£›¿ìŠÑ±­Ý›¤d ž1E_jÀ Æ]|þcePÉ–@:™¦N—Xt¬½æhjä[ò›òÊ@ÂHè6F~~Q« ¯¼ùxp‡².»l;'ÍœÊæ® ¥¢Þ•Lš¬†N/ ”AE͇§Ï’ÖÓê ÔöÉ g/7{B¡íEB¸1diŸA¨cë;Òkº,ÈÞ'fXÛ=æá(ß'@XÁ"Z(ø³¤'šµ 2˾  OÃK .® È,Oâ¾nEŠfƒýÚ†E=: } ú«~ô#ÎëZöFp.¡{0ýbK(¯¥ û‡'}"ãô˜ˆ_IjõÚà!tï^Óó Ô²voéðì=ÓõE­‚×*˾YŦ«7KÈÎ(T³å)yÿB‰#ÄÎ(гfU/.Ìè™_Ô‰²Ð9é%P¨gkjk†Bç´¹3 ôìÚ,óœét5L«à¸LYwpKfT×t1Z«$¹¾Ú€Gbòµu­’åjÁ •¾CI`@Ï ní5=ýË-pDu'³ÐìpöÊ1‰.¾…Ïñ±+ù}%ÕÕ2|NAjÖœPZÕ2ÌI€°yÛâØH;öKK€°:`šKþª^€@ÏúPº®á#|‘aškaû©¶ÖH k ÔW³OAUsY.@ØòbÏ(®¢y‰½'3Ot,¤‹%@˜SËfDµ¬ü¾†Vƒ+„@úܬ\ƒaO<ÍËkè4fØBôââø*>iì Dj(Ö{Ï(l`½|ü;ÙIIÖQ4p^Îè`K}Jd~`Pk$½Jg´ø(ö|šgkFP¤ºûäV䮾”—ùÈyÙÜòÃS &¢†‚îæ¿%ë}8¯"£vXÓ}×0è'±²C+WoÑœ,¨h ½ŠÉÅOdÒÏÌÄÌJ`x›y.¤õ\ïÿgÈíƒà­YîiÊŤÖÀz“¯¯Ë#d¹,ïΫølØ6Ýe>yóÀxùpdÒ¼}j'ñ-ä¼Ä¬Væ7Œ]FRÐHx‰ùõ¡m&?†l—xjåÄ~ì2.†t—Èýw/ØÏ×E4ò]²öDk7W?YÑ„²ºÌ¢Çéh­¥7 t—ˆ„/{7%©Àv™B »íOïÜ ÖÀu¯ò ÒSiO;¬B`†ûTï ]®Ë®‰I(·c×üŒ¬ÖÀv•eòƒÑˬ™{ÿ]f…/xI?•ËŸA¹_s$«»ë²|°MÜŒz¡X—eW—M¯U’—,—wžlÉ ).oJŠËonĸ¸+ä¸Ì @S—îY[IKDɰ%D·#½(\nà·¼hQ¸ŒUrºZ¹åcw”W¥¶ì‡€Ùò¡ü’;-bË«—‚ÞX;7\ÓØ„e1›©-ÉJ¤zæÍõò$¦àMyn¨®zUöÜØAÐ'ž`/Ê”üèEC?åÍféÙ­Ñ“ Ù¬½…®ÃV©"è,e¿æfUnD !T"ô’“F[‘å l;93Å’²ˇ1¹ìº^Xü“‘* ˆ4&Ë’øh,w£ú'Þd5[žÑ&_zÏ?†SeÌlQC›4L½O3@|\¶$¡Åòùà}HÅ;lå·„Ö©.a`t†þB«Û£ÈÔ°=Øõ R òô¡úi{åA‚}:áö™æäíªi›öÄ>$¿«d¯´6ê>‹6[¶ÒH^™·Á:1Ûš²òGÃ<,ïH yBµŸ1X eª'륤…•ÔÕ¬•3&ËCÏLuu΋†{1sņr½r:Þ¡ÕNkÎé´´|l*Õ.h/Û‹°'ŃjõéåòõÄÌ–.òj›JU|˜4â3ñ9¥ï7°Ve{EPôá²(#ܶ,ñÈüä 5«ÿ«TÏÞâ9BÕ*ÂiA¦äÃø²3 u«g0bÖf¾º©“ºòìVŒ³•¬ô$™ÖI]õÏ|<³¤ÇJûõÉñÖPrñE=œÑ¢é=M»\ Ðù7/}rüñÈ×'u’WÃT#MCkzZVë¬Ù*O^ÍÈ“œ¡š•Þ®>n¤%ÂvD5<€gŒîÊfæ_5ÍolèØãW||²¨ ÔµRH { ΋•ÐÉš#ä­wöI€@ÛºßOgìôh6¡ºm FøP˜t9@¯T¶«w¬˜ÊLNiÜ•‹Ù—I¤^”\uWÅÊ€X”Þ'&œQ¨l½ó-û|L¯TµÞ •Ç |FiTµÅ´hO”NW}ôFU[{p3¼ö/¿+ªV›­›‹ éÁ4†Ò©°9iÎljÍWõFMë^ø«— aiÔ´M9VÔ³NçŶPÓ6ŽàîS˜v~Æ}1 £ÆKd\È mŸè½Ò½ëâkB +„䯨ÇÃn‚k) „<#=ˬu6ôv^x’»¬‹[ÈŽ‚«±£D÷Œ”üž„†‚…íÅMc­jZâö˜CÊ¢ÅSJ'‘µ§`gÝßÀkš¡ªõtÌF­Ï.å ªÚÑÙœ_d68a ªÚH$§ƒð &P lÍG]0wìñ¨éi;&…(£1ÒwËÄtrZ^ þÆ®÷‹µPÙVƒö¾=Žù“&«e[DúT|RG~w©U„]"<˜r!/äµt{FÕo–z…©¯k 2Kú̯L °Xvrꀧ±§µÎ:.·¿¸+3=­õPÇõLCÿzNæ†GW@Î&P¨m½MÞó®ÊÅQÛª†½=™(:EV`ô~±¹Ð¶jþ.ι¬Ö.„…¥«Wº cæ Ôú 4mgJƒ†Á§ J@r˜–. ë$ÂæÓÿá›>¿(_êäÂtoF›ì+G^NVgK˦~3üû êvr,­©»‰r ” n›RòÍ©Ë×étòaf²¡g{Á%K ¬ œ6Âê^ÄÎÜ3 Õ­.vÕ´„ýkÏ(¤Ä¼ïÈo}±»äÄšç3ÔW¾ö¨“3O{2².ë£Sg7N ¶JH`HxTƒß`ö>: $P¨kÍád¨Ç̱~±êÚ6hLIljÄXj|ØÓ˜®>êdÆTöâJ–æ {¨êÒ]Í‹,©1ó`fØ{’žƒeT´JÍäµì+¿#dÇÆTæê3Í‚PÓjES8ï!Ÿ/¥ê;jZFÔknÒùì=ðc>þøûx¼T~ÖJ'?fæ1\TÙ ; ¤Ç”íeÁ L€0ŠàD2ä~íž/`êdÇÌÙèÙŸ/ŸÔlŒ@¯¾óõBrÌçZŽðˆ•|¹€cÌwõ|¥›³—´S)ÍÅ! á¾6¶Å·ç™ (ÞÒre6‡Ö'P˜ÇÝK%ãÑ×J_aMW[a±HÙùë#,êRó)´&²íbs!´¦Ðtžaß3J¨ê*µwò ½çkm„䘙L$Üy½X tm3µ‘35?£KHŽI£¯ÜËÎOÖu™Í6׬뒟®% Ǫ®°#f)\, Ãxú ûOÌ¡N€À2˜µÃZê^•¿=ìh8‹25}] ój¨—3GD{^ìÙÑptŽ>3G~çëå„ ÕiSzr+_‚+ìh8Ú$Oaÿaæ÷„¬˜7®…!ª+™I-dĦ‡B7Úbƒö[øhœo îúçÓ"%ða«!äl(¡í~%t'`9•®Î]=}˺XhÚ’…*¬˜ÌT$]{_ vPÖ岘94™ -,éocsm©^ä— Ëºú—aôµ’:¡ZO+ „ÂâTu³É¦ÄJèwÕQÁËéX3™-dº“Ñ<àv14HH…µê±Ô¹ö\2±³?¶‘b+{¼´^«j8ÞÒ.jË$`1ˆ©>¹4ù-Ò H«›õ‹)°µ*f<­XR ¡åº˜í¦£ÜŒ¦Ò_?"Ì*étu!÷ÕfeÙ®ÊÓ&½¯1„ãñ‚\¥‹ø²çnQ;·0vô%•IÑî·¤Re=W/”ho1EXÓ%ÃÔ W¢ób0”°¨KFY|%ê3|/óA¡ «‡•j–/ÎÄ–ye îÛãW.^(ö)Ô'ú›î“d‰¼Ó’Æ9îÛÅ“MRK‚6WÕɇ’Œ–™ŒD¸e“<ÒY^Ú†cñÆ’IµC.‹³¥ÌØ$§–؉Iê å¿u—©õ|é˪ °Ž¬gÖÉLNÕfî¦çåy,ñt>˜{wØ gªÆ¨H/Q{Qj~C‹5D¾ºLBM—ÔÅ€óÎOÿ‘PÒÕ…¯ý.’. ‘3a­Ûš}ŸA‚e:eÓV¯Ñæ3HHÍâìw’%Á‚3®‘*àU#}4¡#¡½³›VTÍË;Gny*DµÎ!ù£|f9+Ô¬°™—Ô8rk¬À£?Žä­ê¹-s¥K…´•–Y‰!lxÄ m%L|½Q£ô´€¶2×¥#td;cP§ÎÅ9ÃÃkwÓ%BÚª «ÒGÝ%?"JH[ S7€2F¾4FH[™ª/xí¼G;X 5ëžLæÞ ªV¸m¢\L½’@\ÍÆ¢oµ˜®¤’PÕ5Bo‹Q”üDuIe»“)æ½\l Uí¶ÇD.VTífQ¯ùr. Ì×. ]—†¾œA¨ighÓ±=‘ üWGå7 Z$hZ&8¯Ý/”Ë¹Ì Ä¶o=—.»PR`Ýìh˜)ƒýP!—P„^ûXƒÕgèÙ!ONÐÊXõâ{¨g;óm*—£(ìd,Ê ¼†RòÃŽ”Tا…0×Ò{~,’ 󨽧åÒÅ$J:̬}º…flüRH‡™3V* lîçQ¨hcëìásÛ/>ˆªvÍFlxbîÅAt·Ý7ê¦%=?HMIŠuöx2ác{ƒ)u -ßë¬ó‘JVÌ YfÛ‡å+±týjÔzÍA~H—® jÙè2™IwÙAÕR¯x}'+gÏ Tµ-p% O€@×Ö© ÃÇs§ÓǕ̘ϊ€‰áhÓe- fÌþÍU2k¾ÐG76x cêÈWb)y±Õg›™¦;Œ;s/ôŒK @ÓŽ‚’¶µì›@¡¦ÝOW´o”ž? AbL™v9æ˜ùª£AZÌÎ{JøžžßÛAZL'ù¬1MI¥EeÓúôcúz~Ö…À­wˆ{©æ+lKº¼Æ¹%>Âé„q/­½än“E¡Ü¶0ì˱–—¸Á’®-a¦íI~zÙ 5æ UFšÎ k!zi¾vií¡&¥å''0¤«/tnôŒò’¿‚äÅB›6õ´¨tEØÕ\Iª­çG Vs™¿Î\(ÏŸÎß–sié y]Àr.y:`|=êæ"_€,¾ÇƒÞíÍ#8XÍÕbiJm5?ék´`oðj!,æ{!pöÍd·÷<ÆÁJ.Y ›…³“™£QPðôé¦c>Ùw€cW\7³.²d903ò@ Ú«±’i¡ƒ˜w þV ~oazfÖ1mÏÀ¾¯ ©œ¾vZd´*_Noxë5³Ž S7nÿÔÐ*å°Ò_îÁ»òæÓ\ù¯RسÂg†$G&¢ s-|œ™’X‹ u_G.|øÚfÄ„“Í#@D‹px› Øì‚NÖ˻ѡ÷†IØdÑâa!,5l­1GN›YGxùWÞÛÅ8§ulB”Ž\Ì)³è…ö ߵ̋h¼û2“µFƒdךmb®óìJž*³æ–ŽBßÙžÔ½ÔB ¦&àŠÐÂôPÉ{KžkîV&!jV©³vk)ûªNo¯p³APÛD†Ð,s^.ìÔ]êf‹3TÙÓ]ÔÉ›œÃ\墄b媓zÆ ñwX®¶¥?„É['Åt6Jδ%å‹Ü–.ªãñ)ñÍoEèX¨*È'Ì\©ñ`áÖŒŽªè®GÂâ­éIÃtoIÄ­ل=<–›´X·5ëÀ•í¡ºÒ õˆ Pjc2Ñiì>T*Óë—®d%Üu[k3Ýrùlà$ Ò:"Ù¿/jØF¨Û â<ÉëÆ Å[c³cÈ,Þ’± \êYb7ë %l¥¬Þí-y²Á O†0Òì‘ žÔÚÉäUï£Ñ¹ÞÒ.ÔFhF( â9æ@¦Í)żòæ/´kG¾lb»ê« Öf/Ýë3›¶ô OÒ†šžÙ4Bõ–×[ƒ%´g 6”¢a;=gp&—Çu±§&£œrÄ€”š™Ž7ÇÒ#yƤ]ZAnN{v~Á*}J«¿Mʃ5HXí6Û¢g=ò‹ÞSc¿¿Y÷J×LÅÀÿR|ËpN=}¶àªª¹„;p¬­ç¿rºªÃE5¿ ¾÷Š4|sí¤äwC©=4Ô|ô’rTãi™ü…QúÅ:bEs\whŽÆq(¡ÝQФ!ù©š~úüÍtaÓ¸¾ü۵%@4ŠÂ­¹d³æò 1íO#›/I¢9BzJØGx®ÅÙÊ ÐR`Bn ˜¸R9È©œ|ÅØT¨‹^þê;_'56êæØé\Wºn€š2MÆ §iÂÊAig†£ 8¿iŽKIïÈ,T©›³^g¯³§2 ß~aªaKKð,Tª«‘:™»·ôáÌB­:ºR3k~Ø,T«ãòåF5޹I€P±ÎÅÄ>ÝüÀªÉb­ñ˜¶_ Eòl“ÅZúøÛ_jqöy±êÖÍ.v£ÖžX5II­Z•Ú¼è2AI5ïÌL»J„ÉÏgúüÊÞs« ÛR„þÚ:÷¢u–a¦UgÅËÜ[ÖÅçý¯‚t2óE“¬T7KQù9Âüé3ãý“ó_mcC®ýdRK—ðä4æÒ%@ñ/œÎë ù‚—IZª˜„-ªiELæ BZÊtè>û'ÎnN€Ð (£†øcÏOÍš¤¦fgúÛ¾ùÊÀIvj×É=EóÅ73SRhwjù‘q3ÐS•öÍðyt+¡ŽÝ7êÕíå„:Ödƒåså[¨ÐêÌçk­]hTko”—LWÙé  Žªy›@ªéÞ¸#g†­¤ã€ÍŸù’ŽI–J‹ Šh•XM€@^¥±²½@ zgÆ­ ©ŒåÙoŸC »;^âåYéB¤ ªªú´ð !ù‚›I²Êÿ]öÓ†8 B »Ø÷Ô䄨 ÊyâÈWíL! $ ½æ+/öB kÏŒÖêÅÆ 5l¬¡°Ë˜¯Á›B k: ¶ãêóât„v-&h sŸ.@¨a•èè- ‘` E/"+¡†Ý“œBè žÀ †ì å£[/ÎòjgJE`or¾â`‚´2ášÂëWg~äÊ$oõ´>ûÒH‹f ®6ó¼-]Íc°¯zmµä‹&™+-¼À I`X‹z¾•š¯0›¤®¼·âá tUÊ$}e.(BО!Q.ö•üê”N›^v¾fh’Àj¡šg®¢?Æd„$@lÉ¡7A‡K8¯uö–Œ5Éa-]ŒÊöeJ`|K«YU ÖfìÆN9 Hëî+¤á•‹¡jåÕòèÜ,5ë` •W|ßl ¤u„¹? ¾ V­l•o¿b>Adãp[k,¯KWLpYž 2éîŸO4If­Îîòzçô•I6kljùÕ¶æ+—&é,sI¨ÕÌÅ¡.9ƒ@`G©=€¬›ÏÀêžú¬ä~ñ9ÌZÕ-ÜØ9×HhëÚ*Ÿ-ó‹/Ž8°XÇó›zq3åk˾ø–º¼u&ú@…üÑÓò9Ž!ÂPò¥F“¤Önœ¿>ëäÌæõëâìµYê¬ù%¯µw(ºOä1 ¢¼Â›]ô™Qš¸.Pö£}qmÈly «ª—\\›Ð“PBò ú$@Þó˜-4hCÅñY'Èê.»±lw/ Œx-Ï›fuÄü ^Ë;Wð¡°Ãå÷©åÍMpgÖöÄ‹uÀp›(E’C(-ï0ü½Þö6Ÿ²¼Àhùc„8Öæ´ÅÓ"1'zôyS9¹9YÈh×9¸’zµÀey]$ýçMe_ ²ž¡ß{9ê…h‘Çê¬ X>ƒ+yÑ:ÍÔ§“òBÍŽRY °œ—\Ö‹D –WZü¸i,ÖH @>}â8¾f=ÃmS_é¬k‚!1NI,jÿ2mÿ)ɺÕùâ#EØ,™Ö²¿‡l–ÊTÃåù=Ù}O=Rj×ì%|KH²êà ÑÎYÀHhñ©»°Õ½›Xî[@X5w† ¡ã¹-0V&ÊS™š¬ã[ «š×â3FçNž+¸*¦†×yÎgŽa ¢©­±HÔöèbÈÎSå¤Ì¨óðpöK ¡.”Lé]/˜*o@Æð”7}HÊ9i*m!ÁIæJ–.pTÞ£~‚è•›»¢A‹r6íìs&7T©@E˜MëMA’×D)žóÛf5{/W$¶@Oµ¶xáÍ”‹bÈ~Êk¡È£´2.êxªV}P/¾¦õšÝQºL ‰‰ö1ýêcï×–ÑU’Ç2è/i‡Õf+gÉÞd–X´š-„\ ¥š§ÍQ:˸!¹@Lyƒs(PÏ É–,ÐRîÑj0„Ù­ãŒ)O“œ/Ë+Ì\;c@FG%¡´‹Ûi H¨çïw`ìÅLü#dÔYXZäcw† •-4Dgºi‘’§çש¬‘ßÑ QaâЮ³Ž|è=… V9AîŒA=:ØoÞn@çðˆ#¤Ô\<Ó+4A)-;æO°÷ÉRê¹FL<¢¿v†àK?ƒöÑÇLbO)¤îÚ†®<¤´Ûÿ1¶Vºp-Ú£fJ-¶òëX´FWHké[ÒÅD ,T¯}’—³kŸŸB³ÈBí¶o~ß0Á T§ž+ø R=ª–¤Ú†@'o¯Â½XIUE>É®æô\ì „u–U¸’Q‘hž¡e:9ŸÔnn¾Dc‘†2Oaòy=?Æf‘†’ÒK÷fïþÕªNP„¶@S ô™Ð,’Ÿ´@Cùè@f>x?—‹•@`ÇFègÚ?Êž*mˆ ïéÍYÒ4kÓÐÊ2M¯¼™<áhô¯|ÜÚT®»‡â¦±ÚŶn>z=4BÙL ;‚ìBõ:*2u<à:ÓŸ³ACu7þMjì¹wLß`¢zQ–YíZ  *ØÎ4ª]×Åä™]¨`CÈŸCUNPÝ­+‚R ¬ÇÐW²oö„ 6´º²Ãak§ì(átºæg½ì¬V A`N=?c‰òÑ’”µ)ùÊ—]éþ/Ö6›§r È„ñý9BòÒ®ãâs °Ó´Sï••t  ¬­*å®zñ9´‚Ùy!ñ`¡|d_(û¥]¬‚Úu°«Èáô‚Õk±Ó§\&@¨^{HÝù9XDTïS˜#·g£¬ž»7ˆ¨^Ÿ^Jß–ÚÌÏšÙÊÕv•*Mº\€P¹îIåêöõdu¯ŠX¦™Ã. YÝ£s!»‹}…¸î'-ä d²ÑA„ºuI"ù²ŠÝ‚nÝ‹ÖãgA¨[÷ 4ŸäªlS£9Œõô&Ë‚@·úøv†þG¾Ze“ž2— t«Ö½ògCvÊ{øÁP³DògÓƒ³ÕB÷˜>ÑQ#¢|)B-­v¹WòS*L÷ñZ¾Òk“£ûžfµ]èU^4ÎÄ{Y7\•6L|0+° ¬ð˜˜½… –ýÍLc¼{ êWSN´±ö†BJ€0:†“™ô ÈZ¡ÖêýD¢3?ÿgƒ¯êŸ&Íiùªˆ ÊÊlqÎ…±5òÃX6Y«]%èÆq1ÑeK0^I¸·r…Á¼”Â%!ú ±:x}rÍ i+ï¼W2W¦Õð~®ºZ¿ æÇ€{eàŶ’¼2ÇšZmN;8c04 !A|„‘° F]kèëyü_¬×ʶX£‡*gæ§lÚjs>IYoqµÛƉä‡Ê'ˆo¥zíuR5êæì #È zmmG]‚ÈM„ÁÁ^¼¦ºK>i~ƒËêž0„×±<ÔkklŸâCÒôêµ®`«uï–¡z¡IïÕ«éÔû=‚ýÊ(p»˜z²If¹y†E}xà,È"HYºöîùM>k™ñ£Ñûlå% Œ–ýeð«]LRÚ“Æ€Âq46/†„kNOãÉ ù,óÅá›xïÄü$¦=cØ5ÖG^|J0\C«@3 óšˆ|–¬J=‹Þ,ä[RÍ‘fãC3å;võ˜áºAiõ¥ ‘[™ Ó_ŠUG°Œ 1Àiuñ‰¸¿©ÄDµïN6[ôbžÍ&«Õ' ^ÌtËWÞlZf–F ]¨K€2‚‚r³%Ê÷ªópLÇÖ‹-P –ö5öÅùBZíÁCGIÓï’/™Ù¤´|v&ƒ²óé囜– ná+œ›39-{‡aèm»Àõâjó í!Î'ºïM»U&y~}:’fAèfMÁž,¿  ×ÖÙ…~y× t©eVÍÏÍâ$¶åuñÙ›vÂùJ±½)±ì¢6wëùòŽMRkÕŽ úœÒósl6I-ÏnÄ×xg«ìט€ÑÑš›M ²I@0Š¥Âà‘-D³ª¤—B†`Œ` ¬’ÖGÒ¹’Ðzx1Š•À ´ú¼¾/î%°'t~JŒ^@¨]'¥U´s¢|ÒêŠþ{KÌž`«¡¤µ×íU¥µx5 -©Ät¾50+ûkùPÍo,(­nþ0ê ¹Ø ЯöðnhˆÏçùk [ígarDeaxÁOÖÆÜ:;|$>ç[\Å»•áKc¯¾óB ­¶ äQŒ‚Ú‰… šµ[é^õ€ D³vÈS3a7‡óUSÌÌÈbÝÉy%+¨Wòê‰ù%¹¥…æÞ¦våÕ¹-$LðL| äu>QÛÄΆÙCç•@½®ÎZ^]O"kv%¿Ž6WŸºÅ,¼­l#SFËëEr[ª{Ò‰ M~ Œ½nfUš‡³òÊԖɡēüŽlZ®ÚÑSÎ;^¢àü5¤¶vÝ‹AàQ[^ZImME%­¸Äü×@X‡IloL—?`2[{R H©œ¼–X ”«ù°ì'“1Î+|Ç7#s*WŸcÀÔ.°ÿ®åµÀfp  Š?»'¾_È´«½é°Äí9Öš“Z‚5À¢ŸlW%ä–+QüÙµô•¾Ãä–6Ý ›]ë+Ap`„’íÕPI+‚ rK?ÓiìX“øÄLº`ÏÛJöHëù rKE^ç,ôâs@Ø#ÜyuìŸÓR_An©‰(Ú%¸}”6<+¸-3Ú;i©U$­‘*¨­a_©_kË+“ jk˜ÁÜôk—´’® ¶F]ÔÚÔÇ\Øó§|üFÏï+¨­QŸö_Äcïy»¤V† OìõT&gÆÖôØÇ&'>±™$µ uA­‰'^ì bYRCãuçå•Ü–t晪¹}š—p[#D£M\ÇÅ:Èl)‚Œê½]ó{Jb« )^tñ-Ö=QÏîQ Éky[ÙZâ5ÿÚÖêÌ´7?i뀨–ÊÎSöbírÕj/b%^ƒ 2°ú„Íh®ÛºP®d¶ì±aÛ]ÏŒÊq§rÝ¡ËY+]óʕ̖—Ö³~Ôséó{cÀçs²O€Ilþµ5´7”®Ì6˜²~Æ€-`oCüºnvªÕSR‹“Ÿ ¼–BjÞ9ý5 ¶ÌgâÝ,Òg~[AlÍ&•3¨¼5oEƒØšöŠ#'Y½>8ížT[ÓÛØ1H1B‘Ô4Á'|EýZóqÆ bk ›Ù™ÁX.OðZs ¼ò%oP€×2Qc*°·ØÓ‹}]Ü9&MB"ÿy%X³]cX|æ=¶ ^kzÔ6c}çeM)°kÒ³0CçÂ>¯5ͦjÆøÊo,x­iòŠ0TE/ÞPòZ•šÞ“ùz^ÖÈk™¯£Âÿ{¹øš`¼¦™Írã “ØÚcã1wwðâkh»†ñm>©]ðæ3L×±9§“W&`¶lé(ÙSÞz~%ƒÒnRdæíW0[žg³¹’Újþp@mi}Ð}ô}qs@mÉì,Oj^‚™W ¶´6Nmm¬ž×Ò¤¶zW©’7ÉlyY·Udåo0˜­n òK|âzÉ[| ¶< ]û¼ÅKÏË+ ¶Ì»à–8·•5–ly±¤ä«}H„u0ûý1“¾å_?r[e”Kõ'ã:»%,Ú2[Š~Œ’—V0[ýI£úÖiíâ%gÕÖ˜ Æ¿›’”‹óe·¾…/¹®G…ao·>c.#„’Ÿj«y*àU/´+{6Ÿž…h°ÕÎ lš¹X_¤ÚgÉ¿äìEhWÅŸ£ùȃ@`×óš> ú$ÃgA˜Iø3kn]ÄX¸e¶''(êSVž~-“cà†É¼æ¯Ù-WNߟãDG^NBáV cÕW˜ÅzÆ ;C«€þôhÎ~ Ù-fŒ{"ÐÅ·Àð¾e(¦Ñ%¹-3Ùfȸx?Ém¹`„¡çï™­±{¹L{Vó˜--#]p/^O0[²¿f4æ œv¤‘Ù uӭކ$³cS#±å½Az¾z¬‘ØGá£içF'k$,yD2 E„D{Ð8›‹ÊéÞ@lɬ0ä]XÒcµ Á¬útàûYLIN€0úZç¤%ÞÆÍJ@˜%B Xe¥çjõFj˧à@èëêéqt½Ú2-¶9QÒg!ä?Ô–é k`؆߬ÁZZÍË÷Ó­½Úš«tœŽ÷ÐÇÓ—A4Ë'ÚÀ¦RÓE¾½Ú² Ù1•¯lï ÔÖT†»–=.0·„C±|zbÏK=ë¶ÊC@<²¶Ÿ¦ÕIlÓ “ôB±±áâøDïG:òڄ͵‘˜úîç™ ݇zp@gMµë-ŒÆ’›Óu,ÍŸ0˶ÌàbYO}B0Y¦fÉ⃡ý¢h¹ßòGŒÍ|= üb%,ã^›sªÝãÉ ,»šB„oÌRÒµàÞ§cN9K-„¥l ø[µk'÷¸öÅÆ²ayȵ/_I8®>ÂT­ „ÔÛ,åu=ù-ïÒ½æŠÿb%° êf#™¥§›\ô~ËÓYn×øÂÖ"Áµã„7j{Áe†4ãYêÓî.Äþ–×øsKvIc5ûŠÙ„eÁµÃÑ|Ó€ÆÊ­]y6}_È<ë¶Ú“–ÿ`”ÆI„eÜJÒÞ”À¾ÐÂèka{ñ/v„tìd!ϯ¼ÐHà·d›?¨˜Ws^¬âjO‹ký Íß>ð[ÃÇ1M%4ßK€@^÷.̇˜íÂZ½5ªrò‚ÊÓÊ9 —«ŽŠ”ê¾Ðô ·˜¨Ÿš˜<¤µ/PLj^ì„UŠÅ|Ó¢K9‹ÐŽú“`•nõ^¸¨’ðAN+aòÀn•Ÿã”C„]ˆJ ‰¼ y*ÅË[| Ü’ªRE¥r0ìì–ô0åÖ¬öˆË @^í_D¥¾w6E°1ƒÖTê¦6™u]ì ;ºQC=:gPX¼5ØLœÈ¨( Â6V^‰wä¹Y ÌX¯ÌeR~ß°@3( Ã66¯Ô ˜?Ä\ìßvC#»ò[q7´ß/ƒR;_ éÅí ] ÃEOX5 ò«ÀªÝ#¹8^p\?È6S)Ú/.2Y®xý¸n.2+¸¢jò‰–r2ÓLÞ8ªÞ ¬ß4Ó}Ýèö'Œ›ë¡ïq±qMeqœwiš’Ë*®ˆâÃ"ë…fZ´fWA*)Ïróz€îú2ѼY LïTŽ/Ò6úÍîêo(Ó,Êqq-ÚÎ|Io46oöeþ†â„Q»ÙÈ®=ìãl¾ ÜìËþ åS…|¡^Àzý@鞨s!» ½~ 4X]œˆ¯aÈ3Q÷Í!1ÖáìBc‡*°ðÚÃ\o|13Y¼ù¸\{Æ÷px³ÎyùÕNðFzåbwÁ•ý0å¼uÈ÷ıÏa´Ÿ†=BåBêÀ•ESnxRÀŶ€+ûa„ Oœº]peÑ•¹•9Pe?Lö[ùUöÕ±»Xõfo Nˆûœí朋‘îÕú…êWöÃÛôÞ7f m8è(z½xŒ³à©µ¿ø¢ÅhBˆIèØLÌ|³ ðÑçz!ºàÊ~D6¼e˺ù"†B¬Æ{ÇŒ›3B:¸îÂ>ófà® } ®Ì›#qYw Üj…ý BE¡íof_@;̧FòÖÛln0*ÚP™©°o´h².ö Ùô9d(/»²LZá°”é#‘oä…m‘Kc¬MºAsfV2Þ ËÛ(óUÛ G´ÍjΫᜯñL©û·ÜF_æÝèWma€Ì¡ÇþÅMCù©¸J£ 'ÌçqÁ½pe„™÷ä`ßxåè¤Ì® ¬¤LÖ×αGv=†šóÂûE@@À—µ¶+«úó¨¤×‚ó«³dIéIA˜|âgèö0«”ìW0õÐ'ý.%9®ø­êÙ5èo_ÑÌ:ØÙ}¿}Å͵&±µÊ9Û¤Éaý†Ðf 9˜<äft"™Ú ƒ@è¾#€ÌšU9½ÀIfïÅâ¾Xôh~ ‡³Úo_1K iZ„þÛW˜¡U³ê äÕ¯ðy‚šÝ‡o™´ëØz#-“$­b£¤†$Wÿ¼ôž¾Ø¿×tyÇÉ®!dl4Õ0„Þ“kµ\a4z’DøµŽË›­kò+ÀP™…[Ñ¢ÝmÇ&°S^JÀîÝÛ.Uö+ä·5x‹Ø’Gv-¬ZØî³ì™Up¡eaø Ó¸ufæokP/HÎî‚Lkv”5YMšo ¡¼ù*Û¼tMª-±2ö/“?®¿üuwí“êYÁ9ýø~ÕZs&´’nUZ-UBŠØA~CèKC†æAñÞï:)H-ÔdÆo>$y䮤²áÚAú¥-é”)+±*·Á›§Ìœ(j(Âêò— þûkù寛!Ë‘'Ö]¡£9êÉÕƒAú±Red@â³N’jZgiOfà d±4hE»—#ÊŽJ­VFì¥|Äãéý‰húi»À@2jm¡²É¼cÎÕ¥ji øá³šˆÛÄ#­Ó97«Nå/çàÓWŸeT¦‘Ѧth+ùOA ÕšLö¶ÒiåBÈ{K¡Õ¿©¢™ÇàÌ, “qI˜r|Ä@j©šoM³³júÎ’ ’Çíùz$L²?b P¤¶§°YÖj3ýZ“²Ÿ8½1`ZÐÉùP¼-EæÎ¯ƒuªÂæ—Ý´Q^ÐC3ÁзÒcÔù·üo)¾Å›Ûk^Äà¥ûÈ`Ül‡ÒM·£ Dg³”3u³å:à ³Œ´>ícr©!“aËÎcª½Ñ4nO«œ$žüUØÑ“gúʱRJ´#:üÉÝÌ SyZà?×Ö3öÓâÁ*)4_¼£@ÞœcÔl°{-­ÓÙD°µÐ³¢ëÎ ë£Ì>f§ô:zK_96\¶„bB×3#JÞ.þBvÉCÀ{ò†éÜ:l`ÖÕG~_@˜5*Âu83Ñó 0Mu…á-$³Œ,5áØw kÁ%3hYäUÌyÆ—6+ÅÌÃ^ëâscÒ¦óxWà4H˜56ëAL5^0[ŽÁö»b:õbO8kUålæ§ò1‹¨©¾S»ëÅ:8¼Ålmús±ùîÒj&*Ûz~þÅׄ^Âì³î%óâsøü Ùl³5òïÿ|ì¼ïØt[ù Öȳaù‹™ß0DÎ ‹†j) sͤ`D)–*ª¿Í·ºXK ¤°ª·ši–?œP5V7=K^ÔXÿT½W5tI¿Á@¨ta‹fŸ)“ðH>Ú AãQ[];êöhÒL³~÷ÄuŒÀxϧYL$øþ<àY6+lÎ ¬~rþ–½óz ?íÂJéú%@èÿûtœŽ®¿8`˜ìo´óq'7 ˆÌ)$úÒ - žÉö¤²‘Pkz±ŸÂ¸OdËË<¨¦Yêf ˜œA¤JƒÙêtM½8_™®5ð#¹ô2À:imùl­î]ÒÛ:8Ë›F#u©Í©iõ:Xõ4¾æ ¤0Q"k ››;ž·÷x(×´»kÜÓÒ:@Eµ=“è^éVlTSmô:íéÈ¿8„Tó‡ %†:×HÈj"Ù-KÙo4Àî,b«>[ò{~ªiY-ÄÏJ^! pTv:,8÷>yQ«dj¨ñÏê,ce0KJžì§,¶M!áÕjË¿#ÐUžúÆ´æ­ŠÁ¾€öj¡“…?[#/°a8VkìI&…ÙœÓs¬ßHÀÁéX1ø­Èxò©L1Ù!]øŒÂ†€kô­óÉjLÐH ÀzmOG©o¢§3é8bÕ´ÓCe~¦k¤Qàp­=ùq²§]€°oŠp©i…Ùo–‚@–¹ðý®·¡¬P\ÑkYr³(ÙUB¨Ódy\-'dù`xÕÞBå…DkéÇvñ1½ü¶ ó/Â܇JýmK|w¿Ai¿œÎðù}7Ô33ëï(¿ í”ÕÆÍZô·ûcZªÞH {Æ»l ³¶›µÌßôÊõ¾¬ßtÜ0µÂô­ʯúÖ‡¼ÉžHùííÐ'% u+¡>Ï9©y¡WÈléèõßð…ò&O“C×nGB¬ ÂÓðlf¦Ó'P-ð _±(‡FgPÈmMý+}®( oéà4 ¹}ð[ÂLï_Æ—÷_êÊf+@³¸™U;›Ê…N !V:éAEúÍî¶]k#iÁO|æuå,,å_§nïX¿ÛÉŠ,ÝÐû—G4Y•UB]×,"3¿-¤X3%KÓ»óÜ  ²ßÃTðÍôÅ x±úÓ\ÞÃINÌþ[¥J Q¸ÊüícÄž€z³%ë·µˆ©Þ~³–ýÛñx5ÛÔ² `•¶5ôM ü&µMŸ\÷4HûíyÚ £ÖþÛe6±Y7R¦fõÔÚ” µ=ë¯ ÷z_ÆoJ®õ­ãæ çoOˆYüSnÖ²~Sþmšq›U'I²ø(úk«_’ìÇ /Nç¢ ’L?í²a'(û›ð¸l¾`°?{›!W­£¬÷…À+[Ï4/‹]X ï ™ï ÛÙà7Û‰3ÀZ]»¿5š È|%lVdN^2_‰;Ñ/ aÖ[ðɼÈ<ìÉgY/ °Êã|E#š€õíï °m¿’U¿@ÌÉZq%ï !Îe¶=a÷y^?Á‰‡±ÂžT‰+Ùï Èšil¨n2‚Jcß‘ñ*¯`ÇÄ£ÑlQ&¬ŒÏ޼y&Ø10AѪFa%~£_@àŽÍ¥(ŒR¯?™ñö½ïˆRèkážÌ­# ýûžP^•©€æêváJÖ‡z{a9bÌo^»íp:ýýkB¡WG4Ð/w¯ÎĵÖW™-&îlÓþ ®© I}Õ® ÅdÌ‚R-o…Hz«óyAÄ«ö…-QŸ¿ÇÙŸˆø Û_¬Æ¹¸f,JëZíýpÀˆÕ=$6o9ˆ¾ï äµ–ÆAAkôá×”©ÌIÔA¢ñ}Ý}í=©^—–Dm½6Ø›¡êë)û€xÝꀩås¢Þõ+ø0éAô=~t¶ÿ8Þ×Â"ω$Êf Üû½«6üëìuéK ýk÷ülú «j »8Š„mYŸ¦$/(ì°jÏNø  þb¼Ë 9±¢°ú¼ mèGÚ–¾›laHVQx¥Ën2Ã^ôÖ^ßÀ0$«³órU‡¨™w¨¯k S²6©¨5çfB’)òϤ¦öa_I¬ËTmìË(ëÝæ”,Ÿó½/&ð Þ“½ŽŸÛð"TØœ†f¢ ¯Ç0>íc_0(·›5X†Ñ âèWÈ­Ùl°d}!¨Þ®~çBë)@èœghÖô:ˆ ­©#¤l6Ãøx¼/°bÍ:B8s›‰ em íµQÊœ tíãÂÔ[á~ôgØà ípvölÑëÒù~ý&í­…_ãA‚|J™_@ «^ÕÒ‚] ŸÔÃÈêØ%ÈjßÁÌ‘ƒKÁ6Ÿ 3AžDð–‚=›!jüœ!ŸNh/ ì­ºEÃÆ*ži‡Ï¼šÃÀ@‚ :Z9œC³Uj+éï®(b‡ {ÂJÝÚk}]É¢%ëͲÂç(0Ú»¼’ódx%[4™ÿ2ÞŸbÒ`¦Ý‚6pFݾòÝ𠦕 Zl3üŽ÷£!fj8MG,´?á [Àèj@&žÏS—÷ã…Óej]ÂÉ,P^Îðî1±¹àÒ‚È7ʈýã~yð_öB2$k. Û¼Éóû[úKù-µV¸÷>qc¿ž ¨/C˜;®½™¼×MÕÍW9ó¥ý™=þýêm쪘Qü5û¥½Ñ—õ87Œù¤¿€H +y"ï{iõ)9d‡¯¯í·'˜/m£é 2Ò ²æ»{Oâ«?C‘±¸’ùn×€÷R/‰a%?*|Þ¿†Í0GíA‘ìPy¬ŸQ©d±¬ôhÙ„Š4+úúR,ÖÎ.Ë;wp%æ ¾IÉb˜7φ¹N’^^/Î* iudWYÖ”Ïø„Ú­“ÉË-a^aÙýíp'_™{Ï+,21Ð@>i†/ ÁáêȘXÒVP&ëS°ðÂÄ%ô+̼à®m¾Þ¾ÅÞ„m/äKì~ ñ»^[¡Aáï§·° nèx¯-v*l&Rƒ(s”ù™ò‚ÂÚš)Àl!‰×]âW£bòò–‹…_´tÓ;_û3ûYˆNí0Rðô4üBñæUo/à"å%U‘1d|’!µ—X^ÈU©g÷D6Êš2c¼”þ]èXæSj¾÷eÕY.$ûi«ñ‚BU«‹Î¬Óoq-íýò2]( –gŸFÇúÕñZ`¼¼‚©VbY˜7,¯ª¥1Â5FÐ ;ˆîÇÇ3º¯²ÙØÈÖRZ@§µÐ˜­¶¥°tÞ×2^ÝÀŲ°ý” %œó~µÿ«Âìa‡·²ÌnäÌæØ«øƒôú$âó*>†#b‡Ma×öÆ1ØæÌi©ïj¤×ð<@®$ää{ÐâÂRñÉñ½û³E Z”»š¬£,f‹×ô‡¸Åk`jôæ~…=)‚3¶gr¼› ½lÍ/>ê1\ðJœ-°^Ã˹Ò žÔW1ë5Fèæa^ò€°5sz_ƒêó]ùÚ& 7Í@ö«Ÿ°ØÛÐ>€f±×nàp–§=¼‚@`ד®ð€x|Îyu{ëÁl{Ð*v{¤häOyafÁ:éR8ÙïáûŇÊ.œÛ.j€›‡r^‡ö¼0 Ô ‡.~¢¯BÏZ0ï—Kº• m½[*,ÛeA\­†xÁû˺Nvޱ=™hK`ž`×kà½Lc0Zn.â—ŸxÁû×(1|ñWa ¯1ÐÚËtëÞw[mî]PÞ}Ð^ÓÿÜæƒÎnœæ*|È’Š›kŽØ£“¡½P•×`Ý✫²ÙèÈv›zÀÜB}ß mcÁxžH쎰߿†C®Zc“3{ìl0^ÖÅW‚IqÛçÙ„•|Êß^@/ÛÊÄH@ÏΈ­8Æ»áÒ˰ÅYkZY­ù~qÀy™^ QCŸbãQ©_7‡PnïnË•˜aùýº]¸Ò:%»“ýþ9ЯÚ²Vtÿp²ßWÂÎ\4< ^$“÷²ÁwRâZÞ"à‡“ý Ö$#Mý³Ñ‘ûØïÌ0ß…JÆÛÝÇï+a×x“tn«]œk;8p¡ÌÞ•Á³!ÃÔý{çeøbÛmÒßfÃ-p]jž‚B˃ØûKïŠl—½Á E`û=Âø>ç×_•#ø.C™TÓæ%`S>Þ¾¾£l¢,b ‰¾þ§<á¯c€ðZ¥ÉâJtψr0^so¥g<ÛŒ›¯¿Ú{`œ—Ç¢{@aoŸOÄà]ArF–m tÛòdžž± }ÑÁzÙ²ŶQj?îõ»UÎQYî˜csMá³ßƒ»úûõ.s\–‰ þÚm¬Ýr'ý5{rqdÖì±ÙUL9ý@y×ù›5v§’,kpð–ûúïK¡%;… ž×Ð~lîëMdDïÓ÷ºêhÌð]¡ â ±UÏ'AÊŧóÿë±bmU¼ÐrçUÞ$è/ï÷Î̆†’èOjÁû¶AªìůJ{ÕW6oÿZ¶ •'ìE7ýöì mÔ–öd9—ôŽ}ÛdÉ3½2:=l·Ü_A n›QñDf9Œõ„öiE­âÁ€Œ÷#ÞT·Z ŸÎ" ³ÈÖk ò¶| 5\§žüD ^?Øò<.š*ÒuõS¼þ‚õæ@ŒŸ—2Êúûƒ lÙ=[ ‡v$û}‚J¯!0;ÒÂG¬=;ÞwuD)iÞiä=©{3/¹UoÁuú$¼ ÄÕÜ,ªj÷Ë$¼>ƒ À–W*YV»«ÿv6 ˜«;|ü‘ðvù6°åîø|í>Oÿík60O›¤2)uÇYïŒÄ憵Zé3Žªè¯ ˜ç^†p#Ué㥿‰ÚfV ©ÏíA|ùÃ¥¿ƒ@^û“M÷€ôÍD4ûç÷ ¡r},Ö/Îýñìîw¬z“"Ô]î²b¼ýš6¼A~™ñ¦ˆmÍÝ~8ׯ¹#Ô—chÀ˜Ñ¥¯.Âóe_ñÚÓg:Eý5x¹+euobÌQ¢ƒþJXmÐ^¶­èå˱;ó|};w¥¨nZ%s/Öƒ¼ü×éåÄE4aÏF_3a6¯å3Q¨F´Õèã¿*ÅÍ/sj÷©Ð/ô¸ì¹¢r^L¬ýÐè¯Û ¦k–ÂâŸÕ9§ðkx•Uð\Û§uáê•9"ý½?¡ž”e+Tc²×Òx'06x.×ahÒçÑaz~ÃsSß¿g¥¢qö¬•Žßx½`l`ô ®îp%æz¼Ú5D×ö4¥€B_Ë;¾Š x.ºÉáÕæG@COò]¯æ˜®åÅ(8ã^hë¹{ßçûZ _ÍGäZZå°†7üšÆ½9ÆkoZ%Þû&£S¼ïÅfd—©óÎ+hö#C0Ÿµ¼*ÙNwËçb¥¬°/v?_£t—iÚl-Ÿû÷ŸVÅ/(г³pb“íîg)×òš·Ùþp E€Ëf–jºƒ_Þå?´?4ë’ûÀôï÷ëòš^ß¡3UGË|7ûÀyÙuZ½òáð²þýçe²²ØLû¸ìèß¿^gp^Û4bS¼†^׉†ß ½¶÷„C‹ÛL¥W=¯)X¯íe΢ÞOùÀ+Æ$FAù4ÏüUØ@z™À°_ÍðŠ$zÕ.ƒõ² ûqØÃÕùPùï”ׯ–±•m§[™¯±Š Îk?¹ñ„‡ñéË»eÆËš,¯w¦Ä»qÌØß`¼LlÃÄ"s£Ñ­ý㘿¾=`¼l{­‹ùŒô‡{}wvÀxÙþr̈}'éó ÆËc°‡é'€œêw‘ãµ5ÌNmŽ8¬p¼ÒfŒ—펲ç{óܺ´S ÎËo×§q¾Æêw Hk™“¸ÌH`âÿ~H†ˆ«—Îu‚TJ6ãî53|ƒòZvÄœiV莎õkìåegÍ|]ÛÉûÆ¿sß”—SE1Ä0ÏKƒxP^Ûs0H=€¼_b0^Rï1ÜT q‚×Ö;l g´Ê °ÏúU!MÊ+ÛñO)ˆŽõ+#³'Åu ^áÖäÇб÷ÛeW¸ó€½˜œ íïÈ®í=\©‘:sFö«ŽÏe^J˜Wä…ä<—'Rô‚ùðl£E¿úý͵¼Ò› »‡HCy×­ ¹¼¢Š–ACÍç§¿ƒœ %&cÈ ›*ãµùÃÇeF§%0ëoá~õkéø^d ŠÐì,RÐÞïñW0\reÈÊ1x¤o|¾@ZmCÀãH(Boó&Ü×öŠ\mýGBø«˜‘úò«m¤5äÇ>å~/!;xóÔΗ9åm¼›ÂB™àiøU&ÈzºÑ¾€Ð$Ø‚ÖËÍ, ¥E<Ë{œŽÔ—™¯Hõ“Nú{ß)¤¾ver‘Ù;øûp8 ¾Ö䦃üðHû«Jci×vV2Þ-–v™Û„h_ë‚ø¡Ð_ï +»Ü™Ä¾:cóƒCÿšÁ…Ðtl>Ô3öy{Ks’BÒËÃ`TG:™÷á¿_uÉ¢nÝ7c‚6‚óuðŒCaטp¾º·ùæBÞ«Ç=îC œ^÷ýþÆwF%† Jî“­C¥¼vc’BºËL|½{œÚƒgLºËûÆâkV …SàïŸC¶«'Ðëi飯õj'Ùeš¬3¨Ô¡¡?Žñë½!Õµ*ÛGÛï6HZwŒßm,2]ͦï}u6¨7rÏ÷PK»ì‰CTØP@ù8ÆïQ%Övõ¢+ ÈŒ.m}µÆ+«»zè-êo&çÝ8þêW–w™Ì‚é­vV$iÝìyÓ±•å]^ÿ³ ¢?òËË[ò²TÖwõ§_ÒŠH Û"¯—°²¾Ën.ZQ×¹Yò†sòÆÑ ĶΆ]iæÞþÈR5+•%^E_ ÏÍþÑpîM3U0^Ó›ÊAEzùM`Ñ÷kùTP^Ó­G:LæNÿ¨Ù>¬)Ýëéö…"Zb¼@^]¬—¡„/Š7ѹøWn´‚õš[ZôEÃ9wô_ÕSí5÷\J”ÑkŒz@a5‚˜Õæh“pzŠÐ_¥¥}†GûܦÈÅ¿ .˽ÜÇòÞ?d¯—¼h•_­8µæŸ3,ôÉQ? *\- {«öqÐýêV_Ëtv¶ºgGâùA¬ ¿–½®°Š«°íø§züì×2é["!ô1^Sÿ¥6ªÚUí¢–tþ앆«,øÚO7µÄäf×'Vðº­`¿L§48žióÜõ°%¬üf\Ö¹ÒX;þþ-ÖgÓצ.…Áä êo¹ÇRÁ}Ùæ¼Ûê5JÌ y+s cSÎZ«?èïW'¿‚ûr½†¤Ûl6ï2þÖÐÂ*jôìñØ){Þõñ¾0_ÞG 6û’†&þûUXÁ|M;^ßÚGh5wà¿+˜//HäŽø› cöÐ%N*˜¯9êF%|õVÙ°Cäue¥—íÂÂÕ'£üˆ¼ ½ÆS¤ý²X~z"¯+˼f z¤ì¢ мts&«lͦ½¿ÕUIeWé¡Õ§‘²ú´¿Žz’ʯÒz§X›nF{Ë)•Zúl$è€Él8oTñ–&5ÔwmFa‹WJ‡¾y{¿òIë5õió…bÇÝc¨à•õª`½¦÷\襅*å÷žð†Uöéñ9íì}äÑ+Ûê,áæ”\ô÷Rv©ìk¨”Š'Å"oëÔ^*úÛD¹¯=´xÛí5¹ ²±¡½Ö[¨N–2nñÚL*û2Í©ÖÎoù´«{}=ÙÕÐOƒa©6ê€Ã«"`[ÃO€€1 Uýµ ®T¶5ôdA¬Dž ]¹ˆCe[Ã/–ì Äܧ,x-¿“ʶ†”tÓYbæþx¥ºªyít/ì.òÍÙk½›ÑJ{`ЋlsVØG.¾‚éò†+‹+Ñ^„Þ7–ͶBóç¢^­òÂ÷|%Ì*šSI±§KÚŽŽ~y¿R™(ã5 ¤‚ ³Û¶ià~’ B9ÀkM©TÐa£µ¸/>N$¼ÒP|Øð,µÉµpšé'ªò~Î]WJðc¼Ñ'­Ÿ0*±aÊkä3¯~NÚ{ý pbã«GÜÊz:“3(òª\@ŠùÀ54ùÔµ2ÚäRý*tœøµ{-\‹™íè#ùIåx:Žü²Ç‡WÚ¹e–‡×gjå Še $±—®¥†ðÊ~W Ƽ&;‚¬ŠLó¼Ÿ3דv;w%ÔÈ<œó·àÚ=)ˆé¯Äaí)J^Ì'$(·µÐXïTcÐ8÷k Ο¶¥”Å]9ôø“^LWØ”.,¯ûjÞ1 ¶­ÖÆÛ\6"¶ùN6°bê3ë oË]«Þ—"1psþçdðê0½Oh1ïOfû@ ¬ýÚKh15ÉÛú¤t3¯ãee°á˜¹Ì¥ ¦óÔvðiúÒQRÌø¡ õÉìxß®›¹(›Ó=>¹ow¨S÷¨ŸÊˆ% ï³ ¥r-Œ0ú¾´B-Ñ1fž¸l^{ bDí=§·…é_ f»Â?6ïD…Úå~nÈf8mˆ1ûQ žÕÒÐJ£¿¶@{Þºï7éßæÌîŸI"¯^lT-Œ™zß%îI©¯‰|­ÒNè‚ÀùI+d‹É~ux1“üÀMx2³y« 6ƒ™à½« ²K‡³^ƒÑ ÌØð¹'ƒ 6å©Q‚´FǬü8áÆn·kè[6ù–X1sj²­ÐÕã²yÅblä3PöÏ,‘W¹³#`·…âõ?B-õ5.ÑÀ‰§¥à6Ý4û?òzÀùü[ÄéFbÊ<¼÷Õ,ÀeͰ7š!þ{ðn`ÍD;gs–6uÀ>=Ö–4°f梲Ÿ¡<#-¾QÞó8h3¯¡GsQ»Î³„ü—©¯a…ÞL|&P°O—‚±'¿¾–Ã7ðfÒøû⽺C¥ËXï&ˆ3±Oª+‚ƒWÚÇžã ?QŽWÑfRVÉ•0>êSºò¾+YÐpÍtÂR:#O£ÎÈb@¬:Sô£—Âû¦ ‚LÆ,íMYˆe}ò@ÞÏr;žžá_(]cÂÃx¥¬Ø3_d \ß÷®‹OG²d–O T„ƒk(¶ßãµ´¨=ëž’Ò‚ÔöÐò~ÍwQ{æ³nZXË,t~i ä™×uOªwqœÐ÷¹òÌ;¶²ŒJ«¼´I/­,h'3N5ˆÊ) 0é£FQæ ’Ò_'ì==™¾=«²¹½5ÞÕ“îÙZt~em‰w«Ì™=UÞoÕ‘ן† ¯P´vCP“ç Èq äz—{ÐfÚh:™ƒ¨?ï;ÎL{È“õn±›ÂkÆ_cfûÒ–ó´±jäµAš4pfžúf3>bE~Ìú{m8ÕÀ™ K” ¥–V˜ïYª ¤™Õ`Ý¿o…‡]¬×skÖ¾žó/3˜é=|f¾Ÿô$Œ 'Ú`ªÐ©‡)•NA9Íèõ â„ð+ÊæóNšµ:üÃÁ{M|o›F‚¥×.&Cî;¿;D Î|Ó ³¹êÏ^ƒï¡(gîõ†ÂœV´`ìï»»ƒ¾Ý¡0§-ÜG÷ž_›D{/tšÉ¶ÖŒ¥›*¼WôìÛªô|íòT‚Œþš Õ6íÛÆ©)>Ù.l®8¼£@ç~™|_jj… y^±ñîU9óì2ZÉö$qàåÇ~ß—M哸fm?S'Þncufâ_é…¯>~fN¼IKsfާôxÞìXtY_¥¿ƒ93ŒJÃgË3”¹ oÒßAyÏÏì^/;<È{ë˜^¨wÇdÈÒ}gè]ú÷j$wPgMÂ#_:µåÇu~…€Êõâ?ë­àIsÇùÕAì Í𠦨l/Y…—éïÇ™õ¹¯G ÎÌAh´Ô‚˱×Dcöƒ‘)ƒ}ô~w_æn‡[<¿Æäàµö¾ƒ0kur4d51¡?æõA€ÝcgtÇì!|U³tYó–$Ðøõ±›és¿b@^} )1º ÎslØA—µ2*o_[›E®Ã_o0è²VF¨·maZÐÇmÓÓt™Wk ¦6¯çŒ^û뾂.ó³!S`ÚǽöW.ód)¤8×í3}éµÏW˶ƒ.kÃ#šG[c:À»Z]ÖÊ\¬†6ÿ=¤ŽòêXveÕËHXÑöôt£ãÿúr*ûÎ,ý SWŽõD™ƒÐ'ôàALKx5s:h²êM´pÂAè?nÿ»”l`lމ'â«?:2o>OõÚŸ0½þW)?Ö|vD`“2X>¹¯ŠôXó6tÔÑ}ãÚ_þvÌ»5QLÌÄ–à°¿ö57Ä»Zkáúu bÒËkZO7f[Ì®ÙÞ¦( w,õµ`¢ƒë}2Õ©®9ƒ"xº¥¼€ ÜåC ½}`Œ·.íOóâD…Ñ!/f™»ýï w,î-ð±'¦oßa´«7:Nf­³Ç‘·Q|ù–XO|cW 3gQ~õi£øJutPcÕm{dV—1bŸ‡ñnNƒsov +y:,¿€¿‡¾W+ÂF+Ÿ€÷'Ę¿·l¥ã<žËÿz‘AŒUs@€Jh‹÷© yUø ƪvöÍuÒƒ‰Þxå°/гºèª{›V÷«Õwëâÿ§ìß²¥IVa´Kv¿ôìÔßúƒÜcJDJÅ·öS®=2™æ8$âb IDÏÎ"4»O6 ‹œºŠð¬•¾Re[mÓ«OÕ^UŠ“í#›þgä twÂb Ÿ" Õ"Üý_ëökžJf§¾:xsÃ6 :Q±‹KgœQÿa…ôi Q±vðXÖmßmÿ†ÔòšiÛ¢½4ÑBî-ƒS'*ßPå.K«©ïüô|Ù#TìµRÐ{_”CƒA|aáïü ŸÖƒýAŰˆ)>¸zÊIFª/—nUÿ¢!æ rÿÁщ‰En-¹¬*ß/VHû ‹¸?µÉØîÖ" :ÖU‰U9}‡ã[/Á?£miMN›öõ~n%tbq S±‹f_X»Á µe–qìrßáÇRB'.q\–Wû\ž )ÄÃÊ#GH+X©Ì@»}Âa5’øgf?$s{€vë°„Ã 6/Å¥8NÙ²ÒŠÎëÄÃ0Ö»Y«7§kø¾Wßç"VÎJ Kd?5ë>å!‰ëê[FÒôhZÇ' †>Îd©¸+Uz;úô綺ë¢ÊÛg¯¯ZÛú-1±rÚ;|÷±GñUlÛIP ÚÂi=º-:.†ø}аh_®èÇHKf˜á·FŽíÕJZ‡J›Œxº…~gšnãJÊŽ¯G:a±²1*È—…åHõéõ—2Q±²¡IÍ/¤¨"÷Q1XQ¦þÁ4Ö[¯%&FŽaÚ ïËbƒÓ‘ÓÎxÉ N¯„êmô‰‡Å“Ü£ˆ}®®Ž§à¶FcæaidÞñ-[àÏUT9Z/jëÕøü7˜½ ‹|ø¨º/¯<+n 6v‚a n+Zâ&h5øX{Õð´3OvïóUqÛ÷C(,îr}?ÞR¨Åà½õY"a‘šìÄ 72×ë°‹Õ@X‹È½ôrÎÈLžt¶õ¥#éy~á×Ü}' Öú»÷—ÐJüà(´q‰(X­/ýø2[SUxï~$a°ò×÷ø˜é*:Pq[fÅA¬@Åœ1?lìÌD¸}›v+ƒ%nŠ4cUÝ–m +ЧJlžuõô£pRÖLO'\è1ñ®ÏN'\›-Ѱ êJÝdµ§ 3b‹˜Dðó%:zÄÇ/¼Þ†íA@ B[D·{$Rª» ¹tp‹¤äóŒr¼ä:õÚÙŒA@¬îÖYE!½f* k³æ "V·’[ÙÖ¯ŠÙÞðƒ€X¤Ó…EPÜÒ‰ *æj{œƒˆXEÔæ³$…´çhí 2‰U¸+aé+±h‚äÀ? ²x IF¤|+Ë4<ŠD÷ê²°Þ{Q±^¥›ƒ¾ÿ\0ÂbÏê1›¥fûâW´í•A`,åÕeùX‘×S1ûSaØEó—×óx6=rÉl½¿*ê",Z©§ÕÌöYš¢.æÙþ~‚ÉÈU³Í7FSÐm­“$ £‡ßu³ýEM17\Nª™™ú‘÷³FqBÑÎcÉô(œý²r5t n qÖW;ÙX‘ãÎ%Q8®ðip-úg‘çbeëï+Â7ÊØS€ûMÏdn0gÇ…¹rng!²Òî`¢ L„ÅÝ£íàÐÕ£,íêÅû‘vÍÏú{$‹ÔÔGó}{*À­‘*#uéTfkªœ±\d£Q2¬ÎL‘eG`#Âõ‹`%+ʶ:GF<%À L†GѦÖ[Ð °ßa²ÒÖ›|Œœ- Éõò“+ôÛø€u P/¤G±yîèr[ìóWiK:«lÛÐÊ"½Ø"×Åø‡M~ªE "eàXŒrè„§µ[ÛåC}°•(Ñg$ܬ{–ùíg8ä¶ñN¤=xÆ×þµµÙrÛÙÁêq’ŽÎSÆÛLyÈo!¾Ý“•š­Øêl ùíkCd• á³Ëïe¦TE|Ÿ&ÏžU~k#y-{Fè/ }yC ùì|WŒ>1Wý¿íljœF *kŸÜOða²:ÎÖËi‹ ؽ[Ÿ%HVãTy‹¡—fº×&É" Èw{Ë,Õ'‚„ÈÀÚ/­µ‹ä3DbŒ0³]½q²ðov€}; 5ˆÕ¨5Ž.ö—+K0!Qá îë%S#À°{ÅëÞ±V(*×õ#ŘJk#¯¥$ùD‚ÿ=rïE‰m+Ðn˜)Ì1ž‘{ÛÓS™-¦¤z2#‚xÌÜûP»”ÚÖ~“ŠýÍͽíÌXJmÑbäÃì©ìëÁßý•ºRn»+÷µ@s&¤ù!M´G“p²¥aù(›E(ó Þ¾¹! ¬µC¸ ¬L~ïȽ -‚ÊZÒùB ŸGËgÚË rŸ•DÛ”Ø/û È"ùQƒ«÷ËŠ%‚ËÆÖ ÌÀÔWï?kâeØáQ¸Ì6;scB¶°T‘*ð囸ÄÍ@8­éù°òUÆ[(~7+`³aÅŠ©UQ/Î[í Ý¸Éo5 ¶úiú=³w;Ò<®rÝ2ˆ3EQ5ü-¾®"rV{Sé¼¢ÄJJËku"gƒô”ÈÓ42k¬:íóŽy( üšŸw¿g 7ƒräÐÚ"p}÷ƒ¦`3ðt6ý¢Ý¿ p ÔN¡fq©K"xaÞè Òwç2šÍȈII o*Z϶¯³Èm¡l&g™yüÝBú“€Y<ÈìÉW1 y[\Í¢`»nÑ}ˆqô¢ŸDÌ;ŠÕx„‚<²î‚Ÿ‚ÌÆm„#£ 9‰x±{ª†)Ä ‚'Läö«½¦~€}?BÌæXª8×*_ºþ% 0{ Ä_ñ$žB?À~?ÂË ^ÉÖ`ÜúiÀg, ÐNÁeSÝÅ(µrõÎn Cep,~áÔöÉ3GnhzñL%*ø3Ÿ ø“HYEjð÷föz—áÕ °•ê$R½ÂÄ•ïV€ „ÊÂJã"¬Ü¯N€ÿ •Å%¬Å°ô¯¯N€½“'¡²È@/ß©šžåœfL'¡2ä±É +r·wßþ¢¦’ S·¼Øß¡Hõ¼ë7yíäÂBtI%æíÙÔ ‹|DVê ®úJøc¡çî$7ºPMç=uß3Ú%ÛãèZþœQjX×Õ2ÙNd¡‘b}ië¼·¤á„\¾¼Z)úA6¾i›,>8~ÏQ½¤]ŽZ¼yj,²j寥×$ž%«mŽLBeèÌÔÀJÏ‚.€Ýf™„Ê"°©©½÷*Lœž&€7B¿Å†ßIFT¡ ³gK¤ #ç›6ÊI€0îOV-°ð •g‹žóa›³1Ž8Ù£|7edUYÇ6;'q²Š¨ÂŸs´}üK)qvå´í°Û÷äZ9²~"ôØ^ÔÿHêd„o_ A²(pË–ø]Úæ„o‹Ÿ©m2ÐyÿÈù7ýj>µL6JÝÉÈ×¢{³8ÛÔ2Y$¢Ä`@/›”~ ­O-“í”FZé_µ¶Ý¦žÚ%Ø^“‘õ™ÛÕÅ©U2¾ôÛØQì?È8çHÍZÁ8˜¬ËOñÃEŽnNvŸÓ‹˜+ŸårëñÇæú1гMµxŸ  9Ø¿Êóî¶<žZ!k³±â]ä§0àÔY{¬>Fª0¶‡Î? gm17è¬CW(ðiŸžÛu’4ã ÌWçÂÖwÚÏ•žuXI% f«ý€‰‚Å×!6vXÉCØ»ÙÅòI¬¡þúúEy)üX0akhº-Z‘¾ÛºÇ‹óN‚` šfŒjá%ýžúë÷¤e†žò½–ö°8[I Û ¬D79T\Üê Qb`!âç³£*._5¤·œÄÀâ¤À´æÿ%{÷ÃYè¸ÏÔþ(—ÅÅoñ¼I Kpì8Ä'® _Ck‘*r Š¡_³éÕžâSŒ—Ét ¨Ó×@x÷ ×Iyfv/iÉcœw²ÚXIá›d!PŽpK²2ŦoeêÒˆ#jH;Á3E¥ZùA¯®jHÿ òÛ>ŽdU•]÷ï‡nŸ!(}Q¦ÿB‘'°¶+¹é/–U¾jHûr´5¶‘{ø×åÚ/¾ò©­±³ 3 …Ö¯*Ò? ]ö¼Óµ#½°Iö È6]ÒÖØ>ê¨F¡ÒDÊApÿ$tØ?²q:× Ÿ"Ò¾mÝÝ"o{)ŠYDþxúëgåcdmU³ÍÎ+L"_»¬ÿö!F ®õïW¥³Ü¹Øºùšºö¯æÏ[{bº½%Q÷_[Ï‹ÀWǤ¦žäŠ¡ ;’EØ«c³ž.?@Š•+@÷jQ¯ž™Á¢\› ÛüA ¾zõ½±Àƒ¬D«…q»P²z…‘IPåÜÙ¦Œü _D½z?"ñ½cìŒú™ÑEЫ÷uÙþ¼TÿZ¼-B^˜y’¿Âó`±uµEÄ+^¢x¸± 2³;‘¸ˆxu¸e:’òÍêe}ˆWïãÈMÐdúbõ²çJÄ«w c4Ò3Áy³õì"âÕÁË<ôõ®²iú|`ñê%qÄD¨-+Å–ø‹ WoUÃðàYÏH¢/%A¯ø† “ÇSÖý÷Rrôµ‹êó(%“ ÜRrUØÒØ-ÞQf\K/¶yÅÛ™[ÔR¤™ð \¢M¼KsûÌ’ö~‚¯–ò¦$vï„~ÇÛ¶ÝÂ%ÚD(?éL2õÁš>ÀíÂF!1³…Ù=¤sÚ6û"ØATëB3©Bþ6AwMl*‘ÆOõ×ΰ}úEœ ÂmLÂ?»xßPðûçøsÖ9_uñÿó^Tm ÷þmäÏYW»lÀ€ï"½˜áe¹A®ÕÓ}qð&õ·é5oA®ÂÍÂvÎÕØÙ×–‹×RVe¤QNþéX‡e¢ôðf¤iKÏslɶaâÕÚ„¤Òø÷çP­µD¡ :1>Èc“µÁÄu§)ä5R]þ¼ÿkþ¼u>[ð©¢Vo;^…S—´ÄÂ)9‚¹WD´ùïG²idèΊT©ýG¢þÀN­Š­bµùˆuyÑ%¶$G‰¬3ÓÀzn÷%ºÄv”t6q„Æ·l=°FJ¤—uG^…©¾h\D·:ÂŤջ|/SZD·`D%ÒH¥çcľ¡[kVn±@72 XTOÁ¼„nÍr¹ù~ZkMañønɺµKã4öJxÏ?ÇÙÙÈÍFj6b¿A\í^ö>g”Eì <îjƒ+!.$t-MŠÔD0µïxjÆpJ´.BmIÚ/?¨œ1.Œõ©Ñ¾«r×ÇeíÉ㊿,PhÅk­ùõø´“ŒÒy¬ÌlÅF\SÑ‘ŒLì²á"ÄUÚ»ÿù^ÂSÛÔÃÚO‡ö/ÅâIš$WôÎo+ig1Ü„[+ûn~Ä÷窕ÅY/Ïüå+ øG¹Ù ¿cXùzÇÖÈJÀÁL䓉ày=6Æj÷k>G;{͕֚H¬]Cé|$&3!n¯ б"Ö®È$8Bн+Ñ\ýýXñßa®G˙؉­â9Q¶ Ÿ£æa79hâWnïgW*Ĺ6èo²"N©‡žÁ~ÍĹâY&1@l&•õ‹*bçÂ+wLÀ P¿~‘¥XĹ"›Ý<”?z–øEÙoYF)9å/˜CµcA‹H×lØðå/êeîÿá\v:ÖàÒKQœ‹]¾_ĺžg!m]_™Ìü÷³ÜìuoºG›¶ gJY7¹.O¥:†þóIˆv­ÍöGÝKZTÏ „µÐøŽ{ãÆ ³©ÚG‚nýXW¤ÌÏˣђòs®Bm#ÖŒmuíE…jW¡®ùn¼F@ã¼¾ÒsÿfV2"ÑKˆ |•”VWdíÚ'íg¥—ãƒ>Ѯɠ4ŠžÉ•ürlÍrjoçp_˜ë’žEõäŒl¢]¯5—W1„Vóëq?gîÚ³ˆ dÊbãüu'oÂ]0Â$FDìþ3ÝÄ»"áM°ëD}¬»8®Â’Sk‹‰n¢]wÎM&·ÕëÍÔO~Êiíºqs˜|µ‘åZêúq&CF”¬VW‚‡ç3D¤ïÆÿ–?o}¶]5ú²«(Ø5º7᮸‚Õ}Œt` ¹ƒÿj”Àvq䇑Þòýé Ó×6Õrž_Éÿ1L^#Õl2ÒEE÷ûöl79ÙÈ¿vË7Á®øÔ[qó\õ×öT¦›`öêùý>‰mTßçÞD»°à/üovÎz… ÛëB2ÍLüéQBÕJ[â`'ÍÅ Saýüûf$q„ëñb®(µ¡]ãhLköD!1‡ryý¦é&ØÕn¹ÄÌ׸]íç¹ì:ûÒÏÖ,G””km; ´ vÅ¡^~¾¿u$Q·ØQ =ÔŠ½E ÖÓê:’cûÓ›pWƒN_—e¿¿N„hWë¯ê÷ªz„3ƒÀ¾_¢]P•¡ÇcÜý¬ì®ö'Úyh´Ñú–Ä? Ý5’~¿Ð7’øÛÏ#Ñ”ÖÑ&?xRT7þt‚]#Êo^X üÜéAŠñ»0æ-“8äÖþù×\=ˆØN ý«$mõá?`B]3NÉD‹ÊS ñϘP×D³›m¸ñ?¿"]X+“èØm¿>`k£ó/“éÆÏ´VöûÇ(J ;˜ƒÿýÇLÚxˈ¿nËãoü‹‚l"]:AÄ…°ðzþùÊ"е1½§ì:ãŸ# q®eñdcjŒLöþ%Ì…†„XÕ@à®#)¶¼—šK„´`¬™ìº>W$È…•yµ“{bx|ÄV¯K=QXÍÇ X×?Ÿ*A.t84 …WªS]~rãÂ4áá¶×lÿ‹ˆq¡ü:׎V~þúj{5‘þlܺÿ9ã‚ØUbéÚi]wžb[X› ×åp›k—“H‹ç¯b€ Fm=Çù×#!ƵÒÂ_3MZÿºj¶âê^;eWKÜ­kxÍM| «M"2Àâ‡"üñ¼Ô›ðVŒÎ󎦻|÷6 ÝB 9ÝÒš,’ Ÿ¶Üm ›$à#L6–ÿ|‰mA¤+«É4&ÿkØXmÅÔdmù\ý“È[Ûæàê€B|ÿçhDl+¾0Mõ $!ŽØ‰—M`+¼º'I›}oJ~âZ/1Åk"’q‹®éÃ7A­™;@úxÓ®¿çðZ©[˜B5ªÒ¯p ܾöõ Ò*kóõ¾ó§|ÿr‰g=mMjüå$S7§o¶Îê§1?‹’­åjâ׆ҷÇVƒ6aðjl:B,«£.㯠Om5G4kƒÓ„P]¥§Î9Ä@7³Fˆdõ9—Èà±x¨×{üý&’åDá‡7Kßµþó5A0«wýÏÈL~æáíM(«÷$2Ñžé9y#CF ›W&žÿ‹®MF¢*Ø9Uß«¹r×uň‡Ù¦ã³ÿ9,±ê‰AnÍ¿±eT=…}Õßą埃Èø4T|Î=ùÂr É!’5[b‚_KÓ%ñc–m¬(ß‡Ø 'Û” Û?EÝ«ÂÄwÅÒ€J;6*ÂXÀM´+Ÿ´íGùñk_MM¬‰¥K&i€ÑÍE£µ­›>››dÂG±ë+‡0Ö@¢Ç¸™abúÐz´´µ·´]f»K¼‹‘6ÚÞÆÑÒÖÊ?$Ö2R,kõÑÎV|]Ô¢ÞÌÃ]×ëÝíl­Ö’‘’*›çU:ZÙÚKƒ•FEðrm±x´²µVJÐVK˜\œ‡M|A,P—h: w7ý;}bA÷oÜd+»ª?¢£Í¦<àVÞ5σø_CTà"}jœ=V¢wj¦ô´}6ŸUnc‚ k« ?ÐâØO'‚YŒ”«gIê#~Œ ·Öê}§ú¹Ï´Â6|Êzˆ`Í›ØüæÙ;MðÖf{,‡V¤PjÔ¬²Æþ Š6ž è'‚¶Ýw ÏÃNð‚Xøª[?ÍÕ?O[vgëÄZ Qº°K»éçØ<à45¶úŠP¨Lñyû)íCk¯4ü^’ÐæÀꤷÁæÕé]B`­Ùˆÿ5l^íU9¯ åÅ®À¸¼$Ì!ŒYeZ¸š5ÍòcWÀ¾ÂX[¤„½m!%»ZŸ'е[£ìõ{©Ößı€òD Í—H‹%ızš/‰·Öbq¬µßœ‘±Ò>ÀÏŸÃŽ@|on@Ø¢#󲟰–¶æË˜üiIoÇ®YYX³döµuοßã² £ÏÒ67ÙÊ.ž3ëÍš·b&ñ!‰`xŸ?g)Ói‘¤2ù‡C!œ…ôLÃîóÌ-+‘Ø·L< “OŒÑ#iþË“Ðg[¡Û·!Ö‚÷åøÑf­xùݽVz9~²åÑê÷v:°·¨Å¼Kqia¡œ›±v—f÷?œŠZ¯sèXVÙÉõëÍ­#ŠÂ]E×Ñ1Yó/²¬Yg'–ŒÍêöçxÏ¢(Œˆ¯ýMšIð8¯ZEa“¬V±»Þtm¾‘” ›†#Ü­o#þIý€TÈ£¢”Äïs¶¾E! ee&A¶8Û¥³]š™-{hI gëˆÛeiðgÅ×—^óþ‘Ëju« ÿE²?µèô¿GìYéBÅ Ÿ$’ãi[ʇzŸbì2¿fûàÂ×,V´^ÿß'Æõt.õ(wg‡Vµâ5b1-Î|gܱ¾Þ?v·öVàßs×ä*¿ÐLVXbcqW»R\éþ­|h@sÞtþ~–4µÄ‘;^¥˜•û0;io«§IüqûHŸó9?ÜåêI½,ŸÉéêÙ©:WiÂËÑûq—·ó¯ÑU¢Éúië-7% épkÝëë²QŽˆW$:Z9GBJqEù¤ÞÁR¼âö×BÛ?ü 5Î"Ê»@á«gAŠië1‚^OjªRªÍõ?|FD½"å_Â#0ÆÎèr vh?#­p•6¹Ø¶°‘\w{´£.4˜µ\úî™%×uWëÕxZØ]½uýu?»g¹¿p&®îÖšä[7V;\¶}‰~C‡ À«ŠQ  Fظp EÖ2Ö¦fbXiÛºî%þµ 7,ìêaÿü ’:w¹À@FÅØ¹vËTµ”—ØŒÿŒ_tx_I×HÓ®A^‚`h7ip ÊTúŠî«;b¬h&6 lSx¶Á…ŒE`à¶Kÿ(*¥À`}—ÐØW`è™È÷ƒ°±zoWçò»µáõà:—¶o ˶~nû »|–5ïì_a×[Ùÿ¯+­¿ eºÒ¬ëŠÓ0_iaäèp_i"5¬‡ï9¾§¤[€Í‹"5Ì7Zä^‰sWš.]™niZ}jꀿÜB·+]Ê—ø:ø‹:”–ìM”l.ü ~ÑûèJë õV†üŸùOD=±Üdš–Àö&± »ì3tÿ()ªmÂ^âd|Ø QW#¼Pä.>£#P†Õ3‰½£YÈgÁÊ¡tDÊž¶ÊkdN娰âoWBe8—4U¾OÅ™PÖöQ›*K+?ˆW¹BÊâ-«…Ôò}ö¼fÿ,-{3Ô–3TxœU3¹ÄÊVY‡û‰U}Æ'mÚ†ã%^ö|C4R„wãQîGávBxæ Sbña®x&ÌK¼lcÜ–OrïQ ñÛ»Ì6Æ•µwŸÅŠí’_fh²h|ý¾"óŒ+¶%p‰˜í6õOŠE! ?6÷Ÿb„™ZÙ€²¼ø™ý ™áäJ”†;CtÛì%f†qYmÅö®vXY>O h"æ,Ð’•ø&†Uº‚ÍNß N;nô–¿ k·È®p³VD¡¾O]÷yḚ/ômtnQõWüT¸ÝÅü^izîïÙ¾ïT¸½…K~mW •?ýŸÈTÕ8…º5g;<Ãî%pÖïÕÐ(‡—ÞÐüe„½Üz¦¤–t«"²Øß•®W$>Z+­ hû]ƒ+a¯¸#Ôù©/¹‘­OŸ¤ìö¶Ä•‘„\¿ I{Ež¼t™õ"î螟úŠòp¼8Ê‘dA`e»P—èÙó,LŸ0£ü,>¸$ô¬ˆoÛU-EÜâc‹hã_<k£˜VÓ2 ãÁ³uŒ–˜ñn[޹>•Û)Ã]ìý·ÈÂÔŽ 0lGøj/,k¬ZRoînOðwµ†ð¯ ®ZU= üÛ!¡Kô,j„K”Z5úAàK±óJ—èYÔTBlAÙÑSpé~æðî¯\ 4Œò¦ ÖFΆl´µÿ‡P¹SªÐÒÖÎ,;}‰ñ6Î%âîNno¥Œ½ùu™Kølž%Šjò÷6/¥x‰ŸSRçrgéÙJµ[7W;bçå~­ìwêcå,/Azµ$¶ÚÍž&[°8ëOEÓ »ë÷Ô%á¸cý¾ùz™ö‘‘Wf÷5Yû– žaÙ‹sXaä°-ŠV;!w…Ö‰Wþò’¾FFõW‘3aœžŽD„¹}Ë:qj²µjz7•8+ŽÇWÄÍFÍr.Ñ÷mÂf#’õ´™±ÅaµÔ‡%jÇPè&³½ë4Ÿ3Y¾9~Õ¿茟%Mó0á…Þ/!³8ÖÁ‰¿‰mM: E¬t×¹D?¡ÞÍÍÈø™väïÞ䮂Àg$b[ï¦/»¯v‰—M\uWF‡ä°†cE_.Ᲊù&¾àÿ_p?Íj‹Ü«äà­"œ¬x„;“Y–!2s™02Ì¢òzµ#úkôxêϬp&·c=‹6Åâó`{òbpƒò úg¡Ë‚†\V2ü=Ï]r+‚ná[+C Vb\…`Ùh»¯lEB¤ó.ËF7‹6ÆÚ%YiÊjgxƒÃyg!Z6>\<ï(5×+¶aŒ0©Ý¥‘E*Þ[ï®å4‹vÆê©ÄбY©†k›ïçúßV´4V÷‘T{Mo¨ÅÕæ4ÇfVJ®ÎSé[bDk·X4‹ 2,½ m\C*ÓIþÍ"¨ìÍ­hƒŸP}%HŒ :íèÌDÁšM W¶¼{Q¯5¤XõYa Uw½Š»#QeèIjå,$Ä6ºÖ,ÄÈ #šØä")áu<§“Ö™EÙÜ·èAÚ`‰[qù#a^0u=Àoù¶ãþÛ†à±ÙÄXvÑ%š4rÜ\Ã,Çâ·¤/xŽÿB,Ü¡7³Håk'òàxÂL z.»ŸEÐJ„%#Ãq­ «­3 ‘1°1kDuAõïv gir×Û¸ü\`ÊȲd³4¹ë’ŠâîÚ –Êb¢b–óÌ¿æÒÈqpVØÐ(BKßÓ_p\:n¸nbbmHÇÚ&ÛTSµ¯††–Nµ‰W'´…[fõáYé@ÄS&,ð?‹˜÷øâ“”@ílÅ5VgáSRàèv0‡ÅÌ¢?¡¸S7ðNs¶Èé}b"™/Éß“0VÄ×>™E2_qOMòi(ܘÉ[ö~\döt¬º'€·»ªm-Œµ*&s£Dhµì®ô»®óIƒoOÑY‰MÇ⣊CÍ­¹oz7‰•Ÿ=¢`Ø~W¢Å$k”0²\Û|`QϤ'y¹®>Fêñ/xÈ]ïÚé'Æ£fàf!6ãVJI dßÿŒœ[ÜQÑ NŸéAÞáÇÆxüLì‹…oXOrËrëų #MÒÝPy®2rܰØ,CþºöJ_ßMD»/m§1’Fk{ºm†&±;Ô‚ìÛ™iRFEõĪ-+K+;KZ{p>6êHRaÝŠ³Ï¢•±¹éŸ¿F¾¹´q]‹] œ…èWGó‹i8æÍÓœí…àWaÉv0>œmøä—ÐLItÆyÚÀ ™½³ˆ|õ£a¨ÚINóîJÜk=\£NÖ<I¨¨ÝÌç,Ľ0æ¦2vŽ®]/”Ô>Ò÷Zm-¢Çàh× è–µBä+¬èh/¨÷—¬x•‡wpïÏJÕ£lñ:£¢^®4 ‘¯¸¾¥8*ÕùUQ»vá,D¾Vë∿hèóã#$òµZ-éXnÕÌ'¸%}e ½±Ñ…â „|a©Ü;‘/ð9èàñaÒ_ƒD¾@BÄCÐ@ Á¬·ý |!ÅçÈÏA1¦Âü˳1 ‘/°½÷ß Tµ=üMè VHV®V¢\°´Æ³úZ‰7úæå«ëáŸD”ˆ}‘ô¢N•‘3’=‹8G‘ À…<)‹üòŒ#[FšTÒg»ê¹—cò^të5‚=$~Íï*½zÌ,bD C‘JÊm×.G+—Fº¨Ìî‡vRmû~ʼn8ûÚ2ræÍ}‡lÎBÄ+žYœµ€ZŽ·F´vS”íÜÁ½(tü›!Þ:%瑳pÿ§AÎÆâ]a¤ª9¥¼Ô²Øn=1ŒÐ[#8«¦‡:Váî¡{mœÞ9»qÛáèj|Ÿ›î bVŒJsOo?=Â]+¾/Îܾµ:áÈjERd„ÃñŨÁ*ßß]IÞkhIòŽª­ÌýûFѮ삿¦½Ôr*óí¬±›/z\L«ý“Ð]ã,é­ØEÕƒ¼|qÆÆ”Åüþö\Ô"Îúw£ý°£b%"~Ì\>»—¼WI“ô$Mþ³BO»aë½ %㉠dö?F«aë°X¹m%RâY»ýnª6Ãê*ÂLOq€£FUò^QŠ!é—ˆ¨Åtªä½¢–χË'V´{,¼T umøÓØzãlØpÓ³é #9¦ä’ªÍø*a.ŒxëÕ ‘ m/Mûb§üÇ©hù«66ˆÙ¨[²Ü; ó×z5K‰£‘~Ð´šƒ³æí/Ñ%àPò³X¢jù+|¯(>¾„7ÿ8‹P u…•Þ{ ÷ÚÛÅ,‚ÿ=D»N}ö?+Ò8ÿ9‹P w*jƒö{.Êí(B%Úrõ èVsž¡lßæ®„»NM‹g®ÍÅ¢ŸÓ•p×i­0ÿB°ëàrg<*ÐIe¹Åš+Ñ®ƒÌŽn¦L8£cV›•h×®¦ÎÞ ¿’zûÌ‚hWÜàE—h]!³‹¶…[‰v(BµHtç’‘‰4С¿®wNås°U5Tævà¤î:yè”1”Q÷OBÄ‚îZæNê…eÚîM%ÚyžÊ” †¿æ\ ¤Tb]QWm1`ÞÒ¤ ‹’Ú¾`B]—¡wÓ4ÀÚÆ#"]adÓÕ6S°¶&è­•#ÔÝ% å–c»H•0ðx¨POº:í?à%g]‡mq$ùGqo=^Z_#íYÆáð¶yooCtžMsMs¨z>ÜâPaúz_â‹?Ù‰Û»ØáÆ*©¯+¼»DvTiáW‘Ð×­š #‹—ÍcÄÙÐ×íg)ŸoZÿÆæ™?"[æò^ij=Õ0©Í¶ø+­8Ñ­¥ÓÙV.‡h¶ÐÒЫ)[x_Ô&ÃB•¸ÖmXPý3R‹øß•ĵ.tÇ@6&„ùÜ!€¸VXélì|e=å°¿³lÝ–„Ù» ‚§öÉq­øJWÚ8]š{ŠaÿõÚ +uÈÊÖþÅS [´ Ûº-m'Ç—/ð~A×fjG¹k­Ì0ñÉÖéSRû¶'Á­(A†tˆ±?1Ýå;°D·vTi,785ùŠ˜ÛËøÖãäåäµÒ£t«Š>ëQŒ•låñM”B¨©Ýºõ¬GQvN½çywÌ@Ý•è™ÂÆtE‡ˆªÚ©•(×=kS”~rU½ý7t乯ÊÁce+N-TÕ>Næº=.`ò[ÜÁ¼þ©ªmq@˜ëbúLwïïªÚizíÈD|Ô#xX/­†Z”jü5{ÉkWÕ„¹.èÓùsÎ+[ªÚ-lÏJœëöÈʹ°}òîÊjÿ$KOR%ä}ææØôSVûƒÝz ÝDõ·8ÿLùÛ/™H@íåßZîWmnÝžHWüœ$j%†ê¿_°{#ÒuGÕ˜ÿZIÅ÷ÞÝ“4"]w¼2â?©C~±“8žƒÓ×qy•÷¯zª±!wíçèã{õ~>FVÿñ[†„ ŠüøžòÞÿzëXƒ!vEIJÞÚvwqºèºc&ꟹ7uŸÙzç­@×Ñ$ï b¸Þÿš£"nè몪bîÐY1AgÅn+È_ˆy#Ò…á!Ë€¯-¡Ýö&nº.úÿbœ¢T Vt¶*oMXh”µ »ÇP»Kd±®;_B»‘­ŧ2÷G2dDD½œ$ÏX,Yól„ºîœ]>}¹¯¡v®Kçªúoa#[Hæõ¹I#Ô…Kq>tMæ¢0÷&è­s]ãõ&iÔë§[•³ ”Àêc3àF„ë¡lÿûpоWNÿ°³Úƒ%Æõlùqc½ÆÅÅZ@³Ä¸°æÇ…$ i ÃÎÞ #ìîÊKp©¾À(¹=b\Ï‚Ž˜ ªh žQò2d¥J­½—Ëëæã#a®û |Œô3S]\ŠÏ sa%ñ,@{VVÞMmc…n{¯ª.ЕPÏó)Œm6ÝÐ5¯hÛÑöêboC@×êC÷èÊóÒ¥ø) +Dú†q‹‹ûe±Åš®°rt“Ö+·?˜Œo‚ºÚÕ Šô¼×|*Ó"ð-a]omÿk×Lí°ô/ï×ÇÊÛweÄNŒ€X|w]”F¼ë®Ì+XÞnó¿•Åm¬D)oHð,€ÿ$[F6±Hìâð=cÜ"€×³ÑEj( šêâÓü5FÀ a*PÕøm¥ñBÌfú‡ÉkJ== ôöçÌlG®@«Cu›-¬4ß®ÄG¢,Þvm®ÍžÎUâ­WÁ]ûñÌh¥/ƒÒ´û>,ÍlSþ:k¢_ªç±¶/xÊ_ë2ÒEEó Öö:É_Wù_—i‰~ÃHòWIY3™¶gѦ҃QåjsKÒ¢ýе;FÙA­Û€²WÞ· ¿¶ä¯µs¥xËKÛÞ~–¼­ä¯Z(®ÒH•qóuÂJËp?öÛ×ÿØhÅÇb^ñɪºÝ{Í•±¿x–öV"èhôhÝza.+9Ú‚z@kë&K[y¡,}aÖ6H/ùk;‘”¨üØd¿á%-[®ÖîÉÕµo[áum‘hž`UJzÝu4A3úà¤"ÆÑ-ZÕ„y­›¤Âû+aõgäGJ-È bh4R÷f±‚];@Óy­4…3ê»g¤êÚºÈNÑõj‚huxž…&Ä+^ŒhÔ!b©Ùú~ì€~à1¾š6´r„=1»üÔˆx…oN…Åx¤xlÉkg#Þu**;’^ã6[!Úu šÁêmÜ„ÿ*Švͤ¦9×(œ;{Šb{ªÄºÂˆÊó0R%Iÿk¿ºêÂ-5[⩤Ùò“T êŠc-*—vÑJ ŠbX t=$)¯´S‰l,Šb ‹6]XÒÙ4’bÑ»^í4¸jžtЂ$¬Ø/·£>lÕ¨GIr‚(‰}*.˜kT6s;”øTW£?f½^0×HÜé™ñ3òX t5]£o¾dŒ~ïEûD¤+ªY´£ö+ÜÕ¬Ýj„ºÎKº÷É£ÇÚ©­~¦ê:`ÁU6Þ%W‡röÇÙ²½5‹ôÇ ‚šA^$lnan’÷çÙ‰i<Õv¢éBHIt¨µ~!ßÓÒɵ{Ò—Ìi+²DÙPËúÒà¦0+i7X‘.î38mŒta]@„ø-C)âknÚmÖ£TpÀÅÊÚï×6sÚÕSÙ?Z¥¬7"¸kNQçÆ×ìà)eÝëé‚»êUç°IÔð©Aýshf IëÆçGªæ§u·FÚÕŽæ`⽟´ˆ<¯ø]hWük)EÜØföFfkרF;ãªô+ÝÎùw¡]­dÞiIœ> ª &]`W{ëuTƒ¢|´ïFh„™z2"å£ý5B»"q'#p*•ÔóǦ[ÚU_”ìc$Î ÂÙ…vÕ¨é­èÂ|•þçÐ_küœ•ŒìdÄê;ήծ{ÅfÁ)úëŠú·³u°ÚÅY2–< ¨7B-g’è„ÿtØŸta]ˆW¹GßðCÉÃf_Ž/lƒð×<„ 4òj#Un"x6êÛž Ùá麯ÇíÿŒÄu®î¹lýØ…wÅ°ÔÆRtý¹Ñ܉wÅyT.4Hh‚;~Žÿ5ô×¢6lp. qÊÎÂuÁ]cIu J ìµiEÜÉ<³Ø6Šv[úýõáî:‰ƒ#ŒŒ"#‘aØØH¼ c7IbàÞ/#v{©îDG¶–p˜»þ¹ îD»ÂÕkÈÖ—ºb(ˆmC«k¡+’rî¶@Ûw&#žX²k¡+’~Î(;mŠC™ÈI2•ÁìÑ“TÏ ÜµÑÁ‰Ë™РÖÍûP¯®¾ÄÿùôUû—£ ¶uI”5S}ùz¶ çBϾÃÍ–0¢ èIûàYâ÷‡¢Ø¾a]qÍLupÐJU±¿ýÎÕ*?âºÞ£ªb[‹ö„sBΈºJÊb <ô„sÑÃFYÚR1q§Ž_8ëüŠM•#+×r‹t­uE„bæ/ùMu±ýµ×眥íïµd"µØÕW!pW!©šÖ’{±]«]}í¥g™šd{&±-÷_O»]õeeOm¬.H$[ÏÕvWdô,š"T£üŶïHë]‘Bòêx4S¾F±m¥ßµßU}šfzE»¶»w]û]TÞ´’©É9[œ·kÁ+¾œ­h;Oתõ}Ñuceê‹Î*¦käg©Ã;V¼zbŠì–ÈCÔÅç‘ÚñŠLn+ô×,euœ…F»¶¼j|*t:ø+ÊúƒÒ­kÍ«nñ W°'ËÈ>nkÍ ìÐŒ–˜~øšÅ¶y“Ö¼Z½ú5õ AÇ(¶5A§-U³uŒFò•'Vy#tÚ².k– !ùwíy•Ë¡ã:ÒÈÀbûz‰xÅë-$´À°pMeúùq¨\@ˆ´˜ž%{Ë8¯mÄ»" ¾ŠÖ½Jzëçìs'àµïaêl3qŽÍîkcâ]`³`mùëå°þS¥;[ëÞM$l lÕ8Á¾ Ú‰xmˆmÓH;Gªôíôs'äµÏP[TÇ$x€b yí¨·¸ûZ!—ª¥âÞ|Õ#ᮬ X©?–›ý(Ù®ÈÛØ†‰«cp-þyY8£Kµ Ósz]–Zsú¢'Év½˜òÿùİ·Aoý°"lŒÁ¯æ'ØÜ¥ÙµWׯ‰4GÕ×/æ²NÐkï­M™¸lV¢?ûÁ\Ö‰zmìmðÃHÜ¿R—u-x¡2f ùÚ<RìÐ]×X¤.CWSœàÛö¿†î ©þš¸ØÆö#¡¿îH)è%åÞ/bpíi»k÷Ru®`9 ‘ñ£ƒ’–»NQJ]ÞþŒjkC«]W]CTå_ôgv„­òÚsˆ/å‘åÍ#áþ ò‚¤¨áRKOFŽ/ôoò×ÁÆTÔ±+ñ‚—ã„¥f¿Éa‹n>¨Dª¼þ±i݉wmhK²“ .¶\èÛ@O¸ tŒlÂD†¯Æã/µN´k¯39ÚÐ𦸌:߯†'¨Ý¾wûâ÷Ý-Q¢FO6ÊÈ6¬ r—Ma,y‹o½U†wJ,  e÷~F9l¢ÂØñ 7¥2ß=Ë Ø9P–àHYRýƶµÅe᮵^uõ™H6™¾>…¾íÄ ^kMQÀàiÚ×ʵW=„¼"«‚fÆš_µ¾mÂ^à;`Z§9ç«Ø·™ýŸá»ùw4Gä O±o † wÕgÙ±<§CþE1ÜÆ}1u•42 Èפƒè×.½)ÉS©(ª}¿1ˆmÍ^5Hµå¢vÙ{þÂL óYPLj3>Š}?Ô=ˆí¼£@—fº{±ƒAük·U8d©º2/ÔúdžËA,‚™¤»À´{~A–3}Ûã äRßá™/·žK,ÂMÏrµ-HþÇ¢ãŽ~Ø¢ ÿŸjÿœ/ÄÀ0ÝÎ$½€³·óƒÊ{#ÛÆLœuÛûZË-ÇãÇ£)ô¶–âB|CDŸ~²Œ¦È›ˆ¹ã¦UôÞš±¯ˆ@ØêE‹¨Ýp¾$ô lJ9…­>4±Ÿð­û«q`ß4±°Hðïµøj¦dñûØ"†ÃÈ ™Aų̳de›¹ Qb´íÊÊ©êÉD9f¹!ŽÃ1´þ…_¤%¥°ç÷h†8ã@‡N4¡|–U~ý"q.ÑýŒ ñù9÷>Ärøé7|¬ô2¿ßí~ÑËaë“ÃÊ«¿«¦ˆ ˜ÅVâè-á‰{O韅¾[z­úEŸÉ|mvK~‹+tq< S •»ºÏô‚}GÄÅ" kKo:O‹>M ÿŽè»Q‘Ý6ž¥Tq壭ៅ¾E/Ûà°²ò½¼ÄÆPv:—}¿þMÿùnän½ë›NMÖg–ÂoÉ{ݶ‰p€‡DMža {¸Ò÷ºK¼@a%%uÏ4…ýAøº›Í€Ò#,pó§°)üç–z²•*j/ÌSx+òܦ’$~Pi´ãÇ@Å :ÎXò¹]´ÜâÂùs܈º£;Æ+¾–潑M#gýžþ®Û©]c:\bµŒºöÔ$©Íù:í.}B`~ɳýþšòÛ±‡~PjȽ dÆv%¶zL5JÒê'áõ .6ÑÂÒÏÁVÛ×ú½ÿ9ï§Ì#O§Ô1žõZcs'â™x–‘šrè¶ØD`,¬¤¨ì‘žÄïD)§ÝU·P¯CÓ7·ùºUB_å-þ?õÐ=S[¯íCé|Õ¤‚ ‚%©BbÓÀÞc’ùš]ba5R 2H=ÝkD*_‘7’¼&ò¨´6ñ£S2¤ñb°&{äŽíRi|LýÑH¢i8¿®vI|Å•Åä¶îw CßÅÀîµR@¹gævËöI±¸¼éjíL‰K>C–I|$…¯"ݘˆþ§7[~ü¤-3W÷i[ë«gs\Ë„ÇF¼h²£DƒñÕlñsi¥‰h:ÊËS2MÞªvu$•¯~Ø9 3{g®öR,ÛÂH2_Kº¹5Y9ÛÇ8ÂdèÞ(²D×R‹ã,/Å6”ÍTà$ïT_l'Ã#e$¥š“zš-þ>$R6£.äÈV”——l¦O³ÅGBeóNî1ÁHbŸ¿ïì•1Â,á.iØ£ÒÍ»ü¾Ž—ÎW¸ƒÐá¹3«@ÝvžnHé«V1Hî¾ùí‰Hè+¾ ô ý”¯F‹Ï¾• èÁ(ýŠê*‰Ïÿ6ËV“£î.ÚÑ®Ç ¢ecªåujWÙ {· –… %_m¯óEïÏ„ñ6’/ý˜•ÂA-Çc»ƒXÙó”•©›¹–ëW´Á2¬B %+q)i›ÃËÊ ‚eºZ*^jÉÆö_ƒhYäZ"s‹´iÜï{*„Ë¢$A¬Ka1ˆ—E-XK®˜1ïß] fϲšr¸®dòijøG¡Ï¶-:¶HlÇÿ¥eoÐiÛËXý÷†j^Ïb3ylÁÖ.î1ššÅÇ*EŇàµèYÖñQ’¨Y”M/t›|LŒøDÇ­¥^í«“ îеA·­½“ŽuÔÊ2uÅ6&q3”‚)J~)æ¡èn¹mÙù5¯Áq{(ÕÙ‰¼IÔ,Ruñî•§ÔfÇzIÐ rÍjRösö/æ½I̬,Ñéî<{\~¨;MBfaeŸtõ±ScÄÏL"fýÔ}u.'·W~±ïM"f‘ðt½éˆV“ÈObüIÀ d ó;Êqª–z†„ÇêbjzÊJÛ÷؉ Ip 2Ki.îPÀÇaÙûIh,Œ4Ž~a+o%#žCrn9li#—s,7P¯û—C\¬ÃIiä -=Löû#0†e)Öõ¼ò¹¬×í¾Æ$.æ*®Z`™Œ‘à'¿ß$,7¨d j|8boü%Œ> ‹…‘”kE4a8ù©I7‰‹õ½ÕÙϘd+~ ›LâbQbH4= Î¥>öç‹[AcÙu$ÉìG]Ý:q1üpBË n‚„¯¿C‰ŠAkh ¥µªì}}HP¬6 ¤‰‹Åïéé÷€¤=ê>)'0_ÎRŸ —^ZI8Û—ûÆ h®ÝظS«*ITØ6i#4Ö£¾jét;LŸy õMBcOæ—Þ³j•§Âö¿ˆÐX‡öÜÒéžÌ5Øý2Ì$4†°¨þRGæÎŸžj +iU#Rƒ’¬Ôå“®«X»S¨}§’…r[0v^ÅÚ­ù3x¬\a;ý2¯\·Mæ)ñχl¨°í—Hd,ÒF‘ F.ØÿâoÃØËRtÚIö ·w•Ã'¹} Šddø ƒÈ¦µ˜D¶¾;…¤ž Û–E` ˵,£fH ð/î€E\ì™\N#©¸¶¯f ]_à« ÒÚEëED¬–µ´‰ƒ)Õ´Å7h±ú‘/ý颵üIñ·ˆ‡áÏ)æCD“ÜŸ À¡·–L¬é«ÜP;G[DÃʽ­‹¡eÕt(€€üÛ9´‘”¹9úbìµ=«ÿÎ_Ѱ‚’)qÕë’k–h òJjæ6«ú~Oak_3Ñ0ŒT‰ò,R$vfŸÂÖ.Á0Ì„¥û4ÊBÞ§ýGPZÄÂÐâmÅE!¼ý¶î[„ÂâEŽ–ž¤Ÿñ¯•í"-ãAð(J®­RðGQºˆ„•¨&3@àžþů·…•Õ nÁ½7³üŸƒÜ‹`TÓVb„LÂGÏ ·»¿Ѱ‚í_ÅМó-ƒ¥Ý:ñ°GœS[Õ·OnU?µœýEÄÊži‘'²Ó™öæûö/šX7¦‚þ--[¹¶…¸ˆˆ•gDVñg¬5ï¶%³ˆ•" 3¤L*¢ÀÕî…­ŒèsÙü,ñ¡œ³“ZKhØ8™´sÕT‰EáêŽz³§rZ¥a¤OƒØ~†z ïÚÚß½~x¯ÿœ¡^‚ÁF;Ä5Zâ¬F5g7AWWovKò«¥xýŒPÛ!Þž\À(Nv-¬ú,ä;œ0ž‘á×n¡E,¬LÖ¸ý4­p>è«ÍÞA0Üîšëè§&®=À¯–hC³^\cçbMç¹ÉQ0d6ƒÍox‹ˆ¸ÁÙî­lYIÄa¥$¸R<‰ö"†)Œ%¶=guÇ%åOF™B8:aÆ!§’pöÃŒC¹í©lZõÞf"P‹×m mÖP#aH÷ ãúÉ`e·=%8¬lq<ÆE !$ª¶¶‡°î[¶Ô1P§.ÛüZ‚Ã"r³äWôü‘æ]ï1‚ð®Ãc)½æõéÙ­–à°òÊÃ|n¢¤¥ôØÐ-D,â?ÇÂHC¾ àVÔ±Ú+ +iº)ï§£ï޾4ôŸøã9æòì›&*—ù{¿WE?ç±q±‚a8¦.Ôƒ¶Ý‘E`,ž¥µô,3ѯ£Zµç2z#Ó•rXN¿ÊUÿ, ½6ôÉföS®úÃ2Ò.o鉯ëºÄÆ@Уy÷>YY×ZÇ j¯¢(®é͡ǟpî":VzË’7m‹Âù)[ý¹\YŒŠájòT=Ìô6v/yn]“YØè_ÊfÇzË’çö­$(þ¶h+Ú;ûE/ynü_‘»Ä(„º-ÛgY„ÈJ‡Zw°ÝùàÂþIä·e‰XtDþ­× `ØŸÊLVèF?ã7ؘó%1²I3kWíù5 íwíôIÙ=îÓý5Åì£%Q2 þw(ÏW“%´mZÄÉ3ÃM,Ñ0n?"e‘«_mØÅ;Ië¶XïöVª¬$¶·v§0óþ#Q%T†ý>euá I–¹üÈ••vÞáë‘.Õg½Ûÿ ‘â\•ÀØn¢lü9–½–ų1ÕÅ"ЪӷøöJÇ"YÌø0$Ë…©lû--×X.‚j„Íñg*Û‹<*×¼ÏVûR€;?žEž»^†ý•Ò$®Å:ëÿG17BT(¢2B‹ÂÀ'ynïÔºBªÅLˆ¯#Ï]w±·=Nk_Rr¾Eqäºo½õ1RE™øt(¬·4ÃìÏ–ÿï< ,læŽÂ¾Íøøß¿áÍK˜}gºYÕnÞlï!"fèÙ€¨ï;’ŠÛ×EÀ¬F1̉¾Zš™¯?%ñ²0Ò$ž×ÿ2bÏ„pY…bØŸŸ`¢ w~”âDË**e¿söÍ´•Þ ¹¾‹ˆHK ÎR /ƶñe <{™7?wt«+·<Ùí~’×®›>ã½Òss AC¥R—òEÎy½{K[ä”TÑœqðio B‹ O*h´æ¾À°ýË]RØíJtÛÀl+nbh˜…‘¤pãK£n[âë- môÄr‰EvIz#ÓõÏ"×€ÃÒuBôð/B¼- ->}·‰Rüמö‚÷Öesí‘›»–¡` Bóý š R=_·-hvM­…"¿]EèäÏ!ñ--²ÊBÄ`¬gê;aŒ(ê†;ð> #­ÊÈòŠÜ[D Xˆ VjùÛÑ.Êmaháp›Ãóànk_=ï*rÛÖE¤ë8Ñ/Ï6.·04À»'Y©C­…á™5¶0´~_Dàã,[ÝŸg?Ú[IM±¸Äè-uh~¾¼:zÆýˆ|Ïè—ÿ3¬¾… ,‘¤Õ÷Ì=»g±  áªu$Í’ ªnç6´îÖdå[<ÏÎì&Çj—³> |¬‰ŠÏ£6!4taÅ* #ZwýªobhšØÌ[@#š&×ëµ)ênr[з\YY2Ò¼ªý&ˆ†·\ô‚°A¥¶Â†ÀÎ0ÚÒvôÂ+Q»Å7vÑâþÛ¶²9På¹E²·0´§‚àïY&ŸýëpÂÐÐ"ðV&ƒö/¾·-íiîËÈ‹éÿ[?` A›‰’5ŒTV‰O;ÀFþ r¯ÞòV¾Ý1Oî_«³ŠÁ?#{/‚*XAÿá*ôÚµÞ¢ác¥§n°_ûƒžÅ½yÄw»°þúÕ °q’àYd÷­±c¹"l%2ù²ìûж§Ê÷#€Nµ7ʶû›àYÁ‡-¿Ý/ÉŸ•c©ößN1ÿ,Xa3 $ýþl•ÜÖM,;R±>õšmì‘’ÛJ>Ð|íœÿø9Ìm#N*µöÅ =lgµ¯-ûø~ØÃýÙØÄÍÂÈb«Ae#Þõ ›A•F%8â/Ï·ÞFÔ¬bçÊHO}‰cÑÑMÌ ³™d¡ˆrwJ/ Cv#t3‹DúpÃ`#ègâ¸aÑôM̬–)áã½^T•CÕÿl‚f¨n‡žE·¿G61³È^‰ÞÁ†ðž‰ÿ~è³Ø"Ñ“”Þs/¡ÙâMÈ ,øL696naÛÞ„ÌÂJz$TyÛܯ¾ï%·])Yªùòk…~‹u'E•}ÊW'Á^†„Ì*H-Õ »’ºxFámûv/5nëŒM'iï<– §5Y™¦z ¾&#hV#`3ÉFwqòm%x+¹•À¸­fáýE¶R+Þ_ÔÌFá‡õ¹¥$á]+}}.nlé²#?öïYÃã«T?rî#X#Z- 'SÈŽäN- ÈÝÛ“ÕjÖ&†Œ¨ðKí~.«mþˆ˜bðªc,B» –aÌG¿åluœž&‚}5ÄÊÀåJ4sŸqx¢‡àSIBec>M?ç{®ÀFeÈ„ÙUÜwu±£×WÓÜ¡·öÞÙÌØÈùXÖ7î#'½ûãI8>õpÆû—su%+£ #sª ñnþ·­•Ãk=¼³$ìÜSTm-•żiâ&R´|f[;eý^Ö=ñy ¿ûý‘­²~&I‘TÔCïŸ$‡WvvNÝ3æ?¤î·Ð±Ù  ˜_oÿ5í´À¨‰é$ ø*C­—`˜saP¼ååÀTj§ 0ŒQ³_qîM´Ø˜½·—ø!©ïÎVÄÍðÔ¡öUí5Œ6Òªì¿<¼g¶ó~ˆ€—áÐTǤLÛ®:"`mÄgÇ`pÏÉ|e¥Xr¢C¬!ßcxŒsÈÒòÇsIb`­-ñ2†3Ϥ¡¾ª‡¯A0lv+œö-efõ}1°6,¦õŸ`º-¼xˆEùx8£¸19š*Èw2ÛX÷Lë)J.ݤÏJ¶÷9:nzCñ(4Ý了}C-ÅZ½¡ˆµ‰±“î¶#t!óz–‘X÷ÛgÓX¡ç®5 Ý^p[ëü¥ðvÄ«¸ê`ÈÆ@…„Ø¡æn½_KdóôddiÅüÑw³oYKd·õsöœÉH³RPGKd‘Jò»ØHN¥è¶ÅÛÑÙî‡éð}”åÿµ=Ú"Û¢Ÿ¹QtÏ{¶²ýƒˆ‘îŠ/œTpQ}GÊþÛ†vÈ®†G~ý/(Û>Á/¬tÈÓZ=L~ º‚_‘Ô)#//lë#ľZ|‰l±áR¤¼ÉcÛ Dè Ú}zŽ®ùÈ:¶Oä«]A¤·AŠ?§Éq¯¨©/c·­DÖýÈ!ìÖ©! Q¥‰zõ¸+›N5m°ýÔ ;D½À¾Áµ´-¿Émëÿôê ]äωSPfþkŽüóê¹kO²BüB!/ÈÆMýœ‘ˆ¬PÚÌœWoïÂÅÇÈCÄO ôCÄ Sã¼Co?ª¼~Ö€‡ˆWoµ±çÐEüÔ€Öé‰xu€8FöRE‹‰QÿŠ÷ÿÓÈc¨ü1ä|ˆxõžFÜðcT_O÷yxuH¾ÒëG¦;+O9Ä»žÇèú1¥$#žŒîïÂîP—t—3¤i•€W¯÷¦žÇÕDpy¹AŒD7sHlYiR§‡ð¸uW‘'ž>[ïýÊE¨´ïFä‰kõµ÷'8°Hÿ búŒ¸“ÎåŒôFGÔ‰³uZïˆ*$ïY1'b)ãŽ@¿eãØuòCœk¾{¡¨X”ƒ3Ì?Q®>ŽÄ´0ñ( Gt®­äÚH-¹Ó;«6ŸG±Û(‡(„àÄ&4omÿþ$Ì>°Ï°¾3m‘ü42x®{¦¶ÇHóë¿üyëê’NÜm>ÿnCÉÀÕHÂUÔ`ÿ`äÏ]÷³4øw$½O­9ü6rx$U‚Ÿ˜.ÒÒúˆ¶ÚZò× ¿ÆêlõÅm\}$!ºÕÓj2°Çú?Ø`lWË`³Jù :™¾!Ep«C \ ʼn¼¿<„·är9ÚÝGakì~ ½5ìqÍèA»×¿ÿœI#CÃ÷{¾‹éñÈ/åâ[ñ¡oò÷, s©;Ö—oÒßÚ­HCxEò—?Ο»Æ‰Žu¯HÅõÿ>Ø?wÅl‡^ñ*)Ÿ8Ós=â[me-Ç XúýkpmØÓªëIçúó×âÚãe–xcôi±çUµ26ºB‰zŽ=üBÊ´¿äÏ_ÇU*€¡±þ?üñ(÷J#ã³Ò)Ó7\Žr«…©gÖqþû»aæz÷a™´Göù¸Ù|/W„‰q÷(+éGÒhÿp&Œ®5±3­Yô¯åË®øHÃü¼/bö¹+Ž'>ĸ";ºŠÑŸM½¿')vãêãšÈ4™Ìã`õsÎúaäÏ_ù§/#Н÷XªÐC+þššž‘,ͤ|–ùâ2›¸µ%e[<‰ÿ9{gZbŽïfì|&ÝÞäĹ¢€·àŠW¥Ëíwµa.P‚P¶hô™æGñ öË!Ì‘]¼ß‘BH0øüc¾EÑu䪑kŠ1Ïá~Ì%ȵ·(À*îã‘ߌzkdI&>^µ j<‰«ù.A®y³ A|o}ù«ûü.Q® <ŒAË. uÍ.‡\]§e¿œYÌo`ÅKƒÞ¤oáòEÒÂþ-ÎÅ};WHðP¾å¨Òì#÷´¥ðզשµˆŒog:ô_åjÓ«˧çÇ’½ådzhÓ+Ü£+=‰¢§}…kDCÜèÔ*Ûê’ýí¸’k¥qRäö«ôWD¹ûpB|l¬ÉeÉx6´ÎläRû‹BÊéž,è äz¨ÄþîQŒŸŠÔŶ /Q®YšŠÀV¡çÒ<s ráÚ£çåL*CxrUð:hiàåÜù 2ôõž­Ç5¹í;gú†•p²4‰¿?6¶JeªS!Îxò¯ñ’H»F’GèUõ(2k#õµ®4ÑOüm†·n®N lùèçô3³ÓzVÍ›@®¤!ekÁ÷`;ÑŸ a®=wZ‡½Ixì·]k½&?¹hSÇþ_¬üymœæžªºÞþÁÈŸÓ.Èýý :¶bq¸Ã¢·+G(ƒíظ »n÷x–!+Z,y Sô±Â!\BV¢‚)ÿ˹ü¹îºK¢ƒZxÈV¼•Í|¥•¦«HûêÑÖý yͨû˜NöOö'ç‰òß’]b^q +P×-ú9ÐÑ´ß1¯È¾˜ ¢cÇÒôžD˜×i“¾wjb¬kz‡#æ5V¼äûdVÿ—'é4r£þ[¤vLú«‡j¬Œô޵Q·Z²2ζ«—¨ü-1‚Þîp·nÛ:—¨×^{³ìŸãuÓÿïsÛv¿ˆw {íõJ-~Z³‰a=ŽeûI˜KÜëÙdb¤ìE½ÙyEìvµ&ž­5ÖH’Q‰{+ľv £Žõ[Ñ?< Á¯ï’麩ƒð/VX”õÈ'´ØÔOâ•_dqðKü -ÜþÜóžû?¼i`áå…4Ö½Öÿð‹G7ë×Išž©õ¿hñ–uêŽñËÿ}NI lD¶ÄÈ?Gaü‡C9J7нøçû¿ !Ûx?ÚNjВ’þÞŠp°6¤ œuê?ü )ˆaÜPˬµ§€Îæ”ÄÁz™Ã×)bYü‡cŸÞTlI‚Áÿbed+$ëZ-­õýƒ¡ 5Ñé·¥+Þî _¢a³®MãÈòÅñ/ïHpذÞãkN¢xû ‹Q€çgXôŸ…!wÖ™ÚéC+ºÿ`…ˆä}8ÊÚ%<œ%öm…Ü]97‹1,` ±f·/Q±‘½¢.hí)̬:ô%,vúXÄL0°ÔrR} µÕ·ÝRkcL .œæ'^/q±ˆ bˆ7}þA¾%G`,ªñpÁg,nŸù®±#lÜ€H4¿þ¼ kãðd†fA£öUƒtŸ± ‹@­ˆ»Ëý¿Þ²=Z"cg§ œXù#pû{ˆÐØÁÐ./3 •ÉHóžBhlEöF{šÏ¹Ð}ÛHàXm•Áÿ̬Ôq=íØ%6†ÝxÆOw‹*þؽ¼Kpl¬—ïÿ|¾‚rΗÏú“eë6·!‡Â\c`Ò!:E™"ñ&ža¢.;¥}Áó5®ZJ^¯¿nxâcã‚ö›yÿ,Üg«ýmþü·d³î¥[õ¼›ŸVÚò´ó—Ù,/Tý1².‡*¤¬» ‹ü|+éõÈFñ[5—øØ€â•ŒLm_ˆ/?ˆáèHâ| ÷Õ,5нòÙVÄ,R×ËÕ·‰¡y¨(T‹æ:jõ…ÝU ¬ŠÍJa3®·å›ÄÇ %žl¨ÅɈÇÚ/á±YJýkëÚwãœ*ôù3Dû 9Z hšÏ/ŒÐ]ÏÁö95:Ðßñ cDY8¥.Ò+ÒŒ Ùóá¬"€ìÌDxÚÕÔk÷ì¤/Ùkd--ξÁ/§Æ5mœ~Ác#Īÿµû ’7H¸ ѱpM#"iÀ¤î2ýÛI=Û&È~¿T_~ÒÜý*DÇ¢f…À>»ZÐhHûŸÃ«aâùpZé9®cQX…ÈX<‡ø§F_po.g[…ÈØˆ¤Šµ6^øÎ<PØ »‚v—6ž½_ÚX–¿íepø|Â]ªÔñõi¾Ÿ°[ÿ #t×ÕîLG’fnÀécÒ*UX¿Ü|Œ#‘ {ïÇ¡–«Å—|dìÆ"îqy®;=ˆ†#+×tW;nr‚b3ÒDÔ4«„":»­†WìÓÈz¥±Þ‹üì럄˜¢½ä/+þT^^¡tBba¤5õRæÐ³lËàåÄý\ŸGK°ÁúoÄÃN_ ®éMs.¿l0@£W½2¢UˆÊ؈FóÀÜu }/ºô9—9òs Q%Íÿ1Œ¬ãòÅÄ=,öŽÑëï ÿ:bj[ñÎþz‰TT‘Œ.¢›-nˆ6h¶˜.ŽõÏÈ({¹UžU†æ#¥T¾Üþ5B¿ ^›6¾nº8Ë36iŒp?1¸VGãî7çj?²+)„aÂ6oJrRŽÆu‚_ëíIBÀKYò'B䫬!É(ìòh«X¦ÞUˆ|…—i^®ï½‹€»ÛÛwÈ[ûJøf™ãÿùkè­ñ¡sb(BóUË>Ò‘Ž&æ‚>YÁ\À*+Îê×XeŠº`7mžÅQ¦‘»ášjaCÄ©)6NBkG;nk•©®À”$TyâÚ³‘q*¸–B§GF>÷¿¾ñ®–V^rñO(‰DÞ†±îªÉ€3ІížPb¯=±Žw¢à5Rn%ò†/ØŠ¯B¸«Ï— ñ“D ÿçüŠhW©Ñ>×ï¹ÚÀuã IŒfꙞzÓ|v-vÔ |£;+ž¤j—gAãÑató$>Îvë?§F¢5Œ|„;'g][€âÉ×Є¹úJÊïX°+)YNÃw&îóc0ÝÆ|¢ia®·¾ A®ŽqLÎŒîû±›«$BÃÙÕC…rrLs£¡«âÂn’xn@­þï‡e±]³×»ëô‰F{[bŒ0¢Ž@+iìcmñòbÀº+ñ-™JNI+} íϑتe*?‚šøÊ±ÄFW €/Pƒ + Ñãòó.KxkF.•w›ær~¾žÄi8´ÿ½¶ ¿ÿÕw¤þV`©Ì¢Q€'šx+$ê~6؉)!Àžô;ÚƒUn ¨*j(guFGH ÿxÉœñŽ{ò2%X­fÒH´éUXIDqˆ¡¼'ß ¯r’ú×ê…Ô•˜J‘(&dì/’úWï/Käç\jM\Q{OßbüWo¥¦™§2ÓXND_áÂı”»òh[$9ÍçJIÿk¯F…ò(TjÊPºOË qEy½5©Šãëô‡+ÏûH¬&ôÇs½•M+V¢Ê•âEÿxCìi]Ì™ÿ=JâAù‡£e2îB »…¡‘h#{0M¹õS€Ù°-²Ãz”ñ@XG„¶uù*0W¯CËWõ줉Œ7ä â\Øn¥³¬]Ô0'þZtí¶•‚J¢úÏG  1-“­»Gº‡¦¯ÁˆtEÊ9Åc8‘­í÷…ÿ§•J¨«fš´V´*7ìÇ\ uE¦±X>MͺãæW¹ócdm¶Q*Šÿ\!»‘‘0B—R”™`\I¢‚¥Øí„Uµ eÇqƇ]æc¤ŸËõ„z Óôϵsźl%Ôµ§$ÒAÆ¢äk›ÖDxXÅÿÎzIãrwqßášÊ ‚™(¸ê+€g¬0¯…0ÁŸ¯Õ~¥²õ~Æ.T‚pT;qÌ"F’íÆ9WÜõÐ=1.e±ˆ^ؼªà®(^HG˜˜c4OçÏQÛ 70e¦'iŽ»?Œ ÊdNéT9%U/¹³1Ã@{zå¤,DŽVfØ/™×h³ò=÷®ÌŸ‹Ã~@â;¬‰z ’šxF¸”í˜ÕLw¸¹@<ÛóŸ„Zå·}p"5ûj_¹Š=Û¦Ã}ÙQ©³·DšØßŸj¬0Ô‚–A k4¹øƒÚµ£ U¸×n¥éÍ#½Rä*÷dzh=A­7N7íE¾ogƒV%øõ¡œÚ†@×JÑÖ1®*ð òÉ•.WÑ< Uû%ü‚ŒghÉ nmS²T+g»ŸÐ?G»ëYlpbK“~^œwU‚a§½ºQï—u”ºme‰?yFä[5ëïX¥Üd½‚ #‹þ„£kùÿM^Œ B à§cLªc«Y…ɆOBP,N6+¥V/Æ<ìš_K XÜY<”'ÓÉ‹½ŽA1ìç’› Òî ±N›7ÁÔ»Þ;©Çþ‹§$TLšãa£¤»ÇòÄY—¤Ãަ¯˜<ÚÞþd ‰uÄxÄÖ÷¢HŸ·Â.íyu8?Ó!#9=¿Çÿ î,Œ¥ñ̆‹ø­_ ”7Bb»¥P ÅÅäqQÑØì ‹,ƒ~›‚^3:®ÞЏhoaç|Ãâ™ûí,ÅÒŠLDn¥^ó3é­)ØNUPao)ü—G¡ßÖ•ú!m. †ÇM[*·®qIËCjP=ˆ?ŸˆŠ=…%}Ôl‘PXz+lÕæÂCœ°ú]¸4ÁbíÕ¹û+OÏþ®Âbû™6`ß«žìÿï›±Â^íìÍDqTCuÌçùca’🫪q°–¹ø?ü •ÿ±4Û «‰ ñ?W€{»~M¼›Ðƒe«iœ®® ŒØ<˜X¤®Eýkgq¢ïœê³/bbÿ½Œ\ë>þ` Šý'±Aÿ·£MZMôˆÐNæÚ,(y™`—æ{!Mìˆñ¯Ji"jS½œ^®ÏàˆŠýwûñO’x þƒþ¢F…f[!˜XÄ缘֢Ãuý~#$JRmñßÝõrÀim0Ìþ''A<ˆÕŒŠ˜Ì(ûŸ$)åFÊ숊ŠF½þß[¯W²u5-ˆý'ÓC9ðdÿ ]oø?˜+ÊeÙõ&RD°\¤Ý)íŒ1ýî]#6k×µý%ÃVLÔÙwMuá»g¬ˆB¦¥.`;u5»#p ôÛµé-wMº“ö¹¨öÅÆÅã*‰â®{#ÚeêA®ªÓ;Þ%c£Ê†Fù¢f×dÕÅZƒÄœ<ŠÜ$±µþ’^hÂT”±CG#ãT_l ;N*Ù7>ë|©„Œzl$|7Ée>ªÁ ¡aS†wW¡ôacûŒK»b³ˆñèFº¯&üxEƒŒùë™bxúµ42Ÿ‹Î¡¿F…”^·HQ†?WacÏšŒ$A¬Š¾ˆ}’£n×è©‘œÃñO|f~ä°·¬Ô2+l}×[»m·#‡=‚°ÐÒ§Ä&ü™ÈaG~;})3=†ýþbw-vs‹~N¿v£9ìVO&~ÎÑvã=Í“DÁÆ#µÌ†mp7:YYD :Ûé#^Ú³ŒÌ»ù HÏÙút*ñù€Ùš †Q9X¼`ÎÄ£óm½„X©$¦Ã»a0AÝâŒ(# ùë˜*‘+y#"é:c¦wó—÷aúÕ~6W…WobnXKZ®ñïøôvUxµ}N~3,¼J+vÞ´‰ñn £‰¿RU¼|P"¢¡Nµo.·„‘m'4°xƒMH 4¢+™?Ðð& ĺ{êk'²Ç…c#I/‰°SQq'éÓ2-ÐÓEˆ=F¹jãTT]¾ÓÐÅ~X«6gÏ@#è‰u?›dÞ~Fê4X¥Á0’¦½O‚yÆ-ª!ï± \OÐW¿ ñ -a§áܧ±dŒ°äŠCœ)qó¨Ó!ÑÖNè RÃé\ÇÎòbVwø>ù»l$¤uÞ]Ä?øÌçz]a >áœN$‰•è"? Ÿfý £;¬úÛê‰üèhxE^Ðîv« ôB22°y†©é½Ê–B ŒHð<&°]ålý @“À'ÄÚÿB€OòPääß? =6Þˆ kLF =Õ²qtÂ]+þÕô$·Šû%¾zlJdμýå˜b‰o7;á®R;…‚~fêl'ó¹:á®]®˜yn*6žߟ e˜ʕêQß²C&ÊÞ€D»âf©Lò/Æ?4Ú]»¿vv=4:[ ßû¾þÂÐêWØPŸüì7ôã§Ý;‘.ì÷I3eÝ­uß{·]ìºv7$K‰ª'­Ã_á„8W<‰hNÎ=E|±0bËI]˜9Ô eù¢ªû±y܉s!ãM“‹ï¢=›Þפü÷\ò5Ì#ÓÈ9þ*NÂ_¯ªß_8 xK¼«ÝdCÍúVÍòœ>6Jõ«©øWðGM oC¥WÉãÙ%µ¶PÚWC” óÿz'©>Î8¾8%"°2ýš‘Í/Qw‚\P,KsûE}œð?Ý·ª®«áVa6±ÛwP;A®ƒõ,¶afo'—úÇ"T0׎N +ó$ôÝmê¥øUЉáj=—úÇJŒ¾êŸgÙ©³^™±¤H0ä®w¸°®Û¦Šb’%þ…e“Α8ËVÅIfW÷e{´x늰.u¹RÝÚ~Wmêº(N¸ Y2É3oÏ•X×…*Å¡•ó=ïoOB]hÛðÒÚ‘N÷¯ŠØfƒX…é|XIT먈mckì +êNïú… ¿¡2v=ÂϸڑzØPM¸ v&W²ŠÐ¸lOiïB¦°Í.i'0Y~ å¯GÛÛ;>δx€Ö¦ýE#ÚDe·×néEŸaQˆ!ÚCÿÐs÷ ûª¬öžKÌkƒì‚çå’h§ž²Ú:Ýëíä"CÉð·CŽ; üBòØòµ>7丧‰`éNÝ„OaíÈq÷á¼Ò.U ëòãP丧W +‰<1 ëÇBØ+Þñʻ׉P…µõ~Â^0"Z°SP‹ÂÚ? Ã-†e¤ “œ¯Œ±±!J#iƒ\?!×˧ļPšHª «¶~&"^(r’^Ra>¬"÷D¼"‹–n$ÃêëbÜß½ƒˆWü˜Í y½ôv,î­…# —°hd[šjÿÀÆ{å®èZ’À~xûCVI6ëÁ>,…UðÖ;v…‘Ä·Sa_ýêÃÉa?Mz= •Ðp}é–Xf,yéìþ€¦©Ž½ÅîXDsxÅv0ûÑ€þx—¶Œ :jbdZ31§þ®º`ƒ÷çE¬†üËö©.Ì»07Y "Iíãó`]˜Ë` d?Wöñºðk’²idübî° Õ¿ághóc£MŽuPµÛ½á¸YCl+ºGYî;¸C솑ÌP—ü/’ñ2 ຃éü:·%ZÐÛü‡Cx+l°ÆAU›ÇßßĶ6øÏ’3t¨gz!´…–€ê¤A©,~¦vÚ¶»TÈ´-üë¸ÕÚQÙW*4ˆ¹Øý˜Al [‹"¨m'šÇH:|ÙGp k‹Ò—‹*]V0–îO…àö9 V¶¨÷0–îË>‚[X_â ÏD’pÐ9|`#º…U¿+#㤚zy9©At+ŽïÐWf{¥ÂU;ú,‰ðh+’•HyY ª¶ì ¾…M.æZ{Œ ªnÝ®d \Ø]"l>£êKmˆz¾¡K„ëÂÝàN†»·Å@&!®¸ÐûIV Ç=ÂÊò:A³¤8{¹b†¯|÷ü†ìöÁL(×™G)(Äüruo±²)˜kJ*rÐ"Æ¡È+›½}&a.Œ8%:šô =Õ½ó¸I ë¾³QïÑ–¾U,•âw£g‘×™`·síöÒ˜Eˬ~b!, ¤o¿»7Kr×ÁŠ -BñÅí5mq0‰r=¤Æükœˆ ×õ{¦“(%}9uŠ’[U6i›U¶O®hÇCI ÛÏ„¹âõÉ’œ»ÒîûñûYf‹ô3ˆµè$sýøˆkв›Üˆ7›àÿ¨¼·Öe'aDË•adØi«Yå®ïåý1r‹è†° áŸD.;Z×eº…˜ÕÞ«e»›D»¦~ÁàŽÌ¤þ\¯Þ°¤ØÀ„)MÒûnXý·‘&-Â0"$C¶]1 vy“koh_uõ ÞÑcD‰Aו>0Dö5E`Ï„`×…9„ªsmØÏ¦ðúò)¾F 3¢ÒúeR0F^oOâBu³1ýsÂ~69lM´Tk­<¿-Ý×l;¿ÚˆlVSåØ|k¶cÕá– ïé'g“¿–ÆVãœÏ}Žž2Ù«þZøjÞòÃØPx=É€ØÂ~ÌžrØDb)fìkε“vnÌüL؈ÖSl]Lm"¾—{ýêëÌ5OÖÂÖÁ|‰¥ï®‘^ý ’]öÑ»Í^§ ®/¶ÎØãV³MÏ)€k%%tÙ„Éö}ü-.|k]‘«‚ðKˆy?Å6ø§à-¨7ò×ÔwýS¸n‹¥9䪣_9# Äöm¥jçP&ðî |Þokiå¼m»~1‡ëVi>¾ma‘>E¢>·DfãµÙ)I¯½’rû½«ÏðÃG^ÎU&éóàˆò³Çïpæ”`zŽ=†NÚÖ‡^Æ»böæ3æ?›&Sb^“‘wRŸ]ÛNžSóY»JÉ~.¥¿?Û&SZ^XL¥´!Ó™xºô9sC‹Ë”È2Eж‰–YОғÄkÕžÀKikŒh†àlv`{‹ˆJÐñgðVmµÝeåePSÛÄ_Z ÛÚÂé¢×êÒÓ6ñé‘À­Qk“•4° ܺ›à­È˜ „+Šå¸€,;p ñ~ö^R+ ¹ÿŽ…pElæ…Ü;aÿ˜òVLqÉÅ­sU³¡Ûá0ÆBœ!% `æÏt¿w8‰yí·lú‹m%o`?}: sEdZ)2Í‘D†'ǛĹÎyQ†ÙDň-|,š è•¡£{ÉñbŒ÷ûSÑÁn’E¥ÆÓ§°>+œ Ór•&ZW1Œ^…ÿ1eàžãݺV·Â{Š ®þ†î?+’ÓC·âGÊ&¬«¦ÕÛöȃýs‹@XW«šz饊@Kø¾ÖÕV!TÑ`òSÆ‚Oc…uõ¢5Óˆ þÆ‚·¡8[ľ6fQ›¡m«5=uÕ¢àÖŽv&žÑ~¬ô×:+é•›èÀŽöOá\5rD=ÆZ·|ªr›Æ è‚›_¾™´ýT?;ÿmD@W”¼ÉÑRᇪÜ×ÂRð*¯Nök$<÷«*÷õÒQˆ=“ - 2 OUnV^µ×d¤_Ž®¡*÷w1‘.||ú5;í] (÷çJo­G{â0Â.ÒS•ûse"{ß%½×H<ä)©ý¹Ò]K•è<(×Dõ‡µw[ëŠû¯.©GàX{·±.Lh³Piè>ðLÀlgVXÆÙo2ÂAɇÙΞ‰ ®ŒG Â%ô5äZöL„tÕ)¤­»TàßúÃaµÅï˜÷ð# ùüW¯ÅaF€]#쬛“Ï(u6mqÝ#¹«6Þ8ŽXj«)˜ së¼-f/Ü÷ëýǵ%+"qׯi—©É3Ià„•WV9h£e.·Ñ} Ð7ªŒˆ–§ÿHb—¶¸°ÛÊ/§¯$"ö¶ÜŒ Ö]wî#'©Ë5Å­».–ð­û&Å4Ò’‘fû„‹ðÖT~ËÈLZWØ‚rǺ´Å5Zaë¨ØQAÛ«-S–ö¸æ;ò÷Iëo*#ϵ ìÒWŸúØr´ûCji+ªšIe·Ô¯¸Í‚S+­q%·ˆ+ 5xsik”¢^a-ê=%¾}’¼Ç%JTK…5†s¬õ zçJʨKJ2(ñ-§ÜJ{\§'݇)f:”ø¶Ÿ¼´È…­Ò¿ƒ­X@g6Žß®Ø,-sE8dºV‘)|MFظ¶´Í‰Þ•&"Ó—°Ï‘ËöÍ—\ê§êÜVKKë\}ˆ¯¥æ6Î3aQÌ¥…®>ØÀT²UÇ«óFè³}.¯hÍ|MEØX¿´Ð…תƒ];‘ ¬ã»ÓK]áà[®é[šh˜~Íuå½ÀØyd—R=„Îlù·sÅÙ6NâM;ÛOŽ­¦0›‹bôtóàJ·iÁ"Îuú`<è 6†¿Àˆs}Xþ>±úˆäŠðFè¶åj2 l´=SþdÅG0TäGûM&°½ÛêÂö"95RNaçÁ¿b]Ø>æ…‘¶¨§„;œ¿ˆvElR§ ‚ÞÿkçÁöS¯}Ïæì4¿Ù™zú ö^'â…Ýá-#kqªîI°GKÄ뀹¶ÑHïYæ`[˜hñûY•‘™6'Æ-ïEÌëÔÎéM°õéǼŸ„1Á9Ãó _¾6úRÎõk `òŠ´NÙØ+•ù{Úý‹EÈ+nó „NŽf§Ñp°q–¸^†ŒD~V§di¡«4M>úÞâ lÕÿísE2Àшx׋‰ù³.`Vë\Ð+§“Dá7UçÏáDÛ\‘‡’,¢¶)Zað x7!æµA€0ôs´‡*‹à-¢^lX2Xš%¨Õ\D½ö„WQfðöj£ý0!}/þŽu u>~0n.b^õáÔ+gt>lšCÈkoÐðAÊb~6òŠ?¦qã þÓ4OàùþÖ”»Þ!'©GsÏOãÃÉ”»–¦ô±žšæ ŽWá\„¼6}éóµ.u”~ñý-"^{^1WÔp5vÛN&tWÖñç”#ª¾ß±±AoÍD¦µ¾çÃnƒ/àÄ^~ÁM½Zp¦vƒ^b/Œ¼ˆ“g-]^·o‰½a¹ëHòž÷6ê}!féõå•Ñü”MÅK-Ñ®u‹žd§Y ù6¾Š¾pMѴȨ§êÑn'q–Ø gÚhQP“péòíË{áZónCÌP¾Ãb/Üåp¨ í½»9×®ü,‘ní…ao§}Uù6ª‰»påÒ ‹ âŒ8]â.<øƒ„Ê•¤Fùv¢`èÚâm2ÒïEéa®ÈmJ:ÓzÔ€yÅ?_Åh{'ZWY…ú•­3fþ¼>KApR""ß?Ì •^¸Oe}ÕøÊSä[6E¬k!&]™)7áÍáË?XD»â7îd•¹g¢ÂŸË²-â] # z˜u²•Ó}¬&äµ@‰ª“Ù-w.@½ãO†|{Þ‚ÐA¹iØoÏ·ÄbÂÑ¿¸µã·x‘HÙÑœ%ÃÈÉ]žÁáö?˜iz ”óhÃÓ hìÙˆÈã&¡¿Ü'“™ëé3—½à·¼Ë^„ÞÃè M¯¡HW×.;¹ÌðY¾V½F×ÞyÞTî=L ù.ízEe½–®D‰銯ՉaEg¥ïºiGòçJÆ"†R½ ÌÇq­é°ÇB »Id^\©i¾íQ°ÝB`˜RX2R«<Ù¶EãÖMÁwé˜Y#âñ¢u‹( ¹«ŸÔR[fùa„±w¯Êe†‚?]`òŠ8çt0#mo£âûÎÄÁ0<²Ó;šéMS}‹•H˜­ÙÛ‰€RÖHÍG1×XI¾›ŒD8áf.†/üï‘ç¦}¼òLäé Û¨ÝEž»$YVÚNV†×–ØDðëË’¬`ÝKºÏœµµ"Ïí5}E%üH=¢;í½‰‡­:%\\æs!æ‰çr›€ØjE"£X°¿lE׫ Ü_c.›ÀØÄ  N·W ÚýTpÜ„Æ&Ö¿y‡ô£ú=þ\ä¹¥r… «—E§ûKÃqKà«Aa¥ìïQ¹·¾­eÙû׬‹= |•—¥áïYZQùVÿФï1÷t¸ïþÑÇÈœva›»Ÿ¥OºFºÌžzXþ Z¹•=Œþ5ÕÀ­°/Zú^§h“³tLi¤¥–î?F |a‰•Ÿ4¶ÓR‹çNÝDÇæyùþŒT1¥ýԭ؄Ǣ\.$j)]´Ï±œjI ¶H1&§cÙ¯bäkÖÿE{ˆ¼iÊs¯4yú86ÍÝ„Ç&$vÓ­X»z„QÛ’h›o7ýï5—.m4Õü£ÐqÏ(KßP”ꛂTĺœD¾je€Š ¥¦eî·$¾ê@|½yŠç+J°%ñU«ö#©Mœ>¿”.w’øŠ,ˆ?ç¼êêªm)|­2Ô¬<»$f’û1[_«¨=#Cçúcxfg‰/݇‘æh衱O"‰¯=a{´ù›ÎõÇþÅ–ÄWÜ9Œ×5 Mõù£ŽµÈã&@¥>â}ñ÷*ztÖ~œÊ ™[ÔYëãUgÍ* l‚da¦ªbÅ^Š('žÖš?Þ?·qH„É ¶2³ÄÂôM±M ,Ì,îUGé~ÖRçg¾t§ÆÌ¡™Y¹âRtE¾†4|1C¸, vu³"°”Ä ²~LnfqÃï’ÌÌ™.wkv½r2qÉô›$t÷tèl—c3›} ’_GÜTòƒ6ƒéÙÄÌÐSÈ…ŠËÔËÆè­=Þ™b®X=t5È<ç?RýŠŒ?̽“BȨۧ’ýÁ,cLOÌO?Ëû‘3”‡j0C—ƒqÏæŽý$ ô”-ÌÌGsÉIk†Þ;gQIÓ¡ ¶ØîÞ{‰žE@º|I¥Aî7µ¢Š_ŒÚÄÏÆ*š2‚¤KSÖëì»&€†ý4‚#áƒCyT¹ñyútl)Ï[ô0ë¥þ3³üFü&Š6ú*D'qYJ…ÄþY1ÜšJ€±ˆ€=ã=ÞÊ’ñ¢" ªj0<Ë ÖŠÜwJF=~N‰×´wŸ`J +gëto뼘ÒïwôÞxÑU&àů 1DÓâ\u@Á†©ÙšuìÈ&œFöJ5ÀÔÔ{TꞺvPýeŸþûÏnÜù¾À"ž†2~ç:‘aýÂF»-ÏK•Dòm©Õ\„Ó NªŽa¬‹Å^½ÝÃ+›h²IÝÕw,¦Žì½F4 ÓûGÝŽú*Üz&«ÙEßM4m`ÔHozÝÆ]û‡~Äû ]ªú¤ñ?óª“ïKi¿Ú‰“@ð£ði‘4 ߦ¯hߤü†&ý ¤õ{KjSÃåÅ—ñ#ZFƒb}Ñ­vÓ6M\+Þq ¢¬@­±¾¾ED~ôˆ¢…•±-W‘âÍyA cäÏo1­PÔ2]L£óI4V6­Ì•z÷û\†ÿgêÇ942´~‰&]Id$Å‚mÂhý¨¥o||Ó•Ú„ ZØØ‹ÀÍ×SÓÅÂô›Z¼Vqô–Q×dÉéæÜÄÐzT¬œ.OÑ¥"¸û‘äM ̺âGï tPý“ Ù¸©ŸÛ’ph@|•Z?+õsãm’ø<ÓCÖUˆ Å /½Šˆv;Iµ¼U›øÙ˜i&« q¸þšÚW)n^Úˆà–ˆQƱƒ]›èÈp9A¥oŸ+B‡ØÙr’Ú-› ûÓåp/ø: #iócœ•iÏ´Aé9›-jAiUìÇXryà!p†Õ@í±ô}“Žë\–šú7‹€Q—ÆU‡ÁúyyŽŒ‘©'© Jú©÷ÇDä!lÖN-rÖÒL 8›lúv›ÁІ3Ñ`²?Ñmñ'{d¥3ñŠw3‹¬€IÑ{ÊŸËFᣵ6ÌÑjNûÝœrQé9Ã}I_ŽãP½K-vµ8j*Qÿ.Q–>½ûª‰,XhmüÂ’ag·­‰Cð fÔàˆtjËúýCô¬A“qrCnèkƒÊ^ï‡ðY{deif^il¾*¨þlä»sl»`á)µm CêÏF>|5ZˆæDû^£²â–‡Z\³åOCäl+™SScA ç¸Cò{:Ó¶AOSca Bx®€Ì·²ì­xˆ ÅOXšñ4%µûèþ{"„ÖÖ»àõù,ãФšA6ÐBI/jª,c!Ü®>BhX1P2‡fZbˆÝÝÞ‡Z.©éx0¬ÅWµ™¿ ¡=Vè½g¼íg6üÜó!ˆµSÚi,’—{¶ ¬ †ßùª£LTu?Ñ%±‘øYÔv+ß°Ç{ºÎ÷:ÿo+ÄÏP”n½æxéL¶Ÿ&‰}?Ð`EÁ`Iþ¥»A{ áàä[xê$©Ô³e_2´g&Wo熖úÙ91Fèµ£o]T­"´x#tÚ¨,™ââÓHÕ­Ý_ÔÐ`D¸È½­¦6Ëð)4l&+úßw¨÷ósê°+‡ZƒhÁÒ-ùy"´ûx@­õHÁmk™¶ô>ÐZx«•« ?\á30Ré)ê+“ÅÆˆJ„Ïâ9nÑû݉Fæ—‚Ë!|FÈW°ŠTÙð.‡ØY«W£PÅÒhº"Þ½5Òuޯĉªj`2ÆÎâf­•´‰mªÔ)vã5k­‹Ò8Þoá%ˆ¦ØŸsd¤ ¯³‰y÷üÞãq©¯b§­Ï”ÃÖV»:Šh«ØNë!RÉA½áH ÒÖÏKÎmŒü9,ä¸vK/‡1º*¶Mtˆ“µ’†*Ñûãå>~å& #«à1¬2r-Ëë!H_œ$Ãj{¹?Fî²+ô‡Y„C?ÙKô<"ýtˆ¿M¹yä¿z’_Ó#‡YÔU«{‘²ÔD8?Œ¨çÕªØ=âÚjê‰ü W=Ç$‹ž]kZSó¢4‡ØdƒÅ*°ßÑMø—Ã>íFçZ¦Ÿé›Á.µi‹¡Z‘V»æ/7aõµÏàˆ]Øšš^«Ù.í!.ö0±qð–u<ÄÅ" j¤¦‡WáµXoåÏeA&´r*g•¹Xë÷ÄÅðåj¥´“ðû9»¯‰‹…•.ê±ÒÊ×ÜH÷Uq1ÌŠ£®Ôò5‘Ð}'¸XÛ%Ž(ñ‘~šÙÆÊJÏ¢=Ï’ª¦²Êò2¢‡¸XB‡l>QÒì½ý§LT,²¥"Ú‡ÛŠž$R{?IyˆŠE,œ;¯ºél§À:DÅz­º‘£ÂL |ãÇÕ*VšVssyØ£[Ìý‹kXTå­Æ­þŸ³‡¨òFEFF©¶â½Q„Ø·LX,Ê)ÉÇë(ÛÒ¢bµ5ñGQÄs|‡Ý 8Å@–6Ô"íJÃ"Õƒb‡ X\ÕkÐÑfÙ„~’C¯‚ÉÇÈèê¢àRñGÂ` ÂA=IMé\?>bbµ¦¡•Hºèx# µµŸ´l=³ÒëÞ”CH,œA+ˆmV±•?íë±DİAÏ ² G ÿÛj4Fè°èÞóí@ú«]àŸ„[^˜õóv¶Šô§]`Ã1hÇ3‹lý]´g»À·õ‰ˆ¦gl\g7Õè~„á« æ+ž[ƒVOn=–˜X´3À¨Ænû*Ô•KT¬€GW7û¸+ü0Rõ(·'VÃsòJͱ¼ö—°X)†¢ÁÎÔy¿P.q1DŸ)_‰¬)­kü(Ö/±‚Õü)+»&å×Õú%2V@:!rÒU…ºü,×/±±x–•¨cÁáð¯åú%4V°ÍI¸—5­<¥¶«¡.¡±ø5M¼À¦Äõ¥çþ—ÐX9ý͈?/ú.íHÌêa›Kd,¬\IŒB`4Óœ^›Á]caEŒòmw-¦=KÖÛÌœ2.Ë”S vˆó+ãŸt”2I¸cÛü%&V†|±Jœ¥Ù_b&—žå¤÷¼—”H g⟅Ž{"¸éƒ—æìr ˆÕ¤Ò×NêB4ïqDÃêy¯ßσ´ú%hb+ÃK0,òû«ÀrfWMçGo¢P:Ñ\ˆ8§9ûfˆ‚E€ÔæI˜àÏ]+ üëzŒRÕÄø±ªq¡ªÕ½^$ªÒ?+€ÆÈÐyèÇDôOJÃÓ3ý_á_c­Ü &è_°—ðÖºùnû}¹åXk_Ûl¾D¿Pj©Ü¡¯ªÊù‘¦5feG86éŠ;–¾8P¼¯1Ê‚ÖP|ÿQF&†Ž9¼g‚`q÷\™ÙK9Ûà¹DÁÂÌ«Àþ1ó&¼, ‡m]Â`af,Îzõ\®—–Èé:™—òc¤÷kc ÓfÂ0ª\“™º³˜lÜj6îwÅZÈ\‹Ü³öÔDèïÚ¾1£nm¤%ùfÎ5·ß°¸]±öÕsÿy'ÁXtOËiq»¢í¨Ea%J‹§è¶á¶ËÑúû ƯY’¡¶3ä¾cˆé°CŒ'oXx¢ëKP¬ÄE~9v–N±Y–m KP S’Ê{:ÆÑ¾,l©z ‹ ꋌ[›¢‡OémuIîHî{&÷ ¦ùò_Å÷%4†e~2$Å¿|–G"Å~„ư›]éwñQ) û©‘r‰a¼WÑ(Iç <–é+HÙØˆ”y¦ùƒöëUËy˼Ò;꯴´ p{¸„Çà0Âbã¯s1óaµ°Ç2åºcè–KáyµŸ ü[6V仑޳ñT´‡×ÂÆ—)×äKʽnØçx-là%D†W´Ø"‰ÇÒ0D˜ðš+—Y|F{&¹ÍÕR%ïé>ïLž[“Ò4HãE±šEíï”çB‰†V"Öä]»Òs§·6µ]#Ð΢G)ÛÇK¢dXmÖiÊD±á'Bï’ߢ⠊/8‘~nŸ.ù-˜îÿ® °±vF”³?gÉmË-²Ñä4 k„^Û>3]Ÿ—ü °Œ·;ý—0Yüµ}$G?G @Bý©LY©ƒ“²#nS"Õ`£ðnK¤ ØKa­9Fkä…Ï£•aH€7r•)+sÚš»ä·ñš 茤ÔõÈ«Z7Å8õö@PÎHùk·â)‹Ÿóª£|Œì+ÁìVx+5½ &…U´óø{°]aC¡²ï@LOa¥e˜fÁ÷»å¸kiÉz€MQ ×óCÞ-ÇÅ—¬¬D{í¨îÝ ¶PG¥ ´‘´Oÿ²œ+Ém›”ì(äU@ÿj‘l¹íîjI‡Ã¥EÌ$ø÷|t*§I5x—?”p •ac½ëah–>‡©û9a¼‘<òkN;®ÏP‚õ"e –aÃ3î÷!*Qhkø›¤\â§5ÕóãøÏP88S¡(OyfüƒŒdD"‚ámUF~èÁ\Ád0²edr™ççPÂN¶’¼M„º¦ ,{ø'a]†ùB™/é«%Öï…“­R8XÛçîi²!­7¢Ä6*TPùê”üh ^•eqý2o—o÷g,Á¾å›R‘œ‡‘! FL%X4æ^åðÔA3iR>*PŸ#\e¶ø~šŒŒÄµ‰Œ¿Þ¯R[¨Ö™)b y´CüÓ(ÜÆZ:™–qïß‘?ß•nDQ@Ü“s,ïT?`a‘l0 ›%}HÏ2‚o 5‹(§ò®…·}ÏM ›aUª+Vî–=FØ7Vv!l©öPÓKªGüÕUf»6‹Ìx°0ãžË:Æevlå*¹•$0 7K½KIM…R˜†!;¿($v)©2+“|!ñ nè¢Ãáäøvnö¨î-™™‰µ 9þ7©©ù)3ËU_9v8\nù–ÿÿþœK3·«,I7þb"}¥¬ÿú$ % •¨ÀDêFyn$Œ¾ñO;‰ª´å ]j*ÏêìúEâty¨Híá 8Q(Ûs««9ñÄ»:jMxtˆr»û.€+jèŽqXÊGú#„mCS„ï"ä E%§|V]ê“`ÈÀ»®³(Τ"²…¨gSÝí¸‹€3Lé^=J;Ú£iƒC;9ËeÙ ¶1¦iƒ R„Îâ{ÞÚ[]¨¤_JØ…ÀØ‘“ÜÁªÌØàãviJNçJÁ‚z±È#FuYû.M!w9 ¦y3_ƒƒÏvirÚ(˜»ÒyÜÁ? Ißò¬y!`[\"hXIÝœ9Z«Vn“XW!††w½ ð'rrmÿ(9ܪÚ\È€ø†9Ø(ah§‹ã;¬&Rh“¸fË. B[Ih¡›»$þT21ÙQ ׿ßøÑ%ÙE¸¹u,kdŠËÈ»í7$ülaÔ•Ÿ!.M^4»CVZòa*,_-û% ?›qtyîV¤üE ±‹à³ïS/zn1<þ =‹‹T_ÑMBGÇ·qw!x§ûV…+½i:æ–ëvnÃÊNWb_zÓ%͵` ÚÆ¡g½É]ò§ú·[Mž]žU00*kKãKx°þ?ÔV¸S¥ÈÕ\?ªyWÐìBà d tÛÙÊà'„‘7Žò2H~Œ|Oì)¨ís†¿?›!Y;ÉHáôTóÖQšaVV¥b-¢eE1o!³…÷P5´Wm™Vý)ŒhfüÝpü3rÔú¶k64|»ÄV²WÓ°f\¸ ñ²ŠEÅ?wü©%½–Z¬èÒ.ÄË0¯ÊQÓ½êHí|ÆÖa‰—aŠŸˆÁFQÿÅLéË2fÀpin,dr‚é3l.]…••ž%‚ oÌÀîÉšw¸^5ðà !f÷ŒÎ´gÏLpU¼kîí"À ºâ ˜ÁÕˆÁ…†§µ¢¡°žå#(ff‚[Ô0„Ì*¶sjÑDÐñî45Vr¬å4/#¾y)ý4ÕR¸‡Ì<µþ_-ë0K-…Ö·BöøÖYé>ð5«‘[³%¶#7L‹5û5«€ÆøìZ´ïPJs:[/_Ø'0L­ í­Je_2/ÃŽ8ÛØ3c`©s^_1k·ìY¢‘ºkj,7?UëçL=I=-÷Ü|YQ‚ • ˆ±±zA¿Äþ˜´W¶û’.ÁLŒIøô ­•Er%#KÌ6ú‡µ1òëÕs´¬ÌZ|`ÓJDŽŒ¤>Ñm?rkm”Í—fò1rÊšßò®öÖBYdV ±§ -ƒ=«ÍÖã “áõ’ƒ>žDÐ#üaﯭ»¥O"ÍéG÷ÃlÉt®0Æ–ê¦ÅwH¶Šæq"ˆ%„¸¼tÄÆÝ5ªÊ+#cqøÑÙ°oX(Ù¬bI9‰kèQÙ°ïF Ùxi{ÿ$D½î/?dcŠ‘ðà±#eÀ #K^"uŒSÛ•l.$6lH6ÞU ‘ºf®Ö½¿ $CŽÍ'ioÚþ/Ó»h— Ú»|Ámª#ß1PcvÉ–ò›“¶¦ú¬–G|m’Í÷Ãÿ{ŽLóhw¹ÉY9\&ÔÂv„ýð´Fv wd# > Ó7¨´EöðiÑÈÐ`êïú\[d;e§Kß&ò7 \î¢%2‹ËÆL%þ™ÃÁs¯†ÍŸƒLކ‘K"þ0ò£«*8ìnñ‰î–†ç‚GkƒžzÞÿìµ?º@w¬µˆÄ£I&"SâÎ@~å"@%©«¥=…Õ_ ÿ®DÂâ×l†øU¤D"0ìÕY‹¼uNõÙ@r¦'ñË»–ä®Ò Š—Ý9Ã<ö×’ÜUxPÔÝ]>²Ö¢L`¯–Τ(œn9ÇÈüõåúëÔIè½ßÝÝ Ä»7÷ºÉ\jIöUêʬ?Y²xÌZ[ïâ’{èí©ˆUqœZd%OËcÁÂ͇ì*RE@núEû«zœ–¿mWq*Žš~О‰îÝ ÿƒÄìU.?äøA%[9ntmWñ)‚5}éQšæÊDD§Ø÷‘‘U³úi³û8»ŠL±/áëp-ËCÆ·*.ÅÖ4"#è#7 ¦mƒÖšíÞjXÌÑg>[‹kT‚`кgm~ý Q‡-B+1°8ÌÉlzƒ^ò`æÖ ývi)õì`¥[Ä âQìôÏ·Tþœ§C`_VÈ Qicnó<oD+dƒýŽ[Þyv¦Í”ªvÈæhŒ×hXš78Ë­Aï*EØêYnç$ë³Pa½M Š;aN·¼I-Ëf°«8w[„V"ù½™þв„z,p-#Šú›½ÄÄ¡¸pˈ†Ò…ûŽE¡xû`?êÆ‡;R—ÀRÁ¿8Õçíì3’5d D¼ýcdÖ£ƒ½ƒøÙ/}ˆ0B—ÝWÐH”ˆ>òþçÐe÷¹W?ç¶Ôô¨ÃB¶•¸W/‹Ã·ÕÍvÔÓ&ðo˜„IqéòC‹"çs¸eŒWTëó†ß}¹‘)"´ líVÅŸ‡ÀKð"#æ“DÕeÛ°U Š·î5Ò“PGäéØ3!êù÷%sè}f¹ÿÚ¯D½Ð&x±zD_{Ö¼¬2|EºÄµ@D$%ç@ömx$ê… ÞéÌc<“ó#Á'êÕñsÙ855|¿¾õй¼ÿnoëª,ö#¬»öêm%ÒmêŸmc‚ü^‘´±Õpû»6ðWžûŸrå"+Y(WQœ[SI§¤—›–QžÛ~r%ÜÕÇ Úu{OõÁµ Ëa‚žÚWe4¹8·×®ÞJIñv§Û×Bœ+Ü»³õ䚪ݺŸÊ¬s¦˜Èœ±GÝ£Úü;W rÅw;Õiˆ›3m;Œã´×–ò®)ë Êaóå—êÁ;ƒñ¹&¶Tàzmœa1ü*æÄýºËŸõ…œûKo)ØZ–”%^ ÃQæÚ")—Èä3om$òƒ¦cÚH¤¶°a•àfßøåmh¹ð³èýòˆnE.49¹Û^^Î7é¸w5‚[ØhäX\ïM"ßÿbEÔ‰­kGt~ñ/Kþ½k¢N7ôŸ‘8’þ"ù„QÔ‰‘ùÓa!$-ëÝê'ap]+-³|h³Ô¥³nOx«¯RŒœþïBtkÞ—Ÿð™ï[þ#iø¡Ç®þŠ7þ‡õã×üyì~–®þüä¾ämì~Ú©“*51=‘ K„?Oâ¨A´çÂÕÔú‡3¡ÃÞÃ*iÏ4Ùý¿æÏ_'0Žq¾,ŸKüÚyÒJxkŽÁ0ÐǬ -¸×ñÊìJtkM–j˜éÐ{‰Ü'ĶVœù~#Å»$þî˜G°Á•àXΘ’œúÊcýÆkç*Á-4ØoìPçÃú€gÆ µƒùÏʬ’¾ƒŒX©Ä·&æ7E xåòÿò,îºë=œ’Zská¶ôû*©+ôW t(6FÕÊC˜%‡Þ•×™þnÑ¢ô]¼¢æ}6íµª±ð8¡$^Ý-ÄU q¡ ¦é&ˆÍµü ÎÆÒ»Çöw‡®£´qUßV#ƹÕ&o#jA±Á¶õÆ'c…ÈÁÚiDw¾n n+ »«p.¬ÿk¥m> |”åsz!] ßWtÜG³µ8ÿ{4b˜dï¤Åbã]ù÷#†Ï{ÓˆÕh]¹cë>QÒîWÇ`‹Ö“DºØÊ¶äA» ê%?ž6Ä@;ì´JÖoà(¦ì!ä.Ö^;X¦˜Ž*~¯RáíG‰ZQw i…22ÇD¢W˵ùt#Ø/§¤¶ËV(ˆ$¹Ù.n#Ø%RKm—¸FYØ×>í€{#ØÕ0N6±“6^žOЙɈ>ã!†Ý°QæŸÃì8»Ð€±âžþq²¬»@Ä´¬îù ´wO#ÚUæöÆ£w|, Ùv¶U$ fzǶfjUs…CŒ¥ˆ²ìö¯—sÝØÇ¾ €ï½e©›^ñ´HW|Æ‹Ó3 ¯zõñ’‡MSZU˜í"¯‹gÑõ…»åØPæ5eµTŒ–‡ëÀE”F¤ œ-⛟qÎ+;Š?­€å+{ +~BŠÿ=Úš)MoBéên¯‡¦]/ŒÎ‘:2Çɉ>œËc§ÐM“QóH}âþ˜ l [p—¿Ãí§g[¶O×´îÕ"éc‚þ°Þ­üÚW”è·¨œÖÐæM9Ø3r‰qK|‰oø=Ú¾:·½þÅ SZÌhðCŒrÿ+9°oYË^q îÄev«8Ä#7ô~›¶½â€Ø±‹_£ÕpÄZ»vÜ´íuÀèI®8è'¶tZ^û°yBõ8Ù++ž‚Ùo_ÿ¶Ò5{›èÙ¡ ×óÑÚÔS´^9ïd0ã¤l„»V­š¨‰`T´‰íƒ-ñ.¨')Äõ1R#³úQ¶&¼«,}„$a * ÿ ïŠBµÉHÙêâðF˜ D­ýw°ñùÏ#„¶úiòF¼ I’}ß–3" wAÉo¸c™•/çgMÙˆwõÏå÷i•½Ô£Ÿš2~™m?4^èzJƒY~bcö/‡xˆÿ¸á¹ÉÙ vk;³€†@“&;’Î’"õ¿§óY–4m±_Ùÿ½êo„¼FDZÎÆ5r3ûäj> $èµÂQYârž9­õ£#¨×„ :ǯ¢ðVâ~‘üöh{§+­9b;eÛ}aŠ-Àø§z¹’„|Å_ÌD¿VÙéxGI qOùb?â_œcLŸ¤îT0ÓÚ6`#¶â=p¡ ¨ qÐ!n_ÀÃf-«ÿ â˜ûï/‰0ؘã²4ŒDt°…þAb„aùâ¢ó?XaÄE¦ÃEÔÛ5uñ,ºÚ!ŸF(l#0c)KLLOð·_ÀL%™öfV‚Âÿå1Q8¯àøç é™~|ο¡?Ï…œ£N£½kcÐF©¼âq•œRÚ­‚FHì@*(•0š„|üÄ:!±¸Ñ Û+Ø(KßàÞv¹‹XZ™É5lMk¤Zqµ0rh¤7­ó”—8œ~b×Fa±0Ò¹7‚¥Vmøþþ‰Œ6ÄÒxÀ©yò+¶~Od ¿\sijiÙþwÌ'2v†öG"JM—¿Áˆ‹åØÃÇVs€´6þöÃ&$¶âktB¹8}ñOPì”WþóÞ´ˆ·cÝ„¨tc/æê¿µ}ÇDÅ0¤Ê{.%h»{˜‚ ÄEºŒ´^óÛñÂÄwÄÒƒäÉÝnõv#$wú1‘qõü { GÂϯ0íß’‚Þ8B¼Áž—›’ãÇËa!Ö“ú^øHQQ¸~ì6Bb€(9rwâŠàR{øÚµëØÄ›b8§‰¼<ÎÕûNH, Ÿ)Îñb 2âÂt'$6šÚΣô¤%Ýü.[/jxE®Çñ… Î lJЉˆEe¡^Õ‰<]Ÿ_­~^¶›¯®Ä'–Fô5î¾b;ú€Tóêã¿ËB­ÙXß ˆaqJÛŠs%º'løƒM ¯Ëä>nœ•ïáñã³ãu‹j¯»ÇNÜÚ½ÿ0rùåHeî‚Jwù|™þÛFUéU[¢WJË/QmØ$©Wµ»ºÐ£ÈÈWZœ¾×’²t¢aó¼ù'¡Òë¤ÓIšš0¨¦52){™w‚aX8içšbÛì‘›Ø&o'6[ÑÊIœ«8k¤ê¶w× †O˜ j#š s5‘4íU…„aÛÞ¡¿b×F„9wçÆ÷qì¹» ÊX“Ã*KûÚT«Ó,#=šfÜ8®Oq`¨?[¸^õžk¤:wûWÜä²e²ã€úuæ¸æ,a0èð`'s¦G±:„»‹,é >shzoÌm¬N Zë=ù}I2<‰B' } «Æ+í€KoJb‹ö°ã,I£{åþ%'Ÿ]*˜À✭øžj'¶g×¾±ès²ûù;ØínŒ½‰eFlÍÔ»ê®w2õS ŒCžÚçXœÈYf,I¶vðF÷ü,>4 üg$Î'íúˆ¿}ˆ„Å]¡ÙsŒú¨/û³Ú …¿Š}ÌŽöç¿·T;Á°…¹^•<¥0ùûÝõî„Ãöz‰¢?ŸóI’îÿð,ôÜø‚“"a|Ãì:,«‚×&…r /TdÕûËùíÏ$‡¾AÔ7¾¾CëpàQÉ-]èiK7]´ý—\ Zg ÷<ŠÙ"=IJ>öl­>V,pÔE{ˆ“HŒmS3ÊqÃù@)¥°ÅAfMh‡Œ? ¥wö rüïç}…#^ bÑTâýzÍ~¢Cñįð&š—_.+Òþµú Ôé_îfy^:A0Nò„€’¦u¬vÚî k«0êÇkJzž0b¿B`7^NR¿K´°aćk"`h¨ÊÐ+ÛßËôàÜÅœ X„T}ÚPB+e  i5õa¬Ö ½½6î\i‡ä^%€ç¥Â2F´vµ‘ºÑ U%8–ÿ„‰}uØì\Œ)ê9Œù–ØW„¸Ë+ãö[e£Ûž_'ô‰`zü€„CtÕ´¶#ÃÕx úAvß°k l«{ë”Ñ3sg_Œ(£$Çôz%.>/æ•%1F[¡áÉiS4 [~1Ö†˜Êå\åÁ4Ôú÷Ce";Aãðúù2â»{Ú#‹*VÃÀψ÷ÎÎÖ©¹óQó‘^°EºVÀöUûrE¥¤ÍÖy¯E5»Ë;/ûÁô±¦æòµ*ð»‹äp–&ÝÖÒÔÅܶ‘Ú¥6oŠ­@[ó>NËkwé­“ödôÛw¼U{U©a ˜üç\m«¹ÕÅîþ‡°.10hn  OfB\Æ'°{X5ô,£¤öÖõê)]b`àÇn:•²tk¡ånÝM<‡š#4…ØW¤÷¯:;Véh›l½ãn7:/¨ †¥.ÆþÇs¶ö5ó* 4f –j5˜kŸvZ¢õ‚Ħfb@ÜtsP±š °&•&G԰瘝«{¾Càë`ùû”ïœ_ó·¾}˜Ø_æäÏïSU`Ül?—ÀW›µóöi³] ÂY¼ÇÑoO¹›3>è;ö‘¯›J <þÌÙ@ë#% x‹=qF´åcë%鯤õÈW?Çöö˜)G™?ŠZ­ƒÅÁ±¨|vŠØ/$`Œ0…fGµÏˉóGX1É·¹ü™SÛÐñÚvÒ±»Íw—ˆ}ŶT T 3¦·óã`Yxa’à €Ž·Ó³Ø×+„ºg–¶çü£\ið©k’ZF,ãÌöU·$Éâ†V—øÉª½ÆÚ¤~—¹\+øŸ¬öfNq ²cF¡ÿk¬"?ÄN$QÅøüðÙ…ýAôk`ËcðQJ¸[ž§´ž?ˆ ({ÓUZú;…Úk#ö œÇ2‘þ«ï"`k¦>~øÆHc%ýÒàlj•Å pFùç¼i‹'Ѿ+*åDXk­h' ÍtþÑ—W\†ÖYj µWQdy³Ìî‹¢`˜?áôHÒç'±nƒÀ;½·¨%϶ò Ö±ZιþýêWýõQê²¸Ñ ¿ü2Y%¥ÈžºÃe+Cô‡PºU\Y'…•fG;a°(ÔT)£Zðë–n‡Êq°H«õzÐzãBËS¼øG ÓýÒsœ´-ªÑ„)´ÂT.¨LÓБo? "a{Œ©o¹ôšŒôjç‘‘°?þšÏe8®Xµ~mð €E'‰Ü:L²ÎBaà’cÅ6$ñ|@þh9X^ˆö“«ÔZr'Ãn„ !askNuC#J`ô/&šA(lÆëI.µj ycžÀ†ba'®nÑרJ·Þm‰…A÷q€*/«·ò@gƒHØZ/ Ú[½Üqy´ÿp*„ÂÀÁ€©9Í»îw@¡×Î¤Í …öþ?<‰xdîæíþXÑ[þÁ(5ˆƒ¡NÛ°KžS}ÛÍÄÁnx+:½JäžoÃa°¸3µVV:„›¿6DmÔ' V#¦©t‰¤-Á`{Ûé²Aìb“Kaè}M™zwãœ÷(ìCDÉ{Órô¾ÃŸ,Q0hjI=Љ÷_ýž Ô;¹ ŽœºÖqæ>Å †Q6–Û#₸º~Í ‚`­L¡ídFblìÙÑ¡…°’¦«#§‘öã÷v k{:…”ÎÎ5ßOƒ Ø*9âߥєHT<»ÕÐ:XƒßñjS—Òï÷„ÀPös×Ú“-‚?<åÊÈ&=ιڨAi3Z¢`ãÚ nØK;éã±ÍƒA,€"~9P;i ò×ö vÑÔ¾ÆýÚ³kõ„Áâk-ü~âHüwÍAìÎvHfºž1TrØ…×!ݯ¨%'Õç£.Ûz”_kƒHX\º’iŒÌ0¯ï‹. "a J ⺢:èùëñw°QÅ ï{H&׆½J‰„•;GãÄx›I`Žb‘°Û”‰B¢ì«·Å±°w)y` m®³ë‰9¡°ƒŽ>ÁÁÈ÷ªòœú£w 0¬a¾›9ñ áðH¬¿ ›:A›øµü{]J0 ’ túS“ ÓÓOñï†Xu·å´—4™Wº³‡ð°¸y§Ç'WDòøT þýp>¦Õ­õ„ˆ([ƒí'à1Ðèêl×ø (~•ƒ@fñAÆYó­n±uºV¦â¿ªl¯>Ÿ±²ÄÃÐn×Jf¬|²%ë*ÄV;êÉÜ(Õ5õ:ö%›«”ÔÃ(¥ÜÙñ 1i/;œêTý@ø1±HÝ3æ;jöëûâE‰±v%†zèÏ­áß›´‘;/=ISÖ?¼d®‰c¤qòd#:|- ún±(ÆÃv?ò}|}œ%"·å`–¡®Ÿ¯bÝú±ˆ/WU;”oêæ­$†ƒÁïg¶Á'i·T»@9ˆ‡…Ë;}¶W¿ãÏHûa„Í®•¸êÊ\½Î›ƒ¤wZÂa˜úæ÷3ž&íßÑF)à[f¢F<‘0‹£6·„‰|dÒØ\ÒTÂŽPRp·˜5rõ$baE³Ö­zѬ!rÄ3ëR¯e–xÉþ^¿êuÝÅ þÈþZ9Êÿ~,“ ¢ak—"•£ÌÊa]–`Ø‚€³&vfk9äûôï*;xaÀ·¸UÿSÈù‡hØÁö€øïRkhO‹A ÂañR;1µ‰w>Kän×üÄÃ"Fªƒ1Þþ•¦ü“(9(ÔÍPeQ«ëw[ç*;8]CøÕÖÁì‡K¦ð°(=Ä6—r"£Þo³ÓX©Ù ÓÑÙÃÛÏ_4‰ˆÝ’Ÿp¾ùÍÀç^Ð$ öß[-Xp/hj d¦œn^5½å¸SlQ9µöŸ›1¸Û¶ÝAžDÃÀÛ¡†f|@zË7î;œZ‹¬–?hôµõÀD÷Nm„}6H>VnM„[{6‹‡M­„E1§ø|Å ²ã;·ýü©¥°ÿÜöéX ²Ç¢­°ÿ\ÔAçØ“ M­…Õz8àŒ«dêsî/oˆ±Âa½’Yo¼ð-+tô/šÒ-iÌ”. °r¼ðÎ$$éqœŽ%ÅN‡L"b˜¯æäÀ]ýjÿm4;5µV‡HУ4ÓøAä<ëZ¶“©Ý°HKx­¢ÀK|´g_;b5µ¢æ“cg‘"T›cO­†Å$"Ù5Ø‚.Z’öhÓnØ ´p'~³¯»íBÖÔjØ|µ¶x°WFzµØé$ ?§èCÄB)Üv¶jj5 -¶›ŒŸ#>G˜Äà J~>«ˆÞ:RÏf3…‡a7†ŽŠ&“·úÉÞI8 ‹h©ž+z9@âýËÑ.ã.ªr±c¼dÄÏ@Lí…Eá’œ¾ª_‰ËößÁ°È¡‹ÄwÀÅrŠFöHˆ…Åu¶nz9šYk7ÜÐ~:ÄÂ"g© ¨ÊØi:דϞ²ƒ)vƒpñáÀ ­¯ ›U¢‹÷Yëÿ³Ñ·×E™„Â&Äsä&CK{½Ï34…•R$I´ß»æÏˆ'AŸDÂf¼Ç$ñ„Or®œDÂ&Æp’Z#¬Ðýˆå$Þ/E„øøºØ+ b‹€ *A´½“Ü…ØÄÁPŸ‹b”ÉF·@ô3⼃yÛ}2ˆWV™"F”ÖÛÙï~ÂÇľvÒs CÁO#ë\Ÿí–&1°±TN0¶Ðá±Jëm0¶Ö’$¶û-]…íؘ‚ÀÊ;ãy4QRŸËê“Xü½¤9Ŷ*C‹BO‰Ý#ùƒä^Äg}ø¸(504,Ø\Š œáÆ´ÊuSj`ÐhT—¸m_Ýí¿'0ÔünÎ)[º«‘}úé‹Ila˜…'KZ^ŒôÚ‡WB`aåÒ;àaÙÞ­Ûß~ÄÀV“þ$Ð=I[ž~ÇV±ûËÉ=¤°Oad¬0ÀÎTbß–”7Jä–Å»>A0ly3Á9»TmÜÎG"ÂZÑ®ø’VÓÁ$…Rû½ýÕ$ §™nŒ³5±ÒŸŠP°~Dš4Ò†Mü¯i2‰‚­9ŽDSû(''Â>é# ¶ EÄp?†° $ÂÞ]v¥ÎxÅìÀÈ>í´Ü”.XDV¶?â"æÀP$ŸÛw?‚-Ú&´§HPÓ/«O`q‘—£Æß¨¢J‰LÁ—JÄ¿Öíš\BîÌkŸ/¬‰aªaèLjØ Ÿm¨Î¥Á˜ˆ”=Q‹Œëó,Â_»$Ÿ¸yÑÖÞO·TýSš`uhä@Zo)#øq‹J¬¾ þ'­˜¢nBZa‰ú'Ñ/Œ·)¬Õ~$£õŠ×S6´œsë*Jø"ôÑ(“εé9~ô ‰|ÁDÒmmI à¿uy"_ñ)sîH¯¦ø TÈWÝZ =¤Ê‚H×|á'Y°:UPŸÙFJ·/Ê¥ V+»gÜÞs¶æ#¼DÁÐQåôˆÈ“xo•(ØNÛåqG‰‹ù€¯”ˆ{E蓨n‰Ú¨¸É}lûá}»¡Ÿ$)BÂM7¹åüœD½ ÊÔô«…!:ÿ~é®mR"㬫íòj;*;÷a¹DGÑá_"¤ö&zK.Ï” t_=õ:(măÓÎM¹€%½â¾ét¶(P´]÷4Å|든׉ԣ«Àèƒ)ßÓ³6ºlŽØ!«g}\Àg6½Ú©2Òúֲཿ~0¯Û‰öžžä•*t²ýËùsØÓãäË©}‰œ+R ßiâÕoájÝŒ²ÚHÅ3(NB^QÜHo8ÞSÓ.ç}EŒwcÔp§ŸÃâng{§‹€×‰d˜SzQF/ ÕŒáÇñ.„wŤÒU·õƒF‹h†ž85PÑ¢Üfw¡Á®(÷¦FÉ¥Þr^D»Î:uëDêN«˜š³F¦. Ö[ã#ß þA_# ‹6“q;Ý ¶NZ„º01Ñò‘$±àWRÑ!B‹Æ¶È°úÓÊVÇÃ{ì¹W—ß7ß§¿ra®pñ-ÕF°›hVpy^æE˜k!»Ñ“lQÉ´Ì£Kk_·&¥¶r]-cÙݤE ¥¢tq£æÚ ëÇ£Ða!šÃÉÔ)Ї§Ëà_11®‹_~XŸ9¯p…Á"ÆiÞN„v2‰?—M!.¨ø)תI„r`íÁ¿cبŠIýûÉ|•XøáDÁìÙ Ä»Œô}}8ÑÒ׺é`Ï{äÊ+ì„Ñ"Äf ïÇçÏ]lä6^ĸ0®+#w§Ýô×l‰±rݦ6ìÚ™3f¼ƒÕÆǺ¡ ÉÙðÈ,ØdÐ6ûõã‚øj"®¿Kó˜K¶Q‰WY„Qˆ†â0íÏu§_“¸3ZÕø×=¶¦^„¸.¿u¬µKþîW»câÂ(ªÊ Ä’œmÓéEˆëŽ4«‹Åa~€ÄemÐ]#Ò‰ô)Éä7¶8XD¸°% Š•ñéÌoüA„ I½¶×Z–8/±¾1¢-„"ÚÃø•Uªu‘àØ±ýÕ“».¾œ æxA·ùKˆ â|ÁeÌò•àøs¥»Î~5ùUß"‘% O-ízÍ%a¸¼4FÏ= ¥]¯¹%|/G<Ó€–,À¼´ë…© ²þ-ù/‡ ´ @w¤ g_»µr'/£‘’äÇß^ˆ±Á” ¿“Q6´_õ´+ü¯Q€Ä ÑC ì¬?~‹:í$eª~Y>Âylý¸†:m²µâ'Åâ¹ýwCël/03ƒ€Î“iù'¡»–6ÙèhŒi7~¾,;Æ ýµ¼Ÿ?+£äTËÏL.mzŇË~EÜŸã»…cgxq®ß_¢Óª]Šuã3ïa¬¤U¯Îýĉ&5³­vvñu—Á[eåj¥óDþXFÊNè,¸vÒ±ÔãÇMq®¸oçt㋸éõSl¿oé:û•ZÌ–­ìWØÁXÙzÑb@Å„g +äâü¢ç®›H«‘ñ0„ô•Eu®x”ÅÐ4ÎRÒ6˺IÛ^˜íXòþsRÒv|™¿ä¶¥pQ|úìYÚ©}ù $¯µ˜€¸J'èIÙïF:_Qbˆ@öÁ|S8v´bIç+Î_÷9¤(ÔÙš~<~ÄX°ÄÂ?oe!ŠTÉŽó-É|ákP22%ÿ Z¥}à7_©Þy~cEØ÷|¬œ9Ôõ˜gú.±.œÛ½Í£±•­aoeÊíWÓ/JrŠö+&Øu"žìdDw9Ås .â] dVÝ#Ù¥xU¼Ãõ Þ òZéElæQ6ïœÔ+h‡ #i—¹÷WÍ1ÃöžH™¡ Ü|‹ìª[Ð3?X‘þy)Šuþ«vA¤~<Ûþâà+àϰoˆ×ï¶èÇʘjÉFv¼ýGt•ËÖÂK½ß›´ØÑ´{7K ×~GŠ?q²·4Ô÷µS[K¨×uÊJ•îø“ËúfÌ•çVM’bNŠËÊHeý©Èo+{²½Î© d²¾=LÔ+Šqµ{$Õš-•æNv—D\ IÃ^Z"øÝçÔ›¨WÄ•¤4÷bÎd-©ÄÖŽWMº}ÈÕZÎem¹¿ {¡¸ý3!dæ~Èdýs(Ò¶CT³aô-g²kÚ½8%ÈS%Ï\»ÿ1LeK”FfPº^Ujô‚“s++ì>î:œSƒsD\ú£fßÐ’llB^Ƚ™ƒÆëÔè&ú†v%qó:‘›ÑW#[ÿÂ~µ¨ &áb=‘8Àì›!äqK Ê ;t2Ò»ò· ¯ûòøÑˆäYÑDp1`'Ä«kó(þtâbA"km¨QÐ5{‚]H‘lü'ß¼N?bCêã¤A©Óä›xW”Eƒ##PV»‰¬ÑÅ"Q*:åqr›Wl^áV)Zë]¹çg?›¦<¶ˆ/$BÇýJcíiJc{☪]\ä?;~[ ‡+½ßzgV¶j«ŒM° }Hîþ!V'ªªy|¶ w ˜‡‘¤Iª? ¼mq¶ÛÈRÁÿ­AðUlóqL¹+s‰yÉMÀ+ŒTQPF’ vßÚ~¤g‹áê ¼rú’žð3îC}f8•2d­´‰É.áî®)ÅéH@…[¢µ õ–ØW9Òô¨à€H)Rµ³¨[Z_÷¼ß¿ Zïo¢8¼§rÐ „jZºCoȺA¯ø=šÓ¯èn¥á/Ûˆyí¢ãkðƒÑë'®¶„¾îÛßýye­ÿ­ß· zmÀ¤•Fje © ;6¹%ó…²–ÑuŠ Ñ2l¼ z!PS$ÞïqIkÏðàèUªØ*šŒ\;™· z“`5YžH`Ÿ©tûszmŒ)ñ`›@¯g*݆‚^XÔ¹Öÿ+Ù²õßè…. }­f¾Æþ¶9:lƒSË øiôÙ¡mÁ^=ñ³A òŸÛl›¨×»gýš(£“êYþó§JoÕʨտZkA0/óŸ9’î]•p’ý–Û¥ö÷‡}¢] :`j5kæB¶f£Á.o‘"$Îà–d¤Ú©¼-ZñTN?ìWßÑÿœ¡3Iw_|ÌJ>ïôƒŠ›P¼…q1¤2 ]³èê&Òõ *êIjp»?$D7®4&õh&~%lÞO8Æ]—ö³kM8ï“°Ù‘ºM  ûº*òÏ”ö½mÈÿ¶¢.uÊZM;Àﺜ½…µÒZ‚N3å­”•°Yü`k« óþ|š¹O› Fí}ËcÉo{“®H•pÒ“'yç'൧Ølã«îë+QòW±»P?“m.¾& ¶> s6ºiµ+n ŽØâÝ6±•`§ÐçÃZï‚GÕéÎ˶a}·ÐºnT_ÌÌ x+JÊ•ª¯X´ß5{+z”2µ2ós mo¹n—¸UyÔÌ …iÛb8¬S0zxÈ:,öw·Dqe†¿OÎ:Ó߯ö–8#IY'ÿ"ú!w³èõ&øµâÑG ­(,Ã_ËD¿Ð3׳Œ¨VJ¼ŽO­‰-H÷ Y©­|¥oþ\¸H‹å q "ì~õÛü;"UÁMŒ~e@5+gpþ3JÛ^õè\¢*h/¾1+sE]|¹ðPç«è¢Îž]~:„ÆÐâ”ËBÄR€näa¶&;ÄÆâòHí‘ÅÆ¼}áǶá±8MÔ—© C4ÖîîdñÅ䵎ù ¥ú0Gˆ Ì3}C- x4ükWgku-/£°z„?øÏwÛ¥(œ¸z‹lÎö12HžÕ- Êì²ÃËZ¢dm¾ÉŸgÙ‰”}EDÉ"};êÞ]Ë7šjOEB`ȱ3N¦5°ºz#ôݱ®*ÅÈÃx±þdu=ÄÉZOTp€Õ4Û~Âdaƒm`Àd"0Øb!ÌC˜¬†êòÙÄÇú ¾8ÊôæõcÊdŽŒ˜Ï‰•5¤j Oýnùc`ÌæÄÊZ}Eº>O¢µ£g^Ìú+¡²zïI·Ø)‚Ên]–ÀôLÛ6¥10ÆõÁ<Êz-]!´Tw¾×­ fµµSˆS95ð£‡0µ9ãB¢Ä:ËŽe¢d ­áŒVÝÊx†«¼ &´ØÆ¢»ïrêÌWºýdˆ‘õý²M¿Fpçñ*ÛÒ8Sé,Z4TQÝþÜéöí!‹?ž°Ô¨=D!Ž;ÝWÊ„È"©/]g”Ü\™>,!Ã(D’Sù¸t§[Xê Ãs®VvjáJ·Ì¡‡YT@¯¬¨¬ëvò"k¥i}¢ž™Ò úŠƒY'+7y~j€E\°íÉC„,iWWpµ™Fàe kåÏskÔ……¨ßL7º%i?DÈ ÉÆ´ ãúA÷é9+DÈ*º’?¨RËþn‰ ‹Û÷0ªÄýw¤ŽŽˆ=Zâc #+2fŒÅÑ…ûܡߖSø–¡ ÈxÿÜçöd‰Ž!VóA0¹‰#lCý‹Yë”*ä/i‚+ cJ²1NªDWo…©íVæF޲ƒ‡=ÞIBÉΔD ’Ò ïZäã&”ì#‡ÚZO®ê«e¢døl4MCRý=Ûmo¸ (;’ÂÒëÊÉäµ]íK¤¬ö­…¶ˆ,JkÑô·:2´ªØŽ¾¬œKvŸy(ûŒ¾§²‹6¼’ƒÝ­¬vŠ,,[R[À:§Ï˜“E†}¤Ù…‡t‚"‘ôÉQ² ±ddðÚyd¬ë$‹U/Å«PæûNˆ# ±íÜl$ |5ÏÅx ’U¨ÿ9 Ć˜\?ÔþIc«@̈I_?¨/®0²H„¹'þ0å~ ÿz„‘Í—ìc$Ê(þœ_:ˆ÷œôñ°…}Wõ7víV#û”wYå›W¶&¡SplWa–(YdˆW¿¦#»_ó%J5J—`Ð 7?^{…’a°‰/§8ðçýñsè°ënÉ Å þÒôÙ Q2P>qÌq7 æ¾™9Q,EE2("’HåJÿK„ Ã<Òqªc%¼ü‡á%>gá%I¸S:6`ì§Ct¬~X‹?FvImÚµ]89…àX=W\yš ŒÄùZØP^ÐD®·Ðžº)Eq}0¢™ÚuXTÕ߬Zæ`Êfjס³¡ñð5õåê·0™Zà% lw”ÿ?gÿškMŽl bSîD{ñ(#´ P ènнœî¾–ùÉø.í|Y¿NÅÍ`ìí›NšÙz}ÀËÞ0³Û1NN¾=NI]Ïà° ÷ì—â1·ç෺觎g¶–›öC¬Ýî?ÃÎ?snÚp2ÊÇf˜üà‚Ÿ´§éù(;°kð±ìD¶_–W”l„™EñjÂòc>z8Tg½g•í i\%R!"¯éúaîÛOöß’ÖÚ§º82Çf#(¦;Çtråm|+鎿!±«îž+=ÒÓu é΋]»÷ü ßdã]\abºÓpøI6›ü‡5Ãq òkeÒ†j;5ÑS\‹qþµéµm¥ŠhôoiqBÉgKµ˜IêÖõC¥Xlûè?IŠÅô“é¶Ì“’~ßè‡ãþZ„Z±-:Èxú§C_z>”R*vuƬÙv(ÌÇy~µ5p6Ba;d$à f›v6™HØv9£úa¹ÌÏ$çz\Ç_‡HØ6*Ígò A8=9M½gÓÜ®ÿú¦ü:ZXÍýªšù¬×—Àkë=)&ï"¾V~ÄôQãᆽþ59»eJ–cìí¨Oj3Ÿë6&ÍO²½ã“B±ñÉ»ýÉ?žG©ѲϿªÑ¢·'.÷½q|Îü$3=ðwyrâòÍ– ˜nÅ,N‚PO¯“XçZ„ÛõAÃ'Ù§d:k‰œT%³%¶5›œ*é¶QîŸr¾.RÖ—ëg˜ÓÓþ7ÆÑ-ðZ$ Ú™fÓvþ o®›‰s~*ܱ}F²S¼O 蜧Áýli¡hg—Éì1öh6¢_×Á¨Y¸¶åñëÇšþ‰;#ˆÃ þ iß·ožôOl•æUo~²N†Mc›÷¶Ð•#ÞZ ˜vxçñ÷%îµ-DÈ­¿ÞÙ‘gtÌó-LÔëj²>ïͲ›êZñÄŽ™ ×µˆi.¢’dªk‘t<[:(ŠqÂ6{×Ì5žó|WðšI;Š­†Ï­zä'ϹS)Òó]Úô,–÷²-’Âq³´½ŠïùボÉ¡ÖZ™—"ëã#¾?Éñ”<]£å´p°šßøßi:}-‘¥ëJíx€þ0§¶|¶Ô…í²Jy‹§'³í$Ñóó b|Sð]âS³IŠâƒp«^ûŠØÒî…y$¶Mj<±§f‹Ü«¼öf÷äÞÆàÇc•(×6ŒÜîí3²¢ 'ÆuýOSI²Ç Ÿ§ªçK‚×µ¿S¡êÛ†äúTç›ó# »v±¶îò8Æã°HŽ³Ô’ 3*o‰êñõMŒëzçyMìТÔ\Œ\=,òapira¶;Àø|’sq”(×µ·81‰«œŽïV<“„ ¼qľí¾?1;û¸Èçrö7!½©Þ·ï Åœ-®',Š#±¯Mü‘u{tÉà²4ܶmŸçz"¯Ï–0WŸ©R¸…'ßçzÞ&„¹¶S"×Ç'4×Ö“~X…Ö¶UÄfÛ˜l–Fñ@´‡Ex¼Žg¾ÿ6Ž>rDñVƇE8ÍJ¯Õž ¤g‰í1s<âZ‘Ù;„êóK}ªØÃ*eùÌEÝ*óûêB\æçû\‡åµµsï1®m‡ÉWg³~çÆ1!®þ¨ôß{»Û§_þ q]Åë´ññsR±“‚k¶¸$/àð4vßÑó7ù [1òöô´GÜ?oœëVÂ[›“’¶1Ò©ô~ƒ;ðÖ~óSï>>âìýÜ×È6KK«÷~â9rw+á­–¦ûÝFËž®GmÝl n]…|æüéä(l?Ö£uÿµHʬeª¹ëøX+”Œw•–(è͹8>YÂ[7Ñ,í&beys}”~âÀ=C„ç, ëé!»ú7äá:¤ÏeEz$îë;ÝÔú­rà ¶4I´ùÕ\¯ýIÎo ®Ø"ºÃ]õëÈá>×Îß»v¸%wM·‹1!-|y¦âº>uZâÆvŒ˜ßÓítc1®á}¶ØT¼Ì£Û;î~A®í›ÁñëvkáS¹Î=±›¦ãÚ¥Jzò¸d¨øý× õ÷Õq%{>Ÿãà$Úš’ a;LŒZÁ« ÿ$­\úq«®–µ°n @ÞW0N‚Î)D¸Æ&]ò³\ëã¥éׯ~^…mW³AÔÜì™~üú³`Û®ë>æ,J·É§~Þ“óêusg¨]k™á6?~œúÚÔáLË4ç&öÚüîb"\[\•'Üæ¹~·í8õB\;y)=W®òCt,îdɤ°nó¡¸nÚ<N´klÛ Ž§èK:¥¿÷Ét^£s™£¿ZÜìз®æü`±gw(:¬oBÅú–çO2¹ˆ¤+»_LîâïüIV.²8r¼z烽”ã™B”k Íh»¸µhŸÍvÞ'™fê4ÑèþÝäO|œ[a®¿›Ú:ËO}pþ,ÄÎÑÒdÇÞéwã_Aâ\ãº×?~WÙ"Ÿ> ˆs­h3IÜí¹—²=þȺÖ6å"×WHÇë<¶B ky¬Üiqwç5f^ëÁSiÇV„Ü¿±{}ɬ°ÐIË —ißýëŸIF…™'íÙÖ°ñã×9~]cGɲ±ñ£ó9’$ÃÂÆs{cPžHó½Ê<‚]3¼ñˆÜ{9“§¯ùÄûºñ|*iæ¶ýɯ½›…ãÁD°k3a“@Ýݾjºv2ŽB°ëz‘Ó:0\¿žaE-ĺ®RÇéIz­(ëÇ™r®vvíðOÎ@¶‡+GÌ×?áN!ÖµH4·ÚÉÙß¾¥ŸØ›×ÅÇ>ìê9È·š½gp‹-“-vJÆ…mvÉ/[Ÿ¾¾×àñÉîº~Õ´G½Î—–÷Æ®/Ž…x×þA’3ÙUä{«ëI÷¸ï¼UqsLãÖñüv.$¶kŠTc¬i?¶Ûùɲ µ#Ûêê?°Èãf#àå«ÑóëbÕÔÚïòxðê»徿úx.Rß_„¼úîÖø\ףꀸyBÌ+æ06¦›äÀBgž¥¦òÚa&9PU_Ùó_'gQüóò]r¥ràñ«}?zb_‹pÔ%ŸJ§Ì{ÙB¦âëpÐuJAúu{Ñ0Óv8ãùƒŸkHJP§­ô ßSñã6!ìõßþ8×–>šOIÔë:í³2Ÿýû9ŽûŒˆ—»¥Då-ž_÷ªÂìÜÖ&æu=öo¾‡î©l~RpO!èµF XÅÕ·$x5qœ a¯ëy,ÏUk‹w•Ku|®Ä½®ïÐY³í,´‹cDS{]Ç2sÛîƒã9h™&ÓÔÙ#Íè·ðIl³M ‰­ö´`¸®cOY׿#œéy E¤6Cã;€<‚UBÄkì©)ë¬&‰œÇsÞÖ`»°H›¾Î¨¤ÑÕß&OÖàÝÙ¯=‘~ýLö’ŒÛÚVãס˜Ÿ#žÃ"’‹Œ”¼vµï‹ó!Þ5Z j·moΫ8>7„»v”e¦;£†ÈÛóæ/qâ]ssÀ“¤ñÔæ¸‹˜x×ÚÆXdƒÒÖ(®jï<ÛJÿCÛSò<˜æ-Õô˜{0…×½1?WÅüõ>!Þu=…ìï­­,£÷Xë¼Ú§ò‘ô-«ú¾}ÇMO¼ëúÌé…º“Pí6έñ®íy›±;ÖôÛúa"^vUz¾ _|ç|wÎψÀ9·ßY™öã™w 1¯f\äêGÓ]àæ%œŸ Û­%¥ÀNCMͲ3#Hzm¶?µ·cçÅï? kWÍ &½ïOßgg’£ôr]))Ù‹Œø,rÄw„ ×#óÞî'Ù ¯êò#èuÝ1“N׫âé¸îŸ$A¯m„–JÓ¹rⱩçmŸ©`×ÝËü“¾}™ò£ìÏrü‰z ½¾Cz6hËLÕýYŽwF¢^­g,ÌÕÅJ‚½û£I’¨×3 ~ÙÀ\ÎF;“P… WÄ£¸~ç ‘Ô¶k•“ñᔽöÙŸþsWžÏöªbÎøNƒmݬµ|æ gìpþ±oÝFŠ˜|g¥¼yù™¨¤™ fýãâµ%ó³J‡ÿJÜk·"ì—ÖϾŒgôL‰{ùW¿6U7Aìë78^ìš±`ŸYÝÚãÿTˆ5õã°N3Ì>.ŽK«óë»ÚÉLøZ…åìV±ç*#!ž=°8Sô4CÁî¸4~#ÑDòZs;îÜ­ŒÌŒ|üÒ×Õ:÷œ~BÁâv•z¿Ð3FzWq;¢Øš™`;“›OÅ·Û[ÉÕN²Æksßö™ks #\ᑨ«™¶+WýWCRk×ã¡­™6gbØk3/RQµ³OŽ‹pÏΫžæ0èúL$=]'X+¾ ÷ìU óÈ^=X½]7Ì™§«D½¢=3ä÷Û}]w‚Èù»p»®®¹GÂF‚ÆÛ`òü]r²%ž“­˜él¦6ކ~S zù¤(¬ õä—ië¼ã‰yíÄéž/ŸöX7ùøAˆyÅõ~qê¸^Ç»ˆó»¦óº~š‘gìæ”›ó¬1SB^¡[ò”_§¥dÇí~ú8݆ÊÅ*’«¤éê”zæ\ùÒulö•xצê~¤ˆíkî<Š[‰wu]nYYø—Tz}²ãôB xõm¿‘:Â%éz½+ÁóÍEÄkûÇ~ijÛ»ÖΤR%àµý‰ˆj.kÝó6_z–¼i"^6Ççl‹–‰#kŸ6ÇÈ×Z`볘Ÿ›¸ºÎñŠøœ÷ú‘WîëüüûñêW•˜ŸÄ[jÆ]Ïl %àu5¢é·¶7´~®ó#j¦ xõIäúZN?"ëÞNF#S‰wmOw:¸,‹ÅðºÎãØ–*á®>å#]wéñ¹ÎÝŠ¦¼k³°ò÷ mØ÷ù¹A ÚÕw¸Lþ¾š|Îû>?nÂ]}¤¡í½éóÛH;:Yèí²Œ;WAžrïò>ÿ¢]´ùYÒ2°~ßæÇÓ1r&{ó6ÞçŸÚäºÌÏï/±®ÑvÂ;¿‹z’FÜÛq®«„ºÆv¨ËÃþ«Ž¾þ>NË•Pר{+µÕ2ÃæÑñZÄóÂ"*[ì•N%Õ%J¨kçÀæÏÛæ´ïÕeçf‰X×6¨f³tu{9ûØ6qÅ"D®oðá¸,ÌZñÞ¤ÂkSÈȱˆ-Œüö¡çª€×v*àÄ|_<vyôQ^[ÍÇ]¿âÒ|lç[ç©JÀk+=$¿P#œq7Gý¬ïÚ»”ñÉCCÉ+çü}ȹz`‚fûa­ßw½öÌšä¼ù%·^wÎEP¢^»›L'™‚ïM =_~D½ö¹ŸD>ô•})ž×¹Æ‡ pU•t–=8>?W2`¶ÇHî“6Ò/åºrŽ´-%êµ5.é ·ß¤ž7—;Ññ¡m¥ˆ`+ü²íºÞÆó€Œ¸×´G÷>“–vlWá¡G¡¦÷Ú˜{:ëÌÇ$·Nœ{&â^sÏê,Ÿ «òm*}>í?¨—+•moñÉÈê~2R›JÔkúÕˆr‘ëþKâ×\Çl©½®Eôã·ð¥îNôÈ]Qb^{.ÀO²óÓÐ}gbœŸ+7lôÙr¯}¯«=b"JØëú:™89®W‘q¼·eÊñÁöººg:ïxƒíùÜÞ5žzê]d|ÚY=²=¢Åw™%ßö|üÜÄשp|…? —xr [_ë×=qb^×9ð17– Ý}„(mSRòúo—Ïu>Ž~EJÐk#M æïÑø÷:÷ó쓨×6²¢jtìD·õ½ÏÏ?ÉÜ×ÑHÒȶHN ukçרגàIßïcíÇe~üyVªÌYmýȽnŽb ж*É ík¼YÝåļö`€o߯?#åaçÙ'!¯íEòÙ'2~ôçþ‚×ÚNyFDîöñ¼÷«F²Ï®öº'çêú%൶iò5æ§2)ûGâ]×”|œn‘ÄÚÝ@žñ Â]W«&7hèyÖG´k{Ÿ±äë¾RлÈã'1‚]ë‡m{„~"/ÛÑ©òZDò×é¹ÈF/âs—‡cF¨ëúuŒB±~r<öe~D#H×ÎL6õÔíìËü8J2"]k+¢òÁ>t4^æÇÞÀZîØ¹>™ËÓk•Ï_'wìã®ø,"#@÷]~ºtŒ0×ò‘ýÒõé{~ë.?öÕF”kžH¹^ÿÜ¡Å\ÙRÞ’qŠ]žÎ¹òñý3¢\s~¬uzùÓuìtçXÊ»ä1Ð| Þë“ï%êÇ ÃˆsmìƒçIl¯“ï-ºŽƒr#еvƒßç*ƒÛÇ¿óºEô #Òµšd€ÉúÀð»Ž<ÂÍ– ¯aér&ó£[iÿa•žÏ%C¯ç¹rØ×Ú:ŠO-5^WkÝ??‘xÞ¤KÏgJj¼nÆèçJúÈÆÁýŽ¥ÈkGšò£ìôï:ÇûØRäµu B›Ûç>>±¯ý}X]ìiûç“X?ŽbMsÛJ† zÔ:ïÞú|¼iîZõõ5ôÛ[UFÈk‡”ɹ%xßÞúx©[*¼ú'õüêÂ$­Îwo}^$wìŽ×Ã";Êè{©Ÿ¿LnX1âwW“’ŽûN?ž³D¼Vôàaí½iŠ«¡°ñºa{á"–ÉH{*|t45ËÂ`öOPà ö*w~*Ë€×Î ÈsÖ?!Búª#‹p¿î)(á«N[Ôª·6Ë ¡Dß±¾¼ÀÜÏ\'3ÿ\¥i1gúîÂñ\#ÖµûTlù±b;óœŒX×êâ¬r®j¢¥ù´=ú Ã"Ùw}tLþ ¦YíUøŒX߇é6ë"#™Ø+ÖùŒ¶¬ 4YòWY“‹Å}îŒ8×&)æ'¹j•ñé¬åüÞ¤‘áöH=GÿÆž ×§èÚNw|ùv¾åÇ ñí7H×ÜM1Õ•×á!ëSŸ´ómžÊ®ù¡ _‡]ÿ#ÏŽÃ"9)Ìâ¾j·Og}†eŒX×Õ5VÔ×"Óís™÷£DÓ<[¯‘HÆm×Êï³%tÅâlk]ó©´yýÝâ±ã"Ü´××!‘z/’´=)?>•ÈYJš ´«™ãýç…q¦ñšW›ÁM{IÁw°œ”¯ëGÎzøZäSW¬ÇVè°Ø]BJ÷Üô¢ÏM|œ³YäžÕ4.ùÒÂoxöøãñšëºj$aöM|.b#‡[mQ›|½ÚSw×¼v¼)1Í-„ã{×à~‘t½[ô<{œXÂ]×*8ìô£¼ÌÍŽR5#Úµ6D§ùAÚ̶ø}…;6Á®&ÙH—¤åÝ,ás5h—l²=V‰¯¯Æž Ÿ6Â]cOƒh`½s•݈âŒx×¥KùÎö<ÿ\]ó¨_·Ä»¶˜‹OÅŸ m6¢ç«‹x×苃ñç#fz\b䑞ŸÃ4=·V‘}bD»®¢~r@-þÑgÝ}èù‰P3³<¹rõKÓ?·ßù¬'Ú5¶é37¬·ž èÆx»„pרÊs~«Üø„ÖûYÛhĻƮ#që\?ušKmŒ÷ܹ%Þum Nökß›ëxšïÚ!uiØ|]ÔŒ×Wá®1TòÇQIñú}u ·ëuðÏ\$:'8ûî*ž+7ìféó‘Èúx¤^—×¹ï"Ú5zëô[¾jü¬ùJª°}D^‘¿ð“^õËË‹p×ð™I0Wc²2 ¾¢ ñ®íü’®“sŒO2Ô:ë#-5^WÁÃd÷,j탺I³-éÌ€hÛÐ=•Uqç—!mkµhJ¸±ÃÏEÚô|PóÚŠb:]ýÚÇžô¾h¢õºþÅF\³][gÎow”Ða¯~Ýe¬d·ÞmÆîHá4_ýöÈÂ2±UW_‚m;ºr¡¯«¤—´&{ ÿ£‰;=OCý0?Z¿ê $”î.îôdœà×Öó ¿‘­ ÎqwqÇ*à ~õfÂ~²õÕ‡»/ÃSÑäD¿®ê$ƒ¯#¢ô£}Õ/‡U<nÂÏWgž êdpâ_}§IqÛùZI’½ÛÁó*”"ì6,·Ýõ¬ ü^7â1†|:!° °$ݽº¸S{x}\…{÷Ú„{šïòâË{:BON,ÆÇitã“ßÌîv”nº¤-Œ§ ¨…Ë"h´oÅ#iɉ‚ÅztÊï²O`â­Ÿ9~!¢`Ûg#ò˜’áâ­Õ…N,F ì„¶D%îáêù¹PC3"mLÚUζÓÕâé¦9Ìõ;ðø¾¾Bª.Kî®»šÛÑóÜ5úëîÐ ƒE©Ýlw‘nØ#OΉƒÝ®ˆüFÛû&QÓ¥çŠÁ‰ƒõm?’—½†û÷ž>.¢) ·–†½["’¤Y?ó'œ8˜ï¬î<¢¶Ò6]&Ž–(ØUOëçGCÖ;ú¸ù ƒùµmIZ¸¾W7ýö©~lœ@˜OIû€ë?þuñÑÍë?þÌÄÂÜÃ9¸Îÿä†í†÷ˆ 8±0÷••Ôõ“|0¨»ã=‚¦žú¯èž÷â¦/æ*þLƒ«Pfš,úëpYsšÝòϹT€Y|‹Ž¶¿-ïqb¾e¹¼¢¯rhdÚà_†ˆØ>ªy(lFʧaã¼ý‰ˆíOÂæìÚðsÌÏ=ߎ„b'$¶Qú|‰l ¯ÕsEçÄÄ|WqyA?w7'¶ÇºÛ Š]—lZµ·ë¨rž¸·Böül¹s¿v…×Îq£§ÇÓ?¾vþ$ßÅëV˜ë3´=.AטµÆYÍÍIÊ žžÊâ*ñ)ZvEÿƒÝ|ü‘ Œ]Õn‚ýû Ù„W詳‘b‰ë*‹žé\3Ù‰ŒíhÁ–¥Œöƒš|d®:¡±«•n¹k}DjÿïÉíyìZÛ%.?ËRÍ­Ä?ØØ&Ÿçå¼5’ µÐãïLpÌvÆ_Ïú97‰€«äy«š¥Ïì-Ò ¨"F9Á±mÊŸ›ÿzý«8*Z"¢c×Ó\9íܹÙß^ühÝëDÇtOè8¸Ú€´'¹>oa'<¶WÉÆj7gåîvI>î]d{JI¶¥°Ç^ü\Yfæ×uÂóžß9_ %¾UGçÏâ\d›ñóÁSN)æ¹q÷å|Ä—0ÙuiÎ+5§·oÅy ù¬AÞçõ''ð6®8ž„Ét‡¦ñÛ\Åfj7–z,׉“é¦xð±~³²î‹ù¸Kˆ“©}${×%ýÉP©XMNœLwx®å.Y?½+΋p¿êPdk¨¾Z×ó°†0™ª§¨Z,¿Ì›F}Xbæ-£(Ô¯ÂÝy?0·ëUÓzéz ’›}+·!²=ÿ9–Yh#þa îÖ 0&à y”ìù<Œ#B¦MGÎù¯­›6l×er>¦ ]¯±Ž¼¾Xz‡ÞwàyÖ#î0©ÀÔó¯89ñ±m·É*E£Gž®·èöx]dð—{dƵÿ ý?xìùÆvÝ0_œÛF;iÊÛ(úx6$»ŽÃôë“fFRÌê Ñ ÑúÈUvhçõ¸H&™dîôõT<-¤öýw¾t2úKcðÒÑë- ÛÞîOÏãÉ ÿ"º#¼š|ï¾cÁ•á_j‰–_Od~6ã³9!2‘a™”`ÖHU¹ï¾óWáŽUýÄÃ]Kv·kœK6"d;Š9­ã1;È»ïüA¸]¯*ícxë½õÏÝw^ƒ›u'´’!²›ÿ^}çÂÍÚf ®¢«}úÀ(DÈv 2/ám«2¿-éy› »vÖŠÏiÒç«ïøÚdô×v¨ä×Y2ÑÝhìq« »>ÉäD÷Ôê{ùzÂc›X•áú€ïyù÷ѱM”á}a;bY/ÆKÄÆÚ6ãJ–×òqS!`tBcíºtZ2´vPr‰æQàæÆäúÈD¨M{î“Ýžo.Âb·¨!W¹ê›þë~4‹]Û~$¥ÞZ“™vôã+„Ť7Ëíà:¯âãÊO²¶…ÿ»ˆËóò=¶:AXl¿‚žÄÞÍHúqk¶ .¶g0’Ïe»}ø´z¦I±æ[Nënßæç*=ç•‘±«]™þ`£%•îyVAh¬íìšêleî+ùücO>š0 Ûh3#ö•|¬«ƒÐØîëÙõØö‡û¨uìLbcmçs±<ß–yø:ç&±±:>iW*9K¼±áSéÄÆÚU[ »ì]Žü,Ûïa•ܿͲ[ØÜÖ4¡XƒÜa•ܾ(IåAøÇ…¢Çñ> ÉÝ»Óì)¸6]’–+CŒ 6vg/e‚×õîä dƒÃçßhä 9<÷nÄÇýèÌs "cm(¥ðÕHޏ¹Âç‡òÙ¸‘u­oµŒ}oùãÏLd¬mïO²Å ’i6[ø¼Y47îU6’†½ ÊÔ2í{þ¼JnÜë“|VÑøŸíÈ’¢cö™l¥vöx’¨7À|ü™57î4^ömï™~LEªRègãö–/ôÕø§£|5}Í»¡G>–a]\ ŸƒÐXÛx…’Ïë’—ýù'Ê3÷ú¬€®Â¨ïeà…fÉ 6%O¨OhǾ§Œì°,®æÝÔõ83Naö3Ó6íD†ÅÁæç¥äs“˜G ±±ÛíøåõciÚnæ[×òÌ ZòÆVMÏOÍptûË­{½Ó¼‹bëì[2Ûæ .Â}Ûov¹nr)ojóy•0|]Ûb'ÉýZ˜ÈnuGZDŒtm»%BçE8aèÏ`ð^døcO—·ë‘§‘ÜÇòYåúçlë¯×¢µãÈ$ˆ‘‰vý†É}Ü$›ž} ‚ ™ˆ$ t-²æø\Š~.£ˆ’m¾"íq%å¸ÎG?Q²=g#rÝÎ_‘к¾ëqß&!ÉâZcü°nç—™(ÙÎhøDªŽËÄjG×§ HvÝVÁ³ö:ç—.eG¢S$»vT:ÆìX޲ÎóQÛsÏfÜí3¥ÇëI 8,Á {­ ’;Ý'u9gnE#Û8Œæ-›ÕŠ÷Éĺ·üš¼ß«ãÕã3%F¶öšk|Ä¤Ý £ B&» ÂϲS‹2‡Ø}œ__"d²[ãÉE4 »KqP$D6[Ê…çÓúp¤ŠÊ-²¾Œ æüšçÜ<èã~O€ìªVHÙA¼úíRÏ÷Eâc×땵×/ysy;߉OTçÎI-èëAóß/’øØÕq},KmåmaO>éabº×Yžö:“YûÙ6Ž8>Ø„ÇæfÊ`‘=¤O(µÉyž—ÙðL´ÚþŸHƒçî?!²î«.¿öñ‘\íˆs!²ëÊêÔ•Ïkûöïy÷=A2½ëN®ò´Ùñ‚ J¦þh$ŸU®{ê0Ç#Æ=¬Bž›öü,ÒP:5q2ýæÁ]ï‹}ƶ;«ï¸k ”]·dcvÓµ;$S îëïxÚ)ÛtÖsÞÿà#ÏH"e× f¤óÁý6${t¾ ezÝx¡Öçw‘æç;”@ÙÕgäÝumSùHu `7”ÙFQ¸k¯múq=,Òx‚@™®õ‰h¸úŽt“,ûIe:{ð Üi6ytã Nf*2ò‘„ø^‚çGBf­Èdªãö&ùÈlϦ²(ÙõD$ó3®£:[/ì ‹P;¶ž> =F¢ÿ× }¶Èí™¶ –9‘Ÿd§ŠœkœNl̹­*8¼p‘sŒ['DvÝ;Aaê6ªÉeÏžOG['@v&Ž.™þ5u¶# Õ‰Ž]¿ðúd¤ôÁªo_éG:`'66¿R—<¨÷9^ÆÈ˜ù“Oû~›«Øß²à¸·ëž[æ—±þáy©ií°ØU& e×ñ¬O¶ïÔñ÷%*fú¸~<‹˜ZÖ'öä§¡´\>?ðìÍü½‹ål߉‰íôsΦƘÂÂon¹o˜õ±ˆ«­ö˜cý®*èDÄìØ¾^çÉÖ_>ÉšÀsum#3ŠDüXš=[e]®ý8Lí„®kpÂ|ýùó <ïYÍ#v¶D$úG÷S“÷iâ\ lËò öã,µ§Hl»²ð,¸Ú“LÌ OϘ°ùx¤¼ úÇÇà™À– @lÓß8vÔ >ÈÕžŸaËÆ«[Î.£â®{|wœ¹wB`×î’Œ[jj|7±üˆ v"`WéžÂö¨±{Û_'ŽcÔNlsÓ«ðº?R9¶…ÁùÑRv^™¯plø9›÷ãð£[V±–7º4OÁÛõw?ûœõŒ“žò‹mêš~½}'‹O7Â_CW‚”‰H,®^…ðW\G@N¯Ý—Ä¿X…î‰×Ä“ÖôÉ•ÇdøLêD¿¶—kz\·sOkËë˯¢_[PŲúªÛRóv/rÜ-D¿bOųLi)1ö½üyÏÈèÇîô Ýc”ãŽK÷D2mñd³—¼çç6!Ý÷2í9I&¯_ç4OÜ ÎÜ}Eú·q:t"_#KSsÕNÆÁvò8O¹:±¯ðoÔ5ûí'Iäëº|Õ-{ŒÉ»¾9Ò/ÃëJ=7s¾¶ žôÑÑ2uàˆz'ôu]¾™®³®b2yŸWQvãwb_×ÆÔ ªŒa©¼Ûôùg¦iÇÕ"¬Ï"ó“egqq'öò”`‘4Û0mŃ妽þdõµEãúiÄúqÚGÚ$mŠñÖR)³{¡#ÈÒ‰õm4ÂùÖdrJuÛw"`;”ÃÌkçeçrÿÆç£öºF^}É÷7>WÇÄÀúU›dò­tIc¢ùˆ‹°–>>жÈÕßDuÿž(㈔öŒ Ûu9¯]´ôï‰rÔ¼õ Ûä✦–T¬k·oŸLÛÕAƒ:8½ÛÍй] ¶Iµ‰_íHþ9 ŽÜížÑaÛ²ŠÜ€Í‹ÿŽªŽ‚úžVŠ;ŒÏD,“|÷F92;1°>GpßÕ¿pœö#Õ¡û)îP·lúçsÉ–`¶I6ùXõ÷»HÕôÿê›~‘º¥ÞÀv(Ãñ·Y99è-SÊ7>‘<¡˜Gp¿ýº*®žô¶«¾ˆï~¤~÷ “-®Æ3Ùì¥/àùÕÉä0RúëgLÖ~í\Zgt˜*'š×©ãÇiþ>Á5Kü«úì6îÃþx°­O–Êfޝïëwl6ˆ~Í5G®Ñ#ùWûÅ9oØ Ó9éh£ÿꊋÉN&‡]›ž?ÎÕü·?ñÙxdtXŒ‘«ì@Áþ¹Ñ刣Ì»ê!\×[Yû‰ÍãÔ`dtXxOV¾÷ôåÛî@§#i|’Ã$oÑëstÊ&ÊŸgdr˜<$«§ýÚhO|‰uý#£Ãä£ ¶ë'NÞÓ¶Ú;/Â-»É¡ÔŒî¬U¾;ûɜܳÖSâÜ{OzÍ.dO/ñ 6÷Ø+UÁ>ï¹^žc5<ˆ]‡F²ˆ¯Çó¹1–kûAlÌÜ%²]Ê¿õIÇ!YŒ‘^ÛÃè[ ã”w›íê3hnÓ¿vµŸ<ŽtA°ëÚË`ªë|Ÿ‰¨Û<Ç®‚`›ô‘VæÛíòä(:ÄÀF÷<¯s >vvV¯‚`7„ØÆ6ÄûÑñœ¿ÍàoÜÒì`³°e¹ã‹°,¸^¹´´¼^ê¸írœŒ´KÜΘœ¢\g¸%+t³G¡ç Ö·E"z¶µpZáïCåX· Íþ«e¸Í6oþ-fÏï2‘°Í O‹µð–é½]Ž‹`ÛÆu¦õ⎼‹ï©r|ƒÒ2ñúÒMlg®dCé»:¡ŒI5KsËìþŽÕÎHÏÄðM­_ÿ/ïåÝoåB#=½i~§ÍãÊl{ÐéÃ*9îê9sÞß¡é·ä9örƒx˜­e$˜í休öûV=®B@Ì69$ {´”—íÊéøóODâu¯ÍÌ+¾ßêó*Ië åTSô "È s”Q1Ïü®ÒÒ¹Y;ja±mC”NSí1¸Íóÿ8„ÅôêøI[)»ÞÛåüIH=Ø0GžºýCÛ¯óCIG¤žZ ±‡tÄ7ú|^Ó}²~Ì{r X× DÄ®÷'uO²+d¶…cž£ü1m–¢«ÖÌuyÙð‡EÈ<¸Öû<ù¸Úï={^„@n<Öêï ýcÏTŽc¦A?8JñaÍ<ƒÖãÞ%,v•ož q]A?n2;Ÿ¸=¸îÆíu­ÅÁþ‘&2zîß1ÓtºËú9Ù?߈Æö\¿ñ…¼:›ÃßÞ2ÇGd¬ÁÏËV>çU¸}¯ª«óÇÞÚûV>çžõ# Ó¬Y®÷T~X®óɲ0½:N\¯оíÌæ_YØâ9uýãh?š™ó¹›º0ëiÞ>Æ;‘ƒùã) ³AXklùÆw. ŽT†õGüôŽm›ü8]ίbú'îâiå·IéÃ&ŸÛø6Ló=Üv ò½‰Î›6ýw–PÊ©VOùí:G އMÕÔë\%iÎJgó#õz|üÓ|çz3—}k§ó{œÚ°-$$9*"zSÏŽ#¥aÛ³3‰tÑ>¹÷;±ó¸wëõ?MJ_<ùhX¤˜Ž|¥a¿ïµˆ|8µþ÷ß/’Ò°Ñ$µø[Åœ Å8;Œ”†ÝYøçµMì{qYþƒ°˜ö™÷U>ö;Žû„¸ØN¥'’Ûsž÷ÇMOXÌ®¾”S´-KùN4Îg#Q±mÄJФoÀÿý>O4Šmß¶.¾}Tís œßàÌÛ×!­õFN±÷çÁ>Q1“OäÚÒïŒgÚ9ú{|P±GËö>‘M"ày2wÿûERæ³åû:¯9²½%Ç–¨ØÖ—“.³…ã³ÈñíËt±ë’ü„Z®´¸½?ÈñíKóÄk/°]¿ÎÙÌxº9î´Ô„-ël+¯ž~½å$$%aý‰œ_Éi•=Ìa Nk­iž®Ûƒ,¾ë·> ‚bê‘å@ìµÊ0!*·“;æC»ú’‹‰Q± !§é¶=ÙH¹Èé ÍÅDûGµ0?‘è×"ÇiÛqQ©ßÂ}ÿ~’Ó 8 Š…_¥I ~Z¦ ÿbòö¹ÏÐ%> ?_]“¨ØÎÓà ¸¶7AË}œ^ãITl$J”! ×}ÑÚ ›DÅ®f=õ¡ëIAÝØ(û$(æ×KÀ#vsÞÒááñÖàŽ½Úƒ/o®ôiÖ,Š™QbÚFJf¯Îýã»­r¼‡'A±í4Ÿ¢Ì¦œÎ:óÌ&A±¾vIËzâù Ÿå®“ Ø–¶¤ÃÄ?¦5Îí$(v•5“,ÿí¦¿þ‰‰‰]¯~ÂsKõ+ûèNk°$ØáßÜjò ø·kBbÍÒVmí&yä/¼ÎÛ$!±=fQïOçÄçüP‰án¢רzÄ”Nl“Öóc%ˆ»5”éLðˆïض;ÈI^‹¾Ž–°S³&hXÀ6Lü6çr,,&Á°«àô,ú6/j}ϵcÙ7‰†]§R)Þ÷Šëûh‹ÏòaôôAÛc /ùõžN‚ak[÷g{°ôWæüuÈ;¸6ýAûuí´Ï–•#„5 „íà ¿Nˆý  Åyê1?²0Ë|««Áž?ø)ç>eÛ…?²oAíg`}|‹-‰2M_¹GËp«tü6ÄÀvˆ-Iì&´”ßæì$>í»e)õ±mKð½Ïç4!°Õ® Ë¡÷ô¡–'[“ØÕ8¦¡nKsùÞ€Çc‰Ø>娷ÓYßð|>»N%Ï,óñÜœy>©2“Ø>!3ëúz[~ Àó8<™ÄÀ®³zræ}U[=â³ÛŽR°­ïLùSϸ»}Bž%b`c·\D¿¶}ÕõElÜ@|b¥++ê] cB`×}¾˜Sݮåùûëøóëö¤¼ô‡íº½¾ïϹ%ÖõÃ:Ýù}šÛyáü•XloòKâ¡2æt<¬ ‚í\ž–‹øH˜ÿ~ƒÎ_ˆÅlß> $ Œ@?ÝãÈ`~rÃ4C=}>¬”¬Î<¾™Ê0ûœNm3]f>Ý'Òú¿_…XØvõ\åú…ò7ÚÈqà »þÛÔã㢼ÏìãÉB lÞWÁ±Ò²k¿G x~Bî¢<¹#}Þç¾ÇŽ7j††]ÿõT­î»D¿Ëù™o°=tHÛ_`åƒ=w>™¶ÝyyNÚÈhïÚó —‰aÒ-lžZÆ}îßÂL Û²:žpá­å佋$v»‚âšôÕ»<2¢fú!¾”‰wÎeýûúœã4D¼Ê· ,qÏ4›g¸™vˆòIÓ òühnÏ„ƒ®}¼ñƒŒõáîßøødúZ‡Kq¦ ûÜg[ÒIèëö¼'àdKõÇíGýÅ$öÕâö£&¤=eùû:Š'ѯ]Nx¢Ñ;¶ûS¦ŸUž“è×N+ò·D…Ç~¾ÇÞ$þÕ¼ll}˜Ï‡Óñ³ŒöùFúxµÉ ÑóßEB`ûùδÛ^žNñwt.Ÿ‚í_ÛÒ÷zºéÿµ¯çã¯D¬uµI¼´o¾otîS‰ƒ]µß-ú #ñï[pÄŽ&°6B”%î¶°OaVý+%tëƒÇØA ß—àì¥2?AbúALwÖïÌw`Ìãðy&æuåítóúž;3Á°'ññ|Ý]@o³OâÈáÊl«ýh@Îkäa 1›mŒÎlôÏ•\Ba×ûÌJNm¤{ì½ÈqÓ¦M¢Eçɲsê¨Bº9îBaý‘ö¾C„õa3m»¥ó„n?¹)×Ãi?FVç!BêÃv{¶d«Ñgêþ2Ç0ƒÄ¶"—3+yn ú¼çÓ!±Âzvñðc²yŽ{œ‹Ä«ìL°ÓÚÏ7ç\'öšíc˜¨ø},7Ñ0ÛSIŽ7Í>¾¯Îq³3}̸ßE†ůgÿ晉ÛÜ#Õ ‘ 6æÑž„Ãî ´íO™ô“•µ®6êGhäçþüß÷ÿëÿò?þ÷ÿÿ¿üÿíû?þoÿÇÿúÿûÿú¯ëZ¸{þÇþÏÿñþïÿÏÿ÷ÿøýïÿßÿþ‹×Ïø?Û¿þËöô?åúcÿ&ÿS÷×SøŸö¯ÿÚ6ÿ÷Óò,!wòÆ^£ß¦½È¸ù${•«Ö³ó2ú~’º?Šî¾ÿþ,e|Ï”ŽËØûin`q/#w³—‘{»ïel—ñg½¥ö{½‡{½cö2Õ³‰÷ÓÜéŒ÷§¹îOs#´÷³Ù­üq™þ~š[Xsš{,všÛœl/3öét\f¼8ð„ðzר?ÿq‰ù.q‹Hî5în|/·+ñý…äj"ŽË¬gÇo² É{•{8³Wé{vÞyïîÕÛ,ý^gbÏÄ=ñ¹ŸË.HÎë¼[Xo›èûùÞy¤÷óu<›MJ/Öy÷ð-Ûº?Îîºï|‡wÞOx«_Ϋ¼[ø–ŸßïÓÄÏts«ï÷`yõlÞü¸(Ý[ï.Uî­w_{ÛÚð¼N`ïiàÙ8öÞ}a=[xTߪãýÆÆÑ÷÷¨ö^e¿ñçUÞ-¬8®d7n÷³¹s=ï'¼y:çUÞ]¬ï®ñ»ðÝ«øÄKÙ›TŸeáŒÐ…3‚OÆoÔ&d¾†#ËÞe·ÍNö|­ÎOœÃw}q?œ»Å½¿Ös”^ëÄŽ>¯ónâè|Þð5°ÿ¾ÕÎH>/óîb»Ó‰ïuî$˜çk¹ãk•×Nâg×É>çìýZO¨Ñ½s6‡ø¼N`ÿí2çù÷¼gWŒê ´w+߯h÷׳±Žã»÷:¯òîä3ð–\U·£æy‘w³¸i¼{ï<³ûw²jóãçxÎ <à;‡ôÞ|›¶u^›X¸‰o˾ûóˆòÑTW•½›ø‘Þ{x7xÏ£i¨ü6æ|^åÝÂ>p Gã#œ\7 q^òseË{eÿuÑæï6ì<–¿×­F¼÷á=¿¾×Ùsíó:¨0n—ˆçÈÀ5aw|ùý|¶‘Øyw?wN îô±§7ÇPèVVŸ—y·sÜìéûX¾yøÏ­5Ñ›oJØyw;û{ö ‡ÀÁneåßq$ ~(½-¤Ÿ ¨(áv¿s^‡å…g'Œ™ûûƒkùdªd韧c™ï~ËoÏë¼yà<x­n^Àý¥vþúyÊŽîÓnªø}Ñ<}è=nˆâÔƇü^Xª¬½ÛF­ß ´{ßJ;.-í“핳ÁSyápÇ™‚+bV_ Grð öŠWܵ:¦‚^ïzïÇÑ›Âú<«~,ÉYyÝŒ»Ÿ•—ªPì÷ ½pS¶#ŠÊ`T•éÄNƧ¹ÍVžya¦³ÇØçUx cdk2òBÇܪ÷sâ@Vyöë/Ì&[ù–sž×y·²cô{‹dïãØ:ËÉjÞ5±‘Ûâ Á·œeÁ¶-ÖA˧˜qªòÔQœ:£œãÍŽcý}¯n£gÚ€UêS}¢¸À*¼Êó&ßøòylãà´uÅ̹d±¶ðS©Ý·¦tÜâ¨Nî×ã<ˆÆæs1޳ÅwœS|žÅfGÅdµ”Ÿ§œ,4{lð­ZFÛZ´ó*ïžh‰nÎÓ—sd¶¡ó*¨(²sdvˆx1ËÊma Ž?ÃqsKðžoU53 S‹Éó-(\~ý^.œÅ†2û±UyF&ªÑÇâ&F}#Á²?pú]ÿ¨úÁQUÜ´¯ç,æLûޏºï˜QADÒ0F¾Ãžß:;PVŒw'×uöÓF7<Ý»äœÔÞceu|¿m:Xa÷©öžÆ1«Sý¦¶ßhàÍò;ùþ@7ãè~@›gP,„†ïXøËª£Ûì™´c?Ëí¦þŒKñ^¸Vçàrø)öîh¹qÞwK¿jX5‘yúÄ{bÕÁvÀ+½£Ä£þD¨•ͬ9 Œ;­¦HöV|"U\89&÷r,Àø¶„ñ}F>&Ÿªe©¦Ïf!·yÀ#>ÐV¬Ãq^3Àj·˜êy=ªòTò ¼dvǰ<óœ¾)Å:ï¦A)× ƒ¢nø@cHÅBï¦4%KùÙ{#J :åSv}vûz¼µP–}  ±ÐÀ›Ñ¼Ä›ZmBâ|A?8Ô{ª±»"¬.eÔgϱöœ—7t%5ð¨,74Û›÷tÕ›ðzÒ³jÒhߣ̸º‡ÏB˜WêfÇ ±¾fHÁ: ¯|~º¢/Œ»uD÷úSžÓ‘Ž*sáWÛæÕBï–vÇäɽm<-Ôþù[y*óSã©h8ïJmùóãœÆ¤ú}5`€–0:ð>¹kÞqo1t9R6ì¢,<ÀÛyë³»^ˆlJ«§CÔïêõç+ãý½¶ê Z'ôÄkbö—õÞŽÊõ¾ mã j!LæPEwůÞwáí_¬C;88š¨Ì|¢2ÛÑ#ÅB„ÿ”¯®ùÙЬÜy°ÅB<¦záí|[\>ÅYÅ’€º8>ÎH^¨Ix?…÷`dáÑ1Ûþ,ÕBh '¦}®8=¦;wc5 €êüD·«ÞSÁ( ØQn#à€føùíAò”#ÚûÕ/«<BpÉ'ŨmïÕØF€.@] SÕb†H½ Îiï÷z"[Ÿy :²Ø~±€À›'ù‚f(œ-Ùîô‹…XO+‹³6ñ‰¬<§Fà­+«*ͪª< :ÏFG«pm"²iÊ€ a¸ecy_˜îw­ðI"¨<õyè³»5) ㎆·LfêÞUÃVÿ ½{úÖDÜGµ-Ã2½¢hAÁ½bÛöTËà¤xÊz{Þ‡P§®òÈyðNtÞ‰(¨ouR±K€‚Dn]K«0r*øÞ7Oáù¾cÎz±ï3¦XˆhJç˜ç«`ʨË<à‚ S@ðå{‘…åêBwÜ®ƒz \Ü®SÕBò…žfèî}yM²e2¨DÏ cÒ¸ƒžï¯¶…²ÅBØÕh_Œœ„n¸¥{]¡$Ãð½š÷£˜Ö CéÜÕ’%#p 1–ŒåopðƒFõŸ‰`9 ƒ;qò}Ô—tÞü¾]™Š…­°hÀ¯d¿º}‡Š…ÞmO÷y7七ºM–±î)€ e²FS°«\1Ïó’]%ƒg5š×ѱ§‘¯cj$À cáÂïz_ŒPÆž‡ ¡°î¤Ÿ)0WT¾U{ÅB8¯~„°U¢öîöb!ìì†i¥6ÂŽ °cl°Xˆ%¦°ïLî®Ñì}ؽWPŸ3$0ûi³Á_Ä ²y—2º*–©2T4C×_À~²1Ê÷˜áúuï!üòO²Øs/–y€†&„BŸ«ö¾Ï06Y±A¨áÂI´pá/¬²ÊK¡GËüÕ·ÁÞ»¡GÙ”OžÔ$%Ác·ë}  ‘¶ïÜ>¨•l­Û à†zÛg=…º—ë/¶A%sŸÐásÑÞmyµ‘ÀO¯±”‚He88¦ÜqÅ*5v¦\”SÈE¯ú¥|B8£cðãÑú€‹÷B¥&@â6ú| â.ÝP.줿j!Ó8†DÈ>(ö¶íAµäƒh8ìBʤU¸RA¨T*4SµÊ3®èxJ0ñRwg-µ¤`"®Þ…ßGý{J¤ôÏŠ#€\‹ÿ”H"Ç]“Ô¬IjÖ¬R%’ çÇ£™»mœ@ê:Q$Š²Ï¼=èîýÃ7̼"U)‘ÄÎ’|`. Ðø=E/"/ïŸjê'ÔâþD%Æ®@»É¦0޳YŽHb <ìÁ¶n4ŠkK¾˜Iü  ›Ø̨"3õXäÝý˜VÚ2¥ Ð #;`dwô½1Ês‘ŠÂÎ+Úñ~¸R)©åñ(Q;ûŸ¶Årj&ÕˆRc¶ôtœ»¨VgJ½FÀ®÷wk_¬B» ¢UóI¯˜¯ Q„"3ÁÛ!rÄΈ«âA«Ìœˆ›S|²ïíóB‰#¢KPîFwƒ6b;| ¥ NjV <Ñ;l§X‡sNM1¨ò^é X¢2‚®"pô¨o* /éÆKºå%] '•C£ ÔrB‰ZnFB‰Sw]œä-áܬ7•X¢b6 †ºêú‹`Y|PbØÙi:XƒœÌáål€Cç"ÓK:J|©O´þ§¢šmÁØC¤ÜÕ£¡‚TêLȳºT´L–( òˆ(|aÐ7±X»ÚÑ&º“kì }x}ãL¤2y`OÏÔͲЖ(œíë(üdå”X¢²IåÅU5–¨ÀŸ`¯·Ú#‹Åp &)°D§@Ùqy<†u÷ë!eÔyV¸»úy«RÆåíAÅ¡b*è†Ýxý…‰N¯°JÉ!îûŽ +M‰#Æ{,ÚßMt”‡+1ÄA8aðŠ&`+£|À!¹#i;†#Z+õ…@ŒU”óI·Šè£032)ÛÅÅ:ÐÍv‘ÞAac°›ÕküPÃ8rŽ…ppÜYŽÅBÿNøXÁ¯éN.–€(Ê`—@)tUÿåBïfî ]Ùà jR 4{yûB‡HYˆµ )‡.¥E•‡0ï Ö÷}”Ÿ‡Õ4QñŽ9Œvr£"²(@ÄÔ›^¡$Šqë3 âÀ%6À|G{=q'‚8øœÚ  CɪÈPJ1`{8‘-Úę̀àZ¥ ‘LJYdèLðŶqd±D€¬‚n\A¤œZÎ*ßy¥˜ûú Cî9P,„q’û:qFÿº@‰!rdªž}t”?0D%ƪ¦‡fK&õWË=Íá+|8ñe”çÕˆFáÑë/°¥ÿƒC\Å,4d‹¨ø¦î« –VVœ”¼ûÀ±¥²D!ôÆ6I}u°•¯UT/F=¢Ñ€Ðè, {©)2 ˆ …â‚>R8Y©ÈtüP¨áÕCصˆU8‰AÄô$iݨ*‰ª˜2ˆªœ»+çîX\K™®%„H’ñÓé¿€SݘTi»Q'½'Uü¾ÙªfÃ!êÄn ª‡SùTUåbƒˆw,8Î ‡d³ L2 ˆ¶.0ð ìÄ(7"ÄtFt’Í&iê³¾0D™Ü‰“ÃrÅüí–- ‘hú!scøjàÐÖ†h `v,˜ŽvB@ÝK:`ˆ“²FA“iÊ"oVÓ%K5"˜0`⦱| â«úº £} ¦Š÷…_,„Z:0^ðÀh)¦å½$°DÇ‹!¤bJ^•x–‚Dzoˆ²2£÷h9 6 ˆ×+Knpçµ’aXé(1›:#ÜÞI0ß_·Xˆç4X yËù}u¯QÄÙ~0) …’eڪр"ÅÖ€IÝhïÛøÎòaÓñÁ×íúa eZzépDá¬ózÖ8 Æ4=Ê÷Œ8""09½/'FIâH<;²¤b+^õôFIb^dtÏF¯“U5¿Fµ"Ú¨²°Û««\Çô”çâT•Hy?E´F¢´6/GܱSÿ×é…;&p͹¹_ÅBïŽö…w¬7X w¡ÄV«È€#Ffó”Äj«»CœxÐ ø8…ÃÊ㢹p–Cê‰ãâ°QÖ/À¯ æžÌ „úÃ9ÝÀî2òʼrÓ²ö ')QÍŒð"r \M¸®¤?™tã>Þôj:i@?7G£‘JC9ä¿pÆÅÔ£Ã'5Æ'×5Ÿ¿lë (âÀÛ1Pt.zZYùnB|YTB•¾,ªç4órBT‡­í+þL ¶«¼ìE­d¨‚éãV‘ø("ñ–×>é>ˆ0\¼‘—b!Ô‹¸æ‚Ä;íXeXQÄ…Bo;6‰³•ÎÓ@cÛ8AºUó >hb@Ï^θ£²§²`ña’j†«åŘ!Ê÷5r˜‡¿py©ö"yÅBï¾η|Þ–LZýô‰"büzý…fsfj~b@Ÿ„ðw~‚.ˆp¤¯j@mDü‘eAL& ¬p)mÉ (¢ÃÖçc|„“ºôÁ0BˆƒCJø(ÌoÕ]± ÍV^­PW ÆîÃËw•jÄÖy)BòkéèäZk@9­˜P'¼l¦{$X–œ“ T—T眀,óU1`pb”Ã=¼ôÈXªÍsÀ‰€‚q ’«^WXb†o+}Ãþ¥£†K´ 4rƒÉÅQÞeÀ_å¿"ŠHË–hâ'Ì Oúo¬œö¦ß>˜þ@xF7Å¡Xˆr`eW ·Îé(Ïü#IL‡I÷*ûà‰Æ’È&€ÉÆ¡LyMS•ÈÆþAN¤zË·¦xkÔEup[ã½Ï+H Õ¬»×”$晟|&˜O˜–E#EL S"CŒF·JKæA"KOþFèÌ=Œ,>x0rVm¥¬gð!0<#”c´IõU–Á©ìÓˆñ´Ò©8‰è§h@n“óÜYY‚9õˆ™‚Ý•3+ØÈŽU6ÀWƒð e§uÃè«T'9ó“þLèmÂÊú*«kˆ¢QÒjÊ…h#³<Ì)*{¥MLu^I¨"¤æ-bôï *âwFÁFfB•þtN_S©R6£´lJôàÕ§bÎ0{…PxBŠpÒÑ@öê«|®j+ÒÕTPi2`Ÿôݺ”‡0E§ókglÖõøpe“SL û‘©qŠR¶:0ÅN·³N®A†ÞÔò=#¦x =h¥¤;`DGi7tåI†×Ô²Ž8P/nš k±.PŒ˜é)XxÕGé¾å#6æL(qÍIì¦n1Çøf±à[Ñ;fF¥ÖôL¨)k;ºlZ½ªèEV/ïæNÉï(™¾x@ã& à«üÛ@¢ýg3ï19Æ¥<Á $Òýëç$•Šáy*_õw_ÝcŠê݉é颵Ôh ýŽª– ‰ÂTëFÌ¿ó×ê Æ#ÂÊ)næ´öQ‘ò‚éˆNãrç­Ó@ÇœQAÑA ±-i™&’sŠ*Æ@¢µûÚð‘š-¢r†§0<2ÂH^j‚ùˆ¼ì½!júú‹oFUXQD–1B?[1@mbÕŒ;(G rÞƒ€-ûÞšD²VŽïßÝ}_‹å›Q)ITJu`OϨ:ߊèΣš3}¡…î«ê¡(⟓_';Sÿ¨›H¿Š<€û ÷ë ap¾4*ÅnFœ ÃÝÅs0N´ Ó«r/Œ;›®‹T\šóH“ŠýIö`‹Hoä›2\,„"¤q–§øÕþFz´7Àǯ¿(›a =ëODi"…Y7¢©Šò2’HÃMúþ&÷•©01ÎlqÀ€/eegD'EE“ åcž%‘‹ÓXa}2-*Œ=$òhLé8ÆŠŽLHüJÙ‰´¡ô¸þ*ú‹:br°H}[iÎÄ"<¸©•Î6€ J°ìŒÎóž©t^¾§$´A×_»Ð¡;¼²zÚšN\ÑÂdW v£-ÕÔ""^·'Ž F·öâ•KLi Œ!ñαN¬jÒÁ-m$‚¯.ÒD5wúš d7ІfzX´@Dò¼Bà Ì…Z±F¢Møy]W<çî³w©Ñ!*ÀcuT@C켩M£—­zTÈ7Ûû>ìqÕ¤ˆˆh9CˉÌÂ7VùÆ2$±ÃÕi,LˆfÐç°TïAD6þ!R¯¥®újÄ%ó w¢m£Lª àˆ};¹5¾’¢S(L¤#©Ò‘Ô=³ÉÊ+8bÆŠé`(n^jÀiLÉÄ›:»¯²ÊÊ:€#GVÀ¡CÀíõY ‘ïÆûJÜãeXÝ]•O{ºcðÞ…£/úsL)KàˆÑ`LÙIÓèJ®OT9`Ñ&žtÐ¥»Ñ(ýƒÆ¦×¢z`ÑI\ŒÀÇ ¾½UTÊHi"çÝÌ7‹4´"äF¦#òÍ Øö (o\³¢ÓÓ‰-È ¼^“%ZŽ=)Md\§Óò¬Ðή¿ÊM„£šùºTÅOFºUT¨ ŠÈ`—œy÷ ÌŠ·ÊG6R™ÈÊWLá¬B¢rÿ¶ªzÏ9 —D&8e*w>¦ËÕýÑØûq_Ð}ǬÔìÑxm¼²ßgv†aU¯x,A ‘,„pÖætyŸ­BYcrO§ûE!#=ê*Gì 0Ñ ø7&šcO›—{šÂD˸XxÇ6Š^/DC°ÃƒÏ>)x˜å¨¢±h`y†dURZPœ(ª&tŒQ ½rfÔ%¢žvjþÝ¡ÿìeTMNäÏ嘞«à^JÚ`¢7RòÔÙ$’’WOO&¾¿›ÑÓ48ÉiLøUޏ­¢P¡DNb@(ƒ­õVdtŠWÄœNA"휗d£H;PDWþæ¼wÂ-Se¡ˆô¬×£*}Œî£ò¬ïÀ¥³ï8W¥Ó¹Ñ+p£'Ž`0ø€ù6*vFo‰¶àX ئÓÃ}ä QHúÚ2„…k¯ ­N="ØfÍ–àA모¼–¦#Ø«b´ä# bªÙ[ˆ8°…lá¿þzÇ]ªC¾CTaT–`èªB¸Å«r³3‘å乯<ƒªß+ƒ8œä¯©iùÅp>“ L"ð{•làô0ð£~t³Å«€£ìPQ#tFg8#*¡:äœÔxýWèjrxU—,ÄA\òÉB|V…xÖ˜á¨1ÀˆÒ[Õ¥v:š¼lB’Ib¯&¹ˆN‹ŽÈLçZpÑ)Cò#¸ÁØ6Ï^ac=C9¾[4­_lã[ÅÎéÀ­ÿ£†BjFªÙ•ÕJÃOÄÑYîCB‡ßªƒä,ˆŸôòB%tˆ_]èM¥”Y/ßu‡/Êwã}ì¿DZZ´v‡ÆÑu”™¾À–¾ …¢äèô2¥m¹’Ú5 ÍVÞÌíh1#kñŨšïþñ3Å;¯t*ú ?ÓNýaǼd4šö-&–pÀ¡QmÔAÛ€út–ZñN?SFžSWk4®¨9G¸áÒ}NEÖ+MBnxý@4sZ8„>âõ²Rnô~ :ývrŽºUV=c1×ü cÕÔ¾§¥)ÆnÖx†äV:t€‡¹0UU lq) ¢‡ä‚›,l£Ì†ÐŠºÖ‰ ­x˜¡`A%ɨ0è!`lŸ”W–B•„¹?$'OÈÉ“Æ'Ô*aB~ÈyQ9H[ÿhe©HGSòÉ;‡eðáé¥Ux|hΛþß§uâRvxu˜& Î.éLW¹t`‡ˆŸX¦ÑS9¤âòv ‡ÌÍœ‰ÑsäR-òne†ZuÎÛ§[SËïÄ0ÄÏ g}üVÝËc áBÿí Sÿ Ñ7‡¬X‡m!fRÚ€`_‘[\^ÐÁ#ú“ð‰ÊÕa}îuë Ðp¢Lœh/RN¢ôæí@ Åù€„CºwÍ’ÕÕš 2 ¶Ã€Ï^Í“:³#Ý3@Wë -£Úub†h0et¤X£”±õζ0©Xxßu ÚûŸfi­ŠË¹žu14I’ t3X.Tîçˆá;™x†&dG¿e±HÄlœÙË;~ªàê%£ðð£Ó![Éð„nÅN±G8é_‹½2ïqva‹…PuÀ6F£™Ó\Æ+^gâw!û÷…¼.¨€Š’Åë0:G§P3÷T&Ž7ß´Y¯ ûÈ^a.«´<«³ˆ‘ˆô`yçÏWC]n¤ÑO‘ˆ××5GG-ÅJ’ÊneåÄ05)ÎÚåV¢¼§ ¤òPˆeP›ÙÑFõRÐ3‘Å$»*U2:*x¿3ôÀMÏm­÷ûO‹‰²,fè4pr:8EFvyePÓ©‰°à eíËò®"¤wB…¹ ¦&àqý¢‚NhQo “ñëŽà›^¶ß“-!Îftñyi”Òº'j‰Ûy0÷V^À Ó#úƒ¤±€–"B3 ;ê üª§­t05`Íj`_)ǶÚ)<œ,&°Kåix󉋅ˆ®æhôýê0ÖìR¢+D %³mˆ^66…eÔ[bh4]1e0ý OΨBÉ!Äã…¦VBS+) HX°,‚ª 9üîXð¨«Ó,>Π…igÂp§gTFTÙ …éÇê¯}oøDÃ*$}P{(¼ ?™œ {ù“ `†Hú #ódšÕìßz3dŒÝëz7™(¤uS¹‹…资«ù%céýWr Ë…PHO†É0^fÚ_Wt•AÓøõ5ðzð«SÎ`Ãw œì‡Í‘ûÔªéaŠAYFãݨ.²AÝ!ÓM¤£c1Šù]«jPwèìX8f{é:ˆz¿¬~;ÍêgE¹@m‘`ĺ;lNºW5Ð vØq½:¯!§¯ÕíÔ^,„¡t'øÃOtý…gT^Œ#ÑC¢¢4G»ê~ ~*^Æ`¢4\Õ”§Ìu’— A΂€ûîxñG'OM«qÎxøñK!!çЬ†]ƒÂCZ1¼j˜ý i"åeðäxH:NÐF fE4:sf#/ Þ@Wñ_½ñ.¸À\Qdm„¬Š#2ˆ~‚¼Iǃû§x Ú—NT:14óÀÀc¬ †ÌAÄ•È.€½Zê¡ÑC!%ŸHEŠßëÄŠ?YËAÔʦm<ìüé…úÌ])­K±CÇU/4‡~ ÷j|;€ nœÁ¥.ØŒQލ°Ã ¾Ò‚k4eÒª¬ƒ‘’CP]°ƒ‚Üïiº:>$AVÂ'㬗Dvh ãPš·ªâMPK{½ACPçªt¿k3ÞAãRjDhŠÖ0”¶V‘þ‡âJ¸qDg¬áU»9˜ƒ˜ʤZßÍÁûÃWXßHÐYšAÛ¸Á[£L¯”’k$‘ 3ƨF5–„ iœ/Œ ½þÂîK<À†¬‚ŽD›Ov5¸œu¤O9¹ñ¥@g0ñè¼:˜j5:?v‚QojÇÍÍ 5‘U×AÙá¢uúš¼oÄÊn<¨ÌÈ–%YövÈ*VAÝ!Œ-¥sÂ3¤lÈF§ÓÉBÿÓúŸ«]«Þ2Æ â§œ)£-[b‡4ŸCÕÁ”beÿ àsdº’€bmå­L!Îøg(­ÀÓŸ‘võV1ø°‘J3½a(V‡U8Ö ÌPQF¹Ã8,:pý¾*ÞàWé"°OÏ/e†™÷ÊãbЫôO¤]ŽÞjÒîèœáQ´FO´>ðÕf8N†°N~µ "Î2\,„aèwJ›k LKþæ Æç€À°~³ àBHñ IÔÕ<ÀB1L_´ïoÇ[ Í>.ìá!NUŽo>`aBs´üÁS/Ç7t*m(^2ñ=˜¢Ð½DÁÂn´t࠮̹õj<º ÌÁ§ëc01S—3{'v½*Êʈj•<ùâWoKI›|݇”oî³Pu¢Ñ¸”äÔ44z·wÉãBØ¡w(æ=Í+iO=´âÚÏ„ÁºÕN ïŽý8J.ñÌDBZŒ†ÚÒKTUÚ¤äPþ]ú¡óCz+~³ ðP“§3*SΨf5˜@M‡· Ñ.P«Ý8·5§ÉãCþ‡^i`8¢½Ky,¨¯¯²¸ð'%‡ GD¢& ñÎ}w aÜÁq² öó#¤ò ;ô†9yÐâȨcç0k"Ü¢qéÀ¯‡˜©5Q‘‹b3Îb„Ê4º)é ‹Ñ‡ôíf[‹6–eÚ²€!ƒôàÈJ‰LÉ{^@µÖ¢Ì×iàQÿbì±™¯Vþt6ª:aQ~ØHA`Ø4ZÙY…Û,`ˆIƒã>d–«UÖÀ‹Á‡—+ÇåÙŒU}æ"€8ÿèÄÒ…3^W5ð\?xTŽHÃŽŠé³~È(FU Ùú ?,ÂàCÑB÷ÀÑ:˜á|]<ÕnT>H¢–ôç„tc¶ ?^My~tŒ¬ãmí­RÕ.¢ˆ$‡GÐkÄš^&. ˆŸŠŒ¨&à’iU§±”*D1x7‰¡«F^ 0¢7=6O5€[½ÆaÄo&,EçÙÔU²óÑ)µ& ÌVL»­WT¸‘ŒåÉ™W°>Ë7ßrW áÌ‹È^@Dš|^û…P:EYÜF”¼¡)˜!Å/JˆkQŠØÈk¼‚(½©Óí±Ä¹F “ùsTÔ"–Hf.iÅe¯«2íZuB ¢®¼:éš^Fû-€‰ìæÚ§ëáb#–¹ä+Uˆd‰>ÞíÏUŸ:Öj%˜&Ô'<Äá+Lj ½{:wÒ ¨¸*]Ä4ó1ލþÆÌg9Ç(aèì:XG—‡H"§œLŸ1ßgE _@Õx±:~.uøyk]tI$Àá†×bÐ#k”&Y HâÃ’]Z¥[@¿þý¸Æ”êíä_,ônéÉß ã­bJl.ˆJV–bMyn”ß‹DÈsUpÏ«°*oÕha¥ƒ)(½ÊÜ2%«æÞÅB”#þ“B\:Œ,š˜~è9ð¨w…fæ¦  q2 q6ylgØ.¦Üà ƒºôS]€ƒÕKPÓ;«©^!d‹þ¥©©Uœñ¶ -Ö!Å7†Ld7ü°*"0κì?J_]i_Ê™t&‹álª¢ç,€ˆ²0u“ÅFîè>Ë1 LIzUg>Ü_^3%g§–¾îÕåA 1Ö! ã2)K<Æ*H(×_8_¿ãöêˆøAÚŒ ;t©©ÃžVÆ‚ŠÉôD£‡–£*ƒÔéùñæÔ¼Aˆ84Æý…†4Š<máàï ô¬;ŽZÉù´ß”þ5üfõóÁÄQ¢kÇ繎#´y£šãK£¥)Þ4ÅMo(­€Àkô‹ÔkwšŽ‹z”éÂÒ¨KüxYà®~ëä»”­ªi¿í9N¡æRJÏiT&rcOˆ7_`Ð^`°Zãð;sAÍçò‹•Àû'Á’”'Ûª~ŠԴ'Wžüåhæ}÷±†ÊL˜£äš¿€ñ}ï31’É¥Ù3H‰s]+¡¶Æ¨ÈÑQ;&N6+·kzØài¹{4 V}ÉR˜(ÌWj§„Æó%)ûZéÝÕLXc‰nLo²’o,  ¢5ºt4 ­£s.WÕFÒ€*Fƒ$(.q{RÔ’WÕ?.‡ôv­gS@o A ×™· /“FgÓÅ™Ž!ÐcVI¯©ÂÓ¿¦%4|ÑY’Q®•’Ì”}ªÙÆàõ_œÖ'r\=‘s3›q”ÚMiÿ9c¦ªW£‚k™@×Y©W`Ò+Á“4`Џ‚˜4èðsýUÞŒC¤"õ´ê­ŸÃmÿ‹ÇPÑ„è$Ä>q4*´ôZéßprÔ1o+joZ­B5=çÓt^àÐ!RÍ›¤ÑÙ,’ôÇp¬«¾¥ÑÛ”3Ku2sä«â>Kóœ‚Ð ½›P‡÷¬þýÿ¢÷'3ŸuÛà9¡$¦æÉ\ÙèIc6"û<¤€I¯ïWj4ŠÁhw ¸Ã+6¶4ŠcªU—ÇЊ¾* ð¢Žó¯àò˜Õpæ•Ý-Ñû¬%?ÊFÿE±O•¢Ð\ÝèÒn™\ß­~Þd6¥¡§„„}U’.i™’ˆ#ÉSm? £è£n0NŒV&jµ‰ ¿¸Aèxt<å–4£[Ôµ5pF#üá´ˆìHSi‚'-ƒÓ\]´-õjÒ5FÎAñ$™)ZQ×¥},O1Þïð1ò€„*F=ÊÒØQíw ºSÁ9_ë`tó?ƒ Ð5Ôø²´„ÑÆ¨#ä[im­QAù×JÔté­Óe„Ö­îªVB…=Hþ>ŽFЪ[ºŸÊb­¤QÉxÐB—F½b ê¿þÂQ ß+¤k$Á óõGÑë*‚P#sG¤c.ï97øÅlQ‰¬üݵ{Ç4KpiClÁ÷ŸaÏVwÀûÀI2àä^š³²£‘FÔÀÜXž òþÝ8è÷jЭ„ƒûÂ>”Â>i)ZÄeþ¢Ò¶¸W'Ò¨ZlüL µ†*0´Þß“=$.o#ÿÛ8«ñQY Kî¸À[X´GjiøV‘ï¤Ñ •ÄÞJŠ‚Ïz¼Ôq‚O:yp7o©hµ@GÚu™¦ž ¬K·º— j:Ód6-½é-*F©4ÒáÎ*e  á©T/õ.peŸN¸ôÇòY™^\+M®\‰êwðe]+”÷Z‰bsV& Z&ç{â¿ØÝ/’ÉùÃö5ŽÖ Õ‹ÔE¹a_:ó £WD¡7ÇþÞp¼þ© Z Ñ•)‰˜kþ)Më§„Î7­é½GŒŸ¹o°¦ æ+ê{€F£ÞHâ^HŽUÏÙDjpðKøY90QÊǤ‰tgÄ,Ù×ÑqôU—ptF¥._é¡£LžQ 8DEªÒÏIWÇø* ªwNEýXÌ8KìŒvÐÊåZI¹NpcŠeG¯k½Üß’`$½×2&€]ËßNhªpæðÆ¡}ƒ¤·²ê R—NǪAƒi¿X‰úo7 hë,mÚE˜°ø{da‚”ª™—èó`› 9Ít@òÑÊ Œ“( º‹AÓïiew!@$]yFR²ÓV°¼2€dCéÑDzQ¦`ˆ¤Q*Z‚²~&ÞQò¢DJf‚éjÍnyœ%ŽGs§ð*©þõe¸_²Ž‡aìC+N_[‡{!ÚÎP"@/êÒ;^$eŽxoƒ~æ‘v5%A€I@— atñ$ñrÚ)D$•>|HïÐþ~Bèti—JûÖi%Æ%€%Éöà@™A[¿°€$nÚÅÒ½’ôR¿ùb½÷ÃÁ›?&ç\Ž2y޲ÅcÁÍÉ_}å«ÿ›Ò°¤6š5¼hüL¥W®`Ik< S Ôè€VÆ+ˆ›JRbYFøc¼×§œœ‰+aÌ! ,Æ^§±çAy;QE–ËQ꿉‰h•hƒv‡YU+a è(lÜ!PŽò6Æ/žRÚòá5¡¦ ¥õJ@(M¨u–O`Ãï›xaü"ÅÎæ$·9Æ·czµ-Ìx•ø'såmM—”>’IÆQ.P*«Øõ¯)Á ¼g( +ž§R D€R*_UTî<™±~ññ§DöGtX DGO9[}tg#¡³ä€)±Óßl&j ™ò6t¦ö‹Ž=%y@"Óœ1zɹ•€—˜ÌÇvÙJj¼ʯzã aÊí,=3D(‚ÄE°°·i=ç¥äP„*Hó½Á÷KBájÌ'B˜’V¡ÿYnêë9÷ô€Dó±'¯âÓÎÒ}îý÷tý]¾‚’q—ÉuyK”p÷OÁÔψ@Bùô¸G“¬•lèmÛÒ•AĦhñ¤+H901ØlÙf«èè×2ï¶v@Ts)›ð²U2TøäÀë:ð¶^ý1wPe‰õª±nœÓÄÑÐÙŒ`q´º­e.c ¸þ£î¸l=JÄDQ¦#N¿q„FiBª¥¢¸±žºÓ_üj˜rÓL÷v¨~WâUÛë«6UAþw&äLNÞç¬çdÀ(éÝ—tŒ{™h%B€Òñ¸¯¿Oý…³·H4²GvHH‚WH—ºµ%H9pÕÊ€Õ ¼µ³4Q¡§*‡d?Â2 @Ôº•¤©jGUšHþhiVÙ‰¤¤–1À*¤¦Ú~ó0#1$0_õ.¦vé¯W¦+^+áОxH}¢F“îK³Dƒ¥¬ÆºMX·¡”U¶ˆPN”ƒÅ«Å çõõŸÆªD^:îȪ´—X€¡TÊõ´ápcÖšÕÍRJ#‰.§¼‰ñRzÈÐ[oŠÑ3ooH=»L©ªÙ+áííä<µúJ¡½ª‚…iŠà63H®¬LIUU¬#<ÅãWJ”dô9Ç7#N%L-TH’FIµ)b%Jh±J*/€ŠJ¹kÉà‚”õÖ[fü('ïí[­=g(Þö䪷$Ê&¿i °ˆ”°’Å‹ \'.Ôn+‘’’9#++A4¡±ZŠR»%TIÂóªšÊ°—bÉØÆOˆM‹~Ÿ%B¥$?“ÑlÈh6tOª•¨ý ˜:ÍÓcàðºH£U¹×_´=l.Vr•N«Ÿ.9ˆÑ½£‹2¼1gÓ–h4ô+]¯•ÀÃöîÇJr”%@Ùè³Ðp–Ø€\¶×g®Òu5uŒŽA–ŽAeŤ(uRèFWÿˆBJ‚¸ ¤;¶0ãú ×¥”÷€ TÖ¨ŠÕ…R +%/JÑd£ ¬ÑnŽv•>~±Ÿxz§ýŠAÍì,óE)š$“ºwˆ÷Ç pn”Â9F905KÐ|Ü=­–Á.¸šœZð ÕWï%Ö¡(ÕèçÊ- æœt•üH tDöÍt4š%B­€(³›D³onÏ]4—Т¢ì8˜۸Θ–YÞ–JˆÒaß|u]¨'úÈó»Ü‘€(ùÕ•8A“ŒÒúE4E“¸$0¡¾šz•·œ¢tæÆùu6Š[}ÐŽuÑÝdÑË,½DZ•§&J?ÖI··¥k,(9g” ¥rrÀMD'(/:Qwé,Éæ ˜Òjb£Å*‡rÞ¥ÔOR×%¤™]‰ÕiÙh”™ ‰‘àÕá,~¦r_©ü:p“r<˜um%«À*Íé‚Jw4_5sýÖ1Ü1“F®„ò·²ÖQ:³®Åvýüpö(^ï' –Ö!„ò…¥+Í ´¤¿)#ÿ¶3ˆe¶#JÄÒˆ3&Ë@|2+§ ÄžMnQãà ´r…ïŽÉùè4S®yAjÜÞÿd¨`R­5ô­ W±O"3kq7…—¥¼® Ã5øò&£~Œr^©€+8TT¼NÏP |J+ÃHz2¬Ô }÷(áMVÆS°u²Nç­U7‚•Ôh@›Ñ2G=CW€•Ä>rAÚJÍVÿp }ç¼Z6}Ïÿg3­?Q•,+´ƒâ¯îÃZf܈:;L;î”ë/”^R9[Š® øŒ˜a¦gÔTX­`Qª*±$+èmå˜BUf\½OÞ=€¢ô( JÇVÒMŒ­\Ú¸ù¬¿…•É}cÍlBjGé( ¸2P|GÑi\P¿ºTU𠆀îÊX%§tm¥:‡±å“µï‘¬Œ…ÃdúœÙpäÎÚBGþøé¡òXºEˆÕJ€âme—Vͤå×›’€åcDû èÄñ¹ÏR¢¥ônýF¤bVì×S&edÃ+;ÈøØÇ/ŽJ†@f‡;¿8¢÷LµZéÝÞD­Zѽµ\Ü@à“Ú쥯rÞ¥ €„…#Ù³Ö`èt‹õ«uhÅÃ$ÁÿÈqõZ‰²šóÏÁY&V³•€¥;FžN—™ /moå¼[XÒJcˆÉ[hë·Ÿ –± D~.ÁI^)ðR"–¬®Žçþ‹·Ÿö­þ '¾œµÊWôõò¹1à ÞQô_§QFéˆRVÉc„¢òÌæ¬+eà•Â:%¿¨!(¦Ä@`„ èÚ´ž–£TÇÔ-˜Ï#Á5¡SQ0 y#\!)¢¤skœÓ÷?êŸ"Ê?³•Q÷iIWRÀ”Á,‚ÞSP½=jQ®¦|˧mÇŽ4!y)9W│‰ÛŸ¨Š7NW­„J›7ši¥ÑÜ”’ˆ§€)mÂ/Â&=¼'M“kL91Sæ¸má¦ý…ÈÄ(¢ÔZ}aŒÉÄ,…´Få'µ>X“Z'–"Êä;ÐøozF©NÞS CRšjimªe)¢Ä¼ÜiÆé ˜É°²·5b” Ìäê°xvl=«ýmÄ(t< 0L$h¢¥8߈QRØ)6øö2ž¶vZæC2âœ.ºN!µhÍ€Q:˜OÑp Dãe)%Žg€(5‚›à?Rf Jeƽ¦I1Ò‘·,–,QJ(Ôuú1×ø„ +nZ´LÜ•BpqÌ3Z» ZÓ”æOÒ1Ç/(°`åCÈŒÙ>JC<LùO—¶nô±ÓR#l„)ÿä¤ú á-‹cbäBÖµ,€‚Wµ„ÅK¿7P¹à¡N®áBÈ´ú\JiÌÖ3ÅûæÙ˜XiÍ`@)Š®Åü0ªà¤F9LyzÓ2„Ö ½AW瓈£dôºH}6ÀÆ* JDù‚ÓL ¥AÐ’¹—žFˆ’.MŸÐtZ¢EÍ5B” G®.z²:µÚ¦ÍQ²^RnI]¸wuUáf/ƒãçÐ1áR°ÔÁT×Jô›§™a¹YŸo@(!\¸š(:áðísV­ƒÊdLš¼òÜ^õ£6Ù—’718º)ù\R•’8mµØ½ymìnÀ%¿,üÅLú:€åå6ÝÏu©t5ú_{}ýR£îsr‹`†u/X-ƒŠ{_p]ÞWæîqê«–:JÚéhD¥P¼ßfmÕJë+u« f,F‰J™s ˆ" ¿Ñ[)­y°äddßÀéìÝ}•LEcz$ûdšò´_÷ÉHÒù’EܽÓe”ØoÌì]‹Pg‚·ž§õ,aD£Ë+ŒÂ:xê¦x_£FÉ pä„?ø„3ÄâÈnÖ§¥“³ó4ÃÔ~6Œ¶fÔ=ÀHª',QÎKòµ‹ô`S¸a‡»®ºò‹ìµuLÚX^Ù* ~ @$‡ÙDOùe]€ÒÞua@¢‹‚Ìv6-¥êöÑMr'fr=a´´Ù'>È¿°Wq¾e¥O…Q7éäl8é?T¼„•Nã(2뢛ª÷¶¢|⿨‹E2«Ä-{LÒ@µœ´ È÷“<Ÿ –CAwýU?q‚69ÿ•¬úæï¿=^NjÆÛ vf–šWI±Ò„Øaâ¶öVlP ÂŒ–ÃVÆ&½Þí•Ú=ëtT³SiÑKfªŽ\+. ZIj¹ªeèï qqçÔ7È/Œ ¯Ⱥ‚K¤ÎºK‹WÚŒÎúsm%Ên´xUpSÿdX6Ë”»k%Ô׈D£3s#¯aÔ'.ðHÐ=*Óâ_îü]a—ø¯Ž›ŠÑ¦­ý¢TðÈpˆÕƒ‚Õ>ˆGθ1â‘Ä-!º!ÉtöºfO%urdŸ-uW PR;ŸxÇWÂ>ë @I£x&só"mTêÖŸÉ’9Žê.¹?>Rù²•T¡zgŠA ÙÊù¶QCù™´pxŸðvTЯ®ôK• ã.X ÔL 0ij28iŠ*gÔ¦Ñ`òGt Ó´zþÅ̆6¯Þ„.eë}×9%|c„&áÏ.ó±ß7$€%efæH*h•j«+Š'ÉáË–L/éòHr€Ö‰mOåÛßëz;í]™ué šrð?lÔ7Éò×loë”Y¹bÔM²tÿf7£«•QÏ}3Z’éT—ŠON#ê qÉO€/I’ øC}«•8!IŒä…é/Š@à’oÀÆýŠ`ô`,O/5\2 Rc tÜ*Cí_—ñv¿(LÚbÀ„Z¯·%Á’QÆM½–!ö¯Ç(¤ZéÝÞ »{af³0Ò\¥ßèìJÓé˜hÛcñì—òíw†L&a¯137:Ï£d“8…“øH ßye+Q–[@2Xnu®óÉvŠòÀv’·šRTd”©z”£?' 9É#VÉ‚º`/»e' |HMåÓ¾P«•HmM¤ á ¯jù†[KÑNþ¢oú/ göêùª•èÅóOg£vSvŠ&'ݸ&­z•¥‘4çéÆÝM3Æò›1eš`áNú›˜§¥«¯š ~MJ€ŒôH¶A”Ðë¤iŠ/7„T™'×î¿ÊÝ 0Òo\|»!$ÿ¸w ‘¦¨mMéÛ‘ í«„G\ØRb' z–ŽÒÝøÍJ¤J9'84bèHVINsaK™9åØO/Ô^:h±Ó&ÑÖ‘¥I¦rÖ§ I'Þ,àúÀ7F™‰âôvm€¶^'ò› Jñœ¥¾ØJ ¬Âu1ðeQÄe=áÔM*8|ŽCÃq]Ž^Î: äÀXa€»10|é^N¹ˆ¤P§N‚ Ÿuo%©Ì™:¹Pv_’ˆT¯¿ê_ g÷']·@B73~ñÝpvÞq;Ƀ1]¿ØIÌLSB‰¾¨˜[åÌÌIJç“LVl,—k¾ë^8á:ñ€^çý¸å´{ñá- ò¥œs:-^žcFÏ1c†iMvt“Š0#cª9ÕÅ^’@œ¯»A Á}1 •“.§h’v“¯ÿíóñ,á'6Œ0è4erêAj®£›¤ŒÃ™Ê>¡•±Y‚ N‡WÅ‘ëLæõõÉ|«š g %½4•fšw÷ûò–0•3†’Š êwÔ.ã…<J3èÊÌ +{cÛìWam„2µ*Y§ñ`=ëôÔL¢dvF5y€ä2¤.¾hñ:À*Ðþ¥Òùàž]W+A¢0pÇøl4–Lu¸Š§$ŸüÎNWË&Þ=kN:ÿ™õkQ†,:pJ!ÝõuFÛ'œ—§rj&$lÇC  ;jói§fÒ)št'/‰Ún«Žò‡#ZÉ—·wjK;³ÈFɘrº¼]^ fÈ/L{…ê#h¥Xòèà”b`F©«¤„8ã()w4棽ÏþÆóêÒ‹h%ýY1]ä™åtÑS4‰Ïsm@j¹1ê«”„:^ö’Ó"(‚7¸–0…wîo\(/~7¾ºÞJDßTš%#ˆ:Ú×Å/: €•J>¨.t…ÞSÑSÎÎx¥ òBVÎaðÎõ×wú½Nôr×_€âhø>kê´S@9I Z4¯ZôDmå ÞY’´°p¥i“×_õ'zwwsªƒÚáVѽäà8ÑÊ[Ç’>v7¤_ê9êI¦Fx›<–’£Z¿(@+ÍXÃ}}нÖV¶N´RA¢x Í÷·SØU܆æÕJ”¼ƒ¥ÜÇIOî ÑJÆøšP)ŸÝ{üâ9áøþcp'Ï·F Z ãÖñ4ã@³[»ÎyÚ½_¢¾à…ïS]çªèRd¬‘Ñ–59ÌUZ3Vñôb½ÕiN åL=Æb ·êãP%Ý´Ò–‹:…YBÌN ¥ƒˆ§)¶:ÊSí%¢çÔP~¦sàW›µOsÐïÕS*ÂÀzÎyí9€-ŽÜ•Þʸ*CËȆ Û+:T]>…c“r„,yå¾îAw7HѪ—€lPG©Àù†À”­îr‚"JÌŒc¥‰õ,;Š X‰svà˜ýêz¬ìè ¯ íäªßUB•Xøúƒ®náÍV–ƒPegËÅÑ«vƒG«w4µ“é§ðŸ÷‘Ns%–„*;Ùô’ã²àÜ¥ÄPeÐÛ‡ö—3õ=å€:èípPûÜC„†¥††P¥>Þu÷ùˆïöæ$ÞÈY逯Y §.œß¼ŸØÞÿbµ=éBZG_)*ËíHƒW²Í•JCºôÿÂ#"ˆUvÞü©tšDj]I«¤¦Šre`95Ì¢ücº¦.·4©X‰Jã´Ä³H{€«‹/ß •N#Í0|·0ð»”ö®A% Ç„áöÂXóûÓU+q6n#£r©$äPÊ?ª§éÉ\Ÿn@)gÃq;ªš)Þôï ¢”´vræP6H ¢Õ%$AJjMSÛÿÚi4ˆP2>º“Œ× (õ¨¡Å`å¤z~r éÈ[ßü)ïy'åÝVžk(ÿ9Øhôb­A1¥¾!½DI ´::2èêJÚÄÄ\Ã(¡ñY—XÔRvr_éçáôsð:©1ˆN²|¼î#0I-諜Hµ” —ä´ºH[Wì#Àøìü£6­ )ŽmÊÇ­xÜuÉF!å'¬ä¹ ›~MT “ ¢”A·]K\":«l29œ'¤Óv”ŽœÑ9!…R,Ð…õ–k}tޏñ‘%òÍ›CáV¾r@'e.™ôs”$æ¥h)€NJƒuÝ’s_$´žu{L{WzX«Ó,™}üâ1ÁÞ•\Ì0²„ï\ s Ê/Í…ƒòú¾d…Ôã6” |€…˲…UÊ;ƒRJgŒE+ꀦú*ƒ ‚àdrÞþ³KؤÎø3½¢ã˜£¤°É omtt£×_øÑZI  b“~5&œ´Ó?[ý³¥½+åÿ¡APŸliðO‘ ’²êÛq”siáfºþB×^gõðÉmßDϵòÒ­‡­'€…Œm¾#½niïÚPnwê(:µc”ü„:)  P aÎ\­Är•ÒëÐõ4$G©ð¢“ºUìJå¬+Šù‡³©=lÖû:)™%A5%Cr…)¹2G¶nåË t2Øv÷™®esŒYúûÐÉÀ,1`Ì̪{j}Á1‡’®³CÁWÀôº:e¥ Ÿ4†vÛ Rp”!òA—W…4óëËÈÌ^jêऔ¾ÐãÎÎN ××7ÀÉËxð L9t²^ªO]**Y˜²dnÜ–­žÝžü8bv+lPnÂj%ßÁf‚úy­ :½2æã½±žy2”¾³žr2‘Rˆá 1<³BzîÎDÊðκi £n-˜H©$<(ɘJ2f+ñ²N„2@ê G>bÐ{txYv"”t{~S;îý{ΰòmét{uá. ÇÈQüB5Ü™HÉ~wOƒ<³)%Õ´§Û+É*-“Ð̹”ÏN„R©®æs "]¿zN˜œP]ýväâ’ÀKjOq%Χ‘y&ž/•Þ(âJª«µ¡¿þÂÛRûÐ÷D(ñÛ¥YëôYös‰”‚F<ý£{¬,TÊ]@»Wbp}Á‚v†±z.1á.œ¡ü³5Öß«4³í@)vÎâ•­aÿÅ·#žXèú r퀜±ÏrêÙSb‰‚ž!ƒRg)ét{Må X\u!¥edLé„)ýyùîCñxáå¥ÙS.Lb ¼“Öú›½››·ø„¾úo\Ÿ:)u^¼’i:¥,R;1Jâ^ïÞù‰{E©ªê@);8ð#]–Òø­^†£°§®¿PT$‹ÚKX ¦Ô @3à VÅ(«æ¤R…h»Êõ /¥ú°¬œà»£ñÌxr÷Ò«£§Õ+2éâÉàUÒ×_Ž'73I2Iݘ%l%•¾¯O*Ôñù/Zðn<¶ Œ¸˜Q;ltê*©‚ ÃУw95 «®áUBe%ÍÌG­ÌéTV6–ôj)«­h:áÊ…á6ðhµÁcÇkRv\yÝ(P'¡8FÀN/çpp¥’Œ§,¨öÔ_€+ßÀ'aàÓ=篣Ÿ:áJ*"³¹pˆÝK½²ì´ÚéÂ&Œ¸E ëvB–J}­áÛ _ßQÇv@–’1B ÁTÃ1J}g"%í1XN0ÿ£$v•ƒ3f¯P=.£$vtZ¿~B”oEg½:Ý_ƃ¡xç^ƒÁ»•ûÅïÆù Ú¦ÎÔŽž©³¤t –/~y—¹<À,áðºèbå€Å¶ HYßáã3h,÷7Õ•Â1jP^0$‰Uêê:€Ë€ d lÑ߸Q¿q™GI½§Ð ­çÔ²>O^ò«QQÑ•Tme}èÒhÙ2;…è^¯‹8`—él #íjg³Ü’¼×PäGt_¹µË‹ °åÀà„9«°þ/B–žI”@ÝiCRsÕ:PK™  çÞ2áFÖëPÓÔra¸´PtÔ -‰æ=c(ñîkK.$ãcÖg6c(i³õV¶÷JÔÍÚÊ ²äd ´ŽÎpó©u¥ÀR'IkÌ¢Õ™æŸå°«SOÙ“=‹ ÀÒ³»×ÝKšm é21Rp­‡]@,éý9Pà–j'úNÿWzˆ¹eŠ}@ôºw§¢²%…’aÄ «ë¥N¬ÓÿU‘ücœŸÿU¾}§¢’=¥±°†Mi£dwộČㅪàƒž}õ¨¥,pr¼£tëÚ°’(ÒZ~³–ðòZg°qÍ£ëD-ÿÀXm¡òJ¹Ÿ€Zfíõá/ò2~Qv'jI^F›|âxUnü²Z eIC9i”h[šÚh]¤,š %öñf9Ø¿ž<°j%ò©Ð¡Zƒ…ŒwË1ë‘ Ë7AâþLL¦Í¨•:K¢SX)<æˆ]÷Gö}Cü¥™\t©R©ÒXÙÖé­Ðå‡SË“œÚé%7¯º<®ô vn'tI9¤SMáŠfþú?–{Ðå[&Ë]&±`?êvÐ¥A¾Ä©°á˜ëVBrÐåTÞO@Ô¯³÷SIñìTUNå!N?‹\©Žîê€.MxÌuº-õ<œ~±+ovÍ‹Eè´ò‹ŠÐeD6òÿõs,4J¼¹¶ìÊs‰‰Â|ßìï[æSbtš,OâÍ5¶³\pÿb°ÄßÝw–¾Ë¢pÍê—€å@4ÁÀ`trδc;áʼLÐáço¿™P1™õÒ¤jå¥T–&ƒ.°Ÿt 0*‡:û…|a¬\ d'æ4ðÿEÝT9ÿ„b¢)VžØƒJJ¶¢”å6J…ëD¢œRéKí4ûÈdÚ±JLp§(¹8W^èÜWÉL¤ü~3ÿ÷oVV݃*Êßìú 3ó ï¨)¾ƒ*Ê@ :löú‚¶¯’s:˜HÉ,RRU¶î#ñIûoâé3Ĩ¬†•U”Ô@¿ºhýtÍOu[þú´€Œ§?äNêñ¬¶´€÷ ×ê*×µû ¬ávÌÐmn¤ò]c%KΨd'GtÔ.Ƀ2JfÄ›ää¶^‡ìn¬¤¡ÿIÃ5ÒûÕÞmþ8–ò šÑ ˆ’˜›}÷þh=´êìô~¥ýNþ&Šp 4Ã}mFzIgH3P*!3MȬ™åëŒòOV84¤._ÿÌ¢$˜@j/ýT´lEF&Qr˜³?lÇ«®,¯4š¾ OlÁÆÁåx'²U+¡¾&…)FˆR6€K¼léd §ÇM«¯ÖÁ„ÄHè\Q J¨F”•ã0IBïv›—~9ˆ%µ ÑŽ‰íhµ¶rŒ8JNšã?>¢w×ÞFD p€’ƛȂ) ôRêZßÖÌ¡dTtØ1gçz«ë• ¡üäGÒø›:ì«î*wAÉ%ìúÕª€7‘G>˜EÉœE$öO˜ê]ÕOœ*aœ!ÿÓ¿Ì£„AIí¼œ€¿ 5ƒc”L;š¶O°zGmd9”¤–€RŒ;(¢Ä2ï,é>è_OÝ^-Qln”¾ûž2V+¡éœéÈiÓµ.#Jæ¥m4„Êïë»Z  $¶RºÖíº­®Ù™JIèV)ÓÑyiÿb'± a*™cl•m¬úd"$ù.Cg'ÒÒêÄÅA4rRÚ)˜Ô a~x«ë#①⟘¯Ädþ‡•ƒûÿÜÛ™ÛÆ™_œI$YûÛÀJ¾ð‘|•Q €$Eë h WÀ*áèÜ×ÎN]–§ö]J&è"¹À¶àçAQ+R 0Éëv£–BJäÃêZ"1I>kN3AqŒ_IùI~¦&zÑY‡Q Â’í‘vÎÙ;ùüQ߸€%ÙùOà?½HÒñ’Ðæ5YnŠÙ˜§\e–ÔAå?‚M”!b¿0‰”Qò>Âçyo{o”j q XóÿÒApsJ}fSDi ïa )˜²ü¢…"yUÄ(µnÚë/j^J Ø")©0"ŒMÉÜ€#ß(ŒûXSþdÌ"ªC15”}°L¤¥´óÑÚÎgŽ”gÖwH3 $²7ëE”cõ$occϨ˿Œ£¤[g‚Ó$FJÂÅiŽ4as ;ƒ6¯¡¿A¥§¬h'"˜&\«hã(1±3ì&›‰ÚØcŒôÆ‘ Gõ4=³Fƒ›¿“$ã´[¯]P³(™Ý,‚gôWŠÅAåäÏÆ`ê !j[õA%çþ à·Ûi•ÑÁ4J§°Û!3 ¾rQ ;‘H èj,1KPÔÞêzH¤BaÂìd¸ÌzJB‡W%°­¶À¶’¼1DRk.$~ÄæRRÝpÈ…ï¶@m[$JµzŒÌHJ¡\‘“$c’ÕI8ä'ù)9‰œqü"ùi‡¤²ÆF,¯¢pÈŽ9âàd5ਫmbØÙÝI¶Q2‰PÈ…ûŸ2 ë—·ªsv@ÈÎ É™µ¼XGj½BþP)r`‹=G]‘ˆLþ°G¦A„Ïz½X•“4h¦< *»Ú¥zak+E$’ZHýæ3QLÓ*I-¸èNœ>¯4F&Eaf|o¯¿ª/7'Ûxÿ_3û{Ž¶Ê gR8ùç•Wª¶Ó¤p’ifÌ4˜áÿbÚ>H^gkž·´¿ü i66”ÛÇ™s«)® $™€™Ví3}]9$ †Ù´{ÉD™@$ÞÕ<Xu×\ÙrÄ 1"Éû³•×ÌkùãlT«Ó%,)Rë”']]S² äW™COæzÑÕ•¢Y¥ÑðŠt+ ‰Iµ¤ãLršÎ{ƒ$Vý²‘ÄPr¡p_J×f3päõï)-ïã(x“Ô/,áÈoˆ0(À‚÷㎮V‚_É?¨µkÁ$Ig!’0›s–©aSs®ùÿd×þ7~l`dzöÄnuÀVþôtõÏÓ-'WÏʶmŒTCKÒ4–'ùÅ·c+ VKFˆ^ÿß®–6ÌLÒµ2íýl--9²“¨$y»o6†Þ "ÚÛzâ2‰Jd2æY’¦·cÉiœ@&¿™ä¨Ü]µÆa›¤8è.ÐY\•o/E“¨Ü…>êJL-'ठivÊRÌ,¸Êc àäµùƒ¤I ×Z'TL~ì3h¥øá~aY> N*³9¨qKª­ÖÄ­ p’&A´Àœ”YGMFQ3D;n\'­q¶r™iïJÿ{Z±pXß&À%''® Üõ Àþ‹…(L`F›‚—ðiVÉþ›ÔJ:š®×ýþýaÄr³ «•8*AÔ2ÿÆÄ@yÖ‘X“ZÉÆWÊ P™×<™é<¾iñ&Ì~L8®î°^‰CnªŠ‚¢Â‘’—t²™Ð$š€$@€_÷¦¸¤¥Ý¸'c‚Ùµö$2Ùùâ2E¸ZGœO"“ g1MÖ”¾ãZúMº¼°  ˆkÐGiÔ9ðäK$“›>†×ðÃ]½Y¹-Oj¤C+¹7Š®×\— xrÂr~B'±À"_åp¦X’%ñ4‚¤©n`“Ÿe°Q6Æ44^¼éí:KAÐjl+yŒÆ¶’رÊò{ÑÛµSõÀøàÙhTTò‹(å§h¢¼Œ–G¿Hµ^ôv]˜w+¯pïèRn UµNï(W™Aªƒ“Ž(Û¦ RËÝÁ`ëAúL/ݾ°J£&Øx憂Ó9´dc.z»NÌ–”äpÍX›úô^Ä*q[6ºD*É3½¼™°JçáT+ôO&fÉ2[À*EaäÂ$ êæ{/-Ôå“´cÒÅ›© o¦’ù¼ˆX‚®àaÙøVëï–j¤#9òå×?cáúñüFˆÐõÄŠ‚Ü¥æ.`–FUŸ FÕÀ½}”|ü•¯žÍSÊLI3)IK‹JƒBÐ4*0‰ŠUò”†ÉpÞ*Öy6õÒ¬`¥É«sâIò[’5JÅ"fIìáJß®KéϽ€Yæ<×ÜÎëXG.¥ÇÄb*%amxW^w¥f¨ªÝ¥Ùd’ÝÅ0 b–VëD0K¥Þ,&Þ–˜Øã³•#ÔEÌ2hôÁ9ðå€hQO©€Ðœ”¥ë/hzÙî,@–ºˆÆN0 †8çð%Gd1“’wŠwΫ¦ÿ³Rýí°¿?„zT;ºÀʘ³4æ\€,u±"\À4ƒÛëä¾E=å Þàgž·x½L:4/…]×Ãû‘®¿ÊR.#)’ü•®Q-P…¶þùå¢õsì «õ¯ ¥X¢&< Éa%·Rª°ðS”JË1¯ gAʉZä…›”ãtûUÖÓb幨_E˜­´uEdž̨É.“žå”iî(ìFgˆõ_ür ÓßIØü ú‘;x»Zˆô@2{]Ä«Ý׈”<ÓEœ2è§ÔhŸ™r±’¶Ì¡$!‡µO…﨎$mÀ)ŽƒNËÁÈÐí’© He8Pª>ÐEôo×KcFmD*‰w½B²€c²´0ÒÆJº_¿¡çÊolï7®V¢VFGnëxU¼¤æ]+Q1L£?ò»Cq8Õ®óoòØ} 8ôewž»Q…‡½Éeš<¡&O_MÞ;*ùÅ.@Ýš‹ŽªÐˆ©•0GM^' ¸{Î8BÕÌME•Ÿ'!Eˆz‘iŸZÀÊ7‚ð®!‹4€ê½âÃjXÙ)cv°üC2°³*^ á ‡f(P¢Óú*|âZ…rx}ƒŽŸÑZ£t³ÔÆ0J¦«é}3[¸Y©µ§ ŒKIY f#VR8m´z=f-×iÄooü”'ÜF‚ÿä6*7$0Ê á'ª“£¢°kK„’Ÿhñ­Ä:«!÷ÏÔ>æ"/fuöаôf;=Õ) ¯9Ùu“ U¹¤9”tÖ{¿Ð3æø‹¯Fˆ²¡ïzóGõþ‹"íº4±„àéª16@K|U=Óµ&´{ÓI^ý5Äz}y¢Ì+R_^¹å°\àIÇé8æ£^ €µ%4ùÏéMç4aÌ*^Y°I!6ù–~z«sTÞ‘´z¥%n8 Üë/ÂÊõËFM%³Z]I4d|”yÚ€M.L $ T›j\ë &á+B³GŒ¥¤¢ª]«x'émô6RKUº*icú$Íp•”e¥2WËÀmÀ%¥‘çð1ÃX@ï¢ê¼µ—4 wJŸ÷¾œs©_|&ªpj«aðzõJOx¥ò¹VBÁí°ŸŒÎ NÏP…Šü|­Ä‚À›xó€\´·ºæ6ùUùÑÊbvÑR1®í#¨ÄX9PÚüÍGÑÉ?ìÌtF¼)ÕJ˜‚µ:ROGS¹N’«´1 ¥kDÉë¾¢×XBDQˆ(J52ÑlÒY:㽃ÄÑKƒ~m”TrÐ)†nY ·@ï¿xØ –´Ä:P$GàyGüâSœCcu‚hp/IW«Õøíp UC8­ß´äìÝ86óÁŒÍV_ºÀ'Ò¢(?aV±Cµe%>v¥¢ªç À&»Á§J‰nèHFüâ áð^™cÁ¶”4µš7w­„Ã[èÖOÁ¨ÑÝ¢¡|§wí¦¤]kiÔy­ÙD" µû‚)º•„ü·÷¿Û6H;P“rXk{Þ7¬Ý€ÞI­ É.uO„R™Ö>YqI°)©.ª*ð{èUl£f=@É‚ëŸÞc±ê™v¯i‘„4ÄôU—Ji÷ÊÌW\àÑuû~V+áÜþç¤L~ßµ§ ’9ˆ†Ý8ŠYò”µ1yò[& °àd8V}i3yr, UkDº£n&™<éd9Fnê8‘nÉnµùR ƒ½kþýJzZ‰Ž_¿YÉþý‰_K¢uãL¹ÿbW2yòÏrQ¥*îôûÂîϤôEWð”; íë\Mm€(U?‘ô3E±¯ú LÙÒŸÉ‚Ýi©8ÒÆðI²Ý„\|QŒpÃê#ަ¯ðŒHsÅAp©b–j#L9øú.FÙ R¦fýÃ1y²ÁÍG¦ÇêVw9@*ÿØó~ _À@)ù€#7k¼%Gýã3xÄʱ‚Ú‰º ¥ákygB—1¦É´žK,v“ñÔèîèHÜëK eÇÀ ãà.JÊ”6”œoÉiAï‰^Šß´}ì^9'œ“!èw–ލ*Ìž$Ò‰gD×X+‹8¨ý‚BÃÀ»1¬â©PDIgÝ$Ýâ˜QIÕTÚ?ìë˜Î+ïØªlõ®•0'1Øa¾ÔR½/p ²+ù… €É‰r E~û:îã­ÏvQ ÈTÁ¬MgE~k»›ÀMýɘâê,çBH’d"ÌG’(S6}8’¹Œ‚Ùˆà!K%zWIWÜ?lAHÿ)ý]_WÇC¦TФM’$¢b$¨ˆäP$hìbx f Ó&é¤èBÒµf³R:^+á˜ÆÉÁ~¿“Ö^±ÚUBª3>ùÕõõWýy:2êSÙ.ŒQñ @ÈÓ¨ö=ˆ»Æ÷Ř`‘(ã®7¤|Å@*Èa¬=0„VN„jI¶ ÉD°ŽÁ²wŒ›oëÞå¥m¡ PHøÛÈ‹×t”>¸*À crè?Iþ#|0JãN*´üB©…7Ì ú6«VBïÈ,Æ(3aÖ’BIÁW3!]ËÖë—–æ®i9ߘVNÃéû¬VmÞÞ×6yM%aS¤ƒdÃ$ ›˜‰†Tä/€ fáÀvØ¿¸*!©Júº~‚ÇIEƒâþö4¬V¢pPKšÝùwH}­†\8<à¤ÖPã7Ÿ ó‘?[a"±5^ÕJ(º…í’¯)L0+õí*„"GÚiÓ+”¡!÷w¯V"ÐŽ@ g²®ó­«U%*éóúqwÄà&(Œº9ùuw×öuŒ´_I „>¯†¶2ŒÜÃðf”1oèÔ½3ñÓMv^jÐU%Y«P1äI±à•€W‘ü¢ä¥b’føÂ)d’HM%‘Á¼¡#o÷5Ö´÷sV+A ìP§÷^·“o{ýU¯90íI[œMVÊJßéñA [ìÂYZ= "‰º™)æê¼)ëÊ‹ö®$¶:=|Âý†W.ø*@#;Ü;:=ðiï¥ÄUXä³3ŽP²v¯ç€@"M·£dAÙ­ž´Ò×Õ¸1‰¦šLkú„™¦‚»í ¥»[¦’?&tuÌ®Xè+_e—ýë‘fU+õú»Í(å?’JI:€8ÍJ;n¶^fŨ‚Ä€÷#ÆR²}Ø£`Œd4¿^y*–B aܤs®íà|»Wª?½\=Høèp…Õ^éíU(“ì`|(³¢‚Ú¯õ…F™dÐþ…}·$éÓk°fý¡T§±%µMÒÛ Ýo,;S¡'$‹‘.õœ0¤F)¸¿eß¿X0¤Ëdqk¼=0˜^rQ„@¤¢à… ”(4—W½ZïîÐá@ÉÕS%R‘J¥$]åÞü«»t@6­D´qÓÏ“”:nþë¯ú3Ž”Ô¢U œ˜¥^Z•JIEùg*Ð7’i3¬œR)ɉáË\\çãR¯Ã‰ ž·v@n£l­yJ@ã7vÊ‹£×(‡ DòÆöŸ ã{F!N)ï7e줤» ÕûÀýV+q$ȱ;ÖÖå¢F2¨‘üÃ}{‡¸V+ѹª ¥jCy˜h™ò¬ hraR²`ß² Ž‘2uN•¸$!T6J­ñ*© %›2mè[Ü”èR Ûóœo‘¬qUA¢ôqíÌøëàê*ôbVŽ;ªôqí‹+!™ïú |½VŸlGvƒ>®ƒŒ d»–“26©ÂÖ>¹‘`p7gåT¬ÊôI¥]ÇIwÚÒÉõO+Á½×¬VÂæ¤ü†>ßï-m¿ +ÁIÃ7è¼Ñ:Ê(\U‚“”ÿEЙnA‘Òg9¿ÓI2|ViJ‘dXeäª |R9 +8'Aÿo¿8áhä: ‘Õ•õû_L\ø¤cîúOÛ­2Y5M\ñy¼c\Ñ>»d‘)J]¨o·†„z/¤|êmù°Èm2ŽAˉ›2y’nr$^`E+EÍ ˆ2»èM¨E®ézJxròKáh‹,kʤÈk¡wWƒDCaYUŽíè$¸Q €%­m1å8ô‹3ŽÈ$ÕH¦À=ÓËæ/ž§€|J”ÙѸgÕm 呟˜ï2fFë¶ÈäKU¸wzÒLнäë+'Ó-›ÎNgƒ( |UL:ç““ÄöÉßY*ö´çœ„Þ›˜*fÃý›À¤£ tºÊ1-ºW&—ªH¢-í º˜2T½×U;0IW´I®d7÷ ¬*Gn L2?Þ=ÅJ»TU ’¯àÞG¨#ÝpºÍš·­•6Þ’H¥uëI•l{eò$ÙnJßuD“K*ˆÖ&lºÅX›Ð• ÖÆ(Is†Ì8O%§Žd”œM$†€ï³{VÂæ¶úÌMHÒX›LîK"Ü¿˜ÞÐÄõ“Ï­úLõÿþ‰j8­ @’¹Òýo½‡Z“ßTƒtq¥«´P(Ÿ¤·_À•.®Aj`ˆ×á•eÔ³*ÁÉ#H!QÏN.Úî4ŒÞRÝ,R9FOvj·'þÞ°Lû×ÞV­.7ZÓÁ)7müëVð¤içöæ‹Âü_õü†%0!}ö o~¾YyÈ ìøL®íŇA[§3v ó+_Úñ= .½ÊÔIþâöä¨ï&à“Z †å‚Y¹Ò”B Q*g*Ð`¾ÐÔºx[ÄoŒs‰d` Õí52A+׿æ UdÖø­ l)7XÊ¿Žu÷Y÷o(¯F7€CDªŒsòš ("pK'_ƒtÛkHXPÝ0'û¨6£ÆJ¨’¤dW©QxõTûÆ­·ð$‰¥hL¢a¨ej’*°É aÉÄ(Hšn«u%Jd²‘pÕòbÃÑï­J=Sû “xÕ8p^Û^s‹Y““™êÎÓhβ”°ÆÍäipdΠ ¨yî˵² µí†RbŒ²45z¸®1xÔ_•-Ü’ hÄ&•6pLƒˆSNÉ3`“F‡œ8:È—ÑËrÙÒÃõŸF§¦ :þ‚nÌ› ¶Þç¤4‚Ò2‚^ ð¤‰åØ {œî=^« eGeJ.‡ÑòÚV9Z2”-Ü}è2^ª1!ÐÊ×P’t–cYŽZR9 %ê6ö8”Í•üF£{+Þ6Á©=,Ð{²[­CïVÚ?ç· + 7 ðäçnaR² ]%–`ôm]LT_¦ÜlÞÂ>°‹îT€j% ðWe_À:k¥±êŠ‚%mnú‚°`|ØîådÂèßj`»)s>q‡õ¤Ô2]Ÿéú \ ±©•H®1`r‚…¡lrÿÊYØ(\¸›Þø²{6™ÛõÑË– å|(¬x•ï¾Õ»å[ßó2è½xK}ª•xzãÅå/§×ªD)Î,fÁBžð(y¼FˆrÐöB©W¼*×µW~&B”ß Ž0à®{ÓU+Ñ,àr#dô'­-¡Œ “|Séœ g÷/¦ˆR Ýë/œÝŸÜ»r‚kµ7Øë/ðÉ þEÛMœ7Ü?Ã\ê°"ËŒÉgœ“:9™,ßSçžosÀ- º‹Àb¦ŽaR£frñù,Ò‹\­­a %IKo :ñÌVæ\S&9ä@å¥ýâ¥:ÙN¶Á1É_ÜoD'ÇG5K®+zÊ['\­„9Éû‰PqKc9R>gJ%ip—y€ÉPªg6@%=S7ª[Þµõœ„Ù’)uÃ^¤M^ &Ý[SR¥.õMR¶·¯V¢{+ T º‹¾ »˜Q¿ôtoí´ð qéKËhI5º·òR3eë6iÅÒêØ$}÷ÿ`'X€€G&¸Ð6 ºù…› 1U²q5Ô]©´Ò À˜,I·3T~$LÖ.‰FËVÁ]¶ò¢~W‘zŒ$ÒŒl›Lo&dX½ƒE::ö$LF“Îú–ùƒÜDW6¢µŸŽçÎrw»˜F´º2&¹˜J²ÀÍLš;ì·Z 5v`’¨A©D¤Œ³®g‰HbàÞ5¬4£~àôlÞCB瀦ØG=ÿ"9¨,08¸Þ>ü¢, 9¡L2 5móZÝ‘ ÔÅ‘€ èMZ×{€#Ã8kãjÐýuJ=Zÿ(°Åy7:'½†µIvÚ¤¦ºÁvÙõ; IZä~¬`ÞmÔµ,°œJÉI¥äcCåQ26œ™’,CFƒè n;VIºuâ‘bùÆ.¤Qš %ÑÆ¤ÊõOö4£DÇœ™’ŒO{[´½Ž9ÐÈÎË¡–7Z›û*ÛN­d[¬úhq (GLKB'iÆ ûYãÑ][ç9ÀÈ×Ë?Ìþõ Á¼† $âlè?ëIÓ¾õë–È[V‹ò,r¸R¿ñŠšïi&H-¿7;“$ ½ŒR·ó€÷s®±”JÒzSON›—É»×J”炽ƒgvgÙ;8M\• –"-ÝhgµužS,œýsèÈ™v½‘ÄÎ:¶[Ãk{½ÒÕ à@$ƒ69ÀHéi³>´©” €vƒ£Ññ‰·ª·%!ÉŽ~_˜+ÛÒg »þ£$™ —ÛUˆ€jY[’;!É —2—ðµ–¶·/©V‚+ –tò£6¹[Y¸9]\&øæ<‡$7e}“‘ü‘˜ ïÄ11?ðrá@$îõsLtpd~á+á̓옌]{€ÔVÄHí%ä€%ÃÉMØà}°áš%UÚKZ£p‚nk±|/Ke,9AÞ …ƒWÐð°{9Ip ’¬K>Gï{Rg$8ÉÏ@0k %X=±w ’d‘Dä Ê„^+n=]©á º%0Îk.¹ Òˆƒ‡I_ ]Õ+áìv\VÞVÞ£f7:ñH!Œ µ×á~áÊfÙiê*Éo\´ÎÄ-àVšJ9ñHJ57@ùÍ<$ĉÜ;¾ÙU”ߌh¤ÐHàÈŽ±o¯¥À4òõJ¼%p’Ó5qŒúŠ#Ièº+KMÙ,1$§«Ñ\È'dHY+N;WbH¯;óƒ×`î_‡n9ðHŠ7'¶ôßßVSÕ2ôrE¡„L"Spÿ¢6Ìò“+š º¥½Ék¿Çpä›IwÜ@k‚cí›-_­D~+í@&è×_(Mµœ:áH* 0Lx…îTßm#3ßîO©Î·s‚‘“·‰Âôú Þu¾Œd ¸ðèþô¥½î'F*ÎÅQÒé½4õŸ mA.>C³½N¯Û7`‘ôJø^n8jÛ/Ö¡  8 (i²tŸQº;‘ÈÅôÎÅôÎE€|•B © I9±8P’ÄêD×AÛfi4ЛÆ/.\ª%ŸT‘»3::Š£KrÚ¸.N‚'A,¢6t@‘IßD¥,‚çÎB0R˜L”Ó DKÔe’dï É6²µ’ä$'WšŒ©IIø.P«•Häx²µg\®×—‘œÈ©•3c4H¯‡ƒM%îIÜÜ(”­—ò §«bö2 åGŸZ×€À#î’•†i'[·Ä$ª3 ìW‹Ì­] ¨¤4b `îEívâ@%· ­¡+ì—zíáãÔJòVbàÞ >ù‡aI¡‰+e‰F+þ˜¥'¨–ì•z†'¡¼]u§ LÒ0,1Ðÿæ’õ&éô”c±=1ݰYWm™% vœ;\ÜÝ¡Ht¯@É .ñ'Êgá} ­¯6`’5ÒÂW[ ¯’óáÄ$y?æõˆ†=Z‰µ:@Iøÿà´FZRÈpäÄ,êU|Ýh½ÕúQgzdƒ“p>dokjiáÀ#'¢ÁŒj´^ú8\›-r$±æµéËpä#Ñ•û,ýOŽ{€‘âØICFp¼×75ÁÈÆN$­D&íkû~§<²Ñrç“N…Ùß°z‰JÂ@(%{÷½½û¾Z)…’$µ²‡\ì!ëTÈîñ”\~HímÖïIéèµÇÀ¿þ¢9U9‘ "“‚Á­<Údå™w÷ÿåý@&%Àr“À—´¬#ô‚&®aÀ P§ÅM×ãŒL˜¤1 ]DwPWA×?Ü×Ý‚iRMr ª% Nc´Ÿ‘TÒ±öx'ÑiRº5!Ot-çÀAl2Ð-½sÍg‰º fÞ°ÉëxâÔ}`Ÿ@ºG=N`“ÂÄ2^šp—pI%D^Gãù’âußÔ+œDS9˜wÝpI +±‰>ÙÓé KÅ×Dà ^ÒO¼Zãw¡ ¨¤9‡%‚Cćx_ÔKÖ¬É`âdb¯BÕ,ªVÞƒø¤^”Ôëo–wÉ0ŠÔK‚Êû^¥Êcb¯¥ýFÐ×5ðíú4–<°¹þ*”ôuߌX¯J9R úº ޹¾h5ñªL/gŒ’ql‰½¦µL¹¨–\ÿí*³Fpàd¹¤qNÎ%ËQyÐÍÕiNå >a 6kÿÜ £+Yål-9úÅ3¦ïÎûqf’äÌÍ:É#€Kš‘RÈy€eMYgx‘IÚxFOêgc–Þ 2Ù@u“Æ@0Y-Áû 2iUØP+ ³$ê#Ȥw°eÂ‰Þ 2]k{Ù ™kŠ% ÃÛ«ÀጢĂƒf®&~â¶Fó\+]3"xlƒ¢ú²Võ_ ÞE9¦ %9‚3÷2ê‰idÌ$w x¯±ß/+Aj% <.1fÂQ âRw@(_ÁÞ]—`ËuòÒ½`ÐäÇX0Xçþ…±`0hÒq)‰ãRrÆxÍÀ j%ßÎcaï@–‡×o ƒ&Åâ4*‹Nît\D(‰â½ùÁzŸb_G1ÊíýU™cQ"xÁI‹SŸ‹ë¤¤¸ƒ‚–®&•:Aæ4ÑŸQ_ÜÀ'up:4(0˜ÄŒVß´tåÔCIwÑÐlÎú䥥ë€aíûî¹ÞÞß|;”üL2 /ìùíf]PŒœrêAc˜†½V÷»iéŠ)zr'-«õ™S\,Ê“:Ö3héÊŸîãžó_oëU2çå?ü¿ña ”¹´ä4wxí/€( ”‰a‚s¥šw“¥6ï¶A—Bæñýfÿ0f’yÜ®¤qЧ®vöV×J€)SÆdPÔîQÒxƒÊIzT[ÉNƒñîõÛúådâÊËk3Ø R¹˜6¿:æe‹o}ÍŠÉFèið…|ñÇ,ÅE¬Òsê¦çœx× ¥“ °RéOè†έþå(4áf¤ó}êÉÍ\yÎ*S]3·~Ö$Õ`Úä∃&lwÂØ{³ÕG-Ðʯº¢á*CZ]MÒÎÕ ç|m”™ÝZµú9qâ ùÌ+šÑW4ópõ(ˆ€¥9;KT“³ÁÍsöúm¡€r ÎΡē‡jn/Ãó¼Rl©dν°²Žz†JÕmÒ‰\’aú2r•\Sû·¹ü÷S¦MþÂZ¦¹üÃgzSRíå¿V+Ñ‚¥0ÝQHùÕg Þ0@_ «Ø,©°¥) ½ŠÆËHzµ¡õúwÒëëwxS_èQS;v –ÂTo!7Hœõ{‚w¢–N|Á3u8qï¥ûq'jéØßò°bž•€yôàï®’&L T~¿çÝ3—èI'jÙ@1ÓÔRø=ÚêM@Ôò=3mKëž¹µ4GgN^ÎH¤¢ öD-‰Æ gËSÎË€¿ÔR"#,™Î;ˆ¡rrÒ‰ZùªÑó9ål¡|YˆZþ1þ ³Û-ñôNÔ’Ö•B‘ˆ(q=)g ¨¥s%Z»¹ šÁЙ,¿Û3b’Ž¥8G:Mº–JÞpRym¿ž#ú/Ø}ìSÒë — ““ b†èMøð˜—‚÷žÆ® Î+­&•V“^3f;àI³Îޤ@Ee;´ô+ê€'ßzø¾èÆ+ë/jdÀ“öð7Ÿ[7íŠ9ö«‹ÉÅ6’ɾ·[Ç`cöú‰SLI޲¥Ïгú}/ÕÖÅ6·n8é…lJz-ÅèS6æ(xÓNÈ´7)ßÀ“xU‚jÚÀ¬}JIyíÀ&ÿèìÆùÿ/œÝ:°É ÏX:ß_oITÜÿP™“Tàåœe0g’à¶Pç\|j‰H ’žŽ:…½¿ òŽ ™LÀ†Pùß6€dàÌÇÌéz/)îhd-ÌF©–(¹H$ؤƒÔýAvËÔ’%9˜- ] Éö8ôK.â 陾 \ʼnüGm.>ˆBƒ—æ,ØAòˆ®ÍYkƒ(䂹ì_áOƒÚÉÏL =¤ÂVÆ{Y‡áIýBb%ãÀ·—GÇÙÁ¶í¤G°«Û,®Z›Ú!Á ‡»s2ÒGÙû @í˜NU'” ¨FEš]ÏGÊ& K%‰" ÜJêÇ©ÕQCu”¢‚ë¯zSÒ8-kÐmÔ4åqrB¿1A$žÐ»Ž^Š·5“ŒªNŽÅq`ÿÂldÀä`ò1Ì“¶|ÜÀÅQÐqñ— øtZõgB¡mðó~ý¸•-÷ïíAÍäZöOS[1@0;’ Æ2ÀÞÿ…%ÐÐ’¤¨Œ$2åÍKXtŠ4Pål¢ÓŽ–Ó¿’O:(™ å¡k $ó:¬óœ1!%x’L e$œR¢,åèfP;ùˆÆ50±±GÍŽ ™¤1 RŸ¤ ®;¯Z ý$.ï7#õc–É`xä'~l„7qÚ^Ötµ¾×DŸü«ï…­=ì3Qw}Vš¥KØH0¶F7%MI]™•8Ž”XJ•‹ÕºãƒJ’È@öÁ@öQŽoPÉ7çéFJN½ú®¾©Ç™0I b•ªI­ ÂU“‹—÷—pªwôuüåÐ45&àÌz7œTêœ Cnqf x  ºº vÓõ×ÿŸ´sI°ÛV–í\îdâ×ðü§õ(ca[ª£`ùõªaÁ$7 dfü„WIGõU<šIîwR·ºOÀI¬!…ö¬!'àd…±YÅØ¬Ø^®°¹Í$ Õ'„ä¾;éÓ2ýa"p2„¼2ë ‰¾ýôî8º~„»«œìº·¾LB1¹EI{bs¿öJݶ/LMFàƒØÕ~÷­Ð™×)h2ˆÏ)s‰{ðûŒ€-éfM2sÿt¢y`IÒFŽF)u=}جÚ9ÏÞ­D³jÛxñ¤ף߬ÉÌ!“Ò6-(1Iš=ö:\Ÿ ZUÛ/´^lÆ „4ljÒ'àMÐIrËžà™7¹ÃZpLL]·>’ÞdóI¹ò³.Œ]EÎî¾QJ¤Õ\LÀÉîãòä$y³’Þì"6qL¬o‰>“Lâ&ó˜Äj–4J/¸„SàäG0°ÚnÑÑWóAa“¼J³ël[MŸíz±· š2õšGé.{¿7ï‘`ÁÀ]RÇ^…‘°¤Ý)TrÐjῤºfz†ô$Ù±R®Õñ¿õÚ¦)q¡”*‡Hw«ùÕ,·PJnº›½U#ã °Ò¢ÂK åõ¯$JÁj%Þ2Ó¢ ¥ä&Àr3ã"À²wÿ­;Yâ¼áìì»ËK0%Ö¼P¸¶2¶íÛ %XW~A“÷¸•äbO+^)?‚&py[zŽOH‚u6YäÌ=SA«Úrb ¡¼ÎUÊm•³²9l›¼„PÆÐ±›'’KýñâåH‰|{„Ø)³K—¶š,a”ÉJ·‘„GZ@x ¡¤’ŒÉ)Ýì¬e *¹†Ü>Œ.ücfBÒø64%íCô„î½ôn®'Hà–Laà Trêز3g ÏqYÇÉU³ˆÚ5‹S§Ñô®2‹”I¹vñeŽ–À2­Ö$%F9=Vîvz,Wý-A’ýá|L}ö/òÁ—IÜé¦ô¬-Qìj¡Ô¸öäÄ*tþ„°h4kbo¬á¡8¯µFíd¹YÕ…0’hà©}:æÉͲì¯% r¨tR|Q‰zµˆÖ 9ù½0ì:Ù[þW׸ï=Fî'žõ îèBù)ü/Íþâýùòy`ˆíy|[¦T ã€+!ZÈ"Ñ¡EÓ‡Ÿp¿_h,H"xžLÎ{Ħ!D÷–KHd_úö'úò©7 mdÑd,’òªh¥ôR«…>2PßÿUÃÀ¹²8ôÂÈWÑce y¶mk—€Èš¼)sù¬*÷Æð­ÑGb¶‡aê´FÃ*âHšÑJÐÌÁJþÁĵê°#†h—³ÙAô µuoIPáðÚŸE¼ä·*"í'µ[ÂÕ"^²DU4UGd kF°°pÅä4šš£ÛÕ‚#K`äñct?F×7¼{׋ljÖž|¿_RŠdqç-¹•4#ií§¬ÄO4-f»È˜l2§{®®Ý-]“¥m,a‘Ñ×.ÈKLé\v¸@#õÃUŠ›¦áÖ ã¿UßnÓZ ,ÅoJ‰Tu³¤ ‚aGXªÅ9Ž›(žÙ˜’m;¬_‚"I¼ˆ},ó%‹í?\!‘XˆÌÓÏp”4_P‡ì²oü¨U–ø*R(ä7 b4ß~Þ¿€ ÿÅsÈÝþtwëè….…âO£ºÊjz®í€¬ð#«ºë¨ðüP{ €l[)åmcm»ÑYùHØ%rÁ‘*Û«©áÚ,Ä‘ƒKÊ;~ ~]’gÛ®yúGMêºHà ?«›·êVš¬4…?jƒ·+AûCC:ÄþáÝ ®ÎQÖá~N g/pÈÐ|¶1m_I€Cnd [ýßhDVyÙ"braH°Do~fBñ8.¸•D é:Úú$ÚïðQ‹ü®üÛ5ñŠ/ i.‘bÚi?©0Ñ–/’CŽ*ÜoL5]³é|¼~IcBmƒˆªòö¸Ó‡÷î\‚"¯7I'I¡q/$„—H/$’ƒƒ) xNåÍw·)¹µŸTÎ1óc?ÇÁõ;Óyb3üù*IKù C‚xk·Òq‘Ò5 €ƒc®û6×1Á`ÄGR¾˜! •\:½À­çÝ=•| “\"[.Ü Yõ%©@ÉÞÔ–ŒŠHidç°„Ô%P²…æR™¸õ!FúôD«%P8 ±÷fEe[$cö-Ñê“WXtHVEø#…}oZéݬš×·z,×EühagA@’è”±ÙÍ…­™7¥Ù$“ͤ·AË¥Šrùè» (.‹´"ðï®ëÜJê'êý¡Î´Ÿ ŽaÙ$»º ÒËâ²ÇÛ ‘¼Ó%\[¯KÝÂ"‘·oSñjõ¶[@ä'¯}ü—ë‰l’¸EEº`z϶\’Ôè’Kæ”ïgN›£»…Dü‚ûF¶ØÂ!kEÚPõbGaÏž¶ÉÙÂ!q$ËÉ ·2Ð-’2Ë¡XJ·õb´±!1êš­v´ÚZ{ŸVx6Œ‘žºä‹C⪑-r«ü߈I:Ÿ|½A¶$!%a2±éÓ"~$lÖJBUEØþbD¶É–üXIr´®:÷۟羞ҶCÒ}’%ñêkp"×°C»-,RŸ™Æš¨­­Vc „dù‘K¦6¤ÙƒB’Û·5ô‹¦¹ï SÝ-RC1‘¢ªÌ^,?ƒ?ÂóìÌûzI”…Â7I’(Æd°3çW³ŽÑû8´"³†ÁPϔηiQä–ä³1ÍÊ.›¦¾¬ýÈ…lpý¹¦†¹âðüŒ ´Å†é[£º1trÌiù^[0äõejk ™YeÕÀ¦o‹foA‘7«ŠU#l·]ßFÉÌ7qzNrÒÆ¶z¦(ò[£FQ4VZníFY´Ó> Ð{%ŒqÒv![d?‚ⲡÕõÎ[xd÷èCÊ&ƧÿLÀ"ñ2ë!{ýë/QýTs ‹ì¡b¦‡"Ä:ùŸãÍ¡ø•€¼w]Ó¨Bë‡·ÈØx´n™6T¢?Æâƒóá,r):[Dí/Xú[Xäã"ú5EViÔÁl«5$ØG‰ëS t!9-¹…GvÔµ³*JfVAH«øRxd“•(Ú‡\v̲Á#‘"Ö%RT]"TŸq»[+1MQž· úRxd&Y~å½"©kªIBàDí6D2&ßhMchŸÓZÓlÉбÊ誶ë‹â_ˆäCHûG©Ó®šÛ®buÍHrÅY É&\´jI6äçˆLÃû¥ùöÍ1+I.ÍÞKûGŒ“¯•ì?òH‚—Á÷K‡Jóé[äã/sO¥ÅséSñâ/,Û7 ä  ²u'ÂÉzelü[uB]}.Ö´˜R{ÍÅ,ù( 7ŒÂPü¸åh$1ï«$‚ b¯‘ÜB&£AN™ôîd÷Œb…7ØdªÉƒqâhNk¸…OVàÒŠ¾ù¤®´ÀËDùD€ßG ʽRO{a?@Ê!ŸQÅ¿þ9*I?㤠qËåæl*0V±Žâ•dåîºØÖEé°RF9Ù&(e?•Òþ‰ zÿÃ-á1rˆWö [åÒpé¨ ¬`Âï„rRïNÔ[÷÷¡áVR™BD¶¤7„&=-ÏaOºL9A Òåó²é-a· Ê.‚BW-OUmêò‡ þ­(÷Üà €ö&µÙ>î¯÷| çe1®ýMRãˆ2+:Ùn½åöfÈ-) ¬Ùªí¿V+Jß&£pÒTç^qo¾$Z²È4­áOü T76åK¢%?dw…•”áwKñÜJšt‹T¶(7°Ã'XR¾[O°Ñ}$‘–ñ‹wêVâÕ–íN…>¦”+]¯s}Âp ìû®QÜÌc¹àð€(KÒÏÇPÞsê†Ë×JŒ»ñòÓ\@²$뙥œm[ûˆöÛÙsaWá>õÚ]áþtKdó—FÙ½m£n @Õˆ•ÊD“<ÏF<ê ÇŽ‚@²HjY‹¼ +ðÖõ—ÿ­pÜäýö•¹±éS ¥dß°Æï½Á¹µûþSKµïzDÚÔØÓn÷Xªßƒ.å%‚›Ž-a·¶„QÈ‘$|¹JÂÄE¦;œÇ1è_sN4»ú0ºÿ0„HNÍ$¦˜DS|„é?R¡‘±´½v>ÓÎwzUö•"y²²—Òe[©‡„tÿ`$­ÒˆF•”à.,ÝJÚ§+'5Ó­ ü.LÝJ¢H5+Áð=—3§½V"'L’­æ¸ŒmÂl&{×`ã”*HÙ”GA$ÙÔd5ò$– -Òù°WîÓZ{ŽBƒb¹nýZF›6ÍZ륟@!«´"”òùW7®¤ èÄw·OljJ¹´R]rlª›]Òf[>ûÂpûk%I&®ô;·pÊ„½ŸÐ÷;×4-{­¤bdÁp\bL×Ån¹ÜÐõZI»·êµ©jd2n~Ó¤üF1×ðï–àr­„°—ÔrÂä>ì[ü­iXД–“oA¥8½V¤TU²`n-bI×r®k%d7Œ·è²ã#œÌŸ*€”SÃÛY´ Ì"ˆù«•v+±ƒKTüÜç zƒwY’k°Ê¢SåÉáºÑ—cpçzÒ(8¸V„×è=×W/éWÂLŠz èïEøD·c²(Â*énk'¨V« qºbÆUn-̸šxus*R>v¹Í.'nyµn ×J‡èªª câÚº?žðpm¬Ô„ÿÀ3' ÒÉ/ùKýç+´G[Á1^³åŽ ÊÏf@ý-l·ù¢nR s©†µÀT8_T…¹ìi† \ž4¤¯ZÎ?&ѸÉth]ØpëÌ8l¾\ÊI“‚Ât¦‚œWq “k%úJÎì¥jÈÌ©Zƒ©(¹VŒ¾Îž‚á•Ã<£/YT‡÷ÐìmPÎî¨xQ„TÖ*¾{…`ZI)¾Ö´O|œæRz_̪3êF‰ÝJR⌣Ä!°5/Y/LÄ“õDg‹ø<û—O\H¥N§“æ ´“]øÔq©ê»²ŸøC'׿+é9Ÿ5ïGôâa«5 ¿«†›W³Á`×Jø]ª-h8Ë´öÕÏ)„RÖ†¹àÔÀlNãëÍ51ÔA§¼ªo6?) *J˜]*Àƒ€90 žüx@ý£‡HåÈÁ×Jê/ɘxvÌûQ3[²^îQÐPFrMÁ4†íÅ‹„‘k?+¡Ÿ;±éoîN/÷Âv‰üúpâé¨ÝJô—zN×Y Ýû‹¢‚œI K°¨–³/×¹ðЇ›[L£¾_Ü›^m2´ê‰¿š‚_—5Ï‚†² ¦: üEr5oÁý˜¦ß£/l”˜ÃmjˆO•Û«@ʤú…¬Å39¯·E<ª€Ê†µüõ—êÈÔ5]'žýHê©·vZãîÑ©#AHT•J©}BeÚ§K.§¥ˆŠ‰kŬú{LÏßÕˆPü–0ÖS€>œSÔcäú×ywZ„© ±|âIî社=Žætd·§J¿9ÎëèloƒíÍ1‚¢ ±ìÚMºÄ=ýò8狨‚+“Ùë“ßÑnf*rn—æå&m’àóºÕÞúàó¨b›Q>Ç L–qUÁ•z»™Î^™¹Y® « ˆ|Ïãjÿü+îÄQ§£ «ŒŒ6ºðÓÄpÅ‹‡ô¼Ý)ͬ\M„ÝÝR¢æÏ‚À.9‹“õF%f1±„LZ˜² ¦ä®ºy]An/î 3×ͳ=¸Z-‚'$þ$‰7qêÛigžDá»JÇ3…Â,â&ÎmQ®*x2¡N, Z;¤»^}Móaæªá/³¨ ¤«Åƒ+e9CM2êˆr{S |Y¿ m³SµŸçËF=%±ÎS,×ܪ¶ºUQ^+éµnåÂÃR®•´aï$mØ‹wÉj€“¸¹uÞ#‹$U”¤Ó+Åá}:ý£h¹§™2ß«SMÈ:”Ä7+aOR º`'%óŶ(ùÍ/ß±ƒÅŽ¡ª@Ép÷ñNëðÀ§ÖW¡’°;šfÚÑÔ‰D÷§uò^‹t ]Q;º"ç.U¨ä>fp7ë b· BÅϵiŠœ”ìIÉ>†¯´%/G°Ÿ¨°n»BTô“ÓOs‰\Ê‹•äÁ§ß¤B^•B«úýäùrS+)žû˜ÎñìZI¯x¨Ó?þ/´Í_“¶îÏü-Í‘OD•Uö>fg_Ó_mXÞ±7'¤¿B7yl½„ó.ùNG¸d­J=¯²S¥ñêN‹édѨUâs›â[éy¿—¦· o¸Mzz±D®*\²UL´«hë )FûkV—„"Nê%wqsQ×êXJ±^Áçסk7Œ];XKׄûgýÊI`¤:ðP·JŠê1’Šrò2RÐí½eºuDên4ºzH'‰qz}]¼Ûãòsââ^âÏ%0Éh"ÏìNüЄ0ÉVq¿­°d4ëuñv|]å<“¡·»[7œ¨G=I F_¢UhŠÕÍE&'BûK4Ýp3ŽÇÃØ­ô_Š.EÍÜõ—¿&4fҘױ¨¾ÅN˜/&ÝN¡ö¯¥ Xߊ¨NNò&5ó±,xq^¢ ì¦ºŒ°;aÓ³øw×)OÎ>å8:¾˜0÷J–#^ñwEúÞ¦êÓ†=ÀZNFuS}wqNÆaÿ~Ÿ,oª*¾à8Žküµuº»k‚)¯[ωSeæ8ã3÷ÄÛñx•¯Î‡~_Ó0Ù^µáñ:Ëã³\$m§£&¤rë³û¬¥Ì±–#ÑPRroÏÝ÷ÂøæÞô†WOMÏû£®°ÁÑÀ*‡ŽñN–QOFÕ^¾Øˆœüƃêvžúz|÷܈œü&*º’AuýeŸøqzÕ¹Ùw·ø~ÃbMhe'¾~ò¥| ¿üá²Æ.‡b¬†êæšõlÂ*ódp7±UÓºØFX™RætM¾4€ÊAb GÊg"‚=R@åDä;ùN WúÍ §ßFîàsñ\§[IÛwR[æ!ÑË(äÕJ‚t:`5WŸ OÂ"ŒMXåV¶ñV-’ÀÔbEG aåд9I/Ï®-·ÛÔGbzo¹hŧ,ƒÆ;žÞ­$Ž qO”Lçéæ?7A•ŽÚ–høGâìR9d‚“[*¨Q¥÷6.øqÌø‚P˜yñáNÙé\ÙWIhe„jŠé*?ô;eÑ­ô¼ÞSî\´àx½{ï‚&¼rŠAD{`A<‡ 4!–­‹AÓ°úþøp=ß± µ¼zlª­ô$Þ§’‹ˆjy6“~£²™ ªÄPéÙÖæ¯OwÚš¹ ¶|òšê?Š&ºÏ7*Ýêß`ËOEfAÒÑLûÄ^•߸ªÿé Àüuà„Â<¾¡ò»ëh·Û·Ô/-q×#§auë;ÒÐU&×Ôcœ óÅ5 ºüÞ1£´HQCW™LöSGA¦” Óz,>àÙ×ݱÒ>+©´i›øvßVÉ0)ž#'"‹[IøNÕæ”HÿåÙißqA˜'?NŠºê›f·¬•€‰ºZ,úÕ:;Š?Sð-8Z~XKí{mªþa¼¾Þ“™ø¤ê5D•êÍ>å²FàW?¢÷{“g±5³|̽ÝݶS&ü²a­•È©²koÊaIÔ ÿ×MŽq`CÆz_[éwK“GþÄ |5;üj‚/‰ÿ"G¬K)Ë%ÀEv2û ü±ë°Dˆ&ܲCÌÇÅtKénÂ,ƒTœg/¿¿ØƒêY Lf$¾nÄÏšoWÒ{ÍA€Y䇾Ø!ÑQ.|‰Wêh`Wú·Ä•Ø“I{w‚zJ·°[IÁ~L,áì³³ùÚT˜e=6M5˜0’üjB-kSðWeBQ›>ë/{º µ¬Ç¯j—üÑÔ³aùÚp hÌâDmûjI¸e-"že¡¯X¿8n%¦&<§z\Ú#³itÏlë·ßŽ'^ñ1›–)Є\nI„öÑRˆ W½š® ·D ¿Ôèj‰7½—PKÖo·”þy)ýëœ2ã嵎 I·Rºh)“ΉNpÑy­åço-—§‹P»- ¥7¿¿¡¥ü˜›Â:sS?©nh)'öxô-œ–÷jؽæGN:¶ ¸+V ÷L4‹¨õ‹øL¼ ø½[ˆåµ9©JÂo¿3žXÝúÐ5–WvÈÝúÖ¶æ¯Õ* e¨ºmpi>í0ü3:v¯ÀL'‰¹Žoûr%¥ Üë<ÁýKýD ‹U4Á–•ÀÕ:àÕ ÝÝ\–sÔ„[nM–¶F‚[zzÏnÂ,ª«¦"«€{sëˆ.¨±Ò÷a¯³Œý@pz%½2ÖÊ –þÔ6³@=ž}nìèí–-°rŒCÏ„µ´ª¬RßÚsýëÖjõ£@°J‘–ЫâÒÓ]Tþ9-ÝQylÃç5Å$7C ñ±­b¥ ¥ü{ ]ø-RXÐgºÞ±w±GÈf»ä]“"å>Ÿo~2 ­!‚%8 [²EaËÆ­&Æ,ÕÅŽ&›×ïŒPíÍ›WBH뉪.)hïÕÝJzµ·&ïuK‹[wåšìÀ4ðzÅ”¥ŽÈI|è²5R §üp¡#ƒ€‘âJ»'…@Ê dÝK´Ž¹ØLÒ·Q =È>EëXÅ!òÚ1ôÕM,'Š®évþv+égR¦#rv5¦kXzHQ ÆKrdra×Z­:ÐS.ü1—zÜU$]ö¹Örðk«ÔtšØ|YOüˆÊÜø>D¥íòŸ9åÔ›ô€ú÷ XÀù (?@)£ÒÛfK ¡”g(Õ¦VÊ.¸;»…–ãÈ)‰GòF[Íä\–à ”ÐZcx‡Nóf8!”²5Q ÐÒYéÁ 0€-˜…é H5¬b(À);¿]?cníà™v\(* ô‰Â™Y4zA| ` ¹E9+`ð…*U$ÚC§on ƒ‡'0Gc`3Jr?¦?1TömLâúhÂáG³êš¨<Á<51›Ý"ý+M“ÿ*Wœ„0Ê:Ït7ûyr–]PKºJnk‘rX °!RßYäÏ;ÝlÀ]ðä7O‘U¼2x àId0‘¢ÏEêÈfùA6åÔáV'™8b¹¾xB4’ È3R|M¾†àÉçžî»œtî®o—As­ujQåþI¢/¾4àI|–¨E€Ïa;Š6R Ì9MɺíÜB¸$&ã1Nn€EJC¨dÀ˜·°KüÐ}‰¨rã[¸ÁÊ÷)Ûý¦/D2‰éSú€¹°÷[¹ !’è¬ÕF‚[VTlÁ<&d÷‚J—Ç–•*Q g¥7ÏIôî*9E`‘]ÕsN‹Å$êJx'QÍœR2Îé¿–ƒ[þíîšßÁS¸å3“¾Ô´;…¹Ib+«*°G—z?%‘ŽsYœ8…ZFJ¼©1ø1ËM/øM¡–Ù˜ïd•OyÉiëjYQéUXÙpno~ïmÔáôö$ge-/›¥x¦PË1cv ­®¿ÔŒ5;jJ@K’¡ã¯1µÒ\Ö.I­œÈ|&7?¡&°eS$A%ï‹äl”ჯú¶Iš z9ä½|ý%kš¡†ü*÷íëDpå8GrÖ–Ìõ—}p†Â&~RjÔHßL~·h@£gˆyU̽]¦@Ì­éüVCž8[¤W1¥ ÌMìÂ<ë¼÷~HÌJ]åwxÆsZîi¢¯lL.¿Ô÷Ö$ªW¦Õè%f=öòy LqÆ›U%攥ç¡Õ´µylr¢¯ü̉[û©ùô¥*úÊ$ÇUäã9˜çOô•GÑJÖüÓÄ~]“-ÄÑWÔuÐôÚ,½þKA_Ùö^%×Ü}âÉ$Gâ¼q^mY²fgN ÷ÂÈV •ËŽø8s2ÙŒœ¶FNuû 8s’ø¹Ëýd% žz®I­ï–×Íèw+©LùLt"²Æç pæñ—+›ýRܶ‰G쨌Á¥4µãÙüùÛŠðU; 醡Ÿ?ÉXV‚h ‰ vß°ά±E_<úîzÚÑ\ Îl ïÓÄdîG»ïœ©¶µ‘•ð<Å.œ ÀRXB.7:L’+…I‰Fy¹Ú‹ß ‹“çÈT}Bˆ¦ç×&(fÓV™•Ððqðußñ€b~lprdÿÙ‡Ð2è Ŧºúi™ík%õ„1ômÅŸ) ³£ië ‡c ºþò×Ä«M†Bèè]Ãɧ†§ÐÌ]SÿæšüowÄh©š×™§ç±/%BË ´ZѶ‡ó'x&©»ktõâßqá™ÿ2­Õ¤°ë“/ú0á™'¤»cárý¥òÒÇß%á•í“ÂÌ'IcË»³§ðL½l:V³¬ö”Y9t…ÒŸ ¨¥¤`ÌÎôdi’Þ)t‡77ÉÉ›-ªvÝã1ˆÇÀ-$Ñ3bT3åŽeF¦PL®è_·íÏ¿Öh,ÁâÎèä-¼“‚0»¨]ñ`‹;ohH,sÏ!9CE=ÞÍ5Á/g£ùVqíKþ6l:Á/Aè+³‡„¬WÏEÑ­ß¿Mâ*1õ¾Nûjƒ_rw‹Ê:Å@Jï••'®Rv$OûÛh`ãiÝJÚµ?MPHiÓ}tA‚_’Ì^ÉÑ;øå‹dö~‰öwÛç ¦°ËÏñ‹äúgü²ÒÏ«7ï7i!có~냫Þj'Á.S®[ADXÉvŸÊn%1PÛ‰=ˆs÷³Sá–-•}»7UnK›Q-zGlù]<ØÑ"YëÜÄ68ð„Íû[Ãw—à¦)º•D‹Õ24™)ˆqzoâ.¨r«FÚRµlñVج‚.¤òh#:9j££k~;©ìØê>I ÏíB*‡¶©mmÊgÚs­ ¥œìØd•Y%×_ö¥FZò}Š¡†}¹5­á7L`¥éõ„'HY9½Ž± ¤Ä¡ž'4N¾[³ªŽìXœR¡ÄÄi|,$"Ìa™]èdgv¯c`(VëHÓM’œ2?4ÿG3`/“] (*ÛºZzºZ.yÜÒs«äÊ-ñÐhréÂ%“/¶Ñ2ݺÎ7»³KêÖhÿÜ]¹ùÓ óW¦ä+uQÒC‰àJ ÅŸ¸ø_¯Qró"$¾c{"J˜pĦßöâÖöïËH+¾5úÛ–K0„HNA­¸Ð<økܰ­Ë’½Ü‚#—´sÞTzkô!,òñ¹KF‚á»À1,Gjެ„9Ÿ@Ñ(ôë“ÇõúŸÿŽ-V¯–Ú2>ðH,öÀ#Ç:7g_¡M‰},[?JÚˆ'¿MZQöî-ów+ ¸aK¤1® Ë€’´WGÒ™KsÍá3DF£a3"S¡ç[ñäÇYìög”Ï(Ù­tJk­'ÁUsÄ¥õhlÙä•Í5áJï§¿ãX¾RîÃI©ÑÎ5Ù]@Ð书Ñ1ÂÇàÁ*%ÐdžšOÍLRͦOuø¾’1Þ–(ÉIFN÷mÑ4ùÐȾ¦äÒ©u½­[ëö÷+07§$!PÍö׃xJLUT_÷­›Ý×5B%¿·¢= Ù'$Pò!àÖ[v¡yûf¥j‰äPr1¶%·¯.ýþ½ûï$ÎðPµi‰õïX/·Þî}éqÕÝ½Ð—Ž“MyÌ&–¤þMÒÛ}ÓSïÒD«:«­ÿ‡@ɬȺ1 è°eƯãÔ¬„vrœàdòWáË¾à““M‰œ O’«N§6ü+~œ`‘ä‡ÕbðÛÙI ä*QÆPe:†*Ó9­iã–lÒ½ÆGƒŒ5Ö²šÀv’Ø…'lá×[°0&õ± CÐäD2³àͬ)]÷šVî4@'»$XµºvQݲù¢íäçYÀ`ƒ°r¯äB'?À 2 kÇ«[é@;ÙÑc'ßͦ·¡‚(³ë-€Ó³ip;Ã×à`”¤¦>€õ NLê&ß3a;våP¯Ó—ÊðYí t¤ln)í<ò‰í«¬`‰—¬C`ìºnÅ­Do¹¨ÐQow¶§[‰}œ:|`»qù¡äLÙr·yÆÀ?ZIUÊG+Æ*KOüNc5+ ªŒ“–? 6žs •·o=§Q$3¹þ²g "Êﮩ8èÅ5éo sšÜ>Œ“=0P) þë/j|¼Á¨œz3¯•މ@œô''@%Æ1Oúè×ðU¡#‚ Ršå¡š>y3gú® ²l NcÑë/»T6ùad9†å*}³økP™E–ÞÏ¿¿«AÃ=ü˜ ì¹»ë¯sMvWPy?‰¯¯%N%&UƨVØ90…-:¥:6i£‹–9ÓW‡*·6ß-!uØ ?LL‰néÑÅÝcf6ñmyC(%~ [#ܲXIÖDùÄ.ÝõŽj°5‡òâž!˜²Á†Õ1âh×ý,ö ”:À–úàîÛa” g‡ôÐ|ß‹˜s´J­Sû dóÓÄ”CO»Ûû¦7;›¯š€(½QìÿvM(r"ËÏŠlõ&%¢Ó6Ôc´!Øtß ¢¬C|6‚½ShUO W A”­KÚÝæ Ó‰ÕRM‡`ÊÆ¤°1)lXUgúó˜òà‹ˆ ŰÑã„V>ßÿs--N«6(uÚR.U7ǰÁ“f c8mhi½¹òÉ&ƒ¶Èc ­ÌA§é±O92̰8ü,gj¢®„hš8)…­¶ç±~ÅÚߊÄ#«êO–G÷@ÞŦ%qçÇhY¿Ìñ¿Ð­SPã+› –Ò㯃.èCS¦`˺葚øó;×ìYe ¶Ì¥22é”oÇ3/±Á@ó˜¾ÓEÑ¢Rj7;嘕™ Èø“É„ÛmGÕó8¾b7VõýÇ9ù«m“'I•EûdÒgF‹×¹ì÷þc¥¡W©a1×JvŸ$©²Îswò‰ªr Ï0š€–ŒW i?¯¿†ûn%†%ÝO÷y-µ-…O<™GN‰F ,>b-3x[v„™äB>ŠÄ¯ó᤽;غ˜ýµË³¹zØj[vŽÎ9Ðñ ©VK7åv;wÇsRQù"ç` ¶ŒŠ/GÅš¡½Í–ÛS°eÇsà?¶Vš^o0QT¦âù펖»|LËBKÑ`âGªŒ)ì2ƒV)4ôÀàÃCóSàecÔª ùë/á;—-TŸ\5¹ÔÐû„)û/EeÃ-,È.†Þ|¢ËDQyòEúiÏ0×âg`çèjU}ML„n%•(ȼ²õÓ¨<_ððfËEe`xï‡15,e ¼¬Á07H‰ªRæ÷Öš(*ÉT­dªf•E÷ú•)ð²7Ñ´F—Öwôã>aYQSàeM½ã5Ñu©sj·Ñ¼¤ «ð±ëDžð_`¸xë ;¦·ŸÇø•¾`ÊÖöSÉüâ‰ЋK]Ð·ß ’}% iÁÈë&й•è3IŸ?I¯ã„wXœ/ŸtµûîTˆçÖÉ9ß¿V¾ÏÐúõgÎé‹Ì^RaÒ~¬<^‡ùµp _cöó~³ËoT0açSÀe⼿ª;«jp¶ª…ö&úÊ ¥ è5}}øSÀåÀÏfBÖ[´¾×_¶ ¸Äù¯:7~·ö¢2D_¹1[ÞÇl¹ÿ îpy|åúÙá ÛÜ›‰óëÀ–|h²—gŒ¶­ò`Z6jÞ«%Ä]¸•ðÔ^¢–>‰Â|¡ù²<Χǀ²ªµŸ‚,¿wÔVâ=-ç±}],ÄXO”¨Õlö`y|V ÂˆË8¼$v ­Ì¢ÉybØrÁá†ù'ZYa˜E3øî¥BShåÔÖÖ«@ŽGÃô4ý X‰!1D¼¾h°{M1NZʯ³%¸þ¶øâRù§¡Ý€*΂}‹T¡O„b£ùŒÞ„)N!•­Ót cÁ£w ¥[ 5lQEü‰0íÖ°g ­Ì¢R©7ñLoz~ÀZ94ÓàçãHþí }N6m,ß>Dµ¢Ù§Ÿž‚+÷‡Jú¾¡*p…U‹MàÊ*Òàõ¶ô'Õ÷'‚+‰Ód—G²XuV¢‰ÑÞÿŸ†y€Jæ!âa æç/渾¼ZI:Ê¢ÚæúËîµh)嬨ü0|ÑÇãúš-Ô`¨z%ßÌTv!M]–S4ýVKb%úü†>ÿî·ÕyÛ­M@åú´è¥xF}ûé9rÊóˆ¾äÇÑ×ËAåçJpé9{yÜJàðX¬ëïøÔrqJ.µ\ë¤Mkú2A-1H«¤uÆ/Ó3þ'Ưò6÷†òKæR?¹åŒrý%aDM­ôb/A^©_õ€ÆÛ}'úÊÏ+Z\y–B³jÉ\¿K<Øpí~Ñ,¡–X':Í¥ 0–­—0Ë^DLb|Ubéð¤øEb%O)‡f‚}‰Ò±Šš-0K)qµ;ñ ¶'YÂ+I©‘÷Ä, Æ.Ë\‘U¬—Îa2†Å>ž¯_Ò•/þÌiJßógˆåÒ5=ÙP÷8.^·ã›%Ä2›Lß’€öÃ¥Ór`ˆå*Œ(a?Ò–ÜL ·ÒÙ½yNý<§Ás²/PËÅZhè2¡ LKXà–ß_Óäšì'‡Ü’·Ç’úòZ×nyTM˜¤?<黣´›îªÔÝDEM“h×åÏËõ]ê h4Þ|-éO¹%è2þrÈ²éø’ŽfÇ\ ½å1š”^‹m™]KÐ妅?~/H_ø½,!—OÞ÷ý3{K5ºéiÞ äòs&ü_RKÈå#ªüûöü{­ä“Œ`äv5Í9…Ìç´#“%àrH²5¤¶ƒw´ê‹§-X^#ê‰kˆ®f¾øññÇÜlpBNÆÒÑ4–?›„X2æÜR•Nám+“%¼rÈÑ`ˆ¼6R¤9¬WãZÙÕ.uètºvë¶»„T <ÙYfáãÈKh¦×_"¿o%¹¾ÈlZà”UhPTdä[ëjm­8%œ…`2˜§ ,ᔿà÷k­öE8%ø[TÉ2®¿ÈH°‘4K8eàí8µ0 v첄Sö¡¤¥> l9+ OZÂ)Ô#£Š¹òæ9!²l# 1r"FNKÍ\Â)§T͸$³=®ð/¸@Êo¶#½Ý>¦x  |"W¾ )= qT¨Û¾’$Sn1„£iŸÍ!ue_º  |r?ïb@äÚV»P&ï6)ãÁo6›Í¼^Â'rßÃÔüµKÂìYo“ð›±NªYnó8n؉É>¹éº‹¦œAÜVxÞKï]Â&ÿ6áêÍ *–É)$ˆuÆÙk‡ßLÖgf‰ãðøÈ~ &ýMV*¬¤&iîJß œŒzª$Á®‹Ò«Ä¾Ý€“[æIC:&@ñ' ž¯  ­Ÿh…Üž´¸Ë:‰ÞŒSr„¬ñÖðoðdªØ»z’I,áLëÙµ&ï¶|m>Þm´}V´´O’$ £`ÎßÚH‰«¦v–YÃL&ޏ¬/fÉËwl‚%‡^¡ót˜Ú­/t@UÏ´þžk¡Võsû%TRD’(‡…oûéŸ0É(¢:^©©m]l"O&Y€’Ml‚')ík>&ÍBXSÍ…†2ðA€Š]#XÉ€%Q›gSÍÞ»^¤1­BdhR_l´Bqƒ®sùÉ-Ð$EKÅ_.jµPPâV;ž!]Ïûvs+áD¥¹F%"¹&äðôÕ?q”ß8X<æßo¯ F X)Äw½”Í7[B&‡ÈÅޑϳö©–ëˆ(åƒûøÞÚ¾^(™DñpºÞ Õ¬‚j ‘Äj‚@SòP¦G5@#H£u oŠ·EÚ™^t9ã„6¿E¦,èžvôî÷%{œÅ×E`‘Ÿ+UVB¦ìkua‘-°§¦>-U·ô'h$-v¦ºµ>ec;½åß&ˆr!VkÐàˆ‹ìƒFªîï©{,Ú~Ÿ×» ¢œt´HV£¶5Ë•Þh(;ÛÚ„2á€x{¦ 9)²š6Èç>ã¹O·’Š‘.ñc'aýë²ìÆ (‰·ò­oÑsRW³l¼J~9•T¦w!AéoÏÚ-DrŠšx+7Í–jÙÂ#£„°ƒ"åcûýU‘¸eWZÈÆ ÉÈöÈ8¦MÈÛÂ#Q(©E›À‹ðø-4òƒà>ÀÆ–æ>¹¬;×>*J†ÈDZ>Ι_ç£Û˜¶ÐÈ0ê¡IB%HO%Ø ‘å Ú´ç Û+–à¾+m¤NÛ'ˆ¢qŸoïŽ&¶íÒ Ûüo„”y~;rÛш¾[Þ)¿É} »»J²•òFHy ³ñœ$WëÓvI82ÛŸ+Mê­i‘ä-8ò„d?W×Xóo,ˆ¸R6ܨ9žÎ÷;=°GFeTVãl–@ ößÂ#Ïin­´ºú¥åÃZv;c@¼T$|«´îÕ‡Èm„”!×å‚\Zr¤ßUð *-µ¢¾…—n“uÙ N²„\¦/ wðŽÃNÁ?º;Á“‡\¸—t‚©Gµ:¥}ðI˜œÁÇB€ûì¶¾ÜÂ'qÿŒ8ûœN–ÛöÉ-”ZH•<ñC{Ó Žò8Éüna9âLuo·»MÆ™KíC-¥¹_žšü« ÖMÄv ­ß»™úÉî§ï–Q}ÂÀDòÂ`6Ñ·pn’ßüô}«3½•[ˆâDÍ`ä±JçSÛvRºK¶ÖÀ–¼Hìð”i šl‰ýs‚” Q.ÚðEÐdÓÏÖ°‹[%ÓÜVÛ½MŽ­»›þr+‘bùŒÌ-h²ÅÑ)ª³¸J;ñ¯›—o°É¯ ÿ7 G4åé)Nûh'ÑM‘$úyMÖa£¬ê/¤¬Ý~8Ï›ùÂg œ¬Ì”¯¿4Ã/PæŠ?À…On‹[Ið8kZß¹-|²1Uj N¾¨éý7®¯Kþ։⥯!æ÷ ÊØ2ÐC3ŽWtç-ˆR?›‘§k²bx2UMÔÔÆT ÔnEx²œÌ§ÿdð°P>€»ö&hˆZ4«õýÝ(¡ò^Í¥N@Vò¶I¦LœG˜x\éUªþ\>¹Å Þ¢o‘¦·åmR)‘;U²Ñï©î³×·°É,j-×—ô¡Ý™P.? ÞB' [Üz‘¶ˆå/$A{œ¾’­Ò›h“|!ÀÜ‚'[?qfãtͧ‡³Çðä‚[Á_P0î¿ü·¸»?ÅÜ…éû´\ç <9td•L!1 êTÜh'KgÚ-Éëê0¦UªmÄ“E\Å(¤bÆÝDRŽÅˆQÚ 1õÁ ïd¸P’"ØqEXîÞqÏ3üÓËxªZ¾5:n%!9xcç’œ#}üòS )‘OW ê'=å ìö+Íoî|©Ywµ Vù© P‘ÓH–öº€Ýë¤@eÂÔ¦ÔÍS·ÐÊÜêts«gDïŽæ¿:ÐÊoÇÌ€:Õ2ç·ÐÊ¡É÷84ñwI_u ª¼mrdª×ý‘íãFH™„åÔïÔ^ÝÛ–lÁ•Ÿ”W•'­i{Ó`ÝJz¿“$—Äþ w=^4à-›:çÇHú†ô˜^ØGo`Ké¨#hšØÁ_PC·Ë/YÊ=ÒŒŠ8ÈÛ÷æíFjÞ¥}Çw½øÙôv“~ü삈šðù½{S èi? Ì¿^¼™š÷fÚ›âû#-ùŒa¡ˆ¼x•0Çd«$§²œ§†Cä² £ì|(]=êã©ot”×J(:RrJµÐCÅå°žCYp­¸»T‰Œ*ÑVÝΔEÈåµ[ªt8ƒP ²Í[EÈe«ž^+5VÒ|!1C!—g¥ç>ï‚W‡øXn {­4xâÏK ç]ç„Ûu³ ¥IÅ_o4’®Ãq2®…TžC©j *â©âF9·þs=šSbþ¤Ä›8Ï,‚-·„Ô[}ò‰íæAYY¶À‘‡ ºzÐÍÆd´„?Ÿ[´î¾5ZèÛ8YH¬ÔPð±ÿûÚH0@p8j–£ „BÑò@÷8†«—³¥ÆHÕÏø½¹9Ç,`–Ÿ¶z¨ûR¿¹&T˜áaËuý%Œ)U$ ‰•œøµ-i¯7¯y<î&•™àMæs8²YA–•qGeÞQ™{§õSËr¼_¡dâ÷8*žSé<§²YÖÂÎ]ع˜ÂM«³²ì]àçXÌ—øW¾XIæÆ sëÔo×SSýQý~dYÛ;÷Ä0hYõSA–­ÓDoA†ì92\%EeoêQúYttj/KñÌ"Èò/Ó³®òÎ"¼rË,`+jŸ¼bÇÊÉBXåŒ~Àoœh§C+²uIgv. )‹níúË_“Áo-Àe`R|Õ%´òû•tw¯VÒþEí©üûöÏG ëZÎÀ$ ‘•§œhÇéGjEy×J‚,«žøõH =1ø¸Ýu.×”ªq²ljJ7ðÈBdåV_ÛòE=àÀí¯âVÂÄÀ•-ÿ³f³28©ö «X¾žÓÀBxóùn¿Å‘¥ˆ‘ð,PX»£‹f±$ö¾vÆÀ‡%2gEd VU˜|TüãªsY|¬¢ï•˜Tžt›ÉQPœ§Ñm5ýôº©fRìgÅŸB,Û`âk™EC¯Õi8«Ëdßç<+áºðâ·ÓÀû³“×Ý5âx׋ç4ÿX©1†wØ·KÊzÒ*åGöüûöüû÷O[c¦ºøZb¼ÏË*Ü2‡ZÕĵ3É“Êí8£YI«Ä ·Ì{F£˜³ uÅz©P¦Â4i¥fm Ÿ$Âr8ÏëDìÒ=lWPZô± '•œJJ¦ÉØ´¢§#Ï `Iê)®$DûÍ[`e‡ƒ¹ýýPž·Ññ³‚Uv1s[?Ž¢RúâmÄÕ“,„ “!媖(T…UÔÜøk‚T…“E=!Þ÷JªO1¶ëd÷Ìî?Za•OìM¥QàBÌ8W»‘äÙº¥¯êê,FÁ¹¿Ùñ[VH~¢ !ÅscvçÜ•€Ê"öZ CzîøíÝÑ_~kÝ ÙÄö—•€Ê  _+iëÖ”2 瞬i;ª¹¿µV1î=ÔýXþÝ#Ùú[gbÙµ+ubÎz%zéÅ~"Ì’…£²Æ’ñ,é¢ú¦O:Y/Btf³3Ï d¹µRß2(OÇ‹òTe× nà©1å´TÚ*¸’U:®[8YºqZ‰‚D’$·ïr…T~c$¦j{úV(e kûX=?ßBùq-âpˆ Ò-X…N~\‹WBßüL6³cëà˜[~«Ûir2Ùy¡´¡ìVvžUȤ[É©Ÿ² ™L²;¹!æ*–2Q…L>MìWc«¡DJQÝ­“uVÉwàÂÌ>5ãLO¾¨ƒA Ò®SÊ>;¢Uu<‚Éû!=/€ÜPp[ܦ ’ÄÅH³‘ªñuioY…F²ˆœÙ©„¬åÓ„H„_³Ãçýо…"ÛÒ´¶Q e†Ð—±V€È%Ÿ¶t.g'íÍz†eˆŒàË€“†ˆ#óÅÈĦ@ÜÇGìž¿XIUÇF0q©§8VÁ‘©6¡ÊÒ¹nI·mÌGV¡‘øiwRºbó~-¤™ßÙÐHÓéC3šaK®•Úï·†ù¢)¤DŠÜph„µå+)@È®£ó Å©º,\WD¶®-±u>µ! W_–¹]QM2sø”a+áK¶bñŠÎåù÷íù÷ÏJþ£]ô‹,x‡<¬;+²I¦‘š~ê1ü§†lò#é›,%›eŸU`$ôý¦V¡A¹_þ•D3‰MPÃW±M">r"ëæåf ŠNyT“Û¿LB#Ïãn¤=x].ÿ©€FÅÏ>?××7pw'¡@n†Ü<Óª‚E*X3‡ð¬¾ÒÜ—ß‘EVŽmÛšèW׃å<ÄßòëƒÞ³aö:Ä×Ȧ_-›†ÏkÚfÙpãi¨%Úˆª¶Wl…Y^ØÐæ.OwUòÞÛ)‚IÔ$mžâɳ'£6<^ÐñÐùVÑ)_ÿÝRˆž¤X®ÜÝ žÖ?ÖTÿ^i*²‹»r+©6©:skÕ™[OR³jÎ&øqŠg1Õ¾]§’èHáïMàãƒj‹{o¥–MÀã”áÉdò§C{…e"5¡Ž[y(‰¯Wâë5lBs6áŽä"LŒwç|³V#x²NÌãñ,äizžmyÔ™$KíÑT’Žf±â†NRýöS¸/K³l¹s.˜÷¥Æ½ûv¤¡‘<jÄÖ> „xf%4’¤Exµsn[´¸ w„3¨$ˆUp¶Õ×*Ú°§¾‹¬Ý¡#µËv’‚/¯¿TüwÈÈÝvíM ãT¹5¥B 0b½¸3²ñ#LG’;rÏ-ÛïÙòq«Ù¶Ÿb7°F,…¨|¦ö²L_&5¶ºìŽ3EOõF£Z%j#lR\¡-Oï³+ú:3×¥êáÑzÝc-$i‰ 3W½‹[ ÛJ¶{µÙîÙPG.ÜÊ ©Þðô»gj7 ÆdÊ‚·à3žŠ{Þᯠ¢Ÿ>ëÿ/D­KÎtõ'þšþP!Ô¹ÏÝÿ=MÏ»-BÑ~²£¾ãC¹0t^º¯\º¯þâtE™šC ¢†gµùó mäŽÿnì—Vß„FÆ1 z‚®ZgØ ¤k¥ÅJƒ•4$Aui•zAü$Æ=:Ægˆ'3Ã^mN€ [?’}<è“}2Nøä‡†zWcŽ7O edWÔDí ¬h=ê´#¥8N®²¶ÉI*Ó‘ë!à’°~ÿ[Ðóµ~Rø÷­Gnú+Ñá’O\è]Í‹àˆäû¶½jœøÉfÊQð±G€KN}+IlEâx}ÓÜJ8¹mÀ»Ì‚-~ÄOvµâ÷Ü÷› Nï,‚&[—¥u¸w]$ÇÕí1w\»Ó˜zŸæÄzº”  É®~üqÿº;»‹Éš Ž'Ü×VoÜ-ŸCÐd‡n=æÉ~žç ÉÔ›Yê yaãWܹ[I»x­Lv*e8ÊÍZJÊÈ@‰Ôõ—¦MÞC;PFVµ¬¹ôŒ‚aŽÍÈÎ@‰‡ò£à»»h¬%«ËÀÈ8ÙA_CÍï,ð]¶Å©G×$·.Ç#0»!\KæŽ`ð-¸¢Ù‰Eœa!ÁÀÑšBòtNàáç{£k¨rª4•æàÖ»•¾³äÖyÒÜæÜn%âä›7R²Û ,ôµ@%Éü?JUwß(Ü1``z>M!„Vöù÷„Þš,JÏž ,]ååóI1Ü`s3N¥ŽÍ¥î·FòÞƒ/€+a˜fÇ[ª1»òräÀÏõƒ«ŠO¥W+Ázý.ÿ’±M1Ê@#¹Ô¶ ;˜¢>»eb†pË)‰N…¸ {“áHŠ”!/NUSÖrÅ¢ D²ÁÁùOù5Â-[}¢AÔ°æ çC¸eN©¨ˆÞ`¥>„Ë@žKLŒNêÄHÎB.§HOs‰úH¨­W\‡`Ëu¤í<©D7WÅ—:($ÿ0ô}då_8ºÝp…Yâ y ¸Ê¯ž|nÞÈ83«É|húߌâ$hÃÔ@'v}¿¸7¦à*˜*GåœjèVø†N¸åGõHÚ0r1mõËõ¯ã»ÓŠ_›“¾\¯âŒDyTo¢¾'eÎí¶ëVB9ÉÞbª][šJŠí¸qŠDtdš†¬oƒ·ž®èÔ¨)±;—DO×Ð[p=]`“¯é÷% Ìz4øzÓ^\… 4 ‚±®ÚFt£%;¯U|S 0óØpv =ïåùê!(ó™£W¦ì)ù¯w`ùv(sà¡74¸þÒ;Ðü”ÙdOÑšŠæÖÄYÍð§ZJ ZèDi¡Iq{Q~ Ê„t&äauÇ‹ò-e¢ÊLT™yì­IQ ¥LùÕµ·7Ñ_ °Ý €2ƒ´Õ€³Š³ã ?ß”ßáRÙ:-û™9Û½÷CMyF;j{ ^ƒÓ?qÜ]¿OµDkîC²(Aj’Ù™¤ÙPâ'ÖåkdñM_KúÓNxfݸ…ï£`ÒJ­¾XIøüè.PÔjpuýåŸ8x&”z,ÔÔúAÚ:Õ·°‚Ž`di¸·¼6+UB@ªŒSëÔï¶ÒrGT©BþqÕ¼+0+®È?£ó~ÿE Å­px…éùÜÓ=´ÂpÚcõ!,sÈï*·Š¹^uøöj©Z!(³6ˆù_<âû p÷E &(xëÒ ô+†Ÿm`±ÅùÙØtß <‚1k/ÚGŤ©@o¾hÆ$Õ²…˜¾ƒ —¹ýë ŒÉ\¯m}`_›/^€cðZ~¿¦LÅãõa3¿a%®~eQûçgFE)3šl~£a åÌøÝ†’¼â.„a阳ۃ7¬’"µàïZN •}+WXì*t¢ s^Ç–äPî#ÏDé¿dÐ0½*É¡d¥çß·ûßk–^lrX Ç|$«÷ðäLâe¬‰Ç+œÍ¶…d×wýå¯ Ò·ÚÕ1…òŒÉ$®YÀ?ñx…FT«`úÊ|ÿf™™•„dþk¥ýŸVÒû[Õóï|·¸IFn×MLqã뇅žˆßÞ³.…cþ{Ó…=QR8fà 3|ì]§õÖH˜MÙ }qT†ÊøÙ­ˆ-ÑVx„ƒ’‚`ËêÛËÃükÜËòšø$ŽòÙþO¶K¯>M¡—`M]êÌ Qÿê]©œÑ oÀ« 2,† ÙL\]CßlœX-ùÜV“¸ºžkJÝçšÒ§¿¦°ËOd jù7¬Š-«kcX-•ö,Ĥ{Ô*…]j¢ª±ô®1)ä2Eb¸J/œê¤_ìÕÿæ±tå‡#t$xû²‘x pÙ ŸüוTu/H ) );%®×Y$Q”ŸäQ’» ЛÞâVÒ ~Â_1@Î-VãhÖŽ3\"bEyŠð´û‚K e|xD?÷µDb‰å‹A–[0LoGö!"Û ;žH]+TTüJO¬ÆàVRMR$ÖéD†Ì/7€»Uzñó«&)³=«ßƒ3 ê¤Ë«iSû¶²6±~4œ –¤ã>‘†_,'~¹´™•ðuý g¼_I꤂0²Ú±`âëZT»EQíå„Rû}點kB¿±Å?šÕ*AcWüŠé–à|Z,6Xà ”)à#¦>2ÏÛ !!e:xÖÜJ2¾Ä°¶c;Ú1¬}qoÚº§H¨OÆú½•ˆsr¯éVZß\ÓYiÿ`%U&DÚ Šù×ó¶U’ËÑÃsU·ƒØ¨Ù}?)Àý°ØˆWôÇ$2ËPi[S½[…X»%Ú')”šÀ÷ä‘﵅ωå_¦' 'K’ÐjGkÓÛ¹3»³‘@qµT]Ú²0.µ¨`Y Ò€ §È S¼xÚ€ñ$þN $jöµì08XF)gÔ}ŒØ#í(0X6¼ÚTQòaBV|Ï-ÀòÓÎŒ ³EH—73IKü0}#KŒi±œDoy¹Š ¯ÿLa•[Ǧï©#¼“AS6Æ›¸ˆRë $A”×öƒA§î×_HlüÞˆ¹+î%‚J*H‰•F%ð䧺~$àœžÍÎsÐE²ÒÔJ×_šØ,?g9ZKýð÷Àÿë+ëŒî»…Ls²[“Ÿ1DT™E¯¹ýœ€r Iê#ÛTéߦß׎Ù+c ¦m ÊZ¾²=f¯ß­”çÝöÏIŽC¶!×_Bö±ÂyñÄõ~²úTÍ‘^°ú³WŠml bеÑúuž7|êÄž¸}^¬St‚M."m!nF"Û—{$Ø$QaÙO?ª²&»/#Á&Õ"W†H$)ýòsËà­*±dqýE«m]`rrE“K‚¬/ê,„–ûFê!E¥ök¾‡0bÄ™·ë÷÷§¬€É8Çõþ«À놄ù›P~pWg<òµÐšµF‹¸&úÊAR`S‘ýXÓÜÅ‘%>'˜$Þ!uÉ…â_îö…$ur ”SÜ¢¹T°Íå ¶£¯ÄWóÃëó±)Prˆý>pU……—ÃOZJ∸ t ¶Ã"¦@IŒ0϶Æ{TüøHˆäYF$ÕÉñheÑ)4ò»BMçÐê~î‹ÃkÕgV«è-µê‡_ák~Â&§&mëüh›ÖÈ“Êzùnè§d C÷a]XdTúzÌuä„Ýút¡‘²Vù}kKw¿| ©ô—ÁG,ÇV(h‹­XA@ÇÛ3M]Y)^\Ò‘R2Y­'î„8 föB-‰ÑÇJã8)¿XiýqM5ü ©{³ÒóZ÷A ÇP‹66Ü=ï8ÝSž, o MbX*B'fñ[_²x›UŸÚU»Ͽcòº¡"lX[[ƒÃ¶-…¤ „¼%¿®iª\ŸEÏiÛ¨w@HLÚ–©ÚÕ{kT7lŽS‡ü|Nƒçt,lí—" ²M‰pþÖ]Aþ€µÕ+‰zãh0î†üž®j̯¤ÑÈf ±Ñ)ìsÒ¾¸;*m¸ ‹’ ¡Y÷t1冃_ÿZ›ïïîÄL~óµ ø©oV¢‘ÔOw&ˆÞ¥#¥Ä÷¥1ÞÇ®ì/VfgìS1{Fäû"Á¼ãòŠžçÑã|5ÚçÒŽ%ºÉ¿»\}·ýêŽË+¤$x®1ÕHöm½:zcøGx¼>‰? ÚôÆ.®ñG­4vç·³å["yüÚžg׸÷Þ¶C—Ž” ¼aÕõ£uó×ϵҹ#ò ù¤­îߤ”ߨº~äÕÑ…K~^SåšðÃ}sMÏ;>‹ÊÁÕϘHÖe;Àä€7=`ƒžQɲàV3*‘x5µ;õ!rÚðQ£ýN*k°u•ò‰9YŸ/žÓóŽ?ì}M!dzè ¾P[6cüÚœ6vAF{zã×.`2Õ &æ]Kû<Æ.P²‹2ÝUïv•»ÝW»$+ÁŵIjZ0ÓQQ~“Brlà®öËß.ݧ®À`££3êVgÔóŒKÄÞ(¨ßšjôi-÷×síp? 1ï‚%§f «Cl[¤"£üÜJtAä³/ŸZÛ‘Q¦$T­+‚♥}m~%‘¸ wÕh7û«õ±·&X²%½\× ×¦ª“æ ¼ýh(UVn0)r(–OjëA“¬„5R“ìiø4Î.dr Ûº®M_{ñ«©Áœ©Ô©§=—ø$+-Ôû)MowåÏ)†úJÿN9I~DÇ*¯ƒ•Ža‘€Ž²ës«]w×Smá˜~[.ùÉ–x#Ãò[²ƒKžðAD¢¨|ø`”ü)‹àð1|­6A¨ —¬ûX‘«ŠÿQ„H?*ÊÊÙh† `÷£å~àI\¶Øqn‰£ZJi?*J\’C.É55„ëÛ» Ê@ìÝÁËéë7ò'1°ˆv†p§“³Ô«>ؾ5bl£|ˆü~’ÛSvô%c¢ï$ºׄUÏfKÑG—Ýîè·’vðçm©J™OGè(ÕÃANeKº*&»¹ œ\*”–É8ÉXÞ.· š\¼ŒDlåÉÔM?Ç20.‚8‹˜Øm§/¸„Mjy¨†W£š×°}èœPÝx™j˜l$¾…†Aÿ ޱ>)”çšhÜ Èøçñc›LLÒÓŠÄ´ÂÛ­wL`?ádäíTî~%Õ$ŸÃ ½Ú ƒ®¿lq‹hR>¾ 3%?›l,Þƒ¨ç8’ªlyYaÇ—ë¶Îæø—ë.|rÁ¹ lËCa[”³ œ\šv/=Ÿ­9`‹¸w!“OøØ]A¨ÓþQ Y29u\O&Ýlx“·.T2èƒÞ8RÆNñ¢4*¹u,n¡&[Ί+¬0µ ”Üå_«ýä9÷ß~tÒ,H¾º©úñåë µÐG„µNéÂ%§„m“2MŽ0Ûb‰]¨$F>SÑ|Xûm+CèB$§äÙxuÔ~.ë¾2ŽÃëÇdTdÆ<\fKB‚#‘5“8h+Ø!(’À¡J½1…‹_ÿ‘ûÔ‡àÈ %Ê„^³¼#çÀÜ•^8ŽOÍfm²H‚K[įákÈ"+SµO¿èç7kakó,²jšÝ*©ÜUoãÊ¿Ûúf%8$¼Y‰Š:ÿãâÓBXò›»&ÙBœÆÆ¬¾…ÔÿÍËG˜dÅÿ¡‚$rw÷¯àVB@&â_cs•±ª†=ƒl‘[I›v—á_|$q|FøòxŒ1ž“ƒd ; ÇÄ•䉘iª–ŒæOì; ;{áëŸ?ÏéF3ðq]JŠo[©ìmkö|ýe»ƒ@öJÙ¬<†ï_ï¸-$@ »\(«òöX•?o¦ÒŒãã*gÑFZD4¡b}Ù)öü>žSõm·F+/×¢ïn¥Î”•âX\Ÿ·âÏ;¾58ÚÈ ñÞÒbAî;O£=eXte Œ,|+EVÜ×_|uv¦1Gv1Q²êšz ;îiÃ0”ß0Éf%1üÍÝÁñiðlF=ÏÉ?qX€“ZùONÚzÑOôÓUªdÒ/'7 Ï´!LJŠãÃ]ãjlsýe¿Ü\yDbW$ê¯χnò;ÿFLË#=’É„ÆýU-Rz²Ö}ìh>;“ ÔÌ«Û9Ò †Rª†ë[EC û€‰¸ש¤¶Æ0éøÈ½Óà“ø’ÑÎÍW¹ƒ›Þ}â›Mšú›3üñ3W"Ìqªg6ðÇŠŸdeP_aFÔ/ÁúãîàÙ=÷Ï}º•0l`Ÿœg¥s~Û˜—!ü10œ¶B"¦Ÿ–Wu§I Y .{XùߘLKxâ®Å@Û6,;nIÉc84Ç{µ2I˜Éë„Ø¨:Iïÿ2ˆ¤,øUæÝK\‡°ÈDª`1qO^ÞÑyàãúW÷äðNŃHJh TéBGÃç: á‘Ñ`ì´ãÙ!<2·5àR$²€DF\wßVä6¤ÍÖ/³·B#cÚ¸iœª‰á]iJÉ ™ût“Rðb¸ŒRòc%+„.OÙ ‘¸RDÁ æà/¶K!’°¼JÕW§È%%MäçO„çÀ¿µ0Ÿ.š-µ"´­•?šF'F]_ä­[eÝÖ*sEY“ääµ0 ¶lÔAe!t7þ8¶¥£ \«PÉZ¹;ô)µúîD¨díúLžx´öâÑîqŽŸvn&Ý a¨ân™ìµû1¥°Él¢ä©à©»{ZPqž —c1Õîöâw;Rà;½îÌK¢IðÉ @ù¤ÌßœŸo%ï·äɨ¾Þ±€ò‰–³P{ÃCZÒË^á oç× Õp‹\åMî&HehÂTû¦ Ù¡ÙÉÉ«,D7£HMÓ¢¹S`e&‘l©äßçí{¦Ê$‰4ÉíE ùQlÂæ©D.M-¡;m 0 ¡Ä»áú Ÿ<"·­L'(åG7ØéQ[xUʥĻ«U&•U“Ê•¶Æ¥Ôy:Ô±už¬îßȃR“;1O.õJkÝ3QNÆqË@îz•Þ<'”“)+À~HU½Àôæ]”Rc³9 !Â>CxAY8~#}:ò@Ù…ytíFÏuØúo žâ^\E£¾û-tËøœ”º'˜hUZ/Ä×Søä¿å•hßýcÆ»϶èßôÑY­#Ý<¹“ãÒàÂÝÔJL¤’ä½6; ab÷4©)Œ²O0f!:¸€ålÛ$Má”8®6mG¹8 Ã6çÖ. `t¤m[:¢W+©Ñ ÒhIÁq£ÛqÙü°n=F)ÏGò ¼÷[iÁމukYí÷•~xMz¿q·EÃÉQtøOïs5±n=†«eçýÞpu «Í‹$gUK›@•ÇÝðØ‰‡œWjøEPåóï+ÿ¾=ÿþYÉÎ%&‘“Ux^ mM5„uÜ«»•ÔLV ݈%öyT;£œ­Ä°I?79<Ýv‚She ÍÞ*>·5À_ÂpL¡•ãÌoÐnŽ¡Yîœ÷œB+k4®)¹&‘wk·6ÞShå_[ïøZážc±´\ƒ)´²O ^®¿„ÀL™ïŽb;ÁyÐJ`Q<Ž ñ*½p‚VÎ8×T¸&1hš 0q%Ícj¬01ñœ>Po ¬ŒdØ™Œ—SYÍ}øS°iÒCͺÏ ÂW±ªyä’êN[Få:üðe ¬ü¼»Pé•*vîXA·’äî°Õ0àï•â°ñ)´’D®GYt_’zøxÑW€V6Ìnß‹~ñÓVÂà×*r—[¿Š· R¦ºüóÝ;DÅ­¤·›i0ÌrâEÒ«å¦pÊ`_Š!KØÜ*-_D§Lá”×õEªæá‘áÙ™™ÔÿϾ¬ò¬TÁNX)¼fz‚W½Ý½³/uö%/à•EŸn-š,Õz2,ý;Iòd[Ég½þb’g™Íä$åÕtÝ“‰§a™h& ö ç¢N'ïë¦0Ë6a.O1—gÑo7½·Ï<šI•óÇöxN•¼+,Qt‚Ynõßuw¦ Ú,Ãç–Ml]7¶­Vå¡ìÝOÜ¢Äk׿^S«6ÒebíºQ©î`¥ÊJVU8…Y¦æ]³« Ÿ¸Õ/ø<çé2µPg!g·3ý b‰=äÒA0B†é='€% ɹn„”Õ|U\Ù°s`×ô–çNb'CÊÉ'£¥ý£´°ðŸœàÊã5LTä{¯á‰£+ÃüGð5¤Bá‡ÂDN>Û²ù`·dÀ­D‡‰±ç`œ?˜ç¿˜V ž¬UTPH3¦wšžØº~FsÒà0úžÂ+Ljð¼ÑŽC¬o@+;À' £Óüç œ+O¹>M±>w.½[›y ™*œ¼Ú~V»õ™‚*kžLq<{Â¥þ¥Z9åìM|Vš/Œ†§àÊ:WÖ¡C/égz‚+5ah¢OLŸ00Uö¢—h´³’´¼Ó»Ml];¡0©*xÇJ_RUÂɪ=ùù?¿oš*A`qßsÆ ø• R„@JÊ©W2¦%É›$¬¤’~5†H°sÚô«IÞdAUA‘4Õ»ÕaOÁ•C7÷ w‡Ã”W‹MÐÊ&!õ_Jãƒ[Íœ¾¾ZÉÜ“¦¢Ièñ"jáïZ8¸ñs9¤ž¶t[åÔ$Ä>â]u*yBÖÂßus–ìcë&Ó“[pëVÂSe²QöÉ»T¬èl ª$Žk ôêEڬѬj!«ÄÝ’\ðøüÇ+wÿ%°ò¡÷ß+©Ù=DÿÆ£ «×AëÆ •éðJ;±^¤M~oíÊ!×±z%~|K4:6¹•^:´,)»0æÔTÐç-•qHIªÓ¤ÓR|—ÀÊ¡jr`ȸYgÛódUV„)1ì qbú@íT)¥ C9ð /p—°Ê˜»aFúÉÉX³éBP)\oë!¥Ï€]–ß=j6I¿3IîQV܉rxCEØäÚ¼FcE=–;±YÖVèÞł΢pß,Ö?qáîú1ê\“¹1-«gY‚ô¸» ôÂò:— ËhdzBw׉>ÅÖÊ È2…=÷Ôž{ÒÝÙ·I eE±¤Cw ÝÝœ¶YZ-k(“1«ôkuªn¿M ¶l[¶·øëõĶ$÷‘ÞCøÃîµ6ö زÀíê:˜’à²ôÚ£…¿ë±±Ÿ T<6öéc§‰“]øSA©:N^”9ø»;TÖÊÞx”[I˜mž‚I(Z›–o¶„[ûS4ØtŒ:^˜ô¯ÜR»JM¦°zN5¬mÅšh’WT2]ék¾Ð·ìª¾k×Ü»NIPªGÁ“‰@¯´`š Þ-½[éø¨iLE°nK©4š÷S]¨,›vßÖ°xjÊÄhéKKT–ßz…b¨è¡½nÙP·}L“»ó×Üã<¼?é½îÓ_“ŒM梡W6&dñ»ïñyí|wCz ¹ L¹Æ:¤oo*´€.±:‹Xò?yLgR¨—€b¾†8Õ“!– ÌZQ¥B‡¨¦á·'0ÌoÚ9 ¼|ñ± ¸ 4·ltk V[Þ?k£¸ ¢wcž•ðM±5Ó>ŠK>;´dÏuÆóÿq+¡¸Äàœkæï°Ö)[0æ3Ϲ';Ω­àE ÌFq™:hz€Ÿ<Ô·2 x•zóú »Jûf<î"à4M“Q-à¿òRÕg"ú{ë믉w\¯ÓÙÒõÅ3B †¨‡ Mçï9»Y s¦y¶pQ|ZÖY±—~zŠöôOwaÕ ûxÃë Xû°½®p É$šh \[ÀeXùŽùÙ=O¦1?èž· Ì‡„wí×^=$½ÜúFÈM¬ 3ÍâagØ…6}á—æ¨ÓÏ7I•^÷Ëöíea®W°&èâE½` l€LR*‹Ññ›v&¿Á1,¥AÅ 9sxBÄŽYáW’–·…_õeÙ>[(fÕ¬ 2ÜW±àÕ„™R5¤Lª¢2l–ξQ]Ö͈Bº/A ¯nlüþ€>ÂDäpñj!ðK}²'©¶ÏÍC²œÝ˜š ÜÕÄ?(O<([éhÒ  j÷_q’ }U‚Eì·×¤ï¿zϳEìR#W—ƒWï®sûa­Ôþ²B×W+Åÿ^©.¶Ûa=Ï6ºKv·ºÐY,™ò¾º¦ç_g|‘ÇÅð3¸-ôr‰`¿¡o\¥¶UJna—«p´ÉÏÓ•åO6—ZfàLD H¯v»‘[¢ 「I*e³È×&•RDÀªöŸÿµ“ZDB2 %û5®p«4•¿{‚'=D_¤ØdRªK®KÌ.fÎu2º>rã{:ÒãÚS4R ﱑXV*¿W—ó«•åˆþ§q/h§Õ#o$–Çú»•üpjW~\q;ç9ù.yJùíǼøêe¢À °!dyµ}äso¤B<{ð=œ¶ž4›TÊïž÷Þü`CXGÂèÄRÍ´“’}ÀJæÜ] èþº[`eâSœø¢&bV«AÛS ªì@ºã¸ú“VPe+*ÚZA¦SÔkgø®]Påãÿ[Yó÷•ìöT–òN½þól¡#_vp¾Ê’%̬­;‹OnA•¸ß]QÄfŽàOÈ“K Úµ™pÌÏôÛ*¹¢çBîW@|èÛÅÐ-ô¼ÞC³$Æ€±Ù–¶UWm¡”¡‰ƒ?ëôj£û¶0ʡޜЋäô÷å`ëþ3Fò ï§µÛ't9s ©½Z÷[÷ ¤>5øùçÉÍê–W½'%‰hÌ•ßmÒý/2²1„]$Ó.³É¢¿¸;)âq [Æ·Ë ˆ·0ÊZ±*®êç, ]-et £ì!öËè%ƒåËíÙ¥„ýRÅ~]C©ù ‹u+oVBM¯V§±1„-Ä·5%?¼&˜&`gØÓv€Ýk#·ÐÊÚ1ƒaÿ©´Œœ-´ò»'þØUÆý—}Ÿ@+#å%ÝOv‡³º•þbœù³7sÅ_ïnqwö-Z¹Ä_ħÇœÛV×-C7©îMžyKSàms4öbûF§#´5«·ß`”…pˆãPdxwßè€Q5  ŒãÜâ¿a”´öÚ¹ÄËï%Â(³ièr JG•aÒôiàåÀᨔ¹õ—M«[‰ÝûãDе’&1jeßx£³¤€«…ˆ'¢´^²mt–j+£·¹*ç¥E…7 åüdciô6-Õ{“X)‰À™ðôìMfå hK&@÷‚nœðLÝ"¶*,ðêÍ'׋ðÉ eÄ%®ðXºµ¹œ»I/à“gh‚kf­x’TG}{Í÷6prÿKâµ’6î—ÛÆË”ê•®‹ë¥ðzC4ƒë?,ïp ÒµÒózo¯¸lœÊíàõZ†ÊDôüJˆB­ÀeÕ±Ìz8™E§[âô€9g:˜³“[ß­Å&á3\qÚ ž°üjOfU»(ýþÖu©ÐÉϤ(1ê·´m;%K/xÂ?’B¡dYÉ^/'Ÿ€Î_OöÙÄœá7¡“ëäßêMZ˜°®å(TL¸<ªçÖ%Ý­’š&³/õ"xòÁÉ¿sˆ†z•|èy/‚'³éš²1!ÁvZ×¼^„P é–G!éÀÒ^„M®Sþ=‡^©Yf/Â&Ûbð²úYI'‡L/`“„©EÓƒÎF®OsÝi/øÂ~ 1Ïm2:ôÃÎ^Yv·ØëYÔLË{½VBd‰Ÿ˜æ% c›å_"$–tJ’«rÂRÐÁî½4ÞëoÆ$iïβçZIâø--ò,NÝ«»Yg/B(ÿ%ŽÇ‘ „Ò2f®•(»;ç-J•~sBùœ×•5ï•Þ;g÷‚1,é0A:̨*àg:¿–Poä™ùDYÇmŸa9ðÉ.bVTöÔ/7Ó×7è+qÿ8i5ÀæË59½„ûK]À¿ù)ŽzÓ‹ÀÉ¡Y÷ÒˆzÉø!¶ßJÀ&Oò™h?1#é…øJUmb™_™zûZ Gª#bœ¢L|ˆ]—{­$ßbâ‡Ñ ­«ÎGªA”y¬ á'=«ß5 %) ~;Eƒ€9Ô½y)뵚•Ü'Ùõ—^‚…2ÂJüª[Ylòq]Ëyõ\Y”¦øßÂXz\Y7¶T„˜Öl•¾À˵†çZ«3ü¶\Y)•økØ·½ZIÞ&]Ö×½«ª‹Ri¹~¹àÊ¢¶ò s¹ç/šf8?±^Wn¹$lÉ{VHμ¦3ä¿ÖyÞp5ŸÍF'v¿àþ!VN^¦)É`Ã">­³l/ •óx¥ãq¯VRO9t õ¦vÞ[åV’Dâ1uîŽ9x\O/ •£ŸÑ’C jµ¡^„WÖŽ]^×.+1aéðá^„WÖ¡#üÉ jÿ(GêÞzAY/Â+ÿ‡—«V²j/Â+MûÜŒr: ñî8}½WXÞ‚ªÈ÷«¥ÇÙÀÿv –Ȭÿ5`% \+Å7×ÄJ­üà9!­$,¿ù‰vl7ìåH+AˆÉz|l±ãŸ/[k·’Ôñj/êIçhGÑì á–[€U-äò0ò|µÞp áhÁŽ!ìò§¸0˱˜åaÃ}ÈaNjpõî*¾»"¨³‹±¶DÃ^PU6LÆ»Z‹d–;¬ÑüµÒ±~xú’Ó~UÍÚMŠ#gü~I¯ÓÏ/Iûwò"åy‘T Ü.(n%ªN§ª9U?)ÍéG $XN}oÏšò%žÕÝJ–I>ßLlÜlq/Ǻ}a¦o/QWV)‰n,s9zÏ3¸¶Ê¡ž')†Ã_xå_1«´!½ ®¤šod¡4(Gùb2ˆº²h`uý5YI,ˆê‡g¤X.e=&Ù“½ëuËY>c¼ûWMØ„=¬a'>SªÁJ Æï¸•&+}§Öõ"äò ®÷=鳃 7«3bëäRM™z÷À`løb‡0K’¾ZÈc2ééòE†º²m&bA<«¿]IÓïkH°‚/Ÿ+©\ɯâWæµì(­"¯Äk´bÒ0lÅqz¾\‹'N¾§ÜVÿn%\|˜8Ä~˲Ýo¾83 ‹ãœRÍIc{E^ù™³¥¯¥áZjÍ4{|‡¨Y&͘d¯V‚ú ©“X a=þ{‚yõ¯¿Ø dX7¶-ëñ‰³blrˆœ–´ß+ &ñX×þV¹&á|ÛñFzÄü&hkÀ³|µ &»/ž+‰¢ò{AŠY7 âftøÃÎ «P̾5gн´O+“ïõ¸ÅJEöÁ³Mê§á$[½~¨,EeèÈä‹Î»«ý´ï“`Ì©<£-9Ê µy]½ Ãl)€–t©‚î®ZQY²¥4ÒÚ†¬ g¬Þ+ޱC3¾:ä\ù£éUmg–¢š€.ªÒEÙ A”Y²F,¸*¡÷Uº•Àz´RÖÅìJ¯÷uæùkB»M£·3¬d_JÀLáá½õý”ì0¼‚eN £‹81Oªß¯+ZþÓ%âòËM¹Þ ["X¦õ6è,óCÙˆ“&þ¼ÕúóöŠÚ2„@^©ëútjËzVZ®äôD½¢¶ü+Ug½ØâP[FçšP¦ý `¡WÐÌóœ0*ª4,ožÓI¹üpf-ÜVòD¤ŠÚ’ˆ%M q­#†«çjŽÕ·ížªÀLö$>0ƒrÁí½ ÇŒŠA=±oºšÛTÚ­„$RI©"îøðÔªŠÎÐI=xcã+7!˜<`8ûû,ð2¢á÷!¤ivgÅÜ+–°uœep °ª‚-ÿL¢¾¶a:ËŸ€–©És>·ç|þú©,U¼WÜ`sœ¶´±;¾KÀ¹VÂ.SDø`OŒ¡²ïV;»•æï×ÔRÞÉdÅûêÜJ"Ââ–9¥d ¡e%Ú½ ³ŒBðï\ GØÐO×é ?+œž©×#±ä4Óa¦fdÙ¤ö^…YMÌ¢BäÍù[¸€¨tqBðlJÔµŽÔ ¬“iýá"èב|A#‰Ã7)Ø4‹WW•¸^—ü\ļô È*¬2ôE.ļñbŒ ¬²“bË;ô¼a÷¾ætU½âËôäYyÜ&fá”.s,:r8«^»µÄìÏ¿ÿw•þb§¥Ô¤ôx™YÊR¡üc• ºôÅ*(âõ…á8Á¦ïÃAE­g“]\µìÄ9y€£ ™l¼=Ù™DP°ŸB¯ÄUBÄ­qŸV$›[iýï•®_YÉngÇôõ»öìÔ‚Š¢r¢[›èÖ&ºµé”]½¢¨,*¨?Ý¢O r­¤×ºéô¨MÿUcªæ7#”mé¸n ¯ ôµyôµN&" ¯_Ø»¬Ñ9=C°ÎSŒh~xøaãø3ùbDåw%ÄSà¼,!È­œšÛ·)øµMùšÞÍ­[ ,q蕺¸ê· «ˆîõø¿"8øæšî8 ³þ¯ÚmIÔ>ä°å{OÁ“ÑØ·Iåí›T¯ª‚'£`ºNB\|‡¤¹•´wÉWç‡-9þ~ yÌ_Uü=z…öè¾wï¶D:æ¯E¿ hoÝOØ€'Ù›ôËUýþõÅÏ*íçr¶º¬ŽEÃhC@S¹¥ò<ö}‡ûYSö­){ÛAÍj±à 2Y…à6,mZÅ£mødòõB«7Kžªø¾6ÂNT yƒ1-q¢’]¹a/WüûIÒ‹îL£z29èGt¢Œv¬C_ܸ$¤>Dguk~ЬOS¯$WV­ôŸïM³‘OD kØJÅ™µö .ù½5Ž6°šººÏî­†¢È="ÁJÓoLM¸ä~Ÿj¹?QW;k¤W~¦3ãJ­iT {6µ#«Ô¹U’jÿœ¶¯ˆF[T®)¸&gi×›pÉï°­ûW²ïx.Y±þ«Uƒ¿,rô°s€.ÙŽ<&‚"n; ·’TÃØãLìqfŸ¿mÞ„K6ŽÌÆ‘™]CÖë/M`ïRi´©i@;éŒÅršpÉ¿ÇÏG³PR—œ|Á“]œ´šY,ý­ —œ˜ÿäI{†è¶Fi‚%·Œ»ð‘ÜB«gó4a’[7v±¢†mË kà‘;Ù¿E|¸&_lû ¬ôØâË}Û6A’Ñiz‡J¯'øíþJ¬ º ’ d¢ãÐ×ùÞüÝágò¬ƒN3*󩿝H€dTüˆ¾[éâìVR9 :Á9 Nl§­™ÚQW~°o´SöÔÞ­&ª ’üûJ/xÃ` ³5¤•d2jc(j¦þšÀÈ &}ˆË×áïŒíO7‘˜È«…›'0ÅN`š€Èëz„´j¸!˜uxÞUCVI§3BÎ i³^t: ²aÚßÄ*«ecø¯–ØJ|_“úæúK»d³Un#¶&n]Ì—è¾òE¥„ºòKgùëU*P@ ›{û¿k%œ¨Ô¡\é]ÚbÎxñÛCj ÍMêVL†å85°Iím‹{[t:ËbÐÊEøôs]ªn¦çP·Z©n7®yROzІ¶rtîNÌç@K6‘ñZ)Jðy—˜ûy¹u´oØ¡6À¸¯XB~;¥¨iw²÷³¡h,Ø=FÙ„Qûö“7ÜžöýYÉNr>°CtÞ¾O6ocã·„•S³.ZaÜ[ýX°á» sÂù'Êxø·StZŠÅ¨ë§ê·&b+»|_rÊl4£ù‚B@e”ã–šl(Øv«oÆ’!zÃC¨)«.óÅJ"¼6&ß§z-íô´¡«üÆÔjL!ç·½•[é¼ßšèr¤à‡·è ¬’0ÕìQÆ­:òï’D úDÓJƒ°²á “ ]%2/’biFq›B¸…¤VÃŒ{'Þ­Y|‘#´25LQ”»â†c9þkÍC¶µËáúKĉ°´™6¨¹á„‡ˆ€5tæ¾y¶Á‹MýWHÒ¯siK {Ûº•x¹åP¤®iFuýå5Õ&hÅÁ4?Iâì 'Ø”83SØ×õ•ˆbc€zà v lÑ÷ÝwÛVxÚ„[ö¡©à'»\°Îô.R ]eë$±;›ãay Ü2â/ofíþ‰#¬üLåÕžºOåíM¸%g©KBw[zHh‰¼u}lÌú‹!šJrÅ›Õûa/¶ÿPަò»øj5§>¾º·c+™Ø‚w_4XÕ7;˜ÀVÌ$«ÆxÉ)Å©>L`elrÄ‚h½¯ÎÛÖK‹± ×4uM7¬/€ßnr˜ÀNVi ±z<«»•jI‹Â‡²ùPlìaoˆ*?®IãóJ2Ä}un¥þçJ<§Ïk²ï¨åæXakªûØ‘øVNÈåñ¦•äá½7mo‚-—”™Ká:ÎFv›d‰EÞ§XCô§yMˆåÇå`¸+ ÎÏL…Vƒßø·{ßõÞ„U¶ÁoàÞq³Þä½åG6¬š€sJÚlØÞ„U~:¯cµøçõk% x±VžÌÔvû&ë×· ^½V2}m[3¼ÀØ,š/KQQ.¡p}i™˜t¬â2Ù{­\$ºò.µ…«{L´ré|k Ÿ\2Ó–/r´²JÒªf¦cêiCü®•¨ºŸ²»Õ§¾áû¼¬’Öû™y|Ý[áyû•rPH­XáiV‚B*·F‚Ÿëh†óæY?o7ðèÛ>5-DS¸OCl…6„™4›)Ñãh'5Ãk¸G5üÖ›õ[¿V:&&ÇÅDHK£ÚÁK£|êïBBCŽÚºŸ˜e £æš"$Qš~a”Wc¥Q×Ѐ*—ZÊ7w‡v²àJÝñ4Iðîût+QqƒT‡:¸UŽ'í Ø/4¤\I"ذør«ŒlŒÉtž˜\O‹œ •érbe2ÈñF[|rkÔ•£°›h$8«Å„¬R§GaŠé“‡îRÙ(ÜšZоÄ~™a'â`•É8×Å¥ íQ-.ÄT>-¡>7ð§O.×ùdè•EeéÊNÃZÇòI 0Ò÷º…a RRÕ†ï‡nÁ®rªíÿS‰ülìÝùbóF7ÉK$­ÁÏnjúgóâ¦`OQTÕ# ¿(=¿(„PÆÐȬ'»‡4±nA€2 Z×ubÄäb.{˜üæxûÑ©-d²1þ&cä;õAÔ{à’N‰ޏ×_ª¶/ú‰§l4YâË<òÑ»û·0BŒñÛ“îúB~ô¤Ÿ·º‹O2û«øéˆðÈ!ióš¡uZvS ¡$t·¾K'e«Z8#„E‚°ÌãìÑ^úÉÓ‚ û¢¯Ó…BæžÙ‰iøÐÞW „PȬ¸ë‡ÎÅ2ÕÒ#{×KêZI›~У7KþÔ“øL¶¢s£èÜ/Vb¯F€’§méÂÂÏëCPäSu|U4ÌiÄ}S‰ žü¸¦#çX÷Ꚏ/ žÓ”x®MukÍGQêÉ™ñû5“£œVø(S^`?òMIbî÷‹{îV¢ƒä,‚&¢‡GmBPäU3cƒŸžª"‡„¿VÒ;^aºVaR£ë_Þx)EŠ”¤3DóÌ;ÀÚ­# Ø² òÏš¶uÞn!”"Iu4›oFD~j¨ÕhçF/Ó-ò##”Œ!ß©J–7J 2)a¤AlH‚ŠßM„G~€·èöë×ÿ q/POª÷;î·»„>7k¥ £!™][e_ûHÉp¼†nîŒþ¯—ɯ¤‘¶`[h-Q4ø>.€#—ØÙEݺ¾5 þ½ª;€#?£QÄnüI4JG¼Oêâ×l”•^ürû›•ÊX)#“Ú–ãr¡ê^>$1OÁ?×_– M¥º—a¦Éz,ú«¼f¾KÜ[¦_I7Â×—Ûû¦»µÐ]’IyÒMá~Hç²m}›8º&öP)ªìµéinÛ^<$ðvÌ%¯%{å‹ó;…J^W ÇÇ›ÐVÌYØ¿Åp¬ûÖÖ´¼qM •<{ŸÊK„«b“yB)año¸{UÔ­«pS “Dòú,y_’ìb^]sB‰ëí›wéÈ&Ÿwü ”ÞþůɵÈo<ÌT´£Øí-…F>샛r£-÷“ç°ä¶y”œº"„.Ûö9)$òc•§–ø4…B~G·~(Ëq7tö¹Õ˜lM5·Š?÷¥0È-a9o<Ëm'£ þˆ KTÚ!ü(}ŽU¢•¿¿=}Ë×éÍÛC%Ñg:6MZ i €$÷ýúGºµ [³Ù"2…AŠ!æ?‡~¤Å×RäÔxmnªuU!Í2ýRäDÝ>„ˆ-´ûËO S$m]ß—µÏ×ËlWaŽ­²ÊÇls¤ÿ¼üˆÜzêgSøÃõÚÏ ¿Ö ýäƒ}ªocyáįõs¥cyõ¼AÕ³¿Ö¦6äƒ~rêâ´tö<2I¦?MÃÕÄoyV¿ “ ¢,!ë!ñô&c‰L’¨Šk%Y·B9Ó¿ÝÂ!k…¢ArÕCzGøÉªb/Bü'’é ¤),2ªÄ²<"‡Þ‚Qí¨%Á"¹¹ÂN"#Øi'þ‰J2Õ´\Kè{T;«MT’Mâ–æö_àýTPIŠôùXçýº¤¥¬ÞÛ)Ú-$RÔ;è¬#™7ãË#’üâö‹¶·-½ýõÑHB Þ£'„!ž·ÒónõG¨xúÍÍLR‰¨£%¤[?Ù;OL\d*‹¦>\K!ÌkC/PªfìVZ“B_"X> ª–æ™äMv™$_ý“Z¡A6XZ1L’7yÈK\Q‹Íîá‹4‘Ü6‘ÖÕ/\WlvÀG\å—ô{J£¢zûæ|,‚1ãÕHõú‘¾|D™’iEbO›"C¦OzÎÎLd2`CAœÚe¯^Ý_Ó¡hAý„¢ƒý{£rì4†¾ Øn%Õ$X^VfGµˆ1½t, ! FB±P3¬Ø>‘G.Úua ¹¶z#‘çh34Š€Ùc[i{’7Iy%˜¤ž`op“È#|†HÊ$ù(3‘%²Î`§œ/^L¡‘Å"`<.ñw!á7ÝAÕý\ÒUgŠ=´­R#QFªâîB#cq,5Â#‡ –!åÈTC2}?‚&²ìYuôצN4ªuÈH¡‘ß®DüGõvù yV*EåHÓa›Å¿Ž ‘]eDë@΢ß~¾˜f€F~¨@ýD…B#gõWðáÅïry›$µ-e÷¿šöÿû÷÷3zÔ5ä˜U‡ª’õk^áVz^ì©ãhQ#Ï®LHtßñX‡•g¦PÈ–2‘kI'9R­[ïÕ<&®ß¬ÔÕj¿ZIouÈèÇ–îgc¸¸Ò°mJœÓ—MrLaOsUïVH0F…£ý¢ÍÂÃUãðPÄ{`(ê ¤ÍžÍ€¤0j)#]û£ÝAAŽ©9ä ôú 5œŸA6á!YD?í8RõÅ®|¶g$õÁö[–^!5©<ì)^Q‚@vÈ®:+SÍîuÕ)²&Á°•aÕt$«¯Ž„@F’’“ÒŸ³÷kþ÷•:ä9DˆÒnT/‘Iïê´ø N¨äǽa¸6N’ÃrO©ŸPI_ 7<¦}Í–I]øã˜’ΪêoNK®ì˜·vP×_*“º תïÞ{¡ÖV‰\‡¨1‰ØçEÌpY·Æ?uÌߺ»Þm™ÔF†XÈá÷œ.†•üv H,¸+Ë‘¾í„° ‡ !@ð?SådZŠm9B#éÙ5r[H,–O†è`‘²ÇJÒ—fkÕÖ¥]Hdld·ñ»žµ«~ËùøžÿúÜRÄqø Ãz”÷Fe‚ÛyÀñôLwWbA—.D2ÐFG=I¾$qxêOǽ•äúL}n™’YLï²Ó…Ivuˆ,º‚ FØ)P"‰l Cd|g™:Mä‚\Eh©–{¼Ø·…JæÐ·ß—ä “H€åYiä>! ë4ò[gµHY4™CÍûÂÖÁbù„ .l²%Æò©Ÿ-)à3-Y§#Ü4'›û¯¾ì£ƒMÂF‹ÔIÙ‰¾¹-BÜJz¹p=މ_u—ÎÅÞ…M6tmÏ¿¿¡ !¯£Z][Æ%X’±Ò}%Ï5Y™.l²ÍòÇ5=±_-ªÿí=JÛÉ@“¸ôf¦·HéÁ’Û}Od^°$;®T—Þ©á˜áN«ÿê`“[äݺã’ž°X ·£“ÄM°2P¯ë« 4’¡†ð¡Ïßmœ@Ι¶iîh$ÑV›¬ˆ­ï5ÝJlÞj¿;*ò9Âô÷.t2pM?^B ‡âem@»àɦƒ`v±6'ÌÝåÛæNÊ$— IRà #‘»ÜJ¼Ý¼@ö/·í¡[i³’޹tÎêRûòû.(ej"XÀä–EÖhvrÖ…TNÍqSLpÞ1¹ ªìês®3XÝIânU­Y?1“äÕè—mßjV’ÜÑH2Z¨€ª«Õjów;0%WtVŠ*çEŽ{Ǿ•> 2îøáJÚºÉ>ŠÆœ²ÁâêV™Ð)·HeÙ¥àéSÏ©/_{SNƸ5‚4¯¿ìowT’ÇîÒLVüË4h+¡q4‚ÓqÎOŸwÐ œìÁ[p‚¼ùí<¿SvÔ2¸IÔÉô´Øi~ÇÅuJUT§Ž”èøOßYS~ã•q®é…WFL™(]z×´ºw„ÛSvÒ'!̃ž¬éGÂ)S,Šç:–F ÝK :ºÉ¦S®6j #Å"UìIÞ Y%«ô²oŽp´“_ßÿ}Mê ³¨OïMÒQO–É”â?Í™;x%¥€y2Që‹¶pžÙwrwDVšÓúÜtá•1ô^æVÙ< ù^Åu…WÂUz^%DS·›«[iÙ†Îu mqáÑü.¨r“£®F¾Ó ËÜTö­°úA2ã ¢ Â×ð8¸~Š1Aõ_oºÁ•[ûÛ;‡\%Ö‹¹þ­ ÐkèÇ8G÷dØN„X~°ŸBŸFw–ýÔIìbdeJÞñžÅÒï;©“õ8 ‹Õ›L†s¾XIÅw|°Äô~W6“åßJ@ËJîMÕ×>ä)~~hù±’®é‡+!½éÌâ§W·Žðë/{4mzËã-"|,áÍsYßäl9´Uf—ÉYŸªãçöÁ‡« gÀ½ŽÛñl~«ºT•:Ù™0à¾ã7Ý:LO uà {ñì¾»ÄÌaãšfѤbu+3ï¨'‡ÊÝ6Ôñ&<}ZSv E¼ð¥Èi ùmWÀeh~vÔ¼B‡FøÑ°PË®~àñªrÃ;ÂA–Ÿa%0º¶¸;¶Ä­„ªìd| Ö»3B¿6J<MBǪCõ[å5ª>gZB|œÛ?rN¼«\+5ˆ&7Ðn7_ÝÖÇm ›Ü$ÆnœÊðf_Èh‰‡ãQá×*Çê±h90áÂï¦.Õoá)âÐò¬4•¦õÕ4ü.äØB€?£ûß7×J¯S¡dÒ…nAð!Ð2…4ÈB#Ô„OO§('7㳦m ×IŶûÛ³\0|æ¢Ë›•0sÅ:œZª,sYyÇ8Á“XúnâÖç¥w…'xò#àK»7æ÷Äέ$|‡Š0›¬b í×K°,:]V¸«òjÇûζÎ;×-P®bYô#\~¼¬³qMÒ/UÒ«²Y>Ü zôꄆ&]†NعÆ@Ìë7£ù€¾qÌ\ÙæØ0+zå{ˆäVÂûRZ¿±0,_0\ùçÍž¼áâAœhÕ±,j1›8Zõ²Ø8©“É,C"n:„[Iå7H¡JæXâް3Ñx¹µ›èÕž0—wÐ@—Ìâ«úÝha¡ö}DUù§ñ-Æ/ t–®ÔYhÿ`!|¸±ˆÑÖ¶ðuñ\C %øèê¾çÐ(o…› a–K5å"@#©X/­!Àr‹$²å ¼ ÕjU‹´²á3°&N9·?¶A+á,\Õª0†&/–Ù-wm ¤l(²Z:0¦ð,#žƒÞPbüÛæüYÉﳈ)IsiK:‘¶6Ÿ¾èKMq𠽫O °´ã!¼2úáR1ÑÐ Å‹+RM²‘ø÷쯈·¯Þn#¨)»±ÄL-…3fÚYÀ°„K‘©.·OÚ³Xm9Yå£`_¹ð?zqŠ€X"Ì ”¹ÑtþG·Ä¬‘ÌLôè„<ëä²ê^ÙÉ Æ˜Oä‡aY9ƒ´É®ëiÄŒeL× …GÿcZÒ†¶YÐ0üŠŽp+A¥š¬¤awº¦æÝ‡ Ëü#=D˜ëýS†Ë6yL“Ó6.ɺº!–[ü—C^- r«op„W.U¶K§ÿ(2š^ÅèChå ‡›lI¤<ûä„V©£­i|×ôÛ‡ç •½[?I#Ž­›Uw•CÛÑH•g“ÅðòôõNy4ùG”_åÈx§Ž¸•äIÚd~É1ïIix7Í!œ’®mK—w]‘æ7Õƒ¬É“¢ú‘ýõ?œÊìjöõj¶»UÓö?üü”r)Š'±¯5å²hîJY× ‹ú)÷Òî ËY“xßfÿÈ™Òt²[îÃNÙ;ÉÂg‰ú2½UĘlÝøVv•“‡Ûº…ÎÆÉšdÄǶ^`Nú–!œrÉqhI ÝIUݦĎU%Æ…yšÆ7Öäc€RVIX¯¿((…R¾Ziüï•®¯§´,ê=NÜ$šÑ&Íè“ȯ²aÆdT¢­iž&™ÍÛ?nÕ$z'ò ëavK¥¨ÔpÎô‚fULƒœI·F›çzà÷û]I0å#Êù0ÁM·XBæL™•{ðªÉô†¬C(eå.„•K{RzéÑH¹’®”ÀÐÐu…ß&ɘ,ÌZ ‘׈j= †0Ê­gk°ùÕÂ:ò”gì.ÊyüæAShëA#Ìî¾\˜äZƸ–Íh/G¾°`g|Ax8º¤îŽÞœìëi¾C dNôEÃö…WÚ£ÑS~Þè dð¼º;˜jý"žŸÍOµNÆ$é ä0´‰~ZfÑ– Ò*Cw×’àãáKÒ½þ²Rìýf%“¡6âqin·ˆMýß°õÈ>ÙiÛÇTÝ6&$•iç‘IeAKÓ´×&¼îôÄî >I°óãAþuw…»sÒ>Uר’Žz(8–75>¹Û3&­Pg†oLD•[GI+RT5,k¯¿Ü<Á'·x´Ï•ܻоà\ö»›øºVo×_:•šÆíÑí×2…O. ·ž÷&xÀSàäÒp{‹°Umg±r“)drê°ÅG»3I^xZ“}xS¶$•W;ùHˆd¡•¸#ÝJÏ«=d;¨A3ž©8…J¶‰~mž°)0Ý%H*;Û{ ×öL$•…Œø.ÌõY3ž5ÝJ 7ÂOpaÃé1=w6Æ%4Ý!”»Ã Ë^¦pÉXH h'{Mô*Æ)\²sîrì¦TìûXN¡’¥)ëL/6˜x½¢5QA±Î`ßHŒ^bEojZoa6œF êåÁ.yý®öñ“œšJÎÍmA,¶?»ÉØò°IÌXêºÝqÝJz©±xL #²i&uýÜJØ’¢Î¡ñ*^Š}‘RVJï¥ ckó0±y]òhIü¹üý¡YŠËDJY•^óyMÊõzóñc󺘑,õ9uñ©Më©6Í«ˆeØú1F{ñËM )Ch¶dº–E¥'2JÄ*¢`Wx—Íâ?S¨d ºn§sc“ó+1àIFÊe¹1mÎì”d”ŒVgd“öç‘ì:¯[×+âo¾X …ðQ-«™’œay»P²qs©›{.óëðIo÷ÔÞ–Fö .ñ*Vä6JNÛèZ&±<þkÃãs„›ÜÉ«d)D Ádð³?[à|å)iK€dÀ%|B•ï¾V–ã/J’…Ëëñ+Â8#Ù&ï3·R°’Ú‘‚J¿¢ðÊòUÿÉk쉊¿»[©“_8-’mj"Õ¦À­Y Üm»¡,’‘D¼¥ÊöÀ“-·$®4ù±R°ÒþÁJìÞ8©e㛣•ðÞuK˜äuÐKXzš­©:àE€Ýª¼ã‚î"º1Ø}ÛÁô0ù/§NÁ޶Ê](&µ5Õó¼%uíÅK°d rИtcˆm·ïUÏöÍ  CN¹îaZIÈMjÿgש»šeI-”’ì¸Ù ¸Õw[ D’ÕŠ Ÿ|6K•]B$HŠE÷³äýBZÍüªû›KÒkÔ$¹è¾íZ‚$?‡‰yF¥j»ü0qI~•[7[†"Æ’á-F– ÉEÔìQ¦%‡w„XB$á8ßÿè™oñrW¿y üj"zæGAM‹àI §ä»:mËm]$OŠ’2¥Ÿ¸ zŸÐ…Hr¡ÜX(7§çzñ¤U•¨+Ò¶b¼q]ݲɞYnÊg#¶Øþ„ŽT¸Ž‡`ÍÉœ @ò›¤¸¢£N¯$\$ñm‡Ó ´eKo\H$I½Ž¢1:¾µÛ[©“]~V±H³jWKß–,àÈΖMìPíüü>Pu Žìø”uŒÊÆ×„(ž ·ÒÔJ"&þ‹&§=ÛÃd ­$± èíÔ»u;D\ÇÕUôÆÚ±ËèÚŠÆ´Þ§ 8rê\«S”­:´ÞY¦n%ÍI&jû‰Úþg+=o·Ø›ÚèYK€d/îô‚×0Ðh–²·„IЬQeLSl7›¦¸„Gê8S/2T„nÍ—°HÕêý<›þƒk™<(ÿ‚¡GƒªñâMÙ‹„ˆ#T: 8HÓB.¼\aýSòÍŽái³Ú¸%2aû„ì’it& ‚ì’ t½<½°Š=ÈA‚÷òp¢S}Z,{ááªÊ„v1¤_Ë2ÆY“ï¯l8°ÿ+¡YH"G²’ªØ6Hâ*¾ÆÄõ#¯X_| Cwr±[‰®1é‘ ¥º˜Hkس0qJciä:ŸJ¦yàh €¬)×—¬ª‰¡å£Ö kTuuõš| 𢪯gNÖ$±EEC-šg¬ð…,âÈóÛ¡Õ~~…xž½[ ³ýs«“í["‚U}ÑGÖä:ñð89CBMÏø\ƒw\þvyCë$ùÊO0äw+1¸×_v—9ÅÔžµ™³ÝanõŽ 4Wg¢Õ¬É"hR졉ɦõSí% rPˆ‚ûÅ !¶Ù–pÈ^E¼þ8RµÅj¹KHäi ¹Ò µ–È©õ)‹´‘âÍá+µy&~j­ «i¡º¸…¯A…Cø~ •"kXâЄ<'¤¸LýV6_ñãÝŠ©ôÃ`»«  0$Û6>©óȬ,G{ „lA·‰×ý”Á›™¨@ÈÛº~Ä•E.+sÛœè‰$ö”Ÿa¯‹…Bž{Ëš§Ô}>ØÂ»uª™i“©èl›Û?oáW÷ÉŒ†Ž¶ ö‰nñŒ% òä&`(ý“Ø„%$’<§ÔÓÎ}·O™_‹šD•öõ¯NÂWbEÑK8äÔ{¤Iåh¤¥z/Á¡yÑG¬ÄË^þ· ™…Lß.«ôÑIߘ~„…8’€ð?±éaºEÔägÿ©ö€YËOúBÖ¡^­XCˆH~*‚c+K-„Óµĺº¯ Bމ·Úçîpȵë:Ž­›½<7ÌLæ¶Ìˆ%2ÉvçÝæ+™Û#"H#? V‚kÊsMö?H¤ÞðÜ &>¥fƒDÖcBPδŽoÅöÈ$2(nŽhwÈÑ0†¥´ìƒDÂBïà"0‘_œëVí!ô0^”ÛÎj¶pÈhˆa$]¯¥û~7ÂHxè2G‰)eL‹ømPÈ É%wþ²–øº7ÿhïe(ÆÈó.acy-ÛÖDbQõ~g¥»™Vñ³ÉšìXð‰­]ZDkcÛZ‚.PжE—Û÷yd9óèã qDÛMlä‘OLQl'C2;ÝÚ Ï*ª%fg·'m!µâZAŽqY‹ñâIóf _©`õµ ÍLOgÝ Xí&þH÷Ðá}ȶPÈÚ0}i˜¾Ps_³ÚÏ»ó„hŠh×+á¿\Á„Äô¤¶ßnÁ ·¨VsèÆéd²¶†¥Çm0ÈɸlŠ»(rÖ´NÙYäTAyVjKüØvä²IšœÂ³‹®‘äætZ¸…B&Á® Ù®ïÍ8Ù6a“AXxräùT,ð· œõ}Ö¼ ˜îw«Þ#Ÿê_¯e×Ü~@i˜žŠ°FÖ)*a6Ý;yñÓk¿6 I•<¥.NËòxÄ™r‚ÜÄG\Üls²±líƒÃž}Ÿ&þi6‰l«" ®4pYý[)H2«4 =EÙèÜÝð)EH’ä ûÿÉi¿ïÎ:ÀnA’ÁÀ4fPð¥+ Þ’ÔJ×_»$釸ûÖc“ MN(™ß+ÿ€#Yå¤Å¿XåðGôÑräëUE6Ê­J^jPÿšKo È˜SÄ‹x‚4½Ó6Ý[PdÛÚm£5í¶K|–Y­Âf Žlõ# F_í–ËÚ\v.¹‘H†Ú®#³k@\Íc\[dÝ¢Uš¥CH¿“ÜJj*»¬ßZ—÷[몺Z±ÒŸÉ u!äžA´M>ÿêßoAÿx ì¾iëÇ5¡nýIÓ&fòVÜ÷Mž¶'n$’Ø#ÔÐÝÕÐ@p…»6er榮éú Z²ÿZPJâßô$ù}}w?øíTFà)E cØa÷îÔ&¶ƒøúÙ-dŸ´IÕpµ¿óÝÅ‹ï r0ÌeVõ JÉP(ïõÏ ¦YýÖ¨„¢ï·J¹×|àÍ>Q“JohK¦ ³66Lk“¸A)Å]d©¶0”¾H)p¡ÂµM‚=ß,£—»é+i T#ÎhÙߘöo§vÌ–P¸{ÇýJRÝɲ€}{}1œç½Öú->³¥)l“±mèdsQ/;ÞÀ“šO-Ä2êþöß “”[Ì8Æ×_ö!0IàZ¥Æü}úé’øÒÕ qkÊH²NKþÝB'[Áÿ)Hrd´|[渕0ÜÆ%3±\È3 ôOˆr-zSH€‡Ú/VÂIJ жÉÝ–öÿY-±}ƒRâüðoÛ?âÏ~­d·6Á”ß­4+öf/ÎnÁ”¢„¿·tng÷3l[q#ªý¸Ò(à.[ åÔg;Uãn©6¶ïmPÿ(õ‰ø³‘ä(tÛ%ßÚM¾w+©“lº $Ó9ÉtÞ'{ ž¬DK֮߬v¥zwï%±O´¤~³<¡õC^;ÓS¤7¶­GÙPÕ½ÉòÄ‚-ˆ²â·[ÑÔªžtú,™T26Ð1¥¹›íÅ[@5r2Å t¦7ÓŸn8¸½{Ñàojw¢%ÊKDI ‰çŽçp+é/8“Ô30—SÆx±UV Êj%®jˆ¿Â×~$%IPñ¥ì>¹~ ª<Ðp?1ngjZý>)¨ró&b‘çêÓj·pÊà‚‚‘é(`§Þâl.äÓ|ƒäå¶>y W¼»GC<•“ÓJŒNÙhßpLJüÒ¼àÉ ¹‡“i”8ɰÕQƒF98å‡ÒALœ¢mMÜF§œzâuc½ù‘1ë6ÌQ„T.œ“ñÌÔëûÅͱ‡ËW®á ݰ…öÎk£ªlC`ã=›…NFTù9]‚Øšä¶p…îãý5Ë;þ šuÀ<››5 ‚É¿zU{Ø{“d²⻞ÐÕÓQ;F9‚É·@¯ø øQUç”ë-j¼O¢t'›º©ÿûš ö¾º¦S§èc¶V¡­U 3dÙù쾈'5ãYÓ­¤:¥cŸA´ó³úÛ•½“€;Ž»¬Þ‚ì®’¿Vd ¢7u×â"Ú å'æìW .©iÃ*:üZ\›ò„í|}ÀÇÏMã’£»rn@KœïŸ¤ïÆêñln%µ˜¡v.ªŠÕ¨“šÞ?p@˘g{ªÿéîòÏ•Îõ£•T¦ !à×V¢Æ0ñ¼Ž™9 “Ÿ-‹Ê9lpE e6TÆD3?W÷ªe¥±£ ¯(Ã[gÊä4#£4ùÆ‚!Ïû•Q‚ÊŸN:Ù9œÍ1ÏFAIYáAÕ3Ú'»ðÅÝ ¸ì:Ë»JÌ3¯ð‡¦@Ë®¼ ØØuêéQ„X÷eVuy_ ×÷Ž"´rè ™Cae«©ÐYË!+S´µ!­â 2æxñŒŸ·z e^™×qη_™ J^,†–ðåŽø6аÊÞ¡«tM;Æ:n·ÎÍqá•þ{…ý˜d• ×UŒ"¸ž’W9ö‹eô*«ïYÖ2Ö¢þZFﲬ¡Ä»/0r­£—ùÏ/koÂ_ŽÜwh&e™3û>ëØ#Hev0½œ*KN·ÃÉ‚®• þíâ9*×J½a¢€Ø€W+QkCUdK¼mÎõ.žÓâêšÆ BvÖr×JXÓN5W‰i½—¯•Tˆ,a/ÙÕq%VðÙýÛ$„òùWõùWÏVM¶HqàËõ_ Y «¦ íÄ6áf‡¸• Ê`0°rÆ1}5*„²!o]3ÁÖµR¦“­Œ"„ró&|>v:ÔìZHÌn¸Ï™òrȤ´$œQPfò¤¼e®¿p=pñQÀ(1†Ö€y‘œ¾,Ö9 F®ø96üNsˆy«­ÝJ4“¸»ªÒ©DÂêùŸiÖ¯•Èb>ÙÀYÌÍ·€‚)õRJÝ Hå&£ Ô*ùW;Nx­Â[`ah"Ñ8Àf¦_+©Ñd© Á¥p…?øN—”F=©ÂvEàdBÂgÆý¯I‹}}pqíàn k*â;®¶Á¯¤Rd«]¼ˆkêDZËa£LF€Ä‹“ʦytÓòQ°ríð?·^sfF>™x8ϪùÈ*pfª£`^+Áü0ÓÙiÔÞ\Óÿœqã˜fåj÷p÷i­À–˜|uAæQo‘)‰‹w˜…ßÄSœ\Ÿe°ðî죹ô–QN~çäxn’–[I/7í•~üŽèýÅZ´Œ”Z< )ø¦Ÿº…ôbÁ—¯½  Nß8PNÑ€*J¬Š+¬êé>=Ÿ•$Ÿ®¤ÁülÞ@¹u¦ÕÍ™vB‡ß'( _û:ûÑ+I´ä îN¥Öóìî»s!u£œxɳ’6¥Š`½ZÁúÕÏãÀ£ §,ÓfHG½~Ùž»•ž÷; ÞÙ…°“ BÎkâZI÷ÀÆmˆ†ßpiÃùï]+iò—D‚ÂÜ’˜âô[ZÊÔ;Þ²ÜTæö_‹Ê¿{—ÜYón%•&)Äìú+¹;軯nqtÅ÷¼'Ì œßý›‰–2Õ >1¿*@(¦ËÆ^_+i¸ +@€Ò²w>Ù–è.“YÝ*•;³“‰zðIºxÁ Kquç0ªðÉ„ÐÑ!˜Í*¶Š'**|òÜÝc§×¸ÏxîÓ­ô¼ß‚“ª¬ ÐPù±o="J~3 K„µ´e1©J¶d…5y\Ø+ããéF¯•`—œ,‡EõÖk:B訙ĉ»JM úÛàÀ­Ÿ­iHŽY»Vª6‚oTD” Æób¥Å<Áæ9>¹¤¿]ÓÇ\‡\XȼbåšÇ]rŸ»ƒòêÌÆž„Ôÿýœ„ZÛ²QA&@YˆôZ?b/VÒæÝåðкVšE9ÓÓ—ƒUÈdSÉœ“ÐÄlvÛŸTpI\0(«¶Û°ÂüQ…J¶­ 7‡ö€^d74|ƒZ…JöШd }½kh¥µœeù¨‚%‰+·[úPFõ ¨¤Ž·X4Ígêl«%? ÕV@RòO@’-ÁÜ'ä¢eXG É h/ömb&¬ÛШ‚#ŸõµO"È=G€ÿþïõQck€»4x‰7?¾†€š•nýö[`ç— C¿}h*ðËãWéVÒ{­AÐÐdz5Š-Á:ª€È('ùÓ‚guv3£¢ œœnsÐPÐæZ3QQP~M4î•„þe“î©wËq©ñÍ®-+…çL‰çLq+©äžöOй5y™Û2Sª0ÉOC%éT|’æY PR[[ÇŽ³ãÇ9Û‹—@Û6}×íuË‹›[¿ßÜ“÷Ñp{úZÉÿtÇwjñ˜ðAÑKðæ1!¦¤?mô§mžh0çËñ$%Þ|$kãH ‘,G~1e•ãijæ¯kQŽæ‹Ê#¦d¥z¼+:ÃE æU¡”QeÏ'ÖmkL9lpѨäMb„ò•ôv×Ä(Z=ƨ'nRßo£êj|¿™vš[…T>ðÈ žÊ2® ò_@&•¸IXÔ™´9Á+ž7« •US¸@ûbFõ¯8He…7W1¯® çÍ6ºµóŠÓYôÆy &î¦ç¸•ÐÁ#¨Wÿµ%…nÖzfTá”hïë­ÖðŒÊ;§#JæäÀ€´•å\ÙËׯ†‘n#O9­ Ù¨à”Mñ™Tºƒ‘W÷% ™“mRÇu†0ùü@¯Tb‡Óе"ßÈe­LGPÙŠôTs jK±ûWúÑÉ*¥‚J§CÆW+!¦<4ª¿³À,Îw`T,_+ƒÏŠ…±:=|Ç‹ òÅÁ¹&¯8¨ƒQ'S~Oa…õ£ ®$0˜¼à®ýÛZ>*¸rëùl=žó>v¿“«Ü,dÑYÙ‰@/FB+ÿ fÜØj‹xU'ænÑ‚öû@ÎQUr5±rÌ`†cé`•¼I¢FUwoµo>itT`ÊPÙ‡OäÄýšT»•P* Yo‰E¨7ézÁ”|ªj”ãÐJüKe]ÂÍꢡ<¹…ÍyX*ˆ²Ò˜Ú‘öiTrñÝJ IJbÒ +5~äò÷)rѬò¯ZlC«¼x‘x±ÙUÞÖ*0 VK⨕ѩ"ŽrbRJúÓ_@åVÅ͘{“Y– RT&ysWi‹Ó/Þ³é‡ •àA¹ñÖ$·~†Pãôš*nØx42P¬yѨ •GI­¯ ìtYϹQ…S>Ö)7à­ Jãg{qot”ê%^ÏW}"Ô̳xªpÊõ¶Ô°œj/ $á”|YtM³ÈxìF˜ÌJÂ)[B.¡:X׫•êïw×I ™ Í^­Ôþ\I;ÓD1· BU8å”ÕÁ`±.¾1H©Ã„ NWÙ‹¯ŒPNÿ'K™ºhUËÀ¬‚'?´\0ŒÖ¯ëV:JX¡'ÉBôbŸ£~­¤i öí.Àt¢‹°´*prêL"¸r뛵ÉW£Nâ3·¦÷“ŽmZ×ÁÑNö¡"´­16šÞmùn p’®ýú Ž*Â׿¬G+gL‚R‘©ÛQ*ZËøÑNܤvÛÆÁýÈ‹î•ì ·}¨'ÿ\)°šy³Òøc%|ÇZô³’¿;mÜ0ºCýöt”oŸ“6nôØŸ#.Ý/F\Me;þ7µòă'n­ÒE ÄùX ”fMPÎö¿ï— ÿbìÖjûã˜­©|uw”&º»d·Ì-·O=ûÄK_+ý5‚"=°Ø€(Ñ^µ*£±¡õ{îDD™_L—»‚c€×õÙ]”}1H©Æ«U4¶ª#n.«oÀ”ß[X蘳¾¸ûý]ÁáÓªQ~Û [ݱ›PJ¼Ñ;¹½dÛy5¡”SæÊSoÁÈmè&ÈÂÒjDtǰƒÉÖΈ„…P¼ª9õ¶\×BªK¤ÂÙøÍ¿C@””©v@Ä]i!ó†br+a76e[v›tº•ÔQNlP&^ýSDÜj“ùFL9¸¦9Us¯T)pýå6¼nÁ‹YIî؅Z“ÏÑPLN¬YHÂü¸;Ï2l*?¼Âô”èjµU;0¥ð·ç7¼¯HGÀ›_N0åPE9$é!…fúo “W’CjAƒQTPv?åh‚(—ˆ¯ØÍ=kÿúJlâ˵ý$xXá>Cüx†øn¥çݦìDjŽ[}_  ´÷xÊN(&¯¡©I vË@µþw#’d£'qç×>4¿wÜJõ» Á¥øîmu¯•h*UR\‹mU9cûªBÐä3¸©÷_ÚÃÍîQ‘[‰ÁÉ¢ï’íÔØõô‚þî´‡Œž@µä.;lB(3D ›Ü¶%JÀôDê6¨¾EÆ}Яö/ͼVB™SA«$ª¯Káº}W) ²aôõ$¶Þ|%a} ý“Ë|w_ãV +³jP,M°aûZU~WB)+®5£[Œºaû:DÉk$¸]?¼.«>kÂ+s¨)Ì-eNn‘„o{p·’Þñ!KG7t_ƒ¸áw:l_ƒr©V÷CTl_?®éCÁ„£õ‹•¨S0Ò‘8?¡å—’t­£*EÂÿuöpèýÏ©æñ¢`ùœFõ9´’N(ï`ÒƒA‚râ uÏ(ÖŠ+›0Ë-žÙ8ìþw&¬Ô¯-F'šìתR®V„Œ^ëÛW2?}|;má]“9-E°Y~”Mx¶nó®RÌnëláÏ·;¥­ìŒãÇ/Á-Ä\ä½Zä×ÞªŸz®3úlÑj«Â­_­„ù+ùÔ!’H é=kømå÷&¹í+Õ?®©RÍÕñ“• P5VRõÜg<÷éVâ'¾'ÎJçîüwÌ_ÇyNzâP)¯~ܾ˜‚.?žø‰¼Çn×› ?¹¿÷P÷Ù.S5o/Ý3d·Žj”Æ„ é˜˜¯ðu“ ËÚØR t¨+üç+ðòÚѤúú~Ç ƒÓs…³ëXiSÚè6é3½‹] ®ÄNüYó^IW+©FéÀi˜#´/§»cµ½AÀ˜ìÌ¢ªpòÕMo²À”¸*¨ÀæQ†U2KŒ?kœé®"º7ì D–“Îç¿™l"Kœ;PÊœ°a~1ÛÜJë÷•*1EY!0;sŠ“Ty,D òAËpß§Y ‘åçŒOGù ž“=Ê‘%JŠ %燬ÕþvØ¿ê%€ÆÐ…ËÜ|·Lü¶Lªae…K¾·Žuhá…\Ö@ \þå¦Þ\jñ»>!ÅÛZ‡Ë.wΨ‡?vui ×BÏ݇Ø4OWÿÕ˳‡X¨9ꩼŸ—GÝ*~ØxÒB+?ôp´&•d<ã:·E Yy$¦3øœvì¨*»Ð"!¾ † ˇ<[ÿ‘qKûGIZ÷ÝÙò&ŽÕ«¶¢é=ƒð¯ñ·¿¦ç½†»\ÁãÓµ»pÁr#„[NE÷LdƒÉThX){µ:´s«]š˜³Î°äÅ ›’æ- Òc;@,^«°¯g¼ÑžñÆ3è°¯`ù¯|C(§ò!òé#XNU¤Sé‡k{®`É\ ubøÔü©/´òPrõylYþX×ÿ'’R¹è åÚgÔ_+iR’j%[ŠlxüG•ç¯ 1Îù̈Œ“e+ö@Q…•+隢ùƒEerMɧ?àäV‹{ŠÊO_mÜÚ˜—…ÅEå–YgÛ:fÛFgâmÿEåÆ`÷#g¡ûEåB›ÙÔsç1|ìþ‰£¨Ü˜«swÑëøÁ5DGÈWÀ¸-2ÝJˆ†eEÛàã´-lÿÕ5?V:b½‚7û ÷ –¸Š‹0ÙðjùÍ5ýðîD…Õ‹‰Íê„-j'Ëqä”…Š‹¸†ªË\¾tÃøµhï>dá„Òx²p±d@IÖý–Cxe‡±˜à¥Ô”kø†TpåWdw½c–¿ÖY UÛï¹H)‹.¨ñ¬[%äÊÏ$¼TÝêÿëV×>–%ÁRÊ*l°!„iĦ·j‰”^9‰&Å×îúë˜"øß±°Ä"22ÀÎ,|¯V9°~t}›¢¤ÙÉd«<äõ~­÷äõRÙeŠÖÁ¼É6õÄ!˜3c²‰·~Ñ¢ìšju(âϬf1®@=©Q uWÙ})lò\L²ŠÆ˺…€É{’Õ#ÓuˆPÉo:™WËà[ò¼~SF½féÅoc$‡ˆE€cÇ!½¼(py….û\hÀ/„“YÐ" L˜î^ø»&I–D<åÆùdûiŠ€ÈkR$Àvz`;D*é7²°nüàŠž×yIÊQ‹ÎøZà”_Ç …Vûù°‘ooËÛ¡çÆÎN¨¯ý~èníÌMˆ_Àà}bé~í©^ìB!?âÌôøqæ×Jõ_SL`/¸D!òôOOÕžžêuÿr²iúpÕIró­`È'ì½>Ô3XÓ»ôj¥c^¬Ï¤Hé~÷Õ¹•U {áL jØáODpHDÈfŽjÆ¢™A%õBü‡zÍdí~´£QÕa6=ƒ7„?FºúÁs-¾î¶¦þx¦jjÉêwø“[Hû6öΪ„cŸ.ÏÂ`XhU¬&‡xe(øºV˜‡/ûµLàë XDü-|‚×òµ ¾® žªIÆXêЗ7M ¡[d-+ÆÑùf}˜F ›df,ÐÓ“Þ¥ˆŸ` yŒà@Æ)·­ÒR¨c/Êô« ‹¢ù ës+齦UÄÙ™æ%¬ö> œüLž=¦Ü¡­ßŽfSãG®Gl•Z²‡S#6œä¨ÀÚõ‡Z6kmú*As蕾Ó[Ý:Œ®ÿ·¦8lVôHAÑ^^äLôâàO Æ†T&EÍR­…C jˆÛÆÐ2¡ÜÏôOIPcÖÀF‚9C¾YmDY5nä¸8Œ%‰ÃJ[²%ZÉ¢Ÿ®‘÷[â÷ör‰ŸëRÞè»ÖþùŠ]ûz·½y^ ql9aQréXS'û4¹„©ÔÕyNõ<'w²%~®C›LHázŸþ}B,™œer¢Ú¦çi%bÉÁ¾ÝEŸâ³õi):)𱡗zîóõÆYÉ^“ðÇOÂ5)¡!bú Âu‚?îÍÑýyEŸXý^‰d²…ÂizW~íØ5Ì5©&9S{A‡˜>¶%0¤ðÇLÌj«IòYn·’F# ¶å'dо߇̦\ÕŠ¤ÀG¼ÏæRnøÈÃò8Å!_x±–ãaG¡)챉-øø|Ø'7;òÉ“.)‹áJ¼Ïõ—xuçOL]7L[c„ºƒ×ÚNÂ3x­õV/Ì%‚ÙbI¿)ø‘§Ô[4Uÿáã´Gךg!‘—BçÛUvû•T—$‡7>F6v žBБ–þðÑ¢T%Úf±ðY|©aÍNSÀc=T-‘EÝrƒËÁ±äÖiôŒãï'Mƒþ%x¬§7a/ó ð'ºUF-˜4ï{œãŒ4ÕhkG[)J¡ŽLýl“·ÚRjSãû-½Ô×_*FÒ÷5BOà1Å1¾V#™ )¼ŒG¹éE°Æ«=æœ$Xcû•ªâ8ïðx·ÛõI—Þ¬ôƒtéü°oo”â:šZ›üõKº•ÐË%£öc­ ÂðS–޸ħB9xǶ àD9a‹O5Iuª!yáJØ·Nìé¦,@+(Ͻ¦[ ÷ÍêêD³É5Í_m?Ó˜þÁ6¢ÝÿÍ{)Ì3ÿÇïfþ)¼ñ“»¦£ˆ©Ÿ>xo«a»þÛ`©ÀjËÿúضâÚЖ¦>‰VóZ¶$ará·ðCw¯éVÒ†]ôD¨ÜZið“0ù]°_ÕÝå²3Äðø¯•`ehÝÿvƒ! a²f+Üíöóv+‘èÄ©-Ä”øÐÂÙ˜Œ·¿E;‡[·Û9E8™2^ƒ>Û~³¨"‹ÚìV”âžhEÒëWR d#e¬•ÅJØöv›“· %CéH9.İsÿ<ªH¸Yß­”¾°yý{mI©“òÚhôœºU$é°\Óõ—Š­eYyT‘ÞÝY©/¿ŸUä œ>AÊb°¼Ziòœ€‰½ÁK ½Ý]¢‹¤–lŒ#2¥8èÃêuS˜dc¸ý¬ÙþùH¾ïÍJ“$®"ÄÏEûf”»•ôŽ\3?¿;t'¾Ê“¬“nNMζÜÑ&y¸£‘ðjR>¥‘Vd™n®‹÷‰ïްði-¼L2éàÛÜÿ^+Ù·€ÜÉ©9IEÝþ$PÞsËõKa’]Çx— ÇËXLNB'iO*»ò¸ÓƒÉy€I7dP3»«yÐE°$•…ÎÄ}ÕOÚIv•]íA"Cöz‘‘Ôñ»8åé‘A’Ä)§Öw†òûu޹ÀñKÓ‡>@1’½³RCô퉉“«‚ºžQ×<ªû)RHRb1!AÛ/nK/tA7~ I+ ï˜B#kÁa¡Ð‡#O…ëB$SÐo¯túVÃCvàHNѺÆHݲ~ºÐÈOìG_X…©u£@n%mÕ()‘ Ÿ˜eœw²%™²ŒÇ\{§D¸…ئ“Bó±H½D1mÙËy£A¢Ò¦—z kdÑA$‡ ˆDœ1޹F³Ó¿~I°(ˆµiPÓYtĉ­Q&å‘$G÷³3+!~Lˆ*iMäÞt± ‘8oP1¬‰T']²Š¶E$•^ŒÙA#ëqÞglW‚#ß–!tÉoŒé®¿4¸ñ†‹½ž[{?V¢'÷ôEZiùÝÝ='K<÷éVÒ®]1_Xk´JÑn…´½ò~‹¾~TïÜÔg%ÛÜt¤œ‘wø‡Þ‚öþ9 l„d“ 龄접ºEל<¡ÿÝáÚn%L.à3È) ¡{u·Rü~M•¹¨è¼Z‰a Žƒpè½ [CöcâJãV0¢¡¼Ÿ—[ éÁ GèSê¹7ÿËÍ?Ÿ·ÀÏÕ½}JzûAµŸá<—fÛˆŽ&2EqªØA×Ô…sô8;8+‘ÉJ5m¥Ü&S€šOÕ¡“®úàòŽkg>Íxúùá^Ä”u¢&;°–ÙSmò=ht iÇ8Θ³ë‚ìH±ƒJUÉIœ/Ø[]Àä‰é Ë‘hø­M$#.}"ÄýnÙ^®ø“ö»*™¦áè("Ig]nÇ3Nê‘åÊva”Ú’4µÑ̦Z“Ä<¹°žáGË®W2_´'ICIH—LhÑÛ~°I‘Ò2ÐU"½à/ƒg³î­UD¹FÉ5—TÃ+-i§ãÞú­¿–Æ+­ûrïíÿ‘vnI–âJ³žÊR„n{þÓ:$‰¢+³ËYý¿¥Y[E ˆPøí—Jøk‰0ÓbMèäÖ\m dÙ*’C´a?m¸·îôÔ]©0àxqôB ]¢nºDW@vë¸Ù„NfW&;⯥¶d?SØŠHݧʃY™s¼Pi6Â%©ÔùÀO–¿:žq2¦¸ã•;Þ§oKúÆ;ˆtÔ%=ß¡R~»._¿Øò£àšìý—®‹ØÓ%$ÿükñØÝ[(e]`°‹ÀZ\2©–VÚ„UÞTÛ«‰—g”­û·¤·Vùè¿4B«‡xXW'æ*©C©rG»Cx.´Z»o ¿û"œÜ.÷Ö{è`1‹ŸUTîK+ä(=ó|¥mpyü/M›xa©6,Ý1ô/^:€Ê&iHÅÂ5s±Íù- rì±1¸RjuÌI«ÖžVi*påaº:@ñ4à]v‹iúJM ˜2(Ž¡ùàì/®-ÿíÚ–¾s¯.M6Ró.–&9/rB“‚LõË¢çi'×þHÐSpk(ÅÊšàÉm ñËœ²«roB'ï9~¹ôV<‹jrfñ( Q“Ü!uÛCaägÕˆ&+³êÎÔÓB!hr¯Hj—CúÔQüŒRVtñIëV­¨mÁ¤¦.™kÝ*¾ÃÏÝLbŽT90ÈI4ÿyD0Šºþÿ÷Oj§’âFÒde²ŒÌ9*‰Õo*mÒ«>j¿ŒÒ§ú5D“: ‡ÁÖâØ7¿#›T¦:¸R4{˜è[2©¤Ö/§§ÍðèH&AòÄ+#L ¦%It!”©ÙÆ)•ã¬öCÖ…Pîn¼ï™×]ðd;Ø‚\WãúÑ\¥þçMæ!œâ$½º=zœ75C*À‘–¾Û…M¦^ú$Š@/j³^.ù—*³Zµ~'RRÀÛTàºÍR$Žf‡]˜dй½Évˆ-›6v’ ­Ëj”áЈª•ìDe?»ýòt!’Ù1ú;ô-PÒGXD² ‘Ì®'(»Þ°»æUÉ;úÈݶ†è¶Ç–L‹!uô‘ ³¸¦Í£6í/ ž;úȇU´öèÚ4d^üßÑGþj:Mì–'wIID²²©å—VÈU‚ü÷Úc# QûL‹×tô‘ä?bî>ÿwÉ„“Ôà¦Àº/à î:þ¬‡P÷{uÿXÓL‹Kw0ÉFŒL_ !¢Öp£ “ŒÆè`nrîñâêàJ=âà¸O•ßîðÏ“#]Þ&÷5ÕûšÞßqÌø*f2HÂÇwa’GÜM½–þ$‰˜´A*!žÖNÉ»àHŒÌš4E IªeívÐHìÙJð`ÖÞ»ß*GÆ7ÿøêøšîOS^ýö T }¢k$rþe·J”’‰Iï¶‚XÂÈÎg·JÄ’¿P¯®•|ß'/ÛîKê|•»K‚ý;í±¨mIÿ£Î&Ok¶ÒH¦ØíÉØp›‰XT£ Œ °àjT4§jMÒ:2Ƀ“6 ÿK?üƆR±œLÕƒ@YïþÓEî*I¤ƒ½?‡\t„’GçÂØ‰*±«DîÉŽ-Mj"K;?Œ-8ÚsïØÚfÿbßF‰C6ïÛäñò\r…ôPã?‘“ÎŽF~XAYY\²¦í¨4ÝíÒü&²¥’Œû[ÆJÃol‚#C…náë |å…亃Fn32VH$ÍfÊv”’¸*—Å §çZüûRò¯é–Wv¦«Ä´î!êØK'Mr­}uùóêüž½±HtIP“ B†?.EÁÕé±<ÿÒy2ýY¦ô6}b$L!÷ç_öíÝXä΂Õqixw«˜ì`‘_Æ>š× «ÑÁ"ÿzŸ.ìÆUR_ÂRƒ¿ÛÇý{å¯ š+íŸfÇ"\Ìê§ ˆ%[áÌU8Êu«6‹÷tä’XÜާ7 öΉR´LMgø±ü‡@0äÄs3ô±lU;S«~Ò&c’G"FûþU!Ô ì•È‚Ôôð·¾Ý[7ŸäˆãrX”¦ãÞúåîÕÕ{%÷™ÄRܺ@ȘµÄŽÞ•WÒ‹ÀÜ.²pu%yua¦çƒwáÏïeðå ¾¼öíÂ![J–ÖRÑ»}hÆyÞ0Ÿà¸B#@yUšX—oN¦DIv8®ß’°ï“)•¬qB'J’¬úóßÿ¨T¼éŸt(›x©æ»ƒ©‚•9v!‘¥k|žÀ÷¹{OìóD–ä.hàšö‚åÚ±p…l±£i+FäQý4XPdÕ«¼·éíu´(I"ßÕâï¼"ì>é¿yšŒi¤fúÊI¦8…©`i{nfi@(É®/T✔]²—þâÄC”äPürY¢ß•EtöòÓS¢$ÇæÍc ½4¦(Þ̹%¹$¿ýÏkÒ^Eá*U®’Ò4¯ ëB'%TŒC"å;Êþš¿ù£ó℉ó%ÖÙç_ Šþ€v²Š4{‡Í?á…J~MêR s¶ëáL òæ°bî¾í\…ç¿¥|¼;T6‰L!5ŽmèëIÜåºîöܽŽ` “}ÒÈk²Döv+öl1¶„r¿$—äM»4P–ÛSh-Ëvs³Ÿðqì&•èãan]§1W Ÿ)2ò(wbÝuêµRÓA†ä¯kùÁšôpWAøãИzàŸ7›m+† ÊÛÇýjæIn$7+{‚++.sµ! imWrÛ÷±¤­¨„ê6¨d[ç!Èò±¦íW˜¨½¸:Œ]½Oò¿yUéÇ …\š ˜æÊðs]êqnãÊï.@^ÛÏ5øÍ8í¬Æfb5«£îíû—M—˜,Ïáà•3Κ>0ã[A‰Õ(ø:‡Ç°1~¼rWW¸º²ï“ý¤àéZ ‚®AWTGµ}×^IÐ1dÇÿªXmÈXI™HôªÏ¸/¤­Wx/ÈÍÛaõïCHe=h¹XÙ9Þ…e¨¬]¯mr’o«<ì8ol°RÏvÛy>ƒ ÃΪ®®–sAïXÎ ;¬øºrum¨Ç‡Xœ¯®®ýru«Ó(ö°ÈÎ`Ùµ™tÝïs{¼ï÷åüìê`ˆÉPÝ^³ªÍÊ ,kÊ!§ˆó/I^{;V7î" Ýà=™Þq~³ÜéGw Ïõ¦ÌÏ,h=[&L×ò’ ¿Y“voËY¶@Á~Xd¶,]L¡Òiã;PJQ äRÏeá¹|žu}g‚ˆ×ò–~ÐTÎÃ7ß½j°Û–ìô{Ù1àv|6€.~¡eã3KUH)·Iˆó¯öÁmZ?*-Rשë/*áôzèsc{{¡,và1€/Ç`MdʯÁC`)Gø2>tŒ½Rxv«8[M‰;te}y£û– ü’(¥‡ØAóî›\¡—±C:Ñ µqZ…à [²a^ÑD<÷¶*ôrj,Ð!ƒ_´ðdK.ÌÔ8Vœ >=ä4@/I…¬"uª‰ Ÿæ=¶ßë¡Ê)îоëÐËí¹=h1Cy1Œ —C¦1u(Â.§æ/ÄôrH›¿%FAwzUõ@I‰Ò¤ï£¥pKÍ/ïi߉iv04°z ±)kàâœWOÍX½&²À„RÑtuµY¯ÀÕëcMÁÕ.ûbƒÕ룒¶·ŠÿÔ«Jz°¿íc¯«#^ú¡û:]%ºo¹ÎÔ.\gÙ—ÿ˜`õúDÔ¹ã:ËÏæÏM((·=ãP¯;“½k  üõ)({Mö¥ÛÈ¥^:M<‚¯‰Ÿœ€ZŠrZD9ÝSU –ºÙ5y``{Xòâ±,Òß*ȯ;ý½}_ݲoo@,±Ä/84æ¡ÑbóèɱÄê1Q*GÒNxiðfy݉»¦Aò`ñça–eö}”×–‰WV³|dÆèËÐðEf̲Dÿ†‡1urXGÌ1Ù¼™ÂãóS+]aÝÕ"JdtD…yÚü1¸rA¦X›½Dþ\³Ê¬!¸2C#ª¶“^Ó;€+9/•?ÆØ¬ùüì±Ó'ÅcM€¸<Äͺ$ ®’z £ tϲ_¹¥KQ¡ÁsDõWEO¢)«œ&²ŠØÑ§¥ùŒ^—‚LÊweÁoþÓ# x½â8T&ài*œù|iýÕ-*1èÀ8òYÉ=ÛSPe«Ü÷©åxŸ¦ÐÊ2Õ”9´dpz³ó)¼2 ¡èETš>Ic¯v$<±|-ɦ¤YÀÛôuu>¢i ¯üÍÅèþ¹ÆÔv”7Á+C¤ºØ¹¡ÛÅ|ÙóÛDW™d>tY+žÿ¾}PIÏx¥›¨’SŸi´T­ýÄöu»Ïa?wþ%Yï‡4…WjØg¾öQæÛ×ݤÄn$^>,/z‚WÎä½Û‰CN³"´ ^9|M„ì«ÛïåÄúUPs!§yÇPúd„I %+ŠÎŽÉ6=ýa ®¬s0d†PÕ±µ}Sé~Âu‚ß3‘ü®¯«"{y«-Á°Q”ÖÍBzS`åÐàe®?tUÝ›ÐN _ AlsÊ}ì²r3•WN‘¡ ¼žDÏÚªæO¡•\†aKÑzoî Ê¡Ü€±r4e›2Tb`ö—“úáµ?Œ£9¦ [T¹MUE8-ƒù°óÛ‰Ñë³’&Á^Å[>Ï-ªÜv¸@L˰óÛ)œr¨zÕ¼tDy? š½VÞüTÂV‹Æ¤Ì¦æ†* W úŽP@eéšTö6 ›7kBfÙÛÛt¥?9Wg×PYDïj]@eëà^Þ²i ¨t:彿y¶)^ÀÀ[Ó×i¦ÊŸ‡¥Zx”CØâÐÙmé½_~ëG\Yp°-B•‹®ó/»Ñ £ÌЂZܺLQúaItWŒ– â- ¼:‹O<^9êÜþ‘áÿDªó_²_'ÂÊ‚µªè~ª±S(‰×Æyú&æÅ+Þ|@“:IÐÖÎýšœšdfƒµNÅZg,&Ù)”ú\ß5¯^[€Ù«JšNµ15álvÅ#Ì_ ILz>¨çN¡T¥ ÁŠ cξ|ÿ¿Í]a^4½mµÕ½&û`îJ¨Ù³’ÞÛÚýšH¡ÜÏÓ®?¸útʼn½k;öš:••üšÀpÔ"'§åVõŒ·j݃æ/²Ê!AìCÂèE~S%£ÑÔ:ˆy¯Öin|fÁöY!`%š‡6@I"Ù‚¸Ç-?BS¹à¾’’vW[ â”ÔÕµ'“âÆaa¼‰Ïkªoo¨†ªáávæâÞ=&Ͽ؜üŸ4ÊdsÚŸ¸!ò2\r•PÆ+°á¦ä]•ÚîíFH‰GN>!{Œð÷s«*‰Y›—Ï÷ð^•·jåëÌu:;ß}ì¼oÏÄñõ›¥ôý ×°»D°¬øp>T•Skâ æÌ5âE¥E%A±‹À†ƒ˜OX\+—~ºÆœ²U¨ÔÅ-,a•K'®¥I×ÒÈlz#™% ré¼µºzº»ß™–`Ê¥ãÍÚƒ q^ò° ÊBTYµénáB!ÔmÏ´À(®]c3hu§Ûag7K%wˆ—V]wó/ÈÂùŠa`H]LÕèöYX¿êͪéÖ¶¢µÀË"“r|¾¸›zpj!¦|8?ÓQ¤í{<°ð õ8†ë¡n{Y “úŽ„ÄÔ!‚jدÿÚö¯oTEÚÝz ”Ä¥‰Þk|QE‡H òžÓÌÿÃi—ÐÈ!Ç œŠè©<´‘¶Õ^$‡¸KRÕ¥õø1û™wžª‡yðM|ቶ$'ʰÖèÖ^TB?‰oÅLMj.· ­É¾aÛïUÓÃZõM˜¢e%ÔK dTmBÑ4=Ì©ïON;e]À’Þ!y×€ ¦sØÁï˜Ô÷~é|TŽƒŽ,pI$yLþ“7Äòî¸dYTë®g6A¾¶xRö5m—‚w7ªè—pÉ::gHÅC¤â(ÖÌraöz¤¾gPËŽÛ Û™.œÜ·I{—oÁlþŽ#¢´þ×øCœ›¾-нc uÅm §´ïÃk‚¸doëàm}ãmö¼½¡œøü|ß¿*Måé”iO¤K¸dx›°ÒNq©\%% ÄlS5r¹L$\ Jðׯ îm#*¨½¸4íàMb—l»3FGëS $&têÕ‹‘>Me ”j¢èc[H°ö¹˜j,M5 âl–ºÀ"i" ]D.=|œÊ™ØW%ñº}³A=£p‘?9% ­S;É(¤þc‚t’àSD-¶ì8l&æÚÒI$ôS4 :G¼Yœ™òÜ<• ã%nÆŠ«4YSç>¬©|°&=Ú¼$·Ü´A¿÷mk[¿îJ<áT*/J´“ 4.ÍŸl$•Ö«„~‡Eɶ`kËz±Ò’ ™„‘;u×|7+]$Qb²¸×tÇl½›p.Ü_;4TÊ OùÍÕéï ﺆw7;÷:%Û9÷,ˆù0kœ•Ó­ïsPOJóR馀í°@ò’X½ iÊ@´>,t»Iz¸2q5ìri¥SKäýÿ¿<½½3sWòWà>õyj‹JH§|ÚB;YÔ –`| ·ìüË>Kx¿¢.IØB#Ž YõÌBC¹+ám_`Ë„W½¬mÿ*\ñ¿¶'È(Á:ï–§R=þ÷Æçim%îL!^à#ÒªY–ÚBFÒ+Ü«»Ö¤!þ›5 §dãm…]@0®e9-pÊÇwNãä:EÁ­žš²À)¿-W ÁÕ7ÁVõ˜ùN™ ÅLíM³—7W& ŽfùíŽô={Ñ@ÉC” ˆ2t´<ÿºü\’sä²ò©µ!J‰Õ0×À$b ¾/A” A|O zyaõ·„Pž§P,kìɤ]ÅÂ.Ke×L &ð"0°ÿÃÍòÇÏßÊñùÏ8’=Õ&6ImŠ>/ÛþþdOê×O†)WÅѬ{ÕšL†)Û¹ó/=GéŸ#Â'´à€$ä¼n ›¼ÿÕצ}hwþÅäÞKI ¦¼DèD[Œn‰. dƒ/9…mwÆé¿ÿÀ’UÜÍH™Æ¶®á[ëþû/XZ"ŽS©V«yÛ“&9õšÕÉ(h2˜xñQ&ÉW=ÛNfµ6zKpd° ½v!9°ú)pdAw¨×I0k±ä¯%8²©h2íãdµt´Eü$gåÚ5Ü,—ê#–¯}Góþä˼ª4©ÄÙ³çÏ*‰ÞÊpª&Á­¸OìmæùUC‘$š:ÿë®»2Pÿôeðâ/}=†ýCP$T’¦©d=»Û«Ç±“èÊ Üæ…þÞú^ƒÊ¢[tþûW7)ŠÃÏJ#‹¤ Ayì¬'wGpnü)?_ɦ$…EîéªÎÖ{’þÃ& ²mÿl5}lÛÕ9n'×…ŸØÒظbH‡;¡CHäP¿?ÄùЇœù¬B¢ë*C̺[AôÝËøJõÏJ‘;zT›ÈYÒ¾ ÛÅUýUéôE]ó6s쬄‹ëƒÛþ\“W Ý3´?Ö¤}$·åõ›5u5x iÓ&yΚwC8dÓ«ß0ঌã×Qd%ºª*þ(‹3-œ¾ö²Ÿ¾§zuFïÙ5,N§jGÛÇF?«ÎŸ=¥þï–6xV’aƒ$Öƒ`Í¥#Q,çItÖ¢-½ïv4‰q0œõ{£ðG2}†¾ü4¼øpïl¡¯G¨Ç Ô§ ƒèɆGfì¥êÒ.wuWI6$â²@e™tGË™lŒCÈcW#Ò5œ(;O¿¹ø^âåúK_}\ÅG8äæò_§}‰=2ð£ë:^]tiSIÐ#‘e #ÁVˆ†²ÎãòÈ>ËĈ1O{qjìˆû×@Ã||²=Ó2| Îëü×â›×ËÉ?nO,E„ß7ê{Aöíà˜2T'ëèØæ¿N¿<$‘ø·ÿÖ`KÐ:+ PçøPšNBÎ~Ñ…8îVý±&¾/ZuGˆ:±ìm2mËîÇq8b"sßû«Ç€ýæŽ p¼íȯn;ñÕ‰8Ö³RýYiG¾ºª»Jñ³iÈŸU¥UJ½µrÅ(Åá×ãî8ƒ"¹+Æ]ÑÕ¡É–@;"Ì·¬>—i‚»´¢6;º#œ…æ‹B¯îÑÒ—‡ÄÖ9‰È‡lLJPÇowŒkgÒ!«·¾ö=Á¹õw ¹{Ó-€Èc…ÎV¡³UíqiÝmÇ!äñžÏþc¾ZÄätú³q{, ¹µ¦C­é~.NÚäcæûßæ«(#•:÷IcÍ«¦«¤ Ô±¶)Q‹ìÒÃQ‘Ç!üqH^sö²R u ´§u‡Hz·V´BiÖÙl ;'äƒE„éçQ ¿)&_eä²GBèðsP¾‡.jÖµWc'ÂɺÙqÊÛöÎHô,t?×M¯²2Ú¢kw¸ó8ÅÍŠ©¾­¤µ/€5¡C .CÒ˜ˆƒ»ß³Sm"ôù©ÙhL‡_Ÿu´eKʾ4)‡Z›9œîì¬s?ω=r"c¾Ã‹¯9´CŒGôXñŸª¨üêvjÈ*8¶.¦5Äø-è]Ëž#ʘ.¢)KÕ¥Z‘ï(¤Kîá!NVÙÖC6I଴E¾¢@‘IpÞm5ÜÃ"5ð1Ùˆ8J4 ÉÛ›JÚ®S­VM*žo5í–V “¨«”õPÂ^jÃIGÙ$œ³ ?·â@`Y‡£lr»vË6æ×îQ6ù›ÿ7»d³SͲÝZµi^f÷”#Þ¸µž•4%)èaÁ5n¬ã®Q"…M¨‘ˆ²mVü>€_+­(„'£‡:·ÇüZ»T–µë`r³ã óp!’Úã´ÃÕ)j.*ãVQ\û€øYIºÉís½½Îa!’·nì{‹Ó³´&k-…%!eƒf _¤°a~£ÔãÍšêr¼ñQ@$‹öËØ„Æ iÝäGA"YD­‹Fô ô^#zPIò{ W¾òk\%ÆÛ²2(CVY¡}T;ã,¨$DZ+¡jQËÕöoTò׸qéâ¯PLWIŠöƒ˜Ùj\ÓT1‡¿PÉŠüŽäj•s½¨„Aç8Ä!‹ï>,þ÷"&|T’MŠë¨zƒ÷šFµ™"`2ª´(Á.‰¾m/®dA¢šO £—b]LüçõoN‹Á’]FYSÁ.ß³RŠ@É^ø6i®üa!u(øPÜ ]½A»²Øm!fñö­h½~õ_¯*áÛº‘)½%üh¶ ºoôírÉŽQþt±å£—lÊšëEÛq«G.‰Ó.F» ÓÏô’@É$¦ÛA0E+N7Š0ɦoúø††Ü‰½FAYd@Q‹ÖS 牰èoAY0+ˆ*ŠFw3í¡ ¬ÈEªŒ»kEÙ^Ül7ê»À.­v+N¨;Š0I$5CK’8«=—!’Q»¾ÚÁ0†ï#±iýµ’,ƒ^U“Ô¨Eç›ï1Ç×–ï´º£lDRߨ;ÑäÚ;t k@; ˆ$lÊèGëñwZ€dÓVÖ¶:O¦×pÊÕA I‚ÈNî<°Vñ´ŸB–$ Pʪoâù—íûÐB.Qkw²Ñ˜ú*ž-»ÝÒv–¤N#wzË×&²DÓ‚@‹Öo.Òfù¼QÈ’|ÜqˆÃ‡f.Ñœóû(è!$—ª³Mç2^tdI–Åך”œÊ„ô° P!K‘îîý…I¤Kš¬HŸÙ­ú¦þK-hr7j)¸%¦Èqaƒ„FyH!±ˆEÔ;¹}a1©2Y5ü-uQIÿôHyÙf­%œéXq#‹%™Œí¬¥®É‹´T’Ľó¢éÃÍâʼn4IFµˆ$¸³yÅQB‰ÝÿþjÖàÅ¿©„ ¡quºÛµèˆœ/6o,[•ôº%nÖ¯*Ñ“è ¨Û‚ì³û„£¥Æ$-à³û4þ¼ãuç7~VIÏ÷ÀÍÚ3 Úbne'Jpò-¹¯÷ÁXk²wœTÉIÞù$¥|ê°]¦¥“°Ib› r2æ¼"§\¥û—ó˹Cj$Ñt—Úñ¢bvRÿ7S‹‹q(ôfÿ24&i/úw!“q(&¶3&ÁÒýðŸK!“¡F0‚}@/Š ÞE°dè÷ßþ(DÉø­Rä«R.ïo0¶n/Ž%Â$Õ+5 ò lNÿÉ]"ïwí<ìÉB¦-0Y?îFý/m;JòØ2¡ Èåg”d)¸"Ý¢³‰òWö Þ®¶ûBÙïwß·IB&±ÄW+)q±<â²Ã$÷jij.S‡­2?Þ(„Ivô§PÈÏ¿•ì>K˜$ÀöcMøý^Õ]¥õûªSƒº:í0ºKN5Û{olXþ÷j×SKÒ×N5í•#IÎ}xT¡’ÈX'Rß‘Yq¯ÑÕyµW—f§Gõà()1RëÚao ¾ëhãLöÎJi“iWµËèšaßÙŠ&rí/?VE6TamßG%DrmyLÿo•àju E²“ÖhqTÁ’Úhµ$dÖ|T’AY ¾gC\öí¯$fbàóãóÏ2Ðÿ~CF¤C|gTÐH2(‚ˆ–,2 Ë¯ÖÞUÚ~zI&ÎaøýŠ6ò÷5UÖä¾×}䣮™’ýV² [ÅÆó 2ɲ£J€¤ØQ{ E°N÷/?êH Èê"×~i¸^—lÖíÖºú €hÒv•t…0k%±w‰¸{Û¦~ol¾HäØó¤Q[íÜzG¹ÉÄÙ;)Öߎ„DG¿è#µ&k­?êök%Aô¿$ ‚Å¿¹ ‘A&yè˜U€FJøÏH$Gäp„ŽÎOú_”ÄCkJ²-GX<º ‰Dok½²“¶·­($·R{;‹¹ì,©#) Ìðmøó¨Ûªu=ѦóÀ7¼[¾mŪ•õHŠã§$UaÙHÀ¾j}õd®Û¶ÚQ ÿ?ZÏ&m#üÖYäü !ª=U¢#¡7ÌC[@Ý+/î´vmåPYkòpÙ»2z¦Ä 4úÄ=|TaxôF,5¶]¼Ÿì–GVqj-2 É蜰a7<=º ‰ük3§¥£V‘µÂ‘«ðPˆfËïþ€‘UÌÖZå8Wé‘.Žš«a›$ÚJDËg•üqu¸Ga$éÛ0RÌÝ#möEßum’R±‘ez•e‰kÿv¾’6î‰ÏçÄ鵂¸~ $]%õ#d£F …Q•Éí*Àq{rÜfMYýæG+ ;y¹þOÉÉךü±LRŸ¥ºc± #ÚwVZÛÉ1ö ZT™’@,I»=Òê[+ö¬ânG•=_t’šç‹B¸‘Ȩ)ªdr¹’غQI©í¹Àq$†—IUA’QaF \d Iär™£"–ÄÆ’¿|Ûa•Ûu‹% •¤n¹kÆ]ÓT–ä \9)×µµþ[,9ê®TVò.`Éß* µ¸WMW)~Þ§ÇšWç+áú÷›±¾ÞxTÁ’÷¿/üûïÞK'J?¼¯è%ÉH½WW©wuW AðQþýê^­IR÷.„£•s§U|ÏìÛ²“$U©6ÁÜ¡cþG’$ðMm(†Î‚¯*éo€Óß5¯5IÆuUw•LþÖ£J}[_t)[2)c‰ŠËU2¡hÝ—fþuMÉšüÕiïz[ÃÖN^ΰéö£n`R“ÓDé(†§Ö6)3‡C”Òó;Tòw—m9­ ‚is€;®­r£mSœ‹ìùÝ´Ç9”Y¸M…s!Ùðëðâ*15IÆŒ…C(Ì›1•PÊ;@¶ps®­€Œª·iíÉ Vë;¹þßÏU¢Sa4˜O5,ÞYW{³¦l¬20» Ì®b|rulãã¤Ò¤’m0À*#XÓ6·ßwÜ™¤*¬òïwüZçß+…ðÊÇoºOq‹{qÇ%©ÒÅštá´®ÒýŒ3 |ÊrÀ2žöt‚, >*d<ؘmÚoT²pBâØ‡{msõÅ]‚]¢ö"¡¨wnê7»Äm˜!Ä28iÄ%qA ë¦ÄJ(]à\ÁtØŽÒÄ2-¢Å‰ÞÇ‚Ý1_û)ƒf¼m­ùaùSnYøí ¡ Ugľ¹“롳f94¥Ïfo¶Â%!àõ€Ùwž}ØOy0ypü9ôÖÝäWkh çòh»’ZÃCL£ku®’ÜyHá†H?Õ6o5—ºñŽÐ#ZfØP‰.c{æ7}É;pÚðv£!ìr©KYÍ5hðg÷ëŸíà@…å š‡žï¿€eWI{8¢ÅŠ…~mHë>¿)òÇ„”±…”Lù~¹º«º«$!åCpJ2øA%ï†`˜üv ˆ}þŒav†¹°0^úÖ µ3¬Ô'°x]ì*K1,e‰£S–!¯×†a`Ï‹Ý<üN'<ŽÎ¦° ðî&Ì^L•)| Ÿñ<¬Ûg «ÄU7±ÕýhÚ˜½>H9®T$š~ÎÂ3Spÿ<‚:Q+Î&ÃîÀ™qü²_J Õ÷M‚3˱íÌ89ã]¦«¤=¼5v9qG+¼úL‚ÖRŽ6"ðnÛ´ëù~ñ8­¯Ô†v¹Ë@ÍT¬9”:4(Š mùoA+®¨T±C§è:ìÉ>Xþ$ÖKËæ‰õÑèPðDîâ äÜöV¥4·^ÒzšÉ;2ÚøùŽTËÓ Â&u–£«¬Ò–u²Fï­ø›\º?£m_më[\©+‹Ši POxSÈ ÞÙ8Ž=õØ`½]“€Ì8pŸ†„cúaÙõÑéL 6´Õ‡8Zó«B`æ-[.t[ß=³,C–5lfâÖu÷%³bgöb·ílÛº4$LÉø¤K¯ Œ_ÕPv;tþê/æ^‚2YQ‡óÓ£3·ìÚ’™Œv8Èy×ÜÚõCHf ùYµƒ‘GÂî]CHfa¦·CÚü{µxoÇ<ÿ•FLcË4áŽúà™Ž`a¤òüì‡ÿH ÇÞUOR¯Ã]‡bW‡Ù >¶ýÄù—Дx±"mÛ½sDç#Wåu³^­16Â#&™á½WWìŠÙõ‘̪g©…Î釃 ˜Mc¡8ö©w{q@\DÇÁ ‚ÌxqŸP iÓmMœæŽ\§{ǧ@\¹Ô-ghPÑqëÞ­+W®ÎÑ‹°†”yz™fÅ,KÏS{_ñwgâ×R/®Õù×Ý ä˵¡˜ç¿b‹„üOÓe€é*é/´];Áe=s·K¾ñÅĸñ®y5Þ‹ÞBaŠù¬4¨4?¨t?ãs›-‹ýÓ8èôæ7˜e>´?<rliÞÞ2„b2Š›šUuº¯îmCæÔn*¬‹Üñeuº!ürêL9u£#Ñæ_‚èIú7­îî4ªEfCØ%h DÛ¨èâ§Gc@.¾¹¾Ï‡@«rXªe¹\ ¨H›>¿ #(¾Åp9˜qÄ>p½ÏÆÁ–-t“zc€=î–#À–OB_ê(ïb–‚-34Ðo,@q/–!ÛýQ<ö¯}ê~ï‘›Ûþ©9Í({Œç¯Nó|KG¶7?œù5Á°BQäÔ×áÖ ïÛšH- É(e¿*’"_êWI­7»m䎧µÙN€Ë”cçù®-ŽÙ‚„ p‰E Ò^CàuÆ‹'“›Y.æ_"Éû'÷×E¸æb»íÒÌaÖS evi­ÚÄŠñÔåÈå*éùVD¹hŠÃÎ^SˆåÜÙ?’~÷T8º¥Ú&€%ÒïJ\ÓÄpõ$þ-Ùί‹Q‡´$9zzbF ²¬C±=÷¿¿:.¨Ó³¶÷×%ð¤ÏÐoН9ÓŽ¹¹¥èd4/©‘¿vaWEº͹ íØnað)´òoeü¦-¤òÛ·èÚª®íÝ% ¥"+ü–÷b1ñc1²ŸeØAk žøè}_:<,ÿríäIõEÉ~¨©Ö´Hp —Œ Ž{‘„PÑÃ…•Vä–Uʦ=p ÈMôö`nƒ×‡Ac&Ú™] —ür¿ Ýu¦&vÍ[%ªJ¨x“’G{øÎA $›ÂúíèoI¶CTCø`¼HeÌ`žô8¶/ÓPT ŒÀ™³Ãé^ FRhd€Ö\2:ÍØçZùa Œ¦JÑ·‘®žìüÊ¥r•ôd#ºRš²n¥‡ÿáôd‡Dh÷Jê½’ïß®ø­^hä“a¸¹Š0 ShdiH´‰ˆ/MÄÞË÷ÃUÚ.¯j@ðùiÉèϘ&é“!ÖT }³a–’>n2Šj{åïSê¥ÓSз’¹ad8,Ú’B$o;ÍrÙiªéß÷)í1+…H¢ôÚqÑy ÿ|>I:oÏûöÑzt€ü‘®ÒÉE»rV\íÛ;WÏ‘º½G"Â'Y>×8Ï^—ìÊè±Æ,X§ô¦nx4+„KaM³¾§­jc9v ù›wñkGæüÅäµ±šÉ/n÷kL^ñâÞ^: 暪$äöôV_þÑ„/BR(ËϽ©³ !“âÊ‹v9¾L€\¥õg¥2öôRiÌQ,q$ÑR2å jpÈ(ô2t•¶–’Ù,”$.Ð'þ®CfjÙHÀ:A^±T®’}KôݺDù¨Ì±®Ó±«”¬ &˜Fë°*ª YŠ$&Oƒ7ÙW\äIWi«Í¨å²$•,['QT2¥‹ÀW¹iôp6+þ>ívdýòÔž‚ÅšÔi7`öÖ$$²¼žÿã}"~² Ê{’\e~"&$’¸˜¬›;|pú31P$ü¿Vt*nßî¦W‡ä;IA‘ ™øúcÏDm•¦*›ò£o ö—v« Uä@¹^¨”B qlUHH«0,Ò2[s˜s3 m¡è©Þ}¯†»k,:ÑE' (V1‘ S_\¸òû¨5ýQ åPQId¹su®]Òb†‰†rWú¦y}^‰¢Ö‚¨EJL]M4”ƒˆGȨÚ«5©1Á–·bË[‘pÔeÙ9Ù¹9 kö·2ºåk¥ÐÇr¨¯½k~íHU´¿ð9Í)ô±mgµCa*Óáñâp‹†’N°6%—Ô­œzñö ~|’u$ÍTošé›SµˆÚ„×npX{bõªIÉù1‚Ž$ê_?üt %sã%3ì é gH&“¦ó/p ‹ÕåP*3lËùJÛ²G°ÝJ*Åúo•`è«tÿû«Ó%¾¦yäh (×ú³RÁ©élžýš¶wà ÒàêÞ¯©aø Ùªr"¨EL²î¡ñ&$²âv%Ë"iH&éL<+økz[BÙ¤Ý"¥åú  Î<’¸œéTISR½Â¡ ž†£qYÑ Xï+éœ÷º*ëŠ{]®vËV²gkÅ?>ü`’ˆÞƒé„Þ2;Qh¨$Ì„©ºA"òŸà*ÝÏ´2EÎ"oÔê¿à‘4þõk:[hûR,D´•Ð@±„bL²øÎ_xdIN Jþ}¦¿*Ù£mÛêH½_u諼¨õÅ‹Šé+£òúz”ôc†L5L_—’²õÎ’‹;AÎUÒcȾé„W7"ms¦e4¡“µé·ËÔºz¿ó/u:F6Ž‘òm;gÅMmQn»])©dÙ ”ò7+<¢c_UÒ3> ë.ËÒŽ]¼µbÛ¦¯›‡ÊÛ²x[<ÌÑ6PY9o‹—UáÖ,ÎÑ*ñs)(e¯Õ¹Jkƒ+„ˆ–­º–ÃÕ¶ñ+Aí¿¦ÚXvJë´$üvC›nz[Î{gß–þÅQ—üÅi)»\:r$ýüÓÏPNŽ‹‚éV+6³ ŸüšBÛê¿ûÂ&©BâëÐéèÍE­?×2i¯%°ð-a’ìi¬¥ëûÜú¹` bLŠˆVQ­LCyè?ÿÒQæØ‰ÁVÓHž/%4R­¢K¯›Þ­¡ }üsA"BÑ8»ßО\¸}¤ÊþÂæ¨m‡W)™nýÂuäƒ âÚÁ“«mYå4A“µU>k¿¤"{hÛ¯?ó•+tÒùÊMÐdTµ$™Ì}²1ѲfW tെ޸à¯ÓhswÚj$Bfn²Êé/> “N¸ãl³Ò§´4Ðɵ±W‘¸²’êMÿÞmt"hWÃýQA:ù÷5ùßNÏ8ÙØuuúwÒÞTRKòý.c.:NøX^|´çFoúJ$ì”/3SIèdÈRhL}ü{øO6¯Mû\Ü=Ø\Í϶…Mâ6ÚüVŽÍ*öŸJa“B7TE5"_Üäc¿Òn¶¶í"&Ë6è†Oüô–³/ ÀäcMî—¨T² w˜,#De²)ÀíU%Íþð.†¿#Nç·6’Q’¾מBv@Øw(¹)üHöY=Iv’ðm± hÇýZÄpÞ›Ûªæº&;ó혹þ`ÿFƒÚ¨éH"S£Ì{p¯ôn®. 2‹h)7Ÿýš‹‘ÏÕ_Ü#æÙ;3RXd0bk>wº ‹¬YhnàÈ'^r^ÎÚÁ"¨®ürÁcôBÝÁ"CÃÚ;ªþO˜g¼rêx¹Æ&¨Šðh'‹¥pvÀȱ?k…Q›*½ˆhè#£cwJ¥^€Ô~´»ÀÈ;ü»§ ܘýub(õÓátYQ“MßFtB(‰D–·3öjO¢Qäø]„PáoX½b¯#Š|Œ~´}aö‘¹oЊÿ¶"µÛÒ2Íó/Ñš":)”‹tå…'pQ3R½N¦ ìºKCMäPé)…]Xd›_#‘ÉúÁs]üïOåŒ}¤H)•ƒÄ‹Jl+Y±ëyìßa‹×7À*»È¡1;s¨¥íhÙ@ É)ùW,˾d‚ Ÿ#(°aØ^jÕIžü«hk†Å×zÝC¿=`»oÑL6ÚôÛcì¡éSúpÒU˲æ¦=öÐOßЫv>ê‹5¹Ö¸ „<×$(á{ußÛ^“¯ÄÐo¸±Ïß}õ[-8$Ym…ÔÐû3p"­¤oëVÂÕ,¹%Oñ(k‡Üç,ŒŽã€ÃíO5Ê}>jÛaçìà+Í_*õÿTé—S$©Ä‹JDQŠ"ÕõÖulZñ©I2c’TÒzú' Ùº±|Pã^Dièiy²]hdSÝv¶KùP òï¤P.µÜ• Û “ˆf‘ÍŽmëâPö$IÃÛ(öxÜI¡;ùñ?®iüY)pÆxTòá}§QþíêÒûšu€É_îx]"í\ÕM%“÷5ý¹¦òþê0n]$,Ûà”ööŤQjƒ_^èíÅève ·ªsŸ]¼Í9„MOoÖ‰¢\úîr6-àöoV¤­u\UGÜKéÊhߥåÎøº®Þ‡—öíÝ*f[¤>”¹>þþ'»í”yLlIhà°–Öo³ ŽL’#E¹oß|«k·µ#÷Ù4GÊ29½£&O;‘ê ‘)@!‹Èä-%ì>ù¦ l) ciӇƶç_vËÝh¤À Òæ%g%û CytÁ Pk*Þ¼µ#›ü«Ð¥TË»èÈ&7„`Û,öë³×K˜„y`Úu@•ï6µ š| ÷Õ‰kwM=]¥õ£ÑŸ…ȸ7•€(õð tDêmï‚(yQZ¡-ÑàÏ\È%õâöÅlSp©o¸ Ÿìâ5Tbâê ϼY2Z4yþ+U…JuW²; á“ îÎ’£L†i–’ÖMÖÞ¹:ˆdu۫ÖX‡ÊÖ$&éS?Ûô†Õä"klm'J]]kÖ@¬ š¤-íó}Ý–¨IžÄ•øVo_Ÿmõ6sZ PߪI­èRþÝ£’ß—¿Ix¶(“Ên% ¥{ë¥.\²dH2íÖ:÷ÉÆ½ã|*=’Lí\a¶ŸkB V¤zµ&N”g½[gã®~ðPMê”[9åV‰yó°š¹.Y™rVÏ!5É›&G¸d¤,S"Ûn—ä.V`Ü'JMñ¡Mœm$f‹Öýµ ˜Ìcò}SHz‹ 7ñ³w’'qsj¡)^/¸Á?YD5Y‚‹^»<†ŸÀm| ,€Ïë`î3Ë:øä"ïf©‡¯E?]},€O&÷Mf#¥’>­¤ƒOîJÄ´îJç_þ>14){M˜Êj+xµ&õ&î—5…ç„„“XßTÆsˆXpîâîy'¿iáß4ˆ*:¢6O 'áð-âZ"MŸð7N6(á ÚDÓ¬úºbWIl@BMoôÄ+fÄ•ÑädOV%dgMŠèŽX©#Ø/æËç9Ñ_—{R‰¿OÕ,Ã:Áü[quzdH?ȼ¶I+•ô¨PK«Õe?àT‚6’Jö»2`%4s

ÉÚx¸.ÈZ0QŸa·Þ!°ò雼™X0=ëi¬lMÇç¶ Â0dÓ¦C àÊIÔ–,‰·ËUÝUºŸñ=ù$—¯=¾uá/N´Wõ…]Âþ¾-Ô,„>„WÆ÷­\‰ÏµPtø^n°”´ ïý…®¨ZÉó¬$bæüKÐp•!c©ý+ÏŸGóÅCZ§‹ï(ÐÛ¾%,#4öº-,¿~4l/õ°«„x†h$÷‰É·‡ô‡Ë8¨4´ëÆÐÜ|Ï@+¬é~ÀAR#4hΩúô(ÊjÙ¤žmÏî¡NøåH9)‘AŸìÿ¯ÇT#žÅØ Ÿî8‹{©ÙZYñ®ªÂÒN><ìf­<´b>ó!©Åcy±¦õK¥ù_* ­¬!&}e'©¡·†ßqÉšD¤ ØBÀ„ï'±uýuT-ÿÂÒüǼ2Ñ=fÝ#}òŠ?±jn‘áøú´åŸìÜ““ûEƒ!0ÛÝàÊ õ ¶Itݤè/nƒ“=ºo6¡ñoÊÜO¶0ÏÇhéø  FjåÇU13Sý$Wÿ媄QfÓG­ õYm€¾ÓF<Ù”uR›ÈJ½(~³nŒK )ã TBÃaÙUÂʦQh¬ô¬ä»H€ÊMçÞ$ì¢3à :÷«\ħ.½"w÷~#üñä_Õ/ÆðcM{ ÏšpªyS Å» •ÀÚJnV¾ØkWv )§¾‘Ss®X~V 70¡§K\o‚*§NH‘š+üÙ^,ƒr©|ñ!ĉQéþüC)¤2äƒÜs7ù Rm'MR«~Ê%¤2Ê>pÉ;!+ÎɯIX<™ÕAfõî’Óƒƒ×Cô·8„êŸoì®äh&êÚÄQsŠi0Š¿OB*+±W ­ëÃJbQiI ]–è˲bJ¨ÏQ¶ ‡/“—¬ Ë ×µ`W•5›ÓªLÆ )‘»£>ßoã× ²‰åcìg[$s™(ư£1x²yŠþ›Ò`«ÜBÃ貽Ž^Uº˜s;È»kóeîÇþзm0F°AnC8åÝiH7Þ²`ÉFvÑVHο쌲“¿9»de–\ýýFÙ ó,²{¢æn~ø#ˆ_Wl]w´¸µ'DJ&M¶Þ¯Æm÷ â$%¼‹©íµáÓ½‡Ë MRÁM!ætp*š/n²ŽŽãA¼Óè¨È3ãüËÿð¸”ì‘6vd½ä’Eˆó¯ý0 Gêþ`´Í\ñbîàsGAYc!\²B›­$ËW|ªWÍ 2%­$׫J¸”Èô¶º½öF5ÿmXjñ.Y·Ã,_¡Á#`«pzD€³­ŠÅ™{1!R2õº~WùÀ h‹„¾½Žêû"4ðñãŠbÚãÇ<87¢(’æ0ÓR'$ŽùH ÛAªÈa›á Y³îO¨©ÍNÃ&dªA¯¹Mi4ž­Íz@Mœ[k’,­Fe^dæ¹1Èí¸(ú‰ãÖY׌_Ö4›Å '‚Éŵ† ßòîŠf çÎ/é?WÒÓÍ'¤îoH•ëÊzf*AþR©îÏÑá»íÞª™q Xêþζ!ž&AWneÜ8‹«Dk ]_‰»ÝŽ»…w•Ài8×íÞº+Q›Â oë:\Ér1˜¿À³¦0È„/—[DZ”n:=| „¬]®‹ô°vüó§ÍžÂ!ï_ø÷§ÿ›J'…hÞ×Y¹Î¸¯ÓTÂÈuÃ"Ï5 gŸ–V<…E>ï ÏG÷ #×)iAý¿@5SXd©LµRK¢æia›í‰‘kâä\Í›žñœ¶y›Â"K‡ÀÕExÏoÑÁךÒ:yL°È¹“Û•†iáT¿= m”')“Rߤd‘þ¹F9¹”&_–0¶Ã1šÿ  œ|T¢…#«âU¥üy‡¶"°²¦öÇÚ†Ü"´ Ð’yON^ßš0)æWŠéŽ–7º‹Ïøs(’ŒŽsî¬:ÿLAV×#+ç5§‘v5A6L*z°$ÎÚÅrw§ȉÊiÈqon®µ‰:Œ7ÎÛSN!üdPdï+|y«…?îë"×|ŸûÞ\–ÛŒjªP¨Ç•y®ü€¬ä\P©Vð,/—š[/ùÈße-®^[¾»E/ùû©7ÿÍ s»þ½’;™N‘uŸµ+•ØØ¨ï¸…EFÝ&çâ3±áùSXdTáY¯ÂÙÍniÒSXdì€éÀ.=6t`ƒ¯¦°Èü±|mKØe6”óÓûNa‘%-ùÝN§á ¦ ÈdþÓŠF¶4úÕ’·I?ÎR¹„Ö¿ºMš–0Û|‚cœ&ì8q ‰ Âs‹+nËï)B"@T;D·îq0þµhûD8©G Ðû =ßíʼn’´É„‘ênjª¿Þ`d"›”‡ÁLÖ‰>Œu’4¹rO•î^b}RÕ™œ•“³rk“öbÉcsK&%QÆæ–¨òê?pB!+Ç‘Z¨nÝ:^O¡YpaMM[?RÍNô’I"H×Ïß;?ÿ°zçIÌ$Ç‘ÒQ¦ì9¼!à…D „ w u/Ds»ºþø] ÿÝ%fòؽ€ èh:µå´ÙµW×Âø•HÆ Ë)ºµ'®®h‚Èa¤êÑü›‚tò—JW×m öH$¶ÞûÃN\]ï›T4z˹57~(8ò‘v»é£´“IÚ¤„2)`ól ô1™6g~NŽ’B¢õì =²ûNäóo‰†ºtƒ–t‚#§žFÐÈ]ÅßåEê™^r§@ ³ø¾Mpä_–3ç‹{È[d­ Y«†x}Y1áÄÂ5ÅÒKû‰]êœÿ™`’»_$RWiýíêŽ®Ž€É"öx-ŒÚˆäΰÖLrƒmUƒ„½¦ëÞ»J4$ 7Éu]ß‘9lôé“L6£TP6ïS8Á$+†7;Ÿ%æÇlVú3Á$¹ºóÿ¯«kBg³4Û .™lÚ‰3 ’WW'òŸ¾míNæ;Ò«o&OÖÕÖ¡Ói=ö ȹÁ(RkŸi7Âò<ÚµJ’lüêß탹*W·¡àÍ”}Q©þ¹¦¨›Ö4?©D_"|ñ¶½*‘{éF—ÊTb¦¸g¥¶[^B* (2=‰íVà&×/jɪÉt4NñÞHw ©üÇÕÑ â[_-x=¬]Þ'<^ÝqµÞ‡¦B´«€v¯”XX»6¶ÌsîîSçWan—¼Bœâ&ǰt²…Z²áÉ×Цmÿ»aé„k[»tñuŸãéâí‡sT¦Â8ôIØèaͦHåƒ.K>ä'²«%¤2ÀЃˆÀ;Éø{îiw:!•©áYÓ>·GÞ±Ü×`aïJÔh‰ƒLK³ç¸…\²itmsa^ûÑÙLÛÀsÎèJ Êee®K0eaܱ† W¸‡v³S–ovÒõ€ëê²0Jë~´€)G¦ÔÇngjµeÃ"–`Ê-âéü›®mîrÃr•4<)аn)׃³º`†7¿]ç)Ø¿‚Pm)/|§f¯•±ç¡1zc€zùi¸Jð¨$Q–ïCHxÓØ%¤²5Ünõö¹¯ÍRU— ÊX$v!ðtø°É…dRž%Qe Œâ7Á•CüîÑØÉŽ/Ö”¹ïp½ÿù]È?Û‚*‡^’ûŸ_…”92½£æR9%w ä7óPËt•t…hOt¯£ †M2•Ú²”¼…ÅëÚÙeõnh÷ÀØ9üÂâu´¿T:ÿ²ß,^Ÿ•Ïu¨/Ë¢ºKˆå¶ç}x³°Ïa§ ÈrãðqÛzÜq{Ÿ„Z>>» wÚ>øì[>?à›’¥]©Z@vmá¤ÔÊ/_R–.K}Z;vò®‚kÉbY+µs'U%ˆÜ7–ò-Á•¿TÑîMµÜL)¢(#:ªz›œ¾•D2yˆ²zV *µ÷•€*‡Ì)êÔóS§9Ùì‚NÆ!Tðü˾ø*kCé¾åi)™J¦ÿø ¨¬U8E_jÛÞ"Ó[q-'C'Áó/ALECÆþã†Åë·»ÁUI牲Ñêâg •F=ˆB-: ¾Ÿ]Nþ§.ѽ.a•Eïà°]<ŠËƒÀUB¬)XScM6¤gañº}§‹*]Ñß3/o†¾À+‰Ã¨èž>ŠÃXX¼¬Ý nÿÄF”°,‘µ-^'Ï“FÍ׿¿+YS¯d;Þ¹ãsW²&eÕ9àÈ~Z<~‘Dù¨Äg3¥W¾jºJÌM.ÕØ=M`|°êÚ˜eßÂ,­i ³šß H¢â ü#ZWûSµ ÈBByÀ¨k¸q-‘ü^H-0ËÍÎÚüõÁ„Øó×I”¿L­ïYñ÷„Øî*8¾¢<ÿÚÆè´–o¼p|ý¥Ò‡kªTvн¦ø`M0aÛé {¦ßéa&ß»ÖôméSOŸþ‚ãëÒ®R–NªeIËÒ^´†8¾Êl¦kN@ªÿBáöú‹Û\Ÿj0/–¢«$ß’}@á,Ïti¾h A0²¨.”L ¬Ï¿ìÅ`v¹Äü£¡Ÿ{CA›"»¡,::µ°žš “HƒøN ¼69ˆùÕÒNæ_+eøóîb çcP!ib§ÝÚr,!˜g§ãAƒ Ñ’ó®ŸÅ ÁŒ·—Ì’P‹C/!˜IdkîÈÖ%ÑW.Kô_‚05Ctœ:‚g{ñh.¨ï@°˜‹Ù‚óˆ8”Ðõ=™à:eg¬:¼³Þ®NÓåó¯ùÁÕ!Þ²è}ŸÇW›j2¡•ó‘{%ßkÒ¦Ûœãè<„VÖ²wí¹ê#†œœux¸U óþZßÜîñÇ‚rÑó/i!+ÂN F¬º%/åW Zú¾é»”{g|‚úá¸çó@T‰9ßù—:n2Äšu±?+©ãn MéHÐ{úpüÓ³d!…¼åóìÆÉÄqæ!¸²¥Œ¢Z2z–úpâÓ³’ƒ ƒ çöm×_~M«ÓCÀ€â6\ºÆTN¤=!–)¯˜z¾c "ˆéxBwÚUHý$ö‰ŸÁt@ü<W614›¨ž1á-¥óŠž‡Àʘd‰Nñà‡å^|‡‹¼’\òÇŠø,ùMPe“ÉwàÎÙ‰þÕ©˜æ±)u‹˜Mµ%Írndû2¨Ná¹IØÒ!žóNYPjö®ñÍ€ü4ÃÑòÎJz²«œ‚‡L©:½÷îð¸y¯<ׯßí—·b8Ï볊¦"hÖ‡~²[á·ÂÏÒÑña~|ÿô±Çðω“ä^ „ú¬Œ mF9‰™(ú®¶âϱ¤M–©M#Ùóyø.Tøc ô¡¡SzM¼fúoÊ`™úBÌÏfó;J- ¬He=_ùï¯S„Av©Ô:”–¥ž?üN[A9è‘¿DPÍ)˜Ed+êÒ{x—÷º=4a ""ß4óëËèïŽf؉-+nÅGX=ÿYiS\õËwíÕ‘jbšÿÎAK2™%s ÷γ€?v­'«œ¿ê>lw^L"»‹Âè¡€ógT1‹È%ŽÎÒœÿ“+}Ôpž*½©ÌèvRT>jw-ºÍQx1<6W¶Rã”Ö÷‘¦­“‘ÌB®dÓð¡%Jîðt¾eöaò˜à ðÐq˜:»@×ÌÇ|Xúquƒ«³ÃÂ"ä±væ+Ù嫚Úí¼y Y•6‚7ˆ:p|ÝYÈ•âæˆš³«ØOGÙ"IU‘sF@ö´0QrÔZ"1áñž"¸± è°ý,É „ö3ÔžŸç#š»7l\“Az¢ÒI=ÙÃÚ@Ï‚ R4Ñq*#]ë?‹@Æ%phé[Ÿ3'̘E#cJ¦” Û \æM‹ö9Î6`–Ÿ®·ëÚU ×¶Ã?ˆ8¸ŽƒJJÚ ï; ãÃ'£GÓih„ÿò%Ì›Äë“$£¾ø¡‰,˜¤Ó~æ¡÷ã<‘ºÑEÈxÿûïJÚ>šæ+ºÞU Ö„Jo~gìÖIn¢$ËØkº_’ó¯õÁšÚ/W·¸:xÿ€%™L É$Ü3,ªSÚ>7ªRׇ-+ó½jùa…(I‚Ûïš•šq×t••îÝö¿že‘E¼@I’+CÏxñÓË‚,rh‡+C8A úðm;²Hl“Ïl ,Õÿ{¤©l WMW Pú®”ÅoÈ"1Ï.øÁÞ–bóf!OR½[;t~lä§´Ä…BœäÃ:ûÞ㦦°æ‚³l¼×q“t~ìAÜbó/ÀÆv¨ß:û}ÁàMŸ¹i]©n'ŒëÚ véùn‡ƒn¥g̰)„CÒ¡N¹‡R‹ Æ˜ä¤?—¤W®:¿ŽÛÛãÑïÖþüÝ®'ÁÕa:ÂûI\Ô€--øY6ž;”zw<Á³kpÜÒŸÛ8¢ÜJ›{Mh£—_Ô>õoYéß:S¤î§HÚ–Ä-XuøIpG8KESì~èxåº:÷ƒÝµš!yߨ¶ín4÷S­¦ô k‡‘/^Y!P`º¸C"ªá‘B÷Ui+Z"P¼hÛ„8>e”ÛÚð½Œr!Žu¹Ê&;ñ68 -â8ÔìAËè8„omˆ”ü1] 8Æ~ºFž¤:Üv¨˜óB˜E@ch R‰7q¹_L׿Iß®ò~êˆàqጹÄPM,§Òú Í"ñìðe†-O'Îöjž\%È ä[|ûGT"ßu¢_‹É7tœYKÀ*صþ’mv‡_¯»Ÿ`×Zµ‘ÝV]õ"æÄ½M¹JXk§¿#{¯óµNÆç_þêgþ’¡ÛÅ?‘ldˆgö}*~N»h°µeÕF}~s˜ù®“©‚ùúè‘ĽdV»{T…TšÇn?‡ö!;9®c·@»ç_z¶mä¬§ÚÆ¥u0C´“Ã*ÈqÊ™/§Œ…âyÙ—­bÔúÛ±ƒ²þØ_1j}Ü$š´ ±ùÍM‚}Í‘16ôÌ*Ì‘:1ð ý9¨‚³‹ÌÙºõç_šŠ{âd%O²ËͶvÖï°Ükvl¥%Õc“]\ÁªmÏêì^R…=6°âÛéÚqEY™ÍÊ *ªÇqëɯ.ÿZIRµá }l ‰ìhEÀH·vUg¡MQƒœúÐfѱ¸y¿ƒ*ð±²5¶™n™|]øï¬ø²b¡U’¹AÊ$ºÿ¨á˺Ÿçý@ØÁ‡=ŒVáy³ÚdëunB2»=«WA®­á³˜~™~¸J<Úûm%h•¾í¼u~Mše8}'ÕT›œËn*zÇE{Ñ¡4ÊNþ±Ó£ŠÞ±!.}VÂBË*«ÐÈŠn¶¦>ÚwÄ|\¼?_IÇɪ‡wXÛÁqÂN‘*€dê ¾kÖk%Ò™usyVbL¢«‹$z=¹ãתHÉŸ•£e•fÑc2†Î«òƒ5 “Ð.˜ ‚ ÚšUh¤F7¢‹ c‹ ŘRßêºg~ê°ŠwíwÌ¡*ÔñìõÎòj;’cYAiêxO®g² -®š°  7+.¬ß ö÷'_ì³&qHm¾ñ#9’TÄš¢C œ¼†'åW¡Ž%p­)°_z! «@TúÇì >¨´'#ÇŸk*[Dób2"ò·«ÛB¼ð¦IUä¿ÌX*k²W'²À¬(!®^ Â<ÌŠ kà öˆ ’T¬ãéÅ-Ö†Éî|ápamVÖW‘>’õÝÎr×Kܿ˶ÎUB&†IIè› ¾mZŒ¾‚Ffáˆ[9ܳ:ü˜|#’„d'÷Ï*­¿¬‰« j×µ[míâ¸Lþ£’}ž@&kç÷Ã5Õ¿¬é£û´Ã$·í¡›€Ëæç­ “©#î]³R3îš®÷}›n³¯!NG+8üœcgI2ro…Ó$ýi=«ÀI`€àoÁijáE©ÖµŸ`1¸4*YVæSJþREà ¿–„É^…·÷ViálGÂ$øß`9jÝ«=ùá‘MþD upµ»tÖ®’Znà‘è|r»>J¹œÅô A’[¨ÁiýÁG€H>…âý.^5Bˆä3œCÑ#™š¶a?¸!Dò–Rîüw%µ¹^^Â$ÿ^©Ù8ò%φ¶®m-ŸZQ{ŸˆŽ$Qòµ·× 6òG•‡ÖØ««Bp$†¤™¦PÛìþV“ùcAÀ~o.K3z­ë"t Ôi²Úþ/„DNM¦ÆGSó£ér>g € Lκæ‡’+íÔUÒCÅD­zk•'|_–yÂ!kå,Qµ‰dB>îV°Ö¹¯®pu•«³÷I8¤ì±”Ógºø D¤j`  ÑXµˆO{ĶQ„*ÀÇ3)C°#Ä.’ïW"ýcùój>¸#t‡ÎŸMøgƒy6¾TC®’ÐtìÿûTzjŸÐE¦ÿ oú^ ±•†=þËL¤HÏT9ßwæ/îòúc5K¤×­ÓVÚ8*«‘ÄN}ð/pc— Qéò5)„Ýï‚#¤WéUÛàMl»ö/ß' züëš"_TRÇ1 m…õó/»;v,v§Fűr™þçîXæ–ºÿº&û¹îXˆeHŠÝš¤]çwо´Á´OæQ1¶ÿ Ht¢¹ô íTàþA„̇{/ÚFâg+£cÛýÉæV ÎX–ZÄB²•Ü«û皺%UÆF#ÕÇÝÿþŸÜšãÅ3É©¤BxV²7~«Çö`ÎHL ÓZÒ±ÇVUñ_îpd!0­( ¬©Å® ÌU*?+é·»)’q¿ä®’6ïÙB€dïÒõî;B’g§É­œÂ¤sú'S€d‚Xê1*${O"I´{MwÍ·•úŸW (Ýwøêê´OåŸß«»Ö´ã_¬ *+'Œqxrp6*$I'(Ä܉Ðfé? ÙQ%1£àõªRù¹¦ñßÖ„®Ó!^ eX±UìXH½ww¬ãu~}üŠut•d„â]´¶Ã‰`›VY$wÀä&ùÝ€Né[B’aâ}m͸Ÿü ŒœúÙ¦ØhSä+ÞÑ•‘i”`1ôCPÖô©!òæÇ\0 vjŸ0eB0ä@±t’k{Z9„BNIˆ°Í ëu$úŠÖõªµŽe˜W‹êÈ.éW'Y´/¨¿Þ¡-„A&17I6púéžfÄAN+Z‘t¸óX÷ð ¡@È&6r“)&ú¸é%A Ó¸š÷P‹ú"~1f¬ºI›K$©X¯§ Rdƒ"¯w¤{g•ü{d¥{ERHd+ì2Ë„Ayÿ©Yôz¦¾‡ö‘R¬Þ#F–Hû¥D*Åž˜0ò×5¡Ay³&µÞÇ áÏ¿tŸü‡;æ&èQAnU~šY­ëS ŽÔ¼û~‹(€áѨ$RI·K¢ Ò[f[bÆJz¢¡ò÷Ì×ÂU…a¿¦â®Œðõ¦2:pqUôàʈø§ƒÛÒ(aÍúÁj@ ¥d¾Çßå=Ýð•`j3åÄ +ð-yUIÏsÕ÷£l¬îžÙÂ"²ì£äA%Í·¢rI‘…£¤´úwÍJ͸kºJHlþ/Òñ Ù Ö˜†·Å?D(!IîÖ¦hÍÀ³–Uþ´bñ¡YÙ£ûkAïaÈ$ö‘,ˆ2™hÙãPVžç $0!ÇŒ+ºÿú‘œh…0ÿÚ.qv\›•±ãÚÐìà‚Ó¿Ÿžf?õIðcÕ€¼VN²qÐXÙb ”¼7Ëõ—>MCÍômL –¬‹ùÚ ²žêl¾A LRŠÆš…@ê<ü<ö{LOîFzÄ$ûññÞëÅÏCÓš<,ù4A'ÿZ©yì5±d-Ørå‘÷…Ûè´'Ù:¹*6˜Ü¥ÊKg1·6YÉ屮¾µ°ÍzJ‚MãÐvjSÛkT;·M4‘MrŸë°4©µå;°ÉƒLú áL¦oj’¹H£Qk´|€“‡ß0ÑDîJMP£Ró÷ kÖ*âE[Ü52,-*·&R‡µ24)/“¬¼je¿ 8©­·‘ÁñÞü<Éüe=ÉñÕzú¿®G#¨7ë{UGÐUyÛÈ7ñù$É[[ŠÂ(?,¤fȲWD?Rì0#H> ±¢ÊŠ|—9uºžMƒè9è×ý9=±f][ÊbÌÎ4£,+dNa’‰káÒµ¼ã‡t¹1ɽMjÀúmÒWj\ÖŒþÉ’.>º9Á$Éñi]Ûäg“IÎý`#! òÅG ¹xS䊴+5/‘KpÉ!ÅV]PÏn/Ëÿv“Coo%¦ì®wMWIR_}á ×upÞ #±e N[©‰ÆíÕòý°¿¶¬0fnƒØ¯ç;ÉSðV±)XrŸüE+Úf?/ÎÈd@&jͺ­§7Êâ÷%a’Kl×ñvµ ñã^K b Ÿ’[óõüÕê•Ô”`ù*oúÕrZ÷¡\Wa‰z¬[€;$•ˆ½k^»’IS€ä}gt¹Ÿ‘Z2h ìÊ\¤N‡–Ò­Qh ŒìB§ÿFuü¯68Sêó†oØ'Sÿ95Ö˜šj´ªÖö¼OöÝG9âÇo_V0G²Â膜›èˆ%3¿ý«§H0äT»}þ…Å·,#Æ´B††ØŽi¡®ÿý¥ŸrC–xG–ÝuXÅnRÜÒÄÀM”ƒY, $CfA±›’êô®`TK¸Ht‘Ž²Ñ¿¡Ží/¾Jè"›Í,Ì ¢ŸbsøRR/Àÿss°óS‘õ˜o$ËÐè¶@Na‘•Ybe–©J­ùÞtò„“U‰vŸ4÷ûÕIÿá…å>!mCî«“ªèëÃïOª¢qHé=ÐÕ¢7 Yd—Z&Ssû4ex,¡!‹$Þ-±0¸2\ï/­}6ìYS#©,jEZœ´,Ô¶=ë/OAŸ ’¬íK˜L#²tš?¨(Þžµ œ\òD^;¿Hq½ÙHކ9ëÃi)´7U’4«Ü5Á“ß ùƒÖ€à°ŒûFTd豌u°Š<<öÚO–$æ)·.ZJ óäf?OÀ“Cçˆ:(Ý9dW?ja·<9Ô!Gaß–Þ”ð$,›:ô€ïD´þ!&€RÜÞÿ¾Þפ.ÙÞqÁ“÷JþY©‰ûõjMjRþŽ› Þ4<[[v~»Æo§ó»ÏsoÀ“Üñ\ÝüàêôŒ³¥D¢åKfœÃº+7Ä“ihßm¡žïý×PNЯí‹ùâÒ$ þ!-^bÈy1o#-òàá>4à8_XÝ nGœ-÷PGR"sÊÊ&§oã@&'Ô¤Ô^¹×ôªRåêÖŸWW鯚®Rüyu>@…ðªRþûš"7½äE¥öçowÿûÏ;A8°bëe>«„lRß¹Ú°?äi}ÝOW 7’ƒJp^”Ó3®²ÉD£Fï|׌û]0•M>L–p7múøÖæ;Á”QǾã˜QP,ß] ¦ @£p6—Gø“`ÊøöoùªŠ ;„z2‡õIi$Hö¡m·„2‰Šò0%©D…òÞ9f~eºJlà …»†Âc:½¨ƒ®’FÞ¡pãT×´«\LMWI#ïNÐ齺·kR^Ô¨Þ–ÿ7h+ÞüçI0%Þ‹ÝÀù—èài b å!äôf^^-¯d—ŽÜU§D' L—æ>Û*ñó ðÃÆKÿ$ ¤LA9øÀ7làýùÝäTýÐé¹’~?ìlÂ(»F‘tp‹q…Ÿ˜7¡” 3ýüK´°nRý¡äÈŠ <[ng\ÑÓRú&®šâw¬’Fߘ°oàRNu§ ÌïŠoëà%¥M²¼X.ÃyWF­‰Žq±Q\í´–«ÚNj›•k‚Tñâ/d’£àd. A;l˜M0©¥ly,žè%c@“"î§aNÑ«Ÿs –ŒÏ—ˆ÷ûŽÅò{ô¶kU¢EA«—E{tóV M°dûDìí5¥7£mÛ®UŒÙ;³öú¾ßWÔ– õµYd¯Ù»ćGJš`ÉÅ­wÿο$´ê*mäF~Ûž”ë/uYãøG›ÜHLpFÝf/Ü ¨$n>Ojeò¿B›?á¶ º¡D‹½4’¿\‚)%¡m†¢1-H_þ•C"IòãùtIÿyóÊ,4•ÈÜÂí¡ffË­«w´m«ü¨4u°ùH¸ÝPInöxòµ’ï5yöVéubfúßdém;µÂ›—„§àµÃŠd›ðI´@U?\ÕïV=ϱaÓºôšT¤RQÅâLoqÐ6H¹ÅIú ¶lžÄÙ¶DR¿Zh^ƒ{v ¥L"•Ï O•·¹®ƒT¼9+i¼)%‡ew!•ŽÓ]óBùž|í9®H%çZdÒÙôh>n©ƒTü[¥lö ÙA*Iiƒ;~`'XYYRYß“Æ÷¤)c%Ó’%:9’Ç»büLÜêyð÷iü­’ú®«¦«4©„]”°¶s„l÷Õ…VžM0ve²¼ÊLðì~Òqm]ú¨Üî²õë¿Ja6§•¸vÐʆkJ#¹ ’â •B­|TÚ2EI\_UŠ•¸'iR¯*A›Â äÐL"ŽúÉš Mý¢æhã“ûD‡²³²kÚÃwK êDI¢5‹À;gl«9;Uì;L’‰ËÆÑÛÖòÚ† o´©âŽÜ|SIhe^LL¦Ç›á]h%)gIdÞâå# {åH¹utÚ1ÿ¡£³_Ä”Mîÿ]©ëûk-»ÐÊûßþýõ=€“ñ¦Rãêþ¢7lÓ¶M}ÕMHE¢¡ÂV:‹upïÀ• Kc[NjIÓÖ4IÂï€Ézw'ï ¡¥DŒ]¹ß}Ìø·°’ ØúȺê’OÉ¡,ˆ{ã».n§wúÇRX%± ¯J„&[è@•¢xà˜sw…D7™XgL9=d[7§v!•Soíå”–:–eeuÁ”Så‰ÇØ‚e0­ÙI߯ØfÐlÓÊ1í¡ ãðÚá‡,õ»çF§›],ó¡o¥ÈqìÔ=ío×>h*U†œSJȦ½Àá¿L[E©G©ÀÊ||Á‡Eb»°ÊÖt,üÓiû=VÙÀ'øDã\ÐÿÛX%2ªc˨Ð.‡åu”” ¹?!÷7„ýÅšÔƒ¾—hß©Â]XeA•›ä“œ™¼øíîg<é–rðm‚ã[õg:a•¥ã7¸Í˜©è²³¯.¬²t nšÂ7aA}œøua•¥kÎ[Ú¦£Õ¿-H*»Nb¥£ï¢÷dµøißX¥š/1ªÉ ¿72IJªl}ãEkH)ÉiQzÂN_~BB_BÌÜhl$þ×TÁ#t;jãçTý¤Bèä3æhcªô"æ¨ üµy WMS eG´ÆÕe“_xú ².x² }áÎWö¾ßç_âR.+\ê}w%1á·)OóÏ£ Ê:ˆ½@þ–MæÙ,FÙ…Qžÿ>þ½R6_¨£¥„žŽ²ïÓâ>Ù××ñØ2„å_î®;7áiûJÑ|ðExZ'm2gTÄ=dhŸ1Ôñwe^/îúç¹Ù®éáïª]²ÈA± ý¦ÏAN˜@ÓTÅ2©ºàÊ=¯j{£c„ŸÆ vnâ;¦ø‹ðÒújt—ÿ°dýV½W)¾vùJå?UÒ¼¶½ûªc‚ Ý^ìtø»&s½ß+ùçI3ðŠÛËþ"¤ð´«¦«„¿«zÔ(̆p6Ö7‚ þ]ˆnuÏÐìš¶¿ëcM‹Jãƒ51!$&²í˜ÈñÉÕiBø‹Üûë˿ܧòpiñkbB88©ˆ¤]Úú¤RÿYIÎÃVÿ¾¦; P.¿C$˜2PøôŽ´rÁ(Kó¸²ôÅí÷i%â„ã×@[³ì®.“È&_p}» Ì[V}]Ù/2}/ÕîÈ+‚ÿ-Óˆ¾íJ潒¿ÿ|MíÏ{¤³ÜâAòÖX]æÏ¬¥OØÙ]æ”U4ÞÜ’hŸ¯´ýÆ ¿Œ*îjt¾$veºJLO‚é Q臌™Ã "†ÌGX< Zy_…p©#á8ÛÊÀ‡ã ¡—X*‡¾Þ1*'Ë«$NF¡Ô9%ùý»wט¼NÙtži?šÂæ‹OH˜¼’øAà°Î‹{ÔÿøÍ l(’L^üfÚ¯qDB¾®ðëpUæ¿^¾£^È8Wþ¥Œ¿1åÇì*mÏ,Ö˜m1yH)~þ¥Ggলì”{ZmÝvRä‚ÞºdàñJlîyáq3t¼x1TNÙàL 2Ê¡í¾ùí~¦Œ*ë×yÍÙ krmò‹ØÅ£p´ñô€ÃkåXZ…”ªáDûíeoÖz˜ê~Íø ÷É‚ž%ÚGÒ/ßl[R©ƒM’”EûÇHëË0TVƉEMH[b-õnÉ&˜¯ŠWHý–ÇÄõ—_Š3Ï]ih»®>Ñ{S6`Ê–{Mâ@ù°ŸLyˆ¶R9iךʋ5iËþ=$B”#ob5€)I¾ïÕ}¯©³&u8˜àAÑ5PhŸ—iPy¨…Ì®·n„žñùâ]Áô•P¤Ä¯åÎý´ªé+•ÞZ àW•¶4~ ÿµc&boª?0}E.X€…ÊT›4}á ’ò %AxVÃåá?àÂ*·ŸaÄÞΆñÊÏp`ûzН‡(Gsh/˜/ž§ X’kHjã]óm¥ùó>!^zÞ'û °Ì&ª_6 †û±ó™íg°¬øýÔ)i|8ÑøÕ`y~¬µ?M½Á7‘0n𣫄*G­S6Ïî뼚ekÞ2ȤlXÒ4ÁŒ“nzÁØ™”€CÀP.&Þ4ð–S»okÐ4›hš#mÍ “²Ò{'R¿ÔX©¥•ž KD#»RI}ÍK³T¡!Àòþ÷×p‘ìÏÖ´þ¶&Ò,^¬I€åM:,ëM:ãÄît[\)DvÀOˆŒÀž€’( !äÞdk­l‡˜• A{''ûüË_ZRIªª óükQɶâ[Y©MüVŽ|½t ¯t0WIú3ðáÞñêø ‹¡ a—„šË J쇯y¬«!é™&]MÓ7qó«/\‚,ÁÄ&ADÚ²ô!Àòü⯠ªIT‘–âK=á*!Âð`å‚P» Ô®¡Ö¾²€•£í51,ÕÄìüËÿn ¹!aþ¾©¹/lä`åûêT©è†¿¹:ÀÊ}u뱦xÇ+wZæGw\`åýÛ_tœ­ŽRújMñãyÚW×D9{U)Þñín ‘½ø~°réP¾¿Ÿ§ÊódßÞÁ3~¨Ó]ÿl’Š8¸À.ͬο¶=Æ}Ÿjñ§ÀJBeο8«Æ®äïϸ$©÷¿¯÷¿¿+ù~b²‡+þ3š¸°9äoÔ?XYc§ŠËs©bpY½è{¬¬1©Ô©4©d³¿Æ£Äba5ž§ÁSà¿€• ÛEÔ&AÇÅðr!ºÅ <S±½ ÀÊGêÖ0ðB*wQ¼vØ´¤£±aJrƶ“Þ$O?¦ Œƒ—O„»˜’©eajY£§O¶xÀnZÎqðWK9º€*«Èþyh?iU´œVm¦Àª¬;^êAÍÄfÁÊ’‡ ÊØv;ÈÈFÑ™i??!“²ˆ0¤]äÀŠâ°:É!´²È,¹è,_4ŒËiu Che)z Àý’Ôé'+K0þ–3Ƶ ­Çž—‡J,mPj庛3½m« ,U\Ó5ñƒÅm[/,(ÛµêˆÜÊMç‰YíWmQþb?Q(㯊·¦eB'«Îìg÷‹O“íõõüKÇ-*õ°‚ȉ´¶“¾f¡YL«ì˜ ”¿¸ªô&0§{[Ú‰®`iÏÔ'úz ¦¬ØX‰£6«tÃ/ÈMåϤùß›N)Ñxƒ?(Sÿý>·`èÞ-D5QSþ^©ò‹ùJšT!½é+=‹¶ÕKAà*鱿€Üø$v¤z³èýÜA”jžÏãâ>Ùçï× £wj˜\§´=çvåvû‰÷k(X»ží:h®^¼#À”··©£HÅ)ùZ©$ ²ÎÎÕ©ÙWw~„ÜÑv¢¦ìjgê(\\ÌÞ\€Ê¬;´Kµ>jž–‡;qÅd3+¬õ.³ôÖì¸u ¨ÌÚw%pMÍZ/îS£ƒ2B–‡“Q­¿Þ¨œj²Šrþµ¯Î}÷geT\];Cwt4^S;7PÉó´×„=y†=$O•)òljE‰¸Þ‹²¦PJ\å;2±=\Öfi £ÌÔ«u¬1Èìè‡m²¦0ÊÉ@â¢<0~]þID©.4Rýc Á¦¹ììv ¢ìuîé¶4p•ã‘W±Ïmüº×$.o2t{µ¦®®_®¡Èz„Ú§=ŠN ÊÔ¸%SÍRb“œÞZo ¢¬)ÞlMñ k æÊ´³û‰ÿ+¡ºÕç©#[¦=²M Ê…vem~¡oÑì¡fQ.¡%usB·¯Í´£²‰ÿëoÄåÁS}Þ6(Gß•PºãÙ“ˆ²Â{\À‹;>ý3.ˆry›XÈ-¸øËÞSå4sh09õòöôŸp¡“MC²¦©kƒ›Önm ™lâLw}¼§²[{ZíÚ,99õj»{ŠV<ºe—L¡’¨ F—‡Å¬ú» Ëž%û¯cÒ(È%–¥Ì Iªç*!P2è—sZ8a •,[pøßü9æö{Ík*D$]Ú#WIûöºÀ[»ôvMPK*>Ëô¦d%ä— ÊUb:ò‹+¤¥+aUyE%Çå84B €‰ðy7“XÊqFºÜ¡)Óê„§Ê–mv|–:OA÷ ö @¹µtç©Oú?@)*Oì8Ü^^ÕX¢iIep?$ÑæßÞ¾ç%"'¤ŒäÚLßv¡§lzjÓ»2OοìÓÔyÂ¥ÎOFÀ­srž–Ÿ0QÖ‘²(ý#·‡)ˆ2!øö ?aj’3¦8¦ ÊZDÉl]^} LÓzbLA”›þxǶ]§ Ìh§Õ˜LA”ÿ¸OûêDO«Æ˜@”x–Ðù¤„ÎL½ûþˆ2QÐ$ÒIDñÏ8eˆ:‘f½hd:ªŸzQ¼¶Çž½  ¯`@” "%ê㿈¢œ‚(3”RÞZòŒϸßÅQ¶¦áiŸ±+é6ýþ$ˆò¶I¼FÔLI ï¬07D)¿œ$ÕñdŽb×§ Ê{%å¡ó/4P~V1ëJ…¤,„^UÚCï­>–½ÀU*6ýn ¢Ü†=9½ÜÖ=q[÷¸Jìãé×&©XÝÏêç–‚(kð-È!M K­ŸDUN0ÕÉ€üâã%'¦°u|¥ön]{J_¾LYCýüyúEÅ,'À¾¬3ÊÄ-{ ÎrÑ÷]ò•Êw Z}ˆ¯’~ê!,© <ÛjZ¢é@‰1NàšÛùñ{X>îÄ –ËšBÍ.ýÅSDZ¥Ætq„eÄôŸ8Ü`«P¼ZadW`j}± A%}vÙ’*IU™VT?±ƒ­â„äãqÔ1¬u?ôDyVº7’;\ñë`8äA3}¾S6¢¡[×0§¯ÎËfOà Cؘ¼"³QIxÏ ZÂRéUÆ_×}²øûÂ61„mSìð•ô-Ó²dòYÅFjÈ´MêÂk…šç¦4:/¬ÖÁ3.»‡úˆÑÓóÔ÷IÏxg¹Â7¯ðÍ_ݧI%°ÝcWªTÒ3ÞÊ^ƹX^š-S ð‹Ëûw;HtöƒævÉh€œ‹Êá¹ÙYüxY{g=?ï¸FWI 6yÏ5E|pmùK¥Â]¸Ñj´àåd„Öd²5›F·§xY€ æ»0^J±¦ eÑwÿû«’ŽÏÅ›œ.¬` –ó‰ÏÖ¤§£ÛÁK#Ý+”ÂT¼ÒÕ¡Jw€DÜ-£«„r”Ø*:ˆeôKàeėއ±æ]vº^Is¹*“]¢4Ò~Ç*KŽúbžï¯ZÁjõŒKÐe š @iîòD 1íÙi\É·Ï)5udz[H}\ù<ñhH¼ùT–Epe2ÚMÀkJÿ% ¸28™3±¡‚w|ýûÕ]+y}Ÿ„b>C£5mæeÉÃz§¯¶q=˜»E—°=º¥/ᘠ>w»çÖÿÉ=7®ÖÕ¯é~ÄQÖ eÊ—-Z·(&3ùÆL¾í™¼}é¶¶æÀG©•‹ÔÊÀ794ÓKfò/p‚й¶”IÉ,·é:>ù “ÔÊE®‰ïQÈ.)þ ¾S+Õ”¢ ³7­i Ë÷ZB1‹nxE(íÃ[­-R+I.Ù§¢ˆªnXh,ñyªKó¯ Á®Ò7ĘPµ°.üKæÃuhVOQXÄzÙôÒ6½³ø>´‹QÛýíh]ð¶¾êˆ©ûÂåz ¹l’4½±Ctxﶈ« ƒ>á} – Ë@%¨Z-þ\"ÈrHÜC’úD.>½á`9Ôn ±‡Â*¯Åº2ê¶«FJ=a1§¸FÃK—ÐJN¥JGÒZÍT9ëQNù¢Ó&µ’ä³½6;u·Œ£…ók—¶vl»Úvê³9‘‹ìÊ”2ýKj üªLo!K»Ò‡kZTTÒw?åߟž™¹@*§îSÂ7iAVXÜl ©Lâª&†éSÝÑYÒ>Þ¿NB€[“U~÷DïµJ=˜ç_€K 'Å"kþœ•êhzS­”a ¦Œc¬©TõiË”±}]:I”…yÿb~3ýGD0eê¾ÀK¬ékݽÕÚé•0E5ø('p!§ü] ­Q·—/pÊFíAPdÑܥ˅[È)WeM¡÷'kÒÀ»(Ù½4¥²&+`]‹ã¤rã›-R¢Å5³8på‡ë§z `.¾÷^YIöN,héã°"´dÙ%ö«]v•ܺáÑê%È2‚sãÀÏ‹kþrÇ5N r›×ü-A–„µ](—#D®X"XÊŽ`¡? ›óyVÒ#^DÊ)ßÔªkšµ»óûY 8žo&®´S“Ån•Þë`¹jþymU‡/¬ ØÇµýÇ»Ôþ½Ò‡w©ÿ¸¸Ÿ·ûüËߥûùz(§6ðhÚ-»'œuî§{hd$ýnëÞYœXkÂ*ÇNÁݧ)9­…Ø:U\¨Ù`SXΛKZÉ¥ aŒäª¿¹0Àʇ†AŸÝ˜¯Z5Ä:PZv¾'S@NV ¦Zs"¤³’í&†îù—Ñüþ¥¹IÉ:vne­TÒ7®é7­ÉåYi3*•ÿ´&íÝ4Í!Êáí&wuLN½ŽUê.é&Õ©÷ßëê×AhåþẸ÷Oøò‡Ã¶«¯Ì*h¡5¶Ië±ü`Cbÿ2ð}³¯ëR ³šµ÷#…u€Rò£“±þÍo&Œ2”¹‰ë‚oîíé–ÀqVê¿TÚþqÆ57Y:+_*mSœñA% »Ñb)DÃuøÎTð$þ¿M;Ü€eæ¸ë@`©Ð¥G_}n¨+õ8·Jg±yVÑž­–½p‹¾1«&­C€äKßXúΞ[¥}…Hv"Æ—:ÈwvÚpœu¬Ìî*³»ºäcÝL¯Yåu'0ÔgîÂ(¾c yç6|WBÔ¡Oÿù—íÙHö}ö‡„‰Ùz,GL8 ‰T Iu:†á†dëŒD ?U§.mDÓæ°Ÿ…P«É&zZÛš%kg{V¡$7Œ¨Ÿ-@Übø_xd—ȳ“¶F2|,ßCHþÒ×FvëŽö¾a’ÏkÛ´üG,š¸•SxôÓcGîޅ欄G›ã]ó»Î8¾#6¹+eœØ´›âÀÀ³½6 9š• ±ÐÇe¬EeJmvÿû«Rý¤n=R­Ôλ‚wH~cFù/kÒqÛŠÎJê¹C3‰l–¡”â±|÷.˜ò©ì‚èDØ´ö1g%á”]OfDz/‰úòS •4.4èå]<´´*•ì;îäëN™)KÛÖ!äw¹?õåŒ×NÙ4*ùMFq‰L%á”]þÿ]íÖ8øáìï&ŒòQE_ˆœŽ»”]-Ûc-zýù_àd×™ ™¿õUX ÊC'¤d5B#¤ñâ„ 4) ø¶EøÇÌæJár…ôH'xD2gѾtC®ÒøQ©kDZÈ·Éêr6Ö!d2Ì;L¢Û}4‡q®CÐd0¶¹k^Ÿ7 ÷åFA“±=·‰`JZþå4I²e9às†Ýaøg!õ%UL  #3˜IÇðÈdâ#H´ØˆÂäÎïÚB&Éî x®±´­ð/œ€É^„’ô ¼Èc4§[‡€É½¤¥|Û‘¤Y‡pI¼;ºÁ›2«Ë%Z‡`I²¼T§¢ño«þ°M.å‚|U4ºþýÿ»IAî&Á’¸ã~Y6Ëâ^E˜äNsà¹û)*B$’ü›dôM-ÒFi©E«’ÜI`eÉ>° mÍ)BV“\²,KÚ Ñ[s ¬Uv,%qç¬)qéíÓ~ü Ñ”UžØYdôѰ×éÖ&`’-é"DãÛV}öÑ.äSV" *AU®áÃ:â¬BDeÕçü÷A¥ö¾1•UŸ“‚3â]óm%ippìEØd8«m•-¢Ï¥ }à}äXvpW„KVtíÚKêð¯®pÉÔ¦”º¶³1ànã1V)̸±ÀØJ5u\9ý›[Ø·abú¥f´Ûþ—mþ*ÛÞ ,U!:¥M‘9+ýý8ÉÔÅÎË6k®N¥vÕmõãÉe›¿ soSúþ6ESœ_Ç)Wi£’¨7É„¬åŒW* Sb –ZœÓv%çWLãGGÌ×'’cª®"`òç6 Ê«†½ù§ùäAàé!IP! úZ§«$:‰43ܤ脹¦ã_¯"drßlfS˜ˆ¿ºÛjº‡†É1˜N}Û´ŠpÉ%ôvÉ”cwÜI(€’UD‰ÎÈ¥§¶ÛÑ·ü¬tó7ÀåŠs•P ¼=K îXY¥ù*'#—>¤VîõÕ´GÁ"pò^ÉõUÒȼ#1ÖácÁ“ûê öÏM@±¢€U‚¾¤òñVºBTu8yXÈ´ Ÿ$®¤XÁç_ñA%µ&‰hjŠäÒ»îÓù‡}ÀOÆþÆå–h‹‹tê÷UOÜ4 n±-d­hÁ“%Ç^Sþ§5AšÒôU94u0ôUâG•ü£JLß– ˜¬‰2 ÕOÖ­žµ"žULŽ·ñE½¦0êÃR ‹€Éó´­¡·è>‹Ÿ»ík0¹8›ŠÚü4 Âɇƒ°*}â ¼ ÂɵyáÄQ!ĽjšJB'ë¨ ©¤x âcØiiBYΦC¯n IË^ðøŠPÊÊÇ©òuº¯óûêìo×âÏ5Õ…Òä³5q°”¤·,¬‡¦ÜVGøPe×7¼n„)w@­…áJãß– ÄÀÁÀhÖLcA•Q46‰%#œ^žó¬ôCiFÆeÛ£S[EÈ»CLEíÍb°~ýQ.°!:ËèÉæ£TSOvMrRý€²tΔzÛÆRC1@òf³s®B0e ã BI7õ ܳ»·Ú€ ×uv<+†™NYõ%fAyLÚ çá” £Î#˜â‰6m*áYHJœC7<Í»Ÿ/Â^ ¥NºÍfõ]a” –ñ½‘jæËˆrjÒuŸ¯Óé#çÚrQ.iB"„+öß­øgR%„ð…¯&¡«£:]Ð*h(ÔAX²œk$”?«èÄý¦Š&%Dþµ¥Ýº-¸ºLŠpÉhŠ!Ì%=P# ³WËr+è'ñ BŽnLàL,¤—,!·Ðó/|Í¡ouË+,[?‰bz@­iþŽO&x9l®ã$Ùbúy¹°ÉÒñ îD’%2Šß„O¶!œ»LÛ_ÿå8“Y Ùܧl[gêï¸pJ$ |`+â(Â(›X¼h †X¼Ã"JE%U:3ŸTÿzEP^\ÑôW”¾¹•üMWÚ¶Ÿ?Ô•L‘ÜR4Y"í[q®g9“è›Ø„‘cñÝüìþçÐØ£È$2Èg'=¼ûÅòQj0Ñ G%]¥“ ¯pªà“ñêT¶C™ H.ÓE•ôtóP&)YU©yÁu‡Üé'ãþ xø5 ‡l,›i;Ý™À¬*² X²2kyújùJZª•¢U¼[éB+mhËjŸúÐDêÜ·9L Ðiýª°ÇÚì·ÎÔ*¡CÆ®ðúU­h+Œçû{¤áÈÒ¤¼œR'šáehU0$¿Ù^Áþü ²ißîê¶6Vü¢ Ê!dç_êiS¤ŠÞýçV(di˜¹®-ÊL?„¹d®¶¤XBHF·’Š$ò 6õ!ø<Ø YëYIõTšÔù—(¬P…²Yë°*@²U‘zXÛ6pVR»­“Z;´Ó^žøß…^ìþ@’ ‰15†Šï|ôøßR’d@ÞC»Z'Ayxx=JÖïôìk”˜éü é…IC¸d;ôEê4PšÖ°%„KÆÄ¶ÿ ò2ð´K»…pÉàÓ6 $8°´<¬-€%ƒ)ë/áY¬À.PF>¨‡:Úv0 é­B¸d`GØ‘´"2L«f !“%„¹—¤|^±Äo*Áó“‰HïÒ ôŽkÏpvÄ+¶nqõqËHa'±£%%9ÛÊm¡ç{YþyìxIu7‘ý#*ÉWÒT{Jø=0뚇hŒ>¯zŘSÞãÑN˜§Ÿ)„ É‡¢I{FdÝÛ‡…€I¨õ0Æ7ÄíO8!T’ã§·¦D'?ÐU Ù®+te’‰÷…½úHRÀ_ôB##õTGr¤A¡ãŽf°-‘ĹࢭÝUÿ^é^gÜ«s•4ØîpuRŸ£64$9ÿò?Ür1ƒÈ’d¶FhÈ¥qK?¬E †ü%®ãÆ•âF»JÛí§D'ƒí0y¯äWŒ¥šÍ Ä[0LxÛ]=^ †CÈdÅ×^Ó–u·ìÓ$dRIJy’fµÜ¡@)„Ì>Ø×üxLˆärÛ)!1–‹ê]!8 LÆØeì/E‚¤ÈPCö© Êé>áyàÌÒ‡öÍ…zSI-6 ­¥ˆ|R í‡÷ø pÈ"Ëý﯆T;,.„C¼ÇKCj~hv‡?÷ ‡,ð¡ ú×Ò´÷Ÿß,ÿ»´7Fÿœ²š¤t¯Ö)R˹;«©ÙŒæðC(ìY‡¦‡­î˜^áó°*á¹+åøçìA„ y{Ö@y¨Íï€“Š†9îê®ÒŸ^–ylÿÁdÌoØB"»¸Þ˜¿¹8!‘¿Ë²•ì ¹ð œk/I¶n½YB`¤š­Ç´nùÝZ@äÒ&°4öÏ£ðë[ràÓ…7—@óá¯ùIPd Å™””ýdiâÚDQiýXÓc>"‰ï›5 Ž|¬é{%ß=r¿&D‘60֚Ĵ½l$צ}xmñ—JM+¯*©ß–"-ú¾6ÆHVG$'\›©²v쀵 !’€Q7Uoê¾Ý–$($w˜È?RHöð½è†#QlêÉLéÕÔ 5YøÏÇ´¤IêëýÏ¿ÏGjJŠelåN„®S®c>;mlüJ’EÚ¨‚Gë®Tªí%$ùJ¥ [eÍ”‡=åÎD´¹5‡X¯®N=63„6ñ )R6ÎÃâ)$rèÉ^úÖnëŠðìϹWtþ¥‘í¡±ßl–"‘Â!«´¯m;HHáµÁHàõ^=·1Eþ£ô¨º+Ù«ù Z f䟭•ä¯W·£^\Ûdì´®T¤Ž q_JA‘ ã‰;Ö ^ad'‰J2vô¯­™„cv˹Má‘÷ɸÀý¬7÷óí9QI>NÛÉ×@úU%íß«¦D«ÂnÒcí‰Jò— ÀgkB'É}º'•Õ½›o$Øä@“èLÞ^­I»x²‹'»8kŠnMhRøäT¿6åR üpëêhÇÉp¯( ¸½ZQ£’îw2ãÀ~êU¥þËšdkë“»4þ\Óãê>[Óüåê¶ eÿ ’š”’4; ¦MjÒœ~ï:ùó(‡èRñ¢K`YÔ.Û†lhŽ0£À#%ºÅl@24¼}VbèÞmÆn‚Iî5ÛÙgkBÐŽ˜¬!Ýú¬’šmp»_â>‡WE'¨¤ 5Ùö4m@¯Êô?ËÀgÀ1üMxêòÐLº õâŸlá‘K¤_ζ—Ñ£«£Ó/ bEYbEBø\–I«ûLÁû\„G ¬¿jf³3 P¯nšMÜÔW‰‘6i±Ìý±aÝóRdc‚ØFõ†•DK Y‹ŒkK¡½ÄZÅŠµR(d$}L꫚œóÅÙ$²‹:|ÿûzÿû{iIm)<2¶ÙC‘lØ`Înåq)HRº¿º7Ç Šía„HêW£J2Óz±–ÁfÝ8SöÀSáElh¢Œ¬~~ oÝr#rFJS± ý(~®œ ~I8¾–é m]§ø£ÓîìþFÙˆÉýGf—d%Ó~}›0Ê$&³Áœi09ÞütÂ(§FS'ù¥†¾x[‘&€Rç‚¢XêgղݚÐɈÊÀL÷úüØp–{± =ܦc‘jF$io¶hx¸N} Ê—ïÖÒŵ•ºÍ² ¼ÿ}áßUBWðª’zð­å[úÔC[Ü«JøoK]Xñ9jѶ[¿Ϧèä!áM=´ ÔCÌùzØOf#Ir" #:COw÷´—:¹Ä{ÉÐ(/±okÍFHµ‡z¥‚z¦1¸8Ó’ŒÛvq…_Àì¾O‰¦Gµ²¢&|òû‹[~ÁåšèêH‚#¦X:ø¶¢ì¯îuNMàd+â…5†ï°½áý÷i’ˆg{â.Âí¬ä¦?%8[ÔS¬—Ñ}3@žä¾Û“KÛ¾‹ö&í ªP¬Jþa owËNJ~[~7±ß™öLßðp- œs»“& jŸÄ_j£ŠûêºÅ'›ðÉ¥ÌÕŸö)ËN›°I¸øÿûÙ®X ¥MGj‚&î;D'´àuêMÈdœÇØóšÃ§ŸÄ4D“üü±5“ÂÝڲ禆fò¯ƒ½æÝš€Éí ‚d!D }ÁÂl‚%7yV¯Hò'íÍ0‰½LÐpá.3«åa6Ü[áˆ2ZßuüýA^“ Ѻû6 Á5d“¤Û¶*~a«âàõô[-!’¥rç±M+3,O½mÝäŽNØ£XE#ýÎR©í‡c Ž¯Ò¦ŒpÊýÁÊir|›ÓNqš`Ê©6¢zùË¡—tKßhäGn‰;óÊót•4|$v†fK§·‰M(eŤbR÷ûM%5$M²ONošÌÃïH¸¹&æÄö&$®ìVŒÕVîJ™ÉX_IJLëÜÈ|’0¥›ï›Vôâ¹TÓ @p^‰D=K“œáåAMˆ¥ž&ÁU«®4nWCÞR…‘ñ‘û:,èÑL¾Fƒk"²y¤œ7$“„eèèÖºf%­[BIC2¹Ó…ˆÊgB†õlH&–“/R†Æ¸~+Ùp¥ÞÛH½·‘ð\Ò‚C­sœTß¾“õ•÷üËî%ºNÑAË”,¸L'¯uºJ'5O¨Pœ2$¡;_ûÛaèš²<‰ÄÏmèxÓ«›6`ˤႨ|ßû—wØr*q1›>•£°ÅOñ 7äK„Q+Oæ‹û¤g¢r-‚ä+n†?v ¶¬]Ÿï:µÔ ô5ý,ØòQ ZÙ‡•Æ›JÑ-I±áé:Iÿåê^UZoîÓ›Jxºü§¨…Iæù—í—[fÑÛ2†È¼3&0“ã ¤¤R Æ ]Ý@÷ÖŽM°e NÌÏJóƒJùçšúþ^v)¼ç‹g\°eÁ@? mshøÒ»¥`6Á–% t‡„ºP{ñmÙ‚J|fžkZT²o‹`Ë;Ðé{W0¢ùKt›VЈ˜¬uWªÿ¥°åν8„5\Gú‹Œ`Kôê> °‹¸-ÇÞÀÑöøà£h¹·*¿Ñl˜MMߢJNáƒ×„ÁI?,g¨#«Ä—宂'{T;Çé,‡† lÝC@Å×/ꪈÉ-ä@Ä!®§5ï‚*»á]JÑâ ¶bõa]@å÷Éàš—jSi9–}ë;(eÓÏ^šºÜG}úétJYH¼9ÿ½Œ‚gZµŽ¥kQ°0 NRK²ØïvGJY¤ÎÀ‹}v¤¥Ñt`Ê\|EP@/¼|Jhß0åN<ÒÙRÆ}Øy@'o²ik+M'¹}ŸZÚW¶ ¦,Ç¦Ô ~‰Ô6Ò¼kyR¹ã=ø|nËZ{ôîÂ*s2Ƥ'/è‚*ÉRýö°øz*‰*²mL¹‡ø;ô&Û™Ñ->Õ…Rþe9v@ÙQbÈ1ÅÁXÒ;-kÒ1uŠÌ>ÿÒ¹»êŒ›vé»N„ýœ»³êŒ›/ž  Ojg«Ðß÷³¬–°Ö'9OÞ5+5¯J¶¯íÀ“~ÉD`ÈI¢,ûéïÈ'ç ’Î$JþLÒ殓5©Ò*{M¾’f&¿Éðˆ÷y!Ãë ”°g:p÷™²ÍÃNr»Ê®˜Û™A{äù—}Ý„Oþ­N;¬(¿ ž,ã—PžN×°\„É.{È\2yêUسX CÇÛµ*4 ™lÑ9KÚiwÇÛ5U©6[š¦AÅg©w¼] ?É›iB–û°Ô™¾½]5~#ÞyÉॾø ŸìxÄöÎÑ¡‡ça|ù7—¾ùM„lI"âWÚ£î¿ ¨»ïÚÑN’¡\p,,pf²ûÒÖOª¸Ë®—VÀ ßÊ.Œ2û\ÚHð.£¼Ly]¥ûÁ&Fûé†ýE³óéNÆdÁE¹U4k™Óþ;“¸(ˆw͸kšJŒIU YMüÃPË>â‚)•*]@åÛí£x;8eÇß»cñÞé–¼3[GMâqDê Oºƒ½ã˜¼>Y ȳ°Ôñr¨NääB|¶õ]gÂM0y]"½5B«[kœßü ŒÉëêìº}ïs5ùû¤gü@]Õé–Šìt¼xž8SêÄœE§Óó/Mp=:Ø…S–®M<’ž¹ ­óÈIïlã…mITèhñBÈÔXöm«œàDé OìíB, ¦:wͯ;Þe¥pUw•òÏ5Ýÿ¾²º·kÒ0pŠlUýI|wfWÏ<ì^ÐûŸW÷XÖà¼ã;K(§Ì•ëÄ„ä¤yó¡.ÄòÉ‚§I!õ ¾ƒXR)H2Ø÷)ºž„Xþãê~0ósZòN%¿]å4÷Ùo·ËŸkJ¬P®{ï*éÇ.¤@üÈë¿cýÊøµ75†£“dÐýÌ¡eÕIüÖÁ\ƒ\͇Õût„–lƒxއp?¬ô·#´¤R)¨Oöè¼Yt° ±Œ¢îüKWW°ú)~b¹$ªXXQVí…—Yvá•Q$³¼×vURrd¯þô,¼²¡Hv6t–pÖ…U¶F.QSøƒpÊ!&Fæ{-þ°#ŒrèE궲Ʋ÷-«ƒz,(kX¢NoÑÙ·¬RV†[b]ýgZMß²ÊB%â3Ñx¥ÿ&mÃWx&AÖ èë +ïèÛðõo•Jø¹É6|ElØG?*ù]Y%¿ÝŸ{†ôø]ˆ’¾+Rèk:œÙ¾kqÀ܆ÿðL’˜öôðÚJ*ÝâØÊ:ãúË_]ûY‰©'óÓxñdS>¯Ž°aC¯®NÏøþ’ürŸò#˜²umâzßÁŸËZXur(1yªAz$ö(cÙ$›¶²*`1*f†‡$LyXlhª¬U§¹L}Z×l°/ûÅ‚++c†Z'»Š„G­[Þ8âÇ}ªúâÞw,î;æ*ɱ[®í@(£ë´3ý¸b€Y¨%öl@;A±ÜÌ!Ì2±ZoU³ÁÞtR}¡`–‹ÀŽ%«å²ôËù_nRé ’&¨+v%÷=`–Ø ÷ äÚ1íäsvñƒ½÷`ï-|Y,N4À,kªTÚ¡m¶[`–J;N 2×±NòC˜%š溕iÅ‹IêdYA«C£½2ô dµ†Ky% iwêZ½¤6ºßé÷á–×ÿõž oŒáÆYÓW’BªÉLa…—ó¨ã9a—£ 1*—¶e1¹!ìòg• ê«·¢LÁ±k~PåOãŠ^³Ã±ƒ$Jýêø#QæKeëªÄ7f;b|rc4<Ç#5¸ÑO§˜JÓ"t´­!yOmö@2PR‰.A}Ćàìm¦ŒÕC|s•.ÎÂð!e(£5‚,32ƒ{õ5•u« Âù‘?d?Ø‚*ãØaPàÊj!æ±c(!õBŸ©Ð^ßür‚*Ÿ•Ï€&WMW)þº¦O*i»&A¤î¿ ò.–²0€*Dƒ…†}¡aS ;éÅ3Äzk˜¶fÝP^¯‡ˆfõÐÇ?ƒxeŸ%4À+÷‰a á˜vL=ðz-¼µ.ŠXëU}ˆüh™©w#æìÇ1m´¬Î!ܲ¦DU•,¡‡'îòm„pËÖ5èkq4YM|3 n™P¶OoM¹kÌa©ÝC¸å?®.¸:ítÍ·€Â-kãÐõ‘˦,lþ¸$ܲv‘Žê”eO"÷l>yk ­D4^‰­ƒýÉÛ —/ÑÚÄ£¤vÎæ[7—•HÚÿº&—5µÓ%9òãÁÿüË>.kˆ3€bðplV]=6p¹Þ¤ 6v•æw–Ð`îš•šq×t•Ä„ÕǼñ-À¡îŸðÆ.bfm¼u QdZ›!زïþ#OB¿Ü²r‘¼²I\u¯äZ“èËsúïÙ” ïï&¡æ‡Ww?á Zv×é;§<„rúB¨+õö‚\7º9?bäR.B·—8Õu©sJïÔ1YžÿJw{%;Óbg²@ã@dÙ5¢8ßSö]ÌŸ–ÿÝY^y|£V¥äYv8;œ!²YjÖdYþHøfØð³ùŽÈ²iMçWI„Á•ì»üdTÚýÎXÉš¬yà {@¬:vì6oÊá+Yæbœ§‘WCdy]±«¤g¼íÁ ¾O™hÿýð{² 2gƒè$ÞyjåÀ¶ýòd¬÷ªœ² ܲÈöb‰5CeÔ‡v¹"4eaÔ!È2ÁmÂwÝ'Úd²±":LR?|Hý²ük¥h¾ëd©¼ IéÛ™.¬öw °ÔjdG²Wóœpà [È´®³o_°ë§•ZA–:‡ øÀ‘ÌWˆ?* †¹+ؾ ØBXè‹9é!¯!¸2¢£cÑ•âIÚ, 7WvM{£"´ü†&¬²‹r>„sÄBJWü'[Hå^Ñåø«ÒNýû¹[÷ÇÛ `ÊERú¯•ü€˜’pœ¬tȵï½Ì¾\$S®Îš:kÒ^V| Ä ™òQiü·JŒ¸¥\,( §›ëŠ]¥Mïfꮩ`YË‚)ÿ¥R§’},S>IþqXIÝvNð‚߯¶´yñŒ£¦L@ØA„ÇÐÞ˜Þ«k ¦¬‰PCìßÈqL»›L,`_~f•õ€ŠöË?±€ äϡ慌]%#tz›ƒL€iAÁ‰ì¡i~ÅŽè¼:­©Ù]enq%€PÓ·Üñ†ý®Í-®„N¸ÈP;<€>·¸Rb¥)áª4‘Œ²ØãÛ¨„´¯®4v•f÷ÌINåÁçÀÊ`ÒÝNÇÉ©¤R†öÌÆ ®û4ŸINå!S„ó/}3'IŽž$8T&˜¶$'ÒQßÝL€Ê.s›1W ]ݘvÏœ@•hJgV¹eÑÓžLæÎ©huŸT¿'2#i6d>œ`‘ëaÔÐötØŠìæv‚å7ù"L/öA•5Pêÿ7´a"µì" ÷Yxž¶y—%‰Lœ`qÝ»±˜Ê½yÇɩܕž² -Ò›JõÇSÐdMz×|[ A”ÿÅ :ôhMÁDq苇ÖÃR§ÌÛãú»ˆš*]VÚ®’N•|[¢AóÂúacæÆ0qYÀÐ}àü0}¶÷$©’èú²ÚMsj±Y~ s'ò6%NÕ¦Bxšï z\|ùJ]ÿþû+åå–?Ø…Ô\E(Íz¯N䖿ܧò-á|yŸ[.ÈÞÏ;N%«&ŸÃÜbB=„äÕÕµ_*ý·ûÔÿ½Ò‡kºçnX‹(Uur¿—¥®LL\¸óÀ¦õÞùÉ·o̵sçq%è8”¥o|ñ„eøÆ—d¾\Öƒu Àœ"ú-I—P¹èþ=z¹Äðb†¾ê'eâ_oÐHMòFú=Å%ΊÐ(pà^Ti>AšÂ×í¿,‡e’W 3y9>+ô¯4VàŎͧàJÜÒ1KgZ¶ìØmbûïUfXŒj §œÒŽ/*We1ö—B\9goD9E½xñ=kìÓ‹ ù‰Dôi©ÔSeìdC•îu^ó;É›-ÿ¼ºóJ¶Ñ†ÐóêOˆ+Çf+²¦Å4Ù›@OÄ•«ÓCýáÕÑoKÂP&†Ô¯Ë™ˆ+÷SÀ ç| ’§ÀWZ\ݾOLªÄZ釵ÄVnçŸûùÆÕ(Š MÁ”©ð¤TÖMv²“¸AÛ3ó^Ršz œdfZ3ƒ…!ìƒÛCÖÜò2¼)ÍB™EìÄÊF†}ï–V¹@(›Úå,zÝÆÎ,MkGµ‚á Ê–Rêõ9†7Z‘¿\]åêæW÷ ›JàIÒüÍôŸÛP>0rtÔÓš5,!”±Ó«·urQ}N;³\Â(…âí¯‰”^ù5ÝwUéÈüöt¾f'89/á“ÚÙÔÿÉÓìZ–«¡^„¨õ£M­'Ñ-²*õ¡ >jj gõßk“ÈŸš~§†8¤úÇY°äwÎh‘9Vý¾”ïk²—EN%éÙS?S;Ä6î> n — ¸æI¥^°[.Xh)«2AÏ¿´ uëL¯Zh)ŸºE!&©±Û¹EúÛt?Í]T ¾óÜPVëc·Pv½íx­îÌj–ÊŸ‹¨„ýgCàd ›l:14 Fšß,LbÒù³Ê¬v4¶„JîÅh¸²ÅIþëŒn2fƒ£ *ñxq‹ï§yè´H–͘L¢}•ˆYC}T±Ý4zÉè\;OxÛàµã(Qº>* /v¶„DVB±*¡XuwøÅ2IšÉÇo¦5=k‡ÿP ™,‚ÿ£ö(B¶¯Ð=WI£*3¦Þuă™Ã’P–I KQŠvûRüáLˆävvdšýYþ—:Iûh lMôšÖte­Ñ*zDrmDR²2õÒnŠìÖ¬`áðZš¦½E"ÇZä7w>vM ’ÏJzQŠ^¹ê]¦rÉG¥µ_9=|þã‘„ˆØáíýÀàåð¿ÝF$5w:»ßÁo¡ü°¯]V ¥oâ†VeX6Ò‘„P~׬Ԍÿ½I#Y ’CØHJÞkšié D²¹Ý(}µy}ù‘lÂF‚€ê蓾•ô-2)y nêµ]>Xö>áñš2PˆÔS "'Ý,<^µ"Qïdà ±† —×ßê`ªd©¨KxäùÎ Ù,šÑÕ2˜õYBÉÚJØv¥Q‰5~º.¶u€õ±œ„ù«TpÛï¯r6Y$Àrûx³*9,l«—¾³¡ÜH÷«ä^dÑ‹x÷lbáWíéD+M,ѰiU_•4T9¤ñm‡|wÛ¡ùe[î(õUJÍK=pÖùé?Ë‹oHå/äÕÞuzé6Gý« ü ¶óë +„ý*… ÝxUPdGÆà#'¿JiKÿ.ðÍžÑ<$zõîF_¥@+¥?ù-ó¢äØR:{.=èIv›:4 {üø*¥&]˜>òŠ¡‡jÚAôW ã:ŠÑ«2M ÑÁ¢£/{±kîøJ=Me¦OÁôé̓)¢wJùK_–ÃQNÏRè)‹ü÷£éL”SÉ.9ò«”+,éøouêŸW—(µî¦ñí±Aàe Ù1‚:ÿÒnw¸9ÝW©ü¥”:©ŽtÀ•úÉ„Ý×6Œnù”_¥Ä¦BC¨¿‹5jëÃYôWÏ$7Bþ*5–’xô–€_síŸÂ,¥Ä‚«ß—W)‡Ûœ¥„enV­H'¸%ZS¡¯2åÏ2ŠcYùÉýÞ~°zíj×¼ý`ÛxÑ ¶üÑaašñæk×~t*2ï‰þ÷®Pû·B.HC–Å&·úzÝŠýUGƒñÅ!V&9Ý‚Q_…0­WW8÷V©µi›¯J Y¯M’óEI‚e#¥¹i.^P£ey±Ãm?Øí’¨%9l´é˜¿J©Gù-÷}m® ü~•BK\lé9(¬ÊGÈ•ÿY 6d6ѯ\x[ªý¸Àµ#çˆÓ{u$hº™tä†öù—cÐ]vɳËɱ­ƒ±ä‹Ù8ç1x‹ûÆ€ž7úU  t¢ïõ½]ÕF:·M•V j_Îäæ«P§æœ÷ºà2m0c¾ø?Ò,q9 `#éY‹ÓL~•Â7‰®ï‹†Áñb…ø‘j"ãl¡v¬çþUªý¹$Yø|¸$µãò¸‰8xÌõ-Õ ‰¾*[Ñ=éŒ7V_…4^ч¡âZ=!ýÙÌ—¯BÒì@×î:¾^$m-É?KàœßC÷«ÍÜçsÍIφӿwˆ/‰0:ÿÚ_bmwÕ¹ |•bŒˆe]¿% MÅIÿJ«B$ƒ‰.YÃò§¾J©%ÒQS_™ìb\ž}Õ‹RˆÓ´sž ‡é°¼+艙SÁÌ©ˆ¸[Ë‹‰$L”JÔê§¥ô¨ÃÊ‚!"fz¼9»`[é7Rš×’,³¸8‹³Þ±x}fQ2FÛQ{éœT¾J11ßiɤö•ƒíîÅžú™ê‚ο@äˆ&.N0õUŠ1bcz‹iìÙl/ZO! mh~4À Ç÷;õ=Ü|QJsæ¤I4B‚OÆáàݯRj]š†ïÙ4|o¸Úv›´ñU µqcäº#rÏ”ý7$tjÒx)%®U½¼hC)ÜXÚ“Y߬«0voC÷Ð`U4™øU ‹ÍY4}!6[†‡O q—‡ì«¶#íù՗˾¾Jic/úr•'*dYlŠîW)<¬Ôæ•zpöÃ0ûÅù¨ìÌK8_lìçZ  øÉrA”ùÛâòî5n)Êuýǽ¢TQjþ¸ÀzüÇ ÄjSapÇîX†sì8K!Ì|*jDµNÞ«4´sÛ»Ž¥¾õürå²¥*¥~¸·~zÈ3µ··¡æjh¢7«Ò蜣Vå¨UMuǯR˜’?½ÈŸ^œÚÂOa‹ÐÐØèÎÝ™ZU·¡œ_¥÷ŠWr¯ÈM8Wî«Ôý´/KCæ%B‘Mû*ƒÆ^Þj«–œR—£\ePiþ,óÉj‚=àC{AOBÚ»oˆ‹ Ð!{?’°cù{ÿœz¸s1G˜tfÓéX¿J%¥xŒ4¾i$²6kNüUê~¸»±ÈOêê<ÛzñÆ Ý×W¿©Û•+}½(õ-—'ØkbP5§?úa Ù5Ì.ß6µ£´7û~²f€Ð˜äNZvÖÁMvˆàT‡,;êДºŽÏ8‘˜|[þá·‚/s|•ègv>¤Œ¬#)åñ¡B(æcUGýqÖFÿ«Tþ,Ū–ºÎË´È–¢C'p`—šb»½[UÿãI¨ý—'Á¿Æè5pÐ!z±bͯ:t+ä`ü'*çW)íá˜/YÃÅ¡v3Ú‹mSè“^ªfÙF)þlU>Ö¤ÑTAÕZ¬ÓW%=äM­ÊÍ5ýÚ¢R‰aô¾J¡Wy:ðµÙ,ŽÎÿUJÇP‚„ºI´/‡>[¨ñ³ôô°×ÆÃnÍK¾JÁn¡c¼7 uÌxñ2oIh§ó€ ؤ_·*ˆ¹Ðw0zèSê˜1_< BBËÞØF£‚d–§ÏU kxŸ¦g“¿ÊÔ?TaOw™[ Hè7çºEŒ&¦æË3=^QQ‚<ùÜ…E,+ÍΪÐZ”ÐY9nW ¶úôSŽ*(4áPf"jý`NåÏ·(´h0Ü:|¾®)ìHÏ«×Ò>èd34Êð¡ºõ  N18j­OnûÖƒÎK¥š†ŸïJ•Ÿ«z”º_˜«°¥h_äFx¸ú32 ^•û\ÕÒSµ”÷aóÒ¿ÊhôReÔS_¾NÂʰù1_¥D>×\iI“ÿÙŠú¿–1b½h:…‚ÒŸÁ˜ró+üK'ô|Î5䢥n°GõºÛ*´Vuçç{(Šp…û‚D[ƒÖ*»žŠe0Vš/P”*ôvˆø.UY•úàŠ» ZÙëªNÚçeOJm .PÏA²´L›* ôyÛ!³ªó·|QJ›y×Ô¥âZ»¶‚Ùœ-éW)Ð~XÞ}þ(UÇ‹­[Û®iå½¾oKÔóþb¯Ã×öQ ‹ŽKÁÇ%VüÀšªâŒòæÅ"ºKßåãÏRùª ¢r¡âhú·YÆ…y *@´é÷kˆvĸk^^X…‡í4:>ñ%Û‹æEh§ë’jd…l s¿Jiˆ¾tšíƒÔmRÜÇô xÝñ›×N€U_…Ö:Áñ¢ßºtP\¢÷¦w¾P+T¡ KOsâI 2Üfyñæ ]‚Ñõ'Àe«/öHA IO˜Õk‹«Ð®!GÅÀس•ͳàÏm~ЏçlºÔm“ÀO nv)b2¼ª´±Ïø¥Òlà*ì3U ®N¤Ìíâ#¢ ùD”Š*˜÷Å›‘¨€ÏÔ°lg¢=_¼möDyH8©·úb8Žô³ÄÚ »7=™Œ­8à†¬y2+{H×zÑ:#ýL´Ük¹V%£ùê^M._^%U~z›Îr‡³Ÿ ;Ô_Â"غ}ÿ{x2hà‚+Äeéð»D¸[þÒB€ç.£˜™¥~«¼p§ ¡»nÊOÚü‹B`rb(]©Yåá ðæf럲{¢nT_̽çÁ>WÉU.2lˆîW)³ˆÿwnJ"fLmOù aìs ý6ÛÓ‹g‰¹¸æj%Ž’2š8ÿòW‡õ-WJÛ‹zuu:ƒYv<Å÷º¾þâA@빯¯•}}êà›?@g4J¥¥| ÏUÍÿv×Åa)jž‚}%Цç È(ûIß2wn;~ö/P®Òy(ÿ“[PýŸ.TØ÷t!¤óF€ÿeUùÖ‚97ªXôæ¶*}ÑiHg‘j)r¬$ZÍ„ÂÀü£nÉpè™/¼µCXg裸¬kÖð®B¡m~×ΟžüB:£ük9½Uæ Aùwn|´ÍPê¿àM¹vè¬ï Œs¢Ç˜š­V†Dsú!m€qNƒS­æ]4”øåMã˜Xk Výè*|Ntg“ ÏV%Œ3ªÆ1ÛÔ71îÅÓÙŒs3+&~äȜߟ¨‡¼  MüEAlµ§®,øFMÇé~xjê| ÆÆƒóëô’ÈÀõ¶N>-CvÌ1¼Ö/p½=ÔF•^ÅWáî!¨3Š“­¬+˜P—ûU ô‡1ö}}é¶îv±S;uÏðM/믫"B€³ux+ Ïù Œo)•Ë­eÓ{î… ÎÒw*çOÂ2Ï¿ü‹Ôy '?DÚŒ*oÆ‹/ Þ·S>æebØulgžM§ Î:¤%®¤:Vb/î—+…øó «Æº8*lîê!ôÔy¯¥°– -.-±ßÓ…uF!Ì‹˜¨²ˆÉN±!¼³Îƒ‰ »Tó¤¿æ¹/ðA¯c$uíl)=íxhˆ‘œ³Ûòdühìì£ç.%dʦ }•ÒATKÜ9±)œÅZb[áb"ÖuÌÎÅÙ¸yõÜ9Ù©ª²ZÚÙª÷˜¡“,hÝð…ä$^œaÆA ž“‰Û‹–ZPçÓôRÿ®‹ë/¼°CH'ç’Œb!yuqÀœX Êkh K¨Ëë,jm¤¥|R¨ÿk!iÞÕA)$œMÏ‚œY_|ѱ¾ÅùVÛ©œ³z$!„l¶Áßœê;‡ã"«øÑ}ÙldV¨Ä”R3m´ãW%‰>É­“ÀùƒÜº¯:õßêB4»ÆäŽn›½†Îü¹ îлõHDÆQäûÉ©h(å{jÝÛ' &¬èFälOpùæêhÆ¡ƒp¿A~E ¹R71MYês8›¿±q ›K_îrøQ>«¤ãfù¿zË„ÎÁ]–0ÉÎÝýñžœ¦±‡Zr+0þ*´5bÑ ©3ë>sV/ú œÛ%îv©O—¸ñf°&œ3º&‡¹t0ïç Þ˜:ï5í±(o°gÄöº…Y‘hU,íÅ1¯ÛªL°»èU ¾wóÌÌ@åYõ”z~_-5\àÈÿxè<Zwò‰:;zõÍA ñ,¬ª3;ÿÒ¦÷9KAž$v½Ì3øªû*1ºmïŸ{ž_–tþeßšDä9Õ fÕ¢Z{˜Û^#|f¢ŽNâ»õQýÌ.yv˜SÔ§2ñ­®þÛžŸ¼«CªìÜ–ù“‰ÑísUjªÆY=›Ýî¨\.07é…s¢òlzÔkËý#}x_õöY±À¾ \¥ÈŸ|U Î!÷Š(®s…xúÝ8?!jeÈAð])=íC(U2z?¯Y·=½ûP~>.UÞ¾Àáŵ‰Ñí£ÔŽrAŠõêõ´71Ÿ¥¤ëy·*øäó窶5Ú ø¹£Ü§š¡›Úð ÃøWpcŸê< (“R1ë Kû µâ×ÿ=UÈ/ä3 òùK©[ÿ{%³Nb?ÿ¾ªW¥ô¨RÔ%¥È‘î"ØR¶àŽ‘ 4”w¥ÚR‡°ë]ê"¤ØRêÖö_K’íVDjÕS@èã^=/PÒ‰ðà^þ¹áÙ]Þ•ºŸõ!ýÌÝv22ŸÃŸIS0hÓ='Þýÿ“vvi²ë*¶íKµÀú—nÿ»u½#<NÛ+Áyê)¾:;Y# 1a2¬ü׿”6U0t¹¤b»¤+(ߥ¿ *îÂbr¤Ã¥“›º%ökUt·Úù Ýmaœ@ÿ!´B]Qý&Šq×&ªô@”WÆo ÌëÍ­*ñ&ªdYíÉÏ'×S»§ncú†k…4ó¿p×% 4Mú]&S$r'`ôËÊ+è·ã?¯jÂ_úPµëþ+ e[Œ{cì_*Œ{+(OhJƒ›Ü&(g­Â@ë9l±Ju‰ÿeQ\Q±Üù¬R¡l+ù-Œ 4éqtÔ7}î+µ¯ÕÍÇÖ«0ÐÉ]b(“5ÙV?§Pa¿UýtSàÙ õ¬~!J…û–üâ1ÝþKGÞôq ü §kOšd0²JÒf <²Nk¬T¬Q™†Ö²_½W¡¾ø9Õø‹TP@d+½ž‡B ÓdFóÇlTŸ¥0ýñœ¨ÔnÙüº¶*à³Ðÿ_à®.M5D#ù/見£ö!´B]Q”™“õ¤7ƒêÍÈûQèg®t4Sü^«òÃm^æ”LWNæ t³VÁŸ¹’â¨jÉUˆóg©®¨t%zîIã>nY:µûÆTÐþKÎ0ýzóJ³'¢Ò„é‚Ú´Yý‚Ð*4Óì™iöIµDs ¼¯„ƒf†ÿe ÙL†¿M¿1¶ 5­~ QgãB}¡&ê˜Âž)ìZ`@…ŠÓ´âLŽ9’OWz%pu0#jn~{M$ £„JDúÃ/è¬ÂCÞ)º¡¡ÀlîOÁ¡&FYX’°Á$U`¨‰Ñ¢(ÿZxLPèP‰ãIÌ|¡ •ÅiãG¡›°^ôTìEC=0C´Â|»Q3»Q3›T~›sà:`ö§‰ÊŠ rfLyH”¼zÓ4¯“V¢°x*0þ“:”j<Ïf ¼ºGaúv›µ*4–ÏnQ†ªZ\ÿ¥’0h~5pjÕÆ”ž…€8EŒò–i¤…i¤E“j€N»N¢qõ0Õ$¤¢& öRàÁ((4 2N:ö8, Òx0TÆPõ¡æU¥Z/*ú¼ªpÐsä$B ‹œrõKë"F¡×¯ê†Ëm³ Ìwqá …®#Љés š9žò¦êº¼Aå[±8-Ÿ"¨­ÆˆÏî ÐB@k`Ò)0¡³œ‘µ‰v¥é™Ñ'ä´d÷cÝ¿oÁ?OŒG…óòD4XÞø·¨Z„NÔŸÁ?Ÿò!gQþ%ü³š  Š+~¯â'’³>!Š+EêQrù©AðÞ&üSo2æšœ 6}.Ÿþ 9_æ!5hAœÕÇôšðO£ÌIÑNgÒÕ˜>KcþiZì~ŸxÊÀFãç™e딩ÿGk銒«zQîaUåæMøgNÔ–' þÄ@ƒîç¶›ðO°¥Fç'3ÁJ`&XúÙtp‚2²¶² 1ã“þ—4)YЭ&ž5 OûÇ[QЭhxZ¢Ÿ&Ñ%¥÷fg´*‡Ðr,ÚUo¢L+>_L+€þUDÍ7Zõ_Ì>H¶.?í×€>“ÕSR!Ø10÷“·õošôi£ŠÏüÓ áˆ¨u×ê$ ”ÊO‰4ëûd -D©©Ð7EÓô2]Î]oó9@A?iÊ.‘NÑc÷Ÿ ªÛAYKiÕØ8‹—ßÚØú‰¨|êGœªàj~OTý¤VªQVô¤R‘ý½ ýL—¬ÇL~æ½ ý4þ«ýí cû8E…~Êù å|G›Çç ú…sMègÉzôBó!@¢üp¡Á“=–úYàÈ,Ð× ªÛdH1S)ÎÕ¦þ :à/’¯Ož¹¦Ð%œ¸'mÀ^êêhÂA§Xì§:‹§:ÇZ é  MU/ÿDò¶&5ìÕä3ª5A“ØâK²¾[(04ÅFÐAÁøîeöIf£ôAT£5.Ò Ñ‚2lÊF¯ ± ·Ýf…vD±™‘hxušðχw¶@¡˜êq%‡ QVv l‚>…™7ï;VY䨻Â=‹æ$— ô…ñ¸eølXÍZ?eêÉ îšÈüÁè91t àE‚<gµê°ŒÌjm‚<­ñÀR?–h Ìm=ï­/Uæy^’ªIò]@çãâÞtU4Až¿J ™‰~Ï úÉB×ASÜgD”B•\.¾ 0$ÁßtŒüÜ&ïb½Ö÷_КúuCM°çIÔFÝz¦ôêŠ"ÙÒ¹äv޹Í/ŠjÀž›0—Raö¨Ä­ÅG›`ÏRU]SªŸJíœ,~ÍOƒãv2[cã2·Tw ×€=3üÙˆNè¹î€=3ÏТ,nª:„SõAì™3¡Ì^¿eÿžÅŸöÐhþ,öˆ¹kU’Ï&Ûhÿ,Ê·¤¢rìÉ{hN¿Õ½ÙüOÙª$†A'ž‘0ŠÐ,›”±ÕƸÆHs ö¬CU ÂçQU]3…:NPR‹hºwñìQ­¿@8n‹xR)RïÆ)ê‹kÖ ªpº•š–C?WU[jš¬I۹ȴÀhÄÆüO´êÔ¡ô®‚úÝVþÑÇP†lô®–àý×B”ÿÞ®zìšÔý3jÆ>Á¡GõI:“ ’#áphUYÚSIËG¨+JgûÒ5171WÌ.ôbvékÀ¡0¢dhö_*KkL,ƒ@HHSÁU›*–ÊÉ&D4/`ž¥þÉLíÖH>Ï@"Z›Úæö_òö©‰Ó}‹ˆ*,°ý[ÔH¤T4ÓýíäÊ’B¹hñû&T´T¦u¹h]:úÚò¨Fƒ¨íUj…ö‘ ¬nFOR&ÏÚÉ ­ãh.Ú7¢ƒÙs#qKäÀ6Zø8´%©;»ä@ #lô,Js$ óê \8ôˆ"ªA‘½û4Á£'­²š…KÒÓJ𨰺–4K«W¥òzõ»›ÒBåk„ïTŸÁ‡ Ò®dBYr…²4¼£¬@6Ai×s2TÖ 3”ªq)zDRƒYµ×ˆ$åÒ3`§rjš:µ¯þÐ,V””u¿Õé…ÉëIÔœþ±ÞÁGó"gF“×+­¬ëŸ½X`†ZuZD‹ Œ²ñ¼i"/¬Ã?@» Ò©Dì$ý]ÙÈ’¤~šj†bÿ¢L 44tDµÔìþ4—.€t¨¢zª4¬, êÕçíî‚G‡•fÑŸ7ÿöëÂG§¸ä§²‚e)”„ý]ééÓU>HŧHêÀ£›ÚˆÎTðY›z‰êò™Z;¹pºBR]™%´ÔDíÓ›¨6ý:¸AîI«?.‚\#=ßÔXV¨˜(¥N“hV¬÷ù³6ç=`ëë¦òò¬U.:’—vë…ÿ—âÉ·Š |¯b$híråpiE1 08wF‚&A€)ÃkQ൨~J½3Ô*Ï¢^T vF‚¦yתRoÖý„e§K´)ÑŸ›´P¨YšÏØ×K¡I¬E$À­'.xŸŒ  .ÍL̬`Q£@»ºnšN–‘¸ `²uÕ„º¢(O7D_íŠÖÎYÏRºDÌžIî–À·.¸´vHú^¸uÒ…>ývœN—(‡ „ oA'{Qk磨ìŠtºDuXè½(àÒ<&uÁW.ø‘ü©Y]pi)äœ;§ÎP¿Ï·—ê0†-£0öð#ÜDü¢¨ªÒ ×—ð±ý—ø ,ÍJ›´MSÁÚ¦Jé^á‹°Ò³$½—‹Æ¹õÿ¦Ä¸’”€á]Sxö¼ñÚ ¼ €J™%Ãüé ý_Û|š¶RÚ8=ÌKù€±üòôR:i  Q)É )íCï¶>ôn›ÃÌÀô.¤4UÅ©2)²éŽOÍoïBJs†4à š’hÊéBJkÃÕ© °ÔÂl,¤ôø³ôÏæXÿ|J€zÿEîú¿ð+!¥y„ݦ™ºÖÚüÆí>- #>ž!ûÁ iD^HPé5lÚl_0GDA0J‡VVf}ÿÁh #n§¦ÜÈJ²°îIò•vH%:-"]°È €mNR&7íæÙ™ÓI )ýqðé`ÈÖÀEŒM—^U¨&9ðˆRš¨$‰YO‘ásb ¥M¸rá.b×á?j†ÐÒ!8j 5ØURL¸°X)É]›â£œI Y\\tBµªòÍà%@`5„“VXß*´ouª/²ï'½/J”‹*R(Ô…´MS6÷_¾ØôP½gtû‹sSvæ‡-ÃˆÂÆðgQJ§ÈÏËV]ε05;ù¯A éCMø1‘²ÄjºôÛÊ6…$FFZA¥]ÄeÙTp ¬Õ‡‚ü¹…~¸– *‚_Ž:„”¦"è!Ñá⣢„”>¢Ú+Qé¶À¢Úž— dèI«“(Õxµ@¤ ¤ôðÕ·7¢£C¨Q¥E_òô)‡pR2ú¨*Ÿª¶ë!”ô>J­À®S{D쥦N¦#ý},ŒôðÅ éìCÓCéå;C –²J¥âW¤È)”ò—%¸X¶†ðÑybŒbDqÄâLÒ(_c O TÆfˆªŒ¿Læ3"©'?K2„6õÙžUŽõŸpW\èYI yÒ=0Ô}m6kU傸¬-¶. ãÉϜ܈y`ÍELý“Îïÿ»$–ëbØF`Nä€3·ÈÐ…i7¥`Y~ ~4òæøQQdøV«Œ¨|]`a\JL«Ã¹§՗§¥r’å—¯¡¡S%.Œð^ê¦[~-кÔ$±Tª¶T9°üÌûjÚ¨²…E¥ÍŸ9‚"u>þ”÷‘ Ð)ôå,è•FjŒÖ¡¶2ª(äØB?þ^­¢ðGèOøø›ž=½’£V¢Mxze,QËdáà[E¦u2tiS%üþË·6¸g½å {×ýï©éJÒsS ÊþKåÙÊÓ‡ˆ‡`Ï’)i•JSº¨ÎÀvìY a|Qf)ª—Í/‚=w³Ð´CWR…Rß"Zé𦮩Z+:åèhB°gI”Ž~¬Ñ£[à B«×ø ¤,ÄJÃó '{¸OÀ®©HpF’tÌ …èæ˜¨üÙ$ k ‚ìYÉ€´‚:)Ÿ>‚:„{î¢t‰7Q¸tšö?B]Q'Ššû¬´ÿÒëp^<>Ó‚Tä‹UeýIhrB>ì6úìG¡"ù}öÃ:DõNabÏ„/Ð70„zV Üš^3+—9§ß8>zvÚ'»¨Þf`^Ï0Ì“᪾ÙtÏiÊ ;41Ý/‰ˆÐ&!ÖÿX&]QtXèe¿ÿ’(ª kña®æyšÏ¨Øù¨ùXÝÀ˜g‚»! Hx»@é±h¯{öãÇ´3\&•…ïÎt0ÏM¹§1”›™‰&‹ð+k%åg Lêý,Õ•õÄ_ï8Œ= `½H&XÌ[àq'Ð3Ui•ªZ1kÒ3h ¿âôÜÃ3µl,KWél~¯ð`„hWaEm*½«MA~cO¨g­:÷Ú7cóåÅŸ2$Ñ ݦ"·Ü(r[ª+p™ÚQuÎå6m*Y~çÿ€B75ö À³ý!‰·û•#ÓPOÅ ‰æƒ#­|øÐÜStné¦U£;¢Sü¸—§`Ï“¨ ^ñPi>Ø<}–%t¢eƒø‡Ù* •¡¬ž°ÚóúÛieØ\Ñ‹¶&}­øéº üYE­ÞªAàê4#òu¶gòlƒŠG2¤}ó_¤Sðç1Òæ¿È*«sü3Üæ0»_Ò9Ƥ֕I·htKOþÛm þ,]ÅM¥kãô$d¾ Á&½¢Y·sʱf!©5QLzE3î“(æu怭N%8¦ )Ëø¦°O æQLÉ Ó>®$½LUœ]O\ÑèìÁ¨¿‘饴žQñУM?ê˜0èBU«'i¢ë8@7…zjkJWUžYÄŨn›Â= /îLz*åO­¾' öÜÉœxÃPi•ŠtåNzDOÔa ÍžýáßWöܬˆ#çå*ò‡Öý<ð„=7+:ËÙÂOÁÖµ¬N—¨iU9Wªz cZ‰Ü¬鰹ŸVžtˆrþæ¬êÙ\ÔJ”Kàüìy¥'[晫__3é5Q…'M•£çÀp’)Ü“)Õ]¯êözõA…)Ðó79þĺ)ÀS½PÿM½c>£{]1ù§˜3È,Ì·þÔ‰>Ç·×÷ì ©?…P‡o}v¡E‘¨"[U‡;ýnó È©;‰WúÛŒgÛØ·Š‰Üà’¦b¸cáe‘]±Ùf•—Día±olá›#“ü;6ØÒµ½ürÝIó'ϱCü<•]™MOóç¢?y1ÏÚUîvbÂëÂ)WÀä8±ÓÚ°WþL›)|s¿03w±;ô¥ð{NŸ·uVÎìÓd= ªÊF#“Q¦0ÎJ÷õ! ÿ¿ÓÐÙy€sv€N£ä£9¹/Ÿ | ël]åÖ­+’ïàŠû/ÿ± ÚÉ0ë2,¤P ³Oþ›¹:1“ªøK6‚âˆV$̵ÀœÄÝ”“:ròa¦ aî÷øüÜ  ÉÓ゙ôvrïM#ÁÚàY:;!Ì,p–ö7­ôØlb)KM¼iP¸4{PÌžSu!¿‹™]JÂìДíÁhm’_‚8éµÅ—/aîYÔ@Ô@”¿ƒ¦–0{ÁìÌmþX“ aîóÔ)ºù9É a®ñ¨C¤~ð`2¥~Áß„0—Q@3#r á#(t‘ÐzV* ú­ÍÖ'e¨Pé>ì1…„BÕ¹Œ&Ü€õÀ« ” üSõïÿY£€êj8ÎoÖîWfL Pº5a½.(ä;]Ÿ(4¸dèÍgçœB?ïršì“? £Uê²G“@Ê´ŽOE¹ÃˆÚ•tÊš³IËgahc&ÑØôª›ÏW>éùÜh8£9¯´AÅ@ ‡GC”Eâ•d˜4}NK"ÈìyÓÓ¶µÀ)*41«²ï¯UengD+펈b¼'[ùO6 ‡±¿f×!“hç@´¨ãÐÜŸ[ ¯Å QÈëO¢(tÍÍ/˜ '[Á§aHÌVóÁìh¥¼Ý‡Íµn¢(2Q}ós& TèY’Wå% #· †\µÃ}§¿gI,‡DW­W…’"˜˜EçM Š„Òxµ®z]WûÛº Õi^˜nÜ,V ‹K's’Ïs{ÕL7ýamd\Tæ>ôVhI —^ü4Ðï„ÄtÂWÈÄpç”G–©º'Ež#À°»w«J¬ê«Ug}þ6Üi–’w[‡íôß×KXçiäòâÓmòÍ$¤³ _.ÒC«Â-~÷éÖy–¤˜º*äœKXçÉH•ÅuPI®‘(‰( Íæ3V.]aO'0‡×åÃï R¨2!ÙZ0c}?F9Òe®(…*¤–Qå(àÎ¥ ²C@&‰•îZDY0 ê)¡H:ª´7¢T½B `ɉÿb*€O†´29%â^ù@çÜY/¬ÌViÁ‡´¢Ó÷ÔÍE_Tú, ϪöÅZu×ÊhÇÀbX(Äë…ju3{@«u•ÕyP“Ó…Ï‹VϦ”p‚­¤$UÛ}þ!W”¼}hêQùVòvE• {¢ÁŸ=i\áÏ<Ç =¼“Þ/Å7W]*<Ü mù°ã‚ Q‹«~£Àº¡†6"Ë!Ò¤e“Ô$¸©[hõј*‹RUyˆêWd,xp!'Ïýnnâ:?3½„¬esuZÊÜ{>úµ µ U'MžÝ7¨`Ð.èr€A‚Åϯ,A ]}"]ŸßjýüfýE‡ç—ôásÝ©†¢2¤O¿æh =è>½Ú¡#Kè®K{ÐJáÿ+Š€\IOîÒaoÙO–/º=Õp4Õ,Q5û©‡ÕÈ­Ðø?Ôµiš~µò]tB{:U¥—¨rNÒä%4Ž'èW¾‰—ï{Ñ? Z Hš‚ %ü“6ƒ<ÅyzÒiú0Õþ4Id§'¯êéwŽ-¡Ÿ†ãè•߬ú×? „|>¡/Ðñ|i]´ilà7Útòä”×RÈzTï–£zוþeŸ78×ÚÙt4ýqajѾ úÚ¨ <~…r«aµ"VÞã%0:nÑðYŒ?KðM]p…Šò–`Î¥'FÝš²ée7ªš-ú=«"ŠžõÙFfÊ^ ÜààœYGR)4©,Lm¶¿°Î²1æk£ ucìi Td ìÖÏJ,ÿŠÆiwZ)LÓ»çSsd05|rR%ÃãË|@†‚ª*J‡ W ©&¼³lÊ`î¿oÚveøPÄÞYŒÊ’Š¯Î¤î‰À;O#Öq‚ŠR~J|wnª>-»Ø*(uk˜—C—‹V_†‘ÏéW|-ƒ;i™ÙˆT7½~#Ä ¸³ˆß¦X×uB}­wަSsS¼:Ñjö@<ܹ%vŒrþ¥5³•ovÁ'Q›`ô>…³Ã ŠV:§¢ìH—Ù Á/XDèôîäHHK_ûRß ô{fuß”¬´ÑÓÅ?=é÷Ü–VûƒÙõà´Á”YÍteˆ£(´@ú=«5E m‚Cû•'¯Kl™è÷U®e¾®@jh´ï®‹ZÜ·Ài Åí¦¢ÒBã}pám>WÜbèÉÔ\rï*°³dËŠuÌN220(c ì,%)²ž.â— ;^pÜ~sÔÿU ºˆ7æ-&Ú_‹“Fœ.´ë(Ó(G™†+ê~²7fX%¨?@.m;ww¤<ʸKh¿OnFk¥fTDQ±7t¡~œÕEÍüC/Ù¾ÑdëÃi£Û>àó–7û.JÞÞ”™îŒ…EMK£¸=piôùãàÓ%‘oÌV°³Ðuö­ŽùúU¼ëìhèûyuA_'Éÿ8>¦%}_k ùþƈõ“t½›a¨5¿ i•,Ž¡XRiÀOôrx» ¤nϧ õMŒ6! Å2x[–V…÷VsC¢´%óvœ[03j6¤Þ®íÜ7Æ8fE¢3¹ññ.ÊÎv0«Î+É2o.ÑVÚèùlPõ@°ßN Énûý.ʼ]¶j´k¾¹ÓfŸvÈT5Kx»oÓ]‰e…ëR9à°‰¥9p¶ -ÍüJïø¾©Znøå5»(ŠqI ,x·R2ªË¦±‹2o§y[¡v‡y$Ô¦ÍXoyweˆ©Þ ×ÚEÉÛ¿`À÷JeIñUvŸpi }²Ý]=ßÀB‡rò…>°2ªÙ* oìÝ ¯A}Áâ×ð¥ ,t-ûE›ºK«6Á¡¥‹§ôf¢*¢üë´Å(ü/ —¡ê¤î·Æ¤­XΑ*e\DzMã/°³®2 ·4¥PB¶ª$AFW œzd÷ ­ \oS5¡ÍkÿãårEñ:¥z`Ðe<àöˆl™Ê딬U†G7S©ê³(¤­¯sä5=t?B´€VÁÜ”bøb[.”‘6a£O$yÎ7ËSsèRœ€só¹Eji«øx•?mJR”¡›/À¥‘¶Sc¨egI©fÙ@ô î‡%Ö‡êm>8W”Å.–%ÎSÛÇ‡×Æm{ïE’pd^~ÃE^:”`ÑNIœrD.ÐdùS"Í Hèò=\„E/·Š+m£O)ÿͦ¸)ÿ´Žv•@ÂG”‚ë¾¹ÀÏ. †€; ÞÞù§a¤ÌoÌóoÐ0R˜êN¾ðN+ᤠʴµH enÑ@¼?îF°‰ åå/õrL¾‡‚—B‹³ÈåàT>Zš6èq7Æé6%öŽÇi9+W½…‘0Î *ÅÍm+KSAåS¬öÆt’£Ÿ¦k'7Xv›ù_oØ¡¾]E½¼@KG#)$£÷Ì…œ 4¡¥zŽÒP¦·^jछx¶Ù’¶)³Ô³;}:mBKÛFK'T[=3 $´´ÃÇIf×1O>—‹ñ?ŠdÌ=î:¥þF':,ŽXCÅjfnÿÒLªÈ‡™á/—µ~Ú§™3ö_ð( yÿƒ µÏÞ³¤œ>{ \sFÉ=áåø~® róŸü7 qnŸDýÍŠV’+º”´Ç‘ªàP"gÆßÇÈwaþsE`¨›ƒÃ:ÞìR¬ÿ×­y,ê°ÎÀÌq@JS ¨*Hl|×+1@ïb¬j "‡ì–ÉkmÍOÅéÙmK›àO±MçE¬e œ 8ÿW—|YY¹®¬Epáž×Ï¥9(1+Ž<ìãØÖ;÷‹6*@T˜Sçðd=pÅ£þå˜5m=–íÜ‚.…@Ú˜ã)Iô©5RT=û)ª$„Sõ4y2âiRaÐüx¢“Ç–ÀCÈ[ûÛÿK{~% e“3';œ}¬' Ù\G„·¸¼º¹¡»µ’PÍΠöý—èp›Þ 3û¡bª© “FpËû›= ÑTΔ“óq&Wθ|°Ãó¡ÇáC#°0ȳ~.ŒÓçêÒÇ—ÊÇ–ÐèKŽ™TàôÊKÙ4r )Ù ­àwKDÑ*_>_Ïþùª’˜3“Ê ›O|—’Ì_&ËM=ìðÿ~9„ɵM¼Mmk{Ï&ü²1üêØ,?Íä·¼§$üòºiÏß-°¶q]Ûñó±¢ßm"ŠÈŒü¥(EÓ[⑸ï3÷ýðEÑÆ©×”Ñ,Á²4\Þƒ”èá”F°íã•£¹u@»™óÕÞÇŽ)Ç]IPd©G0µ»…|ŸdL'LTpZåöÆB"Ç:"a%AhvIéûØ9òãËÖ…kÛ°“ÌÍŸIG»ÜH)ÙxN]$L‰TùBÛ\B«”2~­©F}FÏŒ¸ã×S¢aSx’’ÕìíFG‰nM£M4v¬Q_,ˆr@Â0ìl ÌnKJ6—SW€°Îdõ—~qT>i›–¡ªÚ"£¹z)AX{2’9ezc$¹·¸3Uµ²G2“ó¤·›1æÍÖöýÛ•žœ»b% Ù}ç.ù¼O&§€_$’„K& ;ͱC|<£¢vA“IÉæbÐÔü‘íÊQ»’íªê¨«b'·Íö |^\Ûl2ŸYOôlÚâ´ãºyS@#Ò{ƒ80+ÁèšÝy)ѰY¯*Ù‡ëÙ/FLÂ$é’O½\•ñ…Ý•»I#,z†ø6ûµY‰^MqgÜÍÒDr BSaÜ`:äÞ4jÚ(dE”pME>]šô¡±þäti Læ»%{½&z4¥¸z€1sàEA‹æ}»}LßnÔöqõ¤ýBZotšW0{›„ö @䘜ºðf KšK½‘ü´'°Љøùù=-Ü0*æI“â²Õ¤ ¹éæíÀ–A(±ÅÉÃ5l)imi0¹TS)AL‹_Zù†Ö6{ 1ÕqpüR£å~] O×ïÖ`lX- €Lò¥Sưšf¿h;uNo®‚J¸˜BkÓéÍ5 #ñÙB ßæÈ«Ìˆl¸o‹‘@Èj²¢›é‡ËtiÞJ3ÑîÙ…ÊÅ‘R¯$׆?ú€w+“gÔ«Òÿ™I(Î@¤$Ø1+ …©æÍ>¾¿gÅÙïŸl¼Yؼ8Q‚Dd+<O%½(7¹ÿ*ºJŠkþUBoæ˜v+)S” ‘øFdfƒFs5Øæ2¥Ä ÎMpx6Ê8mÚÀÚîgvý›‘ÀÔ³Ro'#5¿ð' Lóz }2 Òݷ럌­šQ‘™M £îla‡e¾>iæV+Xvû…wQ<*õ huÏOæ@ƒZ‚{VgR¶á©v&ù«30R¨KÇ+Ï€áÓwï¢po2¦:'­WŽeº’T(D äÊVLè×&HgçÕ˜ý37¬/JO1š'$§_,dGÒéó‡V&ïVæ=3§¢€øÕå ªYµ£1{°ŒEê=pFB4«  Y[d4?ÒÊ‚%³ˆ8³R%Y,ÈuøO÷,T2gœQYûßÏ7’ò/&‚kËG•²€É“‰,ˆä•ä’=¤,hò®Q†T!¤´á"éQ†+gÛ®}úÝÖ$7Äj34³Ì-j›ª,F«ÜG.ÅhÊÛüM)[>ª˜…OfML.0Žª”ËLn·zÊôY(ßáo}KÕÏ»åtõïLýP}Cèã¥[P’ûŸ¾]âÐþgPÚ¦ÿŽÈ°ÌÒgÔæ²‚/wú]Ê©]¿Ü„·ïDÖï7¯eú+C ørfðÏÕéŠâè.—/÷î¾Í‚(³rÙ.õà´ä×Åå´þ¥QÎ\“þ¥”3g7É›e¾doIÿÃe‹JÚƒ(•É¢Ì6RóI©7;EeWDÙ餃ˆ¡ÍÀ"Œ²SѨˆ«Mªšg”ÙÚ‹l§è´œÙ/‹Î Ô,ÄЏ p€ß”S21½NU¶”Ì)kSmÉÔ(‘cËæcËÏe¿¾: ¨$ì"VžS:MŸÕ.eº)yFޏòœØÝôÆ'K¾i¤p‰HÙŸ‚š²0Ê,Ü,k[™ ÞÓ¯ØÌ)3¤‰šÄ©{ N¿/ ¦¬‚;«j*sHz ¼>ÓAIàU¦¾[ùŽ}ë4.«« ÊÉ*‰™Ig7ƒ€˜?mf*3pÀ(‹ÁsZZ¤²âlüñéÚIòo5‘d…§‘éûoï ©ì£JoÌÄlM 欃µ]´™æZÿ­SVMGÌLí7'xep\\ïÁ2EÁbËÛ£Š€¡pñ$WO’µÿTÿ¬¬óbð •šÏË”²pÊLk_îXdTR»9øYRÛüë’¡šúr‹‹ ÈQ¶»m¿ß³_rŸéœT½s†îÚÅ‹ÂejJ%È#r7sû›—išB„²HÚvÓÌ7‚œPŠ7ÉåM•âÄ$ɹ gÊ‹ è¦?;e*O*è"O‹ÈKN@%f*sãgzü œLtLNÝm³pïâ¿L™ŽÉ©c mÃèäÝ×ç&ó²°J##™i»=¿Š> ªD’±š¼4iokÛ*‰'¦ß*•;NÞï&o¼yüä`îx¹|SUYeÙQD%œv½õ—ýK«¤º²VFY™dA•§MÇ#œÈâ§Ï³°Ê܉ãÏu䇶/m’•ï/ä«­ÉF ¤t„VfÕÀs¢¼UIέÆMªª•>cOfˆ¦º ²`y¡úÝ™ šÊygå¼+i¡¹µúHOúp ø]YXeæU—m"Á@¶ƒÉ™êP7–NÅ4’_Óõ0ñ`ÿå‘Â*O*ÍË7 iP)P¨vpµ‹#¤­@¨T)0? ÊÙIH,À ;•¥Ú‘¦:å»üS›fÉJIîLÀª8"˜ùäLæÝåõ‹ lì<¯äŒ‹½}}i{³´ùo+µ¤|^Otܱªz©šu`SF³ARXiSO*õ½S¯ŠÏŠ]IÌ+ùERû¯žÜ•„‡×K YœæI›|òWtvƒWŠfÄv]`„JʌȤ(·Ò nîÔýÒŽ di’~‡K9W’\ÜŽKFWú8.-O£f:’Æ;©H°63ÔŸÎðc¬‰šöºTY}äÌ,ÛõÿñõÒ¥Äá ºX%Piòñoðn Yñ»Â÷éO‡IØòîJï \.35µùâùm›ÿ8)‚.?KÇŸ}T4&ÒC]„]ª?'ëJ¡Øìó¸b`„‘Ü(>H\ŒV÷®Þ̽žþ««ZšB¤ÛÂ|…hªÐhrf¶•ùÛ^Øi ñàõ&¸b&w^y*`–Tˆžt²Å¹oœBW¥¨ËÖ¯‚>úº‚äÚÿ~¼}¾Ÿ+‡×äÍÚÛ+}ƃ±É,žZNƆ –ô›<ûôýÝC»¤›g}ÞÓ-ðÀ×I<ûönLR+³FÄnb[íÙ§)pÀÚÊÈ,óâökß °lµln̓ÂïË+6 *½~ôY£+¢@ÙšL·áT‘o©T»®Ì¶YDŸqÿft÷ ðÕOÛX_¡¢pÉŠ_ý’¾é+‰îj×#kó?šPÊÂðE‘3«Æd^Ê¥%ÑG#Ë]Ù ~ Y襬ö了º²ø¥Øk²ê4Òƒë­(\›øŸ=BcOñ!Ø×+܇ð èã ® b=I:ï¸À~gt½Ûuqµ¿Qibïòðé,QæŸþ½vAV/âÐwƒåõì+½ùrõîßý¢Òç_qåä«•Û|­d=ÕÑN©­ÒÈ•ZAGÀܼÚarõ€ÐÞ…á•ì=9÷n‡’´ÊëM’íóäàÙ*çÊUª]Ho¯ò’ófKW7 m6è]©2³iKÛ •àve4œÊ¯L$p²A¼øçs¤™gkûsHÊÛæ7vú(-—Äx«Va¤Ÿ•*»šGJ'ƒ7wóíⶃÛ[ÿÂ…Ô ò©ê™™eï™#ŸŽh[u8mç©eKÛædJˆ‚{»®.&HîͰ­~3ÓG_Oð¤IœÛp†¿Ú¡NÛðÕb A[üšžol•+’lއ~àëíF2í×¶ÁâJTÊ|„i%´Aòmu„o½\™<›‹mlW…B[„y—d‘f%ÛÊõŸüZŃ+CË¢½Xô­6ÀÊlͳÍï£. ’Ö±¶#( -îüÔ]R¾H*4ãNk3Š"à–C P*àI‘óŸQ—¦5>YuŠO„_ànÝwãvÍéîÛ‡oSya·… ~AoaÐ¥¡7ý*è³`WÐüÍL¯<àvjÛÚú h£`ÉgK½%7Wß[UGWUÑÆîä‹ãäSrØv•úƒjî7}ìlz¥\\½Šúü¹,¤ã»—ÈBÅKÿ¢¤y²àH2u/ƒ\B`i…ó{Ý4ª/4,Y…%% #ɳUP‹•D\ÓäÖ=Ù cŠüznþ°ðJûä½cýè‡/GK¬+‰¸DžmÍ J‡kwµô¶Äˆ›BØý®î*T²ªÿª&Ž$«¨ú¯ZðmY)Ÿ®ÝõFØÍétÓ 0ÕfZg ~«ÛE©Z·?é$X3uÌ”íýørŒŸ¼ ê镜‚‘H”u.K5©ÅÖV/*=}¹Q'nåII M½yã„óKUA“µš¤r]Ýþ+àrðγ[Yî“}K~güZQž%Qf½ÆÝñ¡¬”:Àa¶ÿýöFR»Xéc“áh +ÐR¥­nö›Bþ$ŒòG<߸7<üÜIFY™;dm´ÇJà!ŒÒV—x…›¤ˆ¤|ò‚óaà+B)«õ-ß=3dqá”çêé¨ H²“¼ünЉT ¡ÒóЊg|ªÚ‰À¯ÑÜ»H ÒNÌ©ŽÕÏ—×ãÂwËNœ">%ž)º9#Ô•J¦iÕâ&°r#ªÀʪ&Êj‹cm~3f¬œÖ¤1]-¯†Ï±]WVÝ+¤ë zöKŒª•† Ý/¨ž||  ®¬ŒÔsn2*pN,y=á•’Ä´…“N!3 °LæNLî°á&!Q:Ä;¡¸øGZ²áž›|\#Ü©L¿Y!–8ÁY¥“;ùËJGýL$å(¢+>ÒX…YVÃ> ‘„aÝ2 ‘'M4înqMÁ–õ…±ïRa(—½¨5·—É“\=Y£E,U/–ª'Cå7:ýâä/÷‹Ð˧­÷r¿À<<ñû0·x:“À†Álvº¦,ä vŒ¢4ß´Bkª ø&Ó(™Ù q· *F÷'/UZ*Õ ]•Þc À®™¿2ÀK5žW51w£ÉŒÈ)W}ôÉЧ¥À{œa”ìš)ç œdÒ/M! †Ó„4Òñ-T¶S&dK”ì²\ðe‚5&)•Ò–?I _j"AWD·*ˆˆ‘ÖUÎÚî_ß•Ó/õÕªh^Ê1†;oEÌ‘Á“O‘ß@/o&úh"ÜC²^Z$m+3R§ÿÕ襪iÏ*:û}k ô’BÊÀ¬É8™éŸµ øòÔãýGI# ©X š Ì®’3S=©0Þ]T²SÒ}[4@L ^V¿û@ÀLB1+Õ9gÖ oÄÚé•Nxø}¯ÌÉÉä÷°5:*µ}3œÜ“Åo;là˜Tù̇YÚ¸š»@ WG~³´y‘TñïÂã ü{]­Ý˜›Ø’ßœÛaAQüþ‹KÎÏ6L‹”¬ÏGwA/>Ýf‚Ù(ö±™É€Ž~7T~Ù”ah–šæn Ðò5ìn–·—Nde:¾ûv×È–æ_—Â/›òBÍ2–Œ¦˜~hÒÀ/Å‚P5½›<Åçë¹rxW–ËÊÚöJ¹€©Z81*0£² ¾lFÞÑ7€ÿæjÀ—6[Øú©ßÈÉ'âíÖ %ŠÈÑ™=Êÿ¶.9µj ­¨ýÕºÚåË{"®ß4Tªê°Aù™MŽ¿ï…[6¥:›³Z¶mïG‚-Äæ©+Q;UL#y5ñ?/d«§ó§-4M)¬6KáÿìÍ!Ìò´ÍÖö°´€JÖ¤qU'Þ’:E>2]I:®»™íL3Ïöc6–Í&Ü_Ï¢þ_çÊ¡u…Êå«Åô‘_g;Ó”ÕHÄ49ŠT<›ï/‡´ZAÙoÖMism¸ª…0¶€cX©H¤1Sö‡#ù'?`¥ê ›ê×Þ­vJ¦wÓ¸¨úΙ}¤²AõZm‹à«Uzi8¤ß¾Úx³²zñ£–í %eøj‚)MõÒÓ¹P}”£ ¥lBN›Á¯Õ¾[? ‡ÎÆ5ÀŒß’DÅŒ-×¶6Iê…6æ7®¶Æ¡/‹³ïÿQÎ$Œ² YlE ¨j„š Ê_®‘^}Þ’Æ8JNÚÛg‹éC ^Ùä½jÙL~O~ƒâ•ÝOs‡Á“&x²Ñp¢FÊfu 9ýúñ³}üòæãsdÿM!ùõ¿ƒ£˜yõ$¨i#¾åÑ/Jþ×7hr‘²[vö«¾ú¼ñMÐdã]¤z¥ÖíñolA“Í:ÉÖL¦¾¤À{Æ)Iå´ÕEÒÿëppEɵÜlØHKÈJòmÞXƧ¼È"b¶Á±MEˆÚ2:B½ús(špI;Ú´6>\L£ô%ÿÞ.Ù`h'Õ΋6òÙ„J6Ëgœ4zãóîÝõ¢ÑG¶+'_4jj€îUe%3û p"ÙÔyÿj¡íÆ8JÆ#j‹Ì,llŽø÷?p¤hY|, ªê—‚4‘MÉÃÝe|ü¤QÇEÂ'rF †<é#K[¾ÇoîiL¢œv°Y÷+¬¼°–>ÊEOÖ"½–ÔI•òÛòßDáÚùb'[ÞG¤+H®Íq&?#裯+H¾ýï+és_ºrn‡öÍbúôc ²«{Fò¢‚#;ÿµ™µéZ ¼l…FvÆÿÒk@Û ¼#îÍþO#õêcì]hd§:|mvtü( )I’*gµIºå ýþ®.0òWzõ)§û†g« Ž*N»²ýR©.,²jŸ>~yc¢¦¥ ÔÜêUÐgµ® û¡­lDMãÍÒtj³ji|´˜B¸µmùuùÁÈ>è×Dv%#º¸½;\sËjº`Èï_¥Ï«J¹®iNÿé‚!; q‹¦õnH’\[%D]ýA½Øç÷[ $kûXDuâ÷8ê!{á»qŽd8¹þës%µ»•Ô×Õ·WöîW€nr!(´¸q5·ç_š[έ‡d/åúý?vsÉ·)ÖR¾¶±^ï¿|cÓF¹ÔeÒéxÜ": „ìJýw¥þ{¶ãß76M”ÃêãÑ¿€ÈÙvº(ßåɬ®W¿ô«3ˆ2Û¹´þfòv“””Ü\‰[À/›ïB"¹þþíKþL´@†£ Šäè0< æ%?(íÂ"ŸÊ¶æ·<áë¾½‹¹8OîÆ“;[…‹ëþÎvíRpðqh^—šiÍ öSBU’Ç&y|ñ„€ŸËë»·àãì`U,_> ~‡æÕ,¾(¸|iq¹8äÃß­œ‘6ùøMRy# '?¼`°[&Ch>¡+éðò© <¡iXÃöÒP98Æ3ÑN•N£û8g¯×èû´ûsãu¿t£ žìâí™[“ç Ï­Ü+AŠ8:ȨªEâ:ÀÖ\vÕ«uÕ«õfþä¯müóïJ²îc_~Ê;“ÜfŸ.{W‰Åtéï÷§NßÈÐO‰`íwìf] åÉÚŠRèWI~wPfÙÕeÔ;Ö.€h~uX‡üu‰jeÿ÷¡Ç A¤úµ] ¥é$Vª-áG;WŽp›ÜKþ²×Š_¬Þ¡]ö2°0\õO£úÜ2ñ«Êðt˜{F„˜.»š˜q‚—˃v‰ lÿxâIO– |_ê¢ÔèÔH8&J팩'pèãc~íó¿8'@fbÒ]²üÅ«m ”ù5Ð÷D0ŠÑùÆTç:[(2T´øaÐÌ®fØ.t9ûYá‡@™'Zût:Ë)Z…Ð÷tBÖ¶nk#AWR\ÐØb.¸†àÌß3âãF{D;_ITüúqÏ¢ÙEèßµºÉãµûsc#W²€) Utî£ûÉ‚¢©Îá®cÎ ÐWäÃõ›Bº F}#GÞ= «ÑЛB M4æ“Ô²úIú )—¤Úß}´ôhÞ?š5ibL¥õ0.º4² ˜ð逦5ënªT-?V š ¼ý6=R•ZIÌDSíÕôÔí«l˜Ûß#šOßµù÷ÒÏxҸ|{ÜWf›Ä½Ýx&á®J¾Î_Íæxæä.±nÉÚ}ÈoÐü>>k+¨¤ÜlöIïp¦Ÿñò¸æ'†Í©]r6wG%ßœ©ó¿.nmQ™ý7æœù SµÚ¨€s3­²kƈéT„Ùg€À™8AY·C æ×Ðdläu*±RäÓáàôü?yxà\ ù¡Q8]UþƇ&šf§j{e½P <óñ°$½pÍÂù ƒˆQµ”óÿ†à̳Åÿ¸8Úâ¡!û5M%ßÅg²6³’QHÄwxø°:Bõ5u¸CŽ š©±Þ]}ñÃj6ý¾¦–©Rûnµ­•˜"âDÞý.ˆ ÂïD‚2»F¨m» úìbW}±z“FûÝ•#×në²²aU­}8½­ôŸ¯Ÿt˜ôêÏäÂ1‡ #°¾aù}ªç`båÒ3 %:¶ª&ìÇ©ÿýežT’•ŒÍÕ‡D‡€Ì¡©‘íóuElD15’ô×÷ n÷{™'É zœa¤°‹WåâUI“Lõ‹[H¦š6:\T½2Ú«ûIù’y;ÎÎä[©™ó:U¼óŒ9“ÌƳ^Ð÷£¸fN°šÀÞ*Õ>ïøÅéí“í !™CqÜPãî8]qþ-Ž©[€8gPs7{`×Ñoù°¶~JÁÖ&óT¸eí¤êp \8æ›ú= w½úS^†PÌ!dfèm1Ì8[ÆÄù½.a¤˜¹¶m]0¨eTì|ùË%3Ñ’Fz hVÜ ã6À5^žäP*¯¹3>¾ÀË¡ø}XÍ}ç^ò3°Càå` ò¢²ã^6žlTÞØ¨²E( Ã餒_Ñ4„^±HÝÞÃ0g¿+i¼Ä!GåŒäñ«†Ë“>Ú ÝN‘À×ÑÑd—åy‡øgT¹läßò“¡„®~CÉr9Tu0 ndpMö‘ù!Ür(Z}» úhé òOí^}Òì!ÐÒNÈÛw‹é£#[I³!jË1ÌúȯÕÜ6¿Œ‰?« ¬<é£uMóGŸ ªÓb-ÒS6m<²2ól½&(]Ù¥7¢tfK‹3>"=A‚*‡’¸cnWA}]A¿ùõ|ñÝ„Sš Ûw‹)TîÖÞxß š"º!rZ[ª-ŽC2ùT¢CåЫd¨o{,Û$¾S £äŠdÒ´KÄG‡0ʹqCÒJš)Ï>;„QBmÅÇ“„Kö»’‡ÊÓÊ’äpói6ç†ck‡X¾Åî#aSðäP¾eZ¾ÅHpí89„˜ ¡Ãþ7›‚&mËjes{¥ÏÝ«©£J ¿ ôìOa“SÅõSMDz¤åGYSØäT¥Ê,Ú±³ëõ?§ÿ™B'§žF3Û×'`ó){¦ÀÉ©²ñ©Š—ÉäÂå·"Ma“ÓŠp–FŸåz’NN¦2n•KIJdþÛ žœzdM¥¤¦RRuøÝ¿SØdÚDl“6Å¢i£4·ù%ÚÒ×AgL–R-K«(™‚'ï.0Õ]ñ±œ+çæÜVóÄ›6ôáäÝÔ±'\I0wö‹¦ÐÉ™í6;âÐH‘؇›X›{&ø/Ô)•ÀâÖ])Ч:‡@à0@ù,©¿XžÊC¯(Ža.îû¥ ÊC—„Тzòã›)’õÛ¶~ ˆò—X¢M¿ydBüj^0KÞyAæ§5y²J6B(ÓÆ4Í·i¶ÊzLÂFY(ê²ÖŸÕøv7ÀËi—Õ‘IMzQ¦5]Šºõ8ò2­iå8ü\Q:Æu!LŠÃ²,~-åFi‘ŽA ¯¶°0Ê{Çc?†såÔ›¹;—ͨñËgfi—¥{-Ó= Jÿ§N/÷oáW„J3ð÷”#îq%{+,Ðdj’q¤Kr £\‚»S³@Ý k~#á|ê·d†Ë«~Ë)˜rf"0Ú-;Î䟻‚){IAr…pÊ“ c–z£Ðýü¾Æñ¡ó[ åã…ùÊ#+¾­3‰Ð²±½ÏG MB)§&Oc–°2CÿÁ<…RNu¤îÂñÙŽ«!,i]o”ý FS¸Qh·„#[«4cê¹’ÖÅN^°¦z÷J9u\µ:kju k}+(ÿ¶¸ú RùÍ ê‹- ªyêmª8Å<¾‹'†¤/µëüꊒ“?žPùRד|Z¸úæ _@›L´VdÀ¶i½6OCV·?©d—Ö1Í}§<}o>%ùØüªò¿x€Mëâ\Æf'ì/ÒŹÀ5U–òÃÇmßùîd½—7CYgq¤!teóq2ÚªÞÙLlXÁ8”%LÚìMéãÑýÊ´%lsª#”A0ÌÙÿ•€tŒ3—d-2XŒ“ t,pÍffR¡4IÃÞüÕUÅóem¦RÈÞ šª'“6AŸé ïIVâéGœÉYàÇ™ \S¯éû‡‹©$_©HŽù¤g2Þr£_23(W3·ïKÀškN&FtF%Îâ£Z Ùû6ùlŽøÒ„j.áÚûBŽ·ÿ"!8,jÇQâ\y0kªEq¶Û;3²skÚ ¥¸©71Îpo›SÝå̃aÌÉç|qå(×vëÞïõðÚäݪÞYº–.Þ˜Fòí_Þô!}n¾m)Âêz ø¶@Í¥¶„ÅŒ»¦& Yü&Ǥyß$/÷¿ Mˆv—ºÒ`ÇÝ`ÿ Ð$=°!Þªê”ø$ \I**ÜlÈeÛþ&Š“»]g@o~mÚ¢¹Ä«ø5ÎAû¯À‡;\;mÚ%u³“{‘F ¼w'wÿ×—‹©4±7rmzJ!ãÛ=š(0pÁ«osåŸԛO¼Æ¿={wG.JŸÑm À\ÂèyyÛÃ;û½`KøeÝ’=pˆ%…­‡6›ðË¥šyT²]ûé ".ÑURÆUÐG_OÐäà¾ß“ JCßm¦« ›µc åk“ÈÛ €Iw*Í©‹ékÍ­–ÐË]%š&4ç¦3·7Ÿ:i ½üE¥ý_ñ6ƒ.5Z°·\ÿ¦Ò¸©¤gŽ>Íäšón%õ;j~U ïn•váùÅÚ\.‘­6®‚ö_¾FÂ-Ñh_ÓÅB*)ìfçÞÌÓˆ Û*€i/Ãö}â_B.¡•Xbr±ÎÒÈg[87/ +¹å@—*†à»¡ÑG¶+g\4¢û²7UÊï·[ÀD:¸·’*Çöƒÿ•±ñm-¶rèow•¼0o‚-ÍÌܝހ¼Á›»pdT¾0º;7+oÂ-×0C5¶œ²¸Õp’7á–Kè陕ÛnnALÞ„ZžähÃYæÕ¥ˆÌ› Ë_äìV èCÀm¸|·mb. îÝ.*™­÷µyû$o,— RS&hÿåywÞ„W²OÎŽT8ºÝK7oévtßÌÒHhåR9Sþ†lpl;ÜæŸ¾Z±ËÅØhô‘íÊ©xi{v—Æ%o ϾíÙ ã~¸y¡rÞT.¦¹òùG‡Z$¤“ÝæI¤§ºm\ß¹U&²øã;ääóÈ)¦U`}4ð˜¥Ôâ°Ù\9—Ý5o+—0**j ôÜÜDÀ.÷îÒHɉ=.± ”oiÃjæÖhîrÊÝ›ìT‚Ï#pdânuÞ<-.fn\¼]gßí#Ò$'‡·ÆUÐGKWÎn;êýZòO|;ºoŸ-¦ÏÂØ¶w‰'õ„ÛOÿ†F™¾fÿ~·Œ•ˆ»Üb¸]T’(½×!¾â]QøwB)ñßBÍ>‹Û|µK*(¥>¾M³_Ò–Íêþ-'¤òø³ZÕÍF¹½³»¨vµúÇÂ:æÔïøó¾+Šœwæ²£Ž­0º§¹½»(Îqu`í¶q%Ø5åP,×ÚþW¯¢UMÉŠ´‘öäO†›®È› Ë”áfÈê—H¤O÷kÊwÐj¾n¾Ðÿ¦ÕÕ׉æ/W Ñt—d¾NÍŸú:÷(‡{¸¢ê¿EÙüx½+ _?í@žŒ;‹ì@A—û'R Q` eVN÷g­ì¢t¤/;öÌ«èÁqÛwI*ÀÜ?§jÇB`}æëíêëiK$'LÛDqîaET æáá?m…[…l%óǶiWQusÛvQæìTÝ*?_·lç^@”Å.¡4gžÁw+A™‡€ô@þyðЄAfÊVéÀ¶7¶ÒÁ>6t«gàÕ°E´â`ï¦Â­\ ˜]ÒŠ(õÙKž¨¾Ý}A¦JçPÏ¿¸iþÐÊvszaªnÎ^Ъ^µ yhÇÙÕøÜÇïãpÍu¿NßíÀnAŒì™õqG^½ÿûÚf|6ÕD‡Ñò¡‹´ò/y°Íu{ˆp*Äüs=èd–ª/,5x‹.¢…íO«c,&ÑÞŸ÷ßÀÓíñWH¹«»ýã²®(½H…Kóf[–ºú»Ü\§JxÎBÄLzþòÔžnÅ.‡Ç¨2@‹j{õÝÆ?=à‡/$Y²E».«ìâ?¯ETÀÜxxF+ã7(å…¨I”~b” -–¢î–g+v$‡Åþ3dæ«­L«º1ã+¹•ª»(s5X>‰ª›;S)o³F´Š‰â4×qP·BhV̶ÂÕíñ§Š‡¢Ó tYÍqUªd¥;•†•2go¦z%J•*…ÓÜ}c‰wÉSò&ÌóXÕU)…S3¸Ð­™Sÿ¿Ÿ`OÓªn…mÃð. äó”^¢ø©X6Ïß6 _/„S´Bdqý}ôsE™¯×«[K ‹ê¶WQ3ÖëæìO üuE©¦–1¾Y$ ö³ãÜsÙJvIì…wä‰ÑV\—¸&'@Ða§±¢ “V>éÐ.êJôw¥Œ¯“‹«¤«Îcå~¿Dó&$›…{ÙÊjüM“ £Õ]Z–@ÇÑ9?}ê×]Žnl¤âÃúp™ËƱ‹’£O/-i}£l Oþù’6½í[ÑH%òü´Í«¨ºUµ¼uxúþ­yù1º'«·'—(7'á¡GõqB@>hÿùN•ˆÒ+×r%éLvÉŸ‚¾‹ÂÕ;[YØÚè ¿öGÀì¢a*ƶòþ+2%ŽõÆ©`$6’ÛGëSÂÛåÜD©ü;À½›SâAªª–'³ïâfW¯rÑ´”º”ê•ÛÉO“¡£ÃªsX¹°KxSâ\·“¡’j´R¢€­2Ù—ÊŬäD‚…¹n~;eÒêÅhìÉäÜø]Þ>¥qÖïR¿Z¹·iÊåA+²ÖbÑJÞž&©Fæ²jІÿ¸Io·ÎõÆÑ×È«û—|Êx» /Rž¶ó[kUj+o´šZå¿ hµnΰ¿‰*œí´P û/íAŸ+m•þmöºUrqnÛÃ.JÞžÕq|è÷Ÿ(j°>šº¢ðöÉí|j^&d÷sÉSç¥N‚ãFÆí€ÚE™··Qo¼Ä4Ÿº³ïZù”•9óöú¿.pþº@‚"—XlµîfW•h1¤évâ}è¢|³dj4)ŒF}©•íý´•a¦ƒ èD‘ñjF¹"&‚2Å”R–iåïAfmBÙðgo¯ýß_°n§9 ÕøeÐÓÄDÁº¢‚h*F÷ð…w‰K'²KÂÙ!X»Y%s lfúÃêsva¦‡ðÞêÙÊT Nì2½dˆi¯Y #ðN?/—hýä¬úÖÊgX”ÊÁ¢äJ²˜8”É«­“¢õ‹Ù’¦+_×—6±nìë ˜ O_åÁTæér®àf i6Â/p¶õë/> !¦‹Ãxµ«¨W¸¢8×U”qäR~dP>KuEq®[bàþcZÉÙ“åå4§ªn6§ÊÄ“S'f§&©ó6%e›êæ’fì¢ÚÍɺxýth2M–ïe\UÙˆøÜÅ]Ô@TB«ŒV¶qüӸ߽=Qv’Tv²/0 og¦„·3¶*²@¦‡€Ä²~ˆúØÏ…·[¹–Ž>sÑÐ4ÔtÕëÍì1­¼ÝæWi2ÏðéÅsx;¹Õï“ࣕAJ#èÔÌ^IW´’ÈÇøiö4ðö_1 olÔ…öà Äìż= j"ÊžàŠ=Fõá·$õ°ÐçYÉ<Äbó¢¦y{¹.дúuE%ˆ‹¨Ô cÁj*ýt†Y®~õôcZÕ«Ù÷­ !ýÉ/“K¨©áWÓlã¾`¿úÕaµ¯(®Ô@Ú^êþ-PçÕ`ÒÃ,nÓhN ¨çböÆÆq"wQ Q¶q̯h=óËÒ"Ó© ÕåÕ¡·›)°¹ön.ªâ½¢9¦•y{¹ÚÊØ|’èœÞNP”ÚÍVM]Qv¶sÑ.úÂååÎGÊ õt2Ü!¦•툶@Ò`'j"£–àQNÃö @®ù ŠóöÀ…,ºKælÏvô¹¢òÆÙn=Dƒ¨/áW~IÞ8ÛÛÍE϶òÍž¢VÒ«¦UObƒ>cÎ[¹.0¥A„ çæ·ÿdÁ¨eÓX±b¶šò«]+÷¼Êਉ¨/é¹´›Z9—X(çͼdÉÀFù59 G­äílÿœè~eÞ¾aö„ÙíÆqs¢yãlWÂ)%]©/¿ pÔcYése?-0áíVð?8)ÌNþ‹>ƒ£¦f 4ohÞÎEomÁ#½0;8êiã,´²ÚI¿ù#'óv;dÌÛ~úL39ƒ£ž77ŽådüæœÆÃ Š ìn~Ò)'óvŽ>K¤ŒW ÄÛíg‰”Ó)ê‹Êv¶c+@ªd½/ŽzºRI¤$K¤D´ÂÛOGñÉf¾ÌŽšUÅnàçJ¤|`PW”¼ÑN)[/ž2þk"ƒ£ff¡å øÚ j}8(ƒ£2G)1»êЯú¹¢Z-Xe_0`ö‰V áÖtc úÁQ©vKÔ+¦lÄxÓ?úh<=™ýd«úâ ‚£æÌ•:_1bo䀭ÀQÓGý£‹‚£>›]×DäÆG=W ôëÜÏ+ßE¡Éýf…þ‹E+ôÆuãôó ÙpÔûSÖ<ÊØ9ÛU2¼sz†g-0R‘‹y»íAÛÎd?\"™ý¿ÅÛ·³Ïí…Ù­õôtôýí ‚£V’µó¢W°=‹_’ÁQ3™"F.&¼[ü2®\ÍÛíd±´¿¸3ƒ£r¥VFWTÆ…Ôá§£3½§çNh×D@”y;­‹VO¤’·˜VãºÀtªúžvôœ"¯i¶²&%â+ÌÕ"¼‹·³3Œâ£Ÿ™æÓl|µ³]¿`ȯ¬ùt¶‡Z7H@¯ÔiÏpÒ;Ù"dÿ4]Ì> ,-jÃÚù{°=yûm!¿jæíK ,ªyE¾ yû“‹¦7_p\µ2g8ô kÅÙžíÆ¡NÍZɉ”fg»uј i-£øÅ°YXj]‚e[RZKš²2²;{`e¯Ôù°ÀòbÝâö§÷ }¾·w;Û¹RïÁvèJíõê gQs¾e¯TÞÎËbÑW ì7QÄ ûÑ‚3\Ô°T=x?¦R8ÎHþÉ–šyšÏÎX Þ.ê’”­ gb+wWÎÃâvkÉâ¢g׿N»ÚEÉhîçéèî2Hç –Ê$¾'­BÛ,•&"ärzãDl¥ $)ÖÆ Ÿž˜“ÒªÝÌžÄ]²;˜º-î,5ÃQ°YmÒâ $3ÁR+ÄÝIìûw³ÛÙ¿¼„¥6† ÊŸiÏodšQñ«C¿ÿØÉEüJXª}ÁÒtȼü‚ÖŒzjûTIQƒÞ®•ô¥š‹f¾ÁÜÉVåWgxcvšQ.S†J%õû2ƒCOäªW[ðv°T9ZQ3cïP‡Ì>®_0åb'ƒ=— $’95¶ZøQ߈Z¶*WQ3Bµµ]ái¡®(êdÄ©r´†Í®v±xã,óö[›º5„@LÀRŸixyR¬ÂRëàò²Þrºœ#½åÙÚQ±U¶*‹eÏ%ßÛÁRÏ $f°ÒˆÈ©<ÑÕ«Vº³,,µªn¸S‚Ð%<ðFµnT]ó‡ùxÕ0õ&‰lª°þÌÙ•RnœVRsåó5;B-`pã´šäê½gr;Æñïã×e㉪§„Æ=iÖ~„DU´Ò§¨îsœ/8¿O¥¤rGü°•Ñä?ç @ª]7›(5Ž¥–ãâqE®¾ÿÇ_17†Æl5±•]‚énv¿²½¤fzù‚‡Ð£«+Rï–XêÏ/Ø}ÓjZQÏüÃì­òƒ_A]X‰Óü"™" õÉEÍì1QõºÀ]%âÅ }A€Ô\¹¹( c@FM~BIýÁþ¨ÕxЪó ¶ hE£êýCÀW«õFÔzUï¢|öÐ’-Œáµ[É¢t3»o«œ®Z¥Ü¸OUX[´/%“~\§ÝΫÐ!Z¸¼ !_*l¿¶ZI}T^pÀ˜(¤šÙ-ÒV¾bX`¿‹êæ¢<%ü”Z1 µ´«¨/U81g·ÇTž¨½Oò~v®ªªÅChFèW+_”©ÓZÕÍìT-úA{1 • „ª˜¶&QžÕ@-e±†ÔN¢‚¢jè§OX¤–³Ù5¬¤Âú™|¢úšUæTNf× ºü˜¶ÐšU|e¢JU†<&JÔµ™V Š– ?Fò±³Z­!•WIÕ÷_n¬]Rë©ÉÒ\t!Êß8¤âWY•-Åö`ÄVRŸlUYßxÔô‹3ô¹Þh%Ƥ*2ýšD}]ï’È4 U~u8fFhX«z•²jÞN.šü\t1 õÔè|[`M‹Þ€Ô‰3()j]ïûÙîß8©ÏGéG¿Ž«T"®Ôl}Àhµ½€ÔαUy!ÊX|g…Ë‹úÀÏJHµéK4­ùµß‘Z`ñÍ“³}_1ã>ÐŒSèIÍ“·³ZŠßŠÂÛ—mbZÏ’OTR ÕûEý»±é6ò ŠŠ©–X¶qÈíøM^Å€Tj)óÊWQÕl´‹ÂÛí  ——1¡÷ñ+‹ÛÓ¿!¤M©ç/H¢®£p€Ô’L‘L²ì‡2¤*ñèÌJ4.UÈÝ.ª\˜J"n§ ûYßzÖ*¡§û²€Ôš„ª·ÂÀ´^H ^©©Eõ6»€rµo¡€(óöíº@û‚­øíT µ€_—ÓLÒÉO R;¯ö¥úZºÒ¿¿`H+€ÔLAQ¡Ž‹Æ¥‡¹¢ðöd¢¢úQåjöš2/zÈœŠß`RÆílO™Ú¤¢+5¦‘Ìäi9yѯW¢ðvPõB²Ý*[ºO‰WR ü¹ö@ Šj d?HQn¶Â\¯Î|×î£  õ¬.Zìñ( õp„~ýÊá®(;Û·«V5Y…gDÞ¢WJ¾ŠúèìŠ*×>ž?ÌîÇ€ÔÓyu7{L+"•°º|#Ú?ýŠôzŠ8dŠ þÑÊíüã$½8漊:NôÌ…½èiJ-´4–Òþ´@€Ô²ëÍfñKî @j!¾*Í\Ô´ ˆz8ÛO_°½Y g;Mô”; zôÑ”Zˆ ü!¥qÈøíTeÉÀ‰½F+Fúx¤~ϦVJY´ÂÔ¯À¼RK¹WÇW A¼¶ÚÒÒßl…·“ ãdHe •ÿ¨›í˜]÷`O"aþ¬ì]Ôáí»a -­gø~rDáí ê¸èFCÍUXj#ßÞÊh×îúDáí-_mUS^ñ/XÁR™†”˜†”Š=â|$®nÞ…gæW³ãí–¿²Û™±¢ÉçA®4¥:” ÝÜepÈøe™,µ€;—aZ¥úÝF5q¶“Ìäd0Q5P9PÁRñ«J?~+s{±@šRO×ùv¾`L«òð­rÀ®Ô€(¼Ý^ôP‘á@€4º‚¥Â¨–Êâ¼Zfö€­ºÎ+&„èÑ‹ú/Zñ»B*Xjá=%ޱ诨€­æƒVDÈjšØÁMT°ÔB?~²ÂÚW K-öJµ¤t@~±šÍÛMTºÚ*&*ë@žf+8±Oì§¼ –Ê{°ð,‹SÔÏ‹Va©‡7ýø‚»€ñF+¼}•‡’Hñ‡óT°Ô“‹Ò‚]ìÁë'*XjÍæW\^š59‹ÏŠ]ÁR´ª©õ«*Xêùd¸ùUh‚¥V%ZeŠí¢?@‘^ÁR±Õäd؃Z—o+°Ô“‹ªyr2ÌâãΕ¦Tü*à ӌ#2XêÃ=xø}°¡óv&«ýM+‹d°Õ°#þ3¼‹dꃭÚ­ÀR5úâp‹Ì*ÇrE™·Gß~ 4œA 쓦Ôïyúßv¶UÅ-½û9äjM©äd*ÉÌJ2sø 0•¦Ôo®ê?Q]ShO€]?ÿš–Zû"û1yR'?üÝ –ZyÑs2T‚¢ý\Qí7Q…tt BK­jôäW¡,õA«ÃA 4o_8Æ3Xøá¿&„¥æ¦üU¡z§³ÀÑ ,µ’tªðI¦š^hÕˆdî±h[”r ?9PiJM*OªIH\OÖéà·SU°Ôj©°j.úf‚¥ÖÄÃDõ¢»Š<#Z‘“©7Q¸}T樭?ØÊ¾ uÈH,õWgøuEÍ;ƒ=L>nኢq)£Uæa¢Pm?úü¹›·7lEÿE7õ–Ú@â:ð™M[Z>>X»y»iu?«¾Ôn‘ µjêÕúâ v;Û×Õû•CSWg;”§É*ÉÕßÚÎݼý&ʼý³]QãßZ™¨ÐÑ–JXû~ î¯Ý"™_^^»_ù¶–ºËÔ!Óé[} Bf,j×|ÍÆÃdß8”Üœ,µ2º¾Âö\i§JþÔ‘jX*ÊgQë(âö_S‘ójmK·¸½ÁÓj7[ù2XjW»J£’¼5î¢ü`,µ -ðhUØ'BfŸæíëü‚ÂRóÔädÓ6zf`;–Êäݦþc©Qg0,õ.êøaQæí€/†2i"òW†¥šÙÿúÍÛ¹31C~ó´<ÍH-ÿãÁRë¶=øÕ+Qòö‡þÖ1TÊ5“O¥[ÁRù‚ÞÒÊè5Œ Eu}Õ° Ÿ’«Ò”Zó|Ð ŒÞo8ª`©5ÛÓrjãP½3ýк앪'Àº4¸g 4¢®y5û£Vÿ-Õµ®Zc{ž%ŵjüSG¥¨Z퇴Í2ë*ʈ,Zñ{XjÆÛÿ, o§¤¹2x°ªÏ«U?êk`©Ù† «fÛöFám¯Tè÷+C;ìçIo`©ßüZbYŸÂÂÔ}„·¥VàþJ·l²‹>" oX\SãlgFòë›°ÔC@:þL) Žü‚ØÆ Ô³(òWÛ!Qx;-ñ«— –ÚªuasüÊE›°Ôf7P‘Ýbltaw²”éžÌîƒz ,µÒôWI:u+nñáþ&,µ‘Ù~Ú8=ÀЄ¥:¶ ™oof«‚(€õÀÆK=og=LÞW`©•Ìv%³ýîdÈæílœ§ÓŠ¸Ò›#jÊ»_"Ør¹kÕí¼Êo´ª×/˜*ìôµñvö‰X[6o'B¾2_sE‘“év2U›<âü>úfX*}©•ŽõÛsÈì¢N:oÊ“^È`©U#”¥þXàþËwQÃR©Þá žýÊGx›a©w[nµXj¥È³vö`'Bö¼ ,õ$ªpÑŸnœ€(¼ÚÚÚ ¶RýÆÛ–ZV\OÞÞå;ƒüZ©<äW= ÂþÿuE»V ?ZUgñî î{°–j¶*Ì$ ÌÓn`©•‰è] £Âû1}Ĥ–zú‚éªUè ž~ÇÕR‡Û<²@°ÔJhU]¡ ûÓìŠÂÛuô%޾ú!÷ÕÊ÷+ÃRÅA}8æ÷åÆO…5ÃR»mçþ`«€Vê¦:ºÐùR†èaÛò Ìša©$” S·æ÷ˆVóAÔüÛÍÛ¢hf¢Mõ»›MJà8*nøUô.5°Ô[ÕÔÍVþÆiæí4t«ö£œ8†ÿ K¥ ö¬f÷;ša©ª“ù»VíúMÔñ¾¢ü™¾TøwQãA«Æû[ÉÛ;óPºuaËEc¢ÌÛ×ùèÁ¶a©¶ÀZèÛ ,õì ÄíƒË+ð\êæí¼&ì@Þ”“ ð34°Ô‡6óÑ2h3o†¥ÒVPU‡üÃV¾·ƒ¥fö`¦C¡ê•:ŠŸŽnô¥V›ˆŽ­Öàvöé ša©ƒyãdØæ³Sñ;ÈÉYG&¬õ‰X›°ÔVÅ«ÜûäaÿíÄ ô¥ÖI"X¶N¼×„ü@"ª¦“3ø7Î '#@á ôÍ>ì•Z´/Ì–ZA-ë\WQŸ¯êвWêÍVfö˜(¼}ÚUNY~åòMXjýîú<-騪ֱî“!7ÃRçƒ(¡á3@ý× Kíjv[àGgO”a©·ÔÅ3\³øãÚL×V†y ÊHB K¥ì-5C⌹%ð\K­V'°^­Ê"pyÑ—êd¶ýêè–ZjY©Ù®Ö à÷ã4°ÔJ©übø`‡ÿ6@ÛÀReºMgûñ)Êñ\Q·|{ïVFbõ [áí¿§ ¢„¥ö®¡}ˆÛ|?;åí‘a©÷=¸‹ÃÆ„j˼½aöŽÙ¹qü!qMXj£¡U ÝºÏz`;/;ÛïòÙZµ¿š[ 24(¨R­tªEÿuâ "Û. ±vpc–šßOçBƒU- ÔF2ºó50†_ïÛAR´ÑMYQÓj_ «UI}ø~vG¾_ß|Ý转k"¢•NörbrÌwðó7í°UE Ì|Ù|Ý ûf¾¾® L6¨ 0³³ƒ¤>,°U‰Õ¿æ;Hêyì@Ún«ÿÂéÆð;‰Ú'Q»Ž˜˜Ùñvjî›5Ožp~Óf§+µÐ·¼®¢>šº¢ÌÛŸ‚ùâ ¦‡8ænö˜Vðk0½©B(? I 8]© ¨¸Q‚Ъy{@ujpm£¡Cfd¿ ÃðÛeœ\Í€Fÿ¹ÛéJmP*´j_³ûUÈÝ~i%åÝ5É2ÌgIýõÙ#ÿèËæí·sþ‚‚¤žaþÉì ©„Ec´s²NËÀÙ’ÚÈŠ6ˆÿšeEý7jÏv¶ãWªÝÙ­îÁÈ•*$µ1z°½ôdg»'ôlÞÎí\¹›]¾_¤6PœÐà™ª~?U7$U@c3P–"’¨nï ©÷üɯN_ÐwÔ³3Ì?-PHêáŽéÐà²ÀQýš^ÈÈ@Õ1Ä·ØÙ«á÷rôBÔÿ~•3B£fI=;±¨åµý°¶ƒ¤6’;{Ðê}³Ï¥ÛAR0UëíªÕ¾À€3Œ;ƒ21g˜w[ bQæ$…´ÂÛ-÷±L+½ðgImäÛäè›¶qü“AHêî„ÊŠ}“FÄÈÕvÔ³VìAËŠúuä$•~ªÝ›ÔdnÕ #ðš’zønœþ7Qx;è`›·/Øìí®TÛ8Ͳ¢ ùÈ~"¬Wóöùo³ÇDMlµ]mµ/Ké¹À˜–^ÍÛÙÎ$XÛzcöfÞ¾î_P30BZ¤622˜Ý´ú¸Š+*_muX(›ø…V7oOëÅÞ @/$õáy«•¼½34Ë&¨åÍNÿIm$X ÖvJ°ú.Úž"™Ûåõ9Í\Qœí§¬¨H|oçá§2;Hj¶ÀÄé ÷«dz·Hæ!wj,B ´®TJ[ÌÓÊâö_oçˆVD2Í6Ž2\©ÞlgºRì S“?›øØÎ~•LKíÉB5õ½t¸Hr๴n¯Ô ¬qg†¥ªn dÐÌT€éS¡ ÃRW~X`/pl±œLàš`©ÝüJ%ïöàKí´¾wk}?}A×E‡a©2{zð¦a‰”ˆ(yû€Ö¤jR{£Ÿª?ñ;ÀR;TþY…\Õ¦Dgÿa2¶yó+z ûg»ø5]4ûÛy¤˜·‡DÞ~ø_leXêZ½UîZe»-[X Hz°ahU0G ®©ÝH÷ 9à Ì`©ýÄEb¶oleüȈdU@îg»_ ëJ=Qì)eÑAÃdvCXê)TËb¿žô@—×–Zè+6[­IÈì`©Ý˜wlR£üj?d|¿Kå ¦.¿: Ù¯ê`©=?lg=x?ú¹¢êÝò¼:C«~“ùÈæí¤Âîl2»_¹äKE«ý93¨ÓrNÿ3ÀR;‚øÕñ„ û‘Œ@½]+˜ ë³ú¤úRu¥”›ŸHF0G„KwKµ£Ï\tT«gxû‰áWI'\ôÃã7;]©ŒA[fMØÊ°Tc² öKÕö}ãø{,µÓ´Ù«‰ê/¾ °ÔF—×!à+м¨_'3„¥š¨V¡}) o§álvB5ÿ51ÀRÏÙN†7Ù–Ú)ê–US9B€;ÀR;Û,ð—î–j~Õ‡È7O~H±cø­3”¿-o×+õäí ž©ÿôsEY$3Ðj^E…6XêøÿÆ äÛ™e`o`©fàN“y‡.ûØÄ–úcãp;ÌáÕõÉÛñ+Ø"Þ.,õð¦thpøU³øÊ_ °Ô KÑ“3„¾ Xê¤zgBŸ:@ŽéÏ*t¥vZζê/l–úE ¯‡ (@à• –ÚÅÎPQ#ûd+Ã°ÔÆyÕÆŸœ¡™·c+ÑO¤©nçÝìþ!–Ú ZÑß;iC¿¶vXWêIq;Œ!Qœí œë—ƒvªß9ÀRÏZl5_h–:éiÌT±Náƒ}ú¥\,õ´Àb¶"ØöÛn]©ße%ôËè÷] ~K-¹óÂ[åßË/n†¥v2E…½ÉÛòÐaX*%7“åÌ<¶ÈÉK­…â–¦gÿnB¢ðv#Å ôt;¯ <¼½ÐåõYÌ×Û›ÿñ«Â†a©º¼Š±ÉäbZùg»a©§Îpµ^|AÃRM”nçChXXª‘ÀÛ’ÕÓZ`;Ó•:^òíæØ8ÂR l}§Þ~*3k {p óöùð¢üðCXêaâÄÎûä¾ÎSê¯F d¤¾}–zâŒØ®ÎðÑÏeXê‰Éâæ¢ûÃË·•1übc`ðj obXW*amÓÑ÷Ž!eL;ÛÙ8±Ö«¨Ôãæ­ÚÕ¯ÌÛ+ãZõÙ†°Ô>Äd±‰cΪËkÊ)‡°ÔÚi8¢”ëãã‡ÙýÞþ!,µÑ´ÙG#'ÃÄ—áÓòÃR©ìÔ@Ò8ݪÏ6ÀR;8NŸ\© ®Èç’a©zðöÑyM@(9'Ãú%'sè÷ÕÊw°ÔNe& |k+ÎvKÝWbe?F€Ìn–ZÉõñ¢g,ú-ʽè;Sxûh¯DñJeˆä­2o²µ`©ƒ^ËA_ñØì úgYÜÎÙ®÷àîMÖD㊚ÂRŸhf,p‚¥öI:z‚¥NåE,õl«­ÌEÝój K=ÜñëW4HBÕpÑiX*'Z™·„º¢ ˆšWQ5Pû1ÁR9MœYê÷ ˆ7Qfi…·ÓçEéi¢ô´Z'XꯢúðÙ& ¿Y™¢ÑCƒ<ƒ?¤vÒ—zÖ [~TŸ6n‚¥ú‡á8•˜ÁçߟÂR^ÐO°­oOdŠ6àÜLv¶/´R®Ïj¶§ßp4“yûmãœ!²@Îv¸ts³ö7_P‘ÌÅ^Oê]êYÏðQüŠ”™ˆd¨o¯‹kú‚á?L&}©Cl‰Ìv–­þÙN_*·³}Á#Œ~Áœþ½@3{hÙ¼¼¨ö`ƒl%ôÁRèÈØ*c+Ÿ­o‚¥`ŽAö0lÂ&Xê`¨vVñð¬Ê3Ì@WãÌæí´¸ –mÉgÍo¢™`©ƒ~g¸‹¯oDq¶“Ž 5žKþ¬‚™ŸÎvžƒ/8ÛéK=¢÷/Ò ,uÀ›mçñÂVż½þ{cúï„á­ØÄákåð5WT}•Ñ ,ÕϪMúRÙÎçkâty´¢*¬óšhæ¢VF0»yûmÇnŒîA°Ôïw5{z³Àõo[™V!gK* د <êÃg¹™0ü>˜½5u¾Œÿ`mWÞN¶v­…Ñé#ÔEÜÞL+;úÚ g¨æíýª•ùÕG¨+ o'I>ú¼ŠúhêŠÂÛOÑW_pÜEÝÍÓj^ýjÿ3f,•½m~cȤ/uÐȆ­ºÕ!O¿pqÒ—JGU<-‡=-ýâ– –:È~ŒÉkÂ)þl•ÙòoÎ`ù«À{,u¿¢›#i.°ÞNrÐx;¬8¢•y;ÇRaÌ*h>b2ÁR‡=-í• Ó}á`©ƒÆÛÌÀ9øËb œ÷/H* ³Ç´ÂÛ­ƒ\_R¡õ$~'XêT}šâÅKÓêEý¼èìæíÄ¢‚°Ç´~g¿a‚¥N5ýÕRIf*(úuE.Ñk9™9­xا1éKý H‡]äW´ø¹¾ –ЍYõòšU5Esø•,uªóå°Ú­b¶Ò+5‹,¸=—Æ´Æ[?m8ÁR¿0Ìÿd+yûPÕé†ðN¿Ïk;ÛÍEs”º½°XꤳølvAØ%°ÁR¿9îÄR¯ÞîÛ ,uQ[‹¨Ú¥UÔªM°Ô©y·¶[ƒé~ng~'9™INf’ëë~íÇ–š7½÷_ƒ/¨äÀ <ÃéK(X¨ÖM+ÿ@K}ÕUÜ[àz°•*èfâH¤L;ÛÇUÔK­fzX à Sr 'C_jÖEøøU²HÆ7û´³ÝnçyÓªG´¢ ÛØÞ¬xÖÚ@Qú„á÷_ Xù+¿obÎ[$c¶úûÅÇu Õ· 4o§é¢Ëi}©~=ÃKVu/»µ“·ûZ­íß~e¶ m°Ô™Šlî;¤ùÍg{›Ë"™C«ã"}ѯru†Óv~·ÁR¾`ÍãÍ!³ÌÛïq{7ÞÚ€_Ñ—:–™Hë> ÈëÉÛ-€T‡Âæ—SNÃRO¸[ÜþÙØ®¨õo¿2oÿÄ\ލµY$s;dίTÿY›Åí¤wxÄMH²M,ÃROogÛƒåVx;Åk©ä&3(:ûœ™k³H³gÌÎØƒé'–a©÷Pí],ºÀR´Ú—Uß,püÛVG$%o'€lM³ Z3ðÅ Xê<õ¥30Ò&ûèÒ¢/ujîûá?EM?Ø^†¥ÊV?´êoDq¶[;°U±2#ûƒ+Ö©/Õ:õˆE­¤Ù¯U[†¥žzxÿ¨¿'%µÖ1YÂR_àŒÿYÂRˉ÷ã¯fŸˆ"¾‹ZMQ`æí\©§¶Mp?¹²yû“­ÖQéaó*jŸý'ß¼ýi!K§&å?Š2Î ­¸q ¨o~·ìK}&øâ¼òé¡}©“±ÓjÕÞÐC-ëK5­2Á¶µNG´¢¾¬ZÖ\€A$á [ÂR÷Ïv˜=·ƒÙæ?âV!nWÙš€õÖ(¹I~°½ÀR'3f#™Ù¸è,Q Vù>iRž~ÅïKý´_­8Eaž>>¸„¥î¶¢wIØÄþ‹¶ÿ¹´ÀR'Eg%üð!¡UÌÛ1»º°;ïÁHËØ–zl’IJòá¶RLc ¤ë Òõ¨HY`©“‘ÌSU/ý ,õl+‚mFÚ„Dݼ½æi T"eúˆÉ–j¶êSQ_çå5¦ß7±èKm Õþ¼qÀR§áƒ“YÞ:E…¥:‡LÄjЊÖi•鯴ت¡UÇì­ü–:Õ2¶ß£ÖÍÁÃ$ðÆK4²}+/¾çïA¿ v¥N:õ¦ZwýÚQé®ã«§áƒ>¿èKšÂ»ëRïZù ÞjåA+¾ KhUå ÂÛ’‹öDiDñ,°ÔI?ÎdÈŸÆ[ Š‚¥Në»… ¶ªol5ÌÞ®¶ÚùçU3o×#®^ôK§h<ÃÁRøY–èŸ ÂRwéAQ_à Z_ªxx¿@ÃR­ûìÔ^G3©Ÿ [†¥šÙï¢bZ©/•ò…©áe¤W 4oÿëûƒ_©éÏÛçÈ4oÇ$ôVÔ¼.0Me¶ˆ Øjýê õ…(°Ôg³¿e}©ÖüN|Eñpñ+É—°Ô\D•‹ºû‹Õ_úש/5ß¶ÍÈ):ÌÛ­‡÷æW‘×–ú`«OGøñD}ÂRÏZ©™ôÐï«UÀìxûÀÛ™ŽV­Þ8ÂRhuÛ81[áíLÎj”‘P‘2"¹>ÃRÉlOªÂ&Ëšß⺠KP˜L¯Ë–­õy?}©`RÊ5i›/hXj-Z‘t ìAúR'дR.ÈK «–Ê<úüó¡Ë±@¿ûlM‹ÛûuöcZáí˪"¥3 ;Â9°ÀRéŬFÀâ]«€ÙÅŒWT‘ÒZåOQ` ï¢/õ¬UG+¼ÝïK]`©‹ dÑÌ—ýW~£U¾:CZÉD©¦hò ÂR·Uk~¥Ó2,•팭l1Q [uD«¨Î®(¼ýt2 } ,‹œ ˼½ÿÛbZ™·Ûvlµ®¢Òbôêµ,n¯å¾áŸÎö›­Æt»„vQv¶ªQzŠ‹ÆDe¨ÚÚE•ÅË’“ÑÑ×ÁqÆdHÄd¸®(yûʶÍÛÉÖºÅû(;Û×ÃÜÞ,°ÿßå9Ü"ãaßk" Õ`ržáÇ¢¿.°ÞžÍÛUÔ,×çF2»(;Û-’•ìlç¼Êö-fðm–ºèóZy\E}ÜÂeÞÞ¯Z™Ùc¢ìlw³ÓÕè'3wQæí­ ZÍ7fo~5®¢>šº¢úu!§Í&HFö`2oç-*{›…“ÁíPØE™·×ÁÐÆK]ôÑÊ“ŠŽ¾=fð®‰ýÎÄÛá´” ›_:Àÿ8ÝŽª]”E2|AªX×fÎà/0“oWO\ŸF;Vìšð],õtMÐ·Š¢Þkb…·ßÃ>õà-o×3üÐ%ãaa­ìlgnåof¿í»71$ŠÒ]úÍ]”y;7U%qã¸ò.г=˜Ð 9õÆÕmÁØ/:¼Z×Å$åkÄþLõEáíÀ%™Vù¶K]”F •mç]«€(¼Gܲòo ŠÜ‘(»(;Û./ê#_°´»¨»ÙcZõgàaÒìçŸWô¥.oͤ«™­ 4oG¨å‚‹5$гÝ65E‹Öéˆ(°ÔE·ì_X-’ù墉²Hæöàý¼˜Uá{;}©EÅÃû/‹ú8ú\b“]Þ¥ä‚_ô›¬þîA?f /uu»i¢¡D0¹-®»(óv"ëû^©{°š·sÈt;dÚ[áí¤îWWQŸ¥º¢n‘̱¬ï)Ê•Ššíýº@û‚!­„¥º~…·w6\¬«Ï_,uõy×ê•3´'oW­>â]QíªÕJæCÅ QD2¤î¾`h‚¥.RËj?:ïA—Ñz…·OÛÎ*{+Ù^þå–ºH:-ÒÑkòtYnÊF_êÃ쳑º,,uY™™/M$Æ­¹ »¨ü`vNQCÜÞ]ÔÍÛý¾¢x¥º#çvQæí}ÓŽ¾õfx»åú渊úØÏÕ5{}³@¼ÝdR÷ËR÷­ž¼ÝR÷0’ÂRó&æá¼é¢Ïí*ÅåŽÞŸñxû$’™d¶3Ïp·£lÂR >Z1w QcºL黨Ì©gÐlÙCh9„º¢ÊÝVŠ~ØÊ7»°ÔCƒÄ²¾ ,oØ®fÿ|­‹­Z ¼GEžA/s¸ðÙ.j°@6Žº9Ã’ú äd„¥æMoçΠÒ|ÙEñJUcH­òö¾©"eøCÊ&,µ!÷ÙìlWQºÏ”¾‹ºyûŸ¿à4o·íLU˜E}Äí–ø-}Ì›ˆ$&Þ.[åMÉ̼mv Dµ›V]ݲ¦Uknÿà.Š.låó¶ÙÉ€(· {eÞÞ°s—” %€˜Ìù`+‹dìñ½}Z$c~Ez‡¬Zw‰.ËfXª‰bÞD'n‰ÂÛéw.–²à•eÞ>9¶ëC_аT=Ãk·æw#brÛwQtaSÙÏ%#­rÉË&,õpÌg·U{³@;Û‰úF‰h5®f?tùù‹[/º‹2o§âw³+Õ’ä~̰ˆdÔ—z¡fŠPƒ¢¿VÅÚ8dõ©guEYÜÞñ«åÃɰÔùä /Ìž6‹d8ú´qÌì»(×Òf‘ŒÅ œW…¼¨ï¢ik¿Šz±ÓÆÙ®yÿ3¥?Ê'íç’°ÔýMÛ¦…j‚9j Åš„¥þ3Œì¶”´™·[PDI³Jå?·'ʰÔIöc’ý˜v û¶–úÎ 4,um loÈ+uÚ5A|%|0¶À[Ü~¸™7Ö¦dÞ¾$*ÛåEXë?⒰ԜԼÿÒÛ¹[ÒÉÑ'ÃRÕ~ø}ÆïÃZÍ«VÕ†%5úè—‹&ÃR¥Õ.ô¸¼ý¢Z–ÊÏÛÙüÊwÃRïZ‹kE$£Ôý¡K>t‘(ÿš–z¸À—WŸ'gðÏö\¯Z•¬‡ÉghÅ+Õ:ÖOfµÀþ êZÑ…ý¿›.l†œ–büü=h}©™ HÕ;ÅÆÔ6— ¡$a©‡€¶:ô ‹JWgxÒê#ÔucÆ;ø¹>g»Õɸ%Í»("™ÓÌb†%©*¬Oÿ휄¥ÚìS¼j3©ßyÿùá‡õ¥JÔÈÊÍM}©»P"™BÔWx;[‘gDq{ã•z¢Óí²q{áòªäŒÁlø§àíV'#Üy_QŸKUZRÅÛ+‡°¥â¢>ø’jºŠª¥r^ÕòF”¸ÂŠêöÅ€†[¿³[³½‹ÂÛÖÁì7¾‚ã7Ö2/µ‰;Œcë ú~E_* Ü©ñvS©ü¨SÔ°ÔJÜ®nYÓjDü*@²·‹2o'ê³Ú@Þ.,õXÖwåê cú0Gjx»Æóí‡Œè ¦Øtg hÕðöB„\Ëÿ]6Nèiùߢ^žW oo<šiÅk¯gH­^meGßaµof; Jq{‚¾ Ð:]¦¥Âü‹¾q¶·|]à¡i9–êŠÂÛ /z5åÍ*R\ÞÚ]ÞÞ@LTÊuèÖÊÎv®‰ºD”õ¥BðtyEœ¡§³syµöF+óvDé“á û‰¸¢ðöÎïAª£WàaÒ-n7³ã Æß>}gè¼R›Dåa÷ ©{ÂN½?h5¯¢bZ‰a£hüqc¸ÛþK—׿va—Ôñvë–µ$¹9ƒs$ÃR54ðè½þÜκq†?IyÒnÿÖj>¶Z¥faô9ó+UôÀÉ`Xê“3XŸCN†¥öô ¡š€&ÃR™\{þÓx» ~ˆâèóáþd¿&ŠÞªÛùã¶®(Îv•‘ü]«ù«­¸qü*Ö4Vd!­¦y;ݲôÑŸEù_аT£Q‰à[­ðöQÀßl5ËÕìÇRÿ°@óö…Ù±•¥ ýú«dóR…¥þyã–zÿ‚/´ÂÛ_Іç.ÞƒǰÔ; ÐV¶——^ Kýa«¿¹(X*,7vM´¥z†Ï…áŠJÎPÐ*½0»°ÔÛ~ˆzùáø6ù]‰”¼)[;J Ø^x»1¥[°m%‚ä}©ÐbämlW­>¼$®(¼}ò0™„µJïì¢Záí“ršÙ‰¯€Xj¨×º%˜c2# ´¸}»keô.ÉÞÁpº! a¡¢>ßÒe¯Ô_Ra}ºlo»(ÎvËÍrý‚1­8Û'OKÍ]ê›(Dö¨Ïý‚,5mˆ²YEž£ø_0ƒ¥&ÊÞ’F¢dˆ˜>â]Qýº@Ûƒ‡¯ý* Ký¡UA”6N÷Say»y{NTï@_0ët/úl}©ºmãì¿ò ³'óö|] }ÁPWTbQõ*ꣳ+ oÿí¼úœ®(óöòï/ÓªÞÌÞ˜2wU]:»’ÁRS¶C‚NåI}óc†lXjÆE3Ǫ ý$yNx{¶™Wª5)û×D6,5ãíÖïl Q Q¢ ´=èAa©¦Õaìï‰d\ÒªrÙ°Ð|Y4“rŠN¿x8ƒ¥&êES¶=ØY o+ÃRAâR®WQŸE»¢ê¯¶zã ÙÎör] }Á˜Væí¶q,u¯§º¼µ»(;Ûûÿ]\4'õüº¾œÍÛMÔ@Ô|# oוz\™O–š¨Ìü«V†¥jTNb²+5& o¯œW•óÊ€*æÈ¥\á°ÐW”.úå?—r©Zá¢Õ™ÀA—jS·3lº%pyY_ªúèw ÖßDÙÙž¯ <4-‡PWÞN,šj½ŠúèìŠ í}â«jg{ù÷ i%,õ‡Ù©H1|ÐÖsÅÛ;çÕ0³k>e÷. o'™:Çâ+¿€?WóöíúûbôjÌ•³ÎÌ¢ìÇîM.9ö.гzóomêìA¿¡;ƒ¥&žá‰}Ò=Øýñ1»(óv6N·/øjx;¹¾ÔëUÔÇ~ž(°Ôg³× K=mç^®fiõä톆Óçå÷d°Ôd¯Txk‹&†Œâ#&,5M6ÎdãL3»!–J^4Yz‡ñ|+ðK=k…Ù§y{à ‚. •wˆÄ—ÚUfä5–šÄ«Öát2Qcºc>Jnæíùº@û‚»¦¾(°Ôd8ËÉ0>¦Î+°Ô_™¾÷`7o/ÿþ‚1­ìl'€œÄ¢Ök0{7o7QD}TG‡DÉÛ3s⊵Ô"|pÖ@V­ÛÙÎÆ±y¶7Zq¶ê% ìÔ_‰²Š_"dQJ‹.Ç¢]Qxû ÇDåIcj³bQ°Ô´@E“©ýøˆwEáíÄí”ÜØÜ´Ê7[¡Õ´¹áÕ%P-YXj-â ëK¢¸ón«Àåí™·s¦0o2~“rKPÈ {ÄD„8EÁR3^´ªP­’N`©Ï_PˆIõqœ –štMüy;ƒ¥>h•3Ý­ÀR3)V›»T¨ë[¨OXênX•4wEÈ}YPäNv(™y©…‘(Mµ®âá¾üê –úࢇø¨30/µèv¶šVû¯€­ÚMT± ’÷û}ôyš·WH®~†È´y©——2Eöçæ×e°Ô‚Ù­c½‚¥.XÏpüvE2‡±óaì¸_­'o×EoC¸ŠæuóöÆä¬¾(ŒØŠ¾Ô³VÜ8¯NÑeÞ¾!*]ÚÎ`©Y ’Çå{æ»Àá“ åeÞ®£¯wû‚o¶ó2oçvVN&g#Pu§«ì¢Æ¿Á޾˜Ù-n·Û™z‹úÏ%°Ô4í¼²zQízѲmw­N¶Jq[°Ô‡°öÝËfgûú÷!ÙÎe3oçJ¶áýðCµbX*˜o‹ûò߃ŰÔy{¥þ8d¶Š½R—Ÿ-†¥Nr2§7Ϋ/8ÿí ?ü* Jõí½pмJ’éǰԬêœÛ™¡6X¶€¥>ˆjž¢å—ž–dq»êd²AB [ùÈ–ZWª0¯Ú›mßìÉÎöñ¿jÕ® Ì_¡a³Þ~Ôh¦Ï¯†(cnq¯‰bX*fOJÐýÐ*°À‰­Œš†*‹eZ¹‘LKýþY:btWv;ûÛYXêa—ÿE«lÞÎsI#ÈýÊ¡Ÿ+êæí9I«£ˆ7ú…¥.XêhÞ¾®¢ö»‡ú}1,U{ð.Ъ_ýêÇóQưq£<Êù åQ9õ¥š_µ«­F$fKÅì9«mÓlõê‰Kͪ~ت½•®fÒê#ÔEŒ¸_TÊÉlÊ<¸b}©w¢€—_,u;-ÐleïAÿš(d 'C!’¥yF´ÂÛ ¯ÔB,ÊŒîó3a©NÌ`å*`©YèR­Ìæè°‘„´Ò+µ2]Å´Ú~„´ªæíÄíj8šAÃÃo¢)†¥*SôÈ`VüÈ–šéÔã Öº)¾ª~е€¥f 62-c™…ê×°Ô³­è¨RPô±š+ʼ¦)¥£w]Þ¸¨°Ôás_pÝ/ãº÷«wаÔ'º·Z™·~C$ލ~®(¼ܹ2Ž¡‹€¢/¿±Ð—Êkâé Æ´šf§ê.Vnx)“ äf¢xÄ1ø`óÐbXªÕɨ'{’™ô¥bö̈ÌÌɾ|ΖZìag¾s÷K#Ša©VrCyR±'€aÃRO ̈âãSˆ8~¿U cg¾ex[mˆJWQû¹¢ðöß™Ø4oß® 4³Ç´zòvr2BxÇу#ª‚¥øú*Ìx•Åï¬`©…ÃG2ÃG>â]QùúkµÌvÇE}°¸‚¥ž´‚d¯Xq‹?/µ‚¥>ØjaÏÝJ–º  ×²q w;¢8Û)šbö[÷[§+Xj¡o¢Ü¡†üŠ:e [ïdŠ h ÄÖm]áé †´JæívŠÖ?™=™·ë¢gÂQ.ù•¨|Õ*C$>˜Š8›ß P K%ßÎ4­>‹vEáíÕ¼ Häø/sEµku|€rìWgû}~6q|‚¥Æ|Tèì:T!­æU+« ;vÀÇüÖžjXêÝú=TÈòÍÛs¡AÚüOÕš+ŠHæ· ès4»¢ÌÛ ZÕ¿i…·ÓDQ@¦7¼^©,•!ò?lUßh…·(|¡ÌfúÚ*ðÕ©W-BVIÉö ô K=¶îw㈘÷4›#°éK- ,ÐN† ¯`©…–±¯…~ˆúhê‰K=2@ÅŠñ=Xêé¼Á˜V³Ï‡{P_°ú\a,µÐcRºÙаÖçU«`©…¼(dÙØHª¥ÖbÞ>®_pPö6eo,õ¤ÙÚrŠúfK#PëLúÛ¬ì-@ K݇Ìþgµ¬é/pÈЗZÊmãœÍø‚`©…¢tø¯j-ù…­ÀR«e¶9·ƒ¥U:åo¦íƒðfPKŸ¦‚¥~±“Þ~œò_[ùGXêù¢'/Zß\ô`©g³ÛÃd¼1»y;$P±X4·Ó—zÒŠ‰!µ¼Ù8`©g³Sß^Ê­¨ÔìËŽ>ë‰ó)D*Xj±·³¥Â Y5¿×²‚¥2´«dë]ªþ´‚Ú8ÛÕ\kågÉá߃`©ôZúe–^ º9*#œØÎ»K…D™·_ÑâZÔâ:u}µ™·sôÙÙ~2{ÀVãþçö7[á팮 *,Ÿ¿r  K­µêÕ@B.4ªO“XÁRÙƒ1µƒrÊÙ…¥îÖ½yD}4ÜŸçUûÓÙÜ_x˜b†n‘LºúÕ®K}³ÀúïšÙc ÄÛ-Ø.€+JèR׈6ÈÉlz.H:Ú°TÞÎO¶Šl°Ô Ui¥I¹Ò?X}°¸‚¥–YDÍ7¢,’©ØJ6Ý9üÖž¶Y$£rµ†#†DT¿"¥–ʬƦÐý<ÝÞˆÒÙÞ4ArwG:_Œ Á÷ö–Z™ï\™ÍQ™V0}2ÿfXªxðßÿWž”FZ`»jupCþA«þ›V†MøÙÚfXê]Ôaµ°(ë]2³34³UÀEÉ@ªIù‡­ÞˆJæíý³‡DÑ…}âý$T áõk?š°Ô¶áµùÎ~XÛÒCNºàÆÿ¢oÉâv‰¢`Ãü꣟+ʼ}>˜½¾Õ¯_ðI«PWg» ¡}¿Aý7IúI§–ZiΪ4gÕÂÙîE ,•PcO2–›`Jo`©]ü ûõ©Ì6´ùsø ^K­¼qNOËÆ=èU ,µRu_ÕÝ¿?¾Õ¡˜×ÀR«l¨éoÿe½áîEßÀR•É·gîÁ]¦¿…¥Ö*H¨ÖFr [2Ó¿¼èK­Ug³s;û™íF_j-¶@2ÛKf‘/8µ@Æ]1P£o¸höSa ,• d&•«u¾ø MXê¡Ë×8E™ï¼üæ÷VÈ@*ÅzøŠšoDeDçU_‹Cfñ0ñsȭܼ½V£¯ZUR¬‘fÒf}©![* gØüÞð–ZÖ¹RsU=îUÀVœíUuô¿‰ÂÛ…ãÔʬFØ·@ÒIXêá¬éóKò<õ†û§è°¸½]muè÷Y ß-ÛÀR+%7Ž_D}–ꊲW*Pãyw?‘–ZËü·3„´KÅv»ˆêa›¦•!–jÔ4ƒ™$êK­¬ë—!Ç®5"êÉÛ9‹  ,µYsÖ)¬5¿ ˜HÆŠ[{p±ýÎâ–Z)lTY4}ûèïÁiÞNÌ`„9⿊-o7t­«¨ýëiK­jqÝEumñ!GZ0Xêy“š·l5>hýÎvôù¸sKmt¬·‚Ù-ßîw€6a©g³Ó¤<²íA×V]XêQ@ØPà†Dáíë¶Ï~åÛªÃñûг{ûŒ;CKm”Ü4:õšuêEDQ'cáÇLÓŠ³=›V$3©øM>3^KmŠúö/XõÍü¸½ƒ¥¶¼]Í~ìÆr8ˆ+ oÜŸ){;Äý* ÊÎv»¼(¹QíÇô†wÃR©C®Ô!7ã|A°TleçÕ=è/¾ÔFŸW£ñ¶Y¨ø‚`©çC†=X8úü"ÏμÔ*–æýÏ2~¥"ÏYGKmÀ²ÍÒÑê|ÙÅ»}KmĢͪX™DS}Šžìl§‚N_Ю‰ÏrE™·Ï›=¦•¼½‘Uk†Ä1K¨ú0GKm¤ /­ÙìA°ÔÖ°yÑÖ̯¢òƒ(‹:f÷]4›·³q*÷ Š[ÆòK#:Xj+7ýa«€ÙÛƒÙçßleg;×ÍYÍš³|t©[_*3*\÷ÉÀ°¤.,uÿFÇ)ºÿâ@VEÊl~ÉM–Z9ÛÇV?N_Ð Šz!’Qè®$´®+ }©ÍÀâeñ÷ ß?Øáøm$8¯Ng{ÄEÁRØD‰kÝ®‰€(¼Ý:õ‰ø‡ßô×éKm á2øÙ®¨ÎäÆ1gPÌn+÷åÕ˸úÕ.jàWtTù5E,µY¡5ù«fù+¿‘­;Ûo§è¡_9ôóDU;Û9¯,é´õ|»ƒ¥6^©Í’N0¥WŸH¼WâvŠFyZ`@”yû¼.ÐÌÓ o·¸}ÙkîÿÞÁR›e?¨UkÓlåûXj#IÞ„˜ü؃þ5–ÚóÑè|©ÞÞÓÃóQëjöÃjù8Zä þv¦/µñ`’rîÖ?èÏ>ë`©“©Ó“¹á“îþæc^,µ1P£-ê,uïw5v°Ôï²ËÊDz¤U@”¼½«w)O½¼j¨· 〥6êE;\aÐÙÕ¸¼ÀR;YµöWQv¶Ó @ÑÔP1Þgc»¢ÀRi+h–4˜ï<tv,µ‘ýhd?:<ÛÃgiîݼ£ŽªÎ+5b+a©µAg×ai•¬ÚˆÊ·/h)Ö¦ÖKs–Z-™ÙèÇiðõm>¨×ÁRÑê0öQ1³ãí`^fÒ¦ôN PiuúRmödf×Ù>}$®ƒ¥>¸hí*òùÎ,Õüʶó ˆØJÞ¾4À:/Mƒª67<0‘­ƒ¥v ájK¶ ¦©@Åo÷HÆøÎE‡íãêWǧ(ǧpEÙÙN(MqíÙO’÷Q¯ <|ü{ŠÚÉào°Ôg­Þlœag»¹¨Û·û—Xê,›×ÚþæWQÚƒ Œž‹#NÑa‘Œ^'ÕËk¶Àkbš·Sö¦íœ;¤ë͇û;¿ Rг¨ñFÞ~:únÁvèèKýÖ|£>i54'nw ?¾šöJ•Vƒ‘scÚ¢ðv5¿çžìš˜oDñJÕå56]ô#év))šãß ,Y|21­è]É®‹²µ‹i››_äÙÁRÑêÐ%ºZœAXêî—dŠŠÙŠÔ½_ÛÁR¹R‹4©üÊ?d„¥FWÔF°Ý zh>ûw7,UYµ³­Þ‰Ò´‚ï„ÆDÞgPi%µìpüv¦`|ÓcŸ“†@w7,•2×òä¢= Kí‚„~Øj{c+cØ „·gå_ôÆñ{'UÈ=™·»gû /õy„þå56óvòW¢<ú¸Àáíþ$šA_*Zåžn‡LįXjÇéÖÈVìãîÁA_*l$AÆÌnzÖY¬Cf«[DÉ0‰¦3K¨+’ùd¸¢¬SOAQ?i¥ó*ùù«A_ê¦&š2TÊUéÇÙo|÷@`©]ˆÉ~ €ð ›ØõóAXjÔ«”Fì h¸ÿˆ`©°‘T*RªU4¿ŠuKý¡ÕDÔz£ÞNf»—ö7­„¥°N³D5…v¥âWkÙö߃CXj¥Næñ fÿ`©†£¯Õ>Þ®ôÎþË?úÀRÏ{ÐÌþ‚šfK­'Œž&åÑÆ ³çíߢN¶ ‰2o_΀­{PXênXE}›Z{Ʀ&å3dóvÎv€õfõ ­¨ SêþðñŒ³†mÕÌNM{%гy^ÝÐ%½?VsE دZ½ôöü‹·¿ Õ}©Ìvg*âX¼?üÛŽßNyRÏhEž¡ù),µÓ:ݰ8{z#*ßµªëªÕþ„õïA°Ôo64¡Ë×ÛIïøüí,õ¤d˜Å´j7­: ’g[´âlo\ô$É—NÑ=ðýоÔÎüÁI»ÊìÛ­æ]Tr†€(yûE«ÚÀè§?æcK=èö>//Å } „µ`©¶ªóÖæW: úR;`ñY±¨?×rTóvÚUÄûQlÂQ€do€¥vkÛÔÑw ‹2o'üÈD}*بäÀK}p†b-c![«V¡ã´2o×v†2ì3l a©Åº„Z6­à ó3,õA+[àG?WT Ù*@“8šyû|ÅôÁâaXê©ñV Þf1ƒÏÊ5 Kµ¶M{˜”íÙñv“~êjî÷{x‡a©x{·ö:%b¶ò«Ä;Û°xøó&†a©utxk[P¼¼ÀR±U­÷Îâ­ÀR;éh´Ê}˜(ßèK…·¶B™z†…·Óù›îغÅíQåW³—f7,•J§®J'õù–®(¼ý‰_”Ö›ßG? K5Q÷/ÓŠ³}á Šr_\©þÌâ–Ê´³Õ¾,ú¼üf‡–:hW:dÆRâw¶À#ΰT*RºU¤,¼Ý‡ûX*$0µsQÓlþd‡1¼ö:8RF$eX*äØ}™·Ûý/–Ú­¦hõ«¨ÏR]QxûâJ-¼R­ñ6²@¼Ýö  |Á˜Vãá ŠåfÓ{pdÇ`©Ã2EðSß>Š_ž4†y»öà€ƒŽöºxO”a©¤îͯljÏp°Ô³V ––tòÛÇ$ié+Jol– §“iUOÝk,uÐì@»Š‰úhêŠ2oØ8Ö®1{¿‰z0{L«ñÿtÑ6Ô:·ÀL_ê(ˆ‚iª©hªo>MâKäEGÁÛ Pà8ô¥À—A‡Â`¦™°ÔQ8¯Ä«ÖÆ$eá·A úRáØDv Ì–z^ Û¹pMøÝýc™·³q,‡\_-°±@\ÔîÁ ¨ç7t°Ô‘°UÂV–“‰|Aóöv] ™=¦Õ“·ÓÕ(ží‘ý"„–:HY@!R[%9PÝ3ÁR‰òí‡øruEáí ÕjWåÀØŒíÍO…M°Ô³V˜½™·»Gß–z¤å¾e$ &F²·ÜøjÒ—ÚijݾÇáw;Äà?x'XêP*,D™Ô@Î@|5ÁRG¹íÁ_0à ãºÀÚ@Ã7à³ìg¶'}©ƒ÷àøÕ0­¢@—˜VÐDPÿR+úRϧ¨=fw¾),µ kÛœó¦Õæ}3™·›(à3XY g;™mpç|BâükbÂñ{þ‚ø•½èýž¸I_ê°}%¬µÚZ?Ï0 K5$N…‹ ?_³ë°}%ê œWɼÙ^ô0¥7¿£j¦_ÏvƒÏçUÞî¢î_0¤•°T3{°éŽU^|AúRÏG8Ž@½Ù|~† –:7NˆÄMTà>éK­ˆ “½–“¾Ô!‚úC@F¿rèçŠê7QCÃG2Åx1Q[u´âò¢(}úÅÃSXª:Ã_— (Zœà¨Ã%¼oº1ô‘ð Ž:Å07D¨î÷-MpÔ¯¡B3BË!Ô•ÿ-Êܳ6sžà¨Ã ³?z:8ê°Ç.Ec‘Šö;ϦpÔÚ âhvÒëìg'³RO'¨=v!o÷G}X`mrј_MHÁT[ \2‹K~ÙþãÕå3‘Lá¨ÇŸ%æLp[ŽàÖeÞNNj¨wfŽúcó¦U$üGä•9«>»+ʼkb#ü¯>Ú¬íßZÕ߀_i8냷;ú©ç8êÃÆ±íû‚æíf+ºŠaIß|nÒ“úô¾!üŸÓ§Ä˜à¨ô䩚±–Å þØÌÛ ÿIÛãW‘b ŽúÛ mçV® ¬Ö lΰübØÙÌÛÍE©eh¯Ø®ÎPOô!ÚÎ1­ðvUÜ祷`É_ûǤ'õW mpÔ¹Y˜f±·³_O4ÁQýpƒ¼ÓšØ¢ÀQÇXZ½E¶þòdW³" €ÙÁQ¾`^öšˆ’·/c¦”‹¶im=~ÍGjæÞ½ oïö}oGÖ¢ºChx7oÿ»VÄìŒÇlš8]Üí-~€£žEY·ºÂÚŠ GÕ°² |£•á¨t'L@ªi¸„ϱ=ÁQOZNQ!á¡‚£b+[à!4,êðöCÀÿòÇý…úð¬ =ÀQ§ä'[á í¿ƒÇÕµÀò‹_ÍÍï*žãæí‡~?ÍÞ9pÔ'n†W4•AIF‰Q«nœ‘üá?S8j…þ¶V{xi1ÑÓpTzRe§Ñ1­ŒoàN‰Ñ¬âÞŠ'8êÐŒ¸£!15¡† }à¨fßÝÞ˜o?1‘p;ÓMõß-éŠ"û¨²ˆ6…,õDfö[ç4og;ëJM¶Ú#dÿŽ:•Õ>ôû^©ýÍɵZ6Í‘êì>€ Ž:iŽœvM Ÿ>d‚£"êѯú¹¢o·Œ ”¼³š ÿ´Šj‚ 6+Q¿C§+ÂìT^|=a¨m2Ô-Ñ?ŸT4¼ÿ h¥îë©B=$cÿÉöx-ðõˆÙ-w%Ÿz»@ótž<Ýïüœpû’ýëê„~ ›ßEqúk#Ï>n |wÀ,a¨KþÇ9AýÜ¢uf®SQ”KýÆì¡>î?Â!Û¬Íb^7•pHO’ÈV^BP-®bþu³·OJ¿„Ÿêö›¶õ2 Й/°Ó)¯TCH&â-a§Ól4®:Õæ²-Ó)è‡Nœæ~f 9eŽì`RÄý!; 7Õâ¿‹,Ç"]1å§>6¢·úp’×u·TzÍÇ&ˆé7)÷CT[Jäôì£Kˆ)t¤Æ_hŒ#›_u²ÀKŸ]à[‚—ž–G¨oÓfB–²þ¤§ÍòÆ1óÍÇólOZDYÇ”ÕLz#Šÿ„\†—ÞóŸÕèH,KxiJz5¤/ Æ¢¬: øÑÝ/Åì*Ķ”\Ú´jW[\Q§‹* •õ'a+R©´…EšÕ–ðÒ¯@©zBžZB ÄÛí8­çFü:múÍj+¯ëÍVÖ¬Z a¦Ôœ¢–L°Ð Ìô›üú±ÀY ¡ÝØ2{ó‘‘e½§v7O3»Õ ù~ï7ðÕJ0Ù4Ž«é‡BÕ¼Ý^ UòÛ½§ lß’‹ú-) Ìô¼@Bkå>B]QÔ9ªê¤ÍlZ½2»yû¸je_ð#Ô…·[0{w†Î®(¼ýi®íÍœwQw³Ç´ZfWN/ & 9˜éÚˆúOn•kíJÿ ‚™.ˆôõ0ˈôü2ÀÕÌÛ¢”ˆ[ÉÌX (ó¡n§œžÏð½ÀL×¶¥¼úa¿¯¨ÀÛÃ'¢ìdð¯‰fÞÞÅ«t½Z \›‰WQû¹¢ìl'• é Þû‚v¶ëÍì!­ú“·SYùnök<˜éÒE_›õ½©†½ÿGåŠÊˆÂ¯¸—ñ øå"«ß¼=/æ]¯l~埢`¦+›­à` dú}o Ìt~|—š±ßW”ïí`¦çDáW~Òêæí QöÛ›Nh¢úUÔÇ~®¨õC&ô‡y{¿.ÐÌÒj˜`ž)ÊÚ÷îv¤ì¢Æ¿x|ЇºmwQæì2»Õ&ödahÀVJ>Ro÷COÜè¿nÀ¨ÏZm/ÌŒÊÿxoù-7uFÅ×õhnËÔÅ‚ê&µd½ÞŠ•3ÍÓ蔀N°+ã»´ç–-„ñnøºeóun@ê!èl¯=p¢Z´§XÉä"Ç^¶xýA©µ½Qj^Muœ¥?CÿÈ šŸ""ãWþ †J ÓÖ ŸíöKÕ­˜£ßŒ^qôñT{¹Á½Fepóé—뀚,*ÞðNÀ©ìAfu+õº¼cQùX”®Rÿë‹Õ û“Yê{‚Ÿ.ÕcþýC«PW”ª²/Õ O‡äŒ9µÃ:ÙÝ*ñºŸ"ʸÿz# üt‰Ü凭^‰²¾$™}c”ÍÚmºt­u?}ÐêíËÃüã+¢ì ’*¤G¾¸-™u?]ËÞHëºÀPW”y»uK ¸ÞˆW¿zÒê#Ôe]xgÇêF¿[w ZêFÏ)ÕÏmŠ4h$ ¥’›[¨›ðÓ²©7ð¤‹ñ®¨[ÞGƒC+Ý3rÈ~ªþ]+ë95j‚ŽÙy&¹õ…u?…{á $ø${ƒ21=§]›so Usþȯº~ &Ø¡©;‰rkvQ:Û75}”MÝåÔ:禿ê&üÔDí&&v$)ç³gÔMøiÙh3Ül`”3Ý­¹ª›ðÓãÏÒñgÒê¸ûæÖÒî¢ äÆOEi}¼¥DŒ5 ÓêÛ7‰ŧT7á§»…´q2¤%ÖŠ2Á£ðSu»•,¯:D~]Á?Ù…ž–¬“}_JVt%ö“™\òÃ]Tgy\¨ó®UwëÀêÖñu=™KVQà±ÔO˜ØÌ_×3ðd«F5mÈVëß߯N‹Ø]îåº Nv%Uÿüzøú²mÓ®¢BoJ¡§ƒ'›6j/®@ðO¿i"¶Jöö~'ªþ[T¢.&J¾ž¨¥MÔÒfzs»[›¶‹ê7QYDŸujXTß"Z¾.fG5¢”\9ò'‚pÓÒ¨úošKÒÖB£@F¸iI ¶3;YAÄNÂM»Y\êû/ «üÍ'Øtÿ3^IJQ9••ÑŠ; :«(½ØñI¨brKÙë6qt(þ}‡£ÿ‡“H+… û¯‰¨€V `g^š{VáæR`î¢t¨'hš:˜ÝúÙ‹Õ0þôIÔ´.ûˆ¨uUr"; åÂtkÉê&ØÔÌ^ìX ¢­(¼ý>´t ° Lq¬°i#ûÕ( ¥Ã·ú [Ý›z´+óëT°ÓªâW\6“Ëæ4h4 Ǻ°–rJôÊEcZ…h” u[„0•·›Ê‡Ž/Ÿã2ÔM°iÊ ´ æÑÂXÝæêÔ Ø³g+eï:çæ’ÔlŠ_Õ!"á:¬‰Ù­ÈÝE=fœN†8iFMউp/MnT™îïÁnú+•G€S¢¦³Ý"G¨<:£bC ÔãTw³µM«­q‹kpZxTK&ùðOÚ8׋Köõt2:‰Ñ§«]WŽW‡[_ÓF¨^y‹hvÜ1’ñ»û|; 4-]™ìÒ÷W¡Þþj ˆÒ©®ôs!¹>äš}ó“)áå–D{0yw«Kk3½ëDê9bq¦6'½Ûìïm½Hš$¦}KÀmªÎ™ nÿîè)ý–yC7Z“Ó#Å•>û•FvõÂÎÿ€WÔáæmYO|»n›ÛÇU“S3û‘VÊ|€¨Ù™yúö:’…aQàH‚Éæ–ÿ„(&SjѪñÂôÊî#ÂIiµiÈ´Ø·ÙX ÿ$A¦O¢NE ¡’m4È[÷h›0-ÓO‚L_­ÖUTȯN˜©¡“ o€øtÂLUí Ò£ë?r“0Óz @ÿè oW|v2ûÒ•²•PÓ³3(î?ü¾~b˜[ÝÐQô] o+`ÓG|Ù„ý¤d¸éo,1Q1®^Ÿµ&pSXÛv àTµúu—ï䨡ùŠ¢TXàHª)"JÞÎø ãTÍ ¦ùjº¢Öu#-r³Ý‚uÿd7íjü¨æ«ÎkdÂ=ãê¥pȈà ÌŒØE§Ài¬ÙÊWïocBf7®^ª8©";Ÿ#e¸¤ 1Qð9Úx¯Æv~AS¾‹zb¦ÆVë•(y{…9Ú@öå2hÔT‰dŒÛ_§h_2{_.íEMÂMw‡ÊÁÌÎv.nUý‘¿ù.Ð./òÒáò  Ï5!®Š6ÔÐýˆS#’Q)î¡KÆja[QÔË”¢ªü—‰[`nªtÂGÚPÇÔXH¦õ‹›8³ùs¢ï´‰éu,ÆÓ/íÁ˜¨‰(Ú})Á¯>ß×µB¶Úü f¢ï´3tk¬¥s8r¶ÛÌÓ-ÝØå guEÉÛÛéÆ!ÁÇLùˆ­è;mÈFdZ-áJ½ÞÍ®˜a@hôq W|1¹B:¦š5É^ô6¸uh¾Êý¨qÕêð­æmÕX¼7û‚gÐÙÞáè´F/U5õåWê$úN3y+(Z‡[§ÒŽô>ŠZvŠúÉag»R´]éìA:mn´#}§J÷~U÷þôÇ=ï¢t¶Ƨ£gÍ}>¤”„¶¥—W_â'ëK0ìg©®¨Îu^Þ8n8é;-‚c«Zë|#JIöª·óþ«"JmäÝ¥ÛE)n¯âªØÿ (6ãWÙ¸z:VIYtnìËe¬‰¾ÓB,Z`‡/Óò þÉÀÌÓªÖèýWÁVìAwèXMô%÷¿,0½Y`E«rû‚]´b1­_pïhä25É >ˆÚQâÈ@ÒwZ7sÑü7­æ/¢j-o´Z¢¢ò ­ ¶.ú§Ö…¸ô©P­O—ìl%vGAüû!w¬¯Ÿn ðÓ-‘s™[3ÞØ8i;åä«Eaûþ õ«LøéƒVZ‘]6Ûš„Ÿ|EáìšÐE˜Iøiåî:„æC€îy Òvš”sjØŒ©Á1Ýùl5Ñvš,ö°Àå—€%á§• gÿUù‚ [¹š…ŸîÆJåáÕ ÈºÞB‹ ùÕù ´’·gB2 !§Ú¿`5ƒŸæÍ´ÊØŠ3ÆÇO3§gQQõVíQ½¿Òª#*c«‚­êQ‡·7^–­érî¤dº?P¦fZO7¾à&öí¼ÁcYýJï,5}/~7ŽÒ dw>šz¢„¢&²ÑiédH˪Püƒ,5ÚI¸œaOL/ GM ¦¬ Ĺ”üF«‚Vé&ª3bøÐD”š–^KÉš÷7kŠhÕX`ÃìÔ§iªB[þ5‘RÏ~…3h!¿¢÷tS¥i-ð–LÆ@V¦÷tã WT’Ôš•gû€I”šh´NtÄ&:b÷Ùÿ‚@©….žB“K¡E¢ù•Â(0üXÖwóÅ¥þÐJ¹LJ¡cZѦ®ž•’ßwçç½ëÇWYPj«B„zÒ=؇ÊlFr9?wQòö~:¯”T«¼šÉdA©iL[ 1eã=b«qÕ%ªA]ØÝÃYPêÓ;-#ûHc6(U´´û‰.Ò-FéNÞJÍ‚R3¨Ó¤/÷ùÂV@©™! ˜}×/c+ßÛ¥žDõ»¨ý—3JýñÕ¸ñù–®(=R³õ>ˆj>ž¥&j[ƒÕŽð5{@TG”^á¹w¾ @œ˜dA©‰¶JÓêEI»Díƃž‘ÝÏ dA©¥¨x§pMâË!Þ%(õ‡V\ôBG 8ƒ TÓêÏ ”ZŠš=÷ªî±”ùfåߢý TÝcSIQßT§ÖsávöÛ\² ÔC—IJþÓj1ü#¤•¼]o…ZLÎ…˜ÑÇÕ ›¹°™c¢&ËS¹pcÁù¾ ˆºûz3›Q_ˆ¢õ¼mþ¶À†¯‹^ÿÅ»Kuû÷óß _glC¡Õó¥(*Ú5Y¹ô†WLd¿# HݵjW­Ž¥–C?W¾.4¡œ`8zžVànª‘@&¨oÚ4=mÚO‹%¥·MAËlj3í§EÕ¥Sݻ孛¥Š¾_)Íî@_í§Eej…±x/µêé­šå|#Záë¢lÚáU–®ˆˆ:|}*ÅP`ä(0r|>¥+ W§œ½ê¥TºÕEDÉÕ+õúÖŠc†„Ät„¤á=ùÙÕÜÍÙå fN…Ì <é?µ^¬*àì‡( EôÝSË\Á‚êt‰C÷Øs»Z½ÂÊØ<9p‚Ò~º¸—×I+]\+p‚ Díš9|Ì–ÈHKÒ±^e—I}üR•a‹]*F¯.€¥2† ×É‚PíóÆÇ‡ü~>ÿ‚úä— 9Âáè0/ï:'qOâvÙoÌÂOÍNdï¤Ð~ùÌ3ø”6r¾]™™HȇñòÄÍ• Ýïf"!Ë@ûB¦ý´C‡³;F€RÏ>/K†µ—õUeØõÂëcØÆqJš|u2Z2?â ù´65–'Á¾n>9Ñ7îQËœLÛ{õ NRv¶®í&ÈŸ ´ ºú”Ý&ÑS·ÿ˜¸]I“Õ%¾žÚúª"â˜Íé<¥½lÚy@Û”;b¨fá¦&éû÷ùø{Iòw±õB Bº˜™2ßr%áåÊ[Þ™IE‘x]ÜT²SI™Æ¦Õõ±,å¥ìÙ Àdôœöª[²Ð¾ ~íÙÖ±‹’“gU.?%âBéAzNk“# z™Pö¡ê,Ì4uÍÒÚ#(%Ã-lé~mTfºtZ0’ré=Ú³_U„™¦ ÑVÕF>ÚëÊ!Ô•%åû¾¢ iòá"Ì4ecàà šV?ÓX„™&œ¡2:÷hû k%©`2q”¤¥ˆV*þª]ÕU¶fÚ»ßMY6‚ôÌvÖ3²yûG¼+ â ë;e²le˜E W\„™îº°@jχºÑgõ;ËF^]8౬ŒÕ¢¶3…{aÊ¥¼ ›ôŸ ˜iSÀ?t¶Cçqh`¦Ê“<ÍV:E‡20SëàÉJzÌ\Œêf”D^=mWQ¨j×/`«v3{68ƒC¦ûr3môÊôS#‹Òì’ðvaéÔ¹ÿÎ~ñv³ÕÇA\QëêW©éèkkãòòiеŸª+¥Uªq«Þlý¿&GWÁzR4;%ªÎ“(ßÛ…™¦¦L@‚1ÁǸoßEi?ÍÖ¼¸þ¸@íôŒ&(/Ò©;ÓåäßE™¢U&[œHß–0Ó³¨¨ùF«ñ‹¨ni¡ˆVD2Àdt²ââäíY£[’±&áË=À€_„™6ê^¦nSºg”B$c<ŸJ\¶"ý#Þ•o¢’̃ɼ3ùl~E˜iª{m…“¡(G8†ŸÍ)ÂLM«É¼àic†_!P„™NEÇœ§ÿ>àžþë­™’Ý×2d*æÉwâb-@¦…"‰Ñï]¹“!]Qv´ãV`ÍhèÝï1+ŽKª›Ï=¿%™š­R™$Ñ Óþû»2=z+ÿ[ 2=þ,á«?¾`ÈC™žÌ¾T’v¸ExõÁtw%ú€+ ²ú°Õi7W?·^š&Fàï ô]T i¢û4Ñ}šjz%jý[ÔG€Dùá•@Ó´é¸J›Ê¬Š©ÿö`ó›~‹@ÓÿmnZ¥úJ«¬ ’‚"†Þ l~ÓohÚèc5œâ„xv 2M[¶¨·RäöÑÓ¥"öè4Q\Ç:V ½§Ð|6Š÷Å{=ù Ì"ÐôXÌÿdtùzZ¶u. ›"¸åš¦DL›Å:yP–C¨'J i…óõQ«âçÁŠ@ÓãÏÒñgú‚ºoràê¢÷ôü'_P©é“L¦)ѹ¸T¢Ó™!8²ê—Ž·k%S!¼‚+¿å·5m–ùÏjCè•®©H 5ªØí¯}ó­-‡tWή‰Wêpv&"ìJ ¼JçÂô«á‹0ÓµÈü'Îb(âG Ã08Ö•=NÔ?§ Æ´È= 3=æ‰|+•Õ´<ìXð]ÆS.›j—™*û:E i²ªì×ÍÙVþ 3pu=À¡™Õ®Zýã Dõ‡²a%~ynZ²Â…²NõÏ\‚;^ÀiãuÓ²¾`¯Úû¯€_ÎÞÅ k0ÐPÞê#ÜDÛé¯7øåZ;ºÏ8Yœ~UI¨’Yç÷PH:\} Ì…Jeê½z¹ 5…Het•7pøY%ÔîµcXó§`š½áW7–c¯®d£>LÆÏˆdš.IZ$&4ÐÍT{4î}*;:Ë£TyXtYÞÄŸ¸’Ý2  |=Q LÁþ|‚M‡½ÿ’%Ì¥ü£ØtiÆâ!àÇ~éÉ/z.ÂM¿•_Ÿ¢†Jìá˧Syú¯ÈÿöKNoäÔÉùü¹¬¤äKšA…Y¾1A‡‹ÓQ–¬=jçðõ+õŠÓªâ¥J!ÍPr·%¿q¡/íF¤C|²g I¸œZLq%õFUAQ#û±O¥Ãö©cb>† vò;³ë©ÃT›Ž^UžœüŽ´*°´¯ ]çï¾]VÊ _ƒV†¶Ü¾{ÝÓ© )…çdæÉNQÜ:UBU@)ô9Ÿÿ*)û´LU8iKšÇÝ–”2;@ª¹ 'eyÂÚ•C;W|FŸAQÝK‹ËLJN¹Æ4¢–ð‚ˆ¡’¾†™ÔXÚð5ñÕI×þ0…l.ôpî(h+à{ħR¹juXíú¶’£+ûýåËÉŸp¿~s\… 7ÃL%ãQ~MMý.Iµ~ +¤“¼\OfA ÓH ¥t<@IØ6&ƒg?­_…f;È¥RÛT9Ú’Wk'¶Í¸Š êTü6óšyx*×[4ë\òsU°èî€2wÑ }4]-#ð‚­À¢ ™XÈÀÂÑ|þÀ %ïȼ~º­Ž!ÿ}^™bjÎä´lØŸà¬òNá=5".ó¸Ì3§x“«Š|ÉN»Ng²Žéã*o0ëñåföQèÊS1)”AÃİ紲WÈx‡€Õãw/J#†”¢ƒtðœÞ Ú@u"ž)4´ðRüûËÃaf^åVõòý€ëMÐg3º‚Úýó©‰ÃÈWC«ëI‡uÞoA¡6êâ9kÂvšÿ6ùË# "Þl~P°”Ý.þ.†‡W:Q?`ó*Cr ®«9eÈJ» ?°‡‚÷¦ÐG‚ÊÝF•ÊIÐ_¨Æ³‘ ¡¯*¹*=£@&Lû}3Û  ýd,Å1w!t«o$ÑX¤`î¨ þO§Ó”.¿œ¨~ª~µu4÷MiÃQ|B¾Jèªã™5ŸÌšá>ëVúäÓ%š¹ÚÉäI¢3—"†eàâ~aYò™„‚C¢-‰Q©\äã|…i·Ȧq;úx± ú̉aò©s ZÂÔ¯_¨Â>e}ÎK—AY °ÏC—„.ùÐEZùfø™ äõßTé7Yhå{(T»6ãwpˆ2·#¶ÀvµUNƒ5›‹ú9Ja ‡€Ä·ÌØ/üÇý ªFã­3°ëý‡_¾àºÛªÕ¿hÕUú°@sј(íƒVrËšµl¡¨?6ÚF™[›²!˜Í7úh´&¨+ÀâìÍÏP4ÚF‡‚ ¤žæÖúÈUÛx›ZÞ„Z†—¶R"½S¦xÝ'.€ÈŒßFÛèh|A†"|‹£¿éŽ€3Ì«­J궉jý‚Õ.¢*í$uœv_+ÚFÏ¢È5‹Ë!dvÚFä.¤c ùÁ do´æl?î°—eDTù·¨³Ù}vž&Dt¿%,lçáUíµä†íM hI°Z=:ƒOyЄŠ& 7 @ô.j¼Y Þ®Ù9‰af‡Ð°(¼½Á+©-_0&j]µú±À7_0oWg8ôË,5,*ݾ`³lxK/¾`΢ÆßDÉhPe*ØêTµê·#4ÚFÏ¢¢ÖQ,ND©ì¢Ø¬ûáÓr4ÚF¡ƒ;„f„†E«V‡._¿ZoDÍ»V²Õ[­Z¥»Ve{! ªÝ­>ßí…(¼½ý®•ã”{$c$uˆ%pBµ›D5qÍŸ_å(ÚF8¿“ßEPíÚé@=‚¶rm®(휢”…”ÁhäÿâgWÔ@+…µ­˜3ØÉàEK˜½üMÔúU«ñÂVô>˜ý­¨tE°Ý' ¶«y{ETÅèÄò+êZ5o·¸7ŽaJj 4¬Ë%ÑhößäDWPû÷òlÛÄ–§RtQ7"¢Q,zôJ¸éR¢–¢è]%Îâ@ì(Ôô7A1ÖemK“1Vï/ä@±›„"”¤Àß\ Ž@j˜iµÇvé¯Då‹™ì˽´“PÓÕ C !`I¹À§jÊ(‹Ã<ï@ ):-ƒËÞ©Ôÿ¹¸·* 4ÝHœäÆ›¦[Í?êšBV?”ÆÞ÷¿ÒØ%!2ê¢4"÷a>î3Ï6A¦ª' L•ÿ¡+O˜)’J+7Ií\I‡‡e°‡eèû›[˜QÂŒãøÜ,Ã&þy)ÈôþåæF:Èo¥mÂKmm’3J{µ6ÐR5×™I» óÿZj_.UrŒ¥¾ùrÊ1n°ÜmÆ®|PJÍD†vóúoÅÜÉ „•6ˆé6Ê'F·«Î¿•"©‘!Þ,ý¤ÝvS©ŒœÞH*35JÒé¼ XI ŒË.¨~µRLR»ZI¨Q[¯42R‰ãð#°aG8·í€YüN£ømàâ!Ûàu̓ªù ìMiÙ@“©÷msé”}€­A§›`îèVœ9ˆ¡ýŠöîfõ‚gFÝÆ¨,óB*³n‹lBHO¶Ú¸„Ú.û BÝ 9a‡åd±ÀâÏyiꞆh¨àáÝ6y|*®Icæ&Ý 3žy‚HÛªì@Õ™Œ¢Ò¬¹5ÿ@‡S·‰\¦o°PÛĺäsÀ78u }Ù]Äæû/q¯ê+¤ºM;=ì= ãžÉ¯=k´‡vf CÔ³êFó 7š ÒžE™22f¯bš=Dº› ô")ÂÝ—}¼¼-Òè…»Æâ2Å ‘Nó.À­åGv•­iÑ÷«…·“ Ü”>(Ywé(ÐHigø]r8¶PxòvFŽÔ%b´nZJ̺tf›áåƒÑ?úÆÙ§|ƒWk@Þeg;ÎÐíÊò7NDZ¶Œ¨Ì;tno´âl§òzQ“´7ÿ@îÆ¬Ë¶ÑfÞðš v¤‡€ÄÕú‰?­ÞÁ:ô8 +‘ju¾YžÊºâë<_·©:¡¾ùdf]iI‰èªšƒ®7¶‚-öœ´ëw[¹!QO·“½4îæýÊæŸ =‘r±³{p¤û&û•=áëVªû¦ ýü¨ -„þ¶ß¶ÔÚÓ7çéHéÏܨvØlªƒÏºÑG3óƒ µ–,o7z@'ÎõÄ©@é4ÕguùEÊ=³oÚ‰ÚA|þžˆÙéØ`ÛëVíàWÐ÷Ĺޭ¶Åc¹ñ ,PðèÉV”JªB_x­Že}øÉý¼B5*¬m³ÛÆÎÿà<ªZ™ úèHÓsý·Å_~¿×Y¿ª¸7óötµU ­|ÞõÎÒ¬ñTGWï÷l·àØwÑf©’´BGN/’H$Co©e¡{f¸C ÝáÔÔÐÃ%×75’þôS{éB+ îfà!¥5@îÚi/]‚ÚAë"hSVõ¥ †>`u*'úz !}èè- &¹ðt†Î› LÍÙôi‘:í¥¹Ùî£+c«otÂÏU¦r¤ô¾Ë›ˆòO*fnVY`M ð8NŸS£˜6¾ßŸ8®¶:äÿ÷²#»bJ·O¶FNf²‡´²†··á“ãÍBzNÏêTßf{aö‘n_0ÛDL&Ì€­¬½t²Ài§Âz£Uùe¹”7¢êƒ¨ô7Q$bÀô¡ûXH˜¾mÑ^Ú• Í Çi¼n"]ÝuaË:iõî Ò^ª2ŠãI—]d*ðŽ0𯲌N}¡„º™ù ™»õÔ¿âŽ@§ÔWþµ¦Oóu>^OF÷¡ˆtŠW•ÆÔÏ '\ÈVæëójöChX”"˜Ê€ §|×%1²Ï/× :]– ¥%tÙýKžîR–'º•‘tä/tzK‹šgþºÏò)Ÿ¡ 8ÝÀmÃ(¶wZœfuBÿ Jµ0ÓÊ<ŒÁÔ†4RŽô–f½˜Íhƒ~ɹù½þ}Ù¹Î+Nñmš+øÁ,Àiéj«ã|ž#TƒÞÒû¦É´ç‡t2Øô–ß;Å©n/ÓÀ5¸¶›f=¥×é2$ÊÒëú~`è¥Y 㣊Ø”´êçÏþVÀ¦ à;WžH£½Ñ R¯ëòíÂ:qªSÁ­8yð†ðñ»!Ðt_µvŒ½Îõ•(`Óß@·˜¨~[àwYßÎ7¢è´ÃRÔiþb©´½hj3¦UÝV(ÚE¹±Â°a¤ÒÉ –“ 7¦'È”JÐÍNªöF§|zgã€C¢Ê/–jc½u+ˆ¹¼ö‹¥Qeåä:¨‹:ûy@Ôø—#|>ÿ AV@³^ª3¹ùyâë?i•o~n}4¯<ʺIïåU»væþ1 Û®äÀ›ÊY§Ÿٜ܂¼`¦7*qœŸü c¨ùF”UÁÐC;w:}¼€(ÜœS8¥õ7[ÁbGÎ9A=—›m>7^Lí %5ëNH%¼<[F®éY^¨ÄøÑ«J/—&¨ôÁ3ßÉÑIÞȺ´Yþd¥rÏ¥›V‰É!Qæäëf¨¦š±˜¨ö‹Vï<“Ò”MgT6[¹ÚQƃ(žÚ–‚‹ˆâ4ç’`ÉIÅÌî¾F1?'¾ƒuâVðíþ†‚o÷+g ¤¼B¸’É‘ÀÒ2ó&KM53Q# '/œ„›Íž{~aÍW•Þ®®ß} ·¤ý!&j\WW'¤S9¼6}V·!l´’7­là­½1“ü;S!dœnóäRþKϺG5òëXÔ'¨§ì(~Aÿ°îÑbZÍ¿ie§ùø_EÉÑ'Õ ß/¶Àú«Ù_‰ÒiþeKè÷‡ò% F«Ò,™”}2Z ÏÔ³¸@yÖ«Ïû3ŒvIêwWoÉo°£¶º%äþ³¦¸¨n®n„h¥×ÐÜ|Œ|ö²š%š£û,lƒI£S!Y߬xÆ*mýÚ’aØèÉ¢úQéBJ³úÑeqKÀꇧO;2êË’RIê–K²b÷wJ }?¢³9½’4o–‚…yÀåç0 Ñ×j6V*¦ÌÀö³Q£”E2"ûÐ/,*áUfuòËN*?F2šªÐ†ôæõÕŠß <@FyarþÎìãîëÆ£ÝVz#JÌ•ÁÝ•°ãåûÃËßHC»s"Ô3ûVóºÀCÀh;(¤MkV⨷Ÿ°ÑT º`ãÔËá#ÔeœFô›@^8íâO `£föÆð——¢ðöÆÉ <ÞQ¸üåß7`£ÉȘ½NØBBZ™·+2N´¬ƒWH«þï†dÇD ´›BeFojé(¼ÖºùU·ç_DÔÂì³s^Y.ÏÝ=¬­TàÓßE‰Óˆ™gûŸ©>oÒc9ÛyJų·×7Z©N½ƒ¹w˜Ð_Š"“.oOÌ1ŸE»¢È¿t{åêíÛöFìŒ8Wjÿ'›}\¿`šd:ò6Þh5ÿm«C¿°(Õ Õ©D¨œ9ˆ6øim¥˜ýk쌳~µ ˆ¢‰Ú-Ç_æQÆÎh¼­fvœÁçD˜0ïN[édÊ GDÁ¼ –œU\^óèoD‰ƒVŠöe·ü–@©¬`øGß´ÆRJÞ³¾`é²Ï°?·qÅ(ÒU.DÉÛ>Õ=)(%â¢ë—æW LÛ¯~e¢Ü'ê4”ô¤ÕÍV1QT€ddªç³%+ª3LCI©þ4QÝÊ[#¢ÈÆØÆ±[>-"Šú]rëÛ©µôKñ4œÔêÔ~”n²Ÿ˜´–f»õè‹]^’iH©Õï*ËWºUD´Z·vºß-PHi®2{®¶YydDTº-0Q†‘ ŽˆÊÿÖê#à{È,¿¢j\zÒ Œs¼²•Ú¨ ½³SÞQ¸R—Ÿ²˜À¥Œì+¹Øäô[ΧÁ¥ª*>F¸åϯôFg;¬Ÿ¶¸ ñJ *u2 ´êiÙà/Ÿt'ÎÿMW”"£ïp¾ÓJˆé`fÛf´Ìæg2§1ïZk¶÷ mœ€(E2¤!ƒÙ?$ÊÍMÃMIÚgâv´êɺ¦á¦tF1–®dË~ø$5ÓpS³MT·TXDÞNaOE¯*sÚTëÐHJµä™ÂMó¢)Ô’½´•&f,8§6‹dòx! Ü”ÂþeÕܧ1p¾‡ 9­E¾Ð)áïÎÍNá§\x0¿znz:Ï䓪O¦•>¬¯3¨20Wp| §]·ì•LõQÙe¾NÒ¢½l5„­:^e1_g¯Dq²jÓ‡T¦j>Áþ¤»tŠEéï¢ÖM«Lðq^ /Ê0TÆþ6… š¨c¨KFhX«z•Ó߈·Û€nÀ²å7¢äí½#¨†¨œÁ'–™c\µúáíýVóßf?–uóöÃY3ÇM9üþÿ“vnYŽãºK@|“wþÓº*[±¡”• ÈçÏ«Wg ˆÀÂAªTº u † 1¨i"^Èbè™/xÙˆAM•KÐ2æºÁ€…A­|ÁniDÝ |Ï_ ª­*u8¥j…r‘UIÛqÇbœÒ³ öߡޛ; §dnÌIV &Ê „ˆÁÔf ÚòÙæ)õ$ö–úW²ƒz|·«^å'P ±(ñÕ0”"1gÅŠ>RQf—òO*úpƒõcƒ7_0ÕX•¼ÿnI ˵ˆ½‚A튥¥!#“†oãßPŠª;;8æiwÞ\(Óv“•Žs±w`j}BYÝ%%ùPK êݪžmpÙìÒ›U=ÚàÚpÛéhM†ZMDÙ“ÕY[ùP†n9;§ º—ׂA½ƒê–Ê’¶O•û'ÂVû/“•ë@.1¨ÇŸ½ ¨ºÊVEâ÷£XÔ˜Úª¦zj=] jª7«JOVµ®PÀÛ^µPT™.{Ò2åÔr#°A1¨¹(Ë7ËæÃ^-ÿ³˜]:Ñ«urŠ­ªü®W?d€§Dÿ±c«ùß/+õû,,1¨&«CBù8 ü^mK êyUÉnçñJQör*r1^w=ù‚óSÒvÝ` jý.ö‡²‚AµrÕ8ðG²‚A­´‚ï´7ŸÖÃÊïê³hÎ{†ßA)Ì^Õ‡3Wù ¹ZqÃp¢ƒZEšùÐãk; ªm°æq#öÀéYJ¯Œj±cË1®‡¼Ä Tî"s·’®”´½«7ZT‚œN‡Ñ‹A=5e­–v¬ïupü™rK jnÊjÏCôMO–þã§´,1¨Cìc-1¨ylÈŠÜŠ<Ø U[bPóTÏÒ<™µÜ-eØŸc²Ä þø‚ǪŽoý‚bP ªœò1­Û‰_·èÐ;²ÉJz5ÈÔÉj\Å~ûǪbP¦íE‡!š5=Úàú]ìeƒjb¯vÑŸÎ`*EdƒÂ¶'S^©–®8|WTƒª<—Î @IÛ98¥R—ðìàP‚:õJÍS‰Ì»ÔLV¾%•îÖ|£ZΕ?›c‰AÍSÓÎÍ.!Åðö&’J@ÛË¡«š7ªð µ’…R)íªƒ8‘ûXh»â«Öjt¢SÓwˆ¨A­ÔPU¾_·Ž‰3°¦rQ„BÚÁ0 #ÕßTêTÕÐ(ѧ¶¢n5ó‰pJ2xm©[ðþË÷‹EŸÞ¯é‘”%W†âýhYÐÑçñV#ÄN,[é"IöÙ1 Q§7PN [½Ñ•×Ú¦1›âßêŒ/Õ{fØ®ZÃù/Ä’ÓbùUæ)rL_ØVtª YI½2fRÈkv?{}Á™Zõÿw2²"<}~]À§¾¾*÷o•F¶­Û! @)ê¢ÊURŒ*"jvŸ\YâJ9·ÇBÞKÒ{6Ð\}ц×jî "»£Ø”ÄÍ¥&߇2DU@L©ZW3ê)Ûø€M¢ÎÔ’C,dÍhÈåOE_L.Õ˜Ðfºd…“+°3Òw†<§Ý&@ù³}E¦ýnßmnüÔŸ¬h^7w‘+”ï}Q`zûéž,б¥•¬³J²ß"ÇdùÉ8‹úReMìÛ‹=¾ÓÛX>š ö_þ.j´Ñ<«,óÂM3HVI}£˜dªø©Äkâ„“Ò*O€@ÆË4¸@–ÝŽK`YwÁëvq‘Æåü–rza<9À"EÍÐJ±§mù•Uë4«TÑ?òÜË É6¢O¢DÏ»#b·¶‹#ÚÕzX˜t¡â~ÞáÚ”ÁØÊ¼@W7Ë{Êï‹I¿‹UÞ2!*IÞ#ûéÃK\¨mîV™kÒ3«qa"ÿ­¦â¥€mú¹¦f¯È’ÐoÒ>77ªß¹`‰55}ø¨ ¶‰5¥Ô³iÍá¶ØqÒekC„аÁ²®Ï¼ãà|OáÈ‹³ïòü¥¶‰úd_]·­FÓÍÑÞêuc’4‹ úÐë¡w|…^´u?Á¾m"=ùö¥Û@k†ùhCBê—½=]ÒüÏUÇØŠ–N'„ž?4NÅ­´n[úU±qE—D¹h9½¾MÞf&k’rg”[k*V]æv!jÅ¢¶¦BTè¼½ÀšêuM´a,›9^žqk›ˆÎA¾²Ý‰)°»~YÒ¤ùdMRpÅáŽÁ / ·1R3Ðpž–IÁl«äFNÚ&’“5 6×g~°$Qœ[ÊÇß+ãÛ&†s)ž·Èµ+Ó.JÿˉßLTòUFØìw.# z™í}‰)h>%ñÀ,ï¶ÑP—YZ¹ŒòDÉá7 áØ¡T´2ä3õì¾v(ž˜ØqcóB©;ÝÒ3ìxæç×¼µ ”oÉ™@j«"‘éT`U‹U¯ž ¿Ô’˜…› ×6&žWÕ®²zmß…JeˆA)^(Ù¯L¶]P¥ÍæÐ6ñ›˜¼ÃÐåC/un|e§@´X:Óæ×öD­(-ÐÌÙ7Iõ:7n sÛ(íTEtšv-Ý3}s›ÜïPDT¬ÕƒºBa£¸Ó*v(”ÝÜ Ëœ­¶*ßòÑX·øP˜mÕMÜ™imci¡u±fš•øeömcé)ü¤s3¸ÞgwßÁm«¦ì@1‰¯W;‚þ¬fÚM¯0WzQâö Ý¡hu¡4Ÿ#ýî­WÜðîãl‡2Ó¾®zu<ÝÞ'%mа™åëÚ±ÇÕLûdƒÜòŠýÇV%m¯*Ò>ŒT>ŽKÜ\Q"úEú‚ÒK¶o.ƒ;dEbw¥\è0ÇZü“ßÞÙ«ï§RJÚ>h#6Šù¡‚ÚæXŒh!‡èÈüo‚=˜Ÿ–ýÞ2øÚ'Šå›:7-Áce7•°mâDËÂaX(óþ#PôëêZÓøØ^3‚ùÙöæïPuYeSÀ‹:UºE?…4œåÇT“ˆÓãx¼-Õ¼‘SJzÞtiõ9 ïÝ/ßRQÚH…7ðeý€G2îÔš!ÑKúd"¬7Pé;(5¦[FƒÐŠ%‹ú‘Þ$îôC®È´\÷L£ü¤Sѹi9ìÁ0{`Pþ1fiaW£•ã3E€7¥˜óØV>âþ‹xÓNÇæ"Œ¦ è d $ãM õC“ó7ÊYÑY—\æƒÖÊ‡Í \ɈÓSŒB‡¦Xä+`§Œ8­‡U§sSÚݺ»¯¶dÄéhèN‡ÑÕ‘UQkÿRõ„/'^1"+´ÝšÜÉ96^ÕbUÜ”o N‰QTún¶åø.”e£µo÷ß±qúû:Z„W¥€ãç÷«Œ Iª~½Z¤gBG×[þ_¡]¯}ØcD&&M{mù&¦š®Ëÿ„b.¤Y½ œ](t LEaÐ*=²w^¦rðÜb()WV%mvÚ ÞGÊÆ—òp+LJ]–çç$f›Ijq!*®BaÒéáþ5ªþÙð t{/»ø;”©:Í(ß­ªý.öcÓa(ézå]Óí hA¦È1êøêuäïdE‚㦳Lj@R)÷+ï"nlDÄ'¦¸qÿù¹ ºÔ VÃSh\Êþ7ÓP—ÞxÔŽ¼…Wp(_×Tf¶ë¯<¢å¢Zÿá»LE-#æ%C•ÚšúZW‘ÇäD{Ñ­Ü|½þdUçÿ 5þØ`7G(¢Sd­“O3˜\A‡®þoˆ– uhºùy4ø­–qé?”3tiU•T{·ÿz9Ÿ§5¹×_¶Vº~,ñ‰ª)-d-‹.ÕöôL>éx`k‡Žë]‹«ñPBª¡VEïºn)cÚM”"Íí|¥ 0ãV6dÞlsþÛ1[qicUm^¡B*™ç –à‘vC’æH78@‰$=:¿ýÓï™x\Ø:_)‹é7/>e`´³¬ü£RÌ’5(fÞÏòi£ IJÉc[¯`l«O6X¯P¶ªŠ¬^[u¡ÐvŠ/«”aß`z"+êí¬þY¹‘=3ºúÅÙHRºÖn«Â¸¸ý6[¦y. E¿lݹCÑPT]\O*:—U@hž{ê¤Üt±×ôdƒ"IÚ^­ÕVUzù¨~‘\¶ù£J è}eÚŽ‹ÎØ’uj«€ªŸÊ@}ðY|¿ºš¶ã,v¼ýŽßérh™¤/Øí ZúRdUQm@Íëªj#;²Ñù=µ‚b÷í4)ýˆ½>;4éÙÈÜAV•¯Êp€f@ÃPh{7‡±Þ@6X¯P?6È{ÆíüÞ²U—ž‚ÄK9ÙEï?ý Jíà4KÁÖc«BÛ!%ÞçØìàøþ•¨Òl¥Cµã<ž”!…¶ëªlü‡«Uš©BÊT!Õj©q¨t…²U=…ʿ˪V«y@¡íô3V,n•œ~Ð2‹*=ú½¾TTžLg8xÏ~Zq†*­Llª-k¢8ƒP¥#™‘Yß­Š*¤T¯PÇúÊêBÙ«TPY¡ðz"pÝ–¸;Ú“1ÈÞd>Ù«ß­eÝuOãQålW›s°¢Ô—òÐÌú«R ¤®jøDÊ¥ AŒ­Êº|Y³!+ƒ°ê¡Àª¨¦¦,´W® F¼üëRáBaÛ+bgh«AÌd#KéÅsê s‚ò}QÈÒsƒV¥×D¤ÿJlü»›R`ƒh»dµÿâÆaârÏ´Ì R´=Õ[+>¿ý3Í.”i{ÿXU5¶-²*<eºï Ž'PåSVö>”UEVù Õ¸¼Zõóì2ƒHoÄ~È/¼*<Ŭ* =“«œüö$ùÄ—JÛG2ÛnöÊ×v*LO_pnß­j]Wu¬%kyŸA^uË "ÍÆ@)&sŠÜ!=-‹1­ð¸æ‹Vúä@Xgš6l;­\Žáå¨ep¡ÊUŠÍžä ¾>€ %Û>Òú]ì=ûõ™"SF~TÏtÐ ­J%ý4 "‰˜L 0/‹¯[ÎÅõÉ”Á:-l»øóVT¯ºÿ¢¥YÀ]Úþã ëóÓéËfÚÞÑ+bÈ–bìÎûiÚtd´ÝêŒÌ®×W M+ý\Ò²zÚÞÒͪfü – ¿}˜ŠÎïÄÞ®zu*Hz¦x+C`UUYmÓønƒæ·¯ß¿`lƒ‡¶7zh:žŸV\•›2Sü«Ò-~å—Nñ¦Çîè€Ý̬»ÓuZ¡ÂÔ8á%ßq4½*çæ“nÒ4+s}§57ÝñsóÛ¯*L»êFŽºÒ|ÎqL¿©O± ÓSå²zRØ[ M-­ôËî‹…Ó› Zq}¤F¸œjLqÙOãּý· ´©µªÌ-J7´É(¢MOý:‘n‘Àª N -‘»ÔòzE6LçÑeÙ>¢˜#…|…:ÓÌ _]¨.µ›/[Ï̃&póAœn¤I6ÞFÖÐnó#LâÔFLÑ:Îú¿ Õ\¨ö±ÁSºÙžlðÐò¶´ÁCØï{†f>EY N7L^cÀP³äMw†V+õ‹~tèŠZtˆS#mºå×<º¬¾”h\¡[X?ÝÉþ!N»eý$³Ö(Ñw8Dœ]WÓÑcøˆO4Î`àÒjåã n6ÑÁBþ/(âôhÚøÒ+®‡d±œÈ­Æ´!+0ºÿFöK­ŠÕ˜~žÁ£Qhô Z)ÊÐ-,=R†‰2°ªÆý§R«ÈX‡b5¦'(<õ†ØýdúqŠácZÛò j©¥ »vHRƒÛoó{l*LïÛ$Z/dßé° ScʘéžOÃÞü;ðÔ–rd.nO¾ŸU˜Â ßôŽŒhS ÷ÓÕeošÀªèòÕM×­M"hànm*Gˆa?ç1„©)K䃱a#P¦½[RÌÒ,Õ«±‹ %MßfÆ"õSgJßÏezL¶KÇŸÞ‚68jÀe4Ê´~Ü€=+”Û`½Ù On›•Ù >Ìgßög]¿Ë°ø §x+gåGšø—ej£:òd´@ezÜÆ‰Ë*Ÿ[ÌäWHkÊK7ù áÖa¯€Ø©/m¤¤ ·MbïbñeJФ¢¢ÏZÀ—iñSQë…lÇÿ‚P¦7Ýä¶*2¥ L³ë"F¨À|hhÊk/®fJ5é²o°:”é«? ÝÈ­é[À¡…25¨FºqëÛ(iû¦™tEÌwCŽkl^lP©õ~ HÑ«Ea|'"Ó2Lè“a5Â~ÚB¡+/ÖJ ZçFˆ"ð\¦ë„ã˜\OcóQ"PXö¿GºtÂô&úð0/³ìY·×ËnU¦–j£Åˆy†•ucÙõ¶1»™©R¬+ïçTœ¾É²÷äç¶•õ‰iôHo ú‘˜J©Aõª=R¢#}Û+’bèÏ¿1©.P¾JꘔKôÐ*_*té½;k®‡kªèRCU2Çì×·‹í*BYZ¹¤O@ÙTÿÕsâ!ÂC²úí¾ë6î×cÛz ¥uadË ™tRf{VzñìÙµå•Ù¥Ø'²ò‡.…КDBÚL~“¶ÜêMYæÇ&˱I*ÿÔ¢CÈoq ~T½â± ÿ™ý½*n´q7°Tlkè5NâjX{…úf·ŠMIu u£¥Báâ¬>»]áF?l°&ˆùŒm7ªÔ]&ߌ'—n“´ ‘¯uy@âDu1éÁÿ:aÇY |5ñ¡Ò£‡ö‰&‰ UZ¬Ügå’¿f» ÒêMmVc‘1pïâ‘\ÿ‚²ºÆ”``جŸƒ\³YlDݸպ9ƒ¾"RHzè:º«ÆÌëZüç£fªˆ¨»ë»UñŸ‡1»Šš¨¦?Ë©ŠU‘U·JTÅ~^•±­É‡¬F:od|‚•húí*ޓú&Ÿ^¸æôsÆ«XOu=avSSÂV ÄæªÏýÏä×¶a÷>¹_)°"Ùj}{ærì2ç²ù •‚ÑAõðfSÔ݈¬i²½ÁöæwÛSñÿaDÖÍŠ|—½Šñ¼ÂäiïÉÌ¡×d‚Ê{HVæë¿Eª¸Îý_·Ïoš4ÈG\çÇŠq¡Ò×zQì¯õQ4§œGØž­Rǯ>©µ&^Ò±ŽËÙ½T1œ"½ÆÇ»Hó~k§ÙÙ¡Ñoöÿß'SØsIz4?“Tþ)$µ~:¤Ô%p|÷||÷¸ u™,T®ïötQíçÞR²Í'8¶ÛÔûЄrh‚ 5n L½íròJÚâÞº« ˆüÓ=)²º¤»ž8â,;ôgg†yÏòqC—Ü$þ— ’‘–”ÉEÉ>­^ÅY&*;¸2/ ¿º¥BYŽaP¶²¶|“I•§hª÷,‘"¯ÄI#rjW&àmvcF€ä|kPbÆí€äžØ ÞªÑG{‚D¸$c欺sâìúÅUTeR“»$›’dRf$:O9”ŒÔ6e@Ÿ•)%…§Ã…+OÊæ·ƒ¨”všÉù;¤r³?24Ì ìOäM–£2詳ÿ2©û'XD¥Ù'es&{Êûõ•²NÉéäÌQ„fÜ<ÞŒ¡SÍã¾Ë”|pr~øvOµ®»³*¢‘ã@m# ˜1ãŸçîõ5](ùá度TQ&Ÿõnâ'“òÚ8¿û2ªXPA+ O»WÚ“½Õ«˜ì¬V¡¢s¡Pp•f+ù!Un_Á p9¾?î:3ã®{ÑDQ¦nWï=3fòÓ‚…œ›f(öl¡ØIøÃo ÓÄR²¨}+xOùÉ¢DS&v‘n‡Îu šxÊŽÙðù WL·›èO€Ê¯nT«ˆÈˆNH[ùK¾{ÈÅ–~õR^Ÿý®xáøZ¯’ Bº”ÆewIµZÉ^~ó––0àé²·c‘åX𠤓A:ΰzI 2ü¯#ƒÂM1ƒ¹¥l•‚ÊW-øðy__ÓÅ¡rw \%Rñ•IÁÔ/U@dåI•d¾-ÁéWUÞÐV]ÙþIá'ãÓ>Zó³c›8ˤDâDŸá1IVñ{j41–ImÂm£-6¿ÏG_™C0¦}\p?(ÛDY2˜¤-ËŸz2x¥‰µLjˆ’&ïÂRH‰jMŽÛþg8à4‘ŸéÙ ÚÍ¢è®%™,ÿq™•ö”7¨#ä–o¼­ÓíçÞö_8L~ÒB+x'7Z‰›ãml d!I˜ÐÌ’Ïî7Š5‡õT™ùº½ÐªªÙoˆ›Ì¼ðÀ6EôeVyP¥¦¼SÌ8“_SÞ*ЬÜé—'»“ýf Ì°Ž8'S@ªŠAÁõÌr#òþDä8)zÓõ"‚¾µ€-`DdæíF;m,eàðÑâVôZVæI¶Ä“Ži9O ¦Umšþ8":‘™ŸK²½½ ] óQ>ÄÔÙ^lM¢é·vÝY»Ø¢Š²vGlÖ'@õªNm«°YL”M®©Ñ”y<¥tÎ¶ÍøÌjޏ(t¼?¿¦Q 9&1qó{PÎâ§1·fÖüãóB+¼ …»BtŽ¡eÏúvU£ˆÿZTTКæfèJ·°Œß2¡‰Õìô„è…vg €*9oâþDLõªG£ø±È!îx,åúíž.ª_v—7Û]{„G~:Ä8øøRjÞ@}ÚƒŸÑ…˜3{i,žœÕTÓ7-TgÞœâÓ#§Xô&—^Vfc&Y¦œDJ3ßM@Þ¾aÃʃÊï|ÒÄofE ³²| ;¤TYŽ]5³I_Ÿÿkb7qìÊdØÎ€‹*~æf¿irj›ÞA£q¥7tr£,…2‘·’°ê7lâ7³b¢ÙB}ÕÂ5}(¹mÏÖÔ9®Mg›j Èç‡F͈S”y–”­Ên½Tþê9@]¨«Ó²ï4_÷:1Ôdž¥n>Y{  ³ýwõ¤ôÞŸò‹¬Éýãô=Tt±œ? xòW jûö|ÎíU™;]13^Çù÷’BE[eõ&[>³jÎÍ_,gμ…¬þŸšöæOÜmb9+í]•9ÑK2Õô½(‘œ™ÑIþôÜxú3Ř“¤Å¹qéQ×¹ù¥ãMç;m&i›×5€%Ï*UÈ{ïH¿ÍoË™Õ8%SU½ÿ=7ºOà6‘œ†$7Sðø‚t?ö”ØÓ{Môò¹².–3Óø¦ve-Žf'ØWƒN&ÍNf2-@ä~YGÏ©q+ ¢d!PaÔÅrÚÞŽ–¦Oç^y],§Iü%]ÙqºùÞfË©Gú‘ˆÿж>©5è*Ns’[ìWR~·J5¦`ŸXîb9ó’k`‹Úo0•umþк¾ýbyÎè¢9ÿÔÌþ¯›©‹tÕñ—>K£H9 ÈœŽµs3û«Ì¼i9&þ{¸3æS͹rï×Ýí¿Ü»¥‹ê|ÿ}b!ùø{`_ÉEu x_xvO­'‚êj]WÕ³•dúy‡=ñüTð¶ãeœV•ýºªNIæFM­}{É„!üŽ>ÂL ŽõýØàk}TFщÞR½ºAwúvª37«‰2N¿?ZTŠ—ºö{ô­Jó$ª ©'6€ªQu»ÍŸ¡×s»YTþNT2é“l&WÃLvQŸY_/wSÎüDL2èfð¬ûÀio¾éÌwjnb"ö0x57;õ:Æ{~¬É!ðÑüªø.ê“_eÒô¯L»›+:0¿ÒúÔΔo¾y®¾^ŠüÄIi ÕNb á³HÞ GCI1)+%‰tÂ>~š_gÄçࢢ*­µúDWïž¼ÐI›¸D{~âœgZûº ç9£›Õ9«Ô“;XPþ¹ c?â[JQžt7ª¢º~Lެ¨^¶vìèuH2ïD¿ µ‹ðÌApúj½?Y}®´9{‘Ñ?´øY+²sÙÅÛ¿S¤yÙÛ÷R’/~žIŸ‚öî¾VR»iP÷« @¡à$$Å$Áâ‡!{ûÔpsP[+~;ýÞ>4\ìðö°¸¢;•Áj…M¶? ²‹êÌñçùØŽBö¾ ¦ÓŒ’ ;¹›?<°‹æ¤S2o•^\Püœ€ÉY0,jÙì[äœ4Â)å¿«FVë×øjýÃts»qr7¿Rº‹áŽÊ‡òâ¨ù©]ü¦òº¤Cc<)?5HþÑCý¯9ÇumÉV€¡1áÕÊî¶Ã€|õ¡Xí!‹nHkM¥¦šïÿºYkC ¬h~¬HGLÁŽÑwh`3?vfQ.þ˜Ûzæö(ý*£‡‡^\¦¡=-É>¿o§©Ô¤Ç³²y ¢ÏìçKõÁ+’@¬}>? fi‹þžŸñüN p&"“ב= ¶G+¿á<ýjÒì™moº†ªŠrfòºXL Ógá™ÐX– §)²ð)ÜŽLÒIpBü’~ê*«cB½QQZÒhè›5•½.©Ìb÷ïaA_Òd!åñdkí7“ÑþË¿`­›,Ÿ­ð™Ä|¾±[3ÙëfÉV”»l×ÏvZRö»ýu:É’Ë ½FÃìÓ²úÌÏ[òôÙü½miçÖ 7A@Œlý©ÛóÉš°Ü²¸ ‡:é¶_™Ùa-Ú¾B¹Í”¬ïú_R2­ô’ÍÛ佦Æçû/B®>ŸÞn*_Jåbªv1ù÷Ýc™?h9Ø•'²ŸŸ1è;5CþXÝûÌ!(ÿB Û¤NÛ’b, Ûš4lÔæ‡Ä÷ÿÅ%>h»1jl({ÿeØ]5ö÷¤˜œ“Uׂ ·xËã›åàÁ׃ÐQõš‰êéªPóvÝßF25¯ÿýªæ1¨O5—b i~‚ÆHDJx–ÚûV8~*İ1›òu›]+4¸ œ£,OÇ®~%#†lN•fÔC`Èf%HOx¢e~ƒŒÁ„M³Ç¡›L˜@ÃækM²juկ̴¥ Ð,D¹É(‘5Í ÒyMš1š ÆVNhœÅA‘ÄCŠÉpM‘Tå4¥Óëz©Ã&k‚Ó¯RŠIÁỹVdê=¯òî…¬šˆX7ÙùB‡[ƒŠ|:&kÎò?º~³AÚîP¥YýX×`²æ,7Z¾ðŸü<ÁdÍÓ¼¾ÛŸl8¥4“”:¬Ñ`°&Kêö[öÆXÍjWùøJJLÕIihÅêt#8ñ²¿h¦ožŠ)9N¦ej 瓃‘š”|—fצZ¨Ó4 Ëä_t Çß!Ô0žàêMSš¥zcú¿ñ².ÐúmA¶³ý—oœ§iDüç2s6O³ÝHûÉwcœæÇÑMlåÌ~–å`˜æ‡&•e¶$€O¢W5݆ôö[zŽj\HÜOLE>b@;ÆÃ¤D"éCTåýW#&ëWâ ‘•udžÎÀSÖ›Oï fêÈqP*M"Ži™wÀI‘"8WÕ¶CÒ6«Y aºë§ô'Òî ³Å}„r›¡üI~I×9™Ì°›]ù9ýøèf½¥KÉÌ’ÚÑŒ@³Ã!ú²* S ÖÛRa}6eˆ¾¬ …¢¹ k_.ÊtNªâûûv¹Oü‰örZ¶!cx’oLJõ*ðc-ïíB 8ñb0m{ ïVU‡îˆ1õœÅ‚Ò i¸óÕh0BC! ™o+2%m1‘·U§É‰O›ÙJ»À}q‹ÁüavçwP¿ú'£ T¿Fq@aÎÆËBï¸}£™û’š¦ã(æ ԅŠQâVž,ªý¹¨GûÃŽžá§PÒó©Ï£*w`ÔeGß”Ïù«¨ž.Jš®ëåkE_ŠþÊ>þÃצbÚ8ÙlB‡?X;ê0µªŒN*Ú!ý3¡©*Ó¹5.Oõ<œ="(EQ’ÆÒî¿ßKj¼Äi²»×V9‘óB’5W§Z~T©f wˆÒŒ$K^ÍhN$¾=ÙÞ¼ Õóí2Ÿ ­‹܉¼ÿu7Eh²&C:K<°¦”®j`ç)¥'kÊ¿®É^Úî"‘tÅ|ŒDEÇ%¶¨zýx:wxxMªn¡3 I¬?r€ÅiÞ(ÁÓ½)«{³â”Ãú%¿üyŠÒèh5ð^’u~q½‚)J³&lx7;W esUÊ_‹ò‡eÏœ.‹:–’¥<@Ê¿I|ÿ`ÔÓû S¬æ¹cÄG›‡3€$·hÿ°ó‹Gç¿8¦8Í3áÞaO³ÀšpÈm·Ê;F¸%øó´1™zOɽ¨§Sçßäâ3 ‡Y`H)´~•RKi<|æ´Zz«Q=IÉ_£2¡íoÚ¿á.’… 5ˆ€ag-e‚~Æë„ÔLfÅ3'8“)á·Ö˜"5«Jà«=ÏÕ)tvß]¢4ã·ö­ð@·ný‘5J¾¯€F4“€™Ÿ@IÉ¥U_¯2 ªø‰sÓFfÊÉì¶ ®òé_v%çü~•—:xH¢5+¯D}¹ÑôŒ }9±š§½U‚þ@Fâ4M•ôÈxˆc”¦Š Sâª{tP*>жf]æÎ X‘šU“w«tû)Üp+´ïOÁJòË'¬f•=©Ë¼ç”oäÄkV«Á”å­„Æw¤€À¥ÞVóz»=M"6T…ئã饫œlM‡ÄÂP$¥ žc"6žB鱩´[T™´ÅŽèÁ©çìòæ$q†?lBlv¦Ì~«Pâ6³Úkg:N<§äO˜›Tb~½þüÌÓ*1Ñ‚É4·Äøä—«ÎvÕñªü´¾Þš¦¾IXùCP 6`Íg@àëO-W°7t`è=›í&ÎÜŸÊ'Ý/…Z¢5{á¶"¡»*£wt¿bw‰Öì…Û*ÙÕ9æ÷'XtŸ]É®++„{ÅkvÙ`¦týXSH‹ÈƒCöÿ¬}r+wïHœ,yYª60¨QÝ® ;”rS¬Ì–Ñ:OÊlw$Ê‘‰Êð¸ë&'ï†ÙÊÈ Z;}fwSSv$%^Äî>‹ˆwŸ! ')9'/ÑΞ|þ‹H¹Hzr&õ:xÕÔL½èCû“Wž‹•¬É£‚j±ý] ’»ðgè_Íw$ŒyÁi±4qÙÍÞ»vk)=_j{±ï#EéìViíP‰Um®Ê³Â;TfU˜)s¦,ÅÌM¾Ø¡äž3MbÑe‘´ÚŸÜsµ½èŒ]L–mìVGî@ícIô_ÊÄŒ-IÖÜü¨a‡±›Z²#«ØÇ{ªxçÙL'Y*ÊWÕr±C¡"û«­²ïwèW9>„‹Ôþz~²¨þ)t³S¦êžw¾#)Œ¨Z¤>LäºrÀ´ˆëì šUq\§F2ôéäµ0F—vÏv&𳋿ì´h{´ #9)Vun1$·(u‡’_Θo%<ôÓû%°5ür].‡õ¾˜_×/ß¡¤ÞUÞt¯t®J|íÓ…Â’K)tÖ׫B³ÀªYe`Œî¾¬w é¶±ïܪ›´I·ÕÒø=Mé )·ºôÕ7ýòF’]ÚnÆI»õªîä÷Öi àûfžˆÚt\Z)zóŒDˆ`=9*ÌÖ\ÌOBRÇF˱QJö{º´È3$9(**"4,ªîX¾Ám.`¦Nãɂ̂àµ"£WÜC=m¨ø‡”ž-*mé²;²ƒÈ0qÂfæòðÀwu$ÙÌmèÓÓV~ÔÍ J:^±¼¤Óæ÷¸Ûa¦§íjÇØäGꔌÚ\<}O8=²²dÊ·Iš¨ 9¹Cz¢lól îDî¾0’¸Í!¶|;/rž³›½Ø“˜Í¡\€Áˆ SðÊ­;èI¼æ`”J0ºÒ8öGûÄH¢5‡r Fµ;êÑÞÊõÓõjœA7çÂ}&&kZ°!“VÏı—f¸P-Õ\yJ8*TÅt"âæøTSÄæ ÕÁ<¶¦ÒüDÚ¾CZ¿"t3»€=åOge~%¦|uV8-fèb@ÒqóÃðzÉaíÃ"BstS&‚RÄ%ñ™Ãøvæ9ä ëëN‰éI|æÐÓgH+ÇIÚœ~ÅirzÉÉÌn6WO¢2?×c‹I·EA{Ó1<#D˜ÐÂ_™%É%`˜Df޵Κü»Wt&‰-ovJ&šä›%±™÷k‚ªõóË’øL»æªÙ·þHÊ­¬¢Ó}©yC1)µÿ~;oO÷Ö¯Kj_. õ6;Y¿Cš¿ne»)ÓÜ ó™|ý®è·€h‰Kµþ¯¡ tUïc!E/Iê-zˆ†ÆùFpʇNÆÓÌ›ïy‰Ëü\m,$Ý6†idD=DŸÂVõˆ¸ßb2o?c ²›Ü“ˆÌ{¤Gª$åÖ1A¹íø"8”j¾7òöß 2Éšì~‚b‘9Ú1™¤$ӀƗ@h·Y¥ñRýïz1%»Ö) >ÅLs¼­¢ÕÏMLb1§½ ™HP‡y]nÐ*‰Åü\RY×oÑ“8Ì!:eŠN™“lmý†c2Úù@"0?­É°0ŒŸ—Œ¿ìÂÞ‘80|·Küå/7—Sòæ,‹Rôåçõvv§^ôèО·Îq È{êí¿?4²?Y“üeH Å42 íq_¡Ú˜’¾}‡´çö%yIìåd¤æH$óàH¦ßlF¡Ù·Ç~O´œÉVen>|êÐpúúÑXyª’&¶»zÝ]'czd¬wuK¶{¢ç,»Û¿UÄJ}íÓ…’ýVØúX^FøåXž‹ÇÃ3” ] á=‰ÄœŠRLwdLYÓºÊüYFdQ‹ù¹¦‡o~h¹­éPÒr¬Î…ÊW¨Æ¦néÒ‘Ãc&¦#ÐÃó""¤ÁtäIï» ¹Ñ˜¿‰ò¥ìg¹&јŒÂlY Ž:ãbjîØ¤£”gÓž~˜•§»SuÏPùÒþíx??2v¢2Ó¦ZÍ^­Ü©îgß&‘™iSêô ƒá§#%Ñ™³ðùHlZä#e?]#-Ô|Q'H”3®˜OB&Ñ™SÝŽ^@R¶• #w¡è^  Þ d9&+ÖÔSTLËý F\æLÜ‚» ú¬~Xbª¦­ˆ÷a6!¶6/BêÌù\f}#+RÆì8•ÝSC“y±d×þf‘™o?7™Á|ïÎ]T™9­ôwš»‚À} ϰ™Z“íîµ’H岦c%_Èéªà½ªíÈJK‹(x¦m¦ü0S•¬ÒÄOÜÉ¢3™¬:íuo*î§Êe#3OkÂm¥]sõsAó©mŠ`!ý¿CÛ“WnLT3s."û›9+‚:ŽðlpÒŽÓºð9•,*ós=¶±P¹h@Y³_U †TùnÊ•£Ðº[)r€÷Ïé/ ?«€ûèÌ”h2šâ¥„Ç} Gþì‘Uá‘OSL¼_=ó_›v¡ä‘‹©e‚û±Îr¬Î’†+CbV;uD°|7:Ó…öîÔ=3*â29u‡Jf0£§ÅúКѴÄBk¬éöGî9—Ë¢¦ÂýÓø‡Ži¹©&A#F/DT“F´™šß³¡#Jë§p匯ÿý®™Õ§}³(ÍI‹ä5±,z ïªéú¾Yœæ§jÐKI] t<ëÓ­¯€DiNúÂzWê:²ï×gQš]¨©>X6ê"„#3NmOÑU˜QÒ²xÈh+‘«– –ý§T¥9õ⬛"µu£§š?3´gqš§í-âkëÑšdÆEE½%ÿ2Ëë‡02š@Gïß‘+~È?‹Ò<4ç%ðƒ“VéÙÚeqšS<ÄQ˺]€Ž¿Ï‡ Éÿr"5'5šKð±Í7’û°ËÔhŽù;RèÓ‰Öd4Ð!æ|ˆùR½~»C<ùÏ‘+éêmJ~—yªÿw5*í+}µ9©:[dæJ:‰Û+}G¢—q¬LsúLitö«ê²¸MÞqpßA£ùàë5´Ü4ŠºŒAsû"îHé"(›vPHNÔhnLÒÊÑ›²eB6Sô&Óh½O'ñ–ÝNð;NýÀ1hO€dÄ5‘Íz›¯5Ÿ6ü¸W¹ï1éµ¹ {#È£HÈ~*g»ùãËë—ëÍONÈצWå©N%Ëô涯ëYüfY¢¥LP-«raRû³(Nkq¿Ä¹˜ÑÍu\q¥3zù“ɢǒÓ4³é¨° À#ŠÍL»õ¶ï–t Ó#ûÐз÷ì›KÚÑž×ô!ï¨ 5/òþ~w‡†Ór®nôwÛÌÊùõñ–S*NSjëI½|N9‹ã\ê%² VÎÏýd1œ4Ul™'yK†ä›9œ4G¥áJp??‹à<áØÖ¶'@M@U@Vžõ_?ÿ¨u=ùüh·ÕUÂr7ëpã7–ÊLÕ\d©Q9‹ˆŸ9î€èÍ«ª_­ zóãÒü¡M¾‚‹Þ´À›RKéGõrbÁ-.ÓQqëbéçOg±›ÇZ~hÂqn«"žB[·³&<‚’ž+ï• ûŸ ó;Ffñ›?ô ]õ öùEgCÝè ûˆ*Í"8¹Yê&+~¨~xM+"òš‹ß\ªd[Ù®;„ðèj®û@å£+Û}à뀸ML”qv ¸ˆ1›(SÝ>Ø£›EÌæçµÊ|‚Ó>pt¯»W"ê¿­Ç6’n+ÞOü£n–2|݇·„´þúl&&©ˆ×\"Fí&ßf3h,Ë–þZàëdÙPn-IA‹Å€ÎåkÖñŽ<—– <ûåFeÃIi¾…%QGÄÝ®@åK ÔÛ.ÌõÒ¸|¸C^× % ¥)]Âq"Ei³¾í.¶›ÎL³íÍêt»³(i»,êp Þ¾=X”Hͺ‰%·ýµL9d  L¯¹T†LÅɲÓë_LE´æ ÇŒÜz$—+°šéezÔ~Õ—dˆ G/åÇíw­‚%»nx£¹q$ábt(¿0«0X3Ó‹³Ñk½iM1µ¼ZpRrO¹³+Bó*yÞÛR × t¹*óÝ?®ËŽ{ê§·”LŒð¯SƒÂ€ÿebPŸÞÉÕ«x}JïDŽ—ÔO×¥ÿýEe.½R¾ýþWëMQÎ:€Îü—@îO6f¦›Æ=jÆ»ÿJ@ùÂ.è6¦›y¡ÙÆÃùo¦""ó=Fçßî”TÈëä…èâä;%õ ·r×0{ÛžÕ‹ŒêFg›jÓµ#2Âr_ï’Ñ•;0”aafVJ÷þÝyxÑä;¤Òîk‰{rGôµ»à™pè´M;m¾…Y7‹SX¸ªÛ’üsÂÍ?ÏI JÚ­¦ÕÇò¾X~IÿïêOôù¨\.þ™>‡!WüÙ[K³šê€&1E3SGÑÈBiVüà׿˜Ëò˜b¶2°»qAª[¶×oâ›1˜K4T(äU g}àÈP-çg~‘—Ÿë±Å€¤ÛŠ0ZºÇ–á—ÐI*[™Ð0ïÝwÅ]Þ~¶=ñ+XKÃz똨êa-ûü¾‡+ò’[ÀŽÛéóp¤Ú# §èØâqÔ¨]ûNÖ±I±5šáôýó#Q¯+Ðø¨£Ú\ â=EJ¿Ji—Í“ï&Úr-|n»q­µ{à˜tt›Žš\Žn%ÕÃ?%¢-Ó¦f/-ÓÝ=[PØOÓ)b.ë–MæÜV€áGN‹˜Ë´1ªî=?âõù ¿Ûiw™6sÎÀ†¢¬G&û¯ î² (.JÆȦé,ýÍ"öòø³„„ò±-­ÊW†Aì¤Pa ×ynJû™VREfbUi³Ä[™©Vz%ÓVõ±Î ï9¿®@cbìN³Á~&Yx*2æÝFÚŸsª_ÕêP¦ÌNË! ‹Þ>ö——‰ìo^í‚«vÁ?6b2SfE}iZQ‚Ûå;ub2K}\§LÌ.k ~óË".3m™7™Ñ¢Ör8`¦é:ÖªRµÜ-wðïeº^€â5=Ì.ø·ÍIJ‹Mô¹ù±ªTcƒØÐ“µ*Od…eg|aÙ˜üº€€¬Pv{T›…±˜±oB'Ê®ÊH+BìFŠÍ¯Ë(â3©ŒÜÿŠ^¡ª±œÓo{W¬\³qV“·_OQ¬\3ëóYv°=­ýŽöE”&Û›2 Vb’ṤËV®<ãW©«‹dzÎ飕""Aµ+ÔÿOe·o(ß~R°)Aí–Ø*€óIáÀ¨¼jtŠõºUf¬À¢æU¥Ò¦—ú¡\a•:ô<+ÄZO²:{Ý¿êfjN¿ƒÉ1^wVò…IoxBߘºaÒ•axÈ,†Â¤«ö¤nr_êÆ¨“äGmëV?W¥b÷c}ïƒìzØuk¿oÐdƒêW­:¶õC«bPYå+TgâîŒÓ«›éúÒ¼O[Ç-öSpꆳÎ$-FTï* W!®‰xâä5©*”‡LÚþcƒíÁEtî›Á™¥Åjëøý~^ueÄfS+» c·‚ÖªŠí4±›¬Z^v+V…·Î l•dËìU@VýFì4§ž8þ~BãyV†OÓS´½ íÕ¾ m"üó•*Nñsð®‘Vî×NW«â\æ ™WE†®ÿÆ­Ùt·˜©¬·À°™*æ3eÅáS†EOt€ Œ©b>=ÃY• ò[#ðmíd—}?ÿØä]ÿòØdÓu»$&÷ ±Ï€‰š¦Þ“i’žGÙú ôƒ®Ù,;î,>öCYAƒZ55½­qI4_E ~L5Õ{²‹œ%à´]íÊÓ{²ÑóÃ\òïP-3ê¥ùyCUdèThv÷iâgCc|»RÓ9xM*"mrØ[`TW-x1cLûµ:qˆªPÐuÆ~U8æe« /¦™V™Ðu^ÞµÌßWU·VŸ¬ŠNBôªú–W ¬o*šN}oµæÒÏØöT¾\Upz(À’ª Ý´Ê70]_¿«ŸòiÖ*nôS軤hæ8É•·©Õ…—ö»PJ)?“¹dß­ªëCÖÊW¨ÐþŠ®ûá8Ó™3]Ž3íB]ýõ?$ „ešN!ÜÆÓ÷k¨rÝßú*¶?¼uæÏ—Íù‚¦í&öñÔºŠÝTô¡ã!Ú4%xá”ì:Åõ÷9ô*ÚÔ¾`+L°/¨¯Ð¦7«ª9§ÿÖçB P2}É Ç"¼qØín¹»Fû}Q&õVüé"U´éqO%îѾã®Q™iÿ0¢fÚwQVEù}¼Ñ…V6“•ÿà‚7M*±1Ã0†n‰YüÒû:ñc>oÔºàop~(û¡âoe‡ ˜+ãM•Æ’RÂÆœ”Ý7¢³|@®ÁgP• b®Šy õaÚï ÃKj.”™T0 V”dál?¹¦Š7mElçþgÜ]â˜G H¹BœÞ˜« {ìóñ•F·Éj¥È#/Ö °A˜ÓT02ËWú¨tU³Wg±6¸òͪ2«2ÿÑ?8«ü¾A“U m‡NÅN~Õþú‚T»ÚµÕ…¶7ŽU‹ˆ#à2@ŸžÜ«‚é³²’ÈüCÛÏz2Û~gúj\VmÛ®b?„ýø ¶-}®ª|¹*Óv³¢å;¨òçÊà^© 5üOVBgIø~ºA žURpšÓçºmûÐöc-½¯ mÇmO Ó×ú¨y…½¢8»øCRÚ¶~_•m0•Ðv‚ÿÉÞ%ýɪ¬R´ÃzÊ­•I)É7}-å?¿ i»ë_µ„¶ì•BÚu;=&PõÏUáÖΔÙv»&àòf}ežÌ‘Od5®´3øtƒósUíËU™¶›éû02!¨¼ý¾Á‡bÏhûàaÂTôbí(ü†íN¸EEûŸá@Ns «Rñh±×Ä·Ph»^©è[tM´À5‘ÑöÁÁ¡2¢ØsÉÏhiP¨g¨|#ö´’˜ùjûnƒó÷Uõ¶Ìȸoœ–Ñöm\à ²…z†jW±Ç ðdöjØqžO òU¯Lì‡Z„¡LÛ‰°’²Z2Ì‹ŸëÖÄ¡V¦l×T•ÿšOæBQ·!±óÑ~žÁˆ^‰DÝE¼®²:¶ZŽ­ºPfÛáÓiµüêCÛÏ–áщzþ‚_ZQ‘¨G—å4NWZ|]›)C*]eu¾¼Æö@V5_7¸oeXöòòe%õH<72¢Qï.¯CYÃb7¿'€jÌž® m—‘9T s•Ô…¿ëÕÓ ¢íÄúÌ2K=ös"Lj²p»µvÐ ]V¾½‚I½YÕ.?® ?íª5´ö,Áé%ãô•º6UR«¬a1ã%ráQo–d2oÅŸ=Ôš¹1xv Z; ŸYjÍܘKЮæ”©z»jÂiUÉïÚàQÓ"¬½,¬M£6ŸMhÍ ûÇYþ¡ U}¨ú¡àoUWÞãð[æ¶nn ÖØbÑ'U÷}Úž>¡Æ—P¸1ÆÂ} U®²º3 /©¹P‡¶¡ßYtÝÌ!ŸvŸMhð¨ï±ï òÚ%/b¬(?=Ca¬¦Ý§þ%(µºSºSNËóS(Ûeåû VªzÈÄФ”Oô=:ê–ŠU‘XïŠEï¿ü Z êiUx}4z-~>QƒH¥F:Ñ¥Àª‘÷Uù"•ÖGeôkU§zòÀÑv::œrj­iª^¡¬Êýxu¾¡ü/he¨y^¡NìÉ·W"RwÅ4ÅÙf8Åæ·ah"R«2Ñœëüú[°|âQíÜT’5ìÜìPEÊ^ BhÎÓáŠÀ¨Ç.µ&ÆÔ§Ó¹i@¹ºÐÅ£îP˜TÔœ>r»xÔ]B¦¡ºœ“E‰ªëôuxÔLD-)ynÿUžl裒2©e¤ö‚ò…txÔóª«ÊOVÕ¯_°•Ê @³Jbb'£¢ÝÃtþT†áÏZíð¨Ù8œ“^•'PëºAû‚7H!*·Äyƒ2ep=¥±VÕŸ¬Šè£Š¨€Ì·|¯Êµ 5S´Û‰¨±Á]ì®=îÉ´ÝVuwœÝ×R§ÕÙ`DV˜v¥&ÛÊÇwÓPÚþCEŸh;<*£yóØÓ»ÇÿÊ7ÈéomOdzRòÔ:ÄË?ù¹P)Ò+ãQ«ó­‘úãÆ1ŸèÉÃPÑÂp¥³ex$«v]Õq„~|Á×ú\( 9”¬‘ d­¼r ßg蔢һ"ÙÀ½Òlƒþq†GÍjì›2ýBÑ%‰úÊÊÄñÒ•ß1¤‹G­L¡©k¬(UâQKUæN¥#_+Ô.¿!g‡GÍ Ý»ß``Uå*«4ZPªjƒócƒÕº † ÐöDt§™¬ÄÏzvñ¨¥Ê2à ±£íjTfb¯IîGL¯ÐöÁ+¼m×UíÆÂ72§bÔò;T+~áu§•Uùˆ¯ šñX_>Þ_°ø½Œ;å¨ÙE•à#³Š’éâQïdU™¶óÚ´ õ‡¶·Òʨö¹ªÏ ÆÄNH†ò êmkJæõùÚn©Ÿ_°nxÈ¡U™¶+/“ˆ÷Pìë u:ƒÏ Ä£Þ䓽ŠXxÔ{ƒüD¬$ž*Ï¨ÔF÷öãä½/zÁˆ…JÍ÷ÃÒ­6Ò'-»•¤;ÎÄTõÒ+JR³¶õJ=©hx}P©l0ѯ̠bDÛáç³"a»WÅŠˆØÑvÂí‰öë¥ÙýUA¥Ò!ç°ø0”Ùö;}rMôüûªlƒ­øi\]Tj¥¹[[Ÿ7ÎKï](´½Úªì¢'XëqݨÔÅ+µÛÛ™¬LŸ0锤¾›[½^²¢³ˆWŸÃŸÓØ)I½Õ«¾=Ù ÅdPÚ»ôÊfvJRß#³ßPêfbã#PP©)«Ø[=¸«…oFúT†ö2@¥ÒÆ©ZIêC¨Ñ«×[È…’¶ °I…6…6= ¢Ô¤u¼¡Ô³3ùÅF*µ@¥Z¾v/çâ{}Ô¤Þl°¦lÚØ ´‚¿D5Õ–Õú„ŸN•~òN§&õfUöcP ¨”iû|%m/ŸÁ˜°’ü²ž•Š2ßí õDf½Bµb¥uÏ Ú¬XÕ dá·ÂëP©E”W* ;ù Y™m7±Þytp¦y2Û§2œŽ¥ÎõuºRAA¥–dVt}•~W†‡²Z¦í¦¢•U‘á·Gé¢R?{¯JÙI½¬Šx;éW)ó+»Cd…¶³í9S‰D§×V]¨õ Uòuƒ¨AMjíç$½õêÁª5©gƒœ¿ù‚.õF¯e-‡†¹PØöÏ{ð‡uÃÑøÔ|§WÆ¥6øáÉ$òËÎÇÙo26ód¶›/È‹¾deÚŽéËå;(ód¸q4àÀ<™ØƒžL*mŸ²Jéú#WêH麪C›[Ña\*ÞzÁ Ÿ¬hêÓI…æèÕ,þ€ƒa\*ÓJ’åxZ4DÅ &µP \šé•‰Ýuk‡¸ÔV(êLóèLó¾mÆ¥lûàv66ÜÏp©ÅR#N²JO6ˆ¶ó,s{¥ àRo lU-)Ô¤Þ(ÃKŽXŸ_1hë —šŠ=xs²ªòû|¨¢Ô¤ò[¡Ø¨k´KH¯ŒKÍÐV“:L¯ük.õ¼ª;¨€¬î´Ý6Xž¬j²Á2@Ë® ¿GÑ€K-Ê[<@ŸCQ“ZTÌ ˆ!¿Ø*]WõãJOV•o”ÞWÄ—ú¦«Èêéªêç!ªRO m?x¦tXL…£¹¼þ5©7²zxpŠi;©ÛYö¾*ÿ¢/¶=ÁZ>Õ+~­6ëö úPŒ;=ç;Yù¦.õæv>£”O÷¸TVU“=L˜EÕý4’—ŠS” Õêe”'Põw([U‹8EÛn¯TKØ`(R h;\*ÊP†1&Vü“—zóϲŠ|Áyý‚¶Á§Ê°þ„ÂC\^Íl;öj`ííìwN-}Bµ/¡LÛy.•/¡ÊUV÷ÇOnp©ÅtjSé}5²ŸÏ0àR ½ú ¥ÀÉ¢#—z:ƒÝ”Á6èg¸Ô©WŒÔ³œ"HÖhx2ְʈõ‰õ‰õѰímŸø¢Œ4ê™ö¾t<@3 /#ðEÅ¥þX:q©c®ÔnÚÎÁ±«¾ìUÇoW_ìCò!¡¸2t^©t/;5Ø›Võ¡í•þs•¡÷› šØ×±£íFêÑ„éÔŒ0²Áù»^uk°(>LEꇬì úP´÷-ÃìÕ‡éÕÏop©5±*2:u·É¯%p©™¶¬î–É#ઉKm‹¾Ø]¬åÊý#àÉÀ¥VBa•PXUrlƒíwYéa(ùí}á·3÷nÔñDV¦í¦ fú$öÈåEYjÒäµ¹oÅf6ù .µÒh–L§ý*ºüÛ™²ÔÛU1©ø“ˆÆLP‰96vÑG68óT_뺪WjŽ %viHÛMNbh»¸Ôãè¾ VþJ¯(K½:2ŽÞ² l°ÿ.«:l$À lp\¡ }ñ'Fæ¸& ý023¤Wë÷/øÐ^—*Zö¤ítNŠAá·O†r?kQPêöW~F~å0Ò.ž y2µóv¦µy÷Éâ—ji»Qm¸p©]_0šF0nø™ä.µçe‘"«ð[ø ÊR“ů,Už ;ÅŸ4ŒKÕslõºªÔú]Vµ¯ÿ‚.µ*.šª‚äÇW-ÇWu¡Òêx˪="+,“öf!Ö…m÷§ L¸Ôªò:+î?òëÞPîœô÷­*í9Þˆ/#ÓÌ^¹*:Å¥ö¤‡IOUú„åî^.5C¬×b>܄ߦhÂ¥ÒSáÍÿwê^“•l{Ñçøn/±Û D¿ÓÛ„K­4¹¡iD+‹——ÏÑO¸TôêXßE¯"Ph;-]k‰Ó#.¤ ô÷­Ö¸EUØe—JªšÑ2rÀÈLúûZƒwjIFjQeHD »"•Á*ÉrŠüT®I_j—Зe¦[õŸ–3몺uîâqbPøí+Ÿ¡2—#´A^©Œ™¦_æOš®Ÿ½3³ùíöøÊÙžÔ¥V&=V½¼Ž­–×/ß Ã¥Þ|ÁV·ô@ìŒH­šKÛêÆÁѬÇ9ýhíÌõª ö*ý}9ƒ¿(C`U¦í*WéÃTÓçÏzœp©UÕ²GÆôÛ2À.ùä¤.µ*)ýPÌ÷+ÊÕbU²b~£Ù).Õ6Ø*M¹ÞcÄ£g°¤±ãÖZdÛ'_&u©VQ•älÿ88þí,.ÕTôÔ##.µáßíÇCÊ .õ—/˜Ÿ|Áþç·'4ÛÞþ»X†‰ß² åCÛMV‡†•Cj.¿ÿJÜÄ$¯o–€[ku©ª|IÙb§}A_VõO&UFU¿óß´ºTâíUö*UXËê÷²˜p©U!ÖRÕ‡©&²,ªßÒiÂ¥V¦cåu;”¯¢Ô¥²ÁR'8µm¿v)ƒ¢A¬_<áR«ºº~/+<zV%œF´v˜ø¾è©.ÕÚøà3$»¯¢p©|ÁT­$<»¸ÔJèëÃkUù Tþý ö¤Ž’#ЂnŠK-ô¿ú^V¦íÞž¦Voô .±Wê©•Cj.žÌ˜W½úqp|ŸÁêROzõÛ ^©•YÝB¬V©x.Q—ŠØï–ï_U7m§Y‡üöö*E‡ú¡ O¡îlûøï¥.Õ†iTæ4Vb™nÚÎkbTcU¨vý‚ +j'¤¢´ø=g’ÌU ¼&ú¸n0oœñdƒØvÁýψɻ٠Ú^ésYñú¿ ¸ÔÊ”h†˜§:Í2øÎ¶q©'(³¢ã ~ûD¦]©ý žÌ4ULæL€úԶŒ‰:ÍbMš/zãRi.T­-×Dè Ú+Uñ«jÍÐNÊà¸Ô:¹&dd©…¡°íjÞx”ÜýÐöÔ¶ã![_µ@¬ºÔJÑb?¾å;@ç¿&ŒK¥5MµªÆG4.•.Ô•2¨7‹ò¦°}’ºÔÓƒ—NËÊ zE]êù ,¤ž_Ú3©Km ƒ<¹&¬6Üï9K¶Áò¬¤íïyéõ {E![õ|MêRÛ¶®«ÚÕ'PëŠì:vG àRÏPä_Íò mWKòNÊÍQó;\ªÁFÅz£b=0òqZ]ª59)ƒÉÊ¿—i;/¯™¿ƒjWY½þL3Ⱦ‘Y¦íw–áÉÁ—ÚÉgè$!ôaÄzà8Ã¥ž­hâ æ'_p]Å~¾èO*êŠ}‰K=$”ÐO~]ê‚KmÛ‡2<]UþØ`Û¸Rg~UØ íV¿úñ]§h‰K=jö^žŒ^ô³næÉ¸_pmíº*ÓöV³ÝÎ âÉ0i§¥¯ôjmD ¡p¾qLìYͱÏïÄþaÛñ ÕÙ ¯¢p©ÍÊ &‘" $S”\jË܃”™¿áÃPùJ¯‰–yMø<\êͪlƒ1¨ TÊŒLuTp`òœÉ%´àRo¿`!ðëwnYÔ¥Cnµ˜Šâªù³èu©÷«²3PQ´Òé¦ÔˆÔHn‰@el;™NÆdØä ŸÔ[ùö§fñ+¹µ!±Ã¥ž ò—P¦í¼¼æøª^¿à!µŒÔ²Âo§ð¶Y*×2eðµ]\ê¾<™Âåe¶Ý…-zü6Ë £š£–òdUh{ÅÈÐѺµí ™gXвJØÙO\\Ô¥Þ¬Ê6øu¡ðÛ­€k’m­*_•Á6hÊ[ÚN_µVíà¬'Põw½jµãÛöÒ®zõµ5.uá‹’”þ}k{`UÚ~PÑ2ode\OV…¶¯íª Ç(Çð àR›Õ†3ÿç!¶ü«F'„F'„À€£UóuUgÛ¾Ò“U•eP´6™;\j«²zºªö¹AZ•&f%… î´nâ‘¶‹K=Úv¼.z‚™Ã&;ø¹‹ºTΡ_(y2J=ýåàøPÍ<™ö—¬|ºQ—ÚŒ‰#E°Ò_tø„‚Km§ÛƒAö‹”u©­Û5Aå ±!¨z£} ªÝ@ [í ”fs XË¡˜Ì¬éPÑ9ü¨Ú‚K=߃ ±6«›ðÌ–Õ¥2Ô¦ÔÖÊíìÞ.¸Ô³‘©_AY]*ÓD+½wR7Óç™nžŒATô‘¶Ã¥ž,Åï‘èG/WY=™“^deÚþ!ö§PísUÝl{}…ßΰ¤AÈa#Q.• 6²Xn3o± dÛ'sL&«š¢ÇôÓt—Õ¥žT´Þ蕯¢c»ÊÊ´½1F­¦>®qãÉ .¯Ás) ¢âRmƒçkâdÛ}YQ—zV†ù•2 ÓvL_Ÿ7Êà›>Æ¥&•öÔl¿6°,p¥Â¥6(ìÞìaâ7øZp©g(³Wý ž L\³ ùšO °íóCV£2 ûß:ŠºÔÌœ¸LÉØ`lxä8‹KÝ· nb0t¨1üþ ˸Կ”!¶*l»±á”mfbCP5²Á”y2vpðht˜QµèñÛŒ‰36\%ù3ž´¨Keàm«mûnƒh;’‹¼¾¡çÒ d:-¸Ô®ž™•³Í1ªŸÒ¼–i{þ\•ÅÛqq©@àùáRÙ`b`Y͉Xß @IÛ;lxWÒÔ–•UaóÔËk F×À• —Ú­Z¶•+Ô~׈E]j§Ksù²ÿ¢èϯ _ôø}K(ú22í”üöLjD§²¸Ú+5ø—Zûª7²êÈÊûبK½ÙàÈ·#¡ìP}rnGÓ­}ß¡pÛOFTaQ44¶?SvzÀÐß+Kê1¨Q«VݲԱ‰J=Zž|"{…[ãå+{%$s:7„¯‚‘Üä…²Ó!g“Þ‡›@·C¡ìôò•8 C\‡¾Ú¡PvÅ2c½ü§?šc‡Ò#ÕúšÔn_p=‘ŽŒèÁ£ûÃË]¶*ß•z¬åÇì4å Y¾jÚNó$õ€ÙZFÄŽ¶SîÌsp’g=§ûte©ïö˜¯ 2_qæô@VP©°²V²ÿª¬Ê·Ç-_eu(ëÏ3˜ÞG3mß>¡ŒOp“îw¨?´Ý”!¤í¢RmUç3h9S‘UA.uì-R†õ{Ø+¨Ô·b&3ÂŽ«¨•¥öz#öGPëºÁCj—/èr/cëÛuƒ“z£IF󜟨ßh»Ú%äéwhÛ¡ÐöÎ=¨f$»K WìæLíP¸í¥«k5Ê+(êæÈív>‚j7«jßmÐl;A5z£WÓo[»C¡íUчéáªæuƒ‡°3ö4,«õ»2Ø ­ÊÊR ×Ái§V.Ó86¨ÔÎØð® –jíÜÀö…¶ŸºbT Ú(ZÈ T¥P¯­€ •z^©V,ë¶HÙ¡ÐöS¯­*WbkƒVeΤ[Uhƒ´ýö{Uí‰Ø-™ù‚åú›ß}s$¨T lƒÇ@˜èJ%; j"Y_“áRRÊ¿¯ê_xƒ¦í¦¢F楬.”y2ý*ö§«jŸÔq>@ÃP¤·wÂ;RžZüÞÈêÇÁ ÈÊ´`æäí¬ùÕss{*ŒdT*cºjhê••¥Z{†“O ˆ·3vé^V®«–²Ùöù˜ô^UJžÌ`zÌØÌÙ6OÆ{þÓI§ß“I”¥ž¡P¶ªÀûï«2ÿ*5€j@ÙEߟ@M ÌU³Uálû )‰q©·P´)Š(C1Of]•!ôÊ´änׄ‘z(Óv¢j'ÿj>U)WYµúåÁ)¶ý‡2C³š¿åG¶e©ïŸXK~e+æz5ˆÉ4¿š»¯Oöªù)‚ .ut,ƒÈâcèå[Vþ+.uП~A×6ŒÌ ¬ÊlûÝÁéO6hžŒ]õ;YÍ+”y}‰a›1(òd¬˜ãVEý@Š•¥6 Ôtœ¹m G‚K½±WǬÑ÷ôm;\ê2+-‡Z¸Px2Ì7Že4ôŠq©ÈêP̌Բj7«ÂŠÂyµ¡—z³A;81(´ºt³¢ã ”ùívÑ£ ¨h|Al{·§¥Y†Êª|½¢Åï=lx@E—i;¦O*šNžL*sã¨e星z5Ý^#Á¥’Òüã\OdU?¡ú—P¦íÄd”A÷ª_¿à!µë€BÛ üŽiÊ€×çËŽd\*ÙÚ†[KóïìçɤeÚþaúú0²Ø_e¸Ô› Vò_+u¡Ðvxç…}Z•/«le©½#q†LYêÍªì ¶æ¶Ìܡ̓AEô×¶Gbo7Ê0? ’¯¢.uÐâwP‘Oã–éw¦Ù¡Æïz•ꞌ…£]šæ~¾àºB™¬ÐrlÕƒJfÛ±WÙ>i»ÞÉp©'¨þ%žÌ4½JßA•«¬~¨¨Ù+÷“áRgBE™+Õ˜ÿóOë\(êmªQ.d:BWŒu;.”ãÑ-øûUÁ¥žŽ37NçÆñ=äl\ªÎðª“z‚2m—S´tM J0ÆôSš3e©úlªÊü_TVÙl;)6\tò¿ \ê´ªÍN(ì$«Àª P:ƒÓŠû{Eƒ :ÿuU(´S£t??g³í¼O–Áô*ðÑvóEO«‚ÇñC÷9£íŒ‰{—ü:y :ý«öv¡h¦î‰ŠªTA§æg±fÆ¥.}Á}3õS¯Ú^Ì“é7_¬{wNË%mÇô™¶ÿ02¾¬ ~»Z¼ä¢ bý S—Z²XËNËcîý[Vþ=—º4¹"-{y-nç€2À¥NkÏ`ùíäÖ¶€'S̶t"ï¤WŸÁ¸TÅ­^W€¢šCS‘íÉ ùýàôjýþG}ôiñÛUÜŸ&‘¢ kÙÜq^#Óâ÷ …/š Ê?ÎV—*Y /±C¾r ³¸Ô’t;O:ˆLÚ·Ïîgïdq©Ömeÿ¥k2ÛîöÆ.µŸ p?t;÷@2^¶ºT ªj—NP¡U«ØûTöÎqµEU´~h{íV¤¬ðNì Ê“™VntøíÕŠ8²q©rŠ ª'òdD2ãR3Ž2s¥ò)ÉÓãP—:5­ýØêû â·»mkG†K½‘Õ à¬ð۫ɪ^7ØšßÒ)—ª‡É±­÷ªô PY\ªçÒ7;ƒrkKà—š7QBÇð¿×=Ȭïé§½eZüfËã» Ê“i íi™Ë‹î› Sî°KŸ!÷¨ˆ¶S—:iz:iß>éy;÷|•Õ±ÕŸg0"«nÚn*j²Âo܃p©S5¼»mÒ5Q·³Ïðfq©?¾ â 3q; 2\ê¤ò¤.õÜL×· p©“<äɨÆY * WóºªÚnöÊ¿èÅ¥v<ä—fkƒý¬ŒKͦW&+z¡ޏT;8}jdñS(l»Ê :oç @dUþ”U vétíÆyb¯¬.Rï¦-ƾ*ß Ã¥NjÃ'µá3ñš(þ—:‹YΠõOõ;ld¸Ô›U5›Á5²Õ¥jXA©‚ª™üÍ/¯ËÆ¥Þ8Ó§Ñ¯Ø …ßNrꕚ¦½qgP\j¡}AaäKaäKlƒØv¦jO=ÃKm¶*_E­.U,4§¬¹ô'l¿CýXUªÿ.ö§Ph»UKžŠ}òmƒ¦Wé ÔúsUó”¸ÔCØé‹V…³ˆl‹K-Œwþeƒ¾Ø©K=oݣ㠗:™E9]böH$~—z^Õüê Z]*íV–]©Ù<ß)—j_ð8y™oYŽoéB™¶SÐýåd\j·ë©…H¢W뺪oU´À¥NÚbÌñÕ \ê{ù/|].T¾Ê*M‹ª=ù‚e+¿Ágb/›i;ä‹ež6èªhÙ>´ýØj>Ör<-ýÞ.•  ³Õ°Ø‰·3\¥ŽüöÀE_¶yÝàá=dvXì¦íÄ Ñk<ìÇúеø˜¾1¯P¡/—:•„°[)k;FRºÏ¸Ôƒ\‹%ãùnmIfÛ P„XçÛ^Ò‡'óã >12Ô¥Þ¬ÊnœýWŠx{ù¼&88¯ Ã…²Wª­ªŠ=piñK(ìx¯¾•¡±*ÿ Â¥¢WÇZ^²¢[ðôã¢Å¸Ô¿ B„K½Ùà½ò7—º(&]j*_ ƒIgdUÊø-‘íjT8ÚûCÕOe¨ß)C6mç¤ÍöC¨þ×<¹je@Û?Ïà˜j@1Í¿ \êÚ¸&*!V:˜m>ÕX¨KEêûÆÎ€¾7èd¸T ~¬ª?Ð+êRM §=Ãý÷`)¦íûR^ß!¿rHÍ…*7Pã*«\*õÎ$lÔ²¥'PD i6;-©ðNLì²íeûŸÅ>€"~¥ºÔQT‚RQq©µhäËÅC®¾é+fÛPõ« Â¥®lPƒ/Hrà8×t]Õq„~äЫy2Uå¯dUËÊnçCYÃPp©F¾Üª¨ïUÓvB÷¯¯Øåå¸Ôų*Ç™ÒéˆYMÛÍô oà—ºèåu€¾ÅÐ+lû§Šö$ÓRQÆ¥2¯O=-ûäa2ýŽ@…ºÔEïÅ<ØÕ¸»¯ âRk¡Äµ˜AnvœýË .ueƒ2ƒ<ž@™¶$ÿTÑ”<™›k¢OÞÎx{¡Ço³’1‹·W;8U d…©Þ1­j÷Ÿôø=ëÕwÇ™q©‹a›ËˆõGÇÙ¸ÔÓl7b÷e—º(q]”¸.t+à·wód`xíólUæÉ˜ePÊÍûr-Ç=íBáÉð0YgMs _ºÔ›/XK¿j¾eèØö4¬ ã Ò ²ß˜·À¥þyãÄ LÛ± ö\JÛ(züòa¿WÕ|AãR}5#CrÀg€K]PØ\}j\ê¬~O§2̶£íÆð>RQêR6Îb·/軵ôÇžáÏ úõ à‹ ¢íÝde$üÂ¥¾§3'@3·Ð{ƒ¾‘¡.µ5b}´³›§§¥Òã÷fƒ=ÑW-²A¸Ô3Tý O&q;·þ±Á”z4ÇM™ý×z"«ÊªÚUVûúˆõùÄzK]Ý´½¡Wý T(C Êlû‡5ÛÞC²2Û~ç_Í'«ZW¨ó5Á´öÔÚnd5¾ZãRѫԬêÊ5câŠÕ¥žTôî8 ˆ@Znmçš° —\*Ç9-FaOF€N¿ópK]ö¢7B!s;û³Ý u©‹°á‚PXøm¾³ —úôü‚RÑ_ŸÛ9à_Á¥Þ¬êøï  ÔOÓwÜ3?®‰ˆé«›Ùv ,ÑšÉ`/X—zÖ«ò•ü2ó —Ê$ôÏ%² ƒ¥*\êŠþP†ÀÑv£ÏÚçÁ X†ºµ+”Éê-ÇV](´FË(¡ÓÁ lp|Bõ/¡LÛME×wPë*«*J¤È?ƒU\jÞkY2d&lè7¨¯p©ïiòéø3‘ÅM¶Ý!Wq©yÓxç¼ÙEÏH”æ÷²¨Él;îGÆŠ»¯¢É´]PÝzY »{Ñ×dÚÎ\t¢jSÅóßœêÐö~ÊCV׈£t+ 5®b¯E1™ý *˜%T©K-´þ+ÅT¯¯¹¸šÖï_ð!”¸ÔZèNɪöo9ž@¥¨ôݪÐv£Ï²iû5.UñŽm½Ut{²ªÊªgpcUéɪ²×/x¡r!Ê<S†ññöOýåß8Ù´ÝVe×Ä#(i; !“Ûù>Î#Sî´ýã8‡”Á¸TZÿÝ™×J]¨ÌáéÊEaȘþȹ*.5¿§3¿U”)wµ»¾ØÅ¥æ¤©Úý”I~rk}ÓǸԤ Ðô …Sð¯Ä¥ÛzA%MËtò‡pUãR5«ñø)«æ»ªÔ¥®UÙ`»YUjiƒ#sšõéó'U¸Ôyªä=¨ãüj áBÁ¥2¿º û‚î‡q©‚²  ï  Êuƒè?±SY[=äÖUÎïUY»ßÈP—º*jÙ;Ì]~ë¿ZÑöŠØ™‚Ñ(œ½¢.uÚËëvƒUÍëmåÿ{XG_+Hó)&´ žþƒ·6üv Ù S0 Ñ@ÑJ]jT߬ºŸU… ˆ@VÈ %ĈÌÍŸZž sL 5 êßH OF ‡Ô2Ÿâuý&{U\ê±WVÕž@õß¿à àØÇ TºÊ*¶ª Ô¬ÄæMyȯv?.”i»g«–å¢UÙ®«²ƒóPV%}¬ê¬ VeÚnöêK(´=sœ- ÁR#|¹—šÑöl«j¬Êÿ‚ƥ¦ cboœ€'—šŒ£'5¢oåÉPX†Œ½²F¨ù;”­*&«u£ ¶Áþ@VmW-À ŸÌdÐð¬m¯é÷/˜“R#öU¹“VÑv+¯³ÜZkÙí³á­¢í¼P‹Ú¥@¼U³íõ÷UÅÄn¶Ëp:8e@õO¨íK(ÓvÓ«þÔ¼*Ãþgí;Y¡í{}Ö­ÖÒ¯>kÍ´ÝVj=Éýx{ké÷UÕ2ìv¬ mÇ­M#cÎvdƒD ÕÆg÷¥¬ŽªÑY4¸Ôóªð¯ªÝ8¾‡ —z³Aû‚1(´Æ$žë ¯TE w›¬ÞùÇnºPóªWhFÃ^«ò>7¸ÔNÿö¹ÌÈPã§F´þ¡íçUÑMwù“þZ7Ûn½¼¾µ=‚BÛ•ét܈?®ÔŒÞºy27VÔÎ`@ì½^ee–ᩬÚçªê—«2mÇ í;¨ñûŸ~A´½cúº™¾ ”ïu´]yÈÇü^!‹Àí¸Ô› Ö2pÕüÜÚ—šà&4GšOd—z†Â¦ þÁK½Y•}ÁÚN(,YÐi<‚ÂoW£Ë].ø¢šŠR¸ÔdÜÄ 8 Né!e—zÈå½*{;›/êäÕ¯«ÚA¿\Ú>p §­Ê r@ìžL-dü>;8 mïùFìาêÛö Õ¿„2m7+Ú¿ƒÊW±×2q mĀϥvq©ÖÀëJ5RÏüv¸TÆ]í›Áo‡Â^¾'Ó™—ZLVfÛ3N‘ß‹µÃ¥f‹i’r-±û]O»¸Ôœ ïdqhJµK]LÜþ+_7¸Ë* v*õ˜pTLÛôÔƒ—züYBBùØ–Våš¾..õPÌ„ äc[‡õ[+w¸Ô÷ŒÒ—Øív¦Z¶ûqÑžî´‡ÉéàøbOfÛËÇ\›YQ÷vî ÛNrË׫êW½:´é ±›'“?6Ø5>&¶AÙölM«æe¬J¶ýÝ?â-«Á úlx—Z²‰]Ñý‰Ö~^_‡K-šx{¬ï½*ngŸKíÙ´3¸ˆ3,3}¾2X]ªÚ—ƒãg…uãR5uúØêuU¨ö»Øf,a±“9“¥í9g3ȱcÛU-›³ªes¦cúOË—z^•»qü‹Þ¸Tt[FhH¸Ê@]jWœá(@|­Ê¨úe.•²ÍZ–]¤Fø];\*“ß÷µàɨSúlþüÁþY—úË«:´}ªl¢7MQ;&Þ¼‚ çT–ªÞB=ÃrôGRÇ‘áAŸyÐW¨Ô@?Â.*µõ‚§Vðµ™0° •š ‹Öͤžž¬JÊž‹m0ëÖ'•ÚºŠÏú&#ºÿ’i/~‰I7*õô.ùˆX¼.»Pùsƒª>¶ú2 þÈ—•z#+{ ª^õªV:JV#Ã#P82*wn]ì‹#¸"PýŠ{ÞTԩסRQÑns–u*õƒµ*5«{Afúq¦x6?ŽÒ«iûDì\η=à©1.µn8} ë´Ý|§[Yê°Gªiûƒ`m•z§ §UE”ATê±­Àû ¦'P‡¶ê˜È¯ï¦P_÷ûtQ©@:Vð¶½Ý)Ûuƒ/Pj\ÅÞW¶·=ppÚ‡m?LKæÂˆd£R AµÓĶûÍÞ:Tj&¥¨ò ¯§úÚ•Ês†Èm{²ª;mïÈꉽêfÛç¿çå·ºïP©›jI-éÞòa#I÷*5‹0Kó4ÆR dHÛ»y2±›¯mÇÙ7ÈP©ø¦ ‡'õû¼êÕþ«£Wõ‰^­¨õß§ŠúbwÚŽ20ˆ&…¶«Åï˜z¤¾6’•oE¡RodõtUh;ùe§/ø OF®Z©tþëæ_ùå8ÝÊR‰ûf¥õ•ZlU¾ŠŠJ-U/ËR¥ ÇúÂPh;]|ºy}–šWYå,®øÇªʰ®²*µhO6(*µTùW‡°3 a(´ÝF€~© 6.õô)–Õ{7¶ªò»^åÜAÕ+Ô!ì|Ê¿E¥ž7x+«Àª¬åÙßj9°¯T™\+`§iûü_õjþõð ŠJ=þì9ƒ ¿]íÖéÜÕâwdŸ ïV–zR†Yõ-TƒJÍP©yÚÝY~þ¾LÛ):}ÁôdUfÛ¹qNëO¾à“Ûï²z} ê泪Gׄ¨Ôàü/* •š©2¯É®T~òN_ë÷/øúnG ÅŸ3¬,Õ*Õ¶¶-ø„€2 ¨Ô¸T¦¨e¦¨Fú}Ph{º»Rç±Ã¥Þç§²jŸ«ª_® m¯fÇwPh»%lXã›\á—M ¸ÔÓTüêXé[Eý38>´ýXßkUÓðdÄ¥ÖZð•žÔ:-É7?rÀ¥–†½j˜¾n¦Ï÷(K=Au3}ã ÚÞ{7½ZO Ðöþ!«ã„¡ðÛE€vZîß-?ЫiÚn¦¯"vÞÎþì‘1MÛ98–Ê5ðdütcš¶/ ¶ï ÖUV‡bf¤V©yPÆ¥ÞçGG\jgúñþ‹,ÖN\4pœáR‘ÕÙôYšn@VâR›MpêJo?éUä„K-íã >]UûÜ`#RTž(-~»ÚlïÛJ7b÷ÝZÊRË´ãlÊ@ÙDà8¯y]•©h{çA•c¥.¶lCúÆeúÆEŽóÜ><™ÌhާPÊøå žo3È~¯ —ŠØ³•ZVËôÅ>)Kíj±ÿ\ê°+Õ½è'\ªÕG~© .•Òðc«ø0TÿÊVÕºßþjnfÛûuƒ}£×lõß8.µ@(‹!—G«ZW±·w¦X>$ÿ‚Él»’‡­Ï¥)Cdƒp©çUñ gDUä ŠK­µðv¶Œ_«çö+òg2OÆ rûŠüv:i-¦|,݃cùUæ.•"ì\hQìvöÛ_M¸T6xvÕJ²ÁqU†Ö逶¿ÔÂ…2mÿûÓU­Ï »Û(q©?¾ =#_"_0§ßeuÖö€¬(K­ŒK­ÊÙ6úlùµï.•3˜)X¨W™xû dq22ë ÈÑÿ’•ßÝ|—jqë±g}¦¥2.õMš½•a݈Ýu?&ãR+câΫ"†ì÷÷š6.µIV˘IV#û!‹IYêyUø –NéfAÛé±WI§\ùÉ—ZUìP;S‰ž}A¸ÔwNÌKV÷o$y?ÛpÂ¥¾Gu§×/\5:= Ÿ¨šÆ¥búÎä¹°Wp©SáèÞUz$/•ׯÀ4mßX)‚ ¯Ïw¶§q©’ƒ“©È/>ï<˧¶w9E/m:¨F¿JhZ]*­wFãÃĹÐv¸ÔÊØðfM#˜døotˆ …mOp•Ë«ñˆó#EÓ¸ÔÊ•ÚX3?dVóÛå‹6!œW€’¶7u/hƒU KÆ‹ˆ½#+]ôdï”l=üœ¢ —J]ɯÑg+`d*¶¤ô!Jh6ýÍ„– »D8ú”žÄØ¥îëÓ¸Tµ²8@ÿ}AšFìôWE]jWíÒÑÀâµ*ƒ Ü8p©t©µá·Ó5ÿ_WêÐö’ôˆ+IFæø–/ËàG?¦¸ÔrªójU½,C Ь°ô·¬$&³x.1¥vQG(œÆ¥.t”ä/’ñB_p^õêP‹ÌVÃz%m¯F(0Û­Z´6àlw<(ìm¦Y… ðdº‰Ð=³G–߀b2.µ*Þ^«B÷Õ&ƒm~èd\jí²:¶ú†ò­(\êIìr?lU­û=ö&\êù rM7ê¿+Cëš û‚Øöbb_7ô//¸ÔJØ¿=× Õ¢ [Çyÿ3Îà£ã —zÚ eY,ÞÎ~£ô —J2W8új}?d\ê»È'±–|¬%®¢£Ü@YT퉶[]ª.¯ýÚ®ràýÂöß΃Wêª×UµN×ü@å˼R­UتŒq©÷×UB!½:´ýPÌt|ø÷=HC ØͶó ·fL}ìþ¬¤9MÛUUoß×B;d?qqÂ¥VJ§«žƒN³ùÕý.õtpŠYû‚¾¬àRoTô¥˜{@VØöÁ嵡Æx;h`ƒØöŒéSVØáà¾7è¸Ô”uÍ—ex}K Û~ªwn¬J7Îðëè'\j¥uô ¬`Ð{gøu^“¿@r Ke*QŠ¿¼&~Ù ¥R—Ь2•Åh9@]¨|]U®šˆòtƒòÛÉ­=¾X•ÙvÞƒ’U®Ðg¡U¡í§ö„£Ç½¢Åo¥ N¼Î \j&a#›'ÃÈ—ÍŸ&:­.õê ˜ŒoEÅ¥dµ¯ÅŒŒ)ƒ²XâRï”ᇶ»_pm¦íåO½rβºT£„6üvõ{Žˆ}Y]ªªeÛÐl·6ôGòç+.¸Ôª¦ ‡°ó!ì«2mŸ¿oðµRª_euœ¼/”mÿ|ZîžÌDV šmç »¼:«roœµ­«Ø©]MŸ/+«Kµ÷àfAòíÁ„K­ÔÑWéÕÉ2¬€^¥|•Õú*$+¸Ô »T'®šœ¢ùoœ ežÌ‡­uØq@¡íŸNÑ4È+}Øö}-½ÂŠúqÑE]êŸ®Ú Ô…š¿¯ªol0´*´½Øªæ§ØýLòE]jU­e{Wf¿ÝZ’¦üÞE]jµ²ÍS$n"¶*´½Úk"ß(ƒo¯r¹®êØÖ{ƒÐý~ÓªE]*tû/%yÖúhUíó –/¿ i;ׄ6žB2lÛ™ºÔJ F³Šªaþ•¯íâRÛ©·ÿ™½¼xÑû˜u©7öj‡’eØüù?‹ºÔf•/°áï•F7H]j](ƒ‚|ªüe«jÃO\âRK†¨²þô›RnFñƒä«˜mŸ7²jOÄ®xûPUãþg ${¥úÅï .•UµAVµo5 ö‰2èJm›]©„,V”ºÔ=+C@VÔ¥¢¢¶Á‡Ú^?´ý”‰Ý×+ãRÉë«ËLWª_Qµèñ{‚_BaÛ—©èøª]eõ‹eð"¸Ô—Ú¬\e°íp©<äf‰Ö³X•2F²ƒ£Ìítœýƒ—Ú¬.•VZ#õ„Kmp©-aEóö*]Å~¬å½*LŸÏ;/q©µZ¢µmðôšðÅN]êyƒj×ïÁ€A¦.õFV&öÚÞ’ÁG«úÐöCj?´=¥xûŠ>û¡í»æ¨)è¦4’—ŽËôùÚ..uß öD¯Ä†âÏÁ[Æ¥’¦;ͱ™¸èK5¿Dëazå'.®nž og‹ª=ƒ»4h·2T?¸oËL_@V‡¶þA:üƒ#÷CtsøIS˸ÔusyÍôdƒýó š‘a¸Jè bÛӇ؟®j~l°%îÁ¹=2¿3HžÌyƒ¾ß>þÐö‡²‚KåÆÙ‰Kmê„ðR*cx˜0lKæù>u©­š¶ã_‘Œ·üt .µG22vp|ÓG]jã•Ú(Ûlöà@aÛ-ú±p¶Eê0ÈcܬŠ{°˜‘ (Ãü}ƒ&«ž -Úš½è™ú‚K½ÿ‚åë\jg€d—mŸMÙ;30yuÁ¥Þ¯ ¯ÏŸ8·¦y2æ3à@ÚqŽ@™'cöÊÄޟȪ]7hgðéûçªÊ—«2mçaŒӇPh;,@³D fÈoÅ“Y&+”¡ØôW%.uÿŸñ¯Ôs`ÿ…éós¶\j³ü«e×D°A¸ÔÖ° ÓןȊq©uÚílÊ`DU@Võú€_° Ô΂K½Ù É*…¶7޳eÐ1@2…ßžÍg`Ue{"+^©j›hX>Szå{2Ô¥¢WmbÈ'õ”anâRï6¸C ôÊ»çfu©v‹=Ì^y²šÛf¯ÔyÕ«c}å€w¡°íåCÛŸB¡í§+U}?𦫠¿§Óܶv]ÕƒühUýªW‡Áˇ=ˆêÕÜàR[ûÃ2ÄV5?7ht$¥‡ ðÛMEi_p¶í^ˆunV—ú©¢®‰¹‰K½[Õq°£'™'#§1²¸2ªÑO´ž[2mWVXSÚ[c¬åœnyÝÜÄ¥î[0{Í‘Ÿh;\ê½²U½,— Õ¯²:$” ËŠx;ù¢£H)vpÊ€m·pµªá7C›\j‹!“9ÜÌ̹Á¥òÆÉÍžá ¿Ýp47¸Ôf1™—Ь¶Àq—Z—^ôûå Çæv–À„Km°áÍØpšÀ„d%ÛÞU-{Äÿò«†C“¸R³y2\^§§%žŒ›¸8·|çÉ'S¸#4m¯7_ZÖMÓ›Õ¥’ÒÌÁ± öRs¡Ðöv§¢í¬àR¹¼~œú`ƒÆ¥Tû ÛnTã*ßA¡ídü65æµ'Àü×AÏ…2¿ÝœmBm={û]V¦ !-ýºªCÇŸdæ¥R~1È(<•A6âýí8û=\ê»ÜöEaWœmfçú-»çF]ê`äÜRœa?y²¢ÉÍ$ß¡ä·7[5¼CGqûÉìP¦ífõ ?—û×\j£­k£­kWžLLVõCìM •¹¯àB©WõÎm¨òåàSÂì¬*³*²Âff—µÜ¡ÆŸ_x»›‘27zü²ªc-ùX‹”Á?ÎâRë„w^T¾¬eog_¯˜—ÊM즢ݯµÜ¡î´}»Êjlƒ —jʰ,=‰ÛÙ/~ß¡Ä.½ùЦPU«RžL•8CyòÅ¥ÞɪÚ“ᦑÌM\ê/¨.7›RåCF†ºÔ¦,‹/{ìPóú ê©Ø×uƒÇ¶ž‹½›ßŽ…µ\ÉTÔ¿Å¥¶©Émj²Cßp¶·Àå—Ú7ÅúZ'.ÊàÎÍmý·ÿ/tذN\©Í2É]¢j‡ªˆ}Å€™zÃeÃw(<F¯¾»0^W€’mŠ_ +šHJ_nßj +)CZ2žÌ8ƒÆ¥Z׈ÏVc‹ˆ¿}mW¨±ÕúÊêRYU³´·jz€‚]BE ot0‹8EôøeÒß.vÜÚJüÊ%@ç—Ê3Ãݬ-FLVýdŽïöZÕ©-†ï~—º8ƒÉ ¶'Pý eÍ:õH™\ªmð¦ïÇØgp|hûä ΡÚð9ݤ©¹‰K­]yÛ¤Cl±þ:ö\*cµ«eÐ5¨Æì¶*ÛÄ“É&vR¹ðE·€ŠŠK­ƒ<™ÁÁYz†÷Ím¥µC‰]‚K­–°AVXßÜ~}sƒK=ÉŠn$§³@L.õ µûöªÿþÛÐàƒØĶøí4 ` ìØÜ©=sƒKí üVãϲ @áÉ(#¥ovÑó\ŠlP\j!¼SãDŸéÕ"ÞÞHn©Ÿ«Z “¸Ô6‘í}Æô{ÐíPd…YÈBºCjo¯Ï¿áR»Æ‰îßr¢ \…Õ¥6’ÒE¬•ï úäê7z…Õˆ~¸}Šv¨qý‚‡•zÁñä ’Yñ¯è½sê™ù‚ÄdhŽMþÕ±Òr¬ÔJÆ¥*ðûcƒ3¾ªD]jÏf&¤&Îm_°Cå½R‚Y‡µÜ|n"Á¥vÝ8û/nKBð•!m¦í™ ®ï LÛ­± U*èîÛ9Q— TfÔNîV¶éûí .•Ñ`™¡6¥vHÿi™àR»è³Rm´ý3(´]-D #2÷_O ¨Keƒ…×Úh$>ü÷`¢.õ´ªo¡ÐvÊ ú lhyÈþk"Á¥Þˆ½ f¾D”ÁêR‰·Ÿ»'Ù=諨եrã,}Á±YÒ­Ú¡˜…ÝíàØM۲ʊH‘ÏM$êRiëj_°¶ÂÓ2¢¢x2øíC–¡ &Ñ$·ÓÔLp©ÝúõYÏG_0›¶“uÿi¯^+u¡x¥žìUýê fÓvüvæMŒÎEï6¨ß¡þÐö¾ÙX"?#%åm¯ÖØÄzÐ…ÄŽ'sÒvžáÝœmÿJÍã*«ÌèŠzê‘™O¦ã‹vód«’¶å3ôMQµ¾¡íÅí=\j'ÄÚŠé•YQÿ Â¥öÁE/J(Ó)=¥W*É-ÇZ~Èjú ¾v¨r³ªÂªLÛ}¯.õfƒ&«¯Ô×§ŠõJSДlûÖ·«2 FÆ”aü¥ Œþ'Á¥rœÇÖÌ­¥1¯“IÆ¥jUÇZò±–øE_?´=ÓHüHT9Û‹žºÔ³û s¶žÌç=8h¼¯Ê72ôøm¥Ü|A”! WÆ¥ÒÁ¬SÑú@ªi{cUå;¨þ»2öômEDÛáé×W›¥Ün«K„,:®š ÔðC¬©®?”aëèUà8S—Ú—g\µ‘lºTºfš7fš7Æ òÕ^ÒHº5U(n»•WŠÖ¯«² ¶áS©™mo7²jOÄ.m§~ð(aùŽn#ÐvãR‹i{½®ª˜¸ÔLÛe¯hCýÐÈ´?üö³2Dd…¶¯ ód–Ûw¦n¶g™½ÂÙvøw¨ô 5¾„¶/Ó«þT¹Êê—ãì;ôø”A Ý[2 ¢p©7VtXz’_7±CÁ¥RLJ£€6ä3ÄV5€ÊlPöÊêèCPóª…é‡X\êͪlƒ!(¸ÔÕ8’©è|•þ»AùW*\ê=Ôz  ãCÛMEóHó ”&ÑŒÁËkðò²rÀ¦í7F¦nOdÕ? N_ð”i»™õÔ¼~ÁCj©…e…¶SD3Ì^Y+­@ü .uØ=8í Ú5á+u©7«ª­ë ¸jÔ¥<äA9ð)g;²Áò;”ɪÀ=(.µqô>E}ë<Ün$;TûÔ+jL†&ÑŒ-"+³íö*ŸÚ­D È¬åª ¶ªàR\êàg9Ky2»«æ?â¦Ùö+õ¬ ®m?tü­íöšðWµÌ¶cdìwÒvÿ8¯ü •¾„2m7½ÊßAÕ«¬n-ƒßne‡BÛ)Á€áÝWe_Ð?8ÌKšp46[Õ´ÇWQãR•«ÖÈU›¥rE Ðöf·³äúdƒh{Ã^QVð†Be楞¡ð¯Œwöm{†K½Y•m0…¶7ìU3mU®zµô«^Å èhÍÌtZ¢Ï^W¯ Õ®ÊÐÆ„¶U¾^åWj5(^©ŒÄú2\êyUwP½"&s:8¶ÁüdU°Kµ]¿àqß_Ð529™m'Ë¢¶ï Ðv‚™ÃZJÚd‡åÞ89™¶O´]=N½;µg‡*× þ¸qú“ Ö½"RÔžèU2mÿûÓUõÏ *#å Cß7øðà¤Û~|Ë/¾ UØJiþåàøPâRœÁ» ºñ«œÍ¶ÜÎcc>ο”/ m'~5ŒwfzݸT¿hô½A_àRÏP܃pg¾Ì —z³ª×¶@¡íUÃBa–¶»d¿Vïìsô™¿÷På‰2˜'3®Ê‡¥‘  Ú®pôa†ß*JI@Våö Ïµ½˜m¯Ÿ_ð¤í¾ØKù„j_B™¶Û•º¾ƒjÉêtÄŽ¶Ó‹ÕÊ©–ÝŸˆUɶwù mY‹6“¾zô¸Pª]j–mhã®Í}4Ã¥±Õzï,{†V%.µ6»ROÊ@†ŸÅšáR…·Cuôǧx+C*ß@qãXv m·ÝÂoo êïzÕ†²£Czeu©êÕævÜ¡ú”Éê¬ (<ú~œW¥§å Ø«j¶]ã†ÇmÙqv£.u SQû‚8Û Â¥žì•š©¨Ñ·t³*žák<"¿]zõµ‘—Z›½¼–­ Z6`d¨K=Û«þµŽq©ãîòz$+Ùö¥/8h:]þƒ.uÉ<^ÏpŽsJÚ>7<†œÒ&± w¨ÍÌV—ªÜÚJ F:8mº£ g†K}‡SRû¹ªÔ¡í%k<ß e˜–žäçÉdãR¡Ï&LÜL•UùFF\ª­j$ w{­E_Ð×+q©û¿«7«IEʯNg.TÓq¶N¤‘¤ÓÓì’ÊÌÂà·Ø úåÀùT—jb7(SßÈÀ¥N5º<ºš½R#ˆ·ÏÀsI\j}×Q½dE Å6˜Pp©SäKmÃ6(+šÜ¶ù;µKv¥V ²˜¸`—2óR êË‚îl\ª”á¨Ç¾ÈÊá´CÕ«¬ö_¤rY7’ˆ¬dÛgÆ)b×djÏô‰ª —:-ííÛ/8X•mP…!“Ö4!(üöazÅʳ;]e‡ZŸ«RKÉc}ï3èA¸Ô› š¬bPéª ¶AS†”:Z'5 ‰Èv’/:ý G;”*õ¦ì¿PŠ_%¿ª1Ol{‚KÕ+Õ¾`ßܱ;6H¹ƒ )ƒ¸Ô󓼉é*ɲC 6˜ÿ»\^Ýj-“;¨e‡š¿‹ý_Xìx2ÃVµ]¡z Þ9/Óvy23›^¥z—:©‰›Ê­=®±·m÷•.Ó7ÒÉg¨¬Ê—\ê”^}4ßWêbU¾Ï—z’õƒ³Ô'²jÁãìû p©7*úCÛ}e^*×ÄþKI“´·ä7bÊË´ýÆëSkÈë[fÛy˜Ø`)Ù«ˆ2¸ÔI÷ïI/ <ä‘ÜѳÀ¥NÍPØ%T¾ƒBÛ!@W·‹^ŒÉt›ùïPh»hÙ_ Ü/XàRYUyO¸Ì€†W…'CÔ$Îp†rN¡.• î¿êwP‡¶w¶³2ПÁé»CÍëoÅèžT¨KŠ3|-öS]*”Ì+UÄC„Kµ ¶iÚ.{•üEIfÛ²À¿‰vÁÉïzZ’i;7Ž…X•F;u©Ôˆn¬¥V“Uûª[ñ{©¾e8Õ¥ZI>ÁŠ”§ßã·X]êI¾„BÛ™x;™xÛÄÑå.žŒÚ¤…Ȥ Lò¹‰B]*çëãœMÛ%«óqÿÅÏ`6Ûn_ðã ¾6íB)¹º]ôí»UÕ«¬NFæ™e€KLvhd¤LúÉÌ€2X]jã¹Ä˜ec#«Â“±X_æåeF&"«yÝàú*¶AÓv%.¦l¦²MwfñîŸmW¨6ï üôï—:‡}ÁÁä=Ø \êì\ôÒ«> õ<¢¡™Xd0.ZàRÏ«RÂì~݉!;Tû}ƒ&«ž ¥ÓÓZ=ÌöjÜ蕜íÂ,¡2Ì?•Á´=…¶/bÈ´ÍO™'€¿*Õ^©ëfU諪ھÿâ§b‡Ùüä–—zuLXCáÉL®ÔeÇy<‘U½*C#v’UñkâJµ$*š¹&HÆ‹(C5m'˜©UO¡ÆUì¶Á‡$\êœ<â˜ÚÓ–Ù+ÿ¹$.µ!«¯µ.õÆ¿‰¡6É1PàRÑ«c[™•F7ØÐö‰ß®\µ> Un ˆ30eºc‰v¨úûªlƒ1(´}bÛ­ëé³U‘ñ{+vɪøM` \êý´Uù>ƒq©®*¤W¼RÍôM.z;8(q©íë»=8¾½¢.uvÂ;v¥®í¬z¾ÊêXßó3H]êiU¦WÏVeÚþi¯bPíÏ Ž'b's@ýþËÄ%T|Ó'.u¼ã3Xp àÖºãDw¨Éªˆ·Ÿ pŠüx{¡.uYkåEô£l6—ºÔûZ> ¥ÌMñöBÖ}ß’…,|ƒL]êͪlƒmFVUXÕñˆ+Ì|ºªm?‰ÝôÊ¿èǶÝnœ¶]tíÄjUýߨŠ<xç•Ì¡Ðüü«2þðd~èU`ƒÚ~·Á”q©4_^Ÿ,à ԅJPg+úÊ´‚#9ÛO¡Êï²2#ó²\.”´}ál¯lg·ÖÇP¨K}¼WÕY•ÙöTÿ}Uµ1óeúCm =~Äú’e8@Ã$s`)ú´ ¡3H]êͪLìm´}™m—/жöôµÁêû âR+3_ì î¿Hö瘸ÔE×Ó¥ñ|ǹÊÐý\µ²LÛ?.úóŒlдc>R1¯/ ö¿µ}=Y•y2 e Z{Òvß Ã¥ž N¦ïžL†|Y_®jý)+;ƒn\´Â¥®Ê«©(7Ž?Ž¡Â¥¾^«²!Õ\µÀªòï«ÚeE¬/²A´½& ôJ]µ?Ù ÚnY¬Ìjœ´¡Î>Ý_áRoVebß¹O€º™mÇëËlЂþ8†*.õñ/¸ÿ²Œ”€¬Ðvu´Þ)acQµÛ+÷š¨›iûÇåõã úL¦í„w*}µ‡‰{kú[Ûë“U™mçÆQÛü³¶Ä—z‚:™¾GPh»ROw€ùTûSVøWþE_©K] Ò@už |½‚K½12#YV˜ßֵ¥ެªvKö/úʼÔQµÔÖõn.õ •€Â) ˆ.õfU&öÚÞ1}LîÛö m§óð[ØïUÙý3(.õØÌÛ2àÉTód|ƒ —z¿ªö@¯àR98¦Wû¯þŠ˜ŒŽóý} »f³íåæ æ'b_ŸP˜¾gPÅ´án¢ŸB¥ë<¤–‘ZTVp©KÞÚÕ´j$ šÎ-U\jí*+Øgc2þ+\êb’òRS…c¥áUQ©GT­+‹µ3FmÞD…K=É*¡Wöðóë©.vIó&æfĺ?c½R—ÚåªíPŤ4‡6ˆ¶O¬è´ËK~{öq•ºTFƒÙõ•ã¸PªæX –ÚÄ;Ÿôªû¸*.ÕVu|€ÌúÞ_пéñ{u|Šr€ºPh»nœ}«ùcƒ‘ƒcu©'±“ßþHÛk¿®*[zÒ²„ØÈªÐöb«âgFÆOB¨p©KLܾUEŠúÆÃ$pãTódò{õpƒm»‘•jâÌ“Y>ÍQ™—Ê<¾[>S¤ž¿A¸Ô¥øUÛlƺ^^3P:]©Kr:}?Rãvö‰ªjóR_ÐÌ4ýÑ`.•fokp£Zr©_‘’íŽë&ûgÙŠRU \²ÅW©KþœÊ°Ô³Ì¹#h3µùtI…H]V7ÍÔƒD_šä§°Ö‘jydL- 2øJeE© íÿIª^L©üIIÕˆTÝòeÛ}4SÿUbD*áÇi<#½ÍC²‚Z¢<á]ü^••`ûzEQê)ïÔúu—GP4£76=œO¥ýÉOÝ©¥žê/ÚøØ`ò3ª¥Jìçjÿ…±ò{WˆÔDÐWfoÐÔdZbTñ¨©+G&YkóI'’ä÷€¬âQ3LЗ±²¼ÀÍ,µl"ô ½EË qã \âQ}£ ÆêdæRhU‡²§¢ñã…Ó\'Mfà܈G-›:ž–©Y#”¯¡Ô¤&}/«CÙM.˦Ôï}Uóɪ&P¨öÝ— ÚǪ*seCPâQ˦ÇntZËVåk;³RïfÑO*û“ß»ŠGmJ×.Tlî¢ÂÏö;bTJRÇRµÁ1!¤*I5´Šasà ýA Õºûe||¡Qp оIDÚ‡R÷U=‚¢K˜Å=èܾJ{5%«ŽØåï«2±TáÐu¢ek¦ åƒRœÜð@¥=œ¦¤.e÷Mµ×£Û” SRI•Ꙃž,'t?½ºŠA-,ÈPk¤¢Ç6X¯PÅ:£ÐÎd”@¨iaÕ1/µ!å"µl‰±ìcF$ºU1¨åÝmõ‚š(ƒB˜…ÒJ¿áðÄ –wÛ±«ª§® ¾7Ô6¬º’’Ð h ‡½Z ‚š³dÏ÷¶ fñ „z×ð–Þ…BÛ•*u¬%kѪ\׸mõ ulõ‹ â°S=¬ž®êÐvU^Óï»ËSè †F%jJl®Ôï dÓÏ-Š¥ëPÛâÈzltõ¥Ü½ž ùSüs{ÊúB²Ç )]äi­²/cSÁà(j(:ÍW›ÈÓ›E[.Çò\$éyRËÛByJ¥h&&©CÏ»ú”$“P²5Kò)®uÚç\2>¤W™¹Pý*ô†ûrˆ? …ª+¼~lëuŽ‘Ÿïl¢N§Âq%[Óõƒí›ßd¬ÑÑwneõ8íÖ&®øƒ*š˜Ó©ÎýS:u¬îßš÷LËøéù5õ@X¡‰7µLª˜æ™NŸ²i¢Mé|\‡HÅQB›Ë)Öô¼¦† ²vçgÝ5‘¦%IÏm{&ó‘üaêM¤éñg‰µüƒ:•E x’*®—èñ×7=I÷  0é•ý V¥Ù'=ùý/šHÓ”ysg=I{W†bï~ó¦&Ò4e%;¦¼áªk”QhU"Mmƒ%ëISÈÇAeVÕP†q]Õ.5ÿ¦4Í´‚-ê‡Ø)MFWM¤iÚþwYÚž³{ Íæhø8rààˆ4Mi~ȪÒ=&+³êgõ›>4, 5? ²•ñ?û‚‹ Jì‰ðÙEšÞAß2 ¥pã °—ÈÕ6è+C5m/W±×ÑLì¾·PˇØÉ1Ý“+Ðl5‘¦é=$ä½*3È«üŽKM¤é±–ÄZò±­Ê×v‘¦%)0ôZÁuƒÉŸ…Ùê¸ù‚Šæä«9`Û+ÚÞù‚{ÐRÆýKM¤é±–ŸPd±„ DšÖÎŽiVT®c”ñ·†m§†§3p÷!”üõ©iõ”¸ð JÚÞÆ•>››‚h3mÐ(@eâŒQ¦“çHÀC™¾™Ò×öèÙ?­BÚoØÙÄ™&½•“º…×aÂÐð7cº4­Ð¢qG0-BkbLË&5( ók§ÒS¿…hcZ䣕M‰"¥Y©Z@¡ LoÕ7šÏd¿¡A˜6œì®¢ûþÌŸõEaÚ:F=s?X&Œß]§A˜â8NšC3NsN¿É\£ðTüCœ­¹¦ß»Qu*‚3SG©¦w±õHÇ7%ˆ˜k¦¡½ø-:<)ì4}‰ θ@aIMBêýÉÖD’Ö‘ôrH"CvÿGïµ8*"I+ ª!*0ˆuøIq¶½òªûÆóÓ¸ÏÅv9ú}ãy5Ÿà(à"awk-£×€ 5J6c/D#Ôò|vˆY1ڥؤQ=ÜÙ¡Ø]9¢¨ŽôéÐlü:ßO˺ÄYĈNµ©ìæ)eÜqü“&:”õ`‹^ËPÅ×jÈP7^ž½j¸Í«)Ÿ ¥½òT_;ù ©HJÇ¥;-MITïì1ª½ä,¹'Ê8?¢5/³I[&±¨“áÒýŒÑ&"”¼·EaÈ&r¶ÿ{A¸@òÁ³L[ÝèûQ¨í>½×DƒÂ -=|–ÕÖEĤ(bQ¡åëŸëw¢y{÷¹½¶xnм´Ýu*hÆÜT’fZ'e™î>”á9²ŸÔăÖ!Í<$ýŽéŠK'4% áMI%Ø)1!¢ø ‚M<¨ÉªSmd²š#pòă¦¢Cœ*‰2Ôõì_Ç¿ ă¦"­:@óëWEŽ.µuE¥ý½3°xøý$›xÐTxÙ„§«Rp¥ÈMME_pPT²ûÙ-}ã¹É”–"úd^¿VzlæÇ|mëP¿L¯‹=‹–\ƒŒôá7ÙîâASS¤-Ñü*уz__@V¨ ”ôÊ:À,ßîuñ ‰þl‰¢ÔdmBPýfƒ&vöá·AèâBSWÂïþk¥ú‹ê×wq¡wP53%´Á…¬²Ê_ÉJ\hÊÇVªÂ5¿îƒ»ÈДÕÛ¼&ñO¡òêXßPå÷Uµ%Go$?*Ù™pš•ØW-CbY ˆŸÒÜE‡ž :íC(i;Ó«Óà F—Ÿ.ÓÚNƒ_[U?AV5? LV¹¬'Pd.j¼QbÊp·ql^Á]|è!¡7TGVã¬Äˆ&†M$Æ:Ô¬Î=P4Ñ©$Mºèk×ø5 ©™JÒw žôú¥Ûy1³ø¡Ä.N4Qä•–ŒÌ‘;ýº¼üºé.Rt‡’ËNC§néÑÅ/ˆëT’&JÏ ~é,Ô—ßL¦Ó•÷ ¥àOšf}ÛN%i¢Ѹ¢+5¶*’Ò•g¶ÿʬª5od…EöÛæw€éT’6F×_j‹/ÃO%ïtåmœÆÁy¶ÁжVÝZm]¤±Û„Sû®ÒžcüæKüjîNWÞ¥æíGƒ|î¨ðª~u¡¬’”–ô ^¤¸‡ ¬KÀgG…eó›ü·s?U’Òk…Ž K^ß~кӕYùG¹z ¸[%)±—Æü=••r{&,Ç µeOÀÈPIjyÍ_eÅv(ÑMA°#Õö ¨üEVly‡ÚÃPÒõó|ZÉ(_>Ò|¿C‰•OqO`t‘¢Ç ^ßO Ö *0¢[O^•sùiyd·ž¼bíÎáùõ‹¾>1ÚéÉ[i½Äì¿t˜WàåL)iU½Q­´’©Êóë›_Ò™o Tî21}£{Hñk¹»˜Ñcÿ¾àá;A%Ÿñë6ß”f‹£ W6[Ñg":̨õž¨6Íך—E ðctÐP¯õ¹P¤ìª '7RƒªTt?Îþ» vÔNø¨%Bzl~§àAêA6(mÏLC©ô¨›É*°ªu…ÊU—Ä @FÆ?ƒÐ¤ÕôÊÈD ’ÏtѤ¹0ȼ’9ÓÉÕ\>yßE”Ö*Ÿ¯ †ü òçÓ\ù¦UûÓª–*õb«’¶S3V‹’»j‘£¶¯Êÿ‚ôäÝJZhÂH€WÍ© Õ¯«ÊY%¼¯µH|kzlæõîªã*aÔ’2,¤fyW5/¾` `!æôþòJ¶*Šž¼y||Á¾hYýƒ}šm´a}mëXUà úôP ”ßR¡‹?­])²¹¹#Ó¿xbôäݤ\oYa‡_­Ð©&¥r:oÐñ…V2‘àŽHÔ’i@mÿ ¶ÿå¸P–ü"·¶PãÓô‰­J5vÍÄ.YBÏá§@u1©»Å=Ttw¯È¥aƒ,¡.&µ‘u¬åSOV%&5- *hƒÃŒáh?׍&ÚF o½’«èRÚaRiï›hï[ËFÅËÑaRW!þXÒwPŠ?ÒS¡ZE[VbO>)ÛaR§¬Õ06r ö±ÆuUi*¸ÓmTj h»˜Ôc3/eP#ÝTÄÔ¬¢´‘ñN:ñÈ&vWLjVâî±–|¬%,«AO^²r!åëáªôJMzÄ•¦3XÇài铲ƒž¼ÅоxãØ(¯Ðª(ÊPôªzò® 3á;CLê ~ehlny÷‘x!ùwבZl_CÉ‘IŒ7­é¤ îÝ5(*-Êþ+œúk©"µKê©C¤v©¯V˜DjƒÞmл“òŽÈª R›º~­DžoPDj#Q¶Ð‰p?ï‡íU¥¨F)ï¢iÄòûåñ¨À*ÕX•Þô Þôrn>¡7àQ©3Wü¿.jòC@tŸæ’ß Þ1“Ç7ŸÎ UW ºgZû=•fà-8Ä¢–Babµ¤²=03wˆE=þ,&—v²*ß‚ŠE-S™øÊË^7|v¿:gˆEµUíÖò¸"^k‰ËJ,jéL]J1Ü?€”¡øñÿ!µu¾-…²¶UL| ‹J´ÞÄ–Õ)`’ ¥¥¶ªJ{uíb»ª§R©Š—n,ªï‡JK»n®ºÌÄJèª02ÚÞÑv=v®J,jÉ„¢O­¯¨dj~Ð~PZZ¨€èš[ýtUùê,öòªðëÿº*´ðê’oÕsãàøéRC,ªZ¹³¥ê(Ç`ÐôÁµ¥4غl˜ƒß aPVÚuh:´zÖQÅç”e¥…f2ïÆÑooŠ/¿Û؃:©ªÊhiÙr(}vcˆ@-u~@•EñIö_ICª-ª°(&Ä•ÿBzâSSZú^Rõ²¨ÃkÿéÐrfôüðúô"OYÓRÎÁ!±°œT¨±u‚{ÖVØW kÄ žt²Ü X–Áì'­êIGâÄt„`ö£CÔéÐó¡-U6öÔ8{~8gÀ’V]êÄÓ* û\Ä€;4"ñ½{ x9IJ¿cWùõ$œOö§’ ´“ÖÕ/<4!ðfsÚ.±B„T-Ÿ¿Ц Åu,TÜ €‚HÓŽ­#!¾R µ/) îyAjäk5òµvç-°9•l$ hw)[2àA))™i¾¾ê[{ XJI+uÀÌ6 vP_›D˜–J€¾p…6*²?kq$‡h›=‹ü¯'¾Ôö÷cQíÉ¢ÔÉ+3Â¥“êóÊ.r¡Ä )+ŠW{±Dq¿ÝñY:p‚•ùP—…$üD´!ªT){ Ý€a˜õ¦TU·>²Á¥åº³¶)}ºgŸšÌ-­ô‡¨¢/z6.+ àâHiÛ´éyÖPïØšðȉpÙöBWW‘ïH8þžAJre5ÎiÅ·)âG“ÍíS[£ÔŸ¬h\VT™Ûýtoõþ!¤þdkëWq—^êƒ%‰ýÒý٨Rz©Ô㫽¶|~nL,ø .ÒqW•Çݳ_Ÿ<Uz³ª§P˜pº@{âuÞ-Ù7á¢EO$‡´’C:#A2šì¾»Ê¿6˜>VÕVÀµŸ„Xèã]ͲÐúwŠ4Ùý*¶ÁÅyOŵÖH‘U1ª¨CjÏ7¸ÒUìÇw{¾AF•Þ|Á§«"å…æÛ•–àµóŒõË^£Jo¡òöJFйwû‚å ”´½Ó¼¹Ò‰½RÞ‚× ÚªžÊj²ªô •A­+TéÛd5UZ;gPY¤¥fnR?ç}B‹•+CöªlE ò﫪Ӓw#P¸/LaÞJ«Öo >i´[+F²ö †" €H`-܃u{ÕRéù{[ï Ž'Pã¯U=“ռнUQXOWE¢:}²–®‰ž5RfhûPw¦ËJ³/è¾Ùç©Àô€Úaú,œÊŸ«ª@ÍG«²SêÅ›m°>’³Þµ ™Ô‚ Œ™£ï™S?Åþ¨ìuÒo·Ohi{]Ãì•ëO L›Þm53R’²×>ü<àI)õâ­Æ£Éÿ~ÄIiÃëcUä’>ü¡U“Ó›Êì´[u¡ÒUVGåøû >(=Ÿ¢FIá‰Ìȧ«’¶W;Ô(%ÂcŒ ¦U^_ªVî#ÛÞ»_î3¡Fë2(JÏ­NÎoé=Eo¨ò]aЫD~y"¿<ùySÔh¢£þ ¹0«¨øÕÓºîjU©ÒÊ9‘Züœ)j´ÒÞ½Uµä;AåÀªD¦2}RŠëÆÈÀêYì•j™Ò«ªŠ¦Ø Ú>?”!U5äšÅ/̘tÝ­óCz·Q¥Ë7}Œ*ÝhÁ\4¸ª'óf¿1ô=z;€#Ä8ƒ¢G™ËË(‘ÑBÝ#’B×éôj¦Äüæ'rLzîu¼ML}EÏ]ƒâ¶ß8+´ßC3+1 %÷È›âQË–I§Í”9Q`ô¢OÒéœøN”ÒnK¦Ù±ìÉL~‘ô?ú)£ƒ]~'K€hõBÛä÷àÖ2ê ß)vô˜šðò2RV­$A;ªi˜ûÃŽ\³»5Ñ|·Ñ.kƒsgjaHR4ßÕ™“ÑÅù ˜7±¢6EØrx,+0pcŠµÆ¡G¤#e)¨.K#P(ä•èíBÁý+˜5ô¤-ê+ŸÂ…—­}H(¶9%¸$D-kk£‡B¢–^S­UÅ™ý~½‹a£½š°õÕxÖí/{WB‹a£Çβ^ãû/e„æê.êB³ìHéD ­÷öò{I, ÇôªR¥1ä‘ýXß²I£Tê UŸœGyø>ÀZŒóê§±Ýtäño¥Eaè&P†M‡±‡ß#y1m”Y%•Äç§²’s²Ñstˆw®Si¡1e Ý\æûn.yhƒ"@K# ~Ú º{F¾ ãFž¥rž /?r%´“%öÒEËöÍg.*C jè.Ãj4üˆØ¢2tclŦGÆîNÓK­dÚÎõ¢ö6z=¶AÓv6X8ƒ²Ã»;çÛ=Ž6.™>02´gÊ~ºñ¢6´‘Õb«ƒTfr‹ÚP“=È6d¶õëSxPîUµe‰‹ ××/‰XÔ†3}Ö'håz•MÛõ¤Îe°‚¤Ú®3øº¥ÇNyæægf.jC7úÃîS•¹…¾ cG7=ðʦ`ri8Á[à>¥6”3Xp^JS _lUr^†¸ÔC›Þ¬OôJÚn½ºVâàXçf?¯oQÚèeË(’¾QÖ`M–Õ†vû‚TGXÙU`U"@›q9SM£öã"^!ryA€nTºmô¥#xè Rº1Á”ׇõÝÅOnYÔ†¾%”ønùdåjCm¬xÓóÒqmÐ72Ô‡n”/oºRŸÊJ̼«$IÕžÍû'êÐó zuaL2Ç30Sn,;&fc†ð¨æÀ}Cy(=±J±˜í0û *´Ðç©4rw6¦udÿí¿Ä€–¢0B‡÷xè²ò{, D7¾àP¤:f~ðkýØà`–£î^[u¡Ðuj¶ÓKÉ̱obè¯k]Øå0í“_¯Òˆ¨Æ‡. ñê¶¿ý,ûÎ5¢yŽ«¨vÑž@©~Ž‘£S5}-é’ô’X Ÿç˜B(Þ¾ùñéE…hÓC©ù{}CæÉ/¾XÖ]W×VÙè³VthFñ{Ì/Ž¢SuØ ïñD§D…–f£&m诚ìg2E/—„Ô³;¾ M6x›Ì«1mƒU@iU­~ eÝ\ȪÉ×c[àncGO¶Š¾Ü€±[­è–®_ðe‚@ýa×(ƒo×)=zh&kíŸA¢§{YÏ$»—CÛ“®wE,+Eö}Û¸ý¶—«£ë$#å¨íoC+B÷³èPkÒeqËÓªqË%:´t„¾FþŠ×©:Y—µN —Ýr¡èå²Ùó'{³ŠáCSó˜D„+}Cùæ>´ÑÉb|™¡xÍï̺B:éF¹¶#îÙÕ·¨Ý(½ YÍîAÐÜÙQ¯P¥õ/¡x*Ú»ÿBìÝÜ¡Àé6ʪˆÅ”Á¤ÅHsàÄPöiC¦7ƒÂcßÌðIEó_"]ñ¢êsH̪YT<<+º?¢Í¸¶ E·‚ãa!ß‹4Y£›½—?ƒr¡HÚDÓ ÊµÎ]³¸ ü99‹RZŠ?â{} ~W†§PrÑ­p7Ò˜—€?%Ž´*ǼSü]KßMžÿýÄ+y­É¸ *¹dë%{žÎ9,aElÈôÇy¬M iJôa¡CSi'wÊ—”Ò;¨6-–’MOÊH”— ±÷ÀÝ'†ôxAÑI¾â¶ Ú¡:¬@5 ò¨Áªä&lLm=¢Ãî¡ ƒ:]šF·Lwm¢G§…O«)_ÏíS²61¤CÍ ê`vÛ8 •ö×$‚ôÕ;øf¬_àU+~ô8s¯íÙxêG§Oühz÷æ|ßøxP­É½CÕ¿ ž­Jz~c^ø0 é©®o˜"[?az‡ÂGgæaQ}\]–läÒškƒ!½ƒêc>ZPáÆÏVCJ–ìíl¬îöüZ›Òf[&Mn…ûÝ-AÚ‘h X—5À%ެ¨\pJbZ^³4Ž’êHÓÒioÉmý¶6q£7fªo's„‘&Ü•LKqæRï÷oQÑ£“nmÓÂñÏ5ÿB¢O¥Û€lmFŽR³Ç)~Tö°Ò©¦TNP’Eï©?x´'ÈQVUèá°ÿŠWîPª”žŠ.Æé•0‡8°*¹é]ZµÿR=ðlÍü8z9š§–j×;¤Mêf7·1ÚJ"GÛPϨ6›)Ã|%7}ééÞO“™vî—Ó¬9z"×¾Ê]IähíÅ6H9MFŠ;¬k%ë««¼äÚÕp¦MR©o¶$rt‡bUÕÄ.YÞ·‰²ÒF §iðL› žÙü°g9š—R9jST¡ÑDcøÝV=šWµUQ‚Ëýjóª²Aåjn•/È<ÇT»BµÉSyòu¡úï¬t|ºPƒUqptߌÄ ‰}^¡Ú´ ž¼äß¡ÖïÊpèZT¯ÄÖf%Q”ùœ: rNW¨6­šeðÛƒ®”Ñv r£x¬11o (ƒ8Ò# Agæ#@P¾é³²R’UÎyî{$Á‘¶ÓÈC[U{eÉDn³PãOY=Z•%X^ˆåfÙt½«de¥Äã¾…¢¯n£Ð:æ:ÎÉ'E’xÒÜ™^Ú2¶Î`ss#w(i{g_‡ÜLÖ|ùÇY·™æ(uîjLx{Z/¨Í.z_EE•¶“³Mã5댼¹æVUzÕæIEzÅô=KF+97 Xüöë+‰*mÓ<sŠ,¥ÊÅ·CY‡#©h³–“¬P¨Týê Š+5±kÉÇwÓqö¿`EÛy.5UÔ[*ƒèÒÆ ÍÄ•ª¬ÍØMÛ3«*7b¬j\¡îdû‚7Ú¾­½ ¬jý÷©¢é«U5l»TÔ´ý¡ŠŠ0=~· (RxÉ h ±8µ¢¼&Dšæ.¨]Yy¥Òx 8—nʬjtáé[3m÷ý+ŠKºïµÙ`ÿ€j*‚øXÚnUÌjÝä!pkaNÇ$NÄ€¢Öe7·5ãJÌ!¥SC›–/DÈÂïeºRGÛéóÕû)sÚ§ž®²jC¯‰‡²êx2‹‡‰}mÐõ> ²¨Ó< PzZ6Òe‡?4{¥Žm¯¼qÔËllc>jW¨vJwÖDè ÕßàñUÃ_˜ ³ÙƲ'€dßC¦¼tP½0)²ô¿™"«RLf,{M˜m·ãìËŠòÒ™›Ò<¬”eø-ÆWh»%3‰G›vËÛVyšÅ"P§úcM¾¤h¶k@Q¯†6W¹Ùõú©îlĪÝèTúêï’;ëÚ€R’ÀÙÀ¨Å€›Š˜A—èÀÛè8?ä¦ £å#«¢ïͪÚhãÁªèÁ;Ô>®.˯éøì±ÃŸU Ð0”´ÝÚ6ël¡¦¾û}ߊù¤MÓ—*Ô÷G!|WÀõ #o]ˆq$”ÿÖçBñBÝx”0âíáeÛmUUäçþ¦3çÑ÷bÚÎÔ‡;±g¿ò Ñ—¨6jú€ÚüÔî,µVQüîåÃ2G_0oé Õ†•¡àhÒ=2óIoôªÖÅKÂçœ3<êû±– bß”,DñpcíY<êÑÒ5=a/I(æ®+‹G=­j³F¸c2Ÿ÷¼*£ó¢ª(Âö;Ô ä‰]ç±[*ÁU:ÕÀ£D,êP®P­Ññ>ù=µuÕHŸ08¡UͨvÝ`lUz¡n ¶÷°©üPû \\°¨]q¾QT¤2‡ z^Sã](µXR™EÓIÙ¯ùÌL2-¼æ›jÜ{‚dœ~b`‹z·ªZ’‰=eÚ.(|«zò­w mz“êÚ´F~LÛNߊ6½LƒªEoÁž,Q³ë4B!UÊjƒB«RLwÖŒ2̱ž@ÚžÞ­êÞPâJ¬xø еê¥O«z¶Á"5m§ öo6X¶YUD¯ ­zm²òvŠù¡!¨ÊÌW¨gÚ^`Q™}V7hâÍæF úï«jS½ˆcPãwY=…’¶¿§ë½Î %УúV´À¢ø.FÛô‰¶G Ä¢Þ­ª8œäÎRXE,jš¢>+í4[Shg(õB«Þ‰A΋kÂJHý¤ˆ’x¡Bô7ê>3¦;ša±¨w«ªùt;Ä®v\©5kÅŒŒç+âQa¿¡ì¢GVÓ'uÿ‚õfUýɪ&«jÿ+Ôº®j÷ŽL¯ê(ªQÝQm*KFõÓð <*P=Qò*…¬ 8¬ '%¿¢ºý׸BõäçÎxÔ›U a(<˜ð¤DÊ:IEO~kñB5ê TOÆÏûLxÚ ?-Ýz²Öâ>[R¨FM 8•Ds¿Ž³ÝýTØ"5‘Md„ʪ‘2”¬4¼ÖxÍÿ‹‹¸Ph; s'ÆÀüä·è(Å´#3¹ Dô mVBúLE‹i»Y†ï]{‹Ò†÷_ªž_´È t8.âQ“õºÊä24«eô›axÔ,n˜lP7ÎðkƒŠxÔ»U Vy2oŽéÕì õƒ…ƽĖYÍŠš2ø„Gí´~ÍL;ÊÅΠoèÜûø·ª¦fóµ—ôÊêóêuUÕú%… *²Zÿ«¬ÚuU‡Ô¾X•<™ù¹hð¨~‹ª"5‘o¿[fY†J7¯pŠÄ£TMÌÂ~µ®¬Iuê¶ÁáÄ[…jÔD=ñyUëÁªhßÛ=÷5”´„©VÕÚô¡¬há›õ¢¯Pg•Ž;=ùýH Õ¨VØ:«¹ó ž Co)Ö<àÃPøí0KYºšuŽê7w/Œ:EV…îDOe5oV…eÐXæØª°ízZvë:oPÙï«QàQÉ4lõtp0È~PGͪ†k–•YU‰[UÖªÔøzÿ¥ËkÐúeø­_ŠxÔfõA•ÚëÚ×±SŠØ­~±A˜%kš2<…ê×/x§ 1Y›UÉ2ds #Ê0oôj\Ń2mçEoä#ÛêöàD”a§Ýæ’0+%e"E~¯ˆ"õx…£çø€J>%TŒG¥ÿAe°ZÊø¢{ŠÔŒ'“)6¨ä§ãQi­—™=íã'-–Ñ?¡>W5üÁ†«Œñ»¬ZeÆlhUó õýªÐvœíLêwmOÄ>·ÈªbPéFtöUŸ@Ѥý4Cª@õd–a>Ù ´=Q‰Ã0‰žŠ½PÒöD²P­ZÒÏ‘)âROb/'ƒ<ˆ]\êØŸBÉo§‹ùé ;Î(ÅÛ «BE÷o¹|A¸Ô¨‡Ê°ÐöÍ´ÝV5ž@µß¡ŽÓ†R²*dqHèål·þJ¯ÔËðTì¦íJ;¥ñméÉÁ¡"5Y5½¸hÙØ»Ÿ [Å¥&8ú:/¯†2ø]ß+©ï ÿ×qžøíæõù>CÝÐvU…ëËÇZOƋ֭üU 5^¡ ÒÚäýDÂdɰ~S¨*.5e&òœžáÉVåú¢Õ¸Ôµ‹þÔ¸êUM´V >ÍQ©HeœîUµ'«’m¯j]ü5cOëÄU£3ú3YÁ¥E ëd€Ãì冣+\j§IðŠî~© —ššÅ¯ìv¦““Ÿ8\éì{ÕH²ŽAIÛ«¼¾TUr[“¹÷3£k²$gš£Ò)³úqÑJMj¢V"W-‘q_ýPX…K½YÕYì‘U­ßeÕ ="²‚KM䪕¹®ìÝoàSáR“Èânýû;uýÙo UáRj…‰ë¡°í‹/Xtp’ñÎ~>C—š‹µ`Ry¡ì}dàL—šÛfPÊÞéTÐ'¿Î²ŠKÝ¡#“¡Ï2E·#û!‹j5©L§¯åedHÞO>SÅ¥fJ3-vÐùdƒT`+Z›ß}2ò‹BÁ¥Þ¬jGÏO Òï_°Óó;•?6©÷Pèì{ªh¤UNoÊ .51Lµâ‹¶B?¼ÐvjR“ú ´Â4€$.µ÷€S—z³ªšŒ‰ó¹Ô*.5œ’v×™j•|†·ŠK=ŸA2vè R“zuV†À—z‚êÓ,C—*ŽþP>$ôÊ´Ý6Ø¿Û`ùêØjʺ„¥ëš>ãR%+û½ @õëªö_ù»U镚í¤˜»4./?¹¥R“únºþºè™w×+ñ+?q±—š`—ð¯z~²*ãR©À.ÝTT}÷Ÿá.õFV•|†¨ %¿}£õÖ°¢bõ“JMêF‡{ëÍœ*½_®R‡š©”=¯ª?Y¿õ†â•zìo&%ÝOÊ,g÷½Ô6.HEY‹•ºº¸ 4ù|²"z:u-ðÝPѨÅ^‚”„CÚÄ €|Ž™_£ÑÄvʈº•\e"ÃÅ76ÒΓY/¬qö}êFÏÞŸËý´YÚXw/ø&†ô¼ª¿Ö­ª\¡Žm½¡æ(½C‹ vz¦ ~fÜeñY¿ÆìÓ¥WÑݪfò«˜]{á\àçP“ÈýW`U‡¶OæU:²†ý±$-aÚén¶†yVw¨‰ íªaÞ1±¡V}X”øQ[Ôþ«]5²_^ØÄ×U•'«ÊW¡DË^A5ÆÊ<•T}Á.yÆ-[ÖŸ?*¥‰mÔ[5ŠÐû»¬åµ*ô@=zÕ²ÕhûcšèÑýE¬XP6Ã{X}ߣQjº¬îØ\=‘n gyQáûLì¢G[†§ËâÊ©½îS?Ô Ênõ¡W•¯_ðNV½úaŽ&zôǪ”y»f{ W¢G[Î(‘³ª†d± ¶ß¿àCm=jP·zú‚ã*öC-~(ClUh{gƒª†ÞáûÌE+ëê´A»)5½9Î-[Þf`U5]¡¾_Uj +V•M|ßCôèîHU”AV4“RUü‚²F©éŸŒ­ mï\΢Ýë°üºN;MâÏGÁŠì·‚n¢GK©Pˆ%EšFó;¨4Ñ£Ì$)‹×|¶‰ §š²›å“óQ™hjÛªåd7ª,_õGv4±£7ûÛÑMAHz .‹¹$Ž/YŽ/éBá²!bxD=[ö…¦Ö–“n¨ÉÊ_}ú°Qh Ô¾“:'ЯkŒ=ýªú$7 M‹^••ÐU߬Ø;àÇPhº¨âª-k¦óÿ¤[’ë¸Î¬§rb@¼“ÿü§uT6óƒJV-î~r¬èÊ!™¸,\$`H‘êYí RA‘5µöT›?ÆWº¢ÐtŒñ_8­½Ñ"rd\ÌApµp4Óv뇥fubÚì{ãŠc§Ù|<Ð:ó²ŸËQÄ•>¬/]¨ÿ³@•ðurèƒy°Baæ)šJ½Õ»¦ZôûŽQ¥•Çú«PmC(Fžvå½îBå RÙA¢[†uR³êsKQðKOЍÒfgzVž¿Ø}þŸÒˆ`2Á…™`è§¥¯ e^]É•æ>£›T Põ•¡[v¡Ú‡Ö‘ªë…êçâQ¦•‡±ìA)ÁkÄþ¡zúîôý¥«%³mZ!÷‘¨FOÁ/³*T˜º3!TÅÁ´¸wˆ7µ ÄÁ¤‡Ëb ['g(»XØ‘ýLª"Ú´ñ¦…žX5énÚV\1#O¤º¨jI*ÙzWà_3ZÏJìu!Dƒ9t¸äA(Õ…i륮“>Ž-:S¯@‰;­°”C%…% üÀ4%À”@§Œ¡þ³­úÝK OaüBÿ®:Æ}§µço š¨Q[`¢Íã”tqMÔhJ¼S‘QW£µý÷Ÿä3L©J•®#›µ»§AŽæK“\ß&ä¨Uÿ1"!†cª”Ió¥_è‡V¢K3•’sY_èª#Uû¯_PÖ^2±#ºŠj`vþÅ—:(}Lj/M!âúäd¦¤«j‡05(²[s£”wÅ_aªô³™žúº)õà·!l"L)8aâ—Í‹Z ɈIq¸-)¥q¥P¹A—Út´šÍ[ê¼ûnÕ KΈ][+;®IV %Qü䕯ìÒKÅ%-Ì"­¦’_ªÜ˜]ڇ횹À×^‘TþÅ—ÎÕ5ÌÀ¢FßÈE•žÊÕmÙ¨înø »¸âÒÅ£“]c0Iò3[Í[T䨯XÕ¤É,ÊÞѨV( 77Q¦S–€uÇ)˺EYç]ÜAÐÞ£´ÿ'úpT8ÝéÜ™…Ëë칡d¢µ4%$9ŸFÁµÆoß('-ÖPAÉP-1Úú§˜ ¥¬i*¨X!E£àWdÂ[|ÌÛ×óom§x© ðë]ƒ’;o}Bµt©é‡ßÒ°Aœ&ÈVÁtFý¶i|K§œ¨s×;ÔÒyqJ»êó—¼B)&•o ”“ÁŒÜ^#õz J 0íC¦h©P @Ц™ìì3þÎoñßD›ª‡E²d÷M ø{q¹F»±ÅÅq!¥*L± •ËÄX¼Mu—¿M 7j³– *P2‚’¿„²¦/WЉÔ/í<øÒ§V4‘–ì ½v|)™üþát®¼£Â—=(\¼Ô¨\’¼”øRˬ/Ù ÝÏÝ›ØRëJ4ÃÖ8ÃÖé£üÃMlé“ÒË _sEé°¥¦`+Pôi¼ôà2SHVE^ ¾mpÔόî2ÐvŠò^öåB)f( jAR5»A?¹µÁ–&aмç|F{ß Ý€£‹-=¿V×ÙG"7œê˜û[ ñ:A¿€Rôrp=,¸ÖÀÓüT¦N^¹­ì|ûZ|ñêbK-Ð:XðâåóG¶ô|ÁbBvH¸ÆÐ­oÁÚ™@³ÙÕ‚Tí¾ÀT-q/o˜h?¸~v3µ¥$ÇA5ÛÐà¤VÔ  þXÃ.¶ôÒÛíËg€[šHªIŰۆÚÅ–FžÎ¨‹‹ Y2ÏN‹•ÂíoØË’ï.x9NšÍŸAW:Ë­Ãë÷?y«¾0K²C–ÊÇbITîß³ºQ¥XzÁÒ)…© ‡»ÈÒrð^i †£Í#ð3ƒ;déA=RåfEüÇíNÊã5‡£¸î5¨ß//‰—bÙ¸üu˜ÒD4”ŒHÌÜC‡)MäŽ%V{I=~z—²ÍÎçó-ZÒ©êaôæŠTº^—J¯öù6::Li¢0<5U6KXø‚ïéß¾tªI¤Â®öÞ':L)Pö(ôÒÐìU5‡Jr·G?³‹)U±@ Ô)–íÕ¿Btñ¤Óþxóª S}»1¥dÙe ]i ¶dëbJ-9õRÂÀõ}a+‹'UšJ@l¶PÚé»KЂ¶$$sèT^:ÎÅ/_èâH%¿×O¨…8V©òkd*Läv»P›ÚÅÖ§ÓÊÎÐ ]I#GLQW#ÃÕ‹_1ÒÅ^K.˳º*÷9¨‹µ¼~&¹´¦§iá¼õ(Eõ*žµ÷$™x¤üèI¨…›]äè¬7 ¿ ~/ý’¨žÍÌéÇ`IÓ{PfþdKP"G'À/©:%¼Kº9*KxªÑy-ÔŠwMýµ°<:xýGÏ"bô—ž¾Û|p£7ü fA"Êî&Ð Éî+O¬èå»}gáâD™!"ÏÛvÍís‚°(;}¡¹Ã„>Vêmy81¡æL&LÝX–˜P@¾Ñ8Ð_FH9,>re³Š%1°ÐFõ°¾‘•ºnõ¸ð*ÌHQu¥îQˆ;Õp½/œ‹£ÜÌ‘Z¡Sö’Hõï·iP´Ä% Ø„Åh´hóÇñ…p\Ü—ãâyjannìßwÇ}u¿¬ÜœœkšÃ:â^ Ì¢Ú”Uô%£e‚œf°€“þ)ÒÆ·b1Õ¥ð[#â0Ç?$jůØÔ{Æ»¿˜Ó‚{â/µ´agÊØYXÿKC»@ ²çÇW\[V¯þ5k3íñ¿OÓæJã÷5b-õÍ4¬ÕRq¾—øÊë×\’»ÿGà©‘“àíqÃŽ’ä»EMqÄ!›Uû6$¶2ðpñHÍ· ‘ÌšTÜÖì€ ;2á¹£p<#_Üä‚PýCMõ¾º¾Ðuj0,4*á¼ÉÔÞCߊò2Z€‚+±Î¢t [ÑyÄuÇôOMùŠèJâ¯ï×—þaR½î,/?,ÏúÿúM¬‡ÈÊ ¼Ÿ ’À`Ë~}öˆõ.Ò´ˆ÷êÒŽHÄà㾸]$Y¹j¤‚\_œßT{D3râ]ålu^€zõ_€†XJôý¤¦%‹¤¼\ tÃ(*ŠY)Þôm]¾÷l Š’0î×.Eù`»B•»PÄ– B Ä»ìª\&.ÊŒ©"—YÛþTä!Ž2Th dÖdÎÉ?[DQcraSì2‰¡¼¬­ÝEê ýㆵ¼ýauccuÔp¶”5ÎT~Nâ°–·mÜ¡¦|i‚ºPù.ÕJ_€’—ƒ J3h%qÑôßšF&Z‘3Ȩ܊.‡nŠ¢ SJìxý½üKOÆ‹‡›HW}¯ˆÄ53±Çñ•Lâ'Y]Èß-vò°ÎìËdòÏti*~B}»¼t‡úú뉡üÔT0o§üsu[Šª7‘R3–)m-NF._Tlyièìw¹¢(Ù¾©1çNG¯ì"™¦ö”q•Peʬ¼<@ûú}HFÅ•¶™.—bn¿Úo4>Sxª?Mé\ ü°¼ú “¼ˆ· âumœÚŽlœ‰Å_KÔnZúe›u‰hE¯¡õéÃ-sZ‚‚¹”ž¬½ûžL¢.ßÉ)o5™S1gàßÅ^Fõ¡‰b›»51¬>Ó7Ä^Fe$G%Ñ®|M •kZ"\¶·g^ûýÎ?C,fC­·ðžŽÔöSÃy¡OMž÷%› 4­»Ò!©&hºÄˆ†â7Tj6 ‹Šh,½@ýJLæåËÁ°iÄQ_è‚8ÄdbK6–†‘½/<ªZ¡f½‰ôúò"¦d^ ôB»iNb4¹ý"4iu¶²:<¸…«Dt'Ô…©&R³Ëƒwž±»­Î?Uhm«;0Ÿ.Z¿_-1z»¯Í^¯WLZÓÎÞoµ4þ)TÚJÄf¢š|nÜ_Õ«Ÿ2Dl†nÎàc}§P~l1pâõo™–ÌZS:gòò©»•³ñwqu+^^óÓv…ª7=‡{ [Ñ7™U$[èšw(ÍHV9’Eyõ©Äýr½f•ŽLç@+[¹¹¨€·«¶ðæŽüMóž+y72£T{zJçXåYߊw^ótÞP¼øŠúâ²™yÅÊf—v9XÐTþ{¨%©èÈÏoæ°OùÒu¡*Pý \’jšyTÍÔIÙ¼pn^g$¹ru÷ùi܈W¡îª»õNñ›àdšžt’Z—€¸m* ¹å”TœoM^ÞÅTüX›ª“h¸·$’œ¸,`îÜgPUܹä Dp>[À–L*µoÆ"Ñõ9‘m›¼Ô›(¥ÈÒç·©C×Tý²ÂéÔî2¿Â’<¹šè`N§Us´xE~€Œ«¤(Ê¥¤H‚RòŠ¥N #8éO¬ŸÌž<ÆüJÑ8#]‹:ö䎻ûAŠ"UÆUV·,ðI×MçÇ8ÕVL(¯¡Ý”^Æ£ÒÎ/Õ’9ó¼ºø¨r[_´Ætªnoµ¤ú'ҮΚâð$›7…¼³¼þ¡ôCµÞ—ŠÉ«Üøw([à]…Ë!̓„:ÑlÁc90ôŠLº pîÑI?H2t¥FµG8E"Èðj WÄ•ÙüÄsó"ÓÂ6f¾§Š\¢ª{c3¯¹ %¹ò1[QfâHz_ðQâ8§g x¦·i,lbÆ{RDÛip0OeiyzYQbHR·†2èY”¼>.?@ãïO7WœæŠ=(Ñœ•Þö¯/.oGÒ±wý’ÛÈnó/Ñ«—qþƒïë«É¼9BŠWþúõ+·)¡/“p¡°r=Ö©z*Âv¯ì‘œVfô°¸5$¹rM6ª_'Eôõ \žVžNô=‘úmqñâS8†½÷µ ¹qŠ»»Õw˜‰/ˆ$’ó"Rùæ»Çùä0·âqœóËÔük¯,¸qœV…YyĨ;*/ù¾À_–v î6ŽP†¹†St~|·ºö¿mǣؖil<}ÚÁŽü²ñž¬Ü‡2šó?¯æ´Š2ȽÇùÞ¹ÿå¢ ŽóÙgîXfýôâM‹;}Z8ñø–Ǥ3­ÉëVSMK¾/ÇÙ|é°YMG~P †SmÔׯ`Zñš<üÀ¨õrý—8>ŽÈͬ¨Ðšæ qDm&ÿQþšëª~x"f“Q´A¬)¶ =‹ÙdaSÏckëÒkáÜ­vÃ$¥ÓíÉøS–Vµ Oým=¿€ÆÎ¸_¶ÿ*’<¶Nº D{’[q™ÙI?\5<¸<4y©;'Žuž½›âËsû;¾ßmº´™LF¯y hR8>E"õÎãé~€”YØã“Ll|/Iæ _ÝôÙÄüË/®‰TDâ ÒÅriïÓyVý“^R{¤f÷j ~€2™Û'Ó‚²¬ì•Dþ@}Z·®B,X7Mg±Jz¬aKK@V£© (óÃßõí›å Ñ5€‚=û†ÉT† .À´½¶8Ù7·ødÇ0^#– Y·uç’3éqK"BûÚ&»@õCÙ’ÈžäWpÚΗ†Ä‹ -ᮚIä?âÐcVI|´dyÅ>õÄaÚÇWÒtJv¸~;Ð]–’qš¡_pÜuZË~ã˵0÷„ ŒáTS hК’izHoÞê P¢¯sÌ®£ —hè²ÍÊÎÊê]E=Fä#†²¦#Æ´MZR½ðË]Eýòõ€¬íàm¿n~´ðÄþo$‹Z2C‚ñðúý@Å™Æ]¦5 L[‘­eëõ°³¸üKÚC’q3CÄK&4¸ƒ1~€dÜ6¨J~  î¤•œvHOÓ‰1ia×Ú¬M-kÆÞ¹­y}¡~dÛß6¾5©ì­wŸð 4e~SOý=n¬Îê1{½ õZÔÿ›OܾQFž¸-÷ˆ®î)Ç MÑ>¶+Áýúæt!,µçx•´ÌOŸ¡¢+MSà µAvšÇ^&ÇOÓlfâ j’‰Ó„ºüXwäé‹KóOoÚÆªU"m%n«®É235^åùTx€únyŒ×|6Ì-¨t—ªýK]Ñ6V78\f¿Üà|ƒb¼æå8ÐÁ²Åçc+Mªî|>Y¹Üf™ *]©—–÷{§oö “5uñJzpMÍŽ?úb¬f×Yw*„êåLH¸ c5Â]¹VÐSoI&Yx5 òqØ›â‚H4»ç5À’î÷dÊè‰4½þ!Ô å‡)ŒÔÔ¼»s)´}¶t/?³*d³pƒajìhªýÓ`¬WTe®|dÒAIÓ§‘æ]nkÛ4ošÊöûY²©¤aA7I¾ÅÂ7n_ æÍŒL&ÙøØ­'Ò2éA‡ïåPÿƵÅɸõ®—•¿œLYx9ØöÓÆÝ’¨/¸¥5¤{Ô¯€"ƒ1ÓÔvN¼žY¥O¦Dj/Ñv"–°ljÿÕ:йÌô¾ ù¿‰Ô²•DfbêAï*R^·€HÙe2“lw¤•#7м,+6|9qË­þse„¾ìŒél– ßˆqýG˜(þ2G[Ÿö\8ÂŽ¦ú‡¨l+mi\¡I“H¿ôdÎÒWy :¹G9Ss«ßN&ædV0ÅLSó.R|XÏKvùò½¢8Ì_•ùveàо4~.Êâ“EM#¯M5Užr¬Gu[©²<*É,þf¿¯…Ü—ËÂí²~·_ 3ßó‰þÞ0 º"Ï7¥Û׫iÁÙ‰Ì4›ú¥ôï'6™žLjM(âðûgÓè-5«VÖý '“•ýÚomIf¡Ax¡¯÷Êòð… §%{bJO²îJ>Åb>¯ØiÁŸˆÆé™ò]S5©{ò Pv–Ç­ÓªJ;÷ %‚­AÉÆ­´ñÎC·ñ´”ö/¤¸cSX¹¿³rŠ.­+{°bBа &Š.Ñx Vti)¡ zŸ‰ž²•Jn©©bäñ¿Š”>DRmï*+8&^Ï`Ö´¦ðÿµºgfÅûê8°¢Ë}«ØAc5£ö\êÁÔä"3sf§|yÒYá¥ÞB¬>yˬòRG#òRJjwëžßý ‘T:O%pV`qþÒÝ úí8b»ûð¬‹t®[kËi{o›Àe~Ä›G ]e5i1«ÿͦEÒU6 A#ÉüÚ‰(6³è§ØK¶Í@X¸†ÑSV‹‹´ä)ÆøûY‘ž²jäàW?±8ŠỊ̂ݖVÔ€®G¿Ü5ŠÍŒGÕvê2¥ÍçÖ¢¸Ì<àŸD–u1[øþV)‰äìêšÆ>í.R9l.÷ ’lÛÒ‡¬'^ßZœñëåRŽŸö?-ûeÏóûû¥¥Ñ¨ÌÁÙ–q’ÖóÞkèBY&äŠq"–—ê ›øA’qWŒÉ˜Ú=$«xøß|þÒKST×…G£3Ñ8Ï–Ô¶ÀŠY+Ù5]¼Òlf7(Î\úˆº“º~ ê_«»Ú¥ïNà3Õè"[ƒ Kj\1¦þ$²Ç¿¢’thjm(ÙpLxñO›\CºõHL÷•¶DŠ·6—ô’Œ›Ö¯ÑÜ >S›(ÄìÊþ­ÁR™{ý —ŒÎl7™Jä„ó+žÓÍ#—«zæN½‹Ón:š.sÛQ&™%$ž¿ó¹éÿ„*PŒÈdØâ/(*T%6Ó¬`ÊMS>Ê:ÞßÌ©þ4¥sÒçò(›¸Êäâ)àÁƒdJw=­Q°ÿ«HøošåïDjíJÔWÌi jÜÕt¤¯d¢‰¬RîKæ>`ã[‡&j2™xMKv¸q\¢"S÷$*Ùœœ¿MÄa›†[ÒiÜò ’Œ‚€¢ {B_YYùK×/ kiþÆe:¦€æ·z#Qå'n§ˆ'Ébäïú}qÁò¤/–´ n‹¿ÓßP5{ƒON(ê1±¥:õÔé2Ö»7ÇîHÖ­.²I©(õ‡uwqâŽ89š•-á຾€ ÔlC8Ô-ò²äz7šI®XJöÍüëÚ·´$û&_'Û ·¥&Ì[–ów@Ö­œÄ©­e 9î‚EÊ»Y‹Ÿê‘¬ “Aé’¹|XTé‹Ä`LZ;Bñ›½Ù?8²íjÀLÒB8ß¿Ñ,¶šWêXRÙ‘‰'osɉ©YPjö†”ü@•5õûêzô³À“x˹¨À¢"r¦ù]¨v·‚?4µ% çâLaå çÇ[Г,œŠ)œ÷žÂá.U P¹xßš .”}‰LLÛ~¬ÄDLVrÿnié†t~6» ô$3pù|˜û&7c!4Ú’¦!_¯¯þe¥¦œö°ºúÝêdßzúľ {£ßä-ÁZ2 ‘§ X†ì÷zNP–Ìýå¡¢›ø³0?öík·ja Å;Pлw%UïÄ\‰Èû®êןK$ß'AX2‰ëRçrYÜ’UÐVw°:{?õmR|ååÃÙ&; o–¤XÐ6ÉŠ%ɲ™ÚÍ£¥X.ñrRâ]ß¿”䛀K‹,YsË–DXXt{,;Z‚¯$³ù°óMáR]¸S´tW7ù†…Ë+ɺi_MAð&PùP6®¤îàÔœú•!ÁW*ç·Ú‹I1'é?*ÀVäê£õ¨<¡^»¿ÿÅV^¾¾–Æc~ö'‘$‘•EdU¥Lâ‚ã/L\å§5¶ªÛ[~ rêw³.ïæ¿ìºf I]ù ¢wâÈw ¿Të¹¢ô Ò¨zôÎ’ÈÊëÒˆl”—·´eEV^¾šíý¼£mÅÛCo¯5ôñ!ÓÒêúŸ®„²¥o¹mQ±…‰Ž=oà@VåAN º+ÜåÎÒ¸%—ífKóõ=î1I=ìi;¥é¬íiGGض¾ÿaÎKÙwãž¿ÿùÅSVK6TŽ~å^üžªIDeWˆÔi45”¼\úB¨ÍÐK);ërÓ,Ö~{Æ$¦²Šïª—Yb|}7fÏT]6K|+$J|;×qg›yù Õ2õ’ÕÏ`ÏôŒ)wþ²à†›©ÿ<™é;Bü¯PùsÔmm. %#QÙfáÅKP2òƒ3Å)5w¢/Ðúùø36©ÔZý º8òßj@Þi@LIîfÉЕz Jƒ\á̈¥ê¿àdØJŠË) §b û“92½c™4«rˆ)Ú2Ð4ðnFyYZÜARlBdâhÉþºf^HSÉêÎ3e* ä]Cª7¤é@¿‰¤øî;EP¹Û¼a?''‹¬¬t?‹V*iïÂþ̽LÙ'¡ª.öç5d±•õÐUˆæCán~nn_iRMY^;¦qI*úCð4È tÛ^(nË"-³Õ"Ù+3=ä³?Ó$ÓBvXjãôlìã•õ•?M¡æhNÓ½cd+½ÿѨ¬‹,וL‚NÕ[Åy¤/hJyUbåO$±©L€éÁoΖÅ\‚”-w¡Ú!ì>™ÂËG× =‰¸4=M+hì­§¡è¡¼h:c†‹=ù®%Ýü×êvŒœÂK+T çÜ‚«OÜ¥Éô ¦µo'z'Ðw&ª+C?¬}…?w%‹¾´ªà”Ã9 UÁ9®<•*ïxƒ4nfP‚üʦ0󒯽CÙÈ3úL3æt‘ÂM¦ ߨÃ^IÏ)ÐÌmJ"õ¸pQ€Ã ¼‚ßÌôìOßÈ"1«z WJ’.‹[Ð’ü8/—W‰Zýg°, ³";]:Ë»ÏݲL¼¨DÔÔÌ­Œ5‘^¥Õ(Ì ¿â_…3æ[–€,¿>ÞJuK¶ ÌÆCc˜j Šâ’ì> ºÿb™zIß‚)Hü?Uñ,‹¤À\‡«r’k53ð¦hÌZÁ‘ºÍÄýÉÙ8LO«tXjÕÞ°V–†+Ô¤9¦è™ódñ-\¦©ˆfFÕvïÂW3ó&•!Á¬§±£%3ï§²cVyÙp*Ã<í(\L惢öv¯˜ÌªÒ¤JÙk jª7JZ²îŠïêÞZÚ´ïÆÝ\U—ç‰9C‹žyÄbÖŠŽt¦ÐiIGX·N^ÚmY·HLÓµuFÃŒÖôhH—o+³XLS7¨¬,ÛWXàÉ´IØü6¬I†¬#<õfƽ$ãV’eÓ;X£U\¸=QuYx™§[¦¢¸.$U—lZ¥³í.lZvÓA³|F8Ô…>:ÈŠÇ:Á$é!üè¹Hý¶¶¹¤WŒÃDö…Šâ 9Ô‘ç öîvø@"2«Ú¿›H篼¡oÊ.e‘_/Ž6²…ç…/È”n6†å|]ô仑™UEœMãšñ=+ú.ÿûÃ*_¶¨ýæŸ% ¾Ù¢xBÓ¬x2ú­arÇw+ P_ þ^Ü‚L8o]pÐÆ=¬àŒ›’æŽý½´•½+.ó¢îøùÙü+™Ÿ8ÕÚç¬,ML&w¯¯dÚzÖëQ޲G ÓúÂcñÈ"¥»H§²ý.Þ¸ðì5âÎÚî®ûºm÷H´z¿¾ª÷ê|ç-6³Q"1(H –Dîw[Ï¢3›Æ°[ÑÈ‘ë¹ê.Ã(‹ã Æo$]Dg¶ ÷¦x²Y]ƒ¿´".³©®Á–VEb½ÌÓ’yÓr.ß(»8nÕ‹H$|ùÖ… ˜ïïþNú8>li!å¯õ5Wù†Ë_®}|9ÎJF-i\ö‹í55ÝC“ª1óí°@Ð=)‹hÌOSªï;ùâÆ-â1M Ì@‘JÙ%‘”†rÝp\à.nа[÷%v.ERK"å‘8+-ÉnE$…&"W›œn³i^~`±æ±ƒ[N¥½øÜ(RQt4U=uôty×÷­Òj./B¥ïô„÷ÿ¨qјMôŽi¼ŠÿèѯÝ*ÑÕÙn)y,O³"•¿ñ„9x: F×Óæ>ú}QKÌ7×a¡EÛQ9ƒl¼«qòä±àèDb>ØÁ®Pòáæz9}m»,H$NG[^,Ž÷!ñ—Øe‰‹¿}$˜M/Ì-Û1>6D‚¿Ä–ŠÍrÚ³%ñ—-åûâ–vøK¼Sgpt¯*ã>CpÿÃQ{Ó8÷‚ÊÁâS`EfËv/˜Ëë‘JÞ¾à D`Z8ëìMoE$B”þ_×ï")*lq çnàÓ¬"¦¾Š$î²)5±©“Þ[´eàñ~œ¢é6WŒ’êËh—g{®¶¼=ŸU/P—V¹«¦|3S“1+8ån²ÉMu×jiÇ–Ä\6½4Éja“ïáD[6½|7½Â4+(óûÌq–MåDy¬;Œ_àT ¾[©ƒnûÑÒ·ýnûE„%"•h5•XÞO:(tŒe }NŸ…§¡’Ì…J7¡~-Ï®î#Ciù€Ti9¸†ÄSF0EyC•¨úaN”vÌ@ö]?í[]ä{ò«/J!:‘«TVTËÇŽ5»’*«šàa!<©Ç‡HÊ»¸¥¸šžx™}¯)6áFPãw@滹õÖKZØsb-/2¥»Lk@\0ûÍ6ý‰HKS·=X[¿$Ûft±ÂÓ] þ¡#œwÜÁ‘ó‰ÒôÂT¢–ùmXŠ(˦Œ±FïZН’_0SÄX6e­4&?XQÑŠ<2lÕ‚˜<Ôpôä×p”vwÛM<Í*xnâ+¨D«qUúZ[ÈÎ+Íœ6‰£â‡OU§?òïL½ê*•¥ŽúÝ%ŠXKÖ71!½tï"õO¡¬n®;PãÚÌ'õ +mÙú‡yWe°õ…ñE¬eSÞB£ŠÇ(+¿@gÙx5QÒJ³»Ò‚YÂX–qÿl%2­cI¢¿ |©üï¾w9”Úü¶íÝtZÚr˜[' LÓæÒ¦m[­›…[Œ!ùystƇÏïï a©R)üí4„e ðççßüj¢,?=î.l[ñý0ƒä”\ OÄX6‘z|µžlöÚÂKŒååóÛ(ò½„¥—;³/8 û(½´ìe›¾™\ Å#êrÒŒ©jÄ‘~¥s$­Û±íâTq• ÙFÛXYSÙV¨õËŠÜ—’ W‰Ž”pÜ,ߨWQ…ªT>&*š¢-á±ï{ï£Õãî°müÐ&Ï$4ZKÅiv‹p·H=îñH·'åVw€0mùþf¾¿ì,nüË’vDUv½JõÈáŸ,þóM2`ÜǃHÆ0»á_UyHhú[£çaË~‹÷*ª²[y‰]}À$ïZÑ¥üvÐ{y4œ5)G°Y¥¤N½$¿mR fáJŽÑvÅÉ VÐþ–굤ò~ÿz¹QÇí©ÛŸÝW©º|þ¿¸"t¥ÎïÒø´$O?7·Š¯üŒºu¼ñaW‘•Mó0òA#ÝÌô™êç/טnH]¥hýÀcúõU5æN8T}=e[F*MeOÈe •G*Ë«‘èºuuÿ¯ÂS’+)êuCQ",k²sÒÃÚùƒ_ªË®¾œ]ÔgכйJÿ¤]Ym oà™ª· s¢ÐRH]eqs‘ËJâ~9þV÷’1Qiù!Òîwk7‘æßÇ)ˆDòw¯Ë·CÚÆñw· ?•½Š±ì-Tæ\µ$1–ø³€ÙÞcÕè)G‰XgYø ¨µÄ?mÀJ cIÏ’K§‘ÍååÛ§{î4²ðíJ¹!uãt¬„HOßѺ 1wsSO2q_­Eáe«JÐ[r—ÔZ¾§M¿Í€kë@å~b-øpm`=v#öüU”%=FÞ§5jmþ1.β+¹ÛCs;á¿%‘riºåŠù™ÌÕ(Kmß_{ްÐç¬+ cßÇ w¨©äÂõ°{ùn\yü)pUœ¥õ†¹.Îô­r<Q, ypdß¾E[öbH<ï,–üN•ž±h¼æa;Å,Ü÷â¢.»µjR«J²^Jäåe¯èšYÃÆ·yùüív ³¥ª‰ pÁ¡ˆÀœød¿4ÞWvcÜ\yOµ_– 3ÿ—PKÏÌœœæ/ͼõ;¨@þÖÉê¦vö˜]¤JWD=|ƒêxñ»‰·Ê¡¹b"0íÐÌä×+ÜXx&…Ù•×Ëw>E fÖõÚ-ÚYÑQùÀùN׊Á¯i†Ôv´­Eù"_‡(0˜M£õð ź,<ôû-sÞ-ã¼­Ë4ðಀú%a8óVb6«äå'W±˜½ó ÆÖ-<:?÷ ŠÆ´Þ@ªt?!#@þ±2̃O5©ƒü.‚ð çâZ¨sŒª~Ál“ÉÌÓ¡Çâ¡R„ÞýôÃ:ðÞäèñpe­–Þ>ÄdV½¤­se ŸmÜW&Žv099ùý±›˜ÌJ`‹÷•µê×4˜Ì‹EÒ`“ÆP ß¿‰ÉÄ" ©hÚm·#Ý´=%¹ï’™ä¼Ç”‰4コ ‘œ7U6x€2šÝ/\ÐL{z¥|ȦY–‰qRÙö[CMF~r›™˱ÿôp/Pjuüs¾iBhÚÝð@&Ýê*4] "pY™Ñ6=weqâ3GøÛ/ýLCtqÒM S3ý;‰dàêÆÆÒ:‰:K*’ëa¿t~¾¸•É&‚nZehPí;5õ;Ô÷S;…Y—Ï«ÛQT¼Ûw&Ƽ³8Æ]>ú”pì5mœ7=Á³'µËïݯjb3?ýÀžSu¹8 šßDJ~€ÒÄfÒáœ'Þ/^üв‰ËV”¦kÊ”í­î…/g.¼Þ¡ê»Ðû-”ïwEgŽ`GŒ˜^÷––'>“ãyBš÷OM±™¿VGÚåÎÅql°™ ©c³Ì3ë‰àÛcu³ýCQ Bå¿¡6¿^"Tѵg˜äãÉ­‘N0¨²¥‹&Yº±’º³†ÓEZPx¹‰´ $2Ó>Ý)]üêÓ1û22òªƒÂTß6­óõ¦¬Ó¢šlBå¿”>BÝÁ)ÿ\Ý–¢þmåm gžt(d­+_8\DiŽh'§^û“ LWî¿ NóÃìí»‚§§³xÊåË- MzãªuÙN?&Ÿ9TÅ5¬…¡^Õ{òû²4Ñ™œÀCÔá Qj壉ÌD Ó œ"ïü~)o™™Ý2j¡Àœ^X=¬h©Þ¡®RÞåüŽˆMt&뛘¿^ºw‘úŸH%Z—¤q7&  },WŒ@tæP)ßÕš¸Øù©³MtæP¦òÐ>¹88ÿ™¨U.šõAG})ýï/»ÜEº[8;Å | ¨Ü·yw{;¥…i»~·4·*y†N’À—üRÞ&*óòý9àÚŽ@„àíæ&§!¬‰Æü§[ZC ÷¯öåç9ôd²Çe¯ùA€XÌ¡€5+x( ›_楰Òâb3ü¦M æ(\œœj;2ÕûÚj¸‹´d7c/«+;«ã†)ãž Ð4A]( ÿ5åCu ¼=¬Ï|®¯ªNh¢½+z}¤¶ƒ?pÚwáºë è—º€HD¡uô[’8åGb1‡²cPÒ.q·¸çZh­W”ýÕ~’h\¨öõ¥TýuþŠßA¿45JÝÀaæóêv5ÂM¤sבN‡€%¡dãâz†ªÖl([Y¸ ˆÅÍ|/ϲѢJ߈ÆÍ< ™d´®Y’ÉâofbIçç3þö(ñ˜¦¦î«ëÉ/YoÃL\õf•ôDë‚æÇm˜‰çOÛ$ËOQëˉV¤„·…¦ä¡˜‡½„VN†q_W¡˜|¿gSXŠC™®jñ ûA´"w`]©f]"\Ññbñõ~±x?ÊM¢S9í;‘ˆVêM¤_ŸnA¤v×÷ P¿Ó·™9o‰k†²ÉÚOF¤ 5 âWš Çêk¥‹Ôü4(ˆƒ5œøÏÕí(J´æôáå¬3š VüxÍs â>ÆÜûUš]Äæs £Û;‰õ탅3o7‘òa K¯9,™ q,ؼ¿ŸM­ Ò”ä½óìøtCÄ.V󩜳€$^“/g ¯ï¾« ­H%øõíxàñk~{$^‘Ólí®ñ¥o«i@zà¹ìº•zhÓ˜DjšU¶þÝÊ0oÝï-órˆX¥°Ú%ÁfŒ-Ø·HMdš¦°¿Sà4Õóæ·Ä7V—0ï‡-·‡„yGÌ[7 |ؼºEœb…BTÇÇÆµ%û!‘šzTmÌjUVúBçÎn¤æ§TµØëúŠTEºÒƒÁÔZDk˺ª÷N ½¥Êo”Ò™ˆÉ‹È\ê ìC•Èœ%(=®´£ýGc0nÓj¤Óñ•T9Üøµ1äkŸKýbp›º6š1œ‘ö޵‹ÛÌÍ ®u6œ¿8‚ŸLÌ"geÜtæArÁ@En>ÉT CŒ–djVÕîR½6 EÔòHÙ fhÜ€Ì)l"‰à ïÞ?P4‡ ´…l? ©.”âr‹\ÍÌÍ»¸Œ[§Ë¬iœìÕMCr~È4ó±„3m|ªäu´g³'ÂD¿ïQ/ظÊH‹‘Ò‚Põ†¥ÏÏ™&¦‹ÔîËû%TÙŸǂmR")Ïy‘ v0€ú¯RÁsšÒ5^%_NÑ¥‹è tvJ{ µ³aÄuTföÓécÌ>ý»‡ÈÎ_Û˜&HÖ)jEªS¿H•.çÕ‚T/Z`ŠŒ–îö‚ë÷Ñéb<ÃÁnæLW PÊÉR àc+Žâ&v‘ž)Ї¢¼LImþ!*Þ3ÓJ¥UÕ_÷pÙ6î;g§€Saž)=Æ®ñ ÷º˜O[ß\Õ;HÐ;nX¸‡RÃi±§½[ÆàŠPé.”YB«Ú5/¹Pùo(3ª¥ï×0õK»žqð³+;5œ|¿a¡K1¤KhÿRúRÿÓ¦vW7þV”ù„%¨n±‹®¤—ãÆú¨ãü\ߦyŠ5Ÿyâ ú²)¿½V§’SŽÊ awyùOC8m!)É6qu7n–Ð+Γ š¶ùŽôá<—œKç:ÊÜò¢ðV»éÜÎ:á‹%E Û3xO?I«÷q‡šòEäKS>j`陀¿Ø™e>}Šë¨Õ™ZóæŽÏó'õ©+Åâº@+ñ÷;¢tŠ:‹ °¦_vQ§‡^B=ñ¡|AS»¿ŒòiW–ÕÛÎaý;·È¡½`Üœ_¸ØU)åu´;^1ѵW¶³Èǹèe(¬=ÀtŽåΓ¼?¸lX»t—†¨p7†¹‰ï&êàÊmuð>8¶¤J÷/8¿Û/©zõßqƵkàÔùÝhTX7¶ó mmR)\jœ×ñag`åšè°Æµ=ØyÔÇÎÿmí[º2ßn^”jæ‹ë[ø‚ãÓ_}~Á—Ý{PÁ¬—8ê]OµT‚¿ÓG:W^!‚z0Å6vÖ‡™Û#¡:•tØæ[ÐzýÔºuÌècGW÷q†4û§¤µ%ƒ^¶Ú0S’·ÒÓŽLÀÍb!Ë\ô°‡u³„UƒCÙºÂ,(ݸÒO«j•¦7ÉŒGŠw¨’hL_,iÂoÅ3¬íøð ­êeý”Ê·uãJ ׯRÁiùT÷0®ôó–4Àe©°õ!côÈNÌcî~*Ý0®ô¢vsV<ø/øãJ/&X —ˆvÕîÆ°•-€éÿJu o˜@œ&°n¢9>HÕïR­AYƒ¥X=Ѳ²@»œšÚ§‰æÃJwV °öBä_¾„ªº2Õv díA}DÏvÞ˜‰úGlé¹ó:PÑ…/8ª¥`/X9 ?Eg@˜UNÐ;”¿@¦¿¤2/Jš´ÏiŒb¾ä3ÿËWðùÉQÌ·D á°‚þí€5½êŠÓ™”𥖻®òÁlŽ«]ù÷‘Rt•Xà–®Ì·ç»®¦|ËPøöA$jdçÞTÚnbødi©DÚÍoJ7ªE2f¢ý.Õ”E2Üm†yѶ±@ˆÓÊjòèJÕü‹âôÙ®¶¤Êw¨’Žï¾ §ãÃ_íBUt…CNæí˜ðÈŠoý®öó.‚CöY’Qñíð!áEÓØ‘jüm ­8ŸÜbNK²tKõµØŠMF w©&èjì@‘õ¥"¶Ì#mIš·×²Ÿ>ÄN€»Tfíþ‘Úò}&Õæ„;½ƒmçºóÍÚ?L´5k4èóS£Y$£c"hPÖPÆ'òFÃÚ/AQŠgv?b4‹dÊÿng~€U©ºE2¶qÌÚÇÔ?¬ÝLt êÉ·)Õ‡o7¨i «jï¾}ìoçn‘LÂ>¶óÚ±vn¡°qÀÔü~‘£?Y{ùNíX;×¥Àh÷ÄŒÀŸÙ¯.ÖÎ#- <¿„8þCj(8‚=³/H…ú öÖt<¥òò0k'ûYÞ’Ì3øÌõé.UI–ÃÐ-T[Еùv¨y½?š“Y:q Pƒ=þ_¸c¢ãÃÚ jÓÚE¡N€€,o¨´ÕìÊö`Ø1¬½|X{kŒøJn³ÕY,òþ‚lgõ[ž_uÍ®fáÑŠs0å¨x·+;¼ÌD× °v;&¬tJMS6K2oã„ã(Rõ»TkPɤûÜò 3ýè¦v{)²'Ö(‹Û3R•ï âö‹CÞ‚B •Ó8&º^X{BaííÜêrz“p@¡††¿²k¸ftµŸË.”’]-­Jq ßÞðí ¯õjZY`Aªþ •}ÁµS›Ä˜Lš¦NÐe¨öO]õ]õÏÚû•1×ËN(óíånWÓ,ÞRù¾=Z$cñ· úˆ-A…¿X踷´ÀˆµÛ“…ÑŸÃ\ŸÿaR6ÎÕÜñA³@î×kéß}Áh‘LúÆ &uʈ`ã âÛ­!äç× ðíý|ÁžÈ´in7åpD³öi¢BµêÊ—*wµŸ¿8·L4aí‘çÞîj_²+¸ÔcØ•*=þj˜gðrz²ö®A•»®ž}ûŠ®,n?¶\\êÕÉp£7bÝÍv \j€£p^W(ï pB©,n‡wvû….54‚mKþ·6ë.YŽl‘L¸CMÏú–Ê_`Žº2'“v˜îº:M€ÇKjw3œfÂã]W\Lì‘|EWøö–ﺚò-Caííã ßý‚D2‘‹‰µ´vÐûÙ¸Ôf&ÚïR­Aaí䨽µöþ‚;º—šI-;L*è†/•q©vµ%ÕG$3?Àþ,‘Œù«](¬ZÕ“‘›;`fUÿœ8“c[Uc ë²Û9o.V%{ŪĤæ÷;Gxýâû‘ùÝLô™Ãð£©JÄP¹XVfbÆo%&õ\ —¥Îµ$阯.ý9ìC½—ú†J;PfëG×ü«¦“ZI™²IQôZlþ÷p0?´+eê\Œ"†*êeé “ʬ 3†ÎÙ\Ý×öYÃð†’;Ž Ô.ºò ¡™Vßš=uÝ R}Xû\Ö[WiGWý*13jj|èêÉ®VtÕ><û”%NÃ|{†î>°†CLê/»"Ö ÜÊ™pˆI Yº:¡2ºâ@u‡#žPxvEíÙÞ¯P~$jLª BT‚àùK×’ºð`aL*PY Ìö¦¶%kªãÿµÀ¼Õ>tuXÓ'£ÕWtÕù‚é¾ÀSâ·Eå 5îP¹˜‰d ô¡`R£Fþ˜T­…²!L*&z•êâú h/@æceÏ»\Ê>`R£¤šïBºíôO(Ú è]Û j¸Ø•3À¤‰;*Tq¥[xuÓÈgFû 4©Ö8­=¾slÃÏ/ÍÇAó¶ºð“ú¤«zô]Ñ_@O¯ O°7Ÿy¦´ÿ©õ ]ˆ>D¤ÎUŒ)¾ú ðnïfïÏT¾—T—ÖHŸ½4Vl"•æƒY¥{feµ¨d¶Ødç”ÚÆ´ZÔKGªüÝëßRŸ¢îHÕîPà—1¼¾¥ eÍ4”µ̉’î»ecÈg¦§˜µ0©~¤síÄ1‘¾µ«E•®¦†¶D¤Zƒ¤Ád¸À{Lu{ñHÆn»ùüµaVRÔ·³Y‚*0ZÒb;°~ºcUÅ¡:€wàQi ]k$¨UëŠÓ]¹gs€GYoWÖn½{Q[J¥¨5˜T©è;êvœYÚ7©¸9[ŸôêÎu›‰n¯ðÑ®»Ù"7æ ôéMn­èj U£±O܃Jª;Ét¦l,ë&UŒ;R¾`EªÆ$¨uÌì´_ ,)[HdqŒ{¢†€µÜ•—˜Ï·vãQ³éªÕwÔ>tej?6ÈÒG]íA¤jÿ”Êÿ‚Ѭ½ UýJWâQŸìʾàK>*ß¿à/¨-©äÛ*¢Ô˜h¹¦+¢örÜíjj-Mù\(³v¤¢ÜšÛs&ÇßíÊâÇ'#õiãüZ •ÌÚyk¿xQwŽÑ,$8Ø.Ð;”Чø +³ö¥&• ¾I©f¢Kþ*å»únz9q¾óWð¨67ùáðZ[`{€úØÎkPýÓÉDÔÎT³¥ÔÞø‚=8¡^®%õWPôTð¨Å|a –6<*jLLÝ<èáQ/þJd¾<£¬H•ÿ^``.á”ùvÚPÊ_To W:ø_½¢á÷§)M¾w·=Ø Å%•ä²AæÊ(°æŽÈ™iè/(%²çòayaãÀ£¦«ž¾‚¢&5R†U†Øšú÷ä–·Î|7RQ†XiÙÙü‡¢`5©R{>예f¢þ´šT©}j(N ͺ|gîÐË®˜´’ŠI¥°6º“Çg:ËKW$LÅAžØua;S“ú6_ ÌGn;Æ`ÖnvE§1µ.hÉJ3S—ÿP{‰#î¨}<C{0Ô¤ÒJmkÄXWÕ^ÿaí­1]*¹ÅÜ'T¼C•¤ŽP…ì¹Z6Lj¢iYŸ&º²­™¯Iõ`íKP²öÌ霕­ƒ]u hN¨z—*SÞúkãø{šT ^þ«/ho2JÖˆ™ð£l}A‹d ^49|.uª÷N/ÿú‚–‚°õñ&ó=ÖNŽ/E»PéAªr‡zc.”E28dƲííA˜Ô¨$ iMqZ“"™©þií{RÉÚµƒÉ®‰[ê‚o‡IMt× ª${ë[QûªÜ¥:Ñ£ÈíÍ0k5ÞP ¨TÝ &õAW/ I*ÿ𲞾8ê{%‘Z^8¹ŒFUÀƒ’jO‘(ðrËúO¨ü°ºüT¹Cß??Õ‚¢Ú-køªÖ¨'SÏwKX[ ŽÝ,”acN©¾à¸/°V±p§ è‚ü¼–0Ž©HûaCªÁƒŒ–Ä$»•/J1œ™h­.I…µ“¦†ÚKª[PÆÄÿÝÜB¦Ð”9vŽæ¿ƒªÿûÓD§Ö–¡°vY栜Ӓªù=?¦¥ 51€#ÑZ#Ys=·µÆÌñ>% ËÛÈðd")HŮ沾0†q‡úÚ®„J÷—2½EÏ ÍwÈ©×íüÝ‘:ÿìæ-q¸/H…µÃè%ªHS³íìD*Ûٌᔊ·hwàÏ$Mßž-Ÿjo ç © J45Üü‚ÉpLdމÂCŠÛ¨o>ÐþÒÕ ôÏAˆÔë´cbl¨"õúó§1¸½oç»ó¯Òìj~Š7”ï R/ÇNœ²•î œöò ýØz²ö/¥*/0\üÕ‚]•úUîR-mˆÔDg¯dlž®°vHœd<£âöÓD}‡\,nçT„¼©öj¾ëR·šµû7zˆÔÔË}¨3f𑚠wôn2z×íù7Óö~©=Kn·¶Iîè™ñ}ו½ìèŠ[j"ùJqû/cð#d©ó»–§, ¤Ù€¦{˜T»PÜR;N¦Ô–®°v3$l+ ñ³5¢5÷}”Ê |µC¤&š„%ë¡u1†(n©½<|A’úü‹ØÒ]ªÂ`W*|{÷†ÔâŽÚñíΑº%ßž¡,3ýò›âöü²ðhD*ÜD†Ph‹S’ß¿'‘Jó9^Õvu5þ¶«×w[‡2"Õ‚"=…ÍO± Å-õâ,€´×ßD!R±«_P[ 4k7×W¾ƒ’µ¿­éuL(¬-ã°XÔ÷Wp©*üm¬ø7”ÏÀ¥VÍØ)‰Y`>?ìBñÞ®Èj}7kµ+€oíÝ|;és#~@µ…«%\êÃ7¥Ç}¹ÂZcxý&Q\ªA=.pI*šk¨,üà’6ºÍí—?3G^v•>c|€ò.•íü=T¹CþTE‰þ=? .Tý€¢{H¶aÇKPíA*íÁjýV h7 º?ÓNþ Ðhpã7(ŠÔ¤^"änºÚˆ\ê³1¤õ&¸T8A#K]\`:ÌÚ¥«jtÿ0©\×—(Je㔬äöó×¾ÝÞúŒÂ¦amõ -Óa¾Ý†„›¿Â·ûam¢¹oÃûÜåÁÏZLp©L ·¶Ë‰ã_—’¥Š°æƒ—Õ¯$MÆ¥fH½LÜÎköëz’¥¢«ƒ¡¦—>îpªI{þ¡«Mc€KÍ2Ñ º¯ö`¾}ÜÕ^.Þ©òý š®ÌD×tUîP%Y!ÀTýÛ®vØþÖÕüËPÖJæc;oZ;\ê“14£9Üð!Åão]½–µ.•¸Ô¯¼3dëùáW('šû>ÖTéo¨’˜5·bWŒIµ>ìÁµšoÿg3 ©h8 º^Õ¼¬7uÑêÝ¬(5*’ÉF Y|µpLÄ~‡*E›'\*ù´l5÷}¿Ôîs^ .53®'3Ð2Û%Î/\J JÍJ¹ŸE ¯˜áà!Å2=ùîƒ?{V/fCÏV ð홫¥®'ü±³ÀüO©8qü¶†)ñYE e551]½–êBÁ.YêiçÉBC9zóKe“¸Ô2§³Ê:ÖÞz0%¸Ô ÖîSBI\já˜8õÂ;C«j—ZèíUòaP¦vÿðÊfíd’WÓ•2èºOs$ŠR3uˆ™²—\ÌDý/(.uj( ¡8—µ¡« NÆZîA•‡~©öú·®Lª5]ɨ«ÉTö[íqªÿ½À)ßòÍÚŸLtGíŬݜŒù«#.õižaŠÌãE€îB™o¯ºÚ±+¸ÔÌstÑü´ó—ÂZ¼ØÌ°rÏÁ%»*fíêŽÚû}àn¢ PfíìAŠI³‘/~NQ¢.•X´@ Í«yšfáBáÛ™yÀ\¾’­ ŠTÓÚó»pýT­öZëëIÆ¥ZëöÆë‡š_õàÏÒ'Ô·ºÊw¨’­©ÚTù[íç¾ì;PõŸ ÜÒUû§]å(¬]©§ý’+š£w?2vKýð {'Þd(èΑð ù®/Óà·è¥èד'ŽÇÉp©%؉ëšÍ¹ªî9˜áRËÁ‰£øªdK#Y‘ k‡1ÉÑxþ2å‡Ô¥–È1AµlI¶ýð.µP—Ê<—ø‚ P²v\ß *n,A©HUHxHí¾1dâönÛÙòdä³O(äïP¿¤Ê,Ð?¨KeôÔë¸Pùo¨’­ ä Ty°«„TiÃàRKúð ¯ï&¨]Ù-UO¬Eo}篎Úý#.µýSW]€wµ›1lB•k·cÖ¾EÜ~Ùƒñµ´q¨K-ôÅ+Çwº*øv=–L÷$æžRùv—z5†þ¿O/º Ö®æBæE§Y,CÕ¿a÷ ¶‡/ø%ÖnéIt0ΗcÂdàR Ï;§;è}ß—Zx(¤F”²#\jwFª—5I*_Wp©6¼P%´§«jÖ®P­iÔií@ù62\jQË£sY¼l7îÎ~·· —zU»ùö¾£«k?¡8èInYZ`»Á_º²sÐ÷ p©èêüE|u9ý§~øö)KœÊVé{Q¸ÔÝ\ \j‰ÜèžHfeÍâv‚mJÆ€z« eÖ^îPs,CaíëM•/=ÛXY¿R/7Þd˜òÛYmÒëB=N—:•ÐÐ¯í¼¦öv·«¹]n®oaãÀ¥–ŠC¦±Iiæý°.c8õ¯¾ \êƒ]íB…]Ù1Á5|Áõ‰KûíîE+ºò};u©²¸4¤jö}cèfíÄ $.^ÆÊú} 3\j©¼‹’ßž¨·$ïíŒìÉŒ7j´h^¹;Ã¥^u•î |mlŠHJ\[0Õvt»”ÆTû°HƲ…µvâø{¿$㪠ÙÑY\ªAý¡+ßÚáRMÔ¦à­è*ÿ½ÀikË ,lgnôUͦÿ¬,°>èêã ®I…µ36ëë/¨Èy­m¼Ö*ƒ®gÎN·É‹^ ~’$¨".õªvÐf³®|k/Ô¥–Ærã4/êÇWåxŠÛ‰úòÆ,Æ¥2ŽíêêŽTùn ç/ŽÔk/âRMªëv¦ õ’Tõ.Õ·{°0,µtÂòªÖ³?›¯À¥^®6átÏD¬f¥`¢~/ÖB]j!å¦rS†éʗʸTK¹¡Z³~êi1.ÕŽTuOÊñ n÷G«ãRÉÞ‰ïW¹î,ßn_0™“á Ù?J(ŸP‘ðÆy­èJµKÑÊÌod•/ C⊸Ô)~ÖÕ”Åí˜hµí\w¾àxÐUŠ'ùÖΰÔ+R]LÔw2ôø}/ë½@èêØX =~¥ŠÜ&ü©%ZÜÞîRíBå»1«ÂD× Ì·[$cÖÞwÔ^ÿ©«-¨ö Õ—jïw¨’óøjüýOÖ7 ŒK}\àŽ®Ä¥N€ÀÎÛß8Æ¥2Ìk4 kU‚‘ýÇ’ÌÚ?œÌæ„K-ÕtÕîºZƒ2kçMÆÎÁ-ßžêƒÚ¿s}éá–ª#õW$³ vùö 7QõR”ã…j\€@)¾¢Ì<\¦Áúµ…¿UÓU ÅY-ëáwIªÌ-µp¤;&¸vÿ„K}êµð&SÄ¥æ(Æ$W}Á)_š .¾=Ä,pI*Þdhý7îƒ6wɯP(Æ¥’„PHB(¤ž.Ì+Æ¥2‰2vS»íÁ…ö;Ô)KF*ÎA$J1.¨®”›)ß*\jeFUÑã@)v]ò‡%¸ÔJ㸫®òŽT²öH'ÏbO@u$J±¿—NS–zª`{¡§SKmƒ§0J›¦ö´àW(«KØ•Í>#q1øõŠÕ¥’Sô}mgÚC-ôø-âRSÃ[›:ĶK׿à¨À¥’Œ7A_d1ã#Ú›«KEWÁ:ÛÕÒoŽ]¬.ÕR«ÙÕØJ\ê“®jKô~Ûübu©Zà48Màm Ó` u©U„‚©}.uYª|ו©½ÒU~Míå_j߃ªÛÕîÛߺªÍÈ—(|»<Ã×Önu©‘#õ¡ÛÛÊvnÖþk;Önu©ŸþªdjxWü•Õ¥~ƒA-u©E©§)(üHA sN©üƒ.õßýú–¤úôíV7Áàƒýòº".5 23i˜S‹ ºÏ.@µ»]…mãÄ»"nWžL‹2Ñ+¡š_ YàRkâ À ¤µ¡^è³]àR‘ª6M8Ú” .µÒˆ©Ús4uôKRÑReæOºê+OaV—Z¹Ä1ö½Qù²Ðª´P—Ú쑼XøÁÝyá1.µš¿”-(ß®ŒK¥åQ—ºûÍÚIÈ(mœ•H¦›µŒA5¼]M«zöûªêR«Ñg—/Ø6 Ä¥žÆ;ƒ6N·¡Õo²WŒK­ÐöÖGc“æÏ|)Æ¥^L”:#‚mq©SC€ˆ±./[*]OÍÚm.A•O©T©·«öŠ1ä»ÚK¶G'4Xí®ö’í),ã¯<u©ïVæo(’,WͨQ¬.UveºÚ³«z˜o×…·Ê®3ªV6N…K½ª}|'•ùvh©ϰ` Õzü*Ëbºám»ªV—jÆpYàÆ1Q©KE*óW¿Ž‰µ×;Ôt‚ï/¨«e÷‹h*\êÕ‹~ØÕšTfí„:¼rLª¹ÇD…Kå ÏR/*¾Z9èkøˆdB%yئ`¬H—Jáí¥‹ I+…·.µR¡Puá 6b ùc‰j0ko,°£öc k·HšÀ4¥ö…ÖÊ5˜µ‡ÿ UïPSkÛ^´Òã÷¢v».µ-¨'ßÎÕÒÒHV °vMdËÁb†b'ŽoíV—JffV—›”çh¿‘x…KÍ•7ä‹ÚõZÛý²ÍJ]jæbÂ5¼5Æ|t¿¼®Â¥f³vµÅØ] Öλ(åÀõ*•ÿÅ¥æ*¢ª¦«tmçýGò*.ušÀë–q}°ÑóQ©K­*ËQ9EsÑo]¹O¬•¿W­¨½í¨}Üíjܭ݇¢Çoåéž^ÁºF¬,ºÔÚ9&T®ò2ù«©ðídïT«óÚR»Õ¥vsÈæÌDýÓ.µÒê¡Òê¡fÛξ]Ñã72Ç„îIs ¥)Ÿ eq»©ýà ¢+¿iU—:5æŸé ’”ÔÞïÆpU;wçÏ`\êåõƒ2™tEíÖã—)c¹s´·¾…H&‡»ÚéÊjL|kÏñ®+Û8›ºÊÖn ,™¦UK ÄÚ!ªèjÇ_ùuô•y©—=hïí{j7kÿõ bí•”›Ê»¨"ä5»úx <±^½è„K¥ÕC \%P®Ò³Ÿ'SK¥è¯^¯c0.õSí»PñSW—ç@íþÆK­ý_ºê wgãR5b PÈ.Uþ#y…KmÔ¥"Õ¹,{U[ªÞ¡ í j«vK]0E2”Aý’Š[ªŸrS‹ùöÓy~Ëe¨Á9H‚SÆšbÑ—Ö<(¸ÔË´:¯š7Ô^ÃÃÉÞ±\5¿ L­æÛ¹†ÛÓ½å~,xQãR»ÙÕq7†5¨ü·]íJõdí_JUîPKÖn\ª ,“]í.Ь½Ü¡~ÑŒnæd¦Y¬B1/õ]zôú‚ÖO†>ݯ¬p©±D±p ¿ P(œLÂ!'¯ä_xáR[d;G²µ/X‘ kã.ÕKC’Ê?¼àR6šÕZîé viPgäKœ_—ZÅ¥Îï%biš… Õ?ÕnOuKWɘÚÃç\X \j3Æä¢+»yùj‡Km´h£ŸL Ž¾u¿8«Â¥^x°À°³Àt_àUí{ 4ßþád¹µk $nçµöªvœŒ_ZK%;:HË6ô³X+\j³L'æMtcè ™ä.õá ^Õ¾¢«ñ +û‚icÃ"™z×Õ.”Y{Át‰kdЭ,pÄ;ÔÓ× °v(l^¶ÃåeÛOò¬#ßu5—µoW£ü­ö](âvøAØðpyo÷‹ß+\jaLmÓ¨SÙ¦+?…K%Ë"´K,Úv¤"n/¼_1Ò·X;;¿†·Á¥’9`º:H™¹ŸÖèñK3ÿ)KDkou¯f=~G{€ê;Pé.ÕëÏ&—šêúlÆ¥’ñû°À5µ—‡/ؾû‚TêefFM )E¼s[è"ØàR/áG1]q‰K®‰6q©¿tu|.Ð/&mp©”«| ,’±`Ûâö±eq»x‹E7¥Šÿ´«-©Ò]WÒž]©ðí”öÐõ´«–õ Ž\êû…ïEÅú¥ÓTò­=˜oçH¥b¤©ºPDÓàRß¼ïrL´­âÛë¸/ðü{Û8nÙàR*ï‚ø—1hÌÇË5{Pp©­}¨}Ó·Ã¥>^4’5(ª9Š-H¦[$ãô .õò-(²ÒéµÇü°@.&ö8àjiôøm™G§b§3‘Ì‚‰Òã÷Áv¡Ú*\n=ï@Y$cPáµf¢X{Æ_åöÕáR›½_Ó-üð¯dÖ^îRý2†©ˆÛ-¾’“™f± •þ6†Í/˜òÃüÎèñÛx­mÝŽ ^?üJ½—ÚŒP„™«¥ÿ~Õ¨K½F ùÅY .µÁÑ7“+ÔÂǃTæ‰Eý¬ûFßF‘r£HùòðëOWip©}¸<:ùYa .•º4Wæ;/íAzü^Ô~ÙÎ[ºÊRÁ†—ê—m¶l‘L¿CŽV7±¢öú·TåÒ‹uêÖ^[ß‚zˆd.ÇHÿHÍ‘Ìø%Õi þ,fíµ}¥+¸Ô×Õ(ÇËCŠo åÉÚûWj/æÛm; •ÿþ‚»PæÛ­ ›bšVu¿]+ÜR•™yªxÜ¡zõb\jç ¹‹¨ ÝÈâ± U¿Kuþùí µé~¹J£.õYªºaWâRI8놮ꇵOÐׯ dž®àR;ãc¢Å æü"š—úU.#}W TÍQi²WŒwÖéÜ…«¥¸Ô_P&UޑʬZEÈ» lw]™T»jïRÕöåyüÜ8/°¾qÄ¥þ[íK_P\ê¿¥Zƒ¢Ã†îÎfWå2¨Å,ÕŒK… o–e±ådZþ[ª¹Ôe©>­}X¨6Ì|'#.õ×ÌßAY$ó_ù²Õ? ž‰(|»õ² )=e;ýÙ¸ÔO©6—:ôlxþ™}A.¼~åK3.õrÇQEÕ5fXʬ}²áSCw©t•ïPí®vå½|@ 1&ö× êƒTÒÕ°ÉY+Píþéªî@™µswî<±žXóÔ§µ+\êuãdY»†ç.Ã0k×Ó}­Ð—"¿¸Á¥{ooܼì½} kGªÈm¢'³vÿº—ZÉÞ©ÑNIµ‡ÜàR;Íü»X€{X kÇDY`í°KR©ŸL×`ôó—3S{²ŸÕàRû¥Y‡©¦+ÿŽCß(û‚u¡J¨Ã¥>IEèo2ãªåÃNwv«K¥…H¡Ks‡Z¨]êâRë!ª±šDÓÎÁà?¤ô#ÿSª »êV—J/‹nœ—f¯©ÈÈuIÖ>»;-KÕþ–j×®ú]ªúþ?j”þ¾[]ª|MЗ®¢ƒ{ÐwãR¡Gj¤áóŠ]…Y{æE}» ÿ°ö=/ÚKý×ìm¢dø=º¸ÔÂØÇ Í=H_†p†p•BÃçb½‹K5Ï0eyK…µûäK—úkÄW41^ õº¸Tƒª$ãUÒ)×8þ©vÞÛý,Ö—Ú™Óy¿"O¦u¿Ui—:—XÖ/¨%]Á¥vê;IÙKR¥©ðWôC^Ò¾=_pÇ®àR¯POR-,°Þ¿àgaíŸ_°îHe¾/¨lÃ둺¢«'k'¾ÚÚ8Ŭ¢*TÞX q©9>CÚŠ_°Ý¥Z[ ‘ŒúlÛ9x9R¼¼ eÖΉÃµN'Ï•/XÌ·ÿ;T[€ªjOß}A‹dŽÿ*Öná‡eïPVÐý~2.•Ö4—ívyCöyœ^-’áî>ã«ì)wãRo}ÉŽ "¿#P·ºT-pV…¾îÎg-ë]\j Ôãtk·G‚mêRkµÓc0ºªÜ¡¾×•uOâ1S¯µ»ºÂÚ|!#å}z/pÁ¦µ?öÌ´.‚ =3»Õ¥&ê•/:õ·jíôøíý¸/pîÆ4w£ Eö§‰Ö û"¾ý²q"_0m|A¸T¤2¨KÓª%¨kŸ²ÜMtª|Ú)‚Ž~æè ߻ԩî¿Bù“öko] ŸûÏPp ßNÉXW7Ý}½¥òÃZãRÿuµìÙïÖûq_`) FïÑ6Ž¿áR/Pp^x†ºÀ¥v¸Ô¨RrØÐ\jÏýn 9¡°eo2x†n¾½ì@ýÃÚw¡êßRÆj \0†Hfü’ªu¿B¡w³v"fŸm~AYû xö`¶wÿH5.õ²ûWj7.U¯µ&ÕùËŽ‰(¸TFí ½_MзT T¥^:¸ãXkålRù'\ê É .µä¸#UJoÈIäË.Te‰RÍqñ¢¾¿²ºÔBX«Ã«uõøí? ô]¨þ·ÚkgžW÷{Ýwzüú]¡Æ:Ô—:5ô‡T+ºâRSd ,÷Ážö]ýnoC\ê¯/¿ù‚ã0kv%•ü,‹A]êUWåS*¿nbæÛ ¶{ýªÞ¡¾—Ê"™ŠTí;(ùö-;W€„“©î11àRDPaÔ‚]‰K=M@,@°ÌÞ¶×7àR/ Œ8dÚbtŸPp©Ãž,µ3"Oa~aÈ€Kº†O€÷ÕÿªûQß .u0P#YÝ K äM¦|HÕºFúöæ×;q©Å¦£«Ë\ÒU»Ã tcÑ—z=¹ÄÃë_âóR¯'φ©n@Á¥RåI=›}*,Jå{Ñh‘L¹Kµ •îPçÄ‹}¶e¾ç»¥Z‚Yöy©@•böÞëߺ x†5¨ö°ÀòÝÍÚ;jWæÀUª»ú·µ÷ ©¾Œd™äÅzßÉÀ¥âE_§ËŒd4îjÉ‹&³öϰ¹“Y{EWõþ× ðíp^ƒÇaïíþ~P—:¸;b7/Šßý¦ ƒºT j×¾u›7QÔNƯ^!}…µ›‰^¤*;Pã¾ÀR Ç„å·gßDáR]šGƒPKÉÞý«åÈÉpLˆóº:™…#5Ç»Ú'è õ‹Iu©C6ž¶óšTfíãn µÛÕrêÃÚ}Á¸ó?¬}Ê·o¢¹=|Áú ö…ZÜÞþwó ó,CaíÔðŽfžì¿¿è€Kõ¸CM»OÓî](¬Áƒ*ìÑp} '\ê°fþ4|æqàµT k¯æ¯¸y•º#‘ ŸÉg¨¦ í‚u©]Ù´‚ËëÇÂëç„10&Ý p©ƒ*ìaì’åù} ‡¸Ô©âû¬;_P•zï êAU‹dê?a*<ñ•%·øã®\êà9úAímÅ®¨Kôýöè´e¢Õ|;®ïbíæúXîR•RÆwR™o¯w©~ÂTí.Õi <ïX¶áŠTfíý¿øC}­«vüm S“ËPáaí«6³öÕ™×&“¸ÔËÆ|F5úy2.uXy¬åÊUƒK}ØÎ­[§©¶e¾=XËçô ЗÊ98w@ä˜]õíp©ÃøÁjþÊBµ»Ÿj¿¸¾cCWp©W©ˆEíæå'Ä«K­ín 9Yÿ‚Úû‡o7© o× þaíµ—´…µ×§c ôcÑ^>¡Œµ”Tmeãt³vüU­ßéJ/U_pÎ…zA5Ë)ZX Ö~Ùƒõ;µ[ÜÎáÅÜ¥=¨ñokß‚ Ã.”Y»Ø¥a,@1×çïAq©ñJi‡y=ôBA\êTg4Xÿ¡o](Õ.¥È $#çF4õH¸TLtfœ†©ã;dq©ñ°×Z(¡p¤©ú}'¹Lq]‚"’iâRy²Ø’ê\Öñ!UµîI4º\‚R‡táq¾”*Þ¿àÅÉð¹àdN(³vžXÉ +Œ®HîóÎ e·Ô¹Ya/€U»šÖôÞÎåïVžPøv5Ù«—Ú%Æó¥©Úߺʕ™/Kº²H&±@Õyµd±¨wxPX»Œa*{*w©¦ïŒÓwn@áÛ;º¨½rµtƒ¢*Þ¡¦¿Ç l7aã„Jw¨Ÿ‹â+‰/A婦µOÐe¨‚]ñ8`u^jõ°p1™÷;oÈ´ ^‚2ko_ðØY`ÿ4-ðü•vŒaZûTñ{ã蘨ɤò¡Ä¥þ¼ôp!3Çd Ê:l¤»]µk,êE2'T”ÚUÈV»ÅW‹ºoÈ'9Êg8¯SW96ÞÛÝ'Ö*ߥš)Aù–¥šÖþ”SÔ,(:…ö¡*R¥»Tç´úç u©càEÇxÊ?qÄ¥ž¿fÌK0«ö˜¹ «ñµª„’Ûä”à¸/pÆ\ûÆ .Õ¤Ê]'ŽIµd âROĉÓ;æ1¤kŸËŠsY’Ê{ø=¡òÊ6ÎiWugåó j.zЬ°Ku¿Y;²Ûæ„R?™hm1¾t2Æ¥^Z=|çdŒKýgŸ¢•/hu©'£HæP—æÓ®üà .õÁ¦±®.иÔO]™1´•°6§û¯ºÚ2ãRu¤¦ JhHziÍ7«Kµ"­~§«Šgà–*ÆÄú½ZQ¸PíCWx†]»ê/ðüÕv Æ]ªÚuÇi‘+&ju©ò ]¹VŒÁêR5ÏÆè2‘ -¢8úóôYÜÝ$Ï€[ªê¼æWÀ¿¥Z€"’Q ‘i¶¯öc ß®}<º]—tóênBì U?hIÖH¼ùv%.õ\ %®4›í:¼ZwžPªÔëêNY»p²J=wÔÎ Å-Õ®áÚÀ²©Ä¥Nø¥«ÖÕH|IW•H¦˜Ú‰Û¹yew°Ô ïRKÅõ1Âég¸Pé.UN¹}HÕÜ„*?eæÖ²{Eíåo(3†5(2~í¡~èæµÕîvuþ*w¨—…¹Pý.Õ€.K5 ûjoX{â6‘ƒ\_ÞY` CmêJ\êjßÑUKw©žŒaM*|»Ñ|i ­<èêÃ_½6¶ …oÏ@)yxnìôúå{ÑöáÛ-ÛÄ‚¿jÜR^4 ìªî,[jæÔ}pÓDÅ¥Nø/ÇDÿ°ö'×·&U¼«ýבº£ö޵g ?úÝ–ÔÞ±v5µsðeMë'N·[ªéŠV—spAWX{£A½Ñ²‹ºcÔN(«K¥ÞY·Ô`Ý"dq©õ`fñ»úlëæÝ2¨ὤ¢çWËFT[¹X]*)‚ßê .µ«ÕÃüûºD2(%!ÔnSÆ®ôøå Ö®6‰­'žÂÜ„Š7Û²‚v©>[*w]MY¾€2kow]MSIó2àBñÞn‡ÜØÇÎìwµ¿Àq‡2©JÑ{û T8¬Ýèþ¶±ÀpàÛ/&ZQ»Y»ëúµ7Ng©¿ ÜÈ`\êçÆiÝ2üí»¥vŽ úNøáNÎ:¡Ê]ªR†AY°ínçpÔ(Fß‘ª=,ð fH;PD29Ýu•S ;Pão»ÚT{€]²á#k·™zn‚Ù …µÛ…—)ýr1ñ÷`°[*Ï;êF²ùÅ¥Úç§xKÕw˜ïjŸßí ©ž¬ýCWkPõAí_CCWºâjiM×Ý™z'Ö®7dSû4à·“ñýU0k·÷+QØ<’×îöø.õP¯ûiùV(.õÉ®Zoœ8 ¾.Õö`µT.e¶î¦žžPfíjo\N©Ü‹I0.µ³õÎ0ÍvЬ°Ê5üâdÈŽ^؃ƥ^¾ mç¶£öö`WÜ{Ú±+¬½ó@g^Ë]Ò›L5ªñÖŽ cHX{7m_Ù•q©ºZÚ<% LX{D*kë:ˆÛÝÈ*}¨í-ðüU7—Æ`º";ziéŸ_pgãˆKµ3e‰8Áåmª°ñ¢¯eé‰uAªzוIÕººS®éª=HEPtÙƒ PæÛ _'C9ð’TÖ>­i{ã$¸ÔH;&,ÿj!§(Á¥FU÷·NÁM(¬²8v"äÌéìÎóŠI\ê´¦¿<Â]%¸Ônœ×—¨KåœÖôët~iÍ…úðíóõè3˜1,HeUØVlUBV¡° ÖNBÔ4(‹dÖˆµ7®–ž yQ÷M&Á¥š3;*½âö‹]¹}²ºTqôe(ɳæ.$˜%«K5ßn·‰=©d퇑zr2-’•ýîI .5ÂMDªÏF¶/èoq©ó»äûB*¬]io&ÕŒsÞ^tÁ¬ ›ê³Kÿ«À¤ÂÚÍDeíç¢/H]j©w¨R¬ÑOˆMV—ji$—²nHe\Ꟙcâ7ÇNÑ|{*~B-øvêRL´Ë#ù±vzÐE©“y/Ð7ãR?¯KóèxKµ°Àz_à<ýÞ{ÐLÔ߃ԥ^ Ì‹fLÔoލK}€:Å]Ù-5Þ!gã& Òñ` „jyGªd‘LºCÍ+^š .T|€Êw©ÚB:e‚K4oŒi|¥v¸T†ÈÏä-•…n,šàRŸíjK*‹d؃´VÞ„ú¸¥~o X;=ÒaÖÎï;Êð„ÂÚyDí3{y¿Ö2‰KÍÙž ‹-P×ðì?f&¸Ô¨¸Ó,"ò­..õÁ®Ú¸,Ðw2Æ¥RGTsÑo©|ßn\* olÄ¢} ªÜ8·Ëoµ¯l¸Ô«Ú *ïèª=¨==|AßÉdóí¼@êæµ«öñññíuä¶U>}{²²‚=(ÞdJùçôHãR/Rå»TkPX;7¯(bý”´î,ð÷ÏïöT‘®*Ö^ø‚æúîÎp©ÌÒ[W¼_…(¬=ä;Ô ™ÞP¾ëƒK½J…ë³Ì?a#Á¥¦hjç­¯ÚA﫽šoçÙ°Œ;Tþkmªfí<’Wû‚aG*|;#Q²eY”¶¡«šîRÕa“=©°vÈdÛ¹°ŽT¸T¾ ÙÕü–ËRU¾`¹«½‘*ß‹ŸŒ—Ä¥þ2†ö1(2+M÷ü¥Pí sKò³w’¸Ôœ!‹aA*¸ÔË9(µ¿6ñº®àRÓAPd©§]ùž.5Ò(1£ÒWm ʬ7™Gk÷7Nã½Ý23ëw¹•»T¿ âŽTõÿ:&ò”E2 cÐcæÅ!¯,°?H•±+P?É3Á¥:ñÕ‚Tp© 4'³eq»ùöðÕì·?\Lö¤R$“¸ÄágÐûV»Q—š¸ð2Üm‚¾¥ò=\êÃ1Ѩæ8¥ò};\j"§(«Oa^~W‚KEªÂ“:Ï·Pc’¨Kê—Téëç \êÔæ‘:,’¨bÔÎ(m*<ƒéªl|A¸Ô”?Lô¥ì åç@&¸ÔDIR°=_MWºÔ ”2¢?^‚²H†»³q²«5(óí\—,yøò}¥.õ_Y‰ë–µ‹ÛÇ]í›{.5Q^—ª™~NQ†K½¨]þjî€E©2\*Nf‚~Ôn^4í@¥¨ô]eæ¥VÆÔV ‹¯üùƒ.51Ç„/8Cñ÷tí*fíEôºVLêËp© ª1QLš˜5üù8.5Õ']ÁÄ…]aí…KœòJµêþ©Ä¥ž²‹2bàúÝø*‹K=e‰w¨¹ÔUc€K½ª½Üuµ´áR‡êRÛPu£¢ª-TTå`ÖNFŠ…jö8°ð©KM´ÒJJB˜o¹iÊçBɤÿjíâRmãü±@÷º”ÿ­½íèjÜ¥²N³]] ¸ÔÊù_Æ@øá¿·g¸ÔD½sªÜq.žÁ3\êÅäÛ/R5?nÏÑâv2è,T«yÃ®Ä¥ÚÆy©ø›#.õ j~ŠU»ŠÖ>Y”/Œ¡Ý¡¾·+n©Î9¸` qûÜ.ûÆÌ·óèÔà›8¾oO·›‰ª¹ F_1¸ÔDæ@"s Yæ€ßÌ?Ã¥&{º·Ì`1ÂTÄíäª%ËU³Ž@+Rñ&ÓlšÚ9ývv9ñiÙÑ:æM ¿9v†K½ªÝö`ßÑÕ‡oŸ·üÛ\YàG$3Ÿóß^ÔÎA_íÔ¥^¥âyÇèþ©àRìê°¾qŒK¥É%€ìqgÉp:›“¹Hå;™l‘L}0ÑcªÜ¡Î_¼l[³¿k†KMöÖ'ko)Ÿ®Ï7QãR?á—®ÔÞ?uÕŠÔðymfí㮫M(¸Ô÷v €¾7α±@züõ´À5¨(¥þ¢-©;e£±¿q\†KEWsYûve\ê§Úw¡,ãWÙjx9ä¶0/—z×Õ)^‚Z¨áÍåÓ·g;äªWµ5(ùö7@@¾ßP?_Õ…‚]bœh… ¿Ô;û9™¿ùÈC-ÙU ‹R-@™µ«†·êUíÍ;Pé*gƒÚ’ kö±vË“Y’o‡8æ¯ôÖ÷“BáBáÛ-(úŠ~2…Gd‹Ú8ýð+_2u©I ÙhY|½äs¡ðí¤4Sü>_lV÷ ¸T[àEªJÌýN™¿Ï_pì@)’a~í¨KµtÚcÓ(`¡Þ9‹KÍ$=8m,<Òã· å·ëÜB[Œ…ÞÜÌÚµß\åÊ?qŒKT¤ÿÕäžÒu¡ú”|kÖ±5îºúµÀc .õý€øŸ Â‡Ú³rks¶b‡µÃ¥Zˆ¼—ú–Š hẗ Ôé£!õìºä»Êp©¦vƒjV%´5­=Ej EÈ-uÓ•—š¢’[N(û‚<ïDßÉÀ¥f51ιò†<ˆýfÙ¸T©}.5¾ÚÐ Þ/ƒÊV—ª³¹Ô¨tÙ8¾ë³ºÔ@ßÁ;ƒušò[Ód¸Ô,ṳ́:튰ÖOÊV—ªšTöפJw¨)ËPùoµï.°ü­+3†5(Åí=›µsµì[PÖ=)üW»²^adÝË‹^1ù³9òø‡µÏ½(U±ºÔGcØ‚ C¿Æº]ãR?=ƒ¹¾~ø³ÏЏÔ_ÆÀ“…Þ×W‹Û©>ûnãRÿÝÎnª~ØU¶.7ÖíÍ·«— ÔØ6Ñ—š­Óà‘\e›½ø¥ÓÅzü“ŠÃ‹iPÃo)Y¨KÍ*3Ÿï¯+€U€ú‡W¡.5“é”U2Ö¨X?èÆ¢.5SYœ1Ù9R =~3õ8\® ôëè u©Ù’¦û8Ì®V T—š-rà†Iåogq©óϲÄ)ˆ1´-^a ýJàràú;ÛÙ¯X/áÃÚmm¤²±@êR3)‚ÙÚlI%.uî¼ÀRA­IeÖÞþ£®àR³u²9&ÖRr*ÿŠspÁÚ©Kͤ½}»cý§]mC{0†TaGªþðy \xýAx.õAªMµS—š³yQóíiêÃÚ§5í[»¸Ô_̭ۙíœÌÚyCNßmœdÖÎáeýúìÄYÑU¹Á']­I¥H¦Àð2I9WÝKó‹IKúðíÓ"ûryýoµOc]^àxʬÝ/ãÀ¥¾ß"_×ðÃŒ›×ðc«KUò°µÀ,Ê[ª(n©_)a#g&Ñ~7’réñk¯jæ3ôà7Ù+Ô¥fj-3)ÇÁK‘ßT¡d"Mv˜œÒ[*Éâv«K-„µJØxih~c“—ÊKÑüñÕå&ï@aí-Þu5_·Þa­¿q¬.õÓ®Lª%»*OÖNɘê—ì .µÔüËPX»%yõ(|ûÅDjO@ù_.5Csdš®_¡ü`.õiãÐË¢¿#P¡.5'»˜(¬=hMsøýJ±Hæãº4=ë[*ÿ–j\ªXZÐÍ«…°#Õø\ ÇÍ„œU(ãR•"h ̹•¨ð·]mªºÔ‹]5È›LóSšKµ[ª9™ø!ÕB”R-’)¨½õ©K-LW)‡œƒ~7’—ŠÚ3ºÚ•ªÝ¡ÌDw¿`Pû—Æ€µÔ®»ó)_Ê?&¨KÍz 3µÏ7·÷vö q©9CabxOY´£Ÿ4UŒK¥…HQ]ê”oyév5Ì_-„Ô¥6=ÐMÃü½À…v+¥•»®æwûBWX;¬e6b ûð $ \*ºúcþ„K½~AÛÎuGíãá †cðue\* (°«ù)^P~¥^韾©^ÊÞ€Š÷N {oç²õdí_Jõ·_Õ7ìªF2åˆR­lœnÖ®[jný;]©š£Á˜4¦—m¿#Pé·sKåb²©v¬]L\ætž’¾¡üÓ.µ|;Cä £+ÊÂv¦Ço£½y‹œƒvâø¿.µÀ˜ŠI M×—ˆµGü•&ýµ0ÚÆ„K-ºðÎð…Ú•ÖT 95ôÖ•¤ þØÇ".õü3NœP? Z¸Ô«ÚqÈV¼°‡ùvte^´ÛÆYX Ö.¢ª=öBÁî§žV¸TŒá²ÀK§)õÿø‚[vUÅ¥žN†#uëÉ¢ŠKµ=8ÍâýÍõ¹{°ùÊL´®ÛU—úh¢—NS¾1T¸Tìª «Xϰ–+j'n§kD ã;]ÉÚ ¯µ…ÇÌr±«]~Áµ—z¹õ ;Rý—*šãÑ®– ðíñãĹx†×WK¥!a†µl$.®|AãR?aŠH†°63]…ž×p÷˜¨p©írx}îÁÿTãRi.”ä£ï|A¬ý"•ù+s} R <Ã4† pwÈþv†K-U…G'މvø%•ºÔ’9&²Ôy-è*Z$C&9£WÔÒ?M·Â¥"Õ ÀTÖ}[h;VáR‹¥^¤²÷ö]•;T;Ì‹Zòð ÕÝ‚íøT{0‹d¶¾ Öž?|{»ôë[‘ÊâvíÁ·YDBÉUcHÇyÈ £\‚ÂÚi!R,nÇ®– ˆdbþ§1ø&š>âöHÔ·iíÉâövWûæ„K-…›ùW™/‡Ÿ]K5µÛr¯;RYÜÞYàøê÷ÿò¢[Æ0 ÂWv—úft^PŒ¶/ÕŽ ßàR =RJe´‡Zù‚p©¥w©ÚP¯ûþùPé5­éeW)ìHEÜ΄£ãrLª­HU>¥JöÓ”eðETõÂ,¡Výƒ>ó&û?èÇWÔ¥íÁ^Ôð”ERu¿Þ¹Â¥Ñ§,Üq¬·¡_œUÅ¥žÊ~R;,€Ÿ[áR ©…)%©â]ª_jï;R¥û<l'‚mÊX-fíJ—‡ÓyÁJù§]õ »*õŠ7æã,-Ð"™v×Õ.T¿ãTKÆðií£ØvÖKQóûÕzÜh&ºi âRç‡켈|«Æ—Zì9ÚˆuæÄ¿ëi…K}ø‚» Ì,о`ÿßÍÚ—L´Â.‘³Ý²¦Aµä—mÖj¾#•|†bù É?&àR‹Ñ² <ÐÕBûÍ —Zà¼J3µoI5˜îR-C³H¦ öÆÆ‘]µº%ß^Uf^µzè‡zô°"UØÃ¤2µÛáå?:‰KýÊÔîA楊”ÑÕ.Ô‡µ›] u k§ÝJ)æ¯ÚÖ^8Sýª?¨ýK]}X{0&‡b{Y0q©¹¨Ço.¤r5ê?W­Â¥@6ÚoöCÍЖ¬.µ*E0½·ºž¶Ÿ6Ž.Tzª}HµÖŠKÍUóÏ/H¹J;jW¯°£q]µÈ³aZk;‘ ¾Z&(bã,4º¬âRhPKRõ»ªåøÎ®På \‘ʸT8eX" Âóó¯êw(;¼æÙ˜&¨ EÜž¹˜×˜…ÝüÞj\ªš7΀·T<¤ø‰@.µu/ROù¢cá¤.µª?C~'R½ÕÞw¤ªÚ8…÷«”¿¯He‘Œ¾`£Q@ëÜ&<\êàm¢õ.ÕÚ”o¯ÊCn·>šVõ⻾&.µ½ªµ¤V¥ýàFø]Ou©™ªÆ–Mí^> ÐÄ¥&FÎÆáE“½Ãgx›¸TƒšK€¾¿àÂeíUºš ‘¥.KeUظ¾ÏN'”{L4ãRAoó¢+Píe œ Ë_°,°@5¾;¬½íjAªñ·T›j‡K}ø‚cX‚·k2é׺‚Keò{.T3¡û„r‰f\ê§®6÷ q©ŸÛùü56ì*üËÚiÖqBù{¿ÿl!²&/zŽ>ɰÀŸ¾o.”Y»ÞE«ñÎcXXà¸ëêü'Ý›j-{ノ¥VzÐ kÛhvð êRE4­p´wQ?¾jp©U¯“dˆ/I¹Ä-X;\j¥nµ–GÜ‹ª5¸ÔJMÕÍksÂ¥V¨ÆÊëʵŸy¸.T½/ðj¢L¢9üÛD—šáqN(Ûƒ¶ÝøªÁ¥>Jesâ6\j¥Æ¤Úû•©Ý¿6¸Ô+ñUÁõùN .µùbGªù«©ˆÛí¥¨Ô®lœ”þ)ÕÖóý Fjâ®{pÁ®àRÔ>‰Èe©°v6ª‘ÅôU[Ù8p©5å»ÚÏ_¶}…K­”™ãd6·3\ê +=R25qçUÃ÷WùÉÚj·/è›h6ßÎÇ„ÙÕŠ‰ækŸÛeßÚÅ¥Ú‰s±vzG¯A™µ›oÿ΋æk\à’ÚÍ·çµoAMk?¯ôù®«^ü\µ–Í·'t•¿³+óퟧ³mç•c‚ºÔwJÐ *ZÌpl|A¸ÔJû‚o u©Uo2 \‚·g(¡K|ÅCŠß!¶•|×Õ÷PÄí… PAålY ñu©Œ®ˆ4›´uíŧ›Õ¥š1h.À®TX»uBè©6æÃ§Ïšõøe°ÔQe îIÑóѬ.•2°¬‘z½ú T›Õ¥L”WµÑTœu,Ü&¬.U¿½$.&–Ի߿Á¥2$b2¯Ó¹3,ø+êRß&0·1ä c¨Ö^šŠ.jÿ±?ªÞÕ>eyïÁ¾#‘LÃ_©om¬ö†¼¢«Y;‡{ñßE\*P¥5Û8Tû]#=~Iò<h¿i/E~'Ïf\jã!%¡v¶ó±°@êRšùV=C3kÿp}ÎýøoÈ­Y$C„¬ç™Öø^ ïÛéñ{½ðâµ\‘ vI]#þÐÕ‚1XÜ^î_°´vøqKüêo]‚ú°ö¯¡úñ Õø€ZÑU·[*^Tý¦®ŒK½ØUy0†(»¥š®t:—´¥+¬Âr;lr–Ϙ4êR+ÅïÖJ«5ó ~¨F]jÕïI5I÷v^X o2ÒU½n« _X Ö>8&( iDZ³ÀñµÓ†º—(q©¥5óííc ­\*RM­EàÓu¡â]íÓöÕ>ž"®áëRõ·óø°ö?tµ Uù0†ëÆ©;_°~-%Ù• ‹dxøæp2 äèw©¦ ¼¡ì@}Z; |}·e¨N]êå˜@W´ß\1†~|D2‘ž™©6N?,’áýÊz¤ìèª3/µQ‚q© ·ù8~¨Ök·/¸«v¬|†jÝHö êß_pª¡+y†ìÄÁ3ø­•;\j;Æ]퓚yog×õu¸Ôð ] $¤‚K}2æô²`íá÷OJí%•UTùo}.©J³PÍÆ]ùÞ..5_*õÌ®xU;ö ¸Ôt¨#‘mX­ÝJZ°+zü^¥²Éøuô.]å’¿ÛΡý u±ö%(¬ÝLôâdÂŽ]™µlœ6¨á- Ön\êÀÉ ÞE‡yQ7êëѬÝbQb†ažÁ·vãRGyPûØ‘ê÷›]íBå;”mçË\‚²HÆ ÆÔÊv6.•‚îjÉÃ{ ÄÚ¹ã´ËƱ‹ÉÂìvUŒaA*‹dêÿn¾}šÅ*Túðí^t ê¾} ßÎ…÷’hmOaþ<¯—Úh ÊœŒØÛ3øþ .õb gµ‹ÚݹåRôIÿþµ°Àú)U6×GåËÂ1‘Ì·§ÿÝ"™f“þÿbÒ“ùö hÚÚ[*ãÀ¥^tuÙƒucp©Íò¯TþË®üøŠºÔ«®2 ,ºÊÉ”»®ò¥ ”ùöϰù­.Ua§Ã‹SCr}þv†K½F˶±e‘Lføö¾¥+²Â:´lG*kyäjép©Ïvµ%Õ¸CͰÿËCÜnÙÑ{PX;ãù [Ç·/DÈp©-ã)ènÕ²o V—j (èh}0°ìXø‚p© Ž~Ê·¼@¬‚#ØjÓË‚o‡K%q1^’[öÔn‘ •/ÊooÃòÛý‘(.õ¢+xû²@úÉ(Uþ—T0& Gj=î ŒHF+[µÓáR/G*ƒ†¯Æ° Uü‡1ÝH_Wp©W©ú”ÿ«E2æúðí–[»"UØ—=hž¡ï@=D2 F¿$.®¨ý!n·í\v¬½šoç 'O¦Ù¼‰»w¨s1ùCí+PÔ¥¾JÞ D*ËH~XÛÂÝb3vië ŠK-T M7'Àúlé.Õ×vÕ>âö¹]~;™¶ð&—Úàèý%€\ù‚X;/ÍÈbMƒêÅç;\j3Žž‘(‡¦Œµ…iP.µAa_¥Â·/Ä p©‡W$3s ÊêR OaŒp:¤«—Ö\¨ðù-ˆòºµwØ%E2¹XU#‰@É'_:\êUW^¤r _°[$Sþ!ÕŠg葌=`WKPÖn&º+Õ‡µ/UXàø€ZÙ8ݬ/ZÊW O¾½<ÃÔGÜnþjšÅ2¾ÃlrÖ Tú'TÚÂÚ5½î{¨r‡Êtšš ËPX;¿M¤Þ$×Ҕυ’µwõ­í‡F¢ôF°ÝN«KÕ d. kç§X–Š®§£?¨ÝLÔ=臸ÔÒ˜ÈÖŒ‰»HåÞ\j£ LÓ8†^H{kþÕrÀ¥òú³9†Ñþ¸«a=~hP®Ú\*Y¥ ‚"›³¢v‹d¬R¯|÷Í·—;Ô®TmIWKPý®«)ßRÉÚ»Ž‰z)3*ø)Í.µèÊÔ[_ÒßÉÿ*Þ¡lãÌ&¨ •> †¸Ô)ß2TFW2†®K\é–[;\×7¨KÊH¹|Á`éß N.µ‹–í‡ôÂóNóßd\ê³1ô]©ÃFÕ1aºÚ5ÑñaWï†ï˜!mØ\ê Ãç` äÿ>ŒK vÊ·“zÚRn\j‡w~§ÄW5Rùó¼\j 0┯vãRՀ zµ¤tÿUmÀ¥>K‘Ê?qŒK…ÇAW¥ïAµ;Ôˆ@P vÕÿ–ê×\ÊúÉXÃkydÛÙ½Z«K•T¦öóWØÊ¸Ô TÐÔð‘¾0oÀ¥²q2EÊs©Ë ´Jÿ:;¹½ùôÙ°ºÔÏš1¬-°ümW¥_ìÊ÷íéÃÚ_æ(©¶teÖ~ UFª‚T~øau©ú‚S–—Tš-ÛŠFÂÚ­ƒÙC™ü”æau©ZàLYŠ,uup©ÎÃ] o§OÑëpu¡ðí¼Öv랤K\_û8àR/RA(ôlNÆ·vêR¤êÌK][ ¾q =™µ×©TÍÑmãÈ‹ž ƒ?CaÀ¥võ6œ w(ãÀ¥¢«_Rõ/8€*èj|~Á…Òã·sLô`v…“ þá%.Õt55ô†*,ÐßÎôø}ªt:ã-I•îPçŸÅWݼzã ZëBÔ'.uÊ%NY¤+ß_Á¥vØðžm ¨c°7™þOµ/|Á[ûΤÇogfñ;íeít==â+¸Ô T"Ø>vÔ^Í·£vZàbWkRŵ‡;Ô’‰VóíôÞ ¶À´³@óíÜ&ì˜H[ºÂ·ÃÄuz±^¯¨ú7Ôt‚«v—z…ú΋¥¾)ö×Õ’–Ý)!øžÁêRÕ a¶<EÈŒD ~éô€K­š‚é45Aßj÷T«Kóõ­.Õö` ß-kçMæêm Rå»TS–W©Ôˆ•NSãR—ú¡ö6Hÿ^R{}°+3†´£«öðÓç\2k·sP™N½™Tþ;\êÃì £\:RKUÂF.ëq iá¥.©J7kgåˆÌA]j·G'8ú=…KíÔtŠhðW½¯è ßNÑßEík÷yçÑ-nÇhlÒ“mgß·Ã¥^¡D¬wºÊ/Aµ» ÷/¸õÉ|Å{;c‰ƒ¥BLv—z•*Þ¥Zƒ²H¦Þ¿àeã¬,pØ-Õìê¿"•k Ê"¬î”›P·Ô‹¿ ;PX{ÇD•™Y:s—Bôc¸Ôו90©ä÷ô½¨q©vöàˆ;RaíÔ†#U¿Œ^õÉâ1|û@íÃÔîù«tP—ŠTål3]åp[Ó¤C\j¦ýæ ¨dïín:Ä¥Ô/©ÌD½ƒ>Ô¥²À ú ªû#}Ó—z1†až¡.ÁtÀ¥vª°¯ÆÀóŽË˜¤ã°H'S¹ÄQÜ)é .µW 9&êØ±+‹dú]íårâ¬Hõk7]‚ ÿ°öM©àR¯ÛùK©>"™iû{.µWîÎõËæ»êŸÆ°…µÓà /:ÍbJÖ>ômtE€ó:܇”tÀ¥˜Ù/]%”|Ï@]ê;¡ä—T“+ogïL‡¸Ô\Ï;ÆÄ1æ#ºo}é0.õ #åèH6—ú ö~;R½s0Æ¥ö~—j.ú-•¯+ãRéÀß;þÊ"™¨|_à´¦_j_²+¸Ô‹Ú/&vtõ`ízøýõ}Ï-’Á3ô/ÕÞ?¾ ÛùÈ;PÄíÔ˜<«Ý?Ó‡o6›#Ø«Ú ”ùv\Ÿ]xÓŽ®àR™ã²-üX€Jwc˜ßí ©>¬½ô‹Úw¾`*Ÿj?¾3¸ÔQ5‘Ù/PþÆK0q¨}råï=èp©—/ñ¢—cÂc-Óa=~#ÇïíW(p©vÕ×~.ÐÕ²ùöü¿Û9xÊÂAŸýÓ.õáH¶ö#Uu9útÀ¥eÌeÅ bÝßÎp©è*—ñdW¾1äò +’¬ýjW{PX;Oa£Ú-n÷ã+¸ÔÁù¡†Ï¥3°,¸€Ò—: ç êqz%¾j φp©ƒI4C (fúÙK*wÞD:àRß²´ÑÚòÛßj½õê’zé€KªtÆ>†LÌàÒ²é€K¼ª]¤Šœƒ oÈôø•wmçëW ÂƒÚÍD놮ú‡µ—K¦P+Ö..5W=…¿È6ÌF/,ð)’3²ùö©ÌÚó?¤Z±v¸Ô»Ú…z²v‹ÆÔC$SÛjÉÚ©K}ûƒ€Öö8,’‰w¨ë\2ßnºÒ¼‰je+POÖþáÖ âö/¿ \ê Ž~ nô–Ïà¦Ê§C\j=·Ÿh;GŠh’;b p©ƒÜªÇÌ\¹.Aaí6žÂay}Ñ¿À¥ ºÃs­ÂáæÉ¤C\j¶e]·‰~9Pýº@]j·`›@Á²Â¢Ö¸Ô© jEí.Õ†çVú@v–wÜU ¾]eO \“ kWPT†%37’ p©ñÕÜâi‚ºPä·ž£mfqátg ¥—ˆÔ*Úxê[AšÆÞ깫úÆuа{óÉ¥•:Te^S0³ÊRA¥Uõ꘠ËPrít £í° ,>|®?@¤Ûò”!wæR ð¨C¥À)ê,ª?Â¥[ßCn¯Û½™qsÁÍLA<ê)‹ÚÒJ6cvŸG V“Êëc7ò“JÙàV¥`<*uáÝQ,‹Ü§ƒñ¨‚šK€¦¹TЬ½‰öCIÖÉu½ú„^j_ÐŒ¡ôbÆC<*Råª÷˜YèúV»¯+ãQb@D åØTºC}míð¨P»º*«ýb KP²v›Á›©™°‰Óծƣ~.ð%ˆ®újjè­«ºó?¬ÝŒaÓ®àQöàÕɸC;SjþêÉõ-ù+ãQqèCë¿Z=ãQ5âxCù•ý)$³ö •»Všo_ð¢âQ Ü`‹t³NvO jŸÖª2w}£S†x þûqHí¾@;&^Ëš±‡Û%=ñ¨žµžµõB»C¥RhmnP¹3TjJ<ªAM ýèªÆ-¨p_àØ_ xÔ@SÞ¹¬/ Ò}¹’÷Ñ‰Ž³Ïñ¨§·ÑM¢Û8å[»xÔÓE tu°@.%nUq âQMªÓ…)3úº š¤Š„jНv¥’µGkµBÊ[å†êݦ õº@y†©µU©Ä£N –º¯+ñ¨ó ägt[¬:œPþáQç)8ÿü dJ÷yXTÌ4mÌ=Ä ÅìQ/™ºÁjžƒÛ§/…B£{ÒÔXþ åï?q¨ó]í}–ïTÞ>¤Šò]FÈ;R‰Uê¯mßï°!o1‘‡9•^l.°³Ë<IE¼àvðLÁêQ ßE¬ê¸[Õ¦ŠA‹úORq?Ub`¦Sfµy¤KPš?ÓÆ‡T»PõlåÝåµ-ÏÜË TÿÛ¦v¡Æ]ª©Ÿ”]Þ ˜‘ªÎ=E³gêa‘ÂB€&öÔ€ººŸµ@-OrGÜžHñ/‘R°ºµ‘Ô>&(=tÆÜ/çIK”%™péÊûI/¹Sl¶%—DE¤¨·ËT¬(ÈrBM3¿\&NÑKHío¡v¡:Z@Öwì@ûúÇLo}IÄéƒ¦ÒØC hÊ x¢ u]òIôÐñèÜÿ¢®G©Z·2¿ä)tL½ò⨼´z\vÍTþ*]¨²(L½–ÿº@Åé4jœÇØ[íyª}@±À/ư¥7˜Ò±ÐŽ…vÛ6~D o T®)}oZê‡T©XÈ¿> ŠBþr©\’µS» R%çx…IoÔ;éá+5KÕ÷SªƒMF¥ncˆ†èÌî+äÏÀÖ¹ÑtµÁ®—rd·ÞÔÏÏ8H;ôÄtƶzÙK+J'~?A_߯šT ºêCMù–¡©Óì¶vÚd‚~Ÿ¬ŽbM[ïÝå«v{$\xæwR¼Cu&|šð.”l½d»Õ”¨%©jW#s*k´n(n‹¸*ß¡&@œo¨ègýGXÓ¢C>gM–(Í*æÝÁ Óõþ\FÂGdUÞ<èëqÝmy0–aqR=ùù‹“Ëí”zBéZt4¥˜Ë«‰‰ž~}ã°LQ¬)ªªF¿ª3wóçÌxì”ï:ï•™ÕíX1£¨Ÿ­¬Ñ<™¦84­.î ŇVŸö®Hù®ð©æ·Ï ; ×Cc´¦ÕV¦ÛÍ ÈC㿞ôÖ Ú]ª2¬käžT´ñ¥¾}0îú’|¹%§ô¨iq5AW¡ Ls@‰Ç©0ÝÔŽTÅÔî;uQ¦))Açü¥·ðanSÅ*}HE6|¹!¬H•?¤ÊƒPÇr¯nûÂJÖn³ 2ؗƦ N=âÔE™V†U޵¥V™fè_CÉ«7ÝrÛ¥¯úå,õãQ¦¦«Ðó 2†¶plÙHTÞ˜Šj ·:ÏŽ¶¿ ¢ ¨ 6tÍg~¢Dµ¶M’ª·Ëlß!ÛHT›Òt‰;L*;_Úø*©·^ú~®7Ì=¡(=ýL¦hÁމ•/Hš£ÚŽ[ú4ðiaxà õÑ´ÚÔ>{¿+¿2RzzY .\3›%Ílжª²8‘k`7J·'Î|¼þª¾ —¡ÔØtVFb‘Õ T¼Û•5­nD¡¯æÇ.Tú€*Ê¥ž-ä_j_°vQ¦9ëFrþR‰`«¸>w’Ç Uþ†ªÇTEí¼>“µ|XË ”¬·Þ~(-û•O3·ó ”IS({tÔûeï~½o¤‰/2ekxdÓ”Eá)P NIå/ÂÓB³Š¢fmp‘>÷E˜æ¬Y:¹X僕‚·‚2­ÖÄWÁGJ†y½¤¸P™ïSÖØ*h^yЉ[×ûIaí„_^ ©_:æÏªN—§4w¨Ë %[/”ïÓ32^zF®@u¤RCU_/ÔÏ5?_+Rx Ô\jd©iÂ{PžÒä ª+}Ê盨HÓœ9º²JÒ«M~†XãßP¥YÍý ”ZVÓbÊò#ÕålJqLäè²9´µ>ƒ)÷™;RÉÚ‰K7ÆeoDí»Dã ¦vÿZQ.õ(\á±E£GfÊuk¡Òã_Mù¾J/2EMæ¦Ö¾Ð•|û¡ìÄœ´[·ñ)>Q)<5¨ª‘uDs2 PòíŪÛ3”¿ý”ÂhQˆêÿ„Ê;PX;Eº%ׯ¤²¨É¤Â‹BÀE¿6:Ú@ÔO¨bœ— ¸£ Ô§džG·µð %käFõŒ,ÖÎ-úuäQj±Žƒäë´HZSôëw"M|k%TÓmð¼î²ýN–‘ÂÓ¨Ëu J‘ 7çyõþB*Yû¡Ü‘œdíõ=Uû åŸ84ñ=4¡: p>¨Å[€JžÒ ½Ò†yOªÄ@Ôƒ‚æã»&¢šolºÊ‰w¢%¨„T:è¹;WëEÚýê$ 5²åC´bÇd’(Ô ð† @Å(|; ÿÆkS*ÞSû¯R)‰IÂ9iŽGë…;Žÿ&“àP ªj;×~ÙƒnP”Ä¡T¥áq‹6 iAª·¤ è ¯´@’æúáB 5« ùü%µ×‹Cv¯$&5ód‘‹ØÁz‰ýng)`íjÈgPgôvì@É·›T¹Ùž#Õ/$IbRsgÙºM]¦·_-‚ùö€Ú¹˜Œ¸£vÅíÐTó[~ñy“ÉÇ”Š&¾™2Ïl3O¸˜ ¿±G2&µp]ê Š,‡2ú]^’˜Ô ]?w¡ô&SÕø–ÀÅÿS \Z+|KbRO©* ÌH5v¤"’Q'€Ø• ;¡Zò_Õ’˜ÔR@¢¾yŒ~¶[¢ø´Ð±¨øt¾Ø¼ ü)bíJ­>)¬­ä D¿…Fb ê3TÛ€“:_²Âë—Øè_¾²@+>Õ}p>ù¼ `¢ß#Á¤Ê¢Nœ]©PНšÈ³]©x$Ç"«qB©Ù¤òT˜Ô¨zô¶%ßžéÿ”)‰e(q‹îÄŒJÙ`‡•“èŽSß]I—¡°vƒ§,œÎi jÈ_%hŽq|%M|IÔΩqÐÛ1}ϱöAÎ÷0åîìwÑHbR'À+KF_pJi¾ACPIlö˜¹•?¡Ô ,${U[âM¦£öjwgè—¥'ŠOMª¤Ã+¤w¤šÖ>,7éHhÝTåŸ]"RyŒ¦=ê„\’cç‘¡ð€¼÷2 Rt^‘7t‘z(WcÊy¹X–*þ½À]¨™z .8öL´E£”ýBgèj½Y~²r\(]QcX‚Ú•l‘?@ ‰Hö#Uîz@ŽæØ}r0‰H-CC T·Rv¤ÒuzEEs)ÕLÔ­ú´¶µ µWdôn_èJÛ"­ú“ßí8‰H}Z` ó¬,PDj eN ÅEýVýIDjè&ÕaR™‰ú‡ ˆÔ'¨3PÞ‚’µGÍ1w$æ^´!RªŒ\®}+h§5© âéXU+.ÇFPš¬eÓ°ŸÅ!OT •xÛ„‘:Œ”¨¥ó›$ üGDj Ñ0ÇŠ®ºò[ª'©OP¥6°¥Ôö÷z-vÑžÔüŽãIDj¾×’Š»ôÕïišD¤†Y œl¶èqÁÉ4¬z÷k¨öO©ÂÖNÆÛxQ¢Ç´ðŠ‘jM "ö úq7†­¹&g J2‘íiÕŸ»©Ý÷í"RC5kÿ*ý*ì@eÊßIõÉ<Ç áD*P3¦Ùd¨D­ Š&h$zXÒ¨z Šú ÞU‡øï2¨Lþko†==ô"P¸Ö*J©/»gêP›ªJJÒ%¢Zoªè>ekÝKò‡üyK"°òË4³ØÓ‹T}Œï¤â!F8¡ê14Gމî׺dkÝˉP´£~Öc†=¥Rbj-"ß²®ÊßPµ¯/-JIü÷¯/¨Óür¬LëÞ¬9€ç× ì ú1#P›Gz!;­5«Dõ Z÷$ÇÓÛ¨¼úßRùGj>x+ü*üSª²‘*•¿“Jy`D}… ¨Eù«~ø½²U¢Š~«A Iµ^¤òc¨ÁZØW]ojm¶q|cúTØÂÚÓ´öI)k$æ&¿Ø=‹@Mð‹…—ñr=Rý=(õ¨ºuÐ×@Fû…X H¥WAîx¸¨}JÖÞT[¢²=ª±éyáb"õ E7üLsŽàg\e¨fIƒÌŠÐØÍ~!jZûæò0^·Ö7½e„²ç! m£ß6‹>}@ªÖ3k ‰0†â ŠÍJ²Û®ßC4‹=ö c˜Ä ³ßb ‹=möùð Öy$ú½,³ÈÓ ©£s"ÚæŸñâNŸ‘Ò’"vêu¡»Bå?U/¯{+Š’S?DÂVzM´È _ý¢¼,æÔ ÎÊQc)R~§ÇLßA–)CÎË»òÊ?µÄœšT7Ç×²Þ l~]Cs"Ý^=Ïö¤¶½ùä~†9’*ÄcšÝ)H_f5'ÆÔoꊾoYÞR…ï¤JèJÇrTÚO>Ä»­é*ß¡ mÝZlmª|~A%n•wvú2cTù[ËèßI¥&\î”õ;¨iíõP& ÍôêÕƒú|'‚á zPUù.þ{CùB "õh)‘)CшúeXYÔ)õä©«ï`  ù³²˜Ór’ëÌýž˜YÄéR½œ+H _’n¾×Årkü;™¾Äå>p F›úm#³hÓBí¯‘ÄšB*ž«RÚdµ@oáØ¢ï{–áKªB¨`¯ Ï0bMSþÂéÙ³±_CWÄšN€7¬ƒ — äÕ{åòdµ)•(ýW¡B Iyçå’£ï¥δ¬Šyoáë߯˜záû©xxÏ ¥§Ê_ ÕþÔT½Äü+šR+°¨NÕ…¼¡UÒƒ_QT\zâtH,¢K íôK ™p´ŽŒ~uZ]šI'U‡… ~ïÃ]ú Õv ¦êpVí5ZÉÎ –^pÄÄA› Ô;£èàóÄ’KÏ–(â³ZEli*ôhÖÓŠ–óÉçÚ ]{é ¢†š5‹Jì  •¦‡¸‡T”~” þÉï¹vü£N{°»™LP,Éo>Zjøª„tì@‘¶®'U%qæAâ·c,âJé69xjŒ‡mß/гw(ÿýüEúØaŽÏŒéÙ;Ôo¡tUõC9_ýðµ £N ÊêD<›ü.E\iTäÕͪ„`ËócQ¥Ÿ@5µ¼4î*7=µ .wKz²2S½$Ziž¿lËø16£NJŒÜß•Ð?¹±ˆ)å ù×]¶ª[‰)ÏTU,þævaÒi¢Eò ~)¸á…rܤS“*éÍdWåòè• £ZšÂ%”]€Òó I V\_xQ_úz¼¨3 ´+# YwÖ´¢õq‡*[ÍèiJ<) ݧ;~;abu¿ ¦ˆ&•çdž/ÙŸ>Å]DÂËœï =•1qБըµâwW(âFï«J­¢¿ås/ZH š+zyù,­MYz¢,'¦jßéË«ëlT£ûKÍØ ŽÑt #%Í÷(»îÕÏy*¢Dƒæ\‘HÈ,~o†">´FµlI‹k…Y6?¹Pzk1–]"á(Ó‚wªçÒFÇïNs›^ýÔÅ"2T@l|ãOÊÊºè  ëpKL*z·ë =} ThÔ³ëiå Æå’BgcóèëduªÝ¥šù–¡úßRÙÙ5(.ž qnd·Û+àƒF… å=j¾’l¿Ôãó™åH,0×(±þ˜sYïûþ–TéCW‡zäì.g»xÚ ƒšw Tn4/6züi‰/˜}¶·XûàÁ[™µÙA=øåF:´Ú;’Η–TñÞ²Ï\UjH‡ê ª^{N¸÷² š)04’½%. eŠRÝöU¬™/†àžÃ•RÆTœæ©ç¨@9ò[W¸ÐƒF-Måü©%{ð¿Mxóc£ö_KÖeØ/«âB¿XwX€²Øþ¸ëjMªú¡+&wÍ×®·¥»´RFjÏQˆ|ëŴ‡J¦HmÉÑìµmayØyå$ocd³sß½Ø0SÚöºDou|©Ð¡´´™o¨>45âÕq/Q) ³§ÐòÓ]W‰’žÙ1gY*.Ÿ²ªïˆWgBõ`èä¦Ú+Rq¥´uðL½¤«v‡ú^*1¢ÌnÉ<±5>öÝf™~ ekò‘ü¾ÇUŒh¶ÉÄŒ«M‰}ýðWT(Q šÉ6VG)¹j—ߎqDDgBÊÍžºýø ZÔv¼“Ùíá’Ÿö]¡C2©ÆÏ&ö.ÉT‘I'{³ÑXv]ÂÈ‹¢ Z0Í UáT"Cgw¹×5ë  ² »ÿZSaC«º”•A;Ò=©Ä†&J+kÌöF)àßµ+|h¥d—œá)­\’ÊÂU´vºIÙ˜‹â¿OWñ¡s1eÇÝ¡Ò>µÏ¥~±@^Íÿ§çÒøýJ¯‰ÝbëfVUv”Þ?¤bÛìJóŸÚ]ªSÛªp)%üÒr<Ú•Æ?`Ck†µÔåòüÞ×64áŒmvÛ&¡:„z3&Z†Êw© jWªr—ê ¹ÛwRýƒ!jérHøg 3Liô®WÙžrü| ÊS¥¢×ÄôKËÚ/~¥`e~©Ê~[ÁJ¶(È?I_Ú9:ߎ÷ÜâçœVñ zaŽb í¡zo¬â@?‰Ë–È* ' h½É³G€V Y¹Ué`6”$ù-¸+v…ScT­ù×Rý©%纹Šûì®CÁݹñØ#~ÿí*ò¤phLJ°aKHãO™Z")©úYUäg8ÆÍy`)ɧOªÈÏÚ¸7{°Öt~d ò$j€zßÂIJÔ×—ê7ªâ>MM!ªÖ-D¦.©©ü­ñ–Èím ÛŽ"Ñh Ý•c3;¼¥ò½%íu tË Öœu ªÿ-UK<¡7¿'H¥½.½f*JZ$‘o¡×L…ü¬ÖpäåÁ\šäSNUìg5Ä*Ç‹y)ÿÔJ³ÃÂû9Ý$–pÒŸµK|¸‚”o%&”ÎöËHpü"æ¾í¿X)%…ö2½M®z~6|¥:´)Û14K2Õ¼á|r®ÒW·Y®\(ßAO©ÚwR‰ 6“rÐ)؂߼B‡6ò ‹‚ò3<·ã;*:ë2ÚF}«´è]H®bDà ïÀб´+2廦B•ÒCí[š*+½%¦áu?鮊 UÏ€¡ËM¿Ø€~Kø*VÔ ÊP;ã9t`ªÿ Õ“}a/‹“/^¹‰ãO˜=ûÍ2šXÑx(į”^ º7±¢¡Weð:³¢ !L~úG+jP§®à˰•þ†j‰Gïîoœ&V4’›£Š[b$ :ùÓ›XQƒ:¥"uÙ´¨ú7TK4ËþkR+ZF˜>¦\ý¨øP¿åh;¸ƒíKº—öcÅDÀð\vʧ“™A '¨o¢bEcVî l¬ƒæ"Áï'Ñ`F3Ï-v:$Ö ¬å(o$Áö Ô~øÉNMÌhŒòí1ëa#Z£óŸ1T.T¾C•¡¦þÍFŸmhbFC "* AëÍÚݧ‰ 6îãPBH²F¨KPznÉŠbUfB´)‹É'Y›˜Qƒ*Ãfô‹¼5þ†j‰8t,Ø•¸Ñ0H}ãijŽ,zKå^MÜh Ï æ$¦e¨TJ1m½èj*Ý¡&@ü¿ëT¨%¨ü Ujk宫ÇaKPòíI™T1éÊ­Ánò;S7ì&°0¨9vŠôÖ€}X驺5îPàíw¤;z•ª™oo;Pá®«Ç ºKP²ö s0=0•ŽTQ¤!(]ß fKÔe¨ Tª UÝ·+cv`¾TøÉ~M$©I5┿qD’𮛯6?ª‰$µÎV»ñÿ. v×t5­½]ªètv1F²?ó·‰#©é”–·‚£ÇtJÈiu‘ Ä–”òÂsªÂ=›Õ˜üWÂ9ª×ªY*ý:I­VÔ'/š¸Ñ‹ŽæÒý2Ö–6M|ÔÏÏVì…pE¤zSR*–·vqœþÙN(H´‰MŸ°…Ód™‚)|ëÓ)PB ºÁ'k—‘üü·F‘(Hw{²\A¢jNWå ðÊá°*’(±¢ôˆ-´x:C\;`|‹‚­ ޝ:`r ¶@?Š+yÛÖ/1IWçEkAª‚T(Âô4v¤ªÿZ eb­@5X>-ѯRk"F-0ðãµs"Ç"b¶Þ’+P•WuõÊ•ÒÀ^¶ ¸ àêAdft¤ß+½‰ý¥x±ëݤ~sÐVÍÚ)ù¦cTà&¹$•¬½+ 'ºäõhRùÞ ž´Ð€£“˜ý“üî*QüUdxEiðäÍoêÒÄ”f˼/tŒz· zKµ°ÀTªÕw dí­!I¨ÅÈ‘…G4‘¥±ƒ’]5Ëô»6*E‹­•¦Œ‰vŒ-©âÃMWdDú}Õ¢t%¸¶¨Dg obLc5©t¢–&:ø”Ê7Q1¦Wµ'¾`6]ùÇI­¯Dƒ>ìtª=,P59Å‚ê­ÿ-ÕùkìH5þV{K[j‡1-L=nͬ=l,¶º¼óæf½(fK~/ñeZôΛßÊ^RÑl;ù}»›XÓ xCµ(Ѧ%ò‹=¢õ(JìT«Ð(hm‡½‰/¼)׈Ê,švX$³ðM)'N.^QÝ.ú±à¯:Ö®*ù\8è­ÝaZ8HZt:g åsµðcJÄi¬(™h fWþMiàÛôu¤-(ùö¢Ö³S¾è2Ö~‹Ò¥¾aWKP²ö!©Î_Ê® ö\µɈ:}Ê’­±ä(µa<¬²ªpCÝÉo”’†ÿýeí™Ü j˜J3ƺù—8Q§=Ð]‚r¯ƒ®k‡?»‹9íºKZÁí")æà í s÷¥ŒbJwÔ Sð{¨„ÒjÛxÅíû¹GW‡8-Í ô¸~4óV®;î§Ö1èk©ê?¡êTCWÚÌ™’îM©(²SÿÒl—¥DJÅðó‰;å¤@–ÕKÛ ?¨í"NÓA+TJÇf£•7”{6w#N™Å\iÇ8,bð£«ÎPR &@œo¨ì3-â”8&Û|Úf½ÄüVçâôªî@ɳgÛ8bZv¥‚JRgΜ•&mÔmòë°;-v™çUªžçJµç¹(5“¦ïo©É¼(Á‡ßẋ8Í4*ÖCør\€qZèküKª-(½È\¾ ©Ï‡eHù{ÄÚ­›ÌîaüßâºÇt‡*4öoÁžV 2 T$š,Œ^*Cí.°þ½À]©µC%Eh·d3HºßÛ¸GóílÍըâ+¿ ¢Cœ"Õýù‚–áÝý†Òâ40½.Qæh“IÓ ”|;l©äA\Hf¿­Bqmž6¥¥¥òŒrøoj]Äé“T¥†¾#•¢v*Œ ¬õ’X¿` §‰QÖÞ:©¡ÝÏaïT—FùöRp2Ýê+üäÞÎdÒ¤‘ÅÚ¯c;WÔNÿQÂÚ€“IF ú]ÄiˆT'F}Áó_Ðo+Ý™L T>õåˉ³E¯#®»‡ªK³ŸX‚")F¯ 9‰™ÈÖ$ùÝê:“I¯P k „|öKzÆÚ)Þ+T—v{ûX‘J‘LÒ}¾ÚòwKó[8wêKƒU'jž0» ¾¨D~TK~_ÛÎdÒCÁ¶A{°ì@·sÐwQ/­s›è~)`§¾”ÎeÅ)˺®`Rq2-éµý¼–Ù¹¿ ÖÎ4úLø¨ê³ƒ½`íò¢­‹äèA#(Ö ò}Ów¾¿ üU÷ÙùÎdRò*r$¯ÂzŸg?™½Ã¤FÝRKÑ­b¯WKPn@ÊÆ¬ ˆq瑺` z‘‰d¿6eÞµwrí2ï4•-Ð÷W0©¥ð®ÍŤqâ,A·”jßI·4þ³Téá *w2¤f¿ùk§Ü”/XìÉ"sÇY‚’oFÊf¿i‡Iµ×¬ *î@u¤êRmAÙ› ­V•ëÝIfïÁO-ìÍâv9QK´9L+Hz€äœ¯‡µB?»âgw©)ò,šeìµÑ!û¹ì"5PÈ ÖÄÏá딞:ÇEº7ffn.A•@5‚¾®¿SzZ¥öÅR±›}6¡C¤Ò… ÒH=WúTŸtî©UO}%SšiÓ–¤’kzm¯ê7ë}”ýN.]Dj¨b^BUãÝPy k /a"Rsàm Sn±5̼‹H …7ò Ž#[nRöžvæ“^¡t f+Yp¢©øãbU.F—,I¥'™À|ÒD£ŒƒY’ÙÏîí"RO[0(^w²ŸÝÛ!R ^wï (e÷®ƒjâÇÊ÷¢©6553¬6›µ/@QJCÞ\’‘•ÞÙÃÂÆ¡µ3Žž\ÊÖ%ÕyÕóADª•ÒÕÎdï¦vß3PƒÚõîkR{±ø9Ä](jPmãP#š}Aÿp†H T#rH2ïsKP(Œ‹M(Yû¡«s<,Ãó²ý{Éà’ªjÏRØÎä%¨T@*½Ï•ÚÖ¡†˜Ôóÿ¥[ieãÈ~Û¾qàÛéý–¹-e»-­@E 8•PCÚ‚’µgô¹ÓM°¡öæß,yßï_¿ ª­-A‘6ÀS_b$Œbe¿¿Ë`N)PµÊ®Z#¡ùIä*5¨ufJÝÉ‹ìwÊt浇í $ùÜìt^ÒdÖÆ9¡´Àlíü"ÛAgÞÀû\å OÙŸŸ: RCæÍ‰z¤jÙ¢RƒµÖó ›®(*5aíY…£õ 'ÇyèBY˘ÿÍËRâ1:’oì” ¦Äú"fͬܳk\»b¢BÃÒZI“_‚jC2 × 0v²çˆ‰jM¶@ ŠI \ÏHʤ²èÃÿ€ñø[ª’x]‘ŠTqý¹«@óeS(Ÿ¥T ~ZÕ©úùöC 7D£6=|4±.²ô¼ ’8Ô¢¸j¶|¿:#-!ÅRQ¤0!—¦™5eCJÖzÆg‡èÓ¦÷€Ü‰86×V>‘枘ËHzrTèÒ莕ӱ³¸v7€oº€äTð)ÐÂÙbM‡nÉCñël²ûV‘/Õ¦‡Éë™nþ“× ÞTN<%ÉT†½-ùO/ƒ~¼MÁÝ,Ô|A©P¦FÿÍrˆ1:„}S/×v¿-Ý_:ôâ<õü’JNØ¥8Ør°ðKHU3›ôS“»§ùMéÝxéÑ}î…¥§¨þ ËåcÁÆßRÑ·"e§ÙPçµØS‚ß*oˆ- !Ù•˜” Óƒÿp6Ä–ædù9Xz±g¿qÔ îÔjÙcèóÅ'øµØÒg(‹‚W xvQ.S¦Á®T²öc vÑv™ªï–ý¦5Cli¶Q},¥ôcGí¨Tþî òìòŸ¥[úKW‚¢ è4Q?x…-= a-¿KÝQ»ØRƒšqlH%¿N…Å¡{èù ­û½Ûd黊èŌ݌ÝwW¥‡vóxAïºUÒk^dÀs aa J©ïœàðú¥Ü‡fmàü4ÕQ-:GªŽ5ŽÚï 8*®¼¶¨<‘Z,„]ø‚í¸CM€8dV¾k[:x$¶‡ÏȘŸ°ððÙ°u=敨³ùüeëóC4‘¥91¡êªÔ‹ÖýˆAd©AÍŽt?Z­/@Q‡§ö—™¡¾'ýEü ¹AÕéePÚѾƒ"ŽQ¹ö©lÌÊø±¼` ÓØG2[ÐU;³ßï‰+¥)gæ‘¿Ð¥·ºÒ€*Í =BÖ6ä Cí§D Q¥Ö”³6­Pô'ÇÃ…ŠHU%•¢ ÿb|^PE•ΙE¯û¿l½WÆ×TŸÒ¢JmæSºÛ^F"ýÀ»P¶>Ç;쨨ҋUÑ<ã ;H^¸ÚtL]´y¥»KËÙÂÐUõ;ÔiáŠhmf‘8`J††bfÛ,<ÌãU IÆÙÞ‚V èúE”ö®+z=áìT 1¥‰Î{Éæ¢¿G%½¡|cSZ(e>ñNvþT¾KUh»+UAªô ÕÉëõ¦]‡i!-§Eª«ƒËÌ(êû,ÑžøÖG£Þk¥”έ [àFV3òü ‡†š‰eFn—’ jaùo©^U[R‘@άÍEÊ»šN(¹u8‰›Ÿºg—e›—£€Àªí@ÑìNé^…d¡ú–TV¥A¡6É{ºbˆéÐíÛ æX†²T^i]i’Åx‘êR·'’.§ j,@Ý{irûcPŠah–VÉhv#©n®y>D“^¥ÒX3ƒ9ƒûÒ”ëÓ{)”Òhs²üB©ªþ ÕÒ¨;PÓØ ´FW•ÍL›{#-¨JoìV¦mÌ ¼]s©|@“vÚ©’”S³eÒ,H%šôº>¹ÐÀCSp_ëó‘pì0ÊA’šm²¸Ûßì„ÒåôZ¯£G9k§“ÝtÄ|PliWé”]¬‚Ámò“ŠM#­£Á*î@Q¢¡ìS¾/¤’­÷Üÿ«Tíoµ·|„µË±wæÛtb`9„nǧ|0Ê´3i%e¤²—KwæCÄi¡«xKv;µNbîM>bNyÔù)ÞjÒCL%»§·¡Õ| óeÒ9Mh»e‡¸Éæ[øÁŸýìeúÖÔds+PåS([‡xáÜ7ã©þ-T9Æ–PínSÅÞT“e¿¸½ÍòA¿^æw®‡%¬¯X§ Ý4EÔqØ0 ÷õ9”™vZã4C²)qþ@š|@œZQLÕ¸U~rBéfjÍž:oªŒ7>¡|U‰8€7TÜš¦>ÿì E·.óT+PŠ`êÁñUÑ$þ~©½ÚÀóÌ%·¹=]&ßzÜJuôÒKç†5©:R)¦iÜckzê~v> áº2+ö-sõ.îSv>DœT9<’ng³|T ×Õ¨°ˆÎmv ô+ïfvÁ+!Ftîlç_¿¸D¸ƒCò!ât6¼{Ce Ê”{SÄì¯ùÚ8‘7+÷}æ‡ü±ÀlM¶–¤R-iHªø ëö“›9'¢ü‚ªé¨;P*ÎP¸u_NÖ­w h “ªfŽýrØøPŒ6­‚®Ë󋾑|ók:/¡.~}*ÞmªJµÛ…¢êîRþE¶A0¿î¿4,]ã³£ú˯›Ûs»­åC´i¡â§‡Aµ¨z—ª*ˆÙ•ª!U~j Šô/Ê)8Nk°ãÔm'—ñ¦6ÊfcŒs>Äš6>]|; Oo"gz0ì*Z¦ÁÂˬ8ÓtðŽn—ƒfáPgjPéÐkN¾4!X²Î¥bâ!O©pé.O–8Sî’EÖÓxIªú7Tjö º%Ÿn)}Å7¥iÚ,kAyŽ»_p|,°\Ú#ï|A‘¦U1†)ß2Tø°«FaÔÞ!Mm±¦U©¯ÕÎÀ(QI÷ ; ÄÖ)¤ʪ߅"\økMè–Ú©Ö ëå× ”­':e3g³ ëãâö—ÌA´éœcùºQÒ.6+åÖÏæ Þ4S–×É•¶¤KUÃÅD}©Ä›Î*·÷yÓÑÕz½Û ¥"<5‘kzhÊݸj·Àp6øy½Ô;L£óó õ²ºå'2zU`8y«©ìˆ¤ S¬Í*ê s À”šGº]&ŠüjsaÚ¬pgË~‘iaq _8e¨[ß)6Ï Ó-ÍzÌe-Õs¦K+„$Q¥óÏ^ñ°[Ÿ.ó£‹r¢Ýó qËÆ\¤ø—Â'ä2Pº‰”;ÏŒ{Ÿ¦´êÂýeËöü^M•+QÙÒòhÉ R’žòŽD2pZJß¹÷ºÔïQ¨j—€Æ]GLØÔ6Å¥ll`öX†¢¸´Ù±Bu1L?H¤¸ô çþ×PéŸRÕ(¥4êãÙ£`0{ò]¯Ò ðz3Ký;¨ú[¤iÞ±´v[-û¯ÂøA¦xѹš×Õl›ë¨è¸k{su𢇒ÊãJ¯}J¼è¡˜3òúnð¢T~&ž cCíð¢P›_^´è¸+ÚÍM©pã›”Ãò8üœÖP È¥ö2’öýÐb”¡ ™öõ¸xÿšÀ Ó7Ž"•b+K“_Þk˜Üpâ·"HÑ)Á ŠeÃ*½¤+4Á4Eå7¤¦£³W·ò=HQª—Î_ª|$Æ~q€­˜SFçuàD+oçÃ^^{ÞR†¨ÿ<¦ž:™<½.-¢öÀ‚ž¯Ç…¨§aât*‡…b}ª¥cx< ýå–¾†^pZàùË<‹ß'š’‚ƒDQq+d~éD énm¦+sR;jïféŠ3jûPû Ô…",gÿUeÖXŽ(*I ‘báåüH-@ÁŠª_âÕ WÞ2ŠÛ;$XQƦ¨´gˆF€,Ê;@„.šgJ¥Q–éi F´%ôÄÍÚ<ÕŒèÈvß±J"šÚ•)>˜Á—P銧úw "R]ø™™˜ò0CðýlèP+‡çgIq¡eèd¯¨¼ÑKhM&Yyzq9ܡ֤£ófNkGË’X“ ~HI)ó‚4,Vô¡"\(…å|»c}q´Rï2¬Ûz.­ ”ªymá~¨×D~‘Q Zyxo6Ä ÑÖqiyørÛ.zâ>?âÖòôZ^*o¤Ü@daÙ‰\¸^¥façÆiö±ÀJ¡ôÖÁáA‰.¦møÇ Ô¸/° FŸîAÑdWÅÖõ Ø=ÍÏæŠbAô¨X¸W¥…õê×uEq 5Ò×(VS¹ý _ \Cí Ð »hêPÝæ‡9ŠUÁneLQ¥•Í){'Šb@ThÎ2!—äÍiºý†ÑKDþ -Šú´e=,Ê£hÏ4¿TœrLE»ÝAO¨ñÛŽ~å f“GüüfÅß͉õDÕºéÛ÷òwšøN¬šTЦ@TÖÓ¿É*n_}+1œH£ ‘vŒPì¦:Ñi„„ÞtcÒ¬Á|Øò£ÿYÒ8ü½ëô¨¨´÷‰Ò„¾¿™Î’0é#ÞüXôÊ•r0}G=ˆ±‡°oE÷ˆý«w ÉǾ T~,žÚΗ’S>(žy'¼b+溷g}Žâ0EˆÎS3žèN‡:qúMÓ…~Y§a›\øf2g=ÄŽ¯Í`Ñ/FùéNø çÔ9WQ·ŸÑ o:õÒ¿[ÌŽZwEÛñ<Ýø—ǘqѤ§Ñ’±ZJÒŠår‡:LQyJŽšÎ]ç/Ó”Iå‡f"0ƒL’Óz$¬î æ-ÓªŠ·ãH¼à—¶G˜Ìà­<,Í` ö}È.-SlèHì¥2‘ÔØ8º"δnåèå\_Û¡Ô­ß~s]ù¶.¢2º,IT~°AmEŠ+0fÔºx¾¿÷oŠ b-j{7•M rÙh¶¼¾£lâiúyZ—ÑHúmqtåX? ;>m¾L–,ï—ÊÓTümßñ*BëÚQœœ¸îÌ®J!‰º.Zo´äŒ…«lY L§j¹GÙV¼¤øÊ ÷,Dº¸ÛèNu̱d+‘é—9m­®ß-s‚¾|ì@ >w={¦‰&•„SÈI!u‰f}à zµ¨ò *ÿ*Î2¨—OP0¢í`ß ,•F,¨0–q(ß +=í•›º 3¿å2,ÜB/•ÒGî´~«•ØÚME¢yWG8ñ‹QRQÚíŒZ0J Ñ(`n”PÍ$ý}Òy¡AØÁðªØíˆò/ݬ›#ªn”•‹§ŒŒí“°jõ²Ð°%öô·Æ_Ÿl]ãb)©Ô…¤Grú•@ePŸnª~Yá4žh\.ìYtá%JeÐS"MÈ4!] ~7§»mß±³:”?¡öVžjÇñ7T+Ñ®aþÇc&¨Ø\šyõh¯&+@ñ.Ó”ä (ùp;Êu}®mà l(ÝUÌÐÚaIá2qy:¤f‡Aòãg”ÃÌ÷¥U¿ÇU;É|Ù¹g_ÊæB¿²{EN¾“E®K»¸¸ðÆ5ÙÔઈX£ñÁ¾–’Q“”Ë”%Ñ“A)Tì2¡Gÿa ‰›´njښ×?\bþ§ºh`¯ål$ã¶w;Å)ÝXR‘ò©D+%€v~ŒšÄJFµ ²ièÉrqÜAE'rc5>ë\[¿#õê7pK¢$H=FS÷‚H潉+²é{guá¸CU&:Õd/+P„(šïWO„é°âÆò R’Q NA¹‡f²†¶Ú+Ô®¯çw÷ω™Ÿ\/MW‘|Ó„“LjXÒè±ÛãåÍ7)±’A- ƒö]è["áÂã §ÚX¯% ÑîM‡ÁåË]7Þ—k£™•åÅ.È$j’/÷FŒ|Âe ðñáÊÅ=úï‰rLBgL´§qf}^÷ÊÓ¶ó51q5­¡•ãÞ§£…­€Ï›@õ¾¸_/;Pífß#}6ÄRÎZ³©ƒ~¯…$Â2&;6 &dá´e£¹^dÒŽLð–´Ô­É’‡zVü>•)qÑ 2'U w»b¸ó–r¢wmS§…Ù.ì½¼±EŸfëIqýqil·°¼r[ÞTYDeËB«¨4›Éš¿4µ S»kêuÐútI¨þ·P‡Õª­5þþ|¿4åC‰Ì¼@цzŠ *Öçï·‘ªÜ¡6÷ ”¦b¨È ÇË£¿ßú4‰ÒŒw§Ž"=F‹¤ýƒÆµDºÂ(¢Ÿ¾Ù.’ìÜz2©€=õZwVGÃÿ³Wæ[(²Fü”¼$F“Ù,Öª´0𥏣Yr£m:yû ˆŠL¦¯½»ÏFT¿ªpQšŸkË–¤³‚ÿZÚmyiI@E)a¸2µ¸£šN ü§Žvµ]î¦Té‘_/iÚ g§¸Í§^®•‰ÔkPŸþЀµGÿ­/•~ÓùTõÒ;펅P“!Ÿ”AÇhž o ‰Û‰ÇÕ] ð òôF^ïz*± ¥øGg½[¹!½Œ{C&yñ¡¼¤ï—§Ä”AeçPš}4 ¯ ×sÚÔ~ÚA?J÷àÙ:‘ÚÃúò}}kJï@Ñr“!î6oy jüi öý–DoV:ÌU}%_.v: W¬nÕïn™Do> µËÝs)¡s. rè-XýÕ ñŠˆà ë~0±òðkW%™Bú^&Ù¹j£={çwRKb9£Zò.# —ú’?-‰ä)uzQ\V·€$š3ª”„T®šŒkYxA옸‚_U˳_x³‡â¤x§Ëköw.ìëÕÏÏ1Jâ8ÑR¡OjM±ìhI®éµQe˜$Põ¸ðB.†Óp”ªÔß™ËËJ’uS—ô­)Yf07ÐÑÔÆÂÑ"Žø^ß²oe`ó®Í³v ç¦øM«Idq°¶S"?¦c§’¹ÉW»ä˜-ÜXÄn^%âÌ,uCÛ ñ<Êøüpaì,.ÿ jOO妧FCá_&îï•Qï/h¼îhœg•èõ‚fbþ„©$rÓ[–¿s¦­¼Ž/–•·ü­’y7q> Û¾|Ùš–­åbÓiS´-â¾Yd1›ª‰^TÙòœV€òo k㾉SþhweuE 7ÈÌéä]ý»JÄ «Y1F\*f~Ê+\ Yµž¾’úýôÈv÷“&3C:ÎìFd“x?ñCÉÌŒNÚ0D¢c~÷“³Mh žÐzLvú»¾1<¶YR"(µ §•Å囚Òñ݇ øk…ɵ~„»Öëd$ï®ú£¨²ØÌ‹@Ы$,‰ÍTC$Æžw¸µ…¿pjJDZ~•ï¦m_S×â2Í"ÅòØÒª?+‹ÈLÊ*NÉ,›dI¿×f™.£º8E÷¿ =‹ÆLLÑŸ³cÖg@²X̤Š'›lW4n ¨~èZ-;¶£ëö!DÞúhý/ ÕdÝ´üêñÌÎhöøŽ˜¿y¨ aMÙL›;Dö…b'§ &‰×Ž>Ë­øR2•AJq‚eX’ ë†ï'c'/çNå„uÓÌ.~ˆTý)mYüåU$ªÄë¬!Ñ‚)õïh¦oÿ”{ùdõÍC-k©?@™e–OGãªv_]7îÙO¼Î´’eŽHW—¾/Öä;o:ɪ8¬G5¤è1Ûâd’ûV58‹›iBº@2ðÎóò1ìÛõ=É™õ /—ŒøXÑ’ üÒ²7÷ÿKû·\i’ž »×0þ (㚌,ÃdûBóœï®à³rgVmFTßÕ×_ïÕ$“qââAM´üDÉLÙ!{s£  ßý’€¬›fï!{s\úX¦“lÇ™t{#UÖ+g:ÉvÎ]1ê —úÉh™i›ÖU/Ù=0uñÄÕ×ÍhK9¥õ(й1ù “6‘¨+£\ÀW¨Ç´Žð—@ÑKÀwn#./# t”²c%†;ô;Ò¦ À[2P¶&Z]hÊmñÊfã-³’Ñ"š”œìøËF[æË‡Å£Ï1e:É^ÇåÖ¯´3Ú2Ó^O&tÅ?S -;ŽY¿2g?é,]-ý}‰²ˆ«eI;@FÌÓƒÔž:YO¦ÅÊ'œš*{÷ÂÎÈʬ'Sùò£™o?TkÔõÊ€êLçØyÅW\R‰6&ã*Y&©3}·„d\å/¡d)AùN`\¥ÖIS„ZåâþDÔl\%HRob.«gI„ä³Y†dVωppË…±lÛMœò—¶¬]šY3ÍC¶öw\c)?8ÀÖgcó6ýx÷Õ€pï|ûj5]–œ¯\?îaî¶ÌDËX#-,° ?Šôc› $|ÛzÝ)íˆ1HÅŸ;›™¡©D/®]ך{¹I”º1~¸ ï^?éö£‘mßþÐÙ¾ë]¤]+™w35#É)uX.|·qÓm ò[¹+Kɇ«¡¾ÑÍ¿UIYC½‹T³‚ç+HVÄ:'¯=.w¡¨q°¾ŽsLÿ §¹™FU+µgËÃ¥|.•K&ãŠ@õ“@%( yE óoãók¦Ke1n¨ÿ‹­»HVJO7¤@×ĤnH+2Òüûmsã*³ÑùS§’½.«_ZŒ­|›ÿÁNÅèJ¾—É6pK{ÈÊ|á¿$R¾‰T‚6¹žwÊC¤t×m Èš´Ñ+¢0_¤&sþÐÛr´›dëBÄ$¦}βg™-¤÷K¢¶#Ѹ+7^P}J½aµ]òäQa·?з0"SH]ߎð ¬ã-KPòÿ[õ„Òþ‡Tç/÷RXŒ¹”T…†(åÒ¢eªEÚ vRß‚¢V­ÿª`{*¨(ÿÅA ,,ÌÿÁ× H;¹“ØLÁî=¸¯ß€LcÕ)ÝÈyÜÛSa:&8 6Ðce‡mœ^”c.›¯o cíù´)mâ–PÉØÝMš|‡§b;[¸˜ñ²t©mQj¼Ÿ¿ZŒÂŒtz·F„%XÚI>_X(Âì•+ÄW >ñ\¨Â¼ ¡œuUYB¢ql1G²t³Ä˜¸^ý;a¡óàF³M.cI&ÊQ9©S?õ P„‰31²Ã¢çê÷*0<TJ!jíç¯ã/ßIUVŒÄ …6XiŠ ¥åî'Ђ¹û hþ}œ¿ñáÆG¤ÕÓxÁ-©¾´V’—¦:6¬ãô¡ä»ÿòÊå2þý_Ídf±œˆ©ÓK»´£×óðØfŠ~vEÀìÆ;–¹œ¨õŒ?t»À`zP RÁÒ’…5Ô-úù°ÅÌËFpÜqêÂËÐÌb!¢Ò÷‘62þ¯L}—ÔÅfÁDF`+J;‘àçÕ6ÊçT 楟þ,YýYü àÅ(Ìb}Íþê+¡ò ©Ó²½G«ãýÁt‘l'i@¼º’4üœb&"ÉLSÍeåÚÝâ%„²iñ~sƒboñé/ ÿþEWYí(ÇhÉÞF`‹ðË1kV/”‘ŒÁ,ªöå~‰äÛÛÌWRÎ? »4— 9¨y1 “‰6´øN‡òÞ¢1Æa2 ¬(TĺÏj.C排µzËŽvÜQ,S¡yjVSd{¡©¬õÞ4w‹/™çÏŸîÜÂýÓÉḨD?r˜Áý³À8L]í]7t3 ³tí–8ÞèÓsÅ(ÌÒñ&Jdõtð笣0‹í5®(£Î'C‹‘˜ÅBEöW?õ¯4<œ äiÔÂŽvõn§ËMnìÜü›¡?jk·Ô?]2WpÆ_¾´óÝè(û°Q±gá’Dï¦Jã£ñž÷gÚ—~wn}þMc‡yqÉrW­vß#Â,t¡Óû²q7ñɹÒåÚÝ V²Í¤ú£A‹q˜Õ^)>EãX}â±…Y¬‡U¡ßn=ÂPÛîÞ½ì{<â"Øv¾šñ—o,¤V%ÕŸA_à/rÿh›6©:ò)u6 “}‹ÈKõ‰’DÐÅ !tã.ë¥×@iÁÚö°P2ÈT3uŸKPõ¦ÝÄü­Ý¿Ž¾.é' zî¤2U]1³0‚ä±Ì˜‚ê*â/ÍâA—[ºÊU£/ç‡zÝv;ÕèÆî{x5þò©\«z€ûk®}YS²OG ЀúX0SeÆ¥™©ÓAçjo÷–[¾ì¤1ä(¤¼ƒTžHÚ+µy»ç@5þ²Z¥þ­4É6‚@ÒßU¹¤þ?ܲ‡°£Úø¤ÚmU ã.Qí—µwŒDÉeÔÙš¢„rï&•¢KæQNÐReE>ýžÛ•Ñ–W©´Í±aú³¦*e—W(Î:j«ßœ¢yyî˜ðØ”¨…Ž‚~ܺyù^AšŽ-IEž•íO$¸Ó˜«ú4aeÊ%^†Ý¶Ê8–è3ëՈˋD‡ÚžD2æ²ZÒ×"ÑJ–`\ BÂL>éX½D¦ï‘Ò];æ)Ú-Ù=%ãKr¥¾c¥r“¨¨uoV)ß ’mâÖ¡¼*-Ë»ý£ÎÌšíÔœ/íx`øôleô%#¾®H:É N|æÔ/ñöõ£3\l®¬½¸e>®„4ò$sÒžéë‹É`€«~(ßèFcÎ?ûeõU3ás*՘̫~ã+O€Ê Tõ_õË;¦ªÿóðϧTk¦jw©Î_D IÕX‚b/§v"'î>©ï@áëíÔŽTÆgþ’ê;[Áh^mÕ‘*í@Ù†N1 ¸M8þM*§;]DÉ^¡³QG7Ñ#p¨ÿj|&Íã ÎMÜ–žÇ`4¦%#TªÌöt³ÝÜ&`Tnä{8Æejÿͼ[²¾ši56óÏìÔ•œÒ iMØÏç·{Šƒß—­yÕŽÛ}’ÿ݌ά Ÿ®"î¼p_52³ÑžÆ›@ÜU,ÊCpþÂ-Øß.8·] {„‡®>mX‘i=1›f+Êë'[U£21Ra¬VÍô:¯þ€—Ê„LK¼­ ¢Þ4÷0‘ì¶ÊZÓˆpŒÈ|âÔL±ù?Ñ\ p³Qͺ¬n©fDf³\wªyzT&ÊÂ½ÂˆÌÆÑÌÎ §Ò‚S‘ R LÍ4n^B’{K¨òF(ß½+7Ý›ŠLÎeÇÔXɬCkNû 70?c£•Ù¬ £±ÃÑO¡ûƒª1™X¼)~u±’¯c-ת’Ï@B]ˆ±˜D •>B¹ùP¼ÛÚÒuÚvKÅä’yG |¨2’8Ó¾r H¾Þ¸QÙQ®Þ­M–䮹Û]¨ nA¨þñËmjÇæm ™€w\ s旅e®:¾9âü´ˆÊ\LúG[i?^¹tæÙ¬gPSˆ¨èÖåßÞÆÔ)%ÿýÆld2D;áúKÙÕ-ÉxÌfœ¦^1ÊÔY‰2ö¢N]),Y©Ý¡¦/|e;·EvZUV* tòYÚjdf£”çÕð!âŸiú§‡dlæå*ÀBÉN`dæU">,#q ÉüÛ.Þç§ccªÚ-ýK¥Ñ™Ø»GÛw{T–Ÿ;PÎlV.Ѫ“¬?s¤9uzÙIÚ•íê}±ÐÏLñÆÝìêmÔCSh&t+NiTæ ZÂÿóÇ2ÙølMTféÕš™ï€ò¾Mœ]I,–Ïò4ºÆò:Ízžî©f®moïΰÀÎðºž|~½Ñ8Ö¢]ÍR>:Ãë~ ] Û½ã¡C—«`ãNé¿â½c­b¦uy€”sOÝfŽƒx½jææ7•nF]þ‚’gò÷‡…¶ÌmÅÎ=&õ¾Xäí1ú²[/ºS¸þÒ@;Kâ´›¸jçC•ã“v|ÕâF_¾Ñn ·,R¼k÷Ë v efM„vºN=ö_¿…s££lTò%]Ê3}Gªß€»i&P´Jm—ì=¿t+ÜÉǤ²£i³´’c°Ð¦¥úÍæ¤C÷Ÿ¤ñÆæÚw êq3T§~jO¦>Ûi)~¶ÓžÅi+ûÆ¡víôtóo=ª>Ýœ¯· Eù-3­Fii~¯ò“iqGµ†¿T 8ýŽcáÂ4ú=<éY"ªî§7#2{&¤’û©­Ä ŒÊìVà[K•L}G¦xCú^¦ô0¡°’wD26“¼ŸbÃZTÜã7ëiFg{éKéÌ íÝg1š‘™½rD ]ÄÄcø—U#3;³á2³èÜ֪ߪ¼— R‰Jþa ·{/øÉÖH~Âe32‰z}§š#0*³[†EWVD!>ççÝ6ã2»%Î72ÿ®ßÍoިɌ)¼ùpòJß¿Ï|j× 'ÊŠHW±ÇÁ·Þml&V¢±t§¿øÒgk7Åjf.oyç»õçw“ne织ná+W2"³[ô·ÎmLæÓÚ’h ˆìX¢d½Æ!²V¬dLæÅ%-ØËÍ%#™k[ a·ž]"WäÁµ-Ö[ñHÎ$¿ÑqõŽ“Ái;8v'¡´ßܱj’ƒŸ[ÕŒÂäá=ÿëŒ\0иÚXž-ÅúñôêøN­¥oŒZQ–Ö Ò½ˆç]aÑJíM§“F8Ö"¢Š/XÁùó>B]¯ŸaÙÁ¼"¡ m óRÆ °èèîþZL Z*7z¨²ÁYÚœæŸÙ®mi Í'û{×›Lµ0;cáhëTcŽxºœ‘É/EèFb–H‡—˜åáyÃNt’Jß®ä®@qçæ@³€¢RE¿½m§‘쇪Ee+På E'Œ=ß4:sXüˆòMʽvwÚÈF:X” ç ¯8?¼¡9,pL9Ñ=ùU ÝͰà)Ýëë… õŒÒ”Ô«å²k.@ÙNÎ¥¢ Å~àw¥ìÆj‹Â k627¯…½.¦7ߎ+÷Š•og¬æH„dÉ$-" ü‰ÝHÍÁk—áƒç¯„Lþg¤æ°Ž›˜iB¦ éÑs9[”è§íúÍNCÅ`U2¹Ân”æ0îi\¾ÜšO AíN¸}·FýÆæw36sXõä ‹dQ°?¤µ—‰±õÙvdî]å”åHþÆkLæ°*—q±禟“Úi( xÐú¯å\û=@;E˜‘µ+”Vï·럡Z­r¿4"sX‘éë3Æièu £1µÐPâÖ§3sX_é©äËJuÃJFcŽf»€±s…)Ô­ú#H»Ñ˜ÃîôuÍ!N~º]§3R¼^«.…™¸¥(†zâBçwÜìÆc«OvíºíøyiÝHÌQôå:ʼnlÿ¶;}8t&å&ùÉ;"̃¬B˜±(½Åï¸ÙÅœ²ülOVÚ}þâùë'Luã1‡]ë¥_gŒø¦‹ïúzeîê—nFCÛxß°¹Ñ˜¤^Ö¾*Ÿ€FÛ©÷/×*™Í/g>nÕ'¦V6Ÿ+w—cîš ¦Þ.áˆ%ÒÉŸDÚëñJ Ï?Å©ÓV¶KAÕ3{ha*u¯8¹-JzAõÃO´è'·¼¤nLÈ®Pù/$¶r†d×€LšÖ_-µUoB k7¥[Ö?/T¿ÂÍëÝLµ¨ž~iüi¦oÇ€L JdΞTy‘*~'•ÝWF`o»”ŸäÔ^nOWãz&ä2P¾‰”Ùò%ÁïwÚË<÷“”NOE×ì¤íÜ6©¨°Q–Tþvntæ)å–Lýc 3•¿³Ÿ9ey9sÕè¯H5Þ@q„* ÞŸºÙ».-[qÌ(åwQíÆjN€×¢o\€Š/xXÅÀ„_V0}VpÊ·,U¾+øËì[¶²-½Û ŠV·)KßèaaáÀnqÛ¢%ªõ¿Ýýñ ±™U‹bÀ…{‚ßQµÁ™¢å÷æKŽèž~ãT:!ƆTCÎnéN1è„ÊÒ唂ÓB/[…¨øjÓVCÎÞî îJ•ï¶Ò=ìÅù릖7R‘¼d„ÄÞ>€¼*Õ{pEÁöª•ø]F}x{-õË/ÈÖ~qQ¶+v†æˆFž†`yšç/y»¤òoÿFžžF)%šõÈ÷ ‡‘§'TC*û‚A‰Í~=áhx»ˆXæ¼Ñ³w *–ªãtÛBMÁ€@ÅVµXAÈ®Tõͬ[5¿a×€@ (굋&¿hjšKŽ;A¶êØÊ%FÓÞŽÙÎä þÞÞåí[ÉâTxcö€Ùë†Ù{|#©²Ö3y *}¶U-fÍoL8 PÓU ©_›¶ÂÛ)ÆMV\pþâHõëŸFÇÛ¹k‡"åzådšÝ&fÑ#8jÁá'1 cP-œA9Ž+ ÊÛq†$•‚þ1ƒúê—T Páþý7¿àÀÛ¹‹†Ò¾So'ºtìÚý; *RÉv¥’·ËEÙ‹6ä(¼½iáp)ªû¹¥c°·7¤jZ8ô~UÎìíÌ¢J4ñ*„W® ò,–<Û-íàeéVø”ÃXÔ)ÁÏÔƒžà‡¿‹–ã·‡ÿ*Þ>ø‚Tµ¶CÏ%ÏVå8Ò]ªZˆÏ5òl|¿*Ç!o·8J° ùüUv äíé5?À2T½+8e‰,¡e¨öFAxbB}KPýT:&Æ{ûegwv†r@£ Çñ•ÙFÊ–˾_…øÆVÏ…³…·[;Ûó— ¸õ¹µ:'ÞÎ#.¨ \!™(¼ý²‹²·7ííÞ{ð„ÂÛyÄÅTeãmPx;y¹Ö2´œ¤êolÅe{l™oo8C+_}Áx¼1; §Õ ³C£^¥â²]ÓTül«Z†Žw¤–#¦ûœŽù…­ŒF­–ŽÙ’m}­Q‡ÝÜæGå€F½º(f—‚nÊr\ºåÚ&S™RÒ¬¾¸û-N¨éí)Ú¼õÔ9é+Ýý’õªÿi+vQ· Æ 5Þ(((®Áÿ‚ o§¢(XïšÆ{p jz;ÙŠÓh£­šŠYŸ~À%S“úF¨ãØ*ß-õëûm½üñý6ÎÎnjˆ„}™ßþuÓu¡´³« óøNª¿}}ËV㳂­¨¾‚©@¯Š¹‡æw¶b+ˆTÆ$µ)n ºõ˜å€HªoøVªôYª~0ïqI*¥´ÛÑ• °^ýjÊvöÌh–zª;Põ µ ©ü"5Z[ýT.*©ü"5›·—Ĕ㫂 Pãaöh¥<~UAªNß(8å[• "™}GA#R´ó«†'þü²7êÑ}g0"uúøKªŽÙy,¹Lñ •ß@5 úT¹CÍýàÇVLJ=ܪrÀ¤¾Ïv†d 'Ðz§¹-WÊ!&Õj%Âa³BL|A·•H9ĤZüqûÇVºó­H5îP÷ Ä¤ÔùêWf¯á³oJ¥ Žú¿à¥®ÝÚÃe; ¤ZSôiµ×Î`k°.¼œaR#ýÏ^9/³¸wK÷Ë“¡bæÒ§%+PìíäE0ƒSP­-Ü`RÕxákÙÛɈ–70áӔσ‚I½Ø*qýP÷©`R£È3ê•ê–ÙaR#ÑöhñÇ|õvßìÆ¤Î?û1»Ú Qä¾ò°4&µ$Š*¥OŒ÷]“JÞ^€ª@ñ.q;ÖœP–Yi/qUpì(ØžRE-ø·Š¿Ƥ–¤š%ÙJ÷«Ç(lÅø”(cRKb@÷õ ;P¬APýT¾·Ã¤’¨"µ±Ä¨ôÙ¯Z‹:ý Y¥¨$ªÅܾƒ’·kCÖAßw¬O©Š¾`Ø‘ª=¥"Ÿ9–¼Õß8ÃøÎVoŠ–ìí9ÝmõS˜ÔH6,»è¯ýÊ¿‹Â¤^*¬Ø/DF~.Aáí6aq÷Ç·Õ·S…õ²)Þžø‚1½‘ÊwQ˜Ô£iC–‹jëówQ˜Ô?ËΪ˓ŠT!v™ÝމàÒŸåP=ê[ëÔxÅ~Ec«¨pÈÛå ‚â~å¶09¡ðöαÞ#AÓdSsÍííx;Õ~Q䙀 0©‘kMó$iA³¥½ŽŠªíÙŠ½}`vq{Pìí©Ë™Á%¨öJ÷«¾Õ?KUäú£ª 5î¶š²ìÛ &51’,ioOÚÜ'@  5ñ¬IÎÀ½ÝírBÅ;Ôùg$ÜÐ?¦»½›N(óöÄ ¥¤ô²&©ÜËv0&5£^~Ù*ïØÊâíÉ/Ùjªb«|Wð”4ì˜o'»=Žx‡jÍM¸)&¿’TSÕe©äíÓVS–TÙ*>¼ý—‹æ ©b¸›]RíBáí [%}A)¸Å+ÕB÷%5*Ôi®¹w†`Lê”åµµptxùk&5ÅvWp‚¦ êBU$8PåWcÇVí³­*S[sÛÖPx»6¦¹¥vìØÊrÂè•ßšj9ºNgßÛI•‚­iÔ–30zô=ÔŽ3P”šÈ5dÎÑ®‚éuÈVª{YPoç—˜“èl“ÜÖ/%$¼ä¤šÙÛ)àý7 Ô…ªw¨Âœ ËP ¿*w³·Fo›æGkCÂÛéÕëS§±î_?àRÏp ò«¾ \j"†œÈBN—›Œï p©‰„f j¥=ØT¼ÛjÊÙïWÍ—zUPûUÝ‘*?¥ŠRrÙ*w¿º:ƒ6äëÝìS­/ÌþÎÛ¡ÏòŽ·ç‡·ë î*ˆ·[ƒÅ@ÛÝpÉgX€‚KM¤x^òÔÔßg-\êåt¶×„\tiC¦(õuGÿµœkÝ¿"Þ® ™æ(—²Ÿ£¥¦ÚîR²pí ²·7mÈø]ËšÛd±¸Ô«­ì•z¹­Øªa+\”æ ›ÎÐ?KU5«¹½ÔJ€KÅVÓö¥‚KMÔʆD Y˜Ü¾P'T¸C&gЉãAªR“žá%'÷vZÅ#U­JIwë¦O(Ø¥N(¬è Ö(¼V$ŒªŒjiÍíVuBáí„Â’XKêŠ6\j¶á´ç=ÌZÙàVyPÊ“)@Y<‹ÇqG ŸPæí/€_p(CÐNç%áR³ t–T²Õ¨ Ž=?¤ª lYƒŠ(È‘Z‡‚+f7.µ0 ´ÖªýJ§³Ð—š«%.–¤ô}ݲÿ01.5Wëò-¨)é²Tòv™ýøNÁvW07ƒ*I+ öÏ îJÅÞn¹ÑW©ÆŽ­ŒK}÷+CWÖ Âj(õtÊ~“~-œ-¨ô0ûugØ1;\êëpøÙE™3Y•°áNŸPå3Tkºª ÿ„Keë›{çþÞ—š2c¯cöå{;U©™¼>šbä(ÖrÅVæíõ²_QË¡[Ÿ[^\êŠà@eow‡×–0t“áÖGvtÓUÍ-Q.aè&c_°j¿ÚƒJ(H|ä7 .Ø*VpÂ/C•Ï Nù–¬Ÿܵ]¬“œAË™Á/ Æ¥¦¨Ì&Ö0íb Š›Œ¥éNЈ¤‹PQ\ªõ¤?6[­“‚Û&¸DãRßÙê„*;Rq“¹d’ÇïLc´0ùån}Q\*ÏpluþŠ;På <Žž+PìíÆœFx‡'@÷o}ñÐÞnoç¬4Ýcâ¶Å;¡ØÛ>{'ÕÔ¸C¿ì¹Ô°ÕŠ‚p©@M€ˆ|ËPajIAãRsP¾hãÄi²•ûƉp©™×lfŸð?~åW†GªR³5‡ÊÁÌ^ò!ýªÔœòêrgè~È"—*[uöö®"š%(¼]yÈ ¤¨‰;²DãRß}Áco|A¼½[xGƒáé°×“Û“«D¸Ô«‚\?TÁ» •q©…ç—‹æ [Á¥þ™½’hvŠTEå*YG~‰r4.µ\ÊUe´óñöV>›} ª¾QPR¥¨Tª}¥üv¢6£°%¥FøÅÀѸT9÷Y÷‘ªTÍ(¤ƒx¥itnG§ oW¢µ:YT¿nWµŠ› %Ê,ç2šœÁ_ƒp©™ÌÌËÎ@›€î‡ #\ê›M¦'å_-l2p©¹Ûéüš¡~Iª…/ˆ·Û y~€_[ßš­ÚJ_°ª•î7™ çEß–ª‡‰Ÿ/Óxc+úL±a+ãRß¹h­#mH•ßx»žK[Þ—Zh:†3Tzr ¾_Á¥Kê<-{VvôŠ­ÌÛ S›êböìöÅ›Cè_¶b“!ÛpSA¼=²·GÞƒjб—Êôæø•^©~kT]ª± N³•¿‹—:-ôKª_¶òýʸT)x•JoçU—JT-Û@€ó—n}n¬/Â¥æÞîPµ)ú±…·“`VŒ,î*ë>ÍK~£ ýØR°Üa‚F>Å2¯Ôˉc•/YaC¿˜4Â¥bö©Öfïw¿ªɧ³.û•íí…ÒéBæ#’{^xZ—:%,—ßkpÅVÆ¥¾SpsáÀ¥â¢çŸYRz>¤ ï¢UÞnºõ9¼Ú‚‚ù.U'RÔ)~ÿ‘Ï…2o/1ß¿àMÔ…â•ÚeöŒ‚eGÁv·U( е¸cvÛÛ \j9ÆwPã3Ô<üW¡àRßûÕΤ.õ­&ü²TòöTä  óøc{x»œaÓìtø-EÞ^±•R# ðv CtâdZïd¿ ;Â¥–ÂrN:µÉø §qo7g˜?Pª£_²½½YBmº‹îí~YA4.µ¶À†ôå_¶éð[”¦Û%³û—":ü ŽJãÄQ †Ÿ9©Kå †RÂ[-@áíÄÛ ¹j%Ê|…K-ÉšßrªÜÍ>e‰¬ËeëRũکxM¨gÕ Þn.ú˯ʎ‚ãnö©Ö¾ÙÇq—êÃô¥‚K}ó74.õÜd´3ÈìÄúüb‡8äíÆZËø šr»$•¼ 9Z¶!.úóp¡Êg³ïÚªÅ#N:*²ßs R—Zh’È~U/ß³s“i: ÄÛk¾K5AÓu ÒqÜýê<[Ë7~•b2dG_\tÇVɸÔÚèSÔT¥N÷îß oW&yãN Æ‚3$ãRùUx£ {¦£Ü¼J%gEAövæ…0:hîP»RÕ?mµ%™–rsþ²ý¥Á—Ÿ›ŒKÙÒ“b†:TQµò¹·“ûQm¿ —^?/Á¥ÖD€î²_?˜ýÞÑ .µ2»®2מ"šžý$„—Z™ ß$ÛpI*j— e«hÙ‹T Pù.UÉ GïA•»­Z´’±®nºÝ;{Çü\Õh“ج5M»4º\¸3Ðã÷âWŒ¢¤tº/41NÆ¥Nc,§ l(—jaCÙêG-3»¿pŒK€8LA9Ã¥Vú‹ÖÌ!K*ßVÆ¥æ¹_цRÄ^Ý  %uîí•HÑE*nÈîÄâ’àR+ÍféÜÔ¹¥û9 .5+èDc^Õyu?E0©.õ Õ2 s– ðv :Íðkᬙ]ÞN)"]å;©§K΀·3©QÞ.¨©T—šÆCÁM(îíŠ@mÈcн=ë˜8îf_ò+Õ¥Òt]RmBå7~Ußø•U—Ê&ÓÉÞшªì7|NCÞþGMÜšTäÉX ‘¢ÌLÊ6O(òv]?بí~û‚4t“P …qÝÏtÊÔ¥VžáuèÄ)˜ÝezüVZ=\mÕ×m•K•ÙkÓËëò ~Eü²3ÈV æ»Ù¿uÑL]j³·s'3³·(gpOœ —ZÍV$„žiÌ»Õî :ãÍÝbÙVx»Usœ¿¸@Rœµä¢oŸ ‘¯º e\ªœá×, Ýd¸ªUˆuÚb,IïRM€ˆ³.K•>Á]u“=úŽ3P—Z馫:¯N‰kö›®gzüV …MU¹h_|áRIÿMyȉ˶ß#Ã¥’YT Ъ6g€K½lÈ=ßÍÞdêR›ñ8¡‰áºlû;ƒ¸TjšXËZ7„KÅVá•pºï p©Þ¹öþ”y{£¢ê•Ô±Ú2Tù U[ÕÁ=è3\ê%·–v+› â퉇^÷4UXòvêR_||ô÷ÂÉ~ÿö —Ú" Gu^M{»ï¢Æ¥žÜ”ûÑÂ÷öƆÜxy‘××ý\µœäíö ïòö [ù7¸ÔW.ûë êÎ@U£ß0'S—JrK Î9EÙo$ž©Km°áÍêƒíTu¡äíõU•þ½ÕîfŸ²DÓ2T£ \4í@7R±‹¶¸•ßìív“‘‚}aPK¦Ç/fŸjí›=s“i\ŠõÝ)+X‚JolÅ…³¤ ÞžµÉȯ8¼ü³ —Úï4e±2žoe Â¥"•Ö`ŽeK*¼½hg€µL<âüþí.µ »D U^çw•Ïp©(˜S E+ Â¥6r¶Å—¤)¿ûw6.53ïG‚olE]j³"e)X•××ý´·L]êë ñ"õ𫬻肭ðöjÞ^”ÏÐevo‡K%&3ÏžßÞžý6ÔÙ¸ÔBÙfm]R¥©ðvòÛ)d —:/¿wt.òvüJÏ¥Pv äíØŠ±Díò0ñmEß«T ùØ ŸmU[×Þî/gêRñ+}ÁM[Õôô«Š­4`qáZ —Úx.5ůX8ÙïS”K=]”sP¸®›Œ¿3Ðã·‘¦Û.:ä¢þΗÚÈUI~mª–ª*¤ûÝ)3\jëãn«M©àR;}×sih¿òz¸Ô+TE*ö+¿l3—šc#MÎv‡‰;ü¹KùÒã¿\ŠÈºï>Ûéñ‹TßC±·“™Ù.™™\?ü2¨L]j£ΰ …·[œa¼œ!ï@õ?mv Æª¥énIE]jWš.³;\jöY€ —úª¿.½¯]ÔwêR›ÅAµ(ÛÛ‡rŠô¢§—E÷I½ —Ú˜wý‚<Ãb}p©ü«1úwP;ÎðNÁ¨öYÁ Ÿ¦|.Tÿ¬à”oYªqW°¶/me\jŠ6 ªvú~t=n2Ô¥VË)š/¨¸…·†Ù­ycOmŠd„æ°”›ÐÉtê 7¸TÌ‘éu›R•Ïf?úT½Ûj‚~!Uû¬àî´¬°Æd¸HYA?üÁ —Ú-•«všìu3}ú¬À¥vÞN‚YkéÇE \j·¤©ÐiŽÝõˆó›VãRÏÿî<{æ5¡™  u©HU¨Â®×ûÕ‚­2Pöû!g­¤*˜=`v&–¦»¦`E*eP]MüðNK½(d«¶£`¿CMù"V[†šÞ^ŠvÑ‹TaŠºÔž7¶"Rä‡, \ê*¾±•{g(Æ¥–B㸫‚uÊ2zøÏ æÏ¶ê™\µ%(^© ûð¬o¬ß™½ýi«…—Ú‰~t«î]t~²À¥böÐ- !tå3,@Ň·O€»­ äí¨ TÞšÞ•/ÌÊÕ²,rõ›Í–(oO|AIUv¤ÂÛm„Sè…K‘ük‰ÚÛ±IS›Pd ‚äÖ÷£gf¬/ä_•¨½Ýò»2˜²âíp©œÎÓj_(ˆ·Ó“ürL(&³ u©W¨ô•TÔ¥^.EÊŽV\táR—Z …u>§¬­Ï¿Á¥uI•ïD¶¿Ø¡À¥V«¨Rú·jÚ„î—úNA.ÛkRq“!{§“/Ú³\Ô_Îp©½óॴ§ÓBda¶lKíkíøRªñô+ºÒ)ýá#.u(H®Z|A^KítîbíYÄzñ¿`æ&C’g<bÞ0;\j'Ѻ‹æØ2{ÎO(ó«N o_A^àRß8ôڲTõ3T½„,|n¢ä‡·Ëì»¶êø•9ÃròEýá#.ÍÉèþ©þª‹Â¥{.•a½,zf†B_P°ÈÛYƒ–Õ)Eì #È \j§ÇoW*#2ÿºPé%[ÕKLƧ„ \ê`âí°¤©iµ”¿É—:ÿ,Ì?»›}aÆz—j§såú1Alå‰(p©ƒJ½¡¬0ÆÇdŽI1.URɯªŽÔ%©äíÜEU¤LèBOòRµ·£ %ù’jÅìp©W©ðvÆ|,AÅÏ_°^¢j+ ¦7PZ8yÃìp©#sÎAjxºžêR‡IÕ5½.W¹è‚‚ÄÛy.‚‹Vv F1.5'˺¿*¨ 䊂òv)$¥oBáí¤Skt™} šì¸ÔËr¶ÃKPKf‡K‘]”–’lÈkRE¾à¸Á_Rù¶¢.u0eX>Ã\ì/©ü#•ºÔÑä¢:u\Po§ƒÙPke&;ä…hmÓÞ^ñ+¶¾ËA¿ÅÞNÉØ°[ß/[ùG*u©ƒ¹áCIzðú}¶ óRßHÕº*@ýi.¨©ÖËVmCA¸Ô¡7Õ(ØŠh \êÅÌVI4½-¼Å¥òšzM'“ý®òŸԩÖ_)w,w[¿ÆWÎ .•D Á(ÃM¨öÆì²µï˜½¿‘Šƒ~ï âíC]lµe{û0³Ÿ÷NË“)›Œ뫵|¶Õé÷ÚEý×DÅÛ;!‹ž¾³•ííâ÷D¼QÕW.Eôø=¬d,†¿RÈ¢û½q©…~È•4’ÚUâê3&Õ¸ÔS–ŠTæ¢A½wüµÉÛ9;:…%(¼ý²Ž/ÿÄiéT$ÄZmøTþl«Úi$Þ}B¡—z”ûܵHÕ ¼]ü µ=¼½ç‹­v¼Ý¸ÔÞåí<-ýÙµ´Y3®ü2;ç ?<·—:~Ùj* U½+8÷ˆU³wâít:å;Të „‚q©²Õ”/¢ê²Tòö|ßúN¨²#U¹KõËE·¤ªw³Kª](òdhŽÝ‡Ô.ê¯ÁŽ·g-y;'Ž?ø v¼=±p² äWþ9h\ªœ$þ‚oç¬ásãiÙ³?C¡¼=âí1•>CM_[†Ê÷/øc—o¾àÀÛ3;Ç¡cÂ?qF½›].ºk«öƯìÖ²Bþ¡.5 ”9 ¾þ´‚ —*{;m1†úÖú³e\j¨˜½r“цì—´CÞŽ_e¹hÛŠoÌ~`ö²nö&.õ"§óÈ;Pù³­N³ko_€*÷/X5ÂiÓVx; ã·ë .HÕîP=ÙJ7™©ðvî¢A{ûÐ\pQ¼½³‹ví¢cCÁ ½Ý²Â^Dßë jowƒ™-àí¼¼P0§-³¼½â¢5ß¡~Tu¡ðöË&s<¤j~Ú[ ù.ÕˆS­ ¨òæ v̾e+¼½æ»Tçy{ìØªÝ¥úµp¶üªßARíB)sÀ“h{ûùKÇ„¯ q©Z6ÒŸá´A'?&ÓŒK½BâWš:½"•uOJ–«Ö.MxÑ~ª|3.UP“‹þ¥`¯~ ¥1/•"š Þ¥jÝ34ãR%Õ÷Px{³X_èRÁÏýh±½1;ĺ5Ù[3»¼= Õ„*Cm]ýgx‹ÚÛ#Pé+¨ÄM¦$?´3”¨ðçL;PoŸ)_Hõðö 'UþìW°a/þÌ—–Ê*'[Î9+s`ÁE“¼¼¾®¸(¹µ~rƒK–'ó½TæíÉÌN³ËV‚ò÷v¸Ô+”6d®~x§e¼}pgÚEa—ü ’-s“±æØ1)_t*¢ åÖÖXÞ(èÛ*§Ï FÒÞÖ òg§|Ë –Ï îÚjz{ŠgP™¹â¢þ+µÁ¥ó«ZüŠx»Nù,s`¨ {ʲ‚ñÎSÕ}©ŒK}g«M©J¸+˜“ICä— â]AAej-× ˆ·ÛðÜxµ7¿yc3.õ„w¨óÁ¿ÿU3.õ“Qw log"[»3y†îR+ìíoÕ†_üÞŒK­²MNîU‘Ê?&àR#!Öláè^h;ÖüŒ—Kþ Â¥ êP·7"Û+f‡Kå Md;˜}¶eÞ­ò))‚Qf÷o2Æ¥N€—­ f'¼³ð Ç/s-+µ–u(ÉÓŸLÚŒK}ËðÖ²%ÞNºy$™Ý¿3À¥FËë›>þ›w®~ª|ƒK­J|k+_*ãR§…^¶ _Ù .õâWHޤ­Ï?áR1û eȨÞ…}“· Øó–Tùþ'èPå3ÔZPõ •ÊjÉEáR£5øúþ ÚÞþfìãÞdÒÆ¼Ôyy½9&VN?î¶šŠÓBPx{$RÔµœ)Rö“¦Z—·ËE¹ÙàƒŸuéBáíÏ…³é š—j,@cšùå .ŒÈlp©øÕ¯/ØwÌŽ·CTE)Ã.Ùª=¤kÏvU[SPYaäª)H¾“½ÓàRß(¸é 㸛]Ëy§¹ó»Pá3ÔegX‚’·këûΆöv¼]7™=©´·?Öà<—¥zxû4ö_ðq“™7…ýÓyho×` à±#Uÿ¬à.9ÏvÁ篔{­íªKý«g¥Æ¤Ã¥¾—Ê\t¡‰q‡K½Bul•v äíñn7™Ú‹?F­Ã¥&Ë):±œax‹?¨Ã¥ÆNL&놬 Ù]8.5vv†ž¿SP¯TNçÄ’¤ô…ӹåFâí‘Ðýà _²{{coïz.étvïWݸԢQу.7ƒòŠÙáRc’_ůÌ⨄‚´”ôkÃ;\êg˜V[–*†ªƒFÃ3ôððv™}×Vx»•™k öxZúÙ:\j:XƒÖô”O½ïíp©×ÁÌžŽ!ÈÛuCÿóÍÂK}#UYÇ„ûìp©Øjnx_HE¼ÝR{¡¢ªX±C/þ§n\êyûÀ¢œH‘?„«S—)èVô×KÐô.5+‹•ñÇ£l)XïRÍRƒ_Pm,,êRµp"C7¥²^a•Þ;£<\“ v)ËxZÒÿ_çk .5Q천A.êÆ¥Î Š—‚Üd ÇŸ—Ú©KM\?’®Œ}ü×Û…’·ÛÎ _6¡òg¨˜Œ›Xƒ*÷/؆õoßý‚õ³­&ü²TìíDÕ’‚4| Ç„¸Tš*à »f'&cmÇÚ`VcQxÇ.u¸ÔTY84)|Áî·ëp©‰â÷TY8Q ú{;=~+3ª†ö«ª…³eu©µ²õQâ:ô0Y¢vI˹ê & ü­O\jÒÔr–‹úÏ¥Ì+U»h­olµ…·[1éé¬voW#ñ±pÂ¥&²X“nÈ´ÅX‚bo7‰{{£µòBW/ÇSÁÄs‰yô+RÁ¥ò#­i¦ƒ,C±·_Nœø?÷ýje9Ã¥bö©Ö¾ÙË;oç•J”o‡KMÆÄ_h-±¾¥/ˆ·7Ø¥Ðb¨6ìÆ¥NeËå÷\2;ÞNÉX6'3r.g¿)h‡KM]2ȸãíp©‰¯ŽÌ^| Ã¥&½¼* §iáø Â¥&…,šÖàØÂÛ‹vQ}Aî þD¶—šaLFâ™t¤.@™·çö¾¬›LäéÏ>ëÔ¥¦Â~UÙÕ¹eá. —šÈŽNjMÓÒT¿›}Êò’*î@§‚E~µE]êEªÂ†ÜvlÕÞÜd¬W˜\ÚdàR1ûTkßìÆ¥VóΕñûe¨üæ tbá,)¨¬0ƒ"÷ãü¥²¿_Á¥&zÐem]8þhû—*¨d¯Ô º Õ?+x~€²£àôö–Œ]jJ{#•«¿v©—Ú¢¥'MÐßP‡ß÷£Ã¥^Ž ë‘’+ÝH†ŸÕáRUc2-göö…'@—·›‚‘ÔÓ¤¨Ú T¾+8ÕzÙêØQ° áZˆÄ°¥`}(xý‚ajzû4v@¾/ÌŽ·7]¶yMtIå¿&ºn2l2T¬(¿ò½}Ÿ¥j$..©ã·Û¥HÞ¾¥›Œ–3È8v ì&“ƒµþËö\Ê„ —Ì>òÝVßCÙÞ^'NçÎ@5ÇðgwêR¯Pœ8dfŽ…»(\j¢ LaXÒ¦_éÞþpÑ º,Õø,Õ,B_”jÀ¥&KÿÎ]l8͇x ¸ÔdfOÊbe FþlÙ—ZLª©ÖÝLw¨_ΰñ‡q©¹+¹¥ÞéRÐå&†q©§…ÊÝìtªþùûŽÙÛ¿t†~—jºÅÎ@×SëþýËVe*ÈÛ.zBÕ¨ðÙV»RÁ¥²,¬Z6fÎþÞ>Ä¥;¼2AòLÿT~5Nκª­@MooŒ»:±/^ßÛáRsæÁKÛ|ÒH~^Ñ.”íí×gx¸KÕ†_f>àRŠ™[ß¡Àï ”íí0q1[”ȘÚù<(¸T)H‡Ø©êO¦“Ï ¸ÔÌ$šlIžRp *Uÿ£ÙáR³í ½09«h¬¶Hp©Ù*_&h4MPªÜÍ>Û?üì ÊÌ\ªw(™}‚®.œø‡·÷· ¨æÐ‘:¸!']kݛ̈ãî 1[È"æ¦Ë¶ÿáR¯ gTÖ Ù_8ôøÍ¢Ï†¾ Ç„ÿàp©@Ͷ"Ðe(¼=IªøF*ßìÆ¥Ö¡ÉÁá5´·/˜½¼‘ê;g ÇoùÙÃŽ‚í5;ßüÜɺ_RÌf(TSp .uüa«%(ãR)ØßøÕ™£ÿé¢ Pñ‚é+¿Ê½=fËø¹è&ãïW9?¡’ Ž(UsПþí1ë&ãïíù±·ÏÃá~“Y€boGªL¦‚ÜdHBÈd’oB7_PûUÛ€*ÚÛ§ó¦­àRc!ªvY8įüÁR.õÏ¢¿•úÁ—ŠT17]ŠÈCöëu©o¼Ô.A•;ÔEA2~× to—‹òȺ_-@™·]qþâ.ª¼>ï€KÍâR•¸¸'Õ»{ûóú±Ð~sÀ¥fz:åŽÙÙdV„KÍ5Ø &*@Ö \*¶šÝ§^fÇÛýùΣê&ÃsI¹µ[f—JÎvî\ {Ú*Ÿ¡N Y¬˜½Þmu|çíp©v oï…5XVÌnÞ^¾`‚DŠü¦ë.¨¹÷]´ÉÛY8ЛPáž;ƒ9C9¶ âg¨ÓVþ …A]*¶š»Ô Z2[~{;HBêæp©ÅŽÔÌΰ E¼øU7ÁÜð²b+»·7ËŽž=±~ÌxøÒ‡q©‚:ø‚Ê [2.õùavŠhÚð{êR³½&.fyÇìp©@MùîRù—m¸Ôb·¾Æ@Øó»éHõ÷+êR39ÛÙ®1ë~µ"{»ØpÝdBÝ"¿ý¯…³öëRm™½Ý¿à|Ëe¨Ž‹’ž¤b‡Ëô½.³OµöÍn\ꯅ#wÌ>äív)*ñøê Â¥^ Ž/¡ÒCÁ«ÙëT¾;Ã÷Pì홃>jëÓAï/gq©¶3œ>D^#ÊŠTÜÛ™‚QT2¦Tù¿bo·ëí aãP–ÅŠ‚ÜdtxA¾⢾‚õ€K-0&%è&£«š'Õ >Cý’jêï½}ý ÖC\*¸’Ãw f ¸_ñ<Äy¹=èN¨‡·_œaS*¼].j6fÁ×éìÝëA]j©Z8$˜©.Õmo^¸ÔRQ¦U¨â¶<ªu©@•qY8œ8 Pp©‚jð8›PÁvQ(¡#òÅy¹sxëa\êjˆTØp o·ÓâXwãR'À]Ažnu=¨K-ÔÊÌ5"s¸Èz„zW0–4¾³•öö —"e¬HÕßHÅ!Ö¨ñ„²8ƒ–ó’‚p©˜½1™tÓìñ·ë Ž©ØÛ©|)õKÞþõÂ1.õ­‚›Px;ºbÏ¥œE(¸uõ€K-†`«¹I¿–ó‚Tx{go·ÈöùË ü õ Ço!@W c\{Y±ÕôöÌrö²ýñ«‹3ø¶‚KEª™ðòú‚äl» êë—ZŒŠŒùˆ•žä‡;Ô¦p©Åú@þ«ØÂVuG*e…阰KÑÁX¢Ãí[êR‘ª]j-­ð¶îȹzÀ¥¼ÌÊj·$U½+(³ï*hÞþ|·ßPKfï@ñ §ƒ™üjI*ëŒ7,‹µœ8—ZK7RãRs-Üd”AWØÝI'TŠÜ»!϶½ËRÉÛ-F‘ò®‚é®à”/"ß²‚¤ÉÕV{R•ÏPe(Ö·…·ÓÑúª`ÚjŸ¿à®‚ý¿:Ôòhʼ½å熼UއÙ/{û–‚p©— ÙêçÖœæÖìB½ÙÛ êgïÜ€bo§E[£àPŸ¢…ƒ.µZ±C ƒýŠâ¬cá —zU0c+]?ü].µYú÷Të'~uÔÛJLœ*‹W¤â&cP)깤Úp·ºÿ„He¥=r•—|«RÁ¥ÊA>á—¡ðv&Ñ4›Zštî ázÀ¥¾j—Úð(övãRsµ[_шÃíuBMoOôtªÆ&Çå.êßdàRß}ÁMë]ªv(RtÙÛlo ØE/§ó”yû°ZË~ÐËâ &®¹ƒ¥N(^©6oâ²p¥Ê/,¸Ôì¹Ô ݇CwQ?ª—ÚíÖ׿Á²Âzsóê!.õ¹3\]táí,.U•/6Pc‚.ÛêáííR’ÏD¶cŠÌ`{{¶±*½bvÛÛ+™N•¡5gX1;ìR ðkuôý°þ ½º5¼'÷öÍÁ\ª ¾• .µÆ€Ù9¼e¸$U¼K5;Íÿ,çÒv Ò©ÊCÁ%(n2”‡~”a=èñ[!_^z=ÃÇÞžxÂѪ1YP—Ú˜ü~Ð.xJÞTÑdCvgËÖ£?¥”LP—zÙ,Wíü‚tOrë&N¨ðFAqʺ_x—:çaÜÌcÃVÆ¥ jNÆø¹_©ƒÙŠ­ˆ@2­à ˜y”´UЍš…wv¥ªo¤z˜} ª½±•ÌÞw ÈP•P‰ßÙŠ½Ýv†s»!Öwq÷ÖŽã Õv T»D:¥U3 õç&SÜÓ9ÚÛ‰ªáí×cbн.[µƒÉYK ²·Ó·æã;¨ÇÞéñ«Ãk J7ùU{c+÷ð p©—*¡Â¼ìíîÖàR³-çvhápîÐÀ o‡‰«¢ÏFYü§e€K­Õ\´ÚÛiÄäÎK=¡ØÛ …:ðzѯ@á혽2'®“Y8q\jmá¥Ã«ø!‹`\j†£ŸW¾P°Ümuþêß}Ay{ÇÚwPíiv£Ï¦‡¥ù\¨þF*’ì¾…·3ÊVZó[®*—úª ¸³eO¨‡··CÍ…¶Ì—zqÑÖ 6ÿ=àR+ƒð¨½,çâÇu©•nº‘sGå wgËÖ—ZÅ.‘NI»•S*ßàR+ÁÌÚêwPíÙ-g»2¡{ÉìýTôU«[PxûÀE­&.ªðvEA¸Ô7PíP:wbÈ î_° Yl™.µÙx¾óÏÈ cŽIi¾_Á¥¶€·Gy;ñüèGHìíJå’·ë†ÜÝG\€Km´ nAÞÎǤ¸Ô* [e›{Pí3T¬ª _ê÷/Øhl²û‰·3±)+L.EôøÅì—/¸g+zü^üÊÂÑSé×röý .µQpÔ2. …]üWj .µ%6dгަ Ù?q¨K*6M Ñàÿå²¼=b«úT}cvÛ[h;foo¤bCny o§›nKlÈùØQp|†j‡:˜¹3‹k .µ)+¬µ¯Ì—Ú”äÙe+̾°œáR:Ð5Ë“ñçÑŸPx;MfNÐ4A](¼]Ť*¯çç~¸T æ4­è21ëÛ4Ïë*•¤—Ú^ÁÖ__° ”ïíEÞNˆõ¥½}A*¼†9ìW±qgð't×—ŠÙã%è´¥ \jc4X³D Ø! ·²ø„ÒÞžïPó[.C¥»Ù§,‘%¾¬`~£ Ïpµ‡Z‘ª¼‘м>µ[’·ç7~Õwlw³Oµ¾0{Hõ~ .H5>ÁM›¼Ž^ñ«Áe{amòv 7™²£`{s“¡.ºtL—úÖì›¶ÂÛéÅÚh“xj,H¥½K¼Ûª7ŸÇ p©§eSЩñ0Yˆ3¨.uètæÄQ”ûÝV±)è´çWx{ÁÛ•zº—ÚˆÉ4Â;Má¨ðªjããŽk?¡âÝV³o*ÈÞÞ9­{Rìª _x†Ã¥6q]%ùz†/¼RáR£í«Šþ47|áåe\êì‘÷c«‘¿ƒ"ÒæãLÐ/ ¨Ô£¹ ÍX Px{3Ƥ©Y‡FÛ/¼¼Æq‡ÊÅÆ¨åªê3?{'À¥¾æ#þ'(ÝÛqÑö¼ª-)˜žP"‹ÉÌl <ޏTû‚í ~Ôß×^ƒq©3<úJO:v ”ÉÖ§:z5Csç†×@]jch ù »Pd…Y/‹ÒUY|QИÀ¥¾Q0^ZÁûP.õ‚S¾E#\ê;·lKM´Òj"/¦õå^ £q©¨d“h:„B¯n{¨*¿‘*"•m}‡;hø„"ÞnÑ ð‚Ê;Põ.UŠ)|'U{(¨öPô¿êͧÏ"\ª² «e’ϼ×Tî‘y{EÁéWSÕU©‚¼;lx°»hoþ!ŠK%F:eìÖ aIAq©¨yfqKPvoJJ7¨~\n2þ¤Ç/E4ñ2ÜmÀ;û×Ú—Ú ÝKªÒ¹·û÷«—ÚmÞDìF(Lø—‚î1áR»=çÕ"ò½Ìîï p©@ÍѵÐe(óön©\ó»½¾`Ùø‚p©ÜYüš/ù’ʽ3D¸Ô«Tå«/—ÚI\ìV±{Ê;P–öÏ|ÿ‚Rн@FêR¯ §¼q†¨rw†©ÖKAm}¾‹Â¥vk×}ŠBH;_°½")ýrâ,HÕïPÓþʺ'òCÈ_I•äí˜=²!sL,A¤ ÿóy]‚Šo ô·Loüê‹.@å7Re v\Ô¸Ôw î~Á —¢¾ƒRžŒb혨ŠlûAò—Ú!@{æ&“å þe.õ6 àR;vìíê«¶pfíílÈÚ¯ö¤bo'ÞÞ ’oB‘'Sä ¼ƒŽTÿ Â¥þ]V°P áR‘*ö*oçªæs^.õ­‚PØKPºÉ UbáhˆüÂU .µW6…ÂÞñtѸÔ\¨óêÔM„¨…ã†X#\j'ZÛ[üJA¸ÔÞPÐj-{á ÐýÈv„Kík­ê¼4Üm*Ý¡¦Õ"V[¶Uþl«©ô²­¸ÉDùÕ—f×M†ê³ˆTóáÇEcio¤"Ī골þÙV-0™ôp£ŸPã3|g+¸Ô×4Ð0×›)ÈÞîÇE#\jïåÒ‚u¹é‡;‚ü„ÂÛ‰·w£„ú«MÓK*ÿ —ÚÊÜUȶU>Cͯº …· ÐðålŸm5á—¥ÂÛ™»ÔͯZ`NÜᎠ?¡Æ]ªì °iv¸Ô×d¯WœA¶âÁ»Ì„Kö,=Þa“9Üä'Tj •™½,3›¼K‘õètò\ƒÊŸ¥j!i¿Z0{¹Ûª…ËÞ¾%•yû “|D­A{˜Ô…$u©ÃB-$^^šG?üs.¨Âµ¶µÍw熟P㳂qHYQ°ËÛ‰·«÷Ζ­º¼…c‘¢ùU_ç ï =¾‘Ê\´j–Ð Túl«4À«}Bå7Îð¥­ðvÞ8ƒëÓëzó3R"u©ƒâ¬AóÆÊ+µ.¼R©Kíp^öAOËà¯AêR_ý|_RÙ{P.ëÂË«ËÛñ«¨5Ø7 àRß@]̾îÎp1û¦Tñ³­ZÈÚE}g€K”Nów¥ÂÛët†^/k/¸p¥Ç/ (&h4MPjz{®¶É”~qQí¢ Pìí—…cÑš¯)(og9Óy˜¿½.ÜEáRß@ý’Ê…Jp©ú‚4›Ýû‚I\*wÑ×àˆmu©/€ÑZv†ÃÏwB¥»T-äöTx;™NÌóŠÊÞ9ÜYØ'ÞÎÃd(l¸Ón%Q—Ê,lIÕé<üêB‘'c‘mIÕBÙ‚ÂÛ™ïJx(xøh2.uÊò‚’­ØúÜAÃ5y;˹Z_µÁàp‡2ŸPtÆ£'y¿(˜v âj(Þ^ÒŽ‚é®à¯/¸%•:ãYã¸n'ÎùkìHUî NÐè²Tìítظš}ËÚg¨iµe(¼½Æ§‚t´^‚ŸÍ¾© q©ï\tÓ¯ŒKŸýj*>Ì~Ýú¶4o‡š !P Œ£?ÜQØ'’¶v6†&·’‡ºW†•*¡ —Úªu‰ØÇŠ$’…C&õi©Nê5¡pu •ƒÝM£ÓàW-åyÎïŒp­ "ÕôûZ(jRá¨ÔƒéŠ´ S¼!µ@w”@wß%¤ôDÒÅ Çc~"™ŸîU_º9õ¨ 6ê%½Ñn©>eâV¥®W+ÚµÚMé–eê7¤_ß²wuk="ÍÃtø¹|‰¾¾=À¤^)Шj jzù”%ð…TÜÕœ’‚ýPà Tú¬à.T¾+8A¿€*wç·ŒÀ/Cc?ÌC»EÒÒ%IÃé|BM_ŸÓ&ÂOŽ(ïÕÃ$ãO[" 0Ä5sΟÕMôõ­ U¢ ö®@iFªE ‡µª÷Ü—©ük‚ѧ¹Ó·¸QY/ŒÙ ÎÎP£B¦èR¼eΞŒŽ(•)s£,«?C#}š‰“(ÎKMï6w*æ UPô?› ËP–äk‰’%i'zÞ®MWFxJ¤ÜÒ–vÓÓƒí/Áúàíêf~^,U¸å€¨¯ —XcNs´í¥u"0YÁœ(ÛÕs©Üõ¬òNÿØ2æô-TêaʲÙ»1¦H—ÚM©ìMÚ•me!¦]©Ìѹ2ÎÆcÿ ÔápçžPõ3TU m ÊÞ¤‡eÅ”høU£'w¶æ ÕïP­ê®G^S]¸Wsú ÊBL ~dʘÓܬ o‰Ö}ªºª 1§’ªjäVm;¶2æ´E™‚žï48ÜA²'ÒtvÒâ{ wù|þùn´)å} v% ¯à˜ŸãkRüV¤úI·4  –ŒÔn@ßêÖïw Jó»p¦à—F$£KA=¯SÁO¾LF—¦WÐðsÚÁJÞÊèÒŒTr2ªzïîÌŠ ÝÒs£™T*ø­“Ñ¥)Z]VéTD-¶Aê\Ó­Ôý·†s×Ê[0;7—Ê}#á ER-@Õ»‚‰úö º¬`»CjñÉ[ ö϶څo¤j˜}l@]zî¡2ûw ]{ej?Z¥ù]ZØaŒ.mÉ ú¡(*ƒy‚ßG/]zbÎ…3žŸ+?U÷‡ß÷3]šlNk¦‹ždŠþ<«dd©,•¢U~L›½Œî/æñ¸¼´¬D–Mò'¤¯Ó!5‘¸wð É~÷ Yz÷Dzå,ûq’‘¥¹Øñü5¡fsÊ(¿ya†,e†@é `ª~žH6²tJðc+õ«¶lfSd#KçèðaÌÅ’‚*<…9·&(W[ù“ 2d)¶ÊÕ‚ ÓjiZÍ…R†„%î媛‡¿pò…,µ³9ØÝc‚.Cµ»T4º ¥˜ºu.ITÖ&IåϳÊF–¦dœOJv)΃¨Âá·BÏF–R´h¯÷<â ×ô)O&óÆñÒl4é `,"¹»PæçÉÚ LПLÞ‚²=½ã:ë@^ßΠ‚ß 8M¢5Ê øy­D›_F™&MÉø¬S-{ÝFÊ Û %§ KYÖJ ¼ºúU¢ÙHÒ “GÛZH™ ~y|6Š4Ëü;Aç WY?û6Eš±%ú•ä¡ÇÈ‚Œ"½@% ŸÎµcr£H'ÀRÛËýÊ‘I^¸qd#HSb.¶EM×ZÖβl0k¦£Uº˜É÷ãGßmÝ˲±£MA"ׯe$ÒÕŸþ~$ÝüÝ€–½önÏMáaÈžà•2ä詨pr ·,Ä̸íþ(özù–‚öJ¾œyE1ë…3z¨yF@—¡ÌÍ_ýà~ö×WîèÕ%gR)(þwSA%p?På‚Hé(ÒwUÁWòwPp¤O~{S?]Zì9“ÈÑÛ;d¨1eÂa¦tÓ1³0á0g9{¸Kµy•ÊlèÙvO¿](®.— ^ø*–ªE…9ŽdÕ˜Zø¬ôKo™Ýß÷TcjP³ŸHtŠŠêgC—½ñqÙ8Òì‘¥†.¹Š;ò 9|±Ž5¹ˆÄ¨;Pê׋TÁÞk{‚²úõZÅ 6T©*ªÕ±†ˆ…n’´Xî§Þ¶óÁ¼ú¶½Ì>µ¨ªÆ—Á¿Áhöiçmkí‹æ´Êe©ÌÛ ìßPqöe"ë‚Tí®àe¸kuªÿa«±'ÕxHuUÐÖà ÜlLé¯q—ôH«RÐ߯¨1}³3ü4-Zßè×ûŠÀýðøá­´Iî‡ßÁ4Sc TÎ61¬)°¾•?CMù–¡Êª…Á¥Óà·ÍÔ˜’ó¢…rV†–ßM?Scš,‚ñ)´±ÕïRMÐè2”¼Ý.ECL;³å35¦E£¬¶¦2ÄàÔ…Re†½'«5+j¼qøã25¦Ý–ÎÚêHmõ jAÁôYª–xL,IeÞ~ßJK‘¾_~y}¦Æô‚-Õ´£ Ù^•»è» ~ÓÊL騖ê{û³‡Ç^;¬Ù§‚bRÊAÍÖ ”fŸ¾mR²p£Î#oðF`vŨ1ªTå6jˆß !Sc TN6)e‚¦ êBå;ÔôñˆªË R™¡ˆ¬»¨NÿHU©ê˜L>Æ¡uƉ_Kš6Ї²jL *k¨Ý¦‚dòZncÖkb Ò4ZT5'®j©Ëü#•Ó ì*‹îä4ò ë$.¨’¦¨t—j‚F@—¡Ô‹Ý¾`)Ú9qütŠL騢a Š~½¨,©ø‚ ojL«¤²ìÍ9 ðå/ghÓ7P-)Õnʼý2X’±ÏC—"¿gv6*Vb2›P–"@߯RÈëj;êý£M•“í ¥´-¨ÔÜ=ÒN©¤øÎPŒ6­ôÑ©¯Ö.ÿl%Ú4ø_°mZéSxJDÕ– ¦·Òž'Çÿ³É$Ùʽ~£MÃ0f_P—$%(Ëp¬–Î[4ø(é†ì' £M¥à”ïµ_íH¥Ù§ô¥¨vý˜U©Ô¯¢KÓk÷¤_o±ä¡\Žò]îþ|ã,AÙÞ^ìú‘3#;Òe º—¢B¿Þ7P¥éΰe¼Ræt~ñ_?W5eÝù=Ò äidÄP&yh¨³ˆßã@Ÿ28Gµ]:ãúwÑbª Já¹t ±.@ѯ7!Õ·¶2õ‚S¾e©âªÅËÁA_ý‚ãbjhdݽæ*ý\Šô\ò› ãPO(ã÷_ Ðe¨r‡’T-h9¯@ÙMæ &žŒì6Žßn­\ªLíEŸ—tò[ˆˆÔ7P¥ªÛë ÞnGjèÌoéjªä—ÑcRà © Ò²\ÒóýŨÔwP-¶eÞÞ¬WhŽÄúòÊßÞ~EÑV0Óï°URþ,UË¿Zª|–ªe5Ù]‘Ên2™G\°Ó¹d5$ö›u£Rs°¹@9˜_•L²\ð[=£RC¡Ú&’Q­ ÃgâŠq©S­ð#KùJAêMšÃqò‘ú”y{´63'€9Ccë þ¸€b\jÈØê[³—úKª†TyGª|‡ ™a>›P“¡J-3׺Vâ ÁgÃKÆÛ¤2g™#u ÊîíÙX€ ð£ .ºÕïPR°eÕ›®@ ÄŒ£ß„2.53׺¤þ%”y{"åXÍ›3áèà7æ/Æ¥¾ƒ* ü.A™·§$¨ŒTrQÿ4.5–ëV+P-ʯüÃ˸TA…W½(“¬@™·W땲e¤äÚµ3ø'%§@…jºªï@Yæ@¦ ©Z¼,ç¨ñTÐJ\&è*”q©S­_Píº‹.@±·[®iÊCN¹KAÿt¦ê4“”m9ïBYæ@¥t**–êT~*h“,.u ªÜ¡B4.5åË.êôÆ¥†`Qµ|Ð#-«ÔÞo˜WŒK}URˆ;P¶·‡$(6‰¿Ÿ\1.õTIPB+PÆ¥^ô]*¬e[xã—ŽT4áÈJšòûÉ•ïRµÈ˜¯F’}_¤—Š^©ÖÏ#%fúy§¥±·3º ò¥D… ý~½Eµ§…WªÙ*©aÉ’TÓÛá«Ã¢†%V!ù§„Q©oZÎa‰ ë”1©%êÎç—cRé,ø5’©ù`~ãaÉÌ%ª ÒoõT¨>=,€œkrPâåóùûž©£´ÿŠ4=}$!qµÊZ~þj4êÐ×ûÖPæçÃÞŠj@¢.~cÈb,*ÙóG(•!¯ M?ïòsž”¯™ /$÷¤ðôz»B;ÔœqýïmS ¬@‡ Õ5Ù¡6¯Eúù[:u§‘žÍ‘V:•pèBÝM1 ¡:ã}«È›™Ò]¦’,VØ5ˆ¤.ÜûG¾CešYEšþºPåUé)1m¶l)Ò®1Œ‹½´¤î GòàizØý,Z…g¾Ü/D{OÓÃr¾ƒMëN›Pæê¯?û-•f{-@Õã¸+8å‹È· 5}½mÍ»å îÙW=Õl=¦©U]®W€Ò (7úÌ\ž4+HÙT³+Ýßv‘l>˜ÅÓÐﲌÝÓ¸qÚªˆªËïX7}ƒTâ‘wÌÇh´iR£ïÕÎTªM;ãsnšMüÆ0ÕhSAÍqéÿN†LIæT¸+˜²kš"9~÷¾j´é;¨iµe¨t‡šð?{§ @îÍ¿í×ÀŽ~«O#«HAtHîÙ^Uszh—R£„cª5—òÈ· e¡u[€•º”ª¨er/ ÕHSgÍÀÀ’ŠNýúˆjœé¤ù¬_E2ʤpgÜ“I]yíÛч¥å‹LîÁ^0-Öl/uK×*A¢ä0Æ—¾N¸Ÿ»¢-ãxÿ7Ÿ˜¬F—¾‘©e½‰Vd*7™òAžˆ+¿i_5²ôÒx#ØUx¶àxAù‹ØÈÒ7BM“- eNnõDÝŠQfÐ÷EX°ø¸‰Ô+e†þö+HF”‚4íüÛ êÂiOú¦ÕÉOƒ“u‹Ã“ò4¼ø’F—,AY÷¨¬¬]îüV‚•’S Î½ÆºÇ%X¶%(ËøŠÜ€˜ÉÝ.Ç‚„M õMrˆÄu# ¼Ÿ&¿a_½Ì4ëÅ´v(¬¶”»ýìUCWjM™„“ì¼»ThW¿9Weœ©‰Tm»+“uWgµ(Ÿ;«VÇï‰WiÆûD*ÕdKHÖÊÎuº)©ÀÁï÷VM‰WG&ñ,øý¡ª£Ö_á<”í®™ÈÅ_É®åÁ-ßiÖËí­¿+Îx/NjŠ/À:Íã‡"u^Bª7¤¦>ˆïüêëjħzF^šb ’û]mªŸé5ûñ¥¬Ëîë_PŒød S"í*×Ë×ó‘Œ÷TÓÏ©éÏ‘@ÞþŠ~Æ{J¨hùã]¹ÕOd®F{¦jíØ3íZº¦L?³í™èšÔJ6’hóï?äBÑùeS¡ Ò:ø­ïªÑž³·|øÙxé'$|Jí¬Â2ih\ÕôbJH¯íêwPö³ 9þê4°e$¿flô<Û*©Ï¾»§Ùé+¼Ów·ó9Û ÿ(HñSÐ5zʼýõÿ2Âr6óýòë>+}wÈj¶y9ç¾¥¶´þÆ`ܧáËÍê~ü2UMwŸÌÜJW7šî^ÉÂx•½¸sq1:}næqlʶõ’ù|jlC›%©ÆggÏÜ4Uõ Æc_Ï­Õ7f÷4ò3%È3ºƒÕ¨›§ßŸ£ùù®/t»¤­@áê–«˜Š]=7]ÝèÏ)K Gõ –Ïΰ×bºŽ‡·OßwQ£?µ–û›µìïTÆ}¾kîÖŠ}~s·JÏ]F—‘es¤òö›qŸ)Yø Q¸6»"¾ ÜÏ׌ûœjýDÚ8¶’x!_Áfôçÿ¬ëŸ¯Ñs÷Õ¢=üü’‚yý 6c@!sm ¿6«©ž;¤=ÿlƪ›eÒ$˜$©V¾`Êâ’‡E8»ÆVUÿäjÆ‚–×äÜ0¼ Ŧú1Î Z(¹ÐdßKòÝ‚‚Æ‚Î?û‘ÊŠ±zÕ\™é»;ŒÙ;7+‹+´d[‚²Àù°¤óªô*á|9¨{môÝe-¤‘@K@AxðØJbWÌÑéß›‡Z^k%ûíæMwjI5¶;­€› ‚*Ãò„kÐù·5½j¡Ö¬œD}ª— l[·¸Ùîós@ZªþU¶ZFW÷ÏgËÕ…þü²ÑÆœ©ƒÑ¤Nüö²Ñ–Pçæuì@¥;Ô)¾®þ T~@$¨´E †šCó„ËUÁߦ A“mS!Y·žt(…ÄOtkFƒ†`£sÕÏÒ%(Kl¡aç”ï ©Æg©Zëè7ÀkF…6:ÊLZLz•úMëšQ¡Íîgƒ2‹KCà ›ŽAÔä°Š”TT9à7¿kƃ¾™RtÈ£üe 4Z1eŠV¾™ÍV}n¶ Ú¬UV'ŒÚÃ¥‹º¿\(­—¾ª“íïRƃ"ÔeäÁÏ%™úg™.m–d2²ˆi›f§¤FÕO mù¸)'ºX| É/䟞eçB‘ÅýŽå͘ÐFÑΫŽ8NC›É}'Ïw'O4Õ¹|¼/‡ Å ,@u±ø’HÅÎÏp*J²Yp'ˆPÓí-í´¢søe¥®bÏ/37ËÓ¸ÞòáUWn®Æ‡Î«ïÓ›ô`À5nùƉ2¸.i¸Í«·Õ ÉÿxÌ#gðÈÄTèw=lFˆê5ôëݱedÿ°ÈÆ÷Poé6y·ª_WÕÕÕo ØFƒÙŠPtªeœoÎ:ªl/Ì–jF‹¶fwמI™¬D$š_¬ßŒmôu¯•˜>ÑýRöfÄè,¨}Y¬BÕ(ú "›Q£³HôŠ—qÕàHŸÑlÆ–¡‰PYL7 ¿«c£Ín¶•K5‹Î–¡ìÊn϶n¹ìUãDêš‘¤O k¶àé»I>A + dõ¡ïZVfš­­,e(R¤š8Kü4šféÜîPqŠÜúŠZI\;….@l¥vy<¸¶¶=(Ò ÙlT=ª,w 걯h…º `¿;ÃTõupm)H²® g›Û_°K:‡Ñ¿Bóvõ(ºû¡…N‹]‹ ©´l+×áH-!.÷ÎÕX=Wta·õgÍ®LæéøtŸË@ÔÍqbÙÚSýkõ9Û;J^]Õ;‘¿^ªS!J+¬Î´¬;±´w¸Qj¸ ‡ÕØÁ! êé nµígúõÀ5]½è*ke'i°‹µW·¤Ú…"ãB³Új™ðËPÖU·Û£4å”}ùý ;#IÙûQ©¨büV  RŇT¯^ËPõ5UýÊ..£þgI0&ëõÐZ²4€dÍÎ_Öí&©y•ŸÐ/cI ŠÝÚ/cI R金ŸœáÂe(£Gm¶+lR '¿éKí¦«[ôyÒH}ZÛ¢T»ªM'¯Fˆ^j½Bk·$»h¤5xÕnecõ8îPePµ:²uÃKø¸ 2ü•#FÀ£vjDi°×éŠÇëcI&+ƒ&“†9ïÊDZ—µ²kÖæ‘ïýØn§“.]WÎ_¶îÔÀe¡L7nTFŸ‰o?Ë%UiAA\Ý¢r…½é‘¡¤oÌþã–P\Ïí–p™V½4~i4æ¦T%:O=»pfjý›v¦‘fúÎ ËžžµêOtÐÅŸfG¡8ã5ëþdÔ(1®Ì”—Mõäã[¨¬ÄN—d’ÓD’Þšº$S^âQuì,acGO™,5ºÒ}ªÿö§_ʵ ñÈ‚wSÉUxÑ`ýçööRm Ênæ•6xßú83HVº ^2òŸäιþ_¯…¾áM…ËÊÓ1w¥zúø»‰ÉKPL»°cʾ©ÑïZÝ…3´Å‹œÒ_¼ÆˆÞ¥é‘·põ³:»Ñ¡³îù'B–L!gnE1£C•R=“Z¾±ðãÁÒý Å€©,3Îï]zý†ùÃ¸ÊØ8€Kû)|)R3ýIžò"Q~)ú£†•‰ ˜Éc[ÊkFZ@2§ÀükåèƒXžÀ&ç:FS’°‰•v€ˆlàAö.;"ÙE¼^EÚq'X8 èjÛØÂõøieÉÑÕ–<¶.¢qK=fz¾Wo稣p¨ÓèýTþ•ÇXKVK¢è/R@ßýß0Ö2i`”%±¥‹Cù7‚ZoE žâ1æOƒªØ´w"áU@þI Ž¶œ)•cœL“a]¤qCê”wõÈ~ÅÚ4´¥XSuT¥ÚsÉúå»mš‰v¶ô¸8Àmàv±HÖ¦P8ÝË:ÙÚ8¤XiyK@å.Ðñ(úšt˜44‰n\Á1϶±KJÌ~ô‡$ ã-“¦[PnXÄû­†—Øzþ}œ’Øñ=›îµIk¤óÙÆÆg3ö¤šTQ"íìÔ®Ž¯ NçZéhã QÌK@êÒ< ¾µHüýS@¤ioá˜oÛ7us¥šrÝA" Ö¦9UõJ¨-í@õ»rñ¡\ôw :ÖFv[¸øö µ˜–Œ•èVÓ³óÏ6šÕ’#”²<’K®ßÄcPˆißmšý ¤tÿn NÛü•küeaô²¤êJÔ_‚2ÿöé†Jß19iÞ$B[iD“ø>i懲°ƒc¾m©â‰9×uKómë×c–©¹JºMNÚA‡Ú¦-@ç’v7ÏÖí8ÂM¦dñ€$þzE"®Ü‰Ð`îoDò.%í ô¨r ݸÚ”íݶxÙi ©|jjº Åþmni}Ù’ž¹Ë¤t¦e:Q¸ÚôžXøvæß,ÜN)D¥Ö|I¤qW­>T‹î¸v0™“É£TXõcǼ»³y¸KáîX‹)Þl4ÿ>ο·mÒÛÚ{9¸+•ô”É ¶ƒ¢K îæÀ¾% ÇÎ-ÐXò%åȯ²‚`óÉäÛ¾KRnY0w'hRtÇñW›±—ÙžoY¯î²%Ò¸©F•Tû‡èáPh©I¿Ó·3ý/–p¬rÁÝYnoî<Œvk™õè&?+Ýüåo¬eÖ£[wefF¯ÛxˬG7mŠ.+Ú±q[}‡Ý{f¢ Êhʶ dûö`<=ÒïhÜã-“Z:ÍŸz¥ô”•Í[rvnÜLXnÑå·ÃxË÷ ÒÃíÝu"™[p*3ÐfˆDo;¹ƒñ^5uîÝî ŒÉü›ÊßnÒ«z ,!å»r¥Vs—莇h‡(Kº½‹9q›’HæÞÆÁà5µ-h7 JÇõ)Ü2R¿)×asz¼°9 Hã†ÄÀŠÔ»Nß—Œ°èô ôF¹$KÔ\¯¡ÌÁǸiW“*}ÜÆ í`þ¦¼’©™°ß. ׎̣Ò8k«8Èí¥ÚzΊÛ׬-Í^pûÈHõ†4?|œ’l Ñ Â²ý(ŒŽŠ™-ÉnÝ}pZV®Ý=ì@M÷.²*#²Æ #+ÑâSéÝZ¸vPUiÔw1¢ª„¾ƒï6:€`'1“êvÿ;¡ÒÍF3‚™æp‘ò]¨š”0vò¯Ëÿ.o„J;HõO¡¶ (Õéæ—–•RíîæÃµÃË76ßôp#,_~ôãPÖBoo7í¿ÆV^pÌÁóØÁ±.³ÖÿÔÍ]±î6íT׿8vÝ,Í)ÝJæ}J‘ÅmÞY{nþN$ónwƒHU Т›˜uÙæMåh¿øvÙAjŸ¬4!—uëÝêÓ!2Ç6N°TmÝ'nnm;¨®dž7#Æ«lí¯4#) a-£è•³‚ƒg+ƒ¶úQúÝ¢í0–R6 ™§.c“¢Ëæ·ÃxJ U³ /PþÞfL娶U?ê÷£Õ†¥Ì½ RZÄ»_^Âyx÷Õâ[º™[>{±ØyÑÕÔå*Ûa\åÇÜ[7ÊsoK‚,v¶•¶%¹waãn\L`ÎâBÈ̈ÊBÁÖ%£¶.s"™w[wÎB]Ô«r!ŽcL%Ê;”®mAµzǹw€Ì¯M¥SrO3slØ.‹N\5[ÀŸL}~³±d<%_ š• ¿dŽ­1uÚCxâ.\ÚŒ¦¼™D*!^Á±f±êâþ¥@ù&Pi¢ÛƒÿÄ1¯Vw3ûö—e¶€c%–$ùÓ`²Ò1$.¦Æý¢Ýª’–ÕÈßíf}"õÒ4qäò¾lìqÿjÙ õšú3/hŽ»gãG{f ”Wj4‹E²ŠâV€˜)ÈžýU¶ù‰d¾ˆÝDtÓÆæÞ’‚”•bÆÊˆó¨·–Û¥#(Kœ#ªæ±ýÓ?A™·ä ôpþ«;G™›ås”`”`Ñ0œ%©ðqCêÖ$ajº,Ñ@^oè7AW…¢Î²ÓØõ[«Ó#öT»PŒr˜^5Íÿ2zÜAJŸ]á—Õ òŠWÜ.wo«þûà Põau v­N6Õ¸#µKïp·µý‰d·”ñÇY¾d»¹±1UÌ^—Ÿ»g^0Ò²Ò6£±á)¢· ‘±–U-—¸6ô®nëéÈ|\O”nù9뻹—Ë`¬e5- ÛÍ«Z±.!å»r–á§v‚KF*†“ «7ÆîÖ6¶`¬eµ•‚Ô¬*†hw ¬3/lùR¿ùR§µúTsY¹qCª°µ‡d´å©Ô¸Cêènd(oùF¨ËZ©n/ó Oé TÙÊZ ª‘…îu(¦ë^5ƒ1—Õ®þ[Y9lnÓÿNn‹…|1•5ºsZ0âÕZ½œÀdæŒÕÚ éÔȘ˪Se¸q¦`Ìe³ i›ÒŠ•ÆÚi¢Á‚vL̼¸@ØiÅŒº”LÔ‘V‚¨Ý-nÁˆKö|©UÕ‘.Ø›q™fïFW°LFôÞm…Cê.£ä¼ÕÊÈT£ôs ÇöïÇrÛµu» TÇC ¸pî2)“ùi©ä Ž9v”c“sÆWÝ1-Ð ö-RÚAârRX·E;W…ÕfÌeµ‘-çß×ï„J •w„Ê7K}¯ÞtïÆhËË ÿö¯:Æ[vv%Þ¿ªnïnu{ ŒÈ¤äÏšÍ5K+æ¶­Ûz5fy¥¼ƒ'$<€hTCu§<´i Ôù݈¥¨þÛíËß‚ñ–iØDŒB¯Ò_P RY36k 91#˜ËH¶{',Å1 Oç_r`.ߨ©f½{WìTî"Q­¥J‘êç;ÕÌ»™Q­œá-yÌ»ÕpaÈ)yÈ ÿbbÄe³Â¦`ðä6ƒž3&¯"5«ö¸šÚȈKá\j;@t¬7v53¿®÷Ò]³%œüÉÔ'à±d^]ï@çòØ’ÈÜÚ5*™+¤… ¥ñ•±2íÖóNà|'9µ¥Á6ËïlmGc+›õè‰A€‰qr[K·`|¥>ù‰M6¹Ý—[0‘h¾}5õ‚@éŽs(ìÑšªÞÚÕ̼ºÛ2#ò¢ÙNýdêVSÜ2¯îw s™ skëÁúíåÈèÊ }´-c+[{|ü:êP¸ ÔÚC ä¶•nްä?Ó°iäœéÕÝ"æ]·¢$ ÿ€5²²ë½N7ª¤~à W£+u3N—¯¿el;i;¢NàÒîÖßø²ì ‘4-’´c(óm[$]oÿ=‹ Þþm(BX’Ø;٠⢖¹»dwæuVÚX$·»Y‹FYÒ}¤G.þI Å’Ec,{„k&Tš.-]ˆFY6"–Ö5µ\Ö­|6ÓùéúT½ÉôËàzk-8íÝZ+•)'ul¬•h„åûe·e>N¶Q…'˜ÜF -_ÉXïóÂñ­Ú®ìÖ¶S¹ d.n·Û-—¶–CÊùëÎÈÊN•A2Má¹µ„”ïÊ©-BÇàG#*{åŽS´êDwùn<å{¤´ƒd[¸%ÓâK?*møR¿‰4ÿþ·Hÿ† ºHæÞ¯Wå?¨Q”+ê×E#*ªj~V-ò&÷ò©,ƒD¨drÛžÚÂòW9•Ê||Ì<ìaqâpÚù%QѸÊÎô$D: 7Jl%±îJÙg‚¦úêB™—kÝÍÝièÕä—F#+˰J½JJO0má07¶’ºŠåäbMÌ4|Ø=e:ÖËÚÆ§KÄ©h|åo¾‰]ü¾ sÝí+Ù¢Q•rK¦}¾ ¿j%#*_ÿûõ‹H HùöáºõkQ¾´€c{¸­Ýa»Ààœ[™¾=,ÑäÔŒ@WáYè§úGã)±Ñtó/”h¢cÅxauÊZY'‰x7óÞKåCSùÜãFÜñã)‡‘;Ÿ "ÉOˆFS^pLzí,á˜oó$ëm5Ò–<Ùp챚´'Aã$ŸŒÆRâ“C±×*ÕÜ÷s4šr$97\•rþn<åS¤ž »–Dê7+ “èúõl4î8âñ”L¦G MÍŒ¦–«Âã«f 8ñöѦ»‰c~mÝ߆EòÆÅ‰üSÛèIáX†Ñ¸¸ÐNyà|'NmëծܣlÉc.´^¹rù¥…cV••«5Éæ´°9?9è^"!¯ªMÄ¿Žˆž|+ÔŽ~϶%bOÁ‘v”«wÏ.QÔ‹˜Ž$óm iW·|ó‚¡x7s™–€ÊÝÞµ\²©y¸å‡¾ú/þȳÔÝžÒ-?y²%×ãŽmÚFOƒÓÛ±d-ê»Ù†Ãúìô¦¡zn#è ”nå¡[ZIƒ+m;±7îà‰»„ùþÄò(‡J0ͯcˆÆPަM`àIDLVŒ”ïBÕBçÎ+Ô‚P¶}-^Ý%êRýS¨-(sp{M„ãÐRIØÜ¿àW9|Óâ´_ºî®8¸!ÉP¤?`ˆ¥å¬ËʇH=·óv‹Œ±P(îÙn㋇ucK <œ³W|Œx·Éu‹ ³dÚÌqè²Ìéä¶ÝnÑË7H=)ª¿‚ToÚ +ûõÝ”k7 _"¥$socöiW7ón+§‡UÇýRÎG2ÖrX7’a'Á.P°C%° Dí¼ÜÜÆÒ-q9†üRv²×òÊ~bÔ%;S>bzÈ´„4=<A)€>$”±`œåKåCÏ&·Gy‹Æ^¢ß°8ÎTôÈmäÜâ¸oáchï;vêOå, 6zÊ­¸Á¸¹A«ôPÉm ÞÒqܲ†n9T:ðrKTÓ̰%¡Œž¯ö¿tóÄDËÃ!]ýœÞÐKPù³‚»RYwÁh‰°†¶´”InSç–h û*ˆÉ^jw¨VÛ—Pýu©AI»Å•œñö•1©JfOÙ7»Ñ˜á0Òp‚þ@uí nT&1Þò"ýnRÞ‚ŠHÅ)ʄˣËÜS4…ôP0PžHh^x¾$F\¢`‰¶ñU5ç_R]*)füú‚ P ôøÝl@ÿõ ö»‚ßÛêáí_ÛŠY—‡vƒ©ê­ü6Ý)†‡_ ½ bÛ\”a—‡åË„C¤æÐÎàñ‰i—Î*iÉêCÞü”¹ój.—8-´¾pb¹CÕ¢MF©.+ âí¥ß¿à®­ðöñlTõ4_‚ÂÛ™~¬­ZQño7rs^fïPéxHuô§TÉoÿÞÞ‘Ê2pB8ÆTDÁ†­ÌÛ›Žßm;1úòU|þãW—¤2Ìý®ä)å»Ù'@œ²ØÂñ—³Ñœ‚ê4ðÿ‘eã Ö;T-*—‚+¶zz;.ºkö~7ûü–ù–¡ðöƒ…£l:u÷ãɸÎ+TÂÛó±Pð¸C.Pw ðvƳ†.µœý ™)˜§‚Éïxžƒm2,ç8v ðv&­‡¤å,gX°Þž´œ+PÄüô—dÜçün€8e±åìô¹ß¡ºæ%õb_q†q‡ª4Mû¥ Uðv­Á4¾2{ w³ jÊ· …·G­A 5¥.ßÛKzBE¼½;Px{ÄÛ3Þž·¤’·87dš©'¿áx*oŸz}A®µ~{ïTðöÂÂ1¶§5•€øíÔS韥ê‰öKR»­&èÝ|[Õã u‘*ï@ÉÛÃ]ªM+Þ^ØúJ£àTºÁ úÞžY8_ž8µ<¡k°;Px{y~ÁF9ÇÞN<[#ªSÕÁ÷öÚŸ æ§‚ÉoŸ IébBÅë[€2š4Æ!´¦‚•ª»¨ï ogŒÌÁRÝA’ߊ>Y*©*-¯P~wüÔÞ^iFÞä K æÏRUµ_’ª|¶Õ¦‹¶zWP g‚.+ˆ·W\Ò%Zƒ¾·7¼½w©NYú”y{´¼Ö±¦*[ùr?ž Ö§‚Ér:Þ^Yƒ„ ƒÂ†+PìíÄdÂеVPþ¥¨ãíÄdÚ![é.êï =ß¡æ†÷‚Š_°—;T¥;y“3,)ˆ·7¼}Œïl¥½]PZÎy oWL†‘jå¹ÀÁ¥>PïNœ¨qÜ¡òAßde/-A…§‚]› ÷vPAb f ,gR*=-ý>üÉHÔ T&¦…¾eÞ=´É´àïí°¨‘ 9Z ¹VJl’ßg>‹úaë«;Rµ?Ü‚ê@ѵž–yêHóÔ…bo·fR9Øõ£ÖÞÖ¡²Q©!ZoÁJÓ­ªÆTÍ/$Ëp©[o×l–äOÈt¯ÖN"Z¯mJe-…*U5r“‰º¹Ë9Ã¥F8/\ôâí .šòYÁžªú…/H×ÃÈ]4 jìØª}–j‚.+ØïP¿ÌÞw¤²Î‡ÕÚý‚Ê_.5Z£æí.Ô¨(ùãrxçíPm*>¡D 5] ý…— 4œ j¹$Þn}Oºï-Ä©Êêü‚\ÕTâÏ"Èp©W©8è[Ø‘ o·®N!Z§¡ I€KRáíVâÐ~Õw ØÛqѤr>Í)÷nr|zû‹‹Ž€.C…Ô»…³eÞžˆ‹~­`z#ÕSÁäÏ“Èp©±#•©A-(– ÌÛSÄìÖ -¤$[ùû\*¶jM)$·4¿‚9Ã¥¦©ˆõ]òùü¡.©r Qgbó’Tã)Õñ´ÕŠTp©W¨ï„KMÎq†¸%Þn£T;#"{ÒÀo韙È̯ [_k[ù~—š’¾`ŠK‘?M5Ã¥&+õTÑᵤ`½+X«ˆª‹T ÊÛûÝV=)•kªÿ)Õ–Ùñví Քυ.5ñ\J…]ôø]€ O©âSªäÏ‹Ìp©/€¨ÌÂ!#e *Ý<-yÑû}2\ê{¨¸eõÿÕR¹ªZ97m2~ ýL·Û÷P}ªÝü^*öv"E©ÉVœÎ~r†KM¿Êø•¶>æK†KMT8¥Š_)+l o·6ZáudýØJ5Î~ëú —Š­šÚ'¦®sp*Ý¡:r»7¯˜.5‘Œ§:÷F{÷-h\¨r—ªÒ‰eªºl+n2Ö¶0hTò¦Ùñö&(.Ûê0²…·W\T/¯¾e«ñ oW¤(¸Ô TåRÔv¤‚KMDk¿U.õ*ÕSÁäOEÈp©‰ç¶ªUd±ßì?Wy; òà•‚KRY.òdNÇÔTÈbªÞ¡.kpÊštÑpFù¾;½Ì²1©§$å.SkYF÷/j0©xÕT4ºªLje|20N©ð*¿Ÿ}†IÍ<rÔnÅõÑŸDI?® Tå5¿cP†I}1'/gsQã™%óg[Õª„›¨r—ê—Ù×öW ýq›ó=iÞ)éK¶²='âÚªöº¨ù. “šôÇôÉïnžaR³…2 S+kUÛUÊI†IÍÚbènÞ”D²…·“f-=­–¦ª.ÞžX8ö™ðËP ©ÂÝìµ*ñtÁì0©(X2Ó/³¹ýjœ “ Tf²Wk—…³ ••YgƦÁ!¡)+RµÏ nº(Lªæ&hhÕ¦‚ÃŽ.†Un¢M]À4&UPS–—‚ºû;÷C'4­Á°õÆÛu¤*”é—få·¸Ïö˜’.K•ŸRžË¢Õýfº&5[ Íi!6™ËÎàïí0©´»+¹ïB©M]À´·Cû¼²1©%_š‚½“Ê?&`RßSéEg(0©¯+ð³pÔÌË/‚*0©…ÇR!‡5+»Ý¯\*0©Ù:†‡lË9” ¿r]´P•úø‘ÊúB [‚šÞ^54Š)Fç´'û½Ø Lj x;£¤löoÈŘÔ*½‘j ª¡ ¤¬=ázæÖ×üq&õT»~“ ÷^A_*˜Ôb †bTq(tQÈ~CŽ“z…ÂEé[±ÂE#.·¤J@YOòŒÙó!(ßì0©¸è´Pœå/g˜T¤ 4jýeö©êê"UÜj@•»T» âí$—ß(¸5>›½µ7 `RKz@Õ¶¥ Lj‰xû—{;LꊅSòÞŸÎÐH¸Y‚ÊO©âSªìö˜ÔÀE%§(¼±)Ì;éY Í~KÊ“Z.“f¹_5Iå^Š Lê{©úŽTãU™ ¶ Å€Ðfµg‚j“ýtØ’7™_Pi*šTæW=³É4ööîW†ªR äÒd«±…·“V2Þ~±•)‚I-©*Þ^ÓTÅVܯ”2ý™ýì«“Z49p¿‚ÅÉ~d¡*³ÿ’j jÜaÄ©–y»o‡I}#Õ¦_Á¤ÖÂÂ)ÜÔŠÛo ZÚ(œ~o+ÿ ¤–Š‹V®j¼q²ßã¿À¤^¡ðv^©KPx{ÅÛ;ÞÞ·¤²h{ÔUÍòœz…[jþ{°À¤F‡6ºè5â ÙOm)0©…gx£ëè&Ô¸KÕ3ãr­|¿*ìí‰È6m'7¡kp¼±÷+Ÿþ,Ƥ–¬#õ[¨ôù î*(oçRd/ú©ô2Ty*HÓMí&Sy.UËŸkí²püýʘÔ\­‘Öé«rÑ”“I­ªO`är&l¸²aR ”b”Þ”oU*cRß)X•xºÅM†@ Õ8s5¾ |aRkhoÌžw Ò]ªÆD¸¹ ¦¹ ºPùnvAíJUž_Ðί/¸Å½Ý‚N_ûU©Õ:.‘²{§3U©Œ;*Ùîíµ•ý`fK­”sW¹òÊÿ‚Æ¥†jm—]?Ž áR+ÏðjSa§ª« Â¥^ÌNd[<òB(Œ!£tƒîùrU£S˜ß¨—*ÅÀ˜½6=-WÌ^îP•¼Öhx´ÅÞnõêM-¸óå¾ `»Cåhçàt‹4­æBYdL^Ö_cÊ· Ž=7lÕ1»-çê÷A(›L憜ÛwPx;J3]ë[TLÆßdàR+AòJWµvñvÿt†K½.»·WÝÛÌ—Š‚¡SÕ4Uu¡,²ÑL_£~»öv¿™~¡*µv=—Ú¨©ÚŸ ¶ûJ îBÏP›¶x;ƒºe·oJ—Úì˜**ÈêÊí7‡*p©Œ5 -ÈV”±ùí½ \jíœ8¼›îíþЀ—Z¹ªÑZ(¨óÎTAÁ_½Ýï`^àR/Q5’ú¡aÁVínö §,æ ~ÕïPó»Å)ËÆOgH:ûº_U¸T *dñÕV¾Ù+\*›ÌÝþ‚.•/(¨*Þy *î¶š«qÙV¨t—j×ìå)Õñ”*û %ë!oÇ"k›ÌÞžäíÜÛ5Â_Î.õ²°N4MPjü)UÚ .µéÞn)é»PÄd4µÚ‚äç/^~+´j\ê uÜ¥š ËP鳂¿Ì¾…·G\vI×Úì·€©p©W(¼½¤(¼΋J€ ìö%(¼=òÆIÄ’6÷ ¯p©Mrî»B~/’ —Ú,ÿ*Çò\*kPP=SO•ý Þ —Š­Qµp Ð-ØÊ¸ÔLû‰ ¡ðKÁ©Òªrk»n2+Pù³­v¡Êg©ê…PXÂÛi¬Ü˜¡"R¯û½)+\j,’¦rÖ]ÔßáRs=.\jê;R§‚ù©`öK”+U© ~°Uv†w ðvšCµ&¿bgðk„*U©Øê`“Ñ€ÿ.ZáRê$÷Ì€³Ã¥U}Ò;¹jK ²·ÞÁEwm…·×T½„îW ðöŠ_ üJÙ† Þ—Ê{PRõ¦yf+Pã)U}J•ý¡ —Úàa—ÂÕV Px;àÛ·³_ù™™•ªÔ¦8C×.ʉãÉ+\jSœª1«Øaá —Út¢z0sgXù‚T¥vKJoŽ™M7ä…û~›B½½±Õ”¼…3âw_°ß¿àt‹ˆ|ËPæí7N§ýDÎÚdü› U©­sU£ÿ~V͇ªÔfѬ>S’j *~V0+Z›ý|Ñ —ŠT yÊ÷‚òï p©Ø*G;Ot®j~–E¥*õ¢ ©§W]ø‚õ.Õ) ‡W.;RµÏ î:ƒy{§¿ÆÕV}GªéíóÏþ‹‹R•Ú™ €­N¯_ù7¸T ~y{Û‘*~¶Õ®‚ÜÛ)Wé1=¤ZRм½ºïF5VÚBœ.µ“St1»žK~€®Â¥•#3Ϻ2RV  Z Ó&ëÕE ðvОÚSÁ…ø\j7Ϋ½˜½.¼qàR¯PO³/A…;ÔåtÎÔ«ç…2\j§•‡‰»Új*=¡è_Ö™ë°%o7º¿w äW~{ú —ÚG°ýŠìèF-@_ÂÛaº] kWÒï)_›¼å ×GÜQ°ßlÁ¹è _jÜ¡*ûÕ}I埃ԥ¾—ªlH—zý‚é¡àÊ„Kít$ïzäcGA¼N¬½³!ëðZÂÛ»I5”ŒGÛ¸¾àWÔ¥^¡ì¹4Ôboêéí@uõNZ‚²¬°¤tJ2R6¡úCÁÞŸ f*@…KíÜE3RUG¿E]* ¶®—WÑéì;\ê°—×éM^YRùÇ\êë»äûjz{Ö†©vÅdÔ y!.:äíýTú‚þ¥È¸T™½ëT;DÕTýl«M…K}yÓ_%-gůœ¡¿ÂÛSÜO(˜¸³ÕàR©\_*ØŽðFª§‚ÙŸUÐàR¸YÎJ{[²½}èÄ¡×[»~Ý…ÓàRGDÁ‚‚b—ª{oop©˜}®Æ×ÂáÄñÇ4ãRK)¨½åÜŒK}»3¨™Ý’3ô§­ Ï†.+¶o ¾3;\ê€Ô\kGÞ‘ŠºÔ¡‚#Ú=gRüîíºT äWt oÏœ8Œ•ê Yøý÷\ê0¿š_(Xþ„"Rä÷”op©ol•SØ’ªÝmuþÿótÑ©ðv#¦,/³×¨ñ”ʬ—kí\êÈO¿Rã¿î_Š\ê sô€Âª–õ{Ê7êRôÙ¨¬Áv ì&óJåùÑÚª«š¿·Ã¥ŽÊÂɺÉÞñÛÓ7êRée1åûªÞ¬,œÖ&šý–ë .õT=kÊ­úÓ¯¨jyËìoÿe«áR9èƒÆÚ窛Œ/\ê¨x;´ìЋÞï)ßàRôÙ ú1ýXbo‡æ DéŠ57&ÓàRGÇÛ‹ÌNpÀoßàR‡‚™à@Óõcá Ö;Ôün‘KÛòlw¨z …]\°ÞÎ|£¡8ÞÙÇÝìó[Fä[…‚KövÎÉîW¥mØ|.µ—ZŠ)xn¬^©üK‘q©¹V.tLªµôÙð–ÓR jIªéí©Úk"UÒ¿+/úºðš0.õ´5ÞNzR…Ýüë‡q©¨$”HÑÔôöxžÔáh¥ž6ÿÎ`\j<¬ãµö©½jáøkиÔxPLÚéé”ÕÞ'Ö›q©Rð{¨`P–4U4p®«ø}ÁVÆ¥Jªœlë«#mA%lÌìCžàå_ŠŒK=ïlðο«v©/x»q©S–_ÎÐs«Î`\êUAåõµôÛ]ÁÓ8èù‚ͧû›q©9åöð«M[?¥jRQ—ŠT§cZØ0òÆY‚ÂÛ-·62®ìü%õ¬ñù-R>v ðv§qþ".ªM¦û‡—q©'É-6¶³g:Ý7?Ÿ¡Õr‡šqLgXˆÉÔz‡ªjÙ®f+ ²·kCîý;[±·Û@”ù"ò-C±·7“*(¿s°û“[;Þ@M'è2Þn@ÕÕãw ʼaí‘ ëù2‚k!RÔÒCÁ£=Ì~ÿýÖðöfRƒå¬bÒ¨‚‚[±¹·ÿkWèBÕ»­Nž–Ô†7?妗*¨éM/¨´óûªv-^K âí,œ ºËVÆ¥Æp< ¦|ËPxû`áDüJÅY .Úãê°  S¾e(óvæ¾Gæ¾÷ÜËT~#ÕSÁì·òo½} •¥½¿úT½+xº€\T7ÿªÖñöÀÌ(¨Wªßt½u¼=Ö»3Ô®4]¿i~3.U Î /N€uÇñT0àW ï,(h\ê/¨ïl5ØÛÎp†´%Þû•l…T~Óõf\jd’œáôqÃßúFù Õ_}—¡ê]Áȧë\Q°=¡$Uß‚’·w©vÄÛ3 '·7 ºPýÀÛ³Ì^¿ƒÂÛÞ®PØÐýÊ}ô#¾bá(.º…·×þ_¥ÊO©ÒSªì÷ºïÞžªðKßÂÛ+ÎPu)"tïwJïG»ÛêàÁ;t)r7ä~ô;Ô4ö *í˜}Ü¡ªš u½è o¼½ö¯lðö*({˜\:­@áí¿êrQ]? Ò(\´(¼½Œ;TÖÀ¹%(¼])7öšè-oAÕ§‚å©à?«¹Px{a gŠ3¬@õ»‚`fÏC÷+÷tîaüa«¬®ò PooôvCî¯îî/(7úÑ#ÞnïÁœˆ3dqKPæí‰‡ C"r%3³øG=âí\¶£%.æÔä ¶Êw§ DTý‘Êo$ÞK²,ù˶ª÷/˜™DÓ”‡\üþí=¶;Të—/8v úg©výj`«ðFÁcC*ãR™™_{»q©ï¤Ú…2o-pô©ÅïßÞK4­:¡¤J@ù»¨q©ï¤ê…~2ͯPè o·G\Ζ¸Xj; Z×ÓL:e%‹uSª†T¶ÉD{ÑïJÕŸ¶²ÂùÒü.ÞNÏÌa=èš2~»Ÿ'ÓK‘Y›—d<î +ÎÃý ž ³•êW¤Šw锽•-Óª3C¡—#ï@å‡T}Èìú‚ PV—:¬Mâ÷ ZGëÙmd`/´Í¯~Æo‡KI.j”‘äínô£Ã¥Æ†3X«ÒJÇ„¤Â¥^±¾HЩø]å;\*cÑO³k¿âúáWw¸T *é”ô%•¿·Ã¥¾—jìH•îP½Ðÿª\‚™þ,x»í ú‚§|eGAöv+Á8YSБ¨Š_-Ë,ó^4öÑO0륽²ðŽÛ/Aýáí] s– ÆCªØžR¿|¯x{ãð²Æ¼ç¯²eÞž¬•VT±Ã íXñ{’w¸T¦ÑŸú‚:ýs.¨®é*Eµ f‡KêtLy{ÝQðéíøÕ®­*R J §ì@áío'˜™¢\0{@E;q&è2ÔxõTÆ¥–j6ê(rQN¿ûw‡K}Éòc+ksþÚQ.•ò9G9CÊ?áRß@MU_Pþ.5EleÙ;»Ráí69«]jŒÚ’Tõ%ÝU°½q†ã;g0o¹ÀËðöËô7¸Ô+Þžë\ê àФ©”v¤‚KMA_;C3ø§sw¿šŠ`Bùͱ;\*RE’<™}Aªü„ºHÕv  Pí.Õ®‚ìíܯRÎOW Úg³7ÕÄ-Aáíùu.¡º…·“AÇXô^4žÏÏoïp©W(N­;PÓÛë¨Í¼]ÒU…½…·ºÿZÁôT0=,~+ø—šRüJqÑ(^©¤4(¡A2^ñg u¸Tlõ *åßdàRß@í~ÁŽ‚áO©ÄÛ ›ŒÒ)1{÷‹\ê뻾ÛÏԃןV0àRSÁÎÐÊÔ#Þ~ZHÞN²_ 9àRSçt†>A .@å?¥ª;R•;TÌ>Û„"&c¸S*ùGªß“|0/uX¯0I5A—¡úg™} o7s¦-F!=i|p©‰'C䳺S¿e÷€KE*Aõe+wgp©o Ú`bÈÞnÏpÙê„Ò.êï p©ÌX?ÿÙ—Ráíp^ÐgQ“þ– êÃV©k æghúUÛ2oÏ™â,ÍK-~ç–—š3ûìÒHy .g˜.°¿pâÓÛ“eY\¿à ÔÓÛ}¶7¥ÒÞ^þ£3À¥f1ðõ&—šáqp†˜‰·¿ä0.õüð\ ì’ZJú•Å.¿’TÓÖýêoß…ÂÛ©X§YÇù‹ ¿q—:e ,——­tgð7¸ÔË,2{Ú0;\*RuôÕXíîW€¸T ê°PدÁ¿3—ZS¿†ÂÛi¿Y’nÈ0q~­å0.5fƒTs‡΂3´çŒìW] .|Á~W°A¾LUÓTÕ…¨ƒÉïn¯áp©Ù2¦…îP¾­àRß+Ø7„K½:C}ØjŲ¼=>œA-D–l•ï¶ŠÙú_Ͱ …·[sìXDŸ‰wö«eG®o ¦‚ñB¯@áíÏ…Ó_enËPý!3õ.RýSÕ…ÂÛm¤o$2*r .µXeq,—…”_…=àRË!o'ª†_5¿úlÀ¥5]àµcv¸TIuP%4¨Â^RðéíøÕ®­ R J §í@áío,õÙnþ¥.õ …‹Æ¼ÕPÖRéIKPæíŦ`|­ \êUª§‚ůáp©y •eÆ¢¨Ú ”õ¸^Š3¨]°_26àR±U CPRpÁVV…M:åˆ`CªéíS­_Rõ¢îß+P¨ø°UZ8þ .[åëÞvüʼ½NƯ.f÷o}p©¨ðu©%à¢Ô;_ÞÎ+PìíÆyõ"òEœ—_ 0àR •/Øjm/(ÿΗZ2W5zG«Oñë¼\ê©zÉmGªr·Õ€.Ûª>¡.R•(¼ª©vÄÛ3w†ß(¸5î_p‚îCÁ¥”ªýJHg€K½B±kÞŠO(^)¸…·×ô_Ìo¤z*Xü”æ—Jƒ/ÙªŠ‹úiº.µ$,øUI;Rµ»­Ê%Ī4Ý©¦·O€ÀÙ‹®µþA—Z f˯ü .õ …3”¸ìúay2½ƒi oïé¿J•ž –§­ŠŸN9àR_?P ¿jiªÜmÕ†RåÕÞÜ/dp©Øj‚F@Óü.T{Hu(ÖwòwêR T#íìŠ:..)8þ”ª,KÕ¸Ô7¶ÚrÑ~À¥^ö+[ƒYåu¾‚ý8â]Ái¡/ÄÛíE?Ÿÿ<èmXÜ¸è …·²(Æ”K‰K€žPæíL~/4]?¿eÙ"ÞNÿ«AÓõƒö›Í-úë‡q©)2™T™MŠÙ>¡ú¨ú{»UêMЈ|«PÆ¥Vœn…3°‹.A…»‚5èi©Œ”(ÛÛ+ÏðJñ{!ÝÜb‡ʼýUOò‚² ù¡»¨):¡2RñÅy©×ýŠTåO· *PÖª´Ñô(rïZÛ¸ÔjýE3™N-ˆ,^êO ÝW=âÜpô 5Ê–óQ8¼XÎ+_.µRp„3\üj *e[_µêþXi˜SÜ«Ú ï NYâ”ÅNC6.uZ(`¡”. PòööÆìeG*b2æW¾ “9¡ðvkÌkÇÛQ°,©p©WµçRU‰ëÊÄÛé4õ)óRP~åŸ8p©µaöÊM†ÚðáR+ìÒ  [/¯æ;ô.¨»”.E Pñ!ÕQã}[¥7{;ΰgvêR1û/¿Š;Pìí–›MW‰Mµ–ÍßEáR¡ûFÑŸúÖ.Aµ‡Tµ=¥* 'N’·ØŠ­o;Px;¦ê`á\Ö ïWp©ØªÑ;úÀ¼Ý·\*PÓØ/¨ºav¸TIu(_Teæ+ âí¸(~µk+¼T®jÚå °…·w¼d‹’jÁVõU­wô]†jo ¾” oZƒæí-lI%oø•6dö+7ä¼™/ˆÙgøîå©p©'ÀÁ,ìѵõùW5¸Ô7Rý¨µ!UºÛj‚ÞœaÅVùu‘J/¯(¼R¯Š]ÚS½¾jnoW Úý NÐ/ ÌÛ_>þ¥NMQµgo XƒšG¿—ÚÝ+U O©ÂSªâÒýý .µ¤Š|Átì@™·7ºr5eüÒ²¸ñö*ßm5cðqØ9¸`«r‡êE¯‰–vÌ^RÑZyÊ·¬àoWýž­ðvÚ´Ä9HW®%(¼tÊVå¢\Õº¿ÉÀ¥^¡pQ‘Å+PÓÛ»5n ‡E «XŽîö0ža³Qþ“~é©_zêW"¬P©-ic` Š{Y*w'KôRbŽ…S*õ=TÛšÎÞ+|ijþ=TÙ³ððjrvÂWê-´'ÕøSª¶!Tªlõ­‚P©­pΫ%¹N ·mm? R[ÆE .ª»ö *µ-\ôreX€ÂÛ 34…R-¬A¨Ô¦0ýž‡Þp [;TjS˜ap½RSù…c*µ)Ì ˆú¥/ØRªÀ‚+¶bk§ó_S˜aËìP©­=¡4` ʼ½[²a®¤É4Îùîö0>¡ðv^K$Ö®tÑ…c*©&@œæ þ„J•‚šv¥¹Rmáp¦ÅoWާå÷v9¼le­Â4EMƒ³ ¯%©Ú]ª_P[ âíŠ9uÎ}ÇìæíKéí½¨¡µï *µÓعèQo‹¿œTjçµÔIø=Ômeʼ½“~…TMíÛKwÛÁ¨Tƒ6é]¥ý+2å‡Ñ í€ §`w›l÷`Dj 4g8h_v¨ “ïë¿H5A#N± Õž®@Fz¿ìVîyŒHmÁ^pßK5ž®`Rõ¦Á R‘zq…ñP¯,|?£Q (‘Ù‰³/áàæí¡[ ­èf›:#¢{¡a\Óœ ·ù …£7íÄœðj¼"U¹CjiK`ù­H…£“ &?8ã[jš=î@Ù¦ÞIÂë–„û”¿3'5 ·RÇcR )bØûŽH¨Ý<ýçϦ'\´s‰®߸ºÒ‹zîA(F}Y:z·ù‚Tù u‘*ì@áêô Ñ̘Mqõ![…7 .@½qu<®®(ãý‚ª¸W ØÓi¦6‚ÌÎ]oaB vR ¥àÞ¾ÇTºµt›Ô/mCÜŽß'R¼!:}¨‘ë»:‘ÐA/¼C}¸†ŽÂž^mê-ª¡®é¤7¤_PþþÙÞ¸:P5lAÕ»‚4º¬`{BIªc W§ø©väþRe«öFA Æt  dÊJ6LÑdWðS¼ƒ¦‰º·zð ËÕí.|BY{±æ%3 /"ßKª¨ü„úVAÓ 5i{Õ¹ L» NbXjå«Û,ü„²ú¤Ã. ‰ÊÅù–ÍnW’©Ë൬âÚêöÒîÂô5×ïev®AP¾Ù!L„é JxD)è_= L‡M]ë•&^M3B'¦ƒDÎ#jc;Plí »Aްcv#Lß}ÁJØa:mU^ƒ4~ t ]ù‚õî 4º ÕîP-ðЍ<·šŸç L3­/ªŠ¶uÊÿp†0•_½3âaiz˜!LšnñÛÛ— Âݯ~-縟R1ÈT'ê”y{¶WnΕa¦ê6 ?¡èdÙ>‚jUSKPåá 9h¿"6ä £Q¦¯In?7Zo•8vóÃÆô€ñ>ðPê«Û•û„²ÒÓÃjÕÒa!ÇÔhÄ\ÝVÚ'D’IÉÒÏ_qÊÓìv•SlJeœiÖf. ìBÙEæ(ØÊì©%Aù¾`´iz•#„YPuÊ.2ï"Q‘ 7¼5%±-™tž®ÈTê} eM¢Q¹…±ä ºìù *ÓþDª¼ÙšŸ…2-±ÛRŽŠg åßõ LÊ‚ƒSºeíÌÏ‹R+žª=U·{F˜žêÿ 5ý[š‚%Ò§py–nAÅÏPéµß/C™·¿F­@¿€Êw¨Ö »hÙRÐ8$¯I@Ó\‚²g)¾ÿ‚í³‚=·¼e{ûa‚§|_Hu'‘DG¥ ±å“HÉS¨iJzu/ÙÆ-raX¶¸Œdtédþ‘Œ.}+Õ&”e5Nï,Ž:Òǧúý÷“‘¥F‰|Tÿ(ìYž—½¹_‰—¯‚¶Nÿ¢`4iµŒ÷PÔ ös—’±¤ä.YÐK~×L=~ËsÉ¥ºäœ­…ßßÌŽáiòUûÔx—çKC5ÊS~íFŠX-ÊF)²aʺØB ßñ\è~Mj2R”×ÐüôáòÁ Ô~£ÔŠŠÛ­àP+=¥9¾ƒaö¼·¤¸VP`Ä¿èÀƒFˆP ýº3ùó µ£o„ªš×°"Ôôk÷• 6ìjÂå9Ò‹6­?NÚpmȯ˪úÃeLh4šé„b§U¬fªšÉ-Úd ŒZ±k ]𿖨ߜ ¨hTÃ#V >îªÐü«Á€ÚéÏ`.u$[Â!©Å.IâdcÔšóƒÒ°Ÿ–ÒHÄŒ*ðçO$ã>ƒÍz VàjÛh:÷ÔèÅ„‡nK"Ù¾m}¿~YiK9‹¨Ðé0Qö£Ö®½5æóUˆü“÷3·“ÔtOögX$ú꾩־#Ò¸‰4%ÙG2Ö3Ðê·õ¨_ÐÎHÏ)ÊéiÇÜ]†²T–CB½a•ü2ô¤ñ¤V:n.Åè.0 4Ôµð\ê6?æGŽ)‘Ÿòš(µ¾E:Çnþ5™âДîF:É/|ÀÊåÍ©ÂíÒÈ?© eä’ñnñØújÓ½§F?ANËZ6˜›LYhã°äÁ¬QsÝ/øÏšHz<"I‰KH<é–ôÕ/qã=¡Œë ¥;¡Öœ_Õ›êiþý¶cæãîáÑÒ(’ú>¬H¤™F÷•ÕÔiˆlD©ÆÍRíüžY,§ÌMŽ‹ývíÙHÎdåØ(—T¶°€ÅiáÏdÑO{E3&"͸bÞÈV^“I~Žîp"¸-ÈdÎm+®hKÌúnß,‡®ßº4í EÑPx¨§Œ÷%¡ŒÈ§WÌrKÚ:û-25 Z»F$žH¼xü6ÙØÍd¡Žór—¾“iÜdj…WXyëwUÏFn¾®Ð?2Í}7_ö“.(¶TŒÂOJX°Qdû¶:|íK"HW²°IÃ);'Šr×ü:¨l¤f¶Ò‚K¯–¹Ðö%§ù®­Í&R½!ÕTåJuÉÜ;å;RMuK&‹Ÿ÷O—ú%³dèîÝ™Ž=Q9 @FffÝ*¾ôã2ß{SÙA¢ÎRb›%8$Eáýñ&ÙˆÌl7l7¦¬^K+8ù“@MS–€,Øm3×/6ªš‘âgèf£0ùn™©¼i Èœ›ôǤoÙ²’¥ÕÒϨ­ª];Ü‚ŒÒ,ïÙGʸwþ2yYìmQÑÕà—Ég =­³\6š¾Dý7€ÀÅ±Û ÝÀ[¡Ãu$~¾$×2Þ¨·ØTn:x©|9Å>5”Áoì’µ,yÊT`´v»4Ê’§\±»÷ pYž~—'p[Šb‰W$2ï¦Õ“•&I¢#+Im•˜À¥³ßù&,¢Ë\‡KÓ½»{S‚gmÖŠˆ!¿éM6žyÔ11¶-lãfPgéäÝEÖõ›àfã) × 3ö„\ªŸeª™dKPd‰SòhUÜ©Ÿœ©D¹ù÷/¤´ƒ4n" é'ãy ¶Ò¢B_ËdtååÓõ7Ÿnhú÷”äµ½‡v IâÙ(ËKïr»Û¥?¥? 'C[RÂíhšM ^HþË¢–ÏBýlõhHQ³R(lí'_fÈ˧~»BõÒ·M22¥œoZw´KW×((LªZ’qºô\ñg#0_ÿËNéU)¼Œ¤q»Xb Êvõ[œäöÆÍÉi«âgW„Ê7¡r3&¬f‘ó+B•›¡jxg'ß3¿¤ŒìÔkßÉB„Ô‰ÿZ.[Pýn'»ðìšÉ²N¬k«”ŒDÒ§«ß/‡Yi0{‘IÑ=¿Ûw6³’/ûµLñ/íò’eUYâm%X —”£ ‚™mUCÚéV ÊÝâD,6 ^?~ºY“¹ŒdÛx;¯COƒ¤~sjE._2¯(—¯>јÍò}Ú¥\O"ù7Vc1«ÐÕÞOM?þØ©l&8M)?꫱„w[]UýÈ2­‘å,.}}B»Ñ¿ö…ÙlÊ º51Æ>šÁlt\ŠL[Œš6å§¹gc0«¥ü4rÀ-‰ú]3KfªYÁ¸ qS- ‹È—Kî¡Ï©#0ùl/È8ÿ|ÙFÅøËBƒV> s/Éd÷p:$¡]Íjdº‚”îBM€—PuÊüÛh‚Ytñ÷>Xjü•†ðVM«ò[Dã/H@éh;MïnpØF\´¾¥™y7bj72ï¶j³fèVÕæÕ/.Æ^6ÖmMBª;Há.RUóàÜv¬l-¶ÿ*Sºi‡”>¶D²ÎžÕk¯ê²Ÿ/§Vü~ŽbìeÏñ¿"Õ¿d ;H6KȲc»•ÌÒÃû(F^v+PêŠZ 35•õ­uÙk}©*µÆoÉZ(Ë´×™A#‘–€ìbB©ï·Uµ…Öµvì"®…Jó;£/›V^# ^¾›â7v-F_¾Cj”.!Õ›r•Æ»Hæß¤Ç IEöKvšÎH¿S;cS’rHý&ªÅøK ô÷Uÿ?ŽVŒ¿|'RÓ”³‘Œ¿D¤JÏÚ]$ÛÁ)†RÒ$€í¦‡ŽðDbk#Âû¯á²‹d.n×øa´úè’È}èc0…ca/á,ÉS Ç‚àdiÍZÖe‰š!¥›f»@ý&Ò°ëÉ”mh:÷ ±&‘>š’Ü7S1ú2Ögÿü5Ý;ª%H¾+9lÛ ‡½QfCëe¡¬¼Áʰý] t³SÐ,¤Žq+HVxyá ¥9+PTîˆ Q-Êš_–TŒÂTW®–†K_¯á–+O^Ì„_–ÊJŽ‚'P(žrÛ²4ð×ò—‚4ÊÔ?¿%e¡ò¨V/RIAÿ!flæ©V½+8á—¡¬Ô:êêx˜}IÁô*ÐK9•cG*¼] gÔ7ΰ%ow¨]©ÌÛCÂÈl*zó»¦ã5Õ¨LÐ4A]¨Ž_=Ì>á—¡äíÇP+ Öã)•ºþi|é‚T4« C¶â¬²•Q¤Y-eùhì¢E ú;Íj©íT-CRù£7ƒê‚¦·7X’ÊÒ¯‚þŠÓJÁ%©ðvƪ"ÕüËfow³O€8LA Öþ”J»hM;Ráíl} ìú¥ 6†3VäS’uynÊTY‚’·³m¿šÍ.–¡ÌÛ_ÕXù¾*=lIÅQ†èÞnËùTز½=´¨ý‚˜¢BM#¿‡jJUw (Ö´BôÉ‚ld>4¿Ž¥ÀuÖÈÎ@qª;PlÆÿ°Õ¿ŽÝ.%É–t&§¤ËRÅ;T­LºSwÑ%¨ô‡‚êS³¤`¾ûUP@}Á%(¼½HÁø•3ç’Î9`«¦ºk¿{x¡v“ÀÀH ~¡ùeM¥÷'”®j-î@QœÌ̵híS§|«PÔob«Yl¾o«·[aCˆ–‡8?@š .T¼C}ýÞÎà A©…ñ’T4h.تK*½ý½Ý(Ьú20Ùc§ êBáíÌ`hkÕãTª!U2©Ò–Tý© ¹hUªÝ”y;ÃNù‚0XÍ/*ªÞ^RMøe(Ú‘³·' ©_¾`÷{ÓW£C¯R).«F‡+R%¤â –ôƯ ðv‹; jW*¼}°!+¢¦r¿c~=ðöŠ‚tÙ®zøuXõÀÛ‚š/©úTÿCÁꎂãu‘jJS>éôÁHª^©Z\h(_™ò™ ïhºUSTm oç˜Hv–q„¨t·Õµc~ߒʼ=Û¥(º+½Ú¼ Ü§Gh¦.ÍT•à¨F’J×¾—ªý©`Ü2oÏ…#•‘…UÝÍýùÕ˜Ò-RT«õ¶»@5¿ž¦Wú Šv±„ W¤2²4ÓFä{©âÝV%+¼£´©©è&¤T.»~Ôz9è¤ÂÛ¹·“9W•ÌÕüºšÞ~^#8Õ ~ÁÛcýª‰Ÿ\jw§Z_@áí–ÕyJ$,Ùʼ½+Þ 9²HaœFeÖg;xÄÑ‹SPͯ֩jbKÖš^iÊÎÞNx'1<•^†ÂÛux}+U¾ûÕ”%N€ ³—‡‚@U1ºKRáí–(6UÀ/C™·»@Φ/á™ýy!ÕHÔP˜\xE¶ýìÜšðö¨/Xù‚} µXã”/"ß2Tx*Xø‚!ï@)5H¶ˆz 4?m¸•ZI‰l­ãí!ì@eœá¡`(-í@™·S4ù½T( YKD½øU÷g«ÔÜž 2]ZÞ¾$Þžñ+»ÖNøe(óvÔ}–ýðó£+\j¥˜ä uì@ÙMFcw‰_5/´¯p©•JsIÕ"d±?>¦—š™2åûy˜ì4(¯p©Õêƒ/P›RÑ Ü A:ãëw¥ªw©f/öˆÒËP ¨ñ_¥êwg˜ª~…·[I¨vÐÏ& /³û¯ ¸Ôj]I§‡Eà_Rù;\êÊjj»xû”y{ ¶·wŽÔ|ù‚¾_Á¥ÖþjÂ/Cáí–Pxã\lÕý)9•·’ê%Ë‚éØ‘ o·þôþ ðv.E@íJe{{Óؤý n¢ø÷v¸ÔvdæGS|ʼ½ÁÑwòƒ³6ü<Ì —Úà>1á—¡ P([8Œ”îZ©p©M¦‘e¡â¼%©Ô͸(ÞÞýa9.¨Ö—mš5?µ³Òú¶Õ‡‚~ .g˜û Â¥^¤2{Ú‘ o¯øU}ãW+Px»Eе+ÞÎÞÞt¤2}°ùÙ†.U¥C™ª¯W—e¨ú”Šçê Px{|Áõ0YÂÛ9qZßA?ÍÞ6 àRYƒ_A¸Ô7ÃÂk×ÛÙO\¬p©LCŒ0ÿ5wÜãPKÚiY£iè5µ¨ŒT©´œÇTªþW©ÌÛ;é”]›Œ^©eªñ¾ ]k»¦ùúio.õÅàÕ¬{û ”yûSÁL“åÙæ¥  ÕàR{w©&ü2ó(t)Êá!Uó3è\j‡î¿*Øw ¬¶´0‘KÍ,³R¹üä–—:,Z[»ÍQþ0[-HeÞ>˜Š— ü¶¤/¸ •yû€á…/ؤ {Ùnp©Ãl.¡û=©ú]ª¢žÄêû·$ÞNÐiX‰Ù”t .upš^¶%\êÅìf«¢ùñKPæícÈE¹~4A¹÷ö—:êCª ¿ …·3¯d4%¿ú·ºPå)•¶¾¶%Þnw†\)Uߘæ'l4¸ÔÁÖ7ìR”5g¢ù‰@͸Ôùgÿ¾`º<¶¤w©¤àªû½šq©9Y¼½#‹Ë ¼Óü$„ñöŽ3—º 5½=…ƒ ;+{ÇçR\ê©®Þ¾"•µö?¬‹Ð´Ú –;ÔÕ²Žïí±ÞA çê¢+RY{ÿƒ+™N神ÓÙçRAÂÑ_Á3äT˺ªùkиԷP’j *  5¯?,(_гl•âJfßU0Ý¿àün/ûŽTx{ç @ágV)ªÏ¥¶„·[®Úüøe¨ú„ê_J%oÏefŸò-C™·úàfe¤ð ïþ¸¾f\ª Z®ŒŸámo·r•ÓVÓÛ'ü2TxÕP+ f¼Ýèþ ðR0ïHeÞÎÈÙëev–³?J°e¼Ýª9N©[κõù¬eËå•I\Ü•ªâ Ç*÷¶#•y{ á/ óÿ}Iåï êtQ"ÊU󙸖ñöŒ3düêbvʸÔlë‹TêMÐUK½J%³+ijE*óvjâ5<µû³øZÁÛ»¾ ¼} *ߥʯj_@™·‡†ÙÅã ]ŠüëÔ;Tg¢ül”µ eÞÏ%òŠ’¦V ðvíW;¤¾%ÞÎ.lCÞ„ªÇf/JšZ w¿úú —c´ìèLL¦ÐͬùL\3.5F»ª•J¤¨(ÿj*elø å“¤êþèÉf\ª†Ó ª]Rš}v©—*©š:^Jò— ðv+Áèêy¯¦?KPý!Õ8Žï¤Ÿm5÷ØU³—™d5_³¨²ØŸ®ØŒK”"NU#ð/ýÓ¹Å'T×;PæíɺïÎFe/[ÉEýǸTA_[)•Ël·†·ÛÓR Nøe¨úø‚é(ß)ØR ªˆ _‘ o·‚£ zw†(¼ ¨M©ŒKɦ×Aà·(ÉÓŸØèÂ;m=ÈýT[ÝÓ†w¿ô¼-1í@áí™/˜ñ«Zv ðöÔþ«T({R©7å[6{}*hq†ù)–¥jHU‘ª!ÕÖ4o§J¨k´p+RÐ?èK©>Œ—’±šÃ¸Ô˜!_3‹RnbÈÆ¥FÊ6§|w¿Z*>ì|Á–w ÌÛ3Y%c—”æÆ„á¢W[ *ì@•?¥Š;PæíÙòdÞ*Øýé©£™#5ÍQ‡ª°⢌ÍŒd…ÅKÂÆ Ôø,ÕTuª3eô­¬å‚­:cFù‚SÕßR-AEle¬åàiYRÙQoïØŠöºîÛýiœýÀÛÙE1{¼„Âü¸hgÒèªk“é;Px;Cp•ʵ eÞ^îít7øÁîÓìÆ¥ ª I¥\µºà x{?î¶Š—GÜ3Gå …ÆÝ{ †ðJPE)7+Ráí…cÁ«_­@áíÖqYP»R™·ërÓ%®E,€?y´—ÚŽÀ¥( ŠÃËÖvãRßJÕHX’н}X‰ë%H¾…·[^_´hS5Go—:~lUŽTó£µÝ¸ÔXìYšòiÖ±"•q©ï ¦¤ËPÓÛ ÙÑ¿lvLw¨6h° …·[¾h,ŒjJò#.µ@÷gRô´ôç¬öˆ·[>ƒ Š’[šCîp©¥  œW©[RYæ@¦ùù 9ô¥RoEªq‡šj½ ò\jaDæ°´·6”µðáRwž²’ªî@MoŸ²dùu(ãw*ÝœöZƒaʼ½Z"ÐyÓ•‹)òCaݸÔS­z7û´Ú²TæíÕŠ³´ìù‹[ŸUëp©êÊõµ‚ýO[õ¨T yðVÝE}K/©¸_)•kÁVp©H5?À¾ÙáRß|ÁÙpr*aöz·Õü˶ÂÛ;1dØ%m}Íõu¸T &@œ&Õ”¼Ý‚TêEM˜]’ o·J½ ðR0ï@™··C BêU½ý—\*Pm\¤Ò.êCÁ¥V‚™(ÕÓ~ o¯ØÊ² /f_Q.UR5q—­oʼ½eÌÞäWº_ù8¸T N³³U¡àGÕ:\j (1ûå·Uq3{3B!^Úb¬(ØžRñJ- …­H…·G¤Já¡à?ªÖ…ÂÛ«¾ §í@Á¥¶ôP0ê•Ú)p©¯0Á •hoÞ‚¶¾…è\j#ÎÀUíê +R¥§‚–hÝ¥‘¬@åÏ Î6MË –;TTáí&Þ®gÈE¹~,ÄàR© ­`v+Pý UT÷çÙv¸ÔVø‚ÚÛ·¤‚Kmþg‡“ržSž8–ßb Γ¹ùòÕ¼MéęέR€ÊCL]1º;8ëD²z#»š”C×.®‚îÃqûY,ã¾\îo8’;™ïšž]¬Séâ󻣨N ë‡AS¡¦Ç€€|×6Þ³ÚqÛìœl:'WpŒ¢ Ÿ«[¤ÏiwGIÃ(Ïj¯“j5p0ØŽÇmb3¶³Eáønmdgk\¶ Gü«;éçÄ™nÝ­ŠÿUò:ÀñŽÈqÍ 1, ГJ3Ý© ã0’³sÛ¶ØžZI-á˜OkcÓ“E±gÏõe¨éÕöšåöËFë¹8¦W[Ãòÿ†J}Wpì>rpk;¬ÓH8 Í»;já„‚åd¤ã!*_k͵0XNºt†`'ÛùKRùË–3Ð$< Š üËIcÆPMPþšËinàœ QµÌnëòqË¢Æ@Û%7 åt;{ŸPá)ÕྫྷÀÉŠTvñŽtŒg^^×L¥%(»{G†SG §Ö ¾•¶’‚I3ÁWlEˆÐ6Mß¾ÌO÷Ç‹ŸP„#_¹š¤ÙÝ.èã`€éul½ Xƒnôʼ1Кs]4uÔ¸|BÙ5…Þ¡sXýKªºa+˜2È{Ê‘oU*˜f‹WÌ!ÇÿœA.üÑÆ'”y;óˆÏ_Fþ$í¢n¯ãʼ=CÀ³u]‚2o/˜Î˰Wší eÞ~™ï)¦: Ê¿&0À”ßî„ù‚ò—3L5/O£÷^íÖ_PþÂa€iµWðe¶àåÂéÎa<¡P¶30‡qö“_…ÒÓþ”겋.(hTg`8õwwƒr~žPæí—qr©ôît›XžPæí¯%?P5½ò—3L;£Ø»ÌžØEÝã0ª3¡z™È£TÉ%(ÆX†jP‡À¬P¦Û_î„2oïŒZèŒZÐ ¤%(‚ãdÔ'ËŸu^PþÎÙÉDž@ªä]…2²³ Ký:÷îÙÃ}N¨p—êk!;‡e‰Z?]fßøyN(óöQ±Õe¸¤ò·>#;5îdö¶?Ê"ó]²“ sÚÆT–±Åø@D ˆßµ0 E™p1ç7D¦J,C­ ËX‚@1Ô€ŽÖOÝmH5 Eyãœ¿è ­ ‹ÛEê„"c‹Zf8h|½$U|BY¥ÆejÔÑAý v_ÆR,)HCõ?{hû ÕO(ËÙ 4— %þV£þІêT ›-x鮿$Mwmë+tÏØê¡}BMo/tÏø²÷8(¥×ñùK½Žyy¹8ÆA¡h$UU½Ž_ͦ_Pþ. õIe™ZL÷Ërʼ=Òƒ(Z9Ø¥Añ’‚Ÿj$«BÑËÂño}jºk»häwé³ê7’…¢ô-<©]¤qø÷+ E_SÉÿA©o¡RÉüΓã én¦OEV ´ÞÎ+P´!¥ÑY¶Fg—fƒK Bц”f8[MáÆaTèlæ÷ït.JúÙèÅwBPÓ_n§ëÝ eÞ^ð«k·Ÿõži'…¢äxWËñÞjgtBÑΈÚÀW ¡_°Šèq«ÑO(ÚQa­ÆA;Ý~N(Ê¢íÞ®^1[lN(š¨ÓˆÚn´R9¡,ÄN…UUÏ]·Èp¢9´ÐÇU³Öº[ƒ7¬è¨KfýTx@øú&MHIÍV:çNjö •>CõJ¶ãôèô„jO%9ù¥I#7Jéq LA=tÍ^Aª‘.Å KH톤„$UK-©ÚÎ÷¦FMöv·©@}(#æg³˜{Ë¥AîsK3Á4ÚÊÕ¦ô&·ðê„ Ÿ¡zU€h*> òeñmA=:]Ì®¯mŠóÝ-¼Aõ¡¬ã®b†CR¹ûp >”áȳ~õß¼„bÜ ’Tj1_e¹ë¥¦ç_QbA5ô0/ÕR~ × ÅãÔFUÎ7÷öC>ü=·tç!âq—êÛ˜@0öô©øRAÍ-µ+¶e¾–®­›^tqY·Ù²LgÆÒZÆÓ dõä)MI~”Ó iªÜ”û‰( ïn;úÈ;fºçsSÜÁéw«Ýúeî +˜kÊê¥EážnF›¾ÿr{PЦìÁ¶ˆPÚÿ·ÿõÿø?ÿ¯ÿëÿþ÷?þ·ÿõÿóþßÿ¯ÿýùßþ×ÿÇÿïÿúþ¿ÿ¿ÿûÿòÿ"*4°aD*syfi-1.0.0.dfsg.orig/demo/data/cylinder.geo0000644000175000017500000000051711672223006020367 0ustar johannrjohannralgebraic3d # two intersecting cylinderes solid cyl1 = ellipticcylinder ( 0, 0, 0; 0, 0, 2; 0, 2.5, 0) and plane (-10, 0, 0; -10, 0, 0) and plane (10, 0, 0; 10, 0, 0); solid cyl2 = cylinder ( 1, 0, 0; -1, 0, 0; 1.0 ) and plane (-10, 0, 0; -10, 0, 0) and plane (10, 0, 0; 10, 0, 0); solid main = cyl1 and not cyl2; tlo main; syfi-1.0.0.dfsg.orig/demo/SubDomains/0000755000175000017500000000000011674103625017220 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/SubDomains/cpp/0000755000175000017500000000000011672223006017774 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/SubDomains/cpp/README0000644000175000017500000000013211672223006020650 0ustar johannrjohannr The demo produces a singular matrix after the transition to dolfin 0.9.7 and ufl 0.5.2 syfi-1.0.0.dfsg.orig/demo/SubDomains/cpp/Makefile0000644000175000017500000000100211672223006021425 0ustar johannrjohannr FLAGS=--integration-method=symbolic #FLAGS=--integration-method=quadrature --integration-order=15 FORM=Forms demo: main.cpp build/generated_code/$(FORM).h cd build && cmake .. && $(MAKE) build/generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -obuild/generated_code $(FORM).ufl generate: clean demo bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl view: run paraview --data=build/u.pvd & run: demo cd build && rm -f *.pvd *.vtu && ./demo debug: demo cd build && gdb ./demo clean: rm -rf build syfi-1.0.0.dfsg.orig/demo/SubDomains/cpp/Forms.ufl0000644000175000017500000000053311672223006021573 0ustar johannrjohannr cell = triangle V1 = FiniteElement("CG", cell, 1) V2 = FiniteElement("CG", cell, 2) V3 = FiniteElement("CG", cell, 3) V4 = FiniteElement("CG", cell, 4) V = V1 W = V1 u = TrialFunction(V) v = TestFunction(V) f = Coefficient(V) g = Coefficient(W) pde = (dot(grad(u), grad(v)) - f*v)*dx(0) \ + (u*v - g*v)*dx(1) a, L = lhs(pde), rhs(pde) syfi-1.0.0.dfsg.orig/demo/SubDomains/cpp/main.cpp0000644000175000017500000000543411672223006021432 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-01-01 // Last changed: 2009-04-01 // // This demo program solves Poissons equation in 2D with // the solution projected to a fixed value in the middle. #include #include #include "generated_code/Forms.h" using std::vector; using namespace dolfin; using namespace Forms; class Source: public Expression { public: void eval(Array& values, const Array& x) const { double dx = x[0] - 0.5; double dy = x[1] - 0.5; values[0] = 0.0*dx*dy; } }; class Value: public Expression { public: void eval(Array& values, const Array& x) const { double dx = x[0] - 0.5; double dy = x[1] - 0.5; values[0] = 2.0*exp(-10.0*(dx*dx+dy*dy))-1; } }; class BoundaryValue: public Expression { public: void eval(Array& values, const Array& x) const { double dx = x[0] - 0.5; double dy = x[1] - 0.5; values[0] = dx + dy; } }; class ValueDomain: public SubDomain { bool inside(const Array& x, bool on_boundary) const { double dx = x[0] - 0.5; double dy = x[1] - 0.5; double r = 0.2; return (dx*dx + dy*dy) < r*r; } }; class DirichletBoundary: public SubDomain { bool inside(const Array& x, bool on_boundary) const { return x[1] < DOLFIN_EPS || x[1] > 1.0-DOLFIN_EPS; } }; int main() { unsigned n = 100; UnitSquare mesh(n, n); //MeshFunction domains(mesh, 2); boost::shared_ptr< MeshFunction > domains(new MeshFunction(mesh, 2)); ValueDomain vdomain; vdomain.mark(*domains, 1); BilinearForm::TrialSpace V(mesh); CoefficientSpace_f F(mesh); CoefficientSpace_g G(mesh); BilinearForm a(V, V); LinearForm L(V); L.set_cell_domains(domains); a.set_cell_domains(domains); Source f; Value g; BoundaryValue ubc; L.f = f; L.g = g; DirichletBoundary boundary; DirichletBC bc(V, ubc, boundary); VariationalProblem problem(a, L, bc); Function u(V); problem.solve(u); File ufile("u.pvd"); ufile << u; //plot(u); } syfi-1.0.0.dfsg.orig/demo/SubDomains/cpp/CMakeLists.txt0000644000175000017500000000204011672223006022530 0ustar johannrjohannr# Require CMake 2.8 cmake_minimum_required(VERSION 2.8) project(SubDomains) # Get DOLFIN configuration data find_package(dolfin) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Add special DOLFIN compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DOLFIN_CXX_FLAGS}") # Generated code is not this robust (yet) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable") # Include directories include_directories( ${DOLFIN_INCLUDE_DIRS} ${DOLFIN_3RD_PARTY_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) # Executable file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/*.cpp) file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/generated_code/*.cpp) add_executable(demo ${SOURCES} ${GENERATED_SOURCES}) # Target libraries target_link_libraries(demo ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) syfi-1.0.0.dfsg.orig/demo/Advection-Diffusion/0000755000175000017500000000000011674103625021014 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/Advection-Diffusion/python/0000755000175000017500000000000011672223006022327 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/Advection-Diffusion/python/subdomains.xml.gz0000644000175000017500000005162011672223006025640 0ustar johannrjohannr‹ X.Fsubdomains.xmlÝÛ®tMrÖ{>E£ï-VDfDF ¤tç'°ÀàÁj€j "uòÓ;aÆìÝ5îú0ÿÚßž_þ«j¬ÈZù7ÿþ¿ÿÇúÃý‡ÿü/úç?ÿíãß|þø‡øóßýóßÿéÏÿçßþñÿßþ×ÿeþøïÿÝ_ýÕßüý?ÿÓ?þéÏxé?ÿË¿ýŸÿåoÿøþõ_ÿÓ¿ýë¿þoÿí¿ý›ü‡?ÿéïþåßüóþ?ÿúþ¿ýÇ÷WøÃßüÇø—ÿðÿåÏ÷¯ïõÿð¯ÿã?ýÃßþñ¿üéÏÿúÇ?üýŸþãûyüÿüéÿzÿÛdÏÿó¼äþü¯ú×ÿñ‡?ýùïÿá¿ÿíßè¿þÿô_^fýñ¯ÿñ5‘ÿoâóKb}}ý5Q_J}ó51_÷{cŸ¯ÔøÞjä÷È÷^ã{±Qß#ß«óý—þ^n|o7¿/Ù„5û½Ý\_£üÞn~o7¿·›ßWn~o7¿·»¾·»¾·»à’ð}í®ïí®ïí®ïí®ïí®ïí®ïíîïW†ý½Ýý}ín¸â~owowowowowo·¾¯ÝúÞn}o·¾·[ð†ö½ÝúÞn}o·¾·[ßÛíïív|]Þý½ÝþÞno·¿·ÛßÛíïíö÷vû{»çû•á|_»ç{»ç{»ç{»ç{»>Ž}o÷|o÷|ow¾¯ÝùÞî|W›ïíÎ÷vç{»ó½ÝO»ßÛïíÞïíÞïíÞïk÷~o÷~o÷~o÷~o÷~o÷&DÀ‰xâ ø€(>@Š˜â¨ø|o9>ÀŠô`aq›À-¾Û"„nb7Á[@ÏÂ7ð[àùýr ëùýîCã¹ÉP.Àr±äFô œ ð\èD@ºÓ .@u±a=ƒë` »ÚØ.wº à]€ï€ ¼âEÁu ¼æ8/zÑÐ3P/ÀzØ Ð^÷¼¾ñÅžÁ|è P_ûÜ¿8p·è`¿üè/zÿ0@€ 0`ÀÀ@0@‚ °`üÀà¯k4?8øûëÈüãûç&x0ÁƒùÃñk¦ àÁ&x0Áƒ Lð`Æ÷Ïu “¼&x0Áƒ Lð`ʸa>¸Áƒ¾ó·a>¸Áƒ<¸x0ÍÀzîõÝ)<¸Áƒ{AÏ0ÜàÁ½¾ïߨàÁ Üò@˜î ëY¾Hß„žå›€òUÀýý}pË—Áƒ<¸Áƒ<¸xð×ß æƒ<¸Áƒæƒ<¸Áƒ<¸Áƒ<¸Áƒæƒ<¸Áƒæƒû‡½†ƒ7xpƒ7xp¸>ƒ7xpƒ7ìÝàÁ óÁ=ð>ÜàÁ=Ð3xpÿðà¯k <¸Áƒæƒû‡ýó€7Ì7xpƒ7xpƒ7xp_XÏàÁ óÁx°ÀƒóÁx°~xð·5VàÁÌ XàÁì-ð`å÷ûHóÁx°`>XàÁÖ‚ëx°Àƒ,ð`Á|°Àƒ,ð` XàÁÌ  Á|°Àƒ,ð`Á~Ñx°ÀƒûE ƒ<ØàÁ6x°a>ØàÁ6x°Áƒ l˜6x°Áƒ lð`ƒæƒ lð`ƒ<Ø0lð`ƒ<ØàÁ6x°a¿hƒ<ØàÁ6x°Áƒ lð`ƒ<ØàÁ6x°Áƒ lð`ƒ<ØàÁ6Ì<ØòÜPyp(x°åÑ¡òìPyx(==z–ç‡ÊDÁƒ mð`ƒ<ØàÁ6x°a¿hƒ<ØàÁ6x°Áƒ lØ/ÚàÁ6Ì<ØàÁ¾ß÷É4x°Áƒ lð`ƒ<ØàÁ˜ðàðàðàïðàðàðàðàðàðàçÉðàðàðàðàðàðàðàçÉðàðàðàðàðàðàðàðàðàðàðàðàðàðàðàðàðàðà9QæƒGΔC%äT 9VBΕ ƒ% g9ZO9àÁ<àÁ<0<àÁ<àÁ<àÁ<àÁðà€<8àÁÎçû¼{Àƒðà€<8àÁxpÀƒßðà€<8àÁxpÀƒðà€<8àÁxpÀƒ˜xpÀƒðà€<8àÁxpÀƒðà€<8àÁÙß÷ xpÀƒðà€<8àÁxpÀƒðà€<8àÁxpÀƒðàüðà¯k<8çûxÁƒxÁƒxÁƒæƒ`ÎúÞø }oü…¾7þBß¡ï¿Ð÷Æ_è{ã/ô½ñ’ÆÁœ/$ƒ9_Hs¾4æ|!iÌùBÒ8˜ó…¤q0ç Iã`Î’ÆÁœ/$ƒ9_Hs¾4æ|!iÌùBÒ8˜ó…¤q0ç Iã`Î’ÆÁœ/$ƒ9_Hs¾4æ|!iÌùBÒ8˜ó…¤q0ç Iã`Î’ÆÁœ/$ƒ9_Hs¾4æ|!iÌùBÒ8˜ó…¤q0ç Iã`Î’ÆÁœ/$ƒ9_Hs¾4æ|!iÌùBÒ8˜ó…¤q0ç Iã`Î’ÆÁœ/$ƒ9_Hs¾4æ|!iÌùBÐxˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çs.1çúaÎß¾rÿBÒ¸˜s‰9—˜s‰9—˜s‰9—˜s‰9—˜s‰9—˜s‰9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·Ì9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎsösþº‰³Åœ-æìæü ?Ns¶˜³Åœ-æl1g‹9[ÌÙ?Ìù{™bÎþaÎß_IÌÙ?Ìù^Is¶˜³¯¬q1g‹9ûÊsžæüõ•Ž˜óˆ9˜óˆ9˜óˆ9˜óˆ9ÏÖøs1çs1çs1çùaοP4.æ°Æ—˜s}`/™s.™s.™s.1ç XãK̹Þ9—˜s‰9—ì­]bÎ%{k—˜s‰9—Ì9WÂÝÚ%æ\bÎ%æ\bΕðy|ÉÞÚ%æ\bÎ%æ\bεd‹9—˜s‰9—˜s-¹ªÈœs‰9—˜s‰9—˜sÉœs‰9—˜sÉœs‰9—˜s‰9—Ì9—˜s•¬q™s.1çs.1çs.1çs.™s.1ç’9çs.1ç’½µK̹dιĜK̹~˜3~IãbÎ%æ\bÎõÜá.‹9—˜s‰9—Ì9—˜s‰9—Ì9—˜sÉœs‰9—˜sý0ç¯÷¢—˜sÉÞÚ%{k—˜s‰9—˜s‰9—˜sÉœs‰9×sþúײŜ[̹Ŝ[̹Ŝ[æœ[æœ[æœ[̹Ŝ[æœ[̹eιŜ[̹Ŝ[̹Ŝ[̹Ŝ[̹eιŜ[̹Ŝ[̹eιŜ[̹Ŝ[̹\Ç·ì­ÝbÎ-æÜbÎ-æÜ2çÜbÎ-æÜbÎ-æÜbÎ-æÜbÎ-æÜbÎ-æÜbÎ-æÜbÎ-æÜ2çÜbÎ-æÜbÎ-æÜbÎ-æÜbÎ-sÎ-æÜbÎ-æÜ »™·˜s‹9·Ì9·˜s7L$¶Ì9·ì­ÝbÎ-æÜbÎ-sÎ}äÓ¡˜s‹9÷‘ÆÅœ[̹Ŝ[̹GÖ¸˜s4.æÜ2çÜbÎ-æÜ2çÜîn1çsn1çsn1çsnÙ[[bÎs–˜³dom‰9KÌY2ç,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,™s–˜³Äœ%æ,1g-xç,1g‰9KÌY>—˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,™s–˜³Äœ%æ,™s–˜³Äœ%sÎs–˜³Äœ%sÎs–˜³Äœ%æ,™s–˜³~˜ó/”)k\ÌYbÎs–˜³dÎYbÎ’9g‰9KÌYbÎs–˜³dÎYbÎs–˜³Äœ%æ¬+k\ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[¾ÏÙbÎs¶˜³Þ9[ÌÙbÎN¸“ÕbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl™s¶˜³Åœ-æl™s¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎsvÁÔ­Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1gËÞÚs¶˜³Åœ-æl1g‹9[ÌÙbΖ9g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbΖ9g‹9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óÈœóˆ9˜óˆ9Ì9˜óˆ9Ì9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9Ì9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9˜óˆ9GÌ9bÎsŽ˜sÄœ#æ1çˆ9GÌ9bÎsŽ˜sÄœ#æ1çˆ9GÌ9bÎsŽ˜sÄœ#æ1çˆ9GÌ9bÎsŽ˜sÄœ#æ1çˆ9GÌ9bÎsŽ˜sÄœ#æ1çˆ9GÌ9bÎsŽ˜sÄœ#æ1çˆ9GÌ9vOŒ˜sÄœ#æ1çˆ9GÌ9bÎsŽ˜sÄœ#æ1çˆ9GÌ9bÎsŽ˜sÄœ#æ1çˆ9GÌ9bÎsŽ˜sÄœ#æ9ŸsÄœ#æ1çˆ9GÌ9bÎsŽ˜sÄœ#æ1çˆ9GÌ9bÎsŽ˜sÄœ#æ1çÈskGÌ9bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼2ç¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+sÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+ϺbÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼bÎ+æ¼2ç¼bÎ æ<0ç }oü…¾7þBß¡ï¿Ð÷Æ_è{ã/ô½ñúÞø Iã`Î’ÆÁœ/$ƒ9_Hs¾4æ|!iÌùBÒ8˜ó…¤q0ç Iã`Î’ÆÁœ/$ƒ9_Hs¾4æ|!iÌùBÒ8˜ó…¾OÝÎÌùBÒ8˜ó…¤q0ç Iã`Î’ÆÁœ/$kÌùBÒ8˜ó…¤q0ç Iã`Î’ÆÁœ/$ƒ9_Hs¾4æ|!iÌùBÒ8˜ó…¤q0ç Iã`Î’ÆÁœ/$ƒ9_Hs¾4æ|!iÌùBÒ8˜ó…¤q˜s¾4æ|!iÌùBÒ8˜ó…¤q0ç Iã`Î’ÆÁœ/‡˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gÀsk_HsÌ9Oˆ9CÌbÎøaÎß+s†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs†˜3Äœ!æ 1gˆ9CÌbÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3˜ó×k)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL™s¦˜3Åœ)æL1gŠ9SÌ™2çL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æL1gŠ9SÌ™bÎs¦˜3Åœ)æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\2ç\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ%æ\bÎ-æÜbÎ-æÜbÎ-æÜbÎ-æÜbÎ-æÜbÎ-æÜbÎ-æÜbÎ-æÜbÎ-æÜbÎ-æÜbÎ-æÜbÎ-æÜbÎ-æÜbÎ-æÜbÎ-æÜ?Ìùë˜~‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜s‹9·˜sÿ0çïËW̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝû‡9ÿWJ̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝ[̹Ŝ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎ’9g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌY2ç,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs–˜³dÎYbÎs–˜³Äœ%æ,1g‰9KÌY?Ìù+àKÌY?Ìù^Is–˜³Äœ%æ,1g‰9KÌYbÎs–˜³Äœ%æ,1g‰9KÌYbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbΖ9g‹9[æœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æl1g‹9[ÌÙbÎs¶˜³Åœ-æ¸Ç®½–g5eFU±*ó‹Œ@‡ãßÿÿã?ÿó?ü·¿þ×ýÛù—ú‹ý»ò—øë¿ü‡ÿòÿö/ÿéŸþòÿûÿþþ×õ—ÿãÿ_þ—ÿÿË?ÿ_û—8ý/ÿú¿}ýË?ýåÿþ·ûþ·üÇÿþßÿû¿û¿þú/ûÿúïþËýOÿøõ¿þã_þ÷ÿåþáßÿç¿þëÿýÿá¯ÿüÏÿö?ÿŸ¿þÓ_þí¿þíÿü—ÿôÏýË?üÇ¿ýçú‹?tþì¼Á¿ýí?üõ_ÿá_ÿöÿž?ó5Öçúüýÿð·ùýÿô—ó†ñÿ»^Ûöú—øŸñ/ÕG™õ/ÿøƒ¥•ÑMýùI.bîaùqÇZ[ø¯Ê»b-ÜIã|Ýùó&¯õ»ß4ƶ)^·…¯ÚÛŸ4êßù×ã,ÄÚï>íèµ6± ¸/vßpz#“xÄñ“+QßVÅ5 ÿ°NPá‰Æ*?o¼ÿp>¥ç*ô>Kùùíš}·t½Í)Sóï¶xo£uaÄØa§‡×«*tÀnh}åêcxûÙã5l†f ×Ù9ó*®iØu[ëøHs‹û¢Á=´½/׬ÄOZߥRU¨Ööw‡¶ÿüY;]Cø;l ¢µŽ½°Ïz·?÷Y{î…^Îõ:pÓž#!^/÷Âù»¹ðÊŽ¨àG£Ü ýzÐyÕ½~^¸ž›¡¯s·æÂµÕš‹·ËÍp–z1â8gO¬¹ÎbaéÚ¬êNê¹Ƙæ0¶Åþé¹ÎY 1T·VEhœÛaìãBxõ³ï~6ÊípîæŽËùܘæâI¹¦®¤ºOœó³ã6«â#Õé"Ò¹¦wcÌÚjûy½Gn†Y÷©{ëçõ¹f;‘$^.ˆX…ù­‘Ÿ‹õ^x½é™…-!õØß®Ýñ³Ñ,ø²e5,„í6…Qn‡qÜ·?÷z3·Ã8‡»Ž?ùz篴1ÿä“àænØxç¢î„w葸Àh-þ³Qnˆ~.g¼œÎÿæ×~øú¦?G¶s]V~þ³Ï7ù³U®?ûù¡ ØAu¯ëZ¹ŸOß‚Ó?kÕhsîòŸnÑé߉s9~ìg|Õ³½gâ|ãŸ}ñÂg=IEãþ)qÕüh„`·³UŒªž„`Ù®4*"©Xº²ÌXG9 <á B»ãNN\ü3è€xðœ×FDÄöFÌÏu×ðvg!~Þ ãØ íüÄìb;l$Œçípû+MÜcùâ ¸*lçu#<á¶j“Éìf¶ÿ®—"2ŠM0iǃF›n#7g `3›wñrØ mWdÚ'Þ"Ó¶‚Ýp‚š’»á¬Éj „ÊíàÛ#Îʠ݆B7 „s”Äõ¹úR.Á°ÉÏe(!¥ÒhÕG¾áqJC|_+ÄŽ7Äq.ëýóN²Âm1èXN²ÕErjNâd¤XùT¡Vžnb7fÏÓ·Hî­iŒ™ð‰)Å^XãYkä$gKª½°ñ8% DÃ|ðÔ6®½éò˜F°q{¸”ÌÏ–ÿÙ7›1ylV çU•yàÆ“qb£QÎÆP¸+‚‚XA¤Nµi•;£O뎰ü¤lr ‘6œ¨iç¹®§üZÌŽ_†Õ‰cE€dÎHq™ÓkœC)Ö ãùY ûéx(‰B#s8±GA¨ØO¬)–°ã¯‘öy¿%–Й=l>*°@±‚ÀG@Þû²rµØǃ²šcýl„qÒµrÕ€¶¸ï ÈãI‘äpaŠ¨Þ€«©Ò; i£×ðdøX¢LaÀÓÎoŠjËÇ 6WG€šq,_ð$06 j~üüÌoµÎÙ`¤S;Éx@o§ûg£×ÙP'´bCàÌPíìž4r4ï¢ØåÕ‚ ç|¿¾Ä¶p€jçÆªØ'%¬Š‹P- ^Èì0Qÿt€j>¼®üX³›âÿS+£SÂH|,¦vnCµ>6“¸˜Úq¼½¸æbåÀÔŽË5¼aëfâ#;0µ•T\^ç¼S y®¢ªéP­œÀ„øX5(­U;®øØù E}e#ÞZÞ¥J+à­µLT_žÆ‰ª…«M OAbp€juœ]Ä{Õ·|¶F)žpœ8Lg ÚÙ…”¼sUA¨ÖÌ ­)Š“;wF#%hÔ1DhâN¦ŽÏEät6E ¨Ö›ÎɹŽƒÍcœ›(KïŠL­ˆ'pŠÉDíœü‰«dĉF¤òE¡6±àa¢í¤òÕRVo­"?/É[½Uìõ~¼‡xÁzað¢fp„Æí•üª$üF9RQ5ïò-‘ÂóyÂ+wEYÆûùÔ³€èD-–õr— T0úƉ¼6³ºsC*+ «¾×üâØþl•[£œp'¬% ²Vß>Û k1†\ ¤$A„Ï¥XcyìG«Æ‹ä|ãÜû¸;`¼]NðØùr[œaBzm:Ø$çBh"àrÀ{磜̹E†ˆX½1ÈØFÊTø_e6x»ÿ s¤Ÿx>pçç ì^lxÀkÏ…rŸ©(øhð„3» ñ4;Y”°ÂÞ˜ÓàÞ­ ¥˜Ðpsº]«!¹Æ€÷ñ¥¸øO,®Ÿ§qrA<+¶†r€OzPp¯.ŸS0¡ã<^ T¨ó»ºù 7ž@0¾ +jóyŒê~…Ñ>A¬0Pl¥"0iQ RVHLúnX‹}|°ŠûAøëóáœå™|ŽÚV`üC—\·U«:ÿ üác4i]Z!ȈoÜ¢ÿHX!c=¢ 9™ê2ïÏÌéCÏ®îs0ÿ| Ùqd^Xúwö˜Ä­Ž²~¶ô$#ˆƒNVÚä³roœ ³$ìk‹&LZGCE2ΙàÐ8°Ï1OØŽü½wÅÎpÒÿλ"gí{« •ô¿H賞{A}c`ŸÇ‹mÞxý$£êYÀ2NtÒž¬&8®ìó Läm[@4~ŸçaÈ#÷œs¢ŸæÀÎI0\“9k5°GÎÿsp‹ý<S¸8ƒ[,–ègD®¼\ëli'ðä¶pP'èQ2áÏsO’)õda„qR ÜȱT¸Kôólñre&Sùx Ÿ¿0á‚E¨xÒÇ,ػË ꘓGxîEÃ¥‚ ÍÄ—˜®ýlçfm¼LŠ N~¶s^€¶Œ`a ïD*áZÓÏtùþl%ÁÜM{7•çþ<n%Ú2ºÌ©žŒz3Ú-[E4äVëL Ï!Šü³Ó$óìAy É)Ü« "ðS]ýÀ?Ïך`ŽÝ¾ÕyzÞèùt__+BIÑô\Û„u¼¸ˆî*ðϳ—™xP … ¢Ï:¨ýq¤ÂQW Ÿit®ßö¢Hðç ± Å­1ekÐÏ{•né¢ÌW «%'x{1¢/õ‚HLì¤3؂ǽÉ7Døy|¾ð9 EäÔ•ègKDb»W Ÿ™"Y¨vsÑ0ôs wwÑ'â™ ôs¬bXùy"'·T ŸÁ#\u.Yá>+ÐÏ=l€ŸUÄNèç áx~c-Em«D?׿t2X@W%§°OëXÃè©V?ÝéÂ:‹¸"+Û˜Wi òI Åïüy%(…ãœHA8«üyŸ…ˆÁnM´sÔA´kO„ÊAëP+ôü·þê'ØCv+pÐóz—ÂM`Øê )¦S®Ê”aÄÞ§Ñ É»º)ƒž3iÖ×ÉÄÞ zŽõjv[M]^€A£t„5ÖÉܵtDCý|9!–Tƒ÷<½Ž¨ü)+x Œ«†§èO•л;"Êׄ§=÷é’ìÇY ÞI:úd‡Õ9ü¦¾ñ¤Ó8~â^[à õê³=q¡Ø‚A¯ïNBÒ0…4mýü*x]¾ra…}±:Ån‚ù£‚µ‹Zv£2WöQŸ7$‹)ŒêQTϸ`—ˆ}U*tQ@û¯çÙš¦ƒ=Oe±®xU9 ½\QòŸ°Ú 8ZÞ‡ºînt¡Ð5¢Â¦TyØQ½ wu‹ ô“,ó/Ѭ쩞•O Ý3eÅËd,’l«ÊD%:†ñºCfÿ:{#|ºUór%Zvpjǃ¨}H"¨5œ“.Ƶ ì[4ÞV¶WŸ”šˆÀ„@ÐÔ࡬4‘ž´ ÝšBX 匸ìDþÔ…ž%»º«gÝ‚ÅØ…ŽVlîs$§Hþ°Ð ·R‹ñÄmnÀBWT>PÚ=>N d XèXe3 R’ajã)nåZ„,4É”ò5ÀBCv•ÁÚ´) ž,tõ‹+’˜ò ±7ÆÉ à®Ï7WlN˜üÜ ž(ñg+€¥Ýß«‹r\:Ë y -ÑP#4ªöÈNfsù‚ð6'+ =j ^ã„+±Èg ]ÃI§vxõ»ˆ…žó„͵¡€…ÚÙóàWIi€BýÖ)î_)ØÏVräOgK»É P÷bWCB_J4¯2 m;Þ‚`¤d wÐИ¸ÊžŽ(ôÜÿ$ŸùÉ«E¬Ñ…·ÎlrœQ¤Ö PèÉlj’˜T‰Û66vw7V"±T+1BÇ^\)·ac°a‹þú,‡|C vìÕ É¯&Pè¹_q+%ØÑ…ž¥hTå\[% Ph¼!­ìä^êöêçp! ÀL  Xh/ Œs/%,Ü€…ևР6° gãðŽ—Uo,ÔG'…ç8oÕðÓ€…Nì=eM-<{ÎO8ĶG+&èB Ph[Fäz-YÕl”<9j¼¶£(¬€jÛ΢á¡|'»+ú*xW 7@¡çL^E¢¤ÎÐØ ðPç»P"iã*®Mp!‚~&ÐÉ$4„¨ò3CJXagœÜ’ ŸuMaE®p+ÔËïÁ±V`wùX@äÏFî¢îÚˆ„¶5˜ÊŸ Pð­Õ ×¾ wÀqŠNc¢þ4N+ò´tŸ‹ Uëz¢;5J 0h=Y*^ÐvSG(èñ‰NѲß`¢sÖ™ƒ·K©"»ë@A½m:µsM‘U÷vÕÕ:85Q RoHôDûv¡…J­7âç^De"èêÀ@çApDðC!Ýh€žïQŠ©  h ÎBãÞÙ/&ç©ó·ØÚqR‡"Ø{]ñJ@Ÿ]I8w` –99ᬋܩ7f&Å€t ÓÔÅua µÓs™¿=± p‰* ;[â›\C]‘@×9·l!)U¾ÐÝäxAñ…€ž]a@Ôm-5@©“ zŽÐûãI·  w ÑÞÊóà¸z%ÜŒ=Ö2}âZC+ò~ Ñ?Z±'~Dÿ(Ò…¦:&;ÐÐ6d&^UN'´ŸKr±žôĹôîd¼®"IRAý# ¥ ¼ºµÍÖ˜óºM€O-ñÑzFÂÊj¢ÚÉ=áË\ÞUÿSÚ¦9\á F8ü@ •m†)Dþ¹¼4Ê9œC¢â4àŸçë,ˆTÌ9Uu¡S ´ÎEdŒ¥~ИcFâîyAuóO&­'‚ÇïjjJÚ¢ ¡®-¥mÓÙ¿&I뜹ðl;1߬q Åšèt’û<ÎÞ”¿ôÄ0GòD°Uåý@@OIÕ½ˆDY§m€Wè]:b¿#69nGEO@@ƒÉÀ–îõÌrýÙªÑA±dÌ!;’êÀçj[•þ9KkKX½©;ˆdÐvVˆÿÞzQ3¹qÝ“óË› øg´>46ÔÙ"ü£ ‘7[¼ àÏ9 ]õŠFØçzc…«”©"] ŸóêÚ Ð@þ*’Ç÷ää†"£~¢ŸÑÄÍz'"ಳ¶§]IêWQôq²Ïïì‘®æ’=°r8ÕܸðsFªÄrÄ9=bcü<» ñVxAë €Ÿ¦#òí&z@ÐÏéÝ9ᯌ.bÖquÄ?n˜©êìˆ?¯x5Y¸ºJAoQÀ®Ø÷ã’Ým_ðñëøyâÜMi‹²ûný<‰›²Î.QMYƒ ñT£ù\²j¤çEõF®ÉÁÂïq ÏÞc ÷9€~ŽÐV>{µ¨¿ Ÿs­÷m4êg!c={ãhúY -‚Ÿ3ôó€êlý,Îl°½\@ðƒ$вóø]‘n ’@k!fz—‰›uý<ËÎrdè%*Eô³¶ˆ{žÌD`Hƒ ñÕÇM©_0€~ž c1êj*èúYÏ&D>XWW’ƒƒ¾W­œ*1» ZáÏ2 ·Œ“ˆ0cT–߯ÛÄ\±%Ðϳ´É¢s5Vjýì‘– êO¥æg+–Yk熲U¥z³¹[Üj0-Ûá»´©t[Š>€††2Ç”í6N8€v‹ù–ÀhBÅUXá:iÏ€ŒÏžÔ¡«7Äuâ× ¯k«“Lèž$úË_~dòü–³¤;$F3:ï÷ {*EÅ ‘ÆU¹‹fIÑb58_È׺*ð³ rË tãØ ·ˆÏÕé4:Utj¨„)+*W£²M„Pê ƒšä>yŠ‚ !Pß„B[ °@@ƒ7ŽsR÷’;èÉŽ'êAæV>h pÙS4#‰7zrïþj?I«(™@ ã¬;¥Ë7»áOBG-yß‘:š¡Vu¼½ê“ƒ>cpcĈW5£hµ!X‹f5hgßhèý”1XÔ˜ÅnŽ‹j^®Yñ'‚Çl‰AO#]<ç!íÒqŸ#£F:  ÇŠ¬Ç˜È«œ5) ¡dsÝã[e'@@O‚½Ù+h¦8&ä€Ú­Å~¶†Êv9ܦ_©ÞäÊ“7>/²ät%^0ö§µ7Ÿu–Pø'6Äׇ¸Y¼+ùÌA¨MCÀZÇj5›È¥YSÐîà`ñâmŸ]E†$.ãìîv~¯  vÄ?ÌLì W…ñA ´ÕklõØ&hÙ hè/#¬ñg6ˆ°º´Ü:ö¡Ï½ÕÞ z’kÊ,Sʃ$РêÑjUÑÀ<¨ zî+PºÎžT´âAô‘Š! )q—Í0tWž¯ÕTŽGÔ}P!}W5ÞtpÎø¬…²Ãb­'6aêœjEÎÀAcÒõ•ãí¦€¡ýKîJØ¥ªq¾8h$N8I0wqÐ~ýÊ3¾þ'«ÉŽø“¼3®±¡æ›MvÄ×͘¼ùç£<„žÍ[‘¡Ôé&ŠI$4$ Xçn]¸Y.·áh=‹´D”7…žïC7îÝ&œè,×•ÒØÜÞºš59p<skhCÉoLGrRHf(áÿ|¼&°Ð³_ÇUR_.H§“DP+F•Š9Ô~"ô¯«£¨ ]“óÆàåõÕ|ú³”«÷®Î'hþÙ ^ãÄ$‹Ùuïðš€B/Eëãs“a]ÇãýzuQ§™BëÓ8›ûÝäëQM¸WDSNb˜6~06Ó# 'v;ÐâD ¢yGÔ«ç„¶f ·V69éÜp¬#yÀÝŠÝðƒðéñ¹jÃäd¤Ýý’u¥’< „ÎYágj«ª•k²¾Ž«aKáÝ $ôܬY4cð‹8[œ7nuÏ»²+’†yµÃFݽ§™ûg+ò@ûž},r†I ´{e$}wbá¯éHƒò¯'X¢²;„žˆ¼ r¢QΜBÏ»n”­BóH ø³^×ʼnts¹\ Â]îW—ŠAµšDB[[¼[W·8»á{»xL{Ѝp²¾zŸ÷Õ/š—&€ÐÄ’ÇÓtvM¡mÇÿÁm·L­ €Ðº 5HcêƒZŒÆÑ.žPL˜û‰º sxgåÏÕ܇وvíF·ÖUwåz6ÝDáï$Oª¬6ÛeX?KQ•/lLN*çmÄp>âMöÂ×ÕqsyŒ,Ï"z Ôœ„KÕ'g«‡ ¾VÈ #lŒÑØ wÈ2&aÐP*%²ÔÈ· 4Z˜K(Š»(hŠ8†‚Ÿ'pÐe`N,Qóe&`ÐvõÅ}ÕÖÕòR¬b_ VõwÖ…о¯NØ]\4¶Lj‚R|4Xª*ž™ìv>ÛŽpËê,œA[)ëîïU½p“}ðÑfKn‘˵ :[á£TEmâëUX‹“ϹHÑÆÉ(m7å›È1¤˜u“kqœÛà> ºZw@ kn­e ¤pÝœGuΕ9™Ä?‹WôÁgQ„øÐ$4TÃá,ªlvœÀ?ÛÉŒ¯) kdlr,RYWºÚjçÏVät= x$‘j ßäX¤=6—ý½ê"!þ¹®Ô¸lÎIè çF††zAò3Nd«’ÏŠZ±ãÂÓÎgT?AÏ~¢S UUV1.Hâx%"2©ZÆ0\xÁ~˜€?¿$ÛïD†ªà?Ùò0-z)®ð§ŸD ÙVl'•ô_mð}sPép…U‘Z–S_îlµ‚ØáÒA”öRUôN9Ðs“€{îÿ"2´uuÁwJŒ˜býóZ¬« ¾qføXC•$W¹‚OÇ>-Fs «+_½‚´ó„«^åºL*«pÍø¹~«K_&Ü”Õu™ R&ÎÎxÕ*×e2qõ-F|åÅ6øõtTå.ÉÌ"ú¹Bó«1§¸OÐÏÓe°1×êçÝ»ì 3¸ÁûÙƒ.ãuÒ ðÂ4)¸€~¶Ú)ŽxBÊ%â÷ô³õÁ]c7ÔZ úœ•3âf‘)–1üd9N)šeWôI^vÌR¹ñ"ü9%ÎÇSüVˆ>#mb‡Š©æþŹðuND’ãäMâæZÄ?ýîšVsˆøxùµ3×0 §á 4&å%CýMdÇ‹øgH^:]è¡Ðr‹:ö£vÕ'¹€†`븜¼_þiί\DÜ¿È]kQu+u͆_dLôsÍ Êþªô…,†.½Ì5žL¿ð£êÚôùKHØEûŸHÙ™×@Ä&ë Èg{Š{°z4­~¶‚¿8þ Þ=$¢Eì´Èm’/ýñ £ùÀu<âb9 g š¨ç\©joÜ|UAö ¸g &;â’¢Ú8aÏQ ÌŽÒ‹à./Àž¿xÎhA}â °g‹æPN4.j¾Æ¢è¶IyÈP*KØbÌk·GUBYÝâ-Òc0ŒØ¶@=Ÿ¢6ždrýXu7^Œ¶9¹@¶NJƒÀó|µ)r‹ÌsœuæH®ØFœíLÅûâ'аÅIHÇ+±ãæDuÒŠ¬àQÙ…9äpÒÅî÷âµHcÆ©ÅæynBÇm:O"q_”ÿÜÎ’Ì9ÍEÝ—ügaòs® 5ui‘ûYú trÿ¦‚&r?KÌ$̬34sÅŽ_(~@úÖƒ$ýlE×`"SçÁb÷{P .rj’(‹òŸÑI+)½¶Hþ<É‚gMÔIÖ ‹Ëvæ1Ùª#}±û½=Ó´Òª(¡ìEùÏ_¬Nò/ûEùÏö¨&'ê$› `ÏlgÇSeÆ‹ìÏ ³OϦ«€ŸìϲÉð åZ q$üºX\1VmyŸc´v¡è³©h‹ìψg®¢‡"/ÎBòbóZ¥.*€Dî¼xfùì1F‚Ÿ)¬pŸÌ:ýªy(q‰èó8Þ;òÁB„Õ"‹«6ÝFlCNCŠâ e"fÔåEòç—l@Z 5Ès]ãÊ(|ÖPõõ?sñÔ.ú ž”g:~ùS•X~ÀMv ˆ?]¿ü©:]1†øÓvI*…øSûåOUÚñ)¡­þ´þò§‚O´Hf+¦øS¨§½ÿ)ÜùûŸ¢½øýOÉ}xýSÂ/º/@ñõO¡Kòþ§üðþ§yÌÊûŸ¶_ÿôç[nsRÐûŸŽ_–úÓùëb©?]¿~õ§û×+þßxÿSûuª?õ_·¶úÓúëQJ>ÁØq¨ÆôÀÝûáֽ݉»„Ý»£Ù ̽»¯hÜ»SÜ Á½»Ú¸Û»ß ¶½_ ;¶÷Ëf'¬ö~…m`iÝÏ8g¨ ¹›’’'ûA ÔöVJãXZ‰šçB¹RÖßœ2>ÿ«ýí³–¶œVj£àK€A‚U½¨•õ÷Xù·Ï²+ß:[xÖV±Ú¤ö«•½XATÒþžg Ï|Y‹‹‹S—c’z¨ÌÁâì‰.qY‹!4¬?ò?±¢Û6‰CÌE-<ÇÏÉ<]ÁÂÈÚùY›¥Ì¹•ÐÑ&­ð|N'^]é(ïKY²MŽÖ>¦ú\¤Æ ÅgUuP€¬ÅÜÊ»ÛIM”Ø >ÌVM5¡`“U¸Žè Ds¯ë2¡ŠPÕÐ Va‹Q•¼¸z³›“u‚0Îg­¡6ÌTë×—þÒÇì‚xZC¬P_2t(/â³"&Xa[u4F²Ð`Jíä˜5<{4¦höýù¨X€ø‹Õz³B†2m³‘ËŠˆ6Ž˜•ƒþÞó0Q\;f€6–;œï>IŸ°¸qúfåõDÐj*·êLοˌR.ۿͪØÄVIƵ¡T%òaèäIÿ«Ü vî:È=ŸE1ƒmzb'Ó0à1ßšÍ73ì½à?‚3#"z+FìËœL]W+úðŽ1  Þª/AT8[¼|k6ÞÌ0t¼\Í£1›Z-h†%´Q@ZS X¡àäºÚãé/¾Ëcv6{ð&"S´âÜ#O«ÏgcyŠ•ÙøÖl¾™aŒ‰ðÃJ‘Îר·¯Õ?¡(°‹XòY›Ë?°ü¶ÛØÞ Fs‹Äõn\Ǧ†YBú«Y}3Ë=r‚X¶vïsÒD\pÌ <¹Ê@üÜÔK°ÒŽ›ä›]ËI‹Eìr̺\cpË–MTV€’#2²EŠÏ+Füï±"µÇ ÿ%˜UV“ž¸ùï0NºBê.}V4Ö‹À1xMi6ÿ.3T¾NІ pŸT$Ž_óD¾Ì"vÆP‚“ÍŠšÎà)›“¶¥k`…ƒÈ·‘P¸¶Py0¶Ï]¸Bž'ýt¡kfåBKc¶7>Û2iŒE®H0T(eÔ ¼ÔNì^è´Z´ÛãÓpÕì†kÞBNý4 ¦nTÊçZœ˜/ ñ×+FJF¸ß‹è¸9fEÎ&£è3S™uVFç`>…Ná±³h8eè-áÕ~ìÒŸ“`Ò!7—S¯Èªc¨ž¼j8’gœ×¬ôâj6ÙÙ¼Ìu'ó™m®ÆëX¡$åñ"›A²Ç­<×4^”ðP°´š¶€ƒôè“?ÓÿiZýD¯ųÂÁ<Ã(ì«*72…){Lä«ÞZ@Pk¨­YªÞ Ô:ˆâŸ‡i¿Êžìˆ$ôIu²Ù–ºwpÑ©¦¶û²Cqðu ¡jûEmÑñ9¯JñÀ PÔ@6hÕT±Á QÔÑ%4ÚÔ 6aÔ>Œï؆ª^Y!ŽÚÖf“KA˜ÊŒ ueÁ÷‡À¿ Ï¥Þ­à'Ɖ9û³Ï9¡•+µ.+€RCQˆ ÛsÜæ˜±b^ b¦ïP‚©Ã;ºqNÈÛe–Ç&íY ék̳hê1ã)£r÷¯*ƒjÎ*ŸõBÍÇT°Ù1ãèá«çrÄÉS[‹˜êš{ói®ä­Ù5–e!'2—'¨ê3¶€Yt­Ü°jƒæÏYI¯XrÝOíJþô˜Y5J÷G·±([|©—~îz7¶õ¨­–Øj3£ J´›Èïpµ Œ‡¡?%͸K§Ûý©4Pw‰5 3é{w™ÕsxÏ Á×uÞL†$WÎÐ'ƒYSƒIÌ Ë2¥~·˜±¬Ì¨B·Ù˜vž¶DÙà ë1£ˆÅ N$ªelÞÞ…càëÙ\*Œ7voŸH‰* !P,‹3ûRQkJÈÓŒíÛs-(^††º7¬\…»vuKØl@36pŸüÿj‡EôG3hæ ÷!4ÁÔoÈÚ=BD¸MuϳKdrK†v¶|]É“:}ž6L‘ÌØÆ}Îù"¯c¨qrfìã.¥³š9ÆPP‡±“Ûl"í¡Õ+.|c+·u‚h矪ŠvÍÜ…ø`Ì-R“±™»zÏ×n*þ7vsÛ¾\·-ùŽlç¶g¶¤H3»ú¹§±rKUZ36tÇô¸òs3I¦cÆæÝ6®sSLˆ`Çpg¬ä˜,^Çìuù4’Cæ"Ù`ê$Ñœ ð3ìO“ù†i•d7ótQG5sn’²ùµc‡¸¥ Pk4”] õ®Ï¥æÔ%R7¢GÑŒÎ}S4ú¤C”¾ÍØß=F ¸‚K¤Ìê}¹1LSªNÇŠ·óÞM"õ­9åg×<¬¯G9@˜ûjãÑ* fìð>é3›Wwô‘Ö½9'>ð)¹CØç]€ýœüaÈßÅ6o¤¿lÒ÷³Ñ»Þ„ýXÊìr"NgŽHY±àk‹jÄîj Þ1cãA)W4bC…ºÆY?>—1Ù+]::6{‡JÆeæ‚{Ìæõ’¨ ÄuÁ?fäø5 îü6ü°ç»õAí*ïJ·î\½ „b ­ŠJl 8kùš¹šÃqÌÈ …q7Eh5#7µ®ÂîÞW³«;e]“ÕJ£Üe]ûÚ‘[.?å.£MrEUŒÌc,Þ…"Îå$pÖ.ýV@âOX)‹CÖÕ~Ìj«sjÅqÅUL€YÏ…_œ{Éݘu÷Íyc íG€³þjVßÌP®Y×ü8gFÞ…ÀYw±ëiž$_†ìJõ±¿ÕŒMà'³@kÕ®Ýfìï·h %hÆ.ðKåpÆ>S¿ŒSÐÛɼ¯Ž9…È®pÖ5Ê|Zhà+3”ôæD(~R 5£Ð 8ëÙšb›kɰ8«ÕGÄ;Qî¡F ›gx‹”:— fì¯FgÇ zuh€³Žõw™åmû‘²"3`i×1øA> TÇ_ssëPø¸q.ú~ô"¿Ìb¸ªº'£ÛD|v\ƒâ5Çe†jY Ki6ƒTû0ëY¸ÆûpÔªPu#Ì:vÅpšm1þM™qöKYØÇûüdAç¡y„"‘›ì“q 2ª•1Ï÷Ú í>ù0D#£Ø%éŠúj¶ŽLªyŒ×…d<2VÇ(µ‘(ëqD‹Br;f3(3NIßž‹ò£Ì˜Öü]fWQƒÏJ´ŒÉßläÜf8meÔ¢ÎVøU8ºø#°-Ìî¶¿ËŒ»¤îë”úRá¸f&ÈB¤¥"d/äL#£)4 ÕJ£ÖAåß&͵.‡G>a¢+Gº³‚~¶\ò…vUüÏO‹¡\joqVP´.ƒ@3Ô…—t ¬>ZÜ’'_‘O:â{ ",ªqÑë~ºËÒ‘ì¹~ìY׉¥ñ¬ó(WE=Ȳ@`ŸEÜê®w€¬û¬]c\|de†-ÒšaGS’ʇœtÖíä<לº¤ k¸Qç\çÓ«*d=Q¿é¹Eé@þ2ÐÐ|ÔO–™ê³:fû[³ñbÆ~ÿ¾IæžKŽmùÒýŸ „£uvˆŠ¬ÿk±¤´bš4#>R ½»Öº©º—SFs=*éG”r—9@Ö~bVDŸÁrU¨Š³é?Ä€Ù_¶<ÚìúÿÅÌßÌØö_égÀ»ò%7¶ÿî× »'ªùÙ @ëö+l=ÔRåbкPƒvâ¹ „ì¡u{dÖT-òæ$´–ÆBH©Mé…™“ÐêƒY[„ Šæ@ZÝÀ(!¥-ŸvõN8Šs5Æ9È%¹z'ÙFÀùò–"£õ|*@T-€º7€´–yî\@÷ ›€´†¾™üõ4RZÏaaHrN¬ô €ZO@B®z [S5'§µ.ç½ÔBiÕÿ6¨o`!®v  Vÿ’­K³¦ä ͵úIœÉ…uW¢²1ý Oë Ok½+±as€­-€èç9w¸êIs¢­õRÚìÛ”ú9ÑÖils®QªSVˆIì«iì D-P™øÜ¦× þœª™Í ¶NÈ€Oî¡r{Öú«U}±bDòDJŒÈåÑÔºÏgõÍb~ª\}¤6͘n÷“sÊlP«Å`6l‘³Œ2#Ö3ìŠÔ XkX€-Úè’‰àÀZ§£’ð”|9¿$7½ƒ_ª®ß:57ëße†&¬Gü—ÍRÇ —M鯾œ!§¢˜lõɇ%wÈdò»;¤I9ág~Lºãn›ßºM¹ûµú=þ¡îª¯¶èDü"=”)y·¨õDôì;Wê’PëYÑ¿Ç WÍXh°Ù!²®VHëšöÙÆ¡7-F¥ªJBA‹)ÏÒ ™Ížl‚ëW©MÂá닲x}k²ºj=¡?¹Ù}¨Á¼Á½„[­“ÛŽUE%Òú«™¿™!f=g†Áç =å­¨u77Žn´Q%ö³/ÍQÕ;A•5 ÖG²‡Î_“|Pë81TnϯD‰Ù Óš TF?¼DµF+=R½ó‹•üÈê×$ëH2åŠÀD?J6EiÜŸ›9÷È f|Ö:TÛn¥„hù ¹¾¾Y·¥bº œ5„Z€á‡RÄZ¯ŽÝ óµ¥8h8ëÙÔw÷³ûÕQ³ßvß¡{(x¶g#³®`¤*è§g±®éAÙ÷Ü€ÞJÌ;G­fÑ5íxÇV•ƒ¬T+]׺†Œ*ª1§Yœ=Ž‹U0k%™õܽÈ×¹2°’ÌÚœõâ˜Ý­Ò…J2k­¤—žc×5¦f]{\ÎßdËQÌzÎj!½WJŽYÎê‹F!¡>5PÖ›íÙ÷–ü¿ µŸm‹œëD*¢«œË¾/µŒ“þª¹öÇìêÑc>³bHµúÒ÷d"—+ 7òid;wŽ ZñÊjE€±ÆˆEî«=Õ-_Éc->(ÁÅc-ƒJ þ¤ÂŒs[E* 0Ê4ÖsÉ£š½ûK 3â½³i´ÆD*aÆ EÖ9Ê8´&äP9¤¨îzö3ƒIm~@¬µÍÂvðÈÕÎâˆö2±cà½Ê¹*i¬½;P°z òa€Xû9_ÈæO¢¬ø]µÒ…ÌBNÈs(+¸ÔqèçäÊ; ëñ5ãÒÏëRB¡aõ®Ë„¦ÉšKÂêvRÕnÊ*HÂ:ìKà‹ì®2ì „uú¬à_*lÀÙ"‘³Ë¤¾:JÙ¨ÔŸS7dl|u4Û+ñˆäӫκ8dwšìb®ÀWÏg·{@…¯b•«'zD³]T-å¥Âêɪ‰æ–-e6*ðÕˆ§/òBÌ€Sfìä¼®šiO,/ÌpÕ´>Ðjqr)5 (ú<ñÛ6¯ìã|š<ÚŽ¤Pîwž5‘÷!…Vý"3ùì*{­×äöÆB}Mi†¤·­Êžõr ÊŒ®*÷j2†¡Øjà°üikË»æ’ ècØçùªi±^=ÉÂFà9Ÿ¡uÊ £µ8v7.DiE#ãT¢ó\)…S)CtU5Ò*%b" Žö4¥2zÌ÷ñæä”±%ͨPÆ%5Š˜‚d•šÇ€?L'‡ ˆ6BêÂùR¥“z‰8=ùˆÜM¶K4àKóçó44Q3`öÉFrwYଠXu1ƒ²)(E–Q@j|ý‹0#mP‰ë,©b^¥hÀÉh8’8¦Ëa«/]Ý!h¤¬°EæES9rª*M¥hÀjÜý¦›Ê*EÂá_]&slà«5˜ƒO+ŠV¯Sêj?ñ)£ŠÔkJóS8QËOÑ€^* .'ÌèòÐP4 Õ¯5úË EÑ€îÞiöÈ 3 K‡x×=•àÚ$dÖåeC)ÖsÓ3ü aoõÛ(ЕƉ,d@BÑ€~ÕNÂשáJÑ€7HG¢å+"¬¥_ƒÍ—lë®Ô 8 BGb{Ë€dÖkøXŒÞSk¥dÀ˜lë>~dˬž’ÃçÕ(ÊŒS›Ý ýOÙòŠº$üš©:ž9?šµK2`UÀž£hR^#™5ê9÷uK2Y#™5†£4n-‰„5’Yk¹ûƒ»©Ë¾‘ÌÚüúÚ'<Þ®î‘QѶÒû– üŒ5fç^î}ë…œt’l˜>{DŒŒµÆÉO¾.U§!'ª[ÆÚNÜ‚À¢O“<­FÅ€úæ}žfJf¬Q0 j¿l*.UÝí Ø×”…Þ¥CnÄXO*É0f˜Äù1Vkô¬ÇýË˾]‚›‚Ç9…¡µK0€b‘1¡Zµq6êx /™M…=4 œ4™ƒ·Od'·Ö%PI8 ÁÅäh ðê“¿m6UÐh (F-Æ&ªÈ®gý"Ô¥UØ”•GvEßP­Ïk³Ky¤_-ÂjªŽ5Ž­Š×å¬P¯ŠHÓ8·ÊGPÔøœjgfíÑ$y ]m• 4­çx]ck½Ë«¾h=™v¹Æq6íë*[}Ÿé¬øl èhÀYC£ÝK*Ê?%ªÏ³æÜÐk[ÝY™aŽo]áôs¨œ5d Ï+åò%QÎ;>—Fí~*³î‘f{ºüjZc9éŠÚÇÀY×ÑŠ4‹9bò«¡œwÄ[°MÁ# 0k´"ÒšápÕ/#Ì:G¡ŸU’¤`V뜀³eRÌ5$Q6ž $ }œÅHlô—öøœ541©^:5ªÛ€³†䌽Tٴ؀³®å›d[Ÿ[:V଱³þ30GNF"Y9ÞA­?`ÖýÇhQš2:Ⱥְ«(Ýdå¶d]urªo¨@)p¤d6ÙW3}U¹9)¾—‚çýõ´¡bÎlu‰4æ®r3v€«¿šù›‘²œUT<Ãlu?àüΔT«lÕコv®xUìêä¯ú%u} SDÏNþjPð qŸèK˜¡&:ÎPŸ YEÖ³ù®îöèˆ3ø½‰iVš« ¯\pQÿ±i ìW˾¸—O?šú—PÀº†LSÐA§N@Èßc“Dû¿²‚ñÙÁì©®ÝîÄͪ_kÖÕ¡_2›Ù|¯òŽïNØl,ŽÜ­¡Ï¤Ì(%Ñ;ˆVÇ·¨Ù´ÖéLabƒTÌß­ž´ÿjïZ&ɨØêÜF=Êó¾Rݧ\=ß̸þçÈh3N_…ÄïR»ºå;ÀÕ“¯ÛfCB}€Ê|&¦låÓ<ü¸2ÃU1¿[1…7w‚«~Ã4¯´]³SÈo“=.èjd¯ÜbœÂE:àÕ³ÿ àáQUfØ%Ç\óˆ{S9^'‹uŽM„)8kj%¯N¯ìÁ<‘ñ’øê,í*ÉÕ>#£S'àx;À²}iůÞXí}¯ÌòªT÷éÀWcBµ+NðªÐ³|µEÉ›ó–²Ú½±ÜÛ8Á÷d½S¥¢½ó¶qª™Í˜Ç£vIçmSêU_ØRj¿wÞ6›$GSÕJöëº!qêÉÂÔçîŒZ7©¥'UojÐYĺbÄõ¥¸ ù—½óÂé T¦ºªT!êÀXWLžGì¹Ô $ÅXôȇa¬Õ°#ÏYhґʺ¯: ÇVµý³—©šÑ]/3­> ×v]EîÀY}ÎuÁUÁ÷0ë¹Ø˜d-¦a(¹˜Ý”ް©E%KÀ¬³j©Ì—K(묓(·[Ñß(ëj_ðÀ'¹tÉìDYOþÅ-RpL˜¡Xc.‚m,%¹;‰¬Qz¥¼žnZ鑵¬ÿ `õú“ɃQ­ ¡6ùŒ¹‘1€Öž5«Xþ4ä6kT@„A=T-b8ë ¦'’”˜ §@ª¤õ\†{òöírDÝÖzþ‘¹MŸÚ QëöI¶süâ´ ªN8‡I*'в¯ %Tze,>µII5)]78û*ÀK\QÍMÑ g_ÝóΚšrȃ³¯FkÎ+jª0~l='m°:’vbGªÄPÖ8›¤ вÎAc(¯5¨ÉZÃÁ³&ÔÇ&Ø:Zåçã–Ôa$²î¨§™-‰,#1àj›çœ«ŠêØ”ÊKÆü¹Ø#!ìÐéµäø™A°u9 O3Y¬[Ov· ¸˜ð®Ì ¾„úIêslÏÚ}¬´zÈÖzÜ—sÌS´¥H3ì‘eLì— ©f3€¶žtˆøë¼¯ô#@[ý‡|"Qù’`œ@‹ŒøH äÓ¤CÉ2[ëjGn ! ÎÕŒý¯žF&ë®û*~I‘Âq1Y/½f±IqçÁÁW'FC7þ9Ú œ{3¡À^ˆ C9Vj²F=„B=U¢o`kÈÀ-ÒmMÎ1•䑊o eªB4€µž‰+ÃBBmc@­#ðH¨VϺ¥Ïºˆ¬Î9¯'«‘S¦¡ÖàjRYR}ƒDÖu)™ôr(¶ç Òº çhÄ(CUDZ£(ŽúP W[„H«?c4sýgQàó bÀdËJ pò‚âè«GcÒÐ93¦²ÃÁÑW'·`õ%FOÈ!¾^ hç¿¡xIƒ£¯bB"ÌŽsPéá `À¬œvàî²Ö3(pÜOMá•Ê =Þ/Èúì9áŒK0 4ô ÙŠ¾2CÓD´ !:T: ·E¹žþ(ˆ ³ h-¨õœ‹g*8~h •f\¾d}ô«²w $9A.?ÉΗ¨GAP­ã ðHåè±óKþ²AtÄ'{Á‡×ÌÚ÷Ú¹¬T5jf헦ĉÔä8°˜u›¤Ž?˜5¸ó¤«¬)]$QÖsZ¯qõ±$ÊŒ"y_pþ'>ð"£:¢¬Çí]ÀwEç@Y½ 6Ú¯U5( rYƒ÷ƒ… mOõÙHfÓp³µ½§¬Pû]…ƒ°ÏÃt”uF8y­H©(ë< 9 O ü ²Fž‘Ÿ­Í6Wke'º"`ã^åK"­‰ó Qà¡Ë§-š-–ŒO„ CV*œÛ â ¨V€Eå‘A˜ûiè—f °zM‚79WmP1ÀO|ÌÙìQäVfœGBÁ»ðÖVVŽê|w}Ø€²V3vžûN6_ ¬½]ÚL¦°‚™Ë8 ¥º©~é±H3ºøžg È7¤Öf½.(Óò!ƒ(ëØ -2'À°@ÖÄ‹M|BÙd=²ŽpâÆwìª2:²žÈ©y 7Ò?RŽÕI–8ÿ(‘ñA5Öö°x¾4è„õ,ýÄÎ_Á̃ é£ãz:SW$£„58ž³5BïJ™Ñ…ÀI™€ws.Îq” JœDW£Ä‚Pé\r “Ê:‡î?—¶©Ëb^TÖ~Ås-D9”µX{gßOô‰©=B*ëò~iI¸lò𕵢ïçäl[±Æ'ÀÕ³"1çIçåátf3Okæ×C% “Ðjta‚krÂy6 ®ú¼´¾ÊPÕ×é¼c.9¾Ð}Ñf¼d cÀ§ãBš!P=q7[—Ï·–‹ØjÜ~‘»ªëbRŽuÎ÷ÕdÿÔ¶ê1_Kr’EZ˜ÀV}_Lʳ$ K™ÀVjpí¥ê® ²Z6«xظÚ!ÔbÝÑ@…eÔ¡ô$´êm7–Û’ûÐê ‰„ŠŸ¼­ö¨ÍQètË“hµ;á—gˆ€´Âé{ ¹›¡ «Ü# ÕÖ®A¦Sl'€Õµ-*(n)!4od•]ã>½ea×q®0Tf-q²i’áõ—nLd*!¢|Vù0Þ2“Â[OW˜\ªõ6:ÕþHU«ÙxËÔ6Õ¢ÈAÈê ¡c<íxU{š¹Ìä<´ /a`µ– ýŠfXÕ 29é*ú=QÕ<ŸPžk«1$¬‘B É `õ„ãÛ- Vg”ÄŠD¥’“®¦sÐü9¹rŠé䤫=z(!`)Í®t—¢’'B|ùn E&YEq¶UÃÊ´z’Ç~Ikl“fƒE¼“£`'—Ý;tZís^5«1T:)ź۸¶ž¬A˜}§†–Û3äIX!™™v]Ø'¼“ùÝ%Åz¢ÞkCÊVLJ±N~ëH9}R‰u”ÊX$nùŽÈxCY!ÌÝIs°B³)™s‘"Í€¬ög2D¦OKg]Vch %µû’y…Xí—£f[f b='IùŒŽµ‹©Ä¤žÐPSWfäãué뇑væ›dýó±e$H!VwÞP'@Ô1õd¸:Yè:yfS0â®=v$ôZ‘\ŒI\u´ÆÙ¿nò¨V=§„·h ’sžPø5¤2êªZÃ÷`;î“Zªõ¬ÏBt7¶~EVðìE}BZÎuãfÈ'g1”a³zëbWu®IÖV9Má<¶)À~Xm{3†<+"Õ&EÖWêdMÙ™47½ÈjlSª‹|5¿[L_]vàO «õDxÄöÆùˆêdoÞ4ûé†-Õb4­Ö±©tTcP¨úWÏ?ÂûÔ.‘"B«£³Ã«ö)g£Ï Z­ÔñˆÝ)&B«k°¦ÂÀª`µ­ÆÀ ÆðCöÊ-B«Œã%[—ÕáEh5XßXÇsb•Vï*Ü#³ŸV¥Äï´B—×FžCm­hµû¥vQƒ|(ŸFjb_©¡·$—„‰oiÔ&Œ‘Ìb#/J̇#’˜[ë*\” øÅÌ_Ì(àd•[A* ~mÏ„¥Y” U+N"=?Yœ¶eDÏ*K¨'_–¡çÀ:¢%—ï¹FU2ºŒðÙh(ý…࣒u[¤¯îF—ÔDÆ,¬ë܈— ñÃBfä‹ìg×£[W. xðçŽ"ÂÚõ„•åäÁ÷¹Ì¨Àºˆuص%A„ŒuU*ŽÄÅ£¾Ö^¨²btÚÇ@XOðMÉ‹µMÞ\—k§îâÚkÈ IÖcuñ©uíuQ‡µ´†¶¤hÿTÏE±€a,KDè/wÖ³³6gl/—^ëÙXlT9yº‚+ÖXqlÇÒ¤‚ψõÄ0—FO4„¨åİ)0­“Øê ˆÕ‹•J°»¼}±†¬ ®Ñ²_òi蔘ÞQÌXöøaFÉ‘½/WWäuxÑWk—ó‘Áç"}µ/6 tÖUž·(ĺ‡£wªO“êëFY7 ÿ¾ë”ëߎœäŽª»¥ËS”5„@AD¤OhV£#q®«r(Ôjô#Æc³BEQòWOìÃÞ‘âMAÁ‹üÕÞYÐXF™¿j{Q+ÙŠ’¸È_­ðùÇì„LŠã¼³<9¯öüPÅû[€Yû‰¦±$e7‰»-À¬¡ þvÙ]æ£ 0kÜw묔ó_€YC-/êÝŠ°³(Ùøj»ùÝÈ_õ™µ'XP}¢‹:öÜ/xØÔë˦•΀ð! +ìoÊŒtE­#AÖ²*ιQ¸çÈô=ªB´"‡®kàUçtèà»)Pq]¯bäIšÍ"•ÓÖ`к)”4NJ«ÀñE1ÖÙUXÚqÉê³fçŽÂÙ$Xzò‹ÁúçÄÖ’. Öæ$¬@W6.2XûDfº%ÊÝÍ‹åÌîjZ.|h¦"êз&;¼…Bc‰"&•=×…´®ÎnúhE—¿í‚HúÕásû” ’µÇÕáèUf¡Ö @a­¾Haµ/º»öòPÕë•¢£/X®ºÀO`ÀžÐ½Wï¤uÎM"œ  ]d…3q É(Pkx;jîÔ>dÖF¥€yý´/QWaÅ®«NºÐ¿–Ág^õktaðÈak=wÙÑ,*øslayÜZ'3+ÀÖ =±18šåúã¾9™¬V1 ãì«1ÏáíB`T)Ñ/²Xíþ~Bò!‘­ k]…Û·ªô,²X»ÃÖÛ¤âÈÖ#…(=»äÌ.*²†Ì ]rïzI¨ƒ¶ýšg÷I„'Ø5™ÎôޤR@hcPM¨k°é’ ¸¦ÂªàgS&`ŠŸ¥×6Öóˆë<¶Š/½/ u *‘?¨Êô漫ˆS)­œÊ ¤Ö±y®¥þÍæ¼«`¸\ ^[ñ6qÖ¨â{“ÃE7qÖ£»š7M˜›¯v¼h¦”ÑÝT 8á&¹¥1}\ÜjÛÈ@›` µ7eÎaòq­m­')wåKŒ·k.K…óíK'àä£lqéR¦a_¢¬{C¸Åt'ùÛ@i½à´µØ$껑ÉÚ‚Å‘fÇ')>Ù&“µ?Øù´-u‹6€Öo¢(n4Š)3­gÎÉì.÷¤39ùû LNüÜZ‹«WWî­s®Þú虤Hë þÈ-÷¢Ò¡MUÖhÆAûQfÈ}+7Vè#*lÞ)6rÜTÝ€YƒN@œÏŠTÚ‘õèô1+Ã`±Id=ïEzcR´k“ÉÚFcËÕr&×®Lj.Çd/•/ìkàU¹(Áã™9-Ì8A pžËÉ‹$з9ðêÜœP;ò—¨nWn‘b >Ôýès3ÊÍ‚d´Eÿ­² ØH½޽}‹g=iõ@åë„uCȃ½yQ=$zTâµ³®“‰’¿SCJ]™!é…›â¬ò%+ÍÈo>]i…´¦]õÊÙd§Ñ&ÊU+ÊJÆ)Uf¤\#†¢Ý_!È(ë‰é8ãf5ÉJÝãºj®ÓñHÜ3\5½ÓG†Ê•<5” ¨m‘¸Ü¿²†öû‚§Q¼²Æ[AÝᬾ¬àn€¬1¡žëÿÂCØÔ °¯šÛçik*œ uœž}T1§D¾$ ø€t¯±K¦ÌzuNöEBÖaûÒ pŠ›IX†ŸÔ 8´àñ«§-öN”†%‰tGúVZk„ Ä릌ȩÇ£–µ-5»)TCêÏõ.·2•¢ß0ßùŠ2F¦ë o‘Ï“'I”Ösã·ĖÈi->¥yˆö¨«”Rç^D‹&+Æ{ñºiô\ÁE7qVoä+ž—TPü&¥õ‰äá6™ion’Å©°~âQyn³F¨Äæ YvÙY=´$ÙX\º-€¬>šñ‡•.«Çü6&_š‡¹±ž°ŒU~‚¦\}bh‹`dÌÃ)@Öã¯á3°ý|ÖÎ/~}1§?>rLAÍö u'‰´!Ϋ ‚³k" 9ÿ~|«hxæÿehwÉ#JÞ^´FÛPbšÐÏŸûá÷$†3&‹œM|µ/‡ÿõ¬j ¸ìç$¯-@ø,b˜¹‰¼þ˜!")_)Ü'FXj´´­-ä›#4G õ«BoŸ²sÎ Nž<¸‘«jh8f¨èõ}MÝëeˆ€ÜË´RL[«Â{ÎZ£èUyÕ 5yÎZË yžäK$Çìš¾!ŒR=HwÊŒ`|­ t7¥¤P%ÌŒ½l'óU/€YOII¾( Êý˜µ×+iÕ•$ŸÀ¬1¡Ÿm…Æ¿zIgշ΋@(o /ZÛ(Œ‘CéGÿ6”}×ñÝÈõΖA“­5&Ê\ÓH†¸n›u 0¬½ý’IváÜøk' m^€µž„wSP¥%ùGV-ýÖÈöŽ7AéðrqZ5~Î] Æ*x!©µ\¹e XT- I­îÜi¹¨zÖºÎÉDøsâ…&B/$µN¢v3†%¨¯ ¨õ|¶Jú:˜¤;ª}<à¹0cÔʧ‰nymÓÚÈìR²:‚u€_¤ðÏî-˜1ÇŒ6c\º^î(RZg(À¡r…µz!¥õ¬›ÙÝŠvè…”Ö±àÎ⸨{+Ü5{pê9äB…ëkãç—Õ]¹ŽE•¢N†Ë)zVQ/;1:yãDúj®‚*à/Ô ¨«oz_X?fŒY 2ÖQÞõÔ 1‹£¥ˆ^f/€ZÛS×üÜPA” -&ðbÛ&/6 ­-D™Á±>Ñ¿¨ØxÒCE€F®óê;fH}ÏÅFYùÐ0U¿Hë6 0¬Úšh½i µDÖ'b‚ â…’¬»>Û2©ì…’¬{œÑ…0µ·8ùê¸àÅïV”pÆ1cѦ‘õ|ž¶Dfé…Â1É‹´Û®s*´V€õãù¤ÿ¡r€·=ø´€í”a´}q¼¢i^½$ÀÖsQýoÞÄ 5YO¦d±•ªÚ½P”µ ÙùDÝdFDQÖyeͪ"ã3ðN¸@FÙ.Ktb}‰»}=m9Ýdœt™Q”u?ƒ sIŠè`ëŠê>²í˜*?|Ik ´š¹žÑÕ ð‰dp•FØ$/œEºâ¦æCLŠÇŒtźysDÝYšQt3hÖ0ëJÚ,/Ó¬|®ÿ2ÛKïI€­'Å»¦Ö5kúX‘?^ŸÓN¬%Pk/Te v×u¸U“wÌï‚Ù³TÁÄôBý€s‰#NsV™7kYóPœÝ1çZ˜Q˜Õe³´XõÛ¶ÎPKäú) ^¶ÎèQ"÷jN™ÛÓ-ÍÀífS /›u›«ÏïDMÞŠÔfÝ×ès‰+š©—Kœ5ðåC)³3ªL°¶tbryÝP? -¨BRTmÏ õN ÄDÊ\IFå—hdã;JpÅHkmÎqTO»ª²â™•ñîI6„èÃ1㸉2Öu%•nÁÖE4k*¸0€­'µ)ÔÞl¦Tböž6)Z^‚-£è˜áCüM0BÜ(Ϫ_(£ŸÃ$»n”g­“=µ5ÆÏˆ­e@[OV~©ÎîC©Ú:b°;Í–ÒšcùÒìQ&Cªá¢ë¤uÖ«Á£ÅPYõ4 ­Õ.¨û¸ƒ®nQÒÃXEÜcH/B…Ö(&áÌÞ f@ZCÊ•¼Ž5‡Â Pk º:Óß¦È°Ç Éî…%º˜©,W ÉŒÊ*ª_£Y˜!±9¡n¹jÍj¨òÃ/Ï—,D$OÐÛ¶e„ZçWNõùKuË?%ÙÓ>„—wÌCQßí˜×ÓzQ3Ži‹c_\Ÿú·“o>XI®&ºubò…óhÃLÿ6ä6{\Â-À'eFÀu³‰î™ƒ®Ì¸>éÜ“¾EãûÃsH³Kälöaò6à:Bu–j}A\˜!,¹#ùsò$fTµ8ÞŠM îsLgã=µ‚Sf¤-®ÅÁâE]q#Þº¯1Î2j“o½°ü³MpíŽõóê\×5åÒ¹n­kPò¤–KÆ €[k„t¤ˆm}»nW¤ÿ1YÝ0R[ÓØ>ÔÈâÐ5À§62 ÎG×ë"¶z¿úõ|ªê¯k-_PÜçiS)r£P뜼GO´«ŠtF¨uÍ¢ÌÄRB}F¨uŘõ-w1uZ×ì å#`P÷( Ö¶/ÙæXTõŽX×0ÚÕe­Ç¨ƒ#YÆ}‚a†›¦ £UR•ˆ H묃T¯º.QfØ"íܤþ?ƒÉ„¸Ïœ¦/5À¬Çi3øú"ä£ÖóX¼ WWŠ?n¤´Î¹ýrªªñœ֫ôî1AK-•f_L‡VÛr_enëÊ~_’(«Ï«Ξº…0ÃñM³Æ¦¼PÖGŽ×L4›È—d,²Âê‰$!Là¬Ç“Ö_@ýÛȘ³so¹j±wÎz&&Qч!¼±f~ £ƒT DÇʯgqöÄ^wÀ¬'|Y×>Ž¡TÊŒrσ3Ńy(Ômܳ³¼.ø*ðôr•~£ä&ÍHX,—pmˆ€É•\ôa®LYŸvà¬'ñš@>k‰`Y˜g …™Í0+&ˆ*3l«ì* ›"?8pÖr/`eW•z9pÖhBw†¹&Á`Ðڛ䬈šéÃaõ¥P”ŸMFN™Ö@› S7½“Õê{+x¸ò¸‘Õ“‡á$c|o›(îӬȅ$­µ·ëFô®Æž¹;=Iåà§²têk“ÖZB°ícVÎUÈ®“ÖZ¯Ë­l+ Ww€­¡zB¥¾“¬]Lw€­­r‚ÖÉéeRãÀZ[a¿Þq2bu@­+”|Ñåbgòa×èg2ÏOþTU-ÄIj­Õ¯aØgªýORkeAa℺*ˆw’ZC€_UõæD;GZ=ÒÐi5Ÿi‘ÂŒŒÅ«Ì6—6ºÄ/í’èYS«_‰Æ‹!!¦#ïlNÂz¸Ç«9MÞPœ„Õk;N…ÇN™Ö“Ú±Æ_däïTim”€é³¨a†ç˜¡ å¥kŸì(qŠ´žœSß[ÉO¹S= Ò.&5UÕ”œêóÉÅ?VA¶2#ÅÈÙ«ÔkQšÙîÀXϦ é¹…Œ\Hä4sn*«P+_9͹£_¶s<zãÀXWôx Í3“®_ò_múŸ§Iy¡h„Y­×Óšj'tç,¬>¤»?…]aºb[|Q]w ¬1l¦¥$ãŸ6îôcsbÈñÄò¾ Àê›@KUÂÞîXCò*mée„™Y7¿ `r¬!,‡Ú\ÆË`œkÿi¿bÁò@?›‘щ×Àh ùÍhÅ~ ©Cyó_­½mìdzU… ç ¬­bÏ£K¦sÖ*LaM5ó»S:à¸/Þ3';—àÕz$L)Oö,„¡È¸’ì­4HŽœHh.09ì’'䔨ÑÁÆÜ\ÍÙ9ÑÛkö¥°«âî;•¢æË°_'¢ä²®b×ôÛGÒD˜¡¹æÑ®øXGÂGXQÇÈÉ€jUN‹v'•uîi|ÚËA›Ü!…pëeÊrQYç"¶ÉÀqà«l œH4nÉ¯Ææš1‹;6ÚÏf¤²ÆÏÁ¡éS)6»_1 (6ž¦aƬ˜?ð2¦+3l’sµßs‡Ô˜w ¬ì ¼YW'Ê ý¾A=D":åÜ\w ¬Çßââ'¡”éÓâ.©7àÉJ…ÉW‰ô~b “±8@Ö9ÌêV$'*<×°À1] ëªwŸüÖ @ÖÓÌ:?›lsŽÂ²²¨œôÒqí…R~“_{Èd™Ê»Úµ·LqGœÊÛ)œTåÀ wYÏ¡ø¬:ò¤pÀØ‹÷aÄÊrùIi†îâè Q‡­R8 ð\0ðÇqÊâ%ka¡frÊÔ ^±8£ k›€bð‡|Cä¼1EýÏkÉžœJ„u¯y‰ l%…ï•ú¬¿LwÙYP°¶(äQ²ÊÎÊ €õ|1ç±v™¾Vª³–[A³„?Vf×ügöH†‹ZŠT# º<„Z¨[áa1, ˜CW ¦ÇŒ¢“ÊÄÇÅÊ }5"g`îqz]%kðê¹Ó®¦ÝPEV I|õxUΆ‰YBr%)á[8uh4)5æ•øêù¾HÆÉ„„²œWâ«ÞÄÄ?åD*áÕ“¥_³¦0ø xµöM¡ÉàË© ²þBe…Y@¹r!Ie­øùI`¥òSŽÉòÚb0r²W‰¸U «³CŠ^jg9kyssc0‰ŠE*™¬íi.Jdälj¹üÙys™é¦^çqX‘?3]…гØNU7dÁ±^Vz¢>eʺy¼ì~˜¯íŠüT¯Ž À`“ìµäÖ¾:ÚÓÌŒi«ø¸aQ'¸šd ¼a-sÑ‘7—Ä®J„ÕºQiÉ£•\™±Pó5¦áCN}ÓWVój'ýæÜóжY)puzYírÇý€Ds%ÿ»’ÆÚËÆ;´©(·’ÆZ'xô‘ä)@«a={¥^òÕÞTRYÉbýâÎç*®"&.†’qšµÂÁ`g‡tE6¯d±Fg1ɯ®fÞxÂzÖfR²êau+3¶ú–ÁYu.ÇB>]x¹’ã›~›¼4€°žP­\-[K–»*Ö588}—£a6!$3fb«]BŒuíÅôÜFW)lÈzr‡ ürìsÛ«ïFÕ€1ßídSªÓ±R6 FŒ°en¥QP)­|Ü\m(H±R6àd ve¾ª R±F§;”†œí•$Ö³Žl Öž^±öP“`<¾–ªVÎÁ_þò*S ÎÁªhu°+U?Z¥@ë˜zLÕVY ³¶YÚõ’EÕ`+Z›q J B4/tç2:¡ }BŒVŸ8ëI’¯VžÚÕüĽ@fN¶aj Ì¹ùØ\ãÙ?ÕKR5 ;c —î‡0k(P/¾¡dTÁ:±!)ûA=‘OCbÓhv"6iFJ@3¿n)U¯!X›óÝ#ߊSIc­k3ŒékKÌ!Xs¶#Œ"K•S°æZühAHPfœ‚ubk^RQ+V/É)XçZ"kölé퀳ž ¸²¢´EÚÙ…ÔÑY®ŽM£h@ó‚þ]ud6jô“¤pøDïj“4`­çwQC¸Rñõv+´²ðDEE XëÜç;úŸ¦i#Øz² ªXÌjªÿ¼l­œ«ó5 ]X«o܈³o™£´ k]×xž)uÚ%ÐZ.uè5¤`£@«QXîܾKeÍ Hk-å’?·¯BßÖZѤ›Ù3Ô(pe(½tYRmƒUÖDÕO‚¢h8 HëqÀì½Yrri»0iî!."ŸFé‘^Y¯—šB4V‹p?ø¹@TXѨÎj½úþ-ÙL4Öà×ò¢7Yhh~lJe}b©É¹_ŒãOy!­©˜µ91´Õ lYQÖ¼9Ñø§Á%ñ°ÒÕåÛ*ñ”‡ë¡¤VI (›39“ö‰>‡æÄqW uîaµ"” X$Æ,ï²ÆÙ¨0[¶VÙÊŒÃ}OðƒúBráFF^{DñèÛEeÝÎÚ$¾fm¾ýâ¼<ì‚Y‹_H_W-üíZƒ[ãÀ«¨º]H+E§z€NÊÈi´¨õà§ÊŒ-¾Ùš:w•ÛøZ¿æ”|®§©ª 8«Sa>ªWªZÐ.˜µ°1øänCey0k çÓ¦ö«€Y£[´ÓªU·egñ™œŸÌA~4j³Z§zTLà’»˜Ú¬Ço“'w¼¥BµY£ºM¼b6•œ7j³î]‘v ­ ­FmÖE‰ù“IêTã¬=÷%3ºB9§`­aŒqTçšS°ÎO£žbhB©¯Í)Xëf\=³<•Ù¾^’Í©ÁkV—RÀ×õñÙþ{É‹žDÖí‹$ºÄ×(p^t޳Ïd(HŒu/´™¬ò4b¬»^ü×µÔ0oT °Ê1Ú1ÏA^kT (…JË#_ò0êôý1¥W>F­r.XH ÉÀ€µwfB&'^ÆX˜MJåùnRåªc=áÙ¥©¥å[aV»rÃД0k4:n¢³ÏÔLaÆö¼~ÝôO™2»ÏFP÷8OŽ´É²ïº Èᲄسžh°ðú=Wž³Ú%»ÓBºMš°w4›[a*0kY›½*©2£èæ5ã¥-Wܽf-åBdýªd­£U–½¢¢§\+@ÖÀU‰VÏ- 0Ö˜q O Q9eƈµ527#}Pg”3°NþIÍÁãäEŒõ«ÁõË‘×!•¹!ÖÚ7¡Á-ÂŒk¨à\vÄ:CÙfq§Š}Ü/.kGšw¢^•1t2YC!,¨!v'™õ|µÆ‡¹”ìX©ÄOO•XþN2ëIͱGú£b$¬(\ô ôJ÷ØdrÞ°Žõ¥¦ðeÖc¾¯2#|v <—äT=[ª¬k^ÂÉ#ØÏÂŒj؈¯€·”òÞ¶\j6KÍöN±€s~Xs<_M]bÇq_X锎µS•õœ¯Íºœ5U`è€X£9˜B £™º3:g`5çþ¯3KeÆé¾f‹0| Rf/€êæA]SþÀX©µ]UX™Äv²Y£xrÕ|› ´º³š×`zÄjÂ×u¿*5Û¯š¯ì|î@YÏRt=ï¯dy²ÔgS8p§0k©mñ§H™]Œç«ÂuåZ²†ýuÚžHH˜aœàéP]‘¯+3Ü5çú¾„™ªTïf=5µ9¢¦–(ëìÇ ³À¦Ç+t ¬3 ¹ÿ{•[(ë´}u»œ«X]¿0kHàã8A¯‚Ô{¥#iåj›Eq;PÖÐÝå0½ÔeGâwûç9mŠ»Ó/]Öm¼wò^º¬{q,ÉIiUÎгžðuƒt8¢l¬Î6aÖrQåâ,¨`«7†$1O†fM)nv­erºÂÉŒäý œuö'ÊLÛ§ž;%Ú3,.á€-‡²uJœOªú‰™$ÔÔ)Ðä&_r©éÊÞ‰´ÞC±×3]XÑ‘ÌuÑ)»l¹èDZÏ-HÚÙŠóÓ‰´Æ–¼Dx%¡¬_S°Æ…L=ðµiml„J6[÷k Ö׉͗tÕ¸Û µF8e¨ûRàO'Ôjµ3i^[ zwB­A®¹TÇ—¶:¡VW®½WW¥ÀN¨õì-Ò×N²!wÉ%`ådY£_šÃX±CÒŽÙà|ØEp<׉ªuŠœTžìµþ’~«¨×XùE»„qA$ŽÏ6CMùÖ{ ÖÄJ²¼7¨Êz’*JDò*—äæ³B 'ÄŒ¥s%ÖZk¹f?îŸÍ.>k'**ò–"ÖÚ*¡õj¡|¢ÌèJ yøVy·qVûîÌw”“k:¡Ö0ËÓ¶«Œdµžt~ß+"Ï6¡ÖùÌ&M³i î„Zç%bãUÿJ§rÀ¼ÆëÔ¨ I3–~Û…†¹rwT¶)K|ÂCé·¨0†_2oÝåwÔzüåbç´mplíÑiwá–‚…Ú¬g)©·Qª¤Kw ­=hW·Îž´¢FM«dí)'Åv€­=Úè¶”Õê‹ü€Ý&›o…vª³ö‹Ò]CûK}mª³ž]ÂìÞžy/ ›¤ŽNwwâJUlî”gm챉ëQ¡øýRgu*¹ÌG¡WX1$9Çß:0+µü·8kpéžÌÛ6+{ýêå‰èrù¥¿¦ Ç¤(ù’t${¢Š2Ç(2¶ 8ë2J<ÏT'Ö\â¬vuëÝ©*Dƒê¬­^ì‹Ó Ì®n=ꤌ­çKžÕØb žúƒxkà`9§5dðÖ0J]ãÿ£ðºiÜ“ã6ÅW”gÁœxÚœR¼}Pž5á²}½ÉÑ´ƒò¬]s2§žB0¸úuÎ7T‰Ã¸ÔYÛà`ŒPÂ;ypµŠ|FI¸Ÿq‰³Ë™ÑLª¬¥Í`±D$“”Añ€ò%0¿LàÖ¶¨þœ[ÒjcŒö”è”1’h±ad-SûAí€cޱ ]ùãAeÖsMƒÃ3mÉ)ƒÊ¬_ì¡7èêÎýÑ)$-ˆ*d^¯ÝH冽åxñÁ)X÷,™YªTn[ëq¤Xþ¨ÿë…¼z'1©HeXëI\÷5§h¸ Y°ÖI0AoKrE Öú¹FùLI|ä³–FìíäÁÒÏjOšþªHí£¤µ—µ‘2h‘R«OaÖó[põ†B‚\ZÛ®h®_ñÕò“ÐZwCçèÉŒäx»ABk´]ÁÌ‚ú£Ì˜ûƳbŠ»?µÖ˜r5*yصÖìäl_—\À¨5dÔé­bMO Ö9ë%±å(õÛµÆ=ÆþŽ`†È§!d= ÊNò·qÞ"ó¼Y\qþseƒÁ1k*«DZOØh|ÅiÒ³rVyf^åò?¡”0ãÔškLHŒV ªAé€ÝÚæY]¥'£“°ØYê<ûË€‰Pëˆ×¼ÐE`„Z£çR8×q¡Ö³ŽœÛ’êj—vF)ˆò·¡™3VØ•YäL°A¨õ¸JÌ÷&+«PëyÚ†»«Ë߆&¬èÄ赪§A¨uÏŠØÿ¼)Ãj@­6°™vÕa3µÆ¶àTBs¹% µ†îc­¸í•«¿~ ÝÎ6ä&!ÔêÕ2CÙHZ])¦0G0}•BÖ@÷év9Ïdim1ã†OkU´HkóÍùU” {gÏ_òwžZ[Œ½([RghAÁ!ÕeVÕ¾2´žé¸[LZVG›°æ× ß/³“1« õà¬U*b»¶\i5¾>fS^¿Z½hm³U™Dh-Îq2žµ\ŽÀ¢ÐçØ&ÝaV+û’y´7~6ã¬MzRÀx2°#ÊzB¹KŒt*Ügd-_øÊ—ÕÔ÷`Ù`³ï ®ÚŽY›]ãufˆÛ¨ µEÃ6ŸV$ake_`³OÊ-½È&î<§kg1õmkÚ‰`åÓ8$­Pídz‘âÜ(ëÉZ«/“Þ(ë } •>ýåÎ §u—vaM‡º„Yg§fsíáÇ•ãŸxÉ`£)#Ĭ£³ìÒä¨ÝAFë,ƒœÿ¡µö0Ö㣚]x–lÌTgÝc‘Áºõ/ãÙ¼‡sì$2>‰±»ÚøOB«\ÿ$ÆZœ)Ç•IÕ¤ ŒõœJâ'5ݪ\<)p2Ï·VÐäh@¨©ðkŸüP|îIÑ€ÕØÐvB“­Šœ“ªó‚,Îoë*ôœT ¨Ë.±U•û™…ußm;Ù.ÇÑNÊÔâ84-º‚„ ÖÙZ¥ðò^*Ñ›€XOv™Á®Q,¯ ˆµ®é‹“L' Öº6²"ÃQߌëY`Zs¸DG&ENjrEgm¨ÄkR5`÷Bñ…sMªf^ë6Âuq‹ÊßÞÆ`nÈõÉ…dKx©×Ìô!å§&QÖ+N¶Ðs™3Öóz£°Ü‰ÉhfßÃßV‡jº›„Yc$ÕƸ*(Í f5ËâU•ÑINkûâ.~ž¶‹ü€YgÜ›ÌEGUׯ¤p@¿çåºt­ä´¶É)4O«½|õÐ6S¯ÚgQˆÅ$§µ-r³›éÇIi½­BS‡ôb´.gAµ> «0»ºÂYO:_ZÊNŽÀªåš6W¬«vR Õ©bZK•‡&õY–! Ä¥®â¼`Ö½ŽŸ`\Ah“0ëh³\nKö.N¬½5 µ~Û°*όŬceuÝ4ÔK 2¥ªÔOª³Ö`‡r!›ô«Tg 9¢‹:XupR9 ÞE+]A8k]k UæäEjîÄ,èõɪènU¨óœd<;'­òäSÂŒ”ç9¯甂…ë§Ò…—”] k ‘f³È«†ú¬¡nEfÀhÒC’ÍZ9È6uVO2k¹&TÏr­¶ÿ¥pÏÒ+SŠOÍc5&_ÇýÈë(ës²4aR¯eb1F|-·3cf­«B,²UmÆÜw±Ã,ÆQÊL›ÊÇQC|I ’Iá€sA‘¸ŸöaFZü—0u>L£Tè›]¸«˜$L*´Çw§™u?©0*y¢sWUtœ@YC—.²ÊñA ëÙ“øeY[•êç&1`mêÎzé SŸ›Z¥Îs¸mvÍmm,ŒÚ”s•'ÕY[­ì‚ƒ¦ºÙæ¥Îº¯å¡™rIØ:ÑÙÍsÖTRŒ&ÕYO–|å\‚?TgvZí"饓ê¬ç´Ñ‘œ,J$‹c°Ì(HwVJ¶N,ª³îA™š³y<»¨p~ }䪮R¶œµÅ¤F@o[7¸®Bm—Û#Eï]ÔXƒÃ ε!Ñ€ÅIX¡w {ÇTeF­pÌÔØ2®^œ„µOÊ€y Ç;¨ëwqÖç6‹ÉšÒºpÖݨ€ä² zgýÅ*ĵÔòñ—¶™Ëaª @ë èÙ„X£¯G8’Eí€ãþIyú7„Rßî£ê^žÅAX_ÐR&zEŠý¬k–svHÈ*ahm•c·|5)W¾´F—5õâMÑiqÖPMºÛ[çmg=!8›ù•"¬‹ÎZYá¯áTÔBg=‡’SçNȤrEœÕz%<»î¹0#†fE³ƒá«¬Æ¥¡çY,À¬uírÕeBavÑÐ*rŒ‹’O# ­Ro&„—¥C®Uñºµcþ¢Ú‘ÀYOÈÄšRÄB*³\—@ëɦû’…¼(Ð:Œ‹“¹hLBëüš‚–/)“EBkß÷;v½"Ï.ÉGlBYÍË!³2}òaëò¬ì- *åþëÅ“öp^Rn‘VnÏJ~]•ÃaÖÀøŽ2A\× ¬>/Æá”¹×¢n@µ+dí²Z³ñ‘jíŠt·*„¯F|$ˆ&#Ã: ¬çiÓo3—®Æ«fµë%×PIìj¼jJ¿z$ŸFcaÆ«†Ò˜®0Èå+VÏ­/Õd–p¢ZCBº‹ k‹Ăd‡Òº@Ö~õŸ‹@áLëYç¥äâø\ʺ*‰ ¦›F×…²žhÿ2“Z{ë‚YÓ#žiÄÊŠ7Ö]µŒ®Î{ƽwp)Ḩ°/(rŽ&2¯q#åš?\å§&Èzö>Åów“ÓM×=kÀc€i+õu¡¬F¸4BŶ]ÊZ62¨`ŽÈŸF'™ßQ"ÁëYg!1à¼#6ñ¿ÿÇ0úÛøë¿~þý?üõŸÿù_ÿá_ÿöÿþõŸþÒcdþëÿö_ÿöþËúç¿æÿ|ÛÿVþé/q7ü7û§¿<þ›ÿÓ_Ì~Ù4³/³paö€ÜÙ¯P4ó/3{ïy\„-ŸÇuaW?vù´ùeõ‡dðVíËêiD ;÷’†¿Š¨ÿѰîüu~~ ³ñeöô¾>Ï‹Ìøëyå$}?ÎÏjæãìËj/µ–ëóëò-¿Ä=ž§ý*ùòGÃÁò#|ì~ÅöÛ'ÿl•çÿÿ¼fK3õÛÌòqžû|[Eý>ûl–pÏï{cžß÷«/øÍð³[ì³É&~_—/úÙ.J_ØÙ§=oúk—éo–ŸýòôS}m´Àï¾6š¶ül™‡¹óX>ÔŸÏG”ð³gêo[í×ZøovŸmóTPž_¹#&z~ånò{|öÍ£rüX>„áç™­¨âØ9¹u¶ayÔËzîË… Q?³°ž›'âæ¯Ÿ ϶5³L_óy×Òû:ÃCº¶Ïöyê0_ÛÇr£OýÄÜ>–;ÝKË_Y”[ôÜ>;×瑳y,ƒb!,?ÛçóħJó¼j‘Õ×ï{àó)ÿ€ðÿfùÙ==wú3ú³<¿ä0¿ùþÏîñýyÙ¯Rï×­QÕ'©–'úãYíÁ,¾|O“ÏülŸ‡šòõÌ<—RäÂò³}ò†{ ÏÊ*ïZ?ÛçáG[U>qüz¹>wêçvÝê8öÏÆéù#ô²åçÈ€§ä¹zªÍŸÛU>3ÎÌMžËS»ú‘#/¬•äS.ûZž¡ŽÇ°t¬yIVXVŽŒwú ½,µ{Æg÷<傯@©§å¯Täß,3^N‡åÑ÷‰å.Ÿýcžîc䉜M}Ë1~ý•zõg~dîž¼”ÛÌ“,ßó³u n)¼çFFÊpåOy䓱*03·ÏÉújöü$=* ˜éuÒí<Ýgm¤¡§D ™‘òÖŸ­3Òð!µ?†KÆe3wN¬Üqö«2üov”¿Iè‹|ÕÏÆiˆu&ž9%Ð1g:–ç›ÕeB03AÏ’îÜm©M>3R¾Îv¼°VI÷‘)È3lñëWÊH`åîéDDŸ]楅t²0àuu&Wîž©oÇuyHVâ:Ÿ3²fz“ÙäÊk‹ÀÇg]·¼{Öøõy_zK_~nÈÅɽSsï” =¬µÓ×gïÌLB'vÀvì|B™'¹Éäl6/¬‚¸¼©%Ýyaefÿü}ZÊG~6N&’5ðk§JŒmg´“èŽ=ªÅ_÷•~×̰ÒÑ=¹îçr•‘Ùþlœg>÷×¹BîZeîº3ÞÙ¹²¸#ÍŠ\Ÿ¼².4 gYn×ýÙ;y®fFƒ[žŽýÙ:($Òó­œÎ¨óìrÄŸ _X—¡ùWpEXO`•˜€Æ"áwòî©é<¢.®,ÓïäÆC Ôåú‘H?¶EPä:°ÞpG Ž,ø#Í'<íeŸ¡†Ä§[Vb­'Úg]»²m€Ó—éßš,²L²@‘)IŒú¾L§È ÙRïôŸ†¨Ac=ž(µ% ñi«ùz¨$æx¢Ô$‘î$y R{"ã{õ•T©+@jK†…5™Âz‚Ô#Ygï:Dö©³º ·»5'° 8Â¥Ö[•¥5O”ÚÒ®™‘Éë‰SP‰Ä¯ë[rÉ<‘êŠj§£¤éºž`u­0ͽ¹„A<áê@ Äe‘¦¶ŸaI—¸oMˆûâ5Bx98 qW<Ö…òš÷ ã³jM»„¸ØB Ä’%{+xÛìôÆ2M\B.$éuæ(ðtÙÐ^qÃ!Vc«VþÆ}Á·ùÔ¡ƒK`Ü€†*:ðÛË2¥kºuVß´ªRº&¼ðÀ•³eçSMû‘¯üº™s÷{‘Â*®I+ÔñÛEW.¾¹<9øÒ†>\½‡å¾ëÇ "HòO…~HÖ.¼$Ö›¬4VàÜ(Ç®d)?¦Ê4:T³ Za« t‚1è˜$Ôĺ¿#¹NUv'‹1æ|æÉÑ1áî›$Š\¿0Éܬ WXšìqn·D=WTÝ%&ÖýÎfÈ É{ÝMÑ€}“,Rñº²DÐ~_¦Ðt•uÄæØIÔ„¦\²ôKþÇt3MôVJðÛŸ†´p™Ø7߿ɴs2Iú}'þ¡›žZ‚ß#KÒF®»ìWi ~Cçp®I7`_’pØ„²øÞú6üQk5‰ò·D¾ïì¾[ì­"T‚Îêï‚ý@šµ¬çµD¾oš5~« ["ß—)²¿®ÝÈÝŠvT4\ËZùF_C‡oYzïƒÜ ŒÈ³w½™ TR¡3”´ÄöGUìpii;¿*®¼K&o·›‹„ÂýÐ1ZâÞ µ›ŽOÓ_>MÊ%]å<ä ’¯×ø¾‹Ùe&Ö|_½®—%ônwEŽ;Ãõ&ðÍJ ÷ò´øHqЗ̒€ï ägÅH/(¹$)À¾˜¦gB¤U ÏÞd™¶ø¾^ˤC~ßhÔn×èýT´¬ßžÚd›WKàzV%9-ÒÞ÷îð.”7Xú¸&î]YÍË(«>s‰{ûõT€aúÖHÜ»Gsô¥U9&¨÷¾:˜ØŸ ^™èÊÚMówSvé“Á7dSPárɉk {wTA¬ô¢#<ÂÞé™*C/pÂÞyÝÌKwWi½I§ÛKâR  ÷Õ‰KY§qÔ0ÁS! âú¾™¸åКÃîH~@ÄèhAUMÏ«i zWÜ­N¢˜ƒ¡bÂúKc¥o½Q}1üVÍEjÔþ¦‹ãe¸F‚Þ÷6Ä2éÙ#½â5éu޲~‹˜ÐiMŸs Þƒdr#&êmLå“6Y-m {_=b™ºë¸7`YÇ©µÙ[âÞwi çå©ûwSÿs¦ |7 ¤ƒ ôQ‡˜ 2Þ‹È¡¿+Ißü84•'oFjN"‡”“h |ß±0 è’ß ·Íy_ S’úÝ h뀸C•ü´¶QE!Y1ÈËSÁcB›Xçö—~È÷µ‡QÊ–Á{'òý ËF‚æ’&ÔêBÃ&±v°¿/¨žU ýÂ(£0Ç9YJ;uèš8‚&J%É¿'ú}sBqÔe–Þþ¾%ا®ŽzOø;Q¼‰¨ʪDùU*ŒãÐŒÐnìC/—N¸CزoÙç”Èl78&<•ዼ5:¹ß¹¼1©Vqïà~_dž<1ùQûžÐ)®ãCfdÜ7ݲ®æ]ò‰:¸ßW‡;õôS@«FÇ•Þ_LQ’£F5bå±÷ûF¨Ë±C‘³ ëôœžèwÕ±=œ²æÙýn89 †äuH› ŽÞ.w™.wH›\ÌŠèe‚š)p±Á#ý7´M3t¤8]¶Kvà߸! SÝæÑÿ¾ÕnGËh 'þ}›â…e&Ø+vSÞU#C5×åËžø÷ÕùHYS¹À› ® ‰J—D¼žø H0z‘ß&ð›gÉb½™ÀýÆ*9ó{‚ôDÀ¿#lé)«øEØB)Ó£ü"“¢f*[D;¸ßàf¢ÓÓ«$1u àø®IÙ¤ žøL$ÏG&Û>dRÖïZzÉVO×$áy“”<öÖq[½˜¦k¢ÂNú–•˜žxC¥vÓ#Ú:0pðÚ8¬H‚eO ¼7Ä>€‹´¬}‡¾ v“£ªW%ÒSΨ!/=1ð8£# Y:âùÙÆÀ˜"ጠ°%õ_¼N.ì¦ëy1}¡ž¤ƒ5 œg5l ©ËÚÙ°ìHî%€I ¼a{+<9z™2l"Kò"Xê“» 5ÁvI”˧‚üT©†jž8éÉ”bŠêÞ—Î6ûäWýM)…ì‰Æ пA9¨×ŒYýTv?«´±¾Sš~ñëѳ,Á­ü"qÓT~Uˆ{£²Q,ëæ‡þ7¿ Õ½$Ÿiÿ h•é&oÖ‘øý[QÁ”„õ±”H ¼ša?¯¸¨$š„#F"àà‹ÇÐZ"#ño(Ó™¡×¿Iü{|Ãÿê®ùßâ' ƒIu—k”ð÷Ê'ʺÜö ®¯Án²`$ø]ÓýúEž•\#Áï‘»×; ž.ó¸‘àwO΢³¿tÊÐc$øÝó’róÝd/í€ð  žoºd <üìØ„È‹žž70 ’LI’,%ø=@ÿ¾D^h*7!Áïßåa›¬¿¿Gvð:ZL}ÈzÈHðêHVËdl@øäÒáÇYÕà÷U ¦Ö–þ­ $¥>ŒÞˆ¿/I2`å–UëíOšþ.£ÃYÏcP>¡f;ç|èH–Ê'¤…â…uh8 8d”êÜf$ø}Ó“©'¯Œ¿oz2¶„H9²’dw,“Ž*üîX¦Eùtzcf%Úæ hOÓi‚ßäŽS£±é4ƒðdØÓ1‘b£ãJè{_tœ‰Î(Ÿ|3:«Éò ¾79Ô<”úÞø8V]ÓÑá@)e#@¬KRìà•Ë$Ï+à<êxj×!^âßSÀ®î=¥øaÎ,¸ËþMAJ~‰»ŒÄ¿¿SÐì:°Lü›äCÒH4ÇgLS¾ceÈK’Ê'¿ë#iBÇ |ÒKäyíØÀ¿¯û¿U‡—‰7ùH:Fâß·+šŽ^^­NßLØQSÇDÎJºÐ$mw$þÝá%÷˜žð>€sy/ROx$þmhæM×ux™ø÷÷Ídú…`¦¤Kü{,ÄMÃÕ~yjî&v#`7éÑ<ø÷Å™á Ë“ÙïoÄ}»ô û=7Á7É^Õ‘ø÷Ý_ˆ´A#>‰; óŠ©wzÈÈHüûžC-(¹ÂÐþ&ݳX4uqÿFå‚¢o:¨Ÿ\œ :ãþýaRvú àß×ÀœYt‰_Zäø]öiĿӿ̼q^(¿è7Y¥Ð1Öcr&(à` wòe%}ýþf¼T—_u&üÝñ›ÙÓ8)Ï„p`ÉŒnBü*ýà ËÒÄ,ˆšÈÇ='…gà#û¤õ@¯ò²š €÷”(u!Uþ˜ €w8µ }Ž-³œiðLHUP_+ €§y¨{U'p0;²×-«U.¿iéí2U™†±o £L ¸äAÇà†-Õ2fBà¤nµÅÈ_?”DÖ æLërÊ$ œôfÞ8Ú4£¦Kô Gf¯x0¯±V]ï& ¸Ì|ÃÁHõ&IT8ó r”å9¡úa§F©Ìr&0ðÍÜ "ROg~ß|ª^a´§°‡ÇË2!£ƒ[C³Ó ýÄ„KöúQ¤QFÃ*(ßñ’¿à¡ë¦Ú#&^A,P Õ¤Ç $ü")ƒ\ñòÂðM$dã¦{yj"á¿ó`]ë;ÎDÂïš6øqõŸ‰„7ܯˆéÖδÎ?~×Á vÚ#&Þ'?˜/²¥}&ÞPîšhß’8 §TÝ¥7'y3‘ðû’„ —aÞŽœ™ˆéÒË$<QÏœ‰„7êxWþV¹›@¿ˆ_xªvá@Â/Z<¢Dý'ðë…á`¤^Ìxl4šJïøeJ"‰Üˆs‰£á"¯:–H$üsnæÄ9—Tù ‘Ï@SãÖa)`p~T‡Ìz'uPÐÒŽh@7æÎ„Áo¤.BfG:÷Æ´>¬ä€S<™ta½Âé˜Bð‚š¢¾Ò™ZyG§ÈÔ ]ÂàñÖ†iÕßB(É,r03\ëYN€_¢”`fHRÇ„xr¹r_^e‰n’,ŒÔ¡#Ú„ÁÉ ¿¿«~êøy™†>ç ƒßm‚¹¢MèÈ(­ãhÂàyWm橽DÂà “.È««úr üsp6ÑQt‚à=9ÕS:ŒH¼O˜âB/’Hü»Î\“ÕÓ ùoðŒ÷@š.Ù“òßIYà1%Ð4¿»Éåé;ƒ$p°›)÷,Û'&G^¦Sƒº¯k†Ð„ p…A=IQžÁáÀÁq²,8 åù¥6°¥?LAG8 Må2A…Ë„œwêÄp°„*˜uS'sùͼ•x p4pNÔuç„8z' ];%ßlBœ·2D:¦¬DN"àlÞÇSesíL¼géƒDèZºv%>’ºèÚŸº²±¯×pêñ¨ãºïžg®Jd`afÁoEK˜f,PÀ e°“òå©H͸ge;Íù'ýÔ ™ñqhüºf/.ÀÑNSá$¶tˆ 8ÚÒ'Ðh}¹.’ÀÑt¬Tk’,ÀÑ&uõåÊb×J | À43Ÿ²Kp%Þ î4±‡µÀä2TT¡MÖðWbà±{ƒp¨®õ®ÄÀï¶ ÜR§c%~ͺ¥‚Wbà3%Õ|`f¼¾#—¡¢’Ûߨ²!ÝÚJ ¼£±:뮩„ J(ßÝ‘2;Zà³ •²©?”P •7–J.ÕJ |`ªdƒ…æ>®ÄÀ4˜+ʘM–»Vbàßþ’ê°83sí‚ñ&™ LpP 1âË«>9þ{Žè½Èˆvq &s202X[‰w@T é&ÛLVbà ЉÅ”IÎJ | ghhõÓôº…1˜J…ÅËSÑ¢Bï ¨öÃ`ƒ_Â}q¿–  L˜Øà† ”а/Z‰gh¡{ß%kl¿Ú ‘éÜà™€Ûd¡À5mf ž5¯H"õ´‹!Î0cã¥ûm%~›â«J2ìž7Ž£Lìzøàü»ö [®DÀ ªUNÕ“ ÚJ|æxj’\·ï¸Ó!ÎêM&Ì \ðßûÒ½I1ŸÕÿ虼r”öL‰€œݵ&ÛØ„P²³h)›¬Vbà÷aÍ¡ÇÝ®ÄÀá¾ ‹Þçh¥ žò|yßTHâ—;Ue¹gÁÕÕÏÌ;Žü~dÚKŠ•®À¿ëô[²’¾G\Ù8f@ÇЉ7¸ýÂØË%þMzC…aI®ÙJüû{n¨¼â€£®ÁѱK»%Ê ÀñCAIÞúþým?‚þ6h*oèÖÒy dPÀ«cK™Ëúå‚8$»êÒKCÀ¿¯¢&åoMüû›i‡¶$]x%N±Æ ±ÔFX‰€“Y×'MåwMüšÇiÂ’}»oà ä÷þbšŽÉᘞkFÇ‚ uòàÓ´ÞîJ¼ƒË½4-B‚Ž´jÑÁè,%pj‰~?[’ó» ŽíßAòY:­ l³Îí/àdPÀ…ê×w•2(è’]À¨´žÚJ üÊï1¶°ê{Zà·»I's‰ß¦pá²"¸@G–ÒÑÝ¢ƒ,È \Áø®²T°§ ÷5SR–õ0ðoÆ“.}©ƒŽVÁÅ!˜²÷b%~‡ýH—eEeq&0pÌ)Xr^âJ ü’Þ½Éb×J Ü¿Z:qMœG½s:‚Îï7|éýÕd%r¿ö0Œ¤ÛìÁ/g PÏ#ÙA©@P Wy«ïÁo-–IâqZàßuH/±gÇÇ.€Þ¥—Ø ‚ÿN›y$vÜqÓ–¼¯ øMɳN†—J(ÌÉèmYîÚ ‚׋”G¢ráû;9p„ÒñÜ ‚£Ëp³f%ÑŒ­äÀµoÚÁøƒö¸%íqƒþ^©KáÎqhÇÑÌŒ -ê,‘ô.3ü ø÷-rÿN›û…¾A'^\AëÔl€àðav-³!Ž®%TÛÞ ‚÷ „`©dÜlˆ¡\Δ:´rû'Þ!¾q]m «íÁÄ'ÊÓ[†—b($X°Æ¬ÝZ‚à¤CµŒ%^èP;Að‘á¥c¬ŽëþÜ "8ÕoyçHæú¨}çö—ñðü»EY)Þпؔœ–[zàiê…Û_Â>»¢¤’õ® è}ÈZÁœ‡ŽÃÃeÜ´‚W–ðq$ir'~™nD½Â¹›ò…Ý*»l*Û ƒÔª{yd¿ ƒ“N‚–€ôœ]5À²·ŒÂ7'b"ö‡:ÃÖ~1ÉÞEÄ–D’(Ô´ç ë-Ñ…ó¼¢*®LÂàw¶¿L¸7ˆàŒ›ÀÛÞ€ÁAÁ…ú‘Oíý¿çíæ%©çíî„Ágb0>²Ù5Ñm' >3¨õ™-®Å~wÂàÔ„¼$uÚ=p¬ðdx)I};qðo5‘µ[ƒ$ÊÅbÁ ˢʆ$ …RQiùÙà‚_q¸3²@· ¯è¾ +»èŒ\ðË­!”–YóN(|äQ÷ÆnoÉßÀÂ1Ôx’F®Ý$Q.ñPRŒäý I8&ÈšM*éïÄÂ(F­]);±ð ‰ø‰rS‚¼XøÕµŠ[]²Xvbá üdÅK6%l ÅœŒÂ±›$¿ Ÿõ;p5k~éN,|dðãÕá.áÖ I4ä@'ø¼°6Í(|’‚St²6ø7Cy4Û~Có'X,E"ðs1/* Ÿ* $QP»|ªÞM‰…wPÇ õŸ%R»ÁGÚ0èÖd·Ô†$8TaÇ%(+¿kbáM­§E'+‰…Çu+ªJ,ü¾_s#.I9Þ‰…7#AË!n`áðÃPÄ÷&kW’( ÓŽlxõ¢o:òÁAXcw£T¢Ø”ÇnâÖ øà—þ3^X_W˜‹Éò6°µ¢Á@H‚óã€ÄUtìOIpzH‘´Àμð·Â7iäX8g‹€:¦¹ï|pÖÐçºuiS…œcÄM²Ø¶ ïh=Ý$‹ËJ¢ám€¼Ëh Fc‚Ȇd­kÂ(\£ öŽ-šŸ€Í³lrKYIDüfÏãüHõ™pýˉhõÒ'ÞJbâp4{ù¼³Äÿ­€~õŒã÷ÊpüØ&ŽIY¡ÌŸ­ÞW ‹'n»^¾oââ )Ôv\×'­€9ôÉæ‰ä&sG° )°‰>“ Ýg¾vɹ _˜/ÖJT¬`T&l;Ê`]ÆÇ6÷0ŽI9_Y‘úLÀ-9ðáëÁ•<ïc‹ lB•ÄF+‰<·cæBñ9ŽD· ίVRµ©”«qgA²c¬$DŽKŒyÈ”0·LÌÜp9ˆëûËñMŒS<¼á·WÎmUq[É0Î †f²?ÇH‹XI˜¼R}d-b|l!JWú©É"ÆG)¹¤PïF¡§¤ÊN+ ‹_£lØh¡× êá*šÎ-©B +‰•ßíBßèÅ,_$)äZ‘Ò Ðòw…tÆdíå3K½¤öù“ã¹CÂoV8?“Œ~\e2úLã-×”—{ܬ´ZIļ!U5ôàh%ðc»Û¸~›9—$† ÍÜ =ýÄ @st‡ üº;ÜJ¢æ ¡J‚a2­±öøu-ÐV»Ø†}…ýÌs$³+ œßÍù´( •DÎ1`Ï&*=aÏ  óÍÚö†,×ZIì|À?sOñÏ ûŠDå¼B5»ÔJ¢ç-Zï]N–ÿ Œç~¶ÕÆJuÙÇùQ.ü5àçM&*+ ‘#¨k*¥Û‚?#;ÿ ¥·ê’<ðÏ[RŠî9EÀh§„í­$‚ÎÊ4õ_*#Ç6½(ÖûX/·`bè7w_ø½þL|n#ô°eðÅŠ*‹(:3}òF¿+$t/'?qôod€~´æ¤é¸}‘ ö—“$=©¦îîè²õédøu‘tûKT—XzRrW6 ø|‰q «Â6Tìªñk$–NÒ?ILÇd yýX½©¦_ýü¹úK4ý¶í%»I8}`ÐIGQ·ñ}•T~ý ÷Qa”d+ÐÁ„›Ê_œF"ê$®‰ßû²C`åšE2å L×ç’ã/Žóo4šåD +ß0ÌáØ]>£¿žµb﬿TVÀ©Y•¶z?'°ÞˆSóÉ"ýg2[ùI“ýå“’@r;2_M4üLX‹wƘ– ÉY—œz+ šÃv‘÷r]¨Ô;Ân­õi%áõ‘|q‡N¨»¤Ö|¦€ýÁ–¢z_%À>!91 ˆ ­$ÂŽVÆÔHûº„Ø/ép\¾Z:Ü 0ö«rNv¥Þ ²ßcÃi«÷óî¿Û¶?k›þŠŠ¬$ËfÆc‹à -H#ý%`H }ä~vFï/ivt ˜ûÐÍ„­%Ò~ËÕ±¨,¿¯i¿¤ð$¥ÎŒó7Ánk´•çÈ ¿òm!\~_õpLAjäñ6°€.9! 9§úÓxY~^ á «Ùç ¢z?tJf‰´WÈÉ^<ÙŽi¦DXªFÚ H;z*|NÕpŒA†å²e?ÃËs!„ˆÁ·½|£DÚïi€6$_Á,‘ö[ .÷䔄@3 í ‹vCŸ²¹æ3¾°\²„6@áÕ²„f†*3á|#×ÔX¾­Ñ Çf@ÚÓçxEKs•Ì›óyËo¶Höõ„z3pÑ‘¦TÊ…èxÒ Èò¥VÇ“¨ýR—åï•÷‚%ÔNcæ z^ügˆgù¡/H—,¡ö›ô‰çê˜Ðj¿!~ìI ãtY@Óž”úÖP¬j‡†@•—гaH' ót9c°DÚo„Ÿmuú•!ÍrQUÁ­•‚™Ÿ¡§å1¶Y"íÐMó‚t°JµguBz|%= Ù Ìt\F,Ͻ| Ôo@ëâ…"*Ž­ŸPu`f˜ÖÙ‘êªBKœýfÿ³oFï*j´Ð–:ÂúBÎ~õ:`G¾f‰³ü^(?x•E3àì—€¾d(šg¿lÿ\“ÅÂ,¿°T(p¤Q/KœÝ2Ù÷¦ؗ€8û…CªEÓ $õKbƒÆ½ b-pÎ%›Ñ½ÉvD3ÐÔ!œ2àØ‡.ë["íá0P´·wNú$(T»ž}lÁ¸ЇK_O|6ƒl9å­qö›N~ ºåL~mõÞH¤}$#Î._ݽvl3¸B½y`§äð™q‚'©5¨i ÀiŸ˜‡<À'/ç3h/nLvª¶N>÷e­@>¦–#~ï ® ¬=ŸŠ §É†u3L÷ñ¢ÃÁê‰#Ÿq†%gÕ>› +¥â>óÓŸÍÌR5Ò9Ùh†Ÿ å4T$ÇK:Ç Ÿ8D @49)Â,‘vs|]T»ÚÛïMge ê@¬yq‰´0Ú;Þ¹¿ š@Úá4:N‘nzÿ —ýe7÷ T~#‡À Jó¡žhm¤}\+=²êSæý!¨›:@r íØ“˜‡ízö±ÍàŠâ@ž_ˆ€^~ÚQбÍi¿ä(/¢Ü“ŽŸqŠAÎËsÓ[1àG2¨çi›—-ÖY#“¤Ý°'yqk¤Îi¿Î>;/ås“d/j¿¼sýÍÝrZ·ü3å°üÂÓF°ÑuÅÙio$=/¾³>G‰´ß°iH/¿wþöÎ@&_¸åžHû€n ¤-½ëJ·Ãi‡ŽøKoˆ'ÒÞIÆås5SÅÁiÏ7FÚ5 ꉳÏ·tÈêøÔpŒ'Î~Û¢Îýâ%¡}~ÅeðVÔtPÚ/" b:Mt¨Ÿsì@Ü®aM‡ò N>¦Ÿ{—=âÇvýþ\ì M/uàì˜mÜÑ5Ôu½Êg¿I„°Õõf‡ú nnG=²Kù óê¿?Šú:ªsRÚ1 ót¾œ¢ÚgNŸvR€§N”öï8jšòì ´Æ¡®0_œ3tЯËKõâ$¡ƒ`ÃÔ½_0ÚÉ{DŠÒu0éPùNÅôåâÒ~ѨY©·F"íß–Œ5뉴ߔHè@Ôi¿d¸uJæ˜ Êµâ|·—@Z0ØÎ•4¤—€šè¤O€¡ÑTO¤}"¨@c´vü±Ý¿¯3úu5"ꉴC^å*ƒ9sÇHû·ðú÷&Òþ-åCÓ&H;éØÏº¼î‰´O”×'é©:åöDÚïÊö•.s{"í_’9_\¬ì3þ ã*9øygPÔ¦¦™98íW5{C£‹žHûm‹³ +)žHûÕɆª„žpažH{½Z×YÁÑg!‘öžªWÛ»kžHûüÔˆëÊ 'Ò>áÛGçsõY€<ÌeK@FïçDÚ'`¯ÉäWW4|Ìßm‘X½ÜGû þê‘^~ïþÝk¥)—¤gŸ4àñN&Ò~Ûâ,¼„“ µ_JGx®n~wÐÚ"kÞ¨ÞWÐLG¥ŒÔ)=§àØv±ÎºÂî¿«¦_w™®°;‘ö<¿÷¾žU`žHû-Œ H H˜Ïoü¾ïËYH¤ý»wž/ëœHû=ókýYÛßý(µó%6K¨½ >>V÷”9 vöXœý—o”P;;«;b`=àÒ<¡ö[D"/1 vÄí ÕÌ©«äžPû·=e/q$Ôç@ßÞõ¨JsÐÚqŽ(Œ°^bÂm¿Û²Nû:ÐÚ/!ª ¾¼3`öî5¼³^gÐÚ±'É€Z/1hí×~îÖãg>ƒß¶4Á¶|F…}iš¨CKý›bÊÔôEO°}¦ÜŸOjEiªgM°é¯w#(*oM°}"öž< :&¬ ¶_`,Då^ÀØš`û­}ôžºâ\l'4-GŸ­ µ Q¼ü^ì+¬3óPÍ›¬ ¶O0Ü0Ä×Û;¯ßŸ‹ï«cÂZ~‡¯X¤“º\V1\”*Ƹ]ïI«óõM]­®ÛÁ6¹ò#ÖÛ¯üJSÓ´ö+ïÆïÕyw­1¯ŽE«}s²àõò{s_1—${JÄÕ·“Æó«cš`û÷,ýÜÛÉiy·ô“`û`~DÈ\ïgÈ0VA V»+°ÚÍÉÇê­á¿…íœZñ¶WÇ5Ý)†„š Sm¿®ng¨¢ß¹âÄõ‹úízqWAH8^½ˆHÔDÛï1× _ž›DQÐ> µ³¤Ì©U€í@ '"†¥Ë·µeÀR!ƒ}‹TêoÞŠ’»zL™UŽÍ“À†á¥¹€µîßmñ‰4±&Ú>ÑXBbÎÒÈWM´ý¾õ럵EBÁü¾šÏW¶_ÏEäýmm7}Zš´UmŸðì %ØWÛ¤È ¤‹®üÖÛé$ç¢íËRa[Q鶺îT¶_¶ôúç&Øþ9÷Ã3L#“5‘öÏ®˜˜¹Ô^üEÂì‰Z¡/Ëô¬à0jùuè)¤ª4¯­&È~K^ US¥k‚쟧NÈéëIñŸáî… NŒ‹®ùÔÄ×w>òÔè9V[OŽÇ"Ø_¢ìDÖ3(AÞ·5Ì\VÏkÅ‹ý%¦žéÓΰÀ´*±ÕDÔoÔU€—(7uO$a§âà~ñH‰§gZ=S‰Ç¦¦ V(ÄüöL÷7ÓñëuÃzû¢‰¥ÄÆ»¡¾äP[Ïã)§g\šb®Èç  8ÁúÝ~§¶Ž†|Ý ^!sÙ²É\ÿÚDÒï!B=®Fâ*×A1,@[Ê‹ó…@LÞ­sç–°B&C§¬Ô5³‚±Ø‚)„ª˜>ŠéÜh‚zä_¤-¸zÀÃŒ³¡ùÁ5atË2öÂ÷™/Žâ0ë-L/2Ý2RDçÈDÅÏèTi›Z ІÁÁµª{…ê:$ñ +—ðÚ0Ó9Û¦¡ìšº¥#ßd}¯‰ [¦+‰Ö´î@M½Ârã뼬pº¨,­ ó·™Ýšèy;†©lÖ´^AMð<³ŽUi©¿*4×ñºµ^BŒÅpF쥯&pn Žr ty¹Ÿ7ÿŽï2^ðÔ“Ú‡Dçi‘—¦ ä gk/-ÇZ0¿`´—žÿš ¹c–%©Èš.zÕÍ2o#÷R;ã†zæ;³º­-!ó¼g'âè—nƒL÷WbÞ[Ú-áòü6=)ÿ|7iÚ~^`ÓqtK´Ü!:W2 ¶Éô–hy½¼ä%ë¦+¡-Ñò,’/ð®ÊÛ¯Eü„®{è6¾ÜÏ #HqÉVLV~Ñ6hÀÊórߢ®gXXK¨ÜZ\O• %R~;ÀLþ6 !Å´2©U“®XélÍB§ðË÷NžÎ˜ýo:¼m ¤çÙéü¥/¯›»‰Gýs¶f§4 äùebiˆ»aþhnB>MÇ Lô|$°Ó¡é] Ðøµpl^< q²`Ù6£¿ ñ [£Êª>5œ?Ê9Hw4(Ñ‚¤CãÓ-aqßz‹¥)`ñoDÞ^öÒï°8Ù,¦Ñ…–°ø=„ˆc ´WKXÜ0]ªfµåøFým·T{á$hÓp^«ˆÃ3ªÅ­S4G¹%(~¯µ†õ!€ªúÕÚÈtÊß÷üº;îýâÕ¿ÚV Þ^‰ÄÄ3ßÇ•S^.IâŸUZ“>Foã„Ão™o8p¶„ÃoQåŒÄMý[Âá g¶ÀR¿1D^®™"é(¦¦e4ˆ¼|;Òóå3Ïðg2&~±ì¿XÎÔÿx7L੦%3·†{.OëÂAÙÀ‰‚{Ö ¡®¤çjZƒ„ºÂÁô *ÛÄÀ °%;[íe,Gƒ„zj ÚD®þR¬o@¯â5B/7;°ð̯P-è/î…Â.Kãûj‘8¸rBÙZƒ0 òéé#’t²_Âh§g´åL·_^6á¦|ÙlܺŽÚ ›žM (Þ:ÿl ˜çËfoæ~‰ 1x4?ITôâ| ¿^–éýËÛ~ƒ2å®/o¿4÷Ðoi†œn-¡pËËm±Î ÷P"áùº3w¼­—Ð@øú=¬ìºšßψt+]=lÀÁ‘=r¾‰†âå¿Ý2n/·LÂàtË¿L®j ”“°Ûm÷–0ø7²ðörÓP&=“1 í% <±"8Lãx 8V‚kš~×@%GR&›½\od’çŽ@töf™×rJ/è%JüûÖ<8õ²…€c<)ºfÚ€Ãÿbºö ß¾%ümYÉY¹•öKx†™£ vòÛØ +«þNªÑÊÐÃ^”"ZÂß·%$ø4!³%þ!ðÚHí_ aª°Lø¢‰Þþ6€î*m]ÿi9šÁç‰ûyªÆuÛF—»Å®òò[7 î(ûKÌü;ŠvöP˜Ll 3G!ÓëÏ„@i›Ž)Cà¬WmMto‰~[ƻ೾\s CUq¢3ýET±%ú¢Ó»`ê­ŸÐ7Ù2þ^Ø2tñlvaL®nô`è¢1Ã웦¹ _FTô¿—†šÆÛ ç‡8~Éu%¥'öÝóR¾‹z3õľáI!¥h]ç=¡oKHl'¶º51¯'ôíqeÒLŸ)YÒ6=SǹÉjˆ®‘uûc·ïk@·'îýÍf{Q0î |[ÇÁÁnÒ1LjQ ß*ø©z‘ö¶Lw¤¥o›n€–€$ Ó-Ú½ô¾-¿ëΠt릒Žé¢ynÞWg =oOýgí— –®©öR¦FôÞî^þ°Â=χ -míßõ3’îkOèŸë¿ƒ•üµ/­¿YøDͲèÕÁ Ç=vßËàŠyókâ9°²—]Üd&4‚N×ýâ=!q½ÃQz´ëÐ\ÉzÃG‡ð9ð/.pñD½¬mÐlà`œ\e䨗y 6‡[eÅBpzBã_!ä]T`f/éO‚ã†Âäæ¿Üó ÛF R£¿\à‰§ ßG˜úù½/N9`nG¡ðE{¬'BÞ`4ÀuM>:ÕÍ!qŒPy¿¼3ÔÍ1âÒ™ñiˆ¼CÝ⻚xב#°1Øvݧޡn^q ò—ž0¹aÊGGi½=7kwŽï‹·½E‰”7ŒõkH›îLê%JÛ‰çêo”hy–Óß¿õ2öÄÊ+pšŽøÒØ–7zì*y÷DË{ÔÎ^‚×xÁ  ¸òe9ÑDóÂë˱-.cëæ´< &ÿÛÛ"@ÿX²Àÿ’+GÍf Ï´hîiO°¼:Âs‚ÏšÐ.'o‰uÍ[ê@Ë“ÊóÑ>{"VÝpÝ—ãòóÁKW/ðr$å ä¿%nÀËÓ¿m©ÞÐņᴿ §ë ‹ƒikP€.c÷ðÑ âó®{•:$Í¿dÕ{ ÃCÁ£& ½4<Ê77 áü4ÏFïà‡uÍ œ÷¬8"Œg’´ÍMEb~á-"¿Ñt޹Z)ý‹‚Ö(pS¹7*’Š¡äì<™S8õU{›è|"éÃU­á´Ú8†.aS¯#7äàäPöfáèjuáÚ8†.9» t8€Ÿ#‰âª:³‰ŸW [宦kV#ô;¼HÛ—I©#!ô‹¿’)˜î¯‰ sÖ8è³ö¢À>€ g¥,ã¢[¼¸ãä„fµ@ÃRæßJÆ¿l ¨Œ}¢!M³úG"è~å#D/ôA§-Zçê‹—Jý† °)4…p$„ŽNÁÏ4ÞçºÖµÁ‘¡ˆþ PÕ±ýH L5 #‰ ·¯@²5ä?@¿»qð[5Åh@Æ•6ù^~(èãàh‚¢_´Èõ¨ØP\`òu‡ú}<©c(O}ÙÇ Ÿ³g#·ñK{ÖHôüêöHË‹‹x~ýT´ êÐo<ÇOM½œgfª4MXêBàðXÝÛ8êüÝ }ÍÄ øÁ ÀËÏÍ;/U èž±¶Ê6±óË¥’á¬n‚çò ôOúÇ6ì'`yx4j1:w"-Œ¡^vEBç­ºþɧöß,¡îðòKÑeNR5¨!ºÂ= ¤r‰ð£H—Fâæ–+¼›¿Œ& ›ß=ìÑÕMØü–«¡ö‹>ðRáO²Å3‡SÚf®Çm±hÜ|$nÞ¡TUÀ3­/[ Ð96 °Egl£#„Ê{ºÅö"5;¯•©m~^×xòHôÜó~ß(Ì÷·_›dòŒ„>*ªÏc_n çÉýù¨·~=Wï*0Ê>€¹l/³ †ƒBo°Ÿ¿œÀçà]Ø ¬«?às4Ópí%IøüNæq¼\¸ Ÿ7äsÑ^j°ð9 A`”½ €Û*׊òßUƒK#ásŒ:0p}u0>ç€Þ ‘«·»>ásÔ% 'ß^æ„„ÏmNîHÈukÐHøœù­Ã¶ë’‘ð¹m¾3ö¤IGÂç~q ké}¥–’ »&ŒŒ„Ï[ý,ýñ¾}£”–N}‹©úÙÏo¶™ôqŽæu =ñg$|îì¤BÂø¢61 ¶2yöÿ$÷o@§ŸDzì/ Qè eFȬÛËH‰AµÆ9¨þGXØW(™9/¶¸q§PqB FbèÎH÷Ñ˪M¼Ž¶yIý0i®¡¬Ú´Õ€dy’¸mco¼°UTW~? ö2•tp>hV¾Û59Vÿ^(¯Œ\ç ®eÓeÕ‘Hzˈð“b}—/ïÜþø R{ñ±‰¥÷ €m±õrwLÇ7båÀ_` ¨¯\¶ˆ7^`¨¯\ 7d÷/çˆtÚVØÊužP_©È“‹a/C£g‚é´mxç¥Ù.3Áô?‰Ñ6µÏ™ ¦·Ä‹ òîO=^Ú¢÷w(Âçª}Θ"$>t7ÐL0ÝQr¯×œ]yö'EX¨ÆÂŸÜ“\tÆfô9úN™ÄÓ aâîÖ±÷± ©+\˜‰§{c¼A~·þ½‰§70„fv"ÙÔý3ñt‡@CG'óÖ„³ <ýÛê/¿D*÷aÜ—ë˜aBŒt›Tò…ü5ÁJÏv£<çKÖ=T¿|àm×9Î/ñó€þÀÐÕÙ Xù‘3n×ò•Ó¿‰Û+ž«ßÙ¿¹QÓ´— fúdîŒ{P·`Í„Õ[Ʊ‘/TE#Àê,þa_ÙÛZA„4y¾'Ì„ÖrœÄнù3¡uúº‚½Q5e&º^Aú„äÈ34\Ù‚œŽrÇ$¸Žs&Ùé8ƒUò¢2¯'‹Ò8G¹¼øgì)±²©W¥û¢f"ì•¥¨ôŒ—m•û÷W÷ËÏMêË¥üŸ?·kÊÍÄžlüÏÐ…¯ãûò‰Ð+Ц{pk_nh´@þº¹u½s‚zEE¶ÿ¢1ÁOO÷g}yc@ìÈ6kè/{ütÄÝáz¹dïè…¨˜½(xOðÓQ?Yl£yñ‘ÚóÜo\ùå%=ý≣j©[ïgâì÷Ïðür5„ì@qÑJù2Åq&Ðîɒݯ¬nâìß몾<Öÿ¸Tâg}¹ñgGÝÿbfT ÍÄÙ©œÂƽ¡Ör5 /z[©ÜS ,‡—òý„d ô;ñ}tÉh&ÊþíK‰wdÿ½îYtÙ&Æ-µ ^Ó‹°ÈØP¿¥ µ´E%œO°Ÿ_˜ “Ò-¬ãªÙnÁF®8{/S`fBì$  ™¬iu’ žåp^Aº‡``‡S6ŠÉ¾8Gì—t.«—D üt¼2%°4l_¶WÙdøò&n>¬r¶2¿Q3&ðu¼2H£ö>&¼þ5¥þù@|ª^dÓçW¼"&eÌÁkÏÿM:z&¸ž¥À=¹+^>v˜>lÆÔÍÌ2æH±a[­(8­£{ÀG4ÍÄŸ ­7¤oèóª;KfBëp1Æuø‹XÈLhÓ×8¦Á^î.¹|W×~¹æ¬'}`£'ù-yK`}æ¯õÝÆ¶é°þ;kÁìÍöWÅG81-õ‘'?Š¢÷#Ä\àá )㋸դœ Hæ(‹¹æ΄Õ;î^ô/ã¦fÂêNø¤ãu)o&¬þ]ÉÅ^âݼ/C(Äj¾ÜLP`/'õ—° z>Ö0¯ñ¡‚K[ó×6p!_Ø›3Aõ[¬Ôš£1T¯^ÑÉÒ©Û*¨àÓ½ñ@õ«÷Àšö®«`W!à%“Rw¬Õ{Þ~'‡ÁnÖÅ‹…9 …Ev ȹªÓ/ø" °ªC´hº ¶ÀQÿ¦óÕt÷ÂJP½"Á†.î£?'mRá$=Kû×’z 쬮ïGýâï 7×+1u&«5kq^u°°S©éè‰qÇ/`êÐ#p´JU,,è¼@ÀÄQ?|¼¶S'IqèÖæ•˜:4¬tD :…[Ðz)Àó@±ÒÞj%¤ÎÒ² /º¬µ©£LëKó²Ì ©\*Mê™Ó$mWQ°e</,0Õ¿òíe;ƒ©Nm0÷\—WBêÍ ÁK¾x+@ê—šºŒßÖ””Ó€õ¾”Ó õë¹ì"×Û„uäèý¢Ii[Ö¡ŒSü C.êã&ƒ"ì‹ÊJHý¾}áaµÄÆJHýºÉPÂoºbSÇ4ÀŸM——Vbê·mù³¶èÿÃÍÑ ÍqAò…lRÊêœj¶~Ùb?ë¬w%¨^mx¥¯Óg´u\e±óÖ]ó  úuöA+Ñ9ójØW¿S3ýåLXýÎ3@ ÑQìJX½ƒÈælëö²•°zgÔŽÒãÖX×âÐ|îÈüÆ«†@pu”µ*i»º·Ú7Q;«—«;qõ‰M:â_ÀÕ/A ~#ý{¬_‘7ö³î¸_Ö!¾î˜2õ¶¯X¿(¿ÈºVÌX ¬ßtCÞ úQ­‡8 /wJBë ðÞlÍ^²£„Ö; j0k/SÖW‚ësš”Ð×wFÔN‰*ìçÿŒñ (áW¨š¼ 9\T€!Ít4Íö_‰¯wÔxq/ØËŒç•øzÆàôuº”·_ïè 74¹ ](Z˜Š!áâ•;º¯|g}ŽaoèGïÀ»¦ý- ì—,h»/Yw"ì·-ÎàK< `HØ¡)ƒ ;ä+*ʼóÅo@&i¡à繚관±#6ÛØ/Ú vdìŽrÄx‰Ûeÿ–šù²'²_­áغr³ Ã¸ÅÚ®;}ÖD:ˆ{-ý%§Î=g“¶®ƒ¬ÄÙ+ʦBY/³Ì(ì(0WꆾìÄÙ‰:eæ^ò£Ú4`:Òî¥Æ…¡@Ü:î…ªëŸkf ¬‚GÓ4vРx ®Õµ_ao ¼¶4oakÿFŸõEkd%Ö>ÐäW1Õ饸½@aGì=0‰s¼ìIPØs?{ÍøÊÇKN¬ÔLL ~imZ‰µÏTtñûè…2¸ Ê ãìo]8Z‰¶7Ð&îîùf›û moœ ^^î²DÛo6P‡^î¢í¿«]½´‘, íÀ‚:⺡÷ó&Ú[Ô—VÉÛ@Û¹V_÷B5Þ@Û¯ó þ‚¦„nŒýŽNªãœ ;”Ð:)¿ºP½1GôâÐaohLf'ÚÞpÿðD^âœhû}ŽêúÞ…ý¢ì“*÷Õ…‚%Ãõb›hû=Ø ´ûùb›µÁ¤ÀžÝ”9]Ñ~cC9{Ç;ï—ý ¸=Ï‚¼½sR3ŒE¼N_ÀíØWK¤æunC|E…=ê·éý ;ü#n‹î„ÛÎï¼S^~oî+âÀ¾¦nÙ¤°+ O߃Û·Ó¾¢±¾ ;~oVðÒú²·CƒjÙ/¾.ñö‘¹¤WhÏU-±Aa¿âIøI]>ÚІá;'qÃ_Ú 7(ìð±Üš¡«¿Û‘W¹ÈŽúì;öä ŒX~.ðvà %¾©ãØxûÌ*¬Séhé{“ÂN}2Ä*/¾vÈRWèÏU̓ØÀÛ9‡Šò:‡Ýä°Sù¯Î5vâí}Á·#~9·o¯ÀZõö‹N¼½¢N7QO™ºÍoo'g?sI7íÄÛ¿«ymÝŠ¹·³ÅjŠ[—Cwâí7¿:×yèr÷ƨѬMx…ŽiàÒ6ñv´¢uüM@e'Þ~·Úæ;·—{x;üÕädm]óÚÀÛéëÒ_ùK»ÀN¼}&Æè#ï_“Ù‰·“i6Ó?¿1Í6ðö…³Ïée?Ch-‚Â-Eëvâí#ë8LÆ_¸f»Ã_ ýù'ÞÞЦ;€3]#؉·7äì>vhâñ•=õ27B³ú²%!CÞ>`³ª©f;áöïØ÷UÃüH/ñr\¡Z!7_â……\’>ikZÒg'ÖÞM.¶5êÚþN¬ý[Ù³!C.ØË/\¤X{Cí¨QÝTwýl`íàª4NÔ~ÉkoŒ3×÷ñ’G’×Né>÷Åö7y+¯ýEÞj'Ö~O<Às5gdk§-øD/“6˜í”åAþÚ^°:h¯#Ÿò"½²‰µãÙ{ú‚]k‡­_ZÔïõ¹੆Úo“=¯^k¿Ûóq+HNÁ±…È#n0ê› D½k¿ØÚ8G’­í…Ìvr¾°V2Þÿ™ž¼™8nîÉ%cv/ûŠSe°Ÿ%þä%±ö›aN©(å'½k'åÜœ&k¿^k¿%ªpd0é…òëxgN³‘ó¼€ÚŽ©2†èªÉ{Á Æ—VÔ®¡×zo$Ö~Ï!ÀÞ8`íxçÎVyY£ó’Xû=E1ƒŒ&?š4ÏAÝÏí2šô’Xû¥à%±öŽ>΀Ü2®ó¬ýªï‘¿üòÎ_}ÃÍé/{XûÅ»„¯“œ/õ›ø ¾NÆu^k¯ˆEY‡qÙIç%±ö™@ ÷å^H¬ýæOáüÊ8Ö ¸íü¾s™K>3þ`;È‘‘œÍ"þì+ô<¡-MOuó¬ýnŽÖ!ò’XûÅe¿±”õn;jƒµÑVï+Ì4ý˜Î¼Ü%ÂÿY>oü`¢^ån¿ýZ®ÔK¤Bf;»´Àè“0®0ÛQaˆ¼·ì.ñf;#B6;ʌΠ˜í…^· „½€Ù~±˜ðu%ì…Ìv* Jþâ­0ÚÑÆÆÉ×jÇ6w˜À’&[vy¿¡ “Ç–Tpñ¨=£:G·Å¹ ô鳑èF„´%«Ö ˜í¨¢ÖÂo¤¿/ÄÙÙÇvë–hŽ—„Ú+›hÉT‘Bç^jÿ.³Z/]Bí#+G^*ƒ/Ùobí#ý†C¥Êý%³‚8;úº;²ýýÅ&Ö^ÑéeZkÀ °öôV­kDÕ ˜íWd†ªì–òqöoº´ô,×Ϲ_3+ bJÄÍ ™íd›€©"«ä^€µã,,2ú^"~Î6…':¼†d0[!¢=^2«Ûë·ƒÚô;“Ù«·/Ñs¢í£ Ù­^_Þyý– V }Y«Uÿ½`P¼dÁ9BG¹k¦™0ÛY‡oRÝÄËü¾dzï)Ñö†388±ðí¿É)¦ùòÜÜW`ÆND“ã%VŠ PïKÍï%VÁ˜ÓM”(áK4 qö QÅýûr§@EæQi-rà…Ìöß»4ÿ!H}Ù^Œ/<÷%fH´Ý`Ûô—ó ™k@ª²2á…âì¿ `¼¨5zÚŽwRRd%Æ “NNBÊ«F ,ÑöwžPî®’fæZ;‚i…­¡gƒ2{Ã"ª²¼ç¨ýJ×QÒv7@íp° —›¦—»%ÔþýT¹© Êì¿ÓéŸñCÒJ¾LˆSZÀÐ-vË& ï)`áº9Ä-ö €c«ÎÎÐ+•@û=ˤ+Yíwã.È‹R‹óØfÁ9w•£YÑ«$N¹%Ð^ÝÂ]82íW ʯûòܼ†â*/ÇÞp"Ë+Áõh±c›»*wó¹èóU}%Xí#Ó÷IðI_í8$VY€uK ½'=æã­ýã{¥-tÙÑÜ…!ÔC‡æ­`KIƒ1–@û¥«'›»%Ð~+Jãé"ª%Ð>A¦ŸÜ™:L1G*˜âÛ ëZ‡Þ ¤öëÁ³¿œ_è²Oœ¼sÓi•%ÐÞÔar£éÑnÐÕïpÌÐEEK ½#ìÞø¾.g›¸%Ð>²IÃï‹ßH ý»0e낳Ô~ÍÛÁ7z[+„V¿7xè!ãn µ_ó¯Aˆ¹}'µ÷,†È‹"+c£²dÓ» ÄíhJAÃÛŸL¨½â>šÐoÔÒžn€Ú‘m6›¾9¶iϵj9Ê».iXBíñãg9±Ã-¡vB„™V{vK¨Õ 4uhØÀjçvº¨G»q *~.úњ䶺ACæÒbÂvÖȆ%Ò~i€ëù–†iG:ŠÌ—Ð,‘öžˆ™CÞ5_Ó H;Bþ ÷Ü4Áio —Oº:zÇ æ;cð†k&¾Æ R‡ šfUW4 H;u~ ·£ÇX¸Öþ{?Ú3CÙB«!ÒÆ8¥ö@×Î~Rtè~R·DÚúѬ¡ú#u$Ü€´s&¥j_ÀœDÚ/T¦ƒ/î9‘öŽ¾Ý‰&«ùQiG?øD*©5×ÝÀk/8Gyõr-@C&¯²µp“½DuA»¡;mõ2'Ð>’ì”êÑ’±Ÿßö¸+¸:#Md0ÐÚÙõ‡“ð²›³ÿ>øñ¥cÐ-qö 5‡a¸Q^.P°ÚÙ!‰†–õrŠÀjG·p›~Ê–2·ÄÙ¿놮ëpö Èp“½x+àìhU¬¬ûêÅg¸}À:=ìýÓúrl3ޟɬyœ¯´L_e»7lu¼àà´³©B×;Ò¡s5u"%{{nV›Áï¨Àè¦?wèÇ€áÒ¨Í)Û³Ühoh&M3 œö«O 'Aû9‡Zûõ{ÁMÕ)™'Ô~ÿ^>W¯sBí#ï"‡¾¦»Ž#P/n* ):%sŒ@ôÜ)›®+Õ¨ýê;¨°ÕßP;àÔm’¥á‰ÿcï–kË®kÙýg1\¤ÞÀEVÆNà ܴ?²þ€Ç™k²Q{8ûo.` # ‰jììtPû›ÿ“Vš8¨ýªÑ`¬®Ñpüc¸æì¦áÒ_Ä=P{fn'äÅÑ×µ_¾žÄÝ[g›Ô~e>K÷@í=;bdÍ‚ÎF:šöô4Z9VÏg4í96ýbuÖ×ñÉ]L }—ÝSÓÎ7ˆ"¯P¸xjÚQÖ°sj ÔnøšLËû-æè /ð\stªÌµ7¢G¥²µzµƒqQ!é6µîhÚ_j¶ôøqÔþâì®Ï¯jgnìÄ1Z/íÚ'u¬¨¼é”†j_QgñSUù;¯4>öÔ´ç|ÆÓW×îy ö7Û­•€jÏtª ]/ìþæÜÔiEÔ>˜“ƒ‚]DføÇàa|ðÌ8úÜìÚ_ÛW÷ëÕõ±¶ëT™j¿Ÿߑ޼=Qû·Ó."àÔ´ç÷ËsÖJOµç;Êöåš8¨ncû}ègjgÝÈŽT®S°¨ýö$ã0XÄ ÚoOý|VÅØö=6}ÔôsÔ>#…ã-âX×ípܵ_è™ÞyÚGÜ}|Ï+z¤®v dõlb£•­>`Wß~uG§Ê²ŸMê4koôFE Hßš?5X;Z¢ÉÙ·ëœUƒµgfŸxA{ñ{K¯vre°öGër¬Ýøöùݩς-Xûȵ.µSš{5díù¬V^³žWÁÚïrƬýµDKßo°öÉJî×Gñíãsý.Òe}VhÁÚGlGžº€¥sì-XûB&:gîúz>ãÕþê¯÷…ÎzÅúŒVìÑg…¬ÝÈÑÁ¾ Rƒµ_})˜:Þoýüm¬ãBìM‹§2áÍéø¨ùÔL´ÁÚñšíOΫblÌ«`*WU¶¶Öõ†ƒ <æóŠ-Xû@hfô¾5}Öo°ö©Á‡.‡i8È\ï7Þ‘ë32ôÎ|fŽ-ž3ìŠ5‡ùlšÓ·`í÷~„Qç3[°öe>èGUè>Z°ö7/á]¼#dí”ÿ¬È9ÿ(¯åXNƒYZÒ«Ÿ32/ºg+Ödí‡ózj t®»ÁÚqX鬕„-X;òr{ò’‹ŸjÔ4Ÿ¹êÐ‹Û ÔÎí"ûð‚­j‡Ã¯·°šmÚ û¶.7mŠÒµ/ sVTï¹nÑâm®ãÒÆ½ki] Ô¾ÂfÚS">‹£U v„Ë$o ³É¶®&{n ú# ÐþvlîÅd^Q³°pªì®Z€ö»91 -‹m›YuxVY¢g$ ý»Í ãähçYákï£Ø1k§mp`ò5£f-ÌÎûÕ! =“¨›À»X$7‹Ul‚‹dµ_~ŠÚ³.›¯·8hŸÄzgnhÓto¨Ú¯±ÀbNbCçµbNh_xAÌL†è‚‡ ý®Ud,æd€ö‰ˆ cì2@Â>&çóÙŠ =@;ÅÞ©x>Ì«,hÉß-®9dí`{~‹ =@û|Xs;t=i оH:mE!P혵sÐȃdQC×í!`Ì3JáÝѵSN:ÐÖ ­1íÏ×&ØÃЗÖL÷"š¿«s]ÒÎù&ËX—&±=HûB'º°ÜX:`èôE½úîÃêüzÇ@æ*¤‰kú,ضÁ—­L3Ѥ}R‡ ¢3îôEeÉ14µ]ú=-d²^‰é¬)}‡´¿”t®ž=H{þ®?ŒÕgýiGO€7ýO‡yÁß©±Ÿ¤ôÅSFÅÔ £ìÈ@TèâüS– ÇÆ¬¢ÛÉʻէ›¤ý.çË—->cc±BÙšÏʵګû׬¨r–>­÷ íÓ8é3«Š ÉŽªeMÎ*×4µ;ÁUªb1êѦ=Hû Õä¯hüg¬¦1™k,ê‰bewV+¾"6}×ÙŽªýêÀƒB“ÉiO%oÞ¯ê:¤ý»ú¼XŽ]0RÕ¿¢â?c‹kFÃûÅLÉõ1²CÚQÔŒ\S¾ŽSûå«ËïêÀ»7æU¬9Ný»Bö«Ò"»ƒkrÕƒ´¿2üH9åXªp¸ßüuf¡§ª#7]°¦>”uœÚ¯ŒdV–è5'Hûlìú˜ y±ƒ¢jOR‰u´÷ íWV±ñ¬´¿£jçpôd•†Võ í·Ê›÷«+ÿzv¡ŸïˆïW«zvg/£mæôMŽE%šJO¼¼õ¡¬i¿=—y¿E$¤Ýps897´²¦£j¿2Ýì¡:ÓÝ!í¨éŸ¬ìÔÚšiŸPkÀHÓÕ™®¨Ié@i˜¤}ÑvòíOÝU¦i_è2k<µ¡CÚ7ª€Ôš'H;U‡5§¨èȤAPôqªö“½¦iyÇ«=¿}2)E¥EÒ>ø0oôÂW·iï¬W“ÌQa8Ù!í讨tüŒ-~— ηq+NƒAÚ'çTjæÔº«_aÄŸ±ÅsþRg6³PwP{ø5ÿŠ~ÆjµIÔþzÍZеÔ'+´Š˜0Pû ™ãçû“º—c‰¯b_ÈóB+âITíù-¤Ê»ˆ'¶·TãÅß R°ýödÈÞzn¤ªõŠØ¬1!^í êóšuÖ¸ÛsÍI¿õâ\–ªvèFËßÕsØžžË( šVŒt`û+@Öë$ªö4Œe?*ú4ô€íwÖgfëÀök?ÊßÕû>°ýzG¬WELˆªýÒ‰¢z.ÖØ ½ÊL(×\ÄfÛ‰»~ÿ«ßovF%öÞyÍú Ø~™¯¦úBŠv³ í·ñr<ç¥×ØmÇøaíš× íwEZº cƒ3›íK]#¿ý´}ò¬R†¡c•m¿b~椎ÛºöTæÜÐx¤®=Çò~5cAÛIÿú„þƒîÞ~W†ñ~«gûà‹ aj¾10lÏŒójés耷{/ÖgÝAÚGðö¦Í¿yÙ?÷«¿_xû‹A®îÔíeûåüÈûÕls`Ø~UÑe=Lq¿Äí\³åX=¯àí ¢¢TsÑoOµöÉýHÆ#x{žaSQ¿õþ;P¶_†Àœ5W¶_Ò+ž•fŒƒÎ¨éj–†±:o5àí— !Õžú~1l¿2š)5Óó9x{Öe]×ñóÀEæòc­Óñó 3êÅ RPÜoÌ+øsV*b†¼ýÅ­Ò‹.ߣ±^¥;'߾梣³fN“ïH‹U.2ðºÎ³ZºÚxÀÛá„ù-]¾Gðö[ÎÚ® x;1¡¡„(º| ÛS­MÎkhñ@ÙŽ[Þ¢ê¡èò=p‘Ésl¤Ë>È”LÁI15B#ƒY^ÓÌâ·‡Îå× Òã96Â+„í´¿üü¥§¸}çÒNÚYk‚¸=—¶î¢¹øHa{†Þ¼"­'ۯϗ©Q„Û'E-˜|U¨°=el)K‹—Gàö»ø€yU„¢øµç±,?#îÛW“ûep­µ±#pûõùr´ZÅQ™œhU4ÙèÚùz;?;4ÙIÛ¹dœ[‡&Œ#h{ê¶²¶¤èÓ=‚¶ß†ÀŒ-"Bhû%0OSq¿1­®ˆ­YÕ¥°=Çò j²9ð¹|¦y¿šNh;T¥‰Ž"º‚¶#ANEÑ*vA„ídb:ô¹h’6‚¶O–«Á©»¨rÛs,ÅE÷é´ýÒm‘‰Edm¿|}óšõÜÚ~e>Q]ÐvKFJ½u½ÓÚ>9…Ž\7tÖyÐõÚBS‡¨·#üÚSAÅ·_x½hûuÍ,“ż¯ý#ÞD¾´L| mçšÓà*¶ý íï"z>oæD†lèÒåڞʭŒêtqÉHÃöTn±u‘(†íoªE¸´ýÊÐCE5ÉAÛoM b ’´ýK8Yl¿AÛIÌœÎZè2¶OžìŠH4`û» ¨¸Ýõ÷WDÃ]ŸŒEÙžcSú¬%¹eû«ˆB>«‰…Ì•Ðäé„õ¤1*[YÏg¥aìDÚÞø]¢É©#°ý¶œäwu¢|>Oâü6{ûyÎ:ñ4¶/Â+¬¦«®3`ûìŒE&¾ôÒ>àUÂX–I dfÀö«cQ~¾z™œ˜ÈˆT‹Î›iû |®®Ëö,]@ÈTTÃM`{ÞoÖïéíh&lçšëÄâDÚÎwÔ©í,¬ÔfvGåšGŽÕs#a;"ó·k 3¤3ß/¡YŠÎ€í4ãø­HøŠ×üE;'ö©Í‰fvGMÁ k¬EgvGéÌ£š:žÁÚ"“œäÔÑ䄵¿º ?¥¬ývø"ï¤ó·3Xû]ÐÆcÖŒpúË6Èýꪖ kgi_DE·†¬ýγ1Vç`g°öEtE3É*¿7L45nl¿šñÏ`ížÐ,sÎ:"œ°vJÂ;z„¥Ýf°ö·û-šgÎ`íoNKë'¬ýÊí'D*žÕï¼2"ÂÝØ^MXû‹ÛÝÒ°nkŸhc;¹î¥µ“ÖþÜŠÆ›3XûN¦;ÂÖáäÄE&ëi'‹œä„µ¿T®"¬ Ö~åÊ *[‡Ït.›ì.B†Îz•ó9ó¨úk¿‹;Y7ôéhk¿ÇæœÔ[h‡^ñœÓNëÔfÂvê´ÒAªí×ûeNj ãÄE&O¿™ Õ§ß9˜Wùí3¯4œÛ‰êF.WZš3Ç d`lÕÁÚ_KËŠÛeäQå)´ˆêRÚÛïÖ D&¬ý ªèÚì9Î×5gŠNƒÍ‰aûÕ,‰ç\Du˜Èp¿#£É"ª ÖžŸÂu:*B3¤í/éù¥Sƒ3`ûâT¶Vž¬Škf¹âšó~5œœÀv¶2Ìí}kp=1‘é¹l¤¤¾x¿„W)Uá~‹0`ûÀØ(åqE³¤ lÇ®³¥¬"œ ؾ¹ÆêûÅEyú:y:Òï(`û=–o_ú‰‹ÌåçËdÑìl®—°¹¡S¿çwOþnq¿Ì«ïoakX7¶ßLË\fÀö 7R6]…ÛoÀ Uô5l¿sÎ\³†ÏssŒ±‹ðª RÚÎXÂç]„uÙ ¤`aÝf^ñý2l]Ö2íaHúùâ ¯tyÉÜÌ«\s¸f-›Û3$¤1r¦ 9/Y/uÁÚs+KeNÑ7lk÷¬¾O)C]ÁÚó䜯·_°vTñYÙ½uvÒ5Çâ³·‹0'`ûBÁ¸Ó;®Ër•S2}çŠû}Ùslq¿¡lÇ+/ûO½¿æaZ%¡à9ëÜï ØÞ°T2<õ ;¦l¿z`þ~¾V(ŸWÀöûw¿+çó Ø‡ßüL³«¨Ýþ~½?MHåÈß9Õ°­ê‘а®Os+@{‹ËÅüXïa+(»GÆéĶ{td´0jÿýÉ”[é9¼°ÇAŒóßщâtÝ£Ñ{Gsê…mLD&¶#%÷cõ!ÇÆáÂWÚHý„-rìï4Š7º¸`½6­ëq2XQ÷fE𷫇ðàdï)r®€êå퀺Ú•P=²‚LO¤€êñnpÖùéÙ#GR'O:`µ¨ZÔã9¥Icõœê郛߸î͹‚¨GÄhD#vtĸ¨[,g¾üèƒæ žÒW޶t‚vMHd§ßƒÊ,½±Û\ÌDèÁÒC”µèúè#æ¢÷i#6Ú§ ‹ =ÂÍ›)ε‹Æ§¿?š-qMG‰+ bÒ˜&~µ %‹¶§XRõؤ¬°ÂZ¹—Lw»Âå{CwþÑnW9ÁÐZ3¬`­p¾]ÁÐC¹C(`½[¶}HVÍt(¾èy“‚¾-…ÛçÎT,º¦­àçïcõüÜ‹3Ûç/ý¤‚Ÿßc‰@t~d? ~§=ŶŽR=4‰?\dìŠ'Iä˜tß.¬vÝNƒéZ£[SѳeáÀ>c={-œVú¯Ç –u-¬_´:E‘êËb¯ nþmÆx4f\AÍï*ܘSWz,$ê±_…:öè+yƦ±a5Í V0sFq¸^ÓÕ 7Ü.úèDê b~Ý(¬Ó-N-¶XšqÁ¼œ’¿¶ç⊠Âgìq³…ñ \iÔ¿Û£O‘ az|­¬­èùµð[ª?kè‡W ò·¾pYô6¥¢¬ƒR‹*š*¿$ü™%Ó¯6PùëÏ„B›ú ºt¾»õϾ»IðgÁ/"ŽA’ž²òëÀ¬/˜E`¨…/—:¸Zôˆaèà¸t…ÃÂd=}}8ºN2-”èP¹fZø·@ãò]í ôcúr5DãfµÑÅ 2ÞBx`p›é’ŒdÜâšÛúSÄzi°Î¶N!Hñ½n A8¼RŸ`Z·‹Gÿœ>Åá—&¦WÛ¸,9-ÆþN§XKqe·§z¯8`çZ&0{ùýQJûz±oàôZ{ÃQÇL÷öZÁÃcù^3cpýf‚†-*çP'YÃGàæýtþ‘cCxN£œA¸v:+`xÔ#­YÀÒ@áè­ÅQ²À ÂãLwBäg…þs93¶D žLnó“òÅì à=5Án¬pCßAÀ/s>›"Y¿¶¹d0™„*~—*†pÞÐxwè‚sÅůâô;2;Êj/‹ÜâŒI9†ì@à >€¨× œÜ`¸G°%Ï;eæ¿—)Ü¢½ñ†‚ç ' ²þN7mJcÕ·Î4,pé nA›ÎÊó}14ܧâ„sFâ<ýÀàEÐÅòèà Î;“ r!ÜHË_SÅåqLÖsm—³±Më¥Ì©HÛn xüfö:Ñ‘ì¦9éeµÑ+ƒ´<¼›mÕt8ºg ›gÖbd„JÙceP©'!Iy­”J×‘áÆ¾åjæ×\t°ÚØ·PPݰi:ªÜHʯbN¨‚>|n@¸õ“ÑXaŸÙSŠÂJa§{K:GPª”vÀð<1aÖìq ¤Uèëm…ˆg ÷Ðücvt¤¶áw|³¤)Šº™MKRŒÃ‡hœ½„Y↫sÚ;8¸Eü}Bstצ)ý¼=DCŸ¿Š§tþý¯ê¹üÏ·hp°à´É£õªmˆw@ð†±¤G‰üç/¾`Hâókµrg·¨¥Â›ùs†,~6r¾OT-qÚPpÜÑAˆV Äü-ûZ`ÚÜ¢ê„LéhQåF?ίæÊV(`6]HñdïÌãÂjã⃽ €tCí ¼5>fcÑ~b ·á7Û–!P ð6øÙp µÂ ~ÃÂù€¨ ²¢beÓƒ4bbÁmh¸†¿Íd½Fý5’/OŸ}w°pºp"ëut­èn|¨¿(¤ ;P8‘bÔ[aмAá±Nñ¬h,°…{DA'ÜNŽÎ6ïáN" J{´àm·‡tMOQ÷~žP_ZwPp‹3÷îÌMŒ6é…*¸øˆó–í|CZd²ƒ‹ßoˆM^Ôd¼©½[³*Èx7f$yö¢cð8þÀé‰T<8êé¹Ú?sê%A©q ñ;ã0Qæ q“e¥í÷!ŽŠu™/+Œ(vÀqÃy½‡›©m{wàq‹ò0BšrK>N–ž¡Ex„üÎÒÖèøú#·˜Ûùôþ g§GÜt˜{0?GÞE‚G¯ª'ð¸…~”Ò£Õ‚/òŒx„Xa2}bjÁ‹ÈúÙÞJ· x£ö6 Kt†ò`z‰Ú*Ó¹¬ópÌ‹‘4ÞÒ‹Ä >~7°ã³Ñ‘ß BnÍ£«¸¹–lŸ ä!¢k¥:ÈYÖŒÖhÕ6{ŒÙ”GÚ¸â¢/øÁ…öfƒk.ÊÖÍE™™öGGB'0y‹,¹åþ®¿Øàä=– ëD3]ÿGÔ ÚÔ껃Ë +l|íEÓòÈRðNÐrŸçD^¬‹Npγâ~·–Œx91ØJ}B=Ž"6`:kÄœ0Šì ?»uÉûqد¨Z¸è'Œúu^¯VÉœàåÖ‰J8h™×Á€…Æ;;µD³œÔŽgÄI¢JS¥ÓüßßnÑ ô0ïQ‚fƒphë,Ì dšÛEk+v’l-жóÄÑ'ÍÄ<|ZW**t@sh,ºùrÙ–>ŒÎ¯Æ„èÓôõ4wPÀƒPÌ‹•ªGæ(`u‘ý lÞ‘'ÓÓЦ&5'°yç 2†ÖŠÀ滃"_ÔÄœàæ–• ¹íê$ÁÁåüÚ†bÁ(ü0Î+WJ¹Xññ9o“@ÎòÃÕ¿ä<;ƒö“2v$^­¨Ð=AÎÿ4¾ûù8ÞVG‘ó©O©'Èy¨CÛuÓî ÀT*Œâ«¦ çƒ+>¸ŽVÝÐyüîá!?ÅPŠ’ž˜DEã=ãÁg}DJ^¬­ÁÏ3*j,rEjüÀÏ{F®1¶i!×™_+UG+¤ÏqúÐIê@%¢Q™`EÙà „›uå¢2ø?wJkž\¤4¶?©$ÿ6 ·â¤K:£u›=Å5ÐicH D+Ú'z œ@jeàŸ_µiÀÙbÿ ç%/ö¯b €nñ˜7)ÓÙÌC#Q 1ѳ^DbÁϯ@BôŠ?¿´`!ðӉгX¤(0Ã{ä)æ#ôœ²6¾ž‚-¡'§ ›ì_bN9Ðù÷¨¦Z+‚‡ÍOƒ8wŽôÕ²¢„é8¿jB3æÔ:ÓàÜà #7Ó¥Ž'¸¹G•®–VȲN`ó¼[c¿´A6¿˜PÃ"‚š59¬ˆ¯ Ô†Ów›ÜœŸEó¬·Óþ6ÒŒ½°ƒ:ÁÍcRœ”`ê)Ðüû)•—KEú5MX‹³øamJ8ܺŠI|Èí¥í @g¬N@ó,`"ʽ½=i¬BÞ( ]$£ùŒ¥Ú%ÍQøÜ¥ûr{‚šÖÓm™TÓø3B'3·2´þŒ%‚´Ä%?ò¼Ö:†ã_c[~ïíÁ[%׊èÇa.·žÏØ—¸<•ÿÅØ`R$›ékcÚ£¢=Ï;FƒïvHlØu~ L†„ïíAb~¥nyVRÙõ‹¡A¢Ý44(~7Ö)6ÛÇ™ÎÕØØù»+«.^lO tÇ„![<¹ô½jO ôÊSë#™£þéŠT.éP{¡/BìIŠ|JÜÒž@èwû/^ñ Bï>A§nÖ!Sñ¬¦,jC¦ø)3ÒÌä36`gHì'– ´=¸®P˜!y¾mOô;«õ—J­öBw2B“²ÀGîEí¡§ñ§//¦ C³GRmãÐ$çñ¨¼c€®KpÚ ýΠô’öqŸ±,Wpp¤^.åÔíÁ­ï„ûÏbjÐ04,c¼Ñ"¦I‰ýglL+*õž”§Kºó+÷ ¶”"ðöEï,“ƒÌ›niÕLÌ/½Vc^Ï*Î}y¸H•Ь hOpôÎ|^ð)­Si&,WŽ„g%Ïoí þÇRä'X§MS—9èö`ÂŽk3è’Õö ?'"œ-Á¥^ꂤßz³89ÕÉÎ>|G­8ÁÒ1ô-4“Tý36¶ÁD9é \@déÔÌ'1©"ùŒõŠ"0x“©´öVo¤ÃG)‘Y{«ßU˜mÇÀúU¼•¢¨öÐ1”N–ŽY…Ç…@ëƒmOšf{Y õA§aæ•ëB–ö L­Ð(ÆFN[úËØ,öý tc¨ Õ íI¿–ô£&½‘‚¯ßËÑd±í£KO6ɶP-uvê¼¶C]*›Ú„ý6d;*>£@ì¡ÙFìÓ¤øó34fÕ·õŠb6cÛ•…¶ÙwqÐÆÞÃŒÍ&¼mˬÀg,E4|¸ƒ¸Ô˵'@û{ZYOí$`£¦±UÏ*@{£pãݾà36vAj³&¥S&šÚ_“yrÅ1P;)9¨µ6ÃÁgųŠYõ’Ó%¸Í ëåd!_ñ%]¿wV)–ot½#@ ªMiwÙ,èúmbÇýJ]u³ ë—–nå® ßQÐõwqJñ»høbnYæ"h›¨ÑYŒ.{a4¯ÓÙSÿWì‚Ø¾\%å˜ hvkû{µb÷-¼Ž¸ šR­tàõIGJ{žâÛGÁmkÍy¿^Ìàë·K®Îúý¾y¿¤ENqÍA­:÷ Ÿ8ÒH¥Þ/<«ÉntªgE60²Tö±ÚÔ¤YðõŽ †N÷6¤E3Ì_Nî‚)¶*~÷üÛ±•xÐá믂G¹^yòõ7 $97<ûIý®¼_‡°M¾Á¡ç¤ãþRHèš8}B/›*ö2}Úw´ì¬í+ÎéèÙ±g}«³î4Ú+²T‹¬ÀÒœÀaì\³£](TÿŽ’ Y¼ómëÕÙaìßçæÏïÊUÒƒ±7š™SMøÓé\Žl`èZKâÏ_Å5¿HøXõ™Ûìœ3ô¸HP{v% ™®^:·æpö䋇÷+-ø›§L®°éê¥ç3Jvò/ ­¥³®Ž’ýeG™:ÊqÌÓéá)íÖgnÇ æRߣ]Ðg_µ3Öá它ƒÚ¹_‡] ‰z°ö›MvÆêy¬ý¶[d¬ŽDÝa¢ßlrhî帧_]¿‚—?Å; Öþ]^n­ØA;wÖ—k5ºjo‰™’['^=Pû­‚Ç¿˜V ö0¸û||‚Ó{¶å0H©«ëɵ¶£4dÞú`å v¦óC ¢Ñ5Ô>pK8™†)®¹ƒRF RÑA¬£dûõÇ^àÔ>Á"à6/p›j“wÎbÛ§¡(KNÊÂOLjwà¦0K×cz öÎ;~ÉweA~sPûÕqèÖVÇ͵7„- ¨Ò4Tñ@í7(`KÑbÔþ"£µ­ñ¢#eßõ‡FåPj¿Ð$ß‘2¨=·}϶¯ÅZ7˜Wñí§ÇøÑgÔ>hª_žkoŠæƒmí—n+U˜¨}Æ:é–JUȨ½Mæ  (2ô@í\Nƒ#ÛÅš¨=ÛGÅj¥ÛG5ÐÞcÕ°™m3‹U#@û-ÜG§…¡h7 $¥V]q„ì\qËŠ-þs|a^eÝÅÇZuícÀT <0{'^ˆáNñ f_Ôϰ”öY„VÈØ¯² BgÙ"£9Þ0/Rem®Þo˜Kö‹”NK¤=@»a%u9é‚h_¤oâ9ÿ±EýyÎÕýRvóå…ó õ¼ ÐîTE>€ÉV| €væÕiAGÆÎq^IŸ¯xαVñ~I“Y‘&sÜÕ/L€fX§}=A{<çôö\Å^”GSâ‚\¤ˆ5´w$qÙbriÙ†#cÿ®N´Výnì¸dÐ"Þ­8úâ¯NlÕz>+ý h96{!µôí‘ôaÏ?:qäÚ;Æw ÌþÕÎYŽ})–'AWÄ΀v)-ßÑrIÐ>ˆf}§8+Ú³•’­¢ÐÞ²Ó,ûÉ]®ç˜¬¿Ô ô"¶ Ðþ6'{±hÿcVùsÍÆ‘»X'´ÏÎù•¶1l€ö7>">òYàÔí+ ®g¼±õY¿h‹84æ³?ZV×û›>ZòûmÚé•\Ô½•[ Ì>‹\þ­Ò~¿µÀìb½‰'Ay·± r"s"¤©w…f¿Ìš8¡èÙÞüÖ‰6tZ¿aóêb'gU£!é%*'Ú×QlÃ2Ç¿Fr iðÜRÌžcÇ?+ $ä.Ø´ßyVú l€ö«„kÖ• -Åì9¶ÿÓ±xïeé -lÚS€¿€©[  ]áAEß´¯@´¿ 4½s·T´©¤%jq¿Úï±Y"#³æÌ«7%½þ°Œáó%7 ›ì¶æL«Ôi£mÓÁd Îþª×:¢æL«”ÃçX¹q·àì÷XTzm¸®§Ý y£®-rZjÚs,ϪXžÓ*ëIP‹heMÃ2拆PC‘ }Ñ öO»áŸ»Øí$Ïš,Ù2´µí+uéè—±-@ûŒeÃÉ“¹i²†e He€°´7 97Á†kXÞ´¿·X)žs,W/ºôBÁÔ°^çb¨®ºV´í+Ÿ$C¦>54í—Kß Ö´74í/H]pZš¯“Ÿ£ºkåE£giªEòšµÒ¤¡i¿t¼©RÑï÷uÔOvAåØÐ1\-POhxÕí—ÊŒy¥õí­o)ÏY+ÅZ€ö÷ž§ÅXjpPÕQgØu^¿hï¨;al×5Š-5íx0Šv}`oÚoUaN±§ iu ,Æ®ï±ÌIçn€öËjŠ÷«!p Ðn‹pòÉßÕÏ95í| øÑv ¨ý­¡z5§G”¼¬9CƒÍ–ìècò[о>-`û@5¹™Ï»˜“41Ín$Ùº†* MûåJÍ‘†* Øþêì_Œ}ðªY@‹Pì)t2}©Y(D Mûk{s½Öásõ87¶ßÎ¥IxѪÀ»$ttí/­UÖÔöÀíj§2{w¼cÐ[öߣë+{àö÷ ý~}0ëÐÉó ÜþâQWxôôÀíƒú]»ë³UÇ¡ç|àWG»¬wÚ/];ß‘>ãtg^5æbO-øêèÚ_:â鯬­ƒÛy¿#Œš·÷7]{ºÊë¹¼ý½Wbq¿T ¦6‚¾êYQÝ•õÂܯŽ;ºöW?]½/ k¿Ær¿:GЃ·wÒV &³tüÜiszù5F|ÕŠkÞ~ ¨8‡}íÁÛßÇêy…°=¾_ÇSÓ ÁXÞ~÷P§ÖBŸ%{ðöÛO—½[s¤N«Sö£éù»zN6΃ÌÉEL¨Åø=xûŠóþ'ŒEp¢ëp:Âöt?äl5‹½ ™äÀÉ uL؃·¿‹[õs†·#+h)Æ×ù…ŽEû#!Óù…žÝNÓ#–ß-b†ô¡¦N8õ9´#l³¤×çߎ°=Ù&gö©óG žŒéóoÞ>c?rD¹ÞŠxƒn§ñ޼1Ÿ[1ŸéwzuâdïÖ,·ÃÛ/YÖg}–ìÛ9/lZ,lfïÁÛß:ÃN-FêÛÉÓ 8ÿÑÃÎ)-÷2Ýb¡o¡›ÒÓÉý´}Å“ò…dsiºÑƒ¶ßÏ”ðo7h{K'm¼>éAÛÙ|QåÙÒŽœ=`û …ªIØÂD´l¿Õé*ú°ßß”íé<\üîŒ %óäÃ/Š3{ÀößÌ¿tîÛÿk~Æ’(oŦ€ÌuH‰ Եƭ/«T!rÐÐЬl8t?L*]»×µ/BØI©bQ·Ðѵ‡&Þ4¦.qîèÚ±µ]ÔX6y=Pû}俍_ý.³ª3«âØ\T¥ô@íÔîy£EQóеw?ÏÙ¦. íÚg„eÞ醨µ]k3áÈ­U[Ôþj>£¿^P{âEÞ¯ëúʨ=Ê46½XoPµ_ q6¢by´£jŸ¹VO ³+6mDL<î¨ÚãwŠteWÐ>âQùÃå)6Þí·±4û‰NHöìÊj‰lB£ßѱïçL]˜Çõíï•CúKÐþÞ Fù€öËø‚f0º€½Ú×,ÄS§ÏÚ³Çuìc^«at˜ Ý3`Ïj ÌìÚ[Þ/«¤éýs`“;J€+/’?UûêØu88°‰÷ë¡Þô¼ÚïE3½nŒíwõ;‡›êwŠÆ5/àbÑ uhŸ9;bOï úV•R¼£X¯8D.âÁ¥×öh¿*i0AÔýh­èÖÏ9@ûrŽ Ì«¥áâÐ>™Ï˜zz!&Ú'óQ­wýýŽí3´ÚŽxʇŽG€vKp¨{4œÚ'Õ¬„+ ›G€ö;K%ÞC =ÎFnÆïj±ØÐ>9+t"®¡×Ð~¹ —‘2Y‘Æ>¨kZF€ö€ÿFÇû]:±0´çk8AbÏ }o Põ^]3‰Aî7×: Ì =œ¼Óý¦0âÚß[ìêo^¨¯Õþz>Ú³¡B†¢¡ÚÐ>‰ Èx!œÛ_šH--P˜µ³NbÖî…€qÐ 5„î3×çâw#¾úÞÜŠõÐþøýü¥çdc½bÝÄ*úÌ=è…ÝÓÝÙ¼ˆ7´Ï »³¶Õ#@»!ÉÄo56@ûa»ßBa;p!©¸0/êÙF€öFìÝò[Ð\dÚ7óKÐ¥ëÊF€ö1ƒcÈý™œÅ5c~LáÂÈÄBñœ#ƒxy!¼ZÅw„°Ä~ƒÕ œ }òývì&»®ïýˆ±ú´?Þ@;nÅ; Ðe’÷—_ü*»àÿñË mè$÷ªvY_‹ÈÈny¾a½Ñ´màså<§ý²_KÅtâvàC'6[ÄGEJ#Ô׆?zÍH÷˜‹¨X#³„é4Zøü¥Ÿs`ö{l>«b,IA’(ÙY'ŒGpö7qê.ÎsˆÚõ†¼­…Ë£ök,B"Í'¢öËè'´âœgGÔ¾-Ç÷ËH!fë…ðÀAæ2—ÏÄ­~¿8È ¼è)ºÒIýœ=“d#h÷™¤ý.:âš5=ökl‘÷û">fNêÄí jÚêv(n56H{þù´Ü{õÜÒþÞ(¥¸_Ä1Y¬˜÷[¼£X¯yoçvq6 Ò~‹&Y'‹X’F¨×Xg¬^Ûi„z¹·q¿Å9ÒÛ xÏ] Žý[aêéM ¶F°vÏ}0[Vû ¬»Éþb¯A'Ô¡IÑfsÀÚ³èhfÛ‚â~9 ~Ÿõwq¾ÁA»õ½r¬¾fDíáLœ§ŠV ƒV¨/Í{Nqn†µs™CÕyß‘¬=‹øt¦là såYq72¯Ž Å5¿¸‰¦ðBÇW8ÈD:÷lb® Y¬ýÛåçó»r^Í`í÷ïöö»3Y;œ†Ô4o›8Ȥë\®Wš—ODíL'……KíDÔ~ñc=:g5aíıÔ¢Þ Öþ./î—yõ=Ÿ‹ž™fío®sÅÜ8_cɳŽu3X;¡h‹:‹¨ý5U¦ë3Pû¥—¦v¯ÐKÏ@í×R·¹]½ÔÍ@í·©'ØK/í¯öx½îhÌ\/ÏMû«‰©ÜŽf öNÍþÊŽºvoj¿û½ó~õ29Ñ´Ò˜tV=3Pû  cl/ìvf ö÷º}ÍÚï4L„9½˜WÚËÕÁ ïèôÀLMûwÅÑ¡è ÔÎéwq’<ºfúü~Ìd÷´oBÚ/ÚxT³ú]|ÔˆøãÔíC«föw™¶^6°j¿ÜbyÌÅ.ˆ¤ýÕi¶øÝ˜VÙ&#$Mê&¤߸F–¼h’=±ZÏôã®®™åŠ;Z±¢õÀLI;;Êêϯökå9kÂ?±a‰}’ij=Ó«=Ë+YbuÄ?i‹Šp*dŽÖ™M$í¸ÝAÚíh:9‘´#á?©÷Ò«¤ý–-s¿ZØ:ñj-YÐsÒ~éQnèÌþLÒŽª'·‘œ}}?«¼_½æi_q*óE&eÛ2—ç+Éâ~±AÚ'T¥xÎAÚ-ì…›^ &ŠöKôÁ–RíÛï±L ê'°ý»OÙç/ýжO\ºK]+‚ö€íï¢Ål¿…HÈbµ°nÛ©¾{Âéß"à¶oÝîúÐ=¶/’Mû,>ý€íw¥r\ (fÀöWQ€NjLDíWŠÈLº'°=ª†Ü"‰ãEUöÄA& á&cµŠÀ;XûÕžÚtÓ ¬ý.øåvµ³îDÓ>çusqÀ ÖžšÌß|9›¢òégÑ}±l,Û¶U °öK‡Ÿ&ýœi‹ŠYÖiù»ú3 ÖþÞ@VïF©jÏ”â;]¬4ƒµßERì Zï5‡Ád±‹±ú ÖþîB\\óù›.Äú9ÃÚ_»ŽèûÅ­]Á½Š"ǹÉ8ãØŒž`K;¬ýµ°Z °ö€ NKU/Ì ç&ºJ}9ÞÉÚa~b CžÜ²ËCqL]{Fu<ç‚{ÁÚëUDÞŸ¿Š¹†WÙ|€ÝW§&¨ý’‰²LA{ ö¾&n|¾£øôAíHˆäO±ƒj¿å©q¿…Œj¿¥Ë´»àù{ ç³8ÆØ¢yϵ_ýѸ_é'¨úõ“ï·û"çcZ?þ1Wy÷«St+Pû Lï)óžz¹ZøÇì„*Ì+½­ç…]¥„X¾ß…¬ý’.nèˆp!kO™¿kú€³µgd†ÿ“^J ÔŽÿCJÒ´ÿĵ3{ëÏ_Åý2¯×ðŽLËS¨ýÛÿáØ@í¯>Äš—¯`í#|.}1Ÿ·^Ú¬y¹e-‘Y°ö $,Ç2¯h!À©Ìôiakgìψßy¥Ãœk•—Ïy}ßo^³þ~SÖžrMÖ[X°öüŽ͆>Á.ìÚib”±öâû…µãïµð¨6-ÍYÈÚ‘ãâ[ãKäE_T®_1Å·Ÿ²ö,‡IÉ¥~GÁÚg”Kø ?PxF.díWHHxU½#ŽƒoR|½n k?¬9„ü¦ó! Y;÷kH7šÈ«E_Š~µÌ Ø> ù;t£ëprÛó‘®Ö-`{\qdÞ³ cȱy·ÅØ_BЧˆ4«[o¢ö,­.Æ®ï±|½E”ƒ¨Ñ–!dèZ,¶pkÇU{Í„zÕÔ>“åpÀ1-Ô^¸µ‡ŒOS·s\´EÅéÝ8àX1#µÃ ÌŠÍ7H{§¿KÖý™ÎJ¬ íó°)ðŠ«3­8¤˜>¤¬¾¾Ç25tâwi¿œoqÍ´ózÝrŠ?H»Söä†R,V˜ÇpÀÔ† ­{^ ö«{,ÎCs¾58 Ƴ"ëäK›Š­@í“.g˜Mza6¹µ_õhd÷–6ó^ vØdï`‹÷¨ÝøÒ×dkžºµw¸¦g-LñéæKè¹h¦±°Á­¯<àè Ôþ2¶0ã_ÚDÞÅïÊz ýíOæU*ƒÃ~a¹µß5Vè‹ïÿ²ÕÉ5—æ©k¾W„Å:¬ý½NCƒó{½âpäZ³µ‚µçÎ b—îR¸`íW½D]/±p¡ûûbû-ê W°ö?oæÏX®¹ø‚µß拤»4O]©kϱ(tÕ¢3j6a>{qXH³vê%Èá¸Îi,ÌÚ¯F:\³ö4Z8ȼÖZè÷¬ýªH­vÖk¿Çr¿Åú¬Ý9H¦¡ ëœÆ Ö~kâùu^bÁÚÓ(šØuäÚã{,s²½ƒµ_ZÞ“cõ|Ö¾'Þ³X'aí—‚‚¹QÄ¢tFýînZy2¬€í‹š´É¡lû~Àö÷ã‘þñys&ÒŠ EgÔ+=Ÿþ^ú[@×Þæt‘-¼ÁºöËÏ,E¦úû Ø~›âó êÚ¿EgÔWCýâ~1?F]“ß‘õ Ø~)ÍèØll3¶/œ§6ºöoÅ—»Våíô¡–×2—MoÔ+×Íz¥};`û{Ž\¯vÀöÛ¯ƒã¯®ÜÀö–kÉ#]Ÿ¹æUìû¤UaŽ»¶OâÆ7تß=ßcQNjyÍN™40FN¤‘̶_•yG\oCžî³d×Ìmã#så1!¼ýÕƒQ?g¤í×Xôš×íäíomÅ;B$“ÞØ$au>eo_ðÉɾ¿´˜aÃÛ¯D9ÏJóº sc’(/&ìàí‹ê¡Eü\x²lxûCÌÜ»ˆUàí¯ZoýŽðkO-0ëU/bþàí¬±ŸÈ7Ç×L~0Ó¿x@q]òvÖ:tñ½zVTâdéB¦pu¬2Y¯Þªxô³‚·“Y0Š]¼£àíw~ïWW-íàíwi sCë—wðök,±h×lsÃÛÉYwÎ8]óÉ o¿Æ¢}ÖÍ%v:¶gÅbŠdtLˆÌ%Žå [ìeÁÛo­7ß¾fª{1¯˜¬í«X7àí—Ð%ÅWúšñ‘9yNI‘ŒžW›y••eÌ«"~†·¿•ÓsÞþêuYÜo¬W0UËx×9ë¼ýÝ›·¸ßõ=6űú; Þ>ѶwÖ^ÄÏÁÛï±<«"~¦9*È13§©ß¼V°R˜WıÁÛo‘9׬k€öy‰¯à„Ź,Åíß‚À®Kwðö{, -&ÜðöKûÑ«ã xû[Ì ½6>2—Æ&·¸ß˜W/Õ÷Sƒ™K¯‚žAÇÀç!¾‚ ¶ž“'xû¢qnú‘.‡=ˆÛߊ5´ ÷ÀÛ/1!ºxû«±xVT:çÜÈß-žû 9zùEoG >ð›:Î9ÁÛ³xaÀ®‹â…ƒ¸ýÇ;ZZ{Ò³ýE¥¿…c/q;Ú-‹ûŽÛ9‡¾ë‡æ¨/æ(CÇu#ÆŽžg ¹>Ÿàío~àCsÑo¿~—÷«ÙæÁH†N–¦ 'hû"c½Riª)á Ú~;’²â_/­Q¯±ëŽíì‚o*=#ql§ìÐó䬣؃ Ϫ1Ùýƒc{–;¦ëºŽ€OÐöʼnnq\Å—´ýÝqVÏH|dˆZ*¨ô‰ým¿%„ÎÐ|d®ûåK(VIZ£¾)04É=ƒyu˜WÌ ­D<¨Û_èsQ.uðlU$èùŒºýËûÕdó`$óRÉ^8òŸ íEí=u–ým¿U(\µéàÚÎÜ蜎V±ûÒõʦàó¥3ÖÚþñO]Zv0’A­²ÈÂ.M‘´ýê͘Þdú~'ó*K¬ùŠˆ0hû]½ÖÙÁƒºý%k5u–ý n‡Ôw:ÿMe?Ðöp^wG±½tVò@ÛÓ8çº_½æàÚþ’-+ˆÌAÝþB‚ »“ÝQ¿•.S[ehûE7 _ÝÚž„±_mÍõ³‚¶SR>p¡™E4¹Øßès16Ô déèØ[y„h»“¥cnÌâ[€¶‡âÓ³ëÂÖ꺳 ¢±<³Ln]4q¶÷™ËSC`;BÄÉ´ZEˆ´Y®¾·£¥ô#™W×=¶¿7¤ÓÓ9`û{‚¾¸ßñ=–ÂNí qÎÖMâö×dJq¿$_ÀWšíó=6£~VˆÛ/g†øÝ]ü.N2Påý ïH(ª?AœdªÑDÄ·©ž€íw¢œBËâX°}!FÚ˜l]~¶gL'ä/š`žóEc‹ûyu—ñ-èâа}!úÚù¬d8Ùœd®#,sCa?c)šxª2$ìOÂvÖœl›-kÙû°ýþ]Ö:Öõça^±æPD°dXן‡ã p±Ê’IÉþl/LSÛ~€íXûnô[‚Üþ<Ì«7˜£¶ßÏØó=–g%AP€ía•@æ3Ö¾Ç&ÌÑÏÊ€¢¬WãhQÐg,ÇÁÜ÷SPTÜ/EìûÅuCºÏXÄíoGvµÆ~Ʋ"ÜtS¹ÏXìj9²çš#Áæg,"dL³VÆÏXæÕ÷Z·å±»?Î>Èzu5*Õï7`ûû±¬øÝHâp<„ÀúxÔ`ûÉð9A½~¿þ¶§A`qÍã{,û‚Äfýq0C†ÞÄÏ2ôî˰]¯í¾Ê˜k–1Cœyõ3HäÖŸö_qÍ2¾êâöt¾¢V;_õØb`ß$uÌð lIv˸®?ض_ñsŽÕïØ~%¾’±÷glÄW|‚+?}½\AÛ_ÜâvÙ3ŒåwexÕŸö2­øe(Úh{Øû&ßµ%ùúŒ}Ùû?Ë´z ôýmÇÃwÏÐ[o¿Ðö–ÛÏJêòú´ÝÙ6!á–ZÂþô—m±Å6mÝB‹÷˼ú'uÿ¯þ m[rŠ0'hûÁ_>æ-™ú´}…öÙ0 3­}þŒýW‡F/ºËÏ_ú„¶'’Éž¡²3ëgläœ{6–»pê—„™ Í‚{¬±¦E柱1±²FñH¾ÑŸÀí+D_'Ô‘ÒºÏȘVXß²€âncZœ¤/Æ)â#P{p‚k¤þÍí'’!¶Cûcü!dž-Cc}͆GšÄ~Çœ 3ÄËÍ)FÁÙW°T[4XRÅߟàì‡MÛÓY¡ 1£§*-ù »‡,[ƒëú®þ kÓI;ôí<Å~¤ÝR„ØRü(Ùdµ/D=÷ãÒw¨ÝŸüðaüº’ý3øwjI;Ù¸HÊòú°}‡…?È[Ÿby¶‡õ•AúlU¿;âws¥ã†%ÉíOÀvèÅ.¢"ζ‡ÊžXŸ?ý;·¬Ñ¥mÒñL§ú¼}ó–mbV±1oß4Ñ4šàšl‚ûkè\ÝYã‹ÐÝY?ƒcnñ[¡u™|ú ޹EÍ'¤j¦}ÁûÄýPVnÊ~îX¯ð›…+ÞÞ±¦½r?cg<éX>HÔ™.MëO÷MËÑû-é9Ä}c¿aF¨Sœƒ¸›Ñg#Vëű.ûnocõÈ}7⳨?úü¥ôafQ C·õ"ææ¾1*zb·§ØÅƒ¹ÿ~~?;1væS*Î>ƒcÙŠÈßÌyÅÅa4 û¦ë7ÏÖŠ莅3í!?éU+ »YØ£%±Ÿ¿ôœêîveÙÈõBmÝO¤(N¬GCJºß m1öwfíB˜Ñ½`Y w{69h[“’³nÁÜÏÎ/˜UGÊŠºs·‡Á?üT?ÛáC› ìŸÁ±fAûsì£ ênD—?[wlâr[²‡í0î¸ÅyÔ´WB·Àî‡öVÔ‡›î|Ö-°û¦û`clÓ©vÿòó´Éþk»“ƒcrt-@ÃÕ46Ú¥bÈÎ{Òe9Ý‚¼o„g ¹ùҨ¼o÷ë¹ä}!ÍQJ^ºwßœÑÂÛåèLŸu·Ä…6óü­/8°û&¥zŸÑôªØ}ƒ êLžbÅ ìîIú‚Sêüs·à€TGÃà}§ë„åhÂb€w$¬ÐðÜœiÅÑßÕ*ènÞÏß3‹îØö3 ÛÜT̘ææÌ-¾`#Õ`Å^èÝ®žm4;×’ÆÏà Ñ0‡Móv ö~ØýŸÈ×Û#sýŸ±1·,µXèGñ5|ßTM lÓüÀ¾Ÿ ³'ÎÒºõa7лÑý¡sɽøˆ¾sb‰`Ç)ëð}¯\x˜ÅÆ|Ïâe º>WZÀw{B(ðÙ- •²©ô&“÷Øâ‡#ÎZhoXVåuƒ¾JúEÚVª[à÷ß“ûŸH:B-íáÓ µ;Í®±únð÷ÅïáiéT£?Ù–V EjÕàï–bït4X2è{ºÞ_üO¯X#'V\òàÜ íØ»Ñ4µñ)-ÿZ¡ß-ø»§&cg2ª•Àob´ÔÍŒbÙ ¿#Çù—‹.~¢…ö…¤ß’†Ý‚¿ï(r»JÅH˜Cß“Wè+øûŽÒ«™·#‹ˆ»}ß‘àÕÝÆ™Ð9ŠÆ‡«UIð}g~#bç"ÚÇÀ=æÿ_²ÅõÆl"¤ÙíIk lY‘ŒÍ0T#v ð¾Ñè¹vÓ¹v în©½6DI¦3}à}³ñ^m¦´ˆÃppŸ‰°q½­ÆÆþ·(ñ6l4¬ø‚»oàH§Yy/"I¸;9·«…ŠTw în)ýlTÆé&FÝ‚»ÛÊŽ^I)Š9àýOºûï§_=·àŒaÈ’¼nÁݧãÏ`\F‡ïà}“ Þ)²ÕÚ‚»oömšŽ[!.2°{L­‘Õ)"ºMÄžÙÂXb—ƪÐ}Ó?‹Ï_ÅX–¬·yU<åX²¨ ÒÏš‹ÈL¡GM¬iönÜw2®_ÕS*xû ;Y÷_øŒEÂíiPÂêwcF‘¼vB/B›Àí¯û'¤æöH©y·ÀíçÕ‘ØxtBÅ‚¶ŸH™PåŸbSÖ~8A&­"“ÉÚÉ>§Ko±Pk?³1ÂéùÑ ÐŽ~ã/â9ØíOféb*ë΃Ÿ±1©`ÞO#—¢/ÚAíqŠûì¼1!uƒŒîË©@lq^ö‡0&¤‡>ö.ȈÙaí¸óÿfFÖVéXÝ=Xû‰ºTc?°¡Ñ¤j?p¯Ù,W*Ð~Hÿ>Qáiº_x÷àì'²N'¬ŸteéeçxiãBGá0ö¸Ól&mÚ¹{0öC¿'ó㚣º±Nq¯4ë<·«Ox°²ê¼~œŽ€ûÑ·^?»žÐˆMn=á:W|å@ôçxýX^1HP§^ݘOñõ<ä|óu‡(€}¢¼V|Øíé93ØÁtòÅ Ø‹°×özöÓ 2Vï%_§«•]Ew’‚P»U“þŒ°”*Oúч"°?äõ{dÈ­ë ¹ØÉTwÖª^¬Uöa31·¦€ýÐøˆf‰f89|½±vø@±L_ßÏ×/~7¦ôÆãÜkº)V÷Àë–…Z¼bŠ©1·øŒÝ~õIß±›³âmvÁB£îÉE¬‚@Ö ¬cÿýz.»p³+ »Ù‚•‘dïºBÅ;›áw`§çG öÓ™[l­’óβÅ1ƒ<¨~Ìv9Š×1»Ø&ž¾˜ºÎË;S‹D×d‡˜ÅÇ„Ýz´"1¬þL·-íbGQô8Oºøš±ïKØQ¤o= »=hÍáw+Âï ìÛ ƒS¬¦Oú}G 5ÎëMŸ×=û& ¾gz7±GÉYàj=¡Q¸[hU¬³tt TÂŽ‰Æ cŠÇˆ!N*'lGçלf©RÄ6 Zdç³Ï`’‚‘æºÙdñÃÁðqŠá]«ú<0»eÏpìú¬Ð_{vsê.èåg®yŒjß|À·’Io‡Úíi\ÔêZkÖnO¦B"ŸaºÕùgp,ZƒË¦šÞŠò'âþ›ø³xpÏE¼43Ø"°Œt0ÌÝŒ×Ü zz±™¢vwR’¬™6:ëu÷¬¯!¥¢ý‰»u·…žá£N±¿ w臇ÜÝáî=k8Ð3okóÅâÅà1Øœ´jżŸœÚgx­–qÀ;MÔŒ‚3ÛÅðžA;U/Nò(ÞàÑ;G]®æAÞOcr^Gý¢P¼SrWnêeÅûà{ܱ‹T”£xhÎéH"¼Xƒ½Û pÚ¨ ¶Në8&3ÙÝ>•kÅ>ôÝ(+´„8Å!üžBbÝvî3X¿‹ËŒiËþîàmâ>öPü»#¢÷éš±zy±z%„G«{é©ôÌ<ìŽ(ðüü¥oÕ»ÏÜ—#˜Ð¶²ÝÁðÔÜgz=­ÁðdÁÜž5áAM BÜŠÓO€x³ Kà(ÑuúÜKQ9ö¡¦-@?ƒg—Û军®´ú[ o `´ÙÒ·ÞÒ[ÐøÏ&“„™U@#õŽ¿ çPÜé ÒÇÿ¶ŒýyËØ€>š4ÄïíÉM†:!Í@[yk IØ7õÙºAä0;1›ú Û°œaOn½¦É^ƒÈIPÛðùKNì†ø†_vXêÖû4 ü€ ,l1Öˆ¼²6‚€Qû¦~QY¼UºMho)'«F+Dè ù»ó’i^kM‹çx>‚ͺì£S—-à¼)ªAô3t>¼AçÙb(Ž´¢8²Ÿ_QJJÛÌ£%Í€\¹páì5ôZÝÏoŒSÓ†ß4$o‰çWBbÔâªÏS)Ø¢ŽéF’½ç;Lè}?W éJ HÒ4éj¸¼?|Lm±·s+ýfÍ»kõ{Bq¾ªßt¼Öàó–¨I·iåm >¢t޶Œ…$­¥üR?þŸRs‘¸*öôCçaFm³rHâÞP¿GÜs­ůF´´éÄt®Öœ–“ŠºHö+ö”ïAŒÌcµôµ˜?Ð#7]ËÙ‚Ë6„aVÃXÞžü(ÕÞ-°üÙÄñP[ÓiŒ•ç¸e|E¦µ] éûÎõ*±ž¾a¸| ²CÿªÑGK.O”µ¢Ç¨i‡ÚÏ`J …¶ø³ãoêºàâV[8l쥷N¹´ òîYز]Ed’§&²Ewóºw*­ó%èC|C÷néü„)öÖ˜§¡{Ð>Øà—5;mÁäÍøðµÂÛ«”÷¬§n©˜YÁåß[TŒ«“WÃâÇ´›hoƒóafÈ'¬¹Ø‘ñ;±ÝU PŒeÍBbéìH^ìH#Ñéá—9ÆkÙ’Í3±QY›n£õœó+õƒHŸŠ³åd~ÍÄÅéæPü2pÞÙÕ8ðXqhÎ[ú9,¶µb'N8O¿Qœ»&˜ 8oèÛh¢iº‰ægpDZ¹tËçÅq 8Ÿ–jw³½;çÄ^`4àƒá[ ºX]ÚÊ–À˜WU¬ÚçOæ®2Çâ–IYÉ;¤Ú5©nÀùìûàºW(p¾ã8ä8OWŸó‚pá­6³Ã†–A¶•Ñ<šú« ·~`;'E1¤í¼×ÀóŽüÌ)þum¯ÖÀ󓤶õ¦;tôžOOÖ†ëP+âÅMTŸª9fguüI>Ÿ¤$ºª·{dœ÷èëeº'Øg0 ç']΄ÞPœÓkú%7=öŒ†âÕ ÕL;l’nŒÚ¯‡>ýÕ~‚ZÜ®³ßí$åÊòV!múÛѦ'Q¤Eg¤ãLóœ•׋•7 ýg‰¦d„:µ]L(ýƒ7u6×iÑv¾(ª“R-ÊñÞ4(ã–“·L ˆ¤×ýEʇÝôÛ¹M7æî= ½u”7›×¼5°êPúÆ[„­K¿æ¥wÊéGlCg ;”þáXD;kZAÓ¡ôiŸ”šNmQÕƒÒ[ËæW¸ãõêÅÖð·ZÔ-½Uu8ýd«:¤5Ž.Zë3,÷vÜK ñ^Ô?)£!å_dôõ—æŸxFï°PéêïüóÀŠ{Ô02°ÃÊ[ˆ¥:>5mç{dV?ÉÅ Ãêqq§k¡îìÁê ;$^ÿzÀzKTÃÑ×´À¢ÃëlîŒ\Œ:~5t†2lÓMw†ê`ïç#ÔÒ ]{O`n7¿×ðç—õWÀÞööÆÜnúÜ!öNT1[MMì;ľcr½ã<ç…¦#©o˜ãNƦå,Ý ô©`Å:Â[ñžaöóÉ$Å1µ-AwvI&Iƒ‘6Â:Øþ!¹‚‹™I:®5Ù^ÙñËqïÁíª ÇNÅŸb£ poƒ~E¡EIN‡Ý§É×UgRŒ F'k›³  ÷d ï­]ÆËç϶ÁtP:ÝØ[î‘ìÎijˆ °®IÏ^cÅ^øÞ¯3Ö®åÞïš.À4à ӌ³½6DqMû"÷øv2{¾ãó†?àŽ›rë³IG[?Qñl€ga¦ÞÑÖï, "5ìÕÃ&›èàÊfë ßÈa#5ܪç…T¡éFŒ¼µ2·÷D­LlJ>¦v¯ëÈg^ùÊê(HþA¸t»×ê÷” ÿÉ”%sSKêúƒ174ªiÕq°aƒ»í:‹fñêð´žêiq‚$ýk õìÂÄ8rÛn¯8òÙ”>ì«O±¯ÆÏ\ëÃÎXØÂô øžž]óË¢¡'Å_lè—ì@¯]Pü‡Ï©qÙ­¸å¤ø6ªÈMw(~ã[¤O}z:ß(”ëø…uÍÒ{Pü+I|)Šç|"]»¨„2Þ:¦6àœŽÖ¼k`ØçùúÝ+£®ÇBð[–Q"2íEèÁ7HåŽ×¯)þ¥¸ÒñÅUGØE ŠÛY?iø="[÷ ç%üÞâL`¼i×yÓüþ`zB‹ërz€ï/%Î5·ô"€¶Þ8t„|]çM;øÞÀtP¶^,?à{|£·Ÿ“Œ.Xëà{:«¸ÓIÆ5\íï³…†áEoÅf½¿RëD…ÑaÇOž43üŸ<¿-{.˜;N¾‹ðýÄ_Åà,–M¡:Uz:yÙ÷DذX6 ï{zÊsä¬^£X½Þ£ž&L5× Æ¼€šÀÚ.ÖúÔ×.$< $ ¼Ï VT`ô€÷ðu‡úMÁî)šû|QxTiõt‡Ý„ EÑ,Μ(ì;aZS+´¦xï´¦|Ý] ;ð¾ç¡€£ßÖG¿‘ðžà܈Ÿ 9ÁÞ?T8z•¢ânï3Ul¤YL×3ŒKbOÚ€4ËÖ°oïÖÁŒ½z`™áfíLw„j0KÊÎÞÜõÞ<€÷YñkT™>U à=þÿõç—uœ<€÷–²Kù¡_æ7¤oüœìÞñBÛÑ2ضþœGŠìéܨÔiú‹°û¸ŽÊ5øÁîÍW2]¬qµ-Ì€Ý;¹Ë Š.Dsvg³MªÂ§ÎK ØýñÕ8|sà„Cï2àÐ+ØÝs(ñ‡Ž˜ŽG¢ûl%ÄÞÅæÅëe5yd±Œ$¹MÜ9ý1Cî3g`dEw#µöˆ o3ý–!÷ƒ"´½ø¦4Žû‡âmW¼)æ0ùNãO;óÛYJŸZýY@îrpbú7Òožhyd¦2£åÉ=_ö0úiCî|XçDÕuùírÿyýœB™â—Se˜+>Û…n*2°ÄɈ÷Öºƒc†a‰áÈ2Ý‹-vï쯎sk$}~Ýéã\m’#7I¦6Ëö(–m¤ø 5é‚5,ÍߨtEéÂâB^ZØ.V^ >osD#Õ†ß2¾I‡âYâ»Ñr›gZŠ5Ò'ÇòQ» U†)þLą̀†¥ëòå~¬?*¤ø)¿uŽü…ÚäO€ÔÔÇÈo$š¾„K§{RüNâÄäbj)Ö@Š˜$˜mº§ö•ÉtÈ@AQžaù>óU±æÓ-¾ƒyf{Cׯ„ùd‹ïº·¦Qe&ƒx¦pŠÀ|Ï"u’.C'N0Fè¤m½HÛŽ€ù'ëð½mZd3â{zõq0Å©*r®Xˆ¢1í%0â °µ,¥ø gfÎ$ÍGDA£æ9›LœORo#¢ØÅ‘,i>kÁí¢7IhþÉ„MqZqÙÐüÉé™:¦Ï_Åàß æ-¢0Ÿ@’YƒæûC—hžW/hþ¯õç—Í"0@Šï¬‡Èó‘'8‘Ž\TŸ 8bõÚö¢kòçg“œƒœ¾èþ0ç“Ìlð™Â¡c€óúÉÜ.ºêNpþ žÙ,C[cË ÎŸ4­yÐî>hÍÄù˜•6ü…Žu¦å`„:šáMpþ jö€>ÍË1‡I‚,óѦÃóÉF¸½ØÛu04ç{ò«Š_.¢Š οu¬Ôh Èç÷Ë·Ÿ½ ÍÀù;+‡ÿKÀ#Ç2ÁèÌðЙáÑ Éç®ú0µÞagàüM°mqÕnÕU£ÕÉJ$Ô\S‹'4ÿª½TéÅU§[!¨ûð­IÅ„æÊr¨öhÅÍD‰g‡ÏÆ’¯ƒ° Îo€´E}ËÒŽ¸ór¶GÂv)´õ vYçP–C¡\!ïž—µ ü¯¨é™ðü `9®ŸêžáùìTXoya½5ÓÜž nãtRô’š—?¡uLÞ«{†…ÂqþýüU<í¬õȧˑæBžß,ijgxžðüIRqña¬b§‚ç[”œù¦‚~ë¸`Âó álÁ9–Ö‘Lx>¥˜F£ÏŸ* 9‹û´ÄŒó¯ÿ«‡¨œµ8­°µ/}<™-Y,s! ðü‰i*ý­h8áù‹¼ÍB"µ´ÙÁ„çÓ)ÔÊžŸ)¶ƒæðhuç„ç/dí´ìµÂcfÂó7’2€À`ÏÿÇ€ñXüéºÄ™N÷$÷:v½ˆÂ:0ì*3æxRì’ðü•Õ¦5‹ž?C´èÔ>x+bÞàù>"Ýä“:¦©Åé3xþ'NL-:'M˜'<¿ÑÇí>MxþÄßæ¡}ÑiâvG7B¸Âðu‚ó[õz^šÿMpþUлÉ…˜‰ó‘vM„¼S›ZÌÀùxZ£Ü£“óò¼ÇUØZxÞOpþCw;WMµ¯Aj C¾ ÎÈÎ5TNM×€ÎÔäC𯹜š|N6WÁ‡Þ#Áù–ý²ÂÕ"3mïɼüq›ø3XÏN4ùOJ~vÿ§ƒ©é¾šK³Áj™ÓD”ÏþmЊç• +Qªï‹ˆ™4 Þí5©×Ý4ÖáÐÞ –­¸å4ÖIÇ9Ä3EcÁ Í72õwA€þ. ù$D‡ìÕ3]ïÃ1Ò:”£PšÏTæ§Æ=eê"Ie>²CZ”ôbcO˜7Dæ%3•ùˆ³.e¾N#ÌTæ£)ëÈK Yÿ ˜HtŒ›ºVüL„ù†5X§±aQ`3æû¥_Æ2eÛEÀ|wZQ8:û(Ž‘ó=KŒv{KCÞ¹3C .nnÚÅmó'¯y£(¬ '0wÇÚ°è}9ÓWÙõݧL¶Èrpê«ôeóÓ¹s€íZ›0æð¼Ë,ŽTHóN*^¸{M¤ùéu[ƒé*a~®`Ô7– Ì¿Œˆ.õ‹žaÀüÎé·CÿzAÿR›Ÿ ÉåPS ŽÖ³ <“d( ˜Ÿš²[G'ïy¥6Ÿ¼s‡v-NXÀ|Ã:ÿîd[ Ná! y}×Ì¿| y ©ùJm~vÃ!j-º,`þ i³ÁB[Gù ˜o©ÛÒQnU+µùRWû k_À|‡¯Ü>YÅ=ƒÂP!wª “­e9ÃøªhÿÛ5`^Ðüìm×IT•ƒSS‘Öˆ§õF·ÒÕb§n·h™´ÀùF¼©xÙÅôç7ÊÈî·z’€ó_¸’ <.p~6K¹[,ƒs†å/#‹ÐÛÍçgÆ­NÐ÷ì¹K¦gY-sZàüÞ âÖj’€óÃó­`Ñ÷|ë`ví÷ÌÆÙæn½X\6ÀY/s9Žê÷ ο‘!0(ä/ œß³ÙÓU.¨¿gpþ¤?Ÿ¤\©οj Qd -á[àüû²ùžMÏàüK/Äæ^ˆ8¿g "j–‹’¿Î-ï9ë‹ËÎ 6¦çUœ©' 8bˆF's;:°RžÏ ;¬$§XIRž`hô|`ú«JküT¤QRôŒ[—<Ÿ5ìj8§8?[`Kæ…nóÆÄL|;8ÿ†a?74#^ÈóVlØIz!]i®“²Ðã)vIäùtvZôyÑ¢oóS0tÉS51]àü~r0ïYgØòüÆ1a2]Ì¿ðÉ­ê/Êký°¡ùé{w[Qê9Í×óbޝu~ö~¸‰ ‰8«R>G[.¯ì_›¥W™£^óçg`pùøê92r‚1Â\8k/xþŠÐÓû\+ö¹”çÇìtìxar±àù×—CmÓÑ\iÁó7"Mļ5è]Áóâ§„÷â=§<Ÿãó!’:Z ¼àùYæ=@ò£8ÜÀó†F‡íùhº³fúi¹œåIúˆÏï;DRņ<ßqªp2F^8-€þÁ—Û7k~q&蓯Šï¹8>§ÏÕ6=oQµ3 }ÀÕ»V¤­tÊOÁ8Ù€¢ûîègÚݺW?í”ç§åèeð¯'IÊó±Ë¹»_÷L–ÊØžîÕ# £†mr +*¦Wý´½Ì‹õŽ‘òü«ã÷¬ yþ•=¸®"ÜÞ9Ã" k”Û´â²Ñç·ì Ëã‡ØGÉó2XÏ0ôù”Õ;j8/m }~cÑŸ%gqM¤ê¥Ñ»Jôgö¡dõ,„î+›Ù.¢G¬eŸ"ÐO«|BωÒsj¥çJ·tHä:‹·žðñ²£,~àJ@sKrõÓé§«÷múP f £”b²K ¤ßÐgMŠ‹w]v;7!±/ ºHÿjÀ!¶è^±@ú8ƒüÅ SG ýI?™)ݣϤ{–7"À¦c’Ha¡Þ˜ÚMOí ÑŸøM”G½¢?ɇNŽÞ…‘ï~r‚‘?™.¢Ÿ €ÉW¥w¢ù¯_m3䆱/«ün3Á´9Û¢¿‘vYlínZb°èûs_蜖†$ Oû1Gã…zf§<7”'t;^µn€>âA[ìKÏíún¤€Š´Â¨u§>1ð†Í ?g¾æt{.~9|¦ý8‹Ïb)èŸØ/œNqþè2´@ߟtPúoz¿Øi·[»; IQ†»ú)[lìÎMïÎ;€þ~˜`ésQ,Áó3_§ Ë2Œ<ߟ$RLmœ¼áù¹ðJMÓéã Ï? ƒ´ê—c‚å^³ð'ZÏìàùÞbíôÉ^3‹½ž¹ _E/úsžïx\{w[ïÚw§É†~°3Œ¾·øv9² /d;åùôú}øå§úåf;Ás/Ž¿;xþo[ϟ˪wM˜7<¿=œ®j½’Àó€e<®"ò¼x>“‘ªr×¼`Ãó¯Rí«¶]?mx~§x„ÕÓ—Æ–ž¿"{☧z¡tÚð|z‹:r`ïÅ÷ŒÝN¼µc壈¶“çÃÿ?ÚfÃóÎ8’~Ù»ª½Õ<ß-Ëmh›fZ‡²'aXìUÞ;O[«57<ñaÜÖ z C Ÿ5l }BáÛ°áù+ƒ^š±.ÃØ‹5 — ª^ˆLwð|o¬Ûk½W—Í.™ %ÓV"ï•'I> êöºNlx>ùþÒ[Y+YÆe€ çv¶¾E¸³À3E{¼½“…±n/z‘èg°»”V¿g$úÖI7EZÑ»6}ØðüÉHŸu/ÌÊ6<…‡³c·í…Ýö†ç“{¶訶xþš4Xqnžï–nÈì^Ä$Áó7¦Κ_˜„op~®ùN`àņ8ß-D?>X ƒÞ}r ã£â@×´¬bgçÛü.¨[. wâ|Ô]%©gça ‹Œ¹O‚¡©U;;ßfjõ­ý968¿e«L*àVÁg¬89 N-\ÜfìsœÛ{qnç·L=ç`M Nà|oqöö1íúUpþµPI«õæ'pþ¦RÛhs`ºÏÓyØ"9` ÖÝ¢ ö¹ßf¹!“³úe‚02>‹d{Qçx ù={$0³]סhþb1¬ ×þ“ÞùHìïfMr9©ÏG½Ñmž8¿g¬*¶öp9àüýäC’«ÏE'õùäN6内ªödãÛ´°¿$¹úó³ô¦Þpïœß1ŒÝØmoÍ9NÚí¤yÖU>RÜ3v;-cI§Å3}~Ö âáì…‡óÉÆ·¸ÁoDß[£ŠÎï鞊†oë”÷ñD¿g>E]ÕAŸ?Væ=ë`ûÀóGÚó’xÞZz}"©Mæ¹èQ|²ñ-6*3¼séóó=óIêóïèoHšÒ°ZUvú+[“¢oZÏvRŸŸ3ì*,-.;E¶ÞíE‹Á} ”®–’¶¢7ÄèŸ+|D\ëôϓӓ§­‹ÉΆ·&X{éCôgVeqL( Ký•—M¤ŠHÿ›èÿÅLTß3D?]ÙQïÑi²s2c0õ`…øú ÐÔ·ß…z’$ÑÇ¡òA}øh‘Á9™2âÃ`*jýla~vÞ³^† úpù"£¹Š¢¿,ýEq©îy<ýžÆ×ì’Sî’ã ¢¿£M´¯¨nr­ÐO ôs‡¥~NËǃ@eÜzi&‹«ÎM’0O òˆ1ž@ú?Ÿß‡Íúפp< ýEK³[  vØñ€ôÙ½'Šïü‘Àñ€ôS'ÿp¸ÑêŸÁ(wH¥^…õòà>c‚¥ ý)ׂñ€ô×%ï§úX®ãé_(Ú'w< ýE7œ‚\›ýŒ'¾Û!$!ë=$ÝO ýMšl!“_2TÿŒEVaÄÀÚ&U?ãè¯LîщR;Ç2Îg‚±‚=ò`4ž úNÖ'áÌ”^|ãè|r=ˆëÆ:ãèã™ýU®þ. ú‡Ïù®h(.iXêPxÚºb<©ÐOoà«°Ú©>ƒ‰ÂátòºûðxÒ@ÿr%fƒ•¢´ñø÷ »KÉô–D?׿˺¸ì,bË_N h½„¥BEÛÝ'Fß3D?õƒwu§¾ç ú¿•ÿL&Öw±æCô³ûÈ]d®×¿ úNg §›®w™¡OJôñ}x at%O}·¬hEo¤ ÑÆDÿwFÛoÔ¿\\vârÙÄùO±Ï¥DøÅxЍ"â^•hLY÷2ž úŽÿ ãéä£X ú“q„®ú)QX„$º,a20ˆþÉ÷LÃrðË C|óÈCÂx0ÐÇÚжV¬$Hôñ¥óÉ24‹5 ¢ßé¦6Ø«F“@ô³BýÖ@ë÷ŒDÿa’t¢Ç^Dƒ0ŒÆÇÆb`’Œ‰þ ËVT>Š@¢?©Ý{ȇšLD|³†áce,ú&“©ã° æ¶‘5™Ï`†Å¹ý3¤ÿÃÁAô œöª€ò¾%”ýÅ/oàŽÎÄŽ'%úÔw*“Úñ@ô$ÆJRÎ8ŒÆ ؤ¿Çx²#nêȸ™qÿ N‰>¯êÊOyë“—œNfèÆ“ý\z9Üè& ãè#Eq|é\›Úg±†ñž;ß³¶øOJôò†ƒŒ.pD?O7´Óõ%õxR¢ßˆÃNj½ Ñïy4¢ ú”†(ãYÌ0ȃD„6æýÎÓžÀŠYÀ ˆþÃܾ+ ŠW•¼•"ÆÜ–É—ñÑÿüGšúP¤Ù¤¦w<ý«ò™ó³nõœ¼•{†Ãõ"öL‰>ax¨~þÒ_ÕNXa/ïY¯a)ÑßyÏY죟6.úÎ/ãŽäÚi<)ѧ·¬±h‰þx úW‡/+¢!ˆ¾QÕ1‰µ'-wØŸ;Ó³Ó¢ßà­ÆÑȊ鉋þ¤Î|RÇ1eÇx²%.Pꎆôô¤%®Yn Öß3D?«ï"ý´ƒè{§nzðUi“ÊÏàœaùËÜsqºA£oËNö¹Ëìóx’èóU ¶›Ql7AôÝ̘¦µµÃ°Üy8|ßeƒr†Yý<Ü ê^†o{Ø$±MÄÕØµ«ñ0Dúýa‡ÅBuI¶aAô}—ãêéÚÕsD? yðñ_^Sr0›$V¹ _’%Ý«‡¥‰>E –¦{+ ¢ïžÅ>+†>Jž;–žÐmÝüdØEôód„.W¦€‡°½fg-Ð͆›dNmÒÚuX}Ž’wˆ\ ¢ï8¹ 6æf„aÜ®&H?™à»Ð°Ö‚èÿD\Xb‚M½vDÿ®?áªõÁÈÐè¯ë–ÑÃi>cAô?ÿ1ï¹sÏr§2ˆ~>0§;¢®†çÎØ¬BìκÊò38–°”:Qêº8tD?'˜³¸†µÑßaÀïéÕÁiÞšÖš¼* w,5úÎ{Æ*׋5¢ùŒ_ŠËFßÊš—è÷œD?/›øO5 ƒèï–ƒy`:Éf-y+÷ŒÆ@÷ ÑOŸµ»é€žahô NÀì²:tDÿ°·;ìÑu¨n©ÑO (Í‹¢ï„êóá„Q,žÙ7ïùòœ(§aE¦½³ðY¯žAô/öϹ”f@ô§å©Š8_óƒè_®N—ZIGRÙÒë@y-uÑlå`=·“ègý Ûs9˜–Jy0±îX0 ¢¿9†ÞíŠ{FXAôè¤\§ ¢“³Óóó—¾g4úÙtàvïÒ÷ŒéÎá$é¸ hë¯aý“ ìðÍ)2î–D?Ê+]_Ü33 Är×é5l$ ãô|•Š—3‹Ò>¥ÊtD¿¡2À˜Øµ1ñ°4ÝI D¿ÉšØa/¦; ¢¯‹†AôŸ´>¼Ì•ôe§‰>)Û€Z/€VA榨u ɰ úŽ?¦ÿ©]üyÚZYa˜îL¾*ªú}Ÿ$DŸO_L¬‰¥FómqY<0x+t»jÌÏ`Ö0r ƬM·‡a¢ŸÉÔFØ´jÈ ú 4Þˆ›ì:? ý–Ž´¬/³†¥šø2&Öï~öµhdܵ«ñ°K£Ï#|lEì Ñ¿j«HD/C£6 (ߊð¢Ÿ2w#=I0ÝYéFuן$DÿÉ˾Xõ{Þ¬aJ5e…^Ó0Ñ·–¿œ‹zn£Ñ?ùn½ºþ$wΰ”ß$ .~™]’½ê¶rÑ3,ûâ•èÁ^¥÷,‰>`#ˆ+ôš¶3gÄ/_bOýIb¢Ÿ@Aœ6‚¶Áa)ê½\¤õ=CôOʯ)jÐuFà ú4íûK‘’¾g4úó0=¡xº ä3˜FÔÛ[!ú‡,F#ˆkEÑ7ÂG]2 ¢? ™o«ÝâžSYÁ#|Ô>½ÃÒu'o;i˲aý‘aEJKÃ4G£ÿ„)€Ó ÝuõáAô¾{>Yô§ÎÄ:"ýêèD€]c<éãî°ëðÑé¯Lš_&—Åe³†±tÎÏÚ!ó3˜]²çà¬Þ+^UÆaè•8öëÒ¿Ïà˜a“§½Xz—^z¤Ÿ _: 'ÝRh8Hr~ž”„Mý=;HŸb ßLm`3<‘>ÑÐ  : qlôSî~+Öõ«é?éþJìY(\¤ßÒv‘سkté¨ôsÔ«ì³ÃôaEG¢Ð«FVqÄd—œš“8*ýLšßEJú{†é/ÖíÍ¡lOÛ‰ôI]wbOíS9<}ô/“ËtÈÔO¦Ÿb'z¸öšÃ=ã0^. ]¶îì’–ƒ™žÒSy8¾;°bB\u•ægp̰yr¯â¬7:wÖ0ê°ÿrmÿ5}Ëó3‹þ*V’`únY\5™$Z¢àH?z/i™ža¨ômæ`f˜Ž·½1òVèÒ™¿ŒÂ•ºÁÛR´¸gÖ°æâ( Íü†£Òφ·-rqÏ©¬È_NU¯þª.¦Ï=_f¦Å=gâ›Å€x[;¡‡é™éTÊÔõ‰Îaú¶Øbµ‘àðž3ŒØ“ÁÚ©|xªôqQ˜uË—á=g ñ¢n?¼çY’ý+èBùè=Ï’ˆ·uøá–akØ–ßÃ;»$9:ÀŽÃaúãÉ-–Pªø$Qé;ÊGºÇ»n?|d†œ„5lÓ#ý™ WàÒ ÐÓH?+PÀµºõüðTé÷i_)ýbúL’K6Y<0â°”MÒó Ðh9L°Ý,ÊtŸ‡á¨ô; 4- *•þ°¼ç¬ÆÐ,Uú¹¹£ê]ZÕë3ykXŠ´Šcf¤„¤UEú0ýÎ/ßÇýžaúi#sû"ë§*} gn•¾ž$“æyÙÜs>ÂôGÎm¸g¡•wTúø™ú]"-¿TúÜóÕÏC¿çTéç/_‚M}Ù0ýNàJ?óJíé¨ôq9r¼z}{*ý߾ˋ_΂oÖ0"À¢àÛaúWMÄU-^<0f ø–Äéé™LÚŠWz:Oßã!ÕmŇÃôÝò—y`EÓ¹’À=‡Î|;LßɈpm¡äsTúØB9.ü¾Š¹ï½ºþ".Ó ¦³“/ŽƒK'Ai }¬ô}"÷ÔÍGC¥?‘»/ÔNKšYÒï,C‹íyiºÓž ôVL$þÚÙn´ìŒ‹‰ÿÝnU.Û-Uúä@îVšú²AúÕ¤&¬¨ýk ýŽÓ=Ù§ÞªH¿'d>l7:-Ù@ú=ÏÞ—9þ0@úÙ%ŒÖËŸ°¸gŒÎS¦ÑâU1Èáî¸U.C ¤ßS+š6 šî4~'n¥•påÁÐ@údÿÝz^ÏmþàM¼P LÒ@ú@3énQxJµ”é{þrRéÒO…×·‹ÁTA.o¯5ýž³5. ìɇQx$5þ"2Ø„[‡ ¤oTàÑÝÂuw‹Ñ@ú°>Iö™Åҟ̰E(µt²¿ôg&¾ ËÁÌ0Ô·³‰žÛ }z¦þ¥ß`qϹ†½)ô' Ò¹WQvSÈ HI6paH?}ïÔMqϬaYE—,Mq­å.ɳ$—úôÓ:bóË»øeþ ö\ˆ.uÃÕÑ@úY-yWýI‚ô³'m_|kqmé§Hkât;Ñ@ú™¼ëâçÖÙ%ãÝmOõJÒ_ ƒÍÓÞE¼ Ò—«†ÖÓ5þJ.’ý[ MHXW}n ý›ÖæùYÏ0>znÔ«› ¤?r Ã0­àÄm$¬`0ä²€-w®2º$Å=O~™SìUƒ§·XþÄm8ñÖœ¸ô/@s¡!=·égrøXp¥ÒwËHŸ¥WÓ6s†{^hH?0þu®ºŽFúžAú©¸ÕNÅ=C+píYËâäÞf®aÜóuì×KïÌ]’hЧ{ŽÒ¿^W@qÏ)ã{¾N±Å=³†ñË·þFÿ2H¿³ÝÜjõ{écý—]ñˬa„Ì‹PºƒÞg03 Œ·2Ô °ôÓ1ò¶^,.›–!3`áÛØ@ú)ëÝxõVÁ:H­üåŒô‹{f†aÿ°±³ªÂŠ•3Œ°âŠIôº½3Ë€†Ë.â0~VHÝæaÅ/Ç [Äa·×†¾gþ•r¿b’â—áa‡ ÆÛEÒ_„´¢+ƒõͶr1`n L?‘ïh¨¸çÍ{Î_fõ,â°3Œð/„*p…é§lˆ†pŸ¿ô. ÓÏ:âMVf†å{¾Â }Ï0ýìÄD+º2&éo< 7ÑÐ.¢!˜þ& L+ºzpî’\6.\Õ.yr†åàÜb‹{f†QKO·ÊI°Áôw.—„†{þÏÿø?ÿÇý×ÿþ×?þó?þ×ÿøßÿÏÿoÿùÿ×ÿ÷_ÿ÷ÿüÿûûÿÉ8ç&PLsyfi-1.0.0.dfsg.orig/demo/Advection-Diffusion/python/velocity.xml.gz0000644000175000017500000077774711672223006025363 0ustar johannrjohannr‹'Y²Ivector.xml”ýÛ²õÑrÔ‰Ýó Ýkkœ@ßù ìpлۊÀ’0Ø~zׯ–:XUßÈýA#µößœs«²²2ÿíÿúÿùþÇ¿û¯ýOÿùŸþåŸÿÝß׿”¿ÿ»¿þóø—ÿíŸþùÿøwÿû¿þ_þáüýÿúïÿÍ¿ù·ÿÛ¿üÇÿýŸþùïì¯ÿù?ÿ/?ÿ?ÿîïÿÿå¿ü¿þ—üÇÿößþÛ_þ÷¿þó?ý‡ÿü—ùOÿÇ?þü§ÿø÷ÿþßüÝßýÛÿú×ÿð_þå?ýÝþ§ÿß_ÿÝß·ÖvûûÿwöØô×þ/ÿéÿûwÿé_þÛ¿û{ûÔÿúÿÿï¿ò?ýã¿ÿã?®û?nû?îû?û?žû?^û?Þû?>û?¾Óò5móV?&®~Ì\ý˜ºú1wõcòêÇìÕé«ó×>æ¯}í»ùkó×>æ¯}Ì_û˜¿ö1ícþÚÇüõùëó׿îÇüõùëó×?æ¯Ì_ÿ˜¿þ1ãcþÆÇüù_7ßÇüùó7>æo|Ìßø˜¿ù1ócþæÇüÍù›_OÇÇüÍù›ó7?æo~Ìßú˜¿õ1ëcþÖÇü­ù[_oïÇü­ù[ó·>æoÌßþ˜¿ý1ûcþöÇüíùÛ_ÁËŸ¿¨im¬²Öéµ÷Þþúöz¿Æ|Ìéþ˜Óó1§çcNÏÇœž9=sz>æô|ÌéùŠ?æï|Ìßý˜¿û1÷cþîÇüÝù»ów?æï~Ìßý ©?cꯠº|EÕå+¬._quù ¬ËWd]¾Bëò[—¯àº|Íäwzò5“Ÿ Êg†ò™¢|æ(ŸIÊg–ò™¦|å)õ+Q©_™JýJUêW®R¿’•ú•­Ô¯t¥~å+õ+a©_KýJYꯜåÊ_z¹¥î²÷ؽÙ|Žh¿G̳÷™ÃÎøÛ.ëçˆþ{ÄñÏh¶ Ú-R=GŒß#î´ `íÝʘö1ïÿ}5ìí.þ_mkûy¿,ýý=bÿOÿŒó?=U÷v9¾’ªú•UÕ¯´ª~åUõ+±ª_™UýJ­êWnU¿’«ú•]Õ¯ôª~åWõ+Áª_VýJ±êWŽU¿’¬ú•eÕv­m¼»wéÝ&°Üg \gصc×;Ʊ³ºÞûüW*ƈÑÎX£Ø YÏxŸ¥/ª5ëZ6ê0öý­V¸¨ú,sŸbó³×µƒù.ªÑú){–{ZßE|«pQÍyoßs6Úêï[äW’g#Vé£Ûßn»uŽš«pSõ}º}J¯w[^ò¾ ¿ÁºN¼ÊºÍ}¹ãÜu¯ø'ÃÏ»ì6ë{_ËÄÔì¸Ä§]Š}ûbÿíýCwXâkÒêµ§üÜ6Þßj‡%¾ö—µÇèö3Ä;±ÃϺ׶å­×~Ízo£_Y§g…öTìaú*ïy‡nvqod ¼º˜©øË8íÞ··ëîú~¼b¦Úǵß[Ö°‡B¼D;,x›íL; £Øû¨¦6,x³“c ×í|N›€çˆ¼•»íkYLÛŠíØ÷ˆgªL;Ì–wÛGˆÓs‚—²ìtÚJ{!íÈ÷˜°äå{Sǰ7ØNi¯ù ÇÚ>ÅÎé¹öäï5ÄxfúfÝѦ¬Ù…k?è=&,|D«µe² 1;~Œ}Ž}´Ý›{²ýÅ „Õ/p1·m7ôîïM|âòÏa÷³-Œ-Pïå¿aùí®µ(}Ù½vÚ¨ïßrÃòŸeçv Ûõ¶øï]|[¼¶ì™eðˇx5n¼ÑívÝîô¾,ð#ÂÒ﹎…qcOŠÃxg|J; ˜v|Û{¯Üxà-Œ¿¼–¶è[\[wÇ+ÂŽâf̵[K|FŒ=—-º½0gÚƒ&Ö/¯¸ýÞc?¥´ÛžSÕJXñcqóå±ÃE°õ‘VÜ¢ðµí€Ø¶ºbD|Ä{³5´‡Ü¦¬½/•Vâ ÏqòÄ®ÙçLµV|ÙɳPÐþÚvŠaÅÇÙötžiW„M¯˜ªÛ#W”½šmÆ÷€°àvµÛÉïvýXúUŸ[¤•°àveÙ¿a×=={<ÃVâŠ7š—]Ûv¥¾¿Uoº}™»ˆ,ý*ïoUãŠÛѶ—Т¶6Ö}«VÜÖήP.Q»®¶óË~mû‘÷í;ßÉ_«1l³[µY\ØÞ‰Y«éz·-;í„ÛS½l‚Řx½·e)é´Kt—9·øbéz·@™“h¯{™ç}¶owËaW[Ã3ÛeâÖ°ò…øóŽÙleìv|Žh%þ›ÜnïºG®ïw·µ°ôöÇͶ¯}«ÙºeÙï!¿(ûõm[êaïOÏ^ï_ßâën_Ê nØâ†hñuïv í9¬• l=/ÇÖâò[fßîØ FÀü>ò-­þ¶16]vÀ,myˆ‹oú²#Ïkr¸‰ÚIûÅ&‹ÊVs½ßéö3"€8Ÿ¥0NDÿ­—ô1¶2àXbƒÎû÷Gd‰H…cÜö±UÞÏ\‹Ø’mý½íð[|gŸõÆ?Z—,²ÆÂˆeïöá-xމ  %î.Ī˜i=l€}¡à´¨¸õûÃúÛãc×0*Õ¤÷bF€ Œh’-fMüøüÈÛbÚnìhñ­ÂÉ_ÍR“:ìÞ?Ä„Ï#ÞùÅ;.ØN$FÔ4WvMX>3–Í÷‚Œ°îìz{á-Rxï1°ëÛ¾ÌõK¯½·ÖñY±­Ù«mQ(êsDÌÔ¹O‹…U¢®ó~ˆFÌÔ϶k³ÚW[ìý÷ˆøÌÛ~·KÂŽ½=DU|«°ä›xÜnÓe!Î;«n#‚3ijÝn.[W{ïž#fŒëŠ-G%äÚ@Aïaʼnÿ—…çž#âŠÛ^/ÓŽî$ž}ÿŽ_Ø™…PDÓ^«Fõ^ñVü8üPÛ±(­ŠGnƸ®]ûÍa¬ñFZÚ +¾,±Üs[TdßMMn¼äwµ xÙ]mÆ;Kl +v![qÛVc‹o•;{Üíj]vÃï7òÕ"gA<Ç¢ÚÍ8-ˆoÀð6uĈö{m×Ú«c?¼C¾ôøÃ9Ãݨß"×í·[Ýv øR3ýðåı•T?<,¹ítK£·¥øì–÷’¯X8°kdƒŽÚ[UÅñ9Û"u‘(­9–ˆ#>7ìäÙ6±Pþ—øåŸ»sØŸ/R«yÅñ¹i3qléÎYöâ¼GÄç–ív‹L,Ô¸ËÞ‚÷ˆ/]»sæ°xÎnøýžÝÖÜÞþz,b¶›R„Œ;ÔŠê:~{±÷ûaŽ]í¾‡ti‰Kw‡%·©’[L˶:›&»n·({Џ?"tv©[BiwèžU`Ï-"tà°Ý^Y»,exo’ˆÐËqíá¿Äa)é{HŒá»Ýª,;©ß¡RBè,ê¿Ó‚®Ò®>%!t¶·,ÁèsØÇ‰ 6#t›rƒÅJöö&$„Ž4Ì^\ûný 8!!t#–1,ííÆ÷µ•ð9Ýn:Kþ6À{HÌàìK­ca‰½ •ã5$tö)–ðmË‘–£Uï!)†¯¼Òú[>f·…cø:A5-…+GäV£³ˆÚã^Ä3«‹Ü*‚t|Fc †½ºò§Ì°-íûÛ-k{ÂhŠpঠÎò#›5‹€I0ß'ì¦üýÚÙel›mÛã$>æ„o6í>µœtòjýÞ”¿[ÎC$k!Ž]5ÏÕï%¥pv—‘Í1•´÷˜´üÓ’ðQº%v¿—¿—„ÐÛ7-ò˜ÄbËôÙQÔ³p­9Ú.~MŠí,ð³lïcÝUŒˆ œÝõcÚ5ãÓð#†óvËZXn7—­à{WE¼îØSby«Åi¶LÏ“ÛkZpK¶lbí',h÷ßX]µ»ÎæiÛ—{ïÕÙo?Ùî”=mÝßç<"uTYiKtߨSo ¢Dv@Ö„Èñ—ÛÒ? K'aQ{‡u=‚t›Ð†bü®ûŠó1:»:ìa^-$§/Bt›lÕb. :Z‡ò=BtãØ6\öÁ­["þ^¾ˆÐ-‹µ.ˆžeúçýôN¸m(»Ò»ÅÁ­ˆ`¨GxÎâ¹n¯t#žµdé="­¸ý/¶]ÑöêÞw± ÷½u^ûùÛB®7úÝ#0gálçõà%xƒ@=¢r¶—ý^»jíw¼ï©ˆÉYÂ]¹ ‹mÞ7”Õ$g;Ã’O¢Sß[…*{ÐOµ€i½!Ì!9 g·Sn‡Ï6®¸Òé˰E‹EvÑ#$ÇϨ¥ÚkMmìý­"$7í³èâzxþθ=«Î°¿¿Ëÿ=!rÇ‚]»ØTíåöÉÙ:&í  õ‘J­ö†Ûýo€=ïM!9‹ÄLnïøVS–ÜVÁ¶±{hrˆg®X:^6×´ñ»s,8æ­ëðöÉ-{V»Ã· .S»]:¶ªD½ï]!¹ÛFÛÀX“ò‹øV’£ôt©ù×!ŽÉ-{íÖI½ñ °õÉQ ±Mà$œ!ÇL+néíB»pAÞ#Š[z7½NÉß‹v¯ÛB¦Kºße½žre@\»±¢B×# w@Aì MK¾Ë›žÚ# W-þ²Ø¨œÔ7fÔ#A®X2`‘HµPÇî¹w~ÓWXqû–.« —¾{ªüÔÀ·Çêóº”e¶â6B|§”£SõµzOˆßxuOˆ s…´-ízoõ߈\µX²Qþ°Ù‚nöãtG˜*´.»HÞ¿#rpü¼ uï»zÐ# g{’狪Ã{@\ñY¸'• ûrï½9 ¿U¾Û1'0"rã'k®¶Œ6B|H ݨÜÛÆ¢ )Ò!9¨VööQÃ+[äA’³×.ûõdso`¢GH®´c¡§í* úfU?$Ò$y—à¸ØåÞÅVL¬9‹Z푪þÁ蓳ÃÍêQ ˜GÄ ‰5Ç?N,]ìQß*¬z]ÖŸ½8ì¬÷¹M€œ‹¶`<@¸¯ÁIØ;ÄG‹'A“E~–à¸êì–d’½‡üâÂB)8uûá­Žö={‚㸨ò_ËÕªxŸ×úÏVˆ ð÷žà¸b_gÙµb_Š¢ïûRIxœÝìÛâ‹î,ûwÄp¬Ô^óïðœÄK’9Ð…XÀ’ƒþæÀõÈY´á…²-Ð{ÃÜÇ’Ö €L\ÿî–ãרk=ºåï=–9‹þì}k\ÄåÍÕê7q*¦=UöïOàAAê ƒJÐË"¶{üMv ‘ëö}ª¥ƒwâ)ŒÈÙegYP¹…*ï f”·qd‘cµ÷Q «¿-Ÿ6WóÖ"¡‘ tTŒmô~¦1"÷Sà±§Ô&l½ÓÏÁ8ˆA“¢Ð…RñÜ’#‚qôÐÔe¹ô&òŸ‘YñÂCF¶ŸòæLŽÆÙÁ¹Ç’ˆ.oØkD0nS!·ˆ|‚(ª±Îj_Å¢!›Xïá²§(kï¢% · râˆXœ½'v¢œw´ú‹£~äd%ÖßÌÁ±8ë eáTÂù÷ˆøÂ;”ƒ,,Ôˆ`œ%¤g4»ƒì³ç›ç="·Æ–¾-ä"vUdÎmèó·,»±Š ÒÇ9QÃ2ˆj[ÙÇSÛòYàloøV[º2õr‹RßoܜDÿ¶·æ½¢j: gq™o²ØØéR‡.ÒA²,˜~­JköŒ{Ì |¹÷€ô’oÚ ,6{dßû$br«R·Û瀈_£7 õ¦=µvõ^Á“ã]†•4ÙZïáûXí–·pÇaÛ‚a1v®®Q1Ý›üå1z³D òÇ„"/Þþnv >'lʽAw$’HܤDH6ÿ®¸ŒÈÙC”CUN%ò ’»ö–qÙÆRI„ä6¼ç&ÆCÜÕ‘£ÃyÖNäú="æåPѶÈ>ðkÞ#b–ÝB†åõzñ­Â¢`ß(ÛÎîûŠKp\µíßïN¯Þ{E"g ‡tÐqdÀÞ=q¶©ž,Z-Ç»{wÜćµ-Bã.™Ç‹‹ëôÚÛïNcê{D¼Þml+Ò×eÄ{¶"gÙYçr_ðâÔg„U‡(bQ@£·‰«7ápÇ®wÚ)Š· ˆùMŒXø$,\×b²brNŸÙÜ¥EPüfIŒXˆ–²üdÂï™e?mÀØ{‹n‘…“î)ýûB™‚«…Ü£pHF{7f„຅”: ”*ñ {§—¸z/ùxG3#pöË:ÔbŸ«1K†^¡pLè&yHÀ{sŠÆ²1e¾‹Ö3"pqs8ŽSÇ;!š‚Û›ËÝfJp'çoá.À] e,}œÞ÷>é3¢påØÛf¯]ôˆ/–:ÙJµåè‹M‹ðýûkbÂÚ]¯ Þ‰¨—ÎÅ]Lö¶Õ7#iF(λd¡­ÙG‰v¹¡8rz{°h±5sò5KÖ,–¹–Ó‹F¶™€8þËògûJ6êý+"g/B#ý·<•¬ç="µ5€;!G‰ ÌÄ¿¯:£ç-Í–(ã\æ÷ý´Í–˜¯6?MDñ…‚äζ®=öSlÞ– v“Eðv5qc%^B,–Ò+(Øè3ÂpÍ©õ½{;›yq°¤:@l‚瀈ÂÑ—T—E&õÑ{># ËÎw¡ùô]‘™…;×ú(Ó€üžÜÃÙ#`WˆE?6 ÌyFµËsÕn{#¯3¢pPöéuXC0AfCƒG·Ö±äúÅ{DdPØÑEjÓº³Ç~hd+ô) væì©¦ZÙM Q™ÕÞ ÎiŹ©–Ýo*ù{D”•ÚË‹–Ž¿K3Bp}YBkY!Š"rDâ:[Ì@¯‚ñó†»fdÆõ £“°²©~yŒÜé._-ç~WKfáСÚÀæö½ßrŽÄ“‚QlÁ’Í€š#õ±qV‚,J?ï©[µÚæ"*4cFÎv¹¥ƒk‘½#µª¢´ñq3ñÄFÎö­m»EV_¢+F2‹.ÐÚ+3µªÒÈEìtÌß#f¼¢·“&·—iß«q8€>ýf{j¦G|¯AØZÆx—ˆfâÅY†Ö75TÔ£ÄGÄ;}Õõ ¯¡‹«*)Ç!a‡Ïî£ñ®gÏ„ÂQ&°K 0¸¾SÁQ8×ZC—éÌÛßyóŒ(܄ñ‘Hãbx¯FáÜÚ~F¥?Pˆ'Üî~þ¸QÕ!Rá`ZÚªÛÇXZ öaáê±{“{zÑwûav^K¯ËÏ-xÂàl+uø+í9ñrD Îå67 Ê€Qïo18ªÍˆhN:¦Å.IÌ8—0´Mky©o`iFŽÎr JÛ"Œ&âÉÂÑ,Mƒõ†Uô^óØ©Jû½ýj /šŠÃ~CpÐǤ»„/&Öo§–[!ž±EîÚ ‚³@gÁuÞrÅK!8»ÿ+)vóÞ8‘ŸFZ Y›ø¨ÑúþˆÂA±¯æ¢uã¨ÍÂ1쵩èà •£%ξœ›Kœß|r«bó¦»+—(]͈ÂYÍ&œÔ(T„Q¸As—e´¶ìS°…gÖ‘£–ZNËx2²6H„ݲõ¥šIFî’>Ùõ¸Ù2ïEI8\ã¹¥zgÙPœ‡³xòòÞ½6‘kF®ºì­;@o zFÎVpAô±hØý="®;¿Ü¹èôݾqΙqPœ§¹ÜõbßÄvï(%][˜2ï±I±Ã™õBK;ïrÃŒ@Ü Hä®iQ ¢b¡.ª+Âp0é!LuІˆ•a¸ÓmƒX‚wª¨ø­ÑàØ_ƒ¬¨Ðr•\Ní¶èv'[ðþ&›®’Ý¢+{níéW<<+q^2Ú—U¬•€8x¹Î€Çz®ÇJHœ…º}:¡]ñµ’¨q;ü ÄÞnßÉî®ÖÞL¤Á¸N4SŽ+àÔ7`»"‡>,¸0JQK¬EãŠeûÿ¼nŠÏ²'îÀƒ¤w–ôûåé™>Ñ #xÞèèJœ¸ƒÖšã·¾ÕW)âW»¨1‰ÙpGƒðêÓ_ê7GƒØÓäÖÚᆲ•Ð8T\xW]yK‡›Ê2Jˆï‰i³Ú) Ó{ù~p%ÎBê?®OñŽ­W¢Ä­Ÿø½^§+¼GÄ~&!ØOµ•Ð8 Cí%@˜½Ì7i¥FÕnO‡yïϘ© Zhíl®ºüÆ!WäÎ$Œ³$ÉErVäh˲(Ã"oÂ|ˆá;ºíCdX¯ˆL1ÎãiçT[`/~yÈÕQ¦Ϊª]‰G+¡&P'†úI ”HóÉ]]¬àL¯9ŒÉFkÒ¦eê=äÆím6 á{Ää,è€ý^=Õ“A¹†ˆ.i‹¦±÷6IÔ8Ê,—wU_+öªò>!â¾m»ˆé˜\Aëæ¢rèäCâÝ~à«£Kð¦5¬ ,&,ú±ÿFfñ::BTʼãOüòxÐo¡wýxÜðOVDåì¯ÊhÀè{¾ ¼+br í¥®ù‘„DLaÛÿSM³ˆ;1brhO¹x²­Ç§6¹;€gÐ$¿û¹íJêq¶àHͲÓÏ_‘g‘~sÁÎ rò~?"/eûFèUm!)¿’|ý¶M;DQÅì&ƒ‡A3:ˆo—³ù<@, ‘q•±¤VU׿E¿Ñ.ÇwóÒÊÌ8{”Ñ=é”`ß:M+3ãŠKÈ¡°>ÞŒœ•Õ㈕:]U¥ ýŠ ÑÕ২«ßž°™ëÐþ(vÍí.vÊIØÌ¤ DÛi“?%UØlÏÛ1¼®ÓõÞñ“³T)ãòÓxø’zÉU¡À¨W©TjVuK‹BïȪB:pÝă¥gŸVè÷o‰°œ;HØÐþñFJWbÇ]Þô)Aã÷ˆË-p<;·áË÷ÊßD~¦ú¼-»ƒÅõ^Å›Ûè·èZÕ W„äÜ8éºÁÃus’N7 M$ïG!‚rµR¤MʬwËÂÎ ªvÒ¼ÏÄž^1Y;5¨Òû 6g‡½ŠÚÙ΂qð„,úÃö§ ³•‘¹s½† ¿Œ2ë{DÔ$°ëåfa¾‰6;sv5·H²ILîÌmþq¸ò˜À¼Ë5; ÆyQÖûÝ`¿GD1`z#@lË]ž{TÑõ´ÅÐ爈ÊÙϰàÄ"4z¹Þ¼™]CÚfá%Í?H‹ŠÇgר• í‰Û¥1 õ¤sœÜÉ ±€ç“¸khd‚ÑŠâ.’§ohqGD vc?U-¥|3wäâH®škHÌm æln¢æ]Ø›¼ˆhÃ:qø½wá6€d”yÞ?$âq\ô*íV±µ¨ÇÙ´¢;Ò 5ü烰#ç=ûô8^x‘ïÌÞôhZÀO#Ôzß½;y; ìâcÑY÷ºjO<ÕJÉÿ}3 ‡¸ç¢w ´E|¯xÅãuD؈ؾ‘ûÑëvqÙüûwDäªqÈD:ßK’}º+çÀ^Iš tÜÂõÔM‰<´§Êt•ûN¸Ú(ûzéûšËžèÔLÙíÉñNÈ]ÆK;´Ä:ö\oCD¹bŽ(nºÌÑŒn[¶]|â3RíÅži²¤Mº$öpâÊ ^hbîmq@œ"¿·w½€+‹¿OX,QiAkp·· ý©â†¬ËK°ê½ç#6w]Š€Ú9U¼Ò™)G£¥6ð‘ìù.¦ÇU‡Å+=kßÞ!°K·ç{D\tŠz‡GÞñ”ŒÔÙdqÒ# Ta/»:‡P õ¼k1×;ÛÝ3½ì(©µj¿âÌ7]nGt® áȲ nìd퀅&¢·–7Ê¿»¢Â{'ýÞÍmÁŠvÄçàûðº1jƒbHÂá)ž@!⸿¡°!:g&ÍG–¾O¡·³#F‡Œ¼Ø—ñóãER&ô޽IÇûB÷ô÷Ü¿9ñV¶ûÜ&þàÃÊvÿBÓÄ|XÙî_H™øƒŸÓý ð5“ûk&÷×LÜ_3¹¿frÍäþšÉý5“ûk&÷×Lž¯™<_3y¾fò|ÍäùšÉó5“çk&Ï×Lž¯™<_3y¿fò~ÍäýšÉû5“÷k&ï×LÞ¯™¼_3y¿fò~Ìä)3yÊÇLžò1“§|Ìä)3yÊÇLžò1“§|Ìä)3yÊ×LÖ¯™¬_3Y¿f²~ÍdýšÉú5“õk&ë×LÖ¯™¬_3Ù¾f²}ÍdûšÉö5“ík&Û×L¶¯™l_3Ù¾f²}ÍdÿšÉþ5“ýk&û×Lö¯™ì_3Ù¿f²ÍdÿšÉþ5“ãk&Ç×Lޝ™_39¾fr|ÍäøšÉñ5“ãk&Ç×Lί™œ_39¿fr~ÍäüšÉù5“ók&ç×Lί™üÊqÎWŽs¾rœó•㜯ç|å8ç+Ç9_9ÎùÊqÎWŽs¾rœó•㜯ç|å8ç+Ç9_9ÎùÊqÎWŽs¾rœó•㜯ç|å8ç+Ç9_9ÎùÊqN¬m×¹¼ktÓ«òæ°žXÛv~‚›hP‚{‚'V¶7ÿº«‚÷)4ûN¬lŸ‹P ô¥[DïÓ‰•í‹äÁHõÒÜùqÿgGIJöÿÈ·ŠUíÿ‘_«Úÿ#³«Úÿ#+ø•¯lì|ecç+;_ÙØùÊÆîW6v¿²±û•ݯlì~ec÷+»_ÙØýÊÆîW6v¿²±û•ݯlì~ec÷+»_ÙØ­‰HåbÞwƒÉÕVl&fêÔ6ß-š7V[‡Ëâ4ºÕK{wGÝXm¥»ŽWëm Iç«­}à¹Q÷‚1ú„Ôoªµî½FÅ~Qëç¥s“‰½èPwgáç<ë›Ë„8°:T­›ÝW -/ÄňÔò‚=­ŸwÔû.Öܯ¬ñ~e7•Q+—âë]溩Œ:mD´Ýý¾°o.£®O¤¨Éï˨Ô9æ„¿ ûðý­bÛƒ¶lù1ç~“qn¬¡vûZ<%£w§üMz¿b‰}%x‚›z“ÒȤnÁDÁ¦?$éHAÞÁ/Ï{3Ç *&ïõǤ9{ñµ"-ŽŽÓãµ±*Ü«n,¡B¤³°‘N¹ïbÚT—ŸÜ—¢ò›»±»]b[‹Öº-º‡ováB4 ïÊØñ{D –I;©»rÞä›J¨wÃrÇT« ÉæK¨«"&£µm±wÅê&±‘†2]à•âØ{Ds_ šMͨì¾GÄ5ÿé’Ÿí»7aâ~%ç7ÕK]jiØšÑùžš¯lýþÎÖ)].û¥‹/{é»ïæ™o«á÷qð‰S 760î/;³¢¹ÓÅ—%ÒŽ*M.°)ÅùO%Räİ릅àM5R{ïvÚ­”œnêc€B€e(a´zSF|1€eÿýÝ sgâ¹¶Ê¥‰ôŠ™762 ·ÃÏݱð~¡ 7¹lÕzVgÁ‘qAHõE ÝVܾ6Ö°ï•K½ µ!5ßÇ9.àñ’Ø/\+Í^:HÇâÊËV[cc¬†Ï~Eï!Ih [ìE»šï&°û…hÜ/DãîÄkB;ò4"ÄÒßWTìO(èâX¾eÁÙ¨B`å&ÑJ;õFÀ.+1"­lA¿†~zÊÞ+»Ós!¼#,¦ž]÷ +¹±#Á+:Ž61˜h½›nlI°/1žƒÚ0ö»‡ü&¥Bæë„Í~•—ÌMR!D]ÈïÀ±ëå-hx£.nq¥ûÐJ½ó{HÍ»ÒÝÙР)ÂÑí¦Îg«v{BÜ–öÝ{~÷&Œ¿,‚ð{fÛûë?¼ûîW•úþ®RÿE³ȱå«w“u­·«¹¨Šb±æ_µìûU˾¹× båG[üÄRó½œÙË­„:©‡Àä=g_%ï›lé x +ÞpŒ"ðü*ƒß¤ò†¡…ñt¹X°'t oÖù(îi'jÖB1ú&3zNFÁ-ÊîÒµ…’þMª»vÉfb8J¿Ò{H:´X¾ZÌ€ª³,1&­ò¨ )ÙË‹^ßêíµ¤î‚ okY°ííÝgˆ1^Üø4;Ð)RµP­Áì"ïüãÁíÞX*?^tééÌ åÏ%¢»)B} _o·rd-É ËVóTŽÑèV“LrhØnˆß—ûî@¯%öXT`!»·6âë%†D ƒy~¼%ùÂèÁU+þæiAe8&ã˶"^y³ŽwDVKÔû˜ØsóäØa¶ \1Ÿß#"¬gÛƒ°°¼8BµÜ¹‹a¡z±Ëž+,¤ŸÁê!éUoq.F!¢CÛôYá}z¹õª0ÖBž,&Ç´Ÿ¢¾z•¤ ‰ÙñÆñy÷ÐC¢.#>•6æ !*q®qzVI[ÄŠ@WoèiTz{îCb†t<,Á–‡Þ†Ø»ç–E}ò{%„‚=„LbV1$6ü ž‹ ”Åñ ›ª‘ÒfY”ÝIÇæ -U±øŒ[xBÍEïÝ…RkÒÏEUÅ1¸šou/óÿûú—²ow^ÌEÔˆèa×èø!t*Ùhoy̳,!ºÝ5äĨßh™Ó饞ôÈu³÷’D˜ú–—¤{(¬äp®´…ôgª9Nþ¤4rÎ9ÙAc+©†ê™ôò×AĦ-âtØ âª(l1mHª cQN ËÎ÷ŒµˆÒa-hß7ÇRüüAºU(&]'ÆMñbµdp5®kµyº.àú:ÑÖ-aˆÆndCc’z‰!iõí÷†Ù 1$}0[•~òvï!šCß³DÚɺHl[DæVϳÀÙU!nÑãjMÜ&-bG8´Û,±YÁ* žs¢àÙ"tgÏ4µNä;Ü"r‡•‹KYBQQ‹¸pêØb´[nûƒÂj‘UØA;'ê7§ª^KŽó“<÷ôD}JK‹ð6¡ˆµ?\®°t9´- ’ÖÞÝÿ,'@^ É~(0Á/¦”*¼mÙè ÇkKyzÔÎN|Ǭ¨Y}H¤¶v¢êÕ¡·ÏwKm‘7Ýmþªˆ ­¥¥'¥ƒjÈ#6XöºâÃ'{UñS"BGºeèüorH\û¾íÕsgJEPiŸƒÍ„5È¡€øv©!Å/+4Mð‹1› «ÛÈœÁ$Õ&·ýÔsÄøäwÈ~óï"ê­çc•`[b±äˆèO½ù¦ôWØí'€í–L¯¦?­–oÞ­8†­ç¼]l‚+‰c´Ôz»+¬ÜÎDÂÙ"gnÒ ˆ“§  Š9NòºnRû,K…ÿ° ‰ÌW»QAˆ¼oQ•-ræØŠì”»E»Rm‘1G‘G $›@³[êµ[¥/Ìèa#ª)ŽlH»…±¯¥æ0D¢Ó"xçÆ" Õk ùJDÆœ]C€ð÷ðL‹ÈÝÜ d‰hu%ÿ«†CÑ(ËĈxê-k>PEpyV3œé')®b°µðÁÛpè“YÞy-†Ì¸ïØê“<ñÞ%Wzè"Ëž‰FG¼ú-‰dq]Ýà8®*Ú9Znµ ÃŽK÷&ŠF-ÂyF`úaÑÅTéT‹pžÝÕ­ÌÐW[,Ây£Ð¦n‡†nÁ°lγý…RV«MÞHÉ ~:¿’;ÿõæE86`Xr¸ MæÚ"œgqô¶‰v#ž¦ŠçMØBàöÃd±–ɤ¢û!H¼‡$9ýàŠ—#ü”xÝÂÛ%píA²àB|±äSu_ªrE¥ì-Ây¤d0•P|’çZ2¦Ç£Dë4IŽm¾[ÀŠv !D¨¾“á;ò€Y½-«1$.ö ÌGz:h¥C’o‚>:<Õ.Üù¬S3ž0F!îŠ1ч¦|Ë9‘6`˜¢$¤‘¤¶( äbH\íÛ0D1ã*öM‹€^¥ë ËÚTU ½y(ƒlwïSí--zî*ì­ÌÝ™Äï!ñ®ˆß`½¯ ´%Õ0K´l§Xxoo¦šãøÊ÷Aå/´ÛvpRonôñs¦Ô¨F¶yvÿ骖=šŽíjä¾î' ƒΜ.¡©’¡›‚{æ¶}ÊbHÌë êêkÅྲZfO0!¦ë&V5ŸB„,¶a¼Ÿß^š¶HÞ{XöÊÖ ¿,ÕõÜ#Šgeûþ£Å‘" èÅ;œF §i RU¸ÞÃÂ[¸*ñJ‡¦)FÄÊÍÚ¤€·/K›Ѭ'ÆÝæ õ“gRÀÄ=îªÃêݮԡÿllí‰\·¦¿ÔÔ‹P5«=qëV…’`ISÇ®^¬ÝÈM˃&~{„†êsî·Û›’ˆEÍ–Ÿw>’x\á1ÌÞÈÁ‰!ñ„¦vÈQĬfäή6»è –Ÿ{]éB»ØùéYϼ»AVM`9H6zâÝQ™´“òy!ì#Ó+vp÷t§‹- ²Jww;‚#ávU{êw¥Û™Ôű™r»lA¼Ñ‘d"7ôËz+fCUªqŒ–›åí5Ѥn娴ü±ØØÖÕfR„#µÌzrµ#Ïë~¦>Zn”·äÜšæ®âbPî”ÇT*rikõå½ÀæM¡ÏÐ9³A,KKÑeQ¶“çê(-«¯Ÿe¡‡uÇxHÔ ¯Ünä–X:uM ïŠ6Rîì…í®ÑgQ–@Fë,R´l[Pº0!»ñ½âýZ¶jK5ºŒH¹[vxÛO#1?1$vXPWìx\Xì¢V/¢uùi ²|µ^õĹCriªà§ŽÄ¹³«Å^r0­¦¸‘ÌèØj®`…DÌ{ÈÈÙB÷K§oU0ûFÄî,ÞGÙ‰¾ÝDp=ç ¦s§Ú¨ "f7-j¦ÁiÒ˜%葚h‘—¯;:«†„Õ_ /;›‚è2"\gÅE°ÁEYEÉw¤&Z‹É+|ô¶évC"ñj¦^•T,„:ðþ¼ï…RÆÉÍTž×¡Á­Â‚D¹k ˆ(q®ŸgÈö¥E­ Ÿ12œpº¹Èí׫Ð3qîªƒŽ·NoÀCb„gïJq æ¦÷KÄç Ú5(ŠÐ²Å¯O”»~Š]’–€ ##\·ÉJ¸Ûæ#ΰúý!‡c,Å„j¡†Ä7Ÿ&AËÛà¸à|ÕÙ›G3iýÈ!É.±ÑÖú´k_ô"ŒÔÛ•lw ò/jUbWÌe¤P,‘WÌá‘zh1âêåÇI\b3ïh?±XÆKu"gj¡=²oCÀQ]fIuÙk¹Ó¦K_e¥3bv¶|D¡^1¯"°š²ë8ÑIž ^£‰w?Õ^4ºYÒ“Ø“]EÐDä§&JB (i=UC¢’<Æ6”ƒ‹3éÄxéCµ¥e_>qÀfdÞ¡F‹p'ý1 cš©ƒUhôH¡~ߌˆž½–AÃÒ¼ÀbH<ù—*,MË Åk4#š×§‹,£ëâäï!ñÉG³Ë1Ì»ˆ«fÍy=ÑñævUªª3·ÐNZ1ìp!K¬¾X\ý…Êô¦ÉmTqYÌšx—TÀ“AœY—ˆáßêºíC±;g²KµPôr[Ø»â9šÉE®ðu!7¾ßï¡;L,¶<º7‘rÏÜAHßt%Ѓ§n˜–ú§«¨ÙÒb¶”íu_è5]ü3±ï0q{{‘E6S­máB3´GÖbóÇ.Úá(ñuCá­[gõhL°Ø~ïPÊS3ÙHñ,x{Ò,Ô†$TNjڶ:E&»3az6aëp²J±,==úß_hYîÅé:ý&)úÙK^?ÈËXŒjŸ8” Ò[þðÁ´ÙU 3Bz`ÄVÊ{”‘© ‰¿íÉõ³üÞ6ö’ = Vg9ßV,™ = m!STyyæ6Z)' Ř™ŽG‡cÇ3µÉg?™¬âõ¼ uÙ¹T?%žü,Ku ”D°é‘âÚ}4\jHˆÙÌÈÆ;„`Ì Š¾š°°ø¡‚,¦¬|͈ñÙÞ틭ŵ$à”™úhI[í„uD¢Ô1>b‹A½™3uò“óDÃUtÂV:JkwFŒdá#·‹”¿%.>€9°¨H]fÄøì©è²D]eF”Œù t0ŠQ¿%û‚-zSPõ¸F”Ùûy–UÌ¢Š\3¢|T09dnm%à„™ié2¹™%i’0Oo» ´eíçÈœ )è_„ßM‡»º,MÏŒ˜1ÐÓ"úÞf‚ù:¢Ôë`&ÌrF˜¯ºz6,XÌdGßÕ’ð6á2ˆÒÔL½´Þ’è:²[iéψóa>‡ÖÐð»LŸfú¨ï7zFÅ‹8_…].¹úb;7Øa`͋٧гžç³äÈÞŠf7[AœåˆóÍâ&p€C¸f‹!©“~¹’ìi_‹-“p¾ë²‹/ÜÔÓq¾Ãâ/Àt:&ÕŒ%”>õpÞeQg9â|מ>¤1—«æ‰Sq>wb¡ºÝºK2<‡DœocÖXýŒ]5aæÛ¶)ÙÛ'MùŠ'˜Ïes|KÚ,‹_a>,ªˆv-ö[]”·f„ù°ú¶³Eãh~‰é«c'joÿVïxbãa9I›¨»d«,"}ØÍÙòCÿ„š&†DWH ǰ€¦<+úÓfj®Ýt3Ñaz‡röšè…Ñ(?ŒF¤ùÏCÎîª*4#Ò‡N"Ü·D“º-#ÔÇ?^[±—IFÊ7tÝ w‘®‡Å$&ì7ÒWÿÒAi(t&ßà䈾àVja3Iå!ëú£4•.ÕŒ0ßÂ,þ;Šè¢:#Ìgð6ê&Ø{=‡¬ó- 0L ÅùZ¹¿gÎNøT"@+IåêÛ{k!yQ­Â+}X¤Ã‘ ,0Ŷ"ÐH~@¸=}SŸ>%ÄÁAv,1")å¡vÐMVô¿a¾‹ÌB2¡ »M 4 ½·ý*©Ñ®[6m·ºÝÈÝ_55Xz¬kKco¾`¯ˆò9í@"C ¬Ø_K'6Žß\êkE¹, I–7Ú]º¬Ø_ *rHuh5\Ñ'ï·K°ÝZ¹jl°Ä·ýPÄîJŒ õÝ.: Ü Á©'eÕ¯®‹E;XÝ+«†UÇ“8/cAñ\ݳÀbÈ…nÌ.‚„²=ïð˜ûí(í…á={I6TÿåW«úf1Ч{p‚¹¢ÿ"r£{k œ4ûIô Ð}ExÏbdf0qC„-«¥$Q—·M9ôþJ&±×ö¢emÞ‘­.¼ï¡ÇUé’A"P­ï!‰ð#ßT×ïŠð}å{_.‘K¯ï5Zp¶ *4eݼzlªwÏ/‹d.>bDO#èè¼ÃÁw1".=Üù¡,«÷¡ÇwÞû¼¸‹ÙhbDŒðmÓ… Ž’ [Û³ýµpFraÁÉYÛó³[(4u%8³"´‡r ³Åuˆ#´‡(P»Ý•C5E¬íqQhlÐxñeEhÏnº9'bl~ï‰!é¾ß—[²ã›#’Û¡½ €êúpÞ×"†D lhEy%Dý–øÒ#jt][F’+»Ê¢¬5QxÆÃT ‰ü=êf6lb(.ˆÏ+b{Õ™eh#RÌC"¶·€©hjÚ($‰› Õï˜P`Á¾UQcElïb×›=‘Ý?1$‰cBJ±àž{L­K²•½ÈgÓ¿aB}J\}¤Ð)—ú«œ|ð-XÅÞC’¢¶–vIZؾ¶±f òIÔzã7MÁY‰ÁGa:6šz¶76Iâ¢s^•€WÄö€ˆ©ÑTëÜJ"yhGÙßî¿á»ƒ¯AM‡ŽJ!@¬K‚ö¨ÿ{‡ë¢«Flåíµm£‚¼b0õŠÐÊETò])Bå ÙkÀ´›„1¢’=fÙ~ÇÆ \”šWBöλ¿ÙI»´ %¡b‘…€V’ÉHMÑ·®úV„öðN+ÒBXQák„öì•@æãÂ:Wò+Ù^Ðë­Á½ ¡=–H÷o¨×2B{ë‚og½GÄÕ·¯y³å«¥^;7ܾÁþ €ª~~²­œ”­°Ë²[V]þ¿±=‹{P1°íyàÕˆñÓ ;Üþ÷]™°¯ÔnK¨;QwçqòÊݶÇ]Î doeB¶Nn»¤Ÿ­/”¡”ÙçJø»·7Ìã*-ï1‘Е‡gÉz5"‚LÆ;D´ÖŠIŽlÛüÝ}ud¢|Þ€·ŽwÓØªHµ¢|—>¯¸ý½B_¢zÞðûWÎVmÀ;9ÖbKBí¤þõbLr)…ëo7T8²S÷íûU(],oÓ{I-×0MXy£kwê¾ÅÅ6%—c($b—Dé€^H@¼$Ùb'.==·Ø;;¶"ŽìÄå#³Ú0 í:Sþd]º%•ÄúudØy}ªþÿ]ãÝïžÅô¤n…vìß"j ç(ªxŽþEÔ –¹v¯m ñC¢„Þ!õtÅ*¦¦\Tç ?\êTW­cýêÀÜ©·Ã'ƒœµzc²!À^×d/QöÜ©—ž\ ó7²ªG$-;5àn˜‘®ùyé±|Iý·‘Xs'<ŠÏIðž›Õv ªfØbÌ—$òn<ís;‚ƒÎÎŽ® ¥ßÛ^ßCblg—¡=66Ž05$fvtÃZ.´/·©ú¹Ô¡¾‹ä:¬¢>¶SÏ-æÓ{*AÎÔïâ÷'—NCˆ±âÇ$<c dæw©ª¤º#žg‡ÏÖ™¶U»JEÝrGº½Žtnâ>¦Ð“éz ,À€H#7QêÜ‘¯7½ÕÑí™UÔ¢vϤ ÄK kR/C’¤ÎOY¥XL°‡H vÌ;vpÌ( 3êÆJM¸È!L”±Ùeêc"žKNGß.mP¢¦ºGnÌÄŠ¤À')ê°~u¶úÇîDĘÚ/D¥p¢BŠDlÌd|1;øQA[þˆêÁC²FQ&¢zˆ¹Ùp«¦íP=»˜,´ä¥_¥H¹“óEw~«÷Á)~뎨ÅtKÒqùºJKmGTo  ƒÜFÝ1Õëhz^ÌÞºj7Ù Ôþ|VBÂ* ýiW»“Te¡NËu91&-v!ä·GuA±rÄx# ›=:¯¢ãmhŽï6AÙÄó§„6¬J-Y\¨É¸vá)p(+”­‚Ò™¸¹¨¬ÿ8®)g«Úp/J;hŽ!k-~~ñ¶÷ûàyï]bHlʰ«¤ËQ4P{*‚xÜŒ'ŠÉM€%;‚xT7Æ­(ã©ã1pWJÕ”ñ;˜{ͽDÃíøÝ¶ƒ4ÚgUë›<[ÅSh¢$CRÖîT¼¬&®bU"€wx úÈŠg*"xûŒCÿìpUo5Ç1¤Ÿ×e?0¸ê°'/ º-½êˆÐ“8PÁÃÒ¬âmã=ºâçGeC8ÉöVo¹úIãnWô ií]2Ü©JO'Ð"L?zH|Ø;y)­CWoËáÁ•¦¢Â¹ù<;º ð°*—YPò²°ÇyS³¹(¨O‰«KôÂ>'q^²ÆêÁð:1$"9Ëü'#*©7{Y€ba½;,_,Áxm€2àðä_ï!QäŽÍÕ‘¾)X^‹!=Í}Í'Z—ã­N;ýÍ•ýÕ›éSî…µçG]¯'Õk/ß Ðl)ÂÅ8ÞZ›Ç…gl(Mšq¼ lÅ~ó±ú Ç# `„¢ò€›Î~Ç 2mtbHR:ƒ ÑrvÕ´u#’GÚ7Ç[©T‘¼I'¾<525d¤÷I&û¿v.…ÞúMHÞp¾95ïnz‰¯>:¥TêÙ*àŒPe;{îQË‘ù|Dò&ޏ7¹måùu#’g; «(&«œ7¥ }¶„c²&¿îñÆM\3äæv‡!Ôˆ6ËÁGW"bët‹ÎFažŠÞE ¼ìîZ•ï´±•’(:ö§…–’ 1"|áñ?©!±d‹Ùí{Ç[TÅð§2±I~±DGhÞ=Œlgª…Œe;‹íajPÄ(jH¤æU¤*ÞÎ{ Ÿ h•1Þ…ÆG@¶›(+aÚã7´U&C¼übHl‘â®,öµ,î¯ï|ֆĚí¨N¥£Yô?ƒ?Æ/Ö'ï$øïj„HÙ<È'hž¡b%’Gi†wÉz[†Ø˜Ô!¹P šÈ&‚W‡µôBŒ÷a­óFfP« CF¶íC¶C" ¼Š­%"nâ÷G ÏÞMìì6l˜a‹!‘›·+BSº¾+Ã6"*žíeØÂ„þ¦ÀÅÌv Ûñ!XÕšmc’ɼÛp‘‹AdUcâêωYgWŽ>Õ²¤ìþ"†:&ϱ0f±1ʳÏq})*8ïÈ’2mx¹`‘ƒ.Í$†Äܾýx ôþ•ú”åÁÅwI½#úcIëÂ4J—ìP˜‰Äë²XT Òfì­lC"–wÀ°¹c 1$˜yËë"„.[é©~G£ÑæÃTR ‰!âÚ£óÆÊmH²šG7¶FÆoçûƒÔ°Y4“Ñ&ÆÄN ˜ˆëôIµTüœˆæq2]8Þ~Óª ô؇{©ÐÀMŸDLA„óìz¥k“ɤïC}µ$mÍÂlô|ªÇ„ï1Iù®Ã ´C÷PìšðÙÑGaÎR¥O‰Y;âU'µRe¼V’ôø.4æF™ï!ÞCïEº9ß¡2}ñرÂérÌ´½™åLŒ¶ÞµŒV"Ü×Ê‚Ë6Û„ÒÇqÏ Ëb0(š]Íy ?5U2 åê·âîìt["Dð °Ãü=‚žL$kí®­*Rž¨ùcA¿Ñ ~ˆâ7°—ªm½ì0®’ýµEŠW… +¼ût’o²ê¾7¦• ¸DÁ%¢"ÌYå§Q\áTB§CRéÞÙ´Þa®'†$ÑØ$m±7‘ ™á¿Ncß¶8¢8£`ž|ƒâ+ß䘧«ŽE„õPŽnă"—zL“ÀÝËÝS;JëbH¼æíu'"l}Sé ‘úcW›?ò;ØP½±ÐV"²WA[슳Õ„¾'&Éa}DÂⱇN ‰·<ª/ ;(>½4/±†{E$ ¦*WÛ.Æ1è{D [ìÙ;v.œjÑ›–‹™ªõ‹;œ¥QÜD»/õWºôàmSæTÏü/dOlø¯†YÏ8c|?Å@Ui|@U‰Wx»ØÊ#&æ05ÐZtAL~±¹™*ˆÈ|óJ•rø›ÑJDîp䱸®A!®ñÔ>»Ü1mÅÔEžÚgÅo“Þ‰Ž»Ø«»#"ïðIwÊ’øôÆðúG±ãx®˜æÝáòÜ®{9Õ.‡Dè©;ä¬ËQn%Cw¶ šÀ—`yÂÌ ¿å4*šÝÛ`Þ­ÁhhÆËª9ŠS–3ͫҫßí¶â/Îç_ÄÕ­n¾ÑÜ“^íÕšUê&é]jÐóÞßµ&•:Zæ-w@§¬¯7kÎÆÄëÛ‰|Pê¡5‰D¥&•:·çlô¸Õ ì2o*6àL¾@(kê¡EÅxpS (µä\Z1½¨€ŽjLT¦G : ½Y"ï¬%=âx¿®[¾ÇÜR#,×(,ÙSŠšë›òÚjDåpì‚›{Äm[#*÷cÏeñ)ºMoþ‡g+!e.`Ä…;j ˆ­&TÎnhò>DùŽÚ"‰a7in¡æ‡ ê›Ü`c¾b´a8Ù.øÅqd1$ºËÙv³µƒP6®È¨jáàwv?ã[ô®¢‚&uÐæ ¢%f(uÈâÕaʲÑfM²~¯åmˆü«ŸŸdê^^è Ì+8E­þ‚áÄ2DÜ­ŸýS¡o°C®;êL—ÞCb@ng§oø¶X_¾¹Üñ:³›Œ–Û&¤Ýi)¢ÛÏ2)MÒk2Ž&êL=²X.wÆ[B?Ù†¤HþÞ±; D‘ãÕùÉŞ؉Û6Æ\–æ‹6!—øø½×Q®?d¶âx$ïXáAuQnC>äŽhßc9 [ÜéG ä&qî϶¶Í7Ôó‘Ü$ ]ÙÍà(Jw5¡mTÁ"+§N¹õ•œÕõ¹”HÂÇ pµ!·TÄÑú¶×çÀD9W´cØ–.-„µ‘NèKMGDÑ,€à1±ø–ý"æüKvp7Ʊt ³#$[ ™åÿøîìN\Uh·¿ÒꚌ ¯Ešß~ W “`ÒnÙò–ÓòUÄ79©ÏqUÍÄNRsp9©PbÀ-ÎAÞâbá­FK¶wä‹=ñ¥=×jÒž[åGB ¢g©¶M–žkt4v¢mj‡bLòu–:&¹å¦b1ÎçG¤ !ìŸÀå(Õ?«Ýc”1ÏØ÷ˆ“;ÜÁ÷‡ë4—ÉìR1wÊ&-QþX7¡DJ?ë×Ý´¼t) çýÃúcâM¼)l¢’¾„V«ƒ C ]£«Q½"‘ÔæÒuÕ§©)?€VoBFaw ìvd °38:TÒ\Väâ­$d”ÞoXãÍ"Í÷Ý"t†¸·Í8‹¶ß›¤Eä õzÑ(¥_MµœÑwŽí'õ`•0µ›M½–…OÔ7KŒƒÎ¿¸+¶FK°Ùm4Ú§ˆà£%å9zP'â¡ ©rQ+_rûDÉZDÉÊ„¼1£cû‰ïq²Âk´ÁtìuÔ˜tg#kãÂóX¸¼÷x«¹_çŠCì¶“Ž9­9˜#‹[­ånT—‡ëèÃÝcÒÛYm¨Ü{“™ún;Í[œJ —®š·¨zÞ(1ONÔ ¨Ø ‰Ý´?hõÝ0gWLJ†(’/éž²gºW|!—âî´™ÙŸÒ4XB]d]-Bf§AT¿?Ê’‚‚Ùb ª‡• D Ñ"„6RDS%;L}¯H\š nœÒo¡|‹š]ëXbmhÁB2 ?«Û%0QxÂ"혷$-GåΖ˜øð¤õ”>#AN­:â·$i9;»I¹§˜‘àÒ‹ýK´ƒ´¡3B#KíáÅ,hɧµycÝaw¿;Ž¬Ã‡P)G0¨¹ÑºuPÜ]˜™%H` ßË}ä~ŠÆ hIWŽ*'7Dù¨¥þSKZ¨ÂYÌ7Ô.ΰ±Æp…Oñ÷1ÿ‚Ùçéè¡b.†Dª2Ú“‹âC§P ‰Ýi«ì댶‘¨Êh1Èß)Ìè ã//Bй£EÌ Ê(€yŠ«Üfv|÷âkwE» Ò´áS\ ¸c‹w‹œ±|ÇOìyé?Ô0?ïø™îx'Yð%d¾ˆ8O÷*²ÆvÙ«{1u¢¢J™ÉŒ!r q2ä‚1i:ðßÕ㙴䨱]×ûZŠÐÚ"NfGœ&Q§µž·˜Zk'³kä¸.*&ïmhÉ‘ÝJ?2xˆZrˆ¨-ªíÅ¥ûÞCVêGC7kÅSa3 ê{×å¨âd‹°™7¯Z¨†i^WÖJ/|!Ôíø¹ªÜ¥Eí’§V7=ÙCäb-âh–PÙùèn3vÔ¾Œ8šE€î¹ÃTK´9˜eLQ²Q_,®>-R®Ýd›O°Ù[$­¸íb¨ ŠÍŸzQ â±8&®-ºèi P4„-‹îáM«+5bm€Êðï nõ[’)k§Œ÷¢U ‰(jÁMȶ~£kF I¹»->}& ^òS"Fëm"ïO÷—XÊ â¶‡Ý‡èÑRŽMSØü¸Ù²U ±j’“%3fOÐ^Ê)j¥^T$Ó®—G‡ðvƒ†–—‹Ÿ-vbH\ý…NJ¯8jMQOl‘ÓÖ1|ÇÊöZLü!Qe‚'²æÅö[}±¸ú¹h°0[ÅAN½¨ìý ‘™Z”Ø0IS® Sê2ŠÄmbHlL(XÃÙ9¶[T(ãU—rºìÝcª×"Lç*Ðä¥ ËND˜ëæI7–ΫbâÓ,¨ÁMʪ¢ˆÐ>º–€:‹NQÕîT „žJC9ƒ§TÔãÄ÷˜äà‚ˆvy!“.ÈÕ-!uø6/Kì¾³„K-F<ï 7“…ÙRpo‹@ÝÅàŠòÅñ÷½¯zÄé6Špˆê öþý=õŸâg'wPû)`Oý§~“1âø«>%Ât7țߓÜ#L·ÙKXûí?ìɃµ’În7¾âRéII®@Çäu°s¥~JL懫Vm€½%€˜™m‡ÎH`ÐMQ¼ê±•Ö^—B…(`êž”ä†]ªë\Œ÷Ä-Ô“’ÜÁGÁÕVݵ'!¹àòõÛ¾G!9´„ˆ yPÄáê55ÓCÈŠgƒúå±Â$UÑßÂè^}Jª°¡åiÃÖµL°šzî§vôˆ‘ âD¸ä¤EFÛª bHê=ÅȲºV Aô¾QTê¼ûÔ¼·”Í£QA9z¨(º·üÄ[6xíêÂ=RüàÙ%9¼û– ¼‹»w§.|ÈÙ³3+’¨:¸þ· 0»9)ç§%ÚU{D𸻶ïXé©9N®^ž Þë¶uj!“†*»–J #•ÞSÛ1XÉ¡ˆxT¢Ú{jIÁwÓB;ÊFBFÍÆ´´ï‚ÁIr]Î[ôm„ 1$öŸÙ!£ºÀ›±gOHÞÞ.2½¢¾XRÁ¨‡4’@A챈äÙ#¹€ŽÜFGtßõ‘^|ÙÁª~N‘xô‘à{ÄF çÚ.X|OƬö°@ц$¼D‘ §žSĵ‹CþŠÛÝSÏ鶯ã^ð—®"1$.~¡y¼õ&ðÅžZN Ìqäegª_O>|<Û“tq©^Ø>SÇ1çxµ—í/õ{̵½G¯_W-·€ÿÀÝC"µ‹F¥­`ª'†Ä‹~„ °Á,j§Gf&۸͚%Åæ@éÂÙ‚MÝ“-+ )’:§6…áöÔhZÆí¥Ø/KŒì+Ì[H±K€¥§FÓÝÜÚþÂìÈA<ØA”¢`n.õ2&A9—$ÅìK}±ãЫ:ˆŠ–òÕzÛõ,¥š±ÔvŠ•Eìô¯«¨0bx¸ñ"t 3LÞ†·-†N;PUTC<¦Ê µk“o|Äð¶#ý“Þ€ÛZÒ#†Gà +úÐ,.*ˆ=bxÛk´QAí_,bxг¨[_× 3–ôäÈÓ¨7–¥ãè„áaÁK¤H7Œàrô„á\s°<´¡¢¯g ÏsÛÇHýuH´ú…V»d,j—_,Þû¡#,­ØÇêS‚¸LP|}lm†¨*õß^ý 2,Õõl±q|¸!µ³pÏÎñîPHk®ßÓwoß-w_åäÕúmùwŒ…ˆÏ¸Ô 01/uA[ÕeÕ#šçòy´®Ñ& ÞÈæñOÛ.eS©Ðo$Ïc†]­ÕWDòq¼cyù®´Í-š:zâÛA»Ø¸ÁM¨jÙ³ï+Å*{#ÐV®#c$>åMq©¯wh?R·*A7ý Å„*Þ¼‘ºU¹\6¼>dÒx2R·*äX6¿åƒŠ9r¯êÅæ>LÍÞ“=2é®!ÔZpvlBJÜ2~5j$ܱ¼0âÑkqųóûRÑ#íÞ¼z¬µ($)רÀZŒO§ˆFdå¡37xmÌÔ$)‡‚pñv˜)P‡9y˳kw7¡ñÙF¤ä!±Ý©]ÛãúÖël#¢zÜ•8wDÔ„Õtñ¸ŒëÔpA…IRîP(Û®¿¦è\#zv“-Êc3 pä^Ös0È€zºÅM3"¨g‹–PJ [ØTµ{Y) À!.ˆÁˆ:ÜH°ªË•TÜ¥”ň둉,”GÅo‰ŠrèÙ‹N)\.ÚˆŠr -'U…aºK ÿþ b¨m\ÁýÑî*êÂ1z5"®¼+Öñ Y&©n—Ô׺÷Ï›„aÅTÛ8‚zXÁLêR„0ÖHM­4\À…¢£ót¤¦Vï¹õœo)ïèááG~Ue7yç¾Ç¥§©s7¥3"-Ͼe§VбLP#ÂÒXð¸ÝÚÂÍÑÃÒc @—ZE‚Cˆx¹ .¼b g³W&ª}Uë̈p*ekС‡¤ø^ΣY0§!Œ(6qêeE&§n\Ê…p´ˆ×=”y–€FÆæqrJ‡G2dÌ3F¢â6Ør"›Rª#åøØ™æp±¨cŒDË£c¼ÓÌcI IÅzªKµYŠ"¦’\À髜š¢ïŽæÑóÜ(FÙœÉ@,‚yHÓvŒœ/ó¦†D¢ê0uˆßDMy¤^Vüè~€Ä­Â°ˆæYÚåè Q&u†#œ7 d:O°Cý–˜ä/‹[ñ¢¤Í\]à©™µz‹ ™©4ŠG„÷¨ðü€HtE29"¼gWŠ… nÓ„åá½b:ÅöÚ©lgD|ÏN’ƒ5µ+`éñ=4¡lž‘ÄD“K IêÁöÙë‚|GÅþ‘ #pv‡·(¦‚Ôì:(0Ù·"øÞHÍ® Õœâ|%™3"¾‡ßF¥rî®Ú*GÄ÷Rx$Y¥ü”,=…|*®^—Ž)1æ«Ýfìľ¦˜ ÉGŒÈb‘®Õ;õb’Ãë¦ÓdÕázÁb"œg?~ÀI]“Ê‚¸O#œ‡wÕðÔfµ#TGÄó„°Ìuci3TŽ’ñ<ûH·Óÿ" Éñ<ûnÇÍ“"_ J¶•¦¡ESr,Æñ<¯ÚÜ]È[ÌXn­¨þBªÐ3Njc‡¸l©u¡D<¯ÂÝŸËQåÏ«ö)ÎBó_¥Bç«ûyDø‡áŠÏßòþ‹÷ˆ¸Ö‹E@q¢Ò2$†$ôŽàZä¼Â ‡¤-.\§Ç[©j3²¤|]ªÏÕI­²¶‘N‡u´mbD ^í–.ÛÕÞT|–Ü xýi²„~¨ð˜()W‘T²‹®Æ¢ÐˆˆáÁ—°“„Z6|1$s6¬…'3/õ)©uv t]U'˜‰‡È1˜«oQÙrÂò¨ñT¼ÑÈÌUÈ‘uçìoâø¦tpfBòŠe3ß|Dºxvg‚òHä ¬‰æ{Î_Pžë'Ù〢'Ž *œ Êó0 »÷8:3ayX\ >ð+©Bóvfݹ…-'=Ïv—‹ëx&,¯Ñ5gûÁë-òŽY¾Zäg‚î W‹N7Ý'jÓÁÇ@o{3/ó{LÒC'ˆ^w*7bù"tßv¼sH ‰¿ºQ¼“î–Bï!1—«.²`ϱ±ú”¯K~¦ÖYà=‹h¬e]g&Äwœç%W»(µÎRaï;ÜFÕM?³•+´=ô÷ª[æˆ1IÁ‚ÚÕšŠW5“Y•Gïg) Þ™Zi±ˆFkßb‡¡\fK| ¼9ˆ¹)ÒŠ_Óû•ûê•­%¨´31ñЧvÿD¼/á™åèñ,L<›8õÅb é5@Ò£‚Õ0j‡‡¿â8t)†$ Ž­ž1¨“.z^íNÏK$æ,ÁvØÈbæ=ப³•ÈxÜCÍB–“J6 e=T\ ¥‰]Ùxˆ™ ú‡_Œ)1×IŽ]m(‚¿ ÞÅìé. èL:ÛÑøQß.=ú“ŽmJ}£*»å6#ˆW~ä(-GÏT}¹¸PãîÎÅw1&n…E/ê¦v7§êwŸÉ‚w¢Mˆô>‹ÏIŽøÆÐ énð¢=“#„›u ‰åâÐE4¯!`ÖƒíÂ<Ãá<„9PoéìW*ÍÔe[ˆˆË¼]M Ip4í`\MtJé-ߨ±bU ¾XdfbäúSÔ‰ÔKV`H¤“B©_,ÂyIì),›.ï$8ïvˆåç:ñ]„o Î#hcûÃwˆüŒp£öà?UQvf‚ó9$[ÀΧº “6-‡öÏW77W3–|àP½(WŸ«žöçÝ…*ôw¼DÄX¼;^ôv`U"œ3ùðØ;åøµE7“VÝvXv‘%¥ˆ1)ä·Ÿp Ý3zEÁ@ñÚU­W3z¼ì0|l–»‚Ùgôh ksÿô–ˆ=‹2馕ᨠÖL]·ó’X^lÔ¦çJÅ[»šëB­‡KM ‰/€»¥Òr @-JxóЛУZå› y„¹3— `8°§’¨ŒèÙáâCÇ® êÌÔekQÒÆ&“Käù3ôpÎü)í ®áL wÐ@*°!.ÁbDR?ÃÑ’2âÎÝ{ÉÆ.ŽÉŽž°„ÞÖFœ±ñ QãœIñŽ+ ;ŽÖU•!½â„rnmKНz“ä](–bû#8.†$…éÍ1Þm©’gõ:RÕ›-m¤ú˜äqœêÞüù§*)àÝâT8œ’k ÍLÞ¶õ×aÉR@3â|n¡‚DJ'ª1“yÄäJí0¢Š§yï1qP8éû™Gì=æ&ÂÖ¥;fÓ ¼¦z%ojÅ)¸0Xˆ¬À‚g귥ˮ.·kc²ƒülÀ"HõÝþû.˜Aßcr6ìaõ¯ÿ ¸ªóæà¤ñôN‡ {"âGéš3º(mˆá¾ý éoSäÀ™Ûo·§‡â®JSûm·Àý¿/¬ô Û£wÊRŠ|E˜ó„D N¢â°J~ò–vHq‰V´A>,lï†-Øy‰`¯ÝØ/ÙU3•ÒÄ*‰¯U©1e軉!êŸÝ5Ò'•¢„¹Jªànäˆg¥Q@«¤Ih ø§ÌÉVDüh?Å]{bã,jg+~p5íHÂn«ª½"âGéao$®Ê{`%²J›µëïX—DÖ[T ¬íT!¾"[‹¹`:t«_%ï!É ¬N¢²±-nÙÀ A]ÂE»öŠ í˜ªå”]Q5W„ÿP±¨ÎÀmÊËnEðEäa3ÅÃTE'ÀŠØœ x½Ð!Ìè1ˆ‰ˆ1;e×完Ðß 9„Â`ÏÒЊÐœh’J¬ˆüuœèËÄÜb—¬ˆüá•GA½mLÄÚGä¯C\¢$Fì(šÏWDþP‚X4ÇÒ #ØQ+"¨ mK^¡NqÄý «!©J ¬Z€Vfë±é-Û¥wY¼á+‘õÁ$Œu‰gñSR.]˦Ìâmüï!©ŸØÒÜ•FD‹+Òõ°ÀÍwI‘µ­H×+Ä{³PU­ä+ÒõèU¯¸Ã1ªÑø‘rÛºÞ€*p¾Õco†7…ÛÆ_r ã[¿7r#ˆKIÝä5BküWJmn"¢F$€|u {Ul²ÔùÍ–¯´‚rÀ¨'2|–uû]ϋ͕_»g ¼*<Þâ'ÇWÚÇ©ëÚòVÕ¹"ÀW:½ÐÅÛÙŽ²…Z#,~A’£”,_#­ýªÞzk·«üˆÐ—Cm!¼ U6KÜ‘ƒfX[,YňÈÍF_Æþ—p‰P»"¸‡E¦­î@¦ª™*=—Lÿx{¿èH[¹õ¶ ·.¿½+ÒËš‰­eÒIÐ[57¯ˆíýX ÒýÓ¤·èJØ^©t¤äO%9½¶·HܹX xªO‰ü—ÈuE9%…°V*óÑð8H—ÆT!Hbêy~‡8\“®²+1õP ¢aÆ® QK\×›­­nÝQÏcÄõ–Ÿ{˜1GV¿>ùÍtÿfX€)ôx%\"5w$]µê¸žK îg~L&¬ˆëá½~&Uè½Õ5ûpç"óZÔgŠ2m[‰·GÝÜc"‘-ˆ{+À"âkp-‡i$ÆÄKÀm„ÙÌM)r+uâNç—Ð]8TúJ@_ÇR’a à-†D¤¯¢o7~ÄŒÕ9ÎP „4ŠzËŠP¢e½ÐþÑç-¯kÿ‰ëMƒP\ IM9ÛÝ2ñààŠ@_G—ÇßÅï8¤)4¿ì——e’Óƒ¢< §ìÓŽQ>z—·´9qN ùÃp¨]„ ¨8Š ‹(}î…°ÕÖFÉ‹­òÁ¥Y‚-Jï+‚|Ð'œ×K™N={ã³ y¢ÁÿQÒŠ_÷ú¥N;USùŠŸ]÷tº0 jÄ^à#lÁ&‘NiUŸY߳襢lÛ‘µP’\kŽSuèùG4²®$¯‡Sv;LP‰­¬¬®W¸Ä‹£¨*¶Hd>$rNÏTIn¶Á@øÊ&˹êò»b¼ ° ì¦ÜÆV¢òQŦŠTZ!;Qù0ZsÒ2‘É{ÓìDäÛÀÂ1[WÕ”·“Fq×€trj1$^ÿ‹3Aë†çÇbHÜ(ƒ ÿú®«ŠÝ%•õPó.d»]u×îlƒ©·ŽzŘ„ó÷5«^ÕAÖNö±„ŠîÉÇŽdw"öQ€‚s©=‹,n'« à" ˜1ø=*šÛÉ*£²/1ö¾Y±q"Òg»å`­™F9+ïä”7þ‡¦1›Ò;Ýêc‹Ó/mƒÐ—CR€‚C³ :ë®™Ó¦›mf|ZÔœ¥öLö¿½@vJ·Ð>Ø©1·ßn‘VAÉሰq'µ½Ûÿº»XÑÎ<¿Š…½™l1$&sà ‰µ©ƒ€Û1¹¼7S~±¤¨L Šè ™d1".>Ö*Ú5ª`â8'½=Á+ê§TpÕOILÏá‚:—¦%᱓ëlq Q¯'bËdÛYÐ÷A£Ngêœe¦_ó˜™0Àj1 ¿ ?'Óuý@;Bµ]îDô³/÷Ó}6ÿõ…£RÅs0›ml\ªúA‰êw²àÒac'ð²˜~iö¤ |uù~$¢¦X®o†l™:¡=Õ|7¹ær :œìžîI,Ô‘h˜"Jß‘åçùPôÇ‚T0IvvžEIDûÆ+ÝÉBÅQZÝhÀaúN Gõè׳ª ø¾Ù';~X*Zh‘©Èäv‚üªÅWNȯní.ÆÄwy ‹®Qˆš÷/ÌO}ýñ¡_×pp¦$žº‘^{z=ƸyÅØÙ+ãbß…Á©…d]À¼{&R¯]&ÞTê!BËTö:¢¶$v4EE`'û JÍÂês\»CŒI}Âεøíœ©ú#öÌÜ/q,gµªHçœîrè¼xêlD¼ÏæwCÌšô ©6ƒ?ˆ,‘ÅŒyZ1&Q»/ú Øí̪ߓº9æÚÔÐuTÆ4;ñù'Uà» ~×Ît¾1€Ö¦%Y«‹Ln'ïYl_è:€çÓÔ¬ôÿ—ívÆŠ¶WÂû·7`"•aI°ØÔùïXƒ…qqa¬´ ðÇÑÚncy1%KZ\(‹ëÏ£S æ:BþÇ_cZU¹z¯ù_‚J ÖµT»#ä >På–û7ô‡.E£Â.·ÄzŠÕýŠíRnMéêìß°_uaETÌÒù­â páXL»é¨#“û.,7üÍRÁ{ýª;ÈX<·˜zævbrov¥ëBª¨:B~ZÇDO»õ½"•מ° ]ždQ,{BüGÁ§b¡ >ä$ZŒÿÏH1$‚>›Ú±…EÇ~ˆJä×+å:‹Ž‡TîÙòÃrÄ•íI›*0Œßñ}b/&|êCby×ÖQTÔŽ<±Âwí1w ª«~Ïñ¾{ñÜhn¬6åo+šè°ÝýªŸrß öÒQ‹4[bH"uо€$ çâ×§æÝ a‚Þn27Œ€ŸR¥ •HÜTå³Ð@ Åd’D¼ýUQ/¾]ö¦íˆ÷ù‹o+3»=8 ¶‰p_åQ%¢tF£š±¤¿{‡ý—Áï! íuæ(ªp]]a'b}ø ‘ÇM±aNÄúlÓYìî®ÊëD¨Ï¢òN)ic>*ÕS•_Pºµ©šèë¿ýIV(÷Lxøö Šõä~]û:vï_@heÍvJnݶÚ£ËE„ýÞË'‹ïa‡:Ñù“žN'!}°†ZŰÎÅ‘9I}Ïò›-}ªÕó è{'.';à°É¹U'ÕI°Þ…k_E\]'ÃzÃÅŸí%ÂYl’¤·Gtm{÷RDYËIM¼¸Dø, |bH<ïÔ§©ˆ CâzÛ£UQ8BÇD@è'Áz`Nø§L=Þ×݉°Ü5 욘ÊÕæDXÏ^¡…rÂ'Šˆ1ItíÀÆ÷»^å“§eBêfîD¸”IÍIý»dÊû”íi©‰ÃŽ^©ä}RÿnuÌìÀáž ? ÙÃÅžŒÅ^Vô‘ÄÚ$h¯·¨¡ïCoç„ì‘Iá-h›æ*5Ä“€={%«ûvŒ.%GOäò W©®Žò’dÖmèAÝå'¢zȇ »è‚Q’Ü+±0„[®~J$wÌêšuóžÑ„̉ˆÞ™žßbÆ)ãOîÜE®…¾E®p‘}ž_ˆž7ûâ÷Np!MÂ{ X¢Lß0³»35î‚ÎqØÛׇˆwOjܵb¸ÆïB WTÅΰŠ=è=ÐX)h'1ûPžDµÅ6ÛRÚˆ'}ÕTGÑÞƒ¾¤wnj¿uÝ$XX6Kw Ðî&6^µSbתåv^¬cÒ²c±lwT†®žžÄų! ÷oË$¯¢èÜÄÅ£qgâá(¹˜Û,ºw'T€×@¹’ßži™Ôþú/J/7iîÙf኱ ß gßÏíŸw~BêØEÇuº! ªã‘ º ÌÒ)o‰Ô݄ԡڀV·Ë4 šÕÍ@SV°&ÔMœ€:oqF¾uk¡7rPuRÙ.g(pï&¤ûçeg­jU »©³qOút¦B"N×8tžsÖÅ&©fc‰6凾‘“CÒ&˜…ŽxdÃ\¸÷ ùÛÍ̽ç(#*ŽzBåì.´Gd`Iܼt*g1×h}OÅ#¾ •Û€" ]³w¦ èŸtwŸ¦hewf6ÎÅU@NžÙÔ}Û]w»;’œ´t¿ܱÛþ­*…ÜDƳÉÚxÚ¼Þ¢ó”Øx x˜µ€aM,6V]˜Á¢¸;XŒHl,DÒá×hú®ÈŚ胢¯„Ú†‘lÑÄæ2ê¾ÞCbÆöÙ#pÄØï¨ÜAûuXÀÂc-Ðü»rŽ¥CéÝjº>¯ù•qø/¿Kûˆxpv‚kìôšpÏ«°>Ártt:Çq(“››`9\Ÿéi”“_-‹j‘»ÒÝM}µtདྷ7© %ò}L×Ü›•ö ×ðcrYnbׂ×.N³b3J‡Œ8x°U€–$öÊ´W{!<`Çj ÖâÍ{™ªº¸œ‰:±çx¼º$ŠC¼ç ¹ §«›Œ³5½½÷ätÎò2W–iE)ß Ó]µèhE<_=ïIV¯:‘zÂwéSTdïIa?¤Ëª­ù&]½Š‰5ž®WÒ5o’Õ£²n¹Á@SLò›eõΨ¸ŒÚfO¬˜‚ûùÀß”Å.E”A9Õû–»‚¤ó²«óÇ¢úYïýâï/¬Îs„Egh?ôתÝô «óÇl:9ú:š(úŠï/¤î_!ÐNH ¹\5bÜ„Ó!úŒh$Ø"šqoBéèôß|ÃIc„XåÜX s(¼»•ßk Ùi7&cwg¼Áò^"f‡p:-EÑ[˜) ƒÙ'5àù}Ù˜a¢1v¿àÙm?1$lÛN?,* kšP%¶1qtR™sÑÏŸâ½í%Óí`9Rª¯êœ”A;º8èr©£7{ÔF}<íöTظ ªëf¶7ã­û¯61슋H·é¡,"¥³=6Lr ­·÷½Ç¤Ò‹%‘}Ûé°‹sˆºP/5­ô­šÅ…ú†mL"VRèÇOÐ@B`’›ã&»dï¤ÝNlÜd•á*4,X2Yß<‰^jŽàÙ²¨«‰N'‘k1“.,,öL©)h™cCÏ-ªaTØß© J;Á(jÞ?)œmPzÜ ìU‹±×&úc>îxÈ& x\È å$ÑÍÍZexÜãìsÅ_ÂÆ)}û°Ñšp÷Šû„&À z(Ž‹1I:Á+|ˆ¼Ú*¾+>è’'¤‚2å¤üê”Ðç˜ ÓaüsˆJ-s)ï8±—Ü4»ìÕA­¹½ õˆ…¤]<3Ãè‚‹QŒIx þϽ¹÷y·rÉ%·Ã»ýŽÍýJP+qµ·ƒ[:£¾ZºæqN⤯ ½±=:Ó°7-ÔBGGõ’8vh»šÑm÷“8.º£Áû“)ä¾Ã¬ÃÒaF0Þi³}¿¥^tG ý¢ãsêóÝ1ýmEE±BŒÉ0Ž=Û픯d/#gu@]ÜÎyÄÕ4> ð´„õÀoq(ðlaÙKbÔÑŸf™ ®ç¨ –u¨úÐ ýYä±6æ¦Ï²waÞBW‘ ŒŠ0ÑU‡9£wlçpùŒ%ôÎ-—Ѥ·ØMÐ 9!nÇrÂùò–˾3 ^f õ/*†HZõóFÈz™1Ê›œ}{—;¶eo¼Ù«¸ p)À½Q QcROEµÛÌ¢â¾§š³¤”ïÅP¸¢›"ª“³xÌÎi=®ªa·—Ý5Äž+­KÎûcruÝ)üL!%ˆ£¿rZïÇÆ6Zõ“Ù˜¢gRáM@NPsý Âçx…U§¨ÅãòÆ:°‡üüGSÆŽòÀå'à9 æä3ŠOÝ*HR»-¤ Öô’œ/Ðô\¨·ï&ø½ìÔ$G;]¡wÓ‚qr"<ÒÅ jÜå­ÆŽFD,Z æÐi+ÂRJ ‰>7Í1À¿V .ÜñkˆçìÔWÅÍãíYÙ—SåI ˜[»òô“! w…^vùþ`Ý-ŒWmH.ÀL×]‚]Þ…îZ_›êäÈkÁë82MM¨S¤ëçºm›øþ™>g»Ö™ ñå¼ÁUt[Òj‚\/ÜF JÁ|w:Övyîzɰ\ß–#S( g1ËŠchpë–)‚â¾-“…1&jžÇ)C*N:Ev»šÓµ}Ía¤0GH+y§@ø&Nî"䵤õÝêEĘ`xÔÝ—kj‹~Hð‹à¢1pº™Ì®“hUtå[ ª*nžB¦ä&–Á]D ÄjDFÝ@øÖ_V“CbüÅ5ÊÁ-ä¾ÅØ¿¶ `ÀìêÞJ ÝüaKpo‰T¿~±èp ÿ&ÎUËI}¤ï…¨‰EgçFœ;o¿k†½&]Çdñzf#óïšxt<„õ¥‘ÚÔÄ£û’£â€ÿ›ún(\±|¬Þǯ–|Ì-«`HÞ«&ÛŽcâ †t†ojj]óº<æu‘è÷O€®F€Î67r”8 lQVµ!©áë¹¹•½ (ÁžˆŸbéz%v1Lµ©=\lÁ«ˆgkÒµ;"®%´þ¨O‰•õÐKp“9ˆ!¹ý±ºÏïâ'‰¨¹Ö¯È­& ŽËqë…1ԛ̃É5¯5Ú£‡¸9jâŠ{¶XlÕ[ðA\E?Ü7Ç•ppUÀž5sæŽ ÕP±XÂªÎÆd6¼½|ð,LÖ}·z÷šÐ¹Båa Èêˆ ¾ææW.’‚Aå@âM¬™7NÊÞ<ˆª1YØ’na‚/ÂÂËÆ|½èµçþ6oÓ—ú&ý£šj‘®s‹é!ªÛw­B•Äuìâäÿ8S T\û[‡Ü¥uÕeÔ²t"Ç­=“âiQœöDÒç+D5{ýÛ–¸çâƒ%«ß”^hÍš¬´.1èùBýŽ€Àª”>Ä’A\ÍÕOŸ×zæÉÙ1B[>¦ òà ù{ ±0ºð{*;7ÇÓ~€´}Äï2.6$¬;uUû_Ñ•YESZ¯YµnœN÷¢ê‚Ì…\[^ŠHËñÎ6(ó'†÷ðº)‹ kS1„Æ€PŠ_êæÎT9öŽû z Þc2üF¡”ˆË–®Þ™;›-¿µe½(¨ˆÎó^3þf@õîû†Â±¥×DŸs ëÁê8YTHj„àX& íæÞ¤àêƒ"Wi–ƒLã ƒ7ˆ7ÇØKØE‰sÉ»ˆPöë˜eÊ\…ØcÛÙ6çT Bý »-ÜJº…–…‡3T¯C¯ëó̯¼Ö4€¸ë`¨¸J²O5wDz…½F˜Íe{ÿõŠ®b\ Ã‹•fGÞˆXæ$W×ñŠÚ£y;ÿ»ç¢×$W÷¯î!KeŸ5q¶h‡ë×" eÚÝkl`u™ÞãÂRW¦Ü™7Äµa3&¾XbÎÙ¥oÛî×BŽ%ƤkŸ' i©±–hˆÁ¹ékc%¢úßtε:q‰(‡K÷˜ôåTtŘ$TILeë€|G}ëÙ˜ä@h'Âöœ@÷%sŠ5ÑŠ€SEc$øËï!Ô; æxƒw]ý˜ ÆÙÿƹ_§(5)ªˆ j«N¤Eø„~o1(Ÿ{d‚ðÖ-¶Å$d€=kK'/r.M ¸õ|•Öë‰:Ý ­øOý¾Ÿx¡7- ëPíÕoþØk¶š¥_‡@ >ºœ”Ï4-1àPw½•ç›0Eü«7©Mñžîfwœz·'$a¹Ý’buîçA¾±HFKb½‹ðYÜB‘Gu¸Ó­W¸QßI6æ«4Zÿð•€—Õé?;B€ùº8ÆS U›‰ývàŠU¨\ÄTŒI+ìn:ÇZ<éßg½e[ ;­áÕ”ôÊÈ)ª]œs*@.+}-qKØÔ©ã &TÙ߯s+9[È|ySX’ø0eðnÿ<í$.l%^Ζ)o®³†]¾¢šD9åé H”Að3õu”[öŽèÞëq—[ú½÷`ûÄÓZ"¼ƒ‚Ìþq e‚–ZRíÞ†ˆk‘J‚b&kä5òâx@õJÁÌ-ÑÝ:Œ ·Ý“@”[¢»Ñø¸DE°ˆ  %¾”hõLì…› ´ÙÚ¦Ò$¢Ä–oÞ+ŠêLYKôb•b1KYQ«½ªPÞ’c:ا£·<JØZæ=X6èÊêÇ´ÏÓµÚ§‡’—ʇ(>¶Œ¨aqù#ѰÐ9ƒ¾®ð–Ém‹6•±/z†Ð5Øay¹èTE{(%ì/mÕaÕbÙ"ÆÄ£M£¶4öÛ´ˆ§Á ·—1O”ÅÈ`®$½÷ÇC>—8¡i¶÷öDo€gŠ $wœ.àóKñÆriñfõÏN^³¼~á”+T¯EØ ñ`’/ÑóÞ[Oå\ ¡;ÚVÄ,s]ÏΗ2%£U;ç0ˆˆUÅ«á[Ñl!ä±\wOµe­€ “MoÌÞJ H2¥\­Ë…‡å2Íx'°Ê *™ÄEbûÌb/©QbcþhEê¸4ða ›Ä×îú7Û–íYÇI…ZÆÍ\u¥mÛ’S8Ý’B¦Q8>Nªà¼ª¹JÐÙp\e¹þÅ„ž[`½½DÙ”ko¹íÔÆÅ^·²Ÿî-¶Ò)Ìs -R1q[ì:ÝöͪËÁÒ‰cA3{¿1F¡¢2…àZo‘¸¶è¶´hÖÞä¢^§ˆ -ì›ðmˆÙˆ ikHÓÿb Ÿ ;·ÜnŠÃÈ_Ê†Ê }ÕJÚÊ)´Ùö­m—p¹ˆ¥‹à™g^·»f‰èÇaÏ…!¨,ÞCjסV8o òkVd-ag8/P9¢øßÖç)_™›Z&ë…àÐ(°11>ƒbÊ¢¡XEN+³ƒº«=¤Ëo5ñÝ÷çúîLJ1g©BéÞCD£ ~Tš§šP~è-eýà:í l/ƽ‡$a?þ;8Ç¥›Ä„Œ®‰p‹·¹TùÍb´¶Ë·,0ú–ê-Y:ühÖâþQ…¥” ‰Òî0¸m{Û­DéaÆ¡õt°©èGC’N !?¯¬x"DFýó ÔîL1â k‰®6'‚”ù­+Ædÿ¨°®{DËxoŸøXKø–+áí¹…r#øYÆS,‰¼–E´"¬jzû䦵ÄMs¶Šœ:œo1Ó_Òn½ei7·#Þß,Ï¡¶…}…tºõǃڽ‘ˆF÷ÆWuÒ÷!Žoä¡Ñ#¹*N¿°éÕx|wŸ› åáuÝ[ÂËvAló+¿Ú'j’à1KK¨/m»îTdµžð±2éϳÌÅÙßÛË× ÷D=óîc8“òÞ=Ácžb‹·¢¼ïÁ^¾â=ba¸ç ìíBvHÁ(½–8ÁEì™f†Þ<æ/›èOÍü¯ý‹GËãó©ÚR{ù:°=:¨‚£§ Á{¢™öP†å Žx4³@ŸJ”vTdØ#ÍÌME»÷ì®@yrá„f/´¯zÂÈܧÂõ¼Gu ÷þ÷‰¹ÇÜð2i `O”³ëU 3a‰p¶' ®R¥‚4×Q=‚dƒ'kà˜‡‹¸µ"álÌA«ýñ6îôšÙWÂÅÚ¾ì6õ)‘àÝȳ"!ÞDžÝ#hFªÞP †Í z×zÍükm<„N¦f´&ìßå 6j܈¯6>ßí‘áGfé,˜LS½‡=!d¶9¹v±á%Š5=!d‹žãF¹œ¦j±±>»:{„ÈS×%œé’ýܯŒ6¦ÿ£6ŒºÅ˜¯H¬G,¬àÙµ]‘UWwÄÁ æôÑ`ªˆ}~®fļ,¥ò¯q”PÅ[$Æ@DGsbH<¼ÄÊ(öVˆ×ªî*yºS6Ôx[# iôž¶×DrÖâUéñqénš8Ĥ¼cYQôòëEIýºÐà=]Un»{‘¹»µà‚÷&–ûôêÉ쀪òð *ÈHnàà€:]êŠôdv0!…Ð?Š0xµ!Ÿw¥›ùâ/ó@ ‹ëJî„-¶cõ÷8ñShÛ²ô¢"±+övÄ»P/ûŸˆ}©73â]“‰#ð.»‰a ¯7W0úkEø«#‘[ÝÉvÉ07Á_£ÎAeÒvï­÷=Á_cB.;N Pvðò4ô³Ñ¸®ez„¿&ÿvw[¤]D3eè—åÌ(`NøÙG ®=‚_´óx#¤™"ÎèNX'€t+nÂþÖÄÑëk§Ÿ”l•RíÍ˱.·R¶Àíà¯*À ~ROýt‰¨¢bΈ~áMn•ÜIiô~´lY–¶åÅ;5Qh+. eŽHQ"6`YUüÉ â«ß c^ÜÓƒSCâA‡§`ç¶x/”ØR # ' tï ¦¾Mä8-J±wé`’!Æ|Õ¥ûM¹µMgå6Ä¢^ìˆèNbîæ^ÕbHbýÒØÁeoÑAÑ£–šhµSíŸE1Ôúý*\ô›Î2j$ÆX‰«4«ê´Žÿ¯{l °e$dÌîäíŽmÍPĘ$I×'úJ‹'M‰þÄ õ´þJU]#BeƒN¯NFFÀ{·Ž’hÞ–NBãq1´÷fÙë`ÁoœP††ÊõGb‘Á±k¤ÁF>â <ëð}(b´#?'fY$enP\àá=$½å”Öq?hpÞßC"šF£ùÅ…sá*vMDÓÖ…ÿÀ#¸Š¸FÓvµ×PF„äð>Š#‚i–òíæŽË8Q¨ŸÖ V»­°“8JbD0 b™›bVÀ±Ë"˜†góFbͲ©+:{FÓ\uaFb/’è±É´e_(ok°6bHL±ía£'÷+âúÑ´Ž2 JÎÌKá4ªåˆ<8°/ê#6oRc¬Ôò‰œÄ[5’e©6¶´MHN/$<ž×Ex°ÇcRm‹Z{TÐ ’»,bj°Ê,‡Å·¥ñŒŽ– –Egv…Þ*,¯èΈ—LÁ!aÑÓ-!Å‘uÕüÚ‘ãc>1µ15èø8 ©NÉ‘ JÝúíàÈd‰€X½©5„Bª‰mõ)1MsƵœÎ*±­"¢†¿•³ÇpEƒ÷HCYÎ&bML ÙqòY›k¿;QC– 8œwÔ9Œ€Ú8®i¢œ®/ü5’Ãë¼{TA}D¦ïÔ\½QC7#âk¨ ýðü¨›=Âk^Òfp½MðcF¶%mèlé"ÕŸØÚHT³–ÙFúGQí¬˜†ƒ$<ÀÊ«£~nf¥Ø!¥«Ôr[©%êR”( Ú«ÐUGÆHÄ3ˈ¥©P¡Å˜¬º‚òÍo–ø ¦ÆÈ ›¸üÙí»ëœNìyú"+Œì9º°¯Z íRÅ3·Xнoïö ¼gÌ/¶ÂøÃbÔ&yZj[˹9ó"W`~ªž?²Ÿ½Üxº;ƒüþ+¯óqYŽƒÈ²¨£Ø­¹)ð,¨ÈÕŠm±7¼;æ ö𠵎ˆ½mÆLŒ#gWøÂX‰XÚ\Ô(ÛûHÄ ´ìó¯q ЕÛh+¢16£Êd’p´»¦Ózä }Áé#[ŒVº`V.V,ÊÚcÇÖ.r3[8¢MUiÇ®y É<ÝÞü;DP)µÐñu»Ä’¤®ÍríÏÑ{é^+c¾¨#{ŽN· wòP´”»ñAZMØ ¨ïŸ5í'QÛÏÅ.ü‘DÓje=ì= ©°›ø~l%4¥Ä±:¹á‹MË§ÑÆ/æ61ÐÈZ¥—áñ{",‡¯¢åSGNX'x²iè5E½yDPΛî„:¹åÛŸi4ŒÓ¤œ*£öOFÚˆ \¥t[âÁÉtžqÝ—w ª µqDŽœkäÅŧÜL7<ëƒK/ø”ˆÁ ×F¢Ð<”Dûˆ|5i&#’)j„äüþkdƒîdóÖÚþÒ¢i;"ЮUh¹†xxÑñKÙj &Ó1»wÔªd²š÷éâsƒg¤ú1‰õ`K»ö6Fõ9é°3Y º}©bf„è&²bÕ½X쫽7ÌŒÝÀŒ^6(2¢Ô4K*£R”²+ÜòÕ¶9#@Ôr«»¨+¹ñ9L„¶kŒ[ø n‡ñ9 k0iØe}¦ÌÏYþHò`®bŽÑ97¶‚7<œÞWãŒàÜc4(Í:ªño&pîRý"´kX8NÌέr[þ )ÎÈŒØÜ„ïshCD ‰·<¼H\PZ œ›œ;<ÂGäÛ2#6w¼ÛmWvaÎÄÈ3·º"Ámù‹b@Ï„Í-?ì`tØÅØ36üU,ÇÛ4ÔKæt—&3>å 1`EªÐ;#OΣóöéò•O8ŒíePŒªÌ”mÐ9=jÁû,ô¬D†3³¤¦ºn.ÚŽl𠯣ÑÙ®H—œGÉQ Ê®F J±¿P:Å ¯.†ù´«žn®íVè]gt %á°¥ÀuªG49¢J?7űM"`7éB cƒ—üZ1ªŸl›N§·©ï£z‹RA†.&ð*Þ^©ê BP±|j þž+±jî²àŽs¸§ºˆ“´Ú*ô(Ÿ \í©Ü5»»«ÑµªÔUgò<°è¬¹Ú¼73ˆ!Éó€1£BâB1$¾ît‚³ÝËB±H ‰UWX€…"`jH,ÂÑ‹`™æº£(‹œ™<(~t×P°ûULrDðFº8…Ú¯T“WŸîª%üÔݽsÍaP´ˆÕÔI} ^ÚG’ù^ùzÜq¸iîé¥v"ÆÄ¼®\„7 ViöC"¤ƒ# ²EÍF1$2(/Ö6Ùc¥ä6#~w¾›nip”—ÁŒøí5à,ÛÛ*Îr$ÕYTO,Ÿ ’´”HŒVSÔ½ñ<>¤A!ÚUç\‰T‡~ˆ¸bÞ{H"ÕÕÎa®Hˆ@c²“‹¹m únjd“R챈Ã.ï q‰¨*7䄤Â%íø0$¨éGZ ‰[À.¦ÆFÞ4Û‹õŒ°zöÖSP“êQ3Âz›µ|¨¢Â¯ÀˆêhVp|»¥d˜˜@½Šü®°–R"[Ÿn+Ñìœ>ï¦Mi­äOJŽM%ÑR­¯âYýyá)¬LèVDñlÛº#b-’˼J"Ñd@oªñcEo+Ú ¨÷¨Ÿ’.|Â3‚[žÉ÷E´~ƒxõ/n[h?,Z;jýÆðªó/­Ðl<Ôæ!ìnó ¢®Â{Ø«²w¹‚f¶z¦UŽ‚3œ}Žj]¾Ã—Í^(–¢è®«'ìÖr(¦Ö’Õ!zLïàÌ5t»pžR¿%Öìp–ÁjsTYÑ]½ÃèÄÏâB"6eôò[ökˆÖ®¨t­èÑ Áûè²¾j²Ò/NbÇ5µÅâdÓÛ^D£’ãŠoýáš`/¾åSøA±ƒ¦SQÕ@Úx¢)­}¸+K½Aaà»ô‹Ä~%Â¥:2›£µz%³Î0ÿ "Á[‰p‡¬é™XRÑ$–1 ½Ù‘ïàA®&¦i~ñqVÂîŒz‚el×Ô†JÐC)¿EJ£~q\ezUñà¨. §Æ$ORw²k»zõI¼ ‰gù(æi¤€{©c˜èw{Ñ>wªJJsw%³B)çiÃPa^|s±:rSJ,¢*´’'),“J%˜÷I€`+3ðÎõ šw «á•x•ŠÇôúvU5Œ•xv…ÓÊ>©>•8%þÝØî{ìÍ&ˆ*+©ÀQÂØ?áV„ƒ+vKg’¢V¢ßáÅŠ÷ˆE“E‰È­d_j¹÷1Ü“U@«ëä£ÿDÚ2Õ̦E.ó…$3ŠÍbL¶À²ÿB ¢"Õ Žà†¦¶Iàucj "¼„áQö=Û>½ñ‹Ó’ <ÄÚÉÓHñ‹ºþ04E²³.2½&ª+šâ4Š…û­@¦b®s³ìôøÃmÜUòJJrtÏR–;EŠ:¯›¹÷0ÛQ´â®ÝIm¹9o¸mPGEeu'¹9]h°B°y{OÃþá㳘{¶êßÙêtj_—ø»t§.Úzœ‹]±(VúÑû§SÔ¯Š\íbL*ßZL‚ôîD^½‹ü`'sÄ íX TÒEÜ´kÚ x·‹:Jø`'¿†RûE}øNü¿Å¥°kÚ 4ŸRú>–/áQ¹kσÀ‰hµr|[ Ji{L®ûÃR%‘ý ÷ûé 3GjxrˆíP¿øÙ;4¿€xm_ñ:ïäЀSªÅF€’Å>Kn¨X™s Ü̯ò2Ûø¡Ú‡À/»ÚÓø¡RÕ¡© “¹A“ªM ƒøHÑ-#P–ýúk±+~àrÚâ•Öo»¥M€ÿÉFŒk‚¤©Ai @9ž„Œ.»³%*ýHdÁD¡vûˆãÐþ@ U{ml«ÔNýµ/ î b%ŠQ°[ŽÐW³KÁ£)Šp;¥¶^êö®´£Äv¤ò¡2e±Ïæõ^K$z;ÉØÙ*”àq‚î¢b';“Íss‚“(™ìäõàÌÚ…°; ‹1Ù8õÒž„Æ2=Í‚¹A‚rŽÝXð×§åïz¯þÅ5’]R±ç°] µ‘2¼8Ûý‹Ï³³ZI¶£ê(Ê«H Y<à-mïÒEUî (dgýº†·Ø¶Ð«*•‹ w°Üi<ä Ð Sh9E´V¬Ù^©¨X|‡±w¯ý§Yª = Ü'TvGØÏîÙï  S*’Èé|HæÑØy uÅAŒ û¼µ3œ%«î½^䘯ãýª×&‘ùW<Ø!E ¾X½Ýueäæ#mGüîÇbBùVÀÈæ³°lØ«i¿ˆÌE ‰u}š•6¯í\2àŒpà”†ë¨^[QCr©¿{à¬úb±Á«  M1NMrì°·ƒÉìÂk‚@²#Hå™D÷"u&t†wD©<7êÐ ³*ñó“ij¡5ÂûVõ¥‘q‹Ÿ-Ì…ÐÍÝÄ‘¨ymèÂê‹EÍCØáÐ-<ÇSCbáçrY”`틉û"B€ÕtübéKTWLDÑÊâÙ"dnêÆO6iÓ‰Û1u3–ð?‚xøúHHíþˆÿÍí¶ÊèXu†ìHìƒÔc±DV¤/ÄHët3Jb YQ ‰¶d‘cÓò:±û#ÈY±³Œ±0¼q1$6k[Lš#@å‹ËEWÈ…€¹’y]Û•üG@°ãçxÖÈÈÔ§$ULzÏŠû<) —áÀ»?ÍVB¹&Ð,"s™*#Íh ~òU»ÔbfÖˆMµË¬4%´ozû±æØ4e›¹#8¼Æd¡Î*ˆ` Å Ü0 §rn= D­äxQv-%¶r"Ç ÛÔP¡n¾÷ÌI¿îJAÄW[X'¢€½8GšŸŸˆÚõéglS™{út+­d–û܉+»)~^û«(ÓP¸CâÚÓñ‚ ,ó&8'ÂïcQê|s\Ÿþ „e7½ýâ9É’ÂN‰=GˆeNõë#ð‡ê]µ(eûQ¬” qÑÕ‰ í'+›­"Pý“EôNñÚIês‰~Í~3Âè´u+EÜ“Eôp¥¶ÇhÐÝ©>%©!7v£³XîÊþÑ^2Ð"äU–3–,)lwq`î¼Sý'uêrOjš£)£º“:ui]ÃÐA2ÁY;-ý …`UCY©œÈô[xZ²+iÅ$Gžô3°ÛZÙÏbÆ"ËÏéÿÈ ÙoŸ$¡w1ܢ̊’¢úbñèÿÀ‰–=ÔªXž§¥ýé¹Xuéû÷ƒtR«.ÒµÖ–ÖN‘%žÔª‹¢Za†—Ô^:ß³ìpÜÔžr‘ÀœïaRQoU‘·~÷\9»õ•­Å‰ØÞ\P «û¡)þøIT?>¶Y\'ó=d¥Œ3ñp—YµÅ’EE…ÖªUMõÅbзÙýHÐÝ¥2ž™~ åÌB¯š=¼‡¤Æ]7”nÙ¥Ø5'ñüð&²ÇèÚßÄ5¿í%íºü”˜ï»à=MDE©{÷Ùk‡ß.ú@~bH<ù;͉rUQú‰ç¹1ĘÕaŲD¤oÙNjEÿ¥|]Ò· ¦ñ*”ÐO‚ú0a‚ÀaáëR¿%B}#|¯ËÀˆý¡¾AÓ©½®p}ò|²ÁÏ‚„Š‚®’ä7fÛ.³(¦ß‰PŸÝ’7›Ò¢^—lp1¡‰AÄZJæûD¨™i”) ˆ¢â$¨ÏÒ}”«,Ùl"w; éÛ`t Ù r"Ò‡bú…hlªÈ"}h3` ž¤–~¥TŸ 鲩]SN܃¥náôvóH1$ÆúÞ4âbUÕ çsŽ„…É}õ)å凞\Aœˆó! Ù3é J<ä³¹µ|æÊòˆ ß°dõG2}âY'†$„ž±ðçÅKÂ{Tr7*ãÕ±Ì÷tò·½)œ°Õ”hÊI­»´€ z6„R1$^úLþ´Í]Å©<䦵 Òv}íŠL|"ȇÇ$EŽ ”¬¶X"þU,Ï,5±¿mA:™øÎg¿ðpaJåIÄ¿ŽØH^¹c˜|²%ÆÆ«‡5*bÚóÏîåê ‡–S+Õô“˜¿Œ#9«˜™'b}p.]!6Wa*¿¡¾ WØò7$´¥ºà‰@ßA=Wj¶€HnèêB.«pÌxûÕ¯]]6µ´M6¢,5âÆÏ.âuª"|ÈÇ«4`²½ äÃpi\¤ÿ$7î&o:1Åàâ½]n‰öìi‹€äþù8B<ò—„u§Sµ»¹)Ñ¢‘r=t½-¨÷*U÷1>l'; ÌÛà÷¾É(ƒ<„ìÐÞé!NäM?¤¢p¥ÂÝFuuÝòù>i «]•*oDùªKŠ÷bÉØUgø&ßYzˆlˈ—» å;è4ѯ `oùhëåxŒ€Õ÷JBœ˜ãLL^›BEoùèÈEƒ1ø**B7‚|³ÁG鄇*veM•}š…[Eèü –ÐMj|𤶥?Q¼/7‚|¤ARéUâ–}D†,i£ËE Ï7b|ózâJL=•BäRµÊ¢Ëm©bºjÑÆ3P ‰!ßB}dÑ5Z¶à–ÝñÍõƒŠV*Ï‚ q#ÄLOÞfï« »×u‡ )Ù¨O‰êlö‡8xxÇGnÿå9èÉ[T2E•êFˆoáíkÏ ½] o7B|oÎiçÞÒ>U¸ãÃZþGy1B5$%úÈZ4ú_‹ŠùnRãÃošzs¡’¢~~r)${èuÐF&†Ä€ß~ÃÞKDb7"|–#"â ùª‹ýF„¯à…L{„º)ÿæÃ¥Ú¾Ù=*×»Hóyf\ïÕM¼‡K¿Õ£>:\*  'qWDˆÔyÖ ¥­¨ó>Ú´ÿÕTÑ!5a1ÔÛØ§Uz({™îM\>8…Ï9†H]næòM¸_–€ß®DHoDøøCÇ·ì`*úûMd>¦o¤^”ÑüÍ\>R œŒ‰ZÅ÷Jͼ$ùÁ/wéPýÊfìToÅæ»ÙNà ;¤2¨“0>ä*]gm ìõ&[´,QúµCÐTÈ“Ll1§ØˆÞ®Änù¶íd„>+fê‹ ÌpËtjwg q'%”Ï%@wñ‹›Ô!Mm»Ó¶8'2ÛõªÙ˜¦]{ã’‘^hôï*#ápÚnßMã·!—ÉÍÙèÄxÓø}§;£¤–ÝM·=õJ€*.I»:¦íÉÁMÿƃGI»ÞH1ÈÀ²GbLq!—ôgÿ?qgdŸ\7*nÝ]7å´e¹FXlE ÕçÄóL$D\úàzh’l_CÙÍ)4Þð+6®éž¡gyuæÅ~̲}®2{5è’y Ù˜(É¿¶sÌh^\ï,ûôLl‘v®o”-¦ø8¦º}|8¯»0…ÍÖQ0osŸ=…‚IÀÅD>—ºú5YÅoB ÄÝu ÊÌé±ÁüoaRo±—ønIÅoÀ©ԖTþž¤â‡ÇÒGg.Hù£$¿ :J±ÚnN¡´dc¯£8µ\ûïÇÒ?gp`ш|–8<¿¿iô­-ºt±ª[öèçBlÀaoTEEBM\ )ò¡éH—­à.ŧ¦ºëAýï•Güa«‹}–v9 Ã.[ÃÄñ9n†g—o% iò³û†n,©û»â ×*ŽAwÝRz‹šè7px;|9žA‹Ú÷ñö_1ßIÝÏý3HÙ Âå¥ð‡¼C`Sâ7¤Vi‡ÝPQ¥VƒÎÌ›çiC>4;FÙ! Þôãý‰!iáae7Ç4hûƒ’”¯@ÅÝî)áÞdcR$xØþ Øètùz$1?§(ÛC@·\}ƒL6& ¸B²ÍÂÝ/²!IÕ ±LdQu[2A€“7%_Ô @p2Ú,@º:h™½°óso¨­bBèÕ;ÄšüòPSÂI®n/4Ö¹(4~N#E¡™–q5&jº¡y#üI˜š ¤¯[WÏ»DN©‘fL[gðê@B,*)Ní¼Ì4ð–+Û)X,·ó’¨Ó.X¡©×®3dÉÜ€O€ô£Ü?öÁ…¸KMGx¯Ž’Ôý(Þ[¨ky\ë‚Ä@’ÆÀÝ¢µ‰ªÕûsjÉ×:ñva‘*•šl;àë!1NÐ&%,ØYU  6wï²1qSÜp˜³ªØÆ~¿Qõ>èê<ðÒñ+ö: ún1&°ÄˆŽ ¯6 W7bÿ=fù.E{Ùòpñ~ÖäÁënvu"EÕD~P#H¸±9AoZ5"¶xíMìM…r‹¾ \Õ#¦ŠnÞ$Q-K„Q5b„ö0[FeQ$*pâ٬Ƀ—Z+1ü±Å Z³ ŸÅNw¢ýØÒÉÆå»ÐØ,j R `¿w´ öƒ²Îï°i+`åÓáÝ÷ t·4 >«ÙNq!ò»¨/8€÷® ÁÁOq!ÄK~Ôr'Û÷ ,ðW·KÛ|2ŠOú~ˆ‰ã®>ÜóKLCR÷£<¸õçªsšl=ÜönÊŠ"OªÉÕÃË –õ9©FØÑ ·§M±7çŽÚ„a‘Æ—½¢5eÔ,ë7¡=LÛ¡˜âé®YÖ"4.~öä×ýîǵA‘Jãö¤åõ wbZ¼ÃÞl‹‹aÜŠ¾ÏQ#LbîK W<57æÌÓ¯aøÈ#>ÄÂc.6û=¼ÚbHÔzÀë&ùq»•5…Ôà)y_šàDˆX#N¸]PÆQìÞûý¹sªd1$±‚ÜBtÙû3„¤,o‚TÓ&ÞóÄ÷=$‚†Ó»*¹]U ‰*Ov HM»âªO‰«ß¹š¼ïl€÷H…tëh2ÑbW¦®ßz¼d€sgSÁJD §_ê¶X¾øæ©‚‹¥ÀúgÃ*ËSŒIŽDT @²Õ”}¸z°«Ã3K÷Æšs Q†­©Ë×rGà€E-–!Bƒ¶È›R²K•uÕÜä{\ÖibÝ­æ'7ùþx(¢R|TôAJŒ–íç¬õÝÀæ&…XqîË#ÄùP·ƒÝñ(G¹„X¸DÇ—†rºÀhj„€¶b/wÅÍI ‰ÁÚÇn;î]}J"YÐU†q²À÷jêóµ ÒµiÁ“œ €6Íkü«ŠØc‰Øw 4·c£~~êóEÅ·¸¢¬×ÔçÛ¡$#”ë@Š’Ôí®ඬ[è,Ú?Œ:‰ü!Ã-uѯÄûàÕp3éCâ#oX©%a™CgÓï!˜RÛµ„r”§¤£èb8e/ ¦>_û{œÂìy(ò N>½ ¹g¿®û橚|z!á¾H±S”RêN¼È¤>.Ò&†ÄÕ¯ðŸI±nU¥ô}ŒŠ}è½÷ð㮤šVˆòº0×5¢¸öZd°8x3î,ÇOk¿€õûO=]l—$æw¯Ëz`ÅWߞȊýb;ž5PE;-L›˜"iuöB¾D`5õùºÅ8) ±É¢×ßɃyðVËšÄü*Mä›|s91$…x8AÀOôÛ_ I’NXaÐ:ï[Y!Ùô1ÍŸHG ¹‰ÜÀó&9ì„€zÓ£ooWÁ6û¬¢ÞÖØáKKÙ¤‘Á»ÊÔ$ë²ùéȾ7µ*7õût,f&¥$†DÒ¿]*– \® ÔD´gÕ>Ö†¥^5 T,˜,*-ޏe–xh¼Å- G‡!Ì ò¢‰‰žMì±ã›?'©W£qSNZý6´ÌI¿— [‰!QÛc`åIGéB±B ‰É@·ÒFÇ£2òJ'“})¶XKf½¶&Û)ÿ’Š’̹)Ò軆àÛ$ßM…ÚîɉޝZ—xí/µ6:K¦ˆ_Ztë-Õ ˜ß!¤¹¨¥„ ù8¦zñd–Á>ØøèQoâùnì[ ðó\wËǸÕtëWa¶ Zyf¡>KÏJq‘­{T6Ø"ÐçöÌ üDl—óÙåeÉÝIvU.ñ·òÙžßD”­c*«~K¼õ-ÁHδ)è -ëø¹‰ù°KfˆFûâÁGû¯¶êÑ‹ˆ©[÷6š§Œ£‡G0![K­~þLv´=„ÜÎh Úkøg3¿^ôw› ¿ó#nÈã¢o–Õ]*câÖJ]½¨Á[x’ȵ€abÉŸÃ"AÜÃ!µL5aУÁ«ð P/(þ-z”ax'ê=Ú©›¿6D¢àÈ9N€Þ¢"ÑœH¦ £½ ‡nÁž\]8ç–½I— }”bïGDZßÜ´S\!aÿëÞƒpWX±½B:•&µµˆè!íL;!‹©X9í¤Å·ß`«NÕVhYPϱ+J "XUß‚<”´ÃJ×ÅÜÙiõPžtòQf@Þšî@õówÞûôí‘z.•©DDÞ jzùlÁk'|z¯P¿AÛü=â7¢çÝãÿôI¯£X•߀ž P~/÷ž;í7žÇg`añMÆí¿Ñ<ôÔè½p¹W^¯©‚Csüp1š.NeO¦Ô¹ùh‹tºxT{Äò@Ðé´ÔÐŽÀûºèÌ«”)GXn,ä/ìPĶþÍgÐÚJÓ…Ø0Ù‰·á{]àâñ*¾Ú/8ï³õ–yšÝTÝOJ„½åþMXN/^‰1Ù{ W_(NÖ)Ø|=3óO r]¡y±#¤çd¾»†s<äçÄ#?¦…Ñslz„DݳÙ.ÍŒ¡9[u{nå½<$ ¯Y1&5î çݼ˜˜BŒ‰Èœ`îâŽÐ¶8õ=Ýù4â"œlK#hS=âz XB\˵+I=‘šC—.$ª(-ôžÄöÜÙ÷;rÊbõÆž‰íÅÞm-†DdÇ¢n·›¨„ªKÈÎBÉ£qaLQ¼êØCjÇ.UTCŽ0K€ê˜ÖÓ]®î69É ×;ô¬Ûú‹bLÏj}ö|A­w55±Ç’Z ßÖ`æU†íI®ÞÂyû±çUýü(ÍnYÁvßl€zõ)ñøÓG]]%ÔôˆëÕë,Ы´LúH•[‹ÚZÀ;Š,ºG`lŠù²pCÝJÖÃ|ì`Uyéßû8Âz³ãäítWt6ôÄÔç ìY°ówyjáEÉ…[¼Òž®>%¾÷Õÿ)´X˜ ~Kªæ,HÖv+µ®À a=²¡±ýNšB¸Ë†D)— 1}#>„® ‰REÑ#?øË¼G¬TÌáå£ÚKš'e@Ÿ&<Ì —¤FWÒÅ3)Ž“çŠ!‰±.×8‚RbY¬W½èPï^½6$Ñ4ñ ‚GÔ%´GX¯o]‡1-K@=Âz½»ÖpÞQ'.äëaÖHÇpÛT[,ï6ú=™€³UÃM°^¥©HfºŠR». CàícÊ(<{•'A†Á·‹yçÙ Ne[L\•É‘ÃJEa»#g-f,âzH¡’U©v« &áz8¶!,ÓèˆÛr§P7H‹ª+2­bõ“%ß‹¶íÉQ ‰¸^¥ÈoáQÐè Ø+8›#óˆJXýìÁp¡´laqœ=Z´+¦# >1$ùïµ=,1õ)‰´ÖÛútý[bÜw#ÏÁ7ïÙƒ‘…þ ¡KO«`UÚÌ.øêÄ$É>ÔypÊ¡EOHé!ÆxÎCc6c쑯‡=¦ën~¤b¸Ä×+Àí˜l35$›ð!mj3‡/‘ú1×AûµÑbVqOð[h¼#i½„=œÈ/ÿA. ]sáÁGc~z±àRÑ8§†Ä—vtÿéï*³ˆ(ŸEJh•"¨ØÔ;"Ê·èÁªÅÂEžÀ÷ÁåM)^þÇøJŒH§ŸB"º•°5Õ÷ŠšpÄÈ88ïM9’~ìVpgf@„ü#‚|—ºÂ£ÝЛÅ(àW)•£ç}ü.yI5 £®†DXß"^ûkÞdêtbHZ|6?œèµT±iDo7¿ø†c–ïM9jÀõ üD:-†ÁÕ¨ׯ4ê_×”Q¿£\¿vX2¶WSHõˆøKÖ¾S~¤Î)ŸÿÚ‡§¼«Àü㎴o¶èi0lĨÓK²SïB„L„Õã7¼g?Þm*Œ¶êd5°4=Øi«Ò+®ŽVrÜ\øTÚˆÚHŽ»ðCN™˜ÄˆœwqÅrØwD±òI±où½Mµ(¨o´ò`«s±lœŠ ="ÒGÃ"î5¶ï›’ù ç£ÇfÌûSÙÎH ¸ª¥¹¸ˆ°r¤öÛ5©ÓL2P™‡–ÀÝFù~».U»Üˆ0ŸÓ½_D­E<«#¢|Õòvb8¤[@V#‚|hAêïÞ¡#¦,‘÷pkkèã¸#V&‚|¨Rà5]k•|ëÑSagbá°¨7^µ—{*ìXŒt¡äXÎ/¢×‘LwQ%>DDPTFù슄7xàοßû1>2Vø—Y V#µßÖ '/m¡Q=Frä¸ôÑÚ Î< \$Ï]´¾he³'¹Š’ÃHž»¼šÈ~Zˆ˜‘Ûo‡·£–IQÜÈÉt·y¾À…¾åˆߢ⎻ÂË!¶Kj¾E’þ'’%'9+4gîÚØåò'µ>tæÑƒ`!rÊ‘<9h죋0Q½ÇÙ”ã Sm \Á†T ‰Y°<9ªv;7ÛŒóyˆˆ4òêË®»§z#ã½ø}‰!©=ãPæ™è‹ôx$”ÏâÂE&n†RM峟^õ΂f!V?¢|¶~“¬ ò¦j´å£î‚êb…œ¬Þ—•ªz…<Üâ۔꺈0¤œËîKG,Â| ‹Cõ˜j£Ø•ækNÀÜÈ[¬.Z`F„ù*(×@ ñe1Éæ£Cœo†©=Ç$ж°4sC±ž½š‰¢·½¼µpáä£Ä˜à‹,¤ÂÎBøÚƒ8†!«`oN¯n[êOFv½Øí »¥F±’φ½«EfD²…}–‰› ±h‹^­«~ö™Xz`*…}^ ßˆ!±‡;# ºCå¯I’jøþaEŠS¨’< AЬۙÖbHDðˆ´-ÇÂyC‘ìgDðàlV”Rzâˆpº­åüñTCb'½.ÄÛ¯41$–k»])ÂPˆC’›6ô®â¶ÊU™áAJ÷¾@7TW_,·”"ì¶NÒ…äóLÝ·‹þfL&+V*ï!3ueP¡×M«zÎ àuxöôÆÕ)ªÂ3xÃ9³•ÊPç%™ê^wŒ ü\¤ôùL¦ºXæÑTµ€Q3BxH]Ûµ¼V»®‚"Ƥó¿¸Ó'2ü§¨H9¹mXz;½qJmçä¶Þ…Ó•¨ÅHl½[ñwàìCdI3âx.“CC^m¼†bH„s½öåԤĈDÕ¤‰?“饽÷Ô~OEEâ‹!±~‡32ZÌ‘_qÎVªß ·ÕÐüªÂV؆Äú¥àûÇ]VaÍLÖ;.£‰RU#f$ëzl€¼^qf"Yb/­è76¡Ì2“»..ˆ¥@mœ*‰¬à„ç˜]åùe1(¹mYž_§!×Ô|þçu„â:-Z§ fÜŒ”=Àò ¨âµè5™àzD»²ÅÞÜ©s‹€ž•Šts§Æ<›.Wm¯Xˆ!±»[Ê{ ô¦A1$i¯XÈ„úÈ=Òro&ŸÝÒÊš{^9$Å€xRÄ8–ü« |°¡iÂæf‚í1#i¯9Dd±6¦,¢X4#êÁ«Z\º¹ÕmgFÐtÉöæµDK˜¤™ ?HÄΆ·T•ãg‚ü¸ù†—åÕ˜DÚ+”¬Ê©º~g"íqÅÐÈ hÝÔFK¤= Åá5w~cÒ¨„ y]Îûù…¹ÖÊåŸQ¿JÚ :ÝŒ ,gͶåR½v3ùkÀò²ÇÏ”ÅÒüBýÞøóLnv{»€~Ç’J¡$Éf·Ó‡i+w-Ä¥•™lvYéC>>Ýwç5dE–%S6úà,òXÊ!qµ+ZÙ4#bxó¾ïWÄú¸‚È­¼KA,÷ŠX_³  d˜M´?­d¢Ñ-«…n‹†õͲ¯Ö%Çn‡ 1&¹ê¸TŽG2ÜÖ/¼Ïk¼™ør)Ͻ"Wüã8,½G¤ñ«¦#ß!У~׎jX5]ûx'`«…³Ž(ä­ä¦I]%¨2ªŠÊJf“ßo“fÛÇ™ï1ñÜÓòM;wùÁßJøl.^—J¿™xúWÂÿœ3<’Z~+€4²[ ØUt%„ùn\à)㼇$ ê-%i‹¨lve À¹éâ-EÙT®ä¢QØê‹[ö`h*Æd·U¬IÑq£ÙA”VVîÖµ+ýÚ ðZƒR»nåÇ0CJ1Û¹]—„K+Ƨ(M¬l¤fn7PÅ–Íö…úQ‰Ê‡ž@Gdú(¤re8ð^”³Ð”[ªßc%8Ðn–êRîö‹º}™g8ðQ^Ì\òÞ?  õ2$ç݃ù÷¥{É.+T¬_xà+“QËï]oC­Ö/<ÐÇØÛëýt¶#¶(¸¬¾Ò˜‹쥴±ÔŽû.ä é,[Ó…pþúYÉx÷§ yNã⣒¿<~‹ºìzÄMSĸ+éò!Ë5¤D¦r4ZÉ×Va.·‚R¤ù•üx-ƒ™…\º–ˆñV2äµókZ-b;‚¶’¯Å·¶ ‰ˆöÇ!Ùñ¢?‚ú©£Ã"^]ÙŽwº¬ ƒ]Il®ì®qÿ;V,Öü>KYì:ÀQP‰î¯Äïqஃ,ˆ1É×" Ô h1.SÝÀÉ4ªç×·Ô˜ÄÚð"Ó_ "¾›I@¨x¨ß®nxÔ&-Ÿ-JÓr͇ô‚f#qÂÊ-k®8„ ÙìÔUd5C¬ˆØ´n)߬BE(ä$ÒÖ£h6+9ñº÷êH`ïv¥¸•¬xéJ¶»½S$êÒ¥l%3ÞŠÙÌZ³–Ìxíë)¦NBV2ãm–_ ‡ÅoUíC+™ñZ0¿eBLe•„âZ9B°”ûq‚.P¢µR„Ð%€(8$ão­!ðõ¸z/Šá,]Ù—Š–8ºIQ\£òË€ð>UÍXÞƒ²#/uL|Eh¨,êþͨ!í.öµØ¯xsŠA)hĽƒ'œ­•VÁJm¾®6 ‚TRÄ#ɲ‹ãäE”N ‰µcè°ŠðQ[(b†lîB3]EZMM@Tw jFKS‚82¤çØu¼Öuƒì÷U44&ÁS‘_W2ç=tkÃæ8’,½2fh90ARÐROIÄ 1Ïòö-$ÇE+ýJ!Ý­¢ö$vL‚ ](ާÛöÖoȰòÆ-´µEaf@ ¥db¿`¨·7†”ew•m¥[ºN`‰xªP²*î"bDd‰Aúv‰õ­\¨VÄ ¯·#`‰hq” Z¬Z$½'‰/]¾ê>KAÞÝãX:Iü@BH0lï©SCRƒ·Ýæèv"á§rÒäÇayTŽuYñ®E~àrÎRíMñVDI]q{¢ŠSTfì8\HÕ9´G´‘®äƱÉY‘c+×>‡ìˆâþf7 } 8~g ?zb÷øá$½ýޏáp©òcÅZ5$ší¹ 1}¡ºqGÜ—•¶c¤qà.©µɉãnuJ5j' ¿s¯[ ]Jj’#W`ÚíÝ»šjÚ‘#HŠBàt·SQÅØêÅ/Atƒ0Mì°Ãna”å\öûwU «;â…”3\Üâ¬-â„%üh+HÝ)¢í%üz»°ÚË’ôª$ü 0[är@ÀÅ‹P!;QC 1[~¯d³¹±.B¥¨ÖîüÜQ l/ÔK6› † =ùå('¹aB‹Zà Ѻ”½“Ç¡Ü}»PC’T3ºš«xG¥:ÅÉcŸÉ a×ur1$­ý†ì3.ä{ñ~íò¦âß¼Ô †ÄÅ_P·,uFàX—?%V‹,<\TÈ-x["7Ý´Ìß®1ÁrUÓÖŽ  DôV°Õé¢Ô»EЮA$€¨õ Ý¿‚¶î@œe–»“¿î ·ì³åˆ¸ô9nµ•ßúŽìÀ LiŸrÐvøNæHâàŒ g8Êy4oÛ²à$'†D5Ÿ²ñÝÇ­Úňn7 ™å§8,®°Ò¨g¡º7ƒäìä®[Ê ¹Ì©v"žÿÓ¡åã½#Hóì°÷qa{¬£BٳР匮PvÄÿìwSSÃj€b™£=šƒ,™îÀ“ò‹ÅK¿âƒÙûxÆþNn» ®0–]z*®Hn»v×£oM³nWÏd²Û¥…’o‹ß5tGè£äý£ÁŒäˆýÍCæÂ¢eW I/þä}, \=z‘h×1=]…ÀG‰±îÈ ¤w¼Sƒ£B~JŠõ©r•NIM‰„îd·{aÊ.¥†¾“Û.LÛ*kÊ8aGÜÏ_&í½íªö–A?ûÙd ¡E¦óóŽ“iŸ¡6rêîI£|éº?ªÈH:€"©Îöñ>Jô4ÄSRº“7‰z[ÔO‰¡¾=Æð¯! õº$³ÝòŸM˜¤ê ‹ Ÿ÷cBÙC—GàN;™íZ2e÷:PMUpôŽ_÷%¼ˆäCC’X;´›ŽhùRtíÁ=PQ'éYŠPÕK™4üFÅ>ÔcÄ*„Œvòæ ´‚¬@A×ÜÜ[(Tôà1µ·X÷VsûÀÃOÑPvD÷ i»¼H‚ íˆî-Èγ_T’4üé”|o#âµUòm>½8“Ú³4OD AÒÎcGhJ3-ý6e:æI~vSÐ Ñ(FˆÒÚŽl@»]:òÀxKü“žE¿g  ¦òNàž«6[PÝe5{'lµOèT0ÔÄÒG& ‚@?²†/ØÆÜ㥅lG_êVkÁ=žb|$Åhß„ðàlïêêC)3í›>¯ÁÙkã] iU.õªuxÅ”º›Çn×E¾U¼Ñ=°cç$@T•õá=üOí¿¼¯$PöMD=žfYMr\ý‰ý÷¢ü†«ósÈI«¢»ŽØUØùIø)¾]ÒOñ„ˆï]1£cß4U8%õ~ë@ƒ@«“œ?äû¸+À^-~Q¿%¥ùcÈc¿}Aõ)©‰!º™í5ÐÛ‰øžE@w‹ƒ|R°ÏÔD¬*6ðÙu½zÿQc'É÷]¸§à{¯Z1¤¦»[†X~7òIh¨Ýá¶Õf êIt)Hg–튞ð‘·\{Ç©UŠ8áD„Ã{)0ýʖèD„îy±• ­J§¦o²·ÜPb ÀêD„ï¢æ‚64±ŒîD„ïräI«QæR§2B|ÕcþŽ;Æ5ÐÓR'Øô2(ì ¥Ø~’Œzè¸$Nä¼Äoi Û/î™sé7OåiùæÇ>À‚~olC"¶oÉÍü°<ºGNK¯>þÔaM¤îÅØJæz&[UÕ\NÄøê¶Š¿•&ÊT'5Ïöv˜§ˆ{NÂùìÞ«•´¹n%úr"·ôòO» ]çjHòb¼?U7ôÂDÁ‰8_õ^þƒ’xbH’òªJ¡7O „û$ Þêt°ÃÙÔkq>ï˜D1 mBõŠGœ¯èüN³éªævɱQ|›a¨+¦çI$?a¼M´M› ÈO"ùáÇK¸ºs–ø9‰ä÷ÎÞÌbÓ6¸úr_š^'b{µ—ãÌNZTz¶G;@ ‘žˆíµ Ux@ÖEHY IüZlŠÆÔ´Æ¶ïé™=^lÞò’À=wײ$Ny’tßÙ(ž šºURϯG¬voÁZVwjêùEpün„à‹Òé>É¡£¡!e§½Ð*&6Urèèhä\‹&ïUÈî‰à0-Š  ¨QœˆîaðIYF¬&9>öîJ†ø2¥s±a"º‡†¶Îdm¢÷DpÏÂU7[à…P¸Ó‰àjvŸXR\‡:ëÉw·.ÚÈñ]šõ=$Ýõ ŸG2£rD_ÄI;,üE›f™ä¥f_tìÊêÎcRŸÃ|Ë:!p¢\¡$BÎNko1»¥ÒåÚÎWAKòÝ…n+â•rŽcœg‰ÝØh!ôö’ôü0h¦þk!…j 9'á;ÝvÚð_,b{ÃåÙ1ðƒo.6eÄöŠ%k0¤¸bQzc"mÓ~¼KÖÞ£ü£O’÷ƒ=Aæ1qüV/}êõ»-W·+V¹LÔë (²\¶¶ e^yR¯/Åu¸Ñ9pR¯/®Ið‘œ;¯‚ñA»sá6(¾Z‚ø¼U¥Ò¤ÄˆNBøxqPSC‘AÝ1 áÃe sÚ‰TppÓñ·˜jCæ SŸ?ºË¸–ú++@Dø¸_&ÕÌN™F ‰ènÇ]›Ð¹éíD€f>m†©üó¦4o!AC”Q·¤$ÓKP´;TsÊ-‰Êq@ЕúéM_YsJe'1$|µ]¯›}¼GŒ|ÃÂJ§‰×õF|’ó áUJ·$tmC°ÒoõÅ¢KÃχ˜R䈀ì7J.*F5_Œˆ’½ »1&]ïQâ¯]|[ ¢ÈŠñv³Ä²eÈÝß!”o”øk Ô“{r+IÓ›= è͵ô,“•©{ +âĮқÜw¡êZ¸{é­…€‘½I®† *fà"Ú½Ùý«K Û*J§òFdo‚ C­eÔª$ïeªø`)³¬‘= s|.yT”%ÑÈÄ»ˆ. ï*U½Ùk8þçI.ÚÈ 4ç'Ó܈ì¹å2 ÓîdQi»Ùƒ`p¶l;+‰Ã›È{0dúC{+¥’‘=ûivE"d|ÙšbHºòm]*:Ñk(…Ë‘=»‹ÖoÅÞ›" Ç‘=K0Fq‡È&†$\5b^Uõöpô+Ê›´ÐS [ì7¬‡æ(±.EÙ­ºtîoT¯¢7?œUuQ#¢¶ÓÁ’‡ÎéÙåëFPÏÒbûS{kVSÎ47Ys4W6´ ÁÙHbH,å¢éÓñJZªœs{lÓ€VÐ\ « £;Â…OlŒ>ߥÐ.~HDô~Àlšü໪iñkÙÚáÄh ¶ÚÁ#,;|h”ì©“ç7ây˜jA@µ¼«Ý8ò‘'!DFÂ.rq}E<Ï;€)¹·ØÁÏÛ³TfÊ ÂM]»ˆ„Š?æ•ê0&ëݺ úmäS•#ÏM¼½9ir-¼«¶}âíYfKqëX(e߈æ ¤ÅWµ€Ýâ˜A­t7A£¾3œy(«›²$>“êÇGdÏò;g,tÕˆì¹î>M0`ÍbSFdƒK{ºí´KJíüdÊI§Ëý”.„n2å@¡*±{²ˆ!É”åÛgÓõüÄÚ'd/½i»ÒW…¹ÝdÊ1]-¬vdÉDJ|³)U_{UƒÔ±Rz£ðâAД(ÕÈ }¦ ò¦À7îJŒÝåºF°#º[²G'Òý8¹ öñÈb´E,&ÉCb)“¢™Z•ÖξÍŽ•‹q,ºíĈäƒÃ e܇Bhoòå Ú2J*ЉÀÞõvëÞá^‘ßìáDE&ºÜª] ‰Q¾…«|1‹D–r¨¿Øûÿ3ö&X²Å¸‘åŠJ‡3ÈÕþ·Ð¸ˆ<¥þ³ŒV–TݪÏp÷7€ÁЯ€<U„”àÝ(rðCðòM€/{/âŽüC¤z¯Œì=–Í2qï3²‡K$&±TÝ—[ê<äI4·})õ»åî·a¡„Ÿ]a!/#{ØÄÏåK_b¶ø °7}gõ}÷VíGFö YÐ}ú5¾’»ÛiÐ1Üò×Yu’%wc=쉘QÌ-\ò*/R0>F,ÉZ‚áç~(SÅ{œA=lë¼cl:TíVýû4/?ô êcþ÷öÖÞ›õ1h]½`;ª£Ï(Þc÷á¶ÁðS'vFñ@$섺HÌ^Áð‚kEDF¿Êÿ½ÚÑ1Ú^ø¨ÄÁ—A¼Cä&*9² Ä’<¬'ºËÏzaYŽ9Nނ挲rÏ7£êKZ©åÐmÏ%’ÊÂä÷CÈ~}˜“¶+Œ5`椷ãÞú›Ê\NRª Pn@>¨ŽXQÌ:f¬~È7¡ôÝ-cxPÿýè+í» Ý)-A„ {€x‰h·ÌÒ#‘˜¼EVœ%ÂcÐççG¿Î `¶Û7U Æw~d:¥WW}±¤5Ž?]QŸïén™¦]Ý$81õKJÞ&ˆ÷¢Îé" Ñ—ä›lÎm‡çÝŠeŸ7uæ£bcîïEŇÅË?µ‘ºÓK‰5ÿ<(ã™+²¬}Qæk€4cO¤À7hº[ôÐØÀ¿Ì1¿Ïm?r2 ó>Æ1¸l‹+P=?pÃJ)œ„wõ °Nà ò‚/©C¼KÄÇ’ÿ=,Ø­äv@«†'Ö<ßEþn%·#(Í‹<9Å’|ÖOÄoLXÇ‚¬ÁòßCq0-¬\¾×äT«aªêûûØm”ûßé¾|¡&ê’eHÏKcRßüDc’-~Ì,êdyŒÉ7ÖÝbIîñàmÃ; vXQsÉöÞðïy4¯mÞÿ#]{¯œwPŸæŸÒWt,!ëQŸRwi ßâëª>%ƒ;°úàC–R'f¦êaÖÃ=yc¿ù ëù’¢Æn´Åä/bÔø½$SõÂßg’¦ØH-KŠ÷Òa¾‚ÌÇw¦õÝ!íÿ丹ÿ‹ü¶w†"1¡+ ×òßó€®0À?§€™vËX9 äI°…zBŠ—„ ÁÌ÷Œd·ŒåÅÞC†õl[¬ âyÉÝ‘¬MJÕ÷ð9XOå䟮-G^äwÝòâߦ0÷%ù]‡Ç×¢±û4óÿuqÛ9˜„ÂäÄ¡K,)v;¯“ŇØWøùcæ–`æD¡G*®ªu£y C#Ò±ó¯äß+|Ì0¨ÁùS¬È«˜XÙƒÄ/¤ä»í<°¥bÇhÂû½"c9á"ðŽŠñ«e9“ dÂëˆßÍ)‡_nèÈ%ã1öCX½Åri%Ð=ïÊT¥DµÜóÊöášÂm+–¼UìŽçÄiA9SŸS’™úà å­í«ßSâ•Î6ˆ¦p„ô%yl ±‹çÑRŠã¤hpïeàÿ [‡°æÐ@Õ+·Ÿ\HZýÄ3€¢ þ’í†RH8„z_–_üŽÊ®#yÙ¢ë«à¸^‚m—†ðÁ ÷Ë÷Ñÿ5m׆Ë*.Wöp¬<ÌŠp޳ž="Ñï&Jy@ÓK2°ê”E”ðê‹e`o„ЮôÂ‚Ý °ç58Ìljž`éù’BÕñÖÉ·ï#oä+OþæÙeŸ¢CìØã™?D#ìà´Š%%ƒÍ+$n$}Uôe`¯ã|»™–v&v± ìÁõïf×ßc!†Æ--asÃþÌD¼÷î…¦·Èöáºø½¤ð5ð¡œq®´oZ„/©| ÈÀá±ý½$ð"àà]{º€êz¦éÍ@7ˆ=Ùaþ¹$ÓôàŽ^б‹œ¸•ÞóÜ×Lv2yû ¾JR!1&y‚^ä2‰Éš¿Ï¸”,Ò÷‚ï!ä@Yã›_—ÕhÁ÷ Oîh{-È‚ßkr噢ïfqC‹É\5¯¯üv úQä(ýn,ýç[DÐù‹ fß=ã{›6tbjõÄ÷Š’¢Ñ}Sz°¶#ÆF|±¢áU ÁJcy/òPqäÉM Œqv´{)é%Bãy%î€ï鈘Œ¼p»YL‹{‰Ðxl5Èhâ4ù^‘;~´UÏ;¤é/Í7%ñt¾û¨Pýš¿ºbÙkËÈü£.‹ü±¤è0ÚDƒûÔMm·Lñádl¦*©ƒ3%-ñ¦*Æä^Ëšúý·hðVý1ªˆÃÝ=ö ·âÏE¥'À{OŸõçnjEU`e‰®^óSÉ_S˜G±Ùó÷—G±éV \&ìDοA½‚+Ó aÏ_íx99dÅß1?ó~šÎà8óͤóB=£½'ü©ÂžÍÄô°¿‚öN¨Þ.˜Ém)~´¢—¤jP<µùe¼aPP"¯j¬3Üç÷ÑÉsa#£n‰Ü=Ü{h¾Þ1%:W(Ÿ~*wä®Xp¨73C~~dbƒä5¯¦ú˜\øN “mQœ‰YM/^{ˆfØš×ØÂ ç¶¼eL(  Jìþ£DðúsLlÕ‰a°X‘_~/z×þÉ5ï‚\62‡o†Ã(Fñ,–d‡±6ؽʌ†uÚÈÁæ—Xë!2T}IÞûa‰B½û ¿Pšƒ´„zœô*¿Mt½£8íAÀ0ï¬)¶ñQŒöpŠÅº}!}1ÚÛ¯‘žt0ˆ;ÌÈpÌtÞ6‘Ž'l¾-LõîÀÓgëMÐÐÖB–8ñùX~JÆ{¼*ݘ§ù ­ºÞ‘Ñ>ÊëÙücÀ½¸ùí{yiÂ7hŠŒ4Š׫Ð>õÑš‰%Õ]Q)UaÜö½$cý€3¥aü-±ŒöGzø±§âŒŒöa­‹Ýq2ÕöR²4"à{á• ÷W,É;?~@  ¸/…¼wbútVXÌ~ï®cÔªoFä²×œCt$£÷N8z‘Úx„æ"X ‡7¨úlÇ}šÈBÆA?/‚}Cá‡ÿ¨0üÇ=æÿ-úž9‚ñláÕwƤʨ}¸¸ë¡Ý4ûÏo ò(îz ½D°±`²ˆç()èR@I Wñïq” ¿ulª8œ ÑQŒ£AüR sUIc绡(FÏv±¤è²°|ð—‡*ä[ü¶GÆùPQgâØ"¬ÏØ*f‹—8 q ôQÏÈÁBY,®ØªòŒ7ÈÂÄç~ˆŽjd¬¯G Ríh§š=2ÖGÑ‚»acS0¬FÆú"õBY·£pˆQ±>DóѾoAýëó-Ï[£Õ";ê[4tTö<èä˜h¡ÁÇl<,þš€Zô¡Šý‘±>8¤^ðvôÈäö»ª˜+¡¹‡œO’^‹[SRs‘RÏ]ìÄcóŠˆ1;ÌC„Óê‹å–âH N ¾XnùU EB¾—äúïfmkb³ÞQè}“T(&ª1SK2àƒ"¨ë¡šÿ~.gQìb­ƒ»c? ‡šëóÃÉ y‰\ , 3¬BÃÛ°œ¼Mô~3ƒ}äcß°ø~ögføBÞjº&vŒÙ ½'b;ìê™Íl™ÞC<ŽUo!ðš%SƒÖ²Áì¤:Q?äŸ=¿ûÍ[…­¯p!ñ7pßJµñ3C} Űõ~‰‰ºX’ß{ÆNXJ!`÷™¡¾ ‡‚öšCŒÒf†ú.å Zp5rf¨‡åƒõRQ`Îâ¼·HºZN±¹Î õùkâE/_£«£b–L žßHæÅ Z-)3>Ä"ÉZ8Ïá³—Vlo’¯!©Ó3#}¡Ò»X‰1~×xœJ›w¾¸tÊ%äŸ>ÿo<•ÔîR"5pòM²ñpŠ|ŽJé£6H]ÝÉ©ÁvDÛ‡w—Ø'‹ïž—ò˜Ö{ƒ^,ÉOŒ©_Á…âzŽ›7$’¿!¶aþMrRÞôÈ9 bÛÓý9³z‹Í~\p‡Ú&gÏ›Ò:"¸ÄŠl¾Fô*5Œy±Od¬Ct„¸Œ×ÎŒõù’ ÿn²H†ð%ù°ÇTžÖ!„z 3Ög!´ €o^±¤öþ¦aU(„,3c}Œ0= G%ÑbÍYxþfùöÒQ£©OÉXÌwcW±ÈÆKrˆ:fG°ã¿=c}IÉÒ¸˜ŸO/@»ðzb„îK¤›tÌ·ñÆ+²Ô l“ —é¥6Šâ½ç­P'.zJ63ÔgŸ°ñŸð—ÔE.¦‹¯àõêµ/YFMuo5Ei–, o<ü„ðí•7ù{E‘ëÎËÞíµ†]ab½g‘ëÂ}ƹ ážèsfÆùf„q¨€Z‰G¬°ú¸ƒd!úLjØ= « ,Û”—‰WˆŸf‰Ì„ºa~âÝ”˜9Î]F{F…ÝÉ[Ÿ\’Z#ÿ:‚¼Å’LéÀb¼ƒyï'ÒYñQÊ­!àÎ`@0»¢Î’šËÞ…„Ãk$*3´ô¬ÆxŸk-[öŒîêöHsµ£Ø¯³¸ñM6˜¾ˆ]ߪ+©¹~ X´x ©#¼¤æF„=mÛQi/ÄÞå%¾é¡)D2¢ê·Œîá…8 ¥5dê‹å}߈¨‡3rQ5|.YY¼;"ÞË[DLß²²xw¢ZƒÚM8™ï•Å»þ|1†ò‡…–X‘ýÕ_àNâ÷N± ²çgÖDMðžXQ,à/5h$!ª¯•aýh jTk¼Šv·ïs®÷§+ïUµ»чãÑUòøUÄ»ƒá¢<òuYà{£yÁoQaŠ%¹ä㟓ô‡èU¼a«í&~6~æÝmêÔ_à{D{Ãèbê.8¹«¸ña@€—ØAѯ ð¡øñºâA[bP½2ÀçGÌÿºê°rõBâÅÍçâ©lW1âÛxwM¬ÉLK ‡—½÷9"ƒÆßÙÜí5‚¢~ëSyd® ð-Èr= !1Zà»à˜’K-&!«&kX¤ËcP¥†¯+|æOð…ÏåK•e€Ï"ü™®ÒwQô¬Œð-$\°3|çP÷>|1n¥æc¯îdæñ-¢þÁi£zGAw)_CÃf"Í’·6× ÷6#ÃEnE¹ËNtèF®´šZÅ…Soœsü‚‰ÛRløˆ³×½gÎ%ø&«ØðE8!š¢ ]³È70ºóÿZ‘G#–ä{ϰ‘cüŽÂlVù^¦MþŠW?£|U¨½²ð·St®«Pú-•7ZÀÛk—·Œ§›ÕX,)¤NÇpÌ÷o·Ÿ:È2ÐׂEº}ÃN\¶ŒôQ"“¨C²PWW­¤æúîB’ØY(ÔÊHßþyùaZ"ýÃ…t\‡ˆ±5‘â9[EÁy[£kX¡«ïUM8 … j HeßKòýGƒtdÛaò (^2 öw+ÂÅÊP߀#û¡ø÷e—÷Ÿ& |údñc2Ô‡½yÞĨþme¨ÏŸH¯úOçQ"ñ•¡>ß_½X~¾ÔåbIÞ°Øf ‚K°«W†úÈ·cþÐÙgU»KË!à TQ‹ÙÏû™0’ uÁ²;ߊ½°†¹‚àµNëÒ#·Ÿ˜K±‘ ÿ$Ô^à‚®¶ Ð7 ôPÕZd »fé:{­º)çc@»#êyÀdœ$`ƒñ¦Éwò”¢ï±]2Õ”›ìÊ8Ÿ÷ þöÎ Q(´Sîå.‘д䧔ü\°HÑ$ f•ü\¤®Fèõ“4ãU€>UD`ó xhc¾m$D k L]ŘψG#ÛK),+c]ïòQ&w, Õ«ºÝFD–?ßCí.VÕ;“gÿx‹¹Ô V€¾àòâpœ!±$}+Ê—áO~›ª¸Ê@Ÿ?_~x…Áoïã^è3>.„ÏC$½X’¾lùzßã[“€øWú¨ö׋ ºô8Yè#3à2؆ª~Ï@™7 i‚w¤MU°·@üƒ{šãŠŒf_Rˆü¸'ùËré°Ô}ÉÚ-ÄÊwÆE“'XúàÈy%Ò •ˆõÊ8ßóm¥/ …ÖóyeœïÑÌ ¤¡Þ–ŒóQúÉŠ:ÊK^±YéDxQ*â¦÷*,>Zýz£ÏËKL®†´}À´8]í/3¹Hhõ«‹€M̵Wåð‘݆ˆiÅ’|ë£Ï%«Gdà÷’W6×…~Ã+wß,¾/ñ.>r™1CÇZ¼_;“ø&>^‹ˆö„„e·RîaðónDˆâeWÅ®WUp™ƒžöýäï¬Øµ0„˜ß9±¤¸:)|Âtåļ‹b—©Ó>±Én±!ïŒôy_ˆ€göë%±¤ˆ6ÉE4ˆãP³Å’\íÛkï>n›|ßçëx!\Ô®ë*çòq>} èX]^áj·3Î^“†öḗçã¯7¬È³×ï§gœÄ'ëˆï‡:(w/zí‹ùëc,¢Ü9w†ù L±ûù‰[,ÉÓ½Í4¤!Á•¤×]p>²§ñX|o¯»$èÚêVªÁêØE²{H( ±$W|èé8q7Eâ.}L÷NâzÕ’2߉VXLwÅ’U–ÄäxɈð$,ˋ܆/'ëq>èJá#aèYÔË%ß V1>Ü*ºÏ—dBÚUʆëˆú”Lèjƒ!øOÓ#Æ;}°<ødf[]øAì·q±gd %˜Ùè[Ìÿj¢âÝèƒê wb3P?%¿ùFkèûÄ`æª>¤ôùà‡D)ÈåbI Ï~(kŒŒ*•Ñ´g¥ð‚|BOQ";Ã|+fA^Y\qJ¤_ÚõÏ<³¯|³Š]0¾¸÷~N +?%ƒ|x”øfyꨡØ.º]Òlüd9ˆ‘¿3Äçû#Ç ÝËS„ƒ½Štè…;¦3Ø‹U%p‰2)Ô‘¾“+jêÎ89¢˜BÄ¡ƒQ®È7ÁÅgˆÀšÚÌ Ô7³¸Ï]A"Ø5OÎ÷…9x:b‹|K”™V *{ù6»r8ëÆ÷4c}°‹áÕx1ƒ´¸9Rwàp‡åâiŠ`¿s¤.¡Nè>½œØf3Ô‡“,•ä \ùó3Ô‡ó{@ á—X’±~25 µ÷ž×{nï:åõ›êƒ3îÌëƒ@Ðè#,R´;ûøBþ‚NÆüKYÎî¢á½‹ÿ3e¨Ê®y¸Ù7RxÜòÃŒ!Ùœ*ájZáEÀ½¼4¸?ê­Éß$"Ô?•¾bëìšÅq&^xdD«  Xõí ƒ’þ9›zc2â‡ûØ-O¥1Øð¾€ïïÌTGIâÀO`ü„LUc£¾&bîè\bÔ±‹š*ÍxpÄ6[Ô¼/=¼p÷]ÊÓ{5/sËR/…"³‹š÷šqâoœe¸Õ.j^2&ØÌàÂNµ5ïñ/ôe(ÎõÎÀ_§_š‡îwM¡­ÜÅ®C–ƒû܆S'–äÐ0¨n‰²P,É•À„Ù6Qñùt–|]ø³ :#”E¼š…á7ì`ŽºVdðw¦ƒN Ì(ñäoFt¹aí®4f;#FQóc‰iʰugäÇëàŠFµ!Dðû¦yÏ<¡¯žä­«Âù¥yéó°\`RŠ{ÿÅk­-7â•Ô{ùF^1?’+,rµÓŠÓ™¼^œzVôÒÙ· ãÁGN}Ff!âìÈ—Q›ø+j#:ĺ§Â?výH¬ö";På…¸3æw‘f,T_¸ª)‘<çâ8ÛóÿkÉɘŸo “od⇜Œøùý˜Fip”æÉˆŸ?ˆ„fˆþí¾Ÿß“!?r‚*–MœÀÉNÆüð>dOHŽ(üN%øaÑÉÙ‡ Zc§¦íú%þ)}@þÕçT‚_»Þ_b§tÔà ÁÍŒwgÃ[ì¦ðûS?bSÑì¿gÊ3ä”pŽ×âìgO’æ]§„sà;ýî#´7ÑÿŸÎÑ'ŽRÑÈ@>kf]C´- •OÁ_§ünKÈŽ,º¬“Ñ¿Pt=ÃJÖ2q¥K¦º¸ (‹@ÌKa §¸õÈž€<¡;bÍ+Ÿã¯u`dŸbßw…ŽÛ€TbC+î}?ãÈËÀD޼OqïÃZóÐø’&ÆE'#€¾+nwh ¶(åO éÀÞ˜d#,ÑÕq3Kí£‚”‚Ö‚¥ñ½&>"6†xç‰áÇ))há–7I±ú19r—–´þc)ö¿2)LDt¨`öS`@|e@Á°J™Î8…ë÷SøŠ1ý-RŸ“§Ä!ãïß!?ˆ+PpÀðú#E€°Aµ$~Y‡µéˆê‹å ‡µŒ=l;E|2HÓÓ"xn™X‘îÿ.ÙŠÆýïÉøâLa›ü”Üúmb Q`Ò«ûìÒúù+  Ç‚£–˜Û &Ò)æ}÷,Ln<˜â,ÏL¿S,?˜ í«‹œá?þ¾ÿ'Z€£^²]TÞ’¬×qéjfr þ·x.ácE"Z“Ï€ "~ðNP±¦ÚwâÑÈ\ê9…ê9±ûyŒ¥•Dûô¨Ï'ï|O@µðk/\o¶)!üÉèŸïþxfðvåßy áo !‰uJL¼eoÊ3ñ C?ŒÝ9f¼}”%pqôcì åÉ7ùÐdüo H¾þ#P[ýü¼{øWûr#–4ÂÝQ8‹/V¢:VØ–‘…Q}Li–TŒþe©Š&#€hñˆÄ}^ O ²×ó¤8õ§pþîX;•Ž‹bIžð']ãVóŸS¢:ÀïÐ'¸‘Z’‡€«æU¨?œê×ç›ÛKÅözßK2ô7a”¶6Â$Wu·Œb$cè)|ƒ·¿`Ë[ ¢ì ê½,~$dGX‰ Š+v2øgç¿q”.ù`Ö_÷ÂÒ›Ÿe¦Š¹Œý™qjv2œ®‰ÁÉØ uz“¾–®Í3ö‡Àbâßú¨¦Ås™Ycp6{?{$ª“i¨àñš0/Ì»B^aú¿Ÿ½„Yíä™ö7 ù®3K*„¹ÁH²”«aðq‚ ý±ú5e ÊÀìßW˜ÒbÕ¯4nÜÔÃ4x¶Õ'YZ3‰§% òRœ«Ï¹eÛ$˜wsÊû“ÁÀÞt ¬‚qtD·e­*~Œ ?߄̋5 èáCk9CßKJj.M¸m……XRf‘±ÈaP^[VR;6“}€:¥g ðsð$$„Et'–üÖq9kÔëi¿¡Àþ?¡©øéPÄ8Ï ÿ¯yùïE†÷§[eÂXññ#âu¦hg-£€H¡ \CqK2ˆta ^² ˆ%™ý«œ²ŽïEêßcIõ!Eêgaª¯¨IVð?ôª\`ÌGÄ#\4¾ ~â$ÜľdÅįc¹b^3~×>VÈ^‹ÍŒ§‘ÀŒ¬šø!)Àaùú©!.q†ÿ:!Ó;º,›‚2cþCàÎû~ÁÙD·l£ÌýP¤®®zSFƒÅ63Bg÷½f•,<¿ÉëÊ4Î28™û-ejòÙ/*ßàŠ’5Þßõ‚U™/{I E½h¼¸¾ÓTÔËðIƒ)Âê×gôÏÛ^’šÂ¿ÿ (ËàÖÈT°h®zø3öwš_a‚ÐÄwqÁ2ôwøÝèeÛU£eä¤uoÆßa˜& 6 óÇ?•D NÔþRU¾^#Ýõm[`ÿVȨõ‰”#GHÐ8­°ÿ–Ûpß`*¡–}ÈCÈ,hb²lÅÉðòŽ YF¼ÅóÃ3Åïº7/o*M¤eÈ¢÷°½6æâ‡dÈÏk¤®ê³#AT?¥À>›ø:õ.úDË x7‡‘‹] eVœüüb…„uó«“_‡W71NSh„'¿v8ï™~_¥=·âäçÍ./Øöî¢ Žˆ}/A*+fÌS!eVzISÃvµ ØL´>w”íÞY~È…ô"¶È[1¿ÇoŸLn½ÿWß­è=Pú¬Ñ#UF=$…öw0ÛóËàgËØ¢û»ô‹ŒˆG蛤 œ¾…÷7 §eð[’«Ôí)þnüv?ü™-4јßÊûÃsÌp™ïPÍ¿×ÞB žZˆŸJ\xgE~a 6²'ȵ7Cb Å"ûO­(›¾¿3+ÉÿUÀ÷eÓÓ–ÇÀ\QXn¡ý´'þ 0O­©ÆXŒäï(þ-´?œ;,LË® Ë-¡½^óú‘DÎÆÝÂõfôïø‹ ‹ï%þós“¡´úg±$˾ü;õ°h½g ûfa±o8 ÇðúÍ …•Œ!ùºj~u3þ‡i4ÝÓEà»þ»0²9Ç‘ˆª÷®4îkˆ ÖÄ#Fá¸w¥q› o4‡9‰z*3øÇ„B®ÿŠ¥loÿVìæè©üš‰Þâ– ²Ùó —K é{aä£1‡bInù˜‰Û‘|Ç›Q¿ˆÈZáñÔ,–d³'6?/¾/ÙªEȘ¾á8®ÃÐR´º›!?òeûŽâ›?üý¼’[#\ÄËŸ?àZ±Óý”U%Y óðÀá%!+Šˆ~K˜tg|¾#3ñêg¼Ï[P¯—”6Sá›·à}ÇÜôMƒúùï{„ô"Ïzºð-x޾ã?&ÚbA¡ú³Q44õ¶Ô1Vt¾Ã¢õ#j@eIÞâðw‚Å® å¬ú”bîÙeUã3Øy‹ÅÚÀÐ LE׺ÅáoÀ>ñ‡>’gÅ.T¿`+†‹™:÷*Ðçw;ûbI¾õFƒ:îÉh©û ÔB#HRQ¼î+7¿'îï°7¤ê§d¨—ÍŽ8ÐÅ0\<øÅâ/lSÛ ìWVj·Äôâ‹æå‹¿÷M!0/ã|'.×aß¿Œóá<×Â>ÒÞ÷qô2·,ÆÏ;ðÄ­ø4¯À|ƒLÞWó+ÑÅe~çC%|·Þÿ|±¨j=bêÇGLˆ5UìÑÓR·Uþêk¥î'°–H\,ÄŠ›W0~`)G‹¯Ðü HƒRq3 Éo¼ÿˆ£é}¾Ì—q¾ƒ’žŽzìÈwú^RèÕ (w©Ðõ—q>ß, ’ð‹ÖC,)4¿Å!%AM!–~§?[ø À*pá׋Ê6Y$‘-±‹¿ û!&å.T)¼ ûAS$\ëâQ/N½× Ã3Ð×^#¯XüÑ»z­&©ŒT^ý˜"0®õ¾'R²¿—__ïö²z¿ «—e¾8¢=ràçQÖï7àGZí´0i%U\áßp_Gxµ‹Ã.Ƶ/ƒ}Ø€"m¼ Y}H~å£@ðš€úüÊcá¾°!HV¬(Ú®°gÄÍÓY|¯)8Ÿ×þÞçG÷!ïcÁùüÒú-Á7E±¤2<õ\ÃâK½]EÝ»£ØÁ¥×Ôx÷ÍtïýhéèÁÃæC<-3ß{܉wÇÔm™ åùê# ,ë{E¶u¥»Ç M”à7¼’Õ‹@qšÓA}¯üÒcÓ™Ö‘Hó½$C|Øúæï”á‚XR&{6 üÒL1?zâcžÀÕú‘‹+–!>ô^ƒÃÑ_r›Ìß\ È©)0FÛd‘õ’Ûš8 î‰ûR<8°±Á1ü³Ô’¢ëM!”a~ò½$Ëú|›¡ajI‘õ³žö~âþ¾—]o#ã“⧨W¯üÞ£š2ÌÐŽz^ ÁïÁlÅͻъˆ%EÓy‰ýñGóªÝ—!¾³c¯Ç9æ©XRØx ,*^ð‹™!>d‘dýá禔_†øvLô}7òOò´·«¤{†kÜÅ@L-yåiÁ~élDŠêFE¯Á¸]Œ›š¿Œî ¢MÃlÉIÕ½Œî‰pÖ·ïC~x%O¡uãMEô(V(ê‹x4BÛQY /Ã{xMMÃËÍw Á ~ÅÎ`ÓNór»šp¾’àÁ dMòáç]Û+zÞæõ!¬¦ôòªž÷¬ÐÀ#TRÑóvÖ® K½ÆVN|? ;×ëÊÏ(jNœ)°(š˜ ‹%ù¼Ç,u…Óò5A€x…Ò9OXMNÜų_(}èø`uG—«¶¤ ïE¸·ß»eÕ´Z%vØ€5dÓR"<`>@h9 ·ÕÈmþÄ\ò2?™Ê0ó•Æà”ƒŸ­Füü[Ä\8n1‭-žä ïá …›Ó"N Ã^†÷üéŜȟ4ÿ‘"+âÝ2×óc–®2Šó2¼gvN^½âµ#îKózQé/äòsiIP ùáÉ|[Ru‘3™1"Û±îŠC¬ÐùŒ°?(ü´ŒêùsÍ+¼þǯñ·Ÿ#¾Ù+ºZCf‡v.ðÊÝ·$ðv˜#‰%y®ósJbfJ ð2Âg7ÒÉQ¹%,–”—6Z£g’£þ2Â+Ó7?ªM1s_†ø˜Z†mÚ5%G}ác÷CÁöv œúe„Õ8‘É~?/§e„o®ðrnhß÷ƒÍiZâ›ø #Kú‹ÏÛB¤WþìÏ>SǾ·~L;2(´iÛü5öÓí{zs…ô)`Öä˜ße"‰v¿;7dÞW,•ïÇ…€²´‚Iü•ÀÕOmþˆtnt0Køþœ–‘½i"î"¿<±âåÌeð˜Â\×σ ë3’ä‚¡Œù†wN+1½‡É"2¾kêÓJL/5þA`82Kòžï5®AÉ…–ñ]Šk“÷|X¥$ºEUéKÒ[ÿ0¯™T|GT»å"Á"m.êïñŽi l1 ¸þßoX÷´^Ø\¾y·.ö¿ïœÃ=#Ûríááç÷ˆE…Õ×úUÃ' ßq ¯º’ñ,A’*Hû´BìÛóâ}†iô9ßÕ5rí||–yî‹`&±&×~¾-ùþ Çv«ç³ÐúK_Ð厣ú”bå$ÌN”hjQ~°/h‘áDÔ„úrùø§ö µ•KùÝŠ³ÿû{"2FÄ0Ñ›—Ä4×ùÝ+V¼ü&{ Ìþ ×wñ‡4¤ÜΉ< ¯­%0k ûóÜÂ.b“‰55Ïcƒ¢×ê‘.yÜN~‰pò¹øóJ W”í›qäKòdr PÀ”{la$bH¾i¾¢¹µh­zÌ9Å­\¥ë_ŽØ¥aø¦uœVà>î¡oêL½Ë«¹ý`æ  ñ÷¾¸ø µøù„3«¸`ÿÀ}%Èïý›8êK²ŒcS‹6^Nþ#–”¾ÏŽwK°þÏ7?ÁI†Tøç "»úZ¹ç·”Û‚ ¥Î³ öQ)2Ø%*o|Dzt’ñ…úõF‰ñô´bÀDZ0D¯( N°Ó¹‰ .Äó•ó;ÂŒbEþ¨e3WM_‹>䶈ýùæWTþFðç#G[H»žÿç¢ÈŸx2«×«òù6† FCºEæ ©åx°îÞ&ÝuÎw{qZ!ôõ>^a6%>íâÇ?ï´!¾\1ñ£âÇ’ ÂU¥Y½H`wÐ;¼VOZý‚:ß1Yˆø+ñ<Iog†ŽÁ¯ºYŪ6š…Ó,ââ7Ðú p ÈOÁI À¢½.™àM‚!æ&〒¡®Ùë¾"øS/‘Ew¦|O³ôúÿðlCÁ$|O J”&Õ…™`A[ϧqÿ™{C¦š¥BçƒzLšb&û’êâØ¬#áÅæK2™“hLÂŽðãUrÆûf?” rfÕoÉÿ‹ìNø‰]^üÕ|R¬Ä„ suWrÓo4Ê^ôÚm"Á /ù´„î‰ Ößsd_’GûpñAÓqûf[QEeXíõë=ùéß#ÎÓjbïÎËøg©__{1†<øiQÖ‰¿&öTUPÇÛ*­ æ»'â›ÔášÑ>ìÁ½°î·¡öÖbÝGR3¹È8Ø|T|I¶îóݲç/¥Gõ¤Ä5RQ™í‡9´*“ Ú‚aþû¡ƒ¨›ŸÑ>ÒétÙ’!±¤T|=Dy[I­/É_¿^)1~yOÄDœV}Ó¶E$ò•’u»˜½0©÷ÂǾ)§Ç>8ïÓ Û`±ð½¦Ã>¨ƒP½rùýcz+íÞn! ½˜ ~“FCžü»$‹·žx˜+L8}E6ï¿“¶Ð†ùÍnˆˆåTöXÜË#±‰õ"ÚõÏ|‰ Þ°^T»ëG#îÅ«XRä[‹ˆÿw‰ ¶·2ä›öCá&éáû=î™ËÇ3¿à‚àO!úÞ!¿À·½Ùã³æ÷ÌŠ‚õB¯¦¶&¹G,©þ o¥ƒìO #½¸öÝ(ݱ–’gE/t>„H=¬tq KŠkØUøi0JKÊŒ·f ¯X(²"ãõßàÝæ"9aùS:Þu¨>œø^Rv~ éäÝ‚a~zÆûÄïàF&>eýÎ$«—SÜ– õEê ïd‡¿>#}^ìÝä1âžÄŠ\éC{l˜mtÑ õ ôù‰ã• x0ˆ×¥¤vàoÀþ‰ÑH/ž}ÈЃȱ¤H¸™>4 ¿HLþ^’Õ{?yȤb¡v È] ¬ß˜¤`^%–”Vï^W€‹®Þ– òm$‹’ÞꪙBÏ_ðù¼ ^^[ ¬/Éõ~´í\ê C\È›yKfûxaìºDÜ3È×i˜UCËWRÒZýV¢ SW;rMë f'â•ãX¼’ä›{ ŽÜi‹fºNFjpÙcÂDÿô ò‹ùùCT,TõÉS•è-´W‰ÀË‹%Å·¯á¿´ðz< QêÅ·/ìíÃLÒWQÀöšØþ澕5øï¢ïÿ$ö‰äÏ+”‚â‹ ÌŽ·I‘=ØÔ¹”á>b÷˜Æ‘Bðš*—VQp®ÐØüè¾Õ˜(–Ï!LláE P¬©®ýÉú¹À[ÄfSR{ +ŽÄÒ‡ãXRñ#€›÷ÌjM~°à‡×Ž©Ž~úš¢à÷FÁ?cr‘¬GV~¯;òõŸ|tUeܯ3ìô>²ìÔÍ)[†¯<¢ËB³°üð9½´Ä¯„ø-…åG( >qË"lú{IÉìDö>Ñd?¡¬ËuvÐ.©Ä¤§¸sœË!ÕPC¨)žûî/Ž¿¡jÑO÷V@“ù„;#ʺfªMË(„# 6ޤ@§q¾æß]À[‰M¢ ÆCÏL?HXe¬ÞuŸU˜~"J?yqw ÓÏ÷4*b¥žb÷Âõc>V|D˜‹ßR’{-¦Vy¼¶ßkr1x1.÷}WŒä{†þüŸ@1|V¿%KzÈ`À!|b%/^æâÝ·/ó—ì­T¬É÷3o9¬ õÌï>ˆì‚~á¶l3øGãó+€ÔôˆqI/ÙÌÇÖOn»—^ê]ËðËF§äÕ01Qbͬk€½)v¦ †ŒrL_$ÍHˆ¶ÁzÉî¶ cœŽk€XSæ?0ú ;vÌ|ÕšêáH¦× «aµ¦<D¾/(\ç ’°¯)PÐmaµÜ,Œé¿×?7H6áÔ¤ŽbâG¤’ RÈ.|#N/&~‡ˆ"ÊOÿcûÛÎWô¼&pÐA.%‰bMfüã0IHÔ‘5n†ì’N–Å$§g(yÀƒW…KA´ýÊ7ñÔ~µÞ=2ÈnNÍÑU¨— 0ÿhFæÆ›UÕç’Q´½;ÈÛÓoé4ÑFŒ¢èf” ‹õˆedæõ°Ìa.)`#3ÿÈ9?¶HJ_"#×”sÀ",D1læÌòéZê÷8舲šU±$¿û¤ÃG†+{¢x‘‹´w3’§yêø'|/)P •aïm|›Ùù’üîûI !m1lØÎ(ø^7Ì`äŠG¹`! %!µZRÆþD0ƒ;Ü&T~gÔhZçÕ‡ä›ÿ“Þ4ž€ƒFÆ;Ó½Ã÷W¤˜‡lªš‰W š`¥®qæ| ÏŠ$®#ŠÆQã{±³ 0'\Ks£‚~G8]h†ºh‚G¡üygNÃ|‰|jó+”¿»"\c09i¢XÅÉríÇcÔÎTœüFP½«}OeY@»ÏÅd¬CKC 6Y@ó BO—2ÍÇßµ|Tô4êTo¦ ®½D < õoûKCŠÉõX`cU‘7ÐÖxY‹% ð#ÖÛôÍN#Þ΂ bÞJAÃ~kßN¹hâò!°6”ù˜:4uÍ *¸V¤ëâ- ƒ£€‚GáÀe÷WUUMd‚ÆyŽ#¯pÚÇ3 ¯Á”cHŒÐÄe½/¹_Æ xGèWqþ)Ç-ˆNX•ˆ‡  ‚ï~kü ÂêC,©AÞæ|±¦¶‚DRâ ‚O•Ø=~!‚Ÿ®¼xÉå{~‚ŠÈö$Ö &Ö(äñ `bì Ai››'X©FF à¤_èjäýËFnlFÀ’àîâ!É ÁåÝbœ‰½XR}ÜnH8^eŠ%™ö9ÁôŒÄ¡˜…£˜ø1þ÷âÏ¢-U_,‚h5Q”M,Ä;•øEútdNe±$‹½f¿ñÜ‚6ªvä·aaØH¡îྤ°½CŽíš*û3ø7rí¶HGP¼×a…øåw!)·bÚ62ø‡ñ¡ò¾íQ/ˆ%Yí5Dû#㥙*I2öX?†q®zÄ2ô7½®ð7ùn6µ=Xø3E’Ž˜W\ãÂú›8J¨®&Í£šøEþ(Ú`k¢{ú#™<ž‡Î_=ù»XŒñrùíR5ÿ-ý>6´ô/SY¿a&XúýŽ„1›£‘Q¿ëkÞÛ’»<2è‡ìœù üUgÐ-T/ÜPs_Ô.ž!?@õÁ®|!|‹×8#~“Ü܈—¿jêmÉ€ŸïßvÿÒ\ªR´Ðþ&3)·ü˜ù#¾¤$ö¢£žÞ‰ã:"–d´˜%èO¾™á°.–û^8θ.¥(êcŒ};£æ»eá–‘¾~ý¦csá–‰G¿¸ø1‰0ø«›¨OÉÇ>´2?,ü8†0)v‹Œõì=x¼‘G ,˜„¹éÈÎ ÇÕôe´öFꊜWñÆd´æp¢XõŠßDS1[9÷#³_„&¢¤©ÿwIÿf=xáÀ`ß̬?8Œ³¡wEŽÊ™™õGC½±-j<bEñs2ßôay‰Iã ……n?¬Ôgd×n߸c’Nå*Vd/÷0 {D¬(_‹Œ·Ž£ºX%¾a¶H¥Bv93ÈG,zXØhþ°¨5á_\Wô€xƒ‹ËÕ«À_xH¸”£jMÑö]N|˜2ëuÑÍ‚ô1Mõ³6ÞägötóÑÐã‹ýH,·²§›Ï‹‹“9õ¾¼Îéæƒ@ a1V¿¾ú¸ sÄþ=3ȇ™#NȘGP3ƒ|#BÇ"DT¹œã~Ÿwc$ºkÿLE¾·É9Š´É%M÷¼ª™äC~€Ÿ2Öâ`™ãó–{΃„02çÅ’<ç½8iô9DÝ: á¾:=HðëÄŠÌóöº˜”qŒfÑ{Œ9ˆ7aû@jfÁø¢0Äɋٵx\ª¨7R‰Äíj 2‹ƒŸw‘øñß^Ô8l¿Y»D‘;rfqð#hÏ ôjJn;3¾‡~r› ö¦Ê ï (›~Ôñº¤Î’Óaöãå´á»‹¹¤ôúFш„a®NÈbâç=f~'—¨]fIé<ÐÀyÕefdoýœÂx°>á1†1yZâ8:8Löº`Î’ÓK'í¿å’8'FŽ3#{}2U`ûFý–Œî·~QÞþ<Õ°ÏŒëAYô¯6H T̸Y`=|àCàñÕ})°â1R¢ÞÕ0xÖ¨b±cE+^þÕÑÃÌ«È6…˜’ez¶°òÃX|J‰êèØ*ByWdOù’âáHv(Öt8Ý‹éö_²ñ# 3áÏ23Çï ^“࢚RBÎ ñyÙ½½ät«“²Øø1šdÇ#?S_¬è»zÄ%ú Æ^,É﾿^c悬43¾‡‡¡?(~ç_äx}.9e´gTÓp3S+êlgB"$/ï)“’Y4½‹¼C}×åuVM/©~Ìô1"÷å{MqsCª@SEH¥ÚÉ‹¨×Ÿo'4‚-¿ZõÂ)ƨf^%SŸ…⇤;æÔ¦$ä³Pü¼¬F¡ìÏÍS†¾&OvîX  …¦BŸgÉé}ÀÍËß!|)Ï,9½À‹øÉû;3”ƒÌ,9½nûU‹¸n!^˜ÅÒuû{Ý­Xa3C}Ýwæáï´?ØC¸¶û’Üð3Ú]†Ø*‰ú˜"õ2vLvâCÍÂóíg3ºEÅ»™…ç×I… ±ã…!œXSäý? O¤|Í+èM³òünÃcóA#RÆS³ýˆÞ³‡ 1q ÑÏÏ ´¿x½ UÇZaú‘¢N˜Vu€ªŸùю䥡d‘ß®Tl„jÊlVÜ/ Z±ÄÙMÐägÁýàCP÷Ö¹ iݼEôßóÙ-¥Þóº/\ÇÆ|¯)¶ç̸Ї_1€?LÄ’Ò -ÀÙÏŸTõ|fà Ù&5Ò_6¥HšøóŽK¸Jµ? ð·Ãݬ£ŸXª¥+ñþnâ/NlÑUµ`‰ïðS$'ßžæU@•ûúƒï÷~3”“»Yô¾á†gxáö'°åYô¾$Mþ=bÊMmÁoGU@øÆ ùû1[Eð‹²ê®üQ¬)O^uˆe÷TrÔ•y~¤p0œÂR`ež„¢îïCáË«Äw öËñ{»‰žc•øŽÀqA†Z% ¢Õ ãw Èø@Q©®ÌôûÉ;ñ2zõÉôßkJn'†H‘zV|ßk ˆVH‹Ä¿¦>§à€dãŠLÜwmUå¯M(Ò†XH€ß«—g€V¸â²áˆ%ùðò%è º“°OF3â`_5½×7’½ðQÝJ˜¶zúþiü´UÎùøÅþ^›–‰œ—‚OL~Váúùk†®¾QqteÐP‰b©èç´È#" 7oÇÏt l~Å›Y³{}‡¹á&H ®øùÅâT!àéE\P»à* ®5 ç]µ;›¿†­ òßî®ê#Ö¨¼¬×7Òô©ÄßkTÞï4X}¸÷‰5¥ 4D*;0"Õâ¬ëѱ~LÃRî{Máý1ÃïލoÒâºLÐ9¼«Ô2«`‚d ž?„¥~W«’þ¼>%³¶Î”SÃæ—ïëÞ+˜g¯ßû£Éêá™ 6‚BúCÛ6½Dó£ ‰ŽmÎ_xž)e(ÛÂU9DÇ[~^Á§Œ¡ëñÁDƒ¤‹®U$ Ô5øJ´¨‚UFBÑæ®Åù%j¨µ*õ]9¶¸=Š+]h±†¶¢MåHµ*í/t"$iO'nO¥ý¡S%R~·RøÉá ’Û«hŒ«àƒð“hè•7©8bM¥~’Ôò¨!ð@k õ“‘#úª®ï5…÷{·z"ËkÊc@1´ùÒdʈ5i ž¸ÃqáêOIáÀà@!JHòÓGØ‹ŽÝÏÄ£€F‚T/Jˆ<œï9ßç!Ä!§X‘G‚Q bhÊ%rý/acj%”ÎÊè`¤Aê"©•ÑÁŸƒÁ*¶¦ BÁ]¤Ñ“ý.?¥y^¯†—‚ðºÄŠââO4;¶NÑØ¯S»A= Ëç#ÈI+#ƒ/š.†°2,Hx¿†L«x]¾—dTð„‹Ó£š" ì¬Bþã™dŒIIð8W±ü{—]Ì«:‚‰Åã’!Á0É$ˆÜÛ.Ô(«¹R¾G–`Ì­ ¬èüõQß‚³Šò%;>Žïê{e$`„·­ÙRÞÝ+ã(´Çón±¤Ì„`zÏØ Â"É×ùý„5|—qoë‘|¯È´ßß…”¬(†«ÿÀѾC{hè*–¸’N\¤±ýÏqFqäÇ.Ä7pq‘T¥i8ÌØ”¹¤bÑÿÞ}Ö„â™Ã°^]åbÿÑñ5ßý˜‹Õ4”˜ÀœUbxÔˆ%™0m^˜Ñ*—‘UR>¼xyÌߢß_¬ $«£à"©M¥VQû"yÃþÇ{:&ŠbM±ùi°ÂÒIäœàÎkùލáœ;qÑ ˆµ†ï0ø+ ï‹•±Àmi=2~µe,°cbGx=Ò ±"ß~ =X³¸ú¨¢'C=20g„*¿Àî'+ÐǸ€w†}+† ‚kS>» €³Ó‹à唨vÐ{2&aµØfvÉñí¾Â+r1¡ç~ßû]p@:%ßœFx­)·˜]€ÀïŸn > âí‚Â5«Ýa¤.u®û# sAg÷íCÔý»U0Yñ^Ê1PS2?xò'‰ál âö”Ì>nã~qÑ H˼aÓ¶+°³ý Œm£=¿d”³*ƒ‰Æ½|МaÿˆŸáuÓþ²f>‡ã3*%qGƒƒ“ “ôÈñø¿ÿG=;5úㄽ¶ïÔMu¦»&øÃøíŸƒœ€ï“ºÊôôüÂ徿Ë)0œ7·72aÖTy{§Õû¼‰ø±xUœñS€8Ú ÿ€=B±#Nâ¼xž 1TWß­p0üðd 1YÉ5~! u“>Å>¬îÆ_7ù´*ðȪˆ£ö{EáÞ¸ûÑ×P˜ .‹þ¼Ã½ Ö™}l<<†uzš«÷G˜v‡&¢çÏÉðFwkxw‚—ºèÅVoÂXƼ)€ hž«»±§ïŽIìÚßkê͵Hñèà-âh=\óÖ¯¨;»)$æÔX]ü~`_/ƒ§€ÊNÕÅOÔïÏóâï¨óéT|Í«7##ÕÑŠ+Wð5¯æáKúf?^›p@;Çø{ªî>•p‡¿8ÕŒ_ë»å祈ûP( E;ÊÄ쌿jõSá4îmóõ?ßêža®üE(Éå>•LÄ£µ`p›Úc矯õ¬·”€&„¾œÐê›üS’ÎÔµƒZôWivfʱýYä<ƒC™ü³ÞÁ_`Xü@?`VX\?Ùu~a96D磔µ¤°¤‘¤ÓÒ5(•bS©Ô8À®Lˆ0Ôkþ¼£«¨$7ùs¤µ0Kò0„æÅ nš¦0Ƴþ¼Ÿ5ãÀ³%±¦C³Q_åÏûY/P±k‚ùGW{~¿È»9çy™²¼€P¿°0^WƒÎ D´ gÿ#~@2å‡Ñ›M-ûÚœ*|±ïÄ÷šBwœ;lÀ$—Ð2‚}mã~ ¼±ÚCÔȧ‚_w“:N.ò¼ N:Åò‹¤áeéS²SÐ0Z™Þ?¬þL¾§Âag×ûNF&®u3¦+ßk^z@l6ŸN¿“mÅ¿(ç-´L²êÕÁþöÈM|ƒä1¡,>EóJ³ºCS7ÂSö{M©ªýòª5&§àƒœŽM²Í,\×ró<5Ø¢µ˜¼6²Ä8øüla™‹œÖ­ª¨¢z FÌó}f@äƒsþAÕñÕÛwzµUöœ ù fŽÔAȵĢÂh™ØÅùç°‰ý  dPN¡ÍŒÀŒÔÇBËÂÀsç{ äŒ ke@ð‡Dm!#óõNvˆºƒEæ [³Ãª°:82[ ~º·“x«ëV{èFh\ »Ê2úÜ?_öªjűûxÅëÍ£.•o%2…¾Ä+f—â~T” yuØî¨EõÆTäÏ×Ê_¬)‡¹?’`'o‚ÓS3©Ž 4‘á§§g}¯ šì'Æ:çV1ƒ_€pY… ¨¾ÜŸï{AÉÌ¿9Þr$XnA”<¿P²À'øþFE=Ðy~adê{¤ò ›áË‚ÿ/U&V<ì1‹ý(%Ñ)x¥ -.š%5”8…®Æ~H6½§:* †Úõa¢ˆà[Á>…°†nø^¨ÈÂS³j'X%¬kjùï«fׯ3¼ÐŽqÆ÷çØŸØ˜µÊJÁÔÒO€®¾I™SúqLÀ’…Ë÷~n•¤F­ ß î8]­ÕžË+¼A¢5q¨YAÇF8¡¢î3Sôi+è†xÜ’PŒ²„ŽZˆîÁ*ñBVQ&V³ŽZð¥„jÖÿÚÑ­×òíÝ%á}W<‚Öÿz³-‹Q&\D4m·ÂA3jƒ±È{6QFZ£R^8ÂÄÝ©O©ò#¼q!û·3A+GÛŽŠÇ²UÇ׸ÂÁ·ëOHÍVeùn‘…Åá(Ö”0ÑFÿ X†ù…X’ÞkÞ1jÿ¹—ïJOa†Ž4¼CT»í¿¸G¶ó‹‹É“?¤  ¼kJYfx_D˜ÕX…ÐæÆ?÷l`Z!VU2Ò|±o0š–h•fÖVx/„,Hz\XAÖÁ!p–ÈÝwÕ¢ßÐÚO(2ÆÛÙðT#+ RŽeß,î½[›k3$XèûþÓJak‹ÍÈlâÜ¡>&'HàA¾¯ïüK´”vŠ€ LrÉÓwõOš\ Ì-'iQj\mRЬÄÃzïŽy³8%-´ M·ML2öQ[šýù2ÿË5ÃnÀüA«þ|™+± I\ À`žŠUžÃ•EæwxûOu±EÄþd‘™Ubÿ¾p¯&–®ê¡.ØÀÁ¯¬«M¯ìVdlô.¨¬r»ú‘õÿ!;ËBíæ%È”"»öT7WsG`û CÚBiÒÆì¦wÊy’Ì@Hh5¼½‹&Ü q´ÕðÖF½[qs¬@_èkN²;xˆbM¾Å¦°xÚl)þ²J#Á€˜H ÒV(c òÓùÞ½l ÐÐþÄì2ÄáA}Šk¥~óûóWüË{W?¼'vWŠôc¯N4 s Ü¡ö»JCÙÉÜÄK^À)±èÏ·²ÁÚÅ@ A¹&âŽí/àãk6 U¼Ù碯ÿ~öoûG€á/ Dþ9éãÄ £ý†2&òÅ¿/å-ˆ—?ï›RbpÌŠË  |NTß§"qò{MNÒyÿSo«Ì‘3]èRµÎ-ˆ—óèÑpD^Oœ·^‘ò{÷·)¸›9b`ä/jgrÄuû“!v‹ ˜Õr/½x-ÅE긷WÆÉ`]S†Ü £nfâ¼¹Äqt+âÅìøÎ ý+KÅ[/X^?AˆíG¥ÚÞžÈ%®è ʇòVÈ‹wqaoä•~/¾Û…†OY©—"^tÃwüµ=ßBùB&ïÇo€Êâ~UÂלp×~¢b”Mñ­„/d®ÇÛrr§†Ý¢¨ô}÷ÜMeèÅš¿Ê¬ûÓÂꂔŎ‘ïá͘Ö3<ˆï0á¨x3œ…›§ï(~ 0ý>HoƲ¼ãWÕ!cßK2–eÑ]GŒËd°[É`«Ú  iœ¸ E:90ÕmäFú®X“î7óã_}zU*•›Ñ-ï$±˜7šzÑy«•–ì[nÆêª7 ¿ŒˆŸ¤é-ÊÉ~Ö>ä±®ØxDÊ0J=]‘‘îŸ\±›¡­Ý‚Í$ΖÅo¶ *=‚ž?7 '‘­†¥”-õ¸g kÌ(ð".VIûnƹ&dïÜ;¦“jE¥–x)†±)©Sò¾ë¯BìVPëúî É‹KªFò·Ú£m$ò¸ê–)îÄŸÖ-ÖÂLJ¨3Z|¶ßÂ{À’¸6zYÑÚpÿLA½…vy7šW‘pêÅ äf< ž uÝXÂ7ƒY–Õ¾L˜‡Š©»»ŸcŠD\ýÓ¾äãiÐà—‰)Jï~¡y-K3)Öüyƒ hÕP¾BÚ‹|\¡ßºÊ%oáƒy­åoªë:ñŸ¿0Ž›Ù_xú°«ú±7·:'2HÕùe¾IÁ>êM*±¦ð}¡CиȯþäfŒŠÏG1C/{1ùfæ×ÿ¯}2ƒVì5ý'wamu`gÞ&EËÏ„ñB$–¤›ëÇ7aðÀÈ:7³¾p‡ô.kÅ©ržo‰1VŽÆßŽšÜßÌùÂQÇÓF»nÆ·Ð`ÁœSyjÜßð:Þ8‡«ï•Á-£—#b\•{ç-ü¯£ÀùüNÕ4ÿ‰lÝLö‚؇éJÖ‚Ù}KliÇ'€m‡­C<…™é5à˜#<Ž_u…Ny= f ö.*Gúf¨‹°·fºH‚Õo¹e ½þ’ÀdÏzºŒqJý¡ŒÛnƹȑõctOøÈb¤}+ÌÁ=ÂÃq"P] 0ðªœ\¬:ä>õþܸ í‹Ü¶K‹¹hÅáýþܸ Èåo&3¢æ?q«è€›Q®n€‘;³¥œ^îŸ×-&d¾«SŠ—÷eJ×€/†âKòÎÍf{Ä ¹Ù÷’\G?La@$ý~Î^Æ»üp"ã˜÷ò.AýyîZýíÀ®–o«‚rý ÜE´"æAÄÆ™ó¼ö×ðèµr.û¡ó¼ŽAO ¿ü-‘÷UÞ#¥†e¯ýu0¿"vô®ðvÜDH NL/S¹2Þö ²E7ò2²/`gyÝk̇kë过(+_Fº&ÜUÜ ØCÔÊ@Z©M^‚õ½r—´p0YÐï·Ê %f€Ê‚@/M¥½LëÚÌy½lGø­lÏ_‰e¯–œìÈâ‚ý p½ pmßC˜ëV”G/SºÆP.G˜ý‰%™ÑE\õ › ˜N¬(„.?Å7.z8ˆ§6Ã]“"dR ÁW7î·º½#mÄH$mªOù ëz#Á—^ÑM²Ñ*©4—Á.Ü›bFW¨Ó wÍýã3u uk,khÐõ‘XñWÅõŠ+Îo-rlüdGAÉõV›j<„²êm)Ù¡;\P$›‰iÉ+¼-¿. å(L EMò¶^É µ¹½ÒÆkjÏÊH®‹tgùTnÇ«HÖ2l¡ \]ý2kky‹û–7TÊÜÿeh«“©º¹kv•%øËÐäTxûÓ¿Ø È+ž`@Hœ½«_ŠOö2¶5½ æyÐ`5ÿel‹ã¾ïh Jý}ÜBGŽ‹¾È¢y™Â5€Îx¨Þ9Ü/c]ŒôjÅă[“Baf¯æu@SÂç·Ë&¾ÑRòÌ\Ñ\¼JEîÖx˜‰'¬À^“Öiù Ŷ,FâïOØë•dP(—Ŀ޶X’n5Vzˆýö Au}õºÀž`þ›Éã•dP’Ñ×4LÄ«^¼ÿýmÅÍà2p#š—A/¬¿&T¶ü‰M*3·žqÌA¨~O‰C^Á6@aƒ®‚ͺx¤N±a@øsEV„zk3&¶Þ 3kür† ”½,‘$v•p| š@'^UHbøyè@@Õ%+06ôæÐ*ß®šüW’Ÿ½M{€ù—ºjÙÆ4§ÎøB};û³H+ILQVÌàk‰ï_%’ð¯Z#nž0h±&¿â 'VHŒä+ùYÕQ±½oÆ.v…õß+I?÷É{ï(3ãžýÙqepŒÍàFÂðTq±/cc·ž/ð+ËÒª†¤Y'™4i¿üþ”C¾›Dq~Fâ-•“p# ¾ßxØL@ü¸‘梽"‡ô 3ü ŸZêÅ.jÈÃÉê¿vã7&ØÄ¯ª!ý+MÈËëi£®WÕŒ'f(XpFHKÂZsÎ0¿úyø›ùVâ…ÍßëåïÓÖP~÷ÏÄ ztXÍêVæ¦ý0Í™÷\}/™øÜ¶t}# 9340°äZ™ -µ/ÉаË0¬‹·ðŒó%ùÕÇ$egGï¡>¥ÐQ Wz)uf©rÖ øÖñ£€„5ƒ¸È£²ˆLBþ\,)A.˜‹ôñ¤êáÏjÊÁ>é'’/z‚ÌêK ùÈßïŒÃ…]=cUKÆšpl)«¾ñ8ky¡ Éûwÿê›ä—teÜÊhñ¿+HöIå!­/ª;Î7•ˆàÈ´xT.C¥Ë«¤%„:pbYøSŠ%E=ÛIëó¯KÊáwEemþ1#ó‘™…OÐaT¯žîU^nâì^w·oßk%¡Ì¡Ÿ¢–F_TØ*¾é‚,Ž@¥Ä’?Fžþ/þÉd1ß5(¯çÄc´þ˜yú¿(8Á^‚!Lêß.äÈÿïšN´4ÁDä­o⫯È)|^|OàÀÜbAÎa3@tC¶•óç’Œ¸a]~©õcÛ_« n´~aÎÀvI,ÉpëƒËfï…ˆ¸µqw"ßÒ/Õ³y¸ä¹jÿÉØFÍ7ÒaFö ãùoïØÐ¨“™JÞùDhÍT'÷®ón¬Ê»PZËÜõ †Ù£“Kò$…$I¢œü½{ßæÖ2gwHT„ýˆ…NC®óv±¦à1ð¸û;¼žÅšô\Ê<ï½}~bRâKVYBÙúÐn,uÿ3GR7ˆ0ô—@NðMçÚƒ…¡x/ ·O¨…6[µ •©Fаïº÷5u™óÙmAp|´“ÂÛ ¨òúC‚Ær¨”™J®ˆ,Cœ6`B‹%%ƒ£®‰‘ bIò^øÈv"5ÇS]Ëo0Å ‘¥¦¶˜ßH\÷ê¨G¯î-…pLðuÛ'Ú–S;‚»K‰ú×a’¡¸69¶ÛbÊHÜðîmù°õ_=ÓÔnlo¡Î#F,éyI0ð`øý6Èð%õ ÷.tC4¢®ê?^þ¤ŒG¹MÚ€ú¤t·Gÿ)í1üF¨ðaO+|·Z$áFm+VœüDÑΡÚhë{Öbí¦38Ç›íö¶ ›yRÕÓ«1ÀË(K¾Ì­ó)-êÂü«ü½$£s„~šê;ä]ߌ kƒH1ÄSåXÍÚD¥7¼ÒªTý˜ Ïq’Pq¸¹êyÉèjz oÈ{÷›…x² ²Äƒu˜‹0\Å­©fþ›(ïPØû§©W³ê7Ó&Ò.ζßäE_U.Èô(IZÛßcok¤ v¯ß -Ê÷š^@:߉猥Ù~èkþjÕzñ÷S ¿J„Ä‹·±A'¾Qˆ–psîò‹Ts«‹IÆ ßñ|õ*è4<(Ð+Ó~н:ýÀ¥†”9Ej²¯)Ê  pX/ŒaÄšjI‰å›W,¸É¾oÜkÊ£ìÕÕ&çr—¨¿{!Âáwªø˜âhFB!Ìî‘lâþԤͅ#ÐÉ¢»á/'Ù„ÿû/h„ÍT'LJ¿—üÕÁõžØOíýòDÙ|ëEÏÙ'Úÿq¾y¼¾¦:˜Å%ŸX«)£9çÂçʈuÁu³^ü˼A¹èíèV§Apýãÿ2ÿ[¤aá€#¨XS¬fçÅ b1ÛŸpíEà‰9mˆ³˜| ü°}g'áŽô8”¢êEÞy:Fl@oMIë­W3~Ž-Ãx³‰5ÅW¦L#ßnái(Öü“ÓÓ#NLÎNzݘéx#j2¾Õ˜œ?¥ëÌÃÈD·¡.Z‰XóDêaÐë{Fo¾h1vù¤»¿åv¾¦<ÈdýØô®ÇP±¦Æ'(„5°¿Ä’¨q=æcŠ Ⱦ¨šÊ{WéÝ»7$û$_Tmμ¬`+ïˆLt”¿w%ÌÞö6ñâ¿a}ŸÁ±1v1rÛ……T ñrÁ1B IqÃB,*3wNj˜ ö¤¾ÜŸÛû/ˆnû3‰‹n¨!½ËQF/X9ä µ¨yNm"*ÔzÁì âqPì6–zÂjœq&È—õi¯fgH:/´ lÃã«*»ÂÖ‚JÞQm˜2å7`ƒ_VsUž/¡RåcèÚù/ƒL=——Оñhâ·þM(åñËUQ ÐåÞ2á—f½ l¼åpÔc$úÍï›?±âð1Œö}_Tn½×€oØÁÅãé^ÏŽýl,cF"½zCYœ‰W¾:g‹b´39káè¶…–Ç×”—þÑ-¾ w±¦Þy4çLÄ•ËÐÆôøé%œf€‚Ò’ËùêÏ?F„j¯<©Ÿo“Tò’ٚŊ2rÅ쪣n‚qçK2y’@îö‚ØxÕ3œ;ôp3 Ÿ51>î¸Ãëô-¢4ˆû’;¯²:1 :·h‚{î&Ø;  áÕ1‘;ôØaÿÌ^«¶ŠÌ£cˆó”ž«ú L£ ½VMḋ[™Yt^’`ë?}9XÄ;§/Ö¾È7üÖˆ[i…%m~/ž™"þ½¤h[(ç; òÓô%yàŽ´˜‰–IŒ\{Fóâe¹‹ ݉d4oƒ'_VB§*¾XFó EädÈÄÄK™±<4‚ì_¸Ò‹»Ÿv¤©âéM¿6âË»K¨ ȱCêá¿…8½¼¼¤µ§šÈ"Bõ焃rB‘TGFóˆG'Œe¸PÛEF󨥀z^AhêÍÃñœtÉL5{Í›Û+ŠÄ­:ŸŒæ!Æ c/žh3d0/ ½Áøö©ÒºjRá'sTªV!£yørpù†CþþÌ·ÀWÑ\Õ‘e$oE6Bt%ï[T‚oú”1°‰ÌÞ7ßWíS{—%Òš¾ßÉ‘¼óEìÿý¡§Ë($;¤¹2­+?%³ì°cD¹ÑRKò½Ÿ^]ùi1Ád¿÷Š‘á¼I`™±›«Ÿ’µP Äsü¨¼42–‡¸`üúæªø_£ÈW©N¿„|ßÇ‘‘<ÞïÂI%yâœÆÃßMþ½W¼ö#ƒxÐTpjp,ÕõÊ(žW‡ v5¼ƒ%ÉQ8vÞ$ D>pøÅ¬ndŽ2JÆä§qäªf¥‘Ø~‘m_±¹ŒÌ±x ¢-ÄBÝü±°T.rÄ’tó1qóu§¤KŽŒñÙGšJbÄ’|÷<Í£Zq~Œðù©í%8ÙU7Jµ´dÏ×ia,#V¤{IýÞáþ‰¤L,)ª¸µvÐ{»âô£”{XU-ŽbKýú¬•‰À'NVp|±»d°’â> ’ õárEÔÏäeèEE±"¬ŒsX¥øÓ’îòßl¨·x–óÞà<2TEâ!–dríE-ùå§Œ<}±‰U&ãsï-˜6fáhà’¢J<„Z’=`Ë0ƒuŽX’é•Ì¡Ç ¾bùÅ'ÌÓ7ðe¸NŠû’1>¶H„y¨Ù·hGFø¼ŒfØë-ÅÅÉW,É29/‘6zÁ×…'Õ`ZrvH €q±adpÏ@)}‡P4ȱ ³ši 7)lb?^åæc9é;,ÚÞoa asiÉ‹_N,çS%åÈrX‹ð¨…ƒqSl“‘>R¦ï”uà²$–ds!EX "±$³6Â5~5)yêçgÚFc÷¾#ÒfÔ Vèy¾%‘dSXû’ÌÏñ‹ 7 †Hn¶‘á=ßÓÙÂxý÷ƒä‘ѽ^"ÁŽ|qÁ2¶ç– ìm ÒÕy”ÙyÞè4ô 朘„ õ!2}9w+ŠüÈ8BóŠŒy¸Ú÷ Ê7;{T•ÍŠ›_@¾‰EÎ@T:ŽêÙGùüþÑ!à–廌ZS2j& W‡ÁÿÔœ1> B.éAo©DI_’èYεöé²H<‰°C’ ÛÁ^UÜÊSxÖ›p6 þ¶Hê‚™äM0_Ø‹ˆû’>ï>¼pèq¡^ˆ%‰—;É[š†:ø¨Ãå7Àç+0“½JQ1Š¥/âFƒÔŸ|‰‹P–ã;/üOeKQ„²ÔyQ‰ðª‰ –>o !2D“C ‘¾Ý`Œú¶Ä–, ·‘¾E@lA/FÕy”ñ=¼lª9FßK2º‹‘+BŒë§ž:2¾|ôîx§Ha£à{ᎎ¡Ó¤Tø^Rð= $~דª‘ñ=ÿžÞa=…‡±xb2¾·!&àósŸ>Ž3¾·é¿˜RŸÐI‹%ß3 %UÛ&#–-]{ˆŒIt^êËøYcä=ùДeT|Pâ/˜ ‰&ã{È6—…ê Ëø} &È•yßü¸‡mü÷’bB—Ç`Gïß‹( Ž3! Ý‹’=Lö&*$±$‹©îbŸÄþ|=Õêepo)Î( ÏR…¥dpïz‘¸Â¬A¸xÂ2¸wi20Ä=CY,ÙÈèÙ y' µ½fxoþïƒtºïO™ß{T”ÜÂÕ›Ø÷f‰`ˆ8ª+ÿ0WÍ’ÀÐaiá°Ò°ïGíùI­3ôýÀÌ ðíÉÏ'àÿOµ¤X¢ ìG+ð„ˆà,ß/tíbÿßDи/±²#‘¥Ìœn _Rý(÷ü(WP9[‰bWÿ˜+“\¼Ò o#ýî3C¼,³ˆèéxYm€Ä’"¡§ eÓëG¤£‘q•–,Tß4¾·°Ù˦ƒmÌ lŠyîÌøÞ‹Á¿ôpÔ÷Ê·vx[Ä«€f¦BlzáÚ7 ì‚Ùs±gí³‰Ò쯬À 'ޱ{Ï îA³ãñAv«~GÆöÖ ]Èѯ–hñçop8A…s ø¹ÈÇ$˜/b/¹È‡ºž+Jj7 ¾5Ž»'‘Yµ³y~0ù½2¤J2ì#DÙ2Geñ`ŠÛ±(h¡f«þð¤´Y£¨¨E^“W5ƒy‡ü دßkñ=JT.eÄ#"H‘ eƒÊvê³§ö¼¤Z™$\ªS¡öPŠ“ÔJìðläù ÏS—5è3r\QÑÜ.¦9‹Âί1Ãô+%*³Yä³ô–¤K2VOÄ*œoMs öD±ådüní‰üÞ˜h—æoünürýDZm’E7Ax÷zH}³Ýáü—E…£ÕÙž%@sâü,|=7¤4é¦è:³öH-º´s;Q¥Î åyyÀ8™¼å!l-q¦Í¸ŠØGäŠXR <ª' ë§Ê˜¶Y¨záyŒÙÁx*9à²ôç†Gºwš^Ú eÔ,\=ìÑV_°VDžFŽùJC£bÞCêªU®Þ…Q´öiï>u4–äÒ°m,òÿ[žûÏw¿0õüñð2lȘÕkY <ïHÄnúŒ+³@xb‘^íˆáŸS <$ÿø˜S¡5õþžžLÄÀ!}}B3axâ*eV^©—Ÿh‡˜5êÁ੺©ñù<…N@Þ B³V?¸„ûkŽŒÉÏ9îæKÊ=?ĉƈ» þò,¶v6/¯“Œ6x3‹«"ôÁïŠì)¿6ùž/èò—LZý8þï.õ©Žpéþ—ý»æ˜vžy#º{ñ(ö‡bt®¿ƒ<•ÇäHÀ5ÚÔ«ë¢_ÁtE,ª™‰“‘x·9µ}Õ¬S’©Â²›g\ço‘-küÚùùñìÍ“:Ë!yÁœ~ðš&jPÅìž–èù~S;àžJ-=Köiƒ¢y9ÊÉLQÛd ˆÀŽºÆ´WöÚEy‹xÆ8¾…Ÿ¸ÔÕlâíÑ¡,«§çÖÓD»u±Ã›ªb¿åô¿»érZÁ¤ž7 ´]vr~}Ê jÞü°Ý¢¶_í]½EÅ"/$¡Leñ‚âð+y »qh AàT³„¤ÆÆE C"¥Ÿ%>‚À5ÜÒ’GU6!n÷Âõü„T,°ªY|ò Ü_$ndŨ’¦÷øE¼¬1Óöú@}»"Æ…YæmÉ$ìY¢UŒ;~l”F‘ðÆÐ'=¶a(p«Ž WB›/m -HTÒ¦»‚—U;ãáV3wïbÍÊ8Y$x0$`ü¾IT|e —^ß}½Z%îûž®ŒóAÆí½t ÝbI{¤ô­4Ô¹¢÷ZÅ-o‡{b¬DX«¨rC}´AIÔŠ%E±‰0rßþã¯~LQlâpJ…L$( WÕänÃ{zE²¸ÐE“;Èà(†g+0ÅUT¹Äv’À1EÛÛêu3 eˆ¡]gÌ-ÖÔa¡$³$põí² ò‚— ˆùPò‰%™Ûã§¿oôXsÀåKÊœ"üѦ\áL‘—ž6xM×hîªú” pX“çá…»H‚ø÷§4©[t&ßK2ðwÐÁp^ £.rFþØý÷PçC-–dÈ÷à–€Ó ªbqÅŠqÁ ß«X¼8…Ö‡U.†!lÒâüXýóƒƒ8ÝÁ3a-¶rjHæ»dI½&ÊÐõWlœt·ÁIU›„uŠ$óøðó¿û$à/q… /²ÞŽ·§ÊÇUx|ŒB(ûÙù….xeèoÃÝÅWób7'ÞÂÊã ¸`‘îxÅѺ2ò‡}¾ÿg#1̬YT8`]oW:=¨X’þî»$‰ßäššÑÊ@ b‡Mà‡ÀrVÆýåóý„|løê§—DŽ”KàÚÁ\δÄàÇGÐ pbIqHå·cáqDÖ ýN^1I#ø5ùPf_÷Ž“¬‡Žë«:… Ï7Ò‹3Wä ©Ÿ’ï}ZxUJ‚ÚOV¹÷p90ãq·%cØcãqá•ÂPl¹µ s?òߨ[f ÈÊØß‘Ã»âÐï%û»ÁÎà‹Eˆ«XR@ÿ祈?È–ieäêÈ›&¬>Žâ£®Œü˜9”<䢊íʸßé1<!îÛÊ<>ߊh-.þgêÈ*é®°W鳉ìQŸ‘ïý¡ù`õ>NmH»pyˆªå®x#,ZæµË½Ç§ÞweÆæbF²2¸ >¿î/ Ä’¢ØApŒi÷3e¹¹2‡ï†¡ç hYù®Sƺpë@¢V_,Í÷:`q^ÐMÄË*]bÈ~ÅÆ•ÁÀÒ8¨oǘX’ï=ƒÌÙüÐ;êÞg,e#XßûiÄ’|ïýâPÐàL©b-#l`ðH¸jÊ]veŸïùàXQìtŽU’añÖ›lø rÄo)  ºV5ŒX…Å–œ\i±¤”÷›úÎw°§ˆ+Ãþ¤iŽA4…j¥-Íô±xýÇ®_p –¥™~Ã¥ÿÝHŠW»KæðùŸ ÍhªMõ«ùc `â)@¼•q¿…ãÃ~™ÿ!ndáðyk‘Q *D …o_¯­€[¯Œù-6È ×(uFfßB™I,3lQµå—˜X_âÏ>×GÝÆLà;QLbÒÀ.®~|yí½qÂÙn kWKJŠF¯³¹!O‰*Ð}a®}¨v¢„a<~Éö^IÜú†á½ÿ ÆÓ£c ¢˜ö#v;EÆø˜-ð¿ó­Ë"|V  úKo õ_Þì™tý?"\zm¹Š"A`œ«RøNéÞpOUëf ߌ]øa)lÊfchžu0~…ûñý[v+Å ÅHÝ"V8>=-…Š=×Vöy»þæcÒá-ÕDs-–ä›ÏèŠà°©˜¨» {t¬~c@t¦x]v¡ðýH”]Q$vFö€L"N†Pží ì!4~˜‘Óéˆ:l— ß`Õì^P!ïÛE¤Kæáã`•ú®]4º(Z;\6éd´{9ï¡`8Þ§;z?…È„ÿTÞÀÎh9•†à2¨â ë¹ØóÞÒßJÂDïQ.(7 šŒVÔG»0øðÎd 4†»ì’И†Þ§XRnÎ :L1Ø%ÖŸ•.¶;L¿—dÚ6›Þk@Ÿ×ƶ3”¯Ð~lb°ÁKr©÷ˆ>¬HWÊy|þzáÞ{DƪýhTi~Ç.…MIQö÷¨…¾—“þ:ø9.Ò™mghÏFóÎàasªæÏ»$ÒÞ‰=î=}8lVŸÿën1^&ŠQòž•ÚãO1NéD,µ[ZÄ«C Žþ¤2ÖóçùÔUòñ]ìø ;SÄMÜlE9º«–ćH¥(u}Ç'f'&g¢ÝÙŇP…>ç3“½ÊÐî AdfŠ%Y³ÕBO4¦„§»`|ñØx3¥hõwÁøšŸ¬7Êe"N›ÜÃÜ‹<¤‘€%àݽ ¼ëõ1ä xáL²W‘i/Òi3ʦÎäUª¾Mœ'þˆ§ · !¾Â+"p¨1ÅËß ñè€å°å+J]ìëèEI¨R›F†øx‰ÑlhbÁÊ{Ù%ØÞ3€X’>*>ßDsR»"|è ™2YÙ%Èv3”FlÝéßÄ’úÞ“ôŒbñ5Õî‚ð‘åùâ”1EÞÚ5ȶEÌ"á⊱kmŒMöAŒ ¶½¢Ò𫵌z$3Àç·ƒ¬ŠIކ@væûYÈ@áu>SÑF;ÓýB„À¼·;ÕU•îÂë÷]’-”l•.èîÅêo BKþÑêa›p."±é•Í0rXijª·+#|?†·ÇäEd¿¾Ž1æ€;äE¿ŠÙ%?¢!ÏžKv”E¥ËÑÈE¾C¶­Þc‚ÞšÈÅÙÞcß!£ì{Õ\}zß&É60.ùÍ úÕ¢c—…²UR׎¼<ü»!v ¸…%Â{a< <@vá÷Q¿¾'ú»8ñm|1ÐÔV>Œ» |~® ý€§T2»*u X#-ø{É*3mäÒ`j¥®÷­—KNÔânfœ]Ê œûžìí ôaN¹ÆŸè¦Ôð;}äý%<&d6;}?> dÕL,/¿—d ·¯ã'ÏKS…UúàÆøÍǬé“X’g;x’ô’c…tíâÄ7ìœ`o,1mÞ/k·M\å¬@wÆùø%“)Z~U»fœïù#‰ÉåÃUR5p/5ü Vxð.u_B÷ahÝñaÏWùÀûé‘ÎX⟠òÍë¾×ytJ ±;ä£Ç?ÂKõû‹ òáÁÆ‘§ žûSs5Ð@'Ì­ÕËíÞÆ2O›ïóø”X R.ú 'iS“­“a>/¬Âþfó  âd˜oÄxT^™ú”\òÙOŽxš"€œ óu”Ó §!ý pìd˜ÏKéFj¼%U[Œóù×9£¼GŒOú8¿qÄ^Оä+Þºfˆ¥â!Ë@#‹!eDt}ïá'Óö^Œ¨Â…ý{³8™¶GW4½ïøj‹rì/>¯ÅHaÅ扢ïd¬"ô’W´Ñ_¨ßRDú,•·Ñyˆ­ò3¾‰Å)Þ?m(ÖÄ)´=ÒD:Æ<ϔ㩴=ïÀIóˆÇYü–ŒõqÛƒ8]ÅÝÏXßÂs\ö²¥(Cg…dj?XˆEP[LÑ쬂8ñÁ­ÕËïþ"ipA®ëJy}JÞ-g×$ÝËéd¬ã öpÒM°YNÁúü€‚œkS©&ÎL%TÞWÞ,tcg&µö€ù 9#Vd×uâʘT,4hjII̼l’ÜN.‚xögÂøc¶å׌q‚ :Ÿ™0þÀø0ßÓãS8|l»1™xѶŸŒðy“ßá8‡VÐ¥NFøðz#å‰QJ_¢¥>«”ûý×GÔ£êH.^92þà)êsJôŽï—qÿ‹èr±¦p:hFüÙ‡¥²ÔNóÒw ”Ld{2· ³Àc°Õ%(–|½Ñ‚5öœbÉI?]†‚ÙpVï¾€à½_Š}2ÐwO˜ÅDTùBŸß@_GGI†UÃâ^½çÃFÙÀMø‰†ïdœïáE‰B2—èøÏoœ×l³ïMÈîGý’\ñoßaý›õc+Š%›E¥Èй«Slç  ÷lû‡l±"óy€?üÑ: ŹSÅ?Ã㲫(›óåó¾§Ÿ1[ôm§zñ¿.L7`³Š5Å‹Ïxy±ÕS)0'ƒ|1>:Kúßœ"ë¥aóÖ_ÆfJ#2o È9ä¾*µíÉ,¾…$Œé),KõCJ†ƒûî4ê×Èó·˜ë_o\•_Ò)šÞÛ"(6bs”ã)š^ïBÞàÄaNÕ5ÒeʃËâ÷Š"ÜhÁIÈ„«5E·;)’Ç_SõË+ž‹ŠÖ·ŒîÔßK2¹Ã›ÃÅg|UòdBÿ ÇGðõ)ùî3Ð¥H«1ñX¾t죪ÀöïP(±"Öõ-Ãú/w2£$‘$„"[µ¢ìƒÜáÝlw±Ä2Ø×(ÜhßW٠؇«@ä b©–TϦ }tB¿Ÿke¶Kõv™ì#¥KòíçO&I‡Ü{±$ïýsúîG3ÊzåÉhE­;/n×/ˆï&1V亜­‡âê¨Qše°Qß–0IecE«;ˆ ÉC¸_|¯)RÝ Tlu±¨ŸStñ0%ÇuÁ¿?§—é¾o±~Ðø^v•Ë õò àñâFœp6³Œ÷urüƒ´y\,É-ß„!qFdó‰AŸõ‚ø ‚i&À„Z’ œ³p>Kêà5ù!>ê.1²žÕú-|r¡º¶cÊÑ~!~Á¢‚ÐÓtß5D-o¿v#s|ÁOŽGM,Öä¾ÙÆ`Öª¹»8¯H­ 5µZS}ÞÏl Ó?u{ŠWß>]¼Wµ]ØVw½Ô ÚJ¨rŽ´¸ÛÐ3¬3Èøºªl´jÖTJœ6jµ!(‹V"w7Τ~sFHÖÅšµ ` n õg‰ Íf~:òQ¨ðUk$µT¿ÆCŠzîÉ©¯¢ßøõkwßKTÃVˆ~ W¿wAÿ§Z ÝÝ㜘@À­à€Ó?ÕÇ1%>°‚v*´â—€ñdW®ß ½‹[q ˆ‘#,–GÀŠËÚÊÏÁˆrÝ·M>í ŒJlOç#6À÷DqG‹¥ßÅdçBFì|šXSèžƼp#YL¬)ìØ÷ª’”¥Ž¸Á;ˆ¤"ÄÀTŒŽ¬ðâÒ¸1=aß­xú…ÃÕ$^‹±µª v9.L1ˆP ÄÅÞu?`pæÏô|&KƒêêÇÀcYßéb>ZuõëŸ~Ʊ™¨ÂuïºÆßµØëÃ0N,*.®HüxˆV«%ÙÅTX±bw)„]êš° "zðl™È ê+€õT-…l7„0øÃäJ@©VLþH­®ü™ˆ‰S!£ƒüûão)¢UOdtúŽÝJ£üLþ‡÷Ž'cD!­±ÅkÌ·Ø¥º,õOnïqܰ“QaÑëb¦ªªöÓÑp£ŸÉ«ÆÚ–An<){¸è«¹“e\oqÂÉýYÙ]pÞ­(|¹‡~âttê§…o''bÒ7 µ=gXÈ”GÝÑ([Å%¶rç÷8Ý$è6êýʰ`´¸~ä)£‚Ù¬(| ñZ1ôR\ý–<Œ³ü“ ÍV,)Àya3ÞR‹ÙJo˜¬y³Ö© Å}ɨ ¥?ú±»*ìÑJN*1cxŠy»eT0º›Á^‰) x’KNÇí0S¼äÚWnÈ·hýž†9[FÑbí1pÉ ¨eT9²_c†Ôûª'9ÂMô„žÐ0¾K²ÐóE8QË8ÕC™o'÷süÌ›U;”QÁÍô„@ò*¯˨àò£ÛK`Ü8ýQLF±»Ã%oüä;ˆ%ùîÃ~‚§@…®*Ÿ,óe ó³N-)†çVd¾‰ÔŠö[„¬ñ®ˆ÷Qå {‹Ìs\ø6ÐóÄ“|3(¸ëqômeÒq3(¸F)ùSô·ê|ÌHÉh°Å’¬õÜ‘q@ÀEŸà»%ŠèÂ;º»Ñ}ˆYàOÄ‘#‹UõS²äƒÈOÄÇ€H‚2x3$¸H¤¤LåÝÂmfþMï¯¥ØÆnF7ã–Oó8‚6q3 è=̳˜»lÇÄ’*ô=ÑÍ!àÏþ-Y^¼ÁÇŸàµâ »%«ÚcØýMt…bI¦}“jr X@ ±$óÿˆ8»¾!uEâ-¶}€zt‹´gq+«méî þºªÆnqí£}¶†74´¹ï%%®£ó$“eØMEìÝQÈŸ«¡©Ùq'Å5ÎP B}˜‰”²9½%‹wÒãMœ©Û|ü›¿ƒcø$g/*+±$+ýPÇÁ׎ò—¾EáûfäîP!oQ#ߌúM˜\Äû&Z„[¾hC0÷ 0WüüÌýÃÔ¯™]@zq+3õï!p$h ÜO=0Eá‹A hŒÅŠ|æ‡Q-Bm ¢ÅÍpßâ¦c†ò°)R_+ßûÓ"j‰xì-Ï[x^ƒâE±°¦—+C}pq'Fµ„ù©©¤w\½ÂEßÀÿÍÄ¿å¯ÂÄß–!¸*,2ηQüòÏå„KŠ•b{¿®®+2Æ·Ãsc{=¶þKò®wˆE0AW,ù»K£FŠù¿zЉc²xŸÊ&ò‰ï‚†`{ ÑçßJþ»¸wù¢‘#ð½¦ÿªöE†ÍTÛ~Á÷ü&ú»“ÓÔ8ÿf€Ïo Šð¾A‚ýtK¨ÄJŠ dÔS½•§@¼¸ªÂýzl|j‡ùò}ûîÞÂøë<¼^²¡%Q/U‘õzá•5öm*öãU/e ‰­ló¢¿ÕcúF#AnåU÷Ϊº‹à!ÿ$JiqQ3ªG.8+Z5•”r‹¬—Œ§ IrKëŸ[P=\¥²©S­mAõÈ0‚tÇ=ªUɨžo‹ `älâd!–d\7Ð ÄÍ‚}3ª““–Óz˜E‰%Ó„Âz‰Ãƒ#~~Fõ°CyX©z Ö?àfTï5àþgŠ(¾Xáúqò\Zâî×N¼ìEÓ;›êEŸ>Õ‘Q=Ü]p+§ª$3ªwýO W!æUÿüŒë°¥\ Ã>×åÞ‚ëXd0ö2å’Âõ]Þn~;sk±¦ä÷¬CŽÙ¡ŠÏ)t?ä΃ï3šJ·¿…î7Iô×Ô®P—Ó1`ÒƒR£íUïY‰éo kóΠ+Zå-1go‚ŽÙÅ(ä–8µÞPDÖTû™Ñ½NRäô†‰ÎHõŸ݋ȀVϯ‚*¨3º‡óß;¦`b×,èÞeƒi^måÞkÛEuî>ûýÄËèž¿ßAÅa#|b;­Hü yóRŒ€× À³0']êªüÈWò9¨±ý ]ê¢É%‡7„tdéLS…ûki¤7É ÆÆÍ¯œü)ÙÊmù[ÔŽ®Ôz¯xøùËLðžßPDkbIæz7òÊùå}*rÇËàÞÀ0%ê<¿õbkzEÜÛæzá‘#î}÷üÁÖâªAÐËà^Ÿþ€y»ŠÛÄ•ë«A¼m¢…Dµræõ‚ë?è04{K•”/ƒ{AñóGˆQ€_¶ñ þi{xD*¢ûËО¿ñþÌs½6îÀbIÆwPOyÙ3ÃÜ\<Å#«»»g¢TÀçËÐ"hJŒÛñghmx’7‘Ü¿’Å‹Š}ß0ñ+2ÑNœo|ÐÈ”qëËÐÞþªÀAÝ£)·î7*¯«û^Wg…ºÆV°žÂÜ4ùóó,÷eŒY ^‰l$…Îj^“ã€ÒñáÍ|ë7f5 Ýx\Å—‘=LýL‰ÜjùÖgdo,¬9q=#q@}Jnñ¼K¸LØßyJàõ2² ãa…ïG„(Æ_öH:‹qî”Nå/{Ï«ŽÊ¦ˆ"/{Þ=ãÒÏ_jº_öbq0Cµ„üËÀÞŠ@Ô^¼ò×ËÀú#O]Ùð½UTT /¢¿”þ[IÔíO0ãœ2UÊÌ˸$u/ ü.\­–dHû7õ½2¸ã5‹?Z£…Kx^Š¢÷bgà—ëÂÊeQô¢ýE'‚ó•è+^FöÞ ÜÐO!¼%Õo)ô­ –àþËyñ½$C{X½Mâê½áUyË/C{–Ò>4Œb’ûv‘v.Ò)˜3Ùíî+鸴£è'XLpä^FöŒô!™Fª§>%—úÖP-N>ÈàbÍ_ÐÎËPƒ>~/a°Êáîí2¼ë… ×UeD†òè‡ïø³È÷¸õyááNML¾—äîÞ­NõÊ‘!øïÖ¾¾}+è÷•<B¼ÝØèãe(åþ<ÃÂ[AÌV^Fò {M‘¾žèë^Mä ­¦ëëjtû2°×q6Ûõ'¤XR‚÷Év¼O×T—R„¼¾SùË5š¸Ê¿ =ñäf$¯EüßÏ« "î„e‚nÃóŸ"­¬V¿ æ€Èv2åÅŠUöZY2Ôõ›š±¼¬LΜ§ô /Cy¤1„ðÔÞfÿˆ6`¾F^mØ|/*¢ ïûðDðŽ©IØËpn÷'r2B|ð½$ÃyPmnC„¹°æKòȖãÙÓdÅUòwq]¸!Fåœb†ó:x™Å˜ + Î+ñ»L$±Ü#(D™½Œçñt1f©¬ËN3z-¦ ĉNï¶ ù2¢7±Æ~FUÃÑóÃÈY"ˆ°‹%ù`Ÿ'„fC9[^Æó†¶“¶8Tó”á¼,¹ C©ýß+Ûðeæ«!’K²z׿™W©Ñ,¥lxE½Û|?í‹®Á åy/‡ƒ’¶+»à‚äy‚? š¼"Þ»@  «qåjù^Ù¼ ö4Mr¼We ¯üDÂÒx}WE·4ï5€<š›šºÈm½Wg·8Ⱦo'p.Fpçç¨Ä½éó×ø’ÂÓœ«—Î`—Ѿ$Wx&pÇÎÙŸMµ$SvØ5à+MغêŠå”U?Ði PïŸo( S™-¬öq®KªK'ŽéÓ®û=ÿ»­¥¾ç¨@ƒ¾ï¾ÓРɧCWî̾¢çÏ€Ç&Kã!VÝæ¦MoÀ`ý~ò„Ae(¿ÌÀ»Lóy0ÝÖ‹n³‘Ö~|{òvâd†j”3h1ŠÈWRÏX/}ß“¼RôÚi¬ï—MIºûÞêãú¶¹tß<:(¥FögêQ˜ÕŠ%ytÏ;wq[Ø’Éš—L%˜zýmê ¦¿¯²7õøÎQíûí¢m*w„t^½ã¤ž™ÌÖ{þ¥úø)þ컫à.§} Ãî‰}ßL<1#is°Á8Xò§Å5 ÈG‚ß6‚g•,„ía®J2çýÐiôè¶"ÙµÀsÉòmÊOé¶Ì×ëŒWcË€L)~þ,Å߆±Õüv^¡Ï‹P€ßO2¬n/¼’í"‚Cù‚¹ì3qojßùž·ÍèN|êÈŠ$6C}¯ìÚ„…Œc¿j¯¬^}h¸6ƒ)õŠ\;”×/IåO/"Ý57ü`¯¬ÈZkŠJw‡þàa C -Ën¹ƒMÓٿ©^—ˆu¼N{÷ž}!é¡fÏŸƒg< ÃÅßU¼ûE¥;1$F¼-¬!ÄH×Í ” ìß·§axy ¼ 8ÊÏ=j_ÎØÞŒGÆCcA€oÆ/¯Ù!ˆU}µ’ÎÁÛ˜ñd~„˜~—%¾cLàŸ+,•|Ï*¡ë[8¢ÿŽÈ°ƒè–[_?À1êŠü†ØØÓ~I>}‹xAà^±¤Ð6¡Ï/ªÙ¦öþbÚgÁ‰ž}€)‹5ù!wfzåå¬Ü1J@‡_áI Ì‹<õÝJýˆñH¥ŠXp±¦@?þŽ¡‘Ú©%yœ`6ðnÂöÄã\â90¡"–cPq}Q/÷srÄNâJgøÏ°"H€ßŒ1_RhÛý† ñÍß³P€¾ü³i}®pá»-ƒ90èŸï·"ÉЗäãŸQ:Moì{|z[†þVŽìã `šŠ%ùð;߀%.¨„¸ÿúó2§_VÆÛ~ñ‹@ö9g_PfÄ’,Ð+ü¡ºÃßKò°‡è†wÆ÷’|÷ÒÑ…[oSEIFþÈ <ȧýñTGYáð¡» tlCþQPÑ+-ÀÀ{‹RvŒýÍ1Ec—~|zù¥Û„€õ¼c@ÈjdŸµ«¯V|zƒOTæ½8÷aú„ËÄ›[ß^Dº~¥ˆÎÅóK€½htÉóŽÃP`R½à~þ¶„£.fH¢‘ô˜Óôû‘é÷›xˆ7蕨ԧ”¹>kƒaëÆy®ÿ@–¸‹ö·X’9œø8ø=é/©.rÙü©mƒK¦žßKŠH—>#á>ŒÅ’<øA7JÈÑžåûQî%¤Ã7 ó*Öb¿¥¤ñ’q?} Ì\,É“^¿ó˜/sÔ JOÔ©’EÄs¶•2Ÿ„|ÀÀa$î‚WY}JýaTç¥ <ÑbÑÿÞÿÏ!ìí½ÀüØéá+qÃ/LüÙQN{#b¦à‘'ßöá)³R~ÿbÓç[“—‡=ñŽð›Ã4_ˆµ7 é[$èEžë…ø]‹ÔÇg¢xéãöf8ÁÆçDϾ뭘Ò#eJœx½ ~'¬Ø÷#¹]¬Éé!˜õlLüÄ’,ÞèwˆþiS<=~‘rÍæåèþŽ×CÈ—70T 0ßÚUèMÏñÉ2¹ Ž3…žñ>RoxVpãmU/Ö|(>ü=ç˜òÁ,Ö|áæGÐ/cxu‘3ê·¤=°Ä¨¯–ÅôàÙ›VYlù%‚·sz©‹-‘èx{üpîØlŒ¶ä7«Lm: C賑î—Âê &Žî›Qà+ŠHsŽà²;êx^šË#XÑ#ö‚ö¡wñ¦ï0й¢Gî¿MùÄ¿8eëâ!/çª~³n/ðwÚG`±Oû^S<øFP;èO€¯½÷ ò„Çò½êS~{ü°}`×ñ³±Š5Å€‘Î%[‰ø4q3ªŸßnÐǼ©žÅ_߬7#lÞF“k*Äëï/>ÐìŪÎ)黸l€0±ýº |˜·àÏn˜‰åœç¥2\˜&sõ17]Ž^Ö¿äƒ÷þ æûùÿ?L¨ÌÕš¢Ïíá±»èªüÅß­ða‹¥Øú¡XŠ5è‡rà~´'Õ~ʘÏ3¢ðIó‘ž¡>fèÁ¡éìáê×äcß Y—cÉôV_Râ7BÁjÔÇbI&u q½E$úüž¾H«çö2|©óødê>iwÛË·ww±Üµ€¥¬FÖ«©É8:†làª/&|tQ ¯„£Œão·"ÖÚ%òH1í%†ovbuÉ0o·]®—×ߦ’°öÙ~‘§ë¡@™ŠvÑ3ćFybóz·BE{øàzßøuT]qø.œ}ózÓ‹öâÀç«oJÔ!C¤‹ñ§%Ì›/•ä qSJþ.ÅA»×ÐsÏðÞ¤WC?FXØ7©Ü—”j;å ½«Ö»Är4ÎãöQJ åð/s ¤äýævò*ý~V°©¤dN©:â›Ä:I#»òÒXÞÄüÂûón¸E0/V Þ VCÇöƒÀ±$Ë3)EØ»¹ïjS-Á»ÞI6xþ "ê\òFààrëØCÓgH»‡JÞe—Λjx䣨iWµö¯ìöÛ‹s(GxÚ3®ço<ÉãARYêä*y-øLÏkÌ&,» 3ÎÝÄáíÌIQŽŽ‚êÅ4á:߯ãhe¬ƒ¬ f7Q~’½»¡]6Û.,Þ‚W‘¾W¨çfX¯ŠŠb´•÷îIöàzPáÔÏ÷þ¡³ó#I»üñù­1iö÷r?ÕŽêHuÇ©ÓDB³ˆü¶ø<ü)8‹%%rÛ;å{[^.éE©Å´c[/¾‰É¨Ëò§ø‘Í—âQ??ƒz7ì50Ã\l˜bI–jÅù¬á"†#ƒz˜lÊóvLÐmFIÞ%)òlÎo¯^Ô§¯¥üa­øL#ƒz~Þ=ÄŽ!`ô2χD|ÛèªhÅyïøO òiD¤Ú÷’ ð1ǃùÏðð‰ÆmdxTë6#ÇÔîRŒ÷V¸“^ßÉ—HžŒùs))šï㤒 ç½; •®tbš¼ÀöÄ’b¿5 õ2Eq# ´ç…ÑHc+Jî¦?/~no2qŦ?2°çß  b5¥—Ç+/ŠhÌÏy*Ä5ÎÀÞ…,ŠÇ7-íŽ ì],‚`ÔPèŠ% ØëäÛb›U‹;2®ç«oæ»×Ùé£iÅì&‚ó~GAõPg’Z³C0/æE£ùè½9»°ÿ_ò—&Ÿé⊭µ‰(Í; ™)æ MÆ€Ð'ÖücÈAH+‹&zƒ±ÊíGðb/ìÅ’rW¯ï®þ½"öù{I‰`óÃè2«±$ú±L#?¾ËÃu"p‚"H,)£<Ü|é¤` ŠfÕ9þff´Ân[]±¢Ïÿeñ«Oɸ.?ÔŽQžÀBG1ß›Ç'AßæÃ6wSÎXÒó ¢éL•âc¼ÒìωŸWãMxGQîn/ú6™«­ 8F•yãCUÏ6I„´X‘…{‹,.Ž’”ßñj¯o=¸Û3,ʾ—äCŸT¾éÇÞ‚1¢ªž_0ß÷dzfTf'sæabEMØö»f@š&2[į̂7`â‘¿UÔ3£zì¤ä‰ê æÕ,]oR¨—©zfLÏp‚‹½õ÷³1KšFo8&b ÊYä¹G×ë-ŒÄÖ6 MÑÅ:”ŒDõ)…±C'Ä|Ý$2=3¢çå eè–DrŠ%EœÝ±WFF(–”­v¶+|›¾wŸ™½í-‹ì¦&ŒµÑ–¦—|ÑâeÌE<‘Ñ›L¹½ÚÄæhŠ­dfDÏßT„FFµ¦Ä¦³ z#¬C:,t¿yg/wÿ†tzR‰^xfHoEÅEŽu ÓßKJ˜ÂÉfa žÊQëz,m½yÜ`®âVÂÜY Â/îÕBÕ0K®îŽ©Ô ­ÆDJäÄ\wÂ@ÿ1B 5¡zὑ!^.Š1Óü…ëýä݇x©æû˜|Ï~!{bÎ@^˜ð-Øõ©ˆÜ³„è>t?+Čޚˆ ›‘¼ASXåì+:Æ9³ ߯+&±þDþ<i…oóhÒàÿ ìc΢ǀ¨€xŸÜYñãgØ^Þï¯VSMé,PÞô·0àRò·”,uηIníPÙh<Óšúñç#6Nåý¬àͨxá» c¯û3á, ~?«Pö ÒqdüŠ¿/òÊà‡ RG¿¦ž³•ѽ ¶~#n°o±g¬Œïí Ô€Žlú^±¤Dê · Çä¸bIÖaóšÍÎ`J½¹Zákú“ìì#¿B”t«q÷ õ2B eö²2ÂG8Žo'®ÙJ¶•!¾PöÜÁ‘¾m ˜gÚ‰nšË?q m™X#ñÉ#KòŸx]òQ°n㥕A¾•óþ¿0 KŠD€½Sp{/–×e‚•'žä"óÀW”ñ=½µ?ÑÔ'"c÷®ž:xÝx0.¹¡'ç»ég2æPlþR«EÕˆùXã­–›GlM« }#Ê-ªßÎCre¤o\Û¨uÇÍÃ*éžq{ˆfêä5jóÏyŽú—#W\ë¯Ƙ¸+[LýšÔ ‰<7ÈÜÔÉ„}¿!xà'X‚+§k2{ð»[½™Å‡œ¬òéÌE¥±Jnnh’;4L›¢ ]³Nwü®3{hM©lW†ýf\.4±~B‹¢aÍrï7l â–Â^W†ýÐ`Y†I¤:þ2èçÒñÎÞúSôó•1¿w“õ‚PA­ù‘ ’.‹”–ï%yÿg?Žì̳×Ï%ôÃoÞO /³ðzfµáû‘×?"àňc¾M‰ù,iáüYÅ…Ob¬ûÙ¹B{² {DÎÚwš2HY%77 ÷‰’æœU?¦wÄß*úQ íʸŸŸ¯~ˆ{Ï]4+ã~ ݂샮M­È\A'§@ú{IþvX6û¶‡ýª¯¯] _Œnc7åÛ¶2w4yBÚŃS±=WÍ×`JH¨3by±ñeòÞ™‡rÜOM\EÕ’<Ü¥e­Ÿwõóÿ™ïÛOÔ¢Å\»¾ûä|z?”©–ÔîÒ,>å\²v÷B C’ÚÇO™ëÃs6o §$ ¬Œ’pêL¿‘l¡>%CþL÷HK™~bª-¶€†ŠW9òÖÅVVÀ‰ˆ¢ûs‰\ììQ¿yíK•)?%×~¾{ó5S#Uà¿éÌÛÙ„óÄ’LàG ¨¶xÎJ¢Èƒ«x–ú^¹œÊ#²c¨õßKJá¸`Œƒ¼&q• H¿À0Ÿ•£Š€>lüá¡1õ¤æÑö‰­SP±¤ ~9m1%GM¨V á@‡ó"§I‰~V†ÿ˜5 P !GLXWÿ·^vY‚ÇeýÂþ¾9!+C}Â"zsÖ__KvÆúZ8.ûæ: Þ©Ñ¾†uz^,iAi·Bê¡ô‹ 80D‡¸3ÞÎ5¶\Ê‘eg¸gŠì$ö0Äšâ¼xñnnýCù‘ìV†>”ÇaŒ÷ÎâŽïÂéƒìz˜øy+f‹» ~~þühɶLØE¥ÛÂÙ‘ÊZ wénb¿ç7DúbIælÃàYø»“’ó½uíŒöY„G­Øÿ#~}Fû¼¦ŠLc‚g”‘Ã. º„:L‚Pæ\‚¶¼3Ú÷V¤ZuPXuØížþ~Ãa_´¨¬Å‚„ò´ûãÒÍñ-€Û]tÑ U {_õÛóN™®Ä5¡ÔÚé#”›²ŒI=^æ£Êáö‚ê‰ M_’‹}R¹dÝMyêìQY¼Uᘠªð=Ê9¿ð/ñÞßYQçìò1«ñ§¢ÄVÈ]A¾ºéV«8w1àë#H8åóŠFtgz߆®ŽÚy“)ª.Á«K£-n’¨vAúÝIÍ~„^cg¤Ï[|´ Âbo)–¡¦a‹ÏÄSn»üÊò79—Ôo)ï>Ï Ö: I¸X’»}4j8*= $ÄŠ<é!6I$\[uZÿ=ÿ6'œ‚ÆUü ‘>f‰­ôR‚¨ŸRFý£Sûu|ñÔ»œ‘¾ñ“ÑȰT=ËÎHß@ÓÖüȃ ];#}t CHõˆzxQØÊU}JqgðÚâÄ']Y®î ôçx‚-$ezW•.¼g:TçâÉ@ŸqûÈçMxWí ôqˆM‹HG"WÄ’®°íÀæ¨öcïRùa¿0Iê>¦dT{—Ê׿qvO v&ù…¨k#6v&ùq×QÞMô bçË@?ïÙ½º€#§~I‰ZÁK ±¾÷^òÇ—»isœøÄŠ2ä}ÄN¼ÖÕÄv¦Ÿ_â`í dtâË8ã.ÿRd:!Šü^’a¾{oà¯dV™ÀÅw†ù" Ûÿ>ò£näɼn¼)7<(Šý{$]²'E¹+ɺ-ló.+äñ "ͽ_Ã[¼]áÃûdÓVøýhõ>•ß³«ì ±"‹ô.(ýÆn+ˆ}J­ÞhÝ–ÕÔ¦Wä¹~|{7×&n…j7¶rã½6&*ŒÃųRä¹Éã;6lêy.3ÀÀ1l)3º7ì'øÕ»w¸ýbIÞó™Ô Dº›ä±ä”%Pˆ½~‘»ø½$;ƒvâ‘eÒ•Kí¶Bêæ_{­Û‘f¨û’y=Þƒ{[ŒÃ»L$ܷк9ý-#üJ@µ»{áyÅ(ØoUo½¨ÁñDÅ=_Tý(uõ§ä=ÿx â›ñ"ÆM¬×C‚«gaQ¬È7S~ ºêaâèÜ+ã/e¿XR¨½Ør3s~¾'‹¹0û¦‘àBŽÊÛ%]ÃïˆÜqÚÉž*£z;âkáB·.ßü¬ë½ÉGËß²¦Ê‚éAÎÃÏDAÕÇÓƒ™€›õéCiŸvÆô¼i³ä9Pq3¨g<Ƴ“¯»¦zŠ>ñ3Æ‹µú”bÆå0 M™úùyßï]2Xj–àd”ï^ŠÜô_Ôí§dêN¢›pñ`¬ü}OÆø˜~xêmõ&0G,)Û>¶ù¨Ò0{ü~*OÉÖ¸ä×ø­éØÊ©/–·}2…'dºðïÛr2ÂGžüzLÂñ?R9—ú3\&N)Š›y2Àlja89±OÜü“>ØìF¸qŸÒ §ÛßxœÙa ˜ãd„V ÕÉÅ”C,Éjžƒ×YÇ»r œýô¬æÙ!Ç#&TÅŠžä<ÝwU"e;4µ"Ã{S!¼}§C¶Sà½yðÑ$šÛÄðç”\ ßP1ÎÁy+k•SÙ| ш_J*wJÐC60Ló‡¨ÛOaóî°"óÑßNñŠ>ˆÙ3ždS»S©|‘úö:Oô`§ˆvVð ¢9ñdœ/’û|ãç³Ô‚’¨ a†r‹nuÉò»ï‡=ÖJ‹ºW 3O†øHóaÓ°‰šç”ˆ–`”É~oĦT2u ›8æ™HâÑÌT>ß•7GÙ“ŸŒð^LÀ•(.NqâÃ9Úk$h©¢à=ÙŠõTsb0²ÔwÀÍI®’úíIÊ׉ä0rB–BÑNUïQ¸6²¦¾×Ô¼n>Â$brŠ 6æ~ÚOÐí):Ê“>&ߌKWìæâŠ­$æ s,/’Ño‹YØY=¯€õˆqÑèbEÞõi(Iy"¾W}«¼ëG1^îʶî¬UÎ †“F3%ˆ'c{+ü=!Ýõ¥â,NÆö‚¾øbŸ«T™'c{¦8=»?4j´|2¶7ýÅyŒO0µú-…ÃOV„÷_à´¢Ø=Ú›­ %§ØZ2²‡Ö¥ƒÏ3ðP»Q‰ÑÅÔ]¸ ÊœLâ£ý$«RxOÁö|{<Ù  8ðTߥ@†%2T}¼Kµgq¼W „£Š%yœK+å¿Ë¬ROÉÑÞ°Î+õ릖X¿E&0Œ'5œ=ÛþVaá{Q[=?Ûc¾‡f’’ZR(œ^‚í^em} ¼3},b™r~JºFÌN:&²¶ÕÃ*®±¬Jf5Ÿ ðaŠæ«Â*Oø:~µÈði^ÅsÊsHcÞ¼T!rªpßÏ!®ÀÃkè{IIÑdÓ'ëKî…À‡1 +æóbIŽPå @ï …YP3Nø:¯MSå—Rý–⿇]Â#ãww¸Ÿ ðQò),R&å§|Lå T¤]y°€/ÂÏüVú+ ž—ðyS‰‡¥ '‚S>ßîéZ¹ºªÂ3À·¨¥‰õ†V%Æ@§|Xùûk¶Ð}©s/|½q’[4ǪŸÌºXïSyãÂ܃)ƒc QGRIÐå—ÏkÈÄù“!¾Ð_ú&<à \ìdˆÁј˜C›·?C|(I8+©öŽD-2Æi¼ôÀ¨j©Þ?Ú­C!ƒÓ¦F§°÷i&^v0GPcÝSØ{èWìEŸ<§ ¤Ÿ"àõæ g=Ø0S™÷"àõ³‚aŽ—[…7ž"à%4 ß}¿MQ­NûàŽ `ûI-+Ê °a ïH(ÄNÆúü©„$ˆ?Š_ ñ¬½ަÁþ:wåGbE¾ë¥5ÆÜR­(¾û (³ÞSl#+|>?ø7ÁDÌLb…χ~üq`®"@5+Œ¾îûsÇûµ«ùV}¾qø½1ìЖWYeôyóä‡-Îc} ÝeÀ/lÚ§†mÂ÷1h­$Œ  »¦HVÓt±Ú ÇE:Ùï%½<¡+d“~C¼h–¿n ÉàÄ /±d”ߨ¾Ñ˜˜XæôჇ¹ êze¬i™Ó‡x 3"ü±Ž‚/­—'`ƒ_^Jm™‹n½0¸'DP?r »†à¤Œ,  †/9«ÀgfÇ^×õ‚àˆù ˜MÅV€?Ã2†\²NFºxs2ðw ury^ÑbI.)ÎÑ?á­&š`uÚg=ô˜­-QpZýâ¼TÁŽY>ø{dÀ„ŒX’KAoeŒû“Ø÷’Ü^ҀЋb‹­³Ñ7ùùéÕfM°àoÃëŽúÜßiñÅ ðÇöÇ5#oM°ë-xésÚ³­ËÔ>,?ÞÛH’—1X¦öñ 4æ±d²"â…Úƒ¹áA/î~¦ö 8º;ÊÃæï%¹XŒÍx[€+òëO.+É¿¾^u+ öɃß3yÉÊë?_xÇ‚eªH?+áºP •«)€6+BÞî;ù€Ô¿øzâ%/žÏ ê{õ e‚J& øX¨ä1+»Ts˜W"¿ê†®Zú“Œ< »}U”È]¼¸A(qsÙêä(‰»t+¨½?QÞbMî;Ûå¡ÉÁL,É›Áõøøs€`…ãwÀ "9Џ¡…ãç=­ÅÍI,:B+‚^ôÜ4DtD]Œ,ƒ ý+srS¸½ŠE¥ìØÞ?Ä®²ì¶]ªñc6\ó› Ø.Õ@xO@T ËÄš<â͹äÅ75±Œ²s"™?ˆ:Uq›Ág¡æ%ñ lì{IõbóLõð8ØÄ«“Á1úcÔ§ô|VD½d!ܺºdíZâPÈ w´ Ž€Â¼„!*€+€à¶Z,æüB¡mœÞ ÿHÓHRK &)¨&á‰%…èË€uÓ„?À÷’’À܈óþVüüšÈ?cÒ&‘ßKrèeóÜG°%°mˈ ¾Ûî ²s²‚2™5ÂcQ-ˆÇ² ‚Fḑ‚÷!ÆMfeþ;@ž¼%î2ÇÁ "øð^h˜y-…/yð¸ø8±+UÊ_˜Î²¤¯”¿98•†˜NZ¡üá2‚á&îiBe·º'¡ÆxÆeîo%‘Ãï9¬±¦´ÙvÓ}ÓƒŠ§ÇòvóxàÅÃçg¸÷7€ý+a€edƒª‰ûgŸEdjª™É‘»x¿\Ìì W+Š—ƒaû…b~F¼‘ ÃÞ ¿þ­^É‚îø 6.¦&Óözþ5“"°ï(´ÄŠ<ú·`Ôá¾ÅxÎ^¾ó~7(Ábê3r _ó¯iÔ¿XˆöÂá÷ƒQ²ÅÂï2ý™€)×yË y"m4*«ËŸßzdð^?^æÏ6µbàGKg¸šrî¾EÕ‹@ç€MÈ÷ßØÍ  ¿U‡›8 SCã›AÀ…Î[³ÆdVôe·þ"}ЦK*õcò¦ÿè98WÉý¾ý7#€¤½øéгÓ6ùó õ#b!C:zUeq è·Æ¿¬W¯d"nÕ-9ô²¤Ø%Σ[@¯gµiØc¸½h»H´†5Ì=?¦ˆzq–Ãî¬OÑÄÜ nœÑI=ŒCÄ)9ðë¡ßÊžïýòÍ´×c‹â+ö¾Û‹È£czzð˜žâ@ºýM÷`Î 0¨"[oÁÿÈÄÄ*‰óUÙRß‚ÿùsOÔ]?È]Ķ| þ·ü4楎„<4ß’¿Û|×Äbš—S”$·˜øyky)úH VRø›ñ?¦D¯“Ö¡t··ðþ|‡Ñ‚m…òX¬)1|z XÓn¢»¸£ í%Çd±äŸgàâMƒiª— ¨{IQ‡¸°Ì¢¸›!À†ádç V᥷ÄwÌÕxûW Ð÷šYØŸ )W¤Ï`‚"ÖäÞ¯aÌ‚MC„ˆ%ù 8X+â½°¥kþÍ0 ç3™—~r®¥îN†éc¼–¦7Eÿ½ìd¸áhÏ Iô7À0M Ј _Q1ߌŽ ã°\å~r‹™ŒL”÷’`p‡™ŠûWÔ·$ò.ô‹5jHÿÄšB #z‡}‰›SH ŸÿfD9+ß-Æ~Ï{2-9à~3过:$“C‘nÉöXbB€iK@á·d{œ Ó`ŠßQ­)3!?jpv%×T÷>8^•ü!œK¬I®¾}ÄØÑ_Qi zK¶Ç!Û¡= nñ”hÎZl&-X‘ ¹ÿ!ŒÐÅî”QÀÁ„zv /¶Ja»Eø‹÷À}7¤vâZà ½šZ^]ýøœÙH@M§2åÑy3¸LÌhÇêz¥6 þ¥&•â0Ë mÖô §+Ußtß#±ÐÎüWøæ?!Û é™*géÞ„5Æl|Ì+þi‰"÷zþLµeFà‰ƯؼúrÝrã¥@ #qü{EÉb÷Âd@S÷®I.)ÐMVØÀª#©„ypôan…ï”*na‚…Q¾ ²TTõ_œü¼Á:§=L;¿Wd @»Ì°¢Goj“,’_¯‰Ñ:šêiÉ`Û4 €²`¸ìíÇ Ÿ}…ç”<ÞîýäÑmRR~ 80ž ãOq!b…F´t¨O)¸¿¿TïlNÄÙUI€¾’ÿö&ÈïúúAµdèc#@îï5ô³Î÷œ® $~­vÿ¸BD$›*F^IñXК£ÅÆZ,ÉͨüÙ‹ü Љī`ós€[pÓ^F©ß²X&÷F,ɇý"}EPÊP:¶—@Œ³|›`ZÐøñZQûc˜íkÈ%·?ã~‡ƒ\ü&Ñ&¼ŒÿÃøÛ ô¾Ÿþ—ñ?̸!$ˆ'ùõ"y?Ä<@>¡ÍyþCbrÈe›‹–X“sZgÌUšS%ÿû…ÿÁ·±QøóÊJ¼Ë¯×ûß¼±6¯’0´YÁÿ ¨GøÝ V§XSð?ä«ô57$'ßkF%5¦ÅLÿM=¯€`²¶úOÑÇ¿ªüåÎ4 L Nñ{ªò7œ…QÊ{U¢v´êðç=òC/ë?ç ´ùU‡?Êd¤mäâ<{ôsƒ˜r&;Mœo”S á=×Ô”ÅÛ+þ~®9÷óÐÌ‹%Ùß/jq*ÆMýû½¤¤÷" Ù€_]",/£pU”[è•ůŸýñº¤aë³MQ3½YÉ?^hxãs8 Ñ[½Y¶›ñü£×ë{%Ä·á¨ôŽðÈÅ¥.:`ß9†Í…ÇÆ½ x… ˆ ŽZ:GS/Oab)F¢ôªžº ¿2}¾ÿEý:‰Ö<ñĬ üæز}æÀ±®+‘ΫÈ 6¢)|™!† ¯BÝŠ6fÇV-žÌ‚ýù†áû[zŒèÄšýçµ*·º pϤEÂ[ÿÆÖL>Zfu&ýûÔWùß»ÿ«ËÞE åù¿ÿGm‹¿Ð=ñg÷?wÖ¿'X;q˜ŠBÿ*ž‡H;„7ª*€Þh›ÊÖ7èIôˆXSaÞÆœ[M±&¿ÓžQRaF«“^Aô8k.[:nêüÐÆ;µ!Fõï ÷ó6XhhH{E¨~ÍŸïsÁïb‹õ“ñw!xêï–·7ú*‚6m“­(ÕRËüäÐÈ+€?Ø HzÎöÔA\úZ¨*ý›ÚXŠ7B ·¾Výšb×5CaGªè8ÿ+h,äH\›<†ÎŸ7¹doÀ?Xæe8{ÊUE«Æ6h~èbí¤&¶¯¤o`[ ký§;÷¢¦oøÂ'ð{WlµWÒ7  ‡â¤mõgnØ%lc¸ì‡M…—XRÊtÄ=a¢Nõ¤Ö”2}Pjþ+¶Þc¬Ìè`Xn¨íø¯‹å»å¾c] ²ýʪMÿþùjßÙxõârŠ7‡¸ø¿09õgk¢Êz˜§²áÞýó–›½þ’¬ UxdÌ-Ü 6gnâîÌ \Ò @è+´;šB€`csU±Jp½žh5ˆw[êàxÞК˜ #ÏÂ÷h+Vêû'1ñõàº)CÕ÷O^Ó›÷ãÖ/^ô÷ç ~¹·ö£Âåÿ…Ì\4/¿°5õgsâ^uÇç¢þf™šL]ÄÛˆ<AŽz­ ]ði`^<|׿¡ˆšèò Å–Lu/öœt˜*œ@˜æ7-Â×üÑ3½V€.º!£ÀEÃ¹Ò x/ŽŒ u¢˜ËïÆÂãE¤Û rÅphbv…E€ZT{¦ÂàèC¸× Á ¼/¦ü4ØB†ýZÁ½ÐÒ0¶!p੃£À^ƒ ËAQK¤ÒøšÒ-¿IŠžÅTM8Ö¾Vò,à¬26 8}‹Dà ýõ´ìÚ,O’ uˆHÇìÊw~Åp• žjx¦¤§¦áËÃHYÜÃÍPM«q o_óGÝíÿ¢Üd¸e¶1i‚ÏIÚù¹Ý$BNŠøp ý^ô¸É>š?­vDñ«¥à^ F)Õñ7ç&£FäibœWBܯ ƒ=BRA–ê >Áñƒbàv!^ö5•½êG˜A/˜*ù××ñ2•øffÊ9Š£4—C^8yáɼ¸Ë)¯6ªr¯ 1ößä_óçMÏrU˼âî}â{X¡¬t÷Ÿ‚4ˆ%Å­˜ôu¡SîûŠâR“?ç‹lTõ!Úæý„B‹‡¹ú˜õ×õ)a³¸³×‡öF¸‘Eûç_-o0¡qÞùþXl¨Í¤à]Dó_Ã[^Õ÷ð zô"tª[üðÂ4 ÿ$Sô-ÅÙ€'=gŨ Ì%ß4ºéÕB9×¾Ñx¢ÿº¼ÿ``^wÓã¿íç÷š?·ê[Ïã¾þ5á÷äæ_~|ˆÁeŠîg«ð,‰Qñ_ß$ßÔKÔôÄ·é€xz2èµ&°ÚC}e·›©fNÂB³U}/)¹áÍâóŠbOÀ}I~o}aöÐAX9Ï×”Aã1¿’0Â!mê¯ËZÙe$ÍíÍsãu¤ú«5#ú' ±OHê"e˜“phÂaŽ÷@ò"½|]™à‡ ûzÿ¬7 ü‹ø@ñcz†ÅÖT¬}±¨Õ{MmÔ ©zG&’@ ”vR™aÎõ 5úšr0 ÎÉnÂ+·ß¼&d% ƒÞ9E·ÕÛ_{w/Œ2Dظðü]ùz¥”ùðÇŠÓù­½@?žOæN”ÀF³b¢¡é=!&1 ¹0‘ZX|o7½ÿl3ÊoÛ#š†!Òœ¾«„^2ðqì}çú}½ÿu÷Š‹-ÿkþ§'ЊàM€ˆÐŽ~Öíà|Ï|^/¼1Ó¨•ülSăÝÿÚ¹{¯mh#·W•—ýŸxˆµé4 ¶È÷`œ¿¾Hæ„Á[7ämÉ/RÒ~ÿÏõC§$Ã`+HSiÿåÂÊb8ƒý|X|W9}Tèzû dÏ·£o^MM^DH*n‚=Xß 'ò:ÿ¼´¥ä+¤gº‡¾ý{Õü«9î¿Ð¯ø³„ GPÆE¯Ø+ú…õà NâÊü‰~õŠ~ùÐ7щFº˜@ÜûüëîìŠRéE€^S,ÉsFè§ùÅÀi/ÒNØ€p•¯o žíEÜÉ3éý Oy·ü?æMú»ŽÍ"B±WeèË[ÜP[À‹ÕbÏÀׂn‘Å·ˆ¡üU=`µ@Æh•Å»_Q/ß&ø˜Nì†Hð”-o% 1Y¡¸l±¦ « ?¼H‘RgvåzAC„C”mµæÏ׸ \?‘î+˜“ý{Hì¯@ñò1ÅCbÔû¶Ûð%nÕ¿®è«pÿ';°êÛÁÆ×üùïŠ_û; iy„½ú³åŽZÿ1ùÃÁ¬«C µAX&䆱XSqLfºô’ØâMøáêáŠÙvF^Æ\/ö“jªAz#Ã.°õ²aæAºdGHª)uôò‘ej;ýpýHŒ|š§ < ÿ¸~¦;Ül/‰ž ö0£«¿®ë©Óeÿ&Ð-a–lU!ž¿FQý—Åë½¹RaÁìøŠn‘½÷záu Ââ¼[²µ×íÏ×Öòk‹ò (×0+Ô¥¶?_ÛJÙbªˆm4 ÜPä…þgËÿE¾…ØP{rz!ñ,UkõlN6=Y#ÛŸoi…¬¶ËA_ Mø…÷Ïò©àSÞ â2Ç4–­X“aÈ_m/ ì k{œÒ ÎŽ1±ËÄVú· ‹yDÒ¢KÊ 2¢‘…i¦xánQOul<íAEêcÊ6Y~ :±¦¼µaOí[Y"^þÊ_·¯¶&ã)ïYü»#škÊ ñyýL8|Äý{ÿh% D'™ŠE57C^R×g@Ùßkþìv‹EZg¢€W.)o¶ŸŠD#“u#vÈ‘Q,Æ…‘f²ññVK sþÐéç­ôú–¾¾‘¥dwN"¸_°å¾W·¿M~ɼt 2Ù÷šñ盉\[ySR…8ŽŒh¡Ùªƒ½ZÆ(Ä.Œ6:’Òyå£^\Î𞺸hù¤g@Ë;Rðø®°Æ£ÂYp_½E1• øgpv ƒ~bM¥±Ã8¡¤“—¬Ýá¾,ÿ†Æü½¤H Þ\#"õ†`—Œ’s0Þ™wG᯦f#]ӿฦ°ƒò%%êÄÏD L±Dw12îEáÍkÄDÁ%ç;ŒÎù5b›þ@.²üƒLÀ‡#£`H4ýº.!%Æ"}Šï§eà@Ú¥¾Xö6¤5AZÇyFüü ‚Ù^ѽ‹lÐ7V9ÖÇãW4ÒÔoÉ(q·æo%²"ÁI#EsQ¨ûƒö¾ÝÈ»Ogaü­õ¤ú^Éß8\mðÑÃãY\âßNºê("<ÕHßð—¯ð8˜v.½ËgÆ—!R ìÚ]ÝùŒ†y×°;ò ˆö{I÷7¬Ãá$¨R+ó¿:·}\h¼cbIiÑHÚ^*yñííˆCX~#¼ ÆqêÀÎhÙ¢ÿóúÕŸG 8Å’LèeHȨÊOë¥.rFʉÑ:‡hêFå‚áÐùˆw"ªC`Z£¸šù5¦åÜLg„¥Ói ßÈ\0uºÍ®*¾|I5}Ä_a J|õŒ“ÁwîXgLLÿÄ7?e›_ƒUÿ_OùPenÁ¾û.¦j¦02 íÌÄ& Oou2dØ ˜ƒ¸hÈcª0È0ß³:‚K8Ί22ˆv°¤ñÝñ†|Zì¿B;1èèxH®og<;òµ±œè;ß·ä|é¯ªÈ CvçG­oûŠnvTdd}a I8¥x@þd̃~‹qV†=2 Fƒ³&¹:¾c ~ìÈx¯ãÅs¨a¢#^‡Ì cRäoC‡¤§®OnÕ!{g dS¬‘É`CO,ǯGÚüh¡ÇöQ·xy Îv— ŠçÞùì¿å—ã%‚Â|‚12ζ(tô sY,I7ž!$Ð&­·ÚÓ2ʶ๳‰`uhFÙð‚£ŽHê{•Ú¶î2lUu[ò?ëø9Œÿ‡ j† ’ñ3úœÅÌsuS»mÆÜ¼Ð!ḳµdÈ-Y0hfSW¥XÜüWŒˆxÅ¢M½]™36›o€s±yšÈöf‚‘«ýðšg2à¸Ê¯eƒuè/!¿ê*gŒ¬h‘쉵bI¥‚¾`*Óu_Y¼¿Nð™)c›ã7Õ@g¾¿üÌÜ~PS`÷,œÿC5ÿ˜­JâYøb^Ù-â6Ε¹Ÿ[—NuÀ‚[J´53_lÁä@ê×älb¾û†‚•63$çÏ7tëGäŠAaÎ$Û\¹¢(fFä ,#1URhfÉ#8áŒé-êœ >™½téæWåêŠÃ<3 ç_/MØ[¦à×Y9Ø÷`üׄ-È›‘ƒˆÙ£¼‘!ò½$wé|$Lì¼b»Ã̈ÜDˆ öµÁÄV9Ìm”?G-)Y4}Ù 3ˆ&s3cr†Þšx$t ¤™™ef‘¯Ži;Y!âÆdŒ»ò†ÕE‘h‡gÆèàì!˘„‰‚efŒ1zçíâÚ É,Q¤¾‹r³8²…cÈ›¤ ?` =èίŸ¤³ ³ÍOï‰fDÜÍÊ9Ca· 9¡µQW௉é¬úK\B®ûûmýf_NLíµËŠ0«ø£ÊEÜ’+q¶Íù—¸v›±N¦‰…ÍÜRGÈ?&c&`Ûÿ²æ¯éʬ:K#)Šš8Fõóþâ0Ì¢ªdb:3°hºSŸÊ*窯+­Àñ³ß·,ñºTmšÚ!ÝNaõâK2IÔÂ膘Ö+²“ß\™“ÒüW✣ bÌõW6+• {^çèEÁ3«q˜dþ\GÀFV‡Çúóžþ掅Pá VíÍ„Ïß›+Ï?AšhÁ‰–}ÔÜ™Í vpc÷Ò¸‹VbV'1Àyìc%Œýç;Zs@½ÂÈ+-þÜÞÔ]ÕÐ^74`Þˆ>kò=e¤ßñ`æ+f6³`dË/>Q?À8JÅšìûíe#vLŠ›èIfñýh^,æ³:~¯9MÂfÅÈ0üŒÀ߮ȳ`d^b¢þ]¸Wª¹ÆÔ—_žh¾$#¢—±²-kò‰(Y'0çL\Z„å«/ÉÝ´ß¶ˆ.AÅ/ä̳`dt/íÅyrŸ+D3ªÆ{â­˜ÇÎ ’mú[` APœº%û ë@nŽˆU|JVNÃqŽH¯°ç·ïÒ›5;Ó{¿5è¹Äæ”A3/y±ýeòû·wfiß-´'¼¼¾—äÛy½™[8pª/–o?b/1&¸òççˆßêÞE$Ä”Ÿ™A´á/+€* aWÞÊòB€ÌÄ—d/Å÷™G V3ß|(ñ[2’æ Û?A|³ Xlf$Í;’w1ÕõƒRÁ½³øüïPz236U` Í÷ÆM”êCr;z·°Ç×8#iDþB|Æ{²‡ù’|óÉÇ»…«’‘ÞÌHš&-AÅQ_FÒ¼Šê‹–¦¾Ú`‹Ï?›1„i ‡ÔqRþ{Ì©€ž~f ­_´<Ôç0NÕ’*’'¤þ{%¶RÔ—#Ñ‚ñ©_Sµx°êÖÅfdÊÏI€Á~£_òSr†Ò í4¢úÅN,ÉØÊ¹‘B%AŒ,ÆôÂ9;Òaò^1&š–M ³F,I÷ߟä‰;ÄŽ¥ÕJ{Œ¹®™Ú¯Š­‹ËàÑ‹$ðÂjUv«(/0>ÌAb`ò}UW†Ò^(ôˆôÂëA}ùÒM?ºòM´3êsþj§Wq(ë* –½ZTøÑÊðo5G5‘ ^Gˆ—oýÐ:ébŠÌd”1ØúŸu¢6|3¤~aeølÑú¯Md®q¯ Ÿy“Ⱦ»°™Øòç—÷¾UÔÌM LW†Ï¼DÆ~ J1ŠZ>óóøö‹Q#V†Ïü§ ¸`«—(ƒgH92cÑ©­äÉè$@OÌ@Ä’r´ûåØ$Q­¦èJ«Øø¯ØoÖÆ+ÿ~»— š×0X'™ÚÐgÕ•¼ ¿ã\!ÕÈs²‰Ógcè:Ô¤deü X‰ ²ö!Þ•Ñ3„¸ –H$øü*&þøÐC±Ñ.zkÔýaºxgDû°2š¶1Àós\"ÜĒܧ3¤ …-pDý¼2à »ïFøu©Æ1ž û°*Ñ£îþ,’]”Z°¢0`RKr#áüÆ + ÖFàŸŸøÙ‹rhý µ­ µa]`;dMðØ×,dFœOÀJZS¤ô•·i¸ð@SKòˆ c%ß}ñ¥•q7 É…B¾¢Œ]¿élýüX@ß~P‹_¿ÙlÚ²w a$£î@Áà¼èå¤Eî«&Dë'nÚ*#¼€§L{Vf¯!ª…:ƒüB8¿3Ôwè)±£X’ï¾?ÇÌcÔ|gÞ’:JoÆÙ"ðí,Tõ ߻֨˜ÚÆ;c}DDn<‚©Õc™±>¢[&møŠ,c}v°ÜDú ãKòhž²Œðé;èïÄ’Â|ç¹ôNvn˜üßK2Ö7'Ρ^økÜ„½ê>…š±˜ÅáË+Kè õySA6ØÅ2%/‚‘É{¢Þ…‘‡jZC ".WAù.¶ ÞzàŽ¤Þââõ†aÂH¢¨PÅXFýá"$5¢]ÔËF$(â ‚ &ßê›åÁíõ­ÂO¾ƒã“zŽ­ né&qÝ[æðÐK “?®ª°Œ÷yŸEÔ=P7ã±$S²`oÂ_ó>º ôrB^Tcèè80ŶŸÁ>ß&0þˆžKa±;ƒ}s@¦=~çT€ÚÎh_ü†ý8f«»’<ø†B–Á§Uõ0éã "›‚,o¡dòÐg÷ÇSý”Œó[Bb|êµ3ÌÖ‘€|xy ve+FB£ä&6‹LÈ›ƒüVHÚô÷êSв•¾¥‘0;”ŸúΨ¿ÀÉ©¶%òÎÅl!¢B¶òRÛEÚÊÉ©S^=•Ÿòö"œ¤Tõ–ùxþ3ˆqñs52vÅ’|óyP`>Rˆ -ìÎ Mܤ† ZžXQ«} ¡ILyIíŒz¾±‰u,— ’Úçï|÷o6U».^¸“úžƒrZí{ ô»ÛÑ·˜ÝUdÏÎX Á‡ïVXÑ©%¹Þ#Ñ_-àˆ)LòN Å?­¡¹>MÅ]VTÍ?vž˜†˜\’ë=o@fÁÖRð×Éd¼ Æ“jLp²ÀóNÆi<ä£H|T??÷zKH±ÂgGˆOF§‘èo—±M´!'ã2–$¡Q+òÍ'û'½‹½ú^™¬Óá®Á[çyùÞÄNÆýÃókHi &K²ÐÑ{Ü>~@ú#vדu®‡àû‹X¹ù£¾X6$ŠÌE/ñ¸ØÀÉxÃ&¶—÷ó̈%yÛ¿db4°Ewx2Ò·l`ƒ=­ÄÍÏ8±c¿ˆ†Ý¢o;äãü:„¯l,*÷“1>=xnn"Ô³Ÿ!¾ápìI~0)CÐS¬è(Z ¤¦ Å)×#’…½»bÜrŠÎÕ_ø†'.Ñìœ ïB[¤¶† Å÷Šüê‡^—Á7»ßgÅEá¾½®ÈT'±$7úØèÎPzô%}iôa;ceÄS±¤Lþ¼þ'oˆŽ_±NÕ½’G2Ph '®r¡êõÐê2=óúOíý%uÁøb^\ÓluŠÖ ÑŽ‡H¼'#}QêZQ¡ö;¿‘¾Ž99÷*©IŽdíüdŽ:ûïÉ‘ŒH;2åȈÞÉ0Ó¯søÄñNl…¼GÁç³?ÏGEOŸ óùA^oƒ‹Š'f%Šö¼Äf.-V$Š6žgÔ°^»*󺓹{Xzù .*(ì'C|‹p*rÕgä^šrÁ¸ :[¼ÆâÃ?ÞDÇpV¼Æ%‰R/Ã(ÏLÌXOÆø8T þ¥·ßZ–(1ÛSõHÆø¼¦Þ›„‘tµíeïbÁº˜Åsî©OÉ@Onø;l^ò áé9EyÙA¹ýÎ!¨)§À|/¸¥f?!mêÇdœ/Rƒx' ÏI['ã|ýÇ£kª>ÔŽ‘q>p´ q¶óhŠG¦F–Â6»@V&ÀÄS„·ñvA„'©\ß0Í.éUâ¹¼¥åó]ï’þŠY Z’[>Bð¼º&µMÉéó“Å_Ç …e,µ+g¨…Éò&Ÿe8v2Ôçm;`ÏU²™“¡>C¾Àó˜BˆŸ_°>÷½Yä2Œõ¡wöm ¦±ï²âËX¡Aðî½{YjÄs^ºùƒ9‚eýîˆÑËy©à ¯$‘ã#^üŠôE¸%õ>±mbI¾÷ÞLfê¸‹ÇØ2ÒGJäB:å&ÚJ«²[d½/l×M02­0þ Ïú¹¸¹*ÏGËP_(ö½FÐÀ÷%³ õ‘·FEZ†úà=Û…ßÅTD}JÎ^¾o2H TKò±å$`z˜¢€[%úaðÏÔAW°’U¦Þ·Œ†îšbja•èçEùžX²à-XÖËñO°&“ä:¨%ùøgÀ‡½RÛ cÄ’Š÷†S’_¶¦¬á­„M4ìCbÊÜŠ6×e?ý½‰ÃkGý–|üãá K„Ö×Äëiý/~·eˆ#ôh?À….dÅÉ’åÅ8J¸øîâ{Æaб¹á… –äw~2ÄKè‰J›·âdw:•~Dáu!p·ŒðM‚-/v1÷*ÖŸe„µ‘Þî Œr\³âd78L±i÷ÓN`–!¾ù">ÈbÊÝØ2Ä·¼)òw â˜hBì·]P{ 3ÚA<Ыý‚ø~„K ­ÂÆ­¼Ó,C|²¸‹;nª¸ÊáC…Ž •7IWµ-–¾ „û–Ð"¡Á*¾‡™wRtšÊ˜ÈŠÓ%¨F4¨ÝÄš¢çðƒØð ³&“b¬èq[«¥ê¦‰âÕ¦ý³ãhdøËwÑ"ZõÃ[D°!WTRoN _E•…;_¤ƒªvº§…÷½¸h­m¨·)bB_(.÷*Pï»™Ç_éØm•GacËEcª>§˜BiôiuaØú‹ÊkÅ"/lîýp K u8¬ªákô„¾Yúñ F5–A¾NŒ^'2€X‘»üPzҲ鹃eŒ¯…¼ã‚æ-ˆú1Å0êÚ-/¼Äš”>† ÷IÌfÅB Ø‚8ÓŠNßJBëºt_A°–Øý~á|?¤ü6à eÒ%«ÇñÒ‹°¦¹þ@n1¡Ÿ°<ë½±ªßö?ò¶e" ý˜ªù.o%E9ÚSxV¼ød`’Ù‚&F]Vr[ûϤéøP¥‰míàVÌl©SñÈ2æÇÇLT÷^õ¢krl+ÌØŽÆL¹4ÙŸ±­Vc[¡–6ºÜ’…šÚŠ‚—¼(x¢^È e¼oEÁÛIq‘6çD¬)ã=èËNæ!Ûæ{Í/œ/žßý鄤OAÐ2+Šß¿¾w»SЈ5Õ‰ecIHñ”Çžo#Yh4ÜäU™euÓg2ÄVC¼žZSÎÎ"rÐx"UŸhõI@îå‚|êÉÿ…öý¨Ü.åßòOƒÜ'ÖäYå j#<õÕR ØÛꀉ„ÈÈnz ¼¸è÷§`¤OK ±¨ƒÄVõµ2ØwéôÉ·ß Ä ™Á>è‹æ´..ò-÷¿ `{,–þÑóN¤m ™ŸbXÑó6œ[ÐtBžÄ\ØJ8,Aƒ¯6ý:,uvÞºŒy¤Q¨×­h|ø–zÞ8õåJtE»~¥½sX2lõ|Ù/FÚÞˆOò´õC‘¿ Ùûß±­l8ˆ+œa?ÆVD'v$‰ê¦ÔØÍ{,Üמ@¡îŸ¹7“ù ˜áW[V}‘üžc©²:p¢©M.ã{“t£}OôjÃÎðÞŠ<$Bn"xƒ{0…iê°A&˜I÷7²÷³âPƒ|+k?ª ÷šjïýG®‹à£]d…ݺá#¡•¦&üFðvO¥òôè7½î¼‚av­·PV\l݆ҒÞÂãÃȆٽ&€Çk•ÅÉxb>üD|K~,±f˜£*_‡›=?Ú}ál9°~/É÷þÉ{иúBõSò½ß1Ð#G~¨)åÍ$¾$ð2¾ClØ™ÃdÖ¨Ð}?íB s3‡nxˆ—¼öüÿ{,IvÉvEý'pXPï žÿ´š]]Y•å|fF¥’ @¹(3‡ÏW˜/Sð¥pö{ëánè&s,f÷þvˆUjÕ½E­ëÓÁŒˆõÚx3ª·vhXÞ†ð\ )ߝޝCß¼*¼ôµnÜLg©Šöqo¦q]÷ëÐVì²ûÎëé•zE•juoÚñr&¼ô˜Ñ»ú눗v|,œàî³KuïÍ8ž? ÅX¶Ø´›Q<ÌÏl.2zÄ"ÒÇÄÒ+Xbº2ŠGžM|ŒWò\É(r%Ø~lwý[2Ÿb¨‹¤È« =£x„c¦!fK®â ãt€$-}•ÞœapJ'~ì¦.ç¯ÀxƒïyqIäïe‘¾ß69ŒÙ^Ä|£cÍð€9*ïýeÏ×fŸÒÄÏå /<êü,æÆ%î4¯ø¾Å+Ò%¶(w^u냊GgÀþgƒ×¾È[¯0öüT$á€c®)Sò—¡;8@w#ÒÅ·/l=Œ2ˆâ¤…§¢¸^Æîèö‹‚–^ ¢E ÕƒA¤¾Z¾Æ…Èv5¿Žs—CÊûÞ~²qAõóðUðîÐQá0}JÎÿ2xžb /*¯VÜùzApj­c^j‰døŽ ‘µô|JÓûŠ@7¢Ð1–Å @<—"Ð=øŠ-œž»2Ü|E ëƳŒºO,ÌŒß ®–« Èïü]_$/>ñ2~7&­þƒH‰—ßWð»NÖNÍë"õ[ ~Çe·zàU5c¼Å‚Ï7n2ý¢þ2|‡áZv,Z|÷2|GÈmd^m_žÂ…îeøŽhìÐ=½k1Ç…»ç‰·‹¡#D7/Ãw€J¾‰M¼.—(qß,·+ß[ÖŠãõ2~ç;ð‰v ê|˜u³ÇÍuwÔù‚#ô2~w1‡2žÂB_ ɯ>E9×þX„jüeøÎ¸A\3"År¹/té3t$Rà;¼X/Œ¬gñð _o#}~aù3”±Ô«|½P³7à^%8{…®G¾ÉÁŸ·L,þU¹[F¤èZßê|Y¾åÊyÅ/mrÎ2¬ƒ6éøoi€žbÅ>ˆÎlÔ°ªÕÃ\E£ipjɪR}ä—1¼ˆ´¸kF"”Ø’JÜ¢aþC"K†ðΈ³‡òV»E†ð¶o‘ƒÕ¶¿bHIGÜA#ñ¢)íàËÄ=ÏÈYFפ6q+*¿B rî5AòeH/tÜcKË„—1=ØÔ‘Oæ;åÀá+9¸!”Ÿ­ªPÈ„=\u,ÄæáFü÷!Ô ­‘Ü…‡îÛI—•h š#iO}FŽN#Ή2 £m5" ´òc,†Àí_Æô€D¹uÓ!ºjCÚ ¸𔸀hŸâ·p?Ù…ioÛSÄæ·ÓÅžd¿¤ø>>U ×+þ{=43+òÔ·ÊçýôÒ2„ÏÕxÃËxžïlßüŒ­Lw_ñß_°hýüRÕNôüòêaºŠYx…ªgÔÂ<£}5&÷Ð:|;64ÉêX=å¸_DÀ·ÊRëe@¯ãö]˜.-‡_Qå> oï+¯ö¯dm ŠCáøwûWq!¨BœSõë^QåÂm\õN@ã’¯ö”-º‚O,ËbÀG·Äÿ¿ÿwšibH†ò£SM`\Y"ÕD\ZâPÎüþ¦v°[ŽûŸ†Û¾R¥½ éq+.ßÂT@ÍË$=BêýD{q”ÕÛ«²\dXhš)“Wd¹¾©BµÈÚ¿%ô|ñ/HÕ‹\q}Q‚¿&«½’ˆ ÿíFëkÑøz¯5ü±Äm…eT¯ÝqÖŽ@+1$£z ÿ!üE°=Q–>ÚçÅ¥eÒCòÃg‡„Ù”h伌êu _ô¬ýHŸ”—Q½>ÌÊžøÑ¶¿o·’t ¿‚Õ:¿1$ŸøÝW0ÏZ"õ!éÈo^Owl}Ñ ÿõç3¤æá6f€¤Ñ'*1}´lù“tÊÿ ‘K×ûw6Cò1ÁÁˆ÷ï CÊÝJ¶_U:Á[r’òI‘’©IÆü_×còYh$ï»þÞîó1كʂ-=)!³cPÿœÙ^Ô8¨^ÛuĘAù%ßÈtqÉg_”? ¿æ$ÕBÅ ú;‰‡1¹®ŒÓ…Q÷a5¦ö~ÏÀºäPÉ,\Ôg2‚œÕbé©w—0†~Îøû‘ÅÔ¼ñbåø•3²jþ^¯=$ ™NLƒ˜'WÊHo:B´¾¦ß³{\ÅÒ5sZnÚðÈ1•¿ —DzWP>“C3ç¦,lØ2ÿõÈRßfÝ…PT¾^cçOAìä7TZdê-¹u7q–Ÿ+²³äËU ÂF|Ð ¯”¹øÀyq»'©áï·¢úònïû˜akLŒƒZ3­üÛ½mVoôy·l(õ9W„ê›!%}ËFšj'N<ù9ÙÙ\Õ–£Oé’” ÙpšÚÒ£ª©.¢Ü5(’¸MÛœÿâ“ôIáø€¬k@9à‹.Û@·îßy¶Œ)¢Œ L¸:1&C|3q`s#€PC2ÈãßË7´ š*leSXù ñ(%hL«Mwq>§,÷­ŒÍ“ <`˜!7’ϧ€| †*U<íFõú#>ßn©Æ‚¥,wêU ž±¿/bk5¦ó#e äV5&Üý  ƒw¹ÜŠNwá@ »*¢-Ô$d´O/B@KÆß ÆdƼá†å!òs2能œ_á¨þ=ŒìËâñ ðò›ÆüaÈèg/i-CÄ(0¦,*!Áê¡fÌo…ð²†ô@)àN·Ð†ª…mþ! ñüc²J÷Þ5†fz¯Êl>ßzë½Í”/]Qé6d ¾ÏS“6ÁQbTÞèÅL^#TÉ+!D„à9¸™ªW5“ú&º¯¼ ´ž…|䈉î|aH ÆT(OÐ.¿6¨»Úóqˆ ¯VÉ@Œ)¶Ì¨BhœEbLFެøYn|Ô\—ìÝñ‚Äi Pkfÿ=dtz¡¨ÀåÛB4F<Ÿ2¦ôÿ ¯Cà<ÀújLFÁÎFvTµ¶ $h~&øA4Y ×1¦¦±yîÌ”Øò}ø­ÞU’O(A˜ƒùíªÉkH†;@¹©ÝÒò7¤·Ýï"8ß«1%†bA ›²'D ʹœÈÔ¦­òI´G’6·0ŒgP.7šeÒçè3ÿÆ \"nî¯#ä¤Kا2¨”ˆ†-/šW{ró(ºÝ‰ ^bñ›ä×+1­øäÌÃÝ ÄK *Ê]…~%áZl¢·Ã ºÜ`:Gª¸úv%°×7è?Ã:…Z2¨Èøý–! Ø7ù›Ê¥Á~”þ¼šÈ`PÉâat 9˜˜,sÉ÷½·´$: @QŽˆ“¨·¼ ÂÈo]„©[{/Ž~þÏè4À:ú¿·×;ayÏØœñ΋–cŠ·KpÐð„à \M]öߢëÔößkv¯3o+vË¿÷)T¢Zƒ/°P uýjr¯ÏNð—6’ðacTY˜hº†ëÑß;ŒÊÕ#¡ÞösJ·¿‹¿“«Gü@‹|ÙJTª÷RBø>é/Ñ…P/_¥Lô*ÐË-ÿýˆIbÚkp/!f49 ¹´S f,щ¢ký÷þ+ƒ²Çó@áýŒýw,c2s yv¬ôGÓcr°ƒ¡ÏŒ@=Ò 3B"€¡‹™ž?’N¨±£®½(Oxø©Œõ¸z…2ÊHn†Ý¼²ÂI'ˆ .…¾aÞês2{Ð0n£¨Â˜òïü)Ædî(nIøÄôˆTc2‰(ð5l¬€Nåçd¶¸WZ4íièËþÈdÊ×ÏíÏ”7áM¹ñd”‘x"ÿçOÌK%®Ò3Èxî°P¸h;¨•S0Ɔ-Ád'½Â“1U"fvMyêŒÅøj0-‘™Ê˜2â\m¸ZMÙ6ëdÄõ ¾ ¤®J¦žAF¯±h’bì{LÝ@zÉú0‹FÈ åz¦d¼t8ÉpCJ¾1…×?)lPÕ˜lÿñBÃâéÝ ‚}‹öÒ ãŒóäy_Ø„è±ã>¤›ª]·ð ½“àìy©®–h†eÿÐÿÛL‡¨ÝàÞOyôJ!º^] )«>Røk7Ùßêaœá3 ñiÂ’Uc²hŒ àÉ E£$?'ïT˜ä)’OÔ—Fâƒ#@—>=Õ™Wˆõ9Öø-©ëPÏ#z¨Žt!w•1\èðëúí0¥åŽ˜FÒ-½4¬Ÿh`5¦ä|‚‡.š\ص¨1_ä…Þ!ÏlB¨Ä˜¼轂áá7øwÝ c2±8ê¯ø™M…ñ,î¾ú­ŽþèÒc µü諬©‚^„ÃÄ»]Ÿ 5¤ ‡‘Å$°â£ÆäÝ€êaS·¶ðheLi8Иô·¶ˆeLš àƒ‚‚ž§“·VÛê:C×-\ôa›2–eXƽlŸ5qÆ\(ÆäCô¨ÙC%š0$+ ñ^Âw‰¾“jôŒ4NÒ~ñBö!OÅ 4^Ȭ@¶®É›}áÜ÷­õß½”S¢ 0L€lÜ`s«1³¼´÷ØìïÑ Éõa§Ów¹.[ ½Èˆ}{d÷€óÖT‡¯gŒÒÄ@îî&D|ŒÉÝG¼Ê°`Bg¨§ú–1t,L”5K†ñmáõËìq©|y'À<ÁÏ6_Ôbï\ô " †Ùüe¸rdpqèÆ‘DE)„Ä·ÈØ¯ FÆ£˜Eç &<.ÎjL.A 0‡SD¾D;@}»’B'ÉßÊDc2z´.®/þëフÉèQPáø(»’û12”H4ƒ¿q?tÉÍÅ4M‚˜œîõ‘ÂÿGñ Ö"ì俟Sõ‡ ýÿ ²[µ_G†‰Å$˜ø¾#Ìš¢)•÷yŒ`ÎqäûaD¿û¿šr\¡#£ˆ`”¾Ç³a“£ÆäÀIÃ=98ÎbH>àà3@s\ÎtÉ^äWáÿI½šé¬?¾TÈ“”¶µä•d”„àE­ïV$Å©:dTº¢;”)hi… BW$d Öªù™2Z7jJ°/ƒM¤Õ~ºê%&˜lYdû êýïáÌ¥ B÷†ZŒ €~U3˜¸B^ç%³ŸCUòc†èûŒ¸…Š &R+ãOå_P·1FF¡„Ú zdÿ»R–!yGÿØï­n #ƒ‰{$Tz<8Tå7 ˜ˆyÉ€˜l«ËÌÈ`"TlÃw©~OIµÃÒk†ï…Zq93x” 5Þ„¢!94IÅ‚?·%:Gö M6as6¹?emr”‹Fm)R ÉR%(v~' ûõø‹:™¥‰¬DG=—ŒâÅIw,¨ª²ŽÈøá“x਋SÈë ×þUâ@=õŸèoóxBÝȘS^µ‹ 9-®D9ããÁþ_Ö‡Ð2&›NFÔ/„C—U )üDZxØ(9äùyÊ\s6öy¶,ÀŠVyq#Ç ‡C9¦¬ÿn$ §ðT·Ÿ7u¿ÆÏFIPŸÄwpu–sµL÷xaB©ÏÉbu?ÓY70þåuŠdõð¶ mIN%GØŽªua°ìc2„ˆC7¯Á=XwªŸ“!Äœ¼¥ïË·¬‚ö€þ9GªÆFF†E†}˜¥ÂžGÉÁ äzÁ‚QÕü»¢˜AÅ¡  B–dêÝZ ³9a€'·"]&¯÷¾Õƒt«öª "²œýR±¹—N<Ž #^LiÉb=XF¨wî•Âpà 2h¾,Z_Q0àµ=IÈWn‰Fä?‚†qô;ÈQäl:Ó^ÉÒ°ÂeÄÏ^£„32ŒsrÆ ÕA~·Â=òsÂ+DÌ;”rbÔ‡;ò‡=žóþÞ,•©Â Â>ƒŒØ¡$*äïƒfq$Ä6K¯Õ·TÉÌ `4œ€CÄž9|Ð? 0>Âß…1…¨>iÒcºÝ…ER˜g¾LPþú[Ý–lDÎŒr+ðûçÚPÝ”è{–hax3^ Ï1U}–la¿cŒDê:Ä]Ökvƒƒ·Þ83tÈWó×/!,cŘ ¢ÆA8xˆuUü™C,h0w÷×dõ1‹YaXøúVË[íj³(œq”‰Ä<¯ ä2- g‘×Þˆ™ŽåfLá ¢‚0xK„3h½Ð3…þ&sëØþ,Ö•‹¥…ÐÅ ò¼©bB“wÿÙ"iÀ'¾«“BÄ©ƒ•ƒš‚fM±Êú:…¦Ì¢j&ü—΋¦gQ5·ðË=ḨʚY Â‰1ÉC8GgÂpLMd-ôaø}Åä!8/‚fÔr)ô£‚ó¬«KáéRØåýó–ô˜#4³OlªÀÕY Â1W$€ èmªG3 DØw˜°P5©Ö˜"‹ Ïàކų”á⟛ç‰X_¹1¾!¨…oé¸vIíÌáf·ÜškȾõœ…b„ä86]5¦¸’„%ÕÚ•„1·LÜòÕI ~™¤"Ì_ ¡Ú˜V-- ïz©ûÉ̘`€sÏ£|œ툸 O»rj3&¸6ñȨ†,üfÆa.'D8¦Ç¹ŠR)ð`ŸXr܇o– a¢yÃ=” P.É’4L‹SPôM¦®3ƒ¨zFîȤü{–Ð誡}öbK‘pfAAK? 4A­/KÈЂ%Gœ#æ³ê¡ZZ‹óþwÝCЉÍ}œj>qk4UÎÏ7 )ä Ÿ}ù^fhðã @Ò.õ¡Ó •ðFt•¼k–°aÃÛÀ+ަSÌ?T̪LðÒT*¼™9†¿íxù Ê7s I^{uÖ¥®pfŽáÂ}sEÊI5ÊÌCó2 Â~?wé×»X®‡uÀÿùñ;æ17T• §v3›â”Ö÷4å´?+B96Ò8}¬e€ƒÌÇ…[y~f€0D铚 XÔ˜Ò5¤BŠ×‡÷Um"løa $Àòü*Mí,á¡æ™˜¼“8—¯ÍS'ŘŒêⲈy¢Âyf!®0§ø½Y}eŒp]@\ö«®PžY2JP6ë™M!‘3s -@ŠÃ1¬½Àf†Q¾aÔáïê“Ç™!B7¸y†e®¼|Þ² ø‰Xb‘3c„Ñ3~Ûxåº|µ HÈÆû úb“¯ö-øÀxåâÓ(ÉUóV!;ï( ÷Écîhˆ”G8ƒd©Ë9H  £m:㇂(Æä lYœul©8QÆdˆpG .ïÓ­Æä Á7µ‰þ'uᚌ*®žÙ¦v¹A“—‘]‚¨„4Füõ˜|0@]†w|þ˜jL ¡êYÜb½Š‘ÓQÂçÜ/·cØ!g!;†<øR9è—AÂ0ñ0&û]þœ¼#ÀòG¡-“,¬2dˆ¶÷ºþHn’S]ìn žÐP¢9!^†Õª¡…Çž ¿c‹ÏY­hüZ» }û½W¨+†~úø2àij«1ÅãäD¶*æQçÏÊ€!·*Äıpä”–Áò-JV Ô˜r0,ú}…ª*Nî ú»nø!ø¦<gµÂ.ƒYÕý]ðX…«•Þ¬ÛäsT–šqc|Tü :AšSsPR‰Û¦ȧ§ÀòUDË”•ÄTÄ¡€ã•ÑB?¯|eÓqóÿƒªaWF ¹*½QŸ¿v 0X-|ì¹üúOl‡x¹W,ãòqè¡Q[öÊøáœé¢1U7l•„øG/.&FŠ1Ùö«wºÕ[Ó WF!€Ždª‰¸2z¸øýÌ »šëÂ3$BϹ×Õuneì5p‚ “O4c‡áWÂû¢£Î+Ó Žx0Q8ËÏ)Yv o Zs©³geš!wÓIÛÀÝUPÍÊ4ÃÖäË©H+#ˆ~ÑôcÖ³ŸÀ 7_AôoÔá€b0¯Fe@£„p^D+cˆÐ–¿¬¯ag®~S†Ð!`S,;ëdžLt,|J8æ«1¹T4ã:Óðš–½5‹XõEšp8ÖÊm¾Ð 12£ñö–³¡$¬j7„’ýµ2ÑpFêððë[‰×Wýº}„]A•±kU•"ù=ûEÈ–ZY³ÜÉÉò’V¼ÞE²fÙ«°Ë‰æ“ë-k–Á‘/Ì^ÄrcDB‚‡=K­ÑB«7‚#š‚HW{מûWä@0èÓùjýY)¡ùã8ÄP@–+¿DõÏÍTBü¸)6#Ù[=1«ÃAàiGã£j«Ùï@åtçå—/.WT%Ÿð D ²à~Ra×¼Ðj1ô{¤ÿžGKû ë…mÞ¡,ú½Kõ,#†ìš…fZ Ù¥ý<`¡iñeÀ?q¬¸ñX ,³ .ÄøÄûTHYËx!Ä~?#:ñìSñ٬؂Ӗ•üœÜZ&¨ØÈ1òjBÿžJ4ñYž`à³bÌ(dóG3þ!­”ºË€áÅŒ“×Ù:Õ˜L7Ä'£5ó¥­dkV Ù#SK»5Ë!*´4î,¸½È!…nHˉ)‹ÿ‹R¨æ¾Qµ0Ë?œ>ò÷Ë zBÛ/œ¾Ç_¹ñ‹CLUl‡¯ŒÌ3°Qn Ð-€»¤[† ½<Ķ…a?¹F3`ˆÍ‹]²tÂÃD)tãIb ¶nc(Üf!ù¡ãã¥ó"‡ë’àÌø‘Ð¥ šU¾!&ý?Ò-¹ ÝpÅŒâž$æe+d—Þˆ!ð–QÂJËXá˜ÿnßšrý±Œ’vç/±ªb)\áëÿ£3—ÆvV°BbJ¹=A–•O'c…`Oú–âÍXÆ aGëµ£¸”ß­XcÓDz£ÓSë`UI☠ÂåÒ(• ’#VB:õ*-ÚäNJÿ- -S ôEðhu‰4HÆä"±±_#&uS}Nf úÎaÈ9aINÕ±(’„‚%-Q‰ k¶‚(¢Ìý ÒœK¡àfUŠBÈÚŠØ'•d™‚8&Yî/.µ+îÐH#ª…ö·ü9ù\ÀªÐZ¼¿K±ü,cˆDÜÒ©‰xyÁ(‡äûP»¿*O†âq¯Ü>zµe ‘fÕBTT£¯–1D@­ÈùE]¤X¿V0Ä·"€èNÒ½Õ:8…˜Ž†a#4[ÒÀ2†èkíÇe®*¿[Ö$†Õ Ê{Nnù9iø•S€Åv¥¯ÀE|}3Ïø¼÷¥˜–aÄC,]Äñríœriäæ’ÙqjL‰×zDÔÆ?é+j…»àaøhÜ2ŒH$Û¥J2´ñrLÆ’ ueÎ0R—¥eÑB‡kE;ÒrÌ2ŒÈÝ †Lá©O^†ÎGÄLÈ1…‡z±ØÅ%²w‰QÜr*À:{›I;rí”,УFu`M[Ùýl'Z&b8ã£.ˆ‘ÉõU•ñIö£áŽÐ¨1™`t_\Ãüg#Wcê9à7±Ÿ–€ÌÍ´ ‹ßÿÁà±WIX!-D+O¹ âžF5%™Á–¡ÃÇ qž—‡r ,tÃ?~‡6RO=#‡ëzù@KäzËŸ“©ôö½lÝljÌÎÈ¡_Þ(©ýd§¨t·ÒE‚–ó£öcò2ðå  ƒJÄ·3&#È+P^ãøýZõ’vÑ'¿÷sŠl›êÖ·3xHǘ¥ƒž·+æöÎà¡ï1ð”Lré\´‹³!Äm¶fÞ …eì’“Bðõ↴ž‹Õ³Û§0mÃüŸ%¼Ôo.6†>£-b:†éjLn'û!F`7`Ý<Ù%w_˜^ÚC¯Ù.¡(~CñÔË÷:EBÚ=KQ.¾zà¥éÊÎx!v@8Ì#ᆰ¶ß/ôBÆ?h L:e±µ3^QcúU ä•ªÝ õÜ2¿ ùÚ»1¨”鹑ÀW”µ”Y d%ù¾.W Çé7j†pÂP“Pœ  #¯ˆ½v2PïÌ1<4l ì›~è¨N÷ÎÃñu?ÉBPš]0Ãq}œ å_=¡ öX·þa8÷È%WX†^Ù¾4ÓÝ…d¸¹’ºþ´…Ê.ˆ!|¯ƒ•ÎÒês2b'“Jub¢.á;#†Œ^¼R&Ï‚YÚH‡T¸Xë)’Àž 9ÆÈK¢é¤þ`ÏŒßN lÓŠy¾gªCk¢ì dPAô{&t`X°Ça!‡ü‘„±ðja”*Ÿwñ0Ħ 7ò”ÄUr½òš°êÈ¢’y¶;ã…Áºï'ŒéßPåó^…e„5.T(×"sPfwr dèw\¿Ž`ðIò.!X¿¬Pëm™º dè{õ ½ æ ‹Ø1¤„—½ï$»+âÔΈ!y#èi¦ÅÐÝ«¨} û‡œIIÚv Á´ßŠÜ¹&ß+Õ!ØþëœÈðÂmårè‡!/h)åÄU?CÒY .o:³zÕò›ˆNgôôA\dË?q?OÉfUµ]dË8™@IË›målÀš¾Oìe.åΰ!5ÏñëÅSS&vá ²Å¿ðp–ži»0û&™ózy<õ}q—l”‰0 }òõˆ2nH` ±v¾—ë Öθa÷%º`Ya­jH&:=˜ý6ÝíÛ6d‹ƒd˜Ò²dΰášþrk°á@È1ùš@*Wt/×?® bI²ÀúÊ‚¬—û ž¬¹×·ê(í"\¦¡¸pEY!«‘¾}ò×ÛpµÛ—ðePþÅýrWÈÐ!·e@ / 95¨„kR&Ll´Ì85(¯úºh‹/M*õâeðc`øä°…‡PvÃ%ñ Î"QN]¾;xýËU#\Ó¤KÍÎè!XCGÇ‚ô]µÖv‰cž˜‹í#³ßwFy87dÅ-P5¨Ø O¯¹mLâ.Ô˜Ü`¤y¤ЈP[p†ý¼;ôsÊ…š¸ ò· Ú‚)¬èŽ»d1ûÕ‘ ôCÖ¤£îŒŠ}ž°IßYÀ¼P² ¨¥cª°Ú}‹&wH¿làV¢¨D;ã‰7‡°«H)•ãÁ†3®€rP bæ:'-Jny¨IÌ~•Þ¸w.# C½¯%‰ûNHô6y½)IÌX ‡gÒQn¯C/8±B'ë IÓØ]8‰8L’nnûÇL䂼]äó‘ÒÎÈ"®M‘V6ýfªªáÓJ»ÙO¾N°» Ù>?­èWUþ阆Šïv2'1/'Àý“HÄ)‘)hõÂ(­w©\<%2…š1zPžä:š/8ßç` ÈP…ÓJ_Á_TîáÛÂRŒÉË`#Ý]#ܺÕÒ>™–èßlS4¡b“Ò§¸ø&‹£)=À)®‡—};Ò(»4 ;gôu††ÙÔ«§Ö­|= 0RóV\mpw¥(ŸNÁ±÷³„›5j5¨ä¬‚|ò#·/5&·é€ðG×L ©rvÿ=„xÎ!áÿS<Þ¬o9ÖµÖçR"úBVÓV£§„¥ÌÎ8VËØSTÌ#rÁv£Vxá)*fàÒƒÞ_"u8cô‚ö§Ÿ³¥ ð¥`¼œ=¤Ÿ#?§ØøEP䓪gš!FЫ‰Ž›ºGÅ©BJ\¾ãðÖùþ‹¢”Ë„öiø1IøóŒr(lÜs_Øz)†Ç)cloƒËÍ:#Œ~8ôM_,Õ>ÅŸÉÏÇ"€T *èRü"²ÎQ(ÊTÄ«$Ä‘Ú&+ÌS$Ì€~dÅÅ]¡íg4a¢2EØ¡¡¨AEÓ¸F´§,Ue·vŠˆ™Ê› ŇSî‘Ëü05’jµÉÇÉ@#¦ì+˜àlб ÔH÷ ÿ:r±$µ÷T¨ñÀ’‹0ú'±ãS FRáÑ·ÚÊsí¨ëÆ™?t®Ú)Pã v¶Á÷ lB=¦ 5ú… Ì<5¦x\ÐßÀYñé°Í³Š€…ôÔÁ¾ÅåFÉûR]Ã)æNŸz¬ÂK^#!çöÝ[J •Õ]{!á–ªÓs¬®¼A~–î¦+„ŠúðŸ¸G!?§Ð  †êu1&ß$É-£us–ÜjL^ “,Tßî”ÕE7¤úE¼<2jLMÔ¢æÁQã<™}ªÚù!<ídd™>]‹E"µ_ 4ÌÕ\1bÔv¨Ï§ì@œ¢s~„±QÐ!—UsAQ߃ÎYÇi~z_œoaFË)6X~ðC©G¥&vqH¼` ~!vÖcr_:ºª(ó·æ#BP\8¨qOõ[îqi4ø"øûªËí)Hã& 3¨H W3WFRÙÇÂâL[Œž4bÆÀ5€0Õ%W\ÉÀøAAšôž‚3ú&Ä¿_×éPç”δï'®F>ƒœº‚. Áq¼ìIöÉ@#ÿ;ßÐx>YؤÑBŸs{ÿ¡¹ªAy9àzâuž4;·Öˆ& TA6GÎ-„Ub'| |Ñ…ÌŒ4úIçOC [ŒÉ„Õæu&}`Âò:p‹È1€"l_†êÛœ›ºÓ-RÌ ý˜$¢ŸšÇ|9éµwÉD?·ôHyÅ«7€5¦¤rÛâÒ6d¹”aFˆm Ct_C‘;N±IìxµÁ¦;¦NÁ‰äãć峕 êyµPº‚ÞQVjP=f¯¡z–ÎÃ'ƒŒ0v‰äâ|Ü*SàdŒ1lc(ÐÁ÷UŸþd„ñXKu¿W¸ëŠ1UîŠXÑÿ- üÕ˜‚8qú¨¡ž$¬ 0.¬96îKéßÇÜ 0¢Žß1exï­Ñ*?\"ú˜ÒŠï–h•þ°„™0ÛPv3ÀH"%v©ºIÞ 0’\*º8©w½…¸cyûA·âŠ—áÕ³_ÀýÖÚ¢/­¬­no¸|{Ì9©Ôw7Œ^¼Ñãñ÷_ÎA¾:ø—# ×ü.Iü·ŒZ!ÙhìÕó)N‰—þ)Áìj®3ÀˆçŠo^™lØÜÂc„€Å)ÜPتy+#(;I·‘m¯˜Ì7CŒ@^DäúåóÊ0â[ˆŒøE.z"S‚Ó·—~ƒWËÏoò”Xª›}{!(àœˆR ã{ùsÊ:ˆäÞ ÿ*œèfˆ‘æ-~ ¼z¦*¿›!ÆÁ¼«:(ùf„‘Æ%N¸‹’^õÆnMY!Í eOÔ˜¿J’¹a îjUg€ñÅykh‹Í›ÆŽc^—&‰œµ¢~_¤Õâ…¨·PÉŠVîßc2‡Ñ‹ŠA&âMußß#‚Ê…*(?f–Í`“2þüŽ‚¾X)\VÚ½›ž©‚âf|ÑE–ÆOžW^Œ0~І¥¢OõHôÓÁ´Î_Åê¸`ìt{G'^`K¶Ò…¹QðD1&sxo†ý{±S¡‚x£Æäe`3"¢7Yù{2º¸É•^0»Ûò›ÁEÃC³f/·´_¤/™Kç-¿BWùÞ¨¼t0`x««7¢Æ;b=ü’Ç‘z²j$÷Òo>¨Ay9™€·EbøÔr(X#˜{¶¯_úe5S°FC–F‚9fJ„òŠ:6K8àǽ¯É›Ø/¸Q˜Ó½*†F4ýxüÉ`WƒJ€êGñ§¿L5ãç²L:ñ”Äׯ×#"³_D½â©ô–!FÎD0ìØP6˜½eˆqícgŸbéàß[‰u†.¾°øöRœ °ðÓ˜uèjÀX¼&&ˆ+7C¢oGö(®‘Érh>¸w3–ØÜèg¥ÏñuI`dDjŠÒ¥·b³H«Ý— ÎÊÜÇäNt‡€ ¸Oêï»ØzB×ÂÓdcû”´Ù«êÜxÚÈ7dµ­¼@AÅÒï¡‚ÜAZõ1%•a ùãVüÄ ìC2? Ï&û@äøû¶†×RYnD:ûÞ4¬‹[©n›T”þÆ‘Å'¿[æ'ñð½4ºTr¦‹oŠ ÄZ4}Õ˜â›BËy&'‰Ø;ñÊýÅû`22…¼°·‘hjþÅ`¤C\=⎥æ÷°v\HÏíˆ{ ÉÖ°ÚÌK>*8õp2ºYßþ’úïiŠ4D¬rš5?g¨Æ#ñN±lh¹ç Ü|BÄÞâºéCRÓ‰ä8yõZªâ\%Ëc#®TcJ»@î-øŠ_ácŠõ.´j•ÑZ¨Èð"š“|#ÿ¨#Чü{ N=öÃä–“áÅé9èû©IÕ̲ xÏý€¦åçDÉà…J9&õ °¦ –Io]$órù‡N{HöV2Z|wï{†·È5ro…«¸)BÝ@¤£üœ"t›¾p9ØKJ¡)Ôóù;{\°"S-„Ò‚°1Œ¥M`¹ì€ù¼Bà“î“ün™º<"rÖÊQ~ ØåE(±ž2U»‹›/À$†ÂÀܨ¯Ô˜"Š7è—0æ=òð)°¢¡C$ ’ßÔ ?¤¯/à·Ì%‹ª *bÍ8P‚pª-¡È ýÕ˜’_„r[,¨b‹.,PœÔ˜|I`Ÿ6ä²~š\¹¸ ¬haãøÅï’_.Ÿ ™ÁŠó»«`erMòí”|yŒÂýjª¼HÁ(ÐïÕ ³+‘ ùè:T—ÆY|ÁšËH¹–E茯¡m Ä:WW-t »¹JT‹-Ž{¤Ë&PEì„3öKZºÿ9UÄ-¸œ*ˆµ UÒ_Uc2KiRG&¨4—À„4ïöÒÑ>¹)4§ê˜PÀý’&Oí?Í÷ãçeŒ²±À//Õ…úÊËäڢÎWZ¹×Cc†Jv‰Wƒ Æìµò™Ϣ ö"~‹$\r¸b«FDicjˆ~ …LcíRa¨ã»~tyT.$·í¼¥Ì—Á8HƒYD^yd{øKȽXÞ2º¸"÷;ß“…zÃj¥Ó¼‰R«¨„?oßNÚb{%($hZÓ˜‹+‹¢ˆSVlªŸ˜PPF1¨À‹‘7xX ˆšîŠ/ðyß\QµÊs¶â‹qXðÞŽ«X$¨6r1è+CV@!©‡áŸÆ„ ë™J­Æä£‚Íñì v]|eȃiÙ•ê1|q¢ ö­árkH8ÕHDž1ŒÎ‹Z~R1ÍÀ]‚î>·*Ñ †ñT*O^qÌ»ý7 o ežˆ…“$Àc¨Ay=,Ü ±1}D"ËA`|Ü'¢ž6¥P¤3›.|¾P ª]õh3—‘&Ü"wã@ÒTC2Ä4bÏo¼IŠÂ}(æúZØ}*%>¸q¾‚h ©Æ$ºòª rA@ÇHeÚ€Je ëÀ‘…Š·Y¿‹|? .­/ìºzY{¶]ôÛ9©à>¦N°^ò\áãR…@þš|—èÑsÁZß÷1k½¦¹@8÷j½™êÅ‘\+ ‹µ¬R™—lÜùþÎáçýÕ›H/aÐ>;4WlšÅVß3ÌH÷ Ic˜)Lª*#]4,¤ý‘6åXÄ¿òžM H§µzL.Ñ!ñþ\¨ê¡öÚ|¢ãã»Üiò`í½”Ž°Älât¢Ô¤í¥1 ¢>)r£+¯F¸ìù2åup$âyå(PAÇ%¹’;¼×ªjñôÒ‡ IV4ýé1¯&€l;$Á²–룜 ‘_iá²+ß Q‰KP•Ƙ^©A¹ó@öÎ#éûµzŠ0Úï^¤Pº®îy½ p9ýè޾ϩªïýÜ­ª‡%‚6Õ R'Ä‘4q {òÐêÅ~qB–´ÃN¿ Ÿê£Ô ‚ÖòkÛUl,,®òkä냋<±¤S>¥ :’鋨—…¤ß½YïÅ2M"ˆ½½ž —Pyëu\Xù>ØÒQ݇T&ë¾°MPïxH_º„¾§6TùÕþßRø{ÓÒÿä|ÿÉW–ŸÿÉWtnßÒ¿ÿd|ÿÉüþ“õý'_ý^ÿ“ïÙ]ß³»¾gw}Ï®}Ï®}Ï®}Ï®}Ï®}Ï®}Ï®}Ï®}Ï®}Ï®}ÏîþžÝý=»û{v÷÷ìîïÙÝß³»¿gwÏîþžÝý=»ç{vÏ÷ìžïÙ=ß³{¾g÷|ÏîùžÝó=»ç{vÏ÷ìÞïٽ߳{¿g÷~ÏîýžÝû=»÷{vï÷ì~&Ôö~¿g÷}ÏîûžÝ÷=»ï{vß÷ì~²˜ÂpòóO¾g÷}ÏîûœÝÑ>gw´ÏÙísvGûœÝÑ>gw´ÏÙísvGûœÝÑ>gw|†©ú}é{vû÷ìöïÙíß³Û¿g·ÏnÿžÝþ=»ý{vû÷ìŽïÙß³;¾gw|ÏîøžÝñ=»ã{vÇ÷ìŽïÙß³;¿gw~ÏîüžÝù=»ó{vç÷ì~ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]m|ßÕÆ÷]mü¾«!w™¶‰ öS1.Çï˦§P|¶Á¦Zåã÷eî?ªIRZ:.úSNúfð&0iígÈ~Úx…[¶^ ÷[BfUWqä>1–¢P‚îÁ—õïCfnyF_•\%%w˜%œï]£íÔ|;T:³>[á\…Lئ¾jÐçCŸ¿¯ÿ­E ÅÒ¾W(}h~þþ*þ´WD…üÉ¿:NixJíðN”SÄ'ø¿èÍ(·Sù¥˜ØaÀ¬5¨t;æ1¸fœ¡Búü}QýŸAÿ?‰ ê‹Ë,]áöê“EF™¿o²ÿù1—ÈÊ»"5¨ÏÒ¶ÿ ò8frPz÷ÇO/ ¢ùäÊÏ]áFt!;§‘d-Ìßúü}ÿ»ƒ#ü`TŸiæ¾0)8àM¡e+ó÷•™|ƒhÈøG–VŸ¥1Ü–ùnF¤XxÞªUW:Ã'WŒNý¥–d„YZÃó'æ‹ …uIkþ¾z“½JâÇÜ a&VÈôóB-9oFwåˆßgí7»‘|Þ•!“Kúáµãm7!õ!yo ÷.´E]‚@»üýöaÐ~}ç…®Êó÷ÿ?ärPúyšr=ßùÿóí kœ½‡/ZEuœ¹+Œ(~Â#q†¨1=MY ¼H1Õgî O¼2QØv«Wü7jÀóŒ€]‚©QÈ×5·…gÿ_º\‹à<5¦Ä8ïÁ–Ã$9yÛì Z‘±Ï”D±Í&Im oÅ@-Ï™VÖ£C`à f3+QÖ{'§|»W¡Ô}f!Šo§þ;.éó2`ÕßË`mÔ $Öst©!ùtaÅЈÔQµrŠÃ -ØE ËeßQcJH'5"@Ž'¹ýf!ŠßØIˆ¾„ý*«Œ>W* q›b×jòéüFHðJf÷Dª,I ³hP|¾8O'FLJì2#(–‰k8Éíó7 ò_Dk³üI.>J2#,Åý7˜V~¿’/µ¥¡#P§°‚n%%üôZá¶ÇäÇä ÁÏ{îß”Œ÷è©N«àý$¤*<åôØg‘à‚ç'¥oßoKiì,q|Ë}…‰öÖH~Íο•ð¯Å)&,úÌ¢“'û¼{tUV$'“)e‘ñòÍ9Œ×„>é?ËA¿WB‡GêÇÃóEô”Fa&0qSâçÅû‡w—É`âÄ½È ²nä+Ù ë‡Qù¦ú«¥{ÊíC–‰ï9Â{ ¯²4~Y ««ûV¢ÞžÕÒfà5$",’B”äm(‘ÔWÙm䇪!¹dŒ0#?qÐ㫲geÁ )óFŒ³šSM®.ŒtŠ5±¬ ,úKŽYPÔhнЭ V Ï—ší÷„$Ìé|Äû%s#,&šBÈV½xœ£á¡QZ ÚdRRò¨Ç“'þsÂH4têÞ´zº8Àa|yÁxäTÍ3‚¿Ž’é¬bkÃCñ¥ã×Í©¢|LA‘ˆ¿á¢E^ïRçõê DZ;¶B¦@Ü•aE¢Ëg‹»ÃR‚ÕÓyÐ&v|›ØêƒØM *å!xb8ûUEÚ¬ßÜXjRRù©%jAá¯y²#ÖVá« Š”òÇïu†¦|*0{eÅ ·îâ>… j#]WÄeØ—éS7«ÀŠ?ãyÂòIrk˜„Lúî»H/SºUD'²aTìꂲŠè¤Í†÷rÙ÷É©öúUT'üNx%ÅÁË7ÿZþ)OÂþ«8ØxY€1؆“¿?/ÌüÈhšçJ³ •àÄI´/l;ÜËþ>ÄœˆU…Wl‹:Åx±–©(o·ù“a¨ÂºÈÍÈP“^æÖ3= çZgÔû[!‘–aEˆ»¾à‚ÚúeÊ2]¯`ß´¨zF–AEö:†þ=‘tÒ-ƒŠ„Í.PB?ä¤i’eTqF÷?øcê)(kîö krÕ˜²ÂTì›,zìüª¦ú†6R…ˆ ÆY0š†ªxmôü{àArÌ]Œ7Õ˜¼'}øó‹ÐäÞkN ? öæ[!6ÒJÀ˜hr%3Œôå˜t2øGøúia7ÞD;—÷‚ BôçCËvʸ ‰÷02&B.î&¶…•™ ÜPÔ™bMœþÊYÉQ¹FZi a%YPŠÇlNĦsÒç¥ß­*`+p" è } 6‚BH­ ‰ÍËžŽ!w)7¼'²£»é¿h>=¨@ÌÈ¢ý‚è†ÿ»| k>ŸïrRAtŽå6YàDP˜Gò¶\€ N´>êô„Ž$UÚL%ÃðÓ}’|°ãïC–‰ºwûYI»S-‡Ì[„$ì "\òÕÑJ4Ÿ?lÇQš,ZYýÅêÛˆC¤k%?¦fyµìîÈŽ2;5’¯ •Õ_í÷11OÐ}I7 'Z‚Í}ž4Þ­ðdKp⤇6`iûì©Òܲu6–˜3MrK°?·b|Óô©PuVvÎö‡èsÍŽµ£>c2) “ÛÍíAfX±Íö 9¥a¬0h+i|p·?{øu©1…º|O6ª¥ßµ )Æð¼~èg5&-”F¾óú[zdWÆ2¢è¥Z–©\¸nQÄ[²]¬ ¤óš•>Ä&ÜSýšbRoa Qd)ã• cJVô¿­ÿqi ÇGê£:êV©Š^W(>Œñåµf—ãô5´t5æ÷F`Ü` !kUp€ešâ"¶Á¸mmTo%€ÏŸâl1Õ‘¤$û-›ýn¡Ws›äÌY1ʆvé˯“¤B¢Y ¿Û '¸M¨¿“w‚KÈ/«‚µúrÙ%;<œŒC'¨jÌïã`@Ý^íØReÅ"Û׎_‚îðNrì$Ju›ù…ÓKFÎd‰žØz<á܈RcjºÊ¡­æ;\—O4CŠÓˆžˆ6áÕ›aFýùÒak?¹Òj/HEpgÑÕ– ²e<vÊEÅ1#Þ@ÉKà†× R¿w找„]à*uaM\P)üí¡“3d‘ÀÄŸ‹E4Kî'H§ŸŸý(cÄÜ_:!o…=»Ü§3”è;;v3\ζ®Þo: ±:ë¢ÐUCÆ^j0C;…=¤Ÿ?jž_j0÷hâàx¡u–©‰ðœÇ {r£Ô˜Ü^ò2å†þ I1&Ý_dÑû¥¶‘÷­&úåÛ×ÅÑ<>RŸd™›¸‘qì0:—í2ËX¢Aòuæ…ÄâH+vØÜgýæB„Ü”¸Xá˜Æµv*FøÎBgÒ´µùŒH45&×&t;“xÿÎx"ï%Þª+ì:ÄÝNŒdòEDqò«e4§êèÙoU~îLOņ±s,Ê_1$Wë‹À]ɘÁ¾ým$w«E½[. n$%øc"UCJ®Žß BÌby¨YK²çкCéh¨ôò=JVv÷=T¾3;P¾5ùÔ$(qŒf0Rùx ’xpP÷ßâ Ô+=9hæÃçðƒ|ûE  †‰#,¯w¥Vi¡%"\Aµ;àPÈ]däò"ŒRgvÊʘò½Ü¬60ìT¹&»èQÓÞ±£§+ŸO·‘C\ÆÜý,1l¦ò`ð›l4/ɯ¢Žî !¢r¸”mõ‚RòX'üôH VcR…ˆ”…Ì£‚QyŸ»ž}A2B/¢†òÉ ¹3d,jP®ÖËöºÍdGwgÜÐïÈ l WÅ(Û³Š¹Ái­©ûØN¸!‰8L‚ùµYò5v<t»À³üR¢º{}#1z¸Ïs7U«:±ýF5)zÔ!rrØ"¬ïõry%eÛ:ÄÈ.|KöS<ÌÏ|Ý~S`½©¾öNØ¡—ýïG0& ½w“šß«xO:±W•2Q)ÿ´7$m—ð½׉ƒˆÌ§%ß»‚!"F *ã€Ç'ß¼,Ä Á#ÂI’ E4Ž,¶ Ùªg›i‰¼Df&u®ÛNêç…«a‚ éò{åF® @¶Qü«ÉÎâ^‡øžmÑ‚V{OÂG¨Óúô´¸†¸©g‘ôÐÕ+” D#‘bû¹À£Q7í]0D¤ì` ©†|4 Cl¾·Ó}¾÷K™ÕN¢Ï•—b‹Kt‹!©>ðz«lümP à·kÞ#n«D]û¦¨áÄ™•‹Â’S~L^^R`b¾2—¬ªŠÌy‚ëÂ4vá$bC ¦(ªÄ˜´HéÁÄ×´ä×í„ Ò0%MkîˆVCJV;åé>#ôðjÚ'óâXÇÃÞC-›²ç{Iv¨¬àC«A%WÍØCAP÷•'ãÉÍf¬ðÀQ9…Õõ|—½«Àïͨ–åw+Ë€š/_Nµûv}H¢U‘®ÈB¬€ˆbô±Ø’»t¡%ŸÒ,eMÉu}s_U+¦(¡NRCÒ:À”‹Œ”KW!U»¨œ¹_¡3[!òTc„ÔbüÝ´³ÕT'ÑKj’ò¼pƒ9*g d-ÒŽ ÆWk AÚ· HèoÐBÿ_)Ž(‹sC$dV Jˆö»PvðAS_.S#ûó€#H^N’8àhñÄVIÂAI„jŽûÅô›ýV,¾(‰ø—AHÌ—Pûå;#ag6atò»%i9œpvÆPäÏpDߣ›ï£«œÌ»ÝG «~ð×ÃE-ÐŒ#âalÝ/sZ ¹³_"lAxÃn­ŒÏN+¶Ñªó'`MÕý§•ó…™Ñ rÎ"]aý'ȾiÀ;‚ÑÍbPcV]ÓþCü,Å^B½¤§àˆóœË0ƒŒ”>1¨ÐÔoÈ;ŒŒdU¶œ$NÜ aWúö. ·SpD¨ÓT““••x2'-þüŸ»€la‚#zùêW LþŒä—K8"¢ÁH4÷_SUå)8"“p¡¬Ij® #Ñ·\JÄà§+|ïdBâÄ֒ͽ‡|@HÄ•eLCŸDÕT'‰\{iã‘ÑTr2qù›Twò‡‡~BiK »pžª|F‘/ù¾÷„š«-!Áˆô ýÙô‡$Ч÷Ì @:£÷Eàd·œ™ Ø‘ÇÛxåmþd""Ññ÷;¢jaœ’§×0R}Ô‡W¶ËÎÌw¿q*’)MãN‘e"ér]'‘›Õ ±¥Rb½„§c>º•SP(©aþ¶þ³þ}ÐÊ'!‘~aXÊ·;QŒ@¾êdi6rVõ<èDf‚xà “ß®`‰”{P¶¼º–Ó]ìA_±$öÚ¿M…Áž&"S÷dz¹Ÿ>Ù×=+óQñ‡¹H_\ö5O†;Ýð½_ëä˜jƒ°›Ôt£µ'Tn;//f½,Ay/ÍÎ|Ä×¢¿y~…Ä â¤èoo#þl×Rô S$Îë3ì²Ñɉ(œÄ  »À-Õ˜jŠ‚2úÈ2·>Å­øø¶8ÃM$wª0±¬f¡íwâåûÝ–µYV:/ßOð¾{\xä[kõòà÷C¨Á$›ªí!ƒŠ]IìõCºÒ¤tÆ®‰l½±ÍP5 í§•Ã-rÊ­¡z(âZ³¡1ùž'ߢ*úawƒºÑ[xn‰!™‚@£ÁÖg1¨!¿O~¿@¾5Ü'5]'cŠíIa:v ¦8p4†ƒé‹Ú„+‘êÜO"/H8ÅåDg~²¿‚hú(Ì–,þNÚ 0®ºsÊWçäóámîs[+i”{¦è;8 NG¾§P§_Mý…ñ{ƒ|4§ž ˆ(ö¢WÛåªI€â‚1ïÛ´¬CZ¥œì˜ˆ•ËïšUíÉS‰?je.¨üjL"¡lóãmsŸ»CÞO:hÏ®…Žvv‰ÅŸl™hL4e6(¥ÂI±¤†õCKBÙ1ñPÁûc=ÚjH^E) 胪3·Ó[À¼s åBO¦÷õ޼O±L<Àœ\ }ÝHAßÉh"»kád8L.¶‚&.ÖÁ„‹ÑŽ”AåÒýùâRc2š¸6’¹h|y Æd2ÂuüË"ÿGMw1Ÿ}¾·¿Pñ«1ùêèkÍ_‚ƒÕ¢¾9Î-q,¾j°“ó °æ°ÝLL$ñ…4€ûc£^…â›8âµE«é©[æ­i,(fš«ØNª4rrVß®—é‰+ˆ¢¤>ݹËÏÉ¡ Å•b7"g¡à—3ÄKÿþpò£òu‘¼,üG÷ºØ©AÙiñç8_Óµ–‘öL—ðÂj*5ð-ôÄýŠFÀ’ûH}â D­Šœx39q ‚eº¹ª:öy³aÁ:¸3øbUîÍôD¿[¦6ËwUIˆ½3·žÑ]Ïý¨°Mêßn7O𠃘œ–²œ»â„ÃùýIûÚêpgᦺ®/üp¼žQÇʬ’÷/¶qEóZPÎßïía¥Æ?õl³¾ÙÿòÍ‹nåS—Ô[¼}¼Rµ¸³U"ùcìq^’5Å«¿ W\Ñ9Á噼ÔÞ•^VD:£–SC’U"ø£¡ƒ””ú›Ø‰GÇK™è÷ùùÆÐ‹ï3á J9z ˜8 ž£ƒ¤(+‘ÌLìãOݳ“BYHõbY]AYÙ<ý¡¬‡ 9&7ž!¢4¤= jL:ô4¨m+·Ì›X‰c“×ø¨®M²„nvKÄ×á&2Wñgo‰d!ƒÏß4º¯ú2sˆ8ý =˜È¢å2H¼Äô±áœ6ÞT7á›ãXЂ/Rõ`*dã& ‘$ÛKÐPE›’Á rã3»†Üœví/xñnð0.y`jŠˆåÑÿ,¹Ç‘3½ÿ.`¨†×C—¢±[ü}÷‹/¼AŸÂEo‰a9Üê×^8ómÅ4¼J„1–žÄ+Êçºÿظ¨³µ¯#Ïàê™èó|!A¿Wªy8¥»pÀ]ü%ò—¶o÷âzÇ»ã!3½÷ž*ÓôX4E¡”«É+,ÅF¶I$44–ÜK²yb~§!7óIö=¥½6¾Ð}°^FEëì;‚Mbv©íº)Œeþ˜¥À­_Òáf`Ñoœçàù@Í,ç /Ÿgÿ>…ªYr3KÚ%~iˆ€¤aóÍÀâäÂÍ ‰¥®êNÝ„,ÎE‡O’ü˜b¥ ïjØ&ÿÉ×ìúŸ|Í®ÿÉ×ìúŸ|Í.øÇ÷Ÿ|Í®ÿÉ×ì"úþ“ïÙý¼«öyWó?ùžÝÏ»áßò=»Ÿw5ÿ“ïÙý¼«ùŸ|Ïîç] O½ï?ùžÝÏ»è÷Ÿ|Ïîç]m´Ï»šÿÉ÷ì~ÞÕ0„úþ“ïÙý¼«EÊçŸ|Ïîç]`Ðï?ùžÝÏ»:ÚÏ?ù¼«áÿöý'ß³ûyWCÑóý'ß³ûyWó?ùžÝÏ»ÚhŸw5ěߒ©èÿ‹_˜T+Ñîï1×ì^ŒýîhªöòטN(fôˆ¥ü{cf´ÔN†Ô¶.™©˜¯V±)Ì’ñÚ Ó’ ½\þ b–w„ Tè¬}LfõAþ+-Ø®2s|LaA¯Á, ·üE¹¥ ¹‡òª †ÈhÕ.{R¨ò!5èû5û¼VŽ–úŰ##üÛuWYyäüC¢[xÓç V*ë߃ ö7Â,Hùbxcyqœ‹°¯»Q}´É… ˆÕŸ™WÈ鸥O aŒßÕö%ÉX½";³ úSÕ¢]ÑG-{bwè3ô z¨1¥3ddÆؼÏTz*¾ôI™ ¯EGV)„ãAÞb¬}•a4ö~¯øå›ÄÙ=Ñ(­dí‘Ó:àkúâDS“¥ëˆ©_h=Z fsò6¶±R&sEXÚ 6ù=‚ì냳ù!ß;{n 7œDø½£YÁàÅe? ‚ïà»ýòG"ãšF+Nذà #F<øÕÈ6iä¶®÷¹Ï;FŽi*ñó³ôá ÖÅç ~´ÜùmÁ+¹ñž_Þ>(³‡/îVèÚ-¨4>$¿Þ¾ùc[¾ Ù¶hyBΛŽ',~Eê»%‡’c0³Àˆl Em&v:ï {"ÑÁÛçN¥BàµL£H4÷ÛOª¹TZ¿›ˆ¤7v©ÌN(àyÁÃù$òwέ’‹|P‘_n«°—ÐJÈOú®Î²5 {á¥ñÆ T­ 1{˜ržˆŸÐ[^Ö!ñ6Ü·Ä/èíÎÿÁRÐK­©_À^%D'Ür7Á!ò©vXé>ÇHàıпŽþpô¬ñ ìóÓÕß…,%¿páÛ»÷െy‚Ú9{+|`bB0ż*©zq´Æk&ÜÃjKH&pËȃÁt8Mú§û Ïâ­™!¬¬‹],Ù^¬±ùÚÐb–!¬WÕO/î3¾µ7âD½r÷ýAð°ð0,o8nv¾ ¨e0?ól!ú`  '9¨¨‰ “‡NÍ)S1œð ‚-áÁÛ½dâqLD®”á:¢ê¬þ çôQ_ðì38íøfªQe‹GsIöЃ a¬þæŸßçû}®úšT9ã³üäFQSî(?&áTB%ê£>wð^3íŽ m’¢äýõaÇæ¾zè¹»ªA½î/h¢ÑÜÁ9£Ê þwÝÕh£Ò­aƒEö|ðÕÚ)váâN¤˜×¡‚RÃÒ-@"–#Lh(‹„ѧØm„(6ÈnòŸõÎÿý?òu+1v Žw謈FTOô·Òcþ‡úé,Že?Çí_Ÿ•‹9|Ì „[Hu±éÙ”Èu6âòöUnª>&‹¦_§±ØÀ«_=«’fç½OeþPi/>¦dD´ÖöCœP,5 ÅHæÌIàMxtA0ÄøóÊùuF4¾¾˜”#=žA¿†«Ç:ü2ò ±õâ6íÿ<$d8*eòîÇN¶ d#‡U5)…C sð¯|`9ê1âbZxÉùé,_­Ãùµ.®ý?¨€Qüù^yÖOð­”îj€ñø]£–Sö†¹3bd±yQ‡Sެ´É…H9Õt!_á€<|Ñ*‡ÈÑs`Ý%âŽò„}I I¢Ž…"¦|Ó÷µ‚³Õô¾D7œ‰#(LŒIŠOÜ›×ÉaJk[\Z¡…»XÌ#¤²D8% Ö/k…ª—‡¦ðÞ¾óóGžÃßûs‘Kf§ç?7É{ðŽ‚{ç0ÒDz8ð­PèDOÆ0x£’ °ÑÏ)Ç’H;úõspËZöºKA_ýÔ:À?Çêiø$ÉB Bs~7!¯ú-ÃÈBŽúf{Fâ±–îÿMž=Ÿÿ“5á¯ê‰Ì·wdòÉYñ?ɯ5¶þ…7p§zÎFZ °ÖÚ‘p¢¶Ýäö‚ަ‡šM%Ð!Œø÷^°|ŒAöKWÉÀr¿?…1l1:>YêUÈÆÑ÷ƒå[¼Ùæø9RÄMt Â’ÕÇdsH|ýbÃ-oÈR!¡pX‘.b\ñǼ"ZÃÇäàr„„ì&B*ÄÜ_Añ1#çpwyMÏŠ ŠÎ*óbz+°µgEÆŒÀ7wt{Âòˆ@¢ôÝ"ÛN`µÖ²#üí l8YÉÏù~¯“ôÂoËþ¥[„£]i†T+½]>¥h<ü†®i üþöj­°#~Jíc’‘Ã\«#žä‚È!9QÆïx´"ã÷èIª`qÊgú ã… ö Æ5#Š8¨±ª¯ò(^Ñ"D8_4†¢V +»:Øê|ušlOŒ–•84JÉ0¢)©ŽÑfƒñ¡Õa²4ŠÁ '•$ ¡~òQÙ»W/Øp–z ˜-mQªð¦5ÜåçäþQÚ£š":H,£ñÍZ­\àp¡ ß2Eì±£‚sÄan* õ rà\ ÿ]?0 §dÕ Ù)šx¶CB,¦ä« ÛôÏŸ?¼‚sÔñ[+’Ëå îù"©ä oÿw…dÎ5*¬…‰’ß„å˜Oìf(ΟYç¹m|„/•ªèûò¹çúO8¥jUŒâÝBÐ*yjàJ£ ssÚ‡¶mKS"È—Žf$Êñ½e¹8R²M‘¨€ï‹¬êF6„ó<3 6¼Õ˜"Æ%›Eç$JI~Ðg7FAãgtñ¸Ù÷*0j|»Fñfá¦v^`U¾ªnî&xUˆéˆƒÊÓ~¾7ƒÿô5¨‚ñ¤€¡¼¼y5èûåÎn,pý.|è1©wz‚LÆ\’k79á Ù3¿Û •zx—€Ã©}¹˜±¬½OˆÇ±×çï…ªú¨?…m–|ÿIm¿ãÝe 3Lå]öþyâw¯Íîì4 ÔÃ+‰p-­üš„+·)¶ÙÈÐ^³I‹#lŽºÂžG†öxâ$ÓßpñÚÜ(¤»ö )c–⯺|ãSIçR0›*Fþ^VuÕ˜™e(è5Bú°ŠV4’Qxvd̵ ‹yÉ(+PWiò,¬`y|jòÆ(¬:,p9šügÀqRƒ |è8áóæž,J2«, ÐK^l~Õ˜lßÇö’/½•Al®„RÆvµônY$¿f?K¹3aÖÕÕÛ5[†óéÏ‘Aôšò‘3¹5“ÿî/Wa©c{&$/è³›[L'sB )‘ñ\ïäö*\À|ÈïWžÆiM¶¯ÉNØLžW‡‹~S"¨¶ÖLìE¼ ÏZÿ–d°²Ãj ™’Ãâý¾Ò"ŸäMª!©Ië[Y¸ ÃÕWÇÎLͤ¯ ìO¸¶šädÐìÜÿ|zYĆ&?åÄŸÉŽbüß ¦¼ê¨ÌäÆL—ZVÊNŒCõ÷ =P8/üšzÔq9“ó±}u[Ëd}?“3˜*ÑòŚɊÙk¸ˆq&åP]Ôg2b6øß´lü£¼ÏýõIùu¡ìx LüŒzØ)מ·‘UˆwªjÌäÁŒe–Ÿ„Ç”O2axð÷aWNž¿HêEM»)ͧí%§®Úgðüù߸±éAYµ"å±Ì““Y0½Õíé],NÅ™CÝ|6 6o—º7Ì‘»·FY¤•¨ØNNƒß¯€AûàØŽP1"½ð?·“o4”W¼†TˆÂV>Ñ]J`tžÀ=*Á ~Ã#Ykrœ¨5¡¾Ý’ì!¹t2ÐGx‹—±„`›¾ eœoè¶àuÓ?Wcòf@z¯¯6ó Γ´¦YP¾0ß‘8=$ßbº¬:.7òdÔ˜´œ2óe ScÒ™Àkê¥Ì%nð(Üw&×e(ÈüƃØ]¾@)Ê óo,€ñB>ò@HŽËÈ¢nÛA¢ÑË D¹ù.è« a;™\jÌͯ=¿¥A‰P+§8.O8©†Ët–eµh]ùÒXåË «j‘q^‰ÓÓÍ¿™ù}$Wáºým/µd~ßåúü|ȺQ³–Q@r¼w¹-¨šE¶Ø·FÚNañófL`a a¤Ýê“7áá"ûÉ¡âÈÏ›…Ô‹¯Ÿn†BL IÅáñ3÷êÕLcÑ3a \6oZù$ ÖÞ ]a“1a`ª©ò€yä?ðuDjHæzl¢¡¡"Pƒç}ƒ„Ї¹d¿}fL54ô¯óL…Sò6æ]Äõ‰“ žF_ß7u® rÖJQ€Ø‚`µ©Òx~å¬ök5:„Û%Çwe–áŒPÕ Í­ªqV¦øMœÊ74Š4j1¦uZ£«1¢7/fmÁíññ°á/¡²¿Çjyðºð¶HÄ“á™p34_ß Ú7ªTÚ?í-z>ë}v:éÃ* ˆrA=¨.™ë›å·²·óä}ƈÍÜŠ³2ÇF\•ü°gRcòá ÞÔÊ\YÛ½RE¥#sW~·b¬`qHã-ÒäÊ,„¿IÒ&<‚§Ô ½²7²] +”¦åˆ«ÐýÌ_Îh]ø}Õ©¶Š—h:˜=ôχ”Ð"ø ó`?¨¶:×V%ú®¶½2$z¶IÙï*@Rüû£åR•×Ê@âðÚ> \#^r¬@Ö&CZ„:ý„ɯ–¨ßh¸ý¨ÚÇoä ]ß~m«ÈtÉ´†;Bm)‚ÿÊ8!bRºf>«í©¶á*1m7°>ÈîMETû˜üà” þþŒ'ém+SÉ€â`^?Õ ]™ ؃Äë++BäÔäf¬}y„_&Uc~e¬Ð‹TÜž‘Ÿ­¿[ ÉñZ=Ø› Z[³\ áÁUíºò¡ÎÌù¡-_3U£¬„Ž ÿžw/5â÷ëÿGz|ÃX2 › 4„¤zGÛWú”„_—¾ý/¢Ùº*VÁøú£AoF=Î"×¥/È{=ùAy ‰ÿþ®©JΕպܒ#„ñªžM¦ÒþB”¾j¥­Òן0éó«+@veþ×0Œq¦ßoT¶5ñ<¿Ÿèä[LÂ`R I-B‡³áq]ñ(VB'cô¿ý~'9ø«°סûMò 6êvàº\“ã‚QlbÐ,/èXÔ «UÉqòøSFû{r ßÓéœ üc² 9ðú… ³ÇÆ#?)õ 8˜ñuã1ÕÓYYÏ{"iøÁ`¼zrçÈk”;¡`C{C’ ×_œ=‰Ï>~™¸ ¿[IÒK׈ê.$v²€ÎŠ^ú“xC¨êÍm}áþf8þ Å"^IÐ)Ê Û€p RC,Ð7œ/P;¦„Y+ëy÷<%’KŽ)Ö,^l¾aÇ"MD Jå W.dÆvz„bL€aæ_Ϋ‚AòÝXçà±}jL^Ç?Åèö©-䔫_Ž€ï®¢Æ+.’w럤‰­o…ï*4ÀHÄmI½©K”BÄß2L¶ÉõÓ_¦Ü!çMl÷ä–Qh€Ûïb+¨- ¹”TŒ°$¡{î“v´¾Šç^äiùÃí†,W}½[Ål›Ó¯[¤rjÝJßlí¸®lS€çÊ¡o·Ï&RäN˜BòTýÒ½9³·¼e’ ¯GÆW}é²J$l||n'z]*‡/ß9yXŠ ¸2F¹œÔu¬%T×y•D6?¦º_sý˽¡ïáŸfüþ'€C¹ùï¸ì¨–¹$m·ì“­Œ 6ÜI.XÍxʰ`GABz¼3jj? ý‘ä§¼­$°ÏoN;ÉšßKwü!»zÑdcn]O¶Ôð½9ºõ‡—o§A¶Ùk©nUóë%öÁgu6±Ä±ªø¥3[¼û›2ÔZ´V)¤ûƒŒfýR‡¦Õï«…jákMÒ+­ª~½rj'”S~óR¦9–U¿\ïØBb¢º*–e¿ás†{½)…œeÙ/ $É„ª.Ÿ–Xƒˆ ‘–¦Ì”ËÊ„aúWó N9Å·°Äôu€×‚M¯8±ƒPcÊ’8ø$’eˆ[‚e°a;çû ×*2×Çäõàî熿3q{U©Æ8Q¢^ÇÃÒSì$VLû`áwá2ýn-G•Â`"ù²{4BU=i*ôZέÿqµ(ŠZ˜ ž¹þFêþŒ´·%¿Œ™—y’*fU,|ÉÅ^¡OI¨±jåçEÞCÌâuõ–VÕÂþrl’Ã}§Û¯FÍ:íÝaÛO"Uw€ç%Ö£‘²ºTú[µû[A ôkSpÀÔ®YpÄ5|,@/5¥¤}»ýYqû›áE…Ùi++¸áØcj_Œ›åïžÕ À_ :Gã< ÎY‘{…åË9„Z`¹jP]ßÓyñ~r+že |[&iÖ( Ô(îso×:mEWàXEòºT<]ý?2,o~9êúN«°Â-ô-òBzô»u“W+"âÕ‘„`‹ëƒúECŒ:/Ül¼¢ò%«äBÿ¾wãÊ5Ž¤ÆØwê…}§^X1ñë76..ã¨6‚Uið5¬¬½¤·#ipV¤Á¸îö8&üu5ªÞ }Eð­ÛŒÍK*»¾—¸Ö"šÐwXåd•Eˆ½Nƒ U••V4ÄáŒÐÃO3:5¨}QKy)à+S¾†$ì(¥`:b;.7«ú1—¸½ãr´å©Y4ĨôýÈlSt…wYÁ ia-x(”eÝQpÂiÇmjPY^&w\LqRÐ4+2â ºg ¾¨<7­Þú…–;ý}~]nEK ^€+ÇDå&`í;†ÃŠt¸”°¼®ñ­U¡¤V¤Ã}úQÅTq«Vœ8ËÆ ;¯¦ofK…ö ‰ÃVn“<œÐa#,M4³u%¨V(ÒN’t%¸ðä¼R’^H–|þèò 2),ÀNîáU;¬Á•O™%D–Ù¥=àsÛÃkþG Ò²._ÇSTEüùnÑaS»Ræ nÌHâýð¯zÞ‰3¸&’³Pô^é¢e‰3¤é›NZw)szK á9!g(‡%C@<¡p9ÅÈûÊ 6ûú!„¹‡"RÍXò„ax †{ ’’ðà‰§Æ¢û$~f‰/ˆëùò§É ·)ŒÇ>C2‡ÝÜI\`åð{^º^¨“MÝ=vVodq𨞒XÂ{‘ï9YÖò·¤]¶Ûõùò¯%{Õ;c€T­A‰‚  „¥Ã‘@Å]m!C²t8»wø§š:\v–_ßb5¼ò—ˆ×îY8~ |yu±·äbï,%FÒ󸧆¤Ç1)Œ×x6jÅ$)1fô‘nnçŠýl')ñÒ‹œ/ùÅò€åÄGŠ-X~³¼Àv>Húý.¦n;ƒ}cãYós÷;ª„Ûì[Xz”‘Kïh;c}GÇ|IÔ “ÙA0Ë}º±ŽR…ÏΦ€ít,ý*†Í„bcï ó­B'°U“â¾]}é£øÙÆ¶Óô bæo&MŽ9©Ñä÷+lñƒç-ndjLZ FÌ–g¾²¯ä£îŒú-vËïxÜMTݱ3èÇ;ê…DÃ'~+âßΘßD¶Êɳéw{¦*póµ0Ã\~ÌïµàU¹ÁG\\”Îb'A@ ?y#ÊOF$î™0¬ÆÃ I-‚ ôu¬D}v`'ê=Íö}Î rBL§œ³´:õüçÇ¥K÷É·E°ë’Å·k¶6ðæbõݲq`”Vtà<騲W¡†ô¤kVQv! Þæ4bzª YVE¼\~N. æ›—†À¬ ºÝ« ø­Ö_N?»$­ìŒv|›}9Ñå’ “ñ@‡$àX×eõ‘Ñ@|~Q­Bê•¢–]°@,¥‘!/2Qô |.ðrΠ|\ e킯†»Ë}:Xg ¬y ßâžÜ ˆ]3änzÒ2mg$°ã0BBÕ¥4=ä  ;Ý?âŒ(¨ÿ>èájq°ù2ÀJl'¡…Að1 F"ùäTP ÐyAmOó$¸Ðwÿ1†L–H45$íg^È| ò¨ ];™7ˆ[uúT­•“ÃN£¶h4´mñÉBb¿²‡h}£²‘=9Ú×÷²wùJê•>YV¼æó†ôã|N–û4“c‚yÓöQ§Pq ©½"9ÕEWìåýEüäÛsŠ®ÛvŸ²PRè1EIÈä7ƒÝþñH³!FCtZP©6úI¸!h™o›‡$!ÅÁ:É„ÎÊ0»Õ[Å“•ß hu?etz) ‘•Ó‘´+Ò'ybIˆ5-|X/q’!ûÚ@®ÔMÝWNÒw0/¿VûÍuʨ¦S˜­c4rçS´3ŠžÐëbò05R}°“ñBßývç<œÇß:9i¹@¾;ÚÇF6'£…DY,8<—9&£…›îÙƒ¶ýäÍàd´Ð° óR]¨å™<=w@j2ßÔÍè$¹"Ï#Çdçè$¬0¬Ô‘¬©Ù§p#h€ù¢g®jé“©ýǽ’l_ _;Å…°…§ü¯n(Ó)ÄÀ‡=ââ…¡–h Í©V^¹Kó¨Sà 3 {[>I-ƒ ¢%Jl#vc2`è…ûãô(ÕF=% 8\yÐ?.ƒ¤N ‰ 1œÑÁ6jLưM'Zîâ5¢†”T¡‰Ìm²K-uC:Ù€ðr9òâƒÚ£®'’=v—|¾ìñŸ rõkÎÅêZu2\è¯Ìƒ–æ§È–Ù`'Ã…xWB†§ÔQt›“ÑBÿ%`ù8ðy1¡¶d@¸^P¸7ò}†$ÿADâlvÚ2ïTiñm† ¤ºLœŒÎŽÒ‘o 9(¤áÜg¿“JÃÜ“s‚y˜$ÂÑ4¹<³°¸q96¬F|ÿ’l¨c¹—ŒÑå[ˆBÄ~ÝšÑélŠfwv) 9}ýî²Õ2È„ðb|ôk‚ß­Õ—ËÄA¿‹À–àwÉUàBŒpšßQuIs‚“àBÄüëàßx›ŒÈ; -Ä\P㡚a'¡…hØ‘t`7*™z'£…´tü? F…,rvvÀnÊŸñ>‘V-†d—?=}k kõS2ƒpy=l0Ì}Ô‡$¨6?›æÖ«XX§ˆŠgxútHÀ’Ú|N¹lLâ7J“‡Téä ‘@û@dÔë™EÆ$ˆù¶Æ…òʇ™%ÆœÁq›ÌC 9õ›uÌÛ½ö””À“åÅ¡’÷MÍ÷•å@qŒêöMšâ†^J ÝkµJgA ÐÕâ*²þq.”¨â‹ÙϪî’Tq‹#¡¿î4®²à½É‘°±Ÿ>r¹Ççøê çñ.¨•< ;ŒDÒ#X]~J:pZò"Ô}Q÷±›“K¼¨|°9¥¨ºõßOŒûsÐõÕ|K:1á ÊӆЦ~P 'NçòµºÚÑcJ:)U¤4Ì\äÂ.òc x?W¼¬Šjxst‰¿¨°»G ÊéN€¨±¡R|:Çýæì¿“/!¨£Õ…ù&[Â~¯ä…NWÝG®å"‘À–IWý‘f¤Æ|*Ko*Y„Ml4ŸWj'nM(~¤9Gȶ//õ( §›Þh¿ðôÕ‹\8… íGN¸†«1ŇŒNƒ?øWOT> Á?®Š8Ý(òëýª?IN3‘yàEwô&å‘mûÀ² ¡x’¾|3“0\‘Ü ©1ù6€ôÄ0xo©ûêÍ’âsÄF˜—CÝÖn #öxϾ/Y gp‹«Hök¸"©!é]§x~€ø^Ÿ©»ÚMà eü}ƒ#+wã’A ¯ãÑ¡ ;\C·÷®peuVØ„~êÁ¹àµ$ôO * 8Õ†±YØæp¯²ü×,M:òýæp’ØélûêÀÄZþ TIà×"Ò,†"ÜÌ&lþî{´BϬFäl¢p68è–R·xÃ\¯{‡t0»‰OÁ¾–oòš(…pyÁíÂÜ\®D)$ÍìMîcrf±ñ¡‹÷ˆäìÒÇúfˆz°— ¼Ü¦DuìÞL Ô´,B±ˆkê ùêµÎ|ÂE{z~×¥DéfŒ².Ò[}ÇÏa„dC¢»áw6ñ-ÙÄF:m!bJ[s3*èµ×ºØðy•)äAØpûnõ‹+yˆøö¸ÐKöùͨ ‚ƒá'mÅ€¹\ñ8‚—Ñe_ñÖb?ÆÈŠî€ƒêÌ(V„'®^ò’·$a§ ¢©ð;#-ßä¹Qh„èVÈr€¾ä'¥w¿¡ýŠÃý]µý½Œ "é„~zaà*9ôkùåçtòA˜à¨ÆïËBã8‡|zþq¨¿Ì!„JŽF·Ãà—CRƒ—6¯ƒ€º›m_ $™ûáøˆ8€P+5¨¸Ë¬£ ·%”ø ,Ø{øOmˆŽ]U/ã‚pZþçWÚm¨WõýÅŸüÕŸ¤ƒ§#È*þ¾_Éü}ø›¤áFê,ê'V_A_çAE‹üùA…-Šã¢°-RcR/(¬`Ñ s«zA¯gbÛ«¯ zLa/1ÛO#ìâ"ª=:_ÿÜç_ÿ~ª‰ ˆë߯+nÒÁ•ª7Ês>Q}£±=½âˆ«<9h0d_íz‘X|n/½5TùJ(1WrâY$dµþÿ° $º“IŒI¼Z¿ð=9¿ùÉ> ÎçÁäT:Ù¼œAŒ"}ÁßÛåø~Ôºkt ýƒS.Õ>|óó¶þªàÌ H!úVîˆÕÐ÷чÁyãKU^¯8úƒ–oâ v§ª£^±$’vê|ak¨ûÞ+T?.|Ñ€3šìë¾Ìõã³ðÏíPñ+¾€~‡Ãý½Ú%+’WŒÑÂáÐNE¾¥ëò+±Ã˜€á{t^‹Ô êîU$AìÑ’o}ï">Å" ]•š¯àw0ç#h¢q *3ÿÆÓý+ýsß*XŽß11Ãè¾ÿɽ"3ÿè û3îK>ÞàáDí&¿–^î›êP(ÖøE¡A[lÑêÞü†Õ:ض@rÞ†GŒÄñÝ®¥ž‚Äý3,Bi â]¯d¥¯pÿü…õ2½á k³=L.!j•³jïOÑÃyù)#dÌõKÑÃ@ù~¾Ðj •¨†¤ûüqÝ͓Ԫ—Â3(?Mk¹6ëoDf§øÈ!ÉD*‚D¼º‰ppõô°7÷šÑžñõ)û%\+œ:Jfýž%0Ýà°Ì€I d/þ¦Ý5ÃÔç™Þ72¨G=n?\¹CåÌáÅ3Áu›Z19rØK„-J û<5& ‚ ò/Å$_™ ëÑ’šÜN ±’œèLþÅœo#ô$M[MAõV°£°¿³Ë5‡'žhè Éè‘'c&þMöK¢4nj®3ñ4@Un”2âú…ð"m¢ªCõzfLÏ‹ux}AÕ } Ôƒ¨>×ËEéI"Œ‡Ô%ö)${ ÒÛq§ÝŠ,ï9 Î [Í‹½õ‘ú^7Ÿ(ׇÅÛSí²w3û{Mþµhƒ(ÒÎKpATD¦Jö—à<£riºc4£sbü‘Ar'"S•æ%ÆaB›pÞµ1>VCJ¨Tggòµ }I1…_aü-ÊîÂzi_ðnéìeúm†» Gx%Jd‡]âEÙgA zÕ(ÀB$l¡r¶ïÏ7Ú0QÆey£È‘ÃØb¤X:Ös¸È†‘J ÌÉ/|%rx„—µ×'/’ºÄKK” ¡WÁº/éƒmÄ[óè,Ê>ÒKaœYÈ ðà>yä¼T Ç¿0¤H•Ÿ’k¯´ˆ¡]H#ÿ¾àaô{VìÄËùª`}P—Ô?ñ{Á¤`D©!#AÒÉŸ„ñýýë1 Ú|˜ÈŸ’ Á<~ÜêØ£Õ\Ɔà{oŸb³÷û‹ùQοöôíPI… ïý'ÊzºA_Éxn¤ÃÉwÁ‡1(!`a|HBøû e#¯™\gËD?l(l n:Â^ÇǤ×?tŠø—lù99[hNìfmôcâúŽÏd›ˆq¢yˆbB¼1d§bƒ«ÐÐ9¤9:¹š€„›½½ …§ÉªÐ l@d5&ëÀ°±öƒ-RÕzþƒè·Pno:¨W´¶f+á!àHîjDQý}ߘ­0ýØ"™¡?¶5¨$G<ö2¤¹¾‚Dod¶ âöIàðÆéM8Á¬ò ˆ@da n’‹¡B‚;|¾ÉÎâ<ÄF5Ј^!™G0Û(B\_щÏäK” Bxaˆ„ý]êÊõÔ‡üÞÌ'íúº ,¨¨IÀ@·õ?üP×)ßeÓq°I0D¿Wñ*¹¡åëM?~ ;¯“Õ`¼¦@Ðè‘ÅA .–®Faå Ÿ÷95Ï5z˜@Ô VÙ¡gúôÝØ«/μ 哯‡7^n^‹ŠÒ-×Qÿ3˜øq—TcLü£¡îPP‡(p¡Ÿ 8¬ð–/O ñsÔü}LSm\LÔóËc?g‰ŸÃo þFpšr­{áËÒõÚʈ/Ÿ?É߸Ž#|Cù“2ŠÌÚN/šdµæ Ùô]%w…”áj–Kq/þÂÕߣ'ä@±iñ3è†äoÑ—UcJûÓ¶và¿t•eàƒ2üÀ0¡ìÅbPý¢LùZ öûÅ]ŠÔ4›e*X “y|tLÜÊh¦W"2.8!îÔÛOÍ!'kþÞi‘Nª{0èökïær!„²³YÑ‘dëÌ…)Oæ@ý#ÁCÔðè‰ šC6ØR1Ä!!ýýÝ8üNGÒ¶~¦ÕGòFƒ ¥i‰þ¼ìØ~É:a—.&G·~Ö…B!†çÛŠ#åŠ&ýÁô“Œ’ƒ™¶üv™ù\kݸ «%—ñC˜ã†£8AÑrûÉâžëÅùPšòNòéE\ŸÏ¥–œ‚lÐ;^ü\MÏ?P6 WJzÿþq‚7 ºšÆœåÅÜ °óCÒ:Æ9¨‘²Éð!¢)7ä’ªovóPE#‹àhUSuÃ(0µ5ŒüôïÉB1šH8¶î%p“YÑ='»ÑoÛò«eG¡C?†[ÓP; ±‡µ±×Šò‚žÓGD¢‹à8´m’ ­ù1 U¤*îWcy¶›¯Š^Gü™_ºÜ–røð=Þ?¹µø «1é°<¾ËåJ-ú,†üÓO7šG]Õˆ¢LGZ¤ÜÎH,½²Ò­Ž‚°îÆf§€M}Ì5$r Ó}2fr®­ïº/“ÀÉèK]u'„cTˆH—×P~Jr§·B_öFõ0>ÈaŒ™¿×GÑh«§ëU& ¿Bo5¤Àpñ yÈŠ“·zŸáå ìœ*€òÙ2ýÏüʼníœò¢÷Ï´GÌóáóU—ÿßò^ßÐOÂ6¹Ö׋… >F Ó_õD{«BÀM¬ ª,¶Õ ‚åŠe#Ûª@c}P¹ ЪöwËwSb&žù0B³¼Ð a>¦Æ¤µ°¡KO„´8\‰çÚ3pCM°çÅiò¥µ@¶FRªÚY{Qû~!›ˆ÷TEÛ³“`xP’$8ê±f'ÁÙÔšÁÄc²Ð¡ö‚ €¨s‹Jð¡ Á·ã¥z•´ÓÇÔí`@¬\¡ßW¯N ,i?Ó"¡V]„zÆ -¼R̯‘†ÞLɉïL›"‰†Âöw›ñò8RÆÔPJCüŸ¤QË H‘t›˜’N+ 5$ÅÐrJC°Ÿ<ÎL" + 9øêS¡p]6ö±²J7{ /¶ ÒÚÖgubb”BP iô²¿Ð£æÈÛ¸ÈËí0GŽÜÝ ·"ˆUTš)¶²L5©˜w)‚°)1TP=²h” /PðTæo0´uŽÚª1·<(sü¶ã—l¹SgHVœ+‚¾¨f­ ‚ø(úÖcWS³–!A8âƒÕvˆkQ_-C‚”¨€}»™êÒÛOé.¤ìIßò<Ȉ QBù›Ù°Ñ“ë31 žø@%ÿZYµŸÂ,÷Ú?§°qQOôdf¹×´Ü1 iÂâ±D¡"3uó©’ ¡ô9~"R´Ý.WË ¡‚Ü["¬é`ï%ç- a Á?ê?{±“pB¥˜6$ Yêeœpu^O¯çñÊMÍAÆ ñ ëØâÍÑõå-ã„gãâW~¼.NØ3Nï—3‡Ø7“§Î=y?ô¡QFþœ[ÏþÅ?ìJ¨´gé°oì@t‚%WO®´‡âwƒêëz‰-$Ø£kE ÒV:nx}¿G6Kåð&‡âþ{nŠ‹÷ Š,†$^Ù#vœt b0Õ”åЈ¨@y~Š*•Óì9t„JwЇâL½Ó‰Tè‡×{^ZeJýëc2JÐ"¶µã¦¨ôš>æ•-wûqƒC•j#C†¾;”*–ßQXÄhå0½›xÙ/åÝëc~-õ'ôeÅEå@ÃWáxÚæÒÙ‹Y¦Íá©®*£ˆ„羚ƒFäê6ì¨"a¯rfìxy©³v´z p73ÔÜr®ŠÜÌf½ÂvQ9†Í‘ABÛ‰Ì?7Ôô”êƒl¬jÅЋ[Â'æ“êõ%Äðþ¡­f¡úb üõo®Îè‘CŠ7Ð~*öò9¤Gaò5ïŽdG1¤ÐF`‰âšfDኣfüÆ ÕŸ|v†F¯äñ ü¶þ÷…1ˆŸñ%ø µ” a0NëØ«uç™0È‘ýèN³Ã«»ÅÈ|Áá5’nr*‘ËÇdȰ$õ#ñ§¨ÆTK8Ê6_¹‡7K)Ûüóݨ³¦ô0$ ü‚šVÖªÓ5ȵ‚VhDRÉ[¬#Dïòtå–WôŇpÛç•ÿˆL 5¨¬ZípM½pSºkìêîE¿vÔS¦ësüN V²¾ÿ¤z€ç A¤)K.TóY07âGrš®lÎ"#FúH`!É´’Ë42%p„§ OsƒK«1™*îG-JÓ÷cÄ,Æd1çªoø,MY•Müsl“ ¤žóJu=”,.(€±šìÂôåäs‡'íkKmêE:|ÖY`¸väú¢þ$Õñ~%ôËÌ €¥nÛ#+…}íD(M‡\ (õ£¤„äþFà§Þ»”uç±T_­`{ i!°Î•}‹‘y ×»§õqçTc¾ë¸ŒäE#ŽÚ–Q ##yñÂú6‹2lÉÇò%ÞŒ€B¨ß‘ehæù-I‡bO.¥Lóƒ·Lø«2»A£Ó¹†ß°Móߥg6ÿáÃÇæ&¹jã7œ§þ$‹À°­×QÀ2µdsb0¨ØsJ]¿GÆï~¼žùÉ“ª1é©·°*ÃqÕ÷åâƒÒc÷M j „H_ºê&§¿FÑŽ‰‹oÕ@Eê-ÜY „‡êº0PeÏ`¤ >ðyxô[|·’sLž&™ëÏŸ/!E!) $ò_7Xlð¸ÕŒâûúÝX‹LåTDG6ƒ‘;îƵP–ß5$ ሠ€Ç¯Æä Ü#GŒcþœ<Kù¿¾a£tå}"ãw?éÜ—.œüE%è†Ïá"Gu*´gd‹V”g¦¨ê„SØÿ+vn$SåMMš¢ _÷HVäÌùÀĤ‡Q§WÛ~øŠï2³»Dñ0I3>Iœ°3©€©r0ñdžQ*¿Ýç•n¶Ï‡:[9ÜI ñŸˆän©®Ñ,ÀÜd¤Ìö°+*Ål¹5ƒúSªU•: ,×áýnƒ3‹AŸv~s;¿ׯzÍ÷g\ͬî%ý¹šÔjÌçÍ|f5o#UÞ C¢ ÆÙ )Ãwoª%ÿ¿pÃUƒòö ‘'¼ú©y–ð|ëýxÌ™˜Î*é] Èv…ÊG½øóÓÒÏËç"äÆX³¡]åhŠ[à8#¤–y—4óYô»‡°'ˆ°aÕ<Ç÷ÃÎð½q¢S¼v¹†F)ÙŸß3‘ÄúyxÕ©6Gî·²cùQóT2ù™ ýÂÞpÑÃWŽI/5Ò¿$…gè?&÷ûAÏBÇ'ÉàxšEâxo³0ƒèSC*’}^"ümª"hμYs;…rwy« ÁÌQ(Ÿ"¿@1_jL¾¢wÆÃȽI²ÖüÃØíÞ~À¤Íœ‘Ã0¹C6ð}HÀÃMó°zˆ‚ù‹"ªÌ É5LÏp¡ÄúK•f‰ñí¸ CÄÿ@½‹E¥K¯o’°¢†Ê$™³äøFrÅÙþ›~°+¯:@‡C û-Õ£šëûèþÆàfáØù¢Z3Âî£s«G¿ý‡Uoœúª7<ÿ0ì›tºæ¥ ÖÇ*—²‡µ)¹¸¨Õõ|ÚŸÇ…’l5¨ìñ„6#Wb£TpêÌ<;_x7bÓMW)*ÜŸ QŒ„ ¢«9ãsí‡}Œ‘ËлLÆçØÄðÄà¼^ú•üM¶S’ïäûÇq…é·UŸefD®…›v„îýdQ›!9².À+WVº¾{eömä†V]­”‘X²ù¸Ë¢©Ó”Aº‰c¼·'1&›±ï†ÚºÃS©«¡tet…9®jLcÑ;Cð…ŸzB™d¿ð@)XþÕÔuyÝí¥·9‚üu?‹ðv/ B‘wN¹'ŒÎ`æâ¤v{Wá„\&~±G¢%vßX÷¨!É·ÓkàOÈK—!wĆ`øiú¶/Ûs3åpØPÔvDËJ=[ö‘·I›€ÌvuŸ%†ÊÛc¿ê[5gVÜ>´0ÀxÑÉŸŸ´7¨  ºk9$Ù5a\y˜9-bHN^âp‚5ŸdÏŒËíçGU+~!êé玊5›„Z*Žé̸\ø»Fž:±/jHÂåØxMÛÒ­jæ”^ßšzÿ!&ëm&'p ÍÞ~ýhhö0XSÏæ~ïý‰ð—iL4¸tjL=ù7ç±]®Œú»”£ò Ú^ü7¥Þf&2½_íâ¥ñäU?qéð©<“ääׇ¬u™ÄÂâóÿI¾)‰L·›oD î…SC’W£÷Xâö?R½Â™LwPFõ0ÐÒóœ9ßR)Ö»tÔ"Îl:_¼øû-¸{jLNÞãêÏ£|¾óÉ'“Þ{Öý©Vl{+CtþÞsõ$Cf*Ì`%„. ÐÌ/I~ákleé-a{?ÉÙ¶ yefÝ͘øðPù‰Ç¿Šî-[˜M\yùX™VGhô€Òs1R–3¶ëÇàRë;ˆI:þ*²[øþ“p¶T6º`\ù}Žû ûøƒÔ"–À*N}!X^€a‹1™RçU<š!b`#«i(h¯3a„—ÈÊÕ?×w<¶}EÃzVƒrùïµÏ=ƒœ ÿeòÁ&Z‘}Á›jĸÊ/—Ì:Oxtøîžü”ö¨f><5$¹³!6óßO£©–ÙÊÀ Á‹–Y“ÙseÖÝÂìà¡XTŘ̻›a‚oïfwWcŠo3Ú}„·’þº2ʇ3T(€öÒ‡ieÒyû@…Ç^þš² d€‡ìÓ î+“î¼:ÿ ÞA¿ üYYKÑØH""ôNÝ‚W–߆º`múDCRlWý°ì¥ËÆNi*S°¯údeÔoxab!]öY’«kæwƒØøí”-5&_þ‚ç¿Ð§Ê6c~ÜÈ6Ú§ƒ¸[­®ùxc‡Tþ˜d׌ëÝá¥|2_LJü~ï1AñãCIúº»Ã“Ø-ϳ„õ»ð~2«– Ò›+!}ØW@ÕÏ/v|3‰ô„Zu§|ï+Ô‡Nßp÷"¿Y=œbȇ=xØE¨ó¬ðïP áU‹Q‘>:‹_ã‰õ=¼ ó×R]çÖJ QÄD"…””B„«©G³F=¢Dȃô6ÂW&˜zuRöî"ýö^)ꢵRnW¹Cf‡Š[·’ߤH‹†(6êá$: :ñ†“jï®dÃGC—» GJñWÉí8Ôt´o%á%ìoDôÈ€ÊBP¦’.¸¥F‡ò°zø…™g/„‰Ž î+çv @@8{š|A-ߨm#Çç-ùÒ$Ðë¿Á6;®xêÇ$°ãUüZÀRRŽ·v~úûŰ*i²–Ë*[Zú»K+±ô|Cïq“Çà]EV&éÑOóW†‹`ˆ1–gÿ–…¯•äò¬LÑ‹p2UÞ#rr»x>-&Å9X‰¢×pÿÝ-¬g¸ª1™š‰ö¾¡3‹SI` £jxˆÜ‡äJË,½íü!RY·*O@«…Oï“gaæé5g/Ð1 iÛX™¨‡ò‰‡T ­²c °I"‹ü=YvkýÂHÒþ#+À¾”¡3x‘òšÜ ŠñÞÄmë-ý:VIâEp‚\»a5Ï ¤àWû ‘NŰZ™žR(O¡WjHÒV†­Ç‚xá+Zɇ€u<܈ä–þXëf¯Ž†K¾’íw;zp4%YlezÞ¬€z } ¬&|¨ÆqA •VN@!hCOßX/N•ÞC$rmP`t€îãÊÚ)Só¼fò£-˜oÑò»½ªº¸£ËÙ&¶Þ'/"ÞÅŸÙuç?þ¹E_IŠ’/, F½¿Ô,^ÿs¿çZörV ã}ÝØ)h›âé®ešòø%›Â7­ò‘¨ò0±›$%ÉAÙ†‹ŽMyU „dÖ ÿÇÿ¨W>L‚¯–A8îøÄQ©Ø£iþO§Òp6Pg‡µÚÄþ\ ÄcµŒ Lƒ`ŠU¿[aôùv3¸ã*b5¦€‚ƒ@ Xœ©ÕµÃz¹îÎ~ùÖ>íVPAð /¦.‘2À *ÑÆ«U̼Ÿ45·LûÃëP¤…Mu†,“þXÑTPf%ÕÄ2ç/1‡º¨ß©H»–)#®/’°d7Ñzi ò›’ænÕ•°ŸØq*DõT30ÈÇŒ.+\)ò ®xל'¯Æ–¡AC½qñ2³%™Ë–¡A~‹o#,ï±”XÈ !0îÓ ¼+͇edÌ #Ðw+éd£ì›òÊK~óÿQ­ÐŒ úÝ'Òo#w>éLg#ãÇ0YúÉW¥gNË‚\YØ}mß.¯;–õ¸óžvÖZr¦K~ÇJ‚€ƒn !°’ßà U,6Ä[Íï@Šv ¡ö£€[+Ñ¿Ü)ƒïà I®ƒ¢×í¨Ì7ÁÈòÔ˜\&øóñWègó¦b{[aZ0ãeõ¨¨¤þrî"ú|ï¾rG()0c±dB[º(a5ô‰#© sÑÑ•F j„Újx¥ ¯$VQCúŸè0šW¿òȰ!a-^(\øI¦Pm˨!rz¿Á¡>Ü’ön«ì ¢Ñ£–†¥–AC¯,l7×–ÊK aø¨b`ñèÔJM !)3 Ç#?¤Ù2hHÞ;~D~(@Çh8 C"JP=š6xšû lù)‰6òpÃ@y‰1XÅ —>Œ¥A´å¬_\¦QóÒû‘_ a1ûeÙ7ë%Û –­ùüêÃá³a‹©†d†P˜D£†dÌðÜîõ+€¶ 󱄎ARx‹•á·dZ/%(ÖØ{(àÃrÖï"á˜íéšÄ¥-a†hŠZ/#JÈ/ðØa\ÂSP?¿`†X_΋ TItÑKÔV³Hólò~•AC"‚µßô&eý•AÃ7ðˆð+\¤©Èg“¢Ë½šBÚ¤¬eÔð>€c#9˺œìì͇=‰âô&ž©¾¤B@–ègÈíÜèÔ˜|ì±Èicaï.÷‚ô†ƒŸmzP® 6NJ\∊WŸ,ðõ³×oÌ ªÂ™ú)RÌ0±¿„Ic;¹4@Ê8è6n9{y=øÃY$M(‹ø"ñå¿°ÍñêE íæ:Þ!ÈûkWo×·Ô‰h\/¾IWb"vKH­| «šÊ=Åþ°Ü0ŒÅA|²”¸EîÝirLr§tm°Ì'ì>Õ$¥¼Ÿª!Ų3|¹šó©1Ŭ놨>dSÒÚÏ2’HßÚ·Ú)rŠGvbúžŒê¶yðjHªIeèÐ¥6Lj]öÌ.æjÔ}Þ s«Ò}'N¡¿Í/|üIxrÞÒRðÛ>r;ì{Ôõh÷¬,‚¾N¸"áPŒŸ¢ð=‰€¬ÊÇõ¡Ex‚’^÷ó?/.nž2àu§ôŽp¥¤OÉUB‰ wA ›#:Æ·eºÖ®®}ñb…ýúPò–]`ÂÞÂnëŠoù9¹m@€Ë~eMÐö(tr±6žPK&åìßáë÷¼2XÙbHb‚öÆIpä™È„~nuò¸Ï’ñí;3 Ù-éOaWîï–š±* Ž("*óŸt1( ˆý®µEÔ=òçd1ªXTqïk;ñ Émà5 Ã[C«;Güb‹Óïz¸=.EŒÙU=ì+Ó p!“¯[1ôÙ´E…‰¨PŒÉ†~ÐT#ŸÕ·¤¦n¹;úõ…w “F.¹zªìÇŸ',¤MŠü OË€ ü ªŸñºìDôªèÜ›†C )'?Œc,ú÷O^­TE!@öÝŠÈÅÖßEKLŽêy/%%j-qPä©Ý.’"õDì{Ë/ÂáqýÃPóŸÑ8»‹p˜¶*M Lí$?å0Їm>@¿ºSmË÷=b=" ZNnü%¤ƒ ”…±ÿnÊi`'$0®9 †*a¯ê<Í:bŒ;ÃÌxÀÔTCÒ¶ï_¤êœ $$;#CÁjMV %¼è‡Ã0H²v+á½!¼ÁÝÒ•{ï‚=2 уr<ËO*Íbø°xJl@N5Ù»Üû1Á‚}ÚÂ¥] *(i“t}q0‘õè.<’F-æ!°¾ä×+ "óîÀOhSÒ¶wA-Ì$!Fã—¤6ó]……\eC‚Š(M-¼óg‡*€5X~ªk±Oa-ßsªå i· 2È+»,tâä̪¹(Ð`š/<Ô_ ¤ÙŒÜj/ ðú•¦‘»fw0?®ôÖÜÅûÏâRåWzæB‘"vöþ‹Ìz(!°–ÓPefïP6à#v¹Íçø%߉l´¥Úû}Q”n$Æø*WïSA0-¦k¢ŸQ#@d£Ù”±Æ;ƒ#Í“¦Pc2½Ô_XÜ,Cê e\n8”}‘½-ç-ƒ´˜Nø¾F¯Æ X‡.®4ÄBªgZ†']z>ªÑ´34á+ ç\õÐw†ñf<\>‰Ü’ŸS†ØBy™‹áú15¨È ôZ?˜¶ò“ÊY!(X´5ájPÙ¼kd…îOjL¾+.Dè›ð(†µ³ö8ì }1x]°e²ôÎÚãÈÃw~à¤!g.],N_ ÀåòdÎ!".Óµeoï„¥ÃV%\LÁÉ\CI.Órˆ“™†3l¿ýEã¬ö쓉†ƒüW0óVW²S’=°\nÄ@¸¾J}¾ÂÓþ š‘Å ÜžN¦ö†£ fh3Å6xŠæi?‡GÐFÕ%씬_ÛXRçº:²OÏÄ(ZŽª[B¶'+Žý¬á§CZtœìˆƒ$I`~\™ô8=Av®ïP(;ÔEîôŒ #WÔPp2:ˆuýFrˆå¶l^–‹îî»b8 dYÞ‡wŒÜ‘©ª§¬ ‡Æ 3jPµŸBæ }¦7Ýv>ÙaðGt‚RÕ›<Åbï8ÜÓè3jcàS<áỈžõ‘Á#bcˆÚį«#ø¤ô_À|ŠyHûtfT±}Šñ 15}|¿î¦œÂN6ŒÝ“D˜*Iõ€K°×æ€ÀH^6®„bP ú!èˆ äBíHô÷#ŒÓéštyÖ’ÿÑ-°s¥>'ãY +7ˆ 㓦.+'AŠˆY9‡/¬Üì ˆ =j#!Hîô N Á°×VF‰¡À·“ÐD$˜YÃ+ïªÄ< L\±y-/ûà1É!ɔӼ–䜞¬Mæ…µJ®£ºŽ'áˆØØqù ZqKN‚× )>L®žCrÐæw†%à˜’FÑq¼¸L½©Ð¨“ ½Œ@c‹Þ²‘$©¥Ö¨«ä÷JzäIt4ª\ß •þ$j!1NX˜À©éÑû¥Ç¯HÝVË8Ë‘½À%†“pYëžÄ,4wî,ÍÛöd9²1 ‘ÇzõžV~;rX*K ·“˜…$ø ´ŸPU·ù$j!ÝIx˜!:–çG¢ú͈nõK—¾<'Š‘ D|Ûü1_CÒÃçÔXaa¦l'Š3šNÿ¯,5$=}?½é~{%RL ÉbôF¿ÊôTʪ“C¬$4 &õS³*TXEQ Ë?3 { Ö**TÉÏ?ILÜ”]Ð=¿êÈ)1 ¢­A  tà>‰Xàs$’8ì©!‰W ->³WÈ]¾”‰V8¼”Œ4ûŽ£Fd+:R¤†„–ª! LöiŠæ c²²ËÈá À{ù™OãM.äŒNú4}be…WÉ×Â;I‡wÏì}§\ ‘Sø$ñœ"?ÛÜr7 Æ&ÏðŒr1ðw™T²7U‹ç.!‘h~xdòƒò%kþØ| ËªUÃáëò÷×<µ<3“ºÔ~²Ò»ü˜ ’ØÐGDšŒ,<.üªyo¸ÏË1YŽå•\PúɲüIj䘣uu¤¸éä°ôøý‡¹ªG$1òÞÁÐU{MJú…YÑ´¨PB?˱ú »”“ugä— Tâ\QÔFPÂ=î-!¥S´ÈX^`eC±zš(ôëÓ ·ÅÎ%„MƒUýÆÓMÍYÆ)ìýØÀ*<2pŘlJ™\'X²]s2DˆôÃ,І¼‚gQò /v¶À‹êUËšäe!*;tP–ÜØ³$9˜Î+’ ¦$D¬HÆbçaä9ñ€s}³ 94»‹_Õê:w3Fȉ‰ „e¨­ã&ဓ~q²ðÚCõVoâÒ óv'qjH*:’U?u±±V×Û²'™²¸ÕBñ—CÒ6й’·uDôÍ|ÂY´{µ¤oæúÒG.Ô½€zª~ºÙžÐ£ir pÉiÎXᎌ%ßñRVçô-î„‹ï¤p£c Vˆ#Ot†É›Sòع>UUwÜ>‚ø’¶)¾2»ò–ì8T霣SáB·dÀF{`…¾¹mµƒÞ’=òÐ…­Ÿ€u©¿%|äDtj„Tí©PÓ›(…X0Ȇ „7A…^³F—7ºøªþ¾#_ BϵP H¨â&†áŒàlbÔèäÊOIA‹84¯ý RTÏ›Âᵓë?˜°b£¾ D댮' }u)¾ ¤"¢ìÂ#}È÷zä[á g§çtÛ¿‰]ˆ¾4 ´äûÞ¬Að à{€1õ1³Ô„8cKcº®>'‚ƒdHà*ª(ºYƒŒ¥ydïà ¡êü›†;| <£ ’ß-‘Š14"J‘+¥ª næëñaÆë£ÞΙσ»4ôÊÜ´;³è§¡c€¶M¾›Y}ìU Ûáx}U‹öfñ1™^=Ì3M®èUªB”»þQ—s_-œU*CZƒ¸Ä¤ˆòfr!têê1?I”‡Ö-É$¼¢-8e~ò*Pý®ªDN¶1¯Šby³òØ7œM4ö )Ø’9”·R}‰r"áÈüGäÖüØ»N/jT ÇÇ_¬ÞtøÛ]¹<0&7@ñbŒeÊ1*Ì…ÞíjHv®Ç­ K|ÔBÍäA¢‚ïí4ú„w­2 |ìG†ÎG *ÚÃN³ãaè ¥ÖŽBY­¨<}³}aCDx~œ&L&_+¬3z$¸Ï@íÕŸTXgÈà/+DIµæ,·×ÄU¶Ú›Òˆêâ"eÇ?¨]Šèná!âó€vówVu§î®|Ô3Øç÷B™¬&¢ð_œ«q=ÛCa¡·ð‰ðÛ©ï”æjEì¢?¼Ç÷Ó çLúÿÝBC„:†½£'¯Z…†¸"VS”Öô+»‹ârÛ„+ïg……ˆÚRâ ¥Þóâ@]qãªîû‘úv…ƒˆ}Û5¦Ä_oá â´|C†)-ÇoI^/›¾–L¦»ÅÔ0"å;ç’~¨7k“qŽ&rÃ÷03å%r3œ8¼&÷É5 ‹Ý¢LHS ÈïocCõ'•‰Nª¯/_2ROpoyöh|9ð¡?È3ÿV!ngù[óªQŸVv7 /ˆÑq§ß¢šs·Hr¼2 ©ôÈ«[¢LüÊ2 gR ä[2†)>f‡ßKȨ²Æº5d±2})}”nM6ñ×äEŸ_ äìRÉ\G Í9êýÁ?ö­lPÈcŒ©~Ru2lá·Š9é’…ÿ«ôã¡5ÀâYº¦z¥Rüqênþ‚iàõž¡ŸŠ¡ßd¥­Ë}™RÂxâìñ œ‡_ büGWÄ˹ƒíÎÿ÷ÿHØ%s ‚ü>"K}My;ÉdC¸!‘38…õ^ó §„¶ÂŽð®SñZ] Ý=ò´:b+|ÅÞ0UÜðÙ{•gÍ+ö†=ùHH#ÃD ªQw>‚ˆ¨ ©7þ%P1–>ÙÇÈ)Ô¥ø%PÑÿ÷pR »[…¾BBí'Ä#¼®”—aÅpí¦(£É¬íW2‹£% à×µ}÷K¸bØCïCòIsÔ—`Eàßí|Ҡ׈åýªˆÍ76pøø/ÕÂx Tœ´þÑjƒø*ñôKüð(@@¢®Ñ/ñgäpakèu›Ú^¦¢8 gh†ÁKìC`凉&ájÃY›Œc€×“»¿ñ)K]æþü?åú‡ßÑËâdþ@qo5¹ÊJÚ "¯ ©Ù¤MÉ+i'XIC›[àBêåJ:¨ÐŽÝЪ1ŽŒüáÆ6¦ Ë•ýv_Fý”pâËre¯Ñ¼à7LÊ5÷²\yá LÈÔi{+)ÕËTC(îàolSCÔ/3 ©×AqØ¿¢á¿bkÖ`d€,¬¯Å˜ )Fþ ü[08¹fe<ÖÆ†Ö"w )ˆäO ¬¼äwËlƒK õîº Ù|³ÈÖ"1ÜsjL¾ Õ¾[GU//'  °YøÅû­A)š^B!9c=s(´á%–¡ïå¤- ŸNùÅŠflÄ0›´y+3͈}¼ˆ•C€„ÿðÂôÙiÔìZ@x&¡Q#Ç”#­\R•iz¨!©€¢CÌìÅ@=ý•Œß°8B®æož¡ú“bM.¡%6¤êâe™2ŽŸ+brÈבϢRKŒz¡EËOÉǃNÀ"òfM™­ó²l¹ó(8˜7–¡jH®yu©‘'OyüØþÐq"SƒŠh‡¼ûÏZ’Âü lˆøØ[ “r…ò¿ú‹Lcýüà“ò7åÅq÷¢u®Üek2[ócóÝWÊ^ '®i°QÅ™x6ìи‰Æ˜i©A6ä>@_¶!GRÛSŽ@îáq¦²»¼Ð¿Ä9lálŒÓ60¶Ò3¾lg¸y):¹Ü&äwˤ3î÷¦4 Mòs²6ÏX¿Ž,<ÕädçðßžB{@š‰,¼«›!|)α¥ß‰Œ† Ä"6DŒ)€a‡Øƒ0űêZ¼ B Eu‹e~SÜ+x!áw~ê4(dRÐøŠd™µƒsùÑR_ö `ˆÂ#Š{rc8EšhxìðvÙa{ÕÊðöƒN:é’ïP ¡‘S~’Ç•DæUÅ2®jÇ—$™!ø †è5ž¯ˆŽµA8hˆQDÄ€®×".]é^E½ñÿ¢‘ŽÇƒšŒ[p$¯*€Q˜õ¨FÈ C$s/Ãõ ²HŽÎÁmÍ”=ûWc’ÍúAõK䅜Ă.Â3†ö÷d%SÐņ9:Í@l¤0ýÝ&]I±ˆ»AìS£ ˜´¡,h3®´Ä{¯ÈÖ.Ö" Éx…Ôó'±naÝÏ.éà/¥'“D1¡•\Pé.¡ÖW„Ì(äü¶Î»‚µ³<@_“üøôµñ"Œ mz#FR­Ú$dŽ3Óßw2·d<ß{…‘@ɽƒŒ*›2²Þ`%iÿ—WbSF¨DаݩÞÂÕ °,ö¿ˆ„ åŠA¥Ñôcí| ú.ñ2ù ‚+’:¿¹€>báƒJ÷Á×ÛDÃÿO¬”ŒF/®-äú诗Áæ¶¹G_•üðÛ,¹L÷‰Õ2’ØBùGCŠø zT`¬ßhZ2ó÷í›îÂç·ÉœDÞc¤lLé‚« Få—Ÿø€Ç‚&+gaõÿžø!Ót‡"•æJ(ÞGÍjÄ4ÄI ©­ï_žqC(>þ:y‘*}Ô|LÖ§Žé1¼ltÒjЩg †ô¾ná³ë_Pöì5¬ãç“ôêVvµ!D'†?ª¸ £*MˆÕ~ÕŸ”—|E°€/Y&NýŠQ^r"ăúÃÊź¼P¨1•zäÜ ´ÀÉËDG·•2<€ –âÕ+¿¿Ÿ˜ÔßÓU miÚAöõ‹˜À}L¶«À²Ÿ.× {1¦d%ÓôKÒð+Ð%8îõW[RI«W›¥ Ò^DÈ ·“£j1ˆ‹¬ï½&Jcš8uq¤85^£Fýe lŠD®!˜Â«Íï­¾dŸ„N–heŒ}¹d¥øl`X~ÝSdBÒÚkï=Uã†M§FeÃŽ-÷gÔ,Bnçcòæßq¨B87I%T¯Úª~£#¶lܲM”~8ü×ê~ûŒ³“o¡Më{÷¯¬ÃI€µß¢H/lþÁp£Lò#DŒ^ӹʳÐGÕeÀ-ÙäÄØKNó~V0Q³,ÜÕ¨lrI¬œG 1•E·šåÝÀàáÞ¼~c²‡‰oÎÆf~Ÿ“1#.át(Oê÷X>ýaD^˜µ“¸YUžX½ú’ñõFir‡êºø°¼&Æ UÎïÕ¾LËÇ*psGpã—B¹ee\žâ¦z,Ÿ 3øbûÆ}mq#É!nMGATôdò?îÔrgPØjÕ1Â9Ã[[ÅpáÖ—Æìhq ¯rvWGÒ×ò]£ÍlY{M®ÚüËÁ:_&$«ýÕŸäj&:†2CÉ8hƒÿ5cßä¸Ç(‡ÉÏž´)©©>U6+üÒôé†DÄׯâCŒÉÉÉÀ Çpâ“/Ç7£çU9–2°rÔc< á¡5ŠÈHµ` håõÇ kÚ&@t]>Ÿc)³©oH*8Zé;o áê`*ä¯JP~Å Ò>€§LEžjLÉB£y0È9ïÔbL.¸Õø[2[¤F«AE§ìÛ êÞÌpõ ‹­!&—X`GªõŸÑANN¬[XЫ9(®†Ão?ÇšüœtŒˆ¥]Ðê›rO$³´‘3Ñž¾FåÖ|¿KÁ[eèÜ•Ÿ ÇÓÃ÷~r¿ еB†¯A }±À|¹CŽ¡ÑÈðOÛÑ©_ÀA(½¿8J@ÎTF׉³y–‹„¤2Á4zá' F5 ÕÇpPdâWºÃK *„S"(ˆým²Ö,ÙÉÝ×?›-©*Qeµ.‚b/ìùkzkNäBІÇÑü8ËՈ߀ÿz<„¼ÜDÎ$V\O6†0•XÛ¥’*šzÊ9 1MnÖäª!‰J¶‰Dn`ÒÜ•6_r© êÀ±”c>wþÞJ§ðà'vŠelU¡Ó#îëÑPO¼·Úh°@­l¯Koµ @J'f»„KèGR€ß1BºéÊ©wïøå¶Av ùjLÁ}¾k0”9ÏÕ·ë•eÜy3\¥ÅÉê%é„Ó™›ô% ]¥·ÐS(È?e'5çý]“2ÜÔöÙ‹<™(¿uGð¤D‘zÿ„ƒz¯°?òjª«ÄZä%UðÌ‚T÷|ïSgr/`<`ô~G—? v‹’äÇ8@ÝO{y4Xšä««p¯€`ÄO·Ê¢í†Ûo~ødZ¢P"Ù^홽 ‚ÈæQϨ’Ä.1è®—rp„íŸá¤mD‰¶©ØÒ«ÿ÷…}}äÊoWð>‚:J'zmêag¼ê®£AI#_­ ÷ù&vâ¸#äEžDíó¢ýõŸÆirTíýØ V*š´¥b»|XAüv§ä'Íi*=wé2èq»X“]‰nß{! v¿°¿Q²Ë‹p£¼ïX9þWuë{ø|AŒp*&qInGâ ã9è&ÈfÔJÛU_ø“º6±hrPÙùéñû¾Ì³”=Ï^´Åàâ½®¼¡mñhP×üÆ‹wž¼¾ìª0¤ øãG£Ä0>¨tH1|Y\jT8™^fôÀ0T[B8Áÿ'„N ]î5â©[DQØêQUèݨQ[×(YF”“6±¯¤•ÀÁRgÇ©ëb…Ãéòy:µ9Ììž-Ã0V¥5hd[•dúØÏ¸ ¿ìƒ*÷ïÊïV7„GÛwâ©å—Ëx¤aørð;ÞrjLê  –ìˆæä1‘Eǰ2¸[ ¬Èåyÿ3$K CË •[B€u„ˆFxÅßߨ ú“|"à‚5iúy…}?¦8ßÿÜ¢$içŒ gúVOm|ãYÙ§_ávÎ*xh´Üôë‘Oëo Ä\Å~…ó‡C &’„Zßã7ø§þ¤xËà.¦€¢ÂmFAú–(y½U; Ôçû'b\2ßT ç(F„~5ìXKú¬,×Èt?«´n|WÕ>5rjÉ$2†uEtŸ|$½2À;¤âè?yúŽþyý…îwp˜Zj¾´óAå5>ðóÀ“fÇŒõáµÆõu¬¦ •Q >6%î=ǹè Ôçƒ&’øTùI•ùÅ€݈,5ª–ÿlô»á¸¥n´£@}^¤/ IÀ<†B‹ÆølðBô{ä¼Õõß%¿ê›×cSo´©’hé•»(:d$¥ gõ"—4>û2_8¸*|xdäiõÍÃ?æ7´üɈkO†à’xþûÅad+žüSÈȨŸíð#öúál,ƤGï BÞî=^PªsvTÈ_! Q/%•D86|-—’dL_ç ³*5¦xDl^]®lCy”FªÚïÇ£Ý ¿I©@,¢ò¶Š*鈘#«M©`|›ô#tFþâEˆ™è×£eÑÞ>'tAbÌ,[fØOóßJº2¹ŸÉÏc¡@ÆI;5¦ø†az¾°8¥T3[Ð>Ò0-Àƒ]m`ö]ץ̰M’c"î¾Ëjë`ô;Œ`cŠœ0¬6ví†Û?~2‹Å¨b8=`MþPœåÆ]¸|3Ã@€A=”Ìå•x/¼ú_D½‰AEÜA~c®<ÒÎp;Éláõé~SVó BPãʸåhd6A~ êÐè®êÙo2ßÈd¾møåbD½òÙÁ…¸·)™ $õBÙ|¬7n‰^V¯Ò/ oþwâÞH·)·׌ó©ŸÀáЉ‘-­6ˆÂßÃt~´×XÍÖÉL^¸~=¶ t P'C8Ú T´Uä\” ;æ$c|«ÖïùÞäs*1!}4!|Êlrþ€¹cãÆNX IÎ~¥ƒ¶ù0bTXݸ- yÑêî;`1¢¦BÄÆÍïÌ­ü.רÊ^ÞÄXó)µ7€k½ ¦n=•„³ÆÊÞKü¢ßTG˜;¨Sá»á‡à¼ ]Jáæãe/B7 —õ±Tø™3ØÑ*ßãòò ñ×ÜpÁ—åïªú6¾Û"{L—.Õ<‘ >ð÷VtîñêâЬ-RUȉ*‹V릸˜ÎË¢æ7Œ§þ¤6ø¸bÕ1d¢``ý:¨;6Þ¼IêÈ|ßûÀûCϱ¼>¾ÿ…Œ]ŒÊiCíbRço7Ö”rnJ*õƒÅr¨4E˜YÁ o…ÔM/¾!r«1å~° ®8*ª6‹€×7‡ÝØàó¨–ÌÌP­ÈYqSgÀ,qÄ~´Uri³«hf3c{qet=Pªµ8 ¸F ¹ÜÙW½c³€{á©`ðy)Ÿ™ßØÞ,ØÞÆó™_{W.Æx8øÇBvóQK~lÝ;íqºÁ*Ìÿ÷¯&ý’ Fe¤:+3A{Ô¢Äù¢ìÊE܇¤ã?$l—îý¨¦Ê¬>œüÔ}ø8+òû¬>’¾úÿo fUöö†1VÄÖ£þ`u]BEß Ÿµ½ÎþÙÙŸ%ø@Y„ü=[8CˆA™ÆMK„|\À•¶dŽOÌ~þÂñ.Ùj±¡ÏÌÿ¨Gçø¼ÜÍ,ìÿdŒ;ðfU¥Ý¬z]rš|ã%ú騒jVÆže÷(Ùhj“Ÿãû½¥ù² YXW"é³f_ßeûé?g ðÛ ›óùmŠ<·Ç^‚¤âxv:ÎÉ– $¬€ˆYÉy Ï1ßÕ8ÈalV¤®·HZf®¤dpÎò¸IïðU‚œgª$\õ‡å·o€Ûà]…áÌùý¸3#/âý¡f0Å[ž¿yöŸ×’—vp#Êðüãåù…×Ýÿ°XôòŸZ©ÿ5ª\Ü)üNs/A9¨˜2x!OÇĪGVߤ¼Yð¹5z¢sµUÇüÆçfáäí‡Ýý‰UVý•Y)yÝ¥ÈFÀ¬Ÿ<<ÁmŠ<0+H8ø?b­Ô"ÏÌÈ£e@$)dŸ«2±8JË€*?y,QÔ*/\ÀˆØñ‡xRT¹ÅYî³S!dZ=SXpðßhšT^Âç'˜}_k,t·“ì7_L)유‘ZÚnèÉÕÌîï]=ƒq!á{¸NݧrJ|LÙÕ!ÿ‡qsê)Ä»Á}"‚&eM•x‡WÀÓ >5¨:ûwzc0››¦-Î]¯jÀÒ”^©JâêÜß;ƒtˆ,‚’æu¿2ë\3«kéßÁ÷Á¦gÈêì|?ìB©³~}ÏÄ›æùÖ&ÿ¹¥å2C~³ð^ È™…O‡bÓ :+[Šn0 çå4ÊFÞܦ5óä·À[¨A¢ˆzÔ§tßVä‰Í0ôQC²¼jŸ]plž†, O†g±Ç~‰0V8ü¼YWÍ nã²–ÊâÀÀ5Ÿ>àb¼.ï ë`³^É/5y³¸ŸÌü ÆÍÿfìl-H]×þQ[ü©§%€\ÃïÊbxÍ[„õX¾Ë+?–´.›cy²?‘†? G,/ÎΕ7̂Žth´ïÈ«AâÞ)fxó)‹H”õÕÄ…¦3õ8ß÷å¬dv€ÝøÏ«<6 ·B _~® Äù>;/³PåÂ` ¡ã%ZYùl½ÌœÆa¾€|ѽm0®Ô*ĸ;ø/vü¿ZÅ2'´Y| ƒØ­VûÜ×W+M–õ£“ñCrÊîèjŸïòÊvxðw\Ýè#Š7rU4mÑÎ'™Sg±âWVÊv;ýBrF”ÝjÌçƒ]Å oG6óbš½*SçFŒUFvӟߤgÍÂÂWõû$ ¶2r©„oÙ |¦Æ|?ÖšÆËŽt ”““©ÖnÁÊð1E•¡)AŽÕ«  ¾ "±+­Œ•ùKÞ¯±eJÕïÊH™êôΠ7ÁWc>a²•)p´zdn^/*¬Â€£ò!;oÀïQ=ñõ “­Bw3^ª;*ÎU§ÂúÃëïUî1ðVÕÄ|óÝVÊ|w_ošEj }ÛÚ­Bo{"‡(ÎŽâj¯âk÷Â&âEº°‚âW&·aÞÑ1£án¡úD+“ÛЙý(¬pƒT¶šÚmn¼¢pÌR!±>¬´À1B¤ZI¹ÎOØdU ;SŽ$ú˜:DWÊ|*†»ô®ºR­ùý¼«ƒ]?‘Gô¼NØRïº2­þú¢Éƒ«RW·‹µ¾wéœqa¾üDÇB¦)šØJ˜.译ʵžô\ Ö×$^ªÎ]%ã)Æ5"e¦¢Ê­õý¯TO‘è㥈?Y$jHº;ÝqÈ–3ÃÄ\nè«È“qöñÍøÉjH&.Ò[x³ñ´PÛK6§ÃðkGˆ5T6µ(컸J@XÇ|ØÿÉÏOÙX ë; ‡ÀL}l'Œ8’kPö–ÿOje ,pºI`ùÍJójXøé„•òˆZöý'šÏ—Xß’j³J µñ$‚h©L:_¬¿Ÿ/Ũ=ä²sªp’ÏbÕ|½öAy "LHË8<‚.cw%r_Õmn€ù“ÄçUÌæ¦ßA ¤‹\uyžäÄ ¿=Â$·uÝ]ûõ^ÙjŽ÷ƒ‡I"jH†D†…]=ñØKÂ5«0Ö¨Ä< øP½ ëp'Ž •çC2š‹U#Õ×ÊUøÃJ<µîºõ…áÚT®éô‰ò:Á6oàϭ݉VI¦èH{{ìç*Kà'—ëøÒøž:H´Puß©ö‰ÔL ºÜÎ÷{^,æ¼6?è|ÃÙSÖ}ëÄ`CËëö$‡ue ÞŸq/á·¤tÝt£òjØhͽ`‘ʯ’vsVÅéÓOKÜ~ÔïBìZþ7¢FpÑnrÅe´ WØøG§D­žûýPoá6“¢ }LnVÿ{ì© ôA-ÊŒku +ºq½ôVk'ÃZ°å}]€¦•+³Ë|Výp±H¥ÊÊÉ¡§AšˆüÔ˜êå§K‡üŽHNVr•l6âÛa¥Ïù¢Î¤„| TKrˆóræ¾|¾xäÍûö5%…i%«¸Žg6óãŲÚV¬åºŒPj,½­b©Ø7èe­ÐŠnĤ\$Ǫʲd×¹?C–õ+‡Ê2 añoÇçW>–âÀâ;Õ"8†Úí¬8Åù7ƒðG¾ï[êno%h–¿½#G¶>¬ý!?ÏŒX+ñ>YÄ+zµ©:wVéeø½yÊíbÊo—Q²±ÄøK£X–Mâ y†…¶Ë°ì‡¯–²€j*jYõ‡›”¼^ÞAí—SßtzY=°Ä¸ý«AŸµš.ÂwÕÿ=›úÙ(uìü¨ å/ÈOžVþ@2·n¿Z¦–ù{‰Ò{ç£bb–‘eð&ñ¿$ŸÊ!©`Äü€ŒÂ—WsP4˜žSE¼\¤£¬UÉè : ºt<±š±©`&©Ñ$¹Ö2ª†G ´u5Úh™|æî½^WéûfžÙ(T$ì'½òñwE²¨-Ïà_ñ׸×¹Í'Dÿ©ï>¦‹¤‚;‘“z¡Æd?àÅ­ñ…¬4¨·*}MÕý–0–òu´ê ÇP+¢ßÕ°Š¢Û»¸a©¬6±ÌOÃÝò"´Û%·Å2=¤.è—X™jX¦§ÍÐün=OÚÍXB༒ô}¿“Žù¤ºÈ7 áM;a—¢‹„„Çî×᛹TÍm™–æ/6G£“ß$ç,³Ò"ê•òØGI¹¸eDŽ6¦_¶ý·_üÌÔ˜TÙ{%&eáï$?&ÅJwä[^A†%™ü59`Ò&ñ:ñ{ÔÂ>>xèS0û $ÿâ\h¿K‚å/é×oÕ2Ž6ÛÅ`HÍB±Œ#ë{Þ×ÑÖÈOÊ%@߯hc¨ ·c <½ Úªeb¨C%A9jSH‰}#u–:œtÁÔhYBê(‰TBÝ-éÔVÜáö¡OÕC‹Ú22k z™q^œ™dÍS“d9lè¶OIV·LcƒÉIÔM`ª„e°Ž›úàÇDö óû¹#ÃâbJiоe‰ÂÖý‹va/'…–l£Ùyw£@ß]Q,Øz'r‘\Á4bHZàWþ1ÑŠ»d¶ V¡ŒõP.àb7&üT?£™=yûýÆí¬°ÕüÉ͇#’—R aUMêÏ ¶’®j=ÙjRCçµlø7Ëó¢ØHéA 9‰G•'SQ“v^\GÇÒ3v«Áˇßï"˜P *ÖH/'ˆ±Šþ¨OŽ„¶'7JX¨!K¾ZE7:GÑ;XQy©ú¦«YI€ V‚?žájýU Ï€ñ;Î8…U¸É†Ù:\§s—bÑXÍ€˜(Õ ‚ ¼5è÷ëî—;¬"}‹ •?é÷ë>ñ?¿Òk#dË!6*«IŒð߇ìÂgóêpžœâWÖ«ÖÔ.ÒèMxIá/‰_#b iÃÝúDÙémÝÅŽtsnAw[ˆÔ¨Oø~š[[AïÃ파 ±#í?!¶(öö”~#»B HH`þØb«Crÿ‘ë«ðœ£bª]l·L¥ÕõCÌzœËbÌ7ýmçØmøù…o¤¨ЋÚj1½¿…$G¼_»DÀB½)êlÜY:Ú6CkzpÿT0ï®èÞ! ÕKäƒJFMoáÃæ¯ ?ì§êï‚÷ù?„¶!AíÍ8¼S(¬óþû©ü55"!û‹"ã®F IP_ÃT2²†zjHõ‡ƒ5†z.Ù5Ýßì¸]°=Ü:}G‹TëÜ-÷Èša¨àªBˆTÅôN¢RöaÎ^Œä®bªîß©Ô^Ú†€4ôÞÉÎkÊ´ÁY&ÉÅ;%Âú!ÌÀË//»Ô¶qŽ±ß Ý.ù$mn’Dî›bIÞ ãCVùO²ÔRLߌ~.+xËGY•¦X¤'Lú[îª4õ[4MZøKîUiJ~zya\2Ô²Ï1ÆŸCO|M¶vŽèÌu¸UËo'‹8jü³"¿S-å¨t†tƒ«¿áÛŠ!É Ž ¡_ìj|eÊ9[y üDÙŸŽW‚úb%v”Õ&$Z?¿åW+å_ÓÝ|ØñÃOÁ¯…m»3âÇ”¶¯¯>jd¸Ïw|ˆa?ŸŠŒ´‹õñ{§ÛºrPÆ~G‹Ë{¸È#ã}ðl¸½“VÝövV£Æ‹‹÷*M.庳‹Õ_§°­½¢ðÕ]0?º‚ÈÉl)k² ¿Ažiäm`0,‡¤ëþ$Ú(\öÎ’{nN†˜`I~ž¥35vfà‘êÐgähƒ£­ãPÓ†ëÄIþš¢}ð;Pêý ï1¨¤A²³ïPÚ²µ æÇù‰qÊŒÀ-õ“*3oQ Ã"àOý¦ÊÌ‹ÄVÆ]š´ï]XZ¨ŸqBjG6ŒvüÂØmà ,G ÉÀ<~7Ùý‡-†dàg„‡9v¤[¾ØY¤:8EÐ>ÓnÐ3]¤w‘9Û7Ë{J†ÿü0…žÉ9l’²±s4D•9Æ"ÛjH¥gúVEÝFY)?'‹b´W2}1:R»uv”ÃSÌwCŒŽL`Ýßq°;3óÀ=Pn<õ†ebÊÜÚü¬¹÷Ø9üGÎÉ•ÙÑ.o™¨7À½è€±`òUÉá؆ÁÁÒ‹8~ƒEØÃPŽéy;@yËOÃÞ²3è;XLJÎëd“ìßñ?ª?›áôL½ÕÖ š¦q$FTªæ#øxãb³eorWäÏÏ[ÎŽšQ–ßù;èÙ0>‡>‹TN ö"´$m¹‹pÕ÷7ÂäoP&TÏc¿,^hðÒ£O¢Ré ]T<úsªiO™Ñ0{SºEÈ:HGhõ.ã÷+߀I¡ŸÃ¦¤¡îo!ëNt¾†å—lêdÙ”0@_Âq·£°Õ{Óˆõ‘硆äž/wl™ý»Éðä“1Ày‰ÍE¯d§+IëÉ ¡å d¤ŸñIA_o$h/’3$¥ø$)ï s k¹_Wtù“ÂIF­Ï5rW¾á'Ⴤ†®€æ©Ü©‹Ã„4¿cUýd,Ï©±ô²ÈFöª¨)ÀóÔÀØNCÙb9o¿wÙ°?Œ~ùj'Š bFÿ——»å§$ÎÐd^Á]ZÈbH1¸ƒ3„­q×V¤çæ½àG_´‡ãIKÖ“•¾þè½ ð©œÄªgú 0|ÿQEùƒiœA;×o­ïùÃÜn²½Àù¢i¨ø‹§FMà¶· '‰”žÊ4òºÃϤEÀ)¡?†#0 ¾ºº0ĹCðrF¶ëß½O¶ÐÉ “·ïÉ78C‚´cG#ñˆ‰”1Á€xù~—¬ê^ÑÀD#Á7¬%Ô˜ìÔ1Ñ…ZúH1þÉ^w@©ë»²t$8%nbb–áÜ·T£ð”\Xú±¾{‰ +•àû…§¡2LÝ¿o¡ B°âÈÄÏG^¦o œÀ/ˆÄW›Z˜7Kƒ#¼Š%~¿Šùv[^ dÿ <²âÔüfƒ<üEÌ—tS“¬“[©ƒÓ—7ÝióÇ«.n·2ý=ë/rº¼vW@ë­ÔA.ãÇS“V«U‚7Àð¿X·}ò„oQƒ¤àˆÖñÂSL ['èGaX$N5WYL‡ªÒ÷¯Áí…@D¸ØS¢âžE ëg߈Îü Ú,"øtR»$•ýŒÐÿw¿†OÛ® ý¼#¤”Úp{¼Ò e¿½!ÜȉՑÆè·ð ásôóÈ—º*(î|‰†Ûñ3sóΪÁ°„pÒ®9Q·èˆ +ò­ôFø¦¼NÝbÑÇ­Úï1~l#’߯NOðŸ¾!]ï*'©¾ Óã#óoIž¥su žT õœVí%bè៲Ä[¸…l„È6˜¬ò%,ÜB.!^\Ë4Y\Ý¢&&2”×?PnÕ£ÄFϹ­*-ؑ΂bSRîªÊäªè»ˆƒR€Î-q~Å8þÿú€cª¢½B¤±L±?[š=²˜+ "}2ZHƒÃÚGú¤™_«z’k,7üNL2ä®9·ÐQ¼žÑ¹×jãÀ ’y¡òlÙ´¼5œ–&î›?AáêáÔlZb[&²âd”ÄäZ•”á5Ï Ñ3èx Çõø2Û‹À꿪ÂbŸö¯Q”ŠÑtw]ïAT6ìÇŽºÞ¢,¦¯Æq8™dÚìÝui æÛÈ{üåPd‘»ëÒ0q˜Kö©Õ»ëÒè öMc@5ªFWR=^6×7%îÖ`Œþ¢µGC»ËÀ³›Y‡„¾ÂÝ":Æ…; ìÌ·‚½ï)ŠSÔÐädv‚«å ‚(MxÁ~r¢5x!ú å&ÒQÑvîo`QýIÉ­õ æ­>ÅRf{Ï'Åèæ`Œîï&€J[.ÆŒÁ}Ö[¤ í»•ï t")D°„† §F•ìb¯%~ ÒˆBÞoFyÇHE xH§€[ðÃ6²ð_¡¹©Åx‹ü Ç]ÂéÉâ”Gc² Äš8Ù‰µ€¬¸á0(ø‹lêé'ë@ÃùÈo¯/^y &ç@U ÿ€u= ¢Ü„ ûÇà.2ò ¹AÞË\3Ž®~oZÈ«Â0Ç|Yešá ŒÆŸË9Céo‚;–ÞS I´*!Š(è A°_Òeõ-.‚dR=h†˜ÕÈ1™`B›o!ué¦HS7+Ç '~êJÚBjLÖž@ö%_x XV/[†ý$4"ò;¯" ÝŒ&FœZXà²HÎ`bÇÉïÁ´ñãIÑD^ÁŸ×X·nÛ%[àe,±ß£s=.åê’ÿ2ïp€$lédåçäÎ2),ä ¬.Õ˜zwô¢ÜI6m=¨ÔÏ4òåqUÝòW±Äƒ™V x—«ÆÍËX"+Ž;ùQ2“êe²ßÐåùþ{´-òkEˆ9$ ]ºæ½D=ä0ÀžkÆÉIHÌCò%üF‚ Wäщ!©±h€äœÕÄ“«•x‡8iE~ÇmÐcÕß´KBh4HÙÎK¬C„¾®]?õn¿(N܃ Û7"¿å§$žIÇnЮ­©òçeòó·&tÜ42Ô’Î2ä +ƒ¦2ü>õ(³ ¤‰¯L7)}‰pHÏüÒ†$!FÁH/×O ±C­ î7~?}„›¡V@%¦öö—0E¡{8kcô£¶Â¢H¦ôõ¢}4ü)Õ$Gõ¥üh€øœêÚö×ÃÜ—Yê<^bú}÷á©1C¥^ä¤Hž47|µ`è½vû’$‚̤E$”‰_ò ¶&×$qLq1^Ò$ûFG¡»UòRˆÆ.ãOEVÅ/ù… M Þ€êQÎôô‰L#Æg+ý½JÚRıâ£8þ1e¥ÀF£³%…¸WŒ)»?Ñ´eÀ•./é‘ù)¡ñë¤Þ–Wæ¿0ÉêÝò-ËAt9ü´Dã2órÐñ‹¼_8rHj)B¨!*“¼p™½órÐ"òÿÌ'5e+¯,(½l8ü›üfùý÷/„g¹ï¶r+[Y>a,³?¤†dË©‹qœá5Uî%’a;ÎÄõ™r©zEƒL •XQBýü ÕßOñ ¹Ü23ŰÃé÷j.ùàþ2Z8Ù÷"ZްuµÏf¬pµ7—bÍ›“eÈ^õ¤äsÑdqÿ2Ãnºÿ$hç¹{™a¸‰S5ÌfÏÿGØ¿`Ù’óȚ؈TËù&ÔóŸ‚ð!þ–Âi¥ê¾K}sÇöM'ƒ=¬ßéS†afäÅŽ¡t–ÛO†#ÎYL'ãÉM›jò„_ع‘vRÀoî‘ ¿ZÀÅ*$RܮѨÜA çg2î ‡·å¸_zߨ—sk ]'<¹4WtYÕÇÑ©=\Uˆãµ§æÖ# ;.¼²ˆóqKô  ›ÓÉÍâ_QÊE]€ÍZ•½]‡GÔ'Xñ~V ð H#Jmµ0Æ nQaàÓ€žg‹m{Îâ2Èè÷ó½0 çgã~Pe·D󀸢±Žÿïvˆ÷`ŸÄbÅfƒ:îÿ05ÿøáŸ?|òÜ9pø_,³=¡UŠÜPºã?‹¼ý"7Á3ʳï'âË,R)2]÷H°n\;.y BcJ5yZ+ØÏ‘s€@çÏ ¸åU¼«š@»(Ô¨íú©áH\Ôp™jù”iHÕ ùccùžÒ Êí$˜œgsŸ’ q‚£åæÒ±AO9†ùŸîrC×§C(øìmp5Ç{jH8 š0~NPÉý>êGÈ3ø!ÛcÓãžõ+lóÕ~dˤ‚ÛÏ),3ÂÚ Kø<ÿÇé„ NšØ±qbÛ®°æŒ`›Ê¸u4Bì*Õ¤Bšé¡ëºõ} ‚¢D÷ÁØqX&øS˜°c3òÍ®5Ù~…sÏ!~EÛM6×WpB2ØÈþŠ?À^Zë+œÃ˨ú숿Î\õë«…ñõ =Žº¢%Ý-+cÃõˆäÍé ¼õ´~ðÆnÿ ü‹Š'ŽrƒöúߨõýñmHNü›KÓY_¥b9è;¶ÞrVT±Jc˜yèñ #¸ÜµX#ãr¾>਻ÜåEžŽpë@„ÐA…þ½&£ ×±ñ{ÃYë¿»EE•Dö>Õç8”5ÖˆoÓÒƒQ/˜Û ‚—‘&‰Ú¶›+Œ:W fÚ{ˆ —Ýã–h½ø0IÃËÍrð‹ÿ½—ú7îémîÉõ `{ê2¸¤573þXò{ ¬„51h™4K0$~éÑ]À¥µo·†H„²ÄÞDXÙOù]'¬ ëÅÜ‚H ·ÍºÎöP¿¨ëJH!“·†èGõõ”I;%̆†?,§©ý6š=vÑEßóHqr@õÉ8t3ÉjšÑ|¬‘S{Ì ¥!.±›ªÔá0AêRæúýû ΢œ¤æôp¯â† ÆÄA¥Œ×ñ}×7 çõKåçű¹Ój¤ƒ5AïCskŠ&-­ˆ€ô‡˜ ¼‘[øPNÄ{CÛnfœ\êÒÑ>ÒóøESöáÖÈ>`w6c­á,Ö7ô6ˆ]}qdÛ±%Œ‘8~z‹‡ó–f‰‚‡çëP”N% xØ£ˆ£Ý Ó®ojËÈÍŽ2û!C—à$‚ò¡m{Ü tØQ/q¡á#á—,ý197&.dý²XSÜL™Y€4'fÇác›ýÇÁ±ÛºÐ £*â³â¹Ç—9•O l6žD7ºÞxB…„¾¹vâuÅ<ÝžVHœ?1o°1‡sBEÅá–¨¼øåH¨¶{¡Ä˜0O_KÜí¤±FF?‘Ë=mºìMªBåžž$$>—zÎÞÒ ɺeìÅâ u,‰Û‚_ñÄî”h,ü÷Qg3ôL¹À í«ªx"¾Lç.3VX_±6ÄR/ù…HʽyjmØÓ½ãÿ¥=¸} Ö†Ø¤`_ë?ŽlÅ)Þ£¯~DàxtBñD$/rl9WàXSlŽ:¹€ãa&Xx´ëçà)Îkuñ¹sk”wJcTäýŽÏ¶KÊ7üí’ …2eO’õ)á0zADˆÐiqwgð?"N6 ¶DÖÛŒ±H9}:3ð‡’ËÏY_ =™C•"¦>¶ŠUÞ! ,ÜöÞ‘SÖ§˜"é€ð”©±]¼Úz±"ܧd$HÔþmÅæÝ{'Dôûk²è˜o‡XØ2¼gúEzEÄåJ¥‰nwzÇ(¾4‘ž wZšºw¢}Ê8¹´Y &ÆçG±FNÙÜÉÐY¶nšo¼ S'¡ú}ëlšp|±°£Ñœ6©‹|Ê‚­Êø]["»`£Ùà %7ÅŒô`žK‰‰÷(~h i\¹Ø”p¸è³I£ÀÅÜí¶¦„Ã̆Ä*å}ÖUã]}{Œp,°ÑB„,Œtq§bÞ=ieÆ=ºoz].±š:ê÷’Ë CÇ}ÇuPSÆá‰Oø$ǃp F‘“ªå‡³¤ÑšÅ’Â9=ᾟ™°Ä’Ò7¦»þE³hÿ.áœÄQˆíÉ(§ì¹.>¬é°Žô×ýa*g¦^¹ÜÚÁ¢]£öf_&cüL¹[£¤“µð0rÑ\n#Q=²†<Äñó½†t¹ZÉ8> º'ÔUGMMñXØoáãtùúú—ÅÿDmG¦4Òêi[’ìø/]\5ÞŠÃ!ÙÁæ7³(í"-  nŠŽâɬù!º¢Uò¤Ž’ûä_•¢XŽÚ©Ê¥*:ö[ÅòZçgªAº™•ââ'í‡{7ÊÃÁ­Ð(ú£³‘Ç Y±ç…¢†³Ç•7Vc˘WÄõ8eèrS–Ú¾š¢†p  4¯W·-5ÌlO(M(JÜ;¦¨!3bŽšøVÛÞ€ŠNÜ(Pò ²r­È”!Ž1S$yÔe¶¯VeÊô•xàPÙªA’þ¥V…Ü ÖÂ0×5òMÀÑI|® ”_M°C®€Äèà„9ˆ²©»!*Çø·qœ»ù?F¸‚ÏžÎÖÄ-ß¶mm*p<£gÆ4‰fÔíÍ:ÆŒcC:†9KÊø€çŒ·À¡{ 5ŒÒ‹Ÿ2ꓸ5ŒØ)Ö”‘òdß~ÏÎÁ…£E¡ÿ%Ê‚wsk«åþ@ûIê‰ ÊtM¹‡(u®›Û-ÚÛ“ÑSúr»U¹‡¸¸ì¨¸¾æ„¿±Bè§Fp®sš%[Ùç±/¡ÄR>¹1|ê!÷;ãlE‘ŒÙ Ùi"é&v­’áëL"_š†@´ZÉ:&•1ª”/1M[A—¬ãaÿÀ×Þ¶DB@ü~Øj´…{ZÁXô¡:ó^f0Éñq«nÝÛƒi€åxöÄ.ð!袜à¥u¡† gÕÓ;cbhµ"G&þà’¢ÉŽ4²[ -­rvr8ãMêþ.9(x·^,vqÖ±œìˆøò˜‹Þí^‡}´?õÉñOjêʹƉM¬-ï.Œ/¥JÒ™ùm˜û±¨xÚ Ã9yÿ2Oq‹t¤Ü^šî ìˆÕTœ ¿fšß²Ùò‡,Ôâã 6µg¤X¼(ºêá÷ÍD9ªÀn_Ó’‡ŒWÑN¾Ã.*L#¸ŒibQPØË±b¤õA_¾˜™¸5uCD¡ƒIÙ6ÈÅì)y4»0X·¯«ªÙ!ˆÞ%1•Yn‘–ñ^Òn/Ü*°áÈ=–qÑŠ9VB{JKß$jŸôIszSçC89¸ì-H 4ĸD:ÈéÆÓ^ÚÊBÄ‹)JÀÙp™5ÅÛˆPáñ£ïu4ó4Ç–Eñ·.H<°-“ bˆòs]¬2^ýv•n¨6‡üõAÜ­{! dˆ>­g©”Fÿ¾¨â–ÄQ H7Šê5(™‹E9!–uÕ+?¿}xúhºE•…çóqÛe|[UÍKn ê9OŽÓ^Ââ.5ãÆ‰#œ¸9óØ{!"&ÁôÎLåpþ‡Øh•E·c¸³ÙˆfŸ÷œŒGuƒÈ+†{ÕûW6EÜ,h™ö“ª#â$™ý"3 »¨h¡ÞK&inQÝgLÀtåsž;«ÿ†Ý?)IPb£EíÒ>× õâ€]`ûo›ÃEÒÅ"ýý3-‡=9Ю)·C<ªƒ ëû4šEå÷‡êÝшÒx;ð¥·z(<ø/Ë7øë½hVøõñ%¹û¸Œ¦Õ‹+â˜éhuv¿×Mˆz¯Hæ¡uá´“Þkÿ€ÏYtPƒc·g ’H°ÛÁ¿,îóãPûÞˆÐÌè"¾n!èÞˆ   ¿³3–mô{5EÄZà%-ùsšÌXTÚ‡“ oq¨"–³»¼¸"6^î8“Öìæº½¸"~÷£c#”€™”{dŒGñÎENl­½€Œv8;SѦµ¯Ä·ü¤‡±0¬õ_«ú¤^Žî…ØßÅLÜ0²êweZ¯ÆˆÑM2=qâocd†&µœ©¾çq„%ÿÜ-ªmÜU|Ù 2³¢PRLào`ìïй^|aé€k9nÚß‹1bo?-¿òpµd/ˆc<ºèoƒ²ÞmíPC—!Û½ØÕ³»¯ ŽЭGe¥­lŠ/"’»TŸ" rª‚®tÅ8¢W"(ÉÇ]ÙŠi¸žñ뾺S¥s¼s”Ƥ¬8«ùÕgá!0AÆ<ân‘R*&Ú9éºö·Ô1©ÎD;99ÍQ¬RtK[Ø—X»Ÿk+šŠ<~=}º1‚!wÎm†¥UDR9îKîxp»UÿpÕÇU&âç %Wÿ=®ÿ‹úðâ‡êZ‹ WÅ·úeB@8ØpY±¨L¡0¢þ²r”Â^âU>w qx¹þÒýBÎÿKÄ#Ã(˜ßýÇ·ªæˆú„[ý¤DÂ=Á]p§™Ù,QPbðáÖ”ðMÜÎe¾‹nQ‘½mÊ;£Ü홊3"qñÅÓJ;—ÖÕ•ÇØH«»¸vgµKt.öõ»wªh¡¹nIÉN··‹J3ß=úÆÉõíðÿ.dËláƒ2“cÏ-)|93Ù©‡w+„Bóׄ»è~EaØÀ0†ÌéÒ8cl‚‹y!‘st=î‘ORã­Ô¥®m+PBÇv‰(ók÷gOpBŸ‡;\x.ƒvuqJŒï1pH¶m÷‡ì$²Ž‡GÂòåêU7„øÒ”©PéÆÛEÝáÞ-èÜä6ºß_UÐg~;£ð]±GÇU:{ê»öF©fWü®ÿä÷ÏM”e½Q4;« wY§+[7~ÿHOù tªëvÛFÞb|G]vv¯ùOÕΠò6>Ì4í)®jghüÔä—›ŒuEQŒ‘…)ÁV†‚2ƹ¸p€AŒa…]@Æèî;Ð{Ü+ï³?’)7ÈuO/ûeTò~¢œÆWžÉ¶¶…”ˆ0 î æ¶Å/2gv ’*æ‹ös”ªL¨TZfQëÚg TåMR$Nè_Ìß6„‘ÈnÞLÈ¡ÏæŸòà Ñܧ©["2&²ËàEµµÜû;4U…KõÂáÂŸÝØÌ4ü{ÍÂ<•kõ‘`kN£¡Òfþ}ŠWNM¸5JHƒÄÅ› û§ikpÒ-0c(Ý[0DÕLNÁb¢nÇCDÍi#·c?7¢in c—B¤Uî–È•W@ÜÂUÖu#Ç!tÄ [¸Åõr?"¥Ý±ÀK-Ò¼œÃêY-2úG”‡ûùUÏœ³jàsäÉöBt›yÁ„ûBGœøiä¤wxÓ>âLèq¤½·K>Œ%š©îƒCõüœ³ ½|JÛX£ª¶Œ[9¤÷_K˜Lñr’WþÙ÷EôÌÌšÑSîúÁ!zfÒ¦#qbZZÀèJF]Éß‹r<3¼Í’ß¿>n˜ð=/ÁÆöCÄ9zn¡M×Î Ñ2S¶~L‰.ÞtöïR„è|Hˆ^‹Íÿ¶=ý lHšs&?BØÝ÷QØ6d„~® ÂÃî”®çÜæ&ÜC1É—!AÕ€*Æꂈ{1(YúÖ¹g .ˆ¨ u»DÉÁT†P¬ïo'1vØc†¾0ÜsÃJâÞ—«á’çc‰8ú Åðfö¼[¢Ë´®”A¨uÜô|”ÀeÌâªÅ®ÄŠª5(&÷cÖ䔋3oTÒíšB¼À÷B˜v³ÙQ¹~r‰’¶âô!”ÄNÀ^Ü8¸y9—BòÒ/ù¢z„—˜é$ö!H€¯nsPÓ>kƒ \ó>¬j|¨âÀ ¥ûâKd–@ø–KÔLœlš«ì¢ãá,qJÛQZ:xÌGô îÛ(4¸ò˜íP×8¼s('‘ã§£ó4ìz졨 8E‹?޶ëØ_g);™ÜD\xv| +Ó‡b‚›? ßÑÎÀÝ~Žìƶxêã‡í¢*ðúì16ÆæõdT½Y´ÿ$¦ Xn)­Ç–û;Ï^hJC„7Q‰¤‹Û+%_™üØJñŽ=§3ŠÂ]Nj"ÿ*ðú‰)[4ŽØ-º5ªXûì< ‰í¦[S«ßM¡ø}6Bk]”ŠØYBHPÝm°­?<¥ä­S[FÆ(êå/S‰^ºâãî>ëmJÜHLHŒ³Ÿ$ø|µtZ\Åî9(˜~lë'ý÷¸¡Ï(9Ë9’‹®‚ »ÙŽS©„Ñ1K€ŸkoBIL"ïðD“FïVÉA€ÑUí±·/J*·F6jƒxâ“`ÛØÏQFbüª‹W£{à(#ñ¥73e<Ü£–ˆñ5æ„ëölJ'‰E‚3¸›r×AÁC‘ÀIlQ|06Dö™IP î>Qu`Ve;GŒ%ÀOàÔÝza ¿L9`šNê†ã길–‹Ï³-›ˆ—Gû^ô¸.¸%êžQ1±¢w ¸ŽÂ@D¹œòFû‚ Æóá„y'–û]„dŽã ááω°GÉI!‰‡è >ê–Ì\#9jxSnš\LÑgf¶9³ÒX£ˆé-Èð$£çÜšr%4 ïLÁ¶„ÅQ 7D™žÂS/¹†"ƒcaÁNº5˜J<„PK2^ÏŸ›Må"ט;­-¿åN§ù•’0ɸ®—¥_N%ö7v#ô¶ÀíTÆa#à"WWMLåvdQ²Ç×\x*oˆn½§¸þ¹¹ÓT²a¯M}/¼lû}tljdÄãsoÏ,)qw`+˜U»;¡§R !¶pFöÙqÝT¦!þ} †ˆ7wÎB4l—Y*ÞGñ;9\mÖèe ¦è>”Y/‚Y¢—?Ø:¸}Dƒ»þu*PHìO”ùmóš»ÒŽd³aûß\ºF,‘É VÛ=©ùÞ»kjîr”6ü™Þ{ÍóÔØhíÂ÷xp®)Ÿ›‚« ¾±Ø<;ÕT¬pÞÇ΄ýãv`…prÁ|˜þX÷›©úå„ ½7GŽ}Ê™„™…³ ûúª_)¼g¡®voÚR–‚Mn6$kî¤Q!NË)cÁÊÄÞÑjzÈË¿ÈfÛ/#??ÞÞ w”®5šK¡âè¤!Z¬äœ»%20~g¬ $Vm?¥$ªBYý0Šn×_¿qB÷OŠ]E_<)Nòn­s+´CÏg‹àìxìSB ÌDâÁ!Ä~’’7Ù½?z÷#ªÏáe›9Û¶‚í©>‡TÀ÷p±R6"&ò»ðm_¯âsÈ‚=ÚÛIÎ"U› ÷þ%ÝÕ`¦RAX3ªa¹}-•"ØéÖ\L„6î)NØï“·[1{kßײ÷gIMÉøáNÏtá‰4@ºMAûp¼LË÷¸‹j™Ÿ‚×J’—ûNE´œ¶L¸9ÖÚ˰h–ãôÀ=î}ˆ±®}a‹h™ :ù@ìhSÐÂ8JéqPZR¹%r# ¬…Ó­Ýu FuËûÍ¡=‡½Þ*—,bдaæÖÔ!rO—:¦Zög-\ÂFº_ÃÝfX—žùJwˆ@u0vC²ëÖhwØðÝŽªåsñƒ8åi‘OjzQú(…Y“•¬“·‘z·FÏ„òx2îÖÉQìÑ(Œ ß‘ äý3j9¬øeÅŸ³–YÅqÿëxl®à†0 qjyëZñß*¸a|¥ñÓ%F‘h¾ÓRÜjN¾NX Ž'¤ßßÏu!KaCn…ÙõòÌŽ[ŠrþâŒxiEÍϺ6lPÉ¡%¼ÍÖW®‡GîQoý9Vå*¹Ê߈ödçÖ”ë!.®÷>ô¬FuÕ`åÓa.ÀºŽõ´*ný^ôZ4æÇ1 VÁ Óë ¸`ÍÝBKqCâ)23ÓÝ2«À†/þíFXH´½+–V«´„РzÉP0k´fd~Ýbå†`ãNŸUôÊLo/ƒ®÷#®2‹Šñ)MÉ‹ë1m Ü%R“}„"EAëzßUäÊi¶†%Œ«åV‘+7RC>Xv$´º©È•$»(e‘VØ¿®kóUöÁpã6¸îTè*1šíf†>öÝQ V/³è1‘½³>+â\E®œ5ê^òÏ•«è•S2 7ŠW®‚"`´Ág]k» Š c'=Îÿ~)íª-“2t]ä]Ê:Äáe ÏÄz·Ã ë‹t\¸™{¸V}Öa’ô!ÞÁ u¿lÑ)ãHOaÖH,õ_¨”QÇE×q“c?H7*³øú—„ÑæŠ¦UTÊøl¢‚:ýWÒÃáb{”`üHû¼‹+r OºøCrÑYw=]XžKEd¨,kv<³‹';~ î•PbËXz@Ƚ¬+ðRb\üÑáŒû>J@Äš,J Fçè€Ýµ»Ù¤dŹu•Ú®YX'¾?2à/¸ý a LÓ9Úw×"¯)[ ÞŠ©Èa%kÞ²f´GÑxÖ}pi¢ Ñ [?&L¶žY¥rdƒo1.áîs”„˜¬êv¿9¬=»•„H†DÔs<50 ·¦Ì‹.ªºn94kUæAôD™~í…~kh!EüL¶µ­\%Q®üá[Ý´ô5kÔ"ûe¸*;'–[£ÙØ üí3(Ù°ѯskv½åéL‹)÷}v˜¾4¥ŸdñØb!"¸7­,V*î¨y½(›ÆF 9?[g©a 6ÜK i.1Fĵ16 Îmuƒk«.…ÎáöF è–ÈŒ!J¬XÜ 95KôZXÃ×xóZx`CD2é7å9Ë_…‘ˆ£è„´t¢s‹dÒo)êÌ3¬IÆÒXföAÊ£¢uJ›¥±Ì%ÃŒw”Ûl"GæÍ!‘ tÎŽ3–Æ2op°öh–}W|Êœ)ö'ým»öÔ"h)gaž‡¼ZBBŒ}v™Ìäê?E³Ù¡Tò–¢‚sßå*%}c~Ðçùž­Ê@¼ Q˜wköº”‚˜Woüœ¸±:îÍÒLf̧ ÒÀ€·¬“%$DTV-y¹¬pü‰%¸"Tô Åé çp@ÏR3DG~"¦íu˰™ßò!.oþ´¹…t¼œt Ð^Yl@ÅÙ»…çW)“¯¿ÍÂt£À"&qvàRHz“[£5ÁY/zj3Ü7€†Äm#Óú¨®-‚??ƒªe_·-@›Ë­³­®w6"ð#‘ÇÉëÖ²ˆ:,Ô²ætzë>2u^Üïq"8LzD²žêö‘s¤_´UD^±0*éß\î.ØŠ*íy§ààüáqL.¯õÛ ¦Z?ÌsÔm‘%Gµ¸aÙÝ13xØ,A*Á5IL%hÜ.)–uPO.zŠgw› ¡1€Î1íá¢<¸œ®pÜ$h ÇkÿKvÅjÉ¡[9†ÄB`ß|ø4ÇÞÂ1$öæ$DŸ ¤ý)þÑ“mPè›nÿ`®Q5lwVÄ·„1ö¸qN¶u…ð ©Œ&r€8EO³·†"‚ 72ìd;ˆ¥ýÛ*­ î £=ÚI·×LuÌ»ÐK¬ÛÂVÓÂwRºÓ¯ÖÞ›Ê5¼0gïÞ÷Ô„jˆŸ{üeãeœ³ÃQw1+dh£•Áãç@·½¾c—ú­÷lQ¦ˆàwRÁ{-i„öÉýƒvv°¿ƒiã˧Uà 8Q­Ò~ì ¯  ´a?xÏ86ìVLW{Š4B±¬QËVL0Ž”ÙbnË ß»Ü ð­¸{s¥[£ÅA\¡ÇÓ]û³ªP98’Œ‰DãíöO Z†BöÅ% qp! f¾Î¦ãÝcה‴ù8D )¹¹Â.°`ü¢Œ³Šøº=J ,ˆ2o®d¬qß›EU¨*¨¾-‰#å È3í,haÚ:âçqÇíö¢|28+êðí‘ܘ%G< ÿãþ:DgZgÏ#ž†³¥ßdÃÝË }xÆ7˜‚¹AŸ²Ÿ"–v¸¦ùòbÕ#@!.#é p±+3…#àñ×p½Æ¨0þë&ê!;ÀçS*‰rø+¿ë‡sG°BFÎÄ 5Џ8pÌ+p¾¢WÁD;::dï¶©9Mõ*zÌH¯Òaɧ©^e.œÃ¨3ÄÅ-RÊþíocq˜âöN+‚UtÇŠªÙ¯¤(ñ˜w}oÙ~ð(ÿœú‘ƯIùtkNŠ­ð¥acÚϹ5ÕÓúÁIçiâÀ\ééV•}AÁ0ñ3Ow£ÑS2š¿Fr"?Y*öÙõÄ X•HÖK“ìUï,/&M"öîÁé3\¬¨æÅcÏTÙØD ÚY>ØUecPJ3aÆëÓ¶b|Œ§K(~*Tî6(à#¢Ús‰¡@fÑ?ÀGŠGà;$]÷bUð1EàDÕAMp³ÓóðqpÑÀ@×_?|DzÇûq`È/7?Õ+q´÷ãÏ‹g¬›¸?~Ø”p=òžXÛÃSó›Ñætèö–}d™:ÿË)ï•@Æy/€ —±Í:>ÄqpÉò°‹ þÈÙÑ{µ<5Âè_Ôñ¿n·×gFƒéôëÈö&5ÂyÞc1a6·áÔçŽUÄá´°Ô¦S@ÈÅÈé`f–é¤nQñI€?Ä\ñŸ½ðK„3=j:4‚‚í3/{‚0IøÛûþ–=Ý"sUíÛñ &Mc7Šàk›“WPiFчÚëûI•™ôôÆhßÏ+"ªôKÐSv Ƽ²!MŒwr¶^þ§d9—Æ ñÍ¡]µÿq$5ÜT‘'[X”8g¬FÞd@8²Á)âèÖI0"¨‡N»¨Ü3ê‚xw±Vt/ü-aÎX6ÂP'ÛÀÏÝæÜ£1ÆAm¦,Öüu·f9÷»H‰#; Ã‹®†®ÀK…Ø‘6í^¶{k˜ó—õiô‹ñCá@Ç[Óœ¿Œ¼eBù1é7Çß-qιRƒ‘µæâ¾%ϙ펯Ê`ásgÙ-jé2}Ôò¿c{ÜÊoég õvYÿÔ["I»øZ<û, 㯆ƒ:‚‡éÆ·:-Fá½$¨;¯Ö[yÜ;íbúpܼ[$Ó„½p·Å ÒÜ¢RlƓÂcî¾lä-ši`°›ò=’Vì#¯gÅB/±}zJx~™b˜Ã L®Ú-BØc<ÔÖîM”`–™â!ÜÏ>MfAaN¡§…õ1¿‚Xr ÷?WÌ^‘K_’ ÝÊÝžW´Òëòkm U%¸%K—Yû>ÌÉì“L„ƒ€' ÷»ßE@ÊAˆPÚL·DØÎ=»†ÅtÉB‡W Êä0žô Ž~Íýa‚PöÉCØŽ…»["º'„Ä$%½ÔЏ%’É”6yàpqÜ/)‰,HˆˆµØb–…~«ìÖð÷ìÕ5”ø d2öiĹ‚TÆ)3ÀL‡ÍÞÂ|<Ø{·Ø›vK*ï­C˜ëΦø*ï‘/â‚jÏ Å(ã'Ç ”ÈÁ´W1ʃ ÊÁÝ-)žËqzeì?»¦:lbˆÓ®¬¿ O‚¬u$ë?InMQÀÆ!ö#aú–£eÜ©3«8ÈSÔ peoéYü€H1çNs›FpIfãq¨uŽUwÅ`q1l᪸ÿñ‘Œ62q {:®}¿BzÄ1öò€ÐíW(Äx&” ®!\"±\ðìÙöPV’Y@;9ZÖ¬þ* 9^Ÿ«‚i•ÖWAH¢QIÿv\®e¿ AB'8X¾±l›zŒ#ö‘¬Ç[íø·pì4Ü"£è²Ç™¸-¶—ùžewCÿ+^‹ »¼GV´÷e¶ê^w¼”´/ ;h·Dúƒah}SmºßfW b1_ŠocŸ@a½b‰^’Ô(»sDMI§ÇÌ­íÞ5@HL_F#cì–‡[¨ž±¹È_# câþêýJ3Y4RÑö>{‹ò9mh_ïÌÄ>³D¥¯q¿2¹\ b!˜ØîÒ Ø®R“˜IWÀ–‚ͬ‘"ÂÂÀlÙêЮ*Ÿqø;BSÂè–H ? qTxú_²(Ÿ)“¡ó_/ȽšÃLö 3ʧýò¢|žHÅ8Nm/#Êç,aá¤Ãaw“›+Âg ßË´"®?K-º ""“Ás ÿüek ÅGƒ'…q3·Ën©âoƒ2;ÔNn>#]Å Aª{— ›¼8Ñâ-‹Â~Žb…ÖÁéoµå·ˆ´+'ž&€´eåÝ 2ÀŽ›"qʼ͢:kh¨?p[Âq\ùŒ¥&¬r"ðlï¨"ž8ƒhßÄ¡Ð÷)¤Gè‘Uß’ÒŒWÎÀÅñ&Uɬ©ñ\q»cNÄ8È>Ý /®5+tÝšêºH¿‹=·|y'„Æ(‰£x»']]Ýoú>m ¸ãzŒ¸Í·yBhŒo·K“6cëiHóÍ(š¸;¯§]?Á 앱¡˜ >!4bOv.л}^‰a‰P”ãã:MÆ+1,ŒÓ­ïÂYpkJEˆWöÁò ÀÕ­ÑŠ ^(b]!ýŠâúPØã¾s¯›è¿b§Ht!`pVqõŠ"'G¶¹0ÐÍÛöŠb\Ÿy€Äô›ê_à”cm }Ø=jE£Vç5€-»½H^«—Âþ.=Ò+û9j«­êÆd–a”;«_µR<ü 7WoWÿ”ÍÇZÃHë+ùxÊfŒ¯+ãqmI8OÉŒ#£I¸åjp¿Oá2îV­ƒrKú{*’þnLžB7§ }Êeç=s¼™­Y£[! ÑÐÏùHûÇ•0ž›¸/ÇPnIIãÙ`v¡›«uŸàƒd¥1Îí>èöŽàƒ™¾Ì÷'QÚ‰P*õ™t‡ëJÊ7ʬ ÞÀõË€ÚõÈOBœ*øÈÎ$ž „ˆ¢fC|]áö4²ÚÖA‡mƒ½4²9¶ t”¸%mÊØ+‰ÍÆ`Œ³·ßd ÞÄ…¾¸÷tÔÒ'!oËÄ(‰Ëö«Èl€*íÇÙ'»F‰ŒÑ:j ÷§iK›É3"{ûC@X0õFÂ6€»ïiTçƒÒM¸R[¶s}ªüq±ù/Ó9÷ëˆÛKUÒáÁÖ Þ+& îº*¤CLÎãÝ?%¥ûI fÈ%MõD+hë¨Âê{xÌS…Ûù÷[þìþ‰üîq£oBܨÑm„ø+ C¢ü ±cëÔWº²Õ½þ±À€ž©™²PçU³°„Ðâ2€§ûŽ)@HpQOÚü$×Á­Ñ°æxÉxS6Ž`~ ²ñހݶkù)±Oè\å]ü%aº+€Œ›Õ™LSÊËHéÂO}cÚ•4È–E7Å5N á¹E EqÇЀvušC=Ö¨AJǧ—ÛÏËÿU÷÷é€ÎTÐÔþýagÛo46 ëži~Û±sö÷),€ö$Щs8e@Á¯%dŒrBúï/0ñ¡#úx£>§#ž’G–Š=23ÞsNNöºæð̨ú1̉ýŒðãË—6œÈÌMѤ¸ãC沜P`…>øqRøLá9íu¡âÐŽ†„”øcª|ˆª¿öD5BÁsžvKÄ* £NêÈkÅ,Qò؉*= º—c”÷û¨&d ½ûÒEŬæ`cGCƒ€íj7AWlàK»M&h¨¤LýP!«¢¿Žêö0¡Æ Û-*ò”ž“ÊØ¨éŒ-!oëE2ãF彞nl„2W–pP'Þ9·r:5:ãQKFÍ3ŸÁòÉï“‹¤=T›'½_Ý» >Š“jhžF,æ0-X¦¯È±‹¯iT‘Pîá’Ñp襀·;îiì>÷…ŠÒeèž÷P«ø—ATx"ÖxÇ” ;YÃFñu1Ø¥Ês)E‘‡bÞ~†–¤|§qtþ†~¸?MX™H‘™êÄ•ešÝýi¾ é‡Ïîúù£Í SØIÀ"„â»öæÑt²R¹8v¦« «æ†;é£â–h–Âê^;:Áf¯^ebu‚<^pÛ ‚NH>°×¡ÌÓ™Xòû àê®LG(ã–ü>âÀø ŸçîK3÷Z#rt`äRàÞ —N —`˜¾p Ž;S®Æëiÿ®ÂÖÒ#rßÎ}mÖÿÄÌEGÓmR`¬)Ñ:~'dº·ÌÜ'Ö”h:¶ÓÓ@ňn°>’5ñÐø|i7mÕõoËŽ ^Ó¹ÄNÂFSH´\ô\]31ÞD‚՜>ê›®´Œ]\Ýþ p>LÁˆï¾(ÒøæÁÜ”Ì#fb¦s‰Ÿî+k✣£eæÖHM0âUkQÔgEGÄôü¾s¡›ÄÅÛû³E„F7g`;®)’”[¢£¸›Ó| »]¢’*>lÚ™ÒÚ5Z ŒÔîឃ¾[£-âJÅ=ùš±sÜɹK9@|nÃá8°ƒwQÖ̧B®µ“c˜Íú9À~¶ÛTàÂ)Ì<5d{pÚ=åx:hJ˜ŸÙOÑØvÎÛ…$9£îÇJaü=D¸¶SÔìO…Tƒ‡Cpà’ìö³p !PdLÇ= )jE§Œx#N4,€æð?MÑB§Dë‘«! 2¹Ñ.¬A£!=¶¨[SdÊåDl þ×¥v–,‹´®înMU¡DJ¡í™ÏX ÄÙ<‡§A¿.éþ‡v~7O›Ñ³á¸ å KÜŸˆ¼¢Ýŋ۾iЏն . h¹#0Jl’ôsþ[dGù‹5%c |%*ݽ¡Kš5Ê-Œÿ:žiÌ*íÌ5ÖÈiå[ômdCOç·?å>ÜÒ¬ãsYQìaY2¬ š0n&l=fç9yž×PÌ÷§>‰'¹:0æç¢ûSŸDæ hlÿ¤5c‹§Ø¢ð> qb“˜ãcD±4¶fVa4È1SÊ&¬Âä+µtõ!fÌ-ù½Æ]ilú eá÷hx yVü¡êÐ I9û_úÎËþaÊ*ļ2OÝ#n ’„ÍæÄ:× %vS“D„,§ç!àÐøÝ¾Ê!!VKi738ÐR:n¸«GÆ‚ÛÑ« ]Y°.Ä0Ö¼2­€…QAµÔ”O”ÑnÞQ>ÁRX‡®û1‹ÚxŒd†ïŸ«oZ WúA4÷œ¢ øDŠöøIãA£$šÌ­)qðì£þ~ÃrÓw+”¨nï—èsÎEä¹êX!<‡ÙÝTDéÝv&Ï §qk4h×'fÝ£Ù­À…tÒÐÅI9ußFàB®O¼rIbj®iŠÞ“ZË7ñ>°/æ2_ªöñã™ê­¹9ùó7Î}öƒ~]îŸ(¡¼âG»qìÄ>Áï_05âÑ#5Ò¯X¢*SÄ ”¨Í†‹ì¦ôÁ•åi¦û[(4×ø"/ÎòiÆË±¤h ¸ÚofÀnöƒ=jÓ8]ÓHÞí,…3ŒiëEá~<ÅçeYu?§Êc˜¬kÐfeŸ³íˆ5…;Dtdƒ®7ýP\päÊ„%~Ñi1;órÞȨ¦½™•BHÐЈŸ‘‹K4Š5Õšf2-'n°[Tzt"^gÚ\RL!…a_NÞù´ël³pG(MÉŠ¿Íõ¸mˆ8º'~ƒw¯Ëð‹ÿë’²ÒÓ\æB pH|+(aì8t,ìH{ ”x¢Ø§8ø¹¡;eŒ>mnª:EèÉïÍ@ªÄ†‚¯R´’®Ëk«ÌŒÒQ¹‘®“j’¶Ò/h9Òxì^ìŸ'EácÜÊH£ý™Ÿ¼ ¸Åá6jA 'nÐŒ4qkt+Cõ2cã.ׂ·UªBüæhñs,a<@å gqhòPѺÏQJalŸ |qÓ©ß®‘ªfØ8€º-WbVâÖ:¸ /µKжà‡î¾âQ;ˆ¤)TØ1ý(à`ÛoS3WÂm Æî†M¡ÂÎáŠk+‡CHšp ÃOFF3ÕÍ )ÇJ‹zx~γâ\–P(a°@ãhq“©®(áFo=iÄâµs/hW”ƒ·ãº; .»g¦(!¦eX\< ±kŒ µÐ½n.r$Vü•“¯Ão´þlªŽfßÉÊbÍ,oJ|ßôïÞÃÍlº"‚Qþ`†wRWbޱ^A¦øhñðˆµ_XÏÿ¨¬x¢P;“4méùÿV:~7T?–¯Û[aì#>?–AØUcŒoY^¸(á1 ­U¹œðÐYí|¬ (wâêÏ”vc&DŒ¥LFâL‚5AÜ]f]¸ƒÉ€·´.q}C×”Tœ¸{O¬ü qñDñ¼¢„p.ó°ÐI%ë¸gìÃvÓØ®))A‘›ˆ#ü……ãáË£pºrLJ‰ @{~Qšã5ûQ6ŒéFj]©ƒùAQ³3Whëé%5Ÿ¢ÂƒBû°GÆ'áp›ûØR¨+Rˆ‚‹så¦ù³»Tl|R6+‚»×GÅÆ8€Ý”†oÛtvg˜Q4ÑÌè:‡®~„—˜?<>H@wKÔðEI\ü—œh– @=ÿydÀ(9Êrk¤„88.w)®î1«Ð~ûôÙv]/ !Ó ž]?¾¸fQq¤Å©¢ÃR$ÈíëYúgqqî7å^ˆö¦3ÊäÏôÏ®L Ñ=,@‰å¬Òb†ªAñ‹5vü×5*Rúúòú¹ª8!éʯeôß÷\~V¿¿?Ѝ­œnèkTx>¢~:Tjݹƞ?ß(S쟦»áD-†v†á:\­é18s¦0uq;¨HÑ}0 Hš°·…Ä×E ‹Ëx›ö$Q  )áccûÇéñ—^›e—ËAe€ÿëiG}4Põ!wšàX¢µé ¯Ÿu¨Cû*KHe‹ž2vÐq­[Fáw7ޏ8¸ó5wk¤D !è#ZÚ?4ÙŒCgA=`Œö¡7š ŸBû4F2‹ŠÞð»·S(OØ]Ó˜?,¢œíçsÒ»—@”¨°öê¸Ez(Œô\»¼v·^‰C!g©ßTm@q‹¤^D||È1Ä…Õ~ŽÌ ZgRC$Ûr>ç±D´&¼Ú³fí¦d’ váGEî–Ë熇f@#»Dí OöL(ü†_"5B¼™ñÌ0u›.Õ`wÁ FíÓBš] …˜¸PZÓ™]_È_9 HI'MŠƒçô+FXV&F)kË1… ŽûfÓt,"q‹5¾¤ì¸N¦›Vv ó—9ÙlÆ-â6›J‘ÆGIôhýÙg ”ÂÃÁÝ,³#ã(§™{Ö ¡ìªD†oûLh…í#sàÀ?Ãú¥ûŽI…PœDѲ]š@¿Ke8¼H0† nS ¡0n©³FR}âð°G§0 Ù”©VÅ#×BÔC(…¸"ÌbçÙÝá1¾¢3˜èg`&vMQžEÉž(¤ªÚ¿MGïå),;D…jxWj¢¢ÖK?u³¦Î(ðº¬u¿g‰^¾Πñcï‹QȆq &¦a<{Ï‘©#Ý[šç»vd~AÆ®£s`ò(8âFç8rË<Ö-’¹BܧQ~¼;³‘qK´©ßí«]àÃŒÜ@ú¿¯ËºÜCñC"£Ñá¶8}| "$ÃïçšÃ̺;¿¶=„dض8Hhœ=äK~,¯1åf’鸽£„+OÄiÇü7O‰V^8¬à xÐ:º_SÅÈß‹*ôK>Ê7ŽÝЪFnY· ²j>gDš©¦¿×à ÁfR^º%š¸xæ™Ø^ºE²  §RõÞÅœÙvŪ_ÛÀý“¸5†œ­ Õ«x:ŠH¬ïvöÿ0²Ë'q~¨ƒÝ¢~^öiÅ­߈AâÌÛÖ`(Z8R¤DŒVw-Ð!~/Á‹ƒØ˜|„Žd6Ô¬¥måÀ×Þº…\8Àâæ„l|Ü싨`™bµ …L¸2K”Çm_Κ˜ŒËý‘*ZÎÏÀ‘&ávÐr· ¡„O§#žs&û >nZ3®ö‰ ÷¤µw·­²² #ŒšV‚16ìüc‚ôl‹$¨!:|æÍ{PDzbzÛ ŒDwé»Á IZÆûËm¡E Ûj/“Š˜¢ØëVÑéá¤GÜgEâãJ‹Ž}‘6¥ÜÛ-yåS°½@ŒþÙB²À…HoQ­i|C£M¨~ÙâöüÜ|b¨q!Æ÷8õÉ=ྛàÓÖ~¼¦†Ë’Œ5%妟,Ɔ|`px? ݪ}Ü'¡&4èçò,bUa™ÓÖÌËÐ *N'©Ÿ5ú˜#°e'šýYj(öYÈu7‡ÎÏ}Œ¡Môzëg÷(Š9]«Ò•³G·¦Æ¤ÇÝKï…¢ÖÝnS‰‡QOí8¬“ u\e,*Z´õ3âätçhp«Ê¦ˆw ŠªèÌf÷œ‘Y¢S!‹_Z;×™Ùê¦HÓýhE”¸âr¶º)’•±âLˆg⊾ÙJzŒå…‚ÝN…ñ€xde‘üÔ>×’ÎÂCäPÝ8©Gá·\HgªuÕÃJÿ}p®IˆÀUQWí§Kî~pû½ä¸ØÉqÚð1¯Ë÷DN&=#^s 08öNž½ì‹†É/l!(æîZžU¤Œ]põÌ ­ÍN"©¯ðES(隦)”ĕ콛s¹å ç)¢eä8£á¦Ò—ó‡Ç°î÷°Át•¤÷óh*2.ÿQÃdb?C¬6#Rb£æuèÑTqáÒ äD&…Û%·/F…¤?·D DÝÜØÏ ê«ûõ…†˜†»ý|ÈsKô·gBe<3_7Š›BC„632ã¸]ÿZ qtJ>˜ž/!f‰z•¤¿::û=gÑ! l<9GÝóRì4l¤’+ŽúeŸ±B‡qïé…g·F},>_Ì-ˆ^uû²¨”±r¯W'·¦8Ügi Z{­Šg*ýø3¼ïVRéÜ«¬*e\Äç[?¾%öÇQ•r¼v8Îb<²ì0r*ûpÒÌÀµÇËÑž›êeHU1  ~öo“áò‹~G×ÐM9¦Ê“Á?£.%¡Ð 8¦Ê“µxܼóÙPåÉ ™Æ¡ÈpÕ5ÙS°Ã¾i; kÛcÎ%L䙓¥­-ùÄÅ0Jås‡˜àpÓ)¸á¼˜Bu>ŸcØL徃°³žè¯\Y$˜aÆSïŰDÀY’Nz‹êËjÎþ‚Øwë÷YO )\C8bDÅ‘Ñ>7Úš‚®”21æM¶Ÿ"ŽÖ¸'žQt9Db nHnö#Ù*—ƒÌga¦’ž\TÈŽò2 É: ¥x%{/’!4êhn@k¹0 ÉÚdÒ>Îð:–©È! E”Ž yêp©ðã¤;=HùI¶$ÓÑý¨§4?Yõ÷Ý<¬ Õ<µmDKÀA{ö€ÒtäÇ\6îÔLÒ´Ÿ)gFAÁ[mŸ­!ÿìɈuK9$ö ûÂ׺Cަ‡ñ˜1zJ0Ý¢úSeÊÀRÐÓ¢…ëöäTàÊü´/·Ÿ"šDÚ¢‹xzØ} p8ÐÂû:aÂn‰’Mšt–ÛZÆNÅ ó'pMF°["¸aîg¼;Î~¶¬Ü0 0Rh·ä)ÙôËÌj&Év´9…eØ94Z&‚¹%jT’êJ¦ü9F±Ÿ£àQ¦¸e,üµžóó¤­õkÈ0âm²ûY½ ÷p¿!˜–±?Õ»dNÆJÖ¼o*nõ‡Â&µ6ûPÜp2z……?³’tk Åèë¨exw–Ã"–Ê“ÁÀq½jøà:ÏÇõ•Qî’ÚÇgé_KO¢äÎáh —õê^xœd¥e;Hfiâɇ³qK‡Í»lg° xp·¡”Œ ä4÷*8â#/mïÏfIî«Àˆ7Ê;ðúÉÑ!« ˆHîccÇ'$Ø~'-ÈoÇ€ï,{,®"â<5v¥!‘ÛE¤Ëw)ÕP6™fñÃDôSó»ÝÚ´JLy šJbÉÝ’’‡áƒÞÏ?naRBVMI¶›C/>á:œYXéºÝ­Ñ'XH¿8F?îÖ!ö‡8ìÙÌ %V†È'{tSQÁnkD´Äʰÿ¸¦áÝ+Ý+C<¥:óø,c{‰hN_ʤ¾¸ýÜ&S˜p"¨IKòxs\S½z V–q)Þg©Y«Æ\T(Ü¿ ß0*…LŒùpÔ¬Uø†ã\ì'ô}þ‡ëG bo2Xs‹ê0)~G(ûÑn?ÇXjmwî´C0¨šWá>¦XLí­0j£o2ŽB Ö\°Šlùž´²I´¤9¼hÙ2 éå&†Jj÷B‘-SºÆÅŒUÖºþ“ŠH13v^š+Ùˆ¢5Š>-¾ËÍù×Û.ñ6²Qj€?|·H]ûükà ΎX—RašÅËfƒ÷ö*ÔÃÞ~æ0QËmëQ· õáêãBe€àh7«P´p‹?­ûãd–Æ1݃0gÖ”dIÊ—ži¨ò1µpýó*øá—†6€:”%nÖ‹È’@Ýqî²oRÁOn&ݵÙ:®à‡“êò@=\väº?Œ¯CÞÌNïÏ ”V‘/_¢¬a¡qRÚRÅËÑÍLPÅ™>Rn‰´0û~·XÑÚ›HÃPª”[Äÿ-LU¼LØИk—j—Ç6Àü5IÝš‹51aN鮥,e Fu8(šú8WmÕ§ ÄØK§g8•¦{ֻɈ¸¿‡¿­šLš;X2< ‡¼.u8Œ? >RÊÍš2Nà⎳'¯í·ÑJéÞ!ã&n$ÿ9êqˆ)Î×,s­ú*‡7A¸ .¹5êqGEðö¦Ã:—zâ õ˜bµ ødGÍ5Ò–Õ½;jrˆ^µÓ£r&Ú%R*.rGIÀÃ-‘Z‘pr¦P¨pmW«‡å|bs²GmÉ£PâÊ ¢œ{ ÍE°+¼—Q|!wR+ 1:DJ8ð|¾©˜“ÉC,ùáuš5BBÌÌ#b ®ÏYÊA¤®ì„7^ä]îc4 …nŽeϳf¡dÊIq€ºGp•ŒŠ.˜>;Ž›ô¶ÔñÓêòuºíK‹r7›v,Ë_¤ª\îŒPå2¸r(ïR"î)ФÑb{œˆ-{œö±­ß´ÌÍ%pb›tÌl¶ËÐ×-QŸ£¨wI¥Eéÿ%pbìÒíÎsöïR4!)× ²;9L쉃Ež÷J ”ˆ !A[¼Ãm*zåžÁSsg¢¹]¡^gÝÀ pîÇWúa›}ÓøðdÖ+ #É”PlO·¦(Ôâ«g" ³œ’õŠB e8¶Ïct÷¢í‚"v2Sà|¿îøt[AÄÉ]C8b´çþS´Ü„¸VD9íJµ­"}N<åx¡÷±¹[!DüRâ·ÀÀÉáÖ”V1AGR‰ôµ_¨ ˆ7¾ŸMê©Fík |3íçÏ;˜K-Å"o:¥â®øaœ2‰IM1‹jxr†tp¿Ç–3çÍVøp'ç"Ž6Bg+zˆ 2©qT×![e˸X½lØîgU "Qn9:Ñe®—ßJ@$‹&ÖàÛ¹­šv+ýäìiɯ«ôw!£|ÄŸ:ší.ÜC¦ùé7cw6+»Pñ Ź ¬Ûfnìâï?ÑÄï³Äç­¼Ãdø’ª¦áf?»ˆ—yM1j†åh·© r°ÅsHhü¹YÖÂá˜4 ðü¦·gÙÂ7ŒÎ€”Ɇ«Ø²§¢Øb g6 ÏXn ±ÕýsásÀ…²__Á‚̶aÞÞ(&Ü nTy‹àÉ8}ÝH«p™±—t°·­ÒVqA4¹³µ·Á=5…‰a‹ÇãfWîo!BPyy~@·r/¶3–ydÀ±I:[ ‡t“4¼›I·Ñ”pøøò+šïø‹± ‡L0æcœAÚnQq·Šm@Yò¶ Ø£ðN>X'ÝkG[áÃ& “(ÜWÐCr(éX¦ÒžªR‚IÑ_Ëê5·¸Æ¿?nŸeooAM¹‚×€òíÞÉïÁ"Ägo8 PnøA–ížõ&ÙE¯¼0¿l?©?îÍÑå~ÓládÏ›YTJxàüøìf‹Zy€àDõ۵Òð-jåptÇ Ô,N²K|rTyø¬N8ÁŽ?´K|2çß…=pN¸5³¾8°Z`†5{z»Ã™:š8ÓüûAÚ%|ãvÀ½³„¨]ìVmxe‚!Ûkw ƒFqLûöz/v‡ßù á¦Ùë ¸Þ(wãõÁ°Ìrö·‚†[Ibˆ` È[ACÆ(¸âáÖu\»4Ä[!:% zsÙÛ[AÃÄ@¹ý3Ðâ0ºXTþÀ€×q¶‚†dôuBÉi±íOZ ›¥-‹Šáá@\tã:Ù]¨ˆ±¥©ö_<óf1Ú]¸ˆTT.”yÏÍ¿wá"¢ÕÃ%<.»fÛó]¸ˆë’UÌÀ>ŽRÛû(qf|jcyùÆV3_·U*Q›9»•ŠG;ã¾4W¶ Q"¡¶“ÍŠŒÙ±wQ1£I /ý(+ýC¨ãE™‡¶º •˜ÚHbaœõð¿/ªÊé†éqæ Ä,*%B{ZxÓÝ„h+ŠˆoõÈ!ăLí¶F*à£ØsvÜæQ!3Xà‹#üz„‚݆„ÐÇy½lÇpÔú¥^Ü­gãÎÜ#$DüîpÛ̘ûá ñÛih „¶þëQ«»IüYpk©Ç­GÜiº :¸+j¨?‘{lBDDŒ’†Aè†ýa"ѵҭ‰sÞ~Œ\(Thâ¤îÕ9 vüÊq+òîGÑèÀ‘©!TuÜé*UͱåD&>¶ëx4ù~ê®m$O×Á2p#†+8†:ÀõhvÊ9c}DZ4ŠwD¨ KšP›‹û”_3ôˆ–‚éà¦- æ+ãÿMK³¿Ñ%Ÿª/‹œQɨ„ô܇nËéûŽ2gÚ$òÊÜiÅÚG ˆDIˆMɶ œ±Œ—Bsw Œ2[ìPŒ>F^Ö­ç(~Ø2߇֥OëÀt>ä"À*¿Ýf© .™PDi®é&x§À‡ðC1ÆY‡ÞÅ.ÒÞ³z,ˆ°}›~QQ­Ñ$E)Ï¢¹"üß×S×õ¡üköh+¾‡ÉÈG|E”{”}Ø—síÅårì-_ÒS¢Æ…OŠCŽgÞY™ÉŽÚA&ëkåæHd!›Û Ê?Œ#çàsý?…[£Û9ŒüP¢u 8 &bB’&ÿ)˜ˆ¢²õH"€{[ ýð#"ŒñÝöwkÔ =žI‹VÖ…}Ôê}iÔ,–øà¹%Ò'Ì“Ñᙬ}ο/b»ü|z{^¯Ò&,,{´ù'GQÄ/1P½œØG¦0"Q=3êˆEC–èV©~íÆ›Oão§DG‘Ä<Ž•Šôÿ(“JüHÌ3k½mó(b‰äR'ÈJò¥hήÔ‚¬@rCŸ£Xbôe7žžÀ<|·Fo^¤%@—ŽÙpIäÝþúL]ÖàœBMoŒ.èè½Xç(Žÿ¾¥Bû¼èàT/D002,órk ý Ër½óttk4k{“hÁJ,’{#Š ™Y ›fÇ/*ޏ„†ÀNOÚ§]T\> ä˜Ç!"’å~€%˜Ý£šžÒ±‘ýþ7˜r¢é)tD¬ŽF³í–hz ‰áq€Ž±mtø93 }j¾x*ÏŽ O%døA÷7°R Ùà’ûHNt³¿S)ˆDÁ$5ÿÚ‚´!"pÆ›.št¸s4r¹¥éÓx¦;qkJ¡ß>Þ8’)¶í~Jà2©ž÷üð)}¥X—_|™»/”~xUn‘(&°èÿ!Ä;¯È–V¶Ø «UIõCl9°ÌéÒ²ÎïGQÄCÒÙ?²®‹GAÄx5?4'Pì?E6‡àÛ:Ì`AšŸÂŽAB%ÂÔGšŸÒ£5¹ë `9jÃ)Vˆ(J«Ovvf#Ü’¹Üw -P,[Éß’¹ etâàoçš«P⇺ô&í‹ó®Þ¢kÆs`ã%×r`ÕýÊ¡pñË'jüÇ_WKÄ:üÎÎpàÛÕ •¬^(ådsø^ RÈ^ß!ò ’[£`â$ck~¿"X”€pÍe$N¦^ì^z÷¨•H´Çcþ ¥Èn9%$r3Äq5ßMËG·F냷–Ü_ Ì)r•HŸNtxxþ¨Wrö §¯ø]qÛs‹vYô‡]† Ö(é*œJÑF4Z/Gânž àñÆrÕlÿ4Qg‚UÌäè/7­¿ÊGD þýɱ#Ы|Dä0hNbGá»ÊGì°%™ããºÚ«âfê°AdàôAÉWµÍªðpÊn7ĸªm¦âá€mhV\±|5_K,YŒZ´ó*ªÈ'›Üf'?ºŠ*flÛ wÙ]EÑ²Òø$iÒ™T^E ááœê\*n·ió· Ñ6ìÓ1Å­*>©˜Ù?»YCÞ+¬D¬‰áy,È;Üàì0±†°2¶†Cn‘ž €\ËâÿéÖ¦ë=0%¹„Ö}Ë&_ñCt#ÍI¯>w(ˆ"¹# »uØûI¹%–Öž~»¶¾Se+| hE¦WšÒ3`…ù¦£v_e%F}ˆ§2Lßgya%vˆ_j”ðxû)eÖØFæ¸1§µ?¦"ŠHPÁE²ÉW·è™a!*¤^vhìE±p !àflGš·¤1#“ÇkÄõ ·À‰Äá¡ßßtܪ[ôÌ™O»Ù²òs‹ õ¤x·™éA)r¿"ŠDv|i§IÞœý ‚%]Þ2ärŸu)¿š¦‚á ½Gœã¤}º5zÄE*Á¸!¹E[wé8¤ áme«$ʼn–Šû—CÑñ(®º"BcþàÆ w鬉éFûðDû¬ÇÕ8,äPd%eÿ41Flž Uíf%¶WðÄv1Ã{õ=+ºâ‹ˆæ÷Ž(B`ÿ¹%£@S²3fè8ôäª5"f"ä* ¼uÜO©ÖˆqiåŰ©[8‰“6dSÁS¿¹3ºpñÕF+åN³‡[8‰‹ë Ãn)ÏÜ£.œÄ–.rˆí©CÜšb EAÔˆé':Št %1>ÞAßT×–‹?b*ËxäL“íIu W5#gûÓ2–¸ÙbùUD ŠUäP@mgûJßÀà‘÷vf–{ jšHl„g¿-b A‘Ð|Ñðê·e©B‹Ðð€6ºK{K*¸øá7”\ñm¬ò-Q+Q¿‘´2V” Ý /b»?yŒ±ÜK¡ð"P1ŽY¸a:‘Í-èb¦QÌ9s§þû¢WÐEþ$MY¡:ÈøtJvTµQ`ímã%^E‰iÊV‹t<³^uMlG«òâeqµÜ+®‰üaqØ!·xVßø^d.JÙÌ`ìø‡W`%ö#^O®l|Š/òÂÆN%üN[£alxe€ÀÜŽòÌ>ð’±Ce!ØÜx}»?¯˜&žF¼©ÞöïkuCàA›*¼x•ì'•ÁÈ{<Šn„…ê_‰kn9€d7€ûmKöJ?¤ÚÂv¤?v¯D¯t<3ú‹‹6*\û×é<SPÄöQ„ ȃcen{‚v×)ØÍ^'ûˆ3è[îö{Š6¢SI—>ôŸ+ŒŸÂÑ»òÜlîm÷·âÿ#ij»ÿuKz3M<S’î¬æ^…1 OEç—²Y·ªÜ?LðSp`Ó+vŠLg!›Çu;¬_Ö+vбN iH;u]ÙSı±¾ÝÊØžâ$ÒUÑ´t¯7ô¶øq¢ŠˆÖÜþij–tzFé$`o%ÑÉ H†d%}v¯ âHø ÉHLþžu_x‚9‚Œ¢•¹<=i‘8‰ÑŽáöæÖ”èÞïR²Ç=Ûm(ÕSE®Ùt8À1Øæ¦¿Âd„°4aàôžº ·JÏüºI»ÿˆõ>®|…ÍHõÄì˜MA}èöPá3bK¶µîwœÃÈ«d#u'ZnQE I F.“â÷µ~Ë£Ý?Q^óf†@¹«û9oœä„#V§­t>OŒÏñ¿ÌÇÖçӯȡ£5æ>¹q$nÛ>•CgÿŠA1wÚ“´¢ãeSPv»Öè•ç/MèOØxöÜQÜyG¼¨ÕÂ<‰ÂfŒ—+AªN·¨ Nøm¯´XVäýv™G-tºPÈop›³ã_N¼ƒ §Ã^!3¶åVzÊ[”á*cë˜d@fäjé‰!Ó² 'wš%'IS‡@k_ÿ~£÷ÿh‰iøÿóÿqñ+8$èu'Cøý¸¦ÿû¢‚C¢Å9"Î4Ø=óDÒ–3cZxW [­$nf”M[9^Ý¢R0,ô$¡FîDÉi‰“â:£–åf@ï”ö»•‡é_·q5OQÈARVÛ/ëA·Fvf&=)<àin‰& „¶Â9韵v/#4>pâé†üOX›ÉiË&7z·¤ÉÔt´`üeî•ütBá}0¤Ýv’—¸•ŒMl|Ò’sŠu÷O‚Š["JéOÜÌÜÀvÓ\J1øz½¼ûÝ2”Ê_bª«âË2{ôî uUœDÇ!Ê™èî;Íh鄇Ǿ!¥vßþ©üi¢ÿCé{£["3©D‘ĸ%Õp›’cð¹óꥀ§GWh@ކùN#ìp\ÞÒûsŒ¢'€ch}¥}áülšâ¼>Lj¸'´»Dršâvf:Ïî|9ø/aõÔ{˜£ö|¿3Y[g¦Y¦]!ïü5‹ŒÝ(_§ù5ÑZÈFÃî•yÀÃi×-K”½:ÿþšOFl…ÇÿÓ×ÜNçS€1Úª”ò]iÍ™kÔWu ²#¶ç¿>F~üØüøÞÎñ»ýѺ _Ûˆ}Ì B/JW¼H?"mÜ#:hį2ÒLîÎ'2hŒæñ*L‚¤Á!Ï×ôø§Ä;Ñ•iðïó#EXPífß1M,>µºfõAVß§)Χp"GÿGÅQ1ÌßXsʦìñ£Bú÷‚0Ö÷4„³‹é³n[ ð ÚQoá7G‡eºzÚÂi#“ ÇÀ‹E…¡²0 ­0_s Îù ¦H@2º¥ePƒX$[á‘<Áa;ÔL/c‰àn~P•Þrvè€~/§Ãކ8tÃ6€C*Ÿl°ÌHu›GÄøi:jP†mD$±DöÁˆ åA„.×ê|j¥8¸I¢m!øÄzyÊ’™yü3÷àùCŒ²~r×ÄO´Í$Ç{YÂò—À¢r¿¦â‡»±Sy™)ê´Â‡q¥ Z†ôÞ´ExÉ^`\Êö5P-tФµ³78Ÿj¡ùƒâ‚Œ3§o§RH 7ù>;Á|Í>{êø°“°žÖ DZÕ`JÇkÇË+A‡ ã‹ô{#ÑX‚úØvï(~ˆxœ6ª£º6dˆ¿ï·è¾cg~ ´K4Âa9¥×ÉÖÐ"ÿn ú €$Zø{¶¼àÁÏ혠áÿ,!¬’(AÈFvwª‘"n\†xr˜¶ë|b¤8?Xåѧ \Ý~V#E~ZPuœ¨ì¦FŠÄ? ¦üöS„r°Ù&­ßëTT\ýÚ©%é±£“Æ’BMú)ÒQsd¼YT‚úpì9?®_fÔkvYƒÖ†ð÷1œ¥,މúv"Œ¤Æ}ú`ÖèÈ#ÀF<™ìé) á 4¶@†œ¼‚á ,‰*õX÷3œw2€d§³>Å é$˜85ýþT¶@ =‡¿ÿ. ´@°î‰ U1-ãg¿”Ξ>]Û×ê\O úÖtcO}¿—ÿn“À8·Fò»QÊàªÉöûWª*ÐÑnLC Ôï%n+.’ “Ü#;¥ÈÜZò0É~vk´øÈ½ž˜=E)âöŒBƒsSb²ðâ²…Ä®t §äß3©r‡ ƒ= Ü1q}Ù2UpA’] ùPî\3¦bàó{ÓÄß]“†åôi±DmÒ¨žØeÍÑ(c¯8‡'šÛé(ÔÉzý# œÀ¹ÊþüªsŽ{ã–!ÖîïR3Óà nÆõÍ~ŠrÐzòFaak:å$žèíâ`æß̼I³¬Áæ÷ ¯˜5š¹óÿz“,KûTáºè×P!D!dïZ¥#fŠáLÛÐ᲋¹YdMf¥-Ðuް±FöÀ‡š1î²>k–Žþ÷« ”2fÚä]')‰5*sãÀËU» TæL¾<ÉpÒçÁùªÊ¹>Pn®cx’±F΀¬„éŒpýÝ90¦8FÏn¿ÌÖÖf–e?C®€çn¼ÍDµø%j§=0Oæµ—“@‚\m⦠®!ð¶Ë§€²pÛy.Xýƒ³d ‘ù¹À:Æ¿— oY;­Š®wÅÕ-õ‡aìΆƜM‰‡q¼n…ÁpÞ¢Oêuvñq!Àl°¦‰#­[y„Ú‡¬3\¥c?6^3ˆ5J2‹'i¾c{b?F=O0Òƒ­ó Rº5…oˆ»(´9"”IÑq«¤ LTl6Ûµ Z«)ͰiÒþ“ŽÈ¼­/¾¬;Y;VçqZ!^²Y:Ñ}§¹Q$tw]4f/¼2†ãú`࣋¯­Ì NU‹Š¯:âB¢k^rÜ¢’ÛnU b#ô~·HÑ¡èì P’/ß욢mÎ÷KúZ!Æ­»;séL6qkTÚ̈–î+ú/ â¶"m†¬}Ô™¨dÜs+”Ã1-ö—–Ѱá3-‹â•ƒ…tˆÑ]îêi½ÌŠ0éåvéDgÛEÅç¾ Âùò„t/EÉnÎHÊ•š´í"3Ó’YwΓ4Œí0¢¦PáÂ]p( ±ÀýH%t%*Ä»f,»»$ûX£.ûß"ù5Ø8þsÔEwÏq9Tâzu›A±BÂI&ŠÉØ«ÏA^­ø&~D=CMÎãø4… qSˆ½Ã}ß]XÜi 2ÿzsf¾¼4ž¦PáŒ'IB¼®~@×Ô61ʉEFØX¯¹¿Ø%ê{ϛΛ¨œ[SÌ”R£%yÍÙ@ž¦®‰ø@]´×iî–(b èËÑÍýeµê›a FYh ¼[£u0®GJ;ܧͲ z¦èÄÿaýBx!e ÆÿÒÓµÒóÓJ^sÔ”œ¡±œG,Ñ`¾¤ î8AÒOجQr!l+ïÌÜ£Vu3N–̧ [¶Œ)âfÜä*3v¶[+êæ—)vAìrT§Ø0ŽÙ)—)ÍdÖ l˜¼Û“–MœpnQåò2̆xbûs¾ð ?þéܩ܉:Ã~+½V\áw“ný¶½4‚åéZ…8º ;Þh…p¸(éãÑ£¡ø´×*á°qÖ‘Ê3¬ä‚vLŸÄýá LÒ–,¸\? Gêû!1Û.Ìý4%Â${Æ*ös3ÿ¦ŒC€ `Ѥµ!üY…¢,#º‘VÇšbžÈf{Š]áPîVÌ㽋‘ ´3MÏÚPÎîK|ñC«ÒmÍ-ùÍÌkRÁÝ€oñ$¿¹]Œ]¸ôùžîIK~3y7´RëËäN·D dbº.L¥ìwV#7ûXN™ˆå÷’uÿG&¶½¢ HFÇÄ—V¢ÿ˜A"‡f÷¦ ‰ý’Ýþ“Ó0ݾ ’ˆ ³¡«X<÷Ö()kCiC††[¢ö' _0åzNhsš@‰ Þ5å´‚Q”¬]Ø‹Càøìø©•¸•¬ â›7ÿˆ5me°éãû`ùm\ÎNGÓ—‰q9úç% 2Š…+f·õ”R WTî¸ÞxÌÝn‚ Ž(ãG(Lõ4á’²Ù/Iup×aAQ@ãa€äÄð§ñeþ2ÑP×ifJ …s‹:'\,_õRÛ ºO†,L» ¹t4LÓØaÅ"- ¨‹ˆ‚aby?MÕÌ04El{õв¦ô%•÷Xؾ –ˆYÒ¹´ Ÿg>§ ˜Ø>¨.PóîpòƒÓLüÈƨ,~T¯Ü¡™Æ)Ùƒèr—vN‹|L<^N¦Ìw·`W’aÚ{bM™C·D3¸ÈÉã™ýnM nž5 5GÜöƒ´ˆÆ ‘ðñTÜO&“áyãŽê.\-šà[Ú|ÂMsŸT@E² HU™Ÿ`6v/"f"›[ÏÄðÖÝ9Ú«ˆy¢jä%¿ÏчO¯˜"éÕÉÐÅåÌ~RÁÉ‹ËØ yö‚).ΫŒwI³I·¨¸)“ÂD¨=ccÇêEƼnF‚Ç+nu§ó7‘7Â7®aQŸ®ˆ"n™¸P`ŠóUW´¢%ºå §v>v³*¤8ášÄÍÅpI{xÍéš[€°Ï<4Í’’Ù [z?qªöO“À8ôè×ÙÕÒëç|‡qÑÎgÿô^Ôì!{†úÚ–§+œ¿cû@tƒ;zBW41í ¢éËT<‡t£§øÑp`·N‘[^(0pÝç0жs\®GèLlÄœBó„%e?GÅŠÑóA(ééëÞÓ&6ò„yÐöoS×Ì8 £$9ÑWEÑëö¨¢‰±ýHåÃÓÒÏZú(®Ñ$‘H†£ÿ>Ò)Ð[A]Î`Yw­íÈÆqÓ°Ô2KÔ'q¦QbÏ‘ŽýÃÔ(/é‰-H¹%B:ˆß#îÓ ãæsî8‡hYëðââv)ѧ«d™±îÅ#æ¾ýþê£ ŒLß¹°ÜI reRxòˆ&Ù^Üó”Ϲà?]¢CYúÔ:1ÞP2Èh˜F&tzÑ)Ã꺷³cݰ±jåûcḗ]s»8%®k*D®0ïLdJÛqyÍNzÁçÓwHÜhN•xz¥ âÀŒ›5Æ®Óî«\  óAêÞ¶·\MrŽvð×uŽ3ÕŽ5Å5S(üØmÉ, D¼€îy¶¸ýÍZ褨¤*ÏÑOºz%ÂZ1¡«·@ˆS]<žbÇ1tkä<ÈHrÀìmèj—È›‡¡ºÎ{ùtá 6ü('îØ7Y"àÁ„OŠÀt·fëWå FÝoç·ª#ò5Ê@šíÀVÁÀ}û5ªG8›o„Ëb”æî²Rè0Z?Ò‰TÚÎà- h¥!.,~`¾nSb‡„…`— ÈÖ%vå&BC¨û´`@/±+¶¢m‚ˆf¡ô.èa£dCôÀËIº¢‡¨¢n®§ïJCL×9hßw6§•邜ÇIFçvmô0nØ ¸LQïv§ú#â§:ÑPu»aaø¨ÚÇÉ<ÉN½úUÊ<)|ºÐ Ç×èJFüâüÁpÅy˜£x³H;$T”I }{Ø%xe®Çž¸#»FUê Žj¼Ý>P:bg‹B*[xKÚGW<Ð kFš.þF‹,y; h0òwÙ3‰¯ËÐæƒúL(,±ßÇtûSaÊ…½†©¨¶¢¨þˆ/£²(þ×g‰Y½ø#N nÏ! Ú^¥êˆJù¢ $QÔ£¢Wfzwb¹lîáD §ƒÇ1&{AãÆ"–Ô‰ë´á8MìmôD¼qí"“lxQ”ZÀ³× ç(ýá’ ušåQ‚œñ2{ {?—wŠÓ°–— cM(×ßv㟉¿t'ÓJ.Æ? r¼IÜ"9 ]_d 5³†È—aPÆÿ7b3 Ç,‘ùÒNI¢ m­ñÕ­vB‘¹fÓ¯nb…çθF÷JŒ‚+¢¨'ù¸aç£àŠˆÎ€KÁI?÷ÂŽjŽHÀž&Ñ=¸&mX‘¨fb®_Ú[»Ÿ¨ÂŠ}œZhký"“°MaÔ6ŸË ˆ%…¨x¨ÊÖã*smÐ(˜â„)6ãŽÀ¥ßõA£ðã1gÎ0ÁTÎ1ÙY9ˆO”r=;ÂáÌcbUñÑÅö’6mÂer¢¨™‘S0By禸Ë,Ò²ƒù•$8îÏëZ6àöÌ1Gn’;!‡ˆ™ÑdÆÕ¥Iã9Øb²"¤Õ‹Ê.n ËH¢g¦”³Èðr5„GèOÝY¬œE¦ ÷´‰Ó)ɇr3Yýv:ãŒhÎP¨‘ F”¨¢—-4jLÎ V˜38ÝÉP¨f1™ L¹üÅ7õTÀ'™µ ïîXÚLìtònôðž&ö ÇWà 3N²³ î»_[«WƒDdØÌ†ø‘ž#aŽBWD´ž6NäÀ¸§]ÞÉd˜uH îwÝ•Ç{š›¥u %+Ò¹75QD8 tl­¢4›ØGG±ìÉ-h#DÍ:v±/R·B Q£’iCÈ«s{D×£ˆÎ`w zìÇÍ|‡âXW^8”<Ì>jŹz ·Ææ¶›e¢Ç*œ¡Ï¶9Gá¦Ø¤˜0 ”—j­1Œ«3ûÿcËÚ£×CÔ\ų¥¡Û§Gá&°œVwR^ퟧæ¹Õg#£æ³\󡦈_Úðu :Üq”l®cr‡º'{•l¶ê@¨Î€nÍ-kgÖ‚ú|?J8 pÁx)ý\@ΉZ@¸ÈÑP»w¼ -CV.æ]ÎÛŸðzY«O6Ñç¦^£€Üv(à. 0{IÜYÕ¨é¢ç»;6ÜQ\âYHáºyÎeº[T T $½R9}Õ¸e? é…W EÞÆ­‚Øçù¥šÔѬGÁ ;^pwfÔ’öÀû@ºRP…øÏ¡5Àr8˜”¬gBtqùŠÛ,ê÷€‹CbüƒX`ve+ ‘Asr¿£ƒv ±ä÷i°\âqn]ÖÜeˆz­D‡HgÓ,²¢Þˆo&ãän¶¿†Øã]j#ŽÑç_´bŠþ¢‹çåðí©ÖˆªÞ á]ËvœjŽˆÑ}ú-Ï8í±Ç$u'n‰x¢aMBücRÇž‚/F?B8à$YÑ÷óýZÂ¥Ë?h8Í9]Dy–b:j~WîN±Fœ¸"Æ‚Js úkD,£9”„F¸{cŠ5"vx8¼fˆ‘«&§x#’ù´>8ç8‘ÒToÄh)¨Z{vöî«7âºÑdÆ@º”9&§X#¢£ÜØyOèÕnÅ ö\QJú|6ýéAi½¨;íߥ¿ý:ÈpG4û~Iš3q60²Ð‡LwóM sŽÿ$ÚÁgÛÝõþS²œ1ŽgÃ@é\Éñø½„îý¦`|N']ž!¢‰%º©ËC€×/_ÿÈ aʃ[R~|\ЈÏkVš6Å ("Ê,f–?;;Ø¿ ’(Ëì±@#Øð2¾ÞÎe l•üÄÌöpHèÔ0ÞF:÷øú™´à–¨ûMW¶ÅÖÐÿL pf^nÃésm‘ÚüÉ.Cö÷:Ô¨Ê)–‘rª¹~-aÜ“39¼ÝÖ/páŠrâ½ 1×=äÂF| );¥a˾b Æ}ϰ‡¸V45nÂ…—q{”|ª»}jJ>A»3'ò€è„ìÏY 0â·;Ý´0k.l$F®‹wÜûìPÀB|ä9ý$ 7ñš*n†¯3ÿM²¿{r³VÿƒkÆ9-{¢++çä4gv¼ý뤄†'‚µTžªof ã„ij`¦ê›¡QÌŸ·a¸àÑXS㨠¢œÅÝÑ nçüǨ™®“Ëç ¦²ùïÃC[“ˆN÷ TˆøC…¾qð·#çÖ«ñ¨o¸o£–ˆ˜ ÷ôöJœÅ,‘»€ÈŸ ~Ž]¢Óƒ(”â×ÛíR`Â&BµAµâ~Ï’›Š¹Y¦J»½¦0!“Ë(~V>=$Œ_ Å(sºý© aúbM é°€©!¾1˜O>˵NS1‘ঠÀ‹öo+^7#&7 3§¶žEÎ|/Ç>8‘fÂÅtÓpüºéÎ,ræ¿$#LÈÎ]¦Hdküô ^»5zàwíÝ÷Y àTF"i«Œ|QA>˜ÏjŒØðº˜Pc|eP(‰ïmæ ñê.‡VÍø"Æ9€_“eãšýݪ Ž#´ãî˜ÉSÕÌXô“?t;wª["l“(Ô‰ÔÚ°ÔÝ0~5s”éOááuXSÕÌÐDq«‚ahËBU3£ÍÄœ»ý8³š% nÆÜ䣷7Ž"‚˜OñÈlw«ˆàNÆQÿaé;rÓTD÷5lX”{( <ƒù?æ…þþ(xàwM6:±]´Ê"X™qàUeŸv/Ý*I~QkÚ€Yà@(ƨÓàC,Ø×›¡ýÇë#òfª\ê×™2C·K…ŽÈ4oþä»»J’S¢Ã‰®ïN!"òR?æÄÓØÛ@ˆˆl´ØÔñå{š’™%‚´´WGá==: ¨à$.‰|0o°˜¢ŽØ´ÙÛPPÁ†ËDŸ40£ÛŸ_PAr/:q„xߨbZ`AôDÉ~4îæïZ…|˜CÌ N›‡¼¾20$ékëVG´”{È{ £îh9Xt)õÀÑNfLœÕ.ëR°|I;D“å¶æh—™Æè2.tÇÚl0nøíöû°ÆKcSâXÂÙ$ãîÝ!½$dÏ‘5â€tC¼¥¬C,ú€q‰gjTYJ:ŒVÿ…ø4-÷k)çpÒØÐ‘妯K9‡ä¥~ÌÎQ,¹áôRÊ!¹iåÑ €¶kjÜ*1„Ý}i8dÕ4æèá!m¾Ÿ¬YTü Qåñ9æ6«ñW‚IÛp];`\‚Æ"FqŒyÚ8Vq¾š £ö$…9hoÇÕyKC„Z raÛ­*ˆ!_¨8n¼0ŒÒ¸eJ˘3·DSWò'xå†=0ŒúüÂØ´±«X#2ºzù¼£sqõô*lýñåŇᱹzV±Fœøé$! j87ù\Å‘®0ú=ü“+æWÿ¨w¢À´ˆÉ*YÌìšÔv‚Rº?¯d1£ÑÀ&¹“µO_%Š9“ÆsúïYeÝ*QÌ aDV;0c•$fˆ± Ïá"?w/?ž&³0D=ϤKQDJÿ¿(wàü¹­7J™ØS=½(I­LhÚáMá…œm1Á¥8"6°De#ƒ½öÜš…~Ý/à “E÷ŽW‹Dòà)~’<ïÖnbÛ—‰Sß­)•B¼­ ã$¸Z'@d`“JR»¦HÛñ/‰li‡¿¯YÈ$ùå?üÓ†åZ%†™ À+þ(°ìY_B˜ÑÞ0ù` ;òªÚæAÑá‹A5‹Š¶9‘qG=ûðж9ŽRNmÒ#‡5GXJ9&ç6ÙîXPÊá@ ûÈPjñ*¹Ç°”g†šoÁ½ 3Ùíí%x2IÞHßhž¦­Î–ðÌ2U‡ôöfsÅU,‘OLn1ä'~‘n.£“òáÞ­VlUÊ! ìF…{ 5’™¢yçirìÉ] '–ÜFà°íª‰Ìi? £-L²ªAbçÇYm•Û %‘’ÈÉÖÐxݪ’Ò}ª[ƇTNö³*ÙŒ‘îÂf{XçƒUR™IEJ=ä÷ø.çuÖ%^«I»¨/V3í7γۼd2G_„Ñžq©»T3™étâÓïÆæpŒ£UB™ÁÊvšî1­Þ*©Ì¹›ÞDiÁÒÕk§l ziP†»›cE¬S6ÆlœÊbÑnÕ?òÛ‘t8ÞprÚ[l:ÜÁ¢îwàÄ*DÄ 4Fm-Žã€÷uÊÞˆª«£±­´>4«P™pE_KUn…"«PÙ%ý‰î4+\ÄèrÜÙÉŸàÐ×u˾¸”™YŒŠíw*ûê0†ª€h6âuô•:9`qóÄi­?Æ«µs€‡ÑŒÅ*1gŒ™Æ@*h—ݨ)¬¼Ç¡Å ‘Jó}gc¿RMhẆ9Æm>ÍnÞq*e¬8ƒ·!4»©ÿƒü^‚?2!l ðÀ&H®‚?Fcú6è»ÌWÙê¨Hþ0šW(äŽÕ½ÕQ1ôLe!Ùæ!ïOOÉxÔ\·¸ÕS1:í4g»“€x»FÎ U6’ßâ¦[Mñ…àîzqØÖj«©b{P­Òêbþdz–c`¥M;¨ò šÂ­Ñ±t‹õq`j6Û. $ÂxÊ‚»âsre©6ÓôÃ>ƒB2×%¢ªÑô˜]½ IZ'ù“oz d’¤Tv@jJìç”±4¥4¹;ÉTwkÊX:Þ§Ý8©»Õ¦oa*R¿@Ž IßÂTÄ\8¥€›?ûmä,ˆ;ãR[´ÁuKdu£òËé"dM÷’ ðØošp’Ù7­“ÕV±óI´p;?TëÜ‘3mdïŒåÝP­s\œ¯ `i·Z/,å›V€ˆÆø±…­Ø­ãHü±Æ´Kd|™8”b͉v/%8 .ݲ[£.ëÔ‡šƪÛhŠ:fT(à—q²f‚Ž€€0ÄÉD´fË»bŽ=½™‘ÃvË·Ùsd4M)Ú0XuÛ­`ŽÑpÁRˆŠÙ.*óÒ9«¾î7* cLjCò¢ìwÚõ“:F`t¡Vè³ è8°>y'ã’kBÓãbã)kÝQ5 ³,,Ním qŽÎ„4âøqãptÕžEɆD:„Žmw!/â±›„l®­ e+{Ëð½Kê›{ Ê]Ü@/}b³¬3kÔRyøâm·F „ñumÞ ûŽÜ1ÞUÂñÉ/ééÁÐHÆ`(urJjÖèNˆÏ¡P¦kbv!/bÈËP†½ëwA7¿%¸ØÄÛc«Æ³ {#)d¼m¥è{ÕÎ1yAŒ7€¢[U:Ç_ ;B÷–£ ìЂ"í0éÇñûs“™]Z6nKTšöMÿGBËw2Â=ŽÜ¡Ýª‚(D÷}±pN“+û6ò›+ ¦ñ™M’ÝUõLœƒ[f|Öðd ò‹þ zD÷»]ƒ³kJ NÅÙÂŒ Ä¡2û7 ¹ÿÇGSÒõÿüü2U¼Âõ‹½AÔNµUþŒ; . A·ªì xw¤c+^ÉöÑW¸©ÏÔÅsz6}c‹ ºuÂW˜æG¿ë@ý­"èxI⌅‹Žc’[£è($âÉ5̻ͲߢFì´2©€hN»D“?WÔPLðu+ŠÞwXœg )8…É>•Ô?ŒaÍÚ–Ÿ° ô×ó# ±ÙgÛƒ‚Û@±gjëŠÇÌùiÝò½zvƒD46›ø¼«Ç"Ú bâùY›Ë©Ø¯\ QÏm¼gañ×~¯ß°¢û'å ˆ¢è ×üaÍSöo(Ñý“R |IŠahH†…ƒ5÷oøÐý“ÿÿo<è*Óµ/ RÿãúÑFSè&½˜M\د¼ÒxD· [¾FïÏ7ú|:5@ 6ý”-Óê(PÈÌ%[KèåοóýùVŸbŠHÌÆË£Å¹ÏoÕ²û'uVÄ ¹”ÏZUa#Ò!Ư‹ âÊ!»[$?ï \ÑÉLœÎ­)$´hú0ÂæÛ ϧ´ØËxßÅäÄÓôç~ieÃHÞÎO1AŒÃµ´­qý“+6ˆq¾râ#TŠzÚɧýù2Ÿ¦Œ‚¿Í È­Q縑ìØ8í,Ü| 1ŠæAÑD,DÎnQá‘ÎŒRà`ûkÇRJ¼0ÛwÍû)üÕ#Æ!}ug½v~£€îŸûÓÿ{U†[Ÿ^øÍld92nQQ'fg–ÇϰNG§ëoexôgqŸ®î¦£‡à)0¸6v}Ç<‚üeŒeôªT\{:>ä)þ†€]”Äк3ý¨¿aƒY„_qÚç¹-Ö+—ãEc¯¤;^ á°#ÂÏ%M¥ÝPÀ?hY(ïûJA‹[ô´ÍX·,¶avv} ú÷SQµùÞ´´±3þ>ö Ø—þhÄ‚%9–Ø©`ߡ҅ÞKÜ>âó÷£€$Lr2àF¸Òîh Âöé£c—œbdHu•Yìݦ*ž"M¾oc5ÓÔÈAñçŸè^ôh/ŽÉI ®{X³²D°®#Jyeg?ëïß{–k~ešUtr©’µN¥„¬d›£ú|Í:óï_\¬ ãô¸„{¾‹Êm>q*Ì wÉK{sØëMŒ Q8o¨ªÉè·K´€ÃQ ÂŒŠWÜíªõwƒÿÅ: ò©ø&’™BùÒ>ÜŠßÅ?G'GÞxoö‚¨ø]†”ÌNnÚôd¬S¼ôÂ#o œÓj àµIö±Øíû²ôÈ¿g­gZlì,½ìãuŒeÞ³z•SÁ;Ò{˜‘¾¨öv˜ß©èÝ÷ ‹þäcX©×ÙWö•0ˆÅ\œ©Ð ®cBý÷_؈ºã¾é`‡–x *×&' Pî_·%÷ßï{¥Â!58^{ÛÙâCˆÆ˜™$^+z:çïZ®Ø ‹=€ì‡Y÷Sž¿ÊÊñc’ó¡(8ðÂÝoY9~ÐÙRDöQº‡^Ñ«b§ósB“s´m‹J>)ß·èïŸW`5ŒCñë„iÛŽ pùâšGøö#~Õ,ºÿ¸·¼§QÓ '¢å ×Ê­úûǽõ=Eœa€ªÏ½O…§—¾„ Eú…oëé›;;Ô,䮌v\ÍWPµöŽƒó{ihÉwÓ›À) "û†Pmt-h½˜»Û»`j-9òëƒ!>ž~*¤…olÕ¸ô¦ îIü#¶¤ÅÂþA>^6©ï­ÛõÁµàFço„í„-Š@¨? –§ :5¦„²î)†E~ôÜ?©Ž¡éŽ+sGºEe®¶Éwb%S2ΟWïÒ|°WÞ±÷+?7ô|^ÐWë°y¿úsÇEþ1u–ƲknI&IÚÌ#¾5˜$~Lж¥¥ ܯb¬PÌé}7g¸ƒ$î÷'Æz¿*|°ègFw å­i$ˆa1”˜>'å–0’8PŠÝ{qñv(ñUZCüÛ†+€k¬oáf2C2JÑ [T~D´®;Ñ'¸U•ÄÏ«0ÈákŸjo«#÷hÄ7î^s[»ªn‡OU‡Žƒ¤]öëh hŒ5!®xÿ1ýíσà4îıÊq;1q濎ÃÚ {é÷ø‹ì/ª|,Œ)™æwF=æì¸*ò a“jxYÕíUV^Cg}JçNsÝí- $X»a:ˆ4ê:Ô÷|5ôÅôŽ£Ù »oÉ ¡†b3ý§CÝþ÷P4ÀDý0m^º²úþ#ϸg,i\ÖþìþäÜ?QO œËÇ™º?›êw+úvù«£CÙi–éô- –8„ÉÚ<¸}K£@RVÖkÛr¸ïøó†¿•jw„\pR°g­rÐá1€×ÂÃ)Ô-Rð•€ú¨mã‚ä¢skþ¬Ýo!Öa„‹'MgnåD¦· ol8æûs·Ïiß¾Ñû139>í>©€oPS£«`ðûÙ>çð )Áóœ«×ž;{{ñÑûËMü®’ëØïp+²\wCŠ«äº¯É`–ýašãnƒù÷±^E¼é§ƒkÒÓ?ª¿ßlåΑ2ÿE„Eh¯¢ØE.C-‡öÖ†<\åÎ5œ¾6V‹Àºîù‹ó6hN§î®ç¿èþQ»Ol Ú´YÝØ¿ãue\êU½vQ÷ÏñãÎbVi“>‘ÃâsÓ1ÁsÛcýý¢+ÂFÐL¶¼A·FYP¤m±×XǼ%_ŒóÔ}NA×°CÞIAºÛ:_¥ÆAÔítÕÛ/´Ëx-þ¦¨úûÓb…×â¬f(0a±;úÅ­â\2 {2H w°Îý-²$âºãД«Ñ ¸ºôÊ]j¯“’ rÓ¤)˱jò[9,M'©$vÙsUYqÉžIA䢹Çwþ¤Å\ ™?„ÞÉlø8ÎÕ=_è5ÿ­Z'J·DÏsü•8xî-Q(n2¡Æ’9siíç("¥ñcc'êì¶na¼1K†î½Çª%òc¤£êºÐÂlºÑýœ»Jy‹¾Ž²9^Ûç­Ïnñóä+‰§ã´'ƒpà˜#6|¸ãýó/^UÔbe -è†õî–i%×¢qéíˆ^ͽš/ŒIôÚxäÐ:îâ½ñE@ %:§(–bózï†{ÿ¤CÝ Åe‹M;˜Û{‰ã C«0YœJùþƒî6.s ¾ðoÎÅô¾::ÍŸ=WczçVÕqÚ‡I#~®ŒŸÜž,~ñÏéº2qÉ,*G{#ÊŒÙ?ùƒn[¾Ò¬1Q¼PHž- bÇß…ß×Dn ú#Œ¿<6O"\MôŠ“”ĨTÞ>îZ|… 7 `ÜÉÒÕËïo~Ü+Ø\¬Èm*Uóã¿¿éqOœú¾I Lœî8úoWö½BŽ‹MqGJ¥ÊB·èÏ·ûU.¶7î‘RaçVýùr¿’œ3eÒ 7ê÷-ÛŸ7ô« [T͸•GÍMbÿÃÞѯ"jkbUq±„wã„W ÷ðRŠºš3à³Ö~¯ÐÝ#¹µ¨ã€¥Ý¢Ò‰Í;Æ»kwcû³{%ÒŽ+Îw´Ýöf{³Û^a·aƒr{âÖruÝû½­§³ ðž½ú^¯Jb;zÜNø•¹ß Føî—Ðè‡%¼^íóÀ‰â96ñá@-¡»øÓ¨Žö¼ß€Úø¿ø§7Ó—N¨}cj¯W&zç°Ì¦…\ ³jüýƒÿDÛxbu!vÎÿ ˆF8Atçøytìò*ƒ54 FùÖ{òýÍ`{C˾~ÏTüÇ£ùEyCùŠ8¿¬Dôš¼!EöÀݺÇë¾AdíW|ú9•ñYµäSejý•ÜP·B®Û‘C\>€zÝ+Zòw (¹/C§y<£gMÚ,_Gày³V_™E8zúåzçðÙG€Oü<¼ó»EUÁa Ë¡¸ŒüÝù7“íièîÀ0ù‹„Ú_åï+Y¨kmûË^7Ž~EyŠ2 †´A _>…Ï9?—sö×fMÉU%¨C A—åÖ˜”ÖŸ”‡»ìðè­BqÙ•óÄÖÏßúû /ü´4 O0â}Ö¾þ­¿Ok“b‚ø1]€ìÆëïºã踳ٻWÉh¸Ý\œÍd ÷Š”4*j-:$ÈXnÑßÕ˜âc±é¢@ý _Ûí»ýçpëID.¯ÀGºÃB­gŸËßï«JA'®oª9·DOê;OÜ.TÌ«Ãm 0ºÑV9Žæ+vtˆSÑtÎ µ¶‹þn + ¥|Ü dhmkÐö )ÉýÈ!g»6øñçÄ®#0‚Ì>Gy~ „ ¢“L»{ÔýMI{ÅaIZÃBºÓ7¼¿•žïê Ë o82¦ýûw¯t ˜ 踰†¿Ý6šJIKÞæG²}t÷ïÊJùg+6 s³‰A«ãS<¥Ÿi@–6Ýé‘÷7 õÐ⥋Ú4£Û±þ+T³KV!:ë1â€tïøßñ´OÑ,ÀÿN{tñ vKÁ²â,îXÂÝÜ„ûÕtÚ•™Y'*еõž^°8iÀ™ïŒÂÜ…ðô‚}ØsŦb"Òì^~ZHá÷Ç]Þž×–lïÍà‚² ýÏþõ¾Z®Êé}&Á§[½Yõ× K¼Öï‹d½y„|ÕIî§îniÛ»IŸ~Öxï~_e.жՋ,¥ýüûÏ/Çî5‡"Þ)Öüõ+Æ?‘rx’Yým´šËùfÆš¿Ee†-‚½Ã* Ëþ}sÄš¿æ­NÄ÷}LFHj‹þüÏ–¶Ns¼SÑ„ýÏJjh”±ðž˜K?ãDKÔo‡ë©¹ÖN$Ö‰5&£¯ÑxyM!~¿?‘)¨ÉrüÀr¾ãeæ÷SžèIjØL8Ì)Öèéƒ/1,ú û˜„æ…ó¯Ñ£æ5ãh¬ï/ÁœðƒÅê6±H0ÉÔ%‰!õÍîmR€ªÅñŽ.)C% û,)%¿×Œ -ŒßrÔ€XSœ0¼_i¼Ë ñ™¤k™sqD¹Ù•ã@ÈïÏ}"é°ZÃ6Q0éä¶ßøûEÖÖhjC|á„9ŸMµ¸WÖ< ³þßî¹ÎJÚïq(á¼cúUÜQ­­ø_([¦þÅüÏßCìÒ*d´mס3ˆ /yéGø½Ï¾-óïûVð'*â¡ÎЦïŒ%’ß„™€A¼Ð vG™þûõºîé&nW‹°2©¯T(& ?A§>@´õâüʄ۲ª¬ŒÍ‡Å:.xô+nÎþãÈf«“bg+7UUæì{fCi}ÊÀ”dÍWýˆ´¡|±F9d@Œ¬Ù·éOl*Müô°Ž÷‰ÜƇ¦º¾Ÿ2»°~á<ƒ-¾ýÏ!6ÞQ5QM{û(³kÓ)¤ð>ŽãõkªëYïäÒŽ2ÙŠ£F¹ÎŽû #ÕÆš¿ 3ÍYÀ7ý ã可Ž.ÖPÖÃÅ«ü;."–8G­Úw¾ “ªg×X¤Ùk\x.ÛÅþ2úýû;ÿþ¡7NaíK2¨=½BÝaÂÎB#–ˆ;:{v2Žt_·ä(4t%bå†]êýý#+tE´ åK<ÎýüŸ¯µØOæ Œ‰Öìo\\4«˜¹Ä«çO§SÃ{÷ûH²/C²bÍ[éæ…µ¡Ûª¯ŒJd¦Ìq!¨–媌oAÂæà8t_Gù\ Æqgþ üë¾ð¹ã99PÍ 1–È%ÕbC³2æç"0îW…—ñO?¨…öë”W=šË›üé¨DìåQ…—QWG߃dÚ%Äš¤#0, Øþ”/䮆6qO=óÛܢꊂB!ú†Xl¨(Iþ|Ç4 /Ÿx¾dŽ;£³X"wùƤÏ»/³'ܹ̉݌’ûì/¯Œ®[ÍêqcÅkÔëЙÁ´Òn–í»¢7үǘ0Á“5ñ%&iäy˜¡o¬ÑP„›ú´»>®.·D*º—Ý8µ&™_Ò4Åq<¼œ]FÊmBåj¢$Òf4öSÊ‘yÇ÷Èõº>ÞØY¤¢û}9‡ü¶™[Å*%mCã@{øA,7ø?VëÚ×`ÚûâÆ®±æÏ¢®ÑeÇ8â#»ùeN³YTu9Ì›Nš#wÃ_‰E… ÔA0 dC»GÕJ5ßÁ™{:Ö:(°5ÕÛ!ýq’9T²µ?Ûµö\KÇZ¬©£jèï%Œ¶ Æl +ÜÎm•¾¹ˆî›÷m GoûSX‰Í\ý3ö‰ĺºUùFÍÆ;¾á^ºÂº)âÖÏȤGçfx*ÈHr‹òrÄc$»Š«)ä–âÕØ¸H€ën•"«¼jnÓŽ Ëý.ýÏâ®U%eFTÇ™ÿå¼Ð-ªT0Cð¼MmÐÎÄ~ë4ó¶iEŒ7=¾ÙXÅð0Ü¢BZÀƒ6dÿ¶Ò™:zðEq8‡5†½Møg:ú[ï¥à{iKYv[*à‡áÀ¯ å®ø®^jQG°&Pòr#”.<»âcnS,º'Iƒ(rl»N†Fœw»€gœ®k^7<ìþÁ_Šø‹ªe[fb¯$;_ÑûeÒ¼#úo’]¼–¯c‘tVavà é·>\çpôh®·èŠü16D«Åk?D•dJH6ã÷]ª8”"­Œ0.\ܲêÕ!ȽšÈ · Æ?PÿN>È^y¾ÛQ\6‘QñäFT¢®nëÚ®Å?©!–©¼ä²®aï*Åÿm—&÷¥K˜)ù.Lo)W]ÐK˜iT¨qjPäÇî´§Sý ïñF¯•¡8nQuT…'ÙA.ˆÙ èר‚RL‘·¨q±ÅN  ó»JZüËô¸5—S&Q.IU ùFêëŽ-  ê÷“>–>J(·ÉþT‘ÆŸª] >Ÿ„³ÅËõ…ãú³ ìÊËãǦÈÙxçÚã^òøvñË1ˆ¾Ú)Ð^T{ñ¾b®„›Û#Õw EkT 7C‘ÖÝ ¸G£æ(|¶%ÿô]»]Ùyˆq¤ òt9%±FßôÁâ}o%mˬQv?GÔp%hüÝššj°ÇI9y¶ëEI 02ñ«[A/AŠ‹7>7[ŠìrÔǽøâˆd x,µ¾Î^C‹p'-”g·¨röÞÃá`÷ã¹n/q¤éäˆ&±¼›÷ö†· <‰µdd¸E¥ìÇÒ*e¥ ç ³HÑ>Lö ü„˜E5ÞhÝ V:Û–Á…Ìý9®0¦¿Çk,)O'“îs O¯ÊÔ¨g!Ò\ìŠl/S0@ÜhNrG˜ï5–t„/àM¥€[T(”Λ½ÊÙå(ýÔ+€DoŽˆØP–PÑÿÆû­úr®±^qø²¬f(ÄæÛ/ƒ}÷ñ}\E™á'5nŒgݪêBðv+w5W·6 Æ*3J³gOÕXÚ1[ãaØsµæ•2úˆgH€Ún‚Ñ Çs‹N|IÛ¤³IŽìÿß²ö›æ3gRtDÿÑVšÁÜŒ~ÆIìõß)RH(÷F»@«[ôwu È l"ìˆqñ ˜ ÉßÂåÀ8ôÛ„6¹½£š×(ƒ‰æ<”ó ŒÔ­*Æ1xÌftÔ#¶R­ªW²²&F~f°„™%5!]Ñt‡ÊtátfÔÁNƒ[£‡?¤7ùžÃ¶ÈCÁÆx=*n³æð¥¡È`—FtM;è… HJ)Ji%è~O “Þf†™Ù%rôÃé‰[™ Îå‘C”¼ä7D­µ. ŽÊ0„8Àµãk «û\‹; Œn“»å="nÿi¨·ãé‹«}C êž³†¸›íL‘ŠmmÏf±™c· 1²·Ÿ¸ÌÁ½ù`ß´&Ct¼œüïúæ5 6ÚÔ㵨im¤ºÞ82ãܜԚŸ%9¥‚ýöˆ…¤;ë–•1Vic‡¡cn:<9d µ™` eî)l¹ð¢ “0€·DªÍ(ˈýºöðÜ*ý#ä–Ô­4qKtX}Í£©eo÷š†˜z%ÙˆÏs þØ…2Bð1ñØÏÞžšÓ€Æfµ MÕ*øFÉi@”‰”u>e 'uæ†b¸(½ÌÅ I›O/Û®Á Nx÷æ×þszùœ=w&öÔý< ¦ì ;–:ösÔk€ôP~ØJ¹5 t²Œ˜¤Óº5Ëk ‚–Œb·F{Â=PA¾Ž‹}y"Ä;j¥_Ý´;uT ›áÄ[·U·ÌÇ¡ˆ!6¤3aµÔðqËÄðÌtúŽSàJ·¨ÈÞþÒ2(:f[ ð›I¼ãFÆÕ~ŽÚSfNÑÐ~Ž"…$Šl2Hoqè(@!8’Þþ€ ì'Iið‘&ÇXá¤ßœY"Õ!£·¸|SGm;I!ÆÅ³©¥ÓuÐ>AÉ_$I î‘ÿ(@„F¸`Æ?€fk»¤Ë§,NÑRzl-!Pá"=¬1ÚÓ— F÷œmÂL†#š … q)߉àÓíôRCQÂýe; +áø*\AB „4£?ﳕ²gìþ;¹ßvŒ£\âç^b¹Ìs›Ê!db ¨§ü¶nS)„?!©{dÒ›ÛS½ô’Z¹¸)¦Ë-#šM–0žÚ-}Öæe„0¶4*Qö]¡ b#‰ÆÝ¶ë)¾zÄ* ñAü§ÈˆrM˜(Ýí6•9HsLásˆÈ:Ï—¡Øñ^ëø2UŒŸ1A§ŒýeT …P*Z³…ûT€0þ,ܤ‰GŮܭ‘¢ ÞþÝ™—-"Ü3P|Ƚ‰9Õ¿0—èTxpÑ[cKuvZ2˜5rDu7ãÅŒnÞëî¶©âá™&×ý'ůQ7ã ±ŠëÚ§ „ñÌâ½Ä oüÇUaË q„n÷¤•CH8jü¨$GÇ âÞ’(1€ÊHrÝÄ’¹5u†Léña¸†S³[TC;Gâ8Y„¸-ZDÄÜRœwAí±‹ÊÀ ‚¸®ãõ½òT¿>ØI«˜pkìÓÖâðuÌ“áÀ"¥ukÔÛ-úäè.ëáª"Ž „ÿYdgºìØø¿RÉØKsxuøÝsÓ¨ jƒôö'¢r ‰ i0”¤Ý¥ó¬¢Nþ’Ÿ€ÝF³¦ë7ŽØþä ZDú¼ójœUcmãáq~Qgˆ¥[¦µ$i)p–àŸé‚(V ¶åÊ…®†mU»k)ªÈÔ™ ‰}ØÍWp1WF°ñγŸTfN'qbBVŽ¡JÈH'ê2é!ƒÜš2BAµÓ Pº52f\‹$¡ý“m)´Õeã$Ö]Âý]«ð“£rÈlPž„[¢cÇ(ÅÏ—þïËÆ,Ž'Õ8Ž]ë²X#»…›‡—½•”H²ü†ùFwç¾ËV6Ð̹^?~Oÿ5²$7 ë{cÃw뵊aûIÅKæÚîh+®¥¤¨áð‡%ĸxG<"JÀ´(3Kä.€G9ñ‘ao[½ÂAì3=øÈ›Á±YS9ˆÌ~cG£ÔµEÈÑŸ|·t[ŸŸÊ®ßPâÿñ€qE˜km}$Ð"€ÍKýò¼6ëc ´˜ðSü2ñë^KLê4yŒâºÈ®S^÷Ù)`XíÛ¯òû÷g"F®6(ÜvÀâ“B(Y’5ö«?Ò<¹@,ìQ,ž…3îÚøÕqF~öÞ!!ä®CÀlnô²„uÔÙ‰}ÆÚOQSz\ÓóÀGÖì–¨)}¼ÈÄ ÝÔ¹%K¾=x(?=¡Eî—ïÂh¥7¹¿D¦vÇp]G|ð›ÉŒ‹÷Ì®’<²Àn@HûÔ4€&½ª ³Ä`?è©‘›ˆhŠóÌú¥Q$SOÌ/AvÏMH‡)X&Ü=‹vUÒ!n¤ìb†í–üÞ+­¬ãõß×o-Ay)G†ymF–n‰2L×Ð ŒôÑqkŠU]F ïŽf‹¿Ïý ¸¦lkˆ¿ ²ØcçÌŒôÇUrOP†âìV_· ªUâ΋ó³¿çþÊ­câi»ŸÛiû+ :òN í²‘[aÅŒ£mRÎÛ¤œ] á0äÄ%ÇŠ[AÅÅÐ 'c¤Ônöµ•w‡9QmqðºËcD±á’ÓâŸÇÿvwle´àG 6µ£YT´É¤¿(¢¡\8h+š»ó†fÓÞ:»d#F¡,ÍØ)‡ÅïVêÄDLÚ­,eÿ38ÎURá½»ŠhÿJ$úúi{ÑÝX»@‰±é T¦c «$¶&ÇM¦‘iY!îhÊB¥ÆMZ·»knÉÊÔ+”}¶³Û"QÎt¯¸Núx¹Ç-"eY<æÉ/4\ź5(øÐ<â`ó-+ß]gŒ#n¸•þeÃÉÀ÷? ÓÛ¾•£í^‘"ì_ñ6?׆Üì^êQC9ƒîeŸ™tL#>\ f·Æ:[tÊÄÓ‡CÛ5O»ê”‰ˆŽ?*úZÇJÙŠ6h)Q³àc·Ü…µ2LaËÍÿ÷±xÏ®´Ã‹tþöš®fÙ âÒp Ð øn?+^ˆ¿X\.ÌÏ…»5Å¥€÷c8VÌfÍ?Šì&<\ûâÔhaÄLø-Ÿyì¹[¢…ûÈLЇŸ„+Âv‰îðê õCèÖ(é0tçø8¹nwÅr’Š3uZ–Â.ha§:ÎÙswûAêW@6Y Î®~ß³tˆQS3v…Mâ.å.†7->%ewn‰^'÷€µi/’^‚D ×åèÛ[)‡™äõŒ¹³œ¢äWÅ3{p¢â¹$¨ï‡~ÙÇ®ÑÊà$©B@³Ï@‘Á‰;õxêeâQÛnЂ ž†Òî‡á8[ á^§ÒŠX@{ 0ˆaƒõqï_o%ÆÞŠ¿!Rô|Ý­v‡ØŒÆØga?F§+‹ÜÑÑ+nol¤ºLtqévKT°|‹d?7 Ú*XŽaaO~¢és#Ï­‚e˜áãå óøïR|KðŒÓ1¤{b[FLÈž}c#\wkÔ·àEóG@{– »5‘¸“7w.›¯´…y7•D€€.û!ÚÄEˆ`›£a^ë ¿5£˜J-UÎV¨³Ù…xHÆH*¼ãâmàþÀâmøí“öñ® oηOå0Y~àYñÚÛWAÃ!6à#¾Ò] Fe„Šå¾ekmE cAv—è튒XK½JJÌ`ÇÜE² ÏJÕlû°6ú’vBðѰÑò[¹ˆq¤{¤K«êÚÊD\#“…ð=Öüe+¬9ݲ2JÍ-)qôøÅœ¦sn稹!J@ræJÑ­Ñê/MÔÒ0«m/_ˆˆì–a…ñJÚêýŸÑÅd§3¸–¼¿ €8é°$=±c!"Æ[]\¬‹cËã-ÂClô»½H,t¢â×!„‡è[·á@d7Ç‘@è‘J”1„~8èKés—(cÌ|ÓÇ"™nnÜŠšØý<Š!’êô‚ð"wû@1DJÄ—XâÑV qÌ4 XÚ/{W÷jÌ:áŠ:yÁQn℺Šÿ3ïëþÏWdj(jQà:ÀþhîIç¸{Ì\@óšž!¦™š!>Ý•üG!DI˜€ÄÂÞ\³x 11ëÏ}æËx·HUj<ãobQ„hÑ­)¾6ñjŸ{èylî)cWÊ…â×¼²†À˜¯á<æ^¹S‰ñÄÀÕä#÷Õ-Rr\:q¾Mù×Z´œV9“£T XðŸõŵÄ£`"®+q”"ÁšÖ´è(˜Ï7ó­ã¼Ö¾ë(˜H¦9ûÇ`: &N ßLQ–®œQd‹tõ#ÝÜ–ã=jHÿ µ'¥WfIÓ%'ÿÓ.Q,LñçâE¡#uD˜¬q¿çTÙ*ƒÖ%tÝ-)C…èoR¦©HÝ«S°D†eó‡Â–˜¡Y¤(éŠØ™#Ó¶Ÿ#¸3ªÑ•pin‰Nøâ™tI ¶Ûâ~Ø¡víQ-æ‡Ñþ'<€}Y·Z¼±çÀ¬’Ƴ%ŸZb(÷¢Èˆ7Ðß!"\æ¼Å2·ÅQ¸­Fü¬2hþ˜³O.*‹§5?ŒÙâ@x6Qæ¨ùaÇZï0ÚLë*·¦Œ°B™‰8g“³*ã i Ë2NŽf 3ƒ$ËÕÚuÀð)ÈmNUÁ¿qk´Y ­u7U9%~\¹ßÏš®A!å’:±ùŽÓ&…ï#E Шí“V!3£®—ý/zLû„fŠ|ä=´•ÍÂGUÌ'˜Æ,ÞQ·F¦‹oSˆ4ëÍzNMIa[æx-É-n‘\? •Å_¸ìë&´CÊoxš¨¶íãTÑL4¬P²ÿl]¨Šf¨Ïû~†í[RIõïÊ—í8=þ)ƇȢHˉ[Ç&ÑH†±b¨-‰Né÷Ñ,”%ÛVIó¡êÄ/“ËÇ!÷§(šB¡)y«;·L™ãí™H°¢DtXÝQjÏM:íêÇ6dŠ#FmõêBM° òSBRø”âý2·‹Vy Œ”³ãëRsÔü/dŽÐžõŽyn PŽG†=ç‚«b¾ÿ-ùÉÄuĨÌ/zHÌ4¨ /?N`W†]IHaKæonês‹Äùm£vÈVÿ\yp ’x3€}%E…}t ð<^‡ùY"ëý*3yOØÒæÇÍto…rT¯5À»J…"’o-Kÿ¿J„0w$ÿ­¨Þ}‹¸9#~îk¸Bé4ñü$¢Å“os»òÿ4ñ ÖK M\ÝÜÓ+h"NØÆ›é‘ÓËÜÂHD ßi6Dή¸…ˆoÑ¥câíçÑ·¨›;~ºo2éÜ¢2k :¥óu·ø-âf¨Ô‹„¤Ycž[ÄÍL1âGx1,ëé*¨HÐñIWŽ9­ÕÚUL•ÙÉHPû9eаI\w¶.¹ÂLŒ»Uýz¤•¸úôv¥#a‰É3#“Ý>6)ã??£ŸIYÊuEýbâG4ÜÉS¯uû9ªVD~Uüû¯Ût“«ÜÄ7K6CÌxÝ’¡ªÄsé GŠÛn’¡MZɦ‰v ÷• •ù‘y}S…cÝö¯d¨Ãç¼}D{Î9þé ã- m~&×C_™1aø‹ó«6º &ŽÉ@qb©‰)–[£#ÇCîñ»9Îqã-ÌĤÖe±°mÂ-~ˆ7swGNûÊs‹âÅUõc¦…XÊ=¹’´œ#ßxÖ(e†«~îTÂz{!G*ŠÔaßí©„õ‹Fm6÷TÌÝ@&Jê¸2·h˜¡Øt@Áoö°R sÔ=p¢cÆZn‰œL‹vf@Ò»º‹UõËT2Hƒ£¸˜ÝUÎWPEº“ŽRt¬Ýþ>š©²oz¼¥†Å¦\ÍTaæ‹izbdξâj¦J´Ö°dÀ®¼‰Ú`16)CëøßGìª["»`ÁÔgÆô¥e¥[£» §…Ça˜êýç®?ýŽÌŠlŒkO9¥("š#ÓX6Rn÷³*º Ò9!³®ëÅ> ¥ª!Œv C††-»Õ‘Á8$l­¶(öˆèW2íý»˜½%“9­yqrBÇÞKíîÊR‹UINº§[U´,aP#wtKÀ¼%•;N¦ªQe@…±«ÊÈ”:~¥8ȯU„ÝbšøôpcO;"»ªìŠh/q+H‰­€è–dæwcœý&Áζ¨«Æ‰$ô¼xl¸5ŧ“þ<ãýˆ Àž`…½ˆ Š×àÉþÀ•¼x&k9ýkÝó+ÑÌQB‚4¡òÓ.*ý……¼ÝŸ]T¢60½€Ì»®çÕÝÂa„̼Ódã?÷·x*N‚±0NÁeuÜ÷Ô~‚Ö-^Œ…Šû¡ þØÐ˜fìÆ<–ét‹¡"„Vˆ*$^[Ñø-~Š˜Ïmô¹= ?nQÁØ™› Cûn’äNæ‹ÔàÖîñ²§(e¢ñ¸6¥ùÖ”f.N2QO5‡âßÒ|8ÏÉ?‡þàÞzN@!Ÿ‡(#"“ܪj«ö˜šð¾|…ͲW ‡L‚»"Û÷¯`f#ѳ å-ÎQ Éd[b¹7àò¸Ý^Éä `wÁÞþ}å  ¾Ñpî·ÍV%?Œâ05¦ËŸnêp‹ßbB¿ä0r7Ú2®Ø-âCð¢½[a×Õ`kELSö™A$:–EEk±ó'éoq0Êàv3Ù4%9&7Œ¬>wó>ÑHÇ’A1ÆœÂÊß§2y:ÀõÁÚNçû$•„™÷¨@ºÍXyË‚ƒ=tþ"¤i¬xÖ\æõ"€‹êçþì@ëil3¥iÑ/ŠZ·D¼RYþd35k+ùvl”, tô|®2}‚:F5…G:»”Tš%Â[Úø¶á”ƒYŠ;3 äˆÈ”ömAýr_Æœ´Q·__ G¸Ì(VÝœ_CÇëÒ6j »¦È]à°¦:~»Fs{qt-Aè`¦W ÇA¦D¼þ ]·¤Ønæ"ïK[H·¨¶ ¸v¬‘¯Í“Å9qóŠa0ÁÐ~ª¡¡5L¦€mÝç(äˆÌ0b‚ž¥·?A‘*0Ž.Ý[ Æ“G&gú´Ì§F,¿ Wò÷¹= Ž‰ˆçwï€Á–žý”¿Ó`e:Ôw¢Í¢‡ÇÌ—kDØ®)YJæl»9Vò›UÓ‘%®]‹œ>UBÇ-ÙiÝ]?UBS d"U|-›^üŠ:þÖ™sú&º5UàÀá@å`?HÛ‚œø-ι[¤L…³Ÿp¢Ôvkt'$Õ[lUõ<IËBþÇòÚZE}ù]¢¾&x{ªOâ¥ùÇ8yO«ðxE ½hεçsÀéS€1©°ã’D¤]#cÒ¾ßÏ}hÅKOñ$ÂølÒº“>á0¶?‰ˆŠ-`¨­ØÛó°9?q…ÃÈCÚF²¿­cÈhâXgÜ÷ÙŸF?&Oxùe6Œ["ö(x—2A°ÛLåÐL<Ÿ¡|9JÃ1tk™r 35·NŽ( }î~®ÿÔ8qLšÈÍllÛãSŒx~ؼ .C÷Óƒ»…hØQ\‹Ò=Ñ@ÇÁÔ\Ç»D ³[¢'@¼0p2æ2î§9zÄ{n¶»çD(’ƒ:âfs èWÉ‹09 ì‘L䀇WÀÛIy$œc½®_‰dÆ€#J£Ï÷E 2²ví¤}’£V>ÅãÕypz8 –›µ<…ãƒpä8æÌ Åøñ3°©áqàÐñ§ŠÈ¡R#‡m>$±ÊÞKi’ àÎ4E ÓP…h1šÝŠnb¸>^Λ^]ÿ¾FÁÂõˆ­FPG&‰[¢BxúÈè£æÄ‡Üý6 r5å×PŠ"Î×OüŸ‚„¦=Ô·ñÛFž®Ø*A8uï²²ɯBhî–(›'ÜÛ±¢™ölûˆÁüóhìd0C€’ìÛÚ4 0–µ÷€XgðKÿÿßiïû*OmÃgàgíß3”×XõWfâå?œÆu“t”mÈ>˜Ki‚'±]"óf^•3°“"zýß_•÷}JUç­'ë̬ߜ*¯ÄÏó÷c‰–QÉGß°Ò¡÷ß÷Éû”Ÿ-ÔtBèØ—fò3ý(èw †²"O¤hÄE¾âÅ43ŒX£N°7‰Eqš™ª!)W57ðMKgkŠæy  Ýi÷å–ˆYú‰Nèɾ- âOÂÿƒ(ØÙ$"9—·˜÷½ãÄ ¤ê–¨%ÎK”"³VÌ%‹S´<²–~Ã9bwc˜è’Ô-JÀ $òÃskJ€’C¨5,ø}‚ N82”M {M»…k¿â¯“ž Pǵˆ%r  7æ‘U`?E]‘.±šQžÇÿÚÖû”ë@ÁÒÍ™Òù}ÊF$õ©%“‚ì3L‰EJGLÍT\3¯ z\·Hiëñ×ánÌžsOM A¤%¨ì¾$G¹ŸS A8äˆhÜ3:XD¾÷ä6ÛwSqAŠyº¹¸ûÆ4Õ zytÒ>Ï·&é’fžB„·–4›§¯Õ£ý>E½2¹°·ÇVÁ­Q."ÇyoËîa@.î0-M8kIŸŽŽI™,éüüIgŸf:_W‹&ü°¬øw®«KbœíK˜ý0Õvk¤<øúc‘Æé^_VÍô©VþïTv)„Y3¨wÃŒÙuèÑ7óѹ&šI¥bƒ4ÝÏŒï#‡t039õøßG5 $G=ˆ°¨Ü’"Y L9‡{7NÑþ)*´SU Ü\÷”†È$öƒ=ì”4–—Äôß«w’´ìÖèi€E ïZÏy©[#¨o5÷:Õ¢ioß',Ä–T#nw¨›îµXŸÇÞR@9§=>W$ó®Þ÷šécQa<êâø˜íœ= Tà‡:0ßÅ9ÖÅ'¥>ž`¹¿m«²•W Hñ\CG@°VNjn›5^šqØãP©‡øcÜ f¦Ðw?©g|ïqTÉvS+íp¦Dµe(“Óà¼OI‡ñÞÄ-B¼xÎ\0ÖhKˆß¬bf¥X¢Ý‹Lׯ¸Ø‘˜c‰ô„$¥Áfb7f‰Z%¢_ŸÙ°3Cq'èÑ“ X˜Åî°5»ê›¹Ã”íP…ÝŽÖX• ?spLN„["ÑÜS5ßÁ6Ô-‘qñ—ZÆ8Ú°op¿Œ¢ƒ›ÔÎÔn]7"Žó÷Œ'0º¶ÛLÑAœœÆ‡C8š·¤\/Ê»A!½¹Lò~·½ Çæ¨2ÕXTȦY[]QÒn‘‚ƒ !0! ÃÈ ±ø¯É7"È ª Ù$¶¥*‰ÑS1Vh“ÜP÷~jRóúŸ²ž²7È-Z%ü.¹Þ.“·Fºƒ—ïB®µŸ½Ü®ž±i`fAX¶`Ä-ûe÷†¥”aÖ(:Ø óÓÄë`±¤Œ ¢2Ä"„9ɰ ÒŸÍxÏ*ú¾I,!WfÓû$OÔ™0ë\!W–p0ÞÆqf›Û‚b…@Ÿ‚ÂÒ~JµBüÒ¨ýÜqf8à³»âË/ÿ«bt4Ñr\ ‡¼Ç!§€0|”¤˜¨Ânš]ÁŽ…[''ûf–Ô¸&àg?GÉ"tYî‹[£ú4@~ü&`€ºb«):k¨ž1¸}Ó~cƒîŸzhGIšMýoRö-ˆa/–gA·¦€ {…Eü€žvš‚˜Ù×7çdw­sS@°e_º©}‡ýBŠ66 ³ôfîŽhšò¥F›ôμÚý"Mw Ü{RñÇ43îX#€àMÝ!ðÃVØMAü±rØü‰nw5 7*„ïG³íVÜòÛ y©;Ÿ‘×ìän øxYÜ¹Ô HY‰öÌÝÝÙÌwn;€·¦—m³xÒP‘?wá5•'cÛOlf’$ío£†‡ ï†(´2þÙ¬Yõs¢C²]f¬Q¦`t‰= [¢¬X-¿“Ã*›àm­‰s7„g-ÿZ‰[n+¡¿«s.xmTç‚•Ò.Ξ3ìÖe6ðÅ›³ÓGóº’¹¾ O„A¼MÓ*.Hp&í6jÑXSƒ”î΋ô2§HŒEEet–z)£p‰öÄ×ÿ~µc×N,Î1R˜«²„ÚdS¢ïÏ5mGdÃâKƒð=]ñ×¥`Ju)ÙÄf‚¹IZ¡§é®dnæD`‹hÊíÒ†§Äµ™’Eýkÿ¸’ºt`BEÚ.Ç4Ó‚dv1R‡i&©¸EÚÜ8ñãïb ì€´&êä†ËTŒGí ¯°à˜P ;kËY+Æšbe‚-lˆû¸Î¾ÍBÁ)´qÐGe?¨d+ã‡ÿ»‰ÑsÿX$–”+½1eÄÒÓ-|8 ¡Ñy6¼ÕÜ! AìÇ.3~!ǹ‡"×ïK_ß°uŽòcÃ@¡ƒ&±\S]³;¦÷Dt<[·©4¹Ã ØY¸<§ÓÇ3Y꜋ C”Gn¶‚qï ƒ^ QŒÔvm3휶öÙÃZ}£ÄL¨®þµ7£pEKÜýÉ!v³Ï¦”AÒá>È"94uK4Hég°’П½­”2HJŽFØøï_ä˜o )îQi¹ùE+JdŒ±±$C{Ú]P„ÈÉÔÇ™+š ƒžbFq¼’¢f–(o ¯$ÿáüá^SßCh2qÀ3¨:†7‰ßíï=8¾Sw"¤s¸C`Õ-vKœ7ÏÑó^;J‰c .ªè•â&µ7Ü)#c9¶•¢»xÔøp¦ÛVw( ìߦéŠ3YV˜ízŒ éñæ¹eϧ¨mªÿÁd¬À­°™N™E <v+Ç5b¯ _F·½¾ÌÄ&Ç-‘иÚ' •n'Hú2¯ðÅAªlÿ0µÂý^椡0í¶Wp0Ö´„=€ º›µ·"9ÆJ­Cœ¢ýuÓˆVÇQS±H\yv,Õ }pñ³|œŠžÒÄ÷ÔøV£ãOiñ=„4㛤6Ûç&¾‡ú6[·Ix 5ËÞ-³q†vkô8 ûc¦tá6 …ñ…q‡‰ÿåñ¹5Ez~ bü­¦m劼˜15QXF^‹dZ@2üý ¡wÌØrÿ.u:l-¼œ¶ ¦ˆÂ9ÈÇCøèk×®ÚâTÏGcuµº:´‹¸8>‡¶´ežsî5jcÛæÀеoWºõO±#|û£Üg¢¯ž]¤LbªpÔðh¥ŒR(Öy£ñ'cÝ퀃®ŒÂ/j òs<æõéJ)Œ6ˆŸf%;Þ~Š“Ô™Ú.³ çï%±“yk¢’ØvÊÖEcŒa‘Ì»s‰5²ÆG€#NûK´4ˆº ààÅMÀºâ‡q.²/ ùYNLø›Yvèa¬ï £®©)´ò–b.·F¬ xA‹Ÿ).qkÔ™`°“ù$qL¹= ¹ËÑÄ«ÙSíò9ø¬ÃC¾¡Œ‹àasîö¼üâ:ôc·ÙïS‚—2ÊÑöÙ|,‰aŸy‡²Î-ÑÔ]’±2³zBurkä`‡at´a:¨1Óƒ™(të3k”HGƒæ(Ú@ùÜ) ˆâ»íû±ø°ç¦¬ŸôØï&¦e×(r„Œ µåLs)³F!Ä…Ý^ìM"¨¦= F¡”Çñykóõnz#0e¼x_ ¸áN—ôr‹bâ›™Ïâ–(.šrFI×ÉÇS½. 7B)^!vƒ;ÜŠÇ!C 0¼®œÑ‹àøÒ“v ¤Ù\(E,ÒF>nüýƈŒÒêu¿—î›@R÷43—Ù8á¢è'@Ò-Ñó9,F¬ÈÝCf!áA£Ïƒï¿Û£êo˜ØfGý³®Sé¦eÖo|†9øàxÃÊ~ŽÎsoR†íf¹$]Äž¦Ûξ£æwq7lß{ëíá ñ®æ†1ŒC¯ˆÇƒ;Ý |oKÛJœQìéVàC¦ðP?“v‡*± I‚µý­ þ†¸Ðcu–ÂÆá*Þ®‡¸÷O´Íñt'é¿!D÷Oäggòx7!‰Ô¹öOQ?Ã…çñ€F‡¡}+‹aÐÿK°$jÆ­)N·q\,&xÂø/­EBI*h8n¿(h(·çdxg;ª^ÂR°·ÁÖ² ®Ý$ÅùFÚb4£¹©r/F†žxºŒ­ál$^×¼”“ñ¦?æî„³`"¿»0 N(Lõ질ùL£(Œ¿wÚÈà‘üÿZBþY–ß#ÞN×váÆ5ƒ79™|m–üî —:„ÅUèÊ%Ä=Õ¢'ÞJ{E+—ôMP šmÿ¡Jã–uFçØW¿(Çê‹îçÿ²Úbe;öçö ¨ýw&ãyH%öøS»Â 2ùLñ]Ûæ³Â‡=4ìGa•½EÔ3EŰY[ä·é¢öcÖ":û\Ùß—b?Io[®×C†îŸ”S'ð{˜¥;d#Œ:‹ü̓~ôÚÖSQÂ(K0ÓüÈv´Ÿ¢—¨ÕÆ“IÛaÕ–wÚ›ñˆÚÜ[m Wì ›Ó*ÚÙ€eUœËñ–Jì'{½ÚÎ…-"©õË*º_/®„€ ëÎí"ç’¤ ¥¼Z\1©ý'é¾wvK–E‡ ˆ/PœÖÍ]§CACì1 ôL¬eí×—q⎲ðÅ¥ERwÓPcÂÄppT9×V-C0ÕƗ›‰*Ñèn‰&jF³JŽ‹S& U ÏxZcd(¢·FÑ"TÛ¯Éi5¯çPkÂ¥–À!óÚmFA™N7ÃXÝÍΊmOü^¼Ûù™¦öï×cƒ£ˆf5ögó@¶@ì¤>W7t2¦‚{qü°¿§† DÙd(sý €!h 6vpÈ]ºðª@Nâ?¦»×3™†(™NÄ)ƒ=]Ü1á h…¬:æq ÒèeŠ®S•fÄÝ£—êpOˆy'S µ}ôÂ0Ý„r·Ÿ 5r 0™ÀÖœ´àiãÈ…þ½mâ 5¼|Ý Ù@¹{Ææ¼Ý%Ðwü®ö9®·.Æ öSd ´œrLIççK„]Díù2œôÙ-0¤?ä\Fs¹· ÷{Cx†¨É£„Ž×"~0{¢ Ï1uÔBˆÇb§¹£Vx†ÈKð²Çðw€Ä*÷ŸQ-ªŠî\®ß˜•oúe5(¦¦n•ô¬ †t ÈPš!Gàiàå“ ×­)×@<7¼Q^¾rn*‰¢NG{Œ"Ü-g†WãÙá}fM1´ú, ´{yâ×PšáwàLžÚFGàÊ3üÈAUÿÅq·L ž¼eQ‡îñÐ,Gu«pÌâ(è¤Çïe…±C€Â…më!ž-êH[t N¸@×±¦o9eÍ¿Oz~JTŒ•\#7„g8 šopú³{Z0Ãø/çïr`Éø%r|™=Ê€³YïPWÂèÀAG‰›Ž’6T|<™ê¦HrcLâÖèÜs>êÞãþ´]zDæ–Pƒ˜Ê…»ÎÞÆ×gÂiíEF ÃW_¸ò‰äº½¡(LChÚÌê)¿—íW Óª×áÇ«à ÀQ˜†Èo†“Ã>ÅŽ>¥+j â¡ÜÍ;éi@ÏmºŽƒ›Gµ(„8—OTb€ºnQɶ8knz×äªÚE.¤¬oI4sHù†$ÇŸ‰}3~MîQôp¥Yï—¸¿›ƒ W„‘‡žin6êñžåòò¿’Ìð d‹ƒcؾ²´C:7¦cøäšEвˆ]Šß—¯äÖ¨ emR|[ü¦œ¨nŠ‘3—ÿ7î7-N…±;añl¢ƒ.8ŠSaÜaׄ8"-ê64ã$nQL¯“æÂJ ˆiÉÃÐ:^;Hãn¦>JÊ2š–øÛ2’Ön„’²ŒjîFÍÑp¾¡(âÄå¤_T)ϯŒ“zjYÛæÑ¹g |Cjkò¾—4[Á ß0Þ›…Ö?9—ÔNaü{‡> Ñ3ùqR¼gÖè49íñEý¦seG.»»_|²±Lp:CÃNè‘ޏµØ' ›¦2Ñ„¸„Û¡âÐ$“¼pŒÿ…˺!b曑Ï:ͯ ”peˆ Ô¼×S CØ+'~ +È! SÃÔYΑ=êØSÃŽ¤"ºQ¬`ÜcžÊ3ìPðãÔ˜ºÚ®)Ó¤¨éWÇ!âZ¿©áʫ·L§lû”U”Ç@Ôô‹n8:¿B:¾éڌõ|³x2z)ÕßVq?«w!v/n|õÜç”dexÚ$§4~ w÷άü’ðq'Ö˜®Jœ%X9J©‰cTaË0šŠÆíJóèe™ S±C´†ëGH‹Í[£[ááÊeüen°8;ĺ3HÚ¾}Üêg_'R'{RÏ¢XFH>ð6I7³FÐÃÁqûpÛ›Á³Ð Ǥü¢Ð±0Àôé,Å(­wsâTº!ꢞ~™·f–ðý|mÚAÍìå>€.ñAPô›ZÔʆqÆõØOQêùú h—ôKûÃvík¦a>‚z·Dç-óÐg6wí΢Uæ¦ARuáq±y8£ë[}Ò,“F31|³H§PåZo)o¶œ†Z0@ŽËbÏõ"SÔ7áÐ^FáaÝ_çoøÐý‘%scDñ8ðPs­ÊTYò`ˆW6Î?ûþª,y4ص‹I÷çP¢)p!ÞyÌu‰IŽ|0gÁˆ°Rå‚!Ã=VU%óH?Üb×ÛæxU2Q±!¿’ 2áËl»pÅ7«aáG‰Ø±Uì&.a&ñ𠆌ҮQRÉNÒï?V©n¶c¤Á3¹NÎŽÿM 3Cžž  {)^Ž—fÈ8w;Ðcbaô/<ž UÆ-*o?ø$hÌXìµYâLÑyˆ!7Q8î,q&¢v*Üž¡g‚^)~Ql\x3Vœsäz;¤$7Ù˜ªN†'‡ô ÔPLõ-ĦêKwƒèìe«È!#B ¯ýÇ/¤êäž'2ý»ìc+ÈáLˆ‰x×ûÎí¹‚vâ·b÷,¹íÛZÃcúGjü=ûýFÝ?¤Q5<ñ\®ˆ4O—£’½ÕËO 1‰M¿ »qî>'é˜B-Œ+ t±ªp?¡P '®êt÷;n‰^ñŸ¸çZpu µp1½vb‹çž™2 )áÈÿ÷{XX~ª™ Oíf¤¯{fjSÈ÷ŽÆ ã«bŸJ-ÄÏ- †8££8³ûªR ÏÀ dÒ®9Íæ,ÔBTqÐÖæOEa1øêÆ%5Ý\o*:8‚31€çf´SÑÁ…f4è},UcpíÏC8Qâ8JæT%2¦3·¿´Ù·Ê³©€¼µƒU›Ÿs†›WI$ß²¸ÍÖ³ƒYÈ…dYÇ}©ŽC0+¹0Nøßé)çðë©ZäFãtàx¤úÌ­)Ls2ˆoò÷š FŒEZ ÁX?GAi·Ž¢ƒxJáý¾ùÜ}eV0’ϼ2°Ðm·‚~pý0;%XÙ®¹å|9ö˜)‘´® HóÞÌì˜_h•@“—ÉN>d?÷•Ö÷ÏÉÏš"w8ÆúÊäèÔ-:ob}Üäq©‡aû9v áý_§ó‚(×ã¥àèíÝ•¬K˜…6‰©ø™Ü¥½>Uy-â»6y*–HiЈ¬Œ{” Åÿ<5 ;ê³(©‡­u–p q¢D¯²Ò^ÌV«•CºçÊ„­íbþ@8õPø°}îöÙg]L ¡” )Œjc» |•Œ“Ô–GñB=ízߥ(!PWœ¤¾²Wa."% ùu’½ZÑ!Žttç†tÄŸ¥ !üsL@ &6‡Õje [ë—8J¬^zM2l©}ê¸ç°¨¥šd”Ù 6Z{÷$üðû›y"vqKTƒˆ4€ìÌ…Ý [¢Uâ èÛ=7ÊXr‚/” fw™¥)'Lrâw$ëg[ƒ†¥$Ã; âÂpêê(>¬²r9hu)Åd&Ê6"Óðf¶ºì‚—·½ògý3VÅ “½Ä`3EûÆ -[#SmGŽºT•¼°À^„ óäÜ7¬0z]fÏú ïÇW±5 ¢W@(âìW×?\ ãÜIãIÆgöÉ)¹¤“×=,5w ]r#I³Þu–«ãÖP›"ûaÆç“H–`ˆø;ÇN€ @Ô…ûñ¤êñNÄ9*­QBÁùáHÙ¾¹DÃ5büæ ¥¥ºäïþäLb.u쯪ºd®DÜ‚o‹äTø €“Õw·y—H“‘12žX°Ê¦ "QM£(L£ô±ž¿«"ß™ù èÚ-°CÄæƒ¼…“} %?ñFdA,q¥ùR±§q‡Pù“[£¾%˜A oË>•&’¦8ÒÃ=·UH#ï Ì¢¦=‹Vyäü™1Ïg‘‡µÊ™@žã ·¨œ XøXÎÜß±1V18š™#ìÖ˜Ôvü.ñA8½%¹'PÙˆ: §øØ{UsO('HŠªÇ*Ç—&"o\'0#·o·Ð‰q:©Ž&Ã^&F¡œ&,Ùm9”o šHäâN–4öû+ˆ ƒêê¶ë…—rï®O±s¬çïRÊakÄßL]}Îvaí¢Qýq|‡²¹,pÒ:’Üv)ç÷µxÚ*¤Ã—YÅN Ý¢/«¿Ìœù88i©Ç!s"ÒeZ$´ÍÉ)—ÁQ“¾sch©Çar1OŒöíߦc僶éÐã@Å¥‡pOI¸¥€±óî%ù'ޤe'¼}9v~Ÿ8u0ëo(Uí§(¤øÞÆï5ú¿=,7m ¤—kŠ¡1›êv ¢bG£õÒˆÅý2Ê6Ä kHÒêlÂßR¶aÆ´åèµÊå%°"qי뀩·¯HW„:JZ”ŒeO«§ô’A øHqš»â„n8âö…´ý¡ÏrsÂUôÊÄpol[£Ã2Ù­ÒrôŽ ¯¸Ûq•rø6¬ÎØ g:„p=­¢Þ†WN\Õ¶—iÕ*ïŸIø .uº!Þ‡C®ßÆ>5Ýfl„x p}ãY6¶b)ë°8Û¸ü¦¬ÿ¾f+ë›ØI`S 'ìÚªT¾°ÝÏ%ý%½»Í)¢’ßäP˜n³v M†}hñgMä·bФ&cþAo­³¶rS8DEEnÝ"¶²¹Q;*AÀ®éÞ‰]ÂR~x'ÕÓ»n/ìO¦zÌOÇÛÛÿu ,’D ƒâÇáI[­IbÆŽ«.6…›"î,®t0 ´À?Ø­Ñ“a^–a¶û‘ ÿŽ8~¨‘š:÷ä °Høe´õ“$iÖ”Ù#ÁbÞÕ±á]¤Ë }$|EÜö!ÿÛÎ+4à~““åpñäm—F®Ÿ£åï.’^‹ýƒöìü×v/òÅ tk"øsEÉ|ñÃå­Ÿ™&Yh»» ÆÅŠll÷$ºÖŒ¤•lÔY¿}·‡”‰øa{ˆâ$eæÌß}ÕåB®$kÉwEËÌE9Ò;t ‚uÛUó”[bóÑ…§™]£‡0¹M3m÷Í9˜À}Œk¾ø}ŸC;öÐÓ!:ýÛ±eDÒìÞ%…¹Q=ü&¬x÷C¸ÔéUÒ—KnÍO½8ˆŸ^²nùû7-Ñý“BB‚Š›•ßÓáÅ»àŠ_jß÷ÛHšSÿï ,F=‹{O´QÃØoPÆÑeÈ; gÝ¢bts¢k ¼'£+3÷ÔߣLص°¤ºkq·‚‹_î¢78 ^¬; GÌÛ¹a㦘ŠÚŠ0ƹÿ˜”iCÔv1>ì˜'ŸxMû²Î3[ñŶÇq@d®=L]Œ£gW²ï¶5KÜ…¡#•=òT‡ul‘¸mªž›C1·FõJElü‘¹ ®à"IR?Òq&Šî=3ôîŠÓÊFslÕ3s§²~bÙÝq·Œ@ØÈ Ýo#ÈbÇ‚Ÿf@2[c °˜vYi Àj*hP³°ªlÈuÜu·9ПàXð»%r\ÜÀOƒtmí²T«ŒmwœWîBKì(ûÒƒÇýq…–80Ù[ðYÇî]•ãmÆl”x# ?·ªJ#øºÇF²oÁ39hÃõfÖíö`‹°Ÿbw-Î)ì–ˆËQS)o,(ìu"lj7:êRûãcrÄLÝÂ÷Ü@xk^J¼„ ݱ<Ú-x"Mwƒƒ-»g¦y)(¿‰ Œ3Ô-Q§£%ò‰«[-òýòÄqz`]]Ž“îâ}EJ‹g½yל9þV,±å ‰Sž{Ó$_9ã°ÈÕˆjˆ3Ê­Ñ 5¸H(¼`¬Û¦a)P€Ðœó]]oã}9©8 /ÙauG iB£*"SÐ"GG`DŒmóvÈ 9³›ª—¬;b¯!À™3àˆzy4ЇNf_–f‰ÒQê‘*¹ˆJ±_¦PTÛ/˜Î5Gˆ‰=vTÕy€ÙœG£vÂ0!ÎÜe[°£Ž‡à/³Â§µ>“Bù˜6qûÙNÿv˜—Í(–ì)އ-Y>qŽd¹%ÂEëZq³Iv?fS.Ú7 »En§„G–¹ÆhíίÑô4<‘½¯T™˜%Úb»„!Î~ÜÍ9ŽF¤6N5x°Ô²YqBŽ=I–"Ãæh[§ †8M½˜¸Û§¤,8ÀÀ¤²qog‰Y†© Dœd)º5ja¾1¨(yº : ›îw„ŽØH“´æ£ °Á.Ó¥šc@œ®úÕ}4¦>©l5KD²L¾ãHc´f]®N/öñ=. A϶jG‰ˆ )/Ç»IôYSxˆ}ÃüF᥀%¢YδœÚ! ;¼øh¾ò˹ïÊÓÝ~RQ-’gŸDüÓslÑS¨ˆQ=ÈDÆÃ³û@ñ‰l¼„cZzà©ù(H¢|ü0ŠtLJ…Ñ8DÝÖ.Ó[@E ë ~„J`¥Ì§€…3ï†Fo+Nñ>Lû:8À8¶»_µ@…ñ⿱°–³“»£H!®¹äƒ:ç¿‘Š™±½ˆV¿w¤èY;Åü$ VˆˆîWU)óÌ;úﵜ£JæõÃÖº@A–yt N8÷€¹‰K\s„›SXˆP%¡5d·FÏøßÈ9Sgì~ÓötC`Þr¶ëö²'öÜç¢î¾ÈSóD@T=«uÛ=EÆLFD¿/óVá&#üýi+·•¬2¨ÅÓwg3öu?k%".ôIq(,ìÖìs½€/E ú6UÛµíþ¤‚ð8±ßçÐÅ£¢fôhœæñ•» …qÚPèÏ—¶mv‰ –vºà­ñ‡0Ÿby_ÛÁóµ’³<ïC²jPa2¡åbˈ{FiÀr´ÿôà”à÷ºiÿQú!3Pif§ÖzûP¯~.ògûJ´8ªNU,r6o§Ä+lÜû`ÙÑɹen°ž>hm›5h8 ~ DònîF7×9……z¶6höº6 õ"R”°†²My¡!ftv4À¶[ÊÃ)4DØì°jáxÙª\YˆC¹µâ…˜Ëá¹G]!ÆÅ=Ç!Ð"êzWoân‹F×ÞEÜ'#á/ýÕܦSmsBÜSvú¸5%Dk‘…µ±8±¡GYˆ¤€ÅKþYRåQàp!°‚†Çb7OQ6GY@Rƒªe9%!§ 5³b->¡ÒæT'PÌàRê€ÐóÊ>˜¼y$ò®Ïÿm¢q‡-ùíÖÏô pÈ„›ˆŸÑ =0ú*pxàa@|¾å óû™ 2õ ¥µ¨û• :}ðlòUÌ#»Ÿò .Æ`$«`Åa~š+‚æ·ûØjñ¼Ðh¸%:š'M»ãBq¥øäðcÌ€MqÖŽ¢v‹¦9n,Ò×.fŽ»q¿B6[ä¯}ä•á^·[$ÍQ¬ “š¶M¸­Ê´»ou”TîYü>6Å¢4µn‰à‡ˆãÐ’µéúØ«ðáþïþv¹Sú*|¸ͤé‘9ïÖ¨Ñ*¤3ñØãó6¥0x%µ-¶µ©¯â‡äKt2õúNåÖ[l2vÐ}FÍ`÷MA£Ý\ ù:#h÷V«š± §Æ$ÀÕ.ðÿÄ?ƿݭôXçôÅmò»%å@Û×g|yòñþ¿…½ë®mKŽœ÷_ï"iä=ô2v0`X€aøùÍ«íàÙQ«K]BW-ž9çy!ƒÁ£ÇÀJ)¾…•žÕ¢¿‚~Ì ÄKažÿY±´ÛÿÑBb(qÂöp=û«C4µ&fNPbíñÙËø*WGT!QÄ»§ „ȵõ8òã.¦ˆ]¡£›b¤¹”ò*ÅÉϨHr®Ãrÿ¯Ž2/úâøì¸»2áüqßÓo²3§Õb¹e˜™²7Jlšªq]¹eZH‡(“Âà"]€¾…sH*…±OäsÅÂelmê1JËÈ>ð¢}gÛÆÐ» · ˆØ“;‹ ý·›ÃZnA;êÎ6¯Ø­oµYN­æ>iE¹Õ0õZ`N Ë€x¿n-×0ó(ä³.Ò*öÇhïñÓú xÚO)5.αpÞK£iT¨èë ÕÍ„ögMMn±OÙ‰€mF†‡ëßâžrâ¥bI‹Å=´þ!p0Îwrtd¹ªþ9D$ â|‹úøÄ­¸"‡ÈÓF裧b¥£XÜ$ÂVæÂä¶YËš«Í_ZSÐþC$Ñ`nA{úŒÅ…´×³×Uûeê8†:¸[ŽÃž®‰òG<í]w#bWDø·\¬_#½²ßM3…Ô“¾iñyÝ€ÆUòáˆ+Rì8QãiÛ’A¹‡#SÿX§èùÚ­T9„ˆçæ¯qu_n'ˆäJc—åb´áµs\,»£wfCÊð#ú;§°Î{ËTsd°ñRY Íß]8ÈX#c@ËÙ¯¦$d|×#e>X:Èá–©føfQ‚S<;@suª9Î+àn @­È=ÿh7o6O¬lÝ©LbÛ3YUì¢åFS¯4G޹°ÀºÆæ>Qdo²ãð¼·÷V™g†ÅŸð5’éö«)í¨CQ™’“ýfêÄ÷ !Pȶ•y»Š(þt< –s{Ûò¤@Š —s#XÑ?{$þÃyíœmŠ=±­tÒU¡ÄDÂû É`žêÈœTB†È­YÖ-ˆ"Í¥”åŒw˵ì¢JÚˆ4.9É6ã.˜"Ù~*_Ÿ£Jß[ûL t^üÍÕ™¼e¶¹íÔGcä$.J·$Š+säJØË7¬¼§k¸ÝbÊÜHs/œZnÅVOfZÖÐ+ì×+²‰Øló #«=Vã–gÀ¨ôÎÆÕÞþ&!%nÈâ/•¡pZr!BN<0”p“°Ÿ"ätv9V 8ÙZ_(‰¢Eÿ2Ù²“'…ÀÍШ*Ýy*|ÄùåWbÒÖþz!%ƒ Qª âŽÆ'°"v-4"ÇŒ Ê|ÊûtÄÇÒµK+žÀŠ¨È§sîœꦂkS¬Ëxdº]ˆ¼üòxÌOÃêw!òòïÓæœØÕV é©L⊅rOâ/Ï¥óOe!$7PHv©9Úž°áOpÿÆéK‡Ú…yÐüŠ÷ϹënŸ'lÄ@…ø°uO¬U´Vºkî©ý2¬IÜ0wœ ök)”´ñgœØÕÚy‘×´Õ F2ýŸÛ`OÀDê±Tí>½ "Z:ûæ€S&.D™¨ÐÊðy`ˆÁœHïP"?ŽËt·Ó+H"ª6âHÙº%VÄ<À¢ù‘u1šîì’H kðúz9ûcÅÓæenëvÿtl¹ÅÿprÄÚ—£CËpMèú¡´ëéÐr:0Ú ›Èå¯H#¶ØŒ´íìz¹•¶è/ó¨Îgwš ‰#! ¨µ{MÇÃ{j¡‚ü/@÷>ÇÚá<WN͈ÖNî(”8ÉŠ¼f2íëê½§\Dd20p›<…c_ã\ÏE3ûÝ 16@K†×°•åSf07ò[ȲöæTfDñqáþwÒ“™e(¥7§é]¸“@ ˜94(±Río– §›™¢…•ìbÊA€¸Zä© »»´ûUG†GÚŽbþÙS·˜0£6xò{êºnÌ+0bü †é1†½ÃÉz<ÑCì”)pÿže\¼)Ësá?ŠLö«Ép S{)g6!¬˜%ˆyÜ«ƒZÀÁsOÆ•;õq¹oj{~ô2Ë“Öß¼ ¶T4äÖ¤ÓzOIˆ,4¾Èò¶k“èøä·*#ÞÙÞz³<ÆW”¹ŽÐ@‹u>{¤”qf¼$W¶o£s`è{K^ˆÝsjŒÔËwQÊGù~æ†'„`KüyJMD3lÒJŸ¬v;¦ÿŠï CFù9vBïÛ:Eñ!‰e¤úÅ_¢p;ÖÈ|c,Ƚ‘°ÿ=u"¨€É±œöÐÝ»QN_e ‚‡£ÌJZµ *«â¢àrá÷œfQ•˜‚ªP¤‚þÉß“H¢JûyFB„˜Þ^Çœ/颈…Î陣,.HÑ%Ø`ðÀž“\#D` Ê£'Å÷?G* 4Æ8•ÑNüû†¦°r¬6¬|)ÝûQ\KÏ r=M‡Ž™a‰J?õ!ƒ¿¿-QPyïõã3ñùQ7®ÞAˆ&þ¿³D‘ù… Ž‘êú9 `BJ´ÖçÇñw1…±NYƒøyF…ž˜bËLÕfG+ëïØ=1 -¦g(ö¿´DÝSë…zÐqJNÖ­©¿‰‘£`^QÃ`6úדžjœñ19£—ö.FA%¨“¦6ã î±õ"tðQx¡BàÌ¡ˆ)Èb$M¤éT†Ÿ#FÓ…QË‘Dö÷‚€•˜ëŒ‹Kã€LŒÌQQ­Âv1&Ī쵂ÓÕßÓàŽ„€ ‘ïSnÙhp!‡@ƒo >½ŸË"Dmw"#c6üCáÒmPa(b´Â(,åÆý{÷œ‚-cA•ûvšIjbJÂï¯i›ÿŽGS`E¨ØÙ.ˆ4Э€BNd~ëð‘€’‹)ùâ¿ `˜â1} ‚ʈ3ÒܸŒöø(ìDäaÒw¬cFú*3Î[o$2ο9‹"z,9ê"ûíÊðÖ¥ø"H¸E*E`U`lþe¯\á'"ú’9%<Å¿ûkR¤ÔgüO|F\ Ï"T´¯˜<'-Š[ËÈð¤E$F—óéÎÚ\¯Ì8Ó_„Áïžš²IóZ#µ€¸âž[!'âtS/ja ä‚J¹_öNàA™¡z‚Jvˆ¶ ÃîØ»Z0쬀6ˆ¤Ñ%ª’O¢î>Nƒ}þÖ@TQJm©ŒÉd4¼9ûY¥bÑÙ¹§':h¢JÅñaäh›}¯~Rô­‰ýì–-úˆ¤ò¨Æ^.×a“Ë"ø!yúÒ¢>3Y¥Í‡ì¿a†àÝú;ñ’(á/¯l§ìe¡…!DήØWØŸÛ,Sdžlaù– R†N¶8û}Ð~oŽ¥‹‰4†eq†ör.¨ã—>—ó6Y÷ÐO-!qyabë2;`ŸÅ+Âý‰Œðp˜‹íqDÿ@‚Ê™«5ŽïÃcO«Vdñâ‡É‚_˜ý¯†õ(pŸ©.oÂÊøó—sDØÿÒ‰³ÕÀŸ\E÷'Õv§£jBuuö±åŒÚ8£Q¶ÏÉi‚~ÍæOÊeðå@9fÔÌ5Ù›çOMD÷'§^“ïÁ¨µÏ>o=ú[$ì#íºÏ» ŒH¯âaù÷wrCgì»|ÔùÅ ËŸE"† Ñ¥‹î˜$Ĩcœ“ßÌüQ.DÞ7”;rȶ­t51e›8aesŸÔ&âï÷}^ÍT »Ç ‰éé43b=?~ý—×Í=@_šEÄÔ<%ͤ€›Ð£2­ÈµSl;©8`Ι¹‚äelj!óä00bàÄèürŠžq3¦,\Lm&­atàí–HÓ æ3dXí{úA¿¾ìVP@I¯&ò/W‘´ê–‚mé(4ûß|‚ŠEJœ—‚oýî&F·z¤j õ¡­×§I^[±Ka¤+¶ÒኾvÅ´_óÖt81») Ñ:01ê³Êé€"[”¯ëï:1òª1›ˆúšíÝŒò 1j®y¸ñâªAìoاÛÊF_c§ E¬ÃX½ærjí×ÞŠ¶aV ô5PÄôêýúÏ-Þ' 7…H#“íký÷7«¸^ä'pfó>Fý›ÙÅÈntünÝ4¹‰©~Úq÷&€öÍ¿÷‰)¶©P¸©|¹´ =•(ÝÖñ ¦ôæ A¿¿ÙbŸÌX,Xn˸€Tvñlù-=F×ihjkå.“ëË~½{Õã÷W]4 ™é'ïLÁÛ±ý‰à¹?ùs×ÎÈp6DüãsbBÿp#‡ˆ§•+ÌÛB0g±þ[vÙï.dpþ1¨ßüsT TDðmÁLÀáÂmü¾} 4‡+ĸ*—íØµÍ5H¦©ÞÐÉG\PÍ»OÜýÌFšëÜ{ºˆþúй!yshÀº^`+T¿ž2˜Q-3N̯Iw›ˆíñ¢8ú1¶wAålÞia3ƒð—ýuÚãÈZϹ‰me>˜yb€¾±…rAkAκÿsÍ‚öÏáCW1; º]T©¯©¡Ës«Ø³U.¤‰ `eúâD•Ò ©×Ô‘È¡=û «¯!üú8úÑ©7ÞD•bŒqÍõQ:ªÚû÷OŸûÍÅQ³Äm°þNÌáêo¢«PµÜYRŒŽQbƒýòíÞJõ#‰ËÑþ·/û.÷ï^‡€¹½ž É×þcõÎN„$NÑ…þšòù°FGf•9”eö‚¯}4¥×I€Å);õÀ6$Ö:t'ÝÞ¿Ÿï…Ã×¹'V…J‚ ’ª«¤*EüÙ®z+` “†ó"–\ÇAJ­rø:®št}çðGDÓ:-45ñ±»öw,­)c/y &Ü-XZÃ7C<ŽìZ´8ÿ†wQr_CÀ#HÏ{Æåït‰u?»ŠÆûG«‚‚÷w6&A­>àÈïÀÊi)º»±Àj K]þ-I"6¨ðy7U y°×Ü#/̽NR‡Æg’}äÿ€Ù@P˜Hf’ÀuàÚï([S£è%‘ydW&IE.ªÉ¢¤‰*õ„éãb”µI­‹¥î ¼qçJeêAs¹Ð«"vØb{¿§ì…•Ç ýC,r÷ÖìÛVHíg’mS,¨]£§½_!ÔVxÈ"2ØÿÁ|óÿÜ¢ °wS ÛH#ï³ûO3Öö´RsbœK"qºï.‹57Å×”&Àƒ÷³+úWúI—lTíÏ] ½Rïöê)¦FÉï]©w4"_J1èí°^ñ5ÌI›s9Sÿ~}õ]¿´úÍ_AEb^Iÿʵ>!׮è¨ýͺËã*§ä§Ìÿï‚ô˜G6Œé¨H€¶e™ôbF ~¾i®4¹û{ÌŸèšû“" ‹, .WQ [–Cÿ]sR^,m ,l»¶%¤˜•—»–&³ *üF«zóy†ãÝSŸ]‚PhÊõ_îï#Ôé~Ö +qì0\PyÕtY¸™“]hÎÃþ;ºÖ»".˜È¾•.€výŽ­u5N×a8€ ù®ÃÓ[yýðÈ& ËYzÿ}Ë`žö@ð>G«êJ’[ù÷­'àeÏ:%É-6ÀX´®Ñþ'F^ëZ9@§þf˜‚¬E¦5¨FWjk˜ j¿³8Ž“Û‡ÖºŠ÷ñ˜Ð$ºéí^Zqÿ@§a¥‘3?Ú©E½oRµ#=“àßYúÉý³¦D×+ý $°J„Þãáö´Ê×ïB„5 º#(4Çì…jztƶQ~ì9Ëÿç^EQf£ ö.U£`}£vGÐ+^½Ûà:uÛ3<œâxÎÙ˜ßOòY—¼{Rq&,l¦µ8 VûåPB_.Ãì|û ­ ¿¸NÎ纨?v}Ãí¢SÉ u×üg×èóW½Ëhm¤Þ ÂÂài.F_wÒ¾Šªž Ñ×ïõª\–Ò†…¸[ã«”ßïGìná§cd|ˆÒ„ñ–—ß{}ö…¯ßÏtñüSâu¦G€Ñ ¦ÌNîÁi¬ˆøöWÿþfudö2É á‰ ÈEȤ÷0Ü+mUÜkU¿ŽA²CŸ{Šÿà¯EþEêÄ ÎHÙ¥dd—6G3>µ;µLLTÝÙìèþì]b¹°ß_ô®U5òȈ[ÂÈ0n„ýZV÷ £uH¶Êp=\T¥(‘0"Õ@±í×ù=;•¤w9øm¼Gšó.ê÷ º¸p䤛Q÷+5K‚"^×;‡?\Œ¶9O»ÙlÆ­Õ-¶2öJ=ÝÆ|0°?{Âɼ͜‚B I»y×88±Å–xŽÚÒO™báÜ}ÈG¯æÀ^Æ^/ªg lhFº;0q×èä¶Œ³¸ ²¹qanT+‰.ªlnº‚d+QXæ¢Tšô„#®ôßii]ñ2æb°ÕŠgMÿ•wOª¥ÖÉF·­ÅïïGxe¤1åµYò‘*¢~ßÔ•F™ÇprÖ¶>¬s¬ 0 —ƒîw*lnˆÄŽ6ÚË+ª˜±öTIw;ãwÀ¬À,í0"•ÚL¶ÙS§PÐb7m¦~ãð¡DpAµÂ…þ‘“|÷:ص¿ÚeÍ‘ÿö…—‰UšË$\-k}ó£FA͘øÅL1ÊaLlÔ¯çúøþÉ2M_ÜAOÒ6DÆ÷kókÔqTæÏVR¤ãíVÅøjÆÝ6F°Œ"M ’ޝ¼sÞu»9=` úuK¯¾àœ¥Ë‰53ÓMЯ;zšY^UVÀÞîÑüN3J3ûéÉ!©øMãOŒŽái‰3ãõ.¡í×½; « •iÆ«9·ìkl¿æ[£ ^-j¸M—7(—!ŽVOf&€ÐO¸Ö0—¨ª\ ê ÏÔ¢tQ½îTèAŒ€]ÙÏ׋q<þðÑ;î¨E«n¥A{#ŠóÏ&£hÕ1÷¦ÐÐßÅЉ)²æPÑ^GÖçïºVýÚÈŠŽ}é”u7LP9©ãš‰" gîiìŸ Ò¹6Ê£|¾ãߌߎ‚1^Úªp.¸DlŒ_KçQí-P˜Ã¤!Ž•éʽQÈg SéH%‘_6â@©fõeþÿ¼ét•ˆQåòøk¤>^‰{'‚µ/dϰ¹.Ñã÷½®Ã¢8¶Ú7‘£|öP/F8Í &ÙÀbíWÑ|9Ûé¶”œQð0¸€ã úï¯ó÷ó»pÏ@}±óÍ»ÁQ/GÄàíøO¿<ö•)fãèhCZ’ûP4,J2üúöN¡÷>t6´Sîß­}–í= 7/åL÷·x0 7í@€zˆôsÊÛ bzºiˆDw-k”ÙÐDÞ:*8O»Ùð) xg< Ž÷‚”–†,º¢ZÜ®6 ) ¢&Ú$ƒÆ‰ýœÒå¢yp‘º‰,ÇUÏ£0ÒTذ7°‹ù}ËÔÿiIc¢¢p—ÓRH4v9ªôoãÆnÇ*}kï ©£kÇÇ.)ÛÞ©ŒÔ%HARš±d׉XÇÓ Ç-å9 ­ÉT_ †(8á¥?{6)‡_gdügâ™c_Ÿ|Ógíïsx÷T|/*¹6 ²[ÂŽšþ—ŽÙI‹ì—1×!™b)ÁLBG=óð3ía¦Ä78æÜ Ë‡L%¾am ì¹b»4»ÔU"ç8Èg¸ö(S§pWQõ&³ýæY…ßÞd+ôß¶=. ¼+б5n*㺠‚ñDííHX®eHL!Æ1ž±Óö›Ûo‹‹Ó•ÑÒägl ©€àç9ôåÀ)¡&çØè°9]ŒºÌÀ€äŠumïA¥ÊE¦ÌiŽáéçhŸS'O¹Åî3ÆJ{ÍjG ¸)j¬ TÑ]Pú&Çg£ƒ·|¦ò;InV’ÜÌ ÃH‹EcT-úà óëI5ÜKüÇðéÂÿ ÷Š/eMÔ¯SƳøGt.ûx ûGuÛUÿq‘ðÚ͘ók3g³ˆx¡x§Iq·ÉÊù•X1O*>X!æØN:A¿ßæØ¥ÙÕ‡M#tûþ<Ê`I_áŸ-©°‹÷þâ°aBŸ"À…Te¶ÛqÇÆ^m:K®»¿×q•—2‹uûÏùƒU p”éoÐי͞Þ÷÷7[=bÓÒ‡I èëud4v,ÎV•mcFAÔ?d:ãï³é;䢴C³Ú—Æu°šüÿ}ÛVY6¬°âæYϵ®æûý,è…ÊâÖö€-XÜL!¶‚éI›³rà^ò‹_RœJñ XjÛ–¼¤¸9\ïaNe xÉè÷_î×ÞÛT¶_)JڵחΌ™›ÀØQØK_`¸†° «œÖ¦ãÝ.Eá6Ήª9Òí*®¯FƒÊµ×§8|Oßœñ †š7±Äõ5‰‰ÌÇcºãÎËU8qŒ9‘bò A’Œ!!q¿é Çý\ÀµôÅÚ aêæÖÕ’ÉQÎŽxý‘._/³¾£†a^øÈåHK}_ƒß$V¤W&¢éåŒoxd×ÌuKl^:EÚšŠEQÀ.š¦ l\þ‘F"p?kë°tª±£ÈÆ!ØFl®¥¥]šSžœ;ìÐÉR2ÕBΨÄ*½nÔs‰ÿkßçòkF$ØÃaKü_ÙÇçàä³P£r!*Ï¿²Â`8…äÉÅÈiO‡¿cš OÎ}L1i`h묓C{U_jÒ€B]\%q9b‡áˆ=«ê.Œ‹µQÊêÃÝŠ«Ìœ^ô‹0x§œq•ó*ø÷·FOr–[p¢èÖÑ€¿|î´öË&*A€kÅUW/“QÄQo+ܺVl.ŽZWÐëŠÆÕ¨½YœãžšhQq7ôƒ T ]eÇ—‚s‘¶,$ÖñJê® °”p7S ¿–AÖŨaˆ§"Œ'·²››0L7ÚåØÖ¸G­n ¿+}7¬¦ßR¤®'Þ3ä{¹4w Øu'‚›£å&r1·îÓM-;³ö»=}9©ãÒrNÆõ,Öü5õ[ ÍÑ¥3 ÉØbæ«ðï°À±jÑc· R}@uQC`wÛ9ä5­Ç×, j@kfÊÒaÔ½€©­78ü­E:c¶z¾£m žŽ­“ýñ|ï›<IäæÝªU²C,ø™¤»¥Í}”m7N\ pg\÷gU¸3âîG­65ÇÜŠZeÀ[bD†;åt1zýÓ€NÛï3OS܈ˆ7ÄQវΩît âb3èîv•Ω¾¸Y¸Ç"“B£º1ñNc†"•˜\Œöç.éW3 qSùw^rÃ@±71…÷ YÃÕrëz—c|dÁ9¹nŸX/ôÁXyú&~Æúqêbö¡„›®h.¤¬‚hüÆÑí”æÚ…~Ëç0z¸ÎpÝÓ¥è­þ›ûa¶Îퟭlœ‹í÷~éŒhñÅU&ZÓ:qE<Žì¹£h]l ZÅ;6mR°.3ŒÁâlYËþ µzEëàÐܸ¨j¸‡]tâ r5z鑦5g„°~ï–ηöuœëF=ÛŨ9Sê•àíA7Ò­Io2»¹òÕr8è4/õ4°¡Œâ´[ϹUøwpè}´–í SAÚÕ9­³¹”%ó­Ðä03fÏ„Ty¸Æl 46+À¿þ¤ã¹?)îÞÈõ6†{>KÖY ìÅ ŒU.ÀFnàc•ÉVôâHi‘æ~Žþ±d²µÇáHn'ÿõU’ zqlEŇÿ( ·Ìë k¬Óx‹ë³m‹¥ß  Œ%Bžg¹ÆK¸wg—‹Þe<ñ]è0 ¦ìuÊ+K†^s2ˆƒ³›´ŠF–>Ìg>[\WÚ#„ 2‘›Œn“™§I WËebtÞF.뢊„7V›Q¬[ð2@ ¹QŽÇÈêìUØy¢8£yâ c‚v±d@˜²Å£Ž*!Ž}neâaSö`¯tv%Üþ~=vµg¨hÞäãvuQ³¼ÉXÿƒW"µ«Þw™‡]dh Íæ¨±»ŒÃ¢œ•CÜø–вU8nÑŒÅPµ×,ß‚ÿÅ}e8ê1A³2w‘û—EÚJ1Asn– â8Zªþ¸%f´‹ÍÒ9ƒ`÷ÝÚ?º±Ïh°­Dw–Ã<ð§#Nî6Î.Òr¤£Ö8(ÚÒV°1£Æµ>ß^™ÚrÛD}’ô¾cݺvÓOü£ÀlÊλNØF¦˜ì,·µíßuåv¦EŠÿÉÉ÷¤ òYýÏØùŸ»úwAþRú jáș鄻‡ÕMùv/œLD9溵cº[ZK Ä8(W³c »ÿÚäÙ…tÇ(~T¸(_K Ú…t÷¡”²ÏÀ¼öY8p—áYø Hr:>N”z+¶ó*zz¢÷î`-ã´#®óû`ú¤Q³‰ùG‹W-zh<º Ýꬊù¾Tí.©Þ…{=ôAˆç×\E¹Gaa̰hñ3i¿^ab@“[<„¨ëíÆ-†¬œD¤Y“MãÚ»:²ž‹5$í%+$µGMú™7 ¶9ÃVn»²"ÊAO<þÕ]WrWCÖ¿‡¦øY~„yWCÖ8c&{"ê^;?·ËäíˆçÆjÍRÀ¾¦Y›ü ¦hDÊålU¢‹cä‚ĉ“ý‚•¤M›åÂÚñ‘îU•ù[44éK¬–ô+û»êì‘ùe’ã €]Ü!N˜²˜æŽ]LÅÌ$ùDIÿY«´]ÁO-F=‘IX¶Ç®þˆu`Ö™+5«‹ªþŒq·:cîVlG0{>XRL›ïýà "áÁ y~{ȃ-…O$V׎ ïUÏ‹‘²7/»«6¨ÌëD…Г¯@ãÏ>A­Ð.`W. ç]5» J8]q…#>boþý+—kCVLHñÆþðØ¼µ1€TOÚjwäÓÜF¯ž(ퟓÒÑ;vñŒhä/uΣL²AÕæ 1·¯:u• ú37\“ ™ÛÈv ¶Lä"…¼‡PäöF—‘ܵ‘3!yâvŽŒäNÌgŠÁFµì~‹Lä¦×BB¹\ÝFTp2ñ‚ùN)¢ò:ÔŸè¶Ùñ©-¿8, éc‚<­²ö–Ýþå`Qœü¢-AÜd ¯@apÚ^ø¼£T½—vÕ¿¼¢aÞ=±‹þ]\#”m0çྛì¶õ80®V£w€qfûØnMP(ddï}Þ3D;z¾H˜ ÚÙÅ sÃ`.ËE玿ûç2‹&ÌJ­‰a³% ǃ_ô°Y†ÈãBŽ~J:mÆÚ—½dX—±2æÏ§ Ò6–?kçtL³?_àBœsˆÃº¸¹¶ßV´Õ2N,pbænA (É&‹cwŽ … h.â(Xö½5öóE˜dÑ~·_L=áЩJ½Ýl þ”(ÆÌ­-Ë>1Ò›‰¯Ö'¦ Q†Hø· 68®Ý·'dȧºÎGPB<}fŠÆÜÏbÅG Bøâ8‹FSÆ,Ë#DÁØÉŒb,Ú¶ËÝXà/œcE €…è±/X1ñº,¦t)l¹—~”Ã%GÂÈjH4³¯è°•£þ­éÆÛ‰Œ}»£ìPˆËðƒòκ.Dh¢s~áðŽ]žYþG`¸ûgÇØ¡«GPB8Ó±ÒþÊše•Ø‹* «·8c‡íß•Ø{t¢£®La-—É¥ ^„ξ̊ßu³ç§•%À´Ð\Ôv×´Â b‡ÉÈÅ좋)Ì 8 Œü´iIü§¹œ>ˆèØï¦Ò,¨m¦ªöpýÈ#c¼áÂEEƒ@“[j2Ä%…Vº7" #] ÄÝV“Þ¨6–ñ‡lãBd ̨°["±ŒsÛ‘RÙ³øsD_ßp´#†¯íý˜|Þdžv+­K×ô C<1{~`&7<×3; "r"°†pÿsWÚ©\ç ±ì”W31%ŒÍ%¼5—ªÈ÷r° ŰbCG¦w;-Œ 5é)÷ D¯ÇGúΑ¦ÚG ÕÀA +æ9ŸÕ:däCÐÌ]ŒN 4¤'ñ‚Ýb€+ý_òR£ú21:ÊÉ@þ<ºöèPÜplL†¡¿Çn³ÛMaÃ(ƒ×G#se¡çb”$ ´°4`:ÁdPgÚúp(öµmE ™yp8)¤Ý<Ê©ìÁ4Æ¢ü®çªõSáÂokÌA@ ´oH Cl#ÆÞ¨.|®y|Š\_KÖT”{wû“ª^]‹ürÙá¾³ÊTwê:,V¢ÅàŽ:[¢)ì8â¬ËQ_‹f&‹§Ëå Ï£ó¼‹ÃéÏ6£í({°ÿ4ŸÞL¡$¢ëëÁøxÃ'“uœ7J˃ Š ®ÿpŠïà d™e"YÁÙ_ªßì™"ÇG7æ³W‚p×ȱäºn¥ F?ƒ+îâ;»í„0µ²Ø60;ì‰#ø „ìÈú@Çv·7È.ôѼq6^žVæò(:x‘Ž?ðßQË·OY9Åø—}uË :[û'D;æÚckûÏÑÁ~¬á:™g¶³xT²oäîBÈ,òcó a"ÂÛÃnúω‡éGs‹@m2Æ‹“˜›Ü-NEÓÍw¥—dw GB„*’Â.5Uð#Ëoxæ!§o?EòÂHâmŽÌ r{„AÐËÀ!¸©";GÇù?¨åt¥#ÓußKèƒ=Mt£ì‚¶EŽˆùE]EÄFÃ¥ ‘² òÛ¨‰^Ü̹¡{ [®êH¾št® úÜhŸÏà ®}Ú"€CÎdÆÁyÓfùj”Y&.QÊá#áb ‡ ¥¨ßñ_p|ð£„Ây00<+f u”NÈØ)§Íã\³'´i º°€Š±£;:AÌðJºs1etèÆ»&e™Ý6ÐùáÈ¥åä…µh DŽ#~ÅÇr[Z ÂF¹Ù*b_ǾP…[ •“sjöSJ£ ±5âÕ¬ey÷çÕñ±´þæÞ]¶<,Vi.€è&n“Þb¥ñ#åH=_TE^˜\è¢4k‹r?möž Ö<Ø» Õõc:f d=¬´ì-²~8€üÀÞ³Ÿ¢ÅdWeâ±™ôU°0sï8Üw\†ÛÝ:WÑB¤Si,2JÇY»jº‘s$ ]èMÂz?%·¸q/3dh‚ºwª“Ž¥Ûo\YÙÌv1:XYÞÌ©†„Ü3PÄÊ-N‚õ&u…k˜\… Q.ÚcÂø[®¤º•U¸Q…ZlŸBÑdÂø²ž!·ˆÿur½ÆXpŽýz²â²füQÈ努« áJÁDä2Û°ºÃ·Øv0ŠOËçÎÅ[x†Ì-¢ÕÙÎt|Ì[ç‹ÍFTÝc79^êä0V ¢«±]é¼Úip¾®¬_\ˆ\ FÐIéÁÏV®‡/ðŠßKît—¹^™j¢Uñc€äBdìH(¿(wk¾. ¹ŠBP£á„¦-á¯"‡‘êFy‡âM¬ÍÄ(r˜–·ýhsÙÃJ‘C4ÃA uG¼"û—è9Îi‘=WÂ]Á £Ì‹e™…e\Á càÅÅduv=LˆdhLþŒM@Pw!ªòÝ>6JTþðPŸ[ä2¬º°¢ÝÕS`õpà ¤M—¿ßâêÁߦùì~Vžâ*ß°§²0Ô¼mýÛ®¢†Œé`ðÂùaIýWQÃ8áFû1ÎSfMÑ©¡»Ÿ-anñ¼¥Œ¸Ø£ëï¿\!ñåzAT~6H£ÁZ> R SîŽ+À!j+…¯7ø¡ ºåԥ§Èõ_¯Ü \"qü\uî¨-@ôTXR9ÈŸÕŠÆÂÞ]Îø—%„Þ≛C÷G|wÙœoýÊ;¿‚’´Ç{LMËáhDW Âž®ñÑqðß^S$ãªcݾ®·MœgQÈ;Šî-,B ÂÓ°wÇéhwuÉíHmеnsÁ ÇQ$Ü*E\ a¢âÇiö\µwuÊxѤ[¨¾þº8»I%¿ø¯ÚdcÿƒNºsÚê¶l9Ø/W…#…‚åp|\A~1Œû<ðhäOý\ ûñͨâ\. þq¼¤ÇÔd7rt‹& |24Ù…µ¼ø[4µ+ë:®MŽö Ð~±Pÿ°™gQ D‚ÆN\£g\×L½§Ž A侯¼Êš÷ÌúY I¾i-E®šĹ“ìn _n±×(¶æ¸ú;¼:~L¢‹9CÎÛTGSæåØlýl5Ü£Ìâµâ絕·úLu¨ÚRäþJ,¾·6‘Óåå>€}gIq•NöÇ]9¤û¹ âÕqR£ƒúÙÛ@0Cf‚˜þÒ6Ü…>ãùóéÙ`B䵃©Äˆ,$6§=£Ë2-“‡2J¤×é90)¾T±žm½R¼wi3”v"‹^¤l ¬ *HÑ¥Q@Z‘æ&x_SŒS'^'s3Ý™¼êÕ q!Ø”ÔvÆû^=דð‘žÌÝQŒ^Ñ$¤¢ŽKAÔÿlT+ËæÂyHCîãÒëWg’/~ØÈƒ¤ÚO*3Éü}:spk¹×[ÐC¦!qmy¤®Óñ zˆ'9O›a; q¿‚’Œâ«Õºö7ÕbM+äèØ²nMˆyH|¹ fAÖÙó ç°§“ÁJg7[À½b‚œ„ž¬`W™¼"Pµ&JP]nþÔ=$ÚÞ‘4G KŸú‡À%…N -÷ðŠí/êüt4“#ë0è§0""fL¨§¿âç˜d¯+z@¢ø¥ "…½C^žpSµ˜[e¦™—£È¾ÂBüP“^7áÿ* ‘ò6=…¯½`ŸB‰àÜè¶"'5íT(‘\.>Ìú鼡çn8 D×ÿzJAœÙYÚpw­žîSK`F±¡-FÖì§ÆŸb‰ êÜ0;JO»K„œ¾qIŒÚ³T#³(ì¹Lef·,é'`․‚£Ð¡ pKM(ˆ ˜å¦UªË6Ÿ0GÃh ß0¦8lˆZD¶HfJ4þ{Mí&p†î/QaÇ$|¢Vc›¾'½µé0Þ'0âΑ/Üzš7Åx"b˜Çn¸¡;ôýé¬2‚m¾Ô·°XÍáBÔŠwü €^Wm<Ñ- }çd®#ÀëB´·x`¡£^ˆí§[–Ê:üŸ†ž@å6æ*t£ÎX2û³g '#¿Â}À\ítÕÉÓÑä‘Ö è6c]Dž&Ç÷b!tx¸ó –˜ö&QEzmO3õAV€|”±zW˜¿¥ÓH—ïõ<°ÙûÒa¤Èº“q»ÙžÌÊ8\ .J&éMˆ ˆüö‹-Br(ÝžqvÔcóŒãƽ~çhç„üZÁ’§0âEFî‘ï"CåBþÜÿÌR“GÆ©ð¬±ÉÊ!Cö©Y÷”rïEðCÖ}£ðdUŽžÎ"Ó®B"ÒËeyªRH¯M,€ÍnS\…rõd„pmQ¦èá@ù¥‘Å’‹Ñí¨ÜƒôÙÁWȆU–dÅ[ͦwtm£bp†éþǨIÁ>—ÃÏÕ–UJ6¼ÜÕ“iK ‘芫¬MdíÓqäÈúÚ¸–n÷ `ÈèêA ›$ßÞ²E¯0áÜeŸQ1÷  be “;0¹]t`Í¥ÂÔg 9žRi6ŃcÂìÙ­”C^>S²ñR}êé0rÞLÜ´ú“ý© ‘lÄ޹T«óþÔ•d‘ýïg#néÆ!ü7”9ÑNùÔ<8OÁø^™ƒÚµs lÌm¶‘£h*úÝ¢ä)XØ‚Ó@ùñ°Tþ+4Ô~Fª­¿ÃS pT4¢6µª‹Ñ o³zñŸ³yœ*ŽÿøøÏàÛÚ¥§z…kÁ¼y9Â{ üˆGRJ³4^›nxàË’”í£±“MibäúGÊè¢}…BÒß_e¥€,¸‰,ò6æV!SˆÅöam6e„¤3…ØÓèÏñ×"¤tÒ„6’9Ü*MbŠpÚŸgÌcû_¦(ìWÓ ´Ó a1„µMˈÚ@~ p&¬ŒÈýýÅDH±)/ÄrKyX£sGçÄÏs‰£Ü\NSÈD‘ªGò7 ã™…›J€»OÏwÇ?v=e/iìÔñs' U¢ÄàŠ³è¿ÇÑlà Üð’Ñ‹夛"jŸÂƒ æÍÅ©{nûz*µ0~PœOqvìcWAÓYÔÈ=7¹?"%@ŽL”÷G7ó@¢iMÃHâÀÅÀ¾MU·#—Ô~k\]% `°)>'¾àu¨UYoQ4y'cšn¨|a:\ /’ž¬öËé0x/<…þ9—îu—ëj`Ueõã!º•%¡©—"îu-(ÓÐ~C»Þ­e2³©úç°ÍTPÄèað _ DŠ §)Tc\Œp€@íšÂ#žôDi‡{P©gI$±7q˜Û¤ª.FÐáXPRA£Ï0e¬g¼rÔvÝ´ÝÛ§#ÉH¶=¨J-¡}"BLžéì\‹#D%=©x˜¥™¡ BI#¿gÒ‹±d·×†Ž9[§Ü˜ ‘t܇õáÚ´í+Ö–ÀÞ Õ¹£p`œÞÚN_?R&€×Ä ÷sÂÔÌAþ’£‚Þ¨}ÆÊE¡/  ¯¥f¤ »§ÞƒiÇ¢ü¯7Æÿ6"Ñq°A¥3„ÞäMÂv³·¤ÔÚ¯#¦ë áö)˜Íš8Ë1#q³j´uçS¶Æ£ûptt?¨‡.cË®;ÆB×¶ÆØ9 IûÎî¯â^NT¨ñÌbgÚü±¸— §?ŽN-¤}EÊóxر¹ Ò7Æâ*ÉÃjÙãR«A(WbEx²ÀuA•K²12ŵ©{Ð*"8`Ÿx5+ª´„²#‹ÕÅç8Ì<^‰KsÙx™†èC^®‰'M†@2ÚÅèÐÑ—§tœnr!î «§KÖufd)^,A]Þž¼n¹}jb2ÓæxÝÆÄ‰i)"P,{(«ƒ#S:渫@ÑÁuŽž[É–m\i°¢qÚN‘•©:Ð÷È;_î¸m_ÎCr‡()ìÅ~Ê™Ð&ÍåHty³.¦8Ù½ž2¸›¬ÚÀ8¤¨ Xƒ8öÛ•Sá1h1#“ÄFÅ~=u5A•qvh¦¶¢P˜ðC yöÈó>§oü¢}€wq¯fÅGÛWx…‘²M”BbÔ¶ˆ—Éä”î¤ñHZ §}*\8È/Ñã†Øoè¹íS¢! á)(éb f4“ãÊl¥ëHµO‘•m¯5Ó>×> c{Ï$ú¯œ}21…võÁ÷Ã?ë²ÎKk¼Ó,7¡­úŠÊ¶)>döÁÕR1VÂ.üº£JEò¬çx\«¨ÏhŠ„[bŒ©±í±uì+çBìÑ4®Ç´1%WH~æ%ïq¼áö½’+PT¦„Us>…˜ÇË‡Ñ J–Íc”`ÈÅEýÂ̬ÓKE\ Ìëaýìä-³–˜™ÐIBwX{û”_È-7£Lˆ»×])Mé…s’cÅãîY,¸EŽסÌ`·‹P܈˱ݬ˜ìHMGp鱦ã:r›»)ÕpíTðä2~ö©µ¯>=Â=ŒÃ»íLÆæ÷cý8##v½>éƒf #l¨Ù¹]ð¨µ)"sösäbø†¦2ñm51¢fˆw³Æ>ÙîLl¢fÈ(éKœTÝÖØ­Ð ±:‡QǤí4’¤IÂbÚ1ŽÄ£·a„€ê}¿äáö8Mã=‚¤„|\¤ßr0PSÛãØÍ;¾Ê_N;/™?Á¦o'n,VÓNgÊWÀêêÑ¿›îØmB,ŒU3?ÆŽ)sKZµ ɸ'»Ë9×·&R†LL ÄèPµ¾†5Gz/-5Óç9°NÜ{Q>!(C<µ8£b±9P³àúØ»cCV z+ÇZÿaj!qášúÏx817Ô“íÏÑs ¥^b< Î)û¨@èHçóF£ÈrùGSè05Ž}ë…À­‰)LB J¤‹â&u¤˜T¼þãõŒ‰gêÂ@IE£Ð:Ýiêœn$!ZSG4VâÍ_²GMÌÔFËNTHߨ]Ôbg¡ÒZLæ°Û`púÚO\°G¢‹³};ªk=r~¥#{ãÊVŒPbã0òP(°ˆkûÕï8þDàÂ(ô0:<Ø Ù;SéƒPP0è©öçB-Ž" »'-aûÝ-F›¿Gªuë2b"hq¤Mß÷#ß`;Ž­@‡±§¦ÄÉf;è³ýÉtR)C}ï4w?ŽÊHkL-:ŒxoE}ï²ÿVt ãp7îo¥äŸ‰Ñì?öpÇ"ƒ­C [E ¹MPÀÉÛÅ”ì¿G’¾p¦X›"…q¾a><^Zº•¢”Á–ïð¡©úÙÄW(ƒ\è£Â0\ƒˆP‰²ws£–¡ìB„2HG¥ä ãyÛùb›R ,wjï:U­áÄ ²ybñ‘N¾“žF&F×ÀŒ“ŽFRþ6÷ße lœg¼P&_\Œ0Ç ^"®Õ°c§·V­LbïÿÙ§;§zÜnt0M>IfÊÅ(wc LÛáØ=Zèƒ+•üéÇËh•>øpÉ‘tø}]†™#ŽûdÑ™sÌ–Ö Dv ¤3Oé?Ió(MXXÒœèÄm$&|$Ÿiì‚4ÿR.¥|˜¼°©iÁ&â «ät+UMÒh½­1ÚÞk%D!s†ñØrë» „ä)_”v+Y˜.FABZÇ‘lÆlˆÄ™  !$ßì;¿õù󤨛´Ôõ&ÿ•tû¯Ì#ÇáÿѾp¦®˜kê}‡  䎷½‹)踀~‰^Y2E“䯋eFJ| Ôt ™«ŽãžÃÛ>6µ¿dˆ”PÒÇ« ¦oÜ@Ðц‡‹›ò ç‡YŽÜaBhbÄáÿŒÈl7“}Ç^^âpB‚´9¬›üBFPB3¤kÏ6›:œŒ¸í1vfÎÎ"P¯ÐÊÏFòvšÜ.Dhå˜Åé¶ÐÎ2,TæÂ%CG<(î€r[>©òa¨߇Ü¢ €‚f&²‰Ý6ê…ŒÉEç§Œk•ê#‘ÐvAS‘£m~ÞÊBRÞv¨^äVÔíös\˜Bp1l¨\L‘.¼i(õ’ýíB`:jç £·B”ÏŠèhN6¨õ2‡œÔ Îɶ?רëê‰/\d€"!vxgWSä[egˆ Ë]# žÏi;Œ€´‰QSäXIZqêîô¦åÀ¹76õÎQb7-1 °Aè$›C÷sêø1B”LÜrÃ]qýO¿÷'Ú@ œ’–\bNMÐ-DÑAÁÐÁµ] …©ÂÍR}Î5³¬ÿõ“Çùc17Ú|ÿñŸ ›Ya©­›ŠæQb}Žê×ë¼1|SHq#©hpKRñ-!ý½íø^Æ#r‰öXCÞÒiã(|QÆ—Ï8Å%9g,^ #:ñ¹ˆÑba4¨¹:ÿªÖuØxà©„àºM>¦pÍ‘ŸLox—ééÕ8SæãÜm–úØ‹q2D¡…ÂËGÂlÏ·âzB3‹†Û‡(¾“?@e½ìTÆ»©;Ù\îaTßüItpŽm£öâeí7(Gº7Øšõ¹?Fc¾Ë5½¸' ŸQÔ ö4ì+®îÉ ‚.vSç8×à* å œÝŒ@w<÷ddº”Kæ²í!õr« ÃŽŸ¤ûQÅ?vüF‰‰)—cöêŸLÂ<Ä¢Ìu_¯ø'£øÎ‡*ö˜.¨\L¡ê˜VŒ6¨ðŽØ1¦¥ X¸MUí“é$Æ%†ét¡Uì“‘;~H&LFSÜIVøˆ-u×NÙ×éêEÖ0òéÆTR$–£¹¾E¯æÉ‡FTÌaT›¦UódH÷¨V’y; €ˆªr9f KÊ>÷˜'oLi—'_ÒzñNÆ®" §E‹sŸÂê_NA¢¥³ *$¤ô i»QËÓ諞ø¿ßuVJÉ» ²(¨S°Šƒ;^V=)ðNMÕíŽÊ¬‹Ò²‚ýž˜à|.F}“¡å¥†xX–ØÕ!ª9’/Uw\ˆX¤`Ûñpyƒ§íNKµH¹‘à°Ðíæx<ÓUïp'¸t8¸Ü ‹?Ë×Q’¶%¼ ‘Ò#ð:ÂmŸ­Óêøô/r€^s”¨Ë ?ô»=ïm¤nx“qí NW°“jˆ’ ·I‡w™WFY™D-–âh.D^?»‘2Ä.X×n1÷ a8·™ 3βÒF«Äùýथå.jˆ0 ˆ²OZõ 0hå'‘ÛY-'±ît6!Š0&¯=öÜ‘ëÆ~YÂb±¥Ö²·ÈUÁ„ ÷`ŠæV€Œ+£†›ð¹9LàBÔ2%NS£pµ :'“JVXÙÜJE¤¸¡0Ç6ÃDÕ…èëÇdµ¬§?ã\CãZ–&ÎŒŸÂu˜W/ôCLuf”¢g3ê^MQ:ìLE‘Ó Û«º(Âÿ5þýâ•EäÓ>Àºs¼Á,X•ßÎõܯktöW²ñFws>Ý­«ÂaìäôdãÓl&øbGc,δCýnOÁ‚BĶ¥{£‚/öt¹©’ðÙ2M©‡‘¿#ñÒÓ¬Žg1¾B6‰ã‰ÆRÎršÏŠ.³a„å½ãðò¡èâI-í‰wã+k 1¬µÝ£ð"­ÐÕ´µ¿G¹&L[ÅÁŽìq½·Q¬QúæiÒ£á€1¿S]hm—ÚŒ2½Œ“Ýc–즓”‰‘q5x<ßd1›µR¦ÑËÖ^©,éBJ}pwŽøà­cC‡ ‹ð1'îÆt•ÝÙ6Ôå@âSÞÇ•‰Qý2Ô¶Ñ9LðÛ¯&\„G• 'eû1j—…Viôd"½œ"kØR“~t-ûA¥XDûaL¼Û»†ò!ÃG*õür«M€FÊ´1aVÛŸ£^Ê ,F1µÑ%r™ÇP/å$¸!C·×m7[Ž| òtÌÜÎ9–P;zi@#ü’éñ£Üý6”€øá5‰Æî w èè¥×m𱦗? 1¦—^› Çs4ôØA`ÑåyN8úŸ«µðfë±ë\ ?Æ'!˜¼°Þð‡v_LˆPŠq0â9Ûd(ÿpÁô}xûÅt âÑe<’0[:tœ¨uÄhZ€¡_älí|Øuº-^êÚö” w°¡xâ†G€Õq|ʶˆÂ‰m˜•J £¹&âP4‘Ïá®jÛ{ïÂ’˜±@ýk6= %î‘`ÓYñ_øß£H"1è¦G]m:ÂL;k hnÏw%%2= 2â¬ã^iAgޏ5$=¶EnGEçÍ*!-ošk#õFA,éÅ6²·œ‡LUD“mj0ËxÊ„(àówB‘6Œ—œ>4h½ÛC§L4ƒÉC"9hS¬²6ÎÒLôæl Rì·ø¨0™vƒæ‚”¦†(Pâ^ÀYni«Q æòñYºîë(LÅ(R7Úð9BîBJ¡pþu]#WêBd AÌbKûvо-N6¯ý˜Wbâ4d5 y[)²âÃô1ŠØsÎu1…¡Fÿ‘¡"Dq\å3”«˜£ž(#êíLí"HØ(”é!¨çDas”ïÏ´’}s˜PhËi‰FŒ´àÒû+¶Ý=»¶úþñ0É "ûíd!`•›g¡Ìê°†¡ÆÊ¡öƒ:ùõýޱËqÛíÀ8ŒzÎÞÛÊUD¬i‹Ø@»Ù‡P¨Šb5ýãè¶Aº™?n¤VQñPùEiÛÀÌ^Vt.¦hâ%#+þéÄž¿Q*u|Œr0@Ì¡³»›¢cÀ #SŽ—Ê‰}ºÅö‡ˆ#ò7æÁnØíW“Z!•¸È“(îÝ“‘fflRaº//TíðF)‚âÁÄØÌJOl)èÆL;‚nó(;àŽ‹÷p&8@xT½CüÒÐ<4Ù¦ý:ÆŒ§plê‘F4îuªÁ2Ïl§âh>Q.~)hø…b mëyá'"ç‚r·âûÙÕYü•µ™ÇÛ_s®?Qjjï)öo#çÞèÓ± zÜO¯5nmCé‰'»¿è¼fïk¡'ŽŸÓQÞãËžWU .’¤Ly^‡mŽâr´ƒdäۤŠ%ž•|ìè#Ô0ŠÅ2BW)üzðÕp1…¾Î-g1é«MyUûÁl;/Íb³ ¦j¢ë #ÉçpºYì•!+ý4æa8›•3D„Ï´7êUñ] j*ˆHû%N¶´ƒwòÇ£ÌÌí"@ Î-„© "“g‹Á‹•ç*¹ùª2†Ù± Ðë0kt~Z&ìÖûÎ>׿É Î‰¿ºÛlê:AD*£ñõyjüÔñåãXAî’¶)ôÄ9z@Ɖ:Ûý~ÁG~'ôõ.Dõ¯!¶ —ÞݳHfMÅ€M6\LÑ>Œ×y½ÞkûSQÒ÷iÀˆÞÃrG§ˆÿòZg4ÉJ9NuE§a$nqýºÆÈT¢âaäwÈØÏ ZM¥)ÆÞ÷ÅOYðgݯQåCfÌ¢®EÆîÚ–ÙËD½8(ø_öš˜B1”²©^UŸ *,e£ ASÔY4´)ÅŽŠã[oÆþ ¾‹ÓŒ‚“î…=£Ä Ø#ƒhâÙ#ª€‡—+rÖö9÷Å6•›¸R‹o¦ZžsàdÔIŽÂ‹Ã#ªWü7î»)/±ÿÐ*R©ß0Ï2Àœ4§¶AEý8Ž×–{/».¨HZÅaÜ_šì¡Dg‚ J˜J`ñÖ¾ñŽì1…WØ3þ˜˜bÅ‘?§Ú)SFÔ¿>B¡ƒáǯdU ¢RRÊõ¤—p S¨‘é8Un‡ªªaÃâK©nB­2©×.L3iBnè 2Ÿq¹8`9Hm)Dˆ6V‚/;Rx×À[ê|Qðþ‰±j¨K Q6°ÃnñŲÔg(Ú#q»Û&îR|0²øØQÅ©aÏ4Å'c&=JÕX6ŸÃj–„ŒZa(K 1sS†Îè!ºJåêB\?Ú Ÿ=D w1EßÇ1KÑÁ¸LS/>nhË1X 2¨ÿPÂ$­v8ÿÒ‰äx¾YODÂѬâßRtpáà [ÓW"®"R abƒ:\iM©骵¼ðº•~_KjÄÓ?$ìÜc+¢‡g%ëîe…f?¦xb| šZÔ®Í6n–2 Ñ€ «4<|½ÊòM™‚/ _–½sÊräìXVͤÙ㣠…hæc±H˜ˆ^Ê'dôaÙ1wr!R%F*E#³†æÚWK¥1ɆJÉÀtTÏ¥ãÇô~ùHE{è*L¸¨$:£:Ë–n«p ga6¥ud†î*RˆNwT:ÊW­]ŠÄu‘Cv§MŠªöaŠ8&+™ÈI^gH¼ ƒcrÕò>!{ˆ#ßû›]rŠ¢ÄL¥t #Ú3N…¨fþÜZÿîÖ>:‹¾߆z³s6¢e†ê&xö˜?BH§Ág"ªÏîÑi䙳~ ç9â*`!)qûXPo‰{òÀ|ÓÒ‚à–Žb‡q[.„M…àK±ÃX›x¥¥6š^ Æ9ykjO¿Ô>¹s7ÞÞôÕ˜º'#êJW¼ ÙŒ¢è¾ó/Õ¾yü´ß*„Âõ™3ßuü‰¥„Âa(y¡ŸŠW©Û>â‡îOôÀÄÝÜ9nürû öïÿ\•4„bG#=þᶨSECô‘H¶ºW\Ä›Þ(L`‹î”™ã¯ßHÎߣ´ão« ±daÏÒ%±mâUÂoÄå¼áö‡xœ‹* 5p…îüз±ºq«0© n¤«=ü uÕ—xa}–Ʋ uðK^ºÚÈÃÛÍõçd¾t0@“Ý)ͼ36s™ìÝõ@ÎWh渺Qi¡DhöÜQ†!sM ¢M°\ïì(Á0¾4íä§N×>…_H3Ì-7Ü:=ª^I†¨UµÓ™9‚Ʀ‹7ó"æWeŸµ Q0 šÍ›u?GQC¦µ£6}ÿFÿçßäŽefd`Hq˜Üã´2{NÍ /™È&FïôuFÜ! K"·@[9V*QDVðìèÄi%+ˆCzCb„6êvº&Sg¿8 7Êm6D@Ç×Ħí`AÓSd Ɇ(yúA7Û­e~ <Sg˜2®pz-°PL2Áq(àé:zÛ~SÌG9ï¾›Jî/o‘—¦î©©7Êœ‘v±tâšÛ. ?ý×ÎᤸŸ™¤8]€¿]ˆàĤÂaƒœ!s! ¤ˆJ§;T£/ŸI(Ìו=Åeÿ˜œä`¹\è§äx®Ð£_Ä9:hÌ^<”Ó°[w1Z${=Ù'Íú\eÂA„m‘ Ó]GY…‹+ho2ž2w|£ârFxЪ5žb}x>NÌ.Êb}=ý‘ÔLvy×)Ö'+…Ö£Äù¦ÏQ #vÓò u¿HqC¤ó6Jk'í]ŒæqàÐ1yµ$gVí>U²¤œw pÌŠ'*õ„=<Õõ(¢_„UÑVqA¿2mœ€ljÂZ=ãڄèëQ¥‚‘ù÷¡xñá„b˜ÓÆþb)Vä´P›bC£hb%Ä­,‡“b{.,E ‘+†Â<øŽî”0Êz†]m«Z|%ì µ¿¯¶SÇGD 9±i‹2¹1žéb„?òàArì)¥âbŠw.ݸ¸ÇYöª,SLj ~Mö:ZàQ0ÒD¨6tN?+˜#\?#&QS¹/§!ì“sbòáÖšp ¹Õ˜PøP˜·ÐØÙJHbßcF—ôÉÅT|K«ÃíauÂR / ßBà&B[TeÂ1¥8–o_¶€"a\í9B‰Yf·ç‹ ƒ`)Jò¼}â¬~&pÚ!uß7;:oÌÿÕð:ž8p„A‡ê„¸õ&M"Ù”ú·r XöAÂÉ…±Í…uÕ=9ê(”ìçsoç~:v–*XÍ›s‹¿Éø(ÅêÙníýÊàY¼š33EÓ\ŒžM®¹´åV÷äœ"Å:9Pû Ê´ Ãõc‚I’à‚J…¸“ü¾Ó´Ü¿!­8 öÜ Óe–Wí“‘§`¢gëP«öÉÌK\ò1\?”q‹ÅI‡[>ºDs¹sô*RˆvsžˆbŽíH·:(c^´£ yd.¦Vˆð bqÇk²Ì¯«ÓÈ( â1CðN'Q'&VŒ¿; w›2ÐQÁ»é¿9¬õÛU¸p΃ÿñ½–Õ:¾ŠI"Y{ï³sWÁ¨|ã^Þñ‚N b›=øôƒ1¶‰z)CŘ†Å³f§Wu S “ûÒƒ#ä\•)¤Z›LüÜ“[S´‹ÇG¦ˆòØçF+o1R†3§5PwØôíº°É¢ˆV™íÙßj£œ àl¹p;Ø_T™ç§3Xq^¸G§cÉŒ°…F?ñZo™JnÉN¼_ª)º_¤R…{¶Á T¸§ŒÃ1^*”8IÐt•qøàLÅ·ú†Å\®#IzÔ¥LïYîÏÂ! ä!Â[U°+„C¤d©'|v}¥3ÕÄ—JdR`Ãxf˜(ì½]‡’#³þöÚµÐ-CÉQc^.-²®”¹ÿ€ ïÞT L`Ù˜2«‡ÂªS.ó¿6skQrb—5­dçz+p c}µÓvÏÅè­ðð‡Á»8NF»wIL-wê³Óˆ.¤¸aFõ< k?;îrHŒOØÆýãGã®âˆˆ-²¸î­î Ø¢¡nŸV ˆ@täñ´‚.D'd—¹‘°t›ZDäçp¥UàX·L$ÞÆf9!;1v ÛfxœMp¶Ó’ØÕ.J„›nʶ+­° çȤwÆù¬æñ-lùÒ&heXOø«cÉPüw'ô2ùäbD®Í ¨Ô~t/H‘Dô<¡Cüíùd´@‰ÇÍT‹Û¶_y•jˆ‡ xªº±QÝŽS,qž<Ý7òô~ÿèPò@FÜ2>ÈR®R g‡‰vÓŒÀ~·[*˜|=2ÿáØ‰WàD’qXÛ-unì ¢Éëì›5:â+½Åã䇺ѱq×I~Ý)vÈUº3œ^Ç=¥VÌñrî2ýæV©N%£èKo¬Û|\Æ’Ù§HÒ2‘io’# <“}šž²¾Q<'‡û'BÈŸ#¨Ý‚(¾ËðЄïí@¡[ðÄØª–˜PÓ^YPÄm",ÅØ°-joX¥‘7$y¬›I¸e2™[kâû—¾M¯Pœß8Wî) 8ÑÜHÁÅv®.6Ú¼ñš¶=±Š°!“ý÷tuî½§FEÅ9ÙHû£ä`ˆK‘¼¤÷³×±’¿—» ö2Ù&¨@‹Œ> Ì”®}ö|T…C†‘Oœ&/~Ök¾»O¯ ìr.C›T·™Äøäc>ìÅ£‹ÿ¸[ñò« ‡º>\iÞfÀ¯7ë§÷êà2NÀ{‰ñ(÷ìÞWV3^½ÂÈi>ü‚129RezÛcÿ)Æ8¦A¶–ˆ›ÓxŠ1Nœª{’$5î.dÄhp¢áÀîÖ÷+ #¤™ïí,ñ®ÃÁ_hEf{ÄënÆå}¥ÿ5(šdàî–&ó¾W‚r††é8® }­¬ˆƒ²(öh#ÍÁ\”®µ èÏó2žªþœüq­ìÙ 9pÎ|¸HZ•¼W F¸Ýý%—b;†á+†(_Êæ¯xÚ]éòjŒ[l¼¼9Éí/Ò‘•¨BØ~;­RÝÒ+P#Rgq£Ch±ÔûW Æ‘DÓHî"Ãt¥Ë“yf 5š_œÞÖã÷é<óN¶~œù±bÝÙõ”–ˆµ/ÓT—p~BKž…‡Ñât'ñSÝCˆCQP.Ç]ôzá§œÎÚ^ñØž«Y^h¼‰Ÿ‡ÒjöçYü™ÈEðvŒ›WqFL£ÃoŒ‘k¥Sí 8ëâ67€ñÔPúLÜ*€ç¶D|j¨Œx>µ( BW<ÛÍåá¶ãŸOý”7ÊÓ“Žïé¶ïýd„ùvv¶mš%j>A'fJ¿îžØõeŒzèCe³;Èð ʈüÊBf÷ü=üW¼”ƒ‡orþ Õð˜1êUbb±‘@›˜bŽ·o*FBVDÿœ‘69N­(VÛ“@Ì”aMå›H¸5 ^ÊQê6¾vÜ;YzÑ™;ÕÀ³ùÕÓ™æôSG܃òŸ£”ú|Ó\ûsÔRxGü-{̲ PîV­ípÖ§dE:oˆhŸ.p—¼‚Œ±Ú¢ÚïÜóç9°ù)[12Gå¾è_»'­lÅÃÄRTáÔ.ûͤ×ðâ‡Ð ýßí2’s SÃØ«•‹|ÂVä0GÛ!Ö´ÕR{b¡L™u'D'”4Üö”if ¾™›t¬²?¥”²EQÇ ¼áh”¯à‹D!í«Í?·l`„ÚŽlÓp@ÇS|¿ŽTMGÒÕ…ÈM€©óE fYMã'à"Ê_†H ,…ò M±7”%ãœãïê¿'Èbgš}áวŠ|:ÄÝF9+²+ýÔ;ãÆ¾Ó¬úúß"M†‰i0SQ¼ØÊJ`ÅôN‡ÇæBUÄBüc.á.»šUæ0Þ9{³C·Ê;ÊSÝ)ÜÈ3óî¢OIŠ;ÙUIK¸þŠVH;ÉÈk`)Rˆ¹å©¢ŒH T6›p›r”±è€|Öèá)¤Ø캀4tÒ]H1RÏ킜+.F;M©tR|Å‘HŸš¤<…°®`úÛ=4™afçX§“yû)ê“É ø1TÚüe{µ" ¿ÿ †ìB4HÞ]*ìkzúÊ3š;©F÷è º˜BI›÷K—ÙxrÛáñ¯àˆÙ`ÙhkÆ“vTŠw ªÜé·¶¾¹ì-u O÷áDZÐvv7A±NžqJÈsô"Ò4„Zz3|v,Ã÷ĉz$™ÚÏÑ&¤Dõ´cR¼2Ç<™§¢µù–Õ®{eŽã#øÀWجX鉋ù¨…ˆdºJ¸Y (=€6™ìéV2a¡Ä'Õ§35MéÖ?U?d5ÿˆ XîB$7àµ$y U÷^-d ¡¨žêü?«Qù3Æèƒt7—›±bÔ[r½Ûy¢‹Qù»S}3¾ÑÍE­¶+ðpÊáï{ÍõÛ¿^¸Ê¯5J84]ôJÿzÉ!_€…§*Õ?e%6dä®;žˆ:Îý¢…d˜nã¦7oJê™ÍSî4j™•*ü.F3D&¹ *Ï7‰;«5d—þKà[ëÖµ¢†ÄFk¼¦n³#a&v x¸r˜J«°?C B/~ˆ·ëŸ€†à_?”"tܺQb"Ú¾ñûðÜpcs"ˆ×qJ£³ç/â¿T>bOp”ÓÓÅ~L1R…›º9¯Kø1镘dÇΙLÛÏ)¢¸ƒ÷DzüŽsŒ 2ØH:« ¢é³IÎ*¨`š6\×¼sñ.åBýìFà,‡£}å Qé3è¯xk>œŠÜ¾Vf"‚„ˆ<§á]ÔJLdœ†)¶>ÓDA Gд*|˜=ÇUç¢ÕC77GT¤XµÙߣgÁbt’YUz\nÁ)~¸h$GŽH-gÚýSüµ¼q1ŠþœË ‘?3*6(6“vUŸrLFÐa›4{ü°§œ|’Á¯ÃÑRû3ÁD‹$†g3wÀÙÒéËb ôˆQÚ"× '¤EKÝŨcþQ±2SšÑ¹ÿöOI‰‡ª1]¹n>¼GSĸ@AcW‰Á·ñ¸ÑBÝzÞqŒv{V"ºÒ±±ü_lºWX‰‘ö³IöuºÏ<£Š¬í™\p:€øm‰â½êKÿn\Àÿ=>г17H©h=È’»g'þ)Ô5þ#t™œ­Û?7ßÈd¼Ù¡ ‰ñ:8nŠ}­IÜh^¬§^ö!í+¬ÞbãQ7o»ê !#­tö$Þ0g1Â9Á~½&^Üø’OÆ„¹[uM„™:"«ˆ8ÓC•xŸ_ú0™ðbkDÆ&|ÈEÜÃ5ÕRådêÒJµ¥†ZßJt.£åñXª „áKRÅ]Pe¡¡Ò@‚ñ–›c^§];rð”úÜ;6FáeøîgaÏwmªÙUì—“)Ê¡H·—«×[™{>häî¬7\O›ÄZÁ„,Æ LsÏàÂúÝ6þ±-uLß$b ª¸€“FË>¨RAæX¾ ËIZŽãÁÝåMÇž™äØ9š÷Ѿ êÆÞoƒ¤ ÙI­@Š‘0¬\¸$î»O•™Žqé]Œ& Ê1¢àh84¡éÔs2/pð{+n­p•WÜ‘;Å7sî5éþ+nÍfdIÿt1j³‡¤¥Át§BS*"Hô=ðO€ç]ˆב«G !šgZ¢½5%+G*ÌÕÇ-uT4™X…á2ðqhùk:øŒ26̦{ä¢)ĈÔ!µ74xJQ4Ê'ÑAƒc_ÏtBJä¾=”Iêé¡ÖKÙs¤?nª9-DÐ /…±ñ±ÿ WØeT‰‰XsG¡øg^òȆî@Ôè¾¥ÛeþÉ……L#~¦³Š ¼f]ãǧïüȸ ?–„û“"Ž7HC-l`~ãì.šÝØuÌW;FAý¹6>ÜÐÊá6dÌ %$kö‹Æ óº‹?Oda¢”dh]ÿÅþ< ˜,N2Òj>ýk2ô¼PǹÈ~Ù;nüyÀ%Rš/UàLÈ R6þã_æ¯;s§Ð82ðCœÙ¡ÿMˆˆý&Mœ%> (5!"8AKCs0d›2éšnÅ"0“µ?_¹¨#;97GØí§l 9<ä}‹tKLçÏüÉOÛ¦R'"ÊØÉu(w o81>Ù òÃ7\6ÙN¤]41…ÄþÍ.dûÛ_œ–h”¶÷Õ”‚H™ÀL=z¹F¾ Oñ?K¹›KïP Û·/h"š5ØN€'.3c‡W±¤C)Éý¥š¥›cLT1$ZÍ©d 'ÀÅhJx?tiљƟÖÅücÌyfO†'îB‰±]p8ìP½Dxò±âœk*ôÅøâò¢ÈD νЭ'ÀF ùÃHÄ_æê¼Œ…FdÈÀÌaÁ.ÓJwàjyUsˆe+n*XÑ_$c‘~u!*Ÿ¿™Œ(Òi£[Æd€üœ³Ã¤'å(Âø!hº~a÷< hÃßF=_^ç[y)l4W_7uRI¿,&Ökn b³þšŸ1 TyýÏ(1vΗ¦¨±Ü¶Í}H¤;mEAnó&D•S£\…×± \اàˆ'åBÞèd(6ŪLį§˜#–Ý6ë®ÃͱtîJa´ýìÊ9ÚZz<6 q–ª ÑÖÒ!ÕÿmŽô‰Ž–œÒ—YN¸ÿ.DÉÈ>á¢o‹Va"¦íÙ… ´š¯n„‰ˆá긓ڷy•‹L‡G_þC çèq–;òA6H¯º•ͽœ/cç~·T«R_vÒŠÁdyh!g³ôÇœhŠòf ãè^Y FÃŽGôŽÛfaíêžtÕH¼ÌJL§ãù13Up/¤£Fš´ZY&md[ÿ‹¦³š“ö§/¦æf#u¿–½ÿ•¡ˆe$³ƒÙv@ŠäY؉Üû=»í.E¡ç#v7’=.F/ R@„æ°öµY†RN?±0!jZd¸ žÈ@+>ޏÓn‡¦tÁGlO¤ ~KèjÁ’n™+ 6-¥«pâæ¯Ñ±ëϧ±®Åhd”Ÿ3åDˆ^îÉH飘nófjfbVÉKÄ.‡[l«ät¦Q¤pueQ_z9¤ðE?)ì—Û*ôúIä^Dfì'ݼbHœ:q·º1rXÆž†%<Žá!8D¡Ë€s$Ûèý쑨Ü\Œ4Ñ-Á×ðc“³‚-Ârfì"‚ázW½ðã¤Âp5y±vp‘—úОNf®wuk¦þ~¡× 1÷WÒ‹¸²RB š}¯»ä çf²‹6¿{IûyBgÈõ -8Õwa£À¥JèST×êÅ´™%8ìE$Zê.쭉ή„àîqÜÿ›¤Di‹ôtqhšrMÚ.´Eú‡sæz bBNIñÀ1™Tо©óÂò5‚:ÿsgü·ÿúÿýÇÿöÿþÿç¿ÿ§ÿö_ÿ÷ÿñýÿçÿýßÿÓÿ_¡ZŒ1syfi-1.0.0.dfsg.orig/demo/Advection-Diffusion/python/demo.py0000644000175000017500000000546511672223006023637 0ustar johannrjohannr# Copyright (C) 2007 Kristian B. Oelgaard # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified by Anders Logg, 2008 # Modified by Johan Hake, 2008 # Modified by Garth N. Wells, 2009 # Modified by Kent-Andre Mardal, 2009 to work with SFC # # First added: 2007-11-14 # Last changed: 2008-01-04 # # This demo solves the time-dependent convection-diffusion equation by # a least-squares stabilized cG(1)cG(1) method. The velocity field used # in the simulation is the output from the Stokes (Taylor-Hood) demo. # The sub domains for the different boundary conditions are computed # by the demo program in src/demo/subdomains. from dolfin import * parameters["form_compiler"]["name"]= "sfc" # Load mesh and subdomains mesh = Mesh("mesh.xml.gz") sub_domains = MeshFunction("uint", mesh, "subdomains.xml.gz"); # Create FunctionSpaces Q = FunctionSpace(mesh, "CG", 1) V = VectorFunctionSpace(mesh, "CG", 2) # Create velocity Function velocity = Constant((-1,0,0.0)) # Initialise source function and previous solution function f = Constant(0.0) u0 = Function(Q) # Parameters T = 5.0 k = 0.1 t = k c = 0.005 c = variable(c) # Test and trial functions v = TestFunction(Q) u = TrialFunction(Q) # Functions u1 = Function(Q) su1 = Function(Q) # Variational problem a = v*u*dx + 0.5*k*(dot(velocity, grad(u))*v*dx + c*dot(grad(v), grad(u))*dx) L = v*u0*dx - 0.5*k*(dot(velocity, grad(u0))*v*dx + c*dot(grad(v), grad(u0))*dx) + k*v*f*dx sL = sensitivity_rhs(a, u0, L, c) # Set up boundary condition g = Constant(1.0) bc = DirichletBC(Q, g, sub_domains, 1) # Assemble matrix A = assemble(a) # Output file out_file = File("temperature.pvd") sout_file = File("stemperature.pvd") # Time-stepping while t < T: # Copy solution from previous interval u0.assign(u1) # Assemble vector and apply boundary conditions b = assemble(L) bc.apply(A, b) # Solve the linear system solve(A, u1.vector(), b) # Plot solution figure(0) plot(u1, title="u") # Save the solution to file out_file << u1 # Compute sensitivity to c u0.assign(u1) sb = assemble(sL) solve(A, su1.vector(), sb) sout_file << su1 figure(1) plot(su1, title="du/dc") # Move to next interval t += k # Hold plot interactive() syfi-1.0.0.dfsg.orig/demo/HyperElasticity1D/0000755000175000017500000000000011674103625020463 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/HyperElasticity1D/cpp/0000755000175000017500000000000011672223006021237 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/HyperElasticity1D/cpp/HyperElasticity1D.ufl0000644000175000017500000000114211672223006025254 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 -- 2009-03-09 # cell = interval element = FiniteElement("CG", cell, 1) v = TestFunction(element) w = TrialFunction(element) u = Coefficient(element) b = Constant(cell) K = Constant(cell) g = Coefficient(element) F = 1 + u.dx(0) F = variable(F) C = F**2 E = (C-1)/2 Q = b*E**2 psi = K*(exp(Q)-1) P = diff(psi, F) # Alternative implementaiton of f, F: #f = psi*dx #F = (inner(P, v.dx(0)) + g*v)*dx # Strain energy + work against body force f = (psi + g*u)*dx # Residual equation F = derivative(f, u, v) # Jacobi J = derivative(F, u, w) forms = [f, F, J] syfi-1.0.0.dfsg.orig/demo/HyperElasticity1D/cpp/Makefile0000644000175000017500000000106711672223006022703 0ustar johannrjohannr FLAGS=--integration-method=quadrature --integration-order=9 --safemode=0 FORM=HyperElasticity1D demo: main.cpp build/generated_code/$(FORM).h cd build && cmake .. && $(MAKE) build/generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -obuild/generated_code $(FORM).ufl generate: clean demo bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl view: run paraview --data=build/u.pvd & #paraview --data=build/usol.pvd & paraview --data=build/e.pvd & run: demo cd build && rm -f *.pvd *.vtu && ./demo debug: demo cd build && gdb ./demo clean: rm -rf build syfi-1.0.0.dfsg.orig/demo/HyperElasticity1D/cpp/main.cpp0000644000175000017500000000720111672223006022667 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-01-01 // Last changed: 2009-04-01 // // This demo program solves a 1D nonlinear hyperelasticity model. #include #include #include #include "generated_code/HyperElasticity1D.h" using namespace dolfin; using namespace HyperElasticity1D; const double eps = DOLFIN_EPS; const double K_VALUE = 1.0; const double B_VALUE = 0.1; class Weight: public Expression { public: double value; void eval(Array& values, const Array& x) const { values[0] = value; } }; class Source: public Expression { public: void eval(Array& values, const Array& x) const { const double dx = x[0] - 0.5; const double b = B_VALUE; const double K = K_VALUE; // Matching solution u = sin(x) - x: values[0] = -K*exp((1.0/4.0)*std::pow( std::pow(cos(x[0]),2.0)-1.0,2.0)*b)*( std::pow(cos(x[0]),2.0)-1.0)*sin(x[0])*b+-2.0*K*exp((1.0/4.0)*std::pow( std::pow(cos(x[0]),2.0)-1.0,2.0)*b)*std::pow(cos(x[0]),2.0)*sin(x[0])*b-K*exp((1.0/4.0)*std::pow( std::pow(cos(x[0]),2.0)-1.0,2.0)*b)*std::pow(cos(x[0]),2.0)*std::pow( std::pow(cos(x[0]),2.0)-1.0,2.0)*sin(x[0])*(b*b); } }; class Solution: public Expression { public: void eval(Array& values, const Array& x) const { values[0] = sin(x[0]) - x[0]; } }; class DirichletBoundary: public SubDomain { bool inside(const Array& x, bool on_boundary) const { return x[0] < DOLFIN_EPS || x[0] > 1.0-DOLFIN_EPS; } }; int main() { // Geometry unsigned n = 20; UnitInterval mesh(n); // Function spaces Form_J::TrialSpace V(mesh); CoefficientSpace_K C(mesh); // Coefficient functions Weight K; K.value = K_VALUE; Weight b; b.value = B_VALUE; Source g; Solution usol; // Solution function Function u(V); // Forms Form_J a(V, V); Form_F L(V); // Attach coefficients to forms a.u = u; a.K = K; a.b = b; L.u = u; L.K = K; L.b = b; L.g = g; // Boundary conditions DirichletBoundary boundary; DirichletBC bc(V, usol, boundary); // Solve variational problem solve(a==L, u, bc); // Compute F at u Vector F; assemble(F, L); //problem.F(F, u.vector()); cout << "Norm of F = " << F.norm("l2") << endl; cout << "Min of F = " << F.min() << endl; cout << "Max of F = " << F.max() << endl; // Compute e_h = usol_h - e Function usol_h(V); usol_h = usol; Function e_h(V); e_h.vector() = usol_h.vector(); e_h.vector() -= u.vector(); cout << "Norm of e_h = " << e_h.vector().norm("l2") << endl; cout << "Min of e_h = " << e_h.vector().min() << endl; cout << "Max of e_h = " << e_h.vector().max() << endl; // Write solutions to file File ufile("u.pvd"); ufile << u; File usolfile("usol.pvd"); usolfile << usol_h; File efile("e.pvd"); efile << e_h; //plot(u); //plot(usol_h); } syfi-1.0.0.dfsg.orig/demo/HyperElasticity1D/cpp/CMakeLists.txt0000644000175000017500000000216311672223006024001 0ustar johannrjohannr# Require CMake 2.8 cmake_minimum_required(VERSION 2.8) project(HyperElasticity1D) # Get DOLFIN configuration data find_package(dolfin) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Add special DOLFIN compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DOLFIN_CXX_FLAGS}") # Code generation is not this robust (yet) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable") # Enable no optimization set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0") # Include directories include_directories( ${DOLFIN_INCLUDE_DIRS} ${DOLFIN_3RD_PARTY_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) # Executable file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/*.cpp) file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/generated_code/*.cpp) add_executable(demo ${SOURCES} ${GENERATED_SOURCES}) # Target libraries target_link_libraries(demo ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) syfi-1.0.0.dfsg.orig/demo/HyperElasticity1D/cpp/manufactured_solution.py0000644000175000017500000000124611672223006026226 0ustar johannrjohannr from swiginac import * # --- Derivation of manufactured analytical solution: # Some useful symbols x = symbol("x[0]") b = symbol("b") K = symbol("K") # Picking an arbitrary solution u = sin(x) - x # Want to compute g! # Compute P(F) F = symbol("F") E = (F**2-1)/2 Q = b*E**2 psi = K*(exp(Q)-1) P = diff(psi, F) # Compute value of F #Fvalue = 1 + u.dx(0) = 1 + cos(x) - 1 Fvalue = 1 + diff(u, x) # Substitute value of F into P repmap = exmap() repmap[F] = Fvalue P = P.subs(repmap) # Compute g using strong form of equation g = diff(P, x) # Print solutions print print "u:" print " value[0] =", u.printc() print print "g:" print " value[0] =", g.printc() print syfi-1.0.0.dfsg.orig/demo/ProjectionMixed/0000755000175000017500000000000011674103625020257 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/ProjectionMixed/cpp/0000755000175000017500000000000011672223006021033 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/ProjectionMixed/cpp/Makefile0000644000175000017500000000111411672223006022470 0ustar johannrjohannr FLAGS=--integration-method=symbolic #FLAGS=--integration-method=quadrature --integration-order=5 FORM=ProjectionMixed demo: main.cpp build/generated_code/$(FORM).h cd build && cmake .. && $(MAKE) build/generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -obuild/generated_code $(FORM).ufl bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl generate: clean demo view: run paraview --data=build/ut.pvd & paraview --data=build/uv.pvd & paraview --data=build/us.pvd & run: demo cd build && rm -f *.pvd *.vtu && ./demo debug: demo cd build && gdb ./demo clean: rm -rf build syfi-1.0.0.dfsg.orig/demo/ProjectionMixed/cpp/main.cpp0000644000175000017500000000454411672223006022472 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-01-01 // Last changed: 2009-04-01 // // This demo program computes a projection of a function // between two mixed finite element spaces. #include #include "generated_code/ProjectionMixed.h" using namespace dolfin; using namespace ProjectionMixed; class FScalar: public Expression { public: void eval(Array& values, const Array& x) const { values[0] = 3.14159*x[0]*x[1]; } }; class FVector: public Expression { public: FVector() : Expression(2) {} void eval(Array& values, const Array& x) const { double dx = x[0] - 0.5; double dy = x[1] - 0.5; values[0] = 2.0 * x[0]; values[1] = 3.0 * x[1]; } }; class FTensor: public Expression { public: FTensor() : Expression(2,2) {} void eval(Array& values, const Array& x) const { double dx = x[0] - 0.5; double dy = x[1] - 0.5; values[0] = 0.1 * x[0] * x[1]; values[1] = 0.2 * x[0] * x[1]; values[2] = 0.3 * x[0] * x[1]; values[3] = 0.4 * x[0] * x[1]; } }; int main(int argc, char ** argv) { UnitSquare mesh(10, 10); BilinearForm::TrialSpace V(mesh); CoefficientSpace_ft FT(mesh); CoefficientSpace_fv FV(mesh); CoefficientSpace_fs FS(mesh); FTensor ft; FVector fv; FScalar fs; Function u(V); BilinearForm a(V, V); LinearForm L(V); L.ft = ft; L.fv = fv; L.fs = fs; u = Function(V); solve(a==L, u); // Get subfunctions Function ut = u[0]; Function uv = u[1]; Function us = u[2]; // Write subfunctions to file File ut_file("ut.pvd"); ut_file << ut; File uv_file("uv.pvd"); uv_file << uv; File us_file("us.pvd"); us_file << us; return 0; } syfi-1.0.0.dfsg.orig/demo/ProjectionMixed/cpp/ProjectionMixed.ufl0000644000175000017500000000110011672223006024636 0ustar johannrjohannr cell = triangle telement = TensorElement("DG", cell, 0) velement = VectorElement("CG", cell, 1) selement = FiniteElement("CG", cell, 2) telement2 = TensorElement("DG", cell, 1) velement2 = VectorElement("CG", cell, 2) selement2 = FiniteElement("CG", cell, 3) mixed_element = MixedElement(telement, velement, selement) vt, vv, vs = TestFunctions(mixed_element) ut, uv, us = TrialFunctions(mixed_element) ft = Coefficient(telement2) fv = Coefficient(velement2) fs = Coefficient(selement2) a = (inner(ut,vt) + dot(uv,vv) + us*vs)*dx L = (inner(ft,vt) + dot(fv,vv) + fs*vs)*dx syfi-1.0.0.dfsg.orig/demo/ProjectionMixed/cpp/CMakeLists.txt0000644000175000017500000000205011672223006023570 0ustar johannrjohannr# Require CMake 2.8 cmake_minimum_required(VERSION 2.8) project(ProjectionMixed) # Get DOLFIN configuration data find_package(dolfin) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Add special DOLFIN compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DOLFIN_CXX_FLAGS}") # Generated code is not this robust (yet) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable -g") # Include directories include_directories( ${DOLFIN_INCLUDE_DIRS} ${DOLFIN_3RD_PARTY_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) # Executable file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/*.cpp) file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/generated_code/*.cpp) add_executable(demo ${SOURCES} ${GENERATED_SOURCES}) # Target libraries target_link_libraries(demo ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) syfi-1.0.0.dfsg.orig/demo/Poisson3D/0000755000175000017500000000000011674103625016775 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/Poisson3D/cpp/0000755000175000017500000000000011672223006017551 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/Poisson3D/cpp/Poisson3D.ufl0000644000175000017500000000077711672223006022115 0ustar johannrjohannr# # -lap u = f # Strong form of equation # (-lap u, v) = (f, v) # Weak form # (Du, Dv) - (n.Du, v)_ = (f, v) # Partial integration # g = dot(n, grad(u)) # Boundary term # (Du, Dv) - (g, v)_ - (f, v) = 0 # Final weak form # cell = tetrahedron element = FiniteElement("CG", cell, 1) u = TrialFunction(element) v = TestFunction(element) f = Coefficient(element) g = Coefficient(element) a = dot(grad(u),grad(v))*dx - f*v*dx - g*v*ds a, L = lhs(a), rhs(a) syfi-1.0.0.dfsg.orig/demo/Poisson3D/cpp/Makefile0000644000175000017500000000115111672223006021207 0ustar johannrjohannr FLAGS=--integration-method=symbolic --debug=0 #FLAGS=--integration-method=quadrature --integration-order=3 --debug=0 --safemode=0 FORM=Poisson3D demo: main.cpp build/generated_code/$(FORM).h cd build && cmake .. && $(MAKE) build/generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -obuild/generated_code $(FORM).ufl generate: clean demo bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl view: run paraview --data=build/u.pvd & #paraview --data=build/usol.pvd & #paraview --data=build/e.pvd & run: demo cd build && rm -f *.pvd *.vtu && ./demo debug: demo cd build && gdb ./demo clean: rm -rf build syfi-1.0.0.dfsg.orig/demo/Poisson3D/cpp/main.cpp0000644000175000017500000001050011672223006021175 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-01-01 // Last changed: 2009-04-01 // // This demo program solves Poissons equation in 3D. #include #include #include "generated_code/Poisson3D.h" using std::sqrt; using std::sin; using std::cos; using std::acos; using namespace dolfin; using namespace Poisson3D; const double a = 1.0; const double b = 1.0; const double k = 1.0; const double Pi = acos(-1); class Source: public Expression { public: void eval(Array& values, const Array& x) const { double dx = x[0] - 0.5; double dy = x[1] - 0.5; double dz = x[2] - 0.5; values[0] = b * 3.0 * (Pi*Pi)*(k*k) * cos(Pi*k*x[0])*cos(x[1]*Pi*k)*cos(Pi*k*x[2]) + a * 3.0 * (Pi*Pi)*(k*k) * sin(x[1]*Pi*k)*sin(Pi*k*x[2])*sin(Pi*k*x[0]); } }; class BoundarySource: public Expression { public: void eval(Array& values, const Array& x) const { double dx = x[0] - 0.5; double dy = x[1] - 0.5; double dz = x[2] - 0.5; values[0] = 0.0; bool gx0 = x[0] < DOLFIN_EPS; bool gx1 = x[0] > 1.0-DOLFIN_EPS; bool gy0 = x[1] < DOLFIN_EPS; bool gy1 = x[1] > 1.0-DOLFIN_EPS; bool gz0 = x[2] < DOLFIN_EPS; bool gz1 = x[2] > 1.0-DOLFIN_EPS; if (gx0) values[0] = -sin(x[1]*Pi*k)*sin(Pi*k*x[2])*Pi*k*a; else if(gx1) values[0] = sin(x[1]*Pi*k)*sin(Pi*k*x[2])*Pi*k*cos(Pi*k)*a-sin(Pi*k)*b*Pi*k*cos(x[1]*Pi*k)*cos(Pi*k*x[2]); else if(gy0) values[0] = -sin(Pi*k*x[2])*Pi*k*sin(Pi*k*x[0])*a; else if(gy1) values[0] = sin(Pi*k*x[2])*Pi*k*cos(Pi*k)*sin(Pi*k*x[0])*a-cos(Pi*k*x[0])*sin(Pi*k)*b*Pi*k*cos(Pi*k*x[2]); else if(gz0) values[0] = -sin(x[1]*Pi*k)*Pi*k*sin(Pi*k*x[0])*a; else if(gz1) values[0] = sin(x[1]*Pi*k)*Pi*k*cos(Pi*k)*sin(Pi*k*x[0])*a-cos(Pi*k*x[0])*sin(Pi*k)*b*Pi*k*cos(x[1]*Pi*k); } }; class Solution: public Expression { public: void eval(Array& values, const Array& x) const { values[0] = b * cos(Pi*k*x[0])*cos(x[1]*Pi*k)*cos(Pi*k*x[2]) + a * sin(x[1]*Pi*k)*sin(Pi*k*x[2])*sin(Pi*k*x[0]); } }; class DirichletBoundary: public SubDomain { bool inside(const Array& x, bool on_boundary) const { return on_boundary and (x[0] < DOLFIN_EPS); } }; int main() { // Geometry info("Mesh"); unsigned n = 30; UnitCube mesh(n, n, n); // Function spaces info("Function spaces"); BilinearForm::TrialSpace V(mesh); // Forms info("Forms"); BilinearForm a(V, V); LinearForm L(V); // Coefficient functions info("Functions"); Source f; BoundarySource g; Solution usol; // Solution function Function u(V); // Attach functions to forms L.f = f; L.g = g; // Setup boundary conditions info("Boundary conditions"); DirichletBoundary boundary; DirichletBC bc(V, usol, boundary); std::vector bcs; bcs.push_back(&bc); u = Function(V); info("Solving"); solve(a == L, u, bcs); // Interpolate exact solution Function usol_h(V); usol_h = usol; Function e(V); e.vector() = u.vector(); e.vector() -= usol_h.vector(); int N = u.vector().size(); cout << endl; cout << "==========================" << endl; cout << "Norm of e = " << e.vector().norm("l2") / sqrt(N) << endl; cout << "Min of e = " << e.vector().min() << endl; cout << "Max of e = " << e.vector().max() << endl; cout << "==========================" << endl; // Write results to file info("Writing to file"); File ufile("u.pvd"); ufile << u; File usolfile("usol.pvd"); usolfile << usol_h; File efile("e.pvd"); efile << e; //plot(u); return 0; } syfi-1.0.0.dfsg.orig/demo/Poisson3D/cpp/CMakeLists.txt0000644000175000017500000000203711672223006022313 0ustar johannrjohannr# Require CMake 2.8 cmake_minimum_required(VERSION 2.8) project(Poisson3D) # Get DOLFIN configuration data find_package(dolfin) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Add special DOLFIN compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DOLFIN_CXX_FLAGS}") # Generated code is not this robust (yet) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable") # Include directories include_directories( ${DOLFIN_INCLUDE_DIRS} ${DOLFIN_3RD_PARTY_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) # Executable file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/*.cpp) file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/generated_code/*.cpp) add_executable(demo ${SOURCES} ${GENERATED_SOURCES}) # Target libraries target_link_libraries(demo ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) syfi-1.0.0.dfsg.orig/demo/Poisson3D/cpp/manufactured_solution.py0000644000175000017500000000254111672223006024537 0ustar johannrjohannr import swiginac from swiginac import * pi = acos(-1) def laplace(f): return sum(diff(diff(u, x[i]), x[i]) for i in range(3)) def subs(f, s, v): repmap = exmap() repmap[s] = v return f.subs(repmap) # --- Derivation of manufactured analytical solution: # Some useful symbols x = matrix(3,1, [symbol("x[%d]" % i) for i in range(3)]) a = symbol("a") b = symbol("b") k = symbol("k") # Testing now: kpix = k*pi*x[0] kpiy = k*pi*x[1] kpiz = k*pi*x[2] u = a * sin(kpix)*sin(kpiy)*sin(kpiz) + b * cos(kpix)*cos(kpiy)*cos(kpiz) # Compute volume source term f = -laplace(u) # Compute boundary source terms gx0 = subs( -diff(u, x[0]), x[0], 0 ) gx1 = subs( +diff(u, x[0]), x[0], 1 ) gy0 = subs( -diff(u, x[1]), x[1], 0 ) gy1 = subs( +diff(u, x[1]), x[1], 1 ) gz0 = subs( -diff(u, x[2]), x[2], 0 ) gz1 = subs( +diff(u, x[2]), x[2], 1 ) # Print solutions def p(x): #x = swiginac.normal(x) #x = x.evalf() return x.printc() print print "u:" print " values[0] = %s;" % p(u) print print "f:" print " values[0] = %s;" % p(f) print print "g:" print " if(gx0) values[0] = %s;" % p(gx0) print " if(gx1) values[0] = %s;" % p(gx1) print " if(gy0) values[0] = %s;" % p(gy0) print " if(gy1) values[0] = %s;" % p(gy1) print " if(gz0) values[0] = %s;" % p(gz0) print " if(gz1) values[0] = %s;" % p(gz1) print syfi-1.0.0.dfsg.orig/demo/LinearElasticity/0000755000175000017500000000000011674103625020421 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/LinearElasticity/python/0000755000175000017500000000000011674103625021742 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/LinearElasticity/python/Makefile0000644000175000017500000000010711672223006023372 0ustar johannrjohannr default: echo "do nothing" clean: rm -r *.pvd *.vtu sfc_jit* syfi-1.0.0.dfsg.orig/demo/LinearElasticity/python/demo.py0000644000175000017500000000554111672223006023237 0ustar johannrjohannr """This demo program solves the equations of static linear elasticity for a gear clamped at two of its ends and twisted 30 degrees.""" # Copyright (C) 2007 Kristian B. Oelgaard # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified by Anders Logg, 2008. # Modified by Kent-Andre Mardal, 2010. # # First added: 2007-11-14 # Last changed: 2009-02-25 from dolfin import * parameters["form_compiler"]["name"]= "sfc" # Load mesh and define function space mesh = Mesh("../../data/gear.xml.gz") V = VectorFunctionSpace(mesh, "CG", 1) # Sub domain for clamp at left end class Left(SubDomain): def inside(self, x, on_boundary): return x[0] < 0.5 and on_boundary # Dirichlet boundary condition for rotation at right end class Rotation(Expression): def value_shape(self): return (3,) def eval(self, values, x): # Center of rotation y0 = 0.5 z0 = 0.219 # Angle of rotation (30 degrees) theta = 0.5236 # New coordinates y = y0 + (x[1] - y0)*cos(theta) - (x[2] - z0)*sin(theta) z = z0 + (x[1] - y0)*sin(theta) + (x[2] - z0)*cos(theta) # Clamp at right end values[0] = 0.0 values[1] = y - x[1] values[2] = z - x[2] # Sub domain for rotation at right end class Right(SubDomain): def inside(self, x, on_boundary): return x[0] > 0.9 and on_boundary # Define variational problem v = TestFunction(V) u = TrialFunction(V) f = Constant((0, 0, 0)) E = 10.0 nu = 0.3 mu = E / (2*(1 + nu)) lmbda = E*nu / ((1 + nu)*(1 - 2*nu)) I = Identity(3) # mu = Constant(cell) # lmbda = Constant(cell) def epsilon(v): return 0.5*(grad(v) + grad(v).T) def sigma(v): return 2*mu*epsilon(v) + lmbda*tr(epsilon(v))*I a = inner(epsilon(v), sigma(u))*dx L = dot(v, f)*dx # Set up boundary condition at left end c = Constant((0, 0, 0)) bcl = DirichletBC(V, c, Left()) # Set up boundary condition at right end r = Rotation() bcr = DirichletBC(V, r, Right()) # Set up boundary conditions bcs = [bcl, bcr] # Set up PDE and solve u = Function(V) solve(a==L, u, bcs) # Save solution to VTK format vtk_file = File("elasticity.pvd") vtk_file << u # Plot solution plot(u, mode="displacement") # Displace mesh and plot displaced mesh mesh.move(u) plot(mesh) # Hold plots interactive() syfi-1.0.0.dfsg.orig/demo/LinearElasticity/cpp/0000755000175000017500000000000011674103625021203 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/LinearElasticity/cpp/LinearElasticity.ufl0000644000175000017500000000240111672223006025147 0ustar johannrjohannr# Copyright (c) 2005 Johan Jansson # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified by Anders Logg 2006-2007 # Modified by Garth N. Wells 2008 # Modified by Martin Alnæs 2009 # # First added: 2005 # Last changed: 2009-06-03 # # The bilinear form for classical linear elasticity (Navier). cell = tetrahedron element = VectorElement("Lagrange", cell, 1) v = TestFunction(element) u = TrialFunction(element) f = Coefficient(element) I = Identity(cell.d) mu = Constant(cell) lmbda = Constant(cell) def epsilon(v): return 0.5*(grad(v) + grad(v).T) def sigma(v): return 2*mu*epsilon(v) + lmbda*tr(epsilon(v))*I a = inner(epsilon(v), sigma(u))*dx L = dot(v, f)*dx syfi-1.0.0.dfsg.orig/demo/LinearElasticity/cpp/Makefile0000644000175000017500000000101411672223006022631 0ustar johannrjohannr FLAGS=--integration-method=symbolic #FLAGS=--integration-method=quadrature --integration-order=3 FORM=LinearElasticity demo: main.cpp build/generated_code/$(FORM).h cd build && cmake .. && $(MAKE) build/generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -obuild/generated_code $(FORM).ufl generate: clean demo bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl view: run paraview --data=build/u.pvd & run: demo cd build && rm -f *.pvd *.vtu && ./demo debug: demo cd build && gdb ./demo clean: rm -rf build syfi-1.0.0.dfsg.orig/demo/LinearElasticity/cpp/main.cpp0000644000175000017500000000700211672223006022624 0ustar johannrjohannr// Copyright (C) 2006-2009 Johan Jansson and Anders Logg // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // Modified by Garth N. Wells 2008 // // First added: 2006-02-07 // Last changed: 2009-02-25 // // This demo program solves the equations of static // linear elasticity for a gear clamped at two of its // ends and twisted 30 degrees. #include #include "generated_code/LinearElasticity.h" using namespace dolfin; int main() { // Dirichlet boundary condition for clamp at left end class Clamp : public Expression { public: Clamp() : Expression(3) {} void eval(Array& values, const Array& x) const { values[0] = 0.0; values[1] = 0.0; values[2] = 0.0; } }; // Sub domain for clamp at left end class Left : public SubDomain { bool inside(const Array& x, bool on_boundary) const { return x[0] < 0.5 && on_boundary; } }; // Dirichlet boundary condition for rotation at right end class Rotation : public Expression { public: Rotation() : Expression(3) {} void eval(Array& values, const Array& x) const { // Center of rotation double y0 = 0.5; double z0 = 0.219; // Angle of rotation (30 degrees) double theta = 0.5236; // New coordinates double y = y0 + (x[1] - y0)*cos(theta) - (x[2] - z0)*sin(theta); double z = z0 + (x[1] - y0)*sin(theta) + (x[2] - z0)*cos(theta); // Clamp at right end values[0] = 0.0; values[1] = y - x[1]; values[2] = z - x[2]; } }; // Sub domain for rotation at right end class Right : public SubDomain { bool inside(const Array& x, bool on_boundary) const { return x[0] > 0.9 && on_boundary; } }; // Read mesh and create function space Mesh mesh("../../../data/gear.xml.gz"); LinearElasticity::BilinearForm::TrialSpace V(mesh); // Create right-hand side Constant f(3, 0.0, 0.0); // Set up boundary condition at left end Clamp c; Left left; DirichletBC bcl(V, c, left); // Set up boundary condition at right end Rotation r; Right right; DirichletBC bcr(V, r, right); // Collect boundary conditions std::vector bcs; bcs.push_back(&bcl); bcs.push_back(&bcr); // Set elasticity parameters double E = 10.0; double nu = 0.3; Constant mu(E / (2*(1 + nu))); Constant lambda(E*nu / ((1 + nu)*(1 - 2*nu))); // Set up PDE (symmetric) LinearElasticity::BilinearForm a(V, V); a.mu = mu; a.lmbda = lambda; LinearElasticity::LinearForm L(V); L.f = f; // Solve PDE (using direct solver) Function u(V); solve(a==L, u, bcs); // Plot solution //plot(u, "displacement"); // Displace mesh and plot displaced mesh //mesh.move(u); //plot(mesh); // Save solution in VTK format File vtk_file("u.pvd"); vtk_file << u; //plot(u); return 0; } syfi-1.0.0.dfsg.orig/demo/LinearElasticity/cpp/CMakeLists.txt0000644000175000017500000000216211672223006023736 0ustar johannrjohannr# Require CMake 2.8 cmake_minimum_required(VERSION 2.8) project(LinearElasticity) # Get DOLFIN configuration data find_package(dolfin) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Add special DOLFIN compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DOLFIN_CXX_FLAGS}") # Code generation is not this robust (yet) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable") # Enable no optimization set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0") # Include directories include_directories( ${DOLFIN_INCLUDE_DIRS} ${DOLFIN_3RD_PARTY_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) # Executable file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/*.cpp) file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/generated_code/*.cpp) add_executable(demo ${SOURCES} ${GENERATED_SOURCES}) # Target libraries target_link_libraries(demo ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) syfi-1.0.0.dfsg.orig/demo/ProjectionTensor/0000755000175000017500000000000011674103625020463 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/ProjectionTensor/python/0000755000175000017500000000000011674103625022004 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/ProjectionTensor/python/Makefile0000644000175000017500000000010711672223006023434 0ustar johannrjohannr default: echo "do nothing" clean: rm -r *.pvd *.vtu sfc_jit* syfi-1.0.0.dfsg.orig/demo/ProjectionTensor/python/demo.py0000644000175000017500000000150011672223006023270 0ustar johannrjohannr from dolfin import * parameters["form_compiler"]["name"] = "sfc" class Source(Expression): def value_shape(self): return (2,2) def eval(self, values, x): values[0] = x[0] values[1] = x[1] values[2] = 2 values[3] = 100 mesh = UnitSquare(12,12) V0 = FunctionSpace(mesh, "DG", 0) V1 = FunctionSpace(mesh, "CG", 1) T1 = TensorFunctionSpace(mesh, "CG", 1) T2 = TensorFunctionSpace(mesh, "CG", 2) u = TrialFunction(T1) v = TestFunction(T1) U = Function(T1) c = Function(V0) c.vector()[:] = 1 f = Source() a = c*inner(u,v)*dx L = inner(f,v)*dx solve(a==L, U) # Store tensor valued function to file file = File('u.pvd') file << U # Plot components of tensor plot(project(U[0,0], V1)) plot(project(U[0,1], V1)) plot(project(U[1,0], V1)) plot(project(U[1,1], V1)) interactive() syfi-1.0.0.dfsg.orig/demo/ProjectionTensor/cpp/0000755000175000017500000000000011674103625021245 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/ProjectionTensor/cpp/Makefile0000644000175000017500000000106211672223006022676 0ustar johannrjohannr FLAGS=--integration-method=symbolic #FLAGS=--integration-method=quadrature --integration-order=5 FORM=ProjectionTensor demo: main.cpp build/generated_code/$(FORM).h cd build && cmake .. && $(MAKE) build/generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -obuild/generated_code $(FORM).ufl bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl view: run cd build && paraview --data=u.pvd & generate: clean generated_code/$(FORM).h echo Done. run: demo cd build && rm -f *.pvd *.vtu && ./demo debug: demo cd build && gdb ./demo clean: rm -rf build syfi-1.0.0.dfsg.orig/demo/ProjectionTensor/cpp/ProjectionTensor.ufl0000644000175000017500000000045311672223006025260 0ustar johannrjohannr polygon = "triangle" element0 = FiniteElement("DG", polygon, 0) element1 = TensorElement("CG", polygon, 1) element2 = TensorElement("CG", polygon, 2) u = TrialFunction(element1) v = TestFunction(element1) c = Coefficient(element0) f = Coefficient(element2) a = c*inner(u,v)*dx L = inner(f,v)*dx syfi-1.0.0.dfsg.orig/demo/ProjectionTensor/cpp/main.cpp0000644000175000017500000000407711672223006022677 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-01-01 // Last changed: 2009-04-01 // // This demo program computes a projection of a tensor finite element space. #include #include "generated_code/ProjectionTensor.h" using namespace dolfin; using namespace ProjectionTensor; class Weight: public Expression { public: void eval(Array& values, const Array& x) const { values[0] = 1.0; } }; class Source: public Expression { public: Source (): Expression(2,2) {} void eval(Array& values, const Array& x) const { double dx = x[0] - 0.5; double dy = x[1] - 0.5; //values[0] = cos(2*DOLFIN_PI*dx*dx); //values[1] = cos(2*DOLFIN_PI*dx*dy); //values[2] = cos(2*DOLFIN_PI*dy*dx); //values[3] = cos(2*DOLFIN_PI*dy*dy); values[0] = x[0] + x[1]; values[1] = x[0] + x[1]; values[2] = x[0] + x[1]; values[3] = x[0] + x[1]; } }; int main(int argc, char ** argv) { UnitSquare mesh(10, 10); BilinearForm::TrialSpace V(mesh); CoefficientSpace_c C(mesh); CoefficientSpace_f F(mesh); Weight c; Source f; Function u(V); BilinearForm a(V, V); LinearForm L(V); a.c = c; L.f = f; u = Function(V); solve(a==L, u); // Interpolate f onto the discrete space V Source f2; Function fi(V); fi.interpolate(f2); File u_file("u.pvd"); u_file << u; File f_file("f.pvd"); f_file << fi; //plot(u); return 0; } syfi-1.0.0.dfsg.orig/demo/ProjectionTensor/cpp/CMakeLists.txt0000644000175000017500000000205111672223006023775 0ustar johannrjohannr# Require CMake 2.8 cmake_minimum_required(VERSION 2.8) project(ProjectionTensor) # Get DOLFIN configuration data find_package(dolfin) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Add special DOLFIN compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DOLFIN_CXX_FLAGS}") # Generated code is not this robust (yet) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable -g") # Include directories include_directories( ${DOLFIN_INCLUDE_DIRS} ${DOLFIN_3RD_PARTY_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) # Executable file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/*.cpp) file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/generated_code/*.cpp) add_executable(demo ${SOURCES} ${GENERATED_SOURCES}) # Target libraries target_link_libraries(demo ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) syfi-1.0.0.dfsg.orig/demo/Elements/0000755000175000017500000000000011674103625016730 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/Elements/cpp/0000755000175000017500000000000011672223006017504 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/demo/Elements/cpp/Makefile0000644000175000017500000000074611672223006021153 0ustar johannrjohannr FLAGS=--integration-method=symbolic --debug=0 #FLAGS=--integration-method=quadrature FORM=Elements demo: main.cpp build/generated_code/$(FORM).h cd build && cmake .. && $(MAKE) build/generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -obuild/generated_code $(FORM).ufl bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl view: run paraview --data=build/s2_2D.pvd & run: demo cd build && rm -f *.pvd *.vtu && ./demo debug: demo cd build && gdb ./demo clean: rm -rf build syfi-1.0.0.dfsg.orig/demo/Elements/cpp/main.cpp0000644000175000017500000001516011672223006021137 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-01-01 // Last changed: 2009-03-01 // // This demo program interpolates functions in lots of different function spaces. #include #include "generated_code/Elements.h" using namespace dolfin; class Scalar2D: public Expression { public: void eval(Array& values, const Array& x) const { values[0] = x[0] + x[1]; } }; class Scalar3D: public Expression { public: void eval(Array& values, const Array& x) const { double dz = x[2] - 0.5; values[0] = (x[0] + x[1]) * dz; } }; class Vector2D: public Expression { public: void eval(Array& values, const Array& x) const { values[0] = 3.0 + 0.1*x[0] + 0.01*x[1]; values[1] = 5.0 + 0.1*x[0] + 0.01*x[1]; } }; class Vector3D: public Expression { public: void eval(Array& values, const Array& x) const { double dx = x[0] - 0.5; double dy = x[1] - 0.5; double dz = x[2] - 0.5; values[0] = 1.0*dx; values[1] = 2.0*dy; values[2] = 3.0*dz; } }; class Tensor2D: public Expression { public: void eval(Array& values, const Array& x) const { double dx = x[0] - 0.5; double dy = x[1] - 0.5; values[0] = 1.0*dx; values[1] = 2.0*dx; values[2] = 3.0*dy; values[3] = 4.0*dy; } }; class Tensor3D: public Expression { public: void eval(Array& values, const Array& x) const { double dx = x[0] - 0.5; double dy = x[1] - 0.5; double dz = x[2] - 0.5; values[0] = 1.0*dx; values[1] = 2.0*dx; values[2] = 3.0*dx; values[3] = 4.0*dy; values[4] = 5.0*dy; values[5] = 6.0*dy; values[6] = 7.0*dz; values[7] = 8.0*dz; values[8] = 9.0*dz; } }; int main(int argc, char ** argv) { // TODO: The interface between DOLFIN and generated code needs to be more dynamic! // --- Meshes UnitSquare mesh2D(10, 10); UnitCube mesh3D(5, 5, 5); // --- FunctionSpaces Elements::CoefficientSpace_s0_2D VS0_2D(mesh2D); Elements::CoefficientSpace_s1_2D VS1_2D(mesh2D); Elements::CoefficientSpace_s2_2D VS2_2D(mesh2D); Elements::CoefficientSpace_s3_2D VS3_2D(mesh2D); //Elements::CoefficientSpace_s0_3D VS0_3D(mesh3D); //Elements::CoefficientSpace_s1_3D VS1_3D(mesh3D); //Elements::CoefficientSpace_s2_3D VS2_3D(mesh3D); //Elements::CoefficientSpace_s3_3D VS3_3D(mesh3D); //Elements::CoefficientSpace_v0_2D VV0_2D(mesh2D); //Elements::CoefficientSpace_v1_2D VV1_2D(mesh2D); //Elements::CoefficientSpace_v2_2D VV2_2D(mesh2D); //Elements::CoefficientSpace_v3_2D VV3_2D(mesh2D); //Elements::CoefficientSpace_v0_3D VV0_3D(mesh3D); //Elements::CoefficientSpace_v1_3D VV1_3D(mesh3D); //Elements::CoefficientSpace_v2_3D VV2_3D(mesh3D); //Elements::CoefficientSpace_v3_3D VV3_3D(mesh3D); //Elements::CoefficientSpace_t0_2D VT0_2D(mesh2D); //Elements::CoefficientSpace_t1_2D VT1_2D(mesh2D); //Elements::CoefficientSpace_t2_2D VT2_2D(mesh2D); //Elements::CoefficientSpace_t3_2D VT3_2D(mesh2D); //Elements::CoefficientSpace_t0_3D VT0_3D(mesh3D); //Elements::CoefficientSpace_t1_3D VT1_3D(mesh3D); //Elements::CoefficientSpace_t2_3D VT2_3D(mesh3D); //Elements::CoefficientSpace_t3_3D VT3_3D(mesh3D); // --- Source functions Scalar2D ss0_2D; Scalar2D ss1_2D; Scalar2D ss2_2D; Scalar2D ss3_2D; //Scalar3D ss0_3D; //Scalar3D ss1_3D; //Scalar3D ss2_3D; //Scalar3D ss3_3D; //Vector2D sv0_2D; //Vector2D sv1_2D; //Vector2D sv2_2D; //Vector2D sv3_2D; //Vector3D sv0_3D; //Vector3D sv1_3D; //Vector3D sv2_3D; //Vector3D sv3_3D; //Tensor2D st0_2D; //Tensor2D st1_2D; //Tensor2D st2_2D; //Tensor2D st3_2D; //Tensor3D st0_3D; //Tensor3D st1_3D; //Tensor3D st2_3D; //Tensor3D st3_3D; // --- Functions to interpolate into Function fs0_2D(VS0_2D); Function fs1_2D(VS1_2D); Function fs2_2D(VS2_2D); Function fs3_2D(VS3_2D); //Function fs0_3D(VS0_3D); //Function fs1_3D(VS1_3D); //Function fs2_3D(VS2_3D); //Function fs3_3D(VS3_3D); //Function fv0_2D(VV0_2D); //Function fv1_2D(VV1_2D); //Function fv2_2D(VV2_2D); //Function fv3_2D(VV3_2D); //Function fv0_3D(VV0_3D); //Function fv1_3D(VV1_3D); //Function fv2_3D(VV2_3D); //Function fv3_3D(VV3_3D); //Function ft0_2D(VT0_2D); //Function ft1_2D(VT1_2D); //Function ft2_2D(VT2_2D); //Function ft3_2D(VT3_2D); //Function ft0_3D(VT0_3D); //Function ft1_3D(VT1_3D); //Function ft2_3D(VT2_3D); //Function ft3_3D(VT3_3D); // --- Interpolate all functions fs0_2D = ss0_2D; fs1_2D = ss1_2D; fs2_2D = ss2_2D; fs3_2D = ss3_2D; /* fs0_3D = ss0_3D; fs1_3D = ss1_3D; fs2_3D = ss2_3D; fs3_3D = ss3_3D; ...... */ // --- Debugging prints /* mesh2D.disp(); VV2_2D.dofmap().disp(); fv2_2D.vector().disp(); */ // --- Write all functions to file File file_s0_2D("s0_2D.pvd"); file_s0_2D << fs0_2D; File file_s1_2D("s1_2D.pvd"); file_s1_2D << fs1_2D; File file_s2_2D("s2_2D.pvd"); file_s2_2D << fs2_2D; File file_s3_2D("s3_2D.pvd"); file_s3_2D << fs3_2D; //File file_s0_3D("s0_3D.pvd"); file_s0_3D << fs0_3D; //File file_s1_3D("s1_3D.pvd"); file_s1_3D << fs1_3D; //File file_s2_3D("s2_3D.pvd"); file_s2_3D << fs2_3D; //File file_s3_3D("s3_3D.pvd"); file_s3_3D << fs3_3D; //File file_v0_2D("v0_2D.pvd"); file_v0_2D << fv0_2D; //File file_v1_2D("v1_2D.pvd"); file_v1_2D << fv1_2D; //File file_v2_2D("v2_2D.pvd"); file_v2_2D << fv2_2D; //File file_v3_2D("v3_2D.pvd"); file_v3_2D << fv3_2D; //File file_v0_3D("v0_3D.pvd"); file_v0_3D << fv0_3D; //File file_v1_3D("v1_3D.pvd"); file_v1_3D << fv1_3D; //File file_v2_3D("v2_3D.pvd"); file_v2_3D << fv2_3D; //File file_v3_3D("v3_3D.pvd"); file_v3_3D << fv3_3D; //File file_t0_2D("t0_2D.pvd"); file_t0_2D << ft0_2D; //File file_t1_2D("t1_2D.pvd"); file_t1_2D << ft1_2D; //File file_t2_2D("t2_2D.pvd"); file_t2_2D << ft2_2D; //File file_t3_2D("t3_2D.pvd"); file_t3_2D << ft3_2D; //File file_t0_3D("t0_3D.pvd"); file_t0_3D << ft0_3D; //File file_t1_3D("t1_3D.pvd"); file_t1_3D << ft1_3D; //File file_t2_3D("t2_3D.pvd"); file_t2_3D << ft2_3D; //File file_t3_3D("t3_3D.pvd"); file_t3_3D << ft3_3D; return 0; } syfi-1.0.0.dfsg.orig/demo/Elements/cpp/Elements.ufl0000644000175000017500000000502311672223006021770 0ustar johannrjohannr # Scalar elements: polygon = "triangle" element0 = FiniteElement("DG", polygon, 0) element1 = FiniteElement("CG", polygon, 1) element2 = FiniteElement("CG", polygon, 2) element3 = FiniteElement("CG", polygon, 3) s0_2D = Coefficient(element0) s1_2D = Coefficient(element1) s2_2D = Coefficient(element2) s3_2D = Coefficient(element3) as2D = s0_2D*s1_2D*s2_2D*s3_2D*dx polygon = "tetrahedron" element0 = FiniteElement("DG", polygon, 0) element1 = FiniteElement("CG", polygon, 1) element2 = FiniteElement("CG", polygon, 2) element3 = FiniteElement("CG", polygon, 3) s0_3D = Coefficient(element0) s1_3D = Coefficient(element1) s2_3D = Coefficient(element2) s3_3D = Coefficient(element3) as3D = s0_3D*s1_3D*s2_3D*s3_3D*dx # Vector elements: polygon = "triangle" element0 = VectorElement("DG", polygon, 0) element1 = VectorElement("CG", polygon, 1) element2 = VectorElement("CG", polygon, 2) element3 = VectorElement("CG", polygon, 3) v0_2D = Coefficient(element0) v1_2D = Coefficient(element1) v2_2D = Coefficient(element2) v3_2D = Coefficient(element3) av2D = inner(v0_2D,v1_2D)*inner(v2_2D,v3_2D)*dx polygon = "tetrahedron" element0 = VectorElement("DG", polygon, 0) element1 = VectorElement("CG", polygon, 1) element2 = VectorElement("CG", polygon, 2) element3 = VectorElement("CG", polygon, 3) v0_3D = Coefficient(element0) v1_3D = Coefficient(element1) v2_3D = Coefficient(element2) v3_3D = Coefficient(element3) av3D = inner(v0_3D,v1_3D)*inner(v2_3D,v3_3D)*dx # Tensor elements: polygon = "triangle" element0 = TensorElement("DG", polygon, 0) element1 = TensorElement("CG", polygon, 1) element2 = TensorElement("CG", polygon, 2) element3 = TensorElement("CG", polygon, 3) t0_2D = Coefficient(element0) t1_2D = Coefficient(element1) t2_2D = Coefficient(element2) t3_2D = Coefficient(element3) at2D = inner(t0_2D,t1_2D)*inner(t2_2D,t3_2D)*dx polygon = "tetrahedron" element0 = TensorElement("DG", polygon, 0) element1 = TensorElement("CG", polygon, 1) element2 = TensorElement("CG", polygon, 2) element3 = TensorElement("CG", polygon, 3) t0_3D = Coefficient(element0) t1_3D = Coefficient(element1) t2_3D = Coefficient(element2) t3_3D = Coefficient(element3) at3D = inner(t0_3D,t1_3D)*inner(t2_3D,t3_3D)*dx # TODO: Enable compilation of elements without forms, need load_ufl_file instead of load_forms! #elements = [element0, element1, element2, element3] # Export forms # Compiling this form file takes too long, disabling some of these for convenience: forms = [as2D, # as3D, # av2D, # av3D, # at2D, # at3D, ] syfi-1.0.0.dfsg.orig/demo/Elements/cpp/CMakeLists.txt0000644000175000017500000000221111672223006022240 0ustar johannrjohannr# Require CMake 2.8 cmake_minimum_required(VERSION 2.8) project(Elements) # Get DOLFIN configuration data find_package(dolfin) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Add special DOLFIN compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DOLFIN_CXX_FLAGS}") # Generated code is not this robust (yet) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable -g") # Generated code is not this robust (yet) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-conversion -w") # Include directories include_directories( ${DOLFIN_INCLUDE_DIRS} ${DOLFIN_3RD_PARTY_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) # Executable file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/*.cpp) file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/generated_code/*.cpp) add_executable(demo ${SOURCES} ${GENERATED_SOURCES}) # Target libraries target_link_libraries(demo ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) syfi-1.0.0.dfsg.orig/scripts/0000755000175000017500000000000011674103625015717 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/scripts/sfc0000755000175000017500000001211711672223006016414 0ustar johannrjohannr#!/usr/bin/env python import sys, os, shutil, glob from optparse import OptionParser, make_option import ufl import ufl.algorithms import sfc as sfc from sfc.common.options import default_parameters ### Define available commandline options parser = OptionParser() parser.add_option('--outputdir', '-o', action="store", default=".", type="str", help="Output directory.") parser.add_option('--prefix', '-p', action="store", default="", type="str", help="Prefix string.") parser.add_option('-O', action="store", default=0, type="int", help="Compiler optimization level.") parser.add_option('--cache', '-c', action="store", default=0, type="int", help="Use JIT compiler cache.") parser.add_option('--integration-method', '-i', action="store", default="quadrature", type="str", help="Integration method: [quadrature | symbolic].") # TODO: more? parser.add_option('--integration-order', '-d', action="store", default=None, type=int, help="Integration order.") parser.add_option('--dolfin-wrappers', '-w', action="store", default=0, type="int", help="Generate DOLFIN C++ wrapper code.") parser.add_option('--benchmark', '-b', action="store", default=0, type="int", help="Run benchmark of element tensor computation.") parser.add_option('--safemode', '-s', action="store", default=0, type="int", help="Use safe mode when generating (quadrature) code, writing complete integrand expressions unmodified.") parser.add_option('--debug', '-g', action="store", default=0, type="int", help="Enable generation of debugging code.") parser.add_option('--timing', '-t', action="store", default=0, type="int", help="Enable timing of code generation process.") parser.add_option('--use_expand_indices2', '-e', action="store", default=0, type="int", help="Use new experimental version of expand_indices.") # TODO: Add more options here! Synchronize with default_parameters() ... ### Parse argv argv = sys.argv[1:] (options, args) = parser.parse_args(args=argv) # Get form filenames from remaining arguments if len(args) == 0: print "Expecting form filename(s)." print parser.print_usage() sys.exit(-1) filenames = args for f in filenames: if not os.path.exists(f): print "No such file as '%s'" % f print parser.print_usage() sys.exit(-1) ### Update sfc options from commandline arguments sfc_options = default_parameters() # Options for this script only: outputdir = options.outputdir cache = options.cache # Options for SFC module behaviour sfc_options.output.enable_timing = options.timing sfc_options.code.integral.enable_debug_code = options.debug sfc_options.compilation.enable_debug_code = options.debug # Options for code generation sfc_options.code.integral.integration_method = options.integration_method sfc_options.code.integral.integration_order = options.integration_order sfc_options.code.integral.use_expand_indices2 = options.use_expand_indices2 sfc_options.code.integral.safemode = options.safemode sfc_options.code.dolfin_wrappers = options.dolfin_wrappers # Options for compilation O = options.O # Options for postprocessing benchmark = options.benchmark if benchmark: import ufc_benchmark # TODO: Add more options here! Synchronize with default_parameters() ... ### Load form file all_files= [] num_forms = 0 for filename in filenames: print "Loading form file '%s'" % filename ufd = ufl.algorithms.load_ufl_file(filename) # FIXME: Loading elements from a .ufl file is not supported here. all_files.append((filename, ufd.forms, ufd.object_names)) num_forms += len(ufd.forms) ### Compile forms try: os.makedirs(outputdir) except: print "Failed to create output directory", outputdir os.chdir(outputdir) print "Compiling %d form files with total %d forms..." % (len(all_files), num_forms) for (filename, forms, objects) in all_files: print "Compiling %d forms from file '%s'" % (len(forms), filename) if options.prefix: sfc_options.code.prefix = options.prefix else: sfc_options.code.prefix = os.path.basename(filename.strip()).replace(".ufl", "") if cache or benchmark: compiled_forms, module, formdatas = sfc.jitf(forms, objects, sfc_options) for compiled_form in compiled_forms: print " Compiled form info:" print " signature: %s" % compiled_form.signature() print " rank %d" % compiled_form.rank() print " %d coefficients." % compiled_form.num_coefficients() print " %d cell integrals" % compiled_form.num_cell_integrals() print " %d exterior facet integrals" % compiled_form.num_exterior_facet_integrals() print " %d interior facet integrals" % compiled_form.num_interior_facet_integrals() if benchmark: ufc_benchmark.bench(compiled_form) # TODO: Probably need more args here else: sfc.generate_code(forms, objects, sfc_options) syfi-1.0.0.dfsg.orig/cmake.local0000755000175000017500000000111711672223006016321 0ustar johannrjohannr#!/bin/sh # Configure for a local install. Build files will be generated in the # directory $toplevel/build and installation will go in the directory # $toplevel/installation. # # This is useful to be able to run demos from within the source tree # without needing to specify an installation directory. CMAKE_EXTRA_ARGS=$@ BUILDDIR=$PWD/build INSTALLDIR=$PWD/local mkdir -p $BUILDDIR cd $BUILDDIR cmake \ -D CMAKE_INSTALL_PREFIX:PATH=$INSTALLDIR \ -D SYFI_ENABLE_TESTING:BOOL=ON \ -D CMAKE_BUILD_TYPE:STRING=Developer \ $CMAKE_EXTRA_ARGS \ .. make -j3 make install syfi-1.0.0.dfsg.orig/COPYING0000644000175000017500000004310311672223006015256 0ustar johannrjohannr GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. syfi-1.0.0.dfsg.orig/AUTHORS0000644000175000017500000000106711672223006015276 0ustar johannrjohannr The main authors of SyFi are: Kent-Andre Mardal Simula Research Laboratory Martin Sandve Alnæs Simula Research Laboratory Additional contributions have come from: Vera Louise Hauge has added support for Legendre polynomials. Ola Skavhaug has helped with cleaner Python interface. Arve Knutsen, Ola Skavhaug and Ã…smund ØdegÃ¥rd have submitted various bugfixes. Johannes Ring has improved the build system. Missing credits? Tell us and we will fix it. Send an email to syfi@lists.launchpad.net. syfi-1.0.0.dfsg.orig/tests/0000755000175000017500000000000011674103626015373 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/pylintlog/0000755000175000017500000000000011674103626017414 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/pylintlog/cleanlogs.py0000755000175000017500000000053411672223006021733 0ustar johannrjohannr#!/usr/bin/env python import os, sys files = sys.argv[1:] def delete(f): print "rm", f os.remove(f) for f in files: lines = [l.strip() for l in open(f).readlines()] if not lines: delete(f) else: for l in lines[1:]: # Skip first line if l: break else: delete(f) syfi-1.0.0.dfsg.orig/tests/pylintlog/runpylint.sh0000755000175000017500000000060211672223006022006 0ustar johannrjohannr#!/bin/bash # Change pylint behaviour # Defaults: FLAGS= # Errors only: FLAGS=-e # Delete old dirs rm -rf output mkdirhier output cd output # Check base system pylint $FLAGS --files-output=y newsfc # Remove incorrect sfc.log errors sed -i s/E.\*No.\*sfc.log.\*// *.txt # Remove empty log files python ../cleanlogs.py *.txt # Print sizes echo output/ lines: cat *.txt | uniq | wc -l syfi-1.0.0.dfsg.orig/tests/pylintlog/import_pychecker.py0000755000175000017500000000064011672223006023331 0ustar johannrjohannr#!/usr/bin/env python "Find potential bugs in SFC by static code analysis." # PyChecker skips previously loaded modules import os, sys, glob, shutil, re, logging, itertools try: import numpy except: pass try: import swiginac except: pass try: import sympy except: pass try: import sympycore except: pass try: import SyFi except: pass import pychecker.checker import newsfc syfi-1.0.0.dfsg.orig/tests/python/0000755000175000017500000000000011674103626016714 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/pydolfin/0000755000175000017500000000000011674103626020540 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/pydolfin/demo.py0000644000175000017500000000364111672223006022033 0ustar johannrjohannr"""This demo program solves Poisson's equation - div grad u(x, y) = f(x, y) on the unit square with source f given by f(x, y) = 500*exp(-((x - 0.5)^2 + (y - 0.5)^2) / 0.02) and boundary conditions given by u(x, y) = 0 for x = 0 or x = 1 """ # Copyright (C) 2007-2008 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified to work with SFC by Kent-Andre Mardal # # First added: 2007-08-16 # Last changed: 2008-12-13 import sys try: from dolfin import * parameters["form_compiler"]["name"] = "sfc" except: print "Dolfin is not found. Demo can not run" sys.exit(2) # Create mesh and define function space mesh = UnitSquare(32, 32) V = FunctionSpace(mesh, "CG", 1) # Define Dirichlet boundary (x = 0 or x = 1) class DirichletBoundary(SubDomain): def inside(self, x, on_boundary): return x[0] < DOLFIN_EPS or x[0] > 1.0 - DOLFIN_EPS # Define boundary condition u0 = Constant(0.0) bc = DirichletBC(V, u0, DirichletBoundary()) # Define variational problem v = TestFunction(V) u = TrialFunction(V) f = Expression("500.0 * exp(-(pow(x[0] - 0.5, 2) + pow(x[1] - 0.5, 2)) / 0.02)") ff = Function(V) ff.interpolate(f) a = dot(grad(v), grad(u))*dx L = v*ff*dx # Compute solution u = Function(V) solve(a == L, u, bc) ok = (u.vector().norm("l2") - 142.420764968) < 10**-4 sys.exit(0 if ok else 1) syfi-1.0.0.dfsg.orig/tests/python/cachetest/0000755000175000017500000000000011674103626020657 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/cachetest/test.py0000644000175000017500000000232311672223006022201 0ustar johannrjohannr from ufl import * from sfc import jit from time import time _t = None def tic(): global _t _t = time() def toc(): global _t t = time() - _t _t = None return t def timeit(input): tic() jit(input) t = toc() return t for take in range(3): print "="*80 print "Take", take avg = 0.0 n = 0 for cell in (interval, triangle, tetrahedron):#, quadrilateral, hexahedron): for degree in range(1, 3): e = FiniteElement("CG", cell, degree) for input in (e, [e]): t = timeit(input) print "Time for %s: %.4f s" % (repr(input), t) avg += t n += 1 input = FiniteElement("CG", cell, degree) + FiniteElement("CG", cell, degree+1) t = timeit(input) print "Time for %s: %.4f s" % (repr(input), t) avg += t n += 1 input = TensorElement("CG", cell, degree) + VectorElement("CG", cell, degree+1) + FiniteElement("CG", cell, degree+2) t = timeit(input) print "Time for %s: %.4f s" % (repr(input), t) avg += t n += 1 avg /= n print "Average for take", take, "is", avg syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/0000755000175000017500000000000011674103626021775 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/verify_tensors/runtests.py0000644000175000017500000000056511672223006024235 0ustar johannrjohannr from dolfin_utils.pjobs import submit jobs = [] names = [] for q in (3, 5, 7): name = "sfc_quad%d" % q cmd = "python test.py " cmd += " -u ufl/functionals/" cmd += " -r reference/" cmd += " -j options/quad%d.py" % q cmd += " -w1 -d0 -e1 -n1 -b1" jobs.append(cmd) names.append(name) submit(jobs, name=names, nodes=3, ppn=8, walltime=5) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/README0000644000175000017500000000027711672223006022654 0ustar johannrjohannr Example usage: ./clean.sh && ./test.py -e1 -n1 -r reference/ -u ufl/ -j options/quad3.py ./clean.sh && ./test.py -e0 -n0 -w1 -r functionals/reference/ -u functionals/ -j options/quad9.py syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/print_references.py0000755000175000017500000000224011672223006025676 0ustar johannrjohannr#!/usr/bin/env python import numpy import os import sys import glob import pickle def read_data(fn): try: f = open(fn) data = pickle.load(f) #data = f.read() f.close() except Exception, what: print "*** An error occured while trying to load reference file: %s" % fn print "*** Maybe you need to generate the reference? Returning None." data = None return data def main(argv): folder, = argv # Data: files = sorted(glob.glob(os.path.join(folder, "*.ref"))) datas = [] print for fn in files: print "Reading ===", fn, "...", data = read_data(fn) datas.append((fn,data)) print "Ok!" print for fn, data in datas: print "===", fn print data print # Timing: files = sorted(glob.glob(os.path.join(folder, "*.timing"))) datas = [] print for fn in files: print "Reading ===", fn, "...", data = read_data(fn) datas.append((fn,data)) print "Ok!" print for fn, data in datas: print "===", fn print data print if __name__ == "__main__": main(sys.argv[1:]) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/FIXME0000644000175000017500000000003511672223006022557 0ustar johannrjohannrufl_demo and ffc_demo failed syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/output/0000755000175000017500000000000011674103626023335 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/verify_tensors/output/README0000644000175000017500000000000011672223006024174 0ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/verify_tensors/hypeltiming.txt0000644000175000017500000000476311672223006025072 0ustar johannrjohannr # 5th order quadrature! #=== hypref/HyperElasticity1D_F.timing F = 3.8200000000000001e-07 #=== hypref/HyperElasticity1D_J.timing J = 4.5699999999999998e-07 #=== hypref/HyperElasticity1D_f.timing f = 3.27e-07 #=== hypref/HyperElasticityFung_a_F.timing F1 = 8.6799999999999996e-05 F2 = 3.0899999999999999e-05 #=== hypref/HyperElasticityFung_a_J.timing J1 = 0.000678 J2 = 0.00035799999999999997 #=== hypref/HyperElasticityFung_a_f.timing f = 5.5600000000000001e-06 #=== hypref/HyperElasticitySVK_a_F.timing F1 = 8.2799999999999993e-05 F2 = 3.0599999999999998e-05 #=== hypref/HyperElasticitySVK_a_J.timing J1 = 0.00062500000000000001 J2 = 0.00035500000000000001 #=== hypref/HyperElasticitySVK_a_f.timing f = 2.729e-06 #=== hypref/Elasticity_a.timing a = 7.3599999999999998e-06 # From paper: #Stiffness matrix: # Tetrahedron #Order 1 2 3 4 #Timescale (in μs) 0.14 0.7 2.6 11.3 #SFC (quadrature) 2.10 8.6 20.4 36.5 #Diffpack 8.20 – – – Seconds: # order 1 SFC = 0.294e-6 Diffpack = 1.148e-6 # order 2 SFC = 6.02e-6 # order 3 SFC = 53.04e-6 hypufl/Elasticity_a.timing 2.5270000000000001e-06 hypufl/HyperElasticity1D_F.timing 2.6679999999999998e-07 hypufl/HyperElasticity1D_J.timing 3.0800000000000001e-07 hypufl/HyperElasticity1D_f.timing 1.097e-07 hypufl/HyperElasticityFung_a_F.timing 2.9580000000000001e-05, 1.3179999999999999e-05 hypufl/HyperElasticityFung_a_J.timing 0.00025040000000000001, 0.00013530000000000001 hypufl/HyperElasticityFung_a_f.timing 4.4299999999999998e-07 hypufl/HyperElasticitySVK_a_F.timing 2.5829999999999998e-05, 1.3030000000000001e-05 hypufl/HyperElasticitySVK_a_J.timing 0.0002287, 0.00013520000000000001 hypufl/HyperElasticitySVK_a_f.timing 2.5320000000000002e-07 hypufl/HyperElasticitySVK_projection_L_J.timing 7.1900000000000002e-07 hypufl/HyperElasticitySVK_projection_L_div_u.timing 3.8500000000000002e-07 hypufl/HyperElasticitySVK_projection_L_psi.timing 8.2799999999999995e-07 hypufl/HyperElasticitySVK_projection_a_J.timing 2.082e-07 hypufl/HyperElasticitySVK_projection_a_div_u.timing 2.0830000000000001e-07 hypufl/HyperElasticitySVK_projection_a_psi.timing 2.0830000000000001e-07 Quadratic elements: === hypufl/HyperElasticityFung_a_F.timing [((0.0001975,), (6.6500000000000004e-05,), ())] === hypufl/HyperElasticityFung_a_J.timing [((0.0040699999999999998,), (0.0016969999999999999,), ())] === hypufl/HyperElasticityFung_a_f.timing [((1.6569999999999999e-05,), (), ())] syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/clean.sh0000755000175000017500000000006611672223006023411 0ustar johannrjohannr#!/bin/bash rm -rf SFCJit_* instant-clean rm -f *.pyc syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/reference/0000755000175000017500000000000011674103626023733 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/verify_tensors/reference/Heat_L.ref0000644000175000017500000000040011672223006025550 0ustar johannrjohannrcnumpy.core.multiarray _reconstruct p0 (cnumpy ndarray p1 (I0 tp2 S'b' p3 tp4 Rp5 (I1 (I3 I1 tp6 cnumpy dtype p7 (S'f8' p8 I0 I1 tp9 Rp10 (I3 S'<' p11 NNNI-1 I-1 I0 tp12 bI00 S'\xec\xcb\xf3\x02\xc6t+@\xde\x12\x16\x06\xc1\xf8-@x\xfb\x9b\x04^>0@' p13 tp14 b.syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/reference/README0000644000175000017500000000000011672223006024572 0ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/verify_tensors/reference/Mass_a.ref0000644000175000017500000000066411672223006025633 0ustar johannrjohannrcnumpy.core.multiarray _reconstruct p0 (cnumpy ndarray p1 (I0 tp2 S'b' p3 tp4 Rp5 (I1 (I3 I3 tp6 cnumpy dtype p7 (S'f8' p8 I0 I1 tp9 Rp10 (I3 S'<' p11 NNNI-1 I-1 I0 tp12 bI00 S'\xfe"\x01\x05\xae\xdd\xe6?\x83D\x01\x05\xae\xdd\xd6?\x83D\x01\x05\xae\xdd\xd6?\x83D\x01\x05\xae\xdd\xd6?\x90\x87\x01\x05\xae\xdd\xe6?\x15\xa9\x01\x05\xae\xdd\xd6?\x83D\x01\x05\xae\xdd\xd6?\x15\xa9\x01\x05\xae\xdd\xd6?\x8f\x87\x01\x05\xae\xdd\xe6?' p13 tp14 b.syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/reference/Heat_a.ref0000644000175000017500000000060711672223006025606 0ustar johannrjohannrcnumpy.core.multiarray _reconstruct p0 (cnumpy ndarray p1 (I0 tp2 S'b' p3 tp4 Rp5 (I1 (I3 I3 tp6 cnumpy dtype p7 (S'f8' p8 I0 I1 tp9 Rp10 (I3 S'<' p11 NNNI-1 I-1 I0 tp12 bI00 S'\x976)\x86\x9bG\x03@\xc6\xb6\n)\x8c\x95\xd7\xbf{\x17\x1d\xfaK\x98\xe3\xbf\xc4\xb6\n)\x8c\x95\xd7\xbf4=\x0c=\xaf\x7f\x0b@\x8aM\xd4jM<\xfa\xbf{\x17\x1d\xfaK\x98\xe3\xbf\x8aM\xd4jM<\xfa\xbf:,r\xb6\x10s\r@' p13 tp14 b.syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/reference/Stiffness_a.ref0000644000175000017500000000063111672223006026666 0ustar johannrjohannrcnumpy.core.multiarray _reconstruct p0 (cnumpy ndarray p1 (I0 tp2 S'b' p3 tp4 Rp5 (I1 (I3 I3 tp6 cnumpy dtype p7 (S'f8' p8 I0 I1 tp9 Rp10 (I3 S'<' p11 NNNI-1 I-1 I0 tp12 bI00 S'\xe9\xd27q\xff\xd3\xda?pa\xd3\x9b8\xf8\xc6\xbfaD\x9cF\xc6\xaf\xce\xbfpa\xd3\x9b8\xf8\xc6\xbf_,61\xef\x8a\xe5?\x07\xa8\x82\x14\xc2\x99\xdf\xbfaD\x9cF\xc6\xaf\xce\xbf\x07\xa8\x82\x14\xc2\x99\xdf\xbf\x1ce\xe8\x9b\xd2x\xe7?' p13 tp14 b.syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/0000755000175000017500000000000011674103626022563 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/0000755000175000017500000000000011674103626024355 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/HyperElasticity1D.ufl0000644000175000017500000000045511672223006030371 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 # cell = interval element = FiniteElement("CG", cell, 2) u = Function(element) b = Constant(cell) K = Constant(cell) E = u.dx(0) + u.dx(0)**2 / 2 E = variable(E) Q = b*E**2 psi = K*(exp(Q)-1) f = psi*dx F = derivative(f, u) J = derivative(-F, u) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/SimpleDiff3.ufl0000644000175000017500000000074211672223006027166 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 # cell = triangle velement = VectorElement("Lagrange", cell, 1) selement = VectorElement("Lagrange", cell, 1) u = Function(velement) du = u[i].dx(i) du = variable(du) p = du**4/2 s = diff(p, du) f = s*dx F = derivative(f, u) J = derivative(F, u) forms = [f, F, J] #from ufl.algorithms import expand_derivatives #a = f #print "------" #print a #print str(expand_derivatives(a)) #print repr(expand_derivatives(a)) #print "------" syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/ConvectionJacobi.ufl0000644000175000017500000000035011672223006030273 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 # element = VectorElement("Lagrange", triangle, 1) u = TrialFunction(element) v = TestFunction(element) w = Function(element) b = dot(dot(u, grad(w)) + dot(w, grad(u)), v) * dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/P5tri.ufl0000644000175000017500000000142411672223006026062 0ustar johannrjohannr# Copyright (C) 2006-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # A fifth degree Lagrange finite element on a triangle element = FiniteElement("Lagrange", "triangle", 5) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/Elasticity.ufl0000644000175000017500000000044211672223006027170 0ustar johannrjohannr# # Author: Anders Logg # Modified by: Martin Sandve Alnes # Date: 2009-01-12 # element = VectorElement("Lagrange", tetrahedron, 1) v = TestFunction(element) u = TrialFunction(element) def epsilon(v): Dv = grad(v) return 0.5*(Dv + Dv.T) a = inner(epsilon(v), epsilon(u))*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/StiffnessAD.ufl0000644000175000017500000000061011672223006027224 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-30 # element = FiniteElement("Lagrange", triangle, 1) w = Function(element) # H1 semi-norm f = inner(grad(w), grad(w))/2*dx # grad(w) : grad(v) b = derivative(f, w) # stiffness matrix, grad(u) : grad(v) a = derivative(b, w) # adjoint, grad(v) : grad(u) astar = adjoint(a) # action of adjoint, grad(v) : grad(w) astaraction = action(astar) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/HyperElasticity.ufl0000644000175000017500000000334511672223006030205 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-12-22 # # Cell and its properties cell = tetrahedron d = cell.d n = cell.n x = cell.x # Elements u_element = VectorElement("CG", cell, 2) p_element = FiniteElement("CG", cell, 1) A_element = TensorElement("CG", cell, 1) # Test and trial functions v = TestFunction(u_element) w = TrialFunction(u_element) # Displacement at current and two previous timesteps u = Function(u_element) up = Function(u_element) upp = Function(u_element) # Time parameters dt = Constant(cell) # Fiber field A = Function(A_element) # External forces T = Function(u_element) p0 = Function(p_element) N = cell.n # Material parameters FIXME rho = Constant(cell) K = Constant(cell) c00 = Constant(cell) c11 = Constant(cell) c22 = Constant(cell) # Deformation gradient I = Identity(d) F = I + grad(u).T F = variable(F) Finv = inv(F) J = det(F) # Left Cauchy-Green deformation tensor B = F*F.T I1_B = tr(B) I2_B = (I1_B**2 - tr(B*B))/2 I3_B = J**2 # Right Cauchy-Green deformation tensor C = F.T*F I1_C = tr(C) I2_C = (I1_C**2 - tr(C*C))/2 I3_C = J**2 # Green strain tensor E = (C-I)/2 # Mapping of strain in fiber directions Ef = A*E*A.T # Strain energy function W(Q(Ef)) Q = c00*Ef[0,0]**2 + c11*Ef[1,1]**2 + c22*Ef[2,2]**2 # FIXME: insert some simple law here W = (K/2)*(exp(Q) - 1) # + p stuff # First Piola-Kirchoff stress tensor P = diff(W, F) # Acceleration term discretized with finite differences k = dt/rho acc = (u - 2*up + upp) # Residual equation # FIXME: Can contain errors, not tested! a_F = (acc, v)*dx \ + k*inner(P, grad(v))*dx \ - k*dot(J*Finv*T, v)*ds(0) \ - k*dot(J*Finv*p0*N, v)*ds(1) # Jacobi matrix of residual equation a_J = derivative(a_F, u, w) # Export forms forms = [a_F, a_J] syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/P5tet.ufl0000644000175000017500000000143211672223006026057 0ustar johannrjohannr# Copyright (C) 2006-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # A fifth degree Lagrange finite element on a tetrahedron element = FiniteElement("Lagrange", "tetrahedron", 5) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/MixedMixedElement.ufl0000644000175000017500000000143011672223006030423 0ustar johannrjohannr# Copyright (C) 2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # A mixed element of mixed elements P3 = FiniteElement("Lagrange", "triangle", 3) element = (P3 + P3) + (P3 + P3) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/README0000644000175000017500000000030111672223006025220 0ustar johannrjohannrTo run these demos from within the source tree without needing to install UFL system-wide, update your paths according to export PATH="../scripts:$PATH" export PYTHONPATH="..:$PYTHONPATH" syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/Source.ufl0000644000175000017500000000024511672223006026317 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 # element = FiniteElement("Lagrange", triangle, 1) v = TestFunction(element) f = Function(element) a = f*v*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/NeumannProblem.ufl0000644000175000017500000000176011672223006030004 0ustar johannrjohannr# Copyright (C) 2006-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # The bilinear form a(v, u) and linear form L(v) for # Poisson's equation with Neumann boundary conditions. element = VectorElement("Lagrange", "triangle", 1) v = TestFunction(element) u = TrialFunction(element) f = Function(element) g = Function(element) a = inner(grad(v), grad(u))*dx L = inner(v, f)*dx + inner(v, g)*ds syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/MixedElasticity.ufl0000644000175000017500000000112711672223006030160 0ustar johannrjohannr# # Author: Marie Rognes # Date: 2008-10-03 # cell = triangle k = 1 S = VectorElement("BDM", cell, k) V = VectorElement("Discontinuous Lagrange", cell, k-1) Q = TensorElement("Discontinuous Lagrange", cell, k-1) #, \ # symmetry = "skew") # FIXME: Implement something like this MX = MixedElement(S, V, Q) (tau, v, eta) = TestFunctions(MX) (sigma, u, gamma) = TrialFunctions(MX) #print sigma.shape() #print u.shape() #print gamma.shape() a2 = (inner(sigma, tau) - tr(sigma)*tr(tau) \ + dot(div(tau), u) - dot(div(sigma), v) \ + inner(tau,gamma) + inner(eta,sigma))*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/ConvectionVector.ufl0000644000175000017500000000027511672223006030354 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 # element = VectorElement("Lagrange", triangle, 1) v = TestFunction(element) w = Function(element) a = dot( dot(w, grad(w)), v ) * dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/Equation.ufl0000644000175000017500000000302311672223006026641 0ustar johannrjohannr# Copyright (C) 2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Specification of a system F(v, u) = 0 and extraction of # the bilinear and linear forms a and L for the left- and # right-hand sides: # # F(v, u) = a(v, u) - L(v) = 0 # # The example below demonstrates the specification of the # linear system for a cG(1)/Crank-Nicholson time step for # the heat equation. # # The below formulation is equivalent to writing # # a = v*u*dx + 0.5*k*dot(grad(v), grad(u))*dx # L = v*u0*dx - 0.5*k*dot(grad(v), grad(u0))*dx # # but instead of manually shuffling terms not including # the unknown u to the right-hand side, all terms may # be listed on one line and left- and right-hand sides # extracted by lhs() and rhs(). element = FiniteElement("Lagrange", "triangle", 1) k = 0.1 v = TestFunction(element) u = TrialFunction(element) u0 = Function(element) F = v*(u - u0)*dx + k*dot(grad(v), grad(0.5*(u0 + u)))*dx a = lhs(F) L = rhs(F) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/NavierStokes.ufl0000644000175000017500000000201611672223006027472 0ustar johannrjohannr# Copyright (C) 2004-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified by Martin Sandve Alnes # # Last changed: 2009-03-02 # # The bilinear form for the nonlinear term in the # Navier-Stokes equations with fixed convective velocity. cell = tetrahedron element = VectorElement("Lagrange", cell, 1) v = TestFunction(element) u = TrialFunction(element) w = Function(element) Du = grad(u) a = dot( dot(w, Du), v )*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/QuadratureElement.ufl0000644000175000017500000000234211672223006030506 0ustar johannrjohannr# Copyright (C) 2008 Kristian B. Oelgaard # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-03-31 # Last changed: 2008-03-31 # # The linearised bilinear form a(u,v) and linear form L(v) for # the nonlinear equation - div (1+u) grad u = f (non-linear Poisson) element = FiniteElement("Lagrange", "triangle", 2) QE = FiniteElement("Quadrature", "triangle", 3) sig = VectorElement("Quadrature", "triangle", 3) v = TestFunction(element) u = TrialFunction(element) u0= Function(element) C = Function(QE) sig0 = Function(sig) f = Function(element) a = v.dx(i)*C*u.dx(i)*dx + v.dx(i)*2*u0*u*u0.dx(i)*dx L = v*f*dx - dot(grad(v), sig0)*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/SubDomain.ufl0000644000175000017500000000165011672223006026741 0ustar johannrjohannr# Copyright (C) 2008 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # This example illustrates how to define a form over a # given subdomain of a mesh, in this case a functional. element = FiniteElement("CG", "tetrahedron", 1) v = TestFunction(element) u = TrialFunction(element) f = Function(element) M = f*dx(2) + f*ds(5) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/ExplicitConvection.ufl0000644000175000017500000000033011672223006030663 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 # element = VectorElement("Lagrange", triangle, 1) u = TrialFunction(element) v = TestFunction(element) w = Function(element) a = dot( dot(w, grad(u)), v ) * dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/NonlinearPoisson.ufl0000644000175000017500000000045411672223006030361 0ustar johannrjohannr# nonlinear_poisson.ufl element = FiniteElement("Lagrange", triangle, 1) v = TestFunction(element) u = TrialFunction(element) u0 = Function(element) f = Function(element) a = (1+u0**2)*dot(grad(v), grad(u))*dx \ + 2*u0*u*dot(grad(v), grad(u0))*dx L = v*f*dx - (1+u0**2)*dot(grad(v), grad(u0))*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/L2norm.ufl0000644000175000017500000000021411672223006026224 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 # element = FiniteElement("Lagrange", triangle, 1) f = Function(element) a = f**2*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/SimpleDiff.ufl0000644000175000017500000000021711672223006027100 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 # element = FiniteElement("Lagrange", triangle, 1) f = Function(element) a = f.dx(0)*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/SimpleDiff5.ufl0000644000175000017500000000076711672223006027177 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 # cell = triangle velement = VectorElement("Lagrange", cell, 1) selement = VectorElement("Lagrange", cell, 1) u = Function(velement) v = TestFunction(velement) Du = grad(u) Du = variable(Du) p = exp(Du[0,0]**2) S = diff(p, Du) F2 = inner(S, grad(v))*dx J2 = derivative(F2, u) a = J2 L = F2 #from ufl.algorithms import expand_derivatives #print "------" #print a #print str(expand_derivatives(a)) #print repr(expand_derivatives(a)) #print "------" syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/ConvectionJacobi2.ufl0000644000175000017500000000035111672223006030356 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 # element = VectorElement("Lagrange", triangle, 1) u = TrialFunction(element) v = TestFunction(element) w = Function(element) b = (u[j]*w[i].dx(j) + w[j]*u[i].dx(j)) * v[i] * dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/Heat.ufl0000644000175000017500000000230611672223006025740 0ustar johannrjohannr# Copyright (C) 2005-2009 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified by Martin Sandve Alnes, 2009. # # The bilinear form a(v, u1) and linear form L(v) for # one backward Euler step with the heat equation. cell = triangle element = FiniteElement("Lagrange", cell, 1) v = TestFunction(element) # Test function u1 = TrialFunction(element) # Value at t_n u0 = Function(element) # Value at t_n-1 c = Function(element) # Heat conductivity f = Function(element) # Heat source k = Constant(cell) # Time step a = v*u1*dx + k*c*dot(grad(v), grad(u1))*dx L = v*u0*dx + k*v*f*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/ProjectionSystem.ufl0000644000175000017500000000023711672223006030401 0ustar johannrjohannr element = FiniteElement("Lagrange", triangle, 1) v = TestFunction(element) u = TrialFunction(element) f = Function(element) a = u*v*dx L = f*v*dx b = a + L syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/PoissonDG.ufl0000644000175000017500000000255311672223006026730 0ustar johannrjohannr# Copyright (C) 2006-2007 Kristiand Oelgaard and Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2006-12-05 # Last changed: 2007-07-15 # # The bilinear form a(v, u) and linear form L(v) for # Poisson's equation in a discontinuous Galerkin (DG) # formulation. element = FiniteElement("Discontinuous Lagrange", triangle, 1) v = TestFunction(element) u = TrialFunction(element) f = Function(element) n = triangle.n h = Constant(triangle) gN = Function(element) alpha = 4.0 gamma = 8.0 a = inner(grad(v), grad(u))*dx \ - inner(avg(grad(v)), jump(u, n))*dS \ - inner(jump(v, n), avg(grad(u)))*dS \ + alpha/h('+')*dot(jump(v, n), jump(u, n))*dS \ - inner(grad(v), u*n)*ds \ - inner(v*n, grad(u))*ds \ + gamma/h*v*u*ds L = v*f*dx + v*gN*ds syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/Stiffness.ufl0000644000175000017500000000027311672223006027024 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 # element = FiniteElement("Lagrange", triangle, 1) u = TrialFunction(element) v = TestFunction(element) a = dot(grad(u), grad(v))*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/SimpleDiff2.ufl0000644000175000017500000000032311672223006027160 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 # cell = triangle element = VectorElement("Lagrange", cell, 1) f = Function(element) I = Identity(cell.d) a = f[i].dx(i)*I[j,j]*dx a = f[i].dx(i) *dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/PoissonSystem.ufl0000644000175000017500000000203211672223006027712 0ustar johannrjohannr# Copyright (C) 2005-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified by Martin Sandve Alnes, 2009. # # Last changed: 2009-03-02 # # The bilinear form a(v, u) and linear form L(v) for # Poisson's equation in system form (vector-valued). cell = triangle element = VectorElement("Lagrange", cell, 1) v = TestFunction(element) u = TrialFunction(element) f = Function(element) a = inner(grad(v), grad(u))*dx L = dot(v, f)*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/TensorWeightedPoisson.ufl0000644000175000017500000000173511672223006031372 0ustar johannrjohannr# Copyright (C) 2005-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # The bilinear form a(v, u) and linear form L(v) for # tensor-weighted Poisson's equation. P1 = FiniteElement("Lagrange", "triangle", 1) P0 = TensorElement("Discontinuous Lagrange", "triangle", 0, shape=(2, 2)) v = TestFunction(P1) u = TrialFunction(P1) C = Function(P0) a = inner(grad(v), C*grad(u))*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/SubDomains.ufl0000644000175000017500000000202611672223006027122 0ustar johannrjohannr# Copyright (C) 2008 Anders Logg and Kristian B. Oelgaard # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # This simple example illustrates how forms can be defined on different sub domains. # It is supported for all three integral types. element = FiniteElement("CG", "tetrahedron", 1) v = TestFunction(element) u = TrialFunction(element) a = v*u*dx(0) + 10.0*v*u*dx(1) + v*u*ds(0) + 2.0*v*u*ds(1) + v('+')*u('+')*dS(0) + 4.3*v('+')*u('+')*dS(1) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/Mass.ufl0000644000175000017500000000161411672223006025763 0ustar johannrjohannr# Copyright (C) 2004-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified by Martin Sandve Alnes, 2009. # # Last changed: 2009-03-02 # # The bilinear form for a mass matrix. element = FiniteElement("Lagrange", triangle, 1) u = TrialFunction(element) v = TestFunction(element) a = v*u*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/SimpleDiff4.ufl0000644000175000017500000000076611672223006027175 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 # cell = triangle velement = VectorElement("Lagrange", cell, 1) selement = VectorElement("Lagrange", cell, 1) u = Function(velement) v = TestFunction(velement) Du = grad(u) Du = variable(Du) p = exp(Du[0,0]**2) f = p*dx F = derivative(f, u, v) J = derivative(F, u) forms = [f, F, J] #from ufl.algorithms import expand_derivatives #a = J #print "------" #print a #print str(expand_derivatives(a)) #print repr(expand_derivatives(a)) #print "------" syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/VectorLaplaceGradCurl.ufl0000644000175000017500000000254611672223006031235 0ustar johannrjohannr# Copyright (C) 2007 Marie Rognes # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # The bilinear form a(v, u) and linear form L(v) for the Hodge Laplace # problem using 0- and 1-forms. Intended to demonstrate use of Nedelec # elements. def HodgeLaplaceGradCurl(element, felement): tau, v = TestFunctions(element) sigma, u = TrialFunctions(element) f = Function(felement) a = ( inner(tau, sigma) - inner(grad(tau), u) +\ inner(v, grad(sigma)) + inner(curl(v), curl(u)) )*dx L = inner(v, f)*dx return a, L cell = tetrahedron order = 1 GRAD = FiniteElement("Lagrange", cell, order) CURL = FiniteElement("N1curl", cell, order-1) VectorLagrange = VectorElement("Lagrange", cell, order+1) a, L = HodgeLaplaceGradCurl(GRAD + CURL, VectorLagrange) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/EnergyNorm.ufl0000644000175000017500000000163011672223006027143 0ustar johannrjohannr# Copyright (C) 2005-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # This example demonstrates how to define a functional, here # the energy norm (squared) for a reaction-diffusion problem. element = FiniteElement("Lagrange", "tetrahedron", 1) v = Function(element) a = (v*v + dot(grad(v), grad(v)))*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/PowAD.ufl0000644000175000017500000000032711672223006026032 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 # element = FiniteElement("Lagrange", triangle, 1) v = TestFunction(element) u = TrialFunction(element) w = Function(element) a = w**5*v*dx b = derivative(a, w) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/MixedPoisson2.ufl0000644000175000017500000000055511672223006027566 0ustar johannrjohannr# # Author: Marie Rognes # Modified by: Martin Sandve Alnes # Date: 2009-02-12 # cell = tetrahedron RT = FiniteElement("Raviart-Thomas", cell, 1) DG = FiniteElement("DG", cell, 0) MX = RT + DG (u, p) = TrialFunctions(MX) (v, q) = TestFunctions(MX) n = cell.n a0 = (dot(u, v) + div(u)*q + div(v)*p)*dx a1 = (dot(u, v) + div(u)*q + div(v)*p)*dx - p*dot(v, n)*ds syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/Constant.ufl0000644000175000017500000000175511672223006026657 0ustar johannrjohannr# Copyright (C) 2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified by Martin Sandve Alnes, 2009. # # Test form for scalar and vector constants. cell = triangle element = FiniteElement("Lagrange", cell, 1) v = TestFunction(element) u = TrialFunction(element) f = Function(element) c = Constant(cell) d = VectorConstant(cell) a = c*dot(grad(v), grad(u))*dx L = inner(d, grad(v))*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/Stokes.ufl0000644000175000017500000000216111672223006026326 0ustar johannrjohannr# Copyright (C) 2005-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified by Martin Sandve Alnes, 2009. # # Last changed: 2009-03-02 # # The bilinear form a(v, u) and Linear form L(v) for the Stokes # equations using a mixed formulation (Taylor-Hood elements). cell = triangle P2 = VectorElement("Lagrange", cell, 2) P1 = FiniteElement("Lagrange", cell, 1) TH = P2 + P1 (v, q) = TestFunctions(TH) (u, p) = TrialFunctions(TH) f = Function(P2) a = (inner(grad(v), grad(u)) - div(v)*p + q*div(u))*dx L = dot(v, f)*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/FunctionOperators.ufl0000644000175000017500000000165711672223006030553 0ustar johannrjohannr# Copyright (C) 2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Test form for operators on Functions. element = FiniteElement("Lagrange", "triangle", 1) v = TestFunction(element) u = TrialFunction(element) f = Function(element) g = Function(element) a = sqrt(1/abs(1/f))*sqrt(g)*dot(grad(v), grad(u))*dx + v*u*sqrt(f*g)*g*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/HornSchunck.ufl0000644000175000017500000000121511672223006027302 0ustar johannrjohannr# # Implemented by imitation of # http://code.google.com/p/debiosee/wiki/DemosOptiocFlowHornSchunck # but not tested so this could contain errors! # # Finite element spaces for scalar and vector fields cell = triangle S = FiniteElement("CG", cell, 1) V = VectorElement("CG", cell, 1) # Optical flow function u = Function(V) # Previous image brightness I0 = Function(S) # Current image brightness I1 = Function(S) # Regularization parameter lamda = Constant(cell) # Functional to minimize M = (dot(u, grad(I1)) + (I1-I0))**2 * dx\ + lamda*inner(grad(u), grad(u)) * dx # Derived linear system L = derivative(M, u) a = derivative(L, u) L = -L syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/H1norm.ufl0000644000175000017500000000025111672223006026220 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 # element = FiniteElement("Lagrange", triangle, 1) f = Function(element) a = ( f*f + dot(grad(f), grad(f)) ) * dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/TupleNotation.ufl0000644000175000017500000000024311672223006027662 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 # element = FiniteElement("Lagrange", triangle, 1) f = Function(element) a = f**2*dx + (grad(f), grad(f))*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/Poisson.ufl0000644000175000017500000000206611672223006026514 0ustar johannrjohannr# Copyright (C) 2004-2008 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified by Martin Sandve Alnes, 2009. # # Last changed: 2009-03-02 # # The bilinear form a(v, u) and linear form L(v) for Poisson's equation. element = FiniteElement("Lagrange", triangle, 1) u = TrialFunction(element) v = TestFunction(element) f = Function(element) dx0_1 = dx(0, {"quadrature_order": 1}) dx0_2 = dx(0, {"quadrature_order": 2}) a = dot(grad(v), grad(u))*dx0_1 L = v*f*dx0_2 syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/MassAD.ufl0000644000175000017500000000034011672223006026163 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-28 # element = FiniteElement("Lagrange", triangle, 1) u = Function(element) # L2 norm f = u**2/2*dx # source vector b = derivative(f, u) # mass matrix a = derivative(b, u) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ufl_demo/MixedPoisson.ufl0000644000175000017500000000230311672223006027475 0ustar johannrjohannr# Copyright (C) 2006-2009 Anders Logg and Marie Rognes # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified by Martin Sandve Alnes, 2009. # # Last changed: 2009-01-12 # # The bilinear form a(v, u) and linear form L(v) for # a mixed formulation of Poisson's equation with BDM # (Brezzi-Douglas-Marini) elements. cell = triangle BDM1 = FiniteElement("Brezzi-Douglas-Marini", cell, 1) DG0 = FiniteElement("Discontinuous Lagrange", cell, 0) element = BDM1 + DG0 (tau, w) = TestFunctions(element) (sigma, u) = TrialFunctions(element) f = Function(DG0) a = (dot(tau, sigma) - div(tau)*u + w*div(sigma))*dx L = w*f*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/hyperelasticity/0000755000175000017500000000000011674103626026005 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/hyperelasticity/HyperElasticity1D.ufl0000644000175000017500000000116511672223006032020 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 -- 2009-03-09 # cell = interval element = FiniteElement("CG", cell, 1) v = TestFunction(element) w = TrialFunction(element) u = Function(element) b = Constant(cell) K = Constant(cell) g = Function(element) F = 1 + u.dx(0) F = variable(F) C = F**2 #J = sqrt(F**2) E = (C-1)/2 Q = b*E**2 psi = K*(exp(Q)-1) # + ln(J)*(J-1) # TODO: Use some simpler law for this demo P = diff(psi, F) f = psi*dx #f = (psi - g*u)*dx F = (inner(P, v.dx(0)) + g*v)*dx #F = derivative(f, u, v) J = derivative(F, u, w) #F = -F # Newton steps require negated rhs (not in dolfin!) forms = [f, F, J] syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/hyperelasticity/HyperElasticityFung.ufl0000644000175000017500000000433111672223006032451 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-12-22 -- 2009-03-12 # # Cell and its properties cell = tetrahedron d = cell.d n = cell.n x = cell.x # Elements u_element = VectorElement("CG", cell, 1) p_element = FiniteElement("CG", cell, 1) A_element = TensorElement("DG", cell, 0) # Test and trial functions v = TestFunction(u_element) w = TrialFunction(u_element) # Displacement at current and two previous timesteps u = Function(u_element) up = Function(u_element) upp = Function(u_element) # Time parameters dt = Constant(cell) # Fiber field A = Function(A_element) # External forces g = Function(u_element) sigma_0 = Function(p_element) # Material parameters rho = Constant(cell) K = Constant(cell) C_compr = Constant(cell) bff = Constant(cell) bfx = Constant(cell) bxx = Constant(cell) # Deformation gradient I = Identity(d) F = I + grad(u).T F = variable(F) Finv = inv(F) J = det(F) # Left Cauchy-Green deformation tensor #B = F*F.T #I1_B = tr(B) #I2_B = (I1_B**2 - tr(B*B))/2 #I3_B = J**2 # Right Cauchy-Green deformation tensor C = F.T*F #I1_C = tr(C) #I2_C = (I1_C**2 - tr(C*C))/2 #I3_C = J**2 # Green strain tensor E = (C-I)/2 # Mapping of strain in fiber directions Ef = A*E*A.T # Strain energy function psi(Q(Ef)) Q = bff * Ef[0,0]**2 + \ bxx * (Ef[1,1]**2 + Ef[2,2]**2 + Ef[1,2]**2 + Ef[2,1]**2) + \ bfx * (Ef[0,1]**2 + Ef[0,2]**2 + Ef[1,0]**2 + Ef[2,0]**2) psi = (K/2)*(exp(Q) - 1) + C_compr * (J*ln(J) - J + 1) # First Piola-Kirchoff stress tensor P = diff(psi, F) # Alternative: #S = 2*diff(psi, C) #P = F*S # Active forces TODO: Define nonzero active forces S_a = 0*I P_a = F*S_a # Acceleration term discretized with finite differences a = u - 2*up + upp # Time stepping parameter to multiply other terms with k = dt**2 / rho # Energy functional (without acceleration term and external forces) a_f = psi*dx # Residual equation # FIXME: Correct signs here? a_F = (dot(a, v) + k*inner(P + P_a, grad(v)) - dot(g, v))*dx - k*dot(J*sigma_0*Finv.T*n, v)*ds # Jacobi matrix of residual equation a_J = derivative(a_F, u, w) # Newton solver solves J du = -F, so we'll flip the sign here FIXME: What is right? #a_F = -a_F # TODO: Add some forms for computing stress and strain from a solution forms = [a_f, a_F, a_J] syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/hyperelasticity/HyperElasticitySVK.ufl0000644000175000017500000000504411672223006032217 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-12-22 -- 2009-03-16 # # Cell and its properties cell = tetrahedron d = cell.d n = cell.n x = cell.x # Elements u_element = VectorElement("CG", cell, 1) p_element = FiniteElement("CG", cell, 1) # Test and trial functions v = TestFunction(u_element) w = TrialFunction(u_element) # Displacement at current and two previous timesteps u = Function(u_element) up = Function(u_element) upp = Function(u_element) # Time parameters dt = Constant(cell) # External forces g = Function(u_element) sigma_0 = Function(p_element) # Material parameters rho = Constant(cell) lamda = Constant(cell) mu = Constant(cell) # Deformation gradient I = Identity(d) F = I + grad(u).T Finv = inv(F) J = det(F) # Right Cauchy-Green deformation tensor C = F.T*F # Green strain tensor E = (C-I)/2 E = variable(E) # Strain energy function psi(Q(Ef)), Saint Vernant-Kirchoff law psi = lamda/2 * tr(E)**2 + mu * inner(E, E) # First Piola-Kirchoff stress tensor P = F*diff(psi, E) # Acceleration term discretized with finite differences a = u - 2*up + upp # Time stepping parameter to multiply other terms with k = dt**2 / rho # Energy functional (without acceleration term and external forces) a_f = psi*dx # Residual equation # FIXME: Correct signs here? a_F = (dot(a, v) + k*inner(P, grad(v)) - dot(g, v))*dx - k*dot(J*sigma_0*Finv.T*n, v)*ds # Jacobi matrix of residual equation a_J = derivative(a_F, u, w) # Newton solver in DOLFIN solves J (-du) = F, so we don't need to flip the sign of F. However, this isn't a good thing because passing a linear system to the Newton solver will lead to incorrect answer. #a_F = -a_F # Some forms for computing stress and strain from a solution def projection_system(value, degree=1): if value.rank() == 0: element = FiniteElement("CG", cell, degree) elif value.rank() == 1: element = VectorElement("CG", cell, degree) elif value.rank() == 2: element = TensorElement("CG", cell, degree) test = TestFunction(element) trial = TrialFunction(element) assert value.shape() == test.shape() assert value.shape() == trial.shape() a = inner(trial - value, test) * dx a, L = lhs(a), rhs(a) return a, L projection_a_div_u, projection_L_div_u = projection_system(div(u)) projection_a_J, projection_L_J = projection_system(J) projection_a_psi, projection_L_psi = projection_system(psi) # Export forms forms = [a_f, a_F, a_J, projection_a_div_u, projection_L_div_u, projection_a_J, projection_L_J, projection_a_psi, projection_L_psi] syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/README0000644000175000017500000000000011672223006023422 0ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/0000755000175000017500000000000011674103626024325 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/P5tri.ufl0000644000175000017500000000150011672223006026025 0ustar johannrjohannr# Copyright (C) 2006-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # A fifth degree Lagrange finite element on a triangle # # Compile this form with FFC: ffc P5tri.ufl element = FiniteElement("Lagrange", triangle, 5) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/Elasticity.ufl0000644000175000017500000000203311672223006027136 0ustar johannrjohannr# Copyright (C) 2005 Johan Jansson # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified by Anders Logg, 2005-2007. # # The bilinear form e(v) : e(u) for linear # elasticity with e(v) = 1/2 (grad(v) + grad(v)^T) # # Compile this form with FFC: ffc Elasticity.ufl element = VectorElement("Lagrange", tetrahedron, 1) v = TestFunction(element) u = TrialFunction(element) def eps(v): return grad(v) + (grad(v)).T a = 0.25*inner(eps(v), eps(u))*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/P5tet.ufl0000644000175000017500000000150611672223006026031 0ustar johannrjohannr# Copyright (C) 2006-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # A fifth degree Lagrange finite element on a tetrahedron # # Compile this form with FFC: ffc P5tet.ufl element = FiniteElement("Lagrange", tetrahedron, 5) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/MixedMixedElement.ufl0000644000175000017500000000152011672223006030373 0ustar johannrjohannr# Copyright (C) 2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # A mixed element of mixed elements # # Compile this form with FFC: ffc MixedMixedElement.ufl P3 = FiniteElement("Lagrange", triangle, 3) element = (P3 + P3) + (P3 + P3) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/NeumannProblem.ufl0000644000175000017500000000204411672223006027750 0ustar johannrjohannr# Copyright (C) 2006-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # The bilinear form a(v, u) and linear form L(v) for # Poisson's equation with Neumann boundary conditions. # # Compile this form with FFC: ffc NeumannProblem.ufl element = VectorElement("Lagrange", triangle, 1) v = TestFunction(element) u = TrialFunction(element) f = Function(element) g = Function(element) a = inner(grad(v), grad(u))*dx L = inner(v, f)*dx + inner(v, g)*ds syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/Equation.ufl0000644000175000017500000000325011672223006026613 0ustar johannrjohannr# Copyright (C) 2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Specification of a system F(v, u) = 0 and extraction of # the bilinear and linear forms a and L for the left- and # right-hand sides: # # F(v, u) = a(v, u) - L(v) = 0 # # The example below demonstrates the specification of the # linear system for a cG(1)/Crank-Nicholson time step for # the heat equation. # # The below formulation is equivalent to writing # # a = v*u*dx + 0.5*k*inner(grad(v), grad(u))*dx # L = v*u0*dx - 0.5*k*inner(grad(v), grad(u0))*dx # # but instead of manually shuffling terms not including # the unknown u to the right-hand side, all terms may # be listed on one line and left- and right-hand sides # extracted by lhs() and rhs(). # # Compile this form with FFC: ffc Equation.ufl element = FiniteElement("Lagrange", triangle, 1) k = 0.1 v = TestFunction(element) u = TrialFunction(element) u0 = Function(element) F = v*(u - u0)*dx + k*inner(grad(v), grad(0.5*(u0 + u)))*dx a = lhs(F) L = rhs(F) #a = v*u*dx + 0.5*k*inner(grad(v), grad(u))*dx #L = v*u0*dx - 0.5*k*inner(grad(v), grad(u0))*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/NavierStokes.ufl0000644000175000017500000000175211672223006027450 0ustar johannrjohannr# Copyright (C) 2004-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # The bilinear form for the nonlinear term in the # Navier-Stokes equations with fixed convective velocity. # # Compile this form with FFC: ffc NavierStokes.ufl element = VectorElement("Lagrange", tetrahedron, 1) v = TestFunction(element) u = TrialFunction(element) w = Function(element) a = v[i]*w[j]*Dx(u[i], j)*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/QuadratureElement.ufl0000644000175000017500000000242711672223006030462 0ustar johannrjohannr# Copyright (C) 2008 Kristian B. Oelgaard # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-03-31 # Last changed: 2008-03-31 # # The linearised bilinear form a(u,v) and linear form L(v) for # the nonlinear equation - div (1+u) grad u = f (non-linear Poisson) # # Compile this form with FFC: ffc QuadratureElement.ufl element = FiniteElement("Lagrange", triangle, 2) QE = FiniteElement("Quadrature", triangle, 3) sig = VectorElement("Quadrature", triangle, 3) v = TestFunction(element) u = TrialFunction(element) u0= Function(element) C = Function(QE) sig0 = Function(sig) f = Function(element) a = v.dx(i)*C*u.dx(i)*dx + v.dx(i)*2*u0*u*u0.dx(i)*dx L = v*f*dx - inner(grad(v), sig0)*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/SubDomain.ufl0000644000175000017500000000172711672223006026716 0ustar johannrjohannr# Copyright (C) 2008 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # This example illustrates how to define a form over a # given subdomain of a mesh, in this case a functional. # # Compile this form with FFC: ffc SubDomain.ufl element = FiniteElement("CG", tetrahedron, 1) v = TestFunction(element) u = TrialFunction(element) f = Function(element) M = f*dx(2) + f*ds(5) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/Heat.ufl0000644000175000017500000000227311672223006025713 0ustar johannrjohannr# Copyright (C) 2005-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # The bilinear form a(v, u1) and linear form L(v) for # one backward Euler step with the heat equation. # # Compile this form with FFC: ffc Heat.ufl element = FiniteElement("Lagrange", triangle, 1) v = TestFunction(element) # Test function u1 = TrialFunction(element) # Value at t_n u0 = Function(element) # Value at t_n-1 c = Function(element) # Heat conductivity f = Function(element) # Heat source k = Constant(triangle) # Time step a = v*u1*dx + k*c*inner(grad(v), grad(u1))*dx L = v*u0*dx + k*v*f*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/PoissonDG.ufl0000644000175000017500000000311011672223006026666 0ustar johannrjohannr# Copyright (C) 2006-2007 Kristiand Oelgaard and Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2006-12-05 # Last changed: 2007-07-15 # # The bilinear form a(v, u) and linear form L(v) for # Poisson's equation in a discontinuous Galerkin (DG) # formulation. # # Compile this form with FFC: ffc PoissonDG.ufl # Elements element = FiniteElement("Discontinuous Lagrange", triangle, 1) # Test and trial functions v = TestFunction(element) u = TrialFunction(element) f = Function(element) # Normal component, mesh size and right-hand side n = VectorConstant(triangle) h = Constant(triangle) # Neumann boundary conditions gN = Function(element) # Parameters alpha = 4.0 gamma = 8.0 # Bilinear form a = inner(grad(v), grad(u))*dx \ - inner(avg(grad(v)), jump(u, n))*dS \ - inner(jump(v, n), avg(grad(u)))*dS \ + alpha/h('+')*inner(jump(v, n), jump(u, n))*dS \ - inner(grad(v), u*n)*ds \ - inner(v*n, grad(u))*ds \ + gamma/h*v*u*ds # Linear form L = v*f*dx + v*gN*ds syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/PoissonSystem.ufl0000644000175000017500000000177211672223006027674 0ustar johannrjohannr# Copyright (C) 2005-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # The bilinear form a(v, u) and linear form L(v) for # Poisson's equation in system form (vector-valued). # # Compile this form with FFC: ffc PoissonSystem.ufl element = VectorElement("Lagrange", triangle, 1) v = TestFunction(element) u = TrialFunction(element) f = Function(element) a = inner(grad(v), grad(u))*dx L = inner(v, f)*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/Optimization.ufl0000644000175000017500000000172511672223006027521 0ustar johannrjohannr# Copyright (C) 2004-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # The bilinear form a(v, u) and linear form L(v) for # Poisson's equation. # # Compile this form with FFC: ffc -O Optimization.ufl element = FiniteElement("Lagrange", triangle, 3) v = TestFunction(element) u = TrialFunction(element) f = Function(element) a = inner(grad(v), grad(u))*dx L = v*f*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/TensorWeightedPoisson.ufl0000644000175000017500000000205611672223006031337 0ustar johannrjohannr# Copyright (C) 2005-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # The bilinear form a(v, u) and linear form L(v) for # tensor-weighted Poisson's equation. # # Compile this form with FFC: ffc TensorWeightedPoisson.ufl P1 = FiniteElement("Lagrange", triangle, 1) P0 = TensorElement("Discontinuous Lagrange", triangle, 0, (2, 2)) v = TestFunction(P1) u = TrialFunction(P1) f = Function(P1) C = Function(P0) a = inner(grad(v), C*grad(u))*dx #L = v*f*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/SubDomains.ufl0000644000175000017500000000210611672223006027071 0ustar johannrjohannr# Copyright (C) 2008 Anders Logg and Kristian B. Oelgaard # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # This simple example illustrates how forms can be defined on different sub domains. # It is supported for all three integral types. # # Compile this form with FFC: ffc SubDomains.ufl element = FiniteElement("CG", tetrahedron, 1) v = TestFunction(element) u = TrialFunction(element) a = v*u*dx(0) + 10.0*v*u*dx(1) + v*u*ds(0) + 2.0*v*u*ds(1) + v('+')*u('+')*dS(0) + 4.3*v('+')*u('+')*dS(1) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/Mass.ufl0000644000175000017500000000157011672223006025734 0ustar johannrjohannr# Copyright (C) 2004-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # The bilinear form for a mass matrix. # # Compile this form with FFC: ffc Mass.ufl element = FiniteElement("Lagrange", tetrahedron, 3) v = TestFunction(element) u = TrialFunction(element) a = v*u*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/VectorLaplaceGradCurl.ufl0000644000175000017500000000335011672223006031177 0ustar johannrjohannr# Copyright (C) 2007 Marie Rognes # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # The bilinear form a(v, u) and linear form L(v) for the Hodge Laplace # problem using 0- and 1-forms. Intended to demonstrate use of N1curl # elements. # Compile this form with FFC: ffc VectorLaplaceGradCurl.ufl def HodgeLaplaceGradCurl(element, felement): """This is a formulation of the Hodge Laplacian using k=1 and n=3, i.e 0-forms and 1-forms in 3D. Appropriate elements are GRAD \times CURL = Lagrange_r \ times Ned^1_{r-1} Lagrange_{r+1} \ times Ned^2_{r} Only the 1st kind of N1curl elements are implemented in FIAT. """ (tau, v) = TestFunctions(element) (sigma, u) = TrialFunctions(element) f = Function(felement) a = (inner(tau, sigma) - inner(grad(tau), u) + inner(v, grad(sigma)) + inner(curl(v), curl(u)))*dx L = inner(v, f)*dx return [a, L] shape = tetrahedron order = 1 GRAD = FiniteElement("Lagrange", shape, order) CURL = FiniteElement("N1curl", shape, order-1) VectorLagrange = VectorElement("Lagrange", shape, order+1) [a, L] = HodgeLaplaceGradCurl(GRAD + CURL, VectorLagrange) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/EnergyNorm.ufl0000644000175000017500000000171211672223006027114 0ustar johannrjohannr# Copyright (C) 2005-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # This example demonstrates how to define a functional, here # the energy norm (squared) for a reaction-diffusion problem. # # Compile this form with FFC: ffc EnergyNorm.ufl element = FiniteElement("Lagrange", tetrahedron, 1) v = Function(element) a = (v*v + inner(grad(v), grad(v)))*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/Constant.ufl0000644000175000017500000000176011672223006026623 0ustar johannrjohannr# Copyright (C) 2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Test form for scalar and vector constants. # # Compile this form with FFC: ffc Constant.ufl element = FiniteElement("Lagrange", triangle, 1) v = TestFunction(element) u = TrialFunction(element) f = Function(element) c = Constant(triangle) d = VectorConstant(triangle) a = c*inner(grad(v), grad(u))*dx L = inner(d, grad(v))*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/Stokes.ufl0000644000175000017500000000212111672223006026272 0ustar johannrjohannr# Copyright (C) 2005-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # The bilinear form a(v, u) and Linear form L(v) for the Stokes # equations using a mixed formulation (Taylor-Hood elements). # # Compile this form with FFC: ffc Stokes.ufl P2 = VectorElement("Lagrange", triangle, 2) P1 = FiniteElement("Lagrange", triangle, 1) TH = P2 + P1 (v, q) = TestFunctions(TH) (u, p) = TrialFunctions(TH) f = Function(P2) a = (inner(grad(v), grad(u)) - div(v)*p + q*div(u))*dx L = inner(v, f)*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/FunctionOperators.ufl0000644000175000017500000000175011672223006030515 0ustar johannrjohannr# Copyright (C) 2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Test form for operators on Functions. # # Compile this form with FFC: ffc FunctionOperators.ufl element = FiniteElement("Lagrange", triangle, 1) v = TestFunction(element) u = TrialFunction(element) f = Function(element) g = Function(element) a = sqrt(1/abs(1/f))*sqrt(g)*inner(grad(v), grad(u))*dx + v*u*sqrt(f*g)*g*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/Poisson.ufl0000644000175000017500000000171511672223006026464 0ustar johannrjohannr# Copyright (C) 2004-2007 Anders Logg # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # The bilinear form a(v, u) and linear form L(v) for # Poisson's equation. # # Compile this form with FFC: ffc Poisson.ufl element = FiniteElement("Lagrange", triangle, 1) v = TestFunction(element) u = TrialFunction(element) f = Function(element) a = inner(grad(v), grad(u))*dx L = v*f*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/ffc_demo/MixedPoisson.ufl0000644000175000017500000000230111672223006027443 0ustar johannrjohannr# Copyright (C) 2006-2007 Anders Logg and Marie Rognes # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # The bilinear form a(v, u) and linear form L(v) for # a mixed formulation of Poisson's equation with BDM # (Brezzi-Douglas-Marini) elements. # # Compile this form with FFC: ffc MixedPoisson.ufl q = 1 BDM = FiniteElement("Brezzi-Douglas-Marini", triangle, q) DG = FiniteElement("Discontinuous Lagrange", triangle, q - 1) mixed_element = BDM + DG (tau, w) = TestFunctions(mixed_element) (sigma, u) = TrialFunctions(mixed_element) f = Function(DG) a = (inner(tau, sigma) - div(tau)*u + w*div(sigma))*dx L = w*f*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/element_tests/0000755000175000017500000000000011674103626025436 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/element_tests/mixed.ufl0000644000175000017500000000020511672223006027242 0ustar johannrjohannr F = FiniteElement("CG", triangle, 2) #V = VectorElement("CG", triangle, 2) V = MixedElement(F, F) f = Function(V) a = dot(f,f)*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/functionals/0000755000175000017500000000000011674103626025110 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/functionals/Tetrahedron.ufl0000644000175000017500000000165111672223006030073 0ustar johannrjohannr# Copyright (C) 2009 Martin Sandve Alnes # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . cell = tetrahedron element = FiniteElement("Lagrange", cell, 1) u = Function(element) a0 = u*dx a1 = (u+1)*dx a2 = 2*u*dx a3 = u/2*dx a4 = u**2*dx a5 = exp(u)*dx a6 = ln(u)*dx a7 = sin(u)*dx a8 = cos(u)*dx forms = [a0, a1, a2, a3, a4, a5, a6, a7, a8] syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/functionals/Triangle.ufl0000644000175000017500000000164611672223006027365 0ustar johannrjohannr# Copyright (C) 2009 Martin Sandve Alnes # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . cell = triangle element = FiniteElement("Lagrange", cell, 1) u = Function(element) a0 = u*dx a1 = (u+1)*dx a2 = 2*u*dx a3 = u/2*dx a4 = u**2*dx a5 = exp(u)*dx a6 = ln(u)*dx a7 = sin(u)*dx a8 = cos(u)*dx forms = [a0, a1, a2, a3, a4, a5, a6, a7, a8] syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/ufl/functionals/Interval.ufl0000644000175000017500000000164711672223006027405 0ustar johannrjohannr# Copyright (C) 2009 Martin Sandve Alnes # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . cell = interval element = FiniteElement("Lagrange", cell, 1) u = Function(element) a0 = u*dx a1 = (u+1)*dx a2 = 2*u*dx a3 = u/2*dx a4 = u**2*dx a5 = exp(u)*dx a6 = ln(u)*dx a7 = sin(u)*dx a8 = cos(u)*dx forms = [a0, a1, a2, a3, a4, a5, a6, a7, a8] syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/options/0000755000175000017500000000000011674103626023470 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/verify_tensors/options/__init__.py0000644000175000017500000000013511672223006025571 0ustar johannrjohannr import default import quad3 import quad5 import quad7 import quad9 import quad import symb syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/options/quad5.py0000644000175000017500000000032711672223006025054 0ustar johannrjohannr import sfc def options(): jit = sfc.jit opt = sfc.common.options.default_options() opt.code.integral.integration_method = "quadrature" opt.code.integral.integration_order = 5 yield (jit, opt) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/options/quad.py0000644000175000017500000000025311672223006024765 0ustar johannrjohannr import sfc def options(): jit = sfc.jit opt = sfc.common.options.default_options() opt.code.integral.integration_method = "quadrature" yield (jit, opt) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/options/quad9.py0000644000175000017500000000032711672223006025060 0ustar johannrjohannr import sfc def options(): jit = sfc.jit opt = sfc.common.options.default_options() opt.code.integral.integration_method = "quadrature" opt.code.integral.integration_order = 9 yield (jit, opt) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/options/quad7.py0000644000175000017500000000032711672223006025056 0ustar johannrjohannr import sfc def options(): jit = sfc.jit opt = sfc.common.options.default_options() opt.code.integral.integration_method = "quadrature" opt.code.integral.integration_order = 7 yield (jit, opt) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/options/default.py0000644000175000017500000000016311672223006025457 0ustar johannrjohannr import sfc def options(): jit = sfc.jit opt = sfc.common.options.default_options() yield (jit, opt) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/options/symb.py0000644000175000017500000000025111672223006025003 0ustar johannrjohannr import sfc def options(): jit = sfc.jit opt = sfc.common.options.default_options() opt.code.integral.integration_method = "symbolic" yield (jit, opt) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/options/quad3.py0000644000175000017500000000032711672223006025052 0ustar johannrjohannr import sfc def options(): jit = sfc.jit opt = sfc.common.options.default_options() opt.code.integral.integration_method = "quadrature" opt.code.integral.integration_order = 3 yield (jit, opt) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/test.py0000755000175000017500000005131611672223006023330 0ustar johannrjohannr#!/usr/bin/env python import sys import os import pickle import math import numpy from os.path import join as pjoin import optparse from glob import glob from ufl.algorithms import load_forms import ufc import ufc_benchmark #import sfc #import logging #sfc.set_logging_level(logging.DEBUG) # --- Basic Utilities --- inf = 1e9999 nan = inf*0 # Taken from http://ivory.idyll.org/blog/mar-07/replacing-commands-with-subprocess from subprocess import Popen, PIPE, STDOUT def get_status_output(cmd, input=None, cwd=None, env=None): pipe = Popen(cmd, shell=True, cwd=cwd, env=env, stdout=PIPE, stderr=STDOUT) (output, errout) = pipe.communicate(input=input) assert not errout status = pipe.returncode return (status, output) def runcmd(cmd): get_status_output(cmd) def write_file(filename, text): "Write text to a file and close it." f = open(filename, "w") f.write(text) f.close() print "Wrote file '%s'" % filename # --- Option Parsing Data --- usage = """Compile UFL forms, compute element tensors, and compare with reference values. Examples: FIXME: Write usage examples. """ def opt(long, short, t, default, help): return optparse.make_option("--%s" % long, "-%s" % short, action="store", type=t, dest=long, default=default, help=help) option_list = [ \ # Directories: opt("ufldir", "u", "str", "ufl", "Input directory with .ufl files."), opt("outputdir", "o", "str", "output", "Output directory to write .ref files to."), opt("referencedir", "r", "str", "reference", "Reference directory to read .ref files from."), opt("cachedir", "c", "str", "cache", "Reference directory to read .ref files from."), # Main behaviour options: opt("skip", "s", "str", "", "Comma-separated list of ufl files to skip."), opt("write", "w", "int", 0, "Write new reference files."), opt("debug", "d", "int", 0, "Print debugging info for this script."), # Form compiler options: opt("jit_options", "j", "str", "options/default.py", "Python file containing jit options."), # Comparison options: opt("tolerance", "t", "float", 1e-10, "Compare norm of data difference to this tolerance."), opt("norm", "n", "int", 1, "Compare data with references using the L2 norm of tensor difference."), opt("eig", "e", "int", 1, "Compare data with references using the eigenvalues."), opt("random_cell", "a", "int", 1, "Use a (predefined) random cell instead of reference cell."), opt("benchmark", "b", "int", 1, "Measure the time to call tabulate_tensor."), ] # --- Main routine --- def main(args): "Handle commandline arguments and orchestrate the tests." # Parse commandline arguments parser = optparse.OptionParser(usage=usage, option_list=option_list) (options, args) = parser.parse_args(args=args) if args: print "ERROR: Got additional unknown arguments: ", args parser.print_usage() return -1 # Read input directory and filter filenames skip = set(s.strip() for s in options.skip.split(",")) def skipmatch(fn): if fn in skip: return True path, name = os.path.split(fn) if name in skip: return True basename, ext = os.path.splitext(name) if basename in skip: return True return False uflfiles = glob(pjoin(options.ufldir, "*.ufl")) uflfiles = [f for f in uflfiles if not skipmatch(f)] uflfiles = sorted(uflfiles) if options.debug: print "."*40 print "Got uflfiles =" print "\n".join(" " + f for f in uflfiles) # Handle each .ufl file separately fails = [] passes = [] summaries = [] for filename in uflfiles: summary, ok = handle_file(filename, options) summaries.append(summary) if ok: passes.append(filename) else: fails.append(filename) # Print summaries print print "="*80 print "Summaries:", sep = "\n\n" + "-"*60 + "\n" print sep + sep.join(summaries) # Print files that passed and failed if passes: print "="*80 print "The following files passed:" print "\n".join(" " + f for f in sorted(passes)) if fails: print "="*80 print "The following files failed:" print "\n".join(" " + f for f in sorted(fails)) def import_options_iterator(name): "Import options iterator from a python file." assert os.path.exists(name) path, name = os.path.split(name) basename, dotpy = os.path.splitext(name) assert dotpy in (".py", "") sys.path.insert(0, path) #cwd = os.getcwd() #os.chdir(path) try: options_module = __import__(basename) iter_jit_options = options_module.options finally: sys.path.pop(0) #os.chdir(cwd) return iter_jit_options def handle_file(filename, options): "Handle all aspects of testing a single .ufl file." # Split filename uflfilename = filename path, name = os.path.split(uflfilename) basename, ext = os.path.splitext(name) if ext != ".ufl": msg = "Expecting a .ufl file, not %s" % uflfilename return (msg, False) if options.debug: print "."*40 print "In handle_file, filename parsed as:" print "filename =", filename print "uflfilename =", uflfilename print "path =", path print "name =", name print "basename =", basename print "ext =", ext # Load forms from this file try: forms = load_forms(uflfilename) except: msg = "Failed to load file, try running\n\n"\ " ufl-analyse %s\n\n"\ "to find the bug in the form file or in UFL." % uflfilename return (msg, False) formnames = [form.form_data().name for form in forms] if options.debug: print "."*40 print "In handle_file, forms loaded: ", ", ".join(formnames) # Iterate over a given set of jit compilers and options: iter_jit_options = import_options_iterator(options.jit_options) if iter_jit_options is None: msg = "Failed to import options module '%s'." % options.jit_options return (msg, False) total_ok = True summary = "" for jit, jit_options in iter_jit_options(): #jit_options.cache_dir = options.cache_dir # FIXME # Compile forms with given compiler and options try: jit_result = jit(forms, jit_options) except: msg = "Failed to jit-compile forms in file '%s'." % uflfilename raise #return (msg, False) if options.debug: print ":"*60 print "Jit result:" print jit_result # Compute some data for each form from result of jit compilation data = {} #compiled_forms = jit_result # Ideally #compiled_forms, form_datas = jit_result # Previous compiled_forms, module, form_datas = jit_result # Current for i in range(len(forms)): form_data = forms[i].form_data() assert form_data is form_datas[i] data[form_data.name] = compute_data(compiled_forms[i], form_data, options.random_cell) # Benchmark the generated tabulate_tensor implementations benchmark_data = {} if options.benchmark: for i in range(len(forms)): form_data = forms[i].form_data() assert form_data is form_datas[i] compiled_form = compiled_forms[i] result = ufc_benchmark.benchmark_forms([compiled_form], False) benchmark_data[form_data.name] = result # Store results for future referencing if options.write: outputdir = options.referencedir else: outputdir = options.outputdir if options.debug: print "."*60 print "outputdir =", outputdir for formname in formnames: outputfilename = pjoin(outputdir, "%s_%s.ref" % (basename, formname)) if options.debug: print "Writing to output filename: ", outputfilename if not data[formname].any(): print "*** Warning: reference tensor only contains zeros!" write_data(outputfilename, data[formname]) if options.benchmark: for formname in formnames: outputfilename = pjoin(outputdir, "%s_%s.timing" % (basename, formname)) if options.debug: print "Writing to output filename: ", outputfilename write_data(outputfilename, benchmark_data[formname]) # Compare to references unless we're writing the references if not options.write: # Read reference files reference = {} for formname in formnames: referencefilename = pjoin(options.referencedir, "%s_%s.ref" % (basename, formname)) if options.debug: print "Read reference filename: ", referencefilename reference[formname] = read_data(referencefilename) if options.benchmark: benchmark_reference = {} for formname in formnames: referencefilename = pjoin(options.referencedir, "%s_%s.timing" % (basename, formname)) if options.debug: print "Read reference filename: ", referencefilename benchmark_reference[formname] = read_data(referencefilename) # Compare fresh data and reference data results = [] for formname in formnames: msg, ok = compare_data(data[formname], reference[formname], options) if options.debug: print "msg =", msg print "ok = ", ok if not ok: total_ok = False results.append("--- Errors in form %s:\n" % formname) results.append(msg) else: results.append("--- Form %s is ok.\n" % formname) if options.benchmark: msg = compare_benchmark(benchmark_data[formname], benchmark_reference[formname], options) results.extend(msg) summary += "\n".join(results) # Return final report if total_ok: summary = "%s passed everything." % uflfilename else: summary = ("%s has problems:\n" % uflfilename) + summary if options.write: summary += "\n\nWrote reference files for %s." % uflfilename return (summary, total_ok) def compute_diff_norm(data, reference, options): if options.debug: print ":"*40 print "In compute_diff_norm, comparing:" print "data =" print data print "reference =" print reference # Compute difference diff = data - reference # Compute sums of squares d2 = numpy.sum(diff**2) r2 = numpy.sum(reference**2) n2 = numpy.sum(data**2) # Compute normalized norm norm = math.sqrt(d2 / r2) if options.debug: print "diff =" print diff print "d2, r2, n2=" print d2, r2, n2 # Norm from FFC, don't understand the motivation? #norm = math.sqrt(numpy.sum(diff / (1 + reference))) return norm def compute_eigenvalues(data): sh = data.shape assert sh[0] == sh[1] from scipy.linalg import eig l, v = eig(data) return numpy.array(sorted(l)) def compare_data(data, reference, options): norm = nan eig = nan msg = "" if reference is None: total_ok = False msg += "No reference to compare to." else: total_ok = True if data.shape != reference.shape: total_ok = False msg += "\n ERROR: Data shape is %s, reference shape is %s." % (data.shape, reference.shape) else: if options.norm: norm = compute_diff_norm(data, reference, options) ok = norm < options.tolerance if not ok: total_ok = False msg += "\n norm = %e >= %e = tol" % (norm, options.tolerance) if options.eig: sh = data.shape #assert len(sh) == 2 # code elsewhere ensures data is represented as a matrix if len(sh) == 1: #sh[0] == 1 or sh[1] == 1: # Got a vector, compare sorted vectors eig1 = numpy.array(sorted(data)) eig2 = numpy.array(sorted(reference)) eig = sum((eig1-eig2)**2) ok = eig < options.tolerance if not ok: total_ok = False msg += "\n eig = %e >= %e = tol" % (eig, options.tolerance) elif sh[0] == sh[1]: # Got a matrix, compare matrix eig1 = compute_eigenvalues(data) eig2 = compute_eigenvalues(reference) eig = sum((eig1-eig2)**2) ok = eig < options.tolerance if not ok: total_ok = False msg += "\n eig = %e >= %e = tol" % (eig, options.tolerance) else: if not options.norm: # if it has passed the norm test, don't mark it as failed total_ok = False msg += "\n WARNING: Not computing eigenvalues of data with shape %s" % repr(sh) # Make and return summary if total_ok: msg = "Data compared ok." else: msg = "Failed because:%s\n\ndata is\n%r\n\nreference is\n%r" % (msg, data, reference) return (msg, total_ok) def compare_benchmark(data, reference, options): msg = [] # For each form for (b1, b2) in zip(data, reference): # For each integral type for (x, y) in zip(b1, b2): # For each integral for (r,s) in zip(x,y): f = r/s if f > 1: msg.append("The reference is faster than the new, f = %.2f" % f) else: msg.append("The new is faster than the reference, f = %.2f" % f) return msg def write_data(fn, data): try: f = open(fn, "w") pickle.dump(data, f) #f.write(data) f.close() except Exception, what: print "*** An error occured while trying to write reference file: %s" % fn raise def read_data(fn): try: f = open(fn) data = pickle.load(f) #data = f.read() f.close() except Exception, what: print "*** An error occured while trying to load reference file: %s" % fn print "*** Maybe you need to generate the reference? Returning None." data = None return data def make_mesh(cell_shape, random_cell): # Random cells were generated by: # >>> random.uniform(-2.5,2.5) if cell_shape == "interval": mesh = ufc_benchmark.Mesh(1, 1, [2, 1, 0]) if random_cell: cell = ufc_benchmark.Cell(1, 1, [[-1.445], [0.4713]], [2, 1, 0, 0]) else: cell = ufc_benchmark.Cell(1, 1, [[0], [1]], [2, 1, 0, 0]) elif cell_shape == "triangle": mesh = ufc_benchmark.Mesh(2, 2, [3, 3, 1]) if random_cell: cell = ufc_benchmark.Cell(2, 2, [[-2.2304, -0.88317], [1.3138, -1.0164],\ [0.24622, 1.4431]], [3, 3, 1, 0]) else: cell = ufc_benchmark.Cell(2, 2, [[0, 0], [1, 0], [1, 1]], [3, 3, 1, 0]) elif cell_shape == "tetrahedron": mesh = ufc_benchmark.Mesh(3, 3, [4, 6, 4, 1]) if random_cell: cell = ufc_benchmark.Cell(3, 3, [[-2.2561, -1.6144, -1.7349], [-1.5612, -1.5121, -0.17675],\ [1.6861, -1.1494, 2.4070], [0.52083, 1.1940, 1.8220]], [4, 6, 4, 1]) else: cell = ufc_benchmark.Cell(3, 3, [[0, 0, 0], [1, 0, 0], [0, 1, 0], [0, 0, 1]], [4, 6, 4, 1]) else: raise RuntimeError, "Unknown shape " + cell_shape # FIXME: Define quadrilateral and hexahedral cells return mesh, cell def compute_data(compiled_form, form_data, random_cell): # --- Initialize some variables rank = form_data.rank num_coefficients = form_data.num_functions num_arguments = num_coefficients + rank num_cell_integrals = compiled_form.num_cell_integrals() num_exterior_facet_integrals = compiled_form.num_exterior_facet_integrals() num_interior_facet_integrals = compiled_form.num_interior_facet_integrals() # --- Initialize geometry variables mesh, cell = make_mesh(form_data.cell.domain(), random_cell) dim = form_data.geometric_dimension num_facets = cell.num_entities[dim - 1] # --- Initialize dofmaps dof_maps = [0]*num_arguments for i in range(num_arguments): dof_maps[i] = compiled_form.create_dof_map(i) dof_maps[i].init_mesh(mesh) # --- Generate arbitrary coefficient dofsdofs w = [0]*num_coefficients for i in range(num_coefficients): w[i] = [0]*(dof_maps[rank+i].local_dimension()) for j in range(dof_maps[rank+i].local_dimension()): w[i][j] = 1.111 + (i + j)/1.111 macro_w = [0]*num_coefficients for i in range(num_coefficients): macro_w[i] = [0]*(2*dof_maps[rank+i].local_dimension()) for j in range(2*dof_maps[rank+i].local_dimension()): macro_w[i][j] = 1.111 + (i + j)/1.111 # --- Target variables A = numpy.zeros((1,1)) # --- Add contributions from ALL domains from cell integrals if num_cell_integrals: domain = 0 # Get shape of A and reset values try: A = ufc_benchmark.tabulate_cell_integral(compiled_form, w, cell, domain) A = numpy.array(A) A = numpy.zeros(numpy.shape(A)) for domain in range(num_cell_integrals): A += ufc_benchmark.tabulate_cell_integral(compiled_form, w, cell, domain) except Exception, what: print "*** An error occured while calling tabulate_cell_integral() for domain %d." % domain raise # --- Add contributions from ALL domains and facets from exterior integrals if num_exterior_facet_integrals: domain, facet = (0, 0) try: if not numpy.any(A): A = ufc_benchmark.tabulate_exterior_facet_integral(compiled_form, w, cell, facet, domain) A = numpy.array(A) A = numpy.zeros(numpy.shape(A)) for domain in range(num_exterior_facet_integrals): for facet in range(num_facets): A += ufc_benchmark.tabulate_exterior_facet_integral(compiled_form, w, cell, facet, domain) except Exception, what: print "*** An error occured while calling tabulate_exterior_facet_integral() for domain %d, facet %d." % (domain, facet) raise # --- Add contributions from ALL domains and facets from interior integrals # FIXME: this currently makes no sense (integrating interior facets on 1 cell) # but it should be OK since we just compare numbers. macro_A = numpy.array([0.0]) if num_interior_facet_integrals: domain, facet0, facet1 = (0,0,0) try: macro_A = ufc_benchmark.tabulate_interior_facet_integral(compiled_form, macro_w, cell, cell, facet0, facet1, domain) macro_A = numpy.array(macro_A) macro_A = numpy.zeros(numpy.shape(macro_A)) for domain in range(num_interior_facet_integrals): for facet0 in range(num_facets): for facet1 in range(num_facets): macro_A += ufc_benchmark.tabulate_interior_facet_integral(compiled_form, macro_w, cell, cell, facet0, facet1, domain) except Exception, what: print "*** An error occured while calling tabulate_interior_facet_integral() for domain %d, facet0 %d, facet1 %d." % (domain, facet0, facet1) raise # Add A to the upper left quadrant of macro_A, it makes no sense, # but the numbers should be OK if not macro_A.any(): data = A elif A.any(): data = macro_A dims = A.shape data[:dims[0], :dims[1]] += A return data # --- Execute! --- if __name__ == "__main__": result = main(sys.argv[1:]) sys.exit(result) syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/hypufl/0000755000175000017500000000000011674103626023304 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/verify_tensors/hypufl/HyperElasticity1D.ufl0000644000175000017500000000116511672223006027317 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-10-03 -- 2009-03-09 # cell = interval element = FiniteElement("CG", cell, 1) v = TestFunction(element) w = TrialFunction(element) u = Function(element) b = Constant(cell) K = Constant(cell) g = Function(element) F = 1 + u.dx(0) F = variable(F) C = F**2 #J = sqrt(F**2) E = (C-1)/2 Q = b*E**2 psi = K*(exp(Q)-1) # + ln(J)*(J-1) # TODO: Use some simpler law for this demo P = diff(psi, F) f = psi*dx #f = (psi - g*u)*dx F = (inner(P, v.dx(0)) + g*v)*dx #F = derivative(f, u, v) J = derivative(F, u, w) #F = -F # Newton steps require negated rhs (not in dolfin!) forms = [f, F, J] syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/hypufl/Elasticity.ufl0000644000175000017500000000044211672223006026117 0ustar johannrjohannr# # Author: Anders Logg # Modified by: Martin Sandve Alnes # Date: 2009-01-12 # element = VectorElement("Lagrange", tetrahedron, 1) v = TestFunction(element) u = TrialFunction(element) def epsilon(v): Dv = grad(v) return 0.5*(Dv + Dv.T) a = inner(epsilon(v), epsilon(u))*dx syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/hypufl/HyperElasticityFung.ufl0000644000175000017500000000433111672223006027750 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-12-22 -- 2009-03-12 # # Cell and its properties cell = tetrahedron d = cell.d n = cell.n x = cell.x # Elements u_element = VectorElement("CG", cell, 2) p_element = FiniteElement("CG", cell, 1) A_element = TensorElement("DG", cell, 0) # Test and trial functions v = TestFunction(u_element) w = TrialFunction(u_element) # Displacement at current and two previous timesteps u = Function(u_element) up = Function(u_element) upp = Function(u_element) # Time parameters dt = Constant(cell) # Fiber field A = Function(A_element) # External forces g = Function(u_element) sigma_0 = Function(p_element) # Material parameters rho = Constant(cell) K = Constant(cell) C_compr = Constant(cell) bff = Constant(cell) bfx = Constant(cell) bxx = Constant(cell) # Deformation gradient I = Identity(d) F = I + grad(u).T F = variable(F) Finv = inv(F) J = det(F) # Left Cauchy-Green deformation tensor #B = F*F.T #I1_B = tr(B) #I2_B = (I1_B**2 - tr(B*B))/2 #I3_B = J**2 # Right Cauchy-Green deformation tensor C = F.T*F #I1_C = tr(C) #I2_C = (I1_C**2 - tr(C*C))/2 #I3_C = J**2 # Green strain tensor E = (C-I)/2 # Mapping of strain in fiber directions Ef = A*E*A.T # Strain energy function psi(Q(Ef)) Q = bff * Ef[0,0]**2 + \ bxx * (Ef[1,1]**2 + Ef[2,2]**2 + Ef[1,2]**2 + Ef[2,1]**2) + \ bfx * (Ef[0,1]**2 + Ef[0,2]**2 + Ef[1,0]**2 + Ef[2,0]**2) psi = (K/2)*(exp(Q) - 1) + C_compr * (J*ln(J) - J + 1) # First Piola-Kirchoff stress tensor P = diff(psi, F) # Alternative: #S = 2*diff(psi, C) #P = F*S # Active forces TODO: Define nonzero active forces S_a = 0*I P_a = F*S_a # Acceleration term discretized with finite differences a = u - 2*up + upp # Time stepping parameter to multiply other terms with k = dt**2 / rho # Energy functional (without acceleration term and external forces) a_f = psi*dx # Residual equation # FIXME: Correct signs here? a_F = (dot(a, v) + k*inner(P + P_a, grad(v)) - dot(g, v))*dx - k*dot(J*sigma_0*Finv.T*n, v)*ds # Jacobi matrix of residual equation a_J = derivative(a_F, u, w) # Newton solver solves J du = -F, so we'll flip the sign here FIXME: What is right? #a_F = -a_F # TODO: Add some forms for computing stress and strain from a solution forms = [a_f, a_F, a_J] syfi-1.0.0.dfsg.orig/tests/python/verify_tensors/hypufl/HyperElasticitySVK.ufl0000644000175000017500000000504411672223006027516 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-12-22 -- 2009-03-16 # # Cell and its properties cell = tetrahedron d = cell.d n = cell.n x = cell.x # Elements u_element = VectorElement("CG", cell, 1) p_element = FiniteElement("CG", cell, 1) # Test and trial functions v = TestFunction(u_element) w = TrialFunction(u_element) # Displacement at current and two previous timesteps u = Function(u_element) up = Function(u_element) upp = Function(u_element) # Time parameters dt = Constant(cell) # External forces g = Function(u_element) sigma_0 = Function(p_element) # Material parameters rho = Constant(cell) lamda = Constant(cell) mu = Constant(cell) # Deformation gradient I = Identity(d) F = I + grad(u).T Finv = inv(F) J = det(F) # Right Cauchy-Green deformation tensor C = F.T*F # Green strain tensor E = (C-I)/2 E = variable(E) # Strain energy function psi(Q(Ef)), Saint Vernant-Kirchoff law psi = lamda/2 * tr(E)**2 + mu * inner(E, E) # First Piola-Kirchoff stress tensor P = F*diff(psi, E) # Acceleration term discretized with finite differences a = u - 2*up + upp # Time stepping parameter to multiply other terms with k = dt**2 / rho # Energy functional (without acceleration term and external forces) a_f = psi*dx # Residual equation # FIXME: Correct signs here? a_F = (dot(a, v) + k*inner(P, grad(v)) - dot(g, v))*dx - k*dot(J*sigma_0*Finv.T*n, v)*ds # Jacobi matrix of residual equation a_J = derivative(a_F, u, w) # Newton solver in DOLFIN solves J (-du) = F, so we don't need to flip the sign of F. However, this isn't a good thing because passing a linear system to the Newton solver will lead to incorrect answer. #a_F = -a_F # Some forms for computing stress and strain from a solution def projection_system(value, degree=1): if value.rank() == 0: element = FiniteElement("CG", cell, degree) elif value.rank() == 1: element = VectorElement("CG", cell, degree) elif value.rank() == 2: element = TensorElement("CG", cell, degree) test = TestFunction(element) trial = TrialFunction(element) assert value.shape() == test.shape() assert value.shape() == trial.shape() a = inner(trial - value, test) * dx a, L = lhs(a), rhs(a) return a, L projection_a_div_u, projection_L_div_u = projection_system(div(u)) projection_a_J, projection_L_J = projection_system(J) projection_a_psi, projection_L_psi = projection_system(psi) # Export forms forms = [a_f, a_F, a_J, projection_a_div_u, projection_L_div_u, projection_a_J, projection_L_J, projection_a_psi, projection_L_psi] syfi-1.0.0.dfsg.orig/tests/python/newtests/0000755000175000017500000000000011674103626020570 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/newtests/volumes.py0000755000175000017500000001037111672223006022632 0ustar johannrjohannr#!/usr/bin/env python __authors__ = "Martin Sandve Alnes" __date__ = "2008-09-04 -- 2008-09-04" import unittest import os, sys, glob, shutil, commands import ufl from ufl import FiniteElement from ufl import VectorElement from ufl import TensorElement from ufl import MixedElement from ufl import Argument from ufl import TestFunction from ufl import TrialFunction from ufl import Coefficient from ufl import Constant from ufl import dx, ds import SyFi import sfc as sfc from cell_assembly import assemble_on_cell, cell2volume def num_integrals(form): return (form.num_cell_integrals(), form.num_exterior_facet_integrals(), form.num_interior_facet_integrals()) _test_temp_dir = "volume_temp_dir" _done_test_temp_dir = "done_volume_temp_dir" class VolumeTest(unittest.TestCase): def __init__(self, *args, **kwargs): unittest.TestCase.__init__(self, *args, **kwargs) shutil.rmtree(_done_test_temp_dir, ignore_errors=True) os.mkdir(_done_test_temp_dir) def setUp(self): #print "Running sfc jit test in testdir" #print "Imported SyFi from location", SyFi.__file__ #print "Imported sfc from location", sfc.__file__ self.options = sfc.default_parameters() self.options.compilation.cache_dir = os.path.abspath("test_cache") # Generate code in a clean directory: shutil.rmtree(_test_temp_dir, ignore_errors=True) os.mkdir(_test_temp_dir) os.chdir(_test_temp_dir) def tearDown(self): dirs = glob.glob("*") os.chdir("..") for d in dirs: os.rename(os.path.join(_test_temp_dir, d), os.path.join(_done_test_temp_dir, d)) def testSetup(self): pass def _testJitVolume(self, polygon): "Test that the integral of 1.0 over a unit cell equals the length/area/volume of the unit cell." c = Constant(polygon) a = c*dx form, module, formdata = sfc.jit(a, parameters = self.options) self.assertTrue(form.rank() == 0) self.assertTrue(form.num_coefficients() == 1) self.assertTrue(num_integrals(form) == (1,0,0)) A = assemble_on_cell(form, polygon, coeffs=[1.0]) self.assertAlmostEqual(A, cell2volume[polygon]) def testJitVolumeInterval(self): self._testJitVolume("interval") def testJitVolumeTriangle(self): self._testJitVolume("triangle") def testJitVolumeTetrahedron(self): self._testJitVolume("tetrahedron") def _testJitVolumeQuadrilateral(self): # Not supported by dolfin yet self._testJitVolume("quadrilateral") def _testJitVolumeHexahedron(self): # Not supported by dolfin yet self._testJitVolume("hexahedron") def _testJitConstant(self, polygon, degree): """Test that the integral of a constant coefficient over a unit cell mesh equals the constant times the volume of the unit cell.""" element = FiniteElement("CG", polygon, degree) f = Coefficient(element) a = f*dx form, module, formdata = sfc.jit(a, parameters = self.options) self.assertTrue(form.rank() == 0) self.assertTrue(form.num_coefficients() == 1) self.assertTrue(num_integrals(form) == (1,0,0)) const = 1.23 A = assemble_on_cell(form, polygon, coeffs=[const]) self.assertAlmostEqual(A, const*cell2volume[polygon]) def testJitConstantInterval(self): polygon = "interval" self._testJitConstant(polygon, 1) self._testJitConstant(polygon, 2) def testJitConstantTriangle(self): polygon = "triangle" self._testJitConstant(polygon, 1) self._testJitConstant(polygon, 2) def testJitConstantTetrahedron(self): polygon = "tetrahedron" self._testJitConstant(polygon, 1) self._testJitConstant(polygon, 2) def _testJitConstantQuadrilateral(self): # Not supported by dolfin yet polygon = "quadrilateral" self._testJitConstant(polygon, 1) self._testJitConstant(polygon, 2) def _testJitConstantHexahedron(self): # Not supported by dolfin yet polygon = "hexahedron" self._testJitConstant(polygon, 1) self._testJitConstant(polygon, 2) tests = [VolumeTest] if __name__ == "__main__": unittest.main() syfi-1.0.0.dfsg.orig/tests/python/newtests/template.py0000755000175000017500000000063311672223006022753 0ustar johannrjohannr#!/usr/bin/env python "Template test." __authors__ = "Martin Sandve Alnes" __date__ = "2008-09-04 -- 2008-09-04" import unittest import ufl from ufl import * import sfc from sfc import * class TemplateTestCase(unittest.TestCase): def setUp(self): pass def test_something(self): self.assertTrue(True) tests = [TemplateTestCase] if __name__ == "__main__": unittest.main() syfi-1.0.0.dfsg.orig/tests/python/newtests/element_indexing.py0000755000175000017500000001047211672223006024460 0ustar johannrjohannr#!/usr/bin/env python __authors__ = "Martin Sandve Alnes" __date__ = "2008-09-04 -- 2008-09-04" import unittest import os, sys, glob, shutil, commands import ufl from ufl import FiniteElement from ufl import VectorElement from ufl import TensorElement from ufl import MixedElement from ufl import Argument from ufl import TestFunction from ufl import TrialFunction from ufl import Coefficient from ufl import Constant from ufl import dx, ds import SyFi import sfc as sfc from cell_assembly import assemble_on_cell, cell2volume import instant instant.set_logging_level("warning") def num_integrals(form): return (form.num_cell_integrals(), form.num_exterior_facet_integrals(), form.num_interior_facet_integrals()) _test_temp_dir = "volume_temp_dir" _done_test_temp_dir = "done_volume_temp_dir" class ElementIndexingTest(unittest.TestCase): def __init__(self, *args, **kwargs): unittest.TestCase.__init__(self, *args, **kwargs) shutil.rmtree(_done_test_temp_dir, ignore_errors=True) os.mkdir(_done_test_temp_dir) def setUp(self): #print "Running sfc jit test in testdir" #print "Imported SyFi from location", SyFi.__file__ #print "Imported sfc from location", sfc.__file__ self.options = sfc.default_parameters() self.options.compilation.cache_dir = os.path.abspath("test_cache") # Generate code in a clean directory: shutil.rmtree(_test_temp_dir, ignore_errors=True) os.mkdir(_test_temp_dir) os.chdir(_test_temp_dir) def tearDown(self): dirs = glob.glob("*") os.chdir("..") for d in dirs: os.rename(os.path.join(_test_temp_dir, d), os.path.join(_done_test_temp_dir, d)) def testSetup(self): pass def testScalarArgument(self): polygon = "triangle" degree = 1 element = FiniteElement("CG", polygon, degree) v = Argument(element) a = v*dx form, module, formdata = sfc.jit(a, parameters = self.options) # Test form properties self.assertTrue(form.rank() == 1) self.assertTrue(form.num_coefficients() == 0) self.assertTrue(num_integrals(form) == (1,0,0)) # TODO: Test values #const = 1.23 #A = assemble_on_cell(form, polygon, coeffs=[const]) #self.assertAlmostEqual(A, const*cell2volume[polygon]) def testScalarCoefficient(self): polygon = "triangle" degree = 1 element = FiniteElement("CG", polygon, degree) f = Coefficient(element) a = f*dx form, module, formdata = sfc.jit(a, parameters = self.options) # Test form properties self.assertTrue(form.rank() == 0) self.assertTrue(form.num_coefficients() == 1) self.assertTrue(num_integrals(form) == (1,0,0)) # Test values const = 1.23 A = assemble_on_cell(form, polygon, coeffs=[const]) self.assertAlmostEqual(A, const*cell2volume[polygon]) def testVectorArgument(self): polygon = "triangle" degree = 1 element = VectorElement("CG", polygon, degree) v = Argument(element) a = v[0]*dx form, module, formdata = sfc.jit(a, parameters = self.options) # Test form properties self.assertTrue(form.rank() == 1) self.assertTrue(form.num_coefficients() == 0) self.assertTrue(num_integrals(form) == (1,0,0)) # TODO: Test values #const = ("1.23", "4.56") #A = assemble_on_cell(form, polygon, coeffs=[const]) #self.assertAlmostEqual(A, (float(const[0]) + float(const[1]))*cell2volume[polygon]) def testVectorCoefficient(self): polygon = "triangle" degree = 1 element = VectorElement("CG", polygon, degree) f = Coefficient(element) a = (f[0] + f[1])*dx form, module, formdata = sfc.jit(a, parameters = self.options) # Test form properties self.assertTrue(form.rank() == 0) self.assertTrue(form.num_coefficients() == 1) self.assertTrue(num_integrals(form) == (1,0,0)) # Test values const = ("1.23", "4.56") A = assemble_on_cell(form, polygon, coeffs=[const]) self.assertAlmostEqual(A, (float(const[0]) + float(const[1]))*cell2volume[polygon]) tests = [ElementIndexingTest] if __name__ == "__main__": unittest.main() syfi-1.0.0.dfsg.orig/tests/python/newtests/sfc_commandline.py0000755000175000017500000000207311672223006024261 0ustar johannrjohannr#!/usr/bin/env python import unittest import os, sys, glob, shutil, commands import SyFi import sfc _test_temp_dir = "temp_dir" class SFCCommandlineTest(unittest.TestCase): def setUp(self): print "Running templatetest in testdir" print "Imported SyFi from location", SyFi.__file__ print "Imported sfc from location", sfc.__file__ shutil.rmtree(_test_temp_dir, ignore_errors=True) os.mkdir(_test_temp_dir) os.chdir(_test_temp_dir) def tearDown(self): os.chdir("..") #shutil.rmtree(_test_temp_dir, ignore_errors=True) def testForms(self): forms = glob.glob("../forms/*.form") for f in forms: #cmd = "sfc -o %s %s" % (_test_temp_dir, f) cmd = "sfc %s" % f status, output = commands.getstatusoutput(cmd) self.assertTrue(status == 0) #def testFailureExample(self): # assert 1 # #assert 0 # uncomment to see how a failure looks like tests = [SFCCommandlineTest] if __name__ == "__main__": unittest.main() syfi-1.0.0.dfsg.orig/tests/python/newtests/cell_assembly.py0000755000175000017500000000343511672223006023761 0ustar johannrjohannr#!/usr/bin/env python from dolfin import Mesh, MeshEditor, assemble cell2dim = { "interval": 1, "triangle": 2, "tetrahedron": 3, "quadrilateral": 2, "hexahedron": 3 } cell2volume = { "interval": 1.0, "triangle": 0.5, "tetrahedron": 1.0/6.0, "quadrilateral": 1.0, "hexahedron": 1.0 } def UnitCell(celltype): tdim = cell2dim[celltype] gdim = tdim mesh = Mesh() editor = MeshEditor() editor.open(mesh, celltype, tdim, gdim) if celltype == "interval": vertices = [(0.0,), (1.0,)] if celltype == "triangle": vertices = [(0.0, 0.0), (1.0, 0.0), (0.0, 1.0)] if celltype == "tetrahedron": vertices = [(0.0, 0.0, 0.0), (1.0, 0.0, 0.0), (0.0, 1.0, 0.0), (0.0, 0.0, 1.0)] if celltype == "quadrilateral": vertices = [(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0)] if celltype == "hexahedron": vertices = [(0.0, 0.0, 0.0), (1.0, 0.0, 0.0), (1.0, 1.0, 0.0), (0.0, 1.0, 0.0), (0.0, 0.0, 1.0), (1.0, 0.0, 1.0), (1.0, 1.0, 1.0), (0.0, 1.0, 1.0)] editor.initVertices(len(vertices)) editor.initCells(1) for i, p in enumerate(vertices): editor.addVertex(i, *p) editor.addCell(0, *range(len(vertices))) editor.close() return mesh def assemble_on_cell(form, celltype, coeffs): "Assemble UFC form on a unit cell mesh and return the result as a float or numpy array." mesh = UnitCell(celltype) A = assemble(form, mesh, coeffs) if isinstance(A, float): return A return A.array() syfi-1.0.0.dfsg.orig/tests/python/newtests/_run_pychecker.py0000755000175000017500000000040411672223006024134 0ustar johannrjohannr#!/usr/bin/env python "Find potential bugs in sfc by static code analysis." # PyChecker skips previously loaded modules import os, sys, glob, shutil, re, logging, subprocess, hashlib import instant import SyFi import ufl import pychecker.checker import sfc syfi-1.0.0.dfsg.orig/tests/python/newtests/jit.py0000755000175000017500000001001411672223006021720 0ustar johannrjohannr#!/usr/bin/env python __authors__ = "Martin Sandve Alnes" __date__ = "2008-09-04 -- 2008-10-17" import unittest import os, sys, glob, shutil, commands import ufl from ufl import FiniteElement from ufl import VectorElement from ufl import TensorElement from ufl import MixedElement from ufl import Argument from ufl import TestFunction from ufl import TrialFunction from ufl import Coefficient from ufl import Constant from ufl import dx, ds import SyFi import sfc as sfc from cell_assembly import assemble_on_cell def num_integrals(form): return (form.num_cell_integrals(), form.num_exterior_facet_integrals(), form.num_interior_facet_integrals()) _test_temp_dir = "temp_dir" _done_test_temp_dir = "done_temp_dir" class JitTest(unittest.TestCase): def __init__(self, *args, **kwargs): unittest.TestCase.__init__(self, *args, **kwargs) shutil.rmtree(_done_test_temp_dir, ignore_errors=True) os.mkdir(_done_test_temp_dir) def setUp(self): #print "Running sfc jit test in testdir" #print "Imported SyFi from location", SyFi.__file__ #print "Imported sfc from location", sfc.__file__ self.options = sfc.default_parameters() self.options.compilation.cache_dir = os.path.abspath("test_cache") self.options.code.integral.integration_method = "quadrature" # Generate code in a clean directory: shutil.rmtree(_test_temp_dir, ignore_errors=True) os.mkdir(_test_temp_dir) os.chdir(_test_temp_dir) def tearDown(self): dirs = glob.glob("*") os.chdir("..") for d in dirs: os.rename(os.path.join(_test_temp_dir, d), os.path.join(_done_test_temp_dir, d)) def testSetup(self): pass def testJitMass(self): "Test the mass matrix." element = FiniteElement("CG", "triangle", 1) v = TestFunction(element) u = TrialFunction(element) a = u*v*dx form, module, formdata = sfc.jit(a, parameters = self.options) self.assertTrue(form.rank() == 2) self.assertTrue(form.num_coefficients() == 0) self.assertTrue(num_integrals(form) == (1,0,0)) A = assemble_on_cell(form, "triangle", coeffs=[5.43]) # TODO: Assert correct result def testJitWeightedMass(self): "Test the weighted mass matrix." element = FiniteElement("CG", "triangle", 1) v = TestFunction(element) u = TrialFunction(element) f = Coefficient(element) a = f*u*v*dx form, module, formdata = sfc.jit(a, parameters = self.options) self.assertTrue(form.rank() == 2) self.assertTrue(form.num_coefficients() == 1) self.assertTrue(num_integrals(form) == (1,0,0)) A = assemble_on_cell(form, "triangle", coeffs=[5.43]) # TODO: Assert correct result def testJitSource(self): "Test the source vector." element = FiniteElement("CG", "triangle", 1) v = TestFunction(element) f = Coefficient(element) a = f*v*dx form, module, formdata = sfc.jit(a, parameters = self.options) self.assertTrue(form.rank() == 1) self.assertTrue(form.num_coefficients() == 1) self.assertTrue(num_integrals(form) == (1,0,0)) A = assemble_on_cell(form, "triangle", coeffs=[3.14]) # TODO: Assert correct result def testJitSplitTerms(self): "Test a form split over two foo*dx terms, using the mass matrix." element = FiniteElement("CG", "triangle", 1) v = TestFunction(element) u = TrialFunction(element) f = Coefficient(element) a = u*v*dx + f*u*v*dx form, module, formdata = sfc.jit(a, parameters = self.options) self.assertTrue(form.rank() == 2) self.assertTrue(form.num_coefficients() == 1) self.assertTrue(num_integrals(form) == (1,0,0)) A = assemble_on_cell(form, "triangle", coeffs=[4.43]) # TODO: Assert correct result tests = [JitTest] if __name__ == "__main__": unittest.main() syfi-1.0.0.dfsg.orig/tests/python/newtests/clean.sh0000755000175000017500000000007511672223006022204 0ustar johannrjohannr#!/bin/bash rm -rf *temp_dir* rm -f *.pyc rm -rf test_cache/ syfi-1.0.0.dfsg.orig/tests/python/newtests/element_representations.py0000755000175000017500000001705611672223006026105 0ustar johannrjohannr#!/usr/bin/env python __authors__ = "Martin Sandve Alnes" __date__ = "2008-09-09 2008-09-10" import unittest import os, sys, glob, shutil, commands import swiginac import ufl from ufl import FiniteElement from ufl import VectorElement from ufl import TensorElement from ufl import MixedElement from ufl import Argument from ufl import TestFunction from ufl import TrialFunction from ufl import Coefficient from ufl import Constant from ufl import dx, ds import SyFi import sfc as sfc from sfc.representation import ElementRepresentation from sfc.quadrature import find_quadrature_rule import instant instant.set_logging_level("warning") class ElementRepresentationTest(unittest.TestCase): def __init__(self, *args, **kwargs): unittest.TestCase.__init__(self, *args, **kwargs) def setUp(self): SyFi.initSyFi(2) polygon = "triangle" self.P1 = FiniteElement("CG", polygon, 1) self.P2 = FiniteElement("CG", polygon, 2) self.Q = FiniteElement("Q", polygon, 1) self.VQ = VectorElement("Q", polygon, 1) self.V1 = VectorElement("CG", polygon, 1) self.V2 = VectorElement("CG", polygon, 2) self.T1 = TensorElement("CG", polygon, 1, symmetry=True) self.T2 = TensorElement("CG", polygon, 2, symmetry=True) self.TH = self.V2 * self.P1 self.M = MixedElement(self.T1, self.V1, self.P1) self.P1rep = ElementRepresentation(self.P1) self.P2rep = ElementRepresentation(self.P2) self.Qrep = ElementRepresentation(self.Q, quad_rule = find_quadrature_rule(polygon, 2)) self.VQrep = ElementRepresentation(self.VQ, quad_rule = find_quadrature_rule(polygon, 2)) self.V1rep = ElementRepresentation(self.V1) self.V2rep = ElementRepresentation(self.V2) self.T1rep = ElementRepresentation(self.T1) self.T2rep = ElementRepresentation(self.T2) self.THrep = ElementRepresentation(self.TH) self.Mrep = ElementRepresentation(self.M) self.reps = [getattr(self, d) for d in dir(self) if isinstance(getattr(self, d), ElementRepresentation)] def tearDown(self): pass def testSetup(self): pass def testValueShapes(self): self.assertTrue( self.P1rep.value_shape == () ) self.assertTrue( self.P2rep.value_shape == () ) self.assertTrue( self.Qrep.value_shape == () ) self.assertTrue( self.VQrep.value_shape == (2,) ) self.assertTrue( self.V1rep.value_shape == (2,) ) self.assertTrue( self.V2rep.value_shape == (2,) ) self.assertTrue( self.T1rep.value_shape == (2,2) ) self.assertTrue( self.T2rep.value_shape == (2,2) ) self.assertTrue( self.THrep.value_shape == (2+1,) ) self.assertTrue( self.Mrep.value_shape == (4+2+1,) ) def testGeometryDimensions(self): self.assertTrue( self.P1rep.geometric_dimension == 2 ) self.assertTrue( self.P2rep.geometric_dimension == 2 ) self.assertTrue( self.Qrep.geometric_dimension == 2 ) self.assertTrue( self.VQrep.geometric_dimension == 2 ) self.assertTrue( self.V1rep.geometric_dimension == 2 ) self.assertTrue( self.V2rep.geometric_dimension == 2 ) self.assertTrue( self.T1rep.geometric_dimension == 2 ) self.assertTrue( self.T2rep.geometric_dimension == 2 ) self.assertTrue( self.THrep.geometric_dimension == 2 ) self.assertTrue( self.Mrep.geometric_dimension == 2 ) def testTopologyDimensions(self): self.assertTrue( self.P1rep.topological_dimension == 2 ) self.assertTrue( self.P2rep.topological_dimension == 2 ) self.assertTrue( self.Qrep.topological_dimension == 2 ) self.assertTrue( self.VQrep.topological_dimension == 2 ) self.assertTrue( self.V1rep.topological_dimension == 2 ) self.assertTrue( self.V2rep.topological_dimension == 2 ) self.assertTrue( self.T1rep.topological_dimension == 2 ) self.assertTrue( self.T2rep.topological_dimension == 2 ) self.assertTrue( self.THrep.topological_dimension == 2 ) self.assertTrue( self.Mrep.topological_dimension == 2 ) def testArguments(self): # Tests that for each basisfunction there is at least one nonzero value component #for rep in (self.P1rep, self.V1rep, self.T1rep): #for rep in (self.V1rep, ): for rep in self.reps: if rep.ufl_element.family() == "Quadrature"\ or rep.ufl_element.family() == "Boundary Quadrature": continue #print #print rep for i in range(rep.local_dimension): zeros = 0 for c in ufl.permutation.compute_indices(rep.value_shape): #print "Calling basis_function(", i, c, ") for element ", repr(rep.ufl_element) N = rep.basis_function(i, c) #print i, c, N if N == 0.0: zeros += 1 self.assertTrue(zeros < rep.value_size) if rep.local_dimension > 1 and rep.value_size > 1: self.assertTrue(zeros > 0) # This should hold for compositions of scalar elements # FIXME: Test something more def testDofTopology(self): def triangle_entities(): for d in range(2): for i in range((3,3,1)[d]): yield (d,i) for rep in self.reps: for (d,i) in triangle_entities(): dofs = rep.entity_dofs[d][i] self.assertTrue(len(dofs) == rep.num_entity_dofs[d]) # FIXME: Test something more def testPointEvaluation(self): # Tests that the property { N_k(\xi_j) == \delta_{kj} } holds for scalar elements. for rep in (self.P1rep, self.P2rep): for i in range(rep.local_dimension): x = rep.dof_x[i] xi = rep.dof_xi[i] repmap = swiginac.exmap() for j in range(2): repmap[rep.p[j]] = xi[j] for k in range(rep.local_dimension): c = () # Assuming scalar element here: N = rep.basis_function(k, c) Nxi = N.subs(repmap) if i == k: self.assertTrue(Nxi == 1.0) else: self.assertTrue(Nxi == 0.0) def testCoordinates(self): for rep in self.reps: #print #print rep.ufl_element for i in range(rep.local_dimension): x = rep.dof_x[i] xi = rep.dof_xi[i] #print i, xi #x2 = rep.xi_to_x(xi) #xi2 = rep.x_to_xi(x) #self.assertTrue(x2 == x) #self.assertTrue(xi2 == xi) # FIXME: Test something more def testSubHierarchy(self): self.assertTrue(len(self.P1rep.sub_elements) == 0 ) self.assertTrue(len(self.P2rep.sub_elements) == 0 ) self.assertTrue(len(self.Qrep.sub_elements) == 0 ) self.assertTrue(len(self.VQrep.sub_elements) == 2 ) self.assertTrue(len(self.V1rep.sub_elements) == 2 ) self.assertTrue(len(self.V2rep.sub_elements) == 2 ) self.assertTrue(len(self.T1rep.sub_elements) == 3 ) self.assertTrue(len(self.T2rep.sub_elements) == 3 ) self.assertTrue(len(self.THrep.sub_elements) == 2 ) self.assertTrue(len(self.Mrep.sub_elements) == 3 ) tests = [ElementRepresentationTest] if __name__ == "__main__": unittest.main() syfi-1.0.0.dfsg.orig/tests/python/newtests/test.py0000755000175000017500000000164611672223006022124 0ustar johannrjohannr#!/usr/bin/env python """Run all tests""" __author__ = "Martin Alnes " __date__ = "2008-09-04 -- 2008-09-04" import os, glob # disable most log output import sfc sfc.set_logging_level("error") # define test set tests = glob.glob("*.py") skip = set(["test.py", "template.py", "cell_assembly.py"]) tests = (t for t in tests if not (t in skip or t.startswith("_"))) # two ways of running tests separate = True if separate: # run all test from commandline (separate python processes) for test in tests: cmd = "python %s" % test print "Running '%s'" % cmd os.system(cmd) else: # collect test classes classes = [] for test in tests: classes.extend(test.tests) # run all tests verbosity = 0 suites = [unittest.makeSuite(c) for c in classes] testsuites = unittest.TestSuite(suites) unittest.TextTestRunner(verbosity=verbosity).run(testsuites) syfi-1.0.0.dfsg.orig/tests/python/newtests/codeformatter.py0000755000175000017500000000646111672223006024003 0ustar johannrjohannr#!/usr/bin/env python __authors__ = "Martin Sandve Alnes" __date__ = "2008-09-04 -- 2008-09-04" import unittest from sfc.codegeneration.codeformatting import CodeFormatter, gen_token_declarations, gen_token_definitions test_switch_result = """switch(facet) { case 0: dofs[0] = 2; dofs[1] = 0; dofs[2] = 1; break; case 1: dofs[0] = 5; dofs[1] = 3; dofs[2] = 4; break; case 2: dofs[0] = 6; dofs[1] = 7; dofs[2] = 8; break; default: throw std::runtime_error("Invalid facet number."); }""" gen_tokens_result = """{ double s1; double s2; } double s1 = e1; double s2 = e2; double s1 = e1; double s2 = e2;""" functions_result = """inline void c(double a[3], double b[3], double c[3]) const; inline void c(double a[3], double b[3], double c[3]) const { // Empty body! } c(a, b, c); """ class CodeFormattingTest(unittest.TestCase): def setUp(self): pass def _compare_codes(self, code, correct): "Compare codes and print codes if this fails." if code != correct: print "Failure, got code:" print '"""%s"""' % code print "but expecting:" print '"""%s"""' % correct self.assertTrue(code == correct) def test_switch(self): code = CodeFormatter() code.begin_switch("facet") facet_dofs = [(2, 0, 1), (5, 3, 4), (6, 7, 8)] for i, dofs in enumerate(facet_dofs): code.begin_case(i) for j, d in enumerate(dofs): code += "dofs[%d] = %d;" % (j, d) code.end_case() code += "default:" code.indent() code += 'throw std::runtime_error("Invalid facet number.");' code.dedent() code.end_switch() code = str(code) self._compare_codes(code, test_switch_result) def test_gen_tokens(self): code = CodeFormatter() class MockObject: def __init__(self, text): self._text = text def printc(self): return self._text def __str__(self): return self._text s1 = MockObject("s1") e1 = MockObject("e1") s2 = MockObject("s2") e2 = MockObject("e2") tokens = [(s1, e1), (s2, e2)] code.begin_block() code += gen_token_declarations(tokens) code.end_block() code.indent() code.indent() code += gen_token_definitions(tokens) code.dedent() code += gen_token_definitions(tokens) code.dedent() code = str(code) self._compare_codes(code, gen_tokens_result) def test_functions(self): code = CodeFormatter() name = "myfunction" argnames = ["a", "b", "c"] args = [("double", name, "[3]") for name in argnames] code.declare_function(name, args=args, const=True, inline=True) code.new_line("") body = "// Empty body!" code.define_function(name, args=args, const=True, inline=True, body=body) code.new_line("") code.call_function(name, args=argnames) code.new_line("") code = str(code) self._compare_codes(code, functions_result) tests = [CodeFormattingTest] if __name__ == "__main__": unittest.main() syfi-1.0.0.dfsg.orig/tests/python/newtests/quadjit.py0000755000175000017500000000406511672223006022604 0ustar johannrjohannr#!/usr/bin/env python __authors__ = "Martin Sandve Alnes" __date__ = "2008-09-04 -- 2008-10-17" import unittest import os, sys, glob, shutil, commands import ufl from ufl import * import SyFi import sfc as sfc from cell_assembly import assemble_on_cell def num_integrals(form): return (form.num_cell_integrals(), form.num_exterior_facet_integrals(), form.num_interior_facet_integrals()) _test_temp_dir = "temp_dir" _done_test_temp_dir = "done_temp_dir" class QuadJitTest(unittest.TestCase): def __init__(self, *args, **kwargs): unittest.TestCase.__init__(self, *args, **kwargs) shutil.rmtree(_done_test_temp_dir, ignore_errors=True) os.mkdir(_done_test_temp_dir) def setUp(self): #print "Running sfc jit test in testdir" #print "Imported SyFi from location", SyFi.__file__ #print "Imported sfc from location", sfc.__file__ self.options = sfc.default_parameters() self.options.compilation.cache_dir = os.path.abspath("test_cache") self.options.code.integral.integration_method = "quadrature" # Generate code in a clean directory: shutil.rmtree(_test_temp_dir, ignore_errors=True) os.mkdir(_test_temp_dir) os.chdir(_test_temp_dir) def tearDown(self): dirs = glob.glob("*") os.chdir("..") for d in dirs: os.rename(os.path.join(_test_temp_dir, d), os.path.join(_done_test_temp_dir, d)) def testSetup(self): pass def testJitMass(self): "Test the mass matrix." element = FiniteElement("CG", "triangle", 1) v = TestFunction(element) u = TrialFunction(element) a = u*v*dx form, module, formdata = sfc.jit(a, parameters = self.options) self.assertTrue(form.rank() == 2) self.assertTrue(form.num_coefficients() == 0) self.assertTrue(num_integrals(form) == (1,0,0)) A = assemble_on_cell(form, "triangle", coeffs=[5.43]) # TODO: Assert correct result tests = [QuadJitTest] if __name__ == "__main__": unittest.main() syfi-1.0.0.dfsg.orig/tests/python/newtests/ufl2swiginac.py0000755000175000017500000000647411672223006023546 0ustar johannrjohannr#!/usr/bin/env python __authors__ = "Martin Sandve Alnes" __date__ = "2008-10-15 -- 2008-10-15" import unittest import ufl from ufl import * from ufl.algorithms import expand_compounds import sfc as sfc from sfc.representation.swiginac_eval import SwiginacEvaluator from sfc.symbolic_utils import symbolic_matrix, symbolic_vector class MockCell: def __init__(self, nsd): self.nsd = nsd class MockFormRep: def __init__(self, nsd): self.rank = 0 self.nsd = nsd self.cell = MockCell(nsd) class MockVariables: def __init__(self, nsd): self.x = symbolic_vector(nsd, "x") self.Ginv_sym = symbolic_matrix(nsd, nsd, "Ginv") def ufl2swiginac(expression, nsd): formrep = MockFormRep(nsd) variables = MockVariables(nsd) use_symbols = False s = SwiginacEvaluator(formrep, variables, use_symbols) return s.visit(expression) class Ufl2SwiginacTest(unittest.TestCase): def __init__(self, *args, **kwargs): unittest.TestCase.__init__(self, *args, **kwargs) def setUp(self): pass def tearDown(self): pass def testSetup(self): pass def testIndexed1(self): A = as_vector((1,2,3)) a = A[0] + A[1] +A[2] b = ufl2swiginac(a, 3) c = 1 + 2 + 3 self.assertEqual(c, b) def testIndexed2(self): A = as_matrix(((1,2),(3,4))) a = sum(A[i,j] for i in (0,1) for j in (0,1)) b = ufl2swiginac(a, 2) c = 1 + 2 + 3 + 4 self.assertEqual(c, b) def testIndexed3(self): A = as_tensor(((1,2,3), (4,5,6), (7,8,9))) a = A[i,i] b = ufl2swiginac(a, 3) c = 1+5+9 self.assertEqual(c, b) def testProduct1(self): A = as_vector((1,2,3)) a = A[0]*A[1]*A[2] b = ufl2swiginac(a, 3) c = 1 * 2 * 3 self.assertEqual(c, b) def testProduct2(self): u = as_vector((2,3,5)) v = as_vector((7,11,13)) a = u[i]*v[i] b = ufl2swiginac(a, 3) c = 2*7 + 3*11 + 5*13 self.assertEqual(c, b) def testProduct3(self): u = as_tensor(((1,2,3), (4,5,6), (7,8,9))) v = as_tensor(((4,5,6), (1,2,3), (4,5,6))) a = u[i,j]*v[i,j] b = ufl2swiginac(a, 3) c = (4+10+18)*2 + 7*4+8*5+9*6 self.assertEqual(c, b) def testProduct4(self): u = as_tensor(((1,2,3), (4,5,6), (7,8,9))) v = as_tensor(u[i,j], (j,i)) a = inner(u, v.T) a = expand_compounds(a, 3) b = ufl2swiginac(a, 3) c = sum(ii**2 for ii in range(10)) self.assertEqual(c, b) def testSpatialDiff1(self): "Test a single constant dx" A = as_vector((2,3)) a = A[0].dx(0) b = ufl2swiginac(a, 2) c = 0 self.assertEqual(c, b) def testSpatialDiff2(self): "Test a single div-type df_i/dx_i" A = as_vector((2,3)) a = A[i].dx(i) b = ufl2swiginac(a, 2) c = 0 self.assertEqual(c, b) def testSpatialDiff3(self): "Test a double div-type df_ij/dx_ij" A = as_vector(((2,3),(4,5))) a = A[i,j].dx(j,i) b = ufl2swiginac(a, 2) c = 0 self.assertEqual(c, b) tests = [Ufl2SwiginacTest] if __name__ == "__main__": unittest.main() syfi-1.0.0.dfsg.orig/tests/python/newtests/ufl_forms/0000755000175000017500000000000011674103626022564 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/newtests/ufl_forms/mass.ufl0000644000175000017500000000016711672223006024234 0ustar johannrjohannr element = FiniteElement("Lagrange", "triangle", 1) u = TrialFunction(element) v = TestFunction(element) a = u*v*dx syfi-1.0.0.dfsg.orig/tests/python/newtests/ufl_forms/convection_vector.ufl0000644000175000017500000000021211672223006027011 0ustar johannrjohannr element = VectorElement("Lagrange", "triangle", 1) v = TestFunction(element) w = Function(element) a = dot( dot(w, grad(w)), v ) * dx syfi-1.0.0.dfsg.orig/tests/python/newtests/ufl_forms/source.ufl0000644000175000017500000000016211672223006024564 0ustar johannrjohannr element = FiniteElement("Lagrange", "triangle", 1) v = TestFunction(element) f = Function(element) a = f*v*dx syfi-1.0.0.dfsg.orig/tests/python/newtests/ufl_forms/convection_jacobi.ufl0000644000175000017500000000026511672223006026746 0ustar johannrjohannr element = VectorElement("Lagrange", "triangle", 1) u = TrialFunction(element) v = TestFunction(element) w = Function(element) b = dot(dot(u, grad(w)) + dot(w, grad(u)), v) * dx syfi-1.0.0.dfsg.orig/tests/python/newtests/ufl_forms/explicit_convection.ufl0000644000175000017500000000024511672223006027336 0ustar johannrjohannr element = VectorElement("Lagrange", "triangle", 1) u = TrialFunction(element) v = TestFunction(element) w = Function(element) a = dot( dot(w, grad(u)), v ) * dx syfi-1.0.0.dfsg.orig/tests/python/newtests/ufl_forms/L2norm.ufl0000644000175000017500000000013111672223006024431 0ustar johannrjohannr element = FiniteElement("Lagrange", "triangle", 1) f = Function(element) a = f**2*dx syfi-1.0.0.dfsg.orig/tests/python/newtests/ufl_forms/stiffness.ufl0000644000175000017500000000021111672223006025263 0ustar johannrjohannr element = FiniteElement("Lagrange", "triangle", 1) u = TrialFunction(element) v = TestFunction(element) a = dot(grad(u), grad(v))*dx syfi-1.0.0.dfsg.orig/tests/python/newtests/ufl_forms/H1norm.ufl0000644000175000017500000000016611672223006024434 0ustar johannrjohannr element = FiniteElement("Lagrange", "triangle", 1) f = Function(element) a = ( f*f + dot(grad(f), grad(f)) ) * dx syfi-1.0.0.dfsg.orig/tests/python/newtests/ufl_forms/convection_jacobi2.ufl0000644000175000017500000000026611672223006027031 0ustar johannrjohannr element = VectorElement("Lagrange", "triangle", 1) u = TrialFunction(element) v = TestFunction(element) w = Function(element) b = (u[j]*w[i].dx(j) + w[j]*u[i].dx(j)) * v[i] * dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/0000755000175000017500000000000011674103626022657 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/README0000644000175000017500000000104311672223006023526 0ustar johannrjohannrThis directory is intended for generating code with easy access to the tabulate_tensor code for manual inspection. Usage: ./regenerate.py ['print' | .ufl filename | name of directory with .ufl files in | sfc option]* All .ufl files and all .ufl files in the directory arguments are compiled using commandline sfc. The word "print" among the arguments causes regenerate.py to print the tabulate_tensor code for each generated form. Any other arguments are interpreted as sfc commandline options, see 'sfc --help' for more details on those. syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/regenerate.py0000755000175000017500000000340311672223006025346 0ustar johannrjohannr#!/usr/bin/env python import os, sys, re, shutil, time from glob import glob do_print = False filenames = [] flags = [] args = sys.argv[1:] for arg in args: if arg == "print": do_print = True elif arg.endswith(".ufl"): assert os.path.exists(arg) filenames.append(arg) elif os.path.isdir(arg): filenames.extend(glob(os.path.join(arg, "*.ufl"))) else: flags.append(arg) if not filenames: filenames = glob(os.path.join("ufl", "*.ufl")) filenames = sorted(filenames) flags = " ".join(flags) def basename(fn): n = os.path.basename(fn) b, e = os.path.splitext(n) return b # In case the directory is missing: try: os.mkdir("generated_code") except: pass timing = [] codepaths = [] fails = [] for fn in filenames: print print "--- Handling file", fn output = "generated_code/%s" % basename(fn) # NB! Deleting old contents! shutil.rmtree(output, ignore_errors=True) # Run compilation command cmd = "sfc %s -o%s %s" % (flags, output, fn) t = -time.time() ok = os.system(cmd) t += time.time() if ok != 0: fails.append(fn) else: codepaths.append(output) timing.append("%8.1f seconds to compile %s." % (t, fn)) # Print tabulate_tensor implementations if do_print: for p in codepaths: files = glob(os.path.join(p, "*integral*.cpp")) cmd = "print_tabulate_tensors %s" % " ".join(files) ok = os.system(cmd) if ok != 0: print "Failed to print tabulate_tensor for ", p print "cmd =", cmd if timing: print print "--- Timing of each sfc run:" print "\n".join(timing) if fails: print print "--- The following files failed:" print "\n".join(fails) print syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/0000755000175000017500000000000011672223006023436 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/HyperElasticity.ufl0000644000175000017500000000325111672223006027271 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-12-22 # # Cell and its properties cell = tetrahedron d = cell.d n = cell.n x = cell.x # Elements u_element = VectorElement("CG", cell, 2) p_element = FiniteElement("CG", cell, 1) A_element = TensorElement("CG", cell, 1) # Test and trial functions v = TestFunction(u_element) w = TrialFunction(u_element) # Displacement at current and two previous timesteps u = Coefficient(u_element) up = Coefficient(u_element) upp = Coefficient(u_element) # Time parameters dt = Constant(cell) # Fiber field A = Coefficient(A_element) # External forces T = Coefficient(u_element) p0 = Coefficient(p_element) N = cell.n # Material parameters FIXME rho = Constant(cell) K = Constant(cell) c00 = Constant(cell) c11 = Constant(cell) c22 = Constant(cell) # Deformation gradient I = Identity(d) F = I + grad(u).T F = variable(F) Finv = inv(F) J = det(F) # Left Cauchy-Green deformation tensor B = F*F.T I1_B = tr(B) I2_B = (I1_B**2 - tr(B*B))/2 I3_B = J**2 # Right Cauchy-Green deformation tensor C = F.T*F I1_C = tr(C) I2_C = (I1_C**2 - tr(C*C))/2 I3_C = J**2 # Green strain tensor E = (C-I)/2 # Mapping of strain in fiber directions Ef = A*E*A.T # Strain energy function W(Q(Ef)) Q = c00*Ef[0,0]**2 + c11*Ef[1,1]**2 + c22*Ef[2,2]**2 # FIXME: insert some simple law here W = (K/2)*(exp(Q) - 1) # + p stuff # First Piola-Kirchoff stress tensor P = diff(W, F) # Acceleration term discretized with finite differences a = (u - 2*up + upp) / dt # Residual equation a_F = dot(rho*a, v)*dx + inner(P, grad(v))*dx - dot(J*Finv*T, v)*ds(0) - dot(J*Finv*p0*N, v)*ds(0) # FIXME: Correct these mappings # Jacobi matrix of residual equation a_J = derivative(a_F, u, w) syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/L2.ufl0000644000175000017500000000025211672223006024422 0ustar johannrjohannr # # Collection of most common elements for testing. # # Author: Martin Sandve Alnes # cell = triangle e = FiniteElement("CG", cell, 1) f = Coefficient(e) a = f**2*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/Stiffness.ufl0000644000175000017500000000034611672223006026115 0ustar johannrjohannr # # Collection of most common elements for testing. # # Author: Martin Sandve Alnes # cell = triangle e = FiniteElement("CG", cell, 1) v = TestFunction(e) u = TrialFunction(e) f = Coefficient(e) a = f*dot(grad(u),grad(v))*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/Mass.ufl0000644000175000017500000000032511672223006025051 0ustar johannrjohannr # # Collection of most common elements for testing. # # Author: Martin Sandve Alnes # cell = triangle e = FiniteElement("CG", cell, 1) v = TestFunction(e) u = TrialFunction(e) f = Coefficient(e) a = f*u*v*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/functionals/0000755000175000017500000000000011674103626025772 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/functionals/Tetrahedron.ufl0000644000175000017500000000157411672223006030761 0ustar johannrjohannr# Copyright (C) 2009 Martin Sandve Alnes # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . cell = tetrahedron element = FiniteElement("Lagrange", cell, 1) u = Function(element) a0 = u*dx a1 = (u+1)*dx a2 = 2*u*dx a3 = u/2*dx a4 = u**2*dx a5 = exp(u)*dx a6 = ln(u)*dx a7 = sin(u)*dx a8 = cos(u)*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/functionals/Triangle.ufl0000644000175000017500000000157111672223006030244 0ustar johannrjohannr# Copyright (C) 2009 Martin Sandve Alnes # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . cell = triangle element = FiniteElement("Lagrange", cell, 1) u = Function(element) a0 = u*dx a1 = (u+1)*dx a2 = 2*u*dx a3 = u/2*dx a4 = u**2*dx a5 = exp(u)*dx a6 = ln(u)*dx a7 = sin(u)*dx a8 = cos(u)*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/functionals/Interval.ufl0000644000175000017500000000157111672223006030263 0ustar johannrjohannr# Copyright (C) 2009 Martin Sandve Alnes # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . cell = interval element = FiniteElement("Lagrange", cell, 1) u = Function(element) a0 = u*dx a1 = (u+1)*dx a2 = 2*u*dx a3 = u/2*dx a4 = u**2*dx a5 = exp(u)*dx a6 = ln(u)*dx a7 = sin(u)*dx a8 = cos(u)*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/basics/0000755000175000017500000000000011674103626024711 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/basics/ninterval.ufl0000644000175000017500000000002211672223006027406 0ustar johannrjohannra = interval.n*ds syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/basics/uv.ufl0000644000175000017500000000013111672223006026037 0ustar johannrjohannre = FiniteElement("CG", interval, 1) v = TestFunction(e) u = TrialFunction(e) a = u*v*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/basics/fsum.ufl0000644000175000017500000000010211672223006026355 0ustar johannrjohannre = FiniteElement("CG", interval, 1) f = Function(e) a = (f+7)*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/basics/f.ufl0000644000175000017500000000007611672223006025642 0ustar johannrjohannre = FiniteElement("CG", interval, 1) f = Function(e) a = f*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/basics/uvfsum.ufl0000644000175000017500000000017211672223006026737 0ustar johannrjohannre = FiniteElement("CG", interval, 1) v = TestFunction(e) u = TrialFunction(e) f = Function(e) a = f*(u*v)*dx + (f*u)*v*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/basics/fexp.ufl0000644000175000017500000000010311672223006026346 0ustar johannrjohannre = FiniteElement("CG", interval, 1) f = Function(e) a = exp(f)*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/basics/v.ufl0000644000175000017500000000010211672223006025650 0ustar johannrjohannre = FiniteElement("CG", interval, 1) v = TestFunction(e) a = v*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/basics/vindexed.ufl0000644000175000017500000000010511672223006027214 0ustar johannrjohannre = VectorElement("CG", triangle, 1) v = TestFunction(e) a = v[0]*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/basics/uvindexed.ufl0000644000175000017500000000013611672223006027405 0ustar johannrjohannre = VectorElement("CG", triangle, 1) v = TestFunction(e) u = TrialFunction(e) a = dot(u,v)*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/basics/fpow.ufl0000644000175000017500000000010111672223006026355 0ustar johannrjohannre = FiniteElement("CG", interval, 1) f = Function(e) a = f**3*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/basics/findexed.ufl0000644000175000017500000000010111672223006027170 0ustar johannrjohannre = VectorElement("CG", triangle, 1) f = Function(e) a = f[0]*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/basics/nindexed.ufl0000644000175000017500000000002511672223006027205 0ustar johannrjohannra = triangle.n[0]*ds syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/basics/c.ufl0000644000175000017500000000004011672223006025626 0ustar johannrjohannrc = Constant(interval) a = c*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/basics/fln.ufl0000644000175000017500000000010211672223006026162 0ustar johannrjohannre = FiniteElement("CG", interval, 1) f = Function(e) a = ln(f)*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/basics/vsum.ufl0000644000175000017500000000010611672223006026401 0ustar johannrjohannre = FiniteElement("CG", interval, 1) v = TestFunction(e) a = (v+7)*dx syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/Elements.ufl0000644000175000017500000000445111672223006025726 0ustar johannrjohannr # # Collection of most common elements for testing. # # Author: Martin Sandve Alnes # cell = interval e10 = FiniteElement("DG", cell, 0) e11 = FiniteElement("CG", cell, 1) e12 = FiniteElement("CG", cell, 2) e13 = FiniteElement("CG", cell, 3) e14 = FiniteElement("CG", cell, 4) cell = triangle e20 = FiniteElement("DG", cell, 0) e21 = FiniteElement("CG", cell, 1) e22 = FiniteElement("CG", cell, 2) e23 = FiniteElement("CG", cell, 3) e24 = FiniteElement("CG", cell, 4) cell = tetrahedron e30 = FiniteElement("DG", cell, 0) e31 = FiniteElement("CG", cell, 1) e32 = FiniteElement("CG", cell, 2) e33 = FiniteElement("CG", cell, 3) e34 = FiniteElement("CG", cell, 4) cell = interval v10 = VectorElement("DG", cell, 0) v11 = VectorElement("CG", cell, 1) v12 = VectorElement("CG", cell, 2) v13 = VectorElement("CG", cell, 3) v14 = VectorElement("CG", cell, 4) cell = triangle v20 = VectorElement("DG", cell, 0) v21 = VectorElement("CG", cell, 1) v22 = VectorElement("CG", cell, 2) v23 = VectorElement("CG", cell, 3) v24 = VectorElement("CG", cell, 4) cell = tetrahedron v30 = VectorElement("DG", cell, 0) v31 = VectorElement("CG", cell, 1) v32 = VectorElement("CG", cell, 2) v33 = VectorElement("CG", cell, 3) v34 = VectorElement("CG", cell, 4) cell = interval t10 = TensorElement("DG", cell, 0) t11 = TensorElement("CG", cell, 1) t12 = TensorElement("CG", cell, 2) t13 = TensorElement("CG", cell, 3) t14 = TensorElement("CG", cell, 4) cell = triangle t20 = TensorElement("DG", cell, 0) t21 = TensorElement("CG", cell, 1) t22 = TensorElement("CG", cell, 2) t23 = TensorElement("CG", cell, 3) t24 = TensorElement("CG", cell, 4) cell = tetrahedron t30 = TensorElement("DG", cell, 0) t31 = TensorElement("CG", cell, 1) t32 = TensorElement("CG", cell, 2) t33 = TensorElement("CG", cell, 3) t34 = TensorElement("CG", cell, 4) # Dynamically generate combinations of mixed elements feeling_crazy = False if feeling_crazy: # 675 mixed element combinations! for d in (1,2,3): for t0 in ("e", "v", "t"): for t1 in ("e", "v", "t"): for d0 in range(5): for d1 in range(5): n0 = "%s%d%s" % (t0, d, d0) n1 = "%s%d%s" % (t1, d, d1) name = "m%s%s" % (n0, n1) exec "%s = %s + %s" % (name, n0, n1) syfi-1.0.0.dfsg.orig/tests/python/code_generation_lab/ufl/CG1.ufl0000644000175000017500000000036711672223006024526 0ustar johannrjohannr # # Collection of most common elements for testing. # # Author: Martin Sandve Alnes # cell = interval e11 = FiniteElement("CG", cell, 1) cell = triangle e21 = FiniteElement("CG", cell, 1) cell = tetrahedron e31 = FiniteElement("CG", cell, 1) syfi-1.0.0.dfsg.orig/tests/python/run_tests.py0000755000175000017500000000025111672223006021306 0ustar johannrjohannr#!/usr/bin/env python # run only simple test to check that sfc <-> pydolfin works import glob import os import sys sys.exit(os.system("python pydolfin/demo.py")) syfi-1.0.0.dfsg.orig/tests/python/tests/0000755000175000017500000000000011674103626020056 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/tests/sfc_jit/0000755000175000017500000000000011674103626021477 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/tests/sfc_jit/__init__.py0000644000175000017500000000003011672223006023572 0ustar johannrjohannr from test import test syfi-1.0.0.dfsg.orig/tests/python/tests/sfc_jit/test.py0000755000175000017500000001667011672223006023036 0ustar johannrjohannr#!/usr/bin/env python import unittest import os, sys, glob, shutil, commands import ufl from ufl import FiniteElement from ufl import VectorElement from ufl import TensorElement from ufl import MixedElement from ufl import Argument from ufl import TestFunction from ufl import TrialFunction from ufl import Coefficient from ufl import Constant from ufl import dx, ds import SyFi import newsfc as sfc from dolfin import Mesh, MeshEditor, assemble #import instant #instant.set_logging_level("error") #instant.set_logging_level("warning") #instant.set_logging_level("info") #instant.set_logging_level("debug") def num_integrals(form): return (form.num_cell_integrals(), form.num_exterior_facet_integrals(), form.num_interior_facet_integrals()) cell2dim = { "interval": 1, "triangle": 2, "tetrahedron": 3, "quadrilateral": 2, "hexahedron": 3 } cell2volume = { "interval": 1.0, "triangle": 0.5, "tetrahedron": 1.0/6.0, "quadrilateral": 1.0, "hexahedron": 1.0 } def UnitCell(celltype): tdim = cell2dim[celltype] gdim = tdim mesh = Mesh() editor = MeshEditor() editor.open(mesh, celltype, tdim, gdim) if celltype == "interval": vertices = [(0.0,), (1.0,)] if celltype == "triangle": vertices = [(0.0, 0.0), (1.0, 0.0), (0.0, 1.0)] if celltype == "tetrahedron": vertices = [(0.0, 0.0, 0.0), (1.0, 0.0, 0.0), (0.0, 1.0, 0.0), (0.0, 0.0, 1.0)] if celltype == "quadrilateral": vertices = [(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0)] if celltype == "hexahedron": vertices = [(0.0, 0.0, 0.0), (1.0, 0.0, 0.0), (1.0, 1.0, 0.0), (0.0, 1.0, 0.0), (0.0, 0.0, 1.0), (1.0, 0.0, 1.0), (1.0, 1.0, 1.0), (0.0, 1.0, 1.0)] editor.initVertices(len(vertices)) editor.initCells(1) for i, p in enumerate(vertices): editor.addVertex(i, *p) editor.addCell(0, *range(len(vertices))) editor.close() return mesh def assemble_on_cell(form, celltype, coeffs): "Assemble UFC form on a unit cell mesh and return the result as a float or numpy array." mesh = UnitCell(celltype) A = assemble(form, mesh, coeffs) if isinstance(A, float): return A return A.array() _test_temp_dir = "temp_dir" _done_test_temp_dir = "done_temp_dir" class SFCJitTest(unittest.TestCase): def setUp(self): #print "Running sfc jit test in testdir" #print "Imported SyFi from location", SyFi.__file__ #print "Imported sfc from location", sfc.__file__ # Generate code in a clean directory: shutil.rmtree(_test_temp_dir, ignore_errors=True) os.mkdir(_test_temp_dir) os.chdir(_test_temp_dir) def tearDown(self): dirs = glob.glob("*") os.chdir("..") for d in dirs: os.rename(os.path.join(_test_temp_dir, d), os.path.join(_done_test_temp_dir, d)) def testSetup(self): pass def _testJitVolume(self, polygon): "Test that the integral of 1.0 over a unit cell equals the length/area/volume of the unit cell." c = Constant(polygon) a = c*dx form = sfc.jit(a) self.assertTrue(form.rank() == 0) self.assertTrue(form.num_coefficients() == 1) self.assertTrue(num_integrals(form) == (1,0,0)) A = assemble_on_cell(form, polygon, coeffs=[1.0]) self.assertAlmostEqual(A, cell2volume[polygon]) def testJitVolumeInterval(self): self._testJitVolume("interval") def testJitVolumeTriangle(self): self._testJitVolume("triangle") def testJitVolumeTetrahedron(self): self._testJitVolume("tetrahedron") def _testJitVolumeQuadrilateral(self): # Not supported by dolfin yet self._testJitVolume("quadrilateral") def _testJitVolumeHexahedron(self): # Not supported by dolfin yet self._testJitVolume("hexahedron") def _testJitConstant(self, polygon, degree): """Test that the integral of a constant coefficient over a unit cell mesh equals the constant times the volume of the unit cell.""" element = FiniteElement("CG", polygon, degree) f = Coefficient(element) a = f*dx form = sfc.jit(a) self.assertTrue(form.rank() == 0) self.assertTrue(form.num_coefficients() == 1) self.assertTrue(num_integrals(form) == (1,0,0)) const = 1.23 A = assemble_on_cell(form, polygon, coeffs=[const]) self.assertAlmostEqual(A, const*cell2volume[polygon]) def testJitConstantInterval(self): polygon = "interval" self._testJitConstant(polygon, 1) self._testJitConstant(polygon, 2) def testJitConstantTriangle(self): polygon = "triangle" self._testJitConstant(polygon, 1) self._testJitConstant(polygon, 2) def testJitConstantTetrahedron(self): polygon = "tetrahedron" self._testJitConstant(polygon, 1) self._testJitConstant(polygon, 2) def _testJitConstantQuadrilateral(self): # Not supported by dolfin yet polygon = "quadrilateral" self._testJitConstant(polygon, 1) self._testJitConstant(polygon, 2) def _testJitConstantHexahedron(self): # Not supported by dolfin yet polygon = "hexahedron" self._testJitConstant(polygon, 1) self._testJitConstant(polygon, 2) def testJitSource(self): "Test the source vector." element = FiniteElement("CG", "triangle", 1) v = TestFunction(element) f = Coefficient(element) a = f*v*dx form = sfc.jit(a) self.assertTrue(form.rank() == 1) self.assertTrue(form.num_coefficients() == 1) self.assertTrue(num_integrals(form) == (1,0,0)) A = assemble_on_cell(form, "triangle", coeffs=[3.14]) # TODO: Assert correct result def testJitMass(self): "Test the mass matrix." element = FiniteElement("CG", "triangle", 1) v = TestFunction(element) u = TrialFunction(element) f = Coefficient(element) a = f*u*v*dx form = sfc.jit(a) self.assertTrue(form.rank() == 2) self.assertTrue(form.num_coefficients() == 1) self.assertTrue(num_integrals(form) == (1,0,0)) A = assemble_on_cell(form, "triangle", coeffs=[5.43]) # TODO: Assert correct result def testJitSplitTerms(self): "Test a form split over two foo*dx terms, using the mass matrix." element = FiniteElement("CG", "triangle", 1) v = TestFunction(element) u = TrialFunction(element) f = Coefficient(element) a = u*v*dx + f*u*v*dx form = sfc.jit(a) self.assertTrue(form.rank() == 2) self.assertTrue(form.num_coefficients() == 1) self.assertTrue(num_integrals(form) == (1,0,0)) A = assemble_on_cell(form, "triangle", coeffs=[4.43]) # TODO: Assert correct result def test(verbosity=0): shutil.rmtree(_done_test_temp_dir, ignore_errors=True) os.mkdir(_done_test_temp_dir) classes = [SFCJitTest] suites = [unittest.makeSuite(c) for c in classes] testsuites = unittest.TestSuite(suites) unittest.TextTestRunner(verbosity=verbosity).run(testsuites) if __name__ == "__main__": test() syfi-1.0.0.dfsg.orig/tests/python/tests/templatetestdir/0000755000175000017500000000000011674103626023270 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/tests/templatetestdir/__init__.py0000644000175000017500000000003011672223006025363 0ustar johannrjohannr from test import test syfi-1.0.0.dfsg.orig/tests/python/tests/templatetestdir/test.py0000755000175000017500000000206411672223006024617 0ustar johannrjohannr#!/usr/bin/env python import unittest import SyFi import sfc class MyTest(unittest.TestCase): def setUp(self): # initialize stuff #debug("setUp") print "Running templatetest in testdir" print "Imported SyFi from location", SyFi.__file__ print "Imported sfc from location", sfc.__file__ self.foo = 1 def tearDown(self): # delete initialized stuff #debug("tearDown") del self.foo def testSetup(self): # test initialized stuff #debug("testSetup") assert self.foo def testMyStuff(self): # test whatever meant by "MyStuff" #debug("testMyStuff") assert 1 def testFailureExample(self): assert 1 #assert 0 # uncomment to see how a failure looks like def test(verbosity=0): classes = [MyTest] suites = [unittest.makeSuite(c) for c in classes] testsuites = unittest.TestSuite(suites) unittest.TextTestRunner(verbosity=verbosity).run(testsuites) if __name__ == "__main__": test() syfi-1.0.0.dfsg.orig/tests/python/tests/README0000644000175000017500000000362711672223006020737 0ustar johannrjohannr QUICKSTART: Adding new tests: - The recommended way to add a new test is to copy templatetestdir/ to 'yourtestname' and modify the test.py file in the new directory. Then add 'yourtestname' alongside the other tests in runall.py and runall.sh. If you don't, your new test can still be run separately, but it won't be part of the complete testsuite and is more likely to be ignored by other developers. A further explanation of these scripts is as follows: - run.py is a script used to run other Python scripts with tests with some commandline options. It takes the following command line arguments: ./run.py --name=testname --verbosity=0 --local=0 The testname is the name of the python module to run as a test. F.ex. 'mytest' to import mytest.py, or 'othertest' to import othertest/__init__.py. This module must have defined a function 'test' with one argument, the verbosity. Increasing the verbosity parameter results in more textual output during the tests. The final parameter 'local' can be set to 0 or 1, and if 1 it will add the locally built (uninstalled) SyFi and sfc modules to the import path. Thus run.py can be used to run the other tests with the installed version of SyFi and the newest local build by simply switching one parameter. The default verbosity is 0, default name is 'runall', and default 'local' value is 0. - runall.py is a script that defines a function test, where other tests defined in python can be added to run all tests in sequence. When adding new tests, they must be added here manually. - runall.sh is a bash script that calls ./run.py with each test in sequence, giving each test module its own fresh python environment. The reason for this is that there are some global state variables in both GiNaC, SyFi, and sfc, the effect of which should be isolated from the test runs. When adding new tests, they must be added here manually. syfi-1.0.0.dfsg.orig/tests/python/tests/sfc_callbacks/0000755000175000017500000000000011674103626022630 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/tests/sfc_callbacks/callback_forms.py0000755000175000017500000002571411672223006026151 0ustar johannrjohannr#!/usr/bin/env python from swiginac import * import sfc from sfc import * from sfc.symbolic_utils import * import sfc.common.options from sfc.common.utilities import get_callable_name # ----------------------------------------------- Scalar forms: def constant_scalar(itg): """a(;) = \int 1 dx""" return numeric(1) def L2_scalar(w, itg): """a(;w) = \int w^2 dx""" return inner(w, w) def H1_semi_scalar(w, itg): """a(;w) = \int grad(w)^2 dx""" GinvT = itg.GinvT() Dw = grad(w, GinvT) return inner(Dw, Dw) def H1_scalar(w, itg): """a(;w) = \int w^2 + grad(w)^2 dx""" GinvT = itg.GinvT() Dw = grad(w, GinvT) return inner(w, w) + inner(Dw, Dw) scalar_forms = [constant_scalar, L2_scalar, H1_semi_scalar, H1_scalar] # ----------------------------------------------- Vector forms: def constant_vector(v, itg): """a(v;) = \int 1 dx""" return numeric(1) def constant_source_vector(v, itg): """a(v;) = \int v dx""" return v def source_vector(v, f, itg): """a(v; f) = \int f . v dx""" return inner(f, v) vector_forms = [constant_vector, constant_source_vector, source_vector] # ----------------------------------------------- Vector boundary forms: def load_vector(v, t, itg): """a(v; t) = \int t . v dx""" return inner(t, v) # ----------------------------------------------- Matrix forms: def constant_matrix(v, u, itg): """a(v, u; ) = \int 1 dx""" return numeric(1) def mass_matrix(v, u, itg): """a(v, u; ) = \int u . v dx""" return inner(v, u) def mass_with_c_matrix(v, u, c, itg): """a(v, u; c) = \int c (u . v) dx""" return c * inner(v, u) def stiffness_matrix(v, u, itg): GinvT = itg.GinvT() Du = grad(u, GinvT) Dv = grad(v, GinvT) return inner(Du, Dv) def stiffness_with_M_matrix(v, u, M, itg): GinvT = itg.GinvT() Du = grad(u, GinvT) Dv = grad(v, GinvT) return inner(M * Du, Dv) matrix_forms = [constant_matrix, mass_matrix, mass_with_c_matrix, stiffness_matrix, stiffness_with_M_matrix] # ----------------------------------------------- Boundary matrix forms: def mass_boundary_matrix(v, u, itg): """a(v, u; ) = \int u . v ds""" return inner(v, u) # ----------------------------------------------- Testing: if __name__ == "__main__": import sys sfc.common.options.add_debug_code = False sfc.common.options.print_options() args = set(sys.argv[1:]) print_forms = True if "p" in args else False generate = True if "g" in args else False compile = True if "c" in args else False def check(form): form.sanity_check() if print_forms: print form if generate or compile: if compile: compiled_form = compile_form(form) print "Successfully compiled form:" print compiled_form print dir(compiled_form) else: res = write_ufc_code(form) print "Successfully generated form code:" print res quad_order = 3 formcount = 0 def form_name(callback): global formcount name = "form_%s_%d" % (get_callable_name(callback), formcount) formcount += 1 return name for nsd in [2, 3]: polygon = { 2: "triangle", 3: "tetrahedron" }[nsd] print "Using polygon = ", polygon fe0 = FiniteElement("P0", polygon, 0) fe1 = FiniteElement("Lagrange", polygon, 1) fe2 = FiniteElement("Lagrange", polygon, 2) scalar_elements = [fe0, fe1, fe2] vfe0 = VectorElement("P0", polygon, 0) vfe1 = VectorElement("Lagrange", polygon, 1) vfe2 = VectorElement("Lagrange", polygon, 2) vector_elements = [vfe0, vfe1, vfe2] tfe0 = TensorElement("P0", polygon, 0) tfe1 = TensorElement("Lagrange", polygon, 1) tfe2 = TensorElement("Lagrange", polygon, 2) tensor_elements = [tfe0, tfe1, tfe2] # quicker, for debugging: scalar_elements = [fe1] vector_elements = [vfe1] tensor_elements = [tfe1] all_elements = scalar_elements + vector_elements + tensor_elements for symbolic in [False, True]: print "Using symbolic = ", symbolic options = { "symbolic": symbolic, "quad_order": quad_order } # creating scalar callback forms: print "Testing scalar forms" for fe in all_elements: callback = L2_scalar basisfunctions = [] coefficients = [Function(fe)] form = Form(name=form_name(callback), basisfunctions=basisfunctions, coefficients=coefficients, cell_integrands=[callback], options=options) check(form) for fe in scalar_elements + vector_elements: callback = H1_semi_scalar basisfunctions = [] coefficients = [Function(fe)] form = Form(name=form_name(callback), basisfunctions=basisfunctions, coefficients=coefficients, cell_integrands=[callback], options=options) check(form) callback = H1_scalar basisfunctions = [] coefficients = [Function(fe)] form = Form(name=form_name(callback), basisfunctions=basisfunctions, coefficients=coefficients, cell_integrands=[callback], options=options) check(form) # creating vector callback forms: print "Testing vector forms" for fe in all_elements: callback = constant_vector basisfunctions = [TestFunction(fe)] coefficients = [] form = Form(name=form_name(callback), basisfunctions=basisfunctions, coefficients=coefficients, cell_integrands=[callback], options=options) check(form) for fe in scalar_elements: callback = constant_source_vector basisfunctions = [TestFunction(fe)] coefficients = [] form = Form(name=form_name(callback), basisfunctions=basisfunctions, coefficients=coefficients, cell_integrands=[callback], options=options) check(form) for fe in scalar_elements: for f_fe in scalar_elements: callback = source_vector basisfunctions = [TestFunction(fe)] coefficients = [Function(f_fe)] form = Form(name=form_name(callback), basisfunctions=basisfunctions, coefficients=coefficients, cell_integrands=[callback], options=options) check(form) callback = load_vector basisfunctions = [TestFunction(fe)] coefficients = [Function(f_fe)] form = Form(name=form_name(callback), basisfunctions=basisfunctions, coefficients=coefficients, exterior_facet_integrands=[callback], options=options) check(form) for fe in vector_elements: for f_fe in vector_elements: callback = source_vector basisfunctions = [TestFunction(fe)] coefficients = [Function(f_fe)] form = Form(name=form_name(callback), basisfunctions=basisfunctions, coefficients=coefficients, cell_integrands=[callback], options=options) check(form) callback = load_vector basisfunctions = [TestFunction(fe)] coefficients = [Function(f_fe)] form = Form(name=form_name(callback), basisfunctions=basisfunctions, coefficients=coefficients, exterior_facet_integrands=[callback], options=options) check(form) for fe in tensor_elements: for f_fe in tensor_elements: callback = source_vector basisfunctions = [TestFunction(fe)] coefficients = [Function(f_fe)] form = Form(name=form_name(callback), basisfunctions=basisfunctions, coefficients=coefficients, cell_integrands=[callback], options=options) check(form) callback = load_vector basisfunctions = [TestFunction(fe)] coefficients = [Function(f_fe)] form = Form(name=form_name(callback), basisfunctions=basisfunctions, coefficients=coefficients, exterior_facet_integrands=[callback], options=options) check(form) # creating matrix callback forms: print "Testing matrix forms" for fe in all_elements: callback = constant_matrix basisfunctions = [TestFunction(fe), TrialFunction(fe)] coefficients = [] form = Form(name=form_name(callback), basisfunctions=basisfunctions, coefficients=coefficients, cell_integrands=[callback], options=options) check(form) callback = mass_matrix basisfunctions = [TestFunction(fe), TrialFunction(fe)] coefficients = [] form = Form(name=form_name(callback), basisfunctions=basisfunctions, coefficients=coefficients, cell_integrands=[callback], options=options) check(form) callback = mass_boundary_matrix basisfunctions = [TestFunction(fe), TrialFunction(fe)] coefficients = [] form = Form(name=form_name(callback), basisfunctions=basisfunctions, coefficients=coefficients, exterior_facet_integrands=[callback], options=options) check(form) for c_fe in scalar_elements: callback = mass_with_c_matrix basisfunctions = [TestFunction(fe), TrialFunction(fe)] coefficients = [Function(c_fe)] form = Form(name=form_name(callback), basisfunctions=basisfunctions, coefficients=coefficients, cell_integrands=[callback], options=options) check(form) for fe in scalar_elements + vector_elements: callback = stiffness_matrix basisfunctions = [TestFunction(fe), TrialFunction(fe)] coefficients = [] form = Form(name=form_name(callback), basisfunctions=basisfunctions, coefficients=coefficients, cell_integrands=[callback], options=options) check(form) for M_fe in scalar_elements + tensor_elements: callback = stiffness_with_M_matrix basisfunctions = [TestFunction(fe), TrialFunction(fe)] coefficients = [Function(M_fe)] form = Form(name=form_name(callback), basisfunctions=basisfunctions, coefficients=coefficients, cell_integrands=[callback], options=options) check(form) syfi-1.0.0.dfsg.orig/tests/python/tests/sfc_callbacks/__init__.py0000644000175000017500000000010011672223006024721 0ustar johannrjohannr def test(verbosity=0): print "No test here, in", __file__ syfi-1.0.0.dfsg.orig/tests/python/tests/sfc_callbacks/clean.sh0000755000175000017500000000015111672223006024237 0ustar johannrjohannr#!/bin/bash echo rm -rf sfc_form_* rm -rf sfc_form_* echo rm -f generated_code/* rm -f generated_code/* syfi-1.0.0.dfsg.orig/tests/python/tests/sfc_callbacks/scratch.py0000644000175000017500000001442211672223006024625 0ustar johannrjohannr def boundary_callback(u, v, data): GinvT = data.GinvT() n = data.n() Du = grad(u, GinvT) return inner(inner(n, Du), v) # example low level forms: def mass_v0(itg): """Compact version""" for i in range(itg.num_v_dofs(0)): for j in range(itg.num_v_dofs(1)): itg.A[(i,j)] = inner( itg.v_basis(0, i), itg.v_basis(1, j) ) def mass_v1(itg): """More elaborate version""" for i in range(itg.num_v_dofs(0)): for j in range(itg.num_v_dofs(1)): u = itg.v_basis(0, i) v = itg.v_basis(1, j) itg.A[(i,j)] = inner(u, v) def mass_v2(itg): """'Jacobi' version""" dofs = itg.w_dofs(0) usum = itg.w_sum(0) for i in range(itg.num_v_dofs(0)): for j in range(itg.num_v_dofs(1)): u = diff(usum, dofs[i]) v = itg.v_basis(1, j) itg.A[(i,j)] = inner(u, v) def stiffness_v1(itg): """symbolic-grad-version""" GinvT = itg.GinvT() for i in range(itg.num_v_dofs(0)): for j in range(itg.num_v_dofs(1)): u = itg.v_basis(0, i) v = itg.v_basis(1, j) Du = grad(u, GinvT) Dv = grad(v, GinvT) #Du = itg.add_token(Du) # TODO: do it like this? #Dv = itg.add_token(Dv) itg.A[(i,j)] = inner(Du, Dv) def stiffness_v2(itg): """'Manual Jacobi' version""" GinvT = itg.GinvT() dofs = itg.w_dofs(0) usum = itg.w_sum(0) Du = grad(usum, GinvT) for i in range(itg.num_v_dofs(0)): for j in range(itg.num_v_dofs(1)): v = itg.v_basis(1, j) Dv = grad(v, GinvT) integrand = inner(Du, Dv) itg.A[(i,j)] = diff(integrand, dofs[i]) # example prototype forms for alternate syntax: def stiffness_short(itg): """alternative short version""" print "Non-working prototype!" #f, g = itg.w_sums(0, 1) # TODO: do it like this? for (i, j) in itg.indices: u, v = itg.v_basis_functions(i, j) # TODO: do it like this? Du, Dv = itg.v_basis_function_gradients(i, j) # TODO: do it like this? itg.A[(i,j)] = inner(Du, Dv) def stiffness_v0(itg): """grad-from-itg-version""" print "Non-working prototype!" for i in range(itg.num_v_dofs(0)): for j in range(itg.num_v_dofs(1)): u = itg.v_basis(0, i) v = itg.v_basis(1, j) Du = itg.grad_v(0, i) # TODO: do it like this? Dv = itg.grad_v(1, j) itg.A[(i,j)] = inner(Du, Dv) # example nonlinear forms for automatic Jacobi creation: def nonlinear_boundary_F(itg): """F_i(w,f) = \int_\dOmega f(x) e^{t \cdot u(x)} (n \cdot grad u) v_i(x) ds Coefficients: w (u from last iteration) f """ GinvT = itg.GinvT() n = itg.n() t = itg.t() w = itg.w_sum(0) f = itg.w_sum(1) Dw = grad(w, GinvT) nDw = inner(n, Dw) wn = inner(n, w) wt = inner(t, w) exp_wt = exp( wt ) assert isinstance(n, matrix) assert isinstance(w, matrix) assert n.nops() == w.nops() assert not isinstance(wn.evalm(), matrix) assert not isinstance(wt.evalm(), matrix) tmp = f * exp_wt * nDw for i in range(itg.num_v_dofs(0)): v = itg.v_basis(0, i) itg.A[(i,)] = inner(tmp, v) def nonlinear_F(itg): """Nonlinear test form F_i(w) = \int_\Omega w^2(x) w(x) v_i(x) dx]""" w = itg.w_sum(0) w2 = inner(w, w) for i in range(itg.num_v_dofs(0)): v = itg.v_basis(0, i) itg.A[(i,)] = w2 * inner(w, v) def stiffness_with_tokens_matrix(u, v, M, data): GinvT = data.GinvT() Du = grad(u, GinvT) Dv = grad(v, GinvT) # create manual temporary variables: Du = data.add_token("Du", Du) Dv = data.add_token("Dv", Dv) return inner(M * Du, Dv) if __name__ == "__main__": print_forms = False print_forms = True nsd = 2 SyFi.initSyFi(nsd) polygon = SyFi.ReferenceTriangle() fe0 = SyFi.P0(polygon) fe1 = SyFi.Lagrange(polygon, 1) fe2 = SyFi.Lagrange(polygon, 2) vfe0 = SyFi.VectorP0(polygon) vfe1 = SyFi.VectorLagrange(polygon, 1) vfe2 = SyFi.VectorLagrange(polygon, 2) tfe0 = SyFi.TensorP0(polygon) tfe1 = SyFi.TensorLagrange(polygon, 1) tfe2 = SyFi.TensorLagrange(polygon, 2) fe_list = [fe1, fe1] #form = UserForm(rank=2, num_coefficients=0, name="mass", fe_list=fe_list, symbolic=False, quad_order=3) form = UserForm(rank=2, num_coefficients=0, name="mass", fe_list=fe_list, symbolic=True, quad_order=-1) if print_forms: print form form.sanity_check() citg = form.cell_integral() mass_v0(citg) if print_forms: print form form.sanity_check() # testing callback version of user interface: fe_list = [fe1, fe1] form = CallbackForm(name="mass", rank=2, num_coefficients=0, fe_list=fe_list, symbolic=True, quad_order=-1, cell_integrands=[mass_callback]) if print_forms: print form form.sanity_check() fe_list = [vfe1, vfe1, fe0] mf = CallbackForm(name="mass_with_c", rank=2, num_coefficients=1, fe_list=fe_list, symbolic=True, quad_order=-1, cell_integrands=[mass_with_c_callback]) if print_forms: print mf fe_list = [vfe1, vfe1, tfe0] form = CallbackForm(rank=2, fe_list=fe_list, symbolic=True, quad_order=-1, cell_integrands=[stiffness_with_M_callback]) if print_forms: print form form.sanity_check() fe_list = [fe2, fe2] form = CallbackForm(rank=2, fe_list=fe_list, symbolic=True, quad_order=-1, exterior_facet_integrands=[boundary_callback]) if print_forms: print form form.sanity_check() # testing coefficient counting fe_list = [fe1, fe0, fe2] form = UserForm(rank=0, num_coefficients=3, fe_list=fe_list) itg = form.cell_integral() if print_forms: print form form.sanity_check() # testing Jacobi version of user interface: fe_list = [vfe1, vfe1, fe0] F = UserForm(rank=1, num_coefficients=2, name="F", fe_list=fe_list, symbolic=True, quad_order=-1) itg = F.cell_integral() nonlinear_F(itg) itg.sanity_check() itg = F.exterior_facet_integral() nonlinear_boundary_F(itg) if print_forms: print F itg.sanity_check() J = Jacobi(F) if print_forms: print J J.sanity_check() syfi-1.0.0.dfsg.orig/tests/python/tests/SyFi_polygons/0000755000175000017500000000000011674103626022662 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/tests/SyFi_polygons/__init__.py0000644000175000017500000000003011672223006024755 0ustar johannrjohannr from test import test syfi-1.0.0.dfsg.orig/tests/python/tests/SyFi_polygons/spacetimedomain.py0000644000175000017500000000020311672223006026362 0ustar johannrjohannr from swiginac import * from SyFi import * initSyFi(2) l = ReferenceLine() t = ReferenceTriangle() sd = SpaceTimeDomain(l, t) syfi-1.0.0.dfsg.orig/tests/python/tests/SyFi_polygons/test.py0000755000175000017500000000160211672223006024206 0ustar johannrjohannr#!/usr/bin/env python import unittest import SyFi class MyTest(unittest.TestCase): def setUp(self): # initialize stuff #debug("setUp") self.foo = 1 def tearDown(self): # delete initialized stuff #debug("tearDown") del self.foo def testSetup(self): # test initialized stuff #debug("testSetup") assert self.foo def testMyStuff(self): # test whatever meant by "MyStuff" #debug("testMyStuff") assert 1 def testFailureExample(self): assert 1 #assert 0 # uncomment to see how a failure looks like def test(verbosity=0): classes = [MyTest] suites = [unittest.makeSuite(c) for c in classes] testsuites = unittest.TestSuite(suites) unittest.TextTestRunner(verbosity=verbosity).run(testsuites) if __name__ == "__main__": test() syfi-1.0.0.dfsg.orig/tests/python/tests/demos/0000755000175000017500000000000011674103626021165 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/tests/demos/crouzeixraviart.py0000644000175000017500000000302111672223006024765 0ustar johannrjohannr#!/usr/bin/python from swiginac import * from SyFi import * initSyFi(3) x = cvar.x; y = cvar.y; z = cvar.z # fetch some global variables class CrouzeixRaviart: """ Python implementation of the Crouzeix-Raviart element. The corresponding C++ implementation is in the file CrouzeixRaviart.cpp. """ def __init__(self, polygon): """ Constructor """ self.Ns = [] self.dofs = [] self.polygon = polygon self.compute_basis_functions() def compute_basis_functions(self): """ Compute the basis functions and degrees of freedom and put them in Ns and dofs, respectively. """ polspace = bernstein(1,triangle,"a") N = polspace[0] variables = polspace[1] for i in range(0,3): line = triangle.line(i) dofi = line.integrate(N) self.dofs.append(dofi) for i in range(0,3): equations = [] for j in range(0,3): equations.append(relational(self.dofs[j], dirac(i,j))) sub = lsolve(equations, variables) Ni = N.subs(sub) self.Ns.append(Ni); def N(self,i): return self.Ns[i] def dof(self,i): return self.dofs[i] def nbf(self): return len(self.Ns) p0 = [0,0,0]; p1 = [1,0,0]; p2 = [0,1,0]; triangle = Triangle(p0, p1, p2) fe = CrouzeixRaviart(triangle) fe.compute_basis_functions() print fe.nbf() for i in range(0,fe.nbf()): print "N(%d) = "%i, fe.N(i).eval().printc() print "grad(N(%d)) = "%i, grad(fe.N(i)).eval().printc() print "dof(%d) = "%i, fe.dof(i).eval().printc() syfi-1.0.0.dfsg.orig/tests/python/tests/demos/__init__.py0000644000175000017500000000010011672223006023256 0ustar johannrjohannr def test(verbosity=0): print "No test here, in", __file__ syfi-1.0.0.dfsg.orig/tests/python/tests/demos/geom_test.py0000644000175000017500000000364611672223006023527 0ustar johannrjohannr from swiginac import * from SyFi import * from sfc.integral_tools import geometry_mapping from sfc.symbolic_utils import symbol, symbols initSyFi(2) x =cvar.x; y =cvar.y triangle = Triangle([1.3, 1.3], [2.4,2.1], [1.4, 2.8]) G, x0 = geometry_mapping(triangle) print G*matrix(2,1, [0,0]) + x0 print G*matrix(2,1, [1,0]) + x0 print G*matrix(2,1, [0,1]) + x0 Ginv = G.inverse() print Ginv*(matrix(2,1, [1.3,1.3]) - x0) print Ginv*(matrix(2,1, [2.4,2.1]) - x0) print Ginv*(matrix(2,1, [1.4,2.8]) - x0) fe = Lagrange(triangle) print "global fe.N(0) ", fe.N(0) reference_triangle = ReferenceTriangle() reference_fe = Lagrange(reference_triangle) xi0, xi1 = symbol("xi0"), symbol("xi1") N0 = reference_fe.N(0).subs( [x == xi0, y == xi1] ) #xi = matrix(2,1,[xi0, xi1]) p = matrix(2,1,[x, y]) xi = Ginv*(p - x0) N0 = reference_fe.N(0).subs( [xi == xi[0,0], xi1 == xi[1,0]] ) print "fe.N(0) ", fe.N(0) print "3D" initSyFi(3) x =cvar.x; y =cvar.y; z = cvar.z tetrahedron = Tetrahedron([1.3, 1.3, 1.3], [2.4, 2.1, 2.2 ], [1.4, 2.8, 1.3], [1.5, 1.3, 3.0]) G, x0 = geometry_mapping(tetrahedron) print "G ", G print "x0 ", x0 print G*matrix(3,1, [0,0,0]) + x0 print G*matrix(3,1, [1,0,0]) + x0 print G*matrix(3,1, [0,1,0]) + x0 print G*matrix(3,1, [0,0,1]) + x0 Ginv = G.inverse() print Ginv*(matrix(3,1, [1.3,1.3,1.3]) - x0) print Ginv*(matrix(3,1, [2.4,2.1,2.2]) - x0) print Ginv*(matrix(3,1, [1.4,2.8,1.3]) - x0) print Ginv*(matrix(3,1, [1.5,1.3,3.0]) - x0) fe = Lagrange(tetrahedron) print "global fe.N(0) ", fe.N(0) reference_tetrahedron= ReferenceTetrahedron() reference_fe = Lagrange(reference_tetrahedron) xi0, xi1, xi2 = symbol("xi0"), symbol("xi1"), symbol("xi2") N0 = reference_fe.N(0).subs( [x == xi0, y == xi1, z == xi2] ) #xi = matrix(2,1,[xi0, xi1]) p = matrix(3,1,[x,y,z]) xi = Ginv*(p - x0) N0 = reference_fe.N(0).subs( [xi == xi[0,0], xi1 == xi[1,0], xi2 == xi[2,0]] ) print "fe.N(0) ", fe.N(0) syfi-1.0.0.dfsg.orig/tests/python/tests/demos/poisson1.py0000644000175000017500000000060711672223006023306 0ustar johannrjohannr#!/usr/bin/python from swiginac import * from SyFi import * p0 = [0,0,0]; p1 = [1,0,0]; p2 = [0,1,0] triangle = Triangle(p0, p1, p2) fe = Lagrange(triangle,4) print fe.nbf() for i in range(0,fe.nbf()): for j in range(0,fe.nbf()): integrand = inner(grad(fe.N(i)),grad(fe.N(j))) Aij = triangle.integrate(integrand) print "A(%d,%d)="%(i,j), Aij.eval() syfi-1.0.0.dfsg.orig/tests/python/tests/demos/time_element_test.py0000644000175000017500000000116011672223006025234 0ustar johannrjohannr from swiginac import * from SyFi import * t = ReferenceLine() triangle = ReferenceTriangle() fe = Lagrange(triangle, 2) space_time_domain = SpaceTimeDomain(t, triangle) space_time_fe = SpaceTimeElement(t, 3, fe) for i in range(0, space_time_fe.nbf()): print "fe.N(%d)= %s " % (i, space_time_fe.N(i)) print "fe.dof(%d)= %s " % (i, space_time_fe.dof(i)) for i in range(0, space_time_fe.nbf()): for j in range(0, space_time_fe.nbf()): integrand = space_time_fe.N(i)*space_time_fe.N(j) Aij = space_time_domain.integrate(integrand) print "A[%d, %d] = %s " % (i,j, Aij) syfi-1.0.0.dfsg.orig/tests/python/tests/demos/simple2.py0000644000175000017500000000060711672223006023106 0ustar johannrjohannr#!/usr/bin/python from swiginac import * from SyFi import * initSyFi(2) p0 = [0,0]; p1 = [1,0]; p2 = [0,1] triangle = Triangle(p0, p1, p2) fe = Lagrange() fe.set_order(4) fe.set_polygon(triangle) fe.compute_basis_functions() print fe.nbf() for i in range(0,fe.nbf()): print "N(%d)="%i, fe.N(i).eval() print "grad(N(%d))="%i, grad(fe.N(i)) print "dof(%d)="%i, fe.dof(i) syfi-1.0.0.dfsg.orig/tests/python/tests/demos/test_integration.py0000644000175000017500000000465511672223006025124 0ustar johannrjohannr from swiginac import * from SyFi import * from sfc.integral_tools import integral, geometry_mapping from sfc.symbolic_utils import symbol, symbols setDigits(5) print "" print "--------- 1D -----------------" print "" initSyFi(1) x = symbol("x") t = ReferenceLine() f = x*x*x print "symbolic integral of ",f," on reference line ", integral(t,f, True) print "numerical integral of ",f," on reference line ", integral(t,f, False,3) print "" print "--------- 2D -----------------" print "" initSyFi(2) x, y = symbols("xy") t = ReferenceTriangle() print "symbolic integral of ",f," on reference triangle ", integral(t,f, True) print "numerical integral of ",f," on reference triangle ", integral(t,f, False,3) print "" print "--------- 3D -----------------" print "" initSyFi(3) x, y, z = symbols("xyz") f = 3.7*x - 2.8*y + 7.4*z + 3.14 t = ReferenceTetrahedron() print "symbolic integral of ",f," on reference tetrahedron ", integral(t,f, True) print "numerical integral of ",f," on reference tetrahedron ", integral(t,f, False,3) print "" print "--------- 2D -----------------" print "" f = 3.7*x - 2.8*y + 3.14 initSyFi(2) x, y = symbols("xy") t = Triangle([1.3, 1.3], [2.4,2.1], [1.4, 2.8]) G, x0 = geometry_mapping(t) detG = G.determinant() fe = Lagrange(t) integrand = fe.N(0)*f print "" print "integral of ",f," on global triangle ", integral(t, integrand, True, 3) print "" xi0 = symbol("xi0"); xi1 = symbol("xi1") tr = ReferenceTriangle() fe = Lagrange(tr) N0 = fe.N(0).subs( [x == xi0, y == xi1] ) integrand = N0*f print "symbolic integral of ",f," on global triangle", integral(t, integrand, True, 1) print "numeric integral of ",f," on global triangle", integral(t, integrand, False, 2) print "" print "--------- 3D -----------------" print "" f = 3.7*x - 2.8*y + 7.4*z + 3.14 initSyFi(3) x, y, z = symbols("xyz") t = Tetrahedron([1.3, 1.3, 1.3], [2.4, 1.1, 1.2 ], [1.4, 2.8, 1.3], [1.5, 1.3, 3.0]) G, x0 = geometry_mapping(t) detG = G.determinant() fe = Lagrange(t) integrand = fe.N(0)*f print "integral of ",f," on global tetrahedron ", integral(t, integrand, True, 3) xi0 = symbol("xi0"); xi1 = symbol("xi1"); xi2 = symbol("xi2") tr = ReferenceTetrahedron() fe = Lagrange(tr) N0 = fe.N(0).subs( [x == xi0, y == xi1, z == xi2] ) print "symbolic integral of ",f," on global tetrahedron", integral(t, integrand, True, 1) print "numeric integral of ",f," on global tetrahedron", integral(t, integrand, False, 3) syfi-1.0.0.dfsg.orig/tests/python/tests/demos/simple.py0000644000175000017500000000017411672223006023023 0ustar johannrjohannrfrom swiginac import * x = symbol("x") y = symbol("y") f = sin(x) print "f = ", f dfdx = diff(f,x) print "dfdx = ", dfdx syfi-1.0.0.dfsg.orig/tests/python/tests/sfc_commandline/0000755000175000017500000000000011674103626023177 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/tests/sfc_commandline/__init__.py0000644000175000017500000000003011672223006025272 0ustar johannrjohannr from test import test syfi-1.0.0.dfsg.orig/tests/python/tests/sfc_commandline/test.py0000755000175000017500000000236311672223006024530 0ustar johannrjohannr#!/usr/bin/env python import unittest import os, sys, glob, shutil, commands import SyFi import sfc _test_temp_dir = "temp_dir" class SFCCommandlineTest(unittest.TestCase): def setUp(self): print "Running templatetest in testdir" print "Imported SyFi from location", SyFi.__file__ print "Imported sfc from location", sfc.__file__ shutil.rmtree(_test_temp_dir, ignore_errors=True) os.mkdir(_test_temp_dir) os.chdir(_test_temp_dir) def tearDown(self): os.chdir("..") #shutil.rmtree(_test_temp_dir, ignore_errors=True) def testForms(self): forms = glob.glob("../forms/*.form") for f in forms: #cmd = "sfc -o %s %s" % (_test_temp_dir, f) cmd = "sfc %s" % f status, output = commands.getstatusoutput(cmd) self.assertTrue(status == 0) #def testFailureExample(self): # assert 1 # #assert 0 # uncomment to see how a failure looks like def test(verbosity=0): classes = [SFCCommandlineTest] suites = [unittest.makeSuite(c) for c in classes] testsuites = unittest.TestSuite(suites) unittest.TextTestRunner(verbosity=verbosity).run(testsuites) if __name__ == "__main__": test() syfi-1.0.0.dfsg.orig/tests/python/tests/sfc_commandline/forms/0000755000175000017500000000000011674103626024325 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/tests/sfc_commandline/forms/convection_jacobi2.form0000644000175000017500000000026611672223006030747 0ustar johannrjohannr element = VectorElement("Lagrange", "triangle", 1) u = TrialFunction(element) v = TestFunction(element) w = Function(element) b = (u[j]*w[i].dx(j) + w[j]*u[i].dx(j)) * v[i] * dx syfi-1.0.0.dfsg.orig/tests/python/tests/sfc_commandline/forms/convection_jacobi.form0000644000175000017500000000026511672223006030664 0ustar johannrjohannr element = VectorElement("Lagrange", "triangle", 1) u = TrialFunction(element) v = TestFunction(element) w = Function(element) b = dot(dot(u, grad(w)) + dot(w, grad(u)), v) * dx syfi-1.0.0.dfsg.orig/tests/python/tests/sfc_commandline/forms/L2norm.form0000644000175000017500000000013111672223006026347 0ustar johannrjohannr element = FiniteElement("Lagrange", "triangle", 1) f = Function(element) a = f**2*dx syfi-1.0.0.dfsg.orig/tests/python/tests/sfc_commandline/forms/stiffness.form0000644000175000017500000000021111672223006027201 0ustar johannrjohannr element = FiniteElement("Lagrange", "triangle", 1) u = TrialFunction(element) v = TestFunction(element) a = dot(grad(u), grad(v))*dx syfi-1.0.0.dfsg.orig/tests/python/tests/sfc_commandline/forms/H1norm.form0000644000175000017500000000016611672223006026352 0ustar johannrjohannr element = FiniteElement("Lagrange", "triangle", 1) f = Function(element) a = ( f*f + dot(grad(f), grad(f)) ) * dx syfi-1.0.0.dfsg.orig/tests/python/tests/sfc_commandline/forms/source.form0000644000175000017500000000016211672223006026502 0ustar johannrjohannr element = FiniteElement("Lagrange", "triangle", 1) v = TestFunction(element) f = Function(element) a = f*v*dx syfi-1.0.0.dfsg.orig/tests/python/tests/sfc_commandline/forms/mass.form0000644000175000017500000000016711672223006026152 0ustar johannrjohannr element = FiniteElement("Lagrange", "triangle", 1) u = TrialFunction(element) v = TestFunction(element) a = u*v*dx syfi-1.0.0.dfsg.orig/tests/python/tests/sfc_commandline/forms/explicit_convection.form0000644000175000017500000000024511672223006031254 0ustar johannrjohannr element = VectorElement("Lagrange", "triangle", 1) u = TrialFunction(element) v = TestFunction(element) w = Function(element) a = dot( dot(w, grad(u)), v ) * dx syfi-1.0.0.dfsg.orig/tests/python/tests/sfc_commandline/forms/convection_vector.form0000644000175000017500000000021211672223006030727 0ustar johannrjohannr element = VectorElement("Lagrange", "triangle", 1) v = TestFunction(element) w = Function(element) a = dot( dot(w, grad(w)), v ) * dx syfi-1.0.0.dfsg.orig/tests/python/tests/run.py0000755000175000017500000000136311672223006021233 0ustar johannrjohannr#!/usr/bin/env python """ Usage: ./localrun.py --name=mytestmodulename --verbosity=[0|1|...|N] --local=[0|1] """ import sys # get commandline options import getopt longoptions = ["name=", "verbosity=", "local="] opt, args = getopt.getopt(sys.argv[1:], "", longoptions) # set default options name = "runall" verbosity = 0 local = 0 # override defaults if provided for o in opt: oname = o[0].strip("-") s = "%s = %s.__class__(%s)" % (oname, oname, repr(o[1])) exec(s) # optionally use the local uninstalled SyFi and sfc modules if local: import os.path as p syfipath = p.abspath( p.join(p.curdir, p.pardir) ) sys.path.insert(0, syfipath) # import module and run test m = __import__(name) m.test(verbosity) syfi-1.0.0.dfsg.orig/tests/python/tests/runall.py0000755000175000017500000000121211672223006021715 0ustar johannrjohannr#!/usr/bin/env python """ Intention: Import and run a comprehensive default set of tests. Problem: Tests may depend on the global state of the python modules SyFi and sfc, in which case they should be called from the runall.sh script instead. """ # TODO: to include more tests, add them to # 1) the import list below # 2) the call list in test() below import templatetestdir import codeformatting #import misc import sfc_callbacks def test(verbosity=0): templatetestdir.test(verbosity) codeformatting.test(verbosity) #misc.test(verbosity) sfc_callbacks.test(verbosity) if __name__ == "__main__": test() syfi-1.0.0.dfsg.orig/tests/python/tests/sympy_test/0000755000175000017500000000000011674103626022276 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/tests/sympy_test/sympy_test.py0000644000175000017500000000066211672223006025065 0ustar johannrjohannr from fem_sympy import * t = ReferenceSimplex(2) fe = Lagrange(2,5) u = 0 #compute u = sum_i u_i N_i us = [] for i in range(0, fe.nbf()): ui = Symbol("u_%d" % i) us.append(ui) u += ui*fe.N[i] J = zeronm(fe.nbf(), fe.nbf()) for i in range(0, fe.nbf()): Fi = u*fe.N[i] for j in range(0, fe.nbf()): uj = us[j] integrands = diff(Fi, uj) J[j,i] = t.integrate(integrands) #print J syfi-1.0.0.dfsg.orig/tests/python/tests/sympy_test/run.v0000644000175000017500000000116611672223006023266 0ustar johannrjohannrsyfi timing [[1/60,0,-1/360,0,-1/90,-1/360],[0,4/45,0,2/45,2/45,-1/90],[-1/360,0,1/60,-1/90,0,-1/360],[0,2/45,-1/90,4/45,2/45,0],[-1/90,2/45,0,2/45,4/45,0],[-1/360,-1/90,-1/360,0,0,1/60]] 0.10user 0.00system 0:00.14elapsed 76%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+2019minor)pagefaults 0swaps sympy timing 1/60 0 -1/360 0 -1/90 -1/360 0 4/45 0 2/45 2/45 -1/90 -1/360 0 1/60 -1/90 0 -1/360 0 2/45 -1/90 4/45 2/45 0 -1/90 2/45 0 2/45 4/45 0 -1/360 -1/90 -1/360 0 0 1/60 23.07user 0.22system 0:23.34elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+6653minor)pagefaults 0swaps syfi-1.0.0.dfsg.orig/tests/python/tests/sympy_test/run.sh0000644000175000017500000000024411672223006023427 0ustar johannrjohannr#!/bin/sh echo "syfi timing " > run.v 2>&1 time python syfi_test.py >> run.v 2>&1 echo "sympy timing " >> run.v 2>&1 time python sympy_test.py >> run.v 2>&1 syfi-1.0.0.dfsg.orig/tests/python/tests/sympy_test/fem_sympy.py0000644000175000017500000001273611672223006024662 0ustar johannrjohannr from sympy import * x,y,z = symbols('xyz') class ReferenceSimplex: def __init__(self, nsd): self.nsd = nsd coords = [] if nsd <= 3: coords = symbols('xyz')[:nsd] else: coords = [] for d in range(0,nsd): coords.append(Symbol("x_%d" % d)) self.coords = coords def integrate(self,f): coords = self.coords nsd = self.nsd limit = 1 for p in coords: limit -= p intf = f for d in range(0,nsd): p = coords[d] limit += p intf = integrate(intf, (p, 0, limit)) return intf def bernstein_space(order, nsd): if nsd > 3: raise RuntimeError("Bernstein only implemented in 1D, 2D, and 3D") sum = 0 basis = [] coeff = [] if nsd == 1: b1, b2 = x, 1-x for o1 in range(0,order+1): for o2 in range(0,order+1): if o1 + o2 == order: aij = Symbol("a_%d_%d" % (o1,o2)) sum += aij*binomial(order,o1)*pow(b1, o1)*pow(b2, o2) basis.append(binomial(order,o1)*pow(b1, o1)*pow(b2, o2)) coeff.append(aij) if nsd == 2: b1, b2, b3 = x, y, 1-x-y for o1 in range(0,order+1): for o2 in range(0,order+1): for o3 in range(0,order+1): if o1 + o2 + o3 == order: aij = Symbol("a_%d_%d_%d" % (o1,o2,o3)) fac = factorial(order)/(factorial(o1)*factorial(o2)*factorial(o3)) sum += aij*fac*pow(b1, o1)*pow(b2, o2)*pow(b3, o3) basis.append(fac*pow(b1, o1)*pow(b2, o2)*pow(b3, o3)) coeff.append(aij) if nsd == 3: b1, b2, b3, b4 = x, y, z, 1-x-y-z for o1 in range(0,order+1): for o2 in range(0,order+1): for o3 in range(0,order+1): for o4 in range(0,order+1): if o1 + o2 + o3 + o4 == order: aij = Symbol("a_%d_%d_%d_%d" % (o1,o2,o3,o4)) fac = factorial(order)/(factorial(o1)*factorial(o2)*factorial(o3)*factorial(o4)) sum += aij*fac*pow(b1, o1)*pow(b2, o2)*pow(b3, o3)*pow(b4, o4) basis.append(fac*pow(b1, o1)*pow(b2, o2)*pow(b3, o3)*pow(b4, o4)) coeff.append(aij) return sum, coeff, basis def create_point_set(order, nsd): h = Rational(1,order) set = [] if nsd == 1: for i in range(0, order+1): x = i*h if x <= 1: set.append((x,y)) if nsd == 2: for i in range(0, order+1): x = i*h for j in range(0, order+1): y = j*h if x + y <= 1: set.append((x,y)) if nsd == 3: for i in range(0, order+1): x = i*h for j in range(0, order+1): y = j*h for k in range(0, order+1): z = j*h if x + y + z <= 1: set.append((x,y,z)) return set def create_matrix(equations, coeffs): A = zeronm(len(equations), len(equations)) i = 0; j = 0 for j in range(0, len(coeffs)): c = coeffs[j] for i in range(0, len(equations)): e = equations[i] d, r = div(e, c) A[i,j] = d return A class Lagrange: def __init__(self,nsd, order): self.nsd = nsd self.order = order self.compute_basis() def nbf(self): return len(self.N) def compute_basis(self): order = self.order nsd = self.nsd N = [] pol, coeffs, basis = bernstein_space(order, nsd) points = create_point_set(order, nsd) equations = [] for p in points: ex = pol.subs(x, p[0]) if nsd > 1: ex = ex.subs(y, p[1]) if nsd > 2: ex = ex.subs(z, p[2]) equations.append(ex ) A = create_matrix(equations, coeffs) Ainv = A.inv() b = eye(len(equations)) xx = Ainv*b for i in range(0,len(equations)): Ni = pol for j in range(0,len(coeffs)): Ni = Ni.subs(coeffs[j], xx[j,i]) N.append(Ni) self.N = N if __name__ == '__main__': t = ReferenceSimplex(2) x,y,z = symbols('xyz') f = x+y print "integral of f = x+y ", t.integrate(f) print "" print "linear bernstein in 1D ", bernstein_space(1,1) print "linear bernstein in 2D ", bernstein_space(1,2) print "linear bernstein in 3D ", bernstein_space(1,3) print "" print "basis functions of a second order Lagrange element" fe = Lagrange(2,2) for i in range(0, fe.nbf()): print "N[%d]= %s " % (i,fe.N[i]) print "The Jacobian matrix of Fi = u * Ni " u = 0 #compute u = sum_i u_i N_i us = [] for i in range(0, fe.nbf()): ui = Symbol("u_%d" % i) us.append(ui) u += ui*fe.N[i] J = zeronm(fe.nbf(), fe.nbf()) for i in range(0, fe.nbf()): Fi = u*fe.N[i] for j in range(0, fe.nbf()): uj = us[j] integrands = diff(Fi, uj) J[j,i] = t.integrate(integrands) print J syfi-1.0.0.dfsg.orig/tests/python/tests/sympy_test/sympy_core_test.py0000644000175000017500000000066611672223006026101 0ustar johannrjohannr from fem_sympy_core import * t = ReferenceSimplex(2) fe = Lagrange(2,5) u = 0 #compute u = sum_i u_i N_i us = [] for i in range(0, fe.nbf()): ui = Symbol("u_%d" % i) us.append(ui) u += ui*fe.N[i] J = Matrix(fe.nbf(), fe.nbf()) for i in range(0, fe.nbf()): Fi = u*fe.N[i] for j in range(0, fe.nbf()): uj = us[j] integrands = diff(Fi, uj) J[j,i] = t.integrate(integrands) #print J syfi-1.0.0.dfsg.orig/tests/python/tests/sympy_test/fem_sympy_core.py0000644000175000017500000001301011672223006025654 0ustar johannrjohannr import sys sys.path.append("/home/kent-and/local/src/sympycore") from sympycore import * x = Symbol('x') y = Symbol('y') z = Symbol('z') class ReferenceSimplex: def __init__(self, nsd): self.nsd = nsd coords = [] if nsd <= 3: coords = [x,y,z][:nsd] else: coords = [] for d in range(0,nsd): coords.append(Symbol("x_%d" % d)) self.coords = coords def integrate(self,f): coords = self.coords nsd = self.nsd limit = 1 for p in coords: limit -= p intf = f for d in range(0,nsd): p = coords[d] limit += p intf = integrate(intf.expand(), (p, 0, limit)) return intf def bernstein_space(order, nsd): if nsd > 3: raise RuntimeError("Bernstein only implemented in 1D, 2D, and 3D") sum = 0 basis = [] coeff = [] if nsd == 1: b1, b2 = x, 1-x for o1 in range(0,order+1): for o2 in range(0,order+1): if o1 + o2 == order: aij = Symbol("a_%d_%d" % (o1,o2)) sum += aij*binomial(order,o1)*pow(b1, o1)*pow(b2, o2) basis.append(binomial(order,o1)*pow(b1, o1)*pow(b2, o2)) coeff.append(aij) if nsd == 2: b1, b2, b3 = x, y, 1-x-y for o1 in range(0,order+1): for o2 in range(0,order+1): for o3 in range(0,order+1): if o1 + o2 + o3 == order: aij = Symbol("a_%d_%d_%d" % (o1,o2,o3)) fac = factorial(order)/(factorial(o1)*factorial(o2)*factorial(o3)) sum += aij*fac*pow(b1, o1)*pow(b2, o2)*pow(b3, o3) basis.append(fac*pow(b1, o1)*pow(b2, o2)*pow(b3, o3)) coeff.append(aij) if nsd == 3: b1, b2, b3, b4 = x, y, z, 1-x-y-z for o1 in range(0,order+1): for o2 in range(0,order+1): for o3 in range(0,order+1): for o4 in range(0,order+1): if o1 + o2 + o3 + o4 == order: aij = Symbol("a_%d_%d_%d_%d" % (o1,o2,o3,o4)) fac = factorial(order)/(factorial(o1)*factorial(o2)*factorial(o3)*factorial(o4)) sum += aij*fac*pow(b1, o1)*pow(b2, o2)*pow(b3, o3)*pow(b4, o4) basis.append(fac*pow(b1, o1)*pow(b2, o2)*pow(b3, o3)*pow(b4, o4)) coeff.append(aij) return sum, coeff, basis def create_point_set(order, nsd): h = Rational(1,order) set = [] if nsd == 1: for i in range(0, order+1): x = i*h if x <= 1: set.append((x,y)) if nsd == 2: for i in range(0, order+1): x = i*h for j in range(0, order+1): y = j*h if x + y <= 1: set.append((x,y)) if nsd == 3: for i in range(0, order+1): x = i*h for j in range(0, order+1): y = j*h for k in range(0, order+1): z = j*h if x + y + z <= 1: set.append((x,y,z)) return set def create_matrix(equations, coeffs): A = Matrix(len(equations), len(equations)) i = 0; j = 0 for j in range(0, len(coeffs)): c = coeffs[j] for i in range(0, len(equations)): e = equations[i] d = diff(e, c) A[i,j] = d return A class Lagrange: def __init__(self,nsd, order): self.nsd = nsd self.order = order self.compute_basis() def nbf(self): return len(self.N) def compute_basis(self): order = self.order nsd = self.nsd N = [] pol, coeffs, basis = bernstein_space(order, nsd) points = create_point_set(order, nsd) equations = [] for p in points: ex = pol.subs(x, p[0]) if nsd > 1: ex = ex.subs(y, p[1]) if nsd > 2: ex = ex.subs(z, p[2]) equations.append(ex ) A = create_matrix(equations, coeffs) b = eye(len(equations)) xx = A//b for i in range(0,len(equations)): Ni = pol for j in range(0,len(coeffs)): Ni = Ni.subs(coeffs[j], xx[j,i]) N.append(Ni) self.N = N if __name__ == '__main__': t = ReferenceSimplex(2) f = x+y print "integral of f = x+y ", t.integrate(f) print "" print "linear bernstein in 1D ", bernstein_space(1,1) print "linear bernstein in 2D ", bernstein_space(1,2) print "linear bernstein in 3D ", bernstein_space(1,3) print "" print "basis functions of a second order Lagrange element" fe = Lagrange(2,2) for i in range(0, fe.nbf()): print "N[%d]= %s " % (i,fe.N[i]) print "The Jacobian matrix of Fi = u * Ni " u = 0 #compute u = sum_i u_i N_i us = [] for i in range(0, fe.nbf()): ui = Symbol("u_%d" % i) us.append(ui) u += ui*fe.N[i] J = zeronm(fe.nbf(), fe.nbf()) for i in range(0, fe.nbf()): Fi = u*fe.N[i] for j in range(0, fe.nbf()): uj = us[j] integrands = diff(Fi, uj) J[j,i] = t.integrate(integrands) print J syfi-1.0.0.dfsg.orig/tests/python/tests/sympy_test/syfi_test.py0000644000175000017500000000065111672223006024654 0ustar johannrjohannr from swiginac import * from SyFi import * t = ReferenceTriangle() fe = Lagrange(t,5) u = 0 us = [] for i in range(0, fe.nbf()): ui = symbol("u_%d" % i) us.append(ui) u += ui*fe.N(i) J = matrix(fe.nbf(), fe.nbf()) for i in range(0, fe.nbf()): Fi = u*fe.N(i) for j in range(0, fe.nbf()): uj = us[j] integrands = diff(Fi, uj) J[j,i] = t.integrate(integrands) #print J syfi-1.0.0.dfsg.orig/tests/python/tests/codeformatting/0000755000175000017500000000000011674103626023063 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/python/tests/codeformatting/__init__.py0000644000175000017500000000010011672223006025154 0ustar johannrjohannr def test(verbosity=0): print "No test here, in", __file__ syfi-1.0.0.dfsg.orig/tests/python/tests/codeformatting/codeformatter.py0000644000175000017500000000147511672223006026273 0ustar johannrjohannr#!/usr/bin/env python #from sfc.CodeFormatter import CodeFormatter from newsfc.codegeneration import CodeFormatter facet_dofs = [(2, 0, 1), (5, 3, 4), (6, 7, 8)] code = CodeFormatter() code.begin_switch("facet") for i, dofs in enumerate(facet_dofs): code.begin_case(i) for j, d in enumerate(dofs): code += "dofs[%d] = %d;" % (j, d) code.end_case() code += "default:" code.indent() code += 'throw std::runtime_error("Invalid facet number.");' code.outdent() code.end_switch() code = str(code) assert code == """switch(facet) { case 0: dofs[0] = 2; dofs[1] = 0; dofs[2] = 1; break; case 1: dofs[0] = 5; dofs[1] = 3; dofs[2] = 4; break; case 2: dofs[0] = 6; dofs[1] = 7; dofs[2] = 8; break; default: throw std::runtime_error("Invalid facet number."); }""" syfi-1.0.0.dfsg.orig/tests/python/tests/runall.sh0000755000175000017500000000120711672223006021703 0ustar johannrjohannr#!/bin/bash # # Intention: Run a comprehensive default set of tests, each in a separate clean python environment. # # TODO: optionally get LOCAL and VERBOSITY as command line arguments # set this to 1 to run from the local syfi build instead of the installed syfi LOCAL=0 # increase this to get more text output VERBOSITY=0 # to add more tests, add them to this command list ./run.py --local=$LOCAL --verbosity=$VERBOSITY --name=templatetestdir ./run.py --local=$LOCAL --verbosity=$VERBOSITY --name=codeformatting #./run.py --local=$LOCAL --verbosity=$VERBOSITY --name=misc ./run.py --local=$LOCAL --verbosity=$VERBOSITY --name=sfc_callbacks syfi-1.0.0.dfsg.orig/tests/python/tests/run_pychecker.py0000755000175000017500000000055211672223006023267 0ustar johannrjohannr#!/usr/bin/env python "Find potential bugs in sfc by static code analysis." # PyChecker skips previously loaded modules import os, sys, glob, shutil, re, logging, subprocess, hashlib import instant try: import numpy except: pass try: import numarray except: pass try: import Numeric except: pass import pychecker.checker import newsfc syfi-1.0.0.dfsg.orig/tests/python/CMakeLists.txt0000644000175000017500000000010711672223006021443 0ustar johannrjohannr add_test(NAME python_tests COMMAND ${PYTHON_EXECUTABLE} run_tests.py) syfi-1.0.0.dfsg.orig/tests/cpp/0000755000175000017500000000000011674103626016155 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/tests/cpp/box_ex1.gar.r0000644000175000017500000000070411672223006020447 0ustar johannrjohannrGARClstclassrelationalsymbolxnamelhrrhopseqysztnumeric0number1repr1/8intfaddrestR1 9223372036854775808 -62coeffR-1 9223372036854775808 -63overall_coeffrepr2intf2  * * 3CI *  *  3CI *  * 3CI Š Š SS S  SS S  SS S  SSSS S S  Š * Š Š »ËÛ 3CI *  »ËÛ 3CI * »ËÛ 3CI SS S  SS S  SS S  SSSSSSsyfi-1.0.0.dfsg.orig/tests/cpp/fe_ex1.gar.r0000644000175000017500000000027011672223006020247 0ustar johannrjohannrGARCaddclasssymbolynamerestnumeric-1numbercoeffx1overall_coeffN0lst0seqD0N1D1N2D2   " B "  B  +K+Kc B ƒƒ ƒƒ ƒƒsyfi-1.0.0.dfsg.orig/tests/cpp/simple_test.cpp0000644000175000017500000000037311672223006021205 0ustar johannrjohannr#include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { symbol x("x"); ex f = x*x; ex intf = integral(x,0,1,f); intf = eval_integ(intf); EQUAL_OR_DIE(intf, "1/3"); return 0; } syfi-1.0.0.dfsg.orig/tests/cpp/compare_archives.cpp0000644000175000017500000000311511672223006022164 0ustar johannrjohannr#include #include using namespace std; #include #include using namespace GiNaC; using SyFi::initSyFi; using SyFi::compare_archives; int main(int argc, char **argv) { // symbols from symbol factory initSyFi(3); using SyFi::x; using SyFi::y; using SyFi::z; // some different symbols with same names ex xl = symbol("x"); ex yl = symbol("y"); ex zl = symbol("z"); ex e1 = xl*xl + yl*yl*yl + sin(zl); ex e2 = x *x + y *y *y + sin(z ); string exname1 = "testexpression1"; string exname2 = "testexpression2"; string exname3 = "testexpression3"; archive a1; a1.archive_ex(e1, exname1.c_str()); a1.archive_ex(e1*e1, exname2.c_str()); archive a2; a2.archive_ex(e2, exname1.c_str()); a2.archive_ex(e2*e2, exname2.c_str()); string filename1 = "compare_archives1.gar"; string filename2 = "compare_archives2.gar"; ofstream ofile1(filename1.c_str()); ofile1 << a1; ofile1.close(); ofstream ofile2(filename2.c_str()); ofile2 << a2; ofile2.close(); bool success; success = compare_archives(filename1, filename2); if(!success) { cout << "Failure!" << endl; return -1; } // now test that we get failure when we should a1.archive_ex(e1, exname3.c_str()); a2.archive_ex(e2+1, exname3.c_str()); ofstream fofile1(filename1.c_str()); fofile1 << a1; fofile1.close(); ofstream fofile2(filename2.c_str()); fofile2 << a2; fofile2.close(); success = compare_archives(filename1, filename2); if(success) { cout << "Failure! Different expressions compare as equal." << endl; return -1; } return 0; } syfi-1.0.0.dfsg.orig/tests/cpp/mxpoisson_ex.cpp0000644000175000017500000000344611672223006021414 0ustar johannrjohannr#include #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(2); ReferenceTriangle domain; // First the lowest order. // The lowest order is special, because we must use P0 RaviartThomas v_fe; v_fe.set_order(1); v_fe.set_polygon(domain); v_fe.compute_basis_functions(); P0 p_fe; p_fe.set_polygon(domain); p_fe.compute_basis_functions(); usage(v_fe, p_fe); Dof dof; std::map, ex> A; compute_mixed_Poisson_element_matrix(v_fe, p_fe, dof, A); print(A); // Then for instance order 3 int order = 3; RaviartThomas v_fe2; v_fe2.set_order(order); v_fe2.set_polygon(domain); v_fe2.compute_basis_functions(); DiscontinuousLagrange p_fe2; p_fe2.set_order(order); p_fe2.set_polygon(domain); p_fe2.compute_basis_functions(); usage(v_fe2, p_fe2); Dof dof2; std::map, ex> A2; compute_mixed_Poisson_element_matrix(v_fe2, p_fe2, dof2, A2); print(A2); /* comment out test for now // regression test archive ar; map,ex>::iterator iter; for (iter = A.begin(); iter != A.end() ; iter++) { ar.archive_ex((*iter).second, istr("A_", (*iter).first.first, (*iter).first.second).c_str()); } for (iter = A2.begin(); iter != A2.end() ; iter++) { ar.archive_ex((*iter).second, istr("A2_", (*iter).first.first, (*iter).first.second).c_str()); } ofstream vfile("mxpoisson_ex.gar.v"); vfile << ar; vfile.close(); if(!compare_archives("mxpoisson_ex.gar.v", "mxpoisson_ex.gar.r")) { cerr << "Failure!" << endl; return -1; } */ return 0; } syfi-1.0.0.dfsg.orig/tests/cpp/fe_ex3.gar.r0000644000175000017500000000050311672223006020250 0ustar johannrjohannrGARCaddclasspowersymbolynamebasisnumeric2numberexponentrestcoeffx-3mul1overall_coeff4N0-40N1-1N2N3N4N5   * J 3S *  3S J J [c[c‹ J [c[c[c[c[c‹ J J [c [c[c ‹  J [c[c ‹  [c [c[c ‹  [c[c‹ [c[c ‹ syfi-1.0.0.dfsg.orig/tests/cpp/box_ex1.cpp0000644000175000017500000000177311672223006020227 0ustar johannrjohannr#include #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(3); ex f = x*y*z; // integration over the reference box ReferenceBox box; ex repr = box.repr(); cout <<"b.repr "< #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(3); ex p0 = lst(0.0,0.0,1.0); ex p1 = lst(1.0,0.0,1.0); ex p2 = lst(0.0,1.0,1.0); Triangle triangle(p0,p1,p2); ex repr = triangle.repr(); cout <<"t.repr "< using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(2); Dof dof(true, true); // create two triangles Triangle t1(lst(0,0), lst(1,0), lst(0,1)); Triangle t2(lst(1,1), lst(1,0), lst(0,1)); // create the polynomial space ex Nj = pol(1,2,"a"); cout <<"Nj " < > vec; pair index; ex exdof; for (unsigned int i=0; i< dof.size(); i++) { exdof = dof.glob_dof(i); vec = dof.glob2loc(i); cout <<"global dof " <@A CEFGHIKMOQSUWY[]_aceg i!jl"n#p$q r s t u v w x y z { | } ~  €  ‚ ƒ „ … ‡%‰&‹'()‘*“+•,—-˜ ™šœ.ž/ 0¢1£¥2§3©4«5­6¯7±8³9µ:·;¹<»=½>¿?À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Ö@ØAÚBÜCÞDàEâFã ä å æçè/êGìHîIï ñJóKõL÷Mø:úNüOýNÿPQƒR…S‡Tˆ?‰ Š ‹ Œ  Ž   ‘ ’ “ ” • – — ˜ ™ š › œ  ŸU¡V£W¥X§Y©Zª)« ¬ ­ ®¯°0±H³[µ\¶"¸]º^¼_¾`¿=ÁaÃbÅcÆSÈdÊeË ÍfÎ$Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ågçhéiëjíkïlðDñ,ò-ó ôõö1÷Iø\úmû$ýnÿopƒq„?…n†oˆr‰?ŠnŒs$t ‘ ’ “ ” • – — ˜ ™ š › œ  ž Ÿ   ¡ ¢ £ ¤ ¥ §u©v«w­x¯y±z²w³y´vµu¶·¸¹ º"»$¼½¾¿!À#ÁÂÃÄÅÆÇÈÉÊË Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß á{ã|å}ç~éë€íîYð‚òƒóôõ2öJ÷]ønùû„ý…ÿ†‡‚2ƒ……ˆ‡‰ˆJ‰†Š‰‹]Œ‡nŽ   ‘ ’ “ ” • – — ˜ ™ š › œ  ž Ÿ   ¡ ¢ ¤Š¦‹§-©Œ«­Ž¯°-±,² ³´µ3¶K·^¸o¹º…¼¾‘À’Á7ÓŔǕÈNÊ–Ì—ÍaϘÐnÑ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å ç™éšë›íœî ï ð òôžõ ö÷ø4ùLú_ûpü!ý†þ‘€Ÿ‚ ƒ;„–†¡ˆ¢‰Q‹£¤Žd¥‘n’ “ ” • – — ˜ ™ š › œ  ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ ¨¦©,«§­¨¯©±ª³«´-µ,¶ · ¸¹5ºM»`¼q½#¾‡¿’À Á[Â>ØŬǭÈTɥˮÌfίÏtÐ Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä æ°è±ê²ì³î´ðµò¶ô·õF÷¸øùú6û:ü=ý?þÿ2€7;‚>ƒ.„3…8†<‡/ˆ4‰9Š0‹5Œ1 Ž   ‘ ’ “ ” • – — ˜ ™ š › œ  ž Ÿ   ¡ £¹¥º¦-¨»ª¼¬½®¾°¿²À´Áµ¶·7¸N¹aºn»¼…½“¾–¿˜À3Á”×ÄKőƕÇ^È’ÉoÊ Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß™àžá}ãÂåÃçÄéÅêëžì íîï8ðOñbòoóôˆõ”ö¡÷¬ø8ù”ûÆýÇþOÿ¡€Çb‚¬ƒo„ … † ‡ ˆ ‰ Š ‹ Œ  Ž   ‘ ’ “ ” • – — ˜ šÈ›±œœŸÉ¡Ê£Ë¤¥ž¦ § ¨©9ªN«c¬r­®‰¯•°¢±­²<³—´Ç¶Ì·R¸¤ºÍ»e¼®½s¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò ÔÎÕ,×ÏÙÐÛÑÝÒßÓáÔãÕåÖæç è:éPêSë?ìíJîNïQðTñ/òKóOôRõGöL÷NøHùMúIû ü ý þ ÿ €  ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ  Ž  ‘×’Ï“¾”»•-—ؘ-šÙœÚžÛŸ !¡;¢Q£d¤n¥¦†§–¨£©¥ª4«‘¬¡­¤®L¯Ÿ°¢±_² ³p´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É¦ËÜÍÝÎŒÏ Ð Ñ ÓÞÕßÖ × ØÙ<ÚRÛeÜsÝމߗà¤á®â9ã•äÇåÍæNç¢èÌécê­ërì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ € ΂ у º… à† ,ˆ በ,‹ â ã ä ‘ "’ =“ S” • $– — ]˜ a™ dš f› 0œ ^ bž eŸ H  _¡ c¢ [£ `¤ \¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º ~» -¼ -½ ~¿ åÁ æ åÄ çÅ çÇ èÈ É #Ê >Ë TÌ fÍ tÎ Ï ‡Ð ˜Ñ ¥Ò ¯Ó 5Ô ’Õ ¬Ö ®× MØ  Ù ­Ú `Û [Ü qÝ Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò °ó ,ô ,õ °÷ éù êú éü ëý ëÿ ì€  $‚ ?ƒ ?„ $… † ‡ nˆ n‰ nŠ t‹ 1Œ o oŽ s I p‘ r’ \“ q” m• – — ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ €  ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ !Ž  " #‘ $’ {“ ” Y• ƒ– |— €˜ ‚™ }š › ~œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ .´ /µ 0¶ 1· ¸ 2¹ 3º 4» 5¼ 6½ 7¾ 8¿ 9À :Á ; <à =Ä >Å ?Æ ¹Ç ¼È ¿É ÁÊ ºË ½Ì ÀÍ -Î ¾Ï »Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç /è Gé Hê Ië ì Jí Kî Lï Mð :ñ Nò Oó Nô Põ Qö R÷ Sø Tù ?ú ×û -ü Ùý Ûþ Ïÿ Ø€ Ú ¾‚ -ƒ »„ … † ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – — ˜ ™ š › 0œ H [ž \Ÿ "  ]¡ ^¢ _£ `¤ =¥ a¦ b§ c¨ S© dª e« ¬ f­ $® ~¯ å° ç± è² -³ æ´ çµ -¶ å· ~¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï 1Ð IÑ \Ò mÓ $Ô nÕ oÖ p× qØ ?Ù nÚ oÛ rÜ ?Ý nÞ sß $à tá â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ € ‚ ƒ „ … "† $‡ ˆ ‰ Š !‹ #Œ  Ž   ‘ ’ “ ” • – %— )˜ ,™ š &› *œ - 'ž +Ÿ (  ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · 2¸ J¹ ]º n» ¼ „½ …¾ †¿ ‡À 2Á … ˆà ‰Ä JÅ †Æ ‰Ç ]È ‡É nÊ ŠË Ì -Í Î ‹Ï ŽÐ ,Ñ -Ò Ó ŒÔ Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë 3ì Kí ^î oï ð …ñ ò ‘ó ’ô 7õ “ö ”÷ •ø Nù –ú —û aü ˜ý nþ ™ÿ À ‚žƒÄ„ž…}†Å‡Âˆ ‰ Š ‹ Œ  Ž   ‘ ’ “ ” • – — ˜ ™ š › œ žŸ4 L¡_¢p£!¤†¥‘¦Ÿ§ ¨;©–ª¡«¢¬Q­£®¤¯d°¥±n²¦³ ´Þµ ¶Ü· ¸ß¹Ýº »Œ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ ÒÓ5ÔMÕ`Öq×#؇ْڠÛ[Ü>ݘެ߭àTá¥â®ãfä¯åtæ°çéèëéìê,ëêìëí,îéï°ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ €  ‚ ƒ „ …†‡6ˆ:‰=Š?‹Œ27Ž;>.‘3’8“<”/•4–9—0˜5™1š@›Dœ  žAŸE  ¡B¢F£C¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹º»7¼N½a¾n¿À…Á“–ØÄ3ÅÆ”Ç—ÈKɑʕË^Ì’ÍoÎ™Ï ÐÑ ÒšÓ ÔžÕ›Ö ×œØ Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì íîï8ðOñbòoóôˆõ”ö¡÷¬ø8ù”úÆûÇüOý¡þÇÿb€¬o‚ȃɄ… †±‡Êˆž‰ŠË‹œŒ  Ž   ‘ ’ “ ” • – — ˜ ™ š › œ  ž Ÿ   ¡ ¢£9¤N¥c¦r§¨‰©•ª¢«­¬<­—®Ç¯Ì°R±¤²Í³e´®µs¶Î·,¸â¹äºÑ»á¼ã½º¾,¿àÀ Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô ÕÖ ×:ØPÙSÚ?ÛÜJÝNÞQßTà/áKâOãRäGåLæNçHèMéIêUëYì í îVïZð ñWò)óXô õ ö ÷ ø ù ú û ü ý þ ÿ €  ‚ ƒ „ … † ‡ ˆ ‰Š!‹;ŒQdŽn†‘–’£“¥”4•‘–¡—¤˜L™Ÿš¢›_œ pž¦Ÿ© -¡ ¢,£ª¤,¥§¦«§¨¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾¿<ÀRÁeÂsÃĉŗƤǮÈ9É•ÊÇËÍÌNÍ¢ÎÌÏcЭÑrÒÎÓÑÔÔÕÖÖ,×ÒØÕÙÏÚÓÛÐÜ Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñò"ó=ôSõ ö$÷ø]ùaúdûfü0ý^þbÿe€H_‚cƒ[„`…\†g‡kˆ,‰ Šh‹lŒ-iŽDj ‘ ’ “ ” • – — ˜ ™ š › œ  ž Ÿ   ¡ ¢ £ ¤ ¥ ¦#§>¨T©fªt«¬‡­˜®¥¯¯°5±’²¬³®´Mµ ¶­·`¸[¹qº°»´¼·½¸¾±¿µÀFÁ²Â¶Ã³Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø ÙÚ$Û?Ü?Ý$Þ ßànánânãtä1åoæoçsèIépêrë\ìqímîuïyðyñuòvózôvõwöw÷xø ù%ú@ûUügýuþ{ÿŠ€™¦‚°ƒ¹„™…Ȇ·׈¦‰ÎŠ~‹°Œ  Ž{¹×‘~’ “%”Š•™–¦—°˜@™™šÈ›ÎœU¦žÎŸg °¡u¢ £&¤A¥V¦h§v¨|©‹ªš«,¬±­º®ž¯±°,±Ï²Ü³Ñ´-µ,¶ · ¸¹¼º-»å¼ ½)¾¿ÃÀ ÁéÂDà ÄÉÅ,ÆYÇ©ÈÑÉkÊ´ËyÌÍ'ÎBÏWÐiÑwÒ}Ó-Ô›Õ§Ö²×-Ø}ÙÚÏÛ¾ÜÝݺÞ-ß,à áâYã¿äÙåçæ ç,è-éêÞëëì íîïâð ñ-òÔó,ô·õyö÷(øCùXújûxü~ýŒþœÿ¨€³»‚ƒœ„Ð…»†Œ‡àˆ~‰°Š ‹ŒƒÁŽÛè ‘ ’ “ ” •ì– — ˜ ™äš › œÖ ž¸Ÿu  ¡)¢D£Y¤k¥y¦§¨ ©©ª´«¼¬Ã­É®Ñ¯-° ±,²å³é´ µ ¶|·º¸Ï¹-º »&¼‹½ž¾Ü¿,ÀAÁšÂ±ÃÑÄVÅ,Æ,ÇhȱÉvÊË*ÌEÍZÎlÏzÐ€ÑŽÒ ÓªÔµÕ½ÖÄ×ÊØÒÙØÚ ÛáÜæÝêÞ ßà€á½âØãæä å*æŽçÄè éêêEë ìÊíáîZïªðÒñlòµózôõ+öF÷)øDùwúûü ý«þ¶ÿ¾€Å˂Ӄ-„ …,†å‡éˆ ‰Š‚‹ÀŒÚçŽ -,‘ž’ß“ë” •ž–ž—㘠™,šÕ›-œFvžŸ,  ¡ ¢,£y¤Y¥-¦§-¨·©¿ª«¬Ô­Ù®Þ¯â°ç±ë² ³´}µ-¶¾·-¸ ¹'º-»}¼Ý½,¾B¿›ÀÁºÂWçÄÏÅiƲÇwÈÉ-Ê Ë Ì-Ív΂Ï,ОÑ,ÒFÓÀÔžÕžÖÕ×ÚØßÙãÚçÛëÜ ÝÞß¾à-áåâ ã+äåÅæ çéèFé êËë,ì)í«îÓïDð¶ñwòó ô õ ö ÷uøƒù ú û ü¸ýÁþ ÿ €ÖÛ‚ ƒä„è…ì† ‡ˆ~‰»Š»‹~Œ (ŽŒÂŒ‘°’C“œ”œ•à–X—¨˜Ð™jš³›xí               # 9 ; = ? B D J L N P R T V X Z \ ^ ` b d f h k m o † ˆ Š Œ Ž  ’ ” – ›  Ÿ ¡ ¤ ¦ ¨ ª ¬ ® ° ² ´ ¶ ¸ º ¼ ¾ Õ × Ù Û Ý ß á é ë í ð ò ô ö ù û þ € ‚ „ † ž   ¢ ¤ ¦ ¨ ² ´ · ¹ » ½ À Â Ä Ç É Ì ä æ è ê ì î ù ü þ € ‚ ‡ ‹ Ž ¦ ¨ ª ¬ ® ° à â ä æ è ê ì ï ñ ú ü þ € „ † £ ¥ ¨ ª ¬ ® » ½ ¿ Â Ä Æ É Ë Î æ è ê ì ñ ó ÿ  … ‡ Š Œ  § ª ¬ ® ° ² Ä Æ Ê Í å ç é ë í ï ñ ó ö ¢ ¤ § © « ­ ¯ ± ³ â ä æ è ú ü ™ ž   ¢ µ ¹ Ó Ö Ø Ú Ü Þ à â ä  – ™ ›  Ê Ì Ò Ô „  ‡  Š  Œ  Ž  ¾  À  à  Æ  ö  ø  û  þ syfi-1.0.0.dfsg.orig/tests/cpp/integral_ex1.cpp0000644000175000017500000000077611672223006021246 0ustar johannrjohannr#include #include using namespace std; using namespace GiNaC; using namespace SyFi; void check_integral(ex& f){ } int main() { initSyFi(1); ReferenceLine line; Lagrange fe; fe.set_polygon(line); fe.set_order(3); fe.compute_basis_functions(); ex integrand = fe.N(0)*fe.N(1); cout <B?C B b  B b KkKkƒ b b KkKkƒ KkKkKkƒ b b «»  KkKkƒ b KkKkƒ KkKkƒ b b KkKk K kK k Kk Kkƒ b KkKkƒ b «»  KkKkƒ b Kk KkKkKkKkƒ ÛÛ KkK kK kKk Kkƒ Kk Kk KkKkKkKk ƒ ÛÛ b# b$ «»  b% b& b' KkKkKkK k!K k"KkKk Kk#ƒ b( Kk#Kk%KkKkKk Kkƒ Û$Û& b+ b, Kk#KkKkKkK kK k(Kk(Kk)ƒ b- KkKk+KkKk!KkKk"ƒ Û*Û, b0 KkKk.K kK kKkKk!ƒ b1 b2 Kk Kk0KkK kK kK kKk#Kk1ƒ Û/Û2 b5 Kk(Kk4K kK k1Kk#Kk!ƒ b6 KkKk0Kk6K k!K kKkKkKk ƒ Û5Û7 Kk!Kk(K k!Kk!Kk!ƒ KkKkKkKkKkƒ Û9Û: Kk"K k1Kk1Kk1ƒ b; Kk1Kk=Kk1Kk"Kk"ƒ Û<Û> Kk"Kk=K k"Kk1Kk1ƒ Kk1Kk1Kk"Kk1ƒ Û@ÛAsyfi-1.0.0.dfsg.orig/tests/cpp/raviartthomas_ex2.cpp0000644000175000017500000000122111672223006022310 0ustar johannrjohannr#include using namespace GiNaC; using namespace SyFi; using namespace std; int main () { initSyFi(2); int order = 3; ReferenceTriangle triangle("t"); RaviartThomas vfe; vfe.set_polygon(triangle); vfe.set_order(order); vfe.compute_basis_functions(); DiscontinuousLagrange pfe; pfe.set_polygon(triangle); pfe.set_order(order); pfe.compute_basis_functions(); for (unsigned int i=0; i< vfe.nbf(); i++) cout <<"vfe.N("< #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(3); ex p0 = lst(0.0,0.0,0.0); ex p1 = lst(1.0,0.0,0.0); ex p2 = lst(0.0,1.0,0.0); cout <<"\n\nThe reference triangle in 3D"<(@)B*C(E+F!GH%I)J(K*L&M(N'O+P"Q&R)T,V-X.Z/\0^1`2a#b'c(d-f3h4i1j4l5n6o$p(q*r.s4t3u0v%w4y7z"{)|&}/~10€,.‚-ƒ2„$…*†(‡0ˆ4‰%Š.‹3Œ47Ž#('‘1’5“4”-•4–3—6˜ ™+š+›2œ67ž2Ÿ7 6¢8§F®M¯N°O¶U»ZÁ`ÂaÃbÄcÅdÆeÇfÈgÉhÊiÎmÒqÓrÔsÖtØuÙuÛvÝwßxáyãzäwåyæxçzé{ë|ì|î}ïuñ~óõ€÷ù‚ûƒý„ÿ…†ƒ‡…ˆ‡‰‰Š‹‹ŒŽu~‘€’…“‡”†•ˆ–—ƒ˜‚™„š‰›‹œŠŒžvŸ€ €¢¤Ž¦¨ª‘«Ž¬­®‘°’²“³“µ”¶w·¸…¹Ž»•½–¿—À—˜ęƚțʜÌΞϞÐxт҇ÓԖ֟ؠ٠ښܡޢà£â¤ä¥æ¦ç¦èyéƒê†ëì—í ï§ñ¨ò™ô©õ¡÷ªù«û¬ý­ÿ®€z„‚ˆƒ‘„—… †¨‡§ˆ›‰ªŠ£Œ¯«Ž¬®­‘w’…“”Ž•˜–š—™˜›™•š—›–œ—œžžŸ ž¡y¢†£ƒ¤¥™¦¡§©¨ª©—ª§« ¬¨­«®­¯¬°®±x²‡³‚´µš¶¢·¡¸£¹–º »Ÿ¼ ½¤¾¦¿¥À¦ÁzˆÄđśƣǪȯɗʨˠ̧ͫήϬЭÑ{҉ӉԒ՜֤׫ثٜګۤܫްà±á±â±ã|äŠå‹æ“çè¥é¬ê¬ëžì­í¦î®ï±ñ²ó³ô³õ|ö‹÷Šø“ùžú¦û­ü®ýþ¬ÿ¥€¬±‚³ƒ²„³…}†Œ‡Œˆ”‰žŠ¦‹®Œ­žŽ®¦­‘±’³“³”²´ * J *  J  3S3Sk J 3S3Sk J J ‹› ‹› J 3S3Sk ‹› ‹› 3S3S3 S3 S 3 S3 S 3Sk J J 3S3S 3 S3 S3S3Sk 3S3S3S 3 S3 S3 Sk J J 3S3S3 S3 S3Sk J 3S3S3 S3 S3Sk 3S3S3 Sk 3S3S3 S3 S3 Sk 3S3S3 Sk 3S3S3 S3 S3 Sk J# J$ 3S3S3 Sk J& J( J+ J- J/ J6 J9 J; J= J? JA JD JS JU JW JY J[ J] J_ Je Jg Jk Jm Jx J¡ *£ 39S3Sk J¤ 3S39Sk J¥ 3S39S3Sk J¦ ‹9› 39S3Sk ‹9› 39S3Sk 3S39Sk 3S39Sk" 3:S;3S?3@S3 S 3AS=3BS 3CS;3DS;3 S;3 S 3S3ES=k J¨ J© Jª J« J¬ J­ 3:SG3SJ3ASI3CSK3DSH3 SK3 S3S3S3ESLk 3:SH3SJ3 S3ASL3CSH3DSK3 SG3ESIk 3:SK3SJ3@S3ASI3BS3CSG3DSG39S3 SH3ESIk J± J² J³ J´ Jµ 3:SP3SS3ASR3CSP3DSQ3 SP3 S3S3ESTk J· J¸ J¹ Jº 3:SV3SK3ASX3CSV3DSW3 SV3 S3S3ESYk J¼ J½ J¾ J¿ JÀ 3:SH3S]3ASL3CSH3DS[3 S^3ES_k 3:SK3S]3AS\3CS^3DS[3 SH3ES_k 3:SQ3SS3 S3AST3CSQ3DSP3 SP3ESRk 3:S[3S]3AS_3CS[3DSH3 SK3ESLk 3:SW3SK3 S3ASY3CSW3DSV3 SV3ESXk 3:S[3S]3AS_3CS[3DS^3 SH3ES\k 3:SP3SS3@S3ASR3BS3CSP3DSP3 SQ3ESRk 3:S^3S]3AS\3CSK3DSH3 S[3ESLk 3:SH3S]3ASL3CSH3DSK3 S[3ES\k 3:SV3SK3@S3ASX3BS3CSV3DSV3 SW3ESXk JË JÌ JÍ 3:Sj3Sl3ASk3CSj3DSj3 Sj3ESkk JÏ JÐ JÑ 3:Sj3So3ASk3CSj3DSn3 Sj3ESpk 3:Sn3So3ASp3CSn3DSj3 Sj3ESkk 3:Sj3So3ASk3CSj3DSj3 Sn3ESkk JÕ J× JÚ JÜ JÞ Jà Jâ Jè Jê Jí Jð Jò Jô Jö Jø Jú Jü Jþ J€ J‚ J„ J† Jˆ JŠ JŒ J¡ J£ J¥ J§ J© J¯ J± J´ Jº J¼ J¾ JÁ Jà JÅ JÇ JÉ JË JÍ JÕ J× JÛ JÝ Jß Já Jã Jå Jî Jð Jó Jö Jø Jú Jü Jþ J‹ JÝ Jß Jð Jòsyfi-1.0.0.dfsg.orig/tests/cpp/arnoldfalkwinther.cpp0000644000175000017500000000463711672223006022402 0ustar johannrjohannr#include #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { archive ar; initSyFi(3); ReferenceTetrahedron tetrahedron; int order = 2; ArnoldFalkWintherWeakSymSigma sigma_fe; sigma_fe.set_order(order); sigma_fe.set_polygon(tetrahedron); sigma_fe.compute_basis_functions(); for (unsigned int i=0; i,ex> A; pair index; for (unsigned int i=0; i,ex> B; for (unsigned int i=0; i #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(2); ReferenceTriangle triange; Robust fe(triange); fe.compute_basis_functions(); for (unsigned int i=0; i< fe.nbf(); i++) { cout <<"fe.N("< using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(2); Dof dof(true, true); Triangle t1(lst(0,0), lst(1,0), lst(0,1)); Triangle t2(lst(1,1), lst(1,0), lst(0,1)); // Create a finite element and corresponding // degrees of freedom on the first triangle int order = 2; Lagrange fe; fe.set_order(order); fe.set_polygon(t1); fe.compute_basis_functions(); for (unsigned int i=0; i< fe.nbf() ; i++) { cout <<"fe.dof("< using namespace SyFi; using namespace std; void print_out(FE& fe) { for (unsigned int i=0; i< fe.nbf(); i++) { cout <<"fe.N("< using namespace GiNaC; using namespace SyFi; using namespace std; void check_RaviartThomas() { initSyFi(2); ReferenceTriangle triangle("t"); RaviartThomas fe; fe.set_polygon(triangle); cout <<"2D --------------------- 1 order "< #include #include "SyFi.h" #include "ginac_tools.h" using namespace std; using namespace GiNaC; using namespace SyFi; // ................. // pick an expression to test ex pickExpression(int i) { ex x = get_symbol("x"); ex y = get_symbol("y"); ex z = get_symbol("z"); ex e; switch(i) { case 0: e = 1; break; case 1: e = x; break; case 2: e = x+y; break; case 3: e = x+y+z; break; case 4: e = x*y; break; case 5: e = x*y*z; break; case 6: e = x*x*y*y*z*z; break; case 7: e = x*x*x*y*y*y*z*z*z; break; case 8: e = power(x,3)*power(y,2) + power(x,2) + x*y*y; break; case 9: e = power(x,3)*power(y,2) + power(x,2) + x*y*y; e = power(e, e) + e; break; // add more tests with a new case here, and update the iteration limit in main default: e = 0; } return e; } int main(int argc, char **argv) { bool verbose = false; // turn this off for the unit tests if(argc>1 && argv[1][0] == 'v') verbose = true; int from = 0; int to = 10; for(int i=from; i #include using namespace std; #include using namespace GiNaC; using namespace SyFi; int main() { initSyFi(3); assert( symbol_exists("x") ); assert( symbol_exists("y") ); assert( symbol_exists("z") ); ex x1 = get_symbol("x"); ex x2 = get_symbol("x"); ex x3 = get_symbol("x"); assert( is_zero(x2-x1) ); assert( is_zero(x3-x1) ); assert( is_zero( SyFi::x - get_symbol("x") ) ); assert( is_zero( SyFi::y - get_symbol("y") ) ); assert( is_zero( SyFi::z - get_symbol("z") ) ); assert( !symbol_exists("foo") ); cout << get_symbolic_vector(1, "v") << endl; cout << get_symbolic_vector(3, "u") << endl; cout << get_symbolic_vector(11, "w") << endl; cout << get_symbolic_matrix(2, 3, "B") << endl; cout << get_symbolic_matrix(3, 3, "A") << endl; return 0; } syfi-1.0.0.dfsg.orig/tests/cpp/fe_ex4.cpp0000644000175000017500000000346611672223006020035 0ustar johannrjohannr#include #include using namespace GiNaC; using namespace SyFi; using namespace std; int main(){ initSyFi(2); //matrix in terms of rational numbers int order = 1; Triangle triangle(lst(0,0), lst(1,0), lst(0,1)); Lagrange fe; fe.set_order(order); fe.set_polygon(triangle); fe.compute_basis_functions(); Dof dof; std::map, ex> A; compute_Poisson_element_matrix(fe, dof, A); print(A); //matrix in terms of symbols symbol x0("x0", "x_0"), x1("x1", "x_1"), x2("x2", "x_2"); symbol y0("y0", "y_0"), y1("y1", "y_1"), y2("y2", "y_2"); Triangle triangle2(lst(x0,y0), lst(x1,y1), lst(x2,y2)); Lagrange fe2; fe2.set_order(order); fe2.set_polygon(triangle2); fe2.compute_basis_functions(); Dof dof2; std::map, ex> A2; compute_Poisson_element_matrix(fe2, dof2, A2); cout <<"standard format on output"<,ex>::iterator iter; for (iter = A.begin(); iter != A.end() ; iter++) { ar.archive_ex((*iter).second, istr("A", (*iter).first.first, (*iter).first.second).c_str()); } for (iter = A2.begin(); iter != A2.end() ; iter++) { ar.archive_ex((*iter).second, istr("A2_", (*iter).first.first, (*iter).first.second).c_str()); } ofstream vfile("fe_ex4.gar.v"); vfile << ar; vfile.close(); if(!compare_archives("fe_ex4.gar.v", "fe_ex4.gar.r")) { cerr << "Failure!" << endl; return -1; } */ return 0; } syfi-1.0.0.dfsg.orig/tests/cpp/tetrahedron_ex1.gar.r0000644000175000017500000000044211672223006022175 0ustar johannrjohannrGARClstclassrelationalsymbolxnamelhrrhopseqysztnumeric0number1addrest-1coeffoverall_coeffrepr1/720intf * * 3CI *  *  3CI *  * 3CI Š Š SS S  Š £³ »  SS S  £³ £³ »  SS S SSSS SS Šsyfi-1.0.0.dfsg.orig/tests/cpp/tetrahedron_ex2.cpp0000644000175000017500000000153611672223006021754 0ustar johannrjohannr#include #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(3); archive ar; symbol x0("x0"), x1("x1"), y0("y0"), y1("y1"), z0("z0"), z1("z1"); ex p0 = lst(x0,y0,z0); ex p1 = lst(x1,y0,z0); ex p2 = lst(x0,y1,z0); ex p3 = lst(x0,y0,z1); Tetrahedron tetrahedron(p0,p1,p2,p3); ex repr = tetrahedron.repr(); cout <<"t.repr "< using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(1); // initialization (f = x^2 + y^2) ex f = x*x + y*y; cout <<"f "<? : Z  Cc Z Z k{‹ Z : : Cc k {‹ k{k{k {‹ Z : k{k {‹ : k {k{k{‹ Z : k {k{‹ : k{k{‹ : k{k{k{‹ : k{k{‹ : : k{k{k{‹ Z k { k{k{k{k{k{k{k{k{‹ ƒƒƒƒ ƒƒƒƒƒ Z! Z" k{ ‹! k{k{‹ k{k{‹ k { ‹! k {k{‹ k{k {‹ ƒƒƒ"ƒƒ#ƒ$ƒ%ƒ&ƒ' ƒƒƒ( k{k{k{‹ k{k{‹ k{k{‹ k{k{k{‹ k{k{‹ k*{ k+{k,{k {k-{k.{‹ Z& k{‹0 Z( k{‹2 Z* k{‹4 k {‹2 Z- k{‹7 Z/ k{‹9 k{‹4 k{‹9 Z3 k{‹=syfi-1.0.0.dfsg.orig/tests/cpp/barycenter_simplex.cpp0000644000175000017500000000130011672223006022543 0ustar johannrjohannr#include #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { /* initSyFi(3); ex p0 = lst(0.0,0.0,0.0); ex p1 = lst(1.0,0.0,0.0); ex p2 = lst(0.0,1.0,0.0); ex p3 = lst(0.0,0.0,1.0); Simplex simplex(lst(p0,p1,p2,p3)); ex coord = barycenter(simplex); cout <<"coord "< using namespace GiNaC; using namespace SyFi; using namespace std; int main() { ex pi = 3.14; cout <<"pi="< #include using namespace GiNaC; using namespace SyFi; using namespace std; int check_CrouzeixRaviart() { initSyFi(2); cout <<"2D ----------------------------"<, ex> A; compute_Poisson_element_matrix(fe, dof, A); print(A); initSyFi(3); cout <<"3D ----------------------------"<, ex> A2; compute_Poisson_element_matrix(fe2, dof2, A2); print(A); // regression test archive ar; for (unsigned int i=0; i, ex>::iterator iter; for (iter = A.begin(); iter != A.end() ; iter++) { ar.archive_ex((*iter).second, istr("A", (*iter).first.first, (*iter).first.second).c_str()); } for (unsigned int i=0; i using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(3); // example that check scaling numeric h(1,100); // 1.0/100 numeric a(1,2); // 1.0/2 ex p0 = lst(a,a,a); ex p1 = lst(a+h,a,a); ex p2 = lst(a,a+h,a); Triangle triangle(p0,p1,p2); ex f = 1; ex intf = triangle.integrate(f); cout <<"intf "< #include using namespace GiNaC; using namespace std; using namespace SyFi; void compute_Poisson_element_matrix( FE& fe, Dof& dof, std::map, GiNaC::ex>& A) { std::pair index; // Insert the local degrees of freedom into the global Dof for (unsigned int i=0; i< fe.nbf(); i++) { dof.insert_dof(1,i,fe.dof(i)); } Polygon& domain = fe.get_polygon(); // The term (grad u, grad v) for (unsigned int i=0; i< fe.nbf(); i++) { index.first = dof.glob_dof(fe.dof(i)); // fetch the global dof for Ni for (unsigned int j=0; j< fe.nbf(); j++) { index.second = dof.glob_dof(fe.dof(j)); // fetch the global dof for Nj GiNaC::ex nabla = inner(grad(fe.N(i)),grad(fe.N(j))); GiNaC::ex Aij = domain.integrate(nabla); // compute the integral A[index] += Aij; // add to global matrix } } } void code_gen2D(FE& fe){ cout <, ex> A; ::compute_Poisson_element_matrix(fe, dof, A); cout <<"C code format on output "< index; for (unsigned int i=0; i #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(2); archive ar; int order = 2; ex polynom_space = legendre(order,nsd, "a"); cout <<"polynom_space "<?@ABCEFHJLNPRTUW Y!Z![ \^"`#b$c"e%g&h#i&j$klmo'q(s)u*w+y,z{ |}~€‚ƒ„…†‡ˆ‰Š‹Œ'Ž-.’/”0–1˜2š3œ4ž5 6¢7¤8¦9¨:ª;¬<­:¯=±>²;³>´<µ ¶·(¸.º?¼@½1¿AÁBÃCÅDÇEÈ5ÉÊ9ÌFÎGÐHÑ5ÓIÔ3ÕHÖI×GØFÙ ÚÛ)Ü/Ý@ßJà2áBãKåLçMè!êNìOîPï<ð>ñ>ò<ó;ô=õ;ö:÷:ø9ù úû*ü0ý1þ2ÿ-€./ƒQ„%†RˆS‰Š‹ŒŽ‘’“”• –—+˜1™AšB›.œ?@ŸT¡U¢£¤¦V§$¨&©&ª$«#¬%­#®"¯"°±²³,´2µB¶K·/¸@¹J»W½X¿YÁZÃ[Å\ÆÇÈÉÊËÌÍÎÏÐ ÑÒÓ3ÔCÕLÖQ×TØWÚ]Û ÜÞ^à_â`äaæbècêdìeîfðgòhó>õiö÷ø ù4úDûMü%ýUþXÿ €]`‚_ƒ^„…a†e‡hˆi‰bŠf‹>ŒcgŽd ‘’5“E”!•R–—Y˜™`›jkŸl¡m£n¥o§p©q«r­s¯t°²u´vµ¶!·¸6¹5ºN»S¼½Z¾^¿_ÀkÂwÄxÅlÇyÉzË{ÌÎ|ÏÑ}Ó~Õ×€ØÙ!ÚÛ7ÜÝOÞßà[á_â^ãläxåwækçyè|é~ê€ëzìíî{ï}ðñò óô8õ9öP÷øVù\ú`ûümýlþkÿj€nr‚ƒv„o…s†u‡pˆt‰qŠ‹Œ9ŽF<‘$’“a”a•n–y—y˜n™š"›œ:Gž>Ÿ &¡¢b£e¤o¥z¦|§r¨©#ª«;¬H­>®¯&°±c²h³p´{µ~¶·¸$¹º<»5¼<½¾$¿ÀdÁiÂqÃÄ€ÅvÆÇ"ÈÉ:ÊIË;ÌÍ#ÎÏeÐbÑrÒ|ÓzÔoÕÖ%ר=Ù3Ú=ÛÜ%ÝÞfßfàsáâãsäå&æç>èHé;êë#ìígî>ïtð}ñòuóô#õö;÷Iø:ùú"ûühýcþÿ~€{p‚ƒ&„…>†G‡:ˆ‰"Š‹>ŒguŽ}t‘’$“”<•F–9—˜™ši›dœv€žŸq            ! # % ( * - / 1 3 5 7 9 ; = D G I K M O Q S V X ] _ a d f n p r t v x   ‘ “ • — ™ ›  Ÿ ¡ £ ¥ § © « ® ° ¹ » ¾ À Â Ä Æ Ë Í Ï Ò Þ â ä æ é ë í ‚ … ‡ ž   ¥ º ¼ ¾ À Â Ä Ù Ý ß á ã å ç é ë í ï ñ ô š œ ž   ¢ ¤ ¦ ¨ ª ¬ ® ± ³ Á Ã Æ È Ê Í Ð Ò Ô Ösyfi-1.0.0.dfsg.orig/tests/cpp/AGENDA0000644000175000017500000000210411672223006017005 0ustar johannrjohannr fix all the regression tests. arnoldfalkwinther.cpp (ok) box_ex1.cpp (ok) code_gen.cpp (ok) compare_archives.cpp crouzeixraviart_ex2.cpp (ok) crouzeixraviart_ex.cpp (ok) disconlagrange_ex.cpp dof_ex2.cpp dof_ex3.cpp dof_ex.cpp ex_inspection.cpp fe_ex1.cpp (ok) fe_ex2.cpp (ok) fe_ex3.cpp (ok) fe_ex4.cpp (ok) hermite_ex1.cpp (ok) integral_ex1.cpp (ok) legendre.cpp (ok) line_ex1.cpp (ok) line_ex2.cpp (ok) line_ex3.cpp (ok) mxpoisson_ex.cpp nedelec_ex1.cpp nedelec_ex2.cpp nljacobian_ex.cpp (ok) pnpn2_ex.cpp (ok) pol.cpp (ok) polh.cpp (ok) raviartthomas_ex1.cpp raviartthomas_ex2.cpp rectangle_ex1.cpp (ok) robust.cpp (ok) simple2.cpp (ok) simple.cpp (ok) simplify.cpp symbol_factory.cpp taylorhood_ex.cpp (ok) tetrahedron_ex1.cpp (ok) tetrahedron_ex2.cpp (ok) tetrahedron_ex3.cpp (ok) triangle_ex1.cpp (ok) triangle_ex2.cpp (ok) triangle_ex3.cpp (ok) syfi-1.0.0.dfsg.orig/tests/cpp/fe_ex2.cpp0000644000175000017500000000243511672223006020026 0ustar johannrjohannr#include #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(2); Triangle T(lst(0,0), lst(1,0), lst(0,1), "t"); int order = 2; std::map, ex> A; std::pair index; Lagrange fe; fe.set_order(order); fe.set_polygon(T); fe.compute_basis_functions(); for (unsigned int i=0; i< fe.nbf() ; i++) { index.first = i; for (unsigned int j=0; j< fe.nbf() ; j++) { index.second = j; ex nabla = inner(grad(fe.N(i)), grad(fe.N(j))); ex Aij = T.integrate(nabla); A[index] = Aij; } } map,ex>::iterator iter; for (iter = A.begin(); iter != A.end() ; iter++) { cout <<"A["<<(*iter).first.first<<","<<(*iter).first.second<<"]="<<(*iter).second< using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(3); //example that check scaling numeric h(1,100); //1.0/100 numeric a(1,2); ex p0 = lst(a,a,a); ex p1 = lst(a+h,a,a); ex p2 = lst(a,a+h,a); ex p3 = lst(a,a,a+h); Tetrahedron tetrahedron(p0,p1,p2,p3); ex f = 1; ex intf = tetrahedron.integrate(f); cout <<"intf "<k#K?k(K@k#KAkBKCk#KDk6›syfi-1.0.0.dfsg.orig/tests/cpp/run_all.py0000644000175000017500000000052711672223006020160 0ustar johannrjohannr#!/usr/bin/env python import glob import os import sys print "Running all tests." files = glob.glob("*.cpp") for file in files: basename = file[:-4] cmd = "./%s > %s" % (basename, basename + ".out") print cmd res = os.system(cmd) if not res == 0: print "Failure (%d) in '%s'" % (res, file) #sys.exit(res) syfi-1.0.0.dfsg.orig/tests/cpp/hermite_ex1.cpp0000644000175000017500000000331411672223006021065 0ustar johannrjohannr#include #include using namespace GiNaC; using namespace SyFi; using namespace std; int main(){ initSyFi(2); //--- 2D Hermite element Triangle triangle(lst(0,0), lst(1,0), lst(0,1)); Hermite fe; fe.set_polygon(triangle); fe.compute_basis_functions(); usage(fe); Dof dof; std::map, ex> A; compute_Poisson_element_matrix(fe, dof, A); print(A); //--- 3D Hermite element initSyFi(3); Tetrahedron tetrahedron(lst(0,0,0), lst(1,0,0), lst(0,1,0), lst(0,0,1)); Hermite fe2; fe2.set_polygon(tetrahedron); fe2.compute_basis_functions(); usage(fe2); Dof dof2; std::map, ex> A2; compute_Poisson_element_matrix(fe2, dof2, A2); print(A2); // regression test // archive ar; for (unsigned int i=0; i, ex>::iterator iter; for (iter = A.begin(); iter != A.end() ; iter++) { ar.archive_ex((*iter).second, istr("A", (*iter).first.first, (*iter).first.second).c_str()); } for (unsigned int i=0; i?@ABCDEGHIJKLMNOPQRSTUW XYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯° ±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ× ØÙÚÛÜÝ Þßàáâãä         $ * F Vsyfi-1.0.0.dfsg.orig/tests/cpp/taylorhood_ex.cpp0000644000175000017500000000210111672223006021524 0ustar johannrjohannr#include #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(2); ReferenceTriangle domain; VectorLagrange v_fe; v_fe.set_order(2); v_fe.set_size(2); v_fe.set_polygon(domain); v_fe.compute_basis_functions(); Lagrange p_fe; p_fe.set_order(1); p_fe.set_polygon(domain); p_fe.compute_basis_functions(); usage(v_fe, p_fe); Dof dof; std::map, ex> A; compute_Stokes_element_matrix(v_fe, p_fe, dof, A); print(A); // regression test archive ar; map,ex>::iterator iter; for (iter = A.begin(); iter != A.end() ; iter++) { ar.archive_ex((*iter).second, istr("A_", (*iter).first.first, (*iter).first.second).c_str()); } ofstream vfile("taylorhood_ex.gar.v"); vfile << ar; vfile.close(); if(!compare_archives("taylorhood_ex.gar.v", "taylorhood_ex.gar.r")) { cerr << "Failure!" << endl; return -1; } return 0; } syfi-1.0.0.dfsg.orig/tests/cpp/fe_ex1.cpp0000644000175000017500000000221311672223006020017 0ustar johannrjohannr#include #include using namespace GiNaC; using namespace SyFi; using namespace std; void example_of_use(FE& fe) { ex Ni; ex gradNi; ex dofi; for (unsigned int i=0; i< fe.nbf() ; i++) { Ni = fe.N(i); gradNi = grad(Ni); dofi = fe.dof(i); cout <<"The basis function, N("< #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(3); ex p0 = lst(0.0,0.0,0.0); ex p1 = lst(1.0,1.0,1.0); Line line(p0,p1); // show usage of repr symbol t("t"); ex l_repr = line.repr(t); cout <<"l.repr "< #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(2); Triangle t(lst(0,0), lst(1,0), lst(0,1)); int order = 2; ex polynom; lst variables; lst basis_functions; ex polynom_space = pol(order, 2, "a"); // the polynomial spaces on the form: // first item: a0 + a1*x + a2*y + a3*x^2 + a4*x*y ... the polynom // second item: a0, a1, a2, ... the coefficents // third item 1, x, y, x^2 the basis // Could also do: // GiNaC::ex polynom_space = bernstein(order, t, "a"); polynom = polynom_space.op(0); variables = ex_to(polynom_space.op(1)); // the variables a0,a1,a2 .. ex Nj; // The bezier ordinates (in which the basis function should be either 0 or 1) lst points = bezier_ordinates(t,order); // Loop over all basis functions Nj and all points. // Each basis function Nj is determined by a set of linear equations: // Nj(xi) = dirac(i,j) // This system of equations is then solved by lsolve for (unsigned int j=1; j <= points.nops(); j++) { lst equations; for (unsigned int i=1; i<= points.nops() ; i++ ) { // The point xi ex point = points.op(i-1); // The equation Nj(x) = dirac(i,j) ex eq = polynom == dirac(i,j); // Substitute x = xi and y = yi and appended the equation // to the list of equations equations.append(eq.subs(lst(x == point.op(0) , y == point.op(1)))); } // We solve the linear system // cout <<"equations "< #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(3); archive ar; ex p0 = lst(0.0,0.0,0.0); ex p1 = lst(1.0,0.0,0.0); ex p2 = lst(0.0,1.0,0.0); ex p3 = lst(0.0,0.0,1.0); Tetrahedron tetrahedron(p0,p1,p2,p3); ex repr = tetrahedron.repr(); cout <<"t.repr "<? @ A B C DE FGHIJ KL M B b  B b KkKkƒ b b KkKkƒ KkKkƒ KkKkƒ b KkKkK kƒ  £ £  b Kk ƒ ££  Kk ƒ ££  £ £  £ £ £ £ Kkƒ b# Kkƒsyfi-1.0.0.dfsg.orig/tests/cpp/dof_ex3.cpp0000644000175000017500000000224011672223006020177 0ustar johannrjohannr#include #include //double Ptv::tolerance = 0.0001; using namespace SyFi; using namespace std; int main() { Dof_Ptv dof(true,true); // initialization of Ptv used as dof double x[2]; x[0] = 0.0; x[1] = 0.0; Ptv p(2,x); // first triangle p[0] = 0.0; p[1] = 0.0; dof.insert_dof(0,1,p); p[0] = 1.0; p[1] = 0.0; dof.insert_dof(0,2,p); p[0] = 0.0; p[1] = 1.0; dof.insert_dof(0,3,p); // second triangle p[0] = 1.0; p[1] = 1.0; dof.insert_dof(1,1,p); p[0] = 1.0; p[1] = 0.0; dof.insert_dof(1,2,p); p[0] = 0.0; p[1] = 1.0; dof.insert_dof(1,3,p); // print out the global dofs // and their corresponding local dofs vector_ii vec; pair index; Ptv exdof; for (int i=0; i< dof.size(); i++) { exdof = dof.glob_dof(i); cout <<"global dof " < ? /Š@šA /ŠBšC D /ŠEšF /ŠGšH I /ŠJšK L /ŠMšN /ŠOšP Q /ŠRšS T .£³£ ³ £ ³ £ ³£³ £³£³ £³£³£³ £³£³« W X Y Z [ \ ] ^ .£³£ ³£ ³£ ³£³ £³!£³"£³#£³£³"£³"£³$« ` a b .£ ³&£ ³'£³£³£³(£³« d e .£³£ ³"£ ³*£ ³£³+£³£³*£³£³#£³"£³#« g h i .£³ £ ³(£ ³£ ³(£³-£³.£³(£³"£³£³(£³/£³"« .£³£ ³(£ ³&£³£³'£³&£³"£³ £³£³(£³« .£ ³'£³+£³£³.£³!« .£ ³(£³*£³ £³£³« .£ ³&£³£³ £³(£³"« .£ ³£³#£³ £³(£³"« .£ ³£³£³£³ £³« .£ ³£³ £³-£³ « r s t u .£³(£ ³8£ ³9£³8£³ £³£³:£³/£³;£³£³;« w x y .£³=£ ³>£ ³#£³£³£³ £³:£³;£³?£³*« .£ ³£ ³+£³£³*£³#« | } .£ ³"£ ³B£ ³£³£³*£³(£³C£³:£³*£³:«  €  .£³E£ ³(£ ³F£ ³*£³ £³£³£³£³G£³B£³*« .£³"£ ³/£ ³£³£³(£³(£³"£³8£³"£³(« .£ ³/£³B£³9£³F£³>« .£ ³(£³(£³£³£³ « .£ ³"£³*£³;£³G£³?« .£ ³"£³(£³E£³=« .£ ³£³£³8£³ £³« Š ‹ .£³"£ ³O£ ³£ ³ £³O£³ £³P£³"£³P£³8£³8£³«  .£³ £ ³8£ ³ £ ³ £³"£³"£³R£³(£³£³"£³;£³9«   .£ ³£ ³T£³£³ £³U£³ « .£³"£ ³"£ ³(£ ³£³8£³£³+£³"£³(£³(« “ .£³£ ³(£ ³£ ³U£³(£³(£³X£³(£³8£³(£³:£³;« .£³£ ³(£ ³£³£³&£³'£³"£³O£³£³(£³8« .£ ³'£³P£³X£³R« .£ ³£³8£³(£³"« .£ ³£³"£³"£³£³ « .£ ³£³8£³O£³(£³"« .£³(£ ³£ ³;£ ³-£³£³ £³8£³?£³/£³9£³ £³(« .£³?£ ³(£ ³?£ ³(£³"£³"£³"£³G£³(£³?£³G£³G« .£ ³(£ ³.£³ £³-£³£³(« Ÿ .£³:£ ³ £ ³*£ ³ £³;£³#£³b£³?£³E£³G« .£³G£ ³£ ³G£ ³£³(£³(£³(£³E£³ £³G£³F£³G« .£³#£ ³"£ ³(£³£³£³£³ £³£³$£³£³(« .£ ³$£³9£³G£³?« .£ ³#£³:£³(£³G£³?« .£ ³£³;£³£³(£³"« .£³+£ ³"£ ³(£ ³ £³"£³£³"£³£³!£³(£³£³"« .£³>£ ³"£ ³=£ ³"£³£³£³ £³?£³"£³?£³?£³?« .£ ³£ ³+£³£³ £³G£³"« .£³C£ ³ £ ³£³:£³£³"£³>£³£³:£³=£³?« ­ .£³F£ ³£ ³E£ ³G£³£³ £³£³=£³£³G£³m£³?« .£³$£ ³"£ ³£³£³£³£³ £³"£³#£³£³"« .£ ³$£³C£³+£³F£³>« .£ ³£³:£³"£³£³« .£³"£ ³P£ ³8£³P£³ £³O£³£³P£³« .£³£ ³£³!£³ £³"£³"« .£ ³'£ ³'£³ « .£³:£ ³R£ ³£³/£³8£³/£³£³;« .£³£ ³X£ ³ £ ³ £³.£³-£³(£³(£³+« » .£³£ ³£ ³'£³w£³£³£³R£³P£³£³X« .£ ³w£³/£³P£³.£³!« .£³.£ ³+£³£³'£³!« .£³(£ ³#£³ £³£³"« .£³-£³ £³£³ « .£³£ ³*£³ £³(£³« .£³ £ ³£³£³£³« .£³(£ ³£³ £³&£³"« .£³£ ³ £ ³£ ³ £³£³£³ £³ £³£³£³£³ « .£³"£ ³£ ³*£³£³£³"£³*£³+£³#£³£³#« .£³(£ ³&£ ³"£ ³£³&£³ £³(£³'£³£³£³« .£³"£ ³"£ ³#£ ³ £³£³£³£³£³!£³$£³£³"« .£³/£ ³(£ ³"£ ³-£³(£³£³(£³£³.£³"£³ £³(« .£³(£ ³£³'£³£³&£³« .£³G£³9£³$£³?« .£³(£ ³;£³£³£³"« .£³G£ ³*£³;£³"£³?« .£³G£ ³:£³(£³#£³?« .£³(£³8£³£³"« .£³ £ ³8£ ³?£ ³£³-£³/£³£³;£³ £³(£³(£³9« .£³E£ ³b£ ³;£³ £³?£³ £³*£³#£³G£³:« .£³£ ³£ ³ £ ³£³(£³£³"£³£³(£³#£³$« .£³G£ ³"£ ³G£ ³"£³(£³(£³(£³?£³"£³G£³?£³?« .£³F£ ³(£ ³E£ ³(£³£³ £³£³G£³(£³G£³G£³G« .£³£ ³ £³.£³-£³(£³(« .£³.£ ³/£³P£³w£³!« .£³ £ ³£³8£³£³« .£³£ ³:£³"£³£³« .£³(£ ³8£³O£³£³"« .£ ³O£ ³£ ³P£³P£³P£³8£³ £³"£³« .£ ³8£ ³/£ ³/£³£³R£³£³:£³;« .£³X£ ³£ ³R£ ³w£³'£³P£³£³£³£³« .£ ³"£ ³!£³£³ £³£³"« .£³+£ ³(£ ³.£³ £³X£³ £³-£³£³(« .£³ £³'£³'« .£³F£ ³B£³9£³/£³>« .£³E£³(£³"£³=« .£³£ ³(£³£³(£³ « .£³£ ³£ ³:£ ³8£³/£³8£³9£³ £³;£³(£³;« .£ ³(£ ³C£ ³£³£³:£³"£³B£³*£³:£³*« .£³(£ ³(£ ³"£ ³£³£³8£³/£³(£³"£³"« .£³*£ ³ £ ³:£ ³£³#£³;£³>£³£³=£³?« .£³B£ ³£ ³ £³*£³£³(£³F£³£³*£³E£³G« .£³*£ ³£³+£³£³#« .£³F£ ³C£³+£³$£³>« .£³£ ³"£³"£³£³ « .£³£ ³"£ ³£ ³"£³ £³!£³"£³(£³£³"£³+£³(« .£³=£ ³"£ ³>£ ³:£³£³£³ £³£³?£³C£³:« .£³£ ³£ ³ £ ³£³£³"£³"£³£³"£³$£³#« .£³?£ ³ £ ³?£ ³£³"£³"£³"£³=£³£³?£³>£³?« .£³m£ ³£ ³=£ ³£³G£³£³£³E£³ £³?£³F£³G« .£³G£ ³£³+£³ £³£³"« .£³X£³P£³'£³R« .£³8£ ³P£ ³"£ ³O£³ £³P£³O£³£³ £³£³"£³8« .£³(£ ³+£ ³8£³£³"£³"£³(£³£³(£³"« .£³(£ ³'£ ³"£ ³£³£³O£³(£³&£³8£³£³« .£³;£ ³R£ ³(£ ³"£³ £³£³8£³ £³"£³9£³ £³"« .£³:£ ³X£ ³(£ ³(£³U£³8£³(£³£³(£³;£³£³(« .£³U£ ³£³T£³ £³£³ «syfi-1.0.0.dfsg.orig/tests/cpp/pnpn2_ex.cpp0000644000175000017500000000201211672223006020376 0ustar johannrjohannr#include #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(2); ReferenceTriangle domain; int order = 5; VectorLagrange v_fe; v_fe.set_order(order); v_fe.set_size(2); v_fe.set_polygon(domain); v_fe.compute_basis_functions(); Lagrange p_fe; p_fe.set_order(order-2); p_fe.set_polygon(domain); p_fe.compute_basis_functions(); usage(v_fe, p_fe); Dof dof; std::map, ex> A; compute_Stokes_element_matrix(v_fe, p_fe, dof, A); // regression test archive ar; map,ex>::iterator iter; for (iter = A.begin(); iter != A.end() ; iter++) { ar.archive_ex((*iter).second, istr("A_", (*iter).first.first, (*iter).first.second).c_str()); } ofstream vfile("pnpn2_ex.gar.v"); vfile << ar; vfile.close(); if(!compare_archives("pnpn2_ex.gar.v", "pnpn2_ex.gar.r")) { cerr << "Failure!" << endl; return -1; } return 0; } syfi-1.0.0.dfsg.orig/tests/cpp/triangle_ex1.gar.r0000644000175000017500000000042411672223006021463 0ustar johannrjohannrGARCnumericclass1/24numberintflstrelationalsymbolxnamelhrrhopseqyszR1 9223372036854775808 -6301addrest-1coeffoverall_coeffrepr  J J  Sci J J Sci J  Sci  ss s  ³Ã Ë ss s  sss s ssyfi-1.0.0.dfsg.orig/tests/cpp/polh.cpp0000644000175000017500000000166511672223006017624 0ustar johannrjohannr#include #include using namespace GiNaC; using namespace std; using namespace SyFi; int main() { archive ar; int order = 3; initSyFi(1); cout <<"third order homogenous polynomial in 1D"< #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(3); symbol x0("x0"), x1("x1"), y0("y0"), y1("y1"), z0("z0"); ex p0 = lst(x0,y0,z0); ex p1 = lst(x1,y0,z0); ex p2 = lst(x0,y1,z0); Triangle triangle(p0,p1,p2); ex repr = triangle.repr(); cout <<"t.repr "<? @ AB C * J *  J  3S3Sk 3S3Sk 3S3Sk J {‹ J 3S3S3Sk  J 3S3Sk  3S3Sk {‹ 3S3 S3Sk  3S3Sk  J 3S3Sk {‹ 3 S3S3Sk  J J J$ J( J-syfi-1.0.0.dfsg.orig/tests/cpp/nljacobian_ex.cpp0000644000175000017500000001143211672223006021447 0ustar johannrjohannr#include #include using namespace GiNaC; using namespace SyFi; using namespace std; void compute_poisson_element_matrix( FE& fe, Dof& dof, std::map, ex>& A) { std::pair index; Polygon& domain = fe.get_polygon(); ex ujs = symbolic_matrix(1,fe.nbf(), "u"); ex u; for (unsigned int k=0; k< fe.nbf(); k++) { u += ujs.op(k)*fe.N(k); } for (unsigned int i=0; i< fe.nbf() ; i++) { index.first = i; ex Fi = inner(grad(u), grad(fe.N(i))); for (unsigned int j=0; j< fe.nbf() ; j++) { index.second = j; symbol uj = ex_to(ujs.op(j)); ex nabla = Fi.diff(uj,1); ex Aij = domain.integrate(nabla); A[index] += Aij; } } } void compute_nlconvdiff_element_matrix( FE& fe, Dof& dof, std::map, ex>& A) { std::pair index; Polygon& domain = fe.get_polygon(); // insert the local dofs into the global Dof object for (unsigned int i=0; i< fe.nbf() ; i++) { dof.insert_dof(1,i,fe.dof(i)); } // create the local U field: U = sum_k u_k N_k ex UU = matrix(2,1,lst(0,0)); ex ujs = symbolic_matrix(1,fe.nbf(), "u"); for (unsigned int k=0; k< fe.nbf(); k++) { UU +=ujs.op(k)*fe.N(k); // U += u_k N_k } //Get U represented as a matrix matrix U = ex_to(UU.evalm()); for (unsigned int i=0; i< fe.nbf() ; i++) { index.first = dof.glob_dof(fe.dof(i)); // fetch global dof associated with i // First: the diffusion term in Fi ex gradU = grad(U); // compute the gradient of U ex Fi_diffusion = inner(gradU, grad(fe.N(i))); // inner product of grad(U) and grad(Ni) // Second: the convection term in Fi ex Ut = U.transpose(); // get the transposed of U ex UgradU = (Ut*gradU).evalm(); // compute U*grad(U) ex Fi_convection = inner(UgradU, fe.N(i), true); // compute U*grad(U)*Ni // add together terms for convection and diffusion ex Fi = Fi_convection + Fi_diffusion; // Loop over all uj and differentiate Fi with respect // to uj to get the Jacobian Jij for (unsigned int j=0; j< fe.nbf() ; j++) { index.second = dof.glob_dof(fe.dof(j)); // fetch global dof associated with j symbol uj = ex_to(ujs.op(j)); // cast uj to a symbol ex Jij = Fi.diff(uj,1); // differentiate Fi with respect to uj ex Aij = domain.integrate(Jij); // intergrate the Jacobian Jij A[index] += Aij; // update the global matrix } } } int main() { initSyFi(2); Triangle T(lst(0,0), lst(1,0), lst(0,1), "t"); int order = 2; // First we compute a standard Poisson problem, i.e., // The differentiation of F(u_i) with respect to u_j // should give the standard Poisson problem. Lagrange fe; fe.set_order(order); fe.set_polygon(T); fe.compute_basis_functions(); Dof dof1; std::map, ex> A1; compute_poisson_element_matrix(fe,dof1,A1); print(A1); // Second we compute a nonlinear convection // diffusion problem. VectorLagrange vfe; vfe.set_order(order); vfe.set_size(2); vfe.set_polygon(T); vfe.compute_basis_functions(); usage(vfe); Dof dof2; std::map, ex> A2; compute_nlconvdiff_element_matrix(vfe,dof2,A2); cout <<"standard output"<,ex>::iterator iter; for (iter = A1.begin(); iter != A1.end() ; iter++) { ar.archive_ex((*iter).second, istr("A1_", (*iter).first.first, (*iter).first.second).c_str()); } for (iter = A2.begin(); iter != A2.end() ; iter++) { ar.archive_ex((*iter).second, istr("A2_", (*iter).first.first, (*iter).first.second).c_str()); } ofstream vfile("nljacobian_ex.gar.v"); vfile << ar; vfile.close(); if(!compare_archives("nljacobian_ex.gar.v", "nljacobian_ex.gar.r")) { cerr << "Failure!" << endl; return -1; } return 0; } syfi-1.0.0.dfsg.orig/tests/cpp/rectangle_ex1.cpp0000644000175000017500000000246511672223006021402 0ustar johannrjohannr#include #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(2); ex f = x*y; ReferenceRectangle rectangle; ex repr = rectangle.repr(); cout <<"s.repr "<p?s@wAzEF…G‰JŽK‘L”M•N–O—P˜Q™RšS›TœUVžWŸX Y¡Z¢[£\¤]¥^¦_§`¨a©bªc«d¬e­f®g¯h°i±j²k³l´mµn¶o·p¸q¹rºs»t¼u½v¾w¿xÀyÁzÂ{Ã|Ä}Å~ÆÇ€Èɂʃ˄̅͆·ψЊьҎÓґԒӔՖ֘ך؜ٞڠۢܤݦިߩԫà­á®à°â±â³ãµä¶ä¸å¹»æ¼æ½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùÒûçüÒþèÿè€ÔÖƒé„Ö†ê‡ê‰ë‹ìíî‘ï“ð•ñ—ò™ó›ôõŸö¡÷¢ä¤ø¥ø§ù¨ù©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæÓçÒèÑéÔêÒëÓì×íÖîÕïÙðØñÚóúõûöúøüùüûýüÕýÖþ×ÿØ€ÙÚ‚äƒå„ä…æ†ˆþ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÒÆèÇÔÈçÉèÊÒËòÌóÍôÎõÏöÐ÷ÑÜÓÿÔÜÖ€×€ÙÚôÛóÜòÝöÞõß÷àøáäâøä‚åæùçèéêëìíîïðñòóôõö÷øùúûüýþÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£Ô¤è¥Ò¦è§ç¨Ò©ôªó«ò¬ö­õ®÷¯î°í±ì²ð³ï´ñµÖ¶é·Ö¸ê¹êºë»ø¼ø½ä¾¿‚À‚ÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýÓþÔÿÓ€Ò҂уà„á…à†â‡âˆã‰ÝŠÜ‹ÛŒßÞŽÔ×֑Ւٓؔڕå–ä—ä˜þ™þš›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ÕØÖÙ×ÚòÛôÜàÞƒà„â…䆿‡çÝéˆë‰íŠï‹ñŒóõŽö€øúûüûþ‘€’‚“ƒ„…þ†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÖÃéÄÖÅóÆóÇáȄʔ˄͕ΕЖщӗÔêؙ֘Ùóۚݛހàœâãí䑿žçžèéêëìíîïðñòóôõö÷øùúûüýþÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§×¨Ö©Õªô«ò¬à­…®„¯ƒ°‡±†²Ý³Š´ê¶Ÿ¸ ¹ëºá¼¡½š¾ŽÀ¢Â£Ã–đœƒÇÈÉæÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€‚ƒ„…†Ø‡êˆÙ‰õŠö‹âŒ†•އ¤’¥”¦•‹–˜— ™§›¨©ž£Ÿ ¢ª¤«¥€§¬©­«®¬‚®¯¯¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìÙíêîØïöðõñâò‡ó•ô†õ¥ö¤÷¦øŒù™úëû¨ý°þêÿ¢€ œ ƒ ±„ ª† ²‡ ¬ˆ ®‰ ­Š ¯‹ ‚ ³Ž   ‘ ’ “ ” • – — ˜ ™ š › œ  ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á  à Ä Å Æ Ç È É Ê ÚË ëÌ ÚÍ ÷Î ÷Ï ãÐ ÝÑ –Ò ÝÓ ¦Ô ¦Ö ´× Ø óÙ áÚ ©Û êÜ ŒÝ –Þ íß ûà ²á €â £ä µå žæ žç þè þé ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ €  ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ  Ž   ‘ ’ “ ” • – — ˜ ™ š › œ  ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ Û§ ì¨ ú© ܪ î« Ý¬ ˆ­ ‰® Н ‹° Œ± ² ƒ³ „´ …µ †¶ ‡· ݸ Ÿ¹ êº Š» ë¼  ½ á¾ äÀ ¶ ·à Ä æÅ Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ €  ‚ ܃ í„ û… ÿ† í‡ Üˆ ‰‰ —Š ê‹ ˜Œ ™ óŽ „ ” „‘ •’ •“ –” ê• —– ‰— ™˜ ˜™ ó› ¸œ ¶ ¸ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á  à Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý ÝÞ îß úà Üá ìâ Ûã Šä êå Ÿæ  ç ëè áé …ê „ë ƒì ‡í †î Ýï Šð ‰ñ ˆò Œó ‹ô õ ·ö ¶÷ äø ù þú û ü ý þ ÿ €  ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ  Ž   ‘ ’ “ ” • – — ˜ ™ š › œ  ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · Þ¸ ï¹ üº €» ð¼ ß½ ‹¾ ˜¿  À §Á ¨ ©à †Ä •Å ‡Æ ¤Ç ¥È ¦É ëÊ ™Ë ŒÌ °Í ¨Î êÐ ¹Ò ºÔ »Õ ‚Ö ³× ³Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ €  ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ  Ž   ‘ ’ “ ” ß• ð– ü— €˜ ï™ Þš Œ› ™œ ë ¨ž °Ÿ ê  ‡¡ •¢ †£ ¥¤ ¤¥ ¦¦  § ˜¨ ‹© ¨ª §« ©¬ »­ º® ¹¯ ¯° ¯± ù² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á  à Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î Ôï ñð ýñ ò ñó Ôô õ óö á÷ ©ø êù Œú Ýû –ü Ýý ¦þ ¦ÿ ´€áó‚ƒê„©…Œ†¸ˆ¼‰¸Šþ‹ŒæŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉàÊòËÕÌôÍÖÎ×ώКѡңӢԖ՟Öê׊ØëÙ Úáۃ܄݅ކ߇àÝá’â“ã‘äþåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£á¤ó¥Ö¦ó§é¨Ö©€ª›«š¬­œ®í¯ê°—±‰²™³˜´óµ„¶”·„¸•¹•º–»ž¼ž½‘¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýàþôÿ×€òÖ‚Õƒ„€…ކ‡ˆû‰ŠŠ‰‹ˆŒŒ‹Ž…„‘ƒ’‡“†”Ý•“–’—‘˜æ™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×âØõÙØÚöÛêÜÙÝޜߢàªá±â²ãëä™åŒæ°ç¨èêé†ê•ë‡ì¤í¥î¦ï­ð®ñ¬ò¯óùô³õö÷øùúûüýþÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±â²ö³Ù´õµê¶Ø·¸¹£º«»ª¼€½ ¾˜¿‹À¨Á§Â©Ã‡Ä•ņƥǤȦɮʭˬ̳ͳÎùÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€‚ƒ„…†‡ˆ‰Š‹ãŒ÷ÚŽ÷ëÚ‘û’í“–”€•²–£—á˜ó™šê›©œŒÝž–ŸÝ ¦¡¦¢´£ž¤ž¥µ¦§æ¨æ©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåäæäçäèøéøêåë‘ì‘í‘î¬ï¬ðµñäò¸ó·ô¹õ»ö¸÷’øžù“ú­û®üžþ½€¾¾‚|ƒ|„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁäÂøÃåÄäÅøÆäǒȞɓʭˮ̞Ͷζ϶кѺҼӓԞՒ֮׭؞پڽ۾Ü~ÝÞ|ßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›åœøäžøŸä ä¡“¢ž£’¤®¥­¦ž§·¨¸©äª»«¹¬¸­‘®‘¯‘°¬±¬²µ³¾´¾µ½¶·~¸~¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöù÷æø‚ùúþûüýþ‚ÿ¯€þ‚ƒ„‚…¯†þ‡þˆ‰æŠ¯‹³Œ|Ž~‘¿“À•Á–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒæÓùÔÕÖ‚×þØÙÚۯ܂ÝþÞæßàþá³â¯ãäåæçùè³éæê|ëì~íÀî¿ïÀðñòóôõö÷øùúûüýþÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬æ­®þ¯ù°‚±²þ³´æµ¯¶³·¸¹º»³¼ù½æ¾¿ÀÁ³ÂùÃæÄÅ|Æ~ÇÁÈÀÉ¿ÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤Ñ¥Ò¦Ó§Ò¨Ô©ÓªÕ«Ö¬×­Ø®Ù¯Ú°Û±Ü²Ý³Þ´ßµÔ¶à·á¸à¹âºâ»ã¼ä½ä¾å¿ÀæÁæÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÒÿç€Òè‚èƒÔ„Ö…é†Ö‡êˆê‰ëŠì‹íŒîïŽðñò‘ó’ô“õ”ö•÷–ä—ø˜ø™ùšù›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÓÙÒÚÑÛÔÜÒÝÓÞ×ßÖàÕáÙâØãÚäúåûæúçüèüéýêÕëÖì×íØîÙïÚðäñåòäóæôõþö÷øùúûüýþÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²Ò³è´Ôµç¶è·Ò¸ò¹óºô»õ¼ö½÷¾Ü¿ÿÀÜÁ€Â€ÃÄôÅóÆòÇöÈõÉ÷ÊøËäÌøÍ‚ÎÏùÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€‚ƒ„…†‡ˆ‰Š‹ŒÔèŽÒèç‘Ò’ô“ó”ò•ö–õ—÷˜î™íšì›ðœïñžÖŸé Ö¡ê¢ê£ë¤ø¥ø¦ä§¨‚©‚ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæÓçÔèÓéÒêÒëÑìàíáîàïâðâñãòÝóÜôÛõßöÞ÷Ôø×ùÖúÕûÙüØýÚþåÿä€äþ‚þƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÕÁÖÂ×ÃòÄôÅàÆƒÇ„È…É†Ê‡ËÝ͉̈ΊϋЌÑÒŽÓ€ÔÕÖ×ûْؑړÛÜÝþÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™šÖ›éœÖóžóŸá „¡”¢„£•¤•¥–¦‰§—¨ê©˜ª™«ó¬š­›®€¯œ°±í²‘³ž´žµ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóô×õÖöÕ÷ôøòùàú…û„üƒý‡þ†ÿÝ€Šê‚Ÿƒ „ë…ᆡ‡šˆŽ‰¢Š£‹–Œ‘“Ž’‘æ’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎØÏêÐÙÑõÒöÓâԆՕևפإ٦ڋۘܠݧިߩà£áâãªä«å€æ¬ç­è®é‚ê¯ë¯ìíîïðñòóôõö÷øùúûüýþÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨Ù©êªØ«ö¬õ­â®‡¯•°†±¥²¤³¦´Œµ™¶ë·¨¸°¹êº¢»œ¼½±¾ª¿²À¬Á®Â­Ã¯Ä‚ųÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€‚Úƒë„Ú…÷†÷‡ãˆÝ‰–ŠÝ‹¦Œ¦´Žóá‘©’꓌”–•í–û—²˜€™£šµ›žœžþžþŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÛÝìÞúßÜàîáÝâˆã‰äŠå‹æŒçèƒé„ê…ë†ì‡íÝîŸïêðŠñëò óáôäõ¶ö·÷øæùúûüýþÿ€  ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ  Ž   ‘ ’ “ ” • – — ˜ ™ š › œ  ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ Ü· í¸ û¹ ÿº í» Ü¼ ‰½ —¾ ê¿ ˜À ™Á ó „à ”Ä „Å •Æ •Ç –È êÉ —Ê ‰Ë ™Ì ˜Í óÎ ¸Ï ¶Ð ¸Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ €!!‚!ƒ!„!…!†!‡!ˆ!‰!Š!‹!Œ!!Ž!!!Ý‘!î’!ú“!Ü”!ì•!Û–!Š—!ê˜!Ÿ™! š!ë›!áœ!…!„ž!ƒŸ!‡ !†¡!Ý¢!Š£!‰¤!ˆ¥!Œ¦!‹§!¨!·©!¶ª!ä«!¬!þ­!®!¯!°!±!²!³!´!µ!¶!·!¸!¹!º!»!¼!½!¾!¿!À!Á!Â!Ã!Ä!Å!Æ!Ç!È!É!Ê!Ë!Ì!Í!Î!Ï!Ð!Ñ!Ò!Ó!Ô!Õ!Ö!×!Ø!Ù!Ú!Û!Ü!Ý!Þ!ß!à!á!â!ã!ä!å!æ!ç!è!é!ê!Þë!ïì!üí!€î!ðï!ßð!‹ñ!˜ò! ó!§ô!¨õ!©ö!†÷!•ø!‡ù!¤ú!¥û!¦ü!ëý!™þ!Œÿ!°€"¨"ê‚"¹ƒ"º„"»…"‚†"³‡"³ˆ"‰"Š"‹"Œ""Ž"""‘"’"“"”"•"–"—"˜"™"š"›"œ""ž"Ÿ" "¡"¢"£"¤"¥"¦"§"¨"©"ª"«"¬"­"®"¯"°"±"²"³"´"µ"¶"·"¸"¹"º"»"¼"½"¾"¿"À"Á"Â"Ã"Ä"ßÅ"ðÆ"üÇ"€È"ïÉ"ÞÊ"ŒË"™Ì"ëÍ"¨Î"°Ï"êÐ"‡Ñ"•Ò"†Ó"¥Ô"¤Õ"¦Ö" ×"˜Ø"‹Ù"¨Ú"§Û"©Ü"»Ý"ºÞ"¹ß"¯à"¯á"ùâ"ã"ä"å"æ"ç"è"é"ê"ë"ì"í"î"ï"ð"ñ"ò"ó"ô"õ"ö"÷"ø"ù"ú"û"ü"ý"þ"ÿ"€##‚#ƒ#„#…#†#‡#ˆ#‰#Š#‹#Œ##Ž###‘#’#“#”#•#–#—#˜#™#š#›#œ##ž#ÔŸ#ñ #ý¡#¢#ñ£#Ô¤#¥#ó¦#á§#©¨#ê©#Œª#Ý«#–¬#Ý­#¦®#¦¯#´°#á±#ó²#³#ê´#©µ#Œ¶#¸·#¼¸#¸¹#þº#»#æ¼#½#¾#¿#À#Á#Â#Ã#Ä#Å#Æ#Ç#È#É#Ê#Ë#Ì#Í#Î#Ï#Ð#Ñ#Ò#Ó#Ô#Õ#Ö#×#Ø#Ù#Ú#Û#Ü#Ý#Þ#ß#à#á#â#ã#ä#å#æ#ç#è#é#ê#ë#ì#í#î#ï#ð#ñ#ò#ó#ô#õ#ö#÷#ø#àù#òú#Õû#ôü#Öý#×þ#Žÿ#š€$¡$£‚$¢ƒ$–„$Ÿ…$ê†$Ї$ëˆ$ ‰$áŠ$ƒ‹$„Œ$…$†Ž$‡$Ý$’‘$“’$‘“$þ”$•$–$—$˜$™$š$›$œ$$ž$Ÿ$ $¡$¢$£$¤$¥$¦$§$¨$©$ª$«$¬$­$®$¯$°$±$²$³$´$µ$¶$·$¸$¹$º$»$¼$½$¾$¿$À$Á$Â$Ã$Ä$Å$Æ$Ç$È$É$Ê$Ë$Ì$Í$Î$Ï$Ð$Ñ$Ò$áÓ$óÔ$ÖÕ$óÖ$é×$ÖØ$€Ù$›Ú$šÛ$Ü$œÝ$íÞ$êß$—à$‰á$™â$˜ã$óä$„å$”æ$„ç$•è$•é$–ê$žë$žì$‘í$î$ï$ð$ñ$ò$ó$ô$õ$ö$÷$ø$ù$ú$û$ü$ý$þ$ÿ$€%%‚%ƒ%„%…%†%‡%ˆ%‰%Š%‹%Œ%%Ž%%%‘%’%“%”%•%–%—%˜%™%š%›%œ%%ž%Ÿ% %¡%¢%£%¤%¥%¦%§%¨%©%ª%«%¬%à­%ô®%ׯ%ò°%Ö±%Õ²%³%€´%޵%¶%·%û¸%й%‰º%ˆ»%Œ¼%‹½%¾%…¿%„À%ƒÁ%‡Â%†Ã%ÝÄ%“Å%’Æ%‘Ç%æÈ%É%Ê%Ë%Ì%Í%Î%Ï%Ð%Ñ%Ò%Ó%Ô%Õ%Ö%×%Ø%Ù%Ú%Û%Ü%Ý%Þ%ß%à%á%â%ã%ä%å%æ%ç%è%é%ê%ë%ì%í%î%ï%ð%ñ%ò%ó%ô%õ%ö%÷%ø%ù%ú%û%ü%ý%þ%ÿ%€&&‚&ƒ&„&…&†&â‡&õˆ&؉&öŠ&ê‹&ÙŒ&&œŽ&¢&ª&±‘&²’&ë“&™”&Œ•&°–&¨—&ê˜&†™&•š&‡›&¤œ&¥&¦ž&­Ÿ&® &¬¡&¯¢&ù£&³¤&¥&¦&§&¨&©&ª&«&¬&­&®&¯&°&±&²&³&´&µ&¶&·&¸&¹&º&»&¼&½&¾&¿&À&Á&Â&Ã&Ä&Å&Æ&Ç&È&É&Ê&Ë&Ì&Í&Î&Ï&Ð&Ñ&Ò&Ó&Ô&Õ&Ö&×&Ø&Ù&Ú&Û&Ü&Ý&Þ&ß&à&âá&öâ&Ùã&õä&êå&Øæ&ç&è&£é&«ê&ªë&€ì& í&˜î&‹ï&¨ð&§ñ&©ò&‡ó&•ô&†õ&¥ö&¤÷&¦ø&®ù&­ú&¬û&³ü&³ý&ùþ&ÿ&€''‚'ƒ'„'…'†'‡'ˆ'‰'Š'‹'Œ''Ž'''‘'’'“'”'•'–'—'˜'™'š'›'œ''ž'Ÿ' '¡'¢'£'¤'¥'¦'§'¨'©'ª'«'¬'­'®'¯'°'±'²'³'´'µ'¶'·'¸'¹'º'ã»'÷¼'Ú½'÷¾'ë¿'ÚÀ'ûÁ'íÂ'–Ã'€Ä'²Å'£Æ'áÇ'óÈ'É'êÊ'©Ë'ŒÌ'ÝÍ'–Î'ÝÏ'¦Ð'¦Ñ'´Ò'žÓ'žÔ'µÕ'Ö'æ×'æØ'Ù'Ú'Û'Ü'Ý'Þ'ß'à'á'â'ã'ä'å'æ'ç'è'é'ê'ë'ì'í'î'ï'ð'ñ'ò'ó'ô'õ'ö'÷'ø'ù'ú'û'ü'ý'þ'ÿ'€((‚(ƒ(„(…(†(‡(ˆ(‰(Š(‹(Œ((Ž(((‘(’(“(”(ä•(ä–(ä—(ø˜(ø™(åš(‘›(‘œ(‘(¬ž(¬Ÿ(µ (ä¡(¸¢(·£(¹¤(»¥(¸¦(’§(ž¨(“©(­ª(®«(ž¬(½­(¾®(¾¯(|°(|±(²(³(´(µ(¶(·(¸(¹(º(»(¼(½(¾(¿(À(Á(Â(Ã(Ä(Å(Æ(Ç(È(É(Ê(Ë(Ì(Í(Î(Ï(Ð(Ñ(Ò(Ó(Ô(Õ(Ö(×(Ø(Ù(Ú(Û(Ü(Ý(Þ(ß(à(á(â(ã(ä(å(æ(ç(è(é(ê(ë(ì(í(î(äï(øð(åñ(äò(øó(äô(’õ(žö(“÷(­ø(®ù(žú(¶û(¶ü(¶ý(ºþ(ºÿ(¼€)“)ž‚)’ƒ)®„)­…)ž†)¾‡)½ˆ)¾‰)~Š)‹)|Œ))Ž)))‘)’)“)”)•)–)—)˜)™)š)›)œ))ž)Ÿ) )¡)¢)£)¤)¥)¦)§)¨)©)ª)«)¬)­)®)¯)°)±)²)³)´)µ)¶)·)¸)¹)º)»)¼)½)¾)¿)À)Á)Â)Ã)Ä)Å)Æ)Ç)È)åÉ)øÊ)äË)øÌ)äÍ)äÎ)“Ï)žÐ)’Ñ)®Ò)­Ó)žÔ)·Õ)¸Ö)ä×)»Ø)¹Ù)¸Ú)‘Û)‘Ü)‘Ý)¬Þ)¬ß)µà)¾á)¾â)½ã)ä)~å)~æ)ç)è)é)ê)ë)ì)í)î)ï)ð)ñ)ò)ó)ô)õ)ö)÷)ø)ù)ú)û)ü)ý)þ)ÿ)€**‚*ƒ*„*…*†*‡*ˆ*‰*Š*‹*Œ**Ž***‘*’*“*”*•*–*—*˜*™*š*›*œ**ž*Ÿ* *¡*¢*£*ù¤*æ¥*‚¦*§*þ¨*©*ª*«*‚¬*¯­*þ®*¯*°*±*‚²*¯³*þ´*þµ*¶*æ·*¯¸*³¹*º*|»*~¼*½*¿¾*À¿*ÁÀ*Á*Â*Ã*Ä*Å*Æ*Ç*È*É*Ê*Ë*Ì*Í*Î*Ï*Ð*Ñ*Ò*Ó*Ô*Õ*Ö*×*Ø*Ù*Ú*Û*Ü*Ý*Þ*ß*à*á*â*ã*ä*å*æ*ç*è*é*ê*ë*ì*í*î*ï*ð*ñ*ò*ó*ô*õ*ö*÷*ø*ù*ú*û*ü*æý*ùþ*ÿ*€+‚+þ‚+ƒ+„+…+¯†+‚‡+þˆ+æ‰+Š+þ‹+³Œ+¯+Ž+++‘+ù’+³“+æ”+|•+–+~—+À˜+¿™+Àš+›+œ++ž+Ÿ+ +¡+¢+£+¤+¥+¦+§+¨+©+ª+«+¬+­+®+¯+°+±+²+³+´+µ+¶+·+¸+¹+º+»+¼+½+¾+¿+À+Á+Â+Ã+Ä+Å+Æ+Ç+È+É+Ê+Ë+Ì+Í+Î+Ï+Ð+Ñ+Ò+Ó+Ô+Õ+Ö+æ×+Ø+þÙ+ùÚ+‚Û+Ü+þÝ+Þ+æß+¯à+³á+â+ã+ä+å+³æ+ùç+æè+é+ê+ë+³ì+ùí+æî+ï+|ð+~ñ+Áò+Àó+¿ô+õ+ö+÷+ø+ù+ú+û+ü+ý+þ+ÿ+€,,‚,ƒ,„,…,†,‡,ˆ,‰,Š,‹,Œ,,Ž,,,‘,’,“,”,•,–,—,˜,™,š,›,œ,,ž,Ÿ, ,¡,¢,£,¤,¥,¦,§,¨,©,ª,«,¬,­,®,¯,°,±,²,³,´,µ,¶,·,¸,¹,º,»,¼,½,¾,¿,À,Á,Â,Ã,Ä,Å,Æ,Ç,È,É,Ê,Ë,Ì,Í,Î,ÑÏ,ÒÐ,ÓÑ,ÒÒ,ÔÓ,ÓÔ,ÕÕ,ÖÖ,××,ØØ,ÙÙ,ÚÚ,ÛÛ,ÜÜ,ÝÝ,ÞÞ,ßß,Ôà,àá,áâ,àã,âä,âå,ãæ,äç,äè,åé,ê,æë,æì,í,î,ï,ð,ñ,ò,ó,ô,õ,ö,÷,ø,ù,ú,û,ü,ý,þ,ÿ,€--‚-ƒ-„-…-†-‡-ˆ-‰-Š-‹-Œ--Ž---‘-’-“-”-•-–-—-˜-™-š-›-œ--ž-Ÿ- -¡-¢-£-¤-¥-¦-§-¨-Ò©-çª-Ò«-è¬-è­-Ô®-Ö¯-é°-Ö±-ê²-ê³-ë´-ìµ-í¶-î·-ï¸-ð¹-ñº-ò»-ó¼-ô½-õ¾-ö¿-÷À-äÁ-øÂ-øÃ-ùÄ-ùÅ-Æ-Ç-È-É-Ê-Ë-Ì-Í-Î-Ï-Ð-Ñ-Ò-Ó-Ô-Õ-Ö-×-Ø-Ù-Ú-Û-Ü-Ý-Þ-ß-à-á-â-ã-ä-å-æ-ç-è-é-ê-ë-ì-í-î-ï-ð-ñ-ò-ó-ô-õ-ö-÷-ø-ù-ú-û-ü-ý-þ-ÿ-€..‚.Óƒ.Ò„.Ñ….Ô†.Ò‡.Óˆ.׉.ÖŠ.Õ‹.ÙŒ.Ø.ÚŽ.ú.û.ú‘.ü’.ü“.ý”.Õ•.Ö–.×—.ؘ.Ù™.Úš.ä›.åœ.ä.æž.Ÿ.þ .¡.¢.£.¤.¥.¦.§.¨.©.ª.«.¬.­.®.¯.°.±.².³.´.µ.¶.·.¸.¹.º.».¼.½.¾.¿.À.Á.Â.Ã.Ä.Å.Æ.Ç.È.É.Ê.Ë.Ì.Í.Î.Ï.Ð.Ñ.Ò.Ó.Ô.Õ.Ö.×.Ø.Ù.Ú.Û.Ü.ÒÝ.èÞ.Ôß.çà.èá.Òâ.òã.óä.ôå.õæ.öç.÷è.Üé.ÿê.Üë.€ì.€í.î.ôï.óð.òñ.öò.õó.÷ô.øõ.äö.ø÷.‚ø.ù.ùú.û.ü.ý.þ.ÿ.€//‚/ƒ/„/…/†/‡/ˆ/‰/Š/‹/Œ//Ž///‘/’/“/”/•/–/—/˜/™/š/›/œ//ž/Ÿ/ /¡/¢/£/¤/¥/¦/§/¨/©/ª/«/¬/­/®/¯/°/±/²/³/´/µ/¶/Ô·/è¸/Ò¹/èº/ç»/Ò¼/ô½/ó¾/ò¿/öÀ/õÁ/÷Â/îÃ/íÄ/ìÅ/ðÆ/ïÇ/ñÈ/ÖÉ/éÊ/ÖË/êÌ/êÍ/ëÎ/øÏ/øÐ/äÑ/Ò/‚Ó/‚Ô/Õ/Ö/×/Ø/Ù/Ú/Û/Ü/Ý/Þ/ß/à/á/â/ã/ä/å/æ/ç/è/é/ê/ë/ì/í/î/ï/ð/ñ/ò/ó/ô/õ/ö/÷/ø/ù/ú/û/ü/ý/þ/ÿ/€00‚0ƒ0„0…0†0‡0ˆ0‰0Š0‹0Œ00Ž000Ó‘0Ô’0Ó“0Ò”0Ò•0Ñ–0à—0á˜0à™0âš0â›0ãœ0Ý0Üž0ÛŸ0ß 0Þ¡0Ô¢0×£0Ö¤0Õ¥0Ù¦0ا0Ú¨0å©0äª0ä«0þ¬0þ­0®0¯0°0±0²0³0´0µ0¶0·0¸0¹0º0»0¼0½0¾0¿0À0Á0Â0Ã0Ä0Å0Æ0Ç0È0É0Ê0Ë0Ì0Í0Î0Ï0Ð0Ñ0Ò0Ó0Ô0Õ0Ö0×0Ø0Ù0Ú0Û0Ü0Ý0Þ0ß0à0á0â0ã0ä0å0æ0ç0è0é0ê0Õë0Öì0×í0òî0ôï0àð0ƒñ0„ò0…ó0†ô0‡õ0Ýö0ˆ÷0‰ø0Šù0‹ú0Œû0ü0Žý0€þ0ÿ0€11û‚1‘ƒ1’„1“…1†1‡1þˆ1‰1Š1‹1Œ11Ž111‘1’1“1”1•1–1—1˜1™1š1›1œ11ž1Ÿ1 1¡1¢1£1¤1¥1¦1§1¨1©1ª1«1¬1­1®1¯1°1±1²1³1´1µ1¶1·1¸1¹1º1»1¼1½1¾1¿1À1Á1Â1Ã1Ä1ÖÅ1éÆ1ÖÇ1óÈ1óÉ1áÊ1„Ë1”Ì1„Í1•Î1•Ï1–Ð1‰Ñ1—Ò1êÓ1˜Ô1™Õ1óÖ1š×1›Ø1€Ù1œÚ1Û1íÜ1‘Ý1žÞ1žß1à1á1â1ã1ä1å1æ1ç1è1é1ê1ë1ì1í1î1ï1ð1ñ1ò1ó1ô1õ1ö1÷1ø1ù1ú1û1ü1ý1þ1ÿ1€22‚2ƒ2„2…2†2‡2ˆ2‰2Š2‹2Œ22Ž222‘2’2“2”2•2–2—2˜2™2š2›2œ22ž2ן2Ö 2Õ¡2ô¢2ò£2à¤2…¥2„¦2ƒ§2‡¨2†©2ݪ2Š«2ê¬2Ÿ­2 ®2ë¯2á°2¡±2š²2޳2¢´2£µ2–¶2‘·2“¸2’¹2º2»2æ¼2½2¾2¿2À2Á2Â2Ã2Ä2Å2Æ2Ç2È2É2Ê2Ë2Ì2Í2Î2Ï2Ð2Ñ2Ò2Ó2Ô2Õ2Ö2×2Ø2Ù2Ú2Û2Ü2Ý2Þ2ß2à2á2â2ã2ä2å2æ2ç2è2é2ê2ë2ì2í2î2ï2ð2ñ2ò2ó2ô2õ2ö2÷2ø2Øù2êú2Ùû2õü2öý2âþ2†ÿ2•€3‡3¤‚3¥ƒ3¦„3‹…3˜†3 ‡3§ˆ3¨‰3©Š3£‹3Œ33ªŽ3«3€3¬‘3­’3®“3‚”3¯•3¯–3—3˜3™3š3›3œ33ž3Ÿ3 3¡3¢3£3¤3¥3¦3§3¨3©3ª3«3¬3­3®3¯3°3±3²3³3´3µ3¶3·3¸3¹3º3»3¼3½3¾3¿3À3Á3Â3Ã3Ä3Å3Æ3Ç3È3É3Ê3Ë3Ì3Í3Î3Ï3Ð3Ñ3Ò3ÙÓ3êÔ3ØÕ3öÖ3õ×3âØ3‡Ù3•Ú3†Û3¥Ü3¤Ý3¦Þ3Œß3™à3ëá3¨â3°ã3êä3¢å3œæ3ç3±è3ªé3²ê3¬ë3®ì3­í3¯î3‚ï3³ð3ñ3ò3ó3ô3õ3ö3÷3ø3ù3ú3û3ü3ý3þ3ÿ3€44‚4ƒ4„4…4†4‡4ˆ4‰4Š4‹4Œ44Ž444‘4’4“4”4•4–4—4˜4™4š4›4œ44ž4Ÿ4 4¡4¢4£4¤4¥4¦4§4¨4©4ª4«4¬4Ú­4ë®4Ú¯4÷°4÷±4ã²4ݳ4–´4ݵ4¦¶4¦·4´¸4¹4óº4á»4©¼4ê½4Œ¾4–¿4íÀ4ûÁ4²Â4€Ã4£Ä4µÅ4žÆ4žÇ4þÈ4þÉ4Ê4Ë4Ì4Í4Î4Ï4Ð4Ñ4Ò4Ó4Ô4Õ4Ö4×4Ø4Ù4Ú4Û4Ü4Ý4Þ4ß4à4á4â4ã4ä4å4æ4ç4è4é4ê4ë4ì4í4î4ï4ð4ñ4ò4ó4ô4õ4ö4÷4ø4ù4ú4û4ü4ý4þ4ÿ4€55‚5ƒ5„5…5†5Û‡5ìˆ5ú‰5ÜŠ5î‹5ÝŒ5ˆ5‰Ž5Š5‹5Œ‘5’5ƒ“5„”5…•5†–5‡—5ݘ5Ÿ™5êš5Š›5ëœ5 5áž5äŸ5¶ 5·¡5¢5æ£5¤5¥5¦5§5¨5©5ª5«5¬5­5®5¯5°5±5²5³5´5µ5¶5·5¸5¹5º5»5¼5½5¾5¿5À5Á5Â5Ã5Ä5Å5Æ5Ç5È5É5Ê5Ë5Ì5Í5Î5Ï5Ð5Ñ5Ò5Ó5Ô5Õ5Ö5×5Ø5Ù5Ú5Û5Ü5Ý5Þ5ß5à5Üá5íâ5ûã5ÿä5íå5Üæ5‰ç5—è5êé5˜ê5™ë5óì5„í5”î5„ï5•ð5•ñ5–ò5êó5—ô5‰õ5™ö5˜÷5óø5¸ù5¶ú5¸û5ü5ý5þ5ÿ5€66‚6ƒ6„6…6†6‡6ˆ6‰6Š6‹6Œ66Ž666‘6’6“6”6•6–6—6˜6™6š6›6œ66ž6Ÿ6 6¡6¢6£6¤6¥6¦6§6¨6©6ª6«6¬6­6®6¯6°6±6²6³6´6µ6¶6·6¸6¹6º6Ý»6î¼6ú½6ܾ6ì¿6ÛÀ6ŠÁ6êÂ6ŸÃ6 Ä6ëÅ6áÆ6…Ç6„È6ƒÉ6‡Ê6†Ë6ÝÌ6ŠÍ6‰Î6ˆÏ6ŒÐ6‹Ñ6Ò6·Ó6¶Ô6äÕ6Ö6þ×6Ø6Ù6Ú6Û6Ü6Ý6Þ6ß6à6á6â6ã6ä6å6æ6ç6è6é6ê6ë6ì6í6î6ï6ð6ñ6ò6ó6ô6õ6ö6÷6ø6ù6ú6û6ü6ý6þ6ÿ6€77‚7ƒ7„7…7†7‡7ˆ7‰7Š7‹7Œ77Ž777‘7’7“7”7Þ•7ï–7ü—7€˜7ð™7ßš7‹›7˜œ7 7§ž7¨Ÿ7© 7†¡7•¢7‡£7¤¤7¥¥7¦¦7ë§7™¨7Œ©7°ª7¨«7ê¬7¹­7º®7»¯7‚°7³±7³²7³7´7µ7¶7·7¸7¹7º7»7¼7½7¾7¿7À7Á7Â7Ã7Ä7Å7Æ7Ç7È7É7Ê7Ë7Ì7Í7Î7Ï7Ð7Ñ7Ò7Ó7Ô7Õ7Ö7×7Ø7Ù7Ú7Û7Ü7Ý7Þ7ß7à7á7â7ã7ä7å7æ7ç7è7é7ê7ë7ì7í7î7ßï7ðð7üñ7€ò7ïó7Þô7Œõ7™ö7ë÷7¨ø7°ù7êú7‡û7•ü7†ý7¥þ7¤ÿ7¦€8 8˜‚8‹ƒ8¨„8§…8©†8»‡8ºˆ8¹‰8¯Š8¯‹8ùŒ88Ž888‘8’8“8”8•8–8—8˜8™8š8›8œ88ž8Ÿ8 8¡8¢8£8¤8¥8¦8§8¨8©8ª8«8¬8­8®8¯8°8±8²8³8´8µ8¶8·8¸8¹8º8»8¼8½8¾8¿8À8Á8Â8Ã8Ä8Å8Æ8Ç8È8ÔÉ8ñÊ8ýË8Ì8ñÍ8ÔÎ8Ï8óÐ8áÑ8©Ò8êÓ8ŒÔ8ÝÕ8–Ö8Ý×8¦Ø8¦Ù8´Ú8áÛ8óÜ8Ý8êÞ8©ß8Œà8¸á8¼â8¸ã8þä8å8ææ8ç8è8é8ê8ë8ì8í8î8ï8ð8ñ8ò8ó8ô8õ8ö8÷8ø8ù8ú8û8ü8ý8þ8ÿ8€99‚9ƒ9„9…9†9‡9ˆ9‰9Š9‹9Œ99Ž999‘9’9“9”9•9–9—9˜9™9š9›9œ99ž9Ÿ9 9¡9¢9à£9ò¤9Õ¥9ô¦9Ö§9ר9Ž©9šª9¡«9£¬9¢­9–®9Ÿ¯9ê°9б9ë²9 ³9á´9ƒµ9„¶9…·9†¸9‡¹9ݺ9’»9“¼9‘½9þ¾9¿9À9Á9Â9Ã9Ä9Å9Æ9Ç9È9É9Ê9Ë9Ì9Í9Î9Ï9Ð9Ñ9Ò9Ó9Ô9Õ9Ö9×9Ø9Ù9Ú9Û9Ü9Ý9Þ9ß9à9á9â9ã9ä9å9æ9ç9è9é9ê9ë9ì9í9î9ï9ð9ñ9ò9ó9ô9õ9ö9÷9ø9ù9ú9û9ü9áý9óþ9Öÿ9ó€:é:Ö‚:€ƒ:›„:š…:†:œ‡:íˆ:ê‰:—Š:‰‹:™Œ:˜:óŽ:„:”:„‘:•’:•“:–”:ž•:ž–:‘—:˜:™:š:›:œ::ž:Ÿ: :¡:¢:£:¤:¥:¦:§:¨:©:ª:«:¬:­:®:¯:°:±:²:³:´:µ:¶:·:¸:¹:º:»:¼:½:¾:¿:À:Á:Â:Ã:Ä:Å:Æ:Ç:È:É:Ê:Ë:Ì:Í:Î:Ï:Ð:Ñ:Ò:Ó:Ô:Õ:Ö:à×:ôØ:×Ù:òÚ:ÖÛ:ÕÜ:Ý:€Þ:Žß:à:á:ûâ:Šã:‰ä:ˆå:Œæ:‹ç:è:…é:„ê:ƒë:‡ì:†í:Ýî:“ï:’ð:‘ñ:æò:ó:ô:õ:ö:÷:ø:ù:ú:û:ü:ý:þ:ÿ:€;;‚;ƒ;„;…;†;‡;ˆ;‰;Š;‹;Œ;;Ž;;;‘;’;“;”;•;–;—;˜;™;š;›;œ;;ž;Ÿ; ;¡;¢;£;¤;¥;¦;§;¨;©;ª;«;¬;­;®;¯;°;â±;õ²;س;ö´;êµ;Ù¶;·;œ¸;¢¹;ªº;±»;²¼;ë½;™¾;Œ¿;°À;¨Á;êÂ;†Ã;•Ä;‡Å;¤Æ;¥Ç;¦È;­É;®Ê;¬Ë;¯Ì;ùÍ;³Î;Ï;Ð;Ñ;Ò;Ó;Ô;Õ;Ö;×;Ø;Ù;Ú;Û;Ü;Ý;Þ;ß;à;á;â;ã;ä;å;æ;ç;è;é;ê;ë;ì;í;î;ï;ð;ñ;ò;ó;ô;õ;ö;÷;ø;ù;ú;û;ü;ý;þ;ÿ;€<<‚<ƒ<„<…<†<‡<ˆ<‰<Š<â‹<öŒ<Ù<õŽ<ê<Ø<‘<’<£“<«”<ª•<€–< —<˜˜<‹™<¨š<§›<©œ<‡<•ž<†Ÿ<¥ <¤¡<¦¢<®£<­¤<¬¥<³¦<³§<ù¨<©<ª<«<¬<­<®<¯<°<±<²<³<´<µ<¶<·<¸<¹<º<»<¼<½<¾<¿<À<Á<Â<Ã<Ä<Å<Æ<Ç<È<É<Ê<Ë<Ì<Í<Î<Ï<Ð<Ñ<Ò<Ó<Ô<Õ<Ö<×<Ø<Ù<Ú<Û<Ü<Ý<Þ<ß<à<á<â<ã<ä<ãå<÷æ<Úç<÷è<ëé<Úê<ûë<íì<–í<€î<²ï<£ð<áñ<óò<ó<êô<©õ<Œö<Ý÷<–ø<Ýù<¦ú<¦û<´ü<žý<žþ<µÿ<€=æ=æ‚=ƒ=„=…=†=‡=ˆ=‰=Š=‹=Œ==Ž===‘=’=“=”=•=–=—=˜=™=š=›=œ==ž=Ÿ= =¡=¢=£=¤=¥=¦=§=¨=©=ª=«=¬=­=®=¯=°=±=²=³=´=µ=¶=·=¸=¹=º=»=¼=½=¾=ä¿=äÀ=äÁ=øÂ=øÃ=åÄ=‘Å=‘Æ=‘Ç=¬È=¬É=µÊ=äË=¸Ì=·Í=¹Î=»Ï=¸Ð=’Ñ=žÒ=“Ó=­Ô=®Õ=žÖ=½×=¾Ø=¾Ù=|Ú=|Û=Ü=Ý=Þ=ß=à=á=â=ã=ä=å=æ=ç=è=é=ê=ë=ì=í=î=ï=ð=ñ=ò=ó=ô=õ=ö=÷=ø=ù=ú=û=ü=ý=þ=ÿ=€>>‚>ƒ>„>…>†>‡>ˆ>‰>Š>‹>Œ>>Ž>>>‘>’>“>”>•>–>—>˜>ä™>øš>å›>äœ>ø>äž>’Ÿ>ž >“¡>­¢>®£>ž¤>¶¥>¶¦>¶§>º¨>º©>¼ª>“«>ž¬>’­>®®>­¯>ž°>¾±>½²>¾³>~´>µ>|¶>·>¸>¹>º>»>¼>½>¾>¿>À>Á>Â>Ã>Ä>Å>Æ>Ç>È>É>Ê>Ë>Ì>Í>Î>Ï>Ð>Ñ>Ò>Ó>Ô>Õ>Ö>×>Ø>Ù>Ú>Û>Ü>Ý>Þ>ß>à>á>â>ã>ä>å>æ>ç>è>é>ê>ë>ì>í>î>ï>ð>ñ>ò>åó>øô>äõ>øö>ä÷>äø>“ù>žú>’û>®ü>­ý>žþ>·ÿ>¸€?ä?»‚?¹ƒ?¸„?‘…?‘†?‘‡?¬ˆ?¬‰?µŠ?¾‹?¾Œ?½?Ž?~?~?‘?’?“?”?•?–?—?˜?™?š?›?œ??ž?Ÿ? ?¡?¢?£?¤?¥?¦?§?¨?©?ª?«?¬?­?®?¯?°?±?²?³?´?µ?¶?·?¸?¹?º?»?¼?½?¾?¿?À?Á?Â?Ã?Ä?Å?Æ?Ç?È?É?Ê?Ë?Ì?Í?ùÎ?æÏ?‚Ð?Ñ?þÒ?Ó?Ô?Õ?‚Ö?¯×?þØ?Ù?Ú?Û?‚Ü?¯Ý?þÞ?þß?à?æá?¯â?³ã?ä?|å?~æ?ç?¿è?Àé?Áê?ë?ì?í?î?ï?ð?ñ?ò?ó?ô?õ?ö?÷?ø?ù?ú?û?ü?ý?þ?ÿ?€@@‚@ƒ@„@…@†@‡@ˆ@‰@Š@‹@Œ@@Ž@@@‘@’@“@”@•@–@—@˜@™@š@›@œ@@ž@Ÿ@ @¡@¢@£@¤@¥@¦@æ§@ù¨@©@ª@‚«@þ¬@­@®@¯@¯°@‚±@þ²@æ³@´@þµ@³¶@¯·@¸@¹@º@»@ù¼@³½@æ¾@|¿@À@~Á@ÀÂ@¿Ã@ÀÄ@Å@Æ@Ç@È@É@Ê@Ë@Ì@Í@Î@Ï@Ð@Ñ@Ò@Ó@Ô@Õ@Ö@×@Ø@Ù@Ú@Û@Ü@Ý@Þ@ß@à@á@â@ã@ä@å@æ@ç@è@é@ê@ë@ì@í@î@ï@ð@ñ@ò@ó@ô@õ@ö@÷@ø@ù@ú@û@ü@ý@þ@ÿ@€AæA‚AþƒAù„A‚…A†Aþ‡AˆAæ‰A¯ŠA³‹AŒAAŽAA³Aù‘Aæ’A“A”A•A³–Aù—Aæ˜A™A|šA~›AÁœAÀA¿žAßAÄ AÅ¡AÆ¢AÇ£AȤAÉ¥AʦA˧ĄAÍ©AΪAÑ­AÖ®AÙ¯AܰAß±Aâ²Aå³Aè´AëµAî¶Aï·Að¸Añ¹AòºAó»Aô¼Aõ½Aö¾A÷¿AøÀAùÁAúÂAûÃAüÄAýÅAþÆAÿÇA€ÈAÉA‚ƒ B b  B B b KkKkKk‹ KkKk‹ b KkKk‹ b b «»  KkKk‹ b b KkKk K k K k ‹ «»  KkKk‹ KkKk‹ Kk Kk Kk Kk‹ «»  b KkKk‹ b KkKkK k Kk ‹ ÓÓÓÓÓÓÓÓÓ b KkKkK k K k‹ b b Kk KkKkKk‹ Kk KkK kKk‹ ÓÓÓÓÓÓÓÓÓ KkKk K k K k ‹ KkKk Kk Kk‹ Kk KkK k Kk ‹ Ó!Ó"Ó#ÓÓÓÓÓÓ KkKkK k K k‹ Kk KkKkKk‹ Kk KkK kKk‹ Ó%Ó&Ó'ÓÓÓÓÓÓ KkKkK k K k‹ Kk KkKkKk‹ Kk KkK kKk‹ Ó)Ó*Ó+ÓÓÓÓÓÓ KkKk K kK k ‹ Kk Kk Kk Kk‹ Kk KkK k Kk ‹ Ó-Ó.Ó/ÓÓÓÓÓÓ «»  b& b' b( KkKk Kk K1k KkKk2K k Kk3Kk4‹ KkKkKkKk ‹ b) Kk7Kk K kKk‹ Ó5Ó6Ó8ÓÓÓÓÓÓ b+ b, KkKk KkK1k Kk Kk:K kKk;Kk:‹ b- KkKkKk=Kk‹ KkKkK kKk=‹ Ó<Ó>Ó?ÓÓÓÓÓÓ KkKkKk K1k Kk Kk4K k Kk3Kk2‹ Kk7KkKkKk ‹ KkKk K kKk‹ ÓAÓBÓCÓÓÓÓÓÓ b0 b1 KkKk Kk K1k Kk KkEK kKkFKk:‹ KkKkKkKk‹ KkKkK kKk‹ ÓGÓHÓIÓÓÓÓÓÓ KkKk KkK1k Kk Kk:K k KkFKkE‹ KkKkKkKk‹ KkKkK kKk‹ ÓKÓLÓMÓÓÓÓÓÓ b4 KkKk Kk K1kKk Kk2K k KkOKk2‹ KkKkKkKk ‹ KkKk K kKk‹ ÓPÓQÓRÓÓÓÓÓÓ KkOKkK kK1kKk7Kk3K k2KkKk ‹ ÓÓTÓÓÓÓÓÓÓ KkFKkK kK1kKkKkFK kEKkKk ‹ Ó%ÓVÓ'ÓÓÓÓÓÓ Kk3KkK k7K1kKkKkOK k2KkKk ‹ Ó-ÓXÓ/ÓÓÓÓÓÓ KkKk K k K k‹ KkFKkK kK1kKkKk;K k:KkKk‹ Kk Kk=K kKk‹ ÓZÓ[Ó\ÓÓÓÓÓÓ Kk=KkK k K k‹ Kk;KkK kK1kKkKkFK k:KkKk‹ Kk KkK kKk ‹ Ó^Ó_Ó`ÓÓÓÓÓÓ KkKk K k K k ‹ Kk3KkK kK1k7KkKk3K k4KkKk ‹ Kk KkK k Kk ‹ ÓbÓcÓdÓÓÓÓÓÓ Kk KkK kK k‹ Kk4KkKk3K k K1k KkK k Kk Kk2‹ ÓfÓBÓgÓÓÓÓÓÓ KkKk=K kK k‹ KkKk=KkKk‹ Kk:Kk Kk;K k K1k KkK kKkKk:‹ ÓiÓjÓkÓÓÓÓÓÓ Kk KkK k7K k‹ KkKkKkKk ‹ Kk2Kk Kk3K kK1k KkK k Kk Kk4‹ ÓmÓnÓoÓÓÓÓÓÓ KkKkK kK k‹ Kk:Kk KkFK k K1k KkK k KkKkE‹ ÓqÓLÓrÓÓÓÓÓÓ KkKkK kK k‹ KkKkKkKk‹ KkEKk KkFK k K1k KkK kKk Kk:‹ ÓtÓuÓvÓÓÓÓÓÓ Kk KkK kK k‹ Kk2Kk KkOK k K1kKkK k Kk Kk2‹ ÓxÓQÓyÓÓÓÓÓÓ bB bC Kk{Kk|K k|‹ bD Kk~Kk~‹ Kk~K k~‹ Ó}ÓÓ€ÓÓÓÓÓÓ Kk~Kk~‹ Kk|Kk|Kk{‹ Kk~Kk~‹ Ó‚ÓƒÓ„ÓÓÓÓÓÓ Kk~K k~‹ Kk~Kk~‹ Kk{K k|Kk|‹ Ó†Ó‡ÓˆÓÓÓÓÓÓ bH KkŠKkŠ‹ bI KkŒKkŒ‹ Ó‹ÓÓÓÓÓÓÓÓ KkŠK kŠ‹ KkŒK kŒ‹ ÓÓÓÓÓÓÓÓÓ KkŠKkŠ‹ KkŒKkŒ‹ ÓÓ’Ó“ÓÓÓÓÓÓ ÓÓÓÓÓÓÓÓÓ ÓÓÓÓÓÓÓÓÓ ÓÓÓÓ!Ó"Ó#ÓÓÓ ÓÓÓÓ%Ó&Ó'ÓÓÓ ÓÓÓÓ)Ó*Ó+ÓÓÓ ÓÓÓÓ-Ó.Ó/ÓÓÓ ÓÓÓÓ5Ó6Ó8ÓÓÓ ÓÓÓÓ<Ó>Ó?ÓÓÓ ÓÓÓÓAÓBÓCÓÓÓ ÓÓÓÓGÓHÓIÓÓÓ ÓÓÓÓKÓLÓMÓÓÓ ÓÓÓÓPÓQÓRÓÓÓ ÓÓÓÓÓTÓÓÓÓ ÓÓÓÓ%ÓVÓ'ÓÓÓ ÓÓÓÓ-ÓXÓ/ÓÓÓ ÓÓÓÓZÓ[Ó\ÓÓÓ ÓÓÓÓ^Ó_Ó`ÓÓÓ ÓÓÓÓbÓcÓdÓÓÓ ÓÓÓÓfÓBÓgÓÓÓ ÓÓÓÓiÓjÓkÓÓÓ ÓÓÓÓmÓnÓoÓÓÓ ÓÓÓÓqÓLÓrÓÓÓ ÓÓÓÓtÓuÓvÓÓÓ ÓÓÓÓxÓQÓyÓÓÓ ÓÓÓÓ}ÓÓ€ÓÓÓ ÓÓÓÓ‚ÓƒÓ„ÓÓÓ ÓÓÓÓ†Ó‡ÓˆÓÓÓ ÓÓÓÓ‹ÓÓÓÓÓ ÓÓÓÓÓÓÓÓÓ ÓÓÓÓÓ’Ó“ÓÓÓ ÓÓÓÓÓÓÓÓÓ ÓÓÓÓÓÓÓÓÓ ÓÓÓÓÓÓÓ!Ó"Ó# ÓÓÓÓÓÓÓ%Ó&Ó' ÓÓÓÓÓÓÓ)Ó*Ó+ ÓÓÓÓÓÓÓ-Ó.Ó/ ÓÓÓÓÓÓÓ5Ó6Ó8 ÓÓÓÓÓÓÓ<Ó>Ó? ÓÓÓÓÓÓÓAÓBÓC ÓÓÓÓÓÓÓGÓHÓI ÓÓÓÓÓÓÓKÓLÓM ÓÓÓÓÓÓÓPÓQÓR ÓÓÓÓÓÓÓÓTÓ ÓÓÓÓÓÓÓ%ÓVÓ' ÓÓÓÓÓÓÓ-ÓXÓ/ ÓÓÓÓÓÓÓZÓ[Ó\ ÓÓÓÓÓÓÓ^Ó_Ó` ÓÓÓÓÓÓÓbÓcÓd ÓÓÓÓÓÓÓfÓBÓg ÓÓÓÓÓÓÓiÓjÓk ÓÓÓÓÓÓÓmÓnÓo ÓÓÓÓÓÓÓqÓLÓr ÓÓÓÓÓÓÓtÓuÓv ÓÓÓÓÓÓÓxÓQÓy ÓÓÓÓÓÓÓ}ÓÓ€ ÓÓÓÓÓÓÓ‚ÓƒÓ„ ÓÓÓÓÓÓÓ†Ó‡Óˆ ÓÓÓÓÓÓÓ‹ÓÓ ÓÓÓÓÓÓÓÓÓ ÓÓÓÓÓÓÓÓ’Ó“ b‰ b‹ b b b“ b• b— b™ b› b bŸ b¡ b£ b¥ b§ bª b¬ b¯ b² b´ b· bº bú bý b‚ b… bˆ bŠ bŒ bŽ b b’ b” b– b˜ bš bœ bž b  b£ b¦ bò bô b÷ bú b‡ bÒ bÕ bØ bã bÝ bß bá bã bå bè bê bì bî bð bò bô b÷ bù bý bÿ b bÉ bÌ bÏ bÒ bÕ b× bÚ bÜ bß bá bå bµ b· b» b¿ bÁ b b‘ b“ b˜ bš bœ b¡ b£ b¦ b¨ bª b­ bü b‚  b…  bŒ  bÕ  bã  b¿  bÁ  bš  bÏ  bÑ  bÓ  b‡ bý bÿ b b’ b” KkKkKk‹ ÓÂÓÓ ÓÓÓ ÓÓÓ ÓÓÓ ÓÓÂÓ ÓÓÓ ÓÓÓ ÓÓÓ ÓÓÓ ÓÓÓ ÓÓÓ ÓÓÓ KkK1kKkKk‹ KkK1kKkKk‹ ÓÓÓÓÓÓÏÓÓÐÓ b«A KkKk‹Ò b¬A KkKk‹Ô ÓÓÓÓÓÓÓÓÓÕÓ KkKkK kK k‹ KkKkK kK k‹ ÓÓÓÓÓÓ×ÓÓØÓ KkKk‹Ò KkKk‹Ô ÓÓÓÓÓÓÚÓÓÛÓ KkKk‹Ô KkKk‹Ò ÓÓÓÓÓÓÝÓÓÞÓ KkKkKkKk‹ KkKkKkKk‹ ÓÓÓÓÓÓàÓÓáÓ KkKk‹Ò KkKk‹Ô ÓÓÓÓÓÓãÓÓäÓ KkKk‹Ô KkKk‹Ò ÓÓÓÓÓÓæÓÓçÓ KkKk‹Ô KkKk‹Ò ÓÓÓÓÓÓéÓÓêÓ KkKkK kKk‹ KkKkK kKk‹ ÓÓÓÓÓÓìÓÓíÓ ÓÓÓÐÓÓÓÓÏÓÓ ÓÓÓÕÓÓÓÓÓÓÓ ÓÓÓØÓÓÓÓ×ÓÓ ÓÓÓÛÓÓÓÓÚÓÓ ÓÓÓÞÓÓÓÓÝÓÓ ÓÓÓáÓÓÓÓàÓÓ ÓÓÓäÓÓÓÓãÓÓ ÓÓÓçÓÓÓÓæÓÓ ÓÓÓêÓÓÓÓéÓÓ ÓÓÓíÓÓÓÓìÓÓ ÓÓÏÓÓÐÓÓÓÓÓ ÓÓÓÓÓÕÓÓÓÓÓ ÓÓ×ÓÓØÓÓÓÓÓ ÓÓÚÓÓÛÓÓÓÓÓ ÓÓÝÓÓÞÓÓÓÓÓ ÓÓàÓÓáÓÓÓÓÓ ÓÓãÓÓäÓÓÓÓÓ ÓÓæÓÓçÓÓÓÓÓ ÓÓéÓÓêÓÓÓÓÓ ÓÓìÓÓíÓÓÓÓÓsyfi-1.0.0.dfsg.orig/tests/cpp/fe_ex4.gar.r0000644000175000017500000000241511672223006020255 0ustar johannrjohannrGARC3numericclass1numberA1_1-1/2A1_2A1_3A2_11/2A2_20A2_3A3_1A3_2A3_3addmulsymboly1namey_1TeX_namerest2coeffx0x_0overall_coeff-1y0y_0x1x_1x2x_2y2y_2-2functionseqabsA2_1_1A2_1_2A2_1_3A2_2_1A2_2_2A2_2_3A2_3_1A2_3_2A2_3_3   *"+',(-'.+/,0(1,2-.       ¢²  ¢² »Ë»Ëã  ¢² ¢ ²! » Ë» Ëã ¢"²# » Ë» Ëã ¢$²% »Ë» Ë㠻˻ Ë㠻˻Ë㠻˻ Ë» ˻˻˻Ëã & » Ë»Ë㠻˻ Ë㠻˻Ë㠻˻ Ëã » Ë»Ë㠻˻Ë㠻˻Ëã 'â) »Ë»Ë»Ë㠻˻ ˻˻ Ë㠻˻ Ë»Ë㠻˻˻ Ë㠻˻˻˻Ë㠻˻˻Ë㠻˻˻˻˻ Ë»!Ë㠻˻˻ Ë»Ë㠻˻˻ Ë»Ë㠻˻ ˻˻Ë㠻˻˻ Ë»Ëã »#˻˻˻$Ë»%Ë» Ë»!Ë»&Ëã »#˻˻˻$Ë»%˻˻ Ë»&Ë㠻˻ Ë»Ë㠻˻˻Ëã »#˻˻%Ë»)Ë»*Ë»!Ëã »#˻˻$Ë»%Ë» Ë»)Ë»*Ë»&Ë㠻˻$˻˻)Ë»*Ë»&Ëãsyfi-1.0.0.dfsg.orig/tests/cpp/disconlagrange_ex.cpp0000644000175000017500000000245011672223006022327 0ustar johannrjohannr#include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(2); Dof dof(true, true); // create two triangles Triangle t1(lst(0,0), lst(1,0), lst(0,1)); Triangle t2(lst(1,1), lst(1,0), lst(0,1)); int order = 2; DiscontinuousLagrange fe; fe.set_order(order); fe.set_polygon(t1); fe.set_element_number(1); fe.compute_basis_functions(); usage(fe); for (unsigned int i=0; i< fe.nbf(); i++) { dof.insert_dof(1,i,fe.dof(i)); } fe.set_polygon(t2); fe.set_element_number(2); fe.compute_basis_functions(); usage(fe); for (unsigned int i=0; i< fe.nbf(); i++) { dof.insert_dof(2,i,fe.dof(i)); } // Print out the global degrees of freedom an their // corresponding local degrees of freedom vector > vec; pair index; ex exdof; for (unsigned int i=0; i< dof.size(); i++) { exdof = dof.glob_dof(i); vec = dof.glob2loc(i); cout <<"global dof " < #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(2); ReferenceTriangle t; for (int i=0; i< 3; i++) { cout <<" normal 2D"< #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(2); ReferenceTriangle domain; VectorCrouzeixRaviart v_fe; v_fe.set_size(2); v_fe.set_polygon(domain); v_fe.compute_basis_functions(); P0 p_fe; p_fe.set_polygon(domain); p_fe.compute_basis_functions(); usage(v_fe, p_fe); Dof dof; std::map, ex> A; compute_Stokes_element_matrix(v_fe, p_fe, dof, A); print(A); // regression test archive ar; for (unsigned int i=0; i, ex>::iterator iter; for (iter = A.begin(); iter != A.end() ; iter++) { ar.archive_ex((*iter).second, istr("A", (*iter).first.first, (*iter).first.second).c_str()); } ofstream vfile("crouzeixraviart_ex2.gar.v"); vfile << ar; vfile.close(); if(!compare_archives("crouzeixraviart_ex2.gar.v", "crouzeixraviart_ex2.gar.r")) { cerr << "Failure!" << endl; return -1; } return 0; } syfi-1.0.0.dfsg.orig/tests/cpp/CMakeLists.txt0000644000175000017500000000106111672223006020704 0ustar johannrjohannrfile(GLOB CPP_TESTS "*.cpp") foreach (CPP_TEST_FULL_PATH ${CPP_TESTS}) get_filename_component(CPP_TEST "${CPP_TEST_FULL_PATH}" NAME_WE) add_executable(${CPP_TEST} ${CPP_TEST_FULL_PATH}) target_link_libraries(${CPP_TEST} syfi ${SYFI_TARGET_LINK_LIBRARIES}) add_test(NAME ${CPP_TEST} COMMAND ${CPP_TEST} > ${CPP_TEST}.out) endforeach() # Copy references to build directory file(GLOB CPP_TEST_REFERENCES "*.r") foreach (CPP_TEST_REFERENCE ${CPP_TEST_REFERENCES}) file(COPY ${CPP_TEST_REFERENCE} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) endforeach() syfi-1.0.0.dfsg.orig/tests/cpp/ex_inspection.cpp0000644000175000017500000000566011672223006021530 0ustar johannrjohannr#include using namespace std; #include using namespace GiNaC; using namespace SyFi; /* Simplification strategy during form creation: * - Count symbols * - Take the X % most used symbols, and create a sqrfree factorization * OR SIMPLY: * - Create a sqrfree factorization wrt (x,y,z) */ /* Simplification strategy after integration: * - Count symbols * - Count flops * - Take the P % most used symbols with degree > D, and create a sqrfree factorization * - Count flops * - Undo if flop count increases! * - Register single variable powers * - Simplify with ExpressionSimplifier */ void print(ex e) { cout << " e = " << e << endl; exhashmap sc = count_symbols(e); exhashmap::iterator it; int count = 0; int maxcount = 0; for(it = sc.begin(); it != sc.end(); it++) { if(it->second > maxcount) maxcount = it->second; count += it->second; //cout << " " << it->first << ": " << it->second << endl; } cout << " number of symbols / total symbol count = " << sc.size() << ", " << count << endl; ExStats es = count_ops(e); cout << " m,a,p,f,flops = " << es.muls << ", " << es.adds << ", " << es.pows << ", " << es.functions << ", " << es.flops << endl; } void variants(ex e) { cout << "====================" << endl; cout << "original:" << endl; print(e); cout << "expand:" << endl; print(expand(e)); cout << "normal:" << endl; print(normal(e)); cout << "sqrfree in x,y,z:" << endl; print(sqrfree(e,lst(x,y,z))); /* cout << "sqrfree in x,y,z of expanded form:" << endl; print(sqrfree(expand(e),lst(x,y,z))); */ /* cout << "collect_common_factors:" << endl; print(collect_common_factors(e)); cout << "collect_common_factors o expand:" << endl; print(collect_common_factors(expand(e))); */ cout << "----------------------------------------" << endl; list sel; list sl; sl.push_back(x); sl.push_back(y); sl.push_back(z); cout << "replace_powers:" << endl; print( replace_powers(e, sl, sel) ); cout << "replace_powers(expand):" << endl; print( replace_powers(expand(e), sl, sel) ); cout << "replace_powers(sqrfree):" << endl; print( replace_powers(sqrfree(e, lst(x,y,z)), sl, sel) ); cout << "replace_powers(sqrfree(expand)):" << endl; print( replace_powers(sqrfree(expand(e), lst(x,y,z)), sl, sel) ); cout << "====================" << endl; /* list::iterator it = sel.begin(); for(;it!=sel.end();it++) { cout << it->first << ", " << it->second << endl; } */ } int main() { initSyFi(3); ex e; e = x*y+y*z+z*x; variants(e); e = pow(x*y+y*z+z*x,5); variants(e); e = (x*y*z)*(x*y*z)+(x*y*z)+(x*y*z); variants(e); e = pow(2-2*y,3) * pow(1+x*y,2) * pow(x-2*y,2) * (x+y); variants(e); e = 1; for(int i=0; i<10; i++) { e = e*isymb("x",i) + isymb("y",i); } variants(e); return 0; } syfi-1.0.0.dfsg.orig/tests/cpp/nedelec_ex1.cpp0000644000175000017500000000271711672223006021035 0ustar johannrjohannr#include using namespace SyFi; using namespace std; void print_out(FE& fe) { for (unsigned int i=0; i< fe.nbf(); i++) { cout <<"fe.N("< #include using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(3); symbol x0("x0"), x1("x1"), y0("y0"), y1("y1"), z0("z0"), z1("z1"); ex p0 = lst(x0,y0,z0); ex p1 = lst(x1,y1,z1); Line line(p0,p1); symbol t("t"); ex l_repr = line.repr(t); cout <<"l.repr "< using namespace GiNaC; using namespace SyFi; using namespace std; int main() { initSyFi(3); // example that check scaling numeric h(1,100); // 1.0/100 numeric a(1,2); // 1.0/2 ex p0 = lst(a,a,a); ex p1 = lst(a+h,a,a); Line line(p0,p1); ex f = 1; ex intf = line.integrate(f); cout <<"intf "<. # # First added: 2007-05-28 # Last changed: 2007-05-28 geometry_string1d = """\ // coordinates double x0 = c.coordinates[0][0]; double x1 = c.coordinates[1][0]; // affine map double G00 = x1 - x0; """ detG_string1d = """\ double detG_tmp = G00; double detG = fabs(detG_tmp); """ GinvT_string1d = """\ double GinvT00 = 1.0 / G00; """ geometry_string2d = """\ // coordinates double x0 = c.coordinates[0][0]; double y0 = c.coordinates[0][1]; double x1 = c.coordinates[1][0]; double y1 = c.coordinates[1][1]; double x2 = c.coordinates[2][0]; double y2 = c.coordinates[2][1]; // affine map double G00 = x1 - x0; double G01 = x2 - x0; double G10 = y1 - y0; double G11 = y2 - y0; """ detG_string2d = """\ double detG_tmp = G00*G11-G01*G10; double detG = fabs(detG_tmp); """ GinvT_string2d = """\ double GinvT00 = G11 / detG_tmp; double GinvT01 = -G10 / detG_tmp; double GinvT10 = -G01 / detG_tmp; double GinvT11 = G00 / detG_tmp; """ geometry_string3d = """\ // coordinates double x0 = c.coordinates[0][0]; double y0 = c.coordinates[0][1]; double z0 = c.coordinates[0][2]; double x1 = c.coordinates[1][0]; double y1 = c.coordinates[1][1]; double z1 = c.coordinates[1][2]; double x2 = c.coordinates[2][0]; double y2 = c.coordinates[2][1]; double z2 = c.coordinates[2][2]; double x3 = c.coordinates[3][0]; double y3 = c.coordinates[3][1]; double z3 = c.coordinates[3][2]; // affine map double G00 = x1 - x0; double G10 = y1 - y0; double G20 = z1 - z0; double G01 = x2 - x0; double G11 = y2 - y0; double G21 = z2 - z0; double G02 = x3 - x0; double G12 = y3 - y0; double G22 = z3 - z0; """ detG_string3d = """\ double detG_tmp = G00*(G11*G22-G21*G12) - G01*(G10*G22-G20*G12) + G02*(G10*G21-G20*G11); double detG = fabs(detG_tmp); """ # TODO: this can be optimized further, f.ex. G11*G22 occurs both below and in detG # TODO: write this in symbolic form GinvT_string3d = """\ double GinvT00 = ( G11*G22-G12*G21) / detG_tmp; double GinvT01 = (-G22*G10+G12*G20) / detG_tmp; double GinvT02 = (-G11*G20+G10*G21) / detG_tmp; double GinvT10 = ( G02*G21-G22*G01) / detG_tmp; double GinvT11 = ( G22*G00-G02*G20) / detG_tmp; double GinvT12 = (-G21*G00+G20*G01) / detG_tmp; double GinvT20 = ( G12*G01-G11*G02) / detG_tmp; double GinvT21 = ( G10*G02-G12*G00) / detG_tmp; double GinvT22 = ( G11*G00-G10*G01) / detG_tmp; """ def gen_geometry_code(nsd, detG=True, GinvT=False): if nsd != 1 and nsd != 2 and nsd != 3: raise RuntimeError("gen_geometry_code not implemented for nsd != 1, 2 or 3") code = eval("geometry_string%dd" % nsd) if GinvT or detG: code += "\n" + eval("detG_string%dd" % nsd) if GinvT: code += "\n" + eval("GinvT_string%dd" % nsd) # TODO: use GinvT_string(nsd) instead after verification return code + "\n" def GinvT_string(nsd): # TODO: verify and use this above from sfc.CodeFormatter import gen_token_assignments from sfc.symbol_factory import symbolic_matrix G_sym = symbolic_matrix(nsd, nsd, "G") GinvT_sym = symbolic_matrix(nsd, nsd, "GinvT") GinvT = G_sym.inverse().transpose() code = gen_token_assignments( [( GinvT_sym[i], GinvT[i] ) for i in range(nsd**2) ] ) return code if __name__ == '__main__': print GinvT_string(2) print "\n\n" print gen_geometry_code(2, True, True) syfi-1.0.0.dfsg.orig/site-packages/sfc/geometry/UFCCell.py0000644000175000017500000003412511672223006023144 0ustar johannrjohannr#!/usr/bin/env python # -*- coding: utf-8 -*- """ This module contains a class UFCCell to represent the properties of a cell in a easily accessible way. """ # Copyright (C) 2008 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-08-12 # Last changed: 2008-08-12 import swiginac from swiginac import matrix, exp, sqrt import SyFi from sfc.symbolic_utils import cross, inner, symbols from sfc.common.output import sfc_debug # TODO: this code could do with some tests! class UFCCell: def __init__(self, polygon): sfc_debug("Entering UFCCell.__init__") assert isinstance(polygon, SyFi.Polygon) self.polygon = polygon name = polygon.str() x, y, z = symbols("xyz") if isinstance(polygon, SyFi.ReferenceLine) or name == "ReferenceLine": self.shape = "interval" self.facet_shape = "point" # ... dimensions: self.nsd = 1 self.num_vertices = 2 self.num_edges = 1 self.num_faces = 0 self.num_facets = self.num_vertices self.num_entities = (self.num_vertices, self.num_edges) # ... connectivity: self.facet_vertices = [ (0,), (1,) ] # ... geometry: self.vertices = [matrix(self.nsd, 1, polygon.vertex(i)) for i in range(self.num_vertices)] self.facet_polygons = self.vertices # ... normal vector: n = matrix(1, 1, [1]) self.facet_n = [-n, +n] # TODO: is this what we want to do for the interval "normal"? # ... implicit equations: self.facet_equations = [x, x-1] elif isinstance(polygon, SyFi.ReferenceTriangle) or name == "ReferenceTriangle": self.shape = "triangle" self.facet_shape = "interval" # ... dimensions: self.nsd = 2 self.num_vertices = 3 self.num_edges = 3 self.num_faces = 1 self.num_facets = self.num_edges self.num_entities = (self.num_vertices, self.num_edges, self.num_faces) # ... connectivity: # facet vertices in counterclockwise direction around reference cell: self.facet_vertices = [ (1, 2), (2, 0), (0, 1) ] # ... geometry: self.vertices = [matrix(self.nsd, 1, polygon.vertex(i)) for i in range(self.num_vertices)] self.facet_polygons = [polygon.line(i) for i in range(self.num_facets)] # ... normal vector: self.facet_n = [] for facet in range(self.num_facets): fromvert, tovert = self.facet_vertices[facet] # FIXME: finish facet stuff t = self.vertices[fromvert] - self.vertices[tovert] n = matrix(2, 1, [t[1], -t[0]]) n = n / sqrt(inner(n,n)) # TODO: Is this approach efficient? FIXME: Is this correct? Scaling to unit normal on reference domain, but this isn't necessarily unit length on global domain... self.facet_n.append(n) # ... implicit equations: self.edge_equations = [x+y-1, x, y] self.facet_equations = self.edge_equations elif isinstance(polygon, SyFi.ReferenceTetrahedron) or name == "ReferenceTetrahedron": self.shape = "tetrahedron" self.facet_shape = "triangle" # ... dimensions: self.nsd = 3 self.num_vertices = 4 self.num_edges = 6 self.num_faces = 4 self.num_facets = self.num_faces self.num_entities = (self.num_vertices, self.num_edges, self.num_faces, 1) # ... connectivity: # facet vertices in counterclockwise direction around reference cell: self.facet_vertices = [ (1, 2, 3), (0, 3, 2), # (0, 2, 3) (0, 1, 3), (0, 2, 1) # (0, 1, 2) ] # ... geometry: self.vertices = [matrix(self.nsd, 1, polygon.vertex(i)) for i in range(self.num_vertices)] self.facet_polygons = [polygon.triangle(i) for i in range(self.num_facets)] # ... normal vector: self.facet_n = [] for facet in range(self.num_facets): vert = self.facet_vertices[facet] t01 = self.vertices[vert[1]] - self.vertices[vert[0]] t02 = self.vertices[vert[2]] - self.vertices[vert[0]] n = cross(t01, t02) n = n / sqrt(inner(n,n)) # TODO: is this approach efficient? FIXME: Is this correct? Scaling to unit normal on reference domain... self.facet_n.append(n) # ... implicit equations: self.face_equations = [ (x+y+z-1), x, y, z] self.facet_equations = self.face_equations # in a tetrahedron, no two edges are parallel WARNiNG FIXME: this edge code is not verified! p = matrix(3, 1, [x, y, z]) v0, v1, v2, v3 = self.vertices self.edge_equations = [ cross( (p - v3), (v2 - v3) ), cross( (p - v3), (v1 - v3) ), cross( (p - v2), (v1 - v2) ), cross( (p - v3), (v0 - v3) ), cross( (p - v2), (v0 - v2) ), cross( (p - v1), (v0 - v1) ) ] elif isinstance(polygon, SyFi.ReferenceRectangle) or name == "ReferenceRectangle": self.shape = "quadrilateral" self.facet_shape = "interval" # ... dimensions: self.nsd = 2 self.num_vertices = 4 self.num_edges = 4 self.num_faces = 1 self.num_facets = self.num_edges self.num_entities = (self.num_vertices, self.num_edges, self.num_faces) # ... connectivity: # facet vertices in counterclockwise direction around reference cell: self.facet_vertices = [ (2, 3), (1, 2), (3, 0), (0, 1) ] # ... geometry: self.vertices = [matrix(self.nsd, 1, polygon.vertex(i)) for i in range(self.num_vertices)] self.facet_polygons = [polygon.line(i) for i in range(self.num_facets)] # ... normal vector: self.facet_n = [] for facet in range(self.num_facets): fromvert, tovert = self.facet_vertices[facet] t = self.vertices[fromvert] - self.vertices[tovert] n = matrix(2, 1, [t[1], -t[0]]) self.facet_n.append(n) # ... implicit equations: self.edge_equations = [x-1, y-1, x, y] self.facet_equations = self.edge_equations elif isinstance(polygon, SyFi.ReferenceBox) or name == "ReferenceBox": self.shape = "hexahedron" self.facet_shape = "quadrilateral" # ... dimensions: self.nsd = 3 self.num_vertices = 8 self.num_edges = 12 self.num_faces = 6 self.num_facets = self.num_faces self.num_entities = (self.num_vertices, self.num_edges, self.num_faces, 1) # ... connectivity: # facet vertices in counterclockwise direction around reference cell: self.facet_vertices = [ (4, 5, 6, 7), (2, 3, 7, 6), # (2, 3, 6, 7) (1, 2, 6, 5), # (1, 2, 5, 6) (0, 4, 7, 3), # (0, 3, 4, 7) (0, 1, 5, 4), # (0, 1, 4, 5) (0, 3, 2, 1) # (0, 1, 2, 3) ] # Current Lagrange basis function order in SyFi: #0 [[0, 0, 0], 0] #1 [[0, 0, 1], 0] #2 [[1, 0, 0], 0] #3 [[1, 0, 1], 0] #4 [[0, 1, 0], 0] #5 [[0, 1, 1], 0] #6 [[1, 1, 0], 0] #7 [[1, 1, 1], 0] # UFC vertex order for hexes requires reordering: TODO: don't need to do this? #0->0 [[0, 0, 0], 0] #2->1 [[1, 0, 0], 0] #6->2 [[1, 1, 0], 0] #4->3 [[0, 1, 0], 0] #1->4 [[0, 0, 1], 0] #3->5 [[1, 0, 1], 0] #7->6 [[1, 1, 1], 0] #5->7 [[0, 1, 1], 0] # ... geometry: self.vertices = [matrix(self.nsd, 1, polygon.vertex(i)) for i in range(self.num_vertices)] self.facet_polygons = [polygon.rectangle(i) for i in range(self.num_facets)] self.facet_n = [] for facet in range(self.num_facets): # counterclockwise ordering seen from outside of reference cell: vert = self.facet_vertices[facet] # computing normal as the cross product of the facet diagonals t02 = self.vertices[vert[0]] - self.vertices[vert[2]] t13 = self.vertices[vert[1]] - self.vertices[vert[3]] n = cross(t02, t13) #n = n / swiginac.sqrt(inner(n,n)) # TODO: is this approach efficient? FIXME: Is this correct? Scaling to unit normal on reference domain... self.facet_n.append(n) # ... implicit equations: # all faces coincide with a cartesian plane self.face_equations = [z-1, y-1, x-1, x, y, z] self.facet_equations = self.face_equations # points on an edge satisfy the equations of two faces f = self.face_equations e = [0]*12 e[0 ] = (f[0], f[1]) e[1 ] = (f[0], f[2]) e[2 ] = (f[0], f[3]) e[3 ] = (f[0], f[4]) e[4 ] = (f[1], f[3]) e[5 ] = (f[1], f[2]) e[6 ] = (f[1], f[5]) e[7 ] = (f[2], f[4]) e[8 ] = (f[2], f[5]) e[9 ] = (f[3], f[4]) e[10] = (f[3], f[5]) e[11] = (f[4], f[5]) self.edge_equations = [] for f1, f2 in e: self.edge_equations.append( exp(f1)*exp(f2) - 1 ) # TODO: a better equation? else: raise RuntimeError("Unknown polygon type %s." % name) sfc_debug("Leaving UFCCell.__init__") def find_entity(self, xi): "Find which cell entity the coordinate xi lies on." for i in range(self.nsd): for j in range(self.num_entities[i]): if self.entity_check(i, j, xi): return (i, j) return (self.nsd, 0) def entity_check(self, d, i, p): # this is a bit ugly, could benefit from a cleanup # make p into a list if isinstance(p, swiginac.matrix): p = [p[k] for k in range(len(p))] elif isinstance(p, swiginac.basic): p = [p] # check if we match a vertex exactly if d == 0: #eq = self.vertex_equations[i] return bool(self.vertices[i] == matrix(self.nsd, 1, p)) # get implicit equation for this entity if d == -1: eq = self.facet_equations[i] if d == 1: eq = self.edge_equations[i] if d == 2: eq = self.face_equations[i] # check if implicit equation is zero in this point, which means p is on the entity x = symbols(["x", "y", "z"]) for j in range(len(p)): eq = eq.subs(x[j] == p[j]) return inner(eq, eq).expand().is_zero() def facet_check(self, i, p): return self.entity_check(-1, i, p) def vertex_check(self, i, p): return self.entity_check(0, i, p) def edge_check(self, i, p): return self.entity_check(1, i, p) def face_check(self, i, p): return self.entity_check(2, i, p) def __eq__(self, other): if self.shape == other.shape: return True return False def __ne__(self, other): if self.shape == other.shape: return False return True def __str__(self): s = "Cell\n" s += " shape: %s\n" % self.shape s += " nsd: %d\n" % self.nsd s += " num_vertices: %d\n" % self.num_vertices s += " num_edges: %d\n" % self.num_edges s += " num_faces: %d\n" % self.num_faces s += " num_facets: %d\n" % self.num_facets s += " vertices: %s\n" % str(self.vertices) s += " facet_equations: %s\n" % str(self.facet_equations) return s if __name__ == "__main__": print "" polygon = SyFi.ReferenceLine() cell = UFCCell(polygon) print cell print "" polygon = SyFi.ReferenceTriangle() cell = UFCCell(polygon) print cell print "" polygon = SyFi.ReferenceTetrahedron() cell = UFCCell(polygon) print cell syfi-1.0.0.dfsg.orig/site-packages/sfc/geometry/mappings.py0000644000175000017500000000662311672223006023547 0ustar johannrjohannr # -*- coding: utf-8 -*- """ This module contains functions for computing integrals both symbolically and numerically. """ # Copyright (C) 2007-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2007-11-07 # Last changed: 2009-03-04 import swiginac import SyFi from sfc.quadrature import find_quadrature_rule from sfc.symbolic_utils import symbol, symbols from sfc.geometry.UFCCell import UFCCell def geometry_mapping(polygon): """ This function computes the geometry mapping from the corresponding reference polygon to polygon. It returns the tuple (G,x0) in the mapping x = G xi + x0 """ vlen = SyFi.cvar.nsd # If we get a point, return this trivial mapping if isinstance(polygon, swiginac.matrix): # x = 1 * xi + x0 = x0 because xi is always zero at the point assert vlen == 1 assert polygon.rows() == 1 assert polygon.cols() == 1 G = swiginac.matrix(1, 1, [1]) x0 = polygon return G, x0 Gl = [] v0 = polygon.vertex(0) v1 = polygon.vertex(1) assert vlen == len(v0) if isinstance(polygon, SyFi.Line): Gl.extend(v1[k] - v0[k] for k in range(vlen)) elif isinstance(polygon, SyFi.Triangle): if vlen == 2 or vlen == 3: v2 = polygon.vertex(2) Gl.extend(v1[k] - v0[k] for k in range(vlen)) Gl.extend(v2[k] - v0[k] for k in range(vlen)) else: raise RuntimeError("Unsupported vertex size.") elif isinstance(polygon, SyFi.Rectangle): if vlen == 2 or vlen == 3: # TODO: improve mapping v2 = polygon.vertex(2) v3 = polygon.vertex(3) Gl.extend(v1[k] - v0[k] for k in range(vlen)) Gl.extend(v3[k] - v0[k] for k in range(vlen)) else: raise RuntimeError("Unsupported vertex size.") elif isinstance(polygon, SyFi.Tetrahedron): if vlen != 3: raise RuntimeError("Unsupported vertex size.") v2 = polygon.vertex(2) v3 = polygon.vertex(3) Gl.extend(v1[k] - v0[k] for k in range(vlen)) Gl.extend(v2[k] - v0[k] for k in range(vlen)) Gl.extend(v3[k] - v0[k] for k in range(vlen)) elif isinstance(polygon, SyFi.Box): if vlen != 3: raise RuntimeError("Unsupported vertex size.") v2 = polygon.vertex(2) # TODO: improve mapping v3 = polygon.vertex(3) v4 = polygon.vertex(4) Gl.extend(v1[k] - v0[k] for k in range(vlen)) Gl.extend(v3[k] - v0[k] for k in range(vlen)) Gl.extend(v4[k] - v0[k] for k in range(vlen)) else: raise RuntimeError("Unsupported polygon type.") G = swiginac.matrix(vlen, vlen, Gl).transpose() x0 = swiginac.matrix(vlen, 1, v0) #print "G =", G return G, x0 syfi-1.0.0.dfsg.orig/site-packages/sfc/quadrature/0000755000175000017500000000000011674103625021700 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/site-packages/sfc/quadrature/__init__.py0000644000175000017500000000203011672223006023776 0ustar johannrjohannr#!/usr/bin/env python # -*- coding: utf-8 -*- """ This module handles various aspects of quadrature rules. """ # Copyright (C) 2008 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-08-12 # Last changed: 2008-08-12 from sfc.quadrature.quadrature import find_quadrature_rule from sfc.quadrature.quadrature_code import gen_quadrature_rule_definition, gen_quadrature_rule_definitions syfi-1.0.0.dfsg.orig/site-packages/sfc/quadrature/quad_tables.py0000644000175000017500000151420311672223006024536 0ustar johannrjohannr#!/usr/bin/env python # -*- coding: utf-8 -*- """ This module contains quadrature rule tables copied from P. Solin, K Segeth, and I Dolezel. Higher–Order Finite Element Methods. Studies in Advanced Mathematics. Chapman and Hall/CRC, 2004. Use the function load_table(polygon, family) to get a list of QuadRule objects. The family can be one of {"composite_gauss", "economical_gauss"}, the polygon name one of the UFC polygon names. """ # Copyright (C) 2008 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-09-01 # Last changed: 2008-09-01 from sfc.quadrature.QuadRule import QuadRule # TODO: To add non-Gauss rules here, just write them in the same format # as the gauss strings, and call them myrule_polygonname_table, # just like economical_gauss_triangle_table etc. from ufl.geometry import domain2dim def load_rule(polygon, order, family): rules = load_table(polygon, family) while 1: # find the first rule with this order for r in rules: if r.order == order: return r # if this failed, find the first rule order+1 order += 1 raise RuntimeError("Found no rule for a %s with order %d in family %s" % (polygon, order, family)) def load_table(polygon, family): """Return list of quadrature rules matching polygon and family.""" rules = parse_table_string(polygon, family) rules = scale_table(rules) return rules def parse_table_string(polygon, family): # Fetch a table string with quadrature points and weights for different orders. name = "%s_%s_table" % (family, polygon) tablestring = eval(name) nsd = domain2dim[polygon] lines = tablestring.split('\n') rules = [] i = 0 while i. # # First added: 2008-08-12 # Last changed: 2008-08-12 from sfc.quadrature.QuadRule import QuadRule from sfc.quadrature.quad_tables import load_rule from ufl.geometry import domain2dim def find_quadrature_rule(polygon, order, family="gauss"): if polygon == "point": return QuadRule(polygon, 1, 0, [(0.0,)], [1.0], "Single point evaluation rule.") if family == "gauss": if polygon in ("triangle", "tetrahedron"): family = "economical_gauss" else: family = "composite_gauss" if family == "economical_gauss": return load_rule(polygon, order, family) if family == "composite_gauss": rule = load_rule("interval", order, "gauss") #print "rule = ", rule nsd = domain2dim[polygon] if nsd == 1: return rule # construct composite rule from 1D formula assert polygon in ("quadrilateral", "hexahedron") points = [] weights = [] rr = range(rule.num_points) if nsd == 2: for i in rr: for j in rr: points.append( (rule.points[i][0], rule.points[j][0]) ) weights.append( rule.weights[i]*rule.weights[j] ) elif nsd == 3: for i in rr: for j in rr: for k in rr: points.append( (rule.points[i][0], rule.points[j][0], rule.points[k][0]) ) weights.append( rule.weights[i]*rule.weights[j]*rule.weights[k] ) comment = "Computed composite_gauss rule on %s of order %d." % (polygon, order) return QuadRule(polygon, nsd, order, points, weights, comment) raise RuntimeError("Found no rule for a %s with order %d in family %s" % (polygon, order, family)) if __name__ == '__main__': print "No test here." syfi-1.0.0.dfsg.orig/site-packages/sfc/quadrature/quadrature_code.py0000644000175000017500000000636511672223006025425 0ustar johannrjohannr#!/usr/bin/env python # -*- coding: utf-8 -*- """ This module contains code generation tools for quadrature rules. """ # Copyright (C) 2008-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-08-13 # Last changed: 2009-03-19 from sfc.codegeneration.codeformatting import indent def gen_quadrature_rule_definition(rule, points_name="quad_points", weigths_name="quad_weights"): code = "" code += "static const double %s[%d][%d] = \n" % (points_name, rule.num_points, rule.nsd) code += " {\n" code += ",\n".join( [ " { %s }" % (", ".join(map(str,p))) for p in rule.points ] ) code += "\n };\n" code += "\n" code += "static const double %s[%d] =\n" % (weigths_name, rule.num_points) code += " {\n" code += " " + ", ".join( map(str, rule.weights) ) code += "\n };\n" return code def gen_quadrature_rule_definitions(rules, points_name="facet_quad_points", weigths_name="facet_quad_weights"): """Generate static code for quadrature rule definitions for a list of rules.""" nr = len(rules) nq = rules[0].num_points nsd = rules[0].nsd code = "" rule_snippets = [] for r in range(nr): rule = rules[r] point_snippets = [] for p in rule.points: c = "{ " + ", ".join(map(str,p)) + " }" point_snippets.append( indent(c) ) cc = "{ // quadrature points for rule %d:\n" % r cc += ",\n".join(point_snippets) + "\n" cc += "}" rule_snippets.append( indent(cc) ) code += "// [number of rules][number of points][space dimension]\n" code += "static const double %s[%d][%d][%d] = \n" % (points_name, nr, nq, nsd) code += indent("{") + "\n" code += indent(",\n".join(rule_snippets)) + "\n" code += indent("};") + "\n\n" rule_snippets= [] for r in range(nr): rule = rules[r] c = "// weights for rule %d:\n" % r c += "{ " c += ", ".join(map(str, rule.weights)) c += " }" rule_snippets.append( indent(c) ) code += "// [number of rules][number of points]\n" code += "static const double %s[%d][%d] =\n" % (weigths_name, nr, nq) code += indent("{") + "\n" code += indent(",\n".join(rule_snippets)) + "\n" code += indent("};") + "\n\n" return code if __name__ == '__main__': inner_code = "// Compute A here\n" order = 3 polygon = "triangle" rule = find_quadrature_rule(polygon, order, "gauss") code = gen_quadrature_rule_definition(rule) print code rules = [rule, rule, rule] code = gen_quadrature_rule_definitions(rules) print code syfi-1.0.0.dfsg.orig/site-packages/sfc/quadrature/QuadRule.py0000644000175000017500000000344311672223006023772 0ustar johannrjohannr#!/usr/bin/env python # -*- coding: utf-8 -*- """ This module contains a class for representing quadrature rules. """ # Copyright (C) 2007 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: November 29th 2007 # Last changed: November 29th 2007 class QuadRule: """This class represents a specific quadrature rule over a polygon.""" def __init__(self, polygon, nsd, order, points, weights, comment): assert len(points) == len(weights) self.polygon = polygon self.nsd = nsd self.num_points = len(points) self.points = points self.weights = weights self.comment = comment self.order = order def __str__(self): s = "Quadrature rule:\n" s += " comment: %s\n" % self.comment s += " polygon = %s\n" % self.polygon s += " nsd = %d\n" % self.nsd s += " num_points = %d\n" % self.num_points s += " points = %s\n" % self.points s += " weights = %s\n" % self.weights s += " order = %d\n" % self.order return s if __name__ == '__main__': print "No test here." syfi-1.0.0.dfsg.orig/site-packages/sfc/common/0000755000175000017500000000000011674103625021013 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/site-packages/sfc/common/__init__.py0000644000175000017500000000057711672223006023127 0ustar johannrjohannr from sfc.common.version import version from sfc.common.ParameterDict import ParameterDict from sfc.common.options import default_parameters from sfc.common.paths import get_abs_ufc_h_path from sfc.common.output import sfc_debug, sfc_info, sfc_warning, sfc_error, sfc_assert, write_file from sfc.common.output import get_log_handler, get_logger, set_log_handler, set_logging_level syfi-1.0.0.dfsg.orig/site-packages/sfc/common/options.py0000644000175000017500000001035011672223006023051 0ustar johannrjohannr#!/usr/bin/env python # -*- coding: utf-8 -*- """ This module contains default options for SFC. """ # Copyright (C) 2008-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified by Kent-Andre Mardal, 2010. # # First added: 2008-08-13 # Last changed: 2009-04-23 from sfc.common.ParameterDict import ParameterDict def default_parameters(): """Construct a ParameterDict with default options for SFC, which can then be modified and passed to jit. Some options may need explanation: options.integration.representation: "disable" | Generate empty tabulate_tensor functions, for debugging. "symbolic" | Integrate each element tensor entry symbolically. "truncated_symbolic" | Integrate symbolically after truncating the Taylor series. "symbolic_quadrature" | Integrate by quadrature using symbolic expressions. "quadrature" | (DEFAULT) Generate (partially) inlined quadrature rule. "safe_quadrature" | Generate slow but safe quadrature code. """ ### General output options: output = ParameterDict(enable_timing = False, verbosity = 0, # TODO: Use logging system, verbosity = logging.WARNING enable_debug_prints = False, store_log = False) ### General code generation options: # General form options: form = ParameterDict(name = None) # Integration options: integral = ParameterDict(integration_method = "quadrature", # "symbolic", integration_order = None, enable_debug_code = False, safemode = False, use_expand_indices2 = False) # Dof map code generation: dof_map = ParameterDict(enable_dof_ptv = False) # Finite element code generation: finite_element = ParameterDict(enable_evaluate_basis = True, enable_evaluate_basis_derivatives = True, default_order_of_element = 2, evaluate_basis_derivatives_order = 1, # highest order generated optimize_basis = False, enable_horner = False) # TODO: use horners rule in evaluate_basis* code = ParameterDict(form = form, integral = integral, dof_map = dof_map, finite_element = finite_element, prefix = "", dolfin_wrappers = False) ### General compilation options: compilation = ParameterDict(enable_debug_code = False, cache_dir = None, # Override cache directory overwrite_cache = False, # Force recompilation independent of cache status cppargs = ["-O2"], skip = False, # To bypass C++ compilation phase (intended for testing and profiling) generate_interface = True, # To bypass generation of swig interface generate_setup = True) # To bypass generation of setup.py file ### All options collected: options = ParameterDict(output = output, code = code, compilation = compilation) return options syfi-1.0.0.dfsg.orig/site-packages/sfc/common/names.py0000644000175000017500000000366011672223006022467 0ustar johannrjohannr#!/usr/bin/env python # -*- coding: utf-8 -*- """ This module contains tools for consistent naming of classes. """ # Copyright (C) 2008-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-08-12 # Last changed: 2009-04-23 import re import hashlib def short_name(prefix, name, max_name_length = 60): if len(name) > max_name_length: name = hashlib.md5(name).hexdigest().lower() return prefix + name def base_element_classname(element): #return "%s_%s_%d" % (element.family, element.cell, element.degree) s = repr(element).strip() s = re.sub("[^\w]", "_", s) s = re.sub("_+", "_", s) s = s.strip("_") return s def finite_element_classname(element): return short_name("fe_", base_element_classname(element)) def dof_map_classname(element): return short_name("dm_", base_element_classname(element)) def integral_classname(integral, form_name): m = integral.measure() prefix = "%s_integral_%s" % (m.domain_type(), m.domain_id()) return short_name(prefix, form_name) def form_classname(form, options): if options.code.form.name: form_name = options.code.form.name else: checksum = hashlib.md5(repr(form) + repr(options)) form_name = checksum.hexdigest().lower() return short_name("form_", form_name) syfi-1.0.0.dfsg.orig/site-packages/sfc/common/paths.py0000644000175000017500000000144311672223006022500 0ustar johannrjohannr import os import glob import instant def get_abs_ufc_h_path(): (ufc_include_dirs, ufc_flags, ufc_libs, ufc_libdirs) = instant.header_and_libs_from_pkgconfig("ufc-1") if len(ufc_include_dirs) == 0: sys_dirs = ["/usr/include", "/usr/local/include", "/opt/include"] for d in sys_dirs: f = glob.glob(os.path.join(d, "ufc.h")) if len(f) == 1: return f[0] raise RuntimeError("ERROR: Found no include dir for ufc.h: %s. FIXME: Need better configuration tools in SyFi!") if len(ufc_include_dirs) > 1: print "WARNING: Found more than one include dir for ufc.h: %s. Using %s. FIXME: Need better configuration tools in SyFi!" % (str(ufc_include_dirs), ufc_include_dirs[0]) return os.path.join(ufc_include_dirs[0], "ufc.h") syfi-1.0.0.dfsg.orig/site-packages/sfc/common/utilities.py0000644000175000017500000001145211672223006023375 0ustar johannrjohannr#!/usr/bin/env python # -*- coding: utf-8 -*- """ This module contains utility functions for various stuff. """ # Copyright (C) 2007-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2007-06-15 # Last changed: 2009-03-19 from itertools import izip import swiginac #import strings import numpy.testing _last_m = numpy.testing.memusage() def printmem(msg): global _last_m m = numpy.testing.memusage() diff = m - _last_m print msg, diff, "b, ", diff/1024, "Kb, ", diff/1024**2, "Mb" _last_m = m def dot_product(seq1, seq2): return sum(a*b for (a,b) in izip(seq1,seq2)) def make_name_valid(name): """Filter away .[] from indexed array names.""" name = name.replace(".","_") name = name.replace("[","_") name = name.replace("]","_") return name def index_string(i): if isinstance(i, int): return str(i) return "_".join(str(j) for j in i) def fe_is_discontinuous(fe): sfc_error("FIXME") if not isinstance(fe, str): fe = strings.finite_element_classname(fe) if "_" in fe: fe = fe.split('_')[1] return fe in ["DiscontinuousLagrange", "VectorDiscontinuousLagrange", "TensorDiscontinuousLagrange", "ArnoldFalkWintherWeakSymU", "ArnoldFalkWintherWeakSymP"] def fe_is_signed(fe): sfc_error("FIXME") if not isinstance(fe, str): fe = strings.finite_element_classname(fe) if "_" in fe: fe = fe.split('_')[1] return fe in ["ArnoldFalkWintherWeakSymSigma", "Nedelec2Hdiv", "Nedelec2HdivPtv", "Nedelec", "RaviartThomas", "Robust", "RobustPtv"] def check_range(i, a, b, msg="Invalid range."): """Check that i is in [a,b), raise exception otherwise.""" if (i < a or i >= b) and (a != b): raise ValueError(msg) def unique(sequence): s = set() for i in sequence: if not i in s: s.add(i) yield i def indices_subset(indices, keep): newindices = [] for ii in indices: jj = tuple((j if keep[i] else None) for (i,j) in enumerate(ii)) newindices.append(jj) return tuple(unique(newindices)) def shape(dims): #if len(dims) == 0: # return (1,) return tuple(dims) def permute(shape): """Returns a permutation of all multiindices within the range of a rank 0, 1, or 2 tensor shape.""" if len(shape) == 0: return [(0,)] if len(shape) == 1: return [(k,) for k in range(shape[0])] if len(shape) == 2: return [(k1,k2) for k1 in range(shape[0]) for k2 in range(shape[1])] raise ValueError("Shapes with rank 3 or higher not implemented in permute(shape)") def list_items(l): return zip( range(len(l)), l ) def as_list_with_len(x, wantlen): """If x is not a list type, it is repeated in a list wantlen times. Otherwise checks it x the correct length. Always returns a list with length wantlen or raises an exception.""" if isinstance(x, tuple): x = list(x) if not isinstance(x, list): x = [x,] if len(x) == 1: x = wantlen*x if len(x) != (wantlen): raise ValueError("Got list with size " + str(len(x)) + ", need " + str(wantlen) + ".") return x def matrix_to_list(m): return [m[i] for i in range(len(m))] def list_to_matrix(m, n, l): if len(l) != m*n: raise ValueError("Invalid sizes: %d * %d != %d" % (m, n, l)) return swiginac.matrix(m, n, l) def list_to_vector(l): return swiginac.matrix(len(l), 1, l) def is_function(f): return hasattr(f, 'func_name') def is_functor(f): if hasattr(f, 'func_name'): return False return hasattr(f, '__call__') def get_func_code(f): """Get the func_code object from a function or functor object.""" if not callable(f): raise RuntimeError("Object is not callable!") fc = None if is_function(f): fc = f.func_code if is_functor(f): fc = f.__call__.im_func.func_code return fc def get_callable_name(f): return get_func_code(f).co_name def get_callable_num_args(f): return get_func_code(f).co_argcount syfi-1.0.0.dfsg.orig/site-packages/sfc/common/version.py0000644000175000017500000000002611672223006023042 0ustar johannrjohannr version = (0, 5, 2) syfi-1.0.0.dfsg.orig/site-packages/sfc/common/ParameterDict.py0000644000175000017500000001657611672223006024122 0ustar johannrjohannr#!/usr/bin/env python """Contains the ParameterDict class, useful for defining recursive dictionaries of parameters and using attribute syntax for later access. Some useful features: - Recursive copy function of parameter subsets - Recursive update function including parameter subsets - Recursive indented pretty-print - Valid parameters are declared as keyword arguments to the constructor, and assigning to indeclared variables is not allowed. See help(ParameterDict) for an interactive example. """ # Copyright (C) 2008 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-06-22 # Last changed: 2008-06-23 class ParameterDict(dict): """A dictionary with attribute-style access, that maps attribute access to the real dictionary. Interactive example: >>> m = ParameterDict(Re = 1.0, f = "sin(x)") >>> print m Re = 1.0 f = 'sin(x)' >>> s = ParameterDict(max_iterations = 10, tolerance = 1e-8) >>> print s max_iterations = 10 tolerance = 1e-08 >>> p = ParameterDict(model = m, solver = s) >>> print p model = { Re = 1.0 f = 'sin(x)' } solver = { max_iterations = 10 tolerance = 1e-08 } >>> q = p.copy() >>> q.model.Re = 2.3e6 >>> q.solver.max_iterations = 100 >>> print q model = { Re = 2300000.0 f = 'sin(x)' } solver = { max_iterations = 100 tolerance = 1e-08 } >>> print p model = { Re = 1.0 f = 'sin(x)' } solver = { max_iterations = 10 tolerance = 1e-08 } >>> p.update(q) >>> print p model = { Re = 2300000.0 f = 'sin(x)' } solver = { max_iterations = 100 tolerance = 1e-08 } >>> s.nothere = 123 Traceback (most recent call last): File "doctest.py", line 1212, in __run compileflags, 1) in test.globs File "", line 1, in s.nothere = 123 File "ParameterDict.py", line 107, in __setattr__ raise AttributeError("%s is not an item in this parameter dict." % key) AttributeError: nothere is not an item in this parameter dict. """ def __init__(self, **params): dict.__init__(self, **params) for k,v in params.iteritems(): self.__setattr__(k, v) def __getstate__(self): return self.__dict__.items() def __setstate__(self, items): for key, val in items: self.__dict__[key] = val def __str__(self): return self.format() def __repr__(self): return "%s(%s)" % (self.__class__.__name__, ", ".join("%s = %s" % (k,repr(dict.__getitem__(self, k))) for k in sorted(dict.iterkeys(self)))) def __delitem__(self, key): return dict.__delitem__(self, key) def __setattr__(self, key, value): assert isinstance(key, str) if dict.__contains__(self, key): dict.__setitem__(self, key, value) else: # TODO: Keep or drop this? raise AttributeError("%s is not an item in this parameter dict." % key) return dict.__setattr__(self, key, value) def __getattr__(self, key): if not dict.__contains__(self, key): raise AttributeError("%s is not an item in this parameter dict." % key) return dict.__getitem__(self, key) def format(self, indent=None): "Make a recursive indented pretty-print string of self and parameter subsets." value_formatter = repr if indent is None: indent = 0 s = "" for k in sorted(dict.iterkeys(self)): v = getattr(self, k) if isinstance(v, self.__class__): s += " "*indent + "%s = {\n" % k s += v.format(indent+1) s += "\n" + " "*indent + "}\n" else: s += " "*indent + "%s = %s\n" % (k, value_formatter(v)) return s[:-1] def copy(self): """Make a copy of self, including recursive copying of parameter subsets. Parameter values themselves are not copied.""" # TODO: Make this an external function to handle recursive dicts... items = {} for k in dict.iterkeys(self): v = getattr(self, k) if isinstance(v, dict): #self.__class__): items[k] = v.copy() else: items[k] = v ch = ParameterDict(**items) return ch def update(self, other): "A recursive update that handles parameter subsets correctly unlike dict.update." # TODO: Make this an external function to handle recursive dicts... for k in dict.iterkeys(other): sv = getattr(self, k) ov = getattr(other, k) if isinstance(sv, dict): #self.__class__): # Update my own subdict with others subdict sv.update(ov) else: # Set my own value to others value setattr(self, k, ov) # Test code if __name__ == "__main__": def default_a(): p = ParameterDict(abla=123, abli="sin") return p def default_b(): p = ParameterDict(bblal=987, bling="akjh") return p def default_params(): p = ParameterDict(something = 3, other = .1239, a = default_a(), b = default_b() ) return p # Get a defined set of parameters p = default_params() # Test parameter setting p.something = 9 p.other = "8134" # Test parameter setting exceptions try: p.blatti = 7 raise RuntimeError("Failed to throw exception on erroneous parameter assignment.") except: pass # Test iteration: for k in p.keys(): print k for k in p.iterkeys(): print k for v in p.values(): print v for v in p.itervalues(): print v for k,v in p.items(): print k,v for k,v in p.iteritems(): print k,v # Test random access: ap1 = p.a ap2 = p["a"] assert ap1 is ap2 # Test printing of parameter set print print "str(p):" print str(p) print print "repr(p):" print repr(p) print # Test copy q = p.copy() q.something = "q specific!" q.a.abla = "q.a specific!" print print "Should be different:" print repr(p) print repr(q) # Test update p.update(q) print print "Should be equal:" print repr(q) print repr(p) # Test indented formatting: print print q.format() print p # Run doctest def _test(): import doctest doctest.testmod() if __name__ == "__main__": _test() syfi-1.0.0.dfsg.orig/site-packages/sfc/common/output.py0000644000175000017500000000442011672223006022717 0ustar johannrjohannr#!/usr/bin/env python # -*- coding: utf-8 -*- """ This module contains output and logging utilities. """ # Copyright (C) 2008 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-09-03 # Last changed: 2008-09-03 import logging # Logging wrappers _log = logging.getLogger("sfc") _loghandler = logging.StreamHandler() _log.addHandler(_loghandler) _log.setLevel(logging.WARNING) #_log.setLevel(logging.DEBUG) def get_log_handler(): return _loghandler def get_logger(): return _log def set_log_handler(handler): global _loghandler _log.removeHandler(_loghandler) _loghandler = handler _log.addHandler(_loghandler) def set_logging_level(level): if isinstance(level, str): level = level.upper() assert level in ("INFO", "WARNING", "ERROR", "DEBUG") level = getattr(logging, level) else: assert isinstance(level, int) _log.setLevel(level) # Aliases for calling log consistently: def sfc_debug(*message): _log.debug(*message) def sfc_info(*message): _log.info(*message) def sfc_warning(*message): _log.warning(*message) def sfc_error(*message): _log.error(*message) text = message[0] % message[1:] raise RuntimeError(text) def sfc_assert(condition, *message): if not condition: _log.error(*message) text = message[0] % message[1:] raise AssertionError(text) # Utility functions for file handling: def write_file(filename, text): "Write text to a file and close it." try: f = open(filename, "w") f.write(text) f.close() except IOError, e: sfc_error("Can't open '%s': %s" % (filename, e)) syfi-1.0.0.dfsg.orig/site-packages/sfc/dofcode/0000755000175000017500000000000011674103625021126 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/site-packages/sfc/dofcode/__init__.py0000644000175000017500000000250411672223006023232 0ustar johannrjohannr# -*- coding: utf-8 -*- """ This module contains code for the class Dof_Ptv and its related components. """ # Copyright (C) 2008 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-09-03 # Last changed: 2008-09-03 from sfc.dofcode.Ptv import Ptv from sfc.dofcode.DofT import DofT from sfc.dofcode.Dof_Ptv import Dof_Ptv def gen_utility_code(hfilename): name = hfilename.split(".")[0] if name == "Ptv": return name, Ptv.header, Ptv.implementation if name == "DofT": return name, DofT.header, DofT.implementation if name == "Dof_Ptv": return name, Dof_Ptv.header, Dof_Ptv.implementation raise RuntimeError("Unknown utility '%s'." % hfilename) syfi-1.0.0.dfsg.orig/site-packages/sfc/dofcode/DofT.py0000644000175000017500000002657611672223006022346 0ustar johannrjohannr header = """ #ifndef SFC_DOFT_IS_INCLUDED #define SFC_DOFT_IS_INCLUDED #include #include #include #include #include #include namespace sfc { typedef std::pair< unsigned int, unsigned int > pair_ii; typedef std::vector< unsigned int > vector_i; typedef std::vector< std::pair > vector_ii; /* A general degree of freedom (dof) builder for finite element applications, counting global indices based on a given dof representation object of type D. The type D must have an "bool D::operator<(const D&) const" implemented to work as key in the std::map used here. The structure dof2glob_map is the central structure, and is always constructed. The structures loc2glob_array, loc2glob_map, glob2loc_map, and glob2dof_map are optional, and enabled by the bools named create_loc2glob_array etc. They are all initialized and updated by insert_dof(...). */ template class DofT { protected: unsigned int _global_dimension; unsigned int _num_elements; unsigned int _local_dimension; public: // TODO: remove, temporary hack while changing sfc /* Central dynamic structure: based on dof representations with type D, store the corresponding global indices. (D Lj) -> (uint j) */ std::map< D, unsigned int > dof2glob_map; /* Static and efficient local to global mapping. (uint e, uint i) -> (uint j) Index like this: global_index = loc2glob[element*local_dimension + local_index] */ bool create_loc2glob_array; std::tr1::shared_ptr loc2glob_array; /* Dynamic but slower local to global mapping. (uint e, uint i) -> (uint j) */ bool create_loc2glob_map; std::map< pair_ii, unsigned int > loc2glob_map; // std::map< unsigned int e, vector_i > loc2glob_map; // TODO: this should be a bit more efficient for large local_dimension /* Dynamic global to local mapping. Given the global index of a dof, provides a vector with the local index of the dof for each element it occurs in. (uint j) -> vector< pair, .. pair > */ bool create_glob2loc_map; std::map< unsigned int, vector_ii > glob2loc_map; /* Dynamic mapping from global index to dof representation object of type D. (uint j) -> (D Lj) */ bool create_glob2dof_map; std::map< unsigned int, D > glob2dof_map; public: DofT(bool create_glob2dof_map = false, bool create_glob2loc_map = false, bool create_loc2glob_map = false, bool create_loc2glob_array = true): _global_dimension(0), _num_elements(0), _local_dimension(0), create_loc2glob_array( create_loc2glob_array ), create_loc2glob_map( create_loc2glob_map ), create_glob2loc_map( create_glob2loc_map ), create_glob2dof_map( create_glob2dof_map ) { } ~DofT() { } // Clear all internal structures. void clear(); // Call to allocate static structures before using insert_dof(...). void init(unsigned int num_elements, unsigned int local_dimension); // Call to allocate static structures before using insert_dof(...). void init(unsigned int num_elements, unsigned int local_dimension, std::tr1::shared_ptr loc2glob); // Update the internal structures with a new dof. unsigned int insert_dof(unsigned int e, unsigned int i, D Li); // Get the local to global mapping array. std::tr1::shared_ptr get_loc2glob_array() const { return loc2glob_array; } // Return the number of elements inserted. unsigned int num_elements() const { return _num_elements; } // Return the number of global dofs inserted. unsigned int global_dimension() const { return _global_dimension; } // Return the number of dofs per elements. unsigned int local_dimension() const { return _local_dimension; } // Return the global index for local dof i in element e. unsigned int glob_index(unsigned int e, unsigned int i) const; // Return the global index for dof Lj represented with the templated type D. unsigned int glob_index(D Lj) const; // Return the dof (represented with the templated type D) for global index j. D glob_dof(unsigned int j) const; // Fill a vector with all the (element, index) pairs corresponding the dof with to this global index. void glob2loc(unsigned int j, vector_ii & loc) const; // Build loc2glob_array from loc2glob_map for future efficient lookup. void build_loc2glob(); }; template void DofT::clear() { _global_dimension = 0; _num_elements = 0; _local_dimension = 0; dof2glob_map.clear(); loc2glob_array.reset(); loc2glob_map.clear(); glob2dof_map.clear(); glob2loc_map.clear(); } template class array_deleter { public: void operator() (T *p_) { delete [] p_; } }; // constructing a shared_ptr to an array: template std::tr1::shared_ptr create_shared_array(unsigned int n) { T * ptr = new T[n]; std::tr1::shared_ptr sptr(ptr, array_deleter()); return sptr; } template void DofT::init(unsigned int num_elements, unsigned int local_dimension) { if( !create_loc2glob_array ) { std::cerr << "WARNING: Calling init with create_loc2glob_array == false makes little sense." << std::endl; std::cerr << " Check your program logic." << std::endl; } create_loc2glob_array = true; _num_elements = num_elements; _local_dimension = local_dimension; loc2glob_array = create_shared_array(_num_elements*_local_dimension); } template void DofT::init(unsigned int num_elements, unsigned int local_dimension, std::tr1::shared_ptr loc2glob) { if( !create_loc2glob_array ) { std::cerr << "WARNING: Calling init with create_loc2glob_array == false makes little sense." << std::endl; std::cerr << " Check your program logic." << std::endl; } create_loc2glob_array = true; _num_elements = num_elements; _local_dimension = local_dimension; loc2glob_array = loc2glob; } template unsigned int DofT::insert_dof(unsigned int e, unsigned int i, D Li) { if (e+1 > _num_elements) { _num_elements = e+1; if( create_loc2glob_array ) { throw std::runtime_error("In this version of DofT we assume that the number of elements are predefined!"); } } if (i+1 > _local_dimension) { _local_dimension = i+1; if( create_loc2glob_array ) { throw std::runtime_error("In this version of DofT we assume that the local dimension is predefined!"); } } // the return value unsigned int return_dof; // check if the dof is new typename std::map< D, unsigned int >::iterator index_iter = dof2glob_map.find(Li); if( index_iter != dof2glob_map.end() ) { // reuse global index return_dof = index_iter->second; } else { // pick a new global index return_dof = _global_dimension; // count inserted global indices _global_dimension++; // the central "D -> global index" map dof2glob_map[Li] = return_dof; if ( create_glob2dof_map ) { std::pair p(return_dof, Li); glob2dof_map.insert(p); //glob2dof_map[return_dof] = Li; } if ( create_glob2loc_map ) { // initialize with empty vector glob2loc_map[return_dof] = vector_ii(); glob2loc_map[return_dof].reserve(_local_dimension); } } if ( create_glob2loc_map ) { glob2loc_map[return_dof].push_back(pair_ii(e, i)); } if( create_loc2glob_map ) { loc2glob_map[pair_ii(e, i)] = return_dof; } if( create_loc2glob_array ) { unsigned int * l2g = loc2glob_array.get(); unsigned int k = e*_local_dimension + i; l2g[k] = return_dof; } return return_dof; } template unsigned int DofT::glob_index(unsigned int e, unsigned int i) const { if ( create_loc2glob_array ) { if( e >= _num_elements ) { throw std::runtime_error("Invalid element index."); } if( i >= _local_dimension ) { throw std::runtime_error("Invalid local index."); } unsigned int * l2g = loc2glob_array.get(); return l2g[e*_local_dimension + i]; } else { if ( !create_loc2glob_map ) { throw std::runtime_error("This structure has not been created, you must turn on the create_loc2glob_map flag before initialization!"); } pair_ii index(e, i); std::map< pair_ii, unsigned int >::const_iterator res = loc2glob_map.find(index); if ( res == loc2glob_map.end() ) { throw std::runtime_error("In glob_index(e,i): Not found"); } return res->second; } } template unsigned int DofT::glob_index(D Lj) const { typename std::map< D, unsigned int >::const_iterator res = dof2glob_map.find(Lj); if ( res == dof2glob_map.end() ) { throw std::runtime_error("In glob_index(Lj): Not found"); } return res->second; } template D DofT::glob_dof(unsigned int j) const { if ( !create_glob2dof_map ) { throw std::runtime_error("This structure has not been created, you must turn on the create_glob2dof_map flag before initialization!"); } typename std::map::const_iterator iter = glob2dof_map.find(j); if ( iter == glob2dof_map.end() ) { //throw std::runtime_error("In glob_dof(j): Not found"); std::cerr << "In glob_dof(j): Not found" << std::endl; return D(); } return iter->second; } template void DofT::glob2loc(unsigned int j, vector_ii & loc) const { if ( !create_glob2loc_map ) { throw std::runtime_error("This structure has not been created, you must turn on the create_glob2loc_map flag before initialization!"); } typename std::map::const_iterator it = glob2loc_map.find(j); vector_ii::const_iterator b = it->second.begin(); vector_ii::const_iterator e = it->second.end(); loc.assign( b, e ); } template void DofT::build_loc2glob() { if(create_loc2glob_array) { std::cerr << "WARNING: Calling build_loc2glob with create_loc2glob_array == true makes little sense." << std::endl; std::cerr << " Doing nothing now. Check your program logic." << std::endl; return; } if(!create_loc2glob_map) { throw std::runtime_error("This structure has not been created, you must turn on the create_loc2glob_map flag before initialization!"); } loc2glob_array = create_shared_array(_num_elements * _local_dimension); typename std::map< pair_ii, unsigned int >::iterator iter; unsigned int * l2g = loc2glob_array.get(); for(iter = loc2glob_map.begin(); iter != loc2glob_map.end(); iter++) { unsigned int e = iter->first.first; unsigned int j = iter->first.second; unsigned int k = e * _local_dimension + j; l2g[k] = iter->second; } } } // namespace sfc #endif """ implementation = "" syfi-1.0.0.dfsg.orig/site-packages/sfc/dofcode/Dof_Ptv.py0000644000175000017500000000031011672223006023025 0ustar johannrjohannr header = """ #ifndef SFC_DOF_PTV_IS_INCLUDED #define SFC_DOF_PTV_IS_INCLUDED #include "DofT.h" #include "Ptv.h" namespace sfc { typedef DofT Dof_Ptv; } #endif """ implementation = "" syfi-1.0.0.dfsg.orig/site-packages/sfc/dofcode/Ptv.py0000644000175000017500000001250611672223006022247 0ustar johannrjohannr header = """ #ifndef SFC_PTV_IS_INCLUDED #define SFC_PTV_IS_INCLUDED #include #include namespace sfc { class Ptv { public: unsigned int dim; double* v; static double tol; public: Ptv(); Ptv(unsigned int size_); Ptv(unsigned int size_, double* v_); Ptv(double x, double y); Ptv(double x, double y, double z); Ptv(const Ptv& p); ~Ptv(); void redim(unsigned int size_, double *v_); void redim(unsigned int size_); void fill(double *v_); const unsigned int size() const { return dim; } double* getPtr() { return v; } const double& operator [] (unsigned int i) const; double& operator [] (unsigned int i); Ptv& operator = (const Ptv& p); bool less(const Ptv& p) const; bool operator<(const Ptv& rh) const { return less(rh); } // friend std::ostream & operator<< ( std::ostream& os, const Ptv& p); }; /* struct Ptv_is_less : public std::binary_function { bool operator() (const sfc::Ptv &lh, const sfc::Ptv &rh) const { return lh.less(rh); } }; */ /* class Ptv_match : public std::unary_function { protected: static double tol; unsigned int d; double v; public: Ptv_match(); Ptv_match(unsigned int d_, double v_); virtual ~Ptv_match() {} bool operator() (const Ptv &p); }; */ } // namespace sfc std::ostream & operator<< ( std::ostream& os, const sfc::Ptv& p); #endif """ implementation = """ #include "Ptv.h" #include #include #include using std::ostream; using std::endl; using namespace sfc; double Ptv::tol = 1.0e-9; //double Ptv_match::tol = 1.0e-9; //double Ptv::tol = .0; //double Ptv_match::tol = .0; Ptv::Ptv(): dim(0) { v = new double[0]; } Ptv::Ptv(double x, double y): dim(2) { v = new double[dim]; v[0] = x; v[1] = y; } Ptv::Ptv(double x, double y, double z): dim(3) { v = new double[dim]; v[0] = x; v[1] = y; v[2] = z; } Ptv::Ptv(unsigned int size_): dim(size_) { v = new double[dim]; for (unsigned int i=0; i< dim; ++i) { v[i] = 0.0; } } // FIXME: // The constructor which takes unsigned int, double* could/should work // on the double* provided instead of creating a copy. // This however affects the destructor. Since Ptv should // not delete memory. // We could introduce a bool external_storage in Ptv which // is used as a test in the destructor. Ptv::Ptv(unsigned int size_, double* v_): dim(size_) { v = new double[dim]; for (unsigned int i=0; i< dim; ++i) { v[i] = v_[i]; } } Ptv::Ptv(const Ptv& p) { dim = p.size(); v = new double[dim]; for (unsigned int i=0; i< dim; ++i) { v[i] = p[i]; } } Ptv::~Ptv() { delete [] v; } void Ptv::redim(unsigned int size, double* v_) { if (dim != size ) { delete [] v; dim = size; v = new double[dim]; } for (unsigned int i=0; i< dim; ++i) { v[i] = v_[i]; } } void Ptv::redim(unsigned int size) { if (dim != size ) { delete [] v; dim = size; v = new double[dim]; } for (unsigned int i=0; i< dim; ++i) { v[i] = 0.0; } } void Ptv::fill(double* v_) { for (unsigned int i=0; i< dim; ++i) { v[i] = v_[i]; } } const double& Ptv::operator [] (unsigned int i) const { // FIXME: should be possible to turn off at compile time if ( i < 0 || i >= dim ) { throw std::out_of_range("The index is out of range!"); } return v[i]; } double& Ptv::operator [] (unsigned int i) { // FIXME: should be possible to turn off at compile time if ( i < 0 || i >= dim ) { throw std::out_of_range("The index is out of range!"); } return v[i]; } Ptv& Ptv::operator = (const Ptv& p) { if ( this != &p) { if ( dim != p.dim) { delete [] v; dim = p.dim; v = new double[dim]; } for (unsigned int i=0; i< dim; ++i) { v[i] = p[i]; } } return *this; } inline bool less_with_tol(double a, double b, double tol) { return a + tol < b - tol; } bool Ptv::less(const Ptv& p) const { /* if ( dim < p.dim ) return true; if ( dim > p.dim) return false; */ if ( dim != p.dim ) { throw std::runtime_error("Non-matching dimensions!"); } /* for (unsigned int i=dim-1; i>= 0; i--) { if ( v[i] + tol >= p[i] - tol && v[i] - tol <= p[i] + tol ) { } else if (v[i] + tol < p[i] - tol ) { return true; } else if ( v[i] - tol > p[i] + tol ) { return false; } } */ for (unsigned int i=0; i= 1) { os << "["; for (unsigned int i=0; i= p[d] && v - tol <= p[d] ) return true; else return false; } */ """ syfi-1.0.0.dfsg.orig/site-packages/sfc/codegeneration/0000755000175000017500000000000011674103625022511 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/site-packages/sfc/codegeneration/__init__.py0000644000175000017500000000101211672223006024606 0ustar johannrjohannr from sfc.codegeneration.codegeneration import generate_code, compiler_input from sfc.codegeneration.codeformatting import indent, CodeFormatter from sfc.codegeneration.formcg import FormCG from sfc.codegeneration.dofmapcg import DofMapCG from sfc.codegeneration.finiteelementcg import FiniteElementCG from sfc.codegeneration.cellintegralcg import CellIntegralCG from sfc.codegeneration.exteriorfacetintegralcg import ExteriorFacetIntegralCG from sfc.codegeneration.interiorfacetintegralcg import InteriorFacetIntegralCG syfi-1.0.0.dfsg.orig/site-packages/sfc/codegeneration/finiteelementcg.py0000644000175000017500000005030711672223006026224 0ustar johannrjohannr#!/usr/bin/env python # -*- coding: utf-8 -*- """ This module contains code generation tools for the ufc::finite_element class. """ # Copyright (C) 2008-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-08-13 # Last changed: 2009-03-19 from itertools import izip import ufl import swiginac from sfc.codegeneration.codeformatting import indent, CodeFormatter, gen_switch, gen_token_assignments, gen_const_token_definitions from sfc.symbolic_utils import symbol, symbols, TempSymbolContext from sfc.geometry import gen_geometry_code from sfc.common import sfc_warning, sfc_assert, sfc_error, sfc_info def cse(*args): sfc_error("FIXME") class FiniteElementCG: """Code generator for ufc::finite_element implementations.""" def __init__(self, elementrep): self.rep = elementrep self.classname = elementrep.finite_element_classname self.signature = repr(self.rep.ufl_element) self.options = self.rep.options.code.finite_element self.DN_order = self.options.evaluate_basis_derivatives_order def hincludes(self): l = [] return l def cincludes(self): l = [] return l def generate_code_dict(self): # generate the code components: vars = { "classname" : self.classname, "constructor" : indent(self.gen_constructor()), "constructor_arguments" : indent(self.gen_constructor_arguments()), "initializer_list" : indent(self.gen_initializer_list()), "destructor" : indent(self.gen_destructor()), "create" : indent(self.gen_create()), "signature" : indent(self.gen_signature()), "cell_shape" : indent(self.gen_cell_shape()), "geometric_dimension" : indent(self.gen_geometric_dimension()), "topological_dimension" : indent(self.gen_topological_dimension()), "space_dimension" : indent(self.gen_space_dimension()), "value_rank" : indent(self.gen_value_rank()), "value_dimension" : indent(self.gen_value_dimension()), "map_from_reference_cell" : indent(self.gen_map_from_reference_cell()), "map_to_reference_cell" : indent(self.gen_map_to_reference_cell()), "evaluate_basis" : indent(self.gen_evaluate_basis()), "evaluate_basis_all" : indent(self.gen_evaluate_basis_all()), "evaluate_basis_derivatives" : indent(self.gen_evaluate_basis_derivatives()), "evaluate_basis_derivatives_all" : indent(self.gen_evaluate_basis_derivatives_all()), "evaluate_dof" : indent(self.gen_evaluate_dof()), "evaluate_dofs" : indent(self.gen_evaluate_dofs()), "interpolate_vertex_values" : indent(self.gen_interpolate_vertex_values()), "num_sub_elements" : indent(self.gen_num_sub_elements()), "create_sub_element" : indent(self.gen_create_sub_element()), "members" : indent(self.gen_members()), } return vars def generate_support_code(self): return "" def gen_constructor(self): return "" def gen_constructor_arguments(self): return "" def gen_initializer_list(self): return "" def gen_destructor(self): return "" def gen_create(self): code = "return new %s();" % self.classname return code def gen_signature(self): """const char* signature() const""" return 'return "%s";' % self.signature def gen_cell_shape(self): """shape cell_shape() const""" return "return ufc::%s;" % self.rep.cell.shape def gen_geometric_dimension(self): return "return %d;" % self.rep.cell.nsd def gen_topological_dimension(self): return "return %d;" % self.rep.cell.nsd def gen_space_dimension(self): """unsigned int space_dimension() const""" return "return %d;" % self.rep.local_dimension def gen_value_rank(self): """unsigned int value_rank() const""" return "return %d;" % self.rep.value_rank def gen_value_dimension(self): """unsigned int value_dimension(unsigned int i) const""" if self.rep.value_rank == 0: code = 'throw std::runtime_error("Rank 0 value has no dimension.");\n' #elif self.rep.value_rank == 1: # code = "return %d;" % self.rep.value_shape[0] else: dims = self.rep.value_shape cases = [(i, "return %d;" % d) for (i,d) in enumerate(dims)] code = gen_switch("i", cases) code += 'throw std::runtime_error("Invalid dimension for rank %d value.");\n' % self.rep.value_rank return code def gen_map_from_reference_cell(self): return 'throw std::runtime_error("Not implemented.");' # FIXME def gen_map_to_reference_cell(self): return 'throw std::runtime_error("Not implemented.");' # FIXME def gen_evaluate_basis(self): """void evaluate_basis(unsigned int i, double* values, const double* coordinates, const cell& c) const """ if not self.options.enable_evaluate_basis: return 'throw std::runtime_error("evaluate_basis not implemented.");' nsd = self.rep.cell.nsd nbf = self.rep.local_dimension value_shape = self.rep.value_shape value_size = self.rep.value_size if self.rep.ufl_element.family() == "Real": code = [] if value_size > 1: code += ["memset(values, 0, sizeof(double)*%d);" % value_size] code += ['values[i] = 1.0;'] return '\n'.join(code) # symbols for output values val_sym = symbols(["values[%d]" % d for d in range(value_size)]) # generate code body code = CodeFormatter() code += gen_geometry_code(nsd, detG=False, GinvT=True) coordinates = swiginac.matrix(nsd, 1, symbols(["coordinates[%d]" % i for i in range(nsd)])) xi = self.rep.GinvT.transpose().mul(coordinates - self.rep.p0).evalm() for i in range(nsd): code += "const double %s = %s;" % (("x","y","z")[i], xi[i].printc()) if value_size > 1: code += "memset(values, 0, sizeof(double)*%d);" % value_size code += "" # begin switch if nbf>1: code.begin_switch("i") # generate one case for each basis function for i in range(nbf): # make token list for basis function i values = [] for c in self.rep.value_components: values.append( self.rep.basis_function(i, c) ) values_tokens = [] for d in range(value_size): if not values[d].expand().is_zero(): values_tokens.append( (val_sym[d], values[d]) ) # now values_tokens is a token list with "values[i] = expression" for all output values if self.options.optimize_basis: # split tokens into temporary variables (1) and output variables (2) temp_symbol = TempSymbolContext() values_tokens1 = [] values_tokens2 = [] for s, e in values_tokens: # handle s = e: ts = temp_symbol() # construct ts values_tokens1.append( (ts, e) ) # set ts = e values_tokens2.append( (s, ts) ) # set s = ts values_tokens = None # optimize temporary variable list values_tokens1, repmap = cse(values_tokens1, temp_symbol) # generate code values_code = gen_const_token_definitions(values_tokens1) + "\n" values_code += gen_token_assignments(values_tokens2) #values_codelines= chain(const_token_definitions(values_tokens1), token_assignments(values_tokens2)) else: values_code = gen_token_assignments(values_tokens) #values_codelines = token_assignments(values_tokens) # generate case code if nbf>1: code.begin_case(i, braces=True) code.new_line( indent(values_code) ) code.end_case() #with code.case(i, braces=True): # code.add_lines(values_codelines) else: code += values_code if nbf>1: code.end_switch() return str(code) def gen_evaluate_basis_all(self): # TODO: implement optimized version of this """/// Evaluate all basis functions at given point in cell virtual void evaluate_basis_all(double* values, const double* coordinates, const cell& c) const """ code = CodeFormatter() code += "for(unsigned i = 0; i < %d; i++)" % self.rep.local_dimension code.begin_block() code += "evaluate_basis(i, values+i*%d, coordinates, c);" % self.rep.value_size code.end_block() return str(code) def gen_evaluate_basis_derivatives(self): """/// Evaluate order n derivatives of basis function i at given point in cell void evaluate_basis_derivatives(unsigned int i, unsigned int n, double* values, const double* coordinates, const ufc::cell& c) const """ if not self.options.enable_evaluate_basis_derivatives: return 'throw std::runtime_error("evaluate_basis_derivatives not implemented.");' nsd = self.rep.cell.nsd nbf = self.rep.local_dimension value_shape = self.rep.value_shape value_size = self.rep.value_size if self.rep.ufl_element.family() == "Real": return '\n'.join('values[%d] = 0.0;' % d for d in range(value_size)) sfc_assert(self.DN_order <= 2, "Don't support computing higher order derivatives (yet).") code = CodeFormatter() code.begin_if("n > 2") code += 'throw std::runtime_error("evaluate_basis_derivatives not implemented for the wanted derivative order.");' code.end_if() # define GinvT code += gen_geometry_code(nsd, detG=False, GinvT=True) # define x,y,z (spatial symbols) p = symbols(["x", "y", "z"][:nsd]) coords = symbols(["coordinates[%d]" % i for i in range(nsd)]) code += gen_const_token_definitions( izip(p, coords) ) # switch on derivative order code.begin_switch("n") for order in range(1, self.DN_order+1): code.begin_case(order, braces=True) # zero output array before filling nonzeros num_derivatives = nsd ** order do_memset = (value_size*num_derivatives) > 6 if do_memset: code += "memset(values, 0, sizeof(double) * %d * %d);" % (value_size, num_derivatives) code += "" # switch on basis function number code.begin_switch("i") for ibf in range(nbf): code.begin_case(ibf, braces=True) temp_symbol = TempSymbolContext() DN_tokens = [] all_directions = ufl.permutation.compute_permutations(self.DN_order, nsd) for (j,directions) in enumerate(all_directions): for (k,c) in enumerate(self.rep.value_components): DN = self.rep.basis_function_derivative(ibf, c, directions) # DN is now the expression for the derivative wrt directions of component c of basis function ibf if not (do_memset and DN.expand().is_zero()): values_sym = symbol("values[%d * %d + %d]" % (j, value_size, k)) DN_tokens.append( (values_sym, DN) ) if self.options.optimize_basis: # split tokens into temporary variables and output variables DN_tokens1 = [] DN_tokens2 = [] for s, e in DN_tokens: # s = e ts = temp_symbol() # -> DN_tokens1.append( (ts, e) ) # ts = e DN_tokens2.append( (s, ts) ) # s = ts # optimize temporary variable list DN_tokens1, repmap = cse(DN_tokens1, temp_symbol) # generate code code += gen_const_token_definitions(DN_tokens1) code += gen_token_assignments(DN_tokens2) else: code += gen_token_assignments(DN_tokens) code.end_case() code.end_switch() code.end_case() code += "default:" code.indent() code += 'throw std::runtime_error("Derivatives of this order are not supported in evaluate_basis_derivatives.");' code.dedent() code.end_switch() return str(code) def gen_evaluate_basis_derivatives_all(self): # TODO: implement optimized version of this """/// Evaluate order n derivatives of all basis functions at given point in cell virtual void evaluate_basis_derivatives_all(unsigned int n, double* values, const double* coordinates, const cell& c) const """ code = CodeFormatter() code.begin_switch("n") for order in range(1, self.DN_order+1): code.begin_case(order, braces=True) offset = self.rep.value_size * (self.rep.cell.nsd ** order) code += "for(unsigned i = 0; i < %d; i++)" % self.rep.local_dimension code.begin_block() code += "evaluate_basis_derivatives(n, i, values+i*%d, coordinates, c);" % offset code.end_block() code.end_case() code += "default:" code.indent() code += 'throw std::runtime_error("Derivatives of this order are not implemented in evaluate_basis_derivatives_all.");' code.dedent() code.end_switch() return str(code) def gen_evaluate_dof(self): """double evaluate_dof(unsigned int i, const function& f, const cell& c) const This implementation is general for all elements with point evaluation dofs. TODO: Implement support for normal and tangential component dofs. TODO: Implement for elements without point evaluation dofs. """ # some useful variables nsd = self.rep.cell.nsd nbf = self.rep.local_dimension # initial code code = CodeFormatter() code.new_text( gen_geometry_code(nsd, detG=False) ) code += "double v[%d];" % self.rep.value_size code += "double x[%d];" % nsd # fill global coordinates of dof in x[] if nbf == 1: # skip the switch if only one basis function for k in range(nsd): code += "x[%d] = %s;" % (k, self.rep.dof_x[0][k].printc()) else: code.begin_switch("i") for i in range(nbf): code.begin_case(i) # compute dof coordinate i for k in range(nsd): code += "x[%d] = %s;" % (k, self.rep.dof_x[i][k].printc()) code.end_case() code.end_switch() # Evaluate the function (this evaluates all value components!) code += "f.evaluate(v, x, c);" # dofs for a single sub element are numbered contiguously: # i = (nbf / valsize) * value_component if nbf == 1: code += "return v[0];" else: code += "return v[i / %d];" % (nbf // self.rep.value_size) return str(code) def gen_evaluate_dofs(self): # TODO: implement optimized version of this """/// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const function& f, const cell& c) const """ code = CodeFormatter() code += "for(unsigned i=0; i<%d; i++)" % self.rep.local_dimension code.begin_block() code += "values[i] = evaluate_dof(i, f, c);" code.end_block() return str(code) def gen_interpolate_vertex_values(self): """void interpolate_vertex_values(double* vertex_values, const double* dof_values, const cell& c) const """ # some helper variables nbf = self.rep.local_dimension nsd = self.rep.cell.nsd nv = self.rep.cell.num_entities[0] value_size = self.rep.value_size value_shape = self.rep.value_shape # symbols for input array entries dof_values_sym = symbols("dof_values[%d]" % i for i in xrange(nbf)) vertex_values_sym = symbols("vertex_values[%d]" % i for i in xrange(nv*value_size)) # the spatial symbols u is expressed in p = self.rep.p # construct expressions for the linear combinations of basis functions u = [] for component in self.rep.value_components: u.append( sum(self.rep.basis_function(j, component)*dof_values_sym[j] for j in range(nbf)) ) # for each vertex vertex_values = [] repmap = swiginac.exmap() for i in range(nv): # replacement map for coordinates vx = self.rep.polygon.vertex(i) for k in range(nsd): repmap[p[k]] = vx[k] # evaluate functions for each component in coordinate for uval in u: vertex_values.append(uval.subs(repmap)) code = gen_token_assignments( izip(vertex_values_sym, vertex_values) ) return code def gen_num_sub_elements(self): """unsigned int num_sub_elements() const""" return "return %d;" % len(self.rep.sub_elements) def gen_create_sub_element(self): """finite_element* create_sub_element(unsigned int i) const""" if len(self.rep.sub_elements) > 1: code = CodeFormatter() code.begin_switch("i") for i, fe in enumerate(self.rep.sub_elements): code += "case %d: return new %s();" % (i, fe.finite_element_classname) code.end_switch() code += 'throw std::runtime_error("Invalid index in create_sub_element.");' else: code = "return new %s();" % self.classname # FIXME: Should we throw error here instead now? return str(code) def gen_members(self): return "" #code = CodeFormatter() #code += "public:"; #code += "protected:"; #code.indent() #code += "unsigned int foo = 0;" #code.dedent() #return str(code) syfi-1.0.0.dfsg.orig/site-packages/sfc/codegeneration/dofmapcg.py0000644000175000017500000005174411672223006024650 0ustar johannrjohannr#!/usr/bin/env python # -*- coding: utf-8 -*- """ This module contains code generation tools for the ufc::dofmap class. """ # Copyright (C) 2008-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-08-13 # Last changed: 2009-05-14 import ufl from sfc.codegeneration.codeformatting import indent, CodeFormatter, gen_token_assignments from sfc.geometry import gen_geometry_code from sfc.symbolic_utils import symbol, symbols from sfc.common import sfc_assert, sfc_error, sfc_warning, sfc_info class DofMapCG: def __init__(self, elementrep): self.rep = elementrep self.classname = elementrep.dof_map_classname self.signature = repr(self.rep.ufl_element) self.options = self.rep.options.code.dof_map if self.options.enable_dof_ptv: # variables for full initialization by construction, reused a few places: vars = ["global_component_stride", "loc2glob_size"] self.constructor_vars = vars self.constructor_arg_string = ", ".join(["unsigned int %s_" % v for v in vars]) self.constructor_arg_string2 = ", ".join(vars) def hincludes(self): l = [] if self.options.enable_dof_ptv: l.extend(["Ptv.h", "DofT.h", "Dof_Ptv.h"]) return l def cincludes(self): l = [] return l def generate_code_dict(self): vars = { 'classname' : self.classname, 'constructor' : indent(self.gen_constructor()), "constructor_arguments" : indent(self.gen_constructor_arguments()), "initializer_list" : indent(self.gen_initializer_list()), 'destructor' : indent(self.gen_destructor()), "create" : indent(self.gen_create()), 'signature' : indent(self.gen_signature()), 'needs_mesh_entities' : indent(self.gen_needs_mesh_entities()), 'init_mesh' : indent(self.gen_init_mesh()), 'init_cell' : indent(self.gen_init_cell()), 'init_cell_finalize' : indent(self.gen_init_cell_finalize()), 'global_dimension' : indent(self.gen_global_dimension()), 'local_dimension' : indent(self.gen_local_dimension()), 'max_local_dimension' : indent(self.gen_max_local_dimension()), 'geometric_dimension' : indent(self.gen_geometric_dimension()), "topological_dimension" : indent(self.gen_topological_dimension()), 'num_facet_dofs' : indent(self.gen_num_facet_dofs()), 'num_entity_dofs' : indent(self.gen_num_entity_dofs()), 'tabulate_dofs' : indent(self.gen_tabulate_dofs()), 'tabulate_facet_dofs' : indent(self.gen_tabulate_facet_dofs()), 'tabulate_entity_dofs' : indent(self.gen_tabulate_entity_dofs()), 'tabulate_coordinates' : indent(self.gen_tabulate_coordinates()), 'num_sub_dofmaps' : indent(self.gen_num_sub_dofmaps()), 'create_sub_dofmap' : indent(self.gen_create_sub_dofmap()), 'members' : indent(self.gen_members()), } return vars def gen_constructor(self): return "" def gen_constructor_arguments(self): return "" def gen_initializer_list(self): return "" def gen_destructor(self): return "" def gen_create(self): code = "return new %s();" % self.classname return code def gen_signature(self): """const char* signature() const""" return 'return "%s";' % self.signature def gen_needs_mesh_entities(self): """bool needs_mesh_entities(unsigned int d) const""" if self.rep.ufl_element.family() == "Real": return 'return false;' # pick the mesh entities we need needs = tuple( [ ('true' if n else 'false') for n in self.rep.num_entity_dofs] ) # return false when a type of mesh entities are not needed code = CodeFormatter() code.begin_switch("d") for i, n in enumerate(needs): code += "case %d: return %s;" % (i, n) code.end_switch() code += 'throw std::runtime_error("Invalid dimension in needs_mesh_entities.");' return str(code) def gen_init_mesh(self): """bool init_mesh(const mesh& m)""" nsd = self.rep.cell.nsd if self.rep.ufl_element.family() == "Real": return 'return false;' if not self.options.enable_dof_ptv: # compute and store global dimension num_entities = symbols(["m.num_entities[%d]" % i for i in range(nsd+1)]) global_dimension = sum(self.rep.num_entity_dofs[i]*num_entities[i] for i in range(nsd+1)) code = '_global_dimension = %s;\n' % global_dimension.printc() code += "return false;" return code # This code doesn't work for general mixed elements! if isinstance(self.rep.ufl_element, ufl.MixedElement): assert isinstance(self.rep.ufl_element, (ufl.VectorElement, ufl.TensorElement)) local_component_stride = (self.rep.local_dimension // len(self.rep.sub_elements)) code= CodeFormatter() code += "// allocating space for loc2glob map" code += "dof.init(m.num_entities[%d], %d);" % (nsd, local_component_stride) code += "loc2glob_size = m.num_entities[%d] * %d;\n" % (nsd, local_component_stride) code += "return true;" return str(code) def gen_init_cell(self): """void init_cell(const mesh& m, const cell& c)""" if not self.options.enable_dof_ptv: return "" if self.rep.ufl_element.family() == "Real": return "" # FIXME: This code needs updating, e.g. it doesn't handle mixed elements. #fe = self.rep.syfi_element nsd = self.rep.cell.nsd nbf = self.rep.local_dimension code = CodeFormatter() code.new_text( gen_geometry_code(nsd, detG=False) ) code += "unsigned int element = c.entity_indices[%d][0];" % (nsd) nsc = len(self.rep.sub_elements) if nsc > 1: code += "// ASSUMING HERE THAT THE DOFS FOR EACH SUB COMPONENT ARE GROUPED" code += "// Only counting and numbering dofs for a single sub components" for i in range(nbf // nsc): x_strings = [self.rep.dof_x[i][d].printc() for d in range(nsd)] dof_vals = ", ".join( x_strings ) num_dof_vals = nsd if nsc > 1: assert nsc == self.rep.value_size # This code could be useful later if for some reason we need to revert # to the old numbering scheme where sub component dofs are intertwined: #dofi = fe.dof(i) #assert isinstance(dofi[0], list) #for d in dofi[1:]: # dof_vals += ", " + d.printc() # num_dof_vals += 1 code += "" code += "double dof%d[%d] = { %s };" % (i, num_dof_vals, dof_vals) code += "Ptv pdof%d(%d, dof%d);" % (i, num_dof_vals, i) code += "dof.insert_dof(element, %d, pdof%d);" % (i, i) return str(code) def gen_init_cell_finalize(self): """void init_cell_finalize()""" if self.rep.ufl_element.family() == "Real": return "" code = "" if self.options.enable_dof_ptv: #code += "dof.build_loc2glob();\n" code += "loc2glob = dof.get_loc2glob_array();\n" # constant for tabulating vector element dofs from a scalar element numbering code += "global_component_stride = dof.global_dimension();\n" # store global dimension code += '_global_dimension = global_component_stride * %d;\n' % len(self.rep.sub_elements) # clear temporary datastructures code += 'dof.clear();\n' return code def gen_global_dimension(self): """unsigned int global_dimension() const""" if self.rep.ufl_element.family() == "Real": return 'return %d;' % self.rep.value_size return 'return _global_dimension;' def gen_local_dimension(self): """unsigned int local_dimension(const cell& c) const""" return 'return %d;' % self.rep.local_dimension def gen_max_local_dimension(self): """unsigned int max_local_dimension() const""" return 'return %d;' % self.rep.local_dimension def gen_geometric_dimension(self): """unsigned int geometric_dimension() const""" return 'return %d;' % self.rep.cell.nsd def gen_topological_dimension(self): return "return %d;" % self.rep.cell.nsd def gen_num_facet_dofs(self): """unsigned int num_facet_dofs() const""" return "return %d;" % self.rep.num_facet_dofs def gen_num_entity_dofs(self): """unsigned int num_entity_dofs(unsigned int d) const""" if self.rep.ufl_element.family() == "Real": return 'return 0;' code = CodeFormatter() code.begin_switch("d") for i in range(self.rep.cell.nsd+1): code.begin_case(i) code += "return %d;" % self.rep.num_entity_dofs[i] code.end_case() code.end_switch() code += 'throw std::runtime_error("Invalid entity dimension.");' return str(code) def gen_tabulate_dofs(self): if self.rep.ufl_element.family() == "Real": return '\n'.join('dofs[%d] = %d;' % (i, i) for i in range(self.rep.value_size)) if self.options.enable_dof_ptv: return self.gen_tabulate_dofs__dof_ptv() else: return self.gen_tabulate_dofs__implicit() def gen_tabulate_dofs__implicit(self): """void tabulate_dofs(unsigned int* dofs, const mesh& m, const cell& c) const""" code = CodeFormatter() cell = self.rep.cell nsd = cell.nsd # symbols referencing entity index arrays mesh_num_entities = symbols("m.num_entities[%d]" % d for d in range(nsd+1)) cell_entity_indices = [] for d in range(nsd+1): cell_entity_indices += [symbols( "c.entity_indices[%d][%d]" % (d, i) for i in range(cell.num_entities[d]) )] def iter_sub_elements(rep): "Flatten the sub element hierarchy into a list." if rep.sub_elements: for r in rep.sub_elements: for s in iter_sub_elements(r): yield s else: yield rep # (A) Iterate over all basic elements in order local_subelement_offset = 0 global_subelement_offset = symbol("global_subelement_offset") code += "int %s = 0;" % global_subelement_offset for rep in iter_sub_elements(self.rep): # (B) Loop over entity dimensions d in order local_entity_offset = 0 global_entity_offset = 0 tokens = [] for d in range(nsd+1): # The offset for dofs in this loop is (global_subelement_offset + global_entity_offset) # (C) Loop over entities (d,i) in order for i in range(cell.num_entities[d]): # this is the global mesh index of cell entity (d,i) entity_index = cell_entity_indices[d][i] # For each entity (d,i) we have a list of dofs entity_dofs = rep.entity_dofs[d][i] sfc_assert(len(entity_dofs) == rep.num_entity_dofs[d], "Inconsistency in entity dofs.") for (j,dof) in enumerate(entity_dofs): local_value = entity_index * rep.num_entity_dofs[d] + j value = global_subelement_offset + global_entity_offset + local_value name = symbol("dofs[%d]" % (local_subelement_offset + dof)) tokens.append((name, value)) # (B) Accumulate offsets to dofs on entities of dimension d local_entity_offset += cell.num_entities[d] * rep.num_entity_dofs[d] global_entity_offset += mesh_num_entities[d] * rep.num_entity_dofs[d] # (A) Accumulate subelement offsets sfc_assert(rep.local_dimension == len(tokens), "Collected too few dof tokens!") local_subelement_offset += rep.local_dimension global_subelement_size = global_entity_offset code.begin_block() code += "// Subelement with signature: %s" % rep.signature code += gen_token_assignments(tokens) code += "%s += %s;" % (global_subelement_offset.printc(), global_subelement_size.printc()) code.end_block() sfc_assert(local_subelement_offset == self.rep.local_dimension, "Dof computation didn't accumulate correctly!") return str(code) def gen_tabulate_dofs__dof_ptv(self): """void tabulate_dofs(unsigned int* dofs, const mesh& m, const cell& c) const""" if isinstance(self.rep.ufl_element, ufl.MixedElement): assert isinstance(self.rep.ufl_element, (ufl.VectorElement, ufl.TensorElement)) local_component_stride = (self.rep.local_dimension // len(self.rep.sub_elements)) code = CodeFormatter() code += "const unsigned int global_element_offset = %d * c.entity_indices[%d][0];" % (local_component_stride, self.rep.cell.nsd) code += "const unsigned int *scalar_dofs = loc2glob.get() + global_element_offset;" code += "for(unsigned int iloc=0; iloc<%d; iloc++)" % local_component_stride code.begin_block() code += "const unsigned int global_scalar_dof = scalar_dofs[iloc];" for i in range(len(self.rep.sub_elements)): code += "dofs[iloc + %d * %d] = global_scalar_dof + global_component_stride * %d;" % (local_component_stride, i, i) code.end_block() return str(code) def gen_tabulate_facet_dofs(self): """void tabulate_facet_dofs(unsigned int* dofs, unsigned int facet) const This implementation should be general for elements with point evaluation dofs on simplices. """ if self.rep.ufl_element.family() == "Real": return 'throw std::runtime_error("tabulate_facet_dofs not implemented for Real elements.");' # generate code for each facet: for each facet i, tabulate local dofs[j] code = CodeFormatter() code.begin_switch("facet") for i, fd in enumerate(self.rep.facet_dofs): code.begin_case(i) for j, d in enumerate(fd): code += "dofs[%d] = %d;" % (j, d) code.end_case() code += "default:" code.indent() code += 'throw std::runtime_error("Invalid facet number.");' code.dedent() code.end_switch() return str(code) def gen_tabulate_entity_dofs(self): """void tabulate_entity_dofs(unsigned int* dofs, unsigned int d, unsigned int i) const """ if self.rep.ufl_element.family() == "Real": return 'throw std::runtime_error("tabulate_entity_dofs not implemented for Real elements.");' code = CodeFormatter() # define one case for each cell entity (d, i) code.begin_switch("d") for d in range(self.rep.cell.nsd+1): if any(self.rep.entity_dofs[d]): code.begin_case(d) code.begin_switch("i") n = self.rep.cell.num_entities[d] for i in range(n): # get list of local dofs associated with cell entity (d, i) dofs_on_entity = self.rep.entity_dofs[d][i] sfc_assert(len(dofs_on_entity) == self.rep.num_entity_dofs[d], "Inconsistency in entity dofs.") code.begin_case(i) for k, ed in enumerate(dofs_on_entity): code += "dofs[%d] = %d;" % (k, ed) code.end_case() code.end_switch() code.end_case() code.end_switch() return str(code) def gen_tabulate_coordinates(self): """void tabulate_coordinates(double** coordinates, const cell& c) const""" if self.rep.ufl_element.family() == "Real": return 'throw std::runtime_error("tabulate_coordinates not implemented for Real elements.");' code = CodeFormatter() code += gen_geometry_code(self.rep.cell.nsd, detG=False) for i in range(self.rep.local_dimension): for k in range(self.rep.cell.nsd): # generate code to compute component k of the coordinate for dof i code += "coordinates[%d][%d] = %s;" % (i, k, self.rep.dof_x[i][k].printc()) return str(code) def gen_num_sub_dofmaps(self): """unsigned int num_sub_dofmaps() const""" return "return %d;" % len(self.rep.sub_elements) def gen_create_sub_dofmap(self): """dofmap* create_sub_dofmap(unsigned int i) const""" if self.options.enable_dof_ptv: if len(self.rep.sub_elements) > 1: code = CodeFormatter() code.begin_switch("i") for i, fe in enumerate(self.rep.sub_elements): code += "case %d: return new %s(loc2glob, %s);" % (i, fe.dof_map_classname, self.constructor_arg_string2) code.end_switch() code += 'throw std::runtime_error("Invalid index in create_sub_dofmap.");' else: code = "return new %s(loc2glob, %s);" % (self.classname, self.constructor_arg_string2) else: if len(self.rep.sub_elements) > 1: code = CodeFormatter() code.begin_switch("i") for i, fe in enumerate(self.rep.sub_elements): code += "case %d: return new %s();" % (i, fe.dof_map_classname) code.end_switch() code += 'throw std::runtime_error("Invalid index in create_sub_dofmap.");' else: code = "return new %s();" % self.classname # FIXME: Should we throw error here instead now? return str(code) def gen_members(self): cell = self.rep.cell nsd = cell.nsd code = CodeFormatter() # dof data structures #code += "protected:" code += "public:" code.indent() if self.rep.ufl_element.family() != "Real": code += "unsigned int _global_dimension;" if self.options.enable_dof_ptv: code += "Dof_Ptv dof;" code += "std::tr1::shared_ptr loc2glob;" code += "unsigned int global_component_stride;" # for tabulating vector element dofs from a scalar element numbering code += 'unsigned int loc2glob_size;' code.dedent() if self.options.enable_dof_ptv: # add additional constructor to pass initialization info to share initialized dofmap memory code += "public:" code.indent() args = self.constructor_arg_string code += "%s(std::tr1::shared_ptr loc2glob, %s);" % (self.classname, args) code.dedent() return str(code) def generate_support_code(self): """Generate local utility functions.""" nsd = self.rep.cell.nsd code = CodeFormatter() #code += "namespace { // local namespace" #code += " // code private to this compilation unit (.cpp file) goes here" #code += "} // end local namespace" #code += "" if self.options.enable_dof_ptv: # Implement additional constructor for shared memory between initializated dofmaps code += "%s::%s(std::tr1::shared_ptr loc2glob_, %s):" % (self.classname, self.classname, self.constructor_arg_string) code.indent() code += "loc2glob(loc2glob_)," for v in self.constructor_vars[:-1]: code += "%s(%s_)," % (v, v) v = self.constructor_vars[-1] code += "%s(%s_)" % (v, v) code.dedent() return str(code) syfi-1.0.0.dfsg.orig/site-packages/sfc/codegeneration/interiorfacetintegralcg.py0000644000175000017500000000302511672223006027753 0ustar johannrjohannr# -*- coding: utf-8 -*- """ This module contains code generation tools for the ufc::interior_integral class. """ # Copyright (C) 2008 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-08-13 # Last changed: 2008-12-18 from sfc.common.output import sfc_error from sfc.codegeneration.integralcg import IntegralCG class InteriorFacetIntegralCG(IntegralCG): def __init__(self, itgrep): IntegralCG.__init__(self, itgrep) def gen_constructor(self): return "" def gen_destructor(self): return "" def gen_members(self): return "" def gen_tabulate_tensor_symbolic(self): return 'throw std::runtime_error("tabulate_tensor for interior facet integrals not implemented");' def gen_tabulate_tensor_quadrature(self): return 'throw std::runtime_error("tabulate_tensor for interior facet integrals not implemented");' syfi-1.0.0.dfsg.orig/site-packages/sfc/codegeneration/codegeneration.py0000644000175000017500000004405411672223006026052 0ustar johannrjohannr#!/usr/bin/env python # -*- coding: utf-8 -*- """ Codegeneration utilities. """ # Copyright (C) 2008-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified by Kent-Andre Mardal, 2010. # # First added: 2008-08-13 # Last changed: 2009-05-15 from itertools import chain import re import ufl import ufc_utils import SyFi from ufl.classes import Measure from ufl.algorithms import FormData, preprocess from dolfin_utils.wrappers import generate_dolfin_code, UFCFormNames from sfc.common.utilities import unique from sfc.common.output import sfc_assert, sfc_error, sfc_info, sfc_debug #from sfc.common import ParameterDict from sfc.common.options import default_parameters from sfc.representation import ElementRepresentation, FormRepresentation, \ CellIntegralRepresentation, ExteriorFacetIntegralRepresentation, \ InteriorFacetIntegralRepresentation from sfc.codegeneration.formcg import FormCG from sfc.codegeneration.dofmapcg import DofMapCG from sfc.codegeneration.finiteelementcg import FiniteElementCG from sfc.codegeneration.cellintegralcg import CellIntegralCG from sfc.codegeneration.exteriorfacetintegralcg import ExteriorFacetIntegralCG from sfc.codegeneration.interiorfacetintegralcg import InteriorFacetIntegralCG # version %(version)s _header_template = r"""/* * %(name)s.h * * This file was automatically generated by SFC. * * http://www.fenics.org/syfi/ * */ #ifndef GENERATED_SFC_CODE_%(name)s #define GENERATED_SFC_CODE_%(name)s #include "ufc.h" %(includes)s //namespace sfc //{ %(body)s //} #endif """ # version %(version)s _implementation_template = r"""/* * %(name)s.cpp * * This file was automatically generated by SFC. * * http://www.fenics.org/syfi/ * */ #include "ufc.h" #include "%(name)s.h" %(includes)s //namespace sfc //{ %(body)s //} """ def common_system_headers(): return ("iostream", "cmath", "stdexcept", "cstring") def apply_code_dict(format_string, code_dict): "Template formatting with improved checking for template argument mismatch." expected_keys = set(re.findall('%\((\w+)\)', format_string)) actual_keys = set(code_dict.keys()) missing_keys = expected_keys.difference(actual_keys) if missing_keys: print "When formatting code using template, missing keys:" print "\n".join(sorted(missing_keys)) print #superfluous_keys = actual_keys.difference(expected_keys) #if superfluous_keys: # print "When formatting code using template, got superfluous keys:" # print "\n".join(sorted(superfluous_keys)) # print return format_string % code_dict def generate_finite_element_code(ferep): sfc_debug("Entering generate_finite_element_code") classname = ferep.finite_element_classname cg = FiniteElementCG(ferep) code_dict = cg.generate_code_dict() supportcode = cg.generate_support_code() hcode = apply_code_dict(ufc_utils.finite_element_header, code_dict) ccode = supportcode + "\n"*3 ccode += apply_code_dict(ufc_utils.finite_element_implementation, code_dict) includes = cg.hincludes() + cg.cincludes() system_headers = common_system_headers() local_headers = unique("%s.h" % e.finite_element_classname for e in ferep.sub_elements) hincludes = "\n".join('#include "%s"' % inc for inc in cg.hincludes()) cincludes = "\n".join('#include <%s>' % f for f in system_headers) cincludes += "\n" cincludes += "\n".join('#include "%s"' % inc for inc in chain(cg.cincludes(), local_headers)) hcode = _header_template % { "body": hcode, "name": classname, "includes": hincludes } ccode = _implementation_template % { "body": ccode, "name": classname, "includes": cincludes } sfc_debug("Leaving generate_finite_element_code") return classname, (hcode, ccode), includes def generate_dof_map_code(ferep): sfc_debug("Entering generate_dof_map_code") classname = ferep.dof_map_classname cg = DofMapCG(ferep) code_dict = cg.generate_code_dict() supportcode = cg.generate_support_code() hcode = apply_code_dict(ufc_utils.dofmap_header, code_dict) ccode = supportcode + "\n"*3 ccode += apply_code_dict(ufc_utils.dofmap_implementation, code_dict) includes = cg.hincludes() + cg.cincludes() system_headers = common_system_headers() local_headers = unique("%s.h" % e.dof_map_classname for e in ferep.sub_elements) hincludes = "\n".join('#include "%s"' % inc for inc in cg.hincludes()) cincludes = "\n".join('#include <%s>' % f for f in system_headers) cincludes += "\n" cincludes += "\n".join('#include "%s"' % inc for inc in chain(cg.cincludes(), local_headers)) hcode = _header_template % { "body": hcode, "name": classname, "includes": hincludes } ccode = _implementation_template % { "body": ccode, "name": classname, "includes": cincludes } sfc_debug("Leaving generate_dof_map_code") return classname, (hcode, ccode), includes def generate_cell_integral_code(integrals, formrep): sfc_debug("Entering generate_cell_integral_code") itgrep = CellIntegralRepresentation(integrals, formrep) cg = CellIntegralCG(itgrep) code_dict = cg.generate_code_dict() supportcode = cg.generate_support_code() # TODO: Support code might be placed in unnamed namespace? hcode = apply_code_dict(ufc_utils.cell_integral_header, code_dict) ccode = supportcode + "\n"*3 + apply_code_dict(ufc_utils.cell_integral_implementation, code_dict) includes = cg.hincludes() + cg.cincludes() system_headers = common_system_headers() hincludes = "\n".join('#include "%s"' % inc for inc in cg.hincludes()) cincludes = "\n".join('#include <%s>' % f for f in system_headers) cincludes += "\n" cincludes += "\n".join('#include "%s"' % inc for inc in cg.cincludes()) hcode = _header_template % { "body": hcode, "name": itgrep.classname, "includes": hincludes } ccode = _implementation_template % { "body": ccode, "name": itgrep.classname, "includes": cincludes } sfc_debug("Leaving generate_cell_integral_code") return itgrep.classname, (hcode, ccode), includes def generate_exterior_facet_integral_code(integrals, formrep): sfc_debug("Entering generate_exterior_facet_integral_code") itgrep = ExteriorFacetIntegralRepresentation(integrals, formrep) cg = ExteriorFacetIntegralCG(itgrep) code_dict = cg.generate_code_dict() supportcode = cg.generate_support_code() # TODO: Support code might be placed in unnamed namespace? hcode = apply_code_dict(ufc_utils.exterior_facet_integral_header, code_dict) ccode = supportcode + "\n"*3 + apply_code_dict(ufc_utils.exterior_facet_integral_implementation, code_dict) includes = cg.hincludes() + cg.cincludes() system_headers = common_system_headers() hincludes = "\n".join('#include "%s"' % inc for inc in cg.hincludes()) cincludes = "\n".join('#include <%s>' % f for f in system_headers) cincludes += "\n" cincludes += "\n".join('#include "%s"' % inc for inc in cg.cincludes()) hcode = _header_template % { "body": hcode, "name": itgrep.classname, "includes": hincludes } ccode = _implementation_template % { "body": ccode, "name": itgrep.classname, "includes": cincludes } sfc_debug("Leaving generate_exterior_facet_integral_code") return itgrep.classname, (hcode, ccode), includes def generate_interior_facet_integral_code(integrals, formrep): sfc_debug("Entering generate_interior_facet_integral_code") itgrep = InteriorFacetIntegralRepresentation(integrals, formrep) cg = InteriorFacetIntegralCG(itgrep) code_dict = cg.generate_code_dict() supportcode = cg.generate_support_code() hcode = apply_code_dict(ufc_utils.interior_facet_integral_header, code_dict) ccode = supportcode + "\n"*3 + apply_code_dict(ufc_utils.interior_facet_integral_implementation, code_dict) includes = cg.hincludes() + cg.cincludes() system_headers = common_system_headers() hincludes = "\n".join('#include "%s"' % inc for inc in cg.hincludes()) cincludes = "\n".join('#include <%s>' % f for f in system_headers) cincludes += "\n" cincludes += "\n".join('#include "%s"' % inc for inc in cg.cincludes()) hcode = _header_template % { "body": hcode, "name": itgrep.classname, "includes": hincludes } ccode = _implementation_template % { "body": ccode, "name": itgrep.classname, "includes": cincludes } sfc_debug("Leaving generate_interior_facet_integral_code") return itgrep.classname, (hcode, ccode), includes def generate_form_code(formrep): sfc_debug("Entering generate_form_code") cg = FormCG(formrep) code_dict = cg.generate_code_dict() supportcode = cg.generate_support_code() hcode = apply_code_dict(ufc_utils.form_header, code_dict) ccode = supportcode + "\n"*3 + apply_code_dict(ufc_utils.form_implementation, code_dict) includes = cg.hincludes() + cg.cincludes() system_headers = common_system_headers() local_headers = unique(chain(formrep.fe_names, formrep.dm_names, \ sorted(formrep.itg_names.values()), cg.cincludes())) hincludes = "\n".join('#include "%s"' % inc for inc in cg.hincludes()) cincludes = "\n".join('#include <%s>' % f for f in system_headers) cincludes += "\n" cincludes += "\n".join('#include "%s.h"' % f for f in local_headers) hcode = _header_template % { "body": hcode, "name": formrep.classname, "includes": hincludes } ccode = _implementation_template % { "body": ccode, "name": formrep.classname, "includes": cincludes } sfc_debug("Leaving generate_form_code") return (hcode, ccode), includes def write_file(filename, text): f = open(filename, "w") f.write(text) f.close() def write_code(classname, code): sfc_debug("Entering write_code") if isinstance(code, tuple): # Code is split in a header and implementation file hcode, ccode = code hname = classname + ".h" cname = classname + ".cpp" open(hname, "w").write(hcode) open(cname, "w").write(ccode) ret = (hname, cname) else: # All code is combined in a header file name = classname + ".h" open(name, "w").write(code) ret = (name,) sfc_debug("Leaving write_code") return ret def compiler_input(input, objects=None, common_cell=None): """Map different kinds of input to a list of UFL elements and a list of FormData instances. The following input formats are allowed: - ufl.Form - ufl.algorithms.FormData - ufl.FiniteElementBase - list of the above Returns: elements, formdatas """ sfc_debug("Entering compiler_input") sfc_assert(input, "Got no input!") fd = [] fe = [] if not isinstance(input, list): input = [input] for d in input: if isinstance(d, ufl.form.Form): d = d.compute_form_data(object_names=objects, common_cell=common_cell) if isinstance(d, ufl.algorithms.formdata.FormData): fd.append(d) fe.extend(d.sub_elements) elif isinstance(d, ufl.FiniteElementBase): if d.cell().is_undefined(): sfc_assert(common_cell and not common_cell.is_undefined(), "Element no defined cell, cannot compile this.") d = d.reconstruct(cell=common_cell) sfc_assert(not d.cell().is_undefined(), "Still undefined?") fe.append(d) else: sfc_error("Not a FormData or FiniteElementBase object: %s" % str(type(d))) fe = sorted(set(fe)) sfc_debug("Leaving compiler_input") for x in fe: sfc_assert(not x.cell().is_undefined(), "Can never have undefined cells at this point!") for x in fd: sfc_assert(not x.cell.is_undefined(), "Can never have undefined cells at this point!") return fe, fd dolfin_header_template = """/* * DOLFIN wrapper code generated by the SyFi Form Compiler. */ %s """ def generate_code(input, objects, options = None, common_cell=None): """Generate code from input and options. @param input: TODO @param options: TODO """ sfc_debug("Entering generate_code") if options is None: options = default_parameters() ufl_elements, formdatas = compiler_input(input, objects, common_cell=common_cell) filenames = [] needed_files = [] formnames = [] # Generate UFC code for elements element_reps = {} last_nsd = None generated_elements = set() for e in ufl_elements: # Initialize global variables in SyFi with the right space dimension (not very nice!) nsd = e.cell().geometric_dimension() if not nsd == last_nsd and isinstance(nsd, int): SyFi.initSyFi(nsd) last_nsd = nsd # Construct ElementRepresentation objects for all elements quad_rule = None # TODO: What to do with this one? assert not "Quadrature" in e.family() # No quadrature rule defined! if e in element_reps: continue erep = ElementRepresentation(e, quad_rule, options, element_reps) element_reps[e] = erep # Build flat list of all subelements todo = [erep] ereps = [] while todo: erep = todo.pop() # Skip already generated! if not erep.ufl_element in generated_elements: generated_elements.add(erep.ufl_element) ereps.append(erep) # Queue subelements for inspection for subrep in erep.sub_elements: todo.append(subrep) for erep in ereps: # Generate code for finite_element classname, code, includes = generate_finite_element_code(erep) filenames.extend( write_code(classname, code) ) needed_files.extend(includes) # Generate code for dof_map classname, code, includes = generate_dof_map_code(erep) filenames.extend( write_code(classname, code) ) needed_files.extend(includes) # Generate UFC code for forms for formdata in formdatas: # Initialize global variables in SyFi with the right space dimension (not very nice!) nsd = formdata.geometric_dimension if not nsd == last_nsd: SyFi.initSyFi(nsd) last_nsd = nsd # This object extracts and collects various information about the ufl form formrep = FormRepresentation(formdata, element_reps, options) pf = formdata.preprocessed_form # TODO: Get integrals from formrep, in case of modifications there? Or rather make sure that FormRep doesn't do any such things. ig = pf.integral_groups() # Generate code for cell integrals for domain in pf.domains(Measure.CELL): integrals = ig[domain] classname, code, includes = generate_cell_integral_code(integrals, formrep) filenames.extend( write_code(classname, code) ) needed_files.extend(includes) # Generate code for exterior facet integrals for domain in pf.domains(Measure.EXTERIOR_FACET): integrals = ig[domain] classname, code, includes = generate_exterior_facet_integral_code(integrals, formrep) filenames.extend( write_code(classname, code) ) needed_files.extend(includes) # Generate code for interior facet integrals for domain in pf.domains(Measure.INTERIOR_FACET): integrals = ig[domain] classname, code, includes = generate_interior_facet_integral_code(integrals, formrep) filenames.extend( write_code(classname, code) ) needed_files.extend(includes) # Generate code for form! code, includes = generate_form_code(formrep) filenames.extend( write_code(formrep.classname, code) ) needed_files.extend(includes) # Collect classnames for use with dolfin wrappers namespace = "" # "sfc::" ufc_form_classname = namespace + formrep.classname ufc_finite_element_classnames = [namespace + name for name in formrep.fe_names] ufc_dof_map_classnames = [namespace + name for name in formrep.dm_names] fn = UFCFormNames(formdata.name, formdata.coefficient_names, ufc_form_classname, ufc_finite_element_classnames, ufc_dof_map_classnames) formnames.append(fn) # Get other needed files: if needed_files: raise NotImplementedError("FIXME: Implement fetching non-ufc-class files like DofPtv and quadrature rule files.") filenames = list(unique(chain(filenames, needed_files))) hfilenames = [f for f in filenames if f.endswith(".h")] cfilenames = [f for f in filenames if f.endswith(".cpp")] # Generate DOLFIN wrapper code if options.code.dolfin_wrappers: if not formnames: print "NOT generating dolfin wrappers, missing forms!" # TODO: Generate FunctionSpaces for elements? else: prefix = options.code.prefix header = dolfin_header_template % "\n".join('#include "%s"' % h for h in hfilenames) sfc_info("Generating DOLFIN wrapper code, formnames are %s." % "\n".join(map(str,formnames))) dolfin_code = generate_dolfin_code(prefix, header, formnames) dolfin_filename = "%s.h" % prefix write_file(dolfin_filename, dolfin_code) hfilenames.append(dolfin_filename) sfc_debug("Leaving generate_code") return hfilenames, cfilenames syfi-1.0.0.dfsg.orig/site-packages/sfc/codegeneration/integralcg.py0000644000175000017500000004213411672223006025200 0ustar johannrjohannr# -*- coding: utf-8 -*- """ This module contains shared code generation tools for the ufc::*_integral classes. """ # Copyright (C) 2008-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-08-13 # Last changed: 2009-03-10 from itertools import tee from sfc.common.output import sfc_debug, sfc_error, sfc_assert, sfc_warning from sfc.common.utilities import indices_subset, unique from sfc.quadrature import gen_quadrature_rule_definition, gen_quadrature_rule_definitions from sfc.codegeneration.codeformatting import indent, CodeFormatter, \ gen_const_token_definitions, gen_token_prints, \ gen_token_declarations, gen_token_assignments, gen_token_additions class IntegralCG(object): def __init__(self, itgrep): self.itgrep = itgrep self.options = self.itgrep.formrep.options.code.integral def hincludes(self): l = [] return l def cincludes(self): l = [] return l def generate_code_dict(self): vars = { "classname" : self.itgrep.classname, "constructor" : indent(self.gen_constructor()), "constructor_arguments" : indent(self.gen_constructor_arguments()), "initializer_list" : indent(self.gen_initializer_list()), "destructor" : indent(self.gen_destructor()), "members" : indent(self.gen_members()), "tabulate_tensor" : indent(self.gen_tabulate_tensor()), "tabulate_tensor_quadrature" : indent(self.gen_tabulate_tensor_quadrature()), } return vars def generate_support_code(self): ccode = "" # Write quadrature rule if we have one: # TODO: Place quadrature rules in a separate shared file? fr = self.itgrep.formrep if fr.quad_rule is not None: ccode += gen_quadrature_rule_definition(fr.quad_rule) if fr.facet_quad_rules is not None: ccode += gen_quadrature_rule_definitions(fr.facet_quad_rules) # Write sign correction code if needed: TODO: Update sign code #nsd = fr.cell.nsd #handled_fe_names = set() #fe_list = fr.fe_list #for fe in fe_list: # if fe_is_signed(fe): # fe_name = strings.finite_element_classname(fe) # if not fe_name in handled_fe_names: # handled_fe_names.add(fe_name) # ccode += tabulate_sign_code(fe, nsd) return ccode def gen_constructor(self): raise NotImplementedError def gen_constructor_arguments(self): return "" def gen_initializer_list(self): return "" def gen_destructor(self): raise NotImplementedError def gen_members(self): raise NotImplementedError def gen_pre_debug_code(self): if not self.options.enable_debug_code: return "" code = CodeFormatter() code.begin_debug() code.begin_block() code += 'std::cout << std::endl;' code += 'std::cout << "SFC DEBUGGING OUTPUT: " << std::endl;' code += 'std::cout << "void %s::tabulate_tensor(...)" << std::endl;' % self.itgrep.classname code += 'std::cout << "{" << std::endl;' fr = self.itgrep.formrep fd = fr.formdata for k in range(fr.num_coefficients): element = fd.elements[k] rep = fr.element_reps[element] code += 'std::cout << " w[%d][:] = [ ";' % k code += "for(int j=0; j<%d; j++)" % rep.local_dimension code.begin_block() code += 'std::cout << w[%d][j] << ", ";' % k code.end_block() code += 'std::cout << " ]" << std::endl;' code += 'std::cout << " now computing element tensor..." << std::endl;' code.end_block() code.end_debug() return str(code) def gen_post_debug_code(self): if not self.options.enable_debug_code: return "" code = CodeFormatter() code.begin_debug() code.begin_block() code += 'std::cout << " ... done computing element tensor." << std::endl;' code += "for(int k=0; k<%d; k++)" % len(self.itgrep.indices) code.begin_block() # TODO: enhance this output by printing indices code += 'std::cout << " A[" << k << "]" << " = " << A[k] << std::endl;' code.end_block() code += 'std::cout << "}" << std::endl;' code.end_block() code.end_debug() return str(code) def gen_partition_block(self, data, deps, basis_functions): "Generate code for a partition of the linearized computational graph." code = gen_token_assignments( self.itgrep.iter_partition(data, deps, basis_functions) ) if code: deps = ", ".join(deps) if basis_functions: deps += "; using basis functions %s" % str(basis_functions) code = "// Partition depending on %s\n{\n%s\n}" % (deps, indent(code)) return code def gen_geometry_block(self): sfc_debug("Entering IntegralCG.gen_geometry_block") code = CodeFormatter() # --- Sign correction code: # TODO #sign_sym = itgrep.sign_sym #for fe_name in sign_sym.keys(): # nbf = len(sign_sym[fe_name]) # code += use_sign_code2(fe_name, nbf, nsd) # --- Generate code for for initial geometry tokens # (vertex coordinates, affine map, normal vector, ...) geometry_tokens = self.itgrep.iter_geometry_tokens() # if we want to print debug tokens, duplicate the iterator if self.options.enable_debug_code: geometry_tokens, debug_geometry_tokens = tee(geometry_tokens) code += "// Geometric quantities" code += gen_const_token_definitions(geometry_tokens) if self.options.enable_debug_code: code += "" code.begin_debug() code += gen_token_prints(debug_geometry_tokens) code.end_debug() code += "" # --- Facet tokens code: if self.itgrep._on_facet: fr = self.itgrep.formrep code += "// Geometric quantities on each facet" for facet in range(fr.cell.num_facets): facet_tokens = self.itgrep.iter_facet_tokens(facet) if facet == 0: # if we want to print debug tokens, duplicate the iterator if self.options.enable_debug_code: facet_tokens, debug_facet_tokens = tee(facet_tokens) # duplicate the iterator to generate declarations outside switch facet_tokens, facet_tokens2 = tee(facet_tokens) code += gen_token_declarations(facet_tokens2) code.begin_switch("facet") code.begin_case(facet, braces=True) code += "// Geometric quantities on facet %d" % facet code += gen_token_assignments(facet_tokens) code.end_case() code += "default:" code.indent() code += 'throw std::runtime_error("Invalid facet number.");' code.dedent() code.end_switch() if self.options.enable_debug_code: code += "" code.begin_debug() code += 'std::cout << "facet = " << facet << std::endl;' code += gen_token_prints(debug_facet_tokens) code.end_debug() code += "" sfc_debug("Leaving IntegralCG.gen_geometry_block") return str(code) def gen_quadrature_runtime_block(self, data): code = gen_const_token_definitions(self.itgrep.iter_runtime_quad_tokens(data)) if code: code = "// Geometric quantities and coefficients\n" + code return code def gen_A_assignment_block(self, data): "Assigning values to element tensor (for pre-integrated tensor components)" # Only one symbolic integral supported: assert data.integral is self.itgrep.symbolic_integral if self.itgrep._on_facet: # TODO: Each facet block can be extracted as a separate function fr = self.itgrep.formrep code = CodeFormatter() code.begin_switch("facet") for facet in range(fr.cell.num_facets): A_tokens = self.itgrep.iter_A_tokens(data, facet) code.begin_case(facet, braces=True) code += "// Integrated element tensor entries" code += gen_token_assignments(A_tokens) code.end_case() code.end_switch() code = str(code) else: A_tokens = self.itgrep.iter_A_tokens(data) code = gen_token_assignments(A_tokens) code = "// Integrated element tensor entries\n{\n%s\n}" % code return code def gen_A_reset_block(self): # Zero element tensor code = "// Reset element tensor\n" code += "memset(A, 0, sizeof(double)*%d);" % len(self.itgrep.indices) return code def gen_quadrature_begin_block(self, data): "Beginning of quadrature loop." assert data.integral in self.itgrep.quadrature_integrals code = CodeFormatter() if self.itgrep._on_facet: num_points = data.facet_quad_rules[0].num_points code += "for(int iq=0; iq<%d; iq++)" % num_points code += "{" code.indent() code += "// Fetch quadrature rule" code += "const double quad_weight = facet_quad_weights[facet][iq];" code += "const double *_p = facet_quad_points[facet][iq];" else: num_points = data.quad_rule.num_points code += "for(int iq=0; iq<%d; iq++)" % num_points code += "{" code.indent() code += "// Fetch quadrature rule" code += "const double quad_weight = quad_weights[iq];" code += "const double *_p = quad_points[iq];" nsd = self.itgrep.formrep.cell.nsd if nsd > 0: code += "const double x = _p[0];" if nsd > 1: code += "const double y = _p[1];" if nsd > 2: code += "const double z = _p[2];" code.dedent() return str(code) def gen_A_accumulation_block(self, data): "Accumulation of nonzero element tensor entries." assert data.integral in self.itgrep.quadrature_integrals A_tokens = self.itgrep.iter_A_tokens(data) code = gen_token_additions((A_sym, A_expr) for (A_sym, A_expr) in A_tokens if A_expr != 0) assert code code = "// Accumulating element tensor entries\n{\n%s\n}" % indent(code) return code def gen_quadrature_end_block(self): return "}" def gen_symbol_allocation_block(self): if self.itgrep._symbol_counter > 0: code = "double s[%d];" % self.itgrep._symbol_counter else: code = "" return code def gen_tabulate_tensor(self): "Generic function to generate tabulate_tensor composed by reusable code blocks." # TODO: Improve code generation here for "robustness", several possibilities: # - Use a loop over both trial and test functions. # - Use a loop over trial functions, keep inlined application of test functions. # - Apply "outlining" to reduce function size, that is, generate helper functions # instead of inlining all expressions explicitly. # For example one for each integral and one for each block. sfc_debug("Entering IntegralCG.tabulate_tensor") fr = self.itgrep.formrep fd = fr.formdata r = fr.rank def generate_partition_blocks(data, bf_dep_list, known): pblocks = [] known = frozenset(known) # Define sequence of blocks to handle todo = [] for (iota, keep) in bf_dep_list: deps = known if keep is not None: deps |= frozenset("v%d" % j for (j,k) in enumerate(keep) if k) if deps in data.partitions: todo.append((deps, iota)) # Handle each block in sequence for t in todo: deps, iota = t code = self.gen_partition_block(data, deps, iota) if code: pblocks += [code] return pblocks # Build a list of code blocks blocks = [] # Print debugging info about input arguments in code blocks += [self.gen_pre_debug_code()] # Geometry variables like G, Ginv, detG, n blocks += [self.gen_geometry_block()] # Symbolic integration part or element tensor reset integral = self.itgrep.symbolic_integral if integral is not None: data = self.itgrep.integral_data[integral.measure()] # TODO: Do we need any intermediate variable blocks? # Maybe if we apply some optimizations. # We could f.ex. compute the integrands to be # symbolically integrated from the graph, # with the same tokens precomputed as with quadrature. blocks += [self.gen_A_assignment_block(data)] else: blocks += [self.gen_A_reset_block()] # List of ways that expressions may depend on basis functions bf_dep_list = [((), None)] if r == 1: m = fr.element_reps[fd.elements[0]].local_dimension bf_dep_list += [((i,), (True,)) for i in range(m)] elif r == 2: m = fr.element_reps[fd.elements[0]].local_dimension n = fr.element_reps[fd.elements[1]].local_dimension bf_dep_list += [((None, i), (False, True)) for i in range(m)] bf_dep_list += [((i, None), (True, False)) for i in range(m)] bf_dep_list += [((i, j), (True, True)) for i in range(m) for j in range(n)] elif r > 2: sfc_error("Support for higher order tensors not implemented.") # Code for each quadrature integral for integral in self.itgrep.quadrature_integrals: # Data about this particular integral, including integration mode and computational graph data = self.itgrep.integral_data[integral.measure()] # FIXME: These should be precomputed, no dependencies blocks += generate_partition_blocks(data, bf_dep_list, ()) # Compute blocks of intermediate variables, s[...] = ...; that are independent of coordinates blocks += generate_partition_blocks(data, bf_dep_list, ("c",)) # Begin quadrature loop blocks += [self.gen_quadrature_begin_block(data)] # Build quadrature loop body from blocks qblocks = [] # Just for indentation similar to generated code :) if True: qblocks += [indent(self.gen_quadrature_runtime_block(data))] # FIXME: These should be precomputed for each quadrature point, no runtime dependencies qblocks += generate_partition_blocks(data, bf_dep_list, ("x",)) # Compute blocks of intermediate variables, s[...] = ...; qblocks += generate_partition_blocks(data, bf_dep_list, ("c", "x")) # Accumulate element tensor values, A[...] += ...; qblocks += [self.gen_A_accumulation_block(data)] blocks += [indent(code) for code in qblocks] # End quadrature loop blocks += [self.gen_quadrature_end_block()] # Print debugging info about output values in code blocks += [self.gen_post_debug_code()] # Insert declaration for allocation of symbols at beginning code = self.gen_symbol_allocation_block() if code: blocks.insert(0, code) # Compose the final tabulate_tensor code! final_code = "\n\n".join(blocks) sfc_debug("Leaving IntegralCG.tabulate_tensor") return final_code def gen_tabulate_tensor_quadrature(self): return 'throw std::runtime_error("Not implemented.");' # FIXME syfi-1.0.0.dfsg.orig/site-packages/sfc/codegeneration/codeformatting.py0000644000175000017500000004517111672223006026072 0ustar johannrjohannr#!/usr/bin/env python # -*- coding: utf-8 -*- """ General utilities for code generation. """ # Copyright (C) 2008-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-02-27 # Last changed: 2008-10-13 import re import swiginac from pprint import * # global variable for consistent indentation indent_size = 4 def indent(text, n=1): """Indent a text n times. Text can also be a list of strings, or recursively a list of lists of strings.""" # must have something to indent if not(text and n): return text # indent components of a list without merging if isinstance(text, list): return [indent(c, n) for c in text] # fix to avoid extra spaces at end append_lineend = text.endswith("\n") # apply spaces to all lines lines = text.split("\n") if append_lineend: lines.pop() space = " "*(indent_size*n) text = "\n".join((space + s) for s in lines) # fix to avoid extra spaces at end if append_lineend: text += "\n" return text class CodeFormatter: """Utility class for assembling code strings into a multiline string. Supports checking for matching parenteses and applying indentation to generate code that is more robust with respect to correctness of program flow and readability of code. Support for the following constructs: {} (basic block), if, else if, else, switch, case, while, do, class Typical usage: >>> c = CodeFormatter() >>> c.begin_switch("i") >>> c.begin_case(0) >>> c += "foo();" >>> c.end_case() >>> c.begin_case(1) >>> c.begin_if("a > b") >>> c += "bar();" >>> c.begin_else_if("c > b") >>> c += "bar2();" >>> c.end_if() >>> c.end_case() >>> c.end_switch() >>> print str(c) switch(i) { case 0: foo(); break; case 1: if( a > b ) { bar(); } else if( c > b ) { bar2(); } break; } """ def __init__(self, name=""): self.name = name #self.text = "" self.text = [] self.indentation = 0 self.context = ["ROOT"] def get_context(self): return self.context[-1] def add_context(self, context): self.context.append(context) def remove_context(self, context): self.assert_context(context) c = self.context.pop(-1) if not c == context: raise RuntimeError("Expected context '%s' to be '%s'." % (c, context)) def assert_context(self, context): if not (self.context[-1] == context): raise RuntimeError("Expected to be in context '%s', state is %s." % (context, str(self.context))) def assert_contexts(self, contexts): for i in range(len(contexts)): if not self.context[-(i+1)] == contexts[i]: raise RuntimeError("Expected to be in contexts %s, state is %s." % (str(contexts), str(self.context))) def assert_closed_code(self): self.assert_context("ROOT") if self.indentation != 0: raise RuntimeError("Code is not closed, indentation state is %d != 0." % self.indentation) def __str__(self): #try: self.assert_closed_code() #except: # raise RuntimeError("Converting a CodeFormatter to str, but context is not closed: %s" % str(self.context)) #return self.text return "".join(self.text) def new_text(self, text): "Add a block of text directly with no modifications." #self.text += text self.text.append(text) def new_line(self, text=""): "Add a line with auto-indentation." if self.text: #self.text += "\n" self.text.append("\n") #self.text += indent(text, self.indentation) self.text.append(indent(text, self.indentation)) def __iadd__(self, text): if self.text: #self.text += "\n" self.text.append("\n") #self.text += indent(text, self.indentation) self.text.append(indent(text, self.indentation)) return self def indent(self): self.indentation += 1 def dedent(self): if self.indentation <= 0: print "WARNING: Dedented non-indented code, something"\ " is wrong in code generation program flow." self.indentation = 0 else: self.indentation -= 1 def comment(self, text): if "\n" in text: self.new_line( "/*" ) self.new_line( indent(text, self.indentation) ) # TODO: indent text to proper level! self.new_line( "*/" ) else: self.new_line( "// " + text ) def begin_debug(self): self.add_context("debug") self.new_line("#ifdef SFCDEBUG") def end_debug(self): self.new_line("#endif // SFCDEBUG") self.remove_context("debug") def begin_block(self): self.add_context("block") self.new_line("{") self.indent() def end_block(self): self.dedent() self.new_line("}") self.remove_context("block") def begin_switch(self, arg): self.new_line("switch(%s)" % str(arg)) self.new_line("{") self.add_context("switch") def begin_case(self, arg, braces=False): self.assert_context("switch") self.add_context("case") self.new_line("case %s:" % str(arg)) self.indent() if braces: self.begin_block() def end_case(self): if self.get_context() == "block": # braces = True in begin_case self.end_block() self.new_line("break;") self.dedent() self.remove_context("case") def end_switch(self): self.new_line("}") self.remove_context("switch") def begin_while(self, arg): self.add_context("while") self.new_line("while( %s )" % str(arg)) self.begin_block() def end_while(self): self.end_block() self.remove_context("while") def begin_do(self): self.add_context("do") self.new_line("do") self.new_line("{") self.indent() def end_do(self, arg): self.dedent() self.new_line( "} while(%s);" % str(arg) ) self.remove_context("do") def begin_if(self, arg): self.add_context("if") self.new_line("if( %s )" % str(arg)) self.begin_block() def begin_else_if(self, arg): self.end_block() self.assert_context("if") self.new_line("else if( %s )" % str(arg)) self.begin_block() def begin_else(self): self.end_block() self.assert_context("if") self.new_line("else") self.begin_block() def end_if(self): self.end_block() self.remove_context("if") def begin_class(self, classname, bases=[]): self.add_context("class") code = "class %s" % str(classname) if bases: code += ": " + ", ".join(bases) self.new_line( code ) self.begin_block() def end_class(self): self.end_block() self.new_text(";") self.remove_context("class") def declare_function(self, name, return_type="void", args=[], const=False, virtual=False, inline=False, classname=None): code = "%s;" % function_signature(name, return_type, args, virtual, inline, const, classname) self.new_line(code) def define_function(self, name, return_type="void", args=[], const=False, virtual=False, inline=False, classname=None, body="// Empty body"): signature = function_signature(name, return_type, args, virtual, inline, const, classname) self.new_line(signature) self.begin_block() self.new_line(body) self.end_block() def call_function(self, name, args=[]): args = ", ".join(args) code = "".join((name, "(", args, ");")) self.new_line(code) # ... Utility functions for code generation def row_major_index_string(i, shape): """Constructs an index string for a row major (C type) indexing of a flattened tensor of rank 0, 1, or 2.""" if len(shape) == 0: return "0" if len(shape) == 1: return "%d" % i[0] if len(shape) == 2: return "%d*%d + %d" % (shape[1], i[0], i[1]) raise ValueError("Rank 3 or higher not supported in row_major_index_string()") def optimize_floats(code): """Optimize storage size of floating point numbers by removing unneeded trailing zeros.""" regexp = re.compile('0+e') return regexp.sub('e', code) def function_signature(name, return_type="void", args=[], virtual=False, inline=False, const=False, classname=None): "Render function signature from arguments." code = [] if virtual: code.append("virtual ") if inline: code.append("inline ") code.extend((return_type, " ")) if classname: code.extend((classname, "::")) def joinarg(arg): if isinstance(arg, str): return arg if len(arg) == 2: return "%s %s" % arg elif len(arg) == 3: return "%s %s%s" % arg raise RuntimeError("Invalid arg: %s" % repr(arg)) args = ", ".join(joinarg(arg) for arg in args) code.extend((name, "(", args, ")")) if const: code.append(" const") return "".join(code) # TODO: These token code generation functions can be optimized by iterating differently # TODO: A function that can apply two rules to the same stream and return two joined codes default_code_rule = r"double %(symbol)s = %(value)s;" def gen_token_code(token, rule=default_code_rule): """token[0] is a symbol or string or matrix with symbols, token[1] is a scalar, expression or matrix of the same shape with the corresponding values. Generates code based on rule, default %s, for all elements of token[0] and token[1].""" % default_code_rule def code_rule(s, v): return rule % { "symbol": s, "value": v } # make symbol and value swiginac objects if they're not sym, val = token if isinstance(val, (int, float)): val = swiginac.numeric(val) # check if we have one or more tokens here if isinstance(sym, (swiginac.matrix, swiginac.lst)): if len(sym) != len(val): raise RuntimeError("sym and val must have same size.") code = "\n".join( code_rule(sym[i].printc(), val[i].printc()) for i in xrange(len(sym)) ) else: code = code_rule(str(sym), val.printc()) return code #=============================================================================== # def gen_symbol_declaration(symbol, prefix="double ", postfix=";\n"): # """symbol is a swiginac.symbol or matrix or lst with symbols. # Generates code for declaration of all symbols in symbol.""" # # if not isinstance(symbol, (swiginac.matrix, swiginac.lst) ): # symbol = swiginac.matrix(1,1, [symbol]) # # # cat all symbols in comma separated string # symbol_list = ", ".join( str(symbol[i]) for i in xrange(len(symbol)) ) # # code = prefix + symbol_list + postfix # return code #=============================================================================== def gen_token_prints(tokens, indent=" "): return "\n".join(gen_token_code(token, rule='std::cout << "'+indent+'%(symbol)s = " << %(symbol)s << std::endl;') for token in tokens) def gen_symbol_declarations(symbols): return "\n".join("double %s;" % str(s) for s in symbols) def gen_token_declarations(tokens): return "\n".join(gen_token_code(token, rule="double %(symbol)s;") for token in tokens) def gen_token_definitions(tokens): return "\n".join(gen_token_code(token, rule="double %(symbol)s = %(value)s;") for token in tokens) def gen_const_token_definitions(tokens): return "\n".join(gen_token_code(token, rule="const double %(symbol)s = %(value)s;") for token in tokens) def gen_token_assignments(tokens): return "\n".join(gen_token_code(token, rule="%(symbol)s = %(value)s;") for token in tokens) def gen_token_additions(tokens): return "\n".join(gen_token_code(token, rule="%(symbol)s += %(value)s;") for token in tokens) def gen_switch(argument, cases, default_case=None, braces=False): if braces: start_brace = "{\n" end_brace = "\n}" else: start_brace = "" end_brace = "" case_code = "\n".join([ "case %s:\n%s%s\n break;%s" % (str(c[0]), start_brace, indent(c[1]), end_brace) for c in cases]) if default_case: case_code += "\ndefault:\n%s%s %s" % (start_brace, indent(default_case), end_brace) return "switch(%s)\n{\n%s\n}" % (argument, indent(case_code)) #class Switch: # def __init__(self, argument, cases=[], default_case=None, braces=False): # self.argument = argument # self.cases = cases # self.default_case = default_case # self.braces = braces # # def __str__(self): # return gen_switch(self.argument, self.cases, self.default_case, self.braces) # # #class IfElse: # def __init__(self, cases=[]): # self.cases = cases # # def __str__(self): # c = self.cases[0] # code = "if(%s)\n{\n%s\n}" % (c[0], indent(c[1])) # for c in self.cases[1:]: # code += "\nelse if(%s)\n{\n%s\n}" % (c[0], indent(c[1])) # return code # # #class Struct: # def __init__(self, name, variables=[]): # self.name = name # self.variables = variables # # def __str__(self): # inner_code = "" # for v in self.variables: # if isinstance(v, tuple): # inner_code += "%s %s;\n" % (v[0], v[1]) # else: # inner_code += "double %s;\n" % v # return "struct %s\n{\n%s}" % (self.name, indent( inner_code )) def outline(name, tokens, targets, deps): inputargs = deps # figure out which variables to output and # which to declare on the local stack localtokens = [] outputargs = [] for t in tokens: s = t[0] if s in targets: outputargs.append(s) else: localtokens.append(s) # generate code for argument list in the function call allargs = inputargs + outputargs callargumentlist = ", ".join(str(a) for a in allargs) # generate code for the argument list in the function definition, # input args and output args separately argumentlist1 = ", ".join("double %s" % str(a) for a in inputargs) argumentlist2 = ", ".join("double & %s" % str(a) for a in outputargs) # join input and output arguments to a single argument list argumentlist = argumentlist1 if argumentlist1 and argumentlist2: argumentlist += ", " argumentlist += argumentlist2 # generate function body to compute targets body = "" body += "\n".join(" double %s;" % s for s in localtokens) body += "\n" body += "\n".join(" %s = %s;" % (t[0], t[1]) for t in tokens) # stich together code pieces to return fundef = "void %s(%s)\n{\n%s\n}" % (name, argumentlist, body) funcall = "%s(%s);" % (name, callargumentlist) return fundef, funcall def test_outliner(): tokens = [ ("a", "u * v"), ("b", "u + w"), ] deps = ["u", "v", "w"] targets = ["a"] fundef, funcall = outline("foo", tokens, targets, deps) print fundef print funcall #year, month, day, hour, minute = time.localtime()[:5] #date_string = "%d:%d, %d/%d %d" % (hour, minute, day, month, year) if __name__ == "__main__": c = CodeFormatter() c.begin_class( "Foo" ) c += "dings" c.end_class() c += "" c.begin_class( "Bar", ("fee", "foe") ) c.comment( "something funny" ) c.declare_function("blatti", "int", const=False, virtual=False) c.declare_function("foo", "double", const=True) c.declare_function("bar", virtual=True) c.end_class() c.define_function("blatti", "int", const=False, virtual=False, classname="Bar", body='cout << "Hello world!" << endl;') c.call_function("blatti") c += "" # a basic if c.begin_if( "a < b" ) c += "foo.bar();" c.end_if() c += "" # a compound if c.begin_if( "a < b" ) c += "foo.bar();" c.begin_else_if( "c < b" ) c += "foo.bar();" c.begin_else() c += "foo.bar();" c.end_if() c += "" # a simple do loop c.begin_do() c += "foo();" c.end_do("a > 0") c += "" # a simple while loop c.begin_while("a > 0") c += "foo();" c.end_while() c += "" # an empty switch c.begin_switch("i") c.end_switch() c += "" # a compound switch c.begin_switch("k") c.begin_case(0) c += "foo.bar();" c.end_case() c.begin_case("1") c += "bar.foo();" c += "bar.foo();" c.end_case() c.end_switch() c += "" # verify that the code is closed c.assert_closed_code() # print the result print c if __name__ == '__main__': from swiginac import symbol x = symbol("x") y = symbol("y") z = symbol("z") pi = swiginac.Pi cos = swiginac.cos tokens = [ (x, 1), (y, x**2-1), (z, cos(2*pi*x*y)) ] print gen_token_declarations(tokens) print gen_token_definitions(tokens) print gen_const_token_definitions(tokens) print gen_token_assignments(tokens) print gen_token_additions(tokens) # print Switch("i", [(1, "foo();"), (2, "bar();")], "foe();", False) # print Switch("i", [(1, "foo();"), (2, "bar();")], None, True) # print Switch("i", [(1, "foo();"), (2, "bar();")], "foe();", True) # print Switch("i", [(1, "foo();"), (2, "bar();")], None, False) # # print IfElse([("i==0", "foo();"), ("i!=1", "bar();")]) # # print Struct("foostruct", ["a", "b", "c"]) # print Struct("barstruct", [("int", "a"), ("bool", "b"), "c"]) def _test(): import doctest return doctest.testmod() if __name__ == "__main__": _test() syfi-1.0.0.dfsg.orig/site-packages/sfc/codegeneration/exteriorfacetintegralcg.py0000644000175000017500000001103311672223006027757 0ustar johannrjohannr# -*- coding: utf-8 -*- """ This module contains code generation tools for the ufc::exterior_facet_integral class. """ # Copyright (C) 2008-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-08-13 # Last changed: 2009-03-09 from itertools import tee import swiginac from sfc.common.output import sfc_debug, sfc_error, sfc_assert, sfc_warning from sfc.quadrature import gen_quadrature_rule_definition, gen_quadrature_rule_definitions from sfc.codegeneration.codeformatting import indent, CodeFormatter, gen_const_token_definitions, gen_token_prints from sfc.codegeneration.codeformatting import gen_symbol_declarations, gen_token_declarations, gen_token_assignments, gen_token_additions from sfc.codegeneration.integralcg import IntegralCG class ExteriorFacetIntegralCG(IntegralCG): def __init__(self, itgrep): IntegralCG.__init__(self, itgrep) # Generator trick: # Iterators over members are used in gen_members and # gen_constructor, avoid double iteration with tee: # FIXME: Update this for multiple integral data, and for precomputation without constructor code for integral in self.itgrep.quadrature_integrals: sfc_assert(len(self.itgrep.quadrature_integrals) <= 1, "Not implemented!") data = self.itgrep.integral_data[integral.measure()] a, b = tee(self.itgrep.iter_member_quad_tokens(data)) self._iter_member_quad_tokens1 = a self._iter_member_quad_tokens2 = b def gen_members(self): sfc_debug("entering ExteriorFacetIntegral.gen_members") code = "" # FIXME: Update this for multiple integral data, and for precomputation without constructor code for integral in self.itgrep.quadrature_integrals: sfc_assert(len(self.itgrep.quadrature_integrals) <= 1, "Not implemented!") data = self.itgrep.integral_data[integral.measure()] member_quad_tokens = self._iter_member_quad_tokens1 #self.itgrep.iter_member_quad_tokens() member_quad_token_names = (str(s[0]).split(".")[-1] for s in member_quad_tokens) decl = gen_symbol_declarations(member_quad_token_names) if decl: code += "\n\n" code += "struct member_quad_tokens\n{\n" code += indent(decl) code += "\n};\n" code += "member_quad_tokens qt[%d][%d];\n" % (self.itgrep.formrep.cell.num_facets, data.facet_quad_rules[0].num_points) sfc_debug("leaving ExteriorFacetIntegral.gen_members") return code def gen_constructor(self): sfc_debug("entering ExteriorFacetIntegral.gen_constructor") code = "" # FIXME: Update this for multiple integral data, and for precomputation without constructor code for integral in self.itgrep.quadrature_integrals: sfc_assert(len(self.itgrep.quadrature_integrals) <= 1, "Not implemented!") data = self.itgrep.integral_data[integral.measure()] member_quad_tokens = self._iter_member_quad_tokens2 # itgrep.iter_member_quad_tokens() member_quad_tokens_assignments = gen_token_assignments(member_quad_tokens) if member_quad_tokens_assignments: # Construct loop over facets with quad loop inside facet_loop_begin = "for(int facet=0; facet<%d; facet++)\n{\n" % self.itgrep.formrep.cell.num_facets quad_loop_start_code = self.gen_quadrature_begin_block(data) # Stitch code pieces together code += facet_loop_begin code += quad_loop_start_code code += indent(member_quad_tokens_assignments) code += "\n}\n" code += "\n}\n" sfc_debug("leaving ExteriorFacetIntegral.gen_constructor") return code def gen_destructor(self): return "" syfi-1.0.0.dfsg.orig/site-packages/sfc/codegeneration/cellintegralcg.py0000644000175000017500000001037111672223006026036 0ustar johannrjohannr# -*- coding: utf-8 -*- """ This module contains code generation tools for the ufc::cell_integral class. """ # Copyright (C) 2008-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-08-13 # Last changed: 2009-03-09 from itertools import tee import swiginac from sfc.common.output import sfc_debug, sfc_error, sfc_assert, sfc_warning from sfc.quadrature import gen_quadrature_rule_definition, gen_quadrature_rule_definitions from sfc.codegeneration.codeformatting import indent, CodeFormatter, gen_const_token_definitions, gen_token_prints from sfc.codegeneration.codeformatting import gen_symbol_declarations, gen_token_declarations, gen_token_assignments, gen_token_additions from sfc.codegeneration.integralcg import IntegralCG class CellIntegralCG(IntegralCG): def __init__(self, itgrep): IntegralCG.__init__(self, itgrep) # Generator trick: # Iterators over members are used in gen_members and # gen_constructor, avoid double iteration with tee: # FIXME: Update this for multiple integral data, and for precomputation without constructor code for integral in self.itgrep.quadrature_integrals: sfc_assert(len(self.itgrep.quadrature_integrals) <= 1, "Not implemented!") data = self.itgrep.integral_data[integral.measure()] a, b = tee(self.itgrep.iter_member_quad_tokens(data)) self._iter_member_quad_tokens1 = a self._iter_member_quad_tokens2 = b def gen_members(self): sfc_debug("entering CellIntegral.gen_members") code = "" # FIXME: Update this for multiple integral data, and for precomputation without constructor code for integral in self.itgrep.quadrature_integrals: sfc_assert(len(self.itgrep.quadrature_integrals) <= 1, "Not implemented!") data = self.itgrep.integral_data[integral.measure()] member_quad_tokens = self._iter_member_quad_tokens1 #self.itgrep.iter_member_quad_tokens() member_quad_token_names = (str(s[0]).split(".")[-1] for s in member_quad_tokens) decl = gen_symbol_declarations(member_quad_token_names) if decl: code += "\n\n" code += "struct member_quad_tokens\n{\n" code += indent(decl) code += "\n};\n" code += "member_quad_tokens qt[%d];\n" % data.quad_rule.num_points sfc_debug("leaving CellIntegral.gen_members") return code def gen_constructor(self): sfc_debug("entering CellIntegral.gen_constructor") code = "" # FIXME: Update this for multiple integral data, and for precomputation without constructor code for integral in self.itgrep.quadrature_integrals: sfc_assert(len(self.itgrep.quadrature_integrals) <= 1, "Not implemented!") data = self.itgrep.integral_data[integral.measure()] member_quad_tokens = self._iter_member_quad_tokens2 # itgrep.iter_member_quad_tokens() member_quad_tokens_assignments = gen_token_assignments(member_quad_tokens) if member_quad_tokens_assignments: # Construct quadrature loop quad_loop_start_code = self.gen_quadrature_begin_block(data) # Stitch code pieces together code += quad_loop_start_code + "\n" code += indent(member_quad_tokens_assignments) code += "\n}\n" sfc_debug("leaving CellIntegral.gen_constructor") return code def gen_destructor(self): return "" syfi-1.0.0.dfsg.orig/site-packages/sfc/codegeneration/formcg.py0000644000175000017500000001310511672223006024332 0ustar johannrjohannr#!/usr/bin/env python # -*- coding: utf-8 -*- """ This module contains code generation tools for the ufc::form class. """ # Copyright (C) 2008-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-08-13 # Last changed: 2009-03-05 from sfc.codegeneration.codeformatting import indent, CodeFormatter class FormCG: "Code generator for an ufc::form." def __init__(self, formrep): self.formrep = formrep def hincludes(self): l = [] return l def cincludes(self): l = [] return l def generate_code_dict(self): form_vars = { "classname" : self.formrep.classname, "constructor" : indent(self.gen_constructor()), "constructor_arguments" : indent(self.gen_constructor_arguments()), "initializer_list" : indent(self.gen_initializer_list()), "destructor" : indent(self.gen_destructor()), "members" : indent(self.gen_members()), "rank" : indent(self.gen_rank()), "num_coefficients" : indent(self.gen_num_coefficients()), "signature" : indent(self.gen_signature()), "create_dofmap" : indent(self.gen_create_dofmap()), "create_finite_element" : indent(self.gen_create_finite_element()), "create_cell_integral" : indent(self.gen_create_cell_integral()), "create_exterior_facet_integral" : indent(self.gen_create_exterior_facet_integral()), "create_interior_facet_integral" : indent(self.gen_create_interior_facet_integral()), "num_cell_domains" : indent(self.gen_num_cell_domains()), "num_exterior_facet_domains" : indent(self.gen_num_exterior_facet_domains()), "num_interior_facet_domains" : indent(self.gen_num_interior_facet_domains()), } return form_vars def generate_support_code(self): return "" def gen_constructor(self): return "" def gen_constructor_arguments(self): return "" def gen_initializer_list(self): return "" def gen_destructor(self): return "" def gen_members(self): return "" def gen_rank(self): return 'return %d;' % self.formrep.rank def gen_num_coefficients(self): return 'return %d;' % self.formrep.num_coefficients def gen_signature(self): return 'return "%s";' % self.formrep.signature def _gen_num_domains(self, names): if names: n = 1 + max(list(names.keys())) else: n = 0 return 'return %d;' % n def gen_num_cell_domains(self): return self._gen_num_domains(self.formrep.citg_names) def gen_num_exterior_facet_domains(self): return self._gen_num_domains(self.formrep.eitg_names) def gen_num_interior_facet_domains(self): return self._gen_num_domains(self.formrep.iitg_names) def _gen_create_switch(self, classnames, name, indices = None, return_null=False): "Utility function for creating factory functions." code = CodeFormatter() #if options.add_debug_code: # FIXME # code.begin_debug() # code += 'std::cout << "Creating object in %s, index is " << i << std::endl;' % name # code.end_debug() if classnames: if isinstance(classnames, dict): assert indices is None else: if indices is None: indices = range(len(classnames)) classnames = dict((i,c) for (i,c) in zip(indices, classnames)) code.begin_switch("i") for i, c in classnames.iteritems(): code.begin_case(i) code += "return new %s();" % c code.end_case() code.end_switch() if return_null: code += 'return 0;' else: code += 'throw std::runtime_error("Invalid index in %s()");' % name return str(code) def gen_create_dofmap(self): return self._gen_create_switch(self.formrep.dm_names, "create_dofmap") def gen_create_finite_element(self): return self._gen_create_switch(self.formrep.fe_names, "create_finite_element") def gen_create_cell_integral(self): return self._gen_create_switch(self.formrep.citg_names, "create_cell_integral", return_null=True) def gen_create_exterior_facet_integral(self): return self._gen_create_switch(self.formrep.eitg_names, "create_exterior_facet_integral", return_null=True) def gen_create_interior_facet_integral(self): return self._gen_create_switch(self.formrep.iitg_names, "create_interior_facet_integral", return_null=True) if __name__ == '__main__': print "form.py, no test implemented" syfi-1.0.0.dfsg.orig/site-packages/sfc/jit.py0000644000175000017500000003155711672223006020670 0ustar johannrjohannr#!/usr/bin/env python # -*- coding: utf-8 -*- """ This module contains the Just-In-Time compiler tools. The main function is jit(form, options), see its documentation. """ # Copyright (C) 2008-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified by Kent-Andre Mardal, 2010. # # First added: 2008-09-04 # Last changed: 2009-04-23 import shutil import os import hashlib import instant import ufc_utils import ufl import ufl.algorithms from ufl.algorithms import preprocess from sfc.common import version from sfc.common import default_parameters from sfc.common import ParameterDict from sfc.common import get_abs_ufc_h_path from sfc.common import sfc_debug, sfc_info, sfc_warning, sfc_error, sfc_assert, write_file from sfc.common.names import short_name, form_classname, dof_map_classname, finite_element_classname, base_element_classname from sfc.codegeneration import generate_code, compiler_input def cache_signature(input, options): "A signature string uniquely identifying jit input." # FIXME, need to use i.form_data() for memory caching TODO: What does this mean? if not isinstance(input, list): input = [input] newinput = [] for i in input: if isinstance(i, ufl.form.Form): i = i.signature() #i = i.compute_form_data().preprocessed_form.signature() # TODO: Something like this? newinput.append(i) return "sfc.jit(%r, %r) # SFC version %r" % (newinput, options, version) def compile_module(module_dir, hfilenames, cfilenames, signature, options): """Assuming an existing directory module_dir with source files hfilenames, cfilenames, create a python extension module and compile it.""" orig_dir = os.getcwd() try: # headers to #include in swig file system_headers = ["iostream", "stdexcept", "cmath", "ufc.h", "tr1/memory"] cppargs = options.compilation.cppargs if options.compilation.enable_debug_code: cppargs.append("-DSFCDEBUG") module_name = module_dir if signature is None else None module = ufc_utils.build_ufc_module(h_files = hfilenames, source_directory = module_dir, sources = cfilenames, system_headers = system_headers, cppargs = cppargs, signature = signature, cache_dir = options.compilation.cache_dir, modulename = module_name, generate_interface = options.compilation.generate_interface, generate_setup = options.compilation.generate_setup) sfc_info("Successfully compiled module in '%s'." % module_dir) return module # ... finally: os.chdir(orig_dir) def jit(input, parameters=None, common_cell=None): ufl_elements, formdatas = compiler_input(input, common_cell=common_cell) # Merge parameters with defaults if parameters is None: parameters = default_parameters() if isinstance(parameters, dict) and not isinstance(parameters, ParameterDict): o = parameters parameters = default_parameters() parameters.update(o) # Default prefix shows where the module was compiled prefix = parameters.code.prefix if not prefix: prefix = "sfc_jit" # Build module signature and classnames from input signature = cache_signature(input, parameters) formclassnames = [form_classname(fd.preprocessed_form, parameters) for fd in formdatas] # formclassnames = [form_classname(fd.form, parameters) for fd in formdatas] dmclassnames = [dof_map_classname(e) for e in ufl_elements] feclassnames = [finite_element_classname(e) for e in ufl_elements] # Placeholder for the up and coming compiled module module = None # Hacky hook for profiling without the C++ compilation if parameters.compilation.skip: pass else: # Possibly force recompilation if parameters.compilation.overwrite_cache: sfc_warning("Complete implementation of overwrite_cache not done, but skipping cache lookup before code generation.") # TODO: delete existing module with signature or module_name else: # Check cache before generating code module = instant.import_module(signature) # Construct ufc::form object if module: sfc_info("Found module in cache.") if module is None: # Store original path, to restore later orig_dir = os.getcwd() # Build module name, then shorten if it's too long module_dir_name = "_".join(["_".join(formclassnames), "_".join(dmclassnames), "_".join(feclassnames)]) module_dir_name = short_name(prefix, module_dir_name) # Make sure the module directory is there and empty module_dir = os.path.abspath(module_dir_name) if os.path.exists(module_dir): sfc_warning("Possibly overwriting files in existing module directory '%s'." % module_dir) else: os.mkdir(module_dir) # Enter module directory and generate code! try: os.chdir(module_dir) # Write parameters, signature and form representations to files beside code write_file("parameters.repr", repr(parameters)) write_file("signature", signature) for fd in formdatas: write_file("%s.repr" % short_name("form_", fd.name), repr(fd.preprocessed_form)) for ue in ufl_elements: write_file("%s.repr" % short_name("element_", base_element_classname(ue)), repr(ue)) # Generate code! hfilenames, cfilenames = generate_code(ufl_elements + formdatas, None, parameters, common_cell=common_cell) # Hook for profiling without the C++ compilation if parameters.compilation.skip: return None finally: # Restore original path os.chdir(orig_dir) # Invoke Instant to compile generated files as a Python extension module module = compile_module(module_dir, hfilenames, cfilenames, signature, parameters) # Remove temporary module directory if code was copied to cache placed_in_cache = False # TODO if placed_in_cache: sfc_info("Module was placed in cache, deleting module directory '%s'." % module_dir) shutil.rmtree(module_dir) if module is None: sfc_error("Failed to load compiled module from cache.") # If we get here, 'module' should be our compiled module. # TODO: Handle mixed list of forms and elements? # Got forms, return forms if formdatas: prefix = "sfc dummy prefix for pydolfin which I have no idea what is used for" ufc_forms = [getattr(module, name)() for name in formclassnames] return ufc_forms[0], module, formdatas[0], prefix # Got elements, return elements elif ufl_elements: ufc_elements = [(getattr(module, fe)(), getattr(module, dm)()) for (fe, dm) in zip(feclassnames, dmclassnames)] return ufc_elements[0] msg = "Nothing to return, this shouldn't happen.\ninput =\n%r" % repr(input) sfc_error(msg) def jitf(input, objects, parameters = None): """Generate code from input and parameters. @param input: TODO @param parameters: TODO @return: FIXME: Agree on return values with FFC! Currently FFC returns (ufc_form, module, formdata), and dolfin assumes this """ # To handle all input uniformly list_input = isinstance(input, list) ufl_elements, formdatas = compiler_input(input, objects=objects) # Merge parameters with defaults if parameters is None: parameters = default_parameters() if isinstance(parameters, dict) and not isinstance(parameters, ParameterDict): o = parameters parameters = default_parameters() parameters.update(o) # Default prefix shows where the module was compiled prefix = parameters.code.prefix if not prefix: prefix = "sfc_jit" # Build module signature and classnames from input signature = cache_signature(input, parameters) formclassnames = [form_classname(fd.preprocessed_form, parameters) for fd in formdatas] dmclassnames = [dof_map_classname(e) for e in ufl_elements] feclassnames = [finite_element_classname(e) for e in ufl_elements] # Placeholder for the up and coming compiled module module = None # Hacky hook for profiling without the C++ compilation if parameters.compilation.skip: pass else: # Possibly force recompilation if parameters.compilation.overwrite_cache: sfc_warning("Complete implementation of overwrite_cache not done, but skipping cache lookup before code generation.") # TODO: delete existing module with signature or module_name else: # Check cache before generating code module = instant.import_module(signature) # Construct ufc::form object if module: sfc_info("Found module in cache.") if module is None: # Store original path, to restore later orig_dir = os.getcwd() # Build module name, then shorten if it's too long module_dir_name = "_".join(["_".join(formclassnames), "_".join(dmclassnames), "_".join(feclassnames)]) module_dir_name = short_name(prefix, module_dir_name) # Make sure the module directory is there and empty module_dir = os.path.abspath(module_dir_name) if os.path.exists(module_dir): sfc_warning("Possibly overwriting files in existing module directory '%s'." % module_dir) else: os.mkdir(module_dir) # Enter module directory and generate code! try: os.chdir(module_dir) # Write parameters, signature and form representations to files beside code write_file("parameters.repr", repr(parameters)) write_file("signature", signature) for fd in formdatas: write_file("%s.repr" % short_name("form_", fd.name), repr(fd.preprocessed_form)) for ue in ufl_elements: write_file("%s.repr" % short_name("element_", base_element_classname(ue)), repr(ue)) # Generate code! hfilenames, cfilenames = generate_code(ufl_elements + formdatas, objects, parameters) # Hook for profiling without the C++ compilation if parameters.compilation.skip: return None finally: # Restore original path os.chdir(orig_dir) # Invoke Instant to compile generated files as a Python extension module module = compile_module(module_dir, hfilenames, cfilenames, signature, parameters) # Remove temporary module directory if code was copied to cache placed_in_cache = False # TODO if placed_in_cache: sfc_info("Module was placed in cache, deleting module directory '%s'." % module_dir) shutil.rmtree(module_dir) if module is None: sfc_error("Failed to load compiled module from cache.") # If we get here, 'module' should be our compiled module. # TODO: Handle mixed list of forms and elements? # Got forms, return forms if formdatas: prefix = "sfc dummy prefix for pydolfin which I have no idea what is used for" ufc_forms = [getattr(module, name) for name in formclassnames] if list_input: return ufc_forms, module, formdatas, [prefix]*len(ufc_forms) else: return ufc_forms[0], module, formdatas[0], prefix # Got elements, return elements elif ufl_elements: ufc_elements = [(getattr(module, fe)(), getattr(module, dm)()) for (fe, dm) in zip(feclassnames, dmclassnames)] if list_input: return ufc_elements else: return ufc_elements[0] msg = "Nothing to return, this shouldn't happen.\ninput =\n%r" % repr(input) sfc_error(msg) syfi-1.0.0.dfsg.orig/site-packages/sfc/representation/0000755000175000017500000000000011674103625022565 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/site-packages/sfc/representation/__init__.py0000644000175000017500000000100211672223006024661 0ustar johannrjohannr from sfc.representation.elementrepresentation import ElementRepresentation from sfc.representation.formrepresentation import FormRepresentation from sfc.representation.integralrepresentation import IntegralRepresentation from sfc.representation.cellintegralrepresentation import CellIntegralRepresentation from sfc.representation.exteriorfacetintegralrepresentation import ExteriorFacetIntegralRepresentation from sfc.representation.interiorfacetintegralrepresentation import InteriorFacetIntegralRepresentation syfi-1.0.0.dfsg.orig/site-packages/sfc/representation/integralrepresentation.py0000644000175000017500000005247011672223006027731 0ustar johannrjohannr# -*- coding: utf-8 -*- """ This module contains representation classes for integrals. """ # Copyright (C) 2008-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified by Kent-Andre Mardal, 2010. # # First added: 2008-08-13 # Last changed: 2009-03-12 from itertools import izip #import SyFi import swiginac #import ufl from ufl.permutation import compute_indices from ufl.algorithms import Graph, partition, expand_indices2, expand_indices, strip_variables, tree_format from ufl.classes import Expr, Terminal, UtilityType, SpatialDerivative, Indexed from sfc.common import sfc_assert, sfc_warning, sfc_debug, sfc_error from sfc.common.utilities import indices_subset from sfc.codegeneration.codeformatting import indent, row_major_index_string from sfc.symbolic_utils import symbols, symbol from sfc.representation.swiginac_eval import SwiginacEvaluator, EvaluateAsSwiginac def find_locals(Vin, Vout, P): # Count the number of vertices depending on each vertex Vcount = [len(vi) for vi in Vin] # Count down all dependencies internally in the partition, O(|E| log|P|) Pset = set(P) for i in P: # v_i is in our partition for j in Vout[i]: # v_i depends on v_j if j in Pset: # is v_j in our partition? Vcount[j] -= 1 # don't count with internal dependencies in partition # Return mapping (v_i -> is_local_to_P) for all v_i in P return dict((i, (Vcount[i] == 0)) for i in P) def is_simple(e): return (e.nops() == 0) # TODO: Try something like this: #return (e.nops() == 0) or \ # (isinstance(e, (swiginac.add, swiginac.mul)) \ # and all(o.nops() for o in e.ops())) class IntegralData: def __init__(self, itgrep, integral): self.itgrep = itgrep self.integral = integral # TODO: Override these and other options with metadata metadata = integral.measure().metadata() self.integration_method = itgrep.options.integration_method self.integration_order = itgrep.options.integration_order self.quad_rule = None self.facet_quad_rules = None self.G = None self.Vdeps = None self.Vin_count = None self.partitions = {} self.evaluator = None self.evaluate = None self.V_symbols = {} self.vertex_data_set = {} def store(self, value, i, basis_functions): #print "STORING AT", i, basis_functions, str(value) vd = self.vertex_data_set.get(basis_functions) if vd is None: vd = {} self.vertex_data_set[basis_functions] = vd vd[i] = value def get_vd(self, j, basis_functions): jkeep = [(("v%d" % k) in self.Vdeps[j]) for k in range(self.itgrep.formrep.rank)] iota, = indices_subset([basis_functions], jkeep) if all(i is None for i in iota): iota = () vd = self.vertex_data_set[iota] return vd def fetch_storage(self, j, basis_functions): vd = self.get_vd(j, basis_functions) return vd[j] def free_storage(self, j, basis_functions): "Delete stored data for j." vd = self.get_vd(j, basis_functions) #del vd[j] # FIXME: Enable when counts are corrected class IntegralRepresentation(object): def __init__(self, integrals, formrep, on_facet): sfc_debug("Entering IntegralRepresentation.__init__") self.integrals = integrals self.formrep = formrep self._on_facet = on_facet self.classname = formrep.itg_names[integrals[0]] self.options = self.formrep.options.code.integral # Shape of element tensor A_shape = [] for i in range(self.formrep.rank): element = self.formrep.formdata.elements[i] rep = self.formrep.element_reps[element] A_shape.append(rep.local_dimension) self.A_shape = tuple(A_shape) # All permutations of element tensor indices TODO: Not same for interior_facet_integrals, move to subclasses self.indices = compute_indices(self.A_shape) # Symbols for output tensor entry A[iota] Asym = symbols("A[%s]" % row_major_index_string(i, self.A_shape) for i in self.indices) self.A_sym = dict(izip(self.indices, Asym)) # Data structures for token symbols self._free_symbols = [] self._symbol_counter = 0 # Data structures to hold integrals for each measure self.symbolic_integral = None # Only a single symbolic integral is allowed self.quadrature_integrals = [] # Multiple quadrature integrals are possible, each with different quadrature rules self.integral_data = {} # Convenient mapping from measure to IntegralData object # Compute data about integrals for each measure fd = self.formrep.formdata for integral in self.integrals: data = IntegralData(self, integral) if data.integration_method == "symbolic": self.symbolic_integral = integral data.evaluator = SwiginacEvaluator(self.formrep, use_symbols=False, on_facet=self._on_facet) elif data.integration_method == "quadrature": # FIXME: Build a separate quadrature rule for each integral, if necessary data.quad_rule = self.formrep.quad_rule data.facet_quad_rules = self.formrep.facet_quad_rules self.quadrature_integrals.append(integral) if self.options.safemode: # Produce naive code, good for debugging and verification data.evaluator = SwiginacEvaluator(self.formrep, use_symbols=True, on_facet=self._on_facet) else: # Create an evaluation multifunction data.evaluate = EvaluateAsSwiginac(self.formrep, self, data, on_facet=self._on_facet) # Expand all indices before building graph integrand = integral.integrand() integrand = strip_variables(integrand) if self.options.use_expand_indices2: integrand = expand_indices2(integrand) else: integrand = expand_indices(integrand) # Build linearized computational graph data.G = Graph(integrand) # Count dependencies for each node V = data.G.V() n = len(V) data.Vin_count = [0]*n for i, vs in enumerate(data.G.Vin()): for j in vs: vj = V[j] # ... FIXME: Need to store one counter for each iota relevant for i, and to add "size(iota_space_j)" instead of 1 data.Vin_count[i] += 1 #data.Vin_count[-1] += ... # FIXME: Increment further for integrand root vertex # Partition graph based on dependencies #basis_function_deps = [set(("v%d" % i, "x")) \ # for (i, bf) in enumerate(fd.basis_functions)] #function_deps = [set(("w", "c", "x",)) \ # for (i, bf) in enumerate(fd.functions)] # TODO: Input actual dependencies of functions and # basis functions and their derivatives here data.partitions, data.Vdeps = partition(data.G) self.integral_data[integral.measure()] = data sfc_debug("Leaving IntegralRepresentation.__init__") # --- Printing --- def __str__(self): s = "" s += "IntegralRepresentation:\n" s += " classname: %s\n" % self.classname s += " A_shape: %s\n" % self.A_shape s += " indices: %s\n" % self.indices s += " A_sym: %s\n" % self.A_sym # Not computing whole A at any point because of memory usage #s += " A:\n" #for ii in self.indices: # s += " %s = %s\n" % (self.A_sym[ii], self.A[ii]) s += " UFL Integrals:\n" for integral in self.integrals: s += indent(str(integral)) + "\n\n" return s.strip("\n") # --- Utilities for allocation of symbols and association of data with graph vertices --- def allocate(self, data, j): """Allocate symbol(s) for vertex j. Either gets symbol from the free symbol set or creates a new symbol and increases the symbol counter.""" if self._free_symbols: return self._free_symbols.pop() s = symbol("s[%d]" % self._symbol_counter) self._symbol_counter += 1 data.V_symbols[j] = s return s def free_symbols(self, data, j): "Delete stored data for j and make its symbols available again." s = data.V_symbols.get(j) if s is None: sfc_debug("Trying to deallocate symbols that are not allocated!") return self._free_symbols.append(s) del data.V_symbols[j] # --- Generators for tokens of various kinds --- def iter_partition(self, data, deps, basis_functions=()): sfc_debug("Entering IntegralRepresentation.iter_partition") deps = frozenset(deps) P = data.partitions.get(deps) if not P: sfc_debug("Leaving IntegralRepresentation.iter_partition, empty") return data.evaluate.current_basis_function = basis_functions # Get graph components G = data.G V = G.V() E = G.E() Vin = G.Vin() Vout = G.Vout() # Figure out which variables are only needed within the partition is_local = find_locals(Vin, Vout, P) # For all vertices in partition P for i in P: v = V[i] if isinstance(v, UtilityType): # Skip labels and indices continue if v.shape(): # Skip expressions with shape: they will be evaluated when indexed. if not isinstance(v, (Terminal, SpatialDerivative)): print "="*30 print "type:", type(v) print "str:", str(v) print "child types:", [type(V[j]) for j in Vout[i]] print "child str:" print "\n".join( " vertex %d: %s" % (j, str(V[j])) for j in Vout[i] ) print "number of parents:", len(Vin[i]) if len(Vin[i]) < 5: print "parent types:", [type(V[j]) for j in Vin[i]] #print "parent str:" #print "\n".join( " vertex %d: %s" % (j, str(V[j])) for j in Vin[i] ) sfc_error("Expecting all indexing to have been propagated to terminals?") continue if Vin[i] and all(isinstance(V[j], SpatialDerivative) for j in Vin[i]): # Skipping expressions that only occur later in # differentiated form: we don't need their non-differentiated # expression so they will be evaluated when indexed. if not isinstance(v, (Terminal, SpatialDerivative, Indexed)): print "="*30 print type(v) print str(v) sfc_error("Expecting all indexing to have been propagated to terminals?") continue if isinstance(v, (Indexed, SpatialDerivative)): ops = v.operands() # Evaluate vertex v with given mapped ops if not all(isinstance(o, (Expr, swiginac.basic)) for o in ops): print ";"*80 print tree_format(v) print str(v) print type(ops) print str(ops) print repr(ops) print "types:" print "\n".join(str(type(o)) for o in ops) print ";"*80 e = data.evaluate(v, *ops) else: # Get already computed operands # (if a vertex isn't already computed # at this point, that is a bug) ops = [] for j in Vout[i]: try: # Fetch expression or symbol for vertex j e = data.fetch_storage(j, basis_functions) except: print "Failed to fetch expression for vertex %d," % j print " V[%d] = %s" % (j, repr(V[j])) print " parent V[%d] = %s" % (i, repr(V[i])) raise RuntimeError ops.append(e) ops = tuple(ops) e = data.evaluate(v, *ops) # TODO: Make sure that dependencies of skipped expressions # are counted down when evaluated later! # Or do we need that? We don't make symbols for them anyway. # Count down number of uses of v's dependencies for j in Vout[i]: # For each vertex j that depend on vertex i data.Vin_count[j] -= 1 if False: # data.Vin_count[j] == 0: # FIXME: This doesn't work yet, counters are wrong # Make the symbols for j available again self.free_symbols(data, j) data.free_storage(j, basis_functions) # Store some result for vertex i and yield token based on some heuristic if is_simple(e): # Store simple expression associated with # vertex j, no code generation necessary data.store(e, i, basis_functions) else: if is_local[i]: pass # TODO: Use this information to make a local set of symbols "sl[%d]" for each partition # Allocate a symbol and remember it, just throw away the expression s = self.allocate(data, i) data.store(s, i, basis_functions) # Only yield when we have a variable to generate code for! yield (s, e) sfc_debug("Leaving IntegralRepresentation.iter_partition") # Some stuff from the old code: #bf = self._current_basis_function # FIXME: Filter depending on deps! #key = tuple(chain((count,), component, index_values, bf)) #compstr = "_".join("%d" % k for k in key) #vname = "s_%s" % compstr # Register token (s, e) with variable v in evaluator, # such that it can return it from evaluator.variable #self.evaluator._variable2symbol[key] = vsym def iter_member_quad_tokens(self, data): # FIXME: Make this into precomputation of a static array of constants "Return an iterator over member tokens dependent of spatial variables. Overload in subclasses!" assert data.integration_method == "quadrature" # TODO: Precompute basis function values symbolically here instead of generating a loop in the constructor # TODO: Skip what's not needed! # Precompute all basis functions fr = self.formrep fd = fr.formdata generated = set() for iarg in range(fr.rank + fr.num_coefficients): elm = fd.elements[iarg] rep = fr.element_reps[elm] for i in range(rep.local_dimension): for component in rep.value_components: # Yield basis function itself s = fr.v_sym(iarg, i, component, self._on_facet) if not (s == 0 or s in generated): e = fr.v_expr(iarg, i, component) t = (s, e) yield t generated.add(s) # Yield its derivatives w.r.t. local coordinates for d in range(fr.cell.nsd): der = (d,) s = fr.dv_sym(iarg, i, component, der, self._on_facet) if not (s == 0 or s in generated): e = fr.dv_expr(iarg, i, component, der) t = (s, e) yield t generated.add(s) def iter_geometry_tokens(self): "Return an iterator over geometry tokens independent of spatial variables. Overload in subclasses!" fr = self.formrep # TODO: Skip what's not needed! # vx for (ss,ee) in zip(fr.vx_sym, fr.vx_expr): for i in range(ss.nops()): yield (ss.op(i), ee.op(i)) # G (ss,ee) = (fr.G_sym, fr.G_expr) for i in range(ss.nops()): yield (ss.op(i), ee.op(i)) # detG yield (fr.detGtmp_sym, fr.detGtmp_expr) yield (fr.detG_sym, fr.detG_expr) # Ginv (ss,ee) = (fr.Ginv_sym, fr.Ginv_expr) for i in range(ss.nops()): yield (ss.op(i), ee.op(i)) if self._on_facet: # Needed for normal vector TODO: Skip if not needed yield (fr.detG_sign_sym, fr.detG_sign_expr) else: if self.symbolic_integral is not None: # Scaling by cell volume factor, determinant of coordinate mapping yield (fr.D_sym, fr.detG_sym) def iter_runtime_quad_tokens(self, data): "Return an iterator over runtime tokens dependent of spatial variables. Overload in subclasses!" assert data.integration_method == "quadrature" # TODO: yield geometry tokens like G etc here instead if they depend on x,y,z # TODO: Skip what's not needed! # Generate all basis function derivatives fr = self.formrep fd = fr.formdata generated = set() for iarg in range(fr.rank + fr.num_coefficients): elm = fd.elements[iarg] rep = fr.element_reps[elm] for i in range(rep.local_dimension): for component in rep.value_components: # Yield first order derivatives w.r.t. global coordinates for d in range(fr.cell.nsd): der = (d,) s = fr.Dv_sym(iarg, i, component, der, self._on_facet) if not (s == 0 or s in generated): e = fr.Dv_expr(iarg, i, component, der, True, self._on_facet) t = (s, e) yield t generated.add(s) # Currently placing all w in here: generated = set() for iarg in range(fr.num_coefficients): elm = fd.elements[fr.rank+iarg] rep = fr.element_reps[elm] for component in rep.value_components: # Yield coefficient function itself s = fr.w_sym(iarg, component) if not s in generated: e = fr.w_expr(iarg, component, True, self._on_facet) t = (s, e) yield t generated.add(s) # Yield first order derivatives w.r.t. global coordinates for d in range(fr.cell.nsd): der = (d,) s = fr.Dw_sym(iarg, component, der) if not (s == 0 or s in generated): e = fr.Dw_expr(iarg, component, der, True, self._on_facet) t = (s, e) yield t generated.add(s) # Scaling factor if self._on_facet: # TODO: yield tokens that depend on both x and facet here # Scaling by facet area factor D_expr = fr.quad_weight_sym*fr.facet_D_sym else: # Scaling by cell volume factor, determinant of coordinate mapping D_expr = fr.quad_weight_sym*fr.detG_sym yield (fr.D_sym, D_expr) # --- Element tensor producers def iter_A_tokens(self, data, facet=None): "Iterate over all A[iota] tokens." for iota in self.indices: A_sym = self.A_sym[iota] A_expr = self.compute_A(data, iota, facet) yield (A_sym, A_expr) def compute_A(self, data, iota, facet=None): "Compute expression for A[iota]. Overload in subclasses!" raise NotImplementedError syfi-1.0.0.dfsg.orig/site-packages/sfc/representation/interiorfacetintegralrepresentation.py0000644000175000017500000000217011672223006032500 0ustar johannrjohannr# -*- coding: utf-8 -*- """ This module contains the representation class for interior facet integrals. """ # Copyright (C) 2008-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-10-17 # Last changed: 2009-03-05 from sfc.representation.integralrepresentation import IntegralRepresentation class InteriorFacetIntegralRepresentation(IntegralRepresentation): def __init__(self, integrals, formrep): IntegralRepresentation.__init__(self, integrals, formrep, True) syfi-1.0.0.dfsg.orig/site-packages/sfc/representation/swiginac_eval.py0000644000175000017500000004157111672223006025754 0ustar johannrjohannr"""This module defines evaluation algorithms for converting converting UFL expressions to swiginac representation.""" # Copyright (C) 2008-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified by Kent-Andre Mardal, 2010. # # First added: 2008-08-22 # Last changed: 2009-03-19 from collections import defaultdict from itertools import izip, chain import swiginac from ufl import * from ufl.classes import * from ufl.common import some_key, product, Stack, StackDict from ufl.algorithms.transformations import Transformer, MultiFunction from ufl.permutation import compute_indices from sfc.common import sfc_assert, sfc_error, sfc_warning from sfc.symbolic_utils import symbol, symbols class EvaluateAsSwiginac(MultiFunction): def __init__(self, formrep, itgrep, data, on_facet): # TODO: Remove unused arguments after implementing: MultiFunction.__init__(self) self.formrep = formrep self.itgrep = itgrep self.data = data self.on_facet = on_facet self.current_basis_function = (None,)*formrep.rank ### Fallback handlers: def expr(self, o, *ops): sfc_error("Evaluation not implemented for expr %s." % type(o).__name__) def terminal(self, o, *ops): sfc_error("Evaluation not implemented for terminal %s." % type(o).__name__) ### Terminals: def zero(self, o): return swiginac.numeric(0) def scalar_value(self, o): return swiginac.numeric(o.value()) def spatial_coordinate(self, o, component=(), derivatives=()): # Called by indexed if component: # 2D, 3D c, = component else: # 1D c = 0 if derivatives: if len(derivatives) > 1: return swiginac.numeric(0) d, = derivatives if d == c: return swiginac.numeric(1) return swiginac.numeric(0) return self.formrep.x_sym[c] def facet_normal(self, o, component=(), derivatives=()): # Called by indexed sfc_assert(self.on_facet, "Expecting to be on a facet in facet_normal.") if derivatives: return swiginac.numeric(0) if component: # 2D, 3D c, = component else: # 1D c = 0 return self.formrep.n_sym[c] def argument(self, o, component=(), derivatives=()): # Assuming renumbered arguments! iarg = o.count() sfc_assert(iarg >= 0, "Argument count shouldn't be negative.") sfc_assert(isinstance(component, tuple), "Expecting tuple for component.") j = self.current_basis_function[iarg] if derivatives: s = self.formrep.Dv_sym(iarg, j, component, derivatives, self.on_facet) e = self.formrep.Dv_expr(iarg, j, component, derivatives, False, self.on_facet) # FIXME: use_symbols = False -> can do better else: s = self.formrep.v_sym(iarg, j, component, self.on_facet) e = self.formrep.v_expr(iarg, j, component) if e.nops() == 0: return e # FIXME: Avoid generating code for s when not using it return s def coefficient(self, o, component=(), derivatives=()): # Assuming renumbered arguments! iarg = o.count() sfc_assert(iarg >= 0, "Coefficient count shouldn't be negative.") sfc_assert(isinstance(component, tuple), "Expecting tuple for component.") if derivatives: s = self.formrep.Dw_sym(iarg, component, derivatives) e = self.formrep.Dw_expr(iarg, component, derivatives, False, self.on_facet) # FIXME: use_symbols = False -> can do better else: # w^i_h(x) = \sum_j w[i][j] * phi^i_j(x) s = self.formrep.w_sym(iarg, component) e = self.formrep.w_expr(iarg, component, False, self.on_facet) # FIXME: use_symbols = False -> can do better if e.nops() == 0: return e # FIXME: Avoid generating code for s when not using it return s ### Indexing and derivatives: def multi_index(self, o): return tuple(map(int, o)) def spatial_derivative(self, o, f, i, component=(), derivatives=()): derivatives = sorted(derivatives + self.multi_index(i)) if isinstance(f, Indexed): # Since expand_indices moves Indexed in to the terminals, # SpatialDerivative can be outside an Indexed sfc_assert(component == (), "Expecting no component outside of Indexed!") A, ii = f.operands() component = self.multi_index(ii) return self(A, component, derivatives) return self(f, component, derivatives) def indexed(self, o, A, ii): # Passes on control to one of: #def argument(self, o, component): #def coefficient(self, o, component): #def facet_normal(self, o, component): #def spatial_coordinate(self, o, component): #def spatial_derivative(self, o, component): component = self.multi_index(ii) if isinstance(A, SpatialDerivative): f, i = A.operands() return self.spatial_derivative(A, f, i, component) return self(A, component) ### Algebraic operators: def power(self, o, a, b): return a**b def sum(self, o, *ops): return sum(ops) def product(self, o, *ops): return product(ops) def division(self, o, a, b): return a / b def abs(self, o, a): return swiginac.abs(a) ### Basic math functions: def sqrt(self, o, a): return swiginac.sqrt(a) def exp(self, o, a): return swiginac.exp(a) def ln(self, o, a): return swiginac.log(a) def cos(self, o, a): return swiginac.cos(a) def sin(self, o, a): return swiginac.sin(a) def variable(self, o): sfc_error("Should strip away variables before building graph.") # FIXME: Implement all missing operators here class SwiginacEvaluator(Transformer): "Algorithm for evaluation of an UFL expression as a swiginac expression." def __init__(self, formrep, use_symbols, on_facet): Transformer.__init__(self)#, variable_cache) # input self._formrep = formrep self._use_symbols = use_symbols self._on_facet = on_facet # current basis function configuration self._current_basis_function = tuple(0 for i in range(formrep.rank)) # current indexing status self._components = Stack() self._index2value = StackDict() # code and cache structures # FIXME: Need pre-initialized self._variable2symbol and self._tokens self._variable2symbol = {} self._tokens = [] # convenience variables self.nsd = self._formrep.cell.nsd def pop_tokens(self): # TODO: Make a generator approach to this? Allow handlers to trigger a "token yield"? t = self._tokens self._tokens = [] return t def update(self, iota): self._current_basis_function = tuple(iota) def component(self): "Return current component tuple." if len(self._components): return self._components.peek() return () ### Fallback handlers: def expr(self, x): sfc_error("Missing ufl to swiginac handler for type %s" % str(type(x))) def terminal(self, x): sfc_error("Missing ufl to swiginac handler for terminal type %s" % str(type(x))) ### Handlers for basic terminal objects: def zero(self, x): #sfc_assert(len(self.component()) == len(x.shape()), "Index component length mismatch in zero tensor!") return swiginac.numeric(0) def scalar_value(self, x): #sfc_assert(self.component() == (), "Shouldn't have any component at this point.") return swiginac.numeric(x._value) def identity(self, x): c = self.component() v = 1 if c[0] == c[1] else 0 return swiginac.numeric(v) def argument(self, x): iarg = x.count() sfc_assert(iarg >= 0, "Argument count shouldn't be negative.") j = self._current_basis_function[iarg] c = self.component() if self._use_symbols: return self._formrep.v_sym(iarg, j, c, self._on_facet) else: return self._formrep.v_expr(iarg, j, c) def coefficient(self, x): iarg = x.count() c = self.component() if self._use_symbols: return self._formrep.w_sym(iarg, c) else: # w^i_h(x) = \sum_j w[i][j] * phi^i_j(x) return self._formrep.w_expr(iarg, c, False, self._on_facet) def facet_normal(self, x): sfc_assert(self._on_facet, "Expecting to be on a facet in facet_normal.") c, = self.component() return self._formrep.n_sym[c] def spatial_coordinate(self, x): c, = self.component() return self._formrep.x_sym[c] ### Handler for variables: def variable(self, x): return self.visit(x._expression) def garbage(self, x): # TODO: Maybe some of the ideas here can be used in code generation c = self.component() index_values = tuple(self._index2value[k] for k in x._expression.free_indices()) # TODO: Doesn't always depend on _current_basis_function, this is crap: key = (x.count(), c, index_values, self._current_basis_function) vsym = self._variable2symbol.get(key) if vsym is None: expr = self.visit(x._expression) # TODO: Doesn't always depend on _current_basis_function, this is crap: compstr = "_".join("%d" % k for k in chain(c, index_values, self._current_basis_function)) vname = "_".join(("t_%d" % x.count(), compstr)) vsym = symbol(vname) self._variable2symbol[key] = vsym self._tokens.append((vsym, expr)) ### Handlers for basic algebra: def sum(self, x, *ops): return sum(ops) def index_sum(self, x): ops = [] summand, multiindex = x.operands() index, = multiindex for i in range(x.dimension()): self._index2value.push(index, i) ops.append(self.visit(summand)) self._index2value.pop() return sum(ops) def product(self, x): sfc_assert(not self.component(), "Non-empty indexing component in product!") ops = [self.visit(o) for o in x.operands()] return product(ops) # ... def division(self, x, a, b): return a / b def power(self, x, a, b): return a ** b def abs(self, x, a): return swiginac.abs(a) ### Basic math functions: def sqrt(self, x, y): return swiginac.sqrt(y) def exp(self, x, y): return swiginac.exp(y) def ln(self, x, y): return swiginac.log(y) def cos(self, x, y): return swiginac.cos(y) def sin(self, x, y): return swiginac.sin(y) ### Index handling: def multi_index(self, x): subcomp = [] for i in x: if isinstance(i, FixedIndex): subcomp.append(i._value) elif isinstance(i, Index): subcomp.append(self._index2value[i]) return tuple(subcomp) def indexed(self, x): A, ii = x.operands() self._components.push(self.visit(ii)) result = self.visit(A) self._components.pop() return result ### Container handling: def old_list_tensor(self, x): # doesn't support e.g. building a matrix from vector rows component = self.component() sfc_assert(len(component) > 0 and \ all(isinstance(i, int) for i in component), "Can't index tensor with %s." % repr(component)) # Hide indexing when evaluating subexpression self._components.push(()) # Get scalar UFL subexpression from tensor e = x for i in component: e = e._expressions[i] sfc_assert(e.shape() == (), "Expecting scalar expression "\ "after extracting component from tensor.") # Apply conversion to scalar subexpression r = self.visit(e) # Return to previous component state self._components.pop() return r def list_tensor(self, x): # Pick the right subtensor and subcomponent c = self.component() c0, c1 = c[0], c[1:] op = x.operands()[c0] # Evaluate subtensor with this subcomponent self._components.push(c1) r = self.visit(op) self._components.pop() return r def component_tensor(self, x): # this function evaluates the tensor expression # with indices equal to the current component tuple expression, indices = x.operands() sfc_assert(expression.shape() == (), "Expecting scalar base expression.") # update index map with component tuple values comp = self.component() sfc_assert(len(indices) == len(comp), "Index/component mismatch.") for i, v in izip(indices._indices, comp): self._index2value.push(i, v) self._components.push(()) # evaluate with these indices result = self.visit(expression) # revert index map for i in range(len(comp)): self._index2value.pop() self._components.pop() return result ### Differentiation: def _ddx(self, f, i): """Differentiate swiginac expression f w.r.t. x_i, using df/dx_i = df/dxi_j dxi_j/dx_i.""" Ginv = self._formrep.Ginv_sym xi = self._formrep.xi_sym return sum(Ginv[j, i] * swiginac.diff(f, xi[j]) for j in range(self.nsd)) def spatial_derivative(self, x): # Assuming that AD has been applied, so # the expression to differentiate is always a Terminal. f, ii = x.operands() sfc_assert(isinstance(f, Terminal), \ "Expecting to differentiate a Terminal object, you must apply AD first!") # The exception is higher order derivatives, ignoring for now # Get component and derivative directions c = self.component() der = self.visit(ii) # --- Handle derivatives of basis functions if isinstance(f, Argument): iarg = f.count() i = self._current_basis_function[iarg] if self._use_symbols: return self._formrep.Dv_sym(iarg, i, c, der, self._on_facet) else: return self._formrep.Dv_expr(iarg, i, c, der, False, self._on_facet) # --- Handle derivatives of coefficient functions if isinstance(f, Coefficient): iarg = f.count() if self._use_symbols: return self._formrep.Dw_sym(iarg, c, der) else: return self._formrep.Dw_expr(iarg, c, der, False, self._on_facet) # --- Handle derivatives of geometry objects if isinstance(f, FacetNormal): return swiginac.numeric(0.0) if isinstance(f, SpatialCoordinate): c, = c if der[0] == c: return swiginac.numeric(1.0) else: return swiginac.numeric(0.0) sfc_error("Eh?") def derivative(self, x): sfc_error("Derivative shouldn't occur here, you must apply AD first!") ### Interior facet stuff: def positive_restricted(self, x, y): sfc_error("TODO: Restrictions not implemented!") return y def negative_restricted(self, x, y): sfc_error("TODO: Restrictions not implemented!") return y ### These require code structure and thus shouldn't occur in SwiginacEvaluator # (i.e. any conditionals should be handled externally) #d[EQ] = #d[NE] = #d[LE] = #d[GE] = #d[LT] = #d[GT] = ### These are replaced by expand_compounds, so we skip them here: #d[Identity] = #d[Transposed] = #d[Outer] = #d[Inner] = #d[Dot] = #d[Cross] = #d[Trace] = #d[Determinant] = #d[Inverse] = #d[Deviatoric] = #d[Cofactor] = #d[Grad] = #d[Div] = #d[Curl] = #d[Rot] = syfi-1.0.0.dfsg.orig/site-packages/sfc/representation/exteriorfacetintegralrepresentation.py0000644000175000017500000000745011672223006032514 0ustar johannrjohannr# -*- coding: utf-8 -*- """ This module contains representation classes for integrals. """ # Copyright (C) 2008-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-08-13 # Last changed: 2009-03-16 import swiginac from sfc.common import sfc_assert, sfc_debug from sfc.representation.integralrepresentation import IntegralRepresentation class ExteriorFacetIntegralRepresentation(IntegralRepresentation): def __init__(self, integrals, formrep): IntegralRepresentation.__init__(self, integrals, formrep, True) def iter_facet_tokens(self, facet): fr = self.formrep nsd = fr.cell.nsd # Facet mapping FIXME (needed anywere? quadrature on facets?) #for (s,e) in zip(fr.facet_G_sym, fr.facet_G_expr[facet]): # yield (s,e) s = fr.facet_D_sym e = fr.facet_D_expr[facet] yield (s, e) # Facet normal for i in range(nsd): yield (fr.n_sym[i], fr.n_expr[facet][i]) # Scaling factor if self.symbolic_integral is not None: yield (fr.D_sym, fr.facet_D_sym) def compute_A(self, data, iota, facet=None): "Compute expression for A[iota]. Overload in subclasses!" integrand = data.integral.integrand() if data.integration_method == "quadrature": sfc_assert(facet is None, "Not expecting facet number.") if self.options.safemode: data.evaluator.update(iota) integrand = data.evaluator.visit(integrand) else: n = len(data.G.V()) try: integrand = data.vertex_data_set[iota][n-1] except: print data.vertex_data_set raise RuntimeError D = self.formrep.D_sym A = integrand * D if self.formrep.options.output.enable_debug_prints: sfc_debug("In compute_A(", iota, "):") sfc_debug(" data.integral.integrand() = ", data.integral.integrand()) sfc_debug(" integrand = ", integrand) sfc_debug(" A = ", A) elif data.integration_method == "symbolic": sfc_assert(isinstance(facet, int), "Expecting facet number.") data.evaluator.update(iota) integrand = data.evaluator.visit(integrand) D = self.formrep.D_sym polygon = self.formrep.cell.facet_polygons[facet] if isinstance(polygon, swiginac.matrix): # 1D repmap = swiginac.exmap() repmap[self.formrep.xi_sym[0]] = polygon[0] A = integrand.subs(repmap) * D else: A = polygon.integrate(integrand) * D if self.formrep.options.output.enable_debug_prints: sfc_debug("In compute_A(", iota, "):") sfc_debug(" data.integral.integrand() = ", data.integral.integrand()) sfc_debug(" integrand = ", integrand) sfc_debug(" A = ", A) return A syfi-1.0.0.dfsg.orig/site-packages/sfc/representation/cellintegralrepresentation.py0000644000175000017500000000530111672223006030560 0ustar johannrjohannr# -*- coding: utf-8 -*- """ This module contains the representation class for cell integrals. """ # Copyright (C) 2008-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-08-13 # Last changed: 2009-03-17 from sfc.common import sfc_assert, sfc_debug from sfc.representation.integralrepresentation import IntegralRepresentation class CellIntegralRepresentation(IntegralRepresentation): def __init__(self, integrals, formrep): IntegralRepresentation.__init__(self, integrals, formrep, False) def compute_A(self, data, iota, facet=None): "Compute expression for A[iota]. Overload in subclasses!" if data.integration_method == "quadrature": if self.options.safemode: integrand = data.integral.integrand() data.evaluator.update(iota) integrand = data.evaluator.visit(integrand) else: n = len(data.G.V()) integrand = data.vertex_data_set[iota][n-1] D = self.formrep.D_sym A = integrand * D if self.formrep.options.output.enable_debug_prints: sfc_debug("In compute_A(", iota, "):") sfc_debug(" data.integral.integrand() = ", data.integral.integrand()) sfc_debug(" integrand = ", integrand) sfc_debug(" A = ", A) elif data.integration_method == "symbolic": integrand = data.integral.integrand() data.evaluator.update(iota) integrand = data.evaluator.visit(integrand) detG = self.formrep.detG_sym polygon = self.formrep.cell.polygon A = polygon.integrate(integrand) * detG if self.formrep.options.output.enable_debug_prints: sfc_debug("In compute_A(", iota, "):") sfc_debug(" data.integral.integrand() = ", data.integral.integrand()) sfc_debug(" integrand = ", integrand) sfc_debug(" A = ", A) return A syfi-1.0.0.dfsg.orig/site-packages/sfc/representation/elementrepresentation.py0000644000175000017500000005220411672223006027550 0ustar johannrjohannr#!/usr/bin/env python # -*- coding: utf-8 -*- """ This module contains functions and classes converting from UFL to internal SyFi representations of elements. """ # Copyright (C) 2008 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # Modified by Kent-Andre Mardal, 2010. # # First added: 2008-08-13 # Last changed: 2008-12-16 import operator import ufl import swiginac import SyFi from ufl.common import component_to_index, index_to_component from sfc.symbolic_utils import grad, ddx, symbols, symbolic_matrix from sfc.geometry import UFCCell from sfc.common.names import finite_element_classname, dof_map_classname from sfc.common import sfc_assert, sfc_info, sfc_warning, sfc_error, sfc_debug from sfc.common.options import default_parameters def product(sequence): return reduce(operator.__mul__, sequence, 1) # TODO: Replace nsd with topological and geometric dimensions # everywhere for clarity and future flexibility def test_polygon(polygon): print type(polygon) print dir(polygon) print polygon.no_space_dim() print polygon.str() def create_syfi_polygon(cell): sfc_debug("Entering create_syfi_polygon") if cell == "interval": p = SyFi.ReferenceLine() elif cell == "triangle": p = SyFi.ReferenceTriangle() elif cell == "tetrahedron": p = SyFi.ReferenceTetrahedron() elif cell == "quadrilateral": p = SyFi.ReferenceRectangle() elif cell == "hexahedron": p = SyFi.ReferenceBox() else: raise ValueError("Unknown element cell '%s'." % cell) sfc_debug("Leaving create_syfi_polygon") return p def create_syfi_element(e, polygon, default_order=1): "Create a basic element with SyFi." sfc_debug("Entering create_syfi_element") sfc_assert(not isinstance(e, ufl.MixedElement), "Only creating SyFi elements for basic elements.") f = e.family() # ensure that the element always have some degree, this should probably be d = e.degree() if not isinstance(d, int): d = default_order if f in ("Lagrange", "CG"): fe = SyFi.Lagrange(polygon, d) elif f in ("Discontinuous Lagrange", "DG"): if d == 0: fe = SyFi.P0(polygon, 0) else: fe = SyFi.DiscontinuousLagrange(polygon, d) elif f in ("Crouzeix-Raviart", "CR"): fe = SyFi.CrouzeixRaviart(polygon, d) elif f in ("Bubble", "B"): fe = SyFi.Bubble(polygon, d) elif f in ("Brezzi-Douglas-Marini", "BDM"): raise NotImplementedError("Not implemented element family '%s'." % f) elif f in ("Brezzi-Douglas-Fortin-Marini", "BDFM"): raise NotImplementedError("Not implemented element family '%s'." % f) elif f in ("Raviart-Thomas", "RT"): raise NotImplementedError("Not implemented element family '%s'." % f) elif f in ("Nedelec 1st kind H(div)", "N1div"): raise NotImplementedError("Not implemented element family '%s'." % f) elif f in ("Nedelec 2nd kind H(div)", "N2div"): raise NotImplementedError("Not implemented element family '%s'." % f) elif f in ("Nedelec 1st kind H(curl)", "N1curl"): raise NotImplementedError("Not implemented element family '%s'." % f) elif f in ("Nedelec 2nd kind H(curl)", "N2curl"): raise NotImplementedError("Not implemented element family '%s'." % f) elif f in ("Quadrature", "Q"): raise NotImplementedError("Not implemented element family '%s'." % f) elif f in ("Boundary Quadrature", "BQ"): raise NotImplementedError("Not implemented element family '%s'." % f) else: raise NotImplementedError("Unknown element family '%s'." % f) sfc_debug("Leaving create_syfi_element") return fe #=============================================================================== # # swiginac.matrix(nsd, 1, dof_xi(fe,i)) # def dof_xi(fe, i): # """Return a swiginac column vector with the reference coordinates of dof i in fe, # assuming elements with point evaluation dofs.""" # dofi = fe.dof(i) # # check if the element is a scalar or vector element # if isinstance(dofi[0], swiginac.numeric): # dofi0 = dofi # elif isinstance(dofi[0], list): # dofi0 = dofi[0] # return dofi0 #=============================================================================== class ElementRepresentation(object): __slots__ = (#Administrative data: "options", "signature", "dof_map_classname", "finite_element_classname", # Element in other representations: "ufl_element", "syfi_element", # Cell data: "quad_rule", "ufl_cell", "polygon", "cell", # Dimensions: "local_dimension", "geometric_dimension", "topological_dimension", # Value shape info: "value_shape", "value_rank", "value_size", "value_components", # Subelement data "sub_elements", "sub_element_dof_offsets", "sub_element_value_offsets", # Caches for basis functions "_basis_function_cache", "_basis_function_derivative_cache", # Coordinate information: "dof_xi", "dof_x", # Topology information: "entity_dofs", "dof_entity", "num_entity_dofs", "facet_dofs", "num_facet_dofs", # Geometry symbols: "p0", "p", "G", "GinvT", ) def __init__(self, ufl_element, quad_rule=None, options=None, cache=None): sfc_debug("Entering ElementRepresentation.__init__") # Handle input and default values assert isinstance(ufl_element, ufl.FiniteElementBase) self.ufl_element = ufl_element self.quad_rule = quad_rule if options is None: self.options = default_parameters() else: self.options = options if cache is None: cache = {} # Some derived strings self.signature = repr(self.ufl_element) self.dof_map_classname = dof_map_classname(self.ufl_element) self.finite_element_classname = finite_element_classname(self.ufl_element) # Geometry information self.ufl_cell = self.ufl_element.cell() self.polygon = create_syfi_polygon(self.ufl_cell.domain()) self.cell = UFCCell(self.polygon) self.geometric_dimension = self.cell.nsd self.topological_dimension = self.cell.nsd # Handy information about value shape self.value_shape = self.ufl_element.value_shape() self.value_rank = len(self.value_shape) self.value_size = product(self.value_shape) self.value_components = ufl.permutation.compute_indices(self.value_shape) # Representations of subelements self.sub_elements = [] self.sub_element_dof_offsets = [] self.sub_element_value_offsets = [] if isinstance(self.ufl_element, ufl.MixedElement): dof_offset = 0 value_size_offset = 0 # Create ElementRepresentation objects for subelements, reuse if possible for se in ufl_element.sub_elements(): rep = cache.get(se, None) if rep is None: rep = ElementRepresentation(se, self.quad_rule, self.options, cache) cache[se] = rep self.sub_elements.append(rep) # Determine numbering offsets of subelements for dofs and values self.sub_element_dof_offsets.append(dof_offset) self.sub_element_value_offsets.append(value_size_offset) dof_offset += rep.local_dimension value_size_offset += rep.value_size # Appending final sizes makes some algorithms more elegant self.sub_element_dof_offsets.append(dof_offset) self.sub_element_value_offsets.append(value_size_offset) # No SyFi element, local dimension is the sum of subelement dimensions self.syfi_element = None self.local_dimension = dof_offset elif self.ufl_element.family() == "Quadrature": # No SyFi element, local dimension is the number of quadrature points self.syfi_element = None self.local_dimension = self.quad_rule.num_points elif self.ufl_element.family() == "Boundary Quadrature": # No SyFi element, local dimension is the number of quadrature points (TODO: On one facet or on all facets?) sfc_error("Boundary Quadrature elements not implemented!") self.syfi_element = None self.local_dimension = self.facet_quad_rule.num_points # TODO: *num_facets? elif self.ufl_element.family() == "Real": # No SyFi element, local dimension equals value size self.syfi_element = None self.local_dimension = self.value_size else: # Make SyFi element self.syfi_element = create_syfi_element(self.ufl_element, self.polygon, default_order=self.options.code.finite_element.default_order_of_element) self.local_dimension = self.syfi_element.nbf() # utility symbols self._def_symbols() # compute dof coordinates self._precomp_coords() # compute dof entity relations self._build_entity_dofs() self._build_facet_dofs() # initialize cache structures self._basis_function_cache = {} self._basis_function_derivative_cache = {} sfc_debug("Leaving ElementRepresentation.__init__") def _def_symbols(self): nsd = self.cell.nsd # ... x,y,z symbols for convenience self.p0 = swiginac.matrix(nsd, 1, symbols(["x0", "y0", "z0"][:nsd])) self.p = swiginac.matrix(nsd, 1, symbols(["x", "y", "z"][:nsd])) #self.x = swiginac.matrix(nsd, 1, symbols(["x0", "x1", "x2"][:nsd])) # TODO: Use these everywhere! self.x are global coordinates, self.xi are locals. #self.xi = swiginac.matrix(nsd, 1, symbols(["xi0", "xi1", "xi2"][:nsd])) # ... affine mapping symbols for convenience # TODO: Use J instead? self.G = symbolic_matrix(nsd, nsd, "G") self.GinvT = symbolic_matrix(nsd, nsd, "GinvT") def _dof_xi(self, i): "Compute local dof coordinate of dof i." nsd = self.cell.nsd if self.sub_elements: sub_element_index = self.dof_to_sub_element_index(i) sub_dof = i - self.sub_element_dof_offsets[sub_element_index] xi = self.sub_elements[sub_element_index]._dof_xi(sub_dof) elif self.ufl_element.family() == "Quadrature": xi = swiginac.matrix(nsd, 1, self.quad_rule.points[i]) elif self.ufl_element.family() == "Real": xi = swiginac.matrix(nsd, 1, [0.0]*nsd) else: # check if the element is a scalar or vector element dofi = self.syfi_element.dof(i) if isinstance(dofi[0], swiginac.numeric): # scalar element dof_xi_list = dofi elif isinstance(dofi[0], list): # vector element if isinstance(dofi[0][0], list): # compute midpoints midpoint = [0 for i in range(len(dofi[0][0]))] for d in dofi[0][0:]: for p, dp in enumerate(d): midpoint[p] += dp for p in range(len(d)): midpoint[p] /= len(dofi[0]) dof_xi_list = midpoint else: # use coordinate directly dof_xi_list = dofi[0] xi = swiginac.matrix(nsd, 1, dof_xi_list) return xi def _precomp_coords(self): "Precompute dof coordinates." self.dof_xi = [] self.dof_x = [] for i in range(self.local_dimension): # point coordinates for this dof in reference coordinates dof_xi = self._dof_xi(i) self.dof_xi.append(dof_xi) # apply geometry mapping to get global coordinates dof_x = (self.G.mul(dof_xi).add(self.p0)).evalm() # TODO: Assumes affine mapping! self.dof_x.append(dof_x) def _build_entity_dofs(self): # XXXReal: Does not make sense for Real "Build dof vs mesh entity relations." # TODO: This may be optimized if necessary for mixed elements, but maybe we don't care. # The basic structure we're building here is a list of lists of lists self.entity_dofs = [] for i in range(self.topological_dimension+1): lists = [[] for j in range(self.cell.num_entities[i])] self.entity_dofs.append(lists) if self.ufl_element.family() in ("Discontinuous Lagrange", "Quadrature"): # associate all dofs with the cell self.entity_dofs[self.topological_dimension][0] = list(range(self.local_dimension)) elif self.ufl_element.family() == "Boundary Quadrature": sfc_error("Boundary Quadrature not handled.") elif self.ufl_element.family() == "Real": pass #sfc_error("Real elements not handled.") else: # NB! Assuming location dof_xi coordinates match topological entity! # build dof list for each cell entity for k in range(self.local_dimension): (d, i) = self.cell.find_entity(self.dof_xi[k]) self.entity_dofs[d][i].append(k) # Build the inverse mapping: idof -> ((d, i), j) (Not currently used for anything) self.dof_entity = [None]*self.local_dimension for d in range(self.topological_dimension+1): for i in range(self.cell.num_entities[d]): for j, k in enumerate(self.entity_dofs[d][i]): sfc_assert(self.dof_entity[k] is None, "Expected to set each dof only once.") self.dof_entity[k] = (d, i, j) # count number of dofs per entity self.num_entity_dofs = tuple(len(self.entity_dofs[d][0]) for d in range(self.topological_dimension+1)) # assert that all entities have the same number of associated dofs # (there's a theoretical risk of floating point comparisons messing up the above logic) for d in range(self.topological_dimension+1): for doflist in self.entity_dofs[d]: # each doflist is a list of local dofs associated # with a particular mesh entity of dimension d assert len(doflist) == self.num_entity_dofs[d] def _build_facet_dofs(self): "Build facet vs dof relations." # ... build a list of dofs for each facet: self.facet_dofs = [[] for j in range(self.cell.num_facets)] if self.ufl_element.family() in ("Discontinuous Lagrange", "Quadrature", "Real"): pass # no dofs on facets elif self.ufl_element.family() == "Boundary Quadrature": sfc_error("Boundary Quadrature not handled.") else: # for each facet j, loop over the reference coordinates # for all dofs i and check if the dof is on the facet for j in range(self.cell.num_facets): for (i,p) in enumerate(self.dof_xi): if self.cell.facet_check(j, p): self.facet_dofs[j].append(i) # ... count number of dofs for each facet (assuming this is constant!) self.num_facet_dofs = len(self.facet_dofs[0]) # verify that this number is constant for all facets sfc_assert(all(len(fdofs) == self.num_facet_dofs for fdofs in self.facet_dofs), "Not the same number of dofs on each facet. This breaks an assumption in UFC.") # --- subelement access def dof_to_sub_element_index(self, dof): "Return the index of the sub element the given dof is part of." n = len(self.sub_elements) sfc_assert(n, "Only mixed elements have sub elements.") for i in range(n+1): if dof < self.sub_element_dof_offsets[i]: return i-1 sfc_error("Invalid dof value!") def sub_element_to_dofs(self, i): "Return a list of all dof indices for sub element with index i." sfc_assert(self.sub_elements, "Only mixed elements have sub elements.") a = self.sub_element_dof_offsets[i] b = self.sub_element_dof_offsets[i+1] return range(a, b) # --- function space def basis_function(self, i, component): # hit cache? N = self._basis_function_cache.get((i,component), None) if N is not None: return N if self.sub_elements: # get sub element representation corresponding to this dof sub_element_index = self.dof_to_sub_element_index(i) sub_element = self.sub_elements[sub_element_index] # dof in sub element numbering sub_dof = i - self.sub_element_dof_offsets[sub_element_index] # component in flattened sub element value index space comp_index = component_to_index(component, self.value_shape) value_offset = self.sub_element_value_offsets[sub_element_index] # check that the component is in the value range of the subelement is_nonzero = (comp_index >= value_offset) and (comp_index < (value_offset + sub_element.value_size)) if is_nonzero: # component in unflattened sub element value index space sub_comp_index = comp_index - value_offset sub_component = index_to_component(sub_comp_index, sub_element.value_shape) # basis_function from computed component of subelement N = sub_element.basis_function(sub_dof, sub_component) else: N = swiginac.numeric(0.0) elif "Quadrature" in self.ufl_element.family(): sfc_error("Cannot compute basis functions for quadrature element.") N = swiginac.numeric(1.0) elif "Real" in self.ufl_element.family(): #sfc_error("Cannot compute basis functions for Real element.") # XXXReal: Will we use this or not? N = swiginac.numeric(1.0) else: # Basic element, get basis function from SyFi N = self.syfi_element.N(i) if isinstance(N, swiginac.matrix): sfc_assert((int(N.rows()), int(N.cols())) == self.value_shape, "Shape mismatch") return N[component] sfc_assert(component == (), "Found scalar basic element, expecting no component, got %s." % repr(component)) # put in cache self._basis_function_cache[(i,component)] = N return N def basis_function_derivative(self, i, component, directions): # d/dx and d/dy commute so we sort the derivative variables: directions = tuple(sorted(directions)) # cache hit? DN = self._basis_function_derivative_cache.get((i,component,directions), None) if DN is not None: return DN # compute derivative DN = self.basis_function(i, component) for j in directions: DN = ddx(DN, j, self.GinvT) # put in cache self._basis_function_derivative_cache[(i,component,directions)] = DN return DN # def component_to_sub_element_index(self, component): # sfc_assert(self.sub_elements, "Only mixed elements have sub elements.") # # # FIXME! # sfc_error("FIXME: In component_to_sub_element_index: not sure where this will be used?") # # component_value = flatten_component(component, self.value_shape) # # n = len(self.sub_elements) # for i in range(1,n+1): # if component_value < self.sub_element_value_offsets[i]: # sub_component_value = self.sub_element_value_offsets[i] - ccomponent_value # sub_element_index = i-1 # sub_element = self.sub_elements[sub_element_index] # sub_component = unflatten_component(sub_component_value, sub_element) # return sub_component # sfc_error("Invalid component value!") # # #sub_element_component, sub_element =\ # # self.ufl_element.extract_component(component) # #return sub_element_component, sub_element syfi-1.0.0.dfsg.orig/site-packages/sfc/representation/formrepresentation.py0000644000175000017500000005505411672223006027070 0ustar johannrjohannr# -*- coding: utf-8 -*- """ This module contains a representation class for forms, storing information about all form aspects. """ # Copyright (C) 2008-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2008-08-13 # Last changed: 2009-04-19 import copy import math import swiginac import SyFi import ufl from ufl.algorithms import extract_max_quadrature_element_degree,\ estimate_quadrature_degree, estimate_total_polynomial_degree from sfc.common import sfc_assert from sfc.common.names import finite_element_classname, dof_map_classname, \ integral_classname, form_classname from sfc.common.utilities import matrix_to_list, list_to_vector, index_string, dot_product from sfc.geometry import UFCCell, geometry_mapping from sfc.quadrature import find_quadrature_rule from sfc.symbolic_utils import symbolic_matrix, symbolic_vector, symbol, symbols, cross, sub, inner from sfc.representation.elementrepresentation import create_syfi_polygon class FormRepresentation(object): def __init__(self, formdata, element_reps, options): # UFL data about the form self.formdata = formdata # Mapping : ufl.FiniteElement -> sfc.ElementRepresentation self.element_reps = element_reps # SFC options self.options = options # Fetch some common variables from formdata for shorter names in rest of code self.form = self.formdata.preprocessed_form self.rank = self.formdata.rank self.num_coefficients = self.formdata.num_coefficients self.domain = self.formdata.cell.domain() # Some strings self.signature = repr(self.form) self._define_classnames() # Build some symbols and expressions self._build_geometry_tokens() self._build_argument_tokens() self._define_quadrature_rule() # Build running count of all unique ufl elements # mapping : ufl_element -> running count of unique elements self.element_number = {} for e in self.formdata.sub_elements: sfc_assert(e in self.element_reps, "Missing ElementRepresentation!") if not e in self.element_number: self.element_number[e] = len(self.element_number) def _define_quadrature_rule(self): # Get integration order from options or elements d = self.options.code.integral.integration_order if d is None: d = extract_max_quadrature_element_degree(self.form) if d is None: d = estimate_quadrature_degree(self.form) # TODO: Option for which estimation method to choose! if d is None: d = estimate_total_polynomial_degree(self.form) sfc_assert(d is not None, "All quadrature degree estimation rules failed, this shouldn't happen!") self.quad_order = d # Determine quadrature rule from options or elements if self.options.code.integral.integration_method == "quadrature": self.quad_rule = find_quadrature_rule(self.domain, self.quad_order) self._build_facet_quadrature_rules() else: self.quad_rule = None self.facet_quad_rules = None def _build_facet_quadrature_rules(self): # pick a rule cell = self.cell reference_quad_rule = find_quadrature_rule(cell.facet_shape, self.quad_order, family="gauss") self.facet_quad_rules = [] for facet in range(cell.num_facets): # facet polygon on the reference cell facet_polygon = cell.facet_polygons[facet] # TODO: That dimensions get right here is rather magical, # I suspect that initSyFi plays a major role here... # affine mapping between reference facet_G, facet_x0 = geometry_mapping(facet_polygon) # scaling factor for diagonal facets, # for scaling quadrature rule to a # different reference domain, this is NOT the # same as the global/local scaling factor facet_D! D = 1.0 if facet == 0: if cell.shape == "triangle": D = math.sqrt(2) elif cell.shape == "tetrahedron": D = math.sqrt(3) # scale weights by scaling factor weights = [ float(w)*D for w in reference_quad_rule.weights ] # apply affine mapping to quadrature points points = [] for p in reference_quad_rule.points: # extend (n-1)D point p into nD point x: x = swiginac.matrix(len(facet_x0), 1, list(p)+[0.0]) # apply mapping in nD space: newx = facet_G * x + facet_x0 # store as a list: xlist = [float(newx[i].evalf()) for i in range(len(newx))] points.append(xlist) # make a copy of reference quadrature rule and modify it: facet_quad_rule = copy.copy(reference_quad_rule) if cell.shape != "interval": facet_quad_rule.nsd += 1 assert facet_quad_rule.nsd == cell.nsd facet_quad_rule.comment += "\nMapped to polygon in higher dimension.\n" facet_quad_rule.weights = weights facet_quad_rule.points = points self.facet_quad_rules.append(facet_quad_rule) def _define_classnames(self): # Generate names for all classes fd = self.formdata self.classname = form_classname(self.form, self.options) self.fe_names = [finite_element_classname(e) for e in fd.elements] self.dm_names = [dof_map_classname(e) for e in fd.elements] self.itg_names = dict((itg, integral_classname(itg, self.classname)) \ for itg in self.form.integrals()) f = self.form self.citg_names = dict((itg.measure().domain_id(), self.itg_names[itg]) for itg in f.cell_integrals()) self.eitg_names = dict((itg.measure().domain_id(), self.itg_names[itg]) for itg in f.exterior_facet_integrals()) self.iitg_names = dict((itg.measure().domain_id(), self.itg_names[itg]) for itg in f.interior_facet_integrals()) def _build_geometry_tokens(self): "Build tokens for variables derived from cell." self.polygon = create_syfi_polygon(self.domain) self.cell = UFCCell(self.polygon) cell = self.cell nsd = cell.nsd # vx[i][j] = component j of coordinate of vertex i in cell self.vx_sym = [] self.vx_expr = [] for i in range(cell.num_vertices): s = swiginac.matrix(nsd, 1, symbols("vx%d_%d" % (i,j) for j in range(nsd))) e = swiginac.matrix(nsd, 1, symbols("c.coordinates[%d][%d]" % (i,j) for j in range(nsd))) self.vx_sym.append(s) self.vx_expr.append(e) # Build a global polygon from the vertex coordinates: # (using Triangle and Tetrahedron for the hypercube affine mappings # is correct for rectangular and trapezoidal shapes, while using the polygons # Box and Rectangle from SyFi would only support straight rectangular shapes) p = [matrix_to_list(vx) for vx in self.vx_sym] if cell.shape == "interval": polygon = SyFi.Line(*p) elif cell.shape == "triangle": polygon = SyFi.Triangle(*p) elif cell.shape == "tetrahedron": polygon = SyFi.Tetrahedron(*p) elif cell.shape == "quadrilateral": polygon = SyFi.Rectangle(*p) # SyFi.Triangle(p[0], p[1], p[3]) #SyFi.Rectangle(p[0], p[2]) # TODO: Better affine mapping? elif cell.shape == "hexahedron": polygon = SyFi.Box(*p) # SyFi.Tetrahedron(p[0], p[1], p[3], p[4]) # SyFi.Box(p[0], p[6]) # TODO: Better affine mapping? self.global_polygon = polygon #self.global_cell = UFCCell(polygon) # Geometry mapping self.G_sym = symbolic_matrix(nsd, nsd, "G") # FIXME: Make sure we don't mess up transpose here again... self.x0_sym = self.vx_sym[0] #symbolic_vector(nsd, "x0") # FIXME: Make sure this is consistent. self.G_expr, self.x0_expr = geometry_mapping(self.global_polygon) # TODO: Non-affine mappings? self.detGtmp_sym = symbol("detGtmp") self.detGtmp_expr = swiginac.determinant(self.G_sym) self.detG_sym = symbol("detG") self.detG_expr = swiginac.abs(self.detGtmp_sym) # Sign of det G, negative if cell is inverted self.detG_sign_sym = symbol("detG_sign") self.detG_sign_expr = self.detG_sym / swiginac.abs(self.detG_sym) # Inverse of geometry mapping (expression simplification using cofactor) self.Ginv_sym = symbolic_matrix(nsd, nsd, "Ginv") self.Ginv_expr = (self.detGtmp_expr*swiginac.inverse(self.G_sym)) / self.detGtmp_sym #self.Ginv_expr = swiginac.inverse(self.G_sym) # Local and global coordinates self.xi_sym = symbols(("x","y","z")[:nsd]) # TODO: Change to xiN, but x,y,z is used as local coordinate symbols in rest of SyFi. #self.xi_sym = symbols(("xi0", "xi1", "xi2")[:nsd]) self.x_sym = symbols(("x0","x1","x2")[:nsd]) x_expr = [sum(self.G_sym[i,j]*self.xi_sym[j] for j in range(nsd)) for i in range(nsd)] # FIXME: Transpose? self.x_expr = swiginac.matrix(nsd, 1, x_expr) # Quadrature variables (coordinates are self.xi_sym?) self.quad_weight_sym = symbol("quad_weight") self.D_sym = symbol("D") # Facet normal expressions with sign scaling for inverted cells self.n_sym = symbolic_vector(nsd, "n") self.n_expr = [self.detG_sign_sym*n for n in self.cell.facet_n] # Facet mapping #self.facet_G_sym = FIXME #self.facet_G_expr[facet] = FIXME self.facet_D_sym = symbol("facet_D") self.facet_D_expr = [] # --- Compute facet_D sqrt = swiginac.sqrt if cell.shape == "interval": self.facet_D_expr = [swiginac.numeric(1) for facet in range(cell.num_facets)] elif cell.shape == "triangle": for facet in range(cell.num_facets): facet_polygon = cell.facet_polygons[facet] # facet_polygon is a line v0 = self.G_sym * list_to_vector(facet_polygon.vertex(0)) v1 = self.G_sym * list_to_vector(facet_polygon.vertex(1)) v = sub(v1, v0) D = sqrt( inner(v, v) ) # |v| if facet == 0: # diagonal facet D = D / sqrt(2) # FIXME: Is this right? # TODO: Should in general use determinant of mapping instead of this linear approximation self.facet_D_expr.append(D) elif cell.shape == "tetrahedron": for facet in range(cell.num_facets): facet_polygon = cell.facet_polygons[facet] # facet_polygon is a triangle v0 = facet_polygon.vertex(0) v1 = facet_polygon.vertex(1) v2 = facet_polygon.vertex(2) # map local reference coordinates to get global cell coordinates v0 = self.G_sym * list_to_vector(v0) v1 = self.G_sym * list_to_vector(v1) v2 = self.G_sym * list_to_vector(v2) # vx[i][j] = component j of coordinate of vertex i in cell #self.vx_sym[i][j] # A = |a x b|/2, D = A/(1/2) = |a x b|, # with A = global triangle area, and # D being A over the reference area 1/2 c = cross(sub(v1, v0), sub(v2, v0)) D = sqrt( inner(c, c) ) # |c| if facet == 0: # diagonal facet D = D / sqrt(3) # FIXME: Is this right? # TODO: Should in general use determinant of mapping instead of this linear approximation self.facet_D_expr.append(D) elif cell.shape == "quadrilateral": for facet in range(cell.num_facets): facet_polygon = cell.facet_polygons[facet] # facet_polygon is a line v0 = self.G_sym * list_to_vector(facet_polygon.vertex(0)) v1 = self.G_sym * list_to_vector(facet_polygon.vertex(1)) v = sub(v1, v0) D = sqrt(inner(v,v)) # TODO: Should in general use determinant of mapping instead of this linear approximation self.facet_D_expr.append(D) elif cell.shape == "hexahedron": for facet in range(cell.num_facets): facet_polygon = cell.facet_polygons[facet] # facet_polygon is a quadrilateral v0 = self.G_sym * list_to_vector(facet_polygon.vertex(0)) v1 = self.G_sym * list_to_vector(facet_polygon.vertex(1)) v2 = self.G_sym * list_to_vector(facet_polygon.vertex(2)) v3 = self.G_sym * list_to_vector(facet_polygon.vertex(3)) # compute midpoints m0 = (v0 + v1)/2 m1 = (v1 + v2)/2 m2 = (v2 + v3)/2 m3 = (v3 + v0)/2 # area is length of cross product of vectors between opposing midpoints c = cross(sub(m2, m0), sub(m1, m3)) D = sqrt( inner(c, c) ) # TODO: Should in general use determinant of mapping instead of this linear approximation self.facet_D_expr.append(D) def _build_argument_tokens(self): # --- Coefficient dofs self.w_dofs = [] for i in range(self.num_coefficients): rep = self.element_reps[self.formdata.elements[self.rank + i]] wdofs = symbols("w[%d][%d]" % (i, j) for j in range(rep.local_dimension)) self.w_dofs.append(wdofs) def __str__(self): s = "" s += "FormRepresentation:\n" s += "\n" # TODO: Add more here s += " Geometry tokens:\n" s += " self.cell = %s\n" % self.cell #s += " self.global_cell = %s\n" % self.global_cell s += " self.vx_sym = %s\n" % self.vx_sym s += " self.vx_expr = %s\n" % self.vx_expr s += " self.xi_sym = %s\n" % self.xi_sym s += " self.x_sym = %s\n" % self.x_sym s += " self.x_expr = %s\n" % self.x_expr s += " self.G_sym = %s\n" % self.G_sym s += " self.G_expr, = %s\n" % self.G_expr, s += " self.detGtmp_sym = %s\n" % self.detGtmp_sym s += " self.detGtmp_expr = %s\n" % self.detGtmp_expr s += " self.detG_sym = %s\n" % self.detG_sym s += " self.detG_expr = %s\n" % self.detG_expr s += " self.Ginv_sym = %s\n" % self.Ginv_sym s += " self.Ginv_expr = %s\n" % self.Ginv_expr s += " self.quad_weight_sym = %s\n" % self.quad_weight_sym s += " Argument tokens:\n" s += " self.w_dofs = %s\n" % self.w_dofs return s #def element_representation(self, iarg): # return self.element_reps[self.formdata.elements[iarg]] #def unique_element_number(self, iarg): # return self.element_number[self.formdata.elements[iarg]] #=============================================================================== # def _build_argument_cache(self): # use_symbols = self.integration_method == "quadrature" # # self.v_cache = [] # self.Dv_cache = [] # for iarg in range(self.rank + self.num_coefficients): # elm = self.formdata.elements[iarg] # rep = self.element_reps[elm] # self.v_cache.append([]) # self.Dv_cache.append([]) # for i in range(rep.local_dimension): # for component in rep.value_components: # ve = self.v_expr(iarg, i, component) # vs = self.v_sym(iarg, i, component) # self.v_cache[iarg][i][component] = (vs, ve) # # for derivatives in [(d,) for d in range(self.cell.nsd)]: # Dve = self.Dv_expr(iarg, i, component, derivatives, use_symbols) # Dvs = self.Dv_sym(iarg, i, component, derivatives) # self.Dv_cache[iarg][i][component][derivatives] = (Dvs, Dve) #=============================================================================== # --- Basis function and coefficient data for arguments def v_expr(self, iarg, i, component): elm = self.formdata.elements[iarg] #component, elm = elm.extract_component(component) rep = self.element_reps[elm] v = rep.basis_function(i, component) return v def v_sym(self, iarg, i, component, on_facet): elm = self.formdata.elements[iarg] e = self.v_expr(iarg, i, component) e2 = e.evalf() if e2.nops() == 0: if e2 == 0: # FIXME: Remove this line after fixing code generation, this leads to "double 0;" statements return e2 scomponent, selm = elm.extract_component(component) num = self.element_number[selm] prefix = "qt[facet][iq]." if on_facet else "qt[iq]." suffix = index_string((num, i) + scomponent) name = "%sv_%s" % (prefix, suffix) s = symbol(name) return s def w_expr(self, iarg, component, use_symbols, on_facet): elm = self.formdata.elements[self.rank+iarg] rep = self.element_reps[elm] dim = rep.local_dimension if use_symbols: vs = [self.v_sym(iarg+self.rank, i, component, on_facet=on_facet) for i in range(dim)] else: vs = [self.v_expr(iarg+self.rank, i, component) for i in range(dim)] w = dot_product(self.w_dofs[iarg], vs) return w def w_sym(self, iarg, component): name = "w_%s" % index_string((iarg,) + component) s = symbol(name) return s # --- Basis function and coefficient data for derivatives of arguments def ddxi(self, f, i): return swiginac.diff(f, self.xi_sym[i]) def ddx(self, f, i): return sum(self.Ginv_sym[j,i]*self.ddxi(f, j) for j in range(self.cell.nsd)) # TODO: Verify this line (in particular transposed or not!) def dv_expr(self, iarg, i, component, d): """Return expression for dv/dxi, with v being a particular component of basis function i in argument space iarg, and d is a tuple (i.e. multiindex) of xi directions (local coordinates).""" sfc_assert(len(d) == 1, "Higher order derivatives not implemented.") d = tuple(sorted(d)) v = self.v_expr(iarg, i, component) dv = v for k in d: dv = self.ddxi(dv, k) return dv def dv_sym(self, iarg, i, component, d, on_facet): sfc_assert(len(d) == 1, "Higher order derivatives not implemented.") d = tuple(sorted(d)) e = self.dv_expr(iarg, i, component, d) e2 = e.evalf() if e2.nops() == 0: if e2 == 0: # FIXME: Remove this line after fixing code generation, this leads to "double 0;" statements return e2 prefix = "qt[facet][iq]." if on_facet else "qt[iq]." suffix = index_string((iarg, i) + component + d) name = "%sdv_dxi_%s" % (prefix, suffix) return symbol(name) def Dv_expr(self, iarg, i, component, d, use_symbols, on_facet): """Return expression for dv/dx, with v being a particular component of basis function i in argument space iarg, and d is a tuple (i.e. multiindex) of x directions (global coordinates).""" sfc_assert(len(d) == 1, "Higher order derivatives not implemented.") d = tuple(sorted(d)) # Get local derivatives in all directions if use_symbols: dv = [self.dv_sym(iarg, i, component, (j,), on_facet=on_facet) for j in range(self.cell.nsd)] else: dv = [self.dv_expr(iarg, i, component, (j,)) for j in range(self.cell.nsd)] # Apply mapping to dv j, = d Dv = sum(self.Ginv_sym[k, j]*dv[k] for k in range(self.cell.nsd)) # TODO: Verify this line (in particular transposed or not!) return Dv def Dv_sym(self, iarg, i, component, d, on_facet): sfc_assert(len(d) == 1, "Higher order derivatives not implemented.") d = tuple(sorted(d)) e = self.Dv_expr(iarg, i, component, d, False, on_facet=on_facet) e2 = e.evalf() if e2.nops() == 0: if e2 == 0: # FIXME: Remove this line after fixing code generation, this leads to "double 0;" statements return e2 name = "Dv_%s" % index_string((iarg, i) + component + d) return symbol(name) def Dw_expr(self, iarg, component, d, use_symbols, on_facet): sfc_assert(len(d) == 1, "Higher order derivatives not implemented.") d = tuple(sorted(d)) elm = self.formdata.elements[self.rank+iarg] rep = self.element_reps[elm] dim = rep.local_dimension if use_symbols: vs = [self.Dv_sym(self.rank+iarg, i, component, d, on_facet=on_facet) for i in range(dim)] else: vs = [self.Dv_expr(self.rank+iarg, i, component, d, use_symbols=False, on_facet=on_facet) for i in range(dim)] w = dot_product(self.w_dofs[iarg], vs) return w def Dw_sym(self, iarg, component, d): sfc_assert(len(d) == 1, "Higher order derivatives not implemented.") d = tuple(sorted(d)) name = "Dw_%s" % index_string((iarg,) + component + d) return symbol(name) syfi-1.0.0.dfsg.orig/site-packages/sfc/symbolic_utils/0000755000175000017500000000000011674103625022564 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/site-packages/sfc/symbolic_utils/__init__.py0000644000175000017500000000031711672223006024670 0ustar johannrjohannr from sfc.symbolic_utils.symbol_factory import symbol_exists, symbol, symbols, symbolic_vector, symbolic_matrix, TempSymbolContext from sfc.symbolic_utils.symbolic_utils import cross, inner, grad, ddx, sub syfi-1.0.0.dfsg.orig/site-packages/sfc/symbolic_utils/symbolic_utils.py0000644000175000017500000002227211672223006026176 0ustar johannrjohannr#!/usr/bin/env python # -*- coding: utf-8 -*- """ This module contains utility functions for symbolic computations, mostly a thin layer on top of swiginac. """ # Copyright (C) 2007-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2007-10-16 # Last changed: 2009-03-19 import swiginac import SyFi from sfc.symbolic_utils.symbol_factory import symbol, symbols, symbolic_vector, symbolic_matrix # ... Utilities for symbolic computations, mostly on matrices _p = symbols( ["x", "y", "z"] ) # ... Some type stuff, shouldn't really be in this file? def is_indexed_type(A): """Checks if the argument is a matrix or lst.""" return isinstance(A, list) \ or isinstance(A, tuple) \ or isinstance(A, swiginac.lst) \ or isinstance(A.evalm(), swiginac.matrix) def is_scalar(e): return not is_indexed_type(e.evalm()) def as_matrix(A): """Convert A to a swiginac.matrix from a lst or list.""" if isinstance(A, swiginac.lst): return swiginac.lst_to_matrix(A).evalm() if isinstance(A, list): return swiginac.matrix(len(A), 1, A).evalm() # TODO: handle list of lists? if isinstance(A, tuple): return swiginac.matrix(len(A), 1, A).evalm() # TODO: handle list of lists? if isinstance(A.evalm(), swiginac.matrix): return A.evalm() raise TypeError("ERROR: cannot convert A to a swiginac.matrix, A is of type %s" % str(type(A))) def zeros(m, n): """Returns a m x n matrix with zeros.""" return swiginac.matrix(m, n) def ones(m, n): """Returns a m x n matrix with ones.""" A = swiginac.matrix(m, n) for i in xrange(m): for j in xrange(n): A[i,j] = 1 return A def Id(n): """Returns the n x n identity matrix.""" return swiginac.unit_matrix(n) def add(A, B): """Adds two swiginac expressions and calls evalm() on the result before returning.""" if is_indexed_type(A): A = as_matrix(A) if is_indexed_type(B): B = as_matrix(B) return (A+B).evalm() def sub(A, B): """Subtracts two swiginac expressions and calls evalm() on the result before returning.""" if is_indexed_type(A): A = as_matrix(A) if is_indexed_type(B): B = as_matrix(B) return (A-B).evalm() def mul(A, B): """Multiplies two swiginac expressions and calls evalm() on the result before returning.""" if is_indexed_type(A): A = as_matrix(A) if is_indexed_type(B): B = as_matrix(B) return (A*B).evalm() def cross(a, b): """Takes the cross product of two vectors.""" a = as_matrix(a) b = as_matrix(b) if len(a) != 3 or len(b) != 3: raise TypeError("Need 3D vectors a and b in cross(a,b).") im = [a[1], a[2], b[1], b[2]] jm = [a[2], a[0], b[2], b[0]] km = [a[0], a[1], b[0], b[1]] return swiginac.matrix(3, 1, [swiginac.matrix(2,2,m).determinant() for m in (im, jm, km)]) def inner(A, B): # FIXME: use multiplication for matrices instead of contraction? """Takes the inner product of A and B: multiplication for scalars, dot product for vectors and lsts, contraction for matrices.""" if is_indexed_type(A): A = as_matrix(A) if is_indexed_type(B): B = as_matrix(B) if isinstance(A, swiginac.matrix) and isinstance(B, swiginac.matrix): if len(A) == len(B): return sum( [A.op(i)*B.op(i) for i in xrange(len(A))] ) if A.cols() == 1: A = A.transpose() # row vector to column vector if B.rows() == 1: B = B.transpose() # column vector to row vector if A.cols() == B.rows(): # matrix-vector or vector-matrix inner product return mul(A, B) raise ValueError("Unmatching size of operands") return (A*B).evalm() def dot(a, b): # FIXME: use multiplication for matrices instead of contraction? return inner(a, b) def contract(A,B): """See inner(A,B).""" return inner(A,B) def det(A): """Returns the determinant of the argument.""" return A.evalm().determinant() def abs(x): """Returns the absolute value of the argument.""" return swiginac.abs(x) def transpose(A): """Returns the transpose of the argument.""" return swiginac.transpose(A.evalm()) def trace(A): """Returns the trace of the argument.""" return swiginac.trace(A.evalm()) def inverse(A): """Returns the inverse of the argument.""" A = A.evalm() if isinstance(A, swiginac.matrix): return A.evalm().inverse() return 1.0 / A def rank(x): if isinstance(x, swiginac.matrix): r = x.rows() c = x.cols() if r > 1 and c > 1: return 2 if r*c > 1: return 1 return 0 def shape(x): if isinstance(x, swiginac.matrix): r = x.rows() c = x.cols() if r > 1 and c > 1: return (r, c) if r*c > 1: return (r*c,) return (1,) def diff(f, x): """Returns df/dx, where x is a symbol or symbolic matrix.""" if type(x) == swiginac.matrix: f_rank = rank(f) x_rank = rank(x) if f_rank+x_rank > 2: raise RuntimeError("Cannot apply diff to f,x with ranks %d,%d" % (f_rank, x_rank)) # FIXME: support different combinations of ranks for f,x A = zeros(x.rows(), x.cols()) for i in range(A.rows()): for j in range(A.cols()): sym = x[i,j] assert isinstance(sym, swiginac.symbol) val = f # [...] FIXME A[i,j] = swiginac.diff(val, sym) return A assert isinstance(x, swiginac.symbol) return swiginac.diff(f, x) def ddx(f, i, GinvT=None): """Returns df/dx_i, where i is the number of the coordinate. GinvT is an optional geometry mapping.""" # without mapping: if GinvT is None: return diff(f, x(i)) # with mapping: dfdx = 0 for k in range(GinvT.rows()): dfdx += GinvT[i, k] * swiginac.diff(f, _p[k]) return dfdx def grad(u, GinvT=None): """Returns the gradient of u w.r.t. the spacial variables x,y[,z], depending on the dimension specified by SyFi.initSyFi(nsd).""" ran = rank(u) sh = shape(u) if ran == 0: n = SyFi.cvar.nsd r, c = n, 1 u = swiginac.matrix(1,1,[u]) elif ran == 1: n = sh[0] r, c = n, n else: raise ValueError("Taking gradient of a matrix is not supported.") if GinvT is None: GinvT = Id(n) g = zeros(r, c) for i in range(r): for j in range(c): f = u[j,0] for k in range(n): g[i,j] += GinvT[i,k] * diff(f, _p[k]) return g def div(u, GinvT=None): r = u.rows() c = u.cols() ran = rank(u) if ran == 2: if r != c: raise RuntimeError("Taking divergence of an unsymmetric matrix.") n = r if GinvT is None: GinvT = Id(n) d = zeros(r, 1) for j in range(r): for i in range(r): for k in range(r): d[j,0] += GinvT[i,k] * diff(u[i,j], _p[k]) elif ran == 1: n = r*c if GinvT is None: GinvT = Id(n) d = 0 for i in range(n): for k in range(n): d += GinvT[i,k] * diff(u[i,0], _p[k]) else: raise RuntimeError("Taking divergence of a scalar.") return d def curl(u, GinvT=None): g = grad(u, GinvT) c = swiginac.matrix(2,1) c[0,0] = -g[1,0] c[1,0] = g[0,0] return c def laplace(u, GinvT=None): return div(grad(u, GinvT), GinvT) if __name__ == '__main__': a = swiginac.matrix(3,1,[1,0,0]) b = swiginac.matrix(3,1,[0,1,0]) c = swiginac.matrix(3,1,[0,0,1]) print "" print cross(a,b) print cross(a,c) print cross(c,b) print cross(b,c) import SyFi SyFi.initSyFi(2) x, y, z = symbols(["x", "y", "z"]) x2, y2, z2 = symbols(["x", "y", "z"]) assert (x-x2).is_zero() assert (y-y2).is_zero() assert (z-z2).is_zero() p2 = swiginac.matrix(2, 1, [x,y]) p3 = swiginac.matrix(3, 1, [x,y,z]) A = swiginac.matrix(2,2, [x*x*x, x*x*y, x*y*y, y*y*y]) sh = shape(A) assert rank(A) == 2 assert len(sh) == 2 assert sh[0] == 2 assert sh[1] == 2 print "" print "A", A print "div A", div(A) v = swiginac.matrix(2, 1, [3*x,5*y]) sh = shape(v) assert rank(v) == 1 assert len(sh) == 1 assert sh[0] == 2 print "" print "v", v print "div v", div(v) print "grad v", grad(v) print "dv/dx ", diff(v, p2) v = swiginac.matrix(2, 1, [3*y,5*x]) sh = shape(v) assert rank(v) == 1 assert len(sh) == 1 assert sh[0] == 2 print "" print "v", v print "div v", div(v) print "grad v", grad(v) print "dv/dx ", diff(v, p2) syfi-1.0.0.dfsg.orig/site-packages/sfc/symbolic_utils/integration.py0000644000175000017500000001011011672223006025444 0ustar johannrjohannr# -*- coding: utf-8 -*- """ This module contains functions for computing integrals both symbolically and numerically. """ # Copyright (C) 2007-2009 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2007-11-07 # Last changed: 2009-03-19 import swiginac import SyFi from sfc.common import sfc_error from sfc.quadrature import find_quadrature_rule from sfc.geometry import UFCCell, geometry_mapping from sfc.symbolic_utils.symbolic_utils import symbol, symbols def symbolic_integral(polygon, function): """ This function computes the integral of the specified function over the specified polygon symbolically. The function may take as arguments the global coordinates (x,y,z) as well as coordinates on the reference polygon (xi0, xi1, xi2). """ nsd = polygon.no_space_dim() G, x0 = geometry_mapping(polygon) # FIXME: passing Rectangle (or Box) here will yield an affine mapping only correct for straight rectangles # TODO: Get symbols as input x, y, z = symbols(["x", "y", "z"]) xi0, xi1, xi2 = symbols(["xi0", "xi1", "xi2"]) p = swiginac.matrix(nsd, 1, [x,y,z]) Ginv = G.inverse() xi = Ginv*(p-x0) ss = function.subs(xi0 == xi[0,0]) if xi.rows() > 1: ss = ss.subs(xi1 == xi[1,0]) if xi.rows() > 2: ss = ss.subs(xi2 == xi[2,0]) return polygon.integrate(ss).evalf() def numeric_integral(polygon, function, order): """ This function computes the integral of the specified function over the specified polygon numerically. The function may take as arguments the global coordinates (x,y,z) as well as coordinates on the reference polygon (xi0, xi1, xi2). """ # TODO: Get symbols as input nsd = polygon.no_space_dim() # UFCCell is only defined on reference domains ? # OLD code # cell = UFCCell(polygon) # table = find_quadrature_rule(cell.shape, order, family="gauss") shape = "" if polygon.str().find("Triangle") >= 0: shape = "triangle" if polygon.str().find("Line") >= 0: shape = "interval" if polygon.str().find("Tetrahedron") >= 0: shape = "tetrahedron" table = find_quadrature_rule(shape, order, family="gauss") x, y, z = symbols(["x", "y", "z"]) xi0, xi1, xi2 = symbols(["xi0", "xi1", "xi2"]) G, x0 = geometry_mapping(polygon) # FIXME: passing Rectangle (or Box) here will yield an affine mapping only correct for straight rectangles xi = swiginac.matrix(nsd, 1, [xi0, xi1, xi2]) global_point = G*xi + x0 ss = function.subs(x == global_point[0,0]) if global_point.rows() > 1: ss = ss.subs(y == global_point[1,0]) if global_point.rows() > 2: ss = ss.subs(z == global_point[2,0]) sum = 0.0 for k in range(table.num_points): p = table.points[k] w = table.weights[k] s = ss.subs(xi0 == p[0]) if len(p) > 1: s = s.subs(xi1 == p[1]) if len(p) > 2: s = s.subs(xi2 == p[2]) sum += s*w sum *= G.determinant() return sum def integral(polygon, function, integration_mode=True, integration_order=None): """ A small wrapper on top of the functions symbolic_integral and numeric_integral. """ # TODO: Support Taylor series expansion as well if integration_mode == "symbolic": return symbolic_integral(polygon, function) elif integration_mode == "quadrature": return numeric_integral(polygon, function, integration_order) sfc_error("Not implemented integration mode %s" % integration_mode) syfi-1.0.0.dfsg.orig/site-packages/sfc/symbolic_utils/symbol_factory.py0000644000175000017500000000624611672223006026174 0ustar johannrjohannr#!/usr/bin/env python # -*- coding: utf-8 -*- """ This module contains utility functions for creating symbols and managing symbol contexts. """ # Copyright (C) 2007-2008 Martin Sandve Alnes and Simula Resarch Laboratory # # This file is part of SyFi. # # SyFi is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # SyFi 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 SyFi. If not, see . # # First added: 2007-10-09 # Last changed: 2008-12-12 import math import swiginac import SyFi class SymbolFactory: def __init__(self): self.symbols = {} for n in ("x", "y", "z", "t", "infinite", "DUMMY"): self.symbols[n] = SyFi.get_symbol(n) def __call__(self, name): if name in self.symbols: return self.symbols[name] s = swiginac.symbol(name) self.symbols[name] = s return s # default context for construction of symbols identified by their name _symbol_factory = SymbolFactory() class TempSymbolContext: def __init__(self, format="_s%d", symbol_factory=_symbol_factory): self.format = format self.i = 0 self.symbol_factory = symbol_factory def __call__(self, shape=None): name = self.format % self.i self.i += 1 return self.symbol_factory(name) # Functional user interface to the default symbol factory: def symbol_exists(name): # Unused? """Returns a symbol from the default sfc symbol factory.""" return name in _symbol_factory.symbols def symbol(name): """Returns a symbol from the default sfc symbol factory.""" return _symbol_factory(name) def symbolic_vector(n, name): """Returns a length n vector of symbols from the default sfc symbol factory. The symbols will be named 'name' with i=0,...,n-1. If n > 10, will be prepadded with zeros.""" digits = 1 if n == 1 else 1 + int(math.log10(n-1)) rule = "%%s%%0%dd" % digits v = swiginac.matrix(n, 1) for i in xrange(n): v[i] = symbol(rule % (name, i)) return v def symbolic_matrix(m, n, name): """Returns a n x n matrix of symbols from the default sfc symbol factory. If m<10 and n<10, the symbols will be named 'name' with i=0,...,m-1, j=0,...,n-1. If m>=10 or n>=10, the symbols will be named 'name__'.""" A = swiginac.matrix(m, n) if m > 9 or n > 9: padding = "_" else: padding = "" for i in xrange(m): for j in xrange(n): A[i, j] = symbol("%s%s%d%s%d" % (name, padding, i, padding, j)) return A def symbols(names): """Returns a list of symbols with names from the default sfc symbol factory. 'names' must be an iterable sequence of strings.""" return [symbol(na) for na in names] syfi-1.0.0.dfsg.orig/CMakeLists.txt0000644000175000017500000002216511672223006016770 0ustar johannrjohannr# Top level CMakeLists.txt file for SyFi # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) #------------------------------------------------------------------------------ # Set project name and version number project(SYFI) set(SYFILIB_MAJOR_VERSION "1") set(SYFILIB_MINOR_VERSION "0") set(SYFILIB_MICRO_VERSION "0") set(SYFILIB_VERSION "${SYFILIB_MAJOR_VERSION}.${SYFILIB_MINOR_VERSION}.${SYFILIB_MICRO_VERSION}") add_definitions(-DSYFILIB_VERSION="${SYFILIB_VERSION}") #------------------------------------------------------------------------------ # General configuration # Set CMake options, see `cmake --help-policy CMP000x` if (COMMAND cmake_policy) cmake_policy(SET CMP0003 NEW) cmake_policy(SET CMP0004 OLD) endif() # Set location of our FindFoo.cmake modules set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH}) # Make sure CMake uses the correct syfi-config.cmake for tests and demos #set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${CMAKE_CURRENT_BINARY_DIR}/syfi) #------------------------------------------------------------------------------ # Configurable options for how we want to build option(BUILD_SHARED_LIBS "Build SyFi with shared libraries." ON) option(CMAKE_USE_RELATIVE_PATHS "Use relative paths in makefiles and projects." OFF) option(SYFI_WITH_LIBRARY_VERSION "Build with library version information." ON) option(SYFI_ENABLE_DOCS "Enable documentation." OFF) option(SYFI_ENABLE_TESTING "Enable testing." OFF) #------------------------------------------------------------------------------ # Compiler flags # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug Developer MinSizeRel Release RelWithDebInfo." FORCE) endif() # Check for some compiler flags include(CheckCXXCompilerFlag) check_cxx_compiler_flag(-pipe HAVE_PIPE) if (HAVE_PIPE) set(SYFI_CXX_DEVELOPER_FLAGS "-pipe ${SYFI_CXX_DEVELOPER_FLAGS}") endif() check_cxx_compiler_flag("-Wall -Werror" HAVE_PEDANTIC) if (HAVE_PEDANTIC) set(SYFI_CXX_DEVELOPER_FLAGS "-Wall -Werror ${SYFI_CXX_DEVELOPER_FLAGS}") endif() check_cxx_compiler_flag(-std=c++98 HAVE_STD) if (HAVE_STD) set(SYFI_CXX_DEVELOPER_FLAGS "-std=c++98 ${SYFI_CXX_DEVELOPER_FLAGS}") endif() check_cxx_compiler_flag(-g HAVE_DEBUG) if (HAVE_DEBUG) set(SYFI_CXX_DEVELOPER_FLAGS "-g ${SYFI_CXX_DEVELOPER_FLAGS}") endif() check_cxx_compiler_flag(-O2 HAVE_O2_OPTIMISATION) if (HAVE_O2_OPTIMISATION) set(SYFI_CXX_DEVELOPER_FLAGS "-O2 ${SYFI_CXX_DEVELOPER_FLAGS}") endif() # Set 'Developer' build type flags set(CMAKE_CXX_FLAGS_DEVELOPER "${SYFI_CXX_DEVELOPER_FLAGS}" CACHE STRING "Flags used by the compiler during development." FORCE) # Add debug definitions if (CMAKE_BUILD_TYPE STREQUAL "Developer" OR CMAKE_BUILD_TYPE STREQUAL "Debug") list(APPEND SYFI_CXX_DEFINITIONS "-DDEBUG") endif() #------------------------------------------------------------------------------ # Run tests to find required packages find_package(GiNaC REQUIRED) find_package(PythonInterp REQUIRED) find_package(PythonLibs REQUIRED) find_package(NumPy REQUIRED) find_package(SWIG REQUIRED) include(UseSWIG) #------------------------------------------------------------------------------ # Set include directories and libs of required packages set(SYFI_INCLUDE_DIRECTORIES ${GINAC_INCLUDE_DIRS} ) set(SYFI_TARGET_LINK_LIBRARIES ${GINAC_LIBRARIES} ) #------------------------------------------------------------------------------ # Set compiler flags and include directories # Add compiler include directories include_directories( ${SYFI_SOURCE_DIR}/syfi ${SYFI_BINARY_DIR}/syfi ${SYFI_SOURCE_DIR}/syfi/swig ${SYFI_BINARY_DIR}/syfi/swig ${SYFI_INCLUDE_DIRECTORIES} ) # Add CXX defintions add_definitions(${SYFI_CXX_DEFINITIONS}) # Add flags set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} ${SYFI_CXX_FLAGS} ) #------------------------------------------------------------------------------ # Set SyFi install sub-directories set(SYFI_BIN_DIR "bin" CACHE PATH "Binary installation directory.") set(SYFI_LIB_DIR "lib" CACHE PATH "Library installation directory.") set(SYFI_INCLUDE_DIR "include" CACHE PATH "C/C++ header installation directory.") set(SYFI_PKGCONFIG_DIR "lib/pkgconfig" CACHE PATH "pkg-config file installation directory.") set(SYFI_SHARE_DIR "share/syfi" CACHE PATH "Shared data installation directory.") set(SYFI_MAN_DIR "share/man" CACHE PATH "Manual page installation directory.") # Extract Python version info for use to determine where to install Python files execute_process( COMMAND ${PYTHON_EXECUTABLE} -c "import platform; print platform.python_version()" OUTPUT_VARIABLE PYTHON_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE ) string(SUBSTRING "${PYTHON_VERSION}" 0 1 PYTHON_VERSION_MAJOR) string(SUBSTRING "${PYTHON_VERSION}" 2 1 PYTHON_VERSION_MINOR) string(SUBSTRING "${PYTHON_VERSION}" 4 1 PYTHON_VERSION_PATCH) # We install Python files to lib/pythonX.Y/site-packages by default set(SYFI_PYTHON_MODULE_DIR "lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages" CACHE PATH "Python module installation directory") set(SYFI_PYTHON_EXT_DIR "lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages" CACHE PATH "Python extension module installation directory") #------------------------------------------------------------------------------ # Installation of sfc install(DIRECTORY ${CMAKE_SOURCE_DIR}/site-packages/sfc DESTINATION ${SYFI_PYTHON_MODULE_DIR} USE_SOURCE_PERMISSIONS COMPONENT RuntimeExecutables) install(FILES ${CMAKE_SOURCE_DIR}/scripts/sfc DESTINATION ${SYFI_BIN_DIR} PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE COMPONENT RuntimeExecutables) #------------------------------------------------------------------------------ # Installation of SyFi manual pages install(DIRECTORY ${SYFI_SOURCE_DIR}/doc/man/ DESTINATION ${SYFI_MAN_DIR} USE_SOURCE_PERMISSIONS COMPONENT RuntimeExecutables) #------------------------------------------------------------------------------ # SyFi library # Add source directory add_subdirectory(syfi) #------------------------------------------------------------------------------ # Generate and install helper file syfi.conf # FIXME: not cross-platform compatible # Create and install syfi.conf file configure_file(${CMAKE_SOURCE_DIR}/cmake/templates/syfi.conf.in ${CMAKE_BINARY_DIR}/syfi.conf @ONLY) install(FILES ${CMAKE_BINARY_DIR}/syfi.conf DESTINATION ${SYFI_SHARE_DIR} COMPONENT Development) #------------------------------------------------------------------------------ # Add demos and install demo source files # Copy demo files to build directory file(COPY demo DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) # Add target "demo" for building the demos add_custom_target(demo COMMAND ${PYTHON_EXECUTABLE} makeall.py WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/demo") # Add target "demo_clean" for cleaning the demos add_custom_target(demo_clean COMMAND ${PYTHON_EXECUTABLE} cleanall.py WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/demo") # Install the demo source files install(DIRECTORY demo DESTINATION ${SYFI_SHARE_DIR}) #------------------------------------------------------------------------------ # Install demo files install(DIRECTORY demo DESTINATION ${SYFI_SHARE_DIR}) #------------------------------------------------------------------------------ # Add tests if (SYFI_ENABLE_TESTING) enable_testing() add_subdirectory(tests) endif() #------------------------------------------------------------------------------ # Generate pkg-config file and install it # Convert include dirs to -I form foreach(_inc_dir ${SYFI_INCLUDE_DIRECTORIES}) set(PKG_INCLUDES "-I${_inc_dir} ${PKG_INCLUDES}") endforeach() # Convert compiler flags and definitions into space separated strings string(REPLACE ";" " " PKG_CXXFLAGS "${CMAKE_CXX_FLAGS}") string(REPLACE ";" " " PKG_DEFINITIONS "${SYFI_CXX_DEFINITIONS}") # Convert libraries to -L -l form foreach(_lib ${SYFI_TARGET_LINK_LIBRARIES}) string(REGEX REPLACE "(.?:?/[^ ]*)/lib([^ ]*)\\.(a|so|dylib|dll)" "-L\\1 -l\\2" _linkflags "${_lib}" ) # Only add libraries that matches the form -L -l if ("${_linkflags}" MATCHES "-L.+ -l.+") set(PKG_LINKFLAGS "${_linkflags} ${PKG_LINKFLAGS}") endif() endforeach() # Remove duplicated link flags separate_arguments(PKG_LINKFLAGS) list(REMOVE_DUPLICATES PKG_LINKFLAGS) string(REPLACE ";" " " PKG_LINKFLAGS "${PKG_LINKFLAGS}") # Add additional link flags #set(PKG_LINK_FLAGS "${PKG_LINKFLAGS} ${SYFI_LINK_FLAGS}") # Configure and install pkg-config file configure_file(${SYFI_SOURCE_DIR}/cmake/templates/syfi.pc.in ${CMAKE_BINARY_DIR}/syfi.pc @ONLY) install(FILES ${CMAKE_BINARY_DIR}/syfi.pc DESTINATION ${SYFI_PKGCONFIG_DIR} COMPONENT Development ) #------------------------------------------------------------------------------ # Add "make uninstall" target configure_file( "${CMAKE_SOURCE_DIR}/cmake/templates/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") syfi-1.0.0.dfsg.orig/sandbox/0000755000175000017500000000000011674103625015666 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/sandbox/dolfinbug/0000755000175000017500000000000011674103625017637 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/sandbox/dolfinbug/cpp/0000755000175000017500000000000011672223006020413 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/sandbox/dolfinbug/cpp/SConstruct0000644000175000017500000000133111672223006022443 0ustar johannrjohannr# This is an example of a simple SConstruct file for building # programs against DOLFIN. To build this demo, just type 'scons'. import os, glob, commands # Get compiler from pkg-config compiler = commands.getoutput('pkg-config --variable=compiler dolfin') # Create a SCons Environment based on the main os environment env = Environment(ENV=os.environ, CXX=compiler) # Get compiler flags from pkg-config env.ParseConfig('pkg-config --cflags --libs dolfin') # Generated code is not this robust (yet) env.ParseConfig('echo -Wno-unused-variable -g') # Generated code is not this robust (yet) env.ParseConfig('echo -Wno-conversion -w') # Program name env.Program('demo', glob.glob("*.cpp") + glob.glob("generated_code/*.cpp")) syfi-1.0.0.dfsg.orig/sandbox/dolfinbug/cpp/Makefile0000644000175000017500000000071611672223006022057 0ustar johannrjohannr FLAGS=--integration-method=symbolic --debug=1 #FLAGS=--integration-method=quadrature FORM=Elements demo: main.cpp generated_code/$(FORM).h scons -j3 generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -ogenerated_code $(FORM).ufl bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl view: run paraview --data=f.pvd & run: demo rm -f *.pvd *.vtu ./demo debug: demo gdb ./demo clean: rm -f *.pvd *.vtu rm -rf demo generated_code *.o rm -f *.pyc syfi-1.0.0.dfsg.orig/sandbox/dolfinbug/cpp/main.cpp0000644000175000017500000000532011672223006022043 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-01-01 // Last changed: 2009-04-01 // // This demo program shows a multitude of ways DOLFIN can // crash or produce the wrong results using interpolation. #include #include "generated_code/Elements.h" using namespace dolfin; class Vector2D: public Function { public: Vector2D(const FunctionSpace & V): Function(V) {} void eval(double* values, const double* x) const { values[0] = 3.0 + 0.1*x[0] + 0.01*x[1]; values[1] = 5.0 + 0.1*x[0] + 0.01*x[1]; values[0] = x[0] + x[1]; values[1] = x[0] + x[1]; } }; int main() { UnitSquare mesh(1, 1); // from a VectorElement("CG", "triangle", 1) Elements::CoefficientSpace_v1 V1(mesh); // from a VectorElement("CG", "triangle", 2) Elements::CoefficientSpace_v2 V2(mesh); // Ideally, I'd like to say "make f the interpolant of s" where f already has a function space attached: /* Vector2D s; Function f(V2); f.interpolate(s); */ // But with the currently available signatures, I wanted to do this: /* Vector2D s; // No function space necessary Function f(V2); s.interpolate(f.vector(), V2); */ // But this gives: /* terminate called after throwing an instance of 'std::runtime_error' what(): *** Assertion (_function_space) [at dolfin/function/Function.cpp:134 in function_space()] */ // For some reason there's an assertion for a function space in s // This works: (sqrt(2^2+2^2) = 2.83 in the corner) /* Vector2D s(V2); Function f(V2); s.interpolate(f.vector(), V2); */ // This error should be detected, but it only produces wrong results: /* Vector2D s(V1); Function f(V1); s.interpolate(f.vector(), V2); */ // This might be ok (not sure how to interpret s(V1)), but produces wrong results: /* Vector2D s(V1); Function f(V2); s.interpolate(f.vector(), V2); */ // This should fail with an error message, but produces wrong results: /* Vector2D s(V2); Function f(V2); s.interpolate(f.vector(), V1); */ File file("f.pvd"); file << f; return 0; } syfi-1.0.0.dfsg.orig/sandbox/dolfinbug/cpp/Elements.ufl0000644000175000017500000000026111672223006022676 0ustar johannrjohannr polygon = "triangle" element1 = VectorElement("CG", polygon, 1) element2 = VectorElement("CG", polygon, 2) v1 = Function(element1) v2 = Function(element2) a = dot(v1,v2)*dx syfi-1.0.0.dfsg.orig/sandbox/demo/0000755000175000017500000000000011674103625016612 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/sandbox/demo/HarmonicMap/0000755000175000017500000000000011674103625021010 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/sandbox/demo/HarmonicMap/python/0000755000175000017500000000000011674103625022331 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/sandbox/demo/HarmonicMap/python/clean.sh0000755000175000017500000000006411672223006023744 0ustar johannrjohannr#!/bin/bash rm -rf SFC* rm -f *.pvd *.vtu *.vtk *.m syfi-1.0.0.dfsg.orig/sandbox/demo/HarmonicMap/python/demo.py0000644000175000017500000000465311672223006023631 0ustar johannrjohannr import math from dolfin import * dolfin_set("form compiler", "sfc") class Solution(Function): def eval(self, values, xx): r = math.sqrt((xx[0]-0.5)**2 + (xx[1]-0.5)**2) values[0] = (xx[0]-0.5)/r values[1] = (xx[1]-0.5)/r class DirichletBoundary(SubDomain): def inside(self, x, on_boundary): return bool(on_boundary) # Geometry N = 3 if N%2==0: print "The solution will have a singularity in a nodal point." #sys.exit(0) mesh = UnitSquare(N,N) # Function spaces X = VectorFunctionSpace(mesh, 'CG', 1) Y = FunctionSpace(mesh, 'CG', 1) XY = X + Y # Solution function (in mixed space) u = Function(XY) # Basis functions (in mixed space) vv = TestFunction(XY) uu = TrialFunction(XY) # Form coefficients do_split = False if do_split: x, y = split(u) else: x = Function(X) y = Function(Y) # Forms L = dot(x,x)*dx + inner(grad(x),grad(x))*dx + dot(x,x)*y*dx if do_split: F = derivative(L, u, vv) J = derivative(F, u, uu) else: F = derivative(L, (x,y), vv) J = derivative(F, (x,y), uu) # start vector dirichlet_function = Solution(X) x0 = project(dirichlet_function,X) y0 = Function(Y) y0.vector().zero() #Some ugly code related to Function <-> SubFunction stuff #-------------------------------------------------------- uvec = u.vector() uarr = uvec.array() xn = x0.vector().size() x0a, y0a = uarr[:xn], uarr[xn:] x0a[:] = x0.vector().array() #y0a[:] = y0.vector().array() y0a[:] = 1 #x0a[:] = 1/sqrt(2) #y0a[:] = 0 u.vector().set(uarr) plot(u.sub(0)) #Done ugly code #-------------------------------------------------------- x.vector().norm() y.vector().norm() # Solve nonlinear variational problem dirichlet_boundary = DirichletBoundary() #plot(dirichlet_function) bc = DirichletBC(X, dirichlet_function, dirichlet_boundary) #problem = VariationalProblem(J, F, bc, nonlinear=True) b = assemble(F) A = assemble(J) file = File("A.m"); file << A; file = File("b.m"); file << b; print "norm of b ", b.norm() problem = VariationalProblem(J, F, bc, nonlinear=True) print "before ", u.vector().disp() problem.solve(u) print "after ", u.vector().disp() # Plot both fields TODO: Having problems with showing both #x0.assign(u.sub(0)) #y0.assign(u.sub(1)) figure(0) #plot(x0, title="x") plot(u.sub(0), title="x") figure(1) #plot(y0, title="y") plot(u.sub(1), title="y") interactive() # Write solution to file vtk = File("x.pvd") vtk << x0 vtk = File("y.pvd") vtk << y0 syfi-1.0.0.dfsg.orig/sandbox/demo/HarmonicMap/python/demo2.py0000644000175000017500000000523711672223006023712 0ustar johannrjohannr import numpy from numpy.linalg import eig import math from dolfin import * dolfin_set("form compiler", "sfc") class Solution(Function): def eval(self, values, xx): r = math.sqrt((xx[0]-0.5)**2 + (xx[1]-0.5)**2) values[0] = (xx[0]-0.5)/r values[1] = (xx[1]-0.5)/r class DirichletBoundary(SubDomain): def inside(self, x, on_boundary): return bool(on_boundary) # Geometry N = 11 if N % 2 == 0: print "The solution will have a singularity in a nodal point." #sys.exit(0) mesh = UnitSquare(N, N) # Function spaces X = VectorFunctionSpace(mesh, 'CG', 1) Y = FunctionSpace(mesh, 'CG', 1) XY = X + Y # Solution function (in mixed space) u = Function(XY) # Basis functions (in mixed space) vv = TestFunction(XY) uu = TrialFunction(XY) # Form coefficients x, y = split(u) # Forms L = inner(grad(x),grad(x))*dx + dot(x,x)*y*dx F = derivative(L, u, vv) J = derivative(F, u, uu) # TODO: Compare with system assembled from this #F = derivative(L, (x,y), vv) #J = derivative(F, (x,y), uu) # Start vector dirichlet_function = Solution(X) x0 = project(dirichlet_function, X) y0 = Function(Y) y0.vector().zero() #Some ugly code related to Function <-> SubFunction stuff #-------------------------------------------------------- uvec = u.vector() uarr = uvec.array() xn = x0.vector().size() x0a, y0a = uarr[:xn], uarr[xn:] x0a[:] = x0.vector().array() y0a[:] = y0.vector().array() #x0a[:] = 1/sqrt(2) #y0a[:] = 0 u.vector().set(uarr) figure(0) plot(x0, title="initial x") #plot(u.sub(0), title="initial x") figure(1) plot(y0, title="initial y") #plot(u.sub(1), title="initial y") #Done ugly code #-------------------------------------------------------- # Solve nonlinear variational problem dirichlet_boundary = DirichletBoundary() #plot(dirichlet_function) bc = DirichletBC(X, dirichlet_function, dirichlet_boundary) #problem = VariationalProblem(J, F, bc, nonlinear=True) b = assemble(F) A = assemble(J) eigval, eigvec = eig(A.array()) eigA = sorted(abs(eigval)) eigA.reverse() kappa = eigA[0] / eigA[-1] print "Condition number %e" % kappa # 38113603.1143 !!! print "Eigenvalues of A ", eigA[:5], ", ...", eigA[-5:] file = File("A.m"); file << A; file = File("b.m"); file << b; print "Norm of b before solve", b.norm() problem = VariationalProblem(J, F, bc, nonlinear=True) problem.solve(u) # Check residual b = assemble(F) print "Norm of b after solve", b.norm() # Copy sub functions to get one Function on each subspace x0.assign(u.sub(0)) y0.assign(u.sub(1)) # Plot both fields figure(2) plot(x0, title="x") figure(3) plot(y0, title="y") # Write solution to file vtk = File("x.pvd"); vtk << x0 vtk = File("y.pvd"); vtk << y0 interactive() syfi-1.0.0.dfsg.orig/sandbox/demo/HarmonicMap/python/bugexample.py0000644000175000017500000000474511672223006025040 0ustar johannrjohannr import numpy from numpy.linalg import eig import math from dolfin import * dolfin_set("form compiler", "sfc") class Solution(Function): def eval(self, values, xx): r = math.sqrt((xx[0]-0.5)**2 + (xx[1]-0.5)**2) values[0] = (xx[0]-0.5)/r values[1] = (xx[1]-0.5)/r class DirichletBoundary(SubDomain): def inside(self, x, on_boundary): return bool(on_boundary) # Geometry N = 5 if N%2==0: print "The solution will have a singularity in a nodal point." #sys.exit(0) mesh = UnitSquare(N,N) # Function spaces X = VectorFunctionSpace(mesh, 'CG', 1) Y = FunctionSpace(mesh, 'CG', 1) XY = X + Y # Solution function (in mixed space) u = Function(XY) # Basis functions (in mixed space) vv = TestFunction(XY) uu = TrialFunction(XY) # Form coefficients norms = [] eigs = [] for do_split in (True, False): if do_split: x, y = split(u) else: x = Function(X) y = Function(Y) # Forms L = inner(grad(x),grad(x))*dx + dot(x,x)*y*dx #L = dot(x,x)*y*dx #L = inner(grad(x),grad(x))*dx #L = dot(x,x)*dx + dot(x,x)*y*dx if do_split: F = derivative(L, u, vv) J = derivative(F, u, uu) else: F = derivative(L, (x,y), vv) J = derivative(F, (x,y), uu) # Start vector dirichlet_function = Solution(X) x0 = project(dirichlet_function,X) # x0.vector().zero() y0 = Function(Y) y0.vector().zero() #Some ugly code related to Function <-> SubFunction stuff #-------------------------------------------------------- xn = x0.vector().size() yn = y0.vector().size() if not do_split: x.vector().assign(x0.vector()) y.vector().assign(y0.vector()) else: uarr = u.vector().array() uarr[:xn] = x0.vector().array() uarr[xn:] = y0.vector().array() u.vector().set(uarr) #-------------------------------------------------------- b = assemble(F) A = assemble(J) print print "do_split =", do_split print "xn, yn =", xn, yn bnorm = b.norm() print "Norm of b ", bnorm norms.append(bnorm) eigval, eigvec = eig(A.array()) eigA = sorted(eigval) eigA.reverse() eigs.append(eigA) print "Eigenvalues of A ", eigA[:5], ", ...", eigA[-5:] # TODO: Compare eigs #print "Eig difference: ", (numpy.ndarray(eigs[0][:5]) - numpy.ndarray(eigs[1][:5])) #print "Eig difference: ", (numpy.ndarray(eigs[0][-5:]) - numpy.ndarray(eigs[1][-5:])) syfi-1.0.0.dfsg.orig/sandbox/demo/HarmonicMap/cpp/0000755000175000017500000000000011674103625021572 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/sandbox/demo/HarmonicMap/cpp/SConstruct0000644000175000017500000000127211672223006023620 0ustar johannrjohannr# This is an example of a simple SConstruct file for building # programs against DOLFIN. To build this demo, just type 'scons'. import os, glob, commands # Get compiler from pkg-config compiler = commands.getoutput('pkg-config --variable=compiler dolfin') # Create a SCons Environment based on the main os environment env = Environment(ENV=os.environ, CXX=compiler) # Get compiler flags from pkg-config env.ParseConfig('pkg-config --cflags --libs dolfin') # Code generation is not this robust (yet) env.ParseConfig('echo -Wno-unused-variable') # Enable no optimization env.ParseConfig('echo -g -O0') # Program name env.Program('demo', glob.glob("*.cpp") + glob.glob("generated_code/*.cpp")) syfi-1.0.0.dfsg.orig/sandbox/demo/HarmonicMap/cpp/Makefile0000644000175000017500000000103111672223006023217 0ustar johannrjohannr FLAGS=--integration-method=symbolic #FLAGS=--integration-method=quadrature --integration-order=3 --safemode=0 FORM=HarmonicMap demo: main.cpp generated_code/$(FORM).h scons -j3 generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -ogenerated_code $(FORM).ufl generate: clean demo bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl view: run paraview --data=x.pvd & paraview --data=y.pvd & run: demo rm -f *.pvd *.vtu ./demo debug: demo gdb ./demo clean: rm -f *.pvd *.vtu rm -rf demo generated_code *.o rm -f *.pyc syfi-1.0.0.dfsg.orig/sandbox/demo/HarmonicMap/cpp/main.cpp0000644000175000017500000000545311672223006023223 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-04-08 // Last changed: 2009-04-08 // // This demo program solves the harmonic map problem in 2D. #include #include #include "generated_code/HarmonicMap.h" using namespace dolfin; using namespace HarmonicMap; class Value: public Function { public: Value(const FunctionSpace & V): Function(V) {} void eval(double* values, const double* x) const { values[0] = 1.0; } }; class Solution: public Function { public: Solution(const FunctionSpace & V): Function(V) {} void eval(double* values, const double* x) const { double dx = x[0]-0.5; double dy = x[1]-0.5; double r = sqrt(dx*dx + dy*dy); if(r == 0) { values[0] = 1.0; values[1] = 1.0; values[2] = 1.0; warning("Singularity."); } values[0] = 1.0*dx/r; values[1] = 1.0*dy/r; values[2] = 1.0; } }; class BoundaryValue: public Function { public: BoundaryValue(const FunctionSpace & V): Function(V) {} void eval(double* values, const double* x) const { double dx = x[0]-0.5; double dy = x[1]-0.5; double r = sqrt(dx*dx + dy*dy); if(r == 0) { values[0] = 1.0; values[1] = 1.0; warning("Singularity."); } values[0] = dx/r; values[1] = dy/r; } }; class DirichletBoundary: public SubDomain { public: bool inside(const double* x, bool on_boundary) const { return on_boundary; } }; int main(int argc, char ** argv) { int n = 11; UnitSquare mesh(n, n); BilinearForm::TrialSpace V(mesh); //CoefficientSpace_x X(mesh); //CoefficientSpace_y Y(mesh); SubSpace X(V, 0); SubSpace Y(V, 1); Function u(V); Solution usol(V); usol.interpolate(u.vector(), V); BilinearForm a(V, V); LinearForm L(V); a.u = u; L.u = u; DirichletBoundary boundary; BoundaryValue ubc(X); DirichletBC bc(X, ubc, boundary); VariationalProblem problem(a, L, bc, true); problem.solve(u); Function x = u[0]; Function y = u[1]; File xfile("x.pvd"); xfile << x; File yfile("y.pvd"); yfile << y; //plot(x); //plot(y); } syfi-1.0.0.dfsg.orig/sandbox/demo/HarmonicMap/cpp/HarmonicMap.ufl0000644000175000017500000000072311672223006024474 0ustar johannrjohannr# # Harmonic map demo using automatic differentiation. # cell = triangle xfe = VectorElement('CG', cell, 1) lfe = FiniteElement('CG', cell, 1) mfe = xfe + lfe vv = TestFunction(mfe) uu = TrialFunction(mfe) #x = Function(xfe) #y = Function(lfe) u = Function(mfe) x, y = split(u) L = inner(grad(x), grad(x))*dx + dot(x,x)*y*dx #F = derivative(L, (x,y), vv) #J = derivative(F, (x,y), uu) F = derivative(L, u, vv) J = derivative(F, u, uu) forms = [L, F, J] syfi-1.0.0.dfsg.orig/sandbox/demo/ElectroMechanics/0000755000175000017500000000000011674103625022022 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/sandbox/demo/ElectroMechanics/cpp/0000755000175000017500000000000011672223006022576 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/sandbox/demo/ElectroMechanics/cpp/subdomains.h0000644000175000017500000000261611672223006025120 0ustar johannrjohannr#ifndef SUBDOMAINS_H #define SUBDOMAINS_H #include const double eps = DOLFIN_EPS; class DomainXY0: public SubDomain { public: bool inside(const double* x, bool on_boundary) const { return x[0] < eps && x[1] < eps; } }; class DomainXYZ0: public SubDomain { public: bool inside(const double* x, bool on_boundary) const { return x[0] < eps && x[1] < eps && x[2] < eps; } }; class Side0: public SubDomain { int side; double value; public: Side0(int side, double value): side(side), value(value) {} bool inside(const double* x, bool on_boundary) const { return x[side] < value + eps; } }; class Side1: public SubDomain { int side; double value; public: Side1(int side, double value): side(side), value(value) {} bool inside(const double* x, bool on_boundary) const { return x[side] > value - eps; } }; class PressureBoundary: public SubDomain { bool inside(const double* x, bool on_boundary) const { //return (x[0] < eps) || (x[0] > 1.0-eps) || (x[1] < eps) || (x[1] > 1.0-eps) || (x[2] < eps) || (x[2] > 1.0-eps); return false; } }; class DirichletBoundary: public SubDomain { bool inside(const double* x, bool on_boundary) const { //return x[0] < DOLFIN_EPS || x[0] > 1.0-DOLFIN_EPS; return (x[0] < eps) || (x[0] > 1.0-eps) || (x[1] < eps) || (x[1] > 1.0-eps) || (x[2] < eps) || (x[2] > 1.0-eps); } }; #endif syfi-1.0.0.dfsg.orig/sandbox/demo/ElectroMechanics/cpp/fibers.h0000644000175000017500000000411111672223006024216 0ustar johannrjohannr#ifndef FIBERS_H #define FIBERS_H #include #include class FiberFieldBase: public Function { protected: double theta, phi; double ct, st, cp, sp; public: FiberFieldBase(const FunctionSpace & V, double theta, double phi): Function(V), theta(theta), phi(phi) { ct = cos(theta); st = sin(theta); cp = cos(phi); sp = sin(phi); } }; class FiberField_f: public FiberFieldBase { public: FiberField_f(const FunctionSpace & V, double theta, double phi): FiberFieldBase(V, theta, phi) {} void eval(double* values, const double* x) const { // Fiber direction values[0] = ct; values[1] = st; values[2] = 0; } }; class FiberField_s: public FiberFieldBase { public: FiberField_s(const FunctionSpace & V, double theta, double phi): FiberFieldBase(V, theta, phi) {} void eval(double* values, const double* x) const { // Sheet direction values[0] = -st; values[1] = ct; values[2] = 0; } }; class FiberField_n: public FiberFieldBase { public: FiberField_n(const FunctionSpace & V, double theta, double phi): FiberFieldBase(V, theta, phi) {} void eval(double* values, const double* x) const { double v[6]; // Fiber direction v[0] = ct; v[1] = st; v[2] = 0; // Sheet direction v[3] = -st; v[4] = ct; v[5] = 0; // Sheet normal direction values[0] = v[1]*v[5] - v[2]*v[4]; values[1] = -v[5]*v[0] + v[2]*v[3]; values[2] = v[0]*v[4] - v[1]*v[3]; } }; class FiberField: public FiberFieldBase { public: FiberField(const FunctionSpace & V, double theta, double phi): FiberFieldBase(V, theta, phi) {} void eval(double* values, const double* x) const { // Fiber direction values[0] = ct; values[1] = st; values[2] = 0; // Sheet direction values[3] = -st; values[4] = ct; values[5] = 0; // Sheet normal direction values[6] = values[1]*values[5] - values[2]*values[4]; values[7] = -values[5]*values[0] + values[2]*values[3]; values[8] = values[0]*values[4] - values[1]*values[3]; } }; #endif syfi-1.0.0.dfsg.orig/sandbox/demo/ElectroMechanics/cpp/functions.h0000644000175000017500000000254111672223006024761 0ustar johannrjohannr#ifndef FUNCTIONS_H #define FUNCTIONS_H #include class Value3D: public Function { public: Value3D(const FunctionSpace & V, double xv, double yv, double zv): Function(V), xv(xv), yv(yv), zv(zv) {} void eval(double* values, const double* x) const { values[0] = xv; values[1] = yv; values[2] = zv; } double xv, yv, zv; }; class Value: public Function { public: Value(const FunctionSpace & V, double value): Function(V), value(value) {} void eval(double* values, const double* x) const { values[0] = value; } double value; }; class BoundaryPressure: public Function { public: BoundaryPressure(const FunctionSpace & V): Function(V) {} void eval(double* values, const double* x) const { values[0] = 0.0; } }; /* const double dx = x[0] - 0.5; const double dy = x[1] - 0.5; const double dz = x[2] - 0.5; */ class BodyForce: public Function { public: BodyForce(const FunctionSpace & V): Function(V) {} void eval(double* values, const double* x) const { values[0] = 0.0; values[1] = 0.0; values[2] = 0.0; } }; class Displacement: public Function { public: Displacement(const FunctionSpace & V): Function(V) {} void eval(double* values, const double* x) const { values[0] = 0.0; values[1] = 0.0; values[2] = 0.0; } }; #endif syfi-1.0.0.dfsg.orig/sandbox/demo/ElectroMechanics/cpp/testruns.py0000644000175000017500000000311411672223006025036 0ustar johannrjohannr from dolfin_utils.pjobs import submit # Defaults from main.cpp: theta = 0 sigma_0 = 15 K = 0.876 C_compr = 10.0 bff = 18.48 bfx = 3.58 bxx = 2.8 # Variations we want to test: theta_values = (0, 22.5, 45, 77.5, 90) sigma_0_values = (5, 15, 45) C_compr_values = (1, 3, 10, 20, 50, 100) bff_values = tuple(bff*s for s in (0.8, 1.0, 1.2)) bfx_values = tuple(bfx*s for s in (0.8, 1.0, 1.2)) bxx_values = tuple(bxx*s for s in (0.8, 1.0, 1.2)) # A smaller set for testing: theta_values = (0,) sigma_0_values = (15,) C_compr_values = (10,) bff_values = (bff,) bfx_values = (bfx,) bxx_values = (bxx,) # Queue all jobs! appname = "demo" names = [] jobs = [] for theta in theta_values: for sigma_0 in sigma_0_values: for C_compr in C_compr_values: for bff in bff_values: for bfx in bfx_values: for bxx in bxx_values: parameters = [\ ("theta", theta), ("sigma_0", sigma_0), ("C_compr", C_compr), ("bff", bff), ("bfx", bfx), ("bxx", bxx), ] name = "%s__%s" % (appname, "__".join("%s_%s" % (a, b) for (a, b) in parameters)) cmd = "./%s %s" % (appname, " ".join("--%s=%s" % (a, b) for (a, b) in parameters)) jobs.append(cmd) names.append(name) submit(jobs, name=names, nodes=1, ppn=8, walltime=24) syfi-1.0.0.dfsg.orig/sandbox/demo/ElectroMechanics/cpp/SConstruct0000644000175000017500000000140111672223006024624 0ustar johannrjohannr# This is an example of a simple SConstruct file for building # programs against DOLFIN. To build this demo, just type 'scons'. import os, glob, commands # Get compiler from pkg-config compiler = commands.getoutput('pkg-config --variable=compiler dolfin') # Create a SCons Environment based on the main os environment env = Environment(ENV=os.environ, CXX=compiler) # Get compiler flags from pkg-config env.ParseConfig('pkg-config --cflags --libs dolfin') # Code generation is not this robust (yet) env.ParseConfig('echo -Wno-unused-variable') # Enable no optimization env.ParseConfig('echo -g -O0') # Add boost libraries env.ParseConfig('echo -lboost_program_options') # Program name env.Program('demo', glob.glob("*.cpp") + glob.glob("generated_code/*.cpp")) syfi-1.0.0.dfsg.orig/sandbox/demo/ElectroMechanics/cpp/Makefile0000644000175000017500000000112511672223006024235 0ustar johannrjohannr FLAGS=--integration-method=quadrature --integration-order=9 --safemode=0 FORM=ElectroMechanics demo: main.cpp *.h generated_code/$(FORM).h scons -j3 generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -ogenerated_code $(FORM).ufl generate: clean demo bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl view: run paraview --data=u.pvd & paraview --data=usol.pvd & paraview --data=e.pvd & fibers: demo ./demo --theta=22.5 paraview --data=A.pvd & run: demo rm -f *.pvd *.vtu ./demo debug: demo gdb ./demo clean: rm -f *.pvd *.vtu rm -rf demo generated_code *.o rm -f *.pyc syfi-1.0.0.dfsg.orig/sandbox/demo/ElectroMechanics/cpp/run.sh0000755000175000017500000000035111672223006023740 0ustar johannrjohannr#!/bin/bash BC='--stretch=0.01 --fullbc=false' MATERIAL='--theta=45' INIT='--skipsvk=false' TIME='--rho=1 --dt=1 --beta=0' MESH='--nx=8 --ny=8 --nz=8' PARAMS=$TIME' '$MESH' '$INIT' '$BC' '$MATERIAL echo ./demo $PARAMS ./demo $PARAMS syfi-1.0.0.dfsg.orig/sandbox/demo/ElectroMechanics/cpp/ElectroMechanics.ufl0000644000175000017500000000715211672223006026523 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-12-22 -- 2009-03-23 # # Cell and its properties cell = tetrahedron d = cell.d n = cell.n x = cell.x # Elements u_element = VectorElement("CG", cell, 1) p_element = FiniteElement("CG", cell, 1) A_element = TensorElement("DG", cell, 0) # Test and trial functions v = TestFunction(u_element) w = TrialFunction(u_element) # --- Displacement at current and two previous timesteps u = Function(u_element) up = Function(u_element) upp = Function(u_element) # --- Time parameters dt = Constant(cell) beta = Constant(cell) # Turn acceleration term on/off by setting this to 1/0 # --- External forces # Body force g = Function(u_element) sigma_0 = Function(p_element) # --- Material parameters # Fiber field A = Function(A_element) # Material density rho = Constant(cell) # Fung parameters K = Constant(cell) C_compr = Constant(cell) bff = Constant(cell) bfx = Constant(cell) bxx = Constant(cell) # SVK material parameters lamda = Constant(cell) mu = Constant(cell) # --- Time stepping terms # Time stepping parameter to multiply other terms with k = dt**2 / rho # Acceleration term discretized with finite differences a = u - 2*up + upp # --- Deformation gradient terms I = Identity(d) F = I + grad(u).T F = variable(F) Finv = inv(F) J = det(F) # --- Strain terms # Left Cauchy-Green deformation tensor #B = F*F.T #I1_B = tr(B) #I2_B = (I1_B**2 - tr(B*B))/2 #I3_B = J**2 # Right Cauchy-Green deformation tensor C = F.T*F #I1_C = tr(C) #I2_C = (I1_C**2 - tr(C*C))/2 #I3_C = J**2 # Green strain tensor E = (C-I)/2 E = variable(E) # --- Fung based equation # Mapping of strain in fiber directions Ef = A*E*A.T # Strain energy function psi(Q(Ef)) Q = bff * Ef[0,0]**2 + \ bxx * (Ef[1,1]**2 + Ef[2,2]**2 + Ef[1,2]**2 + Ef[2,1]**2) + \ bfx * (Ef[0,1]**2 + Ef[0,2]**2 + Ef[1,0]**2 + Ef[2,0]**2) psi = (K/2)*(exp(Q) - 1) + C_compr * (J*ln(J) - J + 1) # First Piola-Kirchoff stress tensor P = diff(psi, F) # Alternative: #S = 2*diff(psi, C) #P = F*S # Active forces TODO: Define nonzero active forces S_a = 0*I P_a = F*S_a # Energy functional (without acceleration term and external forces) a_f = psi*dx # Residual equation # FIXME: Correct signs here? FIXME: When switching the second and third term, UFL fails! a_F = beta*dot(a, v)*dx\ + k*inner(P + P_a, grad(v))*dx\ - k*dot(g, v)*dx\ - k*dot(J*sigma_0*Finv.T*n, v)*ds # Jacobi matrix of residual equation a_J = derivative(a_F, u, w) # DOLFIN Newton solver expects "J" and "F" for the # system "J du = -F", so we won't flip the sign here #a_F = -a_F ## --- Invariants of C #J2 = J**2 # det(C) #I1 = tr(C) #I2 = (I1**2 - inner(C,C)**2)/2 #I3 = J2 # ## --- Mooney-Rivlin constitutive law #psi = c_1*(I1-3) + c2*(I2-3) # ## --- Neo-Hookean constitutive law #psi = c1*(I1-3) # --- SVK based equation # Strain energy function psi(Q(Ef)), Saint Vernant-Kirchoff law psi_svk = lamda/2 * tr(E)**2 + mu * inner(E, E) # First Piola-Kirchoff stress tensor P_svk = F*diff(psi_svk, E) # Energy functional (without acceleration term and external forces) a_f_svk = psi_svk*dx # Residual equation # FIXME: Correct signs here? FIXME: When switching the second and third term of the Fung law, UFL fails! For SVK too? a_F_svk = beta*dot(a, v)*dx\ + k*inner(P_svk, grad(v))*dx\ - k*dot(g, v)*dx\ - k*dot(J*sigma_0*Finv.T*n, v)*ds a_J_svk = derivative(a_F_svk, u, w) # DOLFIN Newton solver expects "J" and "F" for the # system "J du = -F", so we won't flip the sign here #a_F_svk = -a_F_svk # --- TODO: Add some forms for computing stress and strain from a solution forms = [a_f, a_F, a_J, a_f_svk, a_F_svk, a_J_svk] syfi-1.0.0.dfsg.orig/sandbox/demo/ElectroMechanics/cpp/main.cpp0000644000175000017500000003126611672223006024236 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-01-01 // Last changed: 2009-04-01 // // This demo program solves a simplified electromechanics problem. #include #include using std::cout; using std::endl; #include namespace po = boost::program_options; #include using dolfin::message; using dolfin::Function; using dolfin::MeshFunction; using dolfin::FunctionSpace; using dolfin::SubSpace; using dolfin::SubDomain; using dolfin::uint; using dolfin::UnitCube; using dolfin::DirichletBC; using dolfin::BoundaryCondition; using dolfin::pointwise; using dolfin::VariationalProblem; using dolfin::Vector; using dolfin::Matrix; using dolfin::File; #include "generated_code/ElectroMechanics.h" using namespace ElectroMechanics; #include "subdomains.h" #include "functions.h" #include "fibers.h" const double pi = DOLFIN_PI; int main(int argc, char**argv) { // Application options po::options_description desc("Options allowed:"); po::variables_map vm; { desc.add_options() ("help", "Produce this help message.") ("nx", po::value()->default_value(5), "Number of cells in x direction.") ("ny", po::value()->default_value(5), "Number of cells in y direction.") ("nz", po::value()->default_value(5), "Number of cells in z direction.") ("Lx", po::value()->default_value(1), "Domain length in x direction.") ("Ly", po::value()->default_value(1), "Domain length in y direction.") ("Lz", po::value()->default_value(1), "Domain length in z direction.") ("theta,t", po::value()->default_value(0), "Fiber angle in x-y plane.") ("phi,p", po::value()->default_value(0), "Fiber angle in (xy)-z plane. DISABLED!") ("dt", po::value()->default_value(1), "Time step.") ("beta", po::value()->default_value(1), "Acceleration term switch (1/0). NB! If you set this to 0, set dt=1 and rho=1.") ("T", po::value()->default_value(1), "Max time. NOT USED.") ("skipsvk", po::value()->default_value(false), "Skip SVK solution.") ("fullbc", po::value()->default_value(false), "Set all components of u to 0 on all of x=0.") ("stretch", po::value()->default_value(0.01), "Displacement of u in x direction at x=1.") ("sigma_0", po::value()->default_value(0), "Boundary pressure (kPa).") ("lamda", po::value()->default_value(1), "TODO: Defaults. Material parameter.") ("mu", po::value()->default_value(1), "TODO: Defaults. Material parameter.") ("rho", po::value()->default_value(1), "Material parameter.") ("K", po::value()->default_value(0.876), "Material parameter (kPa).") ("C_compr", po::value()->default_value(10.0), "Material parameter (kPa).") ("bff", po::value()->default_value(18.48), "Material parameter.") ("bfx", po::value()->default_value(3.58), "Material parameter.") ("bxx", po::value()->default_value(2.8), "Material parameter.") ; po::store(po::parse_command_line(argc, argv, desc), vm); po::notify(vm); if(vm.count("help")) { cout << desc << endl; return 1; } } // Geometry message("Mesh"); double Lx = vm["Lx"].as(); double Ly = vm["Ly"].as(); double Lz = vm["Lz"].as(); unsigned nx = vm["nx"].as(); unsigned ny = vm["ny"].as(); unsigned nz = vm["nz"].as(); UnitCube mesh(nx, ny, nz); // Boundaries message("Boundaries"); MeshFunction sides(mesh, mesh.geometry().dim()-1); sides = 1001; Side0 x0_domain(0, 0.0); Side1 x1_domain(0, Lx); Side0 y0_domain(1, 0.0); Side1 y1_domain(1, Ly); Side0 z0_domain(2, 0.0); Side1 z1_domain(2, Lz); unsigned x0_marker = 10; unsigned x1_marker = 11; unsigned y0_marker = 20; unsigned y1_marker = 21; unsigned z0_marker = 30; unsigned z1_marker = 31; x0_domain.mark(sides, x0_marker); x1_domain.mark(sides, x1_marker); y0_domain.mark(sides, y0_marker); y1_domain.mark(sides, y1_marker); z0_domain.mark(sides, z0_marker); z1_domain.mark(sides, z1_marker); // Boundary condition markers unsigned pressure_boundary_marker = 0; //unsigned dirichlet_boundary_marker = 1; // Meshfunction to hold all boundary markers MeshFunction boundaries(mesh, mesh.geometry().dim()-1); boundaries = sides; // Set pressure boundary marker at x=1 //for(unsigned i=0; i()); Value beta(C, vm["beta"].as()); double T = vm["T"].as(); // Fiber field double theta = vm["theta"].as() * pi / 180.0; double phi = vm["phi"].as() * pi / 180.0; FiberField A(Q, theta, phi); // Write rows of A to vector field files if(true) { File A_file("A.pvd"); FiberField_f Af(V, theta, phi); FiberField_s As(V, theta, phi); FiberField_n An(V, theta, phi); //A_file << A; // For some reason doesn't work? A_file << Af; A_file << As; A_file << An; } // External forces BodyForce g(V); //BoundaryPressure sigma_0(P); Value sigma_0(P, vm["sigma_0"].as()); // Material parameters Value rho(C, vm["rho"].as()); Value lamda(C, vm["lamda"].as()); Value mu(C, vm["mu"].as()); Value K(C, vm["K"].as()); Value C_compr(C, vm["C_compr"].as()); Value bff(C, vm["bff"].as()); Value bfx(C, vm["bfx"].as()); Value bxx(C, vm["bxx"].as()); // Analytical manufactured solution Displacement usol(V); // Attach coefficients to forms CoefficientSet coeffs; coeffs.u = u; coeffs.up = up; coeffs.upp = upp; coeffs.dt = dt; coeffs.beta = beta; coeffs.A = A; coeffs.g = g; coeffs.sigma_0 = sigma_0; coeffs.rho = rho; coeffs.lamda = lamda; coeffs.mu = mu; coeffs.K = K; coeffs.C_compr = C_compr; coeffs.bff = bff; coeffs.bfx = bfx; coeffs.bxx = bxx; // Forms message("Forms"); Form_a_f f(coeffs); Form_a_F L(V, coeffs); Form_a_J a(V, V, coeffs); Form_a_f_svk f_svk(coeffs); Form_a_F_svk L_svk(V, coeffs); Form_a_J_svk a_svk(V, V, coeffs); // Setup boundary conditions message("Boundary conditions"); // ux = 0 at x=0 SubSpace Vx(V, 0); Value ux0(Vx, 0.0); // DirichletBC bc0(Vx, ux0, boundaries, x0_marker); DirichletBC bc0(Vx, ux0, x0_domain, pointwise); // uy = 0 at x=0 union y=0 DomainXY0 xy0_domain; SubSpace Vy(V, 1); Value uy0(Vy, 0.0); DirichletBC bc1(Vy, uy0, xy0_domain, pointwise); // uz = 0 at x=0 union y=0 union z=0 DomainXYZ0 xyz0_domain; SubSpace Vz(V, 2); Value uz0(Vz, 0.0); DirichletBC bc2(Vz, uz0, xyz0_domain, pointwise); // u = u0 at x=0 Value3D u0(V, 0.0, 0.0, 0.0); // DirichletBC bc3(V, u0, boundaries, x0_marker); DirichletBC bc3(V, u0, x0_domain, pointwise); // ux = stretch, uy = uz = 0, at x=1 Value3D u1(V, vm["stretch"].as(), 0.0, 0.0); // DirichletBC bc4(V, u1, boundaries, x1_marker); DirichletBC bc4(V, u1, x1_domain, pointwise); // collect DBCs for variational problem std::vector bcs; if(vm["fullbc"].as()) { // minimal DBC at x=0 bcs.push_back(&bc0); bcs.push_back(&bc1); bcs.push_back(&bc2); } else { // full DBC at x=0 bcs.push_back(&bc3); } // full DBC at x=1 bcs.push_back(&bc4); // Create variational problem (a, L, bcs, cell_domains, exterior_facet_domains, interior_facet_domains, nonlinear) message("Variational problem"); VariationalProblem problem_svk(a_svk, L_svk, bcs, 0, &boundaries, 0, true); VariationalProblem problem(a, L, bcs, 0, &boundaries, 0, true); // Compute and show linear system if(false) { message("================================================================================"); message("Printing linear system"); Matrix J; problem.J(J, u.vector()); J.disp(); Vector F; problem.F(F, u.vector()); F.disp(); message("================================================================================"); } // Solve! // Use zero as initial condition for the first nonlinear solve u.vector().zero(); bool skipsvk = vm["skipsvk"].as(); if(!skipsvk) { message("Solving SVK"); problem_svk.set("linear solver", "direct"); problem_svk.solve(u); File u_svk_file("u_svk.pvd"); u_svk_file << u; } // Use SVK solution as initial condition if it is computed message("Solving Fung"); problem.set("linear solver", "direct"); problem.solve(u); File ufile("u.pvd"); ufile << u; // Postprocessing message("Postprocessing"); // Interpolate usol Function usol_h(V); usol.interpolate(usol_h.vector(), V); File usolfile("usol.pvd"); usolfile << usol_h; // Compute functional value of u and exact solution f.u = u; double f_value = assemble(f); f.u = usol_h; double f_value2 = assemble(f); // Print limits of u if(true) { cout << endl; cout << "==========================" << endl; cout << "Norm of u_h = " << u.vector().norm() << endl; cout << "Min of u_h = " << u.vector().min() << endl; cout << "Max of u_h = " << u.vector().max() << endl; cout << endl; cout << "Norm of u_e = " << usol_h.vector().norm() << endl; cout << "Min of u_e = " << usol_h.vector().min() << endl; cout << "Max of u_e = " << usol_h.vector().max() << endl; cout << endl; cout << "f(u) = " << f_value << endl; cout << "f(u_exact) = " << f_value2 << endl; cout << "(u_exact is not correct)" << endl; cout << "==========================" << endl; } // Compute F at u for verification if(true) { Vector F; problem.F(F, u.vector()); cout << endl; cout << "==========================" << endl; cout << "Norm of F = " << F.norm() << endl; cout << "Min of F = " << F.min() << endl; cout << "Max of F = " << F.max() << endl; cout << "==========================" << endl; } // Compute e_h = usol_h - u if(false) { Function e_h(V); e_h.vector() = u.vector(); e_h.vector() -= usol_h.vector(); File efile("e.pvd"); efile << e_h; cout << endl; cout << "==========================" << endl; cout << "Norm of e_h = " << e_h.vector().norm() << endl; cout << "Min of e_h = " << e_h.vector().min() << endl; cout << "Max of e_h = " << e_h.vector().max() << endl; cout << "==========================" << endl; } //plot(w); message("Done!"); } syfi-1.0.0.dfsg.orig/sandbox/demo/DivMatrix/0000755000175000017500000000000011674103625020521 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/sandbox/demo/DivMatrix/cpp/0000755000175000017500000000000011672223006021275 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/sandbox/demo/DivMatrix/cpp/DivMatrix.ufl0000644000175000017500000000026611672223006023720 0ustar johannrjohannr polygon = "triangle" element1 = VectorElement("CG", polygon, 2) element2 = FiniteElement("CG", polygon, 1) u = TrialFunction(element1) q = TestFunction(element2) a = div(u)*q*dx syfi-1.0.0.dfsg.orig/sandbox/demo/DivMatrix/cpp/SConstruct0000644000175000017500000000120311672223006023323 0ustar johannrjohannr# This is an example of a simple SConstruct file for building # programs against DOLFIN. To build this demo, just type 'scons'. import os, glob, commands # Get compiler from pkg-config compiler = commands.getoutput('pkg-config --variable=compiler dolfin') # Create a SCons Environment based on the main os environment env = Environment(ENV=os.environ, CXX=compiler) # Get compiler flags from pkg-config env.ParseConfig('pkg-config --cflags --libs dolfin') # Generated code is not this robust (yet) env.ParseConfig('echo -Wno-unused-variable -g') # Program name env.Program('demo', glob.glob("*.cpp") + glob.glob("generated_code/*.cpp")) syfi-1.0.0.dfsg.orig/sandbox/demo/DivMatrix/cpp/Makefile0000644000175000017500000000076311672223006022743 0ustar johannrjohannr FLAGS=--integration-method=symbolic #FLAGS=--integration-method=quadrature --integration-order=3 FORM=DivMatrix demo: main.cpp generated_code/$(FORM).h scons -j3 generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -ogenerated_code $(FORM).ufl generate: clean demo bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl run: demo rm -f *.pvd *.vtu ./demo view: run paraview --data=u.pvd & debug: demo gdb ./demo clean: rm -f *.pvd *.vtu rm -rf demo generated_code *.o rm -f *.pyc syfi-1.0.0.dfsg.orig/sandbox/demo/DivMatrix/cpp/main.cpp0000644000175000017500000000220611672223006022725 0ustar johannrjohannr// Copyright (C) 2009 Kent-Andre Mardal // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // Modified by Martin Alnæs 2009. // // First added: 2009-01-01 // Last changed: 2009-04-01 // // This demo program computes the divergence matrix. #include #include "generated_code/DivMatrix.h" using namespace dolfin; using namespace DivMatrix; int main() { UnitSquare mesh(1, 1); BilinearForm::TrialSpace V(mesh); BilinearForm::TestSpace Q(mesh); BilinearForm a(Q, V); Matrix A; assemble(A, a); A.disp(); return 0; } syfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticityModels/0000755000175000017500000000000011674103625023100 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticityModels/cpp/0000755000175000017500000000000011672223006023654 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticityModels/cpp/HyperElasticity.ufl0000644000175000017500000000567611672223006027524 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-12-22 -- 2009-03-05 # #include Law.ufl #include Cell.ufl # Elements u_element = VectorElement("CG", cell, 1) A_element = TensorElement("DG", cell, 0) # Test and trial functions v = TestFunction(u_element) w = TrialFunction(u_element) # --- Displacement u = Function(u_element) # --- Material parameters # Neo-Hookean material parameters c1_nh = Constant(cell) # Mooney-Rivlin material parameters c1 = Constant(cell) c2 = Constant(cell) # SVK material parameters lamda = Constant(cell) mu = Constant(cell) # Fiber field A = Function(A_element) # Fung parameters K = Constant(cell) C_compr = Constant(cell) bff = Constant(cell) bfx = Constant(cell) bxx = Constant(cell) # --- Deformation gradient terms I = Identity(cell.d) F = I + grad(u).T F = variable(F) Finv = inv(F) J = det(F) # --- Strain terms # Left Cauchy-Green deformation tensor B = F*F.T I_B = tr(B) II_B = (I_B**2 - tr(B*B))/2 III_B = J**2 # Right Cauchy-Green deformation tensor C = F.T*F I_C = tr(C) II_C = (I_C**2 - tr(C*C))/2 III_C = J**2 # Green strain tensor E = (C-I)/2 E = variable(E) # --- Debugging constitutive law if law == "D": psi = c1_nh*F[0,0]**2 # --- Neo-Hookean constitutive law if law == "NH": psi = c1_nh*(I_C-3) # --- Mooney-Rivlin constitutive law if law == "MR": psi = c1*(I_C-3) + c2*(II_C-3) # --- Saint Vernant-Kirchoff constitutive law if law == "SVK": # Strain energy function psi(Q(Ef)), Saint Vernant-Kirchoff law psi = lamda/2 * tr(E)**2 + mu * inner(E, E) # --- Fung based equation if law == "Fung": # Mapping of strain in fiber directions Ef = A*E*A.T # Strain energy function psi(Q(Ef)) Q = bff * Ef[0,0]**2 + \ bxx * (Ef[1,1]**2 + Ef[2,2]**2 + Ef[1,2]**2 + Ef[2,1]**2) + \ bfx * (Ef[0,1]**2 + Ef[0,2]**2 + Ef[1,0]**2 + Ef[2,0]**2) psi = (K/2)*(exp(Q) - 1) + C_compr * (J*ln(J) - J + 1) # --- Generic hyperelasticity equations # First Piola-Kirchoff stress tensor P = diff(psi, F) # Residual equation a_F = inner(P, grad(v).T)*dx # Jacobi matrix of residual equation a_J = derivative(a_F, u, w) # --- Generic equations computed using two levels of automatic differentiation: # Energy functional (without acceleration term and external forces) b_f = psi*dx # Residual equation b_F = derivative(b_f, u, v) # Residual equation b_J = derivative(b_F, u, w) # --- Generic equations computed using expressions # differentiated by hand and index notation: i, j, k, l, r, s, q, p = indices(8) # Residual equation c_F = P[k,l] * v[l].dx(k) * dx # Jacobi matrix of residual equation tmp = diff(psi, F)[k,l] tmp2 = diff(tmp, F)[r,s] c_J = tmp2 * w[s].dx(r) * v[l].dx(k) * dx # --- Export forms and functions forms = [a_F, a_J, b_F, b_J, c_F, c_J] functions = [u, A, c1_nh, c1, c2, lamda, mu, K, C_compr, bff, bfx, bxx] syfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticityModels/cpp/Law.ufl0000644000175000017500000000007711672223006025113 0ustar johannrjohannr #law = "D" #law = "NH" #law = "MR" #law = "SVK" law = "Fung" syfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticityModels/cpp/SConstruct0000644000175000017500000000127211672223006025710 0ustar johannrjohannr# This is an example of a simple SConstruct file for building # programs against DOLFIN. To build this demo, just type 'scons'. import os, glob, commands # Get compiler from pkg-config compiler = commands.getoutput('pkg-config --variable=compiler dolfin') # Create a SCons Environment based on the main os environment env = Environment(ENV=os.environ, CXX=compiler) # Get compiler flags from pkg-config env.ParseConfig('pkg-config --cflags --libs dolfin') # Code generation is not this robust (yet) env.ParseConfig('echo -Wno-unused-variable') # Enable no optimization env.ParseConfig('echo -g -O0') # Program name env.Program('demo', glob.glob("*.cpp") + glob.glob("generated_code/*.cpp")) syfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticityModels/cpp/Makefile0000644000175000017500000000100411672223006025307 0ustar johannrjohannr #FLAGS=--integration-method=symbolic FLAGS=--integration-method=quadrature --integration-order=9 --safemode=0 FORM=HyperElasticity demo: main.cpp generated_code/$(FORM).h scons -j3 generated_code/$(FORM).h: $(FORM).ufl Law.ufl Cell.ufl sfc -w1 $(FLAGS) -ogenerated_code $(FORM).ufl generate: clean demo rerun: clean run bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl run: demo #rm -f *.pvd *.vtu ./demo debug: demo gdb ./demo clean: rm -f *.pvd *.vtu rm -rf demo generated_code *.o rm -f *.pyc syfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticityModels/cpp/main.cpp0000644000175000017500000001327211672223006025311 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-05-05 // Last changed: 2009-05-05 // // This program assembles linear systems for different definitions // of forms that are supposed to be equal, for comparing and debugging. #include #include #include "generated_code/HyperElasticity.h" using dolfin::Function; using dolfin::FunctionSpace; using dolfin::uint; using dolfin::UnitCube; using dolfin::UnitSquare; using dolfin::VariationalProblem; using dolfin::Vector; using dolfin::Matrix; using dolfin::File; using namespace HyperElasticity; using std::cout; using std::endl; // ---------------------------------------- Functions class Value: public Function { public: Value(const FunctionSpace & V, double value): Function(V), value(value) {} void eval(double* values, const double* x) const { values[0] = value; } double value; }; class Fibers: public Function { public: int d; Fibers(const FunctionSpace & V): Function(V), d(V.mesh().geometry().dim()) {} void eval(double* values, const double* x) const { if(d == 1) { values[0] = 1; } if(d == 2) { values[0] = 1; values[1] = 0; values[2] = 0; values[3] = 1; } if(d == 3) { values[0] = 1; values[1] = 0; values[2] = 0; values[3] = 0; values[4] = 1; values[5] = 0; values[6] = 0; values[7] = 0; values[8] = 1; } } double value; }; double norm(Matrix & A) { double sum = 0.0; std::vector columns; std::vector values; for(unsigned i=0; i 1e-12) sum += tmp; } if(sum < 1e-20) sum = 0.0; return sum; } // ---------------------------------------- Main program int main(int argc, char**argv) { // Geometry unsigned n = 1; UnitCube mesh(n, n, n); //UnitSquare mesh(n, n); // Function spaces Form_a_F::TestSpace V(mesh); // CoefficientSpace_c1_nh C(mesh); // CoefficientSpace_mu C(mesh); CoefficientSpace_K C(mesh); CoefficientSpace_A Q(mesh); // Material parameters Value c1_nh(C, 1.0); Value c1(C, 1.0); Value c2(C, 1.0); Value mu(C, 1.0); Value lamda(C, 1.0); Value K(C, 1.0); Value C_compr(C, 1.0); Value bff(C, 1.0); Value bfx(C, 1.0); Value bxx(C, 1.0); Fibers A(Q); // Displacement at current and two previous timesteps Function u(V); u.vector().zero(); // Collect coefficients CoefficientSet coeffs; coeffs.u = u; //coeffs.c1_nh = c1_nh; //coeffs.c1 = c1; //coeffs.c2 = c2; //coeffs.lamda = lamda; //coeffs.mu = mu; coeffs.K = K; coeffs.C_compr = C_compr; coeffs.bff = bff; coeffs.bfx = bfx; coeffs.bxx = bxx; coeffs.A = A; // a version Form_a_F L_a(V, coeffs); Form_a_J a_a(V, V, coeffs); VariationalProblem problem_a(a_a, L_a, true); Matrix J_a; problem_a.J(J_a, u.vector()); //J_a.disp(); Vector F_a; problem_a.F(F_a, u.vector()); //F_a.disp(); // b version Form_b_F L_b(V, coeffs); Form_b_J a_b(V, V, coeffs); VariationalProblem problem_b(a_b, L_b, true); Matrix J_b; problem_b.J(J_b, u.vector()); //J_b.disp(); Vector F_b; problem_b.F(F_b, u.vector()); //F_b.disp(); // c version Form_c_F L_c(V, coeffs); Form_c_J a_c(V, V, coeffs); VariationalProblem problem_c(a_c, L_c, true); Matrix J_c; problem_c.J(J_c, u.vector()); //J_c.disp(); Vector F_c; problem_c.F(F_c, u.vector()); //F_c.disp(); // dump to files File F_a_file("F_a.m"); F_a_file << F_a; File J_a_file("J_a.m"); J_a_file << J_a; File F_b_file("F_b.m"); F_b_file << F_b; File J_b_file("J_b.m"); J_b_file << J_b; File F_c_file("F_c.m"); F_c_file << F_c; File J_c_file("J_c.m"); J_c_file << J_c; // vector norms cout << "F a = " << F_a.norm() << endl; cout << "F b = " << F_b.norm() << endl; cout << "F c = " << F_c.norm() << endl; // matrix norms cout << "J a = " << norm(J_a) << endl; cout << "J b = " << norm(J_b) << endl; cout << "J c = " << norm(J_c) << endl; // vector diffs Vector F_diff; F_diff = F_a; F_diff -= F_b; cout << "F a - b = " << F_diff.norm() << endl; F_diff = F_a; F_diff -= F_c; cout << "F a - c = " << F_diff.norm() << endl; F_diff = F_b; F_diff -= F_c; cout << "F b - c = " << F_diff.norm() << endl; // matrix diffs Matrix J_diff; J_diff = J_a; J_diff -= J_b; cout << "J a - b = " << norm(J_diff) << endl; //J_diff.disp(); J_diff = J_a; J_diff -= J_c; cout << "J a - c = " << norm(J_diff) << endl; //J_diff.disp(); J_diff = J_b; J_diff -= J_c; cout << "J b - c = " << norm(J_diff) << endl; //J_diff.disp(); } syfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticityModels/cpp/Cell.ufl0000644000175000017500000000012311672223006025237 0ustar johannrjohannr # Cell and its properties #cell = triangle cell = tetrahedron #cell = hexahedron syfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticityFung/0000755000175000017500000000000011674103625022554 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticityFung/cpp/0000755000175000017500000000000011672223006023330 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticityFung/cpp/SConstruct0000644000175000017500000000127211672223006025364 0ustar johannrjohannr# This is an example of a simple SConstruct file for building # programs against DOLFIN. To build this demo, just type 'scons'. import os, glob, commands # Get compiler from pkg-config compiler = commands.getoutput('pkg-config --variable=compiler dolfin') # Create a SCons Environment based on the main os environment env = Environment(ENV=os.environ, CXX=compiler) # Get compiler flags from pkg-config env.ParseConfig('pkg-config --cflags --libs dolfin') # Code generation is not this robust (yet) env.ParseConfig('echo -Wno-unused-variable') # Enable no optimization env.ParseConfig('echo -g -O0') # Program name env.Program('demo', glob.glob("*.cpp") + glob.glob("generated_code/*.cpp")) syfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticityFung/cpp/Makefile0000644000175000017500000000131211672223006024765 0ustar johannrjohannr # 8.7 s: #FLAGS=--integration-method=quadrature --integration-order=9 --safemode=0 # 1.9 s: #FLAGS=--integration-method=quadrature --integration-order=2 --safemode=0 # 3.2 s: FLAGS=--integration-method=quadrature --integration-order=5 --safemode=0 FORM=HyperElasticityFung demo: main.cpp generated_code/$(FORM).h scons -j3 generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -ogenerated_code $(FORM).ufl generate: clean demo bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl view: run paraview --data=u.pvd & paraview --data=usol.pvd & paraview --data=e.pvd & run: demo rm -f *.pvd *.vtu ./demo debug: demo gdb ./demo clean: rm -f *.pvd *.vtu rm -rf demo generated_code *.o rm -f *.pyc syfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticityFung/cpp/HyperElasticityFung.ufl0000644000175000017500000000447311672223006030012 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-12-22 -- 2009-03-12 # # Cell and its properties cell = tetrahedron d = cell.d n = cell.n x = cell.x # Elements u_element = VectorElement("CG", cell, 2) p_element = FiniteElement("CG", cell, 1) A_element = TensorElement("DG", cell, 0) # Test and trial functions v = TestFunction(u_element) w = TrialFunction(u_element) # Displacement at current and two previous timesteps u = Function(u_element) up = Function(u_element) upp = Function(u_element) # Time parameters dt = Constant(cell) # Fiber field A = Function(A_element) # External forces g = Function(u_element) sigma_0 = Function(p_element) # Material parameters rho = Constant(cell) K = Constant(cell) C_compr = Constant(cell) bff = Constant(cell) bfx = Constant(cell) bxx = Constant(cell) # Deformation gradient I = Identity(d) F = I + grad(u).T F = variable(F) Finv = inv(F) J = det(F) # Left Cauchy-Green deformation tensor #B = F*F.T #I1_B = tr(B) #I2_B = (I1_B**2 - tr(B*B))/2 #I3_B = J**2 # Right Cauchy-Green deformation tensor C = F.T*F #I1_C = tr(C) #I2_C = (I1_C**2 - tr(C*C))/2 #I3_C = J**2 # Green strain tensor E = (C-I)/2 # Mapping of strain in fiber directions Ef = A*E*A.T # Strain energy function psi(Q(Ef)) Q = bff * Ef[0,0]**2 + \ bxx * (Ef[1,1]**2 + Ef[2,2]**2 + Ef[1,2]**2 + Ef[2,1]**2) + \ bfx * (Ef[0,1]**2 + Ef[0,2]**2 + Ef[1,0]**2 + Ef[2,0]**2) psi = (K/2)*(exp(Q) - 1) + C_compr * (J*ln(J) - J + 1) # First Piola-Kirchoff stress tensor P = diff(psi, F) # Alternative: #S = 2*diff(psi, C) #P = F*S # Active forces TODO: Define nonzero active forces S_a = 0*I P_a = F*S_a # Acceleration term discretized with finite differences a = u - 2*up + upp # Time stepping parameter to multiply other terms with k = dt**2 / rho # Energy functional (without acceleration term and external forces) a_f = psi*dx # Residual equation # FIXME: Correct signs here? # FIXME: Swapping the second and third line here makes this compile again a_F = dot(a, v)*dx \ + k*inner(P + P_a, grad(v))*dx \ - k*dot(g, v)*dx \ - k*dot(J*sigma_0*Finv.T*n, v)*ds # Jacobi matrix of residual equation a_J = derivative(a_F, u, w) # Newton solver solves J du = -F, so we'll flip the sign here FIXME: What is right? #a_F = -a_F # TODO: Add some forms for computing stress and strain from a solution forms = [a_f, a_F, a_J] syfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticityFung/cpp/main.cpp0000644000175000017500000002325311672223006024765 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-01-01 // Last changed: 2009-04-01 // // This demo program solves the hyperelasticity // equations in 3D with a Fung type model. #include #define TMIN 3.0 #define MMIN 1000 clock_t __tic_time; void tic() { __tic_time = clock(); } double toc() { clock_t __toc_time = clock(); double elapsed_time = ((double) (__toc_time - __tic_time)) / CLOCKS_PER_SEC; return elapsed_time; } #include #include #include #include "generated_code/HyperElasticityFung.h" using dolfin::message; using dolfin::Function; using dolfin::MeshFunction; using dolfin::FunctionSpace; using dolfin::SubDomain; using dolfin::uint; using dolfin::UnitCube; using dolfin::DirichletBC; using dolfin::BoundaryCondition; using dolfin::VariationalProblem; using dolfin::Vector; using dolfin::Matrix; using dolfin::File; using namespace HyperElasticityFung; using std::cout; using std::endl; const double eps = DOLFIN_EPS; class Value: public Function { public: Value(const FunctionSpace & V, double value): Function(V), value(value) {} void eval(double* values, const double* x) const { values[0] = value; } double value; }; class FiberField: public Function { public: FiberField(const FunctionSpace & V): Function(V) {} void eval(double* values, const double* x) const { const double theta = 0.0; // const double ct = cos(theta); // const double st = sin(theta); const double ct = 1.0; const double st = 0.0; // Fiber direction values[0] = ct; values[1] = st; values[2] = 0.0; // Sheet direction values[3] = -st; values[4] = ct; values[5] = 0.0; // Sheet normal direction values[6] = 0.0; values[7] = 0.0; values[8] = 1.0; } }; const double a = 0.01; class BodyForce: public Function { public: BodyForce(const FunctionSpace & V): Function(V) {} void eval(double* values, const double* x) const { values[0] = 0; values[1] = 0; values[2] = 0; } }; class BoundaryPressure: public Function { public: BoundaryPressure(const FunctionSpace & V): Function(V) {} void eval(double* values, const double* x) const { // TODO: Set some nonzero pressure values[0] = 0.0; } }; class Displacement: public Function { public: Displacement(const FunctionSpace & V): Function(V) {} void eval(double* values, const double* x) const { const double dx = x[0] - 0.5; const double dy = x[1] - 0.5; const double dz = x[2] - 0.5; // Working: // values[0] = 0.05*dx; // values[1] = -0.05*dy; // values[2] = 0.0; // Not working: // values[0] = 0.1*dx; // values[1] = -0.1*dy; // values[2] = 0.0; // Not working: // values[0] = sin(x[1]); // values[1] = sin(x[0]); // values[2] = 0.0; // Not working: // values[0] = 0.1 * sin(x[1]); // values[1] = 0.1 * sin(x[0]); // values[2] = 0.1 * 0.0; // Working: // values[0] = 0.01 * sin(x[1]); // values[1] = 0.01 * sin(x[0]); // values[2] = 0.01 * 0.0; // Not working: values[0] = 0.0001*x[0]; values[1] = 0.0; values[2] = 0.0; // values[0] = a*( sin(x[1])-x[1]); // values[1] = -a*( x[2]-sin(x[2])); // values[2] = -( x[0]-sin(x[0]))*a; } }; class PressureBoundary: public SubDomain { bool inside(const double* x, bool on_boundary) const { //return (x[0] < eps) || (x[0] > 1.0-eps) || (x[1] < eps) || (x[1] > 1.0-eps) || (x[2] < eps) || (x[2] > 1.0-eps); return false; } }; class DirichletBoundary: public SubDomain { bool inside(const double* x, bool on_boundary) const { return x[0] < DOLFIN_EPS || x[0] > 1.0-DOLFIN_EPS; // return (x[0] < eps) || (x[0] > 1.0-eps) || (x[1] < eps) || (x[1] > 1.0-eps) || (x[2] < eps) || (x[2] > 1.0-eps); } }; int main(int argc, char**argv) { // Geometry message("Mesh"); unsigned n = 6; UnitCube mesh(n, n, n); mesh.disp(); // Boundaries message("Boundaries"); unsigned pressure_boundary_marker = 0; unsigned dirichlet_boundary_marker = 1; MeshFunction boundaries(mesh, mesh.geometry().dim()-1); PressureBoundary pressure_boundary; pressure_boundary.mark(boundaries, pressure_boundary_marker); DirichletBoundary dirichlet_boundary; dirichlet_boundary.mark(boundaries, dirichlet_boundary_marker); // Function spaces message("Function spaces"); Form_a_F::TestSpace V(mesh); CoefficientSpace_sigma_0 P(mesh); CoefficientSpace_K C(mesh); CoefficientSpace_A Q(mesh); // Coefficient functions message("Functions"); // Displacement at current and two previous timesteps Function u(V); Function up(V); Function upp(V); u.vector().zero(); up.vector().zero(); upp.vector().zero(); // Time parameters Value dt(C, 1.0); // Fiber field FiberField A(Q); // External forces BodyForce g(V); BoundaryPressure sigma_0(P); // Material parameters Value rho(C, 1.0); Value K(C, 0.876); // kPa // TODO: Get the right units Value C_compr(C, 10.0); // kPa Value bff(C, 18.48); Value bfx(C, 3.58); Value bxx(C, 2.8); // Analytical manufactured solution Displacement usol(V); // Attach coefficients to forms CoefficientSet coeffs; coeffs.u = u; coeffs.up = up; coeffs.upp = upp; coeffs.dt = dt; coeffs.A = A; coeffs.g = g; coeffs.sigma_0 = sigma_0; coeffs.rho = rho; coeffs.K = K; coeffs.C_compr = C_compr; coeffs.bff = bff; coeffs.bfx = bfx; coeffs.bxx = bxx; // Forms message("Forms"); Form_a_f f(coeffs); Form_a_F L(V, coeffs); Form_a_J a(V, V, coeffs); // Setup boundary conditions message("Boundary conditions"); // Dirichlet boundary conditions DirichletBC bc(V, usol, boundaries, dirichlet_boundary_marker); std::vector bcs; bcs.push_back(&bc); // Create variational problem (a, L, bcs, cell_domains, exterior_facet_domains, interior_facet_domains, nonlinear) message("Variational problem"); VariationalProblem problem(a, L, bcs, 0, &boundaries, 0, true); // Compute and show linear system if(true) { message("================================================================================"); message("Printing linear system"); Matrix J; tic(); problem.J(J, u.vector()); cout << "Time to assemble J = " << toc() << endl; //J.disp(); Vector F; tic(); problem.F(F, u.vector()); cout << "Time to assemble F = " << toc() << endl; //F.disp(); cout << "Size of system = " << F.size() << endl; message("================================================================================"); } return 0; // Solve! message("Solving"); problem.set("linear solver", "direct"); problem.solve(u); // Postprocessing message("Postprocessing"); // Interpolate usol Function usol_h(V); usol.interpolate(usol_h.vector(), V); // Compute functional value of u and exact solution f.u = u; double f_value = assemble(f); f.u = usol_h; double f_value2 = assemble(f); // Print limits of u cout << endl; cout << "==========================" << endl; cout << "Norm of u_h = " << u.vector().norm() << endl; cout << "Min of u_h = " << u.vector().min() << endl; cout << "Max of u_h = " << u.vector().max() << endl; cout << endl; cout << "Norm of u_e = " << usol_h.vector().norm() << endl; cout << "Min of u_e = " << usol_h.vector().min() << endl; cout << "Max of u_e = " << usol_h.vector().max() << endl; cout << endl; cout << "f(u) = " << f_value << endl; cout << "f(u_exact) = " << f_value2 << endl; cout << "(u_exact is not correct)" << endl; cout << "==========================" << endl; // Compute F at u for verification Vector F; problem.F(F, u.vector()); cout << endl; cout << "==========================" << endl; cout << "Norm of F = " << F.norm() << endl; cout << "Min of F = " << F.min() << endl; cout << "Max of F = " << F.max() << endl; cout << "==========================" << endl; // Compute e_h = usol_h - u Function e_h(V); e_h.vector() = u.vector(); e_h.vector() -= usol_h.vector(); cout << endl; cout << "==========================" << endl; cout << "Norm of e_h = " << e_h.vector().norm() << endl; cout << "Min of e_h = " << e_h.vector().min() << endl; cout << "Max of e_h = " << e_h.vector().max() << endl; cout << "==========================" << endl; // Interpolate fiber field Function Ah(Q); A.interpolate(Ah.vector(), Q); //plot(w); // Write functions to file message("Writing to file"); File ufile("u.pvd"); ufile << u; File usolfile("usol.pvd"); usolfile << usol_h; File efile("e.pvd"); efile << e_h; File Afile("A.pvd"); Afile << Ah; message("Done!"); } syfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticityFung/cpp/manufactured_solution.py0000644000175000017500000000433711672223006030323 0ustar johannrjohannr import swiginac from swiginac import * def tr(A): return sum(A[i,i] for i in range(3)) def inner(A, B): return sum(A[i,j]*B[i,j] for i in range(3) for j in range(3)) def diff(f, v): if isinstance(v, matrix): assert not isinstance(f, matrix) return matrix(3, 3, [swiginac.diff(f, v[i,j]) for i in range(3) for j in range(3)]) return swiginac.diff(f, v) def subs(f, s, v): assert isinstance(s, matrix) assert isinstance(v, matrix) repmap = exmap() for i in range(3): for j in range(3): repmap[s[i,j]] = v[i,j] return f.subs(repmap) # --- Derivation of manufactured analytical solution: # Some useful symbols x = matrix(3,1, [symbol("x[%d]" % i) for i in range(3)]) K = symbol("K") bff = symbol("bff") bfx = symbol("bfx") bxx = symbol("bxx") C_compr = symbol("C_compr") # Picking an arbitrary divergence free solution a = symbol("a") u = matrix(3,1, [a*(sin(x[1]) - x[1]), a*(sin(x[2]) - x[2]), a*(sin(x[0]) - x[0])]) div_u = sum(diff(u[i], x[i]) for i in range(3)) if not div_u.expand().evalf() == 0: print "WARNING: div(u) =", div_u # Want to compute g! # Compute value of F I = matrix(3, 3, [1,0,0, 0,1,0, 0,0,1]) DuT = matrix(3, 3, [diff(u[i], x[j]) for i in range(3) for j in range(3)]) Fvalue = I + DuT # Compute psi(F) F = symbolic_matrix(3, 3, "F") FT = transpose(F) J = determinant(F) C = FT*F E = (C - I) / 2 Q = bff * E[0,0]**2 + \ bxx * (E[1,1]**2 + E[2,2]**2 + E[1,2]**2 + E[2,1]**2) + \ bfx * (E[0,1]**2 + E[0,2]**2 + E[1,0]**2 + E[2,0]**2) psi = (K/2)*(exp(Q) - 1) + C_compr * (J*log(J) - J + 1) # First Piola-Kirchoff stress tensor P = diff(psi, F) # Substitute value of F into P P = subs(P, F, Fvalue) # Compute g using strong form of equation # FIXME: Signs! #g = u - div P divP = matrix(3, 1, [sum(diff(P[i,j], x[i]) for i in range(3)) for j in range(3)]) g = u - divP # Print solutions print print "u:" print " values[0] = %s;" % u[0].printc() print " values[1] = %s;" % u[1].printc() print " values[2] = %s;" % u[2].printc() print print "g:" print " values[0] = %s;" % g[0].printc() print " values[1] = %s;" % g[1].printc() print " values[2] = %s;" % g[2].printc() print syfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticitySVKTransient/0000755000175000017500000000000011674103625024210 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticitySVKTransient/cpp/0000755000175000017500000000000011672223006024764 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticitySVKTransient/cpp/SConstruct0000644000175000017500000000127211672223006027020 0ustar johannrjohannr# This is an example of a simple SConstruct file for building # programs against DOLFIN. To build this demo, just type 'scons'. import os, glob, commands # Get compiler from pkg-config compiler = commands.getoutput('pkg-config --variable=compiler dolfin') # Create a SCons Environment based on the main os environment env = Environment(ENV=os.environ, CXX=compiler) # Get compiler flags from pkg-config env.ParseConfig('pkg-config --cflags --libs dolfin') # Code generation is not this robust (yet) env.ParseConfig('echo -Wno-unused-variable') # Enable no optimization env.ParseConfig('echo -g -O0') # Program name env.Program('demo', glob.glob("*.cpp") + glob.glob("generated_code/*.cpp")) syfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticitySVKTransient/cpp/Makefile0000644000175000017500000000107411672223006026426 0ustar johannrjohannr #FLAGS=--integration-method=symbolic FLAGS=--integration-method=quadrature --integration-order=3 --safemode=0 FORM=HyperElasticitySVK demo: main.cpp generated_code/$(FORM).h scons -j3 generated_code/$(FORM).h: $(FORM).ufl sfc -w1 $(FLAGS) -ogenerated_code $(FORM).ufl generate: clean demo bench: $(FORM).ufl sfc -b1 $(FLAGS) $(FORM).ufl view: run paraview --data=u.pvd & paraview --data=usol.pvd & paraview --data=e.pvd & run: demo rm -f *.pvd *.vtu ./demo debug: demo gdb ./demo clean: rm -f *.pvd *.vtu rm -rf demo generated_code *.o rm -f *.pyc syfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticitySVKTransient/cpp/main.cpp0000644000175000017500000002727411672223006026430 0ustar johannrjohannr// Copyright (C) 2009 Martin Sandve Alnes // // This file is part of SyFi. // // SyFi is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // SyFi 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 SyFi. If not, see . // // First added: 2009-01-01 // Last changed: 2009-04-01 // // This demo program solves a hyperelasticity problem // in 3D using the Saint-Vernant-Kirchoff model. #include #include #include #include "generated_code/HyperElasticitySVK.h" using dolfin::message; using dolfin::Function; using dolfin::MeshFunction; using dolfin::FunctionSpace; using dolfin::SubDomain; using dolfin::uint; using dolfin::UnitCube; using dolfin::DirichletBC; using dolfin::BoundaryCondition; using dolfin::VariationalProblem; using dolfin::Vector; using dolfin::Matrix; using dolfin::File; using namespace HyperElasticitySVK; using std::cout; using std::endl; // ---------------------------------------- Constant parameters const double eps = DOLFIN_EPS; const double a = 0.03; // ---------------------------------------- Functions class Value: public Function { public: Value(const FunctionSpace & V, double value): Function(V), value(value) {} void eval(double* values, const double* x) const { values[0] = value; } double value; }; class BodyForce: public Function { public: BodyForce(const FunctionSpace & V): Function(V) {} void eval(double* values, const double* x) const { const double dx = x[0] - 0.5; const double dy = x[1] - 0.5; const double dz = x[2] - 0.5; const double lamda = 1.0; const double mu = 1.0; // values[0] = sin(x[1])*mu*a+a*( sin(x[1])-x[1])+lamda*( cos(x[0])-1.0)*sin(x[0])*(a*a)+lamda*( cos(x[0])-1.0)*sin(x[2])*( cos(x[2])-1.0)*(a*a*a)+2.0*( cos(x[0])-1.0)*sin(x[0])*mu*(a*a); // values[1] = lamda*( cos(x[0])-1.0)*sin(x[0])*(a*a*a)*( cos(x[1])-1.0)+2.0*sin(x[1])*mu*(a*a)*( cos(x[1])-1.0)+mu*sin(x[2])*a+( sin(x[2])-x[2])*a+lamda*sin(x[1])*(a*a)*( cos(x[1])-1.0); // values[2] = -( x[0]-sin(x[0]))*a+sin(x[0])*mu*a+2.0*mu*sin(x[2])*( cos(x[2])-1.0)*(a*a)+lamda*sin(x[2])*( cos(x[2])-1.0)*(a*a)+lamda*sin(x[1])*( cos(x[2])-1.0)*(a*a*a)*( cos(x[1])-1.0); // values[0] = x[0]*a; // values[1] = 0.0000000000000000e+00; // values[2] = 0.0000000000000000e+00; // values[0] = -lamda*( x[1]*a*x[2]+1.0)*( x[0]*(x[1]*x[1])*(a*a)+x[0]*(a*a)*(x[2]*x[2]))+x[0]*x[1]*a*x[2]-x[0]*mu*(x[1]*x[1])*(a*a)+-2.0*x[0]*( x[1]*a*x[2]+1.0)*mu*(x[1]*x[1])*(a*a)-x[0]*mu*(a*a)*(x[2]*x[2])+-2.0*x[0]*( x[1]*a*x[2]+1.0)*mu*(a*a)*(x[2]*x[2]); // values[1] = -a*( 2.0*(x[0]*x[0])*mu*(a*a)*(x[2]*x[2])+lamda*( (x[0]*x[0])*(a*a)*(x[2]*x[2])+(x[0]*x[0])*(x[1]*x[1])*(a*a)+pow( x[1]*a*x[2]+1.0,2.0)-1.0))*x[2]/2.0+-3.0*(x[0]*x[0])*mu*(x[1]*x[1])*(a*a*a)*x[2]-pow( x[1]*a*x[2]+1.0,2.0)*mu*a*x[2]-lamda*( ( x[1]*a*x[2]+1.0)*a*x[2]+(x[0]*x[0])*x[1]*(a*a))-x[0]*( lamda*( x[0]*(x[1]*x[1])*(a*a)+x[0]*(a*a)*(x[2]*x[2]))+2.0*x[0]*mu*(a*a)*(x[2]*x[2]))*a*x[2]-(x[0]*x[0])*mu*x[1]*(a*a); // values[2] = -pow( x[1]*a*x[2]+1.0,2.0)*mu*x[1]*a-(x[0]*x[0])*mu*(a*a)*x[2]-x[1]*a*( 2.0*(x[0]*x[0])*mu*(x[1]*x[1])*(a*a)+lamda*( (x[0]*x[0])*(a*a)*(x[2]*x[2])+(x[0]*x[0])*(x[1]*x[1])*(a*a)+pow( x[1]*a*x[2]+1.0,2.0)-1.0))/2.0-lamda*( (x[0]*x[0])*(a*a)*x[2]+( x[1]*a*x[2]+1.0)*x[1]*a)+-3.0*(x[0]*x[0])*mu*x[1]*(a*a*a)*(x[2]*x[2])-( 2.0*x[0]*mu*(x[1]*x[1])*(a*a)+lamda*( x[0]*(x[1]*x[1])*(a*a)+x[0]*(a*a)*(x[2]*x[2])))*x[0]*x[1]*a; values[0] = x[0]*a; values[1] = x[1]*a; values[2] = a*x[2]; } }; class BoundaryPressure: public Function { public: BoundaryPressure(const FunctionSpace & V): Function(V) {} void eval(double* values, const double* x) const { // TODO: Set some nonzero pressure values[0] = 0.0; } }; class Displacement: public Function { public: Displacement(const FunctionSpace & V): Function(V) {} void eval(double* values, const double* x) const { const double dx = x[0] - 0.5; const double dy = x[1] - 0.5; const double dz = x[2] - 0.5; // Working: // values[0] = 0.05*dx; // values[1] = -0.05*dy; // values[2] = 0.0; // Not working: // values[0] = 0.1*dx; // values[1] = -0.1*dy; // values[2] = 0.0; // Not working: // values[0] = sin(x[1]); // values[1] = sin(x[0]); // values[2] = 0.0; // Not working: // values[0] = 0.1 * sin(x[1]); // values[1] = 0.1 * sin(x[0]); // values[2] = 0.1 * 0.0; // Working: // values[0] = 0.01 * sin(x[1]); // values[1] = 0.01 * sin(x[0]); // values[2] = 0.01 * 0.0; // values[0] = a*( sin(x[1])-x[1]); // values[1] = ( sin(x[2])-x[2])*a; // values[2] = -( x[0]-sin(x[0]))*a; // values[0] = x[0]*a; // values[1] = 0.0000000000000000e+00; // values[2] = 0.0000000000000000e+00; // values[0] = x[0]*x[1]*a*x[2]; // values[1] = 0.0000000000000000e+00; // values[2] = 0.0000000000000000e+00; values[0] = x[0]*a; values[1] = x[1]*a; values[2] = a*x[2]; } }; // ---------------------------------------- Subdomains class PressureBoundary: public SubDomain { bool inside(const double* x, bool on_boundary) const { //return (x[0] < eps) || (x[0] > 1.0-eps) || (x[1] < eps) || (x[1] > 1.0-eps) || (x[2] < eps) || (x[2] > 1.0-eps); return false; } }; class DirichletBoundary: public SubDomain { bool inside(const double* x, bool on_boundary) const { //return x[0] < DOLFIN_EPS || x[0] > 1.0-DOLFIN_EPS; return (x[0] < eps) || (x[0] > 1.0-eps) || (x[1] < eps) || (x[1] > 1.0-eps) || (x[2] < eps) || (x[2] > 1.0-eps); } }; // ---------------------------------------- Main program int main(int argc, char**argv) { // Geometry message("Mesh"); unsigned n = 12; UnitCube mesh(n, n, n); // Boundaries message("Boundaries"); unsigned pressure_boundary_marker = 0; unsigned dirichlet_boundary_marker = 1; MeshFunction boundaries(mesh, mesh.geometry().dim()-1); PressureBoundary pressure_boundary; pressure_boundary.mark(boundaries, pressure_boundary_marker); DirichletBoundary dirichlet_boundary; dirichlet_boundary.mark(boundaries, dirichlet_boundary_marker); // Function spaces message("Function spaces"); Form_a_F::TestSpace V(mesh); CoefficientSpace_sigma_0 P(mesh); CoefficientSpace_mu C(mesh); // Coefficient functions message("Functions"); // Displacement at current and two previous timesteps Function u(V); Function up(V); Function upp(V); u.vector().zero(); up.vector().zero(); upp.vector().zero(); // Time parameters Value dt(C, 1.0); // External forces BodyForce g(V); BoundaryPressure sigma_0(P); // Material parameters Value rho(C, 1.0); Value mu(C, 1.0); Value lamda(C, 1.0); // Analytical manufactured solution Displacement usol(V); // Collect coefficients CoefficientSet coeffs; coeffs.u = u; coeffs.up = up; coeffs.upp = upp; coeffs.dt = dt; coeffs.g = g; coeffs.sigma_0 = sigma_0; coeffs.rho = rho; coeffs.lamda = lamda; coeffs.mu = mu; coeffs.disp(); // Forms message("Forms"); Form_a_f f(coeffs); Form_a_F L(V, coeffs); Form_a_J a(V, V, coeffs); // Setup boundary conditions message("Boundary conditions"); // Dirichlet boundary conditions DirichletBC bc(V, usol, boundaries, dirichlet_boundary_marker); std::vector bcs; bcs.push_back(&bc); // Create variational problem (a, L, bcs, cell_domains, exterior_facet_domains, interior_facet_domains, nonlinear) message("Variational problem"); VariationalProblem problem(a, L, bcs, 0, &boundaries, 0, true); // Compute and show linear system if(false) { message("================================================================================"); message("Printing linear system"); Matrix J; problem.J(J, u.vector()); J.disp(); Vector F; problem.F(F, u.vector()); F.disp(); message("================================================================================"); } // Solve! message("Solving"); problem.set("linear solver", "direct"); //problem.set("linear solver", "iterative"); problem.solve(u); return 0; // Postprocessing message("Postprocessing"); // Interpolate usol Function usol_h(V); usol.interpolate(usol_h.vector(), V); // Compute functional value of u and exact solution f.u = u; double f_value = assemble(f); f.u = usol_h; double f_value2 = assemble(f); // Print limits of u cout << endl; cout << "==========================" << endl; cout << "Norm of u_h = " << u.vector().norm() << endl; cout << "Min of u_h = " << u.vector().min() << endl; cout << "Max of u_h = " << u.vector().max() << endl; cout << endl; cout << "Norm of u_e = " << usol_h.vector().norm() << endl; cout << "Min of u_e = " << usol_h.vector().min() << endl; cout << "Max of u_e = " << usol_h.vector().max() << endl; cout << endl; cout << "f(u) = " << f_value << endl; cout << "f(u_exact) = " << f_value2 << endl; cout << "(u_exact is not correct)" << endl; cout << "==========================" << endl; // Compute F at u for verification Vector F; problem.F(F, u.vector()); cout << endl; cout << "==========================" << endl; cout << "Norm of F = " << F.norm() << endl; cout << "Min of F = " << F.min() << endl; cout << "Max of F = " << F.max() << endl; cout << "==========================" << endl; // Compute e_h = usol_h - u Function e_h(V); e_h.vector() = u.vector(); e_h.vector() -= usol_h.vector(); cout << endl; cout << "==========================" << endl; cout << "Norm of e_h = " << e_h.vector().norm() << endl; cout << "Min of e_h = " << e_h.vector().min() << endl; cout << "Max of e_h = " << e_h.vector().max() << endl; cout << "==========================" << endl; // Forms for postprocessing // Project div(u) { Form_projection_a_div_u::TrialSpace V(mesh); Form_projection_a_div_u a(V, V, coeffs); Form_projection_L_div_u L(V, coeffs); VariationalProblem problem(a, L); problem.set("linear solver", "direct"); Function u(V); problem.solve(u); File tmp_file("div_u.pvd"); tmp_file << u; } // Project J = det F { Form_projection_a_J::TrialSpace V(mesh); Form_projection_a_J a(V, V, coeffs); Form_projection_L_J L(V, coeffs); VariationalProblem problem(a, L); problem.set("linear solver", "direct"); Function u(V); problem.solve(u); File tmp_file("J.pvd"); tmp_file << u; } // Project psi { Form_projection_a_psi::TrialSpace V(mesh); Form_projection_a_psi a(V, V, coeffs); Form_projection_L_psi L(V, coeffs); VariationalProblem problem(a, L); problem.set("linear solver", "direct"); Function u(V); problem.solve(u); File tmp_file("psi.pvd"); tmp_file << u; } //plot(w); // Write functions to file message("Writing to file"); File ufile("u.pvd"); ufile << u; File usolfile("usol.pvd"); usolfile << usol_h; File efile("e.pvd"); efile << e_h; message("Done!"); } syfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticitySVKTransient/cpp/HyperElasticitySVK.ufl0000644000175000017500000000453711672223006031213 0ustar johannrjohannr# # Author: Martin Sandve Alnes # Date: 2008-12-22 -- 2009-03-16 # # Cell and its properties cell = tetrahedron d = cell.d n = cell.n x = cell.x # Elements u_element = VectorElement("CG", cell, 1) p_element = FiniteElement("CG", cell, 1) # Test and trial functions v = TestFunction(u_element) w = TrialFunction(u_element) # Displacement at current and two previous timesteps u = Function(u_element) up = Function(u_element) upp = Function(u_element) # Time parameters dt = Constant(cell) # External forces g = Function(u_element) sigma_0 = Function(p_element) # Material parameters rho = Constant(cell) lamda = Constant(cell) mu = Constant(cell) # Deformation gradient I = Identity(d) F = I + grad(u).T Finv = inv(F) J = det(F) # Right Cauchy-Green deformation tensor C = F.T*F # Green strain tensor E = (C-I)/2 E = variable(E) # Strain energy function psi(Q(Ef)), Saint Vernant-Kirchoff law psi = lamda/2 * tr(E)**2 + mu * inner(E, E) # First Piola-Kirchoff stress tensor P = F*diff(psi, E) # Acceleration term discretized with finite differences a = u - 2*up + upp # Time stepping parameter to multiply other terms with k = dt**2 / rho # Energy functional (without acceleration term and external forces) a_f = psi*dx # Residual equation # FIXME: Correct signs here? a_F = dot(a, v)*dx \ - k*dot(g, v)*dx \ + k*inner(P, grad(v))*dx \ - k*dot(J*sigma_0*Finv.T*n, v)*ds # Jacobi matrix of residual equation a_J = derivative(a_F, u, w) # Some forms for computing stress and strain from a solution def projection_system(value, degree=1): if value.rank() == 0: element = FiniteElement("CG", cell, degree) elif value.rank() == 1: element = VectorElement("CG", cell, degree) elif value.rank() == 2: element = TensorElement("CG", cell, degree) test = TestFunction(element) trial = TrialFunction(element) assert value.shape() == test.shape() assert value.shape() == trial.shape() a = inner(trial - value, test) * dx a, L = lhs(a), rhs(a) return a, L projection_a_div_u, projection_L_div_u = projection_system(div(u)) projection_a_J, projection_L_J = projection_system(J) projection_a_psi, projection_L_psi = projection_system(psi) forms = [a_f, a_F, a_J, projection_a_div_u, projection_L_div_u, projection_a_J, projection_L_J, projection_a_psi, projection_L_psi] syfi-1.0.0.dfsg.orig/sandbox/demo/HyperElasticitySVKTransient/cpp/manufactured_solution.py0000644000175000017500000000450611672223006031755 0ustar johannrjohannr import swiginac from swiginac import * def tr(A): return sum(A[i,i] for i in range(3)) def inner(A, B): return sum(A[i,j]*B[i,j] for i in range(3) for j in range(3)) def diff(f, v): if isinstance(v, matrix): assert not isinstance(f, matrix) return matrix(3, 3, [swiginac.diff(f, v[i,j]) for i in range(3) for j in range(3)]) return swiginac.diff(f, v) def subs(f, s, v): assert isinstance(s, matrix) assert isinstance(v, matrix) repmap = exmap() for i in range(3): for j in range(3): repmap[s[i,j]] = v[i,j] return f.subs(repmap) # --- Derivation of manufactured analytical solution: # Some useful symbols x = matrix(3,1, [symbol("x[%d]" % i) for i in range(3)]) lamda = symbol("lamda") mu = symbol("mu") # Picking an arbitrary divergence free solution a = symbol("a") # Problems (possibly a bad choice): #u = matrix(3, 1, [a*(sin(x[1]) - x[1]), # a*(sin(x[2]) - x[2]), # a*(sin(x[0]) - x[0])]) # OK (with a=0.01): #u = matrix(3, 1, [a*x[0], # 0.0, # 0.0]) # Testing now: u = matrix(3, 1, [a*x[0], a*x[1], a*x[2]]) div_u = sum(diff(u[i], x[i]) for i in range(3)) if not div_u.expand().evalf() == 0: print "WARNING: div(u) =", div_u # Want to compute g! # Compute value of E I = matrix(3, 3, [1,0,0, 0,1,0, 0,0,1]) DuT = matrix(3,3, [diff(u[i], x[j]) for i in range(3) for j in range(3)]) F = I + DuT FT = transpose(F) J = determinant(F) C = FT*F Evalue = (C - I) / 2 # Compute psi(E) E = symbolic_matrix(3, 3, "E") psi = lamda/2 * tr(E)**2 + mu * inner(E, E) # Second Piola-Kirchoff stress tensor S = diff(psi, E) # Substitute value of E into S S = subs(S, E, Evalue) # First Piola-Kirchoff stress tensor P = F*S # Compute g using strong form of equation # FIXME: Signs! #g = u - div P divP = matrix(3, 1, [sum(diff(P[i,j], x[i]) for i in range(3)) for j in range(3)]) g = u - divP # Print solutions def p(x): #x = swiginac.normal(x) #x = x.evalf() return x.printc() print print "u:" print " values[0] = %s;" % p(u[0]) print " values[1] = %s;" % p(u[1]) print " values[2] = %s;" % p(u[2]) print print "g:" print " values[0] = %s;" % p(g[0]) print " values[1] = %s;" % p(g[1]) print " values[2] = %s;" % p(g[2]) print syfi-1.0.0.dfsg.orig/sandbox/scripts/0000755000175000017500000000000011674103625017355 5ustar johannrjohannrsyfi-1.0.0.dfsg.orig/sandbox/scripts/revert_absolute_import.py0000644000175000017500000000400611672223006024520 0ustar johannrjohannr#!/usr/bin/env python """ Change import statements from absolute_import syntax to the old way. NB! The variable "root" must hold the name of the root package. """ from glob import glob import re import os import os.path as op import sys root = "newsfc" files = glob("*.py") for fn in files: print "========== Reading file", fn # Read contents f = open(fn) lines = list(f.readlines()) f.close() # Parse filename fullpath, filename = op.split(op.abspath(fn)) dirs = fullpath.split(op.sep) i = list(dirs).index(root) assert i >= 0 path = dirs[i:] assert path[0] == root modulename = ".".join(path) # Print filename parsing result print print "fn = ", fn print "path = ", path print "modulename = ", modulename print replace_dots = {} replace_dots["."] = ".".join(path) + "." if len(path) > 1: replace_dots[".."] = ".".join(path[:-1]) + "." if len(path) > 2: replace_dots["..."] = ".".join(path[:-2]) + "." # Define line transformation regexp1 = re.compile(r"from.*__future__.*import.*absolute_import") regexp2 = re.compile(r"(.*)from (\.+)(.*) import (.*)$") def transform(line): if regexp1.search(line): line = "" else: match = regexp2.search(line) if match: g = match.groups() prefix, dots, modulename, content = g dotsreplacement = replace_dots[dots] line = "%sfrom %s%s import %s\n" % (prefix, dotsreplacement, modulename, content) return line # Apply transformation to all lines newlines = [] updated = False for l in lines: l2 = transform(l) if l != l2: updated = True print "Changing lines:" print "FROM:", l.strip("\n") print "TO: ", l2.strip("\n") newlines.append(l2) # Write file if updated: f = open(fn, "w") f.writelines(newlines) f.close() syfi-1.0.0.dfsg.orig/sandbox/scripts/print_tabulate_tensors0000755000175000017500000000222211672223006024065 0ustar johannrjohannr#!/usr/bin/env python import re import sys filenames = sys.argv[1:] tt = re.compile("^void .*::tabulate_tensor") bb = re.compile("{") be = re.compile("}") db = re.compile("#ifdef SFCDEBUG") de = re.compile("#endif // SFCDEBUG") for fn in filenames: print "========= tabulate_tensor in '%s':" % fn lines = open(fn).readlines() in_tabulate_tensor = False skip_lines = 0 in_debug_code = False braces = 0 for line in lines: if in_tabulate_tensor: if skip_lines: skip_lines -= 1 continue if bb.search(line): braces += 1 elif be.search(line): braces -= 1 elif db.search(line): in_debug_code = True elif de.search(line): in_debug_code = False continue if not in_debug_code: print line, if braces == 0: in_tabulate_tensor = False break else: if tt.search(line): in_tabulate_tensor = True skip_lines = 2