simrisc-16.02.00/agegroupvsd/0000775000175000017500000000000014665030471014733 5ustar frankfranksimrisc-16.02.00/agegroupvsd/fmt.cc0000664000175000017500000000044114665030471016027 0ustar frankfrank//#define XERR #include "agegroupvsd.ih" // static void AgeGroupVSD::fmt(unsigned indent, unsigned mIntWidth, unsigned mPrec, unsigned sdIntWidth, unsigned sdPrec) { s_indent = indent; VSD::fmt(mIntWidth, mPrec, sdIntWidth, sdPrec); } simrisc-16.02.00/agegroupvsd/data.cc0000664000175000017500000000011214665030471016145 0ustar frankfrank//#define XERR #include "agegroupvsd.ih" unsigned AgeGroupVSD::s_indent; simrisc-16.02.00/agegroupvsd/ln.cc0000664000175000017500000000023714665030471015655 0ustar frankfrank//#define XERR #include "agegroupvsd.ih" void AgeGroupVSD::ln() { d_vsd.ln(); if (d_stdDev > 0) d_stdDev = log(d_stdDev); d_exp = true; } simrisc-16.02.00/agegroupvsd/vary2.cc0000664000175000017500000000077514665030471016316 0ustar frankfrank//#define XERR #include "agegroupvsd.ih" // hdr should end in ':' void AgeGroupVSD::vary(ostream &out, unsigned indent, char const *hdr, AgeGroupVSDvect &vect) { out << setw(indent) << ' ' << hdr << '\n'; indent += 2; for (auto &ag: vect) { ag.vary(); out << setw(indent) << ' ' << "ageGroup: " << ag.d_group << " "; ag.d_vsd.showVary(out); } out.put('\n'); } simrisc-16.02.00/agegroupvsd/agegroupvsd.h0000664000175000017500000000433214665030471017434 0ustar frankfrank#ifndef INCLUDED_AGEGROUPVSD_ #define INCLUDED_AGEGROUPVSD_ #include #include #include "../group/group.h" #include "../vsd/vsd.h" class AgeGroupVSD { friend std::istream &operator>>(std::istream &in, AgeGroupVSD &group); friend std::ostream &operator<<(std::ostream &out, std::vector const &vect); friend std::ostream &operator<<(std::ostream &out, AgeGroupVSD const &group); bool d_extractGroup; Group d_group; VSD d_vsd; double d_stdDev; // if negative: std dev not used static unsigned s_indent; bool d_exp; public: AgeGroupVSD(VaryType varyType, bool useStdDev, bool etractGroup = true); Group const &group() const; // .f uint16_t beginAge() const; // .f uint16_t endAge() const; // .f double value() const; // .f double stdDev() const; // .f void ln(); void vary(); // 1 static void fmt(unsigned valueIntWidth, unsigned valuePrec, // inl unsigned distValueWdith, unsigned distPrec); static void fmt(unsigned indent, // indentation below topLabel unsigned mIntWidth, unsigned mPrec, unsigned sdIntWidth, unsigned sdPrec); // hdr should end in ':' static void vary(std::ostream &out, unsigned indent, // 2 char const *hdr, std::vector &vect); private: std::ostream &insert(std::ostream &out) const; // 1 static std::ostream &insert(std::ostream &out, // 2 std::vector const &vect); std::istream &extract(std::istream &in); }; using AgeGroupVSDvect = std::vector; #include "agegroupvsd.f" #endif simrisc-16.02.00/agegroupvsd/insert1.cc0000664000175000017500000000065214665030471016632 0ustar frankfrank//#define XERR #include "agegroupvsd.ih" std::ostream &AgeGroupVSD::insert(std::ostream &out) const { out << d_group << ", "; // insert the age group if (d_stdDev >= 0) // then the sd.dev (if available) Globals::setPrecision(out, 3) << "std.dev: " << (d_exp ? exp(d_stdDev) : d_stdDev) << "; "; return out << d_vsd; // then the VSD } simrisc-16.02.00/agegroupvsd/agegroupvsd.ih0000664000175000017500000000025214665030471017602 0ustar frankfrank#include "agegroupvsd.h" #include "../xerr/xerr.ih" #include #include "../globals/globals.h" #include "../err/err.h" #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/agegroupvsd/vary1.cc0000664000175000017500000000020714665030471016303 0ustar frankfrank//#define XERR #include "agegroupvsd.ih" void AgeGroupVSD::vary() { d_vsd.vary(); // vary the parameter if applicable } simrisc-16.02.00/agegroupvsd/insert2.cc0000664000175000017500000000043514665030471016632 0ustar frankfrank//#define XERR #include "agegroupvsd.ih" // static ostream &AgeGroupVSD::insert(ostream &out, AgeGroupVSDvect const &vect) { for (unsigned idx = 0, end = vect.size(); idx != end; ++idx) out << setw(s_indent) << ' ' << "ageGroup: " << vect[idx] << '\n'; return out; } simrisc-16.02.00/agegroupvsd/icmconf0000664000175000017500000000010214665030471016265 0ustar frankfrank#define LIBRARY "agegroupvsd" #include "../icmconf.lib" simrisc-16.02.00/agegroupvsd/extract.cc0000664000175000017500000000125614665030471016720 0ustar frankfrank#define XERR #include "agegroupvsd.ih" // e.g., 1 - 50 .61 4.38 .43 Normal // or: 1 - 50 4.38 .43 Normal // // or (lung): .21 4.59 .74 Normal std::istream &AgeGroupVSD::extract(std::istream &in) { if (d_extractGroup) in >> d_group; if (d_stdDev < 0) { string value; in >> value; istringstream in{ value }; in >> d_vsd; } else { in >> d_stdDev >> d_vsd; // the default Distribution setting is VARY_OK: OK for AgeGroupVSD if (d_stdDev < 0) Err::msg(Err::NEGATIVE) << "(final std. dev.)" << endl; } return in; } simrisc-16.02.00/agegroupvsd/agegroupvsd1.cc0000664000175000017500000000037414665030471017655 0ustar frankfrank//#define XERR #include "agegroupvsd.ih" AgeGroupVSD::AgeGroupVSD(VaryType varyType, bool useStdDev, bool extractGroup) : d_extractGroup(extractGroup), d_group(RANGE), d_vsd(varyType), d_stdDev(useStdDev ? 0 : -1), d_exp(false) {} simrisc-16.02.00/agegroupvsd/frame0000664000175000017500000000007414665030471015751 0ustar frankfrank//#define XERR #include "agegroupvsd.ih" AgeGroupVSD:: { } simrisc-16.02.00/agegroupvsd/agegroupvsd.f0000664000175000017500000000205014665030471017425 0ustar frankfrank//inline Group const &AgeGroupVSD::ageGroup() const inline Group const &AgeGroupVSD::group() const { return d_group; } inline uint16_t AgeGroupVSD::beginAge() const { return d_group.begin(); } inline uint16_t AgeGroupVSD::endAge() const { return d_group.end(); } inline double AgeGroupVSD::value() const { return d_vsd.value(); } inline double AgeGroupVSD::stdDev() const { return d_stdDev; } // static inline void fmt(unsigned valueIntWidth, unsigned valuePrec, unsigned distValueWdith, unsigned distPrec) { VSD::fmt(valueIntWidth, valuePrec, distValueWdith, distPrec); } inline std::istream &operator>>(std::istream &in, AgeGroupVSD &ageGroupVSD) { return ageGroupVSD.extract(in); } inline std::ostream &operator<<(std::ostream &out, AgeGroupVSD const &ageGroupVSD) { return ageGroupVSD.insert(out); } inline std::ostream &operator<<(std::ostream &out, AgeGroupVSDvect const &vect) { return AgeGroupVSD::insert(out, vect); } simrisc-16.02.00/analysis/0000775000175000017500000000000014665030471014230 5ustar frankfranksimrisc-16.02.00/analysis/analysis.ih0000664000175000017500000000055714665030471016404 0ustar frankfrank#include "analysis.h" #include "../xerr/xerr.ih" #include #include #include #include #include "../options/options.h" #include "../loop/loop.h" extern FBB::Arg::LongOption const g_longOpts[]; extern FBB::Arg::LongOption const *g_longEnd; #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/analysis/run.cc0000664000175000017500000000056714665030471015353 0ustar frankfrank#define XERR #include "analysis.ih" //extern Parser *pPtr; void Analysis::run() { requireBase(); // the base directory must be (made) available Loop loop{ d_labels }; // errors may be set at Options, ConfFile if (emsg.count() != 0) // construction, or Loop construction return; loop.iterate(); } simrisc-16.02.00/analysis/requirebase.cc0000664000175000017500000000050214665030471017043 0ustar frankfrank//#define XERR #include "analysis.ih" void Analysis::requireBase() const { error_code ec; auto const &base = Options::instance().base(); if ( not filesystem::create_directory(base, ec) and ec.value() != 0 ) throw Exception{} << "Cannot create base directory " << base; } simrisc-16.02.00/analysis/actualize.cc0000664000175000017500000000242014665030471016516 0ustar frankfrank#define XERR #include "analysis.ih" void Analysis::actualize(Parser::OptionsVect const &optionsVect) { auto &options = Options::instance(); options.activate(); // activate the startup // (default/command-line) // options for (auto const &spec: optionsVect) // visit all options specified { // in this analysis // visit all long options for (auto const *ptr = g_longOpts; ptr != g_longEnd; ++ptr) { string const &name = ptr->longName(); if (name == spec.name) // found an option to alter { // try to change it if (not options.alter(ptr->optionChar(), spec.value)) wmsg << "ignored analysis option specification " << spec.name << " (line " << spec.lineNr << ')' << endl; break; // done with this option } } } options.actualize(); // obtain the actual options } simrisc-16.02.00/analysis/analysis.h0000664000175000017500000000074514665030471016232 0ustar frankfrank#ifndef INCLUDED_ANALYSIS_ #define INCLUDED_ANALYSIS_ #include #include "../parser/parser.h" #include "../typedefs/typedefs.h" class Analysis { StringVect d_labels; Parser d_parser; public: // stream: the analysis: secifications Analysis(std::istream &&stream, uint16_t lineNr); void run(); private: void actualize(Parser::OptionsVect const &specs); void requireBase() const; }; #endif simrisc-16.02.00/analysis/icmconf0000664000175000017500000000007714665030471015575 0ustar frankfrank#define LIBRARY "analysis" #include "../icmconf.lib" simrisc-16.02.00/analysis/analysis1.cc0000664000175000017500000000105114665030471016440 0ustar frankfrank#define XERR #include "analysis.ih" // the error count is reset by the Simulator Analysis::Analysis(std::istream &&stream, uint16_t lineNr) { Parser::OptionsVect optionsVect; // read the analysis specs d_parser.load(stream, lineNr, d_labels, optionsVect); // set the options used actualize(optionsVect); // for this analysis d_parser.load(Options::instance().configFile()); // read the config file } simrisc-16.02.00/analysis/frame0000664000175000017500000000006614665030471015247 0ustar frankfrank//#define XERR #include "analysis.ih" Analysis:: { } simrisc-16.02.00/beir7/0000775000175000017500000000000014665030471013415 5ustar frankfranksimrisc-16.02.00/beir7/vary.cc0000664000175000017500000000030214665030471014700 0ustar frankfrank//#define XERR #include "beir7.ih" void Beir7::vary(ostream &out) { d_vsd.vary(); out << " Beir7:\n" " " << Globals::simTypeLabel(LC) << " "; d_vsd.showVary(out); } simrisc-16.02.00/beir7/beir7.f0000664000175000017500000000041614665030471014575 0ustar frankfrankinline double Beir7::beta() const { return d_vsd.value(); } inline double Beir7::eta() const { return d_eta; } inline DistType Beir7::distType() const { return d_vsd.distType(); } //inline double Beir7::spread() const //{ // return d_vsd.spread(); //} simrisc-16.02.00/beir7/icmconf0000664000175000017500000000007414665030471014757 0ustar frankfrank#define LIBRARY "beir5" #include "../icmconf.lib" simrisc-16.02.00/beir7/writeparameters.cc0000664000175000017500000000057414665030471017150 0ustar frankfrank//#define XERR #include "beir7.ih" void Beir7::writeParameters(ostream &out) const { VSD::fmt(1, 2, 1, 2); Globals::setWidthPrec(out, 3, 3) << " Beir7:\n" " " << Globals::simTypeLabel(LC) << (Globals::simulationType() == MALE ? " " : "") << " eta = " << d_eta << ", beta = " << d_vsd << "\n\n"; } simrisc-16.02.00/beir7/beir7.h0000664000175000017500000000200414665030471014572 0ustar frankfrank#ifndef INCLUDED_BEIR7_ #define INCLUDED_BEIR7_ //Tumor: // # eta beta spread dist // Beir7: -2.0 .51 .32 Normal // Tumor: // Beir7: // # eta beta spread dist. // breast: -2.0 0.51 0.32 Normal // // # LC: // male: -1.4 .32 Beta // female: -1.4 1.40 Beta #include #include "../typedefs/typedefs.h" #include "../vsd/vsd.h" class Beir7 { double d_eta; // eta; VSD d_vsd; // contains beta and spread/distribution public: Beir7(); double beta() const; // .f double eta() const; // .f DistType distType() const; // .f void vary(std::ostream &out); void writeParameters(std::ostream &out) const; // double spread() const; }; #include "beir7.f" #endif simrisc-16.02.00/beir7/beir7.ih0000664000175000017500000000025414665030471014750 0ustar frankfrank#include "beir7.h" #include "../xerr/xerr.ih" #include #include "../globals/globals.h" #include "../parser/parser.h" #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/beir7/beir71.cc0000664000175000017500000000206414665030471015017 0ustar frankfrank#define XERR #include "beir7.ih" //#Tumor: // Beir7: // # eta beta spread dist. // breast: -2.0 0.51 0.32 Normal // //#Beir7 // Read by BetaDist (./betadist) // >>> dist: not used unless spread == true // # LC: eta beta dist constant factor aParam bParam // male: -1.4 .32 Beta .234091 1.72727 2.664237 5.184883 // female: -1.4 1.40 Beta .744828 .818966 3.366115 4.813548 Beir7::Beir7() : d_vsd(VARY_NONNEG) { switch (Globals::simulationType()) { case BREAST: Parser::extract( Parser::one({ "Beir7:", "breast:" }), d_eta, d_vsd); break; case MALE: Parser::extract( Parser::one({ "Beir7:", "male:" }), d_eta, d_vsd); break; case FEMALE: Parser::extract( Parser::one({ "Beir7:", "female:" }), d_eta, d_vsd); break; } } simrisc-16.02.00/beir7/frame0000664000175000017500000000006014665030471014426 0ustar frankfrank//#define XERR #include "beir7.ih" Beir7:: { } simrisc-16.02.00/betadist/0000775000175000017500000000000014665030471014204 5ustar frankfranksimrisc-16.02.00/betadist/betadist.ih0000664000175000017500000000015614665030471016327 0ustar frankfrank#include "betadist.h" #include #include "../err/err.h" #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/betadist/betadist1.cc0000664000175000017500000000053514665030471016376 0ustar frankfrank//#define XERR #include "betadist.ih" BetaDist::BetaDist(istream &in) { for (size_t idx = 0; idx != size(d_param); ++idx) in >> d_param[idx]; if (not in) { Err::msgTxt(Err::SPEC_ERROR); return; } d_xGamma = gamma_distribution<>{ d_param[2], 1 }; d_yGamma = gamma_distribution<>{ d_param[3], 1 }; } simrisc-16.02.00/betadist/reset.cc0000664000175000017500000000015614665030471015637 0ustar frankfrank//#define XERR #include "betadist.ih" void BetaDist::reset() { d_xGamma.reset(); d_yGamma.reset(); } simrisc-16.02.00/betadist/icmconf0000664000175000017500000000007714665030471015551 0ustar frankfrank#define LIBRARY "betadist" #include "../icmconf.lib" simrisc-16.02.00/betadist/frame0000664000175000017500000000006614665030471015223 0ustar frankfrank//#define XERR #include "betadist.ih" BetaDist:: { } simrisc-16.02.00/betadist/betadist.h0000664000175000017500000000160114665030471016152 0ustar frankfrank#ifndef INCLUDED_BETADIST_ #define INCLUDED_BETADIST_ #include #include // 'Beta' has just been read | read from here // # LC: eta beta dist constant factor aParam bParam // male: -1.4 .32 Beta .234091 1.72727 2.664237 5.184883 // female: -1.4 1.40 Beta .744828 .818966 3.366115 4.813548 class BetaDist { double d_param[4]; // 0: constant, 1: factor, 2: aParam, 3: bParam std::gamma_distribution<> d_xGamma; std::gamma_distribution<> d_yGamma; public: BetaDist(std::istream &in); // extracts params from the config file void reset(); double operator()(std::mt19937 &engine); std::pair parameters() const; }; inline std::pair BetaDist::parameters() const { return {std::size(d_param), d_param}; } #endif simrisc-16.02.00/betadist/operatorfun.cc0000664000175000017500000000032314665030471017055 0ustar frankfrank//#define XERR #include "betadist.ih" double BetaDist::operator()(mt19937 &engine) { double xValue = d_xGamma(engine); return (xValue / (xValue + d_yGamma(engine)) + d_param[0]) / d_param[1]; } simrisc-16.02.00/bisonc++parser/0000775000175000017500000000000014665030471015225 5ustar frankfranksimrisc-16.02.00/bisonc++parser/parser.h0000664000175000017500000000232414665030471016673 0ustar frankfrank// Generated by Bisonc++ V6.04.00 on Fri, 20 Mar 2020 16:07:08 +0100 #ifndef Parser_h_included #define Parser_h_included // $insert baseclass #include "parserbase.h" // $insert scanner.h #include "../scanner/scanner.h" // $insert undefparser #undef Parser // CAVEAT: between the baseclass-include directive and the // #undef directive in the previous line references to Parser // are read as ParserBase. // If you need to include additional headers in this file // you should do so after these comment-lines. class Parser: public ParserBase { // $insert scannerobject Scanner d_scanner; public: Parser(char const *infile); int parse(); private: void error(); // called on (syntax) errors int lex(); // returns the next token from the // lexical scanner. void print(); // use, e.g., d_token, d_loc void exceptionHandler(std::exception const &exc); // support functions for parse(): void executeAction_(int ruleNr); void errorRecovery_(); void nextCycle_(); void nextToken_(); void print_(); }; #endif simrisc-16.02.00/bisonc++parser/parser1.cc0000664000175000017500000000013114665030471017104 0ustar frankfrank#include "parser.ih" Parser::Parser(char const *infile) : d_scanner(infile, "-") {} simrisc-16.02.00/bisonc++parser/parser.ih0000664000175000017500000000103114665030471017036 0ustar frankfrank// Generated by Bisonc++ V6.04.00 on Fri, 20 Mar 2020 16:07:08 +0100 // Include this file in the sources of the class Parser. // $insert class.h #include "parser.h" inline void Parser::error() { std::cerr << "Syntax error\n"; } // $insert lex inline int Parser::lex() { return d_scanner.lex(); } inline void Parser::print() { } inline void Parser::exceptionHandler(std::exception const &exc) { throw; // re-implement to handle exceptions thrown by actions } #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/bisonc++parser/inc/0000775000175000017500000000000014665030471015776 5ustar frankfranksimrisc-16.02.00/bisonc++parser/inc/survival0000664000175000017500000000023014665030471017567 0ustar frankfranksurvivalSpec: TYPE number optDistribution ; survivalSpecs: survivalSpecs survivalSpec | // empty ; survival: SURVIVAL survivalSpecs ; simrisc-16.02.00/bisonc++parser/inc/scenario0000664000175000017500000000032114665030471017520 0ustar frankfrankscenarioSpec: CASES NR | SPREAD BOOL | GENERATOR GENTYPE | SEED NR | ITERATIONS NR ; scenarioSpecs: scenarioSpecs scenarioSpec | // empty ; scenario: SCENARIO scenarioSpecs ; simrisc-16.02.00/bisonc++parser/inc/costs0000664000175000017500000000062214665030471017054 0ustar frankfrankcostsDiscount: AGE NR | PROP NR ; costsDiscounts: costsDiscounts costsDiscount | costsDiscount ; costsDiameter: NR ':' NR ; costsDiameters: costsDiameters costsDiameter | costsDiameter ; costsSpec: BIOP NR | DIAMETERS costsDiameters | DISCOUNT costsDiscounts ; costsSpecs: costsSpecs costsSpec | // empty ; costs: COSTS costsSpecs ; simrisc-16.02.00/bisonc++parser/inc/agerange0000664000175000017500000000015014665030471017466 0ustar frankfranklastAge: NR | '*' ; ageRange: NR '-' lastAge ':' ; ageGroupRange: AGEGROUP ageRange ; simrisc-16.02.00/bisonc++parser/inc/mri0000664000175000017500000000022014665030471016502 0ustar frankfrankmriSpec: cost | SENSITIVITY REAL | SPECIFICITY REAL ; mriSpecs: mriSpecs mriSpec | // empty ; mri: MRI mriSpecs ; simrisc-16.02.00/bisonc++parser/inc/number0000664000175000017500000000003414665030471017206 0ustar frankfranknumber: NR | REAL ; simrisc-16.02.00/bisonc++parser/inc/carrierspecs0000664000175000017500000000032614665030471020407 0ustar frankfrankcarrierSpec: PROB number | LIFETIMERISK number optDistribution | MEANAGE number optDistribution | STDDEV number optDistribution ; carrierSpecs: carrierSpecs carrierSpec | carrierSpec ; simrisc-16.02.00/bisonc++parser/inc/breastdensities0000664000175000017500000000021514665030471021107 0ustar frankfrankbDAgeGroup: ageGroupRange biRads ; bDSpecs: bDSpecs bDAgeGroup | // empty ; breastDensities: BREASTDENSITIES bDSpecs ; simrisc-16.02.00/bisonc++parser/inc/dose0000664000175000017500000000003314665030471016647 0ustar frankfrankdose: DOSE biRads ; simrisc-16.02.00/bisonc++parser/inc/mammo0000664000175000017500000000031014665030471017021 0ustar frankfrankmammoSpec: cost | dose | specificity | BETA distributions | SYSERR distribution ; mammoSpecs: mammoSpecs mammoSpec | // empty ; mammo: MAMMO mammoSpecs ; simrisc-16.02.00/bisonc++parser/inc/distributions0000664000175000017500000000033114665030471020620 0ustar frankfrankdistribution: REAL NORMAL ; optDistribution: distribution | // empty ; optParenDistribution: '(' distribution ')' | // empty ; distributions: distributions distribution | distribution ; simrisc-16.02.00/bisonc++parser/inc/modalities0000664000175000017500000000034014665030471020050 0ustar frankfrank%include inc/mammo %include inc/tomo %include inc/mri modalitiesSpec: mammo | tomo | mri ; modalitiesSpecs: modalitiesSpecs modalitiesSpec | // empty ; modalities: MODALITIES modalitiesSpecs ; simrisc-16.02.00/bisonc++parser/inc/tumor0000664000175000017500000000036214665030471017070 0ustar frankfrank%include inc/beir7 %include inc/incidence %include inc/growth %include inc/survival tumorSpec: beir7 | incidence | growth | survival ; tumorSpecs: tumorSpecs tumorSpec | // empty ; tumor: TUMOR tumorSpecs ; simrisc-16.02.00/bisonc++parser/inc/tokens0000664000175000017500000000062314665030471017225 0ustar frankfrank%token SCENARIO BOOL SPREAD ITERATIONS NR GENERATOR GENTYPE SEED CASES COSTS BIOP DIAMETERS DISCOUNT AGE PROP REAL BREASTDENSITIES AGEGROUP MODALITIES MAMMO COST DOSE SPECIFICITY BETA NORMAL SYSERR TOMO SENSITIVITY MRI SCREENING ATTENDANCERATE ROUND TUMOR BEIR7 ETA INCIDENCE PROB LIFETIMERISK MEANAGE STDDEV BRCA1 BRCA2 GROWTH START SELFDETECTMU SELFDETECTSIGMA DOUBLINGTIME SURVIVAL TYPE simrisc-16.02.00/bisonc++parser/inc/screening0000664000175000017500000000053214665030471017676 0ustar frankfrankscreeningModality: MAMMO | TOMO | MRI ; screeningModalities: screeningModalities screeningModality | screeningModality ; screeningSpec: ROUND number screeningModalities | ATTENDANCERATE distribution ; screeningSpecs: screeningSpecs screeningSpec | // empty ; screening: SCREENING screeningSpecs ; simrisc-16.02.00/bisonc++parser/inc/agerangeprobs0000664000175000017500000000014614665030471020541 0ustar frankfrankageRangeProb: ageRange REAL ; ageRangeProbs: ageRangeProbs ageRangeProb | ageRangeProb ; simrisc-16.02.00/bisonc++parser/inc/doublingtime0000664000175000017500000000034614665030471020406 0ustar frankfrankdoublingTimeSpec: ageGroupRange number optParenDistribution number optParenDistribution ; doublingTimeSpecs: doublingTimeSpecs doublingTimeSpec | doublingTimeSpec ; doublingTime: DOUBLINGTIME doublingTimeSpecs ; simrisc-16.02.00/bisonc++parser/inc/tomo0000664000175000017500000000023714665030471016701 0ustar frankfranktomoSpec: cost | dose | specificity | SENSITIVITY biRads ; tomoSpecs: tomoSpecs tomoSpec | // empty ; tomo: TOMO tomoSpecs ; simrisc-16.02.00/bisonc++parser/inc/incidence0000664000175000017500000000034414665030471017643 0ustar frankfrank%include inc/carrierspecs incidenceSpec: NORMAL carrierSpecs | BRCA1 carrierSpecs | BRCA2 carrierSpecs ; incidenceSpecs: incidenceSpecs incidenceSpec | // empty ; incidence: INCIDENCE incidenceSpecs ; simrisc-16.02.00/bisonc++parser/inc/birads0000664000175000017500000000005114665030471017161 0ustar frankfrankbiRads: biRads number | number ; simrisc-16.02.00/bisonc++parser/inc/beir70000664000175000017500000000023414665030471016730 0ustar frankfrankbeir7Spec: BETA REAL | ETA REAL | SPREAD distribution ; beir7Specs: beir7Specs beir7Spec | // empty ; beir7: BEIR7 beir7Specs ; simrisc-16.02.00/bisonc++parser/inc/cost0000664000175000017500000000002414665030471016665 0ustar frankfrankcost: COST NR ; simrisc-16.02.00/bisonc++parser/inc/specificity0000664000175000017500000000005514665030471020234 0ustar frankfrankspecificity: SPECIFICITY ageRangeProbs ; simrisc-16.02.00/bisonc++parser/inc/growth0000664000175000017500000000042014665030471017227 0ustar frankfrank%include inc/doublingtime growthSpec: START number optDistribution | SELFDETECTMU number optDistribution | SELFDETECTSIGMA number optDistribution | doublingTime ; growthSpecs: growthSpecs growthSpec | // empty ; growth: GROWTH growthSpecs ; simrisc-16.02.00/bisonc++parser/inc/normal0000664000175000017500000000004214665030471017205 0ustar frankfranknormal: NORMAL carrierSpecs ; simrisc-16.02.00/bisonc++parser/grammar0000664000175000017500000000133314665030471016576 0ustar frankfrank%default-actions quiet %filenames parser %scanner ../scanner/scanner.h %token-path tokens.h // %print-tokens %baseclass-preinclude ../info/info.h %include inc/tokens %% // Define the start-rule below (the name `startrule' may be altered) startrule: startrule keywords | // empty ; %include inc/agerange %include inc/agerangeprobs %include inc/number %include inc/birads %include inc/distributions %include inc/cost %include inc/dose %include inc/specificity %include inc/scenario %include inc/costs %include inc/breastdensities %include inc/modalities %include inc/screening %include inc/tumor keywords: scenario | costs | breastDensities | modalities | screening | tumor | error ; simrisc-16.02.00/build0000775000175000017500000000752014665030471013436 0ustar frankfrank#!/usr/bin/icmake -t. #define LOGENV "SIMRISC" #include "icmconf" string g_logPath = getenv(LOGENV)[1], g_cwd = chdir(""); // initial working directory, ends in / int g_echo = ON; #include "icmake/cuteoln" #include "icmake/backtick" #include "icmake/setopt" #include "icmake/beep" // beep if /usr/local/bin/beep exists and exit #include "icmake/run" #include "icmake/md" #include "icmake/pathfile" #include "icmake/findall" #include "icmake/loginstall" #include "icmake/logzip" #include "icmake/logfile" #include "icmake/uninstall" #include "icmake/special" #include "icmake/clean" #include "icmake/manpage" #include "icmake/latexdoc" #include "icmake/pdf" #include "icmake/manual" #include "icmake/install" #include "icmake/gitlab" void main(int argc, list argv) { string option; int idx; for (idx = listlen(argv); idx--; ) { if (argv[idx] == "-q") { g_echo = OFF; argv -= (list)"-q"; } } echo(g_echo); option = argv[1]; if (option == "clean") clean(0); if (option == "distclean") clean(1); if (option != "") special(); if (option == "install") install(argv[2], argv[3]); if (option == "uninstall") uninstall(argv[2]); if (option == "gitlab") gitlab(); if (option == "man") manpage(); if (option == "manual") manual(); if (option == "pdf") // creates the pdf version of the pdf(); // tech manual if (option == "library") { system("icmbuild library"); beep(); } if (option == "program") { system("icmbuild program"); if (argv[2] == "strip") system("strip " TMP_DIR "/bin/binary"); beep(); } if (option == "xref") { system("icmbuild program"); run("oxref -t main -r replacements -fxs tmp/main.o tmp/lib" LIBRARY ".a > " PROGRAM ".xref"); if (argv[2] == "strip") system("strip " TMP_DIR "/bin/binary"); beep(); } printf("Usage: build [-q] what\n" "Where\n" " [-q]: run quietly, do not show executed commands\n" "`what' is one of:\n" " clean - clean up remnants of previous " "compilations\n" " distclean - clean + fully remove tmp/\n" " library - build " PROGRAM "'s library\n" " man - build the man-page (requires Yodl)\n" " manual - build the html manual (requires Yodl)\n" " pdf - build the pdf manual (requires Yodl)\n" " program [strip] - build " PROGRAM " (optionally strip the\n" " executable)\n" " xref [strip] - same a `program', also builds xref file\n" " using oxref\n" " install selection [base] - to install the software in the \n" " locations defined in the INSTALL.im file,\n" " optionally below base\n" " selection can be\n" " x, to install all components,\n" " or a combination of:\n" " b (binary program),\n" " d (documentation),\n" " m (man-page)\n" " uninstall logfile - remove files and empty directories listed\n" " in the file 'logfile'\n" " gitlab - prepare gitlab's web-pages update\n" " (internal use only)\n" "\n" ); } simrisc-16.02.00/changelog0000664000175000017500000003636214665030471014271 0ustar frankfranksimrisc (16.02.00) * Natural deaths occurring before tumor onsets are no longer using 'UNDETECTED_XXX' exit codes but 'NATURAL_XXX' exit codes. * In those cases 'Yes' status flags are changed to 'No' -- Frank B. Brokken Thu, 15 Jun 2024 11:33:25 +0200 simrisc (16.01.00) * The lung cancer survival parameters (i.e., table S4) received an e (quality of medical support) parameter, like the BC e-parameter. * The simriscparams(7) man-page was updated accordingly -- Frank B. Brokken Wed, 05 Jun 2024 09:35:24 +0200 simrisc (16.00.00) * Reimplemented major elements of the simulation algorithm: elements of the pre-screening, intervals between screening rounds and post-screening are not separately defined anymore, but all call the same implementation components. * Simplified handling of the screening rounds and the post-screening step. Pre-screen now superfluous. For details: sse README.loop-tests * Simrisc's organization was reorganized avoiding multiply implemented elements deriving from versions before simrisc 12.00.00. * The organization of the configuration file and of Analysis specifications was simplified. * Screening::writeParameters reports the attendanceRate in 2 decimals * Growth parameters are specified using millimeters, not anymore using ln(millimeters) * In the data*txt files case indices use natural numbers (starting at 1) * The data*txt files show the death status legend below the time-stamp and analysis label * Type e (quality of the medical care) was added to the survival: type: specifications. * Tumor incidence parameters (probabilities) can also be specified using a table, in addition to using distribution parameters (cf. Incidence in the simriscparams(7) man-page). * Man-pages were updated. -- Frank B. Brokken Wed, 29 May 2024 17:37:41 +0200 simrisc (15.05.00) * natural death ages < tumor death ages are no longer reported as death by tumors * repaired sudden increases in # tumor cases * avoiding tumor sizes < growth.start sizes * the name 'detectableAge' is confusing: renamed to 'onset', indicating the tumor's start * interval cancers prevent exact 5mm tumor occurrences, caused by spurious onset values -- Frank B. Brokken Mon, 29 Jan 2024 12:40:08 +0100 simrisc (15.04.00) * The params.txt file also contains the cumulative death-proportions if specified (currently: with lung-cancer simulations) -- Frank B. Brokken Thu, 07 Dec 2023 21:10:54 +0100 simrisc (15.03.01) * When reading the cumulative death proportions errors in the specification of the cumulative death proportions are checked (like lines broken at a final '='-character). * Changed the copyright to the Gnu GPL * Cosmetics on the simrisc.xref * The c++std file is no longer used. Instead the ICMAKE_CXXFLAGS environment variable is inspected. -- Frank B. Brokken Sat, 28 Oct 2023 15:08:19 +0200 simrisc (15.03.00) * Repaired survival/cptvsdrow: d_vsdRow was set to S3's row instead of S4's element index, which also resulted in errors in computing, e.g., the number of interval cancers. Because of this bug Simrisc before 15.03.00 should not anymore be used for lung cancer simulations. Using Simrisc for breast cancer simulations is OK. * When using lung cancer simulations the parameters written to file now correctly report the lung cancer parameters. -- Frank B. Brokken Sat, 01 Jul 2023 15:34:15 +0200 simrisc (15.02.00) * Costs values are now stored in size_t instead of in uint16_t variables -- Frank B. Brokken Wed, 14 Jun 2023 16:22:36 +0200 simrisc (15.01.00) * Added a column TNM to the data file containing the TNM categories per case. With breast cancer the 2nd value carries no meaning and is set to 0. * Added specification 'bc:' to the default configuration file defining the tumor diameter boundaries when using breast cancer simulations. * The S3 table in the default configuration specifies increasing (inclusive) boundaries for lung cancer tumer diameters. * Added option --tnm inserting -1,0 in the TNM column of the data file for cases not having tumors. * Fixed handling CT sensitivity computations (in the simulations percentages instead of proportions were used). * Fixed the CT specificity mean (was 99.2, changed to .992). * Added the class Log producing extensive logging when handling cases. * Added option --log "begin end logfile [set] " to log process information for the selected case-index ranges. * Fixed a boundary bug in probgroup/indexof.cc causing indexOf() to return an index value exceeding the width of a cumulative probability vector if the generated probability equals 1. -- Frank B. Brokken Mon, 08 May 2023 10:33:36 +0200 simrisc (15.00.00) * Added option --cancer (-c) which is used to specify the simulation type. By default '--cancer breast' is used, in which case breast cancer simulations are performed. Alternatively, '--cancer female' can be specified in which case lung cancer simulations are performed for women, and '--cancer male' can be specified in which case lung cancer simulations are performed for men. * When performing lung-cancer simulations modality CT must be used (default costs, dose, sensitivity and specificity parameters are defined in the default configuration file in section 'Modalities:' 'CT:'). * Added option --cum-death (-d) which is used to specify the name of a file containing the 101 cumulative death proportions. * Default proportions are provided in the default configuration file at the 'death:' parameter specification of the section 'Scenario:'. * Option --err is still present, but is removed in a future version. It is not mentioned in the current man-page and in simrisc's usage information anymore. * The default configuration file contains parameters used with lung cancer simulations for Costs: Discount: proportion:, Tumor: Growth: start:, Tumor: Growth: lung: (used to specify the selfDetect parameters, for breast cancer simulations Tumor: Growth: breast: is used) Tumor: Growth: DoublingTime: lung: And separate Male: and Female: subsections for Tumor: Incidence: (for breast cancer simulation Tumor: Incidence: Breast: is used) Survival: lung[0-3]: sections to determine the survival parameters, in combination with the new section Tumor: S3: (see the simriscparams(7) man-page for details). * The simrisc(1) and simriscparams(7) manpages were updated. -- Frank B. Brokken Sat, 10 Dec 2022 12:25:10 +0100 simrisc (14.05.01) * Ready for libbobcat6 * Added 'c++std' defining the c++ standard to use for compilation. Compilation commands also use -Werror * Renamed the 'oxref' option in the 'build' script to 'xref' -- Frank B. Brokken Sat, 17 Sep 2022 16:07:04 +0200 simrisc (14.05.00) * Added option --err (-e) to select the previously used but inorrect algorithm for computing the Beir7 risk vector, instead of using the (now default) correct algorithm for computing the risk vector. -- Frank B. Brokken Sat, 22 May 2021 22:09:08 +0200 simrisc (14.04.00) * Modalities support spread-variation. See the simriscparams(7) man-page for a description of how the configuration file was extended wrt the Modality-specifications. When 'spead: true' is specified then Loop::iterate() now calls d_modalities.vary(), calling ModBase vary for the various Modalities. Previously defined 'double' Modality values now use VSDs * Age range specifications do not end in ':'s anymore. E.g., ageGroup: 1 - 50 * Beir7's parameter specification first specifies eta, then beta. * The Case-specific data matrix defines an extra (18th) colum, showing the results of the screening rounds for each simulated case. * When 'spread: true' is specified the actually used and original parameter values are listed in a file, by default 'spread-$.txt', where $ is replaced by the loop iteration index. Use the option '-s' to specify a non-default filename (cf. simrisc(1)); * The man-pages were update -- Frank B. Brokken Sun, 11 Apr 2021 11:00:58 +0200 simrisc (14.03.00) * To specify no screening round ages 'round: none' should be specified. When 'round: none' is specified then the rounds file is not written. -- Frank B. Brokken Sun, 21 Feb 2021 13:30:38 +0100 simrisc (14.02.00) * Option --cases was renamed to --last-case (-l) to avoid confusion with the cases: specification in the configuration file * Default option values are reset at each Analysis: specification. * Analysis files now use (capitalized) Analysis: specifications. * Fixed some specification errors in the simriscparams(7) man-page * Updated the simrisc(1) man-page * Updated the usage info -- Frank B. Brokken Wed, 27 Jan 2021 16:39:02 +0100 simrisc (14.01.00) * 'm:' parameter specifications for the four bi-rad categories were added to the Mammo specifications in the default configuration file * The 'm:' parameter corresponding to the cases bi-rad category given the case's age is used when computing the sensitivity associated with the Mammo modality * The simriscparams(7) man-page was updated accordingly * The simrisc --help info lists the --cases (-c) option instead of --nCases (-n). -- Frank B. Brokken Fri, 22 Jan 2021 11:14:22 +0100 simrsic (14.00.00) * Case-specific data are reproducible when specifying 'generator: fixed' or 'generator: increasing' * Parameter variation when specifying 'spread: true' is available * The organization of the configuration file was drastically modified * The validity of parameter value specifications is checked -- Frank B. Brokken Wed, 20 Jan 2021 20:43:53 +0100 simrsic (13.03.00) * Redefined variables in the Costs class: the discount percentage in fact is a proportion, and its type was adapted accordingly * MRI simulation was incorrectly implemented in the original program. After fixing this error handling False Negatives is now using a standard procedure for all Modalities * The configuration file and the simriscparams man-page were adapted accordingly. * The classes Options, Random, and Error are now singletons. -- Frank B. Brokken Tue, 27 Oct 2020 19:56:12 +0100 simrsic (13.02.01) * Added a Copyright-notice file -- Frank B. Brokken Mon, 12 Oct 2020 09:34:04 +0200 simrsic (13.02.00) * Specifications using multiple analyses no longer overwrite existing files * Added specification 'generator' to the scenario specifications to specify the way the random number generator is initialized * The classes Pool, IDpool, and RandomPool are superfluous * MRI handling is activated. * The loop Status enum now uses 'PRESENT' instead of 'ALIVE' and Status enum values beginning with 'LEFT_' instead of 'NATURAL_' -- Frank B. Brokken Tue, 29 Sep 2020 16:04:26 +0200 simrsic (13.01.00) * Added missing registration of d_roundDetected to loop/maybedetect.cc * loop/selfdetected.cc and loop/treatmentdeath.cc are identical except for used Status values: now inline, calling new function in loop/characteristics.cc * Added a new section OUTPUT to the simrisc(3) man-page, containing descriptions of the content of generated files * By default the id-base option uses value 1 simrsic (13.00.00-pre) * Reorganized config/simrisc, costs associated with Modalities are now defined by the individual modality-specifications * Repaired the computation of d_prePeriod in tumor/reset.cc * Implemented Danielle's code and modified the handling of multiple modalities * Standardized the handling of Modalities by defining one standard interface * Updated the man-pages -- Frank B. Brokken Thu, 16 Jul 2020 13:45:32 +0200 simrsic (12.03.01) * Dropped 'oneAnalysis' and 'showAll' from Options, added specificAges(), fixing a bug in handling specific ages / N-cases specifications -- Frank B. Brokken Fri, 29 May 2020 15:52:30 +0200 simrsic (12.03.00) * Fixed handling of filename specifications in analysis: sections * The --one-analysis option no longer requires command-line arguments * Analysis: specifications may be empty * Minor update of the man-page -- Frank B. Brokken Fri, 29 May 2020 13:39:29 +0200 simrsic (12.02.02) * Changed the content of /usr/share/doc/simrisc: it now contains the README.hierarchy file and the default configuration file (simrisc.gz) -- Frank B. Brokken Tue, 26 May 2020 13:38:10 +0200 simrsic (12.02.01) * Updated the short option letters of the program's usage info -- Frank B. Brokken Tue, 26 May 2020 11:14:14 +0200 simrsic (12.02.00) * Added option --id-base to use id-based random numbers instead of random-pool based random numbers. * All options referring to filesystem entries use capitalized single letter options; all other options are lowercase * Updated the man-pages. * The default parameter specification file is available as the file 'simrisc' in the distribution's .config/ directory -- Frank B. Brokken Mon, 25 May 2020 15:48:49 +0200 simrsic (12.01.01) * New sub-minor release due to a man-page bug. -- Frank B. Brokken Sat, 23 May 2020 21:20:04 +0200 simrsic (12.01.00) * Reorganized the class hierarchy, preparing for multi-threading: see README.hierarcy. * Base directories are created if not available * Output files are provided with a timestamp and optionally analysis labels * Output files are cleaned up: improved table formats, and CSVs for the data files * The file echoing the used parameters is by default not produced. The --parameters option is used to specify the name of that file if requested. * When specifying configuration parameters in the context of an analysis either all, or none of the parameters of a category must be provided. This procedure is used to allow reduction of, e.g., screening rounds. -- Frank B. Brokken Sat, 23 May 2020 19:26:48 +0200 simrsic (12.00.00) * Following a request by Marcel Greuter (m.j.w.greuter@umcg.nl) SimRiSc was completely rewrittin in this release. Earlier specific changelog version information is not available. In the distribution earlier changelog info is available under 'legacy' * This is the initial conversion, offering the basic facilities. The current program produces the same results as the original program, for a single scenario, but specifying 100'000 women is OK. * Lots of work is still required to update the man-pages, and to completely generalize the program. * Debian package construction is (locally) operational. -- Frank B. Brokken Sun, 17 May 2020 17:47:06 +0200 simrisc-16.02.00/CLASSES0000664000175000017500000000047414665030471013432 0ustar frankfranksimulator analysis loop scenario tumor tumorinfo growth survival params vsdparams tableparams incidence beir7 costs modalities screening round densities configlines vsd distribution options random globals err ct tomo mammo mri modbase configlines group probgroup agegroupvsd parser betadist log //typedefs //enums simrisc-16.02.00/compsens/0000775000175000017500000000000014665030471014234 5ustar frankfranksimrisc-16.02.00/compsens/compsense.cc0000664000175000017500000000153614665030471016544 0ustar frankfrank#include #include #include using namespace std; int main() { ifstream in{"../org/simrisc/test3/sensitivity.txt"}; in.ignore(1000, '\n'); double orgYears; double orgCosts; in >> orgYears >> orgYears >> orgCosts; cout << "Originally:\n" << orgYears << ' ' << orgCosts << '\n'; in.close(); in.open("../output/sensitivity.txt"); in.ignore(1000, '\n'); in.ignore(1000, '\n'); in.ignore(1000, '\n'); double simYears; double simCosts; char comma; in >> simYears >> comma >> simYears >> comma >> simCosts; cout << "New simrisc:\n" << simYears << ' ' << simCosts << '\n'; double q1 = orgYears / simYears; double q2 = orgCosts / simCosts; if (q1 < 1) q1 = 1 / q1; if (q2 < 1) q2 = 1 / q2; cout << q1 << " " << q2 << '\n'; } simrisc-16.02.00/compsens.bim0000664000175000017500000000025714665030471014731 0ustar frankfrank9.03z££t" ÿ¿þ¿ÿ¿ þ¿þ¿ÿ¿ þ¿"þ¿ & þ¿'þ¿ %þ¿ #!$org/simrisc/test3/sensitivity.txt compsens.im simrisc-16.02.00/configlines/0000775000175000017500000000000014665030471014705 5ustar frankfranksimrisc-16.02.00/configlines/configlines2.cc0000664000175000017500000000023714665030471017600 0ustar frankfrank//#define XERR #include "configlines.ih" ConfigLines::ConfigLines(istream &in, uint16_t lineNr) : d_config(in, lineNr) { d_iter = d_config.begin(); } simrisc-16.02.00/configlines/get.cc0000664000175000017500000000150014665030471015767 0ustar frankfrank//#define XERR #include "configlines.ih" bool ConfigLines::get() { if (d_redo) { d_redo = false; return d_iter != d_config.end(); } while (d_iter != d_config.end()) { string const &line = d_iter->line(); if (line.empty() or isspace(line.front())) // skip empty lines { ++d_iter; continue; } d_line = d_iter->line(); d_lineNr = d_iter->lineNr(); d_tail = d_iter->tail(); d_value = d_iter->value(); d_key = d_iter->key(); if (d_key.empty()) // no key -> store d_key = d_line; // the line as key ++d_iter; return true; } return false; // end of file } simrisc-16.02.00/configlines/configlines1.cc0000664000175000017500000000022114665030471017570 0ustar frankfrank//#define XERR #include "configlines.ih" ConfigLines::ConfigLines(string const &fname) : d_config(fname) { d_iter = d_config.begin(); } simrisc-16.02.00/configlines/insert.cc0000664000175000017500000000032614665030471016521 0ustar frankfrank//#define XERR #include "configlines.ih" ostream &ConfigLines::insert(ostream &out) const { for (auto iter = d_iter, end = d_config.end(); iter != end; ++iter) out << *iter << '\n'; return out; } simrisc-16.02.00/configlines/key1.cc0000664000175000017500000000024714665030471016070 0ustar frankfrank//#define XERR #include "configlines.ih" void ConfigLines::key(string const &newKey) { d_tail = d_line; d_key = newKey; d_line = newKey + ' ' + d_tail; } simrisc-16.02.00/configlines/configlines.h0000664000175000017500000000361014665030471017356 0ustar frankfrank#ifndef INCLUDED_CONFIGLINES_ #define INCLUDED_CONFIGLINES_ #include #include #include "../options/options.h" class ConfigLines { friend std::ostream &operator<<(std::ostream &out, ConfigLines const &configLines); typedef FBB::Config::const_iterator const_iterator; typedef FBB::CF_Line CF_Line; FBB::Config d_config; uint16_t d_lineNr; std::string d_key; std::string d_tail; std::string d_line; std::string d_value; const_iterator d_iter; // iterator to Config lines bool d_redo = false; // next get() returns d_line public: ConfigLines(std::string const &fname); ConfigLines(std::istream &in, uint16_t lineNr); // void load(); void redo(); bool get(); void key(std::string const &newKey); // 1 std::string const &line() const; // only after get() returns true std::string const &tail() const; std::string const &value() const; // 1st word of the key's value std::string const &key() const; // h uint16_t lineNr() const; private: std::ostream &insert(std::ostream &out) const; }; inline uint16_t ConfigLines::lineNr() const { return d_lineNr; } inline void ConfigLines::redo() { d_redo = true; } inline std::string const &ConfigLines::key() const { return d_key; } inline std::string const &ConfigLines::line() const { return d_line; } inline std::string const &ConfigLines::value() const { return d_value; } inline std::string const &ConfigLines::tail() const { return d_tail; } inline std::ostream &operator<<(std::ostream &out, ConfigLines const &configLines) { return configLines.insert(out); } #endif simrisc-16.02.00/configlines/icmconf0000664000175000017500000000010214665030471016237 0ustar frankfrank#define LIBRARY "configlines" #include "../icmconf.lib" simrisc-16.02.00/configlines/configlines.ih0000664000175000017500000000020014665030471017517 0ustar frankfrank#include "configlines.h" #include "../xerr/xerr.ih" #include "../options/options.h" #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/configlines/frame0000664000175000017500000000007414665030471015723 0ustar frankfrank//#define XERR #include "configlines.ih" ConfigLines:: { } simrisc-16.02.00/configlines/load.cc0000664000175000017500000000025614665030471016136 0ustar frankfrank////#define XERR //#include "configlines.ih" // //void ConfigLines::load() //{ // d_config.load(Options::instance().configFile()); // d_iter = d_config.begin(); //} // simrisc-16.02.00/Copyright-notice0000664000175000017500000000305514665030471015562 0ustar frankfrank-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Simrisc is a program simulating the effects of cancer and cancer treatments. The program is a complete rewrite of the original simrisc program developed at the University Medical Center Groningen (UMCG) by a research group around Truuske de Bock and Marcel Greuter. The current program is developed in close collaboration with Truuske and Marcel. Copyright (C) 2020-now Frank B. Brokken (f.b.brokken@rug.nl) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. 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. A copy of the GNU General Public License can be retrieved from http://www.gnu.org/licenses/. -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEE3zIT3rFWdzLmXjtNfbKovurk2KoFAl+EBmMACgkQfbKovurk 2Ko+MwgAh6Z8SnvsasIF15lfxkeqSx2x8EGwb6Wz0fFVfbd6nl4kbcidZZcWHtok bd526YR/Py24cXfcMfkf4+NlB9tnaeHTyBleDCBJEh1L3MUDZdUzI4jN7UsLTjF8 VCxTCMbhqS0VBGGmvQ9ZZ8AOuRzzTK93Fi2IXa2g55PAINlCDFzmHOnKQ4j8vl3X bmFZoNfkKfypYD9XZkhURnZdMTc9athaGb+A5Ju3E2lt3ozeu5joCKYeOvlkFodX X4AQiqkwuzRnSK9oXat09h2xkII8pPJxnJBWrtYkzU834cn2WwXc9q0c7F+EUp51 lCcXFyr/POylSW0aoQHV60alq89NLw== =QWjm -----END PGP SIGNATURE----- simrisc-16.02.00/costs/0000775000175000017500000000000014665030471013540 5ustar frankfranksimrisc-16.02.00/costs/setage.cc0000664000175000017500000000021214665030471015312 0ustar frankfrank//#define XERR #include "costs.ih" void Costs::setAge() { d_base.back() = "age:"; Parser::nonNegative(d_base, d_referenceAge); } simrisc-16.02.00/costs/costs.ih0000664000175000017500000000052114665030471015213 0ustar frankfrank#include "costs.h" #include "../xerr/xerr.ih" #include #include #include #include #include #include #include "../globals/globals.h" //#include "../options/options.h" #include "../scenario/scenario.h" #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/costs/setproportion.cc0000664000175000017500000000146614665030471017005 0ustar frankfrank#define XERR #include "costs.ih" void Costs::setProportion(bool lungCancer) { d_base.back() = "proportion:"; LineInfo const *lineInfo = Parser::one(d_base).get(); istringstream in{ lineInfo->tail }; // get the line's tail if (not (in >> d_discountProportion)) { Err::msg(Err::SPEC_ERROR) << "[Costs:] proportion: must specify at least one value" << endl; return; } // at LC simulations: if (lungCancer) // maybe a 2nd proportion? { double prop2; if (in >> prop2) // if so, use it d_discountProportion = prop2; } if (not Globals::proportion(d_discountProportion)) Err::range(); } simrisc-16.02.00/costs/setdiameters.cc0000664000175000017500000000026514665030471016543 0ustar frankfrank#define XERR #include "costs.ih" void Costs::setDiameters() { d_base.back() = "diameters:"; if (not extractDiameters(Parser::one(d_base))) Err::specification(); } simrisc-16.02.00/costs/setdiscount.cc0000664000175000017500000000017414665030471016415 0ustar frankfrank#define XERR #include "costs.ih" void Costs::setDiscount(bool lungCancer) { setAge(); setProportion(lungCancer); } simrisc-16.02.00/costs/costs.f0000664000175000017500000000105014665030471015036 0ustar frankfrankinline double Costs::usingAt(double age) const { return discount(age, d_usingCosts); } inline double Costs::screening(double age, size_t cost) const { return discount(age, cost); } inline double Costs::treatment(double age, double diameter, bool metastasis) const { // calls lcTreatment with lung cancer, otherwise: otherTreatment return (this->*d_treatment)(age, diameter, metastasis); } // return (this->*d_using)(age, d_usingCosts); // return (this->*d_screening)(age, cost); simrisc-16.02.00/costs/setlungcancer.cc0000664000175000017500000000051714665030471016707 0ustar frankfrank#define XERR #include "costs.ih" void Costs::setLungCancer() { size_t unused; // = modbase->cost(), extracted by ModBase if (not Parser::extract(Parser::one(d_base), unused, d_usingCosts, d_treatmentCosts[0], d_treatmentCosts[1])) Err::atLeast(0); } simrisc-16.02.00/costs/extractdiameters.cc0000664000175000017500000000164314665030471017423 0ustar frankfrank#define XERR #include "costs.ih" bool Costs::extractDiameters(Parser::Lines &&lines) { if (not lines) return false; istringstream in{ lines.get()->tail }; // extract the diameters double lastAge = -1; // ages must increase CostPair spec; while (in >> spec.first) // begin diameter { if (spec.first <= lastAge) // not increasing return false; // ignore the : if (not (in.ignore() >> spec.second)) // followed by treatment return false; // cost. Ends at an // incomplete entry d_treatmntPair.push_back(spec); lastAge = spec.first; } return d_treatmntPair.size() > 0 and Globals::isPositiveZero(d_treatmntPair.front().first); } simrisc-16.02.00/costs/othertreatment.cc0000664000175000017500000000034414665030471017115 0ustar frankfrank#define XERR #include "costs.ih" //code double Costs::otherTreatment(double age, double diameter, bool metastasis) const { return discount(age, usingAt(age) + cost(diameter)); } //= simrisc-16.02.00/costs/costs.h0000664000175000017500000000514614665030471015052 0ustar frankfrank#ifndef INCLUDED_COSTS_ #define INCLUDED_COSTS_ // Costs: // biop: 176 // diameters: 0: 6438 20: 7128 50: 7701 // Discount: // age: 50 // # breast lung // proportion: 0 4 // CT: // # screening diagnosis M0 M1 (M0, M1: Table S3) // costs: 176 1908 37909 56556 // ^^^ // | // extracted by ModBase::costBase #include "../typedefs/typedefs.h" #include "../parser/parser.h" class Costs { // lower diam., cost typedef std::pair CostPair; StringVect d_base; // costs of treatments given std::vector d_treatmntPair; // tumor diam. double d_referenceAge; // discount reference age double d_discountProportion; size_t d_biopCosts; // set by usingCosts size_t d_usingCosts; // for lungCancer: diagnosis, // otherwise biopsy cost std::vector d_treatmentCosts; // for lungCancer: M0/M1 states // lcTreatment or otherTreatment double (Costs::*d_treatment)(double age, double diameter, bool metastasis) const; public: Costs(); double usingAt(double age) const; // .f double screening(double age, size_t cost) const; // .f double treatment(double age, double diameter, bool metastasis) const; // .f void writeParameters(std::ostream &out) const; private: bool extractDiameters(Parser::Lines &&lines); void setAge(); void setDiameters(); void setDiscount(bool lungCancer); void setLungCancer(); // sets LC diagnosis costs // as d_usingCosts void setProportion(bool lungCancer); void setVariables(bool lungCancer); size_t cost(double diameter) const; // for LungCancer double lcTreatment(double age, double diameter, // @ treatment bool metastasis) const; double otherTreatment(double age, double diameter, // @ treatment bool metastasis) const; double discount(double age, size_t cost) const; // otherwise }; #include "costs.f" #endif simrisc-16.02.00/costs/icmconf0000664000175000017500000000007414665030471015102 0ustar frankfrank#define LIBRARY "costs" #include "../icmconf.lib" simrisc-16.02.00/costs/writeparameters.cc0000664000175000017500000000134514665030471017270 0ustar frankfrank//#define XERR #include "costs.ih" void Costs::writeParameters(ostream &out) const { Globals::setWidthPrec(out, 2, 1) << "Costs:\n" " biopsy: " << setw(4) << d_usingCosts << "\n" " Discount:\n" " reference age: " << setw(4) << d_referenceAge << '\n'; Globals::setWidthPrec(out, 4, 3) << " proportion: " << setw(5) << d_discountProportion << "\n" " diameters:\n"; Globals::setWidthPrec(out, 2, 0); for (size_t idx = 0; idx != d_treatmntPair.size(); ++idx) out << " diameter >= " << setw(6) << d_treatmntPair[idx].first << " mm: " << setw(4) << d_treatmntPair[idx].second << '\n'; out.put('\n'); } simrisc-16.02.00/costs/discount.cc0000664000175000017500000000025614665030471015702 0ustar frankfrank#define XERR #include "costs.ih" //code double Costs::discount(double age, size_t cost) const { return cost * pow(1 + d_discountProportion, d_referenceAge - age); } //= simrisc-16.02.00/costs/costs1.cc0000664000175000017500000000045114665030471015263 0ustar frankfrank#define XERR #include "costs.ih" Costs::Costs() : d_base{ ""} { bool lungCancer = not Globals::isBreast(); setDiameters(); setDiscount(lungCancer); setVariables(lungCancer); // d_base, d_using, d_screening, // d_treatment } simrisc-16.02.00/costs/frame0000664000175000017500000000006014665030471014551 0ustar frankfrank//#define XERR #include "costs.ih" Costs:: { } simrisc-16.02.00/costs/setvariables.cc0000664000175000017500000000126114665030471016533 0ustar frankfrank#define XERR #include "costs.ih" void Costs::setVariables(bool lungCancer) { if (not lungCancer) { d_base.back() = "biop:"; Parser::nonNegative(d_base, d_usingCosts); d_treatment = &Costs::otherTreatment; return; } // below: ony used for LC simulations // reset d_base to read the CT: costs d_base.back() = "CT:"; d_base.push_back("costs:"); d_treatmentCosts.resize(2); d_treatment = &Costs::lcTreatment; setLungCancer(); } // d_using = &Costs::lcUsing; // d_screening = &Costs::lcScreening; // d_using = &Costs::otherUsing; // d_screening = &Costs::otherScreening; simrisc-16.02.00/costs/cost.cc0000664000175000017500000000066314665030471015024 0ustar frankfrank#define XERR #include "costs.ih" size_t Costs::cost(double diameter) const { // reversed search: start at the max. diameter return find_if(d_treatmntPair.rbegin(), d_treatmntPair.rend(), [&](CostPair const &costPair) { return diameter >= costPair.first; } )->second; } // xerr("cost with diam. " << diameter << " = " << ret); simrisc-16.02.00/costs/lctreatment.cc0000664000175000017500000000026714665030471016376 0ustar frankfrank#define XERR #include "costs.ih" //code double Costs::lcTreatment(double age, double diameter, bool metastasis) const { return discount(age, d_treatmentCosts[metastasis]); } //= simrisc-16.02.00/ct/0000775000175000017500000000000014665030471013013 5ustar frankfranksimrisc-16.02.00/ct/vspecificity.cc0000664000175000017500000000016114665030471016021 0ustar frankfrank//#define XERR #include "ct.ih" double CT::vSpecificity(double age) const { return d_specificity.value(); } simrisc-16.02.00/ct/setdose.cc0000664000175000017500000000027114665030471014770 0ustar frankfrank#define XERR #include "ct.ih" void CT::setDose() { base().back() = "dose:"; if (not Parser::one(base(), d_dose) or d_dose < 0) Err::msg(Err::SPEC_ERROR) << "dose:"; } simrisc-16.02.00/ct/setspecificity.cc0000664000175000017500000000015314665030471016350 0ustar frankfrank//#define XERR #include "ct.ih" void CT::setSpecificity() { extract("specificity:", d_specificity); } simrisc-16.02.00/ct/setsensitivity.cc0000664000175000017500000000121514665030471016427 0ustar frankfrank//#define XERR #include "ct.ih" void CT::setSensitivity() { auto lines = Parser::any({ "CT:", "sensitivity:" }); bool checkRange = true; while (true) { LineInfo const *line = lines.get(); if (line == 0) break; add(&checkRange, *line); // some failure: don't check ranges } if (d_sensitivity.size()) // sensitivity groups { // must cover 0..* if (d_sensitivity.front().group.begin() != 0 or not d_sensitivity.back().group.maxEnd() ) Err::msgTxt(Err::CT_SENS_RANGE); } } simrisc-16.02.00/ct/ct1.cc0000664000175000017500000000040014665030471014003 0ustar frankfrank#define XERR #include "ct.ih" // configfile lines: CT::CT(Tumor const &tumor) : ModBase("CT"), d_tumor(tumor), d_specificity(VARY_NONNEG) { if (not defined()) return; setDose(); setSpecificity(); setSensitivity(); } simrisc-16.02.00/ct/ct.ih0000664000175000017500000000044714665030471013750 0ustar frankfrank#include "ct.h" #include "../xerr/xerr.ih" #include #include "../globals/globals.h" #include "../tumor/tumor.h" #include "../parser/parser.h" // static inline double CT::sensFun(double diameter) { return 100 * (.5 * diameter - 1.5); } #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/ct/ct.h0000664000175000017500000000301014665030471013564 0ustar frankfrank#ifndef INCLUDED_CT_ #define INCLUDED_CT_ #include #include "../vsd/vsd.h" #include "../modbase/modbase.h" // ModBase uses CT: costs: to read the 'screening' costs. // CT reads // // CT: // # screening diagnosis M0 M1 (M0, M1: Table S3) // costs: 176 1908 37909 56556 // // dose: 1 // # diam. // sensitivity: 0 - 3: 0 // sensitivity: 3 - 5: -1 # formula: (.5 * diam - 1.5) * 100 // sensitivity: 5 - *: 100 // // # mean stddev dist // specificity: 99.2 .076 Normal class Tumor; class CT: public ModBase { struct Sensitivity { Group group; int sens; }; double d_dose; Tumor const &d_tumor; VSD d_specificity; std::vector d_sensitivity; public: CT(Tumor const &tumor); ~CT() override; // currently empty private: void add(bool *checkRange, LineInfo const &line); static double sensFun(double diameter); // .ih void setDose(); void setSensitivity(); void setSpecificity(); double vDose(uint16_t) const override; void vInsert(std::ostream &out) const override; double vSensitivity(size_t idx) const override; double vSpecificity(double age) const override; void vVary(std::ostream &out) override; void extract(char const *keyword, VSD &dest); }; #endif simrisc-16.02.00/ct/icmconf0000664000175000017500000000007114665030471014352 0ustar frankfrank#define LIBRARY "ct" #include "../icmconf.lib" simrisc-16.02.00/ct/extract.cc0000664000175000017500000000021214665030471014767 0ustar frankfrank//#define XERR #include "ct.ih" void CT::extract(char const *keyword, VSD &dest) { base().back() = keyword; extractBase(dest); } simrisc-16.02.00/ct/destructor.cc0000664000175000017500000000005614665030471015521 0ustar frankfrank//#define XERR #include "ct.ih" CT::~CT() {} simrisc-16.02.00/ct/vinsert.cc0000664000175000017500000000072514665030471015020 0ustar frankfrank//#define XERR #include "ct.ih" void CT::vInsert(ostream &out) const { VSD::fmt(0, 2, 0, 3); for (Sensitivity const &sens: d_sensitivity) { out << setw(4) << ' ' << "sensitivity: " << sens.group << ": "; if (sens.sens == -1) out << "f(diameter), cf. configuration file\n"; else out << sens.sens << '\n'; } out << setw(4) << ' ' << "specificity: " << d_specificity << '\n'; } simrisc-16.02.00/ct/vdose.cc0000664000175000017500000000015614665030471014444 0ustar frankfrank//#define XERR #include "ct.ih" double CT::vDose([[maybe_unused]] uint16_t idx) const { return d_dose; } simrisc-16.02.00/ct/frame0000664000175000017500000000005214665030471014025 0ustar frankfrank//#define XERR #include "ct.ih" CT:: { } simrisc-16.02.00/ct/add.cc0000664000175000017500000000132214665030471014050 0ustar frankfrank//#define XERR #include "ct.ih" // sensitivity: 0 - 3 0 # sensFixed // sensitivity: 3 - 5 -1 # sensFun: formula: (.5 * diam - 1.5) * 100 // sensitivity: 5 - * 100 # sensFixed void CT::add(bool *checkRange, LineInfo const &line) { Sensitivity sensitivity{ Group{ RANGE } }; if (not Parser::extract(line, sensitivity.group, sensitivity.sens)) { *checkRange = false; return; } if ( // invalid sens. value not (0 <= sensitivity.sens and sensitivity.sens <= 100) and sensitivity.sens != -1 ) { Err::msgTxt(Err::CT_SENS); return; } d_sensitivity.push_back(move(sensitivity)); } simrisc-16.02.00/ct/vsensitivity.cc0000664000175000017500000000056014665030471016103 0ustar frankfrank#define XERR #include "ct.ih" double CT::vSensitivity(size_t idx) const { double diameter = d_tumor.diameter(); for (Sensitivity const &sens: d_sensitivity) { if (sens.group.contains(diameter)) return (sens.sens != -1 ? sens.sens : sensFun(diameter)) / 100; } Err::msg(Err::CT_NO_SENS) << diameter << '\n'; return 100; } simrisc-16.02.00/ct/vvary.cc0000664000175000017500000000044014665030471014467 0ustar frankfrank//#define XERR #include "ct.ih" // override void CT::vVary(ostream &out) { d_specificity.vary(); out << " CT:\n" " sensitivity: f(diam), cf. config. file\n"; //d_sensitivity.showVary(out); out << " specificity: "; d_specificity.showVary(out); } simrisc-16.02.00/densities/0000775000175000017500000000000014665030471014374 5ustar frankfranksimrisc-16.02.00/densities/xerr/0000775000175000017500000000000014665030471015354 5ustar frankfranksimrisc-16.02.00/densities/xerr/xerr.ih0000664000175000017500000000131414665030471016655 0ustar frankfrank// define XERR to activate the xerr/xerr(2) macros: // xerr(insertion) // inserts the '<<' concatenated elements into std::cerr // preceded by the name of the source file, and ended by ' ' // xerr2(insertion, code) // performs the insertion if X is defined, and (unconditionally) // executes the statement(s) in `code'. `code' must be valid // C(++) code. // #ifdef XERR #include #define xerr(insertion) std::cerr << __FILE__": " << insertion << ' ' #define xerr2(insertion, code) { std::cerr << __FILE__": " << insertion << ' '; code; } #else #define xerr(insertion) #define xerr2(insertion, code) code #endif simrisc-16.02.00/densities/densities1.cc0000664000175000017500000000104514665030471016753 0ustar frankfrank//#define XERR #include "densities.ih" Densities::Densities() : d_base{ "BreastDensities:", "ageGroup:" } { if (Globals::simulationType() != BREAST) return; // retrieve the Densities: ageGroup: lines auto lines = Parser::any(d_base); bool checkRange = true; // check whether age ranges connect. while (true) { LineInfo const *line = lines.get(); if (line == 0) break; add(&checkRange, *line); // some failure: don't check ranges } } simrisc-16.02.00/densities/densities.h0000664000175000017500000000272514665030471016542 0ustar frankfrank#ifndef INCLUDED_DENSITIES_ #define INCLUDED_DENSITIES_ // example config spec.: // BreastDensities: // // # bi-rad: a b c d // ageGroup: 0 - 40 .05 .30 .48 .17 // ageGroup: 40 - 50 .06 .34 .47 .13 // ageGroup: 50 - 60 .08 .50 .37 .05 // ageGroup: 60 - 70 .15 .53 .29 .03 // ageGroup: 70 - * .18 .54 .26 .02 #include #include "../probgroup/probgroup.h" #include "../typedefs/typedefs.h" class Densities { StringVect d_base; ProbGroup::Vector d_densities; // contains the ageGroup data public: Densities(); ProbGroup::Vector const *biRad() const; void writeParameters(std::ostream &out) const; private: void add(bool *checkRange, LineInfo const &ageGroup); bool nextRange(ProbGroup const &next) const; static bool percentages(std::vector const &vect); }; inline ProbGroup::Vector const *Densities::biRad() const { return &d_densities; } // birad idx for age, given // its probability // uint16_t biradIdx(double age, double prob) const; // randomly determined bi-rad indices // for screening round ages // Uint16Vect biRadIndices(DoubleVect const &ages) const; #endif simrisc-16.02.00/densities/icmconf0000664000175000017500000000010014665030471015724 0ustar frankfrank#define LIBRARY "densities" #include "../icmconf.lib" simrisc-16.02.00/densities/densities.ih0000664000175000017500000000040214665030471016701 0ustar frankfrank#include "densities.h" #include "../xerr/xerr.ih" #include #include #include "../random/random.h" #include "../parser/parser.h" #include "../globals/globals.h" #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/densities/writeparameters.cc0000664000175000017500000000045414665030471020124 0ustar frankfrank//#define XERR #include "densities.ih" void Densities::writeParameters(std::ostream &out) const { out << "BreastDensities:\n"; Globals::setWidthPrec(out, 4, 3); for (ProbGroup const &density: d_densities) out << setw(2) << ' ' << density << '\n'; out.put('\n'); } simrisc-16.02.00/densities/proportions.cc0000664000175000017500000000070414665030471017302 0ustar frankfrank//#define XERR #include "densities.ih" // static bool Densities::percentages(vector const &vect) { return find_if(vect.begin(), vect.end(), [&](double value) { return value < 0 or 1 < value; // if not in [0..1] then } // not a percentage -> ) // vect.end() is not returned == vect.end(); } simrisc-16.02.00/densities/frame0000664000175000017500000000007014665030471015406 0ustar frankfrank//#define XERR #include "densities.ih" Densities:: { } simrisc-16.02.00/densities/add.cc0000664000175000017500000000162014665030471015432 0ustar frankfrank#define XERR #include "densities.ih" // # bi-rad: a b c d // ageGroup: 0 - 40: .05 .30 .48 .17 void Densities::add(bool *checkRange, LineInfo const &line) { ProbGroup density{ RANGE }; if (not Parser::extract(line, density)) // density spec. error { *checkRange = false; return; } //xerr("ProbGroup: " << density); Err::Context context; if (not percentages(density.prob())) context = Err::RANGE_0_1; else if (not density.sumOne()) context = Err::PROB_SUM; else // so far all's OK { if (*checkRange) { if (density.group().nextRange(d_densities)) d_densities.push_back(density); else *checkRange = false; } return; } Err::msgTxt(context); } simrisc-16.02.00/distribution/0000775000175000017500000000000014665030471015124 5ustar frankfranksimrisc-16.02.00/distribution/fmt.cc0000664000175000017500000000031214665030471016215 0ustar frankfrank//#define XERR #include "distribution.ih" // static void Distribution::fmt(unsigned intWidth, unsigned precision) { s_width = intWidth + precision + (precision > 0); s_precision = precision; } simrisc-16.02.00/distribution/find.cc0000664000175000017500000000034714665030471016357 0ustar frankfrank#define XERR #include "distribution.ih" // static DistType Distribution::find(string const &name) { return static_cast( std::find(s_name.begin(), s_name.end(), name) - s_name.begin() ); } simrisc-16.02.00/distribution/insert.cc0000664000175000017500000000200714665030471016736 0ustar frankfrank//#define XERR #include "distribution.ih" std::ostream &Distribution::insert(std::ostream &out) const { switch (d_distType) { case N_DISTRIBUTIONS: out << setw(12) << ' '; break; case BETA_VARY: { out << '\n' << setw(15) << ' ' << "Beta: constant " " factor " " aParam " " bParam\n" << setw(20) << ' '; auto pair = Random::instance().betaParameters(); Globals::setPrecision(out, 5); for (size_t idx = 0, end = pair.first; idx != end; ++idx) out << setw(10) << pair.second[idx]; } break; default: Globals::setWidthPrec(out, s_width, s_precision) << (d_exp ? exp(d_confValue) : d_confValue) << " (" << s_name[d_distType] << ')'; break; } return out; } simrisc-16.02.00/distribution/data.cc0000664000175000017500000000165514665030471016353 0ustar frankfrank//#define XERR #include "distribution.ih" StringVect Distribution::s_name // see enums.h { "Uniform" , // UNIFORM "Uniform" , // UNIFORM_CASE "LogNormal" , // LOGNORMAL "Normal", // NORMAL_VARY "Uniform" , // UNIFORM_VARY "LogNormal" , // LOGNORMAL_VARY "Beta" , // BETA_VARY }; // the beta distribution have been initialized for male/female simulations // so only one varyBeta can be used. double (Distribution::*Distribution::s_varyParam[])(double orgValue) const = { &Distribution::varyMean, // VARY_MEAN, all OK &Distribution::varyNonNeg, // VARY_NONNEG, values must be >= 0 &Distribution::varyProb, // VARY_PROB, values must be probabilities &Distribution::varyBeta, // VARY_BETA, the Beta distributions }; unsigned Distribution::s_width = 0; unsigned Distribution::s_precision = 0; simrisc-16.02.00/distribution/accept.cc0000664000175000017500000000016514665030471016674 0ustar frankfrank#define XERR #include "distribution.ih" double Distribution::accept(double orgValue) const { return orgValue; } simrisc-16.02.00/distribution/varybeta.cc0000664000175000017500000000021414665030471017245 0ustar frankfrank#define XERR #include "distribution.ih" double Distribution::varyBeta(double orgValue) const { return Random::instance().betaVary(); } simrisc-16.02.00/distribution/ln.cc0000664000175000017500000000017614665030471016050 0ustar frankfrank//#define XERR #include "distribution.ih" void Distribution::ln() { d_confValue = log(d_confValue); d_exp = true; } simrisc-16.02.00/distribution/xlat.cc0000664000175000017500000000042214665030471016401 0ustar frankfrank//#define XERR #include "distribution.ih" // static DistType Distribution::xlat(LineInfo const &info, string const &name) { auto ret = find(name); if (ret == N_DISTRIBUTIONS) Err::msg(Err::UNDEFINED_DIST) << '`' << name << '\'' << endl; return ret; } simrisc-16.02.00/distribution/distribution1.cc0000664000175000017500000000027514665030471020237 0ustar frankfrank//#define XERR #include "distribution.ih" Distribution::Distribution(VaryType varyType) : d_value(Globals::vary() ? s_varyParam[varyType] : &Distribution::accept), d_exp(false) {} simrisc-16.02.00/distribution/varynonneg.cc0000664000175000017500000000102514665030471017617 0ustar frankfrank#define XERR #include "distribution.ih" double Distribution::varyNonNeg(double orgValue) const { for (unsigned count = 0; count != MAX_VARY_TRIES; ++count) { // try to obtain a valid spreaded SD if (double ret = varyMean(orgValue); ret >= 0) return ret; } throw Exception{} << "failed to obtain non-negative spread value for " << orgValue << " (spread = " << d_confValue << ", distribution: " << name(d_distType) << ')'; } simrisc-16.02.00/distribution/icmconf0000664000175000017500000000010314665030471016457 0ustar frankfrank#define LIBRARY "distribution" #include "../icmconf.lib" simrisc-16.02.00/distribution/extract.cc0000664000175000017500000000403214665030471017104 0ustar frankfrank#define XERR #include "distribution.ih" // So far the extraction has extracted the mean. Next comes the stddev and // dist, but stddev may not be present -> dist is not present // # mean stddev dist // specificity: 99.2 .076 Normal // // for Beta destributions, used with LC, the name and parameters of the // Beta distribution are provided, which are used when parameter spread // is configured // // # LC: eta beta dist constant factor aParam bParam // male: -1.4 .32 Beta .234091 1.72727 2.664237 5.184883 // female: -1.4 1.40 Beta .744828 .818966 3.366115 4.813548 // the Distribution is extracted if d_confValue is present. // if present it must be >= 0 istream &Distribution::extract(istream &in) { if (not Globals::vary()) // no parameter variation -> no return in; // distribution extraction string next; // inspect the next field on 'in' // try extracting the SD parameter if (not (in >> next)) // nothing is extracted, so this is not { // a Beta dist. spec, or a dist. w/o SD d_distType = NORMAL_VARY; prepareVary(in); // in: unused here in.clear(); return in; } if (next == "Beta") // this is a Beta distribution { d_distType = BETA_VARY; Random::instance().prepareBeta(in); d_value = &Distribution::varyBeta; return in; } d_confValue = stod(next); // no beta, so it must be a value if (d_confValue < 0) { Err::msgTxt(Err::NEGATIVE); in.fail(); return in; } // value was extracted: the distribtion name must be next if (in >> next and (d_distType = find(next)) != N_DISTRIBUTIONS) { prepareVary(in); return in; } Err::msgTxt(Err::UNDEFINED_DIST); in.fail(); return in; } simrisc-16.02.00/distribution/distribution.f0000664000175000017500000000074614665030471020021 0ustar frankfrank// static inline std::string const &Distribution::name(DistType dist) { return s_name[dist]; } inline std::istream &operator>>(std::istream &in, Distribution &dist) { return dist.extract(in); } inline std::ostream &operator<<(std::ostream &out, Distribution const &dist) { return dist.insert(out); } inline DistType Distribution::type() const { return d_distType; } inline double Distribution::value(double orgValue) const { return (this->*d_value)(orgValue); } simrisc-16.02.00/distribution/preparevary.cc0000664000175000017500000000076514665030471020003 0ustar frankfrank//#define XERR #include "distribution.ih" // Beta distribution is handled by extract() void Distribution::prepareVary(istream &in) { if (not Globals::vary()) // no parameter spreading is used return; switch (d_distType) { case NORMAL_VARY: break; case UNIFORM: d_distType = UNIFORM_VARY; break; case LOGNORMAL: d_distType = LOGNORMAL_VARY; break; default: return; } } simrisc-16.02.00/distribution/varymean.cc0000664000175000017500000000137514665030471017263 0ustar frankfrank#define XERR #include "distribution.ih" // in the original code refreshing is handled by reloading the complete config // file. So the argument passed to this member should be the initial value // and not the updated value. double Distribution::varyMean(double orgValue) const { Random &random = Random::instance(); switch (d_distType) { case NORMAL_VARY: return orgValue + random.normalVary() * d_confValue; case UNIFORM_VARY: return orgValue + d_confValue * (random.uniformVary() - .5); case LOGNORMAL_VARY: return random.logNormalVary(orgValue, d_confValue); default: return orgValue; } } // case EXPONENTIAL: // return orgValue + random.exponential(orgValue); simrisc-16.02.00/distribution/distribution.h0000664000175000017500000000557614665030471020031 0ustar frankfrank#ifndef INCLUDED_DISTRIBUTION_ #define INCLUDED_DISTRIBUTION_ #include #include #include "../typedefs/typedefs.h" // The Distribution receives the spread value and distribution name, // Either both or none most be specified. If none is specified then // spread = 0, and calling vary() simply returns the received argument class Distribution { enum { MAX_VARY_TRIES = 10, // max #attempts to obtain a valid varied value }; friend std::istream &operator>>(std::istream &in, Distribution &dist); friend std::ostream &operator<<(std::ostream &out, Distribution const &dist); double d_confValue = 0; // configured (e.g., SD) value DistType d_distType = N_DISTRIBUTIONS; // with, e.g., vectors // points to the function handling // the random value variation (the // vary*/accept functions below) double (Distribution::*d_value)(double orgValue) const; bool d_exp; static StringVect s_name; static unsigned s_width; static unsigned s_precision; static double (Distribution::*s_varyParam[])(double orgValue) const; public: Distribution(VaryType varyType); // returns N_DISTRIBUTIONS if // an undefined name is used static DistType find(std::string const &distName); // intWidth: width of the // integral part static void fmt(unsigned intWidth, unsigned precision); void ln(); // ln(d_confValue) .f DistType type() const; // .f double value(double orgValue) const; // return varied value (if .f // s_vary) or orgValue or // throw an exception // must succeed or err static DistType xlat(LineInfo const &lineInfo, std::string const &distName); static std::string const &name(DistType dist); private: std::istream &extract(std::istream &in); std::ostream &insert(std::ostream &out) const; void prepareVary(std::istream &in); // -> extract() double varyMean(double orgValue) const; // these members are double varyNonNeg(double orgValue) const; // called via d_value double varyProb(double orgValue) const; double varyBeta(double orgValue) const; double accept(double orgValue) const; // if not s_vary }; #include "distribution.f" #endif simrisc-16.02.00/distribution/frame0000664000175000017500000000007614665030471016144 0ustar frankfrank//#define XERR #include "distribution.ih" Distribution:: { } simrisc-16.02.00/distribution/distribution.ih0000664000175000017500000000046714665030471020174 0ustar frankfrank#include "distribution.h" #include "../xerr/xerr.ih" #include #include #include #include #include #include "../err/err.h" #include "../globals/globals.h" #include "../random/random.h" #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/distribution/varyprob.cc0000664000175000017500000000077614665030471017311 0ustar frankfrank#define XERR #include "distribution.ih" double Distribution::varyProb(double orgValue) const { for (unsigned count = 0; count != MAX_VARY_TRIES; ++count) { if ( double ret = varyMean(orgValue); Globals::proportion(ret) ) return ret; } throw Exception{} << "failed to obtain spread proportion for " << orgValue << " (spread parameter = " << d_confValue << ", distribution: " << name(d_distType) << ')'; } simrisc-16.02.00/documentation/0000755000175000017500000000000014665030471015254 5ustar frankfranksimrisc-16.02.00/documentation/man/0000755000175000017500000000000014665030471016027 5ustar frankfranksimrisc-16.02.00/documentation/man/include/0000775000175000017500000000000014665030471017454 5ustar frankfranksimrisc-16.02.00/documentation/man/include/trailer.yo0000664000175000017500000000030314665030471021463 0ustar frankfrank manpagesection(COPYRIGHT) This is free software, distributed under the terms of the GNU General Public License (GPL). manpageauthor() Frank B. Brokken (bf(f.b.brokken@rug.nl)),nl() simrisc-16.02.00/documentation/man/include/configfiles.yo0000664000175000017500000000104014665030471022310 0ustar frankfrankbf(Configuration files) itemization( it() tt(~/.config/simrisc): the default location of the program's configuration file; it() the sr() distribution archive contains the default configuration file as tt(simrisc-VERSION/stdconfig/simrisc), where tt(VERSION) is replaced by sr()'s actual release version; it() when installing sr() using Linux distribution archives (e.g., tt(.deb) files) the default configuration file is commonly available as tt(/usr/shared/doc/simrisc/simrisc.gz) ) simrisc-16.02.00/documentation/man/include/header.yo0000664000175000017500000000143614665030471021261 0ustar frankfrankDEFINEMACRO(Manpage)(1)(\ whenman((Manpage: bf(man -e simrisc ARG1)))\ whenhtml((Manpage: url(ARG1(3simrisc))(ARG1.3.html)))\ ) DEFINEMACRO(itb)(1)(it() bf(ARG1):nl()) DEFINEMACRO(itt)(1)(it() tt(ARG1)) DEFINEMACRO(itrange)(2)(tt(CHAR(91)ARG1, ARG2+CHAR(41))) includefile(../../../release.yo) htmlbodyopt(text)(#27408B) htmlbodyopt(bgcolor)(#FFFAF0) whenhtml(mailto(Frank B. Brokken: f.b.brokken@rug.nl)) DEFINEMACRO(lsoption)(3)(\ bf(--ARG1)=tt(ARG3) (bf(-ARG2))\ ) DEFINEMACRO(laoption)(2)(\ bf(--ARG1)=tt(ARG2)\ ) DEFINEMACRO(loption)(1)(\ bf(--ARG1)\ ) DEFINEMACRO(soption)(1)(\ bf(-ARG1)\ ) DEFINEMACRO(sr)(0)(bf(simrisc)) DEFINEMACRO(Sr)(0)(bf(Simrisc)) DEFINEMACRO(Cpp)(0)(bf(C++)) DEFINEMACRO(prot)(0)(tt((prot))) DELETEMACRO(tt) DEFINEMACRO(tt)(1)(em(ARG1)) simrisc-16.02.00/documentation/man/include/changes.yo0000664000175000017500000000503014665030471021433 0ustar frankfrankCOMMENT( manpagesection(Changes introduced in version 15.01.00) itemization( it() ) manpagesection(Changes introduced in version 15.00.00) itemization( it() In addition to breast cancer simulations sr() can also perform lung cancer simulations for either men or women. By default breast cancer simulations are performed. it() The configuration file was reorganized and extended with parameters used when performing lung cancer simulations: specifications for tt(CT) scans; additional Tumor tt(Beir7, Growth, Incidence,) and tt(Survival) parameters, and a new section tt(S3) containing the age-range specific probabilities of encountering metastases. it() Sr() offers the new option tt(--cancer) specifying the type of simulation. ) When performing lung cancer simulations only the tt(CT) modality can be specified. When performing breast cancer simulations the tt(CT) modality cannot be specified, but as with previous versions: any combination of the tt(Mammo, Tomo) and tt(MRI) modalities can be specified. manpagesection(Changes introduced in version 14.04.00) itemization( it() Parameters affected by tt(spread: true)nl() Parameters that may vary are specified using triplets: value, spread and distribution. In all cases the spread values and distribution names are optional: they can both be omitted or both must be specified. If these parameters are not specified then their tt(value) parameter won't vary if tt(spread: true) is specified; it() The tt(Mammo, Tomo,) and tt(MRI) modalities are provided with std.dev and distribution parameters for their tt(Dose, M, Beta, Specificity,) and tt(Sensitivity) parameters; it() When tt(spread: true) is specified the actually used and original parameter values are listed in a file, by default tt(spread-$.txt), where tt($) is replaced by the loop iteration index. Use the option tt(-s) to specify a non-default filename (cf. bf(simrisc)(1)); it() Age ranges no longer have trailing colons; it() The Case-specific data matrix defines an extra (18th) column, showing the results of the screening rounds for each simulated case; it() The order of the tt(beir7 beta) and tt(eta) parameters is reversed: tt(eta) is specified first, followed by tt(beta). The tt(spread) and tt(distribution) parameters following tt(beta) apply to tt(beta), and not to tt(eta), which is a fixed value. ) END COMMENT) simrisc-16.02.00/documentation/man/simrisc.yo0000664000175000017500000005420314665030471020057 0ustar frankfrankNOUSERMACRO(simrisc line) includefile(../../release.yo) htmlbodyopt(text)(#27408B) htmlbodyopt(bgcolor)(#FFFAF0) whenhtml(mailto(Frank B. Brokken: f.b.brokken@rug.nl)) DEFINEMACRO(lsoption)(3)(\ bf(--ARG1)=tt(ARG3) (bf(-ARG2))\ ) DEFINEMACRO(laoption)(2)(\ bf(--ARG1)=tt(ARG2)\ ) DEFINEMACRO(loption)(1)(\ bf(--ARG1)\ ) DEFINEMACRO(soption)(1)(\ bf(-ARG1)\ ) DEFINEMACRO(sr)(0)(bf(simrisc)) DEFINEMACRO(Sr)(0)(bf(Simrisc)) DEFINEMACRO(Cpp)(0)(bf(C++)) DEFINEMACRO(prot)(0)(tt((prot))) IFDEF(man)( DELETEMACRO(tt) DEFINEMACRO(tt)(1)(em(ARG1)) )() def(itt)(1)(it()tt(ARG1)) COMMENT( man-request, section, date, distribution file, general name) manpage(simrisc)(1)(_CurYrs_)(simrisc._CurVers_) (simrisc cancer simulation program) manpagename(simrisc)(This program performs simulations in the context of breast and lung cancer) COMMENT( all other: add after () ) manpagesynopsis() sr() [options] tt(analyses) The tt(analyses) argument is the name of the file specifying the analyses to perform. See section bf(ANALYSES) for details. manpagedescription() Sr() was originally designed around 2010 by Marcel Greuter at the University Medical Center Groningen, and thereafter modified in 2015 by Chris de Jonge. includefile(include/changes.yo) manpageoptions() Short options are provided between parentheses, immediately following their long option equivalents. Several parameters specify the path-names of files produced by sr(). If a path-name starts with a tilde character (~) then the tilde is replaced by the user's home directory. An initial + is replaced by the program's base directory (see option tt(base)). When an analysis uses multiple iterations then `$' characters in filename specifications are replaced by the analysis' interation index. All single-letter options referring to filesystem entries (directories, filenames) are capitalized, all other single-letter options are lowercase. itemization( it() lsoption(base)(B)(basedir)nl() the base directory where the output files will be written. By default tt(./). If tt(basedir) doesn't exist it is created by the program. If the directory cannot be created and exception is thrown, terminating the program. The tt(basedir) specifications may specify relative or absolute directory locations; it() lsoption(cancer)(c)(type)nl() The simulation type (tt(type)) can be specified as tt(breast) to perform breast cancer simulations. Breast cancer simulations are performed by default when the tt(--cancer) option is not specified. Alternatively, to perform lung cancer simulations tt(type) must be specified as either tt(male) or tt(female) to perform simulations for, respectively, male or female cases. Be advised that the default configuration file specifies tt(Screening Mammo) rounds, which must either be changed to tt(CT) in locally used configuration files or in tt(Analysis:) sections (see section bf(ANALYSES) below); it() lsoption(config)(C)(path)nl() the location of the configuration file. By default tt(~/.config/simrisc') is used; it() lsoption(data)(D)(path)nl() path name of the file to contain the data of the cases generated by the simulation (default: '/data-$.txt'). If a data file should not be written specify tt(!) (mnemonic: the logical not operator, i.e., tt(--data !)). See section bf(OUTPUT) for a description of the generated data; it() lsoption(death-age)(a)(age)nl() run one simulation using a specific natural death-age. This option also requires the specification of tt(tumor-age), and is mutually exclusive with the tt(case) option; COMMENT( it() loption(err) (soption(e))nl() before version 14.05.00 the Beir7 risk vector was computed using an incorrect algorithm. The error was fixed in simrisc 14.05.00. When it is required to use the erroneous algorithm, e.g., to compare the results of simulations with previously obtained results, option tt(-e) must be specified. However, option tt(-e) should not be used for real simulations; END) it() loption(help) (soption(h))nl() shows help information and terminates; it() lsoption(last-case)(l)(nCases)nl() perform simulations until tt(nCases) cases have been analyzed and only write the data for the final case to the data file. The tt(rounds) and tt(sensitivity) files contain the summarized results of all tt(nCases) analyzed cases; it() loption(log) tt(begin end fname [set])nl() log process actions of cases tt(begin) thru tt(end) on the file tt(fname). This includes generated random values. Random values generated in several contexts can be suppressed. Specify+nl() * bf(C) to suppress generated case-specific uniformly distributed random values+nl() * bf(L) to suppress generated log-normal distributed random values+nl() * bf(U) to suppress generated uniformly distributed random values not associated with cases+nl() * bf(V) to suppress generated uniformly distributed random values associated with VSD computations. Note that tt(begin end) defines an inclusive range. To log the process for a single case (e.g. case 100) ignoring the L, U, and V generated values specify tt(--log "100 100 fname LUV"). Also note that only a em(single) argument ispassed to tt(--log). Therefore its argument must be surrounded by quotes; it() loption(one-analysis) (soption(o))nl() the program's arguments specify the parameters of a single analysis, rather than the name of an analyses-specification file. The program's arguments are optional and are used to alter the parameter values as defined in the config file or to define tt(label) specifications. See section bf(ANALYSES) for details; it() lsoption(parameters)(P)(path)nl() path name of the file showing the actually used parameter specifications. By default no parameter file is written. If the tt(--base (-B)) option was specified then tt(path) is written in the base directory if tt(path) does not contain a slash (/) (use tt(./path) to write the parameters file in the current directory if tt(--base) was specified); it() lsoption(rounds)(R)(path)nl() path name of the file to containing the summary info of the simulation rounds (default: '/rounds-$.txt'). If a rounds file should not be written specify tt(!) (i.e., tt(--rounds !)). See section bf(OUTPUT) for a description of the generated summary info; it() lsoption(spread)(s)(path)nl() path name of the file containing the configured and actually used parameter values when tt(spread: true) is specified (default: '/spread-$.txt'). If this file should not be written specify tt(!) (mnemonic: the logical not operator, i.e., tt(--spread !)). If a parameter doesn't use spreading then the 'using' part is omitted. See section bf(OUTPUT) for a sample of its content; it() lsoption(sensitivity)(S)(path)nl() path name of the file to containing the summary info of the simulation's sensitivity data (default: '/sensitivity.txt'). If a sensitivity file should not be written specify tt(!) (i.e., tt(--sensitivity !)). See section bf(OUTPUT) for a description of the produced sensitivity summary; it() loption(tnm) (soption(T))nl() The data file contains a column labeled tt(TNM) showing the (0-based) tt(TNM) categories for cases having developed tumors (see also the bf(simiscparams)(7) man-page). By default this column remains empty for cases not having developed tumors, which may be inconvenient when processing the data (e.g., to perform statistical analyses). When specifying the tt(--tnm) option cases not having developed tumors receive TNM column entries tt(-1,0) to avoid missing data; it() lsoption(tumor-age)(t)(age)nl() run one simulation using a specific tumor self-detect age. This option also requires the specification of tt(death-age), and is mutually exclusive with the tt(case) option; it() loption(verbose) (soption(V))nl() provides additional information while running; it() loption(version) (soption(v))nl() shows sr()'s version information and terminates; ) manpagesection(ANALYSES) Unless the tt(--one-analysis) option is used the program's first and only required argument is the name of a file providing the details of the analyses to perform. These files are called em(analysis files). These files must be a standard ascii text files. I.e., they can only contain 7-bit ascii printable and white-space characters. Identifiers used in analysis files and in configuration files are interpreted case sensitively. Configuration specifications starting with uppercase letters (like tt(Scenario:) and tt(Costs:)) specify (sub)sections and don't contain additional specifications. Specifications starting with lowercase letters (like tt(ageGroup:)) are followed by actual parameter values. For a complete overview refer to the bf(simriscparams)(7) man-page. Analysis files may define multiple analyses. Each analysis specification em(must) begin with a line containing verb( Analysis: ) At each tt(Analysis:) specification the program's initial configuration is reset. Options specified on the command-line cannot be specified in tt(Analysis:) sections and remain active while sr() is running. The default option values are reset at each separate tt(Analysis:) unless an option has been specified on the command-line, in which case those option values are used throughout the sr() run. Following tt(Analysis:) lines the characteristics of the analysis are specified which can be specified for each tt(Analysis:) specification, in the following order: itemization( it() a em(label:) line: tt(label:) lines, when used, must immediately follow tt(Analysis:) lines. The text following tt(label:) is written at the top of the output files; it() option lines: specifying sr() options (not specified on the command line) which are then used for that analysis. When program options are specified their long option names must be used. E.g.: verb( base: /tmp/ last-case: 20 ) it() parameter specifications: modify (some) parameter specifications defined in configuration files. When parameters of configuration file sections (cf. bf(simriscparams)(7)) are not specified then the parameters specified in the configuration file are used. ) All specifications in tt(Analysis:) sections are optional. An tt(Analysis:) section merely containing the line tt(Analysis:) defines an analysis using the explicitly specified command-line options or the default program options and using the parameter specifications provided in the configuration file. Empty lines, initial and trailing white-space, and all characters on lines starting at the hash-mark (tt(#)) are ignored and may be used anywhere in analysis files. Lines not conforming to the above description result in error messages, causing sr() to end. Filename specified in tt(Analysis:) sections may start with a tilde character (~) which is replaced by the user's home directory, or they may start with an initial + character, which is replaced by the program's base directory (see option tt(base)). When an analysis performs multiple iterations then `$' characters in filename specifications are replaced by the analysis' interation index. Multiple analysis sections should not specify identically named output files, as the output files are (re)written for each separate analysis. Analysis sections are commonly used to alter the default specifications of the configuration file. E.g., the default number of iterations equals 1. By specifying verb( Scenario: iterations: 3 ) the analysis performs 3 iterations. Parameters are either read from the configuration file or they are redefined in tt(Analysis:) sections. E.g., in de provided configuration file screening rounds use two-year intervals between the ages of 50 and 74. To use screening rounds using 5-year intervals, between ages 50 and 65, then an tt(Analysis:) specification could be, e.g., verb( Screening: round: 50 Mammo MRI round: 55 Mammo MRI round: 60 Mammo MRI round: 65 Mammo MRI ) When the tt(--one-analysis) option is used parameters are modified by providing comma-separated parameter specifications as program command-line arguments. E.g., to perform one analysis, writing the data file to tt(/tmp/data), simulating 1000 cases, and using 20 as seed for the random number generator the command verb( simrisc -D /tmp/data -o Scenario:, cases: 1000, seed: 20 ) can be used. Note that when using the tt(one-analysis) option parameter section names must precede parameter specifications. E.g., since the parameters tt(cases) and tt(seed) are defined in the `Scenario' section (cf. bf(simriscparams)(7)) they must be preceded by the tt(Scenario:) specification. When an tt(Analysis:) specification modifies parameters, then subsequent tt(Analysis:) sections start from the unmodified option and parameter specifications. Here is an example of an analysis file specifying two analyses: verb( Analysis: base: 1 cancer: male parameters: +params.txt Scenario: cases: 10 Screening: round: 50 CT round: 55 CT Analysis: base: 2 config: ~/src/simrisc/stdconfig/lung parameters: +params.txt cancer: breast Scenario: cases: 20 spread: true Screening: round: 50 Mammo MRI round: 55 Mammo MRI round: 60 Mammo MRI round: 65 Mammo MRI ) manpagesection(OUTPUT) The first lines of the generated files contain time stamps showing the date and time when the files were written and the used tt(SimRisc) version. Here is an example, following the RFC 2822 format for the timestamp: verb( Mon, 14 Nov 2022 15:30:26 +0100 (SimRisc V. 15.00.00) ) If tt(label:) lines are used then the time stamp is followed by the label specifications, which is then followed by an empty line. After this header the file's specific data are shown. The data in all files (except for the file listing the actually used parameters (option tt(--parameters) (tt(P)))) are written using the standard comma-separated format (cf. RFC 4180). The initial lines contain table headings and column labels documenting the meanings of the various columns. Likewise there is a final line ending the tables. bf(Data of simulated cases (data-X.txt files)) Below the date and label lines the legend of the death-status (see below at item tt(death status)) is shown. Each iteration generates a separate tt(data-X.txt) file, where tt(X) indicates the iteration index (starting at value 0). For each simulated case the values of the following variables are written to file (one line of comma-separated values per simulated case): itemization( itt(case:) the (1-based) case-index; itt(cause of death:) either tt(Natural) or tt(Tumor); itt(death age:) the case's age of death; itt(natural death age:) the case's natural age of death (if no tumor occurs); itt(death status:) a numeric index specifying how and at what stage the case died:nl() 1: natural death, no tumor, before the 1st screening round,nl() 2: natural death, undetected tumor, before the 1st screening round,nl() 3: self-detected tumor before the 1st screening round,nl() 4: natural death, no tumor, between screening rounds,nl() 5: natural death, undetected tumor, between screening rounds,nl() 6: self-detected tumor between screening rounds,nl() 7: screening-detected tumor,nl() 8: natural death, no tumor, after the last screening round,nl() 9: natural death, undetected tumor, after the last screening round,nl() 10: self-detected tumor after the last screening round; itt(tumor present:) tt(Yes) if the simulation resulted in a tumor, tt(No) if no tumor occurred; itt(tumor detected:) tt(Yes) if the tumor was detected, tt(No) if not; itt(interval tumor:) tt(Yes) if the tumor was an interval tumor, tt(No) if not; itt(tumor diameter:) the tumor's diameter in mm when it was detected. 0.00 is shown if no tumor occurred. In the exceptional case where the simulation produced a tumor whose diameter exceeded 1000 mm the value 1001 is shown. itt(tumor doubling days:) the time (in days) it takes for the tumor to double its size; itt(tumor preclinical period:) the age at which the tumor is potentially detectible by screening. -1.00 is shown if there's no pre-clinial period; itt(tumor onset age:) the age at which the tumor first occurred. -1.00 is shown if no tumor developed; itt(tumor self-detect age:) the age at which the tumor was self-detected. This age is the result of the simulation, and may exceed the case's actual death age (if so, the case's data report that no tumor is present). -1.00 is shown if there's no self-detect age; itt(tumor death age:) the age at which the tumor caused or would have caused he case's death. The simulation process uses ages ranging from 0 through 100. If the age at which the tumor causes the case's death exceeds 100, then 100.00 is reported. 0.00 is shown if no tumor developed; itt(costs screening:) the case's screening and (if appliccable) treatment costs; itt(costs biop:) the costs of a performed biopsy; itt(detected self): 1 if the tumor was self-detected, 0 if not (also if there's no tumor); itt(detected round): round number at which a tumor was detected, using the following values (assuming tt(N) screening rounds were specified):nl() verb( 0: no tumor was detected; -1: tumor was self-detected before the 1st screening round; 1: tumor was detected during/after the 1st screening round (and before the 2nd round); *1: tumor was self-detected after the 1st screening round (which was not attended); ... 3: tumor was detected during/after the 3rd screening round; *3: tumor was self-detected after the 3rd screening round (which was not attended); ... N: tumor was detected during/after the Nth screening round; *N: tumor was self-detected after the Nth screening round (which was not attended). ) itt(screening rounds:) this column show which screening rounds were attended by the simulated cases, and if so whether false negative or false positive diagnoses were made. The following digits are used: itemization( itt(0:) the case did not attend this screening round; itt(1:) the case did attend this screening round. it() 2: the case did attend this screening round, resulting in a false negative diagnosis; it() 3: the case did attend this screening round, resulting in a false positive diagnosis. ) There are as many digits as screening rounds. The leftmost digit refers to the first screening round, the rightmost digit to the last screening round. E.g., using 12 screening rounds the following indicators could be obtained: verb( 001101111000 ) Using screening round indices (which are also used to refer to rounds in the tt(rounds-$.txt) files), this case did not attent screening rounds 1, 2, 5, 10, 11, and 12. itt(TNM): The TNM status/stage of the tumor (see also the bf(simiscparams)(7) man-page). It specifies the row/column index of table of probabilities of positive lymph nodes and metastatis, given the size of the tumor (table S3, cf. Goldstraw et al., Journal of thoracic oncology, 2016, 11(1): 39-51; Yuan et al., Scientific Reports, 2016, 6(1): 1-9). ) bf(Actually used spread-values) When tt(spread: true) is specified then by default the actually used and orgiginal parameter values are written to the file tt(spread-$.txt), where tt($) is replaced by the loop's iteration index. Here is a sample from the content of such a file, showing the values of the tt(Tumor: DoublingTime:) agegroups parameters: verb( Tumor: DoublingTime ageGroup: 1 - 50 configured: 4.38, using: 3.41972 ageGroup: 50 - 70 configured: 5.06, using: 4.83591 ageGroup: 70 - * configured: 5.24, using: 5.30492 ) bf(The rounds-X.txt files) Each iteration generates a separate tt(rounds-X.txt) file, where tt(X) indicates the iteration index (starting at value 0). The rounds-files summarize the results of the simulations for each separate screening round. It contains at least eight columns plus a column for each used modality: quote( round: the round number (starting at 1);nl() false pos: the number of false positive screening results;nl() false neg: the number of false negative screening results;nl() number of tumors: the number of detected real tumors;nl() number of interval: the number of self-detected (interval) tumors;nl() number of trueInt: the number of self-detected (interval) real tumors;nl() screening costs: the total screening costs;nl() screening biop: the total costs of performed biopsies;nl() number of [modality]: the number of times each modality was used. ) includefile(include/configfiles.yo) manpageseealso() bf(simriscparams)(7) COMMENT( manpagediagnostics() EDN) manpagebugs() Versions before version 15.03.00 should not be used for lung cancer simulations. includefile(include/trailer.yo) COMMENT( it() lsoption(totalrisk)(T)(path)nl() path name of the file to containing the cumulative total risk values (default: '/totalrisk.txt'). By default the cumulative total risk values are not written to file; END) simrisc-16.02.00/documentation/man/simriscparams.yo0000664000175000017500000010211214665030471021254 0ustar frankfrankNOUSERMACRO(simriscparams N U L) includefile(../../release.yo) htmlbodyopt(text)(#27408B) htmlbodyopt(bgcolor)(#FFFAF0) whenhtml(mailto(Frank B. Brokken: f.b.brokken@rug.nl)) DEFINEMACRO(itq)(2)(\ it() verb(ARG1)ARG2 ) DEFINEMACRO(itt)(1)(it() tt(ARG1)nl()) DEFINEMACRO(sr)(0)(bf(simrisc)) DEFINEMACRO(Sr)(0)(bf(Simrisc)) IFDEF(man)( DELETEMACRO(tt) DEFINEMACRO(tt)(1)(em(ARG1)) )() COMMENT( man-request, section, date, distribution file, general name) manpage(simriscparams)(7)(_CurYrs_)(simrisc._CurVers_) (simrisc configuration file organization) COMMENT( man-request, larger title ) manpagename(simriscparams)(The description of the sc() configuration files) manpagedescription() This page describes the organization of the sr() configuration files. These files are formatted like standard unix configuration files. Lines are interpreted after removing initial white-space (blanks and tabs) and after removing all characters from lines starting at the first tt(#) character: this is considered comment and is ignored. If a line (not containing a tt(#) character) ends in a backslash (tt(\)), then the next line (initial white-space removed) is appended to the current line. Note that all parameter identifiers are interpreted case sensitively. E.g., tt(Costs:) is a different parameter than tt(costs:). The numeric values used in this man-page are for illustration purposes only. Some restrictions apply though: standard deviations cannot be negative; proportions and probabilities must lie in the range 0..1; multiple probabilities (like the ones used for breast densities) must add up to 1; etc. If restrictions apply then they are mentioned at the various parameter descriptions below. manpagesection(DEFAULT CONFIGURATION FILE) The configuration file provided in the sr() distribution is+nl() tt(/usr/share/doc/simrisc/simrisc.gz). Usually this file is unzipped by the user to the user's tt(~/.config) directory: verb( gunzip < /usr/share/doc/simrisc/simrisc.gz > ~/.config/ ) whereafter tt(~/.config/simrisc) can be edited to contain local modifications. Various parameters specify probability distributions. Usually the tt(Normal) distribution is specified. The program also recognizes the tt(LogNormal) and tt(Uniform) distributions, and uses the tt(Beta) distribution when handling parameter variations of the beta parameter used for lung cancer simulations (note that the similarity of the names tt(beta) (the parameter) and tt(Beta) (the distribution) is sheer accidentally). Parameter specifications start with keywords, followed by a colon. All keywords are covered below. The format of the specifications is fixed, but empty lines and white space may be used to improve the specifications' readabilities. Parameter specifications starting with uppercase letters (like tt(Scenario:)) COMMENT(tt(BreastDensities:)) specify (sub)sections and contain no additional specifications. Specifications starting with lowercase letters (like tt(ageGroup:)) are followed by actual parameter values. The configuration file must define all parameters of all configuration sections, but configuration parameters can be modified using a separate analysis file or they can be modified by command-line parameters. Several section namess are optional, e.g., `tt(Scenario:)'. In this manual page the label `tt((opt.))' is appended to the names of those sections. In actual confiuration specifications they can stil be used, but they can also completely be omitted. includefile(include/changes) manpagesection(Section `Scenario:' (opt.)) This section may start with a line containing tt(Scenario:) and specifies some general parameters of the simulation process. The default configuration file contains the following specifications: itemization( itt(spread: false) when specified as tt(true) parameter spreading is used; itt(iterations: 1) the (positive) number of iterations used in a simulation loop; itt(generator: fixed) in addition to tt(fixed) the modes tt(random) and tt(increasing) are available.nl() This parameter specificies the way tt(simrisc's) random number generators are initialized. When mode tt(fixed) is used the random number generators are initialized with tt(seed's) value; mode tt(random) results in the random number generators being initialized by randomly selected seeds and tt(seed) (below) is not used; mode tt(increasing) results in incrementing the seeds of the random number generators by a fixed increment at each iteration; itt(seed: 1) the (positive) value to seed the random number generator with. This parameter is ignored when tt(generator: random) was specified; itt(cases: 1000) the (positive) number of cases being simulated; itt(death: ...) the tt(death:) parameter may either be followed by the path to a file (if its initial character is a tilde (~) it is replaced by the user's home directory; if it's a plus (+) it is replaced by the base directory (specified with the tt(--base) option, see the bf(simrisc)(1) man-page)), or it must be followed by 101 cumulative death proportions, where each line starts with tt(:), where tt() is the next order number to read. The default configuration file specifies: verb( death: 1: .00000 .00000 .00000 .00000 .00000 .00000 .00000 .00000 .00000 .00000 11: .00000 .00000 .00000 .00000 .00000 .00000 .00000 .00000 .00000 .00000 21: .00000 .00014 .00028 .00042 .00056 .00070 .00106 .00142 .00178 .00214 31: .00250 .00382 .00514 .00646 .00778 .00910 .01118 .01326 .01534 .01742 41: .01950 .02312 .02674 .03036 .03398 .03760 .04414 .05068 .05722 .06376 51: .07030 .07776 .08522 .09268 .10014 .10760 .11564 .12368 .13172 .13976 61: .14780 .15718 .16656 .17594 .18532 .19470 .20658 .21846 .23034 .24222 71: .25410 .27560 .29710 .31860 .34010 .36160 .39368 .42576 .45784 .48992 81: .52200 .56240 .60280 .64320 .68360 .72400 .75826 .79252 .82678 .86104 91: .89530 .90962 .92394 .93826 .95258 .96690 .97104 .97518 .97932 .98346 101: .98760 ) which are the 101 cumulative death proportions used for breast cancer simulations. If the 101 cumulative death proportions are available in, e.g., the user's tt(.config/) directory as the file tt(cumdeath) then the specification could have been: verb( death: ~/.config/cumdeath ) which might be convenient when using different values in tt(Analysis:) specifications (see section tt(ANALYSES) in the bf(simrisc)(1) man-page). ) manpagesection(Section `Costs:' (opt.)) This section may start with a line containing tt(Costs:) and specifies several parameters used for cost-calculations. Modality-specific cost parameters are specified in Section tt(Modalities:) (see below). The default configuration file specifies: itemization( itt(biop: 176) the (positive) cost of performing a biopsy; itt(diameters: 0: 6438 20: 7128 50: 7701) pairs of tt(diameter: cost) values specifying the treatment cost starting at the specified tumor diameter, up to the next pair's diameter (if specified) or all diameters starting at the diameter specified at the last pair. The first diameter em(must) be 0. The second value of each pair specifies the (non-negative) treatment costs for that age-group. itt(Discount: (opt.)) the costs discount proportion starting at some age. This line is optional but the followed two additional lines are required: the line tt(discount:) contains two values specifying, respectively, the discount proportions for breast- and lung-cancer simulations. When only one proportion is specified it represents the proportion of the actually used simulation type (i.e., breast- or lung-cancer); the line tt(age:) specifies the discount's starting age (for both simulation types): verb( Discount: # breast lung proportion: 0 .04 age: 50 ) ) manpagesection(Section `BreastDensities:') This section starts with a line containing tt(BreastDensities:) which are used with breast-cancer simulations. It defines breast density values for various age groups, covering ages 0 through the maximum age for simulated cases. The default configuration file contains the following specifications: verb( # bi-rad: a b c d ageGroup: 0 - 40 0.05 0.30 0.48 0.17 40 - 50 0.06 0.34 0.47 0.13 50 - 60 0.08 0.50 0.37 0.05 60 - 70 0.15 0.53 0.29 0.03 70 - * 0.18 0.54 0.26 0.02 ) Optionally, each line may start with an tt(ageGroup:) specification, which is required for the first specification line.nl() Age groups are half-open ranges: starting at their first ages, and endinf at (but not including) their second ages. The first ages of subsequent age groups must be equal to the second ages of their previous age groups. For the last age group the specification tt(*) can be used, indicating that all ages at or above the last age group's begin age are handled by that group.nl() For each age group the probabilities of the four bi-rad classifications must sum to 1.0. manpagesection(Section Modalities: (opt.)) This section may start with a line containing tt(Modalities:) and specifies cancer-scanning modalities. Currently three modalities are supported for breast-cancer simulations: tt(Mammo, Tomo, MRI), and one modality is supported for lung-cancer simulations: tt(CT). Some modalities specify age groups, which are (like the age ranges used for tt(breastDensities)) half-open ranges: they start at their first ages, and end at (not including) their second-ages, while subsequent age ranges must connect. Also, the last age group may use the end-age specification tt(*). The default configuration file contains (below the line tt(Modalities:)) the following specifications (if modalities aren't used their specifications are optional): itemization( itt(CT:) The tt(CT) modality is used when performing lung cancer simulations. The screening costs are used instead of the value configured at the tt(Costs: biop:) specification. The tt(diagnosis:) costs specifies the costs of performing a CT-scan. The tt(M0) and tt(M1) values specify the costs when, respectively, no metastatis or a matastasis has been detected. The radiation dose of tt(CT) scans is configured at the tt(CT: dose:) specification. The sensitivity depends on the tumor diameter. For tumor sizes between 3 and 5 mm. the sensitivity is computed using the formula tt((.5 * diameter - 1..5) * 100) (e.g., 50% for tumors of 4 mm.) The default configuration file contains the following tt(CT) specifications: verb( CT: # screening diagnosis M0 M1 (M0, M1: Table S3) costs: 176 1908 37909 56556 dose: 1 # diam. value (must be integral 0..100 or -1) sensitivity: 0 - 3: 0 3 - 5: -1 # formula: (.5 * diam - 1.5) * 100 5 - *: 100 # mean stddev dist specificity: .992 .076 Normal ) Optionally, each tt(sensitivity) specification line may start with a tt(sensitivity:) specification, which is required for the first specification line.nl() itt(Mammo:) For the tt(Mammo) modality the costs, radiation doses and em(m:) parameter specifications per bi-rad category, specificity probabilities for age groups, the parameters of the beta-function, and the systematic error probability must be specified.nl() The tt(Mammo) sensitivity is computed using the beta-function published by Isheden and Humphreys (2017, Statistical Methods in Medical Research, 28(3), 681-702). From a randomly generated probability and the case's age the case's bi-rad category is determined and that category is then used to select the m-parameter that is used in the beta-function.nl() The default configuration file contains the following tt(Mammo) specifications: verb( Mammo: costs: 64 # bi-rad: a b c d dose: 3 3 3 3 m: .136 .136 .136 .136 # ageGroups: specificity: 0 - 40: .961 40 - *: .965 # 1 2 3 4 beta: -4.38 .49 -1.34 -7.18 systematicError: 0.1 ) itt(Tomo:) For the tt(Tomo) modality the costs, radiation doses per bi-rad category, sensitivity probabilities per bi-rad category, and specificity probabilities for age groups must be specified.nl() The default configuration file contains the following tt(Tomo) specifications: verb( Tomo: costs: 64 # bi-rad: a b c d dose: 3 3 3 3 sensitivity: .87 .84 .73 .65 # ageGroups: specificity: 0 - 40: .961 40 - *: .965 ) itt(MRI:) For the tt(MRI) modality the costs, and the sensitivity and specificity probabilities must be specified.nl() The default configuration file contains (below the line tt(MRI:)) the following specifications: verb( costs: 280 # proportion: sensitivity: .94 specificity: .95 ) ) manpagesection(Section `Screening:' (opt.)) This section may start with a line containing tt(Screening:) and it specifies the ages at which screenings are performed, the used screening modality/modalities for each of the used screening ages, and the probabilities that screening rounds are attended. If no screening rounds should be used then specify a single round-specification line: verb( round: none ) Otherwise, the first screening round must start with the keyword tt(round:) followed by an age, which in turn is followed by a list of at least one space delimited modality specification. Subsequent screening round specifications may optionally start with the keyword tt(round:). Currently tt(Mammo, Tomo, MRI) and tt(CT) are available. tt(Mammo, Tomo,) and tt(MRI) can be specified when performing breast-cancer simulations, tt(CT) can be specified when performing lung-cancer simulations. The default configuration file contains the following tt(round) specifications: verb( # round: 50 CT # 52 CT # 54 CT # 56 CT # 58 CT # 60 CT # 62 CT # 64 CT # 66 CT # 68 CT # 70 CT # 72 CT # 74 CT round: 50 Mammo 52 Mammo 54 Mammo 56 Mammo 58 Mammo 60 Mammo 62 Mammo 64 Mammo 66 Mammo 68 Mammo 70 Mammo 72 Mammo 74 Mammo ) The probability that a case will attend a screening round is specified by the tt(attendanceRate:) parameter: verb( # probability: attendanceRate: .8 ) manpagesection(Section `Tumor:' (opt.)) This section may start with a line containing tt(Tumor:) and it specifies the characteristics of tumors. Several of the parameters in this section can be varied by specifying tt(spread: true) in the section tt(Scenario:), in which case statistical variations are applied to these parameters. Supported distributions are tt(Normal, Uniform, LogNormal,) and (for the lung-cancer's tt(Beir7) parameters) the tt(Beta) distribution. If tt(value) is the specified tt(value) parameter value, and tt(spread) the specified tt(spread) parameter then the values that are actually used during the simulations are: itemization( it() when using the tt(Normal) distribution tt(N(mean, stddev)): verb( N(value, spread)) it() when using the tt(Uniform) distribution tt(U(begin, end)): verb( U(value - spread / 2, value + spread / 2)) it() when using the tt(LogNormal) distribution tt(L(mean, stddev)): verb( L(value, spread)) it() the tt(Beta) distribution is used when requestin lung cancer simulations. For male cases the 95% confidence intervals for the tt(beta) parameters ranges from .15 to .70, for female cases it ranges from .94 to 2.10, and values drawn from these distributions are used when tt(spread: true) has been specified (see also section bf(BETA DISTRIBUTIONS)). ) The tt(spread) parameters may not be negative. If tt(spread) values are configured then their distributions must also be specified. If tt(spread) is not specified, then the tt(value) parameter won't vary if tt(spread: true) is specified in the tt(Scenario) section. The same holds true for the tt(Beta) distribution: if no spreading should be applied, even though tt(spread: true) was specified, then the tt(Beta) distribution's specificatins should be omitted. The tt(Tumor:) section has four subsections: tt(Beir7:, Growth, Incidence:, Survival:,) and tt(S3:). They contain the following parameter specifications: bf(Beir7:) BEIR (tumor induction) parameters: only tumor induction type 7 (i.e., beir7) is used. The default configuration file contains specifications for breast cancer simulations and for male and female lung cancer simulations: verb( # eta beta spread dist. breast: -2.0 0.51 0.32 Normal # Beta-distribution parameters: # LC: eta beta dist constant factor aParam bParam male: -1.4 .32 Beta .234091 1.72727 2.664237 5.184883 female: -1.4 1.40 Beta .744828 .818966 3.366115 4.813548 ) If tt(spread: true) is specified then the actually used tt(beta) parameters are drawn from their respective distributions. See also National Research Council. 2006. Health Risks from Exposure to Low Levels of Ionizing Radiation: BEIR VII Phase 2. Washington, DC: The National Academies Press (lurl(https://doi.org/10.17226/11340)). bf(Growth:) Tumor growth specifications consist of three elements: start diameters, self-detect parameterss and doubling time specifications. The tt(start) parameters define the start diameters (in millimeters) of emerging tumors used with respectively, breast and lung cancer simulations. The default configuration file specifies verb( # breast lung start: 5 3 ) The default configuration file contains the following specifications of the self-detect parameters for breast and lung cancer simulations: verb( #selfDetect: # stdev mean spread dist breast: 2.01375 18.5413 2.31637 Normal lung: 1.0141 20.8426 1.84043 Normal ) Four parameters are used when determining the diameter at which self-detection is possible. These parameters are: itemization( it() the standard deviation (tt(stdev)) used by the lognormal distribution to compute the diameter at which self-detection occurs. This parameter is required and cannot be negative; it() the tt(mean) (see below) used by the lognormal distribution. This parameter is required and cannot be negative. Its value will vary using the following two parameters if tt(spread: true) was specified; it() the spread (standard deviation) used by the distribution that is used to vary the mean if tt(spread: true) was specified. It can be omitted in which case the mean won't vary; it() the distribution used to vary the mean. If the previous parameter is omitted then this parameter must also be omitted. ) The actually used self-detect diameter is computed using: verb( diameter = L(mean, stdev) ) Finally, the tt(Growth:) subsection also defines tumor doubling times for various age groups when using breast cancer simulations and for all ages when using lung cancer simulations. Doubling times are computed like the self-detect diameters, i.e., using millimeters and lognormal distributions. Thus, for each age group and for the lung cancer simulation four parameters are specified (of which the final two are optional): the standard deviation of the lognormal distribution, the mean value of the lognormal distribution, and the spread and name of the distribution that is used when tt(spread: true) was specified. The age groups (used with breast cancer simulations) must cover ages 0 through the maximum age for simulated cases, and are specified as described at section tt(BreastDensities:). The default configuration file contains the following specifications: verb( DoublingTime: # stdev mean spread dist. ageGroup: 1 - 50: 1.84043 79.838 1.53726 Normal 50 - 70: 1.29693 157.591 1.1853 Normal 70 - * : 1.56831 188.67 1.2586 Normal # all ages stdev mean spread dist. lung: 1.23368 98.4944 2.09594 Normal ) Optionally, each tt(ageGroup) line may start with an tt(ageGroup:) specification, which is required for the first specification line.nl() bf(Incidence: (opt.)) For breast cancer simulations three carrier types are supported: tt(Normal, BRCA1) and tt(BRCA2). Each having a probability of occurrence. The probabilities of these carriers must add to 1. In the default configuration file tt(BRCA1) and tt(BRCA2) are specified, but their probabilties are set to 0, in which case their specifications can also be removed from configuration files. Each carrier is identified by name (i.e., when performing breast cancer simulations tt(Breast:, BRCA1:), and tt(BRCA2); when performing lung cancer simulations: tt(Male:) and tt(Female:)) followed by their parameter specifications: itemization( it() for breast cancer simulations: the probability that the carrier is observed; it() the lifetime risk: three parameters specifying a probability; it() the mean age: three parameters specifying the mean age,; it() the standard deviation used when computing the risk of getting a tumor. As this standard deviation is used in the denominator of expressions it must be larger than zero. COMMENT(incidence/settumorrisk2.cc) ) The lifetime risk, mean age and standard deviation parameters may optionally be followed by the standard deviation (spread) and distribution used to vary the probability when tt(spread: true) is specified; The default configuration file contains these specifications: verb( Male: # value spread distr. lifetimeRisk: .22 .005 Normal meanAge: 72.48 1.08 Normal stdDev: 9.28 1.62 Normal Female: # value spread distr. lifetimeRisk: .20 .004 Normal meanAge: 69.62 1.49 Normal stdDev: 9.73 1.83 Normal Breast: probability: 1 # value spread distr. lifetimeRisk: .226 .0053 Normal meanAge: 72.9 .552 Normal stdDev: 21.1 BRCA1: probability: 0 # value spread distr. lifetimeRisk: .96 meanAge: 53.9 stdDev: 16.51 BRCA2: probability: 0 # value spread distr. lifetimeRisk: .96 meanAge: 53.9 stdDev: 16.51 ) Instead of specifying the parameters of a distribution, a tt(riskTable) can also be used. If a tt(riskTable) is specified at a category (i.e., tt(Male: .. BRCA2:)) then the tt(lifetimeRisk, meanAge,) and tt(stdDev) parameters are ignored. A tt(riskTable) specification contains pairs of values. The first value of a pair specifies an age, the second value the probability of a tumor developing until that age. Both ages and probabilities must be cumulative and at least two pairs must be specified. Unless specified in the tt(riskTable) specification itself sr() adds a pair tt(0, .00) at the beginning, and an age specification tt(100) at the end. Its cumulative tumor probability is computed using linear extrapolation of the two age values before age 100, using a maximum value of 1.00. For ages in between pairs of age values linear interpolation is used, using the surrounding age specifications. Here is a (fictitious) example of a tt(riskTable) specification in the tt(Male:) category: verb( Male: riskTable: 40 .01 50 .1 55 .15 60 .22 65 .55 70 .62 75 .67 ) bf(Survival: (opt.)) For breast cancer simulations four types of survival parameters must be specified. Each type (a..d) specifies a mean, and (optionally) a spread and distribution (which are used when tt(spread: true) has been specified). The default configuration file specifies: verb( # value spread dist: type: a .00004475 .000004392 Normal b 1.85867 .0420 Normal c -.271 .0101 Normal d 2.0167 .0366 Normal e 1.00 .01 Normal ) Optionally, each line may start with a tt(type:) specification, which is required for the first specification line.nl() The tt(e) parameters can be used to estimate relative survival if not enough data are available (and can reflect the quality of care). The value 1 indicates that enough data are available to estimate survival using the tt(a) to tt(d) parameters. If not enough data are available the tt(e) parameter can be used to adjust the survival estimate to correct the use of the tt(a) to tt(f) parameters to the quality level of the medical care relative to a country for which the tt(a) to tt(d) parameters are available. E.g., in Dutch breast cancer research studying the survival in Indonesia the value 0.9 was used since using that factor in combination with the provided tt(a) to tt(d) parameter values the correct survival probabilities for Indonesia were obtained. When performing breast cancer simulations TNM indices (cf. the description of the S3 table below) are also determined. With breast cancer simulations the second TNM value is always 0, and the first TNM value is, as with table S3, determined by the tumor's diameter. The default configuration file contains the following tt(bc:) specification (see also option tt(--tnm)): verb( # BC TNM categories thru (<=) diameters (mm): bc: 20 50 * # TNM: T1 T2 T3 ) (cf. lurl(https://www.cancerresearchuk.org/about-cancer/breast-cancer/stages-types-grades/tnm-staging)). For lung cancer simulations table tt(S4) is used to determine the a..e parameters. Table tt(S4) contains four categories (lung0..lung3) defining these a..e parameters, where (for a known cancer's diameter) the category is randomly determined using table tt(S3) (see below). Table tt(S4) is appended to the breast cancer specifications. The default configuration file contains the following specifications of table tt(S4): verb( # table S4: 4 columns per a..d parameter # lungX: X is table S4's column index lung0: a .00143 .00095 Normal b 1.84559 .33748 Normal c -.22794 .07823 Normal d 1.06799 .16226 Normal e 1.00 .01 Normal lung1: a .01530 .00381 Normal b 1.69434 .10979 Normal c -.19358 .02105 Normal d .66690 .03869 Normal e 1.00 .01 Normal lung2: a .78600 .29815 Normal b .69791 .05425 Normal c .0 .0 Normal d .0 .0 Normal e 1.00 .01 Normal lung3: a 1.25148 .32305 Normal b .77852 .34149 Normal c .0 .0 Normal d .0 .0 Normal e 1.00 .01 Normal ) Optionally, each subsequent line following the first tt(lung0: .. lung3:) line may repeat its tt(lung1: .. lung3:) label. bf(S3: (opt.)) With lung cancer specifications tables tt(S3) and tt(S4) are used to determine the survival parameters. The tumor's diameter determines the row of table S3, and then its column is randomly determined using the probabilities listed in S3's rows. For each row the probabilities must sum to 1. Once the S3 column has been determined the column index which of the tt(lungX:) specifications is used. The row and column indices are 0-based. E.g., if a tumor diameter is 24, then row 2 (diameter <= 30) is selected. Then, if the random value is .630, column 1 is used (column N1-3,M0). Whenever a tumor is present these pairs of indices are reported in the comma-separated data file in the column marked as tt(TNM), using an entry like tt(2,1). The default configuration file contains the following table tt(S3): verb( S3: # diameter (mm) # T-row <= N0,M0 N1-3,M0 N1-3,M1a-b N0-3M1c prob: 10: .756 .157 .048 .039 # T1a,b 20: .703 .197 .055 .045 # T1b 30: .559 .267 .095 .078 # T1c 50: .345 .351 .167 .137 # T2a,b 70: .196 .408 .218 .178 # T3 *: .187 .347 .256 .210 # T4 ) Optionally, each line may start with a tt(prob:) specification, which is required for the first specification line.nl() (cf. lurl(https://www.sciencedirect.com/science/article/pii/S2667005421000491) and Table 1 of its appendix: lurl(https://ars.els-cdn.com/content/image/1-s2.0-S2667005421000491-mmc1.pdf)) manpagesection(BETA DISTRIBUTIONS) Values generated from Beta distributions range between 0 and 1 (cf. lurl(https://en.wikipedia.org/wiki/Beta_distribution)). The Beta distribution is computed using two Gamma distributions (cf. lurl(https://www.fmrib.ox.ac.uk/datasets/techrep/tr03tb1/tr03tb1/node24.html), lurl(https://stats.stackexchange.com/questions/502146/how-does-numpy-generate-samples-from-a-beta-distribution)): verb( gamma1 = Gamma(aParam, 1) Beta(aParam, bParam) = gamma1 / (gamma1 + Gamma(bParam, 1)) ) When using lung cancer simulations the 95% confidence interval (CI) for male cases ranges from .15 to .70, with a mean value of .32, and for women ranging from .94 to 2.10 with a mean value of 1.40. The male and female CI ranges are transformed to .025 to .975 ranges using linear transformations. To transform values tt(x) from the male range to the .025 to .975 range the transformation tt(y = 1.72727 * x - .234091) is used, and to transform back the transformation tt((y + .234091) / 1.72727) is used. For the female CI the transformations are tt(y = .818966 * x - .744828) and tt((y + .744828) / .818966). The tt(aParam) and tt(bParam) values are determined by first generating 1000 values so that their CI span the range 0.025 to .975, with a mean value of 0.318635 (for male cases) and 0.401724 (for female cases). Next the parameters of the corresponding beta distribution were estimated using maximum likelihood fitting, resulting in tt(aParam = 2.664237) and tt(bParam = 5.184883) for the distribution used with male lungcancer simulations, and tt(aParam = 3.366115) and tt(bParam = 4.813548) for the distribution used with female lungcancer simulations. The default configuration file shows these values at the Beir7 beta parameters. manpagesection(PARAMETER RESPECIFICATION) Parameters can be respecified by defining a separate parameter configuration file or by providing alternate parameter specifications in tt(Analysis:) sections of the program's input file, or by providing alternative parameter specifications as command-line arguments (cf. the bf(simrisc)(1) man-page) manpagefiles() includefile(include/configfiles.yo) manpageseealso() bf(simrisc)(1) manpagebugs() Versions before version 15.03.00 should not be used for lung cancer simulations. includefile(include/trailer.yo) simrisc-16.02.00/documentation/manual/0000775000175000017500000000000014665030471016533 5ustar frankfranksimrisc-16.02.00/documentation/manual/html/0000775000175000017500000000000014665030471017477 5ustar frankfranksimrisc-16.02.00/documentation/manual/html/modalities/0000775000175000017500000000000014665030471021631 5ustar frankfranksimrisc-16.02.00/documentation/manual/html/modalities/modalities.jpg0000664000175000017500000003556114665030471024477 0ustar frankfrankÿØÿàJFIFHHÿâ ICC_PROFILE mntrRGB XYZ acspAPPLöÖÓ- descü|cprtx(wtpt bkpt´rXYZÈgXYZÜbXYZðrTRC gTRC bTRC desc"Artifex Software sRGB ICC Profile"Artifex Software sRGB ICC ProfiletextCopyright Artifex Software 2011XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶Ïcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÛC       ÿÛC ÿÀ¯FÿÄ ÿÄR  !WX "1Av”•–´ÔÕ#2789uÒÓQaµ36BUw’“³Ñ$%5RSrt²q¡ÿÄÿÄ> !1QRaq‘¡Ñð23AST’±"#á4rÁ5BCÂÿÚ ?×ì.ÁÛëh¶‹Ä'ûD]¶¬vÔÊíZ¤³õ""ýS&˜ ´ ™ŠVB˜ˆœ>Ž\BKg°Äô͆6«-³ïåâjNNü^S(uháÀ¢óýë™Tfí »¶êˆf!}iØÿ|ÖUò‘éào ‰œ¸U[iòDQWs½@NüÊb®IÑÖQ8@DÂ!d‚Ømܺw[÷sߣm‹„mñt—*àʨXÖoUQTSx*6ù`¦pTH¢a ò¬aØýºd§E³Û‚èY»[œ¶ÚN‘†p·-[‰ÎÍ“N@Æ[4TdÌÃ¤Æ À°,Î#EZ— NÜw¬\]Õl;ºR<å²ê=t  Lq2jHé:`W鉗LæH4÷'8 îžÁqÊ–yȕڪx‹NÌ”;Å–U#ª&ÔïÔ¤šŠÅ ”Ä!Ž%(ˆØ’ÄIF ¤Ùm×u»ÄHº&5ºè‚$9@Å)¤@Å„8‡„(=ù ñ;¯EÑæò sAâw^‹£Ì=å@æƒÄî½G˜{Ê͉Ýz.08÷•šºô]`qï*4'uèº<ÀãÞThS) îAµœKotaÞŽ‘6ŽT'ÈrÏw¤” Gl¯¼³ ,+¦øMìLÎaŠ_Å™šÊF?N5",':ê€.šq¢` '2ÙHÒ`ó ™'Où ¾Ý•—|vZ¥ebæŸ.™•ÆäR:Ó&Ywk§ETÀUCHëÌ¡6Úñà-˜ˆ ·s.£X·h¼‹¼·ïM2”Ë©— g^ @ P( @ P( @ P( @ P( -íá÷ƒ_.Æz³Z ß±õ´ßãÑ^±-AÒÚ@ P( @ P( @ P( @ P( @ P(8··‡Þ |x»êÍh'~ÄÖvÓEzĵà]ûWÚû?‡háö ÜVÉÛ% ¬$!]7Lë·MÂa¯xžíR÷À8çSÕW£kS1^ï–AøÅè°~­[G‰É”èg|,(ƒñ‹Ñ`ýZhñ92hg|,(ƒñ‹Ñ`ýZhñ92hg|,(ƒñ‹Ñ`ýZhñ92hg|,(ƒñ‹Ñ`ýZhñ92hg|,(ƒñ‹Ñ`ýZhñ92hg|>lÛ-³ÈæÓ8YŠ0èÉH5MܼT[‘g •$Àçxœå ­TÕL^¨“C>ɆÀÔ1( @ P( @ P( @ P( A޼>ðkãÅØÏVkA;ö þ³¶›üz+Ö%¨'ø´®<þ+ü­vä[*tO«§¯êÈ¥¯‹n퀲$Þ)k7ŠF'¹0‘nJRbëÒST€ˆ²ÏH×dÕ1Ô[m\]ûÂÚowÄÜí‰xùXÖ®^›’•ÄÎb SÞéטD¹} â…DWLÅǥNJvEªùË i‚o0y$ü†üÌÐl‘UPUM<ÔÌ)@¢&ÈráškˆÚ>£ñJÁöQK‰(Ä#\‘›À˜IHŬr”ä"‰º*g(˜¦)‹˜d`Ã:œúEÙ ª×u+ð[’-i.LWœ7‰™~N9d®ìVÌ26YqïÔÞ6 ˆ™¨yöa!,ÎE¨˜ÄÚ.E“ E ɉØ#¢™öÿ޶×ñFõÍ•ú®Æ˜{z¥¸ç9Š@ P( @ P( @ P( @ Pqoo¼øñv3ÕšÐNýˆ?¬í¦ÿŠõ‰j þí+?ŠÀk]¹Êêéëú©ñW ]b\ÄS¤§•†$tcöɾh?ímÜ,劅:@!§!M²é˜D@rW ÌD:«£9Fçg«ž:-Ó y®¹NêA³Ç+¦‹6r®QQI’GÍD“GI“Ò]Zò@ ˜ÓG1¹ûÑg“½žïuâ¥á klßƒCßñÖÚþ(Þ°ÊýWcL=½RÜ óœÅ@ P( @ P( @ P( @ P(8··‡Þ |x»êÍh'~ÄÖvÓEzĵÿö•ÇŸÅ`?‚5®Ü‹eN‰õtõýRw(P( G´óG/ðö)‹)G®]ÖêIM"1àC ý‚L‰™‡ždI()Vr-ˆá¢åY3ðbˆ€ÐVP( @ P( @ P( @ P([ÛÃï¾<]Œõf´¿bë;i¿Ç¢½bZƒp¯-“pþó¾§1 Kºÿ„•¸ŽÝIÁ\î#ÐXÈ D0¦€f ¦PÌsðþÚDÕO£3 iŪ˜ÍÔµüŒ¬Ž–1ÓÇßš­Ÿ_*{S¦ÑØ|Œ¬Ž–1ÓÇßš™õò§´ÓNèìG{D`fàVÞ˜´ïqtMnD¬åªk_ršÏ ’m’6“g‘×:D¿æ¦}|©í4Óº;GcVÜ·¶œÁ©0¼±k‰uÚ2bÍòLoWè¦f‹¨Ù]„ žK'ÑÏÃLúùSڈŘ‹Z;Š{HG[ä¸pDZjFR!`t¼#›õéI0Ô?•lš¢o™\K˜¤qÀá¤DJϯ•=¦šwGb¿vqÂ,O´X^¶–2c:ñïÊ`Òµðý%›ªC AdÌmIª™ÊbƒÄ¦(…3ëåOjtÓº;‰-‡0Òa›Ëb>-=I»LŽ/gŠ”‹$p:jD5å)€{à UUj™™DãU1kC)MžÐXZØÀÑê8¿ š„ ìÍâ®îµd°Y½8|Ø­G„Ç0ˆC&IfcmyÉ£mAÄЫ~Tkny¹£åJ–£”N ÕÈÊ4Íó‰ë †B ått‰Û9E5’P¢S¦¡@Å0|€…g+³Ê=RU2Š…’W-r6ð© ôÂá,L’¹‡€uf 0Á+Ú5XCßqä™ÎòYæ£û33”¹Xåûœ†~è?EÞÔöÉu8‰Ã{õŒÍÃËqÈ—Â%I@z™ÍÞà*¦þ!Þ üíû'\EÀ¼I·r0Ü3Š$ûlƒúe³¸WGýé{ù—.4{oh¬ ».-Ï„„ oƒ=+7å€LÕ} xq PH´ @ P( @ P( @ Pqoo¼øñv3ÕšÐNýˆ?¬í¦ÿŠõ‰j–Ð(^,àæã°•—Š&š‚Mê2`.–A5•KVìÝ¢r›V"%.`9PC[`>aöGbE•i% =p3rÆQV®*.ÓI껡:÷ZÈÈ ƒ<„h6f‚Ä(YŒºßãƒæBTåRþ·Y¦'Qr” P˜h˜wÝ$B”ª¦PùôKŸ &(9¸{–ÃoI¶‘Œ“n›¶o( $á” E`àbˆ~Ú ê rùÛâK ~Ú‘³PD®Ð™º¡ÞU#ý$”È `ðP`ǰ±–ÁVG q—< ŠŠ­w˜É÷"%M¤ša¾Hº€¥ÉÁ€ŽBPTÀím Ôà1>W gŽpHnB‘6n”ð4!ŒÕÀ@W.&L¼@S P(,÷-hÞŒ~ ¼mh‰Öy9<›%Ä2åBˆqÿ ìÛ-á+ÞY î @¥p=Šn@ðrDT¦Üd„ÁAôl:Ç‹xDö~ÐE—Hƒ™ÞvËg¹—þMó38~À9€âÒÏÇ]£íÑÜx!s @Ïi]$+…ÃþÍ"›rw)0~ðð‡ÂÛMÙ1Hª[ÞܽleŠQÉKŠØvFE6_Òzܪµïüöyˆf½à÷ew±ää'bÔ‚¾áÚïMm*è œ¡ÀàQä.LS÷ÀÚ8yÀ¢jJÔÓU“7Ê'ºµÉzQù«n/‹»½¦ŽžQò‰Ån­r^”Gþjq|]ÝæŽžQò‰Ån­r^”Gþjq|]ÝæŽžQò‰Ån­r^”Gþjq|]ÝæŽžQò‰Ån­r^”Gþjq|]ÝæŽžQò‰Ån­r^”Gþjq|]ÝæŽžQò‰Ån­r^”Gþjq|]ÝæŽžQò‰Ån­r^”Gþjq|]ÝæŽžRó†Øû;yâIpÖè§֫ŠÝN7]YfϪH8n‰É’":G7D?°k:è«mT"¬8¦œè›¦J«"@ P( öðûÁ¯c=Y­ï؃úÎÚoñè¯X– ém@ ‰öYO“à„+õ Òì„ÝíbŒ›¤„Ùx3Ñž_¾‚X P@o5ì¹tžM0rå{©ê`Ï“\ùoÈôcÜ(`Ö_¢‚¦ðMCîÂ{€ Q ÀCÃAû@ ¡›ƒ…¹b]@Üpì¥c¦)9dõ¹Ar|§Là%0~á µL¸,6éŽÏ·ê¶£vçQP¶å‘4¤¢m9©œàá¡{ŒŠVë"j0îŒ"9‡±qÑý¡ Œ.5áü­¨e$‰>È %o®±À¡:H £`Ö&I"Qîr0ˆåA(EÊÆMÇ·–…’jý‹¢ˆ:j±UIRxÄ9D@ÁûÀh*¨ 7ˆö;½ufLnY‡Bm%uÂaÚ3÷í²ÕíÃðŒÒo"ã·à² ج%0$ÓXÊ JCÛ´õd&15Ucb›ÎÔ]w´{¶¬ÜL eŠ"“'AÙd[ªÒ-UíÀL.{°ÉÄÆdmØu:^o0›¯SØÉ9sÉ[±˜júM6s-íöîË$Ý"8|³4]†e0ê"EIQÔ~&̹†Ï0´×16°¥ÇS9höÞ·V#GPódq,zrª™&ƒ¸ €¹ÐrÊ”ª"—"œÆ‚'w›—c°¸ßˆÌ +ñŠ6à4z· †J-‚± ›(—%Eew«8\TûÄô¢(f&(PÎ#¨ÛÏ܆M%òiM»ŒÃ—ÒÍ (Ò“âÈ·@ޏd‹ÂˆâM"¤·tq6eÈløLâMõB_v¾<4ºßÅ*ÎÖzÞQË8â¿r±J©¹Ž#ôɸÓÝ*™M_Ê (”5ÔÆ%çavaf}¬ ÿ³ÉÏâQUÇ–zT­W«ëñlr0( @ Pqoo¼øñv3ÕšÐNýˆ?¬í¦ÿŠõ‰j †Å›ÿžm5‡V(#jÃÄ[‘’`AløÊ¬áW$8‰•È@2D¼3¯Kƒ8>8Bª©š­k{/µá} á߸°pñ#?>f6ÚÖ·4ï[¹FÓýeô-‡úׯønŸ{=ŸËå0gá£æŸ”m?ÖQ/BØ­? Óïg³ù?0gá£æŸ”m?ÖQ/BØ­? Óïg³ù?0gá£æŸ–϶v†±à‰nÀíTÙ‘Ë·`SÙìŽ;Ç]AÌL#ÅEN?»<©ønŸ{ÝüŸ˜3ðÑóO‚õÊ6Ÿë(—¡l?ÖŸ†é÷³ÙüŸ˜3ðÑóOÊ6Ÿë(—¡l?ÖŸ†é÷³ÙüŸ˜3ðÑóOƒ Æ«Çik+ .‹î;1šlÊ=A^9͘Àt™²!“>y†‘a¹²ÎŒ—¬hĽ£wòô¸#íŸÞynI8N|ÚùÓ6îOv;ù,»#ðnév»›iQobM89”3%;áéCf:Š\ù*†í2 FQ2Š¿>ûTå@ P(? P0 L !€øh"·{<ÛÏŸ\A(÷ ¦ß—çR|àúÀâuãTj¡Ç#”)¨‚‡É@R&â¦4D˜Ç`):Ī jÜÖ;U]¢™ ;ç1¦;@ºà€ºÓ˜˜¹€PHveõfâ$"WrÇÍÆ¬f¸( Nć L`4Ú‚Ú÷ìÝ|ÿà¥ë TKLNüµ/"ÞZR1n[5]’B° ˆ¬¢*(Q ÷&ÌíÑÄCG Ç?nb'jX̾ a¤â*!#àSYYW*2nÐùr…QÚjîÕ.ñ%NB‰’6i÷!‘@«8tÉej¸S`­ð,wm·@é`ù¹˜ï ˜?œ1Œ=üËŸs¦§26 Š–U²«õ$ÔÍʲ©Íûå8½#b¶*¹jË‚$)týåžcLØsàö¨hs ¥,FLZ&GîJ™›³>¶©®@P ä©DÄßô˜DCˆˆÔfR<¤0W¥[*Õü;“‘g2”¤\ u9r £´Œd”(LR‰’0Šc ¹”r MȽüGµ¹YŸIJ±¤Ò˜Ìª¨ÓlFÄP È2E2HžåžcS›ÓƒØw'-ª EµO—¹22-Aªj™()b·)RŒQSHj¨Š)‰¼ …™ö°ƒþÏ'?‰EWYéRµ^¯¯Å²5ÈÀ P( A޼>ðkãÅØÏVkA;ö þ³¶›üz+Ö%¨'«Çí}yø—ë«é>ÍúÌNˆÿo‚þ m“ÿ•_JY-}còôt÷0ò>9i'.ÞPºf™ l"¯Â%PH Ïèd}}íurÎY…L^yY½oJž Êkª)ˆC?oýmõö[{!_°õ³©F.ox4œBy"™ß¤S5( " ÷9Å(çÞˆ†zÎ>LÄÕ¶ësFE”ÕÕsj¶j} (ü]Ã×Ñ_ «s0dÄÏœ°E÷I5Ì´œä6¡Oë0à!žYÕiÊp¦œëÚ/nÆ•ð~SMz8¢fmh‰Õ}üï |g°íö¤'¤ÌÁ³§Îã“Q`(f³wädpÐ'ïŽД ÄÂ\À*ʰè‹Õ6×1Ù6ú­‡Á¹F4Í8qyˆ‰êšs£›g~˲f—5¸ü‹9èõ¹[ƒ´@ä‚*.RC$PÏ1P¤!Ì%ï€Â! k”NÉrÕ‹Eó©Q}žÍ—迵íSöy¾¿ ýË\<-ý–'CÛû+ÿ3“ÿ—ú–ãÞöMµˆÖ¤••wÆüLª"‹„„D¦ NC†FMBÄ9D C¦(€€ |öÔ}…—¥Ík܃x·(/.È͹<¨sÆ'–j@QÌ º`˜iX¡¤âR½@ P( öôÀ¬?¼çÂô¯mû°¥!ã·Ýš>Då dR,¢}Ë”Ê ®UŽE ²ŒÆ?a˧ \0Ñø•mXŽá+ Öä)DÅ!ÙœÜØˆ÷:“Qw²HÙŽA”áö0áæ'‹Æ¶œøN0Àœ”CÄg%q À®.R¬–|rr„@(3: '°ùÞ*ámÇÌ%Qq4ØIÚÈŠÄHÀrœÄLÎY‡~¢V¢¬Ê¢QwjM§:JÂÿDä=á]\o›Ï[Lü=Óç¨íI´çIX_蜇¼)Æñy¼õ™ø{§ÏQÚ“iÎ’°¿Ñ9xSâóyë3ð÷Ož£µ&Ó%a¢rð§ÅæóÖgáîŸ=GjM§:JÂÿDä=áN7‹Íç¬ÏÃÝ>zŽÔ›Nt•…þ‰È{œo›ÏYŸ‡º|õ©6œé+ ý÷…8Þ/7ž³?tùê;Rm9ÒVú'!ï q¼^o=f~éóÔ»aŽ b|,¥‰¸‰zÚò€ÒÝyÙ¤,3†Yr‡-Veœ­«.K}*ǬY‰©WLÓ›L'£"@ P( öðûÁ¯c=Y­ï؃úÎÚoñè¯X– ž¯µõçâ\¬>¯¤û7ë1:#ý¾ úý¶OþU})dµõËÑ žÎ6üŠŽ¤þpœ«—Çw¾Ýf€¦FDs«ŠÀ-÷º³Ñà˹®²j¼ß]ÿúÎÙ¿Ùw³G âQFo鈷?¡™·wý­m½¯<’~á3%z³E¼L›¹˜þÔf®—”JDÜ Û𠂨é6“q0˜ádS3él™˜Õí™Îׯ^¾„ÑÂÔQðæõDSWêÛDÑ«V©´ß]õû-©ñ?³ì­ÃxW—Ëc&õyw2 )^JªÏ•*›Ò W%((ˆÀ‚¨ª8aâ*ò*«§6jÛ{êÕ¯šþÏeINÌØq{S´ÎnÉöÚÛëàkÂÆE5Ž»ÒIÜ;‡ÎYÄhªC(¼ÓYBë ,Q(´„À&‰³.ZFÓ’M¢"­qfú¢­üÖg)N}SUªˆ¶ÙETn¹×ÙªÖÖ¸[¶ ’x·1|I$dX•šDjˆèÜH¨™vô„)Ì)€¢ÝªEŽ ÉoÄMj0gO8“³ýûg²";YãetÎGN;o¯š˜¼ÓMí×5LÛVÍÚ¨v©û<ß_…þå¬x[û,N‡oÙ_ùœŸü¿Ô·’¾ûkÅL3ŠÅ;cà7œÅȲpIY–y¸™ÀwN‘á¨5¦(÷'!ÎC”æ .blµÌ¤Žb#FÑx‰j‘2Ì´C0nùæÉ3ÕÄÍ—ÐaÌL™Àéº&f .@ P( G0£ñ=ªH^vê.×j:ÙH"¡Û?b|„FÎѬÃP÷Iœ£ÄhÐaŠÛ¸ý†…GâEÄÏ ‘ ‚‘w:àÎd¹¨#š2)t¶E6"è‡v\ÖÌDh/væ=áôÝÐçv­ÚcœˆÁ\-Å‹—zM©óO=ð3s¨wòÀF P( @ P( @ Pqoo¼øñv3ÕšÐNýˆ?¬í¦ÿŠõ‰j ƒ¯k2ËÚêìVñ»¡`ˆê̓*“~“PTJáî (¨`Ô!˜g—{0¯€1ð°11'¨¦ñf#{ã>Ûä9V[“`FM‡Uvš¯›6Õm~Þ¸#Óé OÔ¯¦ãù'½§æç_qp¯Ãb|•x½pG¦;ÒŸ©N?’{Ú~hñ>âá_†Äù*ð;zàLv?¤-?Rœ$÷´üÑâ}Å¿ ‰òUàvõÁ˜ìHZ~¥8þIïiù£Äû‹…~ä«Àíë‚=1Øþ´ýJqü“ÞÓóG‰÷ ü6'ÉWÛ×zc±ý!iú”ãù'½§æî.ølO’¯i´¦/a4î^Qx¡iH¿u$A«I¶Ë,©µ—HS‰Œ?¸¸8S,ɱ2Íp?àp¶&.tÓk™¢¨ˆÕ;faÑø—ë…qŒZúô$eãdÉ£ ÚfQÅ¿&©DQP–ù‹²—Š”Š;¢ˆBdrh.8OŠø¡»±Ž^z!É£n'fsü€t—@@é¨ʉœ‡/PfÔ @ P(-7=©lÞ‘ @]Ðó1«€‚^·*ÉŽeç‘€rŒ!˜q Æ‚4O 1 Xø#ˆk8fPF×¼Ü-!‘@DD­Þqxß0ÈQ×L  ðSM b-â²aŽó¼3”x°·LòkÄBÊd\·Ri‡'0›I¸¢±„¦ù¬² Q‘p‰7TФ©@ä9 )Š!˜pðÐ}Ð( @ P( A޼>ðkãÅØÏVkA;ö þ³¶›üz+Ö%¨:'/dÙ—°=hÂÉ9`³Æ , 3ȺŽQ¸ßK&*˜Ø¡í[†][hoù*- ΫyÚ· º:¶<ÐßòRÐgU¼í[†][hoù)h3ªÞv­Ã.Ž­47ü”´Õo;Vá—GVÇšþJZ ê·«pË£«cÍ ÿ%-u[ÎÕ¸eÑÕ±æ†ÿ’–ƒ:­ì¢¥RA¥»~cJ›*»ŠÇ;ÒŸ5Þù¸Ä¼x”X­"Ó1Ý¡&¨»µ’8ï[œ3?Sú  Ê{Km³[ K¾eI;²Ù|¼,Ë•ÎQUÁŠ ¢ /¤Š„.¡úFLãß΃jh @ P(<²e$Íhùˆºjå3$² ¦MR21LQà`à <("Å0^L³X+yÊØf&+A·ÉÔ‚ P'Áêw »’”ºš™îC=\@CÅ,f¼ì"8OpéhvMÞè· ¤¬:…ÖB¨™JÚ˜Dà"HÉ”Â+F‚M·.krð†mqZSñÓQO ­»è÷Dp‚¥ý¥P‚%7ÿCAs P( @ P( -íá÷ƒ_.Æz³Z ß±õ´ßãÑ^±-AÒÚ@ P( ‚ÚÊFaž¥,¬i§®88K¤Š*›’‘* àÍÓI§Ü¦™@Nn Pï×tæU4DZLXˆ˜´{EU‘@ P(#›gûBEû‹’Å’ÃË™ÂÆt¬Å®r6kœÌñ±ŠfÏsÐ@]#˜ bæ#ABâõÆŒ6Y&÷ÕŠ7ÜH‘ pZ(é|Cˆäc8‰PÂmúlªÆ#º pͬŒK°q!»—65Û1ÈU"Ý`ß´T@S]ÉDO™G¹9J?ºƒ& P( @ P(8··‡Þ |x»êÍh'~ÄÖvÓEzĵKh @ P( Sko«‹ÇËSøÃjµ=1õkƒéODýì…W5ÝhaÛÉ˳G3Å}Õ’È&Ic.ý1È@CQU1@Ù÷" 9Y +™Šo¢'{KܲOî©«TXÖA½¼¥¾ëàWR+.›¹2²t°·nrª¸”ûâ$ò6¤@{­ZC=,Íæ6jEÙîbµÁ|½€JA ÞA¥ÆuIŠÍ9I£ä¶Ib"±…TÅY]I©™€Àr7¢¹ªÝi„±Z–Ê?ðÌIþÐdÿÈk^F/¬«¥8Ûc¡9ÖlJ@ Pa¦ aíó(•Ë' ®VÈ—Z‚ÎU±LQ.DtžGä#ÜLA³(Ðb¤Kh,-hp"¨âü2'OvCòx«…$§×™û–oO˜'¤ý#fcT=“X}}HÞe(´UÈ(‹…-ɦç–H€&0µXæ ó„&9f ’>ë¶¥§¥­hÙÖNf “`šÅÚbkDʾRœ "QË!Òl‡2ŽAv P( A޼>ðkãÅØÏVkA;ö þ³¶›üz+Ö%¨:[@ P( @ PB›[}\[þ>ZŸÆU¨ôéé«\Jz'èø¯d((¥á£gš&ÆU¶ý6zBë1rYºÄ]fQîTL†Ë¼9d "gxke<ð™ ÓEÆ–)ê@æH Fo9b@¥qŽA™³áQ›Ú.µá®'wLty’‘x£•N}ñôΰ/¤™é.±f‡ úE1¸ Î&E1qU‚ƒËeøf$ÿh2ä5¯#ÖUÒœm±Ðœë6%@ P( [pÊÁÅ‚Ä_Ö|lò Ì*µIõ²¹(‚¡‘ÐSö3Áûh9)/…}‘{7li TÃëLÈÝŽY„™"ÕºÚ¿KàXPI“•œ¬NP@JQÌuæRœºL1WM¦×tv ±µÄ3%î-‘îÖR‡D¢ñ»k–dSW.è ¼(˜¹ç‰@rË0 ‹ÊÑM3š¾ªþÞ˜©ÕZöóô·Ró¹9”ò¾§oLTê­{yúÛ©yÜfSÊú½1Sªµíçèn¥çq™O+êvôÅNª×·Ÿ =º—Æe<¯©ÛÓ:«^Þ~€öê^w”ò¾«uÉ´¥ùhÛÒ—]ó ìÒ*’òœ|5¦éº$>’="”G"€ˆåÀj/;“tÌÚ*ú§ç©ÈǶH†)"EŠSwÀ Pýüj̧SŒ{x}à×Ç‹±ž¬Ö‚wìAýgm7øôW¬KPt¶@ P( @ °Þö%£ˆöú¶­ñÞ^%uYF«êÒ'Làr¹1@C|)µ4Õ4Íá|¶nèª7üw©QeôÕï>H[7tUþ;Ô¥5{Ï’ÍÝFÿŽãõ)cM^óä…³wEQ¿ã¸ýJXÓW¼ù!lÝÑToøî?R–4Õï>H[7tUþ;Ô¥5{Ï’ÍÝFÿŽãõ)cM^ö{aaÍ‘…ðª[¶ ºÚ9W'v¢ „¦XàP1ÄL"9ˆ¡ßðTìVª¦©¼²J*P( ŒÄLG&øZQ£.ZäŒÛr…Êžýsç¡"jÔsd98ŽCPÌD²gòQ¢¤wœ²«”ª¹Ý—R›²æ}%È â4Ó/dD³”h»èíß,l’å2­·…Ôžð€9“Q@D3Ì8…e-ö²_û;oüIjkOüúÒÊn’:º}i fcdàÔ³kËŒaͰö èàŒÔ„w`Ë_óè$à‰8[r“UJÍ2‹s—v@xR€Èséá¤J¨f×^+]moØ›*Ͷb^ ®"CI«' £o›i64¢o!mÒ á¡CZDÞëÄüT"'fP˜íâÝV¤-ÐFænYˆöÏÁ#gš`ªe>‘̈j˽AˆíöyÅ&ýEj‰Ø¾§)nÖþlDà7ÿ,µ0¬íq¿o¼øñv3ÕšÑ ß±õ´ßãÑ^±-AÒÚ@ P( @ P( @ P( )ám‰Š>=A|'ñJàgtÃÿµ,%”k«p¿ÍºôïÜQ>%‚qam‰ußvŽ&OÁr«’ÄåÿÞò¥‰Èùj ‹¯›!Á55¦P/ÎÚr̹»…¶%©}ÝØ™ÉnKï|`{Ê–?,äHŠ-~lçÓЙ„¿6RêÏ3fŽgòÞ@ŽTEºo?7¥HÒ¤^9æ"­pO¢™e0+§$œ¿-Rá‘Q馛•Cº2â¹þ`æKIŽ%‘X†6â@Œ\ ½äHË.íaýo„¾E%ú´ýGíóŸv°þ·Â_"’ýZ~£öùÏ‹»X[á/‘I~­?Qû|çÅݬ?­ð—Ȥ¿VŸ¨ý¾sâîÖÖøKäR_«OÔ~ß:Ç}a–Ôwí‘pØÒ77iqE;‰]dHïMÂ&HÆ.jj8ˆfÒb©M5aÓ1:ÛÈѱ,£Žp9š·M0 JŸÿ•fs®\fÛÃï¾<]Œõf´CÀý¢qãdHÅ…ì,6€%ç9­q•sü6]ا£v±~—)6yçôC½Æ‚fç]Úç ‹ÊVöš:î×=X>R·´Ð9×v¹è"Áò•½¦Î»µÏA”­í4uÝ®z°|¥oi s®ísÐEƒå+{Mwkž‚,)[Úhë»\ô`ùJÞÓ@ç]Úç ‹ÊVöš:î×=X>R·´Ð9×v¹è"Áò•½¦Î»µÏA”­í4uÝ®z°|¥oi s®ísÐEƒå+{Mwkž‚,)[Úhë»\ô`ùJÞÓ@ç]Úç ‹ÊVöš:î×=X>R·´Ð9×v¹è"Áò•½¦Î»µÏA”­í4uÝ®z°|¥oi s®ísÐEƒå+{Mwkž‚,)[Úhë»\ô`ùJÞÓ@ç]Úç ‹ÊVöš:î×=X>R·´Ð9×v¹è"Áò•½¦Î»µÏA”­í4uÝ®z°|¥oi s®ísÐEƒå+{Mwkž‚,)[Úhë»\ô`ùJÞÓ@ç]Úç ‹ÊVöš:î×=X>R·´Ð9×v¹è"Áò•½¦Î»µÏA”­í4uÝ®z°|¥oi s®ísÐEƒå+{Mwkž‚,)[Úh5Þæ»qshí §q†ñ²£b$%"l£h÷% ‚)—-jÙˆ1Ì{ôÿÙsimrisc-16.02.00/documentation/manual/html/analysis/0000775000175000017500000000000014665030471021322 5ustar frankfranksimrisc-16.02.00/documentation/manual/html/analysis/data.jpg0000664000175000017500000001747014665030471022746 0ustar frankfrankÿØÿàJFIFHHÿâ ICC_PROFILE mntrRGB XYZ acspAPPLöÖÓ- descü|cprtx(wtpt bkpt´rXYZÈgXYZÜbXYZðrTRC gTRC bTRC desc"Artifex Software sRGB ICC Profile"Artifex Software sRGB ICC ProfiletextCopyright Artifex Software 2011XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶Ïcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÛC       ÿÛC ÿÀŽaÿÄ  ÿÄE 7!Xv–´ÓÔ1Wuw—µ"28”Ò#ABQar• $6s34qÿÄÿÄ? R!1Q‘±3Ab¡"#2Baq’²ÑÒá45Cr‚ðñÁÿÚ ?Û¹xËÄ;@_˜…ˆXµŠž6¿îXðûÝë6¨µnôà˜`}’KÉÉ Pì\˭Նϱ:ãżp³ã#d±tY|EzS"Å0Pû&p“Æj  —‡Ù6‚Q 3î2é–d-ò]!Žøêâ4\*ÕE]³NNÙT‹´¡WM"èl”@Æ P€üŽËFIbr˜bŽ2ã0ºV.~5Ùq!é‘‘Iéä¤D@Ú”‘ª)®¼¥8}Ñ ;Ë~YÞKCÂGãÞ7¾w<Ù¬Aå0á1n²‡I”Q2˜ˆ¦¡ÓP¤:†)M°m‘€ñÛ¹zˬâŠ&Ƭo K¾>m«FW̳äÒnð¿±:‹¢QM4Î`9H¢‚BœHm= È ½mcgÄ'ÿª€<0ËÖÖ6|Bú¨È ½mcgÄ'ÿª€<0ËÖÖ6|Bú¨È ½mcgÄ'ÿª€ŠbÎIìK; /+ºñœ²–üŒ‹ARÿ~bȶQBmk”6Š…ñgÊ ½w_Ýe{ÞPkr™g©ˆ9xÅ{“+E';ˆ×s.Ò„n£ób“A)Œ˜œ `J&¢PAöW Ðzìö¥Õ-ÂAõ«"霃§RÚ­.‹ä…5®c§Â$·Ù(f)ÀñÝù`^æ½&g92êUhy›sŒ™'ÃFE1Ú*FpDÌå1‹:‰¬r¥úb¥Í÷„Ý•‹ŠÐ…²'å_M¶¶¬Ë2>mºmÛ+ç~EåŽuVÔ«Y7)ðIæ5PL@6tÆ*µ×jKÚ³q6Üe¨Œ{6äc¹dŒÅ©ö¾‚.Šè©±ÊšÔÙ¨%1€Åmå²fÙc†Q¬/¸ÔK‡ppg’k»yI$…:&\¯8 l¾Àꊈ­° «²m¡” í@@@@3¸\Iè„ÏbV€¬µ`ü‚nÊü÷£vvóP Í­ÏOc5ӌؗŽVÄ5±)Ń0ÑK¤V)›ƒˆÃU0Š‹¨<¦ä×@зȧ&Û,% …6Žî&ÇntWgW | oÈá¼ÌV ¼C‰±ÛÙÕèLŽÌV ¼C‰±ÛÙÕèLŽÌV ¼C‰±ÛÙÕèLŽÌV ¼C‰±ÛÙÕèLŽÌV ¼C‰±ÛÙÕèLŽÌV ¼L-Ã7޶,•£&®a. ¦¯¯‡ŒÁC&“†ÎäPAb ’hE ©0”À!û†µN³©Pã&e("®n‡¬n*±\€f p¸“Ñ žÄ­YjÁùÝ•ùïFìíæ ša†ß¶6t†'ä1ÕzÇæÅí7¿2÷I0«¤MK˜ˆa˜ee°­äš4¹…wEuk9¸I>,~@:ˆCl锨Lbëü«\ÅZÐÌ Ño_RNÛ’ÛŸº!¢ÚÄYÍY·‚Ýsp•s@fsäÁª‚ŠâÎãj°$ zHm„GdßÐyk É-èoxÆZ‘í^¸ڠ£§Y…ÅQD‚¢Š)8JB€j&4å¬ärõ±Œµ#ŸÕÕÕëûÿÍ#ÜS#—­Œe©ÕÕÕëûÿÍ#ÜS#—­Œe©ÕÕÕëûÿÍ#ÜS#—­Œe©Ûò6ûÃøˆû¢/qâÈÜ0MLÝô¢J·U'[ªC”(ˆ jœ=!Z§Y¡—‰6fDéD9P¬@3¸\Iè„ÏbV€¬µ`ü‚nÊü÷£vvóP ͱ¶üCbÿýð_-%^±èˆ±èC´ç‹0“—&ݶý´¡É+% õ«=…83c¢b”€àÚÙÛRë¨r…[7 H£1î˨k§mˢʅ‡` af°+G»œÍÅ‘6H")–"@ˆ¤©ˆŠ¢!¦'ÓoúŒw4eÑ#ÞårÊûzñ;fôTÉpêm9@Ñ¥vÝ0Ð tˆm>@á4øMNiµ\ý Ëâ»ì[o3w…¨­äi€QÑ!ŠÉŠæŽ,W˜Àr J(È?lí¬') ÁŽƒ˜ñªéþÌEø× b¦a™M^ÒMbçtĤIùÜË hý¥Æ(™D ôÛ6vÅöL*,d¨ óªëE³YÓe[¬£tÌ¢+¢f†¥1ƒDD=#[–ƒ$¿àMzSl|ñhµsOgrôïà6Ì+ Ánz!3Ø• +-@X? ›²¿=èݼÔ3@,m¿Ø¿ÿ|ËIW¬z",zí%ÕtÒñ‹)Šƒöh9HФ¹H²`r‚‰œª&pþ"œ¥1GÒ(r€VÝY@@kÜvÿ5éM±óÆ5^ÕÍ=œIËÓ¿€ØW0®@3¸\Iè„ÏbV€¬µ`ü‚nÊü÷£vvóP Í©ã=Õ÷˜µ= zå¢býº¢ÑgÆ’,-Td¥U22¦8þ0þéEB©b3ª*"Ãå ˜Ûðýö³ÈÅuî%å/ö‡”.bwoÃô;Úr1]{‡”¿Ú>P¹‰Ý¿ÐïiÈÅuîRÿhpùBæ'vü?C½§#׸yKý¡Ãå ˜ÛðýöœŒW^áå/ö‡”.bwoÃô;Úr1]{‡”¿Ú~£udæÒ|Âàs“‹’ßÏÚnl„M«ƒ®B"qS…û?µ14æ!XrÜ*®I¯67híЪ@3¸\Iè„ÏbV€¬µ`ü‚nÊü÷£vvóP ͬ2üNã?ö[}€ÕvÅél,~Ü;IlÔÌ]» þà›z›8èÆÊ¼xáAЈ ™ç9¿ ¢#ÿʺÚJ¬†ÄȧìÝÉÏBÌZŒ[5JêàE6h¬™Í²SöÄ":› ¡©yj*5¥æmKª×Ie«rE‘T3¥g‰ˆ‰H2‚꘦z4@Ôª²1ëñ#‚Ý<»ƒÊ7Iã~-wI•ºªªš*ª»r¨Šs ¯ÙTä9@£¶R%BÅ TÏÄâ5©)þmY$ãYF(ÝkHˆ#¬Ù$0›gî:H=?xD9t©(•* "J¤ºDY ¢j C”u)Š<  !é 5fg÷8ûÛVÿÎÕk_2öq6Jó·ð:效`· ‰=™ìJЖ ,MÙ_žônÎÞj™ †_‰ÜgþËo°®Ø½-…Û‡išÄ I+òÆŸ²Öt-Bn9ÃpÛ ¢bR¨Ô6¶L m5åÓJ¹ÆM!¶Þ.Ý [ÒÓ–õŽgv´™dQfI‡fo s3rÝCækþßApEâA  ×j ÔN•¦`a0÷%lÄâܸViFW%¢S¢Ñd˜œIµ ª„Ùà„5Ö!—‹þõ ü=ÂV¼ÜD¤ÃõÔ<-o¢,äÝ"‚®ý02ˆÅMR.˜T)„9yNYC^¤r~¾˜Ù±Ì§c“˜‚™Œ”HpŠà„ŠN»UÈC‰¨© (t)ìÂ$&éþÕC7%n+hYP¶ºÊœæ‹f›_´¸-² €pM 04(&N@²ŠÙ ÅT2Bs?¹ÇÞÚ·þpδZù—³‰²W¿€á×4¬@3¸\Iè„ÏbV€¬µ`ü‚nÊü÷£vvóP ͬ2üNã?ö[}€ÕvÅél,~Ü;IÍ^ @@ªÌþç{jßùÃ:­kæ^Î&É^vþ‡\Ò±Ìáq'¢=‰Z²Ôƒò »+óÞÙÛÍ@34sï2ŒÛî…o<\Ä»rñ±Jq­°y´Ô­S3}±f“0ð*~ðé´>Ô*P(Ýq+²¦ÎYJ…(œ+UZÿÒÇ/翜º<5N“úݦ2¹w ßÌ8ã%üã±÷ó—G†¥'õ»FW.ôáù‡d¿œv>þrèðÔ¤þ·hÊåÞƒ|?0㌗óŽÇßÎ]”ŸÖí\»Ðo‡æq’þqØûùË£ÃR“úÝ£+—z ðüÃŽ2_Î;9txjR[´erïA¾™Ä]dnMË&SõŒ²HûA#Yuî5ª¹W! ³n C…ôÚä×OEF52ž=ië©(-*7‹…¿SUâ?UQÌáq'¢=‰Z²Ôƒò »+óÞÙÛÍ@34~Óñ3Ž¾Ô€ù+Zõ}Íós=«ó_ÄvÏübâL«ÒŸ<     YfCtî½µóv•Éß™³âG¨î/õ¹?ßàˆvëŸe ‚Ü.$ôBg±+@VZ€°~A7e~{Ñ»;y¨f€OÚ~&q×Ú%k^¯¹¾ngµp>køƒÎÙÿŒ\I‚Æ)9Ì ¦R”DN}ÓÓË^•Ÿl.(\¼jA‰ fUP¦—ŒŸš›U¯Czs¶Î5Ý’XšÞÍð1€õ6„zÍFh„‹S3~š†ÛáTû+‚¤Š„ý’ºkì'²]®8§ruMlΩ¥xÕÓ›2};+ÏÁ’`²¹ôŠ©Zš•LúÑʘņ\Z±« iQ¥¥×S<~OÙ õÙauEÇ‹«ÿ¶uw}ÎO8¯ï/¤<Ÿ³Aë²Âê‹NÿÛ:»¾ãÀœ×÷—ÒOÙ õÙauEÇ‹§í]ßqàNëûËé'ìÐzì°º¢ãÅÓ¿öήï¸ð'õýåô‡“öh=vX]QqâéßûgWwÜxúþòúCÉû4»,.¨¸ñtïý³«»î< Àýy}&2ãÊž`/Xäà.¬g³”Š3æNÜ¥¬ºK¹MÁJS‹£u2E tA¯iÂÖ›\§&e(ýZu—pws87ÚaµÈQcCZU¦³¦µjck\Ó¼@3¸\Iè„ÏbV€¬µôÛ ¿ÔÖ*Ò…„òE!q,Ž ÜoÅê2älQŸ( ]HÃɧ§ZiçÅ´ù»Ëõ‰.â€<ø¶Ÿ7y~±%ÜPŸÓæï/Ö$»ŠóâÚ|ÝåúÄ—q@|[O›¼¿X’î(Ï‹iów—ë]Åyñm>nòýbK¸ >-§ÍÞ_¬IwçÅ´ù»Ëõ‰.â€<ø¶Ÿ7y~±%ÜPìEÿY»^úÃëžÉG%Z)pÃ=Š+ƒO¦pDW@éļj·®š†ºP-¨ÿÙsimrisc-16.02.00/documentation/manual/html/spread/0000775000175000017500000000000014665030471020755 5ustar frankfranksimrisc-16.02.00/documentation/manual/html/spread/spread.jpg0000664000175000017500000007014314665030471022742 0ustar frankfrankÿØÿàJFIFHHÿâ ICC_PROFILE mntrRGB XYZ acspAPPLöÖÓ- descü|cprtx(wtpt bkpt´rXYZÈgXYZÜbXYZðrTRC gTRC bTRC desc"Artifex Software sRGB ICC Profile"Artifex Software sRGB ICC ProfiletextCopyright Artifex Software 2011XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶Ïcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÛC       ÿÛC ÿÀ×gÿÄ ÿÄ\  !W"1X”–ÒÓÔ#268AQTVu’•—³´Ñ (7agtvw“¥µ$3Bqã5CRb4H‡År„‘¡¢ÿÄ ÿÄL  !1AQSa‘"2RTq’¡¢ÑÒb±áâ35Bdr“ðU²Á#sÂ46‚ƒñÿÚ ?±0‡l¬@²ºí»Fá{*öbd«®[šM0'&å"'!@B‡×»]UÕuY-6FUªÉq§y óŽpšô»¯J¶k5\,nZukIÌ´JšsoÂx\^ËùÕl;‡`èýîù­=/¾›àgÒœÛðŸÞ…²þuNáØ:?{¾iÏKï¦øô§6ü'÷…Åál¿S¸vÞïšsÒûé¾})Í¿ ýáqx[/çT÷»æœô¾úoŸJsoÂx\^ËùÕ;‡`èýîù§=/¾›àgÒœÛðŸÞ…²þuNáØ:?{¾iÏKï¦øô§6ü'÷…Åál¿S¸vÞïšsÒûé¾}*%ˆ¸MfáêÍÍhŒû)®ø ©îY'Ô‘@‡(‘UÌC”Â@{u­½®»%–ÊjÒdFÓ¿¬®‹‚Ü$¼ï+ɶ{ULL!ÙahÐ3 B+—^†”E_m '% €8™3 儃 >eÓGmU2K7XŒ•1Lå1SB¨tS¦%àë›í,{3jÃL=ÇLgå£Û¹WEÿ"ÖtÊcdΘld¦ZjûŸ v-¯ b:cWÒRätúûU8Ρ؞Šté_H>=9>¾Ôã:‡bz)Ó¦5} HøôätúûSŒê‰è§N˜Õô#ãÓ‘ÓëíN3¨v' b:cWÒNGO¯µ8Ρ؞Šté_H>=9>¾Ôã:‡bz)Ó¦5} HøôätúûSŒê‰è§N˜Õô#ãÓ‘ÓëíN3¨v' b:cWÒNGO¯µ8ΡجÎ;Û™ŒõÏ7>x{æ~%³¹™^ºäÍÝ iʪ"cdR‡·îÖ¼Œ. l%B´b¸+¥(‰DJ"Qˆ”D¢%(‰DJ"Qˆ”D¢%(‰DJ"Qlßù'kñÔ÷õwuÝ\û ~¿÷ã\4ý÷[ÿ§û¶ ±EQ±l»ŒÖÛ¹kͳS4`dËšê33£—x±ÈB©¦ æcŽÌD³E£þ›]DíZwXG(«K ¦L“¸;ÈIÌ‘¢Ã¶±Öߺ¤#ÑŒ·æ‰ éÐ’\ˆ‘$_¨Ð®ÊØäÞo5f( ÊQ&±‡ˆ„iÛPˆS× uâç @Îì3¤k²f3…ŸbâÜmö,HÞÕ¸b$Á¤«b¿IÍ“”Õ:Kˆ¢ª€BúH”@€%ì€jTm"´CHq¡ô­Ú®÷Yf^Óƒ¨"F`oÙ”JÈL`”e–hg­ÝI0F@ íT‰J¦ó$Ê™ÔP‚‘·…L¦Ñ¨‚>¨*\ q‚œfDìÿ=;”y ¸‡WÄŒ¤é@€ å:æ´q¸õ %o§=Ö]ÐÜî›C¼bÅdÚr‡ˆI¹+vÇ&—™}0á¬9 @â!ÚÎÓmsqa; ež#j¾û¥ì©Åãi‚àNp ™ðgM ^P[FXs³’0 "ÉÌr ¨GR Jp;7n“9qD¦Ôe4ÀC˜  Æ2ÝMî-Ò'hٮܽjUnkE*m©¨8tþ,ÁÓ?T‘ Däµ+í-þTÖÅŸ6îf5ŒƒÕ4wI$ÕN+‰ÅR‚©¹D9»<ƒ Ìm›xsN™û£=zÆŠð¹Êã^Ihœõ$ˆÓ#‘×!’÷Ç»¢&/ ík–æ•cØn‹iÒë¸X¨¢˜ä8ê0ð”§0ñàö†±oÇM€“¶>õ´àcp_` ÜBâoáfÙ6ÆTÑÖœ´åÿ&&Ýãïh +8Ê`˲OyÛ ³ã—½u]˜u´æ\v||íý~áÍ©2ù=òÐÉ^ÌŸ‘GÔ¦¢À$)”Ë-@P”DJ8¡"ÐíŽx')³æ'FFcíã»6iíиZ(ªÊŠÅ)R¨"cˆb#•Pè§OÇ•O]—=åkX¶$ŒdŒÔU°•¾ ÌÉÃC%&᪄E¸£¼Dàc}äÇ2i˜ù¦P̹ñÚÉ ¡Mþ1R‰,dêJWLÐÛê<µì–‡RZdŽŠUTŒ“yýݾœ”LSU/L3? Êj™|IØ%Fší8œ†ý¼=š„˸æo¤¤B&}«–è5j›E b.Sˆ;Ð ²Q#€ˆ#ŒxÞ¤•“}í1dKH6-¸âb=ƒ%\ –TçŠÁG…ELÑR1ȘëóP‚$Ò:ª®ªRVòG& –‘ ‹YÉdRe¸ˆMtÔ)]È¿tÑ™ÁC (™4„æÈ@¡ê@ÃÀj^FÄR JúutG¹qÖ«ä\°|1¯ItTL®èè,9ŒA9S) °˜J\ÓP @2š“-ZéE>;»)nB’Ì)ÝÂL4†mÕRúçq"V)¬ª' ˜Ç B> 9ö53\’W”îÐÉÀF%$îÆ9Z3}8R:K(Ô¢WE'"9oµ Å2yf^&ÑÇ!©c¹%y!´tc»eÄ«ø—’åQ‹,fEòk™DpUjЦXÀ]`b12J”5‹É%cÄãÜîîÖukÛXÃHM²‹~åØ*ËG à(˜5¥)Ò.÷0>`ÓÙBè„•mìeë"ûýåÝn5kã»ÒUkj=_õe(‰DJ"Qˆ”D¢%(‰DJ"Qˆ”D¢%(‰DJ"Qˆ¸“fÿÉ;_ާ¿«»®êãÿØSõÿ¸¯á§ïºßý?ØÕ´i‚Ö(V¶ût'A”yÐ;5Ë$u™$Ž‘º¦p*!éj¨AݘºŠm&Ì8Vp²Ò LÎ^Œòõ-3¯;Cžj“3à·9 ™0sE‘„y*Îb"ÍVaº3tˆõÇ&"‰·ÄX[‰÷FXOz$é UVÙ©1ÁÍzcHÓIº¨Ô¼m5XX÷H:ä'31119ÄÄì^8y„vÎÅD³^EÓÈÆ rÅäœUMºGL„Ðe R¤Õ ú‚˜J ‚ZP³2ƒ@€§güuh«l¼*Ûç:$˜´ƒ»\†zö•²_íwrqRω(íxPK‘‘ÌËÅ)Ò)ŠEL‰ÕÔTÂ;Ó”ÇÈD 4HqœºÏÝ:õ«bÙU­s:fÐsÔLH@ÂÓÙx-fÙöÜtíÜ’ŒZŶ3§oWPæêz…U¾€2†Ýª—X$AqÈ@C…[¥e§IºÄoÙ§¿b½i¼ëÚjº¦BKŒ?‹#³3IÍmÃ5P˜HìŸ iäܤý—UƒEAÀˆ®`o¼ÝÇÂr¦Ôc<ÄF§Ééç–³9˜Ï\´V…º¸ÂdKb ËLâLn&6-[¬ Ã7©ÞDH¬³‚¬GO8ü\9MTÈš‰,¶ûxªf"IS9ŒAÉñ  ltN£Þ~jëo[S|W `A$"œÆy•©ÇبÕìk~Ë`{¶ÛlvËLéuI¹D†)³C€€ç˜V¾ýapÇÞ·Ü %×Ë Üÿö•bâoàÞÙNw§ÂÔ-YAä-U¢&ÏQROû¾¬øæ)×½}\–ÅÙöœ}³8å ¥Är|œ²ÒQÍÊñÊEàApb ¢ ”—VYˆf""EÚRÕ¶ÙÓBÛ‹MDì©Ãäf˜¦+ ¡ÑNŸŽ=*­‰°-«ßítî"I¨A6ntZ˼f’éj"ÄARbŽYiP  ƒ´aÜ5¡Í¹\ŒVå|1²\IÈÊ) ]°µ‘jG«‘“ÄÅCÓšà‚ƒ¹§¨Äi)<Š\¥€j¢¾áe˜Õ#¤vÒwŒÆ ä&ž½S’¹ÝoÒ®©ÌmÂ]¡á¤tå¨Ù°ZéŒ Âé÷.]KÛ«¸åeU”vVâqiÉPDʯ'ô­è§†ª¡¦Ò·Ó–%«rAY˜±]I4·r¡\*™Ä­QvÂCÀ)5U9Êri8!ϱ.U-T^0¸uiÛÌÅ„KG¨¤u]MRn”:ЦäîACœê Žs,¡ÌsDTÒ œ h"Ð\øhÜ,ß$šÒÞI<Žpá겯¬TZ¿IæámMŠ&L@7B@ ˆt€TM0Ré–X¬X'X0pHGœ¸UÈ®ƒå£ÀXʘ°ªtÈcâcCÇ!ä/ð–ÌuÚ!×W—M“¾\ÙunI#»AmÑÒÍ7"¾ø€)¨¡D p(͘cTÀ4.á…» ÆFÚ33ƨŠÍQMûžL’É!ÉÓXŠ›¡Tô­à—^€ˆäÚ4HRŒ½d_¼»£íÆ­KüwzJ­mG +þ¢¬¥(‰DJ"Qˆ”D¢%(‰DJ"Qˆ”D¢%(‰DJ"Qóúº®¬Ã÷‘W–âi„}4ýÛä-ã¡[ó—¨(&Ä8G.k¦»o‹=’ÊÚ5‘;7’w®„\¶Þ—•K]7 °Ä“94 Û™¡Š³îMËlÅåX€¢g-®aC0}¡ Îç“s»Íi9‹yùLí?JûôN¹{žñƒÁcxôç“s»Í9‰yùLí?Jz'\½ÏxÁà±¼zs‚ɹ݃æœÄ¼ü¦vŸ¥=®^ç¼`ðXÞ=9ÁdÜîÁóNb^~S;OÒž‰×/sÞ0x,oœà²nw`ù§1/?)§éODë—¹ï<7NpY7;°|Ó˜—Ÿ”ÎÓô§¢uËÜ÷Œ ǧ8,›Ø>iÌKÏÊgiúTfú”¾q+v݉ÀœPd©n¨7ª¸·N‹tQAú*¨sŸPäB{^ÕkïKÚ…²ÌiSLj:ý+}Á¾ [n›Á¶ªîn2$œÁ‚ïæ×x”ELj ‹¯±Ö·™ä¬Å©/ű eœ*ÍR&@ Œ`"ƨtS¦@x%s­±sã\·¾Ë7êŠG±A©ÎG‘zLdÓ)DC7]¡Ê³›lhAWˆi3ˆ-—_˜ÍÜ«ˆùçU^Zß$ªao”¯ÌfîUÄü‹óªrÖù%0·Ê ׿3w*â~EùÕ9k|’˜[åëó»•q¿"üꜵ¾IL-ò‚uùŒÝʸߑ~uNZß$¦ùA:üÆnå\@ïÈ¿:§-o’S | ~c7r® wä_S–·É)…¾PN¿1›¹W;ò/ΩË[ä”Âß('_˜ÍÜ«ˆùçTå­òJao”‡²=¯xÛ}p÷µ^[¯æï)¹Ä£Ý¨‘ÖI»§"ªz…#¹ä9B/Ê´¼ô§æßåNEµçu\_Ñã?/N{žƒâü©ÏJ~mñþTä[^wUÅý3òôç¹è>/Êœô§æßåNEµçu\_Ñã?/N{žƒâü©ÏJ~mñþTä[^wUÅý3òôç¹è>/Êœô§æßåNEµçu\_Ñã?/N{žƒâü©ÏJ~mñþTä[^wUÅý3òôç¹è>/Êœô§æßåNEµçu\_Ñã?/N{žƒâü©ÏJ~mñþTä[^wUÅý3òôç¹è>/Êœô§æßåNEµçu\_Ñã?/N{žƒâü©ÏJ~mñþU+ÙjÿÅéÌKÅ<;Å[õ­ÙÖ‚0*°x„21ÙrÄ@ÓgþaÄÃêxe˜×Yt^ó³ Anœ¦t>€º{µ·‘–¦³)ÊgCÀ]#[5””D¢%(‰DJ"Qˆ”D¢/ç&ì[âç¾,F’²‡¾î áEÖ!„„x}!‘Ã1ö«åßÓ鄼á)°Ýv³N—ÄœÈ2si*5ª½Ž†•?æq³GE1ýôçÊW–÷ßá·Ÿ»ÙgÒ¬ñõ7§3š:)ï§>R÷ømçîöYô§Szs8Ù£¢˜þúså)߆Þ~ïeŸJqõ7§3š:)ï§>R÷ømçîöYô§Szs8Ù£¢˜þúså)߆Þ~ïeŸJqõ7§3š:)ï§>R÷ømçîöYô§Szs8Ù£¢˜þúså)߆Þ~ïeŸJqõ7§3š:)ï§>R÷ømçîöYô§Szs8Ù£¢˜þúså)߆Þ~ïeŸJqõ7§3š:)ï§>R÷ømçîöYô§Szµê 6Ù.Ël‰¤æl„({E ‡€_xQ{ªRcÞd–´žÀ²ßã.‡«Š DJ"Qˆ”EÚ ò ‰?²?bVˆ¥‡­8O‹›}Qh‹û¸å­NFå…´dn‡1Éoú“tÁÛ¢{2  Ju¹‰H&.¡ 9ˆQ †¿„{d\I\±£‰éZRàa"Ñ·Z‹U€ä$:ªwÕŸ ¨ "«`ï¨x¼DÚO¡Öo9õ¼²&bä‡MÚhÄ‘L“TJ:´äâkϸ[K¶Ð¥1‹.Òãx[K´Y©ÌHŽ×-™¶œ²R¸¡a0~D%à‰.gELU(ªi&Ãt@ÈR—vP‰@C² 滑XÓsÁÕ—N‘UË÷.©cžÈǪ&gwZÝÜñcBÛ¸;÷‹™œ‹´Ø9È8'".7äÄÍÊE„1Ô(¢röÀB­R»kT©Å˜@™áiç#0³NÁUõ02#=#<äf_’ëg±c4Lœ Ô-¾æá4bȨ‰—A€çݨrL˜¥Ô¼õwUs›ä¹Á³‘‚NЪÛWù%Á³é+41f+Ñ$Øfòk½X9SfÊ(Ý-ÚLÔ0*} Ÿ'ÚNf6‡"w'å#,‰Ï2á—²T9¸Ž>D{õpËÙKk,»ñM[=T\É Üàdš8;T×U ;+qp)”€  `Pm&Ò%)DÅU°V¥ˆ‘¢`3¤å¹*تÒÄHÈNÑ9˜'%°ÄËJãˆ æ ¾M‚ŒÔ’Aw1Ë W ÈRWOYNA*¤ˈçÀ*Ý[%ZOÀ虌ˆ0wÅ –Z”Ñ3ƒžïrøÅ>-{ˆœ¾"›e\̼çlÐ@ŽAP¤1Á}%ÌD  «lu^„ ~@H“&4ù#l•\áh$IÎ>ü—€ã†Vȸ3ÙBy>£© ß°yÉŒëvfÂŽø¾C+¨Äé óíT¹ yˆLâlDƳ媗#­1IÔDLk1®Z¯¨œZ²ç#ËD¸‘r݃DdKä ᢢ`I¬‘Å3ärf\‹«0(†±V¦à×@$Æ£"5þ§h}™ízÿv·Ò~ò½ƒŸºiz]÷®¢®•nRˆ”D¢%(‰DJ"‡Ý¸µ`XóMíËŽmTe5©´nÅÃ¥>PAϤº¸f9f4E¿6›µZÛ2¡‡îß-r ˆš=9K>tÌ–T¢»Pè¶ÔR˜K¬º´ˆ´˜H‘s6~ "¹e¶qC .›N\îy š3LÃ`PHç ¶b9äR$qüãDR”äÚÌÙ—\»\=¾gÜ#¿n¢ h;³5&¡JrCĦ(;B5ñ_éï>»þÕ?¸«6Ô±•ÄKÖÁ–ºbÓ«¨Ò>zn u8°Ò šTH‰*’bíŠ‘Ö f]FPJ'Y·5‚÷£geØF›ÝÿWcÞ!ÅÍs¸§4¿`CvÛ€tR«‹fÙ\ŠÚvÅ¢ÎRD³iC•K D„O´€œÆ** G$w`]#˜œ "´ö.ÙêÙE²×\±œY~LÄr¬ÚP{gÆÅ24ˆ%F2•¬.7-rÚŽn+B ʳ»u™wŽÊ‘Žùû†ûægÔ‘·{¤œ 6B9ªr€ÄÕYg‚ͰÛe¶Ô‚EwdÒ| M~ˆpœNc°‰ˆh$¸:pÁÍ{²ÇfsV¤¥Õ ÙŠQmÒ”TÆRQáHab)¤‘Ô¦†zG3ª%&5[«Á7Ùm”ìußá8Ô&Ê9d¹Íl; ι5²1H ‡8^x[‹7!Lͦ½¸f&‹mŠÑg\‚fîFA³•7™›$Ú¦}€”KÛÿÁÛ-ÍB‰m\XËÈ|ÛÅQ{N^Ȳ™!l-Ýëˆs¶ƒÈŽUm Ú-âîúMÒë„"馈QEM±”ÐBh˜ÙˆV¾ë¹¬÷“*àªMF†á` ÄâZK£›!„a!²çLª*+ w$°Î]{5hûrN5¢SæU¡.𭉾[“¦d„úŒLà` ŠaòÜZx#e¡kuÚ\XÇWcœi€C¨0¼áoqD sH:õ¾¦v‚{tÌÂÉYN n“KH$Œƒ„+Ôâ½ET™™ nÄÓ \Ì&Ý©fàu;]Ž•zUÆ:¹±¤ÒipãM(Âê¡ØÌ@™F9’²¿a±Îè—20]`¢ÊãZâ, [¾;vàwౄRH&I#”©Šz³Ò#åKW,–`m¤º€¥ÆKZïÚŠXG„aλD$f-Mp†â•»pÊÛ¹g*Ïä˜×FBsgžZ ?ê•h¸Ib£w^Ö‹-œCâºzóíTpƒ C°'±FÏýrsúÃÚý³~Ÿô·ý¡g?UЕyE(‰DJ"Qˆ«í¡“MlÄÄVL§Lö|ÉLS``JæØQ^ÖÙSeçÄC‡7ajªªÁ¹ÎsÙñÆ1Œ)”DDEÄD}º"Ä¿6;À‰«JF&ÃÁ ·'%¹k,çcŸ˜r2¥@H@Pà\Ä ciÕ˜ %*k fÊAÓx2¿$#œe^òf€ {dnÔÈ¿öÇ "ÓX8cd±Ä¡ðªÜ‚io[ndZŤJ ¶#tV‹!N)” ¤ ٘وfÇ<Ƽ÷…õ]FÙF«un}…q|/¨h׳Tn ØT¾gÛf@²ÌJþ á_¹–ßFªB˜ÏÖ]ªæt ©pU’Ë@ö@b˜ !\½;ν6át8@îˆÊ68õî+”§xÖcp˜"ÏpFQ°ž¾µø÷àžG&Ì·uÊÝÉ’•nþA[‰¤NC»*Ù )—Q“LJ)1&€ @DÛÉítàlx03‡HÎvI¨ÛÁítáàÀÎ#9í&v¬6»7Y-”@“B„›9VBŸ÷RnI#Ÿ(œˆÔ7ÀV2š2…M×­ga0$¿Ã¦Øq¦o:¦ ‹NßáÓolD©8aœr7Á¯Ö3Òíªºë8E1@È.Ed‰Ò0# ”ssfSÚµöYAÊÜhñh#-ó‘q~ÑêXü©Æ—@#-û ŒëöŠÛû7áý±=qEoydz *ŽG¸Pê6h›T–ß(ØË&pIÿÂP„Ì¢:CQ³È«z׬ÃMÚÚá©$ˆ’uõ«õ/:ÕXXí ípÔÉ jv‚VêÍÂf¶:rÁ wÍ‚“¡—8¡‘H±ˆB•r$‹b"U  Â£#ІÞ™EšöÓhÃ/êÓt—Ó”eͪÖÃ_&Œ¿«²I&=ylŒçS`{[½[¦i ‰òró¶ü„+b™6È ‡)m¹9Ñ@«ªRöÀQ@(ˆˆ`\®Ù¯C F¸¬ägiê\³ÛÍÆŒ-p;g#;LP {…Ѭ¤œ‘ž––“J[« :t(VT(Ĥ1H„ÁL9 :øˆ/¶9Í,k@'ÊÚI™ŠÓínsKžü[N²V+f 9„·žÛ1B«V®™:Q±„YºmW"È“x u.P2e"¶ ÏVb"#’ûÞÑR ¨ìÈ®ƒ"X²ÿë !÷­z™µÛDâËÕ !®Î–Ã%3K®æI7ÇAI$H«R§ d^ÚB –UU2w`%>‘(&ô¨á›[”ƹHÂvçÎõyTv­i®R íÜ6Îõ,Ù‹Ù-¿©Úf{^‡Á?Ý­ôŸ¼¯Dàçîš^—}먫¥[”¢%(‰DJ"QˆªOüÙíßÿ%DVßjBßVÌ¡q¤åX¹d ÕâMÞ,Ôê¢oTMê&*…e& Ê"ÀFˆ´Xs‚¸E„-–a­¹lSޤlrH¬±Cµ¼TZƒÀ8œÂ<;tEËû4zß½¿xÛM_þŸ?ùƒ¿íSûгiñýJ~Ç,·’2–5¾ÑÔ¹NAt#MG„PÂe ±ŠPƳÌG1¯(«|ÞV†S¥VÐ÷6œ‚÷ÒÐNP2 ÑX’½¡ì›2ÞE»x F1&‹ –é³`’%I]Ù“ÞP›AÎLÃŽ“˜;B!Ví7¥ºØç:ÓYï.q8™ 9‰Æð¡$•îÖ×¶Y4Uƒ;v1˾5QI¢eLï`X\  »Ð5e¬ÙçÆ¡RßkªñR¥Wฒ‡gÅÃàáÓQ +ÄöUš¤CÛ}KJÑrNxñ°H[¹]E7‡UDôé9̧f&qÏL^–áY–‘Yück]ˆâk@Â3  2Ñ$£*ÍŒG“FÚPÍþî;´$™}!QU(¥¨cŸô˜DÁŽt«z[«»ZÏqð³.'Æ]©þ&€×o’Jò{`Ø’NY½‘² ]8]GLÕ^5ºê+¾QDÌ%̇2¾˜& „OÙ5*W½ãA§J»Ú×€œa€s¾ 2Ñ$¬+? ,ßkmÛÖ´j-[&І0´Kx¹Û *ª`(kP§( !˜² †²/+þñ½­.µZk8¸—€!Á¹äÒ ´dd*’JÏ”°ìy¹3MMYOäL› ·QȪ°¢%ŠbsM¤Jc—<²0‡·Xô/kÂËKˆ¡]ídÎç:Ì ×%I+ÐÓzŒks¬ o©'XŽ Ã©HrqT¾¤âž:ƒÚ³ ¹ÝËÓå\¦§bÆìPu3hI+zѶhÇÆ2A£VäÑAÁ4Ó(vŠR— üÁZúµªWy«UÅÎ9’L“é%†ÀžÅ?õÉÏëkôÎÍû Òßö…žýWBUå¢%(‰DJ"€mùÄŸÙ Ÿ±+DR‹CÖœ'Å;¨´E·¢%ps\SÃŒ=Ú;ß´<Ï.õMó²$e 耈ÌkƒáeŠÓk¯LÐapè'jå8WwÚ­¯¢ë=2à˜µK¹ËlÿÓ ©ó’}r]Ǽ:vÉw óèØSœ¶Ïý0ÚŸ9'÷Ó¸÷‡Bî¼úvç-³ÿL6§ÎIýôî=áл°§p¯>Ý…9ËlÿÓ ©ó’};xt.ì)Ü+Ï waNrÛ?ôÃj|äŸßNãÞ » w óèØSœ¶Ïý0ÚŸ9'÷Ó¸÷‡Bî¼úvç-³ÿL6§ÎIýôî=áл°§p¯>Ý…9ËlÿÓ ©ó’};xt.ì)Ü+Ï waNrÛ?ôÃj|äŸßNãÞ » w óèØSœ¶Ïý0ÚŸ9'÷Ó¸÷‡Bî¼úv™±å×mÞ˜ý§6ÎZ5v¶™StÑPQ#‰[½)€ 8W¤ðj…K=´ê´´ÉÈúJô[ŽÏVËvÓ¥Y¥®ÙJëzèÍ(‰DJ"Qˆ”D¢*“ÿ6_ûwÿÉQ·DJ"á †Ð¸VµÙžÌ÷,ëw×lijgÍ¥¤š¨8ts¦ S©«ÔäØQµDJ"Qˆ”D¢%(‰DJ"Qˆ”D¢%(‰DJ"Qˆ A~Aq'öBgìJÑ¢Ðõ§ ñsoª-mè‰D\ è;†8´†9=¿lÈù¥ØÜ n£’˜E2= „8fÂð®ðµX«Ómå ƒ¢å¸SyÚì¢Û5BÐA˜ô©G4íœú$„ù'ñ«”îíãÓÊóŠôéܜӶsè’äŸÆ§wo˜§8¯NÉÍ;g>‰!>IüjwvñéŠsŠôéܜӶsè’äŸÆ§wo˜§8¯NÉÍ;g>‰!>IüjwvñéŠsŠôéܜӶsè’äŸÆ§wo˜§8¯NÉÍ;g>‰!>IüjwvñéŠsŠôéܜӶsè’äŸÆ§wo˜§8¯NÉÍ;g>‰!>IüjwvñéŠsŠôéܜӶsè’äŸÆ§wo˜§8¯NËo±¥›kØXóŽöÍ Þ*-»[Lé5@ALt˜Âˆô~ Ú*Ú¬ «YÒâN~²½åµV¶]´ê×v'ìÏ¥uÝo–É(‰DJ"Qˆ”D¢*ªCÙOû¿—þ£DV­(‹„ð]LwÄÌ,¶ïÉM§ovŽæ™•‘nÎ3vCjȺ›åÃÛù·†_¦û׃Wõªé¡e¤æRvN9"ÎTjVÀâÐ׬œhûÎ/Ík™ýbï¿3£ñýj£ì„ë';ª¯þó‹óZ~±wß™Ñøþ´åd'Y8ÑÝU÷œ_šÓõ‹¾üÎÇõ§(û!:ÉÆŽê«ÿ¼âüÖŸ¬]÷æt~?­9GÙ ÖN4wU_ýçæ´ýbï¿3£ñýiÊ>ÈN²q£ºªÿï8¿5§ë}ùëNQöBu“ÕWÿyÅù­?X»ïÌèüZr²¬œhûÎ/ÍiúÅß~gGãúÓ”}±¥-âc§‹‘IhLj9Ç ÙªÿìBˆ£ÎÔ»=5µ¢>,À¨²LÈ ±–WP&PÂ?èDZ\NÚâËaf?‘ÂkºFäh]ûhùˆÙÐ|ÌL€,DÃrs©PÀb€ä „LR.ÃÃ3€·ÄŒÅk&㱞ïŠ.ÜK,Å0"¢@E‡ý ‰¿Öˆ±íkÝî$ÝXç|à\©ßÕÅê9ÁQ+eœ3­Å}É^'¤ŠŠ®ï|M:´ê!Áp§‰å´¸ÿ ·ë²c8˜˜Î!®+”Yøï ·ë²c8˜˜ÍN-lNŸ’ê%±o´y+0óªÊ¾5Ôá» ƒ”]Ž’Šër˜S s0˜Ã‘MËV²1˜ª<€Ñ†0É$‚[sœ£w'VÊÆâ¨ó c qAðˆ1–Üú’g§â¢P‘5Œ¥Õ!lE‚]<1šޕE×I»S¨MEba)*¼T1ˆcÞǸ·9®.øµ1Õ(Ë ì8ôhqÐk‡ K€þ-±ëXÖnÐ2×uÖÖÐÊv=PÝ„‰—ŽÞ°r«݈©›PH‰UM,ÔP‡6¡!JªUîÆÐ¤_Æs#6æ£Ê™Êrl™U¯w62þ0H͹€cÊ™Êrl•ûicmÅsMY³6“xA»³•@Kr‹Wï—ж¶é‰NCµ 0@:òÔ¯wӢʮc±`‘˜ŒÃš2Ìë;{6¥k )2£šéÃ#1‡4e™ß·±yÆãåÈæÛk+#`G³}1!‚s†Y,«¢¶L®ä…5A6‚©˜c˜ðª¾í¦*µä€^ƒŸ€'!&di$*ºï`yk^HÀåä‰ÈI™õ)¥‘|Ïݬd\/i ÙXÙU"ŽI•dÔ:.΂ç)„…€¦BPÕ§¶X–‹;(8é‘:F¢FÓè÷¬ZôD€¨7‰/z?Æ{‚4óLÝZ,•i*Ê>:-ÛõÛ(á'2„`›£*f˜¤méÍîZ€ƒ‘«!¶ oÂCÎ $bŠ"frŒã~ŠûlLv`‚I†âˆ™œ£8ߢƚÇɈh•dÏb7\ÑQ׌Êi˘w‡]•+q3pe7Ú‹¨ËH²*wk*;=KËˉÏ(ŒõReÞ×»=KËˉÏ(޵öž7ÜG·Up{ ÊS‡•$l{%I"œ°¸7Ù¦s JEŠ"bº ƒ0(ÐÝôøÈÇàÄ“-Ë8ÎFí¤ç¢¡°³cðbI–åœg=[g=žÞÇ»–þul¿„‚iòàcøT"ÎŽªÑ\¸é‚{­"‰”)Àâ$Ò½Ví§fkÝ. $e'aß®ZDuÊ»Rï§g2àÒFYdì;õêˆVvÌ^Él}ýNÐû3Úîø'ûµ¾“÷•Þðs÷M/K¾õÔUÒ­ÊQˆ”D¢%(‰DTmýyDY[MZïæYÎ8IÕ‘,Õ2Ä@¾•P/Øé³ES¦Lˆ9¨`‰@G3‹;±ÜسR~Îâkp2h£¦GœÃ«„Ì tÃP‘q#dÌBJ*» õ %.TÀÂ퉒¥µ.Mog3 \ì”FpªJn2MB€ö…A¢)&Ï·te“²³z˦àÌa­Õ,šIæ©Ê˜œÚJQË3YA˜‡n¾ý!]õonÚì4#J¡¢r@Ìõ JǬ&¡SF¸¢î³ç‘ f"É5ÃÊ«2å%ªDEDnEJsTÀºJrެÀr 딩p²Òö6ë{êbÆA{&Æ—9ÁÆ£š@ $Éi¤«q¹z5Ç,7t£€ WȤÝ5”å Ä»IAˆŠà™Ì˜Å%NR(ă«VZM”jpRô¦àLa#K› ;,m°ŸDL‰a+wðö%©VŽq!8¸Ê$Í£,²¤TPf¨˜4€W)~˜OXq«ÖNÞv‡áªL`Ç/s@ ÓuFíÔµŽŸ&<<)„¬”q®Ï%Å/mÌB1x·€Ìª­äPXÝNEø”V÷DPTÞ”'Ö;±Ì­;‚öÓe¥j¡…áíÅÌ‘ÿUÔ¼\X‹q4x@a™É0•½¸oûrÚÒ|£Åܬÿ©ˆµfÉg *ç“‹‘!HBˆŽH”íxçµö;žÕn“LÐÜd¹Íh Å‚I$65“»5@%c¡‰ö[‹¨öY$U7Ebb©é4Éš•Ø!Ê ˜"*òs•MÞ½Y{Y€…\uÃoeŒ[ËGF,žÂì!æž,Øð㸰ÄíUƒµQxí†ÓAx¹)5’“M¢è¬hG©&D]ŸCU”2‰Mcö)œÙÂÈr)„3-½l¸Åf48Êd˽ snHÊs"XJô˜Æì:·æÞÛs2Κɲ)L ãzçRÉ¢P@ LÖ*²D(L'.a˜Ôlܽ-–vZ¨0:›¿‹a°×8â3 ­q$ÄFprL%{A^í¯ë*~a£š$Õy(Ò‘bœªpc¦&1R™3”s †ej–‹©×Eãg ÷ nÊð À FzƒUX‚›²± ¿e˜}PWé_¬×øÅ[Õ¢%(‰DJ"Qh/È.$þÈLý‰Z"”Z´á>.mõE¢-N)a´F-Ù,+ŠZi”<žIÈ’)à´Uã|‡[sªPÖTÏžF L` "m"`(¶l«³¦ Š+ažÛPÎÛÿ‡!ÉÃâÿ÷K Öÿû¢.~€·àn|uÚå„a-­Ëe¾lEÑ9ŠÁD‡(ˆC‡óÎU}U'Ó$9Œ—à ¥Vƒ©’˜ËjŸ­‡–ˆ†0,k}X¸ÃŠŒY17j|Äu$˜—I1%íqÂÕ\<¼<ÉÔÉ“é\`´Ö/2u2dúVT…¥jËE)+lĽYs¹Q›†I¨Ö:‚¡”ÌQ0¨cL!˜˜Â=±Î¢ÚõXìmqIœ÷}Ù(¶µF;\Aß9îXÍì ¤“9†–L /ãÒ* '‰Vn‘@@¤Là]D(ˆ€cR6šîiayƒ¨“š‘´V--/0uVZµ°Ùf[[‘i-‘b¡¦S5H„9D„2¤QB€ œÀj&µB.9ëž¾žÀ¢jÔ ‚ãž¹ëéX3V ¯3o¹·:ŽÁ£gä‹J=ª€›Rz„JšÉ!L¾Ñ C3íTéÚjSx©$gS®üˆ3×2¤ËEF<>I3:wäAž¹•‹gáu—eC,\+UH+‹.ÙQUàîÐB”5T1Ó)JLG°Ô«Û+ZÇÞwAíïÚ¥ZÕV»ñ¸ýû öwí^R˜C†²±ò¦²áš£.ñ£Ù.HÁŒùFîJ䀸=4Bæ`6yÚΪËu¡ŽÆL“”ˆËvJ¬¶Wcƒ±“$å"2Ý’Þ±µ­˜ÆíÚÇ[±Qh‚ÍPM‰©"±ŠeS(p)ÌB˜À %ĬºµG’\âg=wiÙ±ZuZ$¹ÄÏ^í;°¸_†„‰aݰXÁpÅD77àQ(+»Ñ§XˆjË<„B®rËF,|c§I“1¹O•WÅ&LÂÈo`XŒåPžidÀ¡&Ù2"‹ÔãQ*é&P)  QJ"9cîÔM¦»šX^`ì“ †ÑYÍ,/0vI…‰³²[S´>Ìö½?‚»[é?y^ÁÏÝ4½.û×QWJ·)DJ"Qˆ”D¢%URÊxÝü¿õê"ŸÝV¥¹|@;µ®Ø†ò±ÊR;dä5"à€`6… Ú9@3!³)ƒ0 "ú¶­[b̉J϶âà£ÿ ”k4Ú ŸÅ4À  íµD\i³d]Ѳ­§mN6å1ÒÐ 2v޳xŠ‚¡]E̦ !í |úJµÖ°pîÛj³˜{*‡4ë`äsß’Ç­•B¥ 0j0ŽU1vÜOU0êÏ« á0.mõE¢-½(‹Œ%­ £ìlqÅ+–ÓÙõÍÝ wË4|ÅòW§»æœEMÉÎËg.–àþQüZwªáŸú}OwÍ8Š›“–Î]-Áü£ø´ïUÃ?ôúžïšq7,9­ªöws ý²±ul©P9ø˜H ê}Úȱþ‹xcJÓMï»ê Ó¥“¢¿¶Cö/áw쳪 ûÞ¯ŽVSüb­ê‚ŠQˆ”D¢%(Š´äd&~Ä­J-ZpŸ6ú¢ÑÞˆ”D¢%(‰DJ"Qˆ”D¢%(‰DJ"Qˆ”D¢%(‰DUUÇì§ÃÏÝýåýFÜ¢+Vˆ”D¢%(‰DJ"Qˆ”D¢%(‰DJ"Qˆ”D¢%@6‚ü‚âOì„ÏØ•¢)E¡ëNâæßTZ"Ûш¹ƒqSßã¥ß‡XmrÚPÑV´tC¬å!xªÇxEÄ{".˜P÷?Íù«A}_‚ç,˜±NØÒ>kW{^ô®vSsØ]Žt1GzÄël”0çÁ'>yZ>{7¡=¿‚ÒóÊÏÐh|“®=°:Pßœùå9ìÞ„öþ Ï+?@}¡òN¸öÀéC|sç”ç³zÛø'<¬ýö‡É:ãÛ¥ 9ðIÏžSžÍèOoàœò³ôÚ$ël”0çÁ'>yN{7¡=¿‚sÊÏÐh|“®=°:Pßœùå9ìÞ„öþ Ï+?@}¡òN¸öÀéC|sç”ç³zÛø'<¬ýö‡ÉxH]»_°`åñ±7Ž Ñ:¢P´œ­%ËÿùªMá£\àÞ$ç×ø)3†w¸7‰9ý¡òWžÞó8•‚¶Uÿq±dîF²Á±‰ª&6’ˆˆ€f=¬Æ»€d.¾£C\@SꪂQˆ”D¢%(‰DJ"QUqû)ðó÷yQ·(ŠÕ¢%r©v½Æ9»’튱6ek;jܲVØÈ+|¢Ì\*ÑaLÇݨ‰5²ÌrÏ,Ç,ë‰á'éƒ|¶ ë\²¡ht9ÙŒÀ#aUqc2qY<æö—îCúFmæµ ïÙÀŸ:wöŸòQÇO¹9Íí/܇ôŒÛÍiß³>tïí?ä˜éï÷'9½¥ûãþ‘›y­;öp'Îý§ü“=þäç7´¿rÒ3o5§~ÎùÓ¿´ÿ’c§¿Üœæö—îCúFmæ´ïÙÀŸ:wöŸòLt÷û“œÞÒýÈqÿHͼÖû8çNþÓþIŽžÿrs›Ú_¹?é·šÓ¿g|éßÚÉ1ÓßîNs{K÷!Çý#6óZwìàO;ûOù&:{ýÉÎoi~ä8ÿ¤fÞkNýœ ó§iÿ$ÇO¹9Íí/܇ôŒÛÍiß³>tïí?ä˜éï÷+og¼\WpŠ—¶‚ßR`ïSÜ‘Ÿ]‚"¹c#….Tè ÄHˆ*rO–zJc”r Ã:"¡°çð…l™ˆÏ \RkkM¢¡‘su¢x…Û¬QŠG2à‰ÀÀ %*†øvøQywâ ½im ‹÷³¡w!HYs¹‹lg€T ÞAC,;¬ý, A7kµî×Âû;­5hSaqjcÉ\Ÿ h:Ð,ÔØDœz˜òâý¶æ£M&.ÍB”™y"ÄMc‰PÄS!)9LRxJ ˆ p•,Õ)» O£=5ÓvÝË„©g¨Ça‰ôg¦½›W„v*á|Âí[DâE¬õgÊ-Sm0ÝC. €€Sˆ˜Â/Ìx‡»U}ŠÒÀK©¸F¹'Y- ¹„GQYˆv¾–ŒëÎ@ £©DŒý 3$S ÔQ\ǰ)3 B9s òΣÉkák°vC#Ÿ£Ò£É«C]„ôË_BÏŒ¹­É¶‰?†¸#_¶]AI%š»MTÎp(œJSD@ &È8ä=ªƒèÔ¦p½¤° êOa‡4ƒèZqÅ\2,WWUÄuÑr ÊñY4S@ë‰à™T1€¦!L`ÈG0(ˆp«¼ŠÓ‹¦f& Ì+¼’Ñ‹:ÄY‹‡Ñ*Kæßh¢¬‹$™“D†;CjÒ¹@M˜¦: ‘ñ#Ç€Õe®üÚÂs»½=J-³V~ma9Ƈ]Þ•øã¬‘l§^pÈÇȉÊÕÒS*J‰@ùG.Ä@@ßôÈh,µÜâÀÃ#Q,Õ‹‹LŽ¥©œÄË1Ô›Û:i³ùƒ±~+¢ÕtÔ‚‚eÖU€ ¨†ôÀ ‡ˆYUÚvJÍh®á ‘®ÙÝØ¯Q²Õk8Cdk¶NÅiì‡ì_ÂïÙfTí­Ñ{-oÚoUU´¢%(‰DJ"Qˆ”D¢*ªïô¥pÍÑ=Z¶½ÖÈÙö·gZ!Qÿ×R ñÿ_vˆ¤ø›ŠÖ.[xb<‘`á6ËH 5×A±Ôˆ+"rA6EÞ"ŒP0fE™eb6âLoVpö÷¹X†@g2 ;!D}£ f#ù‡!¢.-¬M°l«ƒ¢®»­„[·X«t\)¤Ê»6ZCÛõáÿhû•òOéÊ⼯NŠÖ:.{[E’@Ó7kÚ;Uªà—ܯ´EÒ ¹n %H!ƒ´bˆfÿâ¾z{MÅŽBÇ_u_¬‹„ÁT"„À C€ä9üáUs\ÃQxEJGÍųš‰tG,_·MÓeÉêUHåÁù„¢ÿ­\´P©e¬ê„=¤‚7`QE­·¯‹^ê#Õ`¥ÂqïÕ‹YS"¢I‹”Ì$91Ê®F.¢ ‹˜g²í·U®ï,†AsCÀN$%¹gƒ‚òµè¾]IvË&ªfÏIÈ`1G!Ë€…Iìu3…â /ÕUI̲Ê231Œ9º"5F´¸áh’‹ðË"E‰Õ!TS1!Àl»y·–t qÀda¥?´Ú¶âOJy[âˆL:R1Ì@6¬´ú¢2Ï0˵Y±×mœZœßœ õ€šèFq WîÀžÅ?õÉÏëkôºÍû Òßö…žýWBUå¢%(‰DJ"Ä—‰ŒŸ‰{4űò-Ôhí²ÅԚȨQ)È`öÊbˆ€‡¸4EY“e=œHP!0f×”9p "Ö];(`Êöóô,Ü&±ÚMªˆ‘“‰ÁUº PéÅ2€\ÄÚÅÔ ¨¹ê.w°¿îÏѲ‡¹1v鸱UÊÇ]Ú@$ˆŽTÆÇJ ½50*ÀP €(‹é¦Xv~'ãž a}¿jÃ>´`X “d„ÄHîHU>c©CflÄLa0åÛ®…ÕxŠöj¤NOai\— * .²U ab–\G/2øgv¶fÉÔl1y×ËnÙ>µ'[Ë‹Ž¸ëå=Þõ‚÷È6›ˆux6êKÖ7#HÔ‰Ò«SLªeW2Êo„†1´–a–¡0€¤ÛÈ4µáž,'=p–S·3Ô¤ÛÀ4µÁ¹‚Âs×e;uêVZ±/Žðî¤HÏEÈjŽ)£’z«¯Žó ô¯JÓŸ¦V¼=±é¿®wiÕ¿9ذCÄFzoëÚuoÎv*­¶bººPwtcž£Ü@ýTŽ_E³,KÆ»´PUÚ‹d'\€*ÀR€—I¥0dmÔ*ã/aØÔI8šs! lÝ'zØm˜ËÚD¶5N s! lÝžõ˜¾ÏMµ”· t,™Â"ÞAÒh¦¼KÕ¤®i*C ¢Àr…(é8‹y‘SŒÃµæ:žH̃R í "ñ"¦<;\} Ž­H3¹`MìæòfÖmk æŠmŒI>¨$³wîÛ¹YáˆnR]ùÌ &%8”U:¤ÍSŽ€Î§Nõꚸ3ðcų&ŒP-TéÞA• L9å#fM Z¬ØŒ³€_«v6{ÚxñÍK¹\½QW”, ¯½0  N”ÉØˆjÔ!¨`û{kø!°\Y&rðD»\ÏT*h¬à0Á%²g/!?ä©n˸Õ­pæ[ч˜ò»q’Ü™•ÁºAÒÒ™7c¤¡íuì­ÑzíQ*ÐæõúqÅ¿ ¿Ûª«iÍëôã‹~·DNo_§[ð›ýº"szý8âß„ßíÑ›×éÇü&ÿnˆ½SÙî mr'(€k"viz˜vêgþWj Îbðö“L=opwßk™‰ˆ’vù ?'Ý9u,ùGÜ ‘!­EO™•XÆT‚cs0‰„G:ù7ôÕo¥aá5¡•fjÙÁÍLYõCJµ\ýK?×Ðé„TË{eX(ˑ与–Tï›9œBDɪˆ  •4Ξjâ!˜”@<ÞÇ» ­@Ô_I¬È4¹–wQ8>L¸‡L4´LI…h8ê;¹d•Ê…ºhhCOD\‘„]3¦Ul,t£»@‰*] `jÈœ "<3eWYÝjÇSŠ}ðè ñaün¤æòàd %Ù€˜–L..³¶+Ü6½žÆ-+¨³Ç·Xfâ=ɳ Àè&S¨e”"‚™ \ÀDÁ™¬Ú¸VÖ±í²Öªê†Æ»Áy&»jçq £Â$Ì@1,t6}x1ñ+¾ByÈKjÔ‰`üÀc(ÑÌc••rtTõ&S•RD¹ ²8eW]Ã|mVÓ/ªU´½ÍÊÚÌkX1A ¶H2­$ªâXW>ί׌äP6{À_®tÔAþ´ly7 ³g©>¥Û¤]ÞYr0U öSe^2ÓR«c“[.iá}3/l2£Ž-H‘%„èV½ŠêNÐ{l¹ƒ`ðÎ⥣•Pó+¢e¹J¥Äà´ À¡Ì0¢p(‰ƒš³^Ì¡me­µÜ/¤à8¶˜ÀÌbpx­1·ÂqiÉFsUDö ßRÅ‚€•´,ùU“ƒ¹Ú¤àà 6ˆQÊñü•b¨‹BîJ ¨mDE¤@J&7cdá=ßgã­4kÕ`5,ä]P1µ±´‡Uq 2ÔH2– ··¶Ïr“ïdnõ¢˜qrµ–×" wÌÒ‡E—'\ë5pB€.˜®RŠJ” Bi8ê&ºëá•:vj¤æ@Å q®ê¸šR™2Àœl0H2Üœ……5€´ZlP‘3[i„J-\¸‘vÍf®…EE’frQH!R%(”L)ŽcžE—† <¦£šìUTà¸=£'Upa’ìžH bÁHðKgpæHKÆÛl÷6ó3«²§REvê*c=_ZDÒ¢ pjVy¨~Z¾ð’Ï}Râè¾£¦«êCÀÁ Sl9ÒÖÄDC[¢£*ÒØØ£gþ¹9ýaí~€Ù¿aOú[þг_ªèJ¼¢”D¢%(‰DJ"Qˆ”EÈSW Ö±ÕÉÈøíü-­ºånHŽóJosÓ¨C<³ ò÷B¸NÒ©TÑÀÒ|mù+’á…•©Ùø¶“ôä©/¢ …ðÞç$|jáù%£È=…qŠÓÑ»°§¢ …ðÞç$|jrKG{ r+OF6Ãxœ‘ñ©É-Aì)È­=» z Ø_ à>rGƧ$´y°§"´ônì)èƒa|7€ùÉœ’Ñ䜊ÓÑ»°§¢ …ðÞç$|jrKG{ r+OF6Ãxœ‘ñ©É-Aì)È­=» Áž¿¬U äSNõ9ÎÑb”¥’DDDH9ª+-pðK»Š¹FÇhM7j6dl‡ì_ÂïÙfTííÑ{%oÚoUU´¢%(‰DJ"Qˆ”D¢%(‰D\e€_ñ ^ýì]?k¯ŒÿõÿÊÙÿfŸÞõfÑã@V½xr°”D¢%(‰DJ"Qˆ”Eƒ°'±FÏýrsúÃÚý7³~Ÿô·ý¡g¿UЕyE(‰DJ"Qˆ”D¢%(Št`® ߯Ÿ½p–̸$ÎB¦g²-]®b2)EEvƒ>HH=Í ÔsfÙ¿¹÷ |aä©W~òœÙ¶oî}Ã_y*@N5ûÊsfÙ¿¹÷ |aä©8×ï)Í›fþçÜ5ðQ‡’¤ã_¼§6m›ûŸp×ÁFJ~òœÙ¶oî}Ã_y*@N5ûÊsfÙ¿¹÷ |aä©8×ï)Í›fþçÜ5ðQ‡’¤ã_¼©ô<`Û<ûÖïð¶GËUžåÝþoOØoÉ1õ'0mž}ëwø[#å©Ü»¿Íéû ù&>¤æ ³Ï½nÿ d|µ;—wù½?a¿$ÇÔœÁ¶y÷­ßál–§rîÿ7§ì7ä˜ú”æÅø&–=ÄY$ë¸"Z2ª£×\†bå'¬Ó!µosàE” »\iÜ»¾g“ÓöòLJ}ÌgŸzÝþÈùjw.ïóz~Ã~I©9ƒlóï[¿ÂÙ-NåÝþoOØoÉ1õ'0mž}ëwø[#å©Ü»¿Íéû ù&>¤æ ³Ï½nÿ d|µ;—wù½?a¿$ÇÔœÁ¶y÷­ßál–§rîÿ7§ì7ä˜ú•dž8iia‡v+%šBE âÙœs”UXë3œDÆÌêx·•g“*„É’¥5ED¢%(‰DJ"Qˆ”D¢%(‰DJ"Qˆ”D¢%(‰DJ"Qˆ”D¢%(‰DJ"Ð]×å¡a’)[Ây´RsR$‰b£“i"®ÎšŠ-] 1Š‘À¹å¨ÚJ˜Å"¤pËö„ÅXVòvÜŽ(멱òØ‘IŽÁtXÅìA] 3Ô1 rˆ‘L¿/Ñ'ó*"~6_¢OæTDül¿DŸÌ¨‰øÙ~‰?™Qñ²ý2¢'ãeú$þeDQ¥ì©×Ć8/°¨1ƒuVÀYÙ“]tˆöõ·(v²0Ñ—ñ²ý2¢'ãeú$þeDOÆËôIüʈŸ—è“ù•?/Ñ'ó*"~6_¢OæTE©¹ngVýÿsYIóH-çP*9Íó¹RmŽÈÉ/é…]#ÅœN\€HõéÐ9t](‰DJ"Qˆ”D¢%(‰DJ"Qˆ”D¢%(‰DJ"Qˆ”D¢%(‰DJ"Q8þû \AØó™³(ø8ò\mÏ#"f •ʆ(ûFܦ©Cÿ«‡"Áü8Hl%Ù*ÎMúBrFºå Œ¢¯ˆ›> `l Ê ?æ)¨‹§(‰DJ"Qˆ”D¢%(‰DJ"Qˆ¿›xC²ÐÛ…¢ùºB9Tàbb—¾#”1},î% ( @;@²²}ÍǵD_ÒJ"Qˆ”D¢%(‰DJ"Qˆ”D¢%(‰DJ"Qˆ”D¢%(‰DJ"æ§šM\xÑ„V3[òï·"åãîg‚Ýq£ƒ V–³"`×§YòÏ<µ›,³ÒðŠñ­u]δÙã-‰ÕgÝôY^¦Œ–¿›Ò]9ãgÒ ^sÏ»Ûì{!n»›gܜޒéÏ>d|zsîöûÈNæÙ÷'7¤ºsÆÏ¤œû½¾Ç²¹¶}ËCf¨¹fbå1›^2x‰Û¸n½úýDÖH圇(Ÿ#@D€€ÓŸw·ØöBw6Ϲz7ÙÅ“6é4i˜Ð‚©¤’wüHBd(ò €œû½¾Ç²¹¶}ËÓ›Ò]9ãgÒ N}ÞßcÙ ÜÛ>äæô—NxÙôƒ#ãÓŸw·ØöBw6Ϲ9½%Óž6} ÈøôçÝíö=ͳîZûFÚ™Ã]¦°Þ†)b$ÜeÅq(ù•Át»‘@çl›QHÀš§€€¬~9{•ÙðJýµßl®mQàaˆ®)û‚ÖÞVZvv·×ð]m]jÔ%(‹—6ノº`Ý©4W EÌ_IµzŠ.•n+$,Ü”N‘Šp À;B{ZjØ®êöŠÖÈ9ýr]‰©X5Ú-G3->ÊxQ-çUäœô¿:ŸJ蹟É÷”æe³§À¹O %¼êœô¿:ŸJr ?“ï)ÌËgOržKyÕ9é~tÿ>”ä'ÞS™–Οå<(–óªsÒüéþ})È,þO¼§3->ÊxQ-çTç¥ùÓü úSYüŸy_±^Í¥\ÎKbÈ‚Ç!S2sËj1J" <§<€Llƒó»Nz_?ÀÏ¥9ŸÉû×ß3->ÊxQ-çTç¥ùÓü úSYüŸyNf[:| ”ð¢[ΩÏKó§øô§ ³ù>òœÌ¶tø)áD·Sž—çOð3éNAgò}å9™léð.S‰o:§=/ΟàgÒœ‚ÏäûÊ©1ßpã%ì œ9Š‘Šw!4飓šmóQ.§9>+¬r‡dRŽ`ðí×cÀËþð½íUi[*b²<Œä €, }š•`°Fkú+]ÊÐ¥(‰DJ"Qˆ”D¢%(‰DJ"Qˆ”D¢%(‰D\íÉœø¦îú¸êå¸iû™ÿÔß¼­¥ÓûoR‹¹ÇyxÆã†ôfÑ„÷ÎàH´Þ‚ÙŠ<œC57{½èC²È£å¢ìk¬bÒg vÈñ‹cY똽nÍr*àŒ¦=Óè_®Ô-üÈî-E€N Á"™v®L«Iéµ"‚𠉑0 ó1ÒtÀäG4êµîZöWE_·¼fÖ—múFG<ö£-L¨<¯yë"®×]Š6EšMæ ÐYÇÜ.Šƒ§fzdȹK¼:àSk1rÌK£Jï¤-N²×~m™-Å3‡@6jެî,T`×^šJ³›ÌoÖ*=KOP:j!‘Cp¨'Äsÿ™ž´ÿê(ð­a§dl÷‰÷hwRª™í9ö5¼£Käv’ÑÏåÕ#5£–U“6el+É9P%KÊÓC#+˜4æµuÍQ®-/hÌ ñ .˜1àœôëV¨ §fÈëëÑfÝ›GÚV“çlßBÉJ£„Šî˜´béâŒüU—pMêjœ¥(˜¢B‰Œ%)¡Bè«] µÂ`º!Ä€‡@ÝÓ¼ÀU}¥¬0GVÍÓ¿ró{´Ö5mjÈ “ÇŒn¦Í&«U¬£4ܪ Ë"E@(Pà@˜ cˆ·5¡Æ£LÂFr&äb4Ðk¾ ©‚õ°ÃŒ^{ˆ·G%B×{ êÜe?«ò& ºIʪ‚jíSJ)£ ÀU #ÙfVívd¥%À¸8´ÄÀ€2Ì »FGb•:Æ£¢ D¯©e† üKvý[ ï?G~%«ÿÏÿ5­¾2Ö†YWB¤®§Å~i¾Ò‘7HS.ý2Î9˜u@@§ÈuÙJ…ztòKÜ#,£nyƒ9M't¡Ïcž@zæ'rÃÅÍ n[䬛8ß´gF>LÄzS>»†<‘Ó"HJR†HÀ¦¼Ê#¤ Æ¥`º©ÚCZ]á½²2Èxx5uÙr©ZÐêr@È^’·qxÙ{J¶f× ÊI‰+ƒ¨ÈIi¶J%ÔÕÞò‚*åV8·:"ªÈÙ€Ue÷uãWÁ Å–6 >6νJb»ÌÜæ6“´ÂÙYø»=~JÆ3€µ ‡P£§eÅ䙊ª$v£„Á&å"F„†h°‰Ž)€ö¨ÂKv‹;+\j<Î'4@× 9å24¾º²±¨@`'×ÿñbàæ7ÍbÇ&wèy% ɬ£gª ñ$ŠÙtÕ0ÇpÙ$ÔT¢D@À‰”(ïó)ŒR +Âíe†G ‚2ÔFçºÁË1šQ®jç‡/_Én_âDôUïmM[-âcå›6~åÂÇ)ß-½3Lé¢dADÅ2ˆ¡7›ÐÐ 5e¶:o úŒtNB4á3vš‘ªCÃH‰ÿ!D¡6„¹¥-VS.0î1)xëjV1šW •@íæ‘©7ËòRŠFHO¬ÀTÔdSç–]Kª“*– †^ ܱ¸²³ŸHªÛm-œ9˜Û¼Æåõ´cÙsÊNØÎbâ`ÑšßÉn$UjŠñ‹ +Wˆ(dÖ1#(})ñ&³nËJ·KXòçaËÁ˜x‘È‘3=c2m¤™‘Nýž¥’ÚVúzÂä·˜X-¡îH8‰yEÔ$(‘6í´Tª¦C¢&D_& š¥!@¤1ƒPd²ç ×2£ªbc‹FBs%Âzx'1:ä2P6—Zº>kjWK½…Â'®­g *¡²ÔcDºƒ€qèÿGí ¼my?ùbò3E¥wMzjæÒˆ”D¢%(‰DJ"Qˆ”D¢%(‰DJ"Qˆ”D¢.vÇdÎüSw}\urÜ4ýÌÿêoÞVÒéý·©e¸ÂKÝÖ¥ææ>AY%d•9 0ðY™âH×›ÞO¬©¤˜·yæ@7ªã^B-õÛK‰D£f $ŒQ1$íêÑt‹ ±m×S÷h¾¢ð¢È‡†,d<޹E’³lØíW"íÁލ‘DÓ"`RäP(€—…n¯QØÜDæ&&D Iu2vê‚“ ié;a, U(ëbó‘…ž¢*D7ßœHˆ¢ÜíÒÕ˜ˆ©¥5 –±È oTP¶mUKª<œß3ë2}FÏFм[` Ú-šPl‘P"òbƒ¢€AÁÃ' ‡à'þQs"z "Q¶j8ˆËfÁ°FîÝç3%KUýšðåÝÄ”òƒ8pJÅ€‡¨rªá¡˜Ì À“õnUâÙ$ÀÍ`› 0¤ì6ZbѪÂáã Ûv’¢]"r—FE0—†aÇ.>_jÄ]ƺOÚ?5N&œFةݰSM Ã’!HB\NJR”2€E»È= ®ãôvfÝXŸ#ÿ °/OÙJíÊõÍ%(‰DJ"Qˆ”D¢%(‰DJ"Qˆ”D¢%(‰D\‰¶†,Z8//|ÞêºN-û©¹…²ªšÔ,p"…i¸CvZ/{¹ök4b%§3JØ]Õ[F¡s´P¯íÙ§ß÷Í&ñ«Î¹ƒ|îo´·}У֟Ú?³O¿î/šMãS˜7ÎæûIÝ =iý£û4ûþâù¤Þ59ƒ|îo´Ð£ÖŸÚ?³O¿î/šMãS˜7ÎæûIÝ =iý£û4ûþâù¤Þ59ƒ|îo´Ð£ÖŸÚ?³O¿î/šMãS˜7ÎæûIÝ =iý£û4ûþâù¤Þ59ƒ|îo´Ð£ÖŸÚ?³O¿î/šMãS˜7ÎæûIÝ =kß vÃM ¶°Ã_C·*õä圱 ¡–ý6»½9ˆçþ ó÷8{µÙðNà¶\l¯ÊÀððDÓýák/+C+µ¸6~ ºk«Zt¢%rÎݳi%„·ªñ³·ïb>v‹1K|d¢à:C¢9ˆpb^67ÞÖZd=°'O\÷,«AJ¨{´ ¿çí‡bð#<ö¼Ó½ÝçÒSíwз½Ô£¸ÿž´çí‡bð#<öîï>’Ÿk¾„î¥Çüõ§?l8èÛ?ç´ïwyô”û]ô'u(î?ç­9ûaÇFØüÏ=§{»Ï¤§Úï¡;©Gqÿ=iÏÛ:6ÄàFyí;ÝÞ}%>×} ÝJ;ùëN~ØqѶ 3ÏiÞîóé)ö»èNêQÜÏZsöÃŽ±øž{N÷wŸIOµßBwRŽãþzÓŸ¶tmˆÀŒóÚw»¼úJ}®úº”wóÖœý°ã£l@þgžÓ½ÝçÒSíwÐÔ£¸ÿž´çí‡bð#<öîï>’Ÿk¾„î¥ÇüõªóñògìxJ̹£Ö‰–rýu%JȉŠbÁÂytåAj8{@gƺž ðb×pÚ*V´½¤9±à’vƒµ£röÛ)ÚÙ_ÿÙsimrisc-16.02.00/documentation/manual/html/outer.jpg0000664000175000017500000003365514665030471021353 0ustar frankfrankÿØÿàJFIFHHÿâ ICC_PROFILE mntrRGB XYZ acspAPPLöÖÓ- descü|cprtx(wtpt bkpt´rXYZÈgXYZÜbXYZðrTRC gTRC bTRC desc"Artifex Software sRGB ICC Profile"Artifex Software sRGB ICC ProfiletextCopyright Artifex Software 2011XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶Ïcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿÛC       ÿÛC ÿÀÓëÿÄ ÿÄW !7v´Ò "16UWX„•–¤Ó#A”²ÑÔ28QT³µÕSVatuw$&34BCRqrs‚¶ÃÿÄÿÄ9 !1QR2Aa‘¡ð"3q’±Ñ#br45ÁBáÿÚ ?¨p3¦s¦©‰„ ™N¡3Ô―¼\X1ùñ¾Vœju:à2©” ªDX\nJ*B˜éÂr÷@erj­„×5[ÙåÄ;‚ضaN8Z69Q3†è63ƒ«¢C Ðk¹Ð1Éäz>Mü ùœV²eعfÔLÇ‘U\Ú.Vn›õȨœŒ¦ÛÕ!(—P϶ê|ÙΧ[ÄÏõèGl ¹—:Ì$ßT!\À"s¤AÚP…8™0×l  Ð`ÑÉn®mËç ¾Ñ_m’`ÙÄ#ä\îÒr³R•#ª1•M““¢&*z† bmbO©ÿgÁ»’g;Ÿy×÷ÙùªÍpùç_ßd?æ¨4mÃç}ÿš |Ñ·žuýöCþjóFÜ>y×÷ÙùªÍpùç_ßd?æ¨4mÃç}ÿš |Ñ·žuýöCþjóFÜ>y×÷ÙùªÍpùç_ßd?æ¨4mÃç}ÿš |Ñ·žuýöCþjóFÜ>y×÷Ùùªö"õ-®k®{ÙàߎԷ¡žÊ•¹›¨@XP@êÝt:ìi®ƒ¦´¾[ï‹ÕÞ Û®Þk*~»Ú:’ ˜Ã£µ€56½à »ú˜vŒ> Fæ¢Â¸ˆ©â®I³Ä>*GØ8·pWÉ(7ƒ²qÐ~¡ Ûû«/V'[æ¶1g‘šbÞR‘£ ºÅmÝóX¨ùÉŽáb¬±[®°T‰´²‚%ÐJR‡ÉÎ^ï¹,Gg‹ó§æé`¬IÛ-…M6mf›€€<Gt$ëƒje‡dé”{¢ŽÀBÏË¡-E5ÞK¨ò1IOK\lcžHçbö@\™s$}Öe §®@€Š „Â'÷-«*gËS{”‡T0ôlbL ”¦7czÌŠ q {½±ý›Cß È8À›Œí›/cÀAZiZ×"—–ÑPè·,‘Íþ8qK` %û`q‰lèeÇ–îfV¼åð-^ÜòÌc[C‘9Í ù'NΨ¦¡ ÙGÛ™þš{f6Ʀ àÖ(]XÊ\lÅìCȃ·jxÖˆšD"çw6Ï]O ¶Œ²†l`¦(”>…’¥q yÕŸb cee¹ÔB@¶È)& ÌGH2î]™È™t€ I.Ê ”@Då &øÀ‚^W”ÅÜ[˜ °ÙdŽé°6ôêòº‰÷@ÚÝÁpG¼žÆßÒk°“¿0êðœÄo¬›Ê"ü $ÄÑ”ƒVE%Ó~¼zÂpÝ7†Ž(p‰€AAà P…Heof.Òù9ˆR,fí œ ê$‘<ÃÄÞ¿9Éí¢…:Hª ¨ "Q)»“1w>R^O@ÊÚ±¬-±#h:´E8hI¨º Dž=»œŽˆ†ÑT …WèQ&í N˜„ø‡5‰„¶:VÖ¸/kjö™v³F “W1‡g´\]ƒ“%Ø›˜40í¨#»Å(Npß÷½Þ»féëííðý{Ú1Ü»#·Ø½ÒrÙìY´O»ÿ´v=ØZ´ @ P( A̸“É žd­!2ÍÄ·éœíj ¤êFøC˜žW¡÷ÞPtZ@ P( @ P( @ P( @ €f ˆ\Iä„Ï2Vƒ™fâFÛôÎvµÒu#|!ÌO+Ðûï(:-@ †ã%ü¶aM׈íã "­·âH¨¦U…" ¶À²§A¨™º/ZŠqÕª­öó9ä× ý¬þŸ\®IkÙ빦 =óë¼ßo3žMp¿ÚÉéôä–½ž»Œ{ç×y¾Þg<šáµ’ÓéÉ-{=w,÷Ï®ó}¼Îy5Âÿk$?§Ó’Zözî0YïŸ]æûyœòk…þÖHO§$µìõÜ`³ß>»Íöó9ä× ý¬þŸNIkÙë¸Ág¾}w›íæsÉ®ûY!ý>œ’׳×q‚Ï|úïJðCïl@¸¯ Nüµ áämnÇœ $³ÄW#¢*pî•E#—sïlý}úº&ά5+iDS1Ö·*¬ÊA­XŠY Ä{B:ö‡O ™²•*Š ƒ–²&T…*† „ªè#ÜýUX™mª¦Î™ºoH{7›/Þ°“ìr_žò¿·Úvo6_½a'Øä¾-=ãöûNÍæË÷¬$û—ŧ¼~ßiÙ¼Ù~õ„Ÿc’ø´÷Ûí;7›/Þ°“ìr_žñû}§fóeûÖ}ŽKâÓÞ?oµýZ“M1~ßìJBÉY•Å+"Šðh»MTŽÌí %6ì¡€@Ýwõ½Í/›õ¦i¦iš©^UfE‚˜.!q'’<ÉZBe›‰oÓ9ÚÔIÔð‡1<¯C@赂¡Íç꿊<–ü!¨«cK‰ }w‰()™ "!·1Ôú”ZLοZ‹Û![¤ Æåû޼^ÿà·?€æº¼§âÊm:÷¶°bP( xÊßv‡ùe¹Â•Zv4µéÊÔ«3VwÝùmÙ8¹hü®¼ã`#^Û“úvFE6¨,¹ElÖ c”¦SO¬ÆÓ¾44þ<_ñòÏY¡xŲòòì¡ òE‚3˜£ p툪ª/´àA3‚…I3Áó¸ñú솊t†(A°@X^£d]5EB\êÆ»hœyÓd¢ uÀ€m*!´–ÈѳYW,Ðp»s7QTÊs¤aÔS0†¢QÚêµw'úÐa—%®¿âÄÔNÖ”ü:»¿ê÷©fP( ‚ây!3Ì• ä&Y¸‘¶ý3­A´HßsÊô>ûÊ‹P(*|سvÿ-˜ÉƒUœ¸^Ù|D‘D‚sœÂè(pˆÿ€TU±¥–ªáRvÁáOŽä½A!ð+´å6[Úhê;`ð§Çr^ øå6[ÍGløîKÔœ¦Ëy£©‰–Í^BJÄBÈÝ/‘y8²ˆ2LÐoÊ*‰‰Í¦¨†ºhÁ¨êbðpêSe½DÄÜû°Æ|‹{%"ÆBE'2îJíꃒ0ª©QI7 #³ôh$]@îuÓQ)±Ž´èê{û`ð§Çr^ øå6[ÍGløîKÔœ¦Ëy£©#Êäì}Չحrƒµ#’$]’ÍC&‹€8)Dt x>ºàÛ×Mv“4ìE¬]M1=­¬˜ ƒOð+,û -ûBꌽËF$².-‘4°Ûºƒ 6†!¸R˜C†©LÝ í,ꪩ˜ûÂyÛ'…ßÙÞÞÀÏ~N­ŠÑUê`í“Âïìïo`g¿'LPhªõ0À_9ÊÀì<·Vº.g7{V(*ŠF:Ö\»rꢅ wk¶!86µj  è¾6uSÏÞõñ×ÞM²¹—az) Á«†mWù pw®tN©@½i²;Fnˆê "ެP^¦Ù<.þÎöö{òtÅНSlžg{{=ù:bƒEW©†2Ö½áñ'2V<¥©r”-µq¤ùÌ…·#’G]XÑD»nL &ÜUà(ˆ÷#®œß+aš(›û?ëeêÌJ0\BâO$&y’´„Ë76ߦsµ¨6“©áby^‡ßyAÑj@ Pr[ª@û2×vnìé|*Ã;ÅÔ~¸jÚÙvŒRÊ7šM&àÍ»0"ßdÅ&Ö Ðßó¨Ù×]ÖŒ%ØOc;5ÚG¬Ÿ$)9k»$U7%H E µ²bˆjŠ@ P( ƒžWHM]íÖÝ—nd»,ƒ}‰ÛE ¶ÊíŽÁƒPƒh#@ÁŒC–Ål4‡¿§0ö~Æ})׬ós ùžæáDƒu!ŠQ ²¦ P Jr×­Ú@ PT™®âéôz…·@ P( 0\BâO$&y’´„Ë76ߦsµ¨6“©áby^‡ßyAÑj†vj2Ú„¸¦œõ´tSU^»[`ÇÜÑH‚s›d & QGN&"ùºYÅÀEÒ"èM]J&¡@ä9,Yá)Š!¨3᩺wOƒM ~¦×nøÚìö{òtÃVéð45ú˜;p0'Æ×g°“ß“¦·O¡¯Ô¿ÄÌÌá4ý넲±+Ý®Ûw‹™IEÈœ/[µ5¿.Ôªhf€&ÕwHB€w®šˆ0Õº|¢¯ÔÂÀíÀÀŸ]žÂO~N˜jÝ> Ð×ê`íÀÀŸ]žÂO~N˜jÝ>†¿SnøÚìö{òtÃVéð45ú˜J°çpËå$a,‰‰⛢éÛgÐã”"*˜åLàÑOh¢dÔ K¯ F£f©V«:¨‹å>¢…@ ¥RÍ] õG}†ÃÌI—lÑë¦ò>ØYvê*Ýs ®Â€:DÎ]iF«‰¦ŠclÃéÛ= ä‡}‘_ñ¦#GÛ'lô/’YöEƘlx«üzÆï—ØO;iÛ¸9ŠªH>ë]ĪZ‹£°å% ¨ëÁÜÔÄhûcÅ`vÏBù!ÅŸdWüiˆÑöljÛ= ä‡}‘_ñ¦#GÛ'lô/’YöEƘlx½ö¶cm[žò‰±”³oˆ9ÀqÖ&šQš*Š) ªÃßGJœDÙÌE÷­z–e‚˜.!q'’<ÉZBe›‰oÓ9ÚÔIÔð‡1<¯C@赂Ž\Iâ%¥¹¢µ±{>œ|ÕFxlÿ£²þ+¹££ *éJ=xâ’¶Æ"ÛvjErÅøÓODÂŽ+…:݇wÅw;I†¿ùMþ1UwU«ÑŒ6Ä´¤ŒRóH‡dÀЏb)"ð̘@%>šw€À:€ˆÛ3ÄÍÂ1™k2qÒŽ£Ê ÅFÇI<˜8' ³3SGŽº ¢‰™=ÉøœÆ)‡d¦ ¬ZÄ—¤q’Ûot7³ØÅËÉȹzå™A¢IìhØõ e(‰™Òd0hû@} Q¶8¾áò·ñ‚.në%¼c÷’)ªð\¬Ù•»D|éªfSt8ÛGf¡DS)À ]Gd)ÄÍÂÁ«Œ6~³— à˜JW[•ü^ïÊkøqóü6¸ÌJA¯ylâ¸ü©ºŸ?¨§cK^—‡ÙéÆLZ[ ÂÄDÏ̘â^±…nP3çÜðH—Ö*]†¥›"\^¶ü_ÎÆe7Mä wÇ`b°ëÓ²+ ÷„âÀCê×¹ @ÁW3¤ƒ ¶X¹u+oÉCµ{eYc"öHŒöÈVê©Ý‡Ò&q)ÀÀM¢€5 ¬¦a¬FIÇ KiYÕ%ûXôã’Kþ(ï[.é$ÊuTL€pnÜʉLbŽÉ“ÙÚPz'q¦"Ú]ãwÑrÝ ÄºÁƒHW ¸¢(,(Ö â£šÅ´ÛÜ¢FémœNm‚ ˜xDtøðxqÿƒ_æg¿–ž«;a¥= —ÝY™@ €f ˆ\Iä„Ï2Vƒ™fâFÛôÎvµÒu#|!ÌO+Ðûï(:-@ ‹â”цWu³‘U/ý‹Rà@2Ê·9aà8G€*%j&ê¢e¯VÛ<ÄÁ[±PjeݧŽdƒC([ª8âš`Q ¾ t®m9\DDao8&oÅäÈõÎa¼Ü\ûWÓ«rÈáG¹ÅäuÎa¼Ü\ûWÓ§,ŽÜâòVÁ™+ó®K×¾°<ñïoù€‰Œ"—C!¹(œLMJ@@N%(Äuà§,ŽNÙ+?®s æâçÚ¸Þ9dp§Üâò:ç0Þn.}«éÓ–G îqys˜o7>ÕÆôéË#„÷8¼™ì ´±A<]º1ý°ÖhúÛ‹†h‘å[<:ª éâ§7ИvCG$Ø5Ŷ´Ò׊ëµ+i4áŠi›×õfÄ P("øy»Ã»rùeiJ\êA´3ÓEEŠ}vá2 ›(b”Æ)6³®¦ÙР&b寪7y\²lðW 2Âþîš“˜—‘oÿIŠÓe7rˆ««S•"&UöLsNç^ @*".^º±Ííè 1úÖ]£€tá½›ÿ¢ùÜœ4qy?~Qæ;ÍÞ;Ûfÿ—Îã ^GÊ<Çy»Ç{lßàRùÜa£‹ÈùG˜ï7xïm›ü _;Œ4qy(óæïí³Kçq†Ž/#åc¼Ýã½¶oð)|î0ÑÅäñÄ[ø×vã‡u]Ø^ÂÙˆµO&«…Éq$øê †fD…2ˆwB 5̧ݦ™ˆ­…«2( Áq ‰<™æJÐr,ÜHÛ~™ÎÖ ÚN¤o„9‰åz}åE¨ AÌ®¨®Q³˜|}·.h¹ÛbÝ--XŽß. (¹›,õgJ4Ž †èš©k®ÐîIŽÎƒ­Dðäo3XÞøÈ¶N릥›+SÑëàH ¸¦!À$6„?ÀB‚E@ P(¹È[j%ÔõÇ0Ê*1’b«—¯\ wÌu R‡øˆ€PU#Ž— ‰™åúÀqq &)~TM™HÈ”tÔè¨b ï¸5ët…#i ¬Mu ýK/¼–NK07‹¼EX‹ÂPÇG¬mÖÇÇÆ®‚ìî>¡ ç/QÂŒ¶ ÆúÅŠ)åî©7/ä$–L ®æ¢ÆQ6©è&‚``(wÄ6‡QÓ@¹h @ P( Áq ‰<™æJÐr,ÜHÛ~™ÎÖ ÚN¤o„9‰åz}åE¨ AUc—„Eþà!ü²F‚Õ P(;Êø³°ò {žúº# b›‡Ò;rD×ê( „6Œ=à(j"<4®ú˜«‰ (à¦&%tö“»¯VË4n =ã¶Œî¸àÐCuÄ@æø{¢2ëk»•Fèʼn™JŸ@åY®ƒ°b¨wŒÒ<€ ú”Ø2Új¡‡„BØ P( @ P( `¸…ÄžHLó%h9 –n$m¿LçkPm'R7ÂÄò½¾òƒ¢Ô æ$^)aÞ]€»>NÙ…}2v¤PeÊÙª)„dM±¦ºš÷©:–¦1U£c3ARñ­%˜åqC¶z‚n0Þ¬€LC” QÐSÔ8+XÉíf/ˆk6TF¬^OOl~:ù¬ŸÛf_§“Úîó4Tqy±øëæ²m™|:r{]ÞfŠŽ/$BþÅ||¼¤¬×Èe ­q§8¡Oy³6îR´r†æ¹\ëÃú#ûiÉíwy£GO’_Û޾k'öٗç'µÝæ^Gl~:ù¬ŸÛf_œž×w™¢£‹ÈíÇ_5“ûlËáÓ“Úîó4TqyûÊ‹P(+\Ìþ­ø¯È‰Þ`µDì^˧5u‡æÙÃëlÚé Ìtá %w4ta¥])D°çœßÍ!¥ÏnÇ2‹¸—*QË#:“µ»¦«9ÜÖL… Éb‘é01´ÚèvF¢šñkVöJ0‚âqÖþŒt¬±ˆ ˆSp8”¤9uÕ3å!Oú&9€€"n ˜´¦vI{!=‰vÌ+V+¦ñ7ŠHË'‚)›C^È$Åa Cÿ U{¯ý£¥LÕ1·F8X6“…H+0áâOPb-™Â»YC™G)7§²žŠŠ.˜Si´R€ ÌRš&Ò˜/{äñs¡]ºe1s¢ÉV õß\"ªdl™[™ÉЩĻ)¨ ÈeE#(6Μ4šéR^ÁÍÅÜ‘Mæá]uË'e"®Á‰¶P @ :jõp÷ûÕh˜˜¾ZœGä}¿ÎWY•|^嫸qó–ËÖ @ P( @ P( ‚ây!3Ì• ä&Y¸‘¶ý3­A´HßsÊô>ûÊ‹P(+\Ìþ­ø¯È‰Þ`µDì^˧5s`”çÃËp‰)¹œÐ¬À§Ó]‘Ü  éõ×sGFUÒ”&Þ³Ä&¸•1? Ù4\¤³„¡`9› _#´±E¢uµ~c‚<&ȺUbÎê±J·= ðG­# |§ÛìU»·ÖZnÝŠz›­½7NçuÜö4áØ×]M¦•8?çð9À™—óL<¾šŒdLó‰Æ R‡¬¼²2J¦²Â¸‚ÚB™ R'²Sê`8‡ hæý¾¯.aÞå‘ë‹©[¹½çœ‚rJÉ4r¬ªäæ4’H›µÅÈÂiu¹!I¸€&=á¨Ñk¾ô\Ê^ù½‹<ÁÍæÍ¬]ÂáY7MÓ†ÕBÈž(#÷B)»é¸èTS‰ÄÀ!ºìŽ•5Yâëõrn\u¨‹`ëSˆü·ùÃêêò¯‹Üµ>rÙzÁ@ P( @ P( 0\BâO$&y’´„Ë76ߦsµ¨6“©áby^‡ßyAÑjk™ŸÕ¿ù;̨‹Ùtãæ«pþz ;ÛMI¦9b”Å3’€‚$Ô5®âŠ£ kkTN)g¾PÀxò?í$üjØ£z·Iò†Ç‘ÿi'ãLQ¼º_'m¨ÐÈ•Õ͉œ(¢ =L¢¢‚ Bênh:€?²˜£yt¾¿(`ªa„é­7¤¨y_ò dú¡/˜`ÓZo;Pò¿äÉõB_…0Á¦´Þ–X87…8X³Çq‡ÐVÚ²%!ž5™ŠA(d8@ÆÓÿQ¤DFÅj®ªúR™TªP( @ P( A̸“É žd­!2ÍÄ·éœíj ¤êFøC˜žW¡÷ÞPtZ@ P(^`ì«4“-ÂKJ²³ü"/‚@áâe*„)SgiB@ aðP\6ü «„ ± ×hdÁ± –Ñ„ÆÙL€.¦1„t®ƒ!@ P( @ P( @ P@3Ä.$òBg™+AÈL³q#múg;Zƒi:‘¾æ'•è}÷” P( M˜dÄáãÁÚâ ”¯é2%Óÿº¤ÿ–£AlÐ( @ P( @ P( `¸…ÄžHLó%h9 –n$m¿LçkPm'R7ÂÄò½¾òƒ¢Ô mȪ¨[²‹ ¡“Q6Kœ‡ ˆ¦Ä@@C¼4Lmh~X×í…–­Ý7ŽØÆ2ñMݹ¯ÉT9L ]Ó€5ú«ÖdY—%·Éèµ®ûæ"v¾kž=°Î9p¶É¬°á¦©ˆ÷cdJa¼óï.¸Ñíô‡N¹<ßÈû|]o>³¯ðú`Þy÷—\höúC§Noä}¾'>³¯ðúaã“ÀVóI ŒÆ1âóÔÛ9Eâ%^ú~pMtŽIR€Ÿ€å0Š=ð ~‘öø£ŸYÖx>—³yçÞ]q£Ûé9¿‘öø§ŸY×ø}0o<ûË®4{}!Ó§7ò>ߟY×ø}0o<ûË®4{}!Ó§7ò>ߟY×ø}0Ê`;†ÒÍ1lõ1.û¸"ØäŽÒá¸ÝI&W$‘d™T)V8”¦á¨ºÁ¯×Aò+,†Öšl¯ºc®^ãÙ|ñ”眖Ò×)ºújˆ‹¢íW^Ûêê^Œ P( @ P( ‚˜.!q'’<ÉZBe›‰oÓ9ÚÔIÔð‡1<¯C@赃tø1/þAÇðÍILmiö\8…°Ðÿ +èY³ü;/ë…ûIþß)þõ}Ö=s+rÜÐÖ„Aç'œ,‹B.ݶ¨¶U†UuˆŠD*iÇ1Œ¢„(J<&ý•KKJl©ÅVÏΦ¶åèìöë±¢/stjˆGXã%…&/IöMu£ÐYu‘ì+ÔÔѦEŠP:A´t̪`r‡tA0mxk(ʬª¾ëõvO㫯s“VmÊ(»EÓwþ©ë¾î½“tÝ=}O6þ~f³måÅx©4×Ü–E«…V“zÙ–äTHÇ1…wi“NÔJ (‰‹®Êèª'Tü÷Äl»|­ú^SUg4ÝT]×M5U}ó7l¦gñ:’Ën击b‹3áU[UPY²­ÕMTÎb(C¤©J¢f)Š`˜ <µ¥6”â¥Ä¶°¯'¯¤kùÄí×L_ÜÉÕÙ#Øcúå³ÿld¿š±¯!íÇ£å?wÕ}ÿÛûÇÙµõçžà P( @ P( ‚˜.!q'’<ÉZBe›‰oÓ9ÚÔIÔð‡1<¯C@赃tø1/þAÇðÍILmiö\8…°Ðÿ +èY³ü;/ë…ûIþß)þõ}Ö=s+pÀ3¹%ùU“M̤ )£W)¸LPäN‘@ß^ÈŽ‚®ˆ´‹§|O„ÞÖÆÖ«¦ªwLxÄÄùJ?¶¥Äš¤w#(™”píÈ‚Àª8zÕáû…1 £4€ r˜¢S Ô0¯$¢½³={ºæ'wc›c-¬gTFÈŽ¾ªj§ªbvU;:îºçë<µ™’8N]SÇ:UáNc¢QQU$>0˜¤H º±H¤€ÇîD¨É(‹µÎ¯ÌNíðŠ³¥­XµF¸»¯ªš©ßº©Û~»»åöýºÊÛEê,U\å~ýÄŠ›©€DXâshÜ€£§Ö5½E÷uÍþ.µµVÓWTDxje*ì‘ì1ýrÙÿ¶2_ÍX×öãÑòŸ»ê¾ÀÿƒmýãìÚúóÏpP( @ P( A̸“É žd­!2ÍÄ·éœíj ¤êFøC˜žW¡÷ÞPtZA¹SQ[rU$ˆcœì—)JPÔL"˜èXÑ1µ ø1ŠŒ,Ü(´íYûÑ‘Š‰nÑÒe³dŽP„0ŠŽƒÃõ…zì‹<ä–5uÕ7ÄDl—Ìsײ9Ó,ÎÙE14ÕTÌ{Ôì™ù¦{üÛ_ÜÌEö&Sà×+õ싊|%Ös#<ðSõSù7ù¶¿¹˜‹ìL§Á§ëÙøIÌŒóÁOÕOäßæÚþæb/±2ŸŸ¯d\Sá'23Ï?U?“›kû™ˆ¾ÄÊ|~½‘qO„œÈÏ<ýTþMþm¯îf"û)ðiúöEÅ>s#<ðSõSù7ù¶¿¹˜‹ìL§Á§ëÙøIÌŒóÁOÕOå”À å/lÖç¶.†1lðöA‚®e ]°'\I‘Ê™Lºe”¦ê(þÊóÙã-±ËmiªÆoˆ×u½ß²¹£*Ìù%¥žWUQ1tÄê»±¸uÔ=)@ P( @ P( 0\BâO$&y’´„Ë76ߦsµ¨63©WyZ­É˜4î‹®Î.äE¿|“qPGš‰vÌé¨k§í €o½„ÞT-/]¶éÐ7ÞÂo*—®Ûtèïa7• K×mºt ÷°›Ê…¥ë¶Ý:ûØMåBÒõÛn}ì&ò¡izí·N¾öyP´½vÛ§@ß{ ¼¨Z^»mÓ o½„ÞT-/]¶éÐ7ÞÂo*—®Ûtèïa7• K×mºt ÷°›Ê…¥ë¶Ý:ûØMåBÒõÛn}ì&ò¡izí·N¾öyP´½vÛ§@ß{ ¼¨Z^»mÓ o½„ÞT-/]¶éÐ7ÞÂo*—®Ûtèïa7• K×mºt ÷°›Ê…¥ë¶Ý:ûØMåBÒõÛn}ì&ò¡izí·N¾öyP´½vÛ§@ß{ ¼¨Z^»mÓ o½„ÞT-/]¶éÐ7ÞÂo*—®Ûtèïa7• K×mºt\yÅl.y¸ˆÍž$ZË®½§.šI'0ÜÇPæf¨J}DDD(9[–n$m¿LçkPWƒ…¶#‹öå]X-£©.ðæºX5Xâ?÷è0ÔX ÷¥út ê,{Òý:õˆ=é~z‹Äô¿N½Eâz_§@Þ¢Àñ½/Ó oQ`xƒÞ—éÐ7¨°@§œ/<$ðŒ—œr¬³ÏüÑÇŸ.ð”÷Ÿq¿ñÙ?lþÆwþ°13Q?}*( È<þ;ÿÿ{Ü3p¨âC¼ÜÝ"ØLÜCÂðnlÁg™8Í›>ÀÝË×íü2þ7q‹9Õ/ã½<™™:™-Y(YYÙ3²)²oäää<ä*ä6ä!ääUä=äóä¿(¨)„)p®×( )Z(F)¶)‘”Ü”ª”ö”‘”·)›(ßRn¡‘h´:Ú .D·£'Ñ{jŒ(Æã‡IÇTc^aÖ©H¨x¨4©\©¨îSõP-SC¨9©Õ©]¨ã©K©û¨W±p,/‡õƦa`‡°;4T4444…4Ohh!´<´8Z_Ú´´ïhÎ1ŸS=çv.õ\ݹÑs?ééTèÜètõttôlôšô>ô7é[éç   Æ á wú¶±ŒòŒ.ŒÆFÆi&0““ Ó¦ûLƒL{Ì,Ì™™ó™{˜·XhYTX¼Y²Yž²l°R³*±z±f³v±~b£aSeóeËcëeÛagb×fe¿Ç>Ä~ÈÁËaÎÇQÏ1ljâ”átçÌæìæÜábåÒçŠâªášæFrËp{rçr¿äþÉÃËcÉ“ÌÓʳÎKÇ‹ãä­áå#çSæ â#òóÃùeø}øïð €$< Þ ‚¥½ïŽœ‡—=ïžx~RˆLHU(L¨FhQ˜VXO8N¸Uxû×› 7/¼¼p,")â+R*2#J%ª#'Ú!úUL@ÌE¬Pl\œ\\Küšx›ø®„ „›Ä]‰÷’Ô’ú’É’Ý’¿¥¤¥ðRuRÒ\ÒŽÒEÒ“2X#™t™~Y˜¬šì5ÙDzûrRr!rr_ä…ä}ä«å×xÜJ–9ï).(±)9*•(-(³+;)•—T8U\UÊU>ªò«z«Öªn«‰¨áÕšÕ~ªË©_U¦Ѹ¨AÐÒ¤Ò4×,М×âÐòЪÑÚ¹(yñÊÅgÚ0m]í›Ú“8fœ ® ·£#­sU§W—L×T·@wIO@¯×¡Ö×Ñ¿¥?kÀmàoÐjâ oÎñuÃŒ ×LDM¢L^šR›:˜V›þ0S3»a6cÎgjÞmAiakQeñÓRÃ2ËrÁê‚ÕU«kk/ë6 ›r›½Kš—r.­ÚJÚ&Ù¾³ãµ‹°{eÏ`ïkÿÄÒÁɡɿhéXíxädèDtÚsÆ99︨»äºlºª¸f»n¸)ºe¹}tWtÏr_÷Pô¸å±á©ìyÛsËKÝ«Àk×[Û»Øû§¡O…ω¯¥o½ÂÏѯݟÊßÇ¿7€% "`$P00)p!H.('h¯‹/Û·…`O/ÅÁP¾ÐÄÐÅ0¥°Â°_ááM˜ÿˆÁË—S/ŒÔŠ,»½âr¥;Š=*6jñªêÕ{Ñ hçèîkœ×®­Æ\Œ©ŒEÅúľ‰‰ËŠûoß‘Àœ“°œx1±&‰" Ÿ4™,Ÿ\œMñJJOÍO=&¸^§‰¤ÝN;JwI}]ôzÞõ“ ÷Œ¡R7îfÂ3ý3ßÝT¾Y™…ÉŠÌZ¾¥«%›-›ý=Ç!çÕm‰ÛʍÜÐÜ…<½¼¶|®üÌü£Ï‚‰BµÂú"¦¢Ô¢Ÿw\ïŒÞU¹[WÌ\œV|PâUòþÞÅ{-Dâíûðûa÷×J-J_–É”U•3”§•ÿ®ð¯X¨4©ì­’®ªªfª¾Q® ­Ù¨µ­~ ñ ­N¨î^=m}ÚCàaèÃO Ž ïu»›dšêq?*j¦n&´€Z.·ì´z¶.´Y·´ë´wwÈw4w wVÛzîñ|¹Û¡{¦Çªg¼×¸w¨O·¯ÿ…Ö‹ž—ª/»úû¿’{ÕþZæuë€Ô@Ë ä`óÉ7ÍCRC-o¥ß¶ ËwŒ(Œ<U}>¦1öb7>0a01òÎüÝûIÛÉ…÷®ï×§|§v§Ã¦gbfa³„9ôÜíy¦yâþõ R O5—L—f–]–7W‚WŽVÖÈ×ndýXµ.¶þxCkcøÓ¥O«››‡[IŸ1Ÿ‹¶ù¶}Qù2¸cµ³º‹ß=ùšþþ[Åw‰ïÝ{F{ó?ü~þ$ü¢ÿU¹/³ÿòÀòàãaøÉQÞoþßǺdz'~'''3€:Ÿá¬‡œâô<‡Á‘ ‰@"Qd”d(R R$’CNA‰FcÐ(2*j*4õ)GŸ9Í„@§ѤHRôÿ'Ï Èœ Æ€ ÐIïiIœ- ú³ôAÀQ00Š<ÓkžÖ±°Ó¥#$$PÈ™tª‚p†Jšš†Ý*ìö£±q:zQËÐðÜfì91™ìQNU5c'|’K*X\"èÔ ãi€ÿå´fA`p’S¥òézNs„„Qü§Åi ÔF…e5޽Ù@-®ê|NCËÁ)¦æ”Õ82ºH"!©ŽÛÙ}~2 AN½c @˜iè…Ë«8ä%¦X5®ß•êÚ¶ÚAÎmJU6û_È;^Íé¾zuZ­1mÙÒ <˜HzÛ ·Ü÷8°i™Ó•±!Ä:J3Ò”ƒ¢"btÈÜxë…7–¼$7yJ*θD|[lã¶«ÐW;öŒ_Ÿ–$l&4ìš ¦ÌÒݳÔç [÷ÍVyAƒ2ÐfxÌQÆ€çŒÏsÎ[é° GKN±oܼ‰ÛXJ5T¦Ù7«ùë—É ®Ž”È£¢­çuÕ»/.ÏK? W˜:W«zgUdQÔ¿1G“m,–—R~ǫT.‰_ÿ¡ßÍÓ»3푵K´žµHݧ´J~5Z–ƒM+£þ;] riDc}‰!GYmbœZ‘¶Ÿ"¤„‘ºŸšì‰Ÿ‹G/ï P£+2ðîT”ÚµƒJÈÿRCpÂméÊ“^ì`¤Ý-jDß>JOS59¢Áý-Æj~ç|²¥ ‰ ]פ,OÂæÜ®Ì±úàó=ªRd#ú®0ÝÔä•O™ &¡ÈMð¿ÿÆù–*ˆ?=¯¨Ä‘Y‡'21ªþ°,ŽÜúQ6!ÄЭºWñQ_a2ý€D8m%Q’©Î¥¢›+³ šâ»̱üÏvçöíמðlgvi=dÅ>™{^. NÏçíÑÒÐ Ô\M“K­ÅÓ•8—aßüL@\ŸËI#° 'Æ6ò®:è·´Ôˆ)ùuøÍ"У5W3B-Æ»k¬¥ùwp™k fI´‘žŠTÈ ¸@ó¤·îtSÔ¬[eú©l»kz_Õ§q„õ*ú†×Œà‚ëãSJn´hLæ·Úè>å’d\{¡m\7900Ó#ËÑyÇE‡N”ã±­—aó}úì!åÁCTM£ß=H6ùg,謩ˆÃÚlqë o-bj›AŽGqþ¯~Þ ûfDöxðÖÐEr,ý}. –AmÑ+ÙÀÏÒÑÍ,µà/ŒO¹ÓcŽ!¤U*”¯Lª àÖþÌ ž™óܨD©Œmž—þ!––%Qäý‹-H«§6ÌÜ¡™šXg…èe0þJô„z¤3ZÎçÜç©sF–××Ó!’Ó™Ÿ«óÜJZ1RuFfyj’VaE€ìgì‡IÍMUF˯•Ѐœ’>´H…$ñ®ˆND¾\ëû,Ý%Æú'RSª¯›—â”çæ~ø`¥@¢=1\3ÔG¶ S:­"w1…IÝw#›²¤ç¼yTcÛgsmx|$ÀÁÄ`&k¦¸ƒ8Ýkýƺ5î†B°IÜ(¡‚ÍYÊ(IŽC+&åÁ"yôtå£ùÆñ¤©Õγ.e׉¿lœÚm¥åÈ&Ísih4XMê’%?h·`¾Z&ð˜n]&Þ"ç`É ²ÅaçÓ‹µ¯2Á«_g>¥¤dTHÅV~=Uä€ ÞÌLìJ [Ì2ÉqóÍ/£û=6|ÖZ©ã+Þÿ"w ÖYˆ\Jì½›¢÷ƒÛ5`DKÙϳUÿ6RÚ#@FÍ~§·yÿ&5ø¡«dpí×›_ò”]ı±dÄüV$“œ¾Z _\ìk{;IrŸ¨ÔO:^ÄîÀ6ßí墰µÎ°Ð$’—GŒµ}lOze>2·×ÍÝqŠÝ`ïøÿ”tÏŠäm^ÅÙˆV·½_ìÆäFüžÝK•öÕ„½“Éáõ0šÆˆ#@:Êm‚f›j…Z¦q ×#_,ÕÐôÃ[ISÑù[:Ã4·KγfêO9Üýî?4ï Ê/¡¹T%?ôõ¥¯f²ðùù‡¢᩸[|^Ða˜&*¾’zqo'Ì÷ãƒ[dÓmi(t=ìª}WƒáѨbŸUÿê¦ ½·–Ë\p`N°Š{0zåyuaihÙû!WI¤¶_ÂE××}P¯„Ö"^ØÜülßÝ6]r¿Â:±j¬G$ðËÄê¨Åxó`°°Š©]Áï5¤7sOLLlbO€7œ³¦œ¹ÒݪHþW"ÌÌW©Ãž_)‡Ä LA4Ký³"úzs߉:­æ¼T×/U«gcøRPÞEŠì6Ö÷r!©Rî ²4Fµ} 4´©;Ÿ¿w„¸íÖSÖÕ}L¹•Ësn®å÷£{¯¹Q{5Љ2âô.Dçì˜k Ó˜© “ÍJ|â¥ëÒ¤Ú±÷Eé·*}*(ýˆ¯“»QNî/vb‹ÞôÝ”Òæàݦâ T¡Ha*…A«RDörÞ1Š€ƒtæp ·Nìü*þõa䮼û÷±fŒ¯?ùɪŒ”…͉ “…¤ø)eª,‚$~é€W³ío¶¥Î­KâቕV¼bŒGØ ¯kç-1yÏðH>ú~ejßψZ^~€ôyF|ÞnõÆñ ¥æ¯I4›s¹S¾¾ý¨¾óGtHo)nv Äówä_¾ò{ì L* èÃ^ÿ¡8ïZIþ [½©Ùd=æv©ö~È Q‰‚èN•T&Ÿ©A’©¡Èyév<+sׂ~¤©oÔîuÏæ`C*ü÷/ R4ƒ‚™dÏýÏQE²‹¿Ï)R±Rf+lìR\Ÿ»óx"®rÞ¯ ý¾ëˆ:7€³¬ä8‰þÌ=;º›Æ%Äÿð”Õ&”¶k7:âãR‹ªyAÇEe¢Gá||ŒhÎú‹Âg6숕ÜÐoøöBÒ~âbn`¬+æ½¥HÝ_oyÕ²bOÎϼfEdä*ÑùwqÄãEÖy!3W Ì-+—¡<ô1ë†&ä†Z•3Lœ¶Z€ƒµg•4ïÎÌÎoŠMý}¡ÛÜ«~$Sf ;‡ô|—ŸÆ‹Ú]IÎîšfR2jOë¢þâufÅrZ&xî«­ñ†)«?©à¤™l»¬ûûޟΊÒ-íÿµ¯èû¡®k£QÝ Á·Ò²>оSùû& õkâëÔ8‚L•›E%Xר­ð³u\½”´ççáê¿~úZ±#ƒeå—®ÆL„õmøžž•ÇùŽÚu’/Fʬ¿xý8bQu8¥$úQ¶«Kä<^wLëÔÆ2%õöWlͽz«6h“~ #©óiASʳ6ÿM£)èG/‚CÞ]ˆ‚ß«ºì- Y¶÷Ó­žÄ¹1Öà5ošeŠ—!AÁyåÔ‘hV•ñêXŠFÑMÊ]€3nN¡3þµ4n9.ŽË騮.¨îÄW€`¶ú)³Y•û-&”Üjô™}%fo{—$«ø±Ç~Ö\ËÖZ|sç|´™R0œµS$\ ‘Bm9mEå Ù*¾$‡Ni‡†5 Šè%SÏå'(”°±o 2%Ý=~ÊÎXœCô>b?‚¤t¾µî0É­å¤üõùšä:ëq<ð¡îý¡Ä3É^½¤8Á¯/Šß…©ùËö ¡3X2¢³I%l\ªEÍOruL§ê…>šºe^xŽôÒèØí½ °Gù®Æî¸d÷¶`qüœ:ÝšÏñÕ@MÃX•¼dÒ»dÜ §ÜÑIä'ÀíÛ»4ÛfñÒ²„Ðs³MÁÄ:×¼;à"\s S563µ ‰ÆP½cÏM;ÞCÑ)vŸ³x<«QÚ³7® t@<¿2ÇWGÿ[„V,Û§o‚ÎË4ãO½ 1°V‡1Û—"ðôÑOó¦2+\nåÅå§gkS„…0†€5è4ïW§VV‘ñ1…ðC¶èº¹nðlO¨c¥¹cý=­Z:^­¥¹: e# a Õg&¦¬Üþr~ºõ8pè‘Í~nSj£å®˜ÅI‰ÿá´þW/ï{¶¿UŽXxõàñGÖ+Þö{äNkû!žWöaÇdÛÑ`v1ˆ—H­˜jn‡ÅEv ~›¿>5óFE\|ý‹Xú ývb€‚mo'~—ªA'èÁÃË2ǘŠ_mp½%²#€ŽÞÙx¤;.`Ä7$ØX>d­“ÈW$hnsŒ2¾¤¿ð‘ùFWQ‡‚¤Á­ƒ¹r±ö𒔃2ËÜGË ?¿å^L*ãÝëÔ²þθ¸ŸÌäÚU¦tŒ_ß/=nõ|½:¥,²œžû-ãå‡!;†ìâwŸém;‡’ט‚²ŽƒÞîÜï19õ|_07’|ç¨'CÌaHžõšlH„·ÉµKÜð_TŸ²æ÷Ú¹úëð˜Òí¥7j3ªrZ‡nKÒW·[²gÂPMþdê‰ÐïÓ+“†šZ’bw½6«ø„¤Ó ‰]¦æKÊæã¿NSôØ®xÆÓñ˜}A›½«o¾+ÖÄ~sèe {{伤W3Z¬€JÎÄÚ]=dûI3ä[XΫžâÌü¦¥‹•ÛöÚ•?,¤„mv»±ÑÇÍ s}WóhT±°‰y­*í}e¤Sþr%Ü=Æp:š'hr:“•ÛǾ¾ý©¿Gs ’ϯø¡© Ý÷‚#;XRn’­aÀp5sllÀ>§XÁú}Ë]"·ïL0_c»‹?ޝ×i,4ä^ˆÂTQ¦N(mD#¯ ͽ1¾;ÁlùÏŠè|º±±U—Å*Úå$¦+®[R mXtð—tz7_‘ 3»T¹°Tò™æ9I‚pÕ-;â–ÚóTŸÈ·¶$ÕR-'pxõnwYõsaý|ýDɵ‘'GM‘¤r7ï+NeÎÉ×û©Í•Yüý Roëz·r\‹cŸ©G]Íþë$e¯_ù/¼U¢rD>]Ûo¿;ñl¿~‰RÞãX4ˆÇ|Ãð. 0:k Ú&öŽpûéØýN•Å·ýzS»œãáçf‹¿ìhȇ.6þu)#$}÷’hâ¼Ð|Þõä¶2ßަǖ΋&uãÚoò9fnªµ±!(¡<‡]}Û5ï8•º rôF^wçQô%ÙbljP^Æee“¦ цS%{SN¡š/Ójîœ-¡áW‡ ceXë¿\(U(nRÝlìþ”vãœÁ 0#×ùtùYåäÏÜQ–?gU\û|ÇîCЂÉæáÀ%ïÖpäÖÃârßXסº/m;¼½ß«ß“oýðT ³²3ZÚøpèa>A{püõ@ýÕ¡KçyáʶÝ/¿›j:·Ï~_»|•Glùõ]Ç V+ µMÙñ5ƒYLYm‡.c»þsÓ´û P1MòU†z¯îw…¶§_²¿mî„æ†ËHæšû]ÔmÌ˛ʛ½]|lÇÿÓ1ÿ}†¼küD`”.1á+&{Ðù ¶Ù€¾Ob+¾Æ°b>6»XížW6`¯}ö;öR…—b~µK_Žnàž5")¦[ûráW'ø¶45·zЛ¤Âuɰðq—UÖ6ämš×·ðÜM*»>àò®Ÿ’ÿ×ßκm%”JBoæjqáXпvÙÒ<¬;íz6ᄎâ¶áìQ$Æ–jXªlÄö>¼A­uIF¬B•”'SÿPK ÏzSQ modalities/UT “_u{`ux èèPKÏzSQ,ûøX[3q;modalities/modalities.jpgUT “_kuè_ux èèí»uXͲ7:Ëp_ ww‚kpw® îî'@°Ü!¸‚k‚»C Á%D€ì’÷œs÷{¿{÷9û|×þùjžÕý{ªº«kª{ºk¦{Ý-Ýmx* Ê J÷p·…A£,+ûXK[SAYMþ/pOàûÔÅÕÛS[Q†ÆÐȘøYXy¹Kki©ÿ”ÎП|ŽóŸ—ù§„amãeuŸ_ßÿ‚¬Ü=½äYü¼ÝÿàÂ{Œ°tú 7ÿÁž÷Þãá?Øîßðê_eþ ŸþUFW[öþ® €†e÷7lù7üïíþ!:iOo[7[o? O¯?ž¸÷–§›­ƒ³Íß þoþ'ämãïý'—usðt°³÷¦ù?)ååæáþÑ?ùD4þ?öÏúÏ­„Ï’ôže6´EÉò?x ÷~Å€Ö)+OßãAÿ$0À)@Ð,'À b€ ¨š€.`<¬{Àðü€ ˆâ$ È^¥@ð hÚ€nà=0ŒÓÀ°lÛÀ!p œW „ ‚ƒHAÔ F;ˆ$ ’ɃÔ@Ú #9Èä òž‚âA) P¨ Ôê½€f@A› }ÐwÐo0ŒF€)ÁLà`a°4X¬ 6Û=ÀOÀ‘àDp¸\ n¿ÀàCð€`Bˆ ´Nˆ0D¢ 1†ØB¾&¾ ~~5þþ*<5A$A AÁg8N—…[ÁŸÂKáðm ‚¡ŒpDÄ#꓈SBB~B}BÂ\Â7„D"&"e"g¢DD‹D¿‰)‰¥‰mˆc‰_Ï_“H‘ØÄ‘Ô“,ü&¥!•'u"M&m#]#ƒ’±‘!ÉüÈ ÈÈŽÈäbäVäqääË` 6 mŠ@ŠŠqŠ3J*JEJwÊlÊ>Ê#*"*)*Gª4ª·TûÔpj jê4êwÔ4„4Ò4Î4Y4ý4§´´J´>´E´“´WtÌtzttõtkôôÂô¶ôiô½ô§ Ô ê A 5 ËŒèŒÂŒöŒ™ŒCŒLÌLLϘژö˜I˜•™Ÿ0×0¯²`³H²x°³Ì³¢° ³:±æ³N³ÙØìÙrÙ¦ØÁì‚ììùì30WŽbŽœXœÒœ¾œ5œ›\D\j\\m\'?H~0ôà–[€Û™»”{…‡€G…'‚§“ç;/¯o.ï<6Ÿ_(_;ß7~v~þþ%¸€ºÀ3^A!AOÁW‚ûB BæByB„ÂZ ÂÃ"0‘P‘n‘KQAQoÑFѯbœbNbÕb{™Ú<,}øYœNÜB¼H|C‚FÂ\¢PbC’VÒB²XrKŠ^ÊZª\jWšUÚQºVúD†[ÆS¦EæBVT6X¶G"§('7)O ¯'Ÿ#¿®@§`§P£pª( ¨Ø£SRUJVú L©l¥\¥|ª"¤¬Ò¯Š¥ª£š£º¥Æ¦æ©Ö©VWQOU_Õ`ÔpÕhÓ4•5S5×´˜µ<´º(H-d.rG›G;H{H®óX§Zç\WF÷…ž^¯>®¾©~•þ…œAŠÁ†áÃ`Ã1#2#£vcTc}ãrã3y“t“mSÓhÓE3f3³‘Gdœ½yŒûØâq“9ÌÜÀ¼ÚüÚBÓ¢ØâÌRÙ2ÏòÔJÖ*ÓêÐZÊ:ÍzßFÜ&Åf×VÜ6ÅvÏNÜ.Õnß^Ò>ÃþÈAÖ!Çᛣ’ãKÇ 'M§ §;gçz4s—WW'×~7*7·wv÷h÷ QtSOUÏr/—™W»7â~Q÷añ‰òÙô•ðÍõýå§ï×äïïê?À°ûDáIY 4Ð*°7ˆ6(Á‘ñó©ÁÓÎHÊȰÈÏQŠQ5Ñ8ўў‰={qˆ™Œå‹Í޽³ŽçŽÏˆ¿N°J}Îó<ëù]¢mâä ÁI(I®I‹É’É•)ø)OR>§ª§¶¦Ñ¤Å¥ýLœ>’ÁŸñ2#Ó's#K-«=›!;)û:Ç>g!W&·>"/6ï"ß:¶@ªàÕKÊ—ñ/:.)µ3g” ”ø–ì”ê—• —U•“•Ç—ßT¸VlTjWöW UUUST¿¨×øÔìךÖN×ÉÕµ¿â|UTOTÿxíóú Á¼a±Qµ±·I¸éU3cs^ ¼%®ÔÐzÚfß¶ÑnÔ>Ó¡ÒÑÛ)ÖÙÒÅÕUÑMÛû†ðÍ‹·o#ßÞ½{òî¬Ç½çè½ÝûϽ{Wú ûæû‘ý“ªà ƒ}CÒCï†Å‡»GDG:F…GÛÆÇZÇÆ[&&Z&'[§„¦Ú§E¦;gμ•œ}?'778¯øö›=Å?n³uñmiÀ ®Ö °¥ vXº^-ê}§LÞßpÊÍk×3qø.‡ ¼ÞHi\ƒF-_)‡Ï,"…Ã¥äzZëˆ%—ÕN?“ r¯OÏK\â#]¾yçg²mŒV.ºé!uuüÙ¡—æåb |¬ï@­ÅÒM§u•|ÓJÄžQ—I^ë²Fr´{'Ü$v<‘ª!5h¯ [÷•bõP’ÐדôòÆ™X«~µ¦f ÎbÚ·Ä½É ±ÔŽºb‡c#›s+BXLô?[Hè°RžH·ä©ºy[¬'& &ê2{Nù•†¦*:×w7Ñp°—ÿR?RC!Ÿ´ˆ{Œ:3ª ©!@ÇÁ,zÆ•ãQ 6Çfæý®5ÿͬ‰¸$Å|»–žäk\fc¹ó’+›,}ð‹¶è“ Íω¤B^·¤'«t8^$¸ü gƒ3+†½Í‹«Ä°Í¾;¾»í+B7m¬*ÛŽóŸ 3.U¨Å‚À€ýs€Ãy¼yñô1×à“&côO ¨gùÍŸ>Ï,Mé;I‹ÓÜ6µæ^?a_d¬dþ…Ûüêá-;è¿Î÷‹ ›·fMEýÁpY}¼+ÎqX#Ã:%«S¾Pœsw²«Š6¥å!0«Ò…ha1 Æ)¥Ö ø<äó&.¦f}]½Ën~ý«ÇðXÿKÃÅWrSÒû"'-ÑuÖ÷?d%ÉuÓl‘Fɨ • ÅùÊW_Ž¡;D¸‘p0\“G_O;'ëié©?œ!ÆQX¥Š™†=A›9N1Ë%ßTÞ‡Rœ#UcYúéM“s{²”•Èk=Ó¾ÐÅv²Ù±d•³ÆgY›Sô‰æý–ÿˆYýÁ‡ýn’ÂéÀ¥f÷\(6;DCÄúÕª~ø8¯ ‘Ç×ùuAŒ˜ìÊ€s ZǤ|eV?l™K>Ž Â–ÇÇêëEÄÆ.Ñç‡fŸß‰­¾)œM¤ÿ~5˜ø¤¬pW$î¿„nn¸Ýd¿¾ùò-äLkÜÄHÖ—ßTqg±Žè·cö’q=¡P'³¢Ñ|øÁþáïªoèf–¦ý:¥éÑ ÞVç#oí%]V9¶ã¢D¥h+hÕ÷³ä¤< h@ãr¢5%" (»v5¢œs˜ù¯:ˆ5žK7 ±—Ç z¾B" •S'äR•SgÍŒ¿Ã¤0³æyÈ:®fìRß|õÙ*ÛÄprþt’Ûñ”Tö¡;.uwð–­'M†ƒëD²†e¾¹ÿ uŠ£ý¯UDýÓ2JÃï¡ Ì¹Êœ¡ ¸Q®8gðU–U³¤ÞW=2iRh1IXZÂa|l?$×\>… ®hûNÈõ¿Îl%ŽNòž9˜ßßÌ*_ f·Æð½j,׎UÙØÖ*Å–Ÿ·à¦Ç¨Œ'R–¶2´bÕY­)ÀHQÚ0'À…Ïu ¦CÒ0Œ)¯2ÉlwQ¡gvž¢¤éð«¬4kþøômqù–eýõ蕚øíUŒyÿ7& è:Oz9`.!ðj5ÞF#öÌûìFæÇòW}¨bóŧç¬ñ¬Šø¯(Ì”ºÊMÖx%äxÕiýp„I9—E?TØ€Ëà ‹Ì⸠Vý±oATž 6~ ʼAôÜ[$äƒ !¯i¨—ÖØœÔ¼1Ë# Ü-8wWW ²K¹¬ã\Nžê•°0òôvêïñt»Ê]\jãµ6f”8Nƒ”9Mðh,6` u:jž °, ö >Eo„Zlö³keV}ONEÌfñ¶_è©eLØ´þ>R˜¬ô}EyûÐ,á̶þÎ÷PÌáÝPñKã§îõœ©î·?ÞVð`«vÞ‘éí‰kÊà÷¦'ôÓ†Ã4rpîò¤0[ôr­q¯ÓÛe¹Í>l‡ê¬‰ù–ë„ÚÄ žsCŸrê^>f Ô)ÏŸY ú3ûì{EóœÆÞ‘b œ¹-Õ†>êzVóW"ouW¹Úíj§Çžàœ)ì—ÁT»ä¢rïvʃƒªŽùç:Åð­ôWÛZóÞWqw78!b}–y-'¾«¹ì•ÛÆ•ÍÈ"1 T™“Bg¦úÔ~_ê,Ç dÅ‹‘Ãã)”M¾´»!´iͽ»ésÏö•¹ç%ÓsŠÝ²MU³J=(Éz€ÍR9•©útñò?EËw¸¾½šÍ†Z3x­D¿}5Ÿm9½aÌ­–E'”¶wQ®Îµ¤xÚ_ÎÅw¸­éè}o$q,ç3îY D§¸2*Z—Z⻸´xwQG€DN±Í¸A&„ëé9fgË}Öãq’eU/˜64^ê™9~‡• ¦9šØzÅ;i±~ 2z#´PÔ)†GqÇÀd™”m­\ÂFJ\¤û)§kBt\:J¶U2JÒ4°†Gáü?bi¢ePî_º°¶½ñ¼cWDäR´ŠuÊ‹¤¸qƒ ¨aQP;ö&*𨸶o\TЧ§àiÆÏ^ÊMbµ”Žga>¶TÜïÙ—CrÙO_@Ù“ßvJ®øøÒ: ·¯ò¢C(ö$å×çÏG|„cûÏÐ@ }cÙ½ŒÊRO²'Ö7ØÊ)oi× ¯¯˜QSùžnå6OîðU¾8†+ç§¿mHšÚ oöñ/3¹ø‰Ýìk±º¨ˆ¸È 9§"# ÝžR‰³ mƒ(ÂÔ‚1P-¥æÿ™É'cšAòˆcc‡òóó×é™qxL9꼨æ\ÒéªúGˆ5’bO W?œ’Ž‘Ë\DKÖÏ\aqN¥h)ŸîÀˆ-îÎç9ˆÔEÄÆ5§|ÐU$Jva< ÆAô§#ím#pûYŒ:?}ÎJ°#ÖÝÖ¾m3*gFz¦jeÙgù­1ȤU—k]þT}I§!abiÌ }Þç¦ÜšœêšÛêF΂Á° OÃ’G3ß°ŒACC YÆ8Àò¼ìË%&ØREYNnzN E$÷j’ÝY´®GÆ ¦1?EÓ2zÝñ>I_Û-ó!M\Üó:?´¬‘ :FõÒ‹·Jae#ï)€DR@K·çÕs~ƒGÇÛ.Ñ]鹫L² kÕ)mÂBÏ |0¡”“Z·XçÞÅœùöë !XÝ.ö±‹$"sùŒý¼TÛ218wÚÑ ç&;hÝû“P ÃÊÜÅã\¥pN=åtQÊqW­#!ï¥:‹ÅûˇLËg*=Í&[÷³ëȼUÿáé Û¢ž…blAù(o6.lü` Ô¸_¾0[ÎG¼Ý\þªî¶W˜WÔ³üÂ¥è\ô,ãÀ„Q@=ÅŽ*ósùz©B£Ì„-#OÔ—5®â»Þ”' ¿Ç¸Öy>JS¼uô2[Ûùÿƒ¥ý#zéJ,`KÙ}q¯·b±f pMCÈÌÈv ­ZIØ5v$…NTQHŽJòµ“è^ Ž‹.]­pyÞ^n¹J Ý<)¨Dç§Wïë_[‰ÕA¿.=ý=¹ìöm¯Þ0£pßåÏc{n¤™ºÉNq†I<{¹vl™[ùÑŸo¦àñÛÃB-)7£ïup8·çv`Õ9)ÁTªé¥Û0è§Õ*‹ùâãâˆrø©ºìIo †…°zdû¤¯¤ ‹rŸFuXšI­º•YQ•³ŠXŸuK{âU¨m0r‡l‚0ÐZÔpÛ9÷§ÚZK|w‘Z­ÛÉü¥Å."IUy›E qú‡øtŽÜ' t"ÏÆ¡«ÞbÌ·Œf®4ÐËYpUŠÊ²ßgd&Ô}&:‘*7>ãè=QsÛ”ÂdŽGq&] ñÆÇVÍÕ虌 £O¯Å2ßÅqãÂqßi¬Ýç¶Fì¥ZFn|†9ÃQt@E–b¥ùÌš‰Gг"²Ìœ7 õkl­]U#Ʋ!Œ£Ke–þhmTÏrê¡÷$©¡p¾FŒô­]–P|D¹qçÖë,ˆ{˜4d9þVôâ<>?cX£jâ7‹¶á> “WF·0w ¢§¸›?ð¾.KÒya¾Þ¦O¯¨•ôÇšÚƒã‰gu6ÓÓvš°ŽiOŠÑ´j8]&]Þ E3Ü/7Óêuû§˜qlöoq‚düOÚ0¢U8# sY2åmüj„MºWý?‹a,¶Lp-`’ž rej5Zñùwõ®„ð¾ÌÙ t–YÂÔ­á6©ÄüvëøÞ˜¤-TuºÒ6o Í0šó/µ-õ3™Ç¾oòw~`›\|²ŽƒÞzçÙ REÕ‘Hÿs¤ ˜[cˆ©?%§aI˜dܵ𵰠®¥¹šF¦¶zCOtë j¿9?÷äþWìèÜ;€¼ÀUà™> ½c_¿Irйt¸ó¯ÑÚMáØôa)^¹n¾zÕ§ÂÂ2ÕU9uNZ6ƒ 7?µ¿vÿF+)a+¸¼ØÆÿÕ¤CaîÆ†à'ç³ßê¹¾ 9¶Êm·Y²ó’æ"¹ˆ| ³Z'‰=÷Õ®éRò¿À2¦Z}£6b]{Ž)t?&µ™ë|2R®]C6ZA]†¸_¼±då,aaØAóùà¨Ì² §Õ§áþm,¸ˆ†ó':V"½™3ÑP¤p‘ãæ ,âÒ-m蛋‰ÐÎöÔJvïöþD©w¹z]F þܶ–#!·Mc­ÍQ<–6 ¦A¥‡Fš(_ؘ0(i1VaÊ=ó+ÝÐ0qÎŽ¾ø…Un€öcÞjþRÌ…h*îרô1Q:móœ{s‡9~°5ï•wO^šl?ÂŽ‘Ê«ç—vmF'xRDJ±ð‰b1“½¾\gÛté{6Έ|îÁ¿„¯¼<ׯÔã™í‡ Ô('€g!Åúŵ£ÅH?Gõ Q•Þ;@î‹ø¦™©qڵøÜnå±ró®²áã½¼gݬƒßºÏ²VL!—S&S^¿›Áõ×y¾õ#àïôB³ ¤…i.ŸÑ"´Ø“ê´‚|`çÇ¢ÝæÉKqÅ¿k׊ŸØ­ê[“x’8Ÿ«áu;Ø›÷§M£—Ï:ƒÎ(«óöÙ1oàIQÂë„ š$q½/Ä´]Dfõ‰3Ó~Åðè~ä&nBµÿc¾Ë"Ó2…£,¶=öÉò÷°ÙµðÇR¾h#Ïgœú„86yu5\ªIÌ6'ª5Š­"4P›ËUc&+ùW¢Ø‚zê–³Ý-SÜZ‰úÒ+¡CQú›·˜¿ÃoZ5oõ‚Y­[Î^ŒÍ`L ^Ç%–Þ’¹çÕdù½]³ •+È¡zÕÄõ€9/:›f6Æ:^‘5’9v2»~O~|÷ѯIk ‰¯à¶Ó&Y”ÝæwSçò¦žô!²ÉÇø¤I¾[-·# q ›·}•™¦"·Z¸rŠŠQ¹NÂLõàÎ6 ­uøö³³޳'?Ô?z9Ó;$;Ý9“Ó18XÁ—›©Ñ¯jþdvvÅYõM²é¨®Åß sÌŠé,ÀŒõ‘JõT:[î,# KLxODe5µ°þÛw¶š AÇ•Àƒ…úœÛ)›“<*âT¸²ÕøÒs@¢æIבóåÂà §ÞAyÄ®YåU±g“IFýöÕ²,ÝsF2‡4H<–fh$ÐÉmâ2V˜KQ/¦«óµý]\w½hGÁª¬£GVó¼õ£¼®k~LJՋ‹í&­X)þm'«{Ný˜øƒ€ÚŠþÄr¥oÕÕÃO£^Ün×ú›\qh°ñ¸Kp¿‰W+=ò=àúà(úQ‰®hEÒ2(¤09CPÞ§u¡œWÒj?m·Ò~¥¸%ß?EP˜L‘ì'º1iÝQIŸÃË ÷n•L¢Û ækº8.gÿÀwG|óçÚ4¢¯Â·nÙ*/æ½)ç@|æõ¤üªç?4ÑÄOù¼*Iý¾Sô€þ»_œŸÖ;ñŽ-éë*29˜xʆ’’ª¥«²yRÈRi>O›e—È]Æsúš‡‡™¨²ü¹-}àg‰•/"ú&©æ êÏô|sêsá‚ ä.¸!ëíôs”/ö15çëË?_2¿©ØyA¼ûØÃ½¾Ï2(ÝŸò»b¹õ,ÑË* É”Àåûo[›£û/ÙNÅžl¼Pó•,å”ÔÎ e¸h¾žÙ è}‡û]oÃ÷ì=UÖQ¨’qH™ð­òW‡Ë’þ«ø¨rø—šžãÃqž¥Û¤æëÔõ¹бÄׂÌ#á+ O¬nh~§ý»1ð.Â_Κ)õP‡æòü'°GH<ÿ"¥w> Ò5Ê­cU-™áJ:± ’íàvaŽ‘Þ‡*öýå¶V¹/$&Ü%Ñ6Ü[Q˜¸`Þs„NÙÅ•1 b¶3d¿2£  $Æ¿2Ø|¶)Á ]¶E¼cª’Cjáf\Æ7fÆ='§Å!ÄŠce¬=ö\šqø¿Š€®†ÄGdOhGJ\јmA^ˆë0°÷‹Lž”Ô~%åhlÞ³-ÛùÿèUN!ñ*çõdL)³iü<5aϵ±$Úì&‡yR$Ðfy` Fðk¢óÀ±“ ÑÇ8 ÛZ ºW9i)’¥ääêÖ=ü?qCÔ I iNa:ê…–œ[‰D?ºùÒü_·©}w"ì—µ6mÓvxÆ pç*£µ7D–_Ö6â£# “Ýc)„tãJ«¤¾ˆ`¡°ÆÑf¡¡¹ãáNOÿë{K¢Ì¬?fB^‡ŠÛ÷Žˆ€ÁæMƒè…¾áÎD$Eû ÜOªLlYKEÇ&Ñf”&Tön—lœè“5ËmX¢­§?}מ¶Óëþ‡˜Õž¯zÝ·®+±î¿ÐuZ3é‚›˜þf¦¢þPù­Š1ÖA[~ûXIÕöÀȉâc2¹Ðn3³Ð°}¤d<­;*.Ó—.ë ±RÉeëŠC™})°~ÙÞßíŸfX¢›ãY+bª¤èjIþj’Ç' ÓùAM3Hn"§ê‚ßd‚®úÖFY¬ñcP7ÇXú$Rï}M1& äAi\$WÑoµÏŸ&Ÿ:ÚÿïzHÕhÃ0aIÓé¸ÍÇЈYŽª®MÂË£†Ü0ÇÛ yÈB7À #¤ÖdÈ0ºd ab—n™‡Dàj1¿?ðÃîJIëÌÉÆ?‘7•’à°í>¢Ö¤rß·÷U‡¯“íµa•ÖŠF-Ê•Ù*8ËYrt¨J#i@/;B!B½ËÉó4ÚÅÃXçÛR³®kïBÎ=¢ì¦L+‚Qè•öúŸÛ€ [U°(€—QãrÔ:T¼&V-cËMy˜$ß¹ æ’‡S*WºŸÄ˜îG)Ïš¬¦jîÉiùÑrq.ÿô=©ò¥3óÀ‘L+®W>#ÃŒ¹±áú›L¿RAþA6(œ¿„ÂK‚.LtÕ’C-%‚´nJvç“ïv½w>àù´¤ÒÒø«èf/Ôo.væm`7ÖÿëìÉV“‚Ηš7Ï×|GLÞ›}-6‘Hf£Ù˜˜S†àU¬–gC¥4\i´¾~ ôÞÑãjP3ŒÉj„Ëë%ÿñ=y®Ý•ŒüU|Ê@RJßXvï wíÀ+OAb'œ¼ño q¶S^ÓRøfôYÃr‡^Zfël0AЈéb!Nh•T)Ûݘe?H6æ‹•p¬V¯ ¨¯Ó¹zо“Æ˜¨MP}íAÛ•)(°BÎ3¬‡ ¢[3ÿÔ¬ •Ò1ÑÓÌVìQ‘ì|Êô¯íƒ¡ªÚÿml é8¹Õćéüêsl¡Êç9szº¯)wCMx…‚ûÜ@`ÍÞbed ¿I‘o ˜d!g˜IÙŠë ã–’EêñH}¼ £Á1ÂfÏŽsƒ3ª®6jžTÕèR-J¿é.{{¸a ÍΕÛÁÛèýºÍÕ³º=íj Ÿá»`©T`±¬8ÇÄŽ £üÇ"Ë–÷AoÂT¤Q ×¥Ë}ˆ•ã&D”K¾µ*[Ò5DéFfÊUÙa=ž8BÅÕk‘ Æ0ÔŒQÉÓqåÛië;`Øé‘ƒښ2á«"‘Eg•»G ârl‹ã,écÌhX¯ô‡óQ2Æ“z jH.9ïE‚/ô«$jÒM,Ó–¥ªöœöît•[׼̚¾²ßýk¢€ŠÙWnšYÌ¥P²z[+]RñÔç†ÁÁJë6,ÍzÃ,ñQœ#å»/2”˜@Ü-†À :öH“ˆí_;2)‡­eeuö5liÂA©æ9„Ë„–Nr£ð·Úy…tÈ1ÚYçg¼‰Ò¾ÿÊäkò÷ð@&×$ØÔäVÂøå ¹^åÏýý5¦Ô*O˜÷~Õ[³°”m–Øå0 êµÞ@óŸÈòxuö›Ám‘ ]µè±nk:B81‘¿“ÍÃÐÓìÂ9ùÁ Ö©¥B7K!^æO”ÎnÂÃÇÛDæB–¹z[6_1û©y¤$û—¤kû‰˜½~Pš½ÏÕ`þŒæ·ˆ NrvÀÒí;T^K4ŠÌ¦[è\~§ºo¨¥œšžW«¡%UAŽûìhçuªÁx ÔË?xûbR5´ôó1žp&Ÿ,j?“+þÖ唳Ö1àÚC+ìfÉêØMŠ•òãÆˆQç#Îy[}»žUµ`|þã'j›ö‘´ïo+ÜÔtê~CVªVmuFç¿áÑ©n9ÞÝÃu-ÛõÈÖd?ðý9 Qý¡íe¡xgfþ ÍÃúª•9BÑšGë!açüHïÕÔøŒ4—]Ú¯Ìfšõ5aͲ¦|ÇÍ @)ßïd DH¤ˆÃÉéÒéÂb¶{ ŽÄRI¼Ç—Ù~WìV µ&)E³RÒÉÇéøõ`ián®Ç+týƒ7> Å7Ô.FøIߨ¹ýúiP«ªåÝú÷Hòõú9cIÌùïÖºoÐõGŒ>F 5³ÌjžäxxxcµRôãKT“Ÿ<òÝçöÃ9ƒîKZçµ]·_'’Úüÿeíó@ ‹‰ä¨Ój“VìÎe2fßb4ôÈrà -ž~5:‘DѧSÝ#ýêòªîF¶¿nF‘Я¦ÈôËYÂeü%aÅ3j´àÆk·ˆÎoÞËZ!œ(›¤E1.טdGðYŒ[ê—÷¼±&­ºc-S;·m'˜•f‹eÿ5•\Sš}×Þñ'ç”mÞº¶¨ù‚Ó0‘T¤”0.³Rrž7>¾s»Vv|á¤yý{–lÔ5E´'w ±µ²¦ÜÀE›orK°èo}}޽·‘0ég>öøÇÃF¬°‰gªžÊo¼W¦¯”¿vXø°×>„d³T¥ÒöÃ#v3·¥\¶‰VËGè¯èd•k˜iJÜrª|µös`]CÙ¥'õõ<9+GLùFH‹Ùrù²…ÒX’}Ê´Rf²Âjš_fHÊ»D@£u±¬p±iD< ä]˜¢~Öõ9˜l'F¿”‘pDá/Æ%v£¥r™-Ü,’5–[?Dô_ëÒ1ãƒmµð²ŽI·ÖôK9§v\bΧÞÓÛå˜WÛH$CbÇÞHÇSž à™näc—ÞWP²º.Þ:Ë…nÜÇ-ܵÇïþñš2óß9ä…ºéGM,!.ÄüMeÃλïháxÁ˜æTãþn‚¢óçWÜUj$ª#ED¸‡…K¬Ï'ßD&Í÷ž5)ýÛwñú÷²ØáKGšøú\Ú÷åZ&Ëžã¸d°®¨Vƪ൥llÄUõkRyàh†$Ç¥8Îç]ÄÜtvä;Aíƒ)>Û‡ö¼h¢&ÇÖïÎ}?ýJY Z|yyVê˜á,^7Â>n]ÌÍj’H´Ãù¾.•¨‹O ßIàF†’/)T†P¢ž—>Ù¡CÔ¹kâ’gãÛp³W0ä½ãÔÞLFîç—‡ç¦ËvònuÜšï¨*'2à$ƒpÔx†ÄÑ‚[R ¦˜o _`Jc½ÚÕSS:ìãdªË×èR „tÖYØ¢rR²k·¸§ÈVÕ l…ÛÄübÄ镟фæÉCª9½„”ub-´ª@‘C"‘rjxãÆüŽï«9Œ„ÔQŽSÙ”J³¥JÕ¢°â´ÃÜÿúkÄþkÓ$‹¶Ð»®ÆÀéá}Uß¶–ôwèÝ¥MU”Óó«L)1ÿëÿù©´Ò~S¾gYÍL›y¥‰]>ÂÌØ&:{Hk„ÚãËáÛÑØØ7›e:¹¹Ú¹['‹Ô‹¿T¿h?®Aþ~±²+ÁulqãùVžñwóâñ—ľ¯oÛzӥ܇”œ_NÅw†šl>HV©“D^í¬ÕJÖf—¾ÓYyóÖëo 5çC>‰[dÌû'»/Í ¡ 9xȋŚY“*}…«÷2) r9¢9Â1¶`ÒYË*u‹9ÑÞðLGI¢»HN›:>7*]ôòH·õzejû·s4²$=7ÅŸ­)”¢Ž8ÃòwEê<Ò½®“Í–*J|B2YvʾŒ°Ý5[Þ-ŒGÕ?ÏA=ù 5”ÐnkžùàÛ±G÷þ{ú›òðÉ®–)i"Ü´ºc~ŸµWOÐ^•¹9z½:öš–ºÍ¨É÷s*ˆà f5Y¶§8ì2ý‰o~©²>'õ¿”ÿ£\`}§ËÃËþ¸°Â#ú[c‰%#¾s‰ýã}0ÁšÉéHò1Î3ø“úîãÿPKV{&Q†§;0­7 outer.jpgUT “ãT_kuè_ux èèݹuT\Q²/|ºiÜw×à®ÁÝ݃»k°÷,8„i‚[ ¸…ÜÝ5! Hà#3÷Ý™7÷ÞïÎÜ?ÞZïU¯>§VíÚUuv]ûwö~˜X JrŠr ?àaJQZú™†–ºœ¢Šì_РÀ#¯.®ÞžZòRT†FTÀß‘…•—»¤†† ð_Òå,úsŸbû¯uþKB³¶ñ²z¼ß=þƒ¬Ü=½ôü‘gòóvÿÃ<òx–Náþðž>òCx»¿òËÑù+ú-éǧ‚ †Ýßñ–Çÿ›ß?D#ééí`kóœJÛÍÖÛÏÂÓ†ÊëÏH<Ž•†§›­ƒ³Íßü/)ÿämóÜûÏ]ÚÍÝßÓÁÎÞ›ê?åæäâþ–‹sÍ¿Œ1ˆ`ôóó‡þ&s+Á @Hú›Ì2 š#€hño2ºÇqÅŽ€¦¯V>ž¾•Aþ\4Àˆ €`Øn@$Y@ PtCÀ °ìÀð‚€P ˆ’€7@6ð(Ê€j h>ÝÀðf€%`ØŽ€Sà¸@È L D ¢уXAÜ A8H¤Ò‚ÌAv W(Š¥€²Aï@e ZP+¨4 š-€6@ 3Ð ŒÆ“ƒÀ`A°$X¬6Û=Ààp"8\®7»ÁŸÁ3àuðø@@G @ F`CDFPG0B°EðDx‡ŽPˆPІ0ˆ0…°ŽpŒp A‚À T6ˆD¢ ±‚x@^@ ÙRH¤2Ù€œBî1ÉY… íý£Óለýˆ3ˆ;ˆ—HHHHŒHH H†HŽHH HyH5H]HH[HÈÈÈÄȬÈbÈêÈÈÞÈQÈYȕȟ'‘w¡ £P¢p£È¡¡¸¢„¡¤£”£t¢L¢ì¡Ü¢BQéQ…QÕQ­QýQ_££¶¡~EÝA½EÃAcDCÓAsD EËD«FëG[F;GGG§AB×Dw@AÏDÿ€>„¾~‹Á‚!a‚ბˆQ‚Ñ…±€qމ‰É€)i„陈Y†Ù‹¹Šù †ÅŽ¥ˆeõ+« kë6*6=¶$¶vv:v=öWìc(*”* µ€¾€æ@[¡sÐ Ž:Ž NN9Î0Î>.2.®,®5nnn/î F “†YÁÂaŰ~Ø#ž"ž#^<^ÞÞ)>.>/¾þsüüüuEg‚×u³7„ä„’„6„±„Õ„“„WD¤DD6DqD5D3D7ÄTIJÄNÄÉÄÍÄ+$M?’|’~’cR•$•3U&UÕ)5µµõ;ê1ê[F]š0ššZ4ZAZ[Ú4ÚÚS:J:Uº º ºEzTzAz{ú úAú+F}†h†f†}F"FEÆÆ Æe&L¦§LL…LÓÌHÌ‚ÌNÌyÌã,`>{––¯¬`V~VÖ<Ö‰'ˆO„ž¸>)|2džÁ&ÉæËVÁ¶ÁNÀ®ÂÆÞÌþƒŽÃˆ#™c㞓ә³˜s‰ —K‰+Œ«ëŒ›…ÛŠ;‡{š“GŽç%O Ï^V^Þ|Þy>Ÿ*_4_ßo~~Oþjþ:s\9Aù@ù.De…d…9ErE+Å2ÅS%¥`¥>e emålåMO•6U°ª’jªê²½š«Z³: ®¨žª¾¢Á¨á¡Ñ®‰¤©¡™£¹«Å¥¤5¨ Ó~¦]®}©#¥óZgI—I×G·G[ÏD¯LïJ_F?E݀à Øà³!‰¡ƒa‹²‘žÜèÂXÖøñŽ ŸI”ɬ)£ésÓa33g³ŽgØÏ,žÕ›#šë›—›ßY¨[Z\X*ZæZžZI[eXYKX§Y؈٤Øìي٦ØîÛ‰Ù¥ÚØ?µO·?vvÈvøá¨àøÖñÊIÝ©ÄéÁYß¹ÆÅÅÜ¥Õ×ÕɵÏÂí¹Û„;«{”ûº‡°ÇSOeO¸ÈËÔ«ÅïqQõaò‰ôÙð÷Íñýå§çWÿç¹ëóQÿXÿ½¹€÷@«Àž ê Ð `Éàw/@/,_ô¼¤}ñr'D>¤4-Ô)ôKgXJØÏpýð¶òˆˆ­HùÈŠ(¬(Ϩ¹h‘è·1‡˜±XžØ¬Øû8븑xÎøôø»«„‘W\¯2_=$Ú&޽柄”äš4›ü4¹4'% e+U5µ)*-.íç›go†ÓyÓßf eød¬gªd¶dÑe%eÝeÛgÏäHåÔä’寿^åYçMæKäW¿%ÿö¦À¡`þü»¦B†Âô"¤"ߢÝb½âÁ÷‚ïËà$ðxøï×’õR­Ò¾2²²r²ò×à ŸŠƒJ“Êñ*™ª–j¶êw55ñ€>kÍkgë”ëzêë«èraqM &ÿ¦ÓfûæõÖ‰V¥Öž6‘¶Ævöö’Ôs:ð;^w¢uFt>| øtÑåÞuÜm×½Õó¬g©× wºO³o¬_¹h@n wPrðÓØÐÇaááÖÁ‘æÏüŸ›FùF¿ð}iãkú*ðµe\h¼mBt¢sòéd÷”ÌÔÀ´âôçµ™‰YÝÙù9“¹õyëùýç…‹¾‹·K!ˈËq+ЕôU²ÕÂ5浚uþõŽ ™ÑMíÍ¥-«­£m¯í»ˆ]ÌÝô=ʽ²}îýrã‡Æ‡;GîG·ÇQ'8'¹ß˜¾5|—ø>zjpºóÃóÇÃYÂ9ñyÉOÞŸ=«—.—·Wq¿ˆ•^ ^ÞèßìÝúÝ!ßeþfþÝv¯|¿üàòðð°Hà?ôçŠðH‹àBABBDBEACCEAEEÃÀÆ@CÇBGEÅÄÁĆBq h¸0\(쑇þ1úÓ‚òØŠŽŠý—é¡ ÀA¦€#Æ!à€úòGFxÄ ‡>HȈ(¨ø±YÿÆ">¶#c£ #Ñ•@`⣠.ŒZÀ·aŸˆ†‹_Wß âMzñ1­dZÝÄ4· ¦N}㌶ž…·](¯”´–‡§WXSï£aÒG‡Èáo^ÿÍ2òc£èJ# £"?†ú_8¸D5—¦·¤Ehò»S$”Ú |ZKO^¾n©‡EãÑ$x ”ºó€à^P¸¨%ßVëähT/³ükr.ÃÕ)£÷iœ„~ 9 o&§ê˜O£×Âà+¯Wþé}¬XüŽüRª©ïõ&$²³–"È“fvÌTS ©ZTƒÿþ4Øš»&†L$sÌõÉǼ·¦xÚ.ø®¢Al1õ~G4åKq»Pê¶ 4$ñ²Øˆ‚,µw<”Ó›!o>šp]ÿèÔËuôÁQ¬Ã¸ËÒ0Êe L\•X¤2!I=žÀ•‘'¾cUÄŸñÂNŸHØ|“Ežš ¿&OÔ>?O8˜´¢_Š|œÐ©çÞÀW½Ã¼Î%Ó«³™oµ&RLÖ5É[d×sE!ι*ÍMÈC—f¨AL(_›ƒÆJ(Œû¾^ìË;£µf’Ñ­éÀ ©MÈ»h¼Š%5"³8çœÑ ÆÍ'†]ñ«]>ï¡vNk¦Eëpþt¶T!/Hƒ XŒ’ÅQy@1;^ÕþΑ^+ìÊ!N8Éá°ê’4r0š£É€¥Ohì7?Iþ‚{/ˆâ¡lŽF|kî€ë¼Oj,‹b3˜ŽøÍWïãÎ)¢ÙòÙ¨•±t²„üKÁ5#©ÚX)üê‚üR"î}v -ÿ‹|}–ÉÔ`ÄĹF‚,=Þìø|6&[æÍ ‘ÿWS|(Lµ)¡. ÇÙ …3¥‰E¦¼÷@õŸyk‰aecCÐ:-%Ñ4ÄÌ€:*¯ÀôÍ4k(Ë›‚¦ÅaAM“vÐ~u…™é§õ/gc|X[ƒ>ðÿ<­½pƒ¬ =¡bišL¾E;>enbLÔ„Q¤þ¾&ÃI™ef^įh¾Øˆ×MDÂz³-NŽ—Y¾õrT©ú\Ñv ÓðW©ôó9™¼œ'¥´í H?“šûøªcµÝöàèääôw Þ"×r;mó|9ö$©ç±aƒzûЀíK*6oÔ€†•(Ð`ÂûÃH£„ЖÔaÔ|ë*djî/}¯šrO1‹å~Igæë¿»ZÕð6ú›þƄآǘ(nG|åÖ Oʲݔ[ú9æÛˆ4éCD=ªÎ:~ûI˜M¢ j‹þ®‰ÀBu.æd •¦ªwSáV)\7’µ Ò…P‡PòR²4«Ã(Îc¯¼êò\h{ýweÒý[“jE§…£V8ºØùÑÇ57ž|U÷O‹ÃØ?·Ó;òÛ÷æü;WíD³7^6¦PN ³Šù=¹úZ}üqÌŸ¯çp¢{Z2•btðÓðû[ÓÝ[ÿÜ3§ÈûY…—ê%tÇËæõkâí_þΩÚŸ-ÝvÁ~9'»^ÃÕ„·†Ô¿ÅsSæêç<¾Ý|W:•&øî,ÑRƒ®v×X°±íâ:˜‹‰CWß§O[Èâþí,-áõÝùwðMOÃX%«ƒŒ6×l3KåÈŸ‘¯2xgXÐ(%|­ŽžU÷†%Ž*<½ŽA'’%Š Q¾O»ü[× +Ï¥>–Õæ¦(ñú!õØóAþÙ§æE_7þgŒóÛlb[—·j_v?_UÒÝ’eô—||±æ°ðqáÅEÄ[«”_ W¯—NDþ®÷ÛàÛs›ÛYÜàDåͩէn¿ˆR_©r½Xë­T’6|ÓÍJwjß®ª“8z‚FÏü.DbÅï©ã GÎÜî]f¦k+ e²S{0¦ÀD‡°¤lrbIݦ„§I§_Fs‰ÖHÿX°ß{÷eïðSœhúË;êÒ +eÊXŒ`¿X&æ,Q-7çš„'4ߘJüœµß˜õJ û7µµç¢Óè,á-• 1°D-P!5÷€iøÒæ|Ù€;"Îþ¬‡ÙØÍ˦ ׈ŒN?þö—¨'ßs£4Éa´¨}%Ò2Å‚²]±ûŸf§¾«~ª+D¶ûq"ƒžÎó¬. ãe­¬ôTÉÏýi?­ñRDêf®é’4#•±OFñKÔÆÅ;·‰Í€õæ§!»mK6G\„ñ®šÀ,ÿLÌç#kPßèk›Öž7F¾¼#Ó"“{Ì¢£[û>½|CË·{C=q»C’ú”µa‡ßxÑþPÄü´dÐÓ¬ éÞ£à ¹¼3Þ¯oÊÓ¸”à\øgÿ¢²Øô/fÈRJ}RC+Éþ‚u1Ü*ãn#,D±±_à¥Qmö îÒCËS÷C,m›˜Lßòí‡ üø@zš)YFîoJ'‡yá)œåešŠP4ÚúŸöt¦ß|¦4q™köoÿ»hG¶ƒgbç«<{ÂiÉSéMS¾„J3ćâá3Ëxã`>o[_šSõMå=–­4Uå«JªÌüSÃÕOY‰ŸÜb£±ÝJ&t–£«cObKæý]j / ç¢n keJG•©¬`ž<9,/˼íñ_bŒ\[X]íúúB­*oB÷Ðü$µçûñw7s»OŒ*öåœ]Ï„FºŽE›õÚØíõ˜Xâä„gMÚ= #©üœš¨ù¡0G*„”}p'¿6á×UŠ‹sˆ«ªu­ÌTÝQ.úרî~(ÕÞjeu"r®1‡T4¤d`’ÄJ<|381Ö‚(ûýØå%Rà™w?R\6²s>áK»À@±kaËpYý²(îÙŽŒÜz¢ïËÈ=ÉÓØ=НG#›iÉRäM &dÚ]“T0–u×™b®h«sñ ×X-²™rnŸÙŽ*!B8M¤6ÕéüSÈ"> àò¯Á½KùSËH7°,ýÍ¢×ü%'ÿºÜx—KÜrÏùº±ôŠôO¿ mq\\ðMÐHʆ¨2¬iÏ#ä¤Y³îg˜-_;Ç*]˜C1M ŸÇQ·á#Y”¯|KÇ,äÔN§+@¯@–Eo¬³ŒqƒñˆãþnE Ï'×Wµïk7šëu¨£¶TÍ7ì>üÍF6YvQÁëç)ÆtLT òÒ XHSÖ÷ô-Ÿ«Þa'ðW& ®¹ò3|W ²i÷£Ë`îX‘”QJî—Àq¾UB‡ÿÕ£Û=V4)kWiÜödYaéEÖØlÁ¢Z±[„PìNeð²lé_Wi]+F¢ØýºèpV?MPõ—h¥üzÓ×*‚¿ÛÝŸ=Û!él°¼zѾ,BÞæ||1öuÊùÄ©¶žË‹ÁÙ'ä,um¼à,ö¶Q\Õûdv%ÃÕºýIxð«X‚%Y̦‘“Äîp òp{Z‰îéô~gÞèO%œ—/‚™çH+!ç^T×ù»2á>Ôqš˜up4B L%Ï×sUÅ?‘èdUo"ü¤ˆDlþ·aü'3‹åëȽ‘ÔϽhðÖÖ5k76\žPóʱ.` GÓ$ òj Íu>‰a—ì$;ª©Ã;‰m¡'†ÌqÔ¥((< ²6?õpUÌpÊ9W$ȯÅãKÜÇ—¶Wïà”—ï&SÄ“q`ÎîCêZ*œ¤Y=ô]Ítϧ¾ÑÑ ÞßGuµ¬+Õ$K~ñYвà¡\ãF¾OìÓåö¶! 3~ 0©×~ÕÙ@ çL[NácÇ®“®®·¤¦ù=ê/Ô2WÄQÇç§èÿ.CŠú¤üŸ¢ôaÜý3þÅ“ØXBì͜ƒ%»ñ×[i4,™;*ëXêö…ÖÓ˜Ê5¨rE¶ezÂ¥ñ;â…‘òý^ë‹iÁ…|pTï¨b†óÄ|&>oè{ȲâUPÝ"L’3}é W ³rî=XCߎ&N~öN+¿DÁèü“#…ÌðRöå@æ+Jççwß3æÕE–Z„âÊÄLûÊⓊ>ìÐc–u/'M÷ÙßZõ›û~•º¦îk­ç3q9ûߨí¸l²r1Î?‹­M«w‹"îò˜eÈÕÌf‰cF+Èz×ÀxòJ¹2 £²WUé6ÿ4‚ÀI4QÜĦßZØ« Ï š‘£xr~ŠêîA¬­EE˜,JbÏ7Sšh–|qd=ûáM©Ëô'²F ¯D~ý~"ŠQŸ®Uï.]?]hÅa_Cq‚ιB^´uW\‹%3Íé(!9>B¦½x¶_H—pH Þ~ß—.X–·ÇdbÑHA¿Ü ¢h¦ 9#Z=¶|b[Aal–Øð¯Üæhk”G«4êË(~푲äæ-P?ßÿyx¨5`'K²PñØ~žô¢§À‰(6kÒš“ÐþV"…J“¤I°sã¬ùG»ë)ýG««æòS“ÊÜ7í2¸Aå¶ÚÞ‚dKò¶ïd´™»0Lå­!Ì‚ê®HàÇ}QŸñšjýe¦’¾ñ›;³ï#N¿<Îïø)Z ìcí¨ñwÞl¹+k{ùöii‰•²YFôÂÁ€Š‘1z„¸Wæk^Þh&ѦYm¤«ÏÞ2ù©Vò, ¡)BÔû³&¤»gØc6ªÛ¨¸~ƒæ–ަêX{¨Ð¯"6C»¤çZqP%ºqõyŠÃ‰ š Z}X݆¥Él †V4— —Cz‡e+Ñ“( Ì]]ª…!D|•p‹J9ÅA eÃú[2ƒŸ[)Ê÷LßÙèF|tTBÜ]—GbU,‡Sa€F£œfÑtËoÂ{³ïU[w8DA­EÔQ½ Ã&FÂ\åôgïcåT»¨-éà‡ÉøóBü#H ‚ö–‡äØ¥ö¬½¯ïH±»† Ã%Læ}ÎÃÑ‘¶PAhÉZRû(”•½d-/ƒ¯ËDOÁ €¼ÍXßK^ŽDw2|Ø5*ØamkÇ®@göY™.Œy˜%NÞ‡Da?`B*‹Cf#­XO$¯±^¼0¥{βü;³ÛXÉ“þ¹!²–œó†Ðt¸\Õ&¡"‘<3•Ìïé<@j,Ý«X;s~ÎþœØ¼Ø§s×hÛþúâ«5ÉЉ\Ï8LrïÅ$mA~gD…œ'Éï €\8WcéÄJýþ3&ÎËÉZFWCÙ‰æ¸ÔŒdã\:ʰ‚¶j•òarïQ›~iºw˜…a`ÚîbÙ\‹˜”]ƒF·W½ø¢ ÇmýQoüy¿dLy©Ne W—…jH|s‰øALiï@Ñš¼û›·ŸÓÉí9çoÆÌDÃCï-˜M]õ~b®Ùüz:°ÅõgQ@êØ©Û:ƒÜÝæ½b 0£´uýÑËß§Ø•÷©Êà6á`€/ÜŸ¸E²N‰ÒA›N;M&޹ÐÜ*ä¨PfJUÐ&ç ,l¶OY® ¬f1Ï÷ÆŽ£iÇzÔGß$Í_b‚©dÌüjG0SB‚ o:Ûp2ªÔ²ŸÝn)–Lž$ožÄÈlQà/é ¡4SÙ³$‡DpœéM*0(±Ùssܽñw¤‡2+‰FýCÔ©•-/üîˆ2êü¦§T¡Æ…Y#Ùò€«&ûàþ¸B5rÓ^ÕpŽvý¹Ê–Ý2|S’''o¾Ør%Këˆs­Ž\^,.¸‘/DÈ™ž0Íbne÷7,-ʸ䪹„á¡‘d>—ñÆúuú ñås üٮݧôü ‹÷bh+†YÿôvüfÞ«‰(}Ÿz¬dÝ—ßñZDëÜ#ÍB(`‹uF$(ÂBïÈpXhS£·$Ú×m\«áh³ÒS’h.Íd\.lf›kB1;1½«]„Ldd,ÜÜú·‡.Æ,>.›Üê“NUxmÈ·öoûü»¤äI"lyóL¨;‹õR­Œ;×ùAôÇw·ëØš ijÒV¦\U% D ˆ=¨Ïgý±žÊëÓj/ÌÝͽŖÕÕGãî¹ÿ–š™‘ìö(ÆMÙxb‘ÇTTh¿¡aнTñ¢TÛ3Ô`¡a7k«ýr²þšëiÖ´(Ä{èÈyýô^/çòzø?}¡¹+òeUdÉögŒma’™Éˆú·:¯­k]/[Å]Ëg~xþÝ%çí™HÂc/J¦sòÝïä'õ/C•÷<¢9hw(¬>®lu4¹2}ãœèßþÑgükÎw ?ÚÇtÞ¬g!¦Q¡"r؃î×!z”­L$Ÿ;ÆOŠä5&ßhÉ <+&¯*²‚û_á£Õ¥ÕšõÈ™AÁÍìö­K–+„ll¤‰kìèL­9O.ì”ðyQ£ö³ËœªÇ¿)&Ž…W!Ëœn»ñ¬þjR;B¿ÏaÕ8ZW(hSwÑáóG<í’ “ý l¤ n2v¤Ÿ¾äaáJ±¬È¨1Á@©üF}°¨´¢Å„hèÒ&fPPÅfíÜtyx00¿ÐQÍR§yOï—Z¢}oáƒyGÒ:TªúüVæ€|LWSæˆÿ(kߣ1(_é2;ˆB„ê°ãoñwhØ{Äš= M˜7ýqÌ;ßÊ8¶éÒU ªw 4ùËöIÂÌÍ&¿>þhÍ)‰Vû¿í€ýk >#‚Hö~ú®N.læOo"‘‘_õÎPóoÚh©,s¢'E’sÇCº) ̇sµ2DE: Cs\{ZÂj0|bËãį#Wi¦®îüBøºòí’í3¬’ÔÅoç¼: ö×ÑnÝK—¬ aÏ@ÓUÛ¸D:©ûþ  Å•sC6¤ˆU%‚ïÔýëù¿i5xFí’ÀZÉM€£ÞÚ[‡á?ÿ"yu”gK”‰NŒ— ½%Œ+»yø³îoÞróçü² çÝÉëÁg|©·ÎŸ7¦þW¢¾‚[«œk)-†ˆÖ’©™ö»“Zž“Z ÁõÒá•*ãbɥؕc)•vÑÓçžåÙ¥¹|r¬õ½8\•G"€³“­ú¤‡"騉0©å –õ›F÷ÆR…£E%ûüª4÷ã8ÓŽÄ•åÿ¸ÇúOnðšŒÞWýªŠ]5o”96û\BÉç½»Ð{伈r€1ê lPÐûñz[¼7e–ù°Gœ»ö…úýW×Aîø– Íϴ©íð ¡åY•HÌaËdŠN®†EŠ}_¹ÂìNz—J„œa›³÷ Þ•µ11ÚDˆî‚iÅB>À ѵú ƒPH+ZfÜW1Z,Öw”UþC Ná3#VsŽ4±Ù]¿¦ô€ªXó»è½Ê ”«YNЀ?5’X•scS]Ã’-«§ÝP:KžYVR——ÇžI¦ shÐ AÕÊf˜ÌäÜþá…õδ͆˫pXëbÍ„¦ÜÚ9Ë8k8®¬¯¹sÈF–… âËåÍ>x¥e–Ôý¥9YuwÃÔç3£ Œ¦º;¶ISvD¸p¿º±ÏÌìD‚A^åÊo£Ô7|d¶Sñˆ£Ó?Ïbü‡ïÿyR¼ÌÓöz?»Ç2·æŽWv•L™&/£\Ìý?¦1`#¬Ö÷1´¼ázŠºÀkR\ñÎI9ómC­lO¡Oã +p˜("ÃaL×rì°V©Y ãT¾Š¶€(¨dé˜L·¸yÖÈu%. §ªC@mÏgù’wc~ÎTþFðé^Ò©PWVƹJžhgv‚µÊyì¦V4n%øc·¼®§%,oQ* C‹±NûÐ\0Ã~÷wg »ÅêNòQ|™qkÇAn˜§Ò0¯g%P¾½Ë›‚­ÓØ?DÞãàÓŠC­Ø ¶•N8uþ41»~™Ô/Úýe÷K¥iφ¡€êTÔŒÔP>í•sûAË>¢Ž6nl_uÛqâ>ÃÍ£ OWŸÒxó×GÚ1w¯›¯{Ïjâ—_b‰{.tÿ‡“‡·#:e½ù„#2JPš¿à½µ[á~€)‚µ¤ªG²$NëçIBÂè¦!|Õ›qENN:jÌv]ÏÏžžÐÝ9Î4+žE! &?Œ[*šÛž1º”޽™ù‚›Ë„Rˆ&¦Røž©¤]aö`ad¬§u™EþÞŸ˜ÌEý)/S^ðö“~.¾–m = ©?àL«¦Œ#DØò¿‹ß¾â’;;0w§^’o}ß™Õ&ë}¯ AèBnÖÜ]ªoœöå²­™ajcpÌXÈ€ózþòcTº™ »€‘ˆêFX±®r•Ï$Ä{NR*Oe‡ÄG¦4À„Á¼×К±Yï%ßêÐÿÒ±ˆü9›36-ZsX¬‘±¡ÂéP%Wêÿì ÝúæGO¦ù”‘›—Hyq'¶ù%óÆ,¥áb­'Ô=ß¹ªHoÅ…ÑyÁ2Ä‘~?Áeß²RÉ%GiϹ6:+p„€aÞ÷’zɀІßSŽ?Íž7$fÈ)ˆ·„µ3`>‡@ÄË-"ªŠÉÿÁ­ˆÆÙ§m‚á ©g‘œÝð†ÕtAHAƒúA"èq½Å:zjò|¾,(~œ$©µ d`êÐ,–‘ëw¬.¿ÑÊÒ)ÿÇìå8 ÏÌü¸‚7•€­GY‰¨®žðŽ—#4LbcÓ†%‚™@ÛÎA*T °€Ö©†Iÿfnf-*%6Ñœ=Ôº»–´ }"b`A%‘Îá…ƒCYNýŸµIð ö±ÓIÙe±J©Ô{ÐºÜØ‰…;'wBwßì_¥‘üUQ5Óºdc« YÜÄCM£¬9 à¦|ð¶â ½HÒyü?=Éû'W —¡òRãºø‚w©šüʹÑT1DpHŸ„„ôG^ûØsø'‘éU+‰óܸ?TWZñj†ÁP!@…Êt*„ï¦bÖÚ0ƒ¾yx¿±úv—Æ·Ó)_ìØ–{Ópå‡ xYÌ••µ’ÅÇóïì-'?£ÕZE׆nƒLÝÄëkNoÌWý¯2Lì/o¤KÔܶƒ;ÿ"µØJíÒ;W¤JàÚ<Ÿ^’ݤ7»yá®êˆ¬¨ò6d‡'v ¡½M¾üUôÖpö¹xF½ÿÞª©GÑÒVžÐ§GqÉ[ù_Áœn¢·Ÿ«yƒ©§JÎÄ×`ÿÒsR‘¨É/\Î\ì·-4äóØÛ‰“-+Š útÉÖY:Ìz‚ip0ÙF)RQw ÊœdÞ듨Ùlçš6«j³­… i{¹é“sÌm7Ž1ñ…'úfK‡‡f ÿ˜þr,œÐûǽäàéE‡KÁÈ/lj Ö}Ãú;Ž#ìÈ[Åû5æû‹àY1¯1q2,xƒ\ …L %Q†ßo”••œËúõ¾ŽÁ›ðwð÷/òjI 9ò¼¼cä ¶è#8É.U}ŠÆ }’Y§§'`pÙ8 aÉïÑrsÏhoIN—ÐçNL#•åG¾ê[5^©z.#Líx²S~÷eGß:R½WÄ‚Õùï‰^ØâÔ»ìô?/ã[N—­ˆÔÃO XHßÖ) rEú9¤ª¦•¨˜bãɪGöËuî®úœÛƒªnÌ´ñuíxWtLçpUùtƒÏœáv?„S>»îD·[Æó@6t‰u5 †uU3ª:c–LÒÅeJ…¶Ìq渙¢øyïùÓ6ß÷5}¨a¬A,vºî;™#Ty[žY ·ºÙ©œ­?e×ÖPŸPí<õ› }–n/öò×ÿO¥Ô½‹§•ˆžìZ7U•p´™è)ÒgnQAÖ ØVK–X3J CèÁ«Žiˆ/ RX˜­ —û©<ïë»V"}Úô¾/»Ø–)+Íýdˆ(,´«\0`fã6— (â AóÌ,Ô&Ã@š†pÖÐvÔ‹¶í2úYåXå±UÚéÈ %v–;–”[úêŠkÛ;ÅnÌJ«™j ën¨YjjêÒ‘ˆsf+ Új€bpt¾É”3Å7ŽÕŒªœÆÕ¿¯2h”ki¯)Ï.[k+[zÑÞ¾sù»mdIöð‰®É΋ß}q9e!2x›^€=h9ä5€UT2Ë×'›wåóåž¼±Qo ¦¯#óÜцå8ù˜ë·çÂÐÄýì‹Á\Òåë­‰³·í‡]@¸Ëï­ãÅ›ó¯îÿÃR/ùªU[ÓØS—.Æ*÷8ƒYIcZ…&s 4˜àj,øÅ—ðd™©áÄð–:‘ë:1iSoˆ¨Ÿ>çŒQ¯¹:¡©'c ²¯¸xgtF§³®áwKÏ–Ge/´×çX/Žãã‚èg½hEOµ/´¯®›>µfÆ«”t—-âýRM8ïVŸQß^Û]¼ßµä¨å~‹ô¶ÆÚD{ƒ‘›ç+âSݧ©/sœn³b:ûF‚H^t${¨Gä}Åû­s¯zïRóÍ–æÆ|êps)Û/ŽûߺÙIëBÝápž%Ø{ÕÄÅå|z)VmS`úÑ„D1y$K¥Í% NŽpÈt?r¾°ÅVûÙÅ¡|À-æÕœOÇZ]kËè5ýû|}˜®&—wßa{m‹Ï´ó?‹èxÊôýª†3y¿ÅWS±oËâ~ JõÐÉg?~f”:•œ a…¸uD¬ê°q˜6Œ ¬ö¸±dT/yï“~·xƒ®<çÒæyõ!g$òýQÓŠ0Òí¼êŽÔäÅ’kBð1ÃÙ;‡€“fµÐÎK˜¿FC‡ïR‰ÄZ êÇR#³v—©‚ÿ CMüûÙýC[b¾äÓ}®î(aÏVdä\ÔØµ-)Á222À$düïH@Ÿ(<²‰6þrÇÔ€­¨Œýt—¢Í€Ç`óéÕ>'é´ÕÕûoÌÃ'ØÐÀÉßÂHÈ1b/òâú(~~R í ÝÄxV"±ZØõ¹ƒã1JMóçá«1–~•ü®üsÿÿNCá®§ÃMD*¤zµ9¨°j_åv&aÇM þŽ ÿPK ‡›Qspread/UT ™®è_…{`ux èèPK‡›Qx(.dcpspread/spread.jpgUT ™®è_™®è_ux èèÝü\ͳ(ŠÎZ¸³p îÜ!¸;,œàîn`Áƒ»»Cpwwww‚†KB7ß¶ÿ·ÏÛûì#ïÝwÏ-~ÌTWUWÕtOwU÷š™—µ—=S^ZN@öÏðr€L.'!a¤ª®"-§(õO dLà€ÿÝ]ÕeÄÉutõÈ¿‰™›³˜ªª"ðŸÂà úë¼ÈòŸËü§€lnáföçüëÏÿ;3gWwyÿÁé½ÜÿÂóÿà8¦vÿ„7ý…»þqð>önõÏøÖ?Éü3~óO2šê® Q­þ†›þ ÿ»¥˜«»¥…7¹†“¥»—‰«¹Û_-ñ§­ÈU],mì-þæðÿ”ðîÞî%œœ}\m¬¬ÝÉÿ?”r°±³ÿè‹[µjcÞÔÛ?Á?hN…Àw0ñÿ ™f@ë ØøúO»b„@ˬ™‡«ç?Ó`ÿ:ÀÈ€¯*€`8^@¤y@Ðt·€` 8®€ð€h H2< ¨j èú`˜–M`8.€àx@ 46ˆD¢18@| H¤Òƒ¬@Ž Ð;P(”Ê€*@õ vP?h4ZíƒÎ@ß@?Á0`T0˜L ~ æ‹Àš`C°Øì Ç‚ÓÁ…àjp ¸< ^ï/À÷0   ŒŒ ŒŒ%Œ+LLL*L!L-LÌ(Ì"ÌÌ%ÌXxXlXrXXAXYX(¬¬ ll l&l9l ìì"ì>ì ìo8488&88988+8/¸0¸T¸R¸f¸a¸e¸c¸xxx)¾¾~$~-þþ#1(AÁ'‚e‚Ÿ„ä„R„v„ „­„ÛD°DŒDjD^D¹DÃD—Ä8Ä‚ÄfÄQÄ Ä$`Fu?’"’)’{ÒW¤2¤Î¤¤ƒ¤—¯ð^‰¾²}•üªçÕ6™™ Y2Y/Ù99.¹¹=y:ùù  …,…EÅ Å%%”2˜òå62•%U2ÕÕ 5µõ;ê*ê $>kš4šQšGZ:ZmÚpÚVÚÏttrt¾tUt[ôhôoè]è é—àøìræÁŒÜŒÖŒYŒ³L`&&¦¦yf8f~fGæBæUT1O–*–}VY8YÙÙU9R93¹ ¹y^yù!T …L…EFEWÅ%°’¼R’Ò–2²£r«  "§’¤²­J§ê¢Ú©¯¦ª–¥v¢Î®þN}T[ÃH£RãAS\3NsJõ€hahhUh=jKj'jïé¼Öñ×™Ô%ÒµÑmÓCÐÓÒ+Õ»×—ÒOÑ?6à63X1¤3ô6KôÖþm·†‘‰Q£1œ±¶q¥ñ/“B“{S9ÓlÓ3 ³4³ sQódó3 a‹D‹SKaËDËÏVÂVIVgÖo¬S­/m$l2m¾ÚÊÚæÙ>کؕٽØkÛr@t0vhwÄr´srzåäí4ïÌäæ¼ç"à’ârãªàZêr3tksÇù§<è=>xì{Šxfy~÷Òòjô†x;zOù0úDúœúJû–øÁú™ù ¼£xônß_Ì¿ `0ðžê}èûã@™Àò ä » é`¶àÄà»íŽPÒÐÀÐÃ2ªÂÐÃ\ÃVÃÃó"`#l"f"9#3"G™GMD³E§FÿŠ1‹™øÈþ1ýãK¬eìLO\n<|¼cüJ›„òDH¢oâa’RRK2yrTò]ŠQÊx*Wj^ršGÚ^ºbz[uF|ƯLëÌå,ñ¬OÙ$Ù‘Ù9æ9 ¹¢¹µy¤yÑy?ómò× d Z i S‹à‹<‹NеŠGKøJ*J‰J£KŸËËöÊÕˇ*x+**I*ãªÀUUgÕÕs5’5mµ,µŸð>E×uuçõÆõ+ |µM4MÙÍØÍQ- Ÿ–›VëÖ½6ݶùvùöÁŽæNÖβ.Š®¬nÜî¸äžÐž—^ßÞû>ç¾Ë~«þãÍAÁ¥!µ¡™a…á±é‘ÁQ±ÑÞ1á±®qñö ¾‰ÖIžÉ–)î©æiîéæž™–YÞÙ¶9þ¹Žy¡ùž…7 ý‹’‹#KrK“ËÊËó+ЕµUƒÕ½5óµÏëöë_7<7ž6·à¶¢¶1·SwHv wv?íñìuïKîOhlš^¹ý:=A;I=%;­øÌñ¹ëLúlî\ÿüøÂùâé2ì r•}MÝôEôËÔÎÍñWׯ/ßbn oËî¸îîUïwž£¾~/ÿÁ÷cô§öÏÓ'¯_¿ÒŸž;~+üÞzqxyyÙ$ð_ð׿ü ‚"<<<"22"2**2 :  ‚‰ŒŠ……‰ýÇüK 诚0°ˆ*b¢ ¡`þOÃKAVAV0 †€`  —!€ôO†ù“?€þ-õG€…C„ƒþ° þ¤±pyŒ‰ ÷'_ÃÀÂý‘`!bSàhãâQ²ë$§.,.áSqðð‰©ijy$¦¤56Í#ÑóšX¹{z%•4RsŠ»rK¨›rÉ…»†&þeüUÜßm`ÐõðˆW„   îÔ_!øXìbjðØ8x& ¸ø”êš.A‰…ó ¦õûœÜâæ®I7І~*·D.žà¯/*Ì?Õ†o€z¶pDûjÑ†Ž«Né}?ÆSóªZýL%L6:ÚcJBG!Š( ¯vB—=tYx¤¡•ã.9e>ÄÈ·±ØÎ™wŸä[ì¸ ˜ ô<ì䦚rä3ÝœÞ{¼Å›ü±l/nüùùúG †ð랬=«…ìÍ›¼|ü ¿=”÷×ÞøõØÌ*|)ýNxWÆó‹îñÃð¾}oŽF›'zÜΗL·…§³x†é^¤ç}oý×§š×¤!E'Ùw=?‚òäÿfê_,•ýob¤‰hS²Ü?Ç›ž¶ŽybÀ©ý‹\q­K‡³” NŸ’’HDýâp=?ê¿eOD-hõRjõö1+›í„vÓ\Í'3Ï99‹Ò¼ëÇÄq*JóOÌ€Øx`JÜ(Uô;‹ ËCòJÏKG†¾J­T1©MqLn*¡p°¥~e·£˜j>¦õ$’˜üŒ`.Ñ "Ú¨|®vbíhljlI4¡F[ µÙ$V€G×XÅFö¸®L&:8EÅ&œÁ¼ä,¶k°äügz°åðÀ,»³ÜfGÝ_\eÚ+‡>”¼, QX(þS6Yt†$æ2ÐVÓ²IB6Ý¥à«f£öQ×òí"lv9¥´±Óz²ü‰¢1~²EªµUͶ›´(ê•&q¤|é-õDÆ®jpBëÅÒùò`‘rFƒ|—àlKÉË@X0Ù¥-\{6¦øŒX4õXà¤É¥íÆ©LxÅpnë:K¢ËtØ|Ã5™;úã8ÙÐáVÎõõЇÝ&†Î ¬RCtÀñZ<.㤠Ê`>}:7N Ãë#DÄnqý#œøçЇK‹ ʧçãm2Gn;²ÃΨ­0Èè×⿚>±"Ú’,_€qA£Ø²ÞªÎÚóÃ`MãþhûD´_ö¥c÷ùÍÚr“Mð ½VË“;X²Ïœ &÷$µAul\G©3#Å™m¹ØvzG”ퟖsÃ6ŒâÌÛ˜o÷,œŸ%rm ’8÷ZùÉ3 lènR Ø¡>pŒ3¦”À´–I§{Äý(-ed+üŽ~䣴& âK} AµÖ+Øû§‰|Ídå>v”/u9pëè<Ê Ñq²³³ó ]¾åó õœ!–lŒ{+µ86‚Fà:|D’ UêQ ³@U/&^FEüœ.ON¬§ÚÈ"J_fõËúʾ‹qóÕ©@ÔÒiæûÒ`„~ååê¢>Iå­ª059ϰÀ%¥¹Œ³¤ .&BÆ$ÈÁØ\².Ù³Û÷U¦ëÐ7b@À’hÎmIQ–Tt`qÝ›ÅrýaËýj+1Fo¸…³ÌI[õäÜ÷´'#l³2M‡Z ì2&*ñA¿Ä¢L.¨cÈi½¬×´Û¦ëbö£T\!xMÕÈI(7í€3HÌ­š.{™‡bs´Uüœ% ‘단5vêÚÆÅ&pÅ)]2#’.?;MmäOŸ5hÒúÐÑ6`®`ŠŠ4©x èHËâ_2È;P±#)[Ý\-ƒ®Â÷Ë€_Is,3’¹åɻҒRGãÏH¬GÍ·wW.Ú °½pÒ×x§A1£Æ¤Áfø¤TŒ®•/_ÚàNâàûµlÚ{Nbâ(žyȵK†14ÂàHž¦kõ„mÃ#ePh[ØC´o‘¾LUì¹çC:‚tD›Û­‘ؾí´S[18 ì»—¯×ÁêÅ œ=²*lVµ[`B!ÉžZ.6ãpª’¸°Ÿèîj>ã`”…U”.Ä·.¦ÒT¹¾ÓM¯7”ã"lu-0`̪ÁSóÀìcÈá†òO¸ÚðSÌÖ³BY4ß²µyØlN ‡*È”{@ •Ô“¢J®Å$²Ï‘bݘ ¦Ü$5A ùÙùp€5åœÁwRë-æ]êÌ…;rB±Îûç ŸHª5õzåNöar”¢hEyÅEÉ#÷@M%6u¼³T|j:6ç BY™lÒ6èXmÈ1bQŸÎDú@]¥û˜ÁºÄ(Éø5ÜMê”ÎŪvšRRÁº‡£U§˜ÃüÂ4/eÏ÷@†òÉ|gú étt3Í>,<.V„ýä#ÒXœœ#åQÓjJO¹Š‰ãã‹:ÄQYš»š½´·àˆ#gƒKV='¦ÛÜè}WgÑÕHÂ//_ù™|¦ß…ÿ#¹äíÏŽÚêWƒ Ú©ˆ6Ø¡þ\Ï›G,‡¤ú¤·i@9=-ú +‰]i§S´pâÄ7(A7Ñ«&Ô§e'-EÁ¥n(‰Ÿ ms £ ªñ:^iÒ>ÆÒ ,´b©5ù34Ø0Iý gNá’Ü:¦mø£}~(^½‘ºSn÷ËýÒoæ}÷/<þÈfùÒtÏz÷ïÕwùº·o‡œduý*õÌ+Æ®}{Úe|£³#Ìßo¾uÝ«lú6@CPe!7rõµÛ›7³Ó«ì½G/ãeì¯ß0䔩H^¤µ!ÂãSvÖå¬{·˜ž–—<³xWVè1¹õó …x´Œ9+gMÄfJavÂÊæ§¦åÏä“çvd_¶ªy…c9oe[|«r´»šØOÆr·<Õ#@œÀïí²Ý… S6ðжÏLþý=(úŽYý-•׎˜$ÔÙýÄÁ_ˆNV½“¥àF#¢?ÁÔc­´fUW¼~5\ Xd3N«ÓŠb#H1Æè” ‘¿–I¢Þ4n5õn‡¸­Øˆ=“¼çQ2õb32 ¾Šæ‹ ’¼†YöÖ€˜v„ gKšQúôVUéüSè[½]êJ§dìOS–×Ð!ô_Ñ·•®+?hØZ'VO8½¤~,óÛ½KL×?†½¸%ìLqé¥üužÝÜ#§Èò-ØãGÌöD[ÐnB€‡òe¥x?Ä~8ˆ~ë(cqJÔ@y—Ÿ`ÆëZKîud”£‘Ú:Îð¡GU¹—=«]SðÛ뙊Iý£ä]zºx¦y\óMþc¸á Ÿ¼7 ü‰›ßê:ùÂÐ>T´]ž°"×YFYéûŠ ýˆ]\H¼NnèàêX¼nÝQÛ·ø?‹éÿ(:Àý€Ê[GÊ«g’T–Xɦžî)o’jý¯ëþ¢@MøGøXïÍi†j ò,zÎyøõ00š?|óZÙ/7äàWŬ|€Ã×ßšÿ¨r÷Ï5²ÿ«eZ·}†Ï¦†…‡õïkÖW‚Ùë¼C9Ø×]‡rHEq±­~™ ž{[¤¯êº¿…¿mDs$Ì.u ìðƒkný˜ZÚˆÎ0a%AÔgH¥ÏüßváëSZÌË/!Éú§=ÌÒ‰ á=×°¨ûR+¡¡Þþ è Aö‡ªãÝE„3„Ð.â}†ºmÏFå4¼ÁPøì17FîÊîØ°”7'.2RìÏw§Ú©»û­yëV Õ_ïyË8?f 0Ä})QÏyüîpzý {WF¦áëÆ·^T˜þû§Û1Ãîû°€/yò.ÿ‡ˆ7¿G8GâYg´"‹OìCéý¤ÂAFÞj~•êf;æ©M¹} »‡¬áUQHÿÒÔRÀÊ7”È7 ØoLµ"JðÂkøT¢³üÕ¬£_=µ×+Kh2w gwú™DäÞ¿YˆãÇ‘Œ$ï´GÊÒ² ‘óG¨á"…õ†ú™ÈÔEžé©ï™PηêÁGCa¨*ß{-ç¡‘—Ç!SV)÷î’ÜP¬8ñ“’Üw5К…+mX%(&iÂÊ 4ÁØÍ¶é+ĵ̕°G³.€½ÿšt+¦dcWY2Z²ÔÛ LHØ$iö"Y­¤¡8$ô•6´ƒî¢Ø9c9êižªØ@¤¨DòIg‚΢[?)d6M9:ùÈZa–‹86ZIk奷½EðÕL|¾ Sð1:#;ºi ŒŽ’”•÷vhzB 6”}‰§Ðõ¡O¼F½ÓN³b8,šÙ·!<¥b7*÷CïÙƒ8¨„©„Ž,£D‚ «z3.ÅlÔ%–ž“}.Ó±òÈ41ØÀÓírW"azÉi×=€|$ö‚ºeµ÷7&+ÏUnÂiãý éo•gë5œR‘MJ¶%¸n‡HšÃ*à¡îË ÀaÕ ÃœG®–ÑUlôAaqõZ¥{«¢Ô#E”ÜBqjOËdfUJýµ‘´ÜDÅf©–Šˆ¥÷OÕÕã[ Û²Õ4ZèKCdਜu?7±>®¥€pëp0RëeÝo0‰Æ–ðˆBÐ;¥ÙÍé„ Íä´7=W‡Ãòkçë”ÅÝ&¸4Ë,_›·ˆü.³öϸò%ƒ}<[¾uc‡äuØø>ÖÖ¦8ªÿ-Ø…o·5ëÜ*]MÆ:hZrãW49–À"Aªb8³Åm–ü–\R ^ž¬f½MŽ‚ðë]×üˆLa~÷©TÍB˜NÕÏ-Kêé€BuGSDPS:Œl‚^!*e»V‹‹*k–²Áµy&§â ±*‚ìi>b‹)ÿ‘:µË¯CIõÉGSëi˜ÄÂ=V[T½Ž…ÈÖ‚Ü´ò®èC¥ô‚â÷W£³/"ø¿—ß´UñÄ‘-Õ§ )¬ô§v¼2ÅZ¬*_ñu$Í÷à«[@Í$ДdL4½Â JXA±4”V•§tÝVîàÇ"+‹5˜é¬í@û£ÙÅð´[[W/ ¦1 á¹è®^k¹nµá9\8£.Ùh#¢€"ª‚Ó˜=ÂȈ$CíelH•žJ hz`ÅX?_—jX5¨ÏÖ Pr­ÞPùY spEÐHs¤T³ò²¸nÄ:2‰£N@;=2¼b'b<…=X-%´úgç#ðˆóWºb-ëZO×m[´,Ky™/¼CV ÀpÎV6«‹Œ°¦nÀuîŸökµtÓ*.YFÁ¯G©9,à&kލ«íËš˜2',Á”¢…ùÊpVÒ`ÒqëWõó®;$_zìîó-Ñ9ü$æíÓö‚(3íÜ ì²Há|o½õ£y_Q(N—v·YÒF;¼Šš·2¶¼†—kLáͲ¨7JýÁ„É ›HΠпÉ2-é` 39öŽdsXÍVù-öXNz…=ËöE„[KÈX,Ô!ƒåàñ§ÒÂ!|(åYiš”¸;(yNÜ+}=B«ç¢½ú1‰q¯RI:lßmè@O¡;‹"Ô„¢áT1¨12¡ÅyQçÔÍú¹ ­Ÿ\•¹ 5N Ø¬75‘=úI@©yèÏ8Å=cÔ(’o[zÞTvð:£ÚfÙ6ål]ûN.’Hn²ïzJ=ƒý`ܧÆu•‘ÈÉ’d©cBB‰™–ºq¥432ȉ‡±‘‚ ¦h·Ta¹ç!h›â h¯/^°q>T¢8/X›Â…ËæO5ôšÔÏ|Nã`34.œ8Ô;`FÒï‰ô܃!ñÚ«UÇ•¥•£J®ˆòm\ ŠG¼WÔ€76Æ“?¿ZSÃy»²®aqŠ7$NÌkb[YÙß>ã¶þu„=†!YRRŠdHÒ¿ƒr¨—G°/²J^šv°Ÿ„¼•îM»ó)†Yn|º+G‰¨¬¨êžÁP¾™Ír|:*@ƒÅh‡úÖrOlñ½7GN/5 U¶ÅÛo–ù~æŽKØc½$£È”‹:|fæõC¤7•[Á6NúŽæzÃby¤*w­h e†d”b´õ?7 º%ɨÐH×ã‡{Céué*Gÿ.ï^—[¯6j:æc¯iö¼·Ú[Š6LÉÿFÛ7jOÝ•®OŸ]1¬QÂk b‚‡ïþš)¹Ì{ÅÌ9˜u†•V«ËíiþþÚË•¡jõ˜ØOLqü-†«‰S¬,ÑɸžÏ¦–¤(Ïa§ #‰JÂnŽ_¹ïÙ{³q…ËÎxæÈå”oö_¹ïCöúfàI©ø¯h=«y:yuY°“E“°ÅC³øµÄóÕå¨òè±²#@K¼¯ú´82tÂJ«5V&lÔx9½ƒ¥k¤.X¥N¥¨¨ÑÊ»û‹Nö’|&Ù®¼ýŸV8®È*;.ø¤ØEÇX¥âÍ#ØH©’ÝÜ,5p6štÑÅ>NlYE·¦b¹MpÉ ˜?×ùU1’†%JÅò„sñõqó‰wÿ¹^˜ÌEÊÉÇÜ ‹1–@¦MõœÇ:K3u—~m’ÖYçP *Pk«ò]­TÚ ÜØ¯ Ž€GLô€½¯º-°¬£s…zå¼4މjë¬u>=`Ù"àÚæ5œ¤ñ¼J­Oq¥Ž6¥„"åÀQE…í€3°¥2­?†¼>_tOÃFXL¶ œ®\4B§é­j£ö±9Õxoì§ß­_jƒùÍõ¶åW(“iÏX~8ƒC;ˆ^´ªRý¡WM”>"ÞØ výŒ Š4^võ‘•MÐ9È qss/†ÅYЊJPCÅÿÃ|uq|vBnjj’¼~²€;=Ž–&ýP1;–l(l?®"?N¾À÷ˆ8Lâ×-üÓÌv¢Lº ô ¹ Ò¨Å+G7"Éý¥¯Ü€£Åd‰ÊÚš»É.^¥U”% VªÛá M9–äæÁªÊaB lÉŸÕ2¥¤J|Ú™WÏ/¿Ë© ¡D×ix.P(k|ãpI3°›7%É&—Q(jgRið8jOäxGÅä¨e«ÔËÈÍß’nˆçƒ_¥ÂA¡°^Æ4" z0í]ù~–~òH»ì€çi<ÑÌ=¶¦g ¡M­:ùÕÏÌ=ózô:K\oÅ™¥ßÛðþ7Û5wy]Ÿ$÷N¯3ߦù_”W•è'ÿmÑT©òkýýÕî @#©Eºk+¾«5õ±À¥øX§Ýuù@i‡yé¼ÐIS霖ñ ¼)-ê%LŸtD“Ž[p›T( (•À¤¦ÝS6¶ØÞU¶º^¢¹KF/¤/{@HÐ]jò‰Ëw·»×ŸlSÉ÷wÞ›!½WOQ6_ŸåF1˜[9 ©Ü=óKí¸ÊbîT˜J2¡ªÈõQª¸ÀÔ8%Ãþ‰¾êÝŽV˜F‰ÖÜ#O6^ð#æ,xNY•’?¯“Ø]p™Å±#Õéýç`§FI=k4N¤‘3\OÚÁDTg‰Í(Æ&¥ ŠSh]ñ–t¬ ,ê~aÅtáËÀB%äFnÐ ¨S®WV[t¹ !‚žìð“=„Üjr…Š_àŒu ò ‘;çà¸ã,ªõÓ‘õ]»Ê¯ê%Úøð{°m‰„áè˜VÃ{û‹èjHLCÐÌb‰My‚yWeï¯ñu²úí†R¼áPÉ»3þ©2KZL¶ dö£âÛÔ}ÝÔÝ_f€aÄèÀIЇ!瘧."fœŽ‘I’ÞP†ü¾l" Îð§Pƒ¢ÃÑ#””›‘äÝ¥KöÇǺWùêWu’êͺÜ4²ÒVü¦ \u"$I”ÿæg¼–¨¬ÛÐoÈg(£¸ü–;§ãœ©GMrŠf*œ£'5Teã7£v÷¡X\™|çÆj L60Ý@=ˆ9RÍô…™o×Îas¥É–EŸv.Œ­IÁ»}™±Ò˜ÞNµŒž•"¬5¬á5Óï¯Ý5¬Ízv|miï!dýíG ¨&ssÆDùÙäºKŸvN%%Ýx•#Å ,”Vµ±ÊºB¬(S7¥by3 M¨-¼UçîµÝÀ¤BDá•ù æ)H` ›œp•FމlnÝ7ÆÎ­Å©‚N'u°BÖÕE³§ø 7G dƒ¤¹}{r1îØ ´ŒÖtäRÕ›ÁZŽÉw8„ Åzt„C¬Hëv^ ¶Ÿk‘Þ3J=øÕ¯÷³¹RÛ§ :<ߨ˜tFƒÖ—;Lüæ~|öÃînfú ùýÂîÇÜgmqè1ÎÿÐ>—³›Æ`Œð† )Ñ.~“Ñ,+â=¦Òmµ2äs`‡9e²oµh÷IqÎÄøLg{̧íµQó©ðB˜c”ŽÝ¬Ð>iÿ,¢UÜ&¾÷w5íÀ÷Ä÷B¾ýLº¦‘Ý2û̶‘ÇO÷¸Øö.~=3ÐõÁ甥ñPä)›‘{¾»ÞŸë¬+sþ$´ýÿoÊã¼ÝY/¶˜fó½L”]7ßÜ Ú¾;ÊÛU>Ü!EéDþÿ» ÜŒúãU‡ôç8|¸2ž=nÏ– ÷yU5ªHýn†@T>DDíâÛ ÂAMçMMãc?åïôcgµ&=KtKjáÖÉä/|?ãMÿmOˆ1éà1zòzÆÕp[ÿ÷Q asmZÍë@îÔ#ó…תýP£Õt Aqf9Ÿ»[)¹FEÕÒ‘ëÕjØï„7µÄ»Ò÷v<©Üuzï Kêñå–šeŸ¶ :ã¯_€Ü¢®çÞªû§wÏáô®ï›r®Ð¶Â½~Ý“3ülÛyõ^eÍõÿ`rMwÌeg+F‹s³ƒà9’µMKôDåqÔæ©$^¢{= (†k®Òçßñ³2‹¯”'{ ooù™j‹ ÿuÕ©Š–ßKÞ–ôDÁù@c¥fí»ú½½u/¢åN²>fº7ôõª›ó€ÓX¶¨¶Ú…åˆÎ`¼E¹2Q¨ëdë•…æ¸,¾½Ž¡±Qÿ$v×úóÒ¸–ÑJÎߊ4Ï6+-p¿Hê§ó¶ÿobÚùÙ ¯Õg—U·}ÆËš&)«°.Ì­n¶^íDç·´o|”yí˜AŸ±Ñº ýû.e¥Ž\s°%’˜-ÕàÛHÊ‹ÉíI]ÎGn|‘55Üæÿj§:ŸX,@Ì…îAÜêR~§pî¾ é«›S% Äás¤¤ÊgÁ0¾œ¦0~á^û±%k[¨XŽE‰éRDÂLÔP>KܛڛfªE‡œãüÂã6 ŸKôÂMnñ9±ô» ®«ìŸÔ¡?è¾V%__.âNÜFÝme/¶¸}NÄ>Ê)órz•^Æ÷I9g|ZÐJ$’BDî—­—ç׳(·ÿ N:Õ—dÙ­éÜÆ>Lç ï0²tê+žq‹"ˆ)º¿J Œˆƒ@ˆîÐ67ªÑªt”ºá›µZ ›ÎW=é°.gK<¶RÇÿ>ŸTJ¬«€žzÓ~‘JjÕ@è£Co ½†¦˜[¾Œ+•9yÆždÀ¤$8ÎpzJØbŽud!nýh 3*}Z Ѿ¯<+°(>Q÷ÄTæ§ÍkÚjõÌá¬Vg[_Wö>ͼž¶Ëx6ýÒËYôõÙ–¤è2ô‚ŽH°òÓïÛè[½€z¯ÝŒùï¿›ŽÉÌétùæ·¡ï³2ï£{~ÍÄÞ—Ñ?QŒÄžW½]¿Vòª OÜÞÔðˬ#­(syAžOñOšþU¿Í„ȘrƒKQGå ð…¯—»ìßÿGYÜ…²Úƒ¸GÒGÒeíÀgøGÍÎ/SŸ½×skÀþ‡§6?‡w¬d.&ûÇ×—°Ù™\ûiì– ºãhæ[ªù &’Ã<¯ÞBŸx|ª¼_—]û<A6Úô¨—7É}ï~°o?ýd|jùœ øÃÇÏ?«µ6V=y’Ù½OÑ Ƶ¸÷%¢0È·¡|Õ™ÁQÿøI¨sƒ{ÓRPäÀ¬,:GÎZÑ–”u½ô\ŠGáÍ,u s7BD˜ûʉãÇòëSµUiU1Á˜°o>ÃHê(oLšX¾I°ë@—>²6|²þ±;÷nJ1YrÐÕ ¡BµÏ4ð5TQõý Æ g`+ÑP̰ía}îØ(Ö-æa6t0e¡¨Tø3rdïJDý•Ýö5õ¶Îé»=ƒŠ]Øåaøsþ~5&‹lN¼šaÿñ·tÅQQ@í—wJMç:E¿sYäqSÛ €ÒzÑ`Æ—ž>ƒO1PË”¬ûýË¿‘¦•Yì•óÏiêš|˜Øn+'z¸—ö;ñÑ@!ÉCœØÄ¨ ×t 4"7¶ôÁ¥I­öôJ¡Àù0¶qLj2Ä`x}·ì"/:­‰‘ƒò[43Ôx°ØM{êÖÏD+ⲃBÕîøø˜’e {©`tC!öá‚©U¹Nr%)SlÆ.M€=0ç쌶µ¾úˆÎª% b…ùÞ̾L?‰òê’ïÎÚeÎ.œ\!ð7Ký…ΊãǪÇÊ ÂÜ„§0ºêvhdZlüNkìvDE–ªl$T‰yI5ÂS@!ª„^̀ݨxN`Š&2&\aí3 Ÿ¼x>rüf#•n4ûgbÊ“™Ã°›’.¤‘'É[¬“¸1E”HÁu Zò%m®¥å,RY¢™›TTà ÎÒ'¯Å‰Z³zã„ô˜ÁLŽ© A?ž;Ž¢Ì³A*vÂp.‹ŒÝÖzŸ‘Ã㱓M;&*c™FvRN°[˜.„¹ª°E±ïç7ºOpE:†YúMeÏU)#^óQà[Œ¼@: ZsjÆŽ/Æ>voeáúŽ"Çä2îJÞÍnW›¼¶É_×Y‡RÆ"Ê¥˜/ °ÎŸ2„~øs–Š«B–ËZ`tR£éù€³éBéÅÏÕzw„’¤å9¼‘d¯}?¾ñ æºUÜÖc†¤Ø0Nˆ°lÞoÒïÓq„g1Z¤;œáN“^ë†$TQ´ ; HÌ`!Q¦ÄQ”–®1‡QOöŠžX$ÆÁrAØADFvßnáHæèx„uŠù¬)¯Á¼Ú*IÌ„Ídº\¸!N “ ,§³ïFt9Ö¤lPÃ+£—£ º°09 9Ks¯n±ó'Öý!¶ù!—wK¦êì‡6¡žBmïGC$G™OX׆͋»^ê†$/EiŠÔÂF?·}÷}lto(‰e’o†Dúªø´° ®‘ÄìÆT.õ8Û ]XßJ/wg´3õ·‡}oh° ýÛžæwÍxÊ™ØÊyƒ¶³`¿Êxpd2Cß5dލ[ëªÌÃn›Ú†Îd·VOÒc¢SýK™ÇÞ‚´®ù¥àýy„–çÔÛq{ÿgå¹'ÎëïtOÍ=I);7nJ¯zî—  5 »šÏ>’ºúJz_Ntgøä–˜—9†D{RTÑ_¯Àž5Ji”*Fð—ƒHQNØhA¬ú-‚µFu‚€™;gë¢R™ìÁªÐ)T÷AÕ*ó)q@žÔ‰zH€LƒÅªÙ7pE™XÒ̪”ãdÅI\&K;WÆ‘Ê;r(‰c>|+d mu·Hj mô,Ý›2©Y&cΔ;©˜HÏÞW›äD×ÐÅÒÃÉ{ φ÷NŽd—\T¸ò…®`Ñ©{4ùÑjÚ é¶ÂkÒÆS‚B dKÊqnâÁ‰*ŽcšœJÉx)IlG)y·;yרê>WÔ‹ä 熅ž ¿sÓ1?8Úø‘4þþ‘¢LQ4êqHq•K»/÷(3¯{Q ’öXñ6wò1ÊP§®nDÔ^ÆT:h˜FY4R¥¥§”lë¬~WJ¼VDÄ0¡ÂVÈ"dv€­Ë#TŒ4aÂò"»y ©ÐŠu¡àk› ¢ž."`n(ÖŒSµ,Oç pµô€txŠŽKÕŠ2ÂŽgø~%±¢ñèk7QòEé«¥æØ¡¼#XvÂRGþ.}äR õdgÓc&s¼A ƒäÐ÷T}¼PU4_q›±A’V‘Äj’¾d¿…×Í’ê©WÎ&ÕmR·ÊwÀ‰ªq¡’vvU¤ñ{{õé‚1À¤.“zÙ‡~!Á4»’ØÙ¬”–]=ƒ1Ù<Ìâ‰mjtŪԡUþ#>²ãâM~y¼´oT'7«¬þ=J¯Eº¿ªöœIõê÷aýe¸[z«áÀX¿c¥þ=¦ø©G™¬÷ªi_„Õá^ªE™Á¤Iše=Ž™)JÏ&Y(Wn,‘a¯ zø.\ß­RuEs6WŒ¤hŒFé@iŒEß‚g_ÕXŠÅd’‹¾©:³ù„SŒƒ^€G¤•à©5 °uÏñÇ<Ñq¨ Ë«šI< ¢{©yþ¨~lÉp} ˆng þÄPºEjþ˜4üA中ŠDtìôIÛ¼šðT˜ˆ06tf;¶Á¨ÝWì0¼¶ï†<¨ÓÓäØ_ÑW]– „º„ƗƓΠŒ›VÐ_cpxp˜ÿÔÒüPb;)ÅÇd?ÔýQ×­]-+L® \?S¸q¯séà‚ —ýè¿NßÒ,-Hl ¶Ë­3}‰)NâKUD~}¸ÀˆFJG©å˜ *Z¬¸g(ID@ ¼™:O浉OHyRfB“ Ëk6,-=¼æºuKt}ý¼LÓÂR nÙP~DÉPœb5ñ@|rpv ¬-m³8"+ÿEnOn_¡íyðanûÅ™§Ú'N§öVØþ"+ÈQ4H^¸20KÝ7T>s<‡B±gU“óJólÃVû‚:ÞJ£öWç*Gñ¤”´ˆ§@Ž×‘Xn{J´Õ¾Gš…,³T– w šu¢EܻƂ̉'ƒ¸5ÙäáeêÀKU›LzdGw¼Ä®ˆ¾l”è-ku~m{~ÊøèuõV=]"¬¡þ¤´a?³ˆõkÑ:«l?NÌékù£À¶ a.8ñcŸ ™ÊI‚XôE0lRrĤ§|u‹¶YH}D}Lɱ¸Sß\“>rµ1ª_ÿQÍ:xZU /2¾‚²>ÊBƒpf˜Oï#A¥‘ «;še ¬„½lÖëõ<ôâ¨Û‡fß^ âÕµ……F`™l×éô;£ÇKòÂòî©Ñ3uΗé¶“B¡âµ®“ÒÌïÌÊä’ØÛUR´‡ãshÆœŒubŽUsmÌû h×9(£—ÕÏþ$µ Èùøjò%ðÛ]/)•vfê¼5¾LB›×f~Íæ)÷!²¿AŸì½F“ÈÔC÷›à÷úgo|ÞæôÏnsu³>­ªiË·2ümÍ U5á±ý«÷žàœ2o[«¤ý¨`síZØ·zŒ uAó#nʽ@cž(ü°¢œ !l˜˜dÊŸ-5ú¦S‘òàÙ–ƒ½"Ì)ÙŽk#?@æêC&Í¿Bh–4°i4Ç1œo¨)sPæ9f_˜CæðŒmÄöŽ .@7”ÂÄœ*}ENNq…öÿ§|óJóõ¦mcºc8×,|¼ñ‘ÛnâhMŠx ›-[,ô=»ç¶ TȤ]cÞ*ZMš°@‘‚íûQžŠqfj$àCtƒò)iÖiH%oðMež9¯«ð+!§púC]о*Ã…†¡øÌl葉AóÃ]L±yzFaJÍ 1ìôÌ’=Q¶ Ñ‚ZÞ©¦ eJýÐ( `ê#!Šú€ä¾B¡Ü4;³4± n=Ë.«¥GcÙ˜xékä*·êÄ„pÙϵ†Ö‘pR¨Á”åé¥ &}Œ÷Ž„›5è&5Jj¸• œaµÐÑmÂa>ÌôÃâOU0ŠÞ¢¾%œŒÏK—ºÈp?å75Ýõ–‰¬£¢Ì.áÏÕÃf¸‹”ä>ýýv ¹éÓySˆþpSÛ​˜M¹m¼¬³gq$,‰°O¥üSoÝv Å PZ;u¼åñÈ ®¤ÃÔ6G‹””Ì£! j¦Gx0ÑMÆö ¢ ¯[ –7­ äJú¤-ó³O”‘?fwa ©ÏÑ“›ØäßøU<ú==OSwy+¶¦ÅÆì`žáJÆ›"3$í’üNv³èZ Ê <ŸXPšäPÂ8ØAd;Ÿ­BöaØ„t—`0ÓS©r²Ùî';}¾U”W>\* jÆž…úõ;¯§§«ÂD‡M ¡‚Ý"2H×"²~/œõÌí¸¯¿ÍRDþä/^>æ!;LÀÈ#-ó5ˆÔÒ.⾯îu1ÉÞ~žýÞ—Õ$[Ï_99Ü«†vCÙx—ÊSÌ“°‚ÊAÒâj˜„‹ûÝ-9´ \é¢v:V„C+u‹Á샵œÃaXÊ,¢ öþÅ+S´fúroâ9 Þ“ïO.bB¡÷ôážâ˜0ª±¢ê€30ÑŒÑeä³ÃeÛýÑ‘ ÔðKI¥ r‚PP"näߣËŸ¨vú?Õº!ôÑ145hE—ö.ÃL©‹ë÷ÓÛH^“\i Ù‘cÑNsÅ€3'.ÐÇJ¯=«Ò{Yñwî‰zQÞÛ|ªŠ7‚Ïú`À'F„Ýluïe»sx†nò«ÄúGŠv i^ÔüíëA—y™ÿ`ñÿ3Çíÿ]Œû* ÓË·ô¦=©„ežTN%$Ërž‰ð‰ÔŸ£bKGy²[#ãÌAçmVñÇ«[~µ“ômSʉU=C¬ÄÌk…nKg¶ÌMßÑ« ¯ßÈí[ô  èê.•Þ^ÌëLm<¾¶%s·ŽZþ#úž¿Åyã Œ3ZcMgV!\],lv‹æèJÂ}º+Itª¢öŸÑXl4¿Šì䈳éЄ½+÷%µMS£_%wíCÎD—“:cÈÒÿ«è{óðcå~ÞO¯iýFGeO}~÷V„oq‹ÝÚ¨/Àâ¹_ÍæVöe‹ë™#Æ1Ùp™o-á P¶ôøn1¢¢Ýþxa‹lâM´ò½ç  Rqý£ ¢áêÖ°>YÒö&ù=^Ο6ø§±}«LYztjј¦àüžþ7‹à²óì³HYçI¶”ÒøÌ¤kêÞoµ_z^ÿê _TVÒ¿9Ùô:øæîgî—L\^fþšÊ/7Ôç‚zD\û DUþïé²ä sÿ±úßÑÞfò‹J_:ϤÅ÷%pDI…½-¯÷½.1*‘Ÿv>Åjiü2­9ÿûÖÏÿÖÓÀPèèeÙàìöóñ³ôV!“ÖUE”'øWðÊeèìZJ!ƒTÁ…2öÁÉ®¦åæ.p¸ S‚Ê#7›«‘;ýYÅi/û[ãÂõß )ÿ³·ÿu3Þ²†FuÆÇ_ëyÑcÑæ U›²ákh “/þJ¥ý"ƒ½êÓÕï œax^m¼‘üÏß´sA;·|)Á-ÐÀ·ÞüQº½¿6\I Ï“h)\=ÒhÎÚS$a ªq^üï{êòÄpsûøÞç½Z+ý? 3× ÏîþÎÄ«¨z ;AbÛ­­µ1¦w…SŒó&Š£Û¤å‘ܨaÊu–y”ù"rŸî ?äv Ü…ACµ;<ÿ:aL• ÔÅŒÃEWèä!íZ"î§´ÃIsþ—õ¾<¯‡¼oj£*ïÛù§¯^o…“ÝÅlNÛì6‰¸¹zs”~ö呎¿»ä)þðwB–Oàƒ3ÝLÎsÙ¯$RáßG§¼M½®$ï8¸Ëf`,ö6½‰fe½[Ùÿ°ÓôofÝŸ’²wžÇ\^Ù鮕œ'>ìSåß‹¿åbs_W·¬ £vô7g„­™‹½Vàwg»ïÇÙw¯•Ýü)FŸ©xnõ¼.÷TrŸT~Ð ø=Ï8Ùñý™e,w씟³‘nËÞÛ¼ÔÿÝëar²ê2Ð&uŽÂÀIk ÞU7þ¢!ä,|ìÂëÙhr· »œ{ª]Úl1Ê<º “¹G2H(S-ŸJ Å Uû/±ØÖPq˜ô÷ÙJÈ3 ¦l7£úÀªùeH6‚ÑS%ÕWÞ,ÖuP€² îôæƒ}FÄ,ªºRaA‚®G¡÷‡Íj5¬(Ž=ÄȾ>rÆ0’ïžßÕp}¼кmP¢ ¼(Ðe‰ÿ¬¢í­5‘wÄ$˜«Ÿ™‘Å ¼vÍ׫O‚5ÜÖ&X.¶fãy(ÖsÌKk’Ù¾éßp°ž[NŠ”hY§‰Ä!¸èÉ>”CJf‘Õ! ~EuoyrÂ4çæe†NT•"aîEÏíÉÐ «òQ“È;«Òî,íPOÆýwWú’RÕ÷V` ¶m Öü@DÌ@ˆôø×À”wx'Ô?j¡O¡¢Mº—N—¶=TFMá‰Ù“s1ƒI*š_T!óLÎI­º¤f0ZÇÀ‰&ÎrCý6S4n·oWGà)A•W´P4^%a:Ø4i$>Ó^3Þù&¬Ê¨ÅPLŽ&³SIsÆ™>[^GV4ŸvŒï,\òy©Ô¹»øU]þ¹ŠI8WÈg=—afmmè±Á¼+êÄW]. Ñ‹Hؽ MöÀR…¢ñ˜ }„3¨ª+j1(µ¤%ŸbêJœ†‡"ÔÅ"ˆŸg„*œìZVGSgà'I† JØ.´‹*¥—  % Ö“R.[ÔþÚpûˆÞÙ-,ÏÒ¨à`Â?n¸“òýR—`_FúÖylt,rby!NƒQ>Vô ë¨èî]hÌš¹yë oJ ‘y9:F1¶¤"{h’})k]À¦ñGH}Sá²û^p°Å 4­<ì®@ @D×…nxÊO[×î£%Ô®o¯}RkX&°ã“0·kQ¶¹ ¿4ø²nI¦‰{U3ïÇâ´ë…6ýûxÀXùå.§Äyz^X¯¥{elý¡ÕJBíXUGúúyFÏŠZaE×ò6HÀ4Þç™”Eá^«_"‰`"¤$vã‘Ú!£ŨB@l–R¦),EH“i„%Ì pÐãëGª4‹)>jäc„XÚ¯‰KJÒ‡*ñc`þÚ‡º ¢cªyKÉËL7fFºË0µ*-ZŒŸCea0û„þÑTcФZaQ}Ž*\Ì‹i§&UÓú)úí9Õ²q hÀåËr´®e¡\tò5?6ûP+ b-DŠNG´h¸j…Ö~aÆ s“è‹WÆ¢ÆÑ´[¡‡cã}kþ܃iˆ ‡ë9I[i9+7fÌ.C1øAîÒƒóÃòëe¨ìTÃ.&'{ ?€ÐAÉ-ÝÔ¶o}3I)…¹L¡©ÁNÛ¶ïôAhMuGsë3‡˜”¼ÁlÚh9P‘÷ÁÑÇ=ˆRPgŸå©núYHÀ1Ë6Ù¬‹^¿ê­—½ d“ߢg~–vA"Ö¾þû#"ÿÉ#"Ci‘1y‘~p\ÃøõßX–¬¯†—2ÇÊÕÆŒ&L#ÃÛ¸¤t“,„³eU)Ø,WÁÉÖì˜ÎÈ”+†‚ôÆ·wÌ[´õJ• I‘ˆýÐd @õ,~˜#Ð`h^"•·ŸƒY½êza®gçÂÛÙ=ÏÚêÁЉQà QêˆXÍ’Qy´nn6Ð+8Æ>UÔ@ >+EÐñ  ;ÌE3ñï%³i2Ö!O2’½&–Å„Š˜UHXÚ)š°oÖXöŽz°-VÆR1±1HCaDfm€~D‰31M5 yÍñÇʳÅr|É^È=!7E•j«rŸ“ºô{~n½Î0Aø(5aJ&¶ÄÁ‚§ß<Þ@:@‹¹›dkÛð©³\'o‹ù•oʹèýÕ™žÙ˜0qOQ ÃqØ@™5–¶mïý#:Ëbcn§Ö-Ô= N³EØ}V'a×Ešéô'£cÉÚ.ŽÁÂ;÷Á@ÎOV„‡7Ϲ /•ìväB•†b¥…6Ç„S( N{bªIj[ QñæWó~.&3°3"$U£•s©x³«¹¿=xÀm"´ô8×Ò«{sX,‹3+5f‹ÍP”xÝ–çKXõ)ö–üî“üb^©V—p=áYo­—Ír/ÿZÄ´¯ÓEΆ‡ÓŒ'cM †)\^‡ª—»YnÑ–è3¬f¬Q¼T#³ÂHg“*t#ڜΠðOߨ¦É%lÄæKŒ‡¯M°Ö–äø2Ý(òí·é|׈ˆÒ'7$[¸±”Éÿ‰–{ŸÞ3«„ל܊âΜ1@¹'¶`MŠ]Ú¥°œS\kÃ(„ZØG„èJðþŒ1(â“ 3Ø|" #;E¢Žz…Lù•²THÐÀ?D[#ËÙn¬tyòÍrÅÁí$Ê!FN¤œºÑëz³]w?ÂQÖðÇ - _2T xZ#6p¦Lùç<³óÆlÔH§ŠÀ¢y¶#–‚¦ÈL¦²T"|•®W½CßhTåÉãGˆ¸áýuZ·Ý [M;™ùS7 r>±ròøZ„íE¹ñ“ŸÝwŠ:]Z×IDH§Á¬&#±uõ[?MƒÕk 𛣠ÇÉ6âåšçýùpìôo.‰[)ýb$  … ^³â‚+xËšyß+5 ƹ“ûŸ.ýH½›•U6Ów‡ÑØï[%•ŒÊHôo²ž;(Ý|ŸùvCw¯æ±³VÏFñ~ѾŽÝë×B8»¦;LB 6‚B»þ J£éLp®Éïöyü/¼v¡7ßT&Õ°³š{”¿ûЗGNoìžÑá¾Jú¶$yråt—ÕóJî‡-å KÃ}â¹ZñfÖ.6n|œ’¹^‡ðjÆ|)w'y '7zbO%QÒn¸ÙfIÕ.·õ†“ÔÁ '”Z”WGªQë;ÑdÄdˆj02ýÿL=× qa¼R å —Ô´Õw¢¢ËvÚVr+} ¥§oºç¹Õom[¤Ó›‡$Å÷Â'g/ô]»ŒÈˆDÏ(oHè¶ù=˜È o‘'PÔH©d¤èŒh›¸±E†Êüà½[v*1Ùç.H±´]'è'žVÔ½—o6ìVxÿ&hõãÜY¨æ¤Ÿ…ýdÂQ86UóK¶¸äxeD>,y ×LnŽ-ÎEz2¬¨ÐÎè@'ZP\讑\õ|{ª—,Ÿˆb[¸"W“¢Ük>¸sbÁvó”‰ÖÖ*’ ¡†ñ¤œ¥P{fÀ§¨S4’ÑÜl;–J â´ÐÖݶÕˆòϹùLþÕä—cñÉ·=ó8dšõÀôTEVxÖÆ¦-žîܦòÆÑVËaØqôFrœ¾Ï´åÉ”Áà dÀ O²?£z£Mk¥þªa¥ò<,¤³ß‡¶Óöà ®h€zJŽÙÇß›ý+S8ÈgLÁv)ÒøWŸýü”YJŠ«»&Î=­FŠzd;R&`¡m8HôÎAkñ5N%´©{z‚dcÊN‡„]Œ¼E–¾†ºò@G[dæÓjÌ‘*&_ŸQ­û’Øï&ˆ½o~£UED¤d³ØpGÓ•-JŽ@ü€N¤añ–cQ½Ê,)^Çfߟóµ=GQ,‹lMègt-’î¨så9?ûöã›™ƒ’¢Õ[¦B‹vù’¡½ &ä>pÁ[¡38‡>2$³ñíTƒEM3ÉÖëâ=¾–ô>ô)Sgï,öÖ›qi7¨äÊ®úpp`JóhRHûFñÞO„ÚÄ×_)¦åÑâ8×òHå’R ’Å¢ò´¼fæû»V‡5\vËÆÜÌG UÙ›ë›Â¡.¨°øKD²@*ykkˬkÒsGÄûBœt׿TÜUJr¯©…p©4:ƒ ngñ@ÖôZõ(ùdTqD¾sÚŽ‹ýbROÛ øâÑaT—Úó¶Lbõ ŽÁÀl{6YŽ­lô¸ñ›âôìUâ8õmBåY ÚÏiËÚR°8R‰–®j²X0ê4ôÉŠ ±f¹RiaxÈB¥E™—ÐÍxâ½6á ":¨³ zâe®,¹)fP¿ì¢•ó‰ì+…‘MûGž[Î*¬†2u)ÏsF3a#=É…Â|glx[b-Ÿò½œ›ÄYõƒÏ=E¥Uç}  þ| {þ…•! I ý¢Æ…5ìµ"«ßíüÏ&Wë½&*?õÏ5U~–ï*ü÷› RcÚ¨°è+õËãc߯~±Ôt;ÊÆÞÊ;¹-–K5¢~{oS&\¨Ðœï[xçûƒ)qÿQJÅú÷–$‚;죊ׅhnv`N©ßÙîÿ )þàBµ8ßYWö†«‚L¼²+“Šôõ@nþ 7FvÂ׊q–Wb— c5ÂÄȾäkFh{"®2#eÔM>ue”MwŽ— ŸCLÞñþ'#ÊNœ?z5ý¿ º?··J~¤¡|Ä?3oš\’()))ËÀWæ0±8ß( wFµKZã)ñÚòàšÛÿ-ó¾š÷£ù3ï*X}E}û|iøÆîSÌ pÿ'÷œX,óvî-ç1Dµº½]ëþ›öùû3¼ÿöÆLï¿{cæ_¶–ÝkÑv±FòºS§Ú¨gÄK­âY kMq8¤¤°±Ï\Y8YáiLä%7ËõÞöG´w8&G íß²×[œ®ýà|E•¹Ÿ&þßê†é,Ëß§[Ü7já‰Å°‡F]e<YOyΫýÒ¯äã±ÿ—TTÜ Iuã­ ƒ²íÝp¢B´ìçéÉ3$(ã#ãzkWÊñ§dHýG{]/oÝÌìâ#êôÜ7Ž#©»»¤ «­Ä£wÛÜ$µùå}¡ªÈS&{ U¯ºc'm<îÒ‹S›ÒïâKbªEŒ7…žV¾Ü´ÈLBs·;©¬9³ßÓ±9äú_x}×§:®Øêì>{BûA+R|‚Ö8Ûíø ˜¿kLóúÑýƤ—zt)»¿Åç±fwß>.µÌõú?e—¼Gé?“áN†¿Ó¦ éR_´Q’êaqT­„™ÓU/R4;¹íI%£vØluöX%->S”÷Ÿ"¶ÊóÝþ7öÃÖ‹õË­oÀ`€\\ˆýíýÞu2åÿ/û˜2ÆgccGîÉD“).…|°Ž›Mê– Õ¹ ãÌ–™:'ñŽkM±Jb O,áþ»à¿W˜3\=.0IdÐðiRwS§Ž4-J²¡¬ÉŒ‚°æ³G%ôµ—oȦƒ(‹'qB‡u´¾ynÅbÐ_TÔÃXKÃʼnÅÿØï¯3|)fƒÄ¹ÇŽJ¸F$(ö¿ž§»e¤ à1*T9Ñ”üeß+™7Uù}= òM†ö׆g¬÷…t‡?©[Hª•\~¬X ã‹]WNÊâ¯Õ§Kºžd莇ñp´Òž ló8iÿM=•‘É;¹_yÓ>'ýH¼ù÷f¥0H+âÛ­´ž_7]x¹[Y\–SUFþéÛvu‡Ø±ñ×g ©†³• e‰îÏæø!î†ÿszÀçûù„d ¶v Éh¤‡ùÎ÷ÍÀo–ŠÒ9e"ŒþIz«´B⨠'¢ìÿEÂ'kO³Î8£ôSßUºã)¦ð€‘%Bnl6Aþæ„¡<ºì?´Ù›å-Ñ0·Iö¡ðG‡8¿æž©iZU2»?ó5 2=’¨ (ÐÐ@ä?=Ú,i´ð?ìþINY¦’÷|¨§þ·/­”LJ×VÁÛ9.DE!ùZàÔFJãÕ2Ýo³BÍYÌD 7Q_k< gšÖ1Y#—­¶ïtß–âǤöf-òZ- ÆÅ½u›íܼô£pì̲ÚÊÞI<›%‰7çëvýðôjLùdý‘Ž·¸Ãmd¶˜ìUöSwÏhv{‹ÿä+ ËòvKtÓcö,·Þ‘›mŽÝ?Ÿ%Wd±²Ãéó¨pD%aó¼Z׼xfÛ}yׇ“xθl>¦Ï#bV'zý ’ÌáèAß5ü7õ‹ÿðPÙg×likSäèä.MÙ{ý.„êðozù»isyüÉǾßn_=ÇçL7^ë=Iod –Öí€ÂL©·,†!.ô?RúÝ;DOí³Ôdû2˰«øýRÖo䟛wíkÔöL" µ OÁ+;Zzžž­Àꡃ¡íÒŸÆNã9 ‰íÈ1Þ®àÒF–š2’köbMqd¢fÞBLVNˆrFíÇ òÓ³]«=ˆ‚'Yã'yvÅ3ŒüX¡Ã½Á"ÃÉ’#7á­Ær =ʾëx”'ÿ¹.oü1ùÄ¢±¬¯]™¦ëü_9®(o’¾0LMZ©¹æâ(ø,󟸿0"ÉGxïév42RgòÀÇBô©·•n ¿Î~Ãû3Œ1ÿVé*û‡ÍÓ’‹¿PjÄëþÊó1Õ¿.1˜Q0 ¥Ðàr›´e—§$ • *Ú‡ÜÆu*ûå¼é›-áÿãÔÓêî¦IÙR_àJòM¡þLŬÂmÙ_>%oü!ò-{ªÅý;>þdkŽFnÚ©Ê ç™²˜Õ7ÿcþ û³VH'2á×3y}D5xöèi¢‚}Öùæ)›?*!Ê‹‚ë¬()Óá6^µŒ_$‡©Ú5Ü\=Ö˜ðæjÕ¬oò÷M÷ÔFŸÑÔ „s„Ȍ⟙Bd\'m÷“Épbî¿øä’ÁUÜ«ñlÈ÷ÒëŸmçÇm6O/ÀÒnWMÉâ““ztû¨¼÷È!:~XÁå|(Üã âœlÓNðz”P¶7¯_÷g‰2Vt\xiWmº@b…ä9ö5ÚL÷"=®ÛqÚ•q/¦Txñ³^í˯±k©@e”þÊ ÏZÅ*9ü³fÊàL”È6¤[vÜ÷¾#lL®óæk½m)£Ö.Ë•4ŸÒ2BE,ŠåB¯>ù|¼ |OX»J`ˆÅ#Ÿ©t‚<§;ºÅRfékŽ8† ?ЮÐ%°§a‡Éî:¥0P$ÿ¥˜E¹a5À!ƒ žp˜3\”Ç6¶úšYÓxõýÛLùƬ)§Fa…xUR[Š çrº!· #·é8§G¼©1)›Û?F>Z{á¾ÇW¯Ì¸â?pw)ày&ÎÏ/Sq¥B“x,ì™ÇùU i&ATLé$\'¸ÍÓjµ,¯­§P¿"±¦Ç!°ïeß]hÁ•CÈIË,Ç..æ-·³d6´’NíwÅÇÁˆòEˆ¡Q×éM¦g1ˆ¿¡iÎJpðç¶ØÙ%ôé…â‘14 ⟫ ó›Œ;(†IÃEÑ·»ú þ%Õl2ZÓ‹½®·~M+dܶcùI£1Ž¥Ó¤´UPâê"®­J$ÌIJ)8Qz2U‚=°(V:²Y"¨•»`¤H< íJ {dÊ5g׃‹VŒ~_7óÖ/¢U†F|Õù|Ëâ IÕ7Z”¹‰Ê`[ø+ y†ø¢ü>(2Õ:` Òºò™—Ðôµñ5 õrL¡uJ˘¦Œ’K~ªˆ³Cû¥àù¬üåLMÕ 0ûp×ôiý|ö݇}çþšI²xúï׃ÞtQ÷ 4 ‘?ÏÛüNzüãõ{» Y›õŸ:¥ DÊqæ7–zäëD–Ì2áÏOE*…5ÂvÁX€­Î>&Ø g˜ž;”?âÅÄ QýDLå8¹ÏL·¼iç°uÂó1©éýÀºî÷NáùÎÀf‚üpÕ¢2‹á£Œ¨JjÏ¢Ð~ÚcJi¸Ð0ëºÈX†ÀàUù€‚g4œ “­Ð —è**!ÿ1WNOGC}¹(Œ1Ýê ðÕtï„wÚt”Öë³ 1)ùxu‘UeþWê¨u÷e6ÌQçuê%ÍBIѾÈdú/· 1êH™®,Âd`ƒ9–¤O±à;ú'Ù3ÕjmOÃ_;HÞA¿À9(鳘gñ@ŽFvYºa8Ï ÍÅ$‡9ÞGðfÍÍɹ-ZœòƸÇ+‹sAö 9á=a ™ •ƒ²‘/…dOh{ ‹–+Û5;!ƒ÷…­{¦6RŠèÕÉ«„ ÞÉoêQÒ²*Õ}šK0€¹âiª¡Bec*rÑ[¤Áìú¶‚Æ<Ù•›è,Ùüé›]#Ç÷ &³u· åµÓãùÌÝqGj¨mÔ×hd&\m’,,zóv8*z†¯´Ž“ò­ :„AßNM&ûÓ½`pÆ8a„Í8Š3åçÜ’Ä ­Ÿ¾G­é:,ײ|‘>RKï©éx®ˆš4+K% iq%hÉ3K(D‹!ì!ªpæ §ù«E•¦fÑÒân4è¾ÞtìGª'¢¼•‡oÅYî7"a%!E–HÔ1jìÔWçóîðÑ(õ«Ö=…7…cáqˆaÌæ`¡XÂv©ÄF <ûµ+mÊ«~ØØò0Dr“ÒXýH•>0í™ã'µµ-ÉZ€V’\.ÞƒÃó<8‰ˆÜæLÏ„JaJJp›ð!·Q’w7[6¢pëja9=¢¢„-µþÕ²“¦*f‹T¡R({—ó‚ÃKzV:ªKßmƒ%SÕ>A—òØ4¤0ð•Xÿ 28|€~«¹Qú"SªµØòELZö×I_oŸrÒ( B»3oŽ·‡’¿…ð9 ¹}>=Ö ³8Âv•m ©eÌ¡LÈÇw¥ÅB¿‘!EUïðÕÆAÌ ëÍH³ÀJžÖ¶3ÁO œÍ6Ý{Ü3¸ç®»Ž·S¥7'pVàÇ4òÎUg5pS©W&–g—IúXÈŠ±Ó#Iö‘ |Ì¥bI©"…µAøòƒùOswEµÑhózãQ§b¬i`èÉËŒ èvz~ …fúš¶QY(6¨>¤Á+I¤sä»±>KëÞÚ¥ +ñ ¤ƒVL3æb‹dF"fZ•íÓ}AøòÜ©yX®šý©’TÆl¢]›u÷›«¿òaÒ—f‹Ü[·3½'_A’»›Oð‡FæC2•–ÂØyeÜKûØlÍtƒŠü‚ž~àM޽©¯{åÃätGe Q朋¹—òn8rç’¨iª®†9X—ØÈåÎga[! îÀîmT‰³ýŽ·ëuŽ´1锌£”^âé@ ¾/Íj10‚Ú8IAæY¸©ä¹xù¸CÑ“¢tÀ“&@\Ç“»)‘^?ÕGÝa eHv‚9ó #W–ÞÜEñ”6ÿ°xõY³Y»Z®ü›¹´yv©Ù<ÿOµ¦µ]q“µI¾hÏš Xý7ûQ™üÁWü?EϦYÉaÖŽG‚— €[ôUμ2_û±¾ñw#&÷!H”6Þv” Û6|K÷vœTŽdMìä|¾¨B•Ð7Õý ¶Sí‹%G„®„b,SŽÉ-A0²½M<ø— 3ü·úÛéK;¾Ô#›Ww ¸ž˜…âÔ‰†rñ%ìQpô(Z휎MZ6u¿àØF¶>5ZZèwãÍ–hÇű"Íõø<'Òòä1ÆŠÀ‚ñì|g¶0ã€1¢œÂmëfMn[¡ñœ2†%ô¢²"i5 ž}ë¼FŒqÉ9>¦ôj<+´Îñym¤IPöxÁ}Y$GgÁ †ƒÊ]+÷ Ò§Pû’€{GèÁ:uß´q[ñeüGB=ÓùÊ}øCäMÏÄBCJ×4i)¶´0“QV\#Û!Ñ•7ÜÊ´ÙÒµŠí: %òAœD Yqeyõdp Tç œ_{xçi¹­“Gõ×½VYÇ¿š¸‡›þ/‘-aÌz|¯?¼~·sÞ¡Ì‚øTÑþ¡\™¹ÄìŒOùÁ¦MÂSïµ_ûƒ—)M'‘üšá²¾t[“ê§+²õ²ÝGüiÚ¯U3í!ﮚZýçŠVò6Þ4ªô^¿ÎT:ÔHç9y’ÛF¶y.zâzú}ð£x‡›ÿŸdsþïµÛEöŒTÊo©4’hÅb¼‡Ç;:ήÏ/H}æéìæ8ýtûÈç×¼~£¼×b`ÿi¢ïæF’pçyßî5“SsOJ‡]•žû_!Íl7ÙЄ¶V~#klýb*âÍ®ðÎ<¨pO$_Èጠgú–‡whEÏA¸ŽNÅæ‘¹ŠTL¾Ü¯ ¹÷ô*œ”Øá†Jè¡k±{ûtAãÊk®µ{©¨íÈmú7çú‹Hbž]Oèu éè¯û²7ö|Ÿ71ßž6}ñò¹K~2¼£ó ¿~sZÃÿd2*½ô qV¸Ì¯s¶¸lãK`…ŒË l3»‰.À3„±'ís%¸½ãO#²ê´-/÷ãB9`Íe¾…ü=˜sÖfçúöŒá¡ó³ò¹ÚÖûY=·‡ÁØõ0ß!¹~Ê^yr*Í»â^걇¿}óZHÜ"Èúbn7¼:»~Êû×þÄîHö"»]É~®;,²ý k•ûoוó_^Vå-Î×oØdV—ÞÄòSíE+‘©®Ï4òc‘Q¦ý>øîÇbض|~¢„V#¹È7¦«ÎŒZMÝÅüõ{‰ž!ÍE®ƒ-› DëF/ëÿPK V{&Q íAanalysis/UT“ãT_ux èèPKV{&Q7²,Ñ8¤Canalysis/data.jpgUT“ãT_ux èèPK ÏzSQ íA_modalities/UT“_ux èèPKÏzSQ,ûøX[3q;¤¤modalities/modalities.jpgUT“_ux èèPKV{&Q†§;0­7 ¤RPouter.jpgUT“ãT_ux èèPK ‡›QíAЀspread/UT™®è_ux èèPK‡›Qx(.dcp¤spread/spread.jpgUT™®è_ux èèPKIyåsimrisc-16.02.00/documentation/manual/zip/prepare0000775000175000017500000000016214665030471020720 0ustar frankfrank#!/bin/bash xzip() { cd $1 unzip ../$1.zip cd .. } mkdir -p eps svg jpg xzip eps xzip jpg xzip svg simrisc-16.02.00/documentation/manual/zip/svg.zip0000664000175000017500000003047214665030471020666 0ustar frankfrankPK V{&Q analysis/UT “ãT_o{`ux èèPK’ZQ(ÝW‘sï"analysis/data.svgUT ãÀL_kuè_ux èèåYëoã¸ÿ¾…  Ø É$Eê•Ø‡ëm(°mîõõ©%ÚÖE ŠŽãýë;Ôûål6—k{]I¬™!9óã<•»ï÷™ñÀe‘Š|ib™Ïc‘¤ùviþõÇ–o…Šò$ÊDΗf.ÌïVoíÃ0`q^„I¼4wJÂÅâp”™-äv‘Ä žñ=ÏU±À6^˜x܉ǒG*}à±ØïE^”+óâª',“M+}:ì“S á ˆ,±@Â*ιŠ­áRÐqn)A-€×I>O*,•ü´â Á.ÄQÆ|ë¸sµxÿãû–i!;QIo›4¿/âèÀ§6Ä hÏ‹CóbÑÐËõ§4Q»¥É*w<ÝîÔÒtêç4Yš 1)šãÃön‘íT¬fϰíÆ;ŠÑÍš7AYˆY_—K2Ø>±Vwi&‘Šl Ø øw ßZ®ÒJ?Ñ’,ÉcU±ØÑAv@=êš ñ &z6õ]Ü’jËFlÇa½€0l3‚p·‰>VŸä;¦±¨OÞGòžËV¢¡P"¾×òßK)Nø#Ï“v!Spᥕh‰’oþ©ñD}Ê?†½_u^tZêœVðÜdâ>¤EºÎø­9Q*-Jµ–¦’G^C&"µkd«C4%¨ÙQøGt¹ã£Áà›Åʯ&6ë‘+j#úÙèmRkºI³Ì’ÇŒ‡üç"In %Å=¯Pù©­ò‚B|P A€ÿ¦êâ[½E+^î×òzç)åDÐ|8Ž2þÙþµ!…Ї}t]IdåciÅuw±‹ éú©Åð^{€Ó^@ã·ê¬#p(ê$Ó{x8ü œ¡Yù{Vä\‹€‰ðÍÊ|.#÷©j%,pºmšk¯®7ŠëKï,£¨Ãá)ËGˈÏÜ/k€l¦í «>ãp)É~F5Ôãm¾tk/À§ß6&ß<ÐÞüAp·ÐŶüÖ.Ð:yHù©«Èë¨àõ·h ýW&äÒ¼Ú”Ÿš±2á²a¹ågÀªóxׯVB!‡\ƒ’ÚΖuL>àÕ ±þ .dŽÓÙ:¶§uevÀ/vQ"N5ÇÌÏB쵎.¢®Cƒ1;¼)&„ÐÀ›0µuÌ·ß#tÌ„Þç¨;\똧 ºÈÃãdùQJ-Eg –šíµoí®ÃkIÅNœ4ªu'0:à”æ`´U¯ÃÄŸ@SK4§yî€Z` x@ÍÔ°_`í£ÇtŸ~æÉŒH‘Gk›‰u”ÍëßBXVúªOm®¸^€Ù×%éÀŒ…×ñ: ìF¶}–Ã)ä;.¸9I@@—ßÁ¦ì¶¤œJU¤òFˆÉáñ6Ks^'©ý¦ân¢}šÃ·¿ƒìª$öÆß DŸ`x{«u²¢,Ýæa „Ëš’Ç;!Ã}š$0W=1{4×ÕG»º+d{ÌsØÀc0 läø¾×GÊ—ñ ÁÎàr´p9Ôêdg† ð÷âÃ÷äÑksu§Ø|:ƒ]F Û„}Aù^ã …ÞN¯ïqK•õ¹ ³k±gÖì‘áà"w mñLÈL¬Æ7Vý>áU"Š7 ¯R–3T ù„N‚ âǃì‚È ¨; ÔëE fQßv ÿ²Qõ_ £> à"Ö Pp<Û£´Ÿ„†Ós¿™ F\Ä b˜:>y^Ì@ãçº3óÒéeÝ ¦ŽŒ]ý^J!!Nô—ãe>âl³ùÊC ‡}Í€ÀÐõZ5Wm}ðpʦeƇ°¤ŽçÊ ñ|Šƒ¾/@‰±‘O¿™xp *-f]™Ì„ƒË<‹ZÁŒ?ÓS]@<á‘§Ž•¸ ÆsK¹ú E2³ÎýÜ m¬öñlqXgQ|?W®Ç ·o!‚Vø'‘æa }*4Äáú¨ÔøúúR€GX jº¹ýÚ–ÙÕ¼ìz#ØÓ®@Kã‘æÛ†½ÛLÔ‚Õ´íVµíÇé&Ë!)|Û©vcü©<ým££ä*Þ Tz€ŠòVÍž‹*’êö$SÇZz439X`m#u„+›ÛÒç9Œu2¼ /w½•>¯]xÚÁí”ÆÃ$/ázwÚì4/RІªwWÕ›üëÛùdñÌZq©æô ¾îm|›z z²Q5c˜àÞÃ_aš‰ÀIz™à3…qPŸNU_S¨W>h·/~V–ùÞX…ºëcwX:‘gc ³ê.ýôôñ¿ÓJY“™cjòÈèÕ"ß|H3þ ºÃ(e^Lö3Ù¶‚Ê)_ r4V@»Pd^˜òÿƒ™zR:žSÉFåÅRëApT½hRUú¶¦?Yý§í.8gSæùÁ¨EÕ)Ïa”Lâ ë¤ôÂÖ “Qfž=:}õ}eç"Ï3#Ä蟯%p&‰¹ãhÌ}—|ý$¡©b³¯ Ñ3¦ Òå¨ö¶kcìyÍ`}\Š‚þ­a»ÔwÜAÇZŽyØiÿ#²]½¹Ó¯xWoþ PK ÏzSQ modalities/UT “_o{`ux èèPK«zSQ?è¾m Ð<modalities/modalities.svgUT Ñ’_kuè_ux èèí[ëoÛ8ÿÞ¿Bpqhƒ³h‘âCT‹Û+X`÷>ìö^ŸŠD;ÚÊ’!ÉqÒ¿þ†z?»iÚ]Mìáçñ›¡sñÃÝ62nUš…I|¹ÀÈZ*ö“ Œ7—‹¾ÿÉtF–{qàEI¬.q²øáêÕEv»yeLŽ37ð/7y¾sW«Ý>P’nV¿R‘Úª8ÏVáÕ¢e÷[v?U^Þ*?Ùn“8+fÆÙës¬îÃá€vÁ„¥”+‹¬1ÃÌîãÜ»3ûSAÆ©©Ä²¬ŒµœÇq¹heÿöš€²dŸúj óŠU¾z÷þ]3hZ(ȃÎ2aü!ó½ê=µ&–ð¶*Ûy¾ÊV5½˜_/鉯y.ÛÎ%ÌC•¡ZÖÞYjB½„ÛAØxk_ûD9Ø^³¥A,b™–4-qÖT3ÉB6)× .ð°òà 77ùå¶ʇ ¿¹\0øxŸ/µÎ4½œ¦?Ñb†¶^úA¥å`GÊ0ËòÄÿp¹ÈÓ}¹mýÊòûö›€8ë(9¸·a^Gê¼aÐË—+b\É¢_©ZÿGËÞ£ü·OIÒÌôráíód1’§F¯þ·4MäÕ`;/¿©gFžzqV°ù^¤Þ‚áŸi’{9¼w¬³’#*>.­³E;ÖÿÕpÀs„³¤È²ma3büb˜KG²%H¹…mÂ8 Tì]šÀoaa Çø»Á‘¶%-kibĉä”KMtlL_ 3A)ž|ÜG£#T¥ôuEfº”«nUœÁy–§Ée‡íZðV“¢0V$aì¦É>®Ý×Vñª™°í0¿wñ¹^º-žÓŒuäÐÚךƖ„h´ªìgU÷3[“´å3ÓˆÉO¢HùzèàÝgZÛ×±6i‹mxp'ÿ¤áŒíklƒÝÈçÐl|ÚGf¬­ñAìxh/Ò¢OöÐ/Û0fÏ)ÿ n/ËOZ7¦³©4…óé‹þìØÍ"5ä# #F@‹ÍHþ`óȶYûØ{„Q‡·¤;@¡¶…$”·r<[—üÙ쟄-äÌš1A¬oÉÍÐJ»üIAô œ‚Á;“oÍR¸†\RkÖž¥7éSÒ9k4¹ƒâbÖ`÷Ð:djõ_ Û §´ cmˆ–á€úõÏ1ûíD³y&°Òjýkâ¹ÀsWñ –iª¥ü^×uCI[=<´óÇy@ ±'m ôƒZf¨ñ’*ÂêÕŸÕ?Aâ0þ+À¡ß·$&ß½Lçó¦¹éRÕlÓt•ç†YîY»[/Oû·–“- Ô„ËÇ!´)|ƧÁ™9 ʨ:à A,nÉ‚h3J-rÇÀ€È•)–<FlããtŠÉç§¥ßÇ!ÜcE§É'óæÅJwÏŠw›è&`pªÃ«þ鉿׭W³@eûn1àÉbogn¢äÚ‹z×0Â8HæÖ» ·áGâ–û‰å«¡»ù¡G:\ÎpTxì ^#»I›T+«#qÛsÜÝU¤N[²¡µ%È>Mµr"ï^¥—‹â×hk ÷q˜gp8ãe`ÛKÄh öM$EÜ‘Îhw“d«›°Ü¢Ü¦£á·QÙ €5¦+ûéBÖäú5y)pF ×#›}¨ÉPcn5Z¾NÒ@¥Íc0ê@ —€Þ^óâU iÁêuñªE‡Ãºö2UõÅVå^àå^;ZSDÝNƒµûÛ»Ÿšxãûî¿“ôCë-šÁ»NöpÂMTÒÍfßÕqÈ˯Â-ˆ£Û÷½ÛFà9Í@Yg™vÑrÙT•ÍüÉÀ߆zÒê÷‚ÂÏú!¯6‹†y¤ZâŪ’¾öèÎæÀ½«­Ÿ6­J¦mrad·MU1 Ç#ïZ3ÿ¢Ç M”sú49Y"HÛÖ,j1†#´-“ZBâ&iKånB"Î8mî¨JEf¯2¾2ÀJ ãkMm ûØ3ÈfŒ:5´¯ÒÂQîÒšxà,iêÝ»q«qŒmbé@¶D’ c}= &)at¬(û¹˜¤“>M0‹àÏ¢ˆ\Ý5Š˜(P!“‚º»a;Žm zÖÛšž [£f»cÐ&g;„`»§MKBÎu1RBµx²‚_FçåPèºGÊ ó¸˜ìîÎu.­r†ký¥]{Û0ºwßü!:O•·5þñÌøöôæ\ jzQ¸‰]¹J+Jìß$©» ƒ RÆõqtµYçxÁetöºÜâÂò•ÞªÅÕE¤¸/“ZšÑS¥j½èš›¬3Òdÿ4ѺÔz™4óÊè(ƒý€‰\¬´–fBÈÉË’Þ!S_6 ´±Ë8h¨-Ä„Ë8T`ÊF>ƒALiÎÄÇRl½>Ñkˆ$ô³»M㜠“š²ë €YçTð®–G6焌wvŒ+|UÛ?Íʳ¿EÏ-Æ›ÑY×-8“¦0ñ#ŽqõkyC~v­§õí»{¤]K»Ž<ÿÔÿÔôÜîF¿°µ.R´{½ÏóQ}Ñ9Í NÏ͆ëóSc$åK ôM˜&¨Ä1õñ…ñÆT|~0×#˜50Ëe¡z ס_î›V´¥ñâéojS•û7=‘n½4ôâFÌŽ9f¹—æç‡4Ìᱦ3n”ö&²6^¾ ›ZÒ§bÀëiè÷ÆÖªX äÎõ󚉇8bó©S8Þ½í0Î,»øÞ¾.›Þgç£Üçàb2\L1~Ãq<Ö¼hsÇé>A+âjñ‚É:í‰ à!†ÊžP@ÃÔvÈÙQñ )Î2çÌA®5¹9ˆDãí6|õëo??aŽÜò¼òú Â#“X’äb ‘ÍeÕ~ƒöu$š+`F“'ü4L5ks:áüåî£ÖP/)†Tc´‡±¢L8°×#Ou~gÇDä.÷g}ÍÁþl½A Í$¬OL_0êÒÐ1YqªÌüºgãåBŸTF PCƒDãæá±î2¶¬Ûê¸ î9×C+TÙ¤ÉJ‚0•’ð^÷€]Y¸+BsÇL xÆ[™«‚IÌ1í…Ë¢„ £rspZœÄL1ÕÒ¥ ž´íÓ‹MMÖk0Cw|aß"…n;½ó=‰8Ö·Ilª¶öz¢¥0Å\ØãqìIjúûô¶ð•îÍÀ_y³K¢û^h¬»Ö¬U¹îçÌF”æÈ%ˆÃYalÜv.^ºX»=®¸Ÿä8G+þëèRöuÉ%"Ô‘Œ/G˜p! a# pĦKÀ%”cËyš=/o+´Á– ºýšÑÙ0÷Qóàù©óM–â2 0‡Å Ԥ˦G¢€S)¤ÝÜ ?%‡žMwKŸÜº„ #ÈSš0“½ÕQ_IB"ár²‡m1.E)› A>vÑ—nKNÄÑÝÒ|¿SdÄ܉žÅµFB8øÓš¦ß‚+`FÓþ±æÏ§"xo»MÞ'ÛdМ¾ÄËËÖ/ðÁKÚAµä¨¤>l4Þ±”@c¢û5ø—½@¾c‚—Zë_øj:xÃ×è&iþœÄ¶²HïK–µ¬>[ô2ûµªhìè?ÊèÊQXÓ÷Ð+`F3ñË|¬ºúÄöv½×aâìè&„”¸ztfé‘ÎßTq™áîíèó¶!Gýl9ãÏ.Ä·Ú…ÖŒiu\F:]T?Ó‡@=š¯Ÿš¹NWÔÃùÂY¸KmÌbv«óźA2 1i‡6N…e/Û 1P·<ˆ=æ0Å'¢”Áϰ2k~±Ú\½ºÐßö¹zõPK}…#Q+t¼êò ÔA outer.svgUT -Q_kuè_ux èèí[éoÛ8ÿÞ¿Bp±hƒµd’"ER9³S °@÷Àvöú´P$ÚÑT– IŽ“þõû(Y·äØIÚ¦q¯øñ‰ÇïÝêÅwëȸUi&ñå [hf¨ØO‚0^]ÎþùËϦ˜YîÅ%±ºœÅÉ쇫WÙíê•aðpœ¹9»Éó»Xl¶id%éjø ©µŠól-¼˜5ì~Ãî§ÊËÃ[å'ëugÅ“qöºÅœËš{·ÛY;»`ÂRÊ" BLà0³û8÷îÌDZG Bhc çq\n¨làOÍ^¬,Ù¦¾ZÂsÊŠU¾x÷Ë»zÐDV­iÂøcæ{ÕYµ"–xk•m<_e‹Š^<_M鉯y.gÉ6W©Um³#FM¨žvÛ#Æ[ŠlæÑå5•sƒ ‚LÄL„ϺkÔ Ë&ålÁå –*¿Ü¨pu“_ÎlT.µ ƒüærÆàë|¿Ô2Óôò1ý0´öÒ*-[{ ³,Oü—³<Ý–çÕŸ,¿ôAa;Ë(Ù¹·a^Gê¼fÐÓ—3J[ÖÔT-ÿ£·ŽÚ”ÿv)I‚z^μmžÌÛ)6£'ÿ1M“y¯â`8ÂÆËoª' #O½8é¯ß‹Ô[Pø3#Mr/‡Ÿ:+9¢âëÍšGaþ¿ÂâX0ÁÅœZȶ¹ÍˆñÞ0‰E'B²9ì;Û„90°gtn?Âqaüd8–ä6’ÍMl9D:Ô‘š(lL¹3fœR<ºÜ'£µ©=æË0ŠÌt)Wݪ8 ‚ó,O“Ê,dí"X„U¤(ŒÕ¯I»i²+F÷5*>S:æ÷.>×S×£Å:õXk}´´ùÌXìµgQ û°.ùI)_Ë6Úy÷ÙqÒ=¨CõªX£Š z‚ ›À„¶U¨Àä íEjôÉzšº=ÙuaÌ)Ösø®mäwçöUœÆTœ¨nŸÍyÌ÷XçõXu«`‚¿@¡½H~.ç–‚xÚÚ ¿ »^¨ÊøÃ#pÂzdŸûÁÆ,Ûf ^÷r‹ §!ÝA j#KRNfŸ-#”Îgóªø¤ŒYbR$Äb]¿ù€¶÷•¸T~¼ÉŸ¤Õ€ƒV\PX?™¬øÑ,7W“KjÅÚÑÂ:Y“tJÁj$7P[l@» òk ­E¦hˆ1l&HiÆZ‘áÙo7ÿûT$z˜M3–îçÑÿŒ¬ â%#„ûO÷©®‰`ÎoAÛHL~ó˜âÁ0÷`±zRœHèÌ&ï#a?~Ö¾ÈÚËÓðî-¤:Ì‹œ—W1ŒeWÎxjåCÔ²8eT2NƒdA´¥H@s00` :ÊäsËÀˆm|Âôü´ýpvz°N€„ØtF#ëÅB·×ŠŸjCÒíÁà6T»W]鉿ÕMY³ÈEÊþެǓÅÞÆ\EɵuT®fØ…qì̵w®ÃO*™cÏH'†t&è‰Á*×Ô1dœcŸsbÜž#»Iv«TÃÕÚsÓ–ÜÜíI­ÎeMklq›¦žÈ»Wé嬸÷™j·q˜g žá4ppŒ¥ö|0v§Sej ‚¹è~J’µîÒ:ˆ:6•ýá·RÙ@ú36¸× vZ›\ÿ Þ%O"æèƒJãjdµ 5:0vèUC×I¨´^[Ýðe àöÚ)>û!½±j`Y|ª­ƒ°®½LíÕúb­r/ðr¯­(¼j§ÁÒýÇ»Ÿkãûî¿“ôcc/šÁ»N¶ áÚ/é~´ïjOäåWá¶£[û¼[G`;õ@‡YG¢fÒrÚT•þÑÛŽÀ_‡ú¡Å‡ÜŸõ"µµÖ“†y¤âÅb¿ûʦ[‡ß½ø¶j ×É8’Í: Ôž¡?y× Ìù½ƒˆ5Rò4¥ ^–HÒ”Þ «Ê=䨼qJY<'iBËÞܸ´æ8Í4U9isÖô,;6V¼ïa+j#ìc¿WðX6cTTD@_¥8¤Ü¥-ðÀXÒÔ»wã$VC/[{ÓX›§C[=Ü=Tè°"¶¡lw¸Äì$Lçù`ˆàg"Ww5#E,ÄRØ€îNØB؈ӳÎÑôÓp4j6'4faA¶Ûhb$!ê¶»< 8ÖâgØ+Øet^PvÖR±ÇÅdsw®£é>f¸èåèÒ[‡Ñ½ûæOà¢óTykã_àÏŒp¦7çz£¦…«ØõÁ‘«tO‰ý›$u×aDêPñ\‰£få9ƒ<£uÖuä—y'À¨ôVÍ®.r ÅEi§=ÔzÀÚ1Yk¤Žÿi¢±Ô¸Œ¤4Óàa«IQzç¹Xh”ÆMÆt@ %ÔéÙ dp”ˆÍ ¹(±†¡6ÓÊcŸl5„8’>Ål&-Eç¶gG[•dWBÁ¬ÃÔdʬZÂÖÍ5 ç¹°A¡ƒû§£ ë«ZÒÉ63`‚͘ÎS¬Ò3Ç1ÙÕû$Ù€™è…š !̲%'cÑíS]  Œ]¥6ç#Æ"(Ç” ¬ NLiND[[.OŒ1<ÉZFÍ¡Öo‡q“š²­ß„ (ßïê7µ ôÓ­…ï\¿óÖ³ŽA ›À¬m“àYðqµöÂxTµÛâlkÙuäùÇ"eœºƒ}7( =kS!™u¯·y>¨Å[’Ì@r& .ÏOÍ& H/?¼‡5aš rØŽ©EÆ+êÇó”=‚Y¥Üf9íFùá2ô‹bÛ}ÓlmnüµXýMµÇTåþMgK·^zq½Í–*f¹—æç»4ÌaYS§ýn”v°V^¾í›Ò„ ŽÄPÙ¦¡ß[ªb&Øw®×«ÜÝ€tŠÃCñ™‚xoô±Ã8ƒ²Ò…Òèíëò éì|Î>h £®bŒñöEœ¢\¶ÍR׈‚b‚'S€V td2qŒo™ŒiÇÆÉA„5‡a¹wÜÞ¯~Œ½è> ³ÝÌ“(ÓîV(Øq,¨pmÞ“³™Ã2íR²#©!ŒŠùi%Èt2õ!\o#/OÒõ¡0&3‹éa'Íâe\H,”kÏ OÆ^žÐ.. z'´õ6·E¾ óD£c‚c/b™ùuGËˉUw÷’‡:M8˜P +¹£ f YºÕ2Lì‡r¬¿é÷y¿§É*ïðNeïQå„…smE'F Ê€f3uñÍ”õX _á@Üb‘vÇuõtjz¯2™¨(ÆîClKräÈÓ+ MM–KPHwø"O“:´ï¢Zwmq¬/ç’ØT1íõhgaŒ½ÐÍÖ“ÌIjúÛô¶°šöµÚ_yݹI¢ûŽ›¬®|XãÌÊ‹1lasLÌëF­! ò!‚$›0íd¼‘Î o”<ŤÎË * s™ 6÷…gÒI":ÀþŒBâm!­µla.昃秂Kã¶uùüU…òXà_ ìr»#©`óºyo˜ÈBÄflnÚºw/ìaȦѼü%LcÐú|Rj½ùWz0¢%‚W 0-8JAæXbK[{áRôlüæ¨ÓbS¾þõ…/´F{æc]ÃîµÔô…ž¾úÝ F:­9 i;eð{‰‰†ø³õlûþå‚9v‡×½˜¾Á(ÀÒ¯™€Óiƒ¥ïFVæLô@¿»Æ‹±ÓJEô‹ Ò¢#y¨±ÑÀöÂ;½¼xàÞ‘§/ž·­Ñ1RÝYÁ68¬¾l(v¾ÿþù(Œ·5j‰?²­q°ËÕŽú/+üµß%<ë†uB rKýj] šƒ0ÂóÆû œÃYÈTvñÈ|e4YåÙ‡E¢É¢^ꫤѭÿBXHp9‚HÞJ£±@!ÄâTâá+/CAëÿµIHkäÒÉ!Öï=Âo¶G8T¬ ÕjE)äAçʲ¬aä¸X¬®^]è·¯^ýPK ‡›Qspread/UT ™®è_o{`ux èèPKyy›QÖ [spread/spread.svgUT %–è_(®è_ux èèí\Yoã8~ï_!¸±˜Ö¢yÎ1ØEcôìÃöììñ²P$:Ñ´,²œ£ýeË:Ýq'v¦gIl²(«ê«*éœ}7O¼›/ã,=„GžMÃ,ŠÓ«óÑ?þÁ×#oYi$YjÏGi6úþâÍÙòæêçy08]N£ð|t]‹éd²Xå Êò«INlbç6-–‚ÈdT“‡5y˜Û ˆol˜ÍçYº,G¦Ë· â<šm©oooÑ-+‰ˆ1f‚é„R(üå}Zw~{(ð84”bŒ'ÐWSîG5]‚Tð³%¯Ð2[å¡Á8‹R[LÞÿü~ÛécQã1qúi Ûšµj\K ˜Ûå"írRµ—ão㨸> ŒË×6¾º.ÎGló9ŽÎGÀ1-?TÓO·ºÅˆ­»ªgN›jGÄ{Ç.Cj5a31ö(¦ØÇÆÇê¤Ô2‘ÖQ:†aîh3BNh@qÙÙÒQ®9sŸxÙ]ó ÿdóu'<ª¸O`|sÌ’ìvz/ãËÄžŽ*7þ/yžÝ’Ÿlm›s;û·[n¶ü§Ý’å1Øàù(XYý¼JË" ?íxú–(^–dç£"_ÙÍ ` ‹ ¸®h=¯Èƒt 09„AbßaÄO¼<+‚¾#Ÿ¬)’ò#ã“Q=v³þYœ$~¾JìÔÞØ4‹¢Óe‘gŸìô-._›~iS²(ª† l%.î§äÔ=bK^>oÛטÖû“BÃ÷ÁðÎå[ŸP$ÍëÖŠô³×xˆ“šadäM6z¬;¨å]BÿÐú º6Zíê½e빘 tô€Y=RÁÕza Ü“å{dXÉ>ï¿ÃÞ¡žÓ§k4hó Èã»wà†ôø—oüµ ÅXKŸS}· êŽ8²1ÚoKÑ”_Ñ”¿*ú·V4?Yѽî0K:Î’Ûà~ù%!ô«%üæ–@ø±!sÐWE?!EL¢~£$í±¨aYœÍÌýo%·€}ùDߨ­5T;óâÞUÚ¤l`ƒ{³øßèÜ›zD”¿Iî7$°~øƒi>—Õ‰/=hÄVu§ç#*6m“; Ô+㸖×VÞFµs€‘pëAlóÚ)X))Å“d´u÷1iíqÐüe À4¢ÆK€¯ÿx"xþÒ’KwýÚ§¸äÒYÿe•—žMwO. b¯â÷÷­¯Ê=€r,9˜êUwGæƒe„C(¯¿{|UÞ!€÷t¿ºô|óª¿#éÏgϤA_ü‘ux6qGÜå»mëÆ£›ØÞ¾Ù ä2XVò\Wrˆ,?½•¯MÇe–G6¯ºdùjumX¯Oã=ï*‡õe‰…„ 1—}o»Vqd[}›ŽìòWÈ_†zêÌxÜÎV—…ZýËë Êna/ßíüœesÇ£Ä\2nºÝ!ì˜âˆ©z£^wºÕ ˜V”w;£,\¹»%þ*‹%XÙ]oø*ÏAÜ[bù§RtãâÄv`}·bÛ´¼ÎnT[éßv‚Û8…Eû›q„K²ƒ¢šM µƒÄ@{ëßôØŽ®ypÏãÏ6ªá]»4XøWIv$Ãìo%X–×D6f}6·EEPmÕ¢ª y4›þãý[à‡áô_Yþ©’#.³,|ëÜpêÐñ,ÇݰùóÝ<ìl;ZÄnX?týØÜ®ïÛ ^:ŠÂyìM>à~t“lѺ}h\$¶n<›l¸¯0ÝX|³ôòÓUGŠIpiAÀœuy=¸Ê³ÕbžEvc£Z {¬¤ (ì¸àµÇ‹LD¬êz¼Ê¿1LBvüR’R]5‚0lž€™S^µE6σûiš¥v·7t|:ΘÔ—(QÙ<6ˆ1Îêȼ–BXÕè¹sH‚¨ó‡pp`†`¡k—ZØ»­0À4¦åM(€8¨Ýæ7u,ª•—ïa9`@ÉiÙr[²R5%qj7@œâ?­)fÁ&‚ÂæJbÁ½¯]/KÓ7Üø7—‰Cò¹ÎÃëŠýIoíÐH5$Ü¢)“Z{Œ#£ ,ßÕ¬ÕŠ¸µ®¾y³ê÷°zŸvׯ10@¸¨Àø×­ß'¿3 è¾ ‡4\Œ  Z˜¯”ÀS½yéYXyw¨ã^˜ó/ÐÖôàKðØ><-žúÕ†Ë_?haÃx‡e=zú]M8öþ^†ïN[n‡êÑóo³¾ƒ;¥Êþìù/3¹Ãäë7Aiñ…~30·ExÝnÛmEÄ5–­­”ÿ½ý5øeµIõ¿lM-Òß‹aŠŒÒZw<$4MœWfD1~¼Áà®õfïÌdÏ1¬óá>0C’4|!›S€ß~aT§ž¢wÑÕ{wöÎüt¯q£7RF´Â†f°y§R é]=>9„Á¬6:“w¦VûÎÒWÎf;Ë)o©!!ëíÿ5çò¨¥¯FÁp[÷•ˆ+Õø>P³îK%6- 1¬Çšµ I´@ŠþRê¾Ì•a­¸DA2SÞÏh»Õ/ØXªþÕ-÷9ÛÁÛW–À~Lg¼ŽðÂ`èä«À81í] CJ ñ‚``0XdëØO "±d°ܹC;ÈÝþ¾â0d•ßÄ7Aò|HP6,GFï!KD•Òd KÍ;HPÐÊM;$Pƒ8£â¥œ‡0a–‹J‚€­©þ~w üHè….oÃÜ탿åÙ-˜ç£P0›Y¹ûDpR uÄ£ð½Ä…áÒ‚ Å£ i R¦äš·,€ ¤ê¥Ü¡,3w¬%Ø0K¬÷ƒÁaîƒl`нwÙãnûá¯6ÎÕóá@ Bè±qÐø–í63RˆݸҺb$–-WUX·Ó*ÀC­«&/ œ D¥1¦ L ß+7rwÓ †Ö·§9ÜÁãþpø1 ãȦ¡ý}Ýêìœ%ºÿÓÕ9I$R#‰»âã3Ï]ª‘B`Sž$2ÂÔà9:u»®cœ£b¤µâXï8uàHÙ¸ÛŽXŒ EBJ•;d\q²ßyª4Y¢éQeá³ÞW¸Ã’Ý8¨¡\zT ¦©Ú[ßäûÃJ'KIÇî{.F2ªØŽeRÑüþÊ.{¡»þO';,ÁýÕ“ýÃo×Z8âF:¦‚ƒ¿?ëÁ*gà@ˆt÷tÀ§wY¯ísÊ„*pÇc ‘“ž„™ÁÇÔ!MÈmÅÁqr>¦”!©¥&,PðŸ„añdÐ{rŒ+:›\]¼9sß‹»xóPK V{&Q íAanalysis/UT“ãT_ux èèPK’ZQ(ÝW‘sï"¤Canalysis/data.svgUTãÀL_ux èèPK ÏzSQ íA modalities/UT“_ux èèPK«zSQ?è¾m Ð<¤F modalities/modalities.svgUTÑ’_ux èèPK}…#Q+t¼êò ÔA ¤outer.svgUT-Q_ux èèPK ‡›QíA;!spread/UT™®è_ux èèPKyy›QÖ [¤|!spread/spread.svgUT%–è_ux èèPKIÛ.simrisc-16.02.00/documentation/manual/zip/collect0000775000175000017500000000016114665030471020706 0ustar frankfrank#!/bin/bash for x in svg eps jpg do cd $x zip -mr $x.zip * mv $x.zip .. cd .. rmdir $x done simrisc-16.02.00/documentation/manual/zip/frame.svg0000664000175000017500000005543214665030471021161 0ustar frankfrank image/svg+xml FwdIterator InIterator Comparable Subtractable Incrementable ConstDereferenceable Dereferenceable OutIterator BiDirIterator RandomIterator Incrementable simrisc-16.02.00/documentation/manual/zip/install0000775000175000017500000000073614665030471020737 0ustar frankfrank#!/bin/bash cd svg eps=`find ./ -type f -name '*.eps'` for x in $eps do tar cf - $x | tar -C ../eps -xf - | exit 1 tar cf - $x | tar -C ../../latex -xf - | exit 1 jpg=${x%%eps}jpg convert $x -background white -alpha remove $jpg | exit 1 tar cf - $jpg | tar -C ../jpg -xf - | exit 1 tar cf - $jpg | tar -C ../../html -xf - | exit 1 rm $x $jpg | exit 1 done simrisc-16.02.00/documentation/manual/zip/eps.zip0000664000175000017500000010276714665030471020665 0ustar frankfrankPK U{&Q analysis/UT ’ãT_…{`ux èèPKN{&QÈ)tø¤@analysis/data.epsUT ƒãT_kuè_ux èèå[ÛnGv}ï¯è< Y÷‹°56Á8öDBæÁUÕÕ=MR¶…ÿ=kíê&yHú’<%¥>]]×]ûºvõ9ø§¯ß¼üt9ÔþÒž¨ùó¯ß|ÁÂô‡?¼¾îåöpýjnåüú0ëÐáÅ»ÛÛ«›W§§R{v]®Þ·›“ÃõÙ'û˜óÃåËm5y¸œ?ýp6[=kýʨW*ÌFNþu9ë7¯fâíÃû~y‹1åÕüú¢—ËøÙù-Zþ\.Ï> ãŸûýâÕlPõÙáÃår~yöÙá§W³Ý¬•šµ húüry}xÏ™nرŸ_~}}¸8œM^ÍËy»+ë¦ÓïçÌg7å‡>ÿ<×óËe^ú:þ…µ×ý[>nhïÑær}]>Îe´·Ãe+·GÝ~D¯›~{q~Ù<_nß5þé¾±•«£¦ï;œ_µ}9ÚÞŸßöë‹sÜŽZ—Ѻ”›ãÅHïûÃýöpT}j®ò¨º¡º}¸~Òýë/7ýª<Ú öÿ¹ÿÔÞ͡«ù²CÀ³žÁê‹Ù£(…m}5_%§YþÔ·UÞ7ÿÂJo¸ÃÛëÃß%²¢z=Ç*G•ÿLªOê/Q ‘<™û¯²¿ócaüuLò¤þ³·¨XñùãŠÏþøšl/׿ç†T^-«Ôþò®³”Ÿë#öõ­¨Û·WPŒ[ŒØ*åñÛ› úz\ÿÓ}ýÏcª·¢cï?RÐ×01ßÓ®ÿ: ©ýC$AËýöãUŸO!˜ ”û÷R¿Mÿ3 /Õ‰Rz~ÿáâK¬õ¾`ÔOór{].oÖÃõûùúNIÏ×~qÓ1ÓÏ3ZÊÅŠ¿Nêô «úEo·\‹’}²p¹8”e¾:\Ý] ÿŽíZör?t0òÁ¼Çl>Æ3÷–ŠÊ•NÏù@hiüñ]߈˜·‘O¶Ff/²ˆ*Éxáí|ï3ûßnÃsíÂØÄ:?GÌ¡´r7Ÿõv/ŧy2ÑØÎïßý–Wç„‚˜Ð#¿û+dnë?Uêÿ9EgÃÁž‘€#¸5\ŸÕ†s}ì•õhl¥½ëKÿá¼õgìzA°ûöæðá­4±×¬eü·Ë¥ÿtÿ8_tXÚ»ùâv³³û–GC(”Ó_šf<ê¹,Ëp Ûl/>¹·¾ŸÒ·^|¸y÷m¹iççÉ §ÚïŒê¨òæ¶Ü~¸y¾MæÒÆÙóŸ¿G\ǰqÿÅ5ŸŽy_nþ¾“òoŒ\°á€ ¼é·Ðûíá?ú«Ytàý»òŸÞÀŒ&­PÃh~K—çÌ Šÿ^ÞC)ï–¯ËùÖWÝwýr¨ë7ÏøüÛ}ûg€4hUÛ¿­åóËv Þ™ßMõo¼#î:ˆœž\n)૷ÙNw‚ŸO?eê•yT•’Ž«¢šO¿xT…^_W%;#^UeL_Ua`;®Òˆ§ýq™O×ÇuØÀùãº4Ø×iÐ{ù¸k×a«Çun>½~\‡uo×…ùôöQÁ¥îôõ»rýF¢ä ïÐ#ºÑM—v)mêñ9¤9˼éÖ bC@n‡i~:|âlâ(¸K)œÏy¾cFéjÖÛÜ· p”nf½ÍþÐy‡Tz›ÿ‹Y‡0êm…Og½-ñqÖc°¿./>nÓ®@Þó7Ó¿(Ä5þ²R‰w˪`cˆÎà1d½Ø,=ºmr×k!ªÃµu1„ÂêI«­ƒ*-æ¬Õ&÷¶5FûRTHÁœ®­]êµêiô³aB颖¼ª˜„J¨ÁF¬qh]¢‹É§ºª¢ühwn´{ZXƒ 2nŠku£CÞ;¸°STÊaò·v ŒŠ*šà£²UÅucÖOÓ’ôR!¬=åBP¾¸Á?ŒUšM¹µ’‰ø„þ+WŒAƒY›[\o“ÕÜ7‹¼¬Ò›„ /ŸÓ¢ûÚ¢UV×µu/ËEÕ×´šhT0y±åA™KUù…üÀʦ;¥ÁŒì1Á§ÂfŸÊ"\Ó;ö¨)§šÆR Ã,nj®9RgÖŽªÔA>ݪjôª Ô~ÑTn”>¼·L¶­‹.Ê´¸.4È€àf;i+eí.àsé¶”M¤XªŽ²uE¹X)²;p*`7Qjê¤,ÄÖkR¹6TB™Ds“ Xhä¤Ùhw¤œÌnäÙŒ8ìÛæU[e&nrí¸¬;µg/­¡¸ÔâŽ=BSH•^]6-·k®Ù–Z’ :¸g«Óq¨ÕÚ×¥BÈA˜I°`²ßµš¡×LtÑ-RHšJu=¡fêxͪM5i“šÆ6QµzX¶ç×iH‰ê369Ä1[»êÌÉqh\ŒˆB …Œ«àªh€XÔ‚«ãZ©à¸t¬Ú¥aq:k½±f0Åé@VØ`ýd &ZCyÐ2„s[Y¡!»ÒJÍ,´ÊvÓ]{ïX Þ7v¶ËÚã~æ{j©Åžsƒº%tÁ½£½EŠ Ý-­åt¯.Ø’ð²åWY¡ñpC lϨöÝõª;T$‹UC%ñŒ¸·¢*[•Ó´ì·`‘ì4,DëI9Lvƃ:5“0 ‡¬Z”Ñ]uVÝ,kÖÎôP‹èÔݦqø x «MZkè]«Ð-R1]õÖ'E_„ÍÚã'Ÿ©PÚV/ò©A£lp9ÖYJ øP!9M†w¶€‡Î@¦"@Ϻi«Hu¶ Onè¾r.EÛš_‹¯6ÆbÁžãÚ¨ÇPà‹ k•™ÊR[ŠÒMƒ*é¸úáðá›·ÑÂo"`ØàÁÅlê’kXr‡™›uQn9¥ˆ€›^'ÌÒLZ€°Â.öÍ„l›—€´+tå”N FÐQZP‚BÓ\Í”;QŠðIµˆãw0§"æä`ÇÌií¸C@«†e‚äÁö:%|@pXXÕCyÊö³Úµ·ì£…³ØƒëS†·®¶!bUëUF pKñ~YÁÞ2ô¶Á{è¹³¾4h@E,^Ü'Ë¥ B£4¹¶§m1ö·³n<ÃnȯHÁ²Dð,gv@õòýúUè—àqa¤º“&|ÂM  œl÷Ž©íºÇÑI B‘¡ÂT²vsÈ MðY lš¢ìw".ÊÓuàÒ¸ zà™ü6mBp^U‡¬JXc•ÆeºvËðäN4¢ÿO"1¢DØÄÈ}/C2¦Á™·¶Tèy‹Á»ÀKS5†s2[¿aI™â§”2”óß}¡UX‡ØÑM¥ô_Z•áÏœ¥ 5_vÁqtÁM›´,!‘£¦[â4|vªàÖ !&¥P0®C¹3JÑí]0b¢m”½”ì8b"Í·U$;x6 Â3qÚ##ɬ)¶Ø2T“qÑx = à‡[Oœ{^s¯Ï zG\¿M·]‡‚B×G\ ¼omPzWD-ÄIòU•ŒR ©é Þ­Þl,-|‚ŠF¨-êEôÜx ¬ƒ7að¤ ÈeˆaÄIëËÈœuØ;¯f$z  ¬ÜáÁfBöˆRp[ËZZ‚f(JM5Ùñ"•Ö*¼A²)1G ½€PàkŸ|Yé°rŽÊ¨…áî4I—ˆ¿SI`]`Pª¦›—ñÐvÿ×FÈØÎ˜n˜thS‡#£í5aÁº£ *[¶!J>©‰Aà"N@€Ê‘y”ÐØÚ{ƒ1^3œu¥ƒ>2+±+à—<ÐÌŽ ÈÄÈJ ЏìVËÌ CDj†“øŠ,·ø3¼Ý‹âpƒ#.Ý—•5qÁdÀ³Š`­‘ÃLþÖ•% ‡Ô.äZøj+öð9Àêz`Þפéú*à º‡Í×ʲ¤L:˜q• ¹"_ðA0òð‡¤1ñ“a_ÓßBŠaÌ'‹'Ѱ–7Mèdàà¢f´c–‹ìµ›c¤k¼KÄ:±Ùî>GàÏaØGùúÜ™”øÅ<“+ìÅ ÃPÇôÎŒÀ'»%& Šºâ¯µˆ` ‘'X`]‰%N[!­K¢ªý`*˜ŒœJ.@$ˆ· (ÛvWûó¨8,PQyÆ *I‚J'×$Â>S, + #ÖÝ`³ðM3ÿí{P± )"oHͽÿdø·[ ¶ùU¤Œe„±–-YvT Ïvnd8š8Dm‚Š$ï*¸µÔ©£ILÚ=Õ€ªXÏÂŽJ^ƒè¯ÒJLÛî=¬1¶ 1ðÈë(Oðö8Kgɦ£4a@ÌŒ²Cäñ) 6ˆiü@˜óì•|ì(§‰ibPÚUÆ ‡‰ÂQž0@¨ßAè¬÷Rä=F@®#$õ!0,jAÓá SWX±˜ÂÂ#ë»Ä'3ñ!öDŸ²»Àãh±>ÈN ±¡ËæQ¢£¦3OqõƒD$uì+ÜöÚ×q¸Ã$Þ ƒ È!—„ˆPx$'K#ó6…Ž ˜Å{¨?ñ63¼Ý’Y¼^§ÅºÄÈÂ#‹mRvñžgfaØF"?ýžGІ~y!¾~ N< D'hrN`i¾*JL'’um¸?WáH ¤š$øTŸÙ„‰Yß½›öxui Sî¹ÑC‡ ÷I1H6[ ³3ÊÕK5±{j?4›Èl?r³»ÓÜ—›­*XÇ^ИÉ* ú€à‚2`DHÁÂ6ðÇ.:Aêµ–ºŸ%Ž ÄØí(φ<3Ž~žk2ÿ¹;E,÷§ˆ÷GˆÉÇç§±žö-QR€u?*wdž‰Ç†#˜ ¥ãdö×Á÷¡}ÊD·Z2"`‡¦‰ê€€*¸<ÏsqÑW¯rxüÁ¹MU´9̤܎„yDý“ Êø£( wyÃÍ–ÃÜ6y˜Yäçtü(Oi»ûGwÔ0Cx½‡GÙ‚Õ †Q ®PXGÔ‹5¥&F ãSZÇÎÉx²>Iê×6{FLmb¸‰°$€U`QIˆÂÓ„&hì –gñ:Žx€‰y" AÒ)Ï‚k†‡¾„NÀqÈ»àn*R%pd1@²‹_SZÈ~ ^F£ÒWäÐ/˜QÚ_•0T-’òhÕÉÑöÄá3ÌccYüß kÐ4=5ú ‘$Cp!T+âu÷„¼]°®&ƒªˆ|Á=ë‘øÄ K¥êw0Eeá£n;š•oZÜî¥äÎTŸóWÚÝû±Ý]‰›Ò»ò`2ñSrfp” ?Ò¢ óXqÒ®V:NÖPwx Å“šHŠç T¡ªÓ:HkAž¹¸ V€—<Û€?̸JÀv,H^Õ’­ "6˜axÂ9^™ð2ÏÆ”4M„D,áÀ%¾ò(JAÌ¥»qÓ†xèüˆÜ`\P/@; ÀÕÐq1…Qƒx’ƒ–o¨FŠ  º€¥ˆ‚€ôø ­[fk<Æ&ã Žgo–‰¦®>_˜ª„ճâˆdÜ|wyR<ãÔâ°hmðžQƒé¿ ŒÏ÷G–=1¬®<&Àµ‚H¾PÂ…<–Up­4>c@kàbèPâË@ð1a\ Ï ®Ž ™»bø¨’‰‚ ¹€2dfWC鸘Éë¶j½àZq´a‘ TYzÑ_ÐB³|š)[ y[´rÍ;Â0€žÊ—c¾óèJ-Å’‹K)€!Îõµ!c%¿w@—亗˜Àó%o+‚<ó˜pk0[Ç(møøªò©2^–x€n›nÚï©h7‹àq¾`.²ò>Y(w´E»S¼·¥Œ»ÖÛ½¦±M³™¦uƒÝNºí;/~wwkÂn¯Û·vâ˜XsûŽK®û‚£¡lÊ2žëâ6Þ …|¥ý 5ò™6©»|)çM¢JÎÒx20žè ÜaŽ*ĉV/»&kðÁ=;ÁîÙ쥓“O+ŒÔkvZ™?ؾ¦¨åûÊ^_›±Ð5~¶•!°Nr+Òœ-ËÄ]¶G© \µûî<$Ú½ tÛ”¬³Ývßç»å<“<À°e0£ rN±tne‘•—&õU³¾ÀQòm€O5ðÆôK˜¤ ð¢€<±l»ð4Ñ/V°Œì]ʲd“Ͷ.Ÿ²dkS«ºCü²¶”m+¤¬e© ‰GF¾~¥yz5ál“Eš‘OY¤©‰·*«TY¥.ò)“W‘]eÊckNbðU©©FlÔWÙ(Ê`p’J<Ê{äP½ Ì$Wð’G Ì0(Í*UÆ […¢*UÙvA.#la~įžTN_ĺZ ˜î¥ÎJÙ–<Ø]2åW„²"²/A¶Y¼t“• üÊ ÏøGÙ-S«m†›…5¹g&frL Õ›[æ÷E[qX®™gt^ꬔ-ì”d¡$SßÁ£,IÙfŸÊĵ²¨cv™Ç§Hâ`;VÊ6n†o†Èî,¡xÂÐ k„DJBÜš‚ÔÉ"A¶dkA”5ð}p—BÓxœ'Ûô2¿Ò!ÖÄoåyQH)[u Òx~ßÊzYÄû±mÜXçätÐ*yïä=_z[oÄ#Ñð^^ËŒ|ínÉV¥lH¹‡Œ™œPæŠËÒ‘•å…J)u 4D`¢ .P#襓í;+ “ç8x† ÈÕµ«"Ut°B Ü(3woÅMÂÁ5¤^ê¬å› ~ ¤‰C –¬<$‘¡"¨RÄPäÜä¿bDz¥ÎòhŸ**uVÊ4tÉ@»5|ñÇ"%)Ëù©Ô)v‘²5ü–Ä`:'’²5"AÆX¨ð¦òûü¾ž—J+ek’‰Ò%Ñl¤l -‚ße Ü–”­¾QÃoyɑϑxDʉx@`‘QóI¢Ðâó¤luº¨E’ºJ?ž!Ù‰_è“&á™N2hÓ--”#8BÎ ¯aD‘µP¤…"ÑÊ Fœ#/)^©ãh @ðÄØ¢S<™âÉ¿=ç!'—:«Dµ”ø<€=yHc:%ÎO‰ôÎÜø¨ ZÅï*mš¥„.BziGÝÄwò­QÑ0GpÒÉ'…×ÿÞ¿é¿;àÿÕdrVò¿’²ÿ“1sù×iûíÈúR½Tûïèä'}üéü²Ë]®Wã÷1û`ÆÓþûþF÷Õ¬åGºãç´¨xØøë?ƽïý½4æˆ63_÷vËßWNã0/yÓ.Ïíýüý¤N’W9͸t³W’†!ƒ>É3ùþ<Ä瓈éŒ9ñ1a֩ωFWë1Š_Æ{,î5•+½8Ÿó‰ÐžÒøý›¾1oO>Û™uºHU’ç…·×ð½ïÙÿvžë ŒM¬óûˆy$”VîæË¾Ñî¥ú\"Ï&Ûùí¡ß2 ðísBELèÌïþ™ÛúÏ•úNÑåp°—$àÄnw—KE€¹;õÊztÖRßôÖ¿»ªý=vÝ쾾߿»C/Mì#¶2þá¶õŽ·óu‡¥½™¯6;;öœ=B¡¼ø¹iÆ­žKkÃ1l³}ðáÑú~zJßzýîþÍ×å¾^]%ÿ5œj4ª“Æû‡òðîþý}2‡Ô6Î>™ÿêqëÏ®ùü™›rÿ÷ÃsRÿ•gl8`C_ôèývóyRx9‹|Ü¿)ÿõî ˜Ñ¤õ jø=º_Óå93ˆbÖ(åñ¡ÑóY¹ÚƪãÐO‡º~ )ÐñŒÏ¯Žý¯iЫ¶[Ï'·uO¼30¶óyã=ñ8@ìàÅîvÿ@¿}÷0œéô8À©ùÅÛŸzÝ×xÒ¥·®»«Ë7ç}}ýîjßNÛÚ_6E;¿øÃYSœbNš’™_|~Ö保O›2,§MZaí¼ ¤÷ó6¬°ž·ùùÅÕy[šŠÎÚò uÚMx±?oÉwçmXãþ¼ lz8oÃÞÞµ¬ñ£´½øèM¹ûBBìýlÌPBúàM"VŒ¨Ge?›.´£Rà¶7èçGå U*súZ©|>çQù˜°ašYos߃ÀQë³¶˜©·é_ÞÚQ¿t8`5½­ônÖÛRwÌŽã‡Ò™mÑM×ÌX¹Ãm"§hûÛë7RVüùËéß`†Y©Ä«eS°1Dgp²n6ˈu Pzí!DbhQ[C(l†±oTYÐYcÁ-&»̶F•K5¤àƒN/¶÷Ð¥]ëÅq6L CTË«ŠÉŽc RÆ¡·E“ï ¼Ú(ýæ°Ÿ°Äl†i1Îa£Ð×Ð‚Ž Ï9L¢ýu£À¨¨¢ >*»¨¸nójÓÝ4ž—‰°­Öžƒr!(_ÜàžUš7U¹u!ñIæø¸ât˜µºæz¬&»Ye±J[] xùÔ˜Ã×­²zYk÷²\T}M«‰F“‡k”½*ß¼âêjY²ø¢‰X?*ÌŠÁõÃÅ]V âŠ_&v£3qC…¢_”Ç $À``ÐØ íªhŠÅ©¦Ai¯,˜+ÚÌÝ™ÕÖ©rsfkTnñÖc}ôúÞäšÎ®h÷٘ŀ•ËiߘŽÅã$Џ‚©=6áðˆUÅePÀŠ÷ ›´ŒŽÒŒØ.¤g„<ᣀƒà46 ±I‹© ‰ÊK}Àœ3IeL¥-îAEòYåàU‚æçˆ{L™“ž”NMÙì•ΜÈù†4“½"QŠBsjÖ+[›Ò‘ee½B¾q­ËÚ'\%¹V2â."Ðë:˜­ÖÒêΣ£ƒµÑ£PçP4µ»ìI…%k [`,KÒ&U-¡eõPæ×i“…%zÙë¸rfe¬]uŽ ô +QJF)( Ú+® ÛP+-EÇE›®`Y‹4±Y(¯ö“v:X në­3ÁDk”è"öeÍc²³Ù•Z–ì³Åµf»²Ó¬½w¬·4áÊѶ‹5×ÜcO5ÕØs®k¯ Cqíè®l¡ÎSdQ:ç夜§Ž»á#©ã69n$Ћi‡+” UÕ—„8 °œN ÁCEŠX-à+ìbzd,ö4Ì¢W²· ƒñ /°vÝ1S¯:t]øé,Ô¸SuŒ™h¸¤‰|ƒâêg<$ß`,И´$[+t ì‚ö,±.zm5–˜M6SI%±Rèë`B¾¯¹×’‚ƒ÷ÔΉç’âвvíë¾b–qÝx¶l<ƒ>DP0pC ´ØDp êîdl‡4<‹f]àC–l,tSC7#פÉФš¸ÐLw"¼ CQëpš†ž~es7à%øºÖ¡º5ôNž8DФŽÐF£¬Vœ6cáX±k8ÝQàBé³éf 6¤á['ÝQYá{ý—á1tKR„%¸"¼1ô?e%3úÓe'+sŸ®…éO– b ¬kÀ Îë5J¤ÂCqÖ)‰sCuçhgOTm6žj”ÅAXyT!x zOxx½išY`;¥&Öœ—,Úµ.5¥Býjæ Hô‰Kð.ø¥û²ÒNÍd-PÃBûnyq€umI—∆ª¶ bâšÓM/Ñ-®#Þ3¼ _§áia’Ó´P¿%"Á€œøPƒ‰QÒŒKÊãê=7 ò Éc`ÑÄ݉;ÖÜç§¼ÁéÊÇoˆV:Ô¸# i*:e5 %Nhj«¨è Ç mìæW „Ù„¢7ÑŒƒ­Á3ít m˜¶Â(ïz>ðf Ìõ3Ì Z¼¹*Ðç%XÚBx@× 2`OA€HCÅ_1(ÁÝcÚAsuãÓš£aѱû™6‹S‹)+µõà« y]Dß ¤è×Ð8+¦‚˜°öäÝí´´¥5_L" ð”IëÚŠJû,ymF!¤'¸whãá[‡+‡Hì ¬!He†dœÄl#žñI3º— ÉÂñà“µ†Z…QwwEÆÖIB¨ášE†eÃÐe¡~ð‘* *ˆzåNÑã ºs b™ü¨`Ó~ñI‚ÈÂPn'ØÀàí ól¯ˆG0Ål =Û¹?ûMêxÏ;Lj²”žH«"ÿ¨-Û°à ü §°4x‹æxé°aÇŒR€ ØÑ` ”ÀœŒ°ypƒ¨±âœBˆŽTE˜îHî LjA€PŠZ‰ø t×ÐÝ* „û 7[Ð<¯*6€Šnø9ð_À Š  <¢z± ¥Ú4)¦2e•¨¯GѦ1q²bš@OPTÂêÙaQeó>›  òÔz8<ø, ¸@TÀ}”ˆp‡Rp¿ T ÆŽ§® ìY˜œNȉÐÁPŽØ 3|‚%&eàcÂ(÷ ¥£Àÿª ç4è6 ¬ÀzKeIª£Ðë üÕPV&T Ï¿[[TXiÃÖ¨âÓîöìb² ÐAïá&)HºPª W±äâr5Øœëk…SÃ6J:•'Ï$3¡"œ¢ÜíH*`N’P0A#X«qeòÂxG)yöhífíðÙ¦DÛtâÅéT2'…ÒÒåàŒáˆÕI~‚LEoù H¼Ø0«áȦc²²nÉ ëPÞk`4!™bd* áÜ¢=¡¥òbT¼ "ÃF± Ùa'cª`F"%‚ â8:&Ar™0Aóa‘†ˆú‚äJ;tÇ Þ÷¸"J°]”˜qͤuݤ­I™Æˆ –aÍ&úc ÌU @`4ÔúGÂ5´à ÂöêJZbjµ¡N•¸,€Z"15`˜ÐAdáÈA#R›‚áÊ¿…–RC3.¾)%›ì”üc¨ß¸>YFúÎH_˜>ë-Û”H%nS=ºM5Üé„òˆ‰7{L<¨Ï1ä"g@f!Y³-þÓ(‚Rl%‰¥TnøfFÐ6†òB›Dv5à]iz•BDf‰'Qˆ.ŠêÑPMߘéøAA7žÿIîõ1%ƒÒÂÂù™§á÷DzÏZx®@$·É;Šb°î&Âha: v±¹åVìÚ‚²%»L‹r+Ý8(Er‡)–/HX‘|üšŠHÝ€'`• ‰ØV`9:{8†E§\x ÑŒA­ ©‡UX‹ÄLòÉüáƒm$¸†oÁоzVÞ£…'˜¹#GóJPåDà\ø” ˆ°MÆBêòЊdŸ€ÐhÊ©6€:ƒ4Cð[ÝÜAwb0ù(du‡<ðÌ3äÓ<;åèOÁƒ›S¯!=xРÛôV =UÃàeA©€S¥ ,(lvÄJà1xEZm€Ëp¸Q”ÕÐ03̾ üA‚‡ ‚¸ˆÒ´y„TFU‘Ðm±#:>˜ŽFrA×-"µå!‰¿ :#Ð'rx”ˆm@ˆ2KVf²$$0Ÿ !*Ü2Cn¢×ÍK‰b̈TÁë-ùxTa“t‰[ÈW¦-/±€|½$L6å€ÜÂÂ5@5cCâT üOCÔà à!RøÔUí!V\ X4"3@.WdL–ëBjìÒ±¢‡{CÖïéªWƒ(”Lî¥ê#$}zz@LJM–„…9ƒ !p9ƒí ÎÚk_2]Of0lUEÞÁT¸……x 1@{Ip`}<´q^×ãaM=¨æ“C¨«™/Æ9|êCâ;QNºAë`zºÁm4ð€ia r`{Pí¡y-‚Ð:´1)bŠ Ð38,ûNˆøÿ(µ¨Y¦:å°‡9ÔQÈ›¸Nk…J#«_b(5""W HÎË 4©vz»þ˜â\ Oxh±b ”ÂA–°™IÎtx¢)gø3žÁÉ76o6L¥©Ç³ cg‡S3nµŽ£àþ›†…¨ ÁºCñÀ¦j!K…lÓ Zº,eA£ôq|À0bƆZí"|CZ6޼˜ap­ÂзÁ9‹qJÊd¹¹‡aLNGŒ°ùé!Tw¶hs5‹ƒ#‡í2ÞŒS¨qðüôlùùQ4GOØd‚ý 6žR9»èè½à+TƒXq£×¼Ò)PÇxŽU•ƒÄ²½[œ]2ùÆ ‚Žaõ%ÃÛÒéD9wÏP(€E,Û6Ü6=9x“8Ù\=x^žÌóÀªíØðÀïwŒdÀŸI•^˜)Dqƒeðæê”ÓBƒÒuYúÚˆŸÃ¡Îþxj…}xÑG/ÀÃ_è;³·aQÜÔÂÌ@[Ùœ8‘¡>µéiµ$1Ü=!à1ä„;ª(Øï6Sö9•NJƒv‹:¿'€@¦1˜-Kv.;Ìy®KJäõ“k‡<áBô cÁ&Wyë¢åD²ÎÐm‹‘3!ªäŠÉlõ‚â$­d¨áË#¸P…g ü@Ûˆ–C³ñ(ß™`%Û€³Û¶³½­æNÎ*†JZ YCÊÏаJ´Aæ7HyL¤r…€N„ .â;áÌPó½;qæk_8*g—— "5>¸QÄ%y¿¡Âcî7„Pã Œ‹’. y4Ò¼`4ê”a”,GÈ¿:p¨kÝ&Ï<®×ñJRò{LÆ!>-`lç k‚¦Ê Rºü2ÔÄÂí§Â+S•<ϱ[x$ÇíÊ¡óQlÜ0(Ïåq¡À½˜‡ôE^–näóýµHp ŒÁ Ê«”ü˜Š|„&àÊmBé(-+ä} ÆÖMú#(ƒ1 ؈ˆ± ‰±B_®Â¦œ€.i)ßd™X¨z"e€z0>lÒ„Žv¸m7y•L?–ç©ü‚¿ÆD$>Ûx륢——S?#ð¡NFÞÄó­šËÁÉ!²x¤ˆê°œfê/÷Ê<Ñp5y^ZDö» ú®æ ²Lm|¦ÎÐ@¯€7)ÀuÛõxôù“ÓÏ=Úe]¦†¤ ¯1“<£–/*Ü6Îú4æCç6|LäÇÀ“²¤ÜyٺЍ85!é(ðø% ¿Ó®{hÀZZƒï6t«áA§÷sxñM[(½åžâtÞ€D:U9¿ÎíÚ·ïÀ<.r\0Ä݆žÁçËx„œ>ðž?¦ ›æ¾`†£t=cpcP ë¥Â~; ®èpàOoL“AþèÅç!>ÀÈyõ´Nh–a‚[1a$·áô\·’‰XqÍ4„i½œ&¸„㤟P†zÓ–ét ã G›ª+y»;œÀàÝïØ­§ˆr& ´½ ŒÛ±fl㞈õôq-Ë·lb\†Vu ŸuMƒ²¶Mض7›}£°‡zRèDé‰åNì3£;“’m2§ÇK題„†/=Á7dëÊ®|«cW¾®±kB²o×}µ+Oçíêe rz„ºÕÊ #ZñtÅö5€ O\Œ;~éÉBùY)œ¾Èg‘^€0e§Î·5–¹ >WE†â<°”ŽºmJ¶Y$2†R…´9ë0|yV emå­s+MVn•̶݈=â›l ‹–¤=Œé[ßRvD‰Èó3¹þieÉZ뢑JVYšuLV )«YšBâ»_ùe, J°:é‘EmðS©²È"‹,²È´4¹‘Ù‘ÝÂ¥vÉ)@ ~‘Eê#6êÙ(ꯤ wr.?ÉßÔZW~—„/ÔOi.BÑ€b¡hŠ¡¨EÊàtáKU[êTN‡K)`º—6+u[ò`wÉ”_ÊŠÈ©?½Œ’…§B6ž<º-Z¦VÛ4ŒGÈ8<÷Ìgy;Öm®yÆõ¹N| À¿ð4Z©Û̯ÑÙ,”dê;x”…"©ÛìÇRY´Iµå¹2cØ4Ü ß]‘ÝYx„´Žïq¼´ñŽ_Y\S'{¤I%9:`“H4U~D²R·© ™  I¾Ó—2\êȨ¶1ìÙ´é–4Z©Û$ Eú`¤GtLê6 µI$…Ô$à£0“7ø©ÆÅÓø(RbÊQôï?ñÉoÙÈÃhÅgDGöLQL6 ¯¢–OY5ȪA Y  ¢Ò* ×àC¡áYI4 qÚºDg‚¬d‹A¶DYƒ¦ƒ ŠKùNª¼pÙËô^(‡Xá ¡ K$ÛG$dÐÏ/µY/‹x?¶ Ûœœ4XÉr½ç÷¬ç÷ì„HÇwˆÞ c™ñ€¥ƒ±Ýï´ÈV¥nHɉ<ã„2W\–q€Ø9n•R­ãùŠu¢ .P%(¦“í;+•wÂkK.®?‘ob€JàFùòI2I†ƒƒÁÛ¬å ž+WqÄš¼F‘'E 6M¡ã›z®ƒd‘èÖK›å‘UTÚ¬Ô-ˆè’^p"f÷ì!±¥åYŒ42©¶RGnnx<â ¿1i¥nM¥HQ#tÔHÔùH/mv’k’‰2$Ñl¤n -‚‡ãÛ’º5Â7#jcŒ´ë!U˜‡e†_+jlч(´8=©[]‡.j‘¤–§ù;9=Â3ÄéM·´HP¾HHäõŒ(²Š´PÄc ™Bx…¡"]¶M|«CcÄ'â+7¾¢T¢ç|3ÁÉ¥Í*Ñ-%>O E|¿ÉéäV¤ôæÆ¹<:´j¼Çƒ….9;`?ÛìvÖ#Ö¬ôÄÄ8¸äg–îßôÏNðÿj2B¼ÿ”ýߘŒ©Í¿OÛŒÖ u¡?¶”ŸšôñKµ«Û.¿ˆz»;~Duø¥Ô¸;üˆŠ?ä~9kù%÷øÍ5žvþò/¶£¿Ý::ý|×ë…;ßI]𢓙ëÍüí¤vÉ«œf\‰ºY/Iè¾»D.éw.ÚY\U˜}ÞEgfcv>&Ì;¯x^c°õxŽ/3•;V8ÁŽßnÒó÷“šÿˆòÍôåW æ6¹ùÓùÛ“pÕ›__ð‹ù/¿B²E¯Ÿ­ÝñgJ‡çã.ûÛÖüµ‡Åωûå©i< †AÏÊ2¾ŒYÝÎ9=§°>ã“)ÙÙ¤]¿‘‹Ù¾—¦_žYhš/§W¯§<„ŸgvÑ„ÖalgCcœ_ßÔWϯ×éƒO÷­\_=üøáëo¦´ËYuÜ&Øe§MöQ„"ðë¬mb–}ðéçàsZïbÈHsÞñKJóë&s¿*÷C0þÀîÃÔã.ïŒçëÎYûpZcÚAÓU¿ç£Ÿ¼ž ˆì{cð KóøÄÚ»€ÅuT»àüQXï—³÷;õ ¡IóÍŒX¥»ŒÛeØÔµ‹$ŸÏ.¼õÚ#Ýyd.\–6€´gúÏÇÛm ©^X¤=&ý6 ¤ÂX@Óa„ 0XjÊ`ûd#·œ½€)%•ç³Iè³E~ÝÆÉs4ôÜ R¼©ûÞPe†˜Ÿ‘ݯMÿÄûüœIpðÞÎÉí µ³ç¾èË>-77û×Â|?Øßì?üêõiý?g¾ÑŠùz»CzJ³Ú-èWˆ~šŒÐBË…¹$8„ ë)m±TE;-FSÁTØ 2x­ÝülêaÁÏÖzmåϤ/'ã‡ÔP]ÿ¼G­~uþ_×+ÂÎD¦F!­*Ø÷(Öß>Xß=¼»ûИúß>Å2ü_nð˜|Ìx¼…+…—áÒ·)‘µÄ¥Ýn·¤M%¿œÃÌêWü]ñÏ*(\„Ã.of#<îwh(" è‡ô2ÃrLÈCFEEm¼A±Eƒ°…!º §—àÉI“2¢ œœ…w;›”ò~¶Ž(©‹Jo*úˆØºê<”šNp«<ÑUäÃâm/Í‚¡7½0ÐþDWhØÅÝm£ØÄ@9Zì.{(´±ôÂÓ¡±!‡óÙÔ¢«Ï×#ëþ‚Âÿ‡Ê[b@ã×wåêºßñ÷ÏÊþýôßPKN{&QÔ¬“v* #L outer.epsUT ƒãT_kuè_ux èèå\Y%·u~¯_Qy00 Ðw¸/ƒ €µˆ!Çrf?†Àb±zZîMÝ=Z`è¿çû«îÖ­ÅNdZ¼Å"Yäá9ßÙX÷ê7ÿôÅÛ‹ßÎwS»°;5~öÅÛß±2üæ7Ÿ<´òt÷ðf¬åêánÔ;0àÕû§§ûÇ7¯_KëåC¹Uww—mÏ\ÝÝ~ZžÚ›ñÝûãÛv?ŽvÔáso´2œü‹rÙߌÕOïꇛvû„gÊ›ñ“ëVnãÇWOèù¼Ü^~ÀÀÏÛ·íúÍhÐôñ݇Ûùêöòã»ïß`Z7›F£=º>»?¹»áLØ.¯n¿x¸»¾»¼ç«ú4Nl^3þm¼|,ß¶ñÇqººÇ¹-Ãë?±õ¡=b˧õ=a,凱ôþzw[ËÓɰï0ê±=]_Ý¶ï®æ§÷'¿?tÖrÒõõ¡ë뻫ۓ¾?ô¾›«§öp}…ËIïÜ{çòxºé½¹û¶=Ý4_£™«œ5W4×φ¿gûõÝc»/g›Áþÿ6¶ïëûqþp?Þ¶KÊw«¯GªTÖõÕøÐ—Fù§úskã¡û'VzË>=ÜýõT" š—+¬rÒøÏ¤êîYû-š!’gsÿYöwu*Œ?÷IžµüíÇ Ÿ7|üé'd{yøëÒx?/Òzòôöƒ¥þÒѯ¯n_ÝOxbm”Û¯~XeЖÓöïí?ö©Þ ÆÞß}GA?@Aú|ÏW8^ÿ0 ©ýM$AËõé‡û6¾†H ‚RoßHû:ý¨\¨Rz¼ùp ñö%–;uSðÔ÷ãüôPn—»‡›ñaÒ«¥]?6Ìô㈞r}êÏ“:¼ÀªvÝê×¢dŸ-\®ïÊ<ÞßÝï‹Âß©^Ë^vFÍ{ÊæSa¼ qïT®ôú|Î#¡ÓøÝû¶1®O>Û™uºÈ,P’ç…·×°½/ì½t˵ cëø1{B©ån¼l+í^ªÏ%òl¢¾_¿Ú-ïaÓ» ÙÝŸ!s]ÿ9¨ÿqŠ.»½$'píx¸œ*ÌéUÖ½³–ú¾ÍíÛ«Ú^ÐëÎî«Ç»襊}ÂVzÀ»Û÷‡ÛñºAÓÞ×O«žzΡP^ÿÔ4ýVež»aXg{õÑAû~<¦o¹þðøþ«òX¯®’ÿ Fµí•ê¤ññ©<}x|¹OæÚÊÙ£ù¯nà×ñX¿þäšÏŸ¹)Ýž“ú/<+qÁ¬QÁÛöܯ7ÿѺÞŒ‚OÛ×å??¼… ZŸD ¿C÷;š¡NÊÇÏ Ã,ÕÍ®ÕÁj²›U‹ &ÐãåScZ _j´Êêi©ÍËrQµ%-&LîB¬¹Sæ ?{Òˆu¼Pa2êIc*­«²–\À¦5&nø#fiBÆgl!"é۱ġxÐÏÚÚNh«¹eæ¸T¿p¹¥Ì¾”Î’¨—¥a¦èQ¸ý ”ir<‹Ã”5†MYÕ)i“ªNŠ-‹‡iÂüÞy:m‹ëÔiÕ븶Dk9;J[#JBÉ(eB{Å$ª†²Pˆ(:NDªtÖzàÆXA{ítÀ Ö[g‚‰7XFéköu…ŽìJ-SöÙâZ³õ ÁÅÖ°T޶óÒ"¸•[l©¦[Îui5a® Ý5‚+£!~M‰ ™SYšÂ:a&ׇ •m9i@…ÒW¯Ò”VAÇ ÜV=Cjrqû ÎDÍA³05Ç æß⪰Ÿ­ƒ!(ª¥†ÎêÖP”ž©@Â[´“o+ yeðœðОóP°SžÀ¸ Â*6³à_­qš4øœJÌ&›÷×´Ì¥AeK)ä/mç€)SŽ5.S‹X-•7E&æ®õQχ”$•4ð'´` ÆxUFRÑ-à9Yw•ÛÀÁ¤‚gáJð&(;6ºqu©üɡܕk°ÕV²×V2ØvíŒÈd0rñ(%£”µL‹q3Ê‚ -XµmèìÖdkÂ1£ªåHP€2Ùùª’Ê2µ)G}ZJZL3k W̱” † ÇÃâ›YfO›ÒŠÎ`vqË ;Ê{3äiZŠ•5øë^´S·f†*4SR…@"x ÝZ³Â6Uɨ‚ ‚JýTt²¡h4,G„u£m±ÃŒ‡^`ƒ“vΛÕÂUסã|È›Lªà}©Ý°ÔÐÍ GH1]8ÄÂb( …Ù]Ìa!½…Ú¸81î:l°# #¬ `b œ0lÒö¢$¯Á$¨tsI0ä(:ysn"DOOeÍ£u9õéRçK TW”% ¬ÑP½DqiX¢«óK@k&S/ÚÀ™8‹Dõ ÈéjMÓˆN°r5’‚2í1ºÌÃVjÒaÉ€ÑÃ4K5¥Rë´Ìâ¡Ú95š/ ­(VCt1ÑøÎy"L+डú!@ÛŠ™æŠX J“i¦•7?´á«v_­cÆv޲™p+2Á‚M4 UX=hç€Vñ9¶ÆÕ#ŠB³›OdšC/&n†“?r‹«Š ÆVÍýò³.´> ¤å3säÂfÒ-#H5ƒÖ,7Æ`€qi`Ô &ZD¦\Û[èöFÇm~¼Û1ã{ƒ¡à™¯ 1ØÅýkíDpS‚â×ìK¥Ipf²ÑUWˆ™ºßmAF ··]õ}pméBYã'FM=61]ñ+ÌšÓƒØV-A‰X#‘ýI?ŠŒ0ÂÞEÁf™ékÑ“†íׇÇL![—ò"ß`Qð5ŠK²µP¾3x&ÜÚsQ¬Æj&o=EŸopýóÙ]:n=º¢ÝçÁ˜‰®þ™"ÀÎó(:^£8ð Ë(¨1«R £DT3ÊX†ÆpšÏŠˆ\ƒ½°,À>D«kaV¬ ì¹J‹NèO qÍ@W=b¡1Zœö¬ }p‰Îž¦ ‘ Ôšg“à”ý’ÒLö·e&xK[ ž°&>m‰…~Y'ÁŒ(zddsÄÌæ®|¢xƒšÉF<ã=ñƒ‚§<٤±öu¥ãôbÝfôÅè Ö”€F0<Á8CXš%¢C̈뤺f.T; ?¢V¡pjGõ+Œi öŇ&ÁÚŒk–}N!ó†C>(y„œE‚Jäìÿn`ŠGׄøwòI»‰*a“ÏìÑ=k;â%i¯­Þ`Ë(ΚAÚ©;ƒïTÏ!›6@cR# ÅÂdF”,V´S3@Xà](ž0™á#fÄ.°(ذÇvQ Ò‘vÌñh„Íà83‘SˆšQ(LéHî ÖžP`ø!”¢àq™ý1Õ$Ž£–{8Í`g(BAç„R1pF ß bpA#¼¬åi¤òMUqÃL·¡,‰“ ÅÍsAeé$\Ç"Œµ‚çW «#ŒÂ†£l¾¡À5à b©æ°Z@.UŽî#® HÎ(÷Jõ˜…Q%ó>àJ@ |:ÓD ˆòQ–Äœ|L˜ 1nÍ`3Æ¢Àíª Ë‡ ê6 ,<›÷"qA†OÌ‘Í( H›Åt?‘[k0@CEÓ{´š­kCvp 6ƒÞÑ[ ®›˜ÃúÆR-róK..!•‡ÎÁT8QÓÈFWOfätˆlAUt Œ{” ¥ZX”‚2¡°U\è@5€Å(“)q¶/zàFQ$Q˜ÁX8h-Ê„RQ¨Œ«  NâaŠh¥Å*ÐU E,´Ÿ»¶´ñÐA ~YÐé/e_X‘pö(…¾e€˜€8ƒ,Ûd 1*0„gk$¹›šyrc4-ô±Ÿ×k Ý\M äÃ[*ቅ1o%ù’rÊÁ¢EX_üg´5ð? ëPƒ/0ü2æÔTm!ˆX xdhs¡Ü\¢ÅȘ © ©±SÂÞg7yºZ¤bÙ'¦;u‘GHN±§6ň‡ Çv dX·v e´”‡3,gnÉeH{‚X¢O«¬_²!¢†Ì IE&–‰äY,'=?äõde‘ù´>òpŠäã»Ê{‡òo(ŽmV"͙τîÍgB.sã¶Ô¥ˆ4Ú/ňEc BœãÒf¸ûâP=µM™‘tÄ\pgj¡ý\|Èsaþ_½°Q¶‚ ^/à’‹<…9ôHsa³]@äÔB‹lN¹G™*‚¶-áÀj"upjÎkXZDŽG5g1=c‹$á>Ïê-Lå†C.§tiûè~få,’oàQd󑫘–9hø | zbNS WÁÀ¹-ioõsÈ_y0±§6IR›&Á,IÉ=ÜGNà^uð0k;Æ¢Ö36Û§g°k‚èñÈ…ÁŠÁ܃j¨~AõÒ#‘° Ô°o £± –»O_m¼>2Þ“êÈ„ ê 4{HšƒXýã‰ï$"'yCsð—vÕÕaµ±þØÎöðØs’@3[„À06‹°UÞ¦M¼ÂpQr °o€8ÑÅR©ÄOUÆ`…/M¯!h±Éͽ§^+ÐÖ¥õ³"d¸™!‰Ï#Ò0ݳÃ"s–>H·PPL+´"×_§µa…/¢!€zgXW'8ˆ/$˜a%¾Ý&§Ð‡@X›×qAÉ!Ñl‡>+ß&£ƒò¤¥Ð`öú`þ£ß¤”ÉEðD:×õ埓+´GŽ£™,Ãð;j‘b”èŒe%ÄrÑJnZêºCYN<¨’+&³Ážˆ‘¸BÌÍ­ÐðÓKÀb[¦]æ»B,È×¼`8ú-&TB}7nuuÜ bÅ·Û´ä Iç xye_åMãíIq.½pŒxË|‰5ÛÎ@P¢![EÄ#}wW¬`°ùE¤Æìã¬wò~Du¯‡ž)N†…2®J ¸j´Ýlóm E»ð(sêãVÈ¿`¶:£±ÓþpA®ÊmSz˜ ôG8µþŽh5A2ÝYÁ)´ž§² Uˆ%ËÎt11¥Q=¦<@Á–ié”c'IW <B#âß ©Z·ÂLlÓ"Á>.Ó)¯~Tÿºy@‰‰¤¨ €‚\# ¹êÒ²Z+N+ DIgé®´fé¬TÄ8w‘ s)êbXaÀ ¨àr 2ËA4'&| åa/fD`|X¥ "°1¡ßkxoÃ>‚•'sü&¿/ÑZx†þÂkE9ù÷‡³˜f¥Åïïr@œåš%„#ÉóÀd6õ´w8ï–y¢á$˜Ÿs̸K|£íy”ïNùLÌЀV|MÏsK¾*júï}´É²<Š !ˆ)fž\ðœö˜\:v·D ß[·>7ºçÝá¹m³<Žörëeï<¶€,VLE£ÀÖ‚‡Ý™7ÓÝÑçJ{÷8…ÒðÕ7öCó“öù’šKC–âùýç€ø ÊIhž·ƒÂõË6<¥:üë+Æ€8Hwè¹9A{äª^ü׿–âVäóû*4”®yñŒ¼hš"™ƒ+-0køu¨Ê~ùz†ò‘Æ“mŽ*„ –aÑ.1ŸÔrZ oUhÆ™*r‚€íŠ™â{ ,lÒª›NlZî C¾ëƒ{C®~rÿoûêSZ“q³¾©µOfzh!¶^Æ«õÚ¿[%¯äºöÇu¢´~)kžyÝ(kú;­â´Jkóv{¯·~©j^úD<º–k‘ÜiûjU…WÂ3àdë›ÃÜcK¡VÞ„õžŽ1«ãH¦–Ý.|a`¾ °KBHc—üZØ özãäÓÊ#íZÆðt϶‰pæy¬ƒ['àäg]è3'ù,Ò‹DŸ|`[”–ÀE›oÎ#SñÜИL1Òh›mÆÒ7+±nLá“ÞÉÎ §˜w2ËÂLqé3 ;Ì–•ïÆiÌI:BŸ~Òãg‡(nCîXG<4ó”Û3.R½ng,9§lª²ÙÚäSÖ¬µNˆ¥}•µ¥nk!e5KKH<“ô5ð±rྰ¶Ê*Õȧl¬Ê"“,2É"Ó,Ÿ2ù4É'_Á!ÅHbðÃ$«LiŠØ¨„帋SàÛ iÃ$Çaò|€=Ú P'­v‚†‰ÆNBÑ$MBQŠJöð}¿Í5qºR¥m*L÷Òf¥n‡’;»K¦üŠPVDøŒkñIE·EV.ŒËÀÅÂðº×mÑ2µZqVèŸlJrË<)–“'ܱnsÍ<ÖõY(BÖUønLÚ¬Ô-ô„ä$‰wð( ER·ÙwгÀ‰O#‘ð@w¬Ôm6Ü kÈíÜ¡‘áfÉniä­Å’ù#=6-dµ´Ø$M•_Ë@¿HVê6•¡ U¨@Ó—¤™—ºe¢*#"7™VlI›•ºMÂÏd“¤K0–Œt‰D“H4  „Øâ ðQx)u…‡qò´#>BªØfUŽ‚7¾ZSü¾*ã4¾ ±QlFtäOÂ+äÏü”Eƒ,š T¾9‚éÀó{à'*~%B"%!®=™ ‹ÙbÓ'c¾ˆHkùFª¼°ÙËô^(‡X(E¨ £X·>j¦äÞó+ŒÖ™Ìû¾o\ØÈ:Ò`I0½ç7¨¬ç7ŒC»‚ÔÐ{á+3 p´óµ¹™®Î;a*oð)¢F²"9¡Ì—åÅ=Û,ê31)mÖñ«ZÖ >]I'Àt²g%ÅòN˜ 'ÊÕµ›Dªè·B ¬(_^y+f&VC­å+3nU± >y E1Jz`ËðMé•6Ës¾á÷ÒÈÈ«ƒˆ&ù'âI lÅ¢H‰È"mŠ#¤n _Æ@ ¦1­¶rcM¥Lb"ÞÐ\YÔùX/mVêÖ$eD¢ÖHÝj)Cö¾HDÈU„oFpcŒ´ë.U£e"¾°¶ÈÙùî®uQh±y¬|™×Á¨E’Zœæ—xjÛ{„g:ÉC+¶´H_F‘—õl³ƒ$k¡H Eñ7ÀCÿ•Ö/F§±ÞŒß j—xŠ9âʰ›“”Ìøp9X·‹)Ñîú>ï¢3£1;f<­1ë ÂÃ"w¨àq½ã×fôøÝ Æß£|=|ù Pã<¸ñã7'?«7¿´ÜÛñO¿Hn2nÔ:ïR²û â.šøëèÕü‘‰Á/Ñö³sÿâœu£Õ;Ć|>X;ê´ƒ«ÿ5´a*~#䘶‹câ8÷Åéä‡Ù…ºñrøøÝv9#7Ž}мËN›ìGov<“·ytv§éÝôøîfÃ4êËðå«Ï?ÒéÕÝÝýGy÷ûá³w Їa0vÌ£ÂÌߊc«~ç€âh NMjRŠ£I»~%l´ Ù¾(…ŸŸùh›yÝßè=z5ôx4)>ÛØ«›ruûÑ»¯Š7ÎíBÒˆ‚Çv&$òS¼úím¹þáñê‘^¨¥‹ ã…Ûe¸_Pôn^½½ºùpÍÿóaFüÀ¶ùû]ÞÄ)pð;„¥9pö/_ýñÃS{¿ Ï>2æÿÿ7ã§íñêòv“€Ùe~Å4½Ä,¿£yèŸÆª]ˆ¬ g8 öe´·C\ºiâ͈{„a£Év¼–G´ÈölC´x(^ªãÃ~‡{/ãÃÎaƒÁîT;oâ0žNVÇ÷Ϧ_þ™hÓqÖ°%ßДð+OókцÃýÆj@/ž:o¸kh°ÐUn…#© K‘]sEþNóômû-(¼°CPª³Iê³EŽ8«„ÐçÜ )ím‰ðŽÎ@—öþP£Vtë ÆLºrg0YÓð>ì”Á-tBÂñïaðñl+‡OØ³Øø«èMX¼Þ¯›‘ç¹{½3é ÷€Pâfú€Î┳´€*`<Îή÷i±˜`ÇÓ9Iìù*¿Èb#ö–B¸—@–vqT>ð˜øÖb#Ò:Êm.ì`3ÈÔ‚‚Œ n —M¦¦:ZI²9hÀƒ÷ôµg3®|>]dã3'<â³6H4l^o7.So Þ :Miq'H×…gH*ÈVCFHÖJ løIap¬Ü ˜5f1ãù¬Âég+u^gž=ö"¦E‡m ÿ[AÁ ‚û¥éψ±°H>ްnÿãNu›ûâdò¿Ë©jX¾Û6°‹¢w”ü¼W…A*Œd~„¹®í~äØ×ˆç}Ùpë¨Än®ìLŒŒÏbø´Yq@ <›÷ûQŽÆ™#Ãça8@nµ¨ ¡ ÊÃX ìŸÎ& :_àçÌ7=ú±ùv–wŒ§.8)Ìã¹½À–¼³‘´aŒØkªzÅ¢ØyNö{¢žt+¸µóiň?[ê—LLvl¬8¬­_ V6[¨¨»N[!#(q” ¢ @»¶ÝŠ—díSÎ21ˆXhs”ížÍ(¬>_DXíàìa6V w¸ù´Y+û\DØaá!È€).’ƒ{Îl€ÓQtçGchA“4Åâ 6y€Ö Ò¢…‹ÖˆäñlfÒûl1r *dĵ(³G‡[­ 5˜Ã1¸EÜpÀív»U1þ„Ùøï¹G2„´èÝC¹ºnüÕ=“¤?þnø/PK ‡›Qspread/UT ™®è_…{`ux èèPK憛Q,.¯Î®%û]spread/spread.epsUT `®è_™®è_ux èèå|[o%·µæ{ýŠš‡ö¤æýÒ8`ì\ ™IÆs‚À`±XÝJÔRGRÛ ‚ü÷ù¾EÖ¾Iݶò0ƒq»öf‘,^Öõ[‹¥ý³ÿöûo®þÇz¿´+{­æ_üþ›_²0ýìg_?´òtÿðz®åæá~Ö×: Ãïžž><¾~õJjß>”ïnêãõýÃÛ/÷gnîï~^žÚëù›wóÏ[Mœuxíýkmf£ ÿ}yÛ_ÏÅŸß×ïÛÝž)¯ç¯o[¹‹_Ý<¡å·åîíGtümû®Ý¾ž ª¾ºÿx·Þܽýêþo¯g;»ÙŒ©3š~q·~}ÿž#=²c{{s÷û‡ûÛû·“WózSŸæ…uÓ«¿Îÿ˜ß>–ïÚüÏy¹¹[çµmÓ«?°ö¡=bËç õ=ZÂ\ÊßçÒÛëý]-OgݾG¯Çöt{s×¾¿YŸÞ5þæØXˇ³¦?›þ|swÖö»Þöþæ©=ÜÞàë¬uí­ky<ŸŒë}ÿ]{º?«¾E5g¹¨®¨®žuÇúÛûÇö¡\lûÿÇÜþVßÍëÇó]{ F褾=ŠRó«ù¡O9ÍòŸêÏÊcó'fú†;|z¸ÿË9G6To7˜å¬ò߸ªûgõw¨KžýŸ²¿›sfügäYýWoPZñ‹ËН~þ5É^þr¤†T~X7©={úw‡ÎR~©è×·"nß~€`<á‰Q)·ßþ}ð mçõ;Öÿ³õFdìÝý÷dô¤÷|†Óùß@fÁµçÀhù~úû‡6¿K ‚Rn•ú1ü?Q¸R×JéùýÇ[°·O±ÝcYï žúÛ¼>=”»ÇíþáýüpÒ›­Ý>6ŒôÏ-åöÅÏ/uzTí¶Õ'ÎEÎ>›¸ÜÞ—uþpÿáp)ü;×kÙËñÑNÈ“qÏÉ|ÎŒ4î •3½ºó„i§küþ]‹˜Ç“϶FbO²Š(ÉóBÛ[ØÞö?¾ºåÚ™1Ø:¿´˜ÃB©ån~ÛÆÚ½ŸsäÙ@};?~#´[ üð÷9¡ *taw?³Ì1ÿs¡þ¯¯èm7°o¹€38Þ.æáÜ*ëÞXK}×ÖöÝMm/èõ g÷íãýÇ´Ržf-=à¯ïÖö·ãí|Û iïæÛ§¡gÇ–‹GÈ”WŸ¦ß깬k7 c´/¾>¾Ü&cHiPödü›÷ðëx¬rÎçϼ/ÙŸ“ò<+¸`à€ ¾iOûqó¿[çÂëYdàçíÏå?>~5š´>C ¿Dóš¡ ÔÀ3h0[u«kuâÚ±GyYÐZe4^>5†E÷­F«¬^¶Ú¼LUÛÒf¢QÁäÎħmkV¹b”߸8¬"6§lU+VbTS‹2ºéM7¬%Ë j6Ö€¹E-lUN{Ð ƒúuÏN§ìa3\öà 3>ce©š„aøÈ¦nؽ謚YUÔÂbÐC­µr›XxmŽ;²yü“7·¹†(µ-´¦U èÑ®Üâ-ØFδ¶öZÞMÇ[ŸYŒÚ@X¿.A£lp9ÖY¿*'Óæ5 •öÚiôAmc‹7ÑXj0ÑzVZk Ö[‡:täÃrçØ¢Á—¢­ÕoÅ/6ÆbÁžãÖÖuÚZ‹¡€5*.­FSÖ¥¦˜ îL-˜1n>äµPTª·ÑBŠ >6xP1›eÍKXsƒ ™mZ•óó¡±¢C2k…jÕf….à°®Û݈5°@ÙÍ)0E¥‰M 6¡¸¢X–LNâ3.‰\Ô#Ô@;çuѶæ¬4Ym ß`Ðæ§F1S&°t_.p`)œÕ“/‘}P6Bºöt›¨ZF i± ×òêÕba4Âb½ÊP ·ï×m‰±!Èì“÷sg}©€¥ÙºÖµÙ‰7¥p \k\=¦0(cÕ®Ù;Í´±Ó ›!½h^ ËØƒÊ¤YÍ<ô€òå±ÇŠ~‹N ŸÁ®+èWAA>aU  JV¡d%õª›†ìŸú HP!*IÛ{p ÙnzJCRôŠý®ÄUy»‘·ÐM|tA n*LÕ¦®Œr -Ì)zô ì•=Œõ5ú(êÓ G(Rš aíØ‘‡$Nܶ u«u] æ5ìªÂBÑØ ïX™ÉØ3HÊŸR†Ìaxã›/T 묃ƬŽ=©0|ÎR…ªËqA;”@M]±ý°°npËÒA8Jº¥×Â'9`ËAC²e©”LÁc ÂUšÔâÄPxb @f˜ÍV²ƒVJ ®˜t©ê&œí4°Lc™îUlĤunI±Æš!šK^`/a%<ä$€n[=,qnyËmi¼‡ÙÆCª48;×¶! KPȺlÛAŠ á uÝ`w£"]U.ƒ™›7 B«·¥hÌmìPñ±¥ï´:uZÐhƒj¢ð&t’Ô;ìiØç‰nŠÔÙj·5 E¹†À,0Ai~o°^´`à“”šV­ð¾HÃ2ѨœÁŽ4”]7\)‹G½‰WòôÑ ×–àëpéä ,ûd"<½i”9ÏæÅ4gS]NÞ6\8¹6z‚àÂ|ê-ŠKĸÇ3NAE€×3k†:èè`‡Mt&th-‡#*dOEfkÝJMÐÓ AYÒ’ì‘J­ ¬ÝB'lJÌ1¨%Àø*´Ñ`: °…N .ÃÁÝUH’.%„»SàI ] OZL3 1Àƒº;¡RPÄ¡RšZäh1—ÀoK•‚Be(¡B„ð¦ÍD©©]bDºM#ª©u·d‹ÙmÞ( ƒ~§>á ?Ó‘*SWÀ;X²\á8A[–Q€KÒpÌ ÕeiÛ cÔu>¬õC» U= aÆ\'¸Ì,¸iP˜[MRT‘ ¢3G#­ÀÎlí;›ÆÖx+.Oá"‚ΑÀY\7pÜ’±p ©ÿã¨ÐIE«ÿöÌ ù¡ä‹h)Uú¬èt Çz FеxĈd€‡IGsî­»‹†œWpp\êq%\WÁµ ¾FÄï0ªáÚˆuqh# ð­ ^–þ.ÜÑšÝotã8n œ6»Rá<˜XKÍ^ 8 ¦¸“_ìláÜa3kn±%¸ÕØr®p)‰ hŠø @qÔq›Ž}øœ\O¿£ðÚ¹ˆ‹V–ì`·°$=c·p»SS w~njµýÜ„gBUÛ:ÜŽÃêÀaD߀3gèÛÛsì-÷‚½§3ðÝ[FÙÁœû”qn3¾õKô —¾`à†rš¾aÙÓ®£«û úîÐÎwh‡Os޾§søý {s£"0+ô®«ªªBÕàZpUÄQyÂGÁµàbugž6t§¸S èvç‹ràFqÖÃq[9øè|7*‘­6F1êEì˜Å$ä'@°îÚ6õ"šÂ… À*Ã82h€³ÊWÄ»ŸÁ¦ 70Y|€ê êó!… ›~8¤°ax›×`âJÊ)# ª®ø-®¨›ªæÿR @QŽ8>5UaøpƒîTh„Ep¸•†•ŒÁr]è|,2Øéó„õ-žXb3ˆç H©zcáÆR¶æƒX¡îD¯@8úÔEÍA"0Lž H4oÐX´€ÌKÕÃG¬žª£vÀ®#ð¢ô5w€^jÂW+rèî·Áü4ªÑ1ùÕ¼¸†¥1ÞêŸì̪ŽvI(+T#ËÃd%øXˆV‰‡ï´­¥QŒàQÝî¶F·\ˆÀ øZ`­bß§4ÜM»/Ýùh˜&âÖS"’† Ý,,5DòH·8héwúm¡í†j:’¯So §´ƒÌìÚ=“=^æó ‡HªéLL;`AØ$°„t#(ÙH¹º`Ïz[ëN¯¹ºAþ–§V¡¡Žt‚DÒ¹Êåi d}I9,¦æó¯ô䞘—I  ú[˜3 E` _ g*;on8iX/§ªb"ÅÙÓôd$þ!¸P ÛÈs¾­¬¾”³•P©ûJÀ¹hÒâ VP¢|†›ý–®%Ãôd‘ÊÂ’dU¢àÒDŸT6¢ol-Ë=%OcECDDëÉï ¯•Än°«tÈõBŠÄ·U¾Sÿžöº©¦CÚM5Üb]\Í&Þ¨xCT#¼k*Q"%ßeB¡`÷°gˆ.Ñ=¡Á6D€«Ãö€Ø$+×ä8­+5¾á5<€Å `¤&ð‡ÞXEò Û t†Ìà´N°'àºÎÈuÛË,©kF8ÆxÓöج枈¼hcW0€BËO'<®$:4R¨~Û:­¬§Þ‘£~9‚~QОA&¢ÛCÉ¡‹"y+éoï1v§<]óFY§±cC8ð€Êm·!ðDÊ3þ•@7Ñ`Làœ^YÒ˜;nM‰ |xB¬€4ö@—âÒ?­Ù½¾Ù&’£$Iýî&i=ÚíY± pÖ¼³=²é–Ä ù#‚WXÔ­Áõ,°±ë²BLb^[YLÚ`KUʾ%o+L˜¼IvæÜ`ÂéLb1`˜É\º!CŸ]駃ƒ¶šÑ.H4äB+bÔ-«.zEH›ÉÍ«ˆÐX3Á‡‘áÃ:·£U2GSºAaÙ˜Üê+‡X &£ìVõh&O]Žâ^J)®=%!b7À¤dzHPZÛâ«àúñ ÷\ö6·t©óäæÍâg3ô¹Ö¶1µZiJ±Xf\ìZÓZ×J Íïæ4âí 'Òkª)`Óæ—`ƒ$Æ ‹iµebF§ôàú±Ì b–nGtBD}j“(Eô¬bÎn£wêäfžm[ `J\ó7d¿G–TI | ì à a´vX†Š«ÇM܃0ªd¦ýÊ`ˆÝEÖH +t ²‡ðaá'wP ͼò“YvÁ+mxêtL.É~€«èjž'˜’$—uSMjhËñ ÜÈ8Q †¿¶ù4BfZõ…T¯ªžjšh#º¿> ³ž{p¢Ò©¦•öÄY¸i¦šài+Ó„ å5l+ôaËóM4Û EKeÈÌtbII¨GÒ‰ùYi`*üàC’8 pN1eXº’*éôÈZÌÁ&NV]ÓXnø®iH ŠSpuÛœ9:¸žŽ;qt{¬}˜®}™öÅKC;6tÛàóÑ©U§OÜš(W¹Ó[&î{a®Ø3GS¨eû¡Pgûªô™Ý×¶gÜ좂uìµMp ì†k‚æ­¤B† )X.ÐÇ®:ÁØ-KY†G_;7xÐ '6øØjá$P°D2”ZW¸³IJûȤ¨àŒ HÐAÀ„? GGWit/H©N)©òÛ£}Ù{ì4%ã <°æóàò[R¶Rsp?¡0”Ì,s3Â0ÚÚ„¾)ÕS÷’ë êxžŸÇZ´l<»ÃÅ盞‰wäﬤ ƒ@å舲Çüà4eÙÖž€h“|JàI­Ò¯— q’#\Ö'‰ Ø" 9ÊŸô’‰±ÌÆàòØTÄ_pù›i]NР ØS_˜Ç³PÑ´ntkØFÛ1¬åÖiÌ(m+Ï|}ãU-0PÝŠœ .óJ݆Uîò­x+°¯ñB|1=IËx X[C -„”nØÏl L¡àÿgê& —JÓJZ•x†×‡#F:Íí9¢ÕM=óOáh\[QºÚÓÃ#žæ·ñ&9kA8î¸Õ‰±¢†=8Øl0‹€ê$7¥´e9D ‚”šI¶¶ŽìŸ KI<:@( ÿ·‰Ù Ü‚°BcÙALVŒjßQ{qÑ6ã4õý(^vè(ìó(Àñ]×zTç¼—o+ß -'EÅ&À ìÁ¡ºxît «Ä’»JW ½¨uªM0_e°,ÚBõîŠ.Y¾‰ÆQÑE¡™^¤d%»—Ôrªî»Aè@lRµ¡ÖÃêEëPO#ÐqHtNŸ³ÏïOkw ²mãtÆLøð¨,Œ7ÅÓƒt”ŽÛ†yÁEÖ°±€×—‡*—˜Ç¡P–W-<ýí$i¼$¾ª0ÛËW&BAŸ1ëèú #çRxŠ¥©n^# …-ïùߚť(¾‡EûM[Í•Èñ¥“ï(Î4sŽ'ÑŽ *Å”‚ã›\u•t ‹VÊw£#eù~ŸçÛ†¡c0[é¡xòJd¾„Ç €ž@ŒbŠlËLöóˆ2!Þ°JD,\>ÍÝŒ÷+1˜lñ¹Ì6\:_.K7lzxRÏçÒ/ö&@Ùrã›!S' ßK–€“œÁÒÝ)éä;×øàä¤0Fü¹Ø†cd  Vc_gå 8k”¬h³ï}LÛö~ƒé™cY¯0Û`3:\›Hqß6¹‡BÏÖ“÷]²FïD‘Í ™++]N,¬¦<ئ,y9•vgÇíJþó( –b™úaƒÎeŸh‚¼q¼#Úb°–Ï·dX§…ƒ½_ ¦¯¼ú£”ä¶w‚cÂ)¢ ß‘æ\unÙ¾Z†;B׸ìt’öÈF"öŒUĸv– q!SÔÅ0ĀȚœ3¥d`YUçò$lv¿…ÁM)a7i•VX¦ +  U|å•/ƶÖ¼'7”‰q\¢h×;ÃàvÍw‹\†Ã£uÔ>ÁºÂDAsVSŸ·N§Í2N$Ôg’“ 9"D4Àp–¯âùL™¡XñtTÛôôSm2-Ok¹ÎV!|_ÎtX.OjÝèh²voÝû@¾÷;ë!SNrëeïâ·‚ ˜1DŒ!ja)xØu™ºôù¶$8Ç·£¡4À$›ŸÄüìofPJPHñò~‹+Ð’«°<@ëžüoU«ÃÌqÆÖ­é¾&Å9@ÖåÇU}â?*º’O?®$õİðÛËû6E,0—¯GñÞðý÷Ê~^úÁgt{æh^ÂÖ\Jÿæ€t&°Äá{@’àô½_³L²O}f¨I${8#¬‡<¸öÄ›£®òUK:H| £iûÇŠ=Uý½Ž4Aé|ï®Ût¹uRô{3úY³wëí2™ˆjïº#à‡ŽÇ=Ë,/ÉÊ÷x}?×~_†3óð Ì^Z–þ]ÇŠÖ±Ðu´¯ãlhl¥ÿ}À`¾†Ï˜zaë¯õó”ì èE‹¢„9lçæ7gŠJŸÄém*%ƒÑõ¾Ž,pv+à’Ý2tÑn D²[$Ú‡!b«—>N>­ô1R¯'éÄH̶ Á äŠg ¸ã‹ûÒÏϺÑ)/òY¤5[–›ndM°3Û|sˆà<Äœº1$ë,@£xxÈf¦F¦û³ëÆu¯;YWYÙZ¥aÑl(ŒèÖ Dg×$õ¡¿iñ«s‘~IîXæ P|ÕÈO|Jõ»Êœ«ÌYe³Ì·]pJ`ÌÚW™Zʶ® 8˜å0%bW_y,ÃWbª¶Ê$ÕȧLRe’E&Yd’e•O|ë@³¥0ãà…/2Ë’–ØÃB¹‹KäôR‡;yu;,^ú‘oq8%¶O ó€O^Ýx´K•œ"ŽÎ².9e;ëìx›^$¬ÿqTpÉ'ž!.f‘?QúWýûÿ{0ÉÞü_¹²ÿ7#œþïÓøÃþíJ]©ýGNäϬ[ÿ…ˆ›»&¿DðáþCÿñ‚ý úÝþãü¥×³–_Pê¿u„ŠÓÆÏÿRÒ±÷_{£ÏhôóC«Oüõ›©ÿ>Á¿Œ1s}?ÿuR×É«œf|kX}xD›ÌüðvÊéŽqv×PÀU&Jé¡ÍÔèe=ÐLD¹cOêkžoéùûIÍ¿ÁõçéB5¯“›7ÿõìêûÏÌôÍü<ÿvúêÍ”®sFû6òuvÚdÏ߸æ |:a»×ÎÁgÙùÍûz~³Müâ›ÚîÊÃÍýë×¾4æ‹VÖ/ÿôæ7Ó/Þ`/ÌM*0§–ùk?o'w `0÷ϯÝÏ&]‡~øf(ûýôl·ŸødÃyìtÎ×)Àê;nPÃUºü|ƒ¿ýR§/îï?¼¼Áè_ZH´×Á@à0yÎóûy°aÜßÊZ¦<í“\¿÷£Ïù·{;VÚïß=aû7ŠÝKëù×Ï%Ô¼& ‰‰ó윇l¼NÏÞ]íÌ)¡)‘º?RÄ!á¥müÀÈ/qØae:&-©MzÎâßݯåöæé¦=~BŠ?³Í¬Ñìd1ù'îÒ*g?³ÍOŒü‰]">ÝøC×P_m~AUûÖÚlÝOÙiº61ÎÚºk å­ÊþÐØŸØ­Ê6¬®ù^«yÁ0½ùR{óÅÇ÷÷_êøÅ'´7ñXø¥ui ìÒlí5&‚¼ó>‚¼.]ã*ü)õGç”,:ÃÚzj 8*Úƒ Ä:ãi“»ÒÊ÷³ ½B6Å^ÏÛ{87*Þ=åÄ \x&YØÕè}uì~5Ƽ:N{5æ½:N|ìÕ§ždî†ûY²PC«p­á^@•p­ àˆsárv³HA?©Uü¨H£×³Ç=̨x÷|”ÏS¥÷¾:v¿c^§½ó^'>é%SïTy6Ü‹j  T ·ÄIч*‘ÜF5z\<Ð[ƒ·ï.Ÿþ!ù@ß«Cç«>ÚÕa²«>ÛÕaº½ÇÉ„ÏFéÛ³B{€èíZtÞãËΩwTÛí í;³'ÝÂtÛ™X¿h;hì—ì @Ûµ‹YôÁd\»d\ Ÿ3(¿¾Û>wÎ÷¨óìõ5`×OÞâËûúôx/o+’PÁ‰p%Ï“’œÂLJïn¾+·?´M¬çla§ýóuTQì´?’gpJúE–ýÀÐ/ïÍ¡WŠ.ðg¤°¹`Ý ,û•ìèþû§w/mO (õèî4U ‹‡uËsÔ×lá‚\úq{5>$ý%mÿ¡Á_Ú-<¸n¢Yì¯üØÀóÝ~ÕnâOب‰æZ(ˆµ0 TåÔUþ±zE|‘§?0ô‹<0—ÆGøuî’&ŒPåÙ.}WoÖvWÛOäZÅkg“øo.ä=Ã;xô 5¼–V›k}R˿ʽš×û=òÐÇù^3Ñì>êó–wt¿:ö¿Úǽ:N~µÏ~uœþ¤__ÀÙ-qÌŽ¾H'D* j<#¶A&fü)•\ø¨d/Œçæ®-,ÿíóÇ= ƒÍî—.GúD…vÿ"ñ‘«Ã3WûÀW‡¹¯öɯ³Ÿô’ùOt>Ü äúeT˜DDÁ®£Íè9HQö„@ôæ{m§Âš(ˆÑ'¡Èå“Ç>F¬ÁAŒÎ‡2…¤]П!Ÿ¹:>tµ~u\ÁÕ¾„«ãNûÉ*NHu1ägAÍ¥‘r!kÑõ@‡—ͤÁäp]°|5w ŒÃ&À,þP£Í¨!Ýø aÅ“Ús(æb‚Œ…ecTÄ…À¹^øl:V`ávEÍôî…‘+lv$_#I%ˆÚowÎh)£`à´¦'cÄ#`G¢Ä²ô"Ú„S½óŽÒ`ÊóѸa’Á3×’H^”ôóØ/"á—(eë³Ä>Êê¾áç# ó´µË¶¨!‹ÑõŸÜ¶œ: æ"™Ê–“… º¢þ9ÑY¤mz/‘ÄÞ‹ÂyÄ\?îsrh‚•au C棆?² B2ò\üUæå-s‡oÊÍm{à¯2ø¿~9ýPK U{&Q íAanalysis/UT’ãT_ux èèPKN{&QÈ)tø¤@¤Canalysis/data.epsUTƒãT_ux èèPK ÏzSQ íA†modalities/UT“_ux èèPK·zSQiÔ'Ó©I¤Ëmodalities/modalities.epsUTê’_ux èèPKN{&QÔ¬“v* #L ¤ñ<outer.epsUTƒãT_ux èèPK ‡›QíA^]spread/UT™®è_ux èèPK憛Q,.¯Î®%û]¤Ÿ]spread/spread.epsUT`®è_ux èèPKI˜ƒsimrisc-16.02.00/documentation/manual/simrisc.yo0000664000175000017500000000657514665030517020573 0ustar frankfrankNOUSERMACRO(generator scenario main type) COMMENT( Starts a report. The top-level sectioning command is chapter. ) mailto(f.b.brokken@rug.nl) DEFINEMACRO(C)(1)(COMMENT(ARG1)) DEFINEMACRO(s)(0)(tt(simrisc)) DEFINEMACRO(S)(0)(tt(Simrisc)) DEFINEMACRO(itt)(1)(it() tt(ARG1)) DEFINEMACRO(centt)(1)(center(tt(ARG1))) AfourEnlarged() IFDEF(html)(htmlstylesheet(simrisc.css))() latexoptions(11pt) latexpackage()(epsf) latexpackage()(simrisc) setlatexfigureext(.eps) C(sethtmlfigureext(.gif) ) htmlbodyopt(text)(black) htmlbodyopt(bgcolor)(white) includefile(abstract.yo) affiliation(University of Groningen) report(Simrisc Manual)(Frank B. Brokken)(September 01, 2024)()) chapter(Introduction) includefile(intro/intro.yo) lsect(GENERIC)(Generic Support Classes) lsubsect(ENUMS)(Enums: program-wide constants) includefile(generic/enums.yo) lsubsect(TYPEDEFS)(Program-wide type definitions) includefile(generic/typedefs.yo) subsect(Globally available functions) includefile(generic/globals.yo) subsect(Options) includefile(generic/options.yo) subsect(Err) includefile(generic/err.yo) lsubsect(DISTRIBUTION)(Distribution) includefile(generic/distribution.yo) lsubsect(VSD)(VSD) includefile(generic/vsd.yo) lsubsect(AGEGROUP)(AgeGroup) includefile(generic/agegroup.yo) chapter(Design) sect(the main() function) includefile(main/main.yo) sect(Simulator) includefile(simulator/simulator.yo) subsect(run) includefile(simulator/run.yo) lsect(ANALYSIS)(Analysis) includefile(analysis/analysis.yo) subsect(run) includefile(analysis/run.yo) lsect(SCENARIO)(Scenario) includefile(scenario/scenario.yo) lsect(LOOP)(Loop) includefile(loop/loop.yo) chapter(Support classes for Loop) lsect(COSTS)(Costs) includefile(costs/costs.yo) lsect(DENSITIES)(Densities) includefile(densities/densities.yo) lsubsect(DENSITY)(Density) includefile(densities/density.yo) lsect(MODALITIES)(Modalities) includefile(modalities/modalities.yo) subsect(the base class ModBase) includefile(modalities/modbase.yo) subsubsect(the derived class MRI) includefile(modalities/mri.yo) subsubsect(the derived class Mammo) includefile(modalities/mammo.yo) subsubsect(the derived class Tomo) includefile(modalities/tomo.yo) lsect(SCREENINGCLASS)(Screening and Rounds) includefile(screening/screening.yo) lsect(TUMOR)(Tumor) lsubsect(TUMORRESET)(Resetting the tumor data) lsubsect(TUMORCHARACT)(Computing the tumor's characteristics) lsubsect(TUMORDEATHAGE)(Computing the dying age because of the tumor) lsect(TUMORINFO)(TumorInfo) includefile(tumorinfo/tumorinfo.yo) lsubsect(BEIR)(Beir7) includefile(tumorinfo/beir7.yo) subsect(Growth) subsect(Incidence) subsect(Survival) chapter(Generating Random Numbers) lsect(RANDOM)(Random) includefile(random/random.yo) lchapter(SPREAD)(Spread) includefile(spread/spread.yo) COMMENT( sect(Standard Deviations) includefile(spread/stddevs.yo) lsect(Proportions) includefile(spread/proportions.yo) END) simrisc-16.02.00/documentation/manual/latex/0000775000175000017500000000000014665030471017650 5ustar frankfranksimrisc-16.02.00/documentation/manual/latex/simrisc.sty0000664000175000017500000000024014665030471022056 0ustar frankfrank\sloppy \renewcommand*\l@subsection{\@dottedtocline{2}{3.8em}{3.7em}} \addtolength{\textheight}{2cm} \addtolength{\textwidth}{4cm} \addtolength{\hoffset}{-2cm} simrisc-16.02.00/documentation/manual/latex/modalities/0000775000175000017500000000000014665030471022002 5ustar frankfranksimrisc-16.02.00/documentation/manual/latex/modalities/modalities.eps0000664000175000017500000004465114665030471024657 0ustar frankfrank%!PS-Adobe-3.0 EPSF-3.0 %%Creator: cairo 1.16.0 (https://cairographics.org) %%CreationDate: Mon Oct 19 15:21:46 2020 %%Pages: 1 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%BoundingBox: 3 4 329 179 %%EndComments %%BeginProlog 50 dict begin /q { gsave } bind def /Q { grestore } bind def /cm { 6 array astore concat } bind def /w { setlinewidth } bind def /J { setlinecap } bind def /j { setlinejoin } bind def /M { setmiterlimit } bind def /d { setdash } bind def /m { moveto } bind def /l { lineto } bind def /c { curveto } bind def /h { closepath } bind def /re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto 0 exch rlineto 0 rlineto closepath } bind def /S { stroke } bind def /f { fill } bind def /f* { eofill } bind def /n { newpath } bind def /W { clip } bind def /W* { eoclip } bind def /BT { } bind def /ET { } bind def /BDC { mark 3 1 roll /BDC pdfmark } bind def /EMC { mark /EMC pdfmark } bind def /cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def /Tj { show currentpoint cairo_store_point } bind def /TJ { { dup type /stringtype eq { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse } forall currentpoint cairo_store_point } bind def /cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def /Tf { pop /cairo_font exch def /cairo_font_matrix where { pop cairo_selectfont } if } bind def /Td { matrix translate cairo_font_matrix matrix concatmatrix dup /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /g { setgray } bind def /rg { setrgbcolor } bind def /d1 { setcachedevice } bind def /cairo_data_source { CairoDataIndex CairoData length lt { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } { () } ifelse } def /cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def /cairo_image { image cairo_flush_ascii85_file } def /cairo_imagemask { imagemask cairo_flush_ascii85_file } def %%EndProlog %%BeginSetup %%BeginResource: font DejaVuSans 11 dict begin /FontType 42 def /FontName /DejaVuSans def /PaintType 0 def /FontMatrix [ 1 0 0 1 0 0 ] def /FontBBox [ 0 0 0 0 ] def /Encoding 256 array def 0 1 255 { Encoding exch /.notdef put } for Encoding 40 /parenleft put Encoding 41 /parenright put Encoding 46 /period put Encoding 66 /B put Encoding 73 /I put Encoding 77 /M put Encoding 82 /R put Encoding 84 /T put Encoding 97 /a put Encoding 100 /d put Encoding 101 /e put Encoding 102 /f put Encoding 105 /i put Encoding 108 /l put Encoding 109 /m put Encoding 111 /o put Encoding 114 /r put Encoding 115 /s put Encoding 116 /t put Encoding 117 /u put Encoding 121 /y put /CharStrings 22 dict dup begin /.notdef 0 def /M 1 def /o 2 def /d 3 def /a 4 def /l 5 def /i 6 def /t 7 def /y 8 def /R 9 def /I 10 def /B 11 def /s 12 def /e 13 def /m 14 def /T 15 def /parenleft 16 def /f 17 def /u 18 def /r 19 def /parenright 20 def /period 21 def end readonly def /sfnts [ <0001000000090080000300106376742000691d3900000f08000001fe6670676d7134766a0000 1108000000ab676c79664b2948620000009c00000e6c686561641b3ee6ec000011b400000036 686865610d9f0783000011ec00000024686d74785e090c3700001210000000586c6f63610000 b244000012680000005c6d61787004830671000012c400000020707265703b07f100000012e4 0000056800020066fe96046605a400030007001a400c04fb0006fb0108057f0204002fc4d4ec 310010d4ecd4ec301311211125211121660400fc73031bfce5fe96070ef8f2720629000100c9 0000061f05d5000c00bf403403110708070211010208080702110302090a0901110a0a09420a 070203080300af080b050908030201050a061c043e0a1c00040d10fcecfcec11173931002f3c c4ec32111739304b5358071005ed071008ed071008ed071005ed5922b2700e01015d40560307 0f080f09020a15021407130a260226072007260a200a3407350a69027c027b07790a80028207 820a90021604010b0313011b0323012c032708280934013c035608590965086a097608790981 018d0395019b03145d005d13210901211123110123011123c9012d017d017f012dc5fe7fcbfe 7fc405d5fc0803f8fa2b051ffc000400fae1000000020071ffe30475047b000b0017004a4013 06b91200b90cb8128c1809120f51031215451810fcecf4ec310010e4f4ec10ee3040233f197b 007b067f077f087f097f0a7f0b7b0c7f0d7f0e7f0f7f107f117b12a019f01911015d01220615 1416333236353426273200111000232200111000027394acab9593acac93f00112feeef0f1fe ef011103dfe7c9c9e7e8c8c7e99cfec8feecfeedfec70139011301140138000000020071ffe3 045a06140010001c003840191ab9000e14b905088c0eb801970317040008024711120b451d10 fcecf4ec323231002fece4f4c4ec10c4ee30b6601e801ea01e03015d0111331123350e012322 0211100033321601141633323635342623220603a2b8b83ab17ccbff00ffcb7cb1fdc7a79292 a8a89292a703b6025ef9eca86461014401080108014461fe15cbe7e7cbcbe7e70002007bffe3 042d047b000a002500bc4027191f0b17090e00a91706b90e1120861fba1cb923b8118c170c00 1703180d09080b1f030814452610fcecccd4ec323211393931002fc4e4f4fcf4ec10c6ee10ee 11391139123930406e301d301e301f3020302130223f27401d401e401f402040214022501d50 1e501f50205021502250277027851d871e871f8720872185229027a027f0271e301e301f3020 3021401e401f40204021501e501f50205021601e601f60206021701e701f70207021801e801f 80208021185d015d0122061514163332363d01371123350e0123222635343633213534262322 0607353e0133321602bedfac816f99b9b8b83fbc88accbfdfb0102a79760b65465be5af3f002 33667b6273d9b4294cfd81aa6661c1a2bdc0127f8b2e2eaa2727fc00000100c1000001790614 00030022b7009702010800460410fcec31002fec30400d10054005500560057005f00506015d 13331123c1b8b80614f9ec00000200c100000179061400030007002b400e06be04b100bc0205 01080400460810fc3cec3231002fe4fcec30400b1009400950096009700905015d1333112311 331523c1b8b8b8b80460fba00614e90000010037000002f2059e0013003840190e05080f03a9 001101bc08870a0b08090204000810120e461410fc3cc4fc3cc432393931002fecf43cc4ec32 11393930b2af1501015d01112115211114163b01152322263511233533110177017bfe854b73 bdbdd5a28787059efec28ffda0894e9a9fd202608f013e0000000001003dfe56047f0460000f 018b40430708020911000f0a110b0a00000f0e110f000f0d110c0d00000f0d110e0d0a0b0a0c 110b0b0a420d0b0910000b058703bd0e0bbc100e0d0c0a09060300080f040f0b1010d44bb00a 544bb008545b58b9000b004038594bb0145458b9000bffc03859c4c4111739310010e432f4ec 113911391239304b5358071005ed071008ed071008ed071005ed071008ed0705ed1732592201 40f0060005080609030d160a170d100d230d350d490a4f0a4e0d5a095a0a6a0a870d800d930d 120a000a09060b050c0b0e0b0f1701150210041005170a140b140c1a0e1a0f27002401240220 04200529082809250a240b240c270d2a0e2a0f201137003501350230043005380a360b360c38 0d390e390f30114100400140024003400440054006400740084209450a470d490e490f401154 00510151025503500450055606550756085709570a550b550c590e590f501166016602680a69 0e690f60117b08780e780f89008a09850b850c890d890e890f9909950b950c9a0e9a0fa40ba4 0cab0eab0fb011cf11df11ff11655d005d050e012b01353332363f01013309013302934e947c 936c4c543321fe3bc3015e015ec368c87a9a488654044efc94036c000000000200c900000554 05d50013001c00b14035090807030a061103040305110404034206040015030415950914950d 810b040506031109001c160e050a191904113f140a1c0c041d10fcec32fcc4ec111739113939 3931002f3cf4ecd4ec123912391239304b5358071005ed071005ed1117395922b2401e01015d 40427a1301050005010502060307041500150114021603170425002501250226032706260726 082609201e3601360246014602680575047505771388068807980698071f5d005d011e011713 23032e012b01112311212016151406011133323635342623038d417b3ecdd9bf4a8b78dcca01 c80100fc83fd89fe9295959202bc16907efe68017f9662fd8905d5d6d88dba024ffdee878383 8500000100c90000019305d50003002eb700af02011c00040410fc4bb0105458b90000004038 59ec31002fec3001400d30054005500560058f059f05065d13331123c9caca05d5fa2b000003 00c9000004ec05d5000800110020004340231900950a0995128101950aad1f110b080213191f 05000e1c1605191c2e09001c12042110fcec32fcecd4ec111739393931002fececf4ec10ee39 30b20f2201015d01112132363534262301112132363534262325213216151406071e01151404 232101930144a39d9da3febc012b94919194fe0b0204e7fa807c95a5fef0fbfde802c9fddd87 8b8c850266fe3e6f727170a6c0b189a21420cb98c8da0001006fffe303c7047b002700e7403c 0d0c020e0b531f1e080902070a531f1f1e420a0b1e1f041500860189041486158918b91104b9 25b8118c281e0a0b1f1b0700521b080e07081422452810fcc4ecd4ece4111239393939310010 e4f4ec10fef5ee10f5ee121739304b535807100eed111739070eed1117395922b2002701015d 406d1c0a1c0b1c0c2e092c0a2c0b2c0c3b093b0a3b0b3b0c0b200020012402280a280b2a132f 142f152a16281e281f292029212427860a860b860c860d12000000010202060a060b030c030d 030e030f03100319031a031b031c041d09272f293f295f297f2980299029a029f029185d005d 7101152e012322061514161f011e0115140623222627351e013332363534262f012e01353436 333216038b4ea85a898962943fc4a5f7d85ac36c66c661828c65ab40ab98e0ce66b4043fae28 2854544049210e2a99899cb62323be353559514b50250f2495829eac1e00000000020071ffe3 047f047b0014001b00704024001501098608880515a90105b90c01bb18b912b80c8c1c1b1502 081508004b02120f451c10fcecf4ecc4111239310010e4f4ece410ee10ee10f4ee1112393040 293f1d701da01dd01df01d053f003f013f023f153f1b052c072f082f092c0a6f006f016f026f 156f1b095d71015d0115211e0133323637150e01232000111000333200072e0123220607047f fcb20ccdb76ac76263d06bfef4fec70129fce20107b802a5889ab90e025e5abec73434ae2a2c 0138010a01130143feddc497b4ae9e00000100ba0000071d047b0022005a4026061209180f00 061d07150c871d2003b81bbc19100700110f0808065011080f501c18081a462310fcec32fcfc fcec11123931002f3c3ce4f43cc4ec32111217393040133024502470249024a024a024bf24df 24ff2409015d013e013332161511231134262322061511231134262322061511231133153e01 333216042945c082afbeb972758fa6b972778da6b9b93fb0797aab03897c76f5e2fd5c029ea1 9cbea4fd87029ea29bbfa3fd870460ae67627c0000000001fffa000004e905d50007004a400e 0602950081040140031c0040050810d4e4fce431002ff4ec3230014bb00a5458bd0008004000 0100080008ffc03811373859401300091f00100110021f071009400970099f09095d03211521 112311210604effdeecbfdee05d5aafad5052b00000100b0fef2027b0612000d0037400f0698 00970e0d070003120600130a0e10dc4bb0135458b9000affc038594bb00f5458b9000a004038 59e432ec113939310010fcec300106021514121723260235341237027b86828385a096959497 0612e6fe3ee7e7fe3be5eb01c6e0df01c4ec0001002f000002f8061400130059401c0510010c 08a906018700970e06bc0a02130700070905080d0f0b4c1410fc4bb00a5458b9000b00403859 4bb00e5458b9000bffc038593cc4fc3cc4c412393931002fe432fcec10ee321239393001b640 155015a015035d01152322061d012115211123112335333534363302f8b0634d012ffed1b9b0 b0aebd0614995068638ffc2f03d18f4ebbab000200aeffe30458047b00130014003b401c0309 00030e0106870e118c0a01bc14b80c0d0908140b4e020800461510fcecf439ec3231002fe4e4 32f4c4ec1112173930b46f15c01502015d1311331114163332363511331123350e0123222601 aeb87c7c95adb8b843b175c1c801cf01ba02a6fd619f9fbea4027bfba0ac6663f003a8000001 00ba0000034a047b001100304014060b0700110b03870eb809bc070a06080008461210fcc4ec 3231002fe4f4ecc4d4cc11123930b450139f1302015d012e012322061511231133153e013332 1617034a1f492c9ca7b9b93aba85132e1c03b41211cbbefdb20460ae666305050000000100a4 fef2026f0612000d001f400f079800970e0701000b12041308000e10dc3cf4ec113939310010 fcec301333161215140207233612353402a4a096959596a08583830612ecfe3cdfe0fe3aebe5 01c5e7e701c20000000100db000001ae00fe00030011b7008302011900180410fcec31002fec 3037331523dbd3d3fefe013500b800cb00cb00c100aa009c01a600b800660000007100cb00a0 02b20085007500b800c301cb0189022d00cb00a600f000d300aa008700cb03aa0400014a0033 00cb000000d9050200f4015400b4009c01390114013907060400044e04b4045204b804e704cd 0037047304cd04600473013303a2055605a60556053903c5021200c9001f00b801df007300ba 03e9033303bc0444040e00df03cd03aa00e503aa0404000000cb008f00a4007b00b80014016f 007f027b0252008f00c705cd009a009a006f00cb00cd019e01d300f000ba018300d500980304 0248009e01d500c100cb00f600830354027f00000333026600d300c700a400cd008f009a0073 040005d5010a00fe022b00a400b4009c00000062009c0000001d032d05d505d505d505f0007f 007b005400a406b80614072301d300b800cb00a601c301ec069300a000d3035c037103db0185 042304a80448008f0139011401390360008f05d5019a0614072306660179046004600460047b 009c00000277046001aa00e904600762007b00c5007f027b000000b4025205cd006600bc0066 0077061000cd013b01850389008f007b0000001d00cd074a042f009c009c0000077d006f0000 006f0335006a006f007b00ae00b2002d0396008f027b00f600830354063705f6008f009c04e1 0266008f018d02f600cd03440029006604ee00730000140000960000b707060504030201002c 2010b002254964b040515820c859212d2cb002254964b040515820c859212d2c20100720b000 50b00d7920b8ffff5058041b0559b0051cb0032508b0042523e120b00050b00d7920b8ffff50 58041b0559b0051cb0032508e12d2c4b505820b0fd454459212d2cb002254560442d2c4b5358 b00225b0022545445921212d2c45442d2cb00225b0022549b00525b005254960b0206368208a 108a233a8a10653a2d000001000000025eb8f65e36e25f0f3cf5001f080000000000daed9e87 00000000daed9e87f7d6fc4c0e5909dc00000008000200010000000000010000076dfe1d0000 0efef7d6fa510e5900010000000000000000000000000000001604cd006606e700c904e50071 0514007104e7007b023900c1023900c10323003704bc003d058f00c9025c00c9057d00c9042b 006f04ec007107cb00ba04e3fffa031f00b002d1002f051200ae034a00ba031f00a4028b00db 000000000000004400000140000001e40000027c000003a8000003e400000434000004b00000 067c00000790000007d800000888000009e800000abc00000b8000000bf000000c6000000cf8 00000d7c00000dec00000e4400000e6c0001000000160354002b0068000c0002001000990008 00000415021600080004b8028040fffbfe03fa1403f92503f83203f79603f60e03f5fe03f4fe 03f32503f20e03f19603f02503ef8a4105effe03ee9603ed9603ecfa03ebfa03eafe03e93a03 e84203e7fe03e63203e5e45305e59603e48a4105e45303e3e22f05e3fa03e22f03e1fe03e0fe 03df3203de1403dd9603dcfe03db1203da7d03d9bb03d8fe03d68a4105d67d03d5d44705d57d 03d44703d3d21b05d3fe03d21b03d1fe03d0fe03cffe03cefe03cd9603cccb1e05ccfe03cb1e 03ca3203c9fe03c6851105c61c03c51603c4fe03c3fe03c2fe03c1fe03c0fe03bffe03befe03 bdfe03bcfe03bbfe03ba1103b9862505b9fe03b8b7bb05b8fe03b7b65d05b7bb03b78004b6b5 2505b65d40ff03b64004b52503b4fe03b39603b2fe03b1fe03b0fe03affe03ae6403ad0e03ac ab2505ac6403abaa1205ab2503aa1203a98a4105a9fa03a8fe03a7fe03a6fe03a51203a4fe03 a3a20e05a33203a20e03a16403a08a4105a096039ffe039e9d0c059efe039d0c039c9b19059c 64039b9a10059b19039a1003990a0398fe0397960d0597fe03960d03958a410595960394930e 05942803930e0392fa039190bb0591fe03908f5d0590bb039080048f8e25058f5d038f40048e 25038dfe038c8b2e058cfe038b2e038a8625058a410389880b05891403880b03878625058764 038685110586250385110384fe038382110583fe0382110381fe0380fe037ffe0340ff7e7d7d 057efe037d7d037c64037b5415057b25037afe0379fe03780e03770c03760a0375fe0374fa03 73fa0372fa0371fa0370fe036ffe036efe036c21036bfe036a1142056a530369fe03687d0367 11420566fe0365fe0364fe0363fe0362fe03613a0360fa035e0c035dfe035bfe035afe035958 0a0559fa03580a035716190557320356fe035554150555420354150353011005531803521403 514a130551fe03500b034ffe034e4d10054efe034d10034cfe034b4a13054bfe034a4910054a 1303491d0d05491003480d0347fe0346960345960344fe0343022d0543fa0342bb03414b0340 fe033ffe033e3d12053e14033d3c0f053d12033c3b0d053c40ff0f033b0d033afe0339fe0338 37140538fa033736100537140336350b05361003350b03341e03330d0332310b0532fe03310b 03302f0b05300d032f0b032e2d09052e10032d09032c32032b2a25052b64032a2912052a2503 2912032827250528410327250326250b05260f03250b0324fe0323fe03220f03210110052112 032064031ffa031e1d0d051e64031d0d031c1142051cfe031bfa031a42031911420519fe0318 64031716190517fe031601100516190315fe0314fe0313fe031211420512fe0311022d051142 03107d030f64030efe030d0c16050dfe030c0110050c16030bfe030a100309fe0308022d0508 fe030714030664030401100504fe03401503022d0503fe0302011005022d0301100300fe0301 b80164858d012b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1d00> ] def /f-0-0 currentdict end definefont pop %%EndResource %%EndSetup %%Page: 1 1 %%BeginPageSetup %%PageBoundingBox: 3 4 329 179 %%EndPageSetup q 3 4 326 175 rectclip 1 0 0 -1 0 182 cm q 0.85098 0.819608 0.905882 rg 105.473 125.406 59.742 22.578 re f 0.188235 0.109804 0.109804 rg 1.01661 w 0 J 0 j [] 0.0 d 4 M q 1 0 0 1 0 0 cm 105.473 125.406 59.742 22.578 re S Q 0.85098 0.819608 0.905882 rg 13.855 33.105 59.742 27.723 re f 0.188235 0.109804 0.109804 rg 1.126575 w q 1 0 0 1 0 0 cm 13.855 33.105 59.742 27.723 re S Q 0.501961 0.898039 1 rg 14.441 86.004 59.883 28.668 re f 0.188235 0.109804 0.109804 rg 1.14693 w q 1 0 0 1 0 0 cm 14.441 86.004 59.883 28.668 re S Q 0 g BT 9 0 0 -9 26.756537 103.233377 Tm /f-0-0 1 Tf (Modality)Tj 8.992397 0 0 -9.941295 127.817949 141.027663 Tm (MRI)Tj -11.784918 9.321288 Td (ModBase)Tj 9.999975 0 0 -9.999975 9.253024 15.36996 Tm (Modalities)Tj ET 3.194497 w q 1 0 0 1 0 0 cm 5.348 5.348 321.688 170.645 re S Q 0.75 w q 1 0 0 1 0 0 cm 55.598 60.828 m 110.477 124.926 l S Q 107.789 116.672 m 111.133 125.672 l 102.754 120.984 l 105.176 120.805 107.207 119.055 107.789 116.672 c h 107.789 116.672 m f* 0.39167 w 1 j q -0.856222 -1 1 -0.856222 0 0 cm -120.571 4.554 m -127.416 2.037 l -120.572 -0.482 l -121.664 1.004 -121.658 3.041 -120.571 4.554 c h -120.571 4.554 m S Q 0.75 w 0 j q 1 0 0 1 0 0 cm 44.207 86.004 m 43.898 60.828 l S Q 40.668 68.887 m 43.871 59.836 l 47.297 68.805 l 45.32 67.391 42.645 67.434 40.668 68.887 c h 40.668 68.887 m f* 0.515586 w 1 j q 0.0122919 1 -1 0.0122919 0 0 cm 69.376 -39.815 m 60.366 -43.129 l 69.376 -46.444 l 67.937 -44.485 67.948 -41.809 69.376 -39.815 c h 69.376 -39.815 m S Q 0.85098 0.819608 0.905882 rg 178.199 72.016 69.203 22.543 re f 0.188235 0.109804 0.109804 rg 1.09329 w 0 j q 1 0 0 1 0 0 cm 178.199 72.016 69.203 22.543 re S Q 0 g BT 8.992397 0 0 -9.941295 181.778453 84.628443 Tm /f-0-0 1 Tf [(MammoT)170(omo)]TJ ET 0.75 w q 1 0 0 1 0 0 cm 73.598 53.383 m 178.199 75.852 l S Q 171.062 70.914 m 179.176 76.051 l 169.668 77.398 l 171.488 75.785 172.043 73.168 171.062 70.914 c h 171.062 70.914 m f* 0.504125 w 1 j q -1 -0.214809 0.214809 -1 0 0 cm -178.078 -32.661 m -186.889 -35.905 l -178.077 -39.146 l -179.486 -37.23 -179.478 -34.614 -178.078 -32.661 c h -178.078 -32.661 m S Q 0.937255 g 254.926 144.309 59.742 22.578 re f 0.188235 0.109804 0.109804 rg 1.01661 w 0 j q 1 0 0 1 0 0 cm 254.926 144.309 59.742 22.578 re S Q 0 g BT 8.992397 0 0 -9.941295 266.273171 156.940633 Tm /f-0-0 1 Tf [(\(futur)22(e\))]TJ 20.000025 0 0 -20.000025 222.294012 156.946931 Tm (...)Tj ET 0.75 w [ 6 0.75] 0 d q 1 0 0 1 0 0 cm 73.598 60.426 m 259.746 144.309 l S Q 253.801 137.98 m 260.66 144.707 l 251.078 144.023 l 253.195 142.832 254.289 140.387 253.801 137.98 c h 253.801 137.98 m f* 0.4701 w 1 j [] 0.0 d q -1 -0.450621 0.450621 -1 0 0 cm -262.645 -19.627 m -270.866 -22.649 l -262.646 -25.67 l -263.959 -23.887 -263.952 -21.444 -262.645 -19.627 c h -262.645 -19.627 m S Q Q Q showpage %%Trailer end %%EOF simrisc-16.02.00/documentation/manual/latex/analysis/0000775000175000017500000000000014665030471021473 5ustar frankfranksimrisc-16.02.00/documentation/manual/latex/analysis/data.eps0000664000175000017500000004024414665030471023121 0ustar frankfrank%!PS-Adobe-3.0 EPSF-3.0 %%Creator: cairo 1.16.0 (https://cairographics.org) %%CreationDate: Mon Aug 31 11:20:06 2020 %%Pages: 1 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%BoundingBox: 3 4 100 146 %%EndComments %%BeginProlog 50 dict begin /q { gsave } bind def /Q { grestore } bind def /cm { 6 array astore concat } bind def /w { setlinewidth } bind def /J { setlinecap } bind def /j { setlinejoin } bind def /M { setmiterlimit } bind def /d { setdash } bind def /m { moveto } bind def /l { lineto } bind def /c { curveto } bind def /h { closepath } bind def /re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto 0 exch rlineto 0 rlineto closepath } bind def /S { stroke } bind def /f { fill } bind def /f* { eofill } bind def /n { newpath } bind def /W { clip } bind def /W* { eoclip } bind def /BT { } bind def /ET { } bind def /BDC { mark 3 1 roll /BDC pdfmark } bind def /EMC { mark /EMC pdfmark } bind def /cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def /Tj { show currentpoint cairo_store_point } bind def /TJ { { dup type /stringtype eq { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse } forall currentpoint cairo_store_point } bind def /cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def /Tf { pop /cairo_font exch def /cairo_font_matrix where { pop cairo_selectfont } if } bind def /Td { matrix translate cairo_font_matrix matrix concatmatrix dup /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /g { setgray } bind def /rg { setrgbcolor } bind def /d1 { setcachedevice } bind def /cairo_data_source { CairoDataIndex CairoData length lt { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } { () } ifelse } def /cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def /cairo_image { image cairo_flush_ascii85_file } def /cairo_imagemask { imagemask cairo_flush_ascii85_file } def %%EndProlog %%BeginSetup %%BeginResource: font DejaVuSans 11 dict begin /FontType 42 def /FontName /DejaVuSans def /PaintType 0 def /FontMatrix [ 1 0 0 1 0 0 ] def /FontBBox [ 0 0 0 0 ] def /Encoding 256 array def 0 1 255 { Encoding exch /.notdef put } for Encoding 65 /A put Encoding 67 /C put Encoding 69 /E put Encoding 70 /F put Encoding 79 /O put Encoding 83 /S put Encoding 97 /a put Encoding 99 /c put Encoding 101 /e put Encoding 102 /f put Encoding 105 /i put Encoding 108 /l put Encoding 110 /n put Encoding 111 /o put Encoding 112 /p put Encoding 114 /r put Encoding 115 /s put Encoding 116 /t put Encoding 121 /y put /CharStrings 20 dict dup begin /.notdef 0 def /E 1 def /r 2 def /o 3 def /S 4 def /c 5 def /e 6 def /n 7 def /a 8 def /i 9 def /O 10 def /p 11 def /t 12 def /s 13 def /C 14 def /f 15 def /F 16 def /l 17 def /A 18 def /y 19 def end readonly def /sfnts [ <0001000000090080000300106376742000691d3900000e3c000001fe6670676d7134766a0000 103c000000ab676c796633129ee60000009c00000da0686561641b3ee6ec000010e800000036 686865610d9f07810000112000000024686d747858bf0a0500001144000000506c6f63610000 7fb400001194000000546d61787004810671000011e800000020707265703b07f10000001208 0000056800020066fe96046605a400030007001a400c04fb0006fb0108057f0204002fc4d4ec 310010d4ecd4ec301311211125211121660400fc73031bfce5fe96070ef8f2720629000100c9 0000048b05d5000b002e401506950402950081089504ad0a05010907031c00040c10fcec32d4 c4c431002fececf4ec10ee30b21f0d01015d132115211121152111211521c903b0fd1a02c7fd 3902f8fc3e05d5aafe46aafde3aa0000000100ba0000034a047b001100304014060b0700110b 03870eb809bc070a06080008461210fcc4ec3231002fe4f4ecc4d4cc11123930b450139f1302 015d012e012322061511231133153e0133321617034a1f492c9ca7b9b93aba85132e1c03b412 11cbbefdb20460ae66630505000000020071ffe30475047b000b0017004a401306b91200b90c b8128c1809120f51031215451810fcecf4ec310010e4f4ec10ee3040233f197b007b067f077f 087f097f0a7f0b7b0c7f0d7f0e7f0f7f107f117b12a019f01911015d01220615141633323635 3426273200111000232200111000027394acab9593acac93f00112feeef0f1feef011103dfe7 c9c9e7e8c8c7e99cfec8feecfeedfec70139011301140138000000010087ffe304a205f00027 007e403c0d0c020e0b021e1f1e080902070a021f1f1e420a0b1e1f0415010015a11494189511 049500942591118c281e0a0b1f1b0700221b190e2d071914222810dcc4ecfcece41112393939 39310010e4f4e4ec10eef6ee10c6111739304b535807100eed11173907100eed1117395922b2 0f2901015db61f292f294f29035d01152e012322061514161f011e0115140421222627351e01 3332363534262f012e01353424333216044873cc5fa5b377a67ae2d7feddfee76aef807bec72 adbc879a7be2ca0117f569da05a4c53736807663651f192bd9b6d9e0302fd04546887e6e7c1f 182dc0abc6e4260000010071ffe303e7047b0019003f401b00860188040e860d880ab91104b9 17b8118c1a07120d004814451a10fce432ec310010e4f4ec10fef4ee10f5ee30400b0f1b101b 801b901ba01b05015d01152e0123220615141633323637150e0123220011100021321603e74e 9d50b3c6c6b3509d4e4da55dfdfed6012d010655a20435ac2b2be3cdcde32b2baa2424013e01 0e0112013a23000000020071ffe3047f047b0014001b00704024001501098608880515a90105 b90c01bb18b912b80c8c1c1b1502081508004b02120f451c10fcecf4ecc4111239310010e4f4 ece410ee10ee10f4ee1112393040293f1d701da01dd01df01d053f003f013f023f153f1b052c 072f082f092c0a6f006f016f026f156f1b095d71015d0115211e0133323637150e0123200011 1000333200072e0123220607047ffcb20ccdb76ac76263d06bfef4fec70129fce20107b802a5 889ab90e025e5abec73434ae2a2c0138010a01130143feddc497b4ae9e00000100ba00000464 047b001300364019030900030e0106870e11b80cbc0a010208004e0d09080b461410fcec32f4 ec31002f3ce4f4c4ec1112173930b46015cf1502015d0111231134262322061511231133153e 013332160464b87c7c95acb9b942b375c1c602a4fd5c029e9f9ebea4fd870460ae6564ef0002 007bffe3042d047b000a002500bc4027191f0b17090e00a91706b90e1120861fba1cb923b811 8c170c001703180d09080b1f030814452610fcecccd4ec323211393931002fc4e4f4fcf4ec10 c6ee10ee11391139123930406e301d301e301f3020302130223f27401d401e401f4020402140 22501d501e501f50205021502250277027851d871e871f8720872185229027a027f0271e301e 301f30203021401e401f40204021501e501f50205021601e601f60206021701e701f70207021 801e801f80208021185d015d0122061514163332363d01371123350e01232226353436332135 342623220607353e0133321602bedfac816f99b9b8b83fbc88accbfdfb0102a79760b65465be 5af3f00233667b6273d9b4294cfd81aa6661c1a2bdc0127f8b2e2eaa2727fc00000200c10000 0179061400030007002b400e06be04b100bc020501080400460810fc3cec3231002fe4fcec30 400b1009400950096009700905015d1333112311331523c1b8b8b8b80460fba00614e9000002 0073ffe305d905f0000b00170023401306951200950c91128c1809190f33031915101810fcec fcec310010e4f4ec10ee300122001110003332001110002720001110002120001110000327dc fefd0103dcdc0101feffdc013a0178fe88fec6fec5fe870179054cfeb8fee5fee6feb8014801 1a011b0148a4fe5bfe9efe9ffe5b01a40162016201a50000000200bafe5604a4047b0010001c 003e401b1ab9000e14b90508b80e8c01bd03bc1d11120b471704000802461d10fcec3232f4ec 310010e4e4e4f4c4ec10c4ee304009601e801ea01ee01e04015d2511231133153e0133320011 10022322260134262322061514163332360173b9b93ab17bcc00ffffcc7bb10238a79292a7a7 9292a7a8fdae060aaa6461febcfef8fef8febc6101ebcbe7e7cbcbe7e7000000000100370000 02f2059e0013003840190e05080f03a9001101bc08870a0b08090204000810120e461410fc3c c4fc3cc432393931002fecf43cc4ec3211393930b2af1501015d01112115211114163b011523 22263511233533110177017bfe854b73bdbdd5a28787059efec28ffda0894e9a9fd202608f01 3e0000000001006fffe303c7047b002700e7403c0d0c020e0b531f1e080902070a531f1f1e42 0a0b1e1f041500860189041486158918b91104b925b8118c281e0a0b1f1b0700521b080e0708 1422452810fcc4ecd4ece4111239393939310010e4f4ec10fef5ee10f5ee121739304b535807 100eed111739070eed1117395922b2002701015d406d1c0a1c0b1c0c2e092c0a2c0b2c0c3b09 3b0a3b0b3b0c0b200020012402280a280b2a132f142f152a16281e281f292029212427860a86 0b860c860d12000000010202060a060b030c030d030e030f03100319031a031b031c041d0927 2f293f295f297f2980299029a029f029185d005d7101152e012322061514161f011e01151406 23222627351e013332363534262f012e01353436333216038b4ea85a898962943fc4a5f7d85a c36c66c661828c65ab40ab98e0ce66b4043fae282854544049210e2a99899cb62323be353559 514b50250f2495829eac1e00000000010073ffe3052705f000190036401a0da10eae0a951101 a100ae04951791118c1a07190d003014101a10fcec32ec310010e4f4ecf4ec10eef6ee30b40f 1b1f1b02015d01152e0123200011100021323637150e01232000111000213216052766e782ff 00fef00110010082e7666aed84feadfe7a0186015386ed0562d55f5efec7fed8fed9fec75e5f d34848019f01670168019f4700000001002f000002f8061400130059401c0510010c08a90601 8700970e06bc0a02130700070905080d0f0b4c1410fc4bb00a5458b9000b004038594bb00e54 58b9000bffc038593cc4fc3cc4c412393931002fe432fcec10ee321239393001b640155015a0 15035d01152322061d012115211123112335333534363302f8b0634d012ffed1b9b0b0aebd06 14995068638ffc2f03d18f4ebbab000100c90000042305d50009002940120695040295008104 ad08050107031c00040a10fcec32d4c431002fecf4ec10ee30b20f0b01015d13211521112115 211123c9035afd700250fdb0ca05d5aafe48aafd3700000100c100000179061400030022b700 9702010800460410fcec31002fec30400d10054005500560057005f00506015d13331123c1b8 b80614f9ec00000200100000056805d50002000a00c240410011010004050402110505040111 0a030a0011020003030a0711050406110505040911030a08110a030a42000307950103810905 09080706040302010009050a0b10d4c4173931002f3ce4d4ec1239304b5358071005ed0705ed 071005ed0705ed071008ed071005ed071005ed071008ed5922b2200c01015d40420f010f020f 070f080f005800760070008c000907010802060309041601190256015802500c670168027801 76027c0372047707780887018802800c980299039604175d005d090121013301230321032302 bcfeee0225fe7be50239d288fd5f88d5050efd1903aefa2b017ffe8100000001003dfe56047f 0460000f018b40430708020911000f0a110b0a00000f0e110f000f0d110c0d00000f0d110e0d 0a0b0a0c110b0b0a420d0b0910000b058703bd0e0bbc100e0d0c0a09060300080f040f0b1010 d44bb00a544bb008545b58b9000b004038594bb0145458b9000bffc03859c4c4111739310010 e432f4ec113911391239304b5358071005ed071008ed071008ed071005ed071008ed0705ed17 3259220140f0060005080609030d160a170d100d230d350d490a4f0a4e0d5a095a0a6a0a870d 800d930d120a000a09060b050c0b0e0b0f1701150210041005170a140b140c1a0e1a0f270024 0124022004200529082809250a240b240c270d2a0e2a0f201137003501350230043005380a36 0b360c380d390e390f30114100400140024003400440054006400740084209450a470d490e49 0f40115400510151025503500450055606550756085709570a550b550c590e590f5011660166 02680a690e690f60117b08780e780f89008a09850b850c890d890e890f9909950b950c9a0e9a 0fa40ba40cab0eab0fb011cf11df11ff11655d005d050e012b01353332363f01013309013302 934e947c936c4c543321fe3bc3015e015ec368c87a9a488654044efc94036c000000013500b8 00cb00cb00c100aa009c01a600b800660000007100cb00a002b20085007500b800c301cb0189 022d00cb00a600f000d300aa008700cb03aa0400014a003300cb000000d9050200f4015400b4 009c01390114013907060400044e04b4045204b804e704cd0037047304cd04600473013303a2 055605a60556053903c5021200c9001f00b801df007300ba03e9033303bc0444040e00df03cd 03aa00e503aa0404000000cb008f00a4007b00b80014016f007f027b0252008f00c705cd009a 009a006f00cb00cd019e01d300f000ba018300d5009803040248009e01d500c100cb00f60083 0354027f00000333026600d300c700a400cd008f009a0073040005d5010a00fe022b00a400b4 009c00000062009c0000001d032d05d505d505d505f0007f007b005400a406b80614072301d3 00b800cb00a601c301ec069300a000d3035c037103db0185042304a80448008f013901140139 0360008f05d5019a0614072306660179046004600460047b009c00000277046001aa00e90460 0762007b00c5007f027b000000b4025205cd006600bc00660077061000cd013b01850389008f 007b0000001d00cd074a042f009c009c0000077d006f0000006f0335006a006f007b00ae00b2 002d0396008f027b00f600830354063705f6008f009c04e10266008f018d02f600cd03440029 006604ee00730000140000960000b707060504030201002c2010b002254964b040515820c859 212d2cb002254964b040515820c859212d2c20100720b00050b00d7920b8ffff5058041b0559 b0051cb0032508b0042523e120b00050b00d7920b8ffff5058041b0559b0051cb0032508e12d 2c4b505820b0fd454459212d2cb002254560442d2c4b5358b00225b0022545445921212d2c45 442d2cb00225b0022549b00525b005254960b0206368208a108a233a8a10653a2d0000010000 00025eb83123fac65f0f3cf5001f080000000000daed9e8700000000daed9e87f7d6fc4c0e59 09dc00000008000200010000000000010000076dfe1d00000efef7d6fa510e59000100000000 00000000000000000000001404cd0066050e00c9034a00ba04e50071051400870466007104ec 0071051200ba04e7007b023900c1064c0073051400ba03230037042b006f0596007302d1002f 049a00c9023900c10579001004bc003d0000000000000044000000a400000114000001b80000 02b0000003480000041c00000494000005c0000006100000069c0000073c000007b800000918 000009b000000a4800000a9c00000ad800000bd400000da00001000000140354002b0068000c 000200100099000800000415021600080004b8028040fffbfe03fa1403f92503f83203f79603 f60e03f5fe03f4fe03f32503f20e03f19603f02503ef8a4105effe03ee9603ed9603ecfa03eb fa03eafe03e93a03e84203e7fe03e63203e5e45305e59603e48a4105e45303e3e22f05e3fa03 e22f03e1fe03e0fe03df3203de1403dd9603dcfe03db1203da7d03d9bb03d8fe03d68a4105d6 7d03d5d44705d57d03d44703d3d21b05d3fe03d21b03d1fe03d0fe03cffe03cefe03cd9603cc cb1e05ccfe03cb1e03ca3203c9fe03c6851105c61c03c51603c4fe03c3fe03c2fe03c1fe03c0 fe03bffe03befe03bdfe03bcfe03bbfe03ba1103b9862505b9fe03b8b7bb05b8fe03b7b65d05 b7bb03b78004b6b52505b65d40ff03b64004b52503b4fe03b39603b2fe03b1fe03b0fe03affe 03ae6403ad0e03acab2505ac6403abaa1205ab2503aa1203a98a4105a9fa03a8fe03a7fe03a6 fe03a51203a4fe03a3a20e05a33203a20e03a16403a08a4105a096039ffe039e9d0c059efe03 9d0c039c9b19059c64039b9a10059b19039a1003990a0398fe0397960d0597fe03960d03958a 410595960394930e05942803930e0392fa039190bb0591fe03908f5d0590bb039080048f8e25 058f5d038f40048e25038dfe038c8b2e058cfe038b2e038a8625058a410389880b0589140388 0b03878625058764038685110586250385110384fe038382110583fe0382110381fe0380fe03 7ffe0340ff7e7d7d057efe037d7d037c64037b5415057b25037afe0379fe03780e03770c0376 0a0375fe0374fa0373fa0372fa0371fa0370fe036ffe036efe036c21036bfe036a1142056a53 0369fe03687d036711420566fe0365fe0364fe0363fe0362fe03613a0360fa035e0c035dfe03 5bfe035afe0359580a0559fa03580a035716190557320356fe03555415055542035415035301 1005531803521403514a130551fe03500b034ffe034e4d10054efe034d10034cfe034b4a1305 4bfe034a4910054a1303491d0d05491003480d0347fe0346960345960344fe0343022d0543fa 0342bb03414b0340fe033ffe033e3d12053e14033d3c0f053d12033c3b0d053c40ff0f033b0d 033afe0339fe033837140538fa033736100537140336350b05361003350b03341e03330d0332 310b0532fe03310b03302f0b05300d032f0b032e2d09052e10032d09032c32032b2a25052b64 032a2912052a25032912032827250528410327250326250b05260f03250b0324fe0323fe0322 0f03210110052112032064031ffa031e1d0d051e64031d0d031c1142051cfe031bfa031a4203 1911420519fe031864031716190517fe031601100516190315fe0314fe0313fe031211420512 fe0311022d05114203107d030f64030efe030d0c16050dfe030c0110050c16030bfe030a1003 09fe0308022d0508fe030714030664030401100504fe03401503022d0503fe0302011005022d 0301100300fe0301b80164858d012b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1d00> ] def /f-0-0 currentdict end definefont pop %%EndResource %%EndSetup %%Page: 1 1 %%BeginPageSetup %%PageBoundingBox: 3 4 100 146 %%EndPageSetup q 3 4 97 142 rectclip 1 0 0 -1 0 149 cm q 0.85098 0.819608 0.905882 rg 21.973 45.102 59.742 22.578 re f 0.188235 0.109804 0.109804 rg 1.01661 w 0 J 0 j [] 0.0 d 4 M q 1 0 0 1 0 0 cm 21.973 45.102 59.742 22.578 re S Q 0.85098 0.819608 0.905882 rg 22.008 72.969 59.742 27.727 re f 0.188235 0.109804 0.109804 rg 1.126575 w q 1 0 0 1 0 0 cm 22.008 72.969 59.742 27.727 re S Q 0.85098 0.819608 0.905882 rg 21.617 21.723 59.633 18.535 re f 0.188235 0.109804 0.109804 rg 0.920205 w q 1 0 0 -1 0 0 cm 21.617 -21.723 59.633 -18.535 re S Q 0 g BT 8.992397 0 0 -9.941295 39.216781 33.499638 Tm /f-0-0 1 Tf [(Er)18(r)22(or)]TJ ET 0.501961 0.898039 1 rg 21.867 105.797 59.887 28.668 re f 0.188235 0.109804 0.109804 rg 1.14693 w q 1 0 0 1 0 0 cm 21.867 105.797 59.887 28.668 re S Q 0 g BT 9 0 0 -9 33.800539 123.028269 Tm /f-0-0 1 Tf (Scenario)Tj 8.992397 0 0 -9.941295 33.04189 57.733424 Tm (Options)Tj -0.050979 -3.067473 Td [(ConfF)73(ile)]TJ 9.999975 0 0 -9.999975 9.253024 15.369961 Tm (Analysis)Tj ET 1.566465 w q 1 0 0 1 0 0 cm 4.535 4.535 94.586 139.547 re S Q Q Q showpage %%Trailer end %%EOF simrisc-16.02.00/documentation/manual/latex/spread/0000775000175000017500000000000014665030471021126 5ustar frankfranksimrisc-16.02.00/documentation/manual/latex/spread/spread.eps0000664000175000017500000005677114665030471023135 0ustar frankfrank%!PS-Adobe-3.0 EPSF-3.0 %%Creator: cairo 1.16.0 (https://cairographics.org) %%CreationDate: Sun Dec 27 16:55:12 2020 %%Pages: 1 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%BoundingBox: 3 4 362 219 %%EndComments %%BeginProlog 50 dict begin /q { gsave } bind def /Q { grestore } bind def /cm { 6 array astore concat } bind def /w { setlinewidth } bind def /J { setlinecap } bind def /j { setlinejoin } bind def /M { setmiterlimit } bind def /d { setdash } bind def /m { moveto } bind def /l { lineto } bind def /c { curveto } bind def /h { closepath } bind def /re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto 0 exch rlineto 0 rlineto closepath } bind def /S { stroke } bind def /f { fill } bind def /f* { eofill } bind def /n { newpath } bind def /W { clip } bind def /W* { eoclip } bind def /BT { } bind def /ET { } bind def /BDC { mark 3 1 roll /BDC pdfmark } bind def /EMC { mark /EMC pdfmark } bind def /cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def /Tj { show currentpoint cairo_store_point } bind def /TJ { { dup type /stringtype eq { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse } forall currentpoint cairo_store_point } bind def /cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def /Tf { pop /cairo_font exch def /cairo_font_matrix where { pop cairo_selectfont } if } bind def /Td { matrix translate cairo_font_matrix matrix concatmatrix dup /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /g { setgray } bind def /rg { setrgbcolor } bind def /d1 { setcachedevice } bind def /cairo_data_source { CairoDataIndex CairoData length lt { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } { () } ifelse } def /cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def /cairo_image { image cairo_flush_ascii85_file } def /cairo_imagemask { imagemask cairo_flush_ascii85_file } def %%EndProlog %%BeginSetup %%BeginResource: font DejaVuSans 11 dict begin /FontType 42 def /FontName /DejaVuSans def /PaintType 0 def /FontMatrix [ 1 0 0 1 0 0 ] def /FontBBox [ 0 0 0 0 ] def /Encoding 256 array def 0 1 255 { Encoding exch /.notdef put } for Encoding 55 /seven put Encoding 58 /colon put Encoding 66 /B put Encoding 71 /G put Encoding 73 /I put Encoding 76 /L put Encoding 77 /M put Encoding 83 /S put Encoding 84 /T put Encoding 97 /a put Encoding 99 /c put Encoding 100 /d put Encoding 101 /e put Encoding 102 /f put Encoding 103 /g put Encoding 104 /h put Encoding 105 /i put Encoding 108 /l put Encoding 109 /m put Encoding 110 /n put Encoding 111 /o put Encoding 112 /p put Encoding 114 /r put Encoding 115 /s put Encoding 116 /t put Encoding 117 /u put Encoding 118 /v put Encoding 119 /w put /CharStrings 29 dict dup begin /.notdef 0 def /S 1 def /c 2 def /e 3 def /n 4 def /a 5 def /r 6 def /i 7 def /o 8 def /colon 9 def /s 10 def /p 11 def /d 12 def /L 13 def /M 14 def /l 15 def /t 16 def /g 17 def /T 18 def /u 19 def /m 20 def /I 21 def /f 22 def /v 23 def /G 24 def /w 25 def /h 26 def /B 27 def /seven 28 def end readonly def /sfnts [ <0001000000090080000300106376742000691d3900001420000001fe6670676d7134766a0000 1620000000ab676c796657fc6c210000009c00001384686561641b3ee6ec000016cc00000036 686865610d9f078a0000170400000024686d74788673100000001728000000746c6f63610001 16580000179c000000786d617870048a06710000181400000020707265703b07f10000001834 0000056800020066fe96046605a400030007001a400c04fb0006fb0108057f0204002fc4d4ec 310010d4ecd4ec301311211125211121660400fc73031bfce5fe96070ef8f272062900010087 ffe304a205f00027007e403c0d0c020e0b021e1f1e080902070a021f1f1e420a0b1e1f041501 0015a11494189511049500942591118c281e0a0b1f1b0700221b190e2d071914222810dcc4ec fcece4111239393939310010e4f4e4ec10eef6ee10c6111739304b535807100eed1117390710 0eed1117395922b20f2901015db61f292f294f29035d01152e012322061514161f011e011514 0421222627351e013332363534262f012e01353424333216044873cc5fa5b377a67ae2d7fedd fee76aef807bec72adbc879a7be2ca0117f569da05a4c53736807663651f192bd9b6d9e0302f d04546887e6e7c1f182dc0abc6e4260000010071ffe303e7047b0019003f401b00860188040e 860d880ab91104b917b8118c1a07120d004814451a10fce432ec310010e4f4ec10fef4ee10f5 ee30400b0f1b101b801b901ba01b05015d01152e0123220615141633323637150e0123220011 100021321603e74e9d50b3c6c6b3509d4e4da55dfdfed6012d010655a20435ac2b2be3cdcde3 2b2baa2424013e010e0112013a23000000020071ffe3047f047b0014001b0070402400150109 8608880515a90105b90c01bb18b912b80c8c1c1b1502081508004b02120f451c10fcecf4ecc4 111239310010e4f4ece410ee10ee10f4ee1112393040293f1d701da01dd01df01d053f003f01 3f023f153f1b052c072f082f092c0a6f006f016f026f156f1b095d71015d0115211e01333236 37150e01232000111000333200072e0123220607047ffcb20ccdb76ac76263d06bfef4fec701 29fce20107b802a5889ab90e025e5abec73434ae2a2c0138010a01130143feddc497b4ae9e00 000100ba00000464047b001300364019030900030e0106870e11b80cbc0a010208004e0d0908 0b461410fcec32f4ec31002f3ce4f4c4ec1112173930b46015cf1502015d0111231134262322 061511231133153e013332160464b87c7c95acb9b942b375c1c602a4fd5c029e9f9ebea4fd87 0460ae6564ef0002007bffe3042d047b000a002500bc4027191f0b17090e00a91706b90e1120 861fba1cb923b8118c170c001703180d09080b1f030814452610fcecccd4ec32321139393100 2fc4e4f4fcf4ec10c6ee10ee11391139123930406e301d301e301f3020302130223f27401d40 1e401f402040214022501d501e501f50205021502250277027851d871e871f87208721852290 27a027f0271e301e301f30203021401e401f40204021501e501f50205021601e601f60206021 701e701f70207021801e801f80208021185d015d0122061514163332363d01371123350e0123 2226353436332135342623220607353e0133321602bedfac816f99b9b8b83fbc88accbfdfb01 02a79760b65465be5af3f00233667b6273d9b4294cfd81aa6661c1a2bdc0127f8b2e2eaa2727 fc00000100ba0000034a047b001100304014060b0700110b03870eb809bc070a060800084612 10fcc4ec3231002fe4f4ecc4d4cc11123930b450139f1302015d012e01232206151123113315 3e0133321617034a1f492c9ca7b9b93aba85132e1c03b41211cbbefdb20460ae666305050000 000200c100000179061400030007002b400e06be04b100bc020501080400460810fc3cec3231 002fe4fcec30400b1009400950096009700905015d1333112311331523c1b8b8b8b80460fba0 0614e90000020071ffe30475047b000b0017004a401306b91200b90cb8128c1809120f510312 15451810fcecf4ec310010e4f4ec10ee3040233f197b007b067f077f087f097f0a7f0b7b0c7f 0d7f0e7f0f7f107f117b12a019f01911015d0122061514163332363534262732001110002322 00111000027394acab9593acac93f00112feeef0f1feef011103dfe7c9c9e7e8c8c7e99cfec8 feecfeedfec701390113011401380000000200f0000001c3042300030007001c400e068304a6 0083020501030400180810fc3cec3231002fecf4ec303733152311331523f0d3d3d3d3fefe04 23fe00000001006fffe303c7047b002700e7403c0d0c020e0b531f1e080902070a531f1f1e42 0a0b1e1f041500860189041486158918b91104b925b8118c281e0a0b1f1b0700521b080e0708 1422452810fcc4ecd4ece4111239393939310010e4f4ec10fef5ee10f5ee121739304b535807 100eed111739070eed1117395922b2002701015d406d1c0a1c0b1c0c2e092c0a2c0b2c0c3b09 3b0a3b0b3b0c0b200020012402280a280b2a132f142f152a16281e281f292029212427860a86 0b860c860d12000000010202060a060b030c030d030e030f03100319031a031b031c041d0927 2f293f295f297f2980299029a029f029185d005d7101152e012322061514161f011e01151406 23222627351e013332363534262f012e01353436333216038b4ea85a898962943fc4a5f7d85a c36c66c661828c65ab40ab98e0ce66b4043fae282854544049210e2a99899cb62323be353559 514b50250f2495829eac1e000000000200bafe5604a4047b0010001c003e401b1ab9000e14b9 0508b80e8c01bd03bc1d11120b471704000802461d10fcec3232f4ec310010e4e4e4f4c4ec10 c4ee304009601e801ea01ee01e04015d2511231133153e013332001110022322260134262322 061514163332360173b9b93ab17bcc00ffffcc7bb10238a79292a7a79292a7a8fdae060aaa64 61febcfef8fef8febc6101ebcbe7e7cbcbe7e700000000020071ffe3045a06140010001c0038 40191ab9000e14b905088c0eb801970317040008024711120b451d10fcecf4ec323231002fec e4f4c4ec10c4ee30b6601e801ea01e03015d0111331123350e01232202111000333216011416 33323635342623220603a2b8b83ab17ccbff00ffcb7cb1fdc7a79292a8a89292a703b6025ef9 eca86461014401080108014461fe15cbe7e7cbcbe7e7000100c90000046a05d500050025400c 0295008104011c033a00040610fcecec31002fe4ec304009300750078003800404015d133311 211521c9ca02d7fc5f05d5fad5aa000100c90000061f05d5000c00bf40340311070807021101 0208080702110302090a0901110a0a09420a070203080300af080b050908030201050a061c04 3e0a1c00040d10fcecfcec11173931002f3cc4ec32111739304b5358071005ed071008ed0710 08ed071005ed5922b2700e01015d405603070f080f09020a15021407130a260226072007260a 200a3407350a69027c027b07790a80028207820a90021604010b0313011b0323012c03270828 0934013c035608590965086a097608790981018d0395019b03145d005d132109012111231101 23011123c9012d017d017f012dc5fe7fcbfe7fc405d5fc0803f8fa2b051ffc000400fae10000 000100c100000179061400030022b7009702010800460410fcec31002fec30400d1005400550 0560057005f00506015d13331123c1b8b80614f9ec0000010037000002f2059e001300384019 0e05080f03a9001101bc08870a0b08090204000810120e461410fc3cc4fc3cc432393931002f ecf43cc4ec3211393930b2af1501015d01112115211114163b01152322263511233533110177 017bfe854b73bdbdd5a28787059efec28ffda0894e9a9fd202608f013e00000000020071fe56 045a047b000b0028004a4023190c1d0912861316b90f03b92623b827bc09b90fbd1a1d261900 080c4706121220452910fcc4ecf4ec323231002fc4e4ece4f4c4ec10fed5ee1112393930b660 2a802aa02a03015d01342623220615141633323617100221222627351e013332363d010e0123 220211101233321617353303a2a59594a5a59495a5b8fefefa61ac51519e52b5b439b27ccefc fcce7cb239b8023dc8dcdcc8c7dcdcebfee2fee91d1eb32c2abdbf5b6362013a01030104013a 6263aa000001fffa000004e905d50007004a400e0602950081040140031c0040050810d4e4fc e431002ff4ec3230014bb00a5458bd00080040000100080008ffc03811373859401300091f00 100110021f071009400970099f09095d03211521112311210604effdeecbfdee05d5aafad505 2b00000200aeffe30458047b00130014003b401c030900030e0106870e118c0a01bc14b80c0d 0908140b4e020800461510fcecf439ec3231002fe4e432f4c4ec1112173930b46f15c0150201 5d1311331114163332363511331123350e0123222601aeb87c7c95adb8b843b175c1c801cf01 ba02a6fd619f9fbea4027bfba0ac6663f003a800000100ba0000071d047b0022005a40260612 09180f00061d07150c871d2003b81bbc19100700110f0808065011080f501c18081a462310fc ec32fcfcfcec11123931002f3c3ce4f43cc4ec32111217393040133024502470249024a024a0 24bf24df24ff2409015d013e0133321615112311342623220615112311342623220615112311 33153e01333216042945c082afbeb972758fa6b972778da6b9b93fb0797aab03897c76f5e2fd 5c029ea19cbea4fd87029ea29bbfa3fd870460ae67627c000000000100c90000019305d50003 002eb700af02011c00040410fc4bb0105458b9000000403859ec31002fec3001400d30054005 500560058f059f05065d13331123c9caca05d5fa2b000001002f000002f8061400130059401c 0510010c08a906018700970e06bc0a02130700070905080d0f0b4c1410fc4bb00a5458b9000b 004038594bb00e5458b9000bffc038593cc4fc3cc4c412393931002fe432fcec10ee32123939 3001b640155015a015035d01152322061d012115211123112335333534363302f8b0634d012f fed1b9b0b0aebd0614995068638ffc2f03d18f4ebbab0001003d0000047f0460000600fb4027 03110405040211010205050402110302060006011100000642020300bf050605030201050400 0710d44bb00a5458b90000004038594bb014544bb015545b58b90000ffc03859c4173931002f ec3239304b5358071005ed071008ed071008ed071005ed592201408e48026a027b027f028602 80029102a402080600060109030904150015011a031a0426002601290329042008350035013a 033a043008460046014903490446054806400856005601590359045008660066016903690467 0568066008750074017b037b0475057a068500850189038904890586069600960197029a0398 0498059706a805a706b008c008df08ff083e5d005d133309013301233dc3015e015ec3fe5cfa 0460fc5403acfba0000000010073ffe3058b05f0001d0039402000051b0195031b950812a111 ae15950e91088c1e02001c1134043318190b101e10fcecfce4fcc4310010e4f4ecf4ec10fed4 ee11393930251121352111060423200011100021320417152e0123200011100021323604c3fe b6021275fee6a0fea2fe75018b015e9201076f70fc8bfeeefeed011301126ba8d50191a6fd7f 53550199016d016e01994846d75f60fecefed1fed2fece25000000010056000006350460000c 01eb404905550605090a0904550a0903550a0b0a025501020b0b0a0611070807051104050808 07021103020c000c011100000c420a050203060300bf0b080c0b0a09080605040302010b0700 0d10d44bb00a544bb011545b4bb012545b4bb013545b4bb00b545b58b9000000403859014bb0 0c544bb00d545b4bb010545b58b90000ffc03859cc173931002f3cec32321739304b53580710 05ed071008ed071008ed071005ed071008ed071005ed0705ed071008ed59220140ff05021602 1605220a350a49024905460a400a5b025b05550a500a6e026e05660a79027f0279057f058702 99029805940abc02bc05ce02c703cf051d0502090306040b050a080b09040b050c1502190316 041a051b081b09140b150c2500250123022703210425052206220725082709240a210b230c39 0336043608390c300e460248034604400442054006400740084409440a440b400e400e560056 015602500451055206520750085309540a550b6300640165026a0365046a056a066a076e0961 0b670c6f0e7500750179027d0378047d057a067f067a077f07780879097f097b0a760b7d0c87 0288058f0e97009701940293039c049b05980698079908402f960c9f0ea600a601a402a403ab 04ab05a906a907ab08a40caf0eb502b103bd04bb05b809bf0ec402c303cc04ca05795d005d13 331b01331b013301230b012356b8e6e5d9e6e5b8fedbd9f1f2d90460fc96036afc96036afba0 0396fc6a000100ba000004640614001300344019030900030e0106870e11b80c970a01020800 4e0d09080b461410fcec32f4ec31002f3cecf4c4ec1112173930b2601501015d011123113426 2322061511231133113e013332160464b87c7c95acb9b942b375c1c602a4fd5c029e9f9ebea4 fd870614fd9e6564ef00000300c9000004ec05d5000800110020004340231900950a09951281 01950aad1f110b080213191f05000e1c1605191c2e09001c12042110fcec32fcecd4ec111739 393931002fececf4ec10ee3930b20f2201015d01112132363534262301112132363534262325 213216151406071e01151404232101930144a39d9da3febc012b94919194fe0b0204e7fa807c 95a5fef0fbfde802c9fddd878b8c850266fe3e6f727170a6c0b189a21420cb98c8da000100a8 0000046805d5000600634018051102030203110405044205a0008103050301040100060710fc ccc411393931002ff4ec304b5358071005ed071005ed5922014bb0165458bd00070040000100 070007ffc03811373859401258020106031a05390548056703b000b006075d005d1321150123 0121a803c0fde2d301fefd3305d556fa81052b000000013500b800cb00cb00c100aa009c01a6 00b800660000007100cb00a002b20085007500b800c301cb0189022d00cb00a600f000d300aa 008700cb03aa0400014a003300cb000000d9050200f4015400b4009c01390114013907060400 044e04b4045204b804e704cd0037047304cd04600473013303a2055605a60556053903c50212 00c9001f00b801df007300ba03e9033303bc0444040e00df03cd03aa00e503aa0404000000cb 008f00a4007b00b80014016f007f027b0252008f00c705cd009a009a006f00cb00cd019e01d3 00f000ba018300d5009803040248009e01d500c100cb00f600830354027f00000333026600d3 00c700a400cd008f009a0073040005d5010a00fe022b00a400b4009c00000062009c0000001d 032d05d505d505d505f0007f007b005400a406b80614072301d300b800cb00a601c301ec0693 00a000d3035c037103db0185042304a80448008f0139011401390360008f05d5019a06140723 06660179046004600460047b009c00000277046001aa00e904600762007b00c5007f027b0000 00b4025205cd006600bc00660077061000cd013b01850389008f007b0000001d00cd074a042f 009c009c0000077d006f0000006f0335006a006f007b00ae00b2002d0396008f027b00f60083 0354063705f6008f009c04e10266008f018d02f600cd03440029006604ee0073000014000096 0000b707060504030201002c2010b002254964b040515820c859212d2cb002254964b0405158 20c859212d2c20100720b00050b00d7920b8ffff5058041b0559b0051cb0032508b0042523e1 20b00050b00d7920b8ffff5058041b0559b0051cb0032508e12d2c4b505820b0fd454459212d 2cb002254560442d2c4b5358b00225b0022545445921212d2c45442d2cb00225b0022549b005 25b005254960b0206368208a108a233a8a10653a2d000001000000025eb88bd4f1005f0f3cf5 001f080000000000daed9e8700000000daed9e87f7d6fc4c0e5909dc00000008000200010000 000000010000076dfe1d00000efef7d6fa510e5900010000000000000000000000000000001d 04cd0066051400870466007104ec0071051200ba04e7007b034a00ba023900c104e5007102b2 00f0042b006f051400ba05140071047500c906e700c9023900c1032300370514007104e3fffa 051200ae07cb00ba025c00c902d1002f04bc003d06330073068b0056051200ba057d00c90517 00a800000000000000440000013c000001d4000002a8000003200000044c000004bc0000050c 000005b0000005f000000750000007f000000888000008cc000009c800000a0400000a800000 0b4800000bb800000c3c00000d0000000d4800000de000000f0400000fac000011d000001248 000012f80000138400010000001d0354002b0068000c00020010009900080000041502160008 0004b8028040fffbfe03fa1403f92503f83203f79603f60e03f5fe03f4fe03f32503f20e03f1 9603f02503ef8a4105effe03ee9603ed9603ecfa03ebfa03eafe03e93a03e84203e7fe03e632 03e5e45305e59603e48a4105e45303e3e22f05e3fa03e22f03e1fe03e0fe03df3203de1403dd 9603dcfe03db1203da7d03d9bb03d8fe03d68a4105d67d03d5d44705d57d03d44703d3d21b05 d3fe03d21b03d1fe03d0fe03cffe03cefe03cd9603cccb1e05ccfe03cb1e03ca3203c9fe03c6 851105c61c03c51603c4fe03c3fe03c2fe03c1fe03c0fe03bffe03befe03bdfe03bcfe03bbfe 03ba1103b9862505b9fe03b8b7bb05b8fe03b7b65d05b7bb03b78004b6b52505b65d40ff03b6 4004b52503b4fe03b39603b2fe03b1fe03b0fe03affe03ae6403ad0e03acab2505ac6403abaa 1205ab2503aa1203a98a4105a9fa03a8fe03a7fe03a6fe03a51203a4fe03a3a20e05a33203a2 0e03a16403a08a4105a096039ffe039e9d0c059efe039d0c039c9b19059c64039b9a10059b19 039a1003990a0398fe0397960d0597fe03960d03958a410595960394930e05942803930e0392 fa039190bb0591fe03908f5d0590bb039080048f8e25058f5d038f40048e25038dfe038c8b2e 058cfe038b2e038a8625058a410389880b05891403880b038786250587640386851105862503 85110384fe038382110583fe0382110381fe0380fe037ffe0340ff7e7d7d057efe037d7d037c 64037b5415057b25037afe0379fe03780e03770c03760a0375fe0374fa0373fa0372fa0371fa 0370fe036ffe036efe036c21036bfe036a1142056a530369fe03687d036711420566fe0365fe 0364fe0363fe0362fe03613a0360fa035e0c035dfe035bfe035afe0359580a0559fa03580a03 5716190557320356fe035554150555420354150353011005531803521403514a130551fe0350 0b034ffe034e4d10054efe034d10034cfe034b4a13054bfe034a4910054a1303491d0d054910 03480d0347fe0346960345960344fe0343022d0543fa0342bb03414b0340fe033ffe033e3d12 053e14033d3c0f053d12033c3b0d053c40ff0f033b0d033afe0339fe033837140538fa033736 100537140336350b05361003350b03341e03330d0332310b0532fe03310b03302f0b05300d03 2f0b032e2d09052e10032d09032c32032b2a25052b64032a2912052a25032912032827250528 410327250326250b05260f03250b0324fe0323fe03220f03210110052112032064031ffa031e 1d0d051e64031d0d031c1142051cfe031bfa031a42031911420519fe031864031716190517fe 031601100516190315fe0314fe0313fe031211420512fe0311022d05114203107d030f64030e fe030d0c16050dfe030c0110050c16030bfe030a100309fe0308022d0508fe03071403066403 0401100504fe03401503022d0503fe0302011005022d0301100300fe0301b80164858d012b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b002b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1d00> ] def /f-0-0 currentdict end definefont pop %%EndResource %%EndSetup %%Page: 1 1 %%BeginPageSetup %%PageBoundingBox: 3 4 362 219 %%EndPageSetup q 3 4 359 215 rectclip 1 0 0 -1 0 222 cm q 0.85098 0.819608 0.905882 rg 98.711 4.801 82 27.801 re f 0.188235 0.109804 0.109804 rg 1.32171 w 0 J 0 j [] 0.0 d 4 M q 1 0 0 1 0 0 cm 98.711 4.801 82 27.801 re S Q 0 g BT 8.992397 0 0 -9.941295 102.080918 21.443433 Tm /f-0-0 1 Tf [(Scenario::spr)22(ead)]TJ ET 0.501961 0.898039 1 rg 4.367 4.367 69.254 28.668 re f 0.188235 0.109804 0.109804 rg 1.233398 w q 1 0 0 1 0 0 cm 4.367 4.367 69.254 28.668 re S Q 0 g BT 9 0 0 -9 9.865194 21.183749 Tm /f-0-0 1 Tf [(L)18(oop::spr)22(ead)]TJ ET 0.75 w q 1 0 0 1 0 0 cm 73.621 18.699 m 98.711 18.699 l S Q 81.121 18.699 m 84.121 15.699 l 73.621 18.699 l 84.121 21.699 l h 81.121 18.699 m f* 0.8 w q 1 0 0 1 0 0 cm 81.121 18.699 m 84.121 15.699 l 73.621 18.699 l 84.121 21.699 l h 81.121 18.699 m S Q 0.596078 1 0.501961 rg 37.641 54.012 88.508 28.586 re f 0.188235 0.109804 0.109804 rg 1.39236 w q 1 0 0 1 0 0 cm 37.641 54.012 88.508 28.586 re S Q 0 g BT 9 0 0 -9 40.517817 69.958128 Tm /f-0-0 1 Tf [(Modalities::spr)22(ead)]TJ ET 0.596078 1 0.501961 rg 37.641 91.594 88.59 28.586 re f 0.188235 0.109804 0.109804 rg 1.393043 w q 1 0 0 1 0 0 cm 37.641 91.594 88.59 28.586 re S Q 0 g BT 9 0 0 -9 40.381392 108.412297 Tm /f-0-0 1 Tf [(Scr)22(eening::spr)22(ead)]TJ ET 0.596078 1 0.501961 rg 38.277 134.551 69.254 28.668 re f 0.188235 0.109804 0.109804 rg 1.233398 w q 1 0 0 1 0 0 cm 38.277 134.551 69.254 28.668 re S Q 0 g BT 9 0 0 -9 40.454926 150.617123 Tm /f-0-0 1 Tf [(T)152(umor)17(::spr)22(ead)]TJ ET 0.789097 w q 1 0 0 1 0 0 cm 10.648 33.492 m 10.672 148.148 l S Q 0.75 w q 1 0 0 1 0 0 cm 10.883 147.859 m 37.121 147.613 l S Q 29.621 147.613 m 26.621 150.613 l 37.121 147.613 l 26.621 144.613 l h 29.621 147.613 m f* 0.8 w q -1 0 0 -1 0 0 cm -29.621 -147.613 m -26.621 -150.613 l -37.121 -147.613 l -26.621 -144.613 l h -29.621 -147.613 m S Q 0.75 w q 1 0 0 1 0 0 cm 9.859 106.195 m 36.094 105.949 l S Q 28.594 105.949 m 25.594 108.949 l 36.094 105.949 l 25.594 102.949 l h 28.594 105.949 m f* 0.8 w q -1 0 0 -1 0 0 cm -28.594 -105.949 m -25.594 -108.949 l -36.094 -105.949 l -25.594 -102.949 l h -28.594 -105.949 m S Q 0.75 w q 1 0 0 1 0 0 cm 10.422 67.605 m 36.66 67.359 l S Q 29.16 67.359 m 26.16 70.359 l 36.66 67.359 l 26.16 64.359 l h 29.16 67.359 m f* 0.8 w q -1 0 0 -1 0 0 cm -29.16 -67.359 m -26.16 -70.359 l -36.66 -67.359 l -26.16 -64.359 l h -29.16 -67.359 m S Q 0.8 1 0 rg 220.77 135.773 87.359 28.594 re f 0.160784 0.109804 0.188235 rg 1.383473 w q 1 0 0 1 0 0 cm 220.77 135.773 87.359 28.594 re S Q 0 g BT 9 0 0 -9 222.479162 152.482476 Tm /f-0-0 1 Tf [(T)152(umorInfo::spr)22(ead)]TJ ET 0.8 1 0 rg 220.719 51.82 87.359 28.594 re f 0.160784 0.109804 0.188235 rg q 1 0 0 1 0 0 cm 220.719 51.82 87.359 28.594 re S Q 0 g BT 9 0 0 -9 227.383642 67.851065 Tm /f-0-0 1 Tf [(Survival::spr)22(ead)]TJ ET 0.8 1 0 rg 219.867 93.555 79.707 28.656 re f 0.160784 0.109804 0.188235 rg 1.32291 w q 1 0 0 1 0 0 cm 219.867 93.555 79.707 28.656 re S Q 0 g BT 9 0 0 -9 224.708746 109.856346 Tm /f-0-0 1 Tf [(Gr)22(owth::spr)22(ead)]TJ ET 1 0.901961 0.501961 rg 167.699 188.629 71.961 28.648 re f 0.160784 0.109804 0.188235 rg 1.256842 w q 1 0 0 1 0 0 cm 167.699 188.629 71.961 28.648 re S Q 0 g BT 9 0 0 -9 171.822737 204.687218 Tm /f-0-0 1 Tf [(Beir7::spr)22(ead)]TJ ET 1 0.901961 0.501961 rg 272.746 188.215 87.988 28.59 re f 0.160784 0.109804 0.188235 rg 1.38834 w q 1 0 0 1 0 0 cm 272.746 188.215 87.988 28.59 re S Q 0 g BT 9 0 0 -9 275.925726 204.245201 Tm /f-0-0 1 Tf [(Incidence::spr)22(ead)]TJ ET 0.75 w q 1 0 0 1 0 0 cm 107.438 148.988 m 219.676 148.742 l S Q 212.176 148.742 m 209.176 151.742 l 219.676 148.742 l 209.176 145.742 l h 212.176 148.742 m f* 0.8 w q -1 0 0 -1 0 0 cm -212.176 -148.742 m -209.176 -151.742 l -219.676 -148.742 l -209.176 -145.742 l h -212.176 -148.742 m S Q 0.665554 w q 1 0 0 1 0 0 cm 198.891 65.898 m 219.551 65.652 l S Q 212.895 65.652 m 210.234 68.316 l 219.551 65.652 l 210.234 62.992 l h 212.895 65.652 m f* 0.709925 w q -1 0 0 -1 0 0 cm -212.895 -65.652 m -210.234 -68.316 l -219.551 -65.652 l -210.234 -62.992 l h -212.895 -65.652 m S Q 0.63887 w q 1 0 0 1 0 0 cm 199.957 105.449 m 218.996 105.203 l S Q 212.605 105.203 m 210.051 107.758 l 218.996 105.203 l 210.051 102.648 l h 212.605 105.203 m f* 0.681461 w q -1 0 0 -1 0 0 cm -212.605 -105.203 m -210.051 -107.758 l -218.996 -105.203 l -210.051 -102.648 l h -212.605 -105.203 m S Q 0.75 w q 1 0 0 1 0 0 cm 198.891 65.898 m 199.691 148.371 l S Q 0.642 w q 1 0 0 1 0 0 cm 202.836 187.23 m 203.445 175.043 l 318.445 175.012 l 318.648 187.062 l S Q 203.156 180.816 m 200.723 178.125 l 202.836 187.23 l 205.852 178.383 l h 203.156 180.816 m f* 0.683941 w q 0.0501216 -1 1 0.0501216 0 0 cm -170.206 211.687 m -167.643 209.125 l -176.62 211.688 l -167.644 214.254 l h -170.206 211.687 m S Q 318.539 180.645 m 315.93 178.117 l 318.648 187.062 l 321.062 178.031 l h 318.539 180.645 m f* 0.684703 w q -0.0168174 -1 1 -0.0168174 0 0 cm -185.949 315.412 m -183.378 312.846 l -192.367 315.413 l -183.379 317.979 l h -185.949 315.412 m S Q 0.75 w q 1 0 0 1 0 0 cm 263.367 164.246 m 263.27 174.766 l S Q Q Q showpage %%Trailer end %%EOF simrisc-16.02.00/documentation/manual/latex/outer.eps0000664000175000017500000004604314665030471021526 0ustar frankfrank%!PS-Adobe-3.0 EPSF-3.0 %%Creator: cairo 1.16.0 (https://cairographics.org) %%CreationDate: Thu Sep 3 16:44:10 2020 %%Pages: 1 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%BoundingBox: 3 4 238 215 %%EndComments %%BeginProlog 50 dict begin /q { gsave } bind def /Q { grestore } bind def /cm { 6 array astore concat } bind def /w { setlinewidth } bind def /J { setlinecap } bind def /j { setlinejoin } bind def /M { setmiterlimit } bind def /d { setdash } bind def /m { moveto } bind def /l { lineto } bind def /c { curveto } bind def /h { closepath } bind def /re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto 0 exch rlineto 0 rlineto closepath } bind def /S { stroke } bind def /f { fill } bind def /f* { eofill } bind def /n { newpath } bind def /W { clip } bind def /W* { eoclip } bind def /BT { } bind def /ET { } bind def /BDC { mark 3 1 roll /BDC pdfmark } bind def /EMC { mark /EMC pdfmark } bind def /cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def /Tj { show currentpoint cairo_store_point } bind def /TJ { { dup type /stringtype eq { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse } forall currentpoint cairo_store_point } bind def /cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def /Tf { pop /cairo_font exch def /cairo_font_matrix where { pop cairo_selectfont } if } bind def /Td { matrix translate cairo_font_matrix matrix concatmatrix dup /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def /g { setgray } bind def /rg { setrgbcolor } bind def /d1 { setcachedevice } bind def /cairo_data_source { CairoDataIndex CairoData length lt { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } { () } ifelse } def /cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def /cairo_image { image cairo_flush_ascii85_file } def /cairo_imagemask { imagemask cairo_flush_ascii85_file } def %%EndProlog %%BeginSetup %%BeginResource: font DejaVuSans 11 dict begin /FontType 42 def /FontName /DejaVuSans def /PaintType 0 def /FontMatrix [ 1 0 0 1 0 0 ] def /FontBBox [ 0 0 0 0 ] def /Encoding 256 array def 0 1 255 { Encoding exch /.notdef put } for Encoding 32 /space put Encoding 46 /period put Encoding 65 /A put Encoding 68 /D put Encoding 76 /L put Encoding 79 /O put Encoding 80 /P put Encoding 83 /S put Encoding 97 /a put Encoding 101 /e put Encoding 103 /g put Encoding 105 /i put Encoding 108 /l put Encoding 109 /m put Encoding 110 /n put Encoding 111 /o put Encoding 112 /p put Encoding 114 /r put Encoding 115 /s put Encoding 116 /t put Encoding 117 /u put Encoding 121 /y put /CharStrings 23 dict dup begin /.notdef 0 def /L 1 def /o 2 def /p 3 def /m 4 def /a 5 def /i 6 def /n 7 def /A 8 def /l 9 def /y 10 def /s 11 def /S 12 def /u 13 def /t 14 def /r 15 def /O 16 def /e 17 def /space 18 def /P 19 def /g 20 def /D 21 def /period 22 def end readonly def /sfnts [ <0001000000090080000300106376742000691d3900000f3c000001fe6670676d7134766a0000 113c000000ab676c79668f9ee3770000009c00000ea0686561641b3ee6ec000011e800000036 686865610d9f07840000122000000024686d747868c20c6f000012440000005c6c6f63610000 b63c000012a0000000606d617870048406710000130000000020707265703b07f10000001320 0000056800020066fe96046605a400030007001a400c04fb0006fb0108057f0204002fc4d4ec 310010d4ecd4ec301311211125211121660400fc73031bfce5fe96070ef8f2720629000100c9 0000046a05d500050025400c0295008104011c033a00040610fcecec31002fe4ec3040093007 50078003800404015d133311211521c9ca02d7fc5f05d5fad5aa00020071ffe30475047b000b 0017004a401306b91200b90cb8128c1809120f51031215451810fcecf4ec310010e4f4ec10ee 3040233f197b007b067f077f087f097f0a7f0b7b0c7f0d7f0e7f0f7f107f117b12a019f01911 015d012206151416333236353426273200111000232200111000027394acab9593acac93f001 12feeef0f1feef011103dfe7c9c9e7e8c8c7e99cfec8feecfeedfec701390113011401380000 000200bafe5604a4047b0010001c003e401b1ab9000e14b90508b80e8c01bd03bc1d11120b47 1704000802461d10fcec3232f4ec310010e4e4e4f4c4ec10c4ee304009601e801ea01ee01e04 015d2511231133153e013332001110022322260134262322061514163332360173b9b93ab17b cc00ffffcc7bb10238a79292a7a79292a7a8fdae060aaa6461febcfef8fef8febc6101ebcbe7 e7cbcbe7e7000000000100ba0000071d047b0022005a4026061209180f00061d07150c871d20 03b81bbc19100700110f0808065011080f501c18081a462310fcec32fcfcfcec11123931002f 3c3ce4f43cc4ec32111217393040133024502470249024a024a024bf24df24ff2409015d013e 013332161511231134262322061511231134262322061511231133153e01333216042945c082 afbeb972758fa6b972778da6b9b93fb0797aab03897c76f5e2fd5c029ea19cbea4fd87029ea2 9bbfa3fd870460ae67627c0000000002007bffe3042d047b000a002500bc4027191f0b17090e 00a91706b90e1120861fba1cb923b8118c170c001703180d09080b1f030814452610fcecccd4 ec323211393931002fc4e4f4fcf4ec10c6ee10ee11391139123930406e301d301e301f302030 2130223f27401d401e401f402040214022501d501e501f50205021502250277027851d871e87 1f8720872185229027a027f0271e301e301f30203021401e401f40204021501e501f50205021 601e601f60206021701e701f70207021801e801f80208021185d015d0122061514163332363d 01371123350e01232226353436332135342623220607353e0133321602bedfac816f99b9b8b8 3fbc88accbfdfb0102a79760b65465be5af3f00233667b6273d9b4294cfd81aa6661c1a2bdc0 127f8b2e2eaa2727fc00000200c100000179061400030007002b400e06be04b100bc02050108 0400460810fc3cec3231002fe4fcec30400b1009400950096009700905015d13331123113315 23c1b8b8b8b80460fba00614e900000100ba00000464047b001300364019030900030e010687 0e11b80cbc0a010208004e0d09080b461410fcec32f4ec31002f3ce4f4c4ec1112173930b460 15cf1502015d0111231134262322061511231133153e013332160464b87c7c95acb9b942b375 c1c602a4fd5c029e9f9ebea4fd870460ae6564ef000200100000056805d50002000a00c24041 00110100040504021105050401110a030a0011020003030a0711050406110505040911030a08 110a030a4200030795010381090509080706040302010009050a0b10d4c4173931002f3ce4d4 ec1239304b5358071005ed0705ed071005ed0705ed071008ed071005ed071005ed071008ed59 22b2200c01015d40420f010f020f070f080f005800760070008c000907010802060309041601 190256015802500c67016802780176027c0372047707780887018802800c980299039604175d 005d090121013301230321032302bcfeee0225fe7be50239d288fd5f88d5050efd1903aefa2b 017ffe810000000100c100000179061400030022b7009702010800460410fcec31002fec3040 0d10054005500560057005f00506015d13331123c1b8b80614f9ec000001003dfe56047f0460 000f018b40430708020911000f0a110b0a00000f0e110f000f0d110c0d00000f0d110e0d0a0b 0a0c110b0b0a420d0b0910000b058703bd0e0bbc100e0d0c0a09060300080f040f0b1010d44b b00a544bb008545b58b9000b004038594bb0145458b9000bffc03859c4c4111739310010e432 f4ec113911391239304b5358071005ed071008ed071008ed071005ed071008ed0705ed173259 220140f0060005080609030d160a170d100d230d350d490a4f0a4e0d5a095a0a6a0a870d800d 930d120a000a09060b050c0b0e0b0f1701150210041005170a140b140c1a0e1a0f2700240124 022004200529082809250a240b240c270d2a0e2a0f201137003501350230043005380a360b36 0c380d390e390f30114100400140024003400440054006400740084209450a470d490e490f40 115400510151025503500450055606550756085709570a550b550c590e590f50116601660268 0a690e690f60117b08780e780f89008a09850b850c890d890e890f9909950b950c9a0e9a0fa4 0ba40cab0eab0fb011cf11df11ff11655d005d050e012b01353332363f01013309013302934e 947c936c4c543321fe3bc3015e015ec368c87a9a488654044efc94036c0000000001006fffe3 03c7047b002700e7403c0d0c020e0b531f1e080902070a531f1f1e420a0b1e1f041500860189 041486158918b91104b925b8118c281e0a0b1f1b0700521b080e07081422452810fcc4ecd4ec e4111239393939310010e4f4ec10fef5ee10f5ee121739304b535807100eed111739070eed11 17395922b2002701015d406d1c0a1c0b1c0c2e092c0a2c0b2c0c3b093b0a3b0b3b0c0b200020 012402280a280b2a132f142f152a16281e281f292029212427860a860b860c860d1200000001 0202060a060b030c030d030e030f03100319031a031b031c041d09272f293f295f297f298029 9029a029f029185d005d7101152e012322061514161f011e0115140623222627351e01333236 3534262f012e01353436333216038b4ea85a898962943fc4a5f7d85ac36c66c661828c65ab40 ab98e0ce66b4043fae282854544049210e2a99899cb62323be353559514b50250f2495829eac 1e00000000010087ffe304a205f00027007e403c0d0c020e0b021e1f1e080902070a021f1f1e 420a0b1e1f0415010015a11494189511049500942591118c281e0a0b1f1b0700221b190e2d07 1914222810dcc4ecfcece4111239393939310010e4f4e4ec10eef6ee10c6111739304b535807 100eed11173907100eed1117395922b20f2901015db61f292f294f29035d01152e0123220615 14161f011e0115140421222627351e013332363534262f012e01353424333216044873cc5fa5 b377a67ae2d7feddfee76aef807bec72adbc879a7be2ca0117f569da05a4c53736807663651f 192bd9b6d9e0302fd04546887e6e7c1f182dc0abc6e42600000200aeffe30458047b00130014 003b401c030900030e0106870e118c0a01bc14b80c0d0908140b4e020800461510fcecf439ec 3231002fe4e432f4c4ec1112173930b46f15c01502015d131133111416333236351133112335 0e0123222601aeb87c7c95adb8b843b175c1c801cf01ba02a6fd619f9fbea4027bfba0ac6663 f003a80000010037000002f2059e0013003840190e05080f03a9001101bc08870a0b08090204 000810120e461410fc3cc4fc3cc432393931002fecf43cc4ec3211393930b2af1501015d0111 2115211114163b01152322263511233533110177017bfe854b73bdbdd5a28787059efec28ffd a0894e9a9fd202608f013e000000000100ba0000034a047b001100304014060b0700110b0387 0eb809bc070a06080008461210fcc4ec3231002fe4f4ecc4d4cc11123930b450139f1302015d 012e012322061511231133153e0133321617034a1f492c9ca7b9b93aba85132e1c03b41211cb befdb20460ae66630505000000020073ffe305d905f0000b00170023401306951200950c9112 8c1809190f33031915101810fcecfcec310010e4f4ec10ee3001220011100033320011100027 20001110002120001110000327dcfefd0103dcdc0101feffdc013a0178fe88fec6fec5fe8701 79054cfeb8fee5fee6feb80148011a011b0148a4fe5bfe9efe9ffe5b01a40162016201a50000 00020071ffe3047f047b0014001b00704024001501098608880515a90105b90c01bb18b912b8 0c8c1c1b1502081508004b02120f451c10fcecf4ecc4111239310010e4f4ece410ee10ee10f4 ee1112393040293f1d701da01dd01df01d053f003f013f023f153f1b052c072f082f092c0a6f 006f016f026f156f1b095d71015d0115211e0133323637150e01232000111000333200072e01 23220607047ffcb20ccdb76ac76263d06bfef4fec70129fce20107b802a5889ab90e025e5abe c73434ae2a2c0138010a01130143feddc497b4ae9e00000200c90000048d05d500080013003a 40180195100095098112100a0802040005190d3f11001c09041410fcec32fcec11173931002f f4ecd4ec30400b0f151f153f155f15af1505015d011133323635342623252132041514042b01 11230193fe8d9a9a8dfe3801c8fb0101fefffbfeca052ffdcf92878692a6e3dbdde2fda80002 0071fe56045a047b000b0028004a4023190c1d0912861316b90f03b92623b827bc09b90fbd1a 1d261900080c4706121220452910fcc4ecf4ec323231002fc4e4ece4f4c4ec10fed5ee111239 3930b6602a802aa02a03015d01342623220615141633323617100221222627351e013332363d 010e0123220211101233321617353303a2a59594a5a59495a5b8fefefa61ac51519e52b5b439 b27ccefcfcce7cb239b8023dc8dcdcc8c7dcdcebfee2fee91d1eb32c2abdbf5b6362013a0103 0104013a6263aa00000200c9000005b005d500080011002e4015009509810195100802100a00 05190d32001c09041210fcecf4ec113939393931002fecf4ec30b2601301015d011133200011 1000212521200011100029010193f40135011ffee1fecbfe42019f01b20196fe68fe50fe6105 2ffb770118012e012c0117a6fe97fe80fe7efe960000000100db000001ae00fe00030011b700 8302011900180410fcec31002fec3037331523dbd3d3fefe013500b800cb00cb00c100aa009c 01a600b800660000007100cb00a002b20085007500b800c301cb0189022d00cb00a600f000d3 00aa008700cb03aa0400014a003300cb000000d9050200f4015400b4009c0139011401390706 0400044e04b4045204b804e704cd0037047304cd04600473013303a2055605a60556053903c5 021200c9001f00b801df007300ba03e9033303bc0444040e00df03cd03aa00e503aa04040000 00cb008f00a4007b00b80014016f007f027b0252008f00c705cd009a009a006f00cb00cd019e 01d300f000ba018300d5009803040248009e01d500c100cb00f600830354027f000003330266 00d300c700a400cd008f009a0073040005d5010a00fe022b00a400b4009c00000062009c0000 001d032d05d505d505d505f0007f007b005400a406b80614072301d300b800cb00a601c301ec 069300a000d3035c037103db0185042304a80448008f0139011401390360008f05d5019a0614 072306660179046004600460047b009c00000277046001aa00e904600762007b00c5007f027b 000000b4025205cd006600bc00660077061000cd013b01850389008f007b0000001d00cd074a 042f009c009c0000077d006f0000006f0335006a006f007b00ae00b2002d0396008f027b00f6 00830354063705f6008f009c04e10266008f018d02f600cd03440029006604ee007300001400 00960000b707060504030201002c2010b002254964b040515820c859212d2cb002254964b040 515820c859212d2c20100720b00050b00d7920b8ffff5058041b0559b0051cb0032508b00425 23e120b00050b00d7920b8ffff5058041b0559b0051cb0032508e12d2c4b505820b0fd454459 212d2cb002254560442d2c4b5358b00225b0022545445921212d2c45442d2cb00225b0022549 b00525b005254960b0206368208a108a233a8a10653a2d000001000000025eb857fef6665f0f 3cf5001f080000000000daed9e8700000000daed9e87f7d6fc4c0e5909dc0000000800020001 0000000000010000076dfe1d00000efef7d6fa510e5900010000000000000000000000000000 001704cd0066047500c904e50071051400ba07cb00ba04e7007b023900c1051200ba05790010 023900c104bc003d042b006f05140087051200ae03230037034a00ba064c007304ec0071028b 000004d300c905140071062900c9028b00db0000000000000044000000880000012c000001cc 00000290000003bc0000040c0000048400000580000005bc00000788000008e8000009e00000 0a6400000ae000000b5000000bdc00000cb000000cb000000d3000000df800000e7800000ea0 0001000000170354002b0068000c000200100099000800000415021600080004b8028040fffb fe03fa1403f92503f83203f79603f60e03f5fe03f4fe03f32503f20e03f19603f02503ef8a41 05effe03ee9603ed9603ecfa03ebfa03eafe03e93a03e84203e7fe03e63203e5e45305e59603 e48a4105e45303e3e22f05e3fa03e22f03e1fe03e0fe03df3203de1403dd9603dcfe03db1203 da7d03d9bb03d8fe03d68a4105d67d03d5d44705d57d03d44703d3d21b05d3fe03d21b03d1fe 03d0fe03cffe03cefe03cd9603cccb1e05ccfe03cb1e03ca3203c9fe03c6851105c61c03c516 03c4fe03c3fe03c2fe03c1fe03c0fe03bffe03befe03bdfe03bcfe03bbfe03ba1103b9862505 b9fe03b8b7bb05b8fe03b7b65d05b7bb03b78004b6b52505b65d40ff03b64004b52503b4fe03 b39603b2fe03b1fe03b0fe03affe03ae6403ad0e03acab2505ac6403abaa1205ab2503aa1203 a98a4105a9fa03a8fe03a7fe03a6fe03a51203a4fe03a3a20e05a33203a20e03a16403a08a41 05a096039ffe039e9d0c059efe039d0c039c9b19059c64039b9a10059b19039a1003990a0398 fe0397960d0597fe03960d03958a410595960394930e05942803930e0392fa039190bb0591fe 03908f5d0590bb039080048f8e25058f5d038f40048e25038dfe038c8b2e058cfe038b2e038a 8625058a410389880b05891403880b03878625058764038685110586250385110384fe038382 110583fe0382110381fe0380fe037ffe0340ff7e7d7d057efe037d7d037c64037b5415057b25 037afe0379fe03780e03770c03760a0375fe0374fa0373fa0372fa0371fa0370fe036ffe036e fe036c21036bfe036a1142056a530369fe03687d036711420566fe0365fe0364fe0363fe0362 fe03613a0360fa035e0c035dfe035bfe035afe0359580a0559fa03580a035716190557320356 fe035554150555420354150353011005531803521403514a130551fe03500b034ffe034e4d10 054efe034d10034cfe034b4a13054bfe034a4910054a1303491d0d05491003480d0347fe0346 960345960344fe0343022d0543fa0342bb03414b0340fe033ffe033e3d12053e14033d3c0f05 3d12033c3b0d053c40ff0f033b0d033afe0339fe033837140538fa033736100537140336350b 05361003350b03341e03330d0332310b0532fe03310b03302f0b05300d032f0b032e2d09052e 10032d09032c32032b2a25052b64032a2912052a25032912032827250528410327250326250b 05260f03250b0324fe0323fe03220f03210110052112032064031ffa031e1d0d051e64031d0d 031c1142051cfe031bfa031a42031911420519fe031864031716190517fe0316011005161903 15fe0314fe0313fe031211420512fe0311022d05114203107d030f64030efe030d0c16050dfe 030c0110050c16030bfe030a100309fe0308022d0508fe030714030664030401100504fe0340 1503022d0503fe0302011005022d0301100300fe0301b80164858d012b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b002b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 2b2b2b2b2b2b2b2b2b1d00> ] def /f-0-0 currentdict end definefont pop %%EndResource %%EndSetup %%Page: 1 1 %%BeginPageSetup %%PageBoundingBox: 3 4 238 215 %%EndPageSetup q 3 4 235 211 rectclip 1 0 0 -1 0 218 cm q 0.85098 0.819608 0.905882 rg 34.789 73.637 59.742 22.578 re f 0.188235 0.109804 0.109804 rg 1.01661 w 0 J 0 j [] 0.0 d 4 M q 1 0 0 1 0 0 cm 34.789 73.637 59.742 22.578 re S Q 0.85098 0.819608 0.905882 rg 34.824 119.883 59.742 27.727 re f 0.188235 0.109804 0.109804 rg 1.126575 w q 1 0 0 1 0 0 cm 34.824 119.883 59.742 27.727 re S Q 0.85098 0.819608 0.905882 rg 34.434 31.398 59.633 18.531 re f 0.188235 0.109804 0.109804 rg 0.920205 w q 1 0 0 -1 0 0 cm 34.434 -31.398 59.633 -18.531 re S Q 0 g BT 8.992397 0 0 -9.941295 52.211139 43.172501 Tm /f-0-0 1 Tf [(L)18(oop)]TJ ET 0.501961 0.898039 1 rg 35.41 172.781 59.887 28.668 re f 0.188235 0.109804 0.109804 rg 1.14693 w q 1 0 0 1 0 0 cm 35.41 172.781 59.887 28.668 re S Q 0 g BT 9 0 0 -9 55.66138 190.012871 Tm /f-0-0 1 Tf (main)Tj 8.992397 0 0 -9.941295 44.681685 86.268398 Tm (Analysis)Tj -0.348586 -4.916168 Td (Simulator)Tj 9.999975 0 0 -9.999975 9.253023 15.36996 Tm [(Outer P)18(r)22(ogram Design)]TJ ET 2.978018 w q 1 0 0 1 0 0 cm 5.238 5.238 230.672 206.816 re S Q 0.75 w q 1 0 0 1 0 0 cm 64.555 73.637 m 64.336 49.93 l S Q 61.082 57.977 m 64.312 48.934 l 67.711 57.918 l 65.742 56.496 63.062 56.527 61.082 57.977 c h 61.082 57.977 m f* 0.515603 w 1 j q 0.00927118 1 -1 0.00927118 0 0 cm 58.538 -60.539 m 49.526 -63.853 l 58.541 -67.168 l 57.101 -65.213 57.107 -62.533 58.538 -60.539 c h 58.538 -60.539 m S Q 0.75 w 0 j q 1 0 0 1 0 0 cm 64.688 119.883 m 64.668 96.215 l S Q 61.348 104.234 m 64.656 95.219 l 67.977 104.23 l 66.02 102.793 63.34 102.801 61.348 104.234 c h 61.348 104.234 m f* 0.515625 w 1 j q 0.00074619 1 -1 0.00074619 0 0 cm 104.28 -61.27 m 95.267 -64.585 l 104.281 -67.899 l 102.842 -65.943 102.848 -63.263 104.28 -61.27 c h 104.28 -61.27 m S Q 0.75 w 0 j q 1 0 0 1 0 0 cm 65.176 172.781 m 64.867 147.609 l S Q 61.637 155.668 m 64.844 146.613 l 68.266 155.586 l 66.293 154.172 63.617 154.211 61.637 155.668 c h 61.637 155.668 m f* 0.515586 w 1 j q 0.0122919 1 -1 0.0122919 0 0 cm 156.402 -59.714 m 147.388 -63.032 l 156.401 -66.343 l 154.963 -64.388 154.97 -61.712 156.402 -59.714 c h 156.402 -59.714 m S Q 0.92549 g 140.312 73.219 59.742 22.578 re f 0.188235 0.109804 0.109804 rg 1.01661 w 0 j q 1 0 0 1 0 0 cm 140.312 73.219 59.742 22.578 re S Q 0.92549 g 139.957 30.98 59.633 18.531 re f 0.188235 0.109804 0.109804 rg 0.920205 w q 1 0 0 -1 0 0 cm 139.957 -30.98 59.633 -18.531 re S Q 0 g BT 8.992397 0 0 -9.941295 157.735322 42.754535 Tm /f-0-0 1 Tf [(L)18(oop)]TJ -0.837313 -4.335038 Td (Analysis)Tj ET 0.75 w q 1 0 0 1 0 0 cm 170.082 73.219 m 169.859 49.512 l S Q 166.605 57.559 m 169.84 48.516 l 173.234 57.5 l 171.266 56.078 168.59 56.109 166.605 57.559 c h 166.605 57.559 m f* 0.515603 w 1 j q 0.00927141 1 -1 0.00927141 0 0 cm 59.098 -166.058 m 50.086 -169.375 l 59.101 -172.686 l 57.661 -170.731 57.667 -168.055 59.098 -166.058 c h 59.098 -166.058 m S Q 0.75 w 0 j q 1 0 0 1 0 0 cm 94.398 119.883 m 146 95.797 l S Q 137.328 96.172 m 146.898 95.363 l 140.133 102.18 l 140.609 99.797 139.469 97.375 137.328 96.172 c h 137.328 96.172 m f* 0.467232 w 1 j q -1 0.46677 -0.46677 -1 0 0 cm -75.901 -131.6 m -84.069 -134.604 l -75.901 -137.608 l -77.206 -135.834 -77.198 -133.409 -75.901 -131.6 c h -75.901 -131.6 m S Q BT 20.000025 0 0 -20.000025 108.03122 65.824362 Tm /f-0-0 1 Tf (...)Tj ET Q Q showpage %%Trailer end %%EOF simrisc-16.02.00/documentation/manual/simrisc.css0000664000175000017500000000076714665030471020730 0ustar frankfrank#title, #author, #date, #affiliation { text-align: center; } .lcell { text-align: left; } .rcell { text-align: right; } .vcell { vertical-align: top; } .vlcell { vertical-align: top; text-align: left; } .vrcell { vertical-align: top; text-align: right; } body { max-width: 800px; padding: 0 1em; margin: 0 auto; /* line-height: 1.5; font-size: 120%; */ } pre { background-color: #f3f3f3; padding: 1em 1ex; overflow-x: auto; } code { white-space: nowrap; } simrisc-16.02.00/documentation/manual/densities/0000775000175000017500000000000014665030471020522 5ustar frankfranksimrisc-16.02.00/documentation/manual/densities/densities.yo0000664000175000017500000000425514665030471023070 0ustar frankfrankThe tt(Densities) object provides access to information about the breast densities (cf. url(bi-rads info) (https://radiologyassistant.nl/breast/bi-rads/bi-rads-for-mammography-and-ultrasound-2013)). The American College of Radiology (ACR) distinguishes four breast densitiy categories: itemization( it() a: the breasts are almost entirely fatty it() b: there are scattered areas of fibroglandular density it() c: the breasts are heterogeneously dense, which may obscure small masses it() d: the breasts are extremely dense, which lowers the sensitivity of mammograph ) (see also url(the ACR reference card) (https://www.acr.org/-/media/ACR/Files/RADS/BI-RADS/BIRADS-Reference-Card.pdf)) In the s() configuration file the distributions of probabilities of these four categories by age groups are provided by the tt(breastDensities:) specifications, e.g., verb( bi-rad classification ---------------------------- agegroup a b c d breastDensities: 0 - 40 0.05 0.30 0.48 0.17 ... breastDensities: 70 - * 0.18 0.54 0.26 0.02 ) Age groups consist of an initial age and an upper limit. The upper limit is not considered part of the age range, but becomes the initial age of the next range. The final age range may use age specification tt(*), indicating the maximum possible age of simulated cases. Specifications following a specification using ending age tt(*) are ignored. S() checks whether the bi-rad probabilities per age group add to 1.00, and whether the ending age of an age group is equal to the initial age of the next age group. At the initialization phase of tt(Loop::genCases) (cf. section ref(GENCASES) breast densitiy indices (0..3) corresponding to bi-rad classifications a..d are determined for the simulated case's screening ages. The member tt(Densities::indices) generates a random value from the uniform random distribution and uses that probability to determine the bi-rad classification for the various screening ages, returning a vector containing the bi-rad classifications (0..3) for each screening round. simrisc-16.02.00/documentation/manual/densities/density.yo0000664000175000017500000000042214665030471022550 0ustar frankfrankObjects of the class tt(Density) contain the information about a single density age-group. It contains the density's age-group, bi-rad values and a vector of cumulative bi-rad values allowing fast lookups of a bi-rad category given a (randomly determined) proportion value. simrisc-16.02.00/documentation/manual/densities/src0000777000175000017500000000000014665030471024002 2../../../densitiesustar frankfranksimrisc-16.02.00/documentation/manual/generic/0000775000175000017500000000000014665030471020147 5ustar frankfranksimrisc-16.02.00/documentation/manual/generic/options.yo0000664000175000017500000000236214665030471022216 0ustar frankfrankS(), like many other programs, expects arguments when it is activated. As described in the bf(simrisc)(1) man-page s()'s only argument is tt(analyses), describing the analyses s() performs. Other than that s() expects options. Options come as boolean options (like tt(--help, --one-analysis,) and tt(--verbose) and as options requiring arguments (like tt(--nCases), specifying the number of cases to simulate). The class tt(Options) inspects all options and stores their values. Since tt(Arg), the class receiving the program arguments and options is a singleton it is only natural for tt(Options) to be a singleton class as well, allowing all program components to access the options without having to pass an tt(Options) object as argument. Most members simply return their option values (like tt(string const &base()), returning the base directory where by default the results are written). But some members (like tt(fixedNaturalDeathAge)) (conditionally) assign values to their parameters instead of returning a value. Hier is an overview of tt(Options') public members. All members are tt(const) members except tt(alter), which is used to modify option values as found in the configuration file: verbinsert(-s4 //members ../../../options/options.h) simrisc-16.02.00/documentation/manual/generic/distribution.yo0000664000175000017500000000000514665030471023232 0ustar frankfrankTODO simrisc-16.02.00/documentation/manual/generic/err.yo0000664000175000017500000000264214665030471021314 0ustar frankfrankError messages are handled by the class tt(Err). This class defines the content of various error messages, some of which are plain messages, and some require a onfiguration line information (tt(LineInfo), cf. section ref(TYPEDEFS)). The messages are selected using symbolic names defined in the tt(enum Msg), nested under the class tt(Err). The following symbolic names are defined: verbinsert(//msg ../../../err/err.h) All members of tt(Err) are static. They are: itemization( itt(char const *src(ParamsSrc type))nl() returns the name of the parameter specification source tt(type) (cf. section ref(ENUMS)); itt(std::ostream &msg(Msg err))nl() merely inserts the error message into the error stream, returning a reference to that stream; itt(std::ostream &msg(Msg err, LineInfo const &lineInfo))nl() inserts confguration source, line nr, and the error message into the error stream, ending in `tt(: )'. A reference to the stream is returned; itt(void specification(LineInfo const &line))nl() shorthand for using tt(msg(SPEC_ERROR, line)). itt(void multiplySpecified(LineInfoVect const &lines, std::string const §ionList))nl() shorthand for using tt(MULTIPLY_SPECIFIED) in specification tt(sectionList), listing the info about the multiple specifications provided in tt(lines). ) simrisc-16.02.00/documentation/manual/generic/enums.yo0000664000175000017500000000161714665030471021654 0ustar frankfrankConstants used throughout the program are defined in enumerations in the tt(enums/enums.h) file. These enumerations are: itemization( itt(Constants), defining the number of bi-rad categories (tt(N_BIRADS = 4)) and the ending and maximum ages for simulated cases (tt(END_AGE = 101, MAX_AGE = END_AGE - 1)); itt(DistType), defining the types of the distributions used when generating random values. All classes using distributions (like tt(Distribution) and tt(Random)) use this enumeration when referring to statistical distributions. itt(GeneratorType), defining the diffent ways the random number generators can be initialized (cf. the tt(generator:) parameter in the configuration file); itt(ParamsSrc), specifying whether parameters are defined in a configuration file or in an tt(analysis:) specification section. ) simrisc-16.02.00/documentation/manual/generic/globals.yo0000664000175000017500000000240714665030471022146 0ustar frankfrankThe class tt(Globals) merely provides functions. These functions are all static member functions. They are: itemization( itt(double findAge(DoubleVect const &cumProb, double prob))nl() finds the last series of elements that are smaller than tt(prob) in tt(cumProb), using the index of the first of that series of elements as the begin index, and finds the first element in tt(cumProb) exceeding tt(prob) using that element's index as the end-index. It then interpolates tt(prob) in the half-open range tt([cumProb[begin], cumProb[end]CHAR(41)) C(]) returning the corresponding the (floating point) index; itt(bool isZero(double value))nl() returns true if tt(value's) absolute value is smaller than tt(1e-8); itt(bool isPositiveZero(double value))nl() returns true if tt(value) is not negative and smaller than tt(1e-8); itt(ostream &setPrecision(ostream &out, uint16_t nDigits))nl() sets tt(out's) precision when inserting tt(double) values to tt(nDigits) behind the decimal point; itt(int weakCompare(double lhs, double rhs))nl() using tolerance tt(1e-3) returns -1 if tt(lhs < rhs), 0 if tt(lhs == rhs), and 1 if tt(lhs > rhs). ) simrisc-16.02.00/documentation/manual/generic/agegroup.yo0000664000175000017500000000164114665030471022333 0ustar frankfrankThe class tt(AgeGroup) extracts age group specifications from the configuration file. Age group specifications look like this: verb( 0 - 40 40 - 50 50 - 60 60 - 70 70 - * ) which are half-open age ranges: tt([begin, end+CHAR41). The star specifies the maximum possible age (tt(MAX_AGE) as defined in tt(enums.h)). tt(AgeGroup) objects have two accessors: tt(beginAge), returning the begin age, and tt(endAge) returning the ending age of the half open range. When age groups are read then their ranges must connect. This is checked by the member verb( bool nextRange(std::vector const &vect, LineInfo const &lineInfo) const; ) returning tt(true) if the begin age read from tt(lineInfo) equals the end age in tt(vect.back()). This is used, e.g., when reading the age ranges of the various breast densities (cf. tt(densities/add.cc)). simrisc-16.02.00/documentation/manual/generic/typedefs.yo0000664000175000017500000000112614665030471022343 0ustar frankfrankThe file tt(typedefs/typedefs.h) contains type definitions of container types that are used throughout the program. Because of the types that are defined in tt(typedefs.h) source files may assume that the headers tt(cstdint, vector, string, unordered_set) and tt(enums.h) are also included. When parameter specifications are retrieved these specifications are stored in a dedicated tt(struct LineInfo): verbinsert(-s4 //struct ../../../typedefs/typedefs.h) In addition the following type definitions of various containers are defined: verbinsert(-s4 //types ../../../typedefs/typedefs.h) simrisc-16.02.00/documentation/manual/generic/vsd.yo0000664000175000017500000000213014665030471021310 0ustar frankfrankThe class tt(VSD) (Value, Standard deviation, Distribution) stores the value, standard deviation and distribution type of parameter values. Such parameters are usually specified in the configuration file like this: verb( # value spread distr. parameterName: 72.9 .552 Normal ) The parameter values are retrieved by accessor members. If the tt(Scenario's spread) parameter was configured as tt(true) then the member tt(refresh) applies a random variation to the value parameter, which is then returned by the tt(value) accessor. If tt(D) represents a random value from the used distribution and tt(orgValue) is the value that was originally read from the configuration file then tt(refresh) modifies tt(value) as verb( value = orgValue + spread * D() ) which value is thereupon returned by its tt(value) accessor. Note: if the tt(VSD spread) parameter is not specified then the default value 0 is used. In those cases the tt(VSD value) data member is not modified when tt(Scenario spread) is specified as tt(true). simrisc-16.02.00/documentation/manual/modalities/0000775000175000017500000000000014665030471020665 5ustar frankfranksimrisc-16.02.00/documentation/manual/modalities/modalities.yo0000664000175000017500000000605114665030471023372 0ustar frankfrankScreening modalities are accessed via the tt(Modalities) object. The modalities object provides the interface to modalities that are defined for screening rounds. All modalities that are thus accessible are derived from a base class tt(ModBase). tt(ModBase) defines the interface that must be offered by classes derived from tt(ModBase). This allows reuse of existing components of s() that use modalities, irrespective of what actual modalities are configured for the various screening rounds. The structure of this design is illustrated in Figure ref(MODFIG). figure(modalities/modalities)(The Modalities design)(MODFIG) Figure ref(MODFIG) shows the tt(Modality) object in blue. It communicates with tt(ModBase) objects. tt(ModBase) is a polymorphic base clase completely defining the interface modalities must provide. What modalities there are or will be at some poiny in the future is irrelevant, as long as these future modalities implement the interface required by tt(ModBase). Currently three modalities are available: an MRI modality, a Mammo modality and a Tomo modality. The arrows pointing down from tt(ModBase) suggest time: MammoTomo was originally implemented. At some later point in time MRI was added. At some point in the future another, as yet unknown, modality may be added. At that point only the new modality must be implemented, but the program using the new modality can be reused, not requiring additional modifications. The tt(Modality) constructor receives the tt(modality) parameter specifications from the configuration file. Modality parameters specify the name of the modality; the costs of using the modality; optionally specifications of radiation doses for the treatment of the four bi-rads categories; the modality's sensitivity (optionally differently specified for the four bi-rads categories, and the modality's specificity, optionally using age groups, like the age groups that were used when specifying breast density parameters. E.g., verb( # bi-rads bi-rads (agegroups: values) # modalities id cost dose sensitivity specificity # 1..4 1..4 modality: Mammo 64 3 3 3 3 0.87 0.84 0.73 0.65 0-40: 0.961 40-*: 0.965 modality: MRI 64 0.00 0.00 ) The constructor uses the specification ID to create the matching modality-handling object. Modality handlers are derived from the (polymorphic) modality base class tt(ModBase) (see the next section). When a screening is performed for a specific screening age (cf. section ref(SCREEN)) then all modalities that were specified for that screening age are visited in turn. Screening round specifications define the modalities that are used for those rounds (cf. section ref(SCREENINGCLASS)). The tt(Screening) class provides, per screening round, the names (IDs) of the modalities that are used for those rounds, The member tt(Modality::use) receives these IDs and returns pointers to the modalities that are associated with those IDs. Those modalities are then applied in turn to the current case. simrisc-16.02.00/documentation/manual/modalities/modbase.yo0000664000175000017500000000330514665030471022651 0ustar frankfrankThe class tt(ModBase) defines the interface for modalities that is available to other parts of s(), in particular to members of the class tt(Loop) (cf. section ref(LOOP)). The interface provides the following members: itemization( itt(double sensitivity(size_t idx)): the modality's sensitivity given a bi-rad category tt(idx). For modalities that are independent of bi-rad categories the tt(idx) argument is ignored; itt(double specificity(double age)): the modality's specificity given an age. For modalities that are independent of age the tt(age) argument is ignored; itt(uint16_t cost()): returns the costs associated with using the modality; itt(uint16_t nr() const): returns an identifying order-number of the modality; The order number is used, e.g., when updating the number of false negative decisions during screening loops; itt(void resetCounters(size_t nRounds)): clears the vector counting the number of times modalities are used by the screening rounds and resets the number of encountered false positives to 0; itt(void count(size_t round)): increments the usage count for the specified screening round; itt(void falsePositive()): increments the number of false positive decisions; itt(std::string const &id()): returns the name (e.g., MRI, Mammo) of the modality; itt(double const *dose()): returns the array of radiation doses associated with the modality or 0 if there are no associated radiation doses; itt(double dose(uint16_t idx)): returns the radiation dose of a specified bi-rad category or 0 if there are no associated radiation doses. ) simrisc-16.02.00/documentation/manual/modalities/mammo.yo0000664000175000017500000000163614665030471022352 0ustar frankfrankThe class tt(Mammo) is derived from tt(ModBase). tt(Mammo's) base class extracts the tt(costs) parameter from the configuration file. Its sensitivity is computed by its tt(vSensitivity) member. The sensitivity of the tt(Mammo) modality depends on the tumor's diameter and the configured tt(beta) parameters. As a reference, here is the member implementing tt(Mammo's) sensitivity computation: verbinsert(-s4 //code ../../../mammo/vsensitivity.cc) This function also uses the systematic error which is also configured in the configuration file (tt(Mammo: systematicError:)). The modality's specificity is obtained by finding the case's actual age in the vector tt(d_specVect) (as configured in the configuration file) and returning the associated specificity value. Likewise, the radiation doses are returned by the tt(vDose) members, where the bi-rad category can be used as index (0 for 'a' through 3 for 'd'). simrisc-16.02.00/documentation/manual/modalities/mri.yo0000664000175000017500000000050514665030471022025 0ustar frankfrankThe class tt(MRI) is derived from tt(ModBase). tt(MRI's) base class extracts the tt(costs) parameter from the configuration file. Its sensitivity (tt(vSensitivity)) and specificity tt(vSpecificity)) values are constants, and there are no radiation doses associated with this modality (the tt(vDose) members return zeroes). simrisc-16.02.00/documentation/manual/modalities/tomo.yo0000664000175000017500000000076514665030471022224 0ustar frankfrankThe class tt(Tomo) is derived from tt(ModBase). tt(Tomo's) base class extracts the tt(costs) parameter from the configuration file. The modality's specificity is obtained by finding the case's actual age in the vector tt(d_specVect) (as configured in the configuration file) and returning the associated specificity value. Likewise, the radiation doses and sensitivity values are returned by the tt(vDose) and tt(vSensitivity) members, using bi-rad category as index (0 for 'a' through 3 for 'd'). simrisc-16.02.00/documentation/manual/intro/0000775000175000017500000000000014665030471017666 5ustar frankfranksimrisc-16.02.00/documentation/manual/intro/intro.yo0000664000175000017500000000440414665030471021374 0ustar frankfrankThis manual is primarily a technical manual. Currently the user-information is covered by s()'s man-pages This manual covers the design and organization of s()'s software. Each section (except for section tt(main)) covers a class as encountered when reading the sources starting at the tt(main) function. In total almost 30 classes were defined. Starting from tt(main) only tt(Simulator) is required. At the other side of the spectrum there are several classes or comparable elements which are used by many classes. These elements are defined in separate header files: itemization( itt(enums/enums.h), containing enumeration values for errors and constant values; itt(typedefs/typedefs.h), defining short names for frequently used vectors (like tt(SizeVect) for tt(std::vector)) itt(globals/globals.h), a struct defining several static functions handling frquently encountered small computations (like tt(isZero) to determine whether a tt(double) value has a value that's closer to zero than a (compile time configurable) tolerance). ) These files are not further covered in this manual: they contain definitions and trivial support functions, and the reader should refer for these files themselves for further details. figure(outer) (The Outer Program Design) (OUTER) The outline of the organization of the outer levels of the program is shown in Figure ref(OUTER). tt(main) uses a tt(Simulator), and for each separate analysis the tt(Simulator) creates an tt(Analysis) object, which in turn creates a tt(Loop) object, doing all the hard work (hence the ellipsis in Figure ref(OUTER)). The configuration file defines elements that can be used in the analyses. Such elements are, e.g., tt(Screening), containing screening parameters, tt(Densities), containing parameters of breast densities, and tt(Incidence), containing tumor incidence parameters. Objects of those classes are used by tt(Loop). It is quite possible that future versions of s() also supports different types of simulations. It's likely that tt(Loop) itself then becomes a em(scenario) as defined by Gamma et al. (1995), and that analysis specification files also select the requested scenario(s) by specifying the requested simulation type(s). simrisc-16.02.00/documentation/manual/analysis/0000775000175000017500000000000014665030471020356 5ustar frankfranksimrisc-16.02.00/documentation/manual/analysis/run.yo0000664000175000017500000000112214665030471021527 0ustar frankfrankThe tt(run) member may immediately end if errors were encountered in the specifications of the tt(Scanario) and/or tt(ConfigFile) parameters. One of the options defines the base directory into which the output is written. The member tt(requireBase) checks whether the base directory exists, and if not creates it. If that fails the program ends, showing the message verb( Cannot create base directory ... ) where tt(...) is replaced by the name of the base directory provided by the tt(Options) object. If all's well, the actual simulation is then performed by a tt(Loop) object. simrisc-16.02.00/documentation/manual/analysis/analysis.yo0000664000175000017500000000314414665030471022554 0ustar frankfranktt(Analysis) class objects handle one simulation analysis. Since multiple analyses are performed independently from each other, each tt(Analysis) object initializes its own error count (class tt(Error)) and option handling (class tt(Options)). As options may specify the name of the file containing the analysis-parameters tt(Analysis) objects also define a configuration file object (ConfFile). In s()'s scientific context simulation parameters are also known as `scenarios'. Scenarios contain information like the number of iterations to perform and the number of cases to simulate. The analysis's tt(Scenario) object is initialized by tt(Analysis)'s constructor, and is used by its tt(run) member. Figure ref(ANADATA) provides an overview of tt(Analysis)'s data members. figure(analysis/data) (The Analysis data members) (ANADATA) verbinsert(-s4 //data src/analysis.h) The class tt(Analysis) uses the classes tt(Scenario, Loop, ConfFile, Options) and tt(Error), which are covered in separate sections of this technical manual. When the tt(Analysis) object is constructed it constructs its own tt(Scenario) object. That object receives the modifications that are specific for the current analysis (e.g., that were specified following an tt(analysis:) line in an analysis-specification file). When the tt(Scenario) object (cf. section tt(SCENARIO)) is returning specifications (e.g., using its tt(lines) members, then it returns the modified specifications if available. Modified specification must be complete, as they replace the corresponding specifications in the used (standard) configuration file. simrisc-16.02.00/documentation/manual/analysis/src0000777000175000017500000000000014665030471023472 2../../../analysisustar frankfranksimrisc-16.02.00/documentation/manual/random/0000775000175000017500000000000014665030471020013 5ustar frankfranksimrisc-16.02.00/documentation/manual/random/random.yo0000664000175000017500000000411214665030471021642 0ustar frankfrankObjects of the class tt(Random) generate random numbers. Mercenne twisters (defined in bf(C++)'s STL as the tt(std::mt19937) type) generate random values. Its public members returning random values are: verbinsert(//members src/random.h) Each of these member returns random values drawn from the corresponding statistical distribution. Each distribution uses its own mercenne twister to obtain its next random value. The members tt(uniform, uniformCase) return random values drawn from the uniform random distribution. and tt(logNormal) from the standard log-normal distribution. The other members are only used and are only available when tt(spread: true) is specified. In that case at least tt(N = 2) cases must be simulated as the chi+sups(2) distribution uses tt(N - 1) degrees of freedom. If tt(spread: true) is specified the following members are available and are used for random variations of various configured parameters: itemization( it() the member tt(binomial) draws from the binomial distribution, and its argument specifies the distribution's probability; it() the member tt(chi2) draws from the chi+sups(2) distribution having tt(N - 1) degrees of freedom; it() the member tt(normal) draws from the standard normal distribution, ) COMMENT( and tt(exponential) generate random numbers conforming their distribution type. ) At each new analysis tt(Scenario's seed) value is assigned to the tt(Random) object's tt(seed) value. Then, at each tt(Loop) iteration the tt(Random) object is re-initialized: itemization( it() the tt(Scenario) object is used to set its tt(d_spread) and tt(d_nCases) data members; it() if tt(generator: random) was specified, tt(d_seed) is initialized with a random seed. it() when tt(generator: increasing) was specified tt(d_seed) is incremented. ) Next the generators and distributions are reset by the member tt(reset). The member tt(reset) resets the mercenne twisters by assigning new tt(mt19937) objects, initialized with tt(d_seed). Next the various distributions are reset. simrisc-16.02.00/documentation/manual/random/src0000777000175000017500000000000014665030471022564 2../../../randomustar frankfranksimrisc-16.02.00/documentation/manual/screening/0000775000175000017500000000000014665030471020510 5ustar frankfranksimrisc-16.02.00/documentation/manual/screening/screening.yo0000664000175000017500000000002614665030471023034 0ustar frankfrankincludefile(intro.yo) simrisc-16.02.00/documentation/manual/screening/intro.yo0000664000175000017500000000246514665030471022223 0ustar frankfrankThe class tt(Screening) handles the screening parameters. Screening parameters are obtained from the tt(Scenario) object (cf. section ref(SCENARIO)). At construction time the following parameters are obtained: itemization( it() the probability that a case attends a screening: probability and distribution are specified like this: verb( # value distribution: attendanceRate: 0.8 Normal ) it() the screening rounds specify the screening ages and the modalities that are used for those rounds. Currently the modalities tt(MRI, Mammo) (mammography) and tt(Tomo) (tomosynthesis) are available. Screening rounds use specifications like this: verb( screeningRound: 58 Mammo MRI ) Information about these rounds is stored in its tt(d_roundVect) vector, containing tt(Round) objects. Each tt(Round) object contains the round's age, the indices of the specified modalities and the names (IDs) of the specified modalities. ) Its member tt(radiationRisk) returns a vector of tt(double) values for each (integral) age. It uses the bi-rad indices which are recomputed for each new case (cf. section ref(GENCASES)) and consequently it is called by tt(Loop::genCases) for each similated case. simrisc-16.02.00/documentation/manual/spread/0000775000175000017500000000000014665030471020011 5ustar frankfranksimrisc-16.02.00/documentation/manual/spread/stddevs.yo0000664000175000017500000000401014665030471022031 0ustar frankfrankExpected values and variances of chi+sups(2) distributions are directly related (cf. url(this link) (https://en.wikipedia.org/wiki/Variance#Distribution_of_the_sample_variance)): Their expected values are equal to the population variance (= tt(var)), and their variances are equal to verb( 2 * sqr(var) / (N - 1) ) where tt(N) represents the sample size. In tt(simrisc) the used chi+sups(2) distribution is computed from the population variance as specified in the configuration file (like 21.1 for the tt(Normal) carrier's standard deviation) and the number of simulated cases (like 100,000). In that case the variance of the variances of such samples equals verb( 2 * sqr(21.1) / (100,000 - 1) = 0.0089 ) (and std. dev. 0.0944) Using tt(sd) to represent the standard deviation drawn from a distribution of standard deviations using samples of size tt(N) and population standard deviation tt(sigma), then verb( (N - 1) * sqr(sd) / sqr(sigma) ) follows a chi+sups(2) distribution with tt(N - 1) degrees of freedom. Using tt(chi^2[df]) to represent such a distribution, we get verb( (N - 1) * sqr(sd) / sqr(sigma): distributed as chi^2[N - 1] ) From sigma, N and a random value drawn from tt(chi^2[N - 1]) a corresponding tt(sd) value can now be computed: verb( sd = sqrt( sqr(sigma) * chi^2[N - 1] / (N - 1) ) ) The following table illustrates what these tt(sd) values might look like when computed 10 times: (using N = 100,000) en sigma = 21.2): verb( ---------------------- chi^2 sd ---------------------- 1: 100805.0 -> 21.285 1: 99499.8 -> 21.147 2: 99867.1 -> 21.186 3: 99873.8 -> 21.187 4: 100076.0 -> 21.208 5: 99895.8 -> 21.189 6: 99952.9 -> 21.195 7: 100558.0 -> 21.259 8: 100126.0 -> 21.213 10: 99289.8 -> 21.125 ---------------------- ) The procedure described here is used to compute spread variations for standard deviations. simrisc-16.02.00/documentation/manual/spread/spread.yo0000664000175000017500000000540614665030471021645 0ustar frankfrankAs described in section ref(SCENARIO) the Scenario parameter tt(spread) may be set to tt(true) resulting in random variations of several parameters. Handling spreading is illlustrated in figure ref(SPREADFIG). figure(spread/spread) (Spread used by Simrisc components) (SPREADFIG) When an analysis starts tt(Loop::initialize) passes tt(Scenario::spread) on to the member tt(Loop::spread). Various components support random fluctuations of their parameters, and if tt(Scenario::spread) is true these random fluctiations are applied to these components. Figure ref(SPREADFIG) illustrates where random fluctuations may be applied: itemization( it() the tt(Mammo) modality's tt(systematicError); it() the tt(Screening's attendanceRate); it() various tt(Tumor) components: itemization( it() tt(Survival); it() tt(Growth); it() tt(TumorInfo): itemization( it() tt(Beir7); it() tt(Incidence's) carrier specifications. ) ) ) Random fluctuations can be applied to means, standard deviations and proportions. For means the normal distribution is used by default. For example, the specification of the tt(meanAge) distribution, specifified for carrier tt(Normal) in the tt(Incidence) component of the tt(Tumor) specification may look like this: verb( # value spread distr. meanAge: 72.9 .552 Normal ) 95% of the mean-values which are randomly drawn from this distribution are located in the interval 71.8 to 74.0. When spreading is used, thus computed mean values are used as mean values of the tt(Normal) carrier during the actual simulations. For standard deviations the chi+sups(2) distribution is used, ensuring that the standard deviation that is used for the simulations exceeds 0 (see the next section for a description of the theory and implementation in tt(simrisc)). For example, the standard deviations of the tt(Normal) carrier distribution may look like this: verb( # value spread distr. stdDev: 21.1 .048 Normal ) The number of degrees of freedom of the chi+sups(2) distribution to use tt(N - 1), where tt(N) is the number of cases that are used in a simulation. COMMENT( For proportions the binomial distrubution is used, ensuring that randomly selected proportions lie within the interval 0..1 (see section ref(BINOMIAL) for a description of the theory and implementation in tt(simrisc)). For example, the tt(Screening attendanceRate) specification may be specified as: verb( attendanceRate: .8 ) Likewise, the tt(systematicError) (Modality, Mammo) and risks (e.g., tt(Normal Incidence Tomor) carrier are proportions). ) simrisc-16.02.00/documentation/manual/loop/0000775000175000017500000000000014665030471017504 5ustar frankfranksimrisc-16.02.00/documentation/manual/loop/gencases.yo0000664000175000017500000000637714665030471021662 0ustar frankfrankThe member tt(genCases) performs one complete iteration over all screening rounds for all simulated cases. The option tt(nCases) may be used to simulate a specific number of cases. When tt(nCases) is specified only the data of the final case are written to file. By default as many cases as specified at the `nWomen' parameter (stored in the tt(Scenario) object) are simulated, and the data of all those simulated cases are written to file. Analyses up to a specific number of cases, or a single simulation using a preset death-age (see option tt(--death-age) in the bf(simrisc)(1) man-page) can also be performed. The number of cases to simulate is determined in the tt(nCases) member. For each simulated case: itemization( it() the simulation data are initialized: itemization( it() the costs of the case (tt((d)_caseCost)), the tumor-caused death age (tt(d_deathAge)), the screening round in which a tumor is detected (d_roundDetected), and the indicator indicating whether the tumor has been self-detected (d_selfDetected); it() breast density indices are determined (uses random numbers, and thus they are recomputed at each new simulated case) (cf. section ref(DENSITIES)). These indices are stored in tt(d_indices) for the different screening ages (the index computed for the first screening age is stored at the first element). For each age a randomly determined proportion is located in the cumulative proportions of the bi-rads categories of its age group. The thus determined bi-rad category is stored in tt(d_indices). E.g., for age 54 these bi-rads proportions could be used: verb( agegroup bi-rads1 bi-rads2 bi-rads3 bi-rads4 breastDensities: 50 - 60 0.08 0.50 0.37 0.05 ) resulting in category 3 if the randomly selected proportion is 70; it() cumulative total tumor risks are determined (uses breast density indices, and must therefore be recomputed at each simulated case) (cf. section ref(TUMORINFO)); it() the case's natural death age is determined as a random age <= MAX_AGE, which is a compiled constant (100). it() the status of the simulated case is intialized to tt(PRESENT). The case's state changes during the simulation and the case's simulation may end during the pre-screening phase, the screening phase, or the post-screening phase, because of the case's natural death, because of self-detection of a tumor or because of a tumor that's detected during a screening cycle; it() the parameters of the tumor-simulating object are reset (cf. section ref(TUMORRESET)). ) it() following the initialization three simulation phases are simulated: itemization( it() pre-screening (cf. section ref(PRESCREEN)) it() screening (cf. section ref(SCREENING)) it() postscreening (cf. section ref(POSTSCREEN)) ) it() Once a case's simulation ends the case's death age and computed costs are accumulated and the simulated data are written to the data file containing all case-specific values (or, when the option tt(--nCases) or tt(--death-age) was specified: only the data of the requested single simulated case). ) simrisc-16.02.00/documentation/manual/loop/iterate.yo0000664000175000017500000000304214665030471021511 0ustar frankfrankThe tt(iterate) member performs the number of iterations (scenario: iterations). At each iteration itemization( it() the random number generator is reset; it() the tt(TumorInfo) (cf. section ref(TUMORINFO)) parameters may be refreshed; it() The following tt(Loop)'s counters are reset: itemization( itt(d_totalCost), the sum of all simulated costs over all screening rounds; itt(d_sumDeathAge), the sum of all simulated dying ages over all screening rounds; itt(d_nIntervals), the vector storing the number of simulated interval cancers per screening round; itt(d_nRoundFP), the vector storing the number of false positive diagnoses per screening round; itt(d_nRoundFN), the vector storing the number of false negative diagnoses per screening round; itt(d_nDetections), the vector storing the number of self-detected cancers per screening round; itt(d_roundCost), the vector storing the total costs per screening round; itt(d_modalities), the counters maintained by the used tt(Modalities) are reset. ) it() The actual simulation is performed over `scenario nWomen' cases by tt(genCases); it() At each iteration summarizing and actual simulation data are (optionally) written to files (sensitivity, parameters, and rounds info, while actually produced simulation data are written to file by the tt(genCases) member itself). ) simrisc-16.02.00/documentation/manual/loop/loop.yo0000664000175000017500000000140014665030471021021 0ustar frankfrankincludefile(intro.yo) subsect(iterations) includefile(iterate.yo) lsubsect(GENCASES)(Simulate Cases) includefile(gencases.yo) lsubsect(PRESCREEN)(Pre-screening) includefile(prescreen.yo) subsubsect(Performing a pre-screening) includefile(prescreening.yo) lsubsect(CHARACTERISTICS) (Self-detected tumors during the pre- and post-screen phases) includefile(characteristics) lsubsect(SCREENING)(Screening) includefile(screening.yo) subsubsect(Leaving screening rounds) includefile(leaving.yo) lsubsubsect(SCREEN)(Performing a screening) includefile(screen.yo) lsubsect(POSTSCREEN)(Post-screening) C(<<<<<<<<<<<<<) includefile(postscreen.yo) simrisc-16.02.00/documentation/manual/loop/prescreening.yo0000664000175000017500000000142314665030471022541 0ustar frankfrankIf a pre-screening phase is used then the following happens: itemization( it() If there's no tumor but the case's natural death occurs before the tumor-induced death, then (tt(loop/pretumordeath.cc)) the case's simulation ends, setting its status to tt(LEFT_PRE). If at this point there also happens to be an existing tumor then the tumor's characteristics are determined as well (by tt(Tumor::characteristics), cf. section ref(TUMOR)). it() On the other hand, if the complement of the above condition holds true (i.e., there is a tumor and the tumor's self-dectected age is before the case's natural death) the characteristics of the tumor are determined (see the next section) resulting in the case leaving the simulation because the tumor was self detected. ) simrisc-16.02.00/documentation/manual/loop/characteristics.yo0000664000175000017500000000151514665030471023232 0ustar frankfrankThe function tt(Loop:characteristics) may be called during the pre-screening phase and during the post-screening phase. In both phases the tumor is self-detected, the tumor characteristics are determined (tt(Tumor::characteristics, Tumor::setDeathAge), cf. sections ref(TUMORCHARACT) and ref(TUMORDEATHAGE)), and the treatment costs are determined using the tumor's induced death age and the tumor's diameter (tt(Costs::treatment), cf. section ref(COSTS)). If the case's natural death occurs before the tumor would have caused the case's death then the case leaves the pre-screening or post-screening simulation with status (respectively) tt(LEFT_PRE) and tt(LEFT_POST). Otherwise death was caused by the tumor and the the case leaves the pre-screening or post-screening simulation with status (respectively) tt(TUMOR_PRE) and tt(TUMOR_POST). simrisc-16.02.00/documentation/manual/loop/postscreen.yo0000664000175000017500000000122314665030471022240 0ustar frankfrankPost screening is skipped if the case has left the simulation process during the pre-screening or screening phases. If there is a tumor and the tumor's self-detection age is before the case's natural death then the tumor characteristics and treatment costs are determined (cf. section ref(CHARACTERISTICS)). On the other hand, if there is no tumor or if the tumor's self-detection age would have been after the case's natural death then the case leaves the simulation at the case's natural death age. In this latter case (athough there is a tumor, it hasn't caused death) the tumor's characteristics are determined as well (cf. section ref(TUMORCHARACT)). simrisc-16.02.00/documentation/manual/loop/prescreen.yo0000664000175000017500000000350314665030471022044 0ustar frankfrankThe original program uses the following condition to determine whether prescreening must be performed: verb( if (Nscr > 0 && (naturalDeathAge < 1st screening age || (tumor present && tumor.selfDetectAge() < 1st screening age))) ) This results in a needlessly complex implementation of the pre-screening phase. It's much simpler to use the complement of this expression, skipping the pre-screening phase if the complementary condition is true. The pre-screening phase is therefore skipped if the following condition holds true: verb( not (Nscr > 0 && (naturalDeathAge < 1st screening age || (tumor present && tumor.selfDetectAge() < 1st screening age))) ) The expression can be simplified using De Morgan's rule tt(a && b == !a || !b): verb( not (Nscr > 0) or not ( naturalDeathAge < 1st screening age or (tumor present and tumor.selfDetectAge() < 1st screening age) ) ) Consequently, pre-screening is skipped if there are no screening rounds (not (Nscr > 0)) and also if the following condition holds true: verb( not ( naturalDeathAge < 1st screening age or (tumor present and tumor.selfDetectAge() < 1st screening age) ) ) Distributing the not-operator over the terms of the above condition, and applying De Morgan's rule tt(!(a || b) == !a && !b) we get: verb( naturalDeathAge >= 1st screening age and not ( tumor present and tumor.selfDetectAge() < 1st screening age ) ) Applying De Morgan's rule once more this finally results in: verb( naturalDeathAge >= 1st screening age and ( not tumor present or tumor.selfDetectAge() >= 1st screening age ) ) Thus, pre-screening is skipped if the above condition holds true. simrisc-16.02.00/documentation/manual/loop/screening.yo0000664000175000017500000000216114665030471022032 0ustar frankfrankFollowing the pre-screening phase the screening phase itself starts. However, when a case's simulation has already ended during the pre-screening phase the screening phase is skipped. Other than that, a case's simulation may also end during the screening phase itself, ending the screening phase. As long as the case simulation has not ended (i.e., the case's state is tt(PRESENT)) a screening is performed for each of the screening rounds defined by the tt(Screening) object (cf. section ref(SCREENINGCLASS)), initialized in tt(Loop's) constructor. At each screening round two actions are performend: itemization( it() given the round's screening age it is determined whether the case leaves the simulation at that particular screening round. If so then the case's state is no longer tt(PRESENT) and the screening phase ends for that case (see the next section for details); it() if the case is still present, then a screening is performed, which may also result in changing the case's state, which then also ends the screening phase for that case (cf. section ref(SCREEN)). ) simrisc-16.02.00/documentation/manual/loop/intro.yo0000664000175000017500000000306714665030471021216 0ustar frankfrankThe class tt(Loop) is the `workhorse' class. It performs the simulation as specified by the tt(Scenario) object which is passed to its objects when they are constructed. The class tt(Loop) uses many other classes, most of which encapsulate parameters specified in the configuration file. Those classes read configuration file parameters and prepare these parameters for their use by tt(Loop). The constructor of a tt(Loop) object defines the following objects: itemization( itt(d_costs): a tt(Costs) object providing various costs parameters (cf. section ref(COSTS)). This object does not provide the costs associated with various modalities. Those costs are directly stored at the modalities themselves; itt(d_densities): a tt(Densities) object providing the breast-densities parameters (cf. section ref(DENSITIES)); itt(d_modalities): a tt(Modalities) object providing the details about which screening modalities are used in a specific simulation (cf. section ref(MODALITIES)); itt(d_screening): a tt(Screening) object providing screening parameters (cf. section ref(SCREENING)); itt(d_tumor): a tt(Tumor) object handling the simulation related to the occurrence of tumors (cf. section ref(TUMOR)); itt(d_tumorInfo): a tt(TumorInfo) object providing tumor-related configuration parameters (like incidence, growth and survival parameters. Cf. section ref(TUMORINFO)); ) It also defines a tt(Random) object (tt(d_random)), generating random numbers (cf. section ref(RANDOM)). simrisc-16.02.00/documentation/manual/loop/leaving.yo0000664000175000017500000000252514665030471021506 0ustar frankfrankWhether the case leaves the simulation before an actual screening at the current screening age is determined by the member tt(Loop::leaving). In the original program this is determined as follows: itemization( it() the case's natural death occurs before the screening round's age, it() or there is a tumor and the tumor's self-detection age is before the screening round's age ) Converting this condition, then the case leaves the simulation if itemization( it() the screening round's age is at most equal to the case's natural death age, and it() there is no tumor or the screening round's age is at most equal to the tumor's self-detection age. ) If at this point the case hasn't left the simulation, then itemization( it() if there is a tumor and the tumor's self-detection age is at most equal to the case's natural death age then an interval cancer has occurred (handled by tt(Loop::intervalCancer)); it() otherwise, the case's state is set to tt(LEFT_DURING) as the case's natural death age has caused the case to leave the simulation. However, a tumor might still have developed at that point, and if so the tumor's characteristics are determined at the case's natural death age (cf. tt(Tumor::characteristics), section ref(TUMOR)). ) simrisc-16.02.00/documentation/manual/loop/screen.yo0000664000175000017500000000727414665030471021346 0ustar frankfrankIf the case has not yet left the simulation, then the member tt(Loop::screen) simulates a screening at a given screening age. At this point the modalities are considered. Each of the modalities configured for the current screening age is considered in turn. They are considered in their order of specification in the configuration file. E.g., when specifying verb( screeningRound: 50 Mammo MRI screeningRound: 52 MRI Mammo ) then Mammo is considered before MRI at screening age 50, and MRI is considered before Mammo at screening age 52. Modalities are made available by the tt(Modalities) member (tt(d_modalities), cf. section ref(MODALITIES)). The tt(use) member of this member returns the information of all modalities that have been configured for the current screening round. Whether a configured modality is actually going to be used at a particular screening round is determined by chance. In the configuration file the parameter tt(attendanceRate) defines the probability that a case attends a screening round. If the next random value drawn from the uniform random distribution exceeds the configured attendance rate then the screening round for that modality is skipped for the current case. If a case attends a screening round then the screening round's costs are determined (cf. section ref(COSTS)) and are added to the costs so far (cf. tt(Loop::addCost)): the costs are added to the case's accumulated cost and to the accumulated costs of the current screening round. In addition, if a tumor exists at a screening round then the tumor's characteristics are determined for the current screening age. Two factors determine whether a tumor may be detected or whether its detection may be a false positive. One factor (factor-1) is the (apparent) presence of a tumor, the other factor (factor-2) is whether the screening round's age is at least equal to the age that the tumor can be detected. If both factors are true, then the tumor may be detected. Otherwise there may be a false positive tumor detection. em(Maybe detecting the tumor (maybe a false negative conclusion):) The member tt(maybeDetect) (cf. tt(Loop::maybeDetect)) is used to decide whether a tumor may be found during the screening. A false negative screening result is obtained if a random value exceeds the current modality's sensitivity. The sensitivities of the various modalities are returned by the tt(ModBase::sensitivity) member (which in turn call their derived class's members tt(vSensitivity) returning the return values of the actually used modality's overridden tt(vSensitivity) members. If a false negative result isn't obtained then a tumor was detected: its treatment costs are added to the accumulated costs and the dying age because of the tumor is set to the age of the current screening round. If the natural dying age is earlier than the dying age caused by the cancer, then the case leaves the simulation (using status tt(LEFT_DURING)). Otherwise the case leaves the simulation using status tt(TUMOR_DURING). em(Maybe incorrectly detecting the tumor (maybe a false positive conclusion):) Once a tumor has apparently been observed it may in fact not exist, in which case a false positive observation was made. The memebr tt(maybeFalsePositive) handles this situation. The specificity of the used modality, given the current screening age is compared to a random value from the uniform random distribution. If the generated random value exceeds the modality's specificity then the simulation has encountered a false positive tumor detection. The numbers of false positive decisions for the modality and for the screening round are incremented and tt(addCoist) is called with argument the biopsy costs at the current screening age. simrisc-16.02.00/documentation/manual/loop/src0000777000175000017500000000000014665030471021746 2../../../loopustar frankfranksimrisc-16.02.00/documentation/manual/main/0000775000175000017500000000000014665030471017457 5ustar frankfranksimrisc-16.02.00/documentation/manual/main/main.yo0000664000175000017500000000071614665030471020760 0ustar frankfrankThe tt(main) function defines the long options in its global tt(g_longOpts) array. The tt(g_longOpts) and tt(g_longEnd) global variables are not declared for general use in a header file but are declared in class specific headers when needed. Currently that's only tt(scenario/scenario.ih). verbinsert(-s4 //main src/main.cc) The simulations themselves are controlled by a tt(Simulator), having only one public member: tt(run), performing the simulations. simrisc-16.02.00/documentation/manual/main/src0000777000175000017500000000000014665030471020750 2../../..ustar frankfranksimrisc-16.02.00/documentation/manual/abstract.yo0000664000175000017500000000157714665030471020721 0ustar frankfrankabstract( WIP describing spreading nl() WIP updating section Random (ref(RANDOM)) nl() Jan. 06: added subsection AgeGroup (ref(AGEGROUP)) nl() old: nl() Jan. 04: added subsection Distribution (ref(DISTRIBUTION)) nl() Jan. 04: added subsection VSD (ref(VSD)) nl() Jan. 04: added subsection Beir7 (ref(BEIR)) nl() Dec. 31: added the section about Generic Support Classes (ref(GENERIC)) nl() Dec. 31: added the section TumorInfo (ref(TUMORINFO)) nl() Dec. 30: completed subsection Density (ref(DENSITY)) nl() Dec. 29: completed section Modalities (ref(MODALITIES)) nl() Oct. 18: completed section Densities ref(DENSITIES) nl() Oct. 17: completed section Costs ref(COSTS) nl() Oct. 16: completed section Loop ref(LOOP) nl() ) simrisc-16.02.00/documentation/manual/tumorinfo/0000775000175000017500000000000014665030471020555 5ustar frankfranksimrisc-16.02.00/documentation/manual/tumorinfo/beir7.yo0000664000175000017500000000031014665030471022130 0ustar frankfrankThe class tt(Beir7) stores the tt(Tumor Beir7's beta, eta, spread) and the spread-distribution configuration parameters. It's a wrapper class for these parameters, offering accessors to each of them. simrisc-16.02.00/documentation/manual/tumorinfo/tumorinfo.yo0000664000175000017500000000114514665030471023151 0ustar frankfrankObjects of the class tt(TumorInfo) provide access to the following paramters: tt(Beir7, Growth, Incidence) and tt(Survival), which are covered in the following sections. In addition its member tt(cumTotalRisk) computes the cumulative total risk, given the radiationrisk as determined in tt(Loop::caseInit). For each case the (Incidence) carrier is randomly determined given the probabilites of the various carriers. The cumulative total risks over all ages are computed by subsequently adding the products of the risk of getting a tumor (given the selected carrier) times the radiation risk (for the used age). simrisc-16.02.00/documentation/translations.txt0000664000175000017500000000675714665030471020557 0ustar frankfrankTranslations of symbols used in the original sources to currently used symbols ============================================================================== mammoCosts, MRICosts, TomoCosts = mammotomo.h, mri.h biopsyCosts, treatmentCosts[3] = costs.h fpctrl - input/control.txt oid fpin - not used fpout - not used fpcosts - input/costs.txt fpdeath - test3/data-?.txt fpsensitivity - test3/sensitivity.txt fpdist - test3/dist-?.txt fp = test3/rounds-?.txt Nmam = loop.d_nMam Ntomo = loop.d_nTomo NfalseP = loop.d_nRoundFP NfalseN = loop.d_nRoundFN Ndect = loop.d_nDetections screeningRoundCosts = loop.d_roundCost naturalDeathAge = loop.d_naturalDeathAge deathStatus = loop.d_status deathAge = loop.d_deathAge AgeOfDetection = loop.d_detectionAge Nscr - scenario.rounds().size() scr[].age = scenario.age(idx) src[].T0 = scenario.round(idx).mammo() src[].T1 = scenario.round(idx).tomo() fpdist, distFileName: options::d_cumTotalRiskFile calcTotalRisk = tumorinfo/cumtotalrisk cumTotRisk = tumorinfo/d_cumRisk tumorinfo: DoubleVect const &cumTotalRisk() const beir = tumorInfo.induction() dose = modalities.mammoParams().dose() tomodose = modalities.tomoParams().dose() [a][b]: a = type (xray) b = id(Mammo, Tomo) specMam[?] = - d_modality.mammoParams()[?].value() - d_modality[XRAY][MAMMO][?].value() specTomo[?] = - d_modality.tomoParams[?].value() - d_modality[XRAY][TOMO][?].value() tumorSurvival[0..4] = Survival tumorRisk_f = incidence.risk().value() params(): vector of nCarriers values tumorRisk_m = incidence.mean().value() tumorRisk_s = incidence.stdDev().value() tumorRisk = incidence tumor.selfDetectAge() - d_tumor.selfDetectAge() tumor.deathAge(...) - d_tumor.deathAge() - wrt tumor.selfDetectAge() d_tumor.deathAge(x) - wrt age x (e.g. tumor.selfDetect() tumorConfig.startDiameter = growth.start() (VSD's) tumorConfig.selfDetectDiameterMu = growth.selfMu() tumorConfig.selfDetectDiameterSigma = growth.selfSigma() tumorConfig.doublingTimeMu[ageGroupIndex] - growth.group[idx].mean() tumorConfig.doublingTimeSigma[ageGroupIndex] - growth.group[idx].stdDev() RoundVect rounds() - vector of screening rounds: uint16_t age(), mammo() tomo() womenYears - Loop:d_sumDeathAge womenCosts - Loop:d_caseCost (was: Loop:d_totalCost) Ninterval - Loop:d_nIntervals (vector) womencost - Loop:d_roundCost (vector) screeningRoundCosts - Loop:d_screeningCost (vector) attendanceRate - Screening:d_attentanceRate densities - d_densities.indices() -> Loop:d_indices Breast density index at screening rounds int density[Nscr] - Loop:d_indices Ndect - Loop:d_nDetected; filenames: scenarioName is, e.g. 'noscreening', defined in control.txt iter is the string converted iteration index all filenames end in scenarioName + -i + iter + .txt (not used below) settingsFileName = "output/settings- writeSettings(settingsFileName); outputFileName = "output/summary- deathFileName = "./output/women- sensitivityFileName = ./output/sensitivity- resetRandomNumberGenerator - d_random.reset simrisc-16.02.00/dot.config/0000775000175000017500000000000014665030471014437 5ustar frankfranksimrisc-16.02.00/dot.config/simrisc0000664000175000017500000002752414665030471016045 0ustar frankfrank # supported distribution names are: Normal, LogNormal, Uniform, Beta # Modalities are: Mammo, Tomo, MRI, CT # (Sub)section names to which # is prefixed are optional #======================================================= #Scenario: # use true for variable spreading spread: false iterations: 1 # random generator behavior: # random, fixed, increasing generator: fixed # initial seed unless using generator: random seed: 1 # n cases to simulate cases: 1000 death: #death.txt 1: .00000 .00000 .00000 .00000 .00000 .00000 .00000 .00000 .00000 .00000 11: .00000 .00000 .00000 .00000 .00000 .00000 .00000 .00000 .00000 .00000 21: .00000 .00014 .00028 .00042 .00056 .00070 .00106 .00142 .00178 .00214 31: .00250 .00382 .00514 .00646 .00778 .00910 .01118 .01326 .01534 .01742 41: .01950 .02312 .02674 .03036 .03398 .03760 .04414 .05068 .05722 .06376 51: .07030 .07776 .08522 .09268 .10014 .10760 .11564 .12368 .13172 .13976 61: .14780 .15718 .16656 .17594 .18532 .19470 .20658 .21846 .23034 .24222 71: .25410 .27560 .29710 .31860 .34010 .36160 .39368 .42576 .45784 .48992 81: .52200 .56240 .60280 .64320 .68360 .72400 .75826 .79252 .82678 .86104 91: .89530 .90962 .92394 .93826 .95258 .96690 .97104 .97518 .97932 .98346 101: .98760 # ref.age proportion biop specs (first diameter must be 0) # Lungcancer costs: configured at Modalities: CT: costs: #Costs: # biop may be omitted with LC simulations: biop: 176 diameters: 0: 6438 20: 7128 50: 7701 # if one proportion value is specified it's the proportion value used # for the configured simulation. E.g., for just LC simulations: # proportion .04 # if two values are specified (as shown below) the 1st proportion # is used for BC simulations, the 2nd proportion for LC simulations #Discount: # breast lung proportion: 0 .04 age: 50 BreastDensities: # bi-rad: a b c d ageGroup: 0 - 40: .05 .30 .48 .17 #optionally the following lines may start with ageGroup: 40 - 50: .06 .34 .47 .13 50 - 60: .08 .50 .37 .05 60 - 70: .15 .53 .29 .03 70 - * : .18 .54 .26 .02 #Modalities: CT: # screening diagnosis M0 M1 (M0, M1: Table S3) costs: 176 1908 37909 56556 dose: 1 # diam. value (must be integral 0..100 or -1) sensitivity: 0 - 3: 0 #optionally the following lines may start with sensitivity: 3 - 5: -1 # formula: (.5 * diam - 1.5) * 100 5 - *: 100 # mean stddev dist specificity: .992 .076 Normal # defining outside could be OK. If also defined inside then that # definition takes precedence (also if defined in Mammo in the config file, # but stand-alone in an Analysis specification), see mammo/setbeta.cc, # # 1 2 3 4 # beta: -4.38 .49 -1.34 -7.18 Mammo: costs: 64 # bi-rad: a b c d dose: 3 3 3 3 m: .136 .136 .136 .136 # ageGroups: specificity: 0 - 40: .961 40 - *: .965 # 1 2 3 4 beta: -4.38 .49 -1.34 -7.18 systematicError: 0.1 Tomo: costs: 64 # bi-rad: a b c d dose: 3 3 3 3 sensitivity: .87 .84 .73 .65 # ageGroups: specificity: 0 - 40: .961 40 - *: .965 MRI: costs: 280 # proportion: sensitivity: .94 specificity: .95 #Screening: # round: age space separated modalities. # subsequent ages must exceed the last age by at least 1 # with lung cancer simulations only CT can be specified, # with breast cancer simulations CT cannot be specified, # round: 50 CT # #optionally the following lines may start with round: # 52 CT # 54 CT # 56 CT # 58 CT # 60 CT # 62 CT # 64 CT # 66 CT # 68 CT # 70 CT # 72 CT # 74 CT round: 50 Mammo #optionally the following lines may start with round: 52 Mammo 54 Mammo 56 Mammo 58 Mammo 60 Mammo 62 Mammo 64 Mammo 66 Mammo 68 Mammo 70 Mammo 72 Mammo 74 Mammo # proportion: attendanceRate: .8 #Tumor: Beir7: # only used with BC simulations: # eta beta spread dist. breast: -2.0 0.51 0.32 Normal #only used with LC simulations: # Beta-distribution parameters: # eta beta dist constant factor aParam bParam male: -1.4 .32 Beta .234091 1.72727 2.664237 5.184883 female: -1.4 1.40 Beta .744828 .818966 3.366115 4.813548 Growth: # if one start value is specified it's the start value used # for the configured simulation. E.g., for just LC simulations: # start: 3 # if two values are specified (as shown below) the 1st value # is used for BC simulations, the 2nd value for LC simulations # breast lung start: 5 3 # the following parameter values are now exp(old-values) # the original values are FOR NOW shown in comment lines #selfDetect: # stdev mean spread dist # .70 2.92 .084 Normal breast: 2.01375 18.5413 2.31637 Normal # .014 3.037 .61 Normal lung: 1.0141 20.8426 1.84043 Normal DoublingTime: # stdev mean spread dist. # 1 - 50: .61 4.38 .43 Normal ageGroup: 1 - 50: 1.84043 79.838 1.53726 Normal #optionally the following lines may start with ageGroup: # 50 - 70: .26 5.06 .17 Normal 50 - 70: 1.29693 157.591 1.1853 Normal # 70 - * : .45 5.24 .23 Normal 70 - * : 1.56831 188.67 1.2586 Normal # LC: all ages stdev mean spread dist. # .21 4.59 .74 Normal lung: 1.23368 98.4944 2.09594 Normal #Incidence: Male: # riskTable: consisting of >= 2 age cum.prob pairs may be # specified. If specified, lifetimeRisk:, meanAge: and # stdDev: specifications are ignored # value spread distr. # fictious example riskTable: # riskTable: # 40 .01 50 .1 55 .15 # 60 .22 65 .55 70 .62 # 75 .67 lifetimeRisk: .22 .005 Normal meanAge: 72.48 1.08 Normal stdDev: 9.28 1.62 Normal Female: # riskTable: may be specified as described at subsection Male: # value spread distr. lifetimeRisk: .20 .004 Normal meanAge: 69.62 1.49 Normal stdDev: 9.73 1.83 Normal Breast: # riskTable: may be specified as described at subsection Male: probability: 1 # value spread distr. lifetimeRisk: .226 .0053 Normal meanAge: 72.9 .552 Normal stdDev: 21.1 BRCA1: # riskTable: may be specified as described at subsection Male: probability: 0 # value spread distr. lifetimeRisk: .96 meanAge: 53.9 stdDev: 16.51 BRCA2: # riskTable: may be specified as described at subsection Male: probability: 0 # value spread distr. lifetimeRisk: .96 meanAge: 53.9 stdDev: 16.51 #Survival: # For LC simulations the type paramaters and the bc parameters can be # omitted # value spread dist: type: a .00004475 .000004392 Normal #optionally the following lines may start with type: b 1.85867 .0420 Normal c -.271 .0101 Normal d 2.0167 .0366 Normal e 1.00 .01 Normal # BC TNM categories thru (<=) diameters (mm): bc: 20 50 * # TNM: T1 T2 T3 # For BC simulations the lung[0-4] and S3 paramaters can be omitted # table S4: 4 columns per a..d parameter # lungX: X is table S4's column index lung0: a .00143 .00095 Normal #optionally the following lines may start with lung0: b 1.84559 .33748 Normal c -.22794 .07823 Normal d 1.06799 .16226 Normal e 1.00 .01 Normal lung1: a .01530 .00381 Normal #optionally the following lines may start with lung1: b 1.69434 .10979 Normal c -.19358 .02105 Normal d .66690 .03869 Normal e 1.00 .01 Normal lung2: a .78600 .29815 Normal #optionally the following lines may start with lung2: b .69791 .05425 Normal c .0 .0 Normal d .0 .0 Normal e 1.00 .01 Normal lung3: a 1.25148 .32305 Normal #optionally the following lines may start with lung3: b .77852 .34149 Normal c .0 .0 Normal d .0 .0 Normal e 1.00 .01 Normal #S3: # diameter (mm) # T-row <= N0,M0 N1-3,M0 N1-3,M1a-b N0-3M1c prob: 10: .756 .157 .048 .039 # T1a #optionally the following lines may start with prob: 20: .703 .197 .055 .045 # T1b 30: .559 .267 .095 .078 # T1c 50: .345 .351 .167 .137 # T2a,b 70: .196 .408 .218 .178 # T3 *: .187 .347 .256 .210 # T4 simrisc-16.02.00/enums/0000775000175000017500000000000014665030471013534 5ustar frankfranksimrisc-16.02.00/enums/enums.ih0000664000175000017500000000007614665030471015210 0ustar frankfrank#include "enums.h" #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/enums/enums.h0000664000175000017500000000273614665030471015044 0ustar frankfrank#ifndef INCLUDED_ENUMS_ #define INCLUDED_ENUMS_ #include static unsigned const END_AGE = 101; static unsigned const MAX_AGE = END_AGE - 1; enum: uint16_t { UNDEFINED = static_cast(~0U) }; enum FirstChar // 1st char is capital or LC, used by Globals { // OPTION is the allowed value with --cancer (-c) CAPS, LC, OPTION }; enum VaryType { VARY_MEAN, // every value is OK VARY_NONNEG, // varied values must be >= 0 VARY_PROB, // varied values must be probabilities VARY_BETA_MALE, // used for the Beta distributions VARY_BETA_FEMALE, }; enum DistType // Distribution::s_name when modified { UNIFORM, // always used distributions UNIFORM_CASE, UNIFORM_VSD, LOGNORMAL, N_STD_DISTRIBUTIONS, NORMAL_VARY = N_STD_DISTRIBUTIONS, UNIFORM_VARY, UNIFORM_VSD_VARY, LOGNORMAL_VARY, BETA_VARY, // only used when parameter spead N_DISTRIBUTIONS }; enum GeneratorType { FIXED_SEED, INCREASING_SEED, RANDOM_SEED, }; enum ParamsSrc { CONFIGFILE, ANALYSIS, NONE, }; enum Series // see (Prob)Group { RANGE, // e.g., 0 - 40: SINGLE, // e.g., 20 }; enum SimulationType // update globals/data.cc when modified { BREAST, MALE, // = LC simulation FEMALE, // = LC simulation }; #endif simrisc-16.02.00/enums/frame0000664000175000017500000000006014665030471014545 0ustar frankfrank//#define XERR #include "enums.ih" Enums:: { } simrisc-16.02.00/err/0000775000175000017500000000000014665030471013175 5ustar frankfranksimrisc-16.02.00/err/negative.cc0000664000175000017500000000020214665030471015300 0ustar frankfrank//#define XERR #include "err.ih" // static void Err::negative() { msg(NEGATIVE) << '`' << s_lineInfo->txt << '\'' << endl; } simrisc-16.02.00/err/data.cc0000664000175000017500000000664014665030471014423 0ustar frankfrank//#define XERR #include "err.ih" ///Err Err::s_err; // the singleton object LineInfo const *Err::s_lineInfo; // last set LineInfo bool Err::s_handle = true; // handle a context message char const *Err::s_src[] { "config file", "analysis specification", "" }; char const *Err::s_plain[] // plain msg: no line context { "probabilities don't sum to 1" , // CUMPROB "Incidence carrier probabilites must sum to 1" , // INCIDENCE_SUM_PROB "specification(s) missing for" , // MISSING_SPEC "multiply specified: " , // MULTIPLY_SPECIFIED "CT: unknown sensitivity for diameter " , // CT_NO_SENS, "undefined specification" , // UNDEFINED_SPEC "Cumulative death proportions (" , // CUM_DEATH }; char const *Err::s_context[] // line context available { "parameter value too small" , // AT_LEAST "CT sensitivity must be 0..100 or -1" , // CT_SENS "CT sensitivity diameters must cover 0..*" , // CT_SENS_RANGE "Group specifications must end in :" , // GROUP_NO_COLON "invalid Survival type" , // INVALID_TYPE "invalid value" , // INVALID_VALUE "modality repeatedly specified" , // MODALITY_REPEATED "parameter cannot be negative" , // NEGATIVE "age ranges not consecutive" , // NOT_CONSECUTIVE "percentages must sum to 1" , // PROB_SUM, "parameter(s) must lie within 0..1" , // RANGE_0_1 "screening round ages don't increment" , // ROUND_AGES_DONT_INC "`round: none' conflicts with " "`round: age' specifications" , // ROUND_NONE "specification error" , // SPEC_ERROR "undefined distribution" , // UNDEFINED_DIST "undefined modality" , // UNDEFINED_MODALITY "VSD specification missing. Require " , // VSD_MISSING "Lung cancer simulations cannot specify " // LC_INVALID_MODALITY "modality " , "Breast cancer simulations cannot specify " // BC_CT_INVALID "modality CT" , "TableParams specification error" , // TABLEPARAMS }; // "integral number not found (parameter `" , // MISSING_NR, // "`tumorIncidence' probabilities must add up to 1" , // INVALID_PROBSUM, // string{"max. number of carrier specifications (" + // N_CARRIERS, // to_string(END_CARRIERS) + " exceeded"}.c_str() , // "`tumorGrowth:' startDiameter, Mu and Sigma not specified" , // TUMORGROWTH_STARTDIAM, // "`tumorGrowth:' no `agegroups' defined" , // TUMORGROWTH_AGEGROUPS, // "at least one `tumorIncidence:' parameter line is required" , // TUMORINCIDENCE_SIZE, // "missing `tumorSurvival' types (a, b, c and d are required)\n" , // TUMORSURVIVAL_TYPES, // string{"max. number of carrier specifications (" + // N_CARRIERS, // to_string(END_CARRIERS) + " exceeded"}.c_str() , // "age ranges not consecutive " , // NOT_CONSECUTIVE, simrisc-16.02.00/err/reset.cc0000664000175000017500000000025514665030471014630 0ustar frankfrank#define XERR #include "err.ih" // static LineInfo const * Err::reset(LineInfo const &lineInfo) { s_lineInfo = &lineInfo; s_handle = true; return s_lineInfo; } simrisc-16.02.00/err/specification.cc0000664000175000017500000000021114665030471016316 0ustar frankfrank//#define XERR #include "err.ih" // static void Err::specification() { msg(SPEC_ERROR) << '`' << s_lineInfo->txt << '\'' << endl; } simrisc-16.02.00/err/range.cc0000664000175000017500000000020014665030471014570 0ustar frankfrank//#define XERR #include "err.ih" // static void Err::range() { msg(RANGE_0_1) << '`' << s_lineInfo->txt << '\'' << endl; } simrisc-16.02.00/err/err.h0000664000175000017500000000552214665030471014142 0ustar frankfrank#ifndef INCLUDED_ERR_ #define INCLUDED_ERR_ #include #include #include "../typedefs/typedefs.h" // err messages to cerr, messages may end in '\n' class Err { static char const *s_plain[]; static char const *s_context[]; static char const *s_src[]; static LineInfo const *s_lineInfo; // last set LineInfo static bool s_handle; // handle a context message public: enum Plain // plain errors, { // no line context CUMPROB, INCIDENCE_SUM_PROB, MISSING_SPEC, MULTIPLY_SPECIFIED, CT_NO_SENS, UNDEFINED_SPEC, CUM_DEATH, }; enum Context { AT_LEAST, CT_SENS, CT_SENS_RANGE, GROUP_NO_COLON, INVALID_TYPE, INVALID_VALUE, MODALITY_REPEATED, NEGATIVE, NOT_CONSECUTIVE, PROB_SUM, RANGE_0_1, ROUND_AGES_DONT_INC, ROUND_NONE, SPEC_ERROR, UNDEFINED_DIST, UNDEFINED_MODALITY, VSD_MISSING, LC_INVALID_MODALITY, BC_CT_INVALID, TABLEPARAMS }; static char const *src(ParamsSrc type); // merely the error message: static std::ostream &msg(Plain err); // 1. // error msg + src and line nr, ending in ": " static std::ostream &msg(Context err); // 2. static void msgTxt(Context err); // also inserts line txt // msg(RANGE_0_1 using line) static void range(); // msg(NEGATIVE using line) static void negative(); // msg(AT_LEAST using line) static void atLeast(double minimum); // msg(SPEC_ERROR using line static void specification(); // msg(MULTIPLY_SPECIFIED) static void multiplySpecified(LineInfoVect::const_iterator begin, LineInfoVect::const_iterator end, std::string const §ionList); static LineInfo const *reset(LineInfo const &lineInfo); static std::string const &txt(); // status of all operations since the static bool valid(); // last reset }; inline bool Err::valid() { return s_handle; } inline char const *Err::src(ParamsSrc type) { return s_src[type]; } inline void Err::msgTxt(Context err) { msg(err) << '`' << s_lineInfo->txt << '\'' << std::endl; } inline std::string const &Err::txt() { return s_lineInfo->txt; } #endif simrisc-16.02.00/err/msg2.cc0000664000175000017500000000057214665030471014360 0ustar frankfrank#define XERR #include "err.ih" // line context available ostream &Err::msg(Context err) { if (not s_handle) return imsg; // switched 'off' s_handle = false; return emsg << s_src[s_lineInfo->src] << " [" << s_lineInfo->lineNr << "]: " << s_context[err] << ": "; } simrisc-16.02.00/err/msg1.cc0000664000175000017500000000020614665030471014351 0ustar frankfrank#define XERR #include "err.ih" ostream &Err::msg(Plain plain) // no line context { return emsg << s_plain[plain]; } simrisc-16.02.00/err/icmconf0000664000175000017500000000007214665030471014535 0ustar frankfrank#define LIBRARY "err" #include "../icmconf.lib" simrisc-16.02.00/err/atleast.cc0000664000175000017500000000027514665030471015145 0ustar frankfrank//#define XERR #include "err.ih" // static void Err::atLeast(double minimum) { msg(AT_LEAST) << '`' << s_lineInfo->txt << "': parameter must be >= " << minimum << endl; } simrisc-16.02.00/err/err.ih0000664000175000017500000000015414665030471014307 0ustar frankfrank#include "err.h" #include "../xerr/xerr.ih" #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/err/frame0000664000175000017500000000005414665030471014211 0ustar frankfrank//#define XERR #include "err.ih" Err:: { } simrisc-16.02.00/err/multiplyspecified.cc0000664000175000017500000000064114665030471017240 0ustar frankfrank//#define XERR #include "err.ih" // static void Err::multiplySpecified(LineInfoVect::const_iterator begin, LineInfoVect::const_iterator end, string const §ionList) { msg(MULTIPLY_SPECIFIED) << sectionList << ". Lines:"; for (; begin != end; ++begin) // list the line nrs emsg << ' ' << begin->lineNr << ','; emsg << endl; } simrisc-16.02.00/extractable/0000775000175000017500000000000014665030471014703 5ustar frankfranksimrisc-16.02.00/extractable/extractable.h0000664000175000017500000000047414665030471017357 0ustar frankfrank#ifndef INCLUDED_EXTRACTABLE_ #define INCLUDED_EXTRACTABLE_ // concept used by Parser's extract templates to ensure that // the arguments to extract can actually be extracted template concept Extractable = requires(std::istream in, Type value) { in >> value; }; #endif simrisc-16.02.00/flexc++scanner/0000775000175000017500000000000014665030471015206 5ustar frankfranksimrisc-16.02.00/flexc++scanner/scanner.ih0000664000175000017500000000021414665030471017156 0ustar frankfrank// Generated by Flexc++ V2.07.09 on Mon, 23 Mar 2020 12:52:39 +0100 // $insert class_h #include "scanner.h" #include "../parser/tokens.h" simrisc-16.02.00/flexc++scanner/scanner.h0000664000175000017500000000240114665030471017005 0ustar frankfrank// Generated by Flexc++ V2.07.11 on Sat, 07 Nov 2020 16:28:03 +0100 #ifndef Scanner_H_INCLUDED_ #define Scanner_H_INCLUDED_ // $insert baseclass_h #include "scannerbase.h" // $insert classHead class Scanner: public ScannerBase { public: Scanner(std::string const &infile, std::string const &outfile); // $insert lexFunctionDecl int lex(); private: int lex_(); int executeAction_(size_t ruleNr); void print(); void preCode(); // re-implement this function for code that must // be exec'ed before the patternmatching starts void postCode(PostEnum_ type); // re-implement this function for code that must // be exec'ed after the rules's actions. }; inline Scanner::Scanner(std::string const &infile, std::string const &outfile) : ScannerBase(infile, outfile) {} // $insert inlineLexFunction inline int Scanner::lex() { return lex_(); } inline void Scanner::preCode() { // optionally replace by your own code } inline void Scanner::postCode([[maybe_unused]] PostEnum_ type) { // optionally replace by your own code } inline void Scanner::print() { print_(); } #endif // Scanner_H_INCLUDED_ simrisc-16.02.00/flexc++scanner/lexer0000664000175000017500000000536314665030471016257 0ustar frankfrank%filenames scanner // %interactive //%debug %% [ \t\n]+ // skip ws #.* // skip comment true | false return Tokens::BOOL; random | fixed | increasing return Tokens::GENTYPE; ageGroup:? return Tokens::AGEGROUP; BreastDensities:? return Tokens::BREASTDENSITIES; Costs:? return Tokens::COSTS; Discount:? return Tokens::DISCOUNT; Scenario:? return Tokens::SCENARIO; age:? return Tokens::AGE; biop:? return Tokens::BIOP; cases:? return Tokens::CASES; diameters:? return Tokens::DIAMETERS; generator:? return Tokens::GENERATOR; iterations:? return Tokens::ITERATIONS; prop:? return Tokens::PROP; seed:? return Tokens::SEED; spread:? return Tokens::SPREAD; Modalities:? return Tokens::MODALITIES; Mammo:? return Tokens::MAMMO; Tomo:? return Tokens::TOMO; MRI:? return Tokens::MRI; costs:? return Tokens::COST; dose:? return Tokens::DOSE; sensitivity:? return Tokens::SENSITIVITY; specificity:? return Tokens::SPECIFICITY; beta:? return Tokens::BETA; systematicError:? return Tokens::SYSERR; Normal:? return Tokens::NORMAL; Screening:? return Tokens::SCREENING; round:? return Tokens::ROUND; attendanceRate:? return Tokens::ATTENDANCERATE; Tumor:? return Tokens::TUMOR; Beir7:? return Tokens::BEIR7; eta:? return Tokens::ETA; Incidence:? return Tokens::INCIDENCE; prob:? return Tokens::PROB; lifetimeRisk:? return Tokens::LIFETIMERISK; meanAge:? return Tokens::MEANAGE; stdDev:? return Tokens::STDDEV; BRCA1:? return Tokens::BRCA1; BRCA2:? return Tokens::BRCA2; Growth:? return Tokens::GROWTH; start:? return Tokens::START; selfDetectMu:? return Tokens::SELFDETECTMU; selfDetectSigma:? return Tokens::SELFDETECTSIGMA; DoublingTime:? return Tokens::DOUBLINGTIME; Survival:? return Tokens::SURVIVAL; type:?[ \t]+. return Tokens::TYPE; [0-9]+ return Tokens::NR; -?[0-9]*\.[0-9]+ | -?[0-9]+\.[0-9]* return Tokens::REAL; . return matched()[0]; simrisc-16.02.00/frame0000664000175000017500000000007114665030471013420 0ustar frankfrank//#define XERR #include "incidence.ih" void Incidence:: simrisc-16.02.00/globals/0000775000175000017500000000000014665030471014030 5ustar frankfranksimrisc-16.02.00/globals/findsimtype.cc0000664000175000017500000000031714665030471016673 0ustar frankfrank//#define XERR #include "globals.ih" bool Globals::findSimType(string const &value) { return find(s_label[OPTION], s_label[OPTION + 1], value) != s_label[OPTION + 1]; } simrisc-16.02.00/globals/setprecision.cc0000664000175000017500000000031214665030471017042 0ustar frankfrank//#define XERR #include "globals.ih" // static ostream &Globals::setPrecision(ostream &out, uint16_t nDigits) { out.setf(ios::fixed, ios::floatfield); out.precision(nDigits); return out; } simrisc-16.02.00/globals/weakcompare.cc0000664000175000017500000000035414665030471016637 0ustar frankfrank//#define XERR #include "globals.ih" // static int Globals::weakCompare(double lhs, double rhs) { lhs -= rhs; return lhs < -WEAK_TOLERANCE ? -1 : lhs > WEAK_TOLERANCE ? 1 : 0; } simrisc-16.02.00/globals/data.cc0000664000175000017500000000157114665030471015254 0ustar frankfrank//#define XERR #include "globals.ih" uint16_t const Globals::uint16_max = numeric_limits::max(); bool Globals::s_vary = false; SimulationType Globals::s_simType = BREAST; double const Globals::s_sqrt2PI = sqrt(2 * M_PI); unsigned Globals::s_width = 0; //char const *Globals::s_label[][3] = // update when enums //{ // SimulationType is modified // { "Breast:", "breast:", "breast" },// the top line represents the default // { "Male:", "male:", "male" }, // { "Female:", "female:", "female" } //}; char const *Globals::s_label[][3] = // update when enums { // SimulationType is modified { "Breast:", "Male:", "Female:" }, // the first elements represent { "breast:", "male:", "female:" }, // the default { "breast", "male", "female" } }; simrisc-16.02.00/globals/globals.f0000664000175000017500000000157214665030471015627 0ustar frankfrank// static inline char const *Globals::defaultSimType() { return s_label[OPTION][0]; } // static inline bool Globals::isBreast() { return s_simType == BREAST; } // static inline bool Globals::isMale() { return s_simType == MALE; } // static inline bool Globals::isPositiveZero(double value) { return 0 <= value and value <= TOLERANCE; } // static inline char const *Globals::label(SimulationType type) { return s_label[CAPS][type]; } // static inline bool Globals::proportion(double const &value) { return 0 <= value and value <= 1; } // static inline void Globals::setVary(bool vary) { s_vary = vary; } // static inline char const *Globals::simTypeLabel(FirstChar fc) { return s_label[fc][s_simType]; } // static inline SimulationType Globals::simulationType() { return s_simType; } // static inline bool Globals::vary() { return s_vary; } simrisc-16.02.00/globals/globals.ih0000664000175000017500000000034314665030471015775 0ustar frankfrank#include "globals.h" #include "../xerr/xerr.ih" #include #include #include #include #include "../enums/enums.h" #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/globals/setsimtype.cc0000664000175000017500000000055714665030471016554 0ustar frankfrank#define XERR #include "globals.ih" // static void Globals::setSimType(std::string const &value) { s_simType = static_cast( find(s_label[OPTION], s_label[OPTION + 1], value) - s_label[OPTION] ); // xerr("set simtype to " << value << ": " << s_simType); } simrisc-16.02.00/globals/iszero.cc0000664000175000017500000000017414665030471015654 0ustar frankfrank//#define XERR #include "globals.ih" // static bool Globals::isZero(double value) { return fabs(value) <= TOLERANCE; } simrisc-16.02.00/globals/icmconf0000664000175000017500000000007614665030471015374 0ustar frankfrank#define LIBRARY "globals" #include "../icmconf.lib" simrisc-16.02.00/globals/setwidthprec.cc0000664000175000017500000000044314665030471017045 0ustar frankfrank//#define XERR #include "globals.ih" // static ostream &Globals::setWidthPrec(ostream &out, unsigned width, unsigned precision) { if (width != 0) { out.width(width); setPrecision(out, precision); } return out; } simrisc-16.02.00/globals/frame0000664000175000017500000000006414665030471015045 0ustar frankfrank//#define XERR #include "globals.ih" Globals:: { } simrisc-16.02.00/globals/globals.h0000664000175000017500000000426214665030471015630 0ustar frankfrank#ifndef INCLUDED_GLOBALS_ #define INCLUDED_GLOBALS_ #include #include #include #include "../typedefs/typedefs.h" class Globals { static bool s_vary; static SimulationType s_simType; static unsigned s_width; static char const *s_label[][3]; public: static uint16_t const uint16_max; static constexpr double TOLERANCE = 1e-8; static constexpr double WEAK_TOLERANCE = 1e-3; static constexpr double NO_TUMOR = -1; // tumor/ static double const s_sqrt2PI; static char const *defaultSimType(); // .f static double findAge(DoubleVect const &cumProb, double prob); static bool findSimType(std::string const &value); static bool isBreast(); // simType == BREAST .f static bool isMale(); // simType == MALE .f static bool isPositiveZero(double value); // .f static bool isZero(double value); // .f static char const *label(SimulationType type); // .f static bool proportion(double const &value); // .f static void setSimType(std::string const &analysis); // .f static void setVary(bool vary); // .f static std::ostream &setWidthPrec(std::ostream &out, unsigned width, unsigned precision); static char const *simTypeLabel(FirstChar fc); // .f static SimulationType simulationType(); // .f // -1: lhs < rhs // 0: lhs == rhs // 1: lhs > rhs static int weakCompare(double lhs, double rhs); // uses WEAK_TOLERANCE static std::ostream &setPrecision(std::ostream &out, uint16_t nDigits); static bool vary(); // .f }; #include "globals.f" #endif simrisc-16.02.00/globals/findage.cc0000664000175000017500000000143714665030471015741 0ustar frankfrank//#define XERR #include "globals.ih" // linear interpolation: for a -> f(a) = p, b -> f(b) = q // compute f(x), where a <= x <= b as // p + (q - p) / b - a) * (x - a) // = p + (q - p) * (x - a) / b - a) // static double Globals::findAge(DoubleVect const &cumProb, double prob) { auto begin = cumProb.begin(); auto last = upper_bound(begin, cumProb.end(), prob); auto first = lower_bound(begin, last, *(last - 1)); return (first - begin) + ( // interpolate 'prob' in the range of (last - first) * // categories containing 'prob' (prob - *first) / ((last == cumProb.end() ? 1.0 : *last) - *first) ); } simrisc-16.02.00/globals/driver/0000775000175000017500000000000014665030471015323 5ustar frankfranksimrisc-16.02.00/globals/driver/main.cc0000664000175000017500000000106014665030471016553 0ustar frankfrank#include #include #include "../globals.h" using namespace std; int main() { DoubleVect dv{.1, .1, .5, .5, .5, .7, .8, .9, 1}; while (true) { cout << "prob? "; double prob; cin >> prob; cin.ignore(100, '\n'); auto begin = dv.begin(); auto last = upper_bound(begin, dv.end(), prob); auto first = lower_bound(begin, last, *(last - 1)); cout << (first - begin) << ", " << (last - begin) << '\n' << Globals::findAge(dv, prob) << '\n'; } } simrisc-16.02.00/globals/driver/compile0000775000175000017500000000004714665030471016702 0ustar frankfrankg++ -Wall main.cc -L ../tmp/ -lglobals simrisc-16.02.00/group/0000775000175000017500000000000014665030471013541 5ustar frankfranksimrisc-16.02.00/group/group.ih0000664000175000017500000000027114665030471015217 0ustar frankfrank#include "group.h" #include "../xerr/xerr.ih" #include #include #include "../err/err.h" #include "../globals/globals.h" #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/group/maxend.cc0000664000175000017500000000024014665030471015320 0ustar frankfrank//#define XERR #include "group.ih" bool Group::maxEnd() { if (d_end != END_AGE) return false; d_end = Globals::uint16_max; return true; } simrisc-16.02.00/group/group.h0000664000175000017500000000251514665030471015051 0ustar frankfrank#ifndef INCLUDED_GROUP_ #define INCLUDED_GROUP_ #include #include #include #include "../enums/enums.h" #include "../typedefs/typedefs.h" #include "../hasgroup/hasgroup.h" // group specifications MUST end in ':' class Group { friend std::istream &operator>>(std::istream &in, Group &group); // .f friend std::ostream &operator<<(std::ostream &out, Group const &group); Series d_series; uint16_t d_begin = 0; uint16_t d_end = END_AGE; public: Group(Series series); // .f uint16_t begin() const; // .f uint16_t end() const; // .f // Err::NOT_CONSECUTIVE if false template // .f bool nextRange(std::vector const &vect) const; bool operator==(Group const &other) const; // != in .f bool contains(double value) const; bool maxEnd(); // true: changed END_AGE to max uint16_t value private: std::istream &extract(std::istream &in); // error message if not connecting bool connects(Group const &previous) const; }; #include "group.f" #endif simrisc-16.02.00/group/opinsert.cc0000664000175000017500000000105214665030471015711 0ustar frankfrank//#define XERR #include "group.ih" std::ostream &operator<<(std::ostream &out, Group const &group) { out << setw(3); if (group.d_series == RANGE) { out << group.d_begin << " - " << setw(2); if ( Globals::isZero(group.d_end - END_AGE) or group.d_end == Globals::uint16_max ) out << '*'; else out << group.d_end; } else if (group.d_end == Globals::uint16_max) // SINGLE out << '*'; else out << group.d_end; return out; } simrisc-16.02.00/group/group.f0000664000175000017500000000111414665030471015041 0ustar frankfrankinline Group::Group(Series series) : d_series(series) {} inline uint16_t Group::begin() const { return d_begin; } inline uint16_t Group::end() const { return d_end; } template bool Group::nextRange(std::vector const &vect) const { return vect.empty() // no Type elements yet or connects(vect.back().group()); } inline std::istream &operator>>(std::istream &in, Group &group) { return group.extract(in); } inline bool operator!=(Group const &lhs, Group const &rhs) { return not (lhs == rhs); } simrisc-16.02.00/group/connects.cc0000664000175000017500000000072214665030471015665 0ustar frankfrank//#define XERR #include "group.ih" bool Group::connects(Group const &previous) const { if // subsequent SINGLE diameters must increase ( // subsequent RANGE d_begin must be equal to previous.d_end (d_series == SINGLE and d_end > previous.d_end) or (d_series == RANGE and d_begin == previous.d_end) ) return true; Err::msg(Err::NOT_CONSECUTIVE) << d_begin << " - ..." << endl; return false; } simrisc-16.02.00/group/opequal.cc0000664000175000017500000000022714665030471015517 0ustar frankfrank//#define XERR #include "group.ih" bool Group::operator==(Group const &other) const { return d_begin == other.d_begin and d_end == other.d_end; } simrisc-16.02.00/group/icmconf0000664000175000017500000000007414665030471015103 0ustar frankfrank#define LIBRARY "group" #include "../icmconf.lib" simrisc-16.02.00/group/extract.cc0000664000175000017500000000224014665030471015520 0ustar frankfrank//#define XERR #include "group.ih" // e.g., 40 - 50: // 70 - * : // separating blanks are optional std::istream &Group::extract(std::istream &in) { char sep = 0; if (d_series == SINGLE) // with SINGLE d_begin is not { // used. d_end is inclusive in >> sep; // maybe '*', then the max if (sep == '*') // possible value d_end = Globals::uint16_max; else { in.unget(); // or extract the inclusive in >> d_end; // end value } } else { in >> d_begin >> sep >> sep; // get '40 - 5', or '70 - *' if (sep == '*') d_end = END_AGE; // set end else { in.unget(); // or extract the age in >> d_end; } } if (not (in >> sep) or sep != ':') // group must end in ':' Err::msgTxt(Err::GROUP_NO_COLON); return in; // return } simrisc-16.02.00/group/contains.cc0000664000175000017500000000032114665030471015662 0ustar frankfrank//#define XERR #include "group.ih" bool Group::contains(double value) const { return d_series == RANGE ? d_begin <= value and value < d_end : value <= d_end; } simrisc-16.02.00/group/frame0000664000175000017500000000006014665030471014552 0ustar frankfrank//#define XERR #include "group.ih" Group:: { } simrisc-16.02.00/growth/0000775000175000017500000000000014665030471013717 5ustar frankfranksimrisc-16.02.00/growth/growth1.cc0000664000175000017500000000032114665030471015615 0ustar frankfrank#define XERR #include "growth.ih" Growth::Growth() : d_base{ "Growth:", "" }, d_bc{ Globals::isBreast() }, d_selfMean(VARY_NONNEG) { setSelfDetect(); setDoublingTime(); setStart(); } simrisc-16.02.00/growth/vary.cc0000664000175000017500000000050414665030471015206 0ustar frankfrank//#define XERR #include "growth.ih" void Growth::vary(ostream &out) { d_selfMean.vary(); out << " Growth:\n" " selfDetect: "; d_selfMean.showVary(out); out.put('\n'); AgeGroupVSD::vary(out, 2, // d_doublingTime.size(), "DoublingTime:", d_doublingTime); } simrisc-16.02.00/growth/agegroupvsdlung.cc0000664000175000017500000000021314665030471017436 0ustar frankfrank//#define XERR #include "growth.ih" AgeGroupVSD const &Growth::ageGroupVSDlung(uint16_t idx) const { return d_doublingTime.front(); } simrisc-16.02.00/growth/growth.ih0000664000175000017500000000027614665030471015560 0ustar frankfrank#include "growth.h" #include "../xerr/xerr.ih" #include #include #include "../globals/globals.h" #include "../parser/parser.h" #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/growth/nextrange.cc0000664000175000017500000000031514665030471016220 0ustar frankfrank//#define XERR #include "growth.ih" bool Growth::nextRange(AgeGroupVSD const &next) const { return d_doublingTime.empty() or next.beginAge() == d_doublingTime.back().endAge(); } simrisc-16.02.00/growth/setdoublingtime.cc0000664000175000017500000000255514665030471017433 0ustar frankfrank#define XERR #include "growth.ih" void Growth::setDoublingTime() { d_base.back() = "DoublingTime:"; size_t size = d_base.size(); if (not Globals::isBreast()) // used for LC sim.s { d_base.push_back("lung:"); AgeGroupVSD spec{ VARY_NONNEG, true, false }; // useStdDev and don't // extract Group Parser::extract(d_base, spec); spec.ln(); d_doublingTime.push_back(spec); d_ageGroupVSD = &Growth::ageGroupVSDlung; d_base.resize(size); return; } d_base.push_back("ageGroup:"); auto lines = Parser::any(d_base); bool push = true; while (true) { LineInfo const *line = lines.get(); if (line == 0) break; AgeGroupVSD spec{ VARY_NONNEG, true }; // do extract Group if (not Parser::extract(*line, spec)) push = false; if (not push) continue; // continue for syntax-check // purposes if (not spec.group().nextRange(d_doublingTime)) { push = false; continue; } spec.ln(); d_doublingTime.push_back(spec); } d_ageGroupVSD = &Growth::ageGroupVSDbreast; d_base.resize(size); } simrisc-16.02.00/growth/icmconf0000664000175000017500000000007514665030471015262 0ustar frankfrank#define LIBRARY "growth" #include "../icmconf.lib" simrisc-16.02.00/growth/growth.h0000664000175000017500000000420514665030471015403 0ustar frankfrank#ifndef INCLUDED_GROWTH_ #define INCLUDED_GROWTH_ // Tumor: // Growth: // # breast lung // start: 5 3 // // #selfDetect: # stdev mean spread dist // breast: .70 2.92 .084 Normal // lung: .014 3.037 .061 Normal // // DoublingTime: // # stdev mean spread dist. // ageGroup: 1 - 50: .61 4.38 .43 Normal // ageGroup: 50 - 70: .26 5.06 .17 Normal // ageGroup: 70 - * : .45 5.24 .23 Normal // // # all ages stdev mean spread dist. // lung: .21 4.59 .74 Normal #include "../agegroupvsd/agegroupvsd.h" class VSD; class Growth { StringVect d_base; bool d_bc; // not --cancer: breast was specified double d_start; double d_selfSD; // SD of d_selfMean's mean value VSD d_selfMean; // mean and SD/Distr. used when 'vary'is set AgeGroupVSDvect d_doublingTime; AgeGroupVSD const &(Growth::*d_ageGroupVSD)(uint16_t idx) const; public: Growth(); AgeGroupVSD const &ageGroupVSD(uint16_t idx) const; // .f void vary(std::ostream &out); double start() const; // .f VSD const &selfMu() const; // .f double selfSigma() const; // .f void writeParameters(std::ostream &out) const; private: AgeGroupVSD const &ageGroupVSDbreast(uint16_t idx) const; AgeGroupVSD const &ageGroupVSDlung(uint16_t idx) const; void setStart(); void setSelfDetect(); void setDoublingTime(); bool nextRange(AgeGroupVSD const &next) const; static void writeDiameter(std::ostream &out, char const *name, VSD const &vsd); // static void writeDT(std::ostream &out, char const *name, // size_t idx, double value); }; #include "growth.f" #endif simrisc-16.02.00/growth/writeparameters.cc0000664000175000017500000000204214665030471017442 0ustar frankfrank//#define XERR #include "growth.ih" void Growth::writeParameters(ostream &out) const { VSD::fmt(1, 2, 0, 3); // used at selfDetect out << " Growth:\n" " diameters:\n" << setw(8) << ' ' << "start: " << setw(4) << d_start << '\n' << setw(8) << ' ' << "self-detect std.dev.: " << setw(4) << exp(d_selfSD) << '\n' << setw(8) << ' ' << "self-detect mean: " << d_selfMean << '\n' << setw(6) << ' ' << "DoublingTime:\n"; if (d_bc) { AgeGroupVSD::fmt(8, 1, 2, 0, 2); out << d_doublingTime << '\n'; } else { auto const &first = d_doublingTime.front(); double sd = first.stdDev(); out << setw(8) << ' ' << "value: " << exp(first.value()) << '\n'; if (sd >= 0) out << setw(8) << ' ' << "std.dev: " << exp(sd) << '\n'; out.put('\n'); } } simrisc-16.02.00/growth/setselfdetect.cc0000664000175000017500000000102714665030471017064 0ustar frankfrank#define XERR #include "growth.ih" void Growth::setSelfDetect() { // extract the selfdetect // specifications d_base.back() = Globals::isBreast() ? "breast:" : "lung:"; Parser::extract(d_base, d_selfSD, d_selfMean); if (0 <= d_selfSD) // OK if selfSD is positive { d_selfSD = log(d_selfSD); d_selfMean.ln(); return; } Err::negative(); d_selfSD = 0; } simrisc-16.02.00/growth/setstart.cc0000664000175000017500000000123714665030471016102 0ustar frankfrank//#define XERR #include "growth.ih" void Growth::setStart() { d_base.back() = "start:"; LineInfo const *lineInfo = Parser::one(d_base).get(); istringstream in{ lineInfo->tail }; // get the line's tail if (not (in >> d_start)) { Err::msg(Err::SPEC_ERROR) << "[Growth:] start: must specify at least one value" << endl; return; } if (not Globals::isBreast()) // use a 2nd value for LC { double lcStart; if (in >> lcStart) d_start = lcStart; } if (d_start < 1) // start value must be >= 1 Err::atLeast(1); } simrisc-16.02.00/growth/growth.f0000664000175000017500000000046214665030471015402 0ustar frankfrankinline AgeGroupVSD const &Growth::ageGroupVSD(uint16_t idx) const { return (this->*d_ageGroupVSD)(idx); } inline double Growth::start() const { return d_start; } inline VSD const &Growth::selfMu() const { return d_selfMean; } inline double Growth::selfSigma() const { return d_selfSD; } simrisc-16.02.00/growth/agegroupvsdbreast.cc0000664000175000017500000000021214665030471017750 0ustar frankfrank//#define XERR #include "growth.ih" AgeGroupVSD const &Growth::ageGroupVSDbreast(uint16_t idx) const { return d_doublingTime[idx]; } simrisc-16.02.00/growth/frame0000664000175000017500000000006214665030471014732 0ustar frankfrank//#define XERR #include "growth.ih" Growth:: { } simrisc-16.02.00/handleexception.cc0000664000175000017500000000046314665030471016071 0ustar frankfrank#include "main.ih" int handleException() try { rethrow_exception(current_exception()); } catch(int x) { return Arg::instance().option("hv") ? 0 : x; } catch (exception const &exc) { cerr << exc.what() << '\n'; return 1; } catch (...) { cerr << "unexpected exception\n"; return 1; } simrisc-16.02.00/hasgroup/0000775000175000017500000000000014665030471014235 5ustar frankfranksimrisc-16.02.00/hasgroup/hasgroup.h0000664000175000017500000000055414665030471016242 0ustar frankfrank#ifndef INCLUDED_HASAGEGROUP_ #define INCLUDED_HASAGEGROUP_ // concept used by Group to ensure that // Type has a member group() returning a const & to a Group class Group; template concept HasGroup = requires(std::vector const &object) { { object.back().group() } -> std::same_as; }; #endif simrisc-16.02.00/hierarchy.odp0000664000175000017500000007660414665030471015104 0ustar frankfrankPK%k[X3&¬¨//mimetypeapplication/vnd.oasis.opendocument.presentationPK%k[XConfigurations2/toolbar/PK%k[XConfigurations2/toolpanel/PK%k[XConfigurations2/floater/PK%k[XConfigurations2/menubar/PK%k[XConfigurations2/popupmenu/PK%k[XConfigurations2/progressbar/PK%k[XConfigurations2/statusbar/PK%k[XConfigurations2/images/Bitmaps/PK%k[XConfigurations2/accelerator/PK%k[X styles.xmlí]Kã6¾ï¯0$7ÉzX~tÒ$$»ÀLÌLØS K´­Œ, ’ÜîžÓþƒ=ìaÿßþ’å[”õ0å–ŸÑÈŒÉ"Yõ±X$‹Eê›oŸ7áà $i£Ç¡©Ãˆ<èÑêqøÛǵÙðÛ7ù.—|èm7 Ê´4{ A:@…£ôÁ‚Íãp›DÐMƒô!r7 }ȼƒˆyÈiÝ 5ö@Ú¢‰é&U+À´š71ªe¹š8)"$Õ«V'—‘ëòÒÔ·ë,‹F£Ýn§ïl&«ÑÇ÷#œ§eà9qêUâûaµeöh5òÝÌÕž°û‚—x^g›Êæ|>‘\NêÃMMÕæQhà ,½$ˆ3e4 µ,ø&ʉi岨g×52ÍFïP&ùß»·œžj•jkL¥ö „¢9\€RptÆ#ú;—Lµ¥ç4Ô–°FËP£»ÆVwIDttDŸê;犎NÜ]£H¦1Â4'^#'žz¢òœ4Þ&!!ò½<™º)Ô—CêÍàJVbÜ/á6òéX¡øç$ÎrCRì¡PCac“¡¬—˜X.åü,œíµ —ê*†ÊY¢Mu}³ŽÍG„HîAÕ¶0-²²2£~bûêÅm_.›ÄYŸÎ(1L2ÑO+å®xZÕŒoí&ÊBˆ‹½‚<oq°•ÕÀÝãw2Wµ0¦•ˆðˆÁ,–Tƒ\e´Ý,@¢Üßh )ŠeB®1¼JN Ô6©DÈ2ÁøA*M«c%¥…€=|Ãgý%D3þÒõ€æ/Lß|CùÉú7û8üüáþc;øàFhJBºÃÉдýò8üÊaúµDC†ƒB•˜V[ñ¬Vú’f`S ‰ƒÌC3Í“›døšyú1 †!)딼 PW=iFfNnܨ+ÖP•K%Þ0á9˜ûf°1AqVvÌNøQÓ«QÝ0dét-þæ<¡ •¨ëhÌÈ/¦þAH“Ø4ŒÖÀMD²ÍÈȇ™£/–äËBvHdxäO¡ 6(QdH|Ó0¾” Uç¸Ñ ·n>X±¤L|lÍè ¿[Æï߇[ÀÊúA‡î‹&“ ¤üÃÂN­ùÒ«Övk2¿¸°?!û5I+(ˆ;]x§B\ÓšN,ëââ¾zZ)ìûVj<ñ'~•Ï-ÓõŸ á®IÚ…ŠÀ>pæ/ÆÓ™1¾ÀÖn Ò¢ ð2Tã6’xÏCG´æ½È¿ŠRŒ,eÁl½JÊf!7nò $²ˆß% î&³¥¦@ ‚ö 9§x¯ç]cæK"mS ¡­¢wiœÁ•%xž£Û ˆ›ÇÚŒu™&*-Ün´ ô¹šïg¡%-#ÉV·,D½BòÓà3Ê·ÆqFÒB<’ÝJÂóJðО(K/¿}(Õ«¡}Žíïr\7§¡-°î`ð¼ÏkžÃZãý¹Ü&Þ½†àù@«‚ª²]‘»ö[Yÿy˜wsaÜðþ•…:ßMüaû¡%T (·]àã!nx›áÁQHmšF­&/¨[¸h9ßxÉ5½@€Mk}qb­+ c $¨· $ Km “à3Ä›[4°ƒêú?¶i,_ˆÆ®]Øz˜Ór03RÆfö«Vå…`™ö3’`µ–rh¬]Ÿ8ßÏb$®dÚsbæKe&—}fàÿŸVˆl´Ö C2Yž@H‰µÅ­'²ÍÄéd> ?i–†½3Ãÿý÷ßBá¤J$#e6A¤…î刾ž FuVŒ®ÛP~xÙ,`8T±pE»3vÈä4j’´Ö+p 3Œ¶K˜Âý!dw†IõüîwˆÐì.r:CÈÒÇw‰Ð¤3„ì»ÄgÚ>wj§g!4¾S;=ï¡û´Ó¦ÑDÎmj)›íØFu¯F'jívVX`º‹`[–ÈwÅTºK)¦‰ K&^†5 åéf¥ä⇠¤1%' ˜:‚ÉÆ óZ²m‹iôG# „t§ÎÂÜfXR±A”²Ù:ÛÕZcŽ.™Ó2QöïÑÔ88ˆC`_ëNw"·§¡æŒ¹Rh—¬Ø=|ŸY’x‹z?¡>(^ÝŽ© ¯ c¡m¸†våñZÑîlé¬a‚3ªöG»¼dÝ1ÏÏq«ñQåL2¶YnQr ”‚¢ß¨éX‰ˆ ,ˆkEõB ’±E~½à5$DŸÀ&^»T1K#'a–JŸªt°Š€ÙÜ–H>³¾2¸øxÙ.ÈÖÈJ`QÓŒûxÝDÄ*j%WI³_ú¤ˆÊüýBøÃ>{Ì#þ;‚øÿ¸.ü7j:OÄ`pF‹^}ZÍ×1ˆà— ¢øßr¡͉´÷ŽÆá#êðîý™•@\‡€ü©ŸK“‚oP=tn éwãöÝNº¡ž7/¤ÙJ]‚,$ÇX¹Em'ƒcäCeZ)´¢|ãqùþ\ìn’‘\“ŒV+±"5v!Ê?—tŠÃŸšá2>r¸ÃåùN¤JóɱåFB1\®GÆ©uÔp©ëB2\Î#Ç?›n;g˜„Y`†ú$|e;3ey¨KÛ~ý©åÚ¨´<ãq72ú¼ë£5/Ò§ï逿…ÁÁƒ<p,’œJÖøU£ù uŸn²9e¥3³&ÒÊ ^áOáâ5ÏIœêÈYI`Ø2˜“†É«¨¨¿˜z˜‹€GÎFG"È"ïUäAúE°Öê ü޲ûG¢Ç‚ùUÐãqÿE¯ÉÜ 5ø**zYÙ\ùõ‚³ãúÉz†íV=H¯¶ìäæV‹·µ§„dðö(Ç?èœrp¯¸ÌÐ&,D~e¹šhàt wÚ6 2vìØ-~塯"E׈qÍÀW6ÔÙÿE„/\ïÓ*Á‡÷ù“£xýaMõÀ¥©•翯„Í•c+TB»Ïr}#˜•-Ø)´@-V…FÆÕF«‚M4Åž>Þäò{ûýÓãJâMP™Ü„ä=Ħ¦ùv#R(Är&™dî="¥Fì»HávœY󄦜ÝPÝfPCãe'B‹©Y…l” ZºN‚èÎ\ŠuWó¥¢’hgº\´©¦1œ}~eQ¤¯¼vô¯ÿseĹ„¦×zíÈj֞ݪU_;:F‡®&à¿cêîÚÑE³_àÚÑäN¯Õtwñhz§—Fº»x4¿K|º»vd×b¨¯÷Þ‘iÞ–©¾‚‹GúÄ7_>ê¯ÝÛgÜ»}Níö±­?¥Û§Fì?‹ÛÇjtûÔ6U¸XNdàÇóyמvŒíì÷¼ì-ÝO+: [×îewƒ¹u:Ìí©}"ÌKNÖšG³ª0ouñc¬Ò ã0·O‡¹5žs«QÏ+;¤è?s§ÌǧÃÜ´N¤çÃ|Ò æN¹:æÓn0Ÿô˜«c>ëói¹:æón0Ÿõ˜+`žn¾/yòcYºô„KzyàÒ&ðýPõ¨U°Û¿ãØ¿ãØ¿ãx%ªý;ާ8Píßqìßqìßqìßqìßq¼òóÔ‹|¹Ìq*œ-ùé ÷ý±é½›ÒíþØ´?6íM»96½%ŸLïé2½C¦wÈ\)B½C¦wÈô™Þ!Ó;d®¡Þ!ÓC¦ÂËÒ;TnÏ¡â8½CåÄ•q) ôOáP©ûN*²‡D‹ñGiC÷‚ßâ»·ÆG GÁÉÔqˆf5 ÑÐ2è»=õ‹LÞƒ÷´zÀñ6ºáÌø{†ø1/}:¶ùo6ט†î8žÈß#РݲM: ½ŽÍtæøÂL칦ui .ÁÄ>ˆ§üÅËKq£æñÔr¼™ÖÃ{@Õ›eëó¼Ï¹T¶îÓc•"ãêºwfÏ”x0mD ª;Bk Àcv ­÷ØOüªÉ‘{Ïà ÁjÐ}g +hªÏïT>®Ö⨴Ç1ug.§sL¬©>§zÊ q‡IÀQyÆ0A+@j¬RÁZ̶èÆìÀ #ApŒ*&Fâ—Ýòïü¸ôÈööã¯sã *rbéø@ZõÑy}ŸÙý#â«t ¬_…QÊ_4\×b÷QI²„0;@BšŠ¶›…ôÝõJBßÍÐf"Àò´{ÎîÝ*)õÊÙ>KUÿʼnO&aíFª-ì˜nϧòæ¹rJ³vIá^D»=ÄW˜hÙ¢Z%]¹´jOͨµ¸ZLã²¶Œ¬/?fy-ziÌ&gÂðµ7Y¯Ãóéáko¦žÃ[ñ¿–³1³‘R`T’ U|4÷Ã}iB©q9þï˜÷`Þò(Çð5xŽ;ÇÓ´tËRÁTÄ ¶Õn «hæÈZ—ÒTk¢;4º» ZÎyZu¥mœÔÓ«k3°RlçZK‹ç ¼ù*̾¦ÿüj•}ͱ•Ž…žÔ‘­Q%‘„-uôÙ´¹?ÕñTBÔÒ§¦)#šÇr] uÓÐÇcçrÍÏôñÜ>[ó¦­Æäbà—š?3úåö%øGUk¾bË>Ì^ÁËÂ)›Ö9fõ:Ç,®s ÖD&Ý{ÎHÛÑçó’}³uk6“RžŠõéĪ3m¬ýº @âk¿ë2ª·ìοvüZ™ñÇÚ,»Fè±îÌœ:¡ç›Æ–wµZ0«&6gZƒ9Õç´Dg ±ö †ÎbGB@ô…ñ·;xÊ}ÈÙ¥A‹Çë>N¾G~Ö*ËHþfñ˜ç»»åòùùÙz&V’>,?ý¼mf|Ηuï‡t½ŽÚzcÛ&ˇåÚÏ}ó) žÿTßñù1ß¶Þ8çË¢µéš…FËÿúðþãê1Øúfg¹¯‚Ã]ëþ»šÎ›$Ýfýñ²l®;¯“mç“¡‡< Mïl•†»\›ºEo™bhÝ»E_ù^à´ÇŒ½åh,þúð¾î_²¹îh•PHã%IÒ 'n({ÔèÐeùûðfº#}Î"s“tp= ú|vÔç4̃´!uÆ¿u3žhmúÏg_ ÙKÑGšÉêìLV~´j~èºÛ§QÑi½ZQ ^<[" 5â%îq«àJE´Iöñº”Ý¿àó.HCÑäGÅmwÊ¥“¿DÚ´.:Ëwç‡ùôÞœœlôY îÃ͘>þ<ñeÑI¦ îX¢/¨}y¢ë”¬õo'kùÞt—Ÿ™'[¦Á.IsYÊ?WC5Ûhš$BÅ$ë (<àêd×!úÙÓƒ6mŸ:Dkõè§ÚT.:«d/ÑG/U'ÔÓæ+ÿh¾Û ÷uo}å{£d„„Ut’ž ?2ÞoïƒT›ÀFžˆÙ& ¢µ_$æ6;f qwù¸êNÉÕ!‹·µ_SZlÙ\Ø€cnüU`®ƒU”½ý®œXsÙ(‹y¼Y¼ ~õÙýŒ0SÝ •—7‹õwIöoRŸòÂÂP)úšA /z1{Éò`«tÙ…ù lÙ“Ÿ†…€/ÏÏé¯itLHjºæ Þ‡@û‚qÎ#sÔO4Ùúñ¥¦ÜhÍMtœcrOòä‹¿•é¯w¨¬šteçÌÿ,ê;勿4HæaJxpï¯~{H…B_> M§{PÞ]Ý’û_ƒUží¾³]ä¿€ƒ—äB[žéR̮֪?ʺ:‚. Ì<ÜÖ# L%ˆÎá…/‡W=›ÇÀ_÷¼Ù«xù‡ô„YR÷®êË;?áoñÃ,oQ×ÚO× 4Õ-2*-/M~ƒâ$JY*¯€ï%ðJ²‹?‹²÷&Œ¢ºos¡éº)þT-½„yùæc’†¿'š~>€•‹‚M^õ2c[>9‡ǼÆú¨ñ9\‹˜©Âw“Ümø¹Ã¶<¾Ú6—«¾Øâ‚Ë&”üƒ²IÄ"‚o¶É ˆR3¿BŸæ¼Ñ§Ÿ>Ôbt&ú}†ÓÇž‡6ôF›á´!cÎ<ôa7úŒ¡Çé<ôqnôNfÙŽ;}Ü}ÎÓ§”?Æöx7ÚŒ‘Bg²=üFŸÙ±Y«s€ø<BöBc"—Îd}ЈÔA™zóÇdŸ {)µõÓß‚Ô âõ›Å÷) ²8¾Þ(v‹<Ú)ÖÐåI<|u Ê6\¯£a“!ù ÷naÇÍÆ¶{…ܢೲŠ,d£6sÇæ2wè òGæ#Ð-e@·h¸GÇÙ¼U„Ð\é t‹‡GˆcáÙ<Æ[PSB‰Œˆˆ§Æ[„:̧¯6Þ"×AîÍ’(\/äkæÚÏàuÿÆÁ?°ýwð+X¿^´®~)Úéw[ 7T[Ò+Å‘_”ÈÆmKTØ&‘¼|}‰XòîøìŒöÎ1q9©4ÉAѵÂߨ©Ýézy‹þ®xlü}”›1Œ›õ²F7m»¨v,Øbî,ÉðŸN©G‚×,ÏÌ9÷š½<=á ÊF!ò-UqðFYჩ]>à}O˜î‹|_Cê»×A›PrlãK´v©D\ðaGê}Š1‹ÿ÷$=0 ÜóÅŒ+•¸ Ä™Jæx!i p sÙô³Ð»ÅéaQð¹jÖGê$þ:6¾å4“¿ óáÙßÔ‹®f´ßЇw5%› ÄoSÕÎIü`ÙÁuíJ§rƒæàË“XuN-óÊdô$H}ÍXÌc®æþ$ÞýÚúË$ËéNäat¹ ôfüéÄH.®ãý~:ñ~‡Öoô§sâ/Ž˜NsµžAºõ#[Ußø\]ê‡gÖŒÚÒ^Þz¦Cù€†™»qÜEöC-i$éu@ím2$'Žë ¶z=žÎ§¯q‚|ü¡9qÙFRä2x'^GaVɧ2Õ÷h!wˆ‚§ ªÄø~EAn”â:Ë¢üY6™âå7‹ÿûßÿi^Mzˆô‚Å="áù÷ÐÒäê•ü.Tj?æ~úñe{Ÿ4´ÚgÂ4ÇëäÙ<^)Å$JÙ7.çÞtxÙN¡zl’4¨Aøú"CYø«Dˆ^!ï«Dˆ] !lѯ!çb‘¯÷rø|¥zÚ»Bô+ÕÓü‚}zZ$!.û²µÔ\ùÚËÎCñ«†ûdýÒü—cß~WdeÄÁêe~¦Ząߨ©”yi–h‹³ô«*˜,ÒêDvyùöèDvùGÙ;ò_’}^Ýôý{ôÉ^T³Ø¤pítÐâLöfÕ^Y2+«Ÿ·Ñ]¸~³×u7õŒ'Ž‹/‡-‹šªkÌ $®I•´¾&‚`ש/©g9âw5çbJ÷ÉçŠswÕ¿À`qÅjÒt?AÜó>Iv E§šœpãòèË(}ásõ F†ÑˆkI(Ï*I…^¼ý¸ b? “‹#A& !ªð$(D„^‰¿$Yž]ª'1X‘¬Á+Èv{B€PQŽÕ äZž7"™Oûm’^"¦©TU«8: !Ô’\$c„yua,ý-MžóÇyÅIÉUAr5@ò<ܧ{Ëu­ãX¤Ø†1¥Éú? .“£QP"½ Q‹ð>NBà ØŽ ’]®8¤BÜ~Œ7—Wή&L¶Š“­ÁM´8†÷(.Å-ªà$Dá)6lŸ>…O~tq˜¼ ¹Ršá%â*Sqõæöbe[TÉŸblÙd4VÀS?ùi\>=ˆºƒK*äf¾ú_¸:^ü¤ƒb+3_Ô•QB¢´)Ë¿||wùU‡î°“É©yŠþ4³zSƒYÔÁ*a::5NÕ÷ÁßÒd¿›Ô\¶Q‹¸ŠgÛ¼}c+± :É•m%†˜Ýé šœa¶Òí·•ˆÂ$ Œab"39kKÁ„ÐèL0•Xs«ëXÇëÍ0 3¦Z›MI½ ³< ï÷bÝôò‚{v½ð–jú ø Nßò@Å=yéÙ`bG‡¤ Úþc'@zõñ(w¸,µ› K­ƒ•tBÕÑ`­Rë “ZÞ/µ„Á$ äÂÄ"Ó#Ô3Fm.´qÚ¦ø·¸;9Òo%°Ex[Î_Iú‹$€Ìl"qéNú³ÅÛOÉø¼e7Ýq¹âk`ÕÙÀ:Ëlˆ´Eœ*H¶…˜Œ³­¼¤¿Eɽ]ÞuÅÝq¹‚R×µQܵáDˆÊL¥*Nã“i€Ó¿§—÷[qwÌØŸÈAoó¼n!—ÉÔh×Pøðó×ÑÝÝV®Cpº³Ȳ=5;QåQªÛ±°”·é pÊX§ên2¼šº»±DçÒfiP‚<±@=æšã6— Ú<ƒƒþ¸ÐmC¬&w”øRÌ#S0ÐYgþ‡ DXcµ…Ú0I1˜˜XmA6=—Û­^-ˆhŠìÎj¨ OÍD"T¤ëõZOˆ:¹«¸µ¸º0Ú2ˆknOm(+V n³(U'¾¬ˆ@Ü•¥ HÞ)îgW¥Z˜Qcñ€0˜¦A<˜šw›@ˆÅmÖÊÐ 1´j°ã\8kűç ÎÔ²ù¥âX¤‘ô•Y‡s×ôk‹c¡Í3 M#Œ aqº¡b¶š:³ÃêªJ9±H©Zy ÂN?À.LRäʉ9Ìå&ó(o×y¶ÁšážÔêˆMqŠ×JC)Ö!Üb¬¬Öl^­ìÑW $Û O_NAÁȱ«¿6H?~h¾aÑ:å°šxºáØëÒ™7˜’Õð-«³à¸O¦KÛ]K—^ѳ¼ÊÞ2µÂ «À± ×{Ëݬ²¹ äÈ6=· ]hB8o¯`­|7²ÜC‰e•ï¦ÝªahT¤¡ä|7aŽé¸ÅתOµ˜k@ž²¤¥™jT ì±N…}ÿa]ENW.Ú¢™t¶ÐÏ`q“íUìé.pÌ„jí<’vŒeÂæI‹]˜$DÞ01r;&e¨mÑÚ\PHcÑe6„UôСP|ìzÂÀµk­õs4Ì+¢6å&!­ÅZÔf édz±ÖåÎÂÐ8°à¨¦Ü]í!ix¨™ò4–Ž,@bXÓcí^4R§Z*Ò]€1BIÈ*’vjñb‘X¼éÎŒ,%Â:.LÁ@à°'1·µÀÅ€†©Å-—ôN±­w­žÃÖ«Ï1iÃv¨‚ÐáßZ3h1ksDÓpfT X­ÍjqhÕÚ¢22`¨»Îpàb.Ò±nŽØÊI8L- "LˆÃÚ´/´¹´éhß¾´]wõš"U7~¢þŸHœ‡p’¶Ã o]ÉÛ"!åº4ñ L‘ÎèŠE:Å‘hã;ºËfÉÀZC²Y˜(LF8"˜¹à¯µVsQ†Ï´Š9'ï¥GjuêO}BËúNµ%Ì©²Ñ´²;º<€ø)MÙãLIæ§VÞȤw—ÆA›ÐP·KgÙ Á4 äÁÔ"D!l°½ö]5ØÞÔ]XG؇î¦*ì:»idiG6²=“CxÖ14r_QF#9{´ÿ¼t½0»XrVÃõ’“³epæz­¹Ù"8s½W”›ÕRwïU:qƒ¤%Â=ÓÁ®×‚0´qÚøµ{YŽFm6•7 \bûþ_>ͽÕx0£ËõWŸŠ#“&:J†Ömj0ˆ§‚J‹ºM›{b³‹Ý¶mK4ŠÍ.HgßV³O»½$ÅÙ'j=鯇N³[jÉÈaI¾<—¦ò#­6 Ü|}í¬@­8ñ@Ó¤Ÿp¡03ˆ\MLi›aÂà P:iG·ÞÊ@S^zôsâÊ·¹ ^$Èñ”óü~r_¬a¿öµk&Š!÷˜ Nt(­*q!_ øÐmóò¡ 'ºW<¿a„*Ç$îRä|Àž2pñZgÏ A0K±þ‚ÁnÏA&¥­…§Ð† h›²³M÷{j8鯧oÝq Þ@-(ùƒõâSNZüå㻟|x×+|®FsoQ÷þ}¬f°#¤<*®h‡’—é”ÓO¢ëJXé2•š("ý‰"hˆu}Å“B§|DcH³T!úS÷íÖ,"',¥¦pÊmËéVnëé‰N &‰ PqT81›œ´ÐD N4b¿ÙðuÁ“#|Ke5ß$Zøº0KÀf™Øñ¸éymk÷Øá¶áyS—î/{Ô R£Êæ³.€U"àbm£:û²áÅõD묘¦Óph8»¦Óš ‚&Ïp®™º Àª)vIwØ>`ê= `q‡Š Q[ÔÎ&6þžEXùÒcœäAvŠòz‡kãP|þ1Üoïc?ŒZý“ú<ˆO[Þ^) •E=¥šÞBeúî0“&"AGŸ¬,J‚Ëo`.–Š5VºÉ3ßÛ\ª±AÀµ°{ê¥`‹¹JúÁBÊ&fDêÛÚæ_Ðãøkœ‘¿ “h-&R|ôÈn/¬ìò”ÄuÏ dAž‡ñC¦ºMÄ'PŸÂ,§¨ÞY jýéRùdiýk¬ö¢ÝîËáß·ÿPK1gú1 ·àPK%k[X settings.xmlÝZ[sâ6~ï¯Øa¶3ít²\’½˜Ù¤c.B¸“øeGØ´È’+É1ä×W2Í“emÔé4déûŽŽŽÎEòç?W~óG”\ÊïJ…7xÔGd~YÛÖ٧ŸW¿|¦³ò`Õ§^@"Î8Bváoäp«›Ç”ÒËÂBˆ°Z,Ò’Më;ÊæÅJ©d7¿ Û1€ à²1R¥€#^% €¼*¼ªº#ª~ë „±šH¸iäÂǨ¾g B‰2Åð9LÈ —øcážyŽåQ2CócQ6½Ÿ_aD–O:Œãø]|žè¯lF1yºëúº²/ö”½ùu¬`ÛÕNÛ~f"ç…«=ìÌàêóv.›3$` läͶY‘]¤ÈÕã'ë)¤û~Œƒ¸Z0“A`Ó°°{(Ö¡|ˆˆ(\}”³ý\|‰óSØ]8iàçÏßçŸ _,ÒÐ/>¿/ç†oC4_¤KQ1*Ç⟠†ÜÄ1Xk4_eºòKƒùHn5|xur41 ö)^'zëÊa*¾4ÇT~_*eÎK.3Ú.H¬eàÛÇ~¸¨I!غpÕŽ//³qô¥ï@7K—zKèÿ˜¢øc¨5…tØS ïÑ:Åô¥ˆù}Ç0Âý0BdÇW¾õZÎýж LšzF;A,]ôøI;<1…êëñ6 I-×1ò–6\‰¦†Í<á !¨/™Ã!Ý$â§§aäCÞ‡lHãôEȘy*­¤¬@â3®ëÿ>Q>:‘͘(ŸgOë0J_®|̸¨ßÀ˞ݒùÚAÁ?d]Óòa©sA«,-ú®'ËVe§×Ì7’†¬®“”#&£a~ÇqÿoLä^ÏD:<ÉóM“¨tFG!£Ð5¤“.¥Á-I ²§Ù$žŒÐWqðö²¦qηÎ@–Òø¼ú>ôx[ЧwàPr³iˆXkæG:4¼Mz”U4À§Ô 86˜ŽDzô˾‡’4²>!³ FPDû'* S -5Z‡_CFLŽéGÄÑ«IS¢­¾RÕô]MCãöÅÒbpW27À_Ýqˆ}Ëx1»mx«ó¿õ7(;ƒñcØ[Fß Üð¾â\»wÃÙ¸ý×ÃÝãüüÆ~ê:1Íó!~úÝ1-w,?—ÓiŽ [Vé~d®ê¤¶“÷%÷®cŒ¬ÚÌ®¸˜ôð(pJwåÚzZþtÑ{lÆõÀýœÈ—ãÀĈúNíÁ#Ãõý—êAïÁkaì=–Vêû´µZø­±á÷*ãëéÄZ»ÝO†ûw½ÒTá4Jq·aò›zoÆk·åÄ~knÜ|\{íwï\<•ý¤ŒK7b_­‘½ãHúW”¬}Û¼[µæ bHùœ ¿9”üÍëqË"®Ó a0þ`·œ’|¶–:™Í^ßvj5Ç2šŽS»:‹™=6šÃáÀ¶x*1쉱tm*Ç‘[r–neœ±þÝn+i92h/¢`JÒà׶·‘ïÃ$Li¨›ÁúÕvÖ¥&Ð` V½ºd!¡)ˆ?™†š¶þ²÷òLsw:Þî¹M.\þ‚âKŸÑ/Ÿ>–ó³ŽL Խ̺`-£óf™±œ1È)ŽT°È¥A¥½”9žÒȀеÅÍõ×-©cÊ5N¡FéC= Ï jÀ[jò$I†1ò Å«N%;ºchßVµÆxØ=`ºo›2™yª”#bø÷"_‹!³ð×óÚÛß"Ùï[ Š\È΀ùï8ͳÀHì'øyvž¡¶ytúAÔ‡làÉ™«6EzÙ„‡¾ÜÉ*Õ¶aâWvužC[æ „‹Qº2á6ÞB›v96é-Áë1×ö·ÞæÕËÓEàú´ëçÐnJ³…+­Np—¦:…ÓÜ{Éü@›†ç¹&~ ,ã€Û d¦Ògpƒ~£ß9¡3OÌ£+ýæI?„À§r›kÐP ‰„Ú cšÿ•‹²iR3Õ%+ð„ºûÌûKy”r·/̘×i¤ø ŽG¯=“iØ´þˆ«Þœ#Ò}¹ÁŽGÚ«ãóhþˆß Ã$Æ1Y=·¾=Y÷C&mMf©×V-bg³*ŽÈêKU¶Dý©{àƒç½Åïî½ÝyõPK°Iã8ì*PK%k[X Ç."|A|AThumbnails/thumbnail.png‰PNG  IHDR« ü³ïPLTE +++333<<³@n©DqªHt¬Mx®S|±KIþffÿbnÿqqÿ\†¯[‚µ]”¶`†·a‡¸eйi»m‘½p“¾u•Áw˜Â{šÃÅ ä× ÿÛÿÃ$ÿþÿþ þÿÿÿ#ÿÿ.ÿÿ5ÿþ=ÿËUçÁkÿÿ@ÿÿNÿþ[þÿcÿÿvÿÿ|ÿƒƒƒ‹‹‹“““›››Ÿ  £££«««³³³»»»ŸÆ„„þ‹•ë’ë•”þ—˜ý‚ Æ†£ÈŠ¦Ê¬Ä¨Ë’¬Î—°Ð›²Ñ›£íœ¡ô»“ÿ ·Ô¤ºÖ¨½×©¾Ù¤®ë¨¯ð¬«ÿ¨±í«°ø½­ÿ³³þ³¹ó¶¸ú¸·þ»»þºÀº­ÀÙ²ÅÜ·ÈÞ¹ÉÞ¶Ãæ¼Ìá¼À÷¸ÀþÀ¿ÀͰçÔ¡ëܬïÞ¥ðÛ¥þÞ­ðѺêýƒþÿŠÿÿ•ÿÿšÿá¯ñç­ÿã°òê½ôÿ£ÿÿ«ÿþ´þþ½þÃÃÃËËËÓÓÓÙ×ÙÛÛÛÁÏâÁÍèÍÊèÃÃþÊÊþÃÑãÅÚäÉÖæË×èËØæÍÙèÍÓòÙÎíÒßçÒÜêØÒíØßïÓÓþÚÖþÚßöÛÛþßàßÍàèÔàçÖàìÚãîÜêîÞæðÙàÿÞèõìÍÿáÝñþÄþþËþþÔþþÚþãããáéîèåáèèçëëëàæðããþãêòëäôéçÿéîôëëþìñöïóøñïøþâþþìþóóóòõùôùôöøúþòþùø÷þþþÿÿÿ¾±Ëe>¸IDATxÚí½‹—+G~ß'ír€î*%ñ9’™ÝÄÌæ!é¬ó`¬}ä0>ÙØ²[‰ëÁªî% ÚüÒZzÂ÷µÇb¡Csrc—Ë ŽÇœbÉÝX°È>ÇÓ>Ui ˜§% Í“ÃоaÅüþÅj™ƒ Ë7d2FÄÜïó*ó{÷̃Êþ*Ûg®Wõü —€VåBkÇ«x®d¡€˜³ï¤ @èÈ‘UúÀ>"ì#LìM ÌQ@Hì¡b(ô¡…å"„Ë]ów|lX è10À]"ð=À †^¼ìwò±ˆ~r†ñBÕö°ò é®g¼{HHÌ*œØ_ÆPŒc„+kWUBA±1 !bÚQæ9¼Â5°,¢æ(UNîø(ÒÔ aÔ\Æî,@âzXkj®bX¦#ès@#BBF¡ë™_æU˵pGTˆ ‘æ+ÄÀß"V« ÔñªŒcÄ)¤„”›±a…Œ‘é 5#L¼Ã C€bsþV‘à> ‚å`pÓ˜b¸C54Œ4CÄ`fJuw%4=ž®r[VÀ#Œ ç.5V…˜ïsW,ÍÊ禣€XúæúÚ …+·IJ©cÙ¡Hj3ÜhêÐ~Á¸ÿ/ˆ¢ÀUž€ÌSÌÀ£”¹Kó ûœHnƒ§GaGªÿ°½Oë2—u¨XØçYë âPÅæFdßUÆQdaÿA-ý(á’i,¹P2ýEá½Òì~.Íሧ.¯þÞŠ.p«h Ý•¼¾MSój><µÝβRa¤L7dz=%•@¡2Ån |Üï“|Æ‘V¦ƒ ÃØ ZB™>.”ʨxe:Äþ#±íäT¤#ó¨ T$À·Fý‡öå¶±’;fз"‚Rã÷T«E@PaÀ£F`ZT(‚3cxˆ‰:”@È1­øV#"²"£ï‰ëâÜíS?|ùeý;/¾ÔØ6V>‰v| <â#¯±6¾NÕxNÓ*‡^ÿ£c3^3O¸Èh{D»¿ÂEŒEÚw„£+FÁ|Cé(P5.Žñi¦”Wä ¢êU· ¼êÝ~±Ã·¾g~vÛºQko+#&5—"dÂŒH2ð!x…ýQì`Ž‘×QdCQFãK£ÍCcŠÒ""‚= mŒÐ—^¬=ïnµEíàúfw[h%ÖìœO½[’a47Iäwm­[ëùºûõö6²Rãÿ]ýP£ÏéÿTã/U£G¸»Ö®u&¿Õ6кbBMøÀD½ÅoàöGSºµ Âc§‡⫃hÁ–ªjÓL­^WÛÁJì+îÌȃ¥…˜‡s„˜+£øxEPëÀE¬t€‘´1lÓƔ÷ªŠ™¦H²˜Æœ1O÷ÂÐØ‹ímíI„„}„al~i…y`^ɱo^-B5#A„!YÊ­š~ÿóÚáV°r¥cÃ*¬øUF®„w™N¨ UûH£Ð}»XJä('0êb « »þŽðÍ‹ˆ}:–‚@ôÜ8 60‹€«,¨r—:̸Օ¸ê9žÏ†caÞŠºÜ…‚£%TEsö0¶ ¬‚Záİ *6Fí˜ÿY€#Ê ¨ÇÊw¥q£¢Fè! Œe¤]Å‘ÁÁ}9¦ÝàKwŒj´‘mósè—KÀ~†¼ó ªr„Ä0ºÂ™½*¥öI»¾Bç¤*F1õ&傲¢æl#jÇ+J¸à3Ÿ‡4">¦!¶kjCÕ‚eλ_żÃÖ‚ 0 ´r«Œ ÔEØtvÆëBŒ,íãšÎ9䙎’fLLg†;Ïܹy«€!!È:^µjÏ'î Õíá•’"÷7×Z?F}˜¾}£ï8Ÿ ¢y¨®^k£ƒƒ§ï<ž©ì_ƒ'¨øúíêæd¾ì›·‡ª šyE¾ v¡Q…p"ŠÌ*y¤-ãš-Z—ËSn©Š)Á?ècùTV«¾ƒÉ#€0Ƅ۱²¸q‹)-š÷}‚hÆ…?áÁ¼äáô·P‹_˜XU¸1­†Ävª>Ç,†fxX˜!³°ñÀ›¤‡´i^…q›Î®Ÿ¥íg9"›61ψ”Šs†MÒÏ¢(ó:¨ÀfuMÇÆa?'lŽ[n„…ýÌI¤C{¸ÈÞg°Iàк öðƒœŒyc+ó$ó*D~:S}{ª·kœ‚/kâ"3Øò "QA )*+Q!ä‡ÑP¯â9bÖψh>w½Š„Ôh ÇãÌ"M<4È¢À˜» ®l'Öۛ晞Ë$d@ÙCrJ€°G#Ðw’´GU‚=pÿ~N e>ñ8FF|TS )­Ú ECÏ^Xýûóχ㢊uaíÊ&=Ìøk¾”¹ö4áÐèq££«úZqî`!qèIm°sÚc£¥ªFÇssö¬£(fi'2Š*{Ó¦¾¼Šï†öŽ«)¿ w84 f‹Î4‘ÀýÃ{$z¡ÿ\)¨@ÂÅÁ N¬*j3í-Ø–$þ•#Ü~Ò‡z®aåxØÑÈúÇ(¥‘èÒ^.’¢jëÅÀ ‹¢¿L1Ž…²bb¨(øà±Á!‘}ó¯ÊgŽõâ*FÿCƒÿ0ïgžK(ÆÆ™F¦ãrýj Vû‰RŠm`wJÛä†é—TÄD$5`þ0#2ÈrÄR4Ôž’¡­ŸÕAö³(¾ò#;Ê%ŽÒ±'ìC4T¼_Nkžès3i)bs8Gý#šQMšç„WØœŒ6ï40O2ŸÂOÞO%‹u¾©¶€•mý¤ÇMfƒ¥þ^ñïæ;t'‹¡×ÿÙú°jg»±M‡L>OºEj®§49„dígªŠÉöÝ?ÿÝm¯ðM¶*WA…›_ƒGlô0æ0pƒ¯B 6qe~¬nâj¨¸‚¢úÁ ÅÕà†!½9XS?Ž5ÔXÜKûͳ-`%ªˆbåq-!(ÀH â{ˆ†›_$ÖXU#†’Àü×÷O(4JÜ 1FŠ £BÆæSÄŒ†¯¹AI…Qóæåãa(^ÄÐÈEQZ}nÆìÁD1š÷–ÔÇÄxA ç‹PFZ ÅiѱعW6ðíŽðö “äú \AY¤ÄM\Oð–«œöt™¶ˆ¬»õ ™ñÓ€Qº^êÀÑQUÒØH?=œmÔ Ià1%½Ø·$¡}ì.Ž”1FŽÛéÚÔWRÜ6Ø ¶A3Õº…g¥ BߥŠÙ ceæON=ƒòþ„l[7FÆ”N0¢‚¹ ªÖÒç€" £€C ­ïq¹ëç8 Áض¬Õ0 ‚ ý°þåm°+×±’bZ¸ †„;ØXÄý Ùºÿ BÀŒ3Ïu¼Ál 5A82î•D¨82/ó(ÇöÕTçÈ P‰b·P»A›5N:7þq…8*ŒýÜ\P øv¥#[à ”’vþµÜ†qh¤Bd‹£û]M 4av&·M²ÇvÒH ¥y Òñì|p›âð?<´É|ÌïZŽ;£ŸTÃë5Ö]õHD“xUó‘‰dÞ°JÚ‚;îC(ð Äf¼ô]¼ªçʹ'²+‰%½O¬î¼…¶µkc¶=Š?ê/Åäu"ˆ•R%«²•¬æyJÍôA©vÉêNÚãåï¥Ê6¾õƒ_ûÆë­’ÕúÛ¯ÿàå_~3Åóÿö‹¿¡¿ñ+¡Y²Z{«ýÊ¿Õx­‘ÂJÞ|©¦ßúç~pÐ,Y­»5^yÝü¬'NËŸÙ%dº­F«YØìpqûÀA2ª™°ˆ©uU—[ëªZ³dµÞ6Lò¶-^ѹ)¡~»«Å4­³æï{ ̤3’ì·Ø:…œæ]`V7½á¢ ÁîXGÙï‹hZÅeõläì?ž[Ît91¦5÷ú}çYÉj]­>f8óú´·'Iæª6ê—%«õ³ÒzovMÓñ±×Œ\Í’Õ:ÚåDQÒÙ,ñ>µ2wȯX¦µ5¬t÷q+1*­‡#\¡aaYuoG,¦1öš³¤á啈얬VÜžOs;ˆ±?sDj×®oü¬dµÚÖ™ œœáؘ.<¬ßøgÝ’Õ*[{ºÅÔFéÌìÞ€,ȨUXV­½ÛÈâ ÍñŒ‘±¬¦µu¬tûª<\89uD#aÔ*,«fk¦B¬÷1¶j‹2:ÕnóMk Y ‚¹IPŸl„OgÓ#„…eu0/mÕªµ’ÍÎïÔÆwKV+h¹¡õÖk C}ãæ·Ù¦U\VóL [[œÔºêK÷tQL«°¬æÍÓîÖ”Ög“ÕCOøËlZÅe5'B>Pí3‚¹·ZýLôŠËj*¸"m2ÁÕIµÀIÉj V#g:YEÚeMé"˜VaYÕuiÉL¤skM“ö&šVaYÍÊÙ?›ë‰úÁ)Žó¦Œ‹ÊêrFx{1Õf’Æ”Øáæ:•U·‘D€Nz’e;§½pÓL«°¬¦ÚUsê½Ã`î‚ñ¯9mk•¬–ojš]ÍLX% bL­‹ßß$Ó**«i)ü9ñÚ•¹·lZœc“F­¢²š’jœ›é.>çÝ·/§ÛäeÉj9V‡·-`zX¸"ÝŒ#l̨UTVgÍ[gt¡.¼(q8ÃÛQ«¨¬&ÓÂÝѤöBí®fZ\«d•«Ë¨zi Cm¨i–Õ¸¼=[æEvÿš>pÚ¶ïÒ…ÜþŽû R €è`9ÑG3­¢²OáωL¨ªçUcÁùN(Zp¡=v½„%º ,½bŠ>fXC&¥‡ý Û8Ó*,«Ñ>oÞ%ÏìNQ´ê» ‚<èÙ›îÈ7¢¯ÊfqªDYÕ A°q¾VQY¦ðçöN¼¿sÔˆ0‰î¯2tM‚R±#|Ÿ˜BÃÊC¯ú!Ãóµ ËêææühŸªrω*Âõß·+¨¡'ðõòÌáN€Œá1»™x5¦ŒQŒØÆ ²º¾À÷f#ÆâØåR{ò#ÅÌx¥eÌøÍ*òBÄÚnìª Šb».i¬"1ÔeZEeujl$É%Æ8¿w¾»Q«¨¬ž¥AuÕõ_ûÉ:¸»2­‚ÛU3Å–"µoýGé»oÍöØ^ùÕo$6­VÉ*q¦ð›É7`lý¥¯~ý•ïÿò×gP·_úZò šöë%«¤mÂo¥9c/ý›_i¿öÖÞ ·¹Ñ¨¥éNÛÏJV YY»J4mçZÙ·š¯|ݼಾ7µWK½,ÉúM« ¬l ¿“•e1¬§i=žär¹—¥vsí¦UPVÏUŠóÛ×õ4úX(½•U*ìï]–¬+…¦]³1*­®ƒ£+1uëÙ·G]¯ ,*«ƒ4V5œ02Z§Ö¼*[j¦Ûžó.M« ¬¿ŸÕxýçe}_ç±ÔÙM«¨Ú"…1¼Ýºä&†©\Ö”ÞV²ÊÉk¾©Ñœ¬Õm}ïÍ\¦î´Ö!,«€²”Ûã¾}ãûŽ×ZMÑÍiµÇõŒZÅb%ÉØ%ƒøì‘ä‹¶³ºÍîWCqѬå²ÌZF­b±‚BËE•Ca)(àÀOÚŽÛUç: ÔÝËg×á5ŒZÅb…¸fŽÇ8Õ?"ÈîÛ:§uÇõø «Æ¨â¿ÇØÐQ«X¬"‡Râ“êAØßÄs®U=Ÿ vL?«qŒÌ¦µY²ÑêRj»Y§´›‚+ ~žÜª®ìêrÊ)íÔòøt+µ ­Ù¥š‹êù$ äpúù<ÌGc¬tÔ*jÜb¡c4¥À½cEú¬à_·ž‹Æh=n•¬ÆÎëö/}°è)SB»íFk^ð¯õ8—•TW—×*"«ý¯ýóÿÔoÏÊóiówºo.|Z£½*Ó*"«ö¿ñ/ÿÒ_œûŒÎãlÁ£n>c¯^²¶g?øWÿ㹨Fƪx4&¥¨ò‰c´V" ÈÊ.ÿüôÓ¹Vu#ʰ¦ÿûXÇ_Ø›³û:#é7Õ´ŠÇª_½ùä“y^Î *å\E,pÍÿÐ¥¢ ˆð<£ÈCc¬ £p¬ufOº‰Pi½«D{Ìñ‚𑀦ÆŽrÕÊ5Fî‚°h¬†såŸ|ºà W­ÚÅ,vdÕ'†UèV c>jõ#UMÜö±ºÚ^g¦]Mœµ!dp%ÜöX#óo¥£WêÀëâ¥Y¬¦_ÊjhDj(1µzæH¬Šûï÷ÅÍ=Ñ=du-…¬¡×É*¼Ã vùµ{`¯£{ÇêfZ܃,¨Ôó´’³–Å¥€… ÏÉÆ•ø¾±™kõ =ªKý»ß_K#xïœh€¤ 0¢iç¾±:™40ÕÙ¢𛿑þM3hŒÀÕNhS×Xz6u¡®Þ3Vcb| «…s±Ú/½”eJ+ °–è } 'Š ŒÝûŪ;8ÒÝ'·_¼ÛU÷ÍdŠè¶2¦©«ÿú-Îç†ÕX>ê6«$3;Yk`õÎ&œ‚¢°6n±J4µ•yBHÆšÏNç>²šXÄâ³'PÍÚŽsUÃ\`ß½‡¬&WFøtœÕA²(é2¬¦–?-jo}µyïXÝÒ Ÿ>C•P©µ— ȶSçJ¾÷+¯Ü7V·×¡³«FRQÝ^6xž¶æóàû{ƪûøÖ]Ÿ<Ý?Îê—Nt¨”qŒÖ}ëß¾}1òATºÃU~˜ªH©»w¿XM`~Uvÿ*»Æ¸_¬êÓôkVÆš?N7]Ƕ߽G¬¦ÃøàÃá©XˆJݺ¡µZßÇo¶î«ÃéÈÕ³¹#½t¯Ö„có—–.Eq¦ûòfâPø£þ|›ø•I·÷†Õ¬ŒÔ€Õ³ù%7kBsêIóÀW€"ô¡ä'û#hgµC©¨(Дi-âØà ­Äœ¬oí¾°êÎú¦}VÏ\³æ„^­ 9’rÇN±SˆzŒ( ÝD‡ƎL)€ÜáX 8Õs‡`)›3ÜÞV3—ñyúÉ¢%‰u…h1?B FPQ5B,†ôG››˜éd¬1œÁ”q³óa±†aÊ¡˜3Þ¶ï«ÙáRÃjñ^ql°&4¥‘aÅ«.">2 IÈ*ª„æ(DH‚%&D†µBŒ(ˆi²2»]ã>°jÌyOþûÖ}.ƒ‡¦¹â9ùÿ#SÏÒÍcš|Wÿ\¦êº[Ï*ïZpÛÞz3qú»©R#Ö¶³šPëR\¹¯}4™êX_ùfŸìõ¯}=ÝE×ÜrV[;ÜñT`O`¨ ‡9Bm㟙·%‹Ct_z)‡ú‡o¿˜N-äjßLVj]Bía`„3ôvC70Ž8Â(fbWeÂnä ×¾»¼³ÓlÅpõ( úÐÜÔŸk|Õ  ½EkëX=O…jÊŒ„Ù1dú@Œ$Ò‘»ŠKhþšÛÆ*‰ZA¥õûÉÇlõe¬‘¸Â KÛ1/íËvŸm«jý“7ziEã°ù‘ŽºŒúiQå  ê[Æ*VøäË K\ƒ2ÍcåÇœªÚ7…U‚ö‡o,3’|ë[{¯Ùh6sÿXIlól›X%Pë·Q™S™àÔ«v«ÙØküúW^i5~íÅ_Ou‰ïå²Tq^¡öÍ`• ¶> ÕÜA®Û1ŒöëõýF³ÕéwBýÆï4ö’rõœ\Nâb#X%Ø)x:ªiï}FkFbSéÎA=!®ü6Þ©o «jýƒ -ò²Ó>l4öö,£öüvõþiŽKâçjßV‹ÕúLTv•’nëì`ß0jœµUÒƒÅ5÷m»sœ5O¨}X-v“¦£2vôþ{Ïß«5[YJjÛZcfô¼[Ës}ž|ªÚïžÕbY<ªÓˆ††éìTWw— ®ƒÎtTÝ|»Ž­`µX­_¡ê¶Ï®Š†Ã¥FîÖ4\·»9÷—[Àj±;ûô/®Ä÷átÑP_R¯µõ•ÕÇNØy´ŠÏjžZ7âû°qð_ýrÐüYgîuþxérÉÖþ³\+˜÷K¨ýnYMUë—Ý–ßÖAj~þ?ÿlñGií×›ýOÓ\Á¶-Ýý³ÓÅ—V|]‹ïž&ÓĹ.Ï ®ËæJ6¯ªÕ~kK°ŒìxtpØwžÒÒ‹=®…BÉBŽ´‡0 ˆ¬ðjs¾¤}“ÇKÄìl¼Pðªô«0`U†ÏÙî„6x\¿jú—H]å” 1§Ç ] óØÐWÛ¤¤µ*a2Ш]ÙÙx• j.) Ãøùž‚æa1X©ü‚p5!U¬ýJ€ì„R5åPƒ0húFîúP+Ge³*¬ÂzFûˆëKÍ ã\3lþGùžƒÎ{Å`elI@è; O9\ºŒ)¡ zŽWNý"׈…®ç ûÀ¿ûA¦÷©mÄV³>\1XI»Ö¢ð\Q©c«-¤Òf¼Š˜\n.`ï³ÁÝt -ÞȆJ_>^îsöÎ/.z«: ËWµ¯O³ù0%ÄOÙè÷3{1Ë©­Þo~ç7ÿýÿeEßù<þÚX©[; ]N\hv‚vo)TÉŠÐfÕÑñ_ÿÍÿçÏýåÝÕìbº|¨ýÎ|áî¿ýÚëSÆ—ËePe².NŽvÏõ©þ×~é/çh5ë~QYÕõÅ—;/½tk5«Ë¿ûár—@†!ëüx÷èä¢óÓ¿øOÿ;ãd5_ùYQY5¿þâ+úõ—j·¬ê“%œ2£ß;=Ú=:½ùûÃ'úät5_yéªö;bÕªŸ}û-ÝiOT[t—F¥õ^òôÈÅÉîîñÅØ]O>Õ½‡+­B²jÖ®:c™½ì‡!wÏW£§ŠÇÊîSy8Òt ä†j^z¤/%ÎgûOOúŸá|5ª}ÙPûúYõKúkã:»“+ªYý‹ãÝÝYu5\ ~=\‰7¼l¨}ݬºo·o‡.·sE5%£ß;·Ú|‚îÕÉñ*¾û² Ȭ™U§?NÝž5õø?ÿ,ßK¸‘HJL®¬a­¦÷/«Ö`U[sÕ>ý{ÿûY¾ït3dOÕæÓÛÓ+Ÿáx%±‹%«Ú×ÊjèLµomAûƧ ¶Kè_)‘üU®Æ¹ÕøÃK†Ú×ÉêjýÚóIT]Óê£CVo±”˜1\éùÃK†Ú×ÈêÊrZû“¨cÕaŽ%ÿ½ÓãÿéÏÓª¹oŠ<ÎWá/9en}¬®w½ž˜op³nÏYN°l˜ïä\ÿIjwæéHˆk÷bç ^ V×ëZ4f 2ýVSÔnÂ|ÝÔ茼ýé*üáåòøkb5p«¦œÁ±Õ°–]¨¯7®ÍÓfô»cs]Wá/j_«ã÷“‰e+–˜ý>%Ì—2£ÿÉØ¬”UøÃ­ƒgÕºY,q|ZÛÄÂe}¯8Ë¥7+ÌWKEþéxJz²}¹Pû:Xæ¨ê£goêb0µ´Q³‹ã#+%¦öj©†¬ãð*üágÎê`äbB>4ãÃO>ÍlµEa¾³CVwbUøÃûÏ7šÕX@bT¯ÏXb)ùBpIÂ|ûÉ­ô“ÉúøÃKí¹¾rVck…¾—•Öï'°†¤a¾äbåédÕ òÃK…ÚWÍj|»€I>g‰¥…kÌ.ÊŽ¶ç‰‹ÐÜòò÷‡/ëËêÆ­šÔÐsQ)Ç[u’.Ì—¸íö'Z?¼L¨}¥¬&\ÛU¶Õ,¯xPÍ—ÒIM8Gÿ“)sþó÷‡— µ¯’Õ¤qì·£ÒZ=îÜ’»GÇYz¥dÁ§S ~ó÷‡— µ¯Õä¢7nðÓ ^~96Ô¦ÈÞÐyYO¦e¦s—íÏ÷7‘ÕÁ䧺N[=M¸ÂȬ‹Ó„)ø™WMõ5õúÉß®o «[yÞë´URTæ{ýÙüj¾äá‚ÅnÍ'S?Uþ²}‰PûªXÝŽ]¹ÁÉQéÞÿü‡»Ç§yŒïo/”_LŸŸ’{Yç¡ö±º½ ÛU?”x‰¥¾6ÿ?sÚõzñõäÓéŸ"oÃZB\¬„Õ„[5 7<%‰ÖBè‡ùúR¢™S®ø`Q6b–ÜÉÛ^bÉ×U°šæ Ýà$¨ÆÃ|y-¼¸ =òé,sÏÝÞÛ$VÓÎîÐ ^Œê¶”hå³Lð‚b>˜9õ?o8û”¹üYM]+qàÿýù¨f„ù:ùÀšo 3†+ëç,Û³‡Úsg5µÌoàÏ] fN˜/§eíçfôçxç9ûÃÙCíy³š^>Û·ŒÙK,õlTbž6Ïg»ˆ9sô?£Nò5¬ì¡öœYMOÀ÷ÝàYV•hb@í0‡7'£ÿáœÞ9ïüpæP{¾¬flnmÍj:ªÄrY†vvÚìáÊV¾þpæ)sy²ê¾=ýSX7x *[Í—ü4ä²ÃÛ~3ýp•»?œy#˜YÍ*Ä´jùªôa¾FËfמ§®r÷‡3WµçǪ5k]ÌÆ¡þ{zK›¤DO'_ü(r÷sô?œïLäì×ïšÕŸýÉìýÁÿ="%N²ÆÍ[—ÿ˜Ó3úO¬«‘¯?œ5ÔžÕñÑ”ö¿þƒ©w›ö?üoÿÅÿxrõÇîO~üÓÝ£ãYÏÛvOóØ>gêý Ž›¯?œ5ÔžÕË‹ÞØ¿‹^ïÿÑàÆE¿>ôÿÖÿ›?Õƒ;û?toø¼þÿ]½jâ¸#‡±›ž¨ûxù•7§,+Ó]”§ÎW¶g µg`5¥óþ“Ùï^û½Orúн#Û¡.˜’ùpa˜2×üpwom¬vÓ„ÿ“OóúŠý‹äñÒ“ÀogôŸ.¼œòÍ×ïŽÕ¼ký¿ýPçË*‡Mo Yƒ¹æ‡êÎX­iÛ•Þ°ó]~Æþ„#ØMPV•ë²?÷\Ï¥œljtiÛð‹¡KçcW9ÌØŸX´áÃ$¹ê<ýጫÓef¥DcHÛ!4°kë"¶–ëädW9ìü6°zš¤ŸÎÕ®­—"Ú $ ”\áØwЫ6uq™Ž|®w¡Œ0GAD|„Ã!«Xµœ]囲÷ Q'ž§?ül½¬ÑSE.;>Á>¥Þ`±õ9žO"ž$ŒF¸ã lMH€¥V²?£@™Ÿ"JcW#‹fl—#åÛI†«œýáýözY=Ò 2É©v9`Àc>îï6æ+íAêkà*A7veÕƒCVv%AŒUó3¨"€¤,•]-=c4=òI²*¸<ýál¡ö̬„àOý9~!ðr`WÌE46¸¯1ÔHóƒ"B†¬HÈzša(Iˆ"Ä¡HgWË'öo2úOºÇùMsÌjÏ®cêXéHjý‘6]X_om Ôàÿ‘v#C\3\1Ä]*8òŒ…f$ e%JgWzéÄþuFÿAB ÍÓ®¯—UÖÆ £8âTˆÈ‹=yiíJ/›Ø¿Êè'®òõ‡3…Ú×Ïjyÿêæ¿ŸÃõIâ]Ñrô‡3M™+«ÞíSõÞR!ŒAFÿiò(ØÃÜüáÖûëfµ„ÇÑÕÍ·~øƒæë¯¿ÞÌnWË&öûýÉ»£üüáL¡ö%X}6Ð ±T”>€ôƒ_ùêõ÷¿úçß\®– aØb’W:ϲÎúZYyU#È¿ˆûBÐG.Iw–šõú7mÖüîY½~ÐÉjWsgì'ðsê)†+çüá,UíÙYQ¢«1ÃÆÆPi¤é­c‰ËŸíÕ¤ zÓ{ ö2åîõΚfÈÌͰ²„Ú³³bíxUÊ Ô¥1©)*èl¿Öìd±+[,¿Db¿ö©Hç¶ìO–P{VV=M©ÆÈ ¤Gp¨QÒÝx[õëå&&•ÉÙ^}.®ÞÑLO){£ýŸ¦óòÁYö\_f¼BPQÄ'‘FQ’WvµÆÜËøl^gx1[…ea|ú_ÿ“t_>/¸¾NVƒŒb ý׬' /·öŸÍàÙ›£˜kYû|ø^ª‘#78ƒ7¼6_ørþé4xzŸ_áj§µ«ì‰ýŸêtÚ$¯üp†P{±ã£×i¶Äþƒ¤ËÊä-Û3„ÚWUoÛa'º.½ˆgKr߯êcJãˆP©CJDúñ*³WÜŸtÐLuÚòÊ×6ƒ•;0Pý ŸXNt½>/Õ‡§L». ¾ÆÌ•ç p‘#*HóÓç‹÷ÛU¶Äþ`Jw*™W~8ý”¹Õôʱ[ªG„}*0‰\¹‚‘ùCÁ! @`<ȃ¨… ¯Ù«:€œjàq抈™Ÿ.u(ÁЋÛU¦ûƒ9r—i(çå§+båjáU}W#Læp‡ qÀ` 9FÔgÜ#€ *i4dXëÐfõµ„ÞzUî{4?=âÅ˜Ä ì*ËŒýW”×璘j_ «ØÑ޼b%DTõ¥†¤HyˆC*™ïEÝÁ“ù/FÚd ¨Úú Vå£QEV p¥pý$v¥SÏM¸ž#—fÕýœüáî³ ±+¤…`,¸@$²(†Æ*0ÆEOˆW ÖÃĦ/ (SµÚÂÆ}Oаÿ3ŠDÔ×ÉXM,:¸°ÝTq¦‰Såä×7ƒUŸWÿ߈»ÜÖ¶÷¦#m¥—È M•Ø¿™ÒfÕýœüá½îưÊÐ,ÆV«Ûͤٯ/× |$w•f£˜|d{êPûúX½õæ[INÇw¿òµïö–°«43öÇòŒ)VÝÏÇNj_#«¯ýò+ ̪ը7¾ÿ«oê¥ì*Ec|ÒAŠ‚Ã\d{wcYéηßjÌ £«v³^ß?hwuW-7^õ{—„ƒÏø¹CV>Óë›Ëj\دM:fco¿ÑZ˜¾H>¤'ô—&Êbš‰/ô|üá´ Èܶh5jW3ÑM¯·Wßkv…[z)äW¢Ýo•Åì'ö²rñ‡Óî¹~7:°Ý¨ïµš{¦×k%®i¤r÷ñâÝ‹nÏ‘«%m”‹?Üy¯ š½ýþYÊiX½TnM‚Äþí)ÝÄCV.þpm“YYgøòÊ“êŸÑ›ûóµ+ ±?¥Š3qz$8eUûYÅbx#´…Aê×÷Òžž‰ý©UœõVƒçá§ µ¯‘U”ÏBͽPÆš -¸Ðþ«ñÍTã<íjQbú”î·¦•òð‡S†Ú×È*@Òñ áЯ È\^õ]r{Ó_]-ðЧO:H„ áª4>Âgˆx!Æ‹úâú¢øêrùáÄ¡ö5höëëöó±+x½ÚÂs9w #vŪF’;¾Ë@h‘}/\Vf98q¨ý¾øWÌ@bž«4¬ 3Y1AY‹`-%Û‡Ú×˪ٽ+V\RÏ“>D YJØ 0…„`"¼¸/^”Ñ_ÊN¼:ÝzY}ëý;6/5øÿjIÑ/â„}ñ‚Œþr²½¾‰¬Ú_ý~A»ÐEý¥ÒXI§Ì­•Õ_üæFœù ]Öáü‹ÿ|ÃJj_+«î[»Õ{ç¯ÿÕ Îë‚9úËøÃIÅÅzÇ«Fg¬ê¯}çÝ,/›ŸYÆNºÌ}Ñ#Îл´Š!k™üp}Ym@ÛMh§c3,ìÿðgOŒØ=~çÝãTs2vGüç„yüu°ŠÕæ?&«‡I»ç½‹ñúÿñä]Wÿ.zýv‘âßhhÂPûX…¨âæ-¶­Oë‘°ÓšÛùÃÄÚúhJŸVû<ÇÏ2ò CíkéA¨Æ>€øýð)¼X')‚¬ÓXµó”±#*?a¨}M¬b ÇàÏД¯5Â>rú²]ö+8GÅÅ寰rCåj—Û¼kX%ÛÕ'ïö0•|Åj¼^D}dwSλLèˬ…•a1ôyH#júÀþxý¤.žf9•|,î‹$)¥P½xl×ipD£S¥Õ¨]%Ûfmš]ݺ±Övšv¿Ù+åhUìN‡®]‡ƒjWÉBíëö¯.ŽŽîÕñnÆ.ÊQÓŠW¥v ?BÌ#Äaâê™;ŠûDd!B!ÂTRˆ‡g5Ò¾"ˆð/_ïͱ›Ú^/«Ïþ½÷;¿uqÞ[7ªÝô‰Û»rüj }¢Ý8p8¡œ`Jsû VÜI-íÞ•H»ˆÃÇ? uýÆÎpoŽqVÝͳ«×þ•ûÎÓ¾{t|r~±&f½‡*ø®Ç+—k‚¹¤{ * þãß÷1n‡¢|ýȆUŸ¨‚v¬¨aåX©J¤y¿Ä#2£¶)¸”Jj_wøoþ ýª ÞÅùÉñš˜gÚ}LÆ#"Âü9¦-„~ÀÏ)â’iÌû{q0Ó^m¹,\€54@ØGÆ,éà Fß-Q¨}ݬZ6ºæÎ³££ãÓu§Ù<¥¯²2O©k¢Ã­9FDT_SÐ×ÚbÌ®…Úï vÛ™²ŒKïâÔ03fvt²ÙIšvúð'§§)ž¿>_x\cÕ7“•Ö{3¯¢‹f3ºÆ“‡ç'§IÛÉéÉà×àÖ‚žŒÄ W·{ƒû–ßQN¤õöüš¸^ïüôdÆp¶Ò¹‘Çkd5öW’µÚï(u9g7ÞØpv:)Aú¬z«g•Nô–d•duº;Ë56Óì6"AÎŽ—;GcWãoPÛ`Vº›a¯m#ANß}çh(AVp6O®Yí¦ÉòŸî¾“v½‰ZÝú&³²¦•¥üÂô½kÙxl$ÈÅJìJ§YlïÝßú·«í%nWZ‚ªö;­·èÔÎ2°Im\ÜHÓ\<êŒ üø;¿µô…ÛÜlVæjªg±+ÛE=Üݽê¦v¾ûÎOüãŸîNi×Áêäèo--N„Úﺎ©µp׬ZQÊR°“ ¬z»¹¤êÏ*Ý^˜7}`ÒGJ9—Á®RÔÛÌ?ÝÍg¥§ÚåtÈ*Ôú³hBµßÜîź÷±Š?²RñÔìíð1µ«ãÝœäèbq± µœÝzš©>Ã>P‰kò‚~$µ Ã8Ðq…¡ŽäàÌ…ßÇàT¢;(DÉGbä;BsàW‰]í‘‘–Uïan«ì-^@f3ênÓ¨÷Ax¤«P»®ÂˆQàbW\¥®€xŒu}-C ]÷ÊÕ †žÑ Ö½µÕŒ`‘i¼:}˜ŸÃ°x[Ô ©‘VÉ·ÛÚÕgq„c†Üó8ŠaD]n“îZ‚à& $ГD¶ì­¿½»Bȇ„UPU!‘Å®vs­G¨„•Uï—iXÅP|Y†8 ’ùœYV’Èé? »½–ŽØUèj@Y€ «óþ}Ð7‡ DU5ÌÀêüa¾Qä…Uí›3÷ P½_é@®ˆâ1┇2$7xCü94Öìì:«˜öú±{df•=„'„ö=?LÍ*7Qq=´ Ã*©zêÀ„'êhEþUo7÷e–†Ú7jNO+‰zöwë_>ÌÕÊ…Uí›5ÿª›À´}à» sÃﮄÕjŠ‹Å*‰zØÕyÒz ?«‹‡«Yº|‘7¼qó¦µNV¹Æ{V'W”†\TÕ¾sPó#cé×ãO‘”\¬-V *®Ú¢Pû&ΞV”6r:wÏOS´“ÿÍ¿òN¿€é|ÐNÏoJœNÆ+›NÇaÏ®p)ìZñX·pÎf®½Tõ'ÇôW¿óãw~ú“Ÿüô'?ýé;ï¼ûÐn‹wÜÊ®Ý<ùd ­t³Êဠ‡ßJ{_p‚/®ú cV†Èñ±Áešáu~~‘<¡¼*Q‘P\lìš µ/1Ó»!g«YfƒÏÒëMáNú‘ÚÖ7µÞ/&+£ÞŸç…%!¼‹><Ë®OïhÀîÔZž=ÄîÊ7„ZPÕ¾Ák‘d)JËÕð.††7XkäÇ³[»7¼ÑëÆd+J[ãµÛÓ£ì®íî$OvóC훽ÆO¦¢´UØØQqcwÇ£}æpÀËö>­â²ÊT”–;I”þ°;½f××*éòÆóCí¿vVú¢´Ü*c¤¶/4ÓØå³B³J_”–sË–þa4œ¸º¼¸(št‡y:ÆYDEŠA¥ÜfÂüLFQ”t딹 ÈbýÀî™VïaJ§*ü©_ÀáX`GxH ,iEŠsű¿PùÕ©÷ô5eT9ö|"àûÌñ(æX—;´ê-\3¬ó^ñYÝcœ!R+1”¡G¡ 4fØs„Ú6VF½æq˜»ŠÔ¨Ü¬>r§¿u¬òIkÝ•¨44= zÄñ#EHÌ Ž†ÛÆ*{QÚŠŠ«ŠH+Ñ‹•Žä:úc+»y¬ ½áæ#[Äʦµ²ìvgéß™_c¼ƒˆ0QÛÇ*ÍJi7¢bw³¾ÂóÎË_ùúïêíô…ÇÕ{Ê´ÖÅš#µ3Ú¥Mm4ö÷öö÷[¯¼üv÷>°JY”vr§N•îvZgÍÆþ³ú^£Ñlµ‡‘¥Ï•KÛöŸ%~êÝDj»Ý¶!d£êûæa«“*D¶]¬§µÖ©µÝÜa£±o 5 !•-Ô²e¬ôå~õ¾žHíX7wÖî, Û6V6­µh­…Õ¦»ªÕêwsõFúnîž±ZX”¶Q1ÚÍ­Ð]A©Õ²ZÖÊUT¨ç­Ã÷ûûÃnN­t*ËV²šS”–‹¨¸é挚k¶;kšÇ·¬f®µ°Œ¨èŽvs‡­öÚgZn++Ýš¶3n–H­íæúj®1èæîn)›­e¥u}2­•&ýÛíX§u¿oDÍf«³ ‹ m1+}V‹Z'Hÿ»¹½=cDBè~°KkÍ‹ÔÚnî*¬`º¹çÝÍü:[ÍjD½ßNÿŽwsíNwÓ¿Ì–³Ö{Žˆ =5Fô̆Þ߸nî^³ê¥?<ÿ¼ÓúG{¶›ëv øM¶Ÿ•îüñ?¨ÿ_Æ%:kwº…þ"÷€ÕpfañÛ½`¥KVߘÝêÏn¤i·gŒKV›ÜìF›Ìuc䢸 @Éjƒ!ZíhêíxU]•%« ¶«1VNÉjƒ¯@»Àô8~–}àF7»}ú@WDŽÒ%«‚P¥f/Bkv·ã{ÜVßj”¬ ÒÚ_ý~ɪ íÍ¿Q²*Hë¼Uö…iïwJVEivɪ0¬J»*L;S%«²•¬ònñЮâKVÙÔ ÒüPZź¿í”ùרJV›Ô<ˆ5Ä H0È5B„KN1+Ym^«ø•Ä”û2Žœ»Ö{¥¹;‡‘ï ’qÑìüûOAî?TJùôÄ)&éÐ0A¦ö,Uh2]I)wþ³1=AHö ¦h(Uƒâ(*ÐtögN-x·ó%ˆ¬5×DÔhb(©‹ yÅÖÆ¦G\vSPw¼½U`ÄTv½U9¶°–éh tò·Ê­9k­F1Ö^zp:ÂS²ÔŸ ±ÚÔÁ ‡ÓÝ›x«ëˆ]»1z±êÕ:#F´0’4Â!F öÜrñûZf¸( änèÿŸ1}÷ŒÓéÖærEÌÿ«ÁKüj™²±ÖªtS®ÑíTqã ²_¼Ç Ù`‚“0ÂY‚ó¢ˆJt…Q2JjjyA¼Ýã”Ä‚q¸‰‹<Éð6+Ñ›\qc `ƒrZÕ·=Î?ãìKö}vùñ–HÿÐt•Eïàs|7 À²¥ªùQÁWW<Ú†i¸ ãûG.†óágž²Ô[½’¿€”F÷Þ² žM^õ&ý˲êqXµáÔsqyùv#alç1öQU¢7½G×ö½ú PKôë_—È-PK%k[XMETA-INF/manifest.xml­“MjÃ0…÷9…ÑÞR6EÄɢФPí‘#FB?Á¾}%Ç.%Cv3Ìè½OiŒ®.àƒ²ØWúB*ÀÖv û†|Ÿ¾êr<ìöF ’"Ÿ‹*ŸÃpk’øtNæ…ÒŹ¤û;&ʈX™or1Ńè{öï;~PKµºâ&ÉPK%k[X3&¬¨//mimetypePK%k[XUConfigurations2/toolbar/PK%k[X‹Configurations2/toolpanel/PK%k[XÃConfigurations2/floater/PK%k[XùConfigurations2/menubar/PK%k[X/Configurations2/popupmenu/PK%k[XgConfigurations2/progressbar/PK%k[X¡Configurations2/statusbar/PK%k[XÙConfigurations2/images/Bitmaps/PK%k[XConfigurations2/accelerator/PK%k[X; ¶á8$Ñ Pstyles.xmlPK%k[X1gú1 ·à Àcontent.xmlPK%k[X°Iã8ì* -settings.xmlPK%k[X Ç."|A|A*4Thumbnails/thumbnail.pngPK%k[Xôë_—È-Üumeta.xmlPK%k[Xµºâ&ÉÚwMETA-INF/manifest.xmlPK+Cysimrisc-16.02.00/icmake/0000775000175000017500000000000014665030471013636 5ustar frankfranksimrisc-16.02.00/icmake/pspdf0000664000175000017500000000063314665030471014677 0ustar frankfrankvoid pspdf(string basename) { string pdfname; string psname; string papersizeoption = "a4"; psname = basename + ".ps"; if (basename + ".dvi" younger psname) system("dvips -t " + papersizeoption + " -o" + psname + " " + basename); pdfname = basename + ".pdf"; system("ps2pdf -sPAPERSIZE=" + papersizeoption + " " + psname + " " + pdfname); chdir(g_cwd); } simrisc-16.02.00/icmake/setopt0000664000175000017500000000033314665030471015076 0ustar frankfrankstring setOpt(string install_im, string envvar) { list optvar; string ret; optvar = getenv(envvar); if (optvar[0] == "1") ret = optvar[1]; else ret = install_im; return ret; } simrisc-16.02.00/icmake/installer0000775000175000017500000000050614665030471015562 0ustar frankfrank#!/bin/bash if [ $# -eq 0 ] ; then echo destination path, ending in /, must be provided exit 0 fi for src in `find -mindepth 1 -type d` # create missing target dirs do [ ! -e $1$src ] && mkdir -p $1$src done for file in `find -type f -or -type l` do cp -d --preserve=timestamps $file $1$file done simrisc-16.02.00/icmake/manpage0000664000175000017500000000070414665030471015172 0ustar frankfrankvoid _manpage(string dest, string manpage, string source) { run("yodl2man -o " + dest + manpage + " " + source); run("yodl2html " "-o ../../tmp/manhtml/" + manpage + ".html " + source); } void manpage() { md("tmp/man tmp/manhtml"); chdir("documentation/man"); _manpage("../../tmp/man/", PROGRAM ".1", PROGRAM ".yo"); _manpage("../../tmp/man/", PROGRAM "params.7", PROGRAM "params.yo"); exit(0); } simrisc-16.02.00/icmake/findall0000664000175000017500000000107414665030471015174 0ustar frankfrank// assuming we're in g_cwd, all entries of type 'type' matching source/pattern // are returned w/o final \n list findAll(string type, string source, string pattern) { string cmd; list entries; list ret; int idx; chdir(source); cmd = "find ./ -mindepth 1 -maxdepth 1 -type " + type; if (pattern != "") pattern = "-name '" + pattern + "'"; entries = backtick(cmd + " " + pattern + " -printf \"%f\\n\""); for (idx = listlen(entries); idx--; ) ret += (list)cutEoln(entries[idx]); chdir(g_cwd); return ret; } simrisc-16.02.00/icmake/cxxdefine0000664000175000017500000000007214665030517015536 0ustar frankfrank // Compiler to use: #define CXX "g++" simrisc-16.02.00/icmake/log0000775000175000017500000000063014665030471014344 0ustar frankfrank#!/bin/bash find tmp/install -type f -exec md5sum "{}" \; | sed 's|tmp/install|'$1'|' > $2 find tmp/install -type l -exec printf "link %s\n" "{}" \; | sed 's|tmp/install|'$1'|' >> $2 find tmp/install -type d -exec printf "dir %s\n" "{}" \; | sed 's|tmp/install|'$1'|' >> $2 simrisc-16.02.00/icmake/pathfile0000664000175000017500000000054314665030471015357 0ustar frankfranklist path_file(string path) { list ret; int len; int idx; for (len = strlen(path), idx = len; idx--; ) { if (path[idx] == "/") { ret = (list)substr(path, 0, idx) + (list)substr(path, idx + 1, len); return ret; } } ret = (list)"" + (list)path; return ret; } simrisc-16.02.00/icmake/clean0000664000175000017500000000042514665030471014644 0ustar frankfrankvoid clean(int dist) { run("rm -rf " "build-stamp configure-stamp " "options/SKEL " "tmp/*.o tmp/*-stamp " + "o */o release.yo tmp/lib*.a " ); if (dist) run("rm -rf tmp *.ih.gch */*.ih.gch"); exit(0); } simrisc-16.02.00/icmake/uninstall0000664000175000017500000000044714665030471015577 0ustar frankfrankvoid uninstall(string logfile) { int idx; list entry; string dir; list line; if (!exists(logfile)) { printf("installation log file " + logfile + " not found\n"); exit(0); } run("icmake/remove " + logfile + " " + (string)g_echo); exit(0); } simrisc-16.02.00/icmake/cuteoln0000664000175000017500000000023314665030471015230 0ustar frankfrankstring cutEoln(string text) { int len; len = strlen(text) - 1; if (text[len] == "\n") text = substr(text, 0, len); return text; } simrisc-16.02.00/icmake/run0000664000175000017500000000032714665030471014367 0ustar frankfrankint g_dryrun = setOpt("", "DRYRUN") != ""; void runP(int testValue, string cmd) { if (g_dryrun) printf(cmd, "\n"); else system(testValue, cmd); } void run(string cmd) { runP(0, cmd); } simrisc-16.02.00/icmake/md0000664000175000017500000000073314665030471014164 0ustar frankfrank// md: target should be a series of blank-delimited directories to be created // If an element is a whildcard, the directory will always be created, // using mkdir -p. // // uses: run() void md(string target) { int idx; list paths; string dir; if (!exists(target)) run("mkdir -p " + target); else if (((int)stat(target)[0] & S_IFDIR) == 0) { printf(target + " exists, but is not a directory\n"); exit(1); } } simrisc-16.02.00/icmake/gitlab0000664000175000017500000000020414665030471015017 0ustar frankfrankvoid gitlab() { run("cp -r tmp/manhtml release.yo ../../wip"); run("cp changelog ../../wip/changelog.txt"); exit(0); } simrisc-16.02.00/icmake/remove0000775000175000017500000000116614665030471015065 0ustar frankfrank#!/bin/bash g_echo=$2 rm_f() { [ $g_echo -ne 0 ] && echo rm $1 rm -f $1 } rm_dir() { [ $g_echo -ne 0 ] && echo rmdir $1 rmdir --ignore-fail-on-non-empty -p $1 } IFS=" " for line in `cat $1` do field1=`echo $line | awk '{printf $1}'` field2=`echo $line | awk '{printf $2}'` if [ $field1 == "link" ] ; then rm_f $field2 elif [ $field1 == "dir" ] ; then rm_dir $field2 elif [ -e "$field2" ] ; then if [ "$field1" != "`md5sum $field2 | awk '{printf $1}'`" ] ; then echo $field2 changed, not removed else rm_f $field2 fi fi done rm_f $1 simrisc-16.02.00/icmake/backtick0000664000175000017500000000015714665030471015337 0ustar frankfranklist backtick(string arg) { list ret; echo(OFF); ret = `arg`; echo(g_echo); return ret; } simrisc-16.02.00/icmake/manual0000664000175000017500000000065614665030471015045 0ustar frankfrankvoid manual() { list files; string file; string cwd; int idx; cwd = chdir("."); md("tmp/manual"); chdir("documentation"); run("cp -r manual/html ../tmp/manual"); chdir("manual"); run("yodl2html -l3 " PROGRAM ".yo"); run("mv *.html ../../tmp/manual/html"); run("cp simrisc.css ../../tmp/manual/html"); // run("cp -r images/*.jpg ../../tmp/manual/images"); exit(0); } simrisc-16.02.00/icmake/latexdoc0000664000175000017500000000125314665030471015365 0ustar frankfrankvoid latexdoc() { string basename; string latexname; string yodldefine; md("tmp/latex"); // cp necessary files for LaTeX if (!exists("tmp/latex/cplusplus.sty")) system("cp -r documentation/manual/latex tmp"); // assign file name variables basename = "simrisc"; latexname = basename + ".latex"; chdir("documentation/manual"); system("yodl2latex --no-warnings -l3 " "-o ../../tmp/latex/simrisc.latex simrisc.yo"); chdir("../../tmp/latex"); system("latex " + latexname); system("latex " + latexname); system("latex " + latexname); } simrisc-16.02.00/icmake/install0000664000175000017500000000441414665030471015232 0ustar frankfrank void install(string request, string dest) { string target; int components = 0; list pathsplit; string localInstall = "tmp/install/"; // this is the LOCAL tmp/install dir md(localInstall); if (request == "x") components = 63; else { if (strfind(request, "b") != -1) components |= 2; if (strfind(request, "d") != -1) components |= 4; if (strfind(request, "m") != -1) components |= 8; } if (components & 2) { target = localInstall + BINARY; pathsplit = path_file(target); printf(" installing the executable `", target, "'\n"); logFile("tmp/bin", "binary", pathsplit[0], pathsplit[1]); } if (components & (4 | 8)) { target = localInstall + DOC "/"; if (components & 4) { printf(" installing the changelog at `", target, "\n"); logZip("", "changelog", target); printf(" installing stdconfig/simrisc at `", target, "\n"); logZip("stdconfig", "simrisc", target); // printf(" installing the pdf-manual at `", target, "\n"); // logInstall("tmp/pdf", "simrisc.pdf", target); // // printf(" installing the html-manual at `", target, "\n"); // logInstall("tmp/manual/html", "", target + "manual"); // logInstall("tmp/manual/html/analysis", "", // target + "manual/analysis"); } if (components & 8) { printf(" installing the html man pages at `", target, "\n"); logInstall("tmp/manhtml", "", target); } } if (components & 8) { target = localInstall + MAN; printf(" installing the man pages below `", target, "'\n"); logZip("tmp/man", "simrisc.1", target + "/man1/"); logZip("tmp/man", "simriscparams.7", target + "/man7/"); } chdir(g_cwd); if (dest == "") dest = "/"; else md(dest); dest = cutEoln(backtick("readlink -f " + dest)[0]); if (g_logPath != "") backtick("icmake/log " + dest + " " + g_logPath); chdir(localInstall); run("../../icmake/installer " + dest + "/"); printf("\n Installation completed\n"); exit(0); } simrisc-16.02.00/icmake/beep0000664000175000017500000000024214665030471014472 0ustar frankfrankvoid beep() { printf << "icmake/beep: tmp off\n"; exit(0); if (exists("/usr/local/bin/beep")) system("/usr/local/bin/beep"); exit(0); } simrisc-16.02.00/icmake/logfile0000664000175000017500000000025714665030471015206 0ustar frankfrankvoid logFile(string srcdir, string src, string destdir, string dest) { chdir(g_cwd); md(destdir); run("cp " + srcdir + "/" + src + " " + destdir + "/" + dest); } simrisc-16.02.00/icmake/loginstall0000664000175000017500000000130014665030471015723 0ustar frankfrank// source and dest, absolute or reachable from g_cwd, should exist. // files and links in source matching dest (if empty: all) are copied to dest // and are logged in g_log // Before they are logged, dest is created void logInstall(string src, string pattern, string dest) { list entries; int idx; chdir(g_cwd); md(dest); src += "/"; dest += "/"; if (listlen(makelist(O_DIR, src)) == 0) { printf("Warning: ", src, " not found: can't install ", src, pattern, " at ", dest, "\n"); return; } entries = findAll("f", src, pattern); for (idx = listlen(entries); idx--; ) run("cp " + src + entries[idx] + " " + dest); } simrisc-16.02.00/icmake/pdf0000664000175000017500000000034214665030471014331 0ustar frankfrankvoid pdf() { md("tmp/pdf"); latexdoc(); // now in tmp/latex system("dvips simrisc"); system("ps2pdf simrisc.ps ../pdf/simrisc.pdf"); printf("the log files are in tmp/latex\n"); exit(0); } simrisc-16.02.00/icmake/special0000664000175000017500000000072014665030471015200 0ustar frankfrankvoid special() { if (! exists("release.yo") || "VERSION" newer "release.yo") { system("touch version.cc"); // using FORTIFY is weird, but Nilesh // Patra noticed some complaints when // omitted. run("gcc -D_FORTIFY_SOURCE=2 -E VERSION.h | grep -v '#' | " "sed 's/\\\"//g' > release.yo"); } } simrisc-16.02.00/icmake/logzip0000664000175000017500000000165314665030471015072 0ustar frankfrank// names may be a series of files in src, not a wildcard. // if it's empty then all files in src are used. // the files are gzipped and logged in dest. // src and dest do not have to end in / void logZip(string src, string names, string dest) { list files; int idx; string file; chdir(g_cwd); md(dest); dest += "/"; if (src != "") { if (listlen(makelist(O_DIR, src)) == 0) { printf("Warning: ", src, " not found: can't install ", src, names, " at ", dest, "\n"); return; } chdir(src); } if (names == "") files = makelist("*"); else files = strtok(names, " "); for (idx = listlen(files); idx--; ) { file = files[idx]; run("gzip -n -9 < " + file + " > " + file + ".gz"); } run("tar cf - *.gz | (cd " + g_cwd + "; cd " + dest + "; tar xf -)"); run("rm *.gz"); } simrisc-16.02.00/icmconf0000664000175000017500000000113614665030471013747 0ustar frankfrank#define MULTICOMP "jobs -q" #define SPCH "-k xerr/xerr.ih" // #define PRECOMP "-x c++-header" #define USE_ALL "a" #include "INSTALL.im" #define MAIN "main.cc" #define ADD_LIBRARIES "bobcat" #define ADD_LIBRARY_PATHS "" #define REFRESH #define LIBRARY "ofiles" #define IH ".ih" #define SHAREDREQ "" #define SOURCES "*.cc" #define USE_ECHO ON #define TMP_DIR "tmp" #define OBJ_EXT ".o" #define USE_VERSION #define DEFCOM "program" simrisc-16.02.00/icmconf.lib0000664000175000017500000000074014665030471014514 0ustar frankfrank#define MULTICOMP "jobs -q" //#define PRECOMP "-x c++-header" #define CLS #define SOURCES "*.cc" #define OBJ_EXT ".o" #define TMP_DIR "tmp" #define USE_ECHO ON #define IH ".ih" #define CXX "ccache g++" #define CXXFLAGS "-Wall -Werror -O2 -fdiagnostics-color=never" #define ADD_LIBRARIES "bobcat" #define ADD_LIBRARY_PATHS "" #define DEFCOM "library" simrisc-16.02.00/incidence/0000775000175000017500000000000014665030471014326 5ustar frankfranksimrisc-16.02.00/incidence/sumprobs.cc0000664000175000017500000000037614665030471016515 0ustar frankfrank//#define XERR #include "incidence.ih" double Incidence::sumProbs() { double sumProb = 0; for (ParamsPtr const ¶msPtr: d_params) { sumProb += paramsPtr->prob(); d_cumProb.push_back(sumProb); } return sumProb; } simrisc-16.02.00/incidence/lifetimerisk.cc0000664000175000017500000000031114665030471017317 0ustar frankfrank//#define XERR //#include "incidence.ih" // ////static //bool Incidence::lifetimeRisk(StringVect &base, VSD &vsd) //{ // base.back() = "lifetimeRisk:"; // return Parser::one(base, vsd ); //} // simrisc-16.02.00/incidence/vary.cc0000664000175000017500000000077614665030471015630 0ustar frankfrank//#define XERR #include "incidence.ih" void Incidence::vary(ostream &out) { out << " Incidence:\n"; for (ParamsPtr ¶msPtr: d_params) { // if this incidence spec. if (paramsPtr->prob() >= Globals::TOLERANCE) { // is used, then vary the paramsPtr->vary(out); // distribution's value out.put('\n'); } } cptTumorRisk(); } simrisc-16.02.00/incidence/incidence.h0000664000175000017500000000615414665030471016426 0ustar frankfrank#ifndef INCLUDED_INCIDENCE_ #define INCLUDED_INCIDENCE_ // Either Male, Female, or Breast plus the BRCA specs. // // Tumor: // Incidence: // Male: // specifying 'riskTable' takes precedence: must be pairs of // age proportion values. The ages must be increasing and must // be >= 0 and <= MAX_AGE (-> enums) // // riskTable: 25 0.001 // 30 0.003 35 0.005 // 40 0.009 45 0.014 // # value spread distr. // lifetimeRisk: .22 .005 Normal // meanAge: 72.48 1.08 Normal // stdDev: 9.28 1.62 Normal // // Female: // # value spread distr. // lifetimeRisk: .20 .004 Normal // meanAge: 69.62 1.49 Normal // stdDev: 9.73 1.83 Normal // // Breast: // probability: 1 // # value spread distr. // lifetimeRisk: .226 .0053 Normal // meanAge: 72.9 .552 Normal // stdDev: 21.1 // // BRCA1: // probability: 0 // # value spread distr. // lifetimeRisk: .96 // meanAge: 53.9 // stdDev: 16.51 // // BRCA2: // probability: 0 // # value spread distr. // lifetimeRisk: .96 // meanAge: 53.9 // stdDev: 16.51 // as in the original sources: with 0 probabilities the specified values // are set to 0 #include #include #include #include "../typedefs/typedefs.h" #include "../params/params.h" class Incidence { using ParamsPtr = std::unique_ptr; std::vector d_params; DoubleVect d_cumProb; DoubleVect2 d_tumorRisk; // tumor risks per incidence category public: Incidence(); void vary(std::ostream &out); // vary (d_vsd's) values // was: carrier() MODIFY for LC uint16_t index() const; // randomly selected carrier index DoubleVect const &tumorRisk(size_t idx) const; // .f void writeParameters(std::ostream &out) const; private: void cptTumorRisk(); // assign values to d_tumorRisk // 'incidence' originally named 'carrier' void setIncidence(); // sets d_params // 1 void setIncidence(StringVect &base, size_t idx, bool setProb); // 2 static bool valid(double sumProb); // .ih double sumProbs(); // not used: static bool onlyRiskTable(StringVect &base); static void writeCarrier(std::ostream &out, size_t idx, char type, double value); }; #include "incidence.f" #endif simrisc-16.02.00/incidence/incidence.ih0000664000175000017500000000073614665030471016577 0ustar frankfrank#include "incidence.h" #include "../xerr/xerr.ih" #include #include "../globals/globals.h" #include "../parser/parser.h" #include "../random/random.h" #include "../log/log.h" #include "../vsdparams/vsdparams.h" #include "../tableparams/tableparams.h" // static inline bool Incidence::valid(double sumProb) { return 1 - Globals::TOLERANCE <= sumProb and sumProb <= 1 + Globals::TOLERANCE; } #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/incidence/incidence.f0000664000175000017500000000014114665030471016412 0ustar frankfrankinline DoubleVect const &Incidence::tumorRisk(size_t idx) const { return d_tumorRisk[idx]; } simrisc-16.02.00/incidence/cpttumorrisk.cc0000664000175000017500000000052414665030471017404 0ustar frankfrank//#define XERR #include "incidence.ih" void Incidence::cptTumorRisk() { // visit all incidence modes for (size_t idx = 0, end = d_params.size(); idx != end; ++idx) // compute the tumorrisks per age d_params[idx]->cptTumorRisk(d_tumorRisk[idx]); } simrisc-16.02.00/incidence/incidence1.cc0000664000175000017500000000072214665030471016640 0ustar frankfrank#define XERR #include "incidence.ih" Incidence::Incidence() { setIncidence(); // compute the tumor risks per category for END_AGE elements // room for the age-risks per d_tumorRisk.resize(d_params.size()); // carrier category for (auto &vect: d_tumorRisk) // resize for all ages vect.resize(END_AGE); cptTumorRisk(); // then set the tumor risks } simrisc-16.02.00/incidence/meanage.cc0000664000175000017500000000030514665030471016230 0ustar frankfrank////#define XERR //#include "incidence.ih" // //// static //bool Incidence::meanAge(StringVect &base, VSD &vsd) //{ // base.back() = "meanAge:"; // // return Parser::one(base, vsd ); //} // simrisc-16.02.00/incidence/stddev.cc0000664000175000017500000000031314665030471016123 0ustar frankfrank////#define XERR //#include "incidence.ih" // //// static //bool Incidence::stdDev(StringVect &base, double &sd) //{ // base.back() = "stdDev:"; // // return Parser::nonNegative(base, sd); //} // simrisc-16.02.00/incidence/onlyrisktable.cc0000664000175000017500000000111314665030471017513 0ustar frankfrank////#define XERR //#include "incidence.ih" // //// static //bool Incidence::onlyRiskTable(StringVect &base) //{ // for (string const &type: // StringVect{ "lifetimeRisk:", "meanAge:", "stdDev:" }) // { // base.back() = type; // if (Parser::hasSection(base)) // incompatible with riskTable: // { // Err::msg(Err::TABLEPARAMS) << // " cannot be specified together with 'riskTable:'\n"; // return false; // } // } // // base.back() = "riskTable:"; // // return true; //} // simrisc-16.02.00/incidence/icmconf0000664000175000017500000000016114665030471015665 0ustar frankfrank#define LIBRARY "incidence" //#define SPCH "-k xerr/xerr.ih" #include "../icmconf.lib" simrisc-16.02.00/incidence/writecarrier.cc0000664000175000017500000000041214665030471017334 0ustar frankfrank//#define XERR #include "incidence.ih" // static void Incidence::writeCarrier(ostream &out, size_t idx, char type, double value) { out << " " << type << "_carrier_" << idx << ":\t" << setw(8) << value << '\n'; } simrisc-16.02.00/incidence/writeparameters.cc0000664000175000017500000000121614665030471020053 0ustar frankfrank#define XERR #include "incidence.ih" void Incidence::writeParameters(ostream &out) const { out << " Incidence:\n"; auto simulationType = Globals::simulationType(); for ( size_t idx = 0, end = simulationType == BREAST ? 3 : 1; idx != end; ++idx ) { string label; switch (simulationType) { case BREAST: label = Params::label(idx); break; case FEMALE: case MALE: label = Globals::label(simulationType); break; } d_params[idx]->writeParameters(out); } } simrisc-16.02.00/incidence/setincidence1.cc0000664000175000017500000000250614665030471017356 0ustar frankfrank#define XERR #include "incidence.ih" // Incidence parameters: Male, Female, Breast. // BRCA1 and BRCA2 are configured, but not used because their // probabilities are 0. void Incidence::setIncidence() { SimulationType simulationType = Globals::simulationType(); StringVect base; switch (simulationType) { case BREAST: base.resize(2); // set [0] and [1] in break; // setincidence2.cc case MALE: base.push_back(Globals::label(MALE)); break; case FEMALE: base.push_back(Globals::label(FEMALE)); break; } if (simulationType != BREAST) // LC simulation { base.push_back(""); setIncidence(base, 0, false); // no probability d_cumProb.push_back(1); } else { // Breast:, currently: BRCA1:, BRCA2: for (size_t idx = 0, end = Params::nLabels(); idx != end; ++idx) { base[0] = Params::label(idx); setIncidence(base, idx, true); // set probability } if (not valid(sumProbs())) // probs must sum to 1 { Err::msg(Err::INCIDENCE_SUM_PROB) << endl; return; } } } simrisc-16.02.00/incidence/index.cc0000664000175000017500000000060114665030471015741 0ustar frankfrank//#define XERR #include "incidence.ih" uint16_t Incidence::index() const { if (d_cumProb.size() == 1) return 0; double value = Random::instance().uniform(); return find_if(d_cumProb.begin(), d_cumProb.end(), [&](double cumProb) { return value <= cumProb; } ) - d_cumProb.begin(); } simrisc-16.02.00/incidence/frame0000664000175000017500000000007014665030471015340 0ustar frankfrank//#define XERR #include "incidence.ih" Incidence:: { } simrisc-16.02.00/incidence/setincidence2.cc0000664000175000017500000000140514665030471017354 0ustar frankfrank#define XERR #include "incidence.ih" void Incidence::setIncidence(StringVect &base, size_t idx, bool setProb) { base.back() = "riskTable:"; ParamsPtr ptr{ Parser::hasSection(base) ? static_cast(new TableParams{ base, idx, setProb }) : static_cast(new VSDParams{ base, idx, setProb }) }; if (ptr->prob() >= 0) d_params.push_back(move(ptr)); } //=========================================================== // ParamsPtr ptr; // // if (not Parser::hasSection(base)) // ptr.reset(new VSDParams{ base, idx, setProb }); // else if (onlyRiskTable(base)) // ptr.reset(new TableParams{ base, idx, setProb }); // else // return; // // } simrisc-16.02.00/INSTALL0000664000175000017500000001021214665030471013432 0ustar frankfrankSee also the KICKSTART chapter in the manual: doc/manual/index.html, click the kickstart chapter. =========================================================================== To install simrisc by hand instead of using a binary distribution perform the following steps: 0. simrisc and its construction depends, in addition to the normally standard available system software on specific software and versions which is documented in the file `required'. (If you compile the bobcat library yourself, note that simrisc does not use the SSL, Milter and Xpointer classes; they may --as far as simrisc is concerned-- be left out of the library by running './build light') 1. It is expected you use icmake for the package construction. For this a top-level script (build) and support scripts in the ./icmake/ directory are available. By default, the 'build' script echoes the commands it executes to the standard output stream. By specifying the option -q (e.g., ./build -q ...) this is prevented, significantly reducing the output generated by 'build'. 2. Inspect the values of the variables in the file INSTALL.im Modify these when necessary. 3. Run ./build program [strip] to compile simrisc. The argument `strip' is optional and strips symbolic information from the final executable. 4. If you installed Yodl then you can create the documentation: ./build man builds the man-page, and ./build manual builds the manual. 5. Before installing the components of simrisc, consider defining the environment variable SIMRISC, defining its value as the (preferably absolute) filename of a file on which installed files and directories are logged. Defining the SIMRISC environment variable as ~/.simrisc usually works well. 6. Run (probably as root) ./build install 'what' 'base' to install. Here, 'what' specifies what you want to install. Specify: x, to install all components, or specify a combination of: a (additional documentation), b (binary program), d (standard documentation), m (man-pages) u (user guide) E.g., use ./build install bm 'base' if you only want to be able to run simrisc, and want its man-page to be installed below 'base'. ./build install's last argument 'base' is optional: the base directory below which the requested files are installed. This base directory is prepended to the paths #defined in the INSTALL.im file. If 'base' is not specified, then INSTALL.im's #defined paths are used as-is. When requesting non-existing elements (e.g., './build install x' was requested, but the man-pages weren't constructed) then these non-existing elements are silently ignored by the installation process. If the environment variable SIMRISC was defined when issuing the `./build install ...' command then a log of all installed files is written to the file indicated by the SIMRISC environment variable (see also the next item). Defining the SIMRISC environment variable as ~./simrisc usually works well. 7. Uninstalling previously installed components of simrisc is easy if the environment variable SIMRISC was defined before issuing the `./build install ...' command. In that case, run the command ./build uninstall logfile where 'logfile' is the file that was written by ./build install. Modified files and non-empty directories are not removed, but the logfile itself is removed following the uninstallation. 8. Following the installation nothing in the directory tree which contains this file (i.e., INSTALL) is required for the proper functioning of simrisc, so consider removing it. If you only want to remove left-over files from the build-process, just run ./build distclean simrisc-16.02.00/INSTALL.im0000664000175000017500000000260414665030471014044 0ustar frankfrank // Specify the name of the project: #define PROGRAM "simrisc" // Compiler to use: #include "icmake/cxxdefine" // The compiler options to use: #define CXXFLAGS "-Wall -Werror -O2 -fdiagnostics-color=never" // #define CXXFLAGS "-Wall -Werror -O2 -pthread -fdiagnostics-color=never" // Flags passed to the linker: //#define LDFLAGS "-lpthread" #define LDFLAGS "" #define CPOPTS // COMPONENTS TO INSTALL // ===================== // For an operational non-Debian installation, you probably must be // `root'. // If necessary, adapt DOC, HDR, LIB and MAN (below) to your situation. // The provided locations are used by Debian Linux. // With 'build install' you can dynamically specify a location to prepend // to the locations configured here, and select which components you want // to install // ONLY USE ABSOLUTE DIRECTORY NAMES: // the directory where the additional documentation is stored #define ADD "/usr/share/doc/"${PROGRAM}"-doc" // the final program #define BINARY "/usr/bin/"${PROGRAM} // the directory where the standard documentation is stored #define DOC "/usr/share/doc/"${PROGRAM} // the directory whre the manual page is stored #define MAN "/usr/share/man" // the directory whre the user guide is stored #define UGUIDE "/usr/share/doc/"${PROGRAM}"-doc/manual" simrisc-16.02.00/LICENSE0000644000175000017500000010451514665030517013417 0ustar frankfrank GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. 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 them 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 prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. 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. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey 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; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If 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 convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU 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 that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. 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. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 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. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. 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 state 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 3 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, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program 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, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU 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. But first, please read . simrisc-16.02.00/log/0000775000175000017500000000000014665030471013166 5ustar frankfranksimrisc-16.02.00/log/nl.cc0000664000175000017500000000034214665030471014105 0ustar frankfrank//#define XERR #include "log.ih" Log &nl(Log &log) { if (log.d_active) log.d_logFile.put('\n'); else if (log.d_ignore) { log.d_active = true; log.d_ignore = false; } return log; } simrisc-16.02.00/log/data.cc0000664000175000017500000000005514665030471014406 0ustar frankfrank//#define XERR #include "log.ih" Log g_log; simrisc-16.02.00/log/log.h0000664000175000017500000000266514665030471014131 0ustar frankfrank#ifndef INCLUDED_LOG_ #define INCLUDED_LOG_ #include #include #include class Log { friend Log &nl(Log &log); bool d_active; unsigned d_begin; unsigned d_end; bool d_ignore; // log is ignored if in d_ignored // g_log('X') calls are not logged std::string d_ignored; // if X in d_ignored std::ofstream d_logFile; bool d_set; public: Log(); // only interpreted at the // first call (in d_options) void set(unsigned begin, unsigned end, std::string const &fname, std::string const &ignored); bool active() const; // true: logs are produced void caseIdx(size_t idx); // sets d_active if nr in range std::ofstream &out(); // d_logFile Log &operator()(int ignore); // if ignored -> no log }; inline bool Log::active() const { return d_active; } inline std::ofstream &Log::out() // d_logFile { return d_logFile; } Log &nl(Log &log); inline Log &operator<<(Log &log, Log &(*nl)(Log &)) { return nl(log); } template Log &operator<<(Log &log, Type &&type) { if (log.active()) log.out() << std::forward(type); return log; } extern Log g_log; #endif simrisc-16.02.00/log/log.ih0000664000175000017500000000023314665030471014267 0ustar frankfrank#include "log.h" #include "../xerr/xerr.ih" #include #include #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/log/set.cc0000664000175000017500000000115114665030471014266 0ustar frankfrank#define XERR #include "log.ih" void Log::set(unsigned begin, unsigned end, std::string const &fname, string const &ignored) { if (d_set) // activating log can only be done return; // once if (begin > end) throw Exception{} << "--log: " << begin << " thru " << end << " 1st value must be <= 2nd value"; d_logFile = Exception::factory(fname); *this << "Logging cases " << begin << " thru " << end << '\n'; d_set = true; d_begin = begin; d_end = end; d_ignored = ignored; } simrisc-16.02.00/log/caseidx.cc0000664000175000017500000000031214665030471015111 0ustar frankfrank//#define XERR #include "log.ih" void Log::caseIdx(size_t idx) { if (d_set and (d_active = d_begin <= idx and idx <= d_end)) d_logFile << "\n" "CASE " << idx << '\n'; } simrisc-16.02.00/log/icmconf0000664000175000017500000000007214665030471014526 0ustar frankfrank#define LIBRARY "log" #include "../icmconf.lib" simrisc-16.02.00/log/log1.cc0000664000175000017500000000013014665030471014331 0ustar frankfrank//#define XERR #include "log.ih" Log::Log() : d_active(false), d_set(false) {} simrisc-16.02.00/log/frame0000664000175000017500000000005414665030471014202 0ustar frankfrank//#define XERR #include "log.ih" Log:: { } simrisc-16.02.00/log/operatorfun.cc0000664000175000017500000000034714665030471016045 0ustar frankfrank#define XERR #include "log.ih" size_t count = 0; Log &Log::operator()(int ignore) { if (d_active and d_ignored.find(ignore) != string::npos) { d_ignore = true; d_active = false; } return *this; } simrisc-16.02.00/log/driver/0000775000175000017500000000000014665030471014461 5ustar frankfranksimrisc-16.02.00/log/driver/main.cc0000664000175000017500000000043014665030471015711 0ustar frankfrank#include "../log.h" using namespace std; int main() { g_log << "nothing\n"; g_log.set(4, 5, "out"); g_log.caseIdx(1); g_log << "nothing\n"; g_log.caseIdx(4); g_log << "special line for case 4\n"; g_log.caseIdx(6); g_log << "nothing\n"; } simrisc-16.02.00/log/driver/compile0000775000175000017500000000005414665030471016036 0ustar frankfrankg++ -Wall main.cc -L ../tmp/ -llog -lbobcat simrisc-16.02.00/loop/0000755000175000017500000000000014665030471013354 5ustar frankfranksimrisc-16.02.00/loop/fillzeroes.cc0000664000175000017500000000023314665030471016041 0ustar frankfrank//#define XERR #include "loop.ih" // static void Loop::fillZeroes(ostream &out, size_t idx) { for ( ; idx < N_RESULTS; ++idx) out << "0\t"; } simrisc-16.02.00/loop/notnm.cc0000664000175000017500000000017314665030471015021 0ustar frankfrank//#define XERR #include "loop.ih" // static void Loop::noTNM(ostream &out) { // no further action, see also fillTNM } simrisc-16.02.00/loop/tumordetected.cc0000664000175000017500000000074314665030471016541 0ustar frankfrank//#define XERR #include "loop.ih" void Loop::tumorDetected(ModBase *modBase, double screeningAge) { // Found a tumor during the screening d_tumor.found(); ++d_nDetections[d_round]; d_caseCost += treatmentCosts(screeningAge); addBiopCosts(d_costs.usingAt(screeningAge)); d_tumor.setDeathAge(screeningAge); d_deathAge = min(d_tumor.deathAge(), d_naturalDeathAge); d_roundDetected = d_round + 1; left(SCREEN_DETECTED, d_deathAge); } simrisc-16.02.00/loop/intervalcancer.cc0000664000175000017500000000142514665030471016667 0ustar frankfrank#define XERR #include "loop.ih" // a self-detected tumor before screeningAge or natural death: // an interval cancer. // the tumor characteristics (at self-detection age) have already been // determined in loop/leaving.cc. bool Loop::intervalCancer() // (double screeningAge) { d_tumor.intervalCancer(); // sets d_interval true ++d_nIntervals[d_round]; if (d_screening.attend(d_round)) ++d_nTrueIntervals[d_round]; // treat the tumor and determine the death-age of the women // since the tumor is present, no need to call diameterCheck() // addCost(treatmentCosts(d_tumor.selfDetectAge())); // d_tumor.setDeathAge(); return left(SELF_DURING, min(d_naturalDeathAge, d_tumor.deathAge())); } simrisc-16.02.00/loop/headerdata.cc0000664000175000017500000001127414665030471015754 0ustar frankfrank//#define XERR #include "loop.ih" // woman, death cause, death age, tumor present, tumor detected, tumor is // interval, tumor diameter, tumor self-detect age, tumor death age, tumor // doubling time, tumor onset age, tumor preclinical period, natural death age, // death status, costs, self detected, round detected, screening rounds, TNM CSVTable Loop::headerData(size_t iter) const { CSVTable tab{ outStream(d_options.dataFile(), iter), " " }; if (not tab.stream()) // tab.stream(): the stream to write the return tab; // data to. labels(tab.stream()); ostream &out = tab.stream(); // write the status legenda out << "exit status legend:\n"; for (size_t status = NATURAL_PRE; status != Status_END; ++status) out << setw(5) << status << ": " << s_status[status] << '\n'; // the fmt() insertions define the widths of the columns, // not their header labels. Blanks are ignored, hence 'costs67890' // case cause age natural status present detected interval // 1 2 3 4 4 6 7 8 // diameter days period onset self-detect death // 9 10 11 12 13 14 // costs self round rounds TNM // 15 16 17 18 19 // ** tab.fmt() << right(7) << // 1 "Natural" << right("100.12", 2) << // 2 - 3 "natural" << "status" << // 4 - 5 "present" << "detected" << "interval" << // 6 - 8 "diameter" << "doubling" << "preclinical" << // 9 - 11 // death: "onset" << "self-detect" << "100.00" << // 12 - 14 "costs67890" << // 15 "biop567" << "self" << "round" << // 15-pre - 17 right(d_nRounds > 10 ? d_nRounds : 10) << // 18 right(5); // 19 tab << hline(); // 6 - 14 + hline tab.row(5) << join(9, FMT::CENTER) << "tumor"; tab.row(5) << hline(9); tab.row(1) << // 1 join(4, FMT::CENTER) << "death" << // 2 - 5 join(6, FMT::RIGHT) << ' ' << // 6 - 11 ' ' << // 12 join(2, FMT::CENTER) << "age" << // 13 - 14 join(2, FMT::CENTER) << "costs" << // 15-pre 15 join(2, FMT::CENTER) << "detected"; // 16 - 17 tab.row(1) << // 1 hline(4) << // 2 - 5 join(4, FMT::RIGHT) << ' ' << // 6 - 9 "doubling" << "preclinical" << ' ' << // 10 - 12 hline(2) << // 13 - 14 hline(2) << // 15-pre 15 hline(2) << "screening"; // 16 - 18 tab << "case" << // 1 "cause" << "age" << // 2 - 3 "natural" << "status" << // 4 - 5 "present" << "detected" << "interval" << // 6 - 8 "diameter" << "days" << "period" << // 9 - 11 "onset" << "self-detect" << "death" << // 12 - 14 "screening" << // 15 "biop" << // 15-pre "self" << "round" << "rounds" << "TNM"; // 16 - 19 tab << hline(); tab.sep(", "); return tab; } // out << // 1 " woman, " // 2 "death cause, " // 3 "death age, " // 4 "tumor present, " // 5 "tumor detected, " // 6 "tumor is interval, " // 7 "tumor diameter, " // 8 11 "tumor self-detect age, " // 9 12 "tumor death age, " // 10 8 "tumor doubling time, " // 11 10 "tumor onset age, " // 12 9 "tumor preclinical period, " // 13 "natural death age, " // 14 "death status, " // 15 "costs, " // 16 "self detected, " // 17 "round detected, " // 18 "screening rounds, " // 19 "TNM, " // "\n"; // } simrisc-16.02.00/loop/data.cc0000664000175000017500000000505414665030471014602 0ustar frankfrank//#define XERR #include "loop.ih" unordered_set Loop::s_availableFiles; char const *Loop::s_status[] = { "", // PRESENT, "natural death, no tumor, before the 1st screening round", // NATURAL_PRE, "natural death, undetected tumor, before the 1st screening round", // UNDETECTED_PRE, "self-detected tumor before the 1st screening round", // SELF_PRE, "natural death, no tumor, between screening rounds", // NATURAL_DURING, "natural death, undetected tumor, between screening rounds", // UNDETECTED_DURING, "self-detected tumor between screening rounds", // SELF_DURING, "screening-detected tumor", // SCREEN_DETECTED, "natural death, no tumor, after the last screening round", // NATURAL_POST, "natural death, undetected tumor, after the last screening round", // UNDETECTED_POST, "self-detected tumor after the last screening round", // SELF_POST, }; //// from original input/CumDeathProb.txt // //DoubleVect Loop::s_cumDeathProb = //{ // 0, // 0, // 0, // 0, // 0, // 0, // 0, // 0, // 0, // 0, // 0, // 0, // 0, // 0, // 0, // 0, // 0, // 0, // 0, // 0, // 0, // 0.00014, // 0.00028, // 0.00042, // 0.00056, // 0.0007, // 0.00106, // 0.00142, // 0.00178, // 0.00214, // 0.0025, // 0.00382, // 0.00514, // 0.00646, // 0.00778, // 0.0091, // 0.01118, // 0.01326, // 0.01534, // 0.01742, // 0.0195, // 0.02312, // 0.02674, // 0.03036, // 0.03398, // 0.0376, // 0.04414, // 0.05068, // 0.05722, // 0.06376, // 0.0703, // 0.07776, // 0.08522, // 0.09268, // 0.10014, // 0.1076, // 0.11564, // 0.12368, // 0.13172, // 0.13976, // 0.1478, // 0.15718, // 0.16656, // 0.17594, // 0.18532, // 0.1947, // 0.20658, // 0.21846, // 0.23034, // 0.24222, // 0.2541, // 0.2756, // 0.2971, // 0.3186, // 0.3401, // 0.3616, // 0.39368, // 0.42576, // 0.45784, // 0.48992, // 0.522, // 0.5624, // 0.6028, // 0.6432, // 0.6836, // 0.724, // 0.75826, // 0.79252, // 0.82678, // 0.86104, // 0.8953, // 0.90962, // 0.92394, // 0.93826, // 0.95258, // 0.9669, // 0.97104, // 0.97518, // 0.97932, // 0.98346, // 0.9876, //}; // simrisc-16.02.00/loop/postscreen.cc0000664000175000017500000000474714665030471016066 0ustar frankfrank#define XERR #include "loop.ih" void Loop::postScreen() { if (d_status != PRESENT) // the woman has died: no further return; // actions g_log << "\nLoop::postScreen\n"; // C1 if (not d_tumor.at(END_AGE)) // no tumor beyond the last screening { // round left(NATURAL_POST, d_naturalDeathAge); return; } // tumor beyond the last screening age: determine its // characteristics // C2 d_tumor.characteristicsAt(d_tumor.selfDetectAge()); d_tumor.setDeathAge(); if (d_tumor.selfDetectBefore(d_naturalDeathAge)) d_caseCost += treatmentCosts(d_tumor.selfDetectAge()); d_deathAge = min(d_naturalDeathAge, d_tumor.deathAge()); left( d_tumor.selfDetectBefore(d_naturalDeathAge) ? SELF_POST : d_naturalDeathAge < d_tumor.onset() ? NATURAL_POST : UNDETECTED_POST, d_deathAge); // d_tumor.selfDetectAge()); } //////////////////////////////////////////////////////////////////// // // // // // main consequence block when self-detecting a tumor after the screenings // // vvvvvvvvvvvvvvvvv // there may be a tumor, detected before // if ( // the woman's natural death // d_tumor.selfDetectable() // and d_tumor.selfDetectAge() < d_naturalDeathAge // ) // { // // this results in a tumor caused death. // // (the condition check in the original // // sources is superfluous) // g_log << " *** case died because of a tumor detected at age " << // d_tumor.selfDetectAge() << '\n'; // // d_roundDetected = d_screening.nRounds(); // characteristics(NATURAL_POST, SELF_POST); // } // else // or a naturally caused death // { // //if (g_caseIdx >= g_err)xerr(g_caseIdx << " setStatus"); // setStatus(NATURAL_POST, d_naturalDeathAge); // g_log << " *** case died at natural death age " << // d_naturalDeathAge << '\n'; // // // although the woman has died, still // // determine the tumor's characteristics // if (d_tumor.selfDetectable()) // d_tumor.characteristicsAt(d_deathAge); // } simrisc-16.02.00/loop/showround.cc0000664000175000017500000000073214665030471015717 0ustar frankfrank#define XERR #include "loop.ih" string Loop::showRound() const { switch (d_roundDetected) { case -1: // no tumor detected return "0"s; case 0: // tumor detected before the return "-1"s; // 1st screening round default: return (not d_screening.attend(d_roundDetected - 1) ? '*' : ' ') + to_string(d_roundDetected); } } simrisc-16.02.00/loop/prescreen.cc0000664000175000017500000000435114665030471015656 0ustar frankfrank//#define XERR //#include "loop.ih" // //void Loop::preScreen() //{ // // see prescreen.txt // // if (d_nRounds == 0) // no scenario rounds, no pre-screening // return; // // g_log << "\nLoop::preScreen\n"; // // // age 0: the 1st screening age, e.g. 50 // double age0 = d_screening.roundAge(0); // using the complement of the // if ( // prescreen in the original code // d_naturalDeathAge >= age0 // and // ( // not d_tumor.selfDetectable() // these are accessor calls // or // d_tumor.selfDetectAge() >= age0 // ) // ) // { // g_log << " case alive and no (detectable) tumor before age " << // age0 << ": no preScreen\n"; // return; // } // //// --------------------------------------------------------------------- //// action: //// self- nat.death < ----------------------- //// detectable tumor:selfDetect nat.death tumordetect alternative //// --------------------------------------------------------------------- //// 0 0 1 0 if //// 0 1 0 1 if //// 1 0 1 0 else //// 1 1 1 0 if //// --------------------------------------------------------------------- // // // main block resulting in the case leaving when prescreening // // ========================================================== // // if ( // pre-screening is performed: // not d_tumor.selfDetectable() or // ( // d_tumor.selfDetectable() // and // d_naturalDeathAge < d_tumor.selfDetectAge() // ) // ) // { // g_log << " *** preTumorDeath: case died naturally\n"; // preTumorDeath(); // natural death: no tumor or not self-detected // } // else // { // g_log << // " *** self detected: case self-detected a tumor and leaves\n"; // preSelfDetected(); // self detected the tumor before the screening // } //} // simrisc-16.02.00/loop/headerrounds.cc0000664000175000017500000000314514665030471016353 0ustar frankfrank#define XERR #include "loop.ih" CSVTable Loop::headerRounds(size_t iteration) const { CSVTable tab{ outStream( d_nRounds == 0 ? "" : d_options.roundsFile(), iteration), " " }; // false number of number of // --------- ------------------------ screening -------------- // round pos. neg. tumors interval trueInt costs Mammo Tomo MRI // --------------------------------------------------------------------- if (not tab.stream() or d_nRounds == 0) return tab; labels(tab.stream()); tab.fmt() << "round" << // 1: round "pos." << "neg." << // 2-3 "tumors" << "interval" << // 4-5 "trueInt" << "screening" << "biop567yyy"; // 6-8 // E.g., "Mammo" << "Tomo" << "MRI"; // 9-11 (generally: 9..) size_t nFields = d_modalities.roundFmt(tab); tab << hline(); tab.row(1) << join(2, FMT::CENTER) << "false" << // 2-3 join(3, FMT::CENTER) << "number of" << // 4-6 join(2, FMT::CENTER) << "costs" << // 8 join(nFields, FMT::CENTER) << "number of"; tab.row(1) << hline(2) << hline(3) << hline(2) << hline(nFields); tab.more() << "round" << "pos." << "neg." << // 1-3 "tumors" << "interval" << "trueInt" << // 4-6 "screening" << "biop"; // 7-8 d_modalities.roundHeaders(tab); tab.row(); tab << hline(); tab.sep(", "); return tab; } simrisc-16.02.00/loop/filltnm.cc0000664000175000017500000000017614665030471015336 0ustar frankfrank//#define XERR #include "loop.ih" // static void Loop::fillTNM(ostream &out) // see also noTNM { out << "-1,0"; } simrisc-16.02.00/loop/naturaldeathage.cc0000664000175000017500000000104014665030471017011 0ustar frankfrank//#define XERR #include "loop.ih" double Loop::naturalDeathAge() { double rnd; double ret = findAge( // Globals:: d_scenario.cumDeathProp(), rnd = Random::instance().uniformCase() ); double age = ret < MAX_AGE ? ret : MAX_AGE; g_log << " Loop::naturalDeathAge: locate " << rnd << " in cum.death probs\n" << " natural death age: " << age << '\n'; return age; } simrisc-16.02.00/loop/loop.h0000664000175000017500000001577614665030471014520 0ustar frankfrank#ifndef INCLUDED_LOOP_ #define INCLUDED_LOOP_ #include #include "../typedefs/typedefs.h" #include "../globals/globals.h" #include "../scenario/scenario.h" #include "../screening/screening.h" #include "../densities/densities.h" #include "../modalities/modalities.h" #include "../tumorinfo/tumorinfo.h" #include "../tumor/tumor.h" #include "../costs/costs.h" class Options; class Scenario; namespace FBB { class CSVTable; } class Loop: public Globals { // // 2 -> 1, 5 -> 4, 9 -> 8 if the natural death is before the tumor's onset. // enum Status // labels in data.cc { PRESENT, // 0 NATURAL_PRE, // 1 natural death before the 1st screening round UNDETECTED_PRE, // 2 nat. death, undetected tumor, before 1st scr. SELF_PRE, // 3 self-detected tumor before 1st scr. NATURAL_DURING, // 4 nat. death between screening rounds UNDETECTED_DURING, // 5 nat. death, undetected tumor, between scr. SELF_DURING, // 6 self-detected tumor between scr. rounds SCREEN_DETECTED, // 7 screening-detected tumor NATURAL_POST, // 8 nat. death after the last screening round UNDETECTED_POST, // 9 nat. death, undetected tumor, afer last scr. SELF_POST, // 10 self-detected tumor after last scr. round Status_END }; enum // round info (per case) '0': not attended { ATTENDED = '1', FALSE_NEGATIVE = '2', FALSE_POSITIVE = '3' }; enum { N_RESULTS = 13 // weird... used in results() }; Options const &d_options; Status d_status = PRESENT; StringVect const &d_labels; Scenario d_scenario; Costs d_costs; Densities d_densities; TumorInfo d_tumorInfo; Tumor d_tumor; Modalities d_modalities; Screening d_screening; int16_t d_roundDetected; // -1: no detection // Analysis &d_analysis; // Beir7 const &d_beir7; // Incidence const &d_incidence; double d_sumDeathAge = 0; double d_naturalDeathAge = 0; // dying age w/o tumor double d_deathAge = 0; // actual dying age uint16_t d_nRounds; // from Screening::nRounds() // when screening is used: uint16_t d_firstRoundAge; // age of the first screening round uint16_t d_round = 0; // currently used screening round std::string d_roundInfo; SizeVect d_nIntervals; // # interval cancer per round SizeVect d_nTrueIntervals; // # interval cancer per round // following a previously attended // screening round SizeVect d_nRoundFP; // # of false-positives per round SizeVect d_nRoundFN; // # of false-negatives per round SizeVect d_nDetections; double d_caseCost; double d_biopCosts; // sum of biop costs per case DoubleVect d_roundBiopCosts; // and per round double d_totalCost; DoubleVect d_roundCost; // sum of costs over all scr. rounds // (org: screeningRoundCosts) // randomly determined (breast cancer) // bi-rad indices for the ages of the // screening rounds, or table S3 indices // for lung cancer. Uint16Vect d_indices; // ('densities' in the original sources) std::string d_timestamp; void (*d_tnm)(std::ostream &out); // noTNM or fillTNM ProbGroup::Vector const *d_groupVector; // breast- or lung cancer // probGroup::Vector to use when // constructing d_indices static StringSet s_availableFiles; static char const *s_status[]; public: Loop(StringVect const &labels); void iterate(); private: double addBiopCosts(double costs); bool betaFunction(uint16_t modalityNr); void caseInit(); size_t cases() const; // #cases in womenLoop Uint16Vect cptIndices() const; // cpt d_indices static void fillTNM(std::ostream &out); static void fillZeroes(std::ostream &out, size_t idx); void genCases(size_t iter, size_t nCases); FBB::CSVTable headerData(size_t iter) const; FBB::CSVTable headerRounds(size_t iter) const; FBB::CSVTable headerSensitivity() const; bool intervalCancer(); void labels(std::ostream &out) const; bool leaving(double screeningAge); void maybeFalseNegative(ModBase *modBase, double screeningAge); bool falseNegative(ModBase *modBase); void tumorDetected(ModBase *modBase, double screeningAge); void maybeFalsePositive(ModBase *modBase, double screeningAge); double naturalDeathAge(); static void noTNM(std::ostream &out); static std::ofstream open(std::string const &fname); static std::ofstream outStream(std::string const &fname, size_t idx); void postScreen(); static std::string replaceDollar(std::string const &settingsFile, size_t idx); void resetCounters(); // returns the sensitivity for the double sensitivity(ModBase *modBase) const; // current round 1.cc bool left(Status status, double deathAge); // also logs the reason void screen(double screeningAge); void screening(); std::string showRound() const; double treatmentCosts(double screeningAge) const; // .ih // NOTE: in the orig. source density NRs are used: 1..4 // here density INDICES are usd: 0..3 // but when writing the data file (e.g., data-0.txt, original // name e.g., women-test-i0.txt) a + 1 correction is // currently applied bool use(ModBase *modBase); // use this modality void writeData(FBB::CSVTable &dataTable, size_t idx) const; void writeParameters(size_t iter) const; // also opens the file void writeRounds(FBB::CSVTable &roundTable) const; void writeSensitivity(FBB::CSVTable &sensTable, size_t iter) const; }; // OBSOLETE // void characteristics(Status natural, Status tumor); // OBSOLETE // void preTumorDeath(); // early natural death // OBSOLETE // void preScreen(); // OBSOLETE void preSelfDetected(); // self detected tumor pre-screening // OBSOLETE: covered by 'left(...)' // void setStatus(Status status, double age); // only sets the d_ vars. // void removeCase(double screeningAge, double selfDetectAge); #endif simrisc-16.02.00/loop/sensitivity1.cc0000664000175000017500000000124214665030471016337 0ustar frankfrank#define XERR #include "loop.ih" double Loop::sensitivity(ModBase *modBase) const { // NOTE: d_indices uses indices (0..4) instead of numbers // (as used in the original code) return modBase->sensitivity(d_indices[d_round]); } ////Calculate sensitivity for the modality and breastdensity (possibility to make function of age and tumorsize in the future but not used for now) //float calcSens(float age, float tumorsize, int modality, int density ) { // switch (modality) { // case 0: //Mammography // return sensMam[density-1]; // case 1: //Tomo // return sensTomo[density-1]; // } //} // simrisc-16.02.00/loop/leaving.cc0000664000175000017500000000322114665030471015310 0ustar frankfrank#define XERR #include "loop.ih" // true: the case has died or detected a tumor bool Loop::leaving(double screeningAge) { bool before1stRound = screeningAge == d_firstRoundAge; // A1: if (not d_tumor.at(screeningAge)) // no tumor yet at this age return d_naturalDeathAge <= screeningAge ? // case dies naturally left(before1stRound ? NATURAL_PRE : NATURAL_DURING, d_deathAge) : false; // nothing happened: perform // the screening // A2: there is a tumor at 'screeningAge' if ( // A3 d_naturalDeathAge < screeningAge and not d_tumor.selfDetectBefore(d_naturalDeathAge) ) { d_tumor.characteristicsAt(d_naturalDeathAge); d_deathAge = d_naturalDeathAge; bool died = d_naturalDeathAge < d_tumor.onset(); return left( before1stRound ? died ? NATURAL_PRE : UNDETECTED_PRE : died ? NATURAL_DURING : UNDETECTED_DURING, d_naturalDeathAge); } // A4 if (d_tumor.selfDetectBefore(screeningAge)) // self-detectable? { d_tumor.characteristicsAt(d_tumor.selfDetectAge()); d_tumor.setDeathAge(); d_caseCost += treatmentCosts(d_tumor.selfDetectAge()); return before1stRound ? left(SELF_PRE, min(d_naturalDeathAge, d_tumor.deathAge())) : intervalCancer(); } return false; // perform the screening } simrisc-16.02.00/loop/open.cc0000664000175000017500000000103614665030471014626 0ustar frankfrank//#define XERR #include "loop.ih" // static ofstream Loop::open(string const &fname) { // already saw fname if (s_availableFiles.find(fname) != s_availableFiles.end()) { ofstream out{ Exception::factory(fname, ios::in | ios::out | ios::ate) }; out << setfill('-') << setw(40) << '-' << setfill(' ') << "\n\n"; return out; } s_availableFiles.insert(fname); return Exception::factory(fname); } simrisc-16.02.00/loop/writesensitivity.cc0000664000175000017500000000040114665030471017325 0ustar frankfrank//#define XERR #include "loop.ih" void Loop::writeSensitivity(CSVTable &tab, size_t iter) const { if (tab.stream()) tab << iter << static_cast(round(d_sumDeathAge)) << static_cast(round(d_totalCost)); } simrisc-16.02.00/loop/loop.ih0000664000175000017500000000143214665030471014651 0ustar frankfrank#include "loop.h" #include "../xerr/xerr.ih" #include #include #include #include #include #include #include "../random/random.h" #include "../options/options.h" #include "../modbase/modbase.h" #include "../log/log.h" extern size_t g_caseIdx; extern size_t g_err; namespace Icmake { extern char version[]; } inline double Loop::treatmentCosts(double screeningAge) const { // diameter unused with lung cancer // otherwise metastasis unused return d_costs.treatment(screeningAge, d_tumor.diameter(), d_tumor.metastasis()); } #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/loop/addbiopcosts.cc0000664000175000017500000000024314665030471016342 0ustar frankfrank//#define XERR #include "loop.ih" double Loop::addBiopCosts(double costs) { d_biopCosts += costs; d_roundBiopCosts[d_round] += costs; return costs; } simrisc-16.02.00/loop/screening.cc0000664000175000017500000000156314665030471015647 0ustar frankfrank#define XERR #include "loop.ih" extern size_t g_caseIdx; void Loop::screening() { if (d_status == PRESENT and d_nRounds > 0) g_log << "\nLoop::screening starts\n"; // d_round is a data member: available in all of Loop's members for (d_round = 0; d_status == PRESENT and d_round != d_nRounds; ++d_round) { double screeningAge = d_screening.roundAge(d_round); g_log << __FILE__ << " screening round " << d_round << " at age " << screeningAge << '\n'; if (leaving(screeningAge)) // the case died or detected a tumor return; screen(screeningAge); // perform the screening } } //if (g_caseIdx == 102) //xerr("screening " << g_caseIdx << " at age " << screeningAge); //if (g_caseIdx == 102) //xerr("screening " << g_caseIdx << " LEAVES at age " << screeningAge); simrisc-16.02.00/loop/falsenegative.cc0000664000175000017500000000112714665030471016503 0ustar frankfrank#define XERR #include "loop.ih" bool Loop::falseNegative(ModBase *modBase) { // modified using Jing Wang's email (Tue, 20 Oct 2020 16:04:42 +0000) if ( double uval = Random::instance().uniform(), sval = sensitivity(modBase); //uval > sval sval < uval ) { g_log << " detected FALSE_NEGATIVE (" << uval << " > sensitivity (" << sval << ")\n"; ++d_nRoundFN[d_round]; d_roundInfo[d_round] = FALSE_NEGATIVE; return true; } return false; // not a false negative conclusion } simrisc-16.02.00/loop/labels.cc0000664000175000017500000000042214665030471015125 0ustar frankfrank//#define XERR #include "loop.ih" void Loop::labels(ostream &out) const { out << "Analysis " << d_timestamp << " (SimRisc V. " << Icmake::version << ")\n"; for (auto const &line: d_labels) out << line << '\n'; out.put('\n'); } simrisc-16.02.00/loop/replacedollar.cc0000664000175000017500000000070014665030471016473 0ustar frankfrank//#define XERR #include "loop.ih" // static string Loop::replaceDollar(string const &settingsFile, size_t idx) { string ret{ settingsFile }; string nr{ to_string(idx) }; idx = 0; while (true) { idx = ret.find('$', idx); // find the next $ if (idx == string::npos) // no more return ret; ret.replace(idx, 1, nr); // replace the $ by nr } } simrisc-16.02.00/loop/outstream.cc0000664000175000017500000000040214665030471015704 0ustar frankfrank//#define XERR #include "loop.ih" // static ofstream Loop::outStream(string const &fname, size_t idx) { ofstream ret; if (fname.empty()) ret.setstate(ios::failbit); else ret = open(replaceDollar(fname, idx)); return ret; } simrisc-16.02.00/loop/maybefalsenegative.cc0000664000175000017500000000107014665030471017516 0ustar frankfrank#define XERR #include "loop.ih" extern size_t g_caseIdx; void Loop::maybeFalseNegative(ModBase *modBase, double screeningAge) { d_tumor.characteristicsAt(screeningAge); if (not falseNegative(modBase)) tumorDetected(modBase, screeningAge); } // see also: Marcel: Tue, 9 Jun 2020 13:01:00 +0000 // Marcel: Thu, 11 Jun 2020 10:35:44 +0000 (MRI, Mammo, Tomo are // all used // the check for tumor.diameter() >= 1 is omitted, since // all tumors have at least 1 mm diameter // (see Marcel: Tue, 30 Jun 2020 10:46:05 +0000) simrisc-16.02.00/loop/headersensitivity.cc0000664000175000017500000000110314665030471017423 0ustar frankfrank//#define XERR #include "loop.ih" // ----------------------------------- // iteration women years total costs // ----------------------------------- // 0, 795, 13478 // ----------------------------------- CSVTable Loop::headerSensitivity() const { CSVTable tab{ outStream(d_options.sensitivityFile(), 0), " " }; if (not tab.stream()) return tab; labels(tab.stream()); tab.fmt("iteration, women years, total costs"); tab << hline(); tab("iteration, women years, total costs"); tab << hline(); return tab; } simrisc-16.02.00/loop/icmconf0000664000175000017500000000007314665030471014717 0ustar frankfrank#define LIBRARY "loop" #include "../icmconf.lib" simrisc-16.02.00/loop/maybefalsepositive.cc0000664000175000017500000000141714665030471017563 0ustar frankfrank#define XERR #include "loop.ih" // no tumor is present void Loop::maybeFalsePositive(ModBase *modBase, double screeningAge) { double rnd = Random::instance().uniform(); double spec = modBase->specificity(screeningAge); if (rnd <= spec) g_log << " " << rnd << " <= specificity(" << screeningAge << ") = " << spec << ": no false positive\n"; else { g_log << " " << rnd << " > specificity(" << screeningAge << ") = " << spec << ": false positive\n"; modBase->falsePositive(); ++d_nRoundFP[d_round]; d_roundInfo[d_round] = FALSE_POSITIVE; // add the using costs to the case and biop costs d_caseCost += addBiopCosts(d_costs.usingAt(screeningAge)); } } simrisc-16.02.00/loop/prescreen.txt0000664000175000017500000000310214665030471016101 0ustar frankfrankIn the original code's prescreen handling the following condition is used: if (Nscr > 0 && (naturalDeathAge < scr[0].age || (tumor.isTumor() && tumor.selfDetectAge() < scr[0].age))) Following this a lot of code is provided to be executed when the condition is true. It's more elegant to put this code in a function, returning when the condition isn't true. So: if ( not (Nscr > 0 && (naturalDeathAge < scr[0].age || (tumor.isTumor() && tumor.selfDetectAge() < scr[0].age))) ) return; But this isn't too readabile. However, the condition can be rewritten using De Morgan's rules. First the condition is simplified by using symbols: not (Nscr > 0 && (naturalDeathAge < scr[0].age || (tumor.isTumor() --> not ( A and ( B or ( C && tumor.selfDetectAge() < scr[0].age))) --> and D ))) And thus: not ( A and ( B or ( C and D ) ) ) Now distribute the 'not' using De Morgan: not A or not ( B or ( C and D ) ) The 2nd 'not' is next: not A or not B and not( C and D ) And maybe also the 3rd 'not': not A or not B and (not C or not D ) Now substitute the original expressions: // if (not A) -> if (Nscr == 0) // (Nscr is never negative) return; // if (not B and (not C or not D )) -> if ( naturalDeathAge >= scr[0].age // not B and (not tumor.isTumor() or tumor.selfDetectAge() >= scr[0].age) // not C or not D ) return; simrisc-16.02.00/loop/writeparameters.cc0000664000175000017500000000106614665030471017106 0ustar frankfrank#define XERR #include "loop.ih" void Loop::writeParameters(size_t iteration) const { ofstream out{ outStream(d_options.parametersFile(), iteration) }; if (not out) return; labels(out); // timestamp and scenatio explanatory labels setPrecision(out, 3); d_scenario.writeParameters(out, iteration + 1); d_costs.writeParameters(out); if (Globals::isBreast()) d_densities.writeParameters(out); d_modalities.writeParameters(out); d_screening.writeParameters(out); d_tumorInfo.writeParameters(out); } simrisc-16.02.00/loop/gencases.cc0000664000175000017500000000230714665030471015457 0ustar frankfrank#define XERR #include "loop.ih" size_t g_caseIdx; // -> loop.ih if (caseIdx > 24842) size_t g_err = 14; void Loop::genCases(size_t iter, size_t nCases) { CSVTable dataTable = headerData(iter); bool showAll = not d_options.specificAges() and d_options.lastCase() == 0; // perform 'nCases' simulations for (size_t caseIdx = 0; caseIdx != nCases; ++caseIdx) { g_caseIdx = caseIdx; g_log.caseIdx(caseIdx); caseInit(); // initialize the data for this case screening(); // no action unless screening rounds are specified postScreen(); d_sumDeathAge += d_deathAge; d_totalCost += d_caseCost; if (dataTable.stream() and (showAll or caseIdx + 1 == nCases)) { d_tumor.checkDeath(d_naturalDeathAge); writeData(dataTable, caseIdx); } } dataTable << hline(); } // In the original womanloop function a test is performed whether the // woman has died or not. This test is superfluous because if the woman enters // postScreen with status PRESENT then in postScreen the status either changes // to NATURAL_POST or SELF_POST. simrisc-16.02.00/loop/writerounds.cc0000664000175000017500000000125314665030471016253 0ustar frankfrank#define XERR #include "loop.ih" void Loop::writeRounds(CSVTable &tab) const { if (not tab.stream() or d_nRounds == 0) return; for (size_t rnd = 0; rnd != d_nRounds; ++rnd) { tab.more() << (rnd + 1) << // rounds.txt: natural round nrs d_nRoundFP[rnd] << d_nRoundFN[rnd] << d_nDetections[rnd] << d_nIntervals[rnd] << d_nTrueIntervals[rnd] << static_cast(round(d_roundCost[rnd])) << static_cast(round(d_roundBiopCosts[rnd])); d_modalities.writeRounds(tab, rnd); tab.row(); } tab << hline(); } simrisc-16.02.00/loop/left.cc0000664000175000017500000000030514665030471014615 0ustar frankfrank#define XERR #include "loop.ih" bool Loop::left(Status status, double deathAge) { d_status = status; d_deathAge = deathAge; g_log << s_status[status] << '\n'; return true; } simrisc-16.02.00/loop/cases.cc0000664000175000017500000000072614665030471014770 0ustar frankfrank#define XERR #include "loop.ih" // if last case (--nCases) was specified, use that number of cases // if death-age (--death-age) was specified simulate one case having // the specified death age. Otherwise use nWomen cases size_t Loop::cases() const { return d_options.lastCase() != 0 ? d_options.lastCase() : d_options.specificAges() ? 1 : d_scenario.nCases(); } simrisc-16.02.00/loop/screen.cc0000664000175000017500000000552514665030471015153 0ustar frankfrank#define XERR #include "loop.ih" // perform a screening void Loop::screen(double screeningAge) { // visit all modalities: for (ModBase *...) or comparable g_log << __FILE__ " performing screening at age " << screeningAge << '\n'; // org/screen: 4, screen.txt: 1 for (ModBase *modBase: d_modalities.use( d_screening.round(d_round).modalityIndices()) ) { if (not use(modBase)) continue; // adds the basic costs: screening // for lungcancer, 'costs:' for // other modalities double cost = d_costs.screening(screeningAge, modBase->cost()); d_caseCost += cost; g_log << "Screening costs, round " << (d_round + 1) << ", case " << (g_caseIdx + 1) << ": cost: " << cost << ", old sum: " << d_roundCost[d_round] << ", new sum: "; d_roundCost[d_round] += cost; g_log << d_roundCost[d_round] << '\n'; if (not d_tumor.at(screeningAge)) // no tumor, but screening may maybeFalsePositive(modBase, screeningAge); // detect a tumor else // there is a tumor which may not maybeFalseNegative(modBase, screeningAge); // be detected } g_log << __FILE__ " completed screening at age " << screeningAge << '\n'; } // // // determine the tumor // // characteristics. // if (d_tumor.selfDetectable()) // d_tumor.characteristicsAt(d_tumor.selfDetectAge()); //screeningAge); // // // Org. 2nd term: screeningAge >= d_tumor.onset()) // // test2 (see below) // if (d_tumor.selfDetectable() and d_tumor.onset() <= screeningAge) // maybeDetect(modBase, screeningAge); // else // maybeFalsePositive(modBase, screeningAge); // tumor test2 selfDetectabledetect selfDetectablefalsepos // 1 1 1 0 // 1 0 0 1 // 0 1 0 1 // 0 0 0 1 // // -> calling selfDetectableFalsePositive may not be called when just 'not d_tumor' // is true. // Sensitivity (true positive rate) refers to the probability of a positive // test, conditioned on truly being positive (so: the power) // // Specificity (true negative rate) refers to the probability of a negative // test, conditioned on truly being negative. (so: 1 - alpha) //xerr(""); //for (auto const &id: d_screening.round(d_round).modalityIDs()) //cerr<<" id: " << id <<'\n'; //xerr("use " << modBase->id()); //xerr("cpt costs"); simrisc-16.02.00/loop/caseinit.cc0000664000175000017500000000276414665030471015475 0ustar frankfrank#define XERR #include "loop.ih" extern size_t g_caseIdx; void Loop::caseInit() { g_log << "\nLoop::caseInit\n"; d_caseCost = 0; // org: womenCosts d_roundDetected = -1; // org: roundDetected d_roundInfo.assign(d_nRounds, '0'); // attendance info per round per // case at [idx] the info of round // idx is stored d_biopCosts = 0; //xerr("cptIndices"); // BC simulation: bi-rad column indices or d_indices = cptIndices(); // LC simulation: 0-vector //xerr("cumTotalRisk"); d_tumorInfo.cumTotalRisk( // 24/1 also sets the attended d_screening.radiationRisk( // 24/1 flag d_modalities, d_indices, d_tumorInfo.beir7().beta(), d_tumorInfo.beir7().eta() ) ); // naturalDeathAged is called to standardize the Random::uniformCase // calls d_options.fixedNaturalDeathAge(d_naturalDeathAge = naturalDeathAge()); d_deathAge = d_naturalDeathAge; // iniial deathAge estimate. d_status = PRESENT; d_tumor.reset(); // determine this case's tumor parameters g_log << "\n" "case init:\n" " Natural death age: " << d_naturalDeathAge << '\n' << d_tumor << '\n'; } simrisc-16.02.00/loop/cptindices.cc0000664000175000017500000000233414665030471016014 0ustar frankfrank//#define XERR #include "loop.ih" // with BreastDensities: compute the bi-rad category to use (a: 0 .. d: 3) // with LC: a 0-initialized vector of d_nRounds elements Uint16Vect Loop::cptIndices() const { Uint16Vect ret; if (not Globals::isBreast()) // LC: a 0-initialized vector is used ret.resize(d_nRounds); else // for BC: compute the indices used to obtain { // dose values double prob = Random::instance().uniform(); for (double age: d_screening.ages()) { // d_groupVector initialized at the constructor to // the LC s3 table or the Densities biRad vector. RowCol rowCol = ProbGroup::probIndexOf(*d_groupVector, age, prob); // invalid age if (rowCol.first == static_cast(string::npos)) throw Exception{} << "runtime-error: no age category for age " << age; // store the birad/s3 column index to use for prob/age: ret.push_back(rowCol.second); } } return ret; } simrisc-16.02.00/loop/loop1.cc0000664000175000017500000000077014665030471014723 0ustar frankfrank#define XERR #include "loop.ih" Loop::Loop(StringVect const &labels) : d_options(Options::instance()), d_labels(labels), d_tumor(d_tumorInfo), d_modalities(d_tumor), d_screening(d_modalities), d_nRounds(d_screening.nRounds()), d_firstRoundAge(d_nRounds == 0 ? 0 : d_screening.roundAge(0)), d_timestamp(DateTime{ DateTime::LOCALTIME }.rfc2822()), d_tnm(d_options.tnm() ? &fillTNM : &noTNM) { if (Globals::isBreast()) d_groupVector = d_densities.biRad(); } simrisc-16.02.00/loop/resetcounters.cc0000664000175000017500000000105114665030471016567 0ustar frankfrank//#define XERR #include "loop.ih" void Loop::resetCounters() { d_totalCost = 0; // org: womenCosts d_sumDeathAge = 0; // org: womenYears d_nIntervals = SizeVect(d_nRounds); d_nTrueIntervals = SizeVect(d_nRounds); d_nRoundFP = SizeVect(d_nRounds); // # of false-positives per round d_nRoundFN = SizeVect(d_nRounds); // # of false-positives per round d_nDetections = SizeVect(d_nRounds); d_roundCost = DoubleVect(d_nRounds); d_modalities.resetCounters(d_nRounds); } simrisc-16.02.00/loop/frame0000664000175000017500000000005614665030471014374 0ustar frankfrank//#define XERR #include "loop.ih" Loop:: { } simrisc-16.02.00/loop/writedata.cc0000664000175000017500000000306214665030471015652 0ustar frankfrank#define XERR #include "loop.ih" void Loop::writeData(CSVTable &tab, size_t idx) const { static Status detection[] = { SELF_PRE, SELF_DURING, SELF_POST }; // case numbers in data*.txt are now natural nrs. tab.more() << (idx + 1) << // 1 (d_deathAge == d_naturalDeathAge ? "Natural" : "Tumor") << // 2 d_deathAge << d_naturalDeathAge << d_status; // 3 - 5 d_tumor.writeData(tab); // 6 - 14 ostringstream out; if (Globals::isZero(d_tumor.diameter())) (*d_tnm)(out); else { // set the tumor S3 RowCol rowCol = d_tumor.rowCol(); // row/col. For BC out << rowCol.first << ',' << rowCol.second; // row is bc: TNM, col } // = 0 (via Survival:: // setVSD // self round // 16 17 // ** tab << static_cast(round(d_caseCost)) << // 15 static_cast(round(d_biopCosts)) << // 15-pre (find(detection, detection + size(detection), d_status) != detection + size(detection)) << // 16 showRound() << d_roundInfo << // 17 - 18 out.str(); // 19 } simrisc-16.02.00/loop/setstatus.cc0000664000175000017500000000023114665030471015720 0ustar frankfrank// #define XERR //#include "loop.ih" // //void Loop::setStatus(Status status, double age) //{ // d_status = status; // d_deathAge = age; //} // simrisc-16.02.00/loop/characteristics.cc0000664000175000017500000000226114665030471017041 0ustar frankfrank// #define XERR // #include "loop.ih" // // // treatmentDeath(): characteristics(LEFT_POST, TUMOR_POST); // // extern size_t g_caseIdx; // // void Loop::characteristics(Status natural, Status tumor) // { // // the tumor was self-detected: determine // // its characteristics // d_tumor.characteristicsAt(d_tumor.selfDetectAge()); // // d_selfDetected = true; // // // treat the tumor: add the treatment cost and compute the age of // // tumor-caused death. There is a tumor: no need to call // // diameterCheck() // d_caseCost += treatmentCosts(d_tumor.selfDetectAge()); // // d_tumor.setDeathAge(); // // if (d_naturalDeathAge < d_tumor.deathAge()) // naturally caused death // setStatus(natural, d_naturalDeathAge); // else // or tumor caused death // setStatus(tumor, d_tumor.deathAge()); // } // // // // // double cost = treatmentCosts(d_tumor.selfDetectAge()); // // xerr("costs: " << cost << ", age: " << d_tumor.selfDetectAge() << ", dia: " <<[bsl] // // d_tumor.diameter()); // // d_caseCost += cost; // simrisc-16.02.00/loop/use.cc0000664000175000017500000000416614665030471014470 0ustar frankfrank//#define XERR #include "loop.ih" // true: this modality is used // d_round contains the screening round index bool Loop::use(ModBase *modBase) { bool attends = d_screening.attend(d_round); // 24/1 // if (d_screening.rate() < Random::instance().uniform()) // 24/1 if (not attends) // 24/1 return false; // xerr("round " << d_round << ", count " << d_round); d_roundInfo[d_round] = ATTENDED; modBase->count(d_round); // screen around line 22 -> return true; } // ---------------------------------------------------------------------- // //// screen: line 26: densities not used anymore // // // uint16_t density = d_indices[d_round]; // // // NOTE: in the orig. source density NRs are used: 1..4 // // here density INDICES are usd: 0..3 // // if ( use Modalities member: // modality == MAMMOGRAPHY and d_screening.round(d_round).mammo() //// and (density == 0 or density == 1) // // ) // { // ++d_nMam[d_round]; // return true; // } // // if ( // modality == TOMOSYNTHESIS and d_screening.round(d_round).tomo() //// and (density == 2 or density == 3) // ) // { // ++d_nTomo[d_round]; // return true; // } // // return false; // return RandomPool::instance().attendance(d_round * (modality + 1) // <= d_screening.rate().value() // and // ... // ( // rndPoolAttendance[ screeningRound * (modality + 1) ] // <= // attendanceRate // ) // && // ( // ( // ( modality == 0) && // (scr[screeningRound].T0) && // ( // (density[screeningRound] == 1) // || // (density[screeningRound] == 2) // ) // ) // || // ( // ( modality == 1) && // (scr[screeningRound].T1) && // ( // (density[screeningRound] == 3) || // (density[screeningRound] == 4) // ) // ) // ) simrisc-16.02.00/loop/pretumordeath.cc0000664000175000017500000000076314665030471016556 0ustar frankfrank// //#define XERR // #include "loop.ih" // // // Woman dies because of natural cause before screening and // // does not have tumor or dies before self-detecting the tumor // // void Loop::preTumorDeath() // { // setStatus(NATURAL_PRE, d_naturalDeathAge); // // would have developed a // if (d_tumor.selfDetectable()) // tumor. Compute the tumor's // d_tumor.characteristicsAt(d_deathAge); // characteristics // } // simrisc-16.02.00/loop/iterate.cc0000664000175000017500000000256514665030471015332 0ustar frankfrank#define XERR #include "loop.ih" void Loop::iterate() { CSVTable sensTable = headerSensitivity(); // table to collect // sensitivity values Random::instance().setSeed(d_scenario.seed()); d_modalities.active(); // prepare the active Mods. for (size_t idx = 0, end = d_scenario.nIterations(); idx != end; ++idx) { ofstream spreadStream; size_t nCases = cases(); d_roundBiopCosts.assign(d_nRounds, 0); // reset the rounds biop costs Random::instance().reinit(nCases, d_scenario.generatorType()); if (Globals::vary()) // maybe vary the parameters { spreadStream = outStream(d_options.spreadFile(), idx); labels(spreadStream); d_modalities.vary(spreadStream); // vary the used modalities d_tumorInfo.vary(spreadStream); // vary Beir7, Growth, // Incidence, and Survival } writeParameters(idx); // write the actual parameter values, CSVTable rounds = headerRounds(idx); resetCounters(); genCases(idx, nCases); writeRounds(rounds); // -> ORG/loopendout.cpp writeSensitivity(sensTable, idx); } if (sensTable.stream()) sensTable << hline(); } simrisc-16.02.00/loop/preselfdetected.cc0000664000175000017500000000032514665030471017027 0ustar frankfrank// //#define XERR // #include "loop.ih" // // void Loop::preSelfDetected() // { // d_roundDetected = 0; // pre-screen tumor detected // characteristics(NATURAL_PRE, SELF_PRE); // } // // simrisc-16.02.00/main.cc0000664000175000017500000000321714665030471013643 0ustar frankfrank#define XERR #include "main.ih" // update Options::alter, Options::inspect and // Options::Options if g_longOpts is modified Arg::LongOption g_longOpts[] = { Arg::LongOption{"base", 'B'}, Arg::LongOption{"cancer", 'c' }, // breast (def.), // male, or female (implies LC) Arg::LongOption{"config", 'C'}, Arg::LongOption{"cum-death", 'd'}, Arg::LongOption{"data", 'D'}, Arg::LongOption{"death-age", 'a'}, Arg::LongOption{"err", 'e'}, Arg::LongOption{"help", 'h'}, Arg::LongOption{"last-case", 'l'}, Arg::LongOption{"log", Arg::Required}, Arg::LongOption{"one-analysis", 'o'}, Arg::LongOption{"parameters", 'P'}, Arg::LongOption{"rounds", 'R'}, Arg::LongOption{"sensitivity", 'S'}, Arg::LongOption{"spread", 's'}, Arg::LongOption{"tnm", 'T'}, Arg::LongOption{"tumor-age", 't'}, Arg::LongOption{"verbose", 'V'}, Arg::LongOption{"version", 'v'}, }; auto const *g_longEnd = g_longOpts + size(g_longOpts); //main int main(int argc, char **argv) try { Arg const &arg = Arg::initialize("a:B:c:C:d:D:el:hoP:R:S:s:t:TvV", g_longOpts, g_longEnd, argc, argv); arg.versionHelp(usage, Icmake::version, arg.option('o') ? 0 : 1); Options::instance(); // construct the Options object Simulator simulator; // construct the simulator simulator.run(); // and run it. } //= catch (...) { return handleException(); } simrisc-16.02.00/main.ih0000664000175000017500000000062014665030471013651 0ustar frankfrank#include #include #include #include #include "xerr/xerr.ih" #include "simulator/simulator.h" #include "options/options.h" namespace Icmake { extern char version[]; extern char years[]; extern char author[]; }; int handleException(); void usage(std::string const &progname); #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/mammo/0000775000175000017500000000000014665030471013513 5ustar frankfranksimrisc-16.02.00/mammo/vspecificity.cc0000664000175000017500000000112014665030471016515 0ustar frankfrank//#define XERR #include "mammo.ih" // E.g., age groups: // 0-40 // 40-100 // then by searching from the last to the first: find the agegroup // where the begin-age is < specified age. // Examples: age 50: the last group, // age 40: the first group // 'age' may not be negative double Mammo::vSpecificity(double age) const { return find_if(d_specVect.rbegin(), d_specVect.rend(), [&](AgeGroupVSD const &spec) { return spec.beginAge() < age; } )->value(); } simrisc-16.02.00/mammo/vdose1.cc0000664000175000017500000000014014665030471015216 0ustar frankfrank//#define XERR #include "mammo.ih" VSDvect const *Mammo::vDose() const { return &d_dose; } simrisc-16.02.00/mammo/mammo.ih0000664000175000017500000000030214665030471015136 0ustar frankfrank#include "mammo.h" #include "../xerr/xerr.ih" #include #include "../tumor/tumor.h" #include "../parser/parser.h" #include "../log/log.h" #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/mammo/setsystematicerror.cc0000664000175000017500000000023314665030471017773 0ustar frankfrank//#define XERR #include "mammo.ih" void Mammo::setSystematicError() { base().back() = "systematicError:"; Parser::proportion(base(), d_sysErr); } simrisc-16.02.00/mammo/mammo.h0000664000175000017500000000323714665030471014777 0ustar frankfrank#ifndef INCLUDED_MAMMO_ #define INCLUDED_MAMMO_ #include "../enums/enums.h" #include "../modbase/modbase.h" #include "../agegroupvsd/agegroupvsd.h" // Mammo: // costs: 64 // // # bi-rad: a b c d // dose: 3 3 3 3 // m: .136 .136 .136 .136 // // # ageGroup // specificity: 0 - 40: .961 40 - *: .965 // // # 1 2 3 4 // beta: -4.38 .49 -1.34 -7.18 // // systematicError: 0.1 class Tumor; class Mammo: public ModBase { Tumor const &d_tumor; double d_sysErr; VSDvect d_dose; VSDvect d_m; VSDvect d_beta; AgeGroupVSDvect d_specVect; public: Mammo(Tumor const &tumor); ~Mammo() override; private: void setSystematicError(); void setBeta(); void setM(); VSDvect const *vDose() const override; // 1 double vDose(uint16_t) const override; // 2 void vInsert(std::ostream &out) const override; double vSensitivity(size_t idx) const override; double vSpecificity(double age) const override; void vVary(std::ostream &out) override; }; //Modalities: // // Mammo: // costs: 64 // // # bi-rad: a b c d // dose: 3 3 3 3 // m: .136 .136 .136 .136 // // # ageGroup // specificity: 0 - 40: .961 40 - *: .965 // // # 1 2 3 4 // beta: -4.38 .49 -1.34 -7.18 // // systematicError: 0.1 #endif simrisc-16.02.00/mammo/vdose2.cc0000664000175000017500000000016014665030471015221 0ustar frankfrank//#define XERR #include "mammo.ih" double Mammo::vDose(uint16_t idx) const { return d_dose[idx].value(); } simrisc-16.02.00/mammo/icmconf0000664000175000017500000000007414665030471015055 0ustar frankfrank#define LIBRARY "mammo" #include "../icmconf.lib" simrisc-16.02.00/mammo/mammo1.cc0000664000175000017500000000143214665030471015211 0ustar frankfrank#define XERR #include "mammo.ih" // Mammo: // costs: 64 // // # bi-rad: a b c d // dose: 3 3 3 3 // #Mammo: // m: .136 .136 .136 .136 // // # ageGroup // specificity: 0 - 40: .961 40 - *: .965 // // # 1 2 3 4 // #Mammo: // beta: -4.38 .49 -1.34 -7.18 // // #Mammo: // systematicError: 0.1 Mammo::Mammo(Tumor const &tumor) : ModBase("Mammo"), d_tumor(tumor) { if (not defined()) return; setSystematicError(); // must be before doseBase setM(); setBeta(); doseBase(d_dose); // ModBase members specificityBase(d_specVect); } simrisc-16.02.00/mammo/destructor.cc0000664000175000017500000000006714665030471016223 0ustar frankfrank//#define XERR #include "mammo.ih" Mammo::~Mammo() {} simrisc-16.02.00/mammo/setm.cc0000664000175000017500000000021214665030471014765 0ustar frankfrank#define XERR #include "mammo.ih" void Mammo::setM() { base().back() = "m:"; d_m = Parser::VSDparameters(VARY_PROB, base(), 4); } simrisc-16.02.00/mammo/setbeta.cc0000664000175000017500000000041714665030471015453 0ustar frankfrank#define XERR #include "mammo.ih" void Mammo::setBeta() { base().back() = "beta:"; // if (Parser::hasSection(base())) d_beta = Parser::VSDparameters(VARY_MEAN, base(), 4); // else // d_beta = Parser::VSDparameters(VARY_MEAN, { "beta:" }, 4); } simrisc-16.02.00/mammo/vinsert.cc0000664000175000017500000000121414665030471015512 0ustar frankfrank#define XERR #include "mammo.ih" void Mammo::vInsert(ostream &out) const { //Globals::setPrecision(out, 3) << Globals::setWidthPrec(out, 4, 3) << setw(4) << ' ' << "systematicError: " << d_sysErr << '\n'; VSD::fmt(6, "bi-rad:", 'a', 1, 0, 1, 0); out << setw(4) << ' ' << "Dose:\n" << d_dose; VSD::fmt(6, "bi-rad:", 'a', 0, 3, 0, 3); out << setw(4) << ' ' << "M:\n" << d_m; VSD::fmt(6, "nr:", 0, 3, 2, 0, 4); out << setw(4) << ' ' << "Beta:\n" << d_beta; AgeGroupVSD::fmt(6, 0, 3, 0, 3); out << setw(4) << ' ' << "Specificity:\n" << d_specVect; } simrisc-16.02.00/mammo/frame0000664000175000017500000000006014665030471014524 0ustar frankfrank//#define XERR #include "mammo.ih" Mammo:: { } simrisc-16.02.00/mammo/vsensitivity.cc0000664000175000017500000000144514665030471016606 0ustar frankfrank//#define XERR #include "mammo.ih" //code // cf. Isheden, G., & Humphreys, K. (2017). Modelling breast cancer tumour // growth for a stable disease population. Statistical Methods in Medical // Research, 28(3), 681-702. double Mammo::vSensitivity(size_t idx) const { double diameter = d_tumor.diameter(); double mValue = d_m[idx].value(); double expBeta = exp( d_beta[0].value() + d_beta[1].value() * diameter + d_beta[2].value() * mValue + d_beta[3].value() * mValue / (diameter * diameter) ); double ret = (1 - d_sysErr) * expBeta / (1 + expBeta); g_log << __FILE__ " idx = " << idx << ", diameter: " << diameter << ", m: " << mValue << ", sens.: " << ret << "\n"; return ret; } //= simrisc-16.02.00/mammo/vvary.cc0000664000175000017500000000047414665030471015176 0ustar frankfrank//#define XERR #include "mammo.ih" void Mammo::vVary(ostream &out) { out << " Mammo:\n"; VSD::vary(out, 4, "Dose:", "bi-rad", 'a', d_dose); VSD::vary(out, 4, "M:" , "bi-rad", 'a', d_m); VSD::vary(out, 4, "Beta:", "nr", '1', d_beta); AgeGroupVSD::vary(out, 4, "Specificity:", d_specVect); } simrisc-16.02.00/manual2oo60000775000175000017500000000011314665030471014311 0ustar frankfrank#!/bin/bash scp -r tmp/manual/html/* oosix:/var/www/ssl_icce.rug/simrisc/ simrisc-16.02.00/modalities/0000775000175000017500000000000014665030471014537 5ustar frankfranksimrisc-16.02.00/modalities/find.cc0000664000175000017500000000100114665030471015756 0ustar frankfrank//#define XERR #include "modalities.ih" uint16_t Modalities::find(std::string const &modality) const { auto iter = std::find_if(d_modalityIDs.begin(), d_modalityIDs.end(), [&](string const &available) { return modality == available; } ); return iter != d_modalityIDs.end() ? iter - d_modalityIDs.begin() : UNDEFINED; } simrisc-16.02.00/modalities/vary.cc0000664000175000017500000000030714665030471016027 0ustar frankfrank//#define XERR #include "modalities.ih" void Modalities::vary(ostream &out) { out << "Modalities\n"; for (ModBase *modBase: d_modBaseVect) modBase->vary(out); out.put('\n'); } simrisc-16.02.00/modalities/addmod.cc0000664000175000017500000000066014665030471016300 0ustar frankfrank//#define XERR #include "modalities.ih" void Modalities::addMod(ModBase *modBase) // d_base in ModBase, initialized { // to { modName, "costs:" }, // read by costs/costs1.cc if (not modBase->defined()) { delete modBase; return; } d_modBaseVect.push_back(modBase); d_modalityIDs.push_back(modBase->id()); } simrisc-16.02.00/modalities/modalities.f0000664000175000017500000000027214665030471017041 0ustar frankfrankinline StringVect const &Modalities::modalityIDs() const { return d_modalityIDs; } inline void Modalities::activate(std::string const &modality) { d_active.emplace(modality); } simrisc-16.02.00/modalities/modalities.ih0000664000175000017500000000047114665030471017215 0ustar frankfrank#include "modalities.h" #include "../xerr/xerr.ih" #include #include #include #include "../globals/globals.h" #include "../tomo/tomo.h" #include "../mammo/mammo.h" #include "../mri/mri.h" #include "../ct/ct.h" #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/modalities/icmconf0000664000175000017500000000010114665030471016070 0ustar frankfrank#define LIBRARY "modalities" #include "../icmconf.lib" simrisc-16.02.00/modalities/writeparameters.cc0000664000175000017500000000032414665030471020263 0ustar frankfrank//#define XERR #include "modalities.ih" void Modalities::writeParameters(ostream &out) const { out << "Modalities:\n" "\n"; for (auto modBasePtr: d_modBaseVect) out << *modBasePtr; } simrisc-16.02.00/modalities/destructor.cc0000664000175000017500000000021314665030471017240 0ustar frankfrank//#define XERR #include "modalities.ih" Modalities::~Modalities() { for (auto modBasePtr: d_modBaseVect) delete modBasePtr; } simrisc-16.02.00/modalities/modalities1.cc0000664000175000017500000000047414665030471017266 0ustar frankfrank#define XERR #include "modalities.ih" #include "../parser/parser.h" Modalities::Modalities(Tumor const &tumor) : d_tumor(tumor) { if (not Globals::isBreast()) addMod(new CT{ d_tumor }); else { addMod(new Mammo{ d_tumor }); addMod(new Tomo); addMod(new MRI); } } simrisc-16.02.00/modalities/roundheaders.cc0000664000175000017500000000032014665030471017524 0ustar frankfrank//#define XERR #include "modalities.ih" void Modalities::roundHeaders(CSVTable &tab) const { for (ModBase const *modBase: d_activeVect) // insert the IDs tab.more() << modBase->id(); } simrisc-16.02.00/modalities/writerounds.cc0000664000175000017500000000034214665030471017432 0ustar frankfrank#define XERR #include "modalities.ih" void Modalities::writeRounds(CSVTable &tab, size_t round) const { for (ModBase const *modBase: d_activeVect) // insert the values tab.more() << (*modBase)[round]; } simrisc-16.02.00/modalities/modalities.comment0000664000175000017500000000525314665030471020262 0ustar frankfrank //////////////////////////////////////////////////////////////////// // // 1st dimension is the type index, // // 2nd dimension is the id dimension // ParamsVect2 d_modality; // // static Map s_type; // static Map s_id; // // class Params // { // friend class Modalities; // // double d_dose[N_DOSES]; // double d_sens[N_SENS]; // sensitivities // SpecVect d_spec; // specificities // // public: // double const *dose() const; // double const *sens() const; // // double dose(size_t idx) const; // double sens(size_t idx) const; // Specificity const &operator[](size_t idx) const; // }; // // typedef std::vector ParamsVect; // typedef std::vector ParamsVect2; // // // // ParamsVect const &operator[](size_t idx) const; // // Params const &mammoParams() const; // Params const &tomoParams() const; // // void writeParameters(std::ostream &out) const; // 1 // // private: // void params(std::ostream &out, char const *label, Constants type) // const; // void birads(std::ostream &out, char const *label, // double const *value, Constants count) const; // // // void makeRoom(uint16_t typeIdx, uint16_t idIdx); // // static bool readSpecificities(std::istream &in, Params ¶ms); // inline Modalities::ParamsVect const &Modalities::operator[](size_t idx) const // { // return d_modality[idx]; // } // // inline Modalities::Params const &Modalities::mammoParams() const // { // return d_modality[XRAY][MAMMO]; // } // // inline Modalities::Params const &Modalities::tomoParams() const // { // return d_modality[XRAY][TOMO]; // } // // inline uint16_t Modalities::Specificity::beginAge() const // { // return d_beginAge; // } // // inline uint16_t Modalities::Specificity::endAge() const // { // return d_endAge; // } // // inline double Modalities::Specificity::value() const // { // return d_value; // } // // inline double Modalities::Params::dose(size_t idx) const // { // return d_dose[idx]; // } // // inline double const *Modalities::Params::dose() const // { // return d_dose; // } // // inline double Modalities::Params::sens(size_t idx) const // { // return d_sens[idx]; // } // // inline double const *Modalities::Params::sens() const // { // return d_sens; // } // // inline Modalities::Specificity // const &Modalities::Params::operator[](size_t idx) const // { // return d_spec[idx]; // } simrisc-16.02.00/modalities/active.cc0000664000175000017500000000043414665030471016322 0ustar frankfrank#define XERR #include "modalities.ih" void Modalities::active() { for (string const &modality: // use sorted modality names set{ d_active.begin(), d_active.end() }) d_activeVect.push_back(d_modBaseVect[ find(modality) ]); } simrisc-16.02.00/modalities/roundfmt.cc0000664000175000017500000000054114665030471016704 0ustar frankfrank#define XERR #include "modalities.ih" size_t Modalities::roundFmt(CSVTable &tab) const { if (d_activeVect.size() == 1) { tab.fmt(tab.size()) << "number of"; return 1; } size_t nActive = d_activeVect.size(); for (size_t idx = 0; idx != nActive; ++idx) tab.fmt(tab.size()) << "12345"; return nActive; } simrisc-16.02.00/modalities/resetcounters.cc0000664000175000017500000000025714665030471017757 0ustar frankfrank#define XERR #include "modalities.ih" void Modalities::resetCounters(size_t nRounds) { for (auto modBasePtr: d_modBaseVect) modBasePtr->resetCounters(nRounds); } simrisc-16.02.00/modalities/frame0000664000175000017500000000007214665030471015553 0ustar frankfrank//#define XERR #include "modalities.ih" Modalities:: { } simrisc-16.02.00/modalities/modalities.h0000664000175000017500000000417614665030471017052 0ustar frankfrank#ifndef INCLUDED_MODALITIES_ #define INCLUDED_MODALITIES_ // See README #include #include #include "../typedefs/typedefs.h" #include "../enums/enums.h" class ModBase; class Tumor; namespace FBB { class CSVTable; } class Modalities { Tumor const &d_tumor; // used by Mammo and CT std::vector d_modBaseVect; // defined modalities StringVect d_modalityIDs; // and their IDs StringSet d_active; // the active modalities std::vector d_activeVect; // ptrs to active modalities public: Modalities(Tumor const &tumor); ~Modalities(); // visit all modalities and initialize // their data, see loop/initialize // see also Loop::d_nModalityFP: modality specific, to become // a size_t variables in each used modality void resetCounters(size_t nRounds); // returns UNDEFINED if 'modality' is unknown uint16_t find(std::string const &modality) const; // return a vector of ModBase ptrs matching the names specified // in 'active' std::vector use(Uint16Vect const &active) const; StringVect const &modalityIDs() const; void vary(std::ostream &out); void writeParameters(std::ostream &out) const; // determine the Mod. size_t roundFmt(FBB::CSVTable &tab) const; // #fields & width void roundHeaders(FBB::CSVTable &tab) const; // write the Mod names // write the Mod data void writeRounds(FBB::CSVTable &tmp, size_t round) const; void active(); // sets d_activeVect void activate(std::string const &modality); private: void addMod(ModBase *modBase); }; // double specificity(age) const: age may not be negative // currently not used // double const *hasDose(StringVect const &ids) const; #include "modalities.f" #endif simrisc-16.02.00/modalities/use.cc0000664000175000017500000000061014665030471015637 0ustar frankfrank//#define XERR #include "modalities.ih" vector Modalities::use(Uint16Vect const &active) const { vectorret; for (uint16_t idx: active) ret.push_back(d_modBaseVect[idx]); // store the Modality ptr // return ptrs to the return ret; // requested Modality handlers } simrisc-16.02.00/modbase/0000775000175000017500000000000014665030471014017 5ustar frankfranksimrisc-16.02.00/modbase/vdose1.cc0000664000175000017500000000013614665030471015527 0ustar frankfrank//#define XERR #include "modbase.ih" VSDvect const *ModBase::vDose() const { return 0; } simrisc-16.02.00/modbase/modbase1.cc0000664000175000017500000000035114665030471016020 0ustar frankfrank//#define XERR #include "modbase.ih" ModBase::ModBase(string const &id) : d_base{ id + ':', "costs:" }, d_id(id), d_defined(Parser::hasSection(d_base)) { if (d_defined) Parser::nonNegative(d_base, d_cost); } simrisc-16.02.00/modbase/opinsert.cc0000664000175000017500000000041314665030471016167 0ustar frankfrank//#define XERR #include "modbase.ih" std::ostream &operator<<(std::ostream &out, ModBase const &modBase) { out << " " << modBase.id() << ":\n" << " costs: " << modBase.d_cost << '\n'; modBase.vInsert(out); return out.put('\n'); } simrisc-16.02.00/modbase/extractbase.cc0000664000175000017500000000041114665030471016627 0ustar frankfrank//#define XERR #include "modbase.ih" // used by MRI and CT void ModBase::extractBase(VSD &dest) { auto lines = Parser::one(d_base); // get one line LineInfo const *line = lines.get(); if (line != 0) Parser::extract(*line, dest); } simrisc-16.02.00/modbase/vdose2.cc0000664000175000017500000000016314665030471015530 0ustar frankfrank//#define XERR #include "modbase.ih" double ModBase::vDose([[maybe_unused]] uint16_t idx) const { return 0; } simrisc-16.02.00/modbase/icmconf0000664000175000017500000000007614665030471015363 0ustar frankfrank#define LIBRARY "modbase" #include "../icmconf.lib" simrisc-16.02.00/modbase/destructor.cc0000664000175000017500000000007514665030471016526 0ustar frankfrank//#define XERR #include "modbase.ih" ModBase::~ModBase() {} simrisc-16.02.00/modbase/specificitybase.cc0000664000175000017500000000170514665030471017477 0ustar frankfrank#define XERR #include "modbase.ih" // # ageGroup // specificity: 0 - 40: .961 40 - *: .965 void ModBase::specificityBase(AgeGroupVSDvect &dest) { d_base.back() = "specificity:"; auto lines = Parser::one(d_base); if (lines.size() != 1) // keywords not found return; istringstream in{ lines.get()->tail }; // prepare for extraction bool nextRange = false; while (true) { AgeGroupVSD spec{ VARY_PROB, false }; // agegroupvsd w/o sd. if (not (in >> spec)) // try to extract break; // no (more) nextRange = spec.group().nextRange(dest); //FBB spec.ageGroup().nextRange(dest)) if (not nextRange) break; dest.push_back(move(spec)); if (spec.group().end() == END_AGE) return; } if (not nextRange) Err::specification(); } simrisc-16.02.00/modbase/outspec.cc0000664000175000017500000000071414665030471016012 0ustar frankfrank//#define XERR #include "modbase.ih" // static void ModBase::outSpec(ostream &out, char const *prefix, unsigned fill, AgeGroupVSD const &spec) { out << prefix << setw(fill) << ' ' << setw(2) << spec.beginAge() << " - " << setw(2); if (Globals::isZero(spec.endAge() - END_AGE)) out << '*'; else out << spec.endAge(); out << ':' << setw(6) << spec.value() << ";\n"; } simrisc-16.02.00/modbase/dosebase.cc0000664000175000017500000000024514665030471016114 0ustar frankfrank#define XERR #include "modbase.ih" void ModBase::doseBase(VSDvect &dose) { d_base.back() = "dose:"; dose = Parser::VSDparameters(VARY_NONNEG, d_base, 4); } simrisc-16.02.00/modbase/modbase.ih0000664000175000017500000000023214665030471015750 0ustar frankfrank#include "modbase.h" #include "../xerr/xerr.ih" #include "../globals/globals.h" #include "../parser/parser.h" #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/modbase/resetcounters.cc0000664000175000017500000000022114665030471017226 0ustar frankfrank//#define XERR #include "modbase.ih" void ModBase::resetCounters(size_t nRounds) { d_count = SizeVect(nRounds); d_falsePositives = 0; } simrisc-16.02.00/modbase/modbase.h0000664000175000017500000000477514665030471015617 0ustar frankfrank#ifndef INCLUDED_MODBASE_ #define INCLUDED_MODBASE_ // see ../modalities/README #include #include #include "../err/err.h" #include "../typedefs/typedefs.h" #include "../agegroupvsd/agegroupvsd.h" class ModBase { friend std::ostream &operator<<(std::ostream &, ModBase const &); StringVect d_base; std::string const d_id; bool d_defined; size_t d_cost = 0; // cost of using th modality SizeVect d_count; uint16_t d_falsePositives; public: ModBase(std::string const &id); virtual ~ModBase(); size_t cost() const; // .f void count(size_t round); // .f bool defined() const; // .f double dose(uint16_t idx) const; // .f void falsePositive(); // .f std::string const &id() const; // .f size_t operator[](size_t round) const; // .f void resetCounters(size_t nRounds); double sensitivity(size_t idx) const; // .f double specificity(double age) const; // .f void vary(std::ostream &out); // see Growth::vary() // .f protected: StringVect &base(); // .f void doseBase(VSDvect &dose); void extractBase(VSD &dest); // used by MRI and CT // ageGroup and specificity // sets keywords: [2]: Specificity // [3]: ageGroup void specificityBase(AgeGroupVSDvect &dest); private: // vDose members return 0 virtual VSDvect const *vDose() const; // 1 virtual double vDose(uint16_t idx) const; // 2 virtual void vInsert(std::ostream &out) const = 0; virtual double vSensitivity(size_t idx) const = 0; virtual double vSpecificity(double age) const = 0; virtual void vVary(std::ostream &out) = 0; static void outSpec(std::ostream &out, char const *prefix, unsigned fill, AgeGroupVSD const &spec); }; // protected void costBase(StringVect &keywords); sets d_cost from "costs:" #include "modbase.f" #endif simrisc-16.02.00/modbase/frame0000664000175000017500000000006414665030471015034 0ustar frankfrank//#define XERR #include "modbase.ih" ModBase:: { } simrisc-16.02.00/modbase/modbase.f0000664000175000017500000000143014665030471015576 0ustar frankfrankinline StringVect &ModBase::base() { return d_base; } inline size_t ModBase::cost() const { return d_cost; } inline void ModBase::count(size_t round) { ++d_count[round]; } inline bool ModBase::defined() const { return d_defined; } inline void ModBase::falsePositive() { ++d_falsePositives; } inline std::string const &ModBase::id() const { return d_id; } inline double ModBase::dose(uint16_t idx) const { return vDose(idx); } inline size_t ModBase::operator[](size_t idx) const { return d_count[idx]; } inline double ModBase::sensitivity(size_t idx) const { return vSensitivity(idx); } inline double ModBase::specificity(double age) const { return vSpecificity(age); } inline void ModBase::vary(std::ostream &out) { return vVary(out); } simrisc-16.02.00/modifications0000664000175000017500000000316214665030471015162 0ustar frankfrank3: cumDeathProbs are not read from file, but are hard-coded in Loop::s_cumDeathProb. 4. The costs are not read from file anymore, but are specified in the configuration file at 'costs:', reading values for, resp.: cost_XM cost_Tomo cost_<2 cost_2-5 cost_>5 cost_biop discount (all ints, except for the last, a double. 5. Cf calculateSize: when computing _volume = _startVolume * //Exponential growth of tumorvolume pow(2.0, ((womenAge - _preclinAge) / _doublingTimeYear)); using floats, then for values, resp. 65.4499, 40, 26.1368 and 0.109376 _volume is 'inf' when using floats, but in fact (using doubles) it is 9.34711e+39. -> the new version uses doubles, and avoids floats. 6. loop/loop.h: // NOTE: in the orig. source density NRs are used: 1..4 // here density INDICES are usd: 0..3 // but when writing the data file (e.g., data-0.txt, original // name e.g., women-test-i0.txt) a + 1 correction is // currently applied bool use(size_t modality); //+ use this modality See also loop/sensitivity1.cc loop/results.cc and densities/biradsidx.cc 7: the 'no tumor' age is computed as -1, not as 0 as reported in the original program. See tumor/results.cc. Also see tumor/reset: when there is no tumor all ages are reported as -1, and start volume and self-detect (diameter) are set to 0 8. To synchronize the output of the current and original program, tumor diameters exceeding 1000 mm. are reported as 1001 mm (used to be 'inf') (tumor/results.cc) simrisc-16.02.00/mri/0000775000175000017500000000000014665030471013174 5ustar frankfranksimrisc-16.02.00/mri/vspecificity.cc0000664000175000017500000000016314665030471016204 0ustar frankfrank//#define XERR #include "mri.ih" double MRI::vSpecificity(double age) const { return d_specificity.value(); } simrisc-16.02.00/mri/setspecificity.cc0000664000175000017500000000015514665030471016533 0ustar frankfrank//#define XERR #include "mri.ih" void MRI::setSpecificity() { extract("specificity:", d_specificity); } simrisc-16.02.00/mri/setsensitivity.cc0000664000175000017500000000015514665030471016612 0ustar frankfrank//#define XERR #include "mri.ih" void MRI::setSensitivity() { extract("sensitivity:", d_sensitivity); } simrisc-16.02.00/mri/icmconf0000664000175000017500000000007214665030471014534 0ustar frankfrank#define LIBRARY "mri" #include "../icmconf.lib" simrisc-16.02.00/mri/extract.cc0000664000175000017500000000021414665030471015152 0ustar frankfrank//#define XERR #include "mri.ih" void MRI::extract(char const *keyword, VSD &dest) { base().back() = keyword; extractBase(dest); } simrisc-16.02.00/mri/mri.h0000664000175000017500000000144714665030471014142 0ustar frankfrank#ifndef INCLUDED_MRI_ #define INCLUDED_MRI_ #include #include "../vsd/vsd.h" #include "../modbase/modbase.h" // MRI: // costs: 280 // # value spread distr. // sensitivity: .94 0.005 Normal // specificity: .95 0.005 Normal class MRI: public ModBase { VSD d_sensitivity; VSD d_specificity; public: MRI(); ~MRI() override; private: void setSensitivity(); void setSpecificity(); void vInsert(std::ostream &out) const override; double vSensitivity(size_t idx) const override; double vSpecificity(double age) const override; void vVary(std::ostream &out) override; void extract(char const *keyword, VSD &dest); }; #endif simrisc-16.02.00/mri/destructor.cc0000664000175000017500000000006114665030471015676 0ustar frankfrank//#define XERR #include "mri.ih" MRI::~MRI() {} simrisc-16.02.00/mri/vinsert.cc0000664000175000017500000000036714665030471015203 0ustar frankfrank//#define XERR #include "mri.ih" void MRI::vInsert(ostream &out) const { VSD::fmt(0, 2, 0, 3); out << setw(4) << ' ' << "sensitivity: " << d_sensitivity << '\n'; out << setw(4) << ' ' << "specificity: " << d_specificity << '\n'; } simrisc-16.02.00/mri/mri.ih0000664000175000017500000000025314665030471014305 0ustar frankfrank#include "mri.h" #include "../xerr/xerr.ih" #include #include "../globals/globals.h" #include "../parser/parser.h" #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/mri/mri1.cc0000664000175000017500000000057114665030471014356 0ustar frankfrank//#define XERR #include "mri.ih" // configfile lines: // MRI cost: 280 // sensitivity: .94 0.005 Normal // specificity: .95 0.005 Normal MRI::MRI() : ModBase("MRI"), d_sensitivity(VARY_PROB), d_specificity(VARY_PROB) { if (not defined()) return; setSpecificity(); setSensitivity(); } simrisc-16.02.00/mri/frame0000664000175000017500000000005414665030471014210 0ustar frankfrank//#define XERR #include "mri.ih" MRI:: { } simrisc-16.02.00/mri/vsensitivity.cc0000664000175000017500000000016314665030471016263 0ustar frankfrank//#define XERR #include "mri.ih" double MRI::vSensitivity(size_t idx) const { return d_sensitivity.value(); } simrisc-16.02.00/mri/vvary.cc0000664000175000017500000000044014665030471014650 0ustar frankfrank//#define XERR #include "mri.ih" // override void MRI::vVary(ostream &out) { d_sensitivity.vary(); d_specificity.vary(); out << " MRI:\n" " sensitivity: "; d_sensitivity.showVary(out); out << " specificity: "; d_specificity.showVary(out); } simrisc-16.02.00/options/0000775000175000017500000000000014665030471014100 5ustar frankfranksimrisc-16.02.00/options/unused0000664000175000017500000000052514665030471015330 0ustar frankfrank// std::string d_cumTotalriskFile; // std::string const &totalriskFile() const; // .h // only used in Simulator, but there it's commented out // std::string const &deathProb() const; // .h //inline std::string const &Options::totalriskFile() const //{ // return d_cumTotalriskFile; //} simrisc-16.02.00/options/instance.cc0000664000175000017500000000031414665030471016211 0ustar frankfrank//#define XERR #include "options.ih" // static Options &Options::instance() { if (s_options == 0) s_options = new Options; // Note: not deleted at end of program return *s_options; } simrisc-16.02.00/options/data.cc0000664000175000017500000000061114665030471015316 0ustar frankfrank//#define XERR #include "options.ih" Options *Options::s_options; char const Options::s_base[] = "./"; char const Options::s_config[] = "~/.config/simrisc"; unordered_map Options::s_fileName { { 'D', "+data-$.txt" }, { 'P', "" }, { 'R', "+rounds-$.txt" }, { 'S', "+sensitivity.txt" }, { 's', "+spread-$.txt" }, }; simrisc-16.02.00/options/logoption.cc0000664000175000017500000000064614665030471016427 0ustar frankfrank#define XERR #include "options.ih" void Options::logOption(string const &value) { istringstream in{ value }; unsigned begin; unsigned end; string fname; string ignored; if (not (in >> begin >> end >> fname)) throw Exception{} << "--log '" << value << "': specification error"; in >> ignored; // may remain empty g_log.set(begin, end, fname, ignored); } simrisc-16.02.00/options/replaceplus.cc0000664000175000017500000000031214665030471016722 0ustar frankfrank//#define XERR #include "options.ih" void Options::replacePlus(string &fname) { if (not fname.empty() and fname.front() == '+') fname.replace(0, 1 + (fname[1] == '/'), d_base[ANALYSIS]); } simrisc-16.02.00/options/options1.cc0000664000175000017500000000175614665030471016174 0ustar frankfrank#define XERR #include "options.ih" Options::Options() : d_arg(Arg::instance()), d_naturalDeathAge(END_AGE), d_tumorAge(END_AGE), d_lastCase(0) { imsg.off(); if (char *cp = getenv("HOME"); cp) d_home = cp; if (d_arg.option('V')) { d_specified[STARTUP] += 'V'; imsg.on(); } configOption(); // set d_config[STARTUP] baseOption(); fileOption(d_dataFile, 'D'); fileOption(d_roundsFile, 'R'); fileOption(d_sensitivityFile, 'S'); fileOption(d_spreadFile, 's'); fileOption(d_parametersFile, 'P'); string value; if (d_arg.option(&value, 'a')) deathAgeOption(value); if (d_arg.option(&value, 'd')) cumDeathOption(value); if (d_arg.option(&value, 't')) tumorAgeOption(value); if (d_arg.option(&value, 'l')) lastCaseOption(value); if (d_arg.option(&value, "log")) logOption(value); setSimulationType(); // 'c' } simrisc-16.02.00/options/lastcaseoption.cc0000664000175000017500000000022214665030471017433 0ustar frankfrank//#define XERR #include "options.ih" void Options::lastCaseOption(string const &value) { d_specified[STARTUP] += 'l'; lastCase(value); } simrisc-16.02.00/options/tumorageoption.cc0000664000175000017500000000022214665030471017457 0ustar frankfrank//#define XERR #include "options.ih" void Options::tumorAgeOption(string const &value) { d_specified[STARTUP] += 't'; tumorAge(value); } simrisc-16.02.00/options/activate.cc0000664000175000017500000000136314665030471016212 0ustar frankfrank#define XERR #include "options.ih" void Options::activate() { // activate the options, to be used in the analyses. // d_specified contains the single-letter option characters // of the options that were specified on the command-line d_specified[ANALYSIS] = d_specified[STARTUP]; d_base[ANALYSIS] = d_base[STARTUP]; d_cancer[ANALYSIS] = d_cancer[STARTUP]; d_config[ANALYSIS] = d_config[STARTUP]; d_dataFile[ANALYSIS] = d_dataFile[STARTUP]; d_parametersFile[ANALYSIS] = d_parametersFile[STARTUP]; d_roundsFile[ANALYSIS] = d_roundsFile[STARTUP]; d_sensitivityFile[ANALYSIS] = d_sensitivityFile[STARTUP]; d_spreadFile[ANALYSIS] = d_spreadFile[STARTUP]; } simrisc-16.02.00/options/setsimulationtype.cc0000664000175000017500000000126114665030471020211 0ustar frankfrank#define XERR #include "options.ih" void Options::setSimulationType() // handle -c option { string value; // not specified -> if (not d_arg.option(&value, 'c')) // reconfigurable d_cancer[STARTUP] = Globals::defaultSimType(); // default: BREAST else if (Globals::findSimType(value)) { d_specified[STARTUP] += 'c'; // option -c was d_cancer[STARTUP] = value; // specified } else throw Exception{} << "specify '--cancer breast', " "'--cancer male', or '--cancer female'"; } simrisc-16.02.00/options/tumorage.cc0000664000175000017500000000021714665030471016232 0ustar frankfrank//#define XERR #include "options.ih" void Options::tumorAge(string const &value) { d_specificAges = true; d_tumorAge = stod(value); } simrisc-16.02.00/options/alter.cc0000664000175000017500000000306614665030471015523 0ustar frankfrank//#define XERR #include "options.ih" bool Options::alter(int optChar, std::string const &value) { // if a command-line option was specified, then do not alter // options in 'Analysis: specifications // if (d_specified[ANALYSIS].find(optChar) != string::npos) return false; d_specified[ANALYSIS] += optChar; switch (optChar) // these options can be altered { // they set the [1] parameters case 'a': deathAge(value); break; case 'B': d_base[ANALYSIS] = value; break; case 'c': d_cancer[ANALYSIS] = value; break; case 'C': d_config[ANALYSIS] = value; break; case 'D': d_dataFile[ANALYSIS] = value; break; case 'l': lastCase(value); break; case 'o': throw Exception{} << "`one-scenario' cannot be used in scenario specifications"; break; case 'P': d_parametersFile[ANALYSIS] = value; break; case 'R': d_roundsFile[ANALYSIS] = value; break; case 'S': d_sensitivityFile[ANALYSIS] = value; break; case 's': d_spreadFile[ANALYSIS] = value; break; case 't': tumorAge(value); break; case 'V': d_specified[ANALYSIS] += 'V'; imsg.on(); break; } return true; } simrisc-16.02.00/options/actualize.cc0000664000175000017500000000121614665030471016370 0ustar frankfrank#define XERR #include "options.ih" void Options::actualize() // transform ~ and + { d_specificAges = d_specified[STARTUP].find("at") != string::npos; replaceHome(d_config[ANALYSIS]); replaceHome(d_cumDeath); setBase(); replacePlus(d_cumDeath); replacePlus(d_dataFile[ANALYSIS]); replacePlus(d_parametersFile[ANALYSIS]); replacePlus(d_roundsFile[ANALYSIS]); replacePlus(d_sensitivityFile[ANALYSIS]); replacePlus(d_spreadFile[ANALYSIS]); Globals::setSimType(d_cancer[ANALYSIS]); // set the cancer type conflictCheck(); // prevent conflicting options } simrisc-16.02.00/options/configoption.cc0000664000175000017500000000044214665030471017105 0ustar frankfrank//#define XERR #include "options.ih" void Options::configOption() { string value; if (d_arg.option(&value, 'C')) d_specified[STARTUP] += 'C'; else value = s_config; d_config[STARTUP] = value; imsg << "using configuration file `" << value << "'\n"; } simrisc-16.02.00/options/fixednaturaldeathage.cc0000664000175000017500000000030414665030471020555 0ustar frankfrank//#define XERR #include "options.ih" void Options::fixedNaturalDeathAge(double &deathAge) const { if (d_specified[ANALYSIS].find('a') != string::npos) deathAge = d_naturalDeathAge; } simrisc-16.02.00/options/deathageoption.cc0000664000175000017500000000022214665030471017376 0ustar frankfrank//#define XERR #include "options.ih" void Options::deathAgeOption(string const &value) { d_specified[STARTUP] += 'a'; deathAge(value); } simrisc-16.02.00/options/lastcase.cc0000664000175000017500000000022314665030471016203 0ustar frankfrank#define XERR #include "options.ih" void Options::lastCase(string const &value) { // xerr("value: " << value); d_lastCase = stoul(value); } simrisc-16.02.00/options/icmconf0000664000175000017500000000007614665030471015444 0ustar frankfrank#define LIBRARY "options" #include "../icmconf.lib" simrisc-16.02.00/options/options.h0000664000175000017500000001042314665030471015744 0ustar frankfrank#ifndef INCLUDED_OPTIONS_ #define INCLUDED_OPTIONS_ #include #include #include #include "../enums/enums.h" namespace FBB { class Arg; } class Options { enum Specified { STARTUP, ANALYSIS }; FBB::Arg const &d_arg; std::string d_cumDeath; // file containing the cum. death props. std::string d_home; // current 'HOME' directory std::string d_specified[2]; // specified options: // [0]: command-line, [1]: analysis bool d_specificAges = false; double d_naturalDeathAge; // single run, subject age double d_tumorAge; // single run, tumor self-detect age size_t d_lastCase; // compute until d_lastCase, report // d_lastCase's results std::string d_base[2]; // guaranteed to end in '/' // [0]: as specified, [1]: as used // in Analysis: sections std::string d_cancer[2]; // [0]: as specified, [1]: as used // in Analysis: sections std::string d_config[2]; // [0]: as specified, [1]: as used // in Analysis: sections std::string d_dataFile[2]; // [0]: as specified, [1]: as used // after replacing + by base std::string d_parametersFile[2]; std::string d_roundsFile[2]; std::string d_sensitivityFile[2]; std::string d_spreadFile[2]; static char const s_base[]; static char const s_config[]; static std::unordered_map s_fileName; static Options *s_options; public: static Options &instance(); Options(Options const &other) = delete; void reset(); // reset options to the // default/command-line values std::string const &base() const; // .f std::string const &configFile() const; // .f std::string const &cumDeathFile() const; // .f std::string const ¶metersFile() const; // .f std::string const &dataFile() const; // .f std::string const &roundsFile() const; // .f std::string const &sensitivityFile() const; // .f std::string const &spreadFile() const; // .f bool specificAges() const; // .f void fixedNaturalDeathAge(double &deathAge) const; void fixedTumorAge(double &tumorAge) const; size_t lastCase() const; // .f void activate(); // [ANALYSIS] = [STARTUP] // try to change this option's // value in this analysis bool alter(int optChar, std::string const &value); void actualize(); // transform ~ and + bool tnm() const; // --tnm was specified private: Options(); void baseOption(); void configOption(); void cumDeathOption(std::string const &value); void conflictCheck() const; // prevent conflicting options void deathAge(std::string const &value); void deathAgeOption(std::string const &value); void fileOption(std::string *dest, int option); void lastCase(std::string const &value); void lastCaseOption(std::string const &value); void logOption(std::string const &value); // xxx[STARTUP]: as specified, xxx[ANALYSIS]: as used void replaceHome(std::string &path); void replacePlus(std::string &fname); void setBase(); void setSimulationType(); // handle the -c option void tumorAge(std::string const &value); void tumorAgeOption(std::string const &value); // dest[0]: as specified, dest[1]: as used // void setFile(std::string *dest, std::string const &newValue, // 2 // int option); }; #include "options.f" #endif simrisc-16.02.00/options/replacehome.cc0000664000175000017500000000051414665030471016673 0ustar frankfrank//#define XERR #include "options.ih" void Options::replaceHome(string &path) { static bool warned = false; if (not path.empty() and path.front() == '~') path.replace(0, 1, d_home); if (d_home.empty() and not warned) { warned = true; wmsg << "No HOME environment variable found\n"; } } simrisc-16.02.00/options/options.ih0000664000175000017500000000041214665030471016112 0ustar frankfrank#include "options.h" #include "../xerr/xerr.ih" #include #include #include #include #include "../globals/globals.h" #include "../log/log.h" #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/options/options.f0000664000175000017500000000156114665030471015745 0ustar frankfrankinline std::string const &Options::base() const { return d_base[ANALYSIS]; } inline std::string const &Options::configFile() const { return d_config[ANALYSIS]; } inline std::string const &Options::cumDeathFile() const { return d_cumDeath; } inline size_t Options::lastCase() const { return d_lastCase; } inline std::string const &Options::parametersFile() const { return d_parametersFile[ANALYSIS]; } inline std::string const &Options::dataFile() const { return d_dataFile[ANALYSIS]; } inline std::string const &Options::roundsFile() const { return d_roundsFile[ANALYSIS]; } inline std::string const &Options::sensitivityFile() const { return d_sensitivityFile[ANALYSIS]; } inline std::string const &Options::spreadFile() const { return d_spreadFile[ANALYSIS]; } inline bool Options::specificAges() const { return d_specificAges; } simrisc-16.02.00/options/tnm.cc0000664000175000017500000000014214665030471015202 0ustar frankfrank//#define XERR #include "options.ih" bool Options::tnm() const { return d_arg.option('T'); } simrisc-16.02.00/options/setbase.cc0000664000175000017500000000025514665030471016037 0ustar frankfrank#define XERR #include "options.ih" void Options::setBase() { replaceHome(d_base[ANALYSIS]); if (d_base[ANALYSIS].back() != '/') d_base[ANALYSIS] += '/'; } simrisc-16.02.00/options/baseoption.cc0000664000175000017500000000054514665030471016556 0ustar frankfrank//#define XERR #include "options.ih" void Options::baseOption() { string value; if (d_arg.option(&value, 'B')) // get the option's value d_specified[STARTUP] += 'B'; else value = s_base; // or use the default d_base[STARTUP] = value; imsg << "using base directory `" << value << "'\n"; } simrisc-16.02.00/options/deathage.cc0000664000175000017500000000022614665030471016151 0ustar frankfrank//#define XERR #include "options.ih" void Options::deathAge(string const &value) { d_specificAges = true; d_naturalDeathAge = stod(value); } simrisc-16.02.00/options/cumdeathoption.cc0000664000175000017500000000022514665030471017431 0ustar frankfrank//#define XERR #include "options.ih" void Options::cumDeathOption(string const &value) { d_specified[STARTUP] += 'd'; d_cumDeath = value; } simrisc-16.02.00/options/conflictcheck.cc0000664000175000017500000000076514665030471017216 0ustar frankfrank//#define XERR #include "options.ih" void Options::conflictCheck() const { size_t count = (d_specified[ANALYSIS].find('a') != string::npos) + (d_specified[ANALYSIS].find('t') != string::npos); if (count == 1) throw Exception{} << "Options --death-age and --tumor-age " "must both be specified"; if (count != 0 and d_specified[ANALYSIS].find('c') != string::npos) throw Exception{} << "--case and --death_age are mutually exclusive"; } simrisc-16.02.00/options/frame0000664000175000017500000000006414665030471015115 0ustar frankfrank//#define XERR #include "options.ih" Options:: { } simrisc-16.02.00/options/fixedtumorage.cc0000664000175000017500000000026614665030471017256 0ustar frankfrank//#define XERR #include "options.ih" void Options::fixedTumorAge(double &tumorAge) const { if (d_specified[ANALYSIS].find('t') != string::npos) tumorAge = d_tumorAge; } simrisc-16.02.00/options/fileoption.cc0000664000175000017500000000115514665030471016561 0ustar frankfrank#define XERR #include "options.ih" // dest[0] (STARTUP): as specified, dest[1] (ANALYSIS): as used void Options::fileOption(string *dest, int option) { if (not d_arg.option(&dest[STARTUP], option)) dest[STARTUP] = s_fileName[option]; // use the default if not spec'd else { d_specified[STARTUP] += option; if (dest[STARTUP] == "!") // specified as `!': do not use dest[STARTUP].clear(); else if (option == 'P') { if (dest[STARTUP].find('/') == string::npos) dest[STARTUP].insert(0, 1, '+'); } } } simrisc-16.02.00/params/0000775000175000017500000000000014665030471013670 5ustar frankfranksimrisc-16.02.00/params/data.cc0000664000175000017500000000020214665030471015102 0ustar frankfrank//#define XERR #include "params.ih" StringVect const Params::s_label { Globals::label(BREAST), "BRCA1:", "BRCA2:" }; simrisc-16.02.00/params/params.h0000664000175000017500000000361114665030471015325 0ustar frankfrank#ifndef INCLUDED_PARAMS_ #define INCLUDED_PARAMS_ // Params is the base class for VSDParams and for TableParams. // // VSDParams handles the computation of the tumor risk values based on // lifetimeRisk, meanAge, and stdDev // // TableParams handles the computation of the tumor risk values based on the // riskTable values // // The base class defines member // virtual void cptTumorRisk(DoubleVect &ageValues) // which calls the overriding member from the derived class. // // The vector d_params contains unique_ptr, so for each defined // Incidence type the appropriate ageValues is computed #include "../typedefs/typedefs.h" class Params { unsigned d_idx; // see setIncidence (.2): this is the // index used in the d_params vector // set to -1 if prob. setting fails in double d_prob = 1; // the constructor static StringVect const s_label; // labels of the BC incidence modes public: Params(StringVect &base, size_t idx, bool setProb); virtual ~Params(); void cptTumorRisk(DoubleVect &ageValues); double prob() const; // .f void vary(std::ostream &out); // .f void writeParameters(std::ostream &out); static std::string const &label(size_t idx); // .f static size_t nLabels(); // .f protected: void invalid(); // sets d_prob = -1 // .f std::string const &label() const; // .f private: void virtual v_cptTumorRisk(DoubleVect &ageValues) = 0; void virtual v_vary(std::ostream &out) = 0; void virtual v_writeParameters(std::ostream &out) const = 0; }; #include "params.f" #endif simrisc-16.02.00/params/params.ih0000664000175000017500000000017114665030471015474 0ustar frankfrank#include "params.h" #include "../xerr/xerr.ih" #include "../parser/parser.h" #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/params/params1.cc0000664000175000017500000000046314665030471015546 0ustar frankfrank#define XERR #include "params.ih" Params::Params(StringVect &base, size_t idx, bool setProb) : d_idx(idx) { if (setProb) { base.back() = "probability:"; if (not Parser::proportion(base, d_prob)) d_prob = -1; // prob-setting failed } } simrisc-16.02.00/params/icmconf0000664000175000017500000000015614665030471015233 0ustar frankfrank#define LIBRARY "params" //#define SPCH "-k xerr/xerr.ih" #include "../icmconf.lib" simrisc-16.02.00/params/writeparameters.cc0000664000175000017500000000071414665030471017417 0ustar frankfrank#define XERR #include "params.ih" void Params::writeParameters(std::ostream &out) { Globals::setPrecision(out, 1) << setw(6) << ' ' << label() << '\n' << setw(8) << ' ' << "probability: " << prob() << ( Globals::isZero(prob()) ? " (carrier ignored)\n" : "\n" ); v_writeParameters(out); } simrisc-16.02.00/params/destructor.cc0000664000175000017500000000007014665030471016372 0ustar frankfrank#define XERR #include "params.ih" Params::~Params() {} simrisc-16.02.00/params/params.f0000664000175000017500000000100714665030471015320 0ustar frankfrankinline void Params::cptTumorRisk(DoubleVect &ageValues) { v_cptTumorRisk(ageValues); } inline double Params::prob() const { return d_prob; } inline void Params::invalid() { d_prob = -1; } inline void Params:: vary(std::ostream &out) { v_vary(out); } inline std::string const &Params::label() const { return s_label[d_idx]; } // static inline std::string const &Params::label(size_t idx) { return s_label[idx]; } // static inline size_t Params::nLabels() { return s_label.size(); } simrisc-16.02.00/params/frame0000664000175000017500000000006014665030471014701 0ustar frankfrank#define XERR #include "params.ih" Params:: { } simrisc-16.02.00/parser/0000775000175000017500000000000014665030471013701 5ustar frankfranksimrisc-16.02.00/parser/parser.h0000664000175000017500000001637414665030471015361 0ustar frankfrank#ifndef INCLUDED_PARSER_ #define INCLUDED_PARSER_ #include #include #include #include #include #include "../extractable/extractable.h" //#include "../unsignedcastable/unsignedcastable.h" #include "../typedefs/typedefs.h" #include "../err/err.h" #include "../globals/globals.h" #include "../vsd/vsd.h" class ConfigLines; struct Parser { struct OptionInfo { std::string name; std::string value; uint16_t lineNr; }; using OptionsVect = std::vector; private: using Map = std::unordered_map; // each element holds the specs LineInfoVect d_lines; // of one series of keywords Map d_map; static Map s_map; public: class Lines { friend class Parser; unsigned d_size; // initial size LineInfoVect::const_iterator d_iter; // first and last elements LineInfoVect::const_iterator d_end; // of a selected vector public: // by repeated calls get all lines, // from the first to the last until // 0 is returned LineInfo const *get(); // linesget.cc unsigned size() const; operator bool() const; // size() != 0 private: // no lines found Lines(LineInfoVect const &lines); // lineslines1.cc // >= 1 line found // lineslines2.cc Lines(LineInfoVect::const_iterator const &begin, LineInfoVect::const_iterator const &end); Lines(Lines const &other) = default; LineInfoVect::const_iterator begin() const; // .ih LineInfoVect::const_iterator end() const; // .ih }; using MapValue = Map::value_type; Parser(); // 1. Parser(Map &&tmp); // 2. ~Parser(); // any number (>= 1) lines is OK static Lines any(StringVect const &keywords); // extract 'dest' variables from lines.get()->tail // returns 'good' if ok, else if no lines then // eof() else fail() + error msg template // .f static std::istringstream extract(Lines &&ines, Types &...dest); // same as 1.f, but LineInfo is already available // extracts from line.tail template // .f static std::istringstream extract(LineInfo const &line, Types &...dest); // extract 'size' 'dest' elements from lines.get()->tail // return values as with extract1.f template // .f static std::istringstream extract(Lines &&lines, Type *dest, size_t size); // extract 'dest' values from one configuration line at 'keywords' template // .f static std::istringstream extract(StringVect const &keywords, Types &...dest); static bool hasSection(StringVect const &keywords); // analysis file void load(std::istream &in, uint16_t startLineNr, // 1. StringVect &labels, OptionsVect &options); void load(std::string const &fname); // configuration file 2. // requires specs like Survival: // type: a .00004475 .000004392 Normal // type: b 1.85867 .0420 Normal static VSDvect VSDparameters( // 1.cc VaryType varyType, StringVect const &keywords, std::initializer_list const &required); // exactly 1 configuration line is required static Lines one(StringVect const &keywords); // requires one line specs like Mammo: // m: .136 .136 .136 .136 static VSDvect VSDparameters( // 2.cc VaryType varyType, StringVect const &keywords, size_t nRequired); // exactly 1 line is required. // .f static bool nonNegative(StringVect const &keywords, double &dest); template // .f static bool nonNegative(StringVect const &keywords, Type &dest); // extract exactly one value associated with keywords template // .f static bool one(StringVect const &keywords, Type &dest); static bool positive(StringVect const &keywords, double &dest); // .f // exactly 1 line is required static bool proportion(StringVect const &keywords, double &dest); private: // add the next parser line to the // appropriate map-section static void addConfigLine(std::vector &mapPtrVect, ConfigLines &lines, ParamsSrc src); static bool atLeast(double minimum, StringVect const &keywords, double &dest); static std::string checkRedo(ConfigLines &configLine); // deepest nesting level in the map static bool endPoint(Map::value_type const &mapValue); template // .f static bool extract(std::istream &in, Type &first, Types &...more); static bool extract(std::istream &in); // .f // define d_lines[0] // at s_map's deepest static void initLineInfoVects(Map &map); // nesting levels static LineInfoVect const &keywordsLines(StringVect const &keywords); static Lines lines(StringVect const &keywords); // 1. static void locateError(std::vector &mapPtrVect, ConfigLines &lines, ParamsSrc src); static std::string sectionList(StringVect const &keywords); static void setLabels(ConfigLines &parser, StringVect &labels); static void setOptions(ConfigLines &parser, OptionsVect &options); static void rmLineInfoVectors(Map &map); }; #include "parser.f" #endif simrisc-16.02.00/parser/parser1.cc0000664000175000017500000000037314665030471015570 0ustar frankfrank//#define XERR #include "parser.ih" Parser::Parser() { initLineInfoVects(s_map); // define d_lines[0] // at s_map's deepest // nesting levels } simrisc-16.02.00/parser/addlineinfovectors.cc0000664000175000017500000000000014665030471020060 0ustar frankfranksimrisc-16.02.00/parser/one.cc0000664000175000017500000000045214665030471014772 0ustar frankfrank//#define XERR #include "parser.ih" // static Parser::Lines Parser::one(StringVect const &keywords) { Lines lines = any(keywords); if (lines.size() > 1) Err::multiplySpecified(lines.begin(), lines.end(), sectionList(keywords)); return lines; } simrisc-16.02.00/parser/parser.f0000664000175000017500000000473514665030471015355 0ustar frankfrank// static template std::istringstream Parser::extract(StringVect const &keywords, Types &...dest) { return extract(one(keywords), std::forward(dest) ...); } // static template std::istringstream Parser::extract(Lines &&lines, Types &...dest) { if (lines) return extract(*lines.get(), std::forward(dest) ...); std::istringstream in; in.setstate(std::ios::eofbit); return in; } // static template std::istringstream Parser::extract(LineInfo const &line, Types &...dest) { std::istringstream in{ line.tail }; if (not extract(in, std::forward(dest) ...)) { in.setstate(std::ios::failbit); Err::specification(); } return in; } // static template std::istringstream Parser::extract(Lines &&lines, Type *dest, size_t size) { std::istringstream in; if (not lines) { in.setstate(std::ios::eofbit); return in; } in.str(lines.get()->tail); for (; size--; ++dest) // fill 'size' elements starting at dest { if (not (in >> *dest)) { in.setstate(std::ios::failbit); Err::specification(); break; } } return in; } // static template bool Parser::extract(std::istream &in, Type &first, Types &...more) { in >> first; return extract(in, std::forward(more)...); } inline bool Parser::extract(std::istream &in) { return static_cast(in); } // static template bool Parser::one(StringVect const &base, Type &dest) { return static_cast(extract(one(base), dest)); } //template //static bool nonNegative(StringVect const &keywords, Types &...dest) //{ // return extract(one(keywords)->get(), std::forward(dest) ...); //} inline bool Parser::nonNegative(StringVect const &base, double &dest) { return atLeast(0, base, dest); } template bool Parser::nonNegative(StringVect const &base, Type &dest) { double tmp; bool ret = nonNegative(base, tmp); dest = tmp; return ret; } // static inline bool Parser::positive(StringVect const &base, double &dest) { return atLeast(Globals::WEAK_TOLERANCE, base, dest); } inline unsigned Parser::Lines::size() const { return d_size; } inline Parser::Lines::operator bool() const { return d_size != 0; } simrisc-16.02.00/parser/data.cc0000664000175000017500000002511714665030471015127 0ustar frankfrank//#define XERR #include "parser.ih" // In the configuration file specifications are just lines. Each keyword // must therefore be searched via a unique path. So searching for // e.g., { 'costs:' } returns multiple hits, but searching for // { 'Scenario:', 'costs:' } returns only one hit // Named MapValues must be used only once. E.g., for Mammo 'Dose' is // specified by mdose, for Tomo it is specified by tdose. // final "named" keys are always unique and can be specified at MapValue // specifications. // see also the description at the end of this file namespace { //#Scenario: Parser::MapValue spread { "spread:", new Parser }; Parser::MapValue iterations { "iterations:", new Parser }; Parser::MapValue generator { "generator:", new Parser }; Parser::MapValue seed { "seed:", new Parser }; Parser::MapValue cases { "cases:", new Parser }; Parser::MapValue death { "death:", new Parser }; //#Costs: Parser::MapValue diameters { "diameters:", new Parser }; //#Discount: Parser::MapValue age { "age:", new Parser }; Parser::MapValue proport { "proportion:", new Parser }; Parser::MapValue biop // only used for BC { "biop:", new Parser }; //BreastDensities: - required [ cf. densities/ ] // Parser::MapValue breastDensities { "BreastDensities:", new Parser { { // map {"ageGroup:", new Parser}, } } }; //#Modalities: // only within Mammo: (for which Mammo: therefore is optional): Parser::MapValue betaMap { "beta:", new Parser }; //x Parser::MapValue systematicError //x { //x "systematicError:", //x new Parser //x }; //x //x Parser::MapValue m //x { //x "m:", //x new Parser //x }; Parser::MapValue mammo { "Mammo:", new Parser { { {"costs:", new Parser }, {"dose:", new Parser }, {"specificity:", new Parser }, {"m:", new Parser }, {"beta:", new Parser }, {"systematicError:", new Parser }, } } }; Parser::MapValue tomo { "Tomo:", new Parser { { {"costs:", new Parser }, {"dose:", new Parser }, {"sensitivity:", new Parser }, {"specificity:", new Parser }, } } }; Parser::MapValue mri { "MRI:", new Parser { { {"costs:", new Parser }, {"sensitivity:", new Parser }, {"specificity:", new Parser }, } } }; Parser::MapValue ct { "CT:", new Parser { { {"costs:", new Parser }, // set by costs/costs1.cc {"dose:", new Parser }, {"sensitivity:", new Parser }, {"specificity:", new Parser }, } } }; //#Screening: Parser::MapValue roundMap { "round:", new Parser }; Parser::MapValue attendanceRate { "attendanceRate:", new Parser }; //#Tumor: //# only within Beir7: (for which Beir7: therefore is optional): //x Parser::MapValue male //x { //x "male:", //x new Parser //x }; //x //x Parser::MapValue female //x { //x "female:", //x new Parser //x }; Parser::MapValue beir7 { "Beir7:", new Parser { { // map { "breast:", new Parser }, { "male:", new Parser }, { "female:", new Parser }, } } }; //# only within Growth: (for which Growth: therefore is optional): //x Parser::MapValue start //x { //x "start:", //x new Parser //x }; //#DoublingTime: only used in Growth, therefore optional Parser::MapValue groDoublingTime { "DoublingTime:", new Parser { { {"ageGroup:", new Parser}, {"lung:", new Parser}, } } }; Parser::MapValue growth { "Growth:", new Parser { { {"breast:", new Parser }, {"lung:", new Parser }, {"start:", new Parser }, groDoublingTime, } } }; //#Incidence: with Tumor: - optional Parser::MapValue Male { Globals::label(MALE), new Parser { { {"riskTable:", new Parser }, {"lifetimeRisk:", new Parser }, {"meanAge:", new Parser }, {"stdDev:", new Parser }, } } }; Parser::MapValue Female { Globals::label(FEMALE), new Parser { { {"riskTable:", new Parser }, {"lifetimeRisk:", new Parser }, {"meanAge:", new Parser }, {"stdDev:", new Parser }, } } }; Parser::MapValue Breast { Globals::label(BREAST), new Parser { { {"probability:", new Parser }, {"riskTable:", new Parser }, {"lifetimeRisk:", new Parser }, {"meanAge:", new Parser }, {"stdDev:", new Parser }, } } }; Parser::MapValue Brca1 { "BRCA1:", new Parser { { {"probability:", new Parser }, {"riskTable:", new Parser }, {"lifetimeRisk:", new Parser }, {"meanAge:", new Parser }, {"stdDev:", new Parser }, } } }; Parser::MapValue Brca2 { "BRCA2:", new Parser { { {"probability:", new Parser }, {"riskTable:", new Parser }, {"lifetimeRisk:", new Parser }, {"meanAge:", new Parser }, {"stdDev:", new Parser }, } } }; //#Survival: Parser::MapValue type { "type:", new Parser }; Parser::MapValue lung0 { "lung0:", new Parser }; Parser::MapValue lung1 { "lung1:", new Parser }; Parser::MapValue lung2 { "lung2:", new Parser }; Parser::MapValue lung3 { "lung3:", new Parser }; //#S3: Parser::MapValue prob { "prob:", new Parser }; Parser::MapValue bc { "bc:", new Parser }; } // anonymous namespace ends Parser::Map Parser::s_map // see the configuration file: these are the { // configurations for the top-level keywords // e.g., scenario here (above) and Scenario: // in the configuration file spread, iterations, generator, seed, cases, death, biop, diameters, proport, age, breastDensities, betaMap, // systematicError, // m, mammo, tomo, mri, ct, roundMap, attendanceRate, // male, // female, beir7, // start, growth, Male, Female, Breast, Brca1, Brca2, type, bc, lung0, lung1, lung2, lung3, prob, { "Scenario:", new Parser }, { "Costs:", new Parser }, { "Discount:", new Parser }, { "Modalities:", new Parser }, { "Screening:", new Parser }, { "Tumor:", new Parser }, { "Incidence:", new Parser }, { "Survival:", new Parser }, { "S3:", new Parser }, }; // By convention, keywords of lines mererly containing the keyword // start with capitals, and those followed by actual parameter values // start with lower-case letters // // MapValue definitions ending in 'new Parser' match one or more // configuration lines which are handled by the objects for which // the configuration line is intended. // // Parser specifications merely consisting of identifiers refer to // separately defined specifications // // E.g., // // Parser::MapValue modalities // { // "Modalities:", // new Parser // { // { // mammo, // tomo, // mri // } // } // }; // // specifies Modalities: as a keyword, followed by the definitions of mammo, // tomo, and mri. The 'tomo' MapValue is // // Parser::MapValue tomo // { // "Tomo:", // new Parser // { // { // {"costs:", new Parser }, // dose, // ... // } // } // }; // // and so 'costs:' is followed by >= 1 parameter values, but 'dose' is // specified separately: // // Parser::MapValue dose // { // "Dose:", // new Parser // { // { // {"bi-rad:", new Parser }, // } // } // }; // // The keyword 'Dose:' is on a line by itself, followed by lines starting // with 'bi-rad:' containing parameter specifications. // // What the parameter specifications are is determined by the objects parsing // the configuration lines. E.g., ageGroup: is specified as // ageGroup: 0 - 40: .961 .005 Normal // but also as: // ageGroup: 0 - 40: .05 .30 .48 .17 simrisc-16.02.00/parser/load2.cc0000664000175000017500000000053314665030471015212 0ustar frankfrank#define XERR #include "parser.ih" // load the configuration file 'fname' void Parser::load(string const &fname) { ConfigLines lines{ fname }; vector mapPtrVect{ &s_map }; // start loading at the top while (lines.get()) // add the parser lines addConfigLine(mapPtrVect, lines, CONFIGFILE); } simrisc-16.02.00/parser/sectionlist.cc0000664000175000017500000000057214665030471016554 0ustar frankfrank//#define XERR #include "parser.ih" // for keywords A, B, C // where is set to: C, in section B, in section A // static string Parser::sectionList(StringVect const &keywords) { string where = " `" + keywords.back() + '\''; for (auto iter = keywords.rbegin() + 1; iter != keywords.rend(); ++iter) where += ", in section " + *iter; return where; } simrisc-16.02.00/parser/proportion.cc0000664000175000017500000000041514665030471016423 0ustar frankfrank//#define XERR #include "parser.ih" bool Parser::proportion(StringVect const &base, double &dest) { if (extract(one(base), dest)) { if (Globals::proportion(dest)) return true; Err::range(); } dest = 0; return false; } simrisc-16.02.00/parser/data.cc.org0000664000175000017500000002020214665030471015703 0ustar frankfrank//#define XERR #include "parser.ih" // In the configuration file specifications are just lines. Each keyword // must therefore be searched via a unique path. So searching for // e.g., { 'costs:' } returns multiple hits, but searching for // { 'Scenario:', 'costs:' } returns only one hit // Named MapValues must be used only once. E.g., for Mammo 'Dose' is // specified by mdose, for Tomo it is specified by tdose. // final "named" keys are always unique and can be specified at MapValue // specifications. // see also the description at the end of this file namespace { Parser::MapValue scenario { "Scenario:", new Parser { { // map {"spread:", new Parser }, {"iterations:", new Parser }, {"generator:", new Parser }, {"seed:", new Parser }, {"cases:", new Parser }, {"death:", new Parser }, } } }; Parser::MapValue screening { "Screening:", new Parser { { // map {"round:", new Parser }, {"attendanceRate:", new Parser }, } } }; Parser::MapValue breastDensities { "BreastDensities:", new Parser { { // map {"ageGroup:", new Parser}, } } }; Parser::MapValue mammo { "Mammo:", new Parser { { {"beta:", new Parser }, {"costs:", new Parser }, {"dose:", new Parser }, {"m:", new Parser }, {"specificity:", new Parser }, {"systematicError:", new Parser }, } } }; Parser::MapValue tomo { "Tomo:", new Parser { { {"costs:", new Parser }, {"dose:", new Parser }, {"sensitivity:", new Parser }, {"specificity:", new Parser }, } } }; Parser::MapValue mri { "MRI:", new Parser { { {"costs:", new Parser }, {"sensitivity:", new Parser }, {"specificity:", new Parser }, } } }; Parser::MapValue ct { "CT:", new Parser { { {"costs:", new Parser }, {"dose:", new Parser }, {"sensitivity:", new Parser }, {"specificity:", new Parser }, } } }; Parser::MapValue modalities { "Modalities:", new Parser { { // map mammo, tomo, mri, ct } } }; Parser::MapValue incMale { Globals::label(MALE), new Parser { { {"riskTable:", new Parser }, {"lifetimeRisk:", new Parser }, {"meanAge:", new Parser }, {"stdDev:", new Parser }, } } }; Parser::MapValue incFemale { Globals::label(FEMALE), new Parser { { {"riskTable:", new Parser }, {"lifetimeRisk:", new Parser }, {"meanAge:", new Parser }, {"stdDev:", new Parser }, } } }; Parser::MapValue incBreast { Globals::label(BREAST), new Parser { { {"probability:", new Parser }, {"riskTable:", new Parser }, {"lifetimeRisk:", new Parser }, {"meanAge:", new Parser }, {"stdDev:", new Parser }, } } }; Parser::MapValue incBrca1 { "BRCA1:", new Parser { { {"probability:", new Parser }, {"riskTable:", new Parser }, {"lifetimeRisk:", new Parser }, {"meanAge:", new Parser }, {"stdDev:", new Parser }, } } }; Parser::MapValue incBrca2 { "BRCA2:", new Parser { { {"probability:", new Parser }, {"riskTable:", new Parser }, {"lifetimeRisk:", new Parser }, {"meanAge:", new Parser }, {"stdDev:", new Parser }, } } }; Parser::MapValue tumIncidence { "Incidence:", new Parser { { incMale, incFemale, incBreast, incBrca1, incBrca2, } } }; Parser::MapValue groDoublingTime { "DoublingTime:", new Parser { { {"ageGroup:", new Parser}, {"lung:", new Parser}, } } }; Parser::MapValue tumGrowth { "Growth:", new Parser { { {"start:", new Parser }, {"breast:", new Parser }, {"lung:", new Parser }, groDoublingTime, } } }; Parser::MapValue tumSurvival { "Survival:", new Parser { { {"type:", new Parser }, {"lung0:", new Parser }, {"lung1:", new Parser }, {"lung2:", new Parser }, {"lung3:", new Parser }, } } }; Parser::MapValue s3 { "S3:", new Parser { { {"prob:", new Parser }, } } }; Parser::MapValue tumBeir7 { "Beir7:", new Parser { { // map { "breast:", new Parser }, { "male:", new Parser }, { "female:", new Parser }, } } }; Parser::MapValue tumor { "Tumor:", new Parser { { // map tumIncidence, tumGrowth, tumBeir7, { "beir7:", new Parser }, tumSurvival, s3, { "bc:", new Parser }, } } }; Parser::MapValue cosDiscount { "Discount:", new Parser { { // map {"age:", new Parser }, {"proportion:", new Parser }, } } }; Parser::MapValue costs { "Costs:", new Parser { { {"biop:", new Parser }, {"diameters:", new Parser }, cosDiscount, } } }; } // namespace Parser::Map Parser::s_map // see the configuration file: these are the { // configurations for the top-level keywords scenario, // e.g., scenario here (above) and Scenario: costs, // in the configuration file breastDensities, modalities, screening, tumor, }; // By convention, keywords of lines mererly containing the keyword // start with capitals, and those followed by actual parameter values // start with lower-case letters // // MapValue definitions ending in 'new Parser' match one or more // configuration lines which are handled by the objects for which // the configuration line is intended. // // Parser specifications merely consisting of identifiers refer to // separately defined specifications // // E.g., // // Parser::MapValue modalities // { // "Modalities:", // new Parser // { // { // mammo, // tomo, // mri // } // } // }; // // specifies Modalities: as a keyword, followed by the definitions of mammo, // tomo, and mri. The 'tomo' MapValue is // // Parser::MapValue tomo // { // "Tomo:", // new Parser // { // { // {"costs:", new Parser }, // dose, // ... // } // } // }; // // and so 'costs:' is followed by >= 1 parameter values, but 'dose' is // specified separately: // // Parser::MapValue dose // { // "Dose:", // new Parser // { // { // {"bi-rad:", new Parser }, // } // } // }; // // The keyword 'Dose:' is on a line by itself, followed by lines starting // with 'bi-rad:' containing parameter specifications. // // What the parameter specifications are is determined by the objects parsing // the configuration lines. E.g., ageGroup: is specified as // ageGroup: 0 - 40: .961 .005 Normal // but also as: // ageGroup: 0 - 40: .05 .30 .48 .17 simrisc-16.02.00/parser/setlabels.cc0000664000175000017500000000043214665030471016165 0ustar frankfrank//#define XERR #include "parser.ih" // static void Parser::setLabels(ConfigLines &parser, StringVect &labels) { while (parser.get() and parser.key() == "label:") labels.push_back(parser.tail()); parser.redo(); // redo the line not containing a label } simrisc-16.02.00/parser/parser.ih0000664000175000017500000000064714665030471015526 0ustar frankfrank#include "parser.h" #include "../xerr/xerr.ih" #include #include #include #include #include "../configlines/configlines.h" inline LineInfoVect::const_iterator Parser::Lines::begin() const { return d_iter; } inline LineInfoVect::const_iterator Parser::Lines::end() const { return d_end; } #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/parser/keywordslines.cc0000664000175000017500000000207714665030471017120 0ustar frankfrank#define XERR #include "parser.ih" // static LineInfoVect const &Parser::keywordsLines(StringVect const &keywords) { Map const *mapPtr = &s_map; Map::const_iterator mapIter; // E.g., Scenario: iterator: returns the pointer to the Parser // at Scenario's iterator: specification for (auto const &keyword: keywords) // visit the range of keywords { mapIter = mapPtr->find(keyword); // ptr to Map::value_type if (mapIter == mapPtr->end()) // internal error: throw exception throw Exception{} << "Internal error: keyword `" << keyword << "' not configured"; mapPtr = &mapIter->second->d_map; // use the next keyword } // with Scenario: death: this is just one line, which may be empty, // in which case it's followed by 101 cumulative death probabilities // or it may contain one word, which is the name of the file containing // the specifications return mapIter->second->d_lines; // return the LineInfoVect } simrisc-16.02.00/parser/initlineinfovects.cc0000664000175000017500000000104414665030471017743 0ustar frankfrank#define XERR #include "parser.ih" // static void Parser::initLineInfoVects(Map &map) { // element.first: the key // element.second: Parser * // visit all elements of 'map' (there may be none) for (auto &element: map) { if (not endPoint(element)) // there's a deeper link: initLineInfoVects(element.second->d_map); // continue else // no map is used here element.second->d_lines.push_back(LineInfo{ NONE }); } } simrisc-16.02.00/parser/locateerror.cc0000664000175000017500000000166114665030471016535 0ustar frankfrank#define XERR #include "parser.ih" // static void Parser::locateError(vector &mapPtrVect, ConfigLines &lines, ParamsSrc src) { string key = lines.key(); // look for this key for (size_t idx = mapPtrVect.size(); idx--; ) // upwards from the most { // nested level Map &map = *mapPtrVect[idx]; // found the key at an earlier if (map.find(key) != map.end()) // level { mapPtrVect.resize(idx + 1); // remove nested pointers lines.redo(); // reprocess this line return; } } // the key at the current line was not found in this section emsg << Err::src(src) << " [" << lines.lineNr() << "]: "; Err::msg(Err::UNDEFINED_SPEC) << " `" << lines.line() << '\'' << endl; } simrisc-16.02.00/parser/vsdparameters1.cc0000664000175000017500000000240514665030471017152 0ustar frankfrank#define XERR #include "parser.ih" // static VSDvect Parser::VSDparameters(VaryType varyType, StringVect const &keywords, initializer_list const &required) { VSDvect vsdVect(required.size(), VSD{ varyType }); auto lines = any(keywords); // all config lines of 'keywords' unsigned count = 0; while (true) { auto const *line = lines.get(); // get the next line if (not line) break; VSD vsd{ varyType }; char type; if (not Parser::extract(*line, type, vsd)) // get the next VSD continue; // check whether the // type (a..x) is OK auto idIter = find(required.begin(), required.end(), type); if (idIter == required.end()) { Err::msg(Err::INVALID_TYPE) << '`' << type << '\'' << endl; continue; } ++count; // found a VSD specification vsdVect[idIter - required.begin()] = vsd; // store the extracted VSD } if (count != required.size()) Err::msg(Err::VSD_MISSING) << count << " specifications\n"; return vsdVect; } simrisc-16.02.00/parser/lines.cc0000664000175000017500000000122314665030471015320 0ustar frankfrank//#define XERR #include "parser.ih" // static Parser::Lines Parser::lines(StringVect const &keywords) { // get the lines // matching the LineInfoVect const &lines = keywordsLines(keywords); // keywords return lines.front().src == NONE ? // no spec? Lines{ LineInfoVect{} } // then nothing : Lines{ lines.begin(), lines.end() }; // else return the // specifications } simrisc-16.02.00/parser/endpoint.cc0000664000175000017500000000026514665030471016033 0ustar frankfrank//#define XERR #include "parser.ih" // static bool Parser::endPoint(Map::value_type const &value) { return value.second->d_map.empty(); // the next Parser has an empty map } simrisc-16.02.00/parser/lib/0000775000175000017500000000000014665030471014447 5ustar frankfranksimrisc-16.02.00/parser/lib/libparser.a0000777000175000017500000000000014665030471021727 2../tmp/libparser.austar frankfranksimrisc-16.02.00/parser/lib/libconfiglines.a0000777000175000017500000000000014665030471026452 2../../configlines/tmp/libconfiglines.austar frankfranksimrisc-16.02.00/parser/lib/liberr.a0000777000175000017500000000000014665030471021522 2../../err/tmp/liberr.austar frankfranksimrisc-16.02.00/parser/vsdparameters2.cc0000664000175000017500000000170714665030471017157 0ustar frankfrank#define XERR #include "parser.ih" // static VSDvect Parser::VSDparameters(VaryType varyType, StringVect const &keywords, size_t nRequired) { VSDvect vsdVect(nRequired, VSD{ varyType }); string values[nRequired]; // one config line for 'keywords' if (not Parser::extract(one(keywords), values, nRequired)) Err::msg(Err::VSD_MISSING) << nRequired << " value specifications\n"; else { for (size_t idx = 0; idx != nRequired; ++idx) { istringstream in{ values[idx] }; // extract single values if (not (in >> vsdVect[idx])) // store with SD 0 in the { // vsdVect Err::msg(Err::VSD_MISSING) << nRequired << " value specifications\n"; break; } } } return vsdVect; } simrisc-16.02.00/parser/icmconf0000664000175000017500000000007514665030471015244 0ustar frankfrank#define LIBRARY "parser" #include "../icmconf.lib" simrisc-16.02.00/parser/lineslines1.cc0000664000175000017500000000023114665030471016432 0ustar frankfrank//#define XERR #include "parser.ih" Parser::Lines::Lines(LineInfoVect const &lines) : d_size(0), d_iter(lines.end()), d_end(lines.end()) {} simrisc-16.02.00/parser/rmlineinfovectors.cc0000664000175000017500000000100114665030471017750 0ustar frankfrank#define XERR #include "parser.ih" //static void Parser::rmLineInfoVectors(Map &map) { // element.first: the key // element.second: Parser * for (auto &element: map) // all elements of 'map' { if (not endPoint(element)) // there's a deeper link: rmLineInfoVectors(element.second->d_map); // continue there else // no map is used here element.second->d_lines.clear(); } } simrisc-16.02.00/parser/atleast.cc0000664000175000017500000000045114665030471015645 0ustar frankfrank//#define XERR #include "parser.ih" // static bool Parser::atLeast(double minimum, StringVect const &base, double &dest) { if (extract(one(base), dest)) { if (minimum <= dest) return true; Err::atLeast(minimum); } dest = minimum; return false; } simrisc-16.02.00/parser/checkredo.cc0000664000175000017500000000362514665030471016145 0ustar frankfrank#define XERR #include "parser.ih" // If the previous key allows additional number-lines and a number-line is // read next then set that line's key to the last-read key, so multiple // lines of that key are returned. namespace { enum { INIT, REDO, }; size_t s_state = INIT; string s_key; unordered_set redo{ "death:", "riskTable:", "ageGroup:", "sensitivity:", "round:", "prob:", "type:", "lung0:", "lung1:", "lung2:", "lung3:" }; unordered_set survival{ "type:", "lung0:", "lung1:", "lung2:", "lung3:" }; unordered_set abcd{ "a", "b", "c", "d", "e" }; } //static string Parser::checkRedo(ConfigLines &configLine) { string key = configLine.key(); if (redo.find(key) != redo.end() ) // at a key: refill with that key { s_key = key; s_state = REDO; } else if // digits always OK. '*' OK for prob: ( // a..d OK voor 'survival:' isdigit(key.front()) or (s_key == "prob:" and key.front() == '*') or ( survival.find(s_key) != survival.end() and abcd.find(key) != abcd.end() ) ) configLine.key(key = s_key); else s_state = INIT; return key; } // if (s_state == INIT) // { // if (redo.find(key) != redo.end() ) // { // s_key = key; // s_state = REDO; // } // } // else if ( // digits always OK. '*' OK for prob: // isdigit(key.front()) // a..d OK voor survival: // or // (s_key == "prob:" and key.front() == '*') // ) // configLine.key(key = s_key); // else // s_state = INIT; simrisc-16.02.00/parser/destructor.cc0000664000175000017500000000024414665030471016406 0ustar frankfrank#define XERR #include "parser.ih" //extern size_t rmCount; Parser::~Parser() { //rmCount = 0; rmLineInfoVectors(s_map); //xerr("# REMOVED: " << rmCount); } simrisc-16.02.00/parser/linesget.cc0000664000175000017500000000061314665030471016022 0ustar frankfrank#define XERR #include "parser.ih" LineInfo const *Parser::Lines::get() { return d_iter == d_end ? // no more lines 0 : Err::reset(*d_iter++); // allow new error messages, provide // Err with the current line and // return the current line's address } simrisc-16.02.00/parser/parser2.cc0000664000175000017500000000013114665030471015561 0ustar frankfrank//#define XERR #include "parser.ih" Parser::Parser(Map &&tmp) : d_map(move(tmp)) {} simrisc-16.02.00/parser/setoptions.cc0000664000175000017500000000203414665030471016416 0ustar frankfrank#define XERR #include "parser.ih" // OptionsVect: vector of OptionInfo elements, processed by actualize() // OptionInfo: defined by Parser // static void Parser::setOptions(ConfigLines &parser, OptionsVect &optionsVect) { while ( parser.get() // got a line and it's not and // a top-level parser s_map.find(parser.key()) == s_map.end() // parameter ) // store the option spec. optionsVect.push_back( // long option name and value { parser.key().back() == ':' ? // rm a final : parser.key().substr(0, parser.key().length() - 1) : parser.key(), parser.value(), parser.lineNr(), } ); parser.redo(); // redo the line not containing a label } simrisc-16.02.00/parser/lineslines2.cc0000664000175000017500000000040414665030471016435 0ustar frankfrank//#define XERR #include "parser.ih" Parser::Lines::Lines(LineInfoVect::const_iterator const &begin, LineInfoVect::const_iterator const &end) : d_size(end - begin), d_iter(begin), d_end(end) { Err::reset(*d_iter); } simrisc-16.02.00/parser/frame0000664000175000017500000000006214665030471014714 0ustar frankfrank//#define XERR #include "parser.ih" Parser:: { } simrisc-16.02.00/parser/hassection.cc0000664000175000017500000000023514665030471016350 0ustar frankfrank#define XERR #include "parser.ih" // static bool Parser::hasSection(StringVect const &keywords) { return keywordsLines(keywords).front().src != NONE; } simrisc-16.02.00/parser/load1.cc0000664000175000017500000000125714665030471015215 0ustar frankfrank#define XERR #include "parser.ih" //extern size_t addCount; // load an analysis file specification void Parser::load(std::istream &in, uint16_t startLineNr, StringVect &labels, OptionsVect &options) { ConfigLines lines{ in, startLineNr }; // read the current stream setLabels(lines, labels); // set label: specifications setOptions(lines, options); vector mapPtrVect{ &s_map }; // start loading at the top // add the config lines while (lines.get()) // to the matching Parser addConfigLine(mapPtrVect, lines, ANALYSIS); } simrisc-16.02.00/parser/any.cc0000664000175000017500000000037614665030471015005 0ustar frankfrank#define XERR #include "parser.ih" //static Parser::Lines Parser::any(StringVect const &keywords) { Lines lines = Parser::lines(keywords); if (not lines) Err::msg(Err::MISSING_SPEC) << sectionList(keywords) << endl; return lines; } simrisc-16.02.00/parser/addconfigline.cc0000664000175000017500000000504114665030471016776 0ustar frankfrank#define XERR #include "parser.ih" // static void Parser::addConfigLine(vector &mapPtrVect, ConfigLines &configLine, ParamsSrc src) { // accept nr-specs following string key = checkRedo(configLine); // death: or riskTable: Map &map = *mapPtrVect.back(); // look for the key in the current auto iter = map.find(key); // map section if (iter == map.end()) // key was not found { locateError(mapPtrVect, configLine, src); return; } if (not endPoint(*iter)) // key found, but not an endpoint { // (endpoint: next Parser is empty) mapPtrVect.push_back(&iter->second->d_map); // go nesting return; } // no deeper level: handle the line // -------------------------------------------------- // existing // ---------------------------------- // new: NONE CONFIGFILE ANALYSIS // -------------------------------------------------- // CONFIGFILE replace add ignore // // ANALYSIS replace Exception add // (ANALYSIS is // handled first) // -------------------------------------------------- LineInfoVect &liVect = iter->second->d_lines; ParamsSrc currentSrc = liVect.front().src; // replace the initialization vector if (currentSrc == NONE) // by the current spec. { liVect.front() = LineInfo{ src, configLine.lineNr(), configLine.line(), configLine.tail() }; return; } // if the next line has the same ParamSrc: if (src == currentSrc) // store it. { liVect.push_back // there: store it ( { src, configLine.lineNr(), configLine.line(), configLine.tail() } ); return; } // ignore CONFIGFILE if there's // already an ANALYSIS spec. if (src == CONFIGFILE and liVect.front().src == ANALYSIS) return; // cell[1][1] in the above table throw Exception{} << __FILE__": internal error: ANALYSIS spec. " " read after reading CONFIGFILE specs."; } simrisc-16.02.00/probgroup/0000775000175000017500000000000014665030471014424 5ustar frankfranksimrisc-16.02.00/probgroup/insert.cc0000664000175000017500000000071614665030471016243 0ustar frankfrank//#define XERR #include "probgroup.ih" std::ostream &ProbGroup::insert(ostream &out) const { out << s_labels[d_breastCancer][0] << d_group << s_labels[d_breastCancer][1]; if (not d_breastCancer) Globals::setWidthPrec(out, 2, 4); for (size_t idx = 0; idx != N_PROBCATS; ++idx) out << static_cast('a' + idx) << ": " << setw(4) << d_prob[idx] << ", "; return out; } simrisc-16.02.00/probgroup/data.cc0000664000175000017500000000035414665030471015646 0ustar frankfrank//#define XERR #include "probgroup.ih" char const *ProbGroup::s_labels[][2] = { { "diameter: ", ", prob.: " }, // labels for lung cancer sim. { "ageGroup: ", ", bi-rad: " } // labels for breast cancer sim. }; simrisc-16.02.00/probgroup/probgroup.h0000664000175000017500000000540114665030471016614 0ustar frankfrank#ifndef INCLUDED_PROBGROUP_ #define INCLUDED_PROBGROUP_ #include #include #include #include "../typedefs/typedefs.h" #include "../group/group.h" #include "../enums/enums.h" #include "../globals/globals.h" // This class used to be 'Density', but with the introduction of lung cancer // simulations cumulative probabilites are also used by 'Survival'. // // config. params using probabilities: // BreastDensities: (RANGE) // # bi-rad: a b c d // ageGroup: 0 - 40: .05 .30 .48 .17 // Table S3 probabilities (SINGLE) // prob: 20: .703 .197 .055 .045 # T1b // prob: *: .187 .347 .256 .210 # T4 class ProbGroup { friend std::istream &operator>>(std::istream &in, ProbGroup &probgroup); friend std::ostream &operator<<(std::ostream &out, ProbGroup const &probgroup); enum { N_PROBCATS = 4, // # of probability categories }; // d_group contains the age group (begin() and end() // d_prob the probabilities, d_cumProbs the cumulative probabilities // cf Group::extract(). begin() Group d_group; // not used, end() is inclusive std::vector d_prob; std::vector d_cumProbs; // false: lung cancer sim., bool d_breastCancer; // true: breast cancer sim. static char const *s_labels[][2]; public: using Vector = std::vector; // ensure sorted by group-end // and that the full range is // covered ProbGroup(Series series); uint16_t begin() const; // .f uint16_t end() const; // .f Group const &group() const; // .f std::vector const &prob() const; // was: birad // .f double prob(size_t idx) const; // was: birad // .f bool sumOne() const; static RowCol probIndexOf(Vector const &vect, double value, double prob); private: bool contains(double value) const; // .f std::istream &extract(std::istream &in); std::ostream &insert(std::ostream &out) const; // string::npos: 'value' not // in the ProbGroup's. uint16_t indexOf(double value) const; }; #include "probgroup.f" #endif simrisc-16.02.00/probgroup/probgroup1.cc0000664000175000017500000000030214665030471017026 0ustar frankfrank//#define XERR #include "probgroup.ih" ProbGroup::ProbGroup(Series series) : d_group(series), d_prob(N_PROBCATS), d_cumProbs(N_PROBCATS), d_breastCancer(Globals::isBreast()) {} simrisc-16.02.00/probgroup/indexof.cc0000664000175000017500000000135414665030471016372 0ustar frankfrank//#define XERR #include "probgroup.ih" // 0 <= prob <= 1 and so indexOf always returns a column extern size_t g_caseIdx; extern size_t g_err; uint16_t ProbGroup::indexOf(double prob) const { //if (g_caseIdx >= g_err)// and prob > .9999) //{ //xerr("PROBGROUP: " << g_caseIdx << " prob: " << prob << '\n'); //for (double prob: d_cumProbs) //cerr << prob << ' '; //cerr << '\n'; //} uint16_t ret = prob > d_cumProbs.back() ? d_cumProbs.size() - 1 : find_if(d_cumProbs.begin(), d_cumProbs.end(), [&](double cumProb) { return prob <= cumProb; } ) - d_cumProbs.begin(); return ret; } simrisc-16.02.00/probgroup/icmconf0000664000175000017500000000010014665030471015754 0ustar frankfrank#define LIBRARY "probgroup" #include "../icmconf.lib" simrisc-16.02.00/probgroup/extract.cc0000664000175000017500000000117014665030471016404 0ustar frankfrank//#define XERR #include "probgroup.ih" // E.g., // ageGroup: 0 - 40: -> // .05 .30 .48 .17 // or (e.g., S3): // prob: 20: -> // .703 .197 .055 .045 istream &ProbGroup::extract(istream &in) { in >> d_group; // extract the group double cumProb = 0; for (size_t idx = 0; idx != N_PROBCATS; ++idx) { double probability; in >> probability; d_prob[idx] = probability; cumProb += probability; d_cumProbs[idx] = cumProb; } return in; } simrisc-16.02.00/probgroup/probindexof.cc0000664000175000017500000000126414665030471017255 0ustar frankfrank//#define XERR #include "probgroup.ih" // see README.probgroup // with Survival::cptVSDrow 'value' is the tumor diameter // then, the group is determined from the diameter, and in the selected // group the column index of that row of S3 is omputed as 'idx' // static RowCol ProbGroup::probIndexOf(Vector const &vect, double value, double prob) { size_t rowIdx = 0; for (ProbGroup const &group: vect) { if (group.contains(value)) { uint16_t idx = group.indexOf(prob); return RowCol{ rowIdx, idx }; } ++rowIdx; } return RowCol{ static_cast(string::npos), 0 }; } simrisc-16.02.00/probgroup/probgroup.f0000664000175000017500000000143514665030471016615 0ustar frankfrankinline uint16_t ProbGroup::begin() const { return d_group.begin(); } inline bool ProbGroup::contains(double value) const { return d_group.contains(value); } inline uint16_t ProbGroup::end() const { return d_group.end(); } inline Group const &ProbGroup::group() const { return d_group; } inline std::vector const &ProbGroup::prob() const { return d_prob; } inline double ProbGroup::prob(size_t idx) const { return d_prob[idx]; } inline bool ProbGroup::sumOne() const { return Globals::isZero(d_cumProbs[N_PROBCATS - 1] - 1); } inline std::istream &operator>>(std::istream &in, ProbGroup &probgroup) { return probgroup.extract(in); } inline std::ostream &operator<<(std::ostream &out, ProbGroup const &probgroup) { return probgroup.insert(out); } simrisc-16.02.00/probgroup/probgroup.ih0000664000175000017500000000037414665030471016771 0ustar frankfrank#include "probgroup.h" #include "../xerr/xerr.ih" #include #include #include #include #include "../globals/globals.h" extern size_t g_caseIdx; extern size_t g_err; #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/probgroup/frame0000664000175000017500000000007014665030471015436 0ustar frankfrank//#define XERR #include "probgroup.ih" ProbGroup:: { } simrisc-16.02.00/random/0000775000175000017500000000000014665030471013665 5ustar frankfranksimrisc-16.02.00/random/reinit.cc0000664000175000017500000000102114665030471015460 0ustar frankfrank#define XERR #include "random.ih" // Called from Loop::iterate, defines the betadistributions if vary is set void Random::reinit(size_t nCases, GeneratorType type) { if (Globals::vary() and nCases == 1) throw Exception{} << "'spread: true' cannot be used with 'cases: 1'"; d_nCases = nCases; switch (type) { case INCREASING_SEED: ++d_seed; break; case FIXED_SEED: break; default: d_seed = time(0); break; } reset(); } simrisc-16.02.00/random/instance.cc0000664000175000017500000000030714665030471016000 0ustar frankfrank//#define XERR #include "random.ih" // static Random &Random::instance() { if (not s_random) throw Exception{} << "Random::instance: Random not yet initiaized"; return *s_random; } simrisc-16.02.00/random/data.cc0000664000175000017500000000011214665030471015077 0ustar frankfrank//#define XERR #include "random.ih" unique_ptr Random::s_random; simrisc-16.02.00/random/lognormalvary.cc0000664000175000017500000000033114665030471017065 0ustar frankfrank//#define XERR #include "random.ih" double Random::logNormalVary(double mean, double stdDev) { d_logNormalVary->param(LogNormalParams{ mean, stdDev }); return (*d_logNormalVary)(d_engine[LOGNORMAL_VARY]); } simrisc-16.02.00/random/random.ih0000664000175000017500000000037414665030471015473 0ustar frankfrank#include "random.h" #include "../xerr/xerr.ih" #include #include #include #include #include "../globals/globals.h" #include "../log/log.h" #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/random/reset.cc0000664000175000017500000000205614665030471015321 0ustar frankfrank#define XERR #include "random.ih" void Random::reset() { size_t seed = d_seed; for (size_t idx = 0; idx != N_STD_DISTRIBUTIONS; ++idx) { d_engine[idx] = mt19937{seed <<= 1}; // xerr(seed); } d_uniform.reset(); // clear the generators' caches d_uniformCase.reset(); d_uniformVSD.reset(); d_logNormal.reset(); if (Globals::vary()) // clear the varying distributions' caches { seed <<= 1; d_engine[NORMAL_VARY] = mt19937{ seed }; d_normalVary->reset(); seed <<= 1; d_engine[UNIFORM_VARY] = mt19937{ seed }; d_uniformVary->reset(); seed <<= 1; d_engine[LOGNORMAL_VARY] = mt19937{ seed }; d_logNormalVary->reset(); seed <<= 1; d_engine[UNIFORM_VARY] = mt19937{ seed }; d_uniformVSDvary->reset(); if (d_betaVary) { d_engine[BETA_VARY] = mt19937{ d_seed }; // std seed is used d_betaVary->reset(); // reset the beta distr.'s cache } } } simrisc-16.02.00/random/lognormal.cc0000664000175000017500000000043714665030471016172 0ustar frankfrank//#define XERR #include "random.ih" double Random::logNormal(double mean, double stdDev) { d_logNormal.param(LogNormalParams{ mean, stdDev }); double ret = d_logNormal(d_engine[LOGNORMAL]); g_log('L') << " logNormal random value: " << ret << nl; return ret; } simrisc-16.02.00/random/uniformvsdvary.cc0000664000175000017500000000030114665030471017264 0ustar frankfrank//#define XERR #include "random.ih" double Random::uniformVSDvary() { // return d_uniform(d_engine[UNIFORM_VARY]); throw Exception{} << "Random::uniformVSDvary() not yet available"; } simrisc-16.02.00/random/uniformvary.cc0000664000175000017500000000016414665030471016556 0ustar frankfrank//#define XERR #include "random.ih" double Random::uniformVary() { return d_uniform(d_engine[UNIFORM_VARY]); } simrisc-16.02.00/random/random.h0000664000175000017500000000604614665030471015324 0ustar frankfrank#ifndef INCLUDED_RANDOM_ #define INCLUDED_RANDOM_ #include #include // using the stl's mercenne twister #include #include #include #include "../enums/enums.h" #include "../betadist/betadist.h" class Random { using LogNormalParams = std::lognormal_distribution::param_type; using EngineVect = std::vector; size_t d_nEngines; size_t d_seed; size_t d_nCases; EngineVect d_engine; // all distribution types are default: double // and are allways available std::uniform_real_distribution<> d_uniform; // default: 0, max std::uniform_real_distribution<> d_uniformCase; // used by std::uniform_real_distribution<> d_uniformVSD; // Survival::cptVSDrow std::lognormal_distribution<> d_logNormal; // default: 0, 1 // these distributions are used with // Scenario: spread // default: 0, 1 std::unique_ptr> d_normalVary; std::unique_ptr> d_uniformVary; std::unique_ptr> d_uniformVSDvary; std::unique_ptr> d_logNormalVary; // BetaDist is not used with SimulationType BREAST std::unique_ptr d_betaVary; static std::unique_ptr s_random; public: Random(Random const &other) = delete; std::pair betaParameters() const; // called by void prepareBeta(std::istream &in); // Distribution::extract // called at each iteration void reinit(size_t nCases, GeneratorType type); static Random &initialize(); static Random &instance(); double uniform(); // used for generating reproducible double uniformCase(); // case characteristics // used for generating reproducible double uniformVSD(); // case characteristics double logNormal(double mean, double stdDev); // only used when 'spread: true': double betaVary(); double normalVary(); double uniformVary(); double uniformVSDvary(); // TO DO double logNormalVary(double mean, double stdDev); void setSeed(size_t seed); private: Random(); void reset(); }; inline void Random::setSeed(size_t seed) { d_seed = seed; } inline std::pair Random::betaParameters() const { return d_betaVary->parameters(); } // when parsing the config file // specify which vary-specific // distributions are used // OBS void use(DistType distribution); #endif simrisc-16.02.00/random/uniformcase.cc0000664000175000017500000000032414665030471016506 0ustar frankfrank#define XERR #include "random.ih" double Random::uniformCase() { double ret = d_uniformCase(d_engine[UNIFORM_CASE]); g_log('C') << " uniform case random value: " << ret << nl; return ret; } simrisc-16.02.00/random/betavary.cc0000664000175000017500000000016214665030471016010 0ustar frankfrank//#define XERR #include "random.ih" double Random::betaVary() { return (*d_betaVary)(d_engine[BETA_VARY]); } simrisc-16.02.00/random/normalvary.cc0000664000175000017500000000066414665030471016374 0ustar frankfrank#define XERR #include "random.ih" double Random::normalVary() { return (*d_normalVary)(d_engine[NORMAL_VARY]); } //////////////////////////////////////////// // ?? // d_normal is the std. normal distribution. To obtain a value from the // std. normal distribution return d_normal(d_engine) // double x1 = uniform(); // double x2 = uniform(); // double y = sqrt( -2 * log(x1) ); // // return y * sin( 2 * M_PI * x2 ); simrisc-16.02.00/random/preparebeta.cc0000664000175000017500000000017114665030471016465 0ustar frankfrank//#define XERR #include "random.ih" void Random::prepareBeta(istream &in) { d_betaVary.reset(new BetaDist{ in }); } simrisc-16.02.00/random/icmconf0000664000175000017500000000007514665030471015230 0ustar frankfrank#define LIBRARY "random" #include "../icmconf.lib" simrisc-16.02.00/random/random1.cc0000664000175000017500000000064314665030471015540 0ustar frankfrank#define XERR #include "random.ih" Random::Random() : d_nEngines(Globals::vary() ? N_DISTRIBUTIONS : N_STD_DISTRIBUTIONS), d_engine(d_nEngines) { // xerr("vary = " << Globals::vary()); if (not Globals::vary()) return; d_normalVary.reset(new normal_distribution<>{}); d_uniformVary.reset(new uniform_real_distribution<>{}); d_logNormalVary.reset(new lognormal_distribution<>{}); } simrisc-16.02.00/random/initialize.cc0000664000175000017500000000033514665030471016336 0ustar frankfrank//#define XERR #include "random.ih" // static Random &Random::initialize() { // if (s_random) // throw Exception{} << "Random::initiaize already called"; s_random.reset(new Random); return *s_random; } simrisc-16.02.00/random/uniformvsd.cc0000664000175000017500000000032114665030471016364 0ustar frankfrank#define XERR #include "random.ih" double Random::uniformVSD() { double ret = d_uniformCase(d_engine[UNIFORM_VSD]); g_log('V') << " uniform vsd random value: " << ret << nl; return ret; } simrisc-16.02.00/random/UNUSED/0000775000175000017500000000000014665030471014670 5ustar frankfranksimrisc-16.02.00/random/UNUSED/binomial.cc0000664000175000017500000000034214665030471016770 0ustar frankfrank//#define XERR #include "random.ih" double Random::binomial(double percentage) { d_binomial->param(BinomialParams{ N_TRIALS, percentage }); return (*d_binomial)(d_engine[BINOMIAL]) / static_cast(N_TRIALS); } simrisc-16.02.00/random/UNUSED/chi2.cc0000664000175000017500000000025114665030471016022 0ustar frankfrank//#define XERR #include "random.ih" double Random::chi2() { // d_chi2->param( Chi2Params(d_nCases - 1) ); // // return (*d_chi2)(d_engine[CHI2]); return 0; } simrisc-16.02.00/random/UNUSED/exponential.cc0000664000175000017500000000031214665030471017521 0ustar frankfrank// //#define XERR // #include "random.ih" // // double Random::exponential(double mean) // { // d_exponential.param(ExponentialParams{ 1 / mean }); // return d_exponential(d_engine); // } // // simrisc-16.02.00/random/uniform.cc0000664000175000017500000000030414665030471015650 0ustar frankfrank//#define XERR #include "random.ih" double Random::uniform() { double ret = d_uniform(d_engine[UNIFORM]); g_log('U') << " uniform random value: " << ret << nl; return ret; } simrisc-16.02.00/random/frame0000664000175000017500000000006214665030471014700 0ustar frankfrank//#define XERR #include "random.ih" Random:: { } simrisc-16.02.00/random/users.txt0000664000175000017500000000447614665030471015602 0ustar frankfrankdensities/indices.cc -- randomly determines the bi-rad category for every screening round age tumor/reset.cc -- resets the tumor's parameters like tumor age, p(survival), doublingtime, selfdetect age etc. Called from Loop:initialize, called from Loop::womenLoop for every simulated case tumor/tumorage.cc -- given the cumulative risk distribution for having a tumor, an age from that distribution is randomly drawn (used by Tumor::reset) incidence/carrier.cc -- determines which incidence carrier is used vary/refresh.cc -- if 'variableVary:' was specified, the values used for the Growth, Survival, and Incidence parameters like risk, mean and std. dev. are updated loop/maybedetect.cc -- determines whether, given a modality's sensitivity, a false negative occurred loop/naturaldeathage.cc -- from Loop::initialize in Loop::womenLoop: for each simulated case (woman): determines the case's natural death age loop/checkseed.cc -- at each new iteration: determines whether the random number generator is reset using the original seed or using the next seed value loop/maybefalsepositive.cc -- determines whether, given a modality's specificity, a false positive occurred loop/use.cc -- determines whether a modality is used by a screening round loop/loop1.cc -- resets the generators if variableVary was specified loop/iterate.cc -- initializes the generators ---------------------------------- Candidates for a separate random number generator: loop/naturaldeathage.cc simrisc-16.02.00/replacements0000664000175000017500000000253514665030471015017 0ustar frankfrank// replace objdump's idea of what a string is by ours: #std::__cxx11::basic_string, std::allocator >#std::string# #__gnu_cxx::__normal_iterator > >#Scenario::const_iterator# #, std::allocator > > const&, Scenario::Range&, char const*, std::vector > const*## #, std::hash, std::equal_to, std::allocator > ## #__gnu_cxx::__normal_iterator >#Next::ConstIter # #std::set const*> >#std::set# #[abi:cxx11]## #, std::hash## #, std::equal_to## #, std::allocator## #, std::allocator## #, std::allocator## #, std::allocator## #, std::allocator >## #, std::allocator ## #, std::allocator > ## #, std::allocator*> ## #, std::allocator ## #, std::allocator ## #, std::allocator ## #, std::allocator ## simrisc-16.02.00/requests.txt0000664000175000017500000001567414665030471015036 0ustar frankfrankWensenlijstje Simrisc Update: 17 feb 2024 > 1. Robuust maken van de input > > Het lijkt er sterk op dat Simrisc erg gevoelig is voor het precieze format van > de input: zijn er wel of geen meerdere spaties, volgorde van invoer, etc. Het > zou mooi zijn als Simrisc meer robuust met de input kan omgaan. Zie mijn mail van gisteren: hebben jullie een invoer die niet wordt geaccepteerd? =========================================================================== Gedaan: > 2. Ontkoppelen borstkanker en longkanker screening > > Gebruikers van borstkanker screening en longkanker screening werken wel veel > samen, maar zijn toch ook veel met hun eigen onderzoeksgebied bezig. Als > gebruiker van Simrisc word je bij het simuleren van borstkanker screening nu > voortdurend ‘lastig gevallen’ met informatie over longkanker screening en > omgekeerd. Het zou mooi zijn als dit volledig ontkoppeld wordt. Kan dat iets preciezer worden beschreven? In de configuratiefile zijn parameters voor beide kankers opgenomen omdat dat nou eenmaal door simrisc wordt aangeboden, maar ws. (moet ik even testen) kunnen de parameters voor borstkanker achterwege blijven wanneer longkankersimulaties worden uitgevoerd, en omgekeerd. Wanneer er in de uitvoer info over het ene type wordt geproduceerd terwijl 't andere type werd gesimuleerd kunnen jullie dan aangeven wat niet moet worden vermeld bij de resp. simulatiemethoden? Bij de borstkanker rounds.txt file (Marcel,Tue, 20 Feb 2024 07:44:23 +0000): in de rounds file die ook als uitvoer wordt gegenereerd worden Mammo, Tomo en MRI ook genoemd, ook al worden ze in rondes niet gebruikt. Voor die file ligt 't voor de hand om niet gebruikte modaliteiten niet te vermelden als ze bij de round-specificaties niet worden genoemd. > 3. Risico op kanker > > Het risico op kanker op een bepaalde leeftijd is gedefinieerd via 3 parameters > (f, m en s). Het zou mooi zijn als er ook de mogelijkheid zou zijn om een > tabel met incidentie per leeftijd in te lezen. Dat geldt voor alle parameters bij 'Incidence:' (Marcel, Wed, 21 Feb 2024 07:55:47 +00000) Moeten we ook een minimum aantal waarden vereisen in zo'n tabel? cf. Marcel Wed, 21 Feb 2024 09:43:32 +0000: > Leeftijd-1 indicentie-1 > Leeftijd-2 indicentie-2 > Etc > Waarbij per default > 0 0 > 100 1 > Bv: > 25 0.001 > 30 0.003 > 35 0.005 > 40 0.009 > 45 0.014 > > Hoe dat dan met de spread moet, weet ik nog zoeven niet, even over nadenken Geldt voor lifetiemRisk. meanAge en stdDev: vervallen bij gebruik van een tabel: > de specificatie wordt dan: > ... > Male: > riskTable: 25 0.001 (etc) > 4. Participatie = attendanceRate > > De participatie wordt nu slechts met 1 decimaal geaccepteerd, dat zouden we > graag in 2 decimalen willen Wat is de participatieparameter in de config file? Noch in de config file, noch in de simriscparams man-page wordt participatie (of participation) genoemd Aanpassen in Screening::writeParameters(ostream &out) op 't aantal gewenste parameters Marcel (Wed, 21 Feb 2024 07:48:49 +0000): 3 decimalen > 5. Definitie van interval: ‘echte’ interval tumoren toevoegen > > Bij het bepalen of een tumor een interval tumor is, wordt nu geen rekening > gehouden met of de vrouw wel of niet naar de voorgaande screening is > gegaan. Het huidige aantal willen we graag behouden, maar daarnaast zouden we > graag het aantal intervallen hebben waarin alleen de tumoren worden meegenomen > na een bijgewoonde screeningronde. OK, (d_nTrueIntervals in loop/) (Wed, 21 Feb 2024 07:44:09 +0000) > 6. Output detection round: verander nummering > > Detection round geeft aan als er een gedetecteerde tumor is en in welke ronde > deze is gedetecteerd. Deze begint voor screening ronde 1 bij 0 en telt zo door > tot 12 (in normale NL setting). Een 0 wordt ook gegeven als de tumor niet > wordt gedetecteerd. We zouden de nummering daarom graag aanpassen, zodat deze > 0en makkelijker te onderscheiden zijn. -> wachten op Keris (Marcel Wed, 21 Feb 2024 07:43:03 +0000) Keris Mon, 26 Feb 2024 14:59:40 +0000: > -1 tumor gedetecteerd voor de eerste screeningsronde > 0 tumor gedetecteerd na de eerste screeningsronde (en dus > voor de 2e screeningsronde) > *0 tumor gedetecteerd na de eerste screeningsronde, die niet > is bijgewoond > 2 tumor gedetecteerd na de derde screeningsronde > *2 tumor gedetecteerd na de derde screeningsronde, die niet > is bijgewoond > 9 tumor gedetecteerd na de laatste screeningsronde > *9 tumor gedetecteerd na de laatste screeningsronde, die niet > is bijgewoond wordt (screeningsrondes genummerd van 1..N): 0 geen tumor -1 tumor gedetecteerd voor de eerste screeningsronde 1 tumor gedetecteerd na de eerste screeningsronde (en dus voor de 2e screeningsronde) *1 tumor gedetecteerd na de eerste screeningsronde, die niet is bijgewoond 3 tumor gedetecteerd na de derde screeningsronde *3 tumor gedetecteerd na de derde screeningsronde, die niet is bijgewoond N tumor gedetecteerd na de laatste screeningsronde *N tumor gedetecteerd na de laatste screeningsronde, die niet is bijgewoond screeningsrondes in rounds.txt worden ook genummerd van 1..N > 7. Input in zelfde eenheid, niet logaritmisch > > Verschillende input van simrisc wordt nu logaritmisch gegeven, bijvoorbeeld > gemiddelde grootte zelf-detectie, waar andere input in mm wordt gegeven, bijv > startgrootte tumoren. We zouden graag alle input in mm geven en de logaritme > door het model laten berekenen. Over welke parameters gaat 't? Zijn dat (alle) 'mean' parameters bij Growth (waarbij in de config file 'selfDetect' wordt genoemd) of zijn 't (ook) andere parameters? Bij die gemiddelden worden ook stddev en spread genoemd. Moeten die zo blijven of moeten die ook worden aangepast (bv selfDetect breast: spread is nu .084, e^.084 = 1.08763)? Op dit moment in Growth: # values must be changed to exp(value) #selfDetect: # stdev mean spread dist breast: .70 2.92 .084 Normal lung: .014 3.037 .61 Normal DoublingTime: # stdev mean spread dist. # values must be changed to exp(value) ageGroup: 1 - 50: .61 4.38 .43 Normal ageGroup: 50 - 70: .26 5.06 .17 Normal ageGroup: 70 - * : .45 5.24 .23 Normal # all ages stdev mean spread dist. # values must be changed to exp(value) lung: .21 4.59 .74 Normal simrisc-16.02.00/round/0000775000175000017500000000000014665030471013534 5ustar frankfranksimrisc-16.02.00/round/round.h0000664000175000017500000000327414665030471015042 0ustar frankfrank#ifndef INCLUDED_ROUND_ #define INCLUDED_ROUND_ #include #include #include // contains a round specification from the config file #include "../typedefs/typedefs.h" #include "../globals/globals.h" class Round { friend std::istream &operator>>(std::istream &in, Round &round); friend std::ostream &operator<<(std::ostream &out, Round const &round); double d_age; Uint16Vect d_modalities; // modalities used in this screening round StringVect const &d_modalityIDs; public: Round(StringVect const &modalityIDs); bool add(uint16_t idx); bool none() const; // true: none was specified; double age() const; uint16_t rndAge() const; // rounded double age value // modality indices used by Uint16Vect const &modalityIndices() const; // this screening round // StringVect const &modalityIDs() const; // screening round private: std::ostream &insert(std::ostream &out) const; }; inline bool Round::none() const { return Globals::isZero(d_age - END_AGE); } inline Round::Round(StringVect const &modalityIDs) : d_modalityIDs(modalityIDs) {} inline Uint16Vect const &Round::modalityIndices() const { return d_modalities; } // inline StringVect const &Round::modalityIDs() const // { // return d_modalities; // } inline double Round::age() const { return d_age; } inline uint16_t Round::rndAge() const { return round(d_age); } inline std::ostream &operator<<(std::ostream &out, Round const &round) { return round.insert(out); } typedef std::vector RoundVect; #endif simrisc-16.02.00/round/insert.cc0000664000175000017500000000041014665030471015342 0ustar frankfrank//#define XERR #include "round.ih" std::ostream &Round::insert(std::ostream &out) const { out << "age: " << static_cast(round(d_age)); for (uint16_t modalityIdx: d_modalities) out << ", " << d_modalityIDs[modalityIdx]; return out; } simrisc-16.02.00/round/round.ih0000664000175000017500000000022514665030471015204 0ustar frankfrank#include "round.h" #include "../xerr/xerr.ih" #include #include #include #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/round/icmconf0000664000175000017500000000007414665030471015076 0ustar frankfrank#define LIBRARY "round" #include "../icmconf.lib" simrisc-16.02.00/round/extract.cc0000664000175000017500000000106014665030471015512 0ustar frankfrank////#define XERR //#include "round.ih" // //std::istream &Round::extract(istream &in) //{ // string modality; // // if (in >> d_age >> modality) // at least one modality must be // { // specified // do // { // d_idx = d_modalities.size(); // d_modalities.push_back(move(modality)); // 'modality' must be // // configured // } // while (in >> modality); // // in.clear(); // } // // return in; //} // simrisc-16.02.00/round/opextract.cc0000664000175000017500000000056714665030471016064 0ustar frankfrank//#define XERR #include "round.ih" std::istream &operator>>(std::istream &in, Round &round) { string specification; in >> specification; if (specification == "none") round.d_age = END_AGE; else { istringstream inStr{ specification }; if (not (inStr >> round.d_age)) in.setstate(ios::failbit); } return in; } simrisc-16.02.00/round/frame0000664000175000017500000000006014665030471014545 0ustar frankfrank//#define XERR #include "round.ih" Round:: { } simrisc-16.02.00/round/add.cc0000664000175000017500000000040414665030471014571 0ustar frankfrank//#define XERR #include "round.ih" bool Round::add(uint16_t idx) { if ( find(d_modalities.begin(), d_modalities.end(), idx) != d_modalities.end() ) return false; d_modalities.push_back(idx); return true; } simrisc-16.02.00/run0000755000175000017500000000016414545530666013146 0ustar frankfrank#!/bin/bash ~/src/icmake/compile/tmp/bin/binary -t 4 tmp/jobs '/usr/bin/g++ -c -o $2 --std=c++23 -Wall -Werror $1' simrisc-16.02.00/scenario/0000775000175000017500000000000014665030471014210 5ustar frankfranksimrisc-16.02.00/scenario/scenario.ih0000664000175000017500000000052414665030471016336 0ustar frankfrank#include "scenario.h" #include "../xerr/xerr.ih" #include #include #include #include #include "../globals/globals.h" #include "../options/options.h" #include "../random/random.h" #include "../distribution/distribution.h" #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/scenario/find.cc0000664000175000017500000000046214665030471015441 0ustar frankfrank//#define XERR #include "scenario.ih" // static int Scenario::find(StringVect const &haystack, string const &needle) { auto iter = std::find(haystack.begin(), haystack.end(), needle); if (iter != haystack.end()) return iter - haystack.begin(); Err::specification(); return -1; } simrisc-16.02.00/scenario/setvary.cc0000664000175000017500000000057714665030471016225 0ustar frankfrank#define XERR #include "scenario.ih" void Scenario::setVary() { d_base.back() = "spread:"; bool vary = false; if (string spread; Parser::one(d_base, spread)) { if (int idx = find(s_bool, spread); idx != -1) vary = static_cast(idx); } Globals::setVary(vary); // xerr("vary = " << Globals::vary()); Random::initialize(); } simrisc-16.02.00/scenario/data.cc0000664000175000017500000000055014665030471015430 0ustar frankfrank//#define XERR #include "scenario.ih" StringVect Scenario::s_generatorType = { "fixed", // the SeedType ordering must "increasing", // correspond to the order of the "random", // GeneratorType enum's values }; StringVect Scenario::s_bool = { "false", "true" }; simrisc-16.02.00/scenario/checkcumdeath.cc0000664000175000017500000000173514665030471017315 0ustar frankfrank//#define XERR #include "scenario.ih" void Scenario::checkCumDeath(string const &source, LineInfo const *previous) const { if (size_t size = d_cumDeathProportions.size(); size != END_AGE) { previous = showLineInfo(previous); Err::msg(Err::CUM_DEATH) << source << "): " << END_AGE << " proportions required, " << size << " specified" << endl; } for (auto begin = d_cumDeathProportions.begin(), iter = begin, next = iter + 1, end = d_cumDeathProportions.end(); next < end; ++iter, ++next) { if (*next < *iter) { previous = showLineInfo(previous); Err::msg(Err::CUM_DEATH) << source << ") proportions decrease: " << (next - begin) << " (" << *next << ") less than " << (iter - begin) << " (" << *iter << ')' << endl; } } } simrisc-16.02.00/scenario/setdeath.cc0000664000175000017500000000142514665030471016322 0ustar frankfrank#define XERR #include "scenario.ih" void Scenario::setDeath() { LineInfo const *previous = 0; string cumDeath; if (cumDeath = Options::instance().cumDeathFile(); not cumDeath.empty()) readCumDeath(cumDeath); else { d_base.back() = "death:"; Parser::Lines lines = Parser::any(d_base); if (lines.size() == 1) readCumDeath(cumDeath = lines.get()->tail); else { cumDeath = "analysis specification"; LineInfo const *ptr = lines.get(); // skip the first (empty) line do previous = ptr; // keep the previous line while ((ptr = lines.get()) and appendCumDeath(ptr->tail)); } } checkCumDeath(cumDeath, previous); } simrisc-16.02.00/scenario/showlineinfo.cc0000664000175000017500000000037514665030471017230 0ustar frankfrank//#define XERR #include "scenario.ih" // static LineInfo const *Scenario::showLineInfo(LineInfo const *ptr) { if (ptr != 0) cout << "[Error] At line " << ptr->lineNr << " `" << ptr->tail << '\'' << endl; return 0; } simrisc-16.02.00/scenario/appendcumdeath.cc0000664000175000017500000000062514665030471017504 0ustar frankfrank//#define XERR #include "scenario.ih" bool Scenario::appendCumDeath(string const &line) { istringstream in{ line }; char ch; size_t nr; if ( not (in >> nr >> ch) or nr != (d_cumDeathProportions.size() + 1) or ch != ':' ) return false; double value; while (in >> value) d_cumDeathProportions.push_back(value); return true; } simrisc-16.02.00/scenario/setseed.cc0000664000175000017500000000034214665030471016152 0ustar frankfrank#define XERR #include "scenario.ih" void Scenario::setSeed() { if (d_generatorType == RANDOM_SEED) { d_seed = 0; return; } d_base.back() = "seed:"; Parser::nonNegative(d_base, d_seed); } simrisc-16.02.00/scenario/scenario1.cc0000664000175000017500000000035514665030471016406 0ustar frankfrank#define XERR #include "scenario.ih" Scenario::Scenario() : d_base{ "" } // 1st field set by set-members { setNiterations(); setNcases(); setGeneratorType(); setSeed(); setVary(); setDeath(); } simrisc-16.02.00/scenario/scenario.h0000664000175000017500000000467114665030471016174 0ustar frankfrank#ifndef INCLUDED_SCENARIO_ #define INCLUDED_SCENARIO_ #include // Scenario: // # default values are shown // // # use true for variable varying // spread: false // // iterations: 1 // // # random generator behavior: // # random, fixed, increasing // generator: random // // # initial seed unless using generator: random // seed: 1 // // # n cases to simulate // cases: 1000 // // death: #death.txt // 1: .00000 .00000 .00000 .00000 .00000 .00000 .00000 .00000 .00000 .00000 // 11: .00000 .00000 .00000 .00000 .00000 .00000 .00000 .00000 .00000 .00000 // ... (101 values) #include "../parser/parser.h" class Scenario { struct DLine // offending Death Line specification in case of errors { std::string const *line; size_t lineNr; }; StringVect d_base; GeneratorType d_generatorType; std::vector d_cumDeathProportions; size_t d_nIterations; size_t d_nCases; size_t d_seed; static StringVect s_generatorType; static StringVect s_bool; public: Scenario(); std::vector const &cumDeathProp() const; size_t nIterations() const; size_t seed() const; GeneratorType generatorType() const; size_t nCases() const; void writeParameters(std::ostream &out, size_t iter) const; private: bool appendCumDeath(std::string const &line); void checkCumDeath(std::string const &source, LineInfo const *previous) const; void readCumDeath(std::string const &fname); void setDeath(); // set the cum. death proportions void setNiterations(); // set n iteratations void setNcases(); // set nCases void setSeed(); // set seed value void setGeneratorType(); // set the random generator type void setVary(); // set variableSpread static int find(StringVect const &haystack, // must succeed or std::string const &needle); // Err::specification static LineInfo const *showLineInfo(LineInfo const *ptr); }; #include "scenario.f" #endif simrisc-16.02.00/scenario/icmconf0000664000175000017500000000007714665030471015555 0ustar frankfrank#define LIBRARY "scenario" #include "../icmconf.lib" simrisc-16.02.00/scenario/writeparameters.cc0000664000175000017500000000154014665030471017735 0ustar frankfrank//#define XERR #include "scenario.ih" void Scenario::writeParameters(ostream &out, size_t iter) const { out << "Scenario:\n" " iteration: " << iter << "\n" " generator: " << s_generatorType[d_generatorType] << "\n" " n iterations: " << d_nIterations << "\n" " n cases: " << d_nCases << "\n" " seed " << d_seed << "\n" " spread: " << s_bool[Globals::vary()] << '\n'; if (d_cumDeathProportions.size() != 0) { out << " death:"; size_t idx = 0; for (double prop: d_cumDeathProportions) { if (idx++ % 10 == 0) out << '\n' << setw(7) << idx << ':'; out << ' ' << prop; } if (idx % 10 != 0) out.put('\n'); } out.put('\n'); } simrisc-16.02.00/scenario/setgeneratortype.cc0000664000175000017500000000045314665030471020125 0ustar frankfrank#define XERR #include "scenario.ih" void Scenario::setGeneratorType() { d_base.back() = "generator:"; string type; if (Parser::one(d_base, type)) { if (int idx = find(s_generatorType, type); idx != -1) d_generatorType = static_cast(idx); } } simrisc-16.02.00/scenario/setncases.cc0000664000175000017500000000021614665030471016506 0ustar frankfrank#define XERR #include "scenario.ih" void Scenario::setNcases() { d_base.back() = "cases:"; Parser::nonNegative(d_base, d_nCases); } simrisc-16.02.00/scenario/setniterations.cc0000664000175000017500000000023714665030471017574 0ustar frankfrank//#define XERR #include "scenario.ih" void Scenario::setNiterations() { d_base.back() = "iterations:"; Parser::nonNegative(d_base, d_nIterations); } simrisc-16.02.00/scenario/scenario.f0000664000175000017500000000060614665030471016164 0ustar frankfrankinline std::vector const &Scenario::cumDeathProp() const { return d_cumDeathProportions; } inline size_t Scenario::nIterations() const { return d_nIterations; } inline size_t Scenario::seed() const { return d_seed; } inline GeneratorType Scenario::generatorType() const { return d_generatorType; } inline size_t Scenario::nCases() const { return d_nCases; } simrisc-16.02.00/scenario/frame0000664000175000017500000000006614665030471015227 0ustar frankfrank//#define XERR #include "scenario.ih" Scenario:: { } simrisc-16.02.00/scenario/readcumdeath.cc0000664000175000017500000000124214665030471017144 0ustar frankfrank//#define XERR #include "scenario.ih" void Scenario::readCumDeath(string const &fname) { ifstream in = Exception::factory(fname); string line; size_t lineNr = 0; while (getline(in, line)) { ++lineNr; if ( size_t pos = line.find_first_not_of(" \t"); // ignore empty and pos == string::npos or line[pos] == '#' // comment lines ) continue; if (not appendCumDeath(line)) { Err::msg(Err::CUM_DEATH) << fname << " line " << lineNr << "): format error in `" << line << '\'' << endl; return; } } } simrisc-16.02.00/screening/0000775000175000017500000000000014665030471014362 5ustar frankfranksimrisc-16.02.00/screening/screening.f0000664000175000017500000000050414665030471016505 0ustar frankfrankinline bool Screening::attend(size_t idx) const // 24/1 { return d_attend[idx]; } inline double Screening::rate() const { return d_rate; } inline uint16_t Screening::nRounds() const { return d_roundVect.size(); } inline Round const &Screening::round(size_t idx) const { return d_roundVect[idx]; } simrisc-16.02.00/screening/ages.cc0000664000175000017500000000030214665030471015603 0ustar frankfrank//#define XERR #include "screening.ih" DoubleVect Screening::ages() const { DoubleVect ret; for (auto const &round: d_roundVect) ret.push_back(round.age()); return ret; } simrisc-16.02.00/screening/addmodality.cc0000664000175000017500000000347614665030471017176 0ustar frankfrank#define XERR #include "screening.ih" bool Screening::addModality(istream &in, Round &round) { string modality; // determine the modalities to use while (in >> modality) { Err::Context context; if (uint16_t idx = d_modalities.find(modality); idx == UNDEFINED) context = Err::UNDEFINED_MODALITY; // ------------------------------------------- // lungCancer CT action // ------------------------------------------- // 0 0 add // 0 1 BC_CT_INVALID // 1 0 LC_INVALID_MODALITY // 1 1 add // ------------------------------------------- // if LC simulation is requested // but no CT modality requested else if (d_lungCancer and modality != "CT") { Err::msg(Err::LC_INVALID_MODALITY) << modality << endl; return false; } // BC simulation and CT is spec'd else if (not d_lungCancer and modality == "CT") context = Err::BC_CT_INVALID; else { // TODO: the last entry in d_roundVect (may still be empty) // may not contain modality 'idx' if (round.add(idx)) { d_modalities.activate(modality); continue; } context = Err::MODALITY_REPEATED; } Err::msg(context) << modality << endl; return false; } return true; } // if ((this->*d_checkCT)(modality)) // issue one warning if CT is // continue; // not specified simrisc-16.02.00/screening/screening.h0000664000175000017500000001244614665030471016517 0ustar frankfrank#ifndef INCLUDED_SCREENING_ #define INCLUDED_SCREENING_ // Screening: // // # round: age space separated modalities. // round: 50 Mammo // round: 52 Mammo // round: 54 Mammo // round: 56 Mammo // round: 58 Mammo // round: 60 Mammo // round: 62 Mammo // round: 64 Mammo // round: 66 Mammo // round: 68 Mammo // round: 70 Mammo // round: 72 Mammo // round: 74 Mammo // alternatively: // round: none // // # screening value // attendanceRate: .8 // #include #include "../round/round.h" class Modalities; class Screening { Modalities &d_modalities; StringVect d_base; // this vector's size holds the RoundVect d_roundVect; // #rounds BoolVect d_attend; // true: case attends the round // attendance rate, configured at double d_rate; // Screening: attendanceRate: // points to static members: // errRisk1404 or void (*d_errRiskVector)(DoubleVect &, // errRiskA1405 Modalities const &, Round const &, uint16_t, double, double); bool d_lungCancer; public: Screening(Modalities &modalities); double rate() const; // .f DoubleVect radiationRisk( // 24/1 also sets d_attend's values Modalities const &modalities, Uint16Vect const &indices, double beta, double eta); // beir7 values DoubleVect ages() const; // vector of ages of the screening rounds uint16_t nRounds() const; // .f double roundAge(size_t idx) const; // age at round idx .f // roundIdx is, e.g. Round const &round(size_t roundIdx) const; // Loop::d_round .f void writeParameters(std::ostream &out) const; bool attend(size_t idx) const; // 24/1 true: case attended this round private: bool addModality(std::istream &in, Round &round); // false: round: none, noneLine // has the last noneLine bool addRound(LineInfo *noneLine, LineInfo const &line); bool increasingAge(Round const &round) const; static void errRisk1404(DoubleVect &riskVect, Modalities const &modalities, Round const &round, uint16_t biRadIdx, double beta, double eta); static void errRisk1405(DoubleVect &riskVect, Modalities const &modalities, Round const &round, uint16_t biRadIdx, double beta, double eta); // called by errRiskRelative static double beir7Err(Round const &round, uint16_t idx, double beta, double eta, Modalities const &modalities); // called by earRisk static double beir7Err(uint16_t age, Round const &round, uint16_t idx, double beta, double eta, Modalities const &modalities); void setAttendanceRate(); void setRounds(); // bool warnCT(std::string const &modality); // bool warnedCT(std::string const &modality); // bool warnNotCT(std::string const &modality); // bool warnedNotCT(std::string const &modality); }; #include "screening.f" // // CT for lung cancer, // // not CT for breast cancer // bool (Screening::*d_checkCT)(std::string const &modality); // // void beir7dose(double const *dose); // .h // // // // // RoundVect const &rounds() const; // // // StringSet const &modalities() const; // double const *d_beir7dose; // set from Screening using // // beir7dose() // // RoundVect d_rounds; // StringSet d_modalities; // specified modalities // void set(Distribution *dest, // 1 // Scenario const &scenario, char const *id); // // 2 // static bool set(Distribution *dest, // Scenario::const_iterator const &iter); // // // inline StringSet const &Screening::modalities() const // { // return d_modalities; // } // // inline RoundVect const &Screening::rounds() const // { // return d_rounds; // } // // inline void Screening::beir7dose(double const *dose) // { // d_beir7dose = dose; // } //////////////////////////////////////////////////////////// // inline double Screening::Distribution::value() const // { // return d_value; // } // static char const s_errorID[]; // static char const s_attendanceID[]; // static char const s_roundID[]; #endif simrisc-16.02.00/screening/roundage.cc0000664000175000017500000000022214665030471016471 0ustar frankfrank//#define XERR #include "screening.ih" double Screening::roundAge(size_t idx) const { double ret = d_roundVect[idx].age(); return ret; } simrisc-16.02.00/screening/errrisk1404.cc0000664000175000017500000000144314665030471016665 0ustar frankfrank//#define XERR #include "screening.ih" // (deprecated, used for backward compatibility) // called from radiationrisk.cc // index is the biRad column index to use with BC // and 0 when used with LC, as LC has no dose variation. // static void Screening::errRisk1404(DoubleVect &vect, Modalities const &modalities, Round const &round, uint16_t index, double beta, double eta) { // compute beir7Err once, double error = beir7Err(round, index, beta, eta, modalities); // then visit all subsequent ages for (uint16_t age = round.rndAge() + 1; age != END_AGE; ++age) vect[age] *= error; } simrisc-16.02.00/screening/setattendancerate.cc0000664000175000017500000000027214665030471020370 0ustar frankfrank//#define XERR #include "screening.ih" // attendanceRate: 0.8 void Screening::setAttendanceRate() { d_base.back() = "attendanceRate:"; Parser::proportion(d_base, d_rate); } simrisc-16.02.00/screening/addround.cc0000664000175000017500000000137514665030471016477 0ustar frankfrank#define XERR #include "screening.ih" // false: round: none was specified // true: round: age modality/ties was specified bool Screening::addRound(LineInfo *noneLine, LineInfo const &lineInfo) { Round round(d_modalities.modalityIDs()); //xerr(lineInfo.txt); auto in = Parser::extract(lineInfo, round); // extracts the age if (round.none()) { *noneLine = lineInfo; // save the last round: none line return false; } if (not in) return true; if (not increasingAge(round)) // ages must increase { Err::msg(Err::ROUND_AGES_DONT_INC) << endl; return true; } if (addModality(in, round)) d_roundVect.push_back(move(round)); return true; } simrisc-16.02.00/screening/icmconf0000664000175000017500000000010014665030471015712 0ustar frankfrank#define LIBRARY "screening" #include "../icmconf.lib" simrisc-16.02.00/screening/radiationrisk.cc0000664000175000017500000000403514665030471017536 0ustar frankfrank#define XERR #include "screening.ih" // called from loop/initialize.cc // indices are Breast bi-rad indices used for the screening round // ages, determined by Densities // or lung-cancer table S3 indices // to use for the ages of the screening rounds extern size_t g_caseIdx; DoubleVect Screening::radiationRisk( Modalities const &modalities, Uint16Vect const &indices, double beta, double eta) // beir7 values { DoubleVect vect = DoubleVect(END_AGE, 1); //xerr("d_errRiskVector: " << d_errRiskVector); g_log << " Screening::radiationRisk:\n" " rate: " << d_rate << ", beta: " << beta << ", eta: " << eta << " using " << ( d_errRiskVector == errRisk1405 ? "errRisk1405\n" : "errRisk1404\n" ); d_attend = BoolVect( d_roundVect.size() ); // 24/1 for ( size_t roundIdx = 0, end = d_roundVect.size(); roundIdx != end; ++roundIdx ) { // probabilities *lower* than the attendance rate mean the case // is attending. if (double rnd = Random::instance().uniform(); rnd > d_rate) g_log << " round " << roundIdx << ": rnd = " << rnd << " > rate: round not attended (" << d_attend[roundIdx] << ")\n"; else { d_attend[roundIdx] = true; // 24/1 g_log << " round " << roundIdx << ", rnd = " << rnd << " <= rate: compute radiation risk\n"; (*d_errRiskVector) // errRisk1405, or (deprecated) with option ( // -e: errRisk1404 vect, modalities, d_roundVect[roundIdx], indices[roundIdx], beta, eta ); } } return vect; } simrisc-16.02.00/screening/writeparameters.cc0000664000175000017500000000065214665030471020112 0ustar frankfrank//#define XERR #include "screening.ih" void Screening::writeParameters(ostream &out) const { //Globals::setPrecision(out, 3) << out << "Screening:\n" " attendanceRate: " << d_rate << "\n" " rounds: " << d_roundVect.size() << '\n'; for (auto const &round: d_roundVect) out << " " << round << '\n'; // Globals::setPrecision(out, 3).put('\n'); out.put('\n'); } simrisc-16.02.00/screening/screening1.cc0000664000175000017500000000075514665030471016736 0ustar frankfrank#define XERR #include "screening.ih" Screening::Screening(Modalities &modalities) : d_modalities(modalities), d_base{ "" }, // option -e is deprecated and is only available for reasons of // backward compatibility. d_errRiskVector(Arg::instance().option('e') ? errRisk1404 : errRisk1405), d_lungCancer(not Globals::isBreast()) { setAttendanceRate(); // from the config file setRounds(); // from the config file } simrisc-16.02.00/screening/beir7err2.cc0000664000175000017500000000122514665030471016474 0ustar frankfrank//#define XERR #include "screening.ih" // called from errRisk1405.cc // index is the biRad column index to use with BC // and 0 when used with LC, as LC has no dose variation. // static double Screening::beir7Err(uint16_t age, Round const &round, uint16_t index, double beta, double eta, Modalities const &modalities) { double risk = 1; double factor = beta * pow(age / 60.0, eta) / 1000; //g_log << age << ' ' << index << ' ' << factor << '\n'; for (ModBase const *modBase: modalities.use(round.modalityIndices())) risk *= (1 + factor * modBase->dose(index)); return risk; } simrisc-16.02.00/screening/errrisk1405.cc0000664000175000017500000000137014665030471016665 0ustar frankfrank//#define XERR #include "screening.ih" // called from radiationrisk.cc // index is the biRad column index to use with BC // and 0 when used with LC, as LC has no dose variation. // static void Screening::errRisk1405(DoubleVect &vect, Modalities const &modalities, Round const &round, uint16_t index, double beta, double eta) { // visit all subsequent ages, and compute // beir7Err separately for each age // (beir7err2.cc) for (uint16_t age = round.rndAge() + 1; age != END_AGE; ++age) vect[age] *= beir7Err(age, round, index, beta, eta, modalities); } simrisc-16.02.00/screening/frame0000664000175000017500000000007014665030471015374 0ustar frankfrank//#define XERR #include "screening.ih" Screening:: { } simrisc-16.02.00/screening/beir7err1.cc0000664000175000017500000000127014665030471016473 0ustar frankfrank//#define XERR #include "screening.ih" // called from (deprecated) errRisk1404.cc // index is the biRad column index to use with BC // and 0 when used with LC, as LC has no dose variation. // static double Screening::beir7Err(Round const &round, uint16_t index, double beta, double eta, Modalities const &modalities) { double risk = 1; double factor = beta * pow(round.age() / 60, eta) / 1000; // for modalities not defining 'dose' (MRI) // 0 is returned for (ModBase const *modBase: modalities.use(round.modalityIndices())) risk *= (1 + factor * modBase->dose(index)); return risk; } simrisc-16.02.00/screening/increasingage.cc0000664000175000017500000000044114665030471017467 0ustar frankfrank//#define XERR #include "screening.ih" bool Screening::increasingAge(Round const &round) const { return d_roundVect.empty() or Globals::weakCompare(d_roundVect.back().age() + 1, round.age()) != 1; // new age must be at least last age + 1 ; } simrisc-16.02.00/screening/setrounds.cc0000664000175000017500000000121414665030471016715 0ustar frankfrank#define XERR #include "screening.ih" void Screening::setRounds() { d_base.back() = "round:"; auto lines = Parser::any(d_base); // obtain the 'round:' lines bool allOK = true; LineInfo noneLine; while (true) { LineInfo const *line = lines.get(); if (line == 0) break; // add a round specification allOK = addRound(&noneLine, *line) and allOK; } if (d_roundVect.size() and not allOK) // not all rounds were OK { Err::reset(noneLine); Err::msg(Err::ROUND_NONE) << noneLine.txt << endl; } } simrisc-16.02.00/screening/screening.ih0000664000175000017500000000054614665030471016666 0ustar frankfrank#include "screening.h" #include "../xerr/xerr.ih" #include //#include "../options/options.h" #include "../random/random.h" #include "../modbase/modbase.h" #include "../globals/globals.h" #include "../modalities/modalities.h" #include "../parser/parser.h" #include "../log/log.h" #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/simrisc0000777000175000017500000000000014630012742015361 2simriscustar frankfranksimrisc-16.02.00/simrisc.xref0000664000175000017500000064254614665030471014765 0ustar frankfrankoxref by Frank B. Brokken (f.b.brokken@rug.nl) oxref V 2.01.00 2012-2023 CREATED Sun, 07 Apr 2024 09:20:23 +0000 OXREF ARGUMENTS: -t main -r replacements -fxs tmp/main.o tmp/libofiles.a ---------------------------------------------------------------------- CROSS REFERENCE LISTING: accept(double&) Full name: VSD::accept(double&) Source: accept.cc Used By: data.cc: GLOBALS data.cc 20data.o accept(double) const Full name: Distribution::accept(double) const Source: accept.cc Used By: distribution1.cc: Distribution::Distribution(VaryType) activate() Full name: Options::activate() Source: activate.cc Used By: actualize.cc: Analysis::actualize(std::vector const&) active() Full name: Modalities::active() Source: active.cc Used By: iterate.cc: Loop::iterate() actualize() Full name: Options::actualize() Source: actualize.cc Used By: actualize.cc: Analysis::actualize(std::vector const&) actualize(std::vector const&) Full name: Analysis::actualize(std::vector const&) Source: actualize.cc Used By: analysis1.cc: Analysis::Analysis(std::istream&&, unsigned short) add(bool*, LineInfo const&) Full name: Densities::add(bool*, LineInfo const&) Source: add.cc Used By: densities1.cc: Densities::Densities() add(bool*, LineInfo const&) Full name: CT::add(bool*, LineInfo const&) Source: add.cc Used By: setsensitivity.cc: CT::setSensitivity() add(unsigned short) Full name: Round::add(unsigned short) Source: add.cc Used By: addmodality.cc: Screening::addModality(std::istream&, Round&) addConfigLine(std::vector*>&, ConfigLines&, ParamsSrc) Full name: Parser::addConfigLine(std::vector*>&, ConfigLines&, ParamsSrc) Source: addconfigline.cc Used By: load1.cc: Parser::load(std::istream&, unsigned short, std::vector&, std::vector&) load2.cc: Parser::load(std::string const&) addCost(double) Full name: Loop::addCost(double) Source: addcost.cc Used By: intervalcancer.cc: Loop::intervalCancer() maybefalsepositive.cc: Loop::maybeFalsePositive(ModBase*, double) screen.cc: Loop::screen(double) tumordetected.cc: Loop::tumorDetected(ModBase*, double) addMod(ModBase*) Full name: Modalities::addMod(ModBase*) Source: addmod.cc Used By: modalities1.cc: Modalities::Modalities(Tumor const&) addModality(std::istream&, Round&) Full name: Screening::addModality(std::istream&, Round&) Source: addmodality.cc Used By: addround.cc: Screening::addRound(LineInfo*, LineInfo const&) addRound(LineInfo*, LineInfo const&) Full name: Screening::addRound(LineInfo*, LineInfo const&) Source: addround.cc Used By: setrounds.cc: Screening::setRounds() AgeGroupVSD(VaryType, bool, bool) Full name: AgeGroupVSD::AgeGroupVSD(VaryType, bool, bool) Source: agegroupvsd1.cc Used By: specificitybase.cc: ModBase::specificityBase(std::vector&) setdoublingtime.cc: Growth::setDoublingTime() ageGroupVSDbreast(unsigned short) const Full name: Growth::ageGroupVSDbreast(unsigned short) const Source: agegroupvsdbreast.cc Used By: setdoublingtime.cc: Growth::setDoublingTime() ageGroupVSDlung(unsigned short) const Full name: Growth::ageGroupVSDlung(unsigned short) const Source: agegroupvsdlung.cc Used By: setdoublingtime.cc: Growth::setDoublingTime() ages() const Full name: Screening::ages() const Source: ages.cc Used By: cptindices.cc: Loop::cptIndices() const alter(int, std::string const&) Full name: Options::alter(int, std::string const&) Source: alter.cc Used By: actualize.cc: Analysis::actualize(std::vector const&) Analysis(std::istream&&, unsigned short) Full name: Analysis::Analysis(std::istream&&, unsigned short) Source: analysis1.cc Used By: run.cc: Simulator::run() any(std::vector const&) Full name: Parser::any(std::vector const&) Source: any.cc Used By: fillrisktable.cc: TableParams::fillRiskTable(std::vector&) setrounds.cc: Screening::setRounds() densities1.cc: Densities::Densities() setsensitivity.cc: CT::setSensitivity() one.cc: Parser::one(std::vector const&) vsdparameters1.cc: Parser::VSDparameters(VaryType, std::vector const&, std::initializer_list const&) setdeath.cc: Scenario::setDeath() setdoublingtime.cc: Growth::setDoublingTime() loads3.cc: Survival::loadS3() appendCumDeath(std::string const&) Full name: Scenario::appendCumDeath(std::string const&) Source: appendcumdeath.cc Used By: readcumdeath.cc: Scenario::readCumDeath(std::string const&) setdeath.cc: Scenario::setDeath() appendPair(std::string const&) Full name: TableParams::appendPair(std::string const&) Source: appendpair.cc Used By: fillrisktable.cc: TableParams::fillRiskTable(std::vector&) atLeast(double) Full name: Err::atLeast(double) Source: atleast.cc Used By: setlungcancer.cc: Costs::setLungCancer() atleast.cc: Parser::atLeast(double, std::vector const&, double&) setstart.cc: Growth::setStart() atLeast(double, std::vector const&, double&) Full name: Parser::atLeast(double, std::vector const&, double&) Source: atleast.cc Used By: setage.cc: Costs::setAge() setvariables.cc: Costs::setVariables(bool) modbase1.cc: ModBase::ModBase(std::string const&) setncases.cc: Scenario::setNcases() setniterations.cc: Scenario::setNiterations() setseed.cc: Scenario::setSeed() author Full name: Icmake::author Source: version.cc Used By: usage.cc: usage(std::string const&) baseOption() Full name: Options::baseOption() Source: baseoption.cc Used By: options1.cc: Options::Options() Beir7() Full name: Beir7::Beir7() Source: beir71.cc Used By: loop1.cc: Loop::Loop(std::vector const&) beir7Err(Round const&, unsigned short, double, double, Modalities const&) Full name: Screening::beir7Err(Round const&, unsigned short, double, double, Modalities const&) Source: beir7err1.cc Used By: errrisk1404.cc: Screening::errRisk1404(std::vector&, Modalities const&, Round const&, unsigned short, double, double) beir7Err(unsigned short, Round const&, unsigned short, double, double, Modalities const&) Full name: Screening::beir7Err(unsigned short, Round const&, unsigned short, double, double, Modalities const&) Source: beir7err2.cc Used By: errrisk1405.cc: Screening::errRisk1405(std::vector&, Modalities const&, Round const&, unsigned short, double, double) BetaDist(std::istream&) Full name: BetaDist::BetaDist(std::istream&) Source: betadist1.cc Used By: preparebeta.cc: Random::prepareBeta(std::istream&) betaVary() Full name: Random::betaVary() Source: betavary.cc Used By: varybeta.cc: Distribution::varyBeta(double) const caseIdx(unsigned long) Full name: Log::caseIdx(unsigned long) Source: caseidx.cc Used By: gencases.cc: Loop::genCases(unsigned long, unsigned long) caseInit() Full name: Loop::caseInit() Source: caseinit.cc Used By: gencases.cc: Loop::genCases(unsigned long, unsigned long) cases() const Full name: Loop::cases() const Source: cases.cc Used By: iterate.cc: Loop::iterate() characteristicsAt(double) Full name: Tumor::characteristicsAt(double) Source: characteristicsat.cc Used By: leaving.cc: Loop::leaving(double) postscreen.cc: Loop::postScreen() tumordetected.cc: Loop::tumorDetected(ModBase*, double) checkCumDeath(std::string const&, LineInfo const*) const Full name: Scenario::checkCumDeath(std::string const&, LineInfo const*) const Source: checkcumdeath.cc Used By: setdeath.cc: Scenario::setDeath() checkIncreasing() Full name: TableParams::checkIncreasing() Source: checkincreasing.cc Used By: checktable.cc: TableParams::checkTable() checkRedo(ConfigLines&) Full name: Parser::checkRedo(ConfigLines&) Source: checkredo.cc Used By: addconfigline.cc: Parser::addConfigLine(std::vector*>&, ConfigLines&, ParamsSrc) checkTable() Full name: TableParams::checkTable() Source: checktable.cc Used By: fillrisktable.cc: TableParams::fillRiskTable(std::vector&) cmdLineAnalysis() Full name: Simulator::cmdLineAnalysis() Source: cmdlineanalysis.cc Used By: setanalysissource.cc: Simulator::setAnalysisSource() ConfigLines(std::istream&, unsigned short) Full name: ConfigLines::ConfigLines(std::istream&, unsigned short) Source: configlines2.cc Used By: load1.cc: Parser::load(std::istream&, unsigned short, std::vector&, std::vector&) ConfigLines(std::string const&) Full name: ConfigLines::ConfigLines(std::string const&) Source: configlines1.cc Used By: load2.cc: Parser::load(std::string const&) configOption() Full name: Options::configOption() Source: configoption.cc Used By: options1.cc: Options::Options() conflictCheck() const Full name: Options::conflictCheck() const Source: conflictcheck.cc Used By: actualize.cc: Options::actualize() connects(Group const&) const Full name: Group::connects(Group const&) const Source: connects.cc Used By: add.cc: Densities::add(bool*, LineInfo const&) specificitybase.cc: ModBase::specificityBase(std::vector&) setdoublingtime.cc: Growth::setDoublingTime() loads3.cc: Survival::loadS3() contains(double) const Full name: Group::contains(double) const Source: contains.cc Used By: vsensitivity.cc: CT::vSensitivity(unsigned long) const probindexof.cc: ProbGroup::probIndexOf(std::vector const&, double, double) cost(double) const Full name: Costs::cost(double) const Source: cost.cc Used By: othertreatment.cc: Costs::otherTreatment(double, double, bool) const Costs() Full name: Costs::Costs() Source: costs1.cc Used By: loop1.cc: Loop::Loop(std::vector const&) cptIndices() const Full name: Loop::cptIndices() const Source: cptindices.cc Used By: caseinit.cc: Loop::caseInit() cptTNM(double) Full name: Survival::cptTNM(double) Source: cpttnm.cc Used By: survival1.cc: Survival::Survival() cptTumorRisk() Full name: Incidence::cptTumorRisk() Source: cpttumorrisk.cc Used By: incidence1.cc: Incidence::Incidence() vary.cc: Incidence::vary(std::ostream&) cptVSDrow(double) Full name: Survival::cptVSDrow(double) Source: cptvsdrow.cc Used By: survival1.cc: Survival::Survival() CT(Tumor const&) Full name: CT::CT(Tumor const&) Source: ct1.cc Used By: modalities1.cc: Modalities::Modalities(Tumor const&) cumDeathOption(std::string const&) Full name: Options::cumDeathOption(std::string const&) Source: cumdeathoption.cc Used By: options1.cc: Options::Options() cumTotalRisk(std::vector const&) Full name: TumorInfo::cumTotalRisk(std::vector const&) Source: cumtotalrisk.cc Used By: caseinit.cc: Loop::caseInit() deathAge(std::string const&) Full name: Options::deathAge(std::string const&) Source: deathage.cc Used By: alter.cc: Options::alter(int, std::string const&) deathageoption.cc: Options::deathAgeOption(std::string const&) deathAgeOption(std::string const&) Full name: Options::deathAgeOption(std::string const&) Source: deathageoption.cc Used By: options1.cc: Options::Options() Densities() Full name: Densities::Densities() Source: densities1.cc Used By: loop1.cc: Loop::Loop(std::vector const&) discount(double, unsigned long) const Full name: Costs::discount(double, unsigned long) const Source: discount.cc Used By: lctreatment.cc: Costs::lcTreatment(double, double, bool) const othertreatment.cc: Costs::otherTreatment(double, double, bool) const maybefalsepositive.cc: Loop::maybeFalsePositive(ModBase*, double) screen.cc: Loop::screen(double) Distribution(VaryType) Full name: Distribution::Distribution(VaryType) Source: distribution1.cc Used By: vsd1.cc: VSD::VSD(VaryType) doseBase(std::vector&) Full name: ModBase::doseBase(std::vector&) Source: dosebase.cc Used By: tomo1.cc: Tomo::Tomo() mammo1.cc: Mammo::Mammo(Tumor const&) endPoint(std::pair const&) Full name: Parser::endPoint(std::pair const&) Source: endpoint.cc Used By: addconfigline.cc: Parser::addConfigLine(std::vector*>&, ConfigLines&, ParamsSrc) initlineinfovects.cc: Parser::initLineInfoVects(std::unordered_map&) rmlineinfovectors.cc: Parser::rmLineInfoVectors(std::unordered_map&) errRisk1404(std::vector&, Modalities const&, Round const&, unsigned short, double, double) Full name: Screening::errRisk1404(std::vector&, Modalities const&, Round const&, unsigned short, double, double) Source: errrisk1404.cc Used By: screening1.cc: Screening::Screening(Modalities&) errRisk1405(std::vector&, Modalities const&, Round const&, unsigned short, double, double) Full name: Screening::errRisk1405(std::vector&, Modalities const&, Round const&, unsigned short, double, double) Source: errrisk1405.cc Used By: radiationrisk.cc: Screening::radiationRisk(Modalities const&, std::vector const&, double, double) screening1.cc: Screening::Screening(Modalities&) extract(char const*, VSD&) Full name: CT::extract(char const*, VSD&) Source: extract.cc Used By: setspecificity.cc: CT::setSpecificity() extract(char const*, VSD&) Full name: MRI::extract(char const*, VSD&) Source: extract.cc Used By: setsensitivity.cc: MRI::setSensitivity() setspecificity.cc: MRI::setSpecificity() extract(std::istream&) Full name: Distribution::extract(std::istream&) Source: extract.cc Used By: extract.cc: VSD::extract(std::istream&) extract(std::istream&) Full name: AgeGroupVSD::extract(std::istream&) Source: extract.cc Used By: specificitybase.cc: ModBase::specificityBase(std::vector&) setdoublingtime.cc: GLOBALS setdoublingtime.cc 7setdoublingtime.o extract(std::istream&) Full name: ProbGroup::extract(std::istream&) Source: extract.cc Used By: add.cc: Densities::add(bool*, LineInfo const&) loads3.cc: Survival::loadS3() extract(std::istream&) Full name: VSD::extract(std::istream&) Source: extract.cc Used By: vsdparams1.cc: GLOBALS vsdparams1.cc 10vsdparams1.o beir71.cc: GLOBALS beir71.cc 13beir71.o extractbase.cc: ModBase::extractBase(VSD&) extract.cc: AgeGroupVSD::extract(std::istream&) vsdparameters1.cc: Parser::VSDparameters(VaryType, std::vector const&, std::initializer_list const&) vsdparameters2.cc: Parser::VSDparameters(VaryType, std::vector const&, unsigned long) setselfdetect.cc: Growth::setSelfDetect() extract(std::istream&) Full name: Group::extract(std::istream&) Source: extract.cc Used By: add.cc: CT::add(bool*, LineInfo const&) extract.cc: ProbGroup::extract(std::istream&) extract.cc: AgeGroupVSD::extract(std::istream&) extractBase(VSD&) Full name: ModBase::extractBase(VSD&) Source: extractbase.cc Used By: extract.cc: CT::extract(char const*, VSD&) extract.cc: MRI::extract(char const*, VSD&) extractDiameters(Parser::Lines&&) Full name: Costs::extractDiameters(Parser::Lines&&) Source: extractdiameters.cc Used By: setdiameters.cc: Costs::setDiameters() falseNegative(ModBase*) Full name: Loop::falseNegative(ModBase*) Source: falsenegative.cc Used By: maybefalsenegative.cc: Loop::maybeFalseNegative(ModBase*, double) fileAnalysis() Full name: Simulator::fileAnalysis() Source: fileanalysis.cc Used By: setanalysissource.cc: Simulator::setAnalysisSource() fileOption(std::string*, int) Full name: Options::fileOption(std::string*, int) Source: fileoption.cc Used By: options1.cc: Options::Options() fillRiskTable(std::vector&) Full name: TableParams::fillRiskTable(std::vector&) Source: fillrisktable.cc Used By: tableparams1.cc: TableParams::TableParams(std::vector&, unsigned long, bool) fillTNM(std::ostream&) Full name: Loop::fillTNM(std::ostream&) Source: filltnm.cc Used By: loop1.cc: Loop::Loop(std::vector const&) find(std::string const&) Full name: Distribution::find(std::string const&) Source: find.cc Used By: extract.cc: Distribution::extract(std::istream&) xlat.cc: Distribution::xlat(LineInfo const&, std::string const&) find(std::string const&) const Full name: Modalities::find(std::string const&) const Source: find.cc Used By: active.cc: Modalities::active() addmodality.cc: Screening::addModality(std::istream&, Round&) find(std::vector const&, std::string const&) Full name: Scenario::find(std::vector const&, std::string const&) Source: find.cc Used By: setgeneratortype.cc: Scenario::setGeneratorType() setvary.cc: Scenario::setVary() findAge(std::vector const&, double) Full name: Globals::findAge(std::vector const&, double) Source: findage.cc Used By: naturaldeathage.cc: Loop::naturalDeathAge() tumorage.cc: Tumor::tumorAge() findSimType(std::string const&) Full name: Globals::findSimType(std::string const&) Source: findsimtype.cc Used By: setsimulationtype.cc: Options::setSimulationType() fixedNaturalDeathAge(double&) const Full name: Options::fixedNaturalDeathAge(double&) const Source: fixednaturaldeathage.cc Used By: caseinit.cc: Loop::caseInit() fixedTumorAge(double&) const Full name: Options::fixedTumorAge(double&) const Source: fixedtumorage.cc Used By: tumorage.cc: Tumor::tumorAge() fmt(unsigned int, char const*, char, unsigned int, unsigned int, unsigned int, unsigned int) Full name: VSD::fmt(unsigned int, char const*, char, unsigned int, unsigned int, unsigned int, unsigned int) Source: fmt2.cc Used By: vinsert.cc: Tomo::vInsert(std::ostream&) const vinsert.cc: Mammo::vInsert(std::ostream&) const lungparameters.cc: Survival::lungParameters(std::ostream&) const writebreast.cc: Survival::writeBreast(std::ostream&) const fmt(unsigned int, unsigned int) Full name: Distribution::fmt(unsigned int, unsigned int) Source: fmt.cc Used By: fmt1.cc: VSD::fmt(unsigned int, unsigned int, unsigned int, unsigned int) fmt(unsigned int, unsigned int, unsigned int, unsigned int) Full name: VSD::fmt(unsigned int, unsigned int, unsigned int, unsigned int) Source: fmt1.cc Used By: vwriteparameters.cc: VSDParams::v_writeParameters(std::ostream&) const writeparameters.cc: Beir7::writeParameters(std::ostream&) const fmt2.cc: VSD::fmt(unsigned int, char const*, char, unsigned int, unsigned int, unsigned int, unsigned int) vinsert.cc: CT::vInsert(std::ostream&) const vinsert.cc: MRI::vInsert(std::ostream&) const fmt.cc: AgeGroupVSD::fmt(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) writeparameters.cc: Growth::writeParameters(std::ostream&) const fmt(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) Full name: AgeGroupVSD::fmt(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) Source: fmt.cc Used By: vinsert.cc: Tomo::vInsert(std::ostream&) const vinsert.cc: Mammo::vInsert(std::ostream&) const writeparameters.cc: Growth::writeParameters(std::ostream&) const functionF(double) const Full name: Tumor::functionF(double) const Source: functionf.cc Used By: setdeathage.cc: Tumor::setDeathAge(double) functionQ(double) const Full name: Tumor::functionQ(double) const Source: functionq.cc Used By: functionf.cc: Tumor::functionF(double) const functionZ(double) const Full name: Tumor::functionZ(double) const Source: functionz.cc Used By: functionf.cc: Tumor::functionF(double) const g_log Full name: g_log Source: data.cc Used By: radiationrisk.cc: Screening::radiationRisk(Modalities const&, std::vector const&, double, double) logoption.cc: Options::logOption(std::string const&) lognormal.cc: Random::logNormal(double, double) uniform.cc: Random::uniform() uniformcase.cc: Random::uniformCase() uniformvsd.cc: Random::uniformVSD() caseinit.cc: Loop::caseInit() falsenegative.cc: Loop::falseNegative(ModBase*) gencases.cc: Loop::genCases(unsigned long, unsigned long) left.cc: Loop::left(Loop::Status, double) maybefalsepositive.cc: Loop::maybeFalsePositive(ModBase*, double) naturaldeathage.cc: Loop::naturalDeathAge() postscreen.cc: Loop::postScreen() screen.cc: Loop::screen(double) screening.cc: Loop::screening() characteristicsat.cc: Tumor::characteristicsAt(double) reset.cc: Tumor::reset() setdeathage.cc: Tumor::setDeathAge(double) tumorage.cc: Tumor::tumorAge() cptvsdrow.cc: Survival::cptVSDrow(double) g_longEnd Full name: g_longEnd Source: main.cc Used By: actualize.cc: Analysis::actualize(std::vector const&) g_longOpts Full name: g_longOpts Source: main.cc Used By: actualize.cc: Analysis::actualize(std::vector const&) genCases(unsigned long, unsigned long) Full name: Loop::genCases(unsigned long, unsigned long) Source: gencases.cc Used By: iterate.cc: Loop::iterate() get() Full name: Parser::Lines::get() Source: linesget.cc Used By: vsdparams1.cc: GLOBALS vsdparams1.cc 10vsdparams1.o fillrisktable.cc: TableParams::fillRiskTable(std::vector&) beir71.cc: GLOBALS beir71.cc 13beir71.o extractdiameters.cc: Costs::extractDiameters(Parser::Lines&&) setlungcancer.cc: Costs::setLungCancer() setproportion.cc: Costs::setProportion(bool) setrounds.cc: Screening::setRounds() densities1.cc: Densities::Densities() setdose.cc: GLOBALS setdose.cc 26setdose.o setsensitivity.cc: CT::setSensitivity() extractbase.cc: ModBase::extractBase(VSD&) specificitybase.cc: ModBase::specificityBase(std::vector&) atleast.cc: Parser::atLeast(double, std::vector const&, double&) proportion.cc: Parser::proportion(std::vector const&, double&) vsdparameters1.cc: Parser::VSDparameters(VaryType, std::vector const&, std::initializer_list const&) vsdparameters2.cc: GLOBALS vsdparameters2.cc 34vsdparameters2.o setdeath.cc: Scenario::setDeath() setgeneratortype.cc: GLOBALS setgeneratortype.cc 4setgeneratortype.o setvary.cc: GLOBALS setvary.cc 4setvary.o setdoublingtime.cc: Growth::setDoublingTime() setselfdetect.cc: Growth::setSelfDetect() setstart.cc: Growth::setStart() loadbc.cc: Survival::loadBC() loads3.cc: Survival::loadS3() get() Full name: ConfigLines::get() Source: get.cc Used By: load1.cc: Parser::load(std::istream&, unsigned short, std::vector&, std::vector&) load2.cc: Parser::load(std::string const&) setlabels.cc: Parser::setLabels(ConfigLines&, std::vector&) setoptions.cc: Parser::setOptions(ConfigLines&, std::vector&) Growth() Full name: Growth::Growth() Source: growth1.cc Used By: loop1.cc: Loop::Loop(std::vector const&) handleException() Full name: handleException() Source: handleexception.cc Used By: main.cc: main hasSection(std::vector const&) Full name: Parser::hasSection(std::vector const&) Source: hassection.cc Used By: setincidence2.cc: Incidence::setIncidence(std::vector&, unsigned long, bool) modbase1.cc: ModBase::ModBase(std::string const&) headerData(unsigned long) const Full name: Loop::headerData(unsigned long) const Source: headerdata.cc Used By: gencases.cc: Loop::genCases(unsigned long, unsigned long) headerRounds(unsigned long) const Full name: Loop::headerRounds(unsigned long) const Source: headerrounds.cc Used By: iterate.cc: Loop::iterate() headerSensitivity() const Full name: Loop::headerSensitivity() const Source: headersensitivity.cc Used By: iterate.cc: Loop::iterate() Incidence() Full name: Incidence::Incidence() Source: incidence1.cc Used By: loop1.cc: Loop::Loop(std::vector const&) increasingAge(Round const&) const Full name: Screening::increasingAge(Round const&) const Source: increasingage.cc Used By: addround.cc: Screening::addRound(LineInfo*, LineInfo const&) index() const Full name: Incidence::index() const Source: index.cc Used By: cumtotalrisk.cc: TumorInfo::cumTotalRisk(std::vector const&) indexOf(double) const Full name: ProbGroup::indexOf(double) const Source: indexof.cc Used By: probindexof.cc: ProbGroup::probIndexOf(std::vector const&, double, double) initialize() Full name: Random::initialize() Source: initialize.cc Used By: setvary.cc: Scenario::setVary() initLineInfoVects(std::unordered_map&) Full name: Parser::initLineInfoVects(std::unordered_map&) Source: initlineinfovects.cc Used By: parser1.cc: Parser::Parser() insert(std::ostream&) const Full name: AgeGroupVSD::insert(std::ostream&) const Source: insert1.cc Used By: insert2.cc: AgeGroupVSD::insert(std::ostream&, std::vector const&) insert(std::ostream&) const Full name: Tumor::insert(std::ostream&) const Source: insert.cc Used By: caseinit.cc: Loop::caseInit() insert(std::ostream&) const Full name: ProbGroup::insert(std::ostream&) const Source: insert.cc Used By: writeparameters.cc: Densities::writeParameters(std::ostream&) const s3parameters.cc: Survival::s3parameters(std::ostream&) const insert(std::ostream&) const Full name: Round::insert(std::ostream&) const Source: insert.cc Used By: writeparameters.cc: Screening::writeParameters(std::ostream&) const insert(std::ostream&) const Full name: Distribution::insert(std::ostream&) const Source: insert.cc Used By: insert1.cc: VSD::insert(std::ostream&) const insert(std::ostream&) const Full name: VSD::insert(std::ostream&) const Source: insert1.cc Used By: vwriteparameters.cc: VSDParams::v_writeParameters(std::ostream&) const writeparameters.cc: Beir7::writeParameters(std::ostream&) const insert2.cc: VSD::insert(std::ostream&, std::vector const&) vinsert.cc: CT::vInsert(std::ostream&) const vinsert.cc: MRI::vInsert(std::ostream&) const insert1.cc: AgeGroupVSD::insert(std::ostream&) const writeparameters.cc: Growth::writeParameters(std::ostream&) const insert(std::ostream&, std::vector const&) Full name: AgeGroupVSD::insert(std::ostream&, std::vector const&) Source: insert2.cc Used By: vinsert.cc: Tomo::vInsert(std::ostream&) const vinsert.cc: Mammo::vInsert(std::ostream&) const writeparameters.cc: Growth::writeParameters(std::ostream&) const insert(std::ostream&, std::vector const&) Full name: VSD::insert(std::ostream&, std::vector const&) Source: insert2.cc Used By: vinsert.cc: Tomo::vInsert(std::ostream&) const vinsert.cc: Mammo::vInsert(std::ostream&) const lungparameters.cc: Survival::lungParameters(std::ostream&) const writebreast.cc: Survival::writeBreast(std::ostream&) const instance() Full name: Options::instance() Source: instance.cc Used By: main.cc: main actualize.cc: Analysis::actualize(std::vector const&) analysis1.cc: Analysis::Analysis(std::istream&&, unsigned short) requirebase.cc: Analysis::requireBase() const loop1.cc: Loop::Loop(std::vector const&) setdeath.cc: Scenario::setDeath() tumorage.cc: Tumor::tumorAge() instance() Full name: Random::instance() Source: instance.cc Used By: index.cc: Incidence::index() const radiationrisk.cc: Screening::radiationRisk(Modalities const&, std::vector const&, double, double) extract.cc: Distribution::extract(std::istream&) insert.cc: Distribution::insert(std::ostream&) const varybeta.cc: Distribution::varyBeta(double) const varymean.cc: Distribution::varyMean(double) const cptindices.cc: Loop::cptIndices() const falsenegative.cc: Loop::falseNegative(ModBase*) iterate.cc: Loop::iterate() maybefalsepositive.cc: Loop::maybeFalsePositive(ModBase*, double) naturaldeathage.cc: Loop::naturalDeathAge() reset.cc: Tumor::reset() tumorage.cc: Tumor::tumorAge() cptvsdrow.cc: Survival::cptVSDrow(double) intervalCancer() Full name: Loop::intervalCancer() Source: intervalcancer.cc Used By: leaving.cc: Loop::leaving(double) isZero(double) Full name: Globals::isZero(double) Source: iszero.cc Used By: addround.cc: Screening::addRound(LineInfo*, LineInfo const&) add.cc: Densities::add(bool*, LineInfo const&) outspec.cc: ModBase::outSpec(std::ostream&, char const*, unsigned int, AgeGroupVSD const&) opinsert.cc: operator<<(std::ostream&, Group const&) writedata.cc: Loop::writeData(FBB::CSVTable&, unsigned long) const writeparameters.cc: Params::writeParameters(std::ostream&) iterate() Full name: Loop::iterate() Source: iterate.cc Used By: run.cc: Analysis::run() key(std::string const&) Full name: ConfigLines::key(std::string const&) Source: key1.cc Used By: checkredo.cc: Parser::checkRedo(ConfigLines&) keywordsLines(std::vector const&) Full name: Parser::keywordsLines(std::vector const&) Source: keywordslines.cc Used By: hassection.cc: Parser::hasSection(std::vector const&) lines.cc: Parser::lines(std::vector const&) labels(std::ostream&) const Full name: Loop::labels(std::ostream&) const Source: labels.cc Used By: headerdata.cc: Loop::headerData(unsigned long) const headerrounds.cc: Loop::headerRounds(unsigned long) const headersensitivity.cc: Loop::headerSensitivity() const iterate.cc: Loop::iterate() writeparameters.cc: Loop::writeParameters(unsigned long) const lastCase(std::string const&) Full name: Options::lastCase(std::string const&) Source: lastcase.cc Used By: alter.cc: Options::alter(int, std::string const&) lastcaseoption.cc: Options::lastCaseOption(std::string const&) lastCaseOption(std::string const&) Full name: Options::lastCaseOption(std::string const&) Source: lastcaseoption.cc Used By: options1.cc: Options::Options() lcTreatment(double, double, bool) const Full name: Costs::lcTreatment(double, double, bool) const Source: lctreatment.cc Used By: setvariables.cc: Costs::setVariables(bool) leaving(double) Full name: Loop::leaving(double) Source: leaving.cc Used By: screening.cc: Loop::screening() left(Loop::Status, double) Full name: Loop::left(Loop::Status, double) Source: left.cc Used By: intervalcancer.cc: Loop::intervalCancer() leaving.cc: Loop::leaving(double) postscreen.cc: Loop::postScreen() tumordetected.cc: Loop::tumorDetected(ModBase*, double) linear(double, std::pair const&, std::pair const&) Full name: TableParams::linear(double, std::pair const&, std::pair const&) Source: linear.cc Used By: checktable.cc: TableParams::checkTable() Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) Full name: Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) Source: lineslines2.cc Used By: lines.cc: Parser::lines(std::vector const&) Lines(std::vector const&) Full name: Parser::Lines::Lines(std::vector const&) Source: lineslines1.cc Used By: lines.cc: Parser::lines(std::vector const&) lines(std::vector const&) Full name: Parser::lines(std::vector const&) Source: lines.cc Used By: any.cc: Parser::any(std::vector const&) ln() Full name: VSD::ln() Source: ln.cc Used By: ln.cc: AgeGroupVSD::ln() setselfdetect.cc: Growth::setSelfDetect() ln() Full name: Distribution::ln() Source: ln.cc Used By: ln.cc: VSD::ln() ln() Full name: AgeGroupVSD::ln() Source: ln.cc Used By: setdoublingtime.cc: Growth::setDoublingTime() load(std::istream&, unsigned short, std::vector&, std::vector&) Full name: Parser::load(std::istream&, unsigned short, std::vector&, std::vector&) Source: load1.cc Used By: analysis1.cc: Analysis::Analysis(std::istream&&, unsigned short) load(std::string const&) Full name: Parser::load(std::string const&) Source: load2.cc Used By: analysis1.cc: Analysis::Analysis(std::istream&&, unsigned short) loadBC() Full name: Survival::loadBC() Source: loadbc.cc Used By: survival1.cc: Survival::Survival() loadS3() Full name: Survival::loadS3() Source: loads3.cc Used By: survival1.cc: Survival::Survival() loadS4() Full name: Survival::loadS4() Source: loads4.cc Used By: survival1.cc: Survival::Survival() locateError(std::vector*>&, ConfigLines&, ParamsSrc) Full name: Parser::locateError(std::vector*>&, ConfigLines&, ParamsSrc) Source: locateerror.cc Used By: addconfigline.cc: Parser::addConfigLine(std::vector*>&, ConfigLines&, ParamsSrc) Log() Full name: Log::Log() Source: log1.cc Used By: data.cc: GLOBALS data.cc 36data.o logNormal(double, double) Full name: Random::logNormal(double, double) Source: lognormal.cc Used By: reset.cc: Tumor::reset() tumorage.cc: Tumor::tumorAge() logNormalVary(double, double) Full name: Random::logNormalVary(double, double) Source: lognormalvary.cc Used By: varymean.cc: Distribution::varyMean(double) const logOption(std::string const&) Full name: Options::logOption(std::string const&) Source: logoption.cc Used By: options1.cc: Options::Options() Loop(std::vector const&) Full name: Loop::Loop(std::vector const&) Source: loop1.cc Used By: run.cc: Analysis::run() lungParameters(std::ostream&) const Full name: Survival::lungParameters(std::ostream&) const Source: lungparameters.cc Used By: writelung.cc: Survival::writeLung(std::ostream&) const Mammo(Tumor const&) Full name: Mammo::Mammo(Tumor const&) Source: mammo1.cc Used By: modalities1.cc: Modalities::Modalities(Tumor const&) maxEnd() Full name: Group::maxEnd() Source: maxend.cc Used By: setsensitivity.cc: CT::setSensitivity() maybeFalseNegative(ModBase*, double) Full name: Loop::maybeFalseNegative(ModBase*, double) Source: maybefalsenegative.cc Used By: screen.cc: Loop::screen(double) maybeFalsePositive(ModBase*, double) Full name: Loop::maybeFalsePositive(ModBase*, double) Source: maybefalsepositive.cc Used By: screen.cc: Loop::screen(double) Modalities(Tumor const&) Full name: Modalities::Modalities(Tumor const&) Source: modalities1.cc Used By: loop1.cc: Loop::Loop(std::vector const&) ModBase(std::string const&) Full name: ModBase::ModBase(std::string const&) Source: modbase1.cc Used By: ct1.cc: CT::CT(Tumor const&) tomo1.cc: Tomo::Tomo() mammo1.cc: Mammo::Mammo(Tumor const&) mri1.cc: MRI::MRI() MRI() Full name: MRI::MRI() Source: mri1.cc Used By: modalities1.cc: Modalities::Modalities(Tumor const&) msg(Err::Context) Full name: Err::msg(Err::Context) Source: msg2.cc Used By: checktable.cc: TableParams::checkTable() setproportion.cc: Costs::setProportion(bool) addmodality.cc: Screening::addModality(std::istream&, Round&) addround.cc: Screening::addRound(LineInfo*, LineInfo const&) setrounds.cc: Screening::setRounds() add.cc: Densities::add(bool*, LineInfo const&) poscheck.cc: VSD::posCheck(double&) extract.cc: Distribution::extract(std::istream&) xlat.cc: Distribution::xlat(LineInfo const&, std::string const&) atleast.cc: Err::atLeast(double) negative.cc: Err::negative() range.cc: Err::range() specification.cc: Err::specification() add.cc: CT::add(bool*, LineInfo const&) setdose.cc: CT::setDose() setsensitivity.cc: CT::setSensitivity() connects.cc: Group::connects(Group const&) const extract.cc: Group::extract(std::istream&) extract.cc: AgeGroupVSD::extract(std::istream&) vsdparameters1.cc: Parser::VSDparameters(VaryType, std::vector const&, std::initializer_list const&) vsdparameters2.cc: Parser::VSDparameters(VaryType, std::vector const&, unsigned long) betadist1.cc: BetaDist::BetaDist(std::istream&) setstart.cc: Growth::setStart() loadbc.cc: Survival::loadBC() msg(Err::Plain) Full name: Err::msg(Err::Plain) Source: msg1.cc Used By: setincidence1.cc: Incidence::setIncidence() multiplyspecified.cc: Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) vsensitivity.cc: CT::vSensitivity(unsigned long) const any.cc: Parser::any(std::vector const&) locateerror.cc: Parser::locateError(std::vector*>&, ConfigLines&, ParamsSrc) checkcumdeath.cc: Scenario::checkCumDeath(std::string const&, LineInfo const*) const readcumdeath.cc: Scenario::readCumDeath(std::string const&) multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) Full name: Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) Source: multiplyspecified.cc Used By: one.cc: Parser::one(std::vector const&) naturalDeathAge() Full name: Loop::naturalDeathAge() Source: naturaldeathage.cc Used By: caseinit.cc: Loop::caseInit() negative() Full name: Err::negative() Source: negative.cc Used By: setselfdetect.cc: Growth::setSelfDetect() nl(Log&) Full name: nl(Log&) Source: nl.cc Used By: lognormal.cc: Random::logNormal(double, double) uniform.cc: Random::uniform() uniformcase.cc: Random::uniformCase() uniformvsd.cc: Random::uniformVSD() normalVary() Full name: Random::normalVary() Source: normalvary.cc Used By: varymean.cc: Distribution::varyMean(double) const noTNM(std::ostream&) Full name: Loop::noTNM(std::ostream&) Source: notnm.cc Used By: loop1.cc: Loop::Loop(std::vector const&) one(std::vector const&) Full name: Parser::one(std::vector const&) Source: one.cc Used By: vsdparams1.cc: GLOBALS vsdparams1.cc 10vsdparams1.o beir71.cc: Beir7::Beir7() setdiameters.cc: Costs::setDiameters() setlungcancer.cc: Costs::setLungCancer() setproportion.cc: Costs::setProportion(bool) setdose.cc: GLOBALS setdose.cc 26setdose.o extractbase.cc: ModBase::extractBase(VSD&) specificitybase.cc: ModBase::specificityBase(std::vector&) atleast.cc: Parser::atLeast(double, std::vector const&, double&) proportion.cc: Parser::proportion(std::vector const&, double&) vsdparameters2.cc: Parser::VSDparameters(VaryType, std::vector const&, unsigned long) setgeneratortype.cc: GLOBALS setgeneratortype.cc 4setgeneratortype.o setvary.cc: GLOBALS setvary.cc 4setvary.o setdoublingtime.cc: Growth::setDoublingTime() setselfdetect.cc: Growth::setSelfDetect() setstart.cc: Growth::setStart() loadbc.cc: Survival::loadBC() open(std::string const&) Full name: Loop::open(std::string const&) Source: open.cc Used By: outstream.cc: Loop::outStream(std::string const&, unsigned long) operator()(int) Full name: Log::operator()(int) Source: operatorfun.cc Used By: lognormal.cc: Random::logNormal(double, double) uniform.cc: Random::uniform() uniformcase.cc: Random::uniformCase() uniformvsd.cc: Random::uniformVSD() operator()(std::mersenne_twister_engine&) Full name: BetaDist::operator()(std::mersenne_twister_engine&) Source: operatorfun.cc Used By: betavary.cc: Random::betaVary() operator<<(std::ostream&, Group const&) Full name: operator<<(std::ostream&, Group const&) Source: opinsert.cc Used By: vinsert.cc: CT::vInsert(std::ostream&) const insert.cc: ProbGroup::insert(std::ostream&) const insert1.cc: AgeGroupVSD::insert(std::ostream&) const vary2.cc: AgeGroupVSD::vary(std::ostream&, unsigned int, char const*, std::vector&) operator<<(std::ostream&, ModBase const&) Full name: operator<<(std::ostream&, ModBase const&) Source: opinsert.cc Used By: writeparameters.cc: Modalities::writeParameters(std::ostream&) const operator>>(std::istream&, Round&) Full name: operator>>(std::istream&, Round&) Source: opextract.cc Used By: addround.cc: Screening::addRound(LineInfo*, LineInfo const&) Options() Full name: Options::Options() Source: options1.cc Used By: instance.cc: Options::instance() otherTreatment(double, double, bool) const Full name: Costs::otherTreatment(double, double, bool) const Source: othertreatment.cc Used By: setvariables.cc: Costs::setVariables(bool) outStream(std::string const&, unsigned long) Full name: Loop::outStream(std::string const&, unsigned long) Source: outstream.cc Used By: headerdata.cc: Loop::headerData(unsigned long) const headerrounds.cc: Loop::headerRounds(unsigned long) const headersensitivity.cc: Loop::headerSensitivity() const iterate.cc: Loop::iterate() writeparameters.cc: Loop::writeParameters(unsigned long) const Params(std::vector&, unsigned long, bool) Full name: Params::Params(std::vector&, unsigned long, bool) Source: params1.cc Used By: vsdparams1.cc: VSDParams::VSDParams(std::vector&, unsigned long, bool) tableparams1.cc: TableParams::TableParams(std::vector&, unsigned long, bool) Parser() Full name: Parser::Parser() Source: parser1.cc Used By: analysis1.cc: Analysis::Analysis(std::istream&&, unsigned short) data.cc: GLOBALS data.cc 34data.o Parser(std::unordered_map&&) Full name: Parser::Parser(std::unordered_map&&) Source: parser2.cc Used By: data.cc: GLOBALS data.cc 34data.o percentages(std::vector const&) Full name: Densities::percentages(std::vector const&) Source: proportions.cc Used By: add.cc: Densities::add(bool*, LineInfo const&) posCheck(double&) Full name: VSD::posCheck(double&) Source: poscheck.cc Used By: data.cc: GLOBALS data.cc 20data.o postScreen() Full name: Loop::postScreen() Source: postscreen.cc Used By: gencases.cc: Loop::genCases(unsigned long, unsigned long) prepareBeta(std::istream&) Full name: Random::prepareBeta(std::istream&) Source: preparebeta.cc Used By: extract.cc: Distribution::extract(std::istream&) prepareVary(std::istream&) Full name: Distribution::prepareVary(std::istream&) Source: preparevary.cc Used By: extract.cc: Distribution::extract(std::istream&) probCheck(double&) Full name: VSD::probCheck(double&) Source: probcheck.cc Used By: data.cc: GLOBALS data.cc 20data.o ProbGroup(Series) Full name: ProbGroup::ProbGroup(Series) Source: probgroup1.cc Used By: add.cc: Densities::add(bool*, LineInfo const&) loads3.cc: Survival::loadS3() probIndexOf(std::vector const&, double, double) Full name: ProbGroup::probIndexOf(std::vector const&, double, double) Source: probindexof.cc Used By: cptindices.cc: Loop::cptIndices() const cptvsdrow.cc: Survival::cptVSDrow(double) proportion(std::vector const&, double&) Full name: Parser::proportion(std::vector const&, double&) Source: proportion.cc Used By: setattendancerate.cc: Screening::setAttendanceRate() setsystematicerror.cc: Mammo::setSystematicError() params1.cc: Params::Params(std::vector&, unsigned long, bool) radiationRisk(Modalities const&, std::vector const&, double, double) Full name: Screening::radiationRisk(Modalities const&, std::vector const&, double, double) Source: radiationrisk.cc Used By: caseinit.cc: Loop::caseInit() Random() Full name: Random::Random() Source: random1.cc Used By: initialize.cc: Random::initialize() range() Full name: Err::range() Source: range.cc Used By: setproportion.cc: Costs::setProportion(bool) probcheck.cc: VSD::probCheck(double&) proportion.cc: Parser::proportion(std::vector const&, double&) readCumDeath(std::string const&) Full name: Scenario::readCumDeath(std::string const&) Source: readcumdeath.cc Used By: setdeath.cc: Scenario::setDeath() reinit(unsigned long, GeneratorType) Full name: Random::reinit(unsigned long, GeneratorType) Source: reinit.cc Used By: iterate.cc: Loop::iterate() replaceDollar(std::string const&, unsigned long) Full name: Loop::replaceDollar(std::string const&, unsigned long) Source: replacedollar.cc Used By: outstream.cc: Loop::outStream(std::string const&, unsigned long) replaceHome(std::string&) Full name: Options::replaceHome(std::string&) Source: replacehome.cc Used By: actualize.cc: Options::actualize() setbase.cc: Options::setBase() replacePlus(std::string&) Full name: Options::replacePlus(std::string&) Source: replaceplus.cc Used By: actualize.cc: Options::actualize() requireBase() const Full name: Analysis::requireBase() const Source: requirebase.cc Used By: run.cc: Analysis::run() requireTumor(char const*) const Full name: Tumor::requireTumor(char const*) const Source: check.cc Used By: characteristicsat.cc: Tumor::characteristicsAt(double) setdeathage.cc: Tumor::setDeathAge(double) volume.cc: Tumor::volume() const reset() Full name: Tumor::reset() Source: reset.cc Used By: caseinit.cc: Loop::caseInit() reset() Full name: Random::reset() Source: reset.cc Used By: reinit.cc: Random::reinit(unsigned long, GeneratorType) reset() Full name: BetaDist::reset() Source: reset.cc Used By: reset.cc: Random::reset() reset(LineInfo const&) Full name: Err::reset(LineInfo const&) Source: reset.cc Used By: setrounds.cc: Screening::setRounds() linesget.cc: Parser::Lines::get() lineslines2.cc: Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) resetCounters() Full name: Loop::resetCounters() Source: resetcounters.cc Used By: iterate.cc: Loop::iterate() resetCounters(unsigned long) Full name: ModBase::resetCounters(unsigned long) Source: resetcounters.cc Used By: resetcounters.cc: Modalities::resetCounters(unsigned long) resetCounters(unsigned long) Full name: Modalities::resetCounters(unsigned long) Source: resetcounters.cc Used By: resetcounters.cc: Loop::resetCounters() rmLineInfoVectors(std::unordered_map&) Full name: Parser::rmLineInfoVectors(std::unordered_map&) Source: rmlineinfovectors.cc Used By: destructor.cc: Parser::~Parser() roundAge(unsigned long) const Full name: Screening::roundAge(unsigned long) const Source: roundage.cc Used By: loop1.cc: Loop::Loop(std::vector const&) screening.cc: Loop::screening() roundFmt(FBB::CSVTable&) const Full name: Modalities::roundFmt(FBB::CSVTable&) const Source: roundfmt.cc Used By: headerrounds.cc: Loop::headerRounds(unsigned long) const roundHeaders(FBB::CSVTable&) const Full name: Modalities::roundHeaders(FBB::CSVTable&) const Source: roundheaders.cc Used By: headerrounds.cc: Loop::headerRounds(unsigned long) const run() Full name: Simulator::run() Source: run.cc Used By: main.cc: main run() Full name: Analysis::run() Source: run.cc Used By: run.cc: Simulator::run() s3parameters(std::ostream&) const Full name: Survival::s3parameters(std::ostream&) const Source: s3parameters.cc Used By: writelung.cc: Survival::writeLung(std::ostream&) const s_availableFiles Full name: Loop::s_availableFiles Source: data.cc Used By: open.cc: Loop::open(std::string const&) s_base Full name: Options::s_base Source: data.cc Used By: baseoption.cc: Options::baseOption() s_bool Full name: Scenario::s_bool Source: data.cc Used By: setvary.cc: Scenario::setVary() writeparameters.cc: Scenario::writeParameters(std::ostream&, unsigned long) const s_ch Full name: VSD::s_ch Source: data.cc Used By: fmt2.cc: VSD::fmt(unsigned int, char const*, char, unsigned int, unsigned int, unsigned int, unsigned int) insert2.cc: VSD::insert(std::ostream&, std::vector const&) s_config Full name: Options::s_config Source: data.cc Used By: configoption.cc: Options::configOption() s_context Full name: Err::s_context Source: data.cc Used By: msg2.cc: Err::msg(Err::Context) s_fileName Full name: Options::s_fileName Source: data.cc Used By: fileoption.cc: Options::fileOption(std::string*, int) s_generatorType Full name: Scenario::s_generatorType Source: data.cc Used By: setgeneratortype.cc: Scenario::setGeneratorType() writeparameters.cc: Scenario::writeParameters(std::ostream&, unsigned long) const s_handle Full name: Err::s_handle Source: data.cc Used By: msg2.cc: Err::msg(Err::Context) reset.cc: Err::reset(LineInfo const&) s_indent Full name: AgeGroupVSD::s_indent Source: data.cc Used By: fmt.cc: AgeGroupVSD::fmt(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) insert2.cc: AgeGroupVSD::insert(std::ostream&, std::vector const&) s_indent Full name: VSD::s_indent Source: data.cc Used By: fmt2.cc: VSD::fmt(unsigned int, char const*, char, unsigned int, unsigned int, unsigned int, unsigned int) insert2.cc: VSD::insert(std::ostream&, std::vector const&) s_label Full name: Globals::s_label Source: data.cc Used By: vvary.cc: VSDParams::v_vary(std::ostream&) vvary.cc: TableParams::v_vary(std::ostream&) setincidence1.cc: Incidence::setIncidence() writeparameters.cc: Incidence::writeParameters(std::ostream&) const vary.cc: Beir7::vary(std::ostream&) writeparameters.cc: Beir7::writeParameters(std::ostream&) const setsimulationtype.cc: Options::setSimulationType() findsimtype.cc: Globals::findSimType(std::string const&) setsimtype.cc: Globals::setSimType(std::string const&) data.cc: GLOBALS data.cc 34data.o data.cc: GLOBALS data.cc 9data.o s_label Full name: Params::s_label Source: data.cc Used By: vvary.cc: VSDParams::v_vary(std::ostream&) vvary.cc: TableParams::v_vary(std::ostream&) setincidence1.cc: Incidence::setIncidence() writeparameters.cc: Incidence::writeParameters(std::ostream&) const writeparameters.cc: Params::writeParameters(std::ostream&) s_labels Full name: ProbGroup::s_labels Source: data.cc Used By: insert.cc: ProbGroup::insert(std::ostream&) const s_lineInfo Full name: Err::s_lineInfo Source: data.cc Used By: add.cc: Densities::add(bool*, LineInfo const&) poscheck.cc: VSD::posCheck(double&) extract.cc: Distribution::extract(std::istream&) atleast.cc: Err::atLeast(double) msg2.cc: Err::msg(Err::Context) negative.cc: Err::negative() range.cc: Err::range() reset.cc: Err::reset(LineInfo const&) specification.cc: Err::specification() add.cc: CT::add(bool*, LineInfo const&) setsensitivity.cc: CT::setSensitivity() extract.cc: Group::extract(std::istream&) betadist1.cc: BetaDist::BetaDist(std::istream&) s_lungColumn Full name: Survival::s_lungColumn Source: data.cc Used By: loads4.cc: Survival::loadS4() lungparameters.cc: Survival::lungParameters(std::ostream&) const s_map Full name: Parser::s_map Source: data.cc Used By: destructor.cc: Parser::~Parser() keywordslines.cc: Parser::keywordsLines(std::vector const&) load1.cc: Parser::load(std::istream&, unsigned short, std::vector&, std::vector&) load2.cc: Parser::load(std::string const&) parser1.cc: Parser::Parser() setoptions.cc: Parser::setOptions(ConfigLines&, std::vector&) s_name Full name: Distribution::s_name Source: data.cc Used By: find.cc: Distribution::find(std::string const&) insert.cc: Distribution::insert(std::ostream&) const varynonneg.cc: Distribution::varyNonNeg(double) const varyprob.cc: Distribution::varyProb(double) const s_noColon Full name: Survival::s_noColon Source: data.cc Used By: varylung.cc: Survival::varyLung(std::ostream&) s_noYes Full name: Tumor::s_noYes Source: data.cc Used By: writedata.cc: Tumor::writeData(FBB::CSVTable&) const s_options Full name: Options::s_options Source: data.cc Used By: instance.cc: Options::instance() s_plain Full name: Err::s_plain Source: data.cc Used By: msg1.cc: Err::msg(Err::Plain) s_prec Full name: VSD::s_prec Source: data.cc Used By: fmt1.cc: VSD::fmt(unsigned int, unsigned int, unsigned int, unsigned int) s_precision Full name: Distribution::s_precision Source: data.cc Used By: fmt.cc: Distribution::fmt(unsigned int, unsigned int) insert.cc: Distribution::insert(std::ostream&) const s_random Full name: Random::s_random Source: data.cc Used By: initialize.cc: Random::initialize() instance.cc: Random::instance() s_simType Full name: Globals::s_simType Source: data.cc Used By: vvary.cc: VSDParams::v_vary(std::ostream&) vvary.cc: TableParams::v_vary(std::ostream&) setincidence1.cc: Incidence::setIncidence() writeparameters.cc: Incidence::writeParameters(std::ostream&) const beir71.cc: Beir7::Beir7() vary.cc: Beir7::vary(std::ostream&) writeparameters.cc: Beir7::writeParameters(std::ostream&) const costs1.cc: Costs::Costs() modalities1.cc: Modalities::Modalities(Tumor const&) screening1.cc: Screening::Screening(Modalities&) densities1.cc: Densities::Densities() setsimtype.cc: Globals::setSimType(std::string const&) probgroup1.cc: ProbGroup::ProbGroup(Series) cptindices.cc: Loop::cptIndices() const loop1.cc: Loop::Loop(std::vector const&) writeparameters.cc: Loop::writeParameters(unsigned long) const growth1.cc: Growth::Growth() setdoublingtime.cc: Growth::setDoublingTime() setselfdetect.cc: Growth::setSelfDetect() setstart.cc: Growth::setStart() survival1.cc: Survival::Survival() s_sqrt2PI Full name: Globals::s_sqrt2PI Source: data.cc Used By: vcpttumorrisk.cc: VSDParams::v_cptTumorRisk(std::vector&) s_src Full name: Err::s_src Source: data.cc Used By: msg2.cc: Err::msg(Err::Context) locateerror.cc: Parser::locateError(std::vector*>&, ConfigLines&, ParamsSrc) s_status Full name: Loop::s_status Source: data.cc Used By: headerdata.cc: Loop::headerData(unsigned long) const left.cc: Loop::left(Loop::Status, double) s_type Full name: VSD::s_type Source: data.cc Used By: fmt2.cc: VSD::fmt(unsigned int, char const*, char, unsigned int, unsigned int, unsigned int, unsigned int) insert2.cc: VSD::insert(std::ostream&, std::vector const&) s_valueCheck Full name: VSD::s_valueCheck Source: data.cc Used By: vsd1.cc: VSD::VSD(VaryType) s_vary Full name: Globals::s_vary Source: data.cc Used By: extract.cc: VSD::extract(std::istream&) ln.cc: VSD::ln() distribution1.cc: Distribution::Distribution(VaryType) extract.cc: Distribution::extract(std::istream&) preparevary.cc: Distribution::prepareVary(std::istream&) random1.cc: Random::Random() reinit.cc: Random::reinit(unsigned long, GeneratorType) reset.cc: Random::reset() iterate.cc: Loop::iterate() setvary.cc: Scenario::setVary() writeparameters.cc: Scenario::writeParameters(std::ostream&, unsigned long) const s_varyParam Full name: Distribution::s_varyParam Source: data.cc Used By: distribution1.cc: Distribution::Distribution(VaryType) s_width Full name: Distribution::s_width Source: data.cc Used By: fmt.cc: Distribution::fmt(unsigned int, unsigned int) insert.cc: Distribution::insert(std::ostream&) const s_width Full name: VSD::s_width Source: data.cc Used By: fmt1.cc: VSD::fmt(unsigned int, unsigned int, unsigned int, unsigned int) Scenario() Full name: Scenario::Scenario() Source: scenario1.cc Used By: loop1.cc: Loop::Loop(std::vector const&) screen(double) Full name: Loop::screen(double) Source: screen.cc Used By: screening.cc: Loop::screening() screening() Full name: Loop::screening() Source: screening.cc Used By: gencases.cc: Loop::genCases(unsigned long, unsigned long) Screening(Modalities&) Full name: Screening::Screening(Modalities&) Source: screening1.cc Used By: loop1.cc: Loop::Loop(std::vector const&) sectionList(std::vector const&) Full name: Parser::sectionList(std::vector const&) Source: sectionlist.cc Used By: any.cc: Parser::any(std::vector const&) one.cc: Parser::one(std::vector const&) sensitivity(ModBase*) const Full name: Loop::sensitivity(ModBase*) const Source: sensitivity1.cc Used By: falsenegative.cc: Loop::falseNegative(ModBase*) set(unsigned int, unsigned int, std::string const&, std::string const&) Full name: Log::set(unsigned int, unsigned int, std::string const&, std::string const&) Source: set.cc Used By: logoption.cc: Options::logOption(std::string const&) setAge() Full name: Costs::setAge() Source: setage.cc Used By: setdiscount.cc: Costs::setDiscount(bool) setAnalysisSource() Full name: Simulator::setAnalysisSource() Source: setanalysissource.cc Used By: simulator1.cc: Simulator::Simulator() setAttendanceRate() Full name: Screening::setAttendanceRate() Source: setattendancerate.cc Used By: screening1.cc: Screening::Screening(Modalities&) setBase() Full name: Options::setBase() Source: setbase.cc Used By: actualize.cc: Options::actualize() setBeta() Full name: Mammo::setBeta() Source: setbeta.cc Used By: mammo1.cc: Mammo::Mammo(Tumor const&) setDeath() Full name: Scenario::setDeath() Source: setdeath.cc Used By: scenario1.cc: Scenario::Scenario() setDeathAge(double) Full name: Tumor::setDeathAge(double) Source: setdeathage.cc Used By: tumordetected.cc: Loop::tumorDetected(ModBase*, double) setDiameters() Full name: Costs::setDiameters() Source: setdiameters.cc Used By: costs1.cc: Costs::Costs() setDiscount(bool) Full name: Costs::setDiscount(bool) Source: setdiscount.cc Used By: costs1.cc: Costs::Costs() setDose() Full name: CT::setDose() Source: setdose.cc Used By: ct1.cc: CT::CT(Tumor const&) setDoublingTime() Full name: Growth::setDoublingTime() Source: setdoublingtime.cc Used By: growth1.cc: Growth::Growth() setGeneratorType() Full name: Scenario::setGeneratorType() Source: setgeneratortype.cc Used By: scenario1.cc: Scenario::Scenario() setIncidence() Full name: Incidence::setIncidence() Source: setincidence1.cc Used By: incidence1.cc: Incidence::Incidence() setIncidence(std::vector&, unsigned long, bool) Full name: Incidence::setIncidence(std::vector&, unsigned long, bool) Source: setincidence2.cc Used By: setincidence1.cc: Incidence::setIncidence() setLabels(ConfigLines&, std::vector&) Full name: Parser::setLabels(ConfigLines&, std::vector&) Source: setlabels.cc Used By: load1.cc: Parser::load(std::istream&, unsigned short, std::vector&, std::vector&) setLungCancer() Full name: Costs::setLungCancer() Source: setlungcancer.cc Used By: setvariables.cc: Costs::setVariables(bool) setM() Full name: Mammo::setM() Source: setm.cc Used By: mammo1.cc: Mammo::Mammo(Tumor const&) setNcases() Full name: Scenario::setNcases() Source: setncases.cc Used By: scenario1.cc: Scenario::Scenario() setNiterations() Full name: Scenario::setNiterations() Source: setniterations.cc Used By: scenario1.cc: Scenario::Scenario() setOptions(ConfigLines&, std::vector&) Full name: Parser::setOptions(ConfigLines&, std::vector&) Source: setoptions.cc Used By: load1.cc: Parser::load(std::istream&, unsigned short, std::vector&, std::vector&) setPrecision(std::ostream&, unsigned short) Full name: Globals::setPrecision(std::ostream&, unsigned short) Source: setprecision.cc Used By: vwriteparameters.cc: VSDParams::v_writeParameters(std::ostream&) const vwriteparameters.cc: TableParams::v_writeParameters(std::ostream&) const insert.cc: Distribution::insert(std::ostream&) const setwidthprec.cc: Globals::setWidthPrec(std::ostream&, unsigned int, unsigned int) insert1.cc: AgeGroupVSD::insert(std::ostream&) const writeparameters.cc: Loop::writeParameters(unsigned long) const writeparameters.cc: Params::writeParameters(std::ostream&) setProportion(bool) Full name: Costs::setProportion(bool) Source: setproportion.cc Used By: setdiscount.cc: Costs::setDiscount(bool) setRounds() Full name: Screening::setRounds() Source: setrounds.cc Used By: screening1.cc: Screening::Screening(Modalities&) setSeed() Full name: Scenario::setSeed() Source: setseed.cc Used By: scenario1.cc: Scenario::Scenario() setSelfDetect() Full name: Growth::setSelfDetect() Source: setselfdetect.cc Used By: growth1.cc: Growth::Growth() setSensitivity() Full name: CT::setSensitivity() Source: setsensitivity.cc Used By: ct1.cc: CT::CT(Tumor const&) setSensitivity() Full name: Tomo::setSensitivity() Source: setsensitivity.cc Used By: tomo1.cc: Tomo::Tomo() setSensitivity() Full name: MRI::setSensitivity() Source: setsensitivity.cc Used By: mri1.cc: MRI::MRI() setSimType(std::string const&) Full name: Globals::setSimType(std::string const&) Source: setsimtype.cc Used By: actualize.cc: Options::actualize() setSimulationType() Full name: Options::setSimulationType() Source: setsimulationtype.cc Used By: options1.cc: Options::Options() setSpecificity() Full name: MRI::setSpecificity() Source: setspecificity.cc Used By: mri1.cc: MRI::MRI() setSpecificity() Full name: CT::setSpecificity() Source: setspecificity.cc Used By: ct1.cc: CT::CT(Tumor const&) setStart() Full name: Growth::setStart() Source: setstart.cc Used By: growth1.cc: Growth::Growth() setSystematicError() Full name: Mammo::setSystematicError() Source: setsystematicerror.cc Used By: mammo1.cc: Mammo::Mammo(Tumor const&) setVariables(bool) Full name: Costs::setVariables(bool) Source: setvariables.cc Used By: costs1.cc: Costs::Costs() setVary() Full name: Scenario::setVary() Source: setvary.cc Used By: scenario1.cc: Scenario::Scenario() setWidthPrec(std::ostream&, unsigned int, unsigned int) Full name: Globals::setWidthPrec(std::ostream&, unsigned int, unsigned int) Source: setwidthprec.cc Used By: writeparameters.cc: Beir7::writeParameters(std::ostream&) const writeparameters.cc: Costs::writeParameters(std::ostream&) const writeparameters.cc: Densities::writeParameters(std::ostream&) const insert1.cc: VSD::insert(std::ostream&) const insert.cc: Distribution::insert(std::ostream&) const vinsert.cc: Mammo::vInsert(std::ostream&) const insert.cc: ProbGroup::insert(std::ostream&) const showLineInfo(LineInfo const*) Full name: Scenario::showLineInfo(LineInfo const*) Source: showlineinfo.cc Used By: checkcumdeath.cc: Scenario::checkCumDeath(std::string const&, LineInfo const*) const showRound() const Full name: Loop::showRound() const Source: showround.cc Used By: writedata.cc: Loop::writeData(FBB::CSVTable&, unsigned long) const showVary(std::ostream&) const Full name: VSD::showVary(std::ostream&) const Source: showvary.cc Used By: vvary.cc: VSDParams::v_vary(std::ostream&) vary.cc: Beir7::vary(std::ostream&) vary3.cc: VSD::vary(std::ostream&, unsigned int, char const*, char, std::vector&) vvary.cc: CT::vVary(std::ostream&) vvary.cc: MRI::vVary(std::ostream&) vary2.cc: AgeGroupVSD::vary(std::ostream&, unsigned int, char const*, std::vector&) vary.cc: Growth::vary(std::ostream&) Simulator() Full name: Simulator::Simulator() Source: simulator1.cc Used By: main.cc: main specification() Full name: Err::specification() Source: specification.cc Used By: vsdparams1.cc: GLOBALS vsdparams1.cc 10vsdparams1.o appendpair.cc: TableParams::appendPair(std::string const&) beir71.cc: GLOBALS beir71.cc 13beir71.o setdiameters.cc: Costs::setDiameters() setlungcancer.cc: Costs::setLungCancer() addround.cc: Screening::addRound(LineInfo*, LineInfo const&) add.cc: Densities::add(bool*, LineInfo const&) add.cc: CT::add(bool*, LineInfo const&) setdose.cc: GLOBALS setdose.cc 26setdose.o extractbase.cc: ModBase::extractBase(VSD&) specificitybase.cc: ModBase::specificityBase(std::vector&) atleast.cc: Parser::atLeast(double, std::vector const&, double&) proportion.cc: Parser::proportion(std::vector const&, double&) vsdparameters1.cc: Parser::VSDparameters(VaryType, std::vector const&, std::initializer_list const&) vsdparameters2.cc: GLOBALS vsdparameters2.cc 34vsdparameters2.o find.cc: Scenario::find(std::vector const&, std::string const&) setgeneratortype.cc: GLOBALS setgeneratortype.cc 4setgeneratortype.o setvary.cc: GLOBALS setvary.cc 4setvary.o setdoublingtime.cc: GLOBALS setdoublingtime.cc 7setdoublingtime.o setselfdetect.cc: Growth::setSelfDetect() loads3.cc: Survival::loadS3() specificityBase(std::vector&) Full name: ModBase::specificityBase(std::vector&) Source: specificitybase.cc Used By: tomo1.cc: Tomo::Tomo() mammo1.cc: Mammo::Mammo(Tumor const&) sumProbs() Full name: Incidence::sumProbs() Source: sumprobs.cc Used By: setincidence1.cc: Incidence::setIncidence() Survival() Full name: Survival::Survival() Source: survival1.cc Used By: loop1.cc: Loop::Loop(std::vector const&) TableParams(std::vector&, unsigned long, bool) Full name: TableParams::TableParams(std::vector&, unsigned long, bool) Source: tableparams1.cc Used By: setincidence2.cc: Incidence::setIncidence(std::vector&, unsigned long, bool) tnm() const Full name: Options::tnm() const Source: tnm.cc Used By: loop1.cc: Loop::Loop(std::vector const&) Tomo() Full name: Tomo::Tomo() Source: tomo1.cc Used By: modalities1.cc: Modalities::Modalities(Tumor const&) Tumor(TumorInfo&) Full name: Tumor::Tumor(TumorInfo&) Source: tumor1.cc Used By: loop1.cc: Loop::Loop(std::vector const&) tumorAge() Full name: Tumor::tumorAge() Source: tumorage.cc Used By: reset.cc: Tumor::reset() tumorAge(std::string const&) Full name: Options::tumorAge(std::string const&) Source: tumorage.cc Used By: alter.cc: Options::alter(int, std::string const&) tumorageoption.cc: Options::tumorAgeOption(std::string const&) tumorAgeOption(std::string const&) Full name: Options::tumorAgeOption(std::string const&) Source: tumorageoption.cc Used By: options1.cc: Options::Options() tumorDetected(ModBase*, double) Full name: Loop::tumorDetected(ModBase*, double) Source: tumordetected.cc Used By: maybefalsenegative.cc: Loop::maybeFalseNegative(ModBase*, double) uint16_max Full name: Globals::uint16_max Source: data.cc Used By: extract.cc: Group::extract(std::istream&) maxend.cc: Group::maxEnd() opinsert.cc: operator<<(std::ostream&, Group const&) loadbc.cc: Survival::loadBC() writebreast.cc: Survival::writeBreast(std::ostream&) const uniform() Full name: Random::uniform() Source: uniform.cc Used By: index.cc: Incidence::index() const radiationrisk.cc: Screening::radiationRisk(Modalities const&, std::vector const&, double, double) cptindices.cc: Loop::cptIndices() const falsenegative.cc: Loop::falseNegative(ModBase*) maybefalsepositive.cc: Loop::maybeFalsePositive(ModBase*, double) uniformCase() Full name: Random::uniformCase() Source: uniformcase.cc Used By: naturaldeathage.cc: Loop::naturalDeathAge() reset.cc: Tumor::reset() tumorage.cc: Tumor::tumorAge() uniformVary() Full name: Random::uniformVary() Source: uniformvary.cc Used By: varymean.cc: Distribution::varyMean(double) const uniformVSD() Full name: Random::uniformVSD() Source: uniformvsd.cc Used By: cptvsdrow.cc: Survival::cptVSDrow(double) usage(std::string const&) Full name: usage(std::string const&) Source: usage.cc Used By: main.cc: main use(ModBase*) Full name: Loop::use(ModBase*) Source: use.cc Used By: screen.cc: Loop::screen(double) use(std::vector const&) const Full name: Modalities::use(std::vector const&) const Source: use.cc Used By: beir7err1.cc: Screening::beir7Err(Round const&, unsigned short, double, double, Modalities const&) beir7err2.cc: Screening::beir7Err(unsigned short, Round const&, unsigned short, double, double, Modalities const&) screen.cc: Loop::screen(double) v_cptTumorRisk(std::vector&) Full name: VSDParams::v_cptTumorRisk(std::vector&) Source: vcpttumorrisk.cc Used By: destructor.cc: VSDParams::~VSDParams() v_vary(std::ostream&) Full name: VSDParams::v_vary(std::ostream&) Source: vvary.cc Used By: destructor.cc: VSDParams::~VSDParams() v_vary(std::ostream&) Full name: TableParams::v_vary(std::ostream&) Source: vvary.cc Used By: vcpttumorrisk.cc: TableParams::v_cptTumorRisk(std::vector&) v_writeParameters(std::ostream&) const Full name: VSDParams::v_writeParameters(std::ostream&) const Source: vwriteparameters.cc Used By: destructor.cc: VSDParams::~VSDParams() v_writeParameters(std::ostream&) const Full name: TableParams::v_writeParameters(std::ostream&) const Source: vwriteparameters.cc Used By: vcpttumorrisk.cc: TableParams::v_cptTumorRisk(std::vector&) vary() Full name: AgeGroupVSD::vary() Source: vary1.cc Used By: vary2.cc: AgeGroupVSD::vary(std::ostream&, unsigned int, char const*, std::vector&) vary(std::ostream&) Full name: Beir7::vary(std::ostream&) Source: vary.cc Used By: vary.cc: TumorInfo::vary(std::ostream&) vary(std::ostream&) Full name: Growth::vary(std::ostream&) Source: vary.cc Used By: vary.cc: TumorInfo::vary(std::ostream&) vary(std::ostream&) Full name: TumorInfo::vary(std::ostream&) Source: vary.cc Used By: iterate.cc: Loop::iterate() vary(std::ostream&) Full name: Incidence::vary(std::ostream&) Source: vary.cc Used By: vary.cc: TumorInfo::vary(std::ostream&) vary(std::ostream&) Full name: Modalities::vary(std::ostream&) Source: vary.cc Used By: iterate.cc: Loop::iterate() vary(std::ostream&, unsigned int, char const*, char const*, char, std::vector&) Full name: VSD::vary(std::ostream&, unsigned int, char const*, char const*, char, std::vector&) Source: vary2.cc Used By: vvary.cc: Tomo::vVary(std::ostream&) vvary.cc: Mammo::vVary(std::ostream&) varybreast.cc: Survival::varyBreast(std::ostream&) varylung.cc: Survival::varyLung(std::ostream&) vary(std::ostream&, unsigned int, char const*, char, std::vector&) Full name: VSD::vary(std::ostream&, unsigned int, char const*, char, std::vector&) Source: vary3.cc Used By: vary2.cc: VSD::vary(std::ostream&, unsigned int, char const*, char const*, char, std::vector&) varylung.cc: Survival::varyLung(std::ostream&) vary(std::ostream&, unsigned int, char const*, std::vector&) Full name: AgeGroupVSD::vary(std::ostream&, unsigned int, char const*, std::vector&) Source: vary2.cc Used By: vvary.cc: Tomo::vVary(std::ostream&) vvary.cc: Mammo::vVary(std::ostream&) vary.cc: Growth::vary(std::ostream&) varyBeta(double) const Full name: Distribution::varyBeta(double) const Source: varybeta.cc Used By: data.cc: GLOBALS data.cc 21data.o extract.cc: Distribution::extract(std::istream&) varyBreast(std::ostream&) Full name: Survival::varyBreast(std::ostream&) Source: varybreast.cc Used By: survival1.cc: Survival::Survival() varyLung(std::ostream&) Full name: Survival::varyLung(std::ostream&) Source: varylung.cc Used By: survival1.cc: Survival::Survival() varyMean(double) const Full name: Distribution::varyMean(double) const Source: varymean.cc Used By: data.cc: GLOBALS data.cc 21data.o varynonneg.cc: Distribution::varyNonNeg(double) const varyprob.cc: Distribution::varyProb(double) const varyNonNeg(double) const Full name: Distribution::varyNonNeg(double) const Source: varynonneg.cc Used By: data.cc: GLOBALS data.cc 21data.o varyProb(double) const Full name: Distribution::varyProb(double) const Source: varyprob.cc Used By: data.cc: GLOBALS data.cc 21data.o vDose() const Full name: Mammo::vDose() const Source: vdose1.cc Used By: destructor.cc: Mammo::~Mammo() vDose() const Full name: ModBase::vDose() const Source: vdose1.cc Used By: destructor.cc: CT::~CT() destructor.cc: MRI::~MRI() destructor.cc: ModBase::~ModBase() vDose() const Full name: Tomo::vDose() const Source: vdose1.cc Used By: destructor.cc: Tomo::~Tomo() vDose(unsigned short) const Full name: Mammo::vDose(unsigned short) const Source: vdose2.cc Used By: destructor.cc: Mammo::~Mammo() vDose(unsigned short) const Full name: CT::vDose(unsigned short) const Source: vdose.cc Used By: destructor.cc: CT::~CT() vDose(unsigned short) const Full name: ModBase::vDose(unsigned short) const Source: vdose2.cc Used By: destructor.cc: MRI::~MRI() destructor.cc: ModBase::~ModBase() vDose(unsigned short) const Full name: Tomo::vDose(unsigned short) const Source: vdose2.cc Used By: destructor.cc: Tomo::~Tomo() version Full name: Icmake::version Source: version.cc Used By: main.cc: main usage.cc: usage(std::string const&) labels.cc: Loop::labels(std::ostream&) const vInsert(std::ostream&) const Full name: MRI::vInsert(std::ostream&) const Source: vinsert.cc Used By: destructor.cc: MRI::~MRI() vInsert(std::ostream&) const Full name: Tomo::vInsert(std::ostream&) const Source: vinsert.cc Used By: destructor.cc: Tomo::~Tomo() vInsert(std::ostream&) const Full name: Mammo::vInsert(std::ostream&) const Source: vinsert.cc Used By: destructor.cc: Mammo::~Mammo() vInsert(std::ostream&) const Full name: CT::vInsert(std::ostream&) const Source: vinsert.cc Used By: destructor.cc: CT::~CT() VSD(VaryType) Full name: VSD::VSD(VaryType) Source: vsd1.cc Used By: vsdparams1.cc: VSDParams::VSDParams(std::vector&, unsigned long, bool) beir71.cc: Beir7::Beir7() ct1.cc: CT::CT(Tumor const&) mri1.cc: MRI::MRI() agegroupvsd1.cc: AgeGroupVSD::AgeGroupVSD(VaryType, bool, bool) vsdparameters1.cc: Parser::VSDparameters(VaryType, std::vector const&, std::initializer_list const&) vsdparameters2.cc: Parser::VSDparameters(VaryType, std::vector const&, unsigned long) growth1.cc: Growth::Growth() VSDparameters(VaryType, std::vector const&, std::initializer_list const&) Full name: Parser::VSDparameters(VaryType, std::vector const&, std::initializer_list const&) Source: vsdparameters1.cc Used By: loads4.cc: Survival::loadS4() survival1.cc: Survival::Survival() VSDparameters(VaryType, std::vector const&, unsigned long) Full name: Parser::VSDparameters(VaryType, std::vector const&, unsigned long) Source: vsdparameters2.cc Used By: setsensitivity.cc: Tomo::setSensitivity() setbeta.cc: Mammo::setBeta() setm.cc: Mammo::setM() dosebase.cc: ModBase::doseBase(std::vector&) VSDParams(std::vector&, unsigned long, bool) Full name: VSDParams::VSDParams(std::vector&, unsigned long, bool) Source: vsdparams1.cc Used By: setincidence2.cc: Incidence::setIncidence(std::vector&, unsigned long, bool) vSensitivity(unsigned long) const Full name: CT::vSensitivity(unsigned long) const Source: vsensitivity.cc Used By: destructor.cc: CT::~CT() vSensitivity(unsigned long) const Full name: MRI::vSensitivity(unsigned long) const Source: vsensitivity.cc Used By: destructor.cc: MRI::~MRI() vSensitivity(unsigned long) const Full name: Tomo::vSensitivity(unsigned long) const Source: vsensitivity.cc Used By: destructor.cc: Tomo::~Tomo() vSensitivity(unsigned long) const Full name: Mammo::vSensitivity(unsigned long) const Source: vsensitivity.cc Used By: destructor.cc: Mammo::~Mammo() vSpecificity(double) const Full name: MRI::vSpecificity(double) const Source: vspecificity.cc Used By: destructor.cc: MRI::~MRI() vSpecificity(double) const Full name: CT::vSpecificity(double) const Source: vspecificity.cc Used By: destructor.cc: CT::~CT() vSpecificity(double) const Full name: Tomo::vSpecificity(double) const Source: vspecificity.cc Used By: destructor.cc: Tomo::~Tomo() vSpecificity(double) const Full name: Mammo::vSpecificity(double) const Source: vspecificity.cc Used By: destructor.cc: Mammo::~Mammo() vVary(std::ostream&) Full name: CT::vVary(std::ostream&) Source: vvary.cc Used By: destructor.cc: CT::~CT() vVary(std::ostream&) Full name: Tomo::vVary(std::ostream&) Source: vvary.cc Used By: destructor.cc: Tomo::~Tomo() vVary(std::ostream&) Full name: Mammo::vVary(std::ostream&) Source: vvary.cc Used By: destructor.cc: Mammo::~Mammo() vVary(std::ostream&) Full name: MRI::vVary(std::ostream&) Source: vvary.cc Used By: destructor.cc: MRI::~MRI() weakCompare(double, double) Full name: Globals::weakCompare(double, double) Source: weakcompare.cc Used By: increasingage.cc: Screening::increasingAge(Round const&) const setdeathage.cc: Tumor::setDeathAge(double) writeBreast(std::ostream&) const Full name: Survival::writeBreast(std::ostream&) const Source: writebreast.cc Used By: survival1.cc: Survival::Survival() writeData(FBB::CSVTable&) const Full name: Tumor::writeData(FBB::CSVTable&) const Source: writedata.cc Used By: writedata.cc: Loop::writeData(FBB::CSVTable&, unsigned long) const writeData(FBB::CSVTable&, unsigned long) const Full name: Loop::writeData(FBB::CSVTable&, unsigned long) const Source: writedata.cc Used By: gencases.cc: Loop::genCases(unsigned long, unsigned long) writeLung(std::ostream&) const Full name: Survival::writeLung(std::ostream&) const Source: writelung.cc Used By: survival1.cc: Survival::Survival() writeParameters(std::ostream&) Full name: Params::writeParameters(std::ostream&) Source: writeparameters.cc Used By: writeparameters.cc: Incidence::writeParameters(std::ostream&) const writeParameters(std::ostream&) const Full name: Modalities::writeParameters(std::ostream&) const Source: writeparameters.cc Used By: writeparameters.cc: Loop::writeParameters(unsigned long) const writeParameters(std::ostream&) const Full name: Growth::writeParameters(std::ostream&) const Source: writeparameters.cc Used By: writeparameters.cc: TumorInfo::writeParameters(std::ostream&) const writeParameters(std::ostream&) const Full name: TumorInfo::writeParameters(std::ostream&) const Source: writeparameters.cc Used By: writeparameters.cc: Loop::writeParameters(unsigned long) const writeParameters(std::ostream&) const Full name: Incidence::writeParameters(std::ostream&) const Source: writeparameters.cc Used By: writeparameters.cc: TumorInfo::writeParameters(std::ostream&) const writeParameters(std::ostream&) const Full name: Beir7::writeParameters(std::ostream&) const Source: writeparameters.cc Used By: writeparameters.cc: TumorInfo::writeParameters(std::ostream&) const writeParameters(std::ostream&) const Full name: Costs::writeParameters(std::ostream&) const Source: writeparameters.cc Used By: writeparameters.cc: Loop::writeParameters(unsigned long) const writeParameters(std::ostream&) const Full name: Screening::writeParameters(std::ostream&) const Source: writeparameters.cc Used By: writeparameters.cc: Loop::writeParameters(unsigned long) const writeParameters(std::ostream&) const Full name: Densities::writeParameters(std::ostream&) const Source: writeparameters.cc Used By: writeparameters.cc: Loop::writeParameters(unsigned long) const writeParameters(std::ostream&, unsigned long) const Full name: Scenario::writeParameters(std::ostream&, unsigned long) const Source: writeparameters.cc Used By: writeparameters.cc: Loop::writeParameters(unsigned long) const writeParameters(unsigned long) const Full name: Loop::writeParameters(unsigned long) const Source: writeparameters.cc Used By: iterate.cc: Loop::iterate() writeRounds(FBB::CSVTable&) const Full name: Loop::writeRounds(FBB::CSVTable&) const Source: writerounds.cc Used By: iterate.cc: Loop::iterate() writeRounds(FBB::CSVTable&, unsigned long) const Full name: Modalities::writeRounds(FBB::CSVTable&, unsigned long) const Source: writerounds.cc Used By: writerounds.cc: Loop::writeRounds(FBB::CSVTable&) const writeSensitivity(FBB::CSVTable&, unsigned long) const Full name: Loop::writeSensitivity(FBB::CSVTable&, unsigned long) const Source: writesensitivity.cc Used By: iterate.cc: Loop::iterate() years Full name: Icmake::years Source: version.cc Used By: usage.cc: usage(std::string const&) ~Modalities() Full name: Modalities::~Modalities() Source: destructor.cc Used By: run.cc: GLOBALS run.cc 2run.o loop1.cc: Loop::Loop(std::vector const&) ~ModBase() Full name: ModBase::~ModBase() Source: destructor.cc Used By: ct1.cc: CT::CT(Tumor const&) destructor.cc: CT::~CT() destructor.cc: Tomo::~Tomo() tomo1.cc: Tomo::Tomo() destructor.cc: Mammo::~Mammo() mammo1.cc: Mammo::Mammo(Tumor const&) destructor.cc: MRI::~MRI() mri1.cc: MRI::MRI() ~Params() Full name: Params::~Params() Source: destructor.cc Used By: destructor.cc: VSDParams::~VSDParams() vsdparams1.cc: VSDParams::VSDParams(std::vector&, unsigned long, bool) tableparams1.cc: TableParams::TableParams(std::vector&, unsigned long, bool) vcpttumorrisk.cc: TableParams::v_cptTumorRisk(std::vector&) ~Parser() Full name: Parser::~Parser() Source: destructor.cc Used By: run.cc: Simulator::run() analysis1.cc: Analysis::Analysis(std::istream&&, unsigned short) ---------------------------------------------------------------------- CALL TREE FOR: main main +-usage(std::string const&) | +-Icmake::version | +-Icmake::author | +-Icmake::years +-Icmake::version +-Options::instance() | +-Options::s_options | +-Options::Options() | +-Options::baseOption() | | +-Options::s_base | +-Options::configOption() | | +-Options::s_config | +-Options::cumDeathOption(std::string const&) | +-Options::deathAgeOption(std::string const&) | | +-Options::deathAge(std::string const&) | +-Options::fileOption(std::string*, int) | | +-Options::s_fileName | +-Options::lastCaseOption(std::string const&) | | +-Options::lastCase(std::string const&) | +-Options::logOption(std::string const&) | | +-g_log | | +-Log::set(unsigned int, unsigned int, std::string const&, std::string const&) | +-Options::setSimulationType() | | +-Globals::s_label | | +-Globals::findSimType(std::string const&) | | +-Globals::s_label | +-Options::tumorAgeOption(std::string const&) | +-Options::tumorAge(std::string const&) +-Simulator::Simulator() | +-Simulator::setAnalysisSource() | +-Simulator::cmdLineAnalysis() | +-Simulator::fileAnalysis() +-Simulator::run() | +-Analysis::Analysis(std::istream&&, unsigned short) | | +-Options::instance() | | | +-Options::s_options | | | +-Options::Options() | | | +-Options::baseOption() | | | | +-Options::s_base | | | +-Options::configOption() | | | | +-Options::s_config | | | +-Options::cumDeathOption(std::string const&) | | | +-Options::deathAgeOption(std::string const&) | | | | +-Options::deathAge(std::string const&) | | | +-Options::fileOption(std::string*, int) | | | | +-Options::s_fileName | | | +-Options::lastCaseOption(std::string const&) | | | | +-Options::lastCase(std::string const&) | | | +-Options::logOption(std::string const&) | | | | +-g_log | | | | +-Log::set(unsigned int, unsigned int, std::string const&, std::string const&) | | | +-Options::setSimulationType() | | | | +-Globals::s_label | | | | +-Globals::findSimType(std::string const&) | | | | +-Globals::s_label | | | +-Options::tumorAgeOption(std::string const&) | | | +-Options::tumorAge(std::string const&) | | +-Parser::~Parser() | | | +-Parser::s_map | | | +-Parser::rmLineInfoVectors(std::unordered_map&) | | | +-Parser::endPoint(std::pair const&) | | +-Analysis::actualize(std::vector const&) | | | +-g_longOpts | | | +-g_longEnd | | | +-Options::instance() | | | | +-Options::s_options | | | | +-Options::Options() | | | | +-Options::baseOption() | | | | | +-Options::s_base | | | | +-Options::configOption() | | | | | +-Options::s_config | | | | +-Options::cumDeathOption(std::string const&) | | | | +-Options::deathAgeOption(std::string const&) | | | | | +-Options::deathAge(std::string const&) | | | | +-Options::fileOption(std::string*, int) | | | | | +-Options::s_fileName | | | | +-Options::lastCaseOption(std::string const&) | | | | | +-Options::lastCase(std::string const&) | | | | +-Options::logOption(std::string const&) | | | | | +-g_log | | | | | +-Log::set(unsigned int, unsigned int, std::string const&, std::string const&) | | | | +-Options::setSimulationType() | | | | | +-Globals::s_label | | | | | +-Globals::findSimType(std::string const&) | | | | | +-Globals::s_label | | | | +-Options::tumorAgeOption(std::string const&) | | | | +-Options::tumorAge(std::string const&) | | | +-Options::activate() | | | +-Options::actualize() | | | | +-Options::replaceHome(std::string&) | | | | +-Options::setBase() | | | | | +-Options::replaceHome(std::string&) | | | | +-Options::replacePlus(std::string&) | | | | +-Globals::setSimType(std::string const&) | | | | | +-Globals::s_simType | | | | | +-Globals::s_label | | | | +-Options::conflictCheck() const | | | +-Options::alter(int, std::string const&) | | | +-Options::tumorAge(std::string const&) | | | +-Options::deathAge(std::string const&) | | | +-Options::lastCase(std::string const&) | | +-Parser::Parser() | | | +-Parser::s_map | | | +-Parser::initLineInfoVects(std::unordered_map&) | | | +-Parser::endPoint(std::pair const&) | | +-Parser::load(std::istream&, unsigned short, std::vector&, std::vector&) | | | +-ConfigLines::ConfigLines(std::istream&, unsigned short) | | | +-ConfigLines::get() | | | +-Parser::addConfigLine(std::vector*>&, ConfigLines&, ParamsSrc) | | | | +-Parser::checkRedo(ConfigLines&) | | | | | +-ConfigLines::key(std::string const&) | | | | +-Parser::endPoint(std::pair const&) | | | | +-Parser::locateError(std::vector*>&, ConfigLines&, ParamsSrc) | | | | +-Err::msg(Err::Plain) | | | | | +-Err::s_plain | | | | +-Err::s_src | | | +-Parser::s_map | | | +-Parser::setLabels(ConfigLines&, std::vector&) | | | | +-ConfigLines::get() | | | +-Parser::setOptions(ConfigLines&, std::vector&) | | | +-ConfigLines::get() | | | +-Parser::s_map | | +-Parser::load(std::string const&) | | +-ConfigLines::ConfigLines(std::string const&) | | +-ConfigLines::get() | | +-Parser::addConfigLine(std::vector*>&, ConfigLines&, ParamsSrc) | | | +-Parser::checkRedo(ConfigLines&) | | | | +-ConfigLines::key(std::string const&) | | | +-Parser::endPoint(std::pair const&) | | | +-Parser::locateError(std::vector*>&, ConfigLines&, ParamsSrc) | | | +-Err::msg(Err::Plain) | | | | +-Err::s_plain | | | +-Err::s_src | | +-Parser::s_map | +-Analysis::run() | | +-Analysis::requireBase() const | | | +-Options::instance() | | | +-Options::s_options | | | +-Options::Options() | | | +-Options::baseOption() | | | | +-Options::s_base | | | +-Options::configOption() | | | | +-Options::s_config | | | +-Options::cumDeathOption(std::string const&) | | | +-Options::deathAgeOption(std::string const&) | | | | +-Options::deathAge(std::string const&) | | | +-Options::fileOption(std::string*, int) | | | | +-Options::s_fileName | | | +-Options::lastCaseOption(std::string const&) | | | | +-Options::lastCase(std::string const&) | | | +-Options::logOption(std::string const&) | | | | +-g_log | | | | +-Log::set(unsigned int, unsigned int, std::string const&, std::string const&) | | | +-Options::setSimulationType() | | | | +-Globals::s_label | | | | +-Globals::findSimType(std::string const&) | | | | +-Globals::s_label | | | +-Options::tumorAgeOption(std::string const&) | | | +-Options::tumorAge(std::string const&) | | +-Loop::Loop(std::vector const&) | | | +-Options::instance() | | | | +-Options::s_options | | | | +-Options::Options() | | | | +-Options::baseOption() | | | | | +-Options::s_base | | | | +-Options::configOption() | | | | | +-Options::s_config | | | | +-Options::cumDeathOption(std::string const&) | | | | +-Options::deathAgeOption(std::string const&) | | | | | +-Options::deathAge(std::string const&) | | | | +-Options::fileOption(std::string*, int) | | | | | +-Options::s_fileName | | | | +-Options::lastCaseOption(std::string const&) | | | | | +-Options::lastCase(std::string const&) | | | | +-Options::logOption(std::string const&) | | | | | +-g_log | | | | | +-Log::set(unsigned int, unsigned int, std::string const&, std::string const&) | | | | +-Options::setSimulationType() | | | | | +-Globals::s_label | | | | | +-Globals::findSimType(std::string const&) | | | | | +-Globals::s_label | | | | +-Options::tumorAgeOption(std::string const&) | | | | +-Options::tumorAge(std::string const&) | | | +-Globals::s_simType | | | +-Incidence::Incidence() | | | | +-Incidence::cptTumorRisk() | | | | +-Incidence::setIncidence() | | | | +-Globals::s_simType | | | | +-Globals::s_label | | | | +-Params::s_label | | | | +-Incidence::sumProbs() | | | | +-Err::msg(Err::Plain) | | | | | +-Err::s_plain | | | | +-Incidence::setIncidence(std::vector&, unsigned long, bool) | | | | +-VSDParams::VSDParams(std::vector&, unsigned long, bool) | | | | | +-Params::~Params() | | | | | +-Params::Params(std::vector&, unsigned long, bool) | | | | | | +-Parser::proportion(std::vector const&, double&) | | | | | | +-Parser::one(std::vector const&) | | | | | | | +-Parser::any(std::vector const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | | +-Err::s_plain | | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | | +-Parser::s_map | | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | | +-Err::s_handle | | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Parser::Lines::get() | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_handle | | | | | | +-Err::specification() | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Err::s_lineInfo | | | | | | +-Err::range() | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-VSD::VSD(VaryType) | | | | | +-VSD::s_valueCheck | | | | | +-Distribution::Distribution(VaryType) | | | | | +-Globals::s_vary | | | | | +-Distribution::accept(double) const | | | | | +-Distribution::s_varyParam | | | | +-TableParams::TableParams(std::vector&, unsigned long, bool) | | | | | +-Params::~Params() | | | | | +-Params::Params(std::vector&, unsigned long, bool) | | | | | | +-Parser::proportion(std::vector const&, double&) | | | | | | +-Parser::one(std::vector const&) | | | | | | | +-Parser::any(std::vector const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | | +-Err::s_plain | | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | | +-Parser::s_map | | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | | +-Err::s_handle | | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Parser::Lines::get() | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_handle | | | | | | +-Err::specification() | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Err::s_lineInfo | | | | | | +-Err::range() | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-TableParams::fillRiskTable(std::vector&) | | | | | +-Parser::Lines::get() | | | | | | +-Err::reset(LineInfo const&) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_handle | | | | | +-TableParams::appendPair(std::string const&) | | | | | | +-Err::specification() | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-TableParams::checkTable() | | | | | | +-TableParams::checkIncreasing() | | | | | | +-TableParams::linear(double, std::pair const&, std::pair const&) | | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Parser::any(std::vector const&) | | | | | +-Err::msg(Err::Plain) | | | | | | +-Err::s_plain | | | | | +-Parser::lines(std::vector const&) | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | +-Parser::s_map | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_handle | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | +-Parser::sectionList(std::vector const&) | | | | +-Parser::hasSection(std::vector const&) | | | | +-Parser::keywordsLines(std::vector const&) | | | | +-Parser::s_map | | | +-Beir7::Beir7() | | | | +-Parser::one(std::vector const&) | | | | | +-Parser::any(std::vector const&) | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::lines(std::vector const&) | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | +-Parser::s_map | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_handle | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | +-Err::msg(Err::Plain) | | | | | | +-Err::s_plain | | | | | +-Parser::sectionList(std::vector const&) | | | | +-VSD::VSD(VaryType) | | | | | +-VSD::s_valueCheck | | | | | +-Distribution::Distribution(VaryType) | | | | | +-Globals::s_vary | | | | | +-Distribution::accept(double) const | | | | | +-Distribution::s_varyParam | | | | +-Globals::s_simType | | | +-Costs::Costs() | | | | +-Globals::s_simType | | | | +-Costs::setDiameters() | | | | | +-Parser::one(std::vector const&) | | | | | | +-Parser::any(std::vector const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | +-Parser::s_map | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_handle | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Err::specification() | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-Costs::extractDiameters(Parser::Lines&&) | | | | | +-Parser::Lines::get() | | | | | +-Err::reset(LineInfo const&) | | | | | +-Err::s_lineInfo | | | | | +-Err::s_handle | | | | +-Costs::setDiscount(bool) | | | | | +-Costs::setAge() | | | | | | +-Parser::atLeast(double, std::vector const&, double&) | | | | | | +-Parser::one(std::vector const&) | | | | | | | +-Parser::any(std::vector const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | | +-Err::s_plain | | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | | +-Parser::s_map | | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | | +-Err::s_handle | | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Parser::Lines::get() | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_handle | | | | | | +-Err::specification() | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Err::s_lineInfo | | | | | | +-Err::atLeast(double) | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-Costs::setProportion(bool) | | | | | +-Parser::one(std::vector const&) | | | | | | +-Parser::any(std::vector const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | +-Parser::s_map | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_handle | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Parser::Lines::get() | | | | | | +-Err::reset(LineInfo const&) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_handle | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Err::range() | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Err::s_lineInfo | | | | +-Costs::setVariables(bool) | | | | +-Costs::lcTreatment(double, double, bool) const | | | | | +-Costs::discount(double, unsigned long) const | | | | +-Costs::otherTreatment(double, double, bool) const | | | | | +-Costs::cost(double) const | | | | | +-Costs::discount(double, unsigned long) const | | | | +-Parser::atLeast(double, std::vector const&, double&) | | | | | +-Parser::one(std::vector const&) | | | | | | +-Parser::any(std::vector const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | +-Parser::s_map | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_handle | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Parser::Lines::get() | | | | | | +-Err::reset(LineInfo const&) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_handle | | | | | +-Err::specification() | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-Err::atLeast(double) | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Err::s_lineInfo | | | | +-Costs::setLungCancer() | | | | +-Parser::one(std::vector const&) | | | | | +-Parser::any(std::vector const&) | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::lines(std::vector const&) | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | +-Parser::s_map | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_handle | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | +-Err::msg(Err::Plain) | | | | | | +-Err::s_plain | | | | | +-Parser::sectionList(std::vector const&) | | | | +-Parser::Lines::get() | | | | | +-Err::reset(LineInfo const&) | | | | | +-Err::s_lineInfo | | | | | +-Err::s_handle | | | | +-Err::specification() | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Err::s_lineInfo | | | | +-Err::atLeast(double) | | | | +-Err::msg(Err::Context) | | | | | +-Err::s_lineInfo | | | | | +-Err::s_context | | | | | +-Err::s_src | | | | | +-Err::s_handle | | | | +-Err::s_lineInfo | | | +-Modalities::~Modalities() | | | +-Modalities::Modalities(Tumor const&) | | | | +-Globals::s_simType | | | | +-Modalities::addMod(ModBase*) | | | | +-CT::CT(Tumor const&) | | | | | +-VSD::VSD(VaryType) | | | | | | +-VSD::s_valueCheck | | | | | | +-Distribution::Distribution(VaryType) | | | | | | +-Globals::s_vary | | | | | | +-Distribution::accept(double) const | | | | | | +-Distribution::s_varyParam | | | | | +-ModBase::ModBase(std::string const&) | | | | | | +-Parser::hasSection(std::vector const&) | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | +-Parser::s_map | | | | | | +-Parser::atLeast(double, std::vector const&, double&) | | | | | | +-Parser::one(std::vector const&) | | | | | | | +-Parser::any(std::vector const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | | +-Err::s_plain | | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | | +-Parser::s_map | | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | | +-Err::s_handle | | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Parser::Lines::get() | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_handle | | | | | | +-Err::specification() | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Err::s_lineInfo | | | | | | +-Err::atLeast(double) | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-CT::setDose() | | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-CT::setSpecificity() | | | | | | +-CT::extract(char const*, VSD&) | | | | | | +-ModBase::extractBase(VSD&) | | | | | | +-Parser::one(std::vector const&) | | | | | | | +-Parser::any(std::vector const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | | +-Err::s_plain | | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | | +-Parser::s_map | | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | | +-Err::s_handle | | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Parser::Lines::get() | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_handle | | | | | | +-VSD::extract(std::istream&) | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::extract(std::istream&) | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Random::instance() | | | | | | | | +-Random::s_random | | | | | | | +-Err::s_lineInfo | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::varyBeta(double) const | | | | | | | | +-Random::instance() | | | | | | | | | +-Random::s_random | | | | | | | | +-Random::betaVary() | | | | | | | | +-BetaDist::operator()(std::mersenne_twister_engine&) | | | | | | | +-Distribution::find(std::string const&) | | | | | | | | +-Distribution::s_name | | | | | | | +-Random::prepareBeta(std::istream&) | | | | | | | | +-BetaDist::BetaDist(std::istream&) | | | | | | | | +-Err::msg(Err::Context) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_context | | | | | | | | | +-Err::s_src | | | | | | | | | +-Err::s_handle | | | | | | | | +-Err::s_lineInfo | | | | | | | +-Distribution::prepareVary(std::istream&) | | | | | | | +-Globals::s_vary | | | | | | +-Err::specification() | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-CT::setSensitivity() | | | | | | +-Parser::Lines::get() | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_handle | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Parser::any(std::vector const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | +-Parser::s_map | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_handle | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Err::s_lineInfo | | | | | | +-CT::add(bool*, LineInfo const&) | | | | | | | +-Err::specification() | | | | | | | | +-Err::msg(Err::Context) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_context | | | | | | | | | +-Err::s_src | | | | | | | | | +-Err::s_handle | | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Err::s_lineInfo | | | | | | | +-Group::extract(std::istream&) | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Err::s_lineInfo | | | | | | | +-Globals::uint16_max | | | | | | +-Group::maxEnd() | | | | | | +-Globals::uint16_max | | | | | +-ModBase::~ModBase() | | | | | +-ModBase::vDose() const | | | | | +-ModBase::vDose(unsigned short) const | | | | +-Mammo::Mammo(Tumor const&) | | | | | +-ModBase::ModBase(std::string const&) | | | | | | +-Parser::hasSection(std::vector const&) | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | +-Parser::s_map | | | | | | +-Parser::atLeast(double, std::vector const&, double&) | | | | | | +-Parser::one(std::vector const&) | | | | | | | +-Parser::any(std::vector const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | | +-Err::s_plain | | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | | +-Parser::s_map | | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | | +-Err::s_handle | | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Parser::Lines::get() | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_handle | | | | | | +-Err::specification() | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Err::s_lineInfo | | | | | | +-Err::atLeast(double) | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-ModBase::~ModBase() | | | | | | +-ModBase::vDose() const | | | | | | +-ModBase::vDose(unsigned short) const | | | | | +-ModBase::doseBase(std::vector&) | | | | | | +-Parser::VSDparameters(VaryType, std::vector const&, unsigned long) | | | | | | +-Parser::one(std::vector const&) | | | | | | | +-Parser::any(std::vector const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | | +-Err::s_plain | | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | | +-Parser::s_map | | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | | +-Err::s_handle | | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-VSD::extract(std::istream&) | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::extract(std::istream&) | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Random::instance() | | | | | | | | +-Random::s_random | | | | | | | +-Err::s_lineInfo | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::varyBeta(double) const | | | | | | | | +-Random::instance() | | | | | | | | | +-Random::s_random | | | | | | | | +-Random::betaVary() | | | | | | | | +-BetaDist::operator()(std::mersenne_twister_engine&) | | | | | | | +-Distribution::find(std::string const&) | | | | | | | | +-Distribution::s_name | | | | | | | +-Random::prepareBeta(std::istream&) | | | | | | | | +-BetaDist::BetaDist(std::istream&) | | | | | | | | +-Err::msg(Err::Context) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_context | | | | | | | | | +-Err::s_src | | | | | | | | | +-Err::s_handle | | | | | | | | +-Err::s_lineInfo | | | | | | | +-Distribution::prepareVary(std::istream&) | | | | | | | +-Globals::s_vary | | | | | | +-VSD::VSD(VaryType) | | | | | | | +-VSD::s_valueCheck | | | | | | | +-Distribution::Distribution(VaryType) | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::accept(double) const | | | | | | | +-Distribution::s_varyParam | | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-ModBase::specificityBase(std::vector&) | | | | | | +-Parser::one(std::vector const&) | | | | | | | +-Parser::any(std::vector const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | | +-Err::s_plain | | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | | +-Parser::s_map | | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | | +-Err::s_handle | | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Parser::Lines::get() | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_handle | | | | | | +-Err::specification() | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Err::s_lineInfo | | | | | | +-Group::connects(Group const&) const | | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-AgeGroupVSD::AgeGroupVSD(VaryType, bool, bool) | | | | | | | +-VSD::VSD(VaryType) | | | | | | | +-VSD::s_valueCheck | | | | | | | +-Distribution::Distribution(VaryType) | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::accept(double) const | | | | | | | +-Distribution::s_varyParam | | | | | | +-AgeGroupVSD::extract(std::istream&) | | | | | | +-VSD::extract(std::istream&) | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::extract(std::istream&) | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Random::instance() | | | | | | | | +-Random::s_random | | | | | | | +-Err::s_lineInfo | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::varyBeta(double) const | | | | | | | | +-Random::instance() | | | | | | | | | +-Random::s_random | | | | | | | | +-Random::betaVary() | | | | | | | | +-BetaDist::operator()(std::mersenne_twister_engine&) | | | | | | | +-Distribution::find(std::string const&) | | | | | | | | +-Distribution::s_name | | | | | | | +-Random::prepareBeta(std::istream&) | | | | | | | | +-BetaDist::BetaDist(std::istream&) | | | | | | | | +-Err::msg(Err::Context) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_context | | | | | | | | | +-Err::s_src | | | | | | | | | +-Err::s_handle | | | | | | | | +-Err::s_lineInfo | | | | | | | +-Distribution::prepareVary(std::istream&) | | | | | | | +-Globals::s_vary | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Group::extract(std::istream&) | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | | +-Globals::uint16_max | | | | | +-Mammo::setSystematicError() | | | | | | +-Parser::proportion(std::vector const&, double&) | | | | | | +-Parser::one(std::vector const&) | | | | | | | +-Parser::any(std::vector const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | | +-Err::s_plain | | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | | +-Parser::s_map | | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | | +-Err::s_handle | | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Parser::Lines::get() | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_handle | | | | | | +-Err::specification() | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Err::s_lineInfo | | | | | | +-Err::range() | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-Mammo::setM() | | | | | | +-Parser::VSDparameters(VaryType, std::vector const&, unsigned long) | | | | | | +-Parser::one(std::vector const&) | | | | | | | +-Parser::any(std::vector const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | | +-Err::s_plain | | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | | +-Parser::s_map | | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | | +-Err::s_handle | | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-VSD::extract(std::istream&) | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::extract(std::istream&) | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Random::instance() | | | | | | | | +-Random::s_random | | | | | | | +-Err::s_lineInfo | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::varyBeta(double) const | | | | | | | | +-Random::instance() | | | | | | | | | +-Random::s_random | | | | | | | | +-Random::betaVary() | | | | | | | | +-BetaDist::operator()(std::mersenne_twister_engine&) | | | | | | | +-Distribution::find(std::string const&) | | | | | | | | +-Distribution::s_name | | | | | | | +-Random::prepareBeta(std::istream&) | | | | | | | | +-BetaDist::BetaDist(std::istream&) | | | | | | | | +-Err::msg(Err::Context) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_context | | | | | | | | | +-Err::s_src | | | | | | | | | +-Err::s_handle | | | | | | | | +-Err::s_lineInfo | | | | | | | +-Distribution::prepareVary(std::istream&) | | | | | | | +-Globals::s_vary | | | | | | +-VSD::VSD(VaryType) | | | | | | | +-VSD::s_valueCheck | | | | | | | +-Distribution::Distribution(VaryType) | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::accept(double) const | | | | | | | +-Distribution::s_varyParam | | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Mammo::setBeta() | | | | | +-Parser::VSDparameters(VaryType, std::vector const&, unsigned long) | | | | | +-Parser::one(std::vector const&) | | | | | | +-Parser::any(std::vector const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | +-Parser::s_map | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_handle | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-VSD::extract(std::istream&) | | | | | | +-Globals::s_vary | | | | | | +-Distribution::extract(std::istream&) | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Random::instance() | | | | | | | +-Random::s_random | | | | | | +-Err::s_lineInfo | | | | | | +-Globals::s_vary | | | | | | +-Distribution::varyBeta(double) const | | | | | | | +-Random::instance() | | | | | | | | +-Random::s_random | | | | | | | +-Random::betaVary() | | | | | | | +-BetaDist::operator()(std::mersenne_twister_engine&) | | | | | | +-Distribution::find(std::string const&) | | | | | | | +-Distribution::s_name | | | | | | +-Random::prepareBeta(std::istream&) | | | | | | | +-BetaDist::BetaDist(std::istream&) | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Err::s_lineInfo | | | | | | +-Distribution::prepareVary(std::istream&) | | | | | | +-Globals::s_vary | | | | | +-VSD::VSD(VaryType) | | | | | | +-VSD::s_valueCheck | | | | | | +-Distribution::Distribution(VaryType) | | | | | | +-Globals::s_vary | | | | | | +-Distribution::accept(double) const | | | | | | +-Distribution::s_varyParam | | | | | +-Err::msg(Err::Context) | | | | | +-Err::s_lineInfo | | | | | +-Err::s_context | | | | | +-Err::s_src | | | | | +-Err::s_handle | | | | +-Tomo::Tomo() | | | | | +-ModBase::ModBase(std::string const&) | | | | | | +-Parser::hasSection(std::vector const&) | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | +-Parser::s_map | | | | | | +-Parser::atLeast(double, std::vector const&, double&) | | | | | | +-Parser::one(std::vector const&) | | | | | | | +-Parser::any(std::vector const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | | +-Err::s_plain | | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | | +-Parser::s_map | | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | | +-Err::s_handle | | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Parser::Lines::get() | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_handle | | | | | | +-Err::specification() | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Err::s_lineInfo | | | | | | +-Err::atLeast(double) | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-ModBase::~ModBase() | | | | | | +-ModBase::vDose() const | | | | | | +-ModBase::vDose(unsigned short) const | | | | | +-Tomo::setSensitivity() | | | | | | +-Parser::VSDparameters(VaryType, std::vector const&, unsigned long) | | | | | | +-Parser::one(std::vector const&) | | | | | | | +-Parser::any(std::vector const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | | +-Err::s_plain | | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | | +-Parser::s_map | | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | | +-Err::s_handle | | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-VSD::extract(std::istream&) | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::extract(std::istream&) | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Random::instance() | | | | | | | | +-Random::s_random | | | | | | | +-Err::s_lineInfo | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::varyBeta(double) const | | | | | | | | +-Random::instance() | | | | | | | | | +-Random::s_random | | | | | | | | +-Random::betaVary() | | | | | | | | +-BetaDist::operator()(std::mersenne_twister_engine&) | | | | | | | +-Distribution::find(std::string const&) | | | | | | | | +-Distribution::s_name | | | | | | | +-Random::prepareBeta(std::istream&) | | | | | | | | +-BetaDist::BetaDist(std::istream&) | | | | | | | | +-Err::msg(Err::Context) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_context | | | | | | | | | +-Err::s_src | | | | | | | | | +-Err::s_handle | | | | | | | | +-Err::s_lineInfo | | | | | | | +-Distribution::prepareVary(std::istream&) | | | | | | | +-Globals::s_vary | | | | | | +-VSD::VSD(VaryType) | | | | | | | +-VSD::s_valueCheck | | | | | | | +-Distribution::Distribution(VaryType) | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::accept(double) const | | | | | | | +-Distribution::s_varyParam | | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-ModBase::doseBase(std::vector&) | | | | | | +-Parser::VSDparameters(VaryType, std::vector const&, unsigned long) | | | | | | +-Parser::one(std::vector const&) | | | | | | | +-Parser::any(std::vector const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | | +-Err::s_plain | | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | | +-Parser::s_map | | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | | +-Err::s_handle | | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-VSD::extract(std::istream&) | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::extract(std::istream&) | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Random::instance() | | | | | | | | +-Random::s_random | | | | | | | +-Err::s_lineInfo | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::varyBeta(double) const | | | | | | | | +-Random::instance() | | | | | | | | | +-Random::s_random | | | | | | | | +-Random::betaVary() | | | | | | | | +-BetaDist::operator()(std::mersenne_twister_engine&) | | | | | | | +-Distribution::find(std::string const&) | | | | | | | | +-Distribution::s_name | | | | | | | +-Random::prepareBeta(std::istream&) | | | | | | | | +-BetaDist::BetaDist(std::istream&) | | | | | | | | +-Err::msg(Err::Context) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_context | | | | | | | | | +-Err::s_src | | | | | | | | | +-Err::s_handle | | | | | | | | +-Err::s_lineInfo | | | | | | | +-Distribution::prepareVary(std::istream&) | | | | | | | +-Globals::s_vary | | | | | | +-VSD::VSD(VaryType) | | | | | | | +-VSD::s_valueCheck | | | | | | | +-Distribution::Distribution(VaryType) | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::accept(double) const | | | | | | | +-Distribution::s_varyParam | | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-ModBase::specificityBase(std::vector&) | | | | | +-Parser::one(std::vector const&) | | | | | | +-Parser::any(std::vector const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | +-Parser::s_map | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_handle | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Parser::Lines::get() | | | | | | +-Err::reset(LineInfo const&) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_handle | | | | | +-Err::specification() | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-Group::connects(Group const&) const | | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-AgeGroupVSD::AgeGroupVSD(VaryType, bool, bool) | | | | | | +-VSD::VSD(VaryType) | | | | | | +-VSD::s_valueCheck | | | | | | +-Distribution::Distribution(VaryType) | | | | | | +-Globals::s_vary | | | | | | +-Distribution::accept(double) const | | | | | | +-Distribution::s_varyParam | | | | | +-AgeGroupVSD::extract(std::istream&) | | | | | +-VSD::extract(std::istream&) | | | | | | +-Globals::s_vary | | | | | | +-Distribution::extract(std::istream&) | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Random::instance() | | | | | | | +-Random::s_random | | | | | | +-Err::s_lineInfo | | | | | | +-Globals::s_vary | | | | | | +-Distribution::varyBeta(double) const | | | | | | | +-Random::instance() | | | | | | | | +-Random::s_random | | | | | | | +-Random::betaVary() | | | | | | | +-BetaDist::operator()(std::mersenne_twister_engine&) | | | | | | +-Distribution::find(std::string const&) | | | | | | | +-Distribution::s_name | | | | | | +-Random::prepareBeta(std::istream&) | | | | | | | +-BetaDist::BetaDist(std::istream&) | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Err::s_lineInfo | | | | | | +-Distribution::prepareVary(std::istream&) | | | | | | +-Globals::s_vary | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Group::extract(std::istream&) | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Err::s_lineInfo | | | | | +-Globals::uint16_max | | | | +-MRI::MRI() | | | | +-VSD::VSD(VaryType) | | | | | +-VSD::s_valueCheck | | | | | +-Distribution::Distribution(VaryType) | | | | | +-Globals::s_vary | | | | | +-Distribution::accept(double) const | | | | | +-Distribution::s_varyParam | | | | +-ModBase::ModBase(std::string const&) | | | | | +-Parser::hasSection(std::vector const&) | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | +-Parser::s_map | | | | | +-Parser::atLeast(double, std::vector const&, double&) | | | | | +-Parser::one(std::vector const&) | | | | | | +-Parser::any(std::vector const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | +-Parser::s_map | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_handle | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Parser::Lines::get() | | | | | | +-Err::reset(LineInfo const&) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_handle | | | | | +-Err::specification() | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-Err::atLeast(double) | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Err::s_lineInfo | | | | +-ModBase::~ModBase() | | | | | +-ModBase::vDose() const | | | | | +-ModBase::vDose(unsigned short) const | | | | +-MRI::setSpecificity() | | | | | +-MRI::extract(char const*, VSD&) | | | | | +-ModBase::extractBase(VSD&) | | | | | +-Parser::one(std::vector const&) | | | | | | +-Parser::any(std::vector const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | +-Parser::s_map | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_handle | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Parser::Lines::get() | | | | | | +-Err::reset(LineInfo const&) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_handle | | | | | +-VSD::extract(std::istream&) | | | | | | +-Globals::s_vary | | | | | | +-Distribution::extract(std::istream&) | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Random::instance() | | | | | | | +-Random::s_random | | | | | | +-Err::s_lineInfo | | | | | | +-Globals::s_vary | | | | | | +-Distribution::varyBeta(double) const | | | | | | | +-Random::instance() | | | | | | | | +-Random::s_random | | | | | | | +-Random::betaVary() | | | | | | | +-BetaDist::operator()(std::mersenne_twister_engine&) | | | | | | +-Distribution::find(std::string const&) | | | | | | | +-Distribution::s_name | | | | | | +-Random::prepareBeta(std::istream&) | | | | | | | +-BetaDist::BetaDist(std::istream&) | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Err::s_lineInfo | | | | | | +-Distribution::prepareVary(std::istream&) | | | | | | +-Globals::s_vary | | | | | +-Err::specification() | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Err::s_lineInfo | | | | +-MRI::setSensitivity() | | | | +-MRI::extract(char const*, VSD&) | | | | +-ModBase::extractBase(VSD&) | | | | +-Parser::one(std::vector const&) | | | | | +-Parser::any(std::vector const&) | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::lines(std::vector const&) | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | +-Parser::s_map | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_handle | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | +-Err::msg(Err::Plain) | | | | | | +-Err::s_plain | | | | | +-Parser::sectionList(std::vector const&) | | | | +-Parser::Lines::get() | | | | | +-Err::reset(LineInfo const&) | | | | | +-Err::s_lineInfo | | | | | +-Err::s_handle | | | | +-VSD::extract(std::istream&) | | | | | +-Globals::s_vary | | | | | +-Distribution::extract(std::istream&) | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Random::instance() | | | | | | +-Random::s_random | | | | | +-Err::s_lineInfo | | | | | +-Globals::s_vary | | | | | +-Distribution::varyBeta(double) const | | | | | | +-Random::instance() | | | | | | | +-Random::s_random | | | | | | +-Random::betaVary() | | | | | | +-BetaDist::operator()(std::mersenne_twister_engine&) | | | | | +-Distribution::find(std::string const&) | | | | | | +-Distribution::s_name | | | | | +-Random::prepareBeta(std::istream&) | | | | | | +-BetaDist::BetaDist(std::istream&) | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-Distribution::prepareVary(std::istream&) | | | | | +-Globals::s_vary | | | | +-Err::specification() | | | | +-Err::msg(Err::Context) | | | | | +-Err::s_lineInfo | | | | | +-Err::s_context | | | | | +-Err::s_src | | | | | +-Err::s_handle | | | | +-Err::s_lineInfo | | | +-Screening::roundAge(unsigned long) const | | | +-Screening::Screening(Modalities&) | | | | +-Globals::s_simType | | | | +-Screening::errRisk1404(std::vector&, Modalities const&, Round const&, unsigned short, double, double) | | | | | +-Screening::beir7Err(Round const&, unsigned short, double, double, Modalities const&) | | | | | +-Modalities::use(std::vector const&) const | | | | +-Screening::errRisk1405(std::vector&, Modalities const&, Round const&, unsigned short, double, double) | | | | | +-Screening::beir7Err(unsigned short, Round const&, unsigned short, double, double, Modalities const&) | | | | | +-Modalities::use(std::vector const&) const | | | | +-Screening::setAttendanceRate() | | | | | +-Parser::proportion(std::vector const&, double&) | | | | | +-Parser::one(std::vector const&) | | | | | | +-Parser::any(std::vector const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | +-Parser::s_map | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_handle | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Parser::Lines::get() | | | | | | +-Err::reset(LineInfo const&) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_handle | | | | | +-Err::specification() | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-Err::range() | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Err::s_lineInfo | | | | +-Screening::setRounds() | | | | +-Parser::Lines::get() | | | | | +-Err::reset(LineInfo const&) | | | | | +-Err::s_lineInfo | | | | | +-Err::s_handle | | | | +-Err::msg(Err::Context) | | | | | +-Err::s_lineInfo | | | | | +-Err::s_context | | | | | +-Err::s_src | | | | | +-Err::s_handle | | | | +-Parser::any(std::vector const&) | | | | | +-Err::msg(Err::Plain) | | | | | | +-Err::s_plain | | | | | +-Parser::lines(std::vector const&) | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | +-Parser::s_map | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_handle | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | +-Parser::sectionList(std::vector const&) | | | | +-Screening::addRound(LineInfo*, LineInfo const&) | | | | | +-Err::specification() | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Screening::addModality(std::istream&, Round&) | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Modalities::find(std::string const&) const | | | | | | +-Round::add(unsigned short) | | | | | +-operator>>(std::istream&, Round&) | | | | | +-Globals::isZero(double) | | | | | +-Screening::increasingAge(Round const&) const | | | | | +-Globals::weakCompare(double, double) | | | | +-Err::reset(LineInfo const&) | | | | +-Err::s_lineInfo | | | | +-Err::s_handle | | | +-Densities::Densities() | | | | +-Parser::Lines::get() | | | | | +-Err::reset(LineInfo const&) | | | | | +-Err::s_lineInfo | | | | | +-Err::s_handle | | | | +-Globals::s_simType | | | | +-Parser::any(std::vector const&) | | | | | +-Err::msg(Err::Plain) | | | | | | +-Err::s_plain | | | | | +-Parser::lines(std::vector const&) | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | +-Parser::s_map | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_handle | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | +-Parser::sectionList(std::vector const&) | | | | +-Densities::add(bool*, LineInfo const&) | | | | +-Err::specification() | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Err::s_lineInfo | | | | +-Err::msg(Err::Context) | | | | | +-Err::s_lineInfo | | | | | +-Err::s_context | | | | | +-Err::s_src | | | | | +-Err::s_handle | | | | +-Globals::isZero(double) | | | | +-ProbGroup::ProbGroup(Series) | | | | | +-Globals::s_simType | | | | +-ProbGroup::extract(std::istream&) | | | | | +-Group::extract(std::istream&) | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Err::s_lineInfo | | | | | +-Globals::uint16_max | | | | +-Densities::percentages(std::vector const&) | | | | +-Group::connects(Group const&) const | | | | | +-Err::msg(Err::Context) | | | | | +-Err::s_lineInfo | | | | | +-Err::s_context | | | | | +-Err::s_src | | | | | +-Err::s_handle | | | | +-Err::s_lineInfo | | | +-Options::tnm() const | | | +-Loop::fillTNM(std::ostream&) | | | +-Scenario::Scenario() | | | | +-Scenario::setNiterations() | | | | | +-Parser::atLeast(double, std::vector const&, double&) | | | | | +-Parser::one(std::vector const&) | | | | | | +-Parser::any(std::vector const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | +-Parser::s_map | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_handle | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Parser::Lines::get() | | | | | | +-Err::reset(LineInfo const&) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_handle | | | | | +-Err::specification() | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-Err::atLeast(double) | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Err::s_lineInfo | | | | +-Scenario::setNcases() | | | | | +-Parser::atLeast(double, std::vector const&, double&) | | | | | +-Parser::one(std::vector const&) | | | | | | +-Parser::any(std::vector const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | +-Parser::s_map | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_handle | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Parser::Lines::get() | | | | | | +-Err::reset(LineInfo const&) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_handle | | | | | +-Err::specification() | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-Err::atLeast(double) | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Err::s_lineInfo | | | | +-Scenario::setGeneratorType() | | | | | +-Scenario::s_generatorType | | | | | +-Scenario::find(std::vector const&, std::string const&) | | | | | +-Err::specification() | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Err::s_lineInfo | | | | +-Scenario::setSeed() | | | | | +-Parser::atLeast(double, std::vector const&, double&) | | | | | +-Parser::one(std::vector const&) | | | | | | +-Parser::any(std::vector const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | +-Parser::s_map | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_handle | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Parser::Lines::get() | | | | | | +-Err::reset(LineInfo const&) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_handle | | | | | +-Err::specification() | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-Err::atLeast(double) | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Err::s_lineInfo | | | | +-Scenario::setVary() | | | | | +-Globals::s_vary | | | | | +-Random::initialize() | | | | | | +-Random::s_random | | | | | | +-Random::Random() | | | | | | +-Globals::s_vary | | | | | +-Scenario::s_bool | | | | | +-Scenario::find(std::vector const&, std::string const&) | | | | | +-Err::specification() | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Err::s_lineInfo | | | | +-Scenario::setDeath() | | | | +-Options::instance() | | | | | +-Options::s_options | | | | | +-Options::Options() | | | | | +-Options::baseOption() | | | | | | +-Options::s_base | | | | | +-Options::configOption() | | | | | | +-Options::s_config | | | | | +-Options::cumDeathOption(std::string const&) | | | | | +-Options::deathAgeOption(std::string const&) | | | | | | +-Options::deathAge(std::string const&) | | | | | +-Options::fileOption(std::string*, int) | | | | | | +-Options::s_fileName | | | | | +-Options::lastCaseOption(std::string const&) | | | | | | +-Options::lastCase(std::string const&) | | | | | +-Options::logOption(std::string const&) | | | | | | +-g_log | | | | | | +-Log::set(unsigned int, unsigned int, std::string const&, std::string const&) | | | | | +-Options::setSimulationType() | | | | | | +-Globals::s_label | | | | | | +-Globals::findSimType(std::string const&) | | | | | | +-Globals::s_label | | | | | +-Options::tumorAgeOption(std::string const&) | | | | | +-Options::tumorAge(std::string const&) | | | | +-Parser::Lines::get() | | | | | +-Err::reset(LineInfo const&) | | | | | +-Err::s_lineInfo | | | | | +-Err::s_handle | | | | +-Parser::any(std::vector const&) | | | | | +-Err::msg(Err::Plain) | | | | | | +-Err::s_plain | | | | | +-Parser::lines(std::vector const&) | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | +-Parser::s_map | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_handle | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | +-Parser::sectionList(std::vector const&) | | | | +-Scenario::appendCumDeath(std::string const&) | | | | +-Scenario::checkCumDeath(std::string const&, LineInfo const*) const | | | | | +-Err::msg(Err::Plain) | | | | | | +-Err::s_plain | | | | | +-Scenario::showLineInfo(LineInfo const*) | | | | +-Scenario::readCumDeath(std::string const&) | | | | +-Err::msg(Err::Plain) | | | | | +-Err::s_plain | | | | +-Scenario::appendCumDeath(std::string const&) | | | +-Growth::Growth() | | | | +-VSD::VSD(VaryType) | | | | | +-VSD::s_valueCheck | | | | | +-Distribution::Distribution(VaryType) | | | | | +-Globals::s_vary | | | | | +-Distribution::accept(double) const | | | | | +-Distribution::s_varyParam | | | | +-Globals::s_simType | | | | +-Growth::setSelfDetect() | | | | | +-Parser::one(std::vector const&) | | | | | | +-Parser::any(std::vector const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | +-Parser::s_map | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_handle | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Parser::Lines::get() | | | | | | +-Err::reset(LineInfo const&) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_handle | | | | | +-VSD::extract(std::istream&) | | | | | | +-Globals::s_vary | | | | | | +-Distribution::extract(std::istream&) | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Random::instance() | | | | | | | +-Random::s_random | | | | | | +-Err::s_lineInfo | | | | | | +-Globals::s_vary | | | | | | +-Distribution::varyBeta(double) const | | | | | | | +-Random::instance() | | | | | | | | +-Random::s_random | | | | | | | +-Random::betaVary() | | | | | | | +-BetaDist::operator()(std::mersenne_twister_engine&) | | | | | | +-Distribution::find(std::string const&) | | | | | | | +-Distribution::s_name | | | | | | +-Random::prepareBeta(std::istream&) | | | | | | | +-BetaDist::BetaDist(std::istream&) | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Err::s_lineInfo | | | | | | +-Distribution::prepareVary(std::istream&) | | | | | | +-Globals::s_vary | | | | | +-Err::specification() | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-Globals::s_simType | | | | | +-VSD::ln() | | | | | | +-Globals::s_vary | | | | | | +-Distribution::ln() | | | | | +-Err::negative() | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Err::s_lineInfo | | | | +-Growth::setDoublingTime() | | | | | +-Parser::one(std::vector const&) | | | | | | +-Parser::any(std::vector const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | +-Parser::s_map | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_handle | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Parser::Lines::get() | | | | | | +-Err::reset(LineInfo const&) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_handle | | | | | +-Globals::s_simType | | | | | +-Parser::any(std::vector const&) | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::lines(std::vector const&) | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | +-Parser::s_map | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_handle | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Group::connects(Group const&) const | | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-AgeGroupVSD::AgeGroupVSD(VaryType, bool, bool) | | | | | | +-VSD::VSD(VaryType) | | | | | | +-VSD::s_valueCheck | | | | | | +-Distribution::Distribution(VaryType) | | | | | | +-Globals::s_vary | | | | | | +-Distribution::accept(double) const | | | | | | +-Distribution::s_varyParam | | | | | +-AgeGroupVSD::ln() | | | | | | +-VSD::ln() | | | | | | +-Globals::s_vary | | | | | | +-Distribution::ln() | | | | | +-Growth::ageGroupVSDbreast(unsigned short) const | | | | | +-Growth::ageGroupVSDlung(unsigned short) const | | | | +-Growth::setStart() | | | | +-Parser::one(std::vector const&) | | | | | +-Parser::any(std::vector const&) | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::lines(std::vector const&) | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | +-Parser::s_map | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_handle | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | +-Err::msg(Err::Plain) | | | | | | +-Err::s_plain | | | | | +-Parser::sectionList(std::vector const&) | | | | +-Parser::Lines::get() | | | | | +-Err::reset(LineInfo const&) | | | | | +-Err::s_lineInfo | | | | | +-Err::s_handle | | | | +-Globals::s_simType | | | | +-Err::msg(Err::Context) | | | | | +-Err::s_lineInfo | | | | | +-Err::s_context | | | | | +-Err::s_src | | | | | +-Err::s_handle | | | | +-Err::atLeast(double) | | | | +-Err::msg(Err::Context) | | | | | +-Err::s_lineInfo | | | | | +-Err::s_context | | | | | +-Err::s_src | | | | | +-Err::s_handle | | | | +-Err::s_lineInfo | | | +-Survival::Survival() | | | | +-Globals::s_simType | | | | +-Parser::VSDparameters(VaryType, std::vector const&, std::initializer_list const&) | | | | | +-Parser::Lines::get() | | | | | | +-Err::reset(LineInfo const&) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_handle | | | | | +-VSD::extract(std::istream&) | | | | | | +-Globals::s_vary | | | | | | +-Distribution::extract(std::istream&) | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Random::instance() | | | | | | | +-Random::s_random | | | | | | +-Err::s_lineInfo | | | | | | +-Globals::s_vary | | | | | | +-Distribution::varyBeta(double) const | | | | | | | +-Random::instance() | | | | | | | | +-Random::s_random | | | | | | | +-Random::betaVary() | | | | | | | +-BetaDist::operator()(std::mersenne_twister_engine&) | | | | | | +-Distribution::find(std::string const&) | | | | | | | +-Distribution::s_name | | | | | | +-Random::prepareBeta(std::istream&) | | | | | | | +-BetaDist::BetaDist(std::istream&) | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Err::s_lineInfo | | | | | | +-Distribution::prepareVary(std::istream&) | | | | | | +-Globals::s_vary | | | | | +-Err::specification() | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-VSD::VSD(VaryType) | | | | | | +-VSD::s_valueCheck | | | | | | +-Distribution::Distribution(VaryType) | | | | | | +-Globals::s_vary | | | | | | +-Distribution::accept(double) const | | | | | | +-Distribution::s_varyParam | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Parser::any(std::vector const&) | | | | | +-Err::msg(Err::Plain) | | | | | | +-Err::s_plain | | | | | +-Parser::lines(std::vector const&) | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | +-Parser::s_map | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_handle | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | +-Parser::sectionList(std::vector const&) | | | | +-Survival::cptTNM(double) | | | | +-Survival::cptVSDrow(double) | | | | | +-Random::instance() | | | | | | +-Random::s_random | | | | | +-g_log | | | | | +-Random::uniformVSD() | | | | | | +-g_log | | | | | | +-Log::operator()(int) | | | | | | +-nl(Log&) | | | | | +-ProbGroup::probIndexOf(std::vector const&, double, double) | | | | | +-Group::contains(double) const | | | | | +-ProbGroup::indexOf(double) const | | | | +-Survival::loadBC() | | | | | +-Parser::one(std::vector const&) | | | | | | +-Parser::any(std::vector const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | | +-Err::s_plain | | | | | | | +-Parser::lines(std::vector const&) | | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | | +-Parser::s_map | | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_handle | | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | | +-Parser::sectionList(std::vector const&) | | | | | | +-Err::multiplySpecified(__gnu_cxx::__normal_iterator >, __gnu_cxx::__normal_iterator >, std::string const&) | | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Parser::Lines::get() | | | | | | +-Err::reset(LineInfo const&) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_handle | | | | | +-Err::msg(Err::Context) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_context | | | | | | +-Err::s_src | | | | | | +-Err::s_handle | | | | | +-Globals::uint16_max | | | | +-Survival::loadS3() | | | | | +-Parser::Lines::get() | | | | | | +-Err::reset(LineInfo const&) | | | | | | +-Err::s_lineInfo | | | | | | +-Err::s_handle | | | | | +-Err::specification() | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | +-Parser::any(std::vector const&) | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::lines(std::vector const&) | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | +-Parser::s_map | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_handle | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-ProbGroup::ProbGroup(Series) | | | | | | +-Globals::s_simType | | | | | +-ProbGroup::extract(std::istream&) | | | | | | +-Group::extract(std::istream&) | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Err::s_lineInfo | | | | | | +-Globals::uint16_max | | | | | +-Group::connects(Group const&) const | | | | | +-Err::msg(Err::Context) | | | | | +-Err::s_lineInfo | | | | | +-Err::s_context | | | | | +-Err::s_src | | | | | +-Err::s_handle | | | | +-Survival::loadS4() | | | | | +-Parser::VSDparameters(VaryType, std::vector const&, std::initializer_list const&) | | | | | | +-Parser::Lines::get() | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_handle | | | | | | +-VSD::extract(std::istream&) | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::extract(std::istream&) | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Random::instance() | | | | | | | | +-Random::s_random | | | | | | | +-Err::s_lineInfo | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::varyBeta(double) const | | | | | | | | +-Random::instance() | | | | | | | | | +-Random::s_random | | | | | | | | +-Random::betaVary() | | | | | | | | +-BetaDist::operator()(std::mersenne_twister_engine&) | | | | | | | +-Distribution::find(std::string const&) | | | | | | | | +-Distribution::s_name | | | | | | | +-Random::prepareBeta(std::istream&) | | | | | | | | +-BetaDist::BetaDist(std::istream&) | | | | | | | | +-Err::msg(Err::Context) | | | | | | | | | +-Err::s_lineInfo | | | | | | | | | +-Err::s_context | | | | | | | | | +-Err::s_src | | | | | | | | | +-Err::s_handle | | | | | | | | +-Err::s_lineInfo | | | | | | | +-Distribution::prepareVary(std::istream&) | | | | | | | +-Globals::s_vary | | | | | | +-Err::specification() | | | | | | | +-Err::msg(Err::Context) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_context | | | | | | | | +-Err::s_src | | | | | | | | +-Err::s_handle | | | | | | | +-Err::s_lineInfo | | | | | | +-VSD::VSD(VaryType) | | | | | | | +-VSD::s_valueCheck | | | | | | | +-Distribution::Distribution(VaryType) | | | | | | | +-Globals::s_vary | | | | | | | +-Distribution::accept(double) const | | | | | | | +-Distribution::s_varyParam | | | | | | +-Err::msg(Err::Context) | | | | | | | +-Err::s_lineInfo | | | | | | | +-Err::s_context | | | | | | | +-Err::s_src | | | | | | | +-Err::s_handle | | | | | | +-Parser::any(std::vector const&) | | | | | | +-Err::msg(Err::Plain) | | | | | | | +-Err::s_plain | | | | | | +-Parser::lines(std::vector const&) | | | | | | | +-Parser::keywordsLines(std::vector const&) | | | | | | | | +-Parser::s_map | | | | | | | +-Parser::Lines::Lines(__gnu_cxx::__normal_iterator > const&, __gnu_cxx::__normal_iterator > const&) | | | | | | | | +-Err::reset(LineInfo const&) | | | | | | | | +-Err::s_lineInfo | | | | | | | | +-Err::s_handle | | | | | | | +-Parser::Lines::Lines(std::vector const&) | | | | | | +-Parser::sectionList(std::vector const&) | | | | | +-Survival::s_lungColumn | | | | +-Survival::varyLung(std::ostream&) | | | | | +-VSD::vary(std::ostream&, unsigned int, char const*, char const*, char, std::vector&) | | | | | | +-VSD::vary(std::ostream&, unsigned int, char const*, char, std::vector&) | | | | | | +-VSD::showVary(std::ostream&) const | | | | | +-VSD::vary(std::ostream&, unsigned int, char const*, char, std::vector&) | | | | | | +-VSD::showVary(std::ostream&) const | | | | | +-Survival::s_noColon | | | | +-Survival::writeLung(std::ostream&) const | | | | | +-Survival::lungParameters(std::ostream&) const | | | | | | +-VSD::fmt(unsigned int, char const*, char, unsigned int, unsigned int, unsigned int, unsigned int) | | | | | | | +-VSD::fmt(unsigned int, unsigned int, unsigned int, unsigned int) | | | | | | | | +-VSD::s_prec | | | | | | | | +-VSD::s_width | | | | | | | | +-Distribution::fmt(unsigned int, unsigned int) | | | | | | | | +-Distribution::s_precision | | | | | | | | +-Distribution::s_width | | | | | | | +-VSD::s_ch | | | | | | | +-VSD::s_type | | | | | | | +-VSD::s_indent | | | | | | +-VSD::insert(std::ostream&, std::vector const&) | | | | | | | +-VSD::insert(std::ostream&) const | | | | | | | | +-Globals::setWidthPrec(std::ostream&, unsigned int, unsigned int) | | | | | | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | | | | | +-Distribution::insert(std::ostream&) const | | | | | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | | | | | +-Random::instance() | | | | | | | | | +-Random::s_random | | | | | | | | +-Globals::setWidthPrec(std::ostream&, unsigned int, unsigned int) | | | | | | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | | | | | +-Distribution::s_name | | | | | | | | +-Distribution::s_precision | | | | | | | | +-Distribution::s_width | | | | | | | +-VSD::s_ch | | | | | | | +-VSD::s_type | | | | | | | +-VSD::s_indent | | | | | | +-Survival::s_lungColumn | | | | | +-Survival::s3parameters(std::ostream&) const | | | | | +-ProbGroup::insert(std::ostream&) const | | | | | +-Globals::setWidthPrec(std::ostream&, unsigned int, unsigned int) | | | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | | +-operator<<(std::ostream&, Group const&) | | | | | | +-Globals::isZero(double) | | | | | | +-Globals::uint16_max | | | | | +-ProbGroup::s_labels | | | | +-Survival::varyBreast(std::ostream&) | | | | | +-VSD::vary(std::ostream&, unsigned int, char const*, char const*, char, std::vector&) | | | | | +-VSD::vary(std::ostream&, unsigned int, char const*, char, std::vector&) | | | | | +-VSD::showVary(std::ostream&) const | | | | +-Survival::writeBreast(std::ostream&) const | | | | +-VSD::fmt(unsigned int, char const*, char, unsigned int, unsigned int, unsigned int, unsigned int) | | | | | +-VSD::fmt(unsigned int, unsigned int, unsigned int, unsigned int) | | | | | | +-VSD::s_prec | | | | | | +-VSD::s_width | | | | | | +-Distribution::fmt(unsigned int, unsigned int) | | | | | | +-Distribution::s_precision | | | | | | +-Distribution::s_width | | | | | +-VSD::s_ch | | | | | +-VSD::s_type | | | | | +-VSD::s_indent | | | | +-VSD::insert(std::ostream&, std::vector const&) | | | | | +-VSD::insert(std::ostream&) const | | | | | | +-Globals::setWidthPrec(std::ostream&, unsigned int, unsigned int) | | | | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | | | +-Distribution::insert(std::ostream&) const | | | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | | | +-Random::instance() | | | | | | | +-Random::s_random | | | | | | +-Globals::setWidthPrec(std::ostream&, unsigned int, unsigned int) | | | | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | | | +-Distribution::s_name | | | | | | +-Distribution::s_precision | | | | | | +-Distribution::s_width | | | | | +-VSD::s_ch | | | | | +-VSD::s_type | | | | | +-VSD::s_indent | | | | +-Globals::uint16_max | | | +-Tumor::Tumor(TumorInfo&) | | | +-Loop::noTNM(std::ostream&) | | +-Loop::iterate() | | +-Random::instance() | | | +-Random::s_random | | +-Modalities::active() | | | +-Modalities::find(std::string const&) const | | +-Modalities::vary(std::ostream&) | | +-Globals::s_vary | | +-Random::reinit(unsigned long, GeneratorType) | | | +-Globals::s_vary | | | +-Random::reset() | | | +-Globals::s_vary | | | +-BetaDist::reset() | | +-Loop::cases() const | | +-Loop::genCases(unsigned long, unsigned long) | | | +-g_log | | | +-Log::caseIdx(unsigned long) | | | +-Loop::caseInit() | | | | +-Screening::radiationRisk(Modalities const&, std::vector const&, double, double) | | | | | +-Random::instance() | | | | | | +-Random::s_random | | | | | +-Random::uniform() | | | | | | +-g_log | | | | | | +-Log::operator()(int) | | | | | | +-nl(Log&) | | | | | +-Screening::errRisk1405(std::vector&, Modalities const&, Round const&, unsigned short, double, double) | | | | | | +-Screening::beir7Err(unsigned short, Round const&, unsigned short, double, double, Modalities const&) | | | | | | +-Modalities::use(std::vector const&) const | | | | | +-g_log | | | | +-g_log | | | | +-Options::fixedNaturalDeathAge(double&) const | | | | +-Loop::cptIndices() const | | | | | +-Globals::s_simType | | | | | +-Random::instance() | | | | | | +-Random::s_random | | | | | +-Random::uniform() | | | | | | +-g_log | | | | | | +-Log::operator()(int) | | | | | | +-nl(Log&) | | | | | +-Screening::ages() const | | | | | +-ProbGroup::probIndexOf(std::vector const&, double, double) | | | | | +-Group::contains(double) const | | | | | +-ProbGroup::indexOf(double) const | | | | +-TumorInfo::cumTotalRisk(std::vector const&) | | | | | +-Incidence::index() const | | | | | +-Random::instance() | | | | | | +-Random::s_random | | | | | +-Random::uniform() | | | | | +-g_log | | | | | +-Log::operator()(int) | | | | | +-nl(Log&) | | | | +-Loop::naturalDeathAge() | | | | | +-Random::instance() | | | | | | +-Random::s_random | | | | | +-g_log | | | | | +-Random::uniformCase() | | | | | | +-g_log | | | | | | +-Log::operator()(int) | | | | | | +-nl(Log&) | | | | | +-Globals::findAge(std::vector const&, double) | | | | +-Tumor::reset() | | | | | +-Random::instance() | | | | | | +-Random::s_random | | | | | +-g_log | | | | | +-Random::logNormal(double, double) | | | | | | +-g_log | | | | | | +-Log::operator()(int) | | | | | | +-nl(Log&) | | | | | +-Random::uniformCase() | | | | | | +-g_log | | | | | | +-Log::operator()(int) | | | | | | +-nl(Log&) | | | | | +-Tumor::tumorAge() | | | | | +-Options::instance() | | | | | | +-Options::s_options | | | | | | +-Options::Options() | | | | | | +-Options::baseOption() | | | | | | | +-Options::s_base | | | | | | +-Options::configOption() | | | | | | | +-Options::s_config | | | | | | +-Options::cumDeathOption(std::string const&) | | | | | | +-Options::deathAgeOption(std::string const&) | | | | | | | +-Options::deathAge(std::string const&) | | | | | | +-Options::fileOption(std::string*, int) | | | | | | | +-Options::s_fileName | | | | | | +-Options::lastCaseOption(std::string const&) | | | | | | | +-Options::lastCase(std::string const&) | | | | | | +-Options::logOption(std::string const&) | | | | | | | +-g_log | | | | | | | +-Log::set(unsigned int, unsigned int, std::string const&, std::string const&) | | | | | | +-Options::setSimulationType() | | | | | | | +-Globals::s_label | | | | | | | +-Globals::findSimType(std::string const&) | | | | | | | +-Globals::s_label | | | | | | +-Options::tumorAgeOption(std::string const&) | | | | | | +-Options::tumorAge(std::string const&) | | | | | +-Random::instance() | | | | | | +-Random::s_random | | | | | +-g_log | | | | | +-Options::fixedTumorAge(double&) const | | | | | +-Random::logNormal(double, double) | | | | | | +-g_log | | | | | | +-Log::operator()(int) | | | | | | +-nl(Log&) | | | | | +-Random::uniformCase() | | | | | | +-g_log | | | | | | +-Log::operator()(int) | | | | | | +-nl(Log&) | | | | | +-Globals::findAge(std::vector const&, double) | | | | +-Tumor::insert(std::ostream&) const | | | +-Loop::headerData(unsigned long) const | | | | +-Loop::s_status | | | | +-Loop::outStream(std::string const&, unsigned long) | | | | | +-Loop::open(std::string const&) | | | | | | +-Loop::s_availableFiles | | | | | +-Loop::replaceDollar(std::string const&, unsigned long) | | | | +-Loop::labels(std::ostream&) const | | | | +-Icmake::version | | | +-Loop::screening() | | | | +-g_log | | | | +-Screening::roundAge(unsigned long) const | | | | +-Loop::leaving(double) | | | | | +-Loop::intervalCancer() | | | | | | +-Loop::addCost(double) | | | | | | +-Loop::left(Loop::Status, double) | | | | | | +-g_log | | | | | | +-Loop::s_status | | | | | +-Loop::left(Loop::Status, double) | | | | | | +-g_log | | | | | | +-Loop::s_status | | | | | +-Tumor::characteristicsAt(double) | | | | | +-g_log | | | | | +-Tumor::requireTumor(char const*) const | | | | +-Loop::screen(double) | | | | +-Costs::discount(double, unsigned long) const | | | | +-Modalities::use(std::vector const&) const | | | | +-g_log | | | | +-Loop::addCost(double) | | | | +-Loop::maybeFalseNegative(ModBase*, double) | | | | | +-Loop::falseNegative(ModBase*) | | | | | | +-Random::instance() | | | | | | | +-Random::s_random | | | | | | +-Random::uniform() | | | | | | | +-g_log | | | | | | | +-Log::operator()(int) | | | | | | | +-nl(Log&) | | | | | | +-g_log | | | | | | +-Loop::sensitivity(ModBase*) const | | | | | +-Loop::tumorDetected(ModBase*, double) | | | | | +-Loop::addCost(double) | | | | | +-Loop::left(Loop::Status, double) | | | | | | +-g_log | | | | | | +-Loop::s_status | | | | | +-Tumor::characteristicsAt(double) | | | | | | +-g_log | | | | | | +-Tumor::requireTumor(char const*) const | | | | | +-Tumor::setDeathAge(double) | | | | | +-Globals::weakCompare(double, double) | | | | | +-g_log | | | | | +-Tumor::requireTumor(char const*) const | | | | | +-Tumor::functionF(double) const | | | | | +-Tumor::functionQ(double) const | | | | | +-Tumor::functionZ(double) const | | | | +-Loop::maybeFalsePositive(ModBase*, double) | | | | | +-Random::instance() | | | | | | +-Random::s_random | | | | | +-Random::uniform() | | | | | | +-g_log | | | | | | +-Log::operator()(int) | | | | | | +-nl(Log&) | | | | | +-Costs::discount(double, unsigned long) const | | | | | +-g_log | | | | | +-Loop::addCost(double) | | | | +-Loop::use(ModBase*) | | | +-Loop::postScreen() | | | | +-g_log | | | | +-Loop::left(Loop::Status, double) | | | | | +-g_log | | | | | +-Loop::s_status | | | | +-Tumor::characteristicsAt(double) | | | | +-g_log | | | | +-Tumor::requireTumor(char const*) const | | | +-Loop::writeData(FBB::CSVTable&, unsigned long) const | | | +-Globals::isZero(double) | | | +-Loop::showRound() const | | | +-Tumor::writeData(FBB::CSVTable&) const | | | +-Tumor::s_noYes | | +-Loop::outStream(std::string const&, unsigned long) | | | +-Loop::open(std::string const&) | | | | +-Loop::s_availableFiles | | | +-Loop::replaceDollar(std::string const&, unsigned long) | | +-Loop::labels(std::ostream&) const | | | +-Icmake::version | | +-Loop::headerRounds(unsigned long) const | | | +-Modalities::roundFmt(FBB::CSVTable&) const | | | +-Modalities::roundHeaders(FBB::CSVTable&) const | | | +-Loop::outStream(std::string const&, unsigned long) | | | | +-Loop::open(std::string const&) | | | | | +-Loop::s_availableFiles | | | | +-Loop::replaceDollar(std::string const&, unsigned long) | | | +-Loop::labels(std::ostream&) const | | | +-Icmake::version | | +-Loop::headerSensitivity() const | | | +-Loop::outStream(std::string const&, unsigned long) | | | | +-Loop::open(std::string const&) | | | | | +-Loop::s_availableFiles | | | | +-Loop::replaceDollar(std::string const&, unsigned long) | | | +-Loop::labels(std::ostream&) const | | | +-Icmake::version | | +-TumorInfo::vary(std::ostream&) | | | +-Incidence::vary(std::ostream&) | | | | +-Incidence::cptTumorRisk() | | | +-Beir7::vary(std::ostream&) | | | | +-Globals::s_simType | | | | +-Globals::s_label | | | | +-VSD::showVary(std::ostream&) const | | | +-Growth::vary(std::ostream&) | | | +-VSD::showVary(std::ostream&) const | | | +-AgeGroupVSD::vary(std::ostream&, unsigned int, char const*, std::vector&) | | | +-VSD::showVary(std::ostream&) const | | | +-operator<<(std::ostream&, Group const&) | | | | +-Globals::isZero(double) | | | | +-Globals::uint16_max | | | +-AgeGroupVSD::vary() | | +-Loop::writeParameters(unsigned long) const | | | +-Globals::s_simType | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | +-Costs::writeParameters(std::ostream&) const | | | | +-Globals::setWidthPrec(std::ostream&, unsigned int, unsigned int) | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | +-Modalities::writeParameters(std::ostream&) const | | | | +-operator<<(std::ostream&, ModBase const&) | | | +-Screening::writeParameters(std::ostream&) const | | | | +-Round::insert(std::ostream&) const | | | +-Densities::writeParameters(std::ostream&) const | | | | +-Globals::setWidthPrec(std::ostream&, unsigned int, unsigned int) | | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | +-ProbGroup::insert(std::ostream&) const | | | | +-Globals::setWidthPrec(std::ostream&, unsigned int, unsigned int) | | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | +-operator<<(std::ostream&, Group const&) | | | | | +-Globals::isZero(double) | | | | | +-Globals::uint16_max | | | | +-ProbGroup::s_labels | | | +-Loop::outStream(std::string const&, unsigned long) | | | | +-Loop::open(std::string const&) | | | | | +-Loop::s_availableFiles | | | | +-Loop::replaceDollar(std::string const&, unsigned long) | | | +-Loop::labels(std::ostream&) const | | | | +-Icmake::version | | | +-Scenario::writeParameters(std::ostream&, unsigned long) const | | | | +-Globals::s_vary | | | | +-Scenario::s_generatorType | | | | +-Scenario::s_bool | | | +-TumorInfo::writeParameters(std::ostream&) const | | | +-Incidence::writeParameters(std::ostream&) const | | | | +-Globals::s_simType | | | | +-Globals::s_label | | | | +-Params::s_label | | | | +-Params::writeParameters(std::ostream&) | | | | +-Params::s_label | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | +-Globals::isZero(double) | | | +-Beir7::writeParameters(std::ostream&) const | | | | +-Globals::s_simType | | | | +-Globals::s_label | | | | +-VSD::insert(std::ostream&) const | | | | | +-Globals::setWidthPrec(std::ostream&, unsigned int, unsigned int) | | | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | | +-Distribution::insert(std::ostream&) const | | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | | +-Random::instance() | | | | | | +-Random::s_random | | | | | +-Globals::setWidthPrec(std::ostream&, unsigned int, unsigned int) | | | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | | +-Distribution::s_name | | | | | +-Distribution::s_precision | | | | | +-Distribution::s_width | | | | +-VSD::fmt(unsigned int, unsigned int, unsigned int, unsigned int) | | | | | +-VSD::s_prec | | | | | +-VSD::s_width | | | | | +-Distribution::fmt(unsigned int, unsigned int) | | | | | +-Distribution::s_precision | | | | | +-Distribution::s_width | | | | +-Globals::setWidthPrec(std::ostream&, unsigned int, unsigned int) | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | +-Growth::writeParameters(std::ostream&) const | | | +-VSD::insert(std::ostream&) const | | | | +-Globals::setWidthPrec(std::ostream&, unsigned int, unsigned int) | | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | +-Distribution::insert(std::ostream&) const | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | +-Random::instance() | | | | | +-Random::s_random | | | | +-Globals::setWidthPrec(std::ostream&, unsigned int, unsigned int) | | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | +-Distribution::s_name | | | | +-Distribution::s_precision | | | | +-Distribution::s_width | | | +-VSD::fmt(unsigned int, unsigned int, unsigned int, unsigned int) | | | | +-VSD::s_prec | | | | +-VSD::s_width | | | | +-Distribution::fmt(unsigned int, unsigned int) | | | | +-Distribution::s_precision | | | | +-Distribution::s_width | | | +-AgeGroupVSD::fmt(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) | | | | +-VSD::fmt(unsigned int, unsigned int, unsigned int, unsigned int) | | | | | +-VSD::s_prec | | | | | +-VSD::s_width | | | | | +-Distribution::fmt(unsigned int, unsigned int) | | | | | +-Distribution::s_precision | | | | | +-Distribution::s_width | | | | +-AgeGroupVSD::s_indent | | | +-AgeGroupVSD::insert(std::ostream&, std::vector const&) | | | +-AgeGroupVSD::s_indent | | | +-AgeGroupVSD::insert(std::ostream&) const | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | +-VSD::insert(std::ostream&) const | | | | +-Globals::setWidthPrec(std::ostream&, unsigned int, unsigned int) | | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | +-Distribution::insert(std::ostream&) const | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | +-Random::instance() | | | | | +-Random::s_random | | | | +-Globals::setWidthPrec(std::ostream&, unsigned int, unsigned int) | | | | | +-Globals::setPrecision(std::ostream&, unsigned short) | | | | +-Distribution::s_name | | | | +-Distribution::s_precision | | | | +-Distribution::s_width | | | +-operator<<(std::ostream&, Group const&) | | | +-Globals::isZero(double) | | | +-Globals::uint16_max | | +-Loop::resetCounters() | | | +-Modalities::resetCounters(unsigned long) | | | +-ModBase::resetCounters(unsigned long) | | +-Loop::writeRounds(FBB::CSVTable&) const | | | +-Modalities::writeRounds(FBB::CSVTable&, unsigned long) const | | +-Loop::writeSensitivity(FBB::CSVTable&, unsigned long) const | +-Parser::~Parser() | +-Parser::s_map | +-Parser::rmLineInfoVectors(std::unordered_map&) | +-Parser::endPoint(std::pair const&) +-handleException() simrisc-16.02.00/simulator/0000775000175000017500000000000014665030471014424 5ustar frankfranksimrisc-16.02.00/simulator/endofspecs.cc0000664000175000017500000000014014665030471017057 0ustar frankfrank//#define XERR #include "simulator.ih" string Simulator::endOfSpecs() { return string{}; } simrisc-16.02.00/simulator/run.cc0000664000175000017500000000077714665030471015552 0ustar frankfrank#define XERR #include "simulator.ih" //code void Simulator::run() { while (d_next) { uint16_t lineNr = d_lineNr; // read the next analysis specs string spec = (this->*d_nextSpecs)(); // cmdLineAnalysis() or // fileAnalysis() emsg.setCount(0); Analysis analysis{ istringstream{ spec }, lineNr }; analysis.run(); // run the simulation } } //= simrisc-16.02.00/simulator/fileanalysis.cc0000664000175000017500000000157014665030471017421 0ustar frankfrank#define XERR #include "simulator.ih" string Simulator::fileAnalysis() { d_next = false; string specs; string line; while (getline(d_ifstream, line)) { ++d_lineNr; // process all lines until the next // analysis: specification is found if ( size_t pos = line.find_first_not_of(" \t\r"); pos != string::npos // found non-blanks and // and 'analysis:' as 1st word line.find("Analysis:", pos) == pos ) { d_next = true; break; // the next analysis is ready } specs += line + '\n'; // append the line to the } // specs return specs; } simrisc-16.02.00/simulator/setanalysissource.cc0000664000175000017500000000211114665030471020506 0ustar frankfrank#define XERR #include "simulator.ih" void Simulator::setAnalysisSource() { Arg const &arg = Arg::instance(); if (arg.option('o')) // -o -> specs from { d_next = true; d_nextSpecs = &Simulator::cmdLineAnalysis; // cmd line args } else { // otherwise find the (next) Analysis: // line in the analysis file d_ifstream = Exception::factory(arg[0]); string line; while (getline(d_ifstream, line)) { ++d_lineNr; size_t pos = line.find_first_not_of(" \t\r"); if (pos == string::npos) continue; if (line.find("Analysis:", pos) == pos) // analysis up to EOF of { d_next = true; break; // the next analysis } } if (d_next == 0) wmsg << "No Analysis: specification found" << endl; d_nextSpecs = &Simulator::fileAnalysis; } } simrisc-16.02.00/simulator/simulator.ih0000664000175000017500000000037314665030471016770 0ustar frankfrank#include "simulator.h" #include "../xerr/xerr.ih" #include #include #include #include #include "../analysis/analysis.h" #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/simulator/simulator1.cc0000664000175000017500000000022414665030471017031 0ustar frankfrank#define XERR #include "simulator.ih" Simulator::Simulator() { imsg.off(); setAnalysisSource(); // maybe one analysis (-o) or more } simrisc-16.02.00/simulator/cmdlineanalysis.cc0000664000175000017500000000065414665030471020117 0ustar frankfrank#define XERR #include "simulator.ih" string Simulator::cmdLineAnalysis() { string specs; Arg const &arg = Arg::instance(); for (size_t idx = 0, end = arg.nArgs(); idx != end; ++idx) { specs += arg[idx]; if (specs.back() == ',') // commas end specifications specs.back() = '\n'; else specs += ' '; } d_next = false; return specs; } simrisc-16.02.00/simulator/icmconf0000664000175000017500000000010014665030471015754 0ustar frankfrank#define LIBRARY "simulator" #include "../icmconf.lib" simrisc-16.02.00/simulator/simulator.h0000664000175000017500000000211314665030471016611 0ustar frankfrank#ifndef INCLUDED_SIMULATOR_ #define INCLUDED_SIMULATOR_ #include #include // analyses specfy different parameters, like screeningRound, iterations, // nWomen class Simulator { //data bool d_next = false; // true if 'run()' should run // an analysis uint16_t d_lineNr = 1; // updated by 'fileAnalysis' std::ifstream d_ifstream; // multiple analysis specs std::string (Simulator::*d_nextSpecs)(); // ptr to function handling // the (next) analysis spec. //= public: Simulator(); void run(); private: bool nextAnalysis(); void setAnalysisSource(); // extra specifications either on the // cmd line or the next 'analysis:' // specification from file std::string cmdLineAnalysis(); std::string fileAnalysis(); std::string endOfSpecs(); }; #endif simrisc-16.02.00/simulator/frame0000664000175000017500000000007014665030471015436 0ustar frankfrank//#define XERR #include "simulator.ih" Simulator:: { } simrisc-16.02.00/spch0000664000175000017500000000217314632623016013265 0ustar frankfrank#define SPCH_ #include "main.ih" #include "log/log.ih" #include "betadist/betadist.ih" #include "agegroupvsd/agegroupvsd.ih" #include "probgroup/probgroup.ih" #include "group/group.ih" #include "incidence/incidence.ih" #include "simulator/simulator.ih" #include "modbase/modbase.ih" #include "mammo/mammo.ih" #include "survival/survival.ih" #include "tumorinfo/tumorinfo.ih" #include "tumor/tumor.ih" #include "modalities/modalities.ih" #include "random/random.ih" #include "scenario/scenario.ih" #include "beir7/beir7.ih" #include "costs/costs.ih" #include "loop/loop.ih" #include "err/err.ih" #include "analysis/analysis.ih" #include "tableparams/tableparams.ih" #include "params/params.ih" #include "round/round.ih" #include "densities/densities.ih" #include "vsdparams/vsdparams.ih" #include "globals/globals.ih" #include "configlines/configlines.ih" #include "parser/parser.ih" #include "vsd/vsd.ih" #include "screening/screening.ih" #include "distribution/distribution.ih" #include "growth/growth.ih" #include "options/options.ih" #include "mri/mri.ih" #include "ct/ct.ih" #include "tomo/tomo.ih" using namespace std; using namespace FBB; simrisc-16.02.00/stdconfig/0000755000175000017500000000000014665030471014363 5ustar frankfranksimrisc-16.02.00/stdconfig/simrisc0000777000175000017500000000000014665030471021615 2../dot.config/simriscustar frankfranksimrisc-16.02.00/stdconfig/lung0000664000175000017500000001575214665030471015267 0ustar frankfrank# supported distribution names are: Normal, LogNormal, Uniform, Beta # Modalities are: Mammo, Tomo, MRI, CT Scenario: # use true for variable spreading # spread: true spread: false iterations: 1 # random generator behavior: # random, fixed, increasing generator: fixed # initial seed unless using generator: random seed: 1 # n cases to simulate cases: 1000 # Used for all modalities except for CT: # ref.age proportion biop specs (first diameter must be 0) # Lungcancer costs: configured at Modalities: CT: costs: Costs: biop: 176 diameters: 0: 6438 20: 7128 50: 7701 Discount: # breast lung proportion: 0 .04 age: 50 BreastDensities: # bi-rad: a b c d ageGroup: 0 - 40: .05 .30 .48 .17 ageGroup: 40 - 50: .06 .34 .47 .13 ageGroup: 50 - 60: .08 .50 .37 .05 ageGroup: 60 - 70: .15 .53 .29 .03 ageGroup: 70 - * : .18 .54 .26 .02 Modalities: CT: # screening diagnosis M0 M1 (M0, M1: Table S3) costs: 176 1908 37909 56556 dose: 1 # diam. value (must be integral 0..100 or -1) sensitivity: 0 - 3: 0 sensitivity: 3 - 5: -1 # formula: (.5 * diam - 1.5) * 100 sensitivity: 5 - *: 100 # mean stddev dist specificity: 99.2 .076 Normal Mammo: costs: 64 # bi-rad: a b c d dose: 3 3 3 3 m: .136 .136 .136 .136 # ageGroup specificity: 0 - 40: .961 40 - *: .965 # 1 2 3 4 beta: -4.38 .49 -1.34 -7.18 systematicError: 0.1 Tomo: costs: 64 # bi-rad: a b c d dose: 3 3 3 3 sensitivity: .87 .84 .73 .65 # ageGroup specificity: 0 - 40: .961 40 - *: .965 MRI: costs: 280 sensitivity: .94 specificity: .95 Screening: # round: age space separated modalities. # subsequent ages must exceed the last age by at least 1 # with lung cancer simulations only CT can be specified, # with breast cancer simulations CT cannot be specified, round: 50 CT round: 52 CT round: 54 CT round: 56 CT round: 58 CT round: 60 CT round: 62 CT round: 64 CT round: 66 CT round: 68 CT round: 70 CT round: 72 CT round: 74 CT # proportion: attendanceRate: .8 Tumor: Beir7: # eta beta spread dist. breast: -2.0 0.51 0.32 Normal # Beta-distribution parameters: # LC: eta beta dist constant factor aParam bParam male: -1.4 .32 Beta .234091 1.72727 2.664237 5.184883 female: -1.4 1.40 Beta .744828 .818966 3.366115 4.813548 Growth: # breast lung start: 5 3 #selfDetect: # stdev mean spread dist breast: .70 2.92 .084 Normal lung: .014 3.037 .061 Normal DoublingTime: # stdev mean spread dist. ageGroup: 1 - 50: .61 4.38 .43 Normal ageGroup: 50 - 70: .26 5.06 .17 Normal ageGroup: 70 - * : .45 5.24 .23 Normal # all ages stdev mean spread dist. lung: .21 4.59 .74 Normal Incidence: Male: # value spread distr. lifetimeRisk: .22 .005 Normal meanAge: 72.48 1.08 Normal stdDev: 9.28 1.62 Normal Female: # value spread distr. lifetimeRisk: .20 .004 Normal meanAge: 69.62 1.49 Normal stdDev: 9.73 1.83 Normal Breast: probability: 1 # value spread distr. lifetimeRisk: .226 .0053 Normal meanAge: 72.9 .552 Normal stdDev: 21.1 BRCA1: probability: 0 # value spread distr. lifetimeRisk: .96 meanAge: 53.9 stdDev: 16.51 BRCA2: probability: 0 # value spread distr. lifetimeRisk: .96 meanAge: 53.9 stdDev: 16.51 Survival: # value spread dist: type: a .00004475 .000004392 Normal type: b 1.85867 .0420 Normal type: c -.271 .0101 Normal type: d 2.0167 .0366 Normal # table S4: 4 columns per a..d parameter # lungX: X is table S4's column index lung0: a .00143 .00095 Normal lung0: b 1.84559 .33748 Normal lung0: c -.22794 .07823 Normal lung0: d 1.06799 .16226 Normal lung1: a .01530 .00381 Normal lung1: b 1.69434 .10979 Normal lung1: c -.19358 .02105 Normal lung1: d .66690 .03869 Normal lung2: a .78600 .29815 Normal lung2: b .69791 .05425 Normal lung2: c .0 .0 Normal lung2: d .0 .0 Normal lung3: a 1.25148 .32305 Normal lung3: b .77852 .34149 Normal lung3: c .0 .0 Normal lung3: d .0 .0 Normal S3: # T-row range N0,M0 N1-3,M0 N1-3,M1a-b N0-3M1c prob: 0 - 11: .756 .157 .048 .039 # T1a,b prob: 11 - 21: .703 .197 .055 .045 # T1b prob: 21 - 31: .559 .267 .095 .078 # T1c prob: 31 - 51: .345 .351 .167 .137 # T2a,b prob: 51 - 71: .196 .408 .218 .178 # T3 prob: 71 - * : .187 .347 .256 .210 # T4 simrisc-16.02.00/survival/0000775000175000017500000000000014665030471014260 5ustar frankfranksimrisc-16.02.00/survival/survival.ih0000664000175000017500000000051114665030471016452 0ustar frankfrank#include "survival.h" #include "../xerr/xerr.ih" #include #include #include "../globals/globals.h" #include "../random/random.h" #include "../options/options.h" #include "../parser/parser.h" #include "../log/log.h" extern size_t g_caseIdx; extern size_t g_err; #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/survival/data.cc0000664000175000017500000000035014665030471015476 0ustar frankfrank//#define XERR #include "survival.ih" char const *Survival::s_lungColumn[] = { "lung0:", "lung1:", "lung2:", "lung3:", }; char const *Survival::s_noColon[] = { "lung0", "lung1", "lung2", "lung3" }; simrisc-16.02.00/survival/s3parameters.cc0000664000175000017500000000033614665030471017202 0ustar frankfrank//#define XERR #include "survival.ih" void Survival::s3parameters(ostream &out) const { out << "S3:\n"; for (unsigned idx = 0, end = d_s3.size(); idx != end; ++idx) out << " " << d_s3[idx] << '\n'; } simrisc-16.02.00/survival/varylung.cc0000664000175000017500000000043714665030471016442 0ustar frankfrank#define XERR #include "survival.ih" void Survival::varyLung(ostream &out) { VSD::vary(out, 2, "Survival:", s_noColon[0], 'a', d_vsdMatrix[0]); for (size_t idx = 1, end = d_vsdMatrix.size(); idx != end; ++idx) VSD::vary(out, 4, s_noColon[idx], 'a', d_vsdMatrix[idx]); } simrisc-16.02.00/survival/varybreast.cc0000664000175000017500000000023114665030471016745 0ustar frankfrank//#define XERR #include "survival.ih" void Survival::varyBreast(ostream &out) { VSD::vary(out, 2, "Survival:", "type", 'a', d_vsdMatrix.front()); } simrisc-16.02.00/survival/vsdrow.cc0000664000175000017500000000061214665030471016112 0ustar frankfrank//#define XERR //#include "survival.ih" // //void Survival::vsdRow() const //{ ////xerr(d_vsdRow << ' ' << d_vsdMatrix[d_vsdRow].size() << ' ' <<\x ////d_vsdMatrix[d_vsdRow][0].value() << ' ' <<\x ////d_vsdMatrix[d_vsdRow][1].value() << ' ' <<\x ////d_vsdMatrix[d_vsdRow][2].value() << ' ' <<\x ////d_vsdMatrix[d_vsdRow][3].value() << ' ' <<\x ////d_vsdMatrix[d_vsdRow][4].value() ); // //} // simrisc-16.02.00/survival/survival1.cc0000664000175000017500000000167214665030471016531 0ustar frankfrank#define XERR #include "survival.ih" Survival::Survival() { if (not Globals::isBreast()) // LC simulation { d_vary = &Survival::varyLung; d_write = &Survival::writeLung; d_cptVSDrow = &Survival::cptVSDrow; loadS3(); loadS4(); // loads "lung[0-4]" } else // BC simulation: only { // type: must be specified d_vary = &Survival::varyBreast; d_write = &Survival::writeBreast; d_cptVSDrow = &Survival::cptTNM; d_vsdMatrix.push_back( // load the BC 'type' params Parser::VSDparameters( VARY_MEAN, { "type:" }, { 'a', 'b', 'c', 'd', 'e' } ) ); loadBC(); } } simrisc-16.02.00/survival/cptvsdrow.cc0000664000175000017500000000220614665030471016622 0ustar frankfrank#define XERR #include "survival.ih" // determine the row of d_vsdMatrix to use by locating the row in s3 // containing 'diameter' in its ProbGrooup.end() value. Then compute // the lowest column index in that row exceeding a random proportion // value. That index becomes d_vsdRow. RowCol Survival::cptVSDrow(double diameter) { // if diameter > 100 the last line in S3 must be used. probIndexOf uses // 101 as end-value because that's an end-age and probGroups are normally // based on ages. // Therefore, if diameter > 100 100 is passed to probIndexOf // resulting in the last line of S3 being used. // S3's row (first) and S3's column (second) RowCol rowCol = ProbGroup::probIndexOf( d_s3, diameter > 100 ? 100 : diameter, Random::instance().uniformVSD() ); d_vsdRow = rowCol.second; g_log << " Survival::cptVSDRow: S3 row = " << d_vsdRow << " for diameter " << diameter << '\n'; return rowCol; } simrisc-16.02.00/survival/survival.f0000664000175000017500000000073014665030471016302 0ustar frankfrankinline RowCol Survival::setVSD(double diameter) { return (this->*d_cptVSDrow)(diameter); } inline bool Survival::metastatis() const { return d_vsdRow >= 2; } inline VSD const &Survival::operator[](size_t idx) const { return d_vsdMatrix[d_vsdRow][idx]; } inline void Survival::vary(std::ostream &out) { (this->*d_vary)(out); } inline void Survival::writeParameters(std::ostream &out) const { (this->*d_write)(out); // writeBreast / writeLung } simrisc-16.02.00/survival/loads4.cc0000664000175000017500000000115214665030471015754 0ustar frankfrank#define XERR #include "survival.ih" void Survival::loadS4() { for (char const *column: s_lungColumn) { d_vsdMatrix.push_back( // read 4 VSD values in a Parser::VSDparameters( // VSDvector and push that vector VARY_MEAN, // to the vsdMatrix { column }, { 'a', 'b', 'c', 'd', 'e' } ) ); // xerr("d_vsdMatrix " << column); // for (auto value: d_vsdMatrix.back()) // cerr << value.value() << ' '; // cerr << '\n'; } } simrisc-16.02.00/survival/writelung.cc0000664000175000017500000000020614665030471016605 0ustar frankfrank#define XERR #include "survival.ih" void Survival::writeLung(ostream &out) const { lungParameters(out); s3parameters(out); } simrisc-16.02.00/survival/icmconf0000664000175000017500000000007714665030471015625 0ustar frankfrank#define LIBRARY "survival" #include "../icmconf.lib" simrisc-16.02.00/survival/lungparameters.cc0000664000175000017500000000045414665030471017623 0ustar frankfrank#define XERR #include "survival.ih" void Survival::lungParameters(ostream &out) const { out << "Survival:\n"; for (unsigned idx = 0, end = d_vsdMatrix.size(); idx != end; ++idx) { VSD::fmt(4, s_lungColumn[idx], 'a', 2, 8, 0, 9); out << d_vsdMatrix[idx] << '\n'; } } simrisc-16.02.00/survival/cpttnm.cc0000664000175000017500000000041514665030471016074 0ustar frankfrank//#define XERR #include "survival.ih" RowCol Survival::cptTNM(double diameter) { auto iter = find_if(d_bc.begin(), d_bc.end(), [&](uint16_t max) { return diameter <= max; } ); return RowCol{ iter - d_bc.begin(), 0 }; } simrisc-16.02.00/survival/writebreast.cc0000664000175000017500000000065514665030471017130 0ustar frankfrank//#define XERR #include "survival.ih" void Survival::writeBreast(ostream &out) const { VSD::fmt(4, "type:", 'a', 2, 8, 0, 9); out << "Survival:\n" << d_vsdMatrix.front() << '\n' << " bc: "; for (size_t idx = 0, end = d_bc.size() - 1; idx != end; ++idx) out << d_bc[idx] << ", "; if (d_bc.back() == Globals::uint16_max) out << "*\n"; else out << d_bc.back() << '\n'; } simrisc-16.02.00/survival/loads3.cc0000664000175000017500000000153314665030471015756 0ustar frankfrank#define XERR #include "survival.ih" void Survival::loadS3() { auto lines = Parser::any({ "prob:" }); bool push = true; while (true) { LineInfo const *line = lines.get(); // load the lines of S3 if (line == 0) // no (more) lines break; ProbGroup group{ SINGLE }; if (not Parser::extract(*line, group)) push = false; if (not push) continue; // continue for syntax-check // purposes if (group.group().nextRange(d_s3)) // add the next range { // (0 - 11 thru 71 - *) d_s3.push_back(move(group)); // add the info to d_s3 continue; } push = false; } } simrisc-16.02.00/survival/survival.h0000664000175000017500000001162514665030471016311 0ustar frankfrank#ifndef INCLUDED_SURVIVAL_ #define INCLUDED_SURVIVAL_ // Tumor: // Survival: // # value spread dist: // type: a .00004475 .000004392 Normal // b 1.85867 .0420 Normal // c - .271 .0101 Normal // d 2.0167 .0366 Normal // e 1.00 .01 Normal // // # 4 columns per a..d parameter, according to table S4: // # lungX: X is the table S4 column index // lung0: a .00143 .00095 Normal // b 1.84559 .33748 Normal // c -.22794 .07823 Normal // d 1.06799 .16226 Normal // e 1.00 .01 Normal // // lung1: a .01530 .00381 Normal // b 1.69434 .10979 Normal // c -.19358 .02105 Normal // d .66690 .03869 Normal // e 1.00 .01 Normal // // lung2: a .78600 .29815 Normal // b .69791 .05425 Normal // c .0 .0 Normal // d .0 .0 Normal // e 1.00 .01 Normal // // lung3: a 1.25148 .32305 Normal // b .77852 .34149 Normal // c .0 .0 Normal // d .0 .0 Normal // e 1.00 .01 Normal // // S3: // # T-row range N0,M0 N1-3,M0 N1-3,M1a-b N0-3M1c // prob: 0 - 11: .756 .157 .048 .039 # T1a,b // prob: 11 - 21: .703 .197 .055 .045 # T1b // prob: 21 - 31: .559 .267 .095 .078 # T1c // prob: 31 - 51: .345 .351 .167 .137 # T2a,b // prob: 51 - 71: .196 .408 .218 .178 # T3 // prob: 71 - * : .187 .347 .256 .210 # T4 // // # BC TNM categories up to (<=) diameters (mm): // BC: 20 50 * // # TNM: 1 2 3 #include "../typedefs/typedefs.h" #include "../vsd/vsd.h" #include "../probgroup/probgroup.h" class Survival { // d_vsdMatrix is a [][4] matrix. // with BC simulations only row 0 is filled and used, and d_vsdRow is // set to 0, its default value. The member pointer 'd_cptVSDrow' // performs no action (cals cptTNM()). // // with LC simulations 4 rows are filled with, resp. the // lung0 thru lung3 VSD values, and the member pointer d_cptVSDrow // computes d_vsdRow using S3, S4 and the tumor diameter (calls // cptVSDrow()). // 1st idx: BC: always 0 // LC: 0..3 for lung0..lung4 // 2nd idx: elements contain the BC/LC VSDmatrix d_vsdMatrix; // a..d VSD params (0: a, thru 3: d) ProbGroup::Vector d_s3; // contains the lines of S3 Uint16Vect d_bc; // contains the BC: specifications size_t d_vsdRow = 0; void (Survival::*d_vary)(std::ostream &out); void (Survival::*d_write)(std::ostream &out) const; // LC: cptVSDrow, BC: cptTNM RowCol (Survival::*d_cptVSDrow)(double diameter); static char const *s_lungColumn[4]; // cf. data.cc static char const *s_noColon[4]; // cf. data.cc public: Survival(); bool metastatis() const; // .f VSD const &operator[](size_t idx) const; // .f // determine random vsd-value(s) RowCol setVSD(double diameter); // with LC: cpt the row of // .f // d_vsdMatrix to use (cptVSDRow) // with BC: cptTNM. void vary(std::ostream &out); // and write to 'out' // .f void writeParameters(std::ostream &out) const; // .f // OBS: void vsdRow() const; (was called in tumor/functionf.cc) private: RowCol cptVSDrow(double diameter); RowCol cptTNM(double diameter); void loadBC(); void loadS3(); void loadS4(); void lungParameters(std::ostream &out) const; void s3parameters(std::ostream &out) const; void varyBreast(std::ostream &out); void varyLung(std::ostream &out); void writeBreast(std::ostream &out) const; void writeLung(std::ostream &out) const; }; #include "survival.f" // ProbGroup::Vector const &s3() const; // .f #endif simrisc-16.02.00/survival/loadbc.cc0000664000175000017500000000144014665030471016012 0ustar frankfrank#define XERR #include "survival.ih" // load the BC TNM category boundaries void Survival::loadBC() { auto lines = Parser::one({ "bc:" }); LineInfo const *lineInfo = lines.get(); istringstream in{ lineInfo->tail }; char sep; uint16_t value; while (in >> sep) { if (sep == '*') value = Globals::uint16_max; else { in.unget(); in >> value; } d_bc.push_back(value); } bool err = false; for (size_t idx = 1, end = d_bc.size(); idx < end; ++idx) { if (d_bc[idx - 1] >= d_bc[idx]) { err = true; break; } } if (err or d_bc.back() != Globals::uint16_max) Err::msg(Err::NOT_CONSECUTIVE) << lineInfo->txt << endl; } simrisc-16.02.00/survival/frame0000664000175000017500000000006614665030471015277 0ustar frankfrank//#define XERR #include "survival.ih" Survival:: { } simrisc-16.02.00/tableparams/0000775000175000017500000000000014665030471014700 5ustar frankfranksimrisc-16.02.00/tableparams/appendpair.cc0000664000175000017500000000075414665030471017340 0ustar frankfrank#define XERR #include "tableparams.ih" bool TableParams::appendPair(string const &line) { size_t age; double prob; istringstream in{ line }; while (in >> age) { if (not (in >> prob)) // 2nd pair value not available { d_error = true; Err::specification(); return false; } d_riskTable.push_back(DoublePair{ age, prob }); } return true; // all pairs were read from line } simrisc-16.02.00/tableparams/linear.cc0000664000175000017500000000136514665030471016466 0ustar frankfrank#define XERR #include "tableparams.ih" //linear interpolation: for a = d_riskTable[idx].first // p = d_riskTable[idx].second // b = d_riskTable[idx + 1].first // q = d_riskTable[idx + 1].second // x = age, a is searched for a <= x // compute f(x), where a <= x <= b as // p + (q - p) / b - a) * (x - a) // = p + (q - p) * (x - a) / b - a) // static double TableParams::linear(double age, DoublePair const &from, DoublePair const &to) { return from.second + (to.second - from.second) * (age - from.first) / (to.first - from.first); } simrisc-16.02.00/tableparams/vwriteparameters.cc0000664000175000017500000000116714665030471020620 0ustar frankfrank#define XERR #include "tableparams.ih" // override void TableParams::v_writeParameters(ostream &out) const { Globals::setPrecision(out, 3) << setw(8) << ' ' << "riskTable:\n" << setw(9) << ' '; for (size_t idx = 0, end = d_riskTable.size(); idx != end; ) { out << setw(3) << static_cast(d_riskTable[idx].first + .5) << ": " << d_riskTable[idx].second; if (++idx == end) { out << "\n\n"; return; } if (idx % 6 != 0) out << ", "; else out << '\n' << setw(9) << ' '; } } simrisc-16.02.00/tableparams/tableparams.ih0000664000175000017500000000034514665030471017517 0ustar frankfrank#include "tableparams.h" #include "../xerr/xerr.ih" #include #include "../globals/globals.h" #include "../err/err.h" #include "../parser/parser.h" #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/tableparams/checktable.cc0000664000175000017500000000226014665030471017274 0ustar frankfrank#define XERR #include "tableparams.ih" void TableParams::checkTable() try { if (d_error) return; if (d_riskTable.size() < 2) // at least 2 pairs must be specified throw "at least 2 pairs must be specified"; if (d_riskTable.front().first != 0) // ensure a first {0, ..} is available d_riskTable.insert(d_riskTable.begin(), DoublePair{0, 0}); checkIncreasing(); // if no MAX_AGE at the end: if (d_riskTable.back().first < MAX_AGE) // add a final end-age value { d_riskTable.push_back( DoublePair{ MAX_AGE, linear(MAX_AGE, *(d_riskTable.rbegin() + 1), d_riskTable.back() ) } ); // ensure the last value is <= 1 if (DoublePair &last = d_riskTable.back(); last.second > 1.0) last.second = 1; } } catch (char const *txt) { d_error = true; Err::msg(Err::TABLEPARAMS) << txt << '\n'; return; } simrisc-16.02.00/tableparams/tableparams1.cc0000664000175000017500000000042614665030471017565 0ustar frankfrank#define XERR #include "tableparams.ih" TableParams::TableParams(StringVect &base, size_t idx, bool setProb) : Params(base, idx, setProb), d_error(false) { if (prob() < 0) // invalid probability setting return; fillRiskTable(base); } simrisc-16.02.00/tableparams/icmconf0000664000175000017500000000016314665030471016241 0ustar frankfrank#define LIBRARY "tableparams" //#define SPCH "-k xerr/xerr.ih" #include "../icmconf.lib" simrisc-16.02.00/tableparams/risktable.cc0000664000175000017500000000101114665030471017160 0ustar frankfrank////#define XERR //#include "incidence.ih" // //void Incidence::riskTable() //{ // for (auto const &str: base) // cerr << str << ' '; // // Parser::Lines lines = Parser::any(base); // size_t age; // double value; // cerr << "got " << lines.size() << " lines\n"; // // LineInfo const *ptr; // while ((ptr = lines.get())) // { // istringstream tail{ ptr->tail }; // while (tail >> age >> value) // cerr << "age: " << age << ", value: " << value << '\n'; // } //} // simrisc-16.02.00/tableparams/checkincreasing.cc0000664000175000017500000000071514665030471020332 0ustar frankfrank#define XERR #include "tableparams.ih" void TableParams::checkIncreasing() { // check increasing ages DoublePair saw{ 0, 0 }; // and increasing probabilities for (DoublePair &pair: Ranger(d_riskTable.begin() + 1, d_riskTable.end())) { if (pair.first <= saw.first or pair.second < saw.second) throw "ages and probabilities must increase"; saw = pair; } } simrisc-16.02.00/tableparams/vcpttumorrisk.cc0000664000175000017500000000375314665030471020153 0ustar frankfrank//#define XERR #include "tableparams.ih" // virtual void TableParams::v_cptTumorRisk(DoubleVect &ageValues) { DoublePair const *from = &d_riskTable.front(); // assign the 1st prob.: ageValues.front() = from->second; // cum.prob for age 0 double *begin = &ageValues.front() + 1; // next value to assign // visit all pairs of // riskTable elems for (size_t idx = 1, end = d_riskTable.size(); idx != end; ++idx) { DoublePair const *to = &d_riskTable[idx]; // eventually the last elem. // points beyond the ageValues double *beyond = &ageValues[ // elem. beyond to's index static_cast(to->first + 1.5) ]; fill(begin, beyond, // assign [begin..beyond) (to->second - from->second) / (to->first - from->first) ); begin = beyond; // the begin of the next range from = to; } } // void TableParams::v_cptTumorRisk(DoubleVect &ageValues) // { // DoublePair from = &d_riskTable.front(); // // visit pairs of d_simriskTable elements // // (elements idx and idx + 1) // for (size_t idx = 0, end = d_riskTable.size() - 1; idx != end; ++idx) // { // DoublePair to = d_riskTable[idx + 1]; // // to.second -= d_riskTable[idx].second; // convert cumprobs to probs // // for ( // set the age-range [age..endAge) // size_t age = from->first + .5, endAge = to.first + .5; // age != endAge; // ++age // ) // ageValues[age] = linear(age, from, to); // // from = to; // } // // ageValues.back() = d_riskTable.back().second - from.second; // } simrisc-16.02.00/tableparams/frame0000664000175000017500000000007214665030471015714 0ustar frankfrank#define XERR #include "tableparams.ih" TableParams:: { } simrisc-16.02.00/tableparams/tableparams.h0000664000175000017500000000161214665030471017344 0ustar frankfrank#ifndef INCLUDED_TABLEPARAMS_ #define INCLUDED_TABLEPARAMS_ // the Parser has already confirmed that 'riskTable:' was used // (cf. incidence/setincidence2.cc) #include "../params/params.h" #include "../typedefs/typedefs.h" class TableParams: public Params { bool d_error; Double2Vect d_riskTable; // first: age, second: cumprob for age public: TableParams(StringVect &base, size_t idx, bool setProb); private: void fillRiskTable(StringVect &base); bool appendPair(std::string const &line); void checkTable(); void checkIncreasing(); static double linear(double age, DoublePair const &from, DoublePair const &to); void v_cptTumorRisk(DoubleVect &ageValues) override; void v_vary(std::ostream &out) override; void v_writeParameters(std::ostream &out) const; }; #endif simrisc-16.02.00/tableparams/fillrisktable.cc0000664000175000017500000000056514665030471020044 0ustar frankfrank#define XERR #include "tableparams.ih" void TableParams::fillRiskTable(StringVect &base) { base.back() = "riskTable:"; Parser::Lines lines = Parser::any(base); DoublePair next; LineInfo const *ptr; do ptr = lines.get(); while (ptr != 0 and appendPair(ptr->tail)); checkTable(); // ensure values are incrementing and complete } simrisc-16.02.00/tableparams/vvary.cc0000664000175000017500000000055014665030471016356 0ustar frankfrank//#define XERR #include "tableparams.ih" // overrides void TableParams::v_vary(ostream &out) { out << " " << ( not Globals::isBreast() ? Globals::simTypeLabel(LC) : label() ) << "\n" " tableParams: no spread\n"; } simrisc-16.02.00/tomo/0000775000175000017500000000000014665030471013363 5ustar frankfranksimrisc-16.02.00/tomo/vspecificity.cc0000664000175000017500000000111614665030471016372 0ustar frankfrank//#define XERR #include "tomo.ih" // E.g., age groups: // 0-40 // 40-100 // then by searching from the last to the first: find the agegroup // where the begin-age is < specified age. // Examples: age 50: the last group, // age 40: the first group // 'age' may not be negative double Tomo::vSpecificity(double age) const { return find_if(d_specVect.rbegin(), d_specVect.rend(), [&](AgeGroupVSD const &spec) { return spec.beginAge() < age; } )->value(); } simrisc-16.02.00/tomo/vdose1.cc0000664000175000017500000000013614665030471015073 0ustar frankfrank//#define XERR #include "tomo.ih" VSDvect const *Tomo::vDose() const { return &d_dose; } simrisc-16.02.00/tomo/setsensitivity.cc0000664000175000017500000000024214665030471016776 0ustar frankfrank//#define XERR #include "tomo.ih" void Tomo::setSensitivity() { base().back() = "sensitivity:"; d_sens = Parser::VSDparameters(VARY_PROB, base(), 4); } simrisc-16.02.00/tomo/tomo.h0000664000175000017500000000176114665030471014517 0ustar frankfrank#ifndef INCLUDED_TOMO_ #define INCLUDED_TOMO_ #include "../enums/enums.h" #include "../modbase/modbase.h" #include "../agegroupvsd/agegroupvsd.h" // Tomo: // costs: 64 // // # bi-rad: a b c d // dose: 3 3 3 3 // sensitivity: .87 .84 .73 .65 // // # ageGroup // specificity: 0 - 40: .961 40 - *: .965 class Tomo: public ModBase { VSDvect d_dose; VSDvect d_sens; AgeGroupVSDvect d_specVect; // was: d_specificity; public: Tomo(); ~Tomo() override; private: void setSensitivity(); VSDvect const *vDose() const override; // 1 double vDose(uint16_t) const override; // 2 void vInsert(std::ostream &out) const override; double vSensitivity(size_t idx) const override; double vSpecificity(double age) const override; void vVary(std::ostream &out) override; }; #endif simrisc-16.02.00/tomo/vdose2.cc0000664000175000017500000000015614665030471015076 0ustar frankfrank//#define XERR #include "tomo.ih" double Tomo::vDose(uint16_t idx) const { return d_dose[idx].value(); } simrisc-16.02.00/tomo/icmconf0000664000175000017500000000007314665030471014724 0ustar frankfrank#define LIBRARY "tomo" #include "../icmconf.lib" simrisc-16.02.00/tomo/destructor.cc0000664000175000017500000000006414665030471016070 0ustar frankfrank//#define XERR #include "tomo.ih" Tomo::~Tomo() {} simrisc-16.02.00/tomo/tomo.ih0000664000175000017500000000025514665030471014665 0ustar frankfrank#include "tomo.h" #include "../xerr/xerr.ih" #include #include "../globals/globals.h" #include "../parser/parser.h" #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/tomo/tomo1.cc0000664000175000017500000000077514665030471014742 0ustar frankfrank#define XERR #include "tomo.ih" // Tomo: // costs: 64 // // # bi-rad: a b c d // dose: 3 3 3 3 // sensitivity: .87 .84 .73 .65 // // # ageGroup // specificity: 0 - 40: .961 40 - *: .965 Tomo::Tomo() : ModBase("Tomo") { if (not defined()) return; doseBase(d_dose); // using ModBase's member setSensitivity(); specificityBase(d_specVect); } simrisc-16.02.00/tomo/vinsert.cc0000664000175000017500000000063014665030471015363 0ustar frankfrank//#define XERR #include "tomo.ih" void Tomo::vInsert(ostream &out) const { VSD::fmt(6, "bi-rad:", 'a', 1, 0, 1, 0); out << setw(4) << ' ' << "Dose:\n" << d_dose; VSD::fmt(6, "bi-rad:", 'a', 0, 2, 0, 2); out << setw(4) << ' ' << "Sensitivity:\n" << d_sens; AgeGroupVSD::fmt(6, 0, 3, 0, 4); out << setw(4) << ' ' << "Specificity:\n" << d_specVect; } simrisc-16.02.00/tomo/frame0000664000175000017500000000005614665030471014401 0ustar frankfrank//#define XERR #include "tomo.ih" Tomo:: { } simrisc-16.02.00/tomo/vsensitivity.cc0000664000175000017500000000016314665030471016452 0ustar frankfrank//#define XERR #include "tomo.ih" double Tomo::vSensitivity(size_t idx) const { return d_sens[idx].value(); } simrisc-16.02.00/tomo/vvary.cc0000664000175000017500000000044314665030471015042 0ustar frankfrank//#define XERR #include "tomo.ih" // override void Tomo::vVary(ostream &out) { out << " Tomo:\n"; VSD::vary(out, 4, "Dose:", "bi-rad", 'a', d_dose); VSD::vary(out, 4, "Sensitivity:", "bi-rad", 'a', d_sens); AgeGroupVSD::vary(out, 4, "Specificity:", d_specVect); } simrisc-16.02.00/tumor/0000775000175000017500000000000014665030471013553 5ustar frankfranksimrisc-16.02.00/tumor/unused0000664000175000017500000000077514665030471015012 0ustar frankfrank// use diameter() // double diameterValue() const; //+ // no need for repeated computation of the diameter index, instead // return the diameter and let using functions find the category that's // appropriate to them. // uint16_t diameterCheck() const; //+ .h //inline uint16_t Tumor::diameterCheck() const //{ // return d_diameter < 20 ? 0 : // d_diameter < 50 ? 1 : // 2; //} simrisc-16.02.00/tumor/checkdeath.cc0000664000175000017500000000037114665030471016146 0ustar frankfrank//#define XERR #include "tumor.ih" void Tumor::checkDeath(double naturalDeathAge) { if (naturalDeathAge < d_onset) // death before tumor { d_present = false; d_found = false; d_interval = false; } } simrisc-16.02.00/tumor/insert.cc0000664000175000017500000000124114665030471015364 0ustar frankfrank//#define XERR #include "tumor.ih" ostream &Tumor::insert(ostream &out) const { return out << " detectable age: " << d_selfDetectAge << "\n" " pre-period: " << d_prePeriod << "\n" " onset: " << d_onset << "\n" " doubling days: " << d_doublingDays << "\n" " doubling years: " << d_doublingYears << "\n" " p(survival): " << d_pSurvival << "\n" " start volume: " << d_startVolume; } // " self detect Diam: " << selfDetectDiam << "\n" simrisc-16.02.00/tumor/data.cc0000664000175000017500000000013214665030471014767 0ustar frankfrank//#define XERR #include "tumor.ih" char const *Tumor::s_noYes[] { "No", "Yes" }; simrisc-16.02.00/tumor/check.cc0000664000175000017500000000037214665030471015141 0ustar frankfrank//#define XERR #include "tumor.ih" void Tumor::requireTumor(char const *type) const { if (d_selfDetectAge == NO_TUMOR) throw Exception{} << "cannot determine tumor " << type << " for a non-existing tumor"; } simrisc-16.02.00/tumor/functionf.cc0000664000175000017500000000077414665030471016065 0ustar frankfrank#define XERR #include "tumor.ih" extern size_t g_caseIdx; extern size_t g_err; double Tumor::functionF(double years) const { // d_survival.vsdRow(); //if (g_caseIdx == 3) //xerr(d_survival[4].value() << ", " << -functionQ(years) << ", " << //d_diameter << ", " << functionZ(years)); return years <= 0 ? 1 : d_survival[4].value() * exp(-functionQ(years) * pow(d_diameter, functionZ(years))); } simrisc-16.02.00/tumor/tumor.h0000664000175000017500000001124314665030471015073 0ustar frankfrank#ifndef INCLUDED_TUMOR_ #define INCLUDED_TUMOR_ #include #include #include "../typedefs/typedefs.h" #include "../globals/globals.h" #include "../survival/survival.h" class TumorInfo; class Growth; namespace FBB { class CSVTable; } class Tumor: public Globals { friend std::ostream &operator<<(std::ostream &out, Tumor const &tumor); enum { // max iterations when determining N_ITER_AGE = 15, // deathAge }; static unsigned const N_YEARDAYS = 365; // initialized tumor age at an // impossible age, so always // age < tumor age unless there // is a tumor (was: -1) static constexpr double NO_TUMOR = END_AGE + END_AGE; TumorInfo const &d_tumorInfo; Growth const &d_growth; Survival &d_survival; bool d_found; // tumor has been detected by screening bool d_interval; // an interval cancer bool d_present; // true: tumor is present double d_selfDetectAge; // the age at which the tumor willl go clinical // i.e., self-detected // (selfDetectable(): true) or // NO_TUMOR (selfDetectable(): false) double d_deathAge; // death age because of the tumor double d_prePeriod; // _preclin... #years before d_selfDetectAge // the age where a tumor starts to grow and is // potentially detectable on mammographic // screening. From this age onward it'll // grow. (originally called _preclinAge) double d_onset; // (d_selfDetectAge - d_prePeriod) double d_pSurvival; // p(Survival) after treatment double d_doublingDays; // doubling time in days double d_doublingYears; // doubling time in years double d_startVolume; double d_volume; // actual tumor volume double d_diameter; // actual diameter (mm.) RowCol d_rowCol; static constexpr double s_log2YearInv = 1 / (365 * log(2)); static char const *s_noYes[]; public: Tumor(TumorInfo &tumorInfo); void reset(); // reassign the modifiable members //operator bool() const; // true: tumor is active .f bool at(double age) const; // true: tumor exists at 'age' .f // true: selfDetect <= 'age' .f bool selfDetectBefore(double age) const; double selfDetectAge() const; // self-detect age .f double deathAge() const; // tumor-caused death age .f double onset() const; // .f double volume() const; double diameter() const; // .f bool metastasis() const; // only with lung cancer .f // cpt the tumor's diameter and volume at 'age' if // d_onset <= age void characteristicsAt(double age); // .cc void intervalCancer(); // .f // tumor found during void found(); // the screening // .f bool present() const; // .f void setDeathAge(); // wrt d_selfDetectAge // .f void setDeathAge(double refAge); // wrt reference age void checkDeath(double naturalDeathAge); void writeData(FBB::CSVTable &tab) const; RowCol const &rowCol() const; // .f private: std::ostream &insert(std::ostream &out) const; bool tumorAge(); // false: no tumor void requireTumor(char const *type) const; uint16_t ageGroup() const; // .ih double functionF(double years) const; double functionQ(double years) const; double functionZ(double years) const; static double volume(double diameter); // .ih static double diameter(double volume); // .ih static double checkNot(double value); // -1 at NO_TUMOR .ih }; // only used in reset: no needed as data member // double d_selfDetect; // self-detect diameter (mm.) //OBS: // bool selfDetectable() const; // true: tumor selfDetectable .f #include "tumor.f" #endif simrisc-16.02.00/tumor/reset.cc0000664000175000017500000000403714665030471015210 0ustar frankfrank#define XERR #include "tumor.ih" void Tumor::reset() { g_log << " Tumor::reset\n"; d_found = false; d_interval = false; d_present = false; // see 'characteristics()' d_volume = 0; d_diameter = 0; d_deathAge = 0; if (not tumorAge()) { d_pSurvival = 1; d_startVolume = 0; // see modifications (7) d_doublingDays = NO_TUMOR; d_doublingYears = NO_TUMOR; // d_selfDetect = 0; d_prePeriod = NO_TUMOR; d_onset = NO_TUMOR; return; } uint16_t idx = ageGroup(); Random &random = Random::instance(); d_pSurvival = random.uniformCase(); d_startVolume = volume(d_growth.start()); AgeGroupVSD const &group = d_growth.ageGroupVSD(idx); d_doublingDays = random.logNormal(group.value(), group.stdDev()); d_doublingYears = d_doublingDays / N_YEARDAYS; double selfDetectDiam; while (true) { selfDetectDiam = random.logNormal(d_growth.selfMu().value(), d_growth.selfSigma()); g_log << "try selfDetectDiam = " << selfDetectDiam << '\n'; if (selfDetectDiam > d_growth.start()) break; } d_prePeriod = d_doublingDays * log( volume(selfDetectDiam) / volume(d_growth.start()) ) * s_log2YearInv; d_onset = d_selfDetectAge - d_prePeriod; g_log << "\nTUMOR RESET:\n" " selfDetectAge = " << d_selfDetectAge << "\n" " preperiod = " << d_prePeriod << "\n" " onset = " << d_onset << "\n" " doubingDays = " << d_doublingDays << "\n" " selfDetectDiam = " << selfDetectDiam << "\n" " volume(..) = " << volume(selfDetectDiam) << "\n" " growth start = " << d_growth.start() << "\n" " volume(..) = " << volume(d_growth.start()) << "\n" " p(survival) = " << d_pSurvival << '\n'; } simrisc-16.02.00/tumor/tumor1.cc0000664000175000017500000000054514665030471015315 0ustar frankfrank#define XERR #include "tumor.ih" Tumor::Tumor(TumorInfo &tumorInfo) : d_tumorInfo(tumorInfo), d_growth(tumorInfo.growth()), d_survival(tumorInfo.survival()) //d_selfDetectAge(-1) { // xerr("d_vsdMatrix"); // for (size_t idx = 0; idx != 4; ++idx) // cerr << d_survival[idx].value() << ' '; // cerr << '\n'; } simrisc-16.02.00/tumor/tumor.ih0000664000175000017500000000164414665030471015250 0ustar frankfrank#include "tumor.h" #include "../xerr/xerr.ih" #include #include #include #include "../options/options.h" #include "../tumorinfo/tumorinfo.h" #include "../growth/growth.h" #include "../random/random.h" #include "../log/log.h" inline uint16_t Tumor::ageGroup() const { return d_selfDetectAge < 50 ? 0 : d_selfDetectAge < 70 ? 1 : 2; } // volume = 1/6 pi * diam^3 // diam = pow(6 / pi * volume, 1/3) // static inline double Tumor::volume(double diameter) { return M_PI / 6 * pow(diameter, 3); } // static inline double Tumor::diameter(double volume) { return pow(6 / M_PI * volume, 1 / 3.); } // static inline double Tumor::checkNot(double value) { return value == NO_TUMOR ? -1 : std::max(0.0, value); } extern size_t g_caseIdx; extern size_t g_err; #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/tumor/sciencedirect.pdf0000664000175000017500000203616414665030471017066 0ustar frankfrank%PDF-1.7 %âãÏÓ 651 0 obj <> endobj xref 651 137 0000000016 00000 n 0000003781 00000 n 0000004018 00000 n 0000004060 00000 n 0000004096 00000 n 0000004530 00000 n 0000004645 00000 n 0000004759 00000 n 0000004873 00000 n 0000004988 00000 n 0000005103 00000 n 0000005218 00000 n 0000005333 00000 n 0000005448 00000 n 0000005553 00000 n 0000005661 00000 n 0000005766 00000 n 0000005872 00000 n 0000005975 00000 n 0000006082 00000 n 0000006188 00000 n 0000006295 00000 n 0000006402 00000 n 0000006482 00000 n 0000006562 00000 n 0000006643 00000 n 0000006723 00000 n 0000006803 00000 n 0000006882 00000 n 0000006962 00000 n 0000007043 00000 n 0000007122 00000 n 0000007201 00000 n 0000007279 00000 n 0000007358 00000 n 0000007437 00000 n 0000007517 00000 n 0000007595 00000 n 0000007675 00000 n 0000007755 00000 n 0000007834 00000 n 0000007913 00000 n 0000007991 00000 n 0000008070 00000 n 0000008149 00000 n 0000008226 00000 n 0000008304 00000 n 0000008382 00000 n 0000008461 00000 n 0000008539 00000 n 0000008620 00000 n 0000008700 00000 n 0000008780 00000 n 0000008860 00000 n 0000008940 00000 n 0000009020 00000 n 0000009160 00000 n 0000009218 00000 n 0000009275 00000 n 0000009408 00000 n 0000009454 00000 n 0000009488 00000 n 0000010022 00000 n 0000010722 00000 n 0000011078 00000 n 0000011495 00000 n 0000011838 00000 n 0000012458 00000 n 0000012536 00000 n 0000013751 00000 n 0000013939 00000 n 0000014176 00000 n 0000014491 00000 n 0000014650 00000 n 0000016075 00000 n 0000017475 00000 n 0000018653 00000 n 0000019913 00000 n 0000021162 00000 n 0000021392 00000 n 0000021732 00000 n 0000021920 00000 n 0000022127 00000 n 0000022401 00000 n 0000022735 00000 n 0000022934 00000 n 0000023092 00000 n 0000023322 00000 n 0000023483 00000 n 0000024757 00000 n 0000026161 00000 n 0000026667 00000 n 0000030533 00000 n 0000030817 00000 n 0000032187 00000 n 0000033382 00000 n 0000033763 00000 n 0000034491 00000 n 0000040828 00000 n 0000045377 00000 n 0000045619 00000 n 0000047766 00000 n 0000048106 00000 n 0000119858 00000 n 0000165417 00000 n 0000165961 00000 n 0000166087 00000 n 0000217929 00000 n 0000217968 00000 n 0000218028 00000 n 0000218141 00000 n 0000218217 00000 n 0000218294 00000 n 0000218371 00000 n 0000218451 00000 n 0000218501 00000 n 0000218577 00000 n 0000218653 00000 n 0000218711 00000 n 0000219075 00000 n 0000219186 00000 n 0000219289 00000 n 0000219443 00000 n 0000219569 00000 n 0000219725 00000 n 0000219833 00000 n 0000219953 00000 n 0000220102 00000 n 0000220220 00000 n 0000220369 00000 n 0000220502 00000 n 0000220633 00000 n 0000220799 00000 n 0000220941 00000 n 0000221091 00000 n 0000221241 00000 n 0000003036 00000 n trailer <<6A719C2CAA579644ADB24755225C6E43>]>> startxref 0 %%EOF 787 0 obj <>stream xÚœS]Ka~ÞÙ™Y7Ê]—u+?¦m5«ÕLM‚ýšau ¤Å²‘MR—Èe/¤³víëíéJ誫¤« /¼ˆ.bÁ‚@ƒ~€]D(ì]Q’W‚ðª‡÷<ç<çðÌyß »>Àø~Á‹¿æ… D(ââêÃÍ{ø²Œ/™ÔšëëÛZ OUqýûçî‰Êü¿E¢ ­«û\Ÿ>ž2cñ¤ÑÒ>zäpÓ¡áÌ…KéÁH4×o¤Ì„víúÄ[7“F¾ÐØ:HåôàíI»|7i$´”< ÚÙ|!ÕyÒˆÅSæäp&mÏHhú½¤‘2ó…úºÚI›‰& ý~B³x5û÷•s)S/Äâ{Ä"¬?´tUû Xr™ÇŸ%ËMýkÜ®VµŸ,cBÁö®.3›Ý. !#·9:­Vƒ'˜-W¥þl¹Êü9ëttÒ±ãÒ‰² yáãäìTº0ð6H•g^à,š¸O«PÅ1¡—Õ`Ýq/\ª8ÍÆðChA5ÜšTJ,‡y¤Ñ ?ws‰ «Ä˜ÇÂVB“2B‘elÆ1«…S 1ØK´<Î$ ^ó­HŠð›` pãéŒkÆ™/ã§tUxÅêðLë)9Uñ=ëÀkäÑߌ\tªlÃ5' `ÍñŽ&ôñÐiiT ñ¦¨UM mKç¸8Ò ¦94±Äz1‹~’® ‚Kš¨º§gzqõ<¬ÊE±$,â‡-}7è[TÌíððH³£Ïz¹´ÒŠYºäKÖrÉ  /[?Å ¶Dø1äu°å§èðb'Å ÛS…'PÜ›[S„Â['Àp endstream endobj 652 0 obj <> endobj 653 0 obj <> endobj 654 0 obj <> endobj 655 0 obj <> endobj 656 0 obj <> endobj 657 0 obj <> endobj 658 0 obj <> endobj 659 0 obj <> endobj 660 0 obj <> endobj 661 0 obj <> endobj 662 0 obj <> endobj 663 0 obj <> endobj 664 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 671 0 obj <> endobj 672 0 obj <> endobj 673 0 obj <> endobj 674 0 obj <> endobj 675 0 obj <> endobj 676 0 obj <> endobj 677 0 obj <> endobj 678 0 obj <> endobj 679 0 obj <> endobj 680 0 obj <> endobj 681 0 obj <> endobj 682 0 obj <> endobj 683 0 obj <> endobj 684 0 obj <> endobj 685 0 obj <> endobj 686 0 obj <> endobj 687 0 obj <> endobj 688 0 obj <> endobj 689 0 obj <> endobj 690 0 obj <> endobj 691 0 obj <> endobj 692 0 obj <> endobj 693 0 obj <> endobj 694 0 obj <> endobj 695 0 obj <> endobj 696 0 obj <> endobj 697 0 obj <> endobj 698 0 obj <> endobj 699 0 obj <> endobj 700 0 obj <> endobj 701 0 obj <> endobj 702 0 obj <> endobj 703 0 obj <> endobj 704 0 obj <> endobj 705 0 obj <> endobj 706 0 obj <> endobj 707 0 obj <> endobj 708 0 obj <> endobj 709 0 obj <> endobj 710 0 obj <> endobj 711 0 obj <> endobj 712 0 obj <> endobj 713 0 obj <> endobj 714 0 obj <> endobj 715 0 obj <> endobj 716 0 obj <> endobj 717 0 obj <> endobj 718 0 obj <> endobj 719 0 obj <>stream H‰¤V]O+7}ß_áGçŠ{Ý>].½ *ÚŠ›¶ªÛ]'YØÈ» âßw¼NBB³ Ý+‡ÌøÌ™33&‘á×/’ó«o -ºD*"”DLX¢…BŒ¢©@œrb„DÞ%ó„¢ðNѸ»JºA =Âá\Ð-º ¨€K”°”“B ɉÐ)*…ÐM‰TB©òâSr1Kο22›'Œ«‚ïìˆK ÍDãÍj¸~–‡?ÏÉ=þÝ—‹²ÉªÉTˆ”H|ç:—ù|9y˜Ý$L+´Œ·ö. ²ŒHcXx¿´]?uó¹Ëûrã×ur·¸O¦Üj¢qµnÁN‰ÂyÖäÎÇÃ]îkÊøo ?—ý2Ú Wíó´h;7 ¢hÊ3©@³K¸6oëÕºwE@¯À¯oëvá³Õò%æ“â² V²tÙæewèêöÉùî§p¶vv]Ú½.sßve½®²¾lC (Ãu[¸ªÐ aaׯ‹—HÄVLE¶öž0& ð¥"aÿ”Ëu9ÀÆ—ëÁ×ÃDt …•ODŠS"­ÑÁ•¤‰&"”¡§°ÏOÞDÈ©>¾z/Â{|î—ш õ/»|¾•Eë]óÔnF€qA‰‘pûwã¡XL™Ýfþ±­\,¢&&±°_»õÆUuÖt# …ö Óß RXC˜¥ê4HÀ~SßÑHÐR:êæ:ó‘L dÞ[²³¯|ëš±b+Nxè'EQ‚ŽÀýw´Ø &ކ—Ð5)•zŒÓ_3ùЛ„øËùÚ­«Q|<… R®?À7^ó0/ À‡ø æ¹«bG3 ïïú4»(L‹T~D`>Pr Dhvà®Þ–p.ŽË}åœïýº,²8M8¾&±³ 7ðŒ/Úüi¬ì&%Ôp˜«–Í©|‡Ö=³c®¸N "”A€a¤LOGþü±ÆÄ9ÓŠq³ŸZd)|pDÆçü+{Ç€7åÃ?·¦¢Dˆ·“nwÄ¥[e¾¯Ý„ bpÓG ªaCDë—UY¸ºl«v1a¿œÅq­ðŸ lß•ý„QÅvŒs|ëŠ2Ë‹Áñ‹k‚>¦‚kÐ6t[Ø) h¸Ðî¦_ƒ…0¡ øÈWŸðmhîñ(ýr(.Œü›ƒƒ¯²¦ˆ³h¿ß¡5,u#ZcO¿Ïf +ɰÑàQqÄæÀ#`·Yü±®ê¶É†!Ä%¾,a§w®;‹ù²=x%H<ð0ðÿct¾©M;¡x_Ùc^a{œ`:0è›mC‡ñA³ ñC~¦>¦—sxœ¨adÇŽŸ^f†{… {‚_-éNï²bé PÞÿ×Ô+—> endobj 721 0 obj <> endobj 722 0 obj <> endobj 723 0 obj <> endobj 724 0 obj <>stream H‰ŒVKoÜ6¾ûWì‘[dUQÔ3>¹vZ4MPÀY´ì‰»«ZRZÃùõµ^Û9¼|Ìã›™o†Z­VÛñj##U$åj{sq'®Žºíô·Î¬7*É£BØ¡kÚeQ%d +GR|œ‡ “‹$Nâõ?`ìç_ÕJ®¶»‹2ªò\­bø Ë,ЏÌWhG*îú ñLJ¯ÿy{óe½ýt%ë2¢¤ DâÚúicv;SOíÑ ÆûK”&¡$É †ýÉ>në‘*£TÔ¶çÉ4„*ÈÆŠ N¶·{§ÇÃÚþ„êó°GÕL ÆŽöýå¹fž³—ÏÚ{S‘¾vÆ í°¿üÏmí¬oû¹ÓSk‡àGô¶1Çò$Ó()«’TdqEºWßüät=±\Êr¼´Ì ›(ñ‹®öÎÎCóþEâ2Èp•³ÐS’g˜=ÔÆá®€"ž ãAeⱸN¡®Ý)“I‘Dås&é¾8Kßbü^|º¹ÞÞ¯)GiVÊótÜ gš¹6˜;Y€ÍŽÓ-Ø[ )‰Hzë&ݵÓSIJJlXT)Á‘n{>Í„Ýá*‡ûéÐ’Ýxè§¹yÂM ›GMçÄ4ÙEÚu7ë‰LfQÚa™C ¯‰Æ7):ÃЈ)ºBw'è !eU) QrVUS~˜7¹h" Ò¸@¤‡vظÖ?àA.F;ÞD¡© @Ë"[mk$# /0¸ƒmüû )º¤YQ0@¥LX@dâ°– …a§X ˆRú9èÒTÌË­²¸¢‡ÓªÑ#&. ¼N±ó¡ PÃWl ÀvðI6ëXtx Ô-ÐT†Å‚^¼ÖöÀâ–º‰5r®5­næ©Æ”fj‰BŸ˜v!â³vâ$Í9nßÛã°žY±î¬[–è=GÓ]»3SÛÞ§â`]ûý9–³=-ŸuD§;ªsVÁ†¢ËÅàg‡ä`)FŒLR"œ™aÈð ',3œ¼r:5q„ìYˆØöÐ9ofLÌ¡µCÝÍ µg%Q÷hœÞc÷V)ðýG¤N*œßk…›{quýáö~ýŽôШ3½ ñYö¿ ýN†–†"T TÍ’@0šBîç5¶Ý@!ï9‰¨×È`µ¤¡U«àô`v-]â)öÿGšÆ^09Kn íÞèÌVç³KÊ Û-–‚Šá ™~¤ ÑÙ“)´dv É3˜:àÏ æÙÙ3¾“Ï/çñ Úµöd™ÆÆ›Ç'”»i¡ðÛõÁ&Bz‚2LRœ?ë ѦPÃU;LÆ!?§Oçy\¡ kë'F!¥SK$ÕƒfÓ¹:™ì8¢¼êgB{ší)RøÑ0@g–9gÈ;bÁÑ‹C«4``ˆ.ÍQ(!ãø] ¢xÇl\Š^ÃÇÈúßA÷¡Ñ‚š `PGXã•X”Þâ­x@ô8Œƒð–<Àai¬e8”$lI ÿc]!SABFB)ЮÄy‡¦ð Ãó$ŒØ3œ,¦´È 9'vAy•#ù)dOZÁÁ/°[ئiOk`9£Ú¼·Ðf9Iß­ ß2ècˆ™Ä/¦FÁ\ ’~’X"µá7䋌PòùŽáW"ç4ã¨K!r~Â2~ÂÄ—*|òüõâCg³\¾ ÄÈo±¢9°3¼®Ä“ÑtžŠ= VÓ, Ÿ-_ƒIE>stream H‰ŒVÛnÜ6}×Wè¥7ðÒ¼ŠdŸ_’¶hz ¶-ФŠ–^«ÖÅÑj“úgû-áE»6Ü äŒ8<3sæp˲,ߑͭ_­…²”ÿ©îõì·`ÐŒì›Éû¡vèw´ƒê©÷èçä¡õÝ6}L-yyyýv7†Lõ°K'%øn¦±G—7Ô ½¢ŽÌc\Y"UÙz·ú}ómqþJ—¼ÜÜàrN–¬Ü\ä—Õæpñ袦Җø\1ø^Åy8/A¡›>ØûpX‹IWÈŠ2mÊ5å\žnœ¸®© ÑÙ²‚ï_¥MŒpó¢ø þ.60Ñ0®LK|¶$_Rë*èx_‘"Àq¦3.Ç gm¶qà‘t¤>Ì·PÂH©Dá Y-¯<ŒäÜûÜ'HjЧ¢h_ß·[ß·c7îVçö,J”#?0àÓ>Ê!ÙÞømÛ„ …§S’K‰ø`:òzìrdMM$Á!hòÊqÅÈ"ŽÇ«üãñNE.Æ?jDbŒ‡/P›_½Œ²ª‰bgé!–i­Ç•²±Pw†äÄx{9ÈŸ+%p$Š‘ªõ½‡ÍÔ‹÷+Ih*¹È²¬Œˆ¯¾æ.^v½îëß&x¶¶[èÞþËÇ­¢¶*©*‘2¨pWÀ£ã`2Sïvô–n=ý06w+øeaÉW‡¾ÙÑ¡KOþM;h¸6JæCïÉkú5È9Ùú”®¹{¿Zìüºÿà· —Wcs€É›Ëó7—¼¼¸º,ÎOM"˜`¡ Þ$màGˆS06Êp¸¶Z,]°)‹2@!÷8§§{ UjŠl©˜¢•å!F¶háªÌ1q/YÜã­yß,Ȳ¥ ¾œq8êsÙÇ[›¢ü[€ƒ¾Ìn endstream endobj 726 0 obj <>stream H‰¬V;Òó6 ìu ^À ß>MÊT9€'I#'óý÷/²» eåó¤ËxÆ"(X,”sΕ9}hÅÕÞýˆÓÇ}§ôáû09N“Kž—ü<~s¥?kºv_×N ÕçÐn–?wö©óÃι¬G_{»NÂúBq·e8÷ÎÝ[Hw¹ø6"pÿ±od÷¢OùÁ="Ù¼Éôú¼1eÈÎq'ìËæÛ7>,_G~„ì~Xæ™ä­§Aâ×ñÓ/¯è~þûø¿/¹¹ÊTI™çÒt{üø]†=âÆY_FK}?~üy|¹(_ñÐK/^GpcGL©ùÑò[žbâprÇ:—jë¡¥ŠÀ¶ˆgÃRÞºÛfðœ {;‘ÈãáZŸÇçqi>| Û̸Itò<–, ç%åÂs4"Ô;6zYQ=|‰¶~ø^µc½ÖÑ’®€Þò˜>stream H‰tVInl7 Ü÷)t "EMÇÈ Y؋ܓª¢žm?›nò‰§bI¥”RwßåÍj^ê²#yžRgJ»¼¿j\›e¥úZ’öæø^Ï6½ÕÖ‚šc'V:~wð×yj]}ɪ×§ó[çÏh†ßèƒf—QlåmiNZ„ä ¯8FR|ñ{ìRCÁð·Ž5Ò×fN4è´½á4dwƼ1ŸbÕ6 > áqÿ‘Ä´ê‚%•À&‡ä8; ƒ}‡‘à[£ù¢¥~›óK8 všËh ñºWÇ(pï§ãàP¡ÌUp€ñûB6èk€&-… ¿ÿ`M4¢›—O*ø¯#°Ç«ã¿n:Ø0‚<B8&¹#I|” 9©AÛèúJ%G‡n¥2s_©pèÔ%tñʵzdÍÍ&š[†4‰zŒÅ£ ƒÁí(k64ÒêœMåÕ3‡æÒr£/Å<¶f¯«œc¥á<#U®í‘k‘L‘Äþª_êy´twÿ´Ã#-#²f¹aX6°©>C•ÛËÒtŠˆ*Ýs¦¢æk§%1 ƒÚ¶ì³'¿ÉŽœçê~ÛHÇÐA¿x!:°+»…²co¾‡Ü’<³¹em.8V¦œ;cœ¿—‹ñuhaˆ“­óÒ—xv¢È9sSG †‹ƒÉNöÈsHºbÅfÃD‚tfô‡€jí!»~µ‡@~Ïî[fwaÜâ{vqΑ½d¿ö ô£þjÅ£°VÙ—Ós¨ïJ܄׷*žxã~¸ßŸöX¾iŽ©í³9 C6 ?²éË2 "ÊâÞ6’ÜΨCS¢#êÊx)Õ3QáIÚyË Þ#‘µÙú-Š—Â© ½³‡ën^‚ë‰m}#`Ô¹eÝÛù!]+ –ýRÌ'Õ_Ú5l?¤?TñN:¨bTGØ?øÜf‚‹ Âð&¨aµä5q ‘€Ê]”ÅÒôû8ü—Ct÷&ûµœ/¿l•ýL¡.àþL$¯á‡t´ô骵ýÇKõ =!/³K¦VOÜȀø7 Bsw¾W ‹wóƒxr¤lQ ðÄGÂk䱨SŸyË’§Õýí7ÇIï&0gPŒ·ÅËTB©0!‰]ÞQOöw¡©Y­<ç–1¨¾òªª3–Û ¨)fµMïªì%ž%;[,Rʾ ïx…42Qçh5\˜’Ê¡'!?]$Ey&}-Ø*ÊW,ŸYºƒa¥„xLŠNq¨T±s&k5Óêz5pôaUW–|›ž œ'…è ðÈýšèQ™[I.CƒÌ#y÷÷ë X°ñB^´Û#·”‰„L%Ÿnƒï«•Š,Åû«ü'Àœ&ß endstream endobj 728 0 obj <>stream H‰tVK’c9Üûï¥B?Ž1gpÄÄ,ºsÿÍd&zvWUÏÆ†' A’€®ëº>Š[»JŸíúõø(ÍÃg«û*¾çUñ~=?þzü{>TüöðÒۼƞeÌq=?µðù€­ áW ¥û¢2†Ci#¨¬:xŰ®ÝV Kí]Š»UnCØ×ìmvo-m)s”y_HeoÝ2/Œ˜NÃ…F©áïùH­•––ê>Vý~Ãaí¡–æoàÔJRÎ.eÞb1åé€X΂T}Ãø<ù¥¶Ëü­³ËiKep`4R”:T•5iËṴ́÷É•ØAƒÌ]hæ.hˆxr¨ý§ 0×ÑV\eyÐJÇ_9VÖe°-KÑó±è‚¯ÀûR¬+´ÉÍ4šª‘8!e J‚Öç!ÜÊí"ö¯Š²õ¹ ¸Ç\5\Óçìj‡³²&È'ÀFÖLô { u'le/„§Ël¢1ò:X4$¯¾/|ï 6w“¤‚‚{Ò&™`e¯Ð¥q1'¬ Úi0¡jB¹4”é<ºäIyî®]­Šõp²“]r¦!m¥æ¸²ê¡3Ûô[TÊ]z’L "®_R¶‰H­t?ÌX-ÜÂû‘¶æÖJóÄb„ s£#Tœ[?Jn¬mK5¥u›´6”•éy–©hýR舴`C|WßUüaϪ‚½Oi2Å«4Ñ… B˜¶&×&ù•DAß)FšIG:¸ËUâÞ‰Hc…"0m–d R)š° OB§ã:<¾Ô£˜7ÔD\§·†±àÖÎæÀºƒ¦Ðô Ž7–•joGWGcÌuâº.H˜6²{hegqEÖ{ØÛw'X¢#•¥à[R*X T‡Hç^ý¶'6D^.”fWSög:5íª’{ž"T§ùÌ`ëã%[Ÿ¹í•Û]`wPiü±cWÇ¿ulT r)×(`I 8]ÜP;¯ C+Ø èý8½€^{ª¥GŸ’å~z±Œ DÎ/u Sn¥…'ª SB£ší€síÈ<šùcɰõo:Ä"DLã.H»'UÒÑϾʜ;UÊFϧEi8f#‹3W{r-ØêL=û‡«CÛÉ®ÆÊ=Âz°·$—|±iiÖ›jýnÂt]w;`)îënY§äl`ß´—†`ë_¶„ù[C ¯ä3ßjµ; ½V(óqôšœäq«ÙX9mc¦Ö8Å<§rµ[FJVnz>’TãŒÀ¡a£§ËÀKEpò>Ï‘ÉÉ…Z#wºj¬Y-Å•)¼ˆT},s;¼T¯šª”ô¼¬Åð¶K¨†"[¾56hæôyÁµÓMH85i[N:™]üÎÁϹÔwbÖ¯L¸fŠ”z^(K˜ÖP›”ýw>~¼?ñÌ*fjÞ³\ ôðË'“)9èö]a[ä6ýá#zQ¯|mÔ\:šË8q¿ôkkgî”6_ëÌc¬³¥‰(ùF}>®ÿT%R endstream endobj 729 0 obj <> endobj 730 0 obj <> endobj 731 0 obj <> endobj 732 0 obj <> endobj 733 0 obj <> endobj 734 0 obj <> endobj 735 0 obj <> endobj 736 0 obj <> endobj 737 0 obj <> endobj 738 0 obj <> endobj 739 0 obj <>stream H‰dVK’d7Ü÷)ÞF!„Ä1|†‰px1½ðý7ÎLT]ÓžMÔCˆO’èyžçG˵ñ»ÆóÃZÏCy9Ÿ’ÇóóÚ)uòÓ²“¼†ìÌËnóË´x~QKºjnWË€fO޺Ѳ{Éëiý]P˧)„LÚ°-yÄÓ¦Û½†Zø)Ç1q"v*„Õ¶Uœ VV Ë ­]ÉmÈ[YÛ¬Ú9øppŽá'Îv) w#¡!eÆzpÒN}Böð¹ï)T·E}Û›Ú´r’ÃÞ ¾\ªb2„ƒs§Ü›Š¿bä QiyðòÕ‹‡~n›ò¥UÁËðÐîÐÁèK²WLëSɬ®úÅ‘rthñPÌ(»™<¶ËÇ€|ûŠv#eÚâ½;M ÌñôA°õ”ìUë>¥Á¬E¦ŽKog¯K'Q:ê E*”c) —ÌUU–ß±0cE|¦d†lÕèþx¢?¿ÿ°“Ú÷I…hkÀhî·ÄqÁ’WašrÕÚÐß6ÑHUÃQ^„V-a ¨Ý,6(Þý&„²«o›ƒÕÇžJÇü"ǻԸÆ=ü­Ä!>+Q÷½ ñëãï¿>þ}ìaìaÀë8lQOýùùÑ2`%´N?ææ»LƒBô[B– ¾+è³Æ˜‰f©íB³*hªÞýú´?To~v/1‡€ž™·ÆVJ;ä‚бd,%d¡`Ô[ŠlVd¹wå~~‹ZÚm4°1¾+ý tÿ/o¢7‰£ÃcüVâ>8®ÉFg çu“¾„)éÂ+9pÙ66›*°ÍÃC =K&ÀfËà®Í4É Z ]óâ”§&×3ÏUÈ5Vw±jÀphÙNñÑDF9&Ó‰Ê Yö?9Y‡#‰ÏP!É rõ·ãx‹—ÄF\4ɇ2æó›E½ë×ÖqÆz¦"¦SD§ùÄ~Q\ýÿˆæ"£¨jj¢¼¿ÊBŽÑÞ´Ñ~j€4Íü.+íBü¢®ESãÜÝ$úB8³Ö#*—•DØ0ó£m`<-êÖ†Åþ )hpÖÒ©Z²S®»ˆÑühè«‹uO2"8°š¶¨~rìI™"!t«î™ÊÀbk‰p•|gÆýJo-„ ¼Ì’Å›Vã–ÜÅ’9Ë€„†lßR —ü_H¶Í=>4Z\hð³u¿jœuÕ7ÅÆŸ#•\\#Õ["_#õC”Mdðñ!ø» $ÀÞrû6ñî)X$¹ï AcU 3Ó0ŽJ'åɽȨëP¯ì’oŽžª_ê9«ÑeA %¬[Ä^â%>dz×"Ñ{\qjáèm"ßõü˜z脪nHdÑ£@97{Ü·Æ|hÌ5Ê$s¬†É&5wÝÑõH`Âã¢?«g„R"L …¡ ñ@²Sˆ =<îã‚O¿Ý]ƨþ1S<X•|ѱ|ú ô†Z)˜½e¼P044…Ô©mß+l„‘šwø<%ßÕB“šDäCPO2«B1:'g•H„Lù×Ó ø+‘]ÒëÄ5­è²n !›ýü'Àã%¸ endstream endobj 740 0 obj <>stream H‰ŒVÛn7}߯à#·ÀR¼_‚ @|  ZT/EÜy½¶Ö•´ÎJŠÑ_ÊWö ¹’-Û ÛòÎåÌ™¡cL(™˜ˆA³U%t°L„Iv´”#;Âk•Ö3ኬ±oʲµŽ mmYà®r)á”fBz’dd&°¶*ûͤcé@G¢"ÙÀ!)7Â…:o„ƒe%²’‡UR’ÑÒÊÃ} tàHDOWƒ±ÐÁ‘³€À½!å@y:å'&ª¼ð”Cœ”Uö4#¤$uŸh‹t}VS‰ì9Ün+ä­8E®£›ýYih'§Ž•'-mhÏæûÅ‘c矫ê¶ú%ˆQ#Pe°G¡Tòl¼«¾3ÅHK1•ððé’ 0´ë|°®¼ðÎ0 ÷T¨²J€Vò™ttàÄÀGð6å|zé*"ûÚUsê«ùÎLÉËkMàKE}áÌïȼ4"IõÌ™¸JÖAÈ@‹ü €ËJ>n¹Ñ(›‘’G©­èÄ×'·N >wUîÈüÓVËŠìi££à ˆ®[ɤDýõqyˆrZZ;²ãUPcyÚêdÿäÊ©¹S_§<ÅØücŠ’Ý&è¢Ø*„—ø'XH¹Øú„¿F»p ú†œRR´2ž"‰º4rÎ/Û&÷mÊqI“—Oˆ+ †p¢t ÎÎ<¦ MŠÕf]%]¾É Q±‚P>{L.{±BYC˜<(k(hÜä.KÙÇ÷.¿žç¿³9Êšò§³I´ŽºÖ° ‰›žÍ×À s€z]"þ]}ãËÝîaûn6»z1ÔJóñn†(Ñž~v/ºrâ÷íIj¤ &×`UàÒÖÍ¿T…;€;W3²ùÌÊäRƒº¤ZV>ËʳO˜œl~ ®z©)XèòŸõüGªajà%‹rZ7Æ>_v$ ùÇýn9Œ[µöÂòßö׫~»ình#bãúRuürµí~ôÝH+‹(~Ý݈"kØë·$kžÿ[†/6åÞðÐeIã΢m»mÖœ|1îúvÕ#Šï77Å:ß•Iíü¼HŠŸýyV}Ûm¶¤¢b¼â’W±Ôä¦ÌPyPvì»þGGØ{Þëõ°ÙŠa¼£ú„ ÞÆI¡½²…^* “ßí ¨etýì´x^bH©ÇU-¨"—óÊYlVý¦¬øb÷vq@.¼˜¦ÇÇG±mûnÓv7ýص;²*Ç‰Ê §‰¶L¡IÖ–&ƒÕ,H@‰.Ëm‰¹åýQl^ô V)»¶n2«wS¥býuÃkhÖæ½Æ8>stream hÞlÁKAÆwÒîj¡¤h©W’wKMXb@/bZmi âÁ5óâ&323‰ì±éÍxLû´ÐK–þ½ôhé½"DzïÅÙ°:ëɃïðÁû}ïƒGœ»9‡ò°Þ¨5ÖOj´ÿ¦Y] *ËÕ û‰O’¹û3ÔιÏÇ_\óû9›&tÚÉÙ sIÈJŇ ”¡.öcÉv# [ õ­ÇP ‚žuöJh¶òÂÚÆ"ÔºJ£¤awÖ#„W¨#”SU΀Bh ®tÃvz )X(SZ²ž¶{["v¬_;ZöQÆ‚£-…|„ û(»Lg¡¦#ÑÓÐ\!× Ú·¼.a³LÙ8„R†\ÇÙqÈcØ»ù';ËNŽÜ»üøÃxûü‘!K›¥æ¼ŸæáÔL¶‹É=ïÓ÷ªäކïG³VŽF…ä©÷ÑÂמ™üzyjòþÙúò{ñó/÷ç‹¥ãÀO+i!uÒ-V=Õtÿy‡ƒáÛÁ¬•£Aa5C掗–¾™˜Šÿ÷âøä¤˜ÿ/À ¥J endstream endobj 742 0 obj <>stream hÞLVyXTåþ–s^4ºÙžcçŒå®¹åZ¢&Š»@(²/Ã"ËÀÌÀp˜aVD¶9 ò‹Kj›•ævÝ*S+­ÛâíÖS·ïpßñ>÷=Öïy~ÿ¾ïwù|?ßÕMæé.sss{zãæõ›7lZ¸>.kwàòU+6-—^g8Y7çŒ)Ïâ]ØôŸ1$? M;<ã©YOËÜÝÜ*ÍÕé‚&)!Q§œ;_¹lÕª¥Êõqê•2PÐêT©Z¥Z¬Z“®ÖDëTq‹•ëSR”ŵJJ«Òd©â‚’RUZåN•^ NNS&i•Ñä3!‰èkTqJ&:N•­IVªã•A‰*åušZ'¤«”ÿ2œ¤NS¦§Äþ?è27Ù$7™ÜMö´‡ì™l–‡lL¶È]¶T&{Ù]¶R&[-“mð’m§dH–ê&[F8yÊ|dÑ2µ¬\6êæéä–ëvÅsu?éAyøx´y|î¹ÜÓèyò£r¨_èmôým@uès¯™^Ý^&­œ$Nzw²ßä¦ÉWŸ˜ÿDÆ_NùÛ”À)­S§O­žú«‰ŸÃW„ãg”Á\‚§a*A,:ü„}¿€ž¼ziuÿI_ßø{ÌßOæÏY€Ýb8K)õNשž³ìÅÛ·ì YžCЭ$±ì¦ñÏ®v‡&<fÁÜÀ}³žÅI4$@;UEËÏ9—@°b {PµÆÊâ"&#»hg%'À Å©7Sx\è¼IÒ8Ë5–°<%foétÒErPU?ʘkZjE®ï ¢ ¿ôCÉÏM¬™Ø£ÐÓÉ%9MľSØ“Å{ñ«x-ŽÀÀãÅùÛg}ŸßàßC«ý¶Fú°xÆ*˜ ûˆWû?ä?¸8t™ýé—MxR o¥åàayÖIÓNxB /„çðÿ!ÐתlƵŒ+­ôëqP;!W\¥á•÷ñ‹x#Ù<ÏÜR`þ˜—×ÂÑ NÞ4¸ø-yö¹n ôíjkúvÆ•†üóS_®áç÷è($R§¨ü‚°»Êo¾ÀCJ/º<ò‚™(þJ~Ÿ4Æ%mdµ´<l’ÝÉ4xœÅä·ë’@ßú?`~y¯V:ÿ+¢W˲Ûn0ÖŠ¾?2«†·Â}=½°âÍýkÙZŽNJT¬¯Èlþœq&¢»uW9ÿ. «•…+%Sk3óÖK™ù‘¤ÍpnR||ãPŒu}Z3]Äf®jÏS3&*œÃëq4eètsÿù b瞀>;Ô¢Ù$ÙÙ–Ÿºú±sODYâu6¡vxãxÊ–T]˜Ëdç™ö“ïë"Š.8òi4!oâ9ÈS°½RÃVc†õ§Ã…¦1Þ™…îµ›–s¢Ë[@wu¾Ê¸ÐÆlDå¿HQßu–@²'9S(l#éªnUof\É( !%ˆ¸ÐŠhsšãCÞÙQ…`àÑdª‰†Á‰'©*W;½>Gÿå/"ò?¨5É83Ðånñcâ[¥~™°Á ð:= 'ãÅx>VáDX„gCäÂóð2ìå°_™¿é‹ŸÄ“ñ‹¡°fCѯw¿·;اsòsÐGiÄ)ˆéÔªôŽ„sxh½¿·}ðé=dKïàYœËC oTÛ´;—V*·×$p"z­\×t›qyŽÒÿ X¼.eý\>˜Æ1çAEXsDßîáX{èö¯v]­FÃlÙ½?³àL×rÙ¸º•îi²4µˆIJß§NæžØŠ÷y€wÕù]ñ2´”XÚ™sŽ} èÇuJ+× šl:%WŸÉ%žÆ‹Ùù¯b$eiÚÄF…ˉ·ˆôÕÚ±ë×Ù{®AÚWÈZ%ÕŸKD¾š†¯gÿMtgÌÿõZ^$½u÷? D ¯èq[®Z(IÏ' ?_Æ,ü—*m,o03v«ùÌABúM½[ޖݹyhŽ7vÃx:<¤rJ-ÍLWKýH%éP×ÁúÂÖýPòÈÝ»•†mΰŠL :çOmï·´Û«§“êÝ×x>¥Š,¥ÍõŒØØr¦Œè_ÐHu›0¼6áÛÞxÚœŸþAïô’º'«éK6 2Ǻ¨NµY†XG èl¥ÝÆägæi8¹3íŠÂXTRZÀfÛûx(A·ƒN`ì¹`§o|fd¸ÓÖË ¤4X™öqh¼5#óA 鹡¡Ì›oÅœé«ÑÞË BÍ8Þq·ò8l@‘­3”d±j½­÷‘kƒd]DHÔíè‘òº¬8ÆõÈ‚n¢T}Ýy'Y˜ò aL{ãÇEqqBbîÙcoo´²ãm{°ÏL=4NêS^Ž5ÎÅ0I™QË*U0çë+â­Ìe¦#|g†.bHåelKZØcý6žõÁÏÎ'ôÏÆ3¾O6Â¥‘ÏFÈ´ß A‰èwjĬ0oAý©iÍñìÊ¥«±žsyÖÃÑáŽÑ6¾ÊŸ†àaJDaå…= ~þ B•“™™É† WÊ|a¬Ë–ÝöÖlà{Ó’´¬ï›7ÀÃÄC }»vÌÃ3XL¿D¶7ÿ$æ`é×ÿ8ÆãxIaAçm÷μÝÀ iï9ã;à úÒaKGC]QWXš—Çèl†Þ·»ÚûFúý–Î Ä2n“ÈEü%ÚgÔï“Ë!¢Àr£å w?Ar§Æ9Oq/A©ššD{.ß´tËñí·Òùµ iö2ñ­ê·³¸ C¦>‰ÙýY2ðà{îæ‡Ëí‹9}Vy*ûFN}O{;©‡:{yûÇý¿?1ö%;xœ:Kñ϶ñããm‘‹|2£""3G¿âö¸–(zì­g¸Ë4PcbTPƲ%¡ÇIÂ÷J,û tO©9'†q•¢Í¥ù …®ZDɇ‹ZG°¢á®öV;ÛW¯Žçq 7å&™ˆDŠˆÒêL­ B?G¼»f¤vWñø‰%á½ýv¥ÅÂàwPX®>Ršô"J¨Êm}‹ñŸðPD%&EEKí?6:šÔÅË•(Ú/ÐÇ5gïc\(¼@RE4kEU™×6Âü‚löXIÕÎ+fò‹Ë2ËÉwŽˆ´UºŽ°kø)ð~ûą뎦±Ãd„ hÀR¨Ñ›òÄñ‹°;%á‹ÿËËX¥%—xéD±‚E¬TŠ(ÑØ<@ˆñ€)†m}¬ÜœÎàS¬‹+#BzxµQ|L͈£Ct°ÝMY„+ŠÎ×§J¥Ôä[‡hCÇû¬Í]lWCzÛQdAf²W'"u¥¡£‡;ºþŽoPpÊ›ñÜÙü¨ÞlHŒvo Oˆ„ ÂFî(iÒÇ3ø Š-ÌVõT);…Öc t¡!{§”sz8£pcNº!‰H´TÔ^"G#zöîºý1™û"É4IA/¿ø ~O[BŽ Lî”5¿ÞÀóÒx¦66xkþyX3ÚO½^ó:~…“ÿ™Ñ ’Ѫ¦Ì(ÆU"úX)£ÍR]çZ3ðZJlïÏb/ÿv Þ€™›[‘˜™AB öhéh·±ãb f0—•¥³ôjHS: T²LfÎ@E³Åà÷P¤!;ñÏ\–u ñ†ÎˆVÎÚšÜËöÛ#ÙŽd½ÞdxÁ£3${UH·F,R˜ñJªŽn««¯k²LùˆýÇ•ó_åö«»ø€X£G¼ ëMMŒÃÑvìâ¹0ßn®6Á2ª€Öçåt‰ÝìÊ­;ÖÄ5¤ö&ó'Â~ÒGx™ Ì”Œ˜-»OÞMz|z_%gšZ¼döŽH/áü!Zs*úÒ£]ç\~ •bÐ2YµÉÑÉÃßÿMú=ø¯Ž+k2Ä1¸Åg¥êÔlr¾ý<7I’QOÉ‘ÜPW¡uÃþŽŸèævÁ:é˜íŒ4¾|%O ´½¢9GÔå–\ ^AUÐÛ`Ub)o¬clMf‡´¸ŒÒâª+ìZ¬‹ön§A?õ~kµ´ÕN'{••,ÉÚVÒ`ÌbòšLZ./ –‚àuª´¥¬ñc5é©"–²ä(¯/¬W›“½ðkDfl–¼™ëKS]‰XR[` !ÎïN<á>¹ÄÁß§ì4 ø¡óVcg[ÓtÒà·¡Kñ3Líl5U‘þ\% ¾#ÅY¦œü\~—ïÎTaSIÓÆÜÒÐ%]Fu²¶d´ò0'ÍÁò„Ȭ‚ȃäbß"¢¤¼Zkó‘æŽnþ½‹çQõ†êâÆX\/f=¡î`ááÄÓ^r§^ŠwéeKá<“ªÄÀïÁk×B •ß]ÖÒÈ´6ÔõI¤• 訩%ÛáK\“¼‹Ò)ŸT½6‹-(9bα'&¦§©Â’O_7R˜Jç‹Ýw­]}¥¸þpú(ðç(¸À#5x‘ˆbu 1Ι(?z{Y(‹§}K7hûhÀZ˜Ãåëó´Lº]ß?Úmxëàü FÁØ¿šÛò þŽŽ5d‡KAÔˆheÙÑ~²5\é,”æÖº>=£æ‹'/zS|¨¤ñ Š5êS+ˆ†‰ÌÉòÜŽ·¸³ñdÿdÇþùWcj>C6¤s²Ïþƒ¾z´ç£cö—§7‘jª6Õ—’ùPþÌÄ\ÅÿKžh endstream endobj 743 0 obj <>stream hÞbd`ad`ddpvwtwñÐvL) ®Ì‰‰ýæûíú{û¯ó¿ÚXÏðŸìþž+’á„+‚n&FF¦ |?Wÿ8øCC´mióꌕ¡;”z£,\»[s¾`ù{æC»÷ô¬ë™ÏÃÖ™_]X\šh?9u»ßå¥ßyWm>stream hÞTRiPgÞ ä í0ñ7¬ì®xa«”SQŽb¥Z¬H°( ÈrŒIªÆb*È‘% RAÁE±”Tx"U™ª£Œàˆ­àÑZ*¶?ÆŽãýÚ™®Nÿôç;ïs¼ÇCž2‚$IJ“ NXöé‡jý–U)Y¡!ẜ𰷠ÚM“îéÞª,¼ûMî›@9ÔM‚ï§ÔL—Ï™JÈH²£[#­¦üÜ< ˜= Y¼8„Së…,žÓZ;ÐÌ-7d &£`ÒYx}§.(à’ßÂÍ\2oæM[x½Ú”¯+àòÍœŽ³˜tz¾PgÚÄ 9\JÏ­ ‚Åjä9Íù‚K*ÈâL|n¾d`âõ\¾³HØ5Z.I21X8AÏ¥¬äVåäägóï*¾ÀÌoÍ“ÐAÿß ‰I@ñžÄ ‚XéAheD*IL•®BxÞ„šè ^ É­d/9HËæËt2§lÐc–‡Ö£Èã9V¦ü®š˜˜‹”ðg¥j€A=èl¿B¸óu¦|6ªÃyÔáε]^ÕèàêClø ¯÷Á‰L]ØßÐ2¨Êx­È®³Î/¶‰^É¥xîvÌøEÜJÔw³þÖ}¦ÚVmn0z=GÂÇiðõƒ÷Ï/q:Þ`Æ(½˜ @eVdåñÌÆ¬¤rmêl¿;X×»½ôMýéz/%ÌSõW+Ô?ܳ7ÑO`Æ `^ ÌEèR­_³"Ô†ý“‰‚ƒ‚iÝOÆÆºa„–®þ$*éx3Jи!™Úl/š‰=i<ÛQ§nÖƒ?ø÷^*Œ;ÂþZ_ÑTÖú¥Ó÷NzTC= ûjqfú±||fM «tª¿Î Ãu":gLk]AcUèlƒ—LÀ¤ÆŽá.¶a'¬¡:j |^¹fÌÁ˰Ì&¬ nƒEŒÒ QTáNcl &—²n¶ì}ƒâ÷p(ÿ“Èӆdÿž ¨=Æéóg­æãlóæ†Üê /%wG5ê>†Æ=G'ÂлRš )ÝeýªQhBUgŽžc\‡/6wÑO÷ÆéXülzmUß6µ1®côŽØu,~8 nE{%øãð2+scKªSMÇ¥òé+Þ‹FÊI° 9«:·3g»O^¡p,È`ñÀ(ÜS\s´[.0}…K®¡óbKcÖ²âDrÁJ¿gIW"óù¥ŸwéÁ¡–—Ùßµtƒ‡¤a¿~L&Äm^µÙ¨-‰×ú=SAô¸óÚÈýÕ˜Y,`o<%uN+Ä0Jûmɾ]­ÅØñ¦];™ÖGòÚ¢ÂÆ :Ѹ.{++GIqÔ8á#*µ¶+ ‰zhøé«øcxº‹]Ø”SwÑïúƒ}.×@Yô~æéùÙÒí/±ô¼)Ë—Eaâ…qdûãyÍU¤óËÖGêÎ –0ʨ¡Äâbæh=ÏBßè@¬P„}!ÇÔg ·q·"ÂÊSG÷î®›0ÈQ=F°Ö}P‚°–Xl¹ÅÙ¾"*;±Ëi½‚=à–Oô"ˆT=G¹gÊ«‘XUVUÁØv7$VÑñmù‚E’@ Å=biù¶ò¯|‹7ÙwVy‰È~H¬+n«¬)?RQ W}BP$î«´‹_ÛK|Å«¦RÜÕb»l¯-kö‰„y°duy Sÿ 0$¼PÐ endstream endobj 745 0 obj <>stream hÞD{PTuÇËr—/`Þ•ö7Ý»32àÀÒŒ e¼S@’HY‘W |¤`’îÞÝË â+ÄC FS™‚œ0jÓ Ë A™|4s®üvš–™f:ï9ß3ß9rvB*•Ê3*6"vÅ{þÛJÖ¬^=7Ô(ÄMCÃèÁÙ—-Ì û_žU³3óç6®ÿû厊DÑhŠC+Ñ*P"Zƒ’ÐZ”‚Ö!OGrvØ|Pz¢ Sµ«þprsâŠÎ;©õê4õIõÝ‹Ój@ nT9ݸò:ï®a·9ÿ×q¢k*z¤Á£ZT0õRÃÞf¡§àíúH’]¶%CÌÏ6e™ ]¦p­õÈÓ¤©ó`Ñ9ñìNKA¼VÎÿØZLÒ—™ò>#6ï[•® ¹½ Ø®¡£cW…B¹¸ºH(oŽ‘v”d»d3wÈ[¥½-Ï`‘¥£þ”d>#rà¬dÃo¾`êÜÞíÒ»ñÝêâKÄÓŒEÍ)ÍYâû_߯h%à1<:S%êqª¹ qñ-zü¼Ãþ ™¬5ÊâÜ•°Ÿ“€î$ù‰¦lƒž\ºXKƒïúAÐÓ›uBû—¶ÎÊF—u057xo¾÷Bm,òÈå~.5¾Iäîg𱶪ØH~œ9ök—XÛa»nZ+ Ê“Ì,­`Ηn¿éC¨»o}'îT\÷:ñî×Hó´<~E¤Ä¬§ ƒŠ»ú  ‚WxÊŸÝ»sÜàÕî+{ ÅÆÂS™«µKö” yÆÜÒdÂ=ÔLÃ9|ÑòÕé BÃɶîŸ ‹ß&‘Þ| ƒìpEÃZ¡?ù¹Ÿ—ò‘×ô,§Sì<àãмySc­t‚À|ùÙuQ¹`oe—íÞY)pº ÍÔËŒÌ)}¿;r:p‹µóó/„ÏŽ·]¹CFÚ ñ"}0 ­l¥·î¢pö䥶~r½¥ÄxZ¬ÙtWš–Þ† Sçæ(ªÞºrÇáòî¬o©šlŽ­7ˆÃzVŽc¸IÍtá§ßßj¹Tnlê¶¼-ýù1L±ð&}ãÌ&Š3cJÊi” ÀÖ$†ë3O}G)†0X>óÀ÷ïMD7ÒõIÔ‡z3U<>éøîá­•Ô“ú‡­‹Ö¥M?¸4™VœÖôMÞ0q€UB"$xP´5¤,|ƒhgôX6XËvj'èjþª‚ÁÔM™‡¢2S…´Üõ‡Š õú<ûEÎôÈA¥ÿv~ÔÇk,RµP-UIGÌ.²{­%Ö‡·|šhÜc~â¥Ç•9rV¶–»¯H<`ߊ@­½mgy)3ƒ¥ æ¾cZEïG/³E–m%yBzAÚÞ Ä¿üö ~a9%é„ãÂìj •@pµ2€0Ä(ã‡é|»ŽbEÇPwL_³{ÓyŠ7Ã)³ /þ_<Ï÷" endstream endobj 746 0 obj <>stream hÞlÁJÃ@†³Añ"-*zP‘9*–$/íAB¥"ô²M&Íb³[v'- ž¼ö=|¯¾†àCx3"¸éɃs›ÿŸ>†y¾ÇÛëö¢^ïúæÒÂÃß7¹¹ò|Æüf£zªúåóþëÏÉÝVãW€¿?sª endstream endobj 747 0 obj <>stream hÞ\N_HqÿäŽLÎÊ]ÑNî®2l-ÿÎ,¦áœTÚ–PjkλmrÛnnCYôP/Q AP:Ìй™:·sKA¨È$Òf%Do>ô;ý½t>TÒ÷ ߇ÏçûùƒmYð½õFƒ±ÁtØÀõ6ŸsTu•ëõö2]Ý&¥‘)L.ÈÝs=ßÈߨ͆ú>stream hÞ”xyTW·/ U…CÀ!¥XeªÚ)1ÆgDDE‘AP˜Ç†š¡«AfTQfèfžQDQ$"ÎÅÙÄÄÄ›|j¢Ñ$_vqOç®w ó¾õ­÷îzëÝÕ@ŸaŸßÞç·gïÖ×m §¯¯?Éb«ùÖMŸ™{EÚ9,_mj¹TeEV_œ>~Ê*”ôŸ1ÃxƒjbÎt¶k’ž¾þ‘ Eˆæïë.›ç9_fî¥ðð–9Êpï ¥Ì*ØS¢s÷öZ$3—Ëe#+•²0o¥wX¤·—£·Rfã%Û¥r–ù+eîxÒ×ïóö’…‡¹{y¹‡Ê>²p?oÙNE°"\ñ–YümØ_, ‘{þh=}½Ñ”ÞGÆz²ézôô̽ }=GiXÏK奄þ¯S 6„|?Êx3jɨͣjõz´éh—ÑÅ£!ÆADñšüœŒ£|¨s†Ÿžc<ÆyÌ…±SÇn«ûjÜìqIãÇOï3¾ÿ£™e}tÓÈÄÈÃè©ñAãóÆï'¦MØ4¡c¢ÑÄ]¯L=i㤓M''L¾ÿ±åÇ*z­ [¦ÐSäSº§Îœê8µiê;w“ÇÓL§ùM»ÁÌÓ}d°_L¦ÑR[˜Cú mÒ³ý™ô@{‰kd;ì%Àóß¿,¹†æ§`z×â!ÂO»Èóï/à è3žäi¼ÎÔÃrZN!½DËK˜µ}V`dÅ¡^jcæ†kÉ?ªÐl²_y9þöQC릛ŒÉ}òàsÇûºe·¼€|êaò sæ,C-,$ªlK÷f6Qrô%½ª'êü)¦·£ãúq® ýEÿhß칋Ùáêlωöâ0£ÑäÇ._^zÒSÁØâ²½óš}h*×?ô«{/tWïAúHO¹ÇÕEÙ zœî ¼—68ã çþ6ˆí`EëÂþ’¤6,'ŒÄO†=Ä]4òÈÆ£¥‘̹…ë.Îù‘õõ÷g/ß|È Øõ˜-²°øÂ)ß­ÞC³×ÙZ|Î,¹oõæÛ¡ÆÁ{ܦ¡sÊ~öÁ+ÏŠøèÂ=1 Ø‹Ýs nÐŽüªá·––úzmns†¡Ž9N‡^H8ÓÍ\«;y®«Ño÷ÎužÜ#ô˜öòrTîc·Ùݼ?Ô~õÁ)þÔÆks.[Én‰Nô›“ç{3ýþû|¡þÁÕÊ®¢ $ÍËIŒßä°.„7:CÃî42_þ)2C òzƒ–ÃæÏ8-…Œî:€ ˆ½ <ß猖 _ÌxÀƒ¯ù°mþ™(0²ìC3Pƒb‡Œ7qF-ÒNH¯h;£ÒF—_j¼×ØË¥î•ïwcBµUšÊº6ù•ôNÎçËÆí=¬¶´´üïÚÈ_­{w¤Ÿ)SkT·œ\¶p™_Öµô15BEd¤*BÉ9ŸðÙÅ´YGÜØËF©££vÂøÜ3ØÙ ´æo¯üËãð†‚ܬ¬.óxvfö;é_~wB ½ÒŸRF2˜þ -SÊå5ʦ¦êê¦&eµœ7ú ¥Èþ¥ Hü¿‚0j†Ÿi”2üó9L}9p M½Ï£ 3Q&÷ómûýÙ/5h.Ú‚B=g­^ „…`Žƒá+vÐ:{Ê!>t#'@ž–ÚU2È‹oUZ¹&?šÈ×jrŠÙú¼ÞhPÌ¥ï7=y“í{î6ڌƣc(ŒÄÔø˜P‘^‘Á1¶, %!Ôƒï€`Þ¬|6[f· MQpFÏÅvº¯¾­®—ýêÂ>«MŽ[æâULÌZ7ŸYçd»Û*¿àÌF ‚* M5Ëø¸çn·ÖàoõUw\fžn»¶l‰­Ý2l ž ÛÐh@ç@¬‡dþÌ_>X$:QË‘^¡$Òü†-h4 0? f®D³˜Õ–f¹-ÂEgVˆ‰Vù^ ¾ ³a"ŒØ9ïÑÆþÜ[§žàDrÞEû‘h=:€¶¢tdúƒ1?>LÊâÛy{Ý¢}]ùN°Á™ŠýH7Dýèºñl]þIö}-2^¶ÐÝÚjV¬ü®.£"ç$oô;´}¡I!®¶ž¬îeñIèÀ_zD? ¡Ã6X§á7zöjùÁíÌÂçf ÷ç³Goºõ!ýÜ/WÛ{®2_¯š?gæŖ­Ž?ZsŽàO_;ßu}¨ãàFûP-ÎÜü{Š‹í Äë¶ÐÖήV›œn¼¸UÓ݉ûcYQO<}’„õp¶@:˜.‚ È‹‘šŽ¨{«Þöt–¶vónÈMEš˜fýðt0$Á Æ/^wÜø½­4 ILñÃäþZ\EËkÂ0?kFø)ñ•ëCþâþA+Þú¿íåŠú˜°/Ìî|¾pƒÕj¯:¿&mYyWxª‚i9s¢ýf—ÝJÄ ý­¥È”Ó’Ž·Üù–ûꛊs·¤Ò£ÿЋbëðfQAoˆÙM¤’‡«çÇÇ(ó”¬Ó––¼ƒ¥ïÒ-Œu›óÅ–ö²–Ó\]µ¦ìDgFªIJ@jt$s°6üÂÕµíÜÀWíÿüW4¦#/T€Üª@é`…¬!LÀ¸÷Ísî̹ª¶ò›† m4G3 -, GKa¨`Òy0~öü·ß…Ñ,ì„©h"Ú¼XþÅîí¼‡¿s°7­)/?^Ÿw‚oüƒ@$XÐ'k‚<â]gþg¨‡¡o@ ÄÊC›N_>ýæâ]¾ïÌÉÚ“,~ÄiX5ito-•[Ê4\´”khicnF~Vd4’—ÐX"?"36Ž‘‡ªpiœÔ’û"ón)xtWÜOƒj&ÐQœ^í˜Îõò¸Ü”×m¤,’}¥cyIÁÚ?¾z¶sèó>ƒzRÖ}åƒw}tMäxÒYµšÌ öåkÓ ;mÖ† ynü¾Ñåé%,?µý|™•ݼ ˆ¬xÈEË48à€š€ÌùÆZ£±¼V:Çø5 ?¡Ò*MÃ6o Ô³Œò`{+éO°ºªmü6_—Æ5þ8ra”­*d-Þ}]Km -ärOâ‹ú6½"ÔFšÝ¦ŠZ‰gïh©µJ<‹mßo*¹/Ù¾C]¼öëôÊP[Fw€Ú¨ádühÃ*""‚ÝÎËúfò"IÝ®¨z$íºFIáq‘Þ‡lìLÓ&F2R`6q P÷JàUƒ8éÕJk :tFpCK­Œm¹ÄC<)(‘¨ ÍNŠaÂ#â¼ñäŸÒùjüŒòḠL¢ïvk«aGá)VºÙé°ƒVçÈÈÙ)â3ÉÈ „üF^Lù.‘ï34ŽÒ‰vê øÚÅ.ŒUŽ”°¦è*ÑQ±’Š»ÇIUþØ_Ê^%_#Ñ#EK­Oª¯3¢<ƒî>¡%A#Þ'2täîß™ngIjüé ŒNݨ¬}Нa$=’ù¡Žì/‰´çu‹(˜E }˜…g"íZyš² S¬“ÎI×R›ÒBjï3¢9%Æé.Åâ#òû¼‚{\fÄ'§¤Zľ@Ë`7þ,†eà‚Eq1NÖÝøóZŽ\9˜8œ~€Iø!þ?ÑNhÏ2üg:š¾îÁÏ{DÃ7tô¥3Éí,L~ý ~tÇ"£ˆæ1ÈÇÁvRœ¼—¥¸— ‰u £óꪲªØܶúb™½íòÐãE¼T ½t5?cîýÝ¿Âø:\C~ »˜ÿëOÐT Ü‚ïÀŒcu§ÅVúÿ ËëJxN؆+·¾eÞñãЯy¿2Ø™×ÅQ®Ñþ#ÉÑ«¥LScÏœg@1@A!zHÀV-é˜íÖ°û+Cô‡X@7—eÕ²ßîXµÀÌ MâX,Dß‘DKŒ‹SûxŸZÅ"Ó Ÿº•ìoõå»]a®Õ€•amhQœ±vÜo†ˆÏ`T$' µ–¬Î/*Оìõ{Á˜WßýÑ)t»wðVhéýƒg #+âÊš™¾Þ®Ÿ¾^%+àÊ$ýæá©´î$µ;Æeú‡”ܨ½Î‹@POZÝ-󰺆ńîwò0ZŒYv/»óÌmöoqýGFað2}M!îùl\hX½Â¢1“ƒ_¨ÊÊï$’g ÔãÌZ…ƒ^Phî¦h2ÞþàONC V— ¥ÈOxU8ò¼Ü8Rub5Ò=0)#aŸX…a4·÷dNÓ"o:ŸZÌ$¤&‰çÐrÝZ´Hœ@Ä5$4h™Ú¢+i#ôXêKÍkØ !ºW&¥$,·ÃZÝvu{[~®j8›Žmº TWÝ!¹:-1ú LtcРрˆoH©Õ2•¥ç21ºZºtD[eÝ6Ç—NWqá€xq*‘P¤¨”©//iO9÷“¢‘so¥Ö }f`’MÐ6H˜ZúFû²Dh©ýiQ…µLqN¾¶’SpÙÚð\AÒ”Ø8úýZê@HÁg¹ÃiX»®Ýo®ë=‚‘Æc¤éU‡B™Ø”ØØh·9ë‘!¬ b*’4EL]mAçÃǤ܎È®º¤È˜Ø'Wwîè3ˆ""›ãk4LYqî-ìV¿@õj’ìÛxðC_Èœ²B–IOK­“$(\”g¿´–õI‚ö[N@$¡1(ª+"Hë_cAü‘j‚„šD†¡J¤Ç"Ü ú›¸­É—¹ü×p9‹Æ ÷À8ÒHVŒÇ¸¿zиƒàòŸS¤öÇW,óýöíÙÀØ·¸o­¯miPVs‘ñ1‰lbJ^Á¹Æ¾§u8·U?ÐÁ!ª¸(62©¨…‡Bê;×¶9HÏbŸe˜F][Uª©ærÒŠ²™Žª¦/oׄ¬æÜpBT¹GíUú©Ta†*e¢2±îré¿ÔSsõ:·ûpSÐi¶µ®¬ï",›h?Ï€Ö= õ\{ ÌèÇo¿Åñ­;FyÜìúXøF!| MßͲsUX{ð©ð=.¶fØç¨3Ò3Ó³Ó§¥geËb;rvðϰn«/jcŸßX+µó;V¬÷ðÖ¶`º&.„m´EÄ^KvNã ¿]ºó´V“[Ä×…ÄzkÔ† ùš”¶¾¼´êŠÙ%S4má,4ñßÏ…q?>¾D½Ntžª)4Û&W}<3;#Ku,›­/ŽÂ¼žIÕøæ{±XÄôqI#Cš —:ËÏwñÛ)Xy%¹”8›œšÀ$”ÝæW弄”Ñ~ìÒÍÿÀÍ’Þµ.\ôq)ä³¢3Ô‘ F̓mvÀך½\£rx$aÔæG³Ð„Usq†¯øyï/‡À ’C·a1}ïøÙ WÙ«§˜eâ¦÷¤èEËo£‡Ôz!Æ3.7¢êâ§<<|Õô9èS·‹ÎörwŽ-ëe+ÊÊË;mÏl›¿r%ÃïÅ:1,î¢Ëó¼ØÙë7/²krîUð”þLDitK<·bebD8³ïõ¾×¸Ëûèû77w´-áf‘6Q¹¥EåuÕ|röhûîÞÀ«æäjU,ÍÈ(àµTñÑ Cóu»èßšc|w™¹Í]¾ºª§¦¸¶©…O®¼öŠÅuÔ?éËMmgÖÏÞc´ßm nq#ü¸KãÇÙL­vÀþÄi©BÑ×<¤Pg϶hÛÙóÍ{yB­SrÄó1ZÊ^(yƒõÞ¥oón;߸Tx‰)4Ë6G“™õBÒ 6E:áfê ¼¡Q,µYˆpŠô-¹'#¦â.#ê â÷äDFVfF&›ž™…yw¢$Ô›…ÇtpUx}CUUC}xU°"<wÒ2ÌÝŸh)åïéÇÉ£.dÃUªðàS‘=@Ýø>㎘Is÷æ˜I铲%-…î| |÷ߘ‹÷â3ZL­‰Š“ÜÇîEI×9W&3ТàPv|Ÿ™†§•ZÊ%Xó[x4V¾}ÕÝuªj0+œ»@U%Å&NŠãÑ,4÷c$3sÔ£1’²Yⳑì­8Dë¼(3!Z¢VV§˜Š!^üÇB†HddgI±È’bÑTá‚UÃþ%¼¢‘šZ§>dƒ÷Äj)ÇTUnUŽP§O­:Åö4¸íᑵV»/Høßw´*JíH;ÎnºPÝÎv78òHN­ŠJ°ÿÛUArߤkŸùö=>;\¹ÁÏÖÛ9jãVþ5ö`ÁžãX²3rp,srp,›4¡nRâþ"ýü—HÙ ÙzSk)»tuù=©ó­ågØî&ý< ¦¶Å‡X¦ÿ:#º|ˆ?êÏ¡ÕN>á·po¤Ìw<®’2?;cä¾r؆‚`ùˆ8dÃ1ŒgÿŸF£ÐXÄ¡ßÍ#\ä‚q0ƒ[âŽÇ÷n2›³&£.Ü}üãৈ‘.öWøUúÁÈ2>ÔB:?ÑÚÇO›@>õÎA–ñìÌÆ}@2OØÍ]Àµ®o^Te×îñ‹çI?ÊÈã1 ÆÇWî±y÷•g œ-® ³2gæjÎGu³=oZ߉n¯âw]Y_àt ‹y‚¶š9ÑZ{¶¿ËÙ¼€Ó F:À}ä'¦-¾DuH`¡»há´9_+ÿ="WF$ÿý²Û©Š±Š>ôˆÚ³ãà 6Ñxt5ü‰+ÃßÈÁÒîsܥܕçØÂ‚œ¢l>w–G?Æœþ_ @ìmÕ endstream endobj 749 0 obj <>stream hÞLWiXS×Öê9Ä)Uk,œÓž[¬­C±Z[µÅ©ëΈÌ$$$ÌóÉœ0„0É$ˆ#(ÒŠb­ÖÖZµ·ŸSmµ½µóÝ¡›ïù¾Ú÷á'{íµÞõ¾k½;‚5j+""bÒò÷ãß_¶bV|zɇ›æ/Z¸2.üßCdDèÅqS`%Ôþu{p+òžU]/>?fkDD„Í¿\P(æde‹y±i3yó-šË‹OìÍàm’‰Äù"Þš‚4°P Lg¤ÏæÅóù¼áŸ‹x Q†°$#}sN~†ˆ—˜!ámä§ðrD¼Tô1+f¤óÄÂÔôŒüTaOÉÛœÁKIJ Þòç x…ü´ÿJÁÁ?–ED°bF°bY¬Y,Ö쑬¸Ö‚ÖÛ,Ö2kÎJÅÚ4еÅzaÀÅz‹•ɲ±*XYýã"VGTF<AÈqzÄÑ F¦ì5mT+Fb2ìw|^99²–ý»ýÃè¬Ñ7ÇL³ «GŽ«ǯÿ-§ÿ¹ÏÙŸ MX3áÊÄ©ƒCã9¡=ƒ©ÜÔ‚¥IKyì ï,10•€ÑÝprS*pc6“›!„w˯}C¶’_ïPœ.¸‡ÛÕvûÌ×ÿazç6ˆ© RÁda7%×auÔ½7•€nƒÅ3Sž>ϽÛÑÿÙ%¢µ´_$ nµOEùUŠPêsWäRœ”nÐÄ] lw"9<ðÜQn‹¸Q ‹ Å­­ ­g(E©Â¼ÿ`8È`œPah=¬y{`-L€Ø·Âè³/ÿ$6è‹©÷rdCºðMjaÑÈG.±þ^ &sš¯Ó_4‘÷É;VÈÓœÐìÁ÷¹¥8LÜé.ÅJG€¬nT z‘ANÈ¡‰_–=›dd¨ÃA¬(ÉÚp7Øœèì$Å•â;„‚²µ$\ŠWUØíû[ÙÀ 4×?‘ÄŸ N-…£“§æ•Qø©Î‡ÉËgw,™ý*dó诛Lz½V°!ü'œžEp¿½bs·Ç'ÈäÎú º6Wæ‘’B… éWk ˜F‚±€¸‘Ý¿ú=PóìÄ3âFâ™%±{—òåT@‡Õø:O#{zsá$¸-{e)\ÆÍ‡â†6IWcÀˆo‰Ø]¼$bñÚϱù8lž:ÀyÆÏ!p‹r¡ Z p™ë³bˆéË_ž'’ù¼jJZ…$¥%™«”íº¤ìÓÀt@ƒW„7ÖõЩûwºEŽ#÷£@Î 9´ðHÜm0›x­N0 ŒSљȥŸ½³7O®–Pf&Ø|èü¥sÑß~s½ö˜ ŸÂ¸þêöúcä¹®-ïÂQáüiæö_½¶ïñɨ ªp‚?ãKàL¬8Üêú’ 8|2ôè¨$4epÆ©VrÁÉã`гå7ˆC.Œ„Óàt8òÚº{½mÕþzŠ1¯†Œ@“ó¢Ámp’«(rÉÔüx,¬'VÈ’ÍΜ·žæ¤€—=‹ÿ‹ž ˆž䶆I[,6ˆi[(x:è\Å•àe…\Fêt6W1H*ví a,ƒ; Æ NïþDžØº_±cÑ–¹d Œ¼ f]à nñáX¹EcÑÐAéK•S@+þÙEë‘G4˜5ðÌ30zý£…]T{ÂFk å¸A†Õžµn-ÕèD4Ćh‹Ñ¬µX¢—‰Ê3ãÈ{ŵy+m5$H±Â ;a |ÆÂÂÒ4k§ßUÏ fƒîÁÝä!O8–o8mݦ4©´´YoÑ› (&/ʬ×äìxÑkNX¡“øeÄ) .Ó­ƒL"ßÇ•¹ÖNãb¼ô—ÀŒÝÇ|lÝXbËéZü*ÐaR¼H#ZK.Ào Dã_\/VYtfÀÃf®äÊuJY1Yfd©´·$Í“JB1Â/òá[`4Œ ÏÜõw~E_|ì|M ús©vázÖ{š"QgéÄt œƒ)rò4YdìÒ;€¶" AÖ½/·/)6*Le(¡A&Æmƒ3¸‡û‡ËÕÐ&c¹ÅLÅÂgØLAÁ²õ¤XUSé±;<ÚëõVTykNº8/sý¹Ü3'ÎÖœê£úúªújƒ/¢—·Ùhüâc{3ã FÁnÔ¾Ð_ÇÃÜÝ€Mj_jÇàÆ0ÂM'-™4Œbó ¹sI”;Pà® &Þhí­´Uúh0!4cðKCýˆô¡é¡~Æ Ç½Á‘yÅås†O\ ŸÈM¶ž®f¼U½4ÀBö¤¥¦í1‰ˆþ ß¼6|ÝÁ³–µ4$†r,FµÀPŠˆ±ÉšGÊ€0A'L²öù_Õ)Œ -DWùÐ5¬o„>Â6Uv~K¡4Åqãg¬ÉrM–¡”ž:43‡ :È„¶pÁ„xÔš7¡&C?L1ObÑ `yo?d¼wÃñåà¥ð2n‚Ýßw½= i§\¸úúNM‰>E~"ôßBÎ~Ú·'׊”®¢-Ü%³¦l ñ!žYg1–e WÂ'ÑWÐÖ9ÉÖ¾*Æá;F3m40-¤ã2z¦ž<ߟ¿h꼕oò¬UÙˆñOCeàLßöÁMbŸúÛB…¯ã“Pù· ?±&—™5š|Úl@*Ї¯RlÇ–‰’­»†ï<¾³Ýôu:kéO@²ß41Gƒ9ð_ˆCýYÍ”*›Bí\¦ª†©%[¿ÕÄ,Ý6¾PXb·+P&’Á1ˆöR\X.QJHU©Óf¢ë6gVm%çBö™Ô²Œz…¾¾öDÚ"~ÍÆ·ÖñºÀ„F¦š© ¤x2´bA¼¹*ÜG:=] ]p­N{™s¿þùɽÎÅЯ=à·ž&ú{O}=ð[Út©¹Ì\N —ÁçûÝxÃëÖ2‹Q•:3Ö‚A¢)ÈLŒ^“ºZ´‰ü`þŸzÚ=ûé»`¿Íémq¢¯ïë³v“ˆð|XyQ% ‘þOˆeÐ…©Òõ%éDÜ8Ęp¾¦:NWŸrÖ>}QÇ©9ÕQ×cw!¹d€‹aÒn—áûš5E‰Ðd¤áÝ¡Ef¦5´Ðy-à½éˆÂvYäc³i9=}è~T­õu»|ã‚#:ÜÕÂp„ãá:ñ&ñâ&ú”%¡h1˜ôfbI‘šÿêpó.…›—Èﳺýô)´=bAc÷WÙíÑuÍýWN¶±kš‚¶ºáùRޏ¿Ëš[®WÐðm˜µ`f·Ñ_M|tÎÚ@¡ÅÚÅ]¬’ˆ„Ñ«ËjÌ%áD¸&Á77ïßpîþÝŸN¡³Ù Ê2k£u…¹š(ª”5½|èÚQJáÃvH¤^çòû·»‘Î3¹ Eq0r)Ió_þþPü{Ãae‚ÜT¤М ¡0Š+.Ý’¸ŠÜœÞ{íÇGÈ·áU­:‘¹ =m¶hu Û`Е—’€"ØÜÜrôÌ®æø2œ —ÃW–ž\õàÞÀ™ §PêŸ!Ë…\Ñë…6f 2VÙZc)Ò!Úëh]1fÖ‡›º®ÄºóS­z¾ç#©ÏÜÒ¶òÂ7?€ú£ÊÄK0ƒ\_,&JªÄ-/¿ØM)+±´Â,>ªJïôVºmhL€<¸{Év˹…üÍúÇÁ.eʆ~ç ¶¥m ¥ó=€Õd¯°WÐ@âù Œé'zRöo†q0 n€ÔªÞå~¼óU{€Ë½Y}L{H¨*’ìJ[³&N“¦²Ll´Ä]¡\0õèQ0ê!YQ¡SÓ&½ÖL´F½†(­TÖ4ÔÕ5M f@Î2øZB>µQƒ¶ª†=Æß†7•[ù¥Î,ÎÞÁOÓJH½ÆîrØí6ÍØ¼>ÆÆ¶;ln;Q¡ª.JKJ Ú$]?==ÐE}ú¤pëï{¢®áÞvd³<¡÷¸0 ÷)µ;É0âÝ¥Öå¿åÑI)¢4BT­öê)8:ÞÊ—|³÷0éÉ¥ÿùzFS–—Ú]‘ï–»Ù§Îí%êŽ5tø(0Æñ¯{ˆc¥¡’º‹„€{@UiìQ³{ÊoÈ’‰U±ÅI«WµŸë?ÙÙÑ@ðŒ»<Ž^¶UqºéP3ˆùáhŸ‰foïßI„Éj"ý­ÖB¥I­É£áÒ¡o±›xí•}÷j»Žžn Þ?%++UÅ*‹QËGÆÀŒ`L€|L/5HKIEqËǺ[)…+-ß“$#õ··ÂæðA«:³û½Ú‰ÃüñüW »Ù@ŒÃ»…@1 #Þl·yÉfŸT©6kÑvYmÿpÎ(3i¤„Ä•ß~âB÷ÕJîöääHµ¤Z‹V²Í᪣ÿ a˜?^~L»5q òeè1ÁWPrÆŠ1i$Sá·UM.‰–6™”(¸Å`1PpúSl3ÊJ£5óØ¥/ô{(¹W¯Å„%Ù™ Ò¨wxƒ® ï ^«ùHä°W`‘ŒÇÇT“íL‰ í ]1=þˆÝÂ+zê¿ô9öEôùC÷Á¸‹dE¥Z&,ß‹”´žF ¶ýânî¹Î¾Õû ˜p™¬ò–ÉK bäY’áZL¾Ñ$)!²ÚŒ®ã?éë¤Ê*0ƒiǺbÒ€pTzšéË@Œ9뵵ąTwù«<8ŽHDh6ÝÇ‚—ìMD…¹óËHbÉ%à ƒ¢¿Sž-D)»['ÙìRªÐÀWgѳÕl±¼DÝÂnÛlŒÛf3ŽWÀâ~Ò[©•*å¨!«a9¦Î6+•„ ¦´~àÚ/n'¥¨ÀÊ´»·„Ý®³Âo÷¹éKÈ“¹öyš[‰cº‚¸™0úŸF‡RÁyîw«/,G†|:\©­ýäó^á±Ýçé܇ˆ–¦Öý]©o„| 8º‚Œ…Åb2Zˆü=É«•銣nâóàç˜^l(•{[U5GÎ5?èGNÂb2Y,”L‘±K@*-•ãq·Ð߃Ø5ÜÓŽ­DŽ!íOnnq~n)j¹×]éj¶ûéŸÀì=\´ƒÓÒ` ŒßDªÊ¼ÕAÄ3} ˜0Æëª­#öIƒ%‰–gK©*5Ö¹¯~#éôå*‹‘+æ`ê,½PB¤W ºFŒÈ®õ¢×šl=¦ÊRnÉ!”N~ÇÅËßUûÂ+â}y˸_Á‚‡D{I_,)+¼ehzÚ-~cf;MnœØ¹²æN§,`†Pü+ŒB‚uyl>²±Þ #ªéŠ…Nˆ™ ‡Íð×Òj:%> c ¢œ2”uSEž·oˆwÐxU«Ù»M­ŽV(Sö*I½Ñm· òèª- Ûm,·ZÈ"¡@$©•Õ:ÚÒ{‚¾}Œ¼ËOÙÏÀ ëâã‚ZQ‰¤´PR%÷¨–r‡EMÄÃwaF™­^ÓäÐxîÿ 0‡é~ endstream endobj 750 0 obj <>stream hÞ BPàÿÿ‹zr§äs“sC$æH/cFÏ·oß÷mÛÖu]–ežçišàBø¿ã8~†aèû¾ëº¶m›¦®ë7RU¯²,Šâ™çy–eiš&IÇqEaAàûÄó<×uDZÛ²-Ó2 ÃÐu]Ó4UUTQdY–$IEAîÏß®Žã.–e†¦iŠ¢H’$?cÀ§Ã_€šmŸÐ endstream endobj 751 0 obj <>stream hÞLU{TÙž w¤]Õšm™±3iíµžº²Êª¨ÛETX¨€ø€ ¯á‘„LÈ’@Báiƒ ‚&>€µD\qWÔÕ­ºnu]«}l÷´§ç½ôœ¸§Û¿¹ß|¿ïûîïò°™aÇ›·q˲˜Õ®¤UkWoŽšª.dI»pöÛ¨Uÿ{xB `Æ\hœW»0Ü3 ãñ̇cer­B’›§.É^*Œ\»v…0&G–%&i¥¸ˆ~$Í–)ä2E¦Rœ³\SX(œþœ*ÄŒX¡ç$KŠÄŒ0A¬&ÊŠ2¥B #Ì*™9â¢LEPvH˜œ'îIeJ­\,ŒýM"“ å…ÙÿÇãa$†-âaË1l%†mİMaX|¶‡íäaI307)6‹ÄŽbæåòž†Å‡Ùf„ÍH›‰Í,™9 ÞZð W㣳ø³ “søá6]ž››žÞ—Ûßß××ߟۗN¯D£ßó¸bï›"ž‡ ±›\wvè S•½¼B¿œ,3f2Š”ª®¿Ãáþq8ûÉ«uC+|´k\ÐöíØß‰g/#•-pÖ×:ëÈ‘ÞüÄõÉBô‹:Ú”#pÖÕv“O{Ó·­H^„ÂU §ËÈýîõÄÀÄn×™J+´™©Ç#IT…ô( £¹OP4”È¿\…áwiµ=º`‰æÄ|“à2¨‡›Ÿ' ^-ÝŠóYvâ%GýgÒËZªÀmÚKÕeíòôΤS·+]$²M³—à5­@ä’w Ÿ«©¦…‚o³"àŸM~ Úpv ûÀå@Ää!í6}ñ6Çô‘ûSG’ò¦nÂ[í«õS`óÚïmvEpn Ö ÿ*€þ±o¯×#œB9`ÌÕZ.!Ê* †šÝnVÆ[§AïLî²—´ô^WSm;5KÀIô5€)\s·ÓÔÎÜ@«ØÓgÛYOÞ fn_´éƒ¥F£Óe¦ù¬‘M y¸a/pà¡*eG6¹E¡èÃßõŠ®^ìƒóoÒ.0ì³käDv@9xkèÂ=”Îr4J¥š4Uxª;ë»h´9M`0˜­¥¤¦¬íĽÐð ÝWœ»s7ZžœLóo°?…á‚ìì,õAr_Aðæ‹[0ñ»V¯ÅH§ÙrI Øs¦ÿRNÏNôŠE¿B["Gv3~õÔ?§øì§‰œÇ(NjÕ€.{«NE”W*MT*ŠÚ“O¢¹ˆF hMìiŽø¥œ?:E\Ÿf•–Ç•ýcWÏ<=KêAz±N¯"¯ýHƒ·N€&AüôHDéõ¥åFRmj9ñê°xüX³ªpŠ9€]‚`Ð:M\,êLAKÐûh5Ú°êÒçï^x8J}à@jFI*¹_Öw«á°×ÕHW¿è¼q#üœ+HSî‹)¹\]‘d ‡ÂЭ'gÈ&·IÅ©”Ý$@?ÃÛ$ŠÚ 1‘ëöÄŸHé¨&7‡6•ôª¨˜Ò„ü}DÒÕT¸’ϯ¿¼žÜä§–r·¡±‘hð6ô¶P6ƒÃO°¯ï¿>stream hÞìÁÅÂPEÁàî®ÁÜé¿,ºøwqÞŒçcŒ1ƵL&‡IÀ$ER"i‘ŒH&“‡)ÀaJ0e˜ L¦S‡iÀ4aZ0m˜ŽH¦'Ò‡ˆ a|‘ÌXd3™'æ0 ‘¥qb%²Ùˆlav"{˜ƒH ŠEN0g˜‹ÈUäs‡yÀ>stream ÿØÿîAdobed€ÿÛ„      ÿÀT4ÿÄ¢  s!1AQa"q2‘¡±B#ÁRÑá3bð$r‚ñ%C4S’¢²csÂ5D'“£³6TdtÃÒâ&ƒ „”EF¤´VÓU(òãóÄÔäôeu…•¥µÅÕåõfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷8HXhxˆ˜¨¸ÈØèø)9IYiy‰™©¹ÉÙéù*:JZjzŠšªºÊÚêúm!1AQa"q‘2¡±ðÁÑá#BRbrñ3$4C‚’S%¢c²ÂsÒ5âDƒT“ &6E'dtU7ò£³Ã()Óã󄔤´ÄÔäôeu…•¥µÅÕåõFVfv†–¦¶ÆÖæöGWgw‡—§·Ç×ç÷8HXhxˆ˜¨¸ÈØèø9IYiy‰™©¹ÉÙéù*:JZjzŠšªºÊÚêúÿÚ ?ûùŠ»v*–kZ½–£jÚî£'¥§è¶SßßÊxÃmK!§²©ÅT|»®Øy£Ëú™´§2i~aÓíµ=:F-ÜK4dŽÄ«ŒU9Å]Š 5=WKÑl¦ÔµJ×IÓ­Ån/ï&H!@vø¤ª¤â¯3ºüõü¥„Ý[[þbynãTŽ:ØØKªÚÛ ©YIŠ(§Ö&2(!\UáÖ¿óߛڞªú]¿äþ¢ùŠÆ9îåü¯ÕüÆ‘y‹T²„ÐÜé,-…ÊSâ ²'ì3#U“Iùûæ½GÍÃä/ Cù‰åÑm5˜M¥ðÓµ¨]OgªDl®Ò’Oc4*²@Z9C:§]UO<Óÿ9¦Øh~Wó_’4Y?0´MKÌÐù[Í:e››=cI¼¸SÁ%±ºDLŽ5´Š’éǨ «×<›ç¿)~`hí®yGZ‡W°†y-o€ ö—0í-µÝ´Ê“[ÍíG*+¯qм'Ì_œ~e×oôH|’Ú^ƒä¯1y‚ HóÞ¦yup¢Yµ)ô»q$ 6Ð[JRæRé#P¢2Q™W¶Z~f~[Þ^.™gùƒå»ÍG’Æ,"լ䜹辚ÊX“òÅ^3¡þ{yºÏΞ~òçæOåÜ~Zòç’®©'œôÍCôŠ­ŒàÉgw`°¬ðÛO±3¯8ãd‘$dàÇSó¯uéü÷¢ëú>ª±ùKÉz톋o§Y–•uë­sMyîe™‘˜lmfŽá(¦¥]‹g’_š·™~\Œù“H‹Ë~w°³²¼Öô8]¤‚KMF/ZÇP³‘‡Çot€•ÝŠ2¼Ly¡ÅT4ßÎY!üÂÖ¿/¼åå;¿+Ëm§—|Ì’ Ý;QK˜škF‘âPÖ2Ç" ˜gÑœqÅXßäÞ·«2_\kW×7qþriÏçÝÖâR駤/‰²·šF-^ÒJmñ™ö¨fÿ›ßœ:å.•a%ïÕoüɯ´Ñù_Ë÷Wöú\WMl¢K‰'¾º" haB Ë! ª¨ ìªUy-Ïæ¯æ_›´ õò¯åKÿ3_X²iZ/—mouáow(¢õ“-­Œ1¡<Œ’!„*³Pb¬ŸòÓó®mWÍw?—>iÓ^ÚæÚÿQÐ|¡çe“Ô¶óß—‘U ?ѧFäáˆu QVIçOÎäÿÌ¿.ùü=y®Xßèš÷˜®´¸g¼¾Óí¢º‚ÒÞt²·ŽIn#id+ ‰K¦ÏN5ÅYä?˜>J¹ò¶­ç[2ØÜy_@†æ}sVŽNif,Ér—xä‰Aç(u;®Ø«Àt¯ÍßÌÍcÏK:®•¥yÈ^`YÖ®4½J6—W‹ËZUº´Z½ýѸŽs<ðÂ^5-ÍùVayùͯêæïË?Ë™üáäïMå½üÅÕu¼¿£Ç`–ž¼§¹„(åêņêì7ÅYW|ÑçŽÁ‹ÇªýZ#žæÞ‡Óž8Ht”ªãyGæÇæî·qùEç½;Y¶Ò/4¯2é©¥ùWóCË—‹s¡j«¨M­Üe}IÎx¡•™c–VY8ŽÄÅ^ÏùCsså½_Îß“·p„´ü½’ÒóÉ7e·¸òî­êÉgš}NX¦µ ã â©/æïüïä?>ù+UÐc:ç–EÕ®<×ä䌽ÍݽʼnšæÀ©än-`šI„aXÊŠñ¨æT…^¡¬yºþ÷òúo;~XXÙ~`Ïs¦®«å9.ż:¬L‚DŽ®.¨Ò/Ù,¤Wcì«æëMÉßó”úG“´ï1Á©þW~dh.žjÐ<¯{é^Û\ƪc2Æ&‹êz½ äªƒœO@þ””Å^“çþÇÉš¥Ç柖w]Ò {}«yny¬•…RlZöNLÌ@HÖBK«RF*ù2ëòÿÌÚ 7þc󼾓ä>é5/Ëß1¬ºf?•îASÑ!Õ5+»ûHî8ð{b%Ó1©<™æO/ƺ¦Š«R-õ¯5@í¥Ù̉BÞºÅ$`€üœUa¾Jóüv>Q¸óošµMKË×zt7³þRéú3?šµ}oËVp¼š¦¢ÏþÑ­'v÷2ˆ‘Wt•V‘W«ù{ÉþX*~aë:åïæäךtëZÆâÆÂx“ÿJÙ¤]‹JI.ä–ÜZñ…>;H¹­ LÅUQüµüÇÓV/ùÇíWÉ·z^¿-÷奿®jO¨Cmci“s§ÃÍôÆ¥½9¢8‡ÆK·ÍŠ¢õ ¿1ëºæk wÍžkÕµÁi§¡é.!Ò´­å°˜™åô¡žÞì=äV¦V‘Øu`«Ì4Oη6~ZùoEÕt}Ì>Mò ÞYó^½©7 /-\½òA}q%¤Ï ’ÜȺlBÖÐìe«UcpUzÒÎ<¯œl üÈÕì5=y›D¹º*y_ó)¾¾º¦”c–)-ï ºRÍïù £ }\¬<ãn¬ªc¤~my_òLišV¯æ3¢ùCëIo¬ù+ͨöZç–ÄõâöW3MOO‚JD=“‚QfxÑ”*Æ<¼-æó4•™4ýgÉÿþvÖuÙ¹+Ó&±Ôõ;8 ,7º…³Me늠,ôïÌ;¿<ùGó7D¼ºó_ž#ѵ¯[³†ÿLüÍòFu¨;ØHM-¯…¤R5õŸ¨¼d¶ С •_=ê æ{óþV—ÿ0<£æÿ=þ]]ižkó/åž•åíSʾdÖ†˜“ZÝOú+Tº’d™¬.äŒÈ¨Þ¨H£ãð®*úcòãóÉžXüÔóþ–ž`³´òoæÍÇ–¼ÙùopïéÁy¨ù–Úêˆ-—aÊy4Ó9]ß—ÄqV3ùÃæ› Οó’WÚ¸T»òÇäÞ—qåÞC’43Ýê)¥ än’P{/†*úó'ËÖ_š¿–þmü½7–£Z×4§ú“p—Ñ–ZÉg$Ñ_I§‚›‘È+P‚*|ßùwù‘¯ÿ4íÏz~¡©~]kÖWžXó‡™%‘îµ%k‚¶—z>¸(òMÈçѽ(Š‘ðõ¹+ ™V) j¿]‡òŽÇ\h£Mg_Г[²’E"/2ySM üð=çåjæ¿È75ÙW¼~]~aùoòþÍMÏ~mÒ¼µåï$ùöóHò¶¥¬ßEh†×Pµ¶Õ¡²ŒÜ:ƒõsxÑFŠ»U b¯Hó·ò¾hMÕ¿š’êÉ[‡é {[¹­‰öž8Z3ó Š²¯,yãÊÞs}a<³ª®­úá,õi#ŠTHn$‰gs‘YÄn¬B’@e­*1VWм¿ógÉþnó——,í|“ç üŸ®éZŒŒl’Ï ¶£!„šuä¶®“Ç êÔ2Dy¡£¨jq*¼Q6Íêé^dÒÿ4?%üÑm Çiç]/ZÖ5ÿ/$¬h޳´ÒÛN+Ô]Ú¡=ñV)«~vùÛËúu¿ågš|í$bó KoäùÈm'DI­&žÜ‰émxxÁÉ~$>¬-¹¬l)мËQùnëË~e¹óåç•ÿ1ìçk˜5MõÂ6¸ƒã7:<ú;I¤j¤·÷RIo¡ÀæÑ0ÙVwùYæoÌ6[yßUò½Æ¥mç;òGÉ^sÕ´ú¾­õkÝNk7žÚPÊn@ÿGºŒã(,®Á”⬿Ìÿ›Ú•î™ùIæíDŽÏ]Ò·œô][F‘ï4ý{B–ØÛëvvœ’9ò+K–º{B¯ðÂJHÜK*¨ß.þmyCò[Aóf•¥j6ÞeòÅÿž4›Éí:Âxþ¬ö>mK[•·³t2r·´’iåªÕV:( ^qæ­sNòÇ›ô{mR ù»QÖ|‹çë.RMä]BòQww¡ù†¾¥ž™YcŽæ¯$£”ké#b¯düè×|·ù§ù3ùuæÛ>êP´óö•æ/*ézM¦µ©k7˸´Ó Óæ-Ô‘ËI Ê>mE^AW§¼çù‘¡ZyçϾv¸Eògš¦Z?˜úÙÑ–ù,¢RØé õ=!¢º%X“ãõUy«6~KµŒÞh’úN·õ†I/|Ûä?2y†ñÝ:5Äš¦Ÿ¤G<…EK1šw8«É¥Óüßæ¿5ùGÌ–œ7š­×šl´}χH´Õ¬€Õ-fé¶7×ë-þ¯ºJ×/sp28å_IVO/寜u_EÔ¼¯åmwÍþwó•ßšõ-Ú;/Êo,èZD¶Z&§r–Ÿ&¤úþÝâM*z/;ŸOý×éŽGygåïå7™®õíòç]M3^Ñ< #½üÅžúòçYÓäšb%[9lD6ZtºÅL³É4ÈŠÂS#¼‹UXo櫦ÞyŸóCCÒõS󮢟—ÖÚö—¸Ë>NÓc„]hv@=GV¹7)´@;xÌ« ⯬[Íߘvž]ŽM?òÓË^Hò&—eè‰|÷æ#§IŒ1qEšÖÖÂú(” ¡õ.6¨Å_šžQó+ÚyïÏùeå˜ü™m®Üê×IÒüº°jöÚŦŸ «¯•_Q³d¼´»/uo À‰p, Ž2}©w¤ë¯ùy¦y£É_gWò|q,GÊzE”Z}ι¯^Ȱĺ®®·ßC!º•MÚ¡Y6unã|¡ù4Ø"ú®¥æ…ü¨º·Ônõi¿2nü“£ÝC¯ .Ù쵩u{ópmᛑX@HâP8,œ«Š¾ãÐÿ=¡òôšv‰¬y³GüìRÅmkæO!p¾ÕKÊhd¿Ñl}e†%=fŠV1§R«Ë¿4/ÿ2™dÓ¿4õÛ(ùZyMÇ—<ßkä‹O3ynÚØ±FîüúÖWβFºÈ{*“ëÏåΗ¬ù‹ÎZ§ž|¡­jŸ˜>WºòüÎòÞ±oõ(fú£.5!¦xìžHáKa<2¿/ÝÆá>UOÊŸ›~f æµ¥yEü·ùæ›XÒÓE¼µ_5iú8w:]¦Ÿå{P¢+H!u>¥ÕŲ»–‘իоmòÞµ¤ßþjé_Ÿ¿.50ÇæY5-uõù¥¾×õe¸º¶šâìâ’ßMô ¬Ô†À† 3´íñ«ì¯Ë¿)è:µŸš§üˆÐíÿ/5û™ :Çš›Ísj“ÃvV‹-ÞœÍ{ëISפM)QŠ®üÆò®…ämvîÛóVúMkò³óŠ mwÍ3B-í¼¹çk B=}¤VXôá|ˆ”–6Añ§ûð°U€ùGWóæo—ÿ?u/Ì  ºÏä¿‘/?._Ì TÁy¨ÅÚ…î»UVí#±”mû;P•Y—üä'æÖeåÈt½?ËWþbüÍÑô-ýüŧ^ͤI£7˜¯!Óí#¡,×S1e·§§"£4Ÿ Ъð+Ï­~fùÆ}F?Ì ï-~fþ]ki^ZŸóCÊÖZ.¦/­¤I%Ó ó‘2›´ž/‚H%ËÇ I‡вùÈo,y{Jó©—¤®€ß”?–Wß™SÛZ\<ØëIª‡Òb¶—à(°ÉõÓñUã! €|!W°ÎI~_éd°‹óPó*èžPÕ|¥k¡yëDŠ›PÕ¬?HÛjö6ZrQ-ÕÌñ›D©ÈNH$¨VUæz]§æÕ·ž?1¯uÍ…ü·üÃó”|Ôúo¡mq§i:}åýî•§yRi.!vFøÒ³Ç"Vv ûJ¯¼—\ò™üëçsó=*ó^³¸Ò<ûùKç+ /-ÛyžHí]ÿJÔ¡­­åÒ$H”Ì€G7§Eà«ÃõoÌ KòŸæ§›uV»tÔ>£oùM§[Q/-|ßæ =7YÕ/ËÎSÒ[+èmÌ¾íÆŸW²yiZ–µçÿÍ +òëϾpóF®u³æMs]¿‡BÒÞH!‚8ôãw¡ËeU‰U®¹9 åÄ.*úªûΘº¿•^çF—ò÷Èš a³²óí¾»'˜`·’öU·íì×M³‚vi]UUçU,G^˜«ÖüäÛ#èk¤ÚÜM¨ÞÝL÷þ`×n‰k­KQœqy9$üR(£áE ˆ*€«0Å_4þ}ÎEù[òŠ}/ÊG[±Ó¼ñæ;sye6¥os=ާÇ' ¯®ÖÕL¸)QÕä’‚ºªð–ÓtïÍè¢Ôÿ.¼¯æΟ5Å'ÿ5¿2^ëEòÅ“¹«Ò¢60P~à± Š—©*¦VVúgäü>м…¨'•ü›äu“Xÿœ…üÖú¼?¥õ=râÚ9àÓ4XJhä1²,‘¤@Ê]•W ~ZÎ7y],ü‰uæk ¿)þdÚéÍæ/ê67öw—Ò½äå2\4M/nE$oÈb¯??ó“×å˜õ½+ÏþlÒ?8ÿ/4ª¼ååÈãO2iÊHµk8ŽÂ±{!˹‹j}!|Û¥êÖŸ eæ¯%I¨ÚyÇGòû\6ŸªykÍ_Y:„Ök~‘Ç%…Ô ´Ñ—4å(†ªÜW‡yò!ùGòßÌš—b‡Î¾rµÓ?'ü¡oÉ`kvדºÅÊ‘=ûiæy¤åES(AÈ^·æ‹.ç[óoæÞ›s7’ÂêHôß==K¯(ù¨E–¥¢yšÒ?[×ÓnÌP"$ˆµyHÃE&*Žü°¾ó'œ®u_>ù+ÈCù">Pò¼·´ÊÞPÓìýÕÞþüÜê+rñˆ",\š8«Š°Î_ËÏÌËÿÌÉÝZk&ê¾O±Ö‡•)›ÍêWV¡=²É£¨¥”¶âK­JéeV•ÕÒ#éñ ÉŽ*˜þfù£óŽëAó/å·ç_žn<‡ç6$Zw—ì¼±kc•5*óQ¶°¾¸¶ÔnçPokrÒK ¯´¡Ðb¬‘|û¥K¯ù;Tò]¤ö_–ÿ•–º&ä˜mUìl¼Ó$:LZÅÒN’sžXM¿Â3$×H¼ãB«/׿-<ɨéZçÞw×n-ï=[?>y{RÒ¥Ó®=9=K9F|Q­§Zj–Årã'@«È|ßçÏëŸ(yOKÖ¼½ êžKKÝnÖo3©‘䆶ú½¯ÕZñ]-£¸+éÝ|QNâID¶ê$ ½{HÖ-?+ôÍ+ÊWžüÔò†£%¶“¨ùgHÖ’þææFšYïHÒn’c,ŽÎÄ\«oÕzR]sIòWœî´[¿ùÈÿË«ÿ1ÝO5§ä‡”ô!©Zy‚úÖ@$»¹ŸOµ¿h- ¬A/$ËŽd?U>ü—üü¼ÔnµŸ9X~Eé^[Ò´«‰SÈ÷:†­q­ÝÝÝZ»#ÏéÉqqo,‰ÀväÀ•bœY•aŸà%~lùsþq×Í1O{qæ[mzkËËK™m®­µ)¬[U½¹‚h™^9aÔ-…ØT©¨8«;Öüˆÿ“Þ{Ó¼Ó¨êSyóCüÃ6ÞU}YŽ®éÚ¿§(щšÆX®­ä˜™§æGhϨS•yF‰ùyç&þZþLEäý.ãÌ>R´Zó/”|ÓõËxï<—©\I ëëxn$‹ÕÒîm¥¸<@•£veeà#(«éO)þ~ÌÍO.ùKÈú)“òþó˺®¿sçmA ¿éìî`²ˆéP—„òÒ͇§î¹/ÄUbߘŸó–ÞVòÞ”·¾^Š6¶¼‚âëKóF´—+¦Ïkk!‚[¨­ôø®¯Þ%•J‰ãj’¾*ðÍÌß>~˜ò†’|£q5¢šÕõÆc§èñAhÍ+Üéñ4—×—€­’ø‰RV $ ¥WÒ^CüÀò§åÏ—tKMcɧ¼»æ‹˜¤Óÿ0§¹¶Ö4½VûU`ñÜÜêóIr¯rï^wPD»…ªì¸«Æ¼¥ä=^ò¯ä/“5s=¾¯¦ßùƒÊl¹·—Ò½Óµm®5x®­ä‚Mo{f’ÂÄhä!ÕÑ銽+Zò‡î®´¿2y§Ê÷où«äÅž)~uy$ZK í¤•Å©ésϲ$È\D°º+U ’#Ī©ßœ?0?8§ü½òL:O“¬tÍ/3ùŽ ç@Öý7Òï µ¶¸¿¾ô™d’HỂÕã‹Õ "3j)Ëb7åT>}åç¯Ê=bÓÉ¿•ÿZ^›懔.¬xÞÓ$’9Ä-c‚y#/i? ëAÉ> `Ò,ߘþz󗼨 Ô5o0~nèþbó¾—å_(x¬"™ØëÝMcXb“ñrîqT_š<Ãæ?,Eù—­~pù4y3T×&ò—§ÒZ/CVÑúzMÅÜͶÔ#IÐzˆV…^9 x¾£åÊçÉÞXó캂I©{k"ÝÝÁkh‹Ì‘Dþ„%î‰Q9ÁVoæ jPù“Ìú˜<Æþjó[ySRüÄüÂó'Õá´ŠMB+I4.ZZCŽöj·R*·&.ÝØœUæ¯Ì#ù±æË­sNC§/ååß–Æ“¬¿(ËùÏÌ1ÙÞÏf ­ok¢½É¹-Eýí–]•a•ß–ÿ7¿5õÍM_Ϋùkä¿Ë¸-5Ï-yº1j’ÉÀý Ïoyë?¯l“]Hœ9zrZ­U…Uë0þpù§[Ó.5‡üÅÕ.¼g ³Ÿ0ù7È÷¶·÷1@¥Æ´—¨œA,Ëo…‡\UŽù“É•Þwü¶ò?”–òÇ£þxê’ù³X׹ʺ†¡6‰¥^j6“\¼¤•’=B~h˜«í?Ëï4Ãç"ù;Îì?3hÖZ–È sHËMéʼnÅY†*€²¼Òõ¬\é÷6צÞi-.¦’CÐ1Y!rµ£#T;ƒŠ¥^gó.‹å«;3¬k¶ž^“]½‹GÐﯺmFì0¶Š„¨fv_…KGá­HÅ^9ä/ùÆï'ùBm/Q×õ½oó/ZÒ®fÔl¯|Óp—PCª\ÈÓO¨Áh±¤Irìç÷¬@(Ðb©Wçž±ùMç[)ÿ.µß3ù‹UÖí$^Nò »¿ÔÙ–…#¿µ°†å&#¥â¬G¾Ø«Îôo1ÎMù;˗˦þ^èV~GÑlËi˜ÆŸ§ßÚÃ,^åôŸô_H/Ed‰“ö™±VùoäÛ;ùZëó òÍw3þfywS›Vó/–£Œi61êz²E©ÜiVHÌëeðH‘1c,rR“«7ǯ?ü·òÏ—ÚÛóSËžoÕÛLüɺçåÿÊmT·šo—Ãò¼µÐ­­¥.t©Úå¨ñÉ5o+Û¼‘Šâ¯¤´_<ùbãÎÖ?š÷‘¯•®î¼·uåoÏO&È+we­Ú5¼ÚtV¨¾­ÔßðÚ²£zÑȾ%uª¬§É7šz—ÏÉ_¾_ò7•-în&Ðü¥{®­¥×¡u3Ü4­µœ°Ú—i z<‰JÐЊb¨-óÏOüÅjòoš?(5Z=,5¯™¬ô³eæ½ Á46òÞ[Ÿ«™6«@àH¢…ÐTb¯•?2düµ»Ðuß!y2þ}V+k«]kNü¦óÔ¶³Xé—V2úÖÑé¿[¹Škå(Ñ:þö8¨nATÿòïÎw~g°òß—uO-ÙhwSÖµ/>jÖ¶—öšãjþlšòòm:Æa¢Iw$PZú±É$$¤HxU”yAõ{mSS_=è¾H“ó\¸’íüéù«Kq,rÈß ¾™¤^YZKoiHà†a·Úvj¶*ökÉÿ&.‰¾xÒíÿ3üÝ}¯åÿ:B–Ö¢ í9Ñ`Ó,„¬ËbŠÎ’[‰X¼rÌBd-аïËoÌ/1yÞ(5=¡òµÖ£q¥y§ÊòJÆ_"ù™•M¶šBIÔ“êN$^¢mŠW–ZyÊžI·»ÕôO7éšßçF¡oçŸæýî…ª[úÐô¿VÙn¥… ú¹„¢¼&¼:}‚^]Gõ“ÏtóF¢YJƒðâ¨_Í¿ÎÏÌ#£\ÁåH¦üÀòå7™´-[Îÿ˜Þ“qåûÝ.mS¶´×SRº—áFÐÆÈM 0ÅS/2yÃÊÑùŸÊ”wzußæ>‹¢Ýù‹ÎÞRü¹Ò`žê?3[ê/ß– ”,olÖJoî9sÕÔÉÇ ¬m¯|ÇiçÍ¼Ç ׿æ"Åmùýç*CúòóË–3O¢Y_–ô½h¢/¦³õd’êHÑLU“ù{Mµó¡üªÐ¯ü½o¦ùcóŒêže×4Q•¼½m ®¢´L+vŠêÞwŒŠõ>ähªD·òèòÊùó3Qú·•<Áeª~W[ùöã”R[]y[[º·Ð%–ðòŽ™BñLÅGÖ"^'›ªâ©_åÍŽoú7ZüÞò÷‘<ù«Ýk\ówå·˜ý ÍÌW:eìÚlš¼<×VrÃ6 cõ'LVFfª±ßL<åùn?,âò‡—´}nMOóoó_T»ò—–u{&²ƒKÒ/#õoîÖÜÏp_ô=‚J–,ÜãFHƒqW–h”Z_•®¿8õ ~_·œô!yÆ_.Iå]Cgæ [4±³¹7Ú¤Ž’Çs\²É¨U8q‘xªy{çXô‰¼ƒ¬y{ó>ïó“È>KóE—˜u赉9yãÊ6© Ö·ò_Ú•ŽòòÛѹH†Ùf‹&2'.*©ùóræé&´—ó>OÊŸË;¯5y|‹©ZyjûRÌÞê÷R‹¨5×ôø#,å"P¸¡fbÅS4y&Úú)hþUòw—<ågåeš%ùÓEòÇÔ­ç—›>®éÁ&ŠöÎýeš £t’’”¨äUcšv½å/Øßëšf‘ªþFùÒ¸‡Î¿úôsÝ~^kÌbh®-Eðˆi‘=Â/ç(COV&J®*ò?æ/–|æÝjºæ¬/¿'ÿçl®ud{™?w«ÜOpÞ_´œ1eéÖ"!PÒ£FNnt/'ÇùQä5C}äß>ùãËÚðùïòÎëSÓd±óž§?×õ -ÚYš!5•ûÚ;–á–Ÿ¼,yO‘<ëa¤ù‡Îš_åÇžbüÁü´üÉòDz~‹æízéa—È–Z}Üéwk­Itñ°†ÆFGƒ™N|ä~,U#ü¾Ñu=WòßKѵ‹yìÿ+t?ÒÉäëS(ƒ[üÍÕï.¦.Ö¦R ³X –å¢aõV˜óX‹2*úÃòçò#[òê·æWüÙä7êþz‘<Áw©kž][ÔY.¡Œ´mRÎî ²RÞ2²…@.ø«Ç9¼ÙçcÎ^iò'Ÿ0t½fO$þ\ëþn¸ò7•¬.lôWÕlÖcm«½ÅÍÓ]ã›ë^‹Ô*A•EêÚµäw@ò—å–“wy ÇŸµ¿)è„?îôÉ5¿(é¯q~ÁB ..œ r~[†zâ¯Ð¯(y_KòO•|¹äý3‘å6ÛLÓ•€åéZı+7f V nqVEоóÏ“¼ÙåÏ©fògæ}÷啟çdãDÛèhæ]2 .­.ôû¢"õu `²$ºJÆýqU_̽jOÌÍFüžüÓÒËÞf°ów—¢ó”VSIõkë¶‘,µ}é– ½?¯z(Xx%ýÙ-ð—U¥~h^ëÚ-Çäæ6¡©i¾aÒ,n4só³Mº{8¬µë;Éítû©ä…à{f¼Hb p¬ïè·Ú•c—:'–|²Òù¿Ì–· mæÏ0?–üñç &òãCÖ|¿¯ÛHÖϽu¦ËkõÛYgZÃusûÅõa+¬ÕV{ù»gä/-~SùÓÍúUþ§ù­ªhש¡èÚ»æ ÝcOƒÌ7qéÖñ^XÜM-¹0\ÌŒé4L@7ÅYßäG‘ì|uæO,hÒþ’}IѬ|ßæ†,F­æô»­JêCSYÖc/½@eOÙ«Å<Å.ùͨ„ºòÇüªÏÍk«Ûõ-E¡åo2Í¢]ËhZŒ F$™„-$Hͺ‘5±$USÓ<Ÿù­ëzn»ù§¢jQK§êé§ÜkïªÞéÚ¿—µ`WO±óÕœð=ì ³iÚŒÎdpñ‚¿&Uê?›‹¢Ÿ/þ\ùX×`ó'Ÿâ¾k}[\óV½q¦iZvš‰%î¡yº‰õÕ=DD…ˆI]‚»*r8«É,4¿Ë}7OƒÉAÕåüøóC‰†¤tÍTèÞDЀRò]ë6Ú ¦l›ÄÃ,Ò‘O ¼óȾ@òž‡£þdÏ>©ü«ËkÙÿågù‹LŠ-&Ìo4á4ë9­œ]>Ñ¥ŽÞky?}+”eëÍVEù+£~]ù{ó_Uü¾üÛü«òü^}×`Óï4ß=>´äÔ¯¬×P-Û†EX&¶ŠAéýåÈY$ŒªõÌ+]?\óm×å‡å~…¯ù£\Ñ ŠãÌw÷×ÐêQÒ ¬xÙÞi5Hâ¸1Žb-ù„*Û«çÍQ¼Ëä¯6ÛèöƒòX’É&¹ó½ÊX[_[yOJµC4÷Z…ͦŸh¶\€¤QUZY8…íSm_š_5O«y·È–+¿4<²š_æ4··w6׫\Gæ[.òiåÓb‚Gx„ŸX¨SêPz4 ¾“ÕuÝGË^Kÿ•uù÷õ½WË÷–†ÎÏ9i§ã Új«Gé¶™tŽ„€¼^ %ZñU^{¦yý¿*aó7›­îSV6Q»jò6™2‹+ÿ5ZߨÛYj¶p(ãlš´wé3+«‰ »Š•Tÿ3´]OòÿLòUÅÿšá¸ü⸴Öuo4~hÜP-‘»¶?¯ÈH‚ÒÒ}Z?B%â”Biê3ª{¤YyÇü£y›QÑ,&¼›3\è^RóMÌZ§›u…pYÔb»tD³™Œï<¬&”'WŸÚù"ý<äžCü§óž•¦ëúM•õçä÷æb¾†?&jRú·–ÚXšC$ºMıÜÚ.úKûµåгMòûNó}מ<’·äOùÇÊ]N}Í^DŠ3ïšõ­`ÔoucR,³›i=u,“r94ÍÄñ*¥Éæ¿?k– ùŸ§iždü“”ùƒKò«ð³¶¿ò_šì}[}.IUm®-£‰A~%LØ;«&ò?œ?/ü×c£Î8išþniÒèŸ_üÅó}Êú^^ž+©Ý®®íîdYîiî̈RªÍê¡LU‚jŸ‘þ]ü¹ó.‰où®Ö˜?—vóF¯¡Å®k©ê\ØA®AÞ–/.åø£š ëG‚+•”Hí:·!#UNoüÍ©þ_þgþ^Xþbê7݇å›#O3Í {B×P²µ›E““S•Ì‘Gqe±å4ѵ 3Tü·üÌÓ|›¥kÞK½¯æŽ¿s¨yÓó[]–·6ž^ÔuÉšX´ùa†²\^ÛCéÄ-€AÆ>L˲²¬ZMAüÓÔåÓtËÿ;~hy®ú†ëókͶ÷>Yò¬Ô¤³m¾®.€äOÕÖöÔتËÍ¿”žO‹òÇBºóf“å/Ë¿+y™¼½ùmåíGRŽÎÝ$òÅìÏ­k÷Üœòk‰¡{khز©pÀ«JB*õ1ùÓË™>w°Ó|›ù¿å?=iWÖbßFü¤´ó5Î$·1’æáï4qs=Ú˜è=Ò@ I¨Uå^{×| ‰?/¯?.m¿'õkÓÏümåß7é–—'áÜ»Ïm%Ð=Z;‹fæ>ÒмãKòåżWz—˜?4ô?Í]Jþò-CSü»Ñ´;ˆ¼¥©Oj=;i5´.®:~ùíÊ–ÜÁвýgÌÞgóͼZ~J^ù[òûG¶’Ký!,§òW•®#R >¥æ;È-.á¶Œ‚Í­¥$;‚ꬥh!ÐIM`Uz–µÛ¯ÊùÄ_/ùŠ;v¾Ô<­ùi{adª•̶ˆÖðñ;$‘V”è6±Wˆ$èz¡üÑòïé{S?åÇåž«¡þb~g_ñ_¯ùËͱAs}=Äõ ½¼vqsBÕeH”*ªŒUìÿóŽþ_óW™!¸üâüÁÒË×þkš{ÿ&ù&án4‹kÄŠ)..ê¥\ÅJGÝÆ8†øÜb¯ªqWb¯&üï·ü®¸ü¶×›óâ‡È–¦ ›û—{„–â™ZÖKf´ÿH¬¼}?Kãå°®*ø·ÎZGŸ¿0!òµï§çOÈþ_K©´¯;ë¾]‚0[Ø]BªÄ=­ä@3«Mb$å—¯ÅUQ¿“y¿ÎÞBžþ^Ñ­|Çæ-wÌ~b³üÖòW¤ÐÛùA¸¸Só¿åõ ¿Ä_—{µXÿç<÷x•¼Òõhási¤_I2ú‘\[ÏD!Õ S1”~ñT‚ÓþrÌÉù «éx6³y·Î¾@ÕuOË6iÖ«oi«úv¢ ›[˜T*[ßÙÏ/ï‘TDëñÅZ2ª¬÷ò3ò È¿–Þq¼òEíæ­qùp`ó?åy¼»’k=:Ë[I!™b·VXŒñ]Ár²#?N-ÖŠ¦ÿ˜š–tOÌï5Y~gY?+ç mô2Ó]2&Ÿæ'ÕŽÚ9eB²[5Äb·”"Xˆb¥—’¯óG–àó®åËtòW”<ßùßæMG_¸óÿœµ8®­ôûmBÕ.4Ërùtù­K‹†Š5T Ê\•6Uo”WÌ­äÉo"G¤XjcóPÕ<ï h³5–‰¥Í•sòí¤Ë#ú©†òâ8’Iœ¨Z·'ÅYg懒ÿ24Ÿ8hÐùcÌ‘_þp\ùoYüÅó£,H4½oPÑ’ÏK‹D{gVôôóg{q h(ü˜Hò䨫Ð<¿eæÏ"ù/ɘÿÐMæ¿ÉíoK‡Wóä¥ì©-Í­Ü+pòyr{†WI±åkq9ˆ€V. @U|‰ùámäÿ""þ~þ]yj×Uü”ó`°ºòìÚt—qêšF·úM/îÕ ™’4³¹H)-ä%#˜UR6Ý•}-¡Iù·ù¯¤y›óFº‹GռܰÁ§j_Ötyg±Ñ¬¤šKm+Ó¸µºEbfi.ÖI ŒB:"  °-~cyãÈzgœÓÉž[ü»š_.ÅéN{}Nk‰.îæXm­%¼³»Õ"»¹¸–@‰ܯÄjÜ|U©y3óBüÖÓ?5­,lµßÏOË'AæÍ-BŽ+}"];S½h›C±„ñ/7Ô⺖9d‘¥DäüSyç24Ë O<ùÏʾe:×äoü䶃4º|÷sê7Ú²kM·2HÓÚ,vѨ k$-;H FÊ¿ b¯ó˜¿"üÃçwüÏüÎó•­·&²Ð›òïÈ¡å˜ëhÏu=¾­uam—„’é–Ú&Ù€æñ’c¢¨ÍX45ùϾeüÇòíÆùÃæ=Kü™Ð5Ùo`ƒI„+ëØ-¥çjòÝÜÌœÃz ! ФÞ`‡Gü¶òœ¾AºóÇ䯚õ:X&üºó‡Ö|Ëù­Æ‰Âw‚òt»ºŠÚ]ø…º†t4UêªCùkç+Ÿ4ÙùOVü”óF‡gmåÐ1lüçvo|©£€Rka¤^ʉ©ÝŸ^!=¨’f +#DÄ)U2×ïü«¥y+ÌZ’?3üËçMËWŸ7éÞT‚ËDЭî5[¥ÚÚêÎÖ îoog”G›¹ z“•EÝV9¨þd~\yšMÉ¿˜ßšÂ 8ôßÌ=rÞ]F-FaeÑ<´öQ§–"9.¯^R«º;9¢*šy{Lÿœz³ó>£¬Î'j~r¸óUò[ÁªiLÑlõ[[íë}sÍv¿W܉ÒìöŠ1©*¤þr¼˜Ë©jž^cÕ25ÝvÂæmògÈ·qÉ}>‡¦:½Ù×µ[-b·XXrxíÝÅ ˜•fÿ—~_üØÓlaÔüŸù]ÿ*»È·ëÞUOËË*ë€ÓÜŠkÍCYÔæ3ÊêFÑD@ÿ(âª~syFïó.çÈ^hüâüÝk =2ÞO2êÓŧè±è׳^ O«êvözEœ±Æí,!'ˆÉ_âe_‹M¿2ÿ$<£äÿÍ?"^[ê^`óF¥­[__ùcIº×îŸV[4šìé¯|òØJï¢QÔcun¦ËŠ¡¼Éæ?Ì8y+Ê>xòM÷™/¿)›YÐuÏ0Ïù‘”²%µ¶©k*Í¥K¦È.ý`ëFK”1qä*½1T¿òÿBÕüç{ç¿Ë/)[Ïi¤y›LòîŸæMnBcLòMÅÖ­¨Eo µOÖn¬/#‚PLjK9N*YW¥~{yÃZó¾£üãoå¾o£Ü1µ:Mú-ç°±x§X<¼×L—2«ÆÝãdU­žŠ¾qóoä'˜<«†³æŸ(k7>Mѯ®µGGó6¯y¬i·S<÷ðOåI-õ$ÒHÎæâÊU`Ê «Ô¼™ùGäßÍ]:Âo#ù7ò©4{_÷¿QƒY×õKÄIí­¿+QiØõ«ê$Î6þ\ùS²Öì_[¿ÔôöY-Ö­{õ8¤_ÚŽÆ9R xsV÷$ÿxÿæÇä·—7ÛÊ3kz÷˜|¿{äBMWË·þ_½KIa¼xý19õ"™ ƵàÜj•%H'I üŒò“g%ïœüÁæO?iÚdoux<í­Üj–!!ÚIíe+lÁ¯Å\Uæ·ßœ¿™>`ò´þkòV‰§ùGÊÚ¸6Ÿ“ÚUõ¤—Ú÷œH«g-¥¨žÕ4Øír¸Ž^3ª ÅZÑ?çfòmÝ—žî?;õ¿/þpy†ÊÞ8k·3YË¥kQ’ü%ÓfTæ‘1ÆU`G,UâŸ6>eò®¹«ëžhÑÿKþž‡IžÆ=6݆•¬jšV©§_ñ†y \_C§ˆZ1#;”•RJ¬³Oógæ—Ÿ¼Ñù¿ùù ¤Ç}ä/7I¥X]ëÓÌšv®o4[Fö+MHB–Óò™aiî‚OîŸj*ò ËV~c“ÌZ±å£å©/Ùí¿0¿4f’oÌÏ8ˤ ›=CËÖF×Lw@QÚBX?º­*Î?çuÝÛóCPòŠùªÿËï M®ùÉÞ©+ Øe[htíCI¹{€Œ?GÛ2ÌÕÅ*ò_Î*÷mNÛÈ÷w¾oÕü‰}¤~iþ_~`ˆ¥üÏü°Ñ§¶¿’H«ëºm½»³ÙB¼Ñ,fI™RXØJ´‘WÍÞqüº½°ü“mÈ7§çÏåî‡æ›_>y#ÌÖ!/u« FÏRŽ}CE¾·Š³Hfç&E…'ަ¥W§þUþ{ÜyÓÍŸšÞuŠûAòf‹w­G¦é:¿šZë‘Òô´0[E%±ßP/#K3‰A-%/„±UùOS~uüÓò—˜üïµå_33?”_Y×?ÅþBÔšý‹I¢^3ª¥”Ë(¥²™£r„(IL_¬oòëò»Ì>TÒü÷¥é©-Žùƒæ¥hß—‰¨›Ÿ8êº[+ϡ˫1iºu¼’Ì÷Ð9x¤ÙÁ™ ªöoÌ»8üÃå­WþV—|½ætü‹ól1Þù{L²h­ÓÊ÷zM‘ÔÎ’YV]2+Ϭ$‘Á B**ÄOŸn?(ÿ6ÿ+£óÏ™™|µ¤i:͇”ÿ3®$õä×ü§«XÇi,÷ Ò,÷V—¶Û;)ýèš)8)‰T6—ç/Ì=#ò×@ÑâŸBÑÿ/-ô‹M{^·›ÑºÔ<èë×ËR‚­’Ü-½ÔëÈ3ò…x2IE^Åù™ä“Í^iü²¸šóLü¯ÿœ—Óîâ¸}.H­OóM¤K,Ð[¼‘K ¦-cvrÑ×Ô‰Ú¥¤Å^'¥ÍäÏ2þTù£È_˜>Uòþ¡ùçùc{£yk_¹ž {_PÑgÕl­ ¾KÓ’_ZÙý)™(`Üyгä“ógXü¶ü‡·ò’-üõ}äß3kPÜ<·éúd§Ë¦ÿKÒ5;É Þ6GtV0YÝ~ 0U4üŸüεü¿:Ï”¼Õä<ê_›—çVüØÕ ÒÿIÜKwvh—1-“M,–¨Ú²Da‹« UyÃIò.¹©ùÖËÈzåíÇ’¿:á¾³óôy“weç=2Ñï#†Kk›iÖ]VÖ9–x§µå#ÇîM ¯Cÿœ8óoéÊ­OMÕôgÒ.¿*õk- »áê2ÙZÛÃq—0ÖaÁ\ˆ×—\A$b¯'óÿš|»qäÍó§ó]MÌŸ—Zv‹ùu¤ÈæXô+5ôW—-e ‡–k›«8Ä·>˜ +´Vê›(e^ç?çç¹$—:oäÝ—‘|<±ÃgçoÌ],¤œLÁ"ÿppÆn•¤bc‘Ñ˼k¶*óýJßÉÞms­y—óGòëL¼¾–KMB÷Hò46ú¢ÝééW±š}bâþXî£t‚H–R •Œ€h«ÇµmKò*÷W³òÝ—žüíÿ9'ycg2~^˨¦¯¢µ¥Ê3G©Úèºm¼6×ÑÙËE{pÊéFåÄ â¬¿OüÓÿœ´Ñ&òw“4ÿÈO#ùWKÔ/5=7Ëð^ÜG¥Ûj¶––íq‡H·¸¸{X£i $¨ªñ¨®*–Cç'æF•¡Ýù·ógÍšAЦ»†ÏAü òÞ¹gu}ç‡Õ¯5»µ]7÷|诿 j1VQùGù…¦y+óT~]é–·>Sѵx¬t¿ÌV–¿0AæAo%ÓdÔuKWŸëmy ¿HÜ£b‡á ĪƒÕç¢òž¿«Ã©þeêÿ—–÷—Ìþ^óÄ&k3QŽããß¾•s§%½ÒHÅåuúÁ£§ÆYB¨;[Ï-yó?ò“Ê>zСòôÞk³óG’ü˨ê7o©Ùù¢ÏW··žßUMRpÆá§–Ía’)ݤˆHŠßeXî­eäûÿ4y—NmSVÿœrÕ´¿Ë_"\_·)æÔ¬5 þ½s†¬]¬$¶CÃgâw#eU›y¢êy*?0¿ 4?CXó?›üÓþ²U,àƒNÓ§Ôï.T(«:NòeêÎONJ²!{æÏðß”?çu{¯:§‘ïáÿ•§¯Z¤:f·¯Þ_Æe{#VÔ•¬_Š*ÐúR)ÒŽ)h›ªÞØSB[O6ù¿óSQ–I#—TòwæŸåõßôu•OPÚU…¼e¹š$]V§mñVô/L}2ÿ þlyCÏzÍôö¾Jü¢´óF¯£éúÔ6a^[Ëx®O©§Ù(`Ò}aWÓª§Æì•g?•“¿.?;ÿ1õoΞTÐ}- Hò棦Çqk¦ÚE«¼’_Ëkl³ËëLñÃ,M<ó;É4’<8ð ¾Þ±Ô,5;t»Óo­õ Yc¹¶•%‡³! â¨ÌUتEæ?3ygÌ^[šA>`Ó.ôÙee,náxI* ÖúTb¯òÏÿ.?!´3Vó¿æ"]ù«NÒSJ·ó÷›uOE!L±žo«Y¡â¥l‹Ê€1|Uñÿ—,uëýoÏÞyó”Só“òëN‘®¦üÈüè~_`µ ‡ËvþŽ£ÂÍýÙŠÖß“2¨æxâ©üÚßçƒyåÉ·¿’M¾›·çíS]ó£«ÚùjÜ^Y|½v¿QŽùáXUf Œ¤¤‡*¸ª3òƒÉ™Zoå®ç¿+ëÇó?IóvŠº¦©åcyúÌÑÅ7#ëy M©,•ýÞ¡ça5 1Vùqi ´®‰å;Ûß4ÞY´óÞÎ?kºö±ùcæ«4ä]–'Kº’Æ÷–ähÿϾ*¡­yŸÊ¶ÿ˜^D×¼¡ùUæÊ=XØ_\]ù'Ìé&{ýÚ[éøÊKÁv57ë–R°ff&7âªe£7–ÿÄZ眿#¿.<Éù§ùe~äYé6ºKék+0igòÇ›m¥B%$…µ%a]Äo ÅPþWó}ÿ•üë©j:&µæßÉ­'Yyu-[Ì>yÒ#µ´¶xX†±ó5”מ^]R'[–DÆQFÅ^Ñ'™¿(¼×vºçæåEï—ÒúòæÏPüÝòl·«¡Nör˜ÝµKNú…ÊÆì9/Öá1• ó#|UŸËå=bÿC¼›ò¿Í>FüÙü¦¾‹Çåç˜ØiôO‰ä[Óà»f`G/ßÁ!¨¯0qWÇzWæÚ~Tþn_y£[ò¿š<©sç.I¤y ËÏW-6‡¤ßÍwoo&¦5™™®Âhm£y'ž—„(¿aÅWÐ^dòŸ“t©¿"åóš$óNƒæ¶ó§™¿8ô‹×Ó “̺ìv’[ÞËue0Ž(®M³ÚÅ9ކ88²íмwÍÿó^iÔ<æo,é?˜‡éßùÇ«‡Ö<¿åé´h5;=FQÔl%Ó"‰,â¸UËi {q,g„t ¯|ü¡Ó´¿Í{Ë›¸ntý3ò›ÈíúCBò\×QÜêÚÿ˜"ffÕµˆ•‰€ÃpÒL»Èï3zÓtUÅ^óùÕgk¨ùZÓO»¿Ë²Üê0þ€óÄ„SAÖ3éwÅ\eúÀX˜3Üý3Ur1WÅ_˜žL—óM½ü×Ò&—òãþr'ò¿Q·Ñ¿0"¼¸Õ5-N"hÖÛJµŽA5•ó*\Âï «/ÇBÊF*ò7ææž¿åÍü¿¢yÃò¿ò³É6¡5*ù?L´ó?™PŒVãV„q]Ú+TK§o#L¯ê3 Ó@yÝ$óV¿åëÿ&þjþsk^{Òà §kÚ/’ ’öÎ9\gwxÐéÁ!føžä0þÓ/|UƒþfÚþlÚ&‹ç‹ gÊ^tüàò~­c¬y«\ò\®­w:Çii¯AmnlñÚaL¤IFx×”UÅ^ãù¨ùçÊþb½óäÇ®ÿ0?/ÿç ´¨õk}H,4˺Þñúw·VÞ¬…cPÐ\ÖuæÕâªuåÏÊ$~Ehzg˜¿3µ‹_Î/Í,‡—þ\¼¸h¬4¢Î²Ë6WO4)r©n ‰å⊠(øUa¾Ò¿35ŸÌ i>~ólþ]Ñüì.¿ÆQéQ(¹·Ò5 ˆltXµ›yä“OõÍÌé(¡6C$r³ŒUé^Vü±ÿœvó·æ˜¼Ÿ”µÌ+Ë "Fûó/Ìz•Ö·c¨Þ[HlWÑúÔóCu5¥YRŸ¬|‰æª•ð럔¶žu‡Ë¿—^Wó†¹ùmx4¯?é^YÐì¼¹æ;ËcÜÚj6ÙÄa¼VîaG÷‹"$ŒWâU0üîó]·Ÿ ÿœ|óŸåÿš¿@J÷wžgÐ|Á,T·„A:ÝÀÌÂuNTnPhÃYfudÑæ×ÿ0¥Ô5]jR韘:Ï“õMcËŸ—¯ù®%¾Ó4˵‚kEÚfºŽ!e˜ÄÊÅ•W›Jl‘§^óÿpÞS aoy~ßX“Ð2À-ˇ5™¿¼zrUþeè>fóî•ù%çŸÌÉ<ÕçoÍ)>±¨ùG@)¦é^[Ðm'¿¹`"îé «ÀnX %un+ÄÑWÎA~QyEOʽ3É~CѤÕmu‹íR-*êßë){§èz%õÔúo)D¯\€±rAð»#вŒUåÆ}@¼Ó¼·¤i·Þ`п05¸¿3¼…å›ù¥¸}AµÍ .ÆÅ¯&y¤‘¡¿¦•ù9Ž8ùïAЦÞFü½òþ†ºŸæ/æg™Ž§å[³w¦ùwËv”UüÀÖŒµÔõB±ºMrº¥Äa`³š7!õ+U}3äÛ_Ê‹*éþs°]/Í¿œÚýååÍ•ˆW³Ò[êõ³±w¤aa³µ†ÞÍYP/©Æ€s®*óÌŸ0¿Ÿ¤ó¦µ«ù¢ÛË——þjÓ<«å˜.o¾£m}æ këI/õKÙƒD¯•^8¡,éÎ9$aÍSЬKÍ™:Ïœÿ9ÍïåÃÅå;­SÊkå¿(y»Ïm6i}êj&æñ¼®ÓYÝ­ìפjIEâ$ "튥ÞJòf‘å¯3ê¾Qó—•üŸi¯ÞÞ´úuÏæv‰owuªÏ?Ç!°ó?]eªjÆXãz2qо‘ü½ü†²ò¾ª|Ǭ_Ùþ‘Y„úv‹åKWòîkOØkk9ÇÖÇügä½øо†Å_#êÿó‘þw“ÏW–Zü•¿·óå´"þ=ÌÚÆ•§ í<5çO’«„¸pB·%ýµ«<Ò??t˜¼Ç ù/ó#Ê:çå/›|Í!·ò宼-g°Ô®TU¡³Ôtë‹«vznF›²“Š¿<¼©ùLžOÕ¿2?7>»æó§ä‡œõm+ó_M±¿v¹ŸÊ—~´ÔôÇ›™Y ´dôÑ׀’„ªûÌwÿó>Só?“µïÌÏÌû­oÌ6 mæ_#¿™u[¹¡·[…d·¾ŠÚŽßqË‹H„Ž¢‡yç”|Û/|ùªyú÷KòÇä&©æ/1yûóïL¹[ÝoÌörß›>΃շ‚Úkh¡ŠPÕj×€,J¯-ò—啼™þ ‹ó[ÈRùFÓËÐÛyŠÃΞQ3¶±ä÷Ôæ–æ axYnôåt(œâá•%Ždks⯢<—­~YÎFÙYþ]~qÚùsóÌš}¼ºŸ•<Û¥±ŽÓ[Òâ‘P_ZKo$sÚ]GÉÔÓ*ç”`ÄA ±/ÌÿʽjÈÁùeç]b]OÈZ„¢ßþqÓóNéÌÚŸ•¼Çu Á“¬J í.UŒJñÈÅ G+ó1¾*òËO,i^dóö“ç+è÷ß—~{д{½'ó7òßÊ÷¥%ט<¹<ªAFÆ6‘ì®–âÉ‹p•µÅW§ùëË>Fó®»å›ÝSÍ·˜'?/<¼Ÿ˜ß™¾ióô÷-•ÄfãGÓ­á!T } 'ž‘ 8*ÆâUzåÿæ¥ÿåÏäï“|ÉçmQÕ?1?<|ѨßùGÈ"½¹¸×nç½²·¬²G Ÿ•äp#PkVøJ¯üßò眴Ý'Îþ³¤ùKþr+ÍÏzþFÐ<‚¦ÖÆÏM°ë†¡®^ÜFÒ^-•¨gz…G—‚"8'{åææÏ˜<¹«[yª=3óÿA‰4Ï=èÑC•¯Ü5ýŒz™ÓØ4S¬ÖW*ÜÂÁă–Ãa~[òŸ‘n|¡æO4ÿÎ*Ú ý S–-~dþKk’Gc D-£Ô[U†ý í½ÒBÅ}H%£0V+"òlU’~Wþby3É—Úÿž¤üÁçùM…‡”DÖ$Ž÷XòÖµc4²[èâK%•ï¡’+¦08yÜÒž£-(«Î|ûæÏùÄ_«u8ÓúL×Ù¬’²¨2CëQV¨ž¶Ò*œëWv_—W÷ß’^f›Ï‘þmµ’ÖÏF¾š[Ùü¹æ{Iã¸ÒãQ|¢í-.§ˆ[M Ás#i(ªq{g&‡¯þX~kþJM.µåß2y>îò$Í 73hImy}¥Ú»•0[—––JÃr¢5t†Fxµþ¥®Î9þbùkó÷Éú2y—òƒó68­µ›!õ‰ï´ÍH×Fw:æ¥(K¨e(]ÕÏE ½¿ó:ÛóƒÍTµóOæf±åGü¼òýü²yÛ@òL—WWtjËIr.íµfÇÌL‘ü!Œ\•g¿™ZuÇ‘¼¯åëŸ=ù®ïÎ~–¹¦ÁùeùMå­:ÓI¶Ö5ø[ÕÒ­¤ãYJ$щž³Ç„äà¨âUyö‹ ÿüã?å­æuªÁææF£­y¿Î³é¡'µ‡RxÍÝ後—…-Ôã(ÿV™‘çˆHÑ1–ƒcŸ“ž^óeΠÿÎGyö{K4ù¢êÛKü¨¶¸3ϧhºV°DV×3¬Înë×2)i¤{xeá!,1TWæ›|«æý+óFóõÌ>W×¼ïaåO/jv3Êê±þÖ~£«Û[̤ü0OpÒSËÓ–9z…Wª~Lþd~^ëš·˜|ÇäëmC^¬6^Xòž¡é×-›åí'ÔúšI<©ºÉ3Ë,ÍY‰ThÕ¸²°ÅS­GU¸óŸnüïù9oé~fyô?;èZÉDÓum)¦3~šîØÜÇÔ,Í-»£U²Ê=7 Uó$‰$ÿš’ù:/ëWvžsÕ5][Fü´·{?¯Úéšuì:†³boc›ê‘Ãwæ¥iö‚vUK5Ì?Îï5j~rüÞ±m òçNò½Ž¨jú—”–k½oZòxº»€ÞÃúX¶2Û´3•i­UÊ©eø>J½SLü¥üòåÇžü÷oæŸ?AnÓù×LMR+]Mågkèlxi±Å æ»å·a+¡ ¼FOÉø4M Sòn½äèµï:~WÇ¥~lêz=µÍÏÖ¥ÓüÃ5Ìþ™o~“¥Ì’YGlÕÚS!‘se%J¯aóG˜|ÁäÏ3~Q~bXù©ÿ5¿&n´}kNü¶ó"\jë¯k¶‘Ŧi—rB°,°ÎЈ¡•ÐH®JÜ?FÅY ÷–<Ëq}ù{ùM¤j1éÚ×’<™¦y^ã[P²6®Û3k–ÕB4e„‹%âuªMy¯åN‹®~Nyíl#´ý#ù«¦[%§œü‘®ºÜÜë^[³Œ:’5)Yš«=œòt!*¾˜ó6¹å/Ì/Ì?/iW:º§–uïÊÏ2_éwÌLT½¹°‚âH˨e’Ú$«†°Ú ÑWÊ?—Zw—–<ÿù§aç ÉPÜ4~^¿—4m'Xub?ZÿU½·h¯n£šyå• V¤q8û/ÊŠ¾…óä^cóÿ•õK-RÖ¼ç ÜÚ¬ùsÏþ\ÓítiaݘËqÃD¸„¨¹¤„¯Zb¯4ò—š¿$ì<—gå_1þy_An¶¯c«yKËïy¯yv5IX­.5m.úá–0Ö4=éLUôgüãÍß䮑¯y[òc_ºÖ Ñîb»ów“jM ×ÊÍo¯*ˆÃª5U~"¸«èœUþaþZù7óGAo/ùËG‹R·Gõ´Ûõ;Ý>ä}‹«=Ky“ªº~ŒUòw™ll|—¦_þYù“þrÈ¿™~T¹ ¡ä¯Í›ëAæÓöxjÑÜÆy¡Ý[6e 0jŒUá~UüçÑÿ+¿2lõ;ù³Aó iùKÍÚÍŽ³k¬®½åxšºv¹|m림†ÚàH¼®!ɯLUí~Kü°×nÿ()0ÿ+/¡Õ¼ÓämfÛËÚ-ôˆl|Óå+«ûƒk¢^\rU õq[JÕHœ)ÄœUãßšf‰¥ùsÎ׿•ÖsyKËž²ŽÇó‹òrê#f|¥¯DËu¦êë§~ìCÍÚ-­Ìѧ£"ȳ¬œPœU›y÷þrYì6¿+µÿ#ùvMWSóåà¶×¤ô//SC“P¾K„[Û 8þµs5·ÔîBÛFVVøÈ V8ªeo­ù"}f9Øþa~^jžx¶º’ò¬*oSYI¢F,Æ%ÔP‹Š–$Òžd-qW½þSy‡ÏŸ^K½ºüËò·•O¼Ùmq•&™vnžþɧïIw (Xp¸~41늾b󖙿-ùçSÒ´ÙäÖ<¼‰¥Xê]°õQo|÷åÍ2Bö:ª|Cž©§Ò[[…,Zâ™UUfOMU¿™¾D´Ö?(ÿ%üÛ¡yæâËüAæÏ!éZèÓgKÑ¢¸[Rg´ãÖMµÇÌsŸ…Q«E^“uùkù•æcÏ¿œ~\üÆmgó;I‚óË>KŽÎÚÞ*m=øÏc¤Þ_5À±úð +Jñ¹uhù#x—‘u GDÒ?2´ÝsòƒÌš‡›u½çGüÙüÃÖµÅó't;mJ $—K6V×z±,ŸPç…%yqwüÓò^æ¿%­Ü •¹¼ÔRÒê9P0å'úMœ×ÓF™ÛÔ!B¯R‹ß)Eæ¹òUÇ—m"³º×Ïž*ô-R8n-ì|Ý¥Înµÿ&IÏŒkÉ剗‚¼RÈËÍc8«Åü¥¨éwZÇæä€—^Q¶ó¯—t¸.ìïb‡I>_ò͵ÅÜÚíÅü¦A íÍ”R8¦Šœáô‹TDç}5åUó/™üòßó‘:®‡q¨ùRO/]hÿöB;‹¨ô«#%T»³‰$¹¬ Võ¢@a‚‰ 5劾QÖ®|Ëÿ9!ù™ ~H[ʺmÌ“ Kó;U0%Þ¡e¦i‡ÕŽËW½´ºúޱ®cŽx¡•+öjX•_X~a~LéºN•¤è¾`Õ´ ?Eó5áÓN“å¿(j¶öw³˜^q֥닥’*D’6ÅQ~Pü”ü§óÅýþ¯cç›8ëÚ,FGC†Ú(mÒíàÃ&½§Êòjº¬j ]N*…ãAмïÊ~T½—µO3yOÉõ‹Ëßä—›,µ”Ñ=Uvé¶í®Ecui%‘zº n,9««ÓuÏÍÍwC´Ò)õ-3Jü­ó®¯¨Ç¦é±hô¬7:Dÿ\ÔtXíþ®`šØ|f9”´J ¼eAо|·üÈü¨òÿåS[Kù‰åý#Ì_›ºÆ¥y¶ÒÏV·¹Ô|³äÙB¶Šð»H^;Ef©µÅÄÓ2Æ*öÿËoÍ¿É<ë¾oóE÷Ÿ<‘åÏ+^è°yÉ~M¸Ö4è.%ЬÚfk«›I&V·úÃNR;wY#E,*ôU_1ê:–ùtŸ•Úg|ÛlùaæÝËðy—O˜^ÚyÛÈp_Åy§ ·Ö=K­.hЛj™,Œ‰ÆPB¯£|çÍ2yÛÏ¿˜ÞSüžÔd¾üù´ÒtGÍk&ƒc¢ùFõ’ÊâHî]ݽÓÏ%ÃÅj2!pÀœUç>lÓ¿ç|æMCUüÀüÖÔ|Áç-Rá®5ËOÊÈ.´ýj³úÓiZ1ºdºŠHÉ3]Üz•RÛq4UsçÍ'ÌšV—¦YþQy6×EÕnƧå¯1ù«ó?MƒW¾¹’! ÜE%£Ý\ú†T˜ -()Š©ùóò÷Î6LZ·š¿,ÿ1µ-Y²Mg ùþ2[Û) …ÓõK9•FìQMs°'bf‰ä=gMŽžX>bü¼Ðå¹¼Óõ¯0Ïþ д˻†quèy>Á¡K“¿9f»VAÔ.*ú_Gü¯üÞ·³ÒüÝä΋o0[\B—ZV™Σ&sm(çF÷×úªÈ¬¡j:Å_9þjþm~`ë_›žQü¯üÅü¾Ñ|ï7—£’îïòþÖ[æj—Jgq¨ZÁ¦·ŒJ͹,Á›Õ)N#}£ùëTóÇ—otËÿÍß#~PèÖÕÒõ=Ë«$Z֔ʣ•²ÞêrÚÇi2)5‰+±mоŠü¸ò×”ü«å=;MòmàÕ´§y|Â÷+}s©Ü?÷··w “q4¤UäbI>À Ub¯‘ÿç%¼Ýùƒ«äß!ySKó®›åmqgÔ¿0|ýäÍ*ãR¿ŠÆØ„M*Í B`žíÚ¦`êÑ¢’µ'yç”ÿ.íüáÜéß”_óŽ6?•âòF[¿ÍÍ{¯5åvÙîÒÂä^Ý^Èz¨º¹‰||1U{äÿœ~ò—™<—uåŸù^¾oŸKžßó[_†ÒÒkm>Þ3MúZåY-4hRë AJc.b¯*¶óoçgåƒù9 ~\êzN‘aù›¨ZÛySò;^·¸¿—ÊV¤ü,ž÷ZânL-+¤ðÕ]ýˈñUoÏ+ÿ7E§NŸŸŸ—š k„Úu§œü©%µúÚÈ¥D–×0^\[õhžBz¦*Áü™•µŸÊ/8èPKkù±ù‘¯ê¶žfO6yY¤šêÞûCHþ¥£§F`Ô´ðÂ9äŠ'PÓË'*±ª¯@Ÿó{L‘4Ëé|亇åïælö÷wjÕ®Quo-hÖ‘ õï*k7NMÌ—’¼«ä°$újÌ«)òv­ùä&ü˜Ô´­.þÖÊo$ù—Z¾ü–)èÜÞéÃYŽî KwP#¿Ó쯣1Dª9px E`ÁTçξTòççŸæÕæ¯å ~=γ~\i¾aü–üʲv隆©_ÛÞÄásNw1Eso a¹WN@ Uçzmþ³çoËûÝRÐ!òþ¹ùƒ£K©êžO²F-GÌ–;M­y\Ëè¢êöW–œî´ÿݬŒž¥K3*õÿùÄÌÉüå©~wIæ$—@ó׬/õ*ê-B+ˆô[+K믨ÈdŽi­‹Š­<{b©æÏžõ¯1jwæwä·åo<Õå‚ÖpyãK°´¸µÖ´ä½Æ`×qÜKo!Gh½Hú‘%KUäBóŧ<íäÌ›&y§Êß—2èÚŸ—/-´ò寵µòèv²ó£ÕmJÂŒ‘H¯8‡ÓU ©ÖŸ¡]èßóŽöZŒvò~lÎHþeé×:M›Nõ´fóÕ-ìÄÁZOBÆe‘Ú8þÒ?“UVy¯ó/ÌEóþ¹æï3~\ÝyEóÿ =B™5­2ÚV[é¾f¹[Ë8Ý•EW€Ås<¤õ!â¬_TÑ¿<ÿçÿ4ìÿ4ü«äÍCÍžB¾µk_7Øy/JÒ} GEu2%û&ÞÙe¹·gõcgµ¯§ªQŽ*ú#Vü¿Ñô_È1yÃÊžgóæòÜh:ÿå¼qž·Úô2ÁõÈíl>¹vÍvìd›œ€–¡RIÅRÑ¢ØùÏLòg™ÿ7-&ü™ü­ò/•õ$iù®ê=+^Ön5Xm-iáG+hêàŒO$%ŠðUþXy^ûó ò—ÍÓ'×ÌzÝÿ›µMSÈ™/e¤Ñ_i¥,­/ZÚ ª¬’[2HTçÈRF\U-¿&9|ƒy¨kß–¶ÞBóo¥«Zùº÷IVÒ/tÍZ†ÏQ‚âöÅb’EŸÔõeVY¡e‘£!±WÎß™~vò¯‘¼¥¬§–uúo•íVÁtÏ/y·Ïº„–°¢’2!’ÎÖªuUªGÿ8 a¬éZ›<Í¡iþ[óæoœîÖ[Ëo3ù†æÃWƒA‹‰¶u€i÷óÉìYĦŠÿÄx⯵|Õù‡c¨zþLüÛò.¹ùzÀ¥æ‘ù…þÐm/`<­®­õx3Ñ8ä¾¼QW¡ª–«Ä|÷ç_/Ç£y¢ÓFÓ|ÿù“«"éRüÍü±Ö-áÖ|Ãu*”¸Ñâ.$‰f†Vž’­ÉÁVKæ¿'Øë7ù»þr—ZƒÌÑÁae¤~Lèo?è¿.B“Gm{©É4/o>  ’@÷ItåÅ)¹Uéÿž”RÕ.ßÈÿ’Z&¯çýEï´{»Ö¶¸µ¬öWZ܈q2Z½YgfôÍT*èþhó†³vðy{òò÷ÌæÕ$‡O¹ÔtK}DÛN¾­‡Ö-mc¸àöÎ})B³ ÷œ•þ UM¿.¼Íª6¦Þeÿœ-üµÔ®/..ÃTS£´Ö°Ë1#ÆÖ 'hgä9NqѪâ¯8ó Ô¿#4í;ÎÚ‡üâ¼³yúKF²Ó|Éi=«éÚeåˬW’ÞÌmI´¶vÚ;…^Q–âû*šù–Ï5~qZè¾hóÍãèž_gó>«åÿ+jÍ¥hžW´º‰ŠÅ¬yÊÞÒÒî²BKÅj¶ä²QÚU^/бoͺtw®ÿ”¿—v»‰æ¬ ;Êú}Ö­æ;úñMiqªÝÝ’t°Au#Ã{q3ýnTàª#«•Q^_ü¬ò‡ÿ0¥òwå÷ä4ß”vFÚ·›£ón‹¡ëún›¸ýrnŸO¸¹Ûӆ㠤ãðî«ëoË)Ïù3¨j7mÿœ†ƒ[òeÕšÛé^MÕVÎÆËOY{kqqs4Ꜩ‡Ÿ¦µøTP Uòv±{ùƒÏ~hüŽ×®¿/|­ªëPØÙ^hºÿËqë¼#\K'iÍe¨]$º}Ô¾‰ô&ôgýG«Ø?(<ë~PyË̪Þyóò¿ëÆ7Çt«¦ë^HžyÒ£¼ÑaI-â†ÒV­ÂÇ$B«¤L•ÅX÷™ô¯*êÚÖ£¬jsõ½ó“UÑu=^Ú@—pX-´öW0ʤ2Xlíná‘H*W’° ÕUæß•¾ó¿æ–ukÍKËÿ£4´4¶ÿêÚE…µÖ¥æ=c‰â½¸òÅÚÅg¨«Ã4|åŽeš.h#øy*úÇòsFÖÍ:ß•¼Åå}+ÉÂÝ`ó§‘thncêyG<º\åpU­òõÕ 6*ú£v*ð¿ùÈ9ëÞYòm‡—¼™p-03µ{o(ùõzó^»æ½KO²¼óMìž]—Q»¿y=+,†•«BÐg!N+V“ÉñVæŸ'hþ}½ƒóGŽûóË?—÷zdžkÑ®OüÃò¾­¥7 ˆí§V²Õ"µÜ”I!©àÓ×uTu«ÿÌÿÌ?*ùkó òÏ̶ߚW“.åÕ?.|õ¦ÛÛØy·MÔDOmsm­iwÊÎêÞH¡¸Ž$†zHœÂœUã·ÿözw政3ìü…æ¯*~ki‹ÿÊÊò…¦“yq k¶÷‘Gi~öŒñ‰íïZ(£hý@‘3F¾«ñ⯦¼Ÿ™ç_Ê-kÈ÷Ÿ“ÞjódždÕµO0êpÏÐí­ïõMJmJŠ÷P¸µš7·2 çn®U”• ê°=GQòQÑô"ÿÎOyŠËóóŸB¼¹¼ò=÷’þ}{I²‰9À÷šŒ6è³EJ;º$nhYâ8«Óõ«ÿ7ëV~kü®ü×Ò<Õ«A¤Ku&¿æs/–<Ù•”ÉÝ¥Ìú}±Ó.d¶fUq{bMṗž*Ê<å¯~lùKó‡ž5#þcë^n¹Ðš +{Û/)jÚÔ,VItÛÕ—Ck{¨ÞÖI $‡uøxì¼U|áäoÌyàÑ?)üˤ~sþ]Š?/ô Å¤ê-©ØK£é“E®ú_×´æ†{ûÁõ®.H‡Ø…òfU1óæŸåך5wÌz7‘üÕù£ùaåÛé|ÍçK6K)±Ñ@Xïj±Ám`ÖëÈŽ;w¥k¸«Òü§åŸ2ù_Éß—ÿ”ߘþ^Ò?24û¥:ï䣤jבJú"'¯©hpêöí`Mô¥f·iÃ2NuQE^›k7˜¿çäóÏèÛoùÆÍ\½ß”5«öŸQ“ÊÚíäjòK¨¤u¼}*âáê]=Y#nDñV®*³½üÄ×ãп1|õä=cÏ_›Z=…Ñü¯Óü­œžE±¼Ô!0éÚÜËz$”H¤s–íùÆ…½8Pý¥SOʆ‹þqÓ̺ÿåϘu—Ë3è1y¦óR§jic5Æ£)`q¸[—Šþèt/º­ùSÒü¯¦Kùµç½fÃËþzüÑÔ'óu¾‰«];xlÈXiV‹p©"E,:z§«Ä’egêÑWÁ?ó“¾uòOž_BµÕ¼ËåÍZÚmRÊ+©mõ5kºŽ›kqsÝÏhòCm¤ÅÂÇ÷‹$‡öz*û‡þr¿&ŸÊ6~Jº·Ó[Ê”þZµÕ¯5«[‡úæ“gëC§iq[^Û'L„=Ã…/è«p !*ñÝ3Ì¿˜µÔ&‘y­_þ^5ÚØßj±jÚœ7pGd/^ÏKÓõ&[Ÿ¬=¿ïmÞòDŽeW ø£*ó¿$ùûò›ò+Q¾Ó¿(m¯¼×ù±ùO¢k±Ã.¢úÖ—up÷vSF£Òú¢Ë(o#ã±\*È#xÁÅYÃþPjjò£ùÁù¿æë›o-yãZÑõ_*é²ÅlÖÑj „Úö°`^ |l$oR7ÎÊ¥¡v\µ²ów˜?+®µ6}cË·@&†úÉZîÞÏWÓ}8O¦.Y®# Á)@ªäWžç ¿44o9Ëù)«ùô6£¯jÚ§˜§¾»žÃ΃ÞÎí—(¶÷VöаzpÆ#_TpwÅ_HÝ_~]éÿ–~NÎ@~Sj•>W×êâö;·Ôt[›É$õ«¬Ø\Ms ÆCȽ،“ûL1Vo¨~Oh¾Lò³z¿™:ÄIÑôk»Ý]tí;ËO{¦ÃlÏ,o{”$ýäJA’2ŽkPÀJò÷—u-;òûò¾ÆÊÂ×Mò½Ï’áòžvšëIó6£éÙ9.±Éuskmf_÷œRi[áâåTÃÉ—ÄSùjøõ2ëZG”íW]ÐVòM3_¸Ñ, Ó¯­tëÛIma»k 蘯‹—†HøMSº¬‹Qò7äæ5†§äCS×<·­ykN¶2\;›{=FßôE¦§µÅ&:†´Ö‰k#NI‚Þ)a$1Uä[MGÌŸ™­¥ÿˆ­t=VÓËZ ~Qù¹c ëy@°{kÇxЍšÎú –‹PÒ[Äx8ñW«y»Íþqòž½å/?ù‹ò»ZÐ2tªé>zÖ<½n5o/kú N¢ö;w‚g¹S?¬Û›˜b‘J˜Éev «í¬Cõ­sýǧêú”?bœ«JW¦*­Š¼Ûóò§Ê?™÷Q›Í°Ý]ÁäíIõK:)Ìv×2I–Ïä`4L’Èv= EAUž>ÈØ(ZÄšq·ú¨±D ƒ‡L  jJb¯„|¦š/üãcÇùu¥ù×GóoÙ Óµ?4ù’ê-?Kò”ížwÒâ»ç2ó~2Ô[$Èó»4€Gò °;èÞF¶òíÅ×åéi*¹¹óæîŸ`|±å-'4¸¿mZÚkAtyµ}.&‘Ûfnøª3òëLó›¯èš†…«ªCc£yŽûHüÄóÒIsç?4$iU¼…o\éºdwW$P%Q‹qûj½òOOó=½¯®?)¯´;Uó–<æKÖ-'º±’þëFx.•’ÖêÕÑæ°;ÈI5bY[y§™ü£cæ É/¿9î¼×ä¿Íf%_¨ùMÒ-æi9Ò!gªÚÇwpìXŽYÕûq®*Àü£qæ.j#GüËóÏæ¥§åÓ5û¿æ ˜ u©h¶¶wPZ´°IÄj·Ó–Hä…G¬«F`«Ü3?(¼›¥hºÏ—´‹ÝOÍÚž‰uæÿ=ùÏV¼óèK !Âa‚yÖ9.îÙJ[¯ìzÊÀ*:©oäW‡ä·›¼¡äQ¸ÐÿDiâ/̽>ö闺Zn. ä‰Ðj‘²Ç/hÌŠA¥B¬ÓóS[òOžaü¥å½;KÔ£ú¯’ÿ4õ« ®u­^êxÌ~‡—tË3k©ÝGÚD•RD%”<_*ùThß^Oüº°Ô¼³ù«ªy·Z²Ñn<µgå{KK˜áhe”5•¼ü·½Ôl0!6±ÎSâƒ%qVooù]ÿ9©Øhö^nü…´¿²Òu ›Ë;K/1éh±Y뱡ÕìáY6·0Ý®Ø2ôySâ–*ÂüÍÿ+¯ËZÕåµ÷åÕÇ—î--¢‡Aó7˜µ»H5;۰Ѥ–Ÿ=€6÷:Ä1IýI/` ÁË‹^¶ÞJÒ|Ó§j6Vó–LòRº[ßj¾Wд;miÚ½œžºj_£u VI´û¯V†b#‰Ú”<[|Uôä§çÍæ×ÿ—žzŸCóNõ¡It™ÖïCó5Œh9_é3Õâ‘YMf¶<þßÂAÅ^)ù™ÿ8éæËÏ0^ù×ò&ïQòþŸ¯ÞéšPü§Ðï®t{$¸•ÍÍíµÍ´žƒ|cíÛËÇ’übмNõµŸ=hþg›ËÞeŸÍ×2ênŸ~XÖ#Hüáå»alž_¾™šÜ,Z­¼ÌÛ@91r È}ùÅæÿ3]ë þ½ÕÆ…=¬-åVò캤VZ–Ÿ:,°Ü OI³ÕíA؈ÄÖñ8ñi‚|;ù óðÓyÚ]#WúÅåôséÞrÔüÕ¨„–4w7…ì6–Éé:þî8¡ d+_‡lUÿ8Ýs¤j˜:åµ§•|£§hÿ™¾Zš/5ùÊ >£%’ÝéQÁ§ÚêÒVXàÞ[­ÁŽFn‚°«Ñ4ˆ|›ù‰mgå¿Ì¯Î)*´MdòÞ«å;š_1z|Â;[ýQcôm4„º§ÔMÌèì«pª¯¬5_É#~KYjCÊúů–<³¬#Þ\YÙùrï]ó\s¥ƒi÷÷šUΟ7Ö9Km+Ki„ní'íSNdüÓ¶òOåß“üùæ=EòŸä“jZV‡åo(êÚeÕ¶¯eh׋g§êRË4žœWԛʞaÔ<ýåÏ9L×wWÅòjV’°rc·Ž8í£âÀ«ªÄ§£üC|³ù«7æ·ž´{¿)}K@òŸšüǤyCJüÄ•ä¹Õ¼Í­Ó6­cåèÕÐYÙC\›‹®,³Žh‡‹U•[ä-gÍž~üÄÖ,[P]óYó—š|Ýùæé-乊Í|³y©h÷q,±4–—–á$+‘nIø™Weú·í´4_꿘>]ò·“¡üÀÕoüËç¯2édMs•£ÙXÁ=œ7rÓT¹p%DRæ9$‹ãi9^mæKùüÑæÿ0izï“¥Òî<ÿ§ê£R°’#ÇËqßé aäË+¥§îïo_Nk•U*Ð;Gr¤ªú»ò_Yó=…ΙäÍZúãÍWÔü¥aæŸ#ùÊöàÜ_´s²¥æŸ{!$ÌÖï,mÄѸF ѳ²¯¢±Wb®ÅR½g\Ѽ»§Íªëúµž‰¦[•ê7óÇouó^½§ë—2ù_ò7òÒ+™<Ó6œ’4Ò÷öSAsnYª"Áë"yÈìÄ€«Ùõ¿É«­SVòUÕß•t"y«Î—qÛy#J¶ˆjú¯—ÖÙ åk7IëÜ]Ãn¦8a©ŠÞ6#…‘UH´ËzW”<ëù™”÷•Ôþzò&§g Kzèw:ˆK]]ƒ/ ÜÛL×X‰}ffàqW¯~EùÌsyIóßç_˜´áa«ÚØë—zLW\¬®Œ6ð%…î©y*Ãê¬vñGÂ܃ 7ªª+Ïž}ü—óUÿ™ ò¿”üÅùÓ­yëF‡Ê¾g¿ü¼In`|RLéms¬A<[!iÜ9Y¹wƒc:W‘ôÉõ­>ËL»òG–¼ÿ ”ºfo®ù¯UóÞ¹¤Û:úRCeow=¿ÔÁÍ» }ždSH¼£ä4hqù¦ÇHüÜò÷FüGK½JëòçO³Ó졊+5•ÍýÌÓ4k-Ì5 šÔ×d?•_™›Z޽o¥Gù—¥~e]ëÚ<~còß–|Ù %ÜÞé B›½:÷O:Œsª–Pü¡øy-i\UìÚ/æoåïæµÞ¡ùsç_,Åc«¤¦'òæ¾–—º}ýăNºG––„Š8ÊŸh¢öUŽù§þqwËš®¥k¨ùoY‹@+ {äÕô]3Í2H"º×a»¸‡a@…Ge«üÙüµòE•Ïå¿•ô+V½üÍÕåÔ üµóRj÷vkåémm ÷z”QÁ*‚4 ¼Pñ˜‘Œ³QUü÷Ô¼«Úæ]ÊyÆËÊ÷1iþmüÇÓmÞ,±úðÜy£D1§èØž=ÅÄRI §*F¸«üèü¢¥ÇçÇ䆯cåï0èYÔotOKY‹V¹ºÔàÕ KéK›{•k”e!…eVQUZ*óK1éÚ^ŸæI%³ºòÏ–¬µ7òÞ½¡i÷ksù{æHù9ˆ5¥Õ„ÒhÚ«Ö¼¦‰"wOMd"5^qçO(^þfy‡òãòÛEó~µ£]ù³Ue½]WüW¨^[Ø%œçPw³óÍÅ”'Ð.€©vü,N*õûÏ#yòCÏ’ycɺ%ö™åÿ#hzGœŽ™¢Ë([á§=ò¬z¤«"½Õþ£¨hmÒ~`¢ŸN”+нŽïË^Vò/ä3ØþiéšN¹ç¿2ùXèºüq[Û¾¥¬ÞÞ%M:ÜÊYÊ\N}1û$s¢ïETµO/ùÛòûBü„ó&¬Ûy›ó˺]—õîy^ÛÌbú;u¸ÿO+4–ím%©º3ˆ]Š#‡Z•fšŸ—9/Ö4ó¥ùwæO-É ¸Ôí5-2熛w ImÃ4©r°±“ÒcJü=•ywå‘Ôü¤|·ùy}æCÔ/ïoõ//y¬éQÜè¾imbI/ç“Aœ]ư;$§•ª‚GîÌ‘ŽXª+Ë¿“ß›¾Kóš—n¼åÝV¹“QÒõ¿-è–ð:ÊèˆÐÉ£±¶·I[‰åtÓLìݨ¡U3üÒ󎤞O·ü¶üÂ×|³å]OXÓ¢“ÏŸ˜××)o£éOrÑY4)pf¾¹hKE Œ‘Ë2 WUþgù/Ì:åÛù;È¿˜šü¿æÍ*k/$y7ÌIõÜ—Ó”šÖþÓU‘œÊ!™„Ÿ¾GPQ¶E*§ÞWüÊóL–ðþ[~yyrwÍVë¢ÿ‰®`‹N7×Z„“Ù5‹XÆòFÌÂ$Y •ƒÄCðu °/?yVÃò_Wò]M©y'Hü§óÎ…p÷27©qª2YßI<Îå¹O}ÁÆìY›a\U2ƒÈÞTò¯¿+<»ço.µž“ù•¡ÛCåýfÊâçJ½Ñ|ۧڬז‹e%½ÄI©D=Aʦ†FàZFlUôµåþ‹ä'yÇLü¾±ºÓçÕÓQÔ£¶7·weµ;˜˜´±}ji½6’J3 g%ˆäI*¾IÿœWòF¥ç ß"~ajÚtúwåÿå”­¼§ùK¢ßFñËq«¼ºÿ˜="´œ­âcÈ•ß-ÕE~@«·æO”<*2ê¿’:'Gœb’3‘_ë¾`ŒÙ;Wâ+ukO&އ­6Uöž¿äß,y¢óB¿ó­uå«–»Ñ^~Ea™€Šú+à€Ê®%R|}ª…}Kó ?RWóžÿ?|µ¢Ù^.òÅm¥ß…]ëÂ+kYÍNL|N*÷ŸË¯Ê}kÈ~c¹¼ŸÎÇ_ò¥…æäŸ-˧¤i6W—Q\ýY¯f7 ˆ$|0ZM1W·b®Å]Š¿.îõsówþsÊûH2Ý\ùgò‹ÐÓôÍ=Â[A ·Y¯ç&)ÍÝø†yQ¨PÛ®*™ÏO9~LþyyûAüÍó~¯®~Bëڥϗ<«æ‹×‚Kí'\²Ó-u9!ÛE ÝnŒjY[p»ü.J¯N¾üßó~—ùsùù¬ÛY~`þx~}[Ã=Ž®ÙĺUœ¨·7wéf¤ÇŠUÝûõ8«ò+Éùyù±çÊŸ1¬ÞGó•——%óÇ—¯¿,'›ôv³¦Dd[>•¯IoÚºž!Q‡í Ué¾Xüâóg›¼³¥y÷òûó{É:ß‘¼Á;Xi ç]*ëMÔ¢Ô‘ä²»’ÆXbG@¤í¯QQCб¯9ù[þrÏó^=çM¸ü¨Òm¬¾·›çmUÖ%i,ušÒþÑ­]CIÁÇÅÊj1W¡h>}ÿiš_åæ­¯hÞ_ÿ_é^P’?#é:†£k¥\ÞªEai5Íâ̈ÍU²7ƒ'×|ñæ¯7y[RÐu?ùÈ›¯#ÿÊÕü¹ü«ó<ú¯?˜î¤:¼v–ýNêûMÒá6ÚR$s:ðGˆ; ,Jš(U‘þZ~fy³NÿœÄÔ|‘æÿ9ßù‹È~oò4>`ü 7ÑÛYÅmkiòŸ•?6¿0µRó‡åßœtË+}#N´š[­b1k,7>Œ?ˆÙ/6ãö†ÜK*ñŸùÔ}̾zòwåç˜#óçüãÞ§[ê?–~g»‰–ÿHºÔæi.´I^X •‚”õYJž?Hf+аïùÊïËÝkÎʚŵŠÿ‰tšØkKu Ñ΄=¼Vz…·§soqê…eMR'¶?e&ˆ%WÐ󇿞ڷçåÄžoT‡óÈ÷ï¡ùÖ$‹ÑM¬7>˜$)•>ØÕèÓzŸç•õ5þ^_Úè š¾¦ëÖ–î’Ð÷ß½¼®ñI:ÂcW oµqWÎ_—šÞÿ9ç7k¿—Zm¯—/îE›óÌ7Ö7qy‹SÕbžm›ÐŠ+hí!†~*û³ØT¹UègI‡þq÷ó+F—A"Ëòƒó—^–Ï]Ð[”©¤y¿R!¬îl€¢ƒPthæJ”I}6@ŠÏмïÎÍ{§ùßÏ>`ü¬ò´^bòø:‡—¿<%Õ¢y´ÍBæF·»’Ô-³½ê¼×F²Gm$|œFý "¬òKAò¾™ù“åŸ?ùFÒÿ/ÚïÉòè¬Zùƒ@×äôRÞÆýVfµ’f(¥D.Y”<’-аí9¼ÕçÍ#Gµ×âòõÖ­æi<ñç»™#‹ëSÜi°0Wî"žo%Œ0[ñ%æK'%NX«èÏ#~IþRþhG ~rù—Êú§˜µj}¤Üù¥­„’¤ªbQkM?…º›»pŽ—àR~Cx—’týbïÍŸ”lòaÐ|³æ-f {R¹ü­nEk»I¯tد›ûé­LºzË4g‡®©Ê6ÅS_É¿>ùWþqßÍ?™–^yyzÒi&óÍö¥jš½ø¶¼Ôî‚][NòÆá㬑}^XP,‹È8YAä«%ü“ò'ä¿üeåi.Öç¹Ö<ÓiäˆuIɰ‡Xº¼K;´·i\Á2ZδPA‰Žê¯Š¾‡ü»ó†»«~QÙù’þÎMÍzEýž­§Ûã–óSÑ¥šÎt@̨­4Öæ• oØb¯Ïë­QÿœŠ×mü‡wæ}'Eóg˜$¾üÊÔu;Dý5yæ.BiK§¼€Á§A•·n íé?ªX¿'Uêÿ—Qò¿“|Ýæx´È<É/“ÿçt7òÿN¾ž{t½Ôîo®ÓS¹ø#"Úê1Ê'ˆqR” Yçç×üï¤y˺X­µ <Ú\Æ€£ê‰¨@°«´¨ÑÏ%«'iUªŒ1WÕ~yü·ò·æ+ùDù¦Ú[¸ü•¯Ûy—G·ŽCm}f’,>°ãE2rãаZí±Uäó’>Ió·ï?!­¼£d÷vZ憮ù²A"F–özO+M'"€ÔPÈŽØ«é¼UÝ6Š¡ÂÊ+ëN;X“P»†+{«ÅP$’(K´hÍÔ…218ª/|÷äÉÝWGüÉóïæœ5;mMµ0ßj—Z-›?¡¥Û_ZÛZÜ\L½ÔëlYQ>§'ª¯¡1Wb®Å]Š¿¼§ªy—òþr‡þr/Îw¾NVOóSAkw9H›ÌI$ök¥´¼¸ŠÞH˜2BáP–fUÅVy‚5¸òoŸ|™®éš—›ôo;kQy–]+X_14zf¦&3K=Ž·y z0‰‰âï1àV«ÉTœUìZÿæ|ÿ˜Z÷åÏæ~™äÛ¯#ù÷òv{Ña ‚9èZ–™oõ{½:ãPòк{*… ’K‘VC]•J|›©Mªy×ó¿þrOÌ^jÐõ¿=êþP›ËžJü¢òEÓyƒWÓcࢭ¸7 ìè R³»PmаŸ.þVù¯ò?ÍÚG’ü™¥ê^jü•ÿœ¤‹GÒu böÚâÎmV€Öù¦·Dõ-Òr¢Xв¼‰ŒòUúåkikcv¶VÑYÛE_JÞXãZ’ÆŠ RIÅ_—zÑóFù¡æÍùÅmÍ:ö·æ:›/ÌOÊ[HÔ˺Œ¢ãêwµ¾¡éÁkA"¯«ê7³íÀª·ÎZ ¯å'—?2ç¼ëçÿ%é?•?™ZåÞ±a¬ ™¦ód0ê׫yua…mëÍu%ÅŠª¢¡™[ìâ©·æ_˜4›ï6én·ÿœmºüɺšÜi—Qþjjz?”tûd‰½ +J֣пf“;¼«1 …öUô“~Iê^pü¥óå²~`^y“Í6ÚýïžtmFyç†]{NÔ,d‡Iž;«y¢eõ‚IU™LË'4£ÓbZGçÏçpСòç•`Ó¼Óå˜t=B×Nó½¦6•©jµ­½Ô:‹¤Í,²Å<6¼ÄsJ“G3Žh8©LUÿ8ù}eù‹æÍ3ÍÚ{ySô÷©§ßéÚ‘u]e5)¦´¢–;«ñy0gô †G‰V.NÅqW¡y² _ùÈýüç£yŸHòMÞ©5ö…䨖[»kSÒtíTÀ‚kô¹T‰.ï­«rÙÊ€•BÛK<¯aÿ9å'ò«Dþq¿JÔ<Ûå¯6ë:Ç™|Ûµ¥ÛXÜGªGv’Þ‰´É$íyÊeàXú{ÉBªúÒÎ÷Ë“UÓôcQ“R×5›ÍNúßO±¶’ãQÖ5;¹fÔoÎÊÝdšJ4Ðv -оbü¢ü¼ý5uå_ùÈEÕ£¸Õÿ3¼Ó>¥æ2-Ö{]2þXî,´ä»»+%в¸¶Kt” W†Y’ Á±T“óÓó¢í|Çä¿0K¤[ÞêÚœZĶ—í©ê7ðY\\KjÃN·ÆÊ#éú’Kê ı'UàÓù£ò·Ëÿ–|Ûäo=®™£Ý_Ce­y§XŽ{«Ë7»šXµvÔšÉõ–7S+òe…WÓ‡Ó*åWêå_™¦óåß“¼ÃyªéÚΧ¨é6²kÚ[«[ÙÕB³ñ*䂤ÕNØ«Ð1Wb®Å]Š»v*ìUØ«±WÏþróŸšüÙç-Oò«òÏQO-OåË[kÿÌ_Ì颎ê";š¼:}œ+G%ìѯ¨Þ©U†&Yrʸ«ŸòcòÏó"×Q×'ÿ4$²óŒǧù«óÊò?5&ªmE®µo}%Å¥ï¤@(² ÃÒ> ¶*Æ%ÿœ|üãÐãR²ó'–ÿ1.ý6Am'×| î¤×ák/Ò0+xD-|1W‰y Csæÿ!ëÚ!½ò¬Úïš®ôMAu];ÔÔô½[D¹Hµ:îæ8ÜM…‡§'­%cÊ=¸•_|yÃò#ò‡ÏWGRóô××?cÌÚz¾™«! j6-ȧ´˜«Ä¼Áÿ8Óù©cu×åGüäÿ›¼¥olÜítO4Bžo¶F„š¤­2ÐÈ‘Š¤ÉäùÏ‹ ^8:¿.|ÁoÑ.¯´i,¥Øõ1ÛÚȵ#·,Uäüå˜ÿFÙy¿þrNÏÊ>Z¶`5.ù@‹O–hÁ©Xõ'tš^(¢˜«ÄÁ>C°×<ûù•äÿ*Eo¡þUyŒùF-_Q¼¹Ô<Éæ¯2‚ &›^»k‹» ;Y§¾ªþ¤œd'ˆP…WžéŸ›¿›>mƒG¼üç¹´ŽâÂ_3Üůٯ˜ì¡YÚF;M/S’hãäàÌ_‘d’¤ñRʽ/RÓ?3? åòÞù•aiæï †“Ÿ™Röøèv÷&‚;†»»Yn<¯2¢kyÕØñcøñWªØêÖºþ›šôI¥Ôfµ½‚ëW‡T¥ž§i#5¬bŠSÐaÿ£ë~‡ Ú‹¿6þR_صÔ)5Å[ëvf['‘%Œ¶qIo1ýáB[‘U(üÌó'ææ Ž™ ëZ‘7’SU´¾ó6™¡É¨Ý[ê1XËëÇgªjºžŸ¦[XZ<Ñ¡À•ø)Qò#xWüã]šùÉë[Ý2åï¥o,jójz¬â :ëM»¼bMŒËaôF;ê¼â ʨ¼W~¬b¯›nÿ-õ%j^ró&‡¥y íµRãÌ~ió=ÆŽ÷DMxÓùãÌúúÜè¿™ú—ÛËwŸ˜ššÙÛj—Rúê>¥éÙ4|ѧKy­Y€æké“É™•L¿'*áüÂòjjš´Ø|µ{¬zzþ…õ2oôkÝ3\Kí^ÒÆæ…áo}{hn"ŠEÿGò‹cLUúî‘#É#¬qÆ¥¤‘ˆ ªI$ô~[ÿŒ/|ùæ/ÎïÏ]SÍ7z.™ù¤þŠòìWv×þYÓµ B¦{pî!o¯ið5ÄW(Œ'Xã8«Öÿ7üõq§þMþFy–éaòE”ϧùƒTòȹ:m¬v–ö¢kKO\Q‘­îdµ`š„aB*¬ªyùKªAåH!Õ|Ï ß™ÿ4?3¯m¬ï, 5Y¾¸g¹Y¯…Ó©¶‚D2¥ ¢AnŠÁ=IXb¯’ç)(ÿ1üƒ Ás=—®¿//õg°4DŠÊh Ç­*Ê µÓíÎI"WŒ4M(g~¬¸«Óç ÿ0ìn¼ó$z6†|­å/Ìý!®l<©i<—¶šN¡¦TÀ/.˜õÝFÔMpy~ödÖpˆ ¿O1Wb®Å]Š»v*ìUت]¬_þŠÒuMSÐ{ŸÑ¶“Ý}^!W“ÑŸ‚‚EI¥ø«óSò J¸ÿœ’ò-Í–µ©Keù·ÿšsÅ)³½óŸ›ïu Qgœ$:e¨•b O!P ô×{?•¿;|ÑçÞ\ÿœOü¶Ò5˯$´š5ßüÍ4šNˆfµU m¥Ãn$º”(êí^›ïRªyæ7ÿœÞÕt›Í7BÓÿ)|³}}Á¾º†¯u5¡qÄO RYÙÒµÕ–½AÅQ¿ó¿óŽÚÇ写§Ü~`yÀyÛÌ–W7úŒqË(µ=N_V÷Qõ%ëÜÍ@…™‚*|)Õ‰Uõf*ñ/;~viþXó\¾DÐ<­ªyçͶ:lZƽia5•–“a<3ßßêW6ÐÇê²7BîhO(qTºÿóØùRÖÓXüÇü¾Ö¼—å©'óÜw:v¯¤Û4¤,Féôû©n"GbÔ0Ôý§Q¾*÷¸¥ŽxãšhfPñJ„2²°¨e#bèqWÁÐEgä]Î?’¾x¶†;ß=~aÞyãòšK¦+eæ;;Ù㻽ӖèHoa-**Hc©ôÙK/"LïuÝkòþ÷@óœ\ß[¤Þ_Óµ‘Í­õ’Ê%½ú)õ£¹D…_Qgõ8G4/EUôÇ“ÿ2¼§çû;X­ŸÒ¸ÕmäuÒnÕXMü„u-€nk̶‹Ó|áæùÇ_0~\jš?š ?ã£]\ÜMùw=ÒE5œw§•ÙòõåʲFÒ¶íkzÏhzªÄÔlUãYü´üËÕî´=fÏRÑ|Ýå­JmBïÉÖÍ›>Ÿy#VK›«+û›YárI.t›çþÑÅY<žoü¯ü¹º±Ö<í¬išÇ™m§ù_NÓ_[ó.¸ò8Âm¬//. ÇNFª§rÝqW¡égÏ~Oººóµ¿”,,58µѼåï2ݤM¬2^Éqæ Û>µ*ÄԆؘÑV(ãP}SвmgYüÃü˜Ó´?ÍÍ0\yŸL[K˜94ý4}7Mõ]O¸ÒìæÎ`µrñ?óËêe~ "¬7ó§Î~|üÙò?“ôÏ˯#_hë­jº_™®µ/5ÛÙ¾/–mã{Ãyq,S]ÃWX˜A2úœ‚òˆ§,UŽYyKÌ?›~v‹òÓó÷ÍÖZÆ™©è¶þsü¾Ó´‹; i›K3eµ¸»’Ò ¸§¯#n¨¯jq+вÏË?eÕõ?2Î/>›¬[yŠI¿Ò|ßäËÛsrúG˜™•â¼{hÖ•I¨_ÝñäW®yçÈRhš”]EnÚø‡EÖ­#ú¥†§a` Þ[ÝYz¬ë&Ÿm"Ü¢‰G:µ6ò!R«Þ¿*?4šÓÈúÚ~aj —>AžÛN›[–Fº›PŠâÚ赞áç oð-fu¨=@¡Vùæo2ù³YòÆ•ä\>qÖ¡™®ßÉ^`²Ò5 ;­&&1\ÝYë7 kkˆ¦xâ–"Îê­ÏÒa¾*Äó/ÌzU©Ô?'¼‡ä//y.ȵ¿ž|Õ§A¾‘~ì‘Ácgrµg–F d¶„§*"zŒÃa–¿115ß%y_ókóOÌ:Ç™<Õw•|»£êv–%ç–.óßÃw”ñ·)Î;wegàJ¹èL|Ûåk¯-yâï\üðüÑóæ&‡æ»­7Eò$*øãÉ_œ™•iüâÖt;»{Ƚ ï¼Á¤iz”7–›¾¥¨]&o§ýRe›O†õa¬N°Ë.¿ óSгÿË‹ ó?óïDÕ?9ÿ(<£ùiæÍ*ÏTKß)êQË*y‹PºxÓR±‚îÚ;IäTYÔŠI¤¡<¨We_KÿÎHù]Ž—åoÌ/X%î½ä JÞÎëLŠHmÅæ•©M oc<² Ö´Ò ŽQÆËѱWÈßÿ–Þ\ó§—uÛHo¬ì×M´²ò—–õ‹…FŽ(M×éMSVœš|Okm}}&àºI¯Æ *ùnÎysWHtýCÎ:Ö/åå…¬:ÊÉ}¨’›ë¶ !{_M`অ&’6¡£*¯¸>«çE·Óüçe¯XkWÐÝþ[Yy#ôU„–Oæ_/Ùêê±]K4—7®º“$«ÅZ”uã"±Uôw”­l¬—Ì?žúö®“ §™/áIèâY.zÞ©ÝPYiváîOPªÿóZG—n¿%¿)µhcµÔ5t·Õã¼¢4Ö×zï+ÛÁU©FcpC½:â¯ÿ7¼íeù‡ù­y¤ùÒ#ùkò¿”×ZœNú>¯…ÄŸW‚ÒÅý#ª\_j?¦#v>©1Êåh« Óìõísòïó‡É:m¾£¥kz¦–—ºÆ‹uj«ç={Sú¹ÔäÖüǨJªš]‹¼ãÒ†â5‘‘=8™\U~®yCV:ÿ”ü±®°âÚÖ“e~Ê{˜Zoþ¶*ȱWb®Å]Š»v*ìUØ«åŸÎÏùÇ­GÎþbÑ1.<Áiå?>é7QM¬Øê05Ææ+hà’ÐÚêpŽAK[M$²Æïé·B…Uå¾s>d³{‹>~].Cycsj "y“Ax­¤[I}u¸»/ZCm¨ECñ[Ü$”Bªkå+~]i?™šgµí30ýO@òÜͬ·–%‰¡q¨oªÜÌ}"ôI¡¸) ‚x*úó—òÃÊŸ˜—¾jÑõ]#O[õÓ.fòþ»$Kúeü1´–·¶÷)ÆH^U\20;xb¯•¿#<Á­y“ÌÿóŠ_™ZûMæÌßË sGüÀ¸!Yõ%Ð䵚ÒîfPµe–In?îÂ+¾*ôï?Î2jÚ§ßÏ_–Þ|O"jROw©[Ã-“Ý?X¾EŽêþÆxî!dK•Aõ›Go3~ñÓŸÅŠ½çò»ÈgòßÉšw–n5ËŸ4êË-Åÿ˜üÕx‚9õ=Júg¸»»’5fT2Hä„SEQ°Å^içÊýsËÞ`Ô1*-,§“YIÏæå=Ùô´¯7FñpõjRhíï•E¢*N)çU|ܺŸ”ÒÖ?!ÎAy“þpâtõ÷ågŸ-í=8)V?Q²×¦xàˆ~È´—Ò§ÙQŠ¥ÖÃȳùkÍŸ—~Aóu׿4ÿ˜RA}ÿ9ÿ9?zDºQÓ`h㸳[è‹Â÷3@>«miâœÙª¤Q•M0|õæ=k¬é:n‹¡yKMÐ¥òï’#Ôu3 ÜXxáÕu ›xíÞ(Um£ú i%á ³P¼¿º ³ß-~[ùÿRü¶ƒÌ×[³ƒÌö^jÒ<Éaä­Ow¶ÚüÓ3O2½ÂÈÏËKÄ”U#ÑôßÍsÊ>aM'NóVYÜÙZßy£LƒËú†£ÏpfÔâÓ­¬¥¼}GQºDâ³¹…yqu`Ź*Çÿ=´Ï*ùoNü®üÖü¶ó$š§å_–<Õ¡Ï­ùË·)y§]]iË ZbGm"Z‘$ejx¿áË“S7ùò«^׿(?/%ót¾b×$óö¥æ]/Í~U¸ }¡6¥y•¤Å¨~†‰l Ôµ;?¬ÃsäEtû9GÊDjFÑ©*¾þüÀ¹ó¡ù]ÿ8ûùÙoå _Îòͬ|Ùæo$Îk·PM¤Kj×…ªÉsl÷¿¦HW£n 1WÍþSüƱ—DÔ5G@×uÍÞDšÿóBm^îæÉ|ݯ]EŸ6Œ%/Â=>i~«%∑ÆHÑV1åÛ(gü»òO‘?4­5Ï.Yù‚{MSKüкQÐïlþµªGsvÒÃ7’éP¦’°žl†¾‘¤¬B¯JòŽƒç›µÖ|Ñi©Ûù'Ï>yó“¤ÓíomuÒo®fÔõxìnmX¥Z+ ËX]âг/Iæ½_òçÍ>I´žÏÉßž_‘zÅέ6‹¨E®˜,o —m9‹&œÄ´–òº(W‰Q•8T*Ç¿%<·ç_ÎM'Í_“>uüÅeü¶ü¶µÒ´6ùOIÒ†•uªIqj'–Ü_úÒ\}U úm2°k†}”ûJ¾”óßåßüâçå5õ—‘t.‰Ä±ù{E°G¸ž[·@²^H®dšdµŒzÓ;HÓsÓ~vÞy>çG:kY®£¡þbh >½ kzÄ æO6¦‘eØÚÆžYf{ (\Ý]É8šFåذ«*õï2ëZW’¼¿­þ ª\Í£N|ÝäT–é$Õ~ªÑCÏžeŒ¬²M?&† ;÷Š\¤q‡øJ*ýü¥º‚÷ò»òêâߌùoKFÔÆñ¼v±¤‘Èñ#£)VS¸ ƒ¸Å^ƒŠ»v*ìUØ«±Wb®Å]м&óóª-sPóù]äSóRÿËWRižc¾³’ÎÃG³½AûËYou àõ]A…ºJ£8«ä6Ë“ç<‘«þZk_•ÚoæF—{6™¦ÝßiÚ…¼Úž“q%œ¶—&[i™%KŽ+û´à«:×|ïùáùÓùGmå_)yBo!išÝ›èÿ˜œþl¼Ó`µ[ ~Vš­Î™kks<æIŒrzm4(€šlB¬÷ò+BòÞ½æMÍÞB¿å'凓—È–œû~”¬#j—ÑóG‰Mœ$„(v²‚œXªúßv*ìU wce¨D!¿³‚öÁ„SƲ(aÐÑÅ_šŸóœnk«ùIl,ô­Ëž\<êc¸GeÓši)Z²‡WôŹ)qº‚zä“ü£ù1ùkùÃçñ ÷ímsæãè[$Zþ”"H"³´Œ*‰d¢yÕ”•E1WÏWšüåæn‰ç_ùÈÝó}<“måÝ"âóËú4 ›ÝiC¨ÚÅŠXœe$‰$“œ’È¥ØúeN*ýü¸×5?ÍÉo'ëúÔhÚ·žü¥ks© T ×ö`¼ˆªÎ üÔW`@8«å»oËÏÍ=jzßåWç•ü´ŽÞNš-;Ïzw#L»—N¿¶“C¹hšTx¦„ú‚T^,+û¶àÛ*·þqûþqo^Ð<ãoçoÍIïoî|«-Åÿ•ô›Ém%uýQ‘õ}F9m]å–p'ÕË™ .¡À8«ÿœÕò¼þ\ó ~cÛ7—ä¸óg—¿Eiz¿™žû†…ªùhϬÙÍb,Á^W\q•YZTˆ0(Xb¯”56Ò<ãùÙeª¥Ç–<ÇægXòÞ¯c™ óƒy¬n X ]:ÞÐ¥ªEg¨­Hè‹$”çÉÀaоÔò×?/ÿ,¼úoV}Bÿò»óCÍ>^ó^°åŠÏsª~”·Žèò«žw°Pþ"O|Uõ—änm ~M~VéV•ôm¼¯¥·"I,òÚÇ,¿‹¹8«òÓþs¥ïµSæÙ'¹Ò´ûK6‹-T^Î"'Ó1Ï&‰éW~‚ó‡½1Wèwÿ",5+ʯÌmcÊpÝyëCò¾ƒ¯Ö.R/RÎÉV$µIVÞG‹Ônñ–ZìvUôƒ*²²° ¬e;‚Qо+Õÿç<Õ.¡åß&éÚß—uÉ}âI¼»·dóù£ÊñÌ®%·Ñ/D§XÚí$h€dR}Smä*Úù*ßòñ4x¥òu®”š$z$åæCcB‰šFgo€S‘<»Ö¸«å?þTþTþF\~_ù¿Ëz ÷é}SóH…—÷Z•åÄ׉,kkiúBå•ZgD–^Ÿ„*ðïϯÏ¿4¼ƒu‹å¨ü§§þbyR“jH­¯>‹}­Zi‘É$–ÒKo ÜÌÁcò<˜F «7Õÿ6n'¿ç!?ç! Òü¬ù»P×ìü¦yqìcY,ÓP:mÊZ[]°q*™Ê…ây늼óKLóGš|ßåo8ÎEézw—/5/Þ\éžXóf¬tÝ.9l§¶-ÃHk©ªË)’;xɸ—Š4ò‘HÑTãÌ@¶Òü‡w&§õ{?*kº½¾«æ{}igò·‘çx,Ävvú}ª7™µ­é¿ï †$ò-E_=þ}ëÓy³Aü›Ô4äƒòºÓWMòýͤÚ>“=ý¼€ÞE²I/ ” Å×;©©=¯ÕùÄCSŸòßÌz>¯ê-ß–¼å¬ÚG°ÜÀ §R„ˆ¯d–åU–òª&s%>Þø«ê¬UØ«±Wb®Å]Š»q4ÜìSо/Ô¿ç;?#b×¼Áå½ëþe›ËÖ·7:†«§ÚA™[m¤Mshe5¨^ Cx’7Å_X~nù Qüü…òŸœõÏ5ùWòëÊñê’þgiž\sö©©éÖ×Km3ζפÒJÓ$hÌ\V¸ªÝfÓÈyóõ·“ÿ$ÿ+4Ý.M,âÑfÒd—ȨבÉq=Q¹¥Ô1¼òFZ5´YBHóKâ¯Ñ/"ÿÎ*~VyNÓJM_O»ó¼ú|úve½ŸXÓmîþÔÓÚY^†6y n\+¿Ž*úN(¢‚(á†5†T$Q ªª(@Ø: USv*ìUØ«óÛþs¯ò+Ι6>Vó‡4©¯u¿/Å=–¹{c' û}8p¦(Õ£yѤ^5$Ô£…ø[|Uùuä/ùÈÎýËÿ”–¥oå?(:Íyæ}@HšuƒÎÐóh>¼#®6˜Ub“„„ˆÀ™ñWì–¥ù=ùo®y_ËžMó•l¼Áåß+ˆ¿EéÚ„k,e¢P9J” !r98`CÈÅ^‘ 0Ûý¼I"ǨTDQEUQ@€ USv*¥<]C-½Ì)qo:š T::°¡VSPAqWÈwß–P~]y¯ÊÞSòþ§yæoÌyo#ƒÏ^h™5™<« èЉžËEY˜)Ñ`ˆA»¸<*yûÊÖŸ–׿˜Ö¿šw·cü„üõXbóo˜cãËšñ‚+$»™ P •Š&¤lc¸Egâ‡Uè¾M×ÿ0¿,<±c¤k ~myB‚?+ùóÉòÛO¨ &ÙqIªØÏ4Y‘sk/S*#lUùwÿ9.ù‰©_iÚ.±¢µî¯|¦ÖòëI3j/ ÕÇ DMѽx^y?t«pèäý¡Ô⯭(´s̾TÔ?ÅÑþbÛ~pÜÜÞëÏåO&ëée?–´â 7N#P½†Î10‰ŠÄyîX¸QÑW¦yþrPùfïÍÞJóžç½ro&É&³/˜µ=2ÞËo+:D[PÔM›ê×/,ê‘»² q•_Iùó‡ò×ó*[È|‘æ»]y¬î.-‹Ä²Æ“=©A9¶yQuœ+4E”«Š¦?™žz³üµò'™<í}iq¨Ç¡Û·ÓmË=ÍÌÒ,ÐFƒrdšDM¼qWÆšw•çüĵŸÍ1j‰ç¿1Á8ÓîµS+‹@k/×u›MÞŽÍmEÌd’ÂÉ õZ­È*ù¢ömKÏ÷ߘvO`ú%îŒß–ú%ç–Zɬ-í5Ÿ2ÙÃ<ö²¨ŽÚò+(f(7Yy†ßr«Òç$´í?ùÉ/6Øë:–îÛÍ~AÒ/4{Ìk c5½ÍÝ›McÄr…Õ¢,ªTŠ«ŒU‹y;VQåÿ3h^nòÀü¿óg–-!]_[Ñ4í#ʨé÷!ã°Ôµ-[Y–ëS—ë«3Çon]X+Z U†Z~__ùgT°üÄÒüÅåËŸ.êQ;yŸRüÀy`âôímôż+­êP­K<&·‘é¿Ä*ßž¬55ù³ò{ɯsæ=ù¿^ó ×™l¼ÿ£´:²Úµ¬ž·–a¿™K²ªZI–x‡ŒHW–*ûGþpòëL¶Ô?8|­¥Ã ÚâêZUĶ~_¿¸ÕR9n-¤†O¯êª­Õó5·+‰"¬d•‰}»Š»v*ìUØ«±Wb©št™5ÿ,ùB†o«M­iw–\R¾›\Âñ¥GBÕ늿/ÿç¿,¬|ÏæÏÌ]/ÏqÚÛ]y/J‡Dó7実îŸmew}ww[+ˆ¤¸u¸ŠÒ+pÖæ1éq%9TœUõ'æÿä÷<£å4ùþ-b=SÓ,ãkþf—˜­VÙ‰f¶+}o$ž¬Ž4WûMð©&˜«Ïÿçu}òïÍ>^òWŸ/¼½äï3ùçë+Ót+}*ííÖ9.íÞ+›YîÕ¼kŠHœ,ÖÌcõK++b¯¾qWb®Å]Š»v*ìUØ«±Wb®Å]Š»|¯ù¥®ÛÜÎA~NySÌ×ï ù3DÒõ?9[ݼ© ¾§®ZÉ•œŒä0G<“„J³7ÑN*ðùÈ_1~së°~`ë~^ò_é?"y¬h~Bò“uw¸±½×®Úß\ÞGa2¯Á?ï-ÿ|±F6—‘LUCó òûOÒ$ò–±åo4êÿ—¿™¦«g§y¢Ê?.I¤ \ßZÜE§¥Âݵ¼HÄÃ$'Ê”ÅS0ù—ËÞcüõÿœ{Òu>è¾|m7]“ÔUÑžÇζ•¥„ïcµj]eK'šC1/i§"¡-ñrÅY6±ù‡?æÇçžÿ$¿.mÛʾsü°òÌòÍx¢ŠK»¿J;ý7ê„T(’u‘ ™¸\FÆÆª²oùÇïËØ?*ÿ4<Õä}r ß3yÂ?/~™OÌ÷£'´Õu9渱†Áİ鮳*¹‰foT~óöMdúÕŒ:wüååŽåo/Û¢éþMÕßV[‘om§iúeÕÐi&Òa ²=ì×+Îbª¬Tõ@/Å^±ù«ùkåÿÌ'H_0yƒYòÌ~PÔâóŸ¬h×ÂÉ๲ ÑÍ!‘$‰Ö=ØsBø…®*øCÖ<£c¥Zþ_þ]Ç7—|±yuu4W6³É-íÝ–£%†“o©ê·ªóRúÄ’z'Œ‘ ȫÈQW¥ùNìyÂî/0êWsÝéÚÏå;X\\£(Wkë­Qíãæ—?j×M¿ç ÛHÐÿç ¿.µÍT³Ð´=òÿÌšv£«êrÞGeÒ®m5-ŒöÒJx¼”˜¯m銼Íòèš^¯ yçIò©{þ ?Î}º~Ri—]PKƧæ9.5;ðÀ zo½>Å^M«j_žÖfîO ùwÊ–ù­çÖ5ÏÏ}HËõ„—“;þ²ó˜ ¯îíP‰-RM·RXœUæzw奷”¿5´}Gηò~g]jAÕüϪùæ+ÝN’âö«Ú¼¶·üµ-n6)!X!^äÀp Ø«ô»þqDjiùƒùÙ¤ºŒ)•—L³¿Ó#Ðb‚Ô¦¢cŽÇCVi4ÛZÔÇäËÖGûc}Ê»v*ìUØ«±Wb¯“ç*üïç,ZþTh>ZóD¿—:/ž¼áo¥ùãóG„ MXžFæ¸VŽº`#ŽF+B)ÈоyüŸÖ-gÿœîóŧ妿yæß$‚mm?0|Ë©¨ZÝê–‰Õ¤¸½‹’4ªÓ Pć]èqW臜ü™å¿Ì,ê¾Pónœº®¬¢%õ™w‰«¬±ºI+£Ç"+«)0b¯üºÿœ—Ê^xŸóÎ_™^`ü×ó „vIŸ_(D°½uiâ#<^I*¼Ì2Šb¯¢ñWb®Å]Š»v*ìUØ«±Wb®Å]Š»B\iös[\ÝY[ÜÜYÖsË»ÄXQŒlÀ•$u¦*ù«óâ3j¿˜ßó/”ÚÍõK=Xó+YjSKoiq—¥KnÑË4Í$d›áÅÄmÄþÉÅ_=ùrÃWÒ<Ñæ¯5ë:ÄZ›¼µù³¤iÞ_ü£·Õe¹…ì-4ò·¯¥G{éKyw¨Zê/)…e˜¡ÜñWʾsü¼ò÷ü¬ïÌ_Ë U­¼çmç-hysón8¬ç’ÿIÕnKnÐÝY4¼`i= Lß ˆmн]òœÿ“š÷Ÿ|„ºÚÃæ¸­4ï0þZy¾óTO,ÙÛYß¼s^Þ^\[¹½×nåÔm8µ¬©2°€G¨@UôwåÏ;ÿ05óÞÃòê×J³Ñ|­©ùkóɺ¦±&“¨jš¥ÚH’­“Y̽·¥/¦· Rf¢îʽŸòu›óÍÞqüã×ü“æ/,ß$É ùÛÍ[Û=#êvr^‹ke–H–;‹Åf2¡&P«ñqUWÑ—V¶×Ö·6W¥Í¥äOÕ¼ƒ’IŠUÑê$Uð× <õæÍKÉ^Fò÷–¼±ùEc[êÐLÖ³éð›f€Ámg«š9丟™•kê£rç U‰i^BóÞ‡ù+ù•¦Kæûo=ùcÏ^WHÕã2ênŸs¥Ñ‚?]by!F–ä ³³ÔoмþsÎÿšLó7åuæù{Ï#É‹s}¨y›GÓäTŠ=rÚ}?ê÷¶7"h#’Q Ín}O‰¢;/⬟O>k²Ðt¯=ZÙÿ‹ü‘¡Zéúw<±-楣ÞÇ vÇVº³ÔïGºˆúÍõP¦®±rTj*Í,/¡óN·gª[›­sJ’q£1G†ÎáiÍM—šuǾÖeÚ”6q×·Uâ$óž¼åçsæ Ë«ñ­¦‰¡é–·¾küɽM&Šx4+MeêRy$ zÁ%ð(}}ÿ8a£Ú~`~~K¡é×Úmœ£ÊÂê-W[:þ¨÷ŸU»yäÔ®Ì×.‰p%‡ÔoLŠb¯ºqWb®Å]Š»v*ìUwikk=•õ´W–wHÑ\ÚÌ‚HäF*ÊÀ‚ÅR-yWË~NÓFò®‡eåý*7iÂÆ†>njÍE¤“ßOñWb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«ÂüÐì?ç!(’N"ò—œ õ2úú-@ÿaSб/ùÉ/ËM7Í6Þ^ó„M©h¾còÊßX[ùÃDÔ­tíBÒËS‰b¹Š?¯Å%¬¢^ §Ô1²Š”‘ 5UðOüä]ž¡åÏÊ_*~]ybîDò­ÝÖ•¤h¾]yôé —Q˜‚M}!ùWŠêßLºó î—y#ê§^ÞØjñ˜f>œk7 Ò€Z"ãc“¾Zóoæu¦¥ùw y{PÉoó[Q×?55ÍSZ²ÔMæ™§Å M§™Òe»‘îõ+F2Q£WàqW£y{É>üºò=ç–ÿ1`¹ò?äGå½—šu bÛE¼T¸Õ®µMFvÒ,té­îe»K{H&R¬í iYTlUöÏåNç-'òÛÉoæ 5_;Yèö±yšøp%îÂ`´AQŠý’Ê(ÄW¾*ô UòN«¦Mÿ*wóÎq7¡xžvÖõ™eqËm;SŠx”7¬6È uúqWÆÿ™-kùåo(éÚ¿×/ç&4gó ŠášÞK)i<4},T”£˜ž7$³íÛ]ù+¬~g~[Øy"÷òûI¾üÌó-ƒêÞ\ó§‘âžZuÛÇ?£%ÒY”’ÎèטyAõI*G_§þ•/|·®ù¾O/ÙytAe6±æQa EŒÍ8䊦F,'~RÞ'›4]W^ü·óìVº%ÿæwžcó'ååüÑ·š¼Ã5Û½Ìóù£_¹×L±NEYa¸GŠ-~ÑUõ7üàõ¥ô6ÿ›³ê:>‹ É>­¢¦›¥yv+˜´¸tè´kqf–¿[¤î¢3¼’ ÈÕqðqWÞ8«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«¼óÇ–íu-kD]J+o@‚Ö}OLCFˆ^‰M¸w#‚òX]ÍOƒ›QwÅXvŸùµ£iß—šž¼÷{k¡~°ºÖ"°·Ye•ôø™äŽX`¦ ~삵™ ý¥´ö7¶ñD¼!ú•ë3¤ŽÔ’=8Óe?ó’·òk>lÓ/¼ÑæÛ¯ËÿËËï(jº¥¶¥©ƒ˜<À[ÛhÒê“ÖD‰ŒÍêUMQ”ªËçô¯0Eiæví/,|«¨Á¢iþW±ž)líï&ÓlDz–µia(CkýËž+Áy¬b]ċо£Å_ù|Ÿù‡ù©ù›ä Fâ×Q·ü³ó>›­^ù"úsk©?˜ì4ûXîB3*,–7uu%^†B ‚ႬCóûÍ:Æ—ÿ95ä[›m'K¸òþ‰¤éú¨Ô#µ“Ô¹¾ÕìÞèÚ¤óC'(Q  Û‡`Fãˆ4Uä_Ÿ>Tò¿äWçÔß›º™u&Õ[ÍÚW™u]:(åK&Ôn"‹Sµ¹žÞÙc×µvqëÜ’ÁÈXOÛÅ_zÎGYwÉ6º%ûEkäBå.|ã®É¯[ùz(`´džÞ'¾›‘D–P¥Ê)<¨¡`ÁWÆÖ^Åæ>OËï/ùÇòªÙß~fjÖ¢y_»[ƒewq×™ï#áXîͬIE ñb¯jÿœ2×]×ÿç%®'ómÏîDZ1ó-Ü/m%ÔGM#t·}á„pe‰: BFåWÜø«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*óß5þaéþVóO‘¼©5›ÜÝyÒâñ^÷ÕŽ+}>ÚÊݦ{‹–cPÂÄ€‰›¨¦*ðo0~ù†{Ï2iú$z'–ôؼ¦u«_5ë·&ÞßI7……„÷òº˜h‡®b¦Þ¥º>±dUó¬ï™<ï©þgùƒ^Õaòß–¼›£Mÿ+ È<Ó3h:›ÝÜéz¶›¨i’Å)É’.HB¿Å>%±T‹Ì)æßÌM[@ónçMkGò…彞—y¢ùÊötš¢ÀÆK=?K‹Qž+[«7Ýå·[¾R²‚ë*€WÜß–˜˜ºÎ§úÍŸ—ZÝ–Ÿ1‡Î—¶pi`•Xæ°[«ž$Ò¢•‡Jªâ¯|Å]Š»|×ÿ9' êÚý啤³\¿å¸ó¥ˆüßÒmê#»Ñ)” ÆOÕçÒ7ž&:óª‚1V©ù³É_ó•_š¾dòoèãauuqåŸ(ùNxoltÛÙíbµ…!åéÄž´è'xcM‹7}ÉUá~_ó˜5oÊ8<‘g}æ.[kFówœ<ͨI$/¦yƒÌ]iz¸z%Þ¢/Yc.dòZªý<Å_Žÿó˜š'”õ-Ìz‘çòÝÖ¿5Ùº»°°ó…;ÚÈ^Hâòîjö圊³Ü?ÁÚqWÞÿ¾¤Ÿ—[üÕóž¡£ÙÝjžX²’McO­¬_LG2Ýj LVþ¹<اîyêëY×xIõ©bž$pV%@²,‚µ¢\U•ÎuþYê÷Z‘ùÅåÝ6ßYµò¹eùosu©ÎAyóFÿË×qùË^P’vó¬óè¶p£Á¢Ïes ÐÚì9IpŤ?eÞ‚¡WµiÚåù«ù‘æ 3\ò>‹¡¥÷寵ç›{+èz]Õʽ&Ñ<·hnªRÝÑ!iÙIað:ò®*Ï¿çßPëž`Óÿ&Äâ¯ÅßÎñçO˽ÏGò¬¶þOü¶/yoÿ*–¼·±ÕRðk4¶:¥ýßÄŸ ,rÇSð’N*ù¯UÑ´»!Xù²OÉ2ÿ4]¦‡åO2Ã}}eå"+¨^HÖÎ ÇŠinP+³Ks,ЊTmÅqWìGüàõ©ƒþqãËw ce§Zjz®µw§ZiÏ$¶«nuãŒÂóVFR ¾ç®*úçv*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb¯›;¿?ò©¼§¨i6VžkÑ›W¾·óüV’™nìltÛaq|ð¤%«=¬n.&RÆ$p$0UòüäW‘4)ÏaùÉùóù¦î-WÕ&ò‰-y£Úém‚h_ÌlaHŽ+[†YæŽ:¨ $*›³*ˆÔ¬¼É¢kºÔ2þié>[Ôµ&ÎÓóó¡5 kÝwEÑôˆcµÓíV(¤{˜Mâ£ßHÍÄ'Z²úd:¯/ów–¿,tï6&¯¢Gæ­f |¯¦]ÿÎ:ê6ï¨Å¢ß<ÉôñGgõ[—ºœÁ“4ÎY$õ½2½UNÿ+ÏšüÇæ+HùJÿÎZšôË}]u?6ézÕÆ£qdP¥æ—cªÉ¨ZÂE¡J¤Ü:Ê ðe‘^÷FÓ,¼‘å´×59¬í¯½sÞÙGëCõ…±³Ž2^q¢×€õUcº]µ•ü?˜úeþ›¨þaù‹YÖ—Uó>±ma5¿—,8‰mäÓ#eÒ云դ‘o‰[XŠ<†YÄUf>Ró7œÿ1ínÿ/ìõÿ4ê:O™e±µÒ$Ð4íB P¤Ä¯w5Œ¶ú^o_Bग 9$0Ž(U~Š~TyKSò?’4¿-ë ¤®¡fóIvú"Mœ’ÜHÓK*Ç1%I™€¢Ôü!FÁW£b©,Þdòõ¾»gåyõË|˨ZÉ}cå÷¸Œ^Ëk $én[Ô1© €í\Uà¾qüÌóW™ìu.ùEóW”õ e¸‰|ÞÚ4—"ÞÖnXÓì.%éqÁ„S\˜ÒŸ«ì1Wœ[þsùwòz-;ôŸ›õo2ë>mh.õß$yÇW–6i¤†Cõ}O³½ôU¶bœãùz“ЦWÞrÿ•æY¯tÿ+þbéº6£`l}&ò¸°·™ä¡I/.u;˜ ÑôˆÚ¿~˜«Ô­¿'¼•æý/Hÿé¾`º]5†ÊÆçW¼ÓíáUÓ4«¸¬P° ݱWÆþzüŒ¹Ñ2-?*<¿ùñç-3òôè³yó\òŽ©w©k¶:•´:U—ÖuIʪ\ÎÏÅ&%¢Ý\׊¯£|‰ù#ù‰ùGs=÷4¥Ö´Y翼üªóM¬0ؽõË4ò›;Ë0í§U™‹G wôñT—@¶ò—æí槪y7R׿çÿpÔõ×ÔMΛm#º®‹¡X^ÎF¡:Ò’\DᘟRD¦*ûÏòcó_ò‡NòÔsù‡ Xj¾tÕµ/6η×QÙ·w%Ü(àÆ²<0¼pÉÀ°WRµØb¯†ÿ+5 _Í¿Ÿÿ–v`Ð.SË3yÓ[ó‘}{£´pÜܯßÁ-®¤ú|!ן>‡Aö€«õGó;X}È^gÕ¢Ó/õ‰m,ØÃ¦éOsu+± ¢8­¤†V šü2)ÿ(uÅ_‹Ÿœ¾aÖ<ã¤y‡Wó•|ͤéóÉa½§ëz{YÉ2›~1ßG¬j‘z¬$?»¹TVrÞ˜ª _òEå‘?/üùq¡^ë7·Íq ß–®åÔŽ«z–rÂeÓµ)Ò™„ɧ[² iÝéE_OùY‹GüÂó¬m=“/å…ÕíÍáit«]a,#úþ ƒûá¡XCÛÀÕõ/®ÕGoWDùgòÃJóÜvž~üàƒO…š¯<Ë®~c]êZ–¼¶òžQÇ>Öšnƒ4ÊA†Ö‘ÔJœUîZüäß“¼¿e¡ùþq›ó“ÌÞTòÍ´v:^¥q§Zx"chH]5äéÄ ;ŽDb©v©ÿ9•åß5þA~n~bþ\Y^hþtü»¶ŽÓRòǘãŽÖçL¾½˜ZC5Â2˜â‘™v< °«á½N·ó¯Ôlï¼íå›ÿ%C$º¯æ™ÿ4¼Í?—m|ûæ¹ÀUÔbµˆÉqwac,Vñ“DU¨+B«Û/ì?4[\óŸåv•ÓZÜi¶º–ä‹ëŸ"Üy‡G™ ÍYÒ,Ë\¤RV)AØ8£·©Uëó~CÐtß8_j—>xóŸ‘/ô+©!üÙü€ó­ÉÔ§&taØ3LîØ‰!ºŽ¢UOR¯¿ñWb®Å]Š»cl󗼑¥>±æ;ǵ³RV4‚Þk¹å` qŠ t’W4N*Æ|•ù½äO>ykZóV©Íg¦ùfY¡ó4:µ´ÚuΜðD³¸¹‚åÐzL®”*v=qWÍÞ~ÿœ¢ó¶—¢yïòïÉú<”²^Do<ççKÆÓ.5‹K꾇¦«}mÚ•ÓD¼ˆøP©åбÏÌ»ÿË/ÏŸð¬úkAù¯æÖ—RÔ?.,ô‹MRÕ‰ÄV×Ñj’¤¶ÆÑ£™@Ža$rzˆ¥U—ÔVUð‡ž3~¡ùÿciç-VóBò¯åT2Ë­ýr{kíl´– c5µ­ÌDšæâ²JBÈŠ¢G"DyJ¬ûÊšíÏ“ü’Þ{òNŸä8ôRêûÈW^o·ºC±—W¹ic½‚-=.æ¾¾H¤*¦úT¶U \»•_IÇù‡ù«ù ¦ZùgNŸòÃT²žæk½*ÎÅ5»íG]žîV•績…b³·¸ºcÈòQuR0U•~aÎVy¿LÔÆŸ¦ùfÛÉ:UµªO}­êZNµ=Ô¯JÛØ-–¬¶Ñ2šƒ%ÓªÍ:UW’ySþrkóãÍvú¦ƒçï#ùãÌVòÃå?-ë—TŽã„ϨÜz\²B»0yÖ"Ƽ™GĪ_ù1çÁó«eåß7Àº¾£¨É{æ+KPÒ%Ô/®$é)ô½'W@쑭¬c`*ýAЭõÖòí¯še·:óÛõiôéÅê‚ÑHÑÄÝ)¿ß°Å_›Ÿ×:×å-?.%<Œ ¡Žôiš­ÍÔÚ}ÍųË4º ^êFn^¬º„Þ—/…6Å_QþFXþiÞXÃ/æ+j^[½µEhv6ºž›Çª(X.5-C§OVd>+\Uê?™Ÿ›>Xü£Ò$ó!¾´òôMmëñÇ:z×S¬°¤ŸXv«<" -MvÅ^å¯Îm]üïóƒ¦j]Ô¼Ÿl“0yÏN2ÚÕ (–MÄ÷’o]­Ì®Vãò·Uƒ<ù³óþr«ÈþE½¶Ñ,Ê÷þbÕœÒ]ÜÇ¡… j’Ëqd‘«\]z%½ ‰4uQó—ÞY“Uó埙µ}y<¥äm#_¾ÿ@ÒªZj—d–é;ZÅqpÓIpˆÕ‡Ñм¯ò'þrwó+Êz'é?Í{ëO<~RO ľ[üÉ£±¿Ú8ŽXbƒQkÍGÓ? ãh¯Ë`_`{_æüáï’<ÙæO6y4Ý;Î>d³’{+ }gºÓ-/e”\.¡e:Íi!•C8JÄÄ|Q}®J¾üÖü®ó}ÇæWæ•üÇùw'œüè?/­üÇs ¼—:¶Žº¤lñM}d-æÓ^ÈL±hä"Añ)BqW\êžlüÃ×ü¾âò/5ù?Xòô•×¾g†×Y´¶Ô-áAdºŽ¢ºP…ƒB¾«J$‘Jþç’â©ß’¿*ÿ0?ç 5]2÷ÈwLÿ–ÒZiúMߘuËÁ&¿åy¼¿ÂÞ8 ¾#}ƒ$QÙóW!LÓj_¤¿ŸWåçüãÖ»£ÛÝÇa¥G¦é¾SRÔC ½¥üÖú[Mu$H"”—t‡Uß~xë¾Oÿ•'ç› òÏË–ZG˜ü¡ú7X´mBAv#Ñ®K ««‡Y=›çй²ã*íõøy&*úsCÿœ‚üÎóf¡­þ[jŸ—ñyÿYÔm.o4»¿#K§ÙIc›Û«Á«Aæ ™`Gõ&Œ‰¡i¡‘Zô4UðïçÖ‰ù‘{æ gò¿óOÓ/|Ønà“É7Z<:L¶ßVª]ÊÓÎcÓî­+W«4„Û=iZ0U!ò—˜9¿/¼Óå-jËÌúÞ‹æN—wg¢ù4K=WXÕmè‘#ÚéÍ<Í qˆ@…œEPJ«bUyï’üù©yGQ´>GüÏòÕ†·æ-NOYѼŦ^ŦXjY”[M{x“‰n–GõxÂÒCën~Aо‡ò_çæ'˜µ­#Í_˜šß™´?(yWKÔ.´+¿Ê›}P†1õÏ«MvÐj‚òù~¸Õ_VDõ `T$|Ž*úÊ_ó’ÐhW~xÒ|éù©ùæúá'ýù`÷%è ¤WƒUפúŸ«zP“"ÚÍ(ˆÔn@lUæZLš5טg—ò'Ë_™>Vó½öŸªù®ÒãÍúv¡­ê)¤¢ 7Ôô/ ŠU·Š5ØÂZGø¥g'zO•¼×ÿ8·ùæk¯'ê“v_–_›úÑs¦yWÏ:G¡g}xßßY™ƒÅþT8«è(Wòçó7ÌåÁÑî¿+?7?"n,üÅå}Ò‰>© šÆHL–÷v7q—†@z#-er~_k×ßó”°~hGnúo–´˯ðõÅèd¥/ou¹Xx|LRÖ8¹xüR(‡**ú#v*ìUñŸžÿç)<ÝaæO&yoò«òbûó"çÎ^Ù£^jCkk»+ë«b’%Õ» …ÄÜͨR~ÒÕT£þr³ÎÚŽ§å$[ùSòÿÍ™0èžnÓ5Ï7é¾[³¹¹ÓgµÒ.?Ó4û›¨bdš¬Mñüt¥1VX¿Pj7v÷žSóŽ£i7©ÂZjz±æmjn#Ig¶»³Ó®-[IXM"ô§¹)4«_œ^kŸLÓ4 XùKÖø²¸Ö¼÷{måÛ‘yµ¥ºÅ}oywvä;2À‘;!4 ËcZçG›¯¼Ëå½NOÉ çÔní4Ý[ΗsêeÜR2ÆÓ¥Î© Ù¤ü:ˆ’P[¢â¬ßþrKòßòù,ÿ3|ê?+tÏ4yÎâÁeŽX4Ö¹½»¾mm$™m”Íp æ†ÿ b¯ÌMcCòΚúnœþEƒÈÚ…ŽåÏË;/0hŠ}K7Z†;Ùõ1 ‰nîu{;ɧš#ƈ« %Ö¸«é¸¿#üÝä=Þùr_È÷ŸòÿÍwBëUò¯™î´ +û[f’'·´IM2 ®&9b¸õcU–jUYWÜù+GÐô‹½Iÿœyòü¡eiäüÑò”‹qÉÑZÿOœ¨ MGJî1W“Gå%é0Ü_O7åïåÖ¤²q´ŽëÏžQÕnBŸÛŽ-3A–BT©ñb¯`³ü»ÖµŸ,ñmWÎÖŒ=oVâÚïCÑlt’ oÍßèT½µ?ÊF*ú¯òWM´Ò´Û8<«æöKn&òÛM‹RóÍųô1I­Åw ’8­(–èaо¿²Õ"ýΡ1³aÈH÷¨-ðb9pf%Uôî•ùEù’út¾cÔ¿+"׿0<ÇVë:–­kwª[ÂáQµQ­+:ÙWâEGº†Èɾ*†Ò'ÿ:b¿óV£¯èšž|Ácmyeå÷×Äz¾·¥[G#-¾¥ucªv×V;Qve’2ÅÝH¨ ¼BzO%F·^FÒÇ’ÿ/¤¸ŸZÑVÿU›IµÑ5»ãéo(k“é÷¶ÂK;ˆÄÖÂxarÊ&qRUDê¿ó“_žú¶œ×ê–·:$Å&­å7ùrЃ”¾£`œw ~`b©&¹ùéù‹ù¹å-_òƒ[ó&«kå3Û­¾§ªÿ…×ÍÚÒ¬²Äþ]¾ÈWÕ¥qUÿ—Ÿ—~vÐü™æ¿)~X~dywó³OÒ-ßSÒ|‡æ+SÊ>`Ю”þ¿ Üj’BÚt¨ÍVeªN[ªúþpçFM_Í^nóòhÒiGGÐ4ÿ(^ÎÖk{R;‰nµ/BãOv±œ£̳Z…Gw!JU^ÿ9eåÍN?ùÈo1_ÛhþVÔ¯õÏ(X·’­üç=¼6·Wó¬Ú}ÈÓ ¹Åusq£)š_NÁÙ `qWËÖŸ”wšQóO™<ïäÿÌÿËÝEòý¬u——î›TžöHå“Z×í¢žÞÖ$ÝŒ&Ø|? ¯Ãº«¼¿å=a¹Óþr†ÿË~FòE‹Üùtë}ÃÛÝê7ŠÁ­ô/.\É Ì‚‘½KÏLÍUDݱT»ÌyËz/—uÿ"y;Ζ–viÖþ~òG¥eya¬jT…-µ û¬~œ–ÝIw‚гòÝß¶*ÖbÑ<³«ù×Gómî‰-Î…åÄÑü“|©i··â÷NÒ D[y¥"‘ÏxY«F#cмÓô_Þ1kÞXò¶½å›¿/i6£íEöŸæ›šý¾¯%Þ¯ªÇVÖQü@pd¨zÕ•…1WÓ^LüÙó·•ìæÓÞÇËÓy[Uytè<«{iu­y#R6Vün/|´cœ“{,òŽˆdfæÿ¯RßÍoÎ _ùÈM~Ç\Óü‹æ]?Süµ]>ÚÆú_1Z]é:t>ºÇ+¶… ¼s\ÜÈ{{{£7%}“о…ü¶ÒõÏίÈÛ?=èÿ›œ³ëº.«&—æ¿%ù/ÌV°mƒ)–ÛOkX¦ž&„‘Ûú†N-ÅY™MUzøûRÿ•Yþÿ¡¥Ö=oÒ?Vý5þÖ?åfztçõÑuúÇ«êmõFžŸü*ý1Å_™¾rÿŸ”ykÊkó_”ßòŸW¿¹ò¾«{¤µÚêVÑÇ3ÙLð—ÄÅUŠW¡#|SåïùÌÛÛ?Íkó#ÌþF›_µ:”º·’¼›e¯\iv:-ÝÂLN*úùú,–±-"-­¡RÌ°Åæ ±f!WLrI>ø«Å¼÷ÿ9¥£yãR]r×òÞ÷ɳI,š¡Óu+MB;ðñðDe¿°h­¨õy$Š$†šŠ1T7åWüç>µùwm&“®y ?14 +¶¾ò¥®·ª‰.t‰ß—/«\½Œ„ê=x§ÅS¯<Î}jÞbŠúãÊÞE¿òv»©ÞÅwyªÜù¢ÿZ·E‰z6ºuÄq[[«qˆÔ Õ©È“Š² ÿÏÊ|ÿå«ÛO9ùJ?Ì9¥•N»kÈt£m SX,¦õjG.LkаŸÌ_ùÌŸ#~cLugþqíï5¤¹ŠîÎêóÏ:Û[[O‡Imí-Ò¢uaU(‡|Uè¾EÿŸˆÃ E©Ãæ?$y—XµÔ­Ú&Ó¥ój¤Žic“P´õÐR£‘Ó~˜«Â¼Ëÿ9ä½Fæâo/ù"ÃI‚á˵®«ä¯&êÆ§Æ_ªÛ1ßÄU‹i?ófÂc:iº‡?1Æ÷@üºòu¥×kEšH¤àÇÄ)§QнBùË/!ß2ÅçËï7~b"¦×Þjóuæ­j ©åèÍŽšTøžg1ÿÎw®›bšO“îõŸË½ÝxÙhž^ò‡—c·ƒÄ¢Í~è?à1V;qÿ9¡}}wõÍKÏþuÔeeá#\y7ɲOåøä`>ìUHÿÎTþWܤÇVÐuýRéÔú7Ÿá$BÑÈoà‚­ò'J_þrêËK®ƒiuª˜w¶Òõ/.éšDoì÷š6£‰óXËMíç>üËm"2~^T¨Žhâóo˜½2¤îD-u¾§Ïg>sÿœâü·óÇå©òn£åo6YyŽÊå5,ùŽ,î“L¾ˆòš;íF®GVut›átn%Ex©ÿœ òÆŸ¦ÛÞyGÈÿà¯Ì}BÈØyÏóG±±³–úÕ™šH,-måŠ-1d¨æöÿ½jÎOÅŠ¤_•¿ó‘z¤ÔàÖcóV¿¡Ë¥êz.£G{åc«[ø«ÄõOùÊË}_VÔ5«Û¿2M}ª•: mËB ÆŒq‰ïmã†8nž1²<¨Ì£e#b7Ÿó’ˆÖ O.­Ý“»›› X?ÂjÆJ–”¾vŠîÇísˆƒßbþnhvÚ•†»¡èÚž{i"ÈÚ\óA$©Äõ´ó¢ØêÖäû3{òÅ^³aÿ9ùWªë×ú׿¯–¿2?4a¼·‰4ý2ÿÍSZŧ^Yÿ¡Ën·±0PÆiUC£ý²«ÝÓþ~G¥ySËv¾Vü¬ü‚Óü§¥iÐt‹GÔÒ;[jšÕm-l•Nä“ñŠÉÅ_-ÎDÿÎUyþr;Lò¾æO(i: žU¼šîËP²–I¦o^ŠHɑЖPû´ð®*óËŸÍÏ5yþX[ÌZœ¾X¿†Hu-T‡V³õÇÏè½Dµ¤ïÊ’ÜyRœÀ'{mÏüå}ÃëO¬yz/Íųűæ -ùù(áhÐéâî,•…d‚Ù¢úÇIÙ†ÅW˜èÿš@{¸fógå©:jQ}wÊÚ”Þ^¹‚@Á‚iö6´°²Z¢‹>.\ÍqT·Ì?šþ`ÔõËZ¶Ò5«‹dÕü¥®êm­µÞŸjAÒësñÔ’„2¡UÐWe’þo~]¼–š¶•ùuäŸ3\Å :ûùyì£Ð$ŽÕ¡‰¼½˜!\Uô§è+ëߥ?FZ~“ãÇô¢ž¿”õiÊŸN*˜b¯Õ?çç5­OQÖu_ʽ÷TÕ®¥¼Ô¯$sšyÜÉ$I«3qTý 7üãoþZ-î›þªâ®ÿ¡FÿœmÿËE¢}ÓÕ\Ußô(ßó¿ùh´Oºoú«Š»þ…þq·ÿ-‰÷MÿUqWУÎ6ÿå¢Ñ>é¿ê®*ïúoùÆßü´Z'Ý7ýUÅ]ÿBÿ8Ûÿ–‹Dû¦ÿª¸«¿èQ¿çòÑhŸtßõWwý 7üãoþZ-î›þªâ®ÿ¡FÿœmÿËE¢}ÓÕ\Ußô(ßó¿ùh´Oºoú«Š»þ…þq·ÿ-‰÷MÿUqWУÎ6ÿå¢Ñ>é¿ê®*ïúoùÆßü´Z'Ý7ýUÅ]ÿBÿ8Ûÿ–‹Dû¦ÿª¸«¿èQ¿çòÑhŸtßõWwý 7üãoþZ-î›þªâ®ÿ¡FÿœmÿËE¢}ÓÕ\Ußô(ßó¿ùh´Oºoú«Š»þ…þq·ÿ-‰÷MÿUqWУÎ6ÿå¢Ñ>é¿ê®*ïúoùÆßü´Z'Ý7ýUÅ]ÿBÿ8Ûÿ–‹Dû¦ÿª¸«¿èQ¿çòÑhŸtßõWwý 7üãoþZ-î›þªâ®ÿ¡FÿœmÿËE¢}ÓÕ\Ußô(ßó¿ùh´Oºoú«Š»þ…þq·ÿ-‰÷MÿUqWУÎ6ÿå¢Ñ>é¿ê®*ïúoùÆßü´Z'Ý7ýUÅ]ÿBÿ8Ûÿ–‹Dû¦ÿª¸«¿èQ¿çòÑhŸtßõWwý 7üãoþZ-î›þªâ®ÿ¡FÿœmÿËE¢}ÓÕ\Ußô(ßó¿ùh´Oºú«Š½ßAд,hÚg—¼¿§Ã¤èš5ºZizm¸ã0Æ8¢(ß`1TÛv*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Ѝ]]ZÙA-ÕåÌV–°ŽS\Ìëh:U™ˆéÊòæ†äŒG2Mï%ž,SË!dy,Ÿ‚L<Ùåb*<Ë¥â/ ÿšóv΄ÿ—Çþž?­ÌþJÖ¨Ïý,¿Sâ¿+ÔÉ¥Òdó^?Ë:õ|éãú×ù/Wþ£?ô²ýNÿù[þ¦M+þ“ ÿšñþYÐÿ«ãÿOÖ¿Éz¿õÿ¥—êwø¯Êßõ2i_ô™ü×ò·ý_úxþµþKÕÿ¨Ïý,¿R6=cH–Ê]J-VÎM:D÷ëeÒ€ñúäó^'¶t#ü¾?ôñýkü•¬ÿQŸúY~¤âÖîÖúÞ;»+˜¯-f†æY#p *¬¤ƒ¸í™ØsC4ñÈJ'‘Áø‡.)⑌ÁÁ~E–5»Aßê:~•l÷šõ¾i÷—W2,QŠô«9(Ôê±i reœaÖDD|Ëv >LòàÇ)€~A„§æÇå³Ü}Y|é¤ú„Ðpkþ±4üs@=³ìc>Íc¿ë ùòw'Ù^Õâü¼ëú§îeÿ¦´siøÕmÆêXá¶¼YÅ$’°HÑ\Ìh;œÝþOጞ$x I4<‰'`ê'ŸŒÃ‚\@EnICšç˜4>àÚ_ëv7ACk‹˜¢+t<]¡Èçí-. ðdË˸Èò%–-£4x±ã”£Þ"Hù€‡ÿù[þ¦M+þ“ ÿšò¯åú¾?ôñýmŸÉz¿õÿ¥—êwø¯Êßõ2i_ô™ü×ò·ý_úxþµþKÕÿ¨Ïý,¿S¿Å~Vÿ©“Jÿ¤È?æ¼–t?êøÿÓÇõ¯ò^¯ýFéeú—Çæo-Í"C˜tÉe…Ž$»…™‰èRrPímÈŒsc$ôëc.ÍÕDYÅ0ôOêSlò±eÒˆ=Åäó^Dv΄ÿ—Çþž?­—òV³ýFéeú›>lò°>eÒ€ñúäó^?Ë:õ|éãú×ù+Yþ£?ô²ýI½­Ý­õ¼wvW1^ZÌ ŠæY#` RAÜS3pæÇšxä%ȃ`üC‰—ñHÆ`ÆC˜"È¢2Ö´…¼Õå„w¼Ç¥«ÆÅ$Cy*ÊhAö æ¸öƈ|v?§ÖçËÕ‘c èÿF_©¯ñ_•þ#þ$Ò¨ƒ“®A°¨?JœËõ|éãúÓü—«ÿQŸúY~§6yXŠ2éDxýrù¯åú¾?ôñýkü•¬ÿQŸúY~¦›<¬O™t DÿœŒò_—´›-Ìz^Ÿ}wxlï„#ŠJ†6u% •ê}óÄÿà£Ø:M6ltÈI$÷9¯ÿç²ŸÚøsdÕÃŒÆB#sÚÏÒC›í¿´zÞÌËŠiðñD“°7½uïò *?êXÿ§»¿ú­ž‹ÿ&ß°Ô?ÙÏþ)áÿÑßlÿ«±‡üJQÿœwü³»¶’+-2çG¸`};Ë{©]”Ój¬Í"‘íLÆÕÀDZrÀŒxåŽ]ñ‘?dŒ‡Øß§ÿ‚jã˜3˜˜î1íˆoä~‡&‹å¿4ùOVŠ)æÑüÁumt” ŠÑBêÀ¸e î0Àÿ³å¤Ñê4Y€'iDõÄH>â7O¶ºÑ©ÕaÕâ$ â‰ãyò;<Ÿþr+É^^І®èúlZuÎ¥<ÖÚŠB8Ç'à"„TuÎ7þ ƒ¤Ñø:Œ”ÉŒ«‘¡`×>OSÿîÙÔê¼\¦d"óÑÜ‹ÿœsò_—õk]oÌZ®›¡{gv¶–°ä‘/¦ÈC±,Xn|6Ë¿à]Ø:MN<º¬Ð”d#Ü ;r³fÍ_ðBíNžxôø¦c)W3½ û…>¼†mâHmâH!ŒR8£Pª£Ø †{d1ÇDb |šs”ÍÈÙóUɱY,‰ rK#qŽ%/#x*Š“‘œ„"dyQ‰‘s/‰ôG—óçó:oÓÒÈÞUÑ¢šæÏKFô©j®$øjyHH.kZT6ÏÐJ^ÚvÙüÁ?—Æ „FÞ‹¨ºÊîGŸ@Fϲë@öS²G€2—?UY>èòˆåÔ‚úºO!y6]0hòynÄéÁ=1oéAJ}±ñWÞµÏd—³,Á ª¯ÓÏí|¶=¹®Ž_f—}þŽO’?2?,Wò×Ì~^óê+ͪÚ0‚I ›[””8CZrFUkäZ>ÒÔèä%‡$¢GqýŸš:þ‹o¤ù«XÐc©·°Õ¥±‰Í zk1E$ÓsÆ™ò—ih!¦×äÓ¦9 G»Š‡Øý¡ÖKQ£Çœó–1/ ýï¹cü€üªT@Þ[i( #^]rcâi(>Ã>„ü » ð_ùóÿŠ|N^ÞvÁ?ßWù±ýK¿å@þTÔ°é2ïþ«aÿ“oØ?êìçÿôwÛ?êßìaÿòß;~NiHÔü­æï*ú±XYë– ªéóÉêˆÖ[„Dx™‡*r 0f=voû §ì|ú}nŽÄ#šQ&è o~{IæôÝív~ÓÅ›Iª£)bŸ €«¨’AéËq@&Ÿžß•šChw>qòþ™ž¥¦&³? OkÑŸ‡NQšŠTVµÛ2ÿà‰ì~œé¥®Ó@FpÞu°”:šåqçµm|öq½‡öŸ0Ô ¢fP–оq—A}Ç—¾¼Þ;ù—n|ý ž»§Ãz×v“.ë/$K”£’W¡&0Ô¨ÎþXôy;TcÔ@HÊ'‚ù ÿ܃VõþÜÏUÎ3Á#â®f'o¾Ÿà 6ñ$6ñ$¦ÉjG}€Û>“†8ã @t> 9ÊfälùªäؾYÿœ‹Ð¼½™ 5–ù§YÕÞÆhP#È…O¨­JVdê:çÁC³ô‘Á‡ÃÆ?1“%DDŽ ûÉ7Ó¿à{®Ôœ¹xò²à•ðäõ¯ þXù{Éšµ™ÓmîµiáS­j¨”Ë1¸…²€Ã}ó³öoÙ-'décË!ŽD_ºóþÐwy¼¯nûK©í-AŸÑµŸÿÔùóþr/Éš‡.®hú|Z}Æ«,öúŒPŽ1ÈcEt~ƒN¹æŸðPì-&ŽXu fLd#@k¿Ÿ'¾ÿïljuC. Ò2Æù‹$}ɯüã§’¼½ªiº¿™5M6ûû{ï©Ø™Ç4‰$v*‡j±~¤vÛ3?à_Ø:MFš¬Ð˜Ÿ oq'nVoŸ–Î/ü»gSƒ.=6)˜ÄLj×2I#Ÿ•>©¸Ñô›»d³¹Ómg´ˆ³ÄŒŠ^*E}³Ørè°e€„áÐO—ãÕæÇ>8ÎBG­›~~tùSHòŸž®ltkeµÓïm!½ŽÐT¬O!upµ©”­;W>kö÷±ôý™Ú’Ç‚<0”D«¸›¼¬_Å÷Ÿc{S6¿³Äó”dc}àU_Ξõùuù-ùw®y'˚α¢5þ¥©Ú-ÅÝÃ\Εg$Ð,r*€Ãlôeýƒìgf`ÏŸç"x¤9ùÃ{CíiéuùpáÉÃÊ€á‰åæA,×þTåGýKô÷wÿU³}ÿ&ß°Ô?ÙÏþ)Ó£¾ÙÿVÿcø–çÿùǯ*/êWþO·›LÕl-ÞxlÞw– Ä`³!õy°bâC^¹ÎûIÿ=ÒdÉ¡‰†H‚Dx‰Œ«˜õYŽ[Õówƒíþ³ó0Ç«"P‘šQ¾Gjß·'µùF sÈÞR{ËHo ›G²aÑ«Š›tf™Þö,1k;/Lg qC˜¿áÚÓÉ¥í â1#$¹þ"øÏóßÊ:?•|ånº-šYYk6"ñí¥a##•´ @iÒ¹á_ðEìM?föŒ/ä‡BVA®ëØÓìÃv¶}~„øÒâ”%Ã}H EûžÇùOùGù}®ùDÖõ­5=OSYd¹¸–i—ìÌ誫ª€ŽÙÜ{ì_dë{/£Q„O$ì’L¿œEƒÈ{Sí_ii{G& 9xa;ÜOTóÌóŽ~DÔ,î?ÃöÒùRàÆÕÒi%·2~È•&õõâAÍjÀ»²óã—å¢qN¶Ü˜ßN!.-½Ô\.Îÿ‚háÈ?0FH^û*ò1­ýöùcAóWœ?*¼Áygkpa—Mºk}gGú¶ÓzMFZ•«)õgöolv‡³Z¹c£ TàwŒ¨î?Q_O×v^‹·´Ñœ…‰Fã!´…òý Ûô[GÕ-uÍ'MÖ,‰6š¥´WVü¶<%PÀq]óê ²ÌÏéœD‡¸‹~{Öig¥Í<3ú H?I–e8îÅ_6ÎMÿÊ% ÛaäĹåðYÿŒü?ðß÷²}þßã¹áï‚þqƒþ8>jÿ¶”_òarøÿŠj?áƒýÈnÿ‚_øÎê÷EôözÛæŒ{Ìþc´ò¾˜š•ÚV[»[(aV Í%ÔÉ Ò¾«ò¬ínÔÇÙØFY‹¹F w™ÈD}÷ðv›Ùó×eðàj£)åeú):†ÖÖÞK‰ ¶Š oIw,hªÒ¸Pœ€ ªOa™ðÃJ1ÈÙ s5V{Ím¿Gyg0‰""…žCí÷|Ïÿ9?ÿ/*ÛJoù0sÉÿà¹þ+§þ¹ÿrú?ü ?Æ3ÿPºEÿÎ2Ê+æûk̈òÿøˆfÿ†½‹WüÇ1Âÿßҙꯜ»KõkG¿Òµ;Û„—¶“Aø4ˆTÇ1µ¸Nl1Žr‰0C‘¥Ê1f„Ï(È‘·ç?¼×¨þXy»ë—6.íkêiºö˜äÆü9àx22†ý5Ï—½œíœÞÎö‡‰8®"v5bþ ‹µú·{/nh¸#.u8K˜ºÛàA£û¡>]óFƒæËÔ¼¿©Ã¨Úµž™£ÆÇöeŒÑ‘½˜ úc²û_KÚx†]6A8ùsRâ|‹à]¡ÙšO< OØ|ÁäG¹KÍÞZµó—5_.ÝÈ`R‹‚]ÐȤ4r(4ÝX×#Û]•ÔÑäÒÌИçWÂy‰qÝ—döŒû;U D˜ž\¬r#âø#0Á Lþ£DŠ!äTR´ß®lqÄÆ"$Ýrâ‘#k/Í?;ÿäÈó7þ3ÔF|¥Ûÿñ³ŸþÝ?Gv/üeaÿ…÷/ÓÐ|³ëæöñV1i¬ižaÕ<Ëåç´K¤òìÖ±ÞúÁd‰ä–1p )tÛ¯|Ôa×`×gϦ1ðŒD®ˆ&CŒmý¾.Ï.“.@‘ ‘`€ ßσ!¸‚¨'µ¸f·¹¢ž&VGYH=A6™qÇ, $,Aàóuøç,r‰¢ x~iyƒLÔ?.<õuil].|¹¨%Ε3ü&HU„1âz2liïŸ(ö–“7`v¤¡âÅ1(øßOÄl~/ÑÚ N.Ùìá)rÉ$;)|Žãàýòþµiæ-K×,\=®©mÄ|Mx—ž›©¨>ã>£ìÝ~=~›£ôÎ üú|ÏÏ:ýôz‰àŸÕGíøóN39Ä|Õ¦ùY·š¯÷Þ\ü¶‹êÖN>(¤½$Šïµyò5öÛ<§Iþ¿ûM,Üði {ŽOí³·ó"ú6¤"öqrÍ©6{Ä?²‡ùÅô®z³ç/–ÿç(?ã‘åù¸ÿ“#<ƒþ ¿âúoëËýËéßð3þÿ?õc÷§óŒÿò…ë?öÚ—þLC™ßð'ÿŒÜ¿ðÓþæ.ü?ÇñÿÂÇû©>ŒÏQ|õðŸüäwþL(?ímÿ'&Ï¿à¥ÿãþ¾O¸Àïþ3Oü2_t_TþSä¶ògý³!þ9ì~ÆÆ6—þ/ö«þ5u×/CΙçØåߘlàó.—åWˆËu«XÝ^ò¨â‘[´hC)Üó2mò9«ÍÚxá­Ç£"å8J^áãÏ‹ì.ÃgÎZYê¨ÂQ¼ÊÎÞêûSÛ{{{H"µ´‚;[ktÁo„v ª €Í†,PÅ"6 wádÉ,’2™$ždîO¼¾/ÿœ›ÿ”³ËŸöÈù>ÙáðYÿÁÿ ÿ|_bÿ¯ø–oøgûÐúòKÿ%•?ã ÿõ.zW°ñ‡§÷÷Rx/lÿã_?¼¹UÎÅåß›ÿœv·™>nžÑ•áK¤‰7HaHäúC)>Yöã42öÖ¦PÜqñŒ@?h~ˆöGñöVÏŸ ?IcîÏË› 3È~R°¼¢º·ÒíÄñ7ÚV(©÷¦}ì¶šz~ÊÓc˜© q±Ý³âÐç†~ÑÏ8‰œ«æÍ3|銾lÿœ›ÿ”K@ÿ¶ÂÿɉsÊÿà³ÿøá¿ïdú/ü ¿ÇrÿÂÿß–~LÅùŸ&—­Ÿ ÜéPY‹Äý 5 ó2úBœ?vûq¦qÞÂC¶åƒ/òl±ˆñ.>|UÓcµ=G¶ì˜æÇùñ3.ÃÁʯ®ã«Ù~«ÿ9ÿW-~?õC;¿ Ûçàüšñþ/²ÿÍÍøÿ9äÞ}o͸õß(ÁçÉã—FmfÉ­ž Y™ÄËOQ•—¥x†÷¦qžÑŸh#ªÓG´H8¼XW÷|\C™¡ê«®/:z®ÃŠtùå¡dðå|__ [»ëâûk=õñ‡Ìó“ÿñÂò§ý´¦ÿ“<þ ŸâºëŸ÷/¥ÿÀÓüc?õû¤_üã'ü¢¾aÿ¶·üÈ/ÿ7ø†oøgûصÁ'üsü/ýñ})žªù˱Wb¯üÕü•´ó›¾¹åæƒJó.æè8"ê !ZðqÙšô>#Î=±ö k¨ÓT3õ¿§'¾¹KúTo‘òî½—öÊ}š< EÏNø{»Çôon¬µ?8þ]ëS¥¥Åï–µ‹vêÕÔ¨·©Ž)ìH#Ããcüàúü;W†y4r;T}ãêGàQó~lúÖ—ªy:êRÓi.otÀļÓ5$E~ 7ÿe—À«¶|\43;ÀñGú²æ>ßüæ¯ø#vW‡š¸§é—õ‡#ñû—²~fy­|™ä½kZWãx±}_L›™þȯ^5ä}ÎëÚÎٓٹuêªõå°ù}^àòÍöYí-~(Å*Ú£Ãb¸*‡>]n÷w^ÐG³Ç`ÈW†rFûø¨ßï~þœ¶}qžÔùCâŸùÉ¿ùK<¹ÿl‡ÿ“íž ÿŸñüð¯÷Åö_øÿ‰fÿ†½ ßåçç^å?%hº×–õÛéôØ¥^ZÛ£[¿)]ê®Ò €mÍ3?ÙŸotý™Ù¸´óÁšFÙŒG Üù¸]¿ìn}~¿&xæÅ"6” 7³[ÿœ†Õ<È"м™¥ ÷U‘míõ­Bâ:Æd4^%ž‹x`íø&ç×ÖŸC”ÈsÚü«„{Éø2Ñ{‡Gyõ“ñ#fzó»>à"Î=KgªE®yîþßU’73$¨óËÔžgà^¹^4=ÉÌïgàe,YÆ£´go€Y\îr5Å¿J£Ô—·=¿0œ˜+ˆÐ r¨Ä]mÖìt§ÔÀ€tëv*ù³þroþQ-þÛ ÿ&%Ï+ÿ‚Ïügáÿ†ÿ½“è¿ð6ÿËÿ ÿ|ŸóŒñÁóWý´¢ÿ“ ”ÀüSQÿ îCwüÿÆpPÿº/§³Öß4cÞgòå§štÄÓ/%xR;»[Ø¦Žœ–KI’e§ Fåh}Žk;[²ñöŽ‹! F@Žw º½Îfö„ô9NHIŒ£Gº`ÄýöÈsfà>`ÿœŸÿŽ•?í¥7ü˜9äð\ÿÓÿ\ÿ¹}/þŸãÿ¨?Ý"ÿç?åóýµ¿æDyü ¿Ä3Ã?ÞÅ«þ ?㘿áï‹éLõWÎ]Š¥º¶¯§hv3êz­ÒÙØÛpõî3ë’NLLÅÖkpèñ¹¥ÃV{¬€9yäit™uYó¿þL3àC7ýDgÎÝ¿ÿ9ÿáçýÓî‹ÿXáCýËôÀt,úÁù½¼Uéž]´ÒµŸ1ë6ò¹›Ì²ÛMw S‚=¼"R‚¿šæ·IÙ˜ôÚœùâMæ1$t1áÛÞ9¹úžÐž|°È Ä$êDþæA›'$ó.…kæmVÐ/Gú>«lð;B¥‡ÂÃÝZ„f¿µ{>¡¤É¦ÉôÎ$~£ð;¹½­ž‹S<9ÀƒúÇÄlüïò~±{ùqùeu~=)4[é,5ÈÀåû’ÆéãAñϘû]“°{ZɱÇ3 ÿVøgúǸ?@v¾“löl£ Äâ%ÕÔ_LyàÌ_Í+yëh~VŒk>a#`ÎÁY­j¥û3ôz¿´ù{·´ýŸña.O~Ä—ÿ8¾oØ¿ë?cfÖ²e>>â~vͤóÕ_:v*ùoþrƒþ9Qÿ˜ûù23È?à»þ/¦þ¼¿Ü¾ÿ?ïóÿV?zqÿ8Ïÿ(^³ÿm©äÄ9ÿøÍËÿ ?îbáÿÁ#üü,º“èÌõÏ_ ÿÎGäƒþØößòrlùÛþ _ñ®?áQûäû‡üÿã4ÿÃ%÷EõOå7þKo&Û2ãžÇìgüciáaòÿj¿ãWQýrô<éž}\ùrÒçÌÚWšY÷J²º±Ž%§Žé£bZ¢µSÔ=Îk2ö^<šÜzÂO!(WB&AßÝ÷½ÏÇÚ†’zj3”eæ lmï¶C›7ñOüäßü¥ž\ÿ¶CÿÉöÏÿ‚ÏøþøWûâû/ü ijÃ?Þ‡Ð?’[þWyPÇ£8§ýKž•ìý‡§÷KýÔž Û?ø×ÏïîCæoÎïÊßðûy‡E·§–5YxÏjýRêBIZý7껚 òoýþKËù¬÷;æLôþ¬ºw»ŸIö/Úå —Ì}±þ|G_ë½üûÞ¹ùù¦uëh¼›¯ÏË[°ŠšEÑZ}fÚ% þìŒUßs\íàyí‡ç`4:“ûØAþ|䥴oÎÞOÛeÿ)#¬À?w#êÍ‘ê?¢~ÃåO¤³Õ:v*ìUóGüääÑ/•ü¹ndiubñÅ_ˆªA b€ä+óÏ(ÿ‚Ôâ48#{œ—^B&þðú?ü `N¯,«a¾B¾â‚ÿœ`ž¤y²×Ô_¬-ô˜«ñph¸†§…TŒÇÿHþ_Q ߎ&¼ŒjþÆÿø%ã—‚U· çµõ&zûæ*r˼ÓHÅå$®BªÔ’vÎ0R4RÊ125eâRùÂÏÏŸ˜Ú–|¹v·Ú•ŒšÎ¿ª[=b’â b·XQYC¸bA )Ðç>ÜÇÛ]±‡I¥—,7—$¢v2DDl‘`Ÿq{8öFNÊ켺Dxre¬p‰ˆå.ðhU¡ïaŸó”D4)[—_Yï®$XëñpXhZž°Íü2GòúhÞær?ÚÏü à||òéÂÛûóŒWVíåï2Y WëQjK3ÁQÏÓxQU¸õ¡*ErßøæÒgÇcˆdºÑˆö¯ø%bÕazL*üÁ;}¯§3ÖŸ6I5ß2h^Z³’ÿ^ÕmôËhÁ<¦p©Ùvsì œÀíÔÒö~3“Q’0ˆï<ýÙ>@æè»;Q­˜†!÷ž@y—Ïú¸üÑÓ?5|ãsnñZjšlÚ•íNüm­£iY‡.$¬¥¶ŠvÏ5ìþ?hðv†ºq"3ÆpâЈ2½úÊDæ+£Þkx{ .‹G £1—!þ”ˆ(Æëö§‘ß™ö¾fÐìü·¬]Ç™4¨–W<ïmÑG—WQ³IÛ—C™ÿð>ö¶¡¦Ž—<€ÏBÎù"ÒÎC”‡?âä\?m}šž‹Q-N“†fÍ ¡#Ì#Ðòèú=)àŸÎLjšuîµå"ÍÒçUÓ¢¯£‹ã‘>°cÄ@ß“q$/_¿<+þ Ì9µ80@ƒ’\U¹UÃy«¯Öûü ôÙq`Íšv!"*ùâ>á|ÿSè_Ê-\ùSÈz•‡Pd{­B¥c–áÌ… ;¨!OË=3ØÎÊŸfvV,9NŒ¤;Œ×ÓÀ{UÚP×öŽL°7 ‰ïoƒ|ãuþó-äR«Û>¿<‹05R‹pjÕðÛ>tíÌÑŸkg˜>ŸFü¸ŸrìŒRfáø@Wù¯ÓX%Š9#u’94r)¨e" ‚:ƒŸYBB@læéDÄy…ù&,CÍþxòï’´Ùïõ­BeHÙ­4îc׸p*©b¬jv­(:œÒvß´>ÈÂrg˜¶ú¤{€çñª]·dö.«´òˆa"÷•zb;Éåðæz%•©?•"×µPÉ©ù¶æmjîR"G÷1-I#b/ö¶‡jê,s™?ÉéÔ¼êY«k:N…g%þ³¨Ûé–q^ââEvì*w>nsY¯Óèñœ™çDu‘¯Ç¹ÉÒèój¦1á”@-æ–úãùç_ógÑd‹G£Ðü·T‚Ü™eœ«P†‘äS`ê3‘ö[´lêµ ,b‹œcꔫ¾Dpô¾Ñh‡eé°h›äÉå)zct@>û·‚ÿÎL\C/œô;xä -®‘ûôuõ'r üÀ®yÏüòÆ]£Š ï[ù\=×ü ñÊ:’#c“o„CèÈÙáŸòÃËB)›u¸Š`?eÖâBTûî3Òÿà{’3ì<n¸ò ëÞìuŸ˜á˜ü½^Ü|¯Ë‹«#ÿrù“?éë6Ÿ¾ÿ ÿön¿÷_ôþŨWê²~–ÿ•…õ÷w×}oFŸåzŸߘúŸîÏùÞ¼\\?-›´ÿXð¿)ÅÓ†¯á[½+òkô7è_?‚?I‰~­mõnVúǧW§¡ê~ꜫ^^ÙÕû ùoËk?“øü~ÕðqVÿMú9óâòyÏküKùÞåW íõW«—sÏ<óÇô¤?ò°?Å¿¤½3õO¯}_§_‹Ñáû¾5ëÃéÎcÚñÇòŸæ|JÛ†«ú5é®þ‹Ðv%ø'òïÃÅÏúWê¿zC£~€úÄŸáßñÖø~ûô]=^ý¯Câ¥|s]¡ü§ü¯æx«yðoNv³ó<#ó—ὸù_—VIþäÿó&ÓÖm}ÿAÿìÝwî¿èý‹Ö?Ãþ¬âñ¯þêý)Nì}}þìÕk¿)Ä?5ù«éâsøq»'æxOåÿ/_ÐåþÅöåøþUƇú—èÏJo¬zü}OWÔ[ÕãµyWèÏwö+òŸÈø¿/ýݾwg‹‹ÎþÇÇ}«üÏò¦Oë±UʨpðùSä;ùVŸ¡m¿GˆÇÿ\¸ú—èÏSÔþõýKÁö)N?Žxž›ùòÑð¼ÎqK‡‚ï™áá­¾šå»ë9ÿ•|sâx_•áñÕrW{ó¾{3úÉ_ÑÍèþýCÇÖú—×xÿÉêþ9»ÿ›ÏÁôøÜ~‰ÿú]GüÚ¾.þ—üGèE~O€ÄRÿŽ>·ÿ+ ëèÿ§ùñõûSŸÃêÖœ}_‹§òïaÿ’¿8”8¿9Å·WÇn>î?W.¯k¿”¿*?%Ãù^ü*ú~ð÷ðíüç­þeÿH]þ‡ÿþ€ú´|¿B}J¼¨}N5ÿI¯£;ojÿ•|Yx?ƒÂ?ºðþ5þSåðyOg?“¼(øÞ‹gûÎ?…ÿ“ùü_ 7ø­Ïôï*ž|½ ×½k߯¹âù'¯þÅõ±ü¥ÓÂÿdÍ-¾µõx>§ÿ+êžšýWÐúÇ¥éÓááÃáãN”Û7ظø‡ùîÚ¸ª¼«j÷:lœGòœW½ðÝùÞö­þäÿó&ÓÖYûïúÿfÃ÷_ôþÅŠê¿áo­ñø¯ëtøÿHñõ¸wþûã¥3O¬ü‰þùž/éýUþvîÏKùÎð‡úWþnÏÑ/ê_£4ïÑÜGýV¨pû>éÓÛ3ê ‡àCÂú8Gõko±ùóSâx³ñ>¾#Åï½þÔvd4uö®pßðEü¯òDÿ1üèð×>+éþoù[×ûùå8øÍ—òᮿçpüiê:/èÏÑ_èoOôGÕaýé}C€ôøûq¦uÚòøü ðøG rá­«àó:ÏÇŸ~'â¾|W¿Ú™æ[ŒÅüåúwü?yþúÏé~Q}_êWõ©ê/>?Zý×Ù­kôošŽÝü×å%ù^/jááâæ/ûÏO.ÿƒ³ìËþf?˜¯{ââ®[}®}ω<õéþ—þVø³ô·¥þõß«qô«¿£Ã÷|kׇ~¹à^Ð׿òŸæ|JÛ‹‚«ú5é«þoÅö~Ä¿þCÀà½øx¹ÿJýWýd_åÿÖ>¿uÿ*ëüYõ¾)õÿªýWÐ¥O_Öý×9oÖ™w³|^,¿’ÿ3Å·—£¾¯Îš»{‡Ãò‡Ã½qqqyððú½õñ}!¯ÊÅÿ ùkꦿLñ›ô÷ÕF}güSÔýÝ|=/§=S´•ÿ#ƒÃñ|]øø|.?+¿O»ó½ò_ç3xž‡·ø¼>u^¯ôßðßé‹ÿñ'øŸôç«þä~½é}c9òߥ)Ú6ÏíÉ~bšüÇ‹~®>+ó¿.]+–Ï«è5àGòþ‡^žá¯*û|ùî™iWú§üëÿãÏÑüÚŸ£}OCŸíqð×Ç2´\ø7ç8/ø/†ÿÍÚÜ}_ïÿ+Çý:â¯ó·LÿÜŸþdÏúzÌ¿ßÐû7÷_ôþÅ"Ö¿Eq‹üIþ5á_Ü~•­+þGÖ6¯Ë5ÚÿËÐü׿ü¼OÑÆæèük?—ü·Ÿéá}åϯʪò¿ü«?Ò|~±qúKêŸRú×.Rzž¯Ö¾ ò§Øß§lôîËñ´ÿÉ>'Õ..Žìñqx›sîß—GÏûCÃþXÍü¥ÁÈpñqðô® ùwù¾wó7èOÓw¿âßñOéú¯×~¿èúÝ>¿³O³M©Ó<ǵ¿+ù™~wó7ñqðñy|+•m\ŸAìßÌ~^?”ð<.œ7^ûß½œþ^ÿˆ~­sÿ*ëü[õQ½~QúŸ­AÊŸZýß:R¼wé\è}™üß¿’ÿ3Á{ÿwÁÅ×ëôß}oÞé;ò¼cùCÀâ­¾¾:ÿ3Õ^ý»ŸlÛz¿V·õùzÞ’zÜ©^T«Çj×Ã=óx¹Ð¿ÃgÆ2×áåfžaùÉþÿ_Œ)éoú#Ó§Ö~·Céý_¿/ÜkËlä½¹þNþMŸç¹}|}8<ûúUÞÏKì‡ç¿?Êsþ+úx:ñywuº­ßy_ôOé‹ðwø³ôïèþô½nµËŽÜ9â‘ùÌÈþgÆéÁ\U×—NûÛ½õ¾Óñ¼ùÏÂëÇuöõî­ûŸwÿ¹Ÿðwü}þŸýÿ}kë^ü‰õ9±¯¶}þüü^7‡ý>>ôœWþmù>ûÏ…âK‡†ÿÓp×ùÕæÿÿÙ endstream endobj 754 0 obj <>stream ÿØÿîAdobed€ÿÛ„      ÿÀt(ÿÄ¢  s!1AQa"q2‘¡±B#ÁRÑá3bð$r‚ñ%C4S’¢²csÂ5D'“£³6TdtÃÒâ&ƒ „”EF¤´VÓU(òãóÄÔäôeu…•¥µÅÕåõfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷8HXhxˆ˜¨¸ÈØèø)9IYiy‰™©¹ÉÙéù*:JZjzŠšªºÊÚêúm!1AQa"q‘2¡±ðÁÑá#BRbrñ3$4C‚’S%¢c²ÂsÒ5âDƒT“ &6E'dtU7ò£³Ã()Óã󄔤´ÄÔäôeu…•¥µÅÕåõFVfv†–¦¶ÆÖæöGWgw‡—§·Ç×ç÷8HXhxˆ˜¨¸ÈØèø9IYiy‰™©¹ÉÙéù*:JZjzŠšªºÊÚêúÿÚ ?÷üâ‡üâüã/šÿç¿!|ËæOÈ_"ëž`×|‹¡Þë:Íî‰i=ÍÕÌÖq¼³M+ÆYÝØ’ÄÎ*ú þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š»þ„Ãþq+ÿaÃòïÿ ûú¥Š¾nÿœÀÿœSÿœhò‡üãço™¼¯ùämÌ/•îîtfÇD´‚æÚeãÆH¥Ž0Ê»qWÒ?ó†úÉ_óŽù®ü¿ÿP1b¯¢5]E4› ¯ÞÚâðBP-¥ªšFwªŠJ‚IoU‹æÿ©'Ìÿô‰ýWÅ]þ7›þ¤Ÿ3ÿÒ?õ_wøÞoú’|ÏÿHpÿÕ|Ußãy¿êIó?ý!ÃÿUñVE¢k1ë–’]%•ÞœÐÎöóÙßF#™(wUg ‚7ÅSŒUØ«±Wb®Å]Š»v*ìU/Õµ´}/QÕg†{ˆtÛin¦‚Ù=I"Rì#JŽL@ØwÅX#~mù!‹¶¨¢+×£LJq†3 ΓJylŽŠ ‘]C‘â ‹OÍ/!Iq5¤~cµkˆd†LKÉpÊ‘${|lÅ…ÃÄ©yûEÒî.íg‚öiìïßM–8bLëb5r‡Œ€¾-ðãjˆºó×–ìô½X¸¾ §ùŽH"ÓçXq¨†B¤… &´©¸ÆÕ._Í?Ë÷”Bžh²w+ =Gï™–1P)V(h;Ó ª‹ù‘åY´¶Öl¯QÓSPƒM’êÙy-Ä1N¯¹ ŽUf+Z í±Ç‰RÏù[~UÛK"_EÚDð;B7õg’ läÔ™ŠîµÁįOÉ+±Wb®Å]мâóóOʶÖ›x×PMipm¤™â"Ë8·r®Z…Q™KŸÙRЭOÍo)¾‰>½ê]-¥­ÔvWVí .#žD2Ú"ÜŽt# ¨güÝò´q]LöÚ¢%¤O4µ´!ŠÅtm%⼪}7¡}¾Ë]Í1âTÇPüÍòž™¬Í¡ÜÝÉõØ%´‰ÙÿÓ+ŃօR•r>Îþqþjy§ÈZÕ¼VRÃg¦Ì#KwžÔK¯"’ĺ»=T­ÿÅ^5ÿ+—ó$Ô=O5Lmá3ÜÛÑO!÷Æ*Ù‚þ¡… ’¹QZ®À×Û¶*¹#Ž2JF¨[íW¯‡Ï_Š»|©ÿ9Çÿ¬ÿ9ÿ€…çükЦ_ó†úÉ_óŽù®ü¿ÿP1b¯ õ¯÷Ž/ùŒ´ÿ¨ˆñWÉ?Ÿš]®¡çÍ G‚øÛCsªëFí ŽŽR躩•¸òaÅÉb¼©Å^k¥YÚjÃôý̺=µ‹ÜÙ´ui,Imo+,’CnLòz‚T… `T¦ÎZûU²ÕgºmFææèÙiÉ ÊêìÕbQ+¯¢Ž¬ 5xÐ\Uõ¿åå.Ÿéùó#LóMäËcÊiå$±ËTËl¾¨R@•$uUôN…ýî¿ÿmYäÔXU?Å]Š»v*ìUØ«±Wb®Å]Š»v*£s$±[Ï,™ãš`ÁLŽ*œŽÃ‘Ú§ @$°D‰‘»á¯;ÿÎZþk~[iƒZóÏüâÖ³ iUµ6ó ÅºÊæˆ¯%µ´¡y‡*Tì3´Ñû-£ÖOƒ²2—wí!äužÒê´‘ãͤ”c߯ûò×üü Xó–µgåÏ*þ@jZî»~$6Z]®» K ‰I8ƒfŠIß¶fê}…†›É—T#̘ø§ Oí¬õñé̤y!ÿõ_úÏýƒÏ5ÜbßþÉsWþ‡û?þS¡þ”þ·eü»¯ÿ”)ÿ¦©kŸó—_›^Z³›Q×çüá§éöêZâù¯ZHcQ¹gxìTÜšfFety¥Ã v2OJÿ4fö›W„qOG0;ïo÷,ÛþqËþr¾Ïþr Ìbòúy&O(ÜhZtZŒRI¨¥÷Ö#’_I€U‚< ]êzæ´ÌK²qÃ'‰Æ$kéá­¯¼¹}…í{S$¡áð‹çw½wÓ~hóNƒäÍïÌ^e¾ý£X”wž”³põF¿(îjÌÃ9Í6›&§ ÇŒ\M‡ÞïõŒzx™ DußôÜOoz¬+Ò Û‚3p=—í#¸Â~cõº£í/g ŽQò?©¸ç,¿ç.$[þfØÏ)EmzíO-¹8ŸeûH 8OÌ~µÒvqØe#úžå ëºW™ô}?_Ðî¾»¤ê°‰ì.ý9"õ#;á*£ŽÀÍ.|Á3Žb¤9þ·Ãš '`òMò¦Öç?Ìo"~]Ù-ÿž<Û¥ùbÚ@L_¸H¤›Q Dú’dRs3IÙú\¸pÂR>C—¼òU®Á¥iˆ3÷gàùc[ÿœåü¾–õ´¿Ë)ù“ógSCCo¤XÜÂ+íê@d§¿§.c5"ÅÇ8½6ªpý„µKÚùa?áiãó?´¾~_ÿÎT~G~d^Øi`´×µX­4-V)¬'–VØE¸DŽV'`¨ÄŸ Ñë½™×èâgQÓ/=no^f¹Õd]ä¶²j¢[À‡fh©Cð*õ#®íÎÛÁØxÿ/¥€#¥T|åüéw_¼—•ì^ÇÍÛ9?1©™0­Ü¼£Ü=Þàýnòoåב/lMòO”ôÏ-Zª…o¨Û¤rINòÍC$þS±>ù庽~£W.,Ó”™û‡!ð}/K¡Á¥(!÷žgâÌóÊIuÿ-ùÍzlú7™´K0iWJV};P·Žâü‰ ø»£& 㑌‡PhµfÁìüÅóåß‘|×ç}Hr´òΛ=óD&GEýÜ` }·*¿Nq: $µzˆa9Ã]ªŽ—óK”A/ç]¦ó/æ§Ÿ–[Ùþ»æßÌ-r5ž}•MÞ¡:  ЍXÙF{è´:j¡Ž?dCá×—[¨³¼òKí‘F¾Kòž‘äO)ù{ÉÚ >†‘å»llš±X–…Øž¬Æ¬O‰ÏÖj§ªÍ,³ú¤I/ºi4ÐÓbŽ(}1>c9Å]мwóÃòkDüóòd^M×5+­"5;]N JÈFgíËÔV_‰—qß6ÝÚù;3? ¢(òÝÕö¿eôpøS$ Ç=ž¹mÛ[ÛÛ+3­¼i»u!šS}³W)q{ÝœE-Îqÿë#Î@à!yÿäR™Îë%Î8æ»òÿý@ÅŠ¾ŠÔ¬ä¾´h!¸³sŽHg)êx\U ZŠ®â¸ª]õ/2ÕúÓþáçþÊ1W}KÌŸõ~´ÿ¸yÿ²ŒUßRó'ý_­?îì£wÔ¼ÉÿWëOû‡Ÿû(ÅQzN6Ÿй»·7—/s<ˉy0U¢§& GsЦ¸«±Wb®Å]Š»v*ìUØ«±Wb®Å]оdÿœÈÿÖmüÍÿ˜kû¨[gGì—üja÷Ÿ÷%çý©ÿŒÜ¾áþè? ç<Ñyä¿Î(ù’ÃËŸœ®ôõ¿ysG¦½¸õl挘‘U‰à“mÐõ_htÑÔègŽSŒ¯T¶pù`êŸ[ ‘™é3±~¬ÐÑùÇÿa‹ó/þá³ÿÕ ó/ô7ƒþS0ÿ¦­ôoôE›þQ2ÿ¥?©ò×üå?üäÍùo«ùçòSÌŸ—Úoš PÞy‹ÌqM¼pȳ˜ F‚5.æ1R_e¯Â{t¾Í{9ƒª9Æ¢ 9Fyíg>çžö‹Ú Ù´Ç Áwì¯üibÿ;ýÉ~ô爾Èñ_ùÈ_ÊûÎÊO5ùN)®jQE.y¨òÛÝÁ2H²D‘ÒªjªM 훎Áí!ÙúÈf•ðŽ`s ‡UÛ}žuúIáÄj‰èAz’4[¿-ù/Ê>^¿x¤¾Ð´k >òH hš[kt‰Ê J–SB@Û¶`k3 Ùç’<¥"GÄÛ›¤Äpá„8ĦQ˜ÎCòËþ~Kþô~P«­Øžz_üygÿ7ýóç~ÞsÃþwèe¿óîùB¿3ð µÿ¨5Ì_ø ÿ‡ú§ïr}„þã/õ‡ÜôÏùÏ6kÿùÇû«˜£.º?˜4«ÉÈñŒ»Û–4íY†k}‡È!Ú ±ý?¡Ø{gŒË³É%ú?Kò¿þqÏ[Ë¿žÿ•¬Òˆ`_0ÛÚÏ+Rô5¡$ŸøËž™í›³óDsà'å¿è|ë°³ Zü2?Îç·éD™à¸;v*ìUØ«±WÊŸóœúÈßóø^Ƹªeÿ8aÿ¬•ÿ8áÿšïËÿõ*úgv*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUóüæGþ³oæoüÃXÿÝBÛ:?d¿ãS¼ÿ¹/?íOüfå÷÷Aùeÿ8aÿ­%ù{þ¦«ÿtëŒô¿kÿã//ù¿îƒç~ÊÿÆ–/ó¿Ü—ïNx‹ìŽÅX'æwžlÿ-?/¼ÝçËè~±–4éo­iëJ£ŒQTtç#*×ß3{7E-n¦#±‘¯Ö~Nhk“O<Ç”Eþ¯µùyæ¶óב|¥ç'°:cy£JµÔÿG–æa1‰rhG_¥ü®¢xnødE÷Ó-§ó8!–«Š ×½ù³ÿ?#ºµoÊKß½Ž×X¸eÿ%žÑûÁÏBÿôOyyÄ}ïíä½xG”¿CÒ?çÜÖCùkçÍI‡îï¼Î"Œøý^Î ÿÉÌ×û;Õct>ò\ïaaZl’ïŸÜí/Í/#Úþdþ^yÃÈ×mÁ<ɦMk ¤ñÏNPHHd•UºvÎC³u‡G©Ç˜ á×ìz¾ÑÒ ^žxOñ>=>×ó‰©iÚÏ•µËí'P‰´ß1yjýí¯"¨& Ë9hhEAâéP{çÐòC>1(ï ÷‚?Sáy1Ï Ìe´¢kÜCú#ü”üËÓÿ6ÿ,ü¯ç{)¸Ô-Vn¼LŒGw耕ßu ç‚vÇgKAªžro8Ÿ¤üŸpì|uÚhfÈßÊCŸÚõ\Ö;b®Å^}ù­çÛËË¿7yêüOËÚ|“ÛDG/Vå©´TWœ¬«×¾göf†ZÝL0GøÙÔü…ÚZÈèôóÍ/áoAóaßóŽzóoæ_äç”|ïçd³^×–êI~¡AE̱DÁä ² '»2½ ÑaÑkg‡ ðƹîy\^ÂÖeÖhá›-qJùræ@`ßóœúÈßóø^ƹ¦vé—üá‡þ²Wüã‡þk¿/ÿÔ X«éœUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«LʪYˆUQVc°u$⯊ç32|ŠßÞqòõŸ›ô{ýw]{ ]?Hµ½†{™ ÞC3‘nÌR6$‘Aã¸ÎÃÙÏÔ(cÈa!Ù$‚"9ü^OÚ­~ÈNq2•ó“ó3þqgÍ~\òG篒¼ÍæÍ^ @Ó—P[ÝRç—¥šÆh£åÄ1€éß=Úm.]OgäÇŠ&R5@y^ÙÝN=>»L’ˆ»?ý¶°üôü–Ôãõ,6|¡2Ð~™²FñV”÷gŽÏ±uÐú°dÿJSëPíÅŒÐÿL?ZWüÿüÐáyõÍŸ*"¢ò1êÛ\HGù1@ò;`2X» _”ÔpOý)ic“¶´8ÅË4?Ó÷?5ÿç*¿ç&­?<ŸJüžü¬Š{ß-êZ¥šÞkÅ&†]NéäÛÛÃo"ÆÂ$‘Ããâ`´-O¡û3ìä»3‹W©Úb&†Ç„u$ï½m·-Þ Ú>ߥZ]6ñ$o¿¨ôw_7ëo—4h|»åí Ëöƶúk§ÀhRÚ%‰v —<·Q˜æÉ,‡œ‰?3o¥àÄ1cŒ(€>BŸ‹¿ó˜þqÍÿÏË_+ùóAòͤ~^ÒmôÀ× w¨4-ÒÄ\„d¾I Ï]öKIüŸÙÇ.oOâ7µG¿¿âùOµ:¯ÏëÆ<>®Â+{—3_wÁú—ÿ8éù[/ä÷å'–Cò“¼™éå­"ÒÁÜ9É J²>Û|OSžYÚ£ªÔdÌŠDüËéš0Óiሠ@xOüçþ²7üäþŸñ®a¹i—üá‡þ²Wüã‡þk¿/ÿÔ X«éœUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUت”ÐÅq ¶ó ’Ñ£–3Ñ•…úA ÂQ|úçÿç s?”ú1sÕȘŸ¿ÕÍïú'í?õy}Ÿ©Òÿ¡¾ÎÿQÛúÛÿ¡OÿœuÿËO£Éoú«ú'í/õi}Ÿ©Ðßg¨Çíýküâ_üã5?”z>%fÿª˜ÑGiÿ«ËìýHÿC}þ£·õ¹çÿçTÕ)4E>!fó3ú(í?õy}Ÿ©?èo³¿Ôcöþ´ÛEÿœhü‡òkÚ/å–‘a«è÷1Þi—Ȳ–†x$‘CHETî*2¼ÞÐö†hO4ŒH¢6Ü6bì )‰ÃD°{Šsù­äŸ?yîËOѼŸù™/å®—/ª¾f¼±°KFæ& +k‡‘>­ûUuºPŒ§³5š},ŒòáñOð‚j#ÌŠõ{¹6öŽ“Q©ˆ†,¾þ*#î7é÷óJ?+?ç*?(J^yWËQIæ"…n|ר3]ê3êšbÆ õ5ñ½rÞÓíýghm–~æ£òþ6ÕÙ݇¤Ðçåó<¾qÍ3·v*ìUyÛò·òëó"ÝmüóäÍ+Ì¢5ãÍ庛ˆ‡„W Icÿ`Ã3´}¥©Ñ›Ã’Q÷¾#‘ø¸Z¾ÎÓêÅf„eïü0ùw\ÿœü¯7£Tò¿æËMMH1Ýé—ÓÎR†¿K/¨?àó¤Ãí®¯‡‡á_cÏfö;KÅņRÆ|‰?y¿µAç?7à+OùÌ>Cl»$N“ÈÀxs:€9/ôO¢;+øÄ£ý ëÃ[’¾?ñHCÿ83§ë÷1Ïù—ùËçÌhãÜ[j*ò­j¦Iç+ôd¿Ñ¤± ÓàÇÜ?`cþ„#”Þ£<ò{Ïí/ròGüâçäOåýí–«åÿËû95>EšËWÔä›Qž)PÕeŒÝÉ"ÆêEC vÍ6³ÚNÐÕÄÇ&SÂyQãUo¤ö{C¥”1Ž!È›‘ûn¾Íº|©ÿ9Çÿ¬ÿ9ÿ€…çükЦ_ó†úÉ_óŽù®ü¿ÿP1b¯¦qWb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å_7è_˜t¸³òÅΣ4•¼“T‡Ì+õ2¥´ï`©^o 4ø»~%<0וoój)?˜œˆCE¢›û¸ü·ir,f± Ú´Ú¼k`ÈÈé!ºSJŸOŠ´u2VÏ^þ—_wëG™V«æ¿Ì¯ÒÓËŸ]ÑuÝ2ÛGó ö"9 ×V„·1JŒ€,qË«sôÁ£%K ªŽQ†xØr £rTàÆ6'q~â:|Wˆ§žs󇛴7Þiº<"}ÓIÑnõVßÖ{T½Õ¤¶½¹Z|Nb¶Œ¸@N\[¦C(JyÙûßje" ¿ó¿æ%Œ¾`&3&––>hMÔÖË›ßÜYAe.šeE zuUd†qÊc3]÷ß•Ýþr Þ–Íç¿ÍE¿ó5¬1Ål°ÚÉ—¯/ô÷’ѵ«é2F­õb%âspe®Ì´žQ¾HaÅCíߦÿ¨/™©çÿ=ÙiS^/–®!Öt½I.|Å¢M Ê©¤XGhu#c,NÆ_YžÜ“ɺ2VQ\pã&¯b6>fêÿJL‹4ò_šuf?3[_ŸUÓµmUtÛsnð!±†å㲫• K Ö§®U—ʇϫ(›yuן2ÿCi…¹’âçI°—ͶícÁô­Z]ZÆÚkHU枌·@“Ϥ²râß@ÊÈ=æ·æ(ï÷|ØqIê~eÕüÇ¢É䈿è½Fýí¼Ý¯ˆ’Y­#ú´¯ŠPz· ‘³úeT‹^Cc..úØ~<™’E0 SóÍÐ\^.”ŸYÑn<»{…®ÜiÓ>a³„]+Ü[©VK슺rtp@óçbÅÿë`dQÑyÇÏë¨höºþ—&ƒmúEtï7jð­Å¼ ¶ 4séò~ñžÞê~ <ªZ?°ê¾ {Xùõó â=R-CÏþs…<ò4û»‹ÇÓ"Ó[ÊLtïM®£žÚÂIåhÞ-›œÒý¢ôãðä㆛ëw¿½Gw±ùSÕõ,XÞkèbÖD·Pê4>ƒÆðÜIÇ"‚Tºª€Ì„£5Y>¹‹š"2"<™ÄØÝàŸóœúÈßóø^ƹS$ËþpÃÿY+þqÃÿ5ß—ÿê,UôÎ*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»u?¸«±Wb®Å]Š»v*ìUØ«±Wb¯•?ç8ÿõ‘¿ç ?ð¼ÿqTËþpÃÿY+þqÃÿ5ß—ÿê,UôÎ*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«åOùÎ?ýdoùÈü/?ã\U2ÿœ0ÿÖJÿœpÿÍwåÿú‹}3Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ùSþsÿYþrÿ Ïø×L¿ç ?õ’¿ç?ó]ùþ bÅ_Lâ®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*€¼Õ4Ý=£Kûû{&•yF'‘cä¤uˆý¹~lqŠ©\kzE¨Cs©[À$2*p*açê_äôÚ¾>ª›ù‡BÖ7Ö,ÖF Q ȇ• ­O!*RyURmoG·œÛO©ÚÃrH`yU\!VpÅI­8©5ðª“y‹AH̯¬Y¤`!.Ó H"Ïí$lÃÄqTÒ¢¸‰&‚A,R ¤Šjñ«åŸùÎ?ýdoùÈü/?ã\U2ÿœ0ÿÖJÿœpÿÍwåÿú‹}3Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUتC«ùsM×'·›Qˆ\$ÉnmœŠHå–]]Xj`\UÞQÓÇOÓÌ—/š÷OnòÌÒÊMÜSÄüärÌÿ íBÄœU+¸ü»Ðn9rõA0¬À*Ço#4`-†ƒ¸ â¨Ëï$i…ÚÞÎó™Õ-ÓÕ/ÊJ[+¢~ñªÕa#ßã«T1Tü¸ÐZj^ãêz-R9âRŸÈª— ª‹E€ ±Viafš}¤V‘»I"ˆZ•» ©Ó|Áÿ9Çÿ¬ÿ9ÿ€…çükЦ_ó†úÉ_óŽù®ü¿ÿP1b¯¦qWb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Фže¼¶Óü»®ê–j¶–6:eº‡–â8£gh£RT`(q*ð›¯7~Ui²µ¥ß”ä¾¹ˆ¯«6™lÓÛÑãõT‰$h‰¢öû@¨©dx•lžuü£K‹{h¼™}r÷\=NÖ0XÉ̪çW-Â6$¨¡SFcÄÿ˜_”-´ï)Í>¥q,Çm-©ES1byº»SŠ©é^«Ø×5¦çK_$ù:=Yü¡ìz¥ðµ“êñòhÔ£T.»“A¹¦õ=0“JÀæ?ä»F× äýFK4[–kİ ”µ~ @%æylV‹¸5ñ ã š7þT$’Ã7‘õ8.-åHg…ì+ÅäT+¬­ÔFÄpf­6ê1â Éü”¾Aó§é•¶òšXϣܤRÁqRb°¸ •nHwâH¢µ6¬~Ç^ü¹Ÿ[‡@¸òTɨ_jÒé¶^•¿(Õc’HÖY¤TúLՎ­Qƒ‰Y›ßòÛÉséÖÚŸ•îmR+‰­ã²…d!-}1!`Ò¡ë*ôÄÐo„šVqçŸÊxa{•òUé‚ÚR—ŠÖ`J-×Å~­MÑÔƒJSÅ”0ãUúo*/—OVòeâË}$q["#C#(¹È­ÆŽ xî+Æ´4D•ù²Ëo&Åk6±åÔ)x· ‚@ h̯RΠ>È­Oa±¡&•ƒ/ž?'Ú1 ò}ðõ8z lÔz‚I’*LÔ¼p H « -ƒŒ+Ü|¥u¥Þè6w:.Ÿ.—¦»L¶ÖS*£¯ ]•Vp92’7é„|ñÿ9Çÿ¬ÿ9ÿ€…çük…S/ùÃýd¯ùÇü×~_ÿ¨±WÓ8«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®ÅP£_®™¨¶•èþ“[iNõŠú^¸Céú” ñåJïÓ¯úß祦] )|»wÄWÁ¨X¹̸†±¿¬è­ÄÕ£|JT×!º¡¬æÅõ¥¥Í½Ç—5+Ý2Kˆío9 ¤ã*Äcva%DœYÕ¨@âE:œwVO{wù‚<µd÷Z%‡›.5^ð1ÚIÇéÂ¥¥-+0©POJm\;ª¦ªþvý多öÂLËuújÆÞu³{š+­¯¡,†P£™Ô^,~-ºQ“jÆîõ?Î8VæG¾ò•‘²µŽãPŠPÁmô•i®ª#!>4­ÁeTοù¼÷rÚ/øV-A$ÑF¸¸ÈIN@NŒ*üEhMl«:ó·œî-´s¥Ï`óJy „†&Õ‡~•üã™XYIå›´-Ú¨–'OU’à°*‡cJ®ÕÁeU&5[Èm<¯q{T‰ä†DuÑZx•ÅÃYö¡¥äèn´á'­-=K…„Î÷T†y‹*)c´ðÑÀ¡4†}åÄ7Wšy¹í|ϤÙ_êOrZ?Ñ÷ÆçÓŽä$üÊÇR¬¡j?hävT}·üª}/UƒZ>mÕn`ÓZ&†éÌïõš4²¢ ŠÖxŸêçŠî6ØïL;+?Òtß(ùïSÕ®ô=oÌnä\ꕽ»ŠÚÖSSõxà‘ÂÆÎ$/ðVŠÀ‡ÅShÿ&ô(£šõ­e"¸v–t[·Èé;ê z*M:µ[©$žJÿåPjÏåëMÌ FSo­É«I¨…ušHä‡Ó6ìÞ±,+W‰¡§†Ej¿“p][Ý.•æýoI»š¡‚Ss$ð¢Éºrœ+jÐìJÑ *ªáVE¬þXyo\Ó4].ùïZ= `´»[™EË$м²OËÔe1ÊêTž4b)LxB¥ò§tORÖc­ë~µŸîà”_J¬ &2Ѭ ¦7êSû G…T¥üœÓçWõ<Ï­—ôÌvÒ,à4>¤^”ͧÂÒ)<ˆÞ¦¢‡zf‡¤C¡ivú\Ít–æF77^WidiSV9 ¯š¿ç8ÿõ‘¿ç ?ð¼ÿqTËþpÃÿY+þqÃÿ5ß—ÿê,UôÎ*ìUØ«±Wb®Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUØ«±T-íÍ­•Ýåô‰¬2My,‚ª±"–rÃ}‚ƒ\Uêþaü´Ô4[UÕotë½\ÚÐp,²PFPzkÉ~6›o‘°¬‚Ù¼§¦Ec¥Û}BÚ8¢)gj8|ƬZµ¯µK{áÙS0š7¤ eÂÙˆž@#¤lw¯q>§Ö(8Ñ>*°pvìkŽÊŒŠ} Lv1ÏokúYÞäËÏàıÆÍÌž#ˆâ)_–*™½å¤s%¼—P¥Ä‚±ÀΡØx…&§¦QžšÊκ…±D¯'¥)Zšö¨ÅTßYÒc’ŸQ·\rô”H¦¡¤bhvPš°Z¢žîÒ:ú—Q%Hy:Ûž„ìXu *o` TȽXû€HöÆÕs­i6‘´·º*påûÀÇ÷Å>©<ŽÃl¨øåŠe/ ‹*e,„0䦌*;‚(p«åùÎ?ýdoùÈü/?ã\U2ÿœ0ÿÖJÿœpÿÍwåÿú‹}3Š»v*ìUkºF¥äuvv ó'ÉÒG7š|·o_W\²R:2ø—ÇIš\ ~MÕb9›ÏµÏÏÏÉÿ-j2i:çžì4ýF$I$µu™ˆY$5HØn=óe§öw´3Ã"cß·ëuzŸi;;M> ™¢%Ý¿_‚_iÿ9!ù}q¥§æ&Ÿ5ÄÌ(‚\I4x€ï–OÙ~Ò€â–WÃõµãö«²òK†9âOÇõ=2?7ùfCÅu«Pègãÿ¦j΋0þíÆ³ þ ˜Å¬éÿsªZKì³!ýG*82GœOɰfå!óLU•€*CÐÆTÚÞ*ìUØ«±Wb®Å]Š»v*“ù…ôøô mõXe¸ÒÖÂãôŒFòÊðzmê*G.ÌV =°|ï¨OùK&¹¨5Yï¦kkKÉ"‚imPÛ¢5º#Æ a1«)à§“1§!²¨[i_”·:½G”µ£y¨^­uIÒZ-×;€ŒÒ1% dž€|?ΕvKÕu#ù;˾Xó²òñ–+¨¡•´»F)%ÍÅ´ŒöÆÛñf•øƒÓ}öÉÆ|µ¤~]yïIƒBÓü¹y¥XybCyeiqDùÚYP,ŠŠ%SÉR mL¬W\òÇå§“üÂÖÓù[S¾6zUºú6±4°\¹T†9å"0=eúº©`Ý³Š à ¤—:_åEÖ©¥êñè~e‚Ö Hã†AØÁ4e2¨‹Ðpü½ü´ò匶¥åËÝN!/Õ­ìm9ÊäDw‘cZ,-”³ T㉈ ó¹[ò±fYìü­ßËrë6¥suõˆgÂzPKY¤¨4».â£l%9Ö|Éùw¯ë÷7^`òn©s¢Úu(ín®Ö‹‚·+U€²ñ À’>4ÞœwÂH*Äu=?òÉ.m,´Ÿ+k6×Þ\¸…äµÓÝŠ‹[™ aštŠR¨DNÃÂHâ­Ë#AY&Ÿÿ*~Í"¶²òV¯õ–q¾šmf_QáAL …AQ!PÄŽõë‡e} ä™4™¼­£Ë¡Aqo£I-2+µe”BI+É_âtzdãÉŸ¿ç8ÿõ‘¿ç ?ð¼ÿp«âïùÆÿùÏ¿ÊËïùÇÉ?&_ùsÍÚ–­å%hÚn¥-•§ÕÌöÖ±Æþ›Ëx…–ªhJŒŸ7máÅ3%`×!úÞ¼?çæ”|€>Bó RvoGO­ÕÐ{“ãŸÃqíí9æ$>µô”?ç(ÿ üé'LüÎÐìn¦û:n«wŸs_NáÒ§äN6çbí>NSOz‚xnbŽâÚd¸‚e Ѱte= °¨#6æª ° §¨;ƒŠ¤7¾Vòö¢ºÑ휷YoÿœOã™8õy¡ÊEÇž—ùÄ>>üæÿœ>>|Öî|Óå5Ç£ê[EèMF’Ùý*§ë(Í"mþCgiØ~ÚþOÛlž wßú<ÌâýÐu­ÌK{£êê0$žŒïWÓp~„0mžsŸL†`ƒæú–ŸQ‹P8±ÈËnþäN­«[émigm¿Öuã§iHü”4Ò°Çuä¡¥@±#‹ Édšˆæ@ï‘èfÌ1Ô@¹Côžèާô¾Tüïó/|‰ç!#ÎÚÕ•Ö§n$Ö§²¿¹¶†áþ¶‚“‚¢¡«Nƒ}Éγ°ôºm^Ÿ/(×Hô÷ÕÝîñ½¿©Ôé58¸2Ì.U"õw]UmO»tŸ8ùŽ+[IeÔ>²¤ŠtV5#¡jÎ6ƒ $×¹ôL:Ü “~ô'˜¿ç#<µäëoæ=2è…ŒI,ö “RG÷rÏnÄáÓ{1›T/‡Ço·v½W´¸t¦²Äü7ýLóÈÿœ_–ÿ˜‘Ä<¯æ««ùW‘Ñ%™"¿JuålÍÏ·PÍwhv&³B}Œüê¸ÿ¦äçvnhµã÷9?ͺ—ú^oMÍS¶v*ìUØ«±Wb©7˜çÕ-|¿®\è›fßO¹“I· ÊÄÆ%âH¯AJà*òèì?;ÒK¿- j$Ì«"9 ûDÁ\’ ®ëµÐ’#EWE¦þuDM©ytJâ²Þv<Ø(fˆBü$¢»Ôò¥Õë–óêCSôŽ¢ ‹ëþL^¸Qêp¨*Ò£$¨°ª¿e@¯Z U¢ªMJ‚|HÅZÆ+HÔTÔи«„qŽ‘¨éØv5qÅ]éÆ!ÐÐW\@mˆxUiŠ3ZƧ–Ͱޘ«„q‚X"†&¤ÐV½1U²³Šync´†;™ãH§¸XÔ;¤EŒjÌHRì@=*|qUVŠ&Z$`APõÅ]QApAà *(PUU  l*ùcþsÿYþrÿ Ïø×7ž@<|å^ºM¯ü@d^ _¾¢Ö,»Tõï዆¹[ ­r@ …ÆŒ7ܵÅDü»üÛüÅü¨½kÿËÿ7^ùnI`„öò Ô†·¹Ib;ÿ“äéõY°ÝʾçèåüüvåtÏÎí$‡áK4ùn؆/wi$ûø“И »Ý'oôÌ>#ôÔý9òGŸ<£ù‘åë?5y#]·óƒ~Õï ä´#ª¼r*º0â ÐâÍ ±°YvÄ£§XêÖ7zf§köŸAyi2†I#qFV±ç‹ö»mFš~ðûÎå­ôKK‹²(`^l M@ì)\ãgÈ@ï{Œr¬@žçǛߘ:$º…ͽ†sutahÞæp6aïZoá§bönQe ÞÏÛ½©ˆÃO-ß?yS_Ó,õ·ŸV™‘kÌÅS]‰ý¯•3¡Õá”áà ¿7—ÐçŽ)ø™,D÷r~‹~W~~)±´±²Õ›Uµ‹÷koz1Ó°…þòsÍ{[ÙßQ”£Â|¿ú—d{G@Kˆyþ-õ~ƒù‰åíqã¶›;× ô&§Dzº’>úg¨ìÌØw«_§íYvº,ó5Î{±Wb®ÅP·×kcguxñÉ*ÚÄÒ˜¢RîÜExªÉ=%^Eæw˜ ®™ÞBÔãÖžt´Ö,U"\+Æ’ˆ°V‹?§!`>Xt¬x•1°üÈÔ.5‹.óÉZµŠê·Ãeq(=?R/W÷ÀÈ~ƒÏhv§S®OÌZkËÉG”5;}'N¶ :Íú̳És@®T,!™¥êh@O¥6ÿšÚ´º–ª¿à-j}"ܬv1@RêÎŽò ]?w!#*+Sñ…_ˆ4Û ÆÑM4œW­iâ{aµÝ õ£$±Áõ'•‚ƃ¹Ë°bžyŒp"hF" “° “GeûÕ|íCI ü#ÆŒkZgq‹ØèD—1¿èÇô“úa<³ú">%éÞCó׿(ukO<~\yžâÑà™I[¡‘m®QOÃì ê³ÆkÞ”ìAß5ý¹ì¼´8¼|rã…ÑÚŒ{‰ßqæÇAÚ¹1gà#‚}×´¼¿cö£þq«þrÿÉÿžv°èZá³òæTu妙Œ7ê Vk $ Ê»“&uÿ(|Yɽ惴á©vŸw¹ö.hìU‹y“ÊöºìFT¥¶£ŸFä(øöÙdñ«34ºÉa5Î=ß©ÄÔéc”_"ü¶ÿœ¹ŒZk~N°¹háÕtõ¹¶Õ¤d’&Ȳôov†YæÈcv|½ïµÏ1[E}uuõ¾2I+2梇jS|ÖçÕB’_BÑèˆÅ°Kò—æwš‚ÆövóÁ@q ÍHíާ噵>8P±æ«±°éÌŽ<¦2'¼mðÙ÷‡äŸ˜µmjáRîâN”F&´aZ5{æ«·4øñÆâ9£ÙýNL²1‘äjߣ¾_ó=Λo ÛÌoìÕUL2± S¯ýŸÕžg©ÒG!6(¾¡§ÕFÃ8ò·æ”üáy«éz6¨’ëÿVÖ4§ ÐÈvšÓö’£5Ú¾ÌÏ¥Œg8úd,‡õ{‹™¤í,©J—ª&¤:ƒú}á›æžìU$ó-Þ©åÝwM°Ô[G½¿Óîmí5db­m,‘2¤ÊÊA åP{`*ò›{9ièí/æ–™r’‘5Ϭ‹ÏÒX¢ÑÊÁX R²*ñW,æ6õ8¬~*€“BóÜšPÓ¢üÔÓÌE,¨€ÉuC •LffI#ásSÌWd¨âÑïW¦hË©\ùjm:ïÌöš§˜o!»á«Zq«¹`¯hÅ‚FYh96‰ß$å]+̺T7ÑùÌ ¯¼ó™,äH=E 4í5@^=w­Mw @V#qåoÌÖ{ï«þ`À^Êå¬TÉn„7¦!nTX‚Ü䣈â~,U <µùµÎ&o¯÷£»å}Éôšm¤ˆ.l5˜ä·”Ò10‰=:³jÓ1óû'<û,ó¦Õe‰áÉŒØîýD’[-®­ÂÛ:âWcHš$.^êÊ(Fs¹»[‹'†qHž” ÜC‘F G‹ŒÖÍïíC@Õ-îE´“[$O Éõù’MkJ’X¸¦l³{/©Å˜c2Pþ|’i4ëÿ/%æ¥xÐ]òONÅíe2[wrxŽ&›oïböû:RÏ”Æ[TxMóæym¶ß7+xk'q¸ÖäHW¸y¤Öš›Þ?(æ¤nxÐ6äûžt³ø‡c³´Ë¦Ž1¸Ýí~]‹ýÃß½ØSm ¼í `²q­½|EstD+“ÄÄBW|ªž µ§þ¨Ê5ïý AÕõ=.òÃWÒ/ît­[M™.4íJÖV†x&MÖHäBXàç‚DØz¹Ü%`ÑC÷Gþpóþrº/ÎM9<…çyÒÌí×Ôúû´QÇ­Û¡£O j“ þö5R)ñƒBB›zÎËí/ÌÇ‚Xû|ÿ[î¼.áØ«æÿùÈïÈ«OÎ*úÚZÁeç}·¢êGÖ ½¤Ì»ñ’ƒ‰ ñmÀÜçMìÏo˳3Tìâ–ÒßÒï´<¿´þÏǵ0Ü(eŽñ=ÿÑ>þÅòÿŸ^[]($ŽâÞkh)-å‘¿vñ³+)VèAç]ÙàK%Š ——ícŠ·“ó‹ó'V6Z&³¨ ›ÞßPËœr5*5ïèúþV>™©¤zW–`}:Ѧ·«²Ž«-xò«\ë!Ú˜²ŠÇ°ù<^ggŽG6ªBrç[‘}äž~꧸yó,i÷…t-P‹e_­ZVè7 Tò§Ž_8`ÖdžÁ!ÒK¯³%âW¢Gñî/Ñ¿Êo>]yŠÒgYREýåT0ëZàû_³ã‚Gj{îÆí#¨€7l‚òÎóE½Öõ½1¿Fêrúÿ^· …ŽÕæ´;P}Ç,aŽ{µNTá,RžHlNö,ÿç2ôH¼×§~X~nɉ®ßÍ4?Ýâ‡N¹doÝÇuËÓò0`¨EUÏòž¸·ì¡Å¨Òï,Çœ‡}w´y¹¾ÎûE-Yž@©@×IÊûÞûÌî7¡Î!ìZ–i«é×ÚUú4–Z•¼–×q£¼LÑÊ¥Œ«) õR튰&ü¤ò;ꤚtòßÜ–2Î÷w|q¬L œP(6è)ª ù5ùz# "rf–··d7¹S-+ïJžûcÂ6òÿå·”¼¯}k¨è¶SÚÏeÖö¨nî$‰ãÒõiÈÉVôR¦•Û+;®Å]Š»v*ìUØ«±Wb®Å]оTÿœãÿÖFÿœ€ÿÀBóþ5Å_Î|ñegùå-îÆuiV¡á10KˆÚ/ˆ«¶Õ=Šž½s¸ìÞÕð´ñÅ8ž½Ò~=Ä>u®ì9æÕäÍ ³½ï{mÝÞ ii«è÷ dº¼u$ü6ë *Z…bµ$©Þ }ù¶ÓgÇ!r? ™tyà*û7ð÷²)¢ŽûIHt»©¢¾·uXîOMhczô&™™–ˇ†‰óµ|?c­„å‡9–Xƒ ÐÜÛV—Økz´S]iúäêÒÝ ½³)`«På;2Åkpê2FgoTG0G˜èåj48%äÓžDrß•ùÍSôrKrdÓl–[f„º:Ë_VÝ6桘ёw?Ç21GÃ?º¾|â:ûÀcù“VYT®¹r‘èväJ[£ùR+ˤýâ­ÝË?Õîà?»r†´pIñ#§|ÊìØCQ-¨õ½ÈÖö±ÃkÒ*Áæ/»ãö2o7khö•lÝ ÕôMnA¹X¹Ut™ºf¶]¯->豑s?êôçs>N‹²t£UžZ©LMCßÔü9{Øå’ñŒUFÙæAÞe6YNƒ®ëW×t2y~ùô½wA»ŠûI¿Ž…¡ž#É„Gˆ"„T‘³^<‡„¢wŸÑ_üã—çfùíùi¥ù²–Úý™œ4ÄR‹o©FŠÒz`–&9ŒÔü&‡â`y¡ÕV!1Ï‘÷½ç ˜ìUñ÷üäÿåv³æk+]kËH¼¦>†¸®áU?w5;ÖœM=¶ë¯²}­O#/¾?¤<_µ}““S<]v—è/ÈÌ+C–«¦kŠePk‰!…袀H¡öÏVÈqê°Yújß+ìéfÐëF8×}YûßM¤ÝjWMõ[nfv¤Q&ývœž} ò̘‡ÔŒÆ1ê;¯MÓ¿-eÓm£Ÿ]¢¸?q8!+×—àoO¿3±ö'¼…çgÛ°Ï#Àç·ÜÇtytÿ/yçG–Öú[¨â¹ã¨9ІøHØ ìw Ê4°Ç¦ÕÄBD÷¹Ú¼SÕh²DƉ‰¯½úãÿ8ëxÒzÉh¯iýû‘Ô±ëßi ÕÑ{)’ã@ræúCÌW× §Ìz ì(;ö®sh1³Öêr»ò{ó@CæoÌÍ&â9VâÎ=̱²Y` 'À·Ï= Dc‰è-ác¯Œtú™ÆîDD2+î³o¶ÿçÿç1`òdšw2µ7ºò’F–ú&¶ 2O¦’ÔT™“â{p6‹:û¯NKÚoeñêï>”V^rIyŽé|÷½²ý½¨ÑƒU¾´eüQò=ñø=ܾ³C4WE<,Ð΋$2¡ ¬¬*¬Ø‚Ùå2‰‰£ÍõÈHXä©.Å]Š»v*ìUØ«±Wb®Å]Š»v*ìUò§üçþ²7üäþŸñ®*þcü….›”<¸/â‹Q¹–±Ü1‘!ˆ E¨ HÜÓ;ŽÍÇŒ`${×¹åµÐË,²ðɈ¦ÄŸ3×ɘ¼B«ýGN·Òï£f†‹êAœç=³ì¹aÔLO2uþl€¾¬~Çoì÷h ºq‚[JlI»îE ÜŽzøgí'¹D…{v'$ËëùÃÎwü¡üáÒãÔo¿“üôÑèžgY–(ZF¥¥ÙŠR’6Fn™w»NÉÕø€?L¶? ¿ Ì“Û;Aê6úÞŸt‚K{Èž”€vqN†£n£'!Ç!!Ì1Œ‘1<‹ùñÿœ€´ºòn·ù‡¢ë0˜µ [û‹ x]he2ŸÜ2]¤Œ‡Ç=ÿGª†] 2G”¢>}GÀØ|#ƒ/òÉÆEpL“ýQ½üE|ү˟˟GEšX¢,º}·ÖuKÒÌ®Ž„ÞÙqÉ 0ŒŠM:Üù»S6I’F8òq·/+<íåœS]Ãa¦ZZÌðË4òãCBP(ÓµNSÚÒ‘Æ2æ{%ˆx¹e!Èð}+H¼»½Ž+{yy]cHã,zýsI¤Ò“;§¸Í¨†(L€½ß¹~DýåuWd¸»…e¹Œ3z’&Û¤}‘¸ë\Ö{A¯ñ3ðtSìçgøxgŸs1³¹¸º’?L…’ *®xòÿ·Û3¡f4:8™±Ç7Ȳ›#Z¯×tÍabIËÐrbo´@ JÖƒÜW2£ØÙ¥ëÇ’¾ÇWŸY§Œ¸ïn|ÿ±—÷ks[jt¹Ó¯XEsm58¯b/²{‚:f0ÜÇ&ñ;{ØKO iım8îüoîH/´¹d[Ù,¤áqipÐL úfHÔ•WoÈPSÇ0³èÉâáèiÎê„Lm!}ôzwÜÉ´?2L-¬le³m7RЩ±yrG®ÖH…‘àfю䟠ï‚9 #ð‘8ìIæ 7ôþ=ΫWÙÑ”ç1.(Oxôñ“GˆrÛûy=’Ö sH× ˆ¬æt?S–íhŒçâ ßá#çF“K›_¥ÔcØñI˜ÚúK–ÞDrx­VHhóá‘ÚŽâ<Àþoë/X浚[K˜šÞx[Œ‘0¡¯Žþ=Fyf}>M>C á4Aü|ž¸N9b'`õD‚6¯½r¦ ЂMH4Ù ‚;‚:S ¿£ÏùÅß̉?4ÿ#¼‰æ{ÉŒúÄ6_¢¼Á#°wkÝ<ý^YŽòpoüØÞö~£ÇÁuGÞ6}…Ív*üaÿŸ“yJ]+óKò›ÍV°*i~p"ÛT ²jt°ª4€Ž;ÛÊÿTç¦{®–M9ÓŸà•t¿h?7ŽíÞÍÇŽyµCêž3ªß·ÉéÞ^ò­¶‹ùm)X#FÔ•ÌòYœ«0;ŸeÍŽ«Vrë9òy]Š8t;|ßšÿ™àŽÜÔÊB8ž~Àý…Ð.ãò¯•tØ}R8Ù×X°¿Qôçžê uä|Þ·O1¦Áäø»þr ÊßÍöÃQ¹hÚ ŒOûº7%p„Ó;ÇÇxåŽ]w·íMFAžñǦ‡q|ƒ©ÉèyWη’ ÒhÔR$]éØS6“5‹!ïþÆœÖé ?‡ïÞGíx.…fnõí<ƒÞB¥O‚°cú³O‹9"<Þã]“ÃÓä—tOÜúGÍZ½Î¤ÝÞÙLÐ<2Äy „ȼÇQºÔfÿ>CØ|ó²40ÕçŒ2 °~tkí~äÿÎ7~fŸ3ù7ËÚ~£q%ÌgÓoä`A ƒ÷R?g®ÛvãžÓöXÁ¨œà(^ãß×õ¾©ìÏiK6žÈw¯ÌlCê婨«±Wb®Å]Š»v*ìUØ«±Wb®Å_*Îqÿë#Î@à!yÿâ¯åÛJÕ/5/#ù@ÎÊãHÒí¬m!QÄ,b§‘©Ü’zçg‡Q<šlb_ùÐâÒãÁ¨ÉÂ>²dOŸw¹¡Þ+}b_ßH~ NýAä*s/A”GRÙ¬ÅÊ]Óô+[¦Œ¢°ã¿!ÓžÄSç\ê4°$y<ßhf€6yýÉO˜$ u$š{Т©»Õ\m°VðÛ4ý¨"epr»>$À ƒÝ䡤\ \ÜÚúu‘ª°t>!ºöÌLŰÏYòàNöêÈÂZÜßé÷)¾ÓWзFøDÉÈ7@A®û e™qG$âŠ;?/Ú븧ãü3ÜÿD×0;¼»Þ“æmsTòΓ£[Á<0Étçë”ZðE }$ëâw;çI¬ÕfÐéñãyù ½#ño'Ù]Ÿƒ´ug HˆôïÌïê?«’„Ö²yÏM¶Ô-=;}ONF[„’ª’ÂG ŠîÚ¹¦ížÉ—n`Ž\T2ãïa(ó¡Ïpy[dsÈÎqÎÎ9‘UÌK–ì.æ ŽýsËÑÌR¨¥(6Âëwüû3Í.•ù£äY¥ªØ^Xëš|4è.‘íî Ö6ÈõzgòÜgâÏû©ù'¢v*ø›þsÇÉQy«òËš«! äÏ:hšÍÊŽ;9gú¥ÉPv'ŒàïáW±ùŒ5Âø¢GÄz‡Üèý£áއ$¥È¿oÒù¿Ìš–å««-Í¢Óm&™§^Rq_²ÄwÎëMÙ„²Q®Oœê»fǤ_7Æh?¦ufÕ'µúÐxŒ0AM¹3cO¦ƒ:ÙBW.äqk3G;ÊÉsÕ$¼…a{ç}JÚá^Ö %Þ£n9l± Ù¶©5ðÍOkj†ŸN|>r4î;/]n¢?,`ûùù>Êóf¹§Åd–i([…PmU£’ŠWa_‡èÎGG§™—N¼ž¿Y¨„cÃ×§7È¿šlu :y¥& ù{‚„þ :ÚÎóq`ôÚš©âáœN÷ú"~e]çyz15›ÐÜ?â¸>"à©™:Ùˆ@GùÇîs}›ÆsêüSÊûeûUå^#ÌZqý¨„’(÷ GñÌ Uâ°í]ôÒû>ˆ{ }YµÌfXstT°¯Ì×7{ο3=/ª'è/üâMÄ÷”rÜʰÏe¨ÜZDêÀôfâ¬+ò8/h7Î6þúžû±à# ð¸ÉçT¾òý'òg™có–äVÔ,©úŠZ›8˜~5Ï:×i| íôžOu¢ÔŒðóÙ~a9ŽÅ]Š»v*ìUØ«±Wb®Å]Š»|©ÿ9Çÿ¬ÿ9ÿ€…çükŠ¿˜ŸËÝ2ÚóË~]´¹uG¸°ƒÒQ™D±†×mŽÔ뛽&xúqÈ÷<×hjgŒÊqäÿÇ4]דõ›{Û‹6t¶®Î¯lyqãÖ±‚~‘™ø¡”H˜o]ß«›<}«‚PÈxo¿ÏÏ‘U8ëq……iÑœYÐlÄ}¢ÕÛÚ™º¯š€Àv>œ“#ê¿’ Ö µ›»xÞãêÌ\­ÉpZ‹Üö­)Ò¹^gS1f»Ûódh÷=bÇÉÂ¥Ô<¿¨½íä10{@ŽÊÀ†d`Û7•÷ÎŽ=“Â8ñJÍr¯¹äóö׆=LbOÕv<Û¯z§“ôóq$×@’Ч&؇,l+PÌMŒK!2å_ؽµ©ðñ|_g2>,æçO´ó´VÑMs%¤6RÉÚF Å$%©B)SãÓlÜãÅш³\$Žûî>÷Ç¨ÉØò‘ŒDŒ€;í[Ùîîîlz ¿ÃãÌT¸¼HåhÚÞ+øê怫 *H aZï˜ùðàÍ¥©J&"^ñø°ì²ãüøÃ¬ŒM]ðŸ#¸óò( }åm{K˜u!ò!]uÝ´¸NnÍÏÏ€ý›¿ï4mG˾P×nõ,ˆ$Kwaê76§PI'á=³Ú¿5&hðïWö>' X`”e±‘=ÿ؇ÌiäŸËmWͦÁ¯õO«(µÓÔ7ûÓuðF ($*räO·lÆÖÊY$í{KŒKƒ‹bH²˜Îè¾g»Õ¼Çæ qn– mZ!ÃHCJ±õX‚wëLÓv¾IGI=¤e`y£Â1d×þæ¸a$E}R"…ŽtÚýÔ4¨ ·%=@Q¶s˜óí2a“ÿ;¬#±²µ+`d3‘÷ ã2ŒÙ·è}M廿Ð5hoáR&ýÝìh´çuÜSìý¡šV!Ÿ‰ø{Ý®›'ƒKæúF9#š4–'G*†Æà©g*A‹Ò‚°¿]Š»v*ìUØ«±Wb®Å]Š»|©ÿ9Çÿ¬ÿ9ÿ€…çükŠ¿™¿Ë“ Iå}ÂúäéZ¼ºmÕž²óR/EP‹ƒ0@Ûûsi¥yÀÆ~™ìD¯î®O!ÚGS†pxÁ0­ï¡¾tõƒ{goÔô€u)5yà·¹„žJŠCHMÁ*79»Ã”b#&?Q"ûåÔü»ºº†y…—Ò"A ôïùòŸeš»–f—÷vÕ ä=;öðÌ(æ${žî10½èQykÌzt“¬zkÞ˜Ú7&Ô†»±£ÐTöãã¶o4g69˜ÝVã‘øý•ÞèeÚz\ >¿«jø}·Üö_#ÜÚ«ÆUÔ‰½‹ÆVX˜õõýšV¹Ývn§Ûø¹WQïí)Ê7·‡ÏŠìqën+m§ÝÏèðôÒwŽLƒ*±'ÄÅ{æIÆ35È<™ÄÏ>8ñ]¿¨ŸØ9±7뚯”to.Ë \­½ÅýÄ{#CÞ¢ÐñH=I¾aê548±ø&Œ‰'`oçÜçö^‡ij3 Dn1dW.÷”ÛjW×2Éuq5ÝÕã´—2»R3¶Æ£¸ÌLy§#r$“ÏÍìe¦ÇŽ"ÀŒb(Òž§äk›ˆµ¹±e˜…`Ýr©ùfó³dD·äå}¡Å a5ÓðÔ-þ¡¬jV ´v×±ÓƒHÈžAÛA¤ÖåÂ9FF½ÜÇØQ£Íãéáó1ïä~×Ü¿óï(^OùÈe‘vX|­ª<”ð2[(üNk‹½ì/ñ“ýSúºØ^ÉØ«üÕºŽÇò×Ïw“±[hw²;ÀBÙ±ìˆë1Du˜ûÝwkÌCG–GûŸƒß˜~bÕ¼Ùª¬·-oiJ`Zì})7&‚†¼»ç»`ÒxQáÎåðékñä‘ËX>=ù½ßÊÖzzy" =RnÙíW뺃͈­MFÇÃ5z™OǸ“ÍÙiF3§Ü Ç'¬þD‹-GÔ¿»‡ë—FBXÐðQEŸšŸh ²äv¾ÎF1K¥›{¥®ZzlñJ’©4^ þ£Å‚W»¾Ëž5³åŸÎÚ®’—[EÃI ’EæÄ‚ŠA5Ü×åb~ï%w‡Œö€x¸¯ÿCòÿósL²›ÏBå_ƒýVÙæEÞ®*7ð¨+í}2j„Éèײó‘Ð åÄkÜ¥m¡ÛX‹i`‰D¼W‹uøÛ¯_|ÉÅ¥†*Ứ3°^Ãæ[Co¤ézrn$‚Ún'í3º™IHí›l±¨ÆÙ™üLÙu$ròíåT6Öÿ—žR¶……¶ŸJ+Äü#Ã<˵‰:¼‡Í'ú¡èú^ég ÌþUÖå‘LOgÝB¨ËUx·­E)QLé»/ òèóü KÜGà‡’Ôä†=v7â<&ú‰~x6žçÍ3ݤ1£Ï8–uc'Vb}¿g4‚RžKï{¼Ñô¢6h Ö÷/$þÌMp©nÀ ƒøW|ÎìøÈÊQ­ÎÃìx¾Ò1¸›Øsf>g §é;ÉéÞÜŠòhÔxÖ•î¦ÙÞv†,úÈ©Ì_Ù³Ïv<Ž£<€¼Aä ü[ò>“w,W·7Ñ«ÛÎŽÀ1 ä~Èÿk*ì$ªFCÓEÚûA­„ !ŒÔµß˜šÔ´m)àS%Å¥ðPã´nU=¶Û.í-‹Š;‘/²¹0öo_àêr mFþ ÞY‚â@}2Yi±>Ôß0á¤7ÉìgÚ®oWò¶‡ú&Õuô,lÁžY\쨋×a¹=n4øã¦Ærä5‹'È'üèüذ Ò<¤iŽÃN· ñÏ(iV´ì=³ªÒↃO¨¼¬á—¶u-±Ç™ý?©ùï¬y‘õ{ÛíVêpno$æ^Š Û9íGhG'ïrú›I >8ã€ôÄS0—ÌÊÖå2¢9£m·ßîÍ·æá¶î4t¤‚[}­ù£ùsÏ^cÑ$Õ,–ú+Ȧ¸¸H&h×™@íÛ2ûGPqéNX}V7÷¼N›K(ö‡år}( ¿kï{7麩c¡YÚÀ4åE±Qðªô¡&µ<ãrhçš$‰âzüzÈa˜Ç8{žçjtëËt¸Š5hdZ‚:oòÍ ¸¢hówñà°Ÿh7VÚ.«g~ˆ¨ŠÞ”ï¹ýÔ›7~ÝsS›âÛðLb˜üЀ‚ îsDÞ*ìUØ«±Wb®Å]Š»v*ìUò§üçþ²7üäþŸñ®*þmÿ%<Ð’ùkËz¯ qD¶I®¬óp5^I ‘;“Olí{#42Brб´‰­¹ˆŸ+ó§ö—³%KQ„’y˜{ò2uåo¡oŸJ“L—M²½³?] Ô1̇ÓAöˆ¡¡éÓ:ÜÓÃÅŠQ¹ÐÔí±åÉátãP3Œ¹!?M˜’ç§ßÍó–ª^ßXœi0‰ äV9øUè¤ÊËCÛ9,˜=GÃ:Òôµ<Å4{¯ovïiòZköãPÕµ e´(}7äò9­j’@voûl?½Í#ÁÐs$ù`ˆíé`É/ —Sȇ+,’x[TšKû¾o€-”Ž)^£‚š‘×®nA–¦g,Aðýn«Æ–#:âëßñýH¸ôö»õžWsF6T¯ÙE®ÛÓîÌÁ§9îÉ®áÝÜ'«hD ï=Oy=]>™+XéÑê1Æ‘¿#R‚ź`µ&‡®gV0#ËaæÇMwÖ|Ë7›µ}^òàzP­Äz|'‚€¥{‘ZÓ4Ùµ'U)wQ§±Ñv|4!Šî,÷——\[è↻{ç1— ´m²\ÜH‘!w‘˜,q);“°÷ÁŠ3É!jHù>ãÿœV»Ô|ùû“µÙX©µº´–ÖFâ¢åíƒÇND¨54¯|Ýå†OxnÀüˆ·S–X² Z“7CÝ+'Ðß¾ºk€A+@¯‚ñ¿¹¡ÍçcGmLIä‡ü•ü÷Ô<©®G£y‚úYô¶qõ«Jæ‘÷|CzñêTf?iö^=d åæçhuÙ{:Q™&X%ϯôÏNºÓµk]SK¸†öÂö1-¥ì:HŒ6!†yæHOŒ&(Žaô,S†X À‚":¾ˆò¥ù¿Ðì›”¶ëèL{Ö=?1Cœ¾·R:þoG¤ÉÇŒylÈóÉv*ìUØ«±Wb®Å]Š»v*ùSþsÿYþrÿ Ïø×1>JcÊ^Z”ÂÊF›a^®|]w;m.OOGð‡šÕž$…õûƒegì%·ë0rÒÈ8µ(yPŠÐœÉàqæêóç1*­¹2].)$µˆ¼ò±F‘·&¤² (?ÛaÓŠ#w]—VbI™Ø=BÖ-,`7N­,p•áZ(­Ø ßÇ8ã|éä3dž\²àø÷©=ÔóÍ”aÙ НÛ¿df9”ç!Œ]{¿Øá†8Ë!«÷þ7`_›^|ÊúZùZÂkËo0jqÅpomYed¤,¬¬@ì:f´¹³±~\ ’“ëÜ]ݹ¾Ìö`Õj?5–"X¢H÷ÖÆ¹WÅäšnìyK§ÛI5ó¯o.·X˜þØOˆ1ï¾rè¯À‰ðbx#*Ûη·µ×éá©2Ú=@ëäšiúD“Ë%ÝÓ5ÅÕÓ™g¸’¥Ù˜Õ‰>ç9™%–Fs$È›$ó%¢yŒv`µ’'Z 8sÈYo•¼³ªyÃÌZ”´(LÚ¿™oíôÝ=–ýìî3ñJ–m¶œ'`Ã%–b™5óN>Bò~›ùä¯+y+HOòÆ™o§ÀQx‡0 WŠäj±ß©È‡Ñ0â  9L· c±WóÍÿ9ÁùœŸ™_Ÿþc‚ÎçëZáÿ éT*ñ™ %¯dB»|W–µ;(ùg­û3¢ü¶Š6=Sõ/³ïxîÕÔx¹rŽß­ñÂVܥͿ(.`u’Úâ:†FSPAÍÿ-Ç/X1–ñ;z¾Âü´ólZ¦…ywr¾Ž¡d€^[òú”Ó³Ô·ê̹“˜Dõä_?ÔéGgåœnãõDù_/xä~o)óíÒÞkÐ8HVÒPÔ†w$ÖöÉg@îoa߃9õKô>lóÌ’ÛÝÍrc–k~*8D ¡[ß4©#™Q#¸=Ö‚Ž:¤º}Ãj¬÷vhQV¡åоYƒ'æ6?k|â ÿÔmÞ0$~×S™ÇM(†’HM|•¢¶¡ç.iv6&Yîµ tâ¨]˜™ ;™V— qå(eÆÖä1Óä=xOÚ(=ÃóRÿ.ÎCÙêúMÛZÉ©ÍesöËN¤sTôØ.dãÆ|X’ûººœYc“³òÄîqƒïºâ‡ÛËÜÉ|ßù‰6­~ð¹o'V >ªx²+ðæð'¶mÌñâÅ›Òv^|õŸPlÖÑ;yý ®•˜-¯àšçêšÌ/ê[]FhÊŒ ^%K#t>(cAêe¨ÖÏC8J1âÄE{ï‘çRkôGþqKPÖ—Ê©¡\êsˆ-)BÅdôäP_Ç9ipÆ2ŒŒ}U¿›Ð{7¨9¹¡ÃΡ4З2U’#) JCOÐR•¥vÌÕ×OA¡:œ ô×°rïnìüÖêÆŸ1" ]õÓnþ§›æ«O/I{s-ýû5ÍÝô5ÝÚ´’9«1¥;çåÉ,³3™²M“Þ_B9cŽ"Ø@wki£E¨ãO|…8³ÎK!‚J(]éˆqg"Q` £c°É5¿S?çÞ?‘rÏ}yùëæR¶¶«>™ù~¥¨^F õÛ ýÒœÓìœÜ½7`èÿËKÜ?I~µázgb¯žç(?8WòSò‡Ì^g³p|ͨ!Ò¼uÔnU„r0¨øaPdjÿ-;›žÂìÃ¯ÔÆéËÜ?_'´u±Òâ²w;ìæþo=)ZVšæS,’³<ò±«31,Ì}É$œö0)áÎKä Ð1åPXƒ¹ïòÀC.>©Þƒ>« Ô-´¨Ù¿HÚîâA¿§Pj<éôå˜ø·ê-|pž æ5Ã+Ïõ~¤UÕœº|æÒXŒÅm4dÔ†dïR:žÙ)G„ÓVñÏ8›šø†þÊ;Kš–ûGÇ*"ÜüŒ9$>\Ðn®oõÛÒªº-­Ð‹nd=;AÌm> ø³™äh…¹í`ÇÀ õþ\þð™]iS[B÷ Áó¸;[ˆ4ùœÈ1 [ Z¨ÎB$îy}謹ç <˜=/în!¬wwìÞÖöÒiìišÎÛŸ…ÙùgäÌ€ˆfñ5ذyÙ÷D†üâò­Ô|Ô¾±rMå[VÒàÈßc⌔êh›fïNlòÇ— üżf-WåsgÓÈe8]xMòª|ã= »ÔOëÊCÖOêe¾ZÕÒ×QÓžá¨Ö3±—¯Æèãǡ˱H]SÚ:Yr0ëÌw×#ïh~¨þE'•5->=cË’É Äd¦§§Ô¡F­XPõ;ÙÊvô³F\7 ™ìü0ñcØŽcñúßgù:á-uË» ®p¿û0Hßæq:èqb>[½ÆŠ\9›Ýsw®Å]Š»v*ìUØ«±Wb®Å_*Îqÿë#Î@à!yÿâ¯æÇÉžqi<‘äý:$$éz5ªBœˆEˆÄS >éý™ª½>!φ½ôðšŽÅQ“!?\‰>ëgúçš<Ëaù{u{mpWUÔ.b°‚î0U ICu¡ÙÀZï\Ïí®ÓϤìÓ8Ÿ\ˆÿ6îÈóÛ›Ï%érvÇ^ˆƒ";ê¨WÉóKùsSºqqquws8!ÅIJ»ÉÈn“j3Ê%šr6dIï$’ö1ž8ŠÝ[='ÉÚæ± 6ÂîÛëú=“Jd…T,Ò *T4§•B6àS6š×–ä6:›ó7ȺÍvŠ9Ä¥ pÌ»‡ÃÍ—j¦§æ‹Ñs{[k(¨,´¨ØúQ(èiZ3‘Õ©÷e}«Úù»C%ËÓôÀ}#õ˼¸ºM-*;Èó‘ægpMm Ž5QÄTu4«µœ‰WcZ€:Ù b¿: KèïùÆßùÇÍ{óûΰéqÅu§yIu—Î^h‰Kk ± g›ì€*T|dPnIèçv~‚Z¬•ü#™ý÷ô5¡hzW–´m/ËúŒ:f£[Eg¦Ø@¡#ŠT**ª€Ä {¨ÄDšâÉFâxm`–ææU‚Þ2M3š*ªŠ’IðÉF&D¹(”„EžAùiÿ9«Ì}ßX‰d:F‘paÒb¡ ÉfVèÒÛ¥lõ_d´ƒHeŠ_T…Ÿxéð|·Ú½l³ðg‡Ó P÷‰øþ§åö¯¦G+Fhy ö ?ŽuÙ!N¿Gª3رû„•hNänRC±Ç"CÔÿ'<¯«ë—JðMmlöLåЂ쬦‹Ê•œœr3#nN£¶<=WÈ]7¡_µùÅå¸ô2«@\¥Ô+†RHãPiþ°ß!øï¶]!ŒËóh;çö¼zBœhv=I>0qe¾R´Wòߘ.âí{!ÛýÖµÛþ 20GÑ"é{_1޳ ¢~ßìN˜/ü»} hi.J@e8ú7ËD8±Ÿ{ƒ-_ƒ­'a^ó³ê_ùÄmE|‘çÛ[·ÒΧêéwv I,¯0æ^VTè„Ný³IíŒåÐð_ Hþ^ï{ŸÙ§]§âÅq#»Ÿ¿ÜŸþzùK]ÔuÏ9þbXy} ò¦¥,FyÕ¬¯Äð„`R…yñ4¦YØzÌPÁ ,¥y4(‹Þ;œÝÐå–ªz¸Ç‡”I6 ºÊßQžƒú¤ÎAꊻv*ìUØ«±Wb®Å]оTÿœãÿÖFÿœ€ÿÀBóþ5Å_Ì?åÍ£ËRÚM:O]¸v÷ÏLìlgÁÆ¢o´²Ä;‹Ý|ÕèÃå}#H‘]êw)z˵U!r#®å€ûò^Új£‹EñN\^áÖOÞðÝš]vL£é€áøŸÕLbßLˆ >˜5ïLóX‡u<ÄÑq(Š|•0ñÊ2@œx€8Ž™Éh¿N€mñ!¯‰`OˆõÃ""Êß@~@ÿÎ8ù×óÿÌMc¢¡ù_N ùƒÎ·;Û@9PÁAÆk‚ D|…ì@êÎ~ƒA=\¶Ú=Oêó~þ~ZþYù;ò›Ê–OòN‘•¥YŽSº‚fº¸ ..$bZIËØ (Ûž !AŸanh ³ª¢¬Ç`Å_/~mþcEsiyi§jÿ£t-)&“X¼à’%ØŒWŠ’Ãàv?γ±»0ÆBRÎUC»öýÏ+Û¦ HŒª»=ÿ³ï|q­úþnü¥¼¼†ç˜ky.!‹ÐQUŠCÝ[®vø+M¯#­s墳_gО]Åùë|H¿‚B2J²•Ûz€>üéçõS¬Óo„Ê7uÞÃ"µ–æîÞPï$‘¨¯VŒ#dy<±†3.à~çÖ>AÔËÌvËP%/lC:©á]³#´1‰á>OÙY<ãúA.ÿœ’ÑçHôoÓŒ .'dfa_HÒ»S¶jôYÅÂ:­ÅQ‘þ(×ÊŸ%HÀÀÄ…3+Ów(Wåâ3'£´ˆõyWÚÏ| ’·‘õ¹–3$°ê2¨ïÆ4 ¦dà?».ƒ¶üW°áýä§žOÕm5­g„zS«²^BÇâF¦Õ‘¦˜œ{©íÝ.M.ª<[Ç¡è^¿åÛ‹Ÿ-éZ^´#'×½nR#b±- ƒMªÓ|«,bq“È}î43” Œ¾çÔÿ•žuòž³äÿ2ùÍZ6¡y£ëvæÎí£)1ùÈ]ÓâˆjÔn3•í}|Zˆeà %c§¼r<ù=ocëðj4Ù1f„Œd(õøóæ9¾@ó'•ŸËÅö‡v‚V³•„wx‰£$ð éÉMzíÓ; .hj1 ǯNï'‰ÖC.—4±Èî9ñРtÿ/5†žu;HØéòNaŠ·§-+¹Þ»o’Œ¡ ˜uk©É—Q–[€jÿ[èÏ!~^Å«ÙÚêÚtRA‚n”£öp °#ÅiCœ÷hö‘Å# GÙ}• *]ÿ¹õ•å×­#KMIV‹u^r['4”2óãÇܶr±ŠFáÈ÷ô{]$²ÄTùŽî¯º¡npÄÿΊ~ñž}!Eï"l*`K±Wb®Å]Š»v*ìUØ«åOùÎ?ýdoùÈü/?ã\Uüà~PiOwå¿)ü?kO¶àµÝTôÏaö{–ŸõCçžÑk#?yý,Ì7#SóV¥*a³u²€-ÇO›ò9çÞÔk?5Ú9åÀ=ÑÛï·²°ø:8_9z¾[ýÔ˜À8¨ð§\Ò“=Õ¾{ 'Í‹{tûÏôÃV„U•Þ§}g¦i¶’ßßê2ll F’i\š¨µ'|‡¹0‰‘¡¹~‘þDÿϾõýfê-{óÌ6¡Y-¼›av‡P¸jƒÆîh–DŠ2¦…c“Ô÷LªS¾OI¡ì V}‡p;ücõŸËž\Ðü£¡éžZòÖ™¡hÐ-¶™¦ÀŽ(“ $ŸI$Îù¦Œ"#@'xY¥ZÞ¹¤ùoJ¾×5Ûø´Í'NŒË{{1!QFÝ$’M¤ì7Ëp`žiˆ@\ŽÀ5æÍ 03™¨d¾a¾üæOÌ&I¼µeucå[™$ŠÚæõ¯ã‰ÊDa™Ò&eâ^¹¦†? Q(t"ÇÞît¹øáŽG˜— ÷ïö¾yJ¼ƒª‘BOŽdõw‘²½ ÌØùCÍ]™U»½¹ŒA˼tsñw¢Še‚DBUÍ×ëtƒ&«åô€oàvFù!bÒôè¡»5ï–YÙw$Qòß|»Kèˆâçnn ê2à!CÞ7}BÒÚOäÈôã¼ð±™Mz?#_ÀÓ'F:Ž.‡gšŒ´‚=FÿKù9¨Ú>´þXÔ®ÞÊÏZVKIT“pV 0!C ö똽·ŠC‹f<ýÎW³Úˆœ¾ Í r÷¢?7ôy!žÛSIüÁÂÒîáŠó2+€TÃa‘ì\÷«ÜÇÁ³Ú 7ª3»­‰û¿J'ò‚Ú-{Móg”oˆ6Ô1´, +´©…þMJ|ò=·3†xóGœOÎ=Sìü|ypKé•|%Ñô—定4¡³qHÔzdV´¦Ç®rý©—Æ:®üAæßSë[?÷’×þ0§üDg“ê>÷®‡Ò=Èœƒ'b®Å]Š»v*ìUØ«±WÊŸóœúÈßóø^Ƹ«ùÛòù£å§” Ó?+|Éee©hv­cæuÒï¤K›y#Ok"@«©ª°b<3¬ÿE¹qèÆ› Hˆ‰ïæF¯߳ÀkûÅÕË.C)Gˆ‘ÛÊùØûÓ½3ÈÞpŒˆ¿ÂZé”uŒé·eþ‘éW90GzrÂgøOȳý'ò£óOZu‹Iü³óf¢çjA¢ß7ÞD4~Oˆ:LÓ;B_"ö,ÿÎÎHy–h}?ËK­ÒR9ÞëV¶>š“ÔÃ$¾±ù®0œ}ªŸðW¼‡Ø¾EÿŸkÙñ¶ºüÉüĹ’ãDòý²AOò åÃM_ö1ž>!èí°û7y&OÛíÝúùoù3ùkùM§Çeä*Xé3ôîuŸF6Ô.s=Ñ_QþDÓÛ+æïôúLZqPˆĽC!FââÞÒ..§ŽÚÞ-,ò°DUK3ÉF&F€²ÆRM”yƒó—ÊZdÉc¤_ÛkºŒªìA ©f”UNì6ZæãMØyò)ƒùþN£QÛx1ž)y¾oɧ󗿇çoüä6Ÿ7žµc'—ü©MkåëGtÒ-WOv2[¼Ž¦Gp€ÈıÏGeàìÝ!8†òq¨ñyþ‡‡=¯>ÑÊÎà›é?Žo³,͵µ¼Vöá!†î•HrIØPu5éšœR6y—eŠ‚¥ÝÂý^åƒ "' ì~wÁî9lRmöÞëG±š)9!ŽœA"”ê{eúœf9-|‚XÁ†¿ç't…Ó<Ù½ fÝÅhÿvûŽä(9ÕöFn-0øM|ï=«Â´×ñÆþ#cú0ê:´—6é `%…h¿hly^<UÓ Õõ»]:i=º¢QÕZ•{޹«Êqb2ÎÏÃÙ„֙ܦ¯fÞaòž¤ÒIt›u˜’^XO©-IþñkCï”ÄÂB¡Ëõíö9$d‰žŸ!ßÏÈßÚÏÉÏ0ÊþvxUÌq\BЪ@, šÜ‚3´{†WÒ¶‡OùL¸ëø®þðûËE¼Y:ñ.¬=`9Ü’;W®ùÅçÇ[=Ž ÛÒ~´²F!œ»m¾Ù«á£»´ã±³ì{eáo$j¿p8‰%ì¢(l‹'b®ÅX½Æ‰¬I|nmüÇ4ÆU©ù/bJòä(4銩Üèzä×͙淉Ä·XA Yɼû) Ojâ«Æ®‰G˜Ø´~Ÿ¬Æï8’[n GO Ulº&¹$³H¾f’$’i¤Ž¢G'ØŽ¼÷áØ÷ÅT×BóÂÑ4ÈÌA¤H$Ý(j=÷­6ÅSEÓµ/Ò‘Þ¶°ÿTBæM5c¢0ewäiÄÔôß|ßÿ9Çÿ¬ÿ9ÿ€…çükоü·ÿœÖÿ#çÿ!/òÛVoð~‰ž…}é‘èÇl¼#ûÀ¡@QJçuÙ…¦Õà2Ž!fC¿îx½wljpj<,Ddv="9ùù5ºüýóòæKÎß’š¾š÷Úí¦¤OônÈŠøs9Íê;20‘à•1_q.÷j }Q¯ö>ò—üüÛþqÍo|Ùå¹®@1[êÚ)Œ{ƒo,àŠ‚*QÍÏ#QÛqíLeO¢¬ÿç* /LjŸ™ºDÈ¡Ö ‡hd¡ñWPs*>Ïv„ 3ù5K·´÷¦Cþr?òZK‹{[_>é×ÓÜ’!KyTP9Om÷Ë¿ÐÇh€IÅ {Š=©ìÓ!š$žâ”ùÇþrOÈþOÒ®u9¬5Kö‰ µŠ8‘¥eÎ@@'jÓ.Ñ{-©Õd#Ï}¾Æ½µm&32$k¦Ûý¯1óWç׿®§¤ÄþNò†—åÙ¯ YV{ÛÓyy5)¶kxc+¸.Ã6ºOgt8ò~ÿ$¤è8AøÙ5ðu:¿h5ù1ƒƒ`H½åÅ!þoñ/0ò—›?1¼Ë¢ß¿æ6¿wªjo¨Ì—Zt!†EP±‹xBD—Ùï›mfG§Ê?+#Â(ó'ÎÎõzÍF)~nfRâ69åCo4UÄVv7Iz¶Öê–ºuô¯Î5U/Iêh Ù™N<6w”~Ûm˜Œ%ÅChËì§Éš²·æ.»-Ì ~ºÞ›ë+¢¬€³Î®î+Ô¹§lê{{ûˆyogò~òä,ž G[°_k?Ô–à†=¶,Äg8»ËÚÑ)µo‡êk 5¬`¯È’ï“]íráîBˆ"‰}8là‚$4P¢€ vUdø‰6I,@ØÿÎIÒ4r(V}*ãŸP ŒÕ_aSÖ‡|ê;;Ž9:,™‡æ [ãý‡¥¸Tà¬KŽ@ßFdÊ`vâ)ÝÒ„qjŽ]zf>LÈ„vYkª]A<_Ry¾±^(cvV¥:Tä!¨#‡š'†L<ÃÓ.=ö£+ÆÒCñ¡f^)7®ÿåf×B,Ÿ›Î{O#0=,ƒ·B?cÚ‰¡ïLÚ<×ã»Ôo#Ò£õV™åÅJéLÃÍr— ÓöaǧÄsšº#“1³„ÚÆ õESDf5!|7̨ƅ<ö|Ã,¸ª»Ù‡vÖ:Æ™tŒTÅs$Cø«Q“}Dw £ïò}©yäË,Y bßÌ7Þ›"k¡‰TÂLj•TOMOù$øg! hÔK€ÀíÏ>ïÞö3ÐËO12°åßðû™g–íï¯o´Ë!ª3 ›¨#PbŒ×”Šéáá˜Z¹F”¸yÔ¹ºXÊRŒx¹‘Ð>õ›ƒ¦yãß»v*üiÿœíÿœ†óŒ¿›>Sü«ü¸üʸ´òUÄPYyÎËËw"‡Õ?H½½Õ¤×¶Ô¸FŽ>*Ñ«Šñ çqì÷fc%›,=\ãÅÝV ¾.>Y› Éÿç ç1V÷ÌŸåæ×œ5›íSWÔ£±ü¶¹ÕÒ;…€¯8žÆ}L²ÜM$ÇÓ3¡n«Ìí•vïbTl1r¯¿‡ó¯’qäèP_—ÞsüÆÓ¿ç¼ýù…äýOôÏæE¦Ÿæ±ó ó¡¬ù†+xõæ‚YŽq°(¶µ‘ñWaSC©Á†]¡ S ŽÜ"1úoêîz('†ÃÜ¿6¯ô¯(yò+Zü‘óî­ùæ5yn×FšËZ¹Õ.|Éau"Tê=ÄÂîC”’I"¿¢hT¦kôQ–\¹c¨ˆ•ìMl(ÞÀ~l¥°ñÊŸ6k¿ç?”´=gÎZ×–ôëÿÍÌ4·ó…Ʊysi¯Ã§\Ëo”^'Hb!$CRÆ‹H”1¨Øk0Æ:iJ1Œxö  l_‰ÊÏqûXƒ¿Ä²¯3\ù§ÊZ‡üçMïåÅÞ»æoÊ[/ŸË-8jZ†¥ú'ëúEoe·´žiÑØ+<Ôto‰kµ2œCQ¤hFf\F€º–Öh{’lqSìÏɽ#òÊO-þ]ù“ËÞh1ëz–Ðëòë÷W÷:¬³[+]Ér$»\°5b®D~ÈJm£×O7ã(Зoµm·élˆ [þsÿYþrÿ Ïø×5¬ŸÊ<¾uÔõÏ.yOHBc´Ñô‹;("Ü–1D±$ž´Øt;)vžLÚ|X†ÑŒ@øÖåãN’8se—YL“ñ<¾Fü»òºž?0k1•´²>¤q*î7J­:wÍ×cv!ÊF\¿Hû]whk8G‡ª_‚úh˜ÖÁnÅ寤°ÈWáZ§;Ž€ úÞN‰ÍÂO¦Wî^¡åˆ¿Å—Ú}œARêùÒ;e¨OÞÓNôßc™rÎ Èä/àóÙ43Ç”bŒ«ˆ×ùÉwæ%äÿ—w×>ªb›VEYÛ2ÎP7B̦ƒäwöÌcÚ˜Ž>8Yø9ú_g²Ï'HÐÍìK´ó¶»uk Æ¿v>§B;5‰’0KÔÐNK^‘^îV³²±Ìˆb2$m¹Ø=Êÿºõ³‹]Ì· J©*7é*¹Êç¦Òjªîûšg‡´´âŒöîØýáôGäÇ›µFÏ\¸’kï1^Iqc;**½À£J9ÕhÍËaÓÃ5}»£ôFXÆÐ}ݯgu×9G)³2HåϯÞ÷0µà@©èÇ–‚\å#Ì šAË`lçôÂ7Öî?{ÓjÌ«j®_ºŸž_”¾kÓ¼³æ˜#Ôî®RÎÔÍÆöÔn‘HA) #‘Pk^;øgeªÇ,Ø¥Š {_ã›ËF#Hj€@w\ýÕÏ«í"y¢]}†­C.Ÿ&§wem2¬ŠÏ#Ñ`‚ iZ£9Ý~”bß?®ã³µrÌLö®)‡G­K7w`zÔôß·lÓˆÛº%+}F6·õ”PV=…:޹pÄA¦£U¾üíÖa[=i#½à…xíûóÇðÎËI zŠyõðˆ?L¸¾wÄúã´RAì {ƒý¹­ÖK„‡±Ã½¤.ç`´`Ô5èC3ÉÈ ðK%µÕ­Ú1o,rƒ±#‹ œn2îa8 ÄÄõ>…¿³mÌö:ݤ|¬5Rb½ŒnTÉBJ½Žt³‡Lr/ §Ì5Ú)éæ}pÞ?Å= ŠoÔfsÊ)àb‹*мGšÔøä%»vՃȨG{m"óYs\F@YOI’&©1Ó+‰ãxÜ:$€Úy§˜c³üÉ‹ÌÚe£¬füÞ èO2’¼¥C1 W¦n§¦3ÑœS=*ÇpäóðÔˆkÆh\WG¼þª-üé¨jÖC,‹¨ÌPÇE<…¹0>9ÈËAS{÷{hëç–q¦sù7^y×˺t1NÒCpAè©ma¹$õ5ý¸L4Ó‘ë·ÍØv ÔB rßäûÛ<íôb®Å_‹Ÿó‚¿óZ÷懙u_ËûÏ/êþTóî·¨ê'SšèY]é‘ês›™¢½æ…Ú%vÁåZlr£r«¥šG’ô­WŸZ´ŠÚ+û°Âöxlm ’n]KÉJ榌wÜõÃ<òœxO/yZx'üçþ²7üäþŸñ®P—òKäMS×ï<³£ébA{©<A$@–@ßmö#dPXû é{7O<òÇs•‘í<ñÁâd—(Ùù>¬ó%ÿ/´ë{Fó]ž³¥|ÖvP\X²LÊ )oP‚)_ 竎³³ãøÑŸ  w÷óy=§OÚ98Æ2ˆ$ñX_4ê5êWS*D°§œˆ7Z ]«á›j§ÐèÛü—ˆ ÉëÕ÷ä·´VòɹÖtûBè2Ak3«² E å8¡ y1ùShçɄƗ!¾î“C¬äÍ8ó‘áÛ ëïO<Õùå-w՞ľ™4ŒX¢YÉ@iM˜F½Nûå»RUY"€\ÏÉO¸°äò ˜¾üÐü·Õ<µ7èÉ®ndKy•H‚£nJ{ÉÖiÆ£ðå·ãbåvghJr1Ë·Ì[Èt{ÝkB»ˆÊM¸I>ßÅEö…;xæ¯K“>šU>Wø!ÜçÅ<;‚÷¹¿;ô›mGLŽÁ “iÒ@âô4Š,mñÊ €b,@;œÜ×ÀI„Ï>dއ§ö¼Œ=˜Ê=bTFñ¡èyüéúæÌÍûòÞç̺~¯fZÿD¹áœ #štD+J†ª’{{æ£M¡œ5Aáú,ßs±ÕkL4¬ƒâ4®{~×Ç_“—¾^›ÌO¦kvº•¶¼>­ëÊWœnÊñ¿ìô¡ñÍæiK€Ê¤7÷÷‡ UŠ¥䣗uw{ìûK H±‡LÒ®,ìí¬…-ãYQëË‘ßrOSšYÃ&ILK“ âÅógç̺må jv¨³Ä×ÖOÚµ]ŽÙ®ü¬á*á;y;/ÍãœoˆoæAyæÜ½¤W±4HhJÈ>:l: ÝãÑïÄAty5»p‚>o2î¯ç¹–ÂÖ×ëpêW-ÊzÔ†F樣Ä×7y,cŒ@æë»&8ާ&iÎŒ9#µüæ ùm­nnà{42˜Ò¤íRÍf¯M)NÏW¤Ö✌qÈHl.úÅ¡!¹ ËV¨¨þ®É€ÅÙc³Ëÿ/Áªël·cÖ¶¶¥•)PO ¿s›ÎÓ O}è:^Þ×ËK§â†Ò&‡é}-¼rÖŒmÙH$Wužã7õcwÏ#–Q‘1þ!÷¢ÅuñÉ8ôŸè¶©u/§(¢Hx4Ø æ6¢f"ߤÄ'±|ñçm7PòÏš5-?Öu¶™ÍÅ”½Å&õ4ØÔf¤nÇW»ìñ ˜#`Ñø†cùIw)Ô/~²Åí„öä³Ñ›n¾ÀeجÂN§·ceÂzïòÙ÷’Ú‰4 ±l91€É掎´úTg=ÇYE÷» Âk»ö¼ÎãMŽME.sV>¢±¡êè6‘ÊD)ÔË3â ¾ÞöæÅ£™w‚Å9®Ô¯ÂôÓéÌ9@Og:9 7}ÿ8ŧ¶¡«ùƒÌ2)1éÖÉe Sc$íͨ|BÆ>ü⽫ËÁŽ»Íü¿µí=–ÇÇ9äîóþÇÙyý«±Wb¯6¾Õÿ04ëû™-|¶šþ›$òÇm–;Y"Nj±H_”œ–‰kºøª©7˜|ïku,Cɨۭ윮c¸Š ¶|ŠÅÁIbïO‰º~¬Upó7~¯q#ùÒá¶·ñ??R7v%‚€82ªÎí^ƒoôÿ­’ÞÙü¡úFìŽæî;”†cLò-Cñ@ÎÀI¢x‘ŠªÙù‹Î7–Ð\y¬­äŒ½ÝÛßDÂ@P*¯Æ~¡Ì)ÅRË_3~b©hï/ÖRUåKˆ¯âE§Qòj“¿nôU¢y¯Ìºž§ç’.t»Ie›R–aÂ?@•'@X9ãÆkþIÅ^+ÿ9Çÿ¬ÿ9ÿ€…çükŠ¿–˧Ö|¿”u,O ¶±>œP\É \„ŽhH˜„•X#®ãqØŒï;+L~ ñm"9óé¿Øñ]©‹c’7‰;ôzošõsT›F>c•nµ +Y$ŠÐ(®d$1AM¨¹Ðkò圠so1,÷{ggh°i£!„P'îïEü¦Ðn|ÕæÍHHÔ››Òs…"Éj Óá¡Í®Ž|0ã— ÕÚDŒDGœ¶ë”´ÏкTZZ•…­Éw„nU§Q!žÅŽjµ™|Yñ÷þœ=€Ú¿NìÀLê¿lÓ`@&¤S°Ì*Éñ7çEÔz×õXåT¸]5"²`iÁ0ÚŸ´ÇîÎ˲°ˆéc·;?7ˆí=\ƲDª/í/™¼Á娢‰ä %Zž‹ZbrÌØç³»SÄ4v{ågüã>Ÿù¹ä­kY²¸·Óï<·a6¡¨Ç2JÞºDõ+ ü[ì)¾i»C.—OáÃ&;ã5c¡óòsqdÖf˘ã˜áÆ.ˆéC‘_5Ëæ]M:÷”­A¸ÐýÒF©q`K%Aê)Ze“ÔæÇ)âŒ}`{›a ÃŸÃÕ§õ=¶¿w7°þLi©iæo.O8,‹t…‡J9û;þÕ>y› D`—¸ºÞÓÔ‰eŒOó‡ßúßÛè­éYO†Ô;~¶ÁÛŠ+šæ’ZˆCø‰÷91ÓN{ðïüš…›èÖ—v·iI–ŽXãJJk@}š£)ø²7ýˆÉ‰Œ«åÞò§h9r ¨;q3rtLJ¹å`³Ž=R⨬Œþ¬ @@ä;|·Í® q@[Ïjâa–Tv,C]ц­¤ÝÛ$*óF¾¬ ËZ:î)ó}9,Ð6öfªZlâvk‘÷ÕÍóÝͤo Â 05䢡—¢™§”}& ÙŸå¼qíÝŠšÉÙé·Ù‘)úó+Ešît^ÓŽ-4OtÇÜ^ÖQFÁ@¯_£6o[ãJ1E""wFX­ jF@ÈH†+ù—¢~‘òèÖJ“q¤:°”ò©È¤øo_£03G˜z~ÃÔK`?†{Cú>)GåEƒ\Xê†'c?6ZšªÄ«úùaÓÈBž¥Ÿ´Q–MD":Fþ×è\SÒßò~3iî×V²²‚ðÜþºd"7T¹CHR„ý³•–²c´)щ$}#üÝêÝÌtPþNñ±Øß¿ÎÚë½òu槨¬Ì‰p/i# µý3°ÇŠnÃæÔd¡#ófZEóÜéQ4·S¹ø’àœTÔø«òÌ,ØørlÉÙé²™âOžåú­ÿ8Óåy<·ùU£Ü]+ ÿ2<š­ËH\¿ O.IþéTí¶ùä>ÔêÆ£] 9CÓòçö¾Áì¶àÐÄžsõ/±ïÙÎ=±Wb¬3ͺÕþ‘>†–N¨·ÓËÀe UHË W¦ø¹š\1È%ÅÐ~—›i>sóMð×5 u+“g,‘Ù&•ÊÍÝ4Ô¹ï†Ê}G¯ï“Ptº¼³Ç¨Í“Ãhpí´oy{Þ‰¨ëº¬Z‚Ê(ç›WÓ¯n$„·4G$jj³;/&8„®þƬµFk{[ï’ãU¾žHÌ÷ßV{EHýFÛò5qû" Ö»oi<1ʽ t7~â…×õ¯0ysM¿€I¯«\Z³h=×M,VñÅ4kËáõ&CÉ{Wn•1\-d„pË&1DP®{ž[ûù¡ßϯ=÷“b²³×X(þb.ßœ½´ s7jPƒO²ÝöÃÂëÿ;r… ?+Ø|x¶øO,yá5ï2ë:YžÒK6õ¥òé‚TyZ+~©tf v&Z2x£ Lh'O¬ñrJ6+ø~üyy²§Ÿ ¾R?±{ÇRÔgœ‚ÈÄ*°Üª¨â(;ænhŒÙIéúà8#O¶ç¼±%ƹ®ùF ZE¢Ù[?îÛ­Û·hÔæ^®Có÷~¬Õ,¢# ¿žÃô¾ïõZ ùhh’À­B£FÄWÇö†jªãñkº™÷+Ž<¥zµ&•¥ß#ÃÑ—n_k—é]gU¿‘·K#‘BUÜ‘øgyŠ"î>}”™ÈÏ©•´ö¨lD³ úµÇ2­Zfùež’q¯$& yô}­ÿ8‘åØ<Ãåoé ¾×éwåeôº×’u,$ÖO®éîÓ°E ueû<š¿¼ðÎ[µ±Œ:˜å¾ã·—ö9ÝæÒÏÎÿH~×ʼn$SË Ÿnh¤ö(x‘÷ŒîñE‡Îr‚$AèõOÉÏ,7ž<Ý¥yJ(˾§{•«N£â¹zÿ“1ÍGmêÿ'§–cПðý®óÙý/æóŒ©/âûööÖÚ +k{;hÄVÖ‘$6ñŠ‘¨Uäx,äg##̾ýDDr+äY;v*ðÏ#ùž–þS›ò¿Êºwšõ(¯§:•¾¥rm¢Š ქIm²p?Q¦F§[†à„ÉçÇ.]ï'òÌó’ÖºBÃ7åÞ‰ ­»gG“Qí¤s·ï"̼¢E¨(Õí–½ÒeÉÚ“É9K‘&@HÝVÆï•uæ‚Ûþr5^!wùy¤j §Z‹-§Õã% ë*zSÆÜ¿v€;³µQSPx;Ø`Ÿiâ˜Åc°¹]zýö7?ó’-q3Ü~Yh7,ó%Ä:Ÿée[•’+vXÚ‹p¨8»q *I5;`á‡{š;Kµþç*¿¿Õß]V4¿ó’77q\_þZh7RÆðÌ/_U^aíeœáW€j±¥*iZᨭ9u]©”œ0ö=~2$üÒÓcÿ9 ñùžùYåëSæ[¨5 «¸µÞ ˜ˆ ÅÊå„aYÅ6ä\Ó|>Ž÷ƒ´Oðb8ˆ?W_žÝþûf¾S‹óŽ_0ù>ÓÌ_——üµ 9¦©c|²\C¶–¼}y † Ôý­ˆÈž;¹za¬9 'Š1„zƒ¸ØŽò“ÿÎqÿë#Î@à!yÿåNýüÅyIÞO'ù_“hô»qÈÕB+¹­)ž¯ÙcüõGÜñz±YçýbÈìcby˜ÔòaÄ0©v©ï™ø"IºêãÍúŸÿ8סǣ~YY\N¦;ß0\˨H„q>˜"8÷ï°¨9Ñ‘3¸}§wO Nrï5ðŽß}½–íH½€ 4.ñ¸ß£¯*ý%FcCé,gõùƒæ›mʾa™ØG0´’Aj$«ÁiÓǶehðä‰è üœm^` `9¾oƒ!¿I¥!foT  fä*79Ó‰Ùt³Òœqå· z…ì1 (mä¢Emh¾½Hãêh{ï¾_Þú¼ü‰¸‘Ìoñ%õ÷üáž­¬\]kVúóÇo¦¹¶ºŽ3Ìs XÍ:ñâ­V§¶pÞ×øRÇ qª»ùÐ>‰ì¤3aÍ8pá±UÔ‹¾êy÷üåD(¿›º¤7ηO¦Ÿ2Ûò2+;Û(¤…ëˈ۠ùfÛÙ@' r¹}î‹Ú̲ÅÚ£¿ ~Ðò¿"ÏÃ̾^TUAõ¥Pn¨Ë¾n»B¹Ÿ¹Ðö^OðŒ~ÿÐúSiD^­ ½« è+@üCéRs”Ä×~Ïmšêû·b^lTöÓ ÈET¹é¾ã3tDÙ´X=ÌÚ%²L¼ Èõ˜°ùì3a ]tâ`õÝ-Ô¬€6îh:|òÜbšsz‚Ùbzd=z©µú²s¾­p£Ã:lDRiZ‚¨æÃ=Ùä*?ìpHÜ‘v½ŽxsÎΈ?·ÜXŸå…¼k¯x2™V<j߉Ìv%£Ú¬ÒâÇ”OÅí–%tC²üL¦ÙwyÎ(Ú `v~ u¡ð9i c$Ó.Ò4‚¾“ÈÄ ÐP¿‰0sf¾NÓM¦®oG‚Ò$‰\€7réîvû³[)’{Äq€;ß]ÝÙiÿ›r^賋› õ?]\AûáYƒN\ÌÆÿ¥Ùgõöq2Â,šl?E)õ¨¬µÝNÙÍ"½Š¸ãÜP•oÁÆh{cž(‘ÐŽÅÔåïþ>oüÌÓ#Ò¼ûæ»8T­»j][ S÷W N´öøöβ²œš\r<ê¾#g“íŒ#³,G.+ã¿é}Çÿ8Cùm%µž¹ù£©[4gRJòϨ£xƒ\Ü!;üN?•º×8o{PJPÒDòõKßü#å¿Ä>ƒÿîÊ1Œõ“W¦>ïâ?=¾ú žpúc±Wb®Å]Š»v*ìUØ«±Wb¯•?ç8ÿõ‘¿ç ?ð¼ÿqWò¥å¯ùX?á­ê_¢~¡õþ«êòõ=.*w¦zƒùCòØø88xE_:­žcQùo\\W{üÙ,ò³>¡;sãêR”Û§·Ó› Ê}—Ku¿“üqÅã]íuö|9eÿ+ÃëPzáÚriêqö¯éŒ–/oívy¿’øO>¥òÿü¯M~©ÿ*¯ë´^¦>»êóÛ§Öþ½8æ&§ùwøøkË—ûGüƒþJø¼þ¯öLƒMÿ¡àý;qú7ü;êýLúߣ~½õ_ªÕån=²Œ¿œð‡Wµó¿óº·cü§ŒkǺ޹Wù½'æ7ý ·ékñøô¿ =~?[úÅ(8zþ·Ç^4ã^ٟٿÊ܃Ãá½»¾·½×v¯òOãñx«zçåÅ{û“'ÿÐÀzQýGþUŸé¯¬Áú7ë\úß>cû®?Jò¯jäu¿Ë—êàá£uôüYvòÜ<\v*þ¯‡ézôßô9&õ?å\z|«_­}šo\ÒÇùBöàû]ü¿!FøþÆ1wÿCiõK_®ÿʼú¿îéÏë]6§/ã™PþSâ<<ñqgü›Â8¸ëàùŸþ†³Ô´ú÷øÔ¡ôý¬Ó…vöùfN“ùR‡ñ·Yü—c‹ÄøS¹ÿ¡¡ÿvÿéÞ¿X¥)ß2ãü­ÓÂû\9ÿ$õñ~Ä=Ÿý çªÞ—ø"µý¯¬S%“ù^·ð¾Öÿ’/oìy÷æGý è™ÿÄ_áGÕ‹Õý~~§-©\Oò·ù*ø¹ZäÏÍŠ:ª­Ø¯’ÿåwúw_¡¿Â¼y/¯êúÔ¯l·Oü±G‡ÂûXöçò_<Ê©ì6ßô2Vø?ÀÔâ)Ëë§·l®_ËþOíq1ÿ#píâ}‰lô1¾¹¯ø/µúÅ)ôe§ùf¿É}­þEâÿ+aaÿCIHý?ð-cÔúÇ\ÂÉü­×Ãû]–/äªâ}Œèký%áÿ*ÿ©õšûæ7úéäþ×,%×ùO±òùÿ•­þ(ÔýðWé/¬~öŸZô½oXuËjò¥i›(*ßù+øþ-§?äüÅãx{ÿ7é£õuªï}åÿúO®Áþÿþ“ô›>_Ü|<«êü4¯~…©þPá>/‡Ãþw?ƒ7òð¼N*þ/ŽÝÌkó þ†ÏüC7øÃüúsêz¿U­=.'Ò¯£ðò§Žô¦evoòŸ‚< ‚Ï>.}y¸­ü—ãÌx¼t9pòéÉúcùuÿC÷þòŸø#þT¯øOôe¿è/Kô…=œ¿Ë­y×~U®õÏ*í?óY?1ýçâ÷þ®ï'Ö{/Àü®?ËÿwÂ8}߯¿ÍšñÉó ÜÇ0\÷ñÉó ÜÇwÿ—ÿ0×ýÌqWñÉó ÜÇwÿ—ÿ0×ýÌqWñÉó ÜÇwÿ—ÿ0×ýÌqWñÉó ÜÇwÿ—ÿ0×ýÌqWñÉó ÜÇwÿ—ÿ0×ýÌqWÏÿó•?ô>Ÿô.¿œò°åUÿ‚¿Ã—?â_Ñ?^ú÷Õ~Wõ>~Å_ÿÙ endstream endobj 755 0 obj <>stream hÞì–Ao›0ÇïùOÞe“’fª,ÕÔ²MI§­§Š7E163FÐ|µö‘új Ecíz˜4i|Âï=ýülé§uÓ=Ó°e»T„èþÇOi¢¯'+g•/Ùmz~PlsøxI{ê'è4š5©³D‹&ßVŸa)ƒ™íXtêÎa6³½“©ï¹oaS øD58.xŽ3÷qgdê£hJnÈúìÑev!ºÕ:'WUeWS[ªv}ßÇŽ‡=Ï2Vq't\[¢xÕ‰<ꜱ‚ª4שÐìã­,uˆÐ±¦[(¡='/o) ÅŒ³Œ ]`×vq/Þè'”PÅb-U4kÁö}}Lð4Zy«Åúâj;ÀÇðP?U ð³ÈƈN5gÏØXpý'Ío‹]ˆj+a7qÉ5ŠÎ©’Eqí:e×Ó¥Íòâ%ƒCýÖàÀJWõKþ¶;uœ÷í…Ý^?›Ê ›„i3l ’ewP—Rò¨»”œ—…VMôõú ¸sÛ ðï¥/ï¢æršGûWñä„ÿÉ!#d„Œ2BFÈ™ý\Í„¦+35?0Ds÷6 endstream endobj 756 0 obj <> endobj 757 0 obj <>stream application/postscript Print 2018-04-10T15:56:36+05:30 2018-04-10T15:56:36+05:30 2018-04-10T15:56:35+05:30 Adobe Illustrator CS6 (Windows) 256 256 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A7lo2jwebIH1rWmkuLe4k kFjYiRkiiiRig2QqS1V3OKUw/wCVc+TP+rf/AMlp/wDmvFbd/wAq58mf9W//AJLT/wDNeK27/lXP kz/q3/8AJaf/AJrxW3f8q58mf9W//ktP/wA14rbv+Vc+TP8Aq3/8lp/+a8Vt3/KufJn/AFb/APkt P/zXitu/5Vz5M/6t/wDyWn/5rxW3f8q58mf9W/8A5LT/APNeK27/AJVz5M/6t/8AyWn/AOa8Vt3/ ACrnyZ/1b/8AktP/AM14rbv+Vc+TP+rf/wAlp/8AmvFbd/yrnyZ/1b/+S0//ADXitu/5Vz5M/wCr f/yWn/5rxW3f8q58mf8AVv8A+S0//NeK27/lXPkz/q3/APJaf/mvFbd/yrnyZ/1b/wDktP8A814r bv8AlXPkz/q3/wDJaf8A5rxW3f8AKufJn/Vv/wCS0/8AzXitu/5Vz5M/6t//ACWn/wCa8Vt3/Kuf Jn/Vv/5LT/8ANeK27/lXPkz/AKt//Jaf/mvFbd/yrnyZ/wBW/wD5LT/814rbv+Vc+TP+rf8A8lp/ +a8Vt3/KufJn/Vv/AOS0/wDzXitu/wCVc+TP+rf/AMlp/wDmvFbd/wAq58mf9W//AJLT/wDNeK27 /lXPkz/q3/8AJaf/AJrxW3f8q58mf9W//ktP/wA14rbv+Vc+TP8Aq3/8lp/+a8Vt3/KufJn/AFb/ APktP/zXitpfrGjQeU4F1rRXkt7e3kjF9YmRnilidgh2cseQLbHFUw/Ln/lDNP8A+e3/ACffFSyX FDsVdirsVdirsVdirsVdirsVdirsVaZlUFmIAG5J2GKpTd+bPLVoSs+pQBh1VXDkfMJyOWxwTPIF xMmvwQ5zCXt+ZPlAGgvGYeIilp+KjLPymTucc9sab+d9h/U5fzJ8oE0N4yjxMUtPwU4/lMnco7Y0 3877D+pMLTzZ5auyFg1KAseis4Qn5B+JyuWCY5guRj1+CfKYTZWVgGUgg7gjcZU5beKuxV2KuxV2 KuxV2KuxV2KuxV2KuxVjX5jf8oZqH/PH/k+mKQ78uf8AlDNP/wCe3/J98VLJcUOxV2KuxV2KuxV2 KuxV2KuxVC6hqVhp1s1zezrBCv7THqfADqT7DJQgZGg15c0MceKRoPPtd/NeVi0OjQBF6fWpxVvm qDYfT92Z+LQ/znndV28eWIfE/qYRqWt6vqTlr67lnqa8Wb4B8kFFH0DM2GOMeQdHm1WTL9cifx3I HLGh2KuxV2Ko7Tdb1fTXDWN3LBQ14q3wH5oaqfpGVzxxlzDfh1WTF9EiPx3M30L815VKw6zAHXp9 agFG+bIdj9H3ZhZdD/Nd5pe3jyyj4j9T0HT9SsNRtlubKdZ4W/aU9D4EdQfY5gTgYmi9FizQyR4o mwisi2OxV2KuxV2KuxV2KuxV2KuxVjX5jf8AKGah/wA8f+T6YpDvy5/5QzT/APnt/wAn3xUslxQ7 FXYq7FXYq7FXYq7FXYqxzzb50sdAi9MAT6hIKxWwPQfzOew/E5kYNOcnuddr+0YacVzn3freQavr WpavdG5v5jK/7C9FQeCr0AzbY8cYCg8dqNTPNLimbQOWNDsVWyzRRLyldY1/mYgD8crnljH6iA5m l7P1GoNYsc5/1Yk/chn1fTErW5Q0/lPL9Vcxzr8I/i+93mP2M7VnywS+JiPvIcmr6Y9KXKCv8x4/ rpiNfhP8X3rk9jO1Yc8EvgYn7iUTFNFKvKJ1kX+ZSCPwzIhljL6SC6PVdn6jTmsuOcP60SPvXZY4 bsVR2ka1qWkXQubCYxP+2vVXHgy9CMryY4zFFv0+pnhlxQNPX/KfnOw1+L0zSDUEFZbYnqP5kPcf iM1OfTnH7nsdB2jDUCuU+79TI8x3YuxV2KuxV2KuxV2KuxV2Ksa/Mb/lDNQ/54/8n0xSFv5dNTyd p/8Az2/5PvipZJyxQ7liruWKu5Yq7liruWKu5Yq7lirHfOXm2LQbGkdJNQnBFvEeg8Xb2H4nMjT4 DkPk67tHXjTw2+s8v1vGrq6uLu4kubmQyzynlJI25JObmMQBQeKyZJTkZSNkqOFghb7UrWyTlM3x H7Ma7sfozF1GrhiG/Pueh7C9mdX2lL90KxjnM/SP1nyHxpjt55jvp6rF+4jO1F3b/gv6Zo8/aOSf L0jy/W+xdkewWg0gByDxsnfPl8I8vnaVu7uxd2LMerE1J+k5gk29pCEYioigO5rAydiraO6MHRir joymhH0jCDTGcIzHDIAg9Cmln5jvoKLL+/jG1G2b/gv65nYO0ckOfqHn+t4vtf2C0GrBOMeDk74c vjHl8qZFY6la3qcoW+IfajbZh9GbzT6uGUbc+58d7d9mdX2bL96LxnlMfSf1HyPwtFZlPPK1rdXF pcR3NtIYp4jyjkXYgjBKIIos8eSUJCUTRD2Xyb5ti16xpJSPUIABcRDofB19j+BzTajAcZ8ntezt eNRDf6xz/WyLlmO7F3LFXcsVdyxV3LFXcsVdyxV3LFWN/mK1fJ2of88f+T6YpCz8vD/zp+n/APPb /k++KlkdcUOrirq4q6uKurirq4q6uKobUtRttPsZr25bjDApZvE+AHuTsMlCBkaDVmyxxwMpcg8N 1nVrrVtRmvrk/HKfhStQij7Kj2Aze48YhGg8FqdRLNMzl1QOTaGW+SvJT6xIL29DR6bG2w6GYjqq nso7n6B7Ymp1PBsPqdx2Z2Ycx45/R97zb8yYYYPPGrQwoI4o5VWNFFAFEagAZzOYkzJL9Eez0BHQ 4hEUAP0ljWVu5dirsVdirsVdirJfy2hhn88aTDMgkiklZZEYVBUxsCDlmEkTBDpvaGAlocokLBH6 Q9J86+Sn0eQ3tkGk02Rtx1MJPRWPdT2P0H36bTanj2P1Pzv2n2YcJ44fR9zEsy3To7RtWutJ1GG+ tj8cR+JK0DqftKfYjIZMYnGi36bUSwzE49HuWm6jbahYw3ts3KGdQy+I8QfcHY5opwMTRe9w5Y5I CUeRRNci2urirq4q6uKurirq4q6uKsc/MM/86fqH/PH/AJPpikLfy9P/ADqFh/z2/wCT74qWRVxQ 6uKurirq4q6uKurirq4qwb8yZr27hjsLSjRxH1blAfiY0+EDxoDX7spxdr6fBn8PIakRz6D39zg9 qdm6jPgvELiDuOp93e8zIKkgihGxB6g504IIsPCyiQaPNN/K3l+TW9VS23W3T47mQdkB6D3boMqz 5eCN9XM0GjOfJw/w9XtdvBDbwRwQII4YlCxouwAHQZpCSTZe6hARAA2AfMf5n/8AKe6z/wAZh/xB c12T6i+t9g/4lj936SxfIO3dirsVdirsVdirKPyw/wCU90b/AIzH/iDZPH9QdR29/iWT3fpD6cuI IbiCSCdBJDKpWRG3BB6jNiCQbD5JOAkCDuC8U80+X5NE1V7bdrd/jtpD3Qnofdehzd4MvHG+rwuv 0ZwZOH+Hok+XOE9B/K3XCsk+jyt8LAzW1exGzr9I3+/NfrsX8T0fYOq3OI+8fpei1zWvTOrirq4q 6uKurirq4q6uKsd/MI/86hf/APPH/k+mKQt/L8/86jYf89f+Tz4qWQ1xQ6uKurirq4q6uKurirTO FUsxoqipPgBgJVgdzO1xcSTN1kYtTrSvb6M8x1mc5ssp95+zp9j1ODHwQEe5LdQ0i0vRVxwmptKv X6fHNn2V29n0ZoHix/zT+ju+7ydX2p2Hg1guQ4cn84fp7/xuy3yNoQ0nSKvQ3F0xkkf/ACRURj5c d/pzvjrPzEYzAIBHI+bzui7O/KgwJuV7n7mRVyLmvmP8zv8AlPNZ/wCMw/4gua/J9RfWewf8Sx+7 9JYvkHbuxV2KuxV2KuxVlH5Y/wDKeaN/xmP/ABBsnj+oOo7e/wASye79IfTlc2D5Mxn8wNHGoaFJ Mi1uLGs0Z78B/eD/AIHf6MytJk4Z10Lqu19N4mEkfVHf9byLNw8WjdG1B9O1W1vVP9xIrNTuvRh9 K1GQyQ4okN+lzeFkjPuL3VXDKGUgqRUEeBzQPoIbril1cVdXFXVxV1cVdXFWPfmAf+dRv/8Anl/y eTFIW+QD/wA6lYf89f8Ak8+KlkFcUOrirq4q6uKurirq4qg9YmMemXDDuvH/AIM8f45g9p5fD085 f0fv2b9NDiyRHmw3PNnp10MbSypEv2nYKPmTTLcGLxMkYfziB82GSfDEnuDO0VURUUUVQAo8ANs9 RAAFB5QluuFXzL+Zv/Kd6x/xmH/EFzX5PqL6z2D/AIlj936SxjIO3dirsVdirsVdirJ/yy/5TvR/ +Mx/4g2Tx/UHUdvf4lk936Q+mq5sHyZp1V0ZHHJWBDA9CDscUEXs8J1G0Nnf3NoesErx1PfixFc6 CEuKIL55nx8E5R7iQhsk1PbPK92bny9p8xNWMKqx8SnwH8VzRZ41Mh77QZOPBA+SaVypy3VxV1cV dXFXVxV1cVY/5/P/ADqV/wD88v8Ak8mKQ15BP/OpWH/PX/k8+KlkFcUOrirq4q6uKurirq4qlfmN yumkfzuoP4n+Gabt41pZe8fe5vZ/96PixbOBehRekpz1K3Hg4P8AwO/8M2XY8b1UPf8AocXWn91J mVc9FebdXFXy5+a908P5j60BunqR/D/zxTpmoz5DHIX1L2fmRo8fx+8seinjlFVO/cdxkozB5O9E gVTJJdirsVdirsVZV+Vn/KfaR/xkk/5MvlmL6g6b2h/xLJ7h/ug+lq5nvlDq4q8c87R+n5pv1pSr q3/BorfxzdaU3jDw3asa1M/x0CR5kOvet/l7Jy8rWy9eDyr/AMOW/jmm1g/eF7XsY3po/H72SVzG do6uKurirq4q6uKurirH/Px/51K//wCeX/J5MUhb5CP/ADqdj/z1/wCTz4FLIK4odXFXVxV1cVdX FXVxVK/MQ5adX+V1P6x/HNN2+P8ABT7x97m9n/3o+LGM4J6FFaU/DUbc/wCWB/wW38c2PZEq1UPf +hxdaLxSZjXPRXm3VxV8r/m9/wCTG1r/AIyRf8mI80uq/vC+odg/4nj+P3liCsykMpoR0IygGnb2 joL4NRZdj/N2+nMiGbvbYz70Xl7Y7FXYq7FWVflb/wAp9pH+vJ/yZfLMX1B03tD/AIlk9w/3QfSl cznyh1cVePedZRJ5ov2rWjKv/Axqv8M3elFYw8N2rK9TP8dAkeZDr3rP5frx8r25/neRv+HI/hmm 1h/eF7XsYVpo/H72SVzFdo6uKurirq4q6uKurirH/Pp/51O+/wCeX/J5MUhb5D/5RSx/56/8nnwq U/xQ7FXYq7FXYq7FUJq0Zk06dR1C8v8AgSG/hmv7Vx8emmPK/lv+hyNJLhyxPmxLPOHpl0UjRyJI v2kYMPmDXLMOTgnGX80g/JjOPFEjvZqjq6K6mqsAVPsc9RjISAI5F5QijTeSQ+Wvzd/8mLrX/GSL /kwmaTVf3hfUOwf8Tx/H7yw/KHbuxVk3kryj5l8yXfoaZBytkalxdS1WGLvu1Dv/AJIqcyNPGcjQ 5OFre1cWkjczv0HUph5o8m675buvS1GH9yxpDdx1aGTv8Ldj7HfMqUDHm3dn9qYdXG8Z36jqEjyD sHYqyr8rv+U90n/Xk/5MvlmL6g6b2h/xLJ7h/ug+kcz3yhp3VEZ3PFVBLE9AB1xQTW7w/Ubo3d/c 3Rr+/leTf/KYmmdBCPDEB88z5OOcpd5JQ2Sans/le2Nt5fsISKH0Vdh4F/jP/Es0WeVzJe90GPgw QHl9+6Z5U5jsVdirsVdirsVSDz5/yil9/wA8v+TyYpC3yIf+dVsf+ev/ACefFSn/ACOKHcjiruRx V3I4q7kcVdyOKtNR1KturAgj2ORlEEUUg0w2eJopnibqjFT9GeYanCcWSUD/AAmnqsU+OIl3rMpZ sk0K89W09In44dv9ien9M7vsHV+Lg4T9UNvh0/U6DtDDw5L6STLkc3jgPlv83P8AyYus/wDGSL/k wmaTVf3hfUOwf8Tx+4/eWJRxySSLHGpeRyFRFBJJJoAAOpOUO2JAFl635D/Iy5u/T1DzRytrY/Em mqaTP4eqw+wP8kfF8sz8OjJ3l8nku0/aaMbhg3P87p8O/wC73vbrCxstPtI7OxgS2tYhxjhiUKoH yGbGMQBQeKy5ZZJGUjci3e2dpfWslreQpcW8opJFIoZSPkcJF81xZp45CUCYyHUPH/On5NXFtzvv LnK4txu+nsayr4+mx+2PY7/PMXJgrcPddle1MZ1DUemX87p8e77vc8vdHjdo5FKOhKujChBGxBBz HexBBFjkyf8AK/8A5TzSf9eT/ky+WYvqDp/aH/EsnuH+6D6Q5HM98oY7551gWOiSQq1J7ysKDvxP 2z/wO305k6THxTvoHV9r6nw8JH8Utv1vKc3LxSL0mxa/1K2s1/3dIqsR2Xqx+hd8hknwxJb9Nh8X JGHeXti0VQq7KBQD2GaB9CAb5HFXcjiruRxV3I4q7kcVdyOKpB57P/Oq33/PL/k8mKQt8jH/AJ1a y/56/wDJ58VKfVxQ6uKurirq4q6uKurirq4qkOv2vGZbhR8Mnwv/AKw/qM472j0fDMZRylsff/Z9 zuuzM1gwPRKs5l2ivY3bWtwso3HR18VPXM7s7WnT5RMcuvuaNTgGSFdejKopkljWRCGRhUHPRseS M4iUTYLzUomJo83z95u8ka/5p/M/WYdNg/cLLEJ7ySqwx/uEPxN3P+SN81uXDKeU099oO0sOl0OM zO9Gh1PqL1PyP+WXl/yrGsyKLzVSKSX8oFQe4iXcRj8fE5m4dNGHveX7S7azao0fTj/mj9PezCuZ Dp3VxV1cVdXFWK+cfy70PzKjSuotdSApHexgVJ7CRduY/H3yqeIS97uuy+3M2kND1Y/5p/R3fc83 8r+T9b8t/mLpMWoQ/uWlkEN2m8Un7l+jdj7HfKIQMZi3rO0e1MOr0GQ4zvQsdR6h+Le3zTxQQvNK 4SKMFnc9ABuTmaASaD5vKQiCTyDyPzLrkmsam9xutunwW6Hsg7n3bqc3eDFwRrq8N2hrDnycX8I5 JTlzgs3/AC40ktNNqki/Cg9K3J7sftkfIbffmv12TYRej7B0u5yn3D9LPq5rXpnVxV1cVdXFXVxV 1cVdXFUh88n/AJ1a9/55f8nkxSGvI3/KLWX/AD1/5PPipT7FDsVdirsVdirsVdiqlcwJcQPE/Rhs fA9jmPqtNHNjMJci2YshhISHRis0TwytG4oymhzzbUYJYpmEuYenx5BOIkORWZSzR2m6k1q3B/ig Y7juD4jNz2T2sdOeGW+M/Z5hwdZoxkFj6mQRPC6c4iCr71Hc53WPJGcRKJsF0M4kGjzVMsYuxV2K uxV2KuxVZK8SIXlICpvU9shkyRhEykaAZRBJoMY1+4XVYWtaslsSD8JoSR0J9vbOVy+02SGYSxAc A7/4v1eX29zsMvYkM2EwyE2e7p+tguo6Nd2RLEepB2lXt/rDtnadl9vYNYKB4cn80/o7/v8AJ8/7 U7Bz6Tcjix/zh+nu+7zUtL0241K+is7cVeQ7t2VR1Y+wzcZMggLLq9Np5ZpiEer2HT7KCxsobSAU ihUKPfxJ9yd80U5mRsve4cMccBCPIIjItrsVdirsVdirsVdiqQ+ef+UWvf8Anl/yeTFIWeST/wA6 xZf89f8Ak6+KlPK4odXFXVxV1cVdXFXVxV1cVdXFUDqdgLlOaD98g2/yh4Zpe2OyxqI8Uf7yP2+X 6nN0eq8M0fpKQEEEgihGxBzg5RMTR2IegBvcOwJVrW8ntmrG2x6qdwczdF2hl05uB27ujRn00Mg3 Ti31m2koJP3T++6/fnXaTt/Bk2n6JefL5/rp0+bs/JHl6gjldXXkpDKehBqM3UJiQsGw4JBGxbrk kOrirTOqjkxCqOpJoMjKQiLJoJAJ5IG41m2jBEf71/b7P35ptX29gxbR9cvLl8/1W5uHs/JLn6Qk 91eT3LVkbYdEGwGcjre0cuoPrO3cOTuMGmhjG3PvUcwXIcFLHiByLbBeta9snijKUgIfV0pjMgA8 XJOdF0Oz00SSxxKlxPT1CvYfyjw+jPTtKcwwxjmlxyH4+PveQOmwQySliiI8X4+HuCaVy5m6uKur irq4q6uKurirq4q6uKpH52P/ADrF7/zy/wCTqYpC3yUf+dZs/wDnr/ydfFSnlcUOrirq4q6uKuri rq4q6uKurirq4qgb/TkuKunwzePY/PNL2p2PHUDij6cn3+/9bnaXWHHsd4pJJFJE5SRSrDsc4fPg nilwzFF3uPJGYuJsLcqZuxVtHdDVGKnxBpk8eWcDcSR7jTGUBLmLVlv7xekzfSa/rzNj2tqY8pn7 2g6PEf4Q5r+8brM30Gn6sZdrak/xlRo8Q/hCi7u5q7Fj4k1zDyZpzNyJl7zbfGAjyFNZWydiq6KK SVwkalmPYZfp9NkzS4YCy15csYC5FPLDTo7Yc2+KY/tdh8s7nszsmGmFnfJ3/qdDqtWcprlFG1zb uG6uKurirq4q6uKurirq4q6uKuriqR+dT/zrN5/zy/5OpikLfJZ/51qz/wCen/J18VKd8sUO5Yq7 liruWKu5Yq7liruWKu5Yq7liruWKqU8MM68ZF5eB7j5HMbU6THnjwzFtuLNLGbiUsuNIkWphPNf5 Tsf6Zyus9nJx3xHiHcef6j9jtsPaUTtPZAvHJGeLqVPgRTNBlwTxmpgxPm7CGSMhYNrcqZuxV2Ku xVckckhoilj4AVy7Dp8mU1CJl7mE8kYC5Gkdb6RI28zcF/lG5/pnQaP2cnLfKeEdw5/q+912btID aAtNIYYYV4xrxHfxPzOdVp9Njwx4YCg6nJllM3I2qcsva3csVdyxV3LFXcsVdyxV3LFXcsVdyxV3 LFUk86H/AJ1q8/55/wDJ1MUhb5M/5Rqz/wCen/J18VKdVxQ6uKurirq4q6uKurirq4q6uKurirq4 q6uKurirTKjCjAMPAiuRlASFEWEgkclB7CzfcxgH2qP1Zr8nY+lnzgB7tvucmOtyx/iUjpNoe7D5 Ef0zFPs9pv6Xzbf5Ry+ThpNoO7H5n+zEez2mH875qe0cvkqpYWaGojBPvU/rzKxdkaaHKA+O/wB7 TPWZZfxK6hVFFAAHQDbNjGIAobOOTfNuuFDq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKpL5z/ AOUavP8Ann/ydTFIW+TT/wA63Z/89P8Ak62KCnVcVdXFXVxV1cVdXFXVxV1cVdXFXVxV1cVdXFXV xV1cVdXFXVxV1cVdXFXVxV1cVdXFXVxV1cVdXFXVxV1cVdXFXVxV1cVdXFXVxVJfOR/51u8/55/8 nVxULfJ5/wCdctP+en/J1sUlOanFDqnFXVOKuqcVYh57/Max8rotukYutUlXlHb14qinbnIf1Adf bFWFxeYvzs1OJb+ytmitXHJESCBVZevwiblIQe2+KorQPzg1S01L9GebLQQkMEe4VDHJGT3kjPUd 6rT5HFWW/mP5m1DQvLaajpjR+q88aBmAdSjqx239sVRvkPW77WvKljqd8VN1cer6hQcV+CZ0FB8l GKp/U4q6pxV1TirqnFXVOKuqcVU55GSCR1+0qsR8wK4q85/K/wA++YPMerXdrqTRNFDb+qnppwPL mq9a+BxV6VU4q6pxV1Tiry3zl+aHmC38yvoPl+2jkliZYi7oZJHlIBKooIFBWnTFWb+T7zzDdaIk uvwC31Hm4eMLx+EH4TQE9cVTupxV1TirqnFXVOKuqcVdU4q6pxV1TiqTecD/AM65d/8APP8A5Ori kNeUD/zrtp/z0/5OtipTiuKHVxV1cVdXFXhPk+FPN/5lzX16PWgVpL0xt0KRkJChB7LyTb2xV7tX FWI+d/y6sPNNxbXL3Bs7mBWR5UQOZEJBUNUr9k1p88VSP80NPbTfy3stPaY3H1SaCETMOJYIjgVG /bFWOeUNY/MG/wDL1ro/leBYLew5i5vm4fE8krycQZKqKBxsoJxVH+XfzE83aV5nj0HzVSUSSrC7 MqLJE0lODBo6KyfFv7fdirOvPXnS28r6Ws7IJr24JS0tyaAkCpZv8laiuKsBttW/OvVbUavZgpaM OcMSpbqGU71RJKuwp0r17Yqyb8vPzHk12eTSdWiFvq8IJUqCqyhNnHE/Zde4xVR/ML8yrrR79NE0 SJZ9VcL6sjAv6Zk+wioPtOag/d1xVIbm/wDzt0yzbVrp+dtGPUnhK2zcUArVkQBgPHjuO+Ksz8l+ d4fNOhXMjoIdQtUK3kK/Zqyni6VJPFqHr0xVgH5Guqa9qLsQqrZ1ZiaAASLUk4qnGrfmR5j1rzEm keS0DRISHunQOH3oZDyBCRr49/uGKvS9NhvYLGKO+uPrd2F/fThVjDMevFVAAHhiqF8zHXf0Jc/o Hj+lfg+rc+PH+8XnXn8P2OWKvBLT/Fn+PW9Hh/iX6xLWvp8PW4tz6/B0rir16782aj5Z8mQ3/mRF l1pi8Yt4yoDyF2KCqfCAIwCT/HFWG6drX5w+Z4n1DTHW2sqkRBVhjRiOoQyBnb5k0xVHeVfzP1y2 1waD5tiCTs4hFzwEbpIxovqBaIVauzKPfcYqmn5secNd8u/or9FTLF9a+setyRXr6fp8ftA0+2cV Yu/nz8yvMbs3l62kis4aIzwxIxZgBUu7gqCevFemKvZYS/ox+p9viOfzpviq+uKurirq4qk/m8/8 67d/88/+Tq4pCzyj/wAo9af89P8Ak62KlOMUOxV2KuxV4Z+V0g0X8wZtOuiEkkSexqdv3iuGH3+l QYq9zxViPnv8wYfKj2cQs/rs10HYp6vpcFSgBPwSV5EmnyxVI/zO1CTUvy3sdQkh+rtdy283o8uf EOjMByotdj4Yqnf5TRRp5D09lFGladnPiRO61+5RirBfzQAH5j6dQdUta/8AI5sVW/nfJK3mewhJ rEtmrIp2Xk0sgbf5KMVZOmr/AJzoionl/T1RQAqh0AAGwA/0rFUj0nyl5+bz3beYb7S47QPcCW6M MsPBVYcZCF9V2+IVr1xVCeXglz+dFybsBmS8vPSDeMQcR9fBVqMVe0SrG8TrKAYmUhw3QqRvWvam KpFpOn+UbSK8OhLarI8R9f6s6sSoBpyCk4q8F8s2HmHUrifTNFDl7uLhdBTxX0lIYh27KSB8+mKs 7/JnXLSxvrzQLuFYL6dy0UzCjs0Yo0Lk/wAtCVHzxV6/irsVeI6Z/wCTqf8A5jrj/iD4qmP57vL9 Y0dD/chJ2X3aqA/hTFXqGiQ2sGjWMNrT6skEYhp0K8BQ/TiryT88YrZNe0+aOguZLc+rTrxVzwP6 8VRP52PK9n5beUUlaO4Mg/yisBP44q9G8nWFvY+VtLt4FCp9Wjdqd3kUO7H5sxOKpzirsVdirsVS fzd/yj13/wA8/wDk6uKQt8pn/nX7X/np/wAnGxUpvXFDq4q6uKurirzX8x/y8vb69Gv6CD+kAVa4 t1PFmZPsyxmo+MUFR37b9VUki/NH8wLGFbO701ZLtfhEk8EyyE9PiVSgJ+QGKqOj+TfNfnHXBqvm JZILMkGV5V9NmRTtFDHsVHv9O5xVmv5rabd3flKO0061kuHS4i4wQRs5CKrD7KAmgxVMPy1tbuz8 ladbXcMlvcJ63OGVSjrWeQiqsARUGuKsL/MbRdZu/PthdWthc3FsiW4eeKJ3QFZWJqyggUGKsi/M /wAk3HmGyhu9PAbUrMMBGTT1Y23KgnbkDuPpxVjOnfmN560uyTTrzRJLm4gURRyyRzK5psvMAfH8 xSuKph5E8s+Z73zE/mjzF6kBJZ4bV6qWdhxBMZ+yiL0B36Yqh/zA8ma7aeYV80eXkaWQssssUQ5S JKopzCftK1Nx8+2KoXUvzD88atpsml2+iSQXVypilnijlLcW2YKpHw18STirKPy68mXPl7Qrt7wD 9JX61kiX4uCqp4JUdW+I1piqQ/k1o2safqWovf2NxaJJCgRp4niDEMdgXArirX5neTNSi1iDzDoE Esk8jhriO3RndJk3WUKoJ3pv7/PFXoXljVrzU9Ggub60lsr2nC5gmjeIh16socA8W6j7sVTWuKvJ NP8ALuup+bD6k9hOtgbydxdFD6fFkcA8vA1xVmX5h+UD5m0dY4GCX9oxktWb7LVFGjJ7ctt/EDFW CaP5z8+eWLJNHvNFkuFtgVt2kSQEL2AdKq6jtT78Vdo3lLzR5v8AMq635iga2sVZWdJVMfJENVhj jb4uPiT27k4qm/50aTquo/of6hZT3npfWfV9CJ5ePL0uPLgDStDTFWf6EkkWiafHIrJIltCrowIY MIwCCD0IxVHVxV1cVdXFXVxVKPNh/wCdfuv+ef8AycXFIWeVD/uAtf8Anp/ycbFSm/LFDuWKu5Yq 7liruWKu5Yq7liruWKu5Yq7liruWKu5Yq7liqhdahZWiq13cR26saK0rqgJ8ByIxVUinjljWWJxJ G45I6kMpB6EEdcVX8sVdyxV3LFXcsVdyxV3LFXcsVdyxV3LFXcsVdyxV3LFXcsVdyxV3LFUo81n/ AHAXX/PP/k4uKQt8rH/cDa/7P/k42KlNeWKHcsVdyxV3LFXcsVWyzRxRPLK4SONSzudgFAqScVQm na3pOp+p+j7yK69Knq+k4fjyrxrTx4nFV2o6xpmmokmoXcVqkh4o0rBASN6CuKul1jTIbBdQluok sWCstyzARkP9k8um9cVQ0vmny7FZx3smpW62spIil9RaOVNG4+ND1piq7TfM2g6nIYrDUIbiUbmJ HHOg78TvTFUy5Yqk9/5y8sWFwba71OCOcGjR8uRU+Dca8fpxVg/5wahY3+g6XcWVxHcwNcPSSJgy 1CdKjvirNvJZ/wCdS0j/AJhIv+IDFVe/80+XtPmMN5qVvBMOsTSLyFfFRuMVRNhq2m6hGZLG7iuk GzNE6vQ+9DtirC/zW8xQQaKbOy1AQ6nHcRmSGGQpMEKE7hSGpQg4qi/y28yWNx5c06yuNRSbVm9b lDJJynNJZGFQSW+wK/LFWWXmoWVjAbi8uI7aBeskrBF+VTTFUBYebfLd/MILTUreWZtliDgMx/yQ aE/RiqbcsVSm+83eWrCYwXep28Uy7NGXBYH/ACgK0+nFUVput6VqcZk0+8iulX7XpsGI+Y6j6cVR nLFXcsVdyxV3LFXcsVdyxVKvNJ/3A3X+w/5OLikLfK5/3BW3+z/5ONipTSuKHVxV1cVdXFXVxVAa +f8AcFqX/MLN/wAm2xV55+R//S6/6Nf+Z2Kor87P+OVpv/Gd/wDiGKt+Yv8AyTtp/wAYLT/iSYqk /wCW/kWw1uxfUtY5z2sbGC0tubItB8TMSpDU5NsARvXFVn5heSbfy2LbWdEkkgi9UIycyWjkoWRk Y/FT4e+Ksk1vzvdf8q2t9Xhb076/C23qLtxlqyystOm0bcfDFUk8g/lvp2q6UurawZJBcM3oQKxQ cVYqWcj4jyIxVJvzF8mx+XJoHsZJG0y8LFYnNeEqDoT32b4e/XFXollFrM35b2MGjME1CWzhSKRm 48QQOZB7HjWmKsd8v/lZptrbS3PmuVRMzn04xNwjCgD4mf4SST74qkET6boH5h2aeXrw3Fi8sUcp Vw6kSsFePkuzgdfn8sVZF+bnlrS4rKTXkV/0hcTxRyNyPHiIyuy/JBiqK/LDylo36J0zzFwf9Jfv /i5nh9uSH7P+pirFbu7HnbzpJFfX62ekW5f0izqoEKHiOHL4echoT/ZiqYebPJHlC20iW80TUkF5 arz9E3EcnqKPtUoahgNxTFU08v8AmrV9S/LjVCkjHVdOjaMTgn1DHQEPXryC8hX2rirEfI8fkScX EfmYsLl2H1eR2kWPiRv8UZHxV/m2xVlWl/l9Pa6/FrHlfVoDpyurKvMyExmnqRsyBlYGnf8AhXFX ptcVdXFXVxV1cVdXFXVxVK/NB/3BXP8AsP8Ak4uKQt8sn/cHbf7P/k42KlNOWKu5Yq7liruWKu5Y qgdd5NomoKoqzW0wAHUkxnFXm35J3lvHdaras4E86wvEh6ssZkDU+XMYoVvzp1K2dNP09HVrhGea VAalFIAWvhyqcVRfmE/8gftB/wAUWn/EkxSu/J7XbN9Ik0h3VLyCVpI4yaF43oar40Na4oXfnDrV rHosWlK6td3EqyNGDusaAnkfCrUp9OKpNq2jXaflBp1VIaCdbyVab+nK0ir+EqnFLK/yu1q0vfK1 vaI6/WrHlHNFUcgORKtTwIPXxrihjP5zazaTPZaVE4eeBmmuADXhyACKfcipxVMNZ1/UNG/LDSJL FjHPcxQW/rjqitEWJU9m+GgxVB+Tfy+0bW9Ii1nVbqa8uLksXUSUC8WIozbuW2r1xSx3WbfQ7Pz/ AGdto4VbK3uLZGKsXX1A6l/jJatK0PvirPfzfJPlJdul1FX/AIFsVRv5XyKfJGnqpBKGZXAPQ+u5 ofoIxV5Z5b0HSH81y6Lr7vAimSGN1YR/vkYcaswOzAGnvTFWb61+XPkTR9Olv72W6WGIfZEqcnbs iAqKscVVvJ2peVtH8t6nrOl2t+bBJEFws4iaRitBWMBgKL6nxVOKFmm+Xfy985W897Y2ktjIjlJV jZYnBIqG9MGSMA12NMUsN8wafceRvMUJ0nUTI3ESlejAcv7uVVNGBp/Zir3NJCyK1KcgDQ9RXFV3 LFXcsVdyxV3LFXcsVSvzMf8AcHc/7D/k4uKhb5aP+4S2/wBn/wAnGxUpnXFXVxV1cVdXFXVxV1cV edav+T9rPfPc6ZfGyR2LegycwpP8jBlIHtiq7/lTmmfo8QG+kN4ZA8t2UBqACOCpy2FTU7nFUX57 09dO/Lc2CuZFtVt4hIRQtwkUVpvirGvKn5e6d5g8sQXonezv1lkUzKOasFbaqEruPEEYqnWkfk9Y W92LjU71r5Vbl6Cp6asa/tks5I9hTFXoEsEEsDW8kavA6lHiIBUqRQqR4UxV59e/k9aG7M+l6nLY oSSIynqFa9lcPGafOvzxVs/k3phsREb+U3hcPJdFAQQARxVOW1Sa7k4qyiXypp9z5Zh0C7LSwQxJ Gsy0Vw0Yorr9oA4qxEfk2Edli1uVLZz8UQi3I9yJAD/wOKq2ofk5pUlvCmn3kltPGD6sso9X1CTU EgFAtPbFWTS+VLa68rx6BfzvcKiKpuh8LlkNQ4qX/jiqR+W/yvi0PXbfVU1Fpxbh+MBiCkl0ZN35 n+bwxVHebPy80nzDN9b5tZ39ArToAwcAUHNDSpHjUYqkFr+TYMsf6Q1d5rePZYo4+Jp4BmZwv/A4 qz6z0jTbTTF0yC3VbFUMfoH4lKt9rlWteVd64qwa8/KGNbpp9I1SWxVq/uipYgHegdWQ0+f34qjN A/KrTdPvlv8AUbp9SuEbmquvCPn15MCXLGvicVZzXFXVxV1cVdXFXVxV1cVSzzKf9wlz/sP+Ti4q Fvls/wC4W3/2f/JxsVKZ8sUO5Yq7liruWKu5Yq7liruWKu5YqlvmHRLbXNKl024keOKUqWeOnIcG DDqCO2KrfLmg22g6Yun20jyxK7OHkpyqxqfsgDFU05Yq7liruWKu5Yq7liruWKu5Yq7liruWKu5Y q7liruWKu5Yq7liruWKu5Yq7liruWKu5Yq7liqWeZD/uFuP9h/ycXFIWeXT/ALhrf/Z/8TbFSmVc UOrirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq 4q6uKurirq4q6uKurirq4qlvmI/7hrj/AGH/ABNcUhfPDL5clk0/UI3jt43Y2l0FZo5I2Ykbivxb 7jFVP/EWj/8ALR/wj/8ANOK07/EWj/8ALR/wj/8ANOK07/EWj/8ALR/wj/8ANOK07/EWj/8ALR/w j/8ANOK07/EWj/8ALR/wj/8ANOK07/EWj/8ALR/wj/8ANOK07/EWj/8ALR/wj/8ANOK07/EWj/8A LR/wj/8ANOK07/EWj/8ALR/wj/8ANOK07/EWj/8ALR/wj/8ANOK07/EWj/8ALR/wj/8ANOK07/EW j/8ALR/wj/8ANOK07/EWj/8ALR/wj/8ANOK07/EWj/8ALR/wj/8ANOK07/EWj/8ALR/wj/8ANOK0 7/EWj/8ALR/wj/8ANOK07/EWj/8ALR/wj/8ANOK07/EWj/8ALR/wj/8ANOK07/EWj/8ALR/wj/8A NOK07/EWj/8ALR/wj/8ANOK07/EWj/8ALR/wj/8ANOK07/EWj/8ALR/wj/8ANOK07/EWj/8ALR/w j/8ANOK07/EWj/8ALR/wj/8ANOK07/EWj/8ALR/wj/8ANOK07/EWj/8ALR/wj/8ANOK07/EWj/8A LR/wj/8ANOK07/EWj/8ALR/wj/8ANOK07/EWj/8ALR/wj/8ANOK07/EWj/8ALR/wj/8ANOK0qQQS +Y5Y9P0+N5LeR1N3dlWWOONWqdzT4tthir//2Q== xmp.iid:EE54BBA5A93CE8118CF18FFF7A1AF52E xmp.did:EE54BBA5A93CE8118CF18FFF7A1AF52E uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf uuid:1e9fe3cf-bac1-48ac-8341-771a4bda1c27 xmp.did:0980117407206811822A897E387FE54C uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf saved xmp.iid:EE54BBA5A93CE8118CF18FFF7A1AF52E 2018-04-10T15:56:36+05:30 Adobe Illustrator CS6 (Windows) / Print False True 1 10.000079 10.000079 Millimeters Cyan Magenta Yellow Black Default Swatch Group 0 White RGB PROCESS 255 255 255 Black RGB PROCESS 18 18 17 CMYK Red RGB PROCESS 175 19 26 CMYK Yellow RGB PROCESS 250 239 17 CMYK Green RGB PROCESS 34 132 51 CMYK Cyan RGB PROCESS 10 135 215 CMYK Blue RGB PROCESS 37 18 108 CMYK Magenta RGB PROCESS 178 0 106 C=15 M=100 Y=90 K=10 RGB PROCESS 141 23 30 C=0 M=90 Y=85 K=0 RGB PROCESS 180 44 39 C=0 M=80 Y=95 K=0 RGB PROCESS 185 65 32 C=0 M=50 Y=100 K=0 RGB PROCESS 206 132 28 C=0 M=35 Y=85 K=0 RGB PROCESS 220 167 54 C=5 M=0 Y=90 K=0 RGB PROCESS 240 234 47 C=20 M=0 Y=100 K=0 RGB PROCESS 209 216 27 C=50 M=0 Y=100 K=0 RGB PROCESS 144 183 39 C=75 M=0 Y=100 K=0 RGB PROCESS 88 155 46 C=85 M=10 Y=100 K=10 RGB PROCESS 60 124 44 C=90 M=30 Y=95 K=30 RGB PROCESS 40 83 39 C=75 M=0 Y=75 K=0 RGB PROCESS 87 157 85 C=80 M=10 Y=45 K=0 RGB PROCESS 73 143 135 C=70 M=15 Y=0 K=0 RGB PROCESS 95 148 213 C=85 M=50 Y=0 K=0 RGB PROCESS 58 88 165 C=100 M=95 Y=5 K=0 RGB PROCESS 36 26 108 C=100 M=100 Y=25 K=25 RGB PROCESS 29 20 71 C=75 M=100 Y=0 K=0 RGB PROCESS 70 17 108 C=50 M=100 Y=0 K=0 RGB PROCESS 106 12 107 C=35 M=100 Y=35 K=10 RGB PROCESS 117 19 73 C=10 M=100 Y=50 K=0 RGB PROCESS 163 16 66 C=0 M=95 Y=20 K=0 RGB PROCESS 180 24 96 C=25 M=25 Y=40 K=0 RGB PROCESS 184 174 144 C=40 M=45 Y=50 K=5 RGB PROCESS 137 119 104 C=50 M=50 Y=60 K=25 RGB PROCESS 96 86 71 C=55 M=60 Y=65 K=40 RGB PROCESS 72 60 51 C=25 M=40 Y=65 K=0 RGB PROCESS 172 142 88 C=30 M=50 Y=75 K=10 RGB PROCESS 144 109 62 C=35 M=60 Y=80 K=25 RGB PROCESS 112 77 44 C=40 M=65 Y=90 K=35 RGB PROCESS 92 62 30 C=40 M=70 Y=100 K=50 RGB PROCESS 73 46 15 C=50 M=70 Y=80 K=70 RGB PROCESS 44 30 18 Grays 1 C=0 M=0 Y=0 K=100 RGB PROCESS 18 18 17 C=0 M=0 Y=0 K=90 RGB PROCESS 44 44 43 C=0 M=0 Y=0 K=80 RGB PROCESS 68 68 67 C=0 M=0 Y=0 K=70 RGB PROCESS 91 91 91 C=0 M=0 Y=0 K=60 RGB PROCESS 115 116 115 C=0 M=0 Y=0 K=50 RGB PROCESS 138 139 139 C=0 M=0 Y=0 K=40 RGB PROCESS 162 163 163 C=0 M=0 Y=0 K=30 RGB PROCESS 185 186 186 C=0 M=0 Y=0 K=20 RGB PROCESS 209 209 209 C=0 M=0 Y=0 K=10 RGB PROCESS 232 232 232 C=0 M=0 Y=0 K=5 RGB PROCESS 243 243 243 Brights 1 C=0 M=100 Y=100 K=0 RGB PROCESS 175 19 26 C=0 M=75 Y=100 K=0 RGB PROCESS 188 76 27 C=0 M=10 Y=95 K=0 RGB PROCESS 241 219 36 C=85 M=10 Y=100 K=0 RGB PROCESS 65 135 47 C=100 M=90 Y=0 K=0 RGB PROCESS 36 31 116 C=60 M=90 Y=0 K=0 RGB PROCESS 94 35 118 Adobe PDF library 10.01 endstream endobj 758 0 obj <> endobj 759 0 obj <> endobj 760 0 obj <> endobj 761 0 obj <> endobj 762 0 obj <> endobj 763 0 obj <> endobj 764 0 obj <> endobj 765 0 obj <> endobj 766 0 obj <> endobj 767 0 obj <> endobj 768 0 obj <> endobj 769 0 obj <> endobj 770 0 obj <> endobj 771 0 obj <> endobj 772 0 obj <> endobj 773 0 obj <> endobj 774 0 obj <> endobj 775 0 obj <> endobj 776 0 obj <> endobj 777 0 obj <> endobj 778 0 obj <> endobj 779 0 obj <> endobj 780 0 obj <> endobj 781 0 obj <> endobj 782 0 obj <> endobj 783 0 obj <> endobj 784 0 obj <> endobj 785 0 obj <> endobj 786 0 obj <> endobj 1 0 obj <> endobj 2 0 obj <> endobj 3 0 obj <> endobj 4 0 obj <> endobj 5 0 obj <> endobj 6 0 obj <> endobj 7 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <> endobj 11 0 obj <> endobj 12 0 obj <> endobj 13 0 obj <> endobj 14 0 obj <> endobj 15 0 obj <> endobj 16 0 obj <> endobj 17 0 obj <> endobj 18 0 obj <> endobj 19 0 obj <> endobj 20 0 obj <> endobj 21 0 obj <> endobj 22 0 obj <> endobj 23 0 obj <> endobj 24 0 obj <> endobj 25 0 obj <>stream hÞ´[Û’ãÆ‘}Ÿ¯èG€Ž!uü&dYIë˜ép„cÆhÝ„$¸¸t«ýIûQú–Í“Y‚}ùa7¤ˆÀºfež<™Y½)¯6ü÷æÝÕÕÝðÆ™M‘ë+_øsêJåa㬿rùƺpÕ×onßäWøúÈÇÞ¨«¿^©«ÑËõ¸úùêÓ?ó«}n®Þ8[nJ­æׯoh^§rí0ä·|óíõ›w¶4Èõí›bSzoxìø¨JµÑ…*®‚É7EaË«ëÛM®h”ë--ãúáͧì}wܶÓÐt«µÝøì¸R› Zýóú¯4¶’±íÎZùú;@c€OÙOÓjm6%uâîèë©û¶Z­ÝÆdÇ-ý›Õ=¾jðÓwï¯é٩͆-}¦½eu»7O‡iVkE£ ©ûv…×NZÑ×ÊÆu)noëíØÜˬµôw©ÿQ¦ôY•ÞÇ å÷»ý:.¥¾  9I“.þ7ÚJjlâ*Žt(i%×ûše¶Ž²¢†ZçËEZÝil a &#ÐÖ›#¶kÔ¦ õ±êydSÐ{3È/6ÛÕ§ú¸«#ÿ”uGùDSÿº‰'åå¤r™Ø{LœýÏêú_çST¥t!§ø)Ó¹Îiíi*,ž†ÌiÈo¦qßõö¥ Íý·é¦m†}½Ã‡@»y”^6û¾êû†W—4ÊO㎻ÔêzÏ˧F6¢]VSÏîćN-éT¶ÛzˆmmVõc³mk~Í&ÚtÝd#¯‘ºèìý{uÜÐBÔŸ²oÿXªmH oÌÑëçŒ;m µ±W®H“¯¾nk]ŠP²ý8žþôî ñ}½í‡î8lºþî]mxwóøÎnòwìlÒªØç¢dŸW‘»¹“%{í¹m|d¸PþÊ›@³†ù)S^zöãqì»Ý´¥ã†Ú7tÞÖHg¬7ÖúRvüÓ²AÓl!ã@RÝBp6äè?à ÂeÚàI„‡nñ Am;¨‘a³¤žö#~3¤Ö»¦º;v"Î~'ó̃°,Ѹ<²šêHJSRkž®¤-ª¬­«™‹-i—Ûj’¥ÜŠÕâ–Ÿžì#8²j$»-­¡ï€ é2F³»þ#ÍýKM¯}KKÀ–shק׽̕Šç¥.Îrãò|6’âHJÂÓh"%„Ó6·c׿žz*Ïq Û(£¬ó%>ÖÌ~„\ˌ͈qÙ;/¡˜78h;¹*/¥© £ÕfuÕÓ˜Þ«l ùDŠ Èå ˆÛŽEûººÄ  ‡î ¤XÐCj<î!aò´ÒEÇcw\Ÿ¥ygN–òš”×z£m"]Dj–ž|œÒñ—`ñÓšš—¥s—«  wY_“Os°à2â6X»’‘¡¡"ß#!l«¶“ÊCiA¤D:ÿaHCó+!D™lVÅêvÄŽ ê¦ê¶9‚¬‘U+¶MAĪǒÐ*ÉÔÐøt>Ž4Ìá(æŠS¢UN†-Ö‘ª/¦Žã88µí^œ›«cHìÉ-‘à?”¯ƒ›¿ ÝìוÜO7¢æxôÙwӸݯź¿­Û»¦éÑ@gªˆ¹Ð¯.pq‚»îÐü »‹ì¶ßãÐf/È×륕„#¾°’àœd'ßÿÍäãýB–2 nÛ묔,U<Áá›úXÿ6ò‹fW åÇ~|Æ&‡óÉãÑÊóä òTï<)+ß[Øb:@˜ÉþF‚õ:Ùm µò…o0¥aJà ‹ždêðÄ……l’Ú›NZ<›ù 4Ú’B{ÆY&?@Rñè„Õ„<§5óRÛ‡Ž[‡+a (gÆ…J@âëã‰Ô“¼ún"ãðÂŽy l2b,žè­J„Ð.N£-èU·æÐŠ¡FÆ%G¶ ëüÇÚÅ–ðÃÏx¡å€¥ám×ÂÙòi’ƒâ¬¯Y‹ÝñIÜÊýŽKЊƒ…Z&ý~ê)4¨¢÷Jºd!tžexB‘†Fœ¡!¯ á´Æú ¡Rßœ~J¬B—åRsr ÑS(‘ï†TÎUa€ –åҗвÅÊhñ‰ß‘‹ÇZñ>ØH_ãñŠ“ÕÇæ‰WД¤:‡S[Ë”PÞ±’ÍÑ~>EÒöH.WïÌëÔ—Cõ{§·B^YO$þ—èˆlÀn ɶVp€ú[h^ÝØˆ2¶->ÁÕíê› üµ0O°=|W"†B—s¤œ‚¼Ò½j2¦SïiÄ;Ø|¯m1Ziÿ3ªbdùÅ€1h¡O¾dÚÀÇ|Z¯ e?O-Å­ôJXIg0öÍV~ÒÙJQIh>×ÈÓ0ùòvÆvë¡)ßÕcœ9R=ëœ4.pœ^fZãÙT½ñ殹½¥s`Ï`y•#KžÈžýúú%JÎ^ùŒ6ÀXX0%qÅXˆXlóN‘·oêãQüœÊ¸øÞs=•!›#…2»¯Ú%€œ<‚[—p3MžqpO¯žy ½qæþ+g÷Ã1ªS˘8D·Çù7ñ0/G¤¿?à»Ç–ȼ÷xÜDÎ ª/¥|”TþE?),üH1Gœ¼¦Ç|§Ó§—.¡ò4ÂHÃM=Ì š³ÿ¹GÔyÇ'@O½{›æä àQ]†ÎsrJ«9õô°Tà€¦&`'GíA$úú¿§&‹õÀ­1uZØ<ÏÓ¥‘rKë3ÿ†æQŽ=û®n×7Q‰J²3ÊÖÈ]ÐKÚ¢µÉjÒ¢I¢)éújcn!äàfÉDÆWñ%Rc“/©±1KܱF?Fƒ}Ów²Á|£ñ»ûfWsw’j…‚SèkZÂú&"– 䈌É0îS׊í6ÛÇCõ…cS¤¨Ò8ïÛjÛ 3´š"ψq×[áf£`e𛘅cƒ\ÂìSR2ªe|WEápiNxIg6©Ùß(Þmºi„Só\èÖ9^§ˆÑISŒsØçikæ¬ ‚òéÝ0®ë[äf&Ò:ðpœÞZìáÂa/Ùï¶vL±JqH˜ÐÀ…˜“($¿½ÌOyâ¥úƒñ¼0·õ%>2¢%£+-õTü¬¹ÿ#  Ÿë˜AvG$¾EŒ(-:Ù¶~ ?§”Ñ:D}²e8CàÒ¥—Èø1Ç!ÏÄ6a<-9Gþ˜ì¬þ5ÁL qÏ3äÍM»À©È<ˆ\D}³¾x™NxDWŸ³aBoŠJê ßLt àéfjF‘)™·¥²à±Å¾ZàÕ®‰a RdiÍð"ðä~_Q+bn:þϵŠ©Ú^ò-q'_ œã7¥¡ÙI2™ÁæœÝØr9Äçeв€F¹+.O½9&`Bt<}u¢³ <ÊëÁV™JnYñj°õ¿<ë¼!~¬þ3£ xÇÑx$/ßxiÂ{ Еa¹AŒ/.{¨†DW•O˜uäüÙsY²µœ¸†zä[$ϾPœát†´ÀÓÎÎX|('x {=§áipkK5»][šsщMÊ¿¤î…œÏ8™Tdàý Y7Ý7w{Š5t˜W€µtæ žÉ©ˆ¶ÝITàÒ/AÕ:h¬®»—ȧî)^Z.%¨Ò2Aƒ»3(qgÈLC&|2 }JüèE&¶€»Tì5s!Â-§}Ìbqýþ\ûn'à4Ä>zY<\ô‘ª#¢ËŸ%æh¶=ÁÁ7c²©¶n˜þ3u{©©ËXŽœ“9DÉÖeÑp“8ø4šUÁ‹„£ª[ù²ÔâôÝœú9V)wç¶ç?T/‘iÆ)ñJÆ©òs²~¹Ês^ÈAáÙTÃu³Ï´¼Ÿ?ðÒ(ný¸ewÊypXQÌÇLCÌ=«ŒÎ“9oÄÏ€–îªW©\`T†gp>*cð= ]EÀ~0€ë@}{P±|-ç 8¦sÎQØõ üœëmR¬· f"L/`‚ûJ–ÌåTÖÓ5²^R)Bò/¨áßNÈñ(N$¢üüÍe,»¨MC-g´ŸFŒoµå„5Š’¦pAæCa¹hg”gA¡9±-P£9$‡¤Ð—‚æ¾®0¨vÅYV¯Ê'Ý;¡ Âøf‡R¶\Xûi+F:rMÌ ØäjäfɅήýHVƒ˜f\!î?ˆìú–) _ŽÑ%òÃ0dÊS„“Cö„ KH%å0OÔ%¼þu¬Ãìê#í~L£îjB#V{sNw’{û=¥òË›’gFÙUîÑäæ\xÅ ­m_Ç öó’× Ç[ãE*YD✛ÙIöY?+ÁY.ÍHUA €³Š¹}7¸ñûî8Ä Ô‹)ÅÿžRmlA} ßðiNV¤¸àƒü<75B¶X0ÍåE¸o.j¹3Aîu9;j»ãÝ…AOý}ô÷R8„¯èâ7ž!Wñ2†ËËd¨±Àx¨Ú6•0 w¦C71º8ÐLPtjÓü›Û\FgæŽd@Kôb ²›ê¦‰%U.ñs‘Å™0gø²ŒíãWð›t‰3LH‡T ¦ÉŸXƒê‘Ð Pòe6|gùŒË g¥äÜ[DŠëý4¼ÅËœˆ×%ªLr×E%nºÈ&pß…oºPOÁVN€,:1_Š®W¼´.%/¹HïÊ…³—2ñ{=Æ´•ñé6ó&°66âEÃ*M×ä‘ìá«>ÏóµÂæ?Ò°zãã­8Ç–÷U.ãØÓ]à:4Ü‚p©HJÎÄÌ) Ö1ï9°k†…u=jÎ%㧺B'QsÜ5÷ˆq8%Ê‘((Jsº$f²9a5G>]8#À¹‚gõPbFCC„|a0Çc¡Ð(¾$‰l§áœòt›V^LºÀb”J·;Õ¹l¢·)°—Œ§V©ÌŠAã>T¾¸âõ”NÝDn" ”‘X§ˆD(ÂKÐ (ËGd¸8~/ &¢‘‹L-5‚v”ê‰k¤š…˜§¹QX]‘sh'•6†ÇRXp²ÐI‘rœéUḄB@1È@©XèxsÍAôm¦â–Ó 9&NH®Æ>·¨²äJ$!ýtwÙ‡úPõ_ O“Õ‹2ç\ã꣉‘ŠQ yäráfcY2,œj¢ ŠrÀq»„ÔÔŠ¥›ÆöÒÍ ¸. G]q¥ÉEÅS‰9t@(÷Û¯µü ÌŸ¼,ëSºEË•ð ø*ƒ\ñÒ’'Š+@¬ä"C1ßïxñŠ(LwdÌ9yòQ^:‘!Q’³ÄŸÈ­\‹ …d¢©,`ÐTö°8&•稃üA€x™NŠ´#¾™*í˜y ì¸6ÐVýD‡¯˜ºÌ!ØÀa¨ï!Åâò8CZ½€éb)ÂqbE„T]%Šû% ûùl¼³.kò|$Œ ›<·sòEÏÉÎ{0d#F®ÄE“6r­ô+™·Œ—!aßÖ?¬à)v+p[Ø=ÚŠS OüS+/Q ”Üö" þ\ãV]Û¶Û§|ýŒ äš5¿ßòê3µ‚¦çùÛ<ÏÓ©žøxf‘´PÊ>&×Y¾B8ƒKJÔŸ¬Ç·\(§ÃŒ`H(Y^¹h)ëî$îS!¶íV 1BÒ~’ð ÊŠ¿‘?o‘ˆmäIöÜ4ø×_d˜zÅFûã:7$v3q SÑìðw4VöɼJ¾Žìyl.Ôö+'”ߨ‚ªÿ‰ly"[òetkV'f_lL+âA‰Šqkhœ„~ƒ?fB\txR‹ˆ®LIÖÅo]œ”O}X™8¬·–½éõ$íë¸ ¨^qÖg–C^¦óÎq¡)rs¨ùª-‡#+Śſ)ÚÏ?ÈUi¶si!ÕZÃÜW>¬J9)osDÕǨäï*ú]±î{¾ÉdzuÜÙiË¡¡ŒT?sot~¼îÈóÙj ÍkZŽƒ‘Åðš:úó‚„¶†¹ÍïUûP=ÎogÏŸœ° ëþ •}á %' Áx®ñEKÂR±B®žã/¥HxdÞ¬È<àº4rF|hþ\aÅË=5%µâü}úûœŽ_o寃ÒåPcµbcGÊ™ ~,[âN”Œï«NhOí9ßòܶVV²À×®Ñè‹Ü<ÄýJÅdFPév&=œV€•>ÞÕf=ã1ÿ @Ì×Ë·CL Dà ñ{þ^G]Ý£µC’,°¨‡ÒH²Ž›~‰Õ*ÞÅU'¬9M·°÷¤/»ú7.Ëân…g}æ,ˆõQ;ãŸåL}_ϧËW) Z-7¹øóQ°z…U÷iQ®}—nñÝsn_Ïçå„@Lªa~Ñ´v:Í‹º rÍ®.>*ܧ͵¹ ŽLÖüç…ñoÝþ±…)³ï& ÀIèC«v#EöN~ éê'ÿY¶øWb;Gùk¹<¥Rùjáûô!\GVƱëÉ>ó´qBžï”*­ž^¨w¸Pï.+z®4ڙĔEȵ%EsU^i&9ß_¿ù_^ƒ@ endstream endobj 26 0 obj <> endobj 27 0 obj <> endobj 28 0 obj <> endobj 29 0 obj <> endobj 30 0 obj <> endobj 31 0 obj <> endobj 32 0 obj <> endobj 33 0 obj <> endobj 34 0 obj <> endobj 35 0 obj <> endobj 36 0 obj <> endobj 37 0 obj <> endobj 38 0 obj <> endobj 39 0 obj <> endobj 40 0 obj <> endobj 41 0 obj <> endobj 42 0 obj <> endobj 43 0 obj <> endobj 44 0 obj <> endobj 45 0 obj <> endobj 46 0 obj <> endobj 47 0 obj <> endobj 48 0 obj <> endobj 49 0 obj <> endobj 50 0 obj <> endobj 51 0 obj <> endobj 52 0 obj <> endobj 53 0 obj <> endobj 54 0 obj <> endobj 55 0 obj <> endobj 56 0 obj <> endobj 57 0 obj <> endobj 58 0 obj <> endobj 59 0 obj <> endobj 60 0 obj <> endobj 61 0 obj <> endobj 62 0 obj <> endobj 63 0 obj <> endobj 64 0 obj <> endobj 65 0 obj <> endobj 66 0 obj <> endobj 67 0 obj <> endobj 68 0 obj <> endobj 69 0 obj <> endobj 70 0 obj <> endobj 71 0 obj <> endobj 72 0 obj <>stream hÞÌ[M“ÛHr ‡}ê_Á‹"À‰&„úãÓ¨gƚЬ×êŽÙX·t€Ht +’  ²5òïܽîoq¾Ì*àGwKÞp8tAƒ…¬ª¬Ì—/3K/¾V£ûî⇛‹—?©‘ÝÜ]”iéµeô/_Ü&Óæ¾Z×›MÝ'Æ©Ô$«q™ê¤OÊdßͪ/xÌR•Tã‰NËd:my )Ó"™ñÍxBs'Ëû8xÓâÉ%›Q¨ñІ_S›l7Óòó«z¹YWsü¡S—ü@S$ÛÉøýÍ/´Ì‰Ju–壛+^|ŽÅß&ëºÚÒx[´öOŽVu½©6M·i¦¼QÉ-KI ?Jí(Uù(ÍÔèÓE‘f´3R‰HõReÆ7ÙéJÑX]ÆAÊÊ ÷)½üI‹þiû™-F“ÚÒbd& Ô©Ii&§eý±ZW Ú|AÊÙÔë.¾ç…“zRtc3RË¢Õs^uƤZ]–›¼^’‚hl)Ÿi‹éšÅv^mp*iÚå%ý`JM#<ýþP¯¿àU‘4ËYó@G¥pB³-ô.">WΓªë¶‹ñ$'íÖ3y©ù4µUôó¬áy 퇦<:§[X‰qØØj]Ïê ï]%ëEƒ,!ÊdYm¶rö^c=uµa«ÈIÕ}}‰ç‚¦üü±sñ4ŠWj<ÕU‹ÕœÄa7ßÑÔwë–VnjµÆ“¬éú‘é7ÍC‡,ÚõF6Z͛ͼ–váõºù° ¤Vú]“Ÿ³+U¦ÎˆÅ$ÊZS¦\°&9LXÓ»£ŽÁ@sÍ•ÜTæ5ÆN´JÏõ¾Æ“ku8™Ó…|~›¼“)Zïi oš»zÓ,øôÙ!-«}ÝtŸäÙ$w펔3cã)ÈxæíªYÊ)ÞãWèh¾]ò³¥Ój9­ù» ±œÉ£á#€ª&aI3YÔÕR¼^ã°á–>'€!>éÈ„ªÙ»1ÿ sãAÁöɉé4u ’,o /k'c^Ëç´µ¦ºßƒU:YÒ²íWiƒ•°¾Y½f›õ`e\J,F’`YM™a …xbÉÞ*.ˆ‡Dm™Ò6—ÓfrÊ‹f5 ƒ£aZ>M{#ˆ¨æü:‡Ú–쟎^ßÕ‹J U~.“uõðE¨¤[´Ÿ0)?§x ]߄റŽoÒ'˜¸w)Ѫ¥ÙÂ&X¦8»¢U:œE+J÷qf9ªÁÌxI`´k¡€UÇzâÂBÛ›¯AfÖ%ÖÕ§Kxöá²éuÁZ¥§"§Ã”ä/ïë°æš1G— Õ®¶s|O¸·a‡àâœk:AÛèåß&ï! ›Å)±ïº(‡ç,Æ“9Š}Çk1vSm6ˆD èOÃîÖÕ”Í&a¼Å[X ˜xfŠfÜ^3™m÷ t÷Š]¶ý€ihÕˆòü2ç3dÔÈI³÷x[ÐrÏÁ`–fÚçQEþ<’ðü ÔÚ¸= ¼ H8ñþZÏ Ò锳´òy:1ÇQÓ+Ÿ:Q·×°ç¿n¶‹V¨Ž€”wòÃã¹_·Ÿa5°È¨#ŠÒÛyý7ÖˆK.ñZÁ¬˜(޾˜oµÌK,ªÝ~g»§B/¯·áh"Ÿ­?9¶N7„?]ÂŽƒëP8!©bº®'%€pE“6Ó>òEó–Éà*>ù·zÙM?~ªë̦Zîl¹ÞD'ªæéŸLâÐ’eœ:ÍTçFE³Èó”‹ðäÈþêùÝTbºwOä­PŒ0D~þ[†!H/&kgiÀ_ésñ‘($œƒÈ0$-žhVäáùÐ °H¶¬Ò‡e˜R÷,޾Z …•ÚL4m œÐÛ*°ªfòG" ItŒŽ•‹Ë„©?‡›ùždO(QBÌMŒÂtR6ËÂðùÐÔm×ÍCÕ‘MbØþ*ðYW±Ëæû2gÄ¢¬+³$pÐ ÍQèÜÁ|C7ÌÇf[i$˜ØƒÏ'¶ÂÁ÷`–ÎÚf¸Ÿi»ìâ~6Œy ”ÅùæEÈ(ÂËŠ²Zq÷ ì¬íj•'«;xˆ…ÓtIÇÌì# ›[Ý›‚~ÜdÆ}Ž—SÒy‚ãiʪòliJSå"Áå¼kH­µÏD­¢?(—Ö/˜þI!¬D4‹šk¢0š®"àOžoüJ?…%ÈüŸDǵü'[6^Ï´³’—&ù¸‹Õœ“˜fIPò¦íNèJ<7øu]V&¯ÚnÓ÷‚u=¯ØZ\–1…%ÿ/!špª®—M jËûKü€ÂÀ%¿&ð`‹³œNHîJHBM™g Ö‹z¹‰#pf"¼giÃ2à‚GT¬Åÿó„ù46ÜQʲæõ’åF ŠjÛ:€Šd1‚4õvÝÊó£V›i­ÖH¡JeÂÒö1©ÃoòSš;Õv>¡ µ¯‰&7§ÅOàªÞTÍ@¦uðW§ýM[”Rœ)‚"W…Ä–)&È©1ým–gÒ CNíïz»Z!\"¿Æ¹Të/ÈI*rE_ý€µ*Äý«è“ÞO‰Á¹CøÙ.7ì=¶Tñ° ¤=öž®H‘¦l–ôìEL‡)’JÝ‹ø: Ç9SZ<Å$r›“ïÜÝÕòbì›yлä͟Ɖ Œ¥¦Qî—½ªÕ*$ÔÒPÓ |MÔÚ®gTaMC–å*Ö\ái÷[‘@–8o–u}>í%´w¶ŒVâ¿ÍJnZ!r´ƒùiþ**×,§'\$Ðb„îILÖ´ ú£KÇ…N|XŸ‰4Òükûç §+ª×/‰µœ:ÌšŽ##òYËobÃÖ¡&fp˜ŽÙ¦§üÐÍ,W¯¢8,Vì€Åwb-XËó4œ?¢áA z¸Ó_ã rÊö†gð¤ÏCõ\»‚ÑyÃR³\¡Ö =Ì}¨H¿Ð}= ûȽ€V³z _ô¸Ü̥胔îmªOõò°V‹bx¬ qe)$Âÿ™ÈK=Ð0ã’¬ñ®Û.âÑdÝ®\mŒè<&tÌ=ÜõÜ6ä5J¼·CÕ꽜Wåž+ÿ‘F'ØWýIÍÍLR2©ÍÔf¾±ìϤ‹"ЉÞJìµe_+´\xY"®`9|(_¹½X)n„réüTYòˆ¡I ˜E‘õäflŽ=†J ÆX©2+.’|In&ßúÄeQ 1lQ,½*nÝ&¹ƒ ,êK]­»Ëò¥O‡ o×,šy%ð MYnVOiåP@±µqVwµŸqXSêv4ø?Jóæúßÿ€wŽÒí û·ØÝó<¿x [¼ ?¿ýùB~!eü…þø<"ý:º}Ÿfôº]ü×Hñ0š‚#«)C¢¼sºà÷‹ 0Vá<>NRJÜæ8syøá»‹ÿ¸pȽs;¢4߯ÒðuQ»É´!UÐÆ¬¢}Yµ›m¢ bAÖó|ýq½ùöòKéï±,MY…s¥ÈŠ<*+îâĺ´¥œ½ë œõÃÍE}_hþ0<Ɔ«%ð29Ú­;T1¨¢ª&;ãÃcÿ¡¦KJ7øÓׂ½´ÆÞ€ºcÅÕ I´„ŒõN.fD¦Ýüú¶¹žÊŸJP%Ý91Å㾉xr–‰ò&Ìràà‘=½­ïˆ¯Æ®ÀËŸLQHvÊB„¢»$2)òýOLy¾=‰¸·ã!3ÅV¯DZB„h¹Y&¥râ‡lþïÄ·‰íÃAq©i »„7œ#åö|SªÞïviYºžD¾¿ô¦$3ò\csž‹2Ž< ? 2%³ku¨Ä0ã„°µ$‰pße&(õw.¥gi´ £Ð2Á…IË v€|™¬§Ì¿¢ï¡´áæîŸÚÿ™•¹y„ uãþtsPÎß©„—vvÚ~ºäÚb÷éRL¨¦bPFÐE<‡õ&ÿ4°…~AŸÚ^_AM¼„h¶>Ci„/‹ü‚(êP8* ¢IRv(É ¯aÎHÊJYÂÓiD2Š}wÀ¹r)CÃÆ¥b¤Ü䲂c¥-ñ…)Ÿ«•LçHO”å«,®6”ã&&q“âØF(\ÏRm?Úq ó­6BL4äúQN˛мͤÂ$5ps‹2™~PR“åýU†³£Ìœnæìáƒ$+Jž(!³C?þíêF¢€¦3šU_âA!÷5ÁÔfÝLÅÉm¸, 2"ÛÐW±GMû-’ÀËWæíýd³®–±á§ÉÊF~Ù—ç‚O,ÊèJ,èiÇ¥Ðo”o(${É]ËC‰YYاE’ *É®=­Aq¨ 2–Í^g–oR¡Šy"`ïùÉ^W­s¢²ôÖ¡!ö¿4‹â+ÌâÔªê±B?“¤*”ó7tšr•ÃäìÞ‹E0”Ìv‡ûÄyÓ†½}ÛW/@‡ú}ÞÂ.åe¾o‚c…Lg½EˆãeÝž³ÊÀìN#xfMþlC$s(ŒÛ߯I3“Z¢+½yŽ%f*¨Šö¯K7d-ǦèÕ£¦xB ò 7>¦+CÂ3$æèŽýöq®CGÆalqZž=,ä;ç½<í>³> û©¹O#M¾>(9-r«žïaåã¶‹ '8tEŒêÛsÒ˜Ó.6·h™}?kóå¨B18B¦Cew'N¹²D½ø^~wÁ_BGŽÆKÃñæZò¯DOÓã¥B }CX¥î»  Ÿ'kä=ïÆßI= 'šýºU†«r‡çˆHúx8ÿ|>"÷»“as6Í(zro)ͯ媋[Œãb¤õAVY8¿¿üp)f°‡Cå†I<¥Qµÿò Óã'ÛÜù¹t˜Ÿ¶Òƒfê#q€| tÿØžv&H2Ž×fîÙL.Ã%bbr:^óZoŠâyt?÷/í”3Õy(”þt¯õ™žû$^†ök»üÚ„PÊe1ìíOu%}UÍJâ.вñxÐâ=UƒÜcqý±W7ȈŠ]·–ŒG±5Íh &³(H*¤ëô‡sç[(Å[çOweŸI9ü}Zw]\· %³6:4fŸÚ¾º®ŽhTœ{E.Œ‹Î}rýp6¨×¿¯Z a|‘Y£{Âb “Œ=Í'‹F”žâb =PRZÊn}„G$Òv?Â¥ÓßD5aÔ”ÜÄü÷†¾1?$Ç’œ}äê4ºqNŸn@?Ç9v¨ÄÍâÁr TÒ –3öû§Ê6-[v'œ(ùí‘«ÜsãÞ–çÿÒôŒ÷Ûµ_kÎWèb‡+˵û=ÿ\‘i£mý­[(‘«kç¾bö[èþ ÚìÒ`˜„þ*Íö×¹4ˆþëƒÖA¶³ú\g ßÈëׯÅcýîlOê† Úêžà>¦“_–YÉ óÿ7ÚùM¾øÚ€ó—ÎùÜ>/Ÿf Ç×ÌPI”•\Ñ-”CA6a"ÆY_Äïþó`ƒÚõ÷ƒZ¹ «˜"_Е›3|k%Æï¹Û)ˆ¬/ÌAä²ô±ŒùØ$óöódÖvcîzÕÒwÕÜÈÞŽ•‘îáØ,ÚûuµÈ“_¾?¼Lîûsÿôäd"ËYµ†D“ðDøor#è{Ù¹FÈ>œ€x…éóG&X4óyÓ55÷ ˃Ä6ÄP&ùkîÜS"éc)x·K9ðœ¢G^qïWn—2'ñB18¸¾íï:&ü6„t\¦ Md0ža¿w„è€pE(ÞƒÆ}ì½/b&¶°2ÿŸ¹Í‹NFôE¾Âkêâ~tXÏËØÝþq»nW¡X‹’ä/ív½äû«¢]käUX™wÈ4•q’½# ­3¾ ÂQKiu†4ÆAŸ4ÞÈ­ï+ùºj>l/þjBƒñc/.^ endstream endobj 73 0 obj <> endobj 74 0 obj <> endobj 75 0 obj <> endobj 76 0 obj <> endobj 77 0 obj <> endobj 78 0 obj <> endobj 79 0 obj <> endobj 80 0 obj <> endobj 81 0 obj <> endobj 82 0 obj <> endobj 83 0 obj <> endobj 84 0 obj <> endobj 85 0 obj <> endobj 86 0 obj <> endobj 87 0 obj <> endobj 88 0 obj <> endobj 89 0 obj <> endobj 90 0 obj <>stream hÞ¤[ÛŽÜF’}×Wô‹j¡¢È¼03÷Í#_ÖÁÞµ»0,?°«ØÝ×m‹¬îéùØù–‘É[U{,Õ,2™×'¢>üð¹¼yèÞüåö͇ïË›òæöþMÈC¥ª›‚þÅVç¾(«§‹\U¥º¹Ý½)ø†Ó}¸]ã¿ç7¿e·Í»•Ñ!/³ÝaónåsŸ5[ºdTn³çº“oCöToÛw+G_oê¾ÙÈ>»{Á žnXÞ­*º²;Ö§v•Bö¾ìù5ôD™uíî¼­ûw+¼“úýö¯´™U™«¢p7·ßÒ¦ç~}Ø5ônímî²/Ùþ¼»kNøÛж÷ôÉù\gÝúÔ4ûÕ»UYÐj›¦oÖXëÒ=»=ïð9ä&[×{¡ÊÖ͉/i¿õ^öpûoôævß7':*}YÚ\¥§KÚžŽÏÑW&;ò~è½&+‹¢ÏiGü~ºÍÓŠ›ö©Ýœãëm÷^n­æoîÚ@DÎàmןڻ3 )díaoðRœÜTá_œÜ8MR’½’ÂdïžnþòN1ÙsÛ?Ž[%)’ï]GRà•´&’Æk|.³ûÓa‡{F’¹ìŸ§®ÇeGŸq*þh³®Yø/zRöÛò~mF;^{:œ÷Úš r>TZ]yO»üé;ì»Ê>}þù'|”JÐiähø«¢{ãkäkÈŸYËã[¬‡þÆïÎ}u“››¼t7yQÞüñF©ÜXÈGÈ3åßÝþmô™2/ŠÒÆï~ïVJÓ•™Û.ž^ÖœÈûÚ5|%àl0IO¶UfŸ¾ýxK/)ä Ë z²FÚ`¢s<´Ø ­ÕýûÄÃGÓ4E …p°ÏrÀ1tä=…Á+z‘¤Éà[E‰èÁßrÌéúÃqxèžX Üq€à{—;ÌÇ|³ßŸñJ[BbŠp"ô]ÛìñX¶oÓ]jØ}\ïAn³C@%2Èsm j˜D|ØKzèÚÍjÜ ig›ò8„ú°§yaz˜£©Gè‚H^Ùý8”t; ä uE1š~&MJ#,´a´a¬ Tf ŽÏÈÖâ%P‘».2+ŽôÈB/8鸖œàc.‰÷ÉîJ¼ZvG᥺¶»Róî M­ ª+Szqö=>"¶ûŸ`üJå`OÞ¦‹/ØÔ{‰ŸUöüØ®Ó"ëÓä@Nв(o˱ђ:9;;`E»[ŸEw§Á—$pSxßíè.J.ÛS– LÀ``‰§æ¡>mØŸÔ3J`bG‚èÔ9îÁÝ??5'Þ Â{\-I.å»"ó£'—ÁŠ#ǘpˆA§²sT,•ðMƒEù½0)¹ÌŠR<`»§Q¨C $<^gŸžè‚8‚`È6·/ùµðòŸÍéžS²Ö0–ºï1?’%,\Gäc(#éâÒ48¤>KFa¨Òuç´›\TÑÐè%Nôˆ«†µ7(ê®îšÕšþC*€®–a4ZMµÃ~5„ýŸ™!RºL2]4zíÉ´º~ÕÜßó²$™uß>ê¾" Šú:;žÚ]}¢T8à ”DØg(è˜=JÈŸµŠ?âc×áv¨cøRB²,!£pÔ¦^?^ÓÖhCÎ Œ‹Û9 …}ó‘ñ‡É~yK€aíž”µK¦´ï&I6 2Àáé{•M$ N/!yU8á—ìG,Žøú P™¶È"P &+z€;º‚Æw‡SŸàMÛ¿à2 EÕóº\býY8õíÔ,è`¿$ð?Aú ¥¿]±gU&7 ÄFà‰§ƒŠ-_Ü‘rðZ €„æ. ©ay ãìBbX7TË,–±Ø1Bˆ1.{lj h[²1€ˆâŠ^6fÃb‚¨Ü®—ðÔ®®ÅC,t¬½âœÆ ÚŸ9’¼ßfk U“rHVA²`ÀMà›µ2Üþ'©Z¼Ãy;냤å8‰œDІ¸ŠíwèìÓ¯? †zÏU”¸.,ßF¥ù"UJË;³ª‹ºìÄ)ãPtî%–5$KëXS0ƒk©Ñé`VðSUvO¡‘BvJKËþƬ9ðM‘‘6žsè)¾C³l_ÆÈ‘Lp‹DFŸákCŠC–‚ jW”Ðî^_HObø0$£,¾gºÌ4¿©PÎ)ðmŠ>ÃŽŽ§æ‰ ‡i6È›T4âˆô¬UáT}Âú Ø‘ŠÆóŽäSŠ™iܾk÷k° caqu&`Š>=GúÜ9–œ·Í&1°sy8ÆoKñfW§=Fþ‚É×y“Ë7âSýW]«¦äúÒãLɉ~¬ 3]x¼oûssÇðü dòbqTË÷§Ã>¦‰¶9ÛPØ÷ Æ­1‹mùô•„+Eñ:Ö¦8ùû+PBœÜ@›?2¾Q‡æ¸‹ÈQ&|#‚99|e\•ÊxÎ5Œlp½’ÐÊÈùòS3†”î˜@æ°lÏ×–¨ ðäß bä¯ÄØ#ý’}UÁ§l"` 9Y¾~-¡ÃÒ]t*ñ”í¿…O‹%žÄÊ›XNËJ!ûßs ô¾Š¹ˆâ!á§­¸ùÛ¹c›ÕiíöžÉ(Õ~bB¾dÿõͧX€ýÊ%ó)µðb:@ù‘9q0¹öáquw> ÷µð„=E"5‹ ¡<¼ÊŸæ®4‘OÌ‹¢²h3d*\ð¨.J‚û¿e¿çmö[lÛ(„ÙAâ’È)€©@´D–’[\ÌÄ!P¶ŠMöƒüÙR0ç=—¤h’ðöEž¦Dv@Œda“JUY-\•3‰BeŽ:F%HùòNNÊ$ï_Á À ’˜å¦WäDN¨L‹†¢‹WyfMz‰da[r*v´kd£Òç¾a’¡ 32ôçT gzòc ˆpà‘÷\¬›`Ër@0¶ò^ÃbAJ)2ºóé)¶„ž§.=Á—eäôY@yõµ Ú¸Àù¤ {ˆ¹×xd‡W$IO›q]þ™ ßKU±Ÿ3@›äú=Ú1†÷Š9"nÁ ,b¥c…êÂb†fÅH‚0,HLÑ||`»^D …jÒÿ¨ AåEœ!O©¬ºgrçtHgþ °•rNˆé/Ä ·‰G¡@Qc~¥±»åÍRXîÏ›—\v8ƒ,Å/ØDŸ=“`£]ôôñQ€m5%uX×BPÆDÍÍ] Žä£‹Î³ ‚“ÕYp(Çü´®ºÂkïán\—²¹ VßTI kååÆNG30פKÎ"t–ÙÐR½}éÚ«%0Yïç}³’=?×/">’kCû”p‡…ûQ¸‰KÆlÞ‰:ft&U"ëútj¥¢ €”¢ÅÉWÄÝüý¸…·_B¤c-ïTï.Ú-sMg8w_ ®¦r ÞªÈ [ËJkAˆï8ZË ¸øLˆ/”™ Œ—¶ÍU†eŸv”0\§Ø*•kÀKÚÓš¥äÂSüO#<ú"º7ÕÃBC :mœ='©³àÊYWø´ WÝp›Áoc}‚C ©ü¸;Fâ~ÇŒº—5™À¯Fz¾‚SÄ.æ$îØ §b¶6L Yø‘ ìŸT¸Tü*dzdž³nf´qÓ ÅK‡Ï&æd@²^T€~ÒqŽuÇs/­GÅn §&UåOžä@µºVkÅxè9*©D–Á‹#qnTt ø}$—…x­=gòEXö³Ù³>»e?Ûy3€ì£”X¾ö†ñÁWƒZö!ͺ’®Í42!°*mR ©4ª¡‰±¡ª±Gé&W!ã-þ敤݉y‰áúÒ;'£’qÅÅV=²ˆþZØ6ÛiXdK%,þ\ÏêJ á±ña*T[¥P¡íc'ÏNZJŠg£.ýÏ™ò ¬¹[S’4a9‹ v]ez™ K¿p câxÓôZ8¹8šÜ ½ÇE®òB/±©ÔMÆ^/‹L1 =aýçÇn™@çRµN3–›¶[ÎÜL5Ð+Èù.r\pK  "þ=ÇaÚC›ö4y®µšŽ¸ J­… Q<”zôÒb>•=Afÿ•åzD~"ócœÁ,Ó{˜( VRÐÚ+µ³ N}í\r Z #*@Ã8Œ¨y®a Åt^Tv9 ujPÅp빿ÌþžÕ¹KÉq=vñ=Ó¤±#ú?p!C‰#ûl.A =ð¯³0%.ÕUŒ3RƒÕlF }u %˜Í`XºM§O¸g¹ƒÙB®F”å‡kÑÎdrSÆ }Éþ‚²Gl,ŽBž³‹Úp‚iƽˆ…ˆ ÂBªB¤,ƒ{ø !%ûÕxB±|ÅrÙŒåQƒ6Í ¸1áFàFy`2–6Q1ÄX¤³\®—ÙÇ„ ÒËùîXÖıB\µW~ô>ÝþU!ÉTöÚ0Uœù¸ã­!áºèÉ„H0ñÅaPD RSU)«Vè’WWrëeèWy°_ø/щŸ ºPتž©â³øEç,€ûUÓ‰Ì=-×…Ò˼dgø—ai\œ­–¦äW ‘éá)Õéá±ÎûعZ]áæJ3ý%S-mŠ4¶Dìêðo–û媽RT+Ÿ†Jþµ1Ó{óÉ›]à­Ì˜UW«_P#…õ $¶(‡Y|Q(~¤¿˜lŸO, Ÿü$cŽz¹ý*þ¬ÙÝu’ˆêqB© L² þ„Ôí Å·Æe ^(}ã(zK€ˆMè×\pw 4 ¿9¡7ö¢ÊTÛ<™ÂùÖeßO‡#ž J0Ù_ç“ bé"þ`ˆÐd£ÁÐ.éùRóï©ÀU¡8ö‘’T™zÅД'@|¥™,w6¹”á¢Á"V¨Ó Ã×_wûæÿNèN~ endstream endobj 91 0 obj <> endobj 92 0 obj <> endobj 93 0 obj <> endobj 94 0 obj <> endobj 95 0 obj <> endobj 96 0 obj <>stream hÞŒZÛnG}çWÌK€Q@Žû~Á,; bÄYìFØ kçaDd&éðbÁ?»ß²§ú2Ý”FŒaÀhÎtWש:U]Õ£߯¡ùæ›o_ýøºaß~{ùúÕì¯oVÍ̘ÎpÕHÇ:Æes?Ó‚u¢z²Ÿpé:­-ž¤EåÁ¯Íföâ‡_xs·‡`¥eg†BñNiÝ ›a¿§I¾]mâ2fÄ…ªý8ìâBÓ®W·=–xüyèw4†}Ú»~µnÂâö}{Ø~|_ɶ߄çêY‘ÇÍ]|Œ]ûÍrB~Ý ýáM³Ð¾ÿ4ìq ‰wïÛëíá°½Ïû¨v{Fm¿^Ó@Côð©_ûq•o÷ËaÓïVÛýÅïWo`­ï„0÷kXívK;Ùéö~ C6Z·‡°å ^ˆöa›f™0k·ºû€i]˜Ø/7›cOš ûån6«€Ôx,XmÃêí£8Óö»!Ln÷¶A®¨à#ÛÝöw6xßæ´ ëNº^ ›Í*îi¾xGKv÷dab°ÎÕ×°Éa·ê7wk"ަ=ÂæÀ(¹.2JËÊ®ažlú‰ËífXŽš¬,è×oÂ2Øe¸ýßj§¹¦½Ým7‡U GØ/è(4ÜÔ®ûëa½&_ÒR“¿ z"`dŒ b8G±¶ÿ½¸ú£D$(-â«wP€œ3¢m{ùHýœÍ}“-¾¨Œ-´†rûC¿;DM᣻át†$K"H¶ àšÙHFç®XB\ÂÖß]¥ÿ÷ÈYo ÆøñÐpÖ¼mÞýΚ›˜ÊþšÆSšh,GØ0tžßÏ”7'¬ópÑiŽ_,.¿F.Ò”µ¬j”5GºZ¤É˜Â„hvM+»9Õy'‘ãëL”Ý .l—Çy»j·"ˆƒRL™ÆX8^Uz/ÀVfd””Æg% nèù„ DŒæIPŸd¡7LøTœl…’Òø¬$)MçÌ”$ vIPž•£(1:;Í0=b£ñyIÖvÌòis{;Zór2]&l„ ²‰Âð¼û9hË'‰d;£T"RŸ—¤ ÀOHR8H¹IÆŽãó’@nkÄ”Nð9OFJãóL²ChO¨d:åR”¤ñyAZt>™Tɹ¢ÏKrˆo;i&ŽÀOñ–ÆçÉ͑慚҉…Ê'êÇç%)ÕñÉl=d¸4>/ÉÂ|ÒN®ó*ç¥8>(ÕãS:áË‘’Æç%)TVVLSÜ»BqŸ—bJ§¦)îE¡8χ/ÐI©¦ù$rÖMã/KO%…t…á„T¾Ï¼VòŽi$¼ïÚ«þš )éá …É,‹KÓp\*°ÔÚ¸òŸÇÃUU@‚*âP2Jê• ‹êZF +UÚ‹·œ±9c,>¿ï£UL,ÂâæÙé·C^@%Ö‡¡ÿô™^X*¾î·»}WjRm+Ê€_’.Th³*`¤L)lƒŒk NLK ¥<8ešì¡„Òþ‰R‚?5P8·ÁË H©›‰wíëÕ~‰š3ÖÎ‚Š¤Ÿ~û¡ªš© 5ÐnX÷ÔDÐ4…Úî°­f)åâ¬Í6ÚÊUu)MC5j4*ÞØ8õçãýu0¢ R±¸(ô ´†ø*k%rÛœ‹òrÜ;´Á›nì"âÞŠòv½÷O¯¢‡àÞíîЯW‡ÏO1òÍÓvC;> ~}DѬ†ÈjVha&Ì "4¹ÿÄ ðG€JVÁ“ÓyªQ®í'Jí• ö'ÚiŸ6┋¾Äò·h†‰]?n÷+rýž¶Eo+¸njŒ¯8èÓ߬z²åmç˜Û&=BRœ³ì÷CD’ÑøEMÜÑãnýÍÍŠ6 M’ð¡9AS:±Ù§}Fÿu‰~{5,1íýj½&zÄ®Bç¦Â aSWñŸ“®E†K½I‹N“xLE% D¶Ê'ÞR¿É¬©Û_/”ÀB Ê­'Ç×ÚQçûkz£!Çç7¡õOo<þñ…Ç)(OzÊ i•÷”)O¶¡¯OÚ„.ôäµ3®ì)(^½ŽRºîp/š-¬¦5’tLOµÏNÑI-‚C^õœ¦Ê·^S‚U !õ+¦iñYFLç1‰£ÜƒÚ^;´`6tº\ÏQ˜ãPÒ.-­q¸Ï…Ã*Ze5Ê‚·‚Î6²€¤¦_щ).‹>Á„±X/u…E¹‚Eð‚EÖXX……V',°tÁÂçFØŒ…ÏUØ?b #ÉtÆ‚‚[,ø¥Jßÿ=DÀW¼a$ç#‚ ´`€õ")X@“XQœahAà¸!#yCöÒ2tÒ¤<ù$)Œ•”çtë2*Ïѧ¸ZyPɱb~íU¡¼b~ÁÔh~Î$Añ¤>Ê”¢¾¬¹Ä™†Î>¨Ï™£":ÀÌ$;ÀÌu€“ÈT ¬Ì°(`ŠpšÛ©LÈT£‘–4À‚†Y¡a#]G†¬Ùä½,‘Q9ƒË9k#æÁË Ìlâcd ññ†ŠýéÈ0'®±LÙÂ+m+×0YÀ8Ò%G/XxM,ç ±14añÚëD,¯ÆD,_ˆEìŽÄ‚àŠXN"Þ«Šk£xE,Å+bI^¹‚’T&–«]a+bq²q"§PÎIJsS²”+"`&–¯ˆeFbùÎ_8TÀ'ô %ªà¼òi3c 7ƒ¬1È:8ˆ98d…AνTƒœ;ª‹3ŸxÅ';ò ‡HÅ'w’i«à0'±ÌWyÊð:Ój[øDÙ=óI×|ÒUl(_øTŸ,%×€…Í¥+™¶æR‘S^Wν˜ŽËñ4ÒSÎåJÖ±ÁF,ŽRXιJe(¼ ¨…®œA (ºE('G·XK¸BhXcJÎUz„!ä’Žˆ†¤ãc¤Õåxä%器›“ïGåEQ^²¢<«”×'ÊëQù@¤¼atåQÚø×…OpwVIåA[?ŧËñÜ‹0”÷%•Ó† fŒ0 Ë·Ñ  b=ÁàN•аt %ŠSv0T¨l ^Î Ê_J…sH6€@'ŸåQÈ…ÉJT<²!M¤³»â‘ãÕÙ­ê³Û”NøÑ޲uáŒùðÖ²äXUª(¡òY^×DR2Åv!R­½ 2fí……H¶ª\Ÿ>wÕª-–Ý(@BŒËxýKõ^1ÇK¼t•üô·ïˆ¿„éã÷mBì'¾okñ%bò÷í÷‹ý’nçL{¢³Ïß¹SÕWî ®ÂŸ.ÜWêi– 󺤈›.:k8}hé³"ný[]òú©Úá0^·¯»|yú‚žÑå×wÇÝöã@X@÷®ª}³=î6Ù–"]f’•_¥pDA«Øx1ü¾L°ðgÂ…Žg£±¨%öŸó_ Ñl"_à)“þ*+ý©Iá};æ'.túªÿÙ·óD endstream endobj 97 0 obj <>stream ÿØÿîAdobed€ÿÛC ÿÀ ïbÿÄÒ s!1AQa"q2‘¡±B#ÁRÑá3bð$r‚ñ%C4S’¢²csÂ5D'“£³6TdtÃÒâ&ƒ „”EF¤´VÓU(òãóÄÔäôeu…•¥µÅÕåõfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷8HXhxˆ˜¨¸ÈØèø)9IYiy‰™©¹ÉÙéù*:JZjzŠšªºÊÚêúÿÚ?ûù›6lÙ³fÍ›6q?kö:·¡gs,QúHx£*k¿ñ&­ÿ-³ÿÁœßâM[þ[gÿƒ9âM[þ[gÿƒ9¿Äz·ü¶Ïÿr¿Äš·ü¶ÏÿrÿÄš·ü¶Ïÿr¿Äš·ü¶ÏÿsˆõoùmŸþ åÿˆõoùmŸþ æÿjßòÛ?üÍþ$Õ¿å¶ø3›üI«Ëlÿðg+üI«Ëlÿðg7ø“Vÿ–ÙÿàÎoñ&­ÿ-³ÿÁœßâM[þ[gÿƒ9âM[þ[gÿƒ9_âM[þ[gÿƒ9âM[þ[gÿƒ9_âM[þ[gÿƒ9¿Äš·ü¶ÏÿrÿÄš·ü¶Ïÿs‰5oùmŸþ å‰5oùmŸþ æÿjßòÛ?üÍþ$Õ¿å¶ø3—þ$Õ¿å¶ø3›üIªö½Ÿþ å‰5oùmŸþ åÿ‰5oùmŸþ å‰5oùmŸþ æÿjßòÛ?üËÿêßòÛ?üÍþ#Õ¿å¶ø3›üI«Ëlÿðg+üI«Ëlÿðg/üI«Ëlÿðg+üI«Ëlÿðg7ø“Vÿ–ÙÿàÎ_ø“Vÿ–ÙÿàÎoñ&­ÿ-³ÿÁœßâ=[þ[gÿƒ9¿Äz·ü¶Ïÿr¿Äš·ü¶ÏÿrÿÄš·ü¶Ïÿs‰5_ùmŸþ å‰5oùmŸþ åÿˆõoùmŸþ æ>dÕ¿å¶ø3•þ$Õ¿å¶ø3—þ#Õ¿å¶ø3›üG«Ëlÿðg+üI«Ëlÿðg/üI«Ëlÿðg+üI«Ëlÿðg/üI«w½Ÿþ æÿêßòÛ?üÍþ$Õ¿å¶ø3•þ$Õ¿å¶ø3›üI«Ëlÿðg7ø“Vÿ–ÙÿàÎoñ&­Þöø3—þ$Õå¶ø3˜y“Vÿ–ÙÿàÎoñ&«ÿ-³ÿÁœ¯ñ&­ÿ-³ÿÁœ¿ñ&­ÿ-³ÿÁœ¯ñ&­ÿ-³ÿÁœ¿ñ&­ÿ-³ÿÁœ¯ñ&­ÿ-³ÿÁœ¿ñ&­ÿ-³ÿÁœßâM[þ[gÿƒ9_âM[þ[gÿƒ9âMWþ[gÿƒ9¿Äz·ü¶Ïÿr¿Äš·ü¶Ïÿs‰5oùmŸþ åÿ‰5oùmŸþ å‰5oùmŸþ æÿjßòÛ?üËÿj¿òÛ?üÊÿjßòÛ?üËÿjßòÛ?üÍþ$Õ¿å¶ø3•þ$Õ¿å¶ø3—þ$Õ¿å¶ø3›üIªÿËlÿðg+üI«Ëlÿðg7ø“Vÿ–ÙÿàÎoñ&­ÿ-³ÿÁœßâM[þ[gÿƒ9âM[þ[gÿƒ9¿Äš¯ü¶Ïÿr¿Äš·ü¶ÏÿrÿÄš·ü¶Ïÿr¿Äš·ü¶Ïÿs‰5oùmŸþ æÿjßòÛ?üËÿjßòÛ?üÍþ$Õå¶ø3›üG«Ëlÿðg+üI«Ëlÿðg7ø“Vÿ–ÙÿàÎoñ&­ÿ-³ÿÁœ¿ñ&­ÿ-³ÿÁœ¯ñ&­ÿ-³ÿÁœ¿ñ&­ÿ-³ÿÁœßâM[þ[gÿƒ9_âM[þ[gÿƒ9gÌš·ü¶Ïÿs‰5oùmŸþ ç{òuÌ·z=­ÅÓ´’²’ÌÆ¤îs’y³]Ômu‹«{k©R%aÅUˆá2?þ$Õ¿å¶ø3•þ$Õ¿å¶ø3–<É«Ëlÿðg7øVÿ–ÙÿàÎoñ&­ÿ-³ÿÁœ¯ñ&­ÿ-³ÿÁœ¿ñ&­ÿ-³ÿÁœ¯ñ&­ÿ-³ÿÁœßâM[þ[gÿƒ9¿Äš·ü¶Ïÿs‰5oùmŸþ æÿê¿òÛ?üËÿjßòÛ?üÌ|É«Ëlÿðg7øVÿ–ÙÿàÎoñ&­ÿ-³ÿÁœßâM[½ìÿðg+üI«Ëlÿðg7ø“Vÿ–ÙÿàÎ_ø“Uÿ–ÙÿàÎoñ&­ÿ-³ÿÁœßâM[þ[gÿƒ9¿Äš·ü¶Ïÿr¿Äš·ü¶Ïÿs‰5oùmŸþ åÿ‰5_ùmŸþ å‰5n׳ÿÁœ¿ñ&­ÿ-³ÿÁœßâM[þ[gÿƒ9_âM[þ[gÿƒ9¿Äš·ü¶ÏÿrÿÄz·ü¶Ïÿsˆõ_ùmŸþ æÿjßòÛ?üÍþ$Õ¿å¶ø3•þ$Õ¿å¶ø3—þ#Õ¿å¶ø3•þ$Õ¿å¶ø3—þ$Õ¿å¶ø3•þ$Õ¿å¶ø3—þ$Õå¶ø3•þ$Õ¿å¶ø3—þ#Õ¿å¶ø3•þ$Õ¿å¶ø3›üI«Ëlÿðg/üG«Ëlÿðg7øVÿ–ÙÿàÎWø“Vÿ–ÙÿàÎ_ø“Vÿ–ÙÿàÎWø“Vÿ–ÙÿàÎYó&­Úöø3›üG«Ëlÿðg7ø“Uÿ–ÙÿàÎWø“Vÿ–ÙÿàÎoñ&­ÿ-³ÿÁœßâ=[þ[gÿƒ9¿Äš·ü¶ÏÿrÿÄš¯ü¶Ïÿs‰5oùmŸþ å‰5oùmŸþ åÿ‰5_ùmŸþ æÿjßòÛ?üÊÿjßòÛ?üËÿjßòÛ?üÍþ$Õ¿å¶ø3•þ$Õ»ÞÏÿs‰5oùmŸþ åÿ‰5_ùmŸþ å‰5n׳ÿÁœßâM[þ[gÿƒ9âMWþ[gÿƒ9_âM[þ[gÿƒ9â=TÿÇìÿðg0ó&«ÿ-³ÿÁœ¯ñ&­ÿ-³ÿÁœßâM[þ[gÿƒ9¿Äš·ü¶ÏÿrÿÄš¯ü¶Ïÿr¿Äš·ü¶ÏÿrÿÄš·ü¶Ïÿs‰5oùmŸþ æÿjßòÛ?üÊÿjßòÛ?üËÿj¿òÛ?üÍþ$Õ¿å¶ø3•þ$Õ¿å¶ø3›üI«Ëlÿðg7ø“Vÿ–ÙÿàÎ_ø“Vÿ–ÙÿàÎWø“Vÿ–ÙÿàÎoñ&­ÿ-³ÿÁœßâM[þ[gÿƒ9âM[þ[gÿƒ9¿Äš·ü¶Ïÿr¿Äš·ü¶Ïÿs‰5oùmŸþ åÿ‰5oùmŸþ æÿjßòÛ?üÊÿêßòÛ?üËÿjßòÛ?üÊÿjßòÛ?üËÿêßòÛ?üÍþ$Õ¿å¶ø3›üI«Ëlÿðg+üI«Ëlÿðg,ù“Uÿ–ÙÿàÎoñ&­ÿ-³ÿÁœ¯ñ&­ÿ-³ÿÁœ¿ñ&­Úöø3›üG«ËlÿðgþdÕ‚’/géüç:÷×î߯þðóëû^?<è¹³fÍ›6lÙ³gŸÿ2?ã³ÿ/¶¿ëןoõ5òwž¿16Ø•<íÕÁûÁ Ëé¸_¿pvÃÊ»í+óGÉzÕ„î_Wò¯˜5˜€ûl÷|䎻}ªgžü£å ÍsËVÞvÔ<ßå]'ÌO­•&æ73-ÈŸ`Ì£Õ(zu§ºg¹l,|»ù™ÿ9;æóOO·Ö£ƒËš{É Ü„2Mèê2+N«ËìœèóïØÆ¡ùãËvlÃMÒü×umgbË AvD öÏ~æÍ›6lÙ³fÍ›6V^^VlÙ³efËÊËÍš¹³fÍ›6lÙ¾y³fÍ•›/å•—›6lÙ³eg¤<ÿ;?õüHçóŸüvï?×_øˆÈÎlÙ³fÍ›6V^l¬±›6lÔÍ›7Ï6V_LÙ³fÊËÍ›5stÊËÌ3fÊËÍ›6lÙ³f͘n;gÇùÉXæòoæ×˜¿.4åuƒóBßK^IU_W×Q!4êBŠ`ùÈý1ü—çÝKþqúÁXXyö]Ð*ÒÀÊ’Ôu; éôç`óö‘äíCþr.?%ÿÎEµ¡òE–­×B·Õe1i†áâ*…øsZg–<å,Kùkù½¢ù&F—òÂÓÌ胑{xÉ”r[f%‡§×ìµ+Û;^£ùä{OÎ?Ë%ézL0iç—g¸Ö-Ä’Ô8ÃVà†¬•=Cls‰Þͪy_ò¯ókÊþDy¬ôK:ÛÚˆ­™Äv¶Œ~ î#'íô¨ëkþqëÈsy_ó?I›Ëžmò}Ç­¡ÝÉu¦ùRXç·0“þ“ÀõTôç¿Îaä_Ê/&kó^süÈÔô¨'ó5•íô–zƒ–õmŒrž"-è‚»š ÎùõÏòöãRü³ò…ýü¯=ÌÚ%›É,ŒYŒb¤“¹9Ö2ófÍ›7Ï6lٳٳfÍ›7|Ù³fÍ›6lÙ³fÍ›6lÃÃ6lÙ²²éLÙ³fÊËÍ›ßdÓÀçmÿ¼~u Ù³fÍ›6jæ®jçŸÿ2û™ÿž)ür\ܳW*¹uÍ^Ù«š¹«\Õª3rÍZ5sW*¿çLÕÿ:eòÿ:fåÛ7,ÀŒÜ‡LܿΙUË­3TtÍ\ÕÍ\Õ\²ëš¹UËåþtÍ\ܳW5F`FjŒÕ¹wþ¹eƒ•\ÕÍ\ÕÍQ›—ùÓ,5#¨Îkqù?ä‹´Õá¹Ðí^?0H%ÕTú”ºq¸i>.£üša¯å·•luM?ÍzM¼z¶“jl¬.WŸ8-ȧ¦¿8ÓÄï„ñþJù 2Ìx¼½d¾g2HW™Û•9q¯û“[y#Ëözýן­tøSÌw±,7׫$j(ªwã@<W•|åÿ#‹Äò†žº…Ã]݈yþövë#r'síA’ºŽù¹3rÿ:fåáú³W5Fn_çLÕÍQÛ5FjŒÕÍË5srÍË5sW(‘—\À晫š¹U˨Í\Äæ®lÕ뚣ß7*µš¹«š¾ª2¹Wý¬¾_çLܲ«—Qš£7,Õ«›–nY«š£09¹f®zCÈßñóÿPÿÄŽq_9Ÿ÷7x?Ë_øˆÈÍFjåW.µÛ7,ÕÍ\ÕÍ\ÕUËåþtÍËüé•\ºæ®jŒÜ³W7,ÕÍZfåß5{æ®jæ¯|Õû³Tf®UrëLÕÍ\ÕÍË5Fjæ®jår¦]sTf®jæå›–jŒÜ³rÿ:f¨Èv·ù}åŸ2jön×´¸.õ­.¿Q»7©.¼h@ûÁÍ­~_ùkÌZÍœµÝ. ­sL ,¯$êC˯7÷óçå·•4-aÒÿ0ô‹m^Ò ±GrŠäR ©SÓßÝ~Uù>÷ËQþZÝhÖ¯åh¸„Ó¨âÀò^Œc¾í†/ä?.I«iÞl}6¬i5µ…ÑçÎXP¢oJâ ÀÚOåÇ•´õkmI··‡]‘¥ÕC‘tì(Yù¹ËLä_Ê?%~Y ¥ü¾Ðí4Ÿ¯/Ÿ«‡¬ƒÀ—fü)޲ü§òn›åû¯Ëû Ú/-ß3µÍ‚úž”†CV-Vå¹ð#&ZF•e XÛhz, m§Ùİ[•ãh(ª+S@á•Á”}Ã7þQ÷ ¾ ü£î¸¯N#îÍÁGa÷ep_åpÁÅê#áõÏaü¸‚ÿ(û†n ü£î¸/ò¸fà¿Ê>á–”}Ã7þQ÷ ® ü£î¸/ò¸e…Qû#î\ùGÜ2ø/€û³q_åpÊà¿Ê>ᛂÿ(û†n ü£î¸/ò¸fà¿Ê>áƒíÑ~«sðޱö8‚ÿ(û³p_åpË(¿Ê>ᛂÿ(û³p_åpÊà¿Ê>ᛂø»/‚ø¸f*§öGÜ2¸/ò¸fà¾î¸/ò¸eñ_åvWþQ÷eð_åpÊà¿Ê>ìÜùGÜ0uŠ/ïþýÃöØ"ø¸fà¿Ê>á—Á|Ý•Á”}Ã7þQ÷ ÜùGÜ2ø/epÊà¿Ê>á—Å|Ü3q^œGÜ2¸/ò¸fà¿Ê>ᛂÿ(û†_ðvWþQ÷ ÜùGÝ›‚ÿ(û†Ó~µÂø»€/ò¸fà¿Ê>ᛂø»7ðvn à>ᛂø¸eð_åpÊà¾î|ùGÜ3q_åpÊà¿Ê>ᛂÿ(û†n ü£î¸/€û†_²>ì® ü£î¸/ò¸böȾ´_ûkØxåÝ¢ýb_„}¶ìì¾ à>ᘢø»7þQ÷ ÜTþÈû†n+ü£î\ùGÜ3p_åpÍÁ”}Ã:vµ„4ð?¯ Ú⩾ž }¡ÛÛ ¸¯ò»,*ÙpÍÁ”}Ù\ùGÜ0tè¿U¶á›‚ÿ(û†n ü£î|ùGݘ"ø¸fà¿Ê>ᛂÿ(û†n à>ì® ü£îaoA÷ep_åpË(¿Ê>ᛂø»+‚ø»_©„~;åÀ<ùGÜ2ø¯ò»7ðvn+ü£îÊà¿Ê>ᛂÿ(û†n ü£î¸/ò¸eð_åvb‹ü£îÊà¿Ê>ᛂø»7þQ÷ ÁùGÝ›‚ø¸fà¿Ê>ᛂÿ(û†¶Eú½×Â>ÊvÍ€8/€û³p_åpÍÁ”}ÙeùGÝ›‚ÿ(û†WþQ÷ ÜÀ}Ã/Šÿ(û†WþQ÷ ÜÀ}Ã7‡Ü3p_åpÍÁ”}Ã/‚ÿ(û†WþQ÷eð_÷ ® ü£î>Ýê×'ŠÖ‘öÍ€8/ò¸eð^œGÝ•Á|Ý›‚ÿ(û†_þQ÷ ÜùGÝ›Šø¸fà¿Ê>á•Á”}Ù¸/ò»/Šÿ(û†n+ü£î¸¯N#î¸/ò¸ep_åvn ü£î¸/ò¸`ûRÓUG÷/Ø`‹Nƒî¸(ý‘÷ ÜùGÜ2ø/ò¸ep_åvn ü£îeWùGÜ2¸/ò¸eð_åpÊà¿Ê>á—Å|Ü2¸/ò¸eð_÷fà¿Ê>ìÜWùGÜ2¸/ò¸e„_åpÁÚb'Ö¢øGSØxÁ|Ü2ø¯ò¸ep_åv_ðpÍÅ{÷ ÜW§÷ep_åpÍÁ”}Ù¸/ò¸eñ^¼GÝ›‚ø¸ep_÷eðZtvn+ü£î\ùGݔȴû#î: ðÿ|•³ª ¹曜JâæD3]H‘F:³°Q÷œQdGQ*0(EC±5Ä­¯ ¼S%œ©*ƒBc`À ²…å»LlÖXÍÀ1†€ñã×5Å彡Qu,q4^l‘ðë‚sƒ~fÇZ?øÀ¿ñ#œ÷6n™;òïûÇþͰ÷+6lÿ_óßþ5À9²ý²³fÍ›6lÙ³fËÍ•ƒûÂ?ã9ÿˆàÙ³fËë•›/+6lÙ³f̓íÿÞ[Ÿœ¯fÍ›6lÙ³fÍ›6lÙ³`ë÷ü`á€sfÍ›6lÙ³fÍ›6lÙ°~™þõGþËõ3fÍ›6lÙ²ò³fÍ›6l^×ûø¿×_×—wýü¿ñ‘¿^Í›6lÙ²ò³fÍ›6léºûÁÈþ¼ƒëïtß1ú°«6^VŸýå¶ùÉúðlÙ³fÍ›6lÙ³fÍ›/÷ˆÿÆqÿÀ9³fÍ›6lÙ³fÍ›6lØ>ÛýçºÿU?âX6lÙ³eÓ+6lÙ³fÍ›6·ÿyn~QÿİlÙ³fÍ›6lÙ³fÍ›6ÓþÔßñðé›6lÙ³fÍ›6lÙ³eå`ý3ýêæQÀ³fÍ›6lÙ³fÍ›/zdçþÉóÉó‘º'›§ó7•uícV†?*Ûù§IK2Ñydv!žéØTñý…F ÝÉ_Ÿt›/ÍOÍËOË8Æ/<µ¦hMªµ‹rXå¹–oIYøÐ°Uû"´|àú§˜o¼µ¥ëÿ‘ÚMÛÃ¥Gç-?Cµ¥L‘i×È%’%î)º©êÒ¹Òµí;MÿœvóÝ—åÄ ¦èÚÆƒªÍuhœä®l"õ!”$†ý–5ÜuñÎswå;?,þTi?ó‘Úp#ó¤³ÕnuBÌ^o¬Ì±2ý“FâŽÔ9Ó´Ÿ&hŸó>nóÅÿŸ¡úý¾‰4f’ŒÏµSn%i)¼.ÕäkÐgCü‰üɺ—ò¦ßÍÞhúΡq¦«Y¾­’yE¬í ñANmÄ-|w8_©yÞ×ÏÒoN´¾²Ñ1êæÞRA­Bj»õñÂüÙYÑ|¯jóØóV@=FÙš‡$?£äþx¿àó~“ýùü_èé?ž/ø<¯Ñò¿"ÿƒÁŸP“ê|9Ç_Zµå·ÙÀ£äÿ~Eÿ›ô|ŸïÈ¿àó~“ýùüoÑò<_ðy¿GÉþü‹þ7èù?ž/ø<ߣäþx¿àó~“ýùüoÑò¿"ÿƒÍú>O÷ä_ðy¿GÉþü‹þ7èù?ž/ø<ߣäÿ~Eÿ›ô|ŸïÈ¿àó~“ùâÿƒÍú>Oç‹þ7èù?ß‘ÁàÓbÿS󎾵kËo³€¿GÉþü‹þ7èé?ß‘Áæý'ûò/ø<ߣ¤ï$_ðy£äÿ~Eÿ•ú:O÷ä_ðy¿GÉþü‹þ7èù?ß‘Áå>NòEÿ•ú>O÷ä_ðy£äÿ~Eÿ•ú>O÷ä_ðy¿GÉþü‹þ7èù?ß‘Áæý'óÅÿ—ú:O÷ä_ðy_£äÿ~Eÿƒ`±qmpœã«÷å¶Ç¾ý'ûò/ø<ߣäÿ~Eÿ›ô|ŸïÈ¿àó~Ž“ùâÿƒÍú>Oç‹þ7èù?ž/ø<ߣäÿ~Eÿ›ô|ŸïÈ¿àó~“ýùüoÑÒ¿"ÿƒÍú>O÷ä_ðy¿GÉüñÁæý'ûò/ø<ߣäÿ~Eÿ—ú:Oç‹þ+ô|ŸïÈ¿àó~Ž“ýùü ²°uõªñšÂãfÀCO“ýùü_èù;¼_ðy_£äÿ~Eÿ›ôtŸïÈ¿àó~“ýùüoÑò<_ðy¿GÉþü‹þ7èù?ž/ø<ߣäÿ~Eÿ›ô|ŸïÈ¿àòÿGÉþü‹þ+ô|ŸïÈ¿àó~“ýùü_èù?ß‘Áå~“ýùüoÑÒ¿"ÿƒÍú>O÷ä_ðx7N±t¹ËÆ@¯Fß¡À_£¤ÿ~Eÿ—ú>Oç‹þ+ô|ŸÏüoÑò¿"ÿƒÍú>O÷ä_ðy¿GÉþü‹þ7èé?ž/ø<¿Ñò¿"ÿƒÊý'ûò/ø<ߣ¤þx¿àó~Ž“ýùüoÑò¿"ÿƒÍú>O÷ä_ðy¿GÉüñÁæý'óÅÿ›ô|ŸÏüoÑò<_ðxµ½„‹,mÎ-NÏï—ua#M#ˆUØîþø‡èù?ß‘Áæý'ûò/ø<¿Ñò¿"ÿƒÍú>O÷ä_ðy_£äÿ~Eÿ›ôtŸÏüoÑÒ¿"ÿƒÍú>O÷ä_ðy¿GÉþü‹þ7èù?ß‘Áæý'óÅÿ›ôtŸÏüoÑÒ<_ðy¿GÉþü‹þ/ô|ŸïÈ¿àó è±˜¬¢ˆ$ ÔuÈ~¯dò^K"¼`6f¡é…¿£¤ÿ~Eÿ›ôtŸÏüoÑò¿"ÿƒÍú:Oç‹þMbæÚÝ9ÇU2~ÖÛžØô|ŸïÈ¿àó~“ýùü_èù?ß‘Áå~“ýùüoÑò¿"ÿƒÍú:O÷ä_ðy¿GÉüñÁæý'óÅÿ›ô|ŸïÈ¿àòÿGÉÙâÿƒÊý'ûò/ø<ߣäÿ~Eÿ›ôtŸïÈ¿àó~“ùâÿƒÍú>O÷ä_ðy¿GÉþü‹þ7èù?ß‘ÁàÑ`ÿS)Î:úÀ×–ßg~“ýùüoÑò¿"ÿƒÍú>O÷ä_ðy¿GÉþü‹þ7èù?ß‘Áæý'ûò/ø<ߣ¤ÿ~Eÿ›ôtŸïÈ¿àó~Ž“ýùüoÑò¿"ÿƒËý'ûò/ø<ߣäÿ~Eÿ•ú>O÷ä_ðy¿GÉþü‹þ7èù?ß‘Áæý'ûò/ø<ߣ¤þx¿àðm½Œ‚ …/J§íx7|ú>O÷ä_ðy¿GÉþü‹þ7èù?ß‘Áæý'óÅÿ›ô|ŸïÈ¿àó~“ýùüoÑò<_ðy¿GÉüñÁæý'óÅÿ›ô|ŸïÈ¿àó~“ýùüoÑòw’/ø<ߣäÿ~Eÿ—ú>O÷ä_ðy_£äþx¿àó~Ž“ýùüoÑò¿"ÿƒÁ°X¸·¸^qÕ‚tm¶=ðèù;¼_ðy¿GÉüñÁæý'ûò/ø<ߣäþx¿àó~Ž“ùâÿƒÍú>O÷ä_ðy£äìñÁå~“ýùüoÑò¿"ÿƒÍú:Oç‹þ7èù?ß‘Áæý'ûò/ø<ߣäÿ~Eÿ›ô|ŸÏüoÑò¿"ÿƒÍú>O÷ä_ðy¿GÉþü‹þÙXºIxÍaq³xà!§Éþü‹þ7èù?ß‘Áæý'ûò/ø<¿Ñò<_ðy_£äÿ~Eÿ—ú>Oç‹þ+ô|ŸïÈ¿àó~“ýùüoÑò<_ðy¿GÉþü‹þ7èù?ß‘Áæý'óÅÿ›ô|ŸïÈ¿àó~“ýùüoÑò¿"ÿƒÍú:Oç‹þ7èé?ß‘ÁàÝ:ÅÒæ6/ž¿C€¿GIüñÁæý'óÅÿ›ô|ŸïÈ¿àòÆŸ'y"ÿƒÊý'ûò/ø<ߣ¤ÿ~Eÿ›ô|ŸïÈ¿àó~“ùâÿƒÍú>Oç‹þ7èù?ß‘Áæý'óÅÿ—ú>O÷ä_ðy_£äÿ~Eÿ›ô|ŸÏüoÑò¿"ÿƒÊ:t”þò/ø<™zù—ûŠuÎkùÝä­[ΰùr//D²¶æ?P¸äêœ`Évˆ©°Üäó/ÊžgмãaùÅùo¦®¹z–¥_ios¯8Kú‰"K'Â[¨ Ôt¦sé¿!<íy[V×5 #·óÆ©®Aædµn-@Û|C€âÎ5 ²M¢y#Íš^gO>þjiK帴í.ïK´Ó⻎ñ¥7«ÆiÚHþvEã^䜀[~W~`êþ_±ÿœx×4È­ü£§\DÌKy½Å´¾¤q­¨<ÖF¢©bJŠÇ'ç–¼ùùqæ0k–:,ZþŸæ¿Ji}[Ø­ …Ôqú<Èï#*qP Ž[çeüŸü¾•ÞSÓü˜Ó›©­Ä’O5(i¤½&4©&ò%ù˜OéXÿæÄŽsÜß<Ù;òèÿCÿfØwAšƒ5†j Aõ/ùïÿà#Ã.ƒ*ƒ.žÙT¨<3Pf ÍAÜf ðÍAᚃÃ5†j ÔtT8õÿÏüGÐxf ÍAá—A•AšƒÃ5j ¾#Ã*ƒÃ5†]U†j Ô¨3Px`ûp>«sóõà ª ÜG†j Ô¨<3Pxf ðÍAᚃÃ7ᚃÃ5†j ºW5U±÷ÿñÿ†xeÐxePxf ÍAᚃÃ7ᚃÃ7ᚃÃ5†j ÜG†j Ô¨<3Px`ý,­FGù_¨à†j Ôd ª Ô¨3Pf ðË Ê ðÍÄxf ðÍAá—Ašƒ*ƒµOúëúñ×`zòÿÆFýxƒÃ5†j º×+ˆË Ê ÍAá—Aá•AᚃÃ5†]†WᛈðΛ ÿ¼üëÈ>¸¾›æ?VPxf ðÍAá–Á³õ[oœŸ¬` °†U†n#5†j Ô¨2è3PePxeñT¸Œº ª Ô8õÿÇüGÐxf ðÍAᚃÃ5†j Ô¨<2è2¨<3PxeÐePxf ðÍAᚃÃ5¶ê÷_ê§üKPxf ðÍAᚃÃ.ƒÃ+ˆÍAᚃ5†j Ô¸ º”Êâ<3Pf ÍAáƒíÀú­ÎÝ£ÿ‰`WᚃÃ5]2¨<3Pxf ðË Ê ðÍAá—Aá•@rè2¨<3Pxf ðÁúx›þ0>S¦j Ô¨<3Pxf ÍAᛈðÍAšƒÃ.ƒÃ5U†j ÜG†j º ¦õ¨¾gõðÍAᚃÃ5†j Ô¨<3Pxf ðÍÄxeÐePxf ÍAᚃ(C¶N¿ìŸ%™³fÍ›6poÌ¿øëGÿþ$sžæÍÓ'~]ÿxÿÙ¶åf̓‡ûÅÿ=ÿã\›6lÙ³fÍ›6lÙ³f̓ûÄ?ã9ÿˆàÙc+6^VlÙ³fÍ›6lØ>ßýå¹ùÇúðlÙ³fÍ›6lÙ³fÍ›/Øÿ»ÿãÿ :fÍ›6lÙyY²ò³fÍ›6Ó?Þ¨ÿÙ~£€2ò³fÍ›6lÙ³fÍ›6l^×ûè¿×_×—wþôKÿõà|Ù²ò³eåfÍ›6lÙ³¦è?ï?#úò­ÿ½Ó|Çê¬ٳ`éÿÞ[oœŸ¯æÍ›6l¼¬Ù³fÍ›6_L¬?Þ#ÿÇüGååeåfÍ›6lÙ³fÍ›6¶ÿyî¿ÕOø–Í›6lÙ³fÍ›6^VlÙ°}¿ûËsòþ%€r³fÍ›6^VlÙ³fËÊ̓ôþ³ÆÀ6lÙ³fËÊÍ—•›6lÙ°~™þõEó?¨à Ù³eåfÍ›/6VlÙ²C“­ÿéß%y³fÍ›6poÌÏøëGÿþ$sžæ9Y<òïûÇþͰó/+6ïü÷ÿplÙ³fÍ›6lÙ³fÍ›6?ïÿŒçþ#€sfÍ›6lÙ²ò³fÍ—š™X>ßýå¹ùÇúð <2³fËÊÍ›6lÙ³fÍ›6±ÿwÿÆþfÍ›6lÙ²óefÍ›6lØ?Lÿz£ÿeú޳fÍ—›+6lÙ³eåfÍ‹Û}úëúòîÿÞ‰ã#~¼›6lÙ³eåfËÊÍ›6tÝýà‡ä^Aõ¿÷ºo˜ýXW•›6Ÿýå¶ùÉúð_l¬Ù²ófùefËÊÍ—òÊËé›åƒE>¤ã8ÿˆàÙ²ò³fÍ›6l¼¬¼¬Ù°}·ûÏuþªİlÙ³fÍ›6l¼¬Ù³f̓íÿÞkŸ”ñ,›6lÙ³fÍ›6lÙyY²ðu‡Y¿ãà—•›6lÙyY³fÍ—›+6Ó?Þ¨¾gõ5sW5sTf®lÙ³eåfÍ”zœÿÙ>K3fÍ›6làß™ŸñÖþ0/üHç=Í›'ž]ÿxÿÙ¶eeå`ïøòÿžÿñ®Í›6lÙ³eåfÍ›6lÙ°qÿxGüg?ñ›6^VlÙ}r³fÍ›6lÙ°|ï-Í|cýx6lÙ³fÍ›6lÙ³fÍ›Xÿ»ÿãÿ :fÍ›/+6lÙ³fÍ›6lØ?Lÿz£úQÀ6]†j Ô>¸œÔ>¨|3Pøf¡ð9Y³fÍ–sPâöÀúÑmûkúòîÁúÄ»»õà~'5ÍÄøeñ9T>Y³fÍ›/+6léºûÁÈþ¼ƒëïtß1ú°«6l¼?ûËmó“õà,¬Ù³fÍ›6XÊÍ›.™Y²ðhÿxügñ›6lÙ³fÍ›6lÙ}2²ò°}·ûÏuþªİlÙ³fÍ›6lÙ³eåf̓íÿÞ[Ÿ”ñ,›6^VlÙ³eåfÍL¼¬Ù°}†í5?߀lÙ³fÍ›/+6^VlÙ³g|ÏmçÌŸÍ!ùQåo3\ySDÒ<¿µsq§D­{w5ÜÏ F^BQ"ŒGÊœ˜·Q’¿ú7åÙówßkÿTóаù»ÿ.Ï›¾û_ú§›þ…‡Íßùv|Ý÷ÚÿÕ<ßô,>nÿ˳æï¾×þ©æÿ¡aówþ]Ÿ7}ö¿õO7ý ›¿òìù»ïµÿªy¿èX¼Ýÿ—gÍß}¯ýSȧŸ?+¼õù3å­góWHüÃÕµë­OºÔL×¢Š[ ŸF2å%XDRnâUÇ¡ ³ºè‹ëN­L¡$½²µºu^ŠÓD²=4k›6lÙ²C“Ÿû'ÉflÙ³fÍœó3þ:ÑÿÆÿ‰癳dóË¿ïû6ÃÌÙ³`áþñÏø×æÍ›6lÙ³fÍ›6lÙ³`ãþðøÎâ86lÙ³fÍ›6lÙ²ò³fÁöÿï-ÏÎ?×€3fÍ›/+6_¾Vl¼¬Ù³fÁö?îÿøÀÿÙ³fÍ›6lÙ³fÍ›6lØ?Lÿz£ÿeúŽÆ?:<Íæ <±åï#\Ae¨ùŸ_‹Ekˈ½QmI+ȉÐÈ8Q+A^¸#þ…¯Ï_ùv¼ÇÿH¶óF_ý gž¿òíyþ‘lÿæŒßô-žzÿ˵æ?úE³ÿš3жyëÿ.טÿéÏþhÍÿBÙç¯ü»^cÿ¤[?ù£7ý gž¿òíyþ‘lÿæŒßô-žzÿ˵æ?úE³ÿš0³YÿœhüÊ–Æâ=óƒ]ƒS17Õ¥žÆÎX’J|%Óˆäµê+Ó$?”t½ó¾ƒ<úê ÕtN÷B½š-£¹¸ÓÜE%Â%”üA7ãÒ§:†lÙ³ËÚG–üÿùÏçï;[i~y¼ò¿–ü¯{m£Ùéúe¬òÊmÒâK‰¥•I%½@¡À-kþ…³Ï_ùv¼ÇÿH¶óFZÿÎ6ùíHaùµæ:ƒQþ‹gÿ4foùÆß=±,ß›^c©5?è¶óFWý gž¿òíyþ‘lÿæŒßô-žzÿ˵æ?úE³ÿš3жyïÿ.טÿéÏþhÍÿBÙç¯ü»^cÿ¤[?ù£9ÿæåOæå_–5ÌÛ?Í kP_/GúRâÂêÒÐÅyoj}I­‹*Õ ¨ àH4ÏIé×é«ÙZëÇèÇ{oÒÄMJ ã'¿Ô¯z`¼Ù³fÍ›/+:nƒþðCò?¯ úßûÝ7Ì~¬*Í›6Ÿýå¶ùÉúðlÙ³fËÊÍ›6lÝsfÍ›÷„ÿÆqÿÀ9yY³fÍ›6lÙ³fÍ›6¶ÿyîÕOø–Í›6lÙ³fÍ›6l¿|¬Ù°}¿ûÍsòþ%€2ófÊÍ›6^VlÙyY³fÁöfÿŒ€l¼¬Ù³g0üÁüÔ´ò iÖÚV­æ-fpdý [-ÝÜp½i#.œ#®À“¹èsúÍGÿ-wæ7ýÁ#ÿªù¿èc5üµß˜ß÷þ«æÿ¡‹Ôò×~cÜ?ú¯›þ†3QÿË]ùÿpHÿê¾oúÍGÿ-wæ7ýÁ#ÿªù¿èc5üµß˜ß÷þ«æÿ¡‹Ôò×~cÜ?ú¯”ç&!°"ï;Fó·—ôd#ëZ¶¯¥Çocihe¸—Ö<#_Újg¥"š+˜ÒæÒDš q¯ÏùÈŸ9ygó@ê>R»x¿.ü‘u¥Xù¢ØC­Óê¬ED¥IŒÛ©F#ë½3é::È¢D!•€ Á>aùóqÿ4|õ¬Mwù¯u£ÄžcžÇNР·¶ú¹‚Ø„ôÚvMÌŽ¬ Z½†ù1ó—š22oÿ0|Ýùsæ™<»¦þ_ÎövšzÛC47óÙÂ.. úUp}0¼~Ö{;òÃÎëù‹äíÏÐFSô®ŸÙŠ ñg@YAöjŸ6í?;0ZÕ?7Î%õ÷ó0ÓåßÕ –Æçêþ—?Yõ?ßú¼iOmòaæŸÍÖówæ·š<©sù¥uäý;Fº²Ó-4û[ki§)Êg–WFãV*(Í·¶zãþr1xþMùÉL¾½<³¨Woý¾-¶ß®ØÉòŒè?öÈÓ¿ê2K—L¬Ù³e‡'Tÿ¨|•æÍ›6lÙÁ¿3?ã­ü`_ø‘Î{•—JäïË¿ïû6Ã̺S+6ÿ/ùïÿàÙyY³fÍ›6lÙ³fÍ—óÁ§ýâñœÿÄpl¼¬Ù³fÍ›6lÙ³f̓íÿÞ[Ÿœ¯fÍ›6lÙ³fÍ›6lÙ³`ë÷ü`á€FlÙ³fÍ›6lÙ³fÍ›6Ó?Þ¨ÿÙ~£€pÎøï~WÿàqoÿP7aÿ9mù‘ç=t/ËÉ+ϨùÛ_{»¨®LQÊ"µ°„Ë%DŠËñ·û$îiN¹Û¿!¿2WówÈæÂ}BÍ ÊÇÄdÇ2Óµ$V§¶y3þr þrMòÏæ¤?–ÞcóÞ£äÝËD³þв޿i®g–‘r/iuÅ+•wêq_ÏÿÏ;/ËÉ¿/ü/Ÿµ +IÖ"¹½¼×mí`¹½º¶†/€…[Yc¤eäV ðÏ\þMj–ß•,õ­ Ìwži°ºå,Z•úD“º“öY"†Ü/”1«xç•ÿ42|Åyùæ_$ê>r“ÈÚ'—ô(5,Á±}Bi´$—0̯Dô£á!­w뜿Íßó”Ú‰Òÿ,-ÿ2|Íuäk0é—z®³6—b³NéôáÇ$EÞŒ~ €{tÏ ”Z…–¯å[ [Eóß™ìn”ͧz±$ò+€ËP*•éC°ï¾y›þqÏþ9jÿÀãÌ¿õ3¿æÍ›9gü㫬~qüÛ’CE_4ÂI=€ÓmóʾUüÀóU¿ævÿ9)ªÜΞFó_˜®ü£»5`[8ǧgqéõViã®àî´Ï¨nÖú§¯€XØÙ\\€ªX“e€nI§Lù“ÿ8Åmä=5üµùƒç Í:wœ5—žkmcV¹˜Y]ÝÎdCKrʤÇ^+$¿ZÒ¤71ßKùjßó›3j7‘ùú-dÜFë;ýWôzßýSê†Ö¾—~.>§-ùçÓo—4Úw­Ä ¸0–‹—/‡f§ÚÛÇlùù æo.:ù.ÉÍWV¹óÍØžO̵Iddx63µ%ýÇ5¸§¥õ:Ž=vÁ¿”—^Eó­/ç'ææ…æ¨o¯¼ÏpÖÚõÌóæBßXô­b0ÇrRÀ(­¹R[â4Ü{ßþrrüŸóÍ?ê_ÔOÝg)ü¬üçò7›¼§£êº&½fmÖÊÖÙ¾°ÆÙı@ŠãÓœ#Ї؜îR[ɬ²)Ô*{î)ˆåátº¾Ÿ Úèó^[& üBÛ4¨%<…VˆO-ûm†$Sc•—•›:nƒþðCò?¯ úßûÝ7Ì~¬*Í›6Ÿýå¶ùÉúðlÙ³fÍ›/+6lÙ³fé›÷„ÿÆqÿÀ9²ò³fÍ›6lÙ³fÍ—•ƒí¿Þ{ŸõSþ%€r³fËÊÍ›6lÙ³fÍ›6·ÿyn~QÿİlÙ²ò³eåfÍ›6lÙ³`ý?íMÿ Ù³fÍ›9/åó»óŽ­£ù^¿DWÑõ¿ùÈÏ'yóMü„ÔdºgÕ 3@Ë mâα¼µø]•X¨¦àuÎïžxòïüäUŸ›µ› ÊþYóõ•®¥.—6«µ°²Y¡n2Op²SÕ„ p³Î_ó•¾PòN«¨hú…®«sa£\[Újúµ­²Éca5Áw2,Ç#n»ç¤ÅÔF®‡OSŸn4­~ìó—ÿç.ü—æ;û{[]^UÔJÓµÙí4ë«´b¾œoÌÊ90*¬ñ*’:à¯5ÎWù;Ê:½î¨Zê²éºUôn§¬ÛÛ+ØY]N@Xæs ’ ¤n«]ÎvÌ;[mWÊzÕ¥ìiqi6™v9du0¶Ä ç™¿ç'å'‘QvQåë€ ˆùnæk?Ï_2ÝÙB×y MxáZVG[»‚¨*@«·#眯Êó‰žmó§å¾¿æ™uÝÌt’ÿRÕt[VÓͪ\NÇÑ“ÛK «n3v49Ý?&<çÍgË[Õ|ù®k¾\Ö´ËH¬¯´XFœÖ’½¯îÄ„˜&¬ª¡”ïÑs™ùßNóçž<•ªÿÎ?êžOkMwQ½îcMH"Ñ=v³¬üÚc8“ÒPz52ÿ“€5/(ù÷ò¸þcyÊ^[ºÖí|ï+\h—ðÉ·‚[«U¶ŸëÍ$‘º#˜(QÓ}³¾ù ò+Wòf‘åý"ÇÍúÍœ>mjúm°±k'’(èæ²Z´ÅKTí Û×ååe7C“Ÿû'ÉflÙ³fÍœó3þ:ÑÿÆÿ‰ç¹³gFòµÊÃcÅ¡ŽOÞ6î rEõôÿ–X?àOõËúúË4qþ¹__Oùeƒþÿ\ß_Oùeƒî?×ýu~©ÏêðÓÖ§}ž½p'×ÓþY`ÿ?×7×ÓþY`ÿ?×7×ÓþY ûõÍõôÿ–X?àOõÍõôÿ–h>ãýs}}?å–¸ÿ\ß_Oùeƒî?×7×ÓþY`ûõÍõôÿ–X?àOõÍõôÿ–X?àOõÍõôÿ–X>ãýs}}?åšøýs}}?åšøýs}}?å–¸ÿ\ß_Oùfƒî?×7×ÓþY`ûõÍõôÿ–X?àOõÁ†õ>¨êðÓÖ§}ž½zàO¯§ü³A÷ë•õôÿ–X?àOõÍõôÿ–h>ãýs}}?å–¸ÿ\ß_Oùfƒþÿ\ß_Oùeƒî?×7×ÓþY`ûõÍõôÿ–X>ãýs}}?å–¸ÿ\ß_Oùfƒî?×7×ÓþY`ûõÍõôÿ–X>ãýs}}?嚸ÿ\ß_Oùfƒî?×7×ÓþY`ÿ?×7×ÓþY`ûõÍõôÿ–X>ãýpl¨mço«Â(cØCSß|õôÿ–X>ãýs}}?å–øýs}}?å–øýs}}?å–øýs}}?嚸ÿ\ß_Oùeƒþÿ\ß_Oùeƒî?×7×ÓþY`ûõÍõôÿ–X?àOõÍõôÿ–X?àOõÍõôÿ–X>ãýs}}?å–¸ÿ\ß_Oùfƒî?×7×ÓþY`ûõÍõôÿ–h>ãýs}}?å–øýs}}?å–øýpeê1š–ðŠBÇ`wö;ôÀ_Oùeƒî?×7×ÓþY ûõÍõôÿ–X>ãýs}}?嚸ÿ\ß_Oùeƒî?×7×ÓþY`ÿ?×7×ÓþY`ûõÍõôÿ–X>ãýs}}?嚸ÿ\±|‡akÿb®;ëƒþY!ÿ?×7×ü²Cÿ®o®ùd‡þÿ\ß\òÉü þ¹¾¸?å’øýs}pË$?ð'úæúØÿ–HàOõÁš}Ðk„QmõÜ)¯Cï€úË4qþ¹À;îmwò½Vãÿâßtµ•ÆEõ?ȯ8þp~myóÌƽä½?G·ƒEÐ%Ñî!C{l{q3óYhJ(Ÿg¾G?'¿ç|çåuó7ä¬Þ`ó>‹å« aµ}ÌVwVëqêršIG»’§dJÖ´ÎϬë>oü¡×ü©sç-6ãN···Ö,bˆê,@‡Kù jÄ‚Œªª¿AÎwä-yÛþqëËþWõ¼ªžf†8¯þ»ŒI&§§Ïw;L© Œô6áIWUj†´Û <…ùæ_2éÚߘµ-w_ò=ߘ¼Áu­­–•q KS*ªG7$‘yšU€¦ùο1¿-uï-yÇÌ7>nò]÷掋¬è¶¶š=ÜÆ ÞÊhchåÒ]¢iY„†xÂôéQ“ÿ&Ø~`þCyɶúï–ÏœZËE6·h³êö·%ùªúòHyÛðø ykM³®ÿÎ6yWòž•®ëžg·{ ¿2ë×ÚÚéò2±µŽåHÛ‰§: ½?k<±ù>ž}òí§œ¼Ñù{õvÚ0Š|MÅ!‘ú2×=å¯Ï?.ëWyÌ¿á¿3HÁ“¬ÆÖÓ37ÙÈüb›¨H™ž›•ÖZñPÑ­`ìOõËK°ÿbÖþÄÿ\i¾U46°þ©þ¹å/-ižd××ó×Fü·0Åæ;Ýy-¬ÞVà‘´šm²3“Qº©$oÖ˜[æùÀ*/åÊy[É¢x¼Ý§ÚÛM§ÝKw)ˆj6åd˜Ëpä¤Síó¾èŸV³Æ|ï¨Éu¥~`_Xºº¶¼–h »’.$Q³p![p)ýsÛþ_þg~fê>]òßç§Úh~SÔaÔ†­ظ›U–ÕZ8ùÛÐz oQêÏCðŒƒмþb )ÿçÀ±ÿ•g&°u3®ú¿ébÔÜýlÙ JÒ¾§ÁêòãÇö3½y³þqgÊ~`¶×Ž›-öŸ©ë–6Mr—RºÄ'‡%‰›†Þm¶ÙƼ¡ù1ù‰æ[ÉZgæV•£è?åÙg±Ô4™VI¯Ýa6È?øõFCê:ÖJ°¦kß–¿šþ²OÈÿ?Cgså¯`žO5µÐk˘m§[„V²ý—b¢2Þ¡\{gjÿœ¡EOÉï;ÃEòö ö6E­¼Ÿä½OËú_™¼ïå¿/ݼ:5‹O¨jvVò2D–É»Í*ž*£¹4QŸ3ç.ÿ7ÿ+çü±úOòÍ7Vþ}ÔK-¬>^Ö…Ìf*î×G÷ȱ#n±‚ŽÄP¹àÉùù¿ç“µÕ;k0kZMáŽÛX‚[µµN`´±G‘’ôÛ©¨Ï ˜ßóõ»+ynúó@Ò¼¿æG¥­ü·(’µ-“Ѝ5U Vo‡–ÕÏ€Þ`üÅó/š<Ë?æFµª]MæYî~¸×ægõ–^UVW¯%ã·„~¢ÿçß?ó“ÚßüäŸåÅÆ±ç« oÓzÜZT÷ˆX›ß܇YIªÉMŸsɾ-ºgº~¾ŸòËü þ¹¾¾ŸòÍü þ¹_Oùeƒî?×+ëéÿ,°ÀŸëFKg…T}•è7Ȇ­x±ÞJ†œ‚>&§ož}}?å–¸ÿ\ß_Oùfƒî?×7×ÓþY ûõÍõôÿ–h>ãýpdר-à«ÂA/µ mð×ÓþY`ûõÍõôÿ–X>ãýs}}?å–øýs}}?å–¸ÿ\ß_Oùeƒî?×7×ÓþY`ÿ?×7×ÓþY`ûõÍõôÿ–h>ãýs}}?å–¸ÿ\ß_Oùfƒî?×7×ÓþY`ûõÍõôÿ–X?àOõÍõôÿ–h>ãýs}}?å–øýs}}?嚸ÿ\ß_Oùeƒþÿ\ß_Oùeƒî?׋Ôú¡«ÃOX44û=zõÀŸ_Oùeƒþÿ\ß_Oùeƒî?×7×ÓþY`ûõÍõôÿ–X?àOõÍõôÿ–X>ãýs}}?å–¸ÿ\ß_Oùeƒî?×7×ÓþY`ÿ?×7×ÓþY`ûõÍõôÿ–h?àOõÍõôÿ–X>ãýs}}?嚸ÿ\ß_Oùeƒî?×7×ÓþY`ÿ?×7×ÓþY`ÿ?×7×ÓþY`ûõÍõôÿ–h?àOõÁ^¡‚ᾯ M€4?}ð×ÓþY`ûõÍõôÿ–h?àOõÍõôÿ–h>ãýs}}?å–¸ÿ\ß_Oùeƒî?×7×ÓþY ûõÍõôÿ–X>ãýrþ¾ŸòÍÜ®W×ÓþY`ÿ?×7×ÓþY`ûõÍõôÿ–X>ãýs}}?嚸ÿ\ß_Oùeƒî?×7×ÓþY`ÿ?×7×ÓþY`ûõÍõôÿ–X?àOõÍõôÿ–X?àOõÁ^¡·¸o«Â(` Åß|õôÿ–X>ãýs}}?å–¸ÿ\ß_Oùeƒþÿ\ß_Oùfƒþÿ\¿¯§ü³A÷ë•õôÿ–X?àOõÍõôÿ–X?àOõÍõôÿ–X>ãýs}}?å–¸ÿ\ß_Oùfƒþÿ\ß_Oùeƒþÿ\ß_Oùfƒî?×7×ÓþY`ÿ?×7×ÓþY ÿ?× µ¿6i>Z³}k̲iÚvU{›ÉVT±¢ƒ$Œª =wÈ'ü¯ÿË?úš|©ÿqkOú«›þWÿåŸýM>Tÿ¸µ§ýUÁVŸŸÿ–u’¾lòªþéºjÖ›û{GçÿåŸýM>Tÿ¸µ§ýUÍÿ+ÿòÏþ¦¯*ÜZÓþªæÿ•ÿùgÿSW•?î-iÿUsÊÿü´ÿ©«ÊŸ÷´ÿª¹ò¿ÿ,ÿêjò§ýÅ­?ê®t¸uX.#K›h-¤†TY#‘>%taUe Ђ7lqO¯§ü²Áÿ®pïËJÛOüåüËÕuŽÚÒßCòÜÓHvDD†á™‰ððÏÞa×|ÅæŸ+ù—óçHòg˜.µ‹¿4Áæ­/U‰Ú ;Lp‘bD‚&€H[¡<¶ëõ3Kü÷›ÌSéé¢yoVºÐõ;8.“]·^Åh¹–­yÕ¨Ï h[Ô?!|¦þoþ]~`ê^p¶¼Öâ4ÉBæ] F÷Ò”-¾ò¬©È•&CGZ•¦Ù´íKOÒ¿%¿;tÏ1K:¬zç˜Rî9È/ê]ú°#©-PǶz;É¿™Ö‹åí+È~dò~»qo…]êk›cÆÔäZ¿³Ðšç†ü²ºä—_•z–¥{mùmuæÛ/©h1ʧláͪËx¥ÂÀû¼+m¨øK‚¤çFP²Ó¿ç?6ômnh“XO0y‚Þæ9õ ÍÅÐ6ëC¹g8w;S>€YÛÝØþZ%¶® ½‹ËÜgךÚÑÜ÷ë¾xòòYÕ¿-|£«[þfyÖÂ+­Òe´´»`„2m`ÄHUè'lé¾\ÿœtó”<àŸ™>EüÇÔîµ¹ìN™z¾j¶•¼ÖÈÆH‚$jÈѹcRì#¶uš~tÔßåOü&ïï!—OÎú›ü©ÿ„Ýïýä3qüèÿ©¿ÊŸøMÞÿÞC µíkó_ʺm×™|ÍçŸ'Xi614÷WW^¼Ž8£^¥˜ê |‡RvçòwüåTžÊ_œÿ—S}W‡­õîÌŽuãO¬j1òè~Íißó‡üåsy­ãógç?åÔ-t¡ÚååB_WÔdã¹Û•+Û9V¥ÿ9çæ/\$y†ÓÍšhKCò6±=¨’•1ódsQBõFq_ÍŸÏ/ù̯Î,êþMògÕ¼¥®Ã%µ¾¯Ÿ-…ì¶Žx±ôn.ØÄdVVZñ'ƹðƒÏ~@ó厷sä¿Ì 6ãIÖìØ,ö·)ÅÖ½³)*{ú“ÿ>îÿœdüèó–¥ù‡äß6ßþ]ùjúŠ ±nÓ IÕ«ðAêGTAþí¡ñS×87üæÿüáŸçu§óÆ£rÞdòÖ­'«&¹oh-ãK¹ ^9aVH“º’@~Ûä‡þ}Õÿ8µæ¿Í?éšÞ‹Øy;Ë7ðßK¨Oc¸žÝí´@²—f"ŒËÈF7>úŒ}E$bæÖ±'p{ý8ϯ§ü²Áÿ®o¯§ü²Áÿ®Q¿J¼°ÀŸë“X¾ÓûŠÿgË$™³fÍ›6poÌÏøêÇÿþ$sžæÍ“¿.ÿ¼ìÛ3f̓¿ãËþ{ÿƸ6^a›+6lÙyY³fÍ›6?ïÿŒçþ#€sfÍ›6lÙ³eœ¬¼¬Ù³`û÷–ççëÀ³fÍ—•›6lÙ³fÍ›6±ÿwÿÆþtÍ›6lÙ³fÏ>~z\y£RÔüùmä-rO-ËæfâíNÞ%–á-l­šå㇖ÊÒñà_öA®ý2jçuþß™žmÿ¤ˆÿæœßô->`ÿË›æßúHþiÍÿBÓæü¹¾mÿ¤ˆÿæœßô->`ÿË›æßúHþiÍÿBÓæü¹¾mÿ¤ˆÿæœßô->`ÿË›æßúHþiÍÿBÓæü¹¾mÿ¤ˆÿæœ)×ç¼îö3(þlyšÇYk‹¡Ô(àƒûÈX(u" ŠŽ¸ïÈ?9k>}òEŸ™<äðK­}sR²¹–Ú!R;¹ ±—JÓ¶-ùÍùg}ùŸ£ØÚùgZ“ËÞcѵ(5m'THDâ ˜CêBH#ÆÌŒ§ù«‘Ó¡þÿåÅпðÿ¯¹¿AÿÎ@åÅпðÿ¯¹¿A~ÿåÅпðÿ¯¹¿AÿÎ@åÅпðÿ¯¹†…ùÿÿ—BÿÂwþ¾æýùÿÿ—BÿÂwþ¾æýÿ9ÿ—BÿÂwþ¾ã[@ÿœpR?Ìm 1<¸ Æž®|÷üûÿœ¾¶ÿœ#òô?‘ß—ú’y¿ó>k¹µ]{Y¸#ºº“ÔŸœ ¸HzE°‰{×l™Î$ÎgùOþsòŸó÷L°O:ÂÒM§ÌþœQ܆íhã„–÷*¤y0Ü5vÏ\y³C—òRa}äŸ9Xé:|1½Ñò¯™õÑ\ÅäËmsrïq HÀÖZICðŸŸùÊ?ùϯ?þkñÞynî÷Ê^\²^º^~âŽE$’Iâ4¥N[(Øgºç?çäöiKù[ÿ9+¨È“YFͧù†á•¹Äƒk{ŽŒX~Ä„»7Ùju=Ãó þr;òjbÿóòkÎ>i—̺х5M+Éh.e¼hTvöò¸J î q¹Ï?èo_þ[?EÿÎ=ÿÎ~aþ|y¾/$¾›y XF ×ú–¥gÔ~S~QùSòCËv¿—ÿ–ú|v]²Žl£÷·Ò4ÎjÎíîOð³¤fÍ›:nƒþðCò?¯ úßûÝ7Ì~¬*Í›6Ÿýå¶ùÉúðVlÙ³eåfÍ›6lÙ²ò°pÿxügñ›6lÙ³fÍ›6lÙ³fËÁÖßï=×ú©ÿÀ³fÍ›6lÙ³fËÊÍ›6·ÿyn~QÿİlÙ³eåfËÊÍ›6ló—ç7•ôŸ<ù÷ò·É¾qµMGAºÕ5{›‹ É6óËicêÀf޼d¿Äªá–½³½êß’ÿ“Z Gq®ùWÊVQÍ"ÃÜé¶‘¾Ê)tcØ ÎÿмþVÔ‘å¿û„YÿÕ<‡yòûòÉÓ%Ÿ›´_#éW¯4Žú×M·fZÒ¡dU${Œ~³ùsù åË[}WÌ:’,,¯+iî­4Øc˜ZÆî 0¦û‡z?ä§äߘ­#Ö<¿åO)ßXL Žâ×M±–'ÐñtB§…:ßå—äG–®íôŸ1èJÓï®éõx.ì´èe–¦ƒ‚:†j¶|_Ì•?‘ÞOŠ;¿7ysɺ\·ä¾±ÓíÕÛùTÈŠ ök/üã¯å¯hП%yj[;¨Š“—iGŽEꬩ]Á؃îp/ùÅSò¯Dµç#ÅkqªZCêÈÒ2Co}4q'7%ˆDP«S°g¡óÉxó-¿å'æV±¬~eh—Z—åÏæ•e¤M¨X,³}F{¥WŠò8À)ê焊äÔq+½s¦iŸó“?’š6ƒôÏZ/Ãkõ$²]:çÒüxzt+ÓŽÙ¼ÿ95ù-ä ÓÉÞP’êËF±Ò¶¶K¶XÒ¤ñÃoÒ¹ÏôÿÌùÆý3[ÿXYܦ '7*¿WÔÙ&mýDµ$Û£WpV0Aø…øï0~dÿÎ6ù§\>t׬%¸ÕZH啾§|±O$F¨óÀ´†f^Í"9Ø¿èr+xú_]»áJSô}Å)áö3‹h^tÿœjòtÑ4¹á¿Šy.¡¥û[C<›¼°Û16ñ9;òHÔƒÒ˜¶±ù‘ÿ8Ù¯ëÿã^ÂIµvš;‰Ùß,2ÍØ’[u¤ºöy#f÷Éçÿç+ü¿æ-PÐ?)t­SÍ>g¼¶–ÞÓL‚ÖX9¡y%u¢F€òvˆœ‘~^h‹ù?ù}åÏ,ùúþÆÅ´m2ÓO¹»šu†ÔΉBIxƒS²Ö„Ó¦y³þrƒò“òÅì¯<Ýç-#ºi/«^EpIAñTFĨÜnsÏdÿŸˆ~Zé—+mä+̾s´ôÕ¥¾ò朷6ÑHÕýË»H´ˆ­:m?ç1?3|ʃ]üºü‹ó©å©˜ýVêþèÙ\Jªx±hRøãjûâí¦Îaù ÌþFÑ,¯ÐºDåå»±Ža²šÚ€ÓBˆ«¯\ù3ÿ?Õ;*µ;ÉO̯ÌMOÍÞZÔlàÔ}W´PJü˜ÈBÞ§§@H.@$UA¦|ÑÒ$h¯­ž;qvÂhȶ °˜†» nyt Ü×?^•ŸóŒ?”^WÑ,õMÈZ-î­aeq}ͨº++D” ¯PÇŘ‚«Çߦz Ëú•å;OÑ>T°´Òìy™>¯co¼\Û«pUyæ•Ã#Ë¿8§ægüã‡åoç=üÿæ¿•¬µ­NÞ/F+™L‘KéƒP¬Ñ2—·*ñè6η¥é–z%•¶‰¢ÛÅi§Yİ[[@"Š4UEZ¶#¬èšo˜ìßFó•¶£§ÊU¤¶¼…'…Šš©häIqQ¶V‹¡ižZ³]ËV6ºvžŒÎ–Öp$«6ìDq…POsMðÓ6^5ºWþ¡òW›6lÙ³güÌÿެñâG9æ^c“¿.ÿ¼ìÛ3f̓¿ãËþ{ÿƸ6lÙ³eü²³fÍ—•›6lØ8ÿ¼#þ3ŸøŽÍ›6lÙ³fÍ›6lÙ³fÁöÿï-ÏÎ?×€3fÍ›6_\¬Ù³fÍ›6lØ:Çýßÿø`—•›6lÙtÊÎùÿ“'ò—þÛ:ÏýÒäÂùËßÌŸ>Yj_åä]óØy”é÷þb»cÇÕ,«zŠÂ“Ið Ó£¹êÊ??[þiy3Bü°þëW°‚ê”§uÖ¨Õá¯Î?ÏÝßóUü¼ógž5ï,hú6—gH4+OT½ÝËs/3ýRæŠ# da‡çÿ熗å5ù3òæÿÎúÖ“ Ï£\j—wúMºÜÞÞ ¤p3µœPµYŠÄ¿F{Oòš÷NÔ¼«§ê>_Ö®üÁa<~¤ZùO¬JÖ’Ž ¬½ ˜ÔŠPŠçˆ?4ÿ55ÅóŸ4ÿ4yÖëɉå‹('òÍ…¬PÔKCÌË)–Lᥤ^œlŒjï’Ξ}üòóùu{ªÝùF{_'ÙkÚÓéi \ûÒR8Á'Qñ.T ö-ÇþqwóWüÈòHºó”±ÜyƒIÔ/´{ùâ@‰4¶S4b@Àº…&€U ¡ü×ó‡æ'åî¯å¿;Ln´Ÿ,Ïmi£ÎñÒAŠÌñ?mc ã_‰yP“µ>§e×6--̳€³9`:ˆeåfÍ›6tÝýà‡ä^Aõ¿÷ºo˜ýXVr³fÁÓÿ¼¶ß9?XÀ9³fÍ›6^l¬Ù³fÍ›6ï ÿŒãþ#€seåfÍ›6^QÍ›6lÙ}r°}·ûÏuþªİlÙyY³fËÊÍ–wÊÍ—•›Ûÿ¼·?(ÿâX6lÙ³fÍ›6l¿l¬¼áþ{ÿÉ«ùMÿ1Þ`ÿºnp_ù̇Ðÿ9¼ö&<ǬYiÚw–¼»u¬•»œ@ͪÜ6Eî}><Ïa^ý3Ôßÿó‘>\óg凕|÷æýbÎÎëQ³XeiäXƒÜÛþê~;Žjzxçó¿•?0î4<Ëù«¥ù;BÖü¬ºe½æ±tœ¥µ‰LÓhÓžü‰§¨»oLæÈ<ÙùÝæ&~lþMùKJÖ|™—&{F׿[x!¸¹~ ¤œßš¢ö èÙéÊÿϯ#ßùjÞ{Ùì¼¹47mÅ„¬¤wv¯éαoFNu(êHlðæ…æ•mæέSQòóyÑ'³¶V´ÓFŒÚü1Oêßýå¹ùÇúðlÙ³fËÊÍ›6lÙ³eŒ¬cþïÿŒü0é›6l¼¬Ù³güÅüÊü¥§ý^u¯û¥É‘ /ùÇ5~l~`ùÃó[Ïš×™<˜òO£Ã ê1@'ÒíÅD²üï+’Ôø)á…Ÿ“óŒ¾lÑ´Oòs[×ü×åï/ùsY¹—@Õ´½N¦Ôì®Ï©KŠ#ÔÄÕ_²ju5ë˜_—z–¥åÝ+Êù»JÔí!†ËU³x ºB±zNºƒÈõ•¹bEUj8×"ÞSÐ|ÿÿ8Ý¢ycDÒ¼²¾q°µÑÅÀÓÄ1_ÚÝz†Fýô¯G¶ ñTP °­HÛü¾ÿœfÖ¯|¼n5ÿ2ù“ÊZŽ¡¬jÜÖ:¡ ×eõ2ž(6b´«œ£óò³Íº¿ç}*÷ÈÒþbÚù²ÚÒ5››‹bú} z2zç”a÷ÜâãÈöåC’ë þaÿÎ?ëZž´-çÏKå?/jñÛÜGÀ»²%ã›”Íñ#r(Näu®z#þqŸòÛSü³òbØù±c_Õ/¯5}B(ˆ)÷²™LJA5ZÔÔ‚sÎ+\MåÔ)Ž k~aØ1ô³Ÿ=óI-=Wf§NDœN¸åVj•ÔøgÏ?ùø/üåýÿüã–ìt$Û¤¾jó4W+kxîJYEåP»™jÇÄŸ‹zS>þGÿÎZþaþHyÊßóMÕ.µVÖòÇPºšH.âÕÒ@[©êöZ†‡¦}äü¿üïÿœšÿœ‚Ðìüÿùkå?,ù?Ë×P,¶²k3µù¿I X¸É Œ%(C-I5Û ®ç.<ðÃPüòüÐó™/Ñ@¶ú•ÏÔ"µWø¥Œ)õ¹©cE5Z(sÒ>Dÿœeü§ü¶¯üäýÚíà[y&{H¥gE¡©æ§r@$ާ;»M#¨Gv*¿dh>C¶½±´Ôàk ZÚ ËG ¼1,±±]Á(à©#¶Ûf³±´Ó [*Ú KD©H-£X¢Rw$"¢§­ø'6lÙ±{oï¢ÿ]^]ßûÑ/üdo×óP0)"«£¬ŽVR(UØ‚6 õÏ•Ÿ™ŸóéŸËÿ?ùÂëÏ:¿såí"öuž}ÚÎ7E$ÖE‚J¨_öAFà˜mŸK|™äÝòóC±òG’¬¢ÓôM:%ŠÞÞU»7;Ù©V9&Í›6lÙ³fÍ›:nƒþðCò?¯ úßûÝ7Ì~¬*Í›6Ÿýå¶ùÉúðl¼¬Ù²ò†lÙ³fÍ›6l?ÞÿÇüGefÍ›6lÙ³fÍ›6lÙ°}·ûÏuþªİ\¬Ù³fÍ›6lÙ³fÍ›6·ÿyn~QÿİVlÙ³fÍ›6lÙ³g?7¼Í¤y?óò§_ómý®—¥Å¨k¨÷W³$«I§qEi…ŽËS¹ØgWò䔼¿©y“Í~m–ÃÌú§™uFÔšãPµ·Á±A~g„j(7ß­%ùkÿ8õå/ I¯ZÞ>«èš¦­6«§é÷vVæ=4Ζ(jXpfø…)ïˆù‡òwUM[XÔ.<ብy…5; ‹AxŠV?Dµ™õâäDZ\rø©Û¯äLžN“J¼ü–óJh3éúLZ,±ß@5 iíá%‘Ì+5¸YÃYø†ÜrmäOÉ%y?CƒËš¤6Üéqq{5Þ¡¼®÷72fu €.Oñ4®rß2Î:]¶¥æy.|è<¿ ùωÖtãiÇ=1 ’YÈ&ˆ@ÒDµRMÇ/l0ÕçâÒ/´¯0~Oy yoRÓ´ü¶í4 yÖ1vY2•“‘Ÿ±OòÿËÞRÿœ}òE¿—ŸW‚ IG’ëRÔn"”’È^I¦•P]ØîOp*såïüâWüæï埫mÿ8õªÞýCW‡PÕ’ßPžEú•̲ßK$i€q¢°àÌÜO@wôWÍŸ˜~TòCžµý+E{žF¨ßAldá³põr¥w§Ló癿ç;¿)t)n|½å=z4ùžÝÄPèÚµÍÜ·/_ˆA,Q¼NU‰REÎIæùÉͿ̕yòëÌÞUFÍZÌ.üd[] -h¯ÇâÞ‡#Ú§üâïæ÷çeŒžZüмòo‘´YáiO+hQ5ã´«ÄÚÌÞ¯ØPƬ«(9ñÛþr'þp/ó+òOÍrykËzF§æaêiú®c$«,u¥$H½C©Ø«‘â6ϯŸó€_óƒþEèÒþ`~lÛEyæývÑb}&î'‚ÂÁÀj‡å;Pr Žá¡59î¿Ì/É&þfyKTü­×´«[mW@'K"·e‘wŽeâ¼}HÎêH9ùåó—üú×óƒIóľQò…Õ<¤×i`2ABÝÈýä‘y‚€üjQ·\ûÝÿ8ßÿ8ëå¯ùÆ?'Åù{äÆ{™ÅÆ£¨Jª²^\Ò…ÈeQð¢Ô•_Ú9ß3`ý3ýê‹æQÀ6lÙ³fÍ›6lÙ³fÊ=N©ÿPù+Í›6lÙ³ƒ~fÇV?øÀ¿ñ#œ÷+/ç“¿.ÿ¼ìÛr³fÁßñåÿ=ÿã\—\¬Ù³eåfÍ›6lÙ²ÎV?ïÿŒçþ#€sfÍ›6lÙy]3eåfÍ›/[ÿ¼·?8ÿ^Í›6lß,¾¹Y³fÍ—\¬ÙyX:Çýßÿø`›6lÙ³fËÎ?ùÁùaùå=vo-y§Ë×ÿ¤4½R(EÂÆÎžœÑË2¬©,d¡ v­r/þüûÿË­aÿ„­·ýVÍþüûÿ˯aÿ„¥·ýVÍþüûÿ˯aÿ„­·ýVÍþüûÿ˯aÿ„¥·ýVÍþüûÿ˯aÿ„¥·ýVÍþüûÿ˯aÿ„¥·ýVÍþüûÿ˯aÿ„­·ýVÁ~Iüö½-n¿5­=4Eå{dr¿´½_…ˆè{ó¥ùȺ_å_—bò¦$ÃK²k›—¸¾˜¼…¦‘¦šYdsSVfbNÀg üÀÿœ×üšüº¼:.¡æ{mOR6ßX† ’÷Ö-^+FÔõŽ!|HÎceÿ9Mùµù— “~MþPj–úl‡êk¨yžv°–Úå†òµ²Å(xcä¼¾*0 Ä¥ü‚ÿœ‘óóýWósóbËGÓ#“[yFχ×aþùf’4gÂŒ¼ˆ©;a'æ¯üû[ò÷Ï~TÔ<½ ^êqùÊÉ¥êºÅýÍ÷ÕYkû®2Hiµøè+P‡ˆó?òWþ}aù“æ/8C§~o@º”íËwv ;\¤n¥~)F%x¯ÅÔS?E>Uò¶‘ämÃÉžP´K Lm¬íP’±F½MI©©$õ$áölÙ³fÍ›6l^Ûûø¿×_×—wþôKÿõà|¼¬ºåfÍ—•›6lÙyYÓt÷‚‘ýyÖÿÞé¾cõaVlÙ°tÿï-·ÎO×€²³fÍ›6lÙ²ò²ò³fËÁ£ýâ?ñœÄpVl¼¬Ù³fÍ›6l¼¬Ù°}·ûÏsþªİlÙ³fÍ›6XÍ_¬Ù³eå`û÷–çåüKeåeåfÍ›6lÙ³eäcÍÞHòïæ'—<÷¥Yë\ªÊö÷°¤«F%KQˆý¤!½óœ¯üão傉 H 5]F€ùïŽÿ¡oü±ÿ« ¿÷Ôì£ZÎ5~XJdç ËðÄÌ?ܦ£ÔÏ|?çÿ,êÃ/ýÅuû(Åüã_å™ßô´÷ÕuÿcϼÇäùÇ_(Kucæ»Í#M¾²F’âÒëÌ·QÜ UçC]©]Àï¶y+Xÿœ‚ÿœi¬Kùiä¯4ùé¨Zé|½&£1´ZÑLÕºÛ™¯ñ?üæÖù‡«yJÇÎzWå¶«äO%ÆÍõÇý/}{õ¨n8½¹¼†_†"œw©`¸×¦|§°K™.aL5ãH‚&C!?;ò­)MëÓ?NÿóŽó„¾K¾ò‡®ÎEh7^aóµí’É{¿yupm˜,Hò~貕.£~™íŸ'þTù'òú+K_"ùsJÒ’ÁJÚ½µœK4A«^3õjjjKW|è/+Èy;>æ¸ÌR9¤ˆ2ƒÖ†˜™ß|¬ºž™YyX?Lÿz£ùŸÔpÍ—•›6lÙ²ò³fÍ›(ô9;¯ýCä«(°NjƒÓ0`v5GNù‰®^poÌÏøëGÿþ$sžôÊËï“¿.ÿ¼ìÛ3f̓¿ãËþ{ÿƸ6l¼ÙY³fÍ–r³fÍ—•ƒ¿ãÄÆsÿÀ9yYyYyY³fÍ›6^VlØ>ßýå¹ùÇúðlÙ²ò³fÍ›6^VlÙ³`ë³ÿÆþ6lÙ³eåfÍ›6lØô¤!PTœæ_šœžIü—´›SüÎÖ­´¤‚ßëf'&IÞ.\yGa™÷Úƒ|ò³Îzù{óŽƒÿ8ÑåíkÏÝÏ,îE¯ÔôÄ»}Ä72\¼2%â,¢›ñ°Mÿ9™ç»-…·“¿/íHú»ÙÝ»^ÜšƒÎæ)N¢€Ñ°ø—u¡ÇÜÿÎyWÏ7^üùóO™|ã®GÂ(®í-#©¸¢†5[‘ûDW¦z³òóòÈÿ”ú{è—>_°Òtù'7MQ™?|@ÃJ]  3¥I+LÜåbÍÒ¤ÔâyyC6lÙ³fÍ›6lؽ·÷ñ®¿¯.ïýè—þ27ëÀù³fÍ›6lÙc6VlÙ³¦è?ï?#úò­ÿ½Ó|Ç꼬ٰtÿï-·ÎOÖ0lÙ,¬Ù³eåfÍ›6lÙx4¼Gþ3øŽÍ›6lÙ³eåfÍ›6lÙ°}·ûÏuþªİlÙ²/ç/9éAÒ¥ó7šfhlbeOÝÆÒË#·ÙŽ8Ðw=” õÎ)ÿCgù}üž`ÿ¸ ÷ýSÍÿCgù{üž`ÿ¸ ÷ýSÍÿCgù}üž`ÿ¸ ÷ýSÍÿCgù}þûóýÀo¿êžoú?ËßäóýÀo¿êžoú?ËßäóýÀo¿êžoú?ËßäóýÀo¿êžoú?ËïäóýÀo¿êžvï'ùÃIó|­3O§Ì΀¼mˆèhñÉ€ÈëÝHÉ6l¬oþòÜü£ÿ‰` ¼¬Ù³fÍ›6^VlÙ½±t·‘Õ¥ˆ€–$@IßÀgœ¼ñÿ9eùAùw¥¿™<ÍæÛ©Ç*BÂÏÔº—›Ô E–#cSJùÆ­ÿç=´¯9´ºWüãç“¼Çæûëõk]#Q6©k¥Oph’IåŠXѡبÜmã…òy‹þs'ÎA¤yoÊBk`ZIµ;“|·d ‰®8pÜ’BÖ½p\¿ó‡bü̶ŠÏþr?ó[×ôÙéwy¤i¦;d½¡¡†DˆIéFIà¤î)Ë&~Zÿœ üˆò¼VÑÅå(µ+»Y=e¿Ôîn'ºw È4Œ$Un'`8Ò€ g¯-£ŽÄ³iñEn^œÌ¬|©Ò¼@®Ô,­µ[[+T….l¯"x.!”U%ŽAFVŸ†yò¯þp#òcògÍþgù'K¼:å³Hö«{tg··y?j8è7Phœ‹P{ïžÆ$±äÛ“¹9Y³fÍ›6lÙ°~™þõGó?¨à Ù³fÍ—òÊÍ›/+6lÙG¡ÉÕ?ê%yÂ?<|»ä{-QüËóþ‘k¨É¤ÙHêgqÝcü¦ wÏ/Gù_ªùò/T^}7™¼á,W7v:zÉ$–Ëw "B–)Qü$“A¹4Ѽ‹©ysòý¯¾±äÅòwš£Òn®lyc¯"¶ˆ´”xIZ©’“ËzÓ9uÎ…þü©Ò?ç"ìç˜ù妴Õnµ‘‹Î—SöÒÔ¸„íÄgPÒü¯§þ|y»Ï~qi.m4I Òô˜Ã2­©kq+\FÙ˜³ˆx è_‘™¿•Ö¾nók\Þ\ißYµ¸{x&º¸—ê³´!„q«É#°ž ÔÔáv»æû;Ü.±¤E}*ž‘[û+‹)yMDwŽW´ÕÂlÙ³¡ùbÙæ±æ…õí:©û‰ÉÔeñ‹þF§õÍõ š/ùŸ×7Ô%þh¿äj\ßP—Æ/ùŸ×}NO©ð¬uõ«ýâÓìø×ýF_¿äj\ßQ—ù¢ÿ‘©ýs}B_æ‹þF§õÍõš/ùŸ×7Ô%ñ‹þF§õÍõ |bÿ‘©ýs}B_æ‹þF§õÍõ |bÿ‘©ýs}B_¿äj\ßP—ù¢ÿ‘©ýs}F_¿äj\ßP—ù¢ÿ‘©ýs}B_æ‹þF§õÍõ|bÿ‘©ýs}B_æ‹þF§õÍõ š/ùŸ×7Ôeñ‹þF§õÁŸS“êa+}b¼Z}Ÿà?¨ËãüOë›êøÅÿ#Súæú„¾1ÈÔþ¹¾£/óEÿ#Súæú„¿ÍüOë›êÿ4_ò5?®o¨KüÑÈÔþ¹¾¡/Œ_ò5?®o¨KãüOë›êÿ4_ò5?®o¨ËüÑÈÔþ¹¾£/Œ_ò5?®o¨KüÑÈÔþ¹¾¡/óEÿ#Súæú„¿ÍüOë›êÿ4_ò5?®o¨KãüOëƒ`³[\)1Ô˜éûŦÇ瀾¡/óEÿ#SúæúŒ¾1ÈÔþ¹¾¡/óEÿ#SúæúŒ¿ÍüOë›êÿ4_ò5?®o¨ËãüOë›ê2ÿ4_ò5?®o¨KãüOë›êøÅÿ#Súæú„¿ÍüOë›êÿ4_ò5?®o¨ËãüOë›ê2øÅÿ#Súæú„¾1ÈÔþ¹¾¡/óEÿ#SúæúŒ¾1ÈÔþ¹¾¡/óEÿ#SúàÛ+9Ö©x\m"Ÿ|,%þh¿äj\ßQ—ù¢ÿ‘©ýrÅ„¿ÍüOë•õ š/ùŸ×7Ôeþh¿äj\ßP—Æ/ùŸ×7Ô%ñ‹þF§õÍõ |bÿ‘©ýs}B_¿äj\ßP—ù¢ÿ‘©ýq˧LçŠze¼ŠŽEüÙæmÈ6rkzÕôÍ‹$÷÷°ÀŠ\ÑA.Â…Oóšÿç9'´ çÐ<»­¿š<ƨ¢ÏOÐmn/–ög„ÜÁ—jÐüG‰Ù·È ž_ó‘ÿ™2z–?•ùA¾q¾¯ækè⺳ $ÓY3Ã#*ž\T ä(A5Á7¿ó‡™_š/&­ùÝùµªÇ Á5?/ùu¾§¦Én”8‹Jå9W<[â'lê_•ßó„•?•2.¡§hÑkZ¤W+so¨kóCwnÈ(«Ž£Š¼iö·ÏQZé+§ÆÖÚlV¶°9äÑÛ˜¢F>%R€Ÿ|2Ó¬¤K˜ÙŒté"žÇ°8XKüÑÈÔþ¹Q—ù¢ÿ‘©ýs}B_æ‹þF§õÍõ š/ùŸ×7Ô%þh¿äj\ßP—ù¢ÿ‘©ýs}B_æ‹þF§õÍõ |bÿ‘©ýrþ¡/óEÿ#SúæúŒ¿ÍüOë˜XËãüOë•õ š/ùŸ×7Ôeñ‹þF§õÍõ š/ùŸ×7Ô%þh¿äj\ßP—ù¢ÿ‘©ýs}B_¿äj\ZÞÆQ4lLt§ûÅñùåÜÙHÓÊÀÇBìw‘|~x‡Ô%þh¿äj\ßP—ù¢ÿ‘©ýs}B_¿äj\¿¨ËãüOë•õ |bÿ‘©ýs}B_æ‹þF§õÍõ š/ùŸ×7Ôeþh¿äj\ßP—ù¢ÿ‘©ýs}B_¿äj\ßP—ù¢ÿ‘©ýs}B_æ‹þF§õÍõ š/ùŸ×7Ôeñ‹þF§õÍõ š/ùŸ×:&‹ŠÊ$jTÄ×Äd7X´’KÙLt$u‘AéàNýB_æ‹þF§õÍõ š/ùŸ×7Ôeñ‹þF§õÍõ š/ùŸ×Mg!¶·Pc¨2»›Ÿà?¨ËãüOë›êøÅÿ#Súæú„¿ÍüOë›êøÅÿ#Súæú„¾1ÈÔþ¹¾¡/óEÿ#Súæú„¿ÍüOë›êøÅÿ#Súæú„¿ÍüOë›êÿ4_ò5?®o¨KüÑÈÔþ¹¾¡/Œ_ò5?®_Ôeþh¿äj\¯¨ËãüOë›êøÅÿ#Súæú„¿ÍüOë›ê2øÅÿ#SúàÁe'ÔÊV:úÀÿx´û>5ÀP—Æ/ùŸ×7Ô%þh¿äj\ßQ—Æ/ùŸ×/ê2øÅÿ#Súå}B_¿äj\ßP—ù¢ÿ‘©ýs}B_æ‹þF§õÍõ|bÿ‘©ýs}B_¿äj\ßQ—Æ/ùŸ×7Ôeñ‹þF§õÍõ|bÿ‘©ýs}F_¿äj\ßP—Æ/ùŸ×7Ô%ñ‹þF§õÍõ š/ùŸ×7Ô%þh¿äj\og ‚áIŽ¥RŸ¼_æï¾Ø êøÅÿ#Súæú„¿ÍüOë›êøÅÿ#SúæúŒ¿ÍüOëœ+Îv¿\üßü´Ð5>é¦wQú¹`ñýnÒ8¾¯?Ç©wÝW“S®v_=~~ùGò÷]‡ÈÚÛê7ôö¦õ-4Ý*öþAn<ØZÅ'Ëmé’?Ë¿Ío,þj[Ý]ù2í¦’Æcmym<Û][JxMo:¤±’7”Tn1¿˜ÿšÞ]üª·²»ó|·µ‘igÅäóÌT·†Ý$ì 'ÉùãåKO,Ëù‡¬I{¦éÌ-é¨i×v·/) *Gm4K4ŒäÑ!åÚ¸kùwù³å¯Í(ïÊ72µÎ0‚öÒîÚ{;»w"ª%·¸HåNCu%há8—æ'ç•¿+šÊ×ÍwRýRvŽÊÆÎÖ{ËË‚‚¬c··I%eQ»0^+Üá8ÿœ€òyT~e¦ª­¢þ¨8Ã1¹ú×.?Vú°O_×®Þ—Süœ~]þjùoóNÞîëÉ÷2I%„æÚöÖæÞk[«ii^3[Ή,d×’ŽCq\ó¿“­‰üäü҆ߊGéyiø ¼ÞÖBÍCAÉ»ž§¿Lî¿P—ù¢ÿ‘©ýs}B_¿äj\ßQ—ù¢ÿ‘©ýplr {…¬u!)I³|ðÔeñ‹þF§õÍõš/ùŸ×7Ô%ñ‹þF§õÍõ š/ùŸ×7Ô%þh¿äj\¿¨KãüOë•õ š/ùŸ×7Ô%ñ‹þF§õÍõ š/ùŸ×7Ô%þh¿äj\zi³Èi¦ÄvYþ£‘o3ùŸBòMœúÏœõ3I°¶*³Ï{{)cE ]… &€óÇš¿ç5ÿ#<›,Vº—,od™Óô2Kª¨¦Ô‘¬ÖE‰û!ˆ'¨Û97ý æßOÔÿ%¿%µ™î£¬³IæYÆ›nÖæa ìH³c&¤Yøg œäPò­õrwù‹mæq£+þZϬÑJb™$ðFy$×ejlsÉäýsóÌzw›|ߥ?—ôýÏQ´[YäYfï¢ôË©Ž€"Äî{g=òßÏ:ו4ÿùÇ][NH4>âŸ^ò†{+i}DTˆ(U€U ¢‡â9:Ô<¿æÿË4y“XòF‘úoMó_£:ç›;´‹Ñ&@ÊkZ«¾Äqιù3ù}'å”4ÿ']Ì·p %¹• ÓM#I!ZïNL@¯nÃ#™¤V0{[ŠÁ癳dïË =ÿ°îƒÃ5†j Ô:ƒêTÿ‹ÿã\Aᚃ7á—Aá•AᚃÃ5†n#5†j ¾#Ã*ƒÃ5†j ÜG†]U† }Dmþï?ñAᚃÃ5†]†U†_á•AᚃÃ/ˆï•AšƒÃ5j Ô¨3Pxfâ0}¸U¹ùÇúðj Ô¨<3q¨<2è<3Pxf 9TtT)šƒÃ5†j Ô¨0u€¿ÿŒü03Pxf ÍAᛈðÍAᚃb*¾£)üͰûÎÙÁ¿1ç'?*?+-¯n<ÛæÍ(]éò¬7:u­Ô3ߤŒÜxýY\9+Õ¼ùç‹_ùÍ­{óåtOȿʿ3jÒݹ:n¯ªÂÖ:EÌ RÓÂ?eÓëɨ+‚o|‡ÿ93ùÐæóÌ^iÓ¿+ü·pÁdÒôhþ¹ªBa:\´pž2¾ì¾ ¢í¾I¼¯ÿ8?䯒=só¿PÔÿ1üÅÉŒ×zíÌæÞdãÆ%k1+EX—ì·Zü]sÒÞOü¦ògåý¤:w‘<µ¥éVvÒ4Ћ[(ŽF5gY —½ùdòGi›Ô”–cÔ±©Äè<0¿VÕtï/ÙO®ù†îÞÃLµORâîêEŠ“§'v Qó¿+yÏË~zµ“Tò&±§k–PÉéK>›sÌi%+Å™ ©½Lô°>µÿ[õðÍÄxf ðÍAᚃÃ5†j ÜG†j Ô¸ Ô¨<2è<2¨<3Pf Åí€õ¢ÿ]^]àX—o÷c~¼AᚃÃ5†j Ô¨<3Pxf ðÍAᚃ.ƒÃ+ˆðÍÄxfâ2è<3¦h?ï?#úò®o¦ùÕ…T¨<3Pxf ðÁÓõ[m»Éúð †j Ô¨<3Pxf ðÍAᚃÃ5†j ÔtT¨<3Pxf ðÍAჀR;»ÇüGÐxf ðÍAᛈðÍÄxf ðÍAᚃÃ5†j Ô¨<3q¨<3Pxf ðÍÄx`û`>¯u·ì§üKPf ðÍAᚃÃ8§˜ÿ•ÛùkOúµùŸþMÁ‘o??œ£ÿœŒ·oË´©oÁç×]Zyá‡ÖÍ8˜c”“^ÄS ?(|ñyùWç?Í9?5´y'óh¸Óuk–òÜRÞÃ=Ì^•ºÅÉFõ 'cS’?Úk_ó‘úç’¼Ëùaæaä›0ê7bÏ[ÓÕ$Oü¿üʸ™ò§æ,]þ«è¥¼:ƒ›&šÝÞø#uf€$T Nu ¿;Û~Zþ{ùëÌ‚Êö÷M_.h¦ú "Õî§k“$‹4Qî[Óîwãí„>só¥çæ_æ¿üÍùAe=¯›£ÑõiM¯™mžÎÜiåÑÔdš9 …xã<…C0\áþ@‘æ×<¥mæ˜Ú-E¿5µ£æh¢Ðj‹hÆB”*ñ(YQ‰Ü­sØŸ–ÀÃÿ9 ù–lHФº}“wÅÀ/M¹”ñø©€¼¯CùÏù¢ +õ,Wz}VNÙÛh<3Pxf ðÁöà}VçåüKPxf ðÍAᛈðÍA—AáŽXËꤨêi°úræ¯ÌŸ&y À<ùæMD7A¿éè`õBý®Ør¥EiÓ<¯æÿùÏïʽ Q»ò§’ÿIyÓÌ–òˆ`Óü½l.…ãmËêó#áEX½Ži¿ó’~~Œëÿ•ÿ“×ha½f½{ Ó*€\ú"ýÝHâÕÞ‡?äOüäÏžŠÅù‹ù·gåý6†â%òµ‚­ÚJÃhe“Œ£@H'‘«i“/Î þ\G%¾µù˜ÚŸuíäÔ.u«û™-ï§5¬²ÚZ E~Ü)ó¼y?ò'ò×òö9íüå LŠå•æX¬bnl•âI‘XŠTÒ™Ö^i$QŒÌ‹ÐH!‰ÐxePxf ðÁúx›þ0>xf ðÍAᛈðÍÄxf ÍAšƒÃ5†j Ô¨<3Pxf ðÍAᚃÃ5†ÓúÔ{w?¨à šƒÃ5†j Ô¨3Pxf ðÍAᛈðËâ<2¨<3Pxfâ<3qD ÿÙ>JófÍ›6làß™ŸñÖþ0/üHç=Íï›'~]ÿxÿÙ¶f͛Ǘü÷ÿpVlÙ³fÍ—•›6lÙ³fÁÇýáñœÿÄplÙ³|³fÍ›6^VlÙ³fÁöÿï-ÏÎ?×€3fÍ›6lÙ³fËÊËÊÍ›Xÿ»ÿãÿ 3fË XÑEO¶E¼éç/~\X&¿çÝR×HÓ¤”@“]IÅL„Š V€Æy/Zÿœüü¶:­Ç“ÿ,-uŸ=y‚ÍÛëš§À± ø¦Y§1ÆÈ ±­OJo„’þaÎT~e7Ö,üŸ¡y;ËZ‹óÓõ~àK}kž·±É*óz ¨8´Ÿó†ºçæeº¿ü䇿µ®¦ Þ¾³¢é¦™, ’‹X’T ’7Û;Ÿå§üâÇåGåöŸü±ioªi¨ÑÛê&º£‚ÝŠ³H$¯Ë=eb¾hŸÊ6Qòa‰ç)üïüäÐ? |—¨þjùÝg“LÓøF"·NrK<§ŒQÀ›bÄ€SŸš?4ÿÏÄ¿:õÿ9¿æ.®¶ŸܤÖú\§Ô£Ž3ðDѰ%׈£b͹®~†çÿç&tùÊ$¯ôˆÏU±‘,õ›FB±ÅvS‘ôX–å‰w$tjôÍ{ççGþ~¥ÿ9æÝwÏ×ßó^ª[y?Bky„-êy!Y=YœÔž<¨ª´QÖ„çÿç¿ç"¼Ûÿ8ñç›=_ÈòÆöº¤ÐXê63©xna’@(ÀQƒ-j¬¤0>Ûgì&Åw¨‹ÐWþ#…ƒ/+6lÙ³fÍ›6lÙ³fÅí¿¾‹ýuýywïD¿ñ‘¿^Í›6lÙyY³fë›6lÙÓt÷‚‘ýyÖÿÞé¾cõaVl¼¬?ûËmó“õàÙyY³fÍ›6lÙ³fÍ›÷ˆÿÆqÿÀ9³eí•›6lÙ³fÍ›6^V¶ÿyî¿ÕOø–Í›6y³óºÿWò/›üƒùѦ[ ÝC»¾Óu¸’9$ž+=I5ÔHD&1ο²Õ r=ùç¿ùÆß̯2Aù‡©yúM?^·³6 q¦jÛ€¹~ ¡?ëJä·òËó¯þq×ò¦+Åòç-§¼Ô%^^ß\Íqs;(¢ó‘“¢€ŒüÍüéÿœvüÕ[95ÿ;[ÚßéîÏi}§ÜÍos1GU‘Pü,)ÈA ÈäÞ{ÿœ]ºò„Ÿ–7žj´›Mšä_Iq%Ôæí¯‚·&~<½P@£tÛ¥2Gù]ùÏÿ8åùIòùcÎV³^js‹‹ëÛë™®.n$Šd‘“p£e0æŸæÇüãwæìÚn§æ?:Ak«iïc¨i×sÛ\Â$^.¡Õ(UÇU ôD|áÿ8®|™å@ó=˜Ò"¹úúL.®>¶/9rúϯǗª[~_…2]ùaùÛÿ8çùCi{kåo9Z<ú„æîúòòâiîne¥9I#&ôvÎ)¥Þ\ùÓÍžkÿœÛü¢ŠkÍ&çOÓì´øn"hέ¦Ù©úüqÀü]%æªÖò7äPžç¶ü¿¯Xù§K²ó6…(›NÔ-ã¹ÁêŽ+CþRš«pß,Šlzàë÷–çåüKåb«·j!GÞh3ŒùÏþròÓòòöóCó§štÝ?SÓÐÉsk$ŒÒ  ΔE`I^€óÍÖ¿óðÿËß5·§ù9¡ù›ÎÍç|ºm€€Ú©4Bæå£™­8צôÀÍçOùËß8R/y/ÊþUÓµ$´Ö/ï=y¬ sÉkt–PÒpøYDl¶Ø*/ùÆ_̨͟¥¼ÿœ€üлKÉÑ$²ò¬PÛXËdVŒ¯ê@®$z°f©MÆJ|ÿ>þü…òA¹6>W:Ö¸úZî{¯L%HüKƵø¼vÏVù_ËZG’t»O+ùBÂßNÒ¬PÇko`”’h¬jÝIêÇYŒ‡“’O¾76lÙ³fÁöfÿŒ€lÙ³fÍ—•›6lÙ³f̓ôÏ÷ª?™ýG Ù³fÍ›6^VlÙ³föÊ=NìŸ%™³fÍ›6poÌÏøëFâ…ÿ‰繆a“Ï/¼ìÛóf̓‡ûÅÿ=ÿã\›6lÙ³fÍ›6l¼¬Ùu̓OûÄ?ã9ÿˆàÙ³fÍ›6^Vl¼¬¼|Iê:Æ6,ÀWçžnòGž6?6/<Á}ù¤ùsMò¾“«ÜéSëââæñ­Ç<¤A$b5õ ¬µ¦õ9Ð?@þzøù#þ‘uû(ÅSGüöDxAòE•ÿEÔ;ùˆÄ¿A~zøù#þ‘uû(Íúó×ÇÉô‹¨ÙFoÐ?ž¾>Hÿ¤]CþÊ3~üõñòGý"êöQ›ô篒?éPÿ²Œç?™žxüàü›Óìüçç-'Ë:¿–F£iiª +ë6×Vð]J!Æg–E~22U’A4鞘š?FFˆšñ$Wå‰eåeåfÍ›/+Xÿ»ÿãÿ )¼»·ÓDm©Ï ¨—hÍÄ©sþIrµú3Î^iÿœÈü”ò€t¿ó•…íÌS›ym4ú…Ò:Ô10Û«¿¡ Ôâ}óŒ7üåwç$_’ÿ“¤ŽäÏo¨y’ãêV`UdC"ÂCÈ8”Bõ¡;0eçä?ç׿¥¼V_šŸ™¿á½2J^<©jö÷N˵¹¸õˆx£äA§Û*Hü‡ÿ8#ùcåköó?ž’óϾaž)ò÷Í2-êNîkêú) "€[‘!~yê'Nòßåí¶ Á¦ht(ÑÚÁ‚Î5JÔ¬b«µMHú䕘¹æÆ¥¨kÖ ô5ï\¬Ù³g%üôü™Ñç ¼“©~Sù¾ií´ýGÓqqmOR¢<¢0Vê½ÇqŸ™ÿ6Ͻ¿;<½ç9¿/´¿,ßêv‚í`·ÕíáÿA–'? Æj”xîÁš©¸móô=ÿ8›ÿ8Ç¥Î*ù,ùJ¼—QÔ¯åKÝVíÀT’ç‡Dƒì¢„T±nµÏNgŽÿç/ç|·ÿ9Y¡Å̉¤ù¿Oô~¬«§¬7âî´`U·s‰ÿÎ ϸ´?ùÇMnOÌO>_Áæo2Âxé [*ÛZ7˜+—c5vV¨à:oŸOôÍî£$ïñ~£€3fÍ›6lÙ³eåfÍ›6l^×ûè¿×_×—wýü¿ë·ëÀù³fÍ›6lÙyY³fÍ7Aÿx!ù×}oýï›æ?VfÍ›OþòÛ|äýcæÍ›6l¼¬Ù³fÍ›6Y̓GûÄã8ÿˆàÙ³fÍ›/+/¦VlÙª3W5sT`ëo÷žëýTÿ‰`æ¨Í\Øåbµ¡ê>àõÛ ?Biõn²ÿ¤X¿æœß¡t¿ú·YÒ,_óNoк_ý[¬¿é/ù§7è]/þ­Ö_ô‹üÓ›ô.—ÿVë/úE‹þiÍúKÿ«u—ý"Åÿ4æý ¥ÿÕºËþ‘bÿšr¿Béõn²ÿ¤X¿æœ4½ˆœŠ lys̾bÓ¿çg»ó.°Ì?-5»ËíKP¸dcú"ýÓÔ'’·#Œ(a)¢±gÎÿ*ÿÏÓäÖ¿,ü÷«ù§ê~|´“Ëv–þ¢z]’ˆÿC›cBTf_‹jg ?çÝŸó—ð~sù.o$þdêcüiå´i'¼¾˜(º³fø%2H@.ŸebÍö¨z‡WÿœÕüŒòþst|ï¦jR×If¿ºcËr°@Ø»(£sœoQÿœÌó?šç{ùǯÊÿ0yªÂèˆt½zî9,4Ù&Ø?¬³ÄŒ‘ÆÕVbëZuÓõOùËOÌy ¶£¦ù_òÝ,Ǩ·¿J}u˜éñŽàðjŸµZaYÿœ 8¿Ö?<¿2üÛæ«K†77z:ݵµ€»jžP¯)8$dŸMi° ®w/&Î þLù#NµÑìü—¤jZ1t¿Õm!»½f-È4“²b§ì× g£¡Tµ%¬Ñ -öŒ(±ò§Jñ¿NYÜÔõ9³fÍ›6l¾¹Y³`û³ÆÀ³fÍ›6lÙ½³fÍ›6lØ?Lÿz¢ùŸÔpÍ›6lÙ³fÍ›6lÙ²C“Ÿû'ÉflÙ³fÍœó3þ:ÑÿÆÿ‰óçæ^¡ç=7IKÊ]2ËVÖÌê­o¨\5¼B&¨ç4ÚŸNyÉ¿Ÿ_Ÿ¾}¬¾YòF<EÔ–rÍúN_NY£u…¹S¡§}³ÐóŽ?šz×ç”[Íþo°¶Ó5$¾¸³{KiL¾Ÿ¢x‘'%R¯ZÕiÒ™ëO.ÿ¼ìÛr²ÈÊÁÃýâ?ñŸþ5À9³eåfÍ›/+6l¼¬¼ÙX;þ<‡üg?ñ›6l¼¬¿–VlÙ³fÍ‹Úÿ}úëúóÌß“^t¸ü¹ü ó瞬 K›+Ì^k»Žª»G{!˜@'®ÇÝþwþjù AÐ?4?0týûË:Äú|ZéS\‹ÈF¡A¯«GàXrZ‚GL÷× o ÝÊi!v>ÀTç’&?5?0¿6n-üвyfÛÊóÝ\d—I¨‹XehÕÈ3P5+@\GAüÛóÿæšµ­7É2ùfÓ@Ò5vÒÑ/î&7·S+¢F…Fä…=7ÏSyŸ_‡Êš6¡æ{õw·Ó­&»•cfXP¹ ^ä ³ÇQÿœó£Ÿ&ùËÏ:V—“üÿy–—ÓÉ{f× Ò@בcpQO©é·ÀO|{ÿ9EæÈôùÿ9¬4{)+lõ£¤L Ò HƳ‹g¼QÃÑôÖSöK×€&µÛ:üæ|‰7å§4LóEea¸ êVäRûýè“ýc²³fËÊÍHÚJújZ›š Ðg?óæ¿‘/£·¹óïš4]§hà{ëèbYEX)-¹ïžHÔÿçà^Y¿¿¹Ñ¿&<ŸæÌ+‹ ]/ŸF´ýÄ( T•}OQ%ýƒE¨ß¾ ÎU~pǧåY´/ÊÛ ]D·‘Fîâ)H) ÄrAHd‰GÇOÚ4핣ΠÙy“•çü䇜¼ÃùxÈ(¤¾¹°µ²¸sYÚÙ-æšRª@ è%Î;~Vþ\O£ä'hº}üP}X^%œopñz’¸frÔø™‰f;“›Ôn O¤ Jü €€ÔÆáš5ø|§¢jžm¼¦·Ò¬noä‰ "[ÆdeRv@N~H¿ç$ç+üëÿ9æÉ¼ß­^ÜÙi‘LÓ ˜¬6p²C1êîG&=NÃ>Áϰÿç/<Çù½Ïä_æ)›QÔ´[½±Õå ¬L©èJ(Êò–4Ùº úí›6^V*&/¤‚-M>ìK6l¼¦½Qÿ²ýG ±•—•›6lÙ³fÍ›6lؽ·÷Ñ®¿¯.ïýè—þ27ëÀù³fÍ›6^VlÙ<¬ÙyÓ4÷‚‘ýyÖÿÞéþcõ +ÊÍ›OþòÛ|äýx6l¼¬Ù²ò²úåfÍ—›®Vl?ÞÿÇüGååeåfÍ›6lÙyÅ?;5ýzÚßAòuÐÞdón¬ºmž®`Žá,–šæghdd/lˆ;;vÆùÇ_ͮߜ—ÿøOi™¿è]6¿òò_ÿá;¦æÿ¡uüÚÿËÉÿ„î™›þ…×ókÿ/%ÿþºn=ç7Z5üå¿âô¯üëºgo£ÿBëùµÿ—’ÿÿ Ý77ý ¯æ×þ^Kÿü'tÌßô.¿›_ùy/ÿðÓ0“òÒo=y?ó_üüÍó ^k‚"Ï^Óu3gÄqÍ3[½¼±B5 «‚M èŒÙ³fËÊËFò0T–f ä’vgÌ/ùÇÏùϸÿ8>|Áù9r<¯v^ßËOÁOZÐ~¡ëûð·fâUU~Ö{“ó#óÛò÷ò’Ùî¼ÿæM2Æ«Ës ™ºˆÝ\¬[2Á*Èäü!Få¶Ï„óðoùÏ-+óûM³ü¦ü¨‹Q¶òݼËu©\]ÿ£½Üª>^Üø"oˆrjóÜŸ'²wä+«½T³×¤Ónµ=&9Ñ®­!y¡K¨‘xZX¾ lH韬ŸùÇ¿ËÏÉ4ycLüìü®ò6£ÜßÙFèÐXÀgµw&·wãö×ì¾ÕñÏIÛªÚD,ìÕa·¤Q(DëEZ þYc6lÙ³fÍ›6ygóÓþs3ò³þqÛW¶òæ>£?鋈}f¶°‰.&‹ëQLeº¨#q¾z;˾aÓ<Û¥Yù§Ê÷pßé„)=µÕ»¬‘ÈŒ+³)"£¡ŽØqŸ?ÿç3?ç=4ùÅß«ùOËÖÐëþw¹ã,–~º¬6p×­Á^L$qöOˆœßó†óžšüåÖ<§æht;Û–;3:˜o!¯[rÜXȃí§Ÿ9ôØu›þ0>3fÍ›6lÙ³fËÊÍ›6^Ó?Þ¨þgõ—›+/6l¬Ùy«•›6l£ÐäçþÉòY›6lÙ³güÌÿŽ´ñâG9ú±BuówÌ~Kó'äïœ5!~H~hhþY‡ÌO&¨t=^Ù®®Yƒ4¯¬ ¿,õÏä律ùaå4*ßɪÃ{4š…Ρ#773Êâ@RÀÐqê/.ÿ¼ìÛ3f̓¿ãËþ{ÿƸ6lºeeåfÍ›6^Vl¼¬¼Þ!ÿÏüGæÍ›6lÙ³fÍ›6l^×ûè¿×_מ3òð'þqçóHOû—ó†Ê 4úÜ• ç— OÊ]WÊ^V?‘iÕµ/Íû 4«­Nk«»ˆ¾»OQd†å"0¥ùVœGÙ=3éþ¯gù¿u«^Ũ/–®ü‰-¬¨Öp ÄÕ¥ 5°Yš €Û<)åkÊh¦ò‡•¿çôïÐß™º~µgúJÉÄÏ{gg7×£»šNQº¯Ùbùm¸Î:_äÞ™i¯ùSÈ:$ºçÔú¼ÓXÙÎÓO¨}v[âx¦«Â#‘+"Ž|B¤¶{kY‹óæÝu7¼§y£®›?Õ-Ö+¿¯Ëp <Ë0€ò“¨ ZgÏïɨ¼£uæ?˨ÿ(u BÿóÙGšô›ÈŸêÖÈŒ/ÜBê"·hæ¢Ä`bH?´ rA/™í-ÿ)/ÿç äIÏætÚÜÚ}¾–#nmšÖ–èËOOÒôIbÜ«µ8×=™ÿ9iú3ò^òÂF[Ï¡FX¾ BØSòï†÷ýè“Ñ Ž„xàr½öíQ]ÅzTv¯l *h:œ&ÑüÃ¥ù„] î±cu-עܽ+ˆ©Î6ÿ)j=¼f˜¥°­Ü‘Ãð–ýëªTRG"*x³Îóð¿ÈŸ&\¦›&½q¬NêÇýÃYMrˆÊÅDnÄ%‘°Û|#»üüüùüÆD²ü‘ü®ýw™®.<ßsP4.ŒÁèÏS '“QÄtÂòSóc[ÒoµßùËÍ¿CÊš-¤·£ü/o ‹ƒÇ÷©;Én !OBÕ¹çÇùÅoίÉËO>y»SüÍòÜ—~PÔ ™tn£kƳhäg‰e£†ncŠ3~íó»ÿϼ¿ç-õ Λï-y±ãƒDóܾ„6ð£zv·Kµ¤pü_ai.Zˆ}óô[f¥áí\˜¦ŒÙ³b76ÐÞÃ-ìk5´ñ´RÆâªè⌬<49ð{þrcþ}Cæ;ï5¾¹ÿ8É´¾Z¾S,¶׫ÙLOĈÒÎ#Õ>&eèݳèïüáÏüáï—ÿç<º®¼óÎ¥ _QæYëè@P"SÔ‘ÉŽõ¥3ÙY³eåfÍ—í•—ƒ´Ï÷ª?ö_¨à›®l¿–V^Vl¼ªfÍ›6l¼¬^×ûø¿×_×—wþôKÿõâefÍ›6lÙ²óefÍ›:nƒþðCò?¯ úßûÝ7Ì~¬*Í›6Ÿýå¶ùÉúðlÙ³fÍ›6lÙyY³f̓€ÿB?ñœÄp^VlÙ³fÍ›6lá?šÿò›þSàSyÿt¹òÿ9ƒæ-i?˜ÞFÑ5üÁ{¡y2îËS{“iq4¤èÒäÐ+>Çäf´–ÂË\½¶Ž]j«{ŠF/UGáËŽÌÕ3àn›©]h÷pêº\¯弋,RÆhÈêjÄý+ÿÏ¿¼ƒùçŸ$Û~eyA·8C-³ë¿Z{›‡³Ô£•¡3»Q_w ð¥3ÛZçä'å·™u Ÿ0yƒÊºUæ§y#Mqq,'œ’7Vj0>à ÿèZ?)¿êLÑÿäKÍYÕ¼«åÝ'ÈÚl~[òu…¶›¥DÎémo¬æ¬G*š“×|”ÂÅíî˜Ò¤GÐ>×€ ÂìÙ³|³1TåtDrv µù±6ÄFVS¸e!”üˆØåœ¬Ù²!ù‡y­éÞS×õ#)2Ûéwréj\›µˆ˜€VøIåÙ¶ñÏÅ¿›u_Ì:Ö¡­ù¾igÖîne’öI¿¼i‹|†Ô5íÛ¦}­ÿŸ:y—ÎWSy£Ê·3ùÚÝnYÅ¢îÿh‘*>Jš¿scMÕÏì°?qÏËoüüKþqËÍ¿”ß™·æF·wXóf£s{§ÞÀÅ”4Í 2H•ðâFêN_üû·þqÇÍ¿›_™OæF‹vþXòž¥m{¨^ÎÅT´l`Œ ³ÈôðâìF~¤dnnÏüÄŸ¼à˳ÆÀ6^VlÙ³fÍ›6lÙ²ó`í3ýêæQÀ6lÙ³eü²³fËÊËÍ•”zWþ¡òW›6lÙ³güÌîZ?øÀ¿ñ#Ø#mÀÏ‘úçå¿æ/åš–ê×òºóÎW6þe¸×‡˜l¸H÷¶s£ ´‘Ê»'î¤Òƒìç¸ÿç¿.µïË_&˧yÖÕtýGQÔ®µA¦£Kî[’Û©€u›×lö/—Þ?öm‡™³eÓÿÇ—ü÷ÿplÙ³fÍ›6lÙ³fÍ›6?ïÿŒçþ#€sfÍ›6lÙ²ò³fÍŠDþ›¬”¯Ÿ#žRòÜŸœ·š——|™å/ÏSÕ/õ b)cÔ#Ò®íg½¹iZ ¾°Ò$Êlè©ï’Øÿ;ÿ9¢oV/É«eæ_5iÀýþž _ÏÏF•'â┯üíº~Ÿî¼ ¿žŸ(ædüœ·7VkÓ?3éæ?ž&O¬ÉËT~ßø¯Nå÷úuÅ¿å~~w埋ÿ Í?þ©âIùéùÓ´±þN@®ßi‡šôàOÌúy¿åzþusõÿåNÁêRœ¿Åz}ióôð³ÍPþbÿÎEè÷?—ŸšÞX²òg•¦–Ù¯â{èµk«Øâ™& „¤qQ…“ÕI9£´;â:¾·«Î;[Ésqk6·ù_j%¼žðο]Ñ ˜DMV»€î–5V‰j |Rÿœ~ÿœóŸOÿœÕÿ4ÿ1/·“|Û4–7ŠïpöövÀÒÚHâ$ñôè)QDWsAŸ[¿ç+ç2|™ù äkgBÖlµ?5j¶Ï‡kar“1wZ —1ó u ñqä~CŸ?çÿç0|Çùæ gDÓtèµ¹üá$qÁost¶¶ë©É%!žioL`⫱¯1LûOk¢ÿÎV~h»ó&¯å¿ËV´QVúd ©­è’¤Êη4B‚Gz×ißóîï ê¹üÝ×¼ËçÍCàôn5«òßV^8VDv5§ÈdûË_œÿ”¿—Ÿ›_ô*^IÒ4ÍXžÅ.¦–ÂÞ{wºEª[ÉÁ@i}-ù¯/Ýñäs׌ìÛ9&‰ÏŒŸóõÿÍMoS°Óçm»òµýÍÉÑ|Á©>´·qúLñÜܱKø£,¬;P†§üãoœüÇ¡y‹Ï—VV^_ó®«æ=?Í:2$Ööói«ÁcyãeF{ ’U Bw‡;Oå7’üéæo>_~{~oi0ùvüiqèšv Üw¦8VC,“½ÄtV21¢¨QÅFõ9Ë3ÿ-ôo̯Ï]KMó'Ö¢6þIÓå·»°¸k[¸«©Lc%W8hlsˆyÇó§Pü€üËò÷ä‹çõËÿ0Û¿|Ë š==Sýåf…㤳ÈÒL~ +²ü[ú7NüìÕ´T'ó—ÉúŸ•¸°gº·ÒÖÀvõg»¶Nž[#Øô9ñÿþ~ÿ9S¤þ`~ˆü”ü·¿ŽÿD·ã©êW®MV(š7UdhÖ¬kö¹®Â™êùÅïùø_ôïÉ(5Îf o6yf°M;Ô-w¨Ç/ÕÚ$ x‚Œ“ÊœYÎÛgÅßÌùÊ3þ`~o7üäh/eªÅ Ý•¬W”¶Š8[£Ô0Œ¨!‚ñ“Ð çÜ/Ë_ÊÍoþs?˶ŸšžtüÞÕo<½;güб»¿»·€[À‹tc‚$§Ó‹‰ Xîä}£JôÎKÿDÙüÿ©~çþ“?ëÞv¿ÉùÆ/ Î?]^ßþVZ]ØB%Šæº2BüMU½>*9Žº€H͛Ûÿ¼·?(ÿâX6lV½yh]‚׿sòÓÿ9íÿ9yæoÏŸ7ÞyU´¯(ùnúâÎÞ„óA!®'"ŠîH<~ÁvÜÔçmÿŸcÿÎ[y›ËmÒÿçµÅ:§–|Átb²i¦SNœ£5b­G¤Ü~(Àž@ëú%"†™Y³e‚T‚¦„g‚ÿç"?çÝ¿–¿ó‘žf˜zµÕ÷—õy# zt˜íÂ]¸é,¡Ðþò›3Wâês×ß—?—ž_ü§ò݇å÷‘,ã±Ñ´è„q¢*«HÔø¥¨¤s»195Â}{˺?›,_Bóng«ir2»Ú_À“Â̦ªÅH=l½Ëš?”ì“Bò–i¥iq³:ZX@@¬Æ¬B zžøoƒì:Íÿ™³fÍ›6lÙ³fÍ›6lØ?Lÿz£ùŸÔpÍ›6lÙ³fÍ›6lÙ³‡'5ÿ¨|•æÍ›6lÙÁ¿3?ã­ü`_ø‘È @úW>e~^ù#Züç¿óF½çÏÍMoËú½ž¹ugú*ÃRú¬Vð!ýÕ#F>%î=ÃùEä˜üƒ¡6…™/|Ô¦æI¿H_ÜýfPZŸ»çÎM–› ýé_+Ïv£nXÕ’/­[ÿË*Á6o­ÛÿË*Á6o­ÛÿË*Á6o­Áÿ,©ÿØ3ëP}O—Õ“­N<š•ã×ýjßþYSþ ³}nßþYSþ ³}nßþYSþ ³}nß½ªÁ6o­ÛÿË*Á6o­ÛÿË*Á6o­ÛÿË*Á6_Öíÿå•?à›+ëvÿòÊŸðM›ëvÿòÊŸðM›ëvÿòÊŸðM›ëvÿòÊŸðM›ëpË*Á6o­Áÿ,©ÿÙ¾·oÿ,©ÿÙ¾·oÿ,©ÿÙ¾·oÿ,©ÿØ3ë0}P7Õ“¬GM×\õ»ùeOø&Íõ»ùeOø&Íõ»z¼©ÿÙ¾·ü²§üfúÝ¿ü²§üfúÜòÊŸðMÏ;þhy?òÖÖßSóý厓ow7ÕíÌÅZiiR‘¯Úrçˆ4ïœóþ†Ÿò“þ¯¶|ßóNoúÊOú¾Ø}óÍ9¿èiÿ)?êûa÷Íÿ4æÿ¡§ü¤ÿ«í‡ß7üÓ›þ†£ò“þ¯¶|ßóNoúÊOú¾Ø}óÍ9¿èiÿ)?êûa÷Íÿ4àÍ?þrgò«T¹‡M²×4ã<î±ÆIK1 «0 >dž=BÎtY­à†X˜U^9 #ЫAãõ»ùeOø&Á\Àm§al€G&ß|õ»~ö©ÿÙÝ¿ü²§üfúÕ¿ü²§üfúÝ¿ü²§ügš?ç,ÿç$4ùƯËËß=ßY™u;’ÖT0:óúܱ±II·§91âÝÓ|ñ_üûWþs!?0|­®y3óÃ[†o0è.¥¡«^GÍe'Å"Šñ$@À±$š+… ä?óð?ùÍ­'ó_Êw_’ŸóVú†£ ׫±¬YCêØÏ@8†™pÌU‹qã¸9ñ#üæ?ú³êô‹/üÓž¦ü¦ÿœSóÏüå ͦyÂÇF¾Ñ, Kˆ5[›˜^ì‚ÁîPIͪÑWj ó¹'üúWóÖ&G/—Õ”‚ÔdÿLdåËæ®~¿?ç?4ùÈ¿"ißš~\²0­ß8n­§a¹ˆñ”7N%·SEä7â3³3Ø»$Óí™ÏVe OÌN6ºý[mäZÿLZ›[bM­”1ÔÇðWçÆ•Ã [Øå2–j!n®Æ£Ã|.íÿå•?à›7Öíÿå•?à›7Öíÿå•?à›7Öíÿå•?à›7Ö­ÿå•?à›1»·ê-Sþ ³}nßþYSþ ³}nùeOø&Íõ»ùeOø&Íõ»ùeOø&Íõ«ùeOø&Íõ¸?å•?à›7Ö­ÿå•?à›7Ö­ÿå•?à›/ëpvµOø&ÊúÝ¿ü²§üfúÝ¿ü²§ü`Ý:ê¹@¶È¤òÜ1Ûc€…Ý¿{Tÿ‚lÆîÞ¿ï*Á6o­[ÿË*Á6awoÿ,©ÿÙ¾·oÿ,©ÿÙ¾·oÿ,©ÿÙ¾µoÿ,©ÿÙ¾µoÿ,©ÿÙ¾·oÿ,©ÿÙ¾·oÿ,©ÿÙ¾·oÿ,©ÿÙ¾·oÿ,©ÿÙ¾·oÿ,©ÿÙ¾·oÿ,±ÿÁ6o­ÛÿË*Á6o­ÛöµOø&Íõ»ùeOø&Å­î õc jƒã]ù6ÛåÝ]@&5ªªy6ûâ[·ÿ–Tÿ‚lÂêßþYcÿ‚lß[·ÿ–Tÿ‚lÆîÜÿǪÁ6o­Áÿ,©ÿÙ¾·ü²§üfúÝ¿ü²§üfúÕ¿ü²§üfúݸÿTÿ‚lß[·ÿ–Tÿ‚lßZ·ÿ–Tÿ‚lß[ƒ§ÕSþ ³}jùeOø&Ìníÿå•?à›7Ö­ÿå•?à›:Œêöq4jHÙFàoý^漕^ÝbÄWl.úÝ¿ü²§üfúÝ¿ü²§üfúÜòÊŸðM›ëvýíSþ °d·0 {v6ÈA2Prm·À[·ÿ–Tÿ‚lß[·ÿ–Dÿ‚lßZ·ÿ–Xÿà›7Öíÿå•?à›7Öíÿå•?à›7Öíÿå•?à›7Ö­ÿå•?à›7Öíÿå•?à›7ÖíûÚ§üfúÝ¿ü²§üfúÜòÊŸðM›ëvÿòÊŸðM›ëvÿòÊŸðM›ëvÿòÊŸðM›ëvý­Sþ ³}jùeOø&Ìníÿå•?à› ¨>¦[êÉOX<š•ã×ýnßþYSþ ³}nßþYSþ ³}nßþYSþ ³ »qÿ©ÿÙ¾µü²§üfúÜòÊŸðM›ëpË*Á6o­ÛÿË*Á6o­ÛÿË*Á6o­ÛÿË*Á6o­ÛöµOø&Íõ»ùeOø&ÎUùÇùe¥~qù}|¯þãní¯-µ ?R·WVÒI¡@n'}Ôj6Îx*¿4:ÿÊá×?î ¦Lßòª4?òðëŸ÷Ó¦oùU?™ÿùxuÏûƒi¿Ó7üªŸÍü¼:çýÁ´ßé‹ÅùIùŸ$rËÿ+‹\ýØSÿm7¹§†!ÿ*«óCÿ/¹ÿpm7úfÿ•Uù¡ÿ—‡\ÿ¸6›ý3Ê©üÏÿËîÜMþ˜cåŸ%iÿ‘ÞgüîüÎ×o|ɪIbû[Õˆ·H¬­G8íbŽ2`‰ •5UêÕÏÊ/ç'çV·ù»ù‹ªþr_M$zåùºµ¯PG~â?„>šZÓâ¥O\û}ùSÿ9»ùåùõùew«þTùËRÖ|»ièëw×z†þáÀH¥šBU¥ÞHEð¨Ï“>kÿœXÿœŒóίyæï6y'Ì·Ú½ü¦k›‰l%äî{ì :lï(Î ~qëšÕŽæO(yƒHÓ.§Hg¿m*i–Ý\ÓÔdªUAû_ ©ížñoùò¯ü¬(Ó¸Ó§§üœÏ ó…ó‰ÞjÿœI][C×<Ógæ?,êaeK(àžor»z‰Í™@q³Ò„ñ_ ÷·Öíÿå•?à›1»·íjŸðM›ëvÿòÊŸðM›ëvÿòÊŸðM›ëvý­Sþ ³}nùeOø&Íõ»ùeOø&Á\Âmî¶@JŽM¾øëvõ¯ÕSþ ²¾·oÿ,©ÿÙ¾·ÿTÿ‚lµ¼dµ@GpíŸ ÿç5ÿçÛ~rë ù“ÿ8ÿ¢ë·NKiÓ3ÃmpìI7(ê#ötм«^ÿ81ÿ8 ¦ÿÎ7ƒùƒù©–³ù‚ì~¨b.ði©¸&&j•ÇW१s_¦Ÿ[ƒþYSþ ³ »~ö‰ÿÙÝ¿kDÿ‚lÂîß½ªÁ6o­ÛÿË*Á6o­Û×kTÿ‚lß[·ÿ–Tÿ‚lßZ·ÿ–Tÿ‚lß[·ÿ–Tÿ‚lß[·ÿ–Tÿ‚lß[·íjŸðMƒ,®`c/dZBäÑ›qှ·ü²§üe‹»ùeOø&Íõ»ùeOø&Íõ«ùeOø&Íõ»ùeOø&Íõ»ùeOø&Íõ»ùeOø&Íõ»ùeOø&Íõ¸?å•?à›7Öíéþò¥Ölß[·ÿ–Tÿ‚lß[·ÿ–Tÿ‚lßZ·ÿ–Xÿà›7Ö­ÿå–?ø&Íõ¸:}U?à›7Öíÿå•?à›7Öàÿ–Tÿ‚l§ÜÀתÛ"šÃ6Ûõ«ùeOø&ËúÝ¿QjŸðM•õ»ùeOø&Íõ«ùeþ ³}nùeOø&Íõ»ùeOø&Íõ»ùeOø&Íõ»ùeOø&Íõ»ùeOø&Íõ»ùeOø&Íõ»ùeOø&Íõ»ùeOø&Íõ»ùeOø&Íõ»ùeOø&Íõ»~ö©ÿÙݽ6©ÿÙ0õcÿ}î+ÔôðÉ&lÙ³fÍœó3þ:ÑŸø¡âG8Ož<ͬyRÚÎ÷Ë,úåÄ÷°ÛK »Æ2Šv22‚©Ü Ÿlù“æoùÇï.jÆ¡zÿóZåûKw;›¸õ®+9g$Èë‚ÏÄ+Ðg¸¿çü§cä¯(I¢hþP¹òD"úiI»»úÔœˆ”¿©-tãËjtÏaùwýãÿfØy›6lÿ_óßþ5À9³fÍ›6lÙyY}r³fÍ›÷„ÆsÿÀ9³fÍ›8¯ô»MkóçÌ÷¼)s&åí]8Ê¡¾¬÷Y´Uû%ÀˆëA“Ÿ;Î_þP~]kw~Kó‡™b´Ö¬ ‹«qkw)ˆ°ä94Q:î7ëçË~cÓ<ߦZù—ËW1Þi—±,ÖóÇö]TZò"£¾sÍ?ùÈËÏÉK›=3ó7ZL»¿å¶ˆÁq3:F@fÞ€Þ˜—šç#¿.<•åÍ+óÍävš¶Bé× ÃÉRÀ,kl ÝFMÿ/?1ü¹ù«£Gç Þ‹ý"WxÒq±UчUc휳óþrÇò£ò·XŸÊ>}ó iú­²+Í Z]ÈXTñÂÉÓü¬®ÎR~VyoËZ?æ>±æ(bòæ¾ÌºeØ‚áÅÉQSÁ2ûÝFN<»æo)~zyRMGËó&­åZ)í]š)#Y‚’)IU[Än¿,òÏüâŬº7‘$òcÝKwgåwXòþŸ,á¢ÆÂäÇnÀ*’«·*T÷ÏF*—!UŽÀ 6ŠÎtµ¹/8Ç`jOÑuów—Ü„]_N©4ÿzâëÿœ'RÿœÄü›Ò.çÒµ5D—VÒ¼2ªÙ_8†Œ$XTuRAìpîËþr/DÖíÓUò—|Óæ júž›cÕ§ hÆ?¬K»(×piQ¾]׿WŸµ”m[È~E•tx@Yäóõ¾2IÞˆ²H=>”n[šŠgæïþs‹þr›ÌŸó‘þr:n½m¢ùjk›->Â¯é¿ ³»Ì zŒîAãÄ o_*yQÑ4Ÿ1éz‡¬WSÐ#ºˆßÚ;J¾¥¹jIC Æá‚’VŽ> +µF~Ï--|·¡ygMòªÞ /+Ý[Aug  äx3õ«ñ cRj7ß'_¤®ߟ‚ÿLFk¹nY›£`?PÀù³Ç_ó‘¿ó„^Kÿœ¤Ö¬üÑù•­k°¶mõK;KµH!BÜœŽp³’í¹äÇÚƒ<ïÿD‚ü–ÿ«ßš¿ä}ŸýPÏYÎ6Î)ùcþq^ÛTÒ.µ}bóMÕž9§µÔÍ»¢Íâ²£E8n? ŠÓµsÓy³`ë÷ü`á€FlÙ³fÍ›/+/+6^Vl¼¦½Qÿ²ýG Ù³fÍ›6^VlÙ³fÍ›¶þþ/õ×õåÝÿ½ÿÆFýx6lÙ³fËÊÍ›6lÙ³¦è?ï?#úò­ÿ½Ó|Ç꼬ٰtÿï-·ÎOÖ0lÙyY³fÍ›6lÙ³f̓‡ûÂã8ÿˆàÙ³c‘Kˆ*Ì@Üçž-ç'|£­ëš‡“<‡§ëÞlÔtšA´K%hmœHјÞK—€3†RNcß$ò¸î?ê@ó¿ý!XÿÙVoù\wõ yßþ¬ì«7ü®;ú<ïÿHV?öU›þWÇýHwÿ¤+û*Íÿ+Žãþ¤;ÿÒý•fÿ•ÇqÿRÿé ÇþʳÊâ¸ÿ©Îÿô…cÿeXÏíIžÎ×ÏN½åHõ ˜¬¬îu»HÖî¥lùËÊú¯üç©q ~C^û@kæ³×¿0uÛ¦‚¨¡O§”8©Øq¶ ôRhjr>çÍ:×o;i´ÿŒõO=9ÿ8ÿ8æÿùů³fÍ›6lÙ³fÍ›6lØ?Lÿz£ùŸÔplÙ³fÍ›6lÙ³fÍ”zœÿÙ>K3fÍ›6làß™ŸñÖþ0/üHäì\øŸ®iW~lÕ/1¿4¼ïæÝÍ<Õw¥ùŠ++Éí¡ÒíH?S™#âÔG Šƒ^ÙïùÂi¿—“´3Üê£X½KmZí¤iu(U€K¦2|GÚ½6Û=ïåß÷ý›aæVlØ;þ<¿ç¿ük€rò³fÍ›6lÙ³eåfÍ›÷„ÆsÿÀ9³fÍ›9/åþOO<ÿà7å¯×uœ+Ê^hüÈÐ4ÿ5m¿+<›eæ[IukC4÷Z¼V>œŸU_MãrãÄ‚<2Wÿ8§ù¡åÊïËmçϬhš­¾½ªZj¶Ú{„µÔ=c$°Åõxß÷AYJ7C^¹(»Ð|õçOÍ[ÿÌßÊýW˰è©åûKKfÔ­e¼¸ýë™\5ºOo,ˆ.> Ârc®yÛþr3Zòæ_äÐôgÓ¬µY.íõEkÆŽäHm‹Ål’Á#F@45~Ëä¯ùÉÍ*ÊÇU²üÚtÓõmZ¹ÐçšÆÎî[{©-À>´ILÑ«öدó&ÿœ¡óžwÑ|·ùCäË–†Ì+ä´’æ5dš=1Öºu Ä©1Ž?>×CÓyëòÃÍMù‹å _Ê+Ÿ/ézO•ô+˜ã‹P‡ë/JDJVÒ) p¥=@@å·¶voȯÌÛßÌ/T_¶ŠßXÐu{½ñ­ƒ,KjÜLÑ+*¯Zð,å:9ãÊ_(ùÏͺoš´í3Í1è[“ÎÞbem2Í—WGKÃP·O+CÁÚ_B¼våß: ÿÎ=j×?èÞ`üÊ󎧦IðÜÙMqi<}Ñž4 ø©ÛÎ'ùbšpÚÙàÑž ¬Ü²°'£hAèAê6ÉÙü–üµn¾GòÇýÂ-æŒè–ÐC§Û­­”qÛYZÅÅ#U"†$¢ò[rãAž¼´º†ú¯lÜIȲFêjXTìAÏ='üä]¶¡æ+ß)ycËzö­ú6ëQ´³f´Žp¸õ r" `7ÿÎBZysÌ·~@м¿­ùƒRÓá‚kÓ¥Zc€\WÓW}‡"šP3½[Ýíc½hž6x–C :’µâGó„xç•<Ãÿ9giå Ë+5ùCÍ+¨ßǦÚJú{2Í\òž‡åžÃÉšE†‘Ì­$Z}¬p,®8ŒMNç|óçßüåç”&òÞ—ÏÍ>|¸†se i®fõcØ EdôW–Ä0å±Û¾yóËÿ󋟘ó“:Ä_šŸó™×²i¶‘)tÿ$i§ˆz‡ëˆÏ0äI£&ÏZüTÛ>išNŸ¡ZǤyzÊÛNÓ¢¯¥ig ÃTÔñQS¹Ûsƒ³fÍ›/+6lÙ³fÁöÿï-ÏÊ?ø–Í›6lÙ³fÍ›6lÙyY°}‡Y¿ãà—•›/6VlÙ³fÍ›6lØ?Lÿz£ùŸÔpËÊÍ›6lÙ²ò³fÍ›(ô9;©ÿ§|•fÍ›6lÙÁ¿3?ã­ü`_ø‘Ï(ÿÎAþsAùäÛŸ=Mg&¡vÒ¥¥¤lÕ¹—hÁ&´îh zS<©ùù…ù’n¼£ùmaåÿ+MæÏ:isê:½®¡no,/4CXX» —íg¥?ç¿1âüÎü¿²ÖL·ÑîlgŸNº°´EŽg·z8(U¯n#=åß÷ý›aÞ^Vlÿ_óßþ5À9³eåfÍ—•›/+6lÙyX8ÿ¼#þ3ŸøŽÍ›6^VyßË}òï‘ÿ?<Õeç=NÓI}SÊú–-2[Çp¶Ï:Íé<…UŒeבQ\ ­ù+Éry›[óÇ’8WË’ëóGq}me©ØŽïé¡<š€íA¹Øgžÿ<¿ç/?.?!—ê:íùÖ<Ää,Z&ŒÑÝ^³Câ@〠¤=~%þSž-ò›3ÿçãAõÝ7SAüœÓµ'µ½³Ón¤mZêA·¤Ò¢EXÏ#¹z Q©ŸA(ç?.?"mcµü±òý…ØŒ$Úƒ'«y3q ìÓÉÉÀzU‘X%{gj÷9³fÍ›6lÙ³fÍ›Xÿ»ÿãÿ :fÍÓ6lÙyYyYy²³fÍ›éŸïTì¿QÀ6lÙ³fÍ›6lÙ³fÍ›¶þþ/õ×õåÝÿ½ÿÆFýx6lÙ³f˦lÙ²³fÍ7Aÿx!ù×}oýî›æ?VfÍ›OþòÛ|äýx/+6lÙ²úåfÍ›6lÙ²ðhÿxOügñ›6leþôCÿõçÿœa§ü©½hžŸ¤ü×ÿQ×9ãýÉ_›š§üãb_Cæü—%ÜšTÚqŠY­ ™¤{vºäx´J‡w#=ååßÏÎùkHÒ<‰æ†ÓµM6Ââ;»K4šÆÒ9âG$Í"·î†Ìxg–m|¹æÉŸ$k?ŸFüÇŸÌvÃ[žÿôl6ðÇcp÷«Û½y¿4‡ kÉGÃ’ËÏ ë'RüÆüñòwæMÍ­Í»›¹ô{[xDv’ØÚ Òé¤ä_ÜÑvcAËÈßó‘š®½–ìõ?$y™çÖl,®gÔ­,ÑôØ^xÃ1iŒŠÁGSðlÈìëù±ùÿtúƒtoË:«[±¬gSÔA&`Ü¢‰x‚jG-©œ£Vò&³¡Mù™ùíä̈’Òúêö]*ÒÚ·†[ ;’ü™ºPŸ‡fØdßþr_V“óò'GÖ5ûw¶}fûÊòÝ@’4l¾½õ¹uW^,½vaB;g[Ñ?,¼Ÿä‹ë‹ß&ùJÒîd “ÚYò n’HªêEIbI;ò_ÈÓ…~ßv7ëÞfÒ<• ê~kó}ìneIqwrâ8£PÝØí_ÔöÏ›ºÏüäWæWüåf«'åçüâ%½Ï—<­k¨<ߘ—($·xâJº[ÇÁ–¬kć û}‚sÒóŸóŠKü€‚=fΫùúhä]OÌלÞêíånR2‰OH1þSȘœôõ{åfÍ›6lÙ³fÍ›6loþó\ü£ÿ‰` Ù³fËÊÍ—•›6lÙ³fÁö´ßñðÍ›6lÙyY³fÍ—•›6l¦½Q|Ïê8fÍ›ç›/+/+6lÙ³fÊ=2sÿdù,Í›6lÙ³ƒ~fÇZ?øÀ¿ñ#žCÿœ’ü››óËÉrùCK¸KMbÚæ-CMžRDkuªs ? èvÎiçÏùȨ[h×–6-æëhMœ^`k«©Æôâ'TõŒ‚:nGŸå힀ÿœyü¤—òcÉñù[U¸K½jîê}GT¸Œ“ÝÜ7) u D¯M³Õ~]ÿxÿÙ¶Ó+6lÿ_óßþ5À9³fÍ—•›6lÙ³fÍ—•ƒûÂ?ã9ÿˆàÙ²ò³a½å}Í1Å™ôë]F8 1 ¨VNºñåÒ½ò5ÿ*È¿õ-i?ô‰ôÊÿ•Gä_ú–´ŸúDúfÿ•Gä_ú–´ŸúDúfÿ•Gäoú–´ŸúDúfÿ•Gä_ú–´ŸúDúfÿ•Gä_ú–´ŸúDúfÿ•Gä_ú–´ŸúDúb‘þSù"YbòÞ”®„"Ò:‚:™Ð‹Ìjs”~s~vy;ò@›ÎßšßT±ˆ!Kx‡©u9sEXbîI®æŠ)ñ0ÏÌüäÿüåöµùÉùº¿HžãL·Ñ¸Aåá*EêÚÃhH£ÌŜԵ PtÛ¿2ÿ1+¿*¿"ü¼Ÿ‘ 2þdyêØ·˜õK×2ߢC!RÑÆ“MÈFc /«÷ ÿ>ºÿœ€•¿™‡òó^›—üÞ‹fIôïÖäX*)55 "€gé‰RAê1¹³fÍ›6lÙ³fÍ›Xÿ»ÿãÿ 3fÍ›/¦VlÙ³fÍ›6lØ?Kÿz£ÿeú޳eüò³fÍ›/+6lÙ³fÅí¿¿‹ýuýywïD¿ñ‘¿^Í›6lÙ³fËÊÍ›6léºûÁÈþ¼ƒëïtß1ú°«6lØ:÷–Ûç'ëÀ^ÙY³fÍ›6lÙ³fÍ›6l?ÞÿÇüGæÍ›Z¸ŽhäsEWRO°9âoɯùÈÏ þHhšßäÇçkßhºíž·¬4öòØ]\G=½ýÔ—K¶©*”x¤YX‚s#Qÿœ&Ю`½ÓÜfÞa­ÐdKËßó—_óŽ^UÔµo1è¬ÖúŽ»:\ê3 /Vc4ˆ¼ˆh]¨  çoüàÿœIóß™büÅóEÍÅÆ»ˆú«e®E˜MSÔ†8Ö'§ùHkÐ×~vÿÎJyóçIÒ?(¿&d¾ÖüèëºD±ÁŸsmY]Gs4²ÉsH¨‘ÆÛXš¹íK§M$ˆj¬ìAö'õØg•¿ç!?ç.¼™ùSË—Iu®ùÒúƒ§èÚ\~¼ž¤@ÐÜ@9lwçß7Ï?ù_þq?Ïÿó“·Ãó/þs’î8­-­ìäÒ|« Üz6¨œ½F $ÿ0YIÜÀmŸFt‹-?N±‚Ï˰ÛÁ¥„åo¨Qîœv Ó¯|0Í—\¬Ù³eôÊÍ›/ß6VlØ>ßýå¹ùGÿÀ9Y²ý²³fËY³fÍ—•š™°}‡Y¿ãà—×+6lÙ³fÍ›/+6lÙ°~™þõEó?¨à Ù³fÍ›6lÙyY³fÊ=NìŸ%˜ÖuAW |Êêâ¨AÇ2º¸ªG±ÍÍk£—…wÌΩND ô©ÇgüÌÿެñâG9ò‚ƃ©Ï0y£þrïÈ>Z±ÔuT’ïPOÔ×GD´‚Gk«Ãö£·2hs°þZþehŸ›^oò”ŽÖ¯#Ã4S#G5¼ñšwë¿ó_™¿ó•Z´¿—ÿó‰vSiAMB;kÏÌvæ„"/)¬/èµIøv.XPµ>kÿÎTkþ_ÿœMÖ4ÿÊ_ÉBæ÷ó K»]KÌ~uo.î½AmT«"«Pº™«T~[羿ç'ç9ô«ÏùÆ›/5ùBâó?ŸìÆšm£•ÚKGO†øÔpz¦ád§g¾C?çÔ?ó“zÿ—ßþq¿Í7ìßñðÍ›6lÙ³eåfÍ›6^Vl¦½Q|Ïê8eåfÍ›6lÙ³fÍ›6Qèrsÿdù,ÏÎEêWžvò§—eÑ5ÝsF†ÞúöêÓG2Ʋ¹QbYRH€à~ ¥·ðÂ_4ùÏNÓ|‹m þW-ï—ïµ_0Ùè—ð\Ï#ÞY<íûÀÆG•‘ІŒ65q­ÌŸžy²Ò<«<éåý_BÕ.e³¹¹šáEÝ„~¢J¦fvÇÂÀZg;¹·¿òïåf“ÿ9£xþt–[=Fòåî¦1ÍÌÁ^ÜÂXÂ#À F)Æ£:^•£ÇùåæÏ:Ëæ;»¦°Ð%ƒOÒ"·ºš·‘­Ä­8²rrÌ>ß-–2qù/ù«-ßål|óÄÒÜϧ}fÞöh£2Ë!¶¡çÁY˜Mj}Ò¿1¤÷—ÀµEô\Àð?554W‘C×FÜ0§lù·åoùÅ_1\y±5-#Í­äVÔµ6Ö܉g]NèUVì äßvb)ösÖß_•Wß”>X—Aó%ìZŽ»sªj70'§\\µX þQÛaòÏXyZÎYìyÇÆž£ Ø ‘~ŒŸÁ?àÆWèÉÿÈÿƒ¿FOþGüÍú2ò?àÆ tßTôþ^µ~ÐéÇþŒŸüø1—ú6ÿƒ_£.<þ eþŒŸüø1•ú2ò?àÆoÑ“ÿ‘ÿ3~ŒŸüø1›ôdÿäÁŒß£'ÿ#þ fý?ùðc7èÉÿÈÿƒ¿F\‘ÿ2ÿFÏþGüÊý?ùðc7èÉÿÈÿƒ¿0m¤·üÓü¦õ)½÷˜:ÿÒ°â¿nüŽüÎÐ?(+5ë//A£ÝêW7WZz_ÐÉÄ*£2R£¿,‘~CùÿÎ7¾có?å/æmŶ³¨ypÚÈší”"Þ„ºNb'…j±Ëpª7Ûþ~þiê~V½Ñÿ/<¥¨Zh𮏗W®j7µÓ­­;Ë$rV/^ ”Wö³”?ç×ü³äv‹T}7]óþµk y_Óä¬5&½¯¡a‚ˆ(Ë$j_âOµ¾t_Éÿ=ùÓHó¶«ùùÅk¬êöú|Ο«Z[ DžÚW1@5ñÏhŸß™ºoä¥×æ·5­15-sW†ÇËw×Iiv²Íé­ÍÄDñ<ÕZ@¡ˆãO‹|õ§ä5ǘõ;ÝSÌþ{Ò<óhò,v÷=¤G(øÕš e MFÄ‚>œâWþmòÿ•¿>|åþ-Ö´Í\yg@~‘¼ŠÛÔã=Én£TïN™Óÿåkþ_ÔëåûŒZÍy¿åkþ^ÿÔëåûŒZÍxïóòúÒ n¿Æ^ŸÒFJÛT¶–gâ+Æ8ÕË;žŠ£v; æ?ô5ß—ãbu }ôk¯é•ÿC_ù}ã­Üëúgÿœœÿœåò¿ÿ-µÍKÈòê æ‹¸ÇK76’Ù•šo„ËȤ3B¤¿ n<3ó{ùWù³æÊ7Yþfyûêzý¤®Ë;*¸"PV@êÀ‚¬ ·LýþLÎY~mXiŸœÿó’Þi—óFëU¶‚þÎ ¥–-2–Q"Y½*(ü´Ýsè®åKo/YG¢ùzÎÓOÓ¡¯§mh‘à ש€('¹¥OS†CN¸8öcAep-î•«éñŽÇ~¸;?ðcú6ò?àÆoÑ“ÿ‘ÿ3~Ÿüø1›ôdÿäÁŒ¿Ñ“öáÿ2¿FOþGüÍú2ò?àÆoÑ“ÿ‘ÿ3~Ÿüø1›ôdÿäÁŒß£'ÿ#þ fý?ùðc7èÉÿÈÿƒ¿FÏàŸðc/ôdþ ÿ2¿FÏàŸðcYió/­Ë†ð°ë¶dÿäÁŒß£'ÿ#þ fý?ùðc7èÉÿÈÿƒ¿FOþGüÍú2ò?àÆoÑ“ÿ‘ÿ3~ŒŸüø1›ôdÿäÁŒß£'ÿ#þ fý?ùðc7èÉÿÈÿƒ¿FOþGüÍú6ò?àÆoÑ“ÿ‘ÿ3~ŒŸüø1›ôdþ ÿ0n§ÍÌnÜh+ÑìpèÉÿÈÿƒcLŸÁ?àÆWèÉüþ fý?‚ÁŒß£'ðOø1›ôlÿäÁŒß£'ÿ#þ fý?ùðc7èÉüþ fý?‚ÁŒ¿Ñ“ÿ‘ÿ2¿FOþGüÍú2ò?àÆ_èÉüþ e~ŒŸüø1›ôdÿäÁŒß£gÿ#þ bÖútë,lxP:Ÿ¶zòU´«µec¥E¦^ÛC3[¨K‰DLjñ³GUèÙìѳ2p*@ ò®oÑ“ø'üÍú2ò?àÆ_èÉÿÈÿƒ_£'ÿ#þ fý?`Ÿðc7èÉüþ gÇùÍùø-ßäçæžƒùuùsu)²òõà6ưÂërŠÛ!rI)$ýêqßlöç7üæ¿*ôý.ãËk/œõýz'“MÑ<¿,Ww ˆ¹¬ÙŒj ÜUÛ­Ó8ï”?ç?2?ç$o üÇÿœÍÕ•´I-­äÓ¼›¦Í%¼PKKå_IYÅaÅɯÚ¦z+þrGÏÓÎ1~YÝj?•~[[VFúž‘¤é•‰&”Q¦h FG#UøÈµwÏÊÖ¯ùUù¯_\ëz¿–<Åq{w+Í4²i·ŒîîjıBI$÷Ħü¢üκ‚+K,y’KkPÂÛM¼dˆ9«q(¼Žæ”©É—åw—?6ÿ(üÕ¥þbùKÊþ`‹SÒ®c¸ŽšeØW jQéèÃf Ž çëSò‡ÎÒ~ny;HüÃ[ t©õ+u’çOº ¶Ó¥ˆ‡ Ç‹V‡ˆ¨í#ôlþ ÿ3~Ÿüø1—ú2ò?àÆWèÉÿÈÿƒ¿FOþGüÍú2ò?àÆoÑ·äÁŒ¿Ñ“ÿ‘ÿ2¿FÏþGüÌtÙÿÈÿƒ£'ÿ#þ e~ŒŸÁ?àÆoѳÿ‘ÿ3~Ÿüø1›ôlÿäÁŒŸ2ÛÜ!ãV Oˆv8ôdÿäÁŒ¯Ñ“ÿ‘ÿ3~ŒŸÁ?àÆoÑ“ÿ‘ÿ2ÿFOàŸðc+ôdþ ÿ3~ŒŸÁ?àÆoÑ“ÿ‘ÿ2ÿFOþGüÍú6ò?àÆWèÉÿÈÿƒ£'ÿ#þ e~ŒŸüø1—ú2ò?àÆWèÉÿÈÿƒ¿FOþGüËý?ùðcYió!”·âp>!Ôà!¦ÏOØÿƒ¿FOþGüÍú2ò?àÆoѳÿ‘ÿ3~ŒŸÁ?àÆoÑ“ø'üÍú2ÿƒ¿FOàŸðc7èÉÿÈÿƒ¿FÜ‘ÿ2ÿFOþGüÊý?‚ÁŒß£gÿ#þ fý?ùðc7èËò?àÆ_èÙüþ e~ŒŸüø1ƒtí>d¸Û?´<0èÉÿÈÿƒ¿FÜ‘ÿ3~ŒŸüø1›ôdÿäÁŒß£'ðOø1›ôdÿäÁŒ¿Ñ“ø'üÊý?‚ÁŒ¿Ñ“ÿ‘ÿ2¿FOþGüÍú6ò?àÆoÑ“ÿ‘ÿ3~ŒŸüø1›ôdþ ÿ2ÿFOàŸðc(é“Ðýø1“«?·÷z÷É.qÌ/6ù¯Èú½¶µ¦i÷–$·h¦´Ó"_ÇqÊ« UZ26? ö9çý_òoÌžhÓußÌ‹[oªkz†¹§y†ÃKž«*­„aD2ÐYdîPÐTä²Ï@Ö<¼×õý÷ËšF•¤ßi‘[j‘¨¸šâù8<ŠŠJˆÑz7*±ý•Î{•|åæ(iÿóŒwÚå¯Ô&‚­~@?GÉek(4L>&‘Ô(àU@5øó _ÃæOɯ5ùšûËþ_¾×ôÏ647V­¦¢ÒÒé"•¸ N1šæ¼¶¯ÁòCòöãòÏÉš”ui#žù=iîž1ð®$i\@$Ô©´è0ƒó)B걪€ :¬rppÔ­Løëy£ÛþJëþ`òç–ÿç!¬ü±%Ö§=åæ—žœÓ7.,Í!$€@íòÏ~Î0k—úÿ”f¼ÕüÝ7ÊêG·-šÚ,±€(±"³E5£×s\ö7—Þ?öm‡”Íš™©ƒ¿ãËþ{ÿƸ™©›Û6lÔÍLÔÍLÔÍLÇ|ÔÍLÙļ÷ÿ“SòŸþc¼ÁÿtÜÏþrvßÊÐþtùOUüÔ¶Ô›Ëiåëøþ³bo£TœÌ «KfÈÀ‘ÑKPøc?#¼«7šüñ©ÿÎ8]ÝèþKÔì,¾­s¬ÃquÖÒYcNe‘}*ÕÝ|GóKòïWòç›<ŸùŸÿ9$~qЬ"Ô4ýBK #·ƒë^{DgYcåð·*±âsœ_ùsQ¸ÓõÍŸË"ö?ËýΚ>·£h°Y´5µµ‹…ìö¶à(ÎY‚¨¨Í@s´hM¯~y~f럛_”sI¢ØØy~ßDÓõmNÅÞ+‹–™¦”¤.S’ÆRkö²Qùýkùƒ¤~O]ùKÌZ€×üÏ®ßZéMu¥Ø4-î¦U˜¹F3W¾Mÿ=|¯å/.y3AÒ<Óåó'“4KË!5ªs"Æ¢\ˆO¬#Ø4f‚†»ä+þqúÓNÔÿ15ÿ7~RÙ'òÑô«;T¶†ÌÙZϨ¤ŽÒËiÿŸ¢yâü–÷ÞUü¤òí6÷úµ›=ĵäÑE𙘅½@V?ø ÿD^¸ÿË‹ýÁŸþÊ3êüâç䎻ÿ8õä˜ÿ+üËæEó5µœÌú}ÇÕš‚ÜÂy<„¨?`VŠ6=š˜>Ü¢Üüãýx™³f¦jfÍLÙ©š™³S6jfÍš˜:Àÿø`3f¦jf¦lÙ©›6lÔÍš™©š™°v—þõGþËõ2ÀÍLÙ³›6lÔÍLÔÍLÙ³S51k_ï¢ÿ]^:ïýè—þ27ëÀù©š™©š™©š™©š™©š™©›6léšûÁÈþ¼ƒëïtß1ú°¯6jf¦œ¢Û|äýx™³f¦jfÍLÔÍš™©š™©ŠCö¿Ø·üDçÿœuó Ç”¿ç´ï4iÁZïNѵ;¨ƒý’ñM;-}ª3šÛþhþuù;É'çïšu½\Ñ/¾¡%ƃõYÙ/]P,7¹gN@Às¡gÐë­Z+-:Mrè†+v¸pÛªœˆ5ïLðÇ“ÿ=?0|ѨèÞxÒîô{í\š3þ F‰5›K)\ »/RÒz`z®žšŽlGÍ¿Ÿ?˜·Qy£óƒÈMaþòN¥5…Þ•<\®u$²`.åŠà EJü F¯È®{’ÃSÿhÐë>½h³ÛHÃ_U9!#½**3ÂzŸš¿<<­ù•åʆón‹®\jí-î¡ z?Õþ©¦À~9YÖG!œü‚fý¡†VšþvüÆóþ¹ yCÏ^Zòþ—¥êë¥Úé7–ðÜ_]˜•L̵•rbU@VéWþs=½?É8¼¬]= 1Ø&ޤø püØü¿*„yÃË¿ÝÇÿKk_ååäYÿœ–ü¸Ðï$Ó&Ö ÓE@f°‚K«v¨¯Á4A‘©Þ‡c¶ÐÕþZÿÕÂóþá×?óNSÿÎQù&é >VVÖõf ·Ólté~±pßË©Å*Nì6]ÿC¬wüªüÁÿ¸lõ[7ý n±ÿ–«óþá°Õlæßž_ó—žeüòßæÔþHý§ú†ÂÊ1ß-Mï]IR–iÑÉýº™AeVØS?->gó&¡ç Z÷Í>`žKGPžK‰å•˳;šš³O€öϸŸóè{ŸË½b×V´mÒ?Í ¼ñêÒ9–âk ÈV£|1zFŠ]~&J¶}·;šœµ%wÿU¿Ì m#}^äÿ’‡ó`U¼Œ;îr³S53S6jfÍLÔÍLÝzæÍLÔÍLoþòÜü£ÿ‰` Ù©›6jf¦jf¦jf¦lÙ³S53`û³ÆÀfÍ›6jfÍš™©›53fÍš™©ƒôÏ÷ª/™ýGš™€ÍLÙ©š™©š™³fÍLÙ©”ÃbruOú‡É^lÙ³fÍœó3þ:ÑÿÆÿ9‰Â0fè s榙ÿ8ïù‰ä›KJòÕ†·«è~j»Õ,cõc¦«a|© Ñ㨧"žÄç§?ç<‹æOËï%I¥yöÑ4Ëû½Nòú=.9‹c ïUƒ, ^»3 úç±¼»þñÿ³l<Í›/ÿÇ—ü÷ÿpLÙY³fÍ›6lÙ³fÍœOó·òóÌ>q´ÒüÓù]©&•çï+ÜË}¢KrYLó'¥5½Úñbb–?‡’qe;†“óþr"ú¾Uò‰z\uyé^ôø:bÿãÿùÈ_O×ÿ ùK.?ñØŸ¯_÷Þ'ÿ+þrþ¥_)Üboú§›þV'üäýJ¾Rÿ¸ÄßõO7ü¬OùÈ?ú•|¥ÿq‰¿êžoùXŸóõ*ùKþãÕ<ßò±?ç ÿêUò—ýÆ&ÿªy¿åbÎAÿÔ«å/ûŒMÿTñ_ËO"ëº~µ¯~jþdܬžnó"Û[Ëgm ’ÎÂÎÒ¾¼ ÁÏ&wwnD–§A“/Û6s/ͯÎ/(þFù~çÏ_™wëg§[FdX—⸜׈Hc³3µÙE~"x#Êß”>ÿœß6Ÿ™ó’7Rhÿ”òÞ¦¡¡y6ÛŒr\["°Ž[§PÎ9ìXj~**mŸO­m¡°µ·ÒìcH,íbXmáŒQ#Tx1\Ù³`û÷–ççëÀ³fÍ›,ûåfÍ›.¹Y³f̓¬Ýÿñÿ†³fÍ›6l¼¬Ù³fÍ›6Ó?Þ¨ÿÙÄN³fÍ›6lÙ³fë›ß/+6l^Ûûø¿×_×—wþôKÿõà|Ù²ò³fÍ›6lÙ²ò³¦è?ï?#úò­ÿ½Ó|Çê¬ٳ`éÿÞ[oœŸ¬`¿l¬Ù³fËÊÍ›6lV/µô7üDçœ?%`šëþq^+kDi'“ËÚº¢(«12\PÜœð?—¼ù!®~_èºå}޲ŸžCg&–5dôµh™Y]×ú E`K×áã^;Ó>¤ù«È¿›iŠãK—_Ò¢Ð/´³ksdl‰¸2ÉoÂN3ƒÄUÉ ñØvÏ y?FòýŸ•|©ÿ8ùäMëNüäÐõ[½f¶µ°¶¸]Noœž6Ф*Èܹq ØIõ½^çÈ>VüÁÿœ[»Óon<åæ_T/C Ñ^[ê¯Éf7 û¨ÂU‹‰Se9ìï$yó+Ê—šF—ú{K>MÓí-­šÃêLnˆŠ „ ùS¨ëL‰þDi×:ÿæGæOænµm$S6¡‡§¼ŠSýÊ!^ õ )-˾yƒÏ_àx45þKiRý ùíj2ÙAoo<æ{‰å â_78££™Táºñ3Ô_ó––·6ßf²ÕÜMvšE¼w hC¸’ çÃs\<–>NâŸó¯iÝÇÿ‘(öÉž•z¬zV‰YÙE_N$kSSE ðÇô•×ûõ¾üd—שŽI©ê À˜Eæo4hþKÓ'ó7›¯ Ó´«dg–âḨ¥ˆrÍ@HUžÃ>HùËÉÞhÿŸ™ëvöem¢þEhZ‘†ÓTº2E«^ \# ñ•cJsEáµÚ\ö_óï_ùÇxcHWÉîUÉ{z]¸Šrb&‘êh¯A“¿Ë¯ùÄ?ÊÊMvßÏ—W‹J×-C¬W1]ݹ׋²JÈÀƒÝO\ô†^V¶ÿyî¿ÕOø–Í›6lÙ³uÍ›/+6lÙ³`û÷–çåüKfÍ›6lÙ³fÍ›6lÙ³`û³ÆÀ³fÍ›6lÙ³fÍ—›+6Ó?Þ¨þgõ3fÍ›6lÙ³{æÍ›6l£ÐäçþÉòY›6lÙ³güÌÿŽ´ñâG аç²÷ÏŒždóÕŽ‡ù‹›¿=¼Í®hþh‡Ì76·[›„²ƒC1:Ã4ªÊõ$Qƒ7Åû;g¿ÿçï|Ã}ä3/›šúHF¥v4™µ%uº—NåX@ôoˆŠ·lö§—Þ?öm‡™yY°wüyÏø×æÍ›6lÙ³fÍ—•›6lØ8ÿ¼#þ3ŸøŽÍ›6lÙ³fë°Ï.ÎDÿÎOØ~HI§ù;Êšqóoæf³4qéžY´”‰¤F;Ë3"¿¤€Vœ€­ û ‘Æ¿'?ç5/Ì vãþr#þsÚ=SÏ7ïþåÙøMa¢C£DRÒ+=T˜(Þ –Ï¡LÅ#òùÀ{ØÜÙ³fÁöÿï-ÏÎ?×€k•›6lÙ³fÍ›6lÙ³fÁÖ?îÿøÀÿÌٳfÍ›6lÙyY³fÍ›éŸïTì¿QÀ6lÙ³fÍ›6lÙ³fÍ›¶þþ/õ×õåÝÿ½ÿÆFýx6l¼¬Ù²ò²ò³fÍ›:nƒþðCò?¯ úßûÝ7Ì~¬+ÊÍ—ƒgÿym¾r~¼›6lÙ³W/+6lÙ±ÈÜ.½òŸ|¹ù»ÿ8õ ß?,aÓ|Ýäa;Ýi ¬ßýNöÅfbòZ³Ë,hÇ÷l:A:ü­Ïïú’|µÿqÿú÷›þVç÷ýIZÿ¸ÿý{ÇÿÊÍüÿôýðO–¸òãÿóÖ•ÿ}ã?åhþÔ“å¯ûÿ×¼ßò´?¿êIò×ýÇÿëÞoùZ?Ÿßõ$ykþãÿõï7ü­Ïïú’<µÿqÿú÷œÿóËÿœó–Öÿ—™PižPòD³,úĺ5ÿ×/¯cˆ‡KXÉ ±$Œ?xå$øvg« ¯A@{AËÊÎùÿùýåŸùÇ-¿š<Ù(›S¸¬:F‘&ëPº;,Q"†jTŽOÆ‹ó#<‰å/È;ÎYy¦/ÎùÌ=!ô/,éJ© yÕÀÂHê×ucV<·É²ï%†šó"8 céóŠŸhF 7Aðƒžìfg%Ü’ÇrNç—\¬Ù³`ûo÷žëýTÿ‰` Ù³fÍ›6l¿žl¬ÙyY³`û÷–çåüKåfË®lÙY³fÍ›/®VlÙ°}‡Y¿ãàÓ6lÙ³fÍ›6lÙ³fÍ›éŸïT3ú޳fÍ›/+6l¼¬Ù³e‡'Uÿ¨|•æÍ›6lÙÁ¿3?ã­ü`_ø‘Ï/þvËù޾][ÈH¬ŸÌ÷1ÂÓjz6Öì9ˆ'r»PÇü“œGÊ¿ó…^N¼k5~{©óǵ./}}}#,JÀ}˜R! :TŠ‘Lô·.|±ù[¦,þ^éé:Q•§6ð+ê=97ÆÌjiãÇË¿ïû6ÃÌÙ³`áþñÏø×æËÊÍ›6lÙ³fÍ›7¾l¼ÞÿÏüGæÍ›6l³DŽK‰YRQ¤‘Ü…TEf$ônsæ/š¿8ÿ2ÿç1umkòßþq2êÓIü´±OÑÚ÷šuŠKs$Œ±ØÔ;ƒSé­z³/ÂO¸%¿$¼¥ùå‹oËÿË‹S ”5i®f<înezz’Jþ,GÙP(α›6lÙ³fÁöÿï-ÏÎ?×€3fÍ›/+6lÙ³fËÊÍ›Xÿ»ÿãÿ :fÍ—•›6lÙ³fÍ›6lØ?Lÿz£ÿeú޳fÍ—•›6^l¬Ù³fÍ‹ÛúëúòîÿÞ‰ã#~¼›6lÙ³fÍ›6lÙ³gMÐÞ~Gõä[ÿ{¦ùÕ…Y³fÁÓÿ¼¶ß9?^Í›6lÙ³fÍ›6lÙ³fÁËþðŸøÎ?â86lÙ³e;,jÒÈB¢+;±4 ª*I> œùçù·ÿ9æoÎ/5§üã—üá½ì/®ÅÂ1ù ¨6ºe­A¤à‡Ž¤FÿÊ¿´WпóŽßó~]ÿœs³ÔfÑn.5_4k“½Æ³­Þ5n.˜°P ˆ+öT É9èŒÙ³fËÊ̓í¿Þ{¯õSþ%€3fÍ—›+6l±•›6lÙ³`û÷–çåüKfÍ›6lÙ³fÍ›6lÙ³`û³ÆÀ¦lÙ³fÍ›/+6lÙ³f̓ôÏ÷ª/™ýGfÍ›6lÙ³fÍ›6lÙG¡ÉÕOý;ä¯6lÙ³fÎ ù™ÿhÿãÿÄŽsõRÄ(êsÄÃþr³ÌZל-´$y@^ù*çS›C]žëÓiucfh⊀ñªñävë¾wïÉÍHÿ7¼¿'˜›i×ö—·uõ›7?F⣨zæã=)åÒžÿÎØwÈfäAü’ÒT5Žšíïõ™¥Oï%.‘…? zE8š)$š}#òO“tOË­ÃÈÞK³†ÃEÓ¡X`‚U ݸ€ ±Ýš•c’zÕ9ª‘úÞ„h²\ثݪŸñ,Q㚣Ç5FnCÇ5GŽ]FW!㚣Ç5GŽ_!•Q㚣Ç5GŽjÕ9ª3Txàûr>«sòþ%€*×˾^°´±Ò¬¢X-mmáTŠ(×¢ª@?_|3úéÿ}Cÿ3}tÿ¾¡ÿ€¾ºßPÿÀ ß]?ï¨ào®Ÿ÷Ô?ð7×Oûêø›ë§ýõüÍõÓþú‡þfúéÿ}Cÿ3}tÿ¾¡ÿ€6Þì˜.§Ê›?|õÓþú‡þfúéÿ}Cÿ3}tÿ¾¡ÿ‘c7×Oûêø›ë§ýõüÍõÓþú‡þEŒß]?ï¨ào®Ÿ÷Ô?ð7×Oûêø›ë§ýõüÍõÓþú‡þfúéÿ}Cÿ3}tÿ¾¡ÿ€¾ºßPÿÀ ß]?ï¨ào®Ÿ÷Ô?ð7×Oûêøƒ`»&Þá½8¶ ·CñwÀ_]?ï¨ào®Ÿ÷Ô?ð7×Oûêø›ë§ýõüÍõÓþú‡þfúéÿ}Cÿ3}tÿ¾¡ÿ€¾ºßPÿÀ ß]?ï¨ào®Ÿ÷Ô?ð7×Oûêø›ë§ýõü‹¾ºßPÿÀ ß]?ï¨ào®Ÿ÷Ô?ð7×Oûêø›ë§ýõüÁ–WeŒ¿»ˆR; ÀBøÿ¾¡ÿ€]?ï¨àczßPÿÀ ß]?ï¨ào®Ÿ÷Ô?ð7×Oûêø›ë§ýõüÍõÓþú‡þfúéÿ}Cÿ3}tÿ¾¡ÿ€¾ºßPÿÀ ß]?ï¨ào®žÑCÿ3}tÿ¾¡ÿ€¾ºßPÿÀ ß]?ï¨ào®Ÿ÷Ô?ði÷eîc_N!Rwèp½?ï¨à_×Oûêù3 ÓÞ(ào®Ÿ÷Ô?ð7×Oûêø›ë§ýõüÍõÓþú‡þfúéÿ}Cÿ3}tÿ¾¡ÿ€¾ºßPÿȱ›ë§ýõüÍõÓþú‡þfúéÿ}Cÿ3}tÿ¾¡ÿ€¾ºßPÿÀ £zhuüÉŸ¯þBÿq^Ÿ†IsfÍ›6làß™ŸñÕþ0/üHç˜ÿ9ô]_Ìš¾ƒ ù{Oó4wöñê6:”¦(’ο¼™Ht%Óª­wð9óÞùÆ¿;ù^{í;Ë’>RÔtƼž[{CX™æhÙøù^+JQiðôÏwÎ<ù[Zò•[Ióo•4¯'_Éenpn-Ê0”¹’SÉ»Ž]º õ—Þ?öm‡™yY°wüyÏø×æËÊÍ›6lÙ³fÍ—•—•ƒûÂ?ã9ÿˆàÙj*h;猿?¿ç(µ?'ù¦ÏòòJ‡Í›·ß¼k);8êO/4^}/" }¾ `ùÇoùÄ{&^·ç_篧æ/ÎNà_^ê9xld ª(D£7—`3Ûd–%›rzœÕÊÍ›6lÙ³f̓íÿÞ[Ÿœ¯fËÊÍ—•›6lÙ³eåf̓¬Ýÿñÿ†³fÍ›6lÙyY³fÍ›6Ó?Þ¨ÿÙÄN³fÍ›6lºæÊÍ›6lÙ±{_ïâÿ]^]ß÷òÿÆFýx/ç•›6^VlÙ³eæÊÍ7Aÿx!ù×}oýî›æ?Vœ¬Ù°tÿï-·ÎO×€sfËÊÍ—•—•›6lÙyYx4¼'þ3øŽÍ›³fÍ–2³eûefÍ—•›6l¦½QüÏê8fÍ›6l¾™Y³fÍ›6^4ô9:ÿ²|•æÍ›6lÙÁ¿3?ã­ü`_ø‘Î+æÿ;ùsòþÄk¾|Õlôm5¤‹›éVŒ‡p¼›jštÎoüåäÐp[ÏÞ[§ý´bþ¹Å?çõõo"ëÚµÇÖ —Íz³Å(rêÈÒUJµOÂFã>‹ywýãÿfØ{•›6ÿ/ùïÿàÙyY³fËÊÍ—•›/+6XÁ¿ñâ?ã9ÿˆàJyâ´ŠK»ÉxQ¤–YX"FŠ*Ììh@Ü“¶|ØüÍÿœŠÖÿç(õÿ8ÿÿ8,Òi—ªÉæO:¬sEŸl¤‰líé‡g¡££·0x êG«ÿ ?ç<“ÿ8Ù¦\i?—ÐË5õ÷¦oõ[Ò²^\”P(d ÆMXGR=s¾æÍ›6^VlÙ³f̓íÿÞ[Ÿœ¯fÍ›6lÙy²³fÍ›6l¼cþïÿŒü0Í›6^VlºæÍ•óÍ›/+6l¦½Qÿ²ýG Ù³fÍ›6lÙ³fÍ›6l^Ûûè¿×_×—wýü¿ñ‘¿^Í›6_|¬Ù³eåfÍ›6tÝýà‡ä^Aõ¿÷ºo˜ýXU›6^Ÿýå¶ùÉúðlÙ³fÍ›6lÙyYyY³`áþðŸøÎ?â8 ̨¦I*(«3ªîIØsž üØÿœ‘ógŸ|çüãßüâµÔuØ—˜üÊÀÍc£ÇR¥9ˆòÿ«!<¾^@Ó­ÿÎ4ÿÎ2hÿó:UÔ÷7Mæìßñðl¼¬Ù³fÍ›6lÙyY³eàí3ýêæQÀ6lÙ²ò³fËÊÍ›6lǦN?ìŸ%™³fÍ›6poÌÏøëGÿþ$sŠù»Èþ\üÀ±Ÿ4«=gMYÂÚúš! Ø7Ú wÎgÿB½ù7ÿR—?îôÎå/%y{ÈV? ¼¥Úhúi‘¥6ÖQ£æÝ[ŠíSß;—Þ=ÿ°ó6lØ;þ<¿ç¿ük€sfËÊÍ›/+6^V^VlÙ°qÿxGüg?ñ…yÃÎÞ]ü¼ÒäóOŸµ[=Hˆñk«é’ËЊ\€\Óesæ¿×ÿ3ÿçàr_ËäíJ"þB,ñZ8š"/õÈârfxUHÇÂTKéô S\úAä_Ëÿ-~Xh¶¾Lü½Ó-ô­Î1PÀ€õ‘þÔŒOÄY‰%r_›6lÙ³f9³fÍ—•ƒíÿÞ[Ÿœ¯fÍ›6^V^n¹Y³eåfËÊÁÖ?îÿøÀÿÃŒ¼ÛefÍ›/6VlÙ²ò³fÁúgûÕÓÿ8fÍ›6l¼ÙŽVlÙ³fÍ›¶þþ/õ×õåÝÿ½ÿÆFýx6lÙ³fÍ›/®VlÙ³gMÐÞ~Gõä[ÿ{¦ùÕ…Y³fÁÓÿ¼¶ß9?^ËÊÍ›6l¼Ù³efÍ›6l?Þ#ÿÇüGµ}ZÃËÚ}Ϙ|Ãu Ž•eMuwpâ8¢EK35û÷ϘZÏæžÿç=®bü¼ü˜µÕ|•ùL$•µ¯4Ý#+j°C'BÌ ã¥J¬£¯Æh(}õùIù)ä¯È­&_,~Uéi¦ÙÜJg¹‘¦¸¸”þÔÓHZGö Ä/lêY³fÍ›/+/6VlÙ°}·ûÏuþªİlÙ³fÍ›6lÙ³fËÊ̓íÿÞ[Ÿ”ñ,—•›/6VlÙ³fÍ›6lØ>ÃíMÿ Ù³fÍ—•›6lÙ³fËÊÁúgûÕÌþ£€3eåfÍ›6lÙ³fÍ›(ô99ÿ²|–fÍ›6lÙÁ¿3?ã«ü`_ø‘Î{í›+'ž]ÿxÿÙ¶f͛Ǘü÷ÿplÙ³fÍ›6lÙyY³fÍœ{óÿþr Ê¿óþPÍþ~i¤{«¿CNÓíS•ÍìåE#ˆîÌBžxóÉ_’mÿœ¬ózþvÎXi‡OòŽ‘#¯”üžÎ¨åýýðBÅ‹ zŸý›gÑ« m*ÖßJÓ!K{+X–!ˆQ#Tv`®™³fùååfÍ›/+6lÙ°}¿ûËsóõà¬Ù²é•—•—•›6^VlÙ°uû¿þ0?ðÀ#¦l³•—•›/+6lÙ³fÍ›éŸïTì¿QÀ.™Y³fÍ›6^Vl¼¬Ù³bö¿ßEþºþ¼uß÷òÿÆFýx6lÙ³fÍ›6l¼¬Ù³¦è?ï?#úò­ÿ½Ó|Çê¬ٲðlÿï-·ÎO×€©•—•›6lÙ³fÍ›6lÙyÌ?9¿=¼•ÿ8ùådóŸæ­ì–zt׫oAM<ò¯ã]Íäš;ç<·ùYçùÏYäüÍüõ¸¼òÿäü¯ysË6N‘M}RòÞš;þ!Õ«öQ\úw¥ivz…®¢@–šmŒ)oko¢EbŠª=‡s¹ïƒ³fÍ›6l¾™²³fÍ›/[¼÷_ê§üKfÍ›6lÙ³fÍ–r³fÍ›Ûÿ¼·?(ÿâX6^VlÙ³fÍ›6^n™Y³`ý?íMÿ Ù²ò³fÍ›6lÙ³fÍ›éŸïT3úŽùfÍ›6lÙ³fËÊÍ›6St9:¯ýCä¯6lÙ³fÎ ù™ÿhÿãÿÄŽsܬ±ï“¿.ÿ¼ìÛ3f̓¿ãËþ{ÿƸ/6VlÙ³eåfÍ›6l±Öƒ—™ÿ5®eŽÓMò½£4—y…Q§†(Š>" RzUzä'òcþqKÌzŸ™,ÿç#ÿç+5dóž¡·Š-?F1)°ÑÝ—“qViåCѨ ¹« ÷Q%NVlÙ³fÍ—•›6lÙ³fÁößï=×ú©ÿÀ³eåfÍ›6lÙ³fËÊ̓íÿÞ[Ÿ”ñ,›6lÙ³fÍ›6lÙ³f̓ôþ³ÆÀ6lÙ³fÍ›6lÙ³fÍ›éŸïT3úŽÍ›6lÙ³fÍ›6lÙ²C“Ÿû'ÉfqO=þYjþzó%Ž¥¨y†òÇÉÖV²úÚ]„ÒÚIqrÇá–K˜]"/D­+¹ÏÌŸ0i–¿˜:~µ©ê¶Úèú®œäºh¤e±Ê„¼¦6ä‹'2ÇÄS;忚|±£¦¥¨ÙÚù«M×,tÉî–ÓÍw®cŠ2Í$Q\O*°|Lá®sI¯üÁåÿË]'þrAµ½B1Ï=­ýì/w)³’Îæ`¦Ø[0 Te£¬aªµ­Nt›[kßο5ùÊ;bþÏMòëCa¥E§^Ml©pÐ ZáýOTÔÂNKAÓ|š~S~lßê¿•°~`ù‚ÖóWÔìRx. Óa\ÜÉm1„˜â^ ³S—Nù¹óÐüÃa®®‘«èœ¡õmjÓê· Äך§&ªÐ5z×Í›:?•¬ÍÅ?V$ýã ;Pä‹ôiÿÛÿÈÏìÍú7þ/·ÿ‘ŸÙ›ôiÿÛÿÈÏìÍú4ÿ¿íÿägö`¿Ñÿèœ=h?¾­yíö|i×~?ïûùý™¿FŸùhƒþFfoÑ¿ñ|ò3û2ÿFÿÅðÈÏìÊýßöÿò3û3~?ïûùý™¿FŸ÷ý¿üŒþÌߣOûþßþFfoѧýÿoÿ#?³7èÓþÿ·ÿ‘ŸÙ›ôiÿÛÿÈÏìÍú7þ/ƒþFfoѧýÿoÿ#?³7èÓþÿ·ÿ‘ŸÙ{‰ZYnm’4RÌÍ(@êI"€ùõù±ÿ9'æï>yÂóþqÓþq =OÌö¶²¶­æi¥ ¦éŒËEU‘RU3)þ`?„JŽçÿ8Ûÿ8³£þ@éÜ]Þ[k~~Õ›ë÷˜îX½ÍÜìyV»,jzG#ñ\ôù°ÿDúÐÿ|Myíö|i×~ÿ‹íÿägöfýßöÿò3û3~?ïûùý™¿FŸ÷üò3û3~?ïûùý™¿FŸ÷ý¿üŒþÌߣOûþßþFfoѧýÿoÿ#?³7èÓþÿ·ÿ‘ŸÙ›ôiÿÛÿÈÏìÍú4ÿ¿íÿägöfýßöÿò3û3~ÿ‹íÿägöfýßöÿò3û3~ÿ‹íÿägöfýßöÿò3û3~?ïûùý˜26ó§­ äcÜ>‡¾Øôoü_oÿ#?³+ôiÿÛÿÈÏìÍú4ÿ¿íÿägöfýßöÿò3û3~?ïûùý™¿FŸ÷ý¿üŒþÌߣâûùý™¿FŸ÷ý¿üŒþÌߣ|'ƒþFfoѧýÿoÿ#?³7èÓþÿ·ÿ‘ŸÙ›ôiÿÛÿÈÏìÍú7þ/·ÿ‘ŸÙ›ôiÿÛÿÈÏìÍú4ÿ¿íÿägöeþÿ‹àÿ‘ŸÙ•ú4ÿ¿íÿägö`Ë=?‡­ûè aa³ô÷;tÀcM?ïûùý™¿FŸ÷ý¿üŒþÌߣOûþßþFfoѧýÿoÿ#?³7èßø¾ßþFfoÑ¿ñ}¿üŒþÌߣOûþßþFfoѧýÿoÿ#?³7èÓþÿ·ÿ‘ŸÙ›ôoü_üŒþÌߣâûùý™¿FŸ÷ý¿üŒþÌߣOûþßþFfoѧýÿoÿ#?³7èÓþÿ·ÿ‘ŸÙ›ôiÿÛÿÈÏìÍú4ÿ¿íÿägö`Í?OápëBi]ƒÔô>Ø i§ýÿoÿ#?³7èÓþÿ·ÿ‘ŸÙ›ôiÿÛÿÈÏìÍú4ÿ¿íÿägöfýßöÿò3û3~ÿ‹àÿ‘ŸÙ›ôiÿÛÿÈÏìÍú4ÿ¿íÿägöfýßöÿò3û3~ÿ‹íÿägöfýßöÿò3û2ÿFÿÅöÿò3û2¿FŸ÷ý¿üŒþÌߣâûùý™¿FŸ÷ý¿üŒþÌߣOûþßþFfoѧýÿoÿ#?³ƒO+,mëÁ³© “ß厹ӹM# àv4/ïòÄ?FŸ÷ý¿üŒþÌߣOûþßþFfoѧýÿoÿ#?³7èÓþÿ·ÿ‘ŸÙ›ôiÿÛÿÈÏìÍú4ÿ¿íÿägöfýßöÿò3û3~?ïûùý™£OûþßþFfWèßø¾ßþFfoѧýÿoÿ#?³7èÓþÿ·ÿ‘ŸÙ›ôiÿÛÿÈÏìÍú4ÿ¿íÿägöfýßðÈÏìÉþ£g|•¨:©¨ëØäGV±õo%“Ö…jFÌô#o awèÓþÿ·ÿ‘ŸÙ›ôiÿÛÿÈÏìÍú7þ/·ÿ‘ŸÙ›ôiÿÛÿÈÏìÁ“XVÞõ /¹}Om°èÓþÿ·ÿ‘ŸÙ›ôiÿÛÿÈÏìÍú4ÿ¿íÿägöfýßöÿò3û3~ÿ‹íÿägöfýßöÿò3û3~?ïûùý™¿FŸ÷ý¿üŒþÌߣOûþßþFfoѧýÿoÿ#?³7èßø¾ßþFfoÑ¿ñ}¿üŒþÌߣOûþßþFfoÑ¿ñ}¿üŒþ̦ÓÄjÒIsl¨ ³3I@êI¦Àw9àÍïùÉ4yŸÎRÿÎ9Î$[Yë^sŽÖYuM~YU´Í(<‘RU2«Sí9Qh{u/ùÇ?ùÄòVÑ<Ñæ™¬¼Ëù£y3Þjžh½¬·Mq £,'&µ^%ú‘Ó=p,?Ñ zðÿ|¼öû>4ë?FŸ÷ý¿üŒþÌߣOûþßþFfoѧýÿoÿ#?³7èÓþÿ·ÿ‘ŸÙ›ôiÿÛÿÈÏìÍú4ÿ¿íÿägöfýÿÛÿÈÏìÍú4ÿ¿íÿägöfýßöÿò3û3~?ïûùý™¿FŸ÷ý¿üŒþÌߣâûùý™¿FŸ÷ý¿üŒþÌߣOûþßþFfoÑ¿ñ}¿üŒþÌߣOûþßþFfoѧýÿoÿ#?³AaÆ „õ¡<‚nañwÛþ?ïûùý™¿FŸ÷ý¿üŒþÌߣâûùý™¿FÿÅöÿò3û3~?ïûùý™£âø?ägöe~ñžßþFfoÑ¿ñ}¿üŒþÌߣOûþßþFfoѧýÿoÿ#?³7èÓþÿ·ÿ‘ŸÙ—ú7þ/·ÿ‘ŸÙ•ú4ÿ¿íÿägöfýßöÿò3û3~?ïûùý™¿FŸ÷ý¿üŒþÌߣOûþßþFf ‚ýÂzÐA7°¡ï¶ýÿÁÿ#?³7èßø¾ßþFfoÑ¿ñ}¿üŒþÌߣOûþßþFfoѧýÿoÿ#?³7èÓþÿ·ÿ‘ŸÙ—ú4ÿ¿íÿägöe~?ïûùý™¿FŸ÷ý¿üŒþÌߣOûþßþFfoѧýÿoÿ#?³7èßø¾ßþFfoѧýÿoÿ#?³7èÓþÿ·ÿ‘ŸÙ›ôiÿÁÿ#?³7èÓþÿ·ÿ‘ŸÙ›ôiÿÛÿÈÏìÁ–v ¿¾„Ö'=i^ý:`1¦šoÿ#?³7èÓþÿ·ÿ‘ŸÙ›ôiÿÛÿÈÏìÍú4ÿ¿íÿägöfýßöÿò3û3~?ïûùý™¿FŸ÷ý¿üŒþÌߣOûþßþFfoѧýÿoÿ#?³7èÓþÿ·ÿ‘ŸÙ›ôoü_oÿ#?³7èßø¾ßþFfoѧýÿoÿ#?³7èßø¾ßþFfoѧýÿoÿ#?³/ôiÿ–‹ùý™_£âûùý˜3O°áqúК°zžŸ,ú4ÿ¿íÿägöfýßöÿò3û3~?ïûùý™¿FŸ÷ý¿üŒþÌߣOûþßþFfoѧýÿoÿ#?³7èßø¾ßþFfoѧýÿoÿ#?³7èßø¾ßþFfoѧýÿoÿ#?³7èÓþÿ·ÿ‘ŸÙ›ôiÿÛÿÈÏìÍú4ÿ¿íÿägöfýßöÿò3û3~?ïûùý™Ž›±ýý¿üŒþÌ—ý[ü´þâŸkñùd<ÿ9¨y¯^Öm?.í´­`ù æÙßY¾Ò#î'$Ñmc2H +¶áA¦ÊÃ%¶ZÞ±¥y>+OÉŸ,M§&4þÕ¢´¶k¼¢ß„¬ ”û%ØÝr5¬ùsQüîóV•æ6Òï´mH°Õ-e:’$3Ë-ô>š„Dy*Š7bi¿Žsså_9kþBÓ?ç.ô;»kË;‹{kÍUý/¨›Y¹‰#9fwP /¦ kZgCÞaü¡ó_›/4Í ÷XÓ<Îa¼°“O7¥vú-áÞ2‰²°oˆR¿,êÿ‘B½ü¶òVåmm‘µ5õ®.½3ÉD×´® €*µ+í„¿™ŸñÕþ0/üHç=§†n™²wåß÷ý›aæ]2³`ïøòÿžÿñ®ÊÍ—í•›6lÙ³eüò°§_×tï+iw¾hóÌvzNÜÝÜÊOâAVcJ“ì$öóÌ?™^`ÿŸ„jGò»òQ®ô_É=óN¹w ÛÞ^ÔÔ[[æxµ6¢Šõv ðŸ ?”“^MüˆÐO‘¿*´Ñ¦èÆcpèÒ<ÒK!/$’f4è+AØ7÷„ÆsÿÀ9³eåfÍ›/+6lÙ³f̓íÿÞ[Ÿœ¯fÍ›6lÙ³fÍ›6lÙ³`ë÷ü`á€FlÙ³fÍ›6lÙ³fÍ›6ÒÿÞ¨ÿÙÄN³fÍ›6lÙ²ò³fÍ›6/kýü_ë¯ëË»þþ_øÈ߯æÍ›6lÙyY³eŒ¬Ù³¦è?ï?#úò­ÿ½Ó|Çê¬ٳ`éÿÞ[oœŸ¯efÍ›6lÙ³fÍ›júµ–aw¯ë—Úi¶=ÍÕĦ‰Qг5*v§°Ï˜>hüÚóüçæ¢(çëGü¢c>móÜ" ›˜Ù-­s4p (€“öØ(â}ñù;ù#ä¯È ü•ùO¦þŽÒå›×›œ¯4ÓIN<ä‘Ëh:„TÐ ê¸8¼'þ3øŽÍ›6lÙ³fÍ›6lÙ²ò°}·ûÏuþªİlÙ³fÍ›6lÙ³fÍ›6·ÿyn~Qÿİ^VlÙ³fÍ›6lÙ²óe`û³ÆÀ¦a›6lÙ³fÍ›6lÙ³fÁúgûÕÌþ£€lÙ³fÍ›6^ožVlÙ²C“ºÔ>J³fÍ›6làß™ŸñÖþ0/üHç=Í›'~]ÿxÿÙ¶eŸlß<¬ÿ_óßþ5À9³fÍ›6lÙ³fÎWù·ùßä_È­,yó[Y·Ò­åIM¬NKOtѯ"Æ ³Ò´ã]‰Ïè_•Ÿ˜ßóæçÍÍ×”)ÅüWzW“aVêÑ/Á-˳!Èó‡âÜ ]›>éÚ}¦io£hÖðÙéÖ‘¬6öÖè#Š(ÐQUhØ/6?ïÿŒçþ#€sfËY³fÍ—•›6l¼¬¼oþòÜüãýx6lÙ³fÍ›6^VlÙ³fÁÖîÿøÀÿÃŒ¼¬Ù³fÍ›6lÙ³fÍ›éŸïTì¿QÀ6lÙ²óefÍ›6lºwÊÍ›¶þú/õ×õåÝÿ/üdo׈efÍ›6l¼¬ÙyY²ò³¦è?ï?#úò­ÿ½Ó|Çê¬ٳ`éÿÞ[oœŸ¯æËÊÍ—›¶l¬Ù³g3üÓüæòG䎖¾eüÖÖ­´{)}An%$Ëp襊C‚Ìh:@v'<¤~^~cÿÎzç_Íû«¿&~MýzôÏ+@¬.5khkÆiݘqhIxhß°§ZN“aåû m@µ†ÇK²‰`¶µ·AQF¢UT?®ø`r°pÿxOügñ—•›6lÙ³fÍ›/+6lØ>Ûýç¹ÿU?âX6lÙ³fÍ›6lÙ³fÍ›Ûÿ¼·?(ÿâX+/+/+6lÙ³fÍ—•›6°ë7ü`|3fÍ—›+6lÙ³fÍ›6l¦½Q|Ïê8eåfÍ›6l¼¬Ùc+6l£ÐäçþÉòY›6lÙ³güÌÿŽ´ñâG9îlÙ;òïûÇþͰó/+6ÿ/ùïÿàÙ³fÍ—•›6lóOüä_üäöÿ8òº^Œ4Ë3ùÛ\`Òü·a Së#Ð3¤~ Á¹¶#ˆ~JÿÎ5kß™Zô¿ó‘?ó˜–ðjÞe»GMË‘ú¶š±cDh\ÚR:ƒ§Û,XíôUcUŠ0B*¨ UQ@ÀeæÍƒûÂ?ã9ÿˆàÙ²ò³fËÊÍ›6lÙ³eàë÷–ççëÀ³eåfÍ—•›6^VlÙ³`ë÷ü`á€GLÙ³eôÊÍ›6lÙ³eåfËÁÚgûÕû/ÔplÙ³fÍ›6lÙ³fÍ›6/mýü_ë¯ëË»ÿz%ÿŒúð>lÙ³fÍ›6lÙ³eÓ+:nƒþðCò?¯ úßûÝ7Ì~¬*Í›6Ÿýå¶ùÉúðVlÙ³eÓ+6lÙåßùÉoùÊòK‹OÒâÿùÿU”Ùhþ^±‘åîXlÓF9:F¤‚~[aM뜛ò¿þqkÌþ}ó\Ÿžó™Òéþa×+‰åÅS6™¥Fê ‰Õ#iw£+FÔaRÌiO|E[Ç´ ±Ã,q¢ªˆ¢ŠªÀ°¦)•›÷ˆÿÆqÿÀ9³fÍ›6lÙ³fÍ›/+6¶ÿyî¿ÕOø–Í›6^VlÙ³fÍ›/6VloþòÜü£ÿ‰` Ù³fÍ›6lÙyY³fÍ›ØnÓÆÀ6lÙ³fÍ›6lÙyY³fÁúgûÕÌþ£€3fÍ›/6VlÙ³fÍ›(ô99ÿ²|–fÍ›6lÙÁ¿3?ã­ÿŠþ$sžæÍ“¿.ÿ¼ìÛ3f̓‡ûÅÿ=ÿã\›6lÙ³fÍŽU20DbhxóÇþs îç\ºÿœxÿœY´—]üÚ{”±{Ç„~ŒÓ‹©2;Ìì’ Ud¯Ndq·ÿ8áÿ8ƒåïÈk³ù‡«^Ýù‡ó*þÐC¨ê÷³z‰¶ò­¢ñ^±4«Ô 3×Y³f̓ûÄ?ã9ÿˆàÙ³fÍ\Ù³fÍ›6lÙ²úoƒ­ÿÞ[Ÿœ¯fÍ›6lÙ³fÍ—•—•›6±ÿwÿÆþfÍ›6lÙ³fÍ›6lÙ³`ý3ýêý—ê8xæÍ›6^Vl¼¬Ù³fÍ›6/mýü_ë¯ëË»þþ_õÛõà|Þù³fÍ›6l¼¬Ù³fΛ ÿ¼üëÈ>·þ÷Íó« ³f̓§ÿym¾r~¼›6^l¬¼¬ØøãiXG,ç`Sžüéÿœ­óÏ™ïÿç¿ç4æoÌ‹Kf7÷¯Ál´–,«ÉšGE‘Ð1$ÀP5 äÃþq»þpÿË_‘²Gù‡æÚçæÅêÍ.­¯Ï+½f¹ Ê–éð¢ ;áÏ®ôÛ=}›6lØ8¼Gþ3øŽÍ›6lÙ³fÍ›6lÙ³fÁößï=×ú©ÿÀ³fÍ›/+6lÙ³fÍ›6·ÿy®~QÿİlÙ²ò³uÍ›6lÙ³eåfÁöfÿŒ€lÙ³fÍ—˜åfÍ›6lÙ°~™þõEó?¨à Ù³fÍ›6lÙ³fËÊÊ=NìŸ%™³fÍ›6poÌÏøëGÿþ$sžæÊÉç—Þ?öm‡™³fÁßñåÿ=ÿã\—›+6lÙ°©ªØèV’êúíÝ½ŽŸk›¹RcБÈUí¹Ïœ^uüïüÈÿœªÕõ¯Ê_ùÄ¡ogäxþ£«ùæ_QI‘˜ OnQ|Jœ‡Â\¸Þª “ìßÈÏÉ,ÿÎ=yVËï!FZ%>¥íüª¢æþsö¦”F¿d²6÷ν›6lÙ°qÿxGüg?ñ—•›6_\¬¼¬Ù²óf®VlØ>ßýå¹ùÇúðlÙ³fÍ›6lÙ³fÍ›6±ÿwø¡ÿ†³fËÊÍ›/+6lÙ³f̓ô¿÷ª?ö_¨à—\¬Ù³fÍ›6lÙ³fËÊÅí¿¾‹ýuýywïD¿ñ‘¿^Í›/ß+6lÙyYyY³fΛ ÿ¼üëÈ>·þ÷Mó« ³eå`éÿÞ[oœŸ¬`Ù³fÍ—•…šÖµ§ùkOºó˜®¡±Ò¬biî®®$QF»–f;o°ß>mùßó[Ìó›^`É_ùÆëë7ò®ÒH¤óž­VX^R>/ªZsôNÕ™'â (ø½«ùùå?ùǯ.Ÿ%~^Ã'§,Ïqw}vQïo%bO;‰QS™¢íA‹6^VlØ8¼Gþ3øŽÍ›6lÙ³fÍ›/+6lÙ°}·ûÏuþªİVlÙ³fÍ›/+/+6lÙ°}¿ûËsòþ%€3fÍ›6lÙ³fÍ›6lÙ°}‡Y¿ãà—•›6lÙyY³fÍ›6lØ?Lÿz¢ùŸÔplÙ³fÍ—òÊÍ›6lÙ²C“ªÿÔ>JófÍ›6làß™ŸñÖþ0/üHç=Í›'~]ÿxÿÙ¶f͛Ǘü÷ÿplÙ³fÍ̯Ì/~QyjÿóÏ÷‰c£iñ—wfPò½>¢ @yì«_Ã>xéú7æ'üçæ£¥ëŸ˜Úeß’?"mV;Á¢K+›}¹ŸM¤eXˆŽ€92 û!ª}òW‘¼¹ùm£ÃäïËÝ.ÛGЭٚ+;U¢+1«1&¬Ì{³Ý«’œÙ³fÍ›÷„ÆsÿÀ9³fÍ›6lÙ³fÍ›6lØ>ßýå¹ùÇúðlÙ³fÍ›6lÙ³fÍ›6±ÿwÿÆþtÍ›6lÙ³fËÊÍ›6lÙ°~™þõGþËõ3fÍ›6lÙ³eåfÍ›6l^Ûûè¿×_×—wþôKÿõà|Ù³fÍ›6lÙ³fÍ›:nƒþðCò?¯ úßûß7Ì~¬*Í›/ÏþòÛ|äýx6lÙ³fÈ?æ'æ_•ÿ)ôKŸ8~aj–Úfm “4¨’ÏéÒfS#îÜŠçÎÝ+Ë_š?óžæÏÍ^|ùCò Kæž/ÕÓSÕm㧦feXë O/Q•jx«Q[>•ùcÊZ’4øü½ä2ÏHÒ¢âÖʆ1ÅB‚Bɨ,ÕcÜáþlÙ³f̓‡ûÂã8ÿˆàÙ²ò³fÍ›6lÙ³f͛ۼ÷_ê§üKfÍ›6lÙ³fÍ—•›6lØ>ßýæ¹ùGÿÀ³fÍ›6lÙ³fÍ›6lØ:ìßñðé›6lÙ³fÍ›6lÙ³f̓ôÏ÷ª/™ýGfÍ›6lÙ³fÍ›6lÙMü2qÿdù,Í›6lÙ³ƒ~fÇZ?øÀ¿ñ#œ÷+7\èžX¸ô¬¸úQ¿ïv¿É×âˆ~æþ¹¾¹ÿC÷7õÍõÏø¢¹¿®o®ÿÅýÍýpgÖÿÐùz1}JPÓìõë€þ¹ÿC÷7õÍõÏø¢¹¿®o®öô!û›úæúçüQÜß×7×âˆ~æþ¹¾¹ÿC÷7õÏ:ÎBÿÎYyþq¦Æ9|þáõ»ëy%Òô›Xd–âíÔñP)ðÆ¥ˆø–¢¼jsËß—óþwÿœ…Õ4ÎÿùÌ˵–iäÔ´O%ÛQ-,’P¦9AɘS‘C#œˆ«.}-7Ü·0CЀÀe}wþ(‡îoë›ë¿ñD?s\ß\§û¢¹¿®_×?âˆ~æþ¹_\ÿŠ!û›úæúèÿ|C÷7õÍõÏø¢¹¿®o®ÿÅýÍýpgÖ¿ÐÃz1|E(iözõÀ\ÿŠ!û›úæúçüQÜß×7×?âˆ~æþ¹¾¸?ßýÍýs}p¾!û›úæúïüQÜß×7×âˆ~æþ¹¾»ÿC÷7õÍõßø¢¹¿®_×âˆ~æþ¹_\ÿŠ!û›úæúçüQÜß×7×û⹿®o®ÅýÍýs}sþ(‡îoë›ë¿ñD?s\ß]ÿŠ!û›úàè.«mpÞŒB†=¨hwï¾úïüQÜß×7×?âˆ~æþ¹¾¹ÿC÷7õÍõßø¢¹¿®_×+þè‡îoë•õÏø¢¹¿®_×|`‡îoë•õÏø¢¹¿®o®ÿÅýÍýs}sþ(‡îoë›ëŸñD?s\ß\ÿŠ!û›úæúçüQÜß×7×?âˆ~æþ¹¾¹ÿC÷7õÍõÏø¢¹¿®o®ÿÅýÍýpm•×/[÷1 Bç`®›qÜß×7×âˆ~æþ¹f÷¿¡Üß×+ëŸñD?s\¿®ÅýÍýr¾¹ÿC÷7õËúïüQÜß×+ë£ýñÜß×7×?âˆ~æþ¹¾¹ÿC÷7õÍõÑþø‡îoë—õÏø¢¹¿®W×?âˆ~æþ¹¾»ÿC÷7õÍõÏø¢¹¿®_×Gû⹿®o®ÅýÍýpfwÊæ5ôbZ×p z|/?âˆ~æþ¹¾¹ÿC÷7õÍõßø¢¹¿®_×?âˆ~æþ¹¾º?ßýÍýr¾»ÿC÷7õÍõÏø¢¹¿®o®ÿÅýÍýs}sþ(‡îoë›ëŸñD?s\¿®ÅýÍýr¾»ÿC÷7õÍõÏø¢¹¿®o®ÅýÍýs}wþ(‡îoë›ëŸñD?s\ß]ÿŠ!û›úâÖ÷€Íô!uÞãó˺»ã<«èÂhí¹ ãóÄ>¹ÿC÷7õÍõßø¢¹¿®o®ÅýÍýs}wþ(‡îoë›ëŸñD?s\¿®ÅýÍýr¾»ÿC÷7õÍõßø¢¹¿®o®ÿÅýÍýs}wþ(‡îoë›ëŸñD?s\ß]ïˆ~æþ¹¾¹ÿC÷7õÍõÏø¢¹¿®o®ÅýÍýs¡èêYDüBÔt^r¬]p½™=š„nÀÔíóÂß®ÅýÍýs}wþ(‡îoë›ëƒýñÜß×7×?âˆ~æþ¸2kº[[·£æM¨h7í¾úïüQÜß×/ëŸñD?s\¯®÷Ä?s\ß]ÿŠ!û›úæúïüQÜß×7×?âˆ~æþ¹æßùÉoùÊ þq×M²¶¹°¯5×X4-Ù¥º•˜/'<€HÅwbA' ;çœÿ/ç|ÁùÙækŸÏOùÎ:Úã\Cõ}ÊÐÌ~§¦[#rS/¢ß„ŠÞ¸=_²¯Ñï®VÞª¡T ¢€À™¾¹ÿC÷7õÍõÑþø‡îoë›ëŸñD?s\ß\ÿŠ!û›úæúïüQÜß×7×Gû⹿®o®ÅýÍýs}wþ(‡îoëƒEØú™F/ >Ï^¸ ÞÅýÍýr¾»ÿC÷7õÍõÏø¢¹¿®o®ÿÅýÍýs}sþ(‡îoë›ë£ýñÜß×/ëŸñD?s\¯®ÿÅýÍýs}wþ(‡îoë›ëŸñD?s\¿®×ýÑÜß×+ëƒýñÜß×7×?âˆ~æþ¹¾¹ÿC÷7õÍõßø¢¹¿®o®ÿÅýÍýs}wþ(‡îoëƒmî«Ãz1 *l¡ø»ï€¾¹ÿC÷7õÍõßø¢¹¿®_×?âˆ~æþ¹_]ÿŠ!û›úæúçüQÜß×/ë£ýñÜß×+ëŸñD?s\¿®ÅýÍýr¾¹ÿC÷7õÍõÏø¢¹¿®o®ÅýÍýs}t¾!û›úåýv¿îˆ~æþ¹_\ÿŠ!û›úæúïüQÜß×7×?âˆ~æþ¹¾¹ÿC÷7õÁ°]ÖÞá½…mCCñwß}p¾!û›úæúïüQÜß×7×âˆ~æþ¹¾»ÿC÷7õÍõßø¢¹¿®o®ÿÅýÍýs}sþ(‡îoë›ë¿ñD?s\ß]ÿŠ!û›úæúçüQÜß×/ë”ÿtC÷7õÊúïüQÜß×/ë¾0C÷7õÊúçüQÜß×7×?âˆ~æþ¹¾¹ÿC÷7õÍõßø¢¹¿® ±»äeýÌB¹Øýºà!y·÷ýÍýs}wþ(‡îoë›ëŸñD?s\ß\ÿŠ!û›úæúçüQÜß×7×?âˆ~æþ¹¾»ÿC÷7õÍõÏø¢¹¿®_×âˆ~æþ¹_]ÿŠ!û›úæúïüQÜß×/ë¿ñD?s\ß\ïˆ~æþ¹_]ÿŠ!û›úæúïüQÜß×,^ÿÅýÍýr¾¹ÿC÷7õÁºuß+˜×шTÀ5è}ð¼ÿŠ!û›úæúïüQÜß×7×?âˆ~æþ¹¾¹ÿC÷7õÍõßø¢¹¿®_×;úýÍýr¾»ÿC÷7õËúçüQÜß×+ë¿ñD?s\ß]ÿŠ!û›úæúçüQÜß×7×?âˆ~æþ¹¾¹ÿC÷7õÍõßø¢¹¿®o®ÅýÍýræÆ°C÷7õÉŸ«þBq^‡îëÓ$Ù³fÍ›6poÌÏøëGÿþ$sžæÍ“¿.ÿ¼ìÛ3f̓¿ãÇþ{ÿƸ6l¼À°ÏÿÎCÿÎPj^NÖ¬$ç¬-üÕù·©:–³Þ[m.ßbg¼*BOÙiƒân«U¿çÿçO5}Sóƒó®ö/6þik²1¸¼¸e·±„9) ˜“™P>.[JŸdX–bI;’zœÙY³fÍ›6lÞÿÏüGæÍ›6lÙ³fÍ›6lÙ³`û÷–ççëÀ³fÍ›6lÙ³fÍ›6lØ:Çýßÿø`›6l¼¬Ù³fÍ›6lÙ³`ý3ýêý—üDà›6lÙ³fËÊÍ›6lÙ³bößßÅþºþ¼»¿ïåÿŒúð>lÙ³fÍ—•›6lÙ³gMÐÞ~Gõä[ÿ{¦ùÕ…Y³fÁÓÿ¼¶ß9?^Í›69¤!#˜ô<ùåÿ9}g«ß~IÿÎ0hòùËóDvóÝZ«I§é2ÌÅ \Ê£€xúï"ª¶Ìj¤d£þqÇþpëEü“¿™~oÔ®ü×ù›wnEî­¨ºÊK#Y† ÑîÅKó<†ãsØù³fÍ›6lÙ°pÿxügñ—•›6^VlÙ³fÍ›6YÊÁößï=×ú©ÿÀ³fÍ›6lÙ³fÍ›6lØ>ßýå¹ùGÿÀyY³fÍ›6^VlÙ³f̓ì:Íÿ Ù³fÍ›6lÙ³fÍ—•›éŸïT_3ú޳fÍ›6lÙ³fÍ›6QèruOú‡É^lÙ³fÍœó3þ:ÑÿÆÿ‰ç§6lùwýãÿfØ{•›/ÿÇ—ü÷ÿplÙ¹*†’FTgw!UT –bv É=|ÑüÇÿœ™óOü䎫uÿ8ûÿ8‰o{ld¼’ÇUóë¥tËkxÔ…´±‡«°$Éù6jV~CÿÎ3ù3þqîÞâ*E-ï™5â]O\¾wšòé‘·Ç#;$lG/MZž5ÏAfÍ›6lÙ³f̓ÏûÄ?ã9ÿˆà Ù³fÍ›6lÙ³fÍ›6loþòÜüãýx6lÙ²óefÍ›6lÙ³fÁöîÿøÀÿÙ³fÍ›6lÙ³fÍ›6lØ?Lÿz£ÿeúŽyY²ò³fÍ›6lÙy³ebößßEþºþ¼»¿ïåÿ]¿^Í›.¹²³fÍ—•›6lÙÓt÷‚‘ýyÖÿÞé¾cõaV^jå`éÿÞ[oœŸ¯åå`këûM*Ú]SW¹†ÎÂÝL“ÜÜȱC­#µ¨îN|ãó¿ç/ç+üã?äŸüâ–±7—ü©¡LÄ~y€z‘HiO«Y2T15Ú’!~¦Š>¸ü‚ü„òÏüã¿–×ÊžNÕ¿¸ýî­«JÖµƒ»K3³3P’HNEWç¾vÜÙ³fÍ›6lÙ°pÿxOügñ›6lÙ²óefËÊËÊËÊËÁÖßï=×ú©ÿÀ²óefÍ›/6VlÙ³tÍ›Ûÿ¼·?(ÿâX6lÙ³fÍ›/+6l¼Ù²°}‡Y¿ãàvÍ›6lÙ³fÍ›6lÙy²°~™þõGó?¨à—•—›6VlÙ³fÍ›6Qèru_ú‡É^lÙ³fÍœó3þ:ÑÿÆÿ‰ç¹³dïËßïû6ÃÌÙ²ðoüyÏø×æÂ4ù³Eò>™/™ü噤À@’æáˆ@H$.À’M çÍß2~fÿÎ~¾£¤~Z]GåùLJºŠÆêþâ1©«$mYý ¤*§Á„kJTòä¹ô{ò÷È_ü©òÝå×-—ôØý;xbz³ÈÆ¥ŽìÇ¿J —æÍ›6^Vl¼¬Ù°qÿx‡üg?ñ—òÊËY³fÍ›6lÙ³fËÁÖÿï-ÏÎ?×€3fÍ›6l¼¬Ù³fÍ›/+Xÿ»ÿãÿ :fÍ›6lÙ³fÍ›6lÙ²ðv™þõGþËþ"pÍ›6lÙyY³fÍ›6^Vl^Ûûè¿×_×—wýü¿ñ‘¿^!•—•›6lÙ³fÍ›6léºûÃÈþ¼ƒëïtß1ú°«6lØ:÷’Ûç'ëÀ9²'çß=è?•Þ\¿üÃóíâØhd~¥ÌäoeDfv;(®|ÞƒJüÊÿŸÉ¦ÝùßO>Tÿœui佊(æTÔµ¡„B$ÈÈÜÓ‚R¥ySé‘ü‰åßË=&~_i°i:³;ÅioË‚³š³Ř’z’~Y,ÊÍ›6lÙ³eåfÁÃýáoøÎ?â86lÙ³fÍ—•›6lÙ³eàëo÷žëýTÿ‰` Ù³fÍ—•›6lÙ³fÍ›Ûÿ¼·?(ÿâX6l¼¬Ù³fÍòÍ—•›/+6°ë7ü`|3fÍ›6lÙ³e×+/+6lØ?Lÿz¢ùŸÔplÙ³fÍ›6lÙ³eöÍ”zœÙ>K3fÍ›6làß™ŸñÖþ0/üHç<ËÍ“¿.ÿ¼ìÛ3f̓¿ãËþ{ÿƸ8·çßçÇ–ç<³'›üë07“•¥ÆIºÔnNÉ(¡˜‚HäüJ¨ëž>òäŸÿç,|Ïeù»ÿ9…¤®ƒå]!"}Èé –Þw‘*ÓÞ+3ï½C²ž oôsKÒ¬t++}C¶†ËM´a¶¶·AQF½v{`ìÙ³fÍ›6lÙ³fÁÇýáñœÿÄplÙ³fÍ›6l¼¬Ù³f̓íÿÞ[Ÿœ¯fÍ›6lÙ³fÍ›/+/+/Øÿ»ÿãÿ 2ò³fÍ—˜æÊÍ›6lÙyX?Lÿz£ÿeúŽc0ÊÍ›6lÙ²ÆVlÙ³fÅí¿¾‹ýuýywïD¿ñ‘¿^Í›/+6lÙyY³fÍ›:nƒþðCò?¯ úßûÝ7Ì~¬*Í›6Ÿýå¶ùÉúÆÏ<ÿÎ@ÿÎIùoþqòÚÊÓU‚}kͺ´©•å½>­xXв¢«•AâËñt]óÊÿ—_óŒzÿü䦲¿ó¿ó˜°Ý[]<Ѷ‰ä ô³±¶…ù'Ö£rü‹þÜeQ‰%š„Ð}-UHÕb‰8ÑB" ¨ª(@Ø6tËËÊÍ›6lÙ²ò³fÁÃýâ?ñœÄplÙ³fËÊÍ›6lÙ³f̓í¿Þ{¯õSþ%€r³fÍ›/+6lÙyY³f̓íÿÞ[Ÿ”ñ,›6lÙc6VlÙ³fËÊÍ›Øu›þ0>Í›6lÙ³fÍ›6lÙ³fÁúgûÕÌþ£€^Vl¼¬¼¬ÙyY³fËÆž‡'_öO’¼Ù³fÍ›87ægüucÿŒ ÿ9Ï2ó ùwýãÿfØy›6lY.à{o«¤¨eõéÀ0-²øgŽ?ç$?ç1|¹ùsÿ*ÿËö³ù›ó:ò$];B°FY¦A4mÎ#GS³ûåÝiò4Ò°x…]Žïïˆ~—ùâÿƒÍú:Oç‹þ fý/óÅÿ›ôtŸÏüoÑÒÿ<_ðy¿FÉüñÁæý/óÅÿ›ôt¿ÏüoѲ<_ðy¿FÉüñÁæý'óÅÿ›ôt¿ÏüoÑÒÿ<_ðy¿GIüñÁæý'óÅÿFŒÅglA u£®D5{%¼–EhÀ$lZ‡¦þŽ—ùâÿƒÍú6_ç‹þ7èéž/ø<‡y¸ÝZ$vp)ˆØu ª×|dþx¿àó~Ž“ùâÿƒËý'óÅÿ•ú:_ç‹þ7èÙ?ž/ø<ߣ¤þx¿àó~“ùâÿƒÍú:_ç‹þ7èé?ž/ø<ߣeþx¿àó~Ž“ùâÿƒÍú6_ç‹þ7èéž/ø<ߣ¤þx¿àó~“ùâÿƒÍú:Oç‹þ}BOªùÇ_XóÛìà?ÑÒÿ<_ðy¿GIüñÁæý/óÅÿ›ôl¿ÏüoѲÿ<_ðy¿FËüñÁæý'óÅÿ›ôt¿ÏüoÑÒ<_ðy¿GKüñÁæý'óÅÿ›ôlŸÏüoÑÒÿ<_ðy¿GIüñÁæý/óÅÿ›ôl¿ÏüoÑÒÿ<_ðx2  …/Ä©J>Û7|ú6Oç‹þ7èÙ?ž/ø<ߣ¥þx¿àó~Ž—ùâÿƒÍú6Oç‹þ7èé?ž/ø<ߣ¤þx¿àòÿGIüñÁå~—ùâÿƒÍú:Oç‹þ7èÙž/ø<ߣdþx¿àó~—ùâÿƒÍú:NÏüoÑÒ<_ðy¿FËüñÁæý/óÅÿƒ`°‘mî¼u`”£í±ï€¿FÉüñÁæý/óÅÿ›ôt¿ÏüoѲÿ<_ðy¿GIüñÁæý'óÅÿ›ôl¿ÏüoÑÒ<_ðy£¤þx¿àò¿GIüñÁæý/óÅÿ›ôl¿ÏüoÑÒÿ<_ðy¿FÉüñÁæý/óÅÿ›ôt¿ÏüoѲ<_ðx6ÊÂD2’Ñï Ÿ :Z}¸¿àó~“ùâÿƒÍú:_ç‹þ7èé?ž/ø<ߣdþx¿àó~“ùâÿƒÍú6_ç‹þ7èÙ?ž/ø<ߣeþx¿àó~Ž—ùâÿƒÍú6_ç‹þ7èÙž/ø<ߣ¤þx¿àó~—ùâÿƒÍú:Oç‹þ7èÙž/ø<ߣeþx¿àðnŸa"\Æåã Ñ÷èpèÙž/ø<ߣeþx¿àó~Ž“ùâÿƒÍú:Oç‹þ7èéž/ø<ߣ¤þx¿àó~—ùâÿƒÍú:Oç‹þ7èé?ž/ø<ߣ¤þx¿àòÿGIüñÁå~Ž“ùâÿƒÍú:Oç‹þ/ôtŸÏüWèéž/ø<ÇM’Ÿn/ø1“A¼WûŠuÉ.lÙ³gDš×ä盼åu…¨êú™Ú-GO›N¶y”]ˆ½&‚_L7¦*zE¡>Ö <‰{ùuä}7ËzèUÔë5ÕÒ­IneiY*¤ƒÇ—÷¦~fšê±ƒÚÿ‰ç™Yy:òèSÿfØyAᛈðË ðÄ.-¢»­î20¡ýY‡É¡-ÿ{?+_¬T 'áÚ½¿ “¤kˆãP¨`2è<3Pxf ðÍAᚃÃ5†]j Ô¨<2¨<2è<3qˆT¨:Ó>¢6ÿwŸøŽ ðË ðÊ ðÍAᚃÃ5†n#Ã5]†U†j Ô¨<3Pxf é›ˆðË ÁÖà}VççëÀ¨<3q¨<2è<2¨2è<2¨<3Pxf ðÍAá—Aá•A—ÄePxf ðË ðÁÖ ~ÿþ0?ðÀ f ðÍAᚃÃ5†j º Ô¨3PxePxf ðË Ì@Êâ<3Pxf ðÁúXZý—ê8ˆðÍÄxf ÍAá—Aá•AᚃÃ5†]†j ÔÊ ðÍAᛈˠÊâ<3PböÃ÷ñò×õåÞõ‰vÿv7ëÀô|G†U†j Ô¨<2è<3P ®#Ã5†n#Ã.ƒÃ*ƒÃ5j éºûÁÈþ¼ƒë`}~o˜ýXUAᚃÃ7á/¬!Ôak[…Øô nˆÂh<¢ ŠÕï%­!XÀ &½ë\’ )šƒÃ5†j Ô5†j Ô¨<2è:Ó*ƒÃ5j Ô¨<3q¨<0pê'o÷xÿˆà* Ä ª ÔtT¨<2è<`†UXÃ*ƒÃ5†j º ª Ô>ثݪŸñ,Aᚃ5†j º ª Ô¨<2è<3SÛ*ƒÃ5†j º ÔöÊ ðË ðÁÖà}VçåüKq¨<3Pxf ðË ðÍAÖ™\G†]†n#*ƒÃ.žÙT¨<3Pxf ðÍAÒ™¨<0}€›þ0>xfâ3PxeÐvÊ ðË ðÊ ðÍÄf ðÍAᚃÃ.ƒÃ*ƒÃ5†j Ô¨<0~˜Ö¢Û¹ýGPf ðÍAᚃ5†j Ô¨<3P Ô¨2è2¨:f ðÍAá”@¡Û'_öO’ÌÙ³fÍ›87ægüucÿŒ ÿ9ÏsW6Nü»þñÿ³l<ËÊ̓¿ãËþ{Ƹ6lÙ²ò³fÍ›6lÙ³fÁÇýáñœÿÄpl¼ß,¬Ù³eÓÃ+6lÙy²³`û÷–ççëÀ9Y³fÍ›6lÙ³fÍ›6lcþïÿŒü0Í›6lÙ³eåfÍ›6lÙ°~™þõGþËõ3|óeåfÍ›6lÙ²óefÍ‹ÛúëúòîÿÞ‰×o×ófÍ›6l¼¬Ù²ò³fΛ ÿ¼üëÈ>·þ÷Mó« ³ Ù°tÿï-·ÎO×€sfÍ›6lÙ³fÍ›6lÙ°pÿxOügñ›6lÙ³fÍ›6lÙ²ò³`ûo÷žëýTÿ‰` Ùy²²ò³fÍ›6_L¬Ù³`û÷šçåüKeåfÍ›6lÙ}2³fËÍ•›Øu›þ0>³fÍ›6lÙ³fÍ›/+/iŸïT_3úŽËÊÍ›6lÙ³eåeåfÊ=Ë'_öO’¼Ù³fÍ›!ú÷’í<Áp·×rJލˆE( {ƒ„¿ò¬4ï÷ýÇÞ¿óNoùUúwûþãï_ù§7üªý;ýÿq÷¯üÓ†ö^H³±‹êñK)Z“¹Zïô`Ïð¥¯ûòO¼Lßá[o÷äŸxþ™¿Â–ßïÉ>ñý3…-¿ß’}ãúb¿á»KêüäãÏŸQZÒž—øRÛýù'Þ?¦oð­·ûòO¼LßáK_÷äŸxþ™¿Â¶ßïÉ>ñý3…-¿ß’}ãúfÿ Zÿ¿$ûÇôÍþµÿ~I÷é›ü+mþü“ïÓ7øVÛýù'Þ?¦oð­·ûòO¼Lßá[o÷äŸxþ™¿Â¶ßïÉ>ñý3…m¿ß’}ãúfÿ Zÿ¿$ûÇôÍþµÿ~I÷é›ü)kþü“ïÓ7øR×ýù'Þ?¦+þ·1}[œœyó­EkJxb_áK_÷äŸxþ™¿Â¶ßïÉ>ñý3…m¿ß’}ãúfÿ Zÿ¿$ûÇôÍþµÿ~I÷é›ü+mþü“ïÓ7øRÛýù'Þ?¦oð­·ûòO¼LßáK_÷äŸxþ™¿Â–¿ïÉ>ñý3…m¿ß’}ãúfÿ [¿$ûÇôÍþ¶ÿ~I÷é›ü)mþü“ïÓ7øR×ýù'Þ?¦oð¥¯ûòO¼Lßá[o÷äŸxþ˜ªynÝ#’òq“w²kቅ-ß’}ãúfÿ Zÿ¿$ûÇôÍþ¶ÿ~I÷é›ü+mþü“ïÓ7øR×ýù'Þ?¦oð¥·ûòO¼Lßá[o÷äŸxþ™¿Â–¿ïÉ>ñý3…-ß’}ãúfÿ Zÿ¿$ûÇôÍþ¶ÿ~I÷é›ü+mþü“ïÓ7øR×ýù'Þ?¦oð­·ûòO¼Lßá[o÷äŸxþ™¿Â–¿ïÉ>ñý3…m¿ß’}ãúb°ùjÞ|^CÍ ‘ÐýøR×ýù'Þ?¦_øRÛýù'Þ?¦oð¥¯ûòO¼Lßá[o÷äŸxþ™¿Â¶ßïÉ>ñý3…-ß’}ãúfÿ [¿$ûÇôÍþ¶ÿ~I÷é›ü)kþü“ïÓ7øVÛýù'Þ?¦oð¥¯ûòO¼Lßá[o÷äŸxþ™¿Â–ßïÉ>ñý3…m¿ß’}ãúfÿ Zÿ¿$ûÇôÍþ¶ÿ~I÷é›ü+mþü“ïÓ·òݽ¼‹:<…–´©Å<1ð¥¯ûòO¼L¿ð­·ûòO¼LßáKo÷äŸxþ™¿Â¶ßïÉ>ñý3…m¿ß’}ãúfÿ Û¿$ûÇôÍþµÿ~I÷é›ü)kþü“ïÓ7øVÛýù'Þ?¦oð­·ûòO¼Lßá[o÷äŸxþ™¿Â¶ßïÉ>ñý3…m¿ß’}ãúfÿ Zÿ¿$ûÇôÍþµÿ~I÷é›ü+mþü“ïÓ7øVÛýù'Þ?¦:?+ÛFË y*¤¸íôeÉå‹i]¥g’¬KÇ£þ¶ÿ~I÷é›ü)mþü“ïÓ7øR×ýù'Þ?¦oð­·ûòO¼LßáK_÷äŸxþ™¿Â¶ßïÉ>ñý3…m¿ß’}ãúfÿ Zÿ¿$ûÇôÍþµÿ~I÷é›ü)mþü“ïÓ7øRÛýù'Þ?¦oð¥¯ûòO¼Lßá[o÷äŸxþ™¿Â¶ßïÉ>ñý3…m¿ß’}ãúaõªÙB¶Ñ’U=p¦ï˰^L×2;†sRýXü)mþü“ïÓ7øR×ýù'Þ?¦oð¥¯ûòO¼LßáK_÷äŸxþ˜«ùjÝãHKÉHùSqû_F%þ¶ÿ~I÷é›ü)kþü“ïÓ7øR×ýù'Þ?¦oð­·ûòO¼LßáKo÷äŸxþ™¿Â–¿ïÉ>ñý3…-¿ß’}ãúfÿ [¿$ûÇôÍþµÿ~I÷é›ü+mþü“ïÓ7øVÛýù'Þ?¦oð­·ûòO¼LßáK_÷äŸxþ™¿Â¶ßïÉ>ñý3…-¿ß’}ãúfÿ [¿$ûÇôÍþµÿ~I÷éŠ-[ˆ·98—çZŠÖ”ðĿ–¿ïÉ>ñý3…m¿ß’}ãúfÿ Zÿ¿$ûÇôÍþ¶ÿ~I÷é›ü)mþü“ïÓ7øRÛýù'Þ?¦oð­·ûòO¼Lßá[o÷äŸxþ™¿Â¶ßïÉ>ñý3…m¿ß’}ãúfÿ Û¿$ûÇôÍþµÿ~I÷é›ü)kþü“ïÓ7øR×ýù'Þ?¦oð­·ûòO¼Lßá[o÷äŸxþ™¿Â¶ßïÉ>ñý1Tòݼi$A䤀¸ìkቅ-¿ß’}ãúfÿ Û¿$ûÇôÍþ¶ÿ~I÷é›ü)mþü“ïÓ7øR×ýù'Þ?¦oð¥·ûòO¼Lßá[o÷äŸxþ™¿Â¶ßïÉ>ñý3…m¿ß’}ãúfÿ Û¿$ûÇôÍþµÿ~I÷é›ü)kþü“ïÓ7øVÛýù'Þ?¦oð­·ûòO¼LßáK_÷äŸxþ™¿Â–¿ïÉ>ñý3…-ß’}ãúb©å»tŽHCÉI8×qØ×Ãÿ Û¿$ûÇôÍþ¶ÿ~I÷é›ü+mþü“ïÓ7øR×ýù'Þ?¦oð­·ûòO¼LßáKo÷äŸxþ™¿Â¶ßïÉ>ñý3…m¿ß’}ãúfÿ Zÿ¿$ûÇôÍþ¶ÿ~I÷é›ü+mþü“ïÓ7øVÛýù'Þ?¦oð­·ûòO¼LßáK_÷äŸxþ™¿Â–¿ïÉ>ñý3…m¿ß’}ãúfÿ [¿$ûÇôÅaòݼм‡š5#¡ú1ð¥¯ûòO¼L¿ð­·ûòO¼Lßá[o÷äŸxþ™¿Â¶ßïÉ>ñý3…-¿ß’}ãúfÿ Û¿$ûÇôÍþ¶ÿ~I÷é›ü)kþü“ïÓ7øVÛýù'Þ?¦oð¥¯ûòO¼Lßá[o÷äŸxþ™¿Â–¿ïÉ>ñý3…m¿ß’}ãúfÿ Zÿ¿$ûÇôÍþ¶ÿ~I÷é›ü+mþü“ïÓ7øR×ýù'Þ?¦+–ííäY‘ä%zTéˆÿ…-ß’}ãúeÿ…m¿ß’}ãúfÿ [¿$ûÇôÍþµÿ~I÷é›ü)kþü“ïÓ7øR×ýù'Þ?¦oð­·ûòO¼LßáKo÷äŸxþ™¿Â–¿ïÉ>ñý3…m¿ß’}ãúfÿ [¿$ûÇôÍþ¶ÿ~I÷é›ü)mþü“ïÓ7øVÛýù'Þ?¦oð¥¯ûòO¼L¯ð¥¯ORO¼L7ýó7ØáÛ¦æÍ›6lÙÍ|ÝçK¿/^¥¬1Hr_•jIŽEÿåhj_òÍü7õÍÿ+CRÿ–x?á¿®oùZü³ÛÿÃ\’é^w¼¿ƒë÷"(9vúpÇüUsþúñþ¹¿ÅW?ï¸ÿë›üWsþûñþ¹¿Åw?ï¨ÿë‚?Ä·Wúǧ/S…7¥)\þ+¹ÿ}Gøÿ\ß⻟÷ÜõÍþ+¹ÿ}Gøÿ\ß⻟÷ÜõÍþ+¹ÿ}Çøÿ\ß⻟÷ÜõÍþ+¹ÿ}Gøÿ\ß⻟÷ÔõÍþ+¹ÿ}Çøÿ\ß⻟÷ÜõÍþ+¹ÿ}Çøÿ\ß⻟÷ÔõÍþ+¹ÿ}Çøÿ\ß⻟÷ÜõÍþ+¹ÿ}Gøÿ\ß⻟÷ÜõÍþ+¹ÿ}Çøÿ\|Ëp-Åϧ#' oJR¸üWsþûñþ¹¿Åw?ï¸ÿë›üWsþûñþ¹¿Åw?ï¸ÿë›üWsþûñþ¹¿Åw?ï¸ÿë›üWsþûñþ¹¿Åw?ï¸ÿë›üUsþúñþ¹¿Åw?ï¸ÿë›üWsþûñþ¹¿Åw?ï¨ÿë›üUsþúñþ¹¿Åw?ï¸ÿë›üWsþûñþ¹¿Åw?ï¸ÿë›üWsþúñþ¸&/2\<2Ìcޱ”§_Ú4Àß⻟÷ÜõÍþ+¹ÿ}Çøÿ\ß⻟÷ÜõÍþ+¹ÿ}Çøÿ\ß⻟÷ÜõÍþ+¹ÿ}Çøÿ\ß⻟÷ÜõÍþ*¹ÿ}Gøÿ\ß⻟÷ÔõÍþ+¹ÿ}Çøÿ\ß⻟÷ÜõÍþ*¹ÿ}Gøÿ\ß⻟÷ÜõÍþ+¹ÿ}Çøÿ\¿ñUÏûî?Çú劮ßQþ?×7ø®çý÷ãýpM·™n'õ9Gá8¥zŒ þ+¹ÿ}Gøÿ\ß⻟÷ÜõÍþ+¹ÿ}Çøÿ\ß⻟÷ÜõÍþ+¹ÿ}Çøÿ\ß⻟÷ÜõÍþ+¹ÿ}Çøÿ\ß⻟÷ÜõÍþ*¹ÿ}Gøÿ\ß⻟÷ÜõÍþ+¹ÿ}Çøÿ\ß⻟÷ÜõÍþ+¹ÿ}Çøÿ\ß⻟÷ÜõÍþ+¹ÿ}Çøÿ\ß⻟÷ÔõÍþ+¹ÿ}Çøÿ\iæK‹‰’jî+ØWÇÌ÷rž1ÂŒ|c‹~ŸÔ?å˜À¶oÓú‡ü³øÍúPÿ–aÿÙ¿OêòÌ?à[7éýCþY‡ü fý?¨Ë0ÿlß§õùfð-›ôþ¡ÿ,Ãþ±óMÒ­6 ×úãÅw?ï¸ÿë›üWsþûñþ¹¿Åw?ï¸ÿë›üWsþûñþ¹¿Åw?ï¸ÿëŠÇæ;ÙG(àV*Sôþ¡ÿ,Ãþ±ñk·ï"FÖÀ` âÝ Ë›\¿ŽGmÁUbâÝÄÿOêòÌ?à[7éýCþY‡ü fý?¨Ë0ÿlß§õùfð-”|Á~£“[SŰ?ø®çý÷ãýsŠ®ßQþ?×7øªçýõãýsŠîßqþ?×7ø®çýõãýsŠîßqþ?×7ø®çý÷ãýsŠîßqþ?×7ø®çý÷ãýsŠîßqþ?×%ÚmÓ^ÛGs œTÓ#Ú‡˜§³¹’Ù#B¨h ­z`/ñ]Ïûî?ÇúæÿÜÿ¾ãü®oñ]Ïûî?Çúæÿ\ÿ¾£ü®“Ì· Sˆã¬œª7ý“ÿÅw?ï¨ÿë›üWsþúñþ¹¿Åw?ï¸ÿë›üWsþûñþ¹¿Åw?ï¸ÿë›üWsþûñþ¹¿Åw?ï¨ÿë›üWsþûñþ¹¿Åw?ï¸ÿë›üWsþûñþ¹¿Åw?ï¸ÿë›üWsþûñþ¹¿Åw?ï¸ÿë›üWsþûñþ¹¿Åw?ï¸ÿë›üWsþûñþ¹¿Åw?ï¸ÿë‚™n ¹¹ôãåêp¦ô¥+ÿÅw?ï¸ÿë›üUsþûñþ¹¿Åw?ï¸ÿë›üWsþûñþ¹¿Åw?ï¨ÿë›üWsþûñþ¹¿Åw?ï¸ÿë›üWsþûñþ¹¿Åw?ï¸ÿë›üWsþûñþ¹¿Åw?ï¸ÿë›üWsþúñþ¹¿Åw?ï¸ÿë›üWsþûñþ¹¿Åw?ï¸ÿë›üWsþûñþ¹¿Åw?ï¸ÿë‚aó,òE4¦4¬aHë½M07ø®çý÷ãýsŠ®ßQþ?×7ø®çý÷ãýsŠîßqþ?×7ø®çý÷ãýsŠîßqþ?×7ø®çýõãýsŠ®ßqþ?×7ø®çý÷ãýsŠ®ßQþ?×7ø®çý÷ãýsŠ®ßqþ?×7ø®çý÷ãýsŠîßqþ?×7ø®çý÷ãýsŠ®ßQþ?×7ø®çý÷ãýpL^d¸xf˜Æ•ýͳfÍ›6lÙ³fÍ›6rÏÎ_ÌïùTžZ>g¶ÒîµÍNêòßKÓ4Ë:z—7×d¤Iû)QW`€>ÉÈöùÿ9wiÖ§æ/)Z]ɼ¶ñé’̱9($%9…;râµëA†0þ^þÀë*ù«Êµ_ûTKáþ¶%ÿ*ãóûþ¦¯*ÿÜ"_ù«/þUÇç÷ýM^Uÿ¸D¿óVoùWŸßõ5yWþáÿÍY¿å\~ÔÕå_û„Kÿ5fÿ•qùýÿSW•î/üÕ•ÿ*ãóûþ¦¯*ÿÜ"_ù«þZþh_yÇXóåÿ›4I´?3ùVKhïÉêÛ]Ãp¤Ãum%””«|% q«g_Í›6lÙ³e‡'?öO’ÌâÿÿœÖ“:ë/cw«êÒ¤‚ÇM±Œ¼ÓÈŠ[ýŠ/WoÙÐáþky–óò×EüÀò¾„ú¯˜õ»{3” }(dº²JüIEÕû`.þeù»Ëžv±ü®üÕ·°•õ‹;‹Í?PÓdq6ËYb’9@5VƒÜ þ^~cy÷ó.OÓ:m÷—¬´Ù/îbŠÂV‘ï ¼4aˆ£0^CjPòC¯þeù³Ì^`Ö¼³ùUocéy]c:Œ×ìÿé:z‚Þ·«·r>éß—¿™ZoŸü©gù„”±³¸šU¸uF)"³ì>Wo£9ïžõK-[PŽïI¹†êRðH²(!ŽÄ©"¾Ù ËÍ“ß-£5•UXŽmЇޔŸÈßð'7¥'ò7ü ÍéIüÿszR#Àœé?Ô©Á«ëøåÀ^”ŸÈßð'7¥'ò7ü Íé?ò7ü ÍéIüÿszRtàßð'7¥'ò7ü ÍéIüÿszOüÿszOüÿszR#ÀœÞ“ÿ#ÀœÞ“ÿ#ÀœÞ”ŸÈßð'7¥'ò7ü ÍéIüÿszR#ÀœÞ”ŸÈßð'˜ßê@pjúçjåÀ^”ŸÈßð'7¥'ò7ü ÍéIüÿszR#ÀœÆ)?‘¿àNoJOäoø›Ò“ùþæôŸùþæô¤þFÿ9½'þFÿ9½'þFÿ9½'þFÿ9½)?‘¿àNoJOäoø›Ò“ùþæô¤þFÿ9½)?‘¿àN·þ«p85kcã€})?‘¿àNoJOäoø›Ò“ùþæô¤þFÿ9½)?‘¿àNoJOäoø›Òäoø›Ò“ùþæôŸùþæô¤þFÿ9½)?‘¿àNoIÿ‘¿àNoJOäoø›Ò“ùî9½)?‘¿àNoJOäoø›Ò“ùþàëß÷õFþáûl"’Ÿa¿àNoJOäoø›Ò“ùþæô¤þFÿ9½)?‘¿àNoJAû ÿszR#ÀœÞ”ŸÈßð'7¥'ò7ü Ì"“ùþæô¤þFÿ9½'þFÿ9½)?‘¿àNoJOäoø›Ò“ùþæô¤þFÿ9½)?‘¿àNÓ"qu*Ôø»œWR¿ž—Üî̽E?nÛ<Õÿ9…lŸœÞuÕô ]NÎÌ~ZhK­Y îR7}fGDTV(H Ô|cáß>þZ~pèwòw—¼÷s¨Ú[ oO‚éy⌗e‚Ehõg‰µÝ2þ?Ì?Ì?Í=~Y wËÖokz¥üë}BÊï-¤O —v;2Ô­+ƒüág{ùŸù›cç]òõ|ßäÛo)[~‹¹¾m-ÖÜHË4r«Hªª¬¿³ãž¾ü©üÓòG˜|§¤ê¾ZžÓIÓ§FŠÞÂyb…áhœÆñpåû.ۮǾ|»üܸòæ™wù§iæÝ}Ì÷ú²ýCÍö|¥ÓôpÁE¬w—"‚É­[âpùVëÿÌ^Tó¿ù’ºÆµäüñ¦hþQÓláÕ.îVÞÎyd[‰-¢‘e$Ž”zŒ÷7å›ü¿ç¯'é^fò?VÐç‚–öüBBU$¤LówüãÔNÚœ]QŠÿ<ɸSO÷ g{ô¤þFÿ9½)?‘¿àNoIÿ‘¿àNoJOäoø›Ò“§ÿ9É¿ç¦KO7þnÜÜžÇæˆÙ¶WM·$Ÿ£<)åO6Á§~aè¿ó˜Wš™>ióMß—g¶K˜ÌÉ£ÍþfY+O†X¹ô­|F¹õ£Í^q²µÓõKMæÍvÞÎåâÓíåî^TŒ•Eˆ\‰ ™óûþqøÙþNi~S¹üÔü¹‡Ëš–«4Á¬Ëp’]BèÉ7 ˆŒhЖ…yµ 7Û™ÜùSO¸ü‡“þr^æÿ˜kæ#­®¨ ý`:êWV´áèŽiÇÚ¹ôƒóÍ6ž`òN¹§h:ë“h×,’Ësú«´óT•T&¬HÛ®|×ü”ºò̾hü©Ñüåë¯(ëvKq&¡«_«Gm®Â°0š+ØŸ®´Ò2’ªî<2wùY"þ]Asù¡ù×ùf,!Ô|Ïqq6¹{2}z .®DVîÖ­`•áñ ò¡ÏmÿÎQ'ä÷ž*|½¨{è1üsƒþ\ÿÎDù&ÿDÐô¿0ÝOå½aìì­—Mס6wF¢¬œ `#“ª9j¾Ùè:îÛZúÄ7éã#Yʳ„o1–ûéH:£ÀœÞ“ÿ#Àœ÷öÜ 2k«t¾j¶i‘fjî)<{m¾ ôŸùþæô¤þFÿ9½)?‘¿àNoJOäoø›Ò“ùþçIÐ[C Ççj77ÓV"£p†zR#ÀœÞ”ŸÈßð'7¥'ò7ü Íé?ò7ü Á³ÆÿU¶µ“±ñÀ^”ŸÈßð'7¥'ò7ü ÍéIüÿsŸùþæô¤þFÿ9½'þFÿ9½'þFÿ9½)ì7ü Íé?ò7ü ÍéIüÿszR#ÀœÞ”ŸÈßð'7¤ÿÈßð'7¤ÿÈßð'7¥'ò7ü ÍéIÓƒÀœÞ”ƒöþàÑŸR? W×òà/JOäoø›Ò“ùþæô¤þFûŽoIÿ‘¿àNoJOäoø›Ò“ùþæôŸùþæô¤þFÿ9½)?‘¿àNoJOäoø›Òäoø›Òäoø›Ò“ùþæôŸùþæô¤þFÿ9½)?‘¿àNoJOäoøƒ­ãqor ·ÙNÇù°£'ò7ü ÍéIüÿszR#ÀœÞ”ŸÈßð'7¥'ò7ü ÍéIüÿszOüÿszR#ÀœÞ“ÿ#ÀœÞ”ŸÈßð'7¥'ò7ü ÍéIüÿszR#ÀœÞ”ŸÈßð'7¥'ò7ü ÍéIÓƒÀœÞ”ŸÈßð'[ÆÿV¹qcüØÒ“ùþæô¤þFÿ9½)?‘¿àNoJOäoø›Òäoø›Ò“ùî9½)Toø›Òäoø›Ò“ùþæô¤þFÿ9½)?‘¿àNoJOäoø›Ò“ùþæô¤þFÿ9½)?‘¿àNoJOäoø›Ò“ùþàëܪýËö9ɼßù¿äËû´Ñüí®Ùé·ï”A3ü|À¥}ò+ÿC5ùSÿSnÿßÓ+þ†kò£þ¦Ý;þ ¿¦oú¯ÊŸú›tïø&þ™¿èf¿*?êlÓ¿àÛúfÿ¡šü©ÿ©·Nÿƒoé›þ†kò§þ¦Ý;þ ¿¦oú¯ÊŸú›tïø6þ˜k þ~[yŸR¶òÞ…æ2ãU½s­·¬æp Œ5954çaô¤þFÿ9½)?‘¿àNoJOäoø›Ó“ùþæôŸùþæôŸùþçÿœ‚F[$R?ç~òïPGû±ó§ÎLþsj“Þ^³o%ÙÅ©y·Z½K *Îg*’IÄÈ劆n*ŠkE=FOÿ%ÿ2­ÿ7ü“¢þbÙÇèþ“µY%ƒcËðË#º8aü3’~tþlù—CóŽùaùy¢i·Wv:Ýî·#,Il4E]Ë;Ô‡|¯9~gù×Ë¿áOÊý(éwߘ~g2}u}A§Aoj¡ä˜¨F2ª'í ™~Dþijž‡[òß­a´ó_•õ'Òõ%¶rÐLÁD‘Ï ¬#‘TõÈ_Ÿ¿5|ï¬yþëòcòz.ÛPÒ4¨µ‹ûÝfGôäIؤQCjÍÕIy ¢í±9Ï®ÿç)u¯7y[ÉZ§‘cÓ4}oÍw·¶³¾³?ú-°°æ³º²€]YÒ‰öjW|õ‡å¬žcŸEŽçÏWºf¡¨HìÉq¤†ú³D~Ï[“Ö§¦yÃBRßž˜üA?îË={\gnô¤þFÿ9½'þFÿ9½)?‘¿àNoJOäoø›Ò“ùþæô¤?°ßð'7¤ÿÈßð'7¥'ò7ü Êh¤¡øþä߃x÷ŸÃ%Y üÇ4ò¦¸Ý?ÜmÞÿóų€ù+óSFü£ü’ò¯›|ÄÌѶ™amm t/=Ĩ8Ö¤È÷$7'7åç“dÕ5KßÎÍÛ»k¿8Ocqmm¦éó«Å§ØXÃCW•‡÷ŽY¾-”œƒÌ>ZüµÑ?, ówä]šYëÂxIrXß‹†¹’Q#3ÿ0`ÛSèΗùsæOËß7þdØùÞâ;;¹¥·ÖÇ6d·kP¬Ñø€êGµí’OùÆï&èþSÙèžo´ÙjÏyvö·ªÐÜÜ<±‚< •4;ãüÃäÝÈ·+¢ù> :ÅÓÖhm׊—$‚ÄxÐalÔ΅囩¡±á ²¯¨Û }~çýúÿ~o¯Üÿ¿_ïÍõëŸ÷ëýù¾½sþý¿}vãê|ýFåëRµíÇý~çýúÿ~o¯Üÿ¿_ïÍõëŸ÷ëýù¾¿sþý¿7×î߯÷æúýÏûõþüß_¹ÿ~¿ß›ë÷?ï×ûó}zçýúÿ~o¯Üÿ¿_ïÍõûŸ÷ëýù¾¿sþý¿7×î߯÷æúýÏûõþüß_¹ÿ~¿ß›ë×?ï×ûó}~çýúÿ~ 7·Sê·/XŠ×·õûŸ÷ëýù¾½sþý¿7×î߯÷æúýÏûõþüß_¹î×ûó}~çýúÿ~o¯Üÿ¿_ïÍõûŸ÷ëýù¾¿sþý¿7×î߯÷æúýÏûõþüß^¹ÿ~¿ß›ë×?ï×ûó}~çýúÿ~o¯Üÿ¿_ïÍõëŸ÷ëýù¾¿sþý¿Á{pm®ÊÕ:ô©À_^¹ÿ~¿ß›ë÷ï×ûó}~çýúÿ~o¯Üÿ¿_ïÍõëŸ÷óýù¾¿sþý¿7×®{Jÿ~o¯Üÿ¿_ïÍõëŸ÷ëýù¾½sþý¿7×î߯÷æúõÏûõþüß_¹ÿ~¿ß›ë÷?ï×ûó}zçýúÿ~o¯Üÿ¿_ïÍõûŸ÷ëýø2Êöá½nR±¤.FýöÀBþçýúÿ~_×®߯÷æúýÏûõþüß_¹ÿ~¿ß›ë×?ï×ûó}~çýúÿ~o¯Üÿ¿ŸïÌoî߯÷æúýÏûõþüß_¹ÿ~¿ß›ë÷?ï×ûó}zçýúÿ~o¯\ÿ¿_ïÍõëŸ÷ëýù¾¿sþý¿7×î߯÷æúýÏûõþü§^Ü5Ìjò1»ìsÏÚåÙÏ_ËŸ”smÌ¡‘RyÛtñ4ÃËïùÄ_,Y c\üݱÓüÍæoVºÔ®/¥„š$„¢PiE xÔã)ÿç|½äí*_*ùêËN×tÝ?Sº¸òÿ© 2YYÏ'ª $Ò¼´#·|¿7~KþcÝ_Ë_—úö›|ÈÒJ R9æ¾µ éN–.”P ýÚÈ‹W¶ Õÿ&¼ýäK›iç5:ÖÅ´û]:òÏÌ)=Ä(¶‰Â)m„JHÀŸS‘(ƇˆÉW”¿ç<… èºN…­iVú½Þ”ÒòñÊe–C,Œ\’6Î=æùÆ_<@þaòåþ½¦ÙþXyºî[½VÚî“R·7tig*L,ŠT9CZy‡ò‹óÊWâoÈ=oM¶Òîìí¬ïlüÀ“ܤBÖ1rZzfÿœnü¼ó4Äsh–ö·ºÝ¤öwW¶ËÂã„éÅŠ¾ô>SÛ8ï”?ç|ý¨ê¾]‹óŸ^Ó5/-ù1šM=2 ºšUŒÁÞ»$¤'¤!}Îiç|ÿ­ÿ+üÙ¯é÷ß•6÷‘ÝEÊ9޹"A0ž(¥œþä¨Qˆ@Æ=«]ó¬ÎRò{Îè»Ðê£ÜÂÀîNÀw;c4ú[ÊZg—õD[‹+­Î íåPC£Û taJïRÎQ¨ÿÎ)þ_ߨ[õëŸ÷ëýù¾¿sþý¿7×®߯÷æúõÏy_ïÁ“ÞÜ kvµI’¦½hp×®߯÷æúýÏûõþüß^¹ÿ~¿ß›ë÷?ï×ûó}zçýúÿ~o¯\ÿ¿_ïÍõëŸ÷ëýù¾¿sþý¿7×î߯÷æúýÏûõþüß_¹ÿ~¿ß›ë÷?ï×ûó}zçýúÿ~o¯Üÿ¿_ïÍõëŸ÷ëýù¾½sþý¿7×®߯÷àÁ{qõ2þ«rõ€­{qÀ_¹ÿ~¿ß›ë÷?ï×ûó}zçýúÿ~o¯\ÿ¿_ïÍõûŸ÷ëýù¾¿sþý¿7×®{Êÿ~o¯Üÿ¿_ïÍõëŸ÷ëýù¾¿sþýo¿7×®߯÷æúõÏûõþüß_¹ÿ~¿ß›ë×?ï×ûó}zçýúÿ~o¯\ÿ¿_ïÍõûžž«ýø6ÞöàÁpL­P©Mú|X ë÷?ï×ûó}~çýúÿ~o¯\ÿ¿_ïÍõëŸ÷ëýù¾¿sþý¿7×î߯÷æúýÏûõþüß_¹ÿ~¿ß›ë×?ï×ûó}~çýúÿ~o¯\ÿ¿_ïÍõëŸ÷ëýù¾¿sþý¿7×î߯÷æúýÏûõþüß_¹ÿ~¿ß›ë×?ï×ûðl—ÚጭP†½>,õûŸ÷ëýù¾½qþý¿7×î߯÷æúýÏûõþüß^¹ÿ~¿ß›ë×?ï×ûó}zçýúÿ~o¯\ÿ¿_ïÍõëŸ÷ëýù¾¿sþý¿7×î߯÷æúýÏûõþüß_¹ÿ~¿ß›ë×?ï×ûó}~çýúÿ~o¯Üÿ¿_ïÍõëŸ÷ëýø6ÊòáŒÜ¤cH\ûçÿœyøüùù¶Ò|DùŽÄ’wÿ¥e¸þÞ üËò¥Ïšæü«ƒR¼Ùoh·Òéà7ª°1 ~œi_zûdï‚ø»<÷åÏùÊÊ6ù‘.|·æ(.üÄóÉj¶±ÛÜï,D‡_PÄ#؃ûTÍ­ÎT~Sù{Ìïùi«ùмËÄvf-î]–i)Å ¤E5µóÏA²¢‚ÌrNq$ÎBþ[þdk÷~CòN½m¨k¶"C=´qʤÛƒñgEGâÛ ØEÿ9SùO¦y¡¿,o<Åù™.ÖŬÖÞåȸjR2ë@wµL„ÿÎlé–—Ÿ—–×WPG$ÖžcòüöîGÅŸ¤a^J{$‘ÎÝ{{p·ªÊÀ ¿¾úõÏûõþüß^¹ÿ~¿ß›ë÷?ï×ûó}~çýúÿ~o¯\ÿ¿_ïÎÿ9 s,ÖÞHY]˜¼»±ÿŒ¯/ÌUüÀüÛüóò¨[H·‡òçOôÞO0[Ü=¼—ÚšÕŒBV%!r­9ü‚·üÚü¾¹ó‡üãÎuåè|Ý§ê¿§íæ»µ¼m1´ýKãuƒƒ $Ü…=ÆK4òÇÊÞl±óOüæ&‹eúzãEŽÎz4ºŸM¸t‘šKh­”ÈñºT7)r ³™Ëü£%ÿäÜÿ—ÿÿ˜Âx<•i'˜´ñ;Æd6uü¡ôòè€ÉÁ•@3 0Ôÿ)ì0|Ýqç_ÎÈé4«+O6k±Í§Ëæ(.Y.,m XDÉ,®œÜ<èxÔg3üø~{ ÿ9•{&—¥ÿ‡R-ÿ@Žæn.Ø·×SÔ„<ü–©éÅ/îÈ$îqúE‡’ô'~]ùŸþrëË„ÙXY_Úéú¼èÞ…ªK%m¢¹´µ'÷³Â¹úl¡äUŽz‹þq"ЦŸæm[ËÀÇäC[–ãÊñq(‚ÄÆ€´hÀ:ÆÒ*¬ë°®ù~y!üñüÇ11_÷垟+Œî_^¹ÿ~¿ß›ë×?ï×ûó}zçýúÿ~o¯\ÿ¿_ïÍõûŸ÷ëýù¾½sþý¿7×®߯÷æúõÏûõþü£rýëýù3õ¤þcýÅ~œ“âSÁÌoor‹$R)WG«) ƒ±#Ú’¼½¬XC jÚM…Ö™oÇѵžÚ)!ŽÃ„l¥V¨6ÂíòÏÊZ»][˺—a| ªÏke RÝ@dPh{ï‚í¼…å›-Q¼Óg£iñk.IkØíb[‚[©2äkß|W^òO—|Õ,^gÒl5­`{»h¦hÍkðRW}öÉ2¨PEØœó3þ:ÑÿÆÿ‰ç¹³dïË¿ïû6Ã̼¬Ø;þ<¿ç¿ük€¾y²³fÍ›6lÙ³fÍ›6lÞÿÏüGefÍ›6lÙ³fÍ›/+6loþòÜüãýx6lÙ³fÍ›6lÙ³eŒ¬Ø:ÇýÞâ‡þfÍ›6lÙ³eÓ¾VlÙyY²ðv—þõGþËõå_˜ÿ”þXüض³³ó¥£K.qõ«»y vÒЂaG4äÄŽ]ó›Ыù7þ®>hÿ‚ï7ý ¿“êáæü(.óЬy7þ®hÿ‚ï7ý ¿“êãæü(.óЫù7þ®>hÿ‚ï7ý ¿“êáæü(.óЫù7þ®hÿ‚ïßóоLpQõ4`A_º¡¶w/)ù_MòF‰aäß,Ãõ}#Lm­a¯.¯@Os¾ç ¯lmuKit½ZÞ» …1Ïmp‚HeCÕdF¨e=ÁÎ!äíÿ’®åÖÿ&u§ÒUË»hz‚5ÞŽäƒö!W¡â>•FJž˜;ËœE"ù{ózÖ/'y¥‰)gut%´ž?Ù’î)réÀ°pßä7óëþsòÃþq¾ö×AüÊÕkHeúœm<ñGO…åT€ÙåBzMó°þZ~fygó‡Ë–Ÿ˜—Z„Z–‹x>#?rµ¨~$‘{«{ôÈœÿç<—ç­rOzþ£ÿ4d ÿ5?!y«§æ•ÄÕ'‰µ†ŽDìè}=Õ†ê{ŒŽ]jÚö«+ê?—?“ÿ™zß–ebl5)<Ñwh×1OPÁ$%£©cóʇÈßž~u&_ þZêÞ[ŠØ:ù¯Î,ó³Œk…@ø¶mÈÜ`ë/ùÅÿùÈ?<ÝÚh~m‹Lòµ‚]Ax5ˆµ«Qí¥µV"-ê’UÔ þÏ^ÙéK¯ùÆïÏr9tŸ3~wÌúMÚ˜¯ÇI{{“ ý± ¦á„nEx·ÄïCŸ8?ç:ü…mÿ8›c¥i~TüÈüÄÔüÙ¬†¸·KÝe–ÚhÛ‹;új¥˜Ÿ„(e§Ú5gÌ!yîÃIótpüÍÓOšì$™ŸQµ¼¸q%À“gXòoPW’³øºƒŸ¨oÊùÆÈmoÈ wäß(ÙIåß8éñ]‰omÒKÄŠhè¾”²'8™kµÚß>WyŸþ}çxüôtŸ)jvòþ^ÉuVâHEÔVí»r·æÞ?³µÀlû…ù3ù3åÈ_*Ùþ\~^ÛtûU¬·ª'»›ö¦”/'=¶øGÂ3ªefÍ7Aÿx!ù×}oýî›æ?Våeå`éÿÞ[oœŸ¯åÓ+6lÙ²ò³fÍ›6lÙ°pÿxügñ—•›6^l¬Ù³fÍ›6lØ>ÛýçºÿU?âX6lÙ³fÍ—L¬Ù³fÍ›/[ÿ¼·?(ÿâX6^VlÙ³fÍ›6a›6^V°ë7ü`|â?‘z•¾æÿÎ-[Q‘bµ¶×mf•Ø€K˜’|ÏzOæ§–ôÍOCÿœ }NY<Ý}çI¦¿¶6wIÃD½?THÌíMcÜ>-†}fóçg•nåÕ<‰¡j‘Ÿ3ÇgséE,SÅDYK\2‚ô%¹ÒóÌ¿•ú¿Ÿ¿çü±ä?óhú±–ñiVò‹‹yï™å›ŸZX§JÖ¼c^Aå¶ygRüÉü„ò·˜?7uóå½CËóy‚ëP¹±´æ¼š‹•Y/’vˆ2¯ÄÂÄq)±;zóó¯ò÷̺™|w®Ícpt‹Ñu"YÝ·ŒÀy8cBÊ @ ¹ØgŠü‘}æ¾ü˜Ð?0ü¹–<¯¦\е»N,Ú”«jÂe·_ŠÅn#>¬ž£?&49Òü«~dÎ=ù>ûóCÍáÍCË÷~`šòîÊÆ9%»‘/ï+"^¤íI_EÂR ôîó™r¬ÿ–i2W‹ëž^aQCC©@s­ßÿ½3ÆFýx6^Vlç¿™~H“ÏZm”67ÛSѵK=sOiœ/wdKEÊ “’Cqe#c]²?<=oùTÖ÷#Ͷb¾ÿÜâ‘~v~zÌáò–Ç›l?çm²ÿª8‹þwþyH)'å%ƒ6Ùù“–ßžžL8·å-_æÛ*ÉœŒù·þrƒó“ÈÖ+®kß”p1eH§žßÌÖÓ‹to÷l‰ Â0h w# t¿ùÈoÎO1ØÛëz7ån™{§]'©oq›ì™|AôzŽ„ucC†-ùßùäã‹þRØà|ÛdæNXüñüóQEü¥±tâë/ú£ˆ~KùÍzmö½ù­ù½uyÓ͆Ø]i¶d5ž›mgÌ[ÛBü˜ÊÀ12IÊŒÇe\ï9yY²ò³föÊ=NëÿPù*Í›6lÙ³ƒ~fÇZ?øÀ¿ñ#œ÷6lùwýãÿfØy›6lÿ_óßþ5À9³fÍ›6lÙ³fÍ—•›6?ïÿŒçþ#€sfËÊÍ›6lÙ³fÍ›6loþòÜüãýx6lÙ³fËÊÍ›6lÙ³fÁÖîÿøÀÿÃæÍ›6l¼ÙY³fÍ›6lØ?Lÿz£ÿeú޳fÍ›/+6l‡yóóË?•ÚIó_æ.­k£iE‡ër,jÒ7EZŸˆû˜§|ûåÏÍ= y·òãS¶Ö´rï¹³HŠéö•é^$uß¶ùÉ¿;?6¿'ô/Ëaù¥¯yr{k¸®>§Ìö×@ÜÅ(UjÜ]‚§³tß?#^yÕ|íkW:‡Ÿ./îu—*%“Sy^ä¨QÀ9–¯@´¥{R›gÐ?ùöþ«ùðžcÔô¿ùÇ¿B}êí.§°ÎºHÝ–q'?±Äa³gÖ'üÿœ¦ÔÏé+ŸÏ+m6kÞÉcm¡Ã,6Ìæ¦(ä` ¢}•b V˜.ÛþpßÏ~iVÔ?:?8üͪkJDpË¢3évë•¡‚TV~D’äV”Û$Úüà7åÍä¼?6ïuï?­Um_ÕoZUªæ ³ßn_!’í/þpWòË¢kG‘lÕ¬¥¢úÕÅÅÔ53»ÆãÙ”Œéþqëò¨ÿÓ åûƒZÕ<ë0[Akv¶°Å"Ç$hET@ ]Gb£°¸cYÙéÌ“O\ 2³ÄŸó›?ó‡Züåo—a›Lš;ZÒü™£Øy?ÊÖâÓFÒí£³³· Íéâ¯&$Ÿ™8w›6lÙ³¦è?ï?#úò­ÿ½Ó|Çê¬ٳ`éÿÞ[oœŸ¯æÍ›6lÙ³fÍ—•›Û6^Vï¯ûüÄplÙ³fÍ›6lÙ³fÍ›6¶ÿyî¿ÕOø–Í›6lÙ³eåfÍ›6lÙ°}¿ûËsòþ%€3eõÊÍ›6lÙ³fÍ›6lØ>ìßñóÄš¶¯åMTü×òæö©?—¬üçk5•Â$ç³úŒ1Hñ:Ž…‘£;øä÷Ì›_ó¾dò$ß“·:Í´zºriª#‚@éhO†Z zŒ‘hßóß’v[·òF¯æ8uKhìWOžk¨d2\D#ôϨBT–^¦¹Åü¥æ¯É¿/êvS럘wzß—tiDú.‰yýZÁÒ« FUç'¤„¢z…¨0Ö¿$¾¾ö çû¥ò·?[)ˆŸê&Bþ©øøú¡ ß¼à-©LôN©ÿ9Cùæ­>ûBÔu½>÷O¸I,o¢; :ÑⓊÕ[‰û&ŒyãÉïä§–5m;Róæ÷˜t™Ð4½DJði䂊Tñå)HÉ ¥Š¯L«mkòJÞýl_óêO Çsõ¸¼¦Ñ?ÔR@þªÑøú¼oÞåÇ–Ô¦O?¿;<ùÓå‹ËßÊíCô¿˜.5hlíâ“›Gm}Ò¶ê ³až¬¼q$òȆª]ˆ> œ•—•›6j`í3ýê‹æQÀËÌ6ð§vpÍOÉžaü¿½›Ì¿”f 4åw¨yUÐ<»™O’Œ-ä“©ˆ(Ü q,[:O“üë¢ùóOMkË7I2•S=»2‹›W;®b´R*ÝÁ¥FJ³fÍ›/6VlÙG¡ÉÏý“ä³6lÙ³fÎ ù™ÿhÿãÿÄŽsÜÙY<òïûÇþͰó6lØ;þ<¿ç¿ük€sfÍ—Ó+6lÝsfËÊÍ—•›÷„ÆsÿÀ9³fËÍí•›6lÙ³fÍ›6·ÿyn~qþ¼›6lÙ³fÍ›6l¼ÕÊ͛ػÿãÿ 3fÍ›6lÙ³fÍ›6lÙ°~™þõGþËõ3fËÍ•›6%y<:u³jšŒ±ÛÙ¡¦™‚F 4cA¹Ï/~gÎiþPþR_ËåÏ0ë2êZô>‰m+E¶’îé–QÈ2"üMûÊÚ¹ùÏÿœÓÿœ“óüäWŸ.¯u¦žßËzd’C¡éóÁõw‚ÕU¤Ž¤ú®(ÎI;ì´]²ÿ8»§ßùËóËŸ•ÃPÔ¬ôM{U¶¶ÔM™¢v…Ïmª ]ÈØgéÿòëþp÷òoò†òçQò”ímîna‘îežî«rR¢wp¦¢¤¨vFÿç"¿ç ?,ÿç(5KO4þc%ý¦µk ot©R)'ˆ}””H®‡‡ì¡»FvÏÊ_Ê,þGùZÏòÛòæÔÚh¶uaÍ‹Ë4­ö¥•ÏÚvïÑGEm6/mýô_ë¯ëË»þþ_øÈ߯æËÊÍ›6^VlÙ³fËΙ ÿ¼üëÈ>·þ÷Mó« ³f̓§ÿym¾r~¼›6_¾VlÙyY³fÍ›6lØ8¼Gþ3øŽÍ›6lÙ²ò³fÍ›6^VlmþóݪŸñ,›Û6lÙ³fÍ›/+6lÙ³`û÷–çåüKåfÍ›,efÍ—•—×+6lÙ°}‡Y¿ãâ]Ëñ…ʃ¿l[ô•ÏûðýÃúfý%sþü?pþ™¿I\ÿ¿Ü?¦a©\ÿ¿Ü?¦q6þ\ÎukÍËi—Móÿ¤¨$™ÛêWÈ´åÜ;­ z¨U`§ŸA’ù/ó`yÂêçË·v·š7™tøcžóK¿XÄ‚7ØM ÆÎ’BX¬ŸóªÔgBý%sþü?pþ˜É/§™Lr9*{m3fÍ—•›6Ó?Þ¨þgõ3eüò³”yÏòåç¾oÌOË¿CNóÜ*ÁgqK{øÚœíïTÉ\ÆAI#jÜygä?=Kæ{›¯(ù’ËôOœôØ’ký4?«¥!<'¶”%…ºV¡•ªWjôLÙ³fÍ›/+)ºœÿÙ>K3fÍ›6làß™ŸñÖþ0/üHç=9Y~ù;ò÷ûÇþͰó5sf® ÿ/ùïÿà*ŒÕÍ\ÕÍ›Û5sW6jæ®jæ®lÕ«š¸8ŸôÿÏüG×6jæ®jæ®n™«š¹«š£6jæëSØO°“ôg/oÏËt%Î~[ ¤‚¯iPGQýæWü¯/Ë_ú<·ÿq‹?ú©›þW—å¯ýNž[ÿ¸½ŸýTÁ°~zþZ k…>tòÕXÇAúbϱÿŒ˜ þW—å¯ýNž[ÿ¸ÅŸýTÍÿ+Ëò×þ§O-ÿÜbÏþªfÿ•åùkÿS§–ÿî1gÿU3Êòüµÿ©ÓË÷³ÿª™5ò÷™ôo7Ú[ÊZ•–«b²šâÂâ;ˆƒR¥ã,¡€=+\<®lÕÍ\ÕÍ\Ù«›5sW6±ÿwÿÆþf®jæ®jæ®lÕÍ\ÕÍ\ÕÍš¹³W6ÒÿÞ¨ÿÙ~£€Ë®jÓ5rÀå²ïòÈwœÿ0ü«ùqnoÿ05½;E€C%ÀúõÔp»ÇÛhј4œ|]©\òæ¿ÿ9×ä ¤ú¯ä¶©ù…ªÉE¢ØÝz)rÇŒ0ÜLÑq‹Ô?´vUž™ƒÍŸó–™¨ÑÙycËß—š5ã}NQ¨Îou[54]DÉ4*ÄT˜×‡QÔâúwüà~›¯jIæOùÈ;ù‡ó÷‘ZÝËõ}.tEã;OŒòíêP¶ôêOËŸÉ!þRZÅaùsåÝ7K0<Ä6ñýeL¿n“ñçB6¥zmœþrßþp§ÊŸó–VöwÚßè5رëÛ¬Í,=â¸O…¤ö1ÃÜmŽÿœIÿœ+òŸüâu­åÆ›t5ï4ß²ë[¤M=¢*ÍŸÛ<Ï3à6ÏdW.¹³W5F-lúëúñ×gý"_øÈ߯õÍ\Õ«›5FlÕÍ\Õ«š¹«š¹«3Aÿx!ù×lÿ§Mó« «š¹«š¸:sþ‹mó“õàžjæ®jæ¨Í›5sf®jæ®jøf®lÕÍ\?ÞÿÇüGW5sf®jæ®jæ®jæ®jæ¨Í›¦jŒÕ̓­ú5×ú©ÿÀ>Ù³f®`sfÍ\ÕÍ\ÕÍ\Õ«š¹«›ÛŸô[Ÿ”ñ,š¹«š¹«]óTfÍ\ÕÍ\ÕÍ\ÕÍ\ÕÍ›éçy¿ãàvÍ\ÕÍ\ÕÍ\~`~^XþaÚÁ ÅÝæ•ªÙ¿©c«éޱ_ZÙÄR2µÆÎ„o ‘=óo*^/‘?7ä[MKÔH4½`E"Ùj±…di>(í§¯ÂñË ææ©ö‚ŽÔÀ¡*ÂŒ6 åW5sW6bsTf®jàí3ýêæQÀ.¹«š¹¶ÈŸ¿.4?Ì‹Xm<²ÅuhÌöWö’z7v®ÃíE(7ð± äCEüÃÕ|­’ÿ7-ÚÜú‹kcæe^:~¢ÄÈjßW¹W’»qg «…ÎÚÊPðpAŽ6£.¹UÍš¹«š¹Dìrsÿdù,Í›6lÙ³ƒ~fÇV?øÀ¿ñ#œ÷+/:/•î+-r~ñ·n¹!úêË4_qÍõÔÿ–h¾ã•õÄÿ–x¾ã›ë©ÿ,Ñ}Ç‹´úŸ#tõ©J}ž¸ë©ÿ,Ñ}Ç7×SþY¢ûŽo®§ü³Å÷ß]Oùg‹î9¾ºŸòÏÜs}q?åž/¸æúêË4_qÍõÔÿ–h¾ã›ë©ÿ,Ñ}Ç7×þYâûŽo®§ü³E÷ß\þYâûŽW×SþY¢ûŽ_×þY¢ûŽo®'ü³E÷ß]Oùf‹î9¾ºŸòÍÜpa»O©‡ô#§­JPÓìõÀ\Oùf‹î9¾º­âûŽo®Çÿ,ñ}Ç7×SþY¢ûŽo®'ü³Å÷ß]Oùf‹î9¾ºŸòÏÜs}u?åš/¸æúâË<_qÍõÔÿ–h¾ã›ë©ÿ,Ñ}Ç7×SþY¢ûŽW×SþY¢ûŽpùÈÍbâÛËežžÆÖ-OÌÚ—x`få³»»Ï5£(‘>T†§C;Ì”ÿ’>M¶Kß6ysÉú]«Mc§À¬ÔéÎU?Mq-~YþFyÍ%›Éú’õhà!ek -:à!;€Æ5jï‡Z—äåk.©«ùGʶ¶P)ygŸK±Ž4QÔ³´`îNG<½äÈ?6‰ÛÊš7‘õ1j¼ç6Všlþ’ÿ3újÜG¹¦! y'þqûÍwgHò¾“ä]JýU˜ÛÙÛi“Êz’‘«5sL–j‘¿”zM´ºž«å+[YÀ¥åšm.Ê8ÑGVfhÀx“…'åo䙬_]òç—|›¨i±]ZXéÓB¥Z²"š°³ËÞGÿœóuËi~TÒ|‹ª^"—h,­´Éä 6$¬jÄãL店”tÿÊßÏ//é¾B4½Ì^]Õ›PÑ­#Hl}=¢hn_Þ²³¨–‰ §¤~¸ŸòÍÜs}q?åž/¸æúêË4_qÍõØÿåš/¸æúêË4_qÍõÈÿåž/¸æúâË<_qÍõÄÿ–h¾ã›ë©ÿ,Ñ}Ç7×SþY¢ûŽo®§ü³Å÷ß]Oùf‹î82ÊíÖ¤ Bça×Û Ôÿ–x¾ã—õÔÿ–h¾ã›ë©ÿ,Ñ}Ç7×SþY¢ûŽo®§ü³E÷ß\Oùf‹î9¾ºŸòÍÜs}u?åž/¸æúêË4_qÍõÄÿ–h¾ã›ë±ÿË<_qÍõÔÿ–h¾ã›ë©ÿ,Ñ}Ç7×SþY¢ûŽo®§ü³Å÷ß]Oùg‹î9¾ºŸòÍÜpfvsˆ#^»Ž½©ÿ,Ñ}Ç·!èÖ2OJœ‹ó#þròÛòŠ#7æ&½£éÒ¬ëlöÍq\¤Œ¥€xCs]…wæ+ÏùÏUó]üºüã×宽ç™âgu¾X¾©¦On›4°\ÒRä1â ®ûí¯|ƒÿ9]ùŽ©»ço.y Ooô¸åÐ-Måê– ¬Ë$pŽ*ã`ÇâQ±É¯”ç¿,´¹cÕ¿2-ï<ù¬Db’+¯1Þ\]$_‰ÌQ<ŒŠ’?ÄÈG€Ô õg—<¿åÿ'¤ÐùCBÒô”¸!§]>Ò+a!^…ÄJ¼ˆ®Õé’z‡soûó}u?åž/¸æúâË4_qÍõÄÿ–h¾ã›ë©ÿ,Ñ}Ç7×SþY¢ûŽo®§ü³E÷ß]Oùg‹î9¾ºŸòÍÜs}u?åž/¸â¶÷hfŒ x…]w§¾]Õâ,Ò)·ˆÑÛrûâ?]Oùf‹î9¾¸­¢ûŽp:ÎU~T~]ù‘.|éæ .ÃÌ,Ñ+ZÉ"þí¦4A#VˆwÜ5(79Þ ä{o )«.àƒ¸ ÷n|ß]þYâûŽo®§ü³E÷ß]Oùg‹î9_]Oùf‹î9]Oùf‹î9¾ºŸòÍÜs}u?åš/¸æúêË4_qÍõÄÿ–h¾ã›ë©ÿ,ñ}Ç7×SþY¢ûŽtÄ–q:¨@GÙ^ƒ|‡ê÷J—’©‚6 ذ»ë‰ÿ,ñ}Ç7×þYâûŽo®§ü³E÷ß]Oùf‹î8.k´ÖíèFjdÚ†ƒ~Øë©ÿ,Ñ}Ç7×SþY¢ûŽo®§ü³E÷ß]Oùf‹î9¾ºŸòÍÜs}u?åž/¸æúìòÍÜs}q?åš/¸å}u?åš/¸æúâË<_qËúêË4_qÍõÔÿ–h¾ã›ë©ÿ,Ñ}Ç7×þYâûŽo®§ü³Å÷ß]Oùf‹î9¾ºŸòÍÜp`»O©–ô"§¬)·Ùë€þ¸ŸòÍÜs}u?åž/¸æúêË4_qÍõÔÿ–h¾ã•õÔÿ–h¾ã—õÈÿåž/¸æúêË4_qÍõÔÿ–h¾ã›ë‰ÿ,ñ}Ç7×SþY¢ûŽo®§ü³Å÷ß]Oùg‹î9¾¸ŸòÏÜs}u?åš/¸æúêË<_qÍõÔÿ–h¾ã›ë©ÿ,Ñ}Ç[Ý¡‚àúŠ*mCCñwÀ]Oùf‹î9¾ºŸòÏÜr¾ºŸòÏÜrþºŸòÏÜs}q?åž/¸æúâË<_qÍõÄíoÝ›ë‰ÿ,Ñ}Ç7×SþY¢ûŽaxŸòÍÜs}u?åš/¸æúêË4_qÍõÄÿ–x¾ã›ë©ÿ,Ñ}Ç7×SþY¢ûŽo®§ü³E÷ß]Oùg‹î82 ´6÷ èD(j‹¾úêË4_qÍõØÿåš/¸æúêË<_qÍõÄÿ–h¾ã›ë‰ÿ,Ñ}Ç7×SþY¢ûŽo®§ü³E÷ß]Oùf‹î9¾ºŸòÍÜs}u?åš/¸æúâË<_qÍõÔÿ–h¾ã›ë©ÿ,Ñ}Ç7×SþY¢ûŽo®§ü³Å÷ß\Oùg‹î9¾ºŸòÍÜpe•Ú1”#…ÎÀïí€ÅìtÿyâûŽo®§ü³E÷ß]Oùf‹î9¾ºŸòÍÜs}v?ùg‹î9¾»ü³E÷ß]þYâûŽëºv•æ>/yM¶¼Ó.—ŒÐJ¤«j=UÝYhÊhT‚3‡Ùë¾`ü•‘cóýÚùƒÈÓζÖÚ›ÃÆïHN‘ý}÷õ¡;+\³B%5-öÏZ±ÔíâÔ´Ÿª^YN¼á¸¶q,2¯NHêJ°÷ýu?åš/¸æúêË4_qÍõÄÿ–h¾ã›ë©ÿ,ñ}Ç7×þY¢ûŽo®§ü³E÷ß]Oùf‹î83O»F¹D.çqZô8^§ü³E÷¿®Çÿ,Ñ}Ç7×Sµ¼_qÍõÔÿ–h¾ã›ë©ÿ,Ñ}Ç7×SþY¢ûŽëún•æ:.ùM¶¼Ó.—ŒÐHCPA꬧ue!”Щ8X×5oÈZÍæû›ï3ùáÂ%ô±µÅþ’ôÙf MlÛ*ÉËœm±VäXwÝ7^±ÖlàÖ4kucuËð°xäFèU…Að>£ýu:}Z/¸æúêË4_qÍõÄÿ–h¾ã›ë±ÿË<_qÍõÔÿ–h¾ã›ë©ÿ,Ñ}Ç(Þ¥ú4_qɬ?ßkýųå’\Ù³fÍ›87ægüu£ÿŒþ$sžæé¾a“¿.ÿ¼ìÛ3f̓¿ãËþ{ÿƸ/6Vl¼¬Ù³fÍ›6lÙ°qÿx‡üg?ñ›6l±•›6lÙ³fÎÿ9!ÿ(ÿ—¿ð5òÇýFŒÿ9šÑG­~XM>6¾Ìäþ·XZI¿ÑÛeºG·ùL2å gI°ÿœ…²¿Ô|·{ä¹ò­ÒAoz–ªš‘†nr±ú¤³Äž‚oWdbZÕl5›h|Ï¥zú\R³þ’ýá"̪CÉÕy2%Wã`3E¯æ0þpé_–>]—Dó×–ôÛ8¼¥rÐA<²JYMã2HöŠ&åðüj 3½þGjÚ‡åVµ ~Tþhù[DÐuMSNht[Œþ ±}hî]•J¹Jñä¬y|]2Mù¥ÿ“ÓÈøy›þÅs­fÍ›6lÝ3fÍ›6±ÿwÿÆþtÍ›/+6lÙ³eåfÍ›6(±3#ËJ$j]Øì@©&½€Ï0ùãþsoòOò“UHóš :ƒ[›¨à²‚â캰`ªÙ±fôç!ÿ¡•üÛüè‰Ûþqwòúk]-ÊÚ¶»æöŠÕ-.‡Äåí’f‘â J2Æß{bËÿ8ÝùÃù¥mõùÈoÌ©bÒµ6ÿs_òÌ1Aj#VªGmpðúª6VbZµ¨éoò¯þpûò›òrèk^SÐ…Ö·èËo.©ªM%ÝÔé+roW™1×`*¨¦€g¥`D´·N´E†Ò-£†5 ˆ<FÛ6lÙ²úefÍ›6l^×ûø¿×_×—wýü¿ë·ëÀùç¯ùÊÿÌ2þU~Qù§óòÞƒÌzu¬mlæ/WÓ"¤’èJ!, ¨T‚3ñùªê·zåíÆ³«Ì÷×R¼ÓÍ!«<ŽjÌO‰'?G_óêÍ_8~a~^jþ[ó´Íu¤yj{kMwŽŽ#‘Y¤ˆÉûj”^5ÝyP“µ>§fÍ›6lÙ³fÍ7Aÿx!ù×}oýî›æ?VfÍ›OþòÛ|äýx6lÙ²ò³fÍ›6lÙ³fÁÃýá?ñœÄplÙ³fÍ›/¦V_^™Y³fËÊÁößï=Ïú©ÿÀ³fËÊÍ›/+6lÙ²ò³`û÷šçåüKeåfÍ›6lÙ³S6lÙ²ýò°}‡Y¿ãàÓ6l¼ÙY³c]ThePñº”uaPÊ„z‚:ŒáZ‡“üÇùky&¯ù/ek{¡ßN×Z®<¾— 6/>œÛ–E0»ˆKPŽçVòšô¿=èðy·Êò´ÚmÃ2êRHäCGŠT4+"˜xô¨¡ÉlÙ³fÁúgûÕÌþ£€3fÍ›6YðÇÅ+ÂÂX˜«Ž„gÔ|—æ/ËëÉüÃù=èÍ£Ý\µþ«å¹€ýü¬zö±ŒŒ¿¦Ïé;€Nto%ùïAüðý9äû±un¤,ÑRkw5ýÜñšqB>TS%ÙYyY}1§¡ÉÖßôï’¼Ù³fÍ›87ægüu£ÿŒ ÿ9ÏsfùdïË¿ïû6ÃÌÙ³`ïøòÿžÿñ®ËÊÍ›6lÙ³fÍ›/+6lÿCþ3ŸøŽÍ›6lÙyY³fÍ›<ëÿ9IäÝ?Ìšˆ”išGš<¿©jÅÌ`´¶»4챂Ü#_‰È Îu_Ío#Úþz[ùOΞ@ó]–Ÿ.‹zºÆz°Çmp¯QUÇU ÔùZå%å¿1?6üÑiæ+ý&ÚâÛM·¶±K+hEÐã3¼m<åÝ—á­TÚ‡$>xü¡ò¿˜ô¥yFk_,ê0]Á¨ZÞé‘Å[›sXÌ©OV:ìèXrTd¿ âóKk:¿æ§šF©æ [LM!/tØ—N¶É'¬¾Šz³0“ÔÝŸÔ£ ¸Œ4òçäýíÞ½¦y¯ókÍžf—C‚âßL‚;´~²%yÃM?ªåTG nhkƒÿ3¿"ü§çÛMò¥Å§•µ}7PƒVÓµ 2¡»‚¼YÑxzˆA*ëÉKNC!ñÎ:[ë§ÌšçæO›Só?˜­-¬~¿`‹`–pZ?© ÛÄ%•”ú•g&O¥Jü§ùY™´ÿÌÍ5ZùƒTÑ­gµÓ½šXÇܼŠfœÉ#0)Mö5Îgç/6ikÿœ‚òî‹å«¥¿»òç—u¿ÓWV’;3{è tšP +ÉÁ¸¡nt¥3¾fÍ›6lÙ³fÍ›Xÿ»ÿãÿ :fÍ›6lÙ³eåfÅ7aUV#ÄpƒÌžgÑ|™fÚÏœu;-#OWHÚãP¸ŽÞ%wÙT¼Œ í^¹äï1ÿÎuþ[ÛÜ3òÆ-[Ï÷öò:_Ãå« ›h¨x‰E‰ÑÑš¡Y ›3æ×üåüü×óWGšÿòÃCò¬~FÔ+‹‰ž]E-çU’P8 y¸XDrâTžXü•ÿœ„qÓ<¡ÿ9}æÏ4Þùni6—6Úœˆ¶ÓJÀZ/NC,r쌠ִ®~•ÿ/?"ÿ.¿.OèŸ&ùOEÓíäœÜ0K(Xú¡(3) Ð oI¤˜ó™™Û¥X’q<Ù°‹Í>iѼ¤Ýù¿ÎWÐiš%„f[«Ë– j?Y=EYŽÀž&üœÿŸ~Rþry­.ì&ŸH¼¸,–7‹†êPÔXÕŠ¨Fqºó"¿gíg¾JŽ#b7/+6^VlÙ³bößßEþºþ¼»¿÷¢_øÈ߯æ QÕ]e` ²‘B¬Ä±®|®üÌÿŸM~_yÿÎ>yÐõë¯/i7³¬óè¶¶q¼jI¬‹€¨_öAFà|FÙô³É¾NÑ?/t;$ù*Ê-;DÓ¢XmíáUP³qc»5*Ç$¹³fÍ›6lÙ³gMÐÞ~Gõä[ÿ{¦ùÕ…Y³fÁÓÿ¼¶ß9?^Í›6lÙ³fÍ›6lÙyY°pÿxügñ—\¬Ù³fÍ›6lÙ³f͛ۼ÷_ê§üKfÍ›6lÙ³fÍ›6lÙ³`û÷–çåüKåfÍ›/+6l¼¬ÙyY³fÁöfÿŒ€LÙ³fÍ›6lß,ä>lü±To̿˶Ló¬uyâ×SP´6÷¨¥yý™kÉŽyR˜oä/ÌUó„’hzæ›qåÿ5[§«>‹zêÓz'aÕ8ç¹3fÊ=NìŸ%™³fÍ›6poÌÏøëGÿþ$sžæÍ\ùwýãÿfØy›6lÿ_óßþ5À9³fÍ›6lÙ³fËÊÍ›6?ïÿŒçþ#€sfÍ›6lÙyY³eâ6ÐßA-…ôI=­ÄmÐÊ¡ÒHÜQ•Õ ¤lAÎ'kÿ8ÉùSa YØyimí£c† ûèãAàˆ“Qà`úÿËú°?ýÄõú¯›þ…¿òÃþ¬ÿq=Cþ«à¸ç¿+Þ ¥>_z¡J¹=C¹ÿŒù×ÿç?-u­6ëI´Òî´ùî"dŽîÛUÔX_ªºŸ_±ê;ŠŽùÈt/Ê!þ^]Aä¿ÏK8YнšþöÆÆð×ýç•>°ÞäV‹g¯Ä*ŒîÇþq·òÅMËîý´õú¯•ÿBßùaÿVÿ¸ž¡ÿUó¢ù_Éz’-›Nò~ŸS™‰k,”5¬ÍY%"»ˆè2K›6lÙ²ò³fÍ›Xÿ»ÿãÿ 3fÍ›/+6lpRßd>þiù;ò¶Î]Oó^Ó´…ŽÝî–«¨£žX“íbf !®Ô^ûg…0ÿçæþKò–Ÿyæ'yK̾cÑ U[}n;a“-Ãû¦¹$•£-@ƽçÇÌùø¿ç<ÇæO.yžÿ˺]̵¶Ò¬&Q ´ce@xFŸiÈ«Î}Iÿœ6ü´ü¼ÿœ²ò|šß›z޵ç¯4A;Zë–ºåÜËf·?t´r˜ÈH÷è¬~ÑPÙô÷ÊHòçåõ²iÞCÒ,4kháKu[háceÐp;r'Ç>CÏÊ?çµ>ÞÞÿÎHþWzº†¨cˆk:B$’Ï'¬öÁy¢€0¢”ä+SžKÿœ ÿœó?毙#ó¯æ­ç—¼§¡]E$^[Íou{*ë*á^…ä®Ý'§é—Os%â9êkÿ8\2ò³gÇoùü‡ž.<­å«ß-Öò4/p5¤·-è ’Ëõw¸ )@¼‚–å¸í„‘Ý£²jBw ³+Ëð |5¯\õ×ä¿üäoçÇüåüw>eüŒó’ü¬– W>_ÔÇÖ¯Pª€×<¹&)Z´ìŸg>TÿÎs~F~iþVùê6~wÏ­sæ&7I«éâSc$‡v†2è¡ }=0 öE0×þ}éù)ç/ÌïÍÍ^MW¶Ò<µ{þ§¨1–8V(Ø1ƒÔAC$¢ªŸˆËáÏÕd®$vu‰æq<ÙC“šÔ>Jð³ZÖl¼»as¯kS-½…œ/<ó?ÙHÐrf? 2;æ—æòÄ™BñW˲Ú-êÝ:²ƒ «q#–àì)_l#ü¼üãò¿æƒÜÛyRâcshªòÁso-¼¡ì¸YUISذ›OÿœƒòF§æäk;ùPiÚÕ$6ó w>ÔI9_L¸é@ÝpgŸÿ<ü¡ùi}‹æ›©–òHývŽÞÚiÌQVž¤¾š°E¯sKOÔ-µ[Xu=6UšÖâ5–)ÕYTóÄ¿3?ã­ü`_ø‘Î{›6Nü»þñÿ³l<Í›/ÿÇ—ü÷ÿp^VlÙ³fÍ›6lÙ³fËÁ¿ñâ?ã9ÿˆà¼ÙYÆ<åÿ9äß"j’ygZ“Q¸Ô f];N¸¼X‹ „‘âRé¿´ äWþ†ÃÈï¯0ÿÜ÷þhÍÿCaä÷טî{ÿ4eÿÐØyýõæû€ÞÿÍ_ô6@ÿ}y‡þà7¿óF_ý ‡ß^aÿ¸ ïüјÿÎXyýõæû€ÞÿÍ_ô6@ÿ}y‡þà7¿óF-mÿ9Uù}q4vòjÙd`†k­òR¦œ¤‘’ˆ£»†z)Y\BV‚¨#ØòófÁöÿï-ÏÎ?×€0&¡§Újö²éz´]Yά’Ã2†FVGÈÅìFp/˜?"‡§2¦§ùK§Ä)5^M[K¶ ˲Ïi ý¯ŽáTÒŒœô-¼ñ^A¡g"MksM ±Êñ¸ª°>♳fÍ›6lÙ³eå`û÷ü`á€LÙ³fÍ‹Co$çŒb§ÜúóÎߛ󕟔ÿ’ aüÈó$·)rÖ’[[E-ÔñÊ«È«Ç ±QNçjç ÿ¡»ó׿hgüã‡åv±ªÆ Ìòy• °´6„Qd‰ÖáY‰RþÍv®T¿ž¿›Kiÿ9çû}7K•ÞM+Ê,QÜÚ˼ñO,°óWý…d; žUß'?—ßóÿ’Ÿ–—ÑëºN…>©©ÛÜEsku¬ÝËu%³Âjž• ¨܆V©Î½ùñù/¢þùSü¡ó$’Yi×ü&ŽK>1úW178¤â‚¡÷e§Ä3óæ¯ùÁŸÎ,yá¿)×@–öý®c··¼¶`låY»”Lh5<¨W¡Ïѧüâüã—üâ·‘G’âºkÝsQ•/u™Ãò„ÝáÆUHá©n§=OŽV(C)£„c¤•å<¥bÇ¥N Ó?Þ¨ÿÙ~£€lÙ°©¦Yë–7Z³wZ}ô/mso(ªI‚Œ¬<ðÜvÏ'~PÿÎþN~Fù¢?̯ é—‡]„H-šúèϹ“«D”`>-ʃß|õñ5ÜõÍ›6lÙ³fËÊÅí¿¾‹ýuýywïD¿ë·ëÀù³eåeåfËÍ•›6lÙÓt÷‚‘ýyÖÿÞé¾cõaVlÙ°tÿï-·ÎO×€²²ò³fÍ›6lÙ³f͗핃‡ûÂã8ÿˆà¼¬Ù³fÍ›/+69#¿AR~Csžwü°òf³ÿ9£7懚|ͪéš¡wpþ]±ÑdŽÎH4õ¢‹Æ1ÉêÎYX’Š­ïþ…ZÃþ§?9ÿÜR/ú¡›þ…ZÃþ§?9ÿÜR/ú¡›þ…ZÃþ§?9ÿÜR/ú¡Žó‹6JΞs£R¿îR-éÿ<1¿ô*Öõ9ùÏþâ‘Õ ßô*Öõ9ùÏþâ‘Õ ßô*Öõ9ùÏþâ‘Õ åŸ›¿—:¿üãÞƒqùÑäß6뺌zfKÝ#Yš»[è¥t"$x™yU]õÏK©N…U¾ðñÆæÍ›6^WLÙ³f̓íÿÞ[Ÿ”ñ,Ó+6lÙ³fÍ—•›6]r³fÁöfÿŒ€¾lÙ³fÍ›6Xø:“žüþÿŸ…þVÎ;ù¿.|˧¬kp(kÄÒ£‰’ÕHäi]znBrãÐïž­òGæW–1|Ÿoù·åMF)¼©qn×?\úb$AûÁ*µY:0¦|ûÿœ÷ÿœÇò?—ÿ+õËï yŠÎÿÍšüÅ 0E%ÄUy8NÞ ^Êt%ƒºçæžIfiebÎÄ–f5$ž¤œûµÿ8Aùïÿ9?­þ\G¦ùÉ–>tòæ‘7Ôlu Fí-%p –#*§f •û%³×¯¨ÎfùÌý{K°ò_¢„Í–¡#_IpÛ“2¼X £eâYMw¦4h?ó›JyŠ/ ;9¿ìŸ$z_üãæö®ÐßëÿœúÕ®¯r=[¸´û[QkÌ t€<<½ vN[ñ뾸ÿœ<óO™bmóógÌÚÏ–.¨š†œ«m¹ˆðõRËRà× è˜ß‘ßÏæûŒ7üÑ’Ÿ,Ï»!ü²ÓIu ÝkÆeU[¾šàD¯î¸4|y~ÕkZ –ÿÐŒþ@ÿÔ¥È˯ú­ûÊŸ—þXò.‘kå)hö6Z=Š”¶·XUÄjÌX€Òrc¹'v9#M6Â6Geh®¦¡–Þ0AÁ ±Ã_®Ü¿_ï9óç—‡Ÿüµ¬ùQ¸’+}gO¹ÓÞUøš5¸Œ¡` A"½Æ~@¿ç"?ç¼Ùÿ8տɼ…çØS“5Ü-Ϋrh²Fv;þÒ° §b3íüúûþq;Ì¿“¶w¿˜²ºóœ–Ú~PÒ Gu“Öšƒà,Tp^U¥KiŸOü÷ä.þgh³y3óMƒVÑ'xä’Òã—ñš«U ° øïŒòåï–¿+thüùw¦A¤h±Êó-­¿.>¤†¬Ä¹f$ûŸ–LsfÌzœÔÿÓ¾Jó„~þXèߘž\ºŸÍFâ{M2Òîál„´µÄ-Ç׎„Hî ô9æ¿1/ä×åe„ÃýçRòüW š)¨Vb¤±Û'_žóM¦~eh7º(ÿM“Ë>aI?cŽHM7<[u÷éœÿÌVÖÖÿóŒZÕ­x¡Òî¡u 7ÖMÊ’Á†ü‰f©ë¹Î»ù1ÔüÛù¡s­Æ¢íµky˜?š•?³¹Û§\oüãMÖ·ÿ*~ðºA6§ú„ZzÞ;z,©váÜ(ƒu9üÑ<«'æ$ú Z"iÏ#Db©¡&MùV¾ÔÂåRçŠõ9äŸ5ÎcyCËÖŽ«¦YßjßSÕ—D´ŠÚ7 wÑÒÞ¨ké›®ùÛÿ*ÿ3ôŸÍÍ?7yye„ d¶º´¸VI­nb4’<—¾ÙèŸ, sc[ƒ oQ¾ÈÉ/æ›î¸Ùÿ4ßpËãgüÓ}Ã+ŸóM÷ ÆÓêj^>·€­xà>6Í7Ü3q³þi¾á—ÆÏù¥û†W?æ›î¸Ùÿ4ßpÍÆÏù¦û†n6Í7Ü3q³þi¾á›ŸóM÷ Ülÿšo¸eð³þy¾á•ÆÏù¦û†n6Í7Ü3q³þi¾á›ŸóM÷ ¾Ï7Ü2¸Ùÿ4ßpÁ…m>¦>)xzǰ­xà>6Í7Ü3q³þi¾á›ŸóM÷ Ü,ÿšo¸g$ÿœm <Õù®#û?ã~Ÿ¨[W!ñÎ]y›U]_[ò¯å®­ªycE½»³¹ÔâÔ-k6"gX÷¬x€Iíž»ò_œ4¿Ì ÃΞW›ëV¥\[ÉÅ””aÝXèA<ÿç¯ùÉ£åSPµò·–oüÇ èz^bÕld@škŠ4ŠaaêNÑ¡æâÄ ùƒÿ9(šÕ®ùgåûÏ:jRé©­\Ûéò¤ÛOV9œÌ&MøD?xÔ4\íÞ@óΓù—åí?Ï>U›ÖÓ5(DÑ1HìÊÁ€!•Rê3Ξoÿœ±‡ËúÆ­…åGYòŸ–çÞaó³ªÛØH7•DL=Iý!¤ôCqï‡?˜Ÿó’éå»ÔÑ¿.<½yç;¸´èõAtéR/ªXÊ9E+GÆÒ-Y#_Þ0 ?>¼å¥~aÿÎ>y«Î¾Vœ\i:Ÿ–o'‚JTxMAÜGZŒžùim?Bé\šZþ޲è?¸L9ãgüÓ}Ã7?æ›î¸Ùÿ4ßpÁ°-§Õ®8´¼kvëµ0?æ›î¸Yÿ4ßpËÌti{ƒ²šƒÔ{çÕü‡7åeÅÇœ#t溂æƒQòªI¼LI?Yµw"8.A?`RDÛáâ3©ù/Íú'ž,QÒÚâ;›fôu —Å•À3£ÊGf +­*¤d¯ŸóM÷ Ülÿšo¸eð²þy¾á•ÆÏù¦û†n6Í7Ü3q³þi¾á—ÆÏù¥û†n6Í7Ü2¸Ùÿ4ßpÍÆÏù¦û†n6Í7Ü3q³þi¾áƒl–Ó÷ÜZ_îZµ¦ãeÙ¦û†nÍ7Ü3p³èjü†Ôõ EŽ[jñlâ†6šV¹–8‚F¢¬ç™PIÏ(yÇþsoò‹D‘´?!êW^wóD‘£Yé^[‚[ÓrÌ~ÂÜC«ªÕ™Yªé¸ÎkoùËÿ9-ù—:YùòÒËÊ: õ´×<Ãv²\Úħv¸±G'' ¨^+NA·¥Çüá.¥ù¦çWÿœ“üÈó&²÷ ×/¢hÓ6Öé¶ n JB*lI5ÏH~WÿÎ4þSþPÁ y;ËÖߤRÜÛKª]ÛÃ=õÊäLó2UØšTÐtÝYí¤QË9AÑM()Òƒ¶'ÆÏù¥û†n6Í7Ü3q³þi¾áЉ-Õ}%–à'ò‚)÷b\,ÿšo¸eñ²þi«ò\lÿšo¸fãgüÓ}ÃéËiõ˜Ê4¼·¥@§C€¸Ùöi¾á›ŸóM÷ Ülÿšo¸fãgüÓ}Ã7?æ›î¸Ùÿ4ßpÍÂÏù¦û†n6Í7Ü3q³þi¾á›ŸóM÷ Ülÿšo¸fãgüÓ}Ã7?æ›î¸Ùÿ4ßpÍÆÏù¦û†_?æ›î\lÿšo¸bÖëgëGÅ¥¯5¦ÃÇ.ém=yy4µæÕ 8‡?æ›î¸Ùÿ4ßpÍÆÏù¦û†n6Í7Ü3q³þi¾á›ŸóM÷ Ülÿšo¸fãgüÓ}Ã7?æ›î¸Ùÿ4ßpÍÆÏù¦û†n6Í7Ü3q³þi¾á›ŸóM÷ Ülÿšo¸gCÑx (½JSn]zä;X[_®ÊeiÔWˆé…¼lÿšo¸fãeüÓ}Ã/Ÿv—î\lÿšo¸`É–ÓêÐU¥ãY)°¯]ë€øÙÿ4ßpË+güÓ}Ã+ŸóM÷ Álÿš_¸fãgüÓ}Ã7?æ›î¸Ùÿ4ßpÍÂËùæû†n6Í7Ü3q³þi¾á—ÆÏù¦û†W?ç›î¸Ùÿ4ßpËãgüÓ}Ã7 ?ç›î\lÿšo¸gŸ¼÷¬yÇ̘º/äßå–£k¢ZÏ£]kº–©ukõ¹ý8§ñÁ <ãAW`Ìä¶&ò¦ÿ4½?CþVL\yrÿ”z´§ü´ã?åK~håÉ‹ÿ èì§7ü©oÍü¹1á=ý”æÿ•-ù¡ÿ—&/ü'¡ÿ²œßò¥¿4òäÅÿ„ô?öS›þT·æþ\˜ÿðž‡þÊsÊ–üÐÿË“þÐÿÙNoùRßšÿ2cÿÂzû)ÂÈÿ5y‡\hò—æ|¶×:ß”õÇÒMþŸ†;Èž¸ŠV…™ý7 VPÄTTu¦w>6Í7Ü3q³þi¾á›ŸóM÷ °¶_Í7Ü2ÕlÅx´µâý@þSžküÔn´ùŸ5]"g·¼¶òþ­,Fxº:IpU”Ž„ÁÏi{Ñü»äÏ+y÷È¿œ:æ³ù—u>–Ÿ õ-|^Z\Ís*¤ÐËnBqf¡fsíÖ_­Ý€Œ‘sPZý³å×ä?št_=ëÿ˜Þwó¯Ÿlïõ zéìíf’ú×ËÅ}r–ö¡äƒêì!=P]¶»eÏæÍÏ¿˜~oÖ¼÷ç?>èZ^“­&›jš3_[è¶ñÛ*«µÄéÀßí³º-;÷ϧ×SC¥My¢wp–¯%°åQ+„%!Ô1¦þùòòëóY:Ÿ”¼Ñ¦ùßWÖ55½pZù‹ÉwWlìí¤‘…ÐK#CµP JYƒu®Òk6èž~óßš¼ÏçŸ:ù÷EÓ¬<ÄÚ}šéo}m¡A¯ýüâ·@ò̼ˆ»ç«ÿç2ÙòKꨃ ”$05¨7o^ùÓxÙñJ´µôÓ Ê2¸Ùÿ4ßpÍÆÏù¦û†_?æ›î\,ÿšo¸fãgüÓ}Ã7?æ—î|lÿš_¸ep³þi¾á›ŸóM÷ Ülÿšo¸fágüÓ}Ã7?æ›î6´ú½Å^4Jì+ö¶¦ágüÓ}Ã7?æ›î¸Yÿ4ßpÍÂÏù¦û†n6Í7Ü2øY<ßpÊãgüÓ}Ã7?æ›î¸Ùÿ4ßpÍÆÏù¦û†n6Í7Ü3q³þi¾á›ŸóM÷ Ül¿žo¸fãgüÓ}Ã7?æ›î¸Ùÿ4ßpÁ¶+iYx4¿Ü½jLÊ”å7Ü3²þy¾á›—óM÷ Ülÿšo¸fãgüÓ}Ã7/ç›îñ ©S(3ðZ’ÔëSÐg9óæïå¯åë[Ççß5éZ3]†kq}}oªÑŠÕ·óÎþeÿœëü¢´šç@ü¹¹Õ<íæˆßÓ¶Òô ™þ¶Àü^…ÊÂðºªÕ‹#bùȼÙùûÿ9ù“¤jV¿’ÿ”šn™}i5”úÎ¥†§opèU¥HdhX$ÛÄFÍŸšo8hºï—u»ýÏ6÷Vºý½Ä‰{èa8š¿©ÏrIÞ§¯ZšçÔ/ùö§üâ’þsß_y¿ókOÕòöɬxÍéYÞ^¬ªZ‰ÆP ì³WlûõäÿÉ¿Ë?Ëè®,üåm'J·»p÷[ið*È@ rO@HùgÏï8ÿϧ?)¼Õç9üùg¬êzVsv·RèV¶Ðú@V¯RPpF=À çÓ=AÐ|±¦ÚyoËvÂÃI±‰`µµ·#Š(ÔPUâwÃ>6Í/Ü3p³þi¾áƒtåµúÌ~›Kʦ•ãgüÓ}Ã7?æ›î¸Ùÿ4ßpÍÆËù¦û†n6Í7Ü2øÙ<ßpÊãgüÓ}Ã7 1ûS}ÃÝiº6¡Çô•º]pûX‚)xׯ`Ò¾Ø,­™êó}Ã+…—óÍ÷ Ülÿšo¸fãgüÓ}Ã7?æ›î¸Ùÿ4ßpÊ+eOµ7Ü2gûŸþãÀtþ¹%Â0é æ .÷Bw1-å¼¶åÀ©Q"¨é\åÒþIé—Ÿ—Ö_”Z…ĒŧÚÁ µð^Ç5¸œêÙ”ŠÒ¾Ø Èß“WzN§/›2u·ó^ºmZÂÞæ{Xí’ Wûq¬Q±B\ý·ûL6;dGMÿœk’Öæ Ró ÷Ÿ—ÖW\´òãÛ"¤nœh×½G‰Õco‡ ¦Ãüíù!©kåßš|æI¼³.­ A¬G ¤w v¨8‡£J@„¯¨ƒ•)áƒÉþRÓ<‹£ÚySˈ4û(Äq­I'¹f&¤³I'©9Êÿ3?ã­ü`_ø‘Îð`ÝiŸ/%ü”Ò<çÎ~eüÑò­¦¢j†±¤è—ÓÅݶ£xµW¹V;ª=T¶Ãaž¿ÿœgò¦•å'=¦æ;6]]ê7º–«§:<ÞLyH Sm¶ùg¯|»þñÿ³l=Ê͛Ǘü÷ÿplÙ³fÍ›6lÙ³fÍ›6?ïÿŒçþ#€sfÍœÃþq³þRŸÍü ý@[gŽ¿)ÿ/üýæÿ*yàyOóJ*h·÷˜":{éVSúuvÍq#‰næŸéž”üŠüÕó5‡å‡’‡–ü‡q{ –FÚ¨ÜÇ1}^Sªª–n>¨ tlóß’<¿k ~jù¯Ìþn¾Ò5í]Õ¯ Ó`¸ú¤q¿¢²Gõ˜Ãx³QTzªU€*µ®uoÈo8-—æG˜üÇùŒmô»í_É^\Õd+iP¸P0P±•E¹ó‹~póo“?-ômÊwºöªÝê‘ÝC~ó‘¡-Ó2Àu;èmÄŒ”ä› •¨¯†xóYÿŸ€yRúò]òSËcüÀÔ!y!™ô{Bmmß—žI‡0b‘º8â bº‚ÎU~k X/~WÛ[£%ÌÆC©Ív³lL<à“ĵ*Ab7ÁºOü௖µ`oÿ<|Íæ?>ëa­íþ¡sj¦Ù@ãnðE1GJÔµ~ÐbÙê?$þTù'òÎ/ªþ\ùsJÐâõZp,­#F0âX= ‚@¦ÍÓ'ììä»’Xõ'sÍ›/+6lÙc+6Ó?Þ¨ÿÙ~£€lÙ³fÍ›6lÙ³fËÊÍ‹Úÿ}úëúòîÿ¿—þ27ëÀù©›6lÙ³fÍ›6lÙ³¦è?ï?#úò­ÿ½Ó|Çê¬ٳ`éÿÞ[oœŸ¬`ÙyY³fÍ›6lÙ³fËÎ5¦ëBiŸøÝÿÝR<å?˜pÐæüðó•?5?0oü­¡YèÚlúu¤ZëéQ4²WÕ`Ó™=÷9Ùç<áªùÇËšÝÅîº|Ë Ùë×ÖZ&«$‹,ÓYÂÔQ#Š—*j³q¹Îoÿ9ù»üÅoË OUÖí47EMF[+´§V»¹ž^UmÊËéFŸÐñ¯Q‘í?Î>mó%‡åçåy¾{ïñ6¡©Ku­Ùkú2Á=E¶˜Ž+°Žr’°5$“»þqÛÌΙæ<þKù—UºÖ—ËWÖÓi×—²n>§{•b–F«»Fj¼Ø’E3žÿÎ@yÂ[_Í 7ʘ¾k¿ò_åÑÐ绂úÒèØGu¨‰8˜ä¼VFSÅȇðÎuäÌO=þgiß—?•ºæ±¨Ø¿˜.5«»­Z6··šNšÔ¶`éF§R¤ºµHÞ§–z+þq³ÌÚÌÏÿ'üÓª\kRyOU,¯®ßÃYݳE®~'xêW›XS|‹~QÿÊaù¯ÿt÷L·Îí›,åcÓ©ÿUÿâ'<ÿÿ8ÿ¢Ýy«þqŽË˺' /¯´=NÖ-E2I,ê ‘ZnE|3ŠÅùUæ_8þ[ÙþCÝþWZèÚ´–VÖ/æ9dµ1ÚË Rn”Ř²•ä”âÅ©S×=À¿“|o`××Ì:èÔ ¶ŽÔ®>¢ÒG@íiÏÒ`HäÊE ëžsÖ<ù‘ù“¤iŸ‘ÞsÐáµM7T³½»ó5»ÇÊY\ ùAk+Fòлj’pž´ÌÝgGó/äUÞ‡¥kæIn£·ó,kX-nÏÃõ‹tNo$+³0äd45ÎÏä*ÚB²Øy“ÌÞǧ‹(‘uKŸ©£ˆ= âÛŸ ÅJuÏ"yOòÎ71ù7òâûʶz.¥å Zëß:CqÍïã¶f.c!v{°ÃÔY[ˆÞ¥…3¦ùëË?™¾gÐ|Áÿ8ÿªhv÷–úõÄë™íÌ6Ö‘[O(‘LÖÈ̱ àÄW›Ü²yÿ9q§.ù æ]%XºÚévЇbjDsDµ5ùgQ=ýHÿâ#›6lÙ²ò³fÍ›Ûÿ¼×?(ÿâX6lÙ³fÍ›6lÙ³fËÊÁúY¿ãà›"G9ÿv½9?Â>óAœKóþr?ò¿ò¶÷ó—›4˜oôÀ¦ãLŠî5 µ(«l;1¨4ðß<Ùsÿ?òfªÈ?)<¥æÿ=¯Cé§ýDõ7·¿KæùÊ/Íx"²ò¦…¡þ[Å(±êšœí}#BV©m%»[’@±ý’¥pÿœ\üìó»ýsó“óšú#!\ižXµú­Œöt£#hJÉ ,¬á*&™Ó´ùÁÏÉ Ìo<®ºç«Ä!×®®5 ŠšDgvà ~.4åµzg ü­ä+ùÞ×Oò^‰§iVö(RÔZZED¦¤…p¼ÅjkñwÉ|’<§œ¬Y¼I©Ï-þrÿÎþQ~~kQùÏó'AõµµŒG%Õ¤òZ¼àt3zE}F`ÍV¦ÕÏBùcËG’´‹?(ùFÊ ;EÓâÚÚ[ HãAàsÔ“¹;“‡™³f̓ôÏ÷ª/™ýGfÍœ×ó{óoË_‘ÞT¾üÈüÀº[m2Éù(–æSöaXŽr7€è*OLóüã_üüòóþrc_›Èš=¥ß—õ±’Ò Rh¼#í$%yo•aÓ¦{¨‚6=r³fÍ›/+6lÇ¡ÉÇý“ä³6lÙ³fÎ ù™ÿhÿãÿÄŽyÓóSóÊ¿‘º<~uüɸšÛI{”µW‚ÝçoQÁ p@M(ùò{ò³ó“þq“L>`›6’êÚÞµu{k©Üi—’5Å¼ç’ /œ:P¨ö®}6ÿœyó?åÇ›<ªÚ§ä°´òÀ¼•1m-¿ú@¹á/Åá¿Lõ—Þ?öm‡¹²³`ïøòÿžÿñ®Í›6lÙ³fÍ–sefÍ›6?ïÿŒçþ#€rò³g–ü«ù¦¿žxóíŸ4-jK1ëëzV¡¦Ú}v  ’Ú8YDÅã‘#Uu‚9Ïõ]Gþq£[Ôæó&«ùu¬Í©\Nn&˜è— ¼¤ò,@`*Ný3ÑVÿó˜ÞF´‰-m´o3¤1(DEÐîUQ@ÝÎ[æïÍ¿Èï>k¶^yó’õëý{Náõ[¹t;¾qúmÉvC¸¨8;óó¯ò_óelâüÅò~¿« =Ko_CºýÛt*G‡C¶Lô_ùÍïË‹øç´Ðtÿ1I›3XÍZ-Çîeˆ ÆV€Ž ŽÔ÷ÎwæOÍoÈÏ7ù–×ó̾J×o<Ëeé/dÐî½EôS`Bž'¥AÁߘ??’ßš¯e?æ“õýVM9ýKVŸCº¬mPvâEFÝ FüíÿœŒÒ¿3¼ƒ­þUþ\yoÌwšö½dúMŒii =ÀôÃÉ4ÅQ#ŒLkZ 9ê &Õì4û->âžµµ¥´PÔsŠ%F¡î* Í›Ûÿ¼·?8ÿ^Í›6lˆyãÉ6}°‡NÕZXnl§[Í>öݸÏgtƒà–2j :20(ëPFs«OÌ‹ÏË«Øü§ùç¨Cê_OÃF×ÄB(5D éã Ò“JXhUª;³¡Š8£B2²³fÍ›±³ý‘·@>g Îù“ÿ9%ùcùC%õŸæ™l쯴ؖk›$ç5ÈV¯ãVäÄ@<5å?ùøÆ³ùëæmSòÃþqŸÊ ¬yˆ\4Ú3êÒ­­´ÚtÖy.+2²Ê[ûµZ$r«§Kü¶ÿœšüÞ’EüÝó^›ä/.ȯptŸ+¢K¨[ɤkõ™c•Z75w¡=Ý2AäßùÀ_É_*=Æ¥©è’ù‹V¾Eúíæ·u-ÃK-K<ªªQQ¤bKqì(3ØZm¾io¤iÇkekA P¨EHãUvÜ€6'fÍ<þjù7òÄÚ¯æ¹e£5èv¶nÀÊ€ÅB«l ïLÃ4w1GunË$F’Æêj¬Ž9+àA¨Å2ò³fÍ›6^VÓ?Þ¨ÿÙ~£€lÙ³fÍ›6lÙyY³fÍ‹ÛúëúòîÿÞ‰ã#~¼›6lÙ³fÍ—•›6l¼éšûÁÈþ¼ƒëïtß1ú°«6l¼?ûËmó“õàÙ³fÍ›6l¼¬Ù³fÍœoKßþrMÿÀ ïþê‘àkË~yòwç˜2t_'7™´cJÓí!’ ëdŽ[zó —2Fi¾ÄuÍùkÿ8é{¨§œuß;¥×–ÎÌ:ªéÚ=ðImD1zcœ±sBò}©1Jô¦-?å7™?&<ïæW厙?›,ï4eÒ/íîo¡]@<2z‘L³Ü´hÉO…”µ{œïMÿœ|óߓƃù³¤YZÝùÊÏÌš¶¹©i1Ý*‡µÕ‡-¡–B"õcZn\!jüDS:’?çõŸ9\ù¯Ï?›2]è:·š5."´Ò/‚MkiiŠ¥–.HÎ@,üY—}Žy‹òÍ_—?˜6˜ÞLÑ_Ï1òëhMm{ ÞÚȲ™¡îZ8%Œ›™6ØS!Mÿœsó×å6‘äO7yrÊ×Pó–ïµ™¯´h.‚/Ôµw.ÖÖÒÌU9Aµ ¸SCF"™è¿ùÇÿËÏ1y~÷Í_˜ÿ˜ÐCeæ6êkvl`•e¶°Æ±AºÕ@«W*̵;ç?”{yÃó^¿õ7AÿtË|î¹³fÇ+5^£8‰ù1ªþ^}sNü“óDþTòýõäúŒšbXÚÞF·w”ÏÜ£º«°¨N\Wöi‡¿áÍOü¹—?÷Ó?êŽoð¿æ§þ\ËŸû‚iŸõG7ø_óSÿ.eÏýÀôÏú£‚!ò攉$¯ù›uHø´M3¹§ûç8Üzßç7–µˆü»ù›çÉl-5+çµÑµ‹mK{+–cX`̰ÎWbΫ>ÈÔκþTüÕBQÿ2îC èzgýQÊÿ þjå̹ÿ¸&™ÿTp5Ï埙<ÔJüÖó…Ï™<»Í%—K6vqÎñžH%{xÕÚ0Â¥ÔÎÐI'|¬Ù³fÍ›6_Ï+6loþòÜü£ÿ‰` Ù³fÍ›6lÙ³fÍ›-AcE>éé#M3""+;uREI šì7Ï(y¿þsËò+òÝbŸ]ódWkx%…F™o=Û!ZT¸DøFûxç;_ù̯0ùÚcù5ùcæ;ûýL¡ßê‹om¦Îþîi›ÖY&_‹ aµ@8ØÎdyà´×w¾Oü¾µ ¶’Â4kùeFÂJVà+PÑWÜVðmßüàv•æåOçžüÙæï/õF™ws ¼~¸I Á½R¦‚´ß|ì_–¿ó‰?”_”o§Þy'ÊöÉ©inÒÚêO%ÅØv$–gv!ˆ©«°Û=%;0KuTf4ýÚªWçÄÇ9Ÿ•ÿ7¼‘ç}^ãÊ^O×ìu-nÑeií-ÝŒ¨"n.H*âv4':.lÙ³fÍ›6lØ?Lÿz£ùŸÔpËÍòÏóø_)yÉüÏåÿ;ÍÒylÊÙÕÔÅýY¦ ƒâVqÆŒvjmŸ$ÿ-ü³æ?8yŸJòçåÔ2Ïæ[«¸–Á!!_Ö U`Ä€¼H©$ÐR§?iž^‚þÓHÓm5öç«Ccmër ÊábQ)ä65pwØm›/+6lÙ³e7C“Ÿû'ÉflÙ³fÍœó3þ:ÑÿÆÿ‰àߘ—ÞhÓ4Cò×LÓõŸ0ÄU °Ô˜$oB9’7šgÎÏÊOÌ/ùÉ)éú†©y#BÔgmRêbÞcխ่;TEK"· Ÿî³JÓ=wÿ8·cæm?Ê1þcêÞù‚MVîiâ‚í.ÒÌHÁ–ØK2€ìØg²¼»þñÿ³l=ÊËÊÁßñãÿ=ÿã\—•›6lÙ³fÍ—•—•›6?ïÿŒçþ#€²³fÅi#ÙG±#õ©¿ß¯ÿs}jo÷ãÿÁßZ›ýúÿðG7Ö§ÿ~¿üÎ]ç?˘µËØüíåI—Fó½©W‡T‰?Þ…AAmz«MnÝ òMŒo¿45/1Ý7•|ù¦Kå¯8Q¥L’è\%Ô ±žÖd$Zý¨Ô´‘ sΨn§ï#ÿÁi¸™ #z‚ÇÍ›6·ÿyn~qþ¼›6lÙxÿO³Õ­äÓ5‹ho,¦VI`¸dÕ…*ÀÁ¦p¨›Ì’Ãi1msòÞ k†Kªi0¶àÈAo¬ZÂ~Æ1"!« ÏOÕl5kUÕô»Ëk=”°º†dxxÈž`•š»Ó8Wä7üä·“¿ç"O˜È¹“ËÚ‹ÙL’‚­,u";„)àä6Ûñ§Äwè,ym¥D·z´ðÚ@Õã%Ì© 5MÈmöÏ1y—þsgòGË‘£ÃæÛmfwgAo¡E.¥2•¶–êåš(cðÔç*‡ó×þróQÿG~X~X(éS·ŸWóUÀÛMEÌÕ¥DJ 5[jäcó?òÍ—z©ù‰ÿ9Uù±©.h¶n×Zg—M>ÊöÑ*íÂz’3¼EÙIã°ùöò×ç1òTžf¸òÆ`·zèX¬onÕ®.ô˜ÖBÕ³™¨É!Z!“íqí…ÿ‘œz¿äGž´ŸÍO/r–çM¸Koê¼ksþòw(ãfƒÜgì?òóJüÚòžù—åwFÓu;ë(¨âAšz—Ñ5Q¶Œ•Ž™³fÈ÷œ5ɼ±åícÌö0 «3Nº½ŠÝ«I^™ÕèÄSmü3ñ»ùÏùÅæÏO5ß~aþaÝ=Ƨvæ‘òJÞ0~aV'„iÐ(ýyö+þ}%ùûæï3\jÞ`s}åÍ.ÂMFÆæf‘å´*ê¿WV$¨‰ù©µ<{ÓíÎlÙ³fÍ—•›éïTì¿QÀ/+6lÙ³fÍ—•›6lÙ±{oïâÿ]^]ß÷òÿÆFýx6lÙ³eåfÍ›6lÙ³¦è?ï?#úò­ÿ½ó|Çê¬ٳ`éÿÞ[oœŸ¯ååfÍ—•›6lÙyY³fÎ}ç_ 4ÜÙù‡AÔæÐ<ϧ‡ŽÛVµdBO·o,l@–~ …€Y(ýFGÿå]þdú&ãþVÞÏÃþ8¶þÿ~â?àÌŸüº7÷·ÿª¹¿À?™?ùtnÿî oÿUs€2òèÝÿÜßþªç0óåço“o-/ôß9^ë^Vd'RšÓI·[Ë&­7¢ef¸ûª%õ* ­3 iVóߘ,-õýój{Í2í–÷0èÖíŠ|—¨î:ƒ±àÿðæOþ]¿û‚ÛÿÕ\±äÌ‘¿ü­¿û‚[ÿÕ\1ü¢ü¨ƒò“NÔ,N­¯jºÆ£.©©êš‹5ÅÄ€(¢‘¢-M óªæÍ›6lÙ³`ûo÷žçýTÿ‰dXÑì|Ãas¡k¶Ñ^i×q˜§‚tާĪ:ƒØïœ6Ê [ò#Ó°®³æ"MÍÚâOWQÕtÉ@¯à —ÏØ„ |D¦w=#X°ó ¾» ÜÅy§] ’ ˆ:H§¸#¸èGPv;á†lÙyY³fÍ›6lÙ°}¿ûËsòþ%€3fÍ›6lÙ³fÅc†IªaFzuâ §ÝœÓÎ?œ~@ü½·ŠÿÏ~iÑ´›i¤0Æ÷7ЀÒ(©PP:çó/üçWå>›,ú?’ïo<Ý­ðÆÛB±¹º†òáÀáoÔq¼AÉ Ÿ€ý¬¯üäoüägœ ºü±ü•ýgoD¹O5ê m3ÊI?¹V0Uš7ÅßMù7ÿ9ù·h~hþ`Ãå'P"îæÃËî—Ö.*RÚ;Ï\‡E4Ãí€íÿçÜŸ–Ú‰Ÿæ^³æo6ù€¿)õMCR"IÕiÁx¿Âª8Ó–ã=ä/Éÿ ~_Ëwqä?*hz,ÓÚ˜æ{ >ZEMÔ9UÜ¿Ï'++„"0((t¦'›6|·ÿŸ§~~ù·ò‡ÉzG“<†ÆÎ/6}jýJ#"OPqýÌN„õCDîT6®~v<—ç]oò÷\²ó¯“¯f°Öl&Yà¸ÙYMz©ƒÑ‡qPsöÿ8ëù“ª~pþYygó?ͱYjÚÍ—­s*Ëurœ”>à8^T÷ØÓ;6lÙ³fÍ›6l¦½Q|Ïê86lù·ÊšGžô[ï&ù¾ÎCFÔah.m§Etea±”î­J©¡Îùÿ8™ùgÿ8çy{¬þXirE©_F±=Ýä‹<ÑÆ:¤OÁJý°>Õ†zC6lÙ³fÍ›6QèruAãÿù+Í›6lÙ³ƒ~fÇZ?øÀ¿ñ#©Ìsû5Þ¹ñSYòF™=Ö§ù›ùã¥yŠþãIó]Ý·™BOx&8?T–ÔqŽŠ üóÝ_ó„6ŸUü¶g¶³žÓJ›V½—Mk¨Ìw3Ù—ýܳV¥˜¹ÄÓ®{ãË¿ïû6ÃܬÙx4¼_óßþ5À9³fÍ›/6V^VlÙ³eå`ãþðøÎâ86lÙ}2³fÍ›"žnò>ç˜!µó s -\Éiwi<–·vÎE AqY#ä6`¬ Žs 3ÏúåµíŸåÿæ×Ön£™¸Xù­ a,li_¿Â¶×¤cw5IÎöÊTñmˆÊÍ—›[ÿ¼·?8ÿ^Í›/+/04ç_%ÎMùCÏÿš>dÿœuÑRs¯ùrßÔžyfÚæ”G“éòÔ|`…3ÂÿóðÍ _ùÅ-'~MÍúïÎö—6÷zT­i5ã-äJŽÜL„Uõ rEÏ‘_ó‡?ó“—_ó‹¾~Ï3Ãq¡ÝA-®§§ÀȯsŠ  àñ+ Vä(h®ù÷¹5¿ùÉŸÏ{+]kÈCEü°Ð®êW7ôÔo¦öŠ áh FÔøËà7ÁºGüá+y±ÍÿüäïµÏ?M iŽž.§Óôëk·?¶Éo*Ñxü *Ó¶zgÉŸ‘Ÿ–ÿ—3I}ä(èšEÔ±,Íia ;Ƥ¬ÜI;€}ÎùÕ^G’ž£  äkAíŸçíwãOÓ?缜'•î êZÛ[¯¨Šý^¢–F²XV¹ðƒü5«ÿÕ¾ïþDIý3îüàçüãüãïüä—’üå䛋9hm¶¢«^¡ºRµ[´Œ:ðV? (6ϰ?“”~Wü’Ð¥ò/孽Ş„‚i㵞îk¡9½331Ec¹Uضýrv:fÍ›6݈" \ù'ÿ9/ÿ>­Ò7<ÔÞyüÕ4ï)Åx¥õ >h%h Á52À#$ ~¬UAÝzœ÷Wüãüãw”ÿçü©“¼›oêR"6©ª˜é=ìànÌIb¨?b0x½*Nz 6lÙ³fÍ—•ƒôÏ÷ª?ö_¨à›/+/+/+/6VlÙyY²ñkoïâÿ]^]ßûÑ/üdo×ófÍ›6lÙ³fËÊÍ›:nƒþðCò?¯ úßûÝ7Ì~¬*ËÍ•ƒ§ÿym¾r~¼—˜fÊÍ›6lÙ³fÍ›/啃‡ûÂã8ÿˆàÙ±ÊÅ%ØŒáú¿o|‡rÞtü¢Yx#Ë>¥å¯Yþ§}|OõHÏ$µ¸åW_ILÇ‹ÆO|“ù ~bض©å+µŸÑ*—vÍE¹³”Š˜nb©1ȧfSÜR¹2Îßæ±æÝ{ò÷ò×É7¾`ÿ 40jZ”שaj.e^~„,É'¨È…YþÍ9 °ûü]ù¡ÿ–Éð¡‹þÉó‹¿4òÙ/þ1Ù>oñwæþ[%ÿ†/û'Íþ.üÑÿËd¿øPÅÿdù¿Åßš?ùl—ÿ ¿ìŸ7ø»óGÿ-’ÿáCý“æÿ~hvü²_ü(bÿ²| ó?çš¿/´»Ÿ8þeùóMòÕŠz——š~££4)ÓŸÕÖ8‹ ý¶æ8-[zgv¶.à†òX§Š9ø¤ŠOÜF[¼÷_ê§üKcÑÚ3Ê2Tô¨ðΪù]ò%üžoü¤¸ÿq ÎæûÊ[^HÕ2Ék) Öó0ÝbDRI»nÕÎ…äÌ óɵ?)ݬÆ©yjô[›9XTÃsIŽEèÀ÷ï“,¼¬¼ÙY²ò³fÍ›Ûÿ¼×?(ÿâX6lÙ³f®:e6Ñ››¯ÜÀ¢­$¿îÍ@>üã^|ÿœ‡ü°ü²yìüíæíËQ·¶7PkØMԱЕEÊ®ÏJ"þÑÛ<¾?çâžTó_”Kóœuu«Ícm¦˜(¬¥«%@$-8÷놯æïùɯÍÛEKÐt˽+UoR×QÕækFÂcðÏfÐq2=8ÐýÜ»a,ÿóŒßf+?çGç½ÝŒÑ¯ %òä1iѺ}C0 oÍ«@¦ÄWqÓ:Ï–ÿç¿#üµ+^KåXõ{‰" !×.n5$,hZEŽåÝØŠ–QZV™è)~^yWÈvqè~DÐtÍ"Æ)X ²³Š%YÔ²ÑjžàçË¿ùÏ_ùøµÇåE쟔_‘×BO8ZʇRÕÈŠâJnÖÈ’ 'i à©ÆÿÎÏÄdüܽò‡óÞáÍ÷R¹Óu~0à Ùo³lñ EI;FT} }u ƒC±°vŸÖoøÀøfÍ›9§æßå•?<|µwäÌ>;í6åXÆì¿½¶š„,и£+©ð#øNÇ>WþPÿÏ¡¬<¡ço2þiù‚ËÌ^T´‘å].&ŠK‚î–f,NîšýÔœû'ggm§[ŧé°Åmi,Pà Ž4QETUÀ —•›6lÙc+6Ó?Þ¨þgõ3fÍ›6lÙyYyY³eå7C“šÿÔ>JófÍ›6làß™ŸñÖþ0/üHç?y°OŸ9tŸùÈ?Í9y¾ÓVÑõ#IòT¾cºòÊé-ntœ‹‹‡1PXEjS ÏLÿÎ6þijÿ›~Uº×<ØmäÔì5[Í.K›EáÇÕ߈•°?!òÏayb8ZƲËÁ½FÛ‰?«$·ü´Â6oFÛþZ?á/Ѷÿ–øFÍèÛËGü#`¿Jßêtõþ[¯×LèÛËGü#fôm¿å£þ²ý+oùhÿ„l¯FÛþZ?á/Ѷÿ–øFÊôm¿å£þ³z6ßòÑÿÙ½oùhÿ„lÞ·ü´Â6oFÛþZ?á7£mÿ-ð›Ñ¶ÿ–øFÍèÛËGü#fôm¿å£þ³z6ßòÑÿÙ½oùhÿ„lÞ·ü´Â6 ô­þ¦¯ðúÇ~¯˜ Ѷÿ–øFÍèÛËGü#eˆmü|Â6W£mÿ-ð›Ñ¶ÿ–øFÍèÛËGü#eú6ßòÑÿÙ^·ü´Â6oFÛþZ?á7£mÿ-ð›Ñ¶ÿ–øFÀšŽ“¦jöw6¬ÉsawÁq‘±I#qFVãéðÎ 8¿ü†.¯5+gò¾Òž´J÷š")ýÛ)EW¸µQ´…ýY×fPs¶ù{ZÑ<Ù¥ÚyŸËzŒwšUüBkkˆ‘øÈ‡¸¨|ˆÛ=oùhÿ„lÞ·ü´Â6oFÛþZ?áÁ¸¶¸z‚c©àvßz6ßòÑÿÙ½oùhÿ„lÞ·ü´Â6oFÛþZ?á7£mÿ-ð›Ñ¶ÿ–øFÏ+ÎgÿÎ@ùÆ?Ë ßÌxÏ™.¥[f¤ŒÜ¸ä]Ö£d@Ì øy kLü£y7ó;\òGœ¬ÿ5´‰©®Z_þ纫È_›«§Âõ!€¦ÄÓ>×þVÎ%YÏÀôÏúùÈ/<½Î¯©Ç¬þ^‚(’ÁË•¼é$$rNC‰Rj7,Ç|éÿôGOÉïú›<Í÷ZÿÕ ú7ùAùaaù=äý/òËOÖnõK #og=ìQ‰–j±ŸIX-MŽG¹9Ò}oùhÿ„lÞ·ü´Â6oFÛþZ?ááˆqK…§¼5?y§¯ü´'üˆóN%)‚_·p»xEOÔ/e¸õ¸Ï_ܽ~°ñÀ^·ü´Â6oFÛþZ?á7£mÿ-ð›Ñ¶ÿ–øFÍèÛËGü#fôm¿å£þ²ýoùhÿ„lÞ·køFÊôm¿å£þ³z6ßòÑÿÙ½oùhÿ„l¿BÛþZ?á+Ѷÿ–øFÍèÛËGü#fôm¿å£þ³z6ßòÑÿÙ½oùhÿ„l§En.c+?#½;!¶ÿ–øFÍèÛËGü#fôm¿å£þ³m¿å£þ³z6ßòÑÿÙ½oùhÿ„lÞ·ü´Â6oFÛþZ?á7£mÿ-ð›Ñ¶ÿ–øFÍèÛËGü#fôm¿å£þ³z6ßòÑÿÙ½oùhÿ„lÞ·ü´Â6oFÛþZ?á7£mÿ-ð‹[EmëGIêy­ñÇ]Elf”™èyµGÛ|èÛËGü#fôm¿å£þ³z6ßòÑÿÙ~·ü´Â6W£mÿ-ð›Ñ¶ÿ–øFÍèÛËGü#fôm¿å£þ³z6ßòÑÿÙ½oùhÿ„lÞ·ü´Â6oFÛþZ?á7£mÿ-ð›Ñ¶ÿ–øFËôm¿å£þ³¡è¡VÊ!rZliJïÝb(öc$ÜZ¢£4Û }oùhÿ„lÞ·ü´Â6oFÛþZ?á7£mÿ-ðƒ&ŠÜÛ[ƒ=(x÷À~·ü´Â6oFÛþZ?á7£l?ããþ³z6ßòÑÿÙ½oùhÿ„l¿FÛþZ?á7£mÿ-ð•èÛËGü#fôm¿å£þ³z6ßòÑÿÙ½oùhÿ„lÞ·ü´Â6oFÛþZ?á7£mÿ-ð—èÛËGü#ez6ßòÑÿÙ½oùhÿ„l"·ú™‡Öð=xôÀ~·ü´Â6oFÛþZ?á7£mÿ-ð›Ñ¶ÿ–øFÍèÛËGü#g0óÿ$Õî£óßµ4ï=XÛ›k[›ˆœÚ\@ƦÚò4¼Dî)*6êâ§ä<&½<þLó§¥ùßLŽ6¿²PL3,„„¸´rO© ”øA>¢«¨##ß‘Z¤z³ùÇ­HXlüÑ5Ã*ìXG¦[±½ö¦ÙÎZù<§mùÍæ"_ZyUŽyo㿳šx­ä“Ó›t“™‘U`;g´ì/aÔ­¡ÔlÛ”¤±µ)Up¸çœtÏ4ùÓ[¿±òO“¦¼òæªÉ¥MªËkf‡«"BÏê^[mSM†-­þvy–6êÞBü·òŒÚðÐÖ×ë÷}mkÉr¥•Jᘪ‚[jg¢¢…ºÜÞ¯¢þ˜y ð4« x]vâ%yÏÓÓ<ï¦ÅßY¨&ÑÉ qfäžpÉM”ŸQ UÔ;Ѷÿ–øFËôm¿å£þ²½oùhÿ„lÞ·ü´Â6oFÛþZ?á7£mÿ-ð—è[ËGü#ez6ßòÑÿÙ½oùhÿ„lÞ·ü´Â6oFÛþZ?á7£mÿ-ðƒ`Šßê÷OPBTð;|X Ѷÿ–øFËôm¿å£þ²ÖÞÝÈUž¬z”ðÙÂâ›È¢‘º,¤!? Äò?žç9"?/Œðj~m[ûÛk–´šËKµžæá$BCÕBÅJ[•:R¹ÏãÿœÌÖüåÔÿ&,üɯh·¡ãÒuy– kyäûÞ9%Y5“f¨ˆ$vÀi¿ó™^p÷#ªy3òôZ„ÙÂÚ×ísúÇS.]郿èAt2(ócóÍžd²ºã.©¥Ëq6W2ý¶Ñ…%HÄŸ`@ì—_ó‡_’Ÿ•VñÙy;˶ Ãt/#ž÷׺&¡HÄÐqƒ=54±ÍS%È©5$EÄ׿Èwž|Écä_-k>z¼g¹ƒEÓîu!E£È¶ñ—*¥¨4¦ç? _ó‘Ÿó‘Þlÿœ–ód¾{óÌÊ¡†ÂÎá ¥¸5XÐT“âÌijÉéŸmÿç×ÿó–^aüê²½ü˜üǬßysOK‹O€öˆâ?Fj‰”°àÜkƼ‰4Ï®–ñ°qq¸ ý†íŸ›Ïùù/üᦽù{æOóóÊlú¯“õûÓ=ÛíëÙÞNÕdt §Óf?»aËÁs϶¿ç 5ïÌ/4韟¾lgÒ¼¡ _,ö·­yynÕTD*ÇÓV¼cÇÁMsôˆñÛ»7±'ì7|e¸2ñž¿¹züaã€D6ßòÑÿÙ~·ü´Â6oFÛþZ?á7£mÿ-ð—èÛËGü#ez6ßòÑÿÙ½oùhÿ„lÞ·ü´Â6oFÛþZ?á7£mÿ-ð›Ñ¶ÿ–øFÍèÛËGü#eú6ßòÑÿÙ½oùhÿ„l¯FÛþZ?á7£mÿ-ð—èÛËGü#`Í:+qsIù5Màp£mÿ-ð›Ñ¶ÿ–øFÍèÛËGü#eˆm¿å£þ²½oùhÿ„lÞ·ü´Â6oFÛþZ?á7£mÿ-ð›Ñ¶ÿ–øFËôm¿å£þ²½oùhÿ„lÞ·ü´Â6oFÛþZ?á/Ѷÿ–øFÊôm¿å£þ³m¨kqÿÙ2áûóýÑàzxä›6lÙ³fÎ ù™ÿhÿãÿÄŽpŸÌÌ=ò³C¸ó§žož•m@ÏÅÙ˜ÑQAfcØ\ù…ù€Ú7涪ߘžmü€ó i²¨yu{k…€Ij¦¿Zxß›7ˆƒñ‘ðõϤÿ”ç“|Çå-7Sü¢'•Œ~´vñz!8lUã +&ß 5zç¡|»þñÿ³l<Í›6ÿ/ùïÿàÙ³fÍ—•›6^VlÙ³fÁÇýáñœÿÄplÙ³fÍ›6lÙ²Á§LâÚç’õÿ(jþvüžú«I|¾®£åûµ+kw*neµed[k©GÂÒ0tcBË\œy;Ïz7žmÌÚ$áoaZ^iÓ–rÅ㞣¡VÛ‘P­ÕI&°}¿ûËsóõà ÙyYó—ž<·ùu§·˜0u{-KQÈÜ_L±) Uòzâ +¾x+_ÿœÎó¿æÕì¾Sÿœ0òdÞc‰—Ó“Ìú¢Ëm§@\HµOPF VPROP©éÇ"çüûZëó¤/š?ç$ÿ1õí[̳9˜Ãd±‹+_Q”PÇ1”) (YV 4È÷ýËò»þ¦Ï2ÀZÕ<õüâ÷üáÆƒÿ8Ÿ6ªÞGó­©Xë ¹³¿XbH‰á*˜ÕO #ž¼ËÊËÊÍ—•ƒ¬Ýÿñÿ†³fÍ›6YÊÍ›/+6_L¬Ø?Lÿz£ÿeú޳fËÊÍ›6l¼ÙY³fÍ‹ÛúëúòîÿÞ‰ã#~¼›/+6^VlÙ³fÍ›6tÝýà‡ä^Aõ¿÷ºo˜ýXU›6l?ûËmó“õàÙ³fÍ›6lÙ²óefÍ—ƒGûÄã8ÿˆàÙ³fÍ¿<~^è˜vkeæ;e7P6:ŒAVöÂBAõmf ´OP7FÇcž\ü©óúùçósɘóÉ%ôúÍÔC[ú£Á¦Ï)ÒáX£y˜²Gpê*ÊÎo³Jœ IòÙ¼ÿœ´¼‹óažâßOK¸¼±,–’E4°Mê%‹Ãzî²2„(>-úgÒ-+óó:Y´k?ËØÎƒyae5åðÕà·6o,A¥lÝ ‡Ò?ZïÓ¦èd¯-¸ò¬Ä‰ÁqסØäEóî½åF?(þp[E‹2ZižhI@¶Ôeý•¸‹â6“0Ú²¿^¼)°Îäñ´lc‘J°ê¡ÆfÍ›/+/7]‡\‡yßÏz/å÷–õoÌ1ÝFšFó]HŽ­F„o¡5’´^j½²ÿ8õùÕ£ÿÎGù&Çó?É‘ºArÏ Å¡<ä¶ž6£FôŸn 0Üd§Í?œž@ü»Ó¯¯¼÷æ#K‚ "†_^ò"é!jhÕ‹†¯b»wÏìf^l¬BêÒßP‚]?R‚;›9Ñ¢š ”\úÿ8“ÿ8•å¿ùÅo,þ‹Ó êiÔUÕž%Wf¥}©R°¡ý’ÍÈüG=e›Ä‡¨"£ñÍ]©áØm•ƒì:ÍÿfÍ—•›6l¼¬Ù³fËÊ̓ôÏ÷ª/™ýG ÙyY³fÍ›6lÙ³fÌzœÙ>K3fÍ›6làß™ŸñÕþ0ø‘Ï›ÿóŸ2µ·´;ÿ«\]ÛÚù£M¸¹†Ú&™Ú˜³üµؘÿŸ„þ[ÿqúÍÿWãÃÓýxñ¥8ñõ)Ol[þpGŸò÷V»6×\y›S¸·†æ&…Ö)2ü¦Ç Û>‹ùwýãÿfØy›6XÁ¿ñåÿ=ÿã\›/+6lÙ³eåfËÊÍ›6?ïÿŒçþ#€²³fÍ›6lÙ³fÍ›9_œÿ,aÕ®ŸÎžHxtO=©FMZ8¿Þ•N¶÷ª´õ¡qðüaŒgãO‹y3ó0êw>Lóf™ú͖ѬßPõþ±Ôg1T3"¤¾^¹Ò0}¿ûËsóõásºD<ì(ÕݶUEf'ÀIöÎcùGùÉå?Ï-o8þ[^‹í6Þò{ [áªË ¦áK :ÑÐ×âB‚¹0óW›´/!éÒyÏ¥ž¥D¼šæúe…)P ˆåBEiZgÏÍKþs_Í?z„¾Aÿœ;ò•î©?¨`—ÍZªzZ]µ}Dæ ¬ ¨e$'~…p–ÿþqOMòÖ—ùéÿ9ãçóíΗm-âé×7g¥Å/e†WD.Ò/«I* !Îáÿ83ÿ9 ÿÎAyk,èö[¸Ñn䵸ѴïMbŠbðH4@Šà•§ÝXŒönlÙ³c•y~¹?@Ï’Öóñ»WþrBßòÃIºYÿ+禊³¬q|zƒ5ПîýO‚¼ééü\k¶}ieâJ’ ;އåËÊÁÖ?îÿøÀÿÌٳfÍ›6lÙ³fÍ›6l¦½Qÿ²ýG Ù³eåfÍ›6lÙyY³fÅí¿¿‹ýuýywïD¿ñ‘¿^Í›6lÙ³fÍ›6lÙ³¦è?ï?#úò­ÿ½Ó|Çê¬ٳ`éÿÞ[oœŸ¯æÍ›6lÙ³fÍ›6l¼¬Ø8¼'þ3øŽ÷ÊÍ›6lÙãMC_oËÏ1~aù#ó'òó_ó”<å¨&¯ms¡Øþâ–Ú8 Иý)c1rYTŒà¾Mó‘ÿ"ïf×¼ËùAækÿ)ÚVêÛV¼òu¬7ºS«…Ž"êÄ΄IY½E`KòåQí7þskOÖ- Õô˯Ì;«¨ÖX'‡AWŽDn…XOCü:d!;|ˆž`?˜Iù#ç1ævngSS‡ëE¸ñåêúœ«M«Zåëÿ¾DóN¯œ<Ëù#ç;ýrÛ‡£}så8e=3Tã#HXq;öÎ…ÿC‘éùgù‘ÿ„øÿªÙÎí:ü…e¯¿æŸä‡œ¢ó3³;jIå(è³ 3DœªFÄÖ§kžÞIó³oç={òSΗšõ§«ßÜyR.#âj¼di vßnدæ_熭ùëå-sò‹É¿—þmÓõ}O¸²†ïÌ:èí>Q/-ÀiJÐnªój.Õ®zKJ¶{6ÏJ˜†0Ú[ÛÊ:£âTmPHïÛ!šçäÏ“ü×-Ö½a%ž¬R5{í&ê}6æU*Ë-£ÆÒ¢lU²:dNò׿—¤úΟ®ÃçË4{acÓnU¾•Ì1È‚4,K1ïƒ4oùÈ/½ïøsÏð\ùG_3ÓW_N)Ú´2ZÎh²Ûò0Ž¿Ê3¶Z]Ûê0-þ™<7VŽHIíäYbb6!] SCÖ‡l_6ëšæm>ãËþb¶ŽóMº^3A*òVA §uañ)¡á÷·š·ä?«/Õõ3yw_B8=KýOHjU̯+.-îÒ¼œáÜqe¥;Æ›©YëVpk:-ÄWz}Ôk,8xäFèU†ÇßÀìpºãÍ:-ž¯käû½FÒ-zö.-¬dÅÝ#'‘£ ÃÜÙ±ïE]L [¢—i_áEQÕ‹€É4Î=çOùÈ/ÊÿË© ¶ó·œtM>[˜ÚXVKèItCBG=öùç†?4?çéþBò¯—¯¯<Ÿ¡yŠ}yÑáÓ†¥b¶–+†RîJ¨øÀ KmÓ®|.Ô?ç&¼ùªùXü¡ÔµK‹]Ö³|n%iåñ õ*¥þ6âG6§*á¿üãæÞæÝ7Éš¿›µß+ùCV¼Ž+éôJ[5…ßàK‰8º)Ö­]ø÷ÏÒ§’¿ç¿$tT_4Üèù›Z«K«j÷Sê+~òý»™"šI!f’¼ƒPÓªœïžRü½ò§-åÓ¼‹ éz5¬ò eŠÂÊä˜"€X «“'‘Þž£ùšã3fÍ›6lÙ³fÍ›.™X>ìßñðé›6lÙ³fÍ›6lÙ³f̓ôÏ÷ª/™ýGfËY³fÍ›6l¼¬ÙxÓÐäêŸõ’¼Ù³fÍ›87ægüucÿŒ ÿ9†G« £¿Î¹òOæV‘ùíÇ‘µÔ£Ó®^Îí¢—Ò 5Z|*=òQpe/þ“^Tî)¶M<»þñÿ³l<Í—•ƒ¿ãËþ{ÿƸ6lÙ³eåfËÊËÊÍ›/7\Þ!ÿÏüGæÍ›6lÙ³fÍ›/6VB|ýùsåÿÌí>ÎPI-½¼ÂâÞ[yž á–”å‘ÃÜ}–èÀŒ‚iÞÕ?/®aò—æø–h§ºK]3̱FŸT¸I#½âA†è‘À•ˆBÇ⪃žüôÿœíÑ?#¿8<½ù¨­¹Ó/B1^Ê$ç`Óÿ¼áiµ¡ä¢½Q…7®qùù÷üåaü«òÊ~Hùæx|Íæ;t¹º¼ƒÓhÓMrAŒ1$†šŸ²*}¡Ë>BÿÎ%ÿÎJ~a~MßÝþ_þVjz~”þmšÖÌßêq¼‘ØÉ΂xÀ䡈·þ÷Mó« ³f̓§ÿym¾r~¼›6lÙ³fÍ—NÙY³fÎOùáçÝKò×É—¾iò½¤WÚãOi§éÐ\7 ÝôË&SPDjì Ð×L[ùþrM¢®µß"¬Åº®›|T57™7ôÅÀ_ó‘ßõò7ýÃ/ê¦+þÿœý_ôÿ‘¸–çÿËî´§û÷ÿÿÎGÕÿÈß÷ ½ÿª™¿Àó‘ÿõò7ýÃ/ê¦oðüäý_üÿpËßú©›üÿ9ÿWÿ#Ü2÷þªfÿÎGÕÿÈß÷ ½ÿª˜Ÿ–|åçO)ùÆÓò‡ó®++WZ²¸Ô4WE·x¬\Zïqm*Êí"ÊŠD©Á•€­AÎñ—SØœR)¤…Ä‘1§cœSòw™¿//f׿&ÖÞãD»¸{ýcË·å,§ûÇÓd¨K ©d‘ý&`8,Nu_)y³LóÞ›|­3Ϧ\PÎ¥$ŽD%^)î²#xô$Pä‚§Äýù¹÷åÔøŸ¿*§ÄýùªORr°}·ûÏuþªİÔlíõ{UŠ;>í sÁ*†IõV±Î,¿ÚNƒys­þVjz“¯®-ÂiF-¦>h.’hãP¬aTv©«` ;Ìßš~J&OÌÍÏÍsš-Ï”Çq0¢ÆmnäB⢭ j Ò™;ò/æÏ•1–Aå}AMä7Î{+•0]ErZÀäËИù¥z1Α"4LcaÔæ?›œ¾Vü„òë~c~dÞIe£Es °’(šYiOªª Mc]¸©ï¶Bu ãÈVsþj~PÞ³ùväwSФãõ+›W‹Õžêв‰¢¸1ÑÕ ¬'pcäÕÏÎWæÏüæf±çÏø?ç%|²ÒÁy hðË^¤VÕ}&*YÕŸv,G>» ûÃqÿ?ü†‡J‹]O2}nöHa”é}¥Ìלå´H¬ŠŒÑ’Ct $…?ó™šÿŸëß‘•þcó/–½pmìŸë *ñˆ¤˜5£â¥A¥ÿÎcùæA­ªùCÈ671]é±5åÛNò¤¢t®ÁGÄ»U¿çtï8Ó¿œ¾{ó^¹®jÉ­Ãmu ¶vÌ~8Ö$…8~ªTÒ´#;Gå×üáÿäçådwV¾Jò•¤i{$o/ÖäšðòJ…â×å@©ØûçÈ/ùú¯çf­ùæ»/É_(Ássåß*’nŒV­é¾ ËÄñn¿t‡Ó <Q^¹òb?)kA”ɦ^”¨­-ä­;ÓáÏ»’ÿóíOÈoÎ%hÿ™ZF«æÛtÔ`{i%¶W·¸M¥‰ƒ[ƒTmª*bsëwåWmÿ+<™iùs¥ßÞjZ~m¥¤÷þ—® Fø#c"ƒ`xò#írW›69ÈÂ4f îsâOüæßüü¿Tò†¹ÿ*Ïþqšü[Ý铎üªÖ¯.5S̾išòîi'žF–ί$ŒY˜þã©$œÿD|ü¡ÿ©‡Íò6ÏþÉóé§’<®<‘åí3É«}u©¦—k¤w—¥ZâDŒqOP¨ J­`6(Í›6DµËÏ'ùŽéµo3yoEÔïÝUZæûO‚yŠ®Ê º– €®ØWÿ*ƒòïþ¤¿-Ü"×þhÃÍ ÉXò¤²]ùKAÒ´‰æA²iÖPÛ<ˆ B¹A`ô=òK›6±ÿwÿÆþtÍ›6lÙºæËÊÍ›6lÙ³`ý3ýêý—ê8fËÊÍ›6l¼ÙY³fËÊËé‹Zÿúëúòîÿ¿—ývýx6lÙ³fËÊÍ›/+6léºûÁÈþ¼ƒëïtß1ú°«6lØ:÷–Ûç'ë6lÙ³fÍ›/+6lÙç¿ùÊùA ÿÀ—Ë_÷R‹:¿üäWægš?/×ÊúWåéÓ£Ô|Å®C¥4ú”Ï)"3Å,LÇoç |·ù“çÿ.~fX~Oþd~ˆÖ-u}.ãQƒQÑíg³6­náLsÃ$÷5W¯ÂüWá¡9Ñÿ<¿4fü©òôzÆ—l—šµõí¶›cÅ ÷/Á]Èý„ûO¸Ø}¡×8n—ÿ9 æ_*[y§Y󼺙¼µ é©G¯ùn@–ÿYCÄéóBgºt˜’_OØ® òçæ&‰æ(hŸ›öÚGèŸ<ÚM%“éÐÍ –i™m¦2M0›”fœÕbÛ¶zsΖžf¼ÓýËëÛ SšŸ[Q´’î´=8æª{{xñï‘¿?¼øò~`ëÞlºÐ5?&ù2ÚHaÕ4û+›5¹ÔbBÓEûÛ™Ž#Df^­°;gGÿœ{üÃógæL6ºï˜|ÓåRlc¸»Òô+wúÕ¤“(*²Jog)ªšÄ¼ˆÚ˜WùÉÿ“›òËþ`¼ÏÿP±gX2ò³tÜgógåƒ~–“ó7òæ_ÑÞqEæñ+a©qZnâAi¯^JÁXòUâO<‹ùoç)%Ñu+ ­ ÌÖщn4}@qœDvõ¡4hyT ½¹q¨Î‹›6lØ>ÛýçºÿU?âX6l°HÜm8þ[y[ÏÈçÍšM¥Õé‹ÑPô•o @j z‘Pô*GSãœóLüªóg½H(¼ÉêiòÝèþcŠMB(ÊüA-%YbxšV¨wÈAƒ??¿óðoùËmwó×]ƒòÎóN¶Ò4ß+OìßñððÍ›6l¼¬Ù³fÍ›6lÙ°~™þõGó?¨à—ï•›6lÙ³fÍ›6lÙG¡ÉÏý“ä³6D<ëå»ï4éãMÒ5{­Q_ë6a ”WãPç”?*n<Õ©þbë²ÅæýOQò?•"k;ļŠ7Z^oÂE„…hµ±"?“Þ~“óê-K[üÅÔ!¿½Ôîš >(â[A ÌÂ(¥µPÖ¤íOR¿óæ×š¼Ñ¤ùKÌ]Ó¼¨ÑÙ¶ñG!¹¼h½RÒ–÷b¡xsòÓó†0~\Ûþhy¸}WÐŽT¿(¥©%¼¦eU£2Ô lBõ_=èߘ“ wÊ“4öq¯ ÌÑ´d:š‘Gô=p½ƒ·Ï›ºçüãŸæ—”5‡OÊMsÊóè:~¹/™£]ZOBæÖâu`É?ä-•wmÿ”S=gùùY/å/•›GÔ5µmKR½ŸV¼½·@É=ÑäÞŽ¢‘Jè3Ö>W´–âÇœ+Uõu$_£nÁ ߣn}ã7èËŸäðC7èËŸäxÁPŸêžŸËÖ¯QÓŽýsüƒï¿F\ÿ ÿ‚¿FÜÿ'ü0Íú2çùüÍú6çùÞ3~Œ¹þQ÷Œß£.Á ߣ.”}ã7èËŸäxÍú6çùüÍú6çùüÍú2çùüÍú6çù?á†oÑ—?È>ñ›ômÏòø!›ôeÏòø!›ôeÏò¼`çÏõ1ËÖ'¨éÇþŒ¹þAÿ3~Œ¹þAÿ3~Œ¹þA÷Œß£.Á ߣnÁ ߣ.Á ߣnÁ ߣ.Á ߣ.Gìø!›ômÏòø!›ôeÏòø!›ômÏò¼fýsüƒþfýsü£ï¿F\ÿ(ûÆ»ƒôu¼ºŽ¥$VÖvèÒÍ<Ò*G(«3±4 RsäÇœìuOùù™ãò‡“Αùå+×7Úî·v§‰[eZ#*Óà,ç€<èñÏVè¿óî/ùÇí7KŽÂëÈö÷“ÛEFækÛ¯Vb6.üe cÔÓlšy#þp·òƒòËZ¶óŸå÷”bÒuË6-Õ½ý×%¨¡L¥YHê¬ žã=tÛ“¿÷Œß£n}ã7èËŸäðC7èËŸäxÍú2çùÞ3~¹þAÿ3~Œ¹þAÿ3~Œ¹þAÿ3~Œ¹þAÿ3~Œ¹þQ÷Œß£.Á ߣ.Á ߣ.}ã7èËŸäðC7èËŸäxÍú2çùüÁ–Z|ëërQ¼,ã®ýsüƒþeþŒ¹þAÿ3~¹þAÿ3~Œ¹þAÿ3~Œ¹þAÿ3~¹þAÿ3~Œ¹þAÿ3~¹þAÿ3~Œ¹þQÿ3~Œ¸þA÷Œß£n}ã7èËŸäxÍú2çùÞ3 2çùGüÍú6çùüÍú6çùüÍú2çùüÁšvŸñ˜é—?Ê?à†oÑ—?È>ñ›ôeÏò¼fýsüƒï¿F\ÿ ÿ‚¿F\ÿ ûÆoÑ—?Ê?à†oÑ—?È?à†oÑ·?È>ñ›ôeÇò¼fýsüƒþfýsüƒþfýsü£ï¿F\(ûÆ+o§\,±±Q@êNãÇ.ëN¸i¤eQBìzGôeÏòø!›ôeÏòø!›ôeÏòø!›ôeÏò¼fýsüƒï¿F\ÿ ÿ‚¿FÜÿ ÿ‚¿F\ÿ(ûÆc¦\ÿ ÿ‚¿F\ÿ ÿ‚¿F\ŸØðC7èËŸåxÍú2çùÞ3~¹þA÷Œß£.Á è:,m œQÈ(Ào÷ä?W°ž[ÉdARE7]ú2çùüÍú2çùüÌtËŸåðC7èËŸäðCͧÎm­Ð.àÉ]Çs?F\ÿ ÿ‚¿F\ÿ ÿ‚¿F\ÿ ÿ‚¿F\ÿ ÿ‚¿FÜÿ ÿ‚¿F\ÿ(ÿ‚¿F\ ÿ‚¿F\ÿ ÿ‚¿F\ÿ ûÆoÑ·?È?à†oÑ·?È?à†oÑ—?Ê?à†oÑ—?È?à†oÑ—?È>ñžuÿœ¦³–"ÀÒ¨üKå¾ãþ®Q`/ùÎ{M>{#Ïæˆ/&Ð óM´šƒÙ}`I"7«—·"DþÐ#çœÛÈÚ7—µ?ÍÍÌóŒ’ê«m¨[y–æþKë«cnËÊÕ ^¼Œ$€ÁP­Vµ8{ù÷ùQù‘«ynËYüÔÔáó^—¡ë¶:¤Ö-œ¶3›HŸ÷ÛÇ#3ñCˈ¥@9Î|ÑäÍ?óŠ_7XÿÎ6i¦ùFo(Ooy ­‰³µ¾Õ½e–…PÓ* 3ñå¿œÃæÉÿç!üÏùm§y&ÊúÆóÊPÜjZ½Õí¤‰×Õ}·px†ÉSÆ´â+ž‹š_̯˟'ù§Ì¿˜šÍ§˜ní¬'›N‹KÓšÚEuCAÄ3—$Ò”ò_åä>\ÿœv‡ËZ¯—ÌS^é"÷VÑÚG¶–ú{¢&¹ ÀÄ“JTÓŽÙÏ?/ãò™?0ü›{ÿ8פ KÓ ½>e6ºy³F…¡U‚Þäñ_UÄ€•åÈ©©É§üä“ëðþjþYÞù"(.u+ko2NÖ“’¢ê¶‹Ôôäqö‰ø¶4£¯ù#Ì–˜:L~bòøuBÍÅ´üRæÒtÙฎ§„ˆz©ùŽK¿F\ÿ ÿ‚¿F\ÿ ÿ‚¿F\ÿ ÿ‚¿F\ÙðC ¾yü¯_;ÇÈž}+^²¯Ô5› wjíª’@xÜlѽPý®<€9Ð<ýuå]N×ò¿óvE·ó ñŽÃVãéÙjÈkÅÕˆ ãe’#QÌŽ ܶî‡K¹…7ã7èÛŸäðC7èËŸäðC7èËŸäðC[éó¬ TU‚SqüØôeÏòø!›ômÏò¼fýsüƒþfýsüƒïãÏoùÍ"Î<ù÷Iü¥óêMêjr^]_Âñ4v_kÒIbÒ ×TŽ\¶árÎ@þtÿÎ[Ç?–¿ç¼µuäï-L’E/›¼Â .Èʆ¶è±ÈN,x•s˯%=<íwÿ>UÖ¯§–öóó ®&v’IdÒägwcVf&à’I5$õΫùÿ>²ó‡ät¯Í)~bÛ›­:`ÒÛ6DKˆNÒBÿ¿ «ÄZmŸ_Êì’PµØsÆ>í¶a_› oèËŸäðC9ßæ×Ÿl%ü¬þhù¤'Ô4kW¸àÒËÒ(ƒoÄÈä(4;ž™ùxÿœzÿœÇÖ+;.?>üÜ÷Z¶»q:ëÐDѬ·÷´©P+`\)P~®´‡M~Â×]ÑÝ'°½†;ˆ%GR$PÀÔ;ÐÐðÇômÏòø!›ôeÏò¼fýsüƒï6 >qop…EX%7›~¹þAÿ3~¹þAÿ3~Œ¹þA÷Œß£.}ã,i×#öGÞ3:äõA÷Œ¯Ñ·?È?à†oÑ—?È?à†oÑ·?È>ñ›ôeÇò¼fýsüƒï¿FÜÿ ûÆoÑ·?È?à†oÑ—?È?à†oÑ—Éÿ 3~¹þAÿ3~Œ¹þAÿ0e–Ÿ:y/X\ ÇS€†›süƒþeþŒ¹þAÿ3~¹þA÷Œß£.Á ߣ.Á ߣnÁ ߣn}ã7èÛŸäðC7èËŸäðC7èËŸäðC7èËŸåðC7èËŸäðC7èÛŸäxÍú2çùüÍú2çùüÍú6çùüÍú2çùÞ0fŸ§ÏÌnë@ î<eÇò¼eþŒ¸þQ÷Œß£.”}ã7èÛŸäðC7èËŸäðC7èËŸäðC7èËŸäðC7èÛŸäðC7èËŸäðC7èËŸåðC7èËŸäxÍú2çùÞ3~Œ¸þA÷Œß£.”Á ߣn?Á ÇL¸¡øÞ2aõy˜<$æÛ ”5å¯þqÏÉ:‡|‡§è~aˆA©É%ÍåÄAƒp{™š^$ŠŠ¨` qÌÆ?¥b¯kqOø#œþ2•›¥wÏ–Z´oùÇëï=yCþrÊúþ©­ù²öyå½ÓaúÌ7ºl•èYd_Oˆ$P*·Žz§þpÿÉÞ`ò7åÔ:/›í¤²{qq¦ÙÍ ’[}>R ¼nÀŸˆ/j’;ç¶ü¼³ßùÛ8 ÜG†n#Ã7ƒ¸©Sþ/ÿpᛈðÍÄxfâ<3q¸ ÜG†n#7›ˆÍÄxfâ<3q¸ ÜFn#Ã7ƒŠ¨O÷yÿˆà#Ã7›ˆðÍÄxfâ<3q¸ŒÜG†n#Ã7ᛈÍÄxfâ<3qów›4_ hwþxó•ÚXhZ\-qwràˆ¾YEP '>g¬?™ßóð`²\¼­ÿ8Û>¥ÉTR-gV‚ߥ½6qþE+ûC>šyWʺG‘ô[&yFÑ,tM2·³¶Ž¥cz ’I'©bI'%¶ê>«sóõà#Ã7ᛈðÍÄxfâ<3q¸ ÜFn#7›ˆðÍÄxfâ<3q¸ ÜFn#X(ýÿü`ဠ¾#Ã7ᛈÍÄxfâ3q¸ŒÜG†n#Ã7›ˆÍÄxfâ<3q¸ ÜFÒÔ ¸ÿÙ~£…áG†_ᛈðÍÄfâ3q¸ ÜG†n#Ã7ᛈðÍÄxfâ<3q¸ŒÜG†n#õQëE·í¯ëË»Qõ‰vÿv7ëÀüG†n#Ã7ᛈÍA›ˆðÍÄfâ3q¸ ÜG†n#Ã7ᛈ=³qÓt ¬!Çõä\ßÏó¨aWᛈðÍÄfâ0tê>©m·y?^â3q¸Ž™¸ŒÜG†n#Ã7›ˆðÍÄfâ<3q¸ ÜG†n vÈ'æW‘-ÿ1¼¿7•î&kiö×Ö³.á.ìå[—<£õsQ»-@#9þ…çïùÉ+K-|Çå¯(^êQ¯îmµI¡ŠVí¬n¥”CBv8mÿ+þrþ¥+ÿÜfOù£ÿ•…ÿ9éúßá+ñåÇþ;2u¥“ÿ•ÿ9ÿR•ÿî3'üÑ›þV?üäýJ>Wÿ¸ÌŸóFoùXÿóõ(ù_þã2Í¿åcÿÎ@Ô£åûŒÉÿ4f˜ÿóü£åûŒÉÿ4a/<¡ù‡¯y‰4ç!.´™u‹(®­´]/GY>¯¦ÇpäHæg£M$°„G,J¯…Tï’_9y/T³Õó7òÅ#ÿºE¡c3q·Õmc?ݽvK„ÜÊ oðÈJÒ’Ÿ%yóBü³mOË1—6“6²(ÑÏì°`V¢ªÔª±91â<3q¸ ÜG†kúŸæ­*óÊžb·[½&þ3Í»©÷R ‘ÕXAÜâ±y_üžX~b¿ü¿‰ã´±ónW–Þ¡ z„J_îýxÔ“ð—rlôÅé‘È À`A¨ î#¨8Î#7ჭ”}^ëýTÿ‰`#7‘¿9ù»Dü»Ðo<÷ç{ÈôÝO^wWr†*€š…Af&»Ÿ ùyùÇÿ?×õß/ë^bÿœPòä·Ú&…—Qó&µ ÅlŠdh‰·‰åF–¤Ÿ p~ÒgÀoÌoÌ1~my†óÏÿ˜7ͨë÷åæé‘¹D¿ jª(ªÃ?K_óïùÊ[Ïï [ù7ÌZÁæï*A ƒZÂL¶1 Hg‰ âô=G*sè7›ˆðÍÄxfâ<3qòëþ~KùoùÅùãc¢þW~JùfçRòí»µþ§v²ÛIJ\Æ(ÐÉ21URK†JsâA9ò/þ‰Åÿ9ÿR=Ïý%ÙÕ|ûÿ8¤~qùÉòþSÿÎDh7u¶Š‘¯—î˜Ú²}Z§»´2³V ¥Sìò«³ß\G†n#Ã7ƒíÔ}VëåüKq¸ ÜG†n#Ã7›ˆðÍÄxfâ<3q¸ŒÜFn#Ã7 æâ<3q¸ §¨¬ßñðQá—Äxfâ<3q¸ŒÜFn#Ã7ᛈðÍÄfâ<3q¸ŒÜFn#0Q›ˆðÁÚb­E·súŽ <2øŒÔ¸ŒÜG†n#Ã7ᛈðÍÄxfâ<3q¸ ÜG†n#Ã7á”TP퓚úwÉnlÙ³fÍœó/þ:ÑÿÆÿ‰€F¡˜+t'|ùãä]ósóò÷Ì~g‹ó2ûÉka¬Üéé¡XÀ\A&ˆÌ ªTÈ>.”=³ØŸ•¾K×ü‡£6‰ço3Üù·Q3¼ß¤n¢ôäÔ¤|y>Ëã^ùè/.ÿ¼ìÛ3f̓‡ûÅÿ=ÿã\—•›6^VlÝ3fÍ›6lÙ°qÿxGüg?ñ•›/6V^l¬Ù³c” ÕÏ–> “ô ùeåOùú'’®|ïço.yå­¬¼¥¢«Ÿ.ÞÚ¬ò\jO ðhøp?¿m œO.¸a¤yÍßó¾i‡ÎÿœÚeÿ•¿&<½sËFòå´së3#WÖ¼ŽJ:Ä*§‚7VϦðA ¤QÙYE½¬(±C *8ÑEFÊ tÁöÿï-ÏÎ?×€2ò³fÍ›6lÙ³fÍ›6lcþïÿŒü0Í›6lÙ³fÍ›6lÙ³fÁúgûÕû/ÔpËÊÍ—•›6l¼¬Ù³fÍ›¶þþ/õ×õåÝÿ½ÿÆFýx†VlÙ³fÍ›6lÙ²ë•7Aÿx!ù×}oýî›æ?VfÍ›OþòÛ|äýx6lÙ³fÍ›6lÙ³fÍ›÷„ÿÆqÿÀ9²ò²ò³g2ó§åÊk7pùÓÉÏ‘çK&ib¾H€[߆†Úÿš‰«£µ ‘<÷œ –ÒþÙ´¿3iüWUÑæjËjç£) õ!~±Ì £ «È“ÌÙ³bsCÌrZÝF“A*4rE"†GFee;#¨;à-å]SòEŸQü«ÓnõÏ,]8úß—#˜í^ŸïEƒHiźK »2°§ì~WóF—ç=:=ËwâÑØÆÛx¥Mž)Q€häC³#Äd€Ý2!ù‘ù¤~Ry/_üÆóT‹›¤Ú}aÔ¸C#)<"Bz»Ÿ…F䞀ç*ÿœ{ÿœŒò÷ç÷åÜœVÏo¤Û'¨šœQñ°’#FÈÜB¡³…ªïÓ<ýçÿùÍ}gÌ:Å×åïüáÿ•$üÀ×-e’Þ}\s]"ÞT@Õõh±ËÇpWÕ^@UáW—¿ç <ÁùŸ«Û~dÿÎ^y¶óÌ:„S‹ˆ¼³fÜt‹~™6Ò‰b¡§įBÇ='ùõÿ8Ïå_ùÈO-Y~[ùŽâÿFò͕ɺ[ ¡´‚I)ð—ŒÆëðÔ• ’sÇßôH¿ÉOú¹yŸþ“-ìŸ:ÇäŸüûÓòïòͶ™Ÿ—š¿˜ãÕmÆcžî†h¤x¥T…K#mPtï¹Y³fË©nGÇ1'¾V]r°}¿ûËsòþ%€3fËÊÍ›6lÙ³fÍ›6laÖoøÀøt¦^VlÙ³fËÊ®lÙ³fÍ›éŸïT_3úŽÍ›6lÙ³fÍ›6lÙ²C“Ÿû'ÉflÙ³fÍœó3þ:ÑÿÆÿ‰€G^CŽí]³âלõŸÉ}ÍúÖ¤X~gjw×:Œâ{Íêv¶»¸CYE.¿§ZO„ tÏ ßó‰:Ž«ù êÞO‡X‡GžþàÁúzí®¯X-—,îSqN>œö¿—Þ?öm‡™³eàßøòÿžÿñ®ËÊÍ›6lÙ²ò³fÍ›6lÞÿÏüGæÍ›6lÙyYyYyàùøÇüäü‹üª¸Ó4IÌ^góQm6ÈÆÉêEZÏ1‡Qƪ’ 4}ª3ó äï4Ïäï0iÞq·Ž›:òÅŽæ5š)7 GG\n{çìÛò¿ó#LüßòŽ‹ù™åÇåa¬YEp¨Y Dåhñ8BU]Åøv:Ë:ßýå¹ùÇúðlÙ³fÍ—•–2³eåfÍ›X»ÇüPÿÃŽ™³fËÊÍ›,åfÍ›6^Vl¦½Qÿ²ýG ¼ÙYyY³fÍ—•—•›6l^Ûûè¿×_×—wýü¿ñ‘¿^Í›6lÙ³fÍ›6lÙ³¦è?ï?#úò­ÿ½Ó|Çê¬ٳ`ùÿÞ[oœŸ¬`¬¼¬ÙyY³fÍ›6lÙ³`áþñøÎ?â86lÙyY³g7ó×§ó °ù§É×I¤ùÒĵÔIŽhA«Z]¨ÚH§ÄÄO4Øò'Ÿ`óÄPÏjú^½¦ËèjzTíY­¤ìã¡x$ë´×°5;ËÊÍ– £cœsÍ—zݦ¨|ãùAo¤j—/êêº}Ä<ìµb»¯>¢Þvû&圃ñ9òþs÷þsïQžïLü¬ü¥ý+å½gD¾Ž÷\—×Xn¢éeD©u‰ÅY‰ŽÅ®sŸùÏ/ù΋ÏËï)ùÈ’z+©[éy’æææ:µpPràãÕ îiÇ<ƒÿ8™æ-+Wóv—ù3ù©ªêv¿—ý÷ Û[¿ªÂ÷3 Š).šØ=Iz çêÓÈ?–¾Uü£Ò¿Áß–zM®‰£,†Coh¤õ‘Ø’ÎObÄíÓl˜æÍ›6lÙ³fÍ›6lØ>ßýå¹ùGÿÀ³fÍ›6lÙ³fÍ›6lØ?OØÍÿ ¼¬¼¬Ù²ÎVlÙ³fÍ›6Ó?Þ¨¾gõ3fÍ›6l¼¬Ù³fÍ›(ô99ÿ²|–fÍ›6lÙÁ¿3?ã­ü`_ø‘Î~éTЉ&€*Iú3À#ò#ÌÞSÐo5ïËŸ3i).™æ)<Ãåkûæ?WŒÝ’—]2§ÄŒM€ïß=ÿ8ùùc«þVyZM3Îwp^ùS¿¸Õu)m?Þo^äÔˆAU<¥*3Õž]ÿxÿÙ¶f͛Ǘü÷ÿplÙ³fÍ›6lÙ³fÍ—•ƒûÂ?ã9ÿˆàÙ³fÍ›6lٳϟó’ó‘Þ]ÿœnòìzç˜ïuíMšÛCÒ`RòÞÝ”ãb9±#ÁjÄ ñ÷–ÿçüä Ïù¹ÿ9µy7ŸuvI#Óô‹¨á·Ó­ýÕ½0,Üjwf59$ÿ¢PÎ?ÿ/˜ÿî#ýRÏ_~GþEykþqãËÍäË©õ43p÷QèΓ^O·é•D 1܃]úS;loþòÜüãýx6lÙ³fÍ›6lÙyY³fÁÖ?îÿøÀÿÌٳfÍ›6_¾VlÙ²ò³fÁúgûÕû/ÔpÍ›6lÙ³fËÊÍÓ6lÙ³bößßÅþºþ¼»¿÷¢_øÈ߯æÍ›6^VlÙ³fÍ›6tÝýà‡ä^Aõ¿÷ºo˜ýXU›6l?ûËmó“õàÙ³fÍ›6lÙ³fÍ›6l?Þ#ÿÇüGæÍ›/+6lÙÍüûäYüÁ5¿œ<¥pš´¨dM¼’¦#}ÞÖé(yÁ%7 æ‡âF‚;Ⱦ{ƒÎ‘]ÙÏéþaÒ$Km_L–…íge¯ÂÀñ?ÚŠEfªìÔ`FN³eåg’ç4?ç&í¿çüƒ7˜¬d¶7êU¶Ñ,®ÜHÇá’R«O†%5øˆ vß?/—ߓߘÚÅĺ½ß—uIfºc;9¶ò2|UÜw®uŸÈOùÅMgó#ÎÚo’ÿ1íu_/h×ìÐ@YI I™O¤¬8šz)b(:šgÓÖÿŸ5h JŸ:]ÔlÑÓþiϬ”¾K¾ü¸òvä gRý/6l–QÞ˜Äm$1mp:°]™¿k®t<¼¬ÙyY³fÍ—•›6loþòÜü£ÿ‰` Ù³fÍ›6lÙ³fÍ›6laÖoøÀøfÍ›6lÙ³eåfÍ›6lØ?Lÿz¢ùŸÔpl¼¬Ù³fÍ—•›6lÙC“û'ÉflÙ³fÍœó3þ:ÑÿÆÿ‰ùáÿ9é¨j¶•Ç¢¼ðÙÝj6–ú¬öå•¡±výã’»€6¯lêyò×Sü¦·ò=Üöò¯E õýx½$‡/X7Ùäâ­6o|ç_óƒZ–¥¨~W¤:¥Ä×¶6Z¥õ¦•w;yì"’¿#ÔÐôðÏyp©ì øÛ(|Ýš‡ÀýÙ¸Ÿ÷f¡ð?vâ~¥ÐÿáþNâ|ݗżÝ•Äø».‡ÀýÙ\Oû³Pø»5û³Pø»/‰ð?vUû³q>îÍÄø»7à~ìÔ>îÍÄø»7à~ìÔ>îÁĨ÷ç·ù8‰ð?vn'ÀýÙ¸Ÿ÷f¡ð?v_à~ìÜOû²¨|Ýš‡ÀýÙ¸Ÿ÷fâ|ÝžHÿœ˜ÿœ›oÊ&µü¶ü­±_3þoëecÒô¹;B¯ÿ7!Ãõ 윅X°PN~EÿÎ/kZO›ï?ç!ÿç"õ¼Åù™v8YˆÃH†ƒáµVi ¸ÝAVi^UÏkÇr 'Ç*‡ÀýÙ¨|Ýš‡ÀýÙ¨|݃íÁú­ÎǬ}½ðà~ìÜOû³q>îÍÄø»5û³q>îÍCà~ìÔ>îÍÄø»5û³q>îÍÄø»5û³q>îË¡ð?vUû³q>îÁÖ*±þáû|°Sà~ìÔ>îÍCà~ìÔ>îÍÄø».„uîÊâ|Ý–Að?vUû³Pø»5û²øŸ÷ePø»5û³Pø»5û³PöîÁúbŸ­G±ý®ÞÇ|Ý›‰ð?vj÷fâ|Ý—Cà~ìª÷f¡ð?vj÷fâ|Ý›‰Aû²èzPýÙT>îÍÄø»5û³Pø»7à~ìÜOû±{e>´[¶½½òîÁúĻ﷾¡ð?vj÷fâ|Ý—Äø»+‰ð?vj÷f¡ð?vb§ÀýÙ¸Ÿ÷fâ|Ýš‡ÀýÙ¸Ÿ÷fâ|Ýš‡ÀýÙ¨|Ý3AÚÂø×mOצ4=Gol*¡ð?vn'ÀýÙ¨|Ý›‰ð?vœªÛlzÉÛßñ>îÍCà~ìÔ>îÍÄø»5û³q>îÍÄø»7à~ìÔ>îËâOc÷ePø»7à~ìÜOû³q>îË¡éC÷fâ|Ý›‰ð?v ýDì¿¿ÉÀîÍCà~ì°§°?vUû³q>îÍÄø»7à~ìÔ>îÍCà~ìç¾uü¼>jº²ó&ƒ~Úštꥶ©°h[í[ÜÅT3ÀzˆË¯£Ø„ò?ž.õ;©|‘ç»tÓ|åh¾®¤ú7ö˰¼´c³#»# Ï lôa—›3ü¥äGGòïu‹]3SóÁµÒ ¸~-s(êÀV‹ÈÑyµä@Éé‰Á`TŽ5-QJS­|)žüÞÿœÃ¿—[‹ò“þqIµüÅóÔÖÓKvö·¬tÄâB<³)3†ê†U§Ù?ù1ÿ8Qm¤j±þmÿÎFj³~`þ`\[[Pêщ­´É#<ø[‡/È£P+Ôøw®{Ûë—?ïÙà˜`Èn'{kï#|)Ô“ûXUCà~ìÔ>îÍÄø»5û³Pø»5û³q>îÍÄø»/‰Aû²¸Ÿ÷fâ|Ý›‰ð?vj÷f¡ð?vn'ÀýÙ¨|Ýš‡ÀýØ>Ü«\ìzGÛü¬Cà~ìÔ>îÍCà~ìÜOû³Pø»5û³q#±û³q>îÍÄø»7à~ì¾$v?vUû³Pø»5û³q>îÍÄø»7à~ì` fØÿpý°Sà~ìÔ>îË¡Ý•Äø»7à~ìÔ>îÍCà~ìÔ>îÍCà~ìÜOû³Pø»5û³q>îÍCà~ìÜIèÝ—Cà~ìª÷`ý0­G±ê{{ø»7à~ìÜOû³Pø»5û³Pø»5û²è|Ý•Cà~ìÔ>îÍCà~ìÜOû³q>îÍÄø»7à~ì¢ ÇîÉÖþñï’¬Ù³fÍ›87ægüu£ÿŒ ÿ9ÊõOó ”ú˜-a½ÓnÇ=´è9õVS±åµÿœü¬Wm5oÑáù~ý+yõ.5åéú§O· R›g¨ô_/éþW°ƒ@òí”:~™j‚8-­ÐGj;*ŒêÞX»š ¹UõÒƒ$¤n߇îÓ7é Ÿ÷éû‡ôÍúFçýø~áý3~ºÿ~¸Lõû©óõ/Z• éÇþºÿ~Ÿ¸Lߤn¿ß§îÓ7é ¯÷éû‡ôÍúBçýú~áý3~‘¹ÿ~¸Lߤn¿ß‡îÓ7é Ÿ÷áû‡ôÍúBëýø~áý3~‘ºÿ~Ÿ¸Lߤn߇îÓ7é¯÷éû‡ôÍúFçýø~áý3~¹ÿ~Ÿ¸L¿Ò7?ïÃ÷é•úFçýø~áý3~ºÿ~¸Lߤn߇îӛ멇õ/XŠÐt〿HÝ¿OÜ?¦oÒ7_ïÓ÷é›ô…ÏûðýÃúfý!uþý?pþ™¿HÝ¿OÜ?¦oÒ7_ïÓ÷é›ô…ÏûôýÃúfý#uþü?pþ™cPº$!'ä?¦xƒþrþsNçÈZÝÇä—侑{çÌé­@TÓ£Iít¹e`Š×¥C•)Ë‘R¼FÁÈ®I?ç¿ç¥ük¯ÌÌ»õó/æþ¸Lº¶½(.Ñ¡úµ±zñEèYU9S  õ×é Ÿ÷éû‡ôÍúFçýø~áý3~¹ÿ~¸Lߤ.¿ß‡îÓ7é Ÿ÷éû‡ôÍúBëýø~áý0l×Úጆ ÇCAÜà/Ò7?ïÃ÷é›ôÏûðýÃúfý#sþü?pþ™¿HÝ¿OÜ?¦oÒ_ïÃ÷é›ô×ûôýÃúfý#sþü?pþ™¿H\ÿ¿Ü?¦oÒ7?ïÃ÷é›ôÏûðýÃúfý!uþü?pþ™¿HÜÿ¿OÜ?¦oÒ7?ïÃ÷é›ô×ûðýÃúeþ‘¹ÿ~¸L¯Ò7_ïÃ÷é›ô…ÏûôýÃú`Û+û†õ¹HM!r6vÀCQ¹ÿ~¸Lߤnß§îÓ7éŸ÷áû‡ôÍúFçýø~áý3~‘¹ÿ~Ÿ¸Lߤn¿ß‡îÓ7éŸ÷áû‡ôËý#uþü?pþ™_¤.¿ß‡îÓ7é Ÿ÷éû‡ôÍúFçýø~áý3~‘ºÿ~Ÿ¸Lߤn߇îÓ7é ¯÷áû‡ôÍúBçýú~áý3~‘ºÿ~Ÿ¸Lߤn¿ß‡îÓé×÷s<„©®Ô~‘ºÿ~¸Lߤ.¿ß‡îÓ7é ¯÷áû‡ôÍúFçýø~áý2ÿHÜÿ¿Ü?¦Wé ¯÷áû‡ôÍúFçýø~áý3~ºÿ~¸Lߤn¿ß§îÓ/ô×yÜ?¦Wé¯÷éû‡ôÍúBçýø~áý3~ºÿ~Ÿ¸Lߤn߇îÓ7é ¯÷áû‡ôÍúFçýø~áý3~¹ÿ~Ÿ¸LZßP¹3F¦CBêÃÇå—ur³Ê«! v¦ÃÇåˆ~¹ÿ~¸Lߤ.ß§îÓ7é¯÷áû‡ôÍúFëýú~áý3~‘¹ÿ~¸Lߤ.ß§îÓ7éŸ÷áû‡ôË:ÏûôýÃúfý#sþü?pþ™_¤n߇îÓ7éŸ÷áû‡ôÍúFçýø~áý3~‘ºÿ~¸Lߤ.¿ß‡îÓ7éŸ÷áû‡ôΉ¢ÈÒÙE$†¬FçéÈn±{qìÑÇ!   ðÂßÒ7?ïÃ÷é›ô…×ûðýÃúeþ‘ºÿ~¸L¯Ò7?ïÃ÷éƒf¾¸Öì$5&Jš èpéŸ÷áû‡ôÍúBëýø~áý3~‘¹ÿ~¸Lߤnß§îÓ7é ¯÷áû‡ôÍúBëýø~áý3~‘¹ÿ~¸Lߤn¿ß‡îÓ7é Ÿ÷éû‡ôÍúFëýú~áý3~ºÿ~¸Lߤn¿ß‡îÓ7é Ÿ÷éû‡ôÍúFçýø~áý3~‘ºÿ~¸L¿Ò?ïÓ÷é•úFçýø~áý0`¾¸ú™Pòõ€­N?,úBçýú~áý2ÿHÝ¿Ü?¦WéŸ÷áû‡ôÍúFëýú~áý3~‘¹ÿ~¸Lߤ.¿ß§îÓ7éŸ÷éû‡ôÍúFçýø~áý3~‘ºÿ~¸L¿Ò7_ïÃ÷é•úBëýø~áý2ù…å«?6Ø}wS¿F£¥¬—Và*’iΪKKΪ Tþö6>›®Ì3ò£ÿ9=ÿ9WçÏ/Ì(üé¬jAO—n}=Zp[ú­U²: k¿aÐ úåäÌÏùø—ôÓ¡j'òßòò.,µ}ZÂsuy©Ü$k !+Ë‘,¾ ]Ën@Ï¢’ß‘¾Jÿœ~Ò—Cü­Òmôéd†(¯oUy\Þ4cíÍ#rbI$Ò´û³³þ‘ºÿ~Ÿ¸Lߤ.ß§îÓÛß\.Èjª”ØmVÀ_¤n߇îÓ7é¯÷áû‡ôÍúBëýú~áý3~ºÿ~¸L¿Ò7?ïÃ÷é•úFçýú~áý3~‘ºÿ~¸L¿Ò7?ïÃ÷é•úFèÿ»Ü?¦oÒ_ïÃ÷é›ô…×ûðýÃúfý#sþü?pþ™¿H]¿Ü?¦oÒ7?ïÃ÷é›ô…×ûôýÃúeþ‘¹ÿ~¸L¯Ò7?ïÃ÷éƒ`¾¸6÷ d5P”ØwlúFçýø~áý3~¹ÿ~¸Lߤn߇îÓ7é ¯÷éû‡ôÍúFçýø~áý3~ºÿ~¸L³¨ÜŸ÷aû‡ôÊý#uþý?pþ™¤.߇îÓ7é¯÷áû‡ôÊý!uþü?pþ™¿HÝ¿Ü?¦oÒ7?ïÃ÷é›ôÏûðýÃúfý!sþý?pþ™¤n߇îÓ7é¯÷áû‡ôÁ–7× e !4…ÈØuû°Ôn¿ß‡îÓ7éŸ÷áû‡ôÍúFëýú~áý3~¹ÿ~¸Lߤn¿ß‡îÓ7é Ÿ÷áû‡ôÍúFçýø~áý3~‘¹ÿ~¸Lߤn߇îÓ7é¯÷éû‡ôÍúFçýø~áý3~‘ºÿ~¸Lߤn߇îÓ7é ¯÷áû‡ôËý#sþý?pþ™†£uþü?pþ™_¤.¿ß‡îÓé××s¼„‚Mv~‘¹ÿ~Ÿ¸Lߤn߇îÓ7é¯÷áû‡ôÍúFçýø~áý3~‘¹ÿ~¸Lߤn߇îÓ7éŸ÷áû‡ôÍúFçýø~áý3~ºÿ~¸Lߤ.ß§îÓ7éŸ÷áû‡ôÍúFçýø~áý3~‘¹ÿ~¸Lߤ.¿ß‡îÓ7éŸ÷éû‡ôÊ:Õ?½?pþ™4õäþo÷E{uÉ.lÙ³fÍœó3þ:ÑÿÆÿ9ˆruW~ùóKò³È¾xüïo7y›LüÑÖ´Û?W½´±µ¥ x–"wœO®ËÄ“Äo¾Î9þdyÆÏÌ~RRóeç™l¼ÅªèÚ­½ìpðŠâ¤KhȈޛ TµO¶}ƒòïûÇ¿ó¶åf̓¿ãËþ{ÿƸ/¦VlÙ³fÍ›6lÙ³f̓ûÂ?ã9ÿˆàÙ²óefÇ"4ŒXìxóßþr“Uó6³üã—üâ4Ðjÿ™š¢¸»Ô¸ÖËH´YeiŠeôW à_ˆ=óþqÃþq×Ë¿ó¾]“AòÓIw­êL·:Þ­3šöèîÍRÁ'‚€¹ÿœ‹¹†+”òÌ ²Æ’Ú•˜`]ŽûŽÙô›þ}Ýÿ8ïùåÿ8Ë®jÚævƒJ×!W–ho-&h.áþéØ,…ø,¤"š’¤ì3ëVlØ>ÛýçºÿU?âX6n¹yY³fËÊÍ›6lÙ³`û÷–çåüKfÍ›6lÙ³fÍ›6^lÙX>ìßñðÍ›6lÙ³fËÊÍ›6lÙ°~™þõEó?¨à ¼¬Ù³fÍ›6lÙ³fÊ=NìŸ%™³fÍ›6poÌÏøëGÿþ$sŸ(,B¯SÓ>DþmGùiù«ç cYò¯å·›õõµœØÞj~V˜ÚÚ\ÜE³—Anü¤fbƹì¯ÈO!ù_Z6_š0y*ÿÉÚ¶—núE–›¨ª¡Š³¤~šQäý©í¾{›Ë¿ïû6ÃÌÙyX;þ<¿ç¿ük€seåeåfÍ›6lÙ³fÍ›÷„ÆsÿÀ9³fÍ›¨^¼4ŸR|ñÏ›_œœeÿœ ó%ÏüãüãÉ˱‘œ<íjÎb²Œš=­³‚ŠîßeŠ;sÜ@Ç=‹ù3ùäŸÈ-*þZéZñ†8n¯ÌH//ŠTó¹‘T$’iÐtíw6l¼¬Ù³`û÷–ççëÀ³fÍ›6lÙ³eåfÍ›/Øÿ»ÿãÿ 3fÍ›6^l¬Ù³fÍ›6l¦½Qÿ²ýG Ã6l¼¬Ù³fËÊÍ›6lؽ·÷Ñ®¿¯.ïûùã#~¼›,åfÍ—•›6lÙ²ò³¦è?ï?#úò­ÿ½Ó|Çê¬ٳ`éÿÞ[oœŸ¯æÍ—•›/+6lÙ²ò²ò³`áþñøÎ?â86lÙ³fÍ›7bNÀI=Iöâ?ÎÿùÊígIó,_’ó‹Ú5·ž?2)d¿A7ú•甋Hßýå¹ùGÿÀ³fÍ—Ó+6^l¬Ù³fÍ›éýfÿŒ€l¼¬Ù³fÍ›6l¼¬Ù³`ý3ýêæQÀ²ò³fÍ›6lÙ³eåf=+“¿éß%y³fÍ›6poÌÏøëGÿþ$rqpÝ(sç§åôž¿“÷>aÑüå/\y{PÕîu 8eÖÌm•¾*‘ fçöˆcð“AžÆü³×|ßæ-êš:mž—¬‰Ý7fî#‹z…Ws½E3¾ùwýãÿfØy›6l?Þ/ùïÿàÙ³eåfÍ›6lÙ³fÍ›÷„ÆsÿÀ9yY³bSÜAg —·ÓGok4³M3Ž8ÔUØìªäœù«ùóÏ?ó^d¼òoäF³äÏÉý æ¶Õ|Ïn›Xœ‚†+R”0;z !˜}‘žðü üŸò¿äg–m¼ƒùye¥Œ*­q(½»žŸó9%™Øø“Ä|+¶tìÙ³fÍ›6loþòÜüãýx6l¼¬Ù³fÍ›6lÙ²ò°u‡û¿þ0?ðÀ#6lÙ³fÍ›6^l¬Ù²ò°~™þõGþËõ3fËÊÍ›/+6lÙ³fÍ›¶þú/õ×õåÝÿ½ÿÆFýx6lÙ³fÍ—›+6lÙ³¦è?ï?#úò­ÿ½Ó|Çê¬ٳ`éÿÞKoœŸ¯æÍ›6l¼¬Ù³fÍ›6lØ8¼'þ3øŽÍ›6l¼¬ØœóÃi ·÷ÒÇoi4“O3Ž$QVwc²¨’s朿>¼ëÿ9‘{7ä¯üâí¶£ yEîî-u¯?L„ZËm ‘Yº+RWjH®Â›…cžÕü”ÿœzò7üãý„úoåÅŠîø!Ô5‡y®îÝTd–Fg H,# ÁIÛ;^lÇ6lØ>ÛýçºÿU?âX+6lÙ³fÍ›6lÙ³f̓íÿÞ[Ÿ”ñ,2³fÍ—•›6lÙ²ò³f̓ì:Íÿ™³fÍ›6lÙ³fÍ—•›6Ó?Þ¨þgõ›6l¼¬¼¬Ùy³efÍ”zTxǾJódó'ÏV¿–žZÔ<ï©C%Äôa§©#3T^D ’@ÜÓ <©ç/2êÒ´žkòÌÚ&ž°Ä×¶³R‚¼JDìÀÓÚ™Ïlÿç#¬î>«æ ö%_Þ MqÚ/Mæg(¥¡fXÙÊS¹ 8æ¿Î†Òµ‹ï+ùKD»×®´xçV6òCÛFã’€ftõ$* pJš{œéþOóf›ç­Ï;]˧_D%‰™JµÄ2ÁbœwÚϧ+*Å „FJƒJ%7æ~ÈÏ¥¾Ròžä=ÃÉ^N´K L…mí-£©‹âMK1êXš“’ Ù³fÍ›6lØ>ßýå¹ùÇúðlÙ³fÍ›6lÙ³fÍ›6±ÿwÿÆþfÍ›6lÙ³fÍ›6lÙ³`ý/ýêý—ê8fÍ›6lÙ³fÍ›6lÙ³bößßEþºþ¼»Ï÷¢_øÈ߯æÍ›6l¼¬¼¬Ù³fÍ7Aÿx!ù×}oýî›æ?Våf̓çÿym¾r~¼•›6lÙ³fÍ›6lÙ³fÁÃýá?ñœÄpVlÙ³fÎwù­ù³å_É.Où‡ù›}õ ÞDˆÈ¨ÒHò9¢¤q®ìÇ­<:œùí§èsÿŸ†ÞÞy“Ìw·ÞTÿœ}ÔµÒ¬­½8¯õ†I´“‚$¤d©t¦Áyú[å/*iBÑ,<‘äûD°ÐôÈVÞÒÚ2HD_I,Ç©bjNH>Y³fÍ›6¶ÿyî¿ÕOø–Í›6lÙ³fÍ—•›6lÙ°}¿ûËsòþ%€3fÍ›6lÙ³fÍ›6lÙ°}‡Y¿ãàÓ6lÙ³fÍ›6lÙ³fÍ—ƒ´Ï÷ª?™ýGfÍ›6lÙ³fËÊÍ›6Qèrsÿdù,ÍœwóËË:Wœü¶¾Vó&±&‰k{{k¸‹‡7põX”º°È¥i_ áÞsµÔ+u«Ëï._ßjzw™t]hÍ¡7¯$RÚÛrI#b…5£.õì2æY-åÿœ`Ñ!‚†G¶Ò¡ˆ¿)OƒwòQ§›4!ÕÙ~¶5;id  FÉh~[güã&›©_þPÃg¢^2êâçQk;µ…$1#^HU¸H ¶Õê¡Ã gGÖôI–ËͺÃëw…y­ËÛÃnU Ù8Bª¦‡zÒ»áHb§ØŒá×óŒ?”Ú¥Ô··þPÓ%¸¸v’Ye«;³©8Aÿ8µù‚¿˜Q¼km*ÏF²Ñu‹íÖÒÇŸ¤!µ~*ß1äzóÚ~X’±¤°‡oQ·äGêÉ­mÿ,ãþ ¿®oZÛþY‡ü\Þµ·ü³ø6þ¹½koùfðmýpg«oõ:ú­Ó›uã×®õ­¿å˜Á·õÍë[–ãþ ¿®oZÛþY‡ü\Þµ·ü³ø6þ¹½koùfðmýszÖßòÌ?àÛúæõm¿åœÁ·õÍë[Ë0ÿƒoë›Ö¶ÿ–aÿß×7­mÿ,Ãþ ¿®oZÛþY‡ü\ÆkoùgðmýszÖßòÎ?àÛúæõ­¿å˜Á·õËõ­º}\Á·õÊõ­¿å˜Á·õËõ­¿åœÁ·õÁ†[©ƒè>±Û›uã×®õ­¿åœÁ·õÍë[Ë8ÿƒoë›Ö¶ÿ–aÿß×"¾vüÀò¯å¾‘/›|ýso¥hО/sq#ñåİU RÌ@4gÍ}3KÖçâža‹Íži·›JÿœmѮݴÍ8·£y®]E·«5 ¸ˆþÒQvQÊ´ú•eŸ¦Ú[é:}’AeiA1³Ž4Pªª+°`ZÛþY‡ü\Þµ·ü³ø6þ¹½koùfðmýszÖßòÌ?àÛúæõ­¿å˜Á·õÍë[Ë0ÿƒoë›Ö¶ÿ–aÿß×/Ö¶-Çü\¯ZÛþY‡ü\¿ZÛþYÇü\¯ZÛþYÇü\¶ÿV¸"±Ôsm÷ùà/ZÛþY‡ü\Þµ·ü³ø6þ¹½[oùgðmýszÖßòÌ?àÛúæõ­‡Kqÿß×/Ö¶ñì?àÛúåzÖßòÌ?àÛúæõ­¿å˜Á·õÍë[Ë0ÿƒoë›Ö¶ÿ–qÿß×7­mÿ,Ãþ ¿®oZÛþY‡ü\¿ZØÿǸÿƒoë•ë[Ë0ÿƒoë›Ö¶ÿ–aÿß×7­mÿ,Ãþ ¿®oZÛþYÇü\e5¹õ‚À!züm¸ð뀄ÖÔÿy‡ü\Þµ·ü³ø6þ¹½koùfðmýszÖßòÌ?àÛúæõ­¿åœÁ·õÍë[øöðmýszÖßòÌ?àÛúæõ­¿å˜Á·õÍë[Ë0ÿƒoë›Ö¶ÿ–aÿß×7­mÿ,Ãþ ¿®oZÛþY‡ü\Þµ·{qÿß×7­mÿ,Ãþ ¿®_­mÿ,ãþ ¿®W­mÿ,ãþ ¿®oZÛþY‡ü\§Knnc VÞ‡›Çß ­¿å˜Á·õÍë[Ë0ÿƒoë›Ö¶ÿ–aÿß×7­mÿ,Ãþ ¿®oZÛþY‡ü\Þµ·ü³ø6þ¹½koùfðmýszÖßòÌ?àÛúæõ­¿å˜Á·õÍë[Ë8ÿƒoë—ë[Ë0ÿƒoë•ë[Ë0ÿƒoë›Ö¶ÿ–aÿß×7­mÿ,Ãþ ¿®oZÛþYÇü\Þµ·ü³ø6þ¹½koùfðmýqkymŒÑnæ´<ÛmþywRÛ ¥ n æÕ<Û}þx‡­mÿ,Ãþ ¿®oZÛþY‡ü\Þµ·ü³ø6þ¹½koùgðmýszÖßòÎ?àÛúæõ­¿åœÁ·õÍë[Ë0ÿƒoë›Ö¶ín?àÛúæõ­¿å˜Á·õÍë[Ë0ÿƒoë›Ö¶ÿ–qÿß×7­mÿ,Ãþ ¿®oZÛþY‡ü\Þµ·ü³ø6þ¹½koùfðmýs¢h¥ZÊ#ðZl+ZoïÝbXì¢H5EO&Ûç…¾µ·ü³ø6þ¹½koùfðmýszÖÝE¸ÿƒoë›Ö¶ÿ–aÿß×M-¿Õ­É€&Jm¶ÿ<êÛË0ÿƒoë›Ö¶ÿ–aÿß×7­mÿ,Ãþ ¿®oZÛþYÇü\Þµ·ü³ø6þ¹½koùfðmýszÖßòÌ?àÛúæõ­¿å˜Á·õÍë[Ë8ÿƒoë›Õ¶éõqÿß×7­mÿ,ãþ ¿®_­mÿ,ãþ ¿®W­mÿ,Ãþ ¿®oZÛþY‡ü\Þµ·ü³ø6þ¹½koùfðmýszÖßòÌ?àÛúàÁ5¹³'Ð}a·6ëǯ\ë[Ë8ÿƒoë›Ö¶ÿ–aÿß×7­mÿ,Ãþ ¿®oZÛþY‡ü\Þµ·ü³ø6þ¹½koùfðmýsÎÿóßó”>CÿœsÒ$¼óaù†h—ôn‹n]”•ŠŠ …‡ÄņÃmÈÏ1~[Î9~`~zùHüîÿœÚ–Òå4ÈVçËþS±>œ6RI'¨­wÁhì«ÆƒÔrH£ô#>”=ųš›eÊÅ@ù@1žµ·ü³ø6þ¹½koùgðmýszÖßòÌ?àÛúæõ­¿åœÁ·õÍë[Ë8ÿƒoë›Ö¶ÿ–aÿß×7­mÿ,ãþ ¿®_­mÓêãþ ¿® ·–ÜÁpD©QÍ·ø¾x Ö¶ÿ–aÿß×7­mÿ,Ãþ ¿®oZÛþY‡ü\Þµ·ü³ø6þ¹½koùfðmýrý{oùgðmýr½koùfðmýrýkoùfðmýr½koùgðmýrý{oùgðmýr½koùfðmýszÖßòÌ?àÛúæõ­¿å˜Á·õÍë[Ë0ÿƒoë›Ö¶ÿ–aÿß×7­mÿ,Ãþ ¿®oZÛþY‡ü\¶ÿW¸"¨æÛü_<ë[Ë0ÿƒoë›Ö¶ÿ–aÿß×7­mÿ,Ãþ ¿®oZÛþY‡ü\Þµ·ü³ø6þ¹½koùgðmýszÖßòÌ?àÛúæõ­¿åœÁ·õËõ­¿åœÁ·õÊõ­¿å˜Á·õÍë[Ë0ÿƒoë›Ö¶ÿ–aÿß×7«mÿ,ãþ ¿®oZÛþYÇü\Þµ·ü³ø6þ¹½koùfðmýszÖßòÌ?àÛúàÛ)mÉ—Œ~åëñ¶ãî[þóø6þ¹½koùfðmýszÖßòÎ?àÛúæõ­¿å˜Á·õÍë[Ë8ÿƒoë›Ö¶ÿ–aÿß×7­mÿ,Ãþ ¿®oZÛþY‡ü\Þµ·ü³ø6þ¹½koùgðmýszÖßòÌ?àÛúæõ­¿å˜Á·õÍë[Ë8ÿƒoë›Ö¶ÿ–aÿß×7­mÿ,ãþ ¿®oZÛþY‡ü\Þµ·ü³ø6þ¸7N–ÜÜÆ¦¦‡›x|ë[Ë0ÿƒoë›Ö¶ÿ–aÿß×7­mÿ,Ãþ ¿®oZÛþY‡ü\¿ZØõ·ðmýr½koùfðmýszÖßòÌ?àÛúæõ­¿åœÁ·õÍë[Ë0ÿƒoë›Ö¶ÿ–aÿß×7­mÿ,Ãþ ¿®_­mÿ,ãþ ¿®W­mÿ,Ãþ ¿®oZÛþY‡ü\Þµ·ü³ø6þ¹Fkjôaÿß×&\ãÿ}ÿº V_-yAž "æK9fý'/§,ÑŠºÀÂ܉)ÐÓ¾Ùè?ùÇ/Í]kó‹Ê-æÿ7iöÚ^¢—×oim1—ÓôO$äªUëZ©3Ö¾^ÿxÿÙ¶æÍ›Ç—ü÷ÿplÙtÊÍ›6lÙ³fÍ›6lÞ!ÿÏüGç ÿœ…ÿœ„òßü㇖ÅÞjV½Ô.\[éZ=»/Ö¯îeHÔž\#›€Ôì 9åŸÊ¿ùÅÏ6þqjšçŸüæ.©>©pÓɨéžH”?èí0H¢%Œ”_UÄC~Ù&¹ôs°(€6€fÍ›6lÙyY³fÍ›Ûÿ¼·?8ÿ^Í›6lÙ²ò³fÍ›6lÙ°uû¿þ0?ðÀ#6^VlÙ³fÍ›6l¼¬Ù°~™þõGþËõ3fÍ›6lÙy²³fÍ›6l^Ûûè¿×_×—wþôKÿõà|Ù³fÍ›6l¼¬Ù³fΛ ÿ¼üëÈ>·þ÷Mó« ³f̓§ÿym¾r~¼›6lÙ³fÍ›6lÙ³eå`åÿxügñ›6S²Dq;¬PD¥å–B#A¹gc²¨IÏ™~zÿœˆóŸüåf¡wùÿ8›k}¥è†öK_ó@MŠÛƵ•-]€g C«°§!ª=}ùÿ8Ýä_ùÇ›)m¿/ìOékÈ¢MKV¹wšîñãP g‘‘ü^’·s»æÍ›6lÙ³f̓í¿Þ{¯õSþ%€3eåfÍ›6lÙ³fÍ›6^·ÿyn~QÿİVlÙ²ò³fÍ›6^l¬Ù°}‡Y¿ãàÓ6lÙ²ò³fËÊËÊË9²³`ý3ýêæQÀ6lÙ³fÍ›/+/6V^4ô9:ÿ²|•æÍ›6lÙÁ¿3?ã«ü`_ø‘Î~­À†^£>nù‹É~güžó~£äÉÍ ËPy‰äÕ‡«Û5ÕÊË0-+ÄË…CB@-Ë=qùùo£~WùB ÊúƒêÑ^Í&¡s¨HÁÍÌæ²¸ P°Øqê?.ÿ¼ìÛ3fÍóÁßñåÿ=¿ã\—JåfÍ›6lÙ³fÍ›6lØ8ÿ¼#þ3ŸøŽy#þrkþrnÏò*'yfÓôïæ˜™bÐ45RË#3q\ÉÂ*í³=zrùÿ8Óæ›ß9ÜÎJÿÎW½µÿæw3“ag { "ÕjFª8´”;ÏA¹<êsÝ$×sÔš“•›6lÙ³eåfÍ›.™°u¿ûËsóõà ¼¬Ù³fÍ›6lÙ³fÍ›Xÿ»ÿãÿ 3fÍ›6lÙ³fÍ›6lÙ°~™þõGþËõ3fÍ—•›6lÙy²²ò²ò±{oï¢ÿ]^]ß÷òÿÆFýx6]2³fÍ›6l±•›6léºûÁÈþ¼ƒëïtß1ú°¯ç•›6Ÿýå¶ùÉúÆÍ›6lÙ³fÍ›6l¼ªeå`áþðŸøÎ?â86@¿3ÿ3ü³ù5å«¿ÌoÌ{ߨh6EYBÍ8Ñww=‡ÞF|ð·´ó‡üüCR»Ô¤½¿òŸüãů¯gháÔµ™¶ÒR*Áàì*õϤ~FòF‰ùiåý?È>G´[ LˆCmn„µêÌÌIfc»15'%9³fÍ›6lÙ²ò°}·ûÏsþªİl¼¬Ù³fÍ›/+/+6l¼oþòÜü£ÿ‰` Ù³fËÊÍ›6lÙy©\¬Ù°~ŸÖoøÀøtÍ›6lÙyY³eõÍ•›/+6Ó?Þ¨¾gõ›6^VlÙc+/+6lÙ³‡å“û'ÉflÙ³fÍœó3þ:ÑÿÆÿ‰€Fx¸b+CŸõO&ùßòóÍ_\Òÿ.%óÅů™îu³æ-6XnîÖddú”®JÑ‘›`>ÀÏsÿÎ(y/SòO’f¶ó·‚ïPÕ/5¨ZΓÅ`³·!l6e?iE(j(3Ú>]ÿxÿÙ¶f͛Ǘü÷ÿplÙyY³fÍ›6lÙ³fˆäøg¿ç ¿ç1´¿Ê÷Ÿò§ò®Éüßù¶ÏÛh¶qÉ4PI9à¦êHÔªÙŒlÊÝ*Wÿ8Ãÿ8Ç?å\÷¿›¿›7­¯þnùˆzÚ–¡qÆA`sijÕrGÂÌ„*ŒölÙ³fÍ›6l¼¬Ù³fÁöÿï-ÏÎ?×€3fËÍ•›6lÙ³fÍ—•›Xÿ»ÿãÿ :fÍ›6lÙ³eåfÍ›6^VÒÿÞ¨ÿÙ~£€lÙ³fÍ›6l¼¬Ù³fÍ‹Û}úëúòîÿ¿—þ27ëÀù³fÍ›6lÙyY²ò³gMÐÞ~Gõä[ÿ{¦ùÕ…Y³fÁÓÿ¼¶ß9?^®Vl¾™Y³fÍ›6lÙ³f̓‡ûÄã8ÿˆàó·ç÷üäÿ’çôùÿÄ—‘^yµáY4Ï.[±kÛÙ$ßýæ¹ùGÿÀ9Y³fÍ›6lÙ³fÍ›6laÖoøÀøtÍ—•›6lÙyY³fÍ—•›éŸïT3úŽÍ›6^VlÙ³fÍ›6l£ÐäçþÉòY›6lÙ³güÌÿŽ´ñâG8/æ.ƒæo2èSé_–úïøoÌ,U­õn—*”;†ê#éÏÿ“?žƒKÕm?-84‹kxu{³yŠj õ–oÝÙjŽÇ¬] Ïm~@~OßþIyYü¥æSôΫs}q¨]ÞÚ%yn­Å dÓ?#?ç´èüÕù«r«2Ëc¦Á]å»xÄ…vø¨VŠ7'±Cþqçþq.ÏÉ×þkÎE½¿?7µ9–æãT¸A4V c†ÌIð¨NΈŸÊ .{q¥³bY’bORXuÆó²þIà†nv_ﹿà†nv_ﹿà†nv_É7üÍÎËý÷/üËeÚ9¿à†W;/÷ÜßðC7;/÷ÜßðC7;/÷ÜßðC7;/÷ÜßðC7;/ä›þfçeü’ÿÁ ܬ¿ßsÁ Üì¿’oø!ƒmÞÓиâ’ñâ•©û]°;/÷ÜßðC7;/÷ÜßðC7;/ä›þfçeþû›þfçeü“Á Üì¿ßsÁ ¾vGý×/üÊçeü“Á Üì¿ßsÁ Üì¿ßsÁ ¾v_ï¹à†W;/ä›þeó²ëéÍÿ2¹Ù¾æÿ‚¹Ù¾æÿ‚|ì¿ßrÿÁ ®v_É7üÁ°=§Õî8¤¼hœ·ëµ0;/ä›þfçeþû›þfçeþû—þfçeü“Á Üì¿ßsÁ Üì¿ßsÁ ¾v_ï¹à†W;/÷ÜßðC/—òKÿ2¹Ù$¿ðC/—t›þes²ÿ}Íÿ2ùÙ¾åÿ‚\ì¿’oø!›—ûî_ø!›—òMÿ3s²ÿ}Íÿ0m“ZV^ (ýËÖ¬:wÀAì©ö%ÿ‚¹Ù¾æÿ‚¹Ù¾æÿ‚¹Ù¾æÿ‚¹Ù¾æÿ‚¹Ù¾æÿ‚|ìºzsÁ ®v_ﹿà†_;/÷Ü¿ðC+—òKÿ3s²þI¿à†nv_ﹿà†nv_ﹿà†nv_ﹿà†nv_É/üÍÎËý÷7üÍÎ˯ à† ÓÚÓë1„ICTÒ¤S¡À\ì¿ßrÿÁ Üì¿ßsÁ °ö_ﹿà†W;/÷ÜßðC/—ONoø!›—òKÿ2¹Ù¾æÿ‚¹Ù$¿ðC7;/ä›þfçeü’ÿÁ Üì¿ßsÁ Üì¿ßsÁ Üì¿ßrÿÁ ¾V_ﹿà†nv_É/üÆ—²¡ø%ÿ‚2¬> ýÇoë’\Ù³fÍ›87ægüu£ÿŒ ÿ9ÏãfV »sä¶§äoÈÍÏ—ß—W¼õ¿¨^\\Ý&•èýJ;– ,‘´†!ñ€×móÝßóö>Y³òdrþ]kºŸ˜4yî¦]êìé$¯‰¨‰@¤t§Óž´òïûÇþͰó6lØ;þ<¿ç¿ük€róefÍ›6lÙ³fÍŽEiF‚¬Æ€{çίÎÏÏ5~zyªçþq_þqJå#¾·ªyÃÌ®´ƒN¶åGŠÝÍyJ~ÉeF5Ù݇¥¿ çüŸÿ8ác¨Yù¯/u=^o_SÕµ)·—OZÑ™Bª 5 *ŠõjœôYÿxGüg?ñ›6lÙ³fÍ›6lÙ³f̓íÿÞ[Ÿœ¯fÍóÍ›6lÙ³fÍ›6lÙ°uû¿þ0?ðÀ#¦^VlÙ³fÍ—•›6^VlØ?Lÿz£ÿeú޳fËÊÍ—•›6lÙ³fÍ‹Úÿ}úëúòîÿÞ‰ã#~¼—•›6lÙ³fÍ›6lÙÓt÷‚‘ýyÖÿÞé¾cõaVlÙ°tÿï-·ÎOÖ0l¼¬Ù³fÍ›6lÙ³fÇSáyX…Ž5.îÆŠª¢¥˜öu9ó[Ï_óÞzÿœ©mKòkþqÑàòØÔ?Fëžwº ¼P˜Ï¬¶ÊÄ¿& Þ‘$S†ÏUþAÎ3yþq«MŸIü°²‘.¯c‰5 BæW–âíãi‹( ©àWÛ;ælÙ³fÍ›6lÙ³f͛ۼ÷_ê§üKfÍ›6lÙ³eôÊÍ›6^VloþòÜü£ÿ‰`vÊÍ›6lÙ³eŒ¬Ù³fÍ›éýfÿŒ€L¼¬Ù³fÍ—•›6l¼ÙY°~™þõEó?¨à›6lÙ³fÍ›6lÙ³e7C“Ÿû'ÉflÙ³fÍœó3þ:ÑÿÆÿ‰€FÜ0 ôÏ™w¿“™¾_ÖFŸÿ8ûyåŸ2èZ^¿/™®nbV÷—•íîMR«Sħ·löOäGåUÇå–æÑ5kÕ¿Õµ+ëZþdÓŒ\]Α­[àS°55랣òïûÇþͰôåfËÁ¿ñåÿ=ÿã\›6lÙ³fÍ›6lØ”óÅi ——’$6УK,²°HãEfvjP7$šgÍ/9~tþeÎ[jZÏåWüâ¤pØ~[DÑØj¾{ÉŒYÀtòZ.TZŠ/6a½V¢¾Úü“ü•òÇä•m.¼H~;›ÉEÅìçíM;(˜ö²6ÖpiÿxGüg?ñ›6lÙ³fÍ›6^VlÙ³`û÷–ççëÀ³eåfÍ›.™Y³eåeåfÁÖ?îÿøÀÿÌٳeæÊÍ›6lÙyYyY°~™þõGþËõ3eåfÍ›/6VlÙ³fÍ›¶þú/õ×õåÝÿ½ÿÆFýx6lÙyY³fÍ›6lÙ³¦è?ï?#úò­ÿ½Ó|Çê¬ٳ`éÿÞ[oœŸ¯æÍ›6lÙ³fÍ›6lÙüÏüÐòÇäß—.¿0?25´ÍÔSÔürÈ~ÌP «I#vUÄíŸ=.4O<ÿÏÁ5›†ÖdÖüƒù¥ a´åíµ rYŒÒ¬œiÑ¢d ðÔ±¨úUäO#è–žR²ò/’,¢Óôm8¤0ê֋ñ;ñ“¹Ý˜îNfÍ›6lÙ²ò²ÎVlÙ²ò°}·ûÏuþªİlÙ²é›+6lÙ²ò³fÍ›Ûÿ¼×?(ÿâX+6lÙ³fÍ›6lÙyY³`û³ÆÀ¦l¼¬Ù³fÍ›6lÙ³f̓ôÏ÷ª/™ýG Ù³fÍ›6lÙyY³fÊn‡'T?ñï’¼Ù³fÍ›87ægüu£ÿŒ ÿ9м‡F®ÄçÉ=rÇEó?˜nþqƒÈžuѵ¨¯æM[R·º¹Ó¬ÚèÈ}9æäY¢ V§8öß>‚þEyóË^Xýùó¬[ëži7R¹ºµ§¦ 4à• $oû9éÿ.ÿ¼ìÛ2ò³`ïøòÿžÿñ®Í—•›/+6^V^Vëúþ™åM2óÍg¼†ÃH°…§ºº¸qq¢ŠÔ³PTô¹ØgÌM_óÍŸóð}E?.ÿ(×Uò‡äݪ¤ÞaÖï"0Ï«#6Ö¶Ü*80¤£«8Û‰úOä"ù{òÓC´ò74øt½ Å8Am ¯wsÕÝŽììKÔä«6?ïÿŒçþ#€sfËÊÍ›6XÊÍ—•›6lØ>ßýå¹ùÇúðlÙ³eåfÍ—L¬¼¬Ù³fÁÖ?îÿøÀÿölÙ³fÍ›6lÙ³fÍ›6Ó?Þ¨ÿÙ~£€lÙ³fùæÍ›6lÙ³fÍ›µþþ/õ×õåÝÿ/üdo×ófËë›+6lÙ³fÍ›6tÝýà‡ä^Aõ¿÷ºo˜ýXU›6^ Ÿýå¶ùÉúðlÙ³fËöÊÍ›6lÙ³Ïó?ó“þIÿœpÓZïÎïÌÂ$Ó´gS{xÌÁ*Vª¥ˆ«PíR¡ºg™?-ç<ùùõ«ió™Ÿ×t¸ÚmCHòDÉm§´¤~³OL;"õGbĹôˆª± UDUTUPÀÐ ?ÞÿÇüGæÍ›6lÙyY³fÍ›/+6¶ÿyîÕOø–Í—•›6_¶VlÙ³S6]2³fÁöÿï-ÏÊ?ø–Í›6lÙ³eåfÍ›¦lÙ²ðu‡Y¿ãà›6lÙ³fÍ›6lÙyY²ðv™þõGó?¨à›6_\ÙY³fÍ›/+6l£ÐäçþÉòY›6lÙ³güÌÿŽ´ñâG<ùù™ù§åÉýù¿ó÷ê:g¨!GôÞF’R XÕPÉ©µh+ÔŒðÿæoüçGšîô‡×?&¼ŸvšRÏkg¯æ(„1GqpÔUhPì¤teß=ùeùiåÇ“óæòÆ÷Ì·7RN‡Nÿyâ¶p q§Â§áß­OùG=;åß÷ý›aælÙ°wüyÏø×æÍ›6lÙyY³a™üÓ£ù'K¸óG›ï¡Ó´›HÞY®'j(XÔ³P –n"¡T{ ù¡§éšßüü[^Ì^cŽ}/þq·F¼f°²4‚÷\»‡oRZra=wŽ‹²ü{¯Ô[+K}2ÎÛGÓbK{8– x#H£AEU _6lÞÿÏüGæÍ›6lÙyY³fÍ›6^V·ÿyn~qþ¼›6lÙ³fÍ›6lÙyY³`ë÷ü`á€sfÍ›6lÙ~ùY³fÍ›®^VÓ?Þ¨ÿÙ~£€lÙ³fÍ—•›6]r³fÍ›¶þú/õ×õåÝÿ½ÿÆFýx†VlÙ³fÍ›/+6lÙ³¦è?ï?#úò­ÿ½Ó|Çê¬ٲðlÿï-·ÎO×€seåfÍ›6lÙ³c•Kˆ*Ç`x›óÿþr¢û˺öùÿ8åokæOÍÝ]Ñã†QÎÂÆØŽ[© ­øC4ßz3þq×þq]ü‡¨_þr~yO™?8uÙZMBþ¾¥¥ª"´N(¢”ŸìÓzû1˜±,Æ¤š“•ƒ‡ûÄã8ÿˆà,¬Ù³fÍ›6lÙ³fËÊ̓í¿Þ{¯õSþ%€3fËÊÍ›6lÙ²ò³fÍ›Ûÿ¼·?(ÿâX6lÙyY³fËÊÍ›6lÙ°}‡Y¿ãà Ù³fÍ›6^VlÙ³fÍ›éŸïT3ú޳fÍ›6lÙ³fÍ›6Qèrsÿdù,Íœßó[ȷߘúžRÒõ› ne‹ëVc÷íšÉ7%à\mËzÇ<ÅåÍ>ÏòçóŠ/)þW^ßÞhë£\Mæ+¸’æÞÒX×ý÷¯ ¥5wfÐg:ü©‹F‚(¼Ûù¯ ëöÏyª\\¶¹¨¼Ñ[ÆÓ\7¢†6!ÑU’…úu¨¼²ŸžÞpó²ùšîí-<¹4Z^•¥ÃİÈaµÀ w“‘ô É÷äÏæ^±­~V[ùÆþÖ}gZ²²AlAžåífhj s`¡Žô­p’ÿÍ7Þp‘u]gE½ÐgUô…­ÿQ”úƒ#‰éרÎmù‹ùkåÏÍ}¼©çË$¾Ó‹ú¨JÇ(RD$2×cžóÿü௘SI};ò¿Ïº½ÍŒsÚÝÇ¢ù‚Su “ÛµT™¹ D¢…úsØ¿’ÚŸŸõ-düìÓìôí~ÖîKhÅ€¤[FŽUä?ý[èÏPù^Ý%±äó$gÔmšµÉÔâÿ–˜¿ßS‹þZbüs}N/ùi‹ñÍõ8¿å¦/Ç}R?ªqúÄtõ«Ëz}ž˜êqËL_Žo©Åÿ-1~9SþZbür¾§ü´ÅøæúœòÓã›êqËL_Žo©Åÿ-1~9¾§ü´Åøæúœ_òÓã›êqÿËL_ŽsÏÍ_ÌŸ)þJyjëó óW·°Ò-Tб>¤òÒ« )»<ŒvA§S°Ïþ]~Jkÿóšºô?Ÿßó”¶’i>H¶ ¾Uò\¬Þ”° ]Ý«òpkýÚØŠ(ßé¶Ÿ¡Øi–úF’ÖÖ¶‘$öð§âUTöÁS‹þZbüs}N/ùi‹ñÍõ8¿å¦/Ç7Ôâÿ–˜¿mcú˜_¬GOXšïO³ÓýN/ùi‹ñÍõ8¿å¦/Ç7Ôâÿ–˜¿¿©Çÿ-1~9_S‹þZbüs}N/ùi‹ñÍõ8¿å¦/Ç7Ôãÿ–˜¿ßS‹þZbüs}N/ùi‹ñÍõ8¿å¦/Ç7Ôâÿ–˜¿ßS‹þZbüs}N/ùi‹ñÍõ8¿å¦/Ç7Ôâÿ–˜¿ßS‹þZbüpl±‹k…L{ï¶ø êqÿËL_Žo©Åÿ-1~9¾§ü´ÅøæúœòÓã›êqËL_Žo©Åÿ-1~9¾§ü´Åøæúœ_òÓã›êqËL_Žo©Çÿ-1~9¾§ü´Åøæúœ_òÓã›êqËL_Žo©Gÿ-1~9¾§ü´Åøæúœ_òÓã›êqËL_Ž ³µ}j\Fk «·¾qËL_Žo©Çÿ-1~9¾§ü´Åøæúœ_òÓã›êqËL_Žo©Åÿ-1~9¾§ü´Åøæúœ_òÓã›êqÿËL_Žo©Çÿ-1~9¾§ü´ÅøæúœòÓã›êqËL_Žo©Åÿ-1~9¾§ü´Åøæúœ_òÓã›êqËL_Ž Ó­c[˜Ø\FÄWaZô8YGÿ-1~9¾§ü´Åøæúœ_òÓã›êqËL_Žo©Çÿ-1~9¾§ü´Åøæúœ_òÓã›êqËL_Žo©Çÿ-1~9¾§ü´Åøæúœ_òÓã›êqËL_Žo©Åÿ-1~9¾§O¬Åøæúœ_òÓã›êqøù‹ñÍõ8ü|Åøâ¶ö‘‰c"æ3G]·ß|uÕ¤m4Œn#»lkãˆ}N/ùi‹ñÍõ8‡ü|Åøæúœ_òÓã›êqÿËL_Žo©Åÿ-1~9¾§ü´Åøæúœ_òÓã›êqËL_Žo©Gÿ-1~9¾§ü´ÅøæúœòÓã›êqËL_Žo©Åÿ-1~9¾§ü´Åøæúœ_òÓãEA”H¬ö‡C¾D5{XÞòfiãBHøMj6Âß©Åÿ-1~9¾§ü´Åøå›8ûÜÅøå}N/ùi‹ñÁ“ZÆm­ÔÜF2o½øêqËL_Žo©Åÿ-1~9¾§ü´ÅøæúœòÓã›êqËL_Žo©Åÿ-1~9¾§ü´ÅøæúœòÓã›êqËL_Ž_Ôãnbür¾§ü´Åøã&‚ÞÚ).îo ŠQ¤’I‚"(©ff  É=|Èó÷çïŸÿç'õ-Oò_þq.Á“É­q«~b‰!·Fζª}.DSˆtv$€0löä7üãÿç4‘¤~_Ç Ôf…"¿ÕçU7—¥IbÒ¸€±'ˆÛ¥jEs¼}N/ùi‹ñÍõ8¿å¦/Ç7Ôâÿ–˜¿-#ú™_¬GOX[ÓìôÀŸSþZbür¾§ü´Åøæúœ_òÓã—õ8ÿå¦/Ç+êqËL_Žo©Åÿ-1~9¾§ü´Åøæú”_òÓã›êqËL_Žo©Åÿ-1~9¾§ü´Åøæúœ_òÓã›êqËL_Žo©Çÿ-1~9¾§ü´ÅøæúœòÓã›êqËL_Ž ·µŒApÄdJöø»à?©Åÿ-1~9¾§ü´Åøæúœ_òÓã›êqËL_Žo©Åÿ-1~9¾§ü´Åøæúœ_òÓã›êqÿËL_Žo©Åÿ-1~9¾§ü´Åøæúœ_òÓã—õ8K˜¿¯©Åÿ-1~9¾§ü´ÅøæúœòÓã›êqËL_Žo©Çÿ-1~86 XŽ‹ˆÈ!7ßo‹}N/ùi‹ñÍõ8¿å¦/Ç/ê‘øù‹ñÊúœ_òÓã›êqËL_Žo©Åÿ-1~9¾§k˜¿¿©Çÿ-1~9¾©ü´Åøå}N/ùi‹ñÍõ8¿å¦/Ç7Ôãÿ–˜¿ßS‹þZbüs}N/ùi‹ñÍõ8¿å¦/Ç7Ôâÿ–˜¿ßSþZbüpm•¬je¥Äf°¸Ú»{à!gü´Åøæúœ_òÓã‹G¥™G(¦V*ªÇõcÿCIüãþ³~†“ùÇüfý 'óøÍúOçð ›ô4ŸÎ?à7èi?œÀ7ôÍúOçð ›ô4ŸÎ?à7èi?œÀ6oÐÒ8ÿ€lß¡¤þqÿÙ¿CIüãþ³~†“ùÇüLß¡¤þqÿØ.ÇJx®Bà€Oì°í?CIüãþ³~†“ùÇüf:;Ì€þC`o©Åÿ-1~9¾§ü´Åøæúœ_òÓã›êqÿËL_Žo©Åÿ-1~9¾§ü´Åøæúœ_òÓã›êqËL_Žo©Çÿ-1~9¾§O¬ÅøæúœòÓã›êqËL_ŽQ³ŠŸïL_ŽL}%ÿ~/÷þÜ’æÎÿ9®yÓEò¤«ùKa5î½u*@$€#=´L~9•_feeM7î3œþJ;y}&ò¶äý{JÔ{½XŠ'k‹®;Iq •ݪße~Ê…0§Ímç¿ÍO.Íù'æmâ×W¸1Çw¯Q¦2Ã*¹’"©VUøW€£wÁ×Z™ÿ&¼Íæ;¿+è7ž`Ó<ÓèOlöekkuB.9ôŒÐ70Xõøs³þI~_\~Xù;OòŽ¥*M}«5̑ךyWâM µ VG3?ã­ß ÿ9ÏsfÉß—Þ?öm‡™³fÁßñåÿ=ÿã\›6lÙ³fÍœ7þr þr Ë_óŽX>rópk»Û‡izE»/Öµ †4T‰I¯HæÀ7Øš òåüã7ž?;õm+ó»þsT:¢¼Ú†“äG‰–ÓM2aõþÀwEëF}ØÔŒúA°Tªª¨l6³fÍ›÷„ÆsÿÀ9³fÍ›6lÙ³fÍ›6lØ>ßýå¹ùÇúðlÙ³fÍ—•›6lÙ³f̓¬?Ýÿñÿ†3fÍ›/+6lÙ³fÍ›/+éïTì¿QÀ6lÙ³eåeœ¬Ù³fÍ—•‹Û}úëúòîÿ¿—ývýx6lÙ²ò³fËÊÍ›6léšûÁÈþ¼„kïtß1ú°«6lØ:÷–Ûç'ëÀ9³fÍ›6lÙ² ù™ù‘åïÊ,ßþbyúñ,´}>2ìÎÊW§ÃAˆç#•Aü3çŠyãþ~­Rôk~BüŠÒ€Qc/;]G\šX÷bcãH¸¶ô‘Ћ|?Eÿ/ÿ/ü½ùWåû?!~_éð隊ŠVœšŸŽz»¹Ý™‰'Ç&³fÁÃýâ?ñœÄplÙ³fÍ›6lÙ³fÍ›6¶ÿyî¿ÕOø–Í›6lÙ³fËÊÍ›6lÙ°}¿ûËsòþ%€3fÍ›6lÙ³fÍ›/+6laö¦ÿŒ€LÙ<ò¯ûÊÿñþ¡’Šf¦jf¦jf¦jf¦jf¦jf¦jf¦jf¦jb#÷2¨ß«9è2ófÍ›6lÙ³fÌÝN?ìŸ%™³fÍ›6poÌÏøëGÿþ$sžfËÉß—Þ?öm‡™³fÁßñåÿ=ÿã\—•›6lÙ³Íóÿó•>Rÿœr:N¿î¯æ½b9KÑtȽ[‰J©âòT¨X‹P‹™*¦‡8ßüãÇüãç™¼Ýædÿœ¯ÿœ§Xî?1.BÒbaõ]Í–±ME Ü[»IƵo§¿–%›rMNVn¹³f̓ûÂ?ã9ÿˆàÙ³fÍ›6_\¬Ù³fËÍ•ƒíÿÞ[Ÿœ¯eåfÍ›6lÙ³fÍ›6lØ:Çýßÿø`›6lÙ³fÍ›6lÙ³f̓ôÏ÷ª?ö_¨à›6lÙ³fÍ›6lÙyY³bö¿ßEþºþ¼»¿÷¢_øÈ߯æÍ›6lÙ~ÙY²ò³fËΙ ÿ¼üëÈ>·þ÷Mó« ò½²úe`éÿÞ[oœŸ¯æËÊÍ›6lÙç/ùÈoùÊ!ÿÎ4ÙG'Ÿî¤“\¾·’]/Hµ‰å¸»e!T|#ŒjXÉÙj+Ƨ<Õùuÿ8×çùÈ-KHüíÿœÍ¼õ’ÚâMKDòm±T´²IB4&rƒ“¹21éÈŠ²çÒi$iH.z t€Ð O6^Vl?ÞÿÇüGæÍ–2³fÍ›6lÙ³f͛ۼ÷_ê§üKfÍ›6lÙ³eœ¬Ù³fÍ›Ûÿ¼×?(ÿâX6lÙ³fÍ›6lÙ³eåfÁöfÿŒ€lžùSýåøÈPÎÿ9#ù½¬~^ÜùgÊ>W½°Ñ®¼Ë{%³k¢¶µH“™AË'Ù@ßZœ<ü¶¾üÔÐõë½óXéúÇ–ZÌ^Yù†Åc¶àüpMzôø’ER¤W‘ÁžBÿœžü¸üÌó¾Eòv¬÷:¼i4ŠisL7dR@§¯8Ëó––p}@hËM•mqwyrÖ—1ÁvïÂPex–Và cØ:ü°ÿœŽòæûßAäFI%Ó¡[‹„»´¸´a DŠ.9&Û²Ôø[ä/ùÊOË̽jO(yCU’}E#šdÙÜÁÉ £˜d–5I)þC·dBÿœÍü£ó.©¦ùwF×^kZªÚKõµçäWÒ34B5~JE†9¿ç&¼‘äÈï¦óÏ™¢˜z÷G¶XÜ+%ŲskJ*î‹ûCg褜“ùkþrkòçÍ~YÕ¿1´­\®‰¡9Q{‹kˆ%À¨V†DY oÙO.ÕÅÿ,ç$<ùÁ©Iå¿"êR\jÑZ}zKIí.-¥H úaÙf( »ž½1žvüåÐ?/<Ëymæí~=?NÐ_X»±6’¼‰M雟U‚ ü<[½2üæg冨š¬^Õ&¹¿Ó´ËQ"k ´œ‹BÍŽ•àI¦øWùmÿ9‡å1~VéÞt¸}:ç[w,îYþ²Çû¨bÒKAûJ{äé¿ç*?,ãò”?šWÉ‹ËÓ_0K%­ÂÈ·lH<&?UX‘·%,ÿç ¼ùºuü“,³ih²ÞEsiqk$HÕ*ÅgD$År¬Îc~Tèºv¯Ï«Ï5®ª·h-´ûÉät·sŽcŽ&e@À€ÌoÙ®Ãÿ9 <ÝçËëË›«kß%y»NÕîä¡u•šÌ'ø”£2×=[sýÌŸê7êÎ@: ¼Ù}r³fÍ›6lÙG¡ÉÏý“ä³6lÙ³fÎ ù™ÿXÿãÿÄŽsÜÙ²wåï÷ý›aælÙ°wüyÏø×æÍ›6lÀWa×<“ÿ9ÿ9c¤~PD¾Lü»H<Ùù±p,´Ï-Y¿­2NFït±ò1¢‹”-âÎ0ÿÎ2ÜþX]^~rþnÞ¶½ù¿æêêÓñiÊûýVѪåB…˜=T7ö15$ž§+6lÙ³fÁÇýáñœÿÄplÙ³fÍ›6lÙ³fÍ›6·ÿyn~qþ¼›6lÙ³fÍ›6_¾VlÙ³`ë÷ü`á€FlÙ³fÍ›6_¶VlÙ³f̓ôÏ÷ª?ö_¨à—•›6lÙ³fÍ›6lÙ³bößßEþºþ¼»¿ïåÿŒúð>lÙ³fÍ›6lÙ³fÍ7Aÿx!ù×}oýî›æ?VfÍ›OþòÛ|äýx6lÙ³fÇ*—!U@3ÃÿžŸó–Òé:¥ä÷üã 6^tüÒÔæ(Ð@ÿX´Òâ©$× AF‘8õnÀœÎ=ÿÎ*ÿʾÕõOÎ΋è¼Ûù¥®Èææúâ5–ÞÊä¤6bNl  |\¶(•>Ç$±,Ä’w$õÊÍ›6lØ8¼Gþ3øŽÍ›6^VlÙc+/+6lÙ³`ûo÷žëýTÿ‰` Ù³fÍ›6lÙ³fÍ›6loþòÜü£ÿ‰` Ù²óefÍ›6lÙ³fÍ›Øu›þ0>²{åO÷•ÿã!ýC8¿ü䘔ºf—æŸ&‹<¨4°ërÇnoe±iŸSXä’d$Æ5äsÉ6?–‡_×õ»ùÆ?XѼ‘¨yGRÓµ(omî´û95R¶ŸW¶¼X_Õò¨(…Ú™ß"?0£›HòŸåxòŽ­i®i:P³Ô¤¸Óf··Ó^Þq¸–4Ž_U—oAßÜížjŸòcÍ~`ÿœ\&èú^¡m®Ã­M©Ï§D>©yqZ“Já=A´Œ€:­È… ;adÿ’–¿š‘êòùRüÇÕüÆ<±i皤žÞÚÞK•è|nmíÙÚB)ÉÆ´©8ÿÊË 3\¹òež¡?æ…ߘt%M¦êÒO›¤Ï¹‰¿y-¬qJ•ø`‘‹)FH­?/5ÛùÆß-ùj ò=f?2X]Ïd¶n³­5oQåhøò_ˆ±gzÓù{òïÌyçC¼Ô´+泇óK\ÔZIm$1¤ iH® +@…¾Ä t5Áœ?—^gÔ<÷ç6iš-åæe®yGV6ë ¨AdµŸÑ¨¤Ï¸(f$q´Î±ùsçm;Ïÿó’–¹ iw–Vëä˜ck»ë쥺o®ƒ¼WÇ(ýYhgl„ÿÎYy'Ìaó_šîtM"úúÚçòâ{(žÞÚIRK†¾ è©PCHW~zoLžþgyW½Öÿ)­´ 2àCa¥jöÓ<00ŽÔË¥Ñ$ R0Íð€iS¶yZ_"kzÇ•)5ýB/8iZ“c½Ñµó£[ÜÚêz|Ò§¸Š3 ’O? 41¿Ã¸l“]~OÛÏimæ%ÙùÓ\‹RóÞ=åï™ÖYfºŠÔ×"†)bŽ:/* Òµ¦wùË.y»Ëšõ—Ÿ?)t«ÍSQóNŸ/“õAhŒÂÞ†¬7rpÜ,\ž¬ßÛq‘Ì Sò>±¦þO‹2ùÈúFe†©å=:áõRò.HÐK{oÂÝ£‘±n\ÀÎÿç<‡æÍUü¯1èzʼnӛÎôê0»I¸˜4_X—ˆBÒ Ã 5+ŸZn¹“ýFýYÈL¼Ù³eåfËÊÍ›(ô99ÿ²|–fÍ›6lÙÁ¿3?ã­ü`_ø‘Î{›6Nü»þñÿ³l<Í›6ÿ/ùïÿàÙ³fË“A¹ÏÎKÎJjú³oÿ8ãÿ8õé_ÍÍq8úð•’ §+‹ª,œ]TÔP|D׈3oùǯùÄï*þEÁ˜õ4‹Ì™³eÔüÕtK™¦ŸûÁ‘˜¢vQˆßj‘ž¦Í›6lÙ³eàÓþðøÎâ86^VlÙyY²ò³fÍ›6loþòÜüãýx6l¼¬ÞÙ³eåfÍ—•›6lcþïÿŒü0Í›6lÙ³fÍ›6lÙ³fÁúgûÕû/Ôpé›6lÙ³fÍ›/å•›/+6l^Ûûø¿×_×—wþôKÿõà|Ù²ò³fÍ—•—•›6léºûÁÈþ¼ƒëïtß1ú°«6lØ>÷–Ûç'ëÀyY³fÌJ¢´’²Ç‚ÎîÁUTnK°nN|ÖóÏüä'Ÿÿç'5=gòWþqØÙè–·Xj¾’CèB‘:ÚpG ðôuu“À(`ÙëȯùÆß"Î=i±ÙùN‹ôä–âK[•K^ß5y;ÈìÌT3’x«R›Ó;ÎlÙ²ò³fÁÀÿ ŸøÎ?â86lÙ³fÍ›6^VlÙ³fÁößï=×ú©ÿÀ³fÍ›7LÙ³fÍ›6lÙ°}¿ûËsòþ%€3fÍ›/+6lÙ³eåfÍ›Øu›þ0>²{å_÷•ÿã!ýC$ù«š¹³fÍ›!~~ò›ù¤¿—5Ǻ†#$sE=•̶ÓÃ,g’I±2°e>ôñü»ü—Ñ.¯¯<ÉÆ¡ªë÷ѤêzµÜ—w&ÍVy ã;ñPw;ç]Í›6lÙ±ŸîdÿQ¿VrÐeæÍ›6lÙ²ò³e7C“Ÿû'ÉflÙ³fÍœó3þ:ÑÿÌ:ÿÄŽsÜÙ³¡ùfÒiì¹Ã2úŒ*2Aú:çýòÙ¿Gݾ›7èë¯÷Óæýuþúlõ ©ðô›—­Z{qÀ£®¿ßM›ô}×ûé²ÿGݾ›ðÌ4ë¯÷ÓfmÓ¢©ùgÎÿÎ/Ïo9~qyÎOùÆùÄYÕ5Ûó_™]ƒK…XV8«ÊZ‚ ¾ÿ ´G¢¿ç¿çô/ùÇK F?.ýoSó·;\êúÕñ svå‹AED? S¹®zô}×ûé³~ºÿ}6oÑ÷_ï¦Íú>ëýòÙ¿GÜö‰³~ºÿ}6_èû¯÷Ëfýsþú|¯Ñ÷_ï¦Íú:ëýôØ4ØÜ}L'¤Ü½biíÇ~¹ÿ}>oÑ÷_ï¦Íú>ëýôÙ¿Gݾ[7èû¯÷Ófýuþùlߣî¿ßM—ú:ëýôÙ_£î¿ßM›ôu×ûé²ÿGݾ›+ô}×ûå²ÿG]¾[+ô}×ûé³~ºÿ}6oÑ÷_ï¦Íú>ëýôØ: mp¦&©1ÐxÐàÑ÷_ï¦Íú>ëýôÙ¿Gݾ›7èû¯÷Ëfýuþúl¿Ñ÷_ï¦Êýuþúlߣî¿ßM›ôu×ûé³~¹ÿ}6_èûŸ÷ÓfýuÞ&Êýuþúlߣî¿ßM›ô}×ûå³~ºÿ}6oÑ÷_ï¦Á¶V7 ër‰…ap>xi×_ï¦Íú>ëýôÙ¿Gݾ[7èû¯÷Ófýuþúl¿Ñ×]=Êýuþùlߣî¿ßM›ô}×ûé³~ºÿ}6oÑ÷_ï¦Íú>ëýòÙ¿Gݾ›7èû¯÷Óe>ëýôÙ_£î¿ßM›ôu×ûé°ncp—1»ÄÁEj~ƒ€†uþúlߣî¿ßM›ô}×ûé²ÿGݾ›7èû¯÷Óe~ºÿ}6oÑ÷_ï¦Ëýuþúlߣî¿ßM•ú>ëýòÙ¿Gݾ›/ôu×_E²¿Gݾ›7èû¯÷Ófýuþúl¿Ñ×_ï–ÊýuþúlZßO¹Y£cP:×ï˺°¹i¥e‰ˆ.ħýuþúlߣîßO›ô}×ûé²ÿGݾ›+ô}×ûé³~ºÿ}6oÑ÷_ï–Íú>ëýôÙ¿Gݾ›7èû¯÷ËeþŽºÿ}6Wèû¯÷Ëfýuþùlߣî¿ßM›ô}×ûå³¢h±´VQG(*ÀnÏ!ºÅ•Ä—³IlT‘B>X[ú>ëýòÙ¿GÝtô[/ô}×û鲿G]¾›Íapm­ÐDÕJ ðèû¯÷Ófýuþúlߣ®ºúM›ô}×ûé³~ºÿ}6@ÿ3üû¢~NybÿóóàØhZl|唩ff;,q¢Ô³¹Ù@úh3çzh^uÿŸ‰jö÷`Óõ/*ÎëýôÙ_£î¿ß-—ú>ëýôÙ_£®¿ß-›ô}×ûé³~ºÿ}6oÑ÷_ï–Íú>ëýôÙ£®ßM•ú>ëýôÙ¿Gݾ›/ô}×OI²¿Gݾ›7èû¯÷Ó`Û{op¦&«*PxüX ô}×ûå²ÿGݾ[+ô}×ûå²ÿGݾ[+ô}×ûé³~ºÿ}6_èë¯÷Ëe~ºÿ}6oÑ÷_ï¦Íú>ëýôÙ¿Gݾ[7èûŸ÷Ófýuþùlߣî¿ßM›ôu×ûé³~ºÿ}6oÑ×_ï¦Á°XÜ {…15X%~ºÿ|¶oÑ÷_ï¦Íú:ëýôÙ¿G\ÿ¾›7èû¯÷Ófýuþúlߣî¿ßM›ô}×ûé²ÿG]¾[+ôu×ûé³~ºÿ}6oÑ×_ï¦Íú>çýôù¿G]¾[7èë¯÷Ófýuþùlߣ®¿ßMƒllnÊZ&…Àùà!§ÝRž“fýuþúlšùf ¶u™J“!4?!ˆëDúëCOƒøäK\×4ÿ,é÷aóÜv:]¢¸¹¸Ç’,~d å_9h~z°:ï’õ+}WNYZqk'4(©;n;ÑI3µIû9)Í›6lÙ³fÍ›6lFà‰Ôu*VrÁ§]Sû¦Ëýuþúlߣî¿ßM›ô}×ûé³~ºÿ}6oÑ÷_ï¦Íú:ëýôÙ¿GݾŸ/ô}×û鲿Gݾ›7èû¯÷Ó}Ù£î¿ßM:uÕ?ºl™ý^_å?ÜSéÉ6lÙ³fÍœó3þ:ÑÿÆÿ‰ç¹³d÷ËŽËgEb6èHÃßQÿ™¿àŽ_¨ÿÌßðG+Ôæoø#›Ôçoø#ƒ½Gú—Ú5õúÔÿ.õ_ù›þæõù›þæõ_ù›ï8œ×Km—wS­áF’Yd“‚"(«31 *¹'lù¥çŸÏ¿ÌùʽCVü¡ÿœO´ô<‚'‹NÕ0L¯¦¿Xaš.tV2ìFû+žÕüü”òÏüãï•mÿ/<F}K»ÙEÍõÁûSNÊ&?² x¯Ã^ù×=GþvûÎ_¨ÿÎßyÍê¿ó·üÊõ_ù›þæõù›þæõù›þæõùÛï9~«ÿ3}ç+Ôço¼æõù›þæõùÛþàÓ#ýHM_\÷?Ë€½GþfûÎoQÿ¿àŽoQÿ¿àŽoQÿ¿àŽoQÿ¿àŽoQÿ™¿àŽoQÿ™¿àŽoQÿ¾ó›Ôæo¼æõùÛþæõù›þæõùÛþæõù›þåúüÍÿr½Gþvÿ‚9½Gþfÿ‚9½Gþvûηvú­ÁäÕ¬}ÏŽõùÛþæõùÛï9½GþvûÎoQÿ¿àŽoQÿ™¿àŽoQÿ¿àŽoQÿ¿àŽoUÿ™¾ó›Õæo¼æõù›ï9~£ÿ;Á¯Qÿ™¾ó›Ôæoø#›Ôço¼æõù›þæõùÛþæõù›þàëúõfþáûŸl$ço¼åúüÍ÷œ¯Qÿ™¾ó›Ôæoø#›Ôçoø#›Ôço¼æõùÛï9½GþfûÎoQÿ™¿àŽoQÿ¾ó›Ôæoø#›Õæoø#›Ôçoø#›Ôæoø#›Ôæoø#›Ôçoø#›Õæoø#ƒ´ÉÝF 1û]ÏÀ"Gþfÿ‚9½Gþfÿ‚9½Gþfÿ‚9½Gþvÿ‚9½Wþvÿ‚9½Gþfÿ‚9½GþvûÎoQÿ¿àŽoQÿ™¿àŽ_ªÿÌßðG+Ôæoø#›Ôæoø#›Ôæoø#—ê?ó·Þr½GþfûÎoQÿ™¿àŽoQÿ¿àŽ/m#úÑŽMö×¹ñË»‘ÄòÑ›í·sãýWþfûÎoUÿ™¾ó›Ôæo¼æõùÛþæõùÛþæõù›þæõù›þæõù›þæõù›þæõ_ùÛþæõù›þæõù›þæõùÛþæõù›þæõù›þçJЉ60’jißçiØ_L0 ð¿Qÿ™¾ó›Ôæoø#›Õçoø#—ê?ó·ÞplîÿU·!›¬ÏŽõùÛþæõùÛï9½Gþfÿ‚9½Gþfÿ‚9çÏßùÊ_%Î;Züáx÷>fº·’m3B´Kuvê>"5s1Ø;€§zg—¿-ÿç<åÿ9 ªéÿŸ¿ó˜7×iKÓ¨éž@$¶›g!õ’FqÈ€ÓŠ±ý®$‘ŸJ}W¢¢’¨€**š*¨èªÀÀezüÍÿszüíÿszüÍÿrýGþfÿ‚9^£ÿ;}ç7¨ÿÌßðG7¨ÿÌßðG/Õæo¼æõùÛþåzüíÿph‘þ¤O&¯®;ŸåÀ^£ÿ3}ç/Ôæo¼åzüÍÿsz¯üíÿszüÍÿszüÍÿszüÍÿszüÍÿrýGþvûÎW¨ÿÌßðG7¨ÿÌßyÍê?ó7ÞszüÍÿszüÍÿrýGþvûÎoQÿ¾ó•ê?ó7Þpu´õ{’Y¾Êw?Í€}GþvûÎoQÿ™¿àŽoUÿ™¾ó—ê¿ó7üÊõù›ï9½Wþfÿ‚9½Gþvÿ‚9½Gþfÿ‚9½Gþvÿ‚9½GþfûÎoQÿ¿àŽoQÿ™¿àŽoQÿ¿àŽ_¨ÿÌßyÊõùÛï9½WþfûÎ_¨ÿÌßyÁ¶îæÚä–n‘÷?Í€„¯üí÷œ¯Uÿ™¿àŽ_¨çöÛï9^«ÿ;ÁÞ«ÿ;ÁÞ£ÿ;}ç/Ôæoø#•ê?ó7üÍê¿ó7ÞszüíÿszüíÿszüÍ÷œ¿Uû3Á¯Qÿ™¿àŽ_¨ÿÌßyÊõù›þæõù›þàë ™ªÍýË÷8HÿÌßðG7¨ÿÌßðG'~VbÖ®X“ûÃÔ×°Äõ¯÷¡Õþ9ù‰ÿŸ¨ÎFù¿Î˜úä4ìl<£å™Ñb·…äQ{+Ưõ‰Á!\¯.()E¡¡©ÛÎóƒÿó’oüüÅÓ òy7šV½wo§ê:T­'¡:Í" “Х޵G¡¦ã¡ÏØV™ŠîH¨PE~G®®¢±†KÛ·Á 4’;U$Ÿ3Å_—Ÿó”Óßiþmó/œ’Ýí4û<äÛÚ:™ŸLNHÊô-ñ£ ©!kÌ|8m¡ÿÎ[lµmKξT¿Ð ——ÛÌÖ\O¯}`”äê#‰`8?Å¿Lf—ÿ9nëa¬ê^tòþ….Ÿ ÿ‰,m縊I/¬ ]xÝ0f¤Ÿý3®·çmŠëñyDX]É<¾Zÿ©L¬bæÑXÑK4„€ëáœÌ_ó•šÿøgÎ 7—[Ë>nÑ4WÖ,!¼º‚ý&e[·îÙX€br²oÓlö®ƒy&¡¦Y_ÜÓÕžÚ^‚ƒ“ &ƒæpÛ6lÙ³b7?ÝIþ£~¬äk+Ð|M÷œ¿Qÿ¾ó›Õæoø#›Ôço¼æõùÛï9½GþvûÎoQÿ™¿àŽoQÿ¾ó›Ôæo¼æõù›ï9½Gþfÿ‚9~£ÿ3}çdz‰¿àŽN9þóøä«6lÙ³fÎ ù™ÿhÿãÿÄŽsÜÙ†Nü»þñÿ³l<Í›6ÿ/ùïÿà¼(×õÝ7ʺeç™üËw Ž“a ÏuupëQ¢Š’ÌÄ^ƒÄíŸ2uÿÌ¿1ÿÏÀµfü®ü¸Ô<¹ù=aÁ¼Éæ)¢h¥ÔÃPýNÜ/@GUõG/´ãˆýò'¼»ùa¡YùòûN‡KЬSŒ6ЊoÝݺ¼ŒwgbXžù-ËÍ•›6lÙ³f̓ûÂ?ã9ÿˆàÙ³fÍ›6lÙ³fÍ›6loþòÜüãýx+/+6^V^V^VlÙ³f̓¬Ýÿñÿ†yY³fÍ›6^VlÙ²ò³`ý/ýêý—ê8fÍ›6lÙ³eåeåfÍ›6/mýô_ë¯ëË»þþSÿ7ëÀù³fÍ›6lÙ³fÍ–2³¦è?ï?#úò­ÿ½Ó|Çê¬ٳ`éÿÞ[oœŸ¬`ØåRÄ"бØžÿœ…ÿœ±mP¶üŽÿœpô<Ïù³­;[Åõ7ŽæÛHàüdšð(’ä£/*XöÃßÈ_ùÅ)|‡¬j_›?Ÿ·ž?4õImVX¹ÛÙÛÒ‚ XäøPx•Dâ>Û=ŒIcV5'¹ÊÍ›6lÙyY²ò°pÿxOügñ›6lÙ³fÍ›6lÙ³f̓í¿Þ{¯õSþ%€3fÍ›6l¼¬Ù³eåfÍ›Ûÿ¼×?(ÿâX6lÙ³fÍ›6lÙyY³fÁöfÿŒ€L¼žySýåøÈPÆk_߯úŸÇ<ÿ9›ÿ89åÏùÊí.=CM6š'Ÿí ­¾°ñ3BðÜð ²÷G!™NÃbs˜ÿÎÏ·tOùÆÍJãÏ™W:š<Ü®™,19¶±Jo"¬¿jfè§À>É©9õ7E$Ü1=xÿ/üËòÖ¡ç-jUÐîRÎãP‹êÏ3òøa…–œwäc,øž£<«çÏùà ßNŸ‘6úo–¯ntÛ½Q‘ÒR·6wq ÜKn²}÷ÉŸçuŸ7-5;Hø ãÊ5‘ÿ¤ÊÑ‘>ßî±ÀÔ}¬ç?ùÆÛÿ9];ÝjPGi/‘&ò“€Ž\\HèâqÐp~Ï\Ži™—ºç™¼Ëæ3MÔ¿Áïå}>m&g·”J.¹H¨jxî£ìŸ²sš[ÿÎyºá¼Ãs$Þ]Òg×¼³&ƒ9°7“›‰še”]Îó*·2GÄ­zœú)¢Ø¶™§Úi²°g·‚(Y‡BQ’>tÃ<Ù³f͈Üÿu'úú³ƒ/6lÙyYyY³fÊ=N«ÿPù+Í›6lÙ³ƒ~fÇZ?øÀ¿ñ#œ÷6a“¿.ÿ¼ìÛ3f̓¿ãËþ{ÿƸ õíwNò®•{æŸ2\¥–‘§@÷7w2ׄq «J“ì©Ï˜öVZßüüc]MgZIô¿ùƽí±¤ºåÜ;szra>ññ^Ÿ¼­>¡iöºE¶¤Á­…œI¼/Ž8ÇP=€¥MO¾ Í›6lÙ³fÍ›å›6?ïÿŒçþ#€sfÍ›6lÙ²ò³fÍ›6loþòÜüãýx6lÙ²ò³eåfÍ›6lÙ°uû¿þ0?ðÀ#6lÙ²ò³fÍ›6lÙ³fÁúgûÕû/ÔpÍ›6lÙ³fÍ›6lÙ³fÅí¿¿‹ýuýywïD¿ñ‘¿^Í›6lÙ²ò³fËÊÍ›:nƒþðCò?¯ úßûÝ7Ì~¬*Í›6Ÿýå¶ùÉúð8-jĪª‚K3Pä’vÏš>zÿœüÆÿœœÕõ¿ÊùÃ(mWË–!týοº4Æe³ jã…wô‹ìJPsÖŸŸóÞGÿœqÑÓCü¼³ÿNxDWÚ¬ì^îñ‰äí#‚–Ü*ªÐmã6lÙ³fÍ›6lÙ°pÿxOügñ›6lÙ³fÍ›6lÙ²óe`ûo÷žëýTÿ‰` Ù³fÍ›6lÙ³fùæÍ›6·ÿyn~Qÿİ^VlÙ²þyY³fÍ›6lÙ°}‡Y¿ãà›'¾Tÿy_þ2Ô1šß÷ëþ®\ÜEe·×ޱ[ÁÍ,öR4™°“œÿò¯ókʺùëòÇP–ŠÓËkëxÊË Q••À#Äx©:î‰ýùÿWøä«6lÙ³fÍ›6lÙ±ŸîdÿQ¿VrÐeæÍ›6lÙ³f͘ô98ÿ²|–fÍ›6lÙÁ¿3?ã­ü`_ø‘Î{•—“¿.ÿ¼ìÛ3f̓‡ûÅÿ=ÿã\æ™ßšWü›òåßææF¡›£Z)øÜüsIJ¬0 «<Œv  ø³çŸ–¿'<íÿ9Ñuÿ+kþrãTòŸåÁšÝô/&[HÊ—Ö°¿5žõ\Й?˜Ä¬kTøsꆟi¤ZA¤höðÙéö±¬6öÖè#Š(ÐQQh°ÁY³fÍ›6lÙ³fË镃ûÂ?ã9ÿˆà¼¬Ù³fÍ›6lÙ³eåfÁöÿï-ÏÎ?×€3fÍ›6lÙ³eåfÍ›6lcþïÿŒü0é—•›6lÙ³fÍ›6l¼¬Ø?Lÿz£ÿeúŽ3fÍ›6lÙ³fÍ›6lÙ±{oïâÿ]^]ß÷òÿÆFýx6lÙ³fÍ—•›6lÙ³¦è?ï?#úò­ÿ½ó|Çê¬ٳ`éÿÞ[oœŸ¬g<üÆüÅòßå'—®üÿù‹¨E¥èvjKO1ûoû1Æ£âyìA>ÙóŸôOŸÿçຕóÞ“ªùò3OXï’Ù¤e¼×¥mÒ¬xJ›†ô™Pw.AG?/¿/ü¿ùYåë/!y Æ-;D°N1C¨,NæIœûNENLsfÍ›6lÙ³fÍ›6ýÿÆqÿÀ9³fÍ›6l±•›6lÙ³fÁößï=×ú©ÿÀ³fÍ›6l¼¬Ù³fÍ›6·ÿyn~QÿİlÙ³fÍ›6lÙ³fÍ›6°ë7ü`|3d÷ÊŸï+ÿÆCú†3[þü©üsæüüÿþr%'?+ŸÈz ×¥æ7–´ÓwIa²JäVŒŽ%¾èÛ:³R´9ó§þ})ÿ9¾Dó¥çä™®½=Í ÇÕw+¡%UØOY*+Á¹úVÑE.¨¿Ç~byÆ/Ëß+êþy¹®bÒ,§½hQ¸´‚-Ä ¥+Ló‡’ÿç%<ݨj·ægåýÇ–4Ÿ1¯6ÿôµµøyš2G$p'(à '›QV”9ÔbüÿòŽ—åM/óϺžŸ¢YꥒW‘ÜFάÀ„–1G Z’¢‹ß¦ù»óÏòÿÈbռ߿->Ãë¶ÿ[¶Ì+,Ô@*Y*GÄ6Ä|Ïù÷ùwäØìî<Ïæ]6Î=BØ^ZœZÜšz¨¥’¿´6ðt?šZTúêhÏdÚc迦ÖÿëÑo©Ã—¥ö½*oêׇìõÈ&¹ÿ9?äh|©æ>y+Q¶óøvÛë76–s©`£í 'f¡\ïÚ}Ø¿µ‚ýWˆž$)ÞœÔ~836lÙ±ŸîdÿQ¿VrÐeæÍ›6lÙ³fÍ”zœÿÙ>K3fÍ›<ݯ~gy¯Ì`Ö¼±ùWkbÑùac:Œ×îãךDõ¼"5n,«7r>ê¿–^~´üÎòÕ‡´ÈÚ¯‹BäŽDbŽ„W _™ V2{Û¯üHç=Í›'~^4³¡þvúÕ9|‡ŽÔu(tÈMÍÁ¯ePwcà3Í__ó“ÚOä–Î>o­<·>†‘ ¹¼–Š‘ñ 90ƒ±ÎäÈÿ=ÎMy—Müíÿœ·Kh|«cW‘âw{xætÍx¥cE?i\Ÿ²h›gÒU@D ¨ *ª€T Ø:°ÍQ㚣Ç7!ã›ñÍQ㚣Ç5GŽjÕ9¹Õ9ª 9ÃiÙ Â f,äš·Ä“Ägœ4/ùõoüäG–u+O1hgE·Ô,gŽæÞUÔ©$lNñPÐŽ‡cß?K¿–Z忦ÜyêÝ-|Æl£ŒQÈ%O¬(FWU@C‘ÈQE+Jm€?ô›íwò×Íš6‰o%Þ¡u£^Ã/'’F‰‚ª¨êIØ ùùùoåÙ<É©y*ÛÉ~\üÄÒõ V[ë76 Útq-›E2B—3ͨÌBÆжF<Çùcço/ù+òß^~`³‡LÓ5M6öÃIÐàÕïbšêáK;¯Ýª>ÚòŽw_!~LßéÞeò²ëú=Ýýž›ùyyf—:ºJðÝMt@æ…R‡ìŽ‹ðôAù9ùK¬ýwÊ·ròäìtÿËk»×Ö¼½ Ǿb øÁã!އ^>ØòßÈ~rЬ´Ëë¯+Í}wkùW&œÖzŒL°Ëx/‹‹9‰V<Šo„‘Û8•§–üýæÅó½Ëhžf»‹RòYÓ­c¾òÜ:@†åoO«A¿÷ÉÄ|ÿ:gÙM'ƒL²‚e)"[B¬§b@?,6Í›6lFçû™?ÔoÕœ|A¾:£Ç*£Ç5GŽj¾C+ñ˨ʨÍQã›ñÍQã”ÄPäëþÉòY›6lÙãÿËízÃÈtüΰóUÂÚI-ÌZÜ^³ÎÑ­‚ó_2‘A¿¶ÿÎ=ùußÉû-ù˜\Ck¬µåÉJÐÊ!¹¹ycâèC%TƒÖ»âwŸ—ÚOå£/ùm®ÞÚAõ†7—2\¿64Ùä%€ éZ`\Ù³£yZö[{N>4õî œ‘~•¸ÿ#þfý)?ùð7éIÿÈÿ€I¯-Ưn!Œ •$ª ð;gœ5ŸÉï/ùÃͺ?æ~¹¥­Ï›ôöštò3áCV$Å_M˜Hb ³ÓzdÓé¶ÉhŠ–bƒrw8?ô¥Çùð7éKò?àoÒ—äÀ ߥ.?Èÿ€¿JOþGüÍúRãüø›ô¤ÿäÀ ߥ.?Èÿ€¿JOþGüÍúRò?àoÒ—äÀ ߥ.?Èÿ€¿J\‘ÿ3~”Ÿüø›ô¤ÿäÀ ߥn?Èÿ€0ê3}LIðrõˆû”ã€ÿJOþGüÍúRãüø›ô¤ÿäÀ ߥ.?Èÿ€¿J\‘ÿ3~”¸ÿ#þfý)?ùð7éIÿÈÿ€¿JOþGüÍúRò?àoÒ—äÀ ߥ.?Èÿ€¿J\‘ÿ3~”Ÿüø›ô¤ÿäÀ ߥ'ÿ#þfý)qþGüÁj3iÜðª˜éðç Rò?àWéKò?àoÒ³ÿ‘ÿ3~”Ÿüø›ô­Çùð7éIÿÈÿ€¿JOþGüÍúRò?àoÒ·äÀ ߥ.?Èÿ€¿JOþGüÍúRãüø›ô¤ÿäÀ ߥ.?Èÿ€¿J\tø?àoÒ—äÀ ߥ.?Èÿ€.ÏQ™ýn\6…ˆø\5Kò?àoÒ—äÀ ߥ'ÿ#þfý)qþGüÍúRò?àoÒ—äÀ ߥ'ÿ#þfý)qþGüÍúRãüø›ô¥Çùð7éIÿÈÿ€¿JOþGüÍúRãüø›ô¤ÿäÀ ߥ'ÿ#þfý)qþGüÍúRò?à Óõ¤¹Dn5è€v8j—äÀ ¿Ò—äÀ ߥ'ÿ#þfý)?ùð7éIÿÈÿ€¿J\váÿ3~”¸ÿ#þfý)?ùð7éIÿâ¿ø›ô¤ÿäÀ ߥ.?Èÿ€¿J\‘ÿ3~”¸ÿ#þfý)?ùð7éIÿÈÿ€¿J\‘ÿ3~”¸ÿ#þb¶úœí,jxPº°pÕaü±Òn<ñæPͧXðõE¸ç'ï\D¼Tñâa]úd”ybð€A}þÑþ™á‹ßÿàôÍþ½ñþÿLßá‹ßÿàôÍþ½ñþÿLßá{ßÿàôÍþ½ñþÿLßá‹ßÿàôÍþ½ñþÿLßá‹ßÿàôÍþ½ñþÿLßá‹ßÿàôÍþ½ñþÿL¿ðÅçŒðGúe…ï|cÿ‚?Ó7øbóÆ?ø#ý3†/|cÿ‚?Ó‡ËW‘È’1ŽŠÀŸˆö?,»-ÞK,’)ŽŒÄˆô'剅ï|cÿ‚?Ó7øb÷Æ?ø#ý3†/|cÿ‚?Ó7øb÷Æ?ø#ý3…ï|cÿ‚?Ó7ø^÷Æ?ø#ý3†/|cÿ‚?Ó7ø^÷Æ?ø#ý3…ï|cÿ‚?Ó7øb÷Æ?ø#ý3…ï|cÿ‚?Ó7ø^÷Æ?ø#ý3†/|cÿ‚?Ó7øb÷Æ?ø#ý3…ï|cÿ‚?Ó&z]³ÙÚÇm59¨¡§N¹Ô´ «»©.b)ÁÈ"¤×§Ë…ï|cÿ‚?Ó7øb÷Æ?ø#ý3†/|cÿ‚?Ó7øb÷Æ?ø#ý21¦jÐkÚÆ§ä;CSòúÛ=áqHȽS$^›nO§•@¡ñÉ?øb÷Æ?ø#ý3…ï|cÿ‚?Ó7øb÷Æ?ø#ý3†/|cÿ‚?Ó7øb÷Æ?ø#ý3…ï|cÿ‚?Ó7ø^÷Æ?ø#ý3…ï|cÿ‚?Ó7øb÷Æ?ø#ý3…ï|cÿ‚?Ó7øb÷Æ?ø#ý3…ï|cÿ‚?Ó7øb÷Æ?ø#ý3†/*MhO‡Ë†/|cÿ‚?Ó7ø^÷Æ?ø#ý3…ï|cÿ‚?Ó7ø^÷Æ?ø#ý3…ï|cÿ‚?Ó7ø^÷Æ?ø#ý3†/|cÿ‚?Ó7øb÷Æ?ø#ý3†/|cÿ‚?Ó7ø^÷Æ?ø#ý3…ï|cÿ‚?Ó7øb÷Æ?ø#ý3†/|cÿ‚?Ó7øb÷Æ?ø#ý3†/|cÿ‚?Ó(ù^ôíXÿàôÉ7èéÉþë‡^ø{›6lÙ³fÍ›6lÙ³fÈM¦•å«ÿ3Kæ»&‚o2Áeú6WŽnN–þ¯©Á5ǽJ×µrm›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›Iã‘Þ(ÝYã uµª2¨i~ZÖ|ǧjW­¾cÑ’äÙ¯­Ib[” )ôÃn@û@Óµ2I¨ë6G¦5[¨m½fã«"§&ð"§ ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ°¦-{Mží´˜o {ä¯(U2 uªÖ¹óî—å¿2ioå?>4 §j ŠašoKÔ1ºº€C+T0S±ÉeÝݾ]ßJÛÆ*ÒHÁUG¹; Öw¶úŒ){a*Mo ªIVÄlpVlÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fé¹ÈO—t¯-[Vóo–š uMKêñjC7©ÈÛ)HƒÅTª’6½ë“lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lØ’O»ÂަHéÍA­w«íWKòÖ¹¯éwz›A/˜4c<Ö)ëRX½x½9Ó * > iÔd“QÖ,4p«\Ãl²73H©É¼H©Ã k¸é›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ…6:ö›©ÊöšmäÏÛH¥Veí¸£#þmÒü·æ9ôÝ#Ím—6×°j60¼Üëä˜ÝT0-Ä“¶à÷(Ôu;="yªÏ´…2Já§ © ÁPÌ—³ÀÁãpYMApA±LÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6rÏï1ÞyKòëÌžaÑÝ£½¶Óæ0ºÖªÌ8†Þ¢µ®y»ÍþPÓ?*ôO˯9y>´Õ×TÒí.,ב_(Y…íRIåñ–ø·ÏxfÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³a7˜muí6æÏË×QÙj2FV‰b3,lh dåNÃÏÎ?è×–ù¯i>§w¬ê6Z‡Ö¤¿½<æ–cb$&ƒ¢ƒ²¨û+µryå›=/ò'Müä³WΨֺÓjÜÖÞin4i¿¼1•n< SuÏ'ùwJüàóÇŸoüói¡Ÿõ=2ÆÈD‹mÛ ]¢Yà嚥–‡a“ÿùÅmn÷Zü½³]Zi.&°º¾ÓÖYKxí®4$±$ž ç¢ófÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6l ¨Z}~Ö{#ÃëDñú‘:rR9)ìµÇ>zþpþTùCÈz&ƒùYùcj÷Ÿ™’j6÷6W±•: ·;‹»»„PÞŸ†.Ê­öFt¿)ùOLüØóæ-ןm¡ÔŽqd·0‰Ú5¶Ï“—gbÜ–‡aœ‡òëV¸üÊË?!yÁÞûK‹ôä·Q\xîÎ)ŠÜL« U܆®ùßÿ) Ê_š>tü¼ÑA ­®ª[ÚF¼!‚YÃ,‚5 +qнNz§6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³Îó•ZÍæ•ä)m´É¤·}JþÃM’X‹X®gT’…hA*H¯¾C|Éå­3ò§ó#È?à[XtÛ}_ëš]ü6‘’tŽR7‘c3«¶ÀÎ{6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ› õ»{û« ‹m â;]Aãe‚yb2¤nFÌP2§‡!ž2ÿœ{òýßåνù§gª]ëzŒ6—s_^É$­f\…QöPDJž#jœæíå«5ü„_ÎuEÿTk¿¥Ê­úÿY¯[ûÏOÁÕ8í{Éš.™ùÅùƒç ¿=ÙŨÛiÖze••µä"Hà[‹q,®‰ !]˜ý¥Ó¾Nç5{½KÈßPÔ¦’á´­OQÓ"–RÅšiÙ#«1$Ñh>Œô–lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ‘Ÿ9ùe<ç¡ßùR{«›(õÝî,äôç\P˜Þ‡‹S½3Äþnò'•¼½çO!þ_~HØG™ô;è&Õ.¬T+Á¦"þóëòFªÌz#·&oˆ)ÊòÏ”´Ï̯$y÷ó ÌХƿ.¥«ýVúHÁžÑlIXÞF«Äˆ4R7'ü¸¾_Ο7ùjßÏñ.£ceä›MDÚ]ÅêA%ÝÓðyš9*¬À…ˆ¨ñγÿ8á#éw¾vò.ÇKе÷†Á i3D²úK]‚«ÅE³Ô³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lŠyëÊVÞ{òö§äÝH•¶Ô­d¶vªó ±ýsÏ:wåWž<Ì|­åßÌgÓ“Dò¥Ä7FâÒy%—Q–ÙxÀZ3b¿hÑä©Û=c›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›8Ÿ’?,ï4MkÏ–¸ðIaæ{Øæ"f."ÂT 5¥ Û¾qÈ¿#¼ëuå›OÈÍRm8y.ÒñêI<¦ê[¥õRØÛú`+tS'¬v¦Nõ_Ëÿ9yKÍ:ïšÿ,Nº´ó-¼+sõÌ–æÚêôÖt+Þ )J§Á¸ë¾t¿ÊOËØÿ+¼­cäÔŸëS@$’âã‰_VyœÉ+…$ÐcA\é9³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6ë?^ú…ÈÐý3¨ú/õTž¯Ñ+JìsÉŸ•^AüÆòI®yƒBÑ57_·û’ÖåÖ®=Y½BFfÞœhÃ]¼wÉ^£ù{ç_)ùÌ>cü´]:âÓÍ1D÷1^ÜÉYÞ$~™8Å(”¡áû½×®øP¿:§“4Ï'ÞyâÞçÌ>Tkƒ »g†+ä¼%®Tº‰L|œòSÁ©Ó:å‡åö¯£ëz÷æGÚÜkúû@†ÚÒF–+[ku"8„Œ¨d5%‹zkÖ™Û³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›9çåçü­+^yJ)ŭۘ紸`HŠâDÄ*_lçÚ7<ßæ¿5èžxüÏ[ 8ü·o2ZZØ\IsëÜÌœáÙ¢‡€ãP#£õëžÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍœ_ÉŸ—Úš|ëæ=]à“Oó$Ön‘³TŠÜÄâ@@’v¡;g_ÈÏ:¿•ÿåDK6œ<’/9~’ÊnÍ€—Õ¿VôéËö=O_¦ôíUü¾ów“üÙªyÛò¶=>îß]²··»´¿¹’ÛѸ¶_N9Ñ–)¹Ž¢të òòè~VùbÛÊ’\ »±$×7wJ‰n's$¬“@Xì<3§æÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ ü÷óß—5+O˹màó¶î–S]1X£‘…± çn¿dç ü òWœ¿."ŠÊo.hïwxèúΰu©ç»º’Ÿ­êZU¿ÉÔ £aL*»ü¡óƃkæo ùM;ü3æk¹îRòâyãOïB¬'TÔ©õc¥rAyùC­yXÐ|ßùR¶—Riz2è7V7ÓÉn·ñï‰U&âÈÕ4àjÚÉ×äïåÍïí5=CÌ“Ås¯ëÚ„ºûÁËÒWpcBÔ%cP—åJñØsfÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6|ѹÿŸ¦~YG}¨éZ—<å~t»©¬îe³Ò¢–!$,U¾!?JŠïM»g¡4¯ùÌ?!ù›òÊ_Ïÿ%&§®h0J°MiahZþ9‹1´Éñ)aÊŒV›‚sÓšeòê–vúœHñ¥ÌQÌ© âêCÃz]ÇŽÍ›6lÙÉ?/¿;|¯ù¡®y“ÊNšk‹Ï*^-†¦íHÒàŠ˜Ðµ ¦ä xo|Õæ+o(hÚ‡šµ5‘¬ôÛY®æX€g) n  ØTdòKó‹Cüûòn›ù«ä¸î¢ÑõE‘ KÈÖ9€ŽFŒòUgu4£³ÿÎDÎh~^ÿÎ2ë:'•?1F¡%ö¹¼"Æ•bNa=I‹:qZžÜŽÇlõu­ÌW°ÇyjÁá•DaЫ ƒôŒáþzÿœ‡òÏå÷æ•$õÈo›_ózÜ6Ÿ$1+[¨€UýW. ôÚŠÙÒ|ýçKËŸ-ê¾|×VWÓ´‹I¯n !Ž%,Ü  Ø3ˆù3þr¯Ë>|ÿIåí+[’×Ï–“Þi÷&Ñ=d‚µn$"6pÑ®tÔÖüÏå›/)éÜt¯-k«m¨Y\Ì‹ê\ÏišyClké(#«Œ;óGçþ¯ÿ8ûùqùä¯9k-¦ù‡Í‹å]k̪ö—ö°ñÂîͳ(c‘£>³ç;Èu›yÔ3½½£4n¬¤ó =V_³Lè:O‘$ÿœ oÎ_ΟÌo?ëz½å=KR°Ó´ë[ÿBÖÎÚÖ6ôÌй<Ò]ÐÀ^µ¦} ÿŸgÿë9y3þ0ÝÔL™óó—óOüèüÑüÞÔõ?,ùÌÚ_è†ò†…u¡é³^Ám,?²3¬nÄ tãµ~yÔ<ãÿ9+æ?3ÿÎ#y-t­N}S¾Ö¬¼›æ J'xæ±HØÇ!cUdcRj|F2oÈ]òþroòo@ò¯›u_3Z^Gwõ}ZõnäÍ»V6qŽjWbsžéþAùÈß"~mÎIþ`þ`ëZ_šôkíZÎ 2 ÿJÆÒÞÙJGÐ1%–eª ôä¿ò†[íFçþqÉ‘êÖšV¯å}vÞîK—‰\2H§‰e­Txž™æO)þ[Ûùòówó7ʺî·o®iþb}4MA’?Ao£¤¬¨ŒÌ ×q]·9ï_ü±Òü¹ùaqù‡a¨_Ϩkw·³Ü‡µ„ZÌÁ P€8;ñ’O-²'çÿÌíKþqó+óoJÖ®înto5ùxùƒËqÜ\HBß¼ïm©Ü»†  ‡Ï8¿çåOæ'‘ÿ'*ü‡¥ßêzÍíÁ¹Ö|ɢï%†±}4éê(¥g•Ö.E}4ŽVt®z§þ}ƒæØ'ѼÍä ­OÌ-¬é·pÜÜè~dI Δ'Sû¥š@¦E4¥÷ã¾sŸùÈËëÏίùËÛOÊkß3ëÚ—®¼ž—qèׯnÒ„‘þèµ4,x’@¦q/'~jùãþqãò»ó÷Ê^RÖõ Ty3[´°Ñïoæy®-c¼s’ò®ÅE¥o‹|Ýù7üáí¯å—çŸåOŸ5ß3kþfÕ4ûGNÔ5­[jpß(yLQ!¨âÝ d¡¥séoüæõÏ™[òSÌ)ùªA¢y‚ꢆk‹Ø¬«ê8D·¼h’:ÕT–çËùÁ1^þ[~k¯—¼áþ1òÞ±©i—QZèÝÔš•–¨öñ ðÝzq £‡€u§û³|<üŠü¤?ó‘~SÔ¿ç*ÿ1¿65¯)ùÎ/1\¨œêI§%¥Çá’ 6eȃ~ß ù³ò¥¿ç"ç+õ¯&k>k×-¼«eå]#SdÑu·Žñ¨F.œüGˆ5ìÝóÄ~yÕ¿7;|×çï:è:v¿v<­ªI§Ø_Ûùª"ÏFŽÔÒ!=­Å ôäÍÎ0ÇjçgÿœŒüÈüàüÝ×-'¯´­OP¾¹ò´z­þ“¡ëÑiÆþê„Ò÷÷Ȫ «Îµ48Kæ_1~ihŸó‹^lòßžnnôÉt7évºDñë±j7¶ÐË0åm5Ŭ„ò„žé“_°3¶ÊíOþq›ó³ò[TòÇœüɬÉç™ r=bù§Šnq+1TB‚[e<¸Ðoœ/Ïló$ŸßškšœW°þo K{‘w1’Œ FåP‚¿d¹ßbü°Ô¿ç>ÿ'äò·œ|ɬ¯žVhµ¸õ›æ¸I¢НÂ-öTòãMŽs¯.ùKPÿœ‰²üãÿœƒó¿æ.½åÏ3ù_QÕ,4ûHÛÛÙ[Ú£Öh‰$¬£áÞ¤TçÒŸù÷¾­{¨Î;y;VÔ¦šòñ¬®¤žF’G"y)VbIðÏ™^^Ôn­¿ç9üõcsqk¯_ùÃP’âhdxå’î0ªÛN½6À÷‘zï”üùù?å] óÎEÿ44‰WÌW?¤ÛÔ0ˆFX*)ãðŽ\È¥G†_êÞaüºüŸÿœ„ü­Ò|ì\éÞPó›“wsy#^D²ÌUJ‘È(¨PßÇ;_›]åüÚüÈ–fg‘¿#­Y™‰,ÄÀµ$É=Îü‰×u=;Ì¿óŒm…ÝÒØÍä­ZY¬¢™Ö)Þ8ܧ8ÁâÄ•!žQòÏüäGåÏž¿ç/<÷ù¯izÑïµI,í,µ/BÏNýI·‰à$µ‚ƒ’uÚ¸ÿ7ùŸÍßó“^aÿœvµó>¹¬yfçÍš%új“i72[É2#…2.ôe3¥j+žœÿœ-еÉßùÈ̯ùÇ» {UÖ|§¦éÖ:ªê÷-q4rÊÊÄh:Wl÷gçW–|» Aqÿ9'•có|«§\>’-Ù4'Ó†ŠÌ ÕV½ižKÿœ`ÿœoÖ¿1®|Åÿ9#ÿ97n‡Ì?˜zjY\ylÀc·´Ó…8C(vgg* ÜiÝkÏÎ_Êo2ÿÎAyÂßþp×Ê:òw䇔ÒËP¼Ôá³e[·ŒóŽÞОžE}CZ³S=ÿ9güã–©~s~Hù<Áù›¨¥žÐÛ¼³²#G™£Ræ8‚À‚¤g•¼Ýÿ8¹/äŸüâïæ­ßŸoÆ£æï5[Oæaý5H`½4p¨-²6Ü«SíŸ@?çµ›­òwɶ¦¥neЬy†­O‚‚k¾àW=›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³fÍ›6lÙ³gÊí?þqþq»R¼Õõ)yòhZ{û‰u´¯7.É•dHg¢¸$‚qÓ:ûþQÎ6ßþKê–š.³¡[~W ˜Æ¥¨ÙëPÒH­[‹Ñ)«8æõ=)¿5¿!?çÿ2<Ñ`uŸ2[hþz°Ò¡ƒž—æa¨Í§„Q™b™dxø€UØPƒÖ˜"çò§þq¿(`ü¶»Õ|¹ÿ*è_¿®þ]j~tÖ-mumæ9<©ššB×rª(QàÑCôç,—òOþqÄùïÍÿ˜×þ”u+˜®#ó^–ÚôbÉC§ Zú×Öà„u&E^-ñlr?ù7ÿ8ûÿ8Íùwæ­ÌþNó.›«k/Í|¯kwæ4¾HËnNÎÀ65$ .üÂÿœxÿœXóŸš<Çç {̺U…Û’<Ícgæd³¶2 ‚×ÐG:ªµw> Üg®?!<ä_&~\iÞLü˜Ô¢Ô<™ 3Çe{i|·hË#±vK„f F'pß í„ÿóŒÞAü³ü¸òíÿ—¿"µ;][N:¥ÔÚ; —îoœYf•]ÈmUcQÜgÿ•+ÿ8Ïkä¯9ézž½¢Ëä?0ko6¬×ìÊÏV$ÔG)—½À'ìWíLþZÿÎ6Î6y/ÏÞY×|±æË}CóOç.•Ï™ÅåäñIUTçfxÕ9 ¼Fç ¼ëÿ8ßÿ8æÍgÌžmÔüѤÙ[ÜJãÌV~hK[¹5R×PÇp¨’ÞŽǽ+ƒÉ¿“_‘ZN£ù_yå0XÏ}å»È|š‰¬Å)½·”7¬Ð¨ýh-MYC…ö¦q½wþq›þqgYrÖ$óu…®‘ªÜ“¯Áoæˆã±·¹3+ŸQþœRz‚ŸTuιùÛù/ùù•ªèZ_ž5í?Hó…„k¦\Yë‰§ê²Ø„â •%–7 Fhzá,?’ÿó/ùC¯~Xišî‰ÜGÌ:¤ZäâȬ¦ö÷Õ$JXIÙ:oæ7åoå¿ÿ*çüm­ZZþ€½¶›Êž¦«[ž4QÅYÖIP>ä[éÏ:y³þq»þq;]Õ<Óæ½sÍTW÷3®¹ešR >éy¡[…Ž9Õ·Àâß³çÉ_”?“z›<‡­yw^¶¹ó.‰åÉ,<µétš[­-¬±Çê'÷ª{í‹óßHü²×¼§q¤ÿÎCI£ÅåÙRGÖî"¶·Y ø Ë+ W¯Ù!ƒW¦x³ËŸó_ó‹ÞB×tO3y‹Í–:µÄRЖ¾aó:ÝÛúįo Äå]‡ÃÄ(nÛtΟù÷ù)ùù­ç8çóοc¡þbÚÚRfÓõÔÓu9,Øl&HåI0>Ée¥;ÓÉù]ÿ8¾ÿ”2~[OËòßë¢Ô³oÇô ÞßZ¿[®ûÉêv¥0Oä¿ägäGågšæ¼òï˜mõÏ:]iRGé]|j7±é WÑŽYÖÆÊ8Ó©¦Içÿ'?'¿..u­wþqã^‹U²Ô¥csoe­ BÎõ i+ÇäH4ö=0GüäÏå¯äæ«å{¿ùÈ-WJÓ5M*ïë:B_jØI;Bc ò!™9…ª|B½·Áó’ß–_“š2h:/çN«§èúür´šÏéTÓuŠs[WG#)ÛJŽ˜3þq³òËòòºm{Eü›Õ­5Ÿ0˧ϑZ“ûÎ÷ÈNùeù åßùYwóêÚ5öŸ¯\¬žu†ûU‚k{Y(À-Èi)mÔÐ?^roÊÿùÇùÆËï0è>iѼϦê×eéå›]GÌ©{n’1ª›$‘œtNˆí¾{óëCüºó/’µóöm2ßÉ·Ab¹›V¹ŽÖv?»a4Œ5 Àòéžgü—üüƒü¯óŽ•®yk̰ë~p’ÊX´(µ?0þ-ÊþôÙC$ÎxðûMÃ9ž½ÿ8åÿ8¬jzžï<Ï¢Á¡~‘Yµm63Ŏ׊¢⸆gûHÔø»g«¼äÊ»/Í;ÿÌ'jv2yêëB²µ›OµÔ"s›W‘mQÉHØÅøñnÇ|ógæoüãÇüâç¼Ï¯ùÇ̾fÒôë¡23XÚù–;;W™§ëð$êªÄìÂ@µïóŸòƒþqëó9|§¥ù£ZÒt]JÎÉO–'Óu¨´û¶°ã@-Z9Q¤‚ŸÉÉ{×#RþIÎ3\~QÝþZZëú,^A‹X‚]OS‹^‡ãÕ@Ê.¯=cYÙ¨8;ò;3³þ`þZþTë¾kü»×|ç«ÚÛy‹A——•`“SH^íø(¤Qãáü!¿⺷ä/üã•×’<Ëå­GÌÚrySQópÕ5{–×âXáÖ¹Ô@ói×oDßäçlüÁü¶ü«×|íù}æ_9jö¶ÞjЙ•­¤Ô’.‰@¥ pn>„6|†ÿœˆ°òíß¼ôþWòo—æF– KP²ó磧zÒ«q`dBjñË·0zóëßüá’­.ÿ&<¥äý;XÓõèlìH:Ž—:ÜZJí#3úR¡*ʬJÔ£> endobj 99 0 obj <> endobj 100 0 obj <> endobj 101 0 obj <> endobj 102 0 obj <> endobj 103 0 obj <> endobj 104 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 <>stream hÞ¼[ÛrãF’}×WðaM4Ñu*ö©oö®£ÇÞ±4;áíöEB¦)R’êÐ~¬÷W6Of^¤–c/á7X(Teeež<™UzýÃ…žÜlÎÞ^ž½þÞLôäòú,–1˜0Qô_zô¶¬•§tiMœ\Þ)~ßÝÐÃåÿûzö©°¥.ϧÖVe,.šÕ¦Ý¶íùT«²*¶xcËPÌV³åãæ|Z—ºh7ç¿]þHsk™[M¦¦t&ÒïiÀËÛ†¾Ò–Æ»[o¶xöøjõ_»fµ•¡u1[â….Mq=›o×çÓªtE·Éëž ±•áÐøæÝHàŠ_rËצ㷡´Å²½n¶í]ÑLô^©JdêÚÍ—ó©q¡X_ã_L¶Ü­nð\Óòæ³Õ¼éè—W4ålµÀ O6ó®iV"´/ä´Ïie%]¼YåQÚõžADSl´^¸ÌXóRzátô"[/÷ÔjN²zR /®h¼ªh<ƒ&èc³%ñflÅBZé¡yhgÛv½Ú`•¦õ*’X¬A¯ií÷4)þ„‚Ò:±@#}¾™7«Y—wkMÃê:’ItÍf·”%n›zkjÅd:²îÐʰçÓ@+°ßå>¬USs+Y %Ëjx–b}®Šk–òòO$ËïHƒUq5ƒ^Ù¶ƒ5üòJ~„âzÝáƒÓ ¹ÔÂs:ÚT[\7ùE(n›ÙãŒi‹ÍÝúK²÷¦Û¼楥Þ7sr‡†LZÅ#¶\‘Lj‘åiWß¼ƒð¡øð Z°Eó[¬½¦Ùo "C([‰yE—>v´¶ÌCÕ$ˆSßá1RçÙõ–̱—„”êtèÑÅŒò@»Ã;ކš¾e»`©×±ÑÊ×Éh] ˆ(Þ7ÛY»„|®B·ñÆn &tZ¶a“Àá|©O l0ž°¥Ç8U³A+LwÆ‹¤¡4ÓìjÉ X)™ †-ë0)ݤÔÕ¤TzòåL»2Fc£ü¾½)e_\˜d¶ ÂliBpÒ“·ùòï'Æ+kïõápp§ {8°RF+1Öëï­ ÛÔÐ~[£rQU äc¦+Þ·›ùn³NÈåÖ«SÈè ù£7¢VSÜ“wPX(Èo×»ÍÖq¿»â]¨ foywäÝ´w;Ùœe¿éž,i!}a¡:_áK0Rûý=쮥N8={‡ehz˜-[T‹ûµõ°v+<Ö ‡=$ìî×þƒÙYÇ=fâúl- ÝÃeîÉÂ(@àX$ذn Äa–f})Îîh5»áG%‹¥½§…­‘Zj•[›™Ð3ØŽà‚†KTÅØ>ÅÕ!bPdmºÄ‡Èþë´; ð«VrÕ6«U›ìs‰Öjˆaco#íØ´S‡LlL FÈKÁ—ÉùÉ+é©y9h³XP/_^’·ÔÁ©@ÄxiN™(ƒõ‹éFþüJºÄâ±m– Ñ:£üL†&v‰%S0e2Ì`Ê ÷PyqøÛ˜ØºWˆ— ’x†¸_RTJã’¬U­ÿØÈ]“ …â\×+4Yã Ñ~µ–¶còñ*Ù©*UUï!ÞI~…ÎÒgϤçj€‡…irBöؘHù!ʬÄÑkÏlpŸ¨Øªf Áö¢GÁé 2:åØI i³@¡#˜…Žô'ÙñƬÑ&+ƒ¡éî[ß73îœSDÁß¶k!­SQ‚:…sq–KÃìÅX¡O·ø ·ï(”Ë»JâŸBœ#Ç<É‹‚®X,|&jÄ|Z3‡•HmhÑÛ‰u%ñûZtTG™o7¥x‡.þv ”…yg´ñŸfw¸F=’d ù :‰È⑌xIö© 7†Ì"BÖz‡ëÙKLõãC.p24Ÿ eO¥‚'I!&å…ô¢||/,„©Q°hånŽÑbbdlüÌ„8ÑÅ×ÄÆ·ÿÙtKÙþ]í¶ÒGHs³à™Ïøkå[°ó~n(K+þâp©Z‘ÆBH.¤ÞÍ%§Ws˪¸ËMwT…)" æNP™ž|{u“BÈWætä’À PÛ·Î×+j‘ä ÆKÒHOÈüI;Ћ0]ÑNе0Ý”;d˜§„F!¡Òkb०0™¢68ìÞD„¦%˜‚ðIÞW§÷;êL‡T2<³X殽,Ì^!"­=¥qdàq/l ±§”P‚ƒpVð~3·í&yÖº{äžÄÃ@OXÈ«Fúù£MÙO9v‡Ü+r˜¤¡}…û:°‰`>…]ùL¦M 9ÝU k(!¬(Ê Ö4Xãu5NH íF-<Ó2êøröÃCäÅZL5ñDƒä}ŒK½sÝæ\mµw?Qîó ëŸN×+Èk›—[Aʾ Pª³”¿•‚ Uªùãl­/›$£Ì¹3>sG.Ák#íÕ.ì/!D#yÝsÙLâ7·kÁ°¯â•” ¶Âë=gy~¼÷§©Žª“¹Qp‰bn þ7ݧ1@2׊­ O\2¤†Ô V†ŒTìLÒaÂD4o”Í´˜3Š`á­ÍÃl¹5ڂí5YôÀ®ñÍ:J°:—ЧƒƒÆ‰EI\æ"‡¤ÄªØ£S!bÒQå"DÇùÔÕ(„=."‘ÁÝvÓ. k]ý°ë„OPF5ªåSª™*¥sŠæ\nUžSœ„I‘󢿮Z¦ H|q±%,_èâ‘–§\éxA"ò›Ýf+‚‘¦ÛY9L-McŠ¿^à+ ùo]#dü1ÑiÐ{hç‚ œòqïËÊ_è‹ï×Ýœ»G.Ù“kß%`n2‰sà}ŠãMuòHËTé™ÄxSKåBÚ¤Ú&ù´ðo`B‚UÞþ±Šzk¿U(.ybA+¶ÂQs£c+°lVÉ™¥eÆFm” Èó »Ìýlþeúذ™Y9[´Ì:ùp…;áD)%–”Þ·+QýM.ÀŽœîŠ’†ß·›cÕ.¤ðAtoÖÝqŠ’c¤2â« r¦µ`x)›y+)ÑsÎ&-Z³‡–ºTJû1\â”Pã„A2¦\ Ii õ)í'¥Íu‡eÃCêQ+áÔx@‰Ž×Á.Ð `ÌV¹õ˜Û¢ÝŽHybâ5Ÿ‚1ÌsÒ}‹ ‘KlG[q©‰-]"׸ÚEÊéÛtÒÉTCÔy¡' Ö’ƒ¾Ì`Cô}54¬ŠÖ87ÿEïZ޼•Ch¡8O#{H5" ’¼÷­_þ‰¨ }Yü€1”ûÄ–Ë…¦ŠëæÄ^‡šë1[«¨Ÿ°2ú\Ù‘­ý†‘Y>)ü—>SXAõ³2ÉN¤?㜠WÜi—¬lÅ'I%Ä¥œËc T·YÔ—I’_~8Ó“i7þN?¾NhÓþ<ùô›š,¨¹œýc¢¹›–fRPj'ó;n¿;s´÷¼‡Ëü8%€¢_*?¼ýÓÙ_Î.ûççuNÚô'w¯"†4Rz~~¤`(^é#áàË%§ççwP•Õã‘Pk©+)=??ªáîäêHÙ¢Òóóv€B«91PmôÒÖ¥çç·â©‘pBR'…§ç—™ÓñHdBuL#Éó‰‘Þ^žÕ°"ߥÇ|Yª"F£hÜ–"æ&w„MÈ…œ(ù4=öŸú´ªäËw9üžk[ŒÏ!ŒOgÑÖêQ9 0m¡Òáß:Þj9@ñ=‘ægÍõïó6¥VêÖ«mˤÆô·a@a\¡•z¥Ø’ÉWcÀ |â®qt¯O¾'#¯rÚÊ)»¤­›rÛ>8¾Q\$¹@BldjB» M5!ÈÑZ×Í(‘A‘’ŽBÅ úøXÁ´vR ŠÌz|“íßÀà£mRþ‚Üi¶X´:34ûb|çÉët‡#• bÖÃ&o JAÂ16ç³9ƒ|ñ®].‡û¹aQk·ß<ø|ŽWš –Ðz,’M3Ý鄸O‰gõñ!%ËÆ†MˆlÕ6ºS²œ¼>¯®Â>#¡ÝÔpÖ«ÞgÄ<¤ªË%"©ÒÃöãpe““E3ÛÞÒ’8?ve$Jº·¨M‹Bö5,jï¢ÞЙï)ÍZƒbrï†C_çøh¬÷c!TÿëªrKÍ®ÎPq0!w]½`Ï¡V°X|íöeý†bb¿¤aW$mO9å¸P¹˜N ÿŒ ÈÅÿmÍG\”E‚(óKŒ'ˆçS@¿6‘OƒøuC¬ò‡AUý{ìч"Cµ7û"|ÀÓ¸CÈ5ý‰² ùlx(‡úæ2%{/  ìÈ “yKRNQ“Ó¾¶E]ã˜Î×%ÑLÜ‘Œœ<g­0ÂFÒw˜jSPO‚ª¨) l’Ø"¶@¾q*¢úÆßôYÀ[ €Ã´š¦bEc^  édâˆ{yâÃËÄ4•&ÆÁn?1…£ØOLžŽ ‰€„ID n~7TÇ"øA–GD°qOM$,çLIJ‚ªcåC N‡$Ed”ØhÀq¾îtHš?’‚J9Ò~HúéW"uÚ1Ó¯/¬‹8Ö‘û¼Nî^ÃfÀF‘‰ÎÖœ9ú´½#“îú&©úôBAKˆó¡MôOÄÞ«çêIfeìáB•[&²«WÉúµòÅ–¼«† _v•¶¬êw߸~Á¸Öï*ZžZò'¬Y‰y¹*Ž5n*ÇãiÜêÞ¸GÇÁ¿?¥ñÚ%ص(Û§‰ *·½ðy¥kTu Ÿm¥åó°up…Pýâ¹{tDÒpß‘kÎÀj>$²à~^‚¾0h›Ü¯™ðj˜š~d;3ˆ•ƒæC5Æ‚&ÕK€ Ûz@“ÿÄL±Åê!²\û<YNÌZG°¬#ÁêØåö0udòâ)LM©‘DVjõšwµ¶ÞhizêclMïòF|µëýÌc˜ÙÔñšãI˜ÙÃÒÑš .Îׇö0œm6{»‡‘8Ä/§y32†mèaú¥â6†ù£‡_¼îùN• Ïëö!ÇÖ˜’¸/çÿÿ½/2†M§t2íKQS œY—.§Û’S*Ñÿ±ÇñHïUìÏÉáGrݳò{åaÉFjìíP±ûç|CŽIr*™¦‰IÂh¢}ÁÌüG1w”ÃW[>W®P9—¨šóXä«zæ`úÃCßPš:^hÊr•)^"––„·†;4»n]Êlð†W¢%h ÔªA~3Õg¡PŸÎ|o4µ/ýPE~nnüÅ̹,QÎÓZ ÷"ûͬ]5‹rÈ"z¯x'—ôqÛHþ Š·£|8ôùðÕc>mwßeT–kÄKÜC²Ÿ³¸‚ÎËAÆåžÕ/›\é;IÑ|?ºT Žy‰'ÿ¤ÜÔÏ´ä© @ðÈ”¥*©PâåËÅ(ÿåKìíjÛtl`¼†ÏÅ›ƒ-Š¥ O»‹U}‚%¿ÊïíÁ8L댓î6/?ŸO7ósÎzFBãfÝV <'Óþ~‘Fz#±ÔP¿õ}ŸûÞ4Oê”M¨žà.)@©WßPªE¹œ|†•úsú±$®cÞ<æ Ô¨¬$—­J×8ß#aô{®}/¦æ³Ÿ®Ù¤»öl8CE,¨l‡¹1JéõË®W–§©0î©Q@¢%“z"’žbø½v€ÚÆýAí|•z‘ëTâŒ(Ÿ ãHC÷ÿq ajçÌË5Ôÿõ(Å÷’ä"ÃA>S1Þ_Ë<ùû]^Y³íë‡Ë23½×¹Z8\d.¹âÇõ®[‰¾Tº·)¶ò.1>œ ±œÿÕä±Fõù<X(k<8ª#Múý£:ÓÕåÚ ¥Í{Ë'~Cìcÿ:àõ‡Ë³ÿ`XÒ endstream 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 119 0 obj <> endobj 120 0 obj <> endobj 121 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 133 0 obj <> endobj 134 0 obj <> endobj 135 0 obj <> endobj 136 0 obj <> endobj 137 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 <>stream hÞ¤[ÛrÛH’}÷Wèa6ÚauÐý¤–lw{Ôv‡­» ²DÁ.J­ùØž_Ù<™U$HI¶w6ကªB!/'Of%_¾ù˜-‡?]¾xù:=J.¯_”qi3{”Ð?©M¬ŒVG¹Jâ̦ÙÑåêEÂú%]\Îñßý‹OÑéfûª9žqÕU{>]¤$åû›z~#o'CK QÑ.` iid-HNgšvÓÔ-Ü4ƒHîk‘6pD§—øpf¢uïîênÖis:…ûüE&,¶Ð.q3StùœOòæI¬2ÏûÔ =šg¹Úz¤}vö'¸$íÛ»”íg{$B!…hÊ×pU“•ìl¸‘ÇÞ28«€D¹íù‰Ry߆hÈdûQ˜X²9µõ™åÎ+†›nÓÐ`•Žsòõ±êy Eh`"¬ È’r1ô<HW}SÃUw¨–<ªòþÂãyËXÛz‡±ï @Y˜DµÛÐUíÚ¶æïH#€ÎY‡rÊL PòÛÏŒ¡õ°ýLC>ÕBÞ@Zp‹XF礆Bäã+]ÒXX¦¼E,33­<±ÌíÞØ6 A¬sÀߨé0n~†Np‚£íÝsh6Dx ÷õgHQ$ŒºZ¶ÝÀ%'Ñlß*QVÄ"ŠCöb6݃âï Ì1¾5Ô˶þ &H#GD(Ü×ÑCG‹ðZ2õêÂ’ŠuêÓ·]"ÿ¿;”ÍÃU<šgS‡Ê D¢_ð‘P,ètQjIÆy ¥. Ç[ù#õ2Æõ”çGCH'/õ48Ì(éòÀ/ï6MëúJtqÕ8a9jË[úŠÔ5 ! ÍÌÈù60Y’5»M‚5nVŒ_ØL?ªåÝ#Å~Ä'è¶}ÂȵIM‘£,û -`‘ϵ9ÀÞCŸR)ŸàtmÅéÊp,í{2‡‰*"?Ÿ óÜJ€§êo«+˜„…Q–ÓqY1&–ccV2!Ü y÷JBèÅÇ÷ï0,#À½@±’”ãíéìyÊa’Yn˜n‘Ÿ.j…‹zŸŸ7›«Ê¦˜ÆFˆ‰ ýk^ËW¹v”{×}‡K=aßã.\íçî^LmBÝë!, „“À2Ï#–CV(DÑÊÈ"š÷€ë¼¼aD#ÎÙ†ø&$s¸M¹»¿Ñ ºVƒÀº f@.äœÜ,˜& îçÑZð]EÄNÇ3Ä{ùVD} ¶ O˜w­gÚõ0ŠÐ("d{Q^Y„² àïT±!nUc=¸VœK8JRQhvôÆõˆ°ðë–g˜Ÿ£9ùJkzb“$Åy§ Êa~´'׸¹X%°gÐMRûÖ7—, Û":KêPoGY L]§!KÉ4øö»WXUGlê™¶Oäz´‚‡uÌ!Œbu¾ƒ´Å+‹¨kw¢­àÈ g>´ä02?À²[ Xw÷¬c…WµÈ¼Õ@YIß.!\Aà„™£h²jêQR$–n±™³\ø†þ>,Så¿…eœ"˜Zy"edÖ„@à„æ2 )U@S $–— ÉeJPʪ^!v—H:„×>‘ ¯(µ¥ÊàîÏuSAÝP•γ€ :‡-ï9ç87Á$ëšc`‘²×­Ö’îRˆZ„éOqŽ–‡BtÊI éð<4sF¨ ¸öª[¸`7œ'qT(ÀµóU= >i¶u€¦gÑëºF1½Ùw&ÕÀ¬jüÚ‚÷Ïâó]ÕlÞm𜉛ؘÙÔíz#«kKãÖU_­<7"óóó=³ Ç»s"nÈP㣠WûWly¾`6ÑìàãHDíÃü÷@¶‘µ[.½ÜTx‘Mà~•7Š"«u5÷ <<…ëåq{ Äf!Q€~+&kJ–‰±PÀŽ°ÃªUc$LÇÇc!¼{³É%²uýºã äšœìO,üÚ¤ÈZ7d~ýè)NÝÂM ½â+ÀSµ^7RrÉ‘a›Áç3i½_ÀØ„!x¦5ÝRF€U Åâ­mÝxApÔ×W›Q¬†Æ” „¥$߯âÄpâ=1 À¿zÂ$@»üN€ÛŠb0[ài@€¶A ޽¯>ÉÙ7ƒ”Ö”á¨ðÔµCí+T‘ 4–5,SXºÂtð«Å–À‚o!k™W)ú î Ù0áþáóxË Ì£o«ÕXËÔ· ¦T:÷_é Ï÷õž­<“Ý‹GX²»\ÇÁ„½“–ŸDjq%£r| %->‘„h?1\-yÌ01kÝwKүĦ‡«-ÈjçAÙó ôql”¯­|¸IÁeù:Ü‚ïEË®“+,7È,Ò*2311-.¯î‰_ֆ q} 3_w[MFª$h–œ›í˜¡#z’±Æü>a%2ÕÎâ:'<ŒdˆÏQeÁ1Î NÒy0wÂ2§ñÙ@¸‘˜Ñ/g(E¡XT¾­ýÊT×Xgš3ê'tf¶j* „‰0ö¸Ê ¯uaÃÔçq…‘” «îÖ“àz·B§±ëkDl8Û¾t¦ù7”žP=†ràÛÙƒ«$aL°\„›VŽ•°|å8ðQº0QCÓ…Ìf¢~~/ˆyý±¥úÁpµ(Ì‚û@!³§Ðe#uWŸ‰ºçíÛH°¡lÜY1©· ”:haèñù;ïâp0öÚ[€àDœ…¾Š†‘ÃC$ÍG?×Ý\ n7ãÒ"/¸s¹ÿÙT2·D‹±FzçÕâ24½qœs Á© çc)¥[àâv5I;5A5'RØ Ê“»kz“'í8ÈóòÉŒÊÇÂÔî"ašùZ·¯R›Ä´Ä8"¯›±–½˜ HW C7¯áM–pý˜c Óö‹sÉRÏ.¿†|¨\#’x¦çkÙ¥äX€™4û¾n-yÌܸˆÍPÄúË´ %|q¨xD®¢ùíÒ[>=>D”¨Ç¨½ß>Î8y ®õ]ÐA"tùu¡Šz\ƒù˜/Þ¼£®ÙÀ‰à¤Jb¸HŽŒÈⳕz›å¢€[6õ²æ*/κü‰€)¶¦ÛÑ]a$ -ÙsåÊÓŠÒו"|ãøH ^bÜøãƒVµñ‰V=yµœ#d%ç_P"uò†Ï.«Pä&VX¦jžÖ7\©*øü’rT©üÈUÙ¥(9ŒrF£_µeÍLø!‡"'y'ñ'XIRÞ¦eéAÊ—Å5€õ¦‚²•Ï`¦u(z* X1‘f*°l+.4j ·ÝbÓ€>*3eÀlƒ®yXvœ>¡\ršøTØ÷n¹­4U/çgÏ5Î3B=K§ßаTOoÖõ‰ §¬äSÛÔ¤íÚYÐMš0AoBn¼ìʼnµÔR9– ÉZ&7·‡GµCî ËTx.ê<ôvaÇ@%-Ük¶pž¨€ýtb­TȤê:YEØ4¨Z™ùDRêHb çU¿œò<Êù®ª+9GðÀi¹lõZ>¹r¼¨•”îaµÅ ºYÞ•™4—ò3—mRA— ' 6)…ìªewÌ„ÖÕ«6ò*[¡wH3v¦×׎|M‘R¼XºÔcþ/G³!ôîUÜbZ)È|¥ Dúñ˜VKc ™ßu×4ˆŠÑýæxnèxÏõêö__LLóÊ•¯NÉzÜ»ôÿo”‚'‡r0ç—$˜ò?ÄãÕ‡Y:aOÜf ¯º0ŽxoñÎG¥ÜÞÁxï\8è—¾à ‘Â²§Ò2©îÈÁ#ÇÁ½>)%H”µ~ÏáÀE IŠE—½oÖÑ5Ⱦ*ÒÐK©¸½Éw^»9Ç]|Ð_”ÔÌköù€8lÖk†+UäáLóÙ¸vS·•Ô+môqN޽ »©×¡>wÖmZ9›.¹ÍŽíìsD~&ûý(—¨ëýÅ©1ë²íâÐ-—%ižJ#Фº·>?ed;ý®×®õ¥ÓúÏÀÃNcáWeô‘>³q+ ù¤‹ªËÎv'Q[ÍÈÚ†4Âkû¹\K%õ}]ˆR¬DÕ#1—õ…^⚢aO9F³maœK#¾‹["­á¨»áPb…/s³à# E¯äSo„B6´Ü~ŠnÆqíÏ xùrÑÕq×/_úC^Ù¬<²/¿Äî˼¢Õ3öã2JbJ„-%‰öï)'­§·=û~úŸÈÐ(GœïLö°€´#´É‘¿D>JÕGökËÓ?¥<óùFY>ÿ§¾BhÊè5ÈŸ›¼v}Ãw-Ìì-î¤ ;×AXõÕqŠŠÀJ¦ žD<¿ˆ>Ön‰Ð` ÌøÃ߆&/»5ú#º8=™è ­ó¼™· ›P?= vâÆpvT5±´‰eÑ›†ÒXœMÎ`dz×c3„&râ™ZDo.Þÿôþìô8M£wRÛGúsðc‚Aú¾|i¹”s·y½ì.+x;0B<ËB€ázWQpËcß,îëÅ1u¸°†èK”r”•«À`™*pxGia&rÒºðy™ÿˆÃ¹X:ƒttVI*m¢™œ[ºåE’aÍ·¡…þ¬©¥žeò£->Göóñê˜OhK<;ñÆJÓ–n»ƒÀ¬·D\g‡?“Ð¥*¦ö?#¾\ê|ªñèSö=6úÁ¹õìŽqÀ@½ nÕ4À¢Ÿ\ã'4–ÑÙ¯¿žƒø]ÓMw#myôÛoüŒ9ÍYßqviÓè#žEZ{áªEèÇ>°Ëyµ‘£µ=j@(X¸ 9Xæ›=¤d©¤©WŠYhm¡©ÑÚu‹?È‘S=³Íë%EБ—_âP}ÇEeK®SY ó›þ)cxCi•n¢iͱàÇÔ¦Çü‹™ÎÓ²LÀ‰ M½§ðþ',[í¨ïÑÎûÍ‚Øé­üRBF‡|»;‚‰/¡aތߚèè ¢Å§rþÛsO<¸è‡í˜Ÿ]ûO)‰ePÞå‰ !5RÚ yêŒTü$†üì6ÃÀÉ6ÿêì7ž›2ˆàV) ‚Þ}½ÚôÝÚqÓ5÷Û¬;Tˆ:òÙÈ7óÌd×gxºÏÙ9­˜d!SÎ'¹D†$ã#FñS½oç]~˜":#WL³c¤£y¤ËÍ#g¤/ReþMg´û?ˆËÒ¸"ÅÀ´(§†}ÒߣíÓ+ @qîè=‡Ê¬æbÀ¢Z rßD§¿rÐêÃCqˆyvη‘ü$'™–÷¿ÏNä’ôÕTëµ 2ÑÛó'UüºZZŽ>‹¨}`çÖÌ)á‰Ü[ÿÉ$—(>Á$ÕÍv\ž‹:;W¾ Å•]#Ú¦»Ÿˆ·›\úKVëœ6åÂjVhªY  ò1ª)Ôô'8bȱè;<‚ñ¼j—8<ÈQdz‹›€—_gèžÄÂÜHLF’þ¸Íʼn}Ž »4Þ¼•Û“R¿ØÉa×§ÁIÀÔLa2‡=+1ßc% '½ iô÷®õé!¼ñç·Ü´Of<§ ­‚!U<­Î¹KáìWßàO–{Ëç>r÷7Æ ÏÔzäàÄÍW—OÎ;²¹Êõã ¥­<ú;ˆð6‚;׬hSá7N¶*8õe¤’AÄi`"–»°·–…jÕÔ®Äy³À‘½œgètJòòˆ4_楖­ýÎÌÛp·•â¡8ßøf¼gp¸—ÂÏ‹ r)ôò’`6½œ¨d*tÌpãW ÖäüKØCéÙ„{ó3D£4KÀ†ÞG’³ûv”=¶£4+÷sÕ> endobj 146 0 obj <> endobj 147 0 obj <> endobj 148 0 obj <> endobj 149 0 obj <> endobj 150 0 obj <> endobj 151 0 obj <> endobj 152 0 obj <> endobj 153 0 obj <> endobj 154 0 obj <> endobj 155 0 obj <> endobj 156 0 obj <> endobj 157 0 obj <> endobj 158 0 obj <> endobj 159 0 obj <> endobj 160 0 obj <> endobj 161 0 obj <> endobj 162 0 obj <> endobj 163 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 180 0 obj <> endobj 181 0 obj <> endobj 182 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 205 0 obj <> endobj 206 0 obj <> endobj 207 0 obj <> endobj 208 0 obj <> endobj 209 0 obj <> endobj 210 0 obj <> endobj 211 0 obj <> endobj 212 0 obj <> endobj 213 0 obj <> endobj 214 0 obj <> endobj 215 0 obj <> endobj 216 0 obj <> endobj 217 0 obj <> endobj 218 0 obj <> endobj 219 0 obj <> endobj 220 0 obj <> endobj 221 0 obj <> endobj 222 0 obj <> endobj 223 0 obj <> endobj 224 0 obj <> endobj 225 0 obj <> endobj 226 0 obj <> endobj 227 0 obj <> endobj 228 0 obj <> endobj 229 0 obj <> endobj 230 0 obj <> endobj 231 0 obj <> endobj 232 0 obj <> endobj 233 0 obj <> endobj 234 0 obj <> endobj 235 0 obj <> endobj 236 0 obj <> endobj 237 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 248 0 obj <> endobj 249 0 obj <> endobj 250 0 obj <> endobj 251 0 obj <> endobj 252 0 obj <> endobj 253 0 obj <> endobj 254 0 obj <> endobj 255 0 obj <> endobj 256 0 obj <> endobj 257 0 obj <> endobj 258 0 obj <> endobj 259 0 obj <> endobj 260 0 obj <> endobj 261 0 obj <> endobj 262 0 obj <> endobj 263 0 obj <> endobj 264 0 obj <> endobj 265 0 obj <> endobj 266 0 obj <> endobj 267 0 obj <> endobj 268 0 obj <> endobj 269 0 obj <> endobj 270 0 obj <> endobj 271 0 obj <> endobj 272 0 obj <> endobj 273 0 obj <> endobj 274 0 obj <> endobj 275 0 obj <> endobj 276 0 obj <> endobj 277 0 obj <> endobj 278 0 obj <> endobj 279 0 obj <> endobj 280 0 obj <> endobj 281 0 obj <> endobj 282 0 obj <> endobj 283 0 obj <> endobj 284 0 obj <> endobj 285 0 obj <> endobj 286 0 obj <> endobj 287 0 obj <> endobj 288 0 obj <> endobj 289 0 obj <> endobj 290 0 obj <> endobj 291 0 obj <> endobj 292 0 obj <> endobj 293 0 obj <> endobj 294 0 obj <> endobj 295 0 obj <> endobj 296 0 obj <> endobj 297 0 obj <> endobj 298 0 obj <> endobj 299 0 obj <> endobj 300 0 obj <> endobj 301 0 obj <> endobj 302 0 obj <> endobj 303 0 obj <> endobj 304 0 obj <> endobj 305 0 obj <> endobj 306 0 obj <> endobj 307 0 obj <> endobj 308 0 obj <> endobj 309 0 obj <> endobj 310 0 obj <> endobj 311 0 obj <> endobj 312 0 obj <> endobj 313 0 obj <> endobj 314 0 obj <> endobj 315 0 obj <> endobj 316 0 obj <> endobj 317 0 obj <> endobj 318 0 obj <> endobj 319 0 obj <> endobj 320 0 obj <>stream hÞ¬[ÛrÛH’}ï¯pÄFl@"ÔùaB’Õ¶eËvXÚöt[ó‘e6 pPnùcû[6Of¼ig׎PàZ,TååäÉÌ£—WѳYóËéõ/G¿FÏ¢g×_~IÆYªg!ý÷‡I8#›ÇÿÀ½ËK+¯c#¯>äM[ÕEYŒL„¥ùïC:RšŽ>VMSà$Ƨár”Ñ—Ñå¼åÇ ýÆ'´þ—y=™y7Rœð-;ÖÁÕ«¸Å"?ˆ"¸åQSÚw‡[ëé'þ9¸¬ê ¿¬S›àìG†6ŵ8Êè=ÞÅtñ¤,×ù7":«jÅÁmáʲëØA†‹zñ˜á‚¦Whnͺá×èvuÛ¸zijºþ/šË]ÞU‰]Å’8Ò Í`îò»{\NèK›eõF9–ÇT`G÷.ÇLøëk׬-~A+úžê‹ˆ‹Ú¹Ã3)–÷õÛ8Æ’v²§µ¦e=_×ò|Br6 |gy9XšÞ‡ÚÝã$¤ïzÿå Ä6£CP‡ô¦,ÆÅ{ŽÏB~Ï‘ÂДpß÷¾žåeA;-ÃÙà&8?ûpsÀ*AÒ©ç*º 4„ûÁ:L½0{AÆ&Óéã‚nt3N•íÊyò9¿®–U™ÏHñSÿ¤*¥Lƒkúr:4ô¯òü Ža8Þð–öã×:_»ò‹[ˆO±j©†T]ûg¢àM5_Èu,óåáÐN½©Ö÷‹¥a>¾8”Ã,¸š‹¼ ³¦ME:”##¯¡t^ 2èCÕ´#÷å‹›´ÅÝAF/¸Ò5<.•Å‹l˜ Õ÷Ñ”~t. œ\5ÁÙÁë!­ÛV Ûø…•IC·k¾Ì=ñ‚™Ì¶4"— jYµry)Ú‘“j]¶5”EC.Å‚“.ób6ïF]‘n©]¾pô+<“-…ža‚d^â`t"*’’“˜’q‹3Q4rízz?­ÒÁÛu÷ejó få&8Y6­«§ùkeƒÃÍ<Þ9RÒzA^‚×QÐÍbA:>Tt@vÐÇq´gÛ£pœ…Æ<*óٮț,Éöm{œ’ÏÜ’¥àsú$™'Ëó­ºÃÆyHD°,æ~²^æ%6ÈÂæ½ÆõKö²Z¬*¹¼â§³à·j棳E¾n'œŸ€Ï½ aâ—aY?Œè¯[´Ø7˪5hÞ߬ç ùyCß–'ãÎO\×ùÔ*.An]ûÝ9~2¡iß’¤ÿÕ6ìŠ Ëó¼^6x9‚Š”Sñ\*p“ª¬–Åd³îË_r ’Â$J½š%¡Uñjâpq€«HÈ(Ç^ꥶD&a?ÐëÊ1®@Ùr¹eúÙºÚ’ä¦X®I4¥Ì÷MMàÌX¾S^×jº^`õœÑå3·t%¬!'C]ç­›ŽÝUØ©_ ¤!¸¬ªÕz4d}d£Û¼aB®œ>õ-}ëHœ^žá6fÈDÉóÈÞ™úHL`¬ü/x¡U4˜Dt[liOñ©]S=El_U_°Ò&ÁîüŠÍN1‘7ùzò£â$œ SR‚mNžªž¶|»w/°¡\Ø`³ Òd!‹J·&I½K6´Š ­â€À®ª–6AÐDûáÍa‚µèmI ½mDéÑ„ìZ5«É°Ð)Œ–ØTú)ÕmŒà¨.šoÝàØÁE>¸‡"E‚®°óF·¾t5‰Ê=¶ÆǸbpQ™Î6Îä=úöM)ŸÌ±L!µF¥[c"ˆTgGC‹BÖò°³Ë½•ÄT0mÄJBd½•4ÇQšíH²ÝI’K@@{Äaþäò²%_»iAÖãÓWÁˆ¾¿E–¯·ÝÝÃ6¤åH±ýø(65V \WÀÚ&Å\˜6 7Áû?é˧‡2–âP’Ö11ZÛ(ËB( Î(Mø¼›F`bÁÙ&³» š^TñãÆfGv°¸hM<ŒÌ.Ĉ¢§(T IûN«É7C:^<$‘ýFÖÉ‘W+å‚ Þ\ò=Ûk%P.Hy’A”¶U#!£hX5¤ãŠ\¡7•À°_"Ò‰i6/ªº.Ö©>öò…¿Cà€0 ¢šÄv¸ZÅøùOóbj!M}H"$Øgï€ÁFÄlîçÕz1•‘‚'Ñ!ƒ·ô£˜u†!¼dRìÙ!á.èôãÙI$'V¢Ø @—Uwy¹n¡WèËæox¢{"±°eýÎ_{Í7!TuR-W9tøÎá”e² /ðC¤Tw_°¿€ŸBÔÙ°AÔ#ö´"ꡃ¯Ÿ“…¼ ÒƒŸ>!F6ÉöCÄ,‹÷i¼'Ìa¨v3·Äîň‘zŠ0Ÿž¿þ(¨Ì ¬h‚xÇ‹·ñþ„ª¸ñé Ç7“bÁ4Eˆ%]mëœÜ&xWÊ@ÖÇû)âÅÛ¢ZT³b’CÀt°nÙ€+A±ØmšKñC:Ÿ÷æ;D€À‘Ë,c¡‹›aLu,tÂý¹ªšu7Ð1&uøAâA)rwn•Ê U‰ØÌH¥é¸ñ+‹ÇMðÛë×âEëÌso•瀞(c+ú)oæ4b+®…G¢%µ>;Zª­-Rø”“ Kæg`¹?Ôàç‚niÃxÀ©Lí¢ Ú²XÛÝúéE"¢$èÙ’ñqcëhÑbâêDkÞ¶«æøèˆ"ãmJòÆùxrÛŒËÅÑCºÆxôGg§ج«#WáÁOPßñ(>ãlwn©Utþîå‘,Z›ß.Üßhã=êÒ¢K´º±µþKÿØU³ ²ú %-6i’ÇAlvWŒ W¨³îá› ŸLhað"úG‹LKŒC@Î_Ým½†£å©“ÅHAýn;°¥Ø}D%÷–ÝôËþÊ3o™êx7áî²`²Ê2¡Ö 6¢˜Ê¢øâšæs{/w2«d¶aAØ5B/*QYfó;WSÆl#ÑÐOö{hÞÝ®ÿþ]¶¸Ûp•³[Ú(ŒYºïÍúH'GÌ.Žèó +i€Ñ×Z!(ðq[!f÷}£ÛûQ„'’@3ÙŒ*‘›rä?䡨Û$îvQâ@ÿóI¿›šyÚ¸ãTú­dEÓ¼qÿû%…ÉÔ®ÉøÙ~ã$†‚nó*¸–ô|$À@~¤0—¼íýÏ;‡™‰÷µ‹Öy\|;€” ¬sù­ÞýäÅ9aªÝ}Ú–_­ ¯f*oèƒ!©üÅ·œ>8~Ч9Ë«õŸöàþU±X&·Âzã) Û´ ŸmÝxëÌÃó_žûQ"ŠÝË»‚b>fü°›/ý­,8!L5mX¨b!qð³˜Ä°÷ˆ)T÷1Eˆ]ôûÄ&´AÞ¶uqKàäö€ þéP³CÑV·´À|ºañpB¥ ˆV&ýpæ©Ó&ݰã!³¿Ãû̇õí¢ã.:G³o%UL A’D˜Œ0ÙJÍØèìq©0Dïº2´JïÃä)ÂñÊ•ÍdþÍq(-Ag4æû{^~sä‡%j*Ú¸”ñ‚‰ ò{±’ü iQŸ‚ùèÈy7’ÍIƒ“2bðk^WÕ?1m.Æ“»ѯ÷ß×`L œ61ÂHÇÌ â9#gã9…¨UÂ&üt ²‘ Á¬݆ð?e—å‚Êñ ¤>§ƒ7„Ão™mÚm@\»t r04rE‚àÙl_ÅÒ5c1h´0Q€ÀX¯»|F¬…˽9¶Iº'Š„1Líãõ±tM(N÷ÓuQúÙø˜/‹Ñ ¢ˆ<‘XÖïËIµ8–Œ}Z0I;S9°‰¯™qfúî¤iªIwr…„J—óÜΧœõùÆñd®)¼ Ò¢, ÷-,EQš=naÉ¢îÙØ­Ñ+’GY´ÏüeObþªÅáüwì–&QY"ó¼l¾ÝËÆ§œđݨ¨¢*†ƒ¤…z\‡«üxØñ'M¾\×y—§}5ènÏo]=÷Tv îöÓ9[YÃé;1[†–a«–I½j‰¥)1 ìzÏ[Å[ŠÓokˆõÞR2®‚%3HQwz%c›K”—E[xJü¬“q’`VWëM¢‘»ÞÓÛ¨Ûd¢Òí| äv*§9B½ñJÇD³}Ó«¶v(cÆØ2™Q !T6Ûž£·ˆ¿¼…âµ¢eÜžŽè&ìÓë½ÞÀ ^ï,l–èÅ÷ DAi‰]ƒ|éNפBÅëšâµ]ƒ˜F;y{Ò´øùCQ ¢HÒ5:Û' <î¿lôˆÿ"KÚxWëÔ“øö¿´– ÑßI¸-S„̆-Û°ßû«Weñ•ùv˹±('± ²SÌÈ[V…÷Uñ•‰Þ)è—ü6»'#fÁEÅ1'‡>œ Sñÿ+VýŠàÉÚ'” ¬FrZJ‹&Òô‰ÜÚR A'’7o ]­"Y?/˜ŠBšD”F(˜BUT)! ÿ¢d ½šf¼ÆˆiXÄQ<’Ãl{Ú±‘y“åzÑ£©kÝ1*¸¡^'ήÑö$桼lç°K@¼ˆ,âj^Lpߊ¬kK·è”)|Ÿ£#lãùXF€†žRTZdzˆKÔÙ¿Umb’G0< d’ìAxõ$Z¼¯xâZ'FOï`Ì ðåU±@Rˆ>’Â*¶¯gù"¯]ŽÑØËþ…—ù‚b='ø\bCc8]µUs¥M0,ÝW®i‹²/ž0GŽ#íËKmn•—¼íÓášÓꠈ׭ŒÁ¬TKd4‘®á'ôPH_%‚é€8°Ñ3d6ì^©É±  å‰è¢©|ÕHWõˆ´r5ýÄ3j'7ô¦:@sš§‹$ Ùæ/F1Ø -î+Ä™Ӹƒ4[¡e'Š}S¨@Âõü6ÁÜÕ´‘²ÿçê “,ÝC8êçl¶‰ìV¨@nÖy†yArtñIcàÄG¡¤ '€Ûüëb6+úÇå Ú[ÅckäR‹ ù0(gySÔùl^ôÕ}Óo®&¹æZ?–×}2XútÞ3ÖësV…edÁ¶‹ë¹¼ð-¢ËUmÛI½N€…€#¤õÛ0ðè)Þ®2l1·RŽ&fsÏU'1¬—¤91X*,{÷á/}v4n2(ŠU9“ªí‘°«UÑQ(…8„{+ŒcÕÛñ0óiÉêddÛÿÂ2F OÔÊÞKÊAÿ)ËË ˆd98CÕÀ&~dÚ⦌º¸n‘«Cî% ¸Ë´¤‰÷òô´åa¶Ï¨+0ê6Œ˜œ )($&ö1ÞõªžåkÚïâW­+Ú1î¦Xã§g£–̇ûrÀ… ùjµ(í~ÆÍ“… •êf×±‡]H‘¥‘ÞÝôó„‡âOד–,Eù#Ãø~’¼¹û†9z©ª+<4Λ՟ÊvÕ¼žî1ñd<‰£Ç¨ø Rÿ¹¢—å¶îá¿dðÕ Õ š!SñÿÕ Ó²k†ÌSÌ£5„A¾|BÅ*x[”SW 4ŽØ3*ÆØ§„Õ˜+ \¾=”àÅ<ë•ë©ß.ù  ¨«eÑ ®6Áù¯>àŠƒ—uÅã³q{u1h—>u…1VÁ«2¾ÔŠ-˃K¨$jð8h£ÕØó²*GÍ’ù«`¾&NŽa†Ä†àAµU¶ ”‚eOr=wC–àA1 &a»€ÛrìÙhC}#¾Áâ› -—û±Ë¢!$µŸ“ÝÃÁw¥Wí¦ûZo{­‡Þ%a”v-å…H㨈ÔE€ÞÛ`úuF:3v(0?À0U]ü¨Êf’—¢Â32®ñi hicvç·,¦S·€–KÀâH^ÁuPo¸wT êqžßŽ*„{RÏB»ìF?Ás·Ì[zPÜ=¸ ¡ÿ^·–lÏ*Ò §äj²0VC7Írù@‘e&÷]êfG·MïoJ¼1Å›Œj–lS陳ÎO¼–­k/É'¸º.hñ=øe‘g³›ÒL‰ÀÜ]¾Xûj·‡6FJÞ®Û“Š·Úœ'3¡IŒ¥d†ÜøgÒA‹&é¾t¸r¶ wMœxÄ^ÒǬ۲ªÝªªÉf°o@r/> ã#ú{%Á¬[Ÿ-ÌÈá!àl^—ÁZ;Y$T2Fà5£¢ùEêFìÇ®¸ˆ2»ÚÓ`nvR{° OKíQG{Ö?yŠõ?i[x.à NÀg©âuZWëïâ °¡ŸNÅtÊ-ò?[æO™~3îŽ^ —’ ²ñU?Q—AâÒÚÂßÇqÜ}ùÔç“J n7†Ç;‰ät,|¦Ï»Ÿ õ6Ñ㬦}ÌVÂ)¿Ö}-–JŸ²Ö¯ªÚ}wpi"Í5#›A9®&ójÑ2O’‚‹8¿fž$íx®çð<  }`g˜q““-ix.døI¾àš¼”Ë/â]“Q÷ÇYɳCñÒið6_.{ŸŸ…óêINÅÁ†¯Ì‚~Âsê6Úañ=nÕ–S§b=›oeÉ÷ØÃÝÒÁ•´ÉN\Šf§„ëh•á:^׬ܤø šƒª§l»ŠXÉœ gž¶cÝ~Ðjõógã0í ØãœùloÌøßgÐÆ|t Î[œi!qè[ŒÔj«¡Ú«žÔFý[µW6|Dx‡J¯TöÙýã{N!©q&Ä:§Þ”\êN»Ú¾öTe ï&ˆ2E$séÀ²)WqåÝU›c%é"ø¿CÉ}蟌ñ 5½}Öåí`Òù ŠKTU‰(M˜ t€¡È<ƾ%Ë”#UC“k‹¯ßÆRd‡!OWK½=ï 7²*{U÷ôEYdv­ ­ö R½õÐá“q:Å#²HÄêNÑ%>cª*†¢pÏ”¤¤g —-çJ$+Œ/'¹¡·ÞT^XÛ_]ŒåF_wÎLå[ô³®¤c)‹QË}B¤LgSÔ¤U«¥“Òƒ’ûì8†žÊ#:X—yÙÀÙpY÷xfˆcÿ¹1&Ž@e›&V¬^U)è]qwvHS„öºñssdðF\ƒòvÚWe÷ñcl;Ô,Ìö¼¯Žž²§/ë5ù_Û˜™ (@sEmUÃÅܺs {3=,]<…›-™ÑaâÏ/e„KDHxÊ¥¹q ktq"7ƒ)™ÒÁˆæãú¾i&sçK½¡‚µKóââêWÕd½º€žÏÄ¥Kã©bvßíUí2»/¸tT;ˆ…¬NåÕˆ6¸kN´gU>SCÂÆ3ƒ­@°0n mÖõ©9K,›¦­ØÏHñÇ~&c²MD;Mzþg,åᱤˆþì€ìn¡w Ë"i*™Ï,ѤÕZÉ’GÈÄ„0a¸—·ÑOâÙ’‰Ž{}F®LshÍÍI¨;ú‘KæAI=£¹ wW-“YÌ­]½9”§Ò€ ^μѱä6Öür]6LÆØÌßÞ &M/¤*î‹Xž™=$S&Ü!OäTzÇ8‹á­Šû24¬yÒ9æíÜÐÞ-YCÍüoõ€(õ`$ÃlA±íN®c©‘ʸ(äàÞe‹½âÒlö ~¦¬}Ž0³} D¸Wñß㫱t{n±DÈ¥† ÁŒbÂÌ“mÎmH*:tÂ!]„î„»Qº‰Œ¥«ùÌôb‘gÆ }ÄaWDc;ôÙÖQôoåhÔã£ÏÑlž~ŠL‹ãiïÄ8#ËNŒ9§k Õ%>‡€ hp\6Òêƒg-ø*ì€1à†¯.úTŽøRNŠ7µ¦÷¥ÜÑóÐürM¦Ô@ø¯Ø À\N^ÖNHÄö8¶°äW瀃‚󡔰真(É0“ívaw@.’›…c CåËSº{ŸèaÔº“èI7Ùc·[h¹ x»íM£NË•y]T¾)Y"4ðúvÓ%¼ªVƒüˆo: ¸òíŠ[Ò®]ñX¢nyD£¥çR–°q+à!³¥4t¾…Ùmj« åƒK°É¾Ñâ°C`gôò4w)«o«+Y™~IsãËÙ5·è¹( •RûŽŒ NvSŽˆ ’ý|~Ñú)‡•VZ TæÔ×'wËVH'+Õ†{“(Ô/¥ìÁ¹ú¹dÏß?ó&gK£°Y¿3&—Aòº™³ßS «òŠï¤œ*ù±P\ÀOêà W I ×.ž [¢‘l&õ‰¾ÚÊøîñá~ÉŸú~öÅ8Ž7YîýÞˆç€ÀIŽá›M/°IÕŽ@Ÿ×0YÔ_Á[ýœh66Eê†sÃw²†GX/¥á/dY“MQ w+÷E%º+å2€Á¾¤D¢II‰†×êJJ8ÔíJJ4ô×—”0š=Û o¶Ò³©o‚tÓòffß’°§±~B—Ý˲Û0Üëp§ÝKöëI´}ŠÌŸ.¸Ú‘¢N°H0Ì ×Ò½Ìk'e*xý+_†»ªJ÷µÀr\ù.5Ò˜bò­‘§%¿ðãÄÁçÜöÍg秃ä„tLÚ¶­¿`ð“vµ±;ÕØÁ³N ‘™d£,â,nšÁQöªÓd·ÏQšŠ¥ë;éEZŠÞåƒÜaGãJ¡çKøó·AIⳋcçqð® ¶Ñ©(:c™L ÇÚSy0¯¯T 瀘(J2½'.k[ázÚL0¸íëå¿L3„ê±>Æíðw#Iñ“Ð@µ^æ?§b_Êj›àºÉ 9ÎX¸›‹¬V=­fÜTÂYõ«¾azÅW™³dÓ"¹G»šb,Ž|tBQ°óE°07'?-÷\_& ©ˆålÛ­3‰íÅÈr¥Û–Ÿ³a—´bTíóR p6i¤¬¯€Øêy´1ážaFš‰X1ØhO  1½íæòYo¶éLum‡: û#¹,Ê\Òµ­oAÓÁ_Y–3î5d³vñîì5ŽCÎ9ìZ©«ÍÁ9ÇãÙs-m²+©,ÿö#Ôö'ÞWdxˣƄÇ÷Òš:ùß‘­¡ò9L‹O˜‚÷”)Ì[O™†©Gth¹Tw]–EÃm°) Îe$ÒçÉ·ÜÕœx aÞ JGϳZ h `ªO¢ÛYIœF×E˜6Š0fv(Ê'´'2 ØD¦¿-3·,:ÆôÆغ¯ê .§áÑn…FÓ¹Sˆ Ú#†Ü)?÷€AåÀœ‘”GXÝšPnµ,~lw¼;{õþô¦“–±3\J q³¯uGð „B<ç’™ ’ ÚU.;Æ(ò½­ižQ§ãÔ> endobj 322 0 obj <> endobj 323 0 obj <> endobj 324 0 obj <> endobj 325 0 obj <> endobj 326 0 obj <> endobj 327 0 obj <> endobj 328 0 obj <> endobj 329 0 obj <> endobj 330 0 obj <> endobj 331 0 obj <> endobj 332 0 obj <> endobj 333 0 obj <> endobj 334 0 obj <> endobj 335 0 obj <> endobj 336 0 obj <> endobj 337 0 obj <> endobj 338 0 obj <> endobj 339 0 obj <> endobj 340 0 obj <> endobj 341 0 obj <> endobj 342 0 obj <> endobj 343 0 obj <> endobj 344 0 obj <> endobj 345 0 obj <> endobj 346 0 obj <> endobj 347 0 obj <> endobj 348 0 obj <> endobj 349 0 obj <> endobj 350 0 obj <> endobj 351 0 obj <> endobj 352 0 obj <> endobj 353 0 obj <> endobj 354 0 obj <> endobj 355 0 obj <> endobj 356 0 obj <> endobj 357 0 obj <> endobj 358 0 obj <> endobj 359 0 obj <> endobj 360 0 obj <> endobj 361 0 obj <> endobj 362 0 obj <> endobj 363 0 obj <> endobj 364 0 obj <> endobj 365 0 obj <> endobj 366 0 obj <> endobj 367 0 obj <> endobj 368 0 obj <> endobj 369 0 obj <> endobj 370 0 obj <> endobj 371 0 obj <> endobj 372 0 obj <> endobj 373 0 obj <> endobj 374 0 obj <> endobj 375 0 obj <> endobj 376 0 obj <> endobj 377 0 obj <> endobj 378 0 obj <> endobj 379 0 obj <> endobj 380 0 obj <> endobj 381 0 obj <> endobj 382 0 obj <> endobj 383 0 obj <> endobj 384 0 obj <> endobj 385 0 obj <> endobj 386 0 obj <> endobj 387 0 obj <> endobj 388 0 obj <> endobj 389 0 obj <> endobj 390 0 obj <> endobj 391 0 obj <> endobj 392 0 obj <> endobj 393 0 obj <> endobj 394 0 obj <> endobj 395 0 obj <> endobj 396 0 obj <> endobj 397 0 obj <> endobj 398 0 obj <> endobj 399 0 obj <> endobj 400 0 obj <> endobj 401 0 obj <> endobj 402 0 obj <> endobj 403 0 obj <> endobj 404 0 obj <> endobj 405 0 obj <> endobj 406 0 obj <> endobj 407 0 obj <> endobj 408 0 obj <> endobj 409 0 obj <> endobj 410 0 obj <> endobj 411 0 obj <> endobj 412 0 obj <> endobj 413 0 obj <> endobj 414 0 obj <> endobj 415 0 obj <> endobj 416 0 obj <> endobj 417 0 obj <> endobj 418 0 obj <> endobj 419 0 obj <> endobj 420 0 obj <> endobj 421 0 obj <> endobj 422 0 obj <> endobj 423 0 obj <> endobj 424 0 obj <> endobj 425 0 obj <> endobj 426 0 obj <> endobj 427 0 obj <> endobj 428 0 obj <> endobj 429 0 obj <> endobj 430 0 obj <> endobj 431 0 obj <> endobj 432 0 obj <> endobj 433 0 obj <> endobj 434 0 obj <> endobj 435 0 obj <> endobj 436 0 obj <> endobj 437 0 obj <> endobj 438 0 obj <> endobj 439 0 obj <> endobj 440 0 obj <> endobj 441 0 obj <> endobj 442 0 obj <> endobj 443 0 obj <> endobj 444 0 obj <> endobj 445 0 obj <> endobj 446 0 obj <> endobj 447 0 obj <> endobj 448 0 obj <> endobj 449 0 obj <> endobj 450 0 obj <> endobj 451 0 obj <> endobj 452 0 obj <> endobj 453 0 obj <> endobj 454 0 obj <> endobj 455 0 obj <> endobj 456 0 obj <> endobj 457 0 obj <> endobj 458 0 obj <> endobj 459 0 obj <> endobj 460 0 obj <> endobj 461 0 obj <> endobj 462 0 obj <> endobj 463 0 obj <> endobj 464 0 obj <> endobj 465 0 obj <> endobj 466 0 obj <> endobj 467 0 obj <> endobj 468 0 obj <> endobj 469 0 obj <> endobj 470 0 obj <> endobj 471 0 obj <> endobj 472 0 obj <> endobj 473 0 obj <> endobj 474 0 obj <> endobj 475 0 obj <> endobj 476 0 obj <> endobj 477 0 obj <> endobj 478 0 obj <> endobj 479 0 obj <> endobj 480 0 obj <> endobj 481 0 obj <> endobj 482 0 obj <> endobj 483 0 obj <> endobj 484 0 obj <> endobj 485 0 obj <> endobj 486 0 obj <> endobj 487 0 obj <> endobj 488 0 obj <> endobj 489 0 obj <> endobj 490 0 obj <> endobj 491 0 obj <> endobj 492 0 obj <> endobj 493 0 obj <>stream hÞ”VÛrÛF }×WèqÙ±hîç)vT§rœvbµ™Lœ†ZI¬)Ò%©¸ùûâ`©[âNÓñŒg¹¸,ppèüúNŽWÝèr>:ÿYŽåx¾%a–DjÑßp46ÔÖèq¢ehc«ÆóÍ(b…vE‡yO#ñQgŸ‚ùŸ£0Ç¡‡2‡‘?ŒTicHþjôQ|É™†FÔÁD%:”â— wJ´´tÓ ŸT’0WÔa*^žÑEœÒiá ŠÄM(ZQ—²pº‚†3ñz(I7g;¯èòŸ‘ÿœŽd€Ç;:nv·¤I¹Šk~&cqHCÞ¡_yý’D©¡Þ{Ño$buCÂ;ú(ðl,ÖtäØR²ŒD'J3â¼cENécȘ Ï‚OóÁ8‘¡2&õ@½ÍQ8Ńw™;81;z2L€ÔŒ"‘©¥ƒã7IîÄïJøHÈž]=Ê$P†ûLG~7fh†B,`Á`_ O8¢¨zÆ”³l|–2ÎHsɰ“JÆ÷мCíßtð. ©Õaí|ÆC¦>Næñ+ŽÛ¹Oñ»0ÀZ™y`K”@'dˆ’›˜B€(ZŸžs>©Ziœú!—rx¯ºðý¿ QZ“fá £ÒõäcŸvyÈ 3=ÒP ضôßý† ®ö¸õPÇ 9?ÇÕ\àÎP~O¾§1à±ôð¢(¸3)ÝW PÎ"_m}×õÂ]Թ䪥;V>k8®‘¶Ic²j9/™P|5Êöä`·%3[š!:ŠÜ0•*®8ç Cª‰I¢Ç|`Ρ‡ÄL¢èc³#‹=nÇ’yÏÇÎw‰DiÙ‡D·RÄGãgî3Ð{¶êç¸W ‹&º©ò/Žj¯ÛXKA¼cwK‡×“AunšºäéA½gh)¡ÜÕxÓÔ«IïÚ¯¿n¹tEßùN§I±„&˜­w`Qõ¼.è]§B£%m²Dù‹fó¸í5ŒŽ¨q›M³¨åòÇõWäŠ6êŠÖ¹!ª,%iSÃñ­]^õëI몣ˆö½`gÈä¯m^•={1è×%ØcU¹tÏ-°~M0hŽo§oî~\oqƒ­Ö·e^…øB€Óm‹#8ÿÎu%¾3\£X*’ò…Nï…$úJ¤ k¾!.:ƒ~¢ü uiŠ ’X~ÃØÌ¦ƒÈ“•šÑ:>®?‘UþYß„T¢‰5g6=ÃáµÛ~qÕ&¯©ÆVªÄíKZÒ[ðaMš¤ í|ÒI)Çë׬þ~h¶]¾œÜ`4fb 6Zƒß¿?K×ë¶9­U̼[ø±ª/óªëñÁ“åö~Dp¸#¬\”G#®Öy› ýô(»¾,:¶eÀGFûúÉû¦EÚTåâ0òêf±­EƒÜõÄpÐÓø9•Àÿ¬‹’:»ÀÄ¥YuÂQ£xi4ÛzÁ~?lú¾jž&‹¦c3r5އ¾ŒÆ(ˆ¾îþ™ ÜðgQ'Œ5Œr×o_Co*Å|Ý´ùß»ˆé‹Dß‹Ãõ»bЈ”w#6´Q”ý'Q“SžR«gÇ<=ÿYy› ÍóØa%ñ'Š|àþ²Ø×Üu†+¬5À÷ͧð+ðwXÿÔ…Í£¯´ifͶ­óÊ÷¢ÇÝ·ëÕ€bl©Ô*)m©è>à/ò'•ü¶A-0‰OóVßç-Uv‚ -$æT:þ`â"ìÍ endstream endobj 494 0 obj <> endobj 495 0 obj <> endobj 496 0 obj <> endobj 497 0 obj <> endobj 498 0 obj <> endobj 499 0 obj <> endobj 500 0 obj <> endobj 501 0 obj <> endobj 502 0 obj <> endobj 503 0 obj <> endobj 504 0 obj <> endobj 505 0 obj <> endobj 506 0 obj <> endobj 507 0 obj <> endobj 508 0 obj <> endobj 509 0 obj <> endobj 510 0 obj <> endobj 511 0 obj <> endobj 512 0 obj <>stream hÞtÁJÃ@EgÚ&"ˆb%.RH>À–¢ë¤ˆ›â7ø 6AŠ©:m'0Щ}6‰t‘w.BAÁ?qá'u“©‰â´ ¸qñ÷rÏyrc\´jÕÚÑñNõÔ®W¬ÊáAeÑjÂXÛv¾O>ßç¾òºñ¶ÉQDŒóêê–µo•w­òÞD24·4¢ª£¬¬Ï}‘ÒÒX%k8vcŠ™ c6‰ÎXÇLãä>‰yü›§*°È–㎑NÓxErö’“;iûíš^u[úP¿kˆç4Tè`àõK!@Þ3 OÈSF<ÐC.%mÁhÉg ù,{Q; æØSš4Óš„Жî 9ôø@Ú“PòÛ~ ß~Ù7²EÁÛí^·äâ¶€Žˆ)‚ÔS³óÔ? »Ÿ& endstream endobj 513 0 obj <> endobj 514 0 obj <> endobj 515 0 obj <> endobj 516 0 obj <> endobj 517 0 obj <> endobj 518 0 obj <>stream hÞl¿JAÆoˆDT$)¦Œ¡E «ó¢AA"±I³ÉMr‹¹Ý°;—°àä¡|;ÁÇ/Ü‹…SÍ|ßüàãc^É÷cQ;lß܆ñô¡s~Ýj5›…\YTØ¢ºs4_ÇÕ’]~nåï»ùÇÞ<_í{¾½/ƺ¨P‚FЀHM¬£„ W‹z'p\ Njè ÊÂe·ajuÌÓ:<&÷H ê1—±i‚A*IRn¡ŒÁ¹ CZô3r÷P#Žm7)À)j«$º —#4À5‚TÔ© š JTF0PÒ $PÃÿnB8V‡ÃŒkÍ%Ùâ™K Ï{rsáùŒùÇåÕËòmÁ_¿kOÛËÚúöw+ÿ0öÚwÿ endstream endobj 519 0 obj <> endobj 520 0 obj <> endobj 521 0 obj <>stream CGAGIL+AdvP4C4E51ø lûƒú¥ù‚ÏÒ‹÷# AdvP4C4E51Cù–ò÷¥‚††}“‡–†ø¸û˜‡’’ˆ˜““˜—ƒ{“ü—÷ˆø—÷‰›’“˜—ƒ”~‡ƒ‡ˆ„ endstream endobj 522 0 obj <> endobj 523 0 obj <> endobj 524 0 obj <> endobj 525 0 obj <> endobj 526 0 obj <> endobj 527 0 obj <> endobj 528 0 obj <> endobj 529 0 obj <> endobj 530 0 obj <> endobj 531 0 obj <> endobj 532 0 obj <> endobj 533 0 obj <> endobj 534 0 obj <> endobj 535 0 obj <> endobj 536 0 obj <> endobj 537 0 obj <> endobj 538 0 obj <> endobj 539 0 obj <> endobj 540 0 obj <> endobj 541 0 obj <> endobj 542 0 obj <> endobj 543 0 obj <> endobj 544 0 obj <> endobj 545 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 552 0 obj <> endobj 553 0 obj <> endobj 554 0 obj <> endobj 555 0 obj <> endobj 556 0 obj <> endobj 557 0 obj <> endobj 558 0 obj <> endobj 559 0 obj <> endobj 560 0 obj <> endobj 561 0 obj <> endobj 562 0 obj <> endobj 563 0 obj <> endobj 564 0 obj <> endobj 565 0 obj <> endobj 566 0 obj <> endobj 567 0 obj <> endobj 568 0 obj <> endobj 569 0 obj <> endobj 570 0 obj <> endobj 571 0 obj <> endobj 572 0 obj <> endobj 573 0 obj <> endobj 574 0 obj <> endobj 575 0 obj <> endobj 576 0 obj <> endobj 577 0 obj <> endobj 578 0 obj <> endobj 579 0 obj <> endobj 580 0 obj <> endobj 581 0 obj <> endobj 582 0 obj <> endobj 583 0 obj <> endobj 584 0 obj <> endobj 585 0 obj <> endobj 586 0 obj <> endobj 587 0 obj <> endobj 588 0 obj <> endobj 589 0 obj <> endobj 590 0 obj <> endobj 591 0 obj <> endobj 592 0 obj <> endobj 593 0 obj <> endobj 594 0 obj <> endobj 595 0 obj <> endobj 596 0 obj <> endobj 597 0 obj <> endobj 598 0 obj <> endobj 599 0 obj <> endobj 600 0 obj <> endobj 601 0 obj <> endobj 602 0 obj <> endobj 603 0 obj <> endobj 604 0 obj <> endobj 605 0 obj <> endobj 606 0 obj <> endobj 607 0 obj <> endobj 608 0 obj <> endobj 609 0 obj <> endobj 610 0 obj <> endobj 611 0 obj <> endobj 612 0 obj <> endobj 613 0 obj <> endobj 614 0 obj <> endobj 615 0 obj <> endobj 616 0 obj <> endobj 617 0 obj <> endobj 618 0 obj <> endobj 619 0 obj <> endobj 620 0 obj <> endobj 621 0 obj <> endobj 622 0 obj <> endobj 623 0 obj <> endobj 624 0 obj <> endobj 625 0 obj <> endobj 626 0 obj <> endobj 627 0 obj <> endobj 628 0 obj <> endobj 629 0 obj <> endobj 630 0 obj <> endobj 631 0 obj <> endobj 632 0 obj <> endobj 633 0 obj <> endobj 634 0 obj <> endobj 635 0 obj <> endobj 636 0 obj <> endobj 637 0 obj <> endobj 638 0 obj <> endobj 639 0 obj <> endobj 640 0 obj <> endobj 641 0 obj <> endobj 642 0 obj <> endobj 643 0 obj <> endobj 644 0 obj <> endobj 645 0 obj <> endobj 646 0 obj <> endobj 647 0 obj <> endobj 648 0 obj <> endobj 649 0 obj <>stream application/pdf doi:10.1016/j.ejca.2020.05.004 Cost-effectiveness of lung cancer screening with low-dose computed tomography in heavy smokers: a microsimulation modelling study Yihui Du Grigory Sidorenkov Marjolein A. Heuvelmans Harry J.M. Groen Karin M. Vermeulen Marcel J.W. Greuter Geertruida H. de Bock Cost-effectiveness Low-dose computed tomography Lung neoplasm Mass screening Microsimulation model European Journal of Cancer, 135 (2020) 121-129. doi:10.1016/j.ejca.2020.05.004 Elsevier Ltd journal European Journal of Cancer © 2020 The Authors. Published by Elsevier Ltd. 0959-8049 135 August 2020 121-129 121 129 10.1016/j.ejca.2020.05.004 https://doi.org/10.1016/j.ejca.2020.05.004 2010-04-23 true 10.1016/j.ejca.2020.05.004 elsevier.com sciencedirect.com VoR 10.1016/j.ejca.2020.05.004 noindex 2010-04-23 true sciencedirect.com elsevier.com Elsevier 2020-07-15T07:08:11+05:30 2020-07-17T00:02:13+05:30 2020-07-17T00:02:13+05:30 True Acrobat Distiller 8.1.0 (Windows) uuid:86c99f4a-b81a-4abb-a9a5-aa9d34757397 uuid:48070db5-e692-4808-bca3-33adc3030937 http://creativecommons.org/licenses/by/4.0/ endstream endobj 650 0 obj <> endobj xref 0 651 0000000000 65535 f 0000221385 00000 n 0000221745 00000 n 0000221850 00000 n 0000221963 00000 n 0000222075 00000 n 0000222187 00000 n 0000222300 00000 n 0000222412 00000 n 0000222524 00000 n 0000222637 00000 n 0000222751 00000 n 0000222864 00000 n 0000222977 00000 n 0000223091 00000 n 0000223205 00000 n 0000223317 00000 n 0000223430 00000 n 0000223541 00000 n 0000223652 00000 n 0000223766 00000 n 0000223881 00000 n 0000223996 00000 n 0000224116 00000 n 0000224186 00000 n 0000224219 00000 n 0000230334 00000 n 0000230410 00000 n 0000230894 00000 n 0000231010 00000 n 0000231126 00000 n 0000231245 00000 n 0000231363 00000 n 0000231478 00000 n 0000231592 00000 n 0000231709 00000 n 0000231823 00000 n 0000231938 00000 n 0000232058 00000 n 0000232178 00000 n 0000232294 00000 n 0000232409 00000 n 0000232523 00000 n 0000232639 00000 n 0000232755 00000 n 0000232871 00000 n 0000232986 00000 n 0000233106 00000 n 0000233221 00000 n 0000233336 00000 n 0000233448 00000 n 0000233563 00000 n 0000233679 00000 n 0000233797 00000 n 0000233913 00000 n 0000234031 00000 n 0000234147 00000 n 0000234263 00000 n 0000234383 00000 n 0000234502 00000 n 0000234622 00000 n 0000234738 00000 n 0000234854 00000 n 0000234970 00000 n 0000235086 00000 n 0000235201 00000 n 0000235317 00000 n 0000235433 00000 n 0000235549 00000 n 0000235663 00000 n 0000235777 00000 n 0000235847 00000 n 0000235880 00000 n 0000240832 00000 n 0000241112 00000 n 0000241227 00000 n 0000241346 00000 n 0000241466 00000 n 0000241579 00000 n 0000241694 00000 n 0000241808 00000 n 0000241928 00000 n 0000242042 00000 n 0000242162 00000 n 0000242276 00000 n 0000242390 00000 n 0000242504 00000 n 0000242622 00000 n 0000242734 00000 n 0000242804 00000 n 0000242837 00000 n 0000248739 00000 n 0000248917 00000 n 0000249035 00000 n 0000249127 00000 n 0000249159 00000 n 0000249192 00000 n 0000252518 00000 n 0000444828 00000 n 0000445083 00000 n 0000445203 00000 n 0000445324 00000 n 0000445438 00000 n 0000445553 00000 n 0000445669 00000 n 0000445783 00000 n 0000445901 00000 n 0000446020 00000 n 0000446139 00000 n 0000446211 00000 n 0000446245 00000 n 0000451716 00000 n 0000452141 00000 n 0000452257 00000 n 0000452373 00000 n 0000452490 00000 n 0000452605 00000 n 0000452720 00000 n 0000452836 00000 n 0000452951 00000 n 0000453067 00000 n 0000453181 00000 n 0000453297 00000 n 0000453405 00000 n 0000453513 00000 n 0000453621 00000 n 0000453728 00000 n 0000453836 00000 n 0000453943 00000 n 0000454051 00000 n 0000454159 00000 n 0000454267 00000 n 0000454375 00000 n 0000454482 00000 n 0000454588 00000 n 0000454695 00000 n 0000454803 00000 n 0000454910 00000 n 0000455016 00000 n 0000455122 00000 n 0000455227 00000 n 0000455333 00000 n 0000455439 00000 n 0000455511 00000 n 0000455545 00000 n 0000461776 00000 n 0000461852 00000 n 0000461942 00000 n 0000462032 00000 n 0000462122 00000 n 0000462212 00000 n 0000462302 00000 n 0000462392 00000 n 0000462482 00000 n 0000462572 00000 n 0000462662 00000 n 0000462752 00000 n 0000462842 00000 n 0000462932 00000 n 0000463022 00000 n 0000463112 00000 n 0000463202 00000 n 0000463292 00000 n 0000463382 00000 n 0000463472 00000 n 0000463562 00000 n 0000464955 00000 n 0000465062 00000 n 0000465168 00000 n 0000465275 00000 n 0000465382 00000 n 0000465489 00000 n 0000465595 00000 n 0000465702 00000 n 0000465808 00000 n 0000465914 00000 n 0000466021 00000 n 0000466128 00000 n 0000466235 00000 n 0000466342 00000 n 0000466449 00000 n 0000466557 00000 n 0000466664 00000 n 0000466771 00000 n 0000466877 00000 n 0000466984 00000 n 0000467090 00000 n 0000467197 00000 n 0000467304 00000 n 0000467411 00000 n 0000467518 00000 n 0000467626 00000 n 0000467733 00000 n 0000467838 00000 n 0000467945 00000 n 0000468052 00000 n 0000468159 00000 n 0000468265 00000 n 0000468373 00000 n 0000468479 00000 n 0000468586 00000 n 0000468693 00000 n 0000468799 00000 n 0000468904 00000 n 0000469010 00000 n 0000469117 00000 n 0000469224 00000 n 0000469331 00000 n 0000469437 00000 n 0000469545 00000 n 0000469652 00000 n 0000469757 00000 n 0000469864 00000 n 0000469972 00000 n 0000470079 00000 n 0000470186 00000 n 0000470293 00000 n 0000470401 00000 n 0000470508 00000 n 0000470614 00000 n 0000470720 00000 n 0000470827 00000 n 0000470934 00000 n 0000471041 00000 n 0000471148 00000 n 0000471253 00000 n 0000471360 00000 n 0000471467 00000 n 0000471574 00000 n 0000471680 00000 n 0000471787 00000 n 0000471894 00000 n 0000472001 00000 n 0000472107 00000 n 0000472215 00000 n 0000472321 00000 n 0000472428 00000 n 0000472535 00000 n 0000472639 00000 n 0000472743 00000 n 0000472847 00000 n 0000472951 00000 n 0000473056 00000 n 0000473164 00000 n 0000473271 00000 n 0000473378 00000 n 0000473486 00000 n 0000473594 00000 n 0000473701 00000 n 0000473809 00000 n 0000473917 00000 n 0000474025 00000 n 0000474132 00000 n 0000474240 00000 n 0000474348 00000 n 0000474456 00000 n 0000474564 00000 n 0000474672 00000 n 0000474779 00000 n 0000474887 00000 n 0000474995 00000 n 0000475103 00000 n 0000475211 00000 n 0000475319 00000 n 0000475427 00000 n 0000475533 00000 n 0000475639 00000 n 0000475747 00000 n 0000475855 00000 n 0000475963 00000 n 0000476071 00000 n 0000476178 00000 n 0000476285 00000 n 0000476393 00000 n 0000476501 00000 n 0000476608 00000 n 0000476716 00000 n 0000476824 00000 n 0000476932 00000 n 0000477040 00000 n 0000477148 00000 n 0000477255 00000 n 0000477363 00000 n 0000477471 00000 n 0000477579 00000 n 0000477687 00000 n 0000477795 00000 n 0000477902 00000 n 0000478010 00000 n 0000478117 00000 n 0000478225 00000 n 0000478333 00000 n 0000478441 00000 n 0000478549 00000 n 0000478657 00000 n 0000478765 00000 n 0000478872 00000 n 0000478980 00000 n 0000479088 00000 n 0000479196 00000 n 0000479304 00000 n 0000479412 00000 n 0000479518 00000 n 0000479626 00000 n 0000479734 00000 n 0000479842 00000 n 0000479949 00000 n 0000480057 00000 n 0000480165 00000 n 0000480273 00000 n 0000480381 00000 n 0000480488 00000 n 0000480596 00000 n 0000480703 00000 n 0000480811 00000 n 0000480916 00000 n 0000481022 00000 n 0000481127 00000 n 0000481231 00000 n 0000481303 00000 n 0000481337 00000 n 0000489506 00000 n 0000489596 00000 n 0000489686 00000 n 0000489776 00000 n 0000489866 00000 n 0000489956 00000 n 0000490046 00000 n 0000490136 00000 n 0000490226 00000 n 0000490316 00000 n 0000490406 00000 n 0000490496 00000 n 0000490586 00000 n 0000490676 00000 n 0000490766 00000 n 0000490856 00000 n 0000490946 00000 n 0000491036 00000 n 0000491126 00000 n 0000491216 00000 n 0000491306 00000 n 0000491396 00000 n 0000491486 00000 n 0000491576 00000 n 0000491666 00000 n 0000491756 00000 n 0000491847 00000 n 0000491938 00000 n 0000492029 00000 n 0000492120 00000 n 0000492211 00000 n 0000492302 00000 n 0000492393 00000 n 0000492484 00000 n 0000492575 00000 n 0000492666 00000 n 0000492757 00000 n 0000492848 00000 n 0000492939 00000 n 0000493030 00000 n 0000493121 00000 n 0000493212 00000 n 0000493303 00000 n 0000493418 00000 n 0000493533 00000 n 0000493660 00000 n 0000493787 00000 n 0000493844 00000 n 0000493935 00000 n 0000494026 00000 n 0000494117 00000 n 0000494208 00000 n 0000494299 00000 n 0000494390 00000 n 0000494481 00000 n 0000494572 00000 n 0000494663 00000 n 0000494754 00000 n 0000494845 00000 n 0000494936 00000 n 0000495027 00000 n 0000495118 00000 n 0000495209 00000 n 0000495300 00000 n 0000495391 00000 n 0000495482 00000 n 0000495573 00000 n 0000495664 00000 n 0000495755 00000 n 0000495846 00000 n 0000495937 00000 n 0000496028 00000 n 0000496119 00000 n 0000496210 00000 n 0000496301 00000 n 0000496392 00000 n 0000496483 00000 n 0000496574 00000 n 0000496665 00000 n 0000496756 00000 n 0000496847 00000 n 0000496938 00000 n 0000497029 00000 n 0000497120 00000 n 0000497211 00000 n 0000497311 00000 n 0000497411 00000 n 0000497502 00000 n 0000497593 00000 n 0000497684 00000 n 0000497775 00000 n 0000497866 00000 n 0000498009 00000 n 0000498152 00000 n 0000498295 00000 n 0000498451 00000 n 0000498607 00000 n 0000498763 00000 n 0000498854 00000 n 0000498945 00000 n 0000499036 00000 n 0000499127 00000 n 0000499218 00000 n 0000499309 00000 n 0000499400 00000 n 0000499491 00000 n 0000499582 00000 n 0000499673 00000 n 0000499764 00000 n 0000499855 00000 n 0000499946 00000 n 0000500037 00000 n 0000500128 00000 n 0000500219 00000 n 0000500310 00000 n 0000500401 00000 n 0000500492 00000 n 0000500583 00000 n 0000500674 00000 n 0000500765 00000 n 0000500856 00000 n 0000500947 00000 n 0000501038 00000 n 0000501129 00000 n 0000501220 00000 n 0000501311 00000 n 0000501402 00000 n 0000501493 00000 n 0000501584 00000 n 0000501675 00000 n 0000501766 00000 n 0000501857 00000 n 0000501948 00000 n 0000502039 00000 n 0000502130 00000 n 0000502221 00000 n 0000502312 00000 n 0000502403 00000 n 0000502494 00000 n 0000502585 00000 n 0000502676 00000 n 0000502767 00000 n 0000502858 00000 n 0000502949 00000 n 0000503040 00000 n 0000503131 00000 n 0000503222 00000 n 0000503313 00000 n 0000503404 00000 n 0000503495 00000 n 0000503586 00000 n 0000503677 00000 n 0000503768 00000 n 0000504081 00000 n 0000504188 00000 n 0000504294 00000 n 0000504401 00000 n 0000504508 00000 n 0000504614 00000 n 0000504720 00000 n 0000504827 00000 n 0000504934 00000 n 0000505042 00000 n 0000505148 00000 n 0000505254 00000 n 0000505362 00000 n 0000505470 00000 n 0000505577 00000 n 0000505685 00000 n 0000505793 00000 n 0000505901 00000 n 0000505973 00000 n 0000506007 00000 n 0000507592 00000 n 0000507683 00000 n 0000507774 00000 n 0000507865 00000 n 0000507956 00000 n 0000508047 00000 n 0000508138 00000 n 0000508229 00000 n 0000508320 00000 n 0000508411 00000 n 0000508502 00000 n 0000508593 00000 n 0000508684 00000 n 0000508775 00000 n 0000508866 00000 n 0000508957 00000 n 0000509048 00000 n 0000509139 00000 n 0000509239 00000 n 0000509642 00000 n 0000509706 00000 n 0000509903 00000 n 0000510017 00000 n 0000510205 00000 n 0000510365 00000 n 0000510752 00000 n 0000510910 00000 n 0000511102 00000 n 0000511313 00000 n 0000511471 00000 n 0000511549 00000 n 0000511628 00000 n 0000511718 00000 n 0000511796 00000 n 0000511864 00000 n 0000511920 00000 n 0000511958 00000 n 0000512066 00000 n 0000512123 00000 n 0000512221 00000 n 0000512309 00000 n 0000512408 00000 n 0000512507 00000 n 0000512551 00000 n 0000513966 00000 n 0000514964 00000 n 0000515012 00000 n 0000515060 00000 n 0000515108 00000 n 0000515157 00000 n 0000515206 00000 n 0000515255 00000 n 0000515303 00000 n 0000515351 00000 n 0000515399 00000 n 0000515448 00000 n 0000515497 00000 n 0000515546 00000 n 0000515595 00000 n 0000515645 00000 n 0000515695 00000 n 0000515745 00000 n 0000515795 00000 n 0000515845 00000 n 0000515892 00000 n 0000515940 00000 n 0000515988 00000 n 0000516036 00000 n 0000516084 00000 n 0000516133 00000 n 0000516181 00000 n 0000516229 00000 n 0000516278 00000 n 0000516327 00000 n 0000516375 00000 n 0000516423 00000 n 0000516473 00000 n 0000516519 00000 n 0000516565 00000 n 0000516612 00000 n 0000516659 00000 n 0000516706 00000 n 0000516753 00000 n 0000516800 00000 n 0000516847 00000 n 0000516895 00000 n 0000516943 00000 n 0000516991 00000 n 0000517039 00000 n 0000517087 00000 n 0000517136 00000 n 0000517185 00000 n 0000517234 00000 n 0000517284 00000 n 0000517334 00000 n 0000517383 00000 n 0000517432 00000 n 0000517481 00000 n 0000517530 00000 n 0000517579 00000 n 0000517628 00000 n 0000517677 00000 n 0000517726 00000 n 0000517775 00000 n 0000517824 00000 n 0000517874 00000 n 0000517923 00000 n 0000517971 00000 n 0000518021 00000 n 0000518071 00000 n 0000518121 00000 n 0000518171 00000 n 0000518221 00000 n 0000518271 00000 n 0000518321 00000 n 0000518371 00000 n 0000518421 00000 n 0000518471 00000 n 0000518521 00000 n 0000518571 00000 n 0000518621 00000 n 0000518671 00000 n 0000518721 00000 n 0000518771 00000 n 0000518821 00000 n 0000518871 00000 n 0000518920 00000 n 0000518970 00000 n 0000519019 00000 n 0000519069 00000 n 0000519118 00000 n 0000519167 00000 n 0000519216 00000 n 0000519265 00000 n 0000519314 00000 n 0000519363 00000 n 0000519411 00000 n 0000519459 00000 n 0000519505 00000 n 0000519551 00000 n 0000519598 00000 n 0000519645 00000 n 0000519693 00000 n 0000519741 00000 n 0000519789 00000 n 0000519837 00000 n 0000519884 00000 n 0000519931 00000 n 0000519978 00000 n 0000520026 00000 n 0000520074 00000 n 0000520122 00000 n 0000520171 00000 n 0000520209 00000 n 0000520242 00000 n 0000520355 00000 n 0000528104 00000 n trailer <> startxref 116 %%EOF simrisc-16.02.00/tumor/tumorage.cc0000664000175000017500000000254214665030471015710 0ustar frankfrank#define XERR #include "tumor.ih" // if (0.120662 < rndTumor and rndTumor < 0.120664) // { // cerr.setf(ios::fixed, ios::floatfield); // // for (double value: d_tumorInfo.cumTotalRisk()) // cerr << setw(6) << value << '\n'; // } bool Tumor::tumorAge() { Random &random = Random::instance(); double rnd; d_selfDetectAge = findAge( d_tumorInfo.cumTotalRisk(), rnd = random.uniformCase()); g_log << " tumorAge: self detect age: " << d_selfDetectAge << '\n'; Options::instance().fixedTumorAge(d_selfDetectAge); if (d_selfDetectAge <= MAX_AGE) return true; d_selfDetectAge = NO_TUMOR; random.uniformCase(); // extra calls to synchronize the random.logNormal(0, 0); // random generator between random.logNormal(0, 0); // tumor and no tumor states g_log << " no tumor, generated 3 synchronization random numbers\n"; return false; } //xerr("random tumor prob: " << rnd << ", age " << d_selfDetectAge); // g_log << " cum total risk:\n"; // for (size_t idx = 0, end = d_tumorInfo.cumTotalRisk().size(); // idx != end; // ++idx) // g_log << d_tumorInfo.cumTotalRisk()[idx] << // ((idx + 1) % 10 == 0 ? "\n" : ", "); // g_log << '\n'; simrisc-16.02.00/tumor/icmconf0000664000175000017500000000007414665030471015115 0ustar frankfrank#define LIBRARY "tumor" #include "../icmconf.lib" simrisc-16.02.00/tumor/functionq.cc0000664000175000017500000000072514665030471016074 0ustar frankfrank#define XERR #include "tumor.ih" // For the std. simulations survival[0] and survival[1] are returning the // a..d values of Survival: type: // For LC: // "Supplementary's" tables S3 and S4 are loaded by Survival. and the table // S4's a..d values are obtained from Survival::op[0..3], see survival.h extern size_t g_caseIdx; extern size_t g_err; double Tumor::functionQ(double years) const { return d_survival[0].value() * pow(years, d_survival[1].value()); } simrisc-16.02.00/tumor/volume.cc0000664000175000017500000000016614665030471015374 0ustar frankfrank//#define XERR #include "tumor.ih" double Tumor::volume() const { requireTumor("volume"); return d_volume; } simrisc-16.02.00/tumor/requireTumor.cc0000664000175000017500000000037214665030471016567 0ustar frankfrank//#define XERR #include "tumor.ih" void Tumor::requireTumor(char const *type) const { if (d_selfDetectAge == NO_TUMOR) throw Exception{} << "cannot determine tumor " << type << " for a non-existing tumor"; } simrisc-16.02.00/tumor/setdeathage.cc0000664000175000017500000000416114665030471016342 0ustar frankfrank#define XERR #include "tumor.ih" extern size_t g_caseIdx; extern size_t g_err; // this function computes the estimated death age using the function // published in // Cancer. 2002 Aug 15;95(4):713-23. Predicting the survival of patients // with breast carcinoma using tumor size. Michaelson JS, Silverstein M, // Wyatt J, Weber G, Moore R, Halpern E, Kopans DB, Hughes K. void Tumor::setDeathAge(double detectionAge) { requireTumor("death age"); // interval halving: search between 0 and 100 double low = 0; double high = 100; double mid; for (size_t iter = 0; iter != N_ITER_AGE; ++iter) { mid = (low + high) / 2; // if (g_caseIdx == 21) //if (g_caseIdx == 3) //xerr(mid << ", " << functionF(mid) << ", " << d_pSurvival); switch (weakCompare(functionF(mid), d_pSurvival)) { case -1: // use the lhs half: low..mid high = mid; continue; case 1: // use the rhs half: mid::high low = mid; continue; default: // equal within WEAK_TOLERANCE break; } break; // convergence } d_deathAge = std::min(detectionAge + mid, 100.); // if (g_caseIdx == 3) // xerr("case: " << setw(4) << g_caseIdx << ", self-detection. " // "Onset: " << d_onset << ", selfDet.age: " << d_selfDetectAge << // ", extension: " << mid << ", deathAge: " << d_deathAge); g_log << " Tumor::setDeathAge(" << detectionAge << ") = " << d_deathAge << '\n'; } // if (g_caseIdx == 21) // xerr("diameter: " << d_diameter); // if (g_caseIdx == 21) // xerr(mid << ", " << functionF(mid) << ", " << d_pSurvival); //////////////////////////////////////////////////////////////////////// // if (d_deathAge != 100.) // xerr("case: " << setw(4) << g_caseIdx << ", self-detection. " // "Onset: " << d_onset << ", selfDet.age: " << d_selfDetectAge << // ", extension: " << mid << ", deathAge: " << d_deathAge); simrisc-16.02.00/tumor/characteristicsat.cc0000664000175000017500000000240714665030471017565 0ustar frankfrank#define XERR #include "tumor.ih" // if a tumor is present at 'age' then cpt the tumor's diameter and volume at // 'age', using the age - d_onset time interval void Tumor::characteristicsAt(double age) { requireTumor("size"); if ((d_present = (d_onset <= age))) // if the tumor exists at { // 'age' compute its diam. d_diameter = diameter( d_volume = d_startVolume * // exp. growth of volume pow(2, (age - d_onset) / d_doublingYears) ); g_log << __FILE__ " " << age << "\n" " diameter: " << d_diameter << "\n" " volume: " << d_volume << "\n" " onset : " << d_onset << "\n" " tumor lifetime: " << (age - d_onset) << '\n'; } else // no tumor yet at 'age' { g_log << __FILE__ " No tumor at age " << age << "\n"; d_volume = 0; d_diameter = 0; g_log << " tumor::characteristics: no tumor yet at " << age << '\n'; } d_rowCol = d_survival.setVSD(d_diameter); } simrisc-16.02.00/tumor/frame0000664000175000017500000000006014665030471014564 0ustar frankfrank//#define XERR #include "tumor.ih" Tumor:: { } simrisc-16.02.00/tumor/functionz.cc0000664000175000017500000000023314665030471016077 0ustar frankfrank//#define XERR #include "tumor.ih" double Tumor::functionZ(double years) const { return d_survival[2].value() * log(years) + d_survival[3].value(); } simrisc-16.02.00/tumor/writedata.cc0000664000175000017500000000155014665030471016047 0ustar frankfrank//#define XERR #include "tumor.ih" void Tumor::writeData(CSVTable &tab) const { tab.more() << s_noYes[d_present] << // 6 s_noYes[d_found] << // 7 s_noYes[d_interval]; // 8 // see modifications (8) if (d_diameter > 1000) // 9 tab.more() << "1001"; // was: 'inf' else tab.more() << d_diameter; // see also modifications (7) // //setw(6) << d_selfDetectAge == NO_TUMOR ? 0 : age << '\t' << tab.more() << checkNot(d_doublingDays) << // 10 checkNot(d_prePeriod) << checkNot(d_onset) << // 11 - 12 checkNot(d_selfDetectAge) << d_deathAge; // 13 - 14 } simrisc-16.02.00/tumor/tumor.f0000664000175000017500000000215414665030471015072 0ustar frankfrankinline double Tumor::selfDetectAge() const { return d_selfDetectAge; } inline double Tumor::onset() const { return d_onset; } inline bool Tumor::at(double age) const { return d_onset <= age; } inline bool Tumor::selfDetectBefore(double age) const { return d_selfDetectAge <= age; } // inline bool Tumor::selfDetectable() const // { // return d_selfDetectAge != NO_TUMOR; // } // // inline void Tumor::characteristics() // { // characteristics(d_selfDetectAge); // } inline void Tumor::intervalCancer() { d_interval = true; } inline void Tumor::found() { d_found = true; } inline void Tumor::setDeathAge() { setDeathAge(d_selfDetectAge); } inline double Tumor::deathAge() const { return d_deathAge; } inline double Tumor::diameter() const { return d_diameter; } inline bool Tumor::metastasis() const { return d_survival.metastatis(); } inline bool Tumor::present() const { return d_present; } inline std::ostream &operator<<(std::ostream &out, Tumor const &tumor) { return tumor.insert(out); } inline RowCol const &Tumor::rowCol() const { return d_rowCol; } simrisc-16.02.00/tumorinfo/0000775000175000017500000000000014665030471014427 5ustar frankfranksimrisc-16.02.00/tumorinfo/tumorinfo.ih0000664000175000017500000000030114665030471016765 0ustar frankfrank#include "tumorinfo.h" #include "../xerr/xerr.ih" #include #include #include "../log/log.h" #ifndef SPCH_ using namespace std; using namespace FBB; #endif simrisc-16.02.00/tumorinfo/vary.cc0000664000175000017500000000033714665030471015722 0ustar frankfrank//#define XERR #include "tumorinfo.ih" void TumorInfo::vary(ostream &out) { out << "Tumor:\n"; d_beir7.vary(out); out.put('\n'); d_growth.vary(out); d_incidence.vary(out); d_survival.vary(out); } simrisc-16.02.00/tumorinfo/data.cc0000664000175000017500000000015114665030471015644 0ustar frankfrank////#define XERR //#include "tumorinfo.ih" // ////char const TumorInfo::s_id[] = "tumorInduction"; // // simrisc-16.02.00/tumorinfo/icmconf0000664000175000017500000000010014665030471015757 0ustar frankfrank#define LIBRARY "tumorinfo" #include "../icmconf.lib" simrisc-16.02.00/tumorinfo/cumtotalrisk.cc0000664000175000017500000000143014665030471017455 0ustar frankfrank//#define XERR #include "tumorinfo.ih" // see void calcTotalRisk(int carrierIndex) void TumorInfo::cumTotalRisk(DoubleVect const &radiationRisk) { double sum = 0; d_cumRisk.clear(); uint16_t idx = d_incidence.index(); auto iter = radiationRisk.begin(); for (double risk: d_incidence.tumorRisk(idx)) { //g_log << risk << ' ' << *iter << '\n'; d_cumRisk.push_back(sum += risk * *iter++); } } //void calcTotalRisk(int carrierIndex) { // float totRisk; // for (int T = 0; T < 101; T++) { // totRisk = radRisk[T] * tumorRisk[carrierIndex][T]; <<------ !!! // if (T == 0) { // cumTotRisk[T] = totRisk; // } // else { // cumTotRisk[T] = cumTotRisk[T-1] + totRisk; // } // } // simrisc-16.02.00/tumorinfo/writeparameters.cc0000664000175000017500000000041114665030471020150 0ustar frankfrank//#define XERR #include "tumorinfo.ih" void TumorInfo::writeParameters(ostream &out) const { out << "Tumor:\n"; d_beir7.writeParameters(out); d_incidence.writeParameters(out); d_growth.writeParameters(out); d_survival.writeParameters(out); } simrisc-16.02.00/tumorinfo/tumorinfo.h0000664000175000017500000000255714665030471016633 0ustar frankfrank#ifndef INCLUDED_TUMORINFO_ #define INCLUDED_TUMORINFO_ #include #include "../globals/globals.h" #include "../incidence/incidence.h" #include "../beir7/beir7.h" #include "../growth/growth.h" #include "../survival/survival.h" class Scenario; class TumorInfo: public Globals { Incidence d_incidence; Beir7 d_beir7; // initialized by Beir7's constructor Growth d_growth; Survival d_survival; DoubleVect d_cumRisk; public: void vary(std::ostream &out); // vary parameters // Incidence const &incidence() const; uint16_t induction() const; // beir model to use Beir7 const &beir7() const; Growth const &growth() const; Survival &survival(); void cumTotalRisk(DoubleVect const &radiationRisk); DoubleVect const &cumTotalRisk() const; void writeParameters(std::ostream &out) const; private: void totalRiskFile() const; }; //inline Incidence const &TumorInfo::incidence() const //{ // return d_incidence; //} inline Beir7 const &TumorInfo::beir7() const { return d_beir7; } inline Growth const &TumorInfo::growth() const { return d_growth; } inline Survival &TumorInfo::survival() { return d_survival; } inline DoubleVect const &TumorInfo::cumTotalRisk() const { return d_cumRisk; } #endif simrisc-16.02.00/tumorinfo/frame0000664000175000017500000000007014665030471015441 0ustar frankfrank//#define XERR #include "tumorinfo.ih" TumorInfo:: { } simrisc-16.02.00/typedefs/0000775000175000017500000000000014665030471014230 5ustar frankfranksimrisc-16.02.00/typedefs/typedefs.h0000664000175000017500000000225014665030471016223 0ustar frankfrank#ifndef INCLUDED_TYPEDEFS_ #define INCLUDED_TYPEDEFS_ #include #include #include #include #include #include "../enums/enums.h" //struct struct LineInfo { ParamsSrc src; uint16_t lineNr; std::string txt; std::string tail; }; //= //types using SizePair = std::pair; using DoublePair = std::pair; using DoublesStringTuple = std::tuple; using SizesDoubleTuple = std::tuple; using StringSet = std::unordered_set; using BoolVect = std::vector; using DoubleVect = std::vector; using DoubleVect2 = std::vector; using Double2Vect = std::vector; using LineInfoVect = std::vector; using SizeVect = std::vector; using StringVect = std::vector; using Uint16Vect = std::vector; using SizesDoubleVect = std::vector; using SizeStrVectPair = std::pair; using SizeStrVect2 = std::vector; using RowCol = std::pair; //= #endif simrisc-16.02.00/typedefs/typedefs.ih0000664000175000017500000000010114665030471016365 0ustar frankfrank#include "typedefs.h" #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/typedefs/frame0000664000175000017500000000006614665030471015247 0ustar frankfrank//#define XERR #include "typedefs.ih" typedefs:: { } simrisc-16.02.00/unsignedcastable/0000775000175000017500000000000014665030471015720 5ustar frankfranksimrisc-16.02.00/unsignedcastable/unsignedcastable.h0000664000175000017500000000051514665030471021405 0ustar frankfrank#ifndef INCLUDED_UNSIGNEDCASTABLE_ #define INCLUDED_UNSIGNEDCASTABLE_ // concept used by Parser's unsignedcast templates to ensure that // the arguments can be static_cast to an unsigned template concept UnsignedCastable = requires(Type value) { static_cast(value); }; #endif simrisc-16.02.00/usage.cc0000664000175000017500000001302414665030471014020 0ustar frankfrank// usage.cc #include "main.ih" // Vervallend: // --totalrisk (-T) path - path name of the file containing the // cumulative total risk percentages (default: // '/totalrisk-$.txt', use ! to // suppress) // --id-base (-i) nr - Use the IDPoool, starting with value 'nr' // (specify 0 to use the std. RandomPool, // 1 is used by default) // // --test (-t) specs - run one simulation using the following // comma-separated values: // natural death age, tumor start age, // tumor self-detect age, tumor death-age, // screening testresult: // 0: incorrect (false positive/negative) // 1: correct test // Use tumor start age 0 to indicate no tumor namespace { char const info[] = R"_( [options] analyses Where: [options] - optional arguments (short options between parentheses): --base (-B) dirname - base directory (by default './', below referred to as '/') --cancer (-c) type - cancer type to simulate. 'type' can be breast (default): breast cancer simulation female: female lung cancer simulation male: male lung cancer simulation --config (-C) path - path name to the config file (by default '~/.config/simrisc') --cum-death (-d) path - path name of the file containing the 101 cumulative death proportions --data (-D) path - path name of the file containing the data generated by the simulation (default: '/data-$.txt', use ! to suppress) --death-age (-a) age - run one simulation using a specific natural death-age (also requires --tumor-age) --err (-e) - use the previously used Beir7 ERR function (excess relative risk) instead of the excess absolute risk function, using the cases' subsequent simulated ages; --help (-h) - provide this help --last-case (-l) nCases - perform simulations until 'nCases' have been analyzed and only write the data for the final case to the data file; --log "begin end file [set]" - begin: 1st case index to start logging end: last case index being logged file: path to the file to receive the logs [set]: optional set of logs to skip: C: uniform case random values L: log-normal random values U: uniform random values V: uniform VSD random values --one-analysis (-o) - run a single scenario analysis. The program's arguments may be used to specify comma-separated configuration parameters --parameters (-P) path - path name of the parameters-file (default: not used) --rounds (-R) path - path name of the file containing the summary info of the simulation rounds (default: '/rounds-$.txt', use ! to suppress) --sensitivity (-S) path - path name of the sensitivity-file (default: '/sensitivity.txt', use ! to suppress) --spread (-s) path - path name of the file showing the actual 'spread' values when 'spread: true' is specified (default: ' #include #include #include #include "../err/err.h" #include "../globals/globals.h" #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/vsd/probcheck.cc0000664000175000017500000000026014665030471015446 0ustar frankfrank//#define XERR #include "vsd.ih" // static void VSD::probCheck(double &value) { if (not Globals::proportion(value)) { Err::range(); value = 0; } } simrisc-16.02.00/vsd/data.cc0000664000175000017500000000074714665030471014431 0ustar frankfrank//#define XERR #include "vsd.ih" // static void (*VSD::s_valueCheck[])(double &) = { &accept, // VARY_MEAN &posCheck, &probCheck, &accept, // VARY_BETA_... &accept, }; // static VaryType VSD::s_varyType[] = { VARY_MEAN, VARY_NONNEG, VARY_PROB, VARY_BETA_MALE, VARY_BETA_FEMALE, }; unsigned VSD::s_indent = 0; char const *VSD::s_type = 0; char VSD::s_ch = 0; unsigned VSD::s_width = 0; unsigned VSD::s_prec = -1; simrisc-16.02.00/vsd/vsd1.cc0000664000175000017500000000022214665030471014361 0ustar frankfrank#define XERR #include "vsd.ih" VSD::VSD(VaryType varyType) : d_dist(varyType), d_valueCheck(s_valueCheck[varyType]), d_exp(false) {} simrisc-16.02.00/vsd/fmt2.cc0000664000175000017500000000050514665030471014360 0ustar frankfrank//#define XERR #include "vsd.ih" // static void VSD::fmt(unsigned indent, char const *type, char ch, unsigned valueWidth, unsigned valuePrec, unsigned distWidth, unsigned distPrec) { s_indent = indent; s_type = type; s_ch = ch; fmt(valueWidth, valuePrec, distWidth, distPrec); } simrisc-16.02.00/vsd/vsd.h0000664000175000017500000001116614665030471014153 0ustar frankfrank#ifndef INCLUDED_VSD_ #define INCLUDED_VSD_ #include #include #include "../distribution/distribution.h" class VSD { friend std::istream &operator>>(std::istream &in, VSD &vsd); friend std::ostream &operator<<(std::ostream &out, VSD const &vsd); friend std::ostream &operator<<(std::ostream &out, std::vector const &vect); double d_value = 0; double d_orgValue = 0; // initial config. value, used by vary(), // extracted from the config file Distribution d_dist; // distribution used for spreading d_value. // The distribution may receive the 'spread' and // receives the name of the distribution. // For LC BETA_MALE or BETA_FEMALE is used // meanCheck (VARY_MEAN), posCheck (VARY_NONNEG) // probCheck (VARY_PROB). No checks for BETA_*, void (*d_valueCheck)(double &value); bool d_exp; // addresses of the static void (*s_valueCheck[])(double &value); // ..Check functions static VaryType s_varyType[]; static unsigned s_indent; static char const *s_type; static char s_ch; static unsigned s_width; static unsigned s_prec; public: VSD(VaryType varyType); // vary() modifies d_value by calling d_dist.vary(d_orgValue) // this modifies d_value, after which value() returns the modified // value. The modified value is called using the variation // computing function set by Distribution::d_vary, e.g. varyMean, // varyNonNeg, etc. The Distribution::vary* functions call the // appropriate random-variation functions, which are active // because of the 'spread: true' configuration. void vary(); // was: refresh/spread .f // sets d_value as a varied // value through d_dist.value() void showVary(std::ostream &out) const; // the actually used and orig. // values double value() const; // mean or percentage .f // values obtained from d_dist DistType distType() const; // was: dist .f std::string const &distName() const; // was: name .f Distribution const &distribution() const; static void fmt(unsigned valueIntWidth, unsigned valuePrec, // 1 unsigned distValueWdith, unsigned distPrec); static void fmt(unsigned indent, char const *type, char ch, // 2 unsigned valueIntWidth, unsigned valuePrec, unsigned distValueWidth, unsigned distPrec); void ln(); // change // write vary info to 'out' static void vary(std::ostream &out, // hdr should end in ':' // 2 unsigned indent, char const *hdr, char const *type, char ch, std::vector &vect); static void vary(std::ostream &out, // same, no hdr line 3 unsigned indent, char const *type, char ch, std::vector &vect); private: std::ostream &insert(std::ostream &out) const; // 1 static std::ostream &insert(std::ostream &out, // 2 std::vector const &vect); std::istream &extract(std::istream &in); static void accept(double &value); static void posCheck(double &value); static void probCheck(double &value); }; using VSDvect = std::vector; using VSDmatrix = std::vector>; #include "vsd.f" // // charShift != 0 then idx is converted to char // // indent: initial indentation // static std::ostream &insert(std::ostream &out, char const *label, // 1 // char const *type, // std::vector const &vect, // unsigned indent, unsigned mPrecision, // unsigned sdPrecision, char ch = 0); // // std::ostream &insert(std::ostream &out, // 2 // unsigned mPrec, unsigned sdPrec) const; // #endif simrisc-16.02.00/vsd/accept.cc0000664000175000017500000000020014665030471014737 0ustar frankfrank//#define XERR #include "vsd.ih" // static void VSD::accept(double &value) { // no checks needed for Modes MEAN and BETA } simrisc-16.02.00/vsd/ln.cc0000664000175000017500000000025414665030471014122 0ustar frankfrank//#define XERR #include "vsd.ih" void VSD::ln() { d_value = log(d_value); d_orgValue = d_value; d_exp = true; if (Globals::vary()) d_dist.ln(); } simrisc-16.02.00/vsd/vary2.cc0000664000175000017500000000051514665030471014554 0ustar frankfrank//#define XERR #include "vsd.ih" // static hdr should end in ':' void VSD::vary(ostream &out, unsigned indent, char const *hdr, char const *type, char ch, VSDvect &vect) { out << setw(indent) << ' ' << hdr << '\n'; vary(out, indent + 2, type, ch, vect); } simrisc-16.02.00/vsd/insert1.cc0000664000175000017500000000031114665030471015070 0ustar frankfrank#define XERR #include "vsd.ih" std::ostream &VSD::insert(std::ostream &out) const { return Globals::setWidthPrec(out, 6, 3) << (d_exp ? exp(d_orgValue) : d_orgValue) << ", " << d_dist; } simrisc-16.02.00/vsd/vary3.cc0000664000175000017500000000053514665030471014557 0ustar frankfrank//#define XERR #include "vsd.ih" // static void VSD::vary(ostream &out, unsigned indent, char const *type, char ch, VSDvect &vect) { for (VSD &vsd: vect) { vsd.vary(); out << setw(indent) << ' ' << type << ": " << ch << " "; vsd.showVary(out); ++ch; } out.put('\n'); } simrisc-16.02.00/vsd/insert2.cc0000664000175000017500000000062614665030471015102 0ustar frankfrank#define XERR #include "vsd.ih" // static ostream &VSD::insert(ostream &out, VSDvect const &vect) { for (unsigned idx = 0, end = vect.size(); idx != end; ++idx) { out << setw(s_indent) << ' ' << s_type << ' '; if (s_ch == 0) out << idx; else out << static_cast(s_ch + idx); out << " " << vect[idx] << '\n'; } return out; } simrisc-16.02.00/vsd/vsd.f0000664000175000017500000000135614665030471014151 0ustar frankfrankinline Distribution const &VSD::distribution() const { return d_dist; } inline void VSD::vary() { d_value = d_dist.value(d_orgValue); } inline double VSD::value() const { return d_value; } inline DistType VSD::distType() const { return d_dist.type(); } inline std::string const &VSD::distName() const { return Distribution::name(d_dist.type()); } inline std::ostream &operator<<(std::ostream &out, VSD const &vsd) { return vsd.insert(out); } inline std::ostream &operator<<(std::ostream &out, VSDvect const &vect) { return VSD::insert(out, vect); } inline std::istream &operator>>(std::istream &in, VSD &vsd) { return vsd.extract(in); } //inline double VSD::spread() const //{ // return d_dist.value(); //} simrisc-16.02.00/vsd/fmt1.cc0000664000175000017500000000043114665030471014355 0ustar frankfrank//#define XERR #include "vsd.ih" // static void VSD::fmt(unsigned valueWidth, unsigned valuePrec, unsigned distWidth, unsigned distPrec) { s_width = valueWidth + valuePrec + (valuePrec > 0); s_prec = valuePrec; Distribution::fmt(distWidth, distPrec); } simrisc-16.02.00/vsd/icmconf0000664000175000017500000000007214665030471014541 0ustar frankfrank#define LIBRARY "vsd" #include "../icmconf.lib" simrisc-16.02.00/vsd/extract.cc0000664000175000017500000000131414665030471015161 0ustar frankfrank#define XERR #include "vsd.ih" // value spread dist. // 21.1 0.048 Normal // 16.51 // implies spread = false // // beta -> d_value // // # LC: eta beta dist constant factor aParam bParam // male: -1.4 .32 Beta .234091 1.72727 2.664237 5.184883 // female: -1.4 1.40 Beta .744828 .818966 3.366115 4.813548 istream &VSD::extract(istream &in) { string v1; string v2; in >> d_value; // the beta parameter of distributions d_orgValue = d_value; if (Globals::vary()) { in >> d_dist; (*d_valueCheck)(d_value); // check valid SD / Prob. values } return in; } simrisc-16.02.00/vsd/frame0000664000175000017500000000005414665030471014215 0ustar frankfrank//#define XERR #include "vsd.ih" VSD:: { } simrisc-16.02.00/vsd/poscheck.cc0000664000175000017500000000025014665030471015304 0ustar frankfrank//#define XERR #include "vsd.ih" // static void VSD::posCheck(double &value) { if (value < 0) { Err::msgTxt(Err::NEGATIVE); value = 0; } } simrisc-16.02.00/vsdparams/0000775000175000017500000000000014665030471014405 5ustar frankfranksimrisc-16.02.00/vsdparams/vwriteparameters.cc0000664000175000017500000000063314665030471020322 0ustar frankfrank#define XERR #include "vsdparams.ih" // override void VSDParams::v_writeParameters(ostream &out) const { Globals::setPrecision(out, 2) << setw(8) << ' ' << "std. dev.: " << d_vsd[SDEV] << '\n'; VSD::fmt(2, 3, 0, 4); out << setw(8) << ' ' << "lifetimeRisk: " << d_vsd[RISK] << '\n'; VSD::fmt(2, 1, 3, 3); out << setw(8) << ' ' << "mean age: " << d_vsd[MEAN] << "\n\n"; } simrisc-16.02.00/vsdparams/vsdparams.h0000664000175000017500000000132714665030471016561 0ustar frankfrank#ifndef INCLUDED_VSDPARAMS_ #define INCLUDED_VSDPARAMS_ #include "../params/params.h" #include "../vsd/vsd.h" class VSDParams: public Params { enum Indices { RISK, // lifetimeRisk MEAN, SDEV }; VSD d_vsd[3] = { VSD{ VARY_PROB }, // lifetimeRisk VSD{ VARY_NONNEG }, // meanAge VSD{ VARY_NONNEG } }; // stdDev public: VSDParams(StringVect &base, size_t idx, bool setProb); ~VSDParams() override; private: void v_cptTumorRisk(DoubleVect &ageValues) override; void v_vary(std::ostream &out) override; void v_writeParameters(std::ostream &out) const; }; #endif simrisc-16.02.00/vsdparams/icmconf0000664000175000017500000000016114665030471015744 0ustar frankfrank#define LIBRARY "vsdparams" //#define SPCH "-k xerr/xerr.ih" #include "../icmconf.lib" simrisc-16.02.00/vsdparams/vsdparams1.cc0000664000175000017500000000106014665030471016772 0ustar frankfrank#define XERR #include "vsdparams.ih" VSDParams::VSDParams(StringVect &base, size_t idx, bool setProb) : Params(base, idx, setProb) { if (prob() < 0) // invalid probability setting return; base.back() = "lifetimeRisk:"; bool ok = Parser::one(base, d_vsd[RISK]); base.back() = "meanAge:"; ok = Parser::one(base, d_vsd[MEAN]) and ok; base.back() = "stdDev:"; ok = Parser::one(base, d_vsd[SDEV]) and ok; if (not ok) invalid(); // error in the param. specs: prob = -1 } simrisc-16.02.00/vsdparams/destructor.cc0000664000175000017500000000010114665030471017102 0ustar frankfrank#define XERR #include "vsdparams.ih" VSDParams::~VSDParams() {} simrisc-16.02.00/vsdparams/vsdparams.ih0000664000175000017500000000023414665030471016726 0ustar frankfrank#include "vsdparams.h" #include "../xerr/xerr.ih" #include "../globals/globals.h" #include "../parser/parser.h" #ifndef SPCH_ using namespace std; #endif simrisc-16.02.00/vsdparams/vcpttumorrisk.cc0000664000175000017500000000100714665030471017646 0ustar frankfrank//#define XERR #include "vsdparams.ih" // see calcTumorRisk in SimRisc.cpp // override void VSDParams::v_cptTumorRisk(DoubleVect &ageValues) { size_t age = 0; double mean = d_vsd[MEAN].value(); double stdDev = d_vsd[SDEV].value(); double factor1 = d_vsd[RISK].value() / (stdDev * Globals::s_sqrt2PI); for (double &risk: ageValues) // compute the risks per age value { double factor2 = (age++ - mean) / stdDev; risk = factor1 * exp(-(factor2 * factor2 / 2)); } } simrisc-16.02.00/vsdparams/frame0000664000175000017500000000006614665030471015424 0ustar frankfrank#define XERR #include "vsdparams.ih" VSDParams:: { } simrisc-16.02.00/vsdparams/vvary.cc0000664000175000017500000000075714665030471016074 0ustar frankfrank//#define XERR #include "vsdparams.ih" // overrides void VSDParams::v_vary(ostream &out) { for (auto &vsd: d_vsd) vsd.vary(); out << " " << ( not Globals::isBreast() ? Globals::simTypeLabel(LC) : label() ) << "\n" " lifetimeRisk: "; d_vsd[RISK].showVary(out); out << " meanAge: "; d_vsd[MEAN].showVary(out); } simrisc-16.02.00/xerr/0000775000175000017500000000000014665030471013365 5ustar frankfranksimrisc-16.02.00/xerr/xerr.ih0000664000175000017500000000130414665030471014665 0ustar frankfrank// define X to activate the xerr/xerr2 macros: // xerr(insertion) // inserts the '<<' concatenated elements into std::cerr // preceded by the name of the source file, and ended by '\n' // xerr2(insertion, code) // performs the insertion if X is defined, and (unconditionally) // executes the statement(s) in `code'. `code' must be valid // C(++) code. // #ifdef XERR #include #define xerr(insertion) std::cerr << __FILE__": " << insertion << '\n' #define xerr2(insertion, b) \ { std::cerr << __FILE__": " << insertion << '\n'; b; } #else #define xerr(insertion) #define xerr2(insertion, b) b #endif