Site/cube.html0100755000000000000000000001626207312417652012306 0ustar rootroot CUBE - Ray Tracing



LE CUBE


Le cube est défini dans son propre repère par la valeur de son côté.

On définit les huit sommets et on utilise la méthode parallélogramme pour tracer le cube et relier correctement les sommets.

a1 = (côté/2 , côté/2 , -côté/2 , 1)
a2 = (côté/2 , côté/2 , côté/2 , 1)
a3 = (côté/2 , -côté/2 , côté/2 , 1)
a4 = (côté/2 , -côté/2 , -côté/2 , 1)
a5 = (-côté/2 , -côté/2 , -côté/2 , 1)
a6 = (-côté/2 , côté/2 , -côté/2 , 1)
a7 = (-côté/2 , côté/2 , côté/2 , 1)
a8 = (-côté/2 , -côté/2 , côté/2 , 1)

Puis on trace les faces avec la méthode parallélogramme pour (a1, a2, a4 ) , (a6, a7, a5 ) , (a1, a2, a6 ) , (a2, a7, a3 ), (a3, a8, a4 ) , (a4, a5, a1 )


Calcul de l'intersection

On calcule la distance entre le point d'intersection du rayon et de la face (a1, a2, a4 ) (méthode intersection de la classe parallélogramme). Si elle est différente de MAXDOUBLE, on affecte le numéro de la face intersectée à 0, sinon on l'affecte à -1. Puis, pour chaque face restante, on calcule une distance d' que l'on compare à d. Si d'<d, la face la plus proche intersectée est la face en cours, d'où le numéro de la face intersectée vaut le numéro de la face en cours, d prend la valeur de d', et le point d'intersection est mis à jour.


Calcul de la normale

Par défaut, on affecte les coordonnées de la normale à zéro.
Puis, selon la face considérée, on modifie ces valeurs de la manière suivante :

Selon la faceIntersectee
{
face (a1, a2, a4 ) :laNormalex = 1;
face (a6, a7, a5 ) :laNormalex = -1;
face (a1, a2, a6 ) :laNormaley = 1;
face (a2, a7, a3 ) :laNormalez = 1;
face (a3, a8, a4 ) :laNormaley = -1;
face (a4, a5, a1 ) :laNormalez = -1;
}


Auteurs : Thomas Bonfort, Delphine Chaigneau, Olivier Galizzi, Laure Heigeas
Site/cubetroue.html0100755000000000000000000001310307311164400013341 0ustar rootroot CUBETROUE - Ray Tracing



LE CUBE TROUE

Le cube troué est défini dans son propre repère.

Calcul de l'intersection


On résout cette équation avec la méthode utilisée dans la classe polynomiale (méthode de Vieta).
S'il existe des racines réelles, on choisit la racine t0 minimum supérieure strictement à epsilon.
Si celle-ci existe, on calcule le point d'intersection entre le cube troué et le rayon avec t = t0 dans l'équation paramétrique du rayon.
Dans le cas ou toutes les racines sont inférieures à epsilon, t a pour valeur MAXDOUBLE et donc le rayon ne rencontre pas le cube troué
.

Comme pour les autres objets, la distance est évaluée lorsqu'il existe un point d'intersection. Sinon, elle vaut MAXDOUBLE.

Calcul de la normale



Auteurs : Thomas Bonfort, Delphine Chaigneau, Olivier Galizzi, Laure Heigeas
Site/cylindre.html0100755000000000000000000002740507312415470013176 0ustar rootroot CYLINDRE- Ray Tracing



LE CYLINDRE

Il existe deux constructeurs différents pour le cylindre. Le cylindre peut être défini uniquement par son rayon si l'on souhaite avoir un cylindre infini. Dans ce cas, on affecte la longueur par défaut à la valeur nulle.
Le cylindre peut également être défini d'après son rayon et sa hauteur si l'on veut un cylindre fini. Dans tous les cas, le cylindre est orienté selon l'axe des x.

Calcul de l'intersection

Il faut calculer le point d'intersection entre le rayon et le cylindre.

L'équation du rayon est :

Pour le cylindre, on a pour x compris entre 0 et hauteur :

Donc :

D'où :

On résout donc un équation du second ordre. Soit Delta son discriminant.

Si Delta est négatif, cela signifie qu'il n'y a pas de solutions à l'équation. On affecte donc la distance par défaut à la valeur MAXDOUBLE. Plusieurs possibilités sont alors envisageables.

Si , cela signifie que l'on se situe dans l'alignement du cylindre.
Si le cylindre est fini et que p0 est supérieur à la hauteur du cylindre ou que p0 est positif et inférieur à la hauteur, cela signifie que le rayon rencontre la face supérieure du cylindre.

Ce calcul d'intersection peut alors être ramené au calcul d'intersection d'un rayon et d'un plan en x = hauteur :
x(t)= d0t+p0 = hauteur donc t = ( hauteur - p0 ) / d0 si d0 est non nul.
Puis on remplace t dans les équations y(t), et z(t) du rayon pour obtenir les coordonnées du point d'intersection.

Si le cylindre est fini et que p0 est négatif ou que p0 est positif et inférieur à la hauteur, cela signifie que le rayon rencontre la face inférieure du cylindre.

On résout donc :
x(t)= d0t+p0 = 0 donc t = - p0 / d0 si d0 non nul.
Puis on remplace t dans les équations y(t), et z(t) du rayon pour obtenir les coordonnées du point d'intersection.

Si Delta est positif, on calcule les deux racines de l'équation t1 et t2.

Si le cylindre est fini et si t1 est inférieur à t2 et supérieur à epsilon, ou si t2 est inférieur à t1 et inférieur à epsilon, la racine correcte est t1, sinon c'est t2.
On calcule alors les coordonnées du point d'intersection en remplaçant t par sa valeur dans les équations x(t), y(t) et z(t) du rayon et on calcule la distance séparant ce point du point p du rayon.
Il faut néanmoins considérer deux autres cas. En effet, on peut se trouver dans les situations suivantes :

Donc plusieurs cas se présentent :
· Si le cylindre est fini et que l'abscisse du point d'intersection calculé est inférieur à zéro (en rouge ci-dessus), ou que l'abscisse du point initial est inférieur à zéro, et que (en vert ci-dessus), on se situe sur la face inférieure du cylindre, donc comme précédemment, on résous :
x(t)= d0t+p0 = 0 donc t = - p0 / d0 si d0 non nul, sinon on renvoie MAXDOUBLE. Puis on remplace t dans les équations y(t), et z(t) du rayon pour obtenir les coordonnées du point d'intersection.
Si t est supérieur à epsilon et que le point d'intersection est tel que , on calcule la distance entre le point d'intersection et le point origine du rayon, sinon on renvoie MAXDOUBLE.
· Si le cylindre est fini et que l'abscisse du point d'intersection calculé est supérieur à la hauteur du cylindre, ou que l'abscisse du point initial est supérieur à la hauteur du cylindre, et que p12 + p22 £ rayon2 :
x(t)= d0t+p0 = hauteur donc t = ( hauteur - p0 ) / d0 si d0 ¹ 0, sinon on renvoie MAXDOUBLE. Puis on remplace t dans les équations y(t), et z(t) du rayon pour obtenir les coordonnées du point d'intersection.
De même que précédemment, si t est supérieur à epsilon et que le point d'intersection est tel que , on calcule la distance entre le point d'intersection et le point origine du rayon, sinon on renvoie MAXDOUBLE.

Tous les cas sont alors correctement traités.


Calcul de la normale

La coordonnée homogène est égale à 0.
Si l'on se situe sur le côté du cylindre, c'est-à-dire si le cylindre est infini, ou si le cylindre est fini et que le point d'intersection est situé à une abscisse comprise entre 0 et hauteur, la normale est égale à 0 pour la composante en x, et le point lui-même divisé par la coordonnée homogène pour les composantes en y et z.
Si l'on se situe sur la face inférieure du cylindre, la composante en x vaut -1, les autres 0.
Enfin, si l'on se situe sur la face supérieure du cylindre, la composante en x vaut 1, les autres 0.


Auteurs : Thomas Bonfort, Delphine Chaigneau, Olivier Galizzi, Laure Heigeas
Site/demotechnique.htm0100755000000000000000000000554207311410544014035 0ustar rootroot demosTechniques

demosTechniques
antialiasing_noaa.jpg
antialiasing_noaa.jpg
antialiasing.jpg
antialiasing.jpg
attenuation_noa.jpg
attenuation_noa.jpg
attenuation.jpg
attenuation.jpg
flou_nf.jpg
flou_nf.jpg
flou_nf.jpg
flou.jpg
perlin.jpg
perlin.jpg
WoodMarblePerlin.jpg
WoodMarblePerlin.jpg
bumpMapping.jpg
bumpMapping.jpg
Site/grammaire.txt0100755000000000000000000001427307311402200013165 0ustar rootrootGRAMMAIRE DU LANGAGE DE DESCRIPTION DE SCENES SYMBOLES NON TERMINAUX : SCENE ::= BLOC BLOC ::= BLOC BLOC | CAMERA ACC_OUVRANTE PARAMETRE_CAMERA ACC_FERMANTE | BACKGROUND ACC_OUVRANTE PARAMETRE_BACKGROUND ACC_FERMANTE | LIGHT_SOURCE ACC_OUVRANTE PARAMETRE_LIGHT_SOURCE ACC_FERMANTE | GLOBAL_SETTING ACC_OUVRANTE PARAMETRE_GLOBAL_SETTING ACC_FERMANTE | SPHERE ACC_OUVRANTE PARAMETRE_SPHERE ACC_FERMANTE | PLAN ACC_OUVRANTE PARAMETRE_PLAN ACC_FERMANTE | CYLINDRE ACC_OUVRANTE PARAMETRE_CYLINDRE ACC_FERMANTE | CONE ACC_OUVRANTE PARAMETRE_CONE ACC_FERMANTE | BOX ACC_OUVRANTE PARAMETRE_BOX ACC_FERMANTE | TRIANGLE ACC_OUVRANTE PARAMETRE_TRIANGLE ACC_FERMANTE | PARALLELOGRAM ACC_OUVRANTE PARAMETRE_PARALLELOGRAM ACC_FERMANTE | TORUS ACC_OUVRANTE PARAMETRE_TORUS ACC_FERMANTE | CUBE_TROUE ACC_OUVRANTE PARAMETRE_CUBE_TROUE ACC_FERMANTE | PYRAMID3 ACC_OUVRANTE PARAMETRE_PYRAMID3 ACC_FERMANTE | PYRAMID4 ACC_OUVRANTE PARAMETRE_PYRAMID4 ACC_FERMANTE PARAMETRE_CAMERA ::= PARAMETRE_CAMERA PARAMETRE_CAMERA | LOCATION TRIPLET | LOOK_AT TRIPLET | FIELD_OF_VIEW FLOAT | PROJECTION_SIZE FLOAT | PERSPECTIVE | ORTHOGRAPHIC PARAMETRE_BACKGROUND ::= PARAMETRE_BACKGROUND PARAMETRE_BACKGROUND | COLOR TRIPLET PARAMETRE_LIGHT_SOURCE ::= PARAMETRE_LIGHT_SOURCE PARAMETRE_LIGHT_SOURCE | POINT_SOURCE | AMBIENT | DIRECTIONNAL | LOCATION TRIPLET | DIRECTION TRIPLET | COLOR TRIPLET | ATTENUATION TRIPLET PARAMETRE_GLOBAL_SETTING ::= PARAMETRE_GLOBAL_SETTING PARAMETRE_GLOBAL_SETTING | MAX_TRACE_LEVEL INT | ANTIALIASING INT | AA_THRESHOLD FLOAT | SOFT_SHADOW FLOAT | SHADOW_RAY INT | OUTPUT_HEIGHT INT | OUTPUT_WIDTH INT PARAMETRE_SPHERE ::= FLOAT MODIFIER PARAMETRE_PLAN ::= MODIFIER PARAMETRE_CYLINDRE ::= FLOAT VIRGULE FLOAT MODIFIER PARAMETRE_CONE ::= FLOAT VIRGULE FLOAT VIRGULE FLOAT MODIFIER PARAMETRE_BOX ::= FLOAT MODIFIER PARAMETRE_TRIANGLE ::= TRIPLET VIRGULE TRIPLET VIRGULE TRIPLET MODIFIER PARAMETRE_PARALLELOGRAM ::= TRIPLET VIRGULE TRIPLET VIRGULE TRIPLET MODIFIER PARAMETRE_TORUS ::= FLOAT VIRGULE FLOAT MODIFIER PARAMETRE_CUBE_TROUE ::= MODIFIER PARAMETRE_PYRAMID3 ::= TRIPLET VIRGULE TRIPLET VIRGULE TRIPLET VIRGULE TRIPLET MODIFIER PARAMETRE_PYRAMID4 ::= TRIPLET VIRGULE TRIPLET VIRGULE TRIPLET VIRGULE TRIPLET MODIFIER MODIFIER ::= MODIFIER MODIFIER | TRANSFORM ACC_OUVRANTE PARAMETRE_TRANSFORM ACC_FERMANTE | PIGMENT ACC_OUVRANTE PARAMETRE_PIGMENT ACC_FERMANTE | FINISH ACC_OUVRANTE PARAMETRE_FINISH ACC_FERMANTE | NORMAL ACC_OUVRANTE PARAMETRE_NORMAL ACC_FERMANTE PARAMETRE_TRANSFORM ::= PARAMETRE_TRANSFORM PARAMETRE_TRANSFORM | ROTATE TRIPLET | TRANSLATE TRIPLET | SCALE TRIPLET PARAMETRE_PIGMENT ::= PARAMETRE_PIGMENT PARAMETRE_PIGMENT | COLOR TRIPLET | TEXTURE PARAMETRE_TEXTURE | CHECKER PARAMETRE_CHECKER | PERLIN ACC_OUVRANTE PARAMETRE_PERLIN ACC_FERMANTE | WOOD ACC_OUVRANTE PARAMETRE_PERLIN ACC_FERMANTE | MARBLE ACC_OUVRANTE PARAMETRE_PERLIN ACC_FERMANTE | ROTATE TRIPLET | TRANSLATE TRIPLET | SCALE TRIPLET PARAMETRE_TEXTURE ::= CHAINE VIRGULE INT PARAMETRE_CHECKER ::= FLOAT VIRGULE TRIPLET VIRGULE TRIPLET PARAMETRE_PERLIN ::= FLOAT VIRGULE FLOAT VIRGULE INT VIRGULE FLOAT COLOR_MAP ACC_OUVRANTE PARAMETRE_COLOR_MAP ACC_FERMANTE PARAMETRE_COLOR_MAP ::= PARAMETRE_COLOR_MAP PARAMETRE_COLOR_MAP | CROCHET_OUVRANT FLOAT COLOR TRIPLET CROCHET_FERMANT PARAMETRE_FINISH ::= PARAMETRE_FINISH PARAMETRE_FINISH | AMBIENT FLOAT | DIFFUSE FLOAT | SPECULAR FLOAT | SHININESS FLOAT | TRANSPARENCY FLOAT | REFLECTION FLOAT | IOR FLOAT PARAMETRE_NORMAL ::= PARAMETRE_NORMAL PARAMETRE_NORMAL | PERLIN ACC_OUVRANTE PARAMETRE_PERLIN PARAMETRE_TRANSFORM ACC_FERMANTE | WOOD ACC_OUVRANTE PARAMETRE_PERLIN PARAMETRE_TRANSFORM ACC_FERMANTE | MARBLE ACC_OUVRANTE PARAMETRE_PERLIN PARAMETRE_TRANSFORM ACC_FERMANTE TRIPLET ::= CHEVRON_OUVRANT FLOAT VIRGULE FLOAT VIRGULE FLOAT CHEVRON_FERMANT SYMBOLES TERMINAUX : FLOAT ::= un nombre decimal INT ::= un nombre entier CHAINE ::= une suite de caracteres ascii ne commencant pas par un chiffre, "-" ou "#" et ne contenant pas le symbole "*" ACC_OUVRANTE ::= "{" ACC_FERMANTE ::= "}" CROCHET_OUVRANT ::= "[" CROCHET_FERMANT ::= "]" CHEVRON_OUVRANT ::= "<" CHEVRON_FERMANT ::= ">" VIRGULE ::= "," CAMERA ::= "camera" LOOK_AT FIELD_OF_VIEW ::= "field_of_view" PROJECTION_SIZE ::= "projection_size" PERSPECTIVE ::= "perspective" ORTHOGRAPHIC ::= "orthographic" BACKGROUND ::= "background" LIGHT_SOURCE ::= "light_source" DIRECTION ::= "direction" ATTENUATION ::= "attenuation" DIRECTIONNAL ::= "directionnal" POINT_SOURCE ::= "point_source" GLOBAL_SETTING ::= "global_setting" MAX_TRACE_LEVEL ::= "max_trace_level" OUTPUT_HEIGHT ::= "output_height" OUTPUT_WIDTH ::= "output_width" ANTIALIASING ::= "antialiasing" AA_THRESHOLD ::= "aa_threshold" SOFT_SHADOW ::= "soft_shadow" SHADOW_RAY ::= "shadow_ray" SPHERE ::= "sphere" CUBE_TROUE ::= "cube_troue" PLAN ::= "plan" CYLINDRE ::= "cylindre" CONE ::= "cone" BOX ::= "box" TRIANGLE ::= "triangle" PARALLELOGRAM ::= "parallelogram" TORUS ::= "torus" PYRAMID3 ::= "pyramid3" PYRAMID4 ::= "pyramid4" LOCATION ::= "location" COLOR ::= "color" TRANSFORM ::= "transform" ROTATE ::= "rotate" TRANSLATE ::= "translate" SCALE ::= "scale" FINISH ::= "finish" DIFFUSE ::= "diffuse" SPECULAR ::= "specular" SHININESS ::= "shininess" TRANSPARENCY ::= "transparency" IOR ::= "ior" REFLECTION ::= "reflection" PIGMENT ::= "pigment" TEXTURE ::= "texture" NORMAL ::= "normal" AMBIENT ::= "ambient" CHECKER ::= "checker" COLOR_MAP ::= "color_map" PERLIN ::= "perlin" WOOD ::= "wood" MARBLE ::= "marble" Site/images/0040755000000000000000000000000007310660122011726 5ustar rootrootSite/images/titre.gif0100755000000000000000000001265207310711106013551 0ustar rootrootGIF89aXd"OdxͥTs۲Ŵ!,XdI8ͻ`($6p,tm߸L6@bHWnl:ШtIr*kz 4RnxPZl~ozf B Ey}zU'X Zz&(>f 0t&vIW?{t* xƝh~u)wrXѻ1+[St.U~0@ t)\H.XyZcE~X(Ϗ>10`S/ )HpVxt)d9q엁O(5@ͧPK(hFtQ+Xx)phNh>`t۷8]Ku%PJ/Y4 I@@LVA g[˜2T&]b(ef >]&YL6$yǤw  \;6z<0j.d#+2?R"L$CB萰2EO=a*KX1d|I8tؾ]`ZIC@McT3$Ҡ['tӳ"wvݽ"0si!I1p]phuDU椠waC$f3WBU)|1ׄn /UkDZ8M}ZI8c|0PP,cRSlD'l(P6䠁h:'7ϵMIXp  wLVk`7q8 Bro NB:^U_X"s!%RR#%P s#9Nя@di@*ڃF@ʑ,9Z2#5%5Y;NV˜/'37N6 acȬqe0Gі' Pyd;r X!' ]@+ zWbs&^5BmzwtNKC(Z@`)&+Ơ=ܑj]VQ糢jѕ(w10lkS[4Xw{0UP4ndzoZ,MEwt0ÝjyZX^F= ]Z M0Bc?s`Z7e ERu-&hf Xw~TW/Hw&7; Fs]U`ħ 2ULj{D8LFAbFkLĆc8 @+ d'fX\t#p߮xU(9Q3KxA. dZgA>5a,=3N{۩{?pUKCeLb^̍xW9olFcL52[ h+wGX#FO0. J m4%H@Vp] `Ak` P D-zJp.R.vC!KX\&)6L>Y[ KpAtkH]@x5^W@ٷ$lhyg$o =mȝ5eZm?6l&=y+@HO?(=ȵZfu]Ҟn9~`mץ3!!szT`x}7X/%e_.Hf %~{uʈ\nz^4 ԏTh3[&m UTJ*iR<7e|ptoWy" q3q6FrlsTGx֋ rbjGh6pvq"uWZK)9ePKA<њLEGtOR_GvDH&xhXp28PgK햕 v'pӖ}whGjhH:aIcN0vU-YBeHej=]N HlR'!\Єv$q$2VFp?e#I7Ja^rD*6JY7[8Kv$SRNuli {'yvrf7I;ez.t pcţ{u\>U ]مZ=yK}r29TRpPc6jfԧeʠ3xtd5?m8t4UԹ*9;XY6uĨx5- Kš(\q,\|qU߀gP?K6[0EQHNH@֠YJYџG_ay;[4#a6 z)gPH(OPjں-rPDg$ɮ)  4Xz;U_{*UQ@`k±KygưT(Jޱš5>#9r4eL7E7 7ŰlB i[ $:ZNBj66E !o1w\e F ae3 gnRP\Vc(X`miIBFOeȴI˒µ@HbP[B#`¦P;!#"퓹].QAaQ}S CpN+I[ȍ>i3$rQ#D V&P[S$ۿuE `t#v1[zd.q]02!qlYV<qZ F86#̾ϧl#@#$d>+!cX&q6K$y`.荙H$MHz,PQIDym~~˝V_η\>OaK맍벁$^>;!i>2)~cK$\nT"R6ٮ}:YV?Ai48Il-5°خgn(o6my(OHlt<>l ->Q2_W__.=;'[7\S=zA#_FP{kryy^_vxz|~<;Site/images/blocblanc.gif0100755000000000000000000000005507310741470014342 0ustar rootrootGIF89a!,X;Site/images/intro_roll.gif0100755000000000000000000000306407310711142014602 0ustar rootrootGIF89a(ӔsEaϯOr·!,(I%ͻ`(did6K+tm԰pHnXql:IGOZ( .>vL.'aX\]fh&m sv~ YT3/ tu~ R̀_vrďqz  BlC@gVm'8Qʙ䫢%[:#qǏÕjj 4!.p9ѝׯ  (*CLɸP;sDi#gF0PCCm,p-AXlQ0xC &K/ zGUA$H e DR0!44pr ]KzrxRt 15kPy9nD(}7.(@eP@Z)0P^oW@^{ R$^ ٵA( I@P@Q G^LV^p֞#%0bHq^%NF#yA,"IHF 75>w `tJ#j$Z] Jx)q@w/DX3U@kZp@RIV`䑴(n I*c9XrF=×$d,yHi~ ;`Ѐ~0`d Lm..8AZM>k6ƖlQda7Ȧ&@H'Ğ P^"6N@(A$}IP &4e%ꨋV?PyyXܚW@b7#)"7n&ny0=qd5%,&IV!ùnHE@YFpEmAhsTy5yۖk\8}Mo|.q9-Df_}ԙ?qXbxhv[ݦ3T^Xk]5.;Kウʻ g[U`5T1 s7R 2@@'qR-? q)yxOrB y#~>o~I9ǓKგ{BI0E*]hY|!KUqÊ'R#B 0(#bmt$:8c#"&H qEKc`/Y2ApxĎh#GEN1 &^B]@E!d818"ɞx@A`2x%Q!vY2Њ-INgJhIv>괁"IO2/5XA=Y;Site/images/intro.gif0100755000000000000000000000303707310711170013553 0ustar rootrootGIF89a(=^jp[t||!,(I%@ͻ`(did6L+tmޯpql:IZ XtSxLN'$bxH4X*K5.zE0 osݐ; > K2N8ts 09:^5qu1Zf[EidDm %i[F.b pW'.ཁnVMP|=Qne^q1n3\P@0@}`RJVطJd 4@EHMKG.Ld80wr4D'ڗ\iAtՍP@8t݅UJ@dn7E\x7A8p q'}I` v>&j>@D(9)Tvr6&]9zz>fn'Iop"^%GߚY' Rv{Y>Z~x& sbE0e  m8Q6zA=FH\R@hgFv@,P ´T2cz6W*Ha}ꝱ [>T<ƛΩw|tbX87,p[fj7@j:7݁[Lӛn0`pYE@pj =$6k!2U )8$XA7R>FO@K%j[9N=7 :9~ꬷnzKFp눠QX**Q r' fF;|܀>NE>/~Lͬs4:L$0}^koG,(=ҧ:D@ZkR?g755s݁T M8Ac@0**JX"8J’H}3A"p^EPn !􀲘L'?7ThҢ-GgX Ea P !5*A`&@@E0bc<#'&òɋ (^/Fh1С Ⱦc`J_H41c3vY)К 6'f:I(<֋3wK!NyڼA7IN2r&g9i;Site/images/bouton.gif0100755000000000000000000000304307310706104013724 0ustar rootrootGIF89a(ٱ?`i컩{Ʀ`xz!,(Ihͻ`(di s0@lx|pH%j>):ШtJ9R Tx,hXfRE\)ȴ)Gp yt갢d7p;g0!`(1rʝK)% f @>gѲhQªVKo>n lbq YhPya8DÐvYzsjZN1&%2+_1b7Ms .t2 A<_X{Xثdp+W `C{U݀C؃/4}@V7K炉ZPu>N@"gdd`B'eP G!'WˀL&HlZ >PNBHZ29<>#N;C$J)cJlYe2%1,R3/ h*gzt`횯X#LXgĒڐ)&$!˪uvKS"' !СfDV'.\$,؟o f.4(䒛9"MU+*5 +1wĞZ_=/S\mTZfuvQ=@3m3u50(SՃ'sVaI艉U m^QvbCs{G4WK[ވ$ӾH縇ffA9{r_(4<<+V3Έb H0= ǏrPZSQ9eTA-#G^葒oxoX@"\ L l-o_R4zt9!@-n%3񢐀D:Iu .1AE bzù1*IQ=|fiaAԇ5EHFF.I۞ٲi{] BvX*H>@""1Wi@f)B`a% J8t d .<"},, N=4#I/)Ln|bqB-+K^(:`m&QX r΄)H:v@D;Site/images/principes.gif0100755000000000000000000000260507310713330014414 0ustar rootrootGIF89a(>_j驳\u~v!,(Iͻ`(divf Y+tm߸ڃAĹpH,zv6l:"$ZXHxjvL.V |~q ^ fh-ooom  l}ws CK2|l˨ 6v _txmПƬn~`H`! , N"*JB$b IDʘK 2䙊Tnpb, m,FkjN@F[Aԕ- SAI"|"5`)nyĔpHp g4ʧX qn1YD'(YP۩%$i|Znu]qF 1lg+DY( P.jG}V8 ˛ȅEuUp.1t1q#,9i If% Tr@\5;}1 Ik=E`TWmRgM.= V̍>YFd%kWS,\Mv#5 hYW}6Qfar)*D30ޔ3CJp$xXC6ebwmvFzdxq0䤘r*gX}&ۚ0\e|6`g<ȮN=Jd=)5^JLCsR`W_keBˁj2C/OG?7|2{lǖ菁 BA!;Site/images/principes_roll.gif0100755000000000000000000000264607310713370015455 0ustar rootrootGIF89a(ӔsЊD`Nqŷ!,(I%ͻ`(did6K+tm԰pHnXql:IGZ( .>%vL.'a&  z"6/Ь^ ypǐŽx}^_Մ4*)͏qB:Lru/޼ IY+ײ؆BB)0r9逩ӅQO4`2ǂ FAf^SL{F:iҊa$XURt[dIڶ`BNx`tX+PBNXb H26GF@Eny^΁RVjpM'(s8N,vatI"R3@N@|=7ԃ (P |-7aD&`7vwa,R8^fj@z}z {~Lh@@VW j@cҞU( kHi,Z6N4) J3YVv(ֆ4\; & #%4Nڊ A c06؉.v2)Qƅ@{GT\wv蟙7~Pț`T(t5@|׀vw'Gjpz"ٖuFZ$&Td0ibJ!p퐡 ( ]/U&%P_  P  Xڝ7!\X0X^6C뇓8\PV鎓&A.>_y'o|FÑG#5]-U` b=8gvǻu\|+1xyl%zK>m9>O|| 2}0$>֑ pD<'*hzt~ĩHDrw,PaH^j騲[t}v!,(Iͻ`(divf Y+tm߸pHl_ql:EGyZeHxTevL.f |~ ^ f-ko|m |ys Bb-x ¥ɟèmzr 6v_^ tvwġ~m  4P$j`\!sЩCͩNI^3|ςK sF e>LtP/cN$*7cP'A("Ϟ?ʨq(GJrr猁ijp!Dx+@a>-RnN)luŘM HXuȓ0N"$EL0@MԸ5'U4 MJ >;5nW Yߏ[Ś+|^yND=A )E5TNȁtwunlCHtU1 GS si*x&.| ̆pY?`4X\!P08AӉW 8A cs,iRGN"J0=[!y=JinYDRcL엝>P5IAޑ УH*ߍ d "`]Gpt'r %q~fSI˦}zjN@jp Ӑik |@$:Pkڪ v,X iawmn ɵ᭠>dQA⫝̸yp((:Nw@Ng mhЭ6x{լw2$86m˫,B{lӷ|@3bPgs /m_h6fLBu 07#nK!=%T}*SA ̒vލ.(ݺ?%Z.iҖI /5<~)-A8m3_аfy@2xQ+7< >D _y}Bs<3wO_$wń=ѓaH+m8-cG%GHB}Tς w ΂'4 }/" ua*W " ,=&N, :򹳸O-)FRY#|4qPo@p4hYHkV ^|"EŠ{ QCJ\%˒' Xj$D|$*);Site/images/utilisation_roll.gif0100755000000000000000000000265507310713750016027 0ustar rootrootGIF89a(ӔsEaϯNq·!,(I%ͻ`(did6K+tm԰pHnXql:IGOZ( .>vL.'a& x<@v]fh& k ru} YT3/ st} R^ uqÎpyB6f`3g}G\OaERM{(ǎHgj5 r f|1DtxYJ '$ycPR2-%ǎ?rD3C!H< `ԷQY(Po@(K/ZYUL$e @"62^R`$_^AH!0 o"&sPPI: #f6]b4k8(6 HPy%|p@@q+v @Ao7@f8 KBjU0y\y z{'i܉x)p"{M@yPs OX%AP)GQ1"{%%^#'A=&;X: ^8y |&jg[j&c#9" XyZRJZFv Kl& DZ&ZxB*bfgYyn)A^ !n+g2kmk)r^=ZbXnBr!@7a&DHhNIn#_rp@w| r渙0bl@Ik`ĝ0pz,3HrXbwhB'-u4e9L95֮F]S.Zp+]MXu @\bک(7V 1Fkc^mǓ/u )28mHP_8hns4 wZa3A  $%_A"DpX :pDAXoXq" _ gi-ppn  o}u ^CK2yĥ|xv 6u_mʡǦzY``4P$B$f]1dB9^2RNre*u@@ g>_0XcGMܑ\ʴiQ,5iCS[8 +<{%jsҩ &@RSCUHXkKk%&С>Zl译xk6hDg  xyF= 'LCefo %%LP;^C`D6˰a@owKD.Fҝ4" N+p"5ذ`('ٽqq FLjla~9sdt@@q}F: H bC$~0S-@i b'$@bA[bMaD@F96@y[,qL m 摀5OWe_E5IM/d'VkIJP@F@ojpPS{Dq,@L2~I\6aJ^-0_{LRPC^xJ l0 0e>{רPdFPk ܕͭ& =@yv^@:AxX$\ c4ƁuxB15VqD*e$ܐ]B ;܄&0[րPD2wr15V1 Ap`HG4L7t"IG-3BQ2YT2`K֓PgGYʶc ֨Zd]]ԌVJ#<0eR<KQQG ʹZc5 `4 [suRÀDS:&Č&:>n/9Ę[^=5ء~n$R J˼U 13(+>$aO7Zl,xRSϿc([G⑏.uγr?lDЖ s8d;%iO|^aV[FLq5Obz%DxM}HM?pC:qPW(dP+%O # dT4ֈ3@l## Hx4E;Site/images/sources_roll.gif0100755000000000000000000000257407310714230015140 0ustar rootrootGIF89a(ӔsEaͯMp!,(I%ͻ`(did6K+tm԰pHnXql:IGOZ( .>vL.'aX=J@GnvS! H.``;,h i)H`C z>&!(?IzV|nؐ܎@wlL*`,oɤ-X7v 5(- ^} }_%9IF)zUU]@ @J@% ^%voEV}˥W_Kv]dM@@ T?&0aXQd啑\)zc xv}؛I2PN#>LF@Vp8AWʱBFi]76dbx`bf>unXkm՚<7VcieqWeYg0׶@aXVl*G\5T4Հlhh1xRA&pMψM4+Ѝ-|Xm>YO1Su ]u(tw-Dq{ \5 5v0N|j $wLm%n>M$:K|!@!Ћ"BZNY6ĹLa%E7^jq[t|}!,(I%@ͻ`(did6L+tmޯpql:IZ X,)vL.fxHh"jioӆD*gmՇԩdžQҐlhItcCz&ۮlh>g4;%iyh {!2) {2 $ ˸9b%UlA'*brFSuIlA$k,.脄$ PkjJfpD4]V ٶ<7,#m4ޑT T-(Lxt:C6o{w>ыӈvx9{nQz}%l촯+Lcl5x@8؋Fi 4 1SW?}g;pzO|;wZ##?Cr X(_ 6l22y-:݁yf z(Fx$IO"9|_QC\sHLZEe)#`щ!:$B_PEQE0qK<G@E0nGP8u+^fp1+ X "CE"G. y`.p_B]avI3JF1j89reA ՎlleFKh#Bm l4$Sќ6Pk ;Site/images/realisation_roll.gif0100755000000000000000000000277507310714634016002 0ustar rootrootGIF89a(ӔsEaЊNqŷ!,(I%ͻ`(did6K+tm԰pHnXql:IGZ( .>%vL.'a& <`:~] fh& k svEb3> z"6/Ь^ ypǐŽx}^_Մ4*)͏qB:Lru/޼ IY+ײ؆BB10r9逩ӅQO4`2ǂ FAf^SL{F:i(Ҋa$XURt[dIڶ`B4xA@À*N aX $H@`0B,@8dmzEn'$o%(hތ-vctI"c/3$͙ed8fM\0]qA0rWmfVm-fz ~i)0_dp R"p!%XԷ!#|̈Eڪuq9Bud#ȉZυp\b|ґ 1hR@0# ߫(zn|ȩHDw9bH7H;`"E\\IVrȻCah)'*k2Rz^n`JyfbA7X3Y(;Site/images/textures.gif0100755000000000000000000000266307310715032014310 0ustar rootrootGIF89a(=^jp[t||!,(I%@ͻ`(did6L+tmޯpql:IZ XtSxLN'$b( F`N$쉼>q{{uq  eg- }lk l~qBJ4y ɡzs]!6g凅rsȢЗPz j5"ErXs%` Kɓl*^z,C uX@⏋6 dN\ʴ(Zic24Ncq>pؑvޱ)r,*GU9赖6e]f\lNoV1֘ ,@ǏCO n2bl`u*M{< LF]Łb@ngqP\86@ǖ0$JaWSph \}FMxw hBɂrKzb xD$Ѐ /*:' AJ7Qp@`GquCQ|B6! "q jǂ!cVP$:`pu\\CYXu^&"ic 4jLp%Mv@&n :5dp#8p |rbQ@0ph jC|ki'{zXޜB"<`AJr!Ny D˔5j-"hn탁{sq&O{B.p:SD,w<Z$\¡Abhg!G^`2t1 @}'Б/XA% 4md~y屡,4|S#׃3ϡp5͸eB4I*m9S@}r:ة:$TYgXd!;ߔ枳$H o+'_,nQPMԃR ,tBwoc&ZX&"&#a`6@co3o[`OP9@bp_:7~ r:d^XLeC&*zB)K0X|( \(x`/h"9ldH8B &k+A]TIFަ=vP1-w[ و7NٍE<4puY Jn` (iN6A;Site/images/textures_roll.gif0100755000000000000000000000267407310715100015336 0ustar rootrootGIF89a(ӔqEaίHl¶!,(I%ͻ`(did6K+tm԰pHnXql:IGOZ( .>vL.'a |8x=]]fh&mn tw YT3> rx \F6/ά_zqƐ¿Ğqy BC@hpsGQZL]0N@Ǐgjdk%${1s f]P0Hǂ FAe=rbx[Z1,Zc4JIo&3w\RΠYY%K\PlA^9ġ <2ͩp[ơP BiqFt )?25M=5_Fr5;wY^lh[&xvQx=6+́P3lsk]W׹W71Cl(=8B:1睏bJ<{^W@yy70NM6u:n$5mN.s:!H[wp$KjUm>턉ҏ#~[0T0C{h[^n`wP?n'x*A#Zǂ7U|XP9dlt7`%ίa9 #ȷ,IȺwnS Z*c8Vriw2.U$0Ҋ6" DJAq%$Z !с$AHpylG::@$pEEd%Nt ls7F0;Hcvt1$~G٠jlZX%qp%iLsi#Ҵu)h_őS'j' 07B*,Ε*AH`e"Lt߱Wf1+vYm eU^uiQP#~p(xX"ZsKN>00`Jt3s׭,:KR# en%@i7|B>m`uLMHL@!lpXəoADE/'ǡ}ؚҁ/xQ6|fހ;bnjW^7΅xL?!N;A1vL.'aX|0x=]]fh&m tw DT3> x F6/Ё_zqƐĞƤqy BI!p@ )8rBC u:2qԀx C3?b cbD)Kb`9I (@`t̙4#)Q@( x@XʅmfMٽu _Eo!``H`` a 'a AӨO>#`$mk0w&= k@# `k <.#)EX: >|( 2ZI0၃Wsxq l 20@jez1wZkHodP|!GjP@+nTX7h)P@?&@M-YD`%'#ysdŁތT,Ը$^$•a4&bX 8ThPaJ.Y6ăIG% \J&餔Nzr(jRP#Ҳi ĠiV@B` z$NjFrt>)DR`G V鴔(gs xZh`v;Վx0UZɛn&FFϖ[-XdwtIK-j1l8}fLdwPxٛ).vLF(i900FrWAFYIt_Ȯ*g@j,ij3ZlK YlUȑ-#d7ummFa)JCkXG^5<'RPAhA\y\KU`ֽJ)G Q84`S*/OJkxc,U4q$QP p-_c_=|${>UWDL;P9\%nφOØa"2;@s~ьyV7$@Ez(L  n.W 鍄ԇ >G E,;p#.| Ld')Ge";>h z\WXŠX2,a߱6Alx Gf  h:6G g @$׊PnW IT$zpEdX1m`Ld: [fVjVA)@;Site/images/images_text/0040755000000000000000000000000007311150424014237 5ustar rootrootSite/images/images_text/image008.gif0100755000000000000000000000074707311147674016265 0ustar rootrootGIF89aY1w1!Software: Microsoft Office!,S)<ًʨRuHgiES6Qs-O$):L%]F%bT^!_qhjdM/[&+gw'uh煔'IJ$($wy(٧GusYjJJZZi{Kԥ)i7;L\l|ɼ l+{ft;}+.vgYf?e*A&Ŋ2mRB5qݯFzMAʄn (8O-sVH:2+xL]('#) ڤμz;Site/images/images_text/image001.gif0100755000000000000000000000756107311147674016257 0ustar rootrootGIF89a~;Dޖ%! MSOFFICE9.0 msOPMSOFFICE9.0L]! MSOFFICE9.0 cmPPJCmp0712Om,x0Iͷy" #ڲ» [xG_ 2ШtJ ĥ1*̫6 6p7ml;~XS^fTM¿ȼΦԑU$ 3j(Z<8#IWXyRIEdhaʕ+GLK?`N\`' (t#E)ӥZCzfLHjgXok_+̨L9 f!U%Z>~k+xt/ߨMnhVe rsa,鱗]fF+y Ҍmұ##| PeRBQK!\;5@ܻ?8$Ѫ!ų~>e^k7E4H+BCqK] lt zuapG! P@."]*!2*m(E[g(;j-gfdT@#!$OO eQ+|]PJ}9f]JFa[xY%igX茎fBڒMjXNfTfWiI gr2Rg8BI@\)+LZATꩃDg͚ش#>jW4:Y"efj.;BYO6˖7,@KUĞ׊ee%6ӭzB*zxNBx5iRNR1+`c[r/x,il^I3 RRn), &~.~; #/e?m籅 ?[(OR1TXd3'FלJu-tԠl1'ds7Ei(E !ٌQ^d0 &8А v4^0:4z(>#H*nN[:8{3uM*`;yP쮜m US?84l|!5B_B- S3*P3dvVR忀M(" eRipSt(P DbZp; O0LS@C*,1QJTCv! .* g$bTXECeFQM63:|4^7J]bVmET7F2FZ #7OQRh26Wd h&V┇V}3(%ɡBhʫDNl" &T博.K@'WpyJ\2>fQBt&NMfÛG^eN.R,,A;)A'.M (f  q12@mQOTkED[&ąYB5 TԢ(|*KbxiHO$*uEѷSMuI9ӓ\BO447EM1 N>G(=M賤[36: V-*"̀I#h8j`ILQXf韆Fnw9LL:d"_z&B4ie RVUD;#D{ُf jJ4WJfToxMWӦpM^-:kxβcj[?-YBPHF[*BbEf? U[Y8rt?Vbcjk^V;+xUUl=|&ifW^_"Iޭ)-Q۷q8nW} oԛV 1>`FƆ7 (c̍:tĖ)0䁚DFbڼq:aTUGFrjSyXٖN[̘̏j_Y}7gsX2j=f'7NN,?MFdE)Y>q&tqgBxٽБ2Wv<=WbFd~'pa(-3`mU*g Z uoMrZ#\g7<&U笁<_Y3sOez h䁾/>[{v^Lcw?](rU<FҼ9}"o9{~qQz8Pv{3wOGoC:"J~!pҠXձ&۲.k ;Site/images/images_text/image002.gif0100755000000000000000000000761407311147674016257 0ustar rootrootGIF89aGGG FFzzz! MSOFFICE9.0 msOPMSOFFICE9.0 ! MSOFFICE9.0 cmPPJCmp0712Om,pI8ͻ`(di(q<0>x<%8,!9h)xF5!z#T\zcG<Ѳ= -Ez9|hRb -`ojvwCM C \CGD M >2AA o0..2ocl ?٠,~`sp|0C K1LĶJ7\ȓPoC[TN&4ɮ* t#bƗE!!-JeiYrayq^M7Wnޗfyfov\v\{J~fjgʪSQt  28o]Y#[5x.ŀqўe12РUqD83DOZP">sfpa>rYTAbl!$$U1$[ԵQdPDY6IR0H@`=&+bR,0E3Jbs30N&+ W6ۆ0, dӂ627]UTmL-g؂01 "9D c?ؒ=O6vCTz:b\&vy̌ ~ "QP; o,n.,M.#.<@\o.O8'áT٫ԕ P"568dɌ%g He_`Y 1p'@ `. $FD!2Ձ4sZP|Lba]4U(F5n*$BTT򭐵kcdȀ,Џ# ȰHC`G# kD*k t!DL$0'dlj J/`Ua+jBb(Oqdy%a\}نiR(0FЊay0h@yݬsGi'ԉeVbpvi <N=@MZlzf G9pTh(YJG=QJOD44 iI4L@8vRFEj!pG Cud" ua5W̃4 )TzI#%˝ѯDQ 1@g LmV:\Jai$"MzW)%2c7O=Sgh\)WtTV{@{=T_z鱵uDUHNʨqJ$#&RۙVu;&jmhD!NSRjT )WAҎT˨hSLOFiXl"vM*A"*SЉ@+^/SHՌ™0v"kx`iNSmff[D5~i#F6Fj␊VjnⅢ\7~RCh*R0+\#z:s'AS**GQJ Uiא]0Y1L90.D\ r+DV<ʞZb%69%MXOJY nh_hn(3 KuK+ ;*Nh4鳄z>j҂8bsʵ)PGXnG |Ibi0du+uA; ?P!lz/V%Ƀ-#Q eZĚa+k} Xɾ᭱hH;~  Aم}PSq>?_)JS-&ɉ\4A_܀w Y^Z: @܌5`9Xi|gk܂&f@N|E I_@8-SQkr>^@O/91!R-#Cx EXg73Gl 6~* +Cȸn{Y x< %!d8n#kʷèwmӢa;^o$4ΣfdX `4yuS;T?yC>Uc67ew"(rJ%27]䍉@pGcqk4wtn dW`rHG #wpmgїt 8qg7twpF&pJs$J7x!v [G67'vp[ qՂKQ0u %"@7a fS//ɤl%H=wuBÐ-0tXT QFj1-/vsgCuSP&S$z ]QfaQcs [̤m$XU7``( (zp80(!8ċ'p vטf>vZΨĨW(((zx+(( 8aV%)yXɐΕ& !$ ߸ۑi$ol`MwUkp_'IKb%Rx~Q`n'd5(o*o+VБV`mn1-q' _UAC7E!.V&v)vO^h.}!  VNp `r~IKv,wK>8+@m G „ ؖr*Bh5`,l|r$yPp-g&'szp-9 ѝq0 KˑT= z6wzp3Fs:a2#@J٧ǥS΀='U@7Fyyg哘gHvD:w22Jj6R$s^pH;(i^ IP Iˑ-E9sr߶.Xj:,-}Cq))@S_p&09g8pTX`Q-0Xٰj`%zz*7`:5S7lv;Site/images/images_text/image003.gif0100755000000000000000000000105107311147674016245 0ustar rootrootGIF89aGeeeEEE! MSOFFICE9.0 msOPMSOFFICE9.0L]! MSOFFICE9.0 cmPPJCmp0712Om,Gx0I!r`al딨+tT|08 ȃ!Zo9#`.OwlT4pW{+a|Ugx9h>D ;3@Bo=b3sw<8-yKE+cS gUCuAŝɲ̓ҥMt־y۶|ϴ^mq~|p=qz/! (qd@ŎKF2DlxlՉZ>TQzX`ӧ .Cg81z4 \L:mQ).`̄ B @IhӶ̐Z Oy"R邰^|Aq!_…E ˘&;Site/images/images_text/image049.gif0100755000000000000000000000034607312411544016254 0ustar rootrootGIF89a!,ڋ޼jf(GhX+ևnEa gkMR%٭뉂Vָe+p8}֖j&up6趇x)u@t%WXHVh99'*Y񂚖zZ*SBtʕz4zb<˜l ݴaGdE;Site/images/images_text/image006.gif0100755000000000000000000000362507311147674016261 0ustar rootrootGIF89abDDDVV PP o! MSOFFICE9.0 msOPMSOFFICE9.0 ! MSOFFICE9.0 cmPPJCmp0712Om,bI8ͻ`(dihlp,tmd|@@,ȕK:УPFجL@`4Ԛ;a nWce{ki6 mnmTntg )s \afx'`me^djɋ ҝ g\\su چ0@>RćL8Vڼiגvk٫u=h$c&h$!h6@ס54 !p8xg BŒ@hi1KI)JlxjI%LWx x&!LhTSDؠM5RK%pPe=C9!b;![JMvx7dҦ0x\&f[l%1e@D3'k 2!1ؔ/!C2xqGps 49tTGIsZ +۸'~v{GaO `%ɔ@fֲ6?hgt[ .gޓ^1lIsw]+I*I$STYct.R6 6X㲚YcĔ}oGEnGVlcϵ7[!5yճ3;kvWv1EMT~ׇ84Tj"J8R<ˣtSoRmM/4nʃX}8MGW~nXsecGK#[vE ڰX|{"?=DDzֱց$aj:HVnFN}&{ۺ9-[Kⵙʬmd6ws}Mwd1ZhxUi억܂@tQ:tz#ܘoU}CLVk=OY#n|cAlnНT_H憺=d$vfa6_̱B uo潿s͖>׬ yqsWsY8ms~Og7M#}Bhњʝ8#x3e;XS7_"U??7Sk?\RH_cYvOD1sTHu@"gm}rɂb^ A׏ըN>(.K,!y;}GK}U]ྺ,sÊm`-ujo_kb}_ uhq5mvAU*;ƒ]> U,ΓIW>fA"PR }mnpd6=ϏqZ KMg~1 Pl1+;*_fd X=>׿6#sactUVd2ߪUl~3k,m> HX{꽫N+ihȵ$ߥ}-~GtM/U1XmnYCwSPhr?3n>\Fϻ֠:"[;ym۵x 6K=3~}\?A5=UicƢWmn#hoZDșGo1W7}#St|^m;(yG۸F Qk}:Ց6g6}w"ܲK)AsI?>tq`HE_gUft͡c.]0wꮱ5-omfMOs(#x^/OoEuicb6L/Q#շd!aqKՍ[}3l1#G45eg.ּn?E1U^w/O so-9ؕe>u 7kkXgOkӡ3F]/O) k;y?ߘ}n`Ѽ~s~pwX:tWMb4s]e2^+5VDD?dUV8xpn3O3]4P7.{jH'{/mIӺ{m0\θzGwؼG^Ϗ8ee$V_'^ढ़[0xuUKN2:f`>Kvi}vUcYcԒSUԺRfC/pݏik"\}d{|B>RɇSH'*$my=?|k9Z.ϣms~RDޯKAmxmW{| 1Zc9p0>v N@.U0Ns..s 8gZ ?1+M^NQ?'u 1+eAc\щӆ7UHYgG}rA97.@1s)ߞqdsKK.$sZv"/Գvۜ 81mO/gEҤTI%)guҺT Yv,({?FRIOsza6t?i*vX5ُ߳Q]WC/cpT[wWfw/wg> FuFK @q[}{mt)<5^*2ZYn=nK}ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~+:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u &@Zt.Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@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///050l0011J1112*2c2233F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs2F[p(@Xr4Pm8Ww)KmAdobed           " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$RzX2م*f?.W;ktݷ XE- t;fťj{ wq(itͮ΍v6T6j%%TΟC}rJ}y%w6;8] 7wWHFSbMegK9%>_7m``F7~Vl]7Ic5 /H6ݻmI0 Au'IJI$RI$I%?TI%)$IJI%iqtH-6̸~}lo[:&{GGG7_ssoyX]?9c?Op.~I%~]cwܯmsYmָCցgwHZH=;ox2=KpMd3i2?:lC"^7n]7HX8u$cณKnwMo.9Mk~̦/߉mUNØXםIt߇]M<TL[o$ݏ ~u)HvF5kX5i8~k_fw:i 7"EV\NDa&$c`$Z~}^!w s/` >>[g=Qqdce U 1So /#2szK tmyJ+}kbɥmaV RA$IRI$TI%)$1;aaHuTg89{Q4Y:3535P- EMO-UE4F^|UD[,Rt.mC;d 1uyOϥ?ϲYM{zVh'ZX]+'&.ޖ9O0Jг:L&< -+]ZmOm%?y>GrI;2rr.epqsuO.Cot.. LLvX'W[k϶c1G`n?޲Q4uYswOԵ[N JpqWKsyJYQ1`dtei[- q^@*$Ȃ{/+ {u[S}W9{]ԓ/+X,uR滷&F>Ěwmh}v4\ӫ\"/'_Y@}_wYK >]mMoy'RI$TI%4S=7#䘫wqB*{Lcdd;s`k^dQ~{j w{\]Տ$%ǒ[ yWZ[DPIg]e]Ƴ*kL-% y!a3lchP=vY܎c[Vh^hJ=ߺB@}r-`0 y3X.<OR:^`\ cL1^GT/i3PIV#kq[-k\3PqK*t.E3D8w=51ʼ*_s'E!>dӋ`idC`n?V t D(NHq ;в5C#m&L;ޛ]^cxK@JVpq 5vCioQXZXd޽W^dw]`d#x_޸LOa<<yAKo^;q2.L?Hj<GI9OUv`.'j>}QW薷~߱%>CZd>-{b7@G۵O֑+[C% asHtD'G2Ih~ NO=Y|~^veo3[쥅ky$>s/|r\>qyk.,x#eɒ>ͯq56qfL{Z>5h5p%\6cՍCw1WiUՐV FhK!#@&<0c, aOMͧ% V̗0:VWa{I4:]'٢ahbFau,ms}})N;nki#b/؋@jPSKhG֓X}!z`,Estl:g]̙Pd=?G|$:YQ4.kv 8t> ff=AD!lTѠJw #[? 12|{ʖfxw Ú.hk1O|>*cF[pl05?pݲ/֩hAesgפGbWXYc6+;ӲZǰ$5}GwV=ckuNdRXIw-21Mqh5\oc};F,^cUgBġl)51?ܯ: V(N-k%xRWrV_xJ?丣9pdӺp)_԰~so.,f]Rr$v,>:_[LEk5jF~>Fe[?qA(J1o3y03"wV\07X1c0M4ٓS*,58;WJc%.{,qLA:zB30zpԥCmB.{` Z/d#ZCxt"t&k\UkIp 5kXʷG#ɯ!sk :oo;wL`#^K6[X_jǭα萹mw^KtDDbh>mbl;+~W>S31]qh1>Q68$}{"Շ0I$ȹۚL7AZY<_I5*{jmO dn^+Z6݌wNanzWCʶ#nS-ӯ1{C)&1Ue}J}@vc=Gk ^.܀94:j{Dnl_4?8:, 㴻W=Ї?HU8ԥf p0K51:%We~'O[O4C^\kyZU_]rh[4+U1\`#a챭:8?][$4p\'QµIkaҮa0ޞ-KS<#%\'Dffuv{K\+.³>֓fciX9jt8^Y9a#щF"S#ei1V26G#[gT憰#VVMEOZE7x[}?=Vة Qɞ mԢ˒Iu錮zfGqY^%oYQ$1wOX6.v?8ֺ-\NQrnZs/ѩA<.m.~EY˹W΢?4X07FцZN KO[u`xk/c^W*G ` {ֽQMZUwaKޘ6^7U$By1I̾&\YqZ3q-εQo:iG7(]±L~Mr E!m̴ $,LVOpZƾv `xFCrŅ=Cŧ6c4Әʫ 4>aG+UiMwDX"@1Mv7%MY}CEns,$0?]c\́24R$LA ^8-:]f<4vڶrv8un-W,;vc@wQϖ`PDY|8 $')XH1qOw]Um!»%DauG?4@8_l}M  Dh}@?ߠcu6m,Ʒm0 I>+q2.a 4IGW'v}lso24r0l۷vE `Dj~`ʾ3/g=#cєXKj`.G<Ԫ,jY'> &WTUz`q?/[dXZGYȲI'Y^Mrl!k#JԿO4t<CuR=&TܻGttӫcTWwzgTI%<7?k9<˨w_Oqp1}'w{WuOևcKè-p5xg^wծ.x0:-N=%i&'=_Jꎤlvv]>P5$0nhhx0:H xƝqG1C7A*X=k- mg=amu|{@${ֶ5ocWK4O>蕶 ϝ<ftAZbZVƏcOݼڹN.ab诸m?@Iw+:Ѻ8!/ج<ӫfp0u0}իI;$y\oOVsRoѦg_w򔸱Jd:gCrIGmbI%?dt91{_C_\}n'7&XA?gJVΣ{b3UN;zJ6e$I)TI%)$IJX_YrVe`z?N7ԒS{ZxbYɩ0O}A8O!{}n6ڞ!xik\O\7$g ?g$^:<Y:tuYA'7[t-g]\bϫ=HQ:̸.`g/ݩ(`x\r) (R!uŔǻ5bٔ\IU.ςy;GV!cV 6Mڨ>ƅP)IwG/+1}?mM?fȎ~R9RΤ7-ѭܻ r>dmcvGޓzN0?6yOw ;mYԴ-jvnu]I&/RI$I$TI%)$IJI$RI$~\d7khٶ}-dSW}8s7'cv,;u[}2Ǔk?KHx(m&m첸ѵR?ױG8䴈/k>?crG}P+}AScC b=^^Sż1cCZ8@RI$$IJI$RI$I%?Site/images/images_text/image051.gif0100755000000000000000000000132607312411702016240 0ustar rootrootGIF89a!,ڋ޼H扦ʶ L?@+@"~ȋ =FCxjjNeՓi ˝}}A}_wW8ׇ1 %Y%%SW0t)I٪!:J+h+wY{ FJLl)̌T=5hfE$iog/\QdӦub:ρ#HPW`|S1I.>(c˨31SK/e4S#n"C/]J5E.JE9M?IcӉfZ} >mZZuX5ҶvVf\zx.P^u+ޝ.ܿJZ3a1n{IWDKbf_/ď1j|{:Niw^ڸEʘ76RU-rƣk ^*86p?c͛|_xKI}^_;S꣭v#(uYro)A^ v~(拆d="a*%Rx׀wY" %B&@TD$9n-!DNGi!9!)d9X:cw#pɣ9qO& m&9˛ȉ"yfzg~ hJhP;Site/images/images_text/image010.gif0100755000000000000000000000176407311147674016256 0ustar rootrootGIF89a)w1!Software: Microsoft Office!,›Z*޼EeD* WbLvy?zĢ%<*$5=(jP@Fʯ$_SNC{׼sLe}"eGwt0X҇HgҴ i )fzGYz*Xy@eZKɺHr%L ; bJ{BլJfUf}|88Z^m!$9/KΫZ9Yh}53 )g, 7i  fyï?]װBGywEB>T\7 #J\`5Y+'bJPkHրc%{BDg[-'Vk mpr:SƜ;γ[/хȕ>@Ǔ}^|j\D~ &QS@rdI oYIP%`_`ieS…4EjB`$bUWu1HSqPoiO0`c6(0Q\d:P\@A|gO=FK͢\[T!D"El3\8iNA!X3u؁$?nwD*fߡ,gsnA_P:rh.tKL)!X\*7R8,ƓRLsJЫ’mI v8S$,P¶[[&DͶ4iGe/Iꫥ2|pI? u~`PEyx*8iզv 2R3/L+cS3V#KLX9B3Ӂ4@/\w<qdـv/}F$I`i+a=UvD6~EBqL3/` ˬAӊsw 8gA'JHR: |1&:nz'9\>6*ˊk! 07ĵx(#VB8[E5;CpL-ËqZ5d1@t19`Ǿy*W|1)'p_Tݪ|Û,}'IAG8$`j" $}`#dˁ$FpEuQzլWĥr0N@r@&ӢЈZCfrDϣ't BYMF,HWfuJ>Ҕ-McY;è%Jl:&>VEi]yEU7Se sk\ H3H)nsǠR-jr[Wf-J%[]1`PenymPB^jseX B _`hhr%mVț_+;Site/images/images_text/image052.gif0100755000000000000000000000030207312413332016233 0ustar rootrootGIF89aa!,aڋ޼@'[YԋА;}RFC8%劈*,hQ5Lv*ekstjl]ڋ}6&8wG2HEwxhF8ՂbwIeTDjhaJ™ +;K[kP;Site/images/images_text/image013.gif0100755000000000000000000000075107311147674016254 0ustar rootrootGIF89a)w1!Software: Microsoft Office!,!˭ᢜ2hsƺp^)bt\O _Cͯ4J,)jfa)-)EX5t2ՉVasAB;nv8憇pwAv6闸٩7(ʅvǖɨȩyEYb::G&ֆ":+ZKiKZ&l9[z[k1Kim2|k,~}~\;nlGJ,/i Ҵ0!u{=#.Hd:&c@^t) TtFaɧeB`젦ʛOl(H53<;d )ԤRQԪ;Site/images/images_text/image053.gif0100755000000000000000000000054307312413372016247 0ustar rootrootGIF89a!,ڋ޼H扦!{5"3uot#4w6Bmi~>G)P52y rj%+K"谳q{7g3WX43Hx8TdDex(YIxH(g i(EIy'hYAdywɈ*jf{Wɣ \=]GC|̚}TY*_]+.([gСFÌ v#M10c:'  aXI?>'k҈#攖0r 65<{ 4СD=4ҥL%;Site/images/images_text/image015.gif0100755000000000000000000000102207311147674016246 0ustar rootrootGIF89a(w1!Software: Microsoft Office!,ڋ3u'HdQʶBn JEvID[֖ъB6,&v]vm4e'\A&޽w"8GgBX8u'&R8Fy&ֶ (iFع‰1'vkY*:g\;ևdћ&Z+l}H#}8 K|mmXN-Ll\ ]Zz[˗/ԍ'q&;ɠ3q 3ovzɢ.C.P: 1hzy5x0grӢJ Q k3UizYcq4("F '95Z}%!u"ĥxmm;{NDB:񞿅&w8=n?IǘBܥ_9j҅\prEsڭ~0}jb=s5OLvQ nuScUT-|5LW;2` sT^kB0 5(+-P% ݷ"(N8ov0گbrf%)-܆'6akr;qXST5w GJT\煔wTGAA 3o qR"BX=MqJf*i>Xl`az+nZ$#]Ξ0qWJK̹}n 952rA9D]\A>r;2ms~_QUn$<M|E GZ#CYHMcP@*\͂ĜrJh ''yӫ+.ƥsJ sqn\EtvE93]T$uz[IOeڴ6r\g SZ6m=3^72TzpN>}-H23Ю6V#chj3֫~ǽh`[5]pI9ڳ֧%E>WY~n.#V{RǸ5AsG.KzFU!VWv.N ˭C`3aV51 7=85zi3l=S08]D ͌\j.cүEi-'OWt: d5RqZӤڻ.eiol5op[1Qߤqc@lkW([׺Bs'kR(@n"HۏZ[` c޲IKmsJlcҽrNO_j;kp=OJ!D#2;w>3sZ7ȮeXQm^Hsb`8_𯞗|dp}j-T8Zo#Mi#ʏ.r2BrVe~Jܶ@SXXc,jW{0TݘnoXEM ds\f~&b5VԕZVҫnz_l$b;`zrAsE Bm.RxַF.OqȠz[cޣ-Z Z3;yQW&aWYkA _NΆlZI[~<'Lҭ#ǥul` A:Q3WLp++v +zڱS_FBiA>棽) >OnVcIp`>pƼ4UL+ZIR#ـ\ ۦqSEz%SGj#[@ʷdF=+y#?2w58W=f2m-SV@56d`+v4#Ql;}.A\ZK)C¤^W$htDlJ<#ʎi+6YU[im+FH [H<#9+]Aᱚ)6pTOoJ s u7c<GeڅH#ҲWqܭmXVIFEbZik$MZ-筨)7gIkeqt<ݎzW2/@KUu0z5q W+ێQӰM?dDn9w[Q\/)}j8G+d}hw!18m-%fr 8:Qw'oe+s&OtPYx1P]ɕۜu#νF(c[A]to5JmmQiC\{jzbKE\7n;W]ZE0# kVqrF IHt7/5=!qϧz#5$H~#qQܫC[oSRgFQ!> gSite/images/images_text/image017.jpg0100755000000000000000000002204507311147674016273 0ustar rootrootJFIF,,C    C   " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?SZ=dzs\sqw>q(ePm咽y[ҝ#5{LΈ td#*9#rMzC!D[4f7ؑ`x<dqI`tKK;4i$#T$HܤpT܀jymkob{X ڊ2G/)l۰=OZG3o+yV8̠ihz}2ʱ٣I-=V!c^rt=GtgL\nc22 r3|  YRVȱo5XO" i.Ǎ`*FI+HK#i,̱]`wW4&NkKEd :(;p>Q"XKno!"19"F`cuJSw_>ӿtOvV (|'qpT` PĝK##N*uPד6 FNCぜd'Sƽ\[6Hl{#cg$20:-v5tm^PӯmU"%ڥvÌOZ=,d(ؙQf̌WsÒ1VZ׳dtD< [Hݽ'9 +NJ/[Жx1 Sawwlw}?}I5{%eɇ(rgrYv1DOg<ΗL] d8;7>pF96¼=ꇏncԵ[Ȗ ,tHHA`0YH**9Myj>evaЉ] Vf*#@>}F!2 Vaї%1u[LX[JYdfo2 X9M&2-A38GJ,7{Xgxu8#$a;`p:FmmwLE]j1$onKj.U2NN@89XkeKg-W ^]N'#0$GGSjvw@$D+ 'A>CVu̒k'R-2dĞhm(8gwPMcHfem(LT\`V^d<&+1l`W$RyPo}Ǜ=MvBu$uZ^EM$V"l奞 C݂0rhchwy./,ꗅWwنr8p0G4m/,M-#tݵ¼ĐHWy"SF˛EL֠ WeT'%T:g$sɧKeM7% k*l,Ö\>l2;T}Ko_\wg,"ȋSpI$c@Kkoac5YU٤p( : Ľk/kvkB%TK4epYq8 qUɯٮE7!$S9R{K2KU om.[8 @1 qQIy. )gpRT(;9i\[eh) FdA$&v{9'F Pq!q|u[_^6Z6Q,F(LFBIO5rPh$f1,r23T<7ǫjkwe aJa7 8sVVY. 72M<ݺ8a`G'c &1 񤚌/i.ex#Pѯ! B鲘P4m m!U@zMeƟeu`Dwl7VltqZѴɵ+AiI `O#̠@QNstyT]4b׉C*߭0m K9=*Nw<1e+I(Q99kBVEL%@${CxH{K}1]ɓ($dhžG[H]e%Ñ8 Vqf5 (e$$N_x=ZO"MT\;႐@'țNhtl_K  )>җ?y~v{tumce8)e|Xk025Z[ltX g%F* m'T,5K[F{T \2 9hOh7oRgp;<2 #O*]"4;ʍ<@d1 1#vҋ-̧Z&H.aHpO֨Z}SZq4_9 e0V<Twwqk kgi2$A![קw6763\,vM礱,y<^\̺gXo~Kb@ IgPxg&f $B۴Aʜ``IjW\_/89@p8b7y'fN歷Wzv?¶ۀw{w>%Ԭu+6W7ŒG-$)mWmN+u4,CGOSB{3h[vq n\-Ӎ T 3qT)_Z׎=+ZHynQp rƹF>6xh-0Cc U.%`OM𮓪lҔXʹAIa^i84txB:LR=HPO @$zSRg(>}DT6p,l^8![8uV͞qmUXܬo#*c3 rA[.u$,a;KA$g*)3s,ZŮR*1 [#yⵍ9Gzt׿/Ky>qs^Y-[, Gt荵ෙf\#l$pk{÷iꚞjj -nG`XMGJ͇W&i# 1pG7-,]Gv5+{xhҡY2ǯ5;SjKOm4D^MKЌ/o+ 8ݎ7p@j>%t,q$T8 m >S51흿x9wH 5~JIjw6ڙXF 2$@뎵2r2tj1[Z8dPAhH zNgS]ڱFt32 pIɪz\XHAo/!I@*u}p\JԪB lOPqMIJv.6]$MBxU偈RQ؁sZPRš6ۄ4azO-|=z֖nDn,Fx1xTt;^K{kȒ7;<" ʃ8qKQZK~hZ%v[>p\B\gcOXj6nby!1YZEmۥD;TȧpH:E0VVGPDfەIZ[5yz]cKR[PֲBmKTCe`cwŬŮ&hK !,`c5jz^RGߘAwm )'aRJ$tϑͶ#0ۂewQUۅ5~כ.~?+Uh0CL/ 2B-D'K7SKdd89kF[i-XAT^0Ij[:T-mmB%Ą`l''=84gQk_.cYnkB#pPAWtVŽa&y 8>Wu˹-HǞ>1㹪xFPl]K pt9Cgf?. gT(\n=tFk8cc7K7Tc%pyk uFi٬kp5b #*HOGwúG%`  ~66&okyem͏d8[KެC9ͼEa*lW ݟ)ی`e)pVMGd(',F14]om{Ù.%gU2HPp28çkV4Wmn[NN 1*{ןV1)P+nՁ*ųv6w Ech.ϵ.6 2G aCӌd֯tKWg.W ~$\<օVrZ sA,oo,2h H);9=qJU^>m =)XIlAikh4 nWe I22O8YǓE߃{4x|o 7HeL|'ߠaj}Wi$@7\0:XnG DI(01ֵSqnխz/!"c[a]AFrqS&Cr٢IC)65jlN7Vweé $=|nlLrLR!G8$u j)6y~_BOj{g1br CA :KmQfTH>lM#p}Zv KoM%D|7S~u#tl2(#qI98inzYrY]hjA<0I lāʀFSI ., r@b2x;bM:M;R#ua<'>l.odNe }&_p@PrI`y$bK{=ޠN+hʧr>=wq\j{#ب7N<*B,.ざE\ JR< aZQiڼwyK[ VƼV[Kː(%X(gg^l? +O lc;F 8$8M^skaosjdRMx<1:6äjȒ'  ;sIa;*g%k( L:KJݿNSite/images/images_text/image054.gif0100755000000000000000000000110107312413426016237 0ustar rootrootGIF89a`!,`ڋ޼H扦ʶ L@+@/"~#<$%i>:9ʴJoFѢ#\Lq؈C$W@5&d%X3ԸhYghth 1GئY !ZJI)W$ ,FZ\5X̌f,;}{w$<{\fi(Zܞm Y.>3Df چ dH>읣Ϙus"ldYRpeS*~窥KlzR*fg+JgK9G*ө6S\sZ&6fR.#̊)5dSGR*%կrk=5fFw&mN (BV]!桴\I=M"fq_}f:KA0O~6#._eqʢy '. CsG7`QsfkOHU怏G˗߁xr={{ٗC` .`>HB;Site/images/images_text/image055.gif0100755000000000000000000000041107312414506016243 0ustar rootrootGIF89a!,ڋ޼H Jȏ̪vk'_*A|ь̦6k$Cs1:aIhTzPqs}檛ņ^s+nW(ôWHXh8Vg騉axą:jJykhz؊l,zܺ*j$IGz'i{%!>sNvUN펟P;Site/images/images_text/image056.gif0100755000000000000000000000034707312413610016247 0ustar rootrootGIF89aw!,wڋ޼ _fij* m򂏌 :;su^Ϸ[ŘA4WZ䉌:*(ܖT֚_6k[nvO53od'&X'6AHe8UFTG֘(IF J95Z&exPyy ˨!3lA{Ĝ#,=M]m}-];Site/images/images_text/image025.gif0100755000000000000000000000432707311147676016264 0ustar rootrootGIF89aG2w1!Software: Microsoft Office!,F2ZZZJJJkkk{{{I8 `ldibl˪u^߰a\ݪԁ~ү9yY ٧g't wa<0(M>e 9ԸXGH'08@QR-L cn`/F!j Y8dR TH`p @iT uڗ6}<W%fJءH7]ۂݲJ1waP6 a`( J*<ħLSAa >@^9tDZ 8b3OUEyU\?_5M8^C!͡ߐ|xI7Ag)M;ivlq_ fyD, "fG b $#m6XĄ3@%0HC“F#iAϒ&UQyZ(demVc6RnWw-`@2{!TD8Gn>G@lw1i6v3͏L!!EfC5u%|@9_]UH\y5Th i4FiS`P`; gȈg`u6Jx()yu h mUm`f e[t:Pmc̘ƹ^/2!ZetF`1.PW0N*_\+l&@&^ %de"ÈmHǥZ餕oxp#٢q%n6̎U{]`#(-^f!’Q_PEW dh;Df6tU&|]@5M,6ƖO LأhUQ#PԹxw®N% nQƄu?3 ?YV,VR Y\zrm Y;"؏:7nU#R(>r@'Hr\m':jɕ|Z͏TxE2'Õ0ĵE[4dB5XIt%QXNJ@ȃZJֶ (']*_U`[ol5+]2݋"̕i9#+y1OQ4暔-;ij|#,!L09䇒=X2w.[$L Y·풳G~|D^tXHA=+- ?0GngA] pݿrU\`a%;lƝw0ӸmO,jg2`#۵YPWi5<[=p.xl`?}^ 4f_pe_mef[`uYq1(|e%՟cu^6VXbn:YfHWH{BC>ۄ' w_i׃v,wLRd)vS.id =pԉ'5X\ s|e|@kbFeq&X{55\) \v8Zsha Ƙsh(fD\>2ƚe=&Y8rE&+yוKU[V$aI$wԱe$9k>יBEYZgIgiz-YZiV5VnUn)j.*x"W-vCɅda9;01g{ɂ?h+^)ە_ IwN(^fDE_KDۜFn_6C=m5xV]B= ~} (׽J]y=$qY! bam߱Y֩7&W3]\ڝ k|ݯ$)͏lX=]4?iuzJnkU}D&露Zqu&Ln  ,Xp$ c0X'cz2s%sgA: V]sxu+矬]ieT\d7O9>#=.m Lb-d-uk &5N-h`ֺ+G zpq\˸4ԯr98( \@zѓ$p ^֦=@{:<ؐt͊R^OpЋ bLqcr@65:S/IU,&G{I|W!(/} t:haSvp_5P^GcKv4G}(0,P=ep0Ra0uE[`Ȕ@0F&hDTC-F 1yK8$Ü%sd ^rDuOG@2beԖi-iG蠺L&lPuKB(!m.KT+)d\i]tǚamMcT)= zBa2SNLqT^r%2USڴ8ew kԕQiWCo $hI2i3;UZW%ʅ-,MQC_k+d >y(A \! fE[jK,o[2%RjShN`z0vSj8fOw+m) ԕַ)wTDKNȰE=ϸ*%ȞB4Ҡ`WeceaQH+ *)>Kw,($'W p]MҸfJSzܾ=n2eã:-R+\uþ,lSz1mꜭ)W NH0ifj^zAs)|dKA:`.H~f&PV\a?8N%v &P˒-v6Mh/2Vy901i2\#V1.Gۋi/pz3=6T;zQ&b~X+vYR⌚qDnja8`ƠeDuXMYyvEs@9<^EN5A Nݗu^ l/ОuKZ?201AlzxEu;/=CS[ൺ-i`Δsj$P 4E;jQ4ZU1sJǥ.z#p" UX=`$MWpPaTt:dmQ$'!'9`':I({cFKvl2..DO4\Yv=RFm0%aF6ZvZDw7\DKMa2fwvp/vm35PՅi\2u=S%gMCd" g#X%0=URU&LwFv9~9vJt3I# 9 g4xT#49p93E@Wz4{9Q\M0ٜJ JQ^燠D)8JtvT8&EPȕɕbdžtILwXgaT:j, 5X|4.5ڦ!pstH<TEIs(VϽT>bE4Q!D!?_7 Kp8ru*,`֧1[hBp|p81 !C4P6Vaʼn|5_6*$H8EEAX"DgtQ94NjEsQ[ 4zNI ,<7 cnlShbHԸ58C+!k" ND-C y1ЪE]iw2@!H(M6<j(zA9tRJB)#YToBʖ\r=C!>+M2ZR>^C eKV $ض *cSc pXVAHFDQ$6DA""@Ġf۲Q|"i a/hc*i\wQFp4vKNtB,h\ eCTIX:B!h JtS\3gh2;1 rȞh %i]1& @ D;AKu@o$0PI(DJYC ECQnjȔb #7RlKϸٰvw4W4## 1$E&/ mìAw*01AazQQD $215#; )J:gKTWAjBP=0NZ U,3NЧ!̤#(,('bz41Sb# 0RMF$ v K/M2و`E$G:^^;ީ$P.aIN98`,]\A詗Z)T5\c30=Hϗ>SO&"-Co& vD~=2Bޛ<  X 2,G r".D~5~dȃ2$$IlPՍ6qDs~sp%elKɔ2GՍle>*6m:w{aUI;?I4,^^e{=5tw '!%5&Fp31CF{U\/c|q6wr32v9,H-t -1- AMF_ͣ}1~)@g@DNcE qqy2+Eqk@G-7!!&GlK5UhR"FE  5,Qv4ptq032+Lc3%H & <.D71w  "yN`)hbl"6G_nRu *+c5s}*pxH.#zr@D}he &S2{Qv%CRbe$tʗ\Ai1=`U;|2P*>5a:,{'p"t@t6rNu )f'Š9#8p~rA$ .sAx[D(Yxd@t,FVuC,&{fSX\O7{Chi>g2؀a2-|3ذ 0qof"qHbh9򡉋E"yxOT OEzyDߴmrL2G''Xs*QTqt_IȅfTU.Uɗ-v}uv*dvи:a灬5=*xy1 #!82jCBsH}&V7-aE8OXY~ 3KIGTXXEg#5,*a)X!fhG4h| ]&pof'oKy)%hC)eQ!fuhcw2H4\[^&(`R:k>X([~F[zԝ'bЛEu1{ԗxĜpw#/+y&Hqx(P &HP y{A˘AVP/ 7pIИvo12ϰ@iy$ +Hq9##1@ W >^Y坟 r3~0a]_XFWȅ7!z7&JG𪄉(癒'{6I%|,%/P}KVvy$2$Xww(G7h g7 ]U) aXbNNE:z`U~A!9w).+ZLqꑑq4UƵ^Iʁ\lXVX5V/ԓ:7wmJ $]H+:`vw}7DwʪE'[ɕ`)Rex8ɗSizV pyk>G7heqruI#(7-VvSBNcOtXr3 䭰0gI!b̀ìsNbh,`錧G # g,|, VpuJ2ʩ[2zʮHGW{8heT}jՃƨ zWav)yWC _p:A׆> pTнtf̳ӟe&ɪ"P+4,Μ)?I {*wUk-clh[;GKx맩y@ʙVhʧ*b/qW(\IzM.6gP2wPZȧIjZw_#IS    ųĜ/<&%%%%+<%<*8++***&+& óljʪ.L0 Zn5..H)L3^*U^VeЄ:.4bE((JB)%gj2jѣ.vZ Ƥ)su}f]%iV](f\D9pWۡqV8rbe)%4c 1B AlDEK+Rȑ+lޯTSu_dbo5B?sDҭ^8 (RQ +)Hn%s앥W.Zirn[zQbaZ[q̯pZĘ"8PB3Jyt"Baw-\ FAVI"RJ v_@QNL`o=]"ugqE#93,x `m1tǕ=M9pA:TSN `%<}>Ffdל! Ip5zYiQ.@#Z%ш@!H0![J21sNju 'BkHH##}0BؙETcs`9s1 eްWYfFyؓȊ=cDљA )2JtH[a\,Π NlNFH;D8 _$.Z#MFV(XzFaƸZ20ae;ꕓ Yf,〉F0|L9#Rq"bA$AYp;J)UOjEyR $lY AJEMRRYȤӼPE0҇[NW+!`r90Ӵz5ns@@$pC`:Tܵŏ3y9n)_Ku$s[o׈LkVz-nrgNw)4I{Dy?F;=ľ; %*C\Rj% N %GR&RLmfg13+33l#ZIUBJtR 2tdO?4h1 J HDU.[ LtxZGy" zn"kjz_..*! nX`PpEnu-*;ZA=D$jF00\0qQɃ9Oq;mVK@jaTCpa6r"S֐)1-'}p\XKeexm}5w=JJ0p?4#^ǵ # oQbfm'OqG EO6-'J$k%0.53$,{:kngp& a''!´}3We7hBۦ_Prn8]Prq0G &::5CRL ri$zcO4ąl}3qg513&a| će p&NxW*#gf'%r:t*Ėu#oؗ1Q0"l6S3#v8!EۦeJwf1?)de:#&aA!'@00s5r:pGx;^q@؉|C\g;;x[89ӪS7dU](q呝vط/قmXHX"|9Ri+(fDge.UʠmSqq[EfcX~ @Dg"2007q'xg(vawzQV_CXlCJu(:XF}V{ dZtֵYgfme}+149vU !U3 ;4"5ɎnvfaKytƔq `3aDupgb|#(u5Xv7U荈#-RSv "++0Q% O@YșOx!:U#(Quv\:6ׇᑱ'Y>2: 9hpSqAvRh{XJD[;euc%h9Fڂi8az)' q؊"03|eZ5[z_Ɓi:~ *Qj#f'8f 8aDʟIj0y9؉3u_3l06yȡ#s](Ňx*8:*3G6٦{VJ1Z|1uZw8"p&[Ac+80Zʤ zzv,933.(K8iiŊa$L: Ỷ5jK5 ˪_k,fyjVJXzj"E cujZeJjkIis:UYfK`ɱ*zOuYI* k(' J| :j[[ٙ _[A1 樷.;J1G9 jMV9 a+jakj}HYAZHj ZP 5iiIX8˵ š<3Ī[k* wL'^;9Qp ӷ؋9 ꎉ;;}w|,kpJĸ[RL:s8ڽKzKisky:_Dꪢ+ؤ%SSI45ٻ1 5Yڤ 鸭 mVʺ#܊%l  N(vh…*$LVf{h˱Xk=|)zdx:z3JZ6IqF쯒+ \'\+a[eǂe{ Jczɟ! 9N`_ٚXe:Bژ>8+8BƚÂ:غHK K9ΌY'/{jL[Q\[:eĘi lV\K|:2aM˿ěs,)Ħۯ隧*rq`{AL{Z?*sʲ[C΋jȨK# '"Мlzuq/[Dl0{L\w;*=_w[hp z ܻ{z̊ĿճR̸ZfL˸KL;ٶ Zˤ۰֬؋w+QTFL#DE ̧/ 7ӛއfjl͡F{YiRWXXV$\]ؗJݸK:MB;ٰvU7Lt,k1s7ɖ Y+ֵLa?=Ү3 ؍a{޸3Eۯ8@ vƉ{AV݂}zہ ق$mhH?l@ju3{dʶV0&keI(|Ͳloͽ“ Uv.~gJqMZ]`*>Y҃8CN  {XeJʬI^jޙ[&ֻkE[++{=૮ەju޽{wkK**>\T,9.֛͌|њKU(<̲̪{޲d0˲N*]Ȱ; Ѱ©رte+W++#K구_V=R˻ƽ\${zڱIMلULv\o(.[ mێa:MUY=όՅ(kϱ<ݑzK./ڄJy[c )|}km/g"FOتٯˌʙ<ӫ.N # o@;#¼ulP X P Q0X(@q(!hip)9(iY)`X*iʸjZXk i@Z +XY`j8ٸ ) ]Iahj i+n{|jY}8+,QJDBS`UEʐ AƉ"f+(iB)Ci)b US&zAЙvⅨя!XAJdd*ITI`lvƢzNz^FwS׏și/'?Jxtb"tS=HJ(u2VI촶Я3zTM;djJx KxUoViR{:Wwa; &PTZX|R[0%r$rng8&kuGjsŕ}6,Pw =6Ŀ|fhJ{#A*@`y̭nS_y*eMtS񘤉}AxZgB q"MD4phl4R₣lK` .!(0 cYG?,\gBD/K`?@ĨsmW L32x)2=!fGb)>褊 1&d-V_En86m͞5>AF{/1sCb}XA05(eː)YDG#J _H[E6ϥA<WL:ݸg _T-$tۻں6-aĪ=S5 is!'%DoTB֠u)|gS"L) ~K cb'lN:ӂ4$K1:[Vk@9jѿP*&@+ȌrdL%:m݀6=}n{#5>Q&AYY"E13Ak.ǽPyٓ'G_>׃ ,Fܡ E='vtZJP"JI*8E{/(3yklPg#<EKW${A̕M $g6%ʓk[!hȩMy̻`sd=6B+=zڡDL;꨸!txDP֗/kwհlo[HH|amj q66QrjnZ5*ZӮj[!&0pVMGkzhc5jC Cv1n+P RltKe YՅAL,Vu/u.1鍪XVmVjMA|DV1I%6Ix,5W]hL66gʁ:tn}m,T"< $z ,Z 싪6*G}MMbc,| GɆ2m*lEI#KyUJ` %px{Z>-|^5ovٕ̥6RFQ J^/=PoޜM6/8%1*tPnU|۵)0u$?W+>7WlY֛,ěTrZHoz$.shZe _5qDvS6*bƹ?Nk Vvل2yj+/ˬZl7䳢PA%zaN9.[Z :aUjWITxy9*FFV[7m2VzP*|ٱ2ǪZXʶ咵Ur-[Dc8pjLgGx5]lvݤe}jS ؟$̒jɊڰzM=.Y+bA{^wEk\CYxy eV3C܄s|ѫH/ϲzcD<#/{T$9 ͺo/|OceZeIOV JAlkԎ{Ҥ{@%.q}Pީ)}5"ϯwEϰ^×M[ tCHq_6&8 ?CN< Q)xZYX/ee:zwYʨ7-h ;כ L-vz];b;/J\f2(7|KC 5B6xxU}mzSv޳NUie'C.lv@Glr|cfBo[pdhK%Pe&GM7_LJ7eU_Wi |h>5a|ւ&U#vdiLU=DM[uao DŽYH*H5UP8tO0MSCid3t1gCyE/w6{[u6iK\vqJ$MTXY/@ķm3W0iRI$^ gfsW?XsPBCe^HUvCis6t劜1EPi5`xȨFbg>(C75=il#13=UcKȀWr>ՔJDH~.NdK7bJcbpE>#0DtW2hf>r>><gJG`UJjCU5Sgu7\XfWteW=ScW|, XCIEiGIKɔMO{SIUiWYC)[_ a)cGgikiUȖo q)p si wy+;Site/images/images_text/image039.gif0100755000000000000000000001022107311161072016241 0ustar rootrootGIF89a!,ڋ޼H扦ʶ L ĢL*fAi kv MBCcbo^rYr|(488HR'"Iix)i1:i989ijev(kp[*+ ۫||L M7͆}8Ͱ}W]O|E 랿z+^JAyj74c}RC0&ECSL","$F-aG)2{jcΜB?8wJUԝHc،gf`:jeQR:Wi -XEm [C !:V*th%bbfҐTZ ݳ2dv>yq6&kCT+$JjG=F-/ƧN2n2l[oWZzLW1]cclפ|Mӓ>noٕW4[]yՎq`lZy[]^iVaP'=-#W;5b5}HnuSV:"l;73OX*J:wBNNÌTG)*Jye^~)`If3Xifjfn grIgvމgzg~ hJhh.h> iNJi^ini~ jJjjj kJk/4Z.iLЖ:)UPpr. Dщyqb%ǎq{a H+0;CB.gyH[*oiͅaL]}MP;CY,EEBz<\I&~ r0(םúuJ22 Tg1 ݼW=KL߂PWЬP.JakGE?so>lbKa[@ܢ˳ЦT~kGࣶ}n/x?y=x76A-ixz}ywʖ^{ '4bz |`|\|ҨRx:ỖOm#u]s[Y袑Ob-"멎r::ե>O[9k_[N>+aLv@QkdJH$ tƋi/@`<: ^vCfW Vt(pk 5eir9,f}Ta %厅[?el eP8SBvyK~v^$B`Z9FeRM!:$MMQdy{"{`MY m;!É)\6nD'f7ӝbivғSGO[4Z#AЄ*t mC*!aƊƸjT}7DN`Z,O7Jd%I/z3B;AR&Y4bi@h n$5 0t(D:zL<iMX3ַ`1\T-,A":ׯGN*=80AF`|*0P[ZgVM.FLkBM>FL*lP ̕.6,r.9՚T4_PmOH{ZdV[;Zz)')kA`WBlt-œFg*pRBjw+.kKh w-ڛ'mŲ:f$-ˉZk菐;dž@!x,n_ x_VFJc/9X!~c3ǽ[ސEȿ<&HH-Q+E,v4gn1k$f'B$5ͨS'q&g:ѹy%~;>Ć&Ž?E7mKW:ӂ2(?PzԤtWjB{FS%'\$ǷӁ߷x6t&b'L\]]7EolcOvġ|*S"hHZlt]rsP,;3ڗflV壅;3x7Nw/5DZnGs7RnuGN,U ϕ\vɄgcgNLW]slh7U,HRN[eAx-#dǗO|F#iL.5nzRmnF)H.&TX9gRwt(r騎KP%NRM25&%>Fwar`Aq}.To e- O%t#_(>%bUeu&B0aSx^a%{U]2 FmyTrWh\$UA]]EbWmto[T~H~I\]V]%Gh[}gu5YⷉIvah)cYaZo)^osyTLaYD_>Sh})LIChc|iNX)m醫֥e4E}zy1oc'ISEYgmyqqngL]T9=_ᖈ" ֝&\#FfahGǨ RiuɓuEe5"$f: 9ฎi0ji) Y;;VruT=x ʘO@ʉ*VxUs!EHl>rht%^BM1( sagnL>AG5?pa:o'8*&1zb:`5x;dJx_fSQF!l]s*JFzZ2yqtqw r/B:r5h1JD *iҢJ7#%gMy\mG0{a0PsGWZSy_By}7yh).*טLy[Hpi^m#Yف`6 +K (x tpXG+@ѭ,&t3gcɰm%sOa8DR^upz]_PdžAv%p=QIDw 엣9jV?KɦSYvq,K[88aԅz?U1+񈳭LH^[&˴ߖgXLOb VCۯ[BJbTKXڮÇ0{v_jRag ƩN5+{$)+-/ 1,3LÌR;Site/images/images_text/image040.gif0100755000000000000000000002040207311161314016232 0ustar rootrootGIF89al!,lڋ޼H扦ʶ L ĢL*̦ JԪjܮ Nz}X"WhhDء("Hip٘yZ1JQ:ג:Ȫp)I[Z) cK; *恚<~ď'p/SrQXF[a j03=r1 xy] $_!T:4J-dqA'8܋(HTg WvYSw;9rˑRXF"ƇhIg`nM<)dfq9>,5^{3$[\iJnZi#Aduu&YofsS(8h.dlVjniGHijj kJkފkk lKll.l> mNKm^mnm~ nKn枋nn oKoދo2PjC`ZcRӯs#3L(P9M}a(ұJ"Q2(۷d4#|'i@- ap) HT&A'HeMwPIf]ZҦga&C_&d7zay5sɭ2{~>2^Uעh{} ٶVeA2 ky3&yoۖ6O8^\XDY/haFscj(i`ݣyT}6q9 ^<"}^>O|S%_g9): tQ6$G됓":!p̂ @C_YZ֐sAI]=$z"|M#qL0\_@4%T`I"H1y*[tDQS YTerђV_Mb1EhKds0j1&" $шR/J-L!gQaFzR9AJ1qc瞭\`g72Y9Kns \ 8r_NՔĠX]eC܉}V'%HJnp>M~7YODMk4*\wgǔPP-W٥qPC6aꆱ|{JzPܺ0FsJZ7эt'&sbSPYEQ17=Y\4Ek(]Q RߵU[nu2qWh!PcUo(۝[M5E$_'N_\`"tb-) QpEjOHYZ 3;+PN2|鈸ǣqy|> a2KWe0Rgtˡݲ'i&nsYe1 vi{+bllnx9U4|aOW!6!HKo{1?ڎftɣ)u`]C%o?16@IM`Tp*%N5yYJےzb$g]2 5~%+k6Nu62x`A1GȔ,5bJW,*Pw $6Z,Xu҃;|[h}y K~S|?|U TXzg/j M7p$B\#10.>.l%ؘ>v9!~F¸]RP}Ae=vҡnk]nB٩uG NLhܠv3]P>^1,u7`|n̩Ҏ;wr%:\]:UN[aջ5}֛OIy6$ -JF2y6~k}3$Hu^ߩn٫xou|ksGl o^ΐ?nzB^qvw\w9cxS4Dl:7L]~ws5&GWewvb$)L7g&DG>hh%7/>fHgsF67EGe'jt=Ei|UaU %E·{bxwlPp.44J>wVxyyE>r}D\܆:W%tlIhq5~xMx#.AeBtk '(1p|јB+(X U֨ȍ(Äpϸ{H"snxc~g3HJd^>3|SspdhHHE0yt+C|d.}j{& JڗtԀHBpw]f臑W|E׎>H8CIncTגTH'eҶAhom;eA@'xc>(@&Kԑ.Uu W).&Qe] 7g[ I&8nwFWT~jo9qِ!uuX_hn}FX먘+Ly)ə(pH9"))/6ɉ3M"iK8RmIzCR:Yegt؄t4 ic!9uMVLsI97Xe]v'ᇗtUUpO)VD 9V9dkAYd[H P ZtMVYjyh)6R~yeg}vhZh}#ncƠ)!EXɚmE7O̹77 7i㹖;a顤WuՖSjg$?Q3 ZQ(!D*w BiBE|4ZƢU2D\ZVtx*k syH[cor bp^"LrfyWr 0p/: *JjƂO7Nљs*xKI1c ZnPju1ǫ?3!ir TsZoe>Ę_Wt)ZM):IMLb[t$>aUiƖtel]*&W:6oǀ:EE6Dذk' gs"f[RJE`RzN )YXɳ@{WF*eŚSS@lSc[[DB;#*{B)EVh'W%T:Z]WewהFyꜤ(7x[ZSe9'Ů2= T{ZA`qq)v UkNjɫ9VDO B*TzJـ1k"S( G3I渐>7 﫽kpyQ75nsƊKyYN|S*Jm*椏y ̭L<:_s r~1x ظ"LOE! )\[ԚS5>ɧѝ@VBYlj4*fVFUW/ 8e&6OcŌVz9wy^w|p8gʀC9[Yȸ@Ii8BHBUSӷYf%9v!f8ɖYGȉWəɝܧA}qZ3!3wsK6׃uzoj`)<Ȃ]̒xcse`ts맕n:^okSB!7o<˺5w6q%P)`w+y 2ŲfH\sL_q|՟XQlɁ\ ћuHfׇE\5z%wly]{<оZfAhܹv1;jѱg&_lp7LF܆$̠CMgƜ^9WΡVKneӄEHՈ?3֬<[pRkUC=}jO9ߕ\^'-^x!?.B?H|cۀX9!)dVBHĨG/cςZMb tv޾ݽzD;̐" ,PvB'/]ߑR*]ʥ/Oo/OoǏɯ/O_ڞۢO*3ȝ#4)EPΰ 0?*b Ou֫K- LE!']g ő,MՕm噮F8ktO~pٍNUnݪ&,+E{utp2 M HBQ/Rr1h, sQ 46Vv6sm )tP9YyeI7XetuxWU9\|zۇzڭؽ#ڸ<_%'`BTYK_D)VUYdH64*QH+YtƗ3iִ9K&7yhPC5ziRK6uF?;g'UvIf YzA#gCQ-Kd)z7$nD` K`6N;b=ul|#Q%4ryƏI!yr)KMitrqYo~zsڰ;9-n6;6Ni=Ë~#WW\`a/xo|ӻ\N>(Phq0,9#o6[-Cx Qn^QKrG q/9HkBaQT\[a/UcC)̖ayX_KD&b]A}6,1w14Mi9ʔziK)ӗ[߫$jn48Lk3WF[(-HO|vݥ8"pTc[wncO2IQWP! 6\6[U}{w+%lIOWSrY՞zF4_9WR{Va-^ ӺTM U~-|SW"a)cyuBT7% uQ OC{X΄ЄjVVHHmj<F;j âMnq"w#Ѯ]!ϲ%4%!7APYȢE/~aXF3iTF7qݶ`PcKC ̶@ mHdࢡqZ1L(.sAE%kأ`HW’\JLiK[NI=&%zF 摑WKC4%Sv4d-[Vエ sLa2WTf:S{$7' Us<ʜUls(~EV&*~gPJRj꟥+'ѹRS|yբѭl!@(B(yË`;tVM eC);,t&eaAzo1bϏ,%J1KbpJMSϦ¦6ImQw8.idˢPUΩ{Ce=ŃP|$ҳ:!1&VW@lz?L"JjDGК+\ &Z"D#^;zC(p\q?AznJ(Wl)AsE-a>vu$+ J %~lgnZUz^Wz:<_˴b^' !r* :J4};$` s-^ͱsNܫhg[ϧ@a;ˀg89.M91by~w<](\a 9"BX$lNGɑ:V^AVnDbCUY2\J)X_G=iZRG2=9Lb.!=u~6Ȼ(ŇEisEU>4h51-:[GekӳC5C[YչּIl?B܊~-lk3`~m6r[v3nw7$=K7&=3To*qΰT;Z[ ײm;b\y^mMyΖ-)CpoG |nz C.45GQk^|*DAq@͉YNTq*[nEu}u; | !Y*޳m?6cSx/EtW7_*4yܠm2Nk~曗^'B/Nƕ(3~lkϣ+8k"A^DLVs!3ӄQ[>vW%ig֕O [!ex =^䥊F]fw=UiV28r+HKu@+h̄.0?cOΚ趖-2&C-슆^&ZZ4ڈ j0:0ˠ5*,G"궭Kޞpl P  P ǐ PאP ;Site/images/images_text/image041.gif0100755000000000000000000000704307311161714016245 0ustar rootrootGIF89a!,ڋ޼H扦ʶ L ĢL*̦ JԪjܮ N8B8RHq(h)XiiA)BQ(ZɐbJz :5! 2j;hQK|9 u̸Iy[, l+]|`=ÝP^~ͮW pH/k,PoZ_(o4u/fG7w11"Čֵ;y!ŃJZR*#srdD ң¡+s~ ŽHhP驧FMm32VvW%EfĕKWCm{~lQuQqZ][ݛ5Y:NYPPf[YS9<\'[tC+莠ѺBkcfj]zujY9e|un{&7iܷY8t쥮"=|(yՒwov?6MQìG_Z],z DU~xZ')GU|wU)SQ5edgr^g`G՗_5"G9DHymw׎=L<TBLBG}S: ei2~ &:)ffyC2`цfny6 gvɤ0g~ hJhh.h> ir4HbX[BChjpY*)bUjg2S aBٯ[ ꅌL!մ _PW* " J{NKc*aR#&k̾ /Xn_,q\b묽_oSEeaW%"{pƓ/~̮H:?mGx q;faf, Ȭ5ϪȂtlPVd%Hʋj^d:Z ,f;gA6vfvߍwzw~xjsIlH o8ȉ2CR.''@L+ j\;[18-͂#_bb<J09(9$4 ,AuÅ-IĊ$->ѪX2i8uQWb;DQh*k,yЋ\`&T)y^=^у ۨ= q`H^$/Ljr'? Pr,)OTC"`%XBWNi# J8҃s^6:Aj~efu1^ ."k4uJS=,X.5,K]01dBmfq#5wSF28Q9 iSlc"dMIQC<{ܓ!o zc?ȝdijFc46JL~A0Ϩ%~]ɨ"ύ&kF"1o4H`jjs@<5}`FQ$s\mŸN*!h*ڐ2h{>pm* >N2\V`v5:*)S~JzSKV{*ɾyW21s,VǥoU1CkgM%#0(3##xӲr/- dFGSG-|Z%xZd.Uc6| :""棭dQjTfQ!Wm$-*}woĆ.-'DA{k~[`RCsV\}JgT:Q04{gH0E~8vd|uMtG' -n(xA WϹlJ1ZЖ;be'(㩰)HfwyG%Yu!eI* \jέbyL>s/,^Q55*.iGS}VR1O̷DƮ]R#"s3?GYd2bY f -lAfɖvlk{p EMaWW-+_y:qp1mGESRUۢỵuD/0⋻)_G^Wm\| g>vj8EXNk\6+5^KKǨ՝3T5P޺~u>Tc;iLu&_>w?Ћ~/IYsM{731b[kt (w5h"ѯ3{{zÝ> ȜR#q^w1qouLxo9w _QdۑH ݾIF{fF()]LRRidQDBSTpPC*%V#6ANf'SWsBt~gVZE8ESgv{%u$v~+2q~|vvpt:W%|k @C-TSd|"vbLXI"r]wjt0D++^Zyf0\6=-K~P\|džuX>!a LJ)Qq舏(HhB>6{`bHr%_׈R{~f}}4rche=tqi(}Onݴ}OHÇ{X4DxGl!vEX?Ljhw=7m냍. |Xr,oA%FCi3S`E`Vg.8'"Z3&e2E}\VeP-}}sXǍXaI X@vHu|4XՅDm;E ntiH]uˤx`WM9HzPYtK@uaٚ&L)[c!暷ɛ雿 ):SkOĚ=cO{̙8~͸>fq|Zc4Ky ZS]Pգ D ?bBqe:mYZ6*:#\t;Qb=q1껒E92Z~;k%/_g/k hؤm[ѱ֙=փ-U"xPL\ɭwCFmuRD^۾|52 ĸۿ?`H`6Q;Site/images/images_text/image0002.gif0100755000000000000000000004471007311163174016326 0ustar rootrootGIF89a H QV)b$Z;!Eca!{!{#}#}h 2M-=Tv73w0p.jIE> B;~8v[R 4lY :wtqYS -\wulb[ZR=|ssqiON *Uxvomkg^[MKGymkkkigZJID &M{iiggea^]XFB?}}eec_ccaaS!}!!!!!}h^k###n k"n'tN.z3J7;h2X@F*F$Gu8[6d0V,Ef>Socr.1d 7rX 1dwYWVUQuQYU!!!##lLLf=JZTbss!!o###%,om!!!!##%u!!###%$!#&')))++!)))+++w)))')&++))+)))++-;*..1117DUi! MSOFFICE9.0 msOPMSOFFICE9.0B<!,H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIfL܉(?~6 >`| !Z4ՁJM!5l $8DۙJ I&Zmab5pP[&ƋI-|Ya%m2jc)4Ȟ]Ĉ`\ἤä,ȂJ?\\e`^Ɣ?&hr a/f;A=(P{8K6ݷ7{ m4&ĀqC+ӓ׈-Hh/KG tЁX`SOB |bv-[!&n1;̷6t|74+/6Os00- 1?-6p8º8u$|2=&u}\_YBa \&4A ډkDl+AN!8[p68P@"4IH /]1 6>i<` a>\w+3>A (2!109AJd%+yIҰ2 AUx !O'LR.(fbI] &k .#HD 0 X..h$L3 ּB49nVB/.~hD !y-EYBX"`6IZ@JKn҅6b"@C h X@9MeS H3 U@aU(a!ИLJ/͌`y ,!, ܀V+h@ T#H -Iuu쀫\ւBXl#;N\Cl0 +HXs$C,h[Vm $FoR@Ln4rUG v *P(DDaKH 8>V 0<^ 70/-˞E8p@'`elP:yC=e0W{y€rJ,a  La81vhJhQD0*Q%&>P"@Ixh 3jE@B tl Vuk4At ;[n6<^2h@7yrT2h/tp@gXA9;`d+q җ ' !~,BD NDTJ#48C ̜o RAj7 Aϓ^(z(2(cgocFK(Zr{T8<" /1SxH#,K_8P?#(!EY`V.gw)R (/,M g_0 cD&7+ r#7|~*{"(#Vjq+Lx(rT/B'V)Z @ ",.b,,b|*;!3@>` Z7pM{H0'Cpp< "1S4E1:= h0% - 7 i R q%C'R-b(WJH_Kk tra0T`539Ph]`']%[" t~r@z%"&\@&-` M rKw X. @ 93$4bh ?DH@UZ Q wrBKY%ǷBxo)P~Rr.d9 0$ Xp&, :\TҒ89*Q=P?pA(0`Tk 2`X4A7BS=ϒ| EJ`5LYРR'b(h8!=a?P\?NSe $Z@ptXP5>*&1u;xhv! KPY!07MIYNJ `7dz 3E`*'03x|HهB*,t1,g(yqF/T"0 4UaQ $@ps#vn*$ a!jxqEVM0@ Lpi< 7~sC=^iYii퉎!0r,)49c o:𧹡MTKx[0IP$@ (pPnY +` B!@P !/RZi`B3Ǔ7^z4ykW|$/ Ҕ}2jR//НRapoN暮[@ Z|p`Q VGFHYgj!T`W`PL`.6` rTzH˪00p @~(; 12//:1EP1 a_ƈ@ a+pg HYq4IL0 U+ °H?OD,T]=8=I| 10w%q .سٳEXV0Zല7P`KVSëYYHQRd` KoUPd  |BgÝD6Āڳ/g`v4/`zN;/1Ÿ@|JS@e v0}`O*UuEc\xN60R3GZ; p>PkO-tA<%[,RpMP"@R`6{6" :1ۂ%`^p@  iNl2,@ pNNp,X!͐pҜ@ Q `>`9p ګ Ӱ>V4CĚ4ڨ//;-`O >)+#| H"Ĵpی@A0#mp(M $-҉ `\llN Q ?@* 8]F'tw5_<ܙ*F&`at! 9[.9ӿ _ d=p&n,&]@QSOqmXy !I7T !W9pO]n5tdz%չ8 (":`&B(C 3/XIß+/p KQs:X{gZXݰ tpMj," V@ΞKVTf|B E4&.zBWM0'mL"{a:~8*֞ ({ iR7}7`eg}KD@X44EVdGnw}ܮ*ҥ zP/0Ν< V|8] `:_*O .P00 2yt"!7>[/CA@|$pRtU^Cݥ˙F\Յ­hCX }L` `b=0yL)tΠI4 {.+N{ gder)q^S䡿QLj M $HOMRIp4+/x42(zoF?Z>'$zTb"8| Ƈ #=."Y茕ggrwbCEu88TSR0d@V/PiĵW]O ե\zOդM$LA.rRI6 Ã+c8S*<*$^`3 v쉯`q}Xrp.vSYfp)Ж!27q9P/Yq\(wYٗ IOC8T&{ %VHY`E QD8jŤ+d@BG R i 4i8m):`Y2F!FhɲƉI?| 9R'\8@'ZV:. B %JQ)=(* (BcE  6KXeѤF<-Ze˔)+Vldbx…+,Xd:I@2tb-&[v `dqQG0ThaH8w1ά8 rKJX"io-~ʖ`p)#D8a *Anoȥ.-&ld`RAЉzOjsô7:Rə %#*a ,! ZA#Q¸ m( o@fWQ[@+<}^6x(K KW"u`d_jY# c+b9ų'((خ+ЭCh(E"ʈp37h@ ?驇Q@'= ܁j]˸s6w yc7XLac$${h'F A:7 |"A -0BH|KB!F;޲J7&x"'8e;[w`>؀F)JKBPS RK#(@Pj*3"|J:#F Oá7HF׌ 0Bل(Ђ$(WBu%W9#5j#ŐC }-Um+??7@X@}ˆ-h"Д#@MZI=('X0!-#"r;pYh:7&ig>;L%0+D'`<P<81P ψJ&ج84@ ]ɇ@x8@\ /tGp= BHr6X`S=Ĺd@H>eQ1CѽB. 6N@ ~@ 0'X+ 8?AlUN=. \X roj \q1)QI*)Y<؃ `mO"7@dQaNx@ RNz(.@^Pip\C_ (ls*`E1*_Ω '}Ln`=b.<ƕda! .ȅapn^8Phc) Ё3`ohZg_FHU)&0,B13I`9SMY=^H<ȃS?OхJ@QȀ8ap1ce\8'(@a΀Hrt2!J)EEL@EU`fp&p6 X|+wygU^I@ e!ڇ ZX{0iP`4{phQ>؄\(mtH@h`=<[;fœDFlٌ:Q|S9;gS6eꥃ͓gYƀIЁNiPm櫖} PMeІoPk8+_Jw\)C۰Ŭ0zImӹM٭:Pn.<.0V%E `'elPTC]Ц;8]@p@=MKm@\鱽f:YXXœU5嶽D9:~gmX`MVDeXcrhh8ì,(%M.2?'q*Fjs<k,0ObH)h pNluR X(m0Tr\!0Uoz>?Nmrhxݪ!pm 0AAr"=\i(W$0s o Az_ȝl8ݴgw>b8qn_X'c/u=Cx,2t!I=36H1p1$)xF5i/=sm Z|cC7gMPV]>慯u(ChPñbtH +Xux ! ] ?])3}g~wAW؅.` H7l( ^f]>t o@D(4bTwxo/na7KeсQ (!"x r-DԂ)gz.1vfM(Br&(5xr5<_{b@h.(Uo0?isyPP`[,*ïw8Wx!qɏ<>*,rZ@ MeN(0x  `p4b><+Z7sуn:rݶ-K=jH$ʔ*Wl2e@zHWiȡW$hE,y"$:JH1g2x# %vI,ɲC#'/V[īmP=aĒ#F" ` \;y/f/XhaaزgL6q:wb@4I(F4RGv !O 9Z4,8!n @CGd„ %T . 500laY,<:3E딣6 %,$&"'%b F*6ߘSN; B=RIAdD0 4C6PB аB u@B;a0IQK0H^%Tr'yY'uV2UPR6!ua&c9<ﴣN9ߘV 0 4Lĸjl +c.p(GA8S9D[0Q%?dV20j`&=|a7|{.6Q%.a!.X"q=ȠF,@D:<ﰣ9XL01>p>jRLT*7y$]B4TIE%\l;l%מm{-PńY(4M/-DM$,@KX" ;4> ;|1IJ%|B#l|wm2UC94;3O"QLQIq :밹Fd^qͅ(:OdذI\`DĒY,;I40DZ:|4l P!}w"PߴxD<Gְ\s[sP7Fϥ8Cc F "( h,Ȗt81_ (N e'imDĘ^'Ѐ@-fD ɭxBw#P%9'f V?Q%OIZQq(Fԑ% C$ekX6# (H'IJC@t U@\*-/ HQGJ*1TH#$T "{&8KAU:an0| Bd^(CpGᎅ5,F'? 'ȠX@q0t4t t,E\$,BρTnz@?PA_X@4(EPgJԩu"E8$( lC0Q>K*SqAkPTp2A lLFZ0䀣E0m설@Q:)GX.}Sh |D N6l'm=I:ha^Mdeh'0IЖIu$*658@"TB-]9#`c1ߡu!?RsE錀* *,81Z& =I?q L N؅SFƳ C0h'uB{_R HsM6aXltj)" P)w 5xI(HNBuN(NnCESLb}X]:H8aďꕖ );w\X_ĦXT %`l%5ƈDx1B0ބ %1%xjsCck[= :PA8JR"U:ڡvc`XbA)(` y@ѹ ! E8a*KD"J %`:d_:b ޴Z " <80nwՑ \qXCw@)ܽ8 ]¿GL:(iv:7t +vJ1j2BǜWzxi:Nq%IMI8 %R@NAN!tb)xOGCX]'͜%x H> A%rd1^9op- 2(E]15T Y"L'B1]lFFU}R'D̵%X6=I(u½- !C r#!, a\ @ƅ=@`*La\E]< 8BzaTT`<jR9&]x5@ Q6h=Id4I A@ZP@'?!VZIݡ@ p==Yu`)Q5h $. B>Ph4 V<32nM\gh)uF2\,$,pT!Wd&(G,#?7l3&I @6C:B؀$`HA B` 4"@@VEC_8#'@ ͑b)@Ԁ ,@̛04W-M^iL2@NSRB`<_wLK @HA( dBY!T&k$.a&ͥA]Nu'8 (D-Bl>B%&t˜^-%t4(C0</2$h*pxp (XB!pa 6\pBn%," `)0f%@$f DdwzT/ dj7Hxf6DC0*\u/z!t$(ntg!BT44mco%bZ/B.P!0@ gY#m)"hB. ]4إ2/M= T TB v@.⺄f x*D %¶&-'@~$؀(ꦄ=d @d @g+>7iB' HB@P.4H4LI:/o~$(G|x(L",{D:,"@ǚ-YrZR m lcm,( Dck4p@X!Z5,0r^T0 !4#towů@,%|LRuX5mhgKa`v S,KAᙡUs-y0lv^ntYiv$(GX`jkF?(`@ MOB bB @Ҁ0 lD&my9,cQvzxN(vxN)@l 0l/1RhER&iGiX B6~H?dH@XϠ @x pE^8E0&2hNüFϥM!6|Wg=n&g=f q`,0&QMuÈ>7B!T`t\9@ DAS51sF-Fs~r98u,(&Qj@ `Ahl@\@!H$?g:ެ9B"B6o5AN䴀M({=&E×dVtEx Ay3l@ A B!D{:aC9eC"HH{BZA]^u4wxN=}H@lB C:سO:SC)L`{e, 9#>R+ I0#=W$pX{6>؟ʗ}" CA  0j,9]F˽oQzZ,|;ha=,== 4½wWPLA:@1o9')}+s;Y7"?hE#TL 3Um]dކ8Q$@0I%v(B!*`TbR cGA9dI'Q~44Q[,yabCҜXm޺J[7oڤE[V/\b)3p}g~22e .-Py+;+,SW|NJ`!0 LPBA%,dzf=le > [92&H@iB$< 1FCdOJ22" *ja6`~j˵ AL ;%H*#?oI;2B%9& lMKCpg)\xFi$Hp5L'Rӈ`hE@݇i]e ya^!gwݢQ+!A a 2'L4.ącE8s?@XJs$FήB . K!6Tbe_T^a ٪]śBb;%G[A&ۦ,- 87? (46%i*;ӣ ٰ9;9+T&Ca|0ϝ0xj M.OGa.Y`b+b 5] ɚx0{h:uue3|]04krtߤA0@ n[sĘD)x~,83C»&kM'b ^^[2F Đm "7 Knqv?0=(\Qh,8@/UH\F 4(%eTZ- r#q+1} *`1yFdKbX,a s?!`E`yT!.Gn}3 G Ŭ0IA*`'Mr\2`rZ9G K /z`8)!"L U2؏5R4t'(S&!4TFYR88.jS?(zi*c;{qE% Yb1h0L£H[Ar A-0 Z.u @#@%ArtV"궕8T Rpi )eX`mpPN D at~@"1]&70@'x%l,tM=<`ڃ8<ЁlAp{{X?q@5!& ZG>! ?^q8Mve)O;Site/images/images_text/image0003.gif0100755000000000000000000000163207311163174016323 0ustar rootrootGIF89aw1!Software: Microsoft Office!, ڋ6o=' z;~ 0L 83ZڮXNhx0xȷ5 IQUhy9)YU*)t:7K[k { *,+X1Kxz;2Q|99MmmMClN:p.qQ?o/|/> $/?dh`!7(NGyatq\HC#EbLf#Xq$!8*Q9G4S9Iũ^іXyj -d1Ua)Ud]̟ZggMحYTDvcƪF婱7%s0@t }.zmkaLCtN$9\50iB4΅ ?:i1m |o`Oq¾@_ҁQn`ѠBDŽ6aa$kdȠvƇI!"Ie،(Ŋ,v"$4Z5݂v6DX֏:v@rdDV5Ñ5䒈Sg,9H\E—2Y$cihh`Yzo¹skf*{ζ(owC"zנs衴жB~DZ)!fjBiݨO`QjE(ǁ2xI}NlO <@XƓy 1MjeFH')#$gZb@'zTT7(s*I +pÊp.&%1h@d0(P=+1%*N\n6a ٘ukgʑ$Ze^aTdnKe%W]da_Q{+lⰎ= 3'S2'}ٳecl$NzhҬ[Ǧ9vn͵[~՛DݖvYqVMwupyZ?t.i܏w}'ߜ>5c{\NAE@`eS>UiU 4XZh |6(~{F\lV~4a8#?nCVQ$G"KѤ;6%SQOeWf_՜cP&qkvjof~s2Vgʖ'pqu i(b(&XFף )m;Site/images/images_text/image0006.gif0100755000000000000000000004731207311163174016333 0ustar rootrootGIF89aRw1!Software: Microsoft Office!, G33f333f33ff3f3f3f3DDDUUUff3f33f3ff3ff3fffwwwfff3fffffff̙f̙33333ff3fff3f̙f̙̙3333ff3fff̙3̙f̙̙̙f̙ff̙Ȓԭڜ ,jÇ#JHŋ3jȱǏ !&O$ɓ\Yo!˗ ͛8sɳϟ@ JѣH*]ʴӧPJJիl>|#,!L09䇒=X2w.[$L Y·풳G~|D^tXHA=+- ?0GngA] pݿrU\`a%;lƝw0ӸmO,jg2`#۵YPWi5<[=p.xl`?}^ 4f_pe_mef[`uYq1(|e%՟cu^6VXbn:YfHWH{BC>ۄ' w_i׃v,wLRd)vS.id =pԉ'5X\ s|e|@kbFeq&X{55\) \v8Zsha Ƙsh(fD\>2ƚe=&Y8rE&+yוKU[V$aI$wԱe$9k>יBEYZgIgiz-YZiV5VnUn)j.*x"W-vCɅda9;01g{ɂ?h+^)ە_ IwN(^fDE_KDۜFn_6C=m5xV]B= ~} (׽J]y=$qY! bam߱Y֩7&W3]\ڝ k|ݯ$)͏lX=]4?iuzJnkU}D&露Zqu&Ln  ,Xp$ c0X'cz2s%sgA: V]sxu+矬]ieT\d7O9>#=.m Lb-d-uk &5N-h`ֺ+G zpq\˸4ԯr98( \@zѓ$p ^֦=@{:<ؐt͊R^OpЋ bLqcr@65:S/IU,&G{I|W!(/} t:haSvp_5P^GcKv4G}(0,P=ep0Ra0uE[`Ȕ@0F&hDTC-F 1yK8$Ü%sd ^rDuOG@2beԖi-iG蠺L&lPuKB(!m.KT+)d\i]tǚamMcT)= zBa2SNLqT^r%2USڴ8ew kԕQiWCo $hI2i3;UZW%ʅ-,MQC_k+d >y(A \! fE[jK,o[2%RjShN`z0vSj8fOw+m) ԕַ)wTDKNȰE=ϸ*%ȞB4Ҡ`WeceaQH+ *)>Kw,($'W p]MҸfJSzܾ=n2eã:-R+\uþ,lSz1mꜭ)W NH0ifj^zAs)|dKA:`.H~f&PV\a?8N%v &P˒-v6Mh/2Vy901i2\#V1.Gۋi/pz3=6T;zQ&b~X+vYR⌚qDnja8`ƠeDuXMYyvEs@9<^EN5A Nݗu^ l/ОuKZ?201AlzxEu;/=CS[ൺ-i`Δsj$P 4E;jQ4ZU1sJǥ.z#p" UX=`$MWpPaTt:dmQ$'!'9`':I({cFKvl2..DO4\Yv=RFm0%aF6ZvZDw7\DKMa2fwvp/vm35PՅi\2u=S%gMCd" g#X%0=URU&LwFv9~9vJt3I# 9 g4xT#49p93E@Wz4{9Q\M0ٜJ JQ^燠D)8JtvT8&EPȕɕbdžtILwXgaT:j, 5X|4.5ڦ!pstH<TEIs(VϽT>bE4Q!D!?_7 Kp8ru*,`֧1[hBp|p81 !C4P6Vaʼn|5_6*$H8EEAX"DgtQ94NjEsQ[ 4zNI ,<7 cnlShbHԸ58C+!k" ND-C y1ЪE]iw2@!H(M6<j(zA9tRJB)#YToBʖ\r=C!>+M2ZR>^C eKV $ض *cSc pXVAHFDQ$6DA""@Ġf۲Q|"i a/hc*i\wQFp4vKNtB,h\ eCTIX:B!h JtS\3gh2;1 rȞh %i]1& @ D;AKu@o$0PI(DJYC ECQnjȔb #7RlKϸٰvw4W4## 1$E&/ mìAw*01AazQQD $215#; )J:gKTWAjBP=0NZ U,3NЧ!̤#(,('bz41Sb# 0RMF$ v K/M2و`E$G:^^;ީ$P.aIN98`,]\A詗Z)T5\c30=Hϗ>SO&"-Co& vD~=2Bޛ<  X 2,G r".D~5~dȃ2$$IlPՍ6qDs~sp%elKɔ2GՍle>*6m:w{aUI;?I4,^^e{=5tw '!%5&Fp31CF{U\/c|q6wr32v9,H-t -1- AMF_ͣ}1~)@g@DNcE qqy2+Eqk@G-7!!&GlK5UhR"FE  5,Qv4ptq032+Lc3%H & <.D71w  "yN`)hbl"6G_nRu *+c5s}*pxH.#zr@D}he &S2{Qv%CRbe$tʗ\Ai1=`U;|2P*>5a:,{'p"t@t6rNu )f'Š9#8p~rA$ .sAx[D(Yxd@t,FVuC,&{fSX\O7{Chi>g2؀a2-|3ذ 0qof"qHbh9򡉋E"yxOT OEzyDߴmrL2G''Xs*QTqt_IȅfTU.Uɗ-v}uv*dvи:a灬5=*xy1 #!82jCBsH}&V7-aE8OXY~ 3KIGTXXEg#5,*a)X!fhG4h| ]&pof'oKy)%hC)eQ!fuhcw2H4\[^&(`R:k>X([~F[zԝ'bЛEu1{ԗxĜpw#/+y&Hqx(P &HP y{A˘AVP/ 7pIИvo12ϰ@iy$ +Hq9##1@ W >^Y坟 r3~0a]_XFWȅ7!z7&JG𪄉(癒'{6I%|,%/P}KVvy$2$Xww(G7h g7 ]U) aXbNNE:z`U~A!9w).+ZLqꑑq4UƵ^Iʁ\lXVX5V/ԓ:7wmJ $]H+:`vw}7DwʪE'[ɕ`)Rex8ɗSizV pyk>G7heqruI#(7-VvSBNcOtXr3 䭰0gI!b̀ìsNbh,`錧G # g,|, VpuJ2ʩ[2zʮHGW{8heT}jՃƨ zWav)yWC _p:A׆> pTнtf̳ӟe&ɪ"P+4,Μ)?I {*wUk-clh[;GKx맩y@ʙVhʧ*b/qW(\IzM.6gP2wPZȧIjZw_#IS    ųĜ/<&%%%%+<%<*8++***&+& óljʪ.L0 Zn5..H)L3^*U^VeЄ:.4bE((JB)%gj2jѣ.vZ Ƥ)su}f]%iV](f\D9pWۡqV8rbe)%4c 1B AlDEK+Rȑ+lޯTSu_dbo5B?sDҭ^8 (RQ +)Hn%s앥W.Zirn[zQbaZ[q̯pZĘ"8PB3Jyt"Baw-\ FAVI"RJ v_@QNL`o=]"ugqE#93,x `m1tǕ=M9pA:TSN `%<}>Ffdל! Ip5zYiQ.@#Z%ш@!H0![J21sNju 'BkHH##}0BؙETcs`9s1 eްWYfFyؓȊ=cDљA )2JtH[a\,Π NlNFH;D8 _$.Z#MFV(XzFaƸZ20ae;ꕓ Yf,〉F0|L9#Rq"bA$AYp;J)UOjEyR $lY AJEMRRYȤӼPE0҇[NW+!`r90Ӵz5ns@@$pC`:Tܵŏ3y9n)_Ku$s[o׈LkVz-nrgNw)4I{Dy?F;=ľ; %*C\Rj% N %GR&RLmfg13+33l#ZIUBJtR 2tdO?4h1 J HDU.[ LtxZGy" zn"kjz_..*! nX`PpEnu-*;ZA=D$jF00\0qQɃ9Oq;mVK@jaTCpa6r"S֐)1-'}p\XKeexm}5w=JJ0p?4#^ǵ # oQbfm'OqG EO6-'J$k%0.53$,{:kngp& a''!´}3We7hBۦ_Prn8]Prq0G &::5CRL ri$zcO4ąl}3qg513&a| će p&NxW*#gf'%r:t*Ėu#oؗ1Q0"l6S3#v8!EۦeJwf1?)de:#&aA!'@00s5r:pGx;^q@؉|C\g;;x[89ӪS7dU](q呝vط/قmXHX"|9Ri+(fDge.UʠmSqq[EfcX~ @Dg"2007q'xg(vawzQV_CXlCJu(:XF}V{ dZtֵYgfme}+149vU !U3 ;4"5ɎnvfaKytƔq `3aDupgb|#(u5Xv7U荈#-RSv "++0Q% O@YșOx!:U#(Quv\:6ׇᑱ'Y>2: 9hpSqAvRh{XJD[;euc%h9Fڂi8az)' q؊"03|eZ5[z_Ɓi:~ *Qj#f'8f 8aDʟIj0y9؉3u_3l06yȡ#s](Ňx*8:*3G6٦{VJ1Z|1uZw8"p&[Ac+80Zʤ zzv,933.(K8iiŊa$L: Ỷ5jK5 ˪_k,fyjVJXzj"E cujZeJjkIis:UYfK`ɱ*zOuYI* k(' J| :j[[ٙ _[A1 樷.;J1G9 jMV9 a+jakj}HYAZHj ZP 5iiIX8˵ š<3Ī[k* wL'^;9Qp ӷ؋9 ꎉ;;}w|,kpJĸ[RL:s8ڽKzKisky:_Dꪢ+ؤ%SSI45ٻ1 5Yڤ 鸭 mVʺ#܊%l  N(vh…*$LVf{h˱Xk=|)zdx:z3JZ6IqF쯒+ \'\+a[eǂe{ Jczɟ! 9N`_ٚXe:Bژ>8+8BƚÂ:غHK K9ΌY'/{jL[Q\[:eĘi lV\K|:2aM˿ěs,)Ħۯ隧*rq`{AL{Z?*sʲ[C΋jȨK# '"Мlzuq/[Dl0{L\w;*=_w[hp z ܻ{z̊ĿճR̸ZfL˸KL;ٶ Zˤ۰֬؋w+QTFL#DE ̧/ 7ӛއfjl͡F{YiRWXXV$\]ؗJݸK:MB;ٰvU7Lt,k1s7ɖ Y+ֵLa?=Ү3 ؍a{޸3Eۯ8@ vƉ{AV݂}zہ ق$mhH?l@ju3{dʶV0&keI(|Ͳloͽ“ Uv.~gJqMZ]`*>Y҃8CN  {XeJʬI^jޙ[&ֻkE[++{=૮ەju޽{wkK**>\T,9.֛͌|њKU(<̲̪{޲d0˲N*]Ȱ; Ѱ©رte+W++#K구_V=R˻ƽ\${zڱIMلULv\o(.[ mێa:MUY=όՅ(kϱ<ݑzK./ڄJy[c )|}km/g"FOتٯˌʙ<ӫ.N # o@;#¼ulP X P Q0X(@q(!hip)9(iY)`X*iʸjZXk i@Z +XY`j8ٸ ) ]Iahj i+n{|jY}8+,QJDBS`UEʐ AƉ"f+(iB)Ci)b US&zAЙvⅨя!XAJdd*ITI`lvƢzNz^FwS׏și/'?Jxtb"tS=HJ(u2VI촶Я3zTM;djJx KxUoViR{:Wwa; &PTZX|R[0%r$rng8&kuGjsŕ}6,Pw =6Ŀ|fhJ{#A*@`y̭nS_y*eMtS񘤉}AxZgB q"MD4phl4R₣lK` .!(0 cYG?,\gBD/K`?@ĨsmW L32x)2=!fGb)>褊 1&d-V_En86m͞5>AF{/1sCb}XA05(eː)YDG#J _H[E6ϥA<WL:ݸg _T-$tۻں6-aĪ=S5 is!'%DoTB֠u)|gS"L) ~K cb'lN:ӂ4$K1:[Vk@9jѿP*&@+ȌrdL%:m݀6=}n{#5>Q&AYY"E13Ak.ǽPyٓ'G_>׃ ,Fܡ E='vtZJP"JI*8E{/(3yklPg#<EKW${A̕M $g6%ʓk[!hȩMy̻`sd=6B+=zڡDL;꨸!txDP֗/kwհlo[HH|amj q66QrjnZ5*ZӮj[!&0pVMGkzhc5jC Cv1n+P RltKe YՅAL,Vu/u.1鍪XVmVjMA|DV1I%6Ix,5W]hL66gʁ:tn}m,T"< $z ,Z 싪6*G}MMbc,| GɆ2m*lEI#KyUJ` %px{Z>-|^5ovٕ̥6RFQ J^/=PoޜM6/8%1*tPnU|۵)0u$?W+>7WlY֛,ěTrZHoz$.shZe _5qDvS6*bƹ?Nk Vvل2yj+/ˬZl7䳢PA%zaN9.[Z :aUjWITxy9*FFV[7m2VzP*|ٱ2ǪZXʶ咵Ur-[Dc8pjLgGx5]lvݤe}jS ؟$̒jɊڰzM=.Y+bA{^wEk\CYxy eV3C܄s|ѫH/ϲzcD<#/{T$9 ͺo/|OceZeIOV JAlkԎ{Ҥ{@%.q}Pީ)}5"ϯwEϰ^×M[ tCHq_6&8 ?CN< Q)xZYX/ee:zwYʨ7-h ;כ L-vz];b;/J\f2(7|KC 5B6xxU}mzSv޳NUie'C.lv@Glr|cfBo[pdhK%Pe&GM7_LJ7eU_Wi |h>5a|ւ&U#vdiLU=DM[uao DŽYH*H5UP8tO0MSCid3t1gCyE/w6{[u6iK\vqJ$MTXY/@ķm3W0iRI$^ gfsW?XsPBCe^HUvCis6t劜1EPi5`xȨFbg>(C75=il#13=UcKȀWr>ՔJDH~.NdK7bJcbpE>#0DtW2hf>r>><gJG`UJjCU5Sgu7\XfWteW=ScW|, XCIEiGIKɔMO{SIUiWYC)[_ a)cGgikiUȖo q)p si wy+;Site/images/images_text/image0007.gif0100755000000000000000000000214507311163174016327 0ustar rootrootGIF89aw1!Software: Microsoft Office!, 2`޼]ʶ.sL6 G&SL*% Ԫua^eVۋy_f[Z~u7l((h6hVx(x( 9iTy))J:jRz *;kQ{ + ;L|k|<ܼ }*==Zm}=.H^x~>7OgO/4)hЈ 0Ґ LxcEE4nTE8dD0 U64eBeLTj"U:ųf6D(8`jχ}ڠ/+joHXY13A = WB_.q#)X;հ^,ɥR`Gwn!O!I\ZHʫ&vnY}qXf-qMΪoGUdK(frO{n2L] Rܭ c qqQxqtq b1wymܲ?clt*-*Y:tP:Uzuh5xz}/҈;Site/images/images_text/image0001.gif0100755000000000000000000000421107311163174016315 0ustar rootrootGIF89aR+w1!Software: Microsoft Office!,*3f0 ͻ`(diaip,4wx|_jpH,nƤraͨtJ.vzSL.AгzFp/6NOY~ç1~yGzpga\wbE}R3.&!6܃-" (P"p᫆WA EghܸŇx8I.\ɲI{TsKjtJTO_]Z(R*JJ&Qjej*[JGVh-[lڷM'u .ѵlQеw(޼#pk`Ő6FCcTeƘgrቮ[4]Zlh߶Wl |~{lh]'xy;^-n[S'W:]H @ hﲼ{Q.}re-{YhLg}R0考!\M3r↑Q 0@\[,ȁ4>xӌ46%X=XqqBBκV샫_* j7zG Nt0eڌX)A؂'JAYFgIB좫`eZ҄qh:@kYN,.RI.m`o(ⰺFp{'<¬@2epĨ$;b|g<4vzŗ}/OA vS ߴy9wоƽ^kT@>+z_z@ @SD2Ʒ\k [$>"嫠H8^s&UUBI<*KeD$J<턷~B+I 58DBud]"7SQ>""H#r,)W^K9hDuSВ<1ssrHX*iB2eT0It @aqPEAPgŲHdؔd'jDԮN\Tpګjv}]ukĶYPY44U%Ky8VObF?SvN\:;Ԛ/kM,mqVQ(k 5U9npܴl]XNV\.Sw%K$.xS7^׼xK9nbMe|1Ҿ/~_F跿 S1A`0+V 5awqĔ '.S=a)ey‘\d]rI%'׻{Mf)an W,ke3VfEB2k;Site/images/images_text/image007.gif0100755000000000000000000004521007311171556016252 0ustar rootrootGIF89aw1!Software: Microsoft Office!,3f3333f3333f33333"""33f33333ff3f3fDDDf3ff3f3ffffffffffffff̙f̙@!,%RiA:IXجvzk!@|g"5U~ccff D   kkhtrC   Mx`\V jiiDĚcdVCJjB՝jFedseh捊iy1ʠyD/!`xm*pi!?CBU+ T>~9O\ 2с 7D' Ȓg]аJc[pb|N0k'˫[2Y$]2AKl$ݗ*'+=KNډJ@D!0]j͔+.F#$liI pbP#QNeɁʪN>Sg%@$2 ,tm"aB@ǃw!8qH/H2'zăL]qT:Ir%F@WYʈy+d]AX_y+!0&!N+L X}0g( Xƀ!k P%fb%HC3ȊPF/8)j,l Kb 䨣'hBXУ8p@iMSX|Q"S^%&@D7 f=2*MP)ԨTT UVbt"x5H}~Ğ.1FAK=b#a ix=@X=ŊD,NTESMq1Q<r8U"QZj5"0b .hεp1{|EɏMV0"t&0##D*v{lDGT Ś氦ۚGbXV!]}i'un17=ք"!xBę|)/CX)ziffuFjY7ź?fOCGbT(^qH?-\-xXt`Wp e~ £{v-%(OV?g=*&Avɤǟ\:@g=lnYSg/'.- elgSC8W޶Cqd.aaN,hBMz p% hYh8EtCpT1׎aAMUTK1b(*UV6DpB4-33@܎~mA( ׹\\ȡ[U'u3V) u8C K%A @6(^JˎT, ATܣSb H6ځM+J  h*W<cP7 dq*>ETHBg fxQ! (ʑf^j855%% Vl+Ԥ&ʘ `* 5 4?& 4M@nqCߎ"J:ƣT!A0ԂTF&nsbJkK_J:S̉{=V lGVIRDwHC䇕6)9c5<[@O{,C8@@Cn&3tvpHC|R|]jf5 mT^eD LzưeYdRu5+DVkj0&( ji'S, z *3bd+bFo4@`gnCVCRfn2q( 5Ky3;fJS݌%@z/#unYzՏ#䥶VЧfݚ-*Gأ,xpHD";j8a+Lp!j@TXvbkЅfXCo*d^RҾhb)- aAwbPkC8VTj''ςb͒ %QAUe7xƂN*IPvf >Q*jD WMڂoԈ*HZkA[ 0M +VX #b  ƲKb_pܜYŸFtFPtr|H ˀhtBR0lg,{#K.{6A( 1p' 4D:r0p#5CI])kzWI&5Y KIr<$ 0*!KŠ]W|غ,V^l8ƴ&%5a3i(l 09u1.eeD6BٝnRPCӣ,xm-'!ga|0=mad[K OɆYc:V*M!}t|]UW+a^g_1 ;'|++/OT M0@H^,H!dh;q%rܭXЃRƤ)ZƆ`' b6*Ydvmu$D"'S.5iVe0u>)8 ٰمD!urdhPe2q]4eb^H h3 0J/EOIyg[1I)3\hpp~@se6+x*N?| g3gAhU\#:@-DsTw,R&ٔti`c5D8D=ǒu]t݄&X1V$)6;c#l0)^QK)T`a{jDP#gSe_I)! Fb U-H} 2(1XeT0@galB37[F1.DS%{q%ϡr@-ZO5^B/TQkX*KekE=QTщwF >AL} !BxVE5dL{V^PXTc. `2#VwM$ZQϨ G+?\_v0 8IQiDR)(ug>d4ySi$+BY3vRX 0HRi/%+如 wVe|Lu|u!V7A`_LPUgI@6I`5v &2 iu$2B*C8`c 0/Gր~ oͰ ?ar]ɄiL&&4D~VAz3[asM31"p,V'%ԁ$E+lBPQo~19.$n'#IϓqjUuR&Y7SQZX9Bc wbsL5mV!\!~PATcM .phA1w(,i1{Tf$"͖PED Xh55 f Re %zA qef02J +)AI/F"w@173-QhqOZ툧JKEirr@`$7i]|tZP J)7z 9rS: |Ģf`+RcX qY$ ipn. }8@~EC);N"2qC$!5gP)lljIs(ƫP c֘'U -Րv 9?jѨԒ:%^yg $dЌV'7U HR0>TwT$9.`Rx1p|C/\~zhPХs"_jMET*G1)W_ JZ+I@IK'zA,}2w%ǧ)j`K423>QLùu{-ڨUD!m Vd244* oH<8 q~eХbH/hR.ծ(4ƀc=Ņr3ΈZ!|>AD_O!+Tl˫&[cb~J,=96ek6 <68sI0`v!e`:u;|4\Su'%p&qkO08l u2oψ4XP|A 5% & @jCcK/r3Jfu eppJەUH56F ,!Lw $}+|]aH.:[N*c8lZj;C(|5}p,LN]梽v"4uxf' {Q 0BC0WOxEp)d3+& Ƥ01<2:Cu|1}|41ෙf[CyG4-E _Ajjf,j:+{~ +.1.{sxI<&QbӓB-Ì=r,}џpӍe1.T WDfe%*.0,00,Ȓ]hh'1g+ {CD;RD PgE&gyNp^ro'?@rvPwQaHSŵci(_N%egk V1'Z ~҇|j,7RTw Ub gMݚVr1+wBz&_ÂF* r$2kۦBn<*p< ΠD& M/֠{UvUFDBm>=mJ4_igwNRHS\UJYS Nl\JVPsE?պf&KO-c !Q%#^6`4QRB^ZH%*H7!Ac׏1(^*ΔEo5X#F7~ ach'O %L0:$i1lP<~X:I=@`H GH."<#Z rA` 4mgae8O%lTAJP JP!/1,/b IbRB4.` #PNՈ,bOI B/ )/cc` v:c2:LO[b7W9r8[r񡢽(I_ʅUa So҄(ruA,8X$3˥|hcf/VXQR82`dz^ ỳIH2M=rppJ$-/LҲB"`GZ-/a°Q >-dr$L)Q($L1z(B*sг.(w+4dSַYrZrHSWf:,LgHd!7x-8at=6 Dh$*IW&dT>vh0XD'0-u鉬+D j ,3ңkqR0D2 ISdxxeB)" J 먴24}r$JC :I (`1,b!r,ZPq2C DLxVFHcQFw Z0i#OY18ϩ-CIb2jN9+7`yƖH-4|*CuϜkT 5) lUDdA(q+M:Nnc<ռ> ɷ8H쟦gV8#XoW5tf(21 GEp N{^ACJhEOUrg.h.(-6< 0#k3beuA:FH)Ttbiw uC۱O}rx"2(DR~lg"qBJ4:cVpX!?;╁g]ⶫI бn@: |芕8n`<0p HLf0 Yz7\F*DPN QHY1м 8'2%\Pb ҐX B /J".| P+|Zͪ2OgOkE!AGKB qSi;!)Mg-0Rz)( bc6`n&aG^Өw1␴W0Er5<@CH{=!x^7Htc6ʨBEBB$VFdaת#4'DQ.:BG,: "䨈z",?YB)#OZ p̓t8ĜovIxIR@Rvx;%θjQ}1*kZ|A=P\|V+9ш>{ʂHT(EVe3254.NU|y tHR>?`b~]kJ¯.^$6g!+Z @ϭI)2(ǶvѲruV ۗ/HY_t͞ʂe"=$CGʸ7{b1҄6嶃XSn\d)L+kkby]"iRQ"2Fh{"ΨD4.& 3e p5IG,2' iw>+a_d&6C-Ѵ}170diP B¶nl6vB {e21>&’,N?VCv(;٭DQ9p/$ "`H -a h=4Ւ/.T0S%``wPe= \g op#&ҸKl2,f^!]Hedv@H*6t1>|bO<B+#RSJa辙hҋ67 VAdyc4t>3hk%4&8#,;klʠ>.8ƷZ05'am,I(˦nhm*wV%&D|c0⒮ %!͒ P"\Ha|/S$[`cŤCiHd Hj'|G!S0Pv'M V Th,?I%B✨LQbl͢2ewZ bC2CbI4l_,PJ- ~Ή(!a'ED!N\מi Ԡ EBu12 % "FMa ktЎ{PA*"Gb%KGf`>pЧj:z2Zg퐁T\E&Im h]hBea¢-I$&xiT(, FҮ8g./Y(AA# G#W%pcںfT+FjmԦC:"ho> !$̄"uf" .gό E"4xش РC-Ab2bhڃ)1bG" %*.oĭdp #g~aRv}Qq ,rGHI, l*+6P/`O8 0P 6MîF vd3$c&T Ʀ`nʰ2.~:D $ ޡBH, $BAm#T&'*ڐJaU\l ( >K j I~"HT]CnX9Gji((LhHļf;uqSLdڊ"- @e ??BO(Ϧi 1Q- Rlb3OEbVnTq~3,1^) Sp,!:xTUDoX$ 3iწNQJ9`{(hBc,aG/S/4%D_FO&:–nDr?,0X=4@QJ1'k& H?mpq@=$Ԇ\v)&~O"[3{(+//vԙt8L 0&/h`D &R#5V "AaO"r3K(6~ m`,!PÖ_O^R fNߕRfRti[1XNR&x2rSRdAN.Uʚ:5R?!ːGBT$~"|' @:Cn!D$,Vu̚`bNwh }XNo~D{@aNLxjI .df`* YD!!C(!~@,Xe1Х +*LH'E"8.pF\ZPȺSDgi!0,zm9XP>#>SĨ? j.A@4Rڪ2|gH8E(#3c/Kf#u$ĈVU~AtLC*X 9LudL~n6`e[fFDvȤ`6̳m.>hu`JZB;n b,d^g\ݔ U@jFT8Rrk v1haʡ&Ikuf:hꋂ63ՆD&Y;04 Dޯ ISt- !T.ea&!!QX, W6Ȅav "A&8l($Mk.Ɨjr@I^Z*. xHX 6daHvj. <ƫxe1sV\O(w)CW:eHGث(6<ȣ\ػɫΒBTQAL =P9 %~b)&!.V_*B B4Y&#jCxr/e!ؖLrH:2hJ0&$^,!0oE= Z"иi&f:/#>VStOE,6V(/|ĉem~બy*9$͞x4_7 Uʩ@M&h׀,uw'Ũ2!%żc.T r45CJ+[Yp|Ť4~nG nd5 .\<|.,j2@Čs+tH'Κ5 %8W4/3TxmIvq0^ۯ(8j6C'گ"I@rpn͛^h6/;R×|ӯ=$Eg\=Iڜ_*ï^䯜qO9U5e;0F9~ˆ B'ʤ"r*bc\PwFgmӖǚ{DO&Fᓺ]PG!j@?v9\ 8ZZe &ܘVa}o[8Clk G:@x`lcHLfnGsDk aqaf٦ Kg.>~/Bèlqk6g{)lu#ϮF\d&4 ?zdwc e$Bt  #A4r`H tA} mjF`>u jc5I7b<8XueI8  @NRAB9 ~y~YIhlwAR(G.2 8"ۑ;>@a 8Pa6C˥-ߦZ9^MTMdTQ5;tY I 505R31M `_ZMA3 C!2x|xx2X ȣ ezImjDGٸDj]hP$e񩣡c-ePft8QBW[3W`:ʵ4Xռ!kN֧'ck^3_crs܅${ÀlsiRISl(ߋ$[*ˇ}3&5ebM FNՈ;qxqa0orDA,['nċQԃZ]Zg_cWi[!}`\`I؅y (ΕUQD#Jh@[bm D@D%bP,ZYP%fMiPh tA N`hKJ`SRQԄ`FxjXMQY~HT8PIX!Nm _taT=x<DIN4eDB}k`z<רDZ8TMEZWՌt5p|HP䙷Tt\!ւÚ YDHDc!kL5fN`B40j 2NjE @DݕPądDYEaH?OPB$[!m#C=I*ɏ٥q4<~Mq|D:LTKL+mReaDltMݖFYu ZÁqjD̵][$ W/F¡u2R0i%|UZVY襀م()o|5T8$[jT0li$lMła\۰YJ^KNEí7:mATT!H&zGi] DTGIJj~Y̟۪p(¢D|MWED2[Mݱ8[(8PsښF=΀)Nd afQQh EA?BĮP\msR @Z}O+d7,Lz0ɐ@aD0L&@]Yǧ/-C̹ĂslhFuŀ47l[1&%9+9OpA\P ęZ1%Ě:JhE#M+mpTzGhsj[ =^իyO4x!D:NmRM$Y.`,%Q`Β&吐HA(Sd X&XmҰ(FܩFWe$TDfy#erAD@ZTߘ\C+xZaQYF$Ȥ#D" Z%0j0kb-F|\/LPɴ7, aT) 1D"˜&^HM!i*^S4ZbRL X8l+J[#F#kQpbhd0FC,GͨLrGd,Cܜn<^AL_Յ̈GqmܯP, b6MM-76Óp&LVbT0$P 0IiܺȡhOÎ$-¼TU*dMpܡ]@PE_WX"M0IQr^NaC>*Yf qe;||o=̔+I|   E1%d|lT)LF.zgbj"DC<zHD`8Aq sXB'BO s1s2ba`A''8"k[eX E]I@UֺT^5n՞Sב79%|苈x.[eGs ZtH 8.u,[ȱPJDu|( RF\C;[|REMLC{26]Xb M4ʕV1Z AE|=I0T_JyGhJ',KoeȈ065H\nCl!1#|sBr^o֒1IЅbM5+g, g /9cIЀXvQFX-"BQ"`eli]CZQ9c(pHs)ay9w*eĜ"Xt G`CDcG C}j y*4z/𵬭Z?W8g8k%:CG)MX[<M@-0Q_ #AAah]Ekћىو ]rԴm@mɛTj9N [6mFHy̸I7^ Ur1Q%WfШtG>yEjKiqAS~TDy&LD#@8$Gc摑XMdzTZQgVZ h2<*Lw8vԒ.f & %34GHIJ - 6 $O#K&% RVS+X=R;YZ[X\28Xl/_%5`ōŦ4B%X}.i#;NEIta¢:J`@{t``3-LY "tWrHW`JՑ"'6iqO -cf &MfFO+1N4hz*K≒N-_ܩV̄K|3jU29x#"NI4'gUD}Pqì#ZtI  b0VEKkۖ/=g$(KŰ9F`fۗmӟg,^.Bbk`z`Xf4ϬM@:V*(+ % 2h-YyPiNj/Bn1PB㎚ 20?(A&Io@ &iE:JBTGo1&(`f 4$X 8m͞YDKOyD 87;䢾 aĴ9QeOO,"ҟ(N5Xa&zQ(NЋ%0EL,,#'>s@c9#jŪXLʼn j;NyBSz<0m8}Q2R+bc|58(*LE5r'%Hn⸶HJ+ycDGa-E(ڰ,HjNVK0]2#%L8ϑ)g2艷EKRaee" U B[f\@4  NbZv+}K ߤX x }ѵhG٤ѣibJ:Rpu"MʴT)Lk ;_T;+yS揢A%jQGќKejSTFUSjUzUfU[jWUUc%SzVoiek[7TUk\z{+NWV%la{XĢpԌ_?X9p,7g81+,dYxPGx6u,NԊVKkh[7^ţBƇ6mlIܶ(?)P|ұ n+JlR„&=)I}Օt9yn\#2YyStKݻ|ًL[կ|^wܥ6ȇh ;`;+9<:vN _KS,dwxO.Uks ^9^(@U|>K4oy-:\#vuoy_J2eeժrlW΢y T3ڌ ;Site/images/images_text/image043.gif0100755000000000000000000001517307311163720016251 0ustar rootrootGIF89a>!,>ڋ޼H扦ʶ L ĢL*̦ JԪjܮ Nϗ_(8xgؗ8aH)9ȹI*:`hbJ ;Z2a[k7kYׇ|hpH0lܬȌL-]hj}<+>ަ{I-~͞ގ.<L~\O7r n1g[z9DTDzAxa5z9Bh0H, +.ؑ"Fw dRL-qlioȝ<[$qtjMiϩTֆBvu|,TUۺa[n nlֵ5;o֧$4c̻=SɅ'?Vծ9e:uSX~&c۾=fp{ċ?<̛;=zO# =Exkʲ >`3>wuu$qN(cIx|U_ J`dE杂^Y}ҕ6AeuG#`PD_M~&a$dc5#ȢDeJfסYhIًphYK^d ҈ _}i\`bIfxtYĥfn>'&UvJygQgCp~Jhh.ʨvgNr{e jFmj['Fꏐ_ kAmv6"g*^k$T(aekl@%e(*K- [v.&٢QV n6OKGBv^nj8eiRdo|ad/Gvgp Od6~볅QqJ<Lk1*r. s2nΌ3Iܕ'r>Si FG1kMN.t?L)WGIub[ RhBqYl\Rgke嫓YwwOΩQ} 9u}Όt;Q9w2e~z6hg)캯y#uC wƧ|?}OO}-;<$T?<Yp«0P܃oT︽=ԅr~O (i{6qiF>E drUDpbPr>}OH.@f†_M+{%5r&|`dpi hWJ1E& 0b!)BܢB3-"&eRYM%V WȣQnzK>hL&mPKG'k%* HVard"4QKP&/81xT'(*Q(u))GLZ19R %!A2Xw4`0(&o* 䒗_3'WʌPSX`7"=.^42N+eŵmk/ģwda1/fi$?FlSiիjiOq+Di9uֳhA%^γme AYήI)u5EU~ Kh,J('lITn0=hLgp;T[OzeUyS;Ќ2tNXU ZQ<(sLŖG~l@H 6LQhG43Y}ە)U>epO6؂fiVwʝu,3kk.((=fdCΟIG2Ӵ!W :51Ŭ705 !\Rm q47iW_Tcӧ6D[(|sڨZrY-|)RFO39K eVoe _3ap3:['˚W{:kIL CWf^wph:,ru&jSKzXS-=_&ц9jT,isڠO3esW@Q[6&aEzەUSQ-5"5vs _6fٴkliYo?Hfj#w8a^j"um3}F6XF1G5jT'ny',6~0|̧gԃFFRX78\ ]wVXz%]7&ShxhTnz[f3Dhwww儡46W\C|8w`cHdf*uewT؆b(x[whhl)snb! UA|V8Ɖ(`fysT`&Ru%!as RLl}bmr}6B{0:&hT_HGNCXU.^V+Zw,Gx[mfqoߘXc7:UzxJ${nX%p34EX~!fjcIfJeDl(uxj[.Eqᤎ]']fu4N¤{$ GydXOTvsH^S[gǔ;X)7VP64PeSxV=HM6 "VaW[htW:tu#Ex閁)o`PPKIQT &IGcI3{/~pQiĘ;)Kt9vnE'{OKAhᗲiMOjQ@&yV%\RVVKW^RijV|f9G_JM}VIwU|O僘BTٜ\9qudi9ihX09|m9>]\o%0RCW/q8UUB:NVv&n{s:DZAA$z(:,gr'^J>NHh~&J *Jj׊٪ʭ *Jj犮骮ʮ *Jj8h(>sAaDv*w0jWl8͊k֌d_t_s4 ʪ˃I @RW#CwpIbYuH뫞,$u&mu'֦%wmEGGlٵhԦG&5}Uj\mp4dGJ|uKvmJI(U8㲎IJ9P{J˵{XHEKdgn[@7|tpx^[vX|Yjz@Hq-ĞzsǝU+K+&IkRtc[y67x-V5Pk^סCz kYoQ>z {wyeqyDE8zf]RԹy~8k{&+ #aUT ,rh;d(gt+ _XH*{59Q;uV"$FH fUDQraWy^WP̼E v%l=;slkVbLAÂR p_z;{*KKX5՛LQu,茾B椻fAʳ'ĩ)YZsJͱA9fmeLλ_Ocrvuzᩑ>uoh# 㕾:>]2MZv}g̫ұq"(-YZOj7Z׺z?aO {g>Co Ϫ; x~\N{ G¢V|]Nz/AL[w+߉ YLԿi̻6,V|y`A[qKNuuܭJxh)%Ϥ:4ZYxpzk TaQiV!pȕ <_F>Z4%qL92O.vs#P0p3xA|Bܢ@ chZceU:/EM<U\]|emuܑ}/ ߸ o\ɸ2ð?5\Bl.UdL$툎 sJ/|32,P$Ȭ|r漮J>@( Ű( AS?tNA%t@ЁBP %"yϰ=GA5HJ]}?44S"5Z`I:U`}mLi6$5jaFiu _V]]Y5$9 =-_xM.N"Q&i0N>C:pEdm!ۨ,e# k'׹!![HsftѝV9- ٓUJAډsOjuJN%J&MJEXXG*xKI:+ر& i]7تPȬѯ{SQݪpغ0WR-ʹh/Һ FtuN ZU(a_kik]"O~W4܏מ(Ӿ@6\ovosiceNrmH?U=H_SqHolw t w^ɱu'`l %U&`r`vX 4fq(b*:xs(#0zH!ҥC0AgĦ֐9#?H$ڙH`HXQ׍\ Jc zfOfw("r+z駞WZigC 5s͈FקedY,zM&dYiԩyNZNsQ%Nx8fy ,{+yAJqea,>l*(!Uв+kRL8߻XXٛn2;'[ƃlP-&YϼHʦq{b X/vVa\O1|]ŜrPANc]!#a5¿0&MTZ~ 2BKChMbjs%O5PάyuQŵwQS6 Š Fpd8:kLAƶDf޲e[8ȮY5ħE/ьjtG? Ґt$-IOҔt,mK_ Әʴ~.P-t[NG` e!T'dS&Z`bMwoW5BWfm;!ZnC7 j~9k^~l??gnr>wxGh Lv66wf_2rkcvd-&~Pxه{"Xkyss*8kGwYzn"^c]r28jGc{0f{At@WycPILwȧr{C`NxVi)7}-o3tC1(bgd4isȆMBWwBT!H[uXx63JD(PS6ZU9舏(Hhȉ艟(HhȊ芯(Hhȋ苿Hb$ЅÈ2Ĉn~]IfMW&m k AS@bhna~fEXX2QA/-8!vHbzxRHOCXVb'XvtŒ0+LYp32=484a)nQ$FFK^WbQ4GDUDtlC$bΗy84ƍb]T4Hfd[5G5AE)731G\12_VUL#7:iK\􆛓[lQjd#Hhz}g]MD(+GhئL%U'Gpo](G(M5+lpXKyJ"4#;]gHC2fn.h;/T0Ń~'-Kw" LBJIMLR|QYsp[&rP8ɚ-KI2PiZ@f+ߔᅚoɚi!|lؙm8y߉r${rz+S{2Xr%bD144ԹrY})#ᶠv1#N~~8_} Jqc4!ndĢ 5\bC)?3yG8{3 eilXVyHZE:m1iOT uUTA$d)U_IJIPsM9Xs~a1=ʐ:T|Ad(k>w;p()h@&Ee0@7}כ[*U4[hm xQ`ʫ꫿ *J;Site/images/images_text/image045.gif0100755000000000000000000000320007311165064016242 0ustar rootrootGIF89a8a!,8aڋ޼H扦ʶ L ĢL*̦$jXݲN_lA&>"~(8H77Xi0&57yɠ)ǩYjzjyF G*9 늊KS[qIk(;[| V)jZ,Z} gݝȍ*Ll{>Z:dҧ*J:|$I(/cjAznF1ʕwH)3";4kdc͝YXڬwoPA jƌu)2GӻSݩڰX9PZGU?ꌼ`H`_V.H|Y`uy!aQXtaW=t(b\8& 1}'0ƞ6 Sc:ٍBAh;oٝאNe/6>uғZ'\b&JixAeבE6 \{!wqiBivu f>Zzg"B3ri0$襞JjjFzyL&^b ( 7T7nu+TfDl:i8UlK*. h.:.^H½Aޔ2*vuYqR6GvfkjrD{(G2FD)c'.ʈ2D _A#(|ig/x3?)ϴ%bd?,>.}@"d\32C&Ev^u=-zہwEddͩ؇'iwb ]mx0ܼfM]3m֞ #quXLqxX:0sykzxeV]6͋p .k<ܚKB.RH&>c?xsh1)KGz^W>%LzD'\>8AX)`lƼݹp|L "r8;,LC& xn}KX1 (/9دωhfD/=zLe]l8U-fJ!FK,pw[9sY&%.HuH} &]$HhjF=kJ9&D 8P䔉Sd*߸Z6n}~Zt'i̗oV5incW(b !3.~L8/K* FÑ VDأ=C$-{piW<yQ[W"Y~BaKhCQrAt;ؙ8jK_ Әt4MoӜt6L{a7DPc@ӉJ1izpM >6bOZ=/6&fwēgx7Y"fX9#tjĉꥅ'g IHiʫ:Q3k+7)ʤ{K u[Z,](},Q=|M.,ܹZ6euxzH]=_.nBLB$EhxoD521ch2ȑ$K<2@*[2M,dE͝` :z(g)ˠ)SJѫLVZZ9FZs*<Tם ˈR'kkez6bܮsՍ.dQ$ qym94gѤc+:լ[ ukkQӶ\u۷9,73Kq>l.NƪtF,_{;k1cˌ~elm탿Ht-5|]~p|C$8J(8 EELHsnD~b"Hb&fsbho[#;xa<Q$UVT6NBJ{A͊KxUd7 J^e _{cX&d]}hI2X M1(= %D5 iNJi"i߂, %ցZt⨆1fX jGr[Cݞ]RDŽugb!QEbbMC.ڏ#.*N8͈(뵟׭TF;v%N-Ԟk`Esr܌6 ;ژɢ;Nxj%,2!dJi&:+Z `"lLs6ߌs,ȩ lV'V*2^mDc󅀽Ik=\[1Tv5j* ]RjDzP 킸ԲSsvT )op<֖cL@*6=GRg:lwclBaUKxAO铗=mS)_:ѿWY.ULpMz2%Z 9aHأ[`)P 7 R,F!yqB\b %R֨朗d60HH2c'vT_srBM~qcc},p̈́ܓ꼯#2-_M/[uDJYPF|իeX AMUm߿/l ^J8ԃ[_D:w9^` LzMjr)T34%ͭ4g'djhY36}c.:F+[;Site/images/images_text/image047.gif0100755000000000000000000000176007311165634016260 0ustar rootrootGIF89aS!,Sڋ޼H扦 ɶÂz(@KчLFCqi*T#}2mVks-nɏfhzgtg(Ԥhx؇'h#x&ip3G8Dh*y)AjUѪYhjY:e9[ DTt[|l' :\vx+Fh  g>svJz,!xc%-=a'՛PRHIqU|UI&hI#m vӟ]Нw37X%IfU)L:<PFHfU'oFs)PW)uj4"bqR 6Vn׶7޽| 8*tKݙ8>vLrc͜6ѤK| 99Wِҹ[H Rð G lo sɼQecm_|ȝWtGQ-ώ.='֘[]ЋZYv2QO^LoiLMSq= _a8&ZT։*b.c @bV!h i8k9a!>5e6YT5y"PT#t}C"wI9dSu_te=MquYaP@@]{.١b~7n՛D5Z3Ryu VzڦBB>j$k jg<%ဲiLhfW" &[NKm^mI|&q筙>bm#-5#z-B[O暓Ys`bn$& ˩)j($I.}:ntP*kGq^r$ng* <;W+6s]U cYrvb?U;Site/images/images_text/image048.gif0100755000000000000000000000356507311170046016257 0ustar rootrootGIF89am!,mڋ޼H扦ʶ ` z6L*9ܪJuj\`q}y؜8:m܍}>dEw8HƗcf)Th j97ɩi W*Y˺ˋf{i* )VW|[|qFtF+vM[6N\A~aOo0 < \¹k!(#Azvʊ#| %%*[Qh9 ɒ`fi va͙Ine`C:KY#ҴWo\|Ǿ~_qO\#?}OO}_}ڗAҕ߫`dFZ98A㮯:3f )E:߻k dNQ~B)W)uQh i,CjjłyfY_G 0"I3O e`a5b[qZ?no܀ZPc"5yjiլju\W V&u.\+Ye˳ZGP2VJ'v--a\)JI&J%ꅶcºҬ Jve/iy݂B;ۉ6^gl(IC$:csJZQvMd)t~!}Z_FmK0KCm(h5NZck &.GWL]/ w}w}h;Site/images/intro_titre.gif0100755000000000000000000000216607310727502014772 0ustar rootrootGIF89a( H^mӤOlzІ镝!,(I8ͻ`(d,elpנqmx[1Ȥl:FAZF z-L.W8qӥ n1(M@

*MK#ʡoy߲c[`reJ%NG"-B@(!-A(G!ȖjTPW32mVzyy5=%ƍyyt&+]o뮼<Li4!Z_zҺeQ<|@,ĻL |CR\S#lzq ٰ/Jc4 W`Sx+,UWkp0sqOVi6|ozяOyxVY˦e.Z~.kjk#@^/ c Wcp̰9Xi J/]3+$йRnQFsN&q鿈hpPZΔ`T`t7Xt7_UE- m 2⑞fGC7_1qSx7v-&qUE] @3wq\(Sܯ7*}r/̼ |˪.aT }ɂ"Bw@#ALK/,R6!V=/Ʌ2Br*;?Q#7j ?k4^ Ov@R@p3{H2J!]f-(#EO}$g#gr^ુwmKu"E5ѵ>"v Ux5O*%BܺEiMMBUֆ%٫ /„,E_hHes6B`ƘdaD".S7h[wZd4Uፖ6QiBQH8 ^ y?HF>PڣcFQ\A.=geɠ4`RވʁK/J0l*ಿpuEPU4Ŭ\3]( @] y?yjQ]Z25 Eey絓V;JXe!i hSctC[Fu.0oU@o;yʮE-:ie䄤Gu^G5AP!lcNլC?H\*JBy7}6l%X@*(xl\o34WB1f 9i3QFܺ@|F^x'vJn[^xCuM4bT *V /dl6-^L7bk#))T@6C|Yb IzcZҴ(TVt0?3>ek@l),Zd=o(9祤 RE9k}@J @=MpRn_@U ]&X]v  P=Ϻ,,u4Y b~2Py7(,+_ iCMǑv"ڟFb4XR ?xO >6+F+>&$n(5{]Z̰&#\6֪4+f^W엡yaǼbt(WXlH}nxm0WÇ%Qܵr!wv?; &>[zGiIkVƕجfC6_+v-'ђtZfP@D!UI~~B a,\U:[t AfZBwa7x>ˮ]M2`p@1l6U˓ ׀g5bW HXJ ĵrav\,PȃZ<|;H#b]Nj,nl-چEt8rRZI%6%gHQ+8}!&]^]j`j%?ʴYv=ƌ:D;<V1+6P gnB5L#gyWlGТRPiprf"T?a,0ˁ`-.qP: )m5J2l\*=zxi_Xe^z\\]үy?pXBo4obd/V6_̿Lu1 G=raz\sFR`=ϲ5J/q0 :̶+V*>%uQfֻ"&—9*=AL䫾_X ohz3=J%8i.@8J}U%MwA a77_)H;VH;&HuZWc`^+3iVY^r F9\8_{%J %Rе+0honWmX|A(ylmBշo!O[/ëW>gpfPܕVCWy[LEVA²o= R»F]9ҏ[ ʝW E?ȟp@k2:u~Z_0cyȇPfەdBҵ-c٧5ϞEU|M-a˥@"9yQ\\[pܕ.8^5Rpyb0 *@ZB [w옋A#qP[GB ۤv(tUkQT`[yDꦅW]61 YEw5) @Fߴ͔ f|l@ ͔kkjX"GG圄4-d_ٹ|%̲5" v u2e(K5VpH@))r PCtg U b~ڕۃp]ot3`p(NJްTru+00hqJoWjhfୁoJ]ƛO_^*b03oy]R:\ء-? bV5OwWBUl]z<**Tk4)XZmCsnJ{%)}Z`wcWK+W?cQxbB*ʻV].5?JW SP\C-2=؍<^~WPZϽs|oFBnU0WBsc>J\lU]jqؐhzKNiǃU҆ڼRD+\\$T,.i"UE6b` P e{9mN GID0X[TŵYhQ40&ݸeҙ͎np@Vtʫو\V`vĮ(0]xREB9\ŋ\NKP+8P1o֘G%SY3Ҥ`Qy٠SX}\ ƠҞۥp#*v1-O!ƢJU|/AݕRRk(Xuk`Y~קEKTNRVÊoSBa]PbVQ,cjUxԲ0V(ASGM i6<=Ho\eeާPd=#a(Ӄf0.W(rZz1ANŐCH?y(iE3NOu%h`5((|'))~pi޴*+ Յ'` ~xǼ=naE~|CX3h/-hP1, ,K|-P΂뮾c]_~t`ixrh-'iWeRp@F΋X ®Xg]㍖]QX]|pEJ {@>ep.yUv덯HfGԱB-}F+iE<T3 tyln6 .`Hze[/<-`ܮm @8`AOKL;@ʸ6L!bQaXq'*Z@6WNxGc㹈SIfnkoRlVT*`sphU5dҫ@;FC:ҫ@Le4U=bAKP(Eٴ{{P:~y9WA63 {ѫ*ofek^ٛFLedM.&}!NU? U/K]U<.kD #bPLm=2F M ai2>JnV~a+Xm/y4}Nz6_1p/yK1U`/Qj7%­t~_pzAK:k}A [){͙oy @-ܾa=WPՃ|166`EQc ٦U@Y2G+'eS`3_ Y's=(Ʌ6X*US@P,_a4=bkk$0AޗVZї9E~*/LޖE6.rbKCV[Z2wh)j. 8v+l`s,ctR?P珔v8/(8›=cvuXzrn8Br)a,5v0J'6Kg8-V֗j\T*? \ERJn'Ā#\t:rP:FL0YYłxYX[8Qsb[*lI/ ;eMAGg&qZ"UYLBZtpR1J8nf,XlJ;!69놟Yr$YFp@ic.bbtDɪLH8=uX I=H]`?p-st`*[h<:꿺s 錟4vMg;0'A/qmAe}Wԫvl1QʐgO5S_ԧx]'?">ɇP]n< Yz<OS8h!?9MyoeE{K5Zr0y*f|Jս* PpaFW*kq()Zf9^{Tth̐J1Vzc( ;oÊJ׿a[R=܀}R0/ގ!m* E;%Ǔ}n^`lHd~4oXq!5tt.]e}Ֆg)Z8*4t-јڀyY]-VB2LUi@8E)p"״w FL[&`"tpco9cmk;LG SxakYE,״LCl{1 wGh:i)&+iaZ3Z*., qMG"&nXcͭUp ޮ66 oPQ"U%sv^eV\xAu@M3t|6Ujm˼)K2p#h$ڻ72eh) Bځ9`vX=\XtWz EQHtRKf(ed6%\HT%؅B$8\^8l\T >pX%^UFaҠ4ͪ\C"$h}}Я^j/bǼ^~K|qH% ep1󙁣rM1靺 (o|Pi)\iEj5AȞE2+^tA 4ʢJm؛R/tiV+ō-ݫi|x{jD\"83?ba"V5Uy}ߡk64xmpz@boW${nHO75V]YeNa*2^h]G`Elh=`#I%U[RYY&VXuZ"$7˦H(qjWHC-^RH"롫x{b*~z-0-Zn(DJqUe^&@ 2 ĺۉRǶLԙϺKmk`Ĵj#KU@%\Kkke]Vg]703Ak\sۜb0э.@,@5hhb2YGmXaqRvt@:U6# ǰpg"Uoɞ d1OymB hN'XLlfƚQ pIπyu^AV&(ybɹJv\X>KKٙm.(P.qQTmCi2+nH,]P1c JMۇ![.Z⠤ePXţm5pۄ Ca"qt&n᥯ތp]o<\N+$PWU@pT5-I\BNvZkG:nP!x?4L#'%1#_xz1C@u6>"L(D9"|/tƴpѿ[OU8Ċ%wZUK,4( ң o+,_dK.ܮ[4e[̩RIvyTgn>A4oBj۟>O*TAe̞4ٝpxVb߽G=M]V |pcMuxvȭc/pRgrY&BXު(-leb*?oVS3H*h3WE [[MYqVlrFAHq[.9~Ih>%fzU) VaTn+EDheTc˹v FlipX*ˎ>byNxF Ud7{6lC6TL=D.;҂[!UPb]& M~iS{-S֊5q\KhW6b-9*j)"q 1H7]Vi\b,QX{ӌ x֮nMJx0z8Gac9-c89F[r!a@-SbĻ7l8` a1@uȣC=[ x)KZR}EZb|be2.DEx&Gۄ7@'1G690%]nG}s5tp˕[:FirOĬnzIR2N}s+6}#IR #^Ѡ.A•k[kEuro8߼D/OĠ;hY<ʏѱeio 4UbcZ`ʔJ*=!(=X Bb]?W} }ʕ*" QՇ򺸐ZUTeƢF4^M/CR@P7VSKj@[{ܴu{`r ']pqƨ)5*+MVop@a|A2`f(p1h,5ʽ~MKQ^k.;tawdu`Yb̝UہY3X`",d D Cv1o"l#uw R>yZ (p`d'2PS1.QBҕ@3n5ɾƶi6Y-*UF=؜f2[oy$C+F:ŵ6!Y^YFʸ7M1Jh-a2l{+#U:1{CՂ]ٚdvT΄orTjz[UH'Y[?aK;+9\CDi̯ l9Vw%-5I[瀻'( \+ͷnRxM]=| ¼x}]8B<>rGI^ˌĭ ΧQ^g]E9~x`yAEt.6IgE# sv[yҝBjWzƲ [;9^-DubX[48C_Cs<){D!tb%9uw1Q@>^TcGȀPBaŜ x;jLx s]\Y/5.i)v `3[ 2pxy@%*O(r;80B&/xU~'Maw"E;7]fQ\QmZ:JJS6禪_*q)[y* 2Ƚ1JD̦)RJ0r|JJ]Ѯ0⭪fʽU5pu o'r4ŗG$=KU6.%xFn^+uGڲde*FeTRs}`8pn}eb`bY|#(,~84+9&жm`l6ʾƧyXzEUJ/׊*2HH$Zj_`\9s\n67NEBQQe 1-DpW%*)Y\;s/Vqu 8]K0<+24S%>5q IwiK,[r{Z_:3 CKAHhz2"W %̲m''' Sccm_M%]j 0b{/D.m@}JuاJ&3ǻ0d?iolHUެ_p% }"ʯRVԼs礼GXoCQ%J pх^@6J6cM} mR-~iRJx^\J0 Rjbb, p(5zKSys]öB12u˹Zb]Zjb5yF= .NL rsN?4X^g,h՜1‰!<p-ӳes-xD\~JCPzPj7tF-)\Glߴʕ 8 j86cM(hrB4!vw,AYڌvHB@nˆxj,`*-坘R!bYiIpAu@#*Vƒ*Ηp>h ˷e]xWk0^~K%&8jV*[p_ÆCE0k1BLzYػSj=bb&QK=A\ :iJ[ձV] ] 6mbΏ@W(k4ӌctEJ2UV^ N6[d!Y V_"=iT# /z@۳$O0ϢǷRU<5݊8j {z?@=+e_ ˇd^ba= iZr뉟 )7JjpcNM]JP~x=!(8-@8KrfG`ׅJc*;8NYRJ \_an0p vYig)EZ2Jx-8@.-02h;uS/3[7 ^MFwVa]yl6p{uBSV޹\ 8}Xca,,a/Cuq| 00cX-ˢRA#9 Ai]5‚CAЦ8c~v\!]1U͏Xnef5nbZJz}Wk&^RFP^Ϩ6Meγ條kuBg7U,3JQD͡!QFL,2[24;`IZJ&XgdOC(4RA@hN!lETDP{ŁrnS Ynt TҺVawĤ<,3?`mAdnPg\ Ad%%YT6J2YU嫕b%N,z b$TpIjƎ:-c‚ST-FL"2'"z+`X 9u,'4NrLIBW_2O*⥲+>Ҥ%fl>oRYƥDrhpYNTυxT½u/T[*SZIR*$ Y|Tcroo+k RD O{_ !/:%J*< ]Yof]^(PVkDjc(VLEeKB&PI`.wjӝ̆4\8? ae1†"( Xu<˯iMLp+zҗ-IH}ٰ `n 5V%s0gf@5-0kT3xBmUf-z Pa6ÿ&@\b%Ф<4޽x& DLuq`( R[*ڼ'b=')R#T],ڷJnUh4 ҳ6IY+cJ1 p]f5ʭJMe41ҪqV7,j *V\Xd7\0kԋi<'{֭2\٠N9cAy.!CHFкq4dK,ͷ+oj81txu9VF5rv>17HRse^DJдL #N*вw>Px5N3 "̸, XF~c%Xԍ/x+"&DSrzvF.# NÝ?aO*aV&< Ȍ|CXn\ Z?L?l$oem>KRa@ޏT0%^qaV Aaa]\fIe؜5Aky.<@v:jYiJ̹cRjo0 cfxk;T8\,oCQJ* R(M[V*Ι&TZӯDm#4%>4Nૄ0uP ֎%5#w|A(` Q(JܹRܰ W[y9DB+i{5[ 1jSXOkY"` !Z"ɰ g;C)k wN*q!%jbmQJ5U RAR/0@wJ=Ữ]!@Z5T< `SU`C; N@`K+Ʊ 2yABAK# ̣Dpsq_p2@@ˏx4a2 J"KjS<ӁU: \X[[-TK]2oxY::T(+}lHG8{O?siOD͋8ԹuOS_]$u"J&D?siOǽHܦҖ=ơюӬu4}P4}FA-&. EUe3rrfq)K}*TR,+4ٝ*WJٴjh ȻR@j݆T-rЁ+"g܄)Js\-*<ʸ t4qfd,E+n ͨS%`e\ܦ/!Ցe)\"|t mQx橌*V(ڷlMSV( P)ep@Ye#K> 4hT#pQ&8m`qo,uٍeR[֖E[])ϯH.&2=_jZVЮk R`0vJ1933No*-k၈U0Ea\Zrc3E@ekfe~"l p A@EtF n)Pj#RjH ($=qK @R@dnZ2@k7o,f&&Wbm$JX}N65 Cwa bKdqó6i)*[Nj}tjgdɁlRi/5)hF,)0X!Rq1bw1XOIp3WG ^>tglz2[8f;.6|m%s¥}1OxkeE*T <.h%/**ʕ+ƣz.ӥvP+,P1ErdK9̶vT Q-u؉tД掸`@/]ZeW&g. C0\{ګ<t@.~Q)==ڽe`#_}0,]}*߷XPp3)6mld9lUkDg#W_Z~mrmQ\*zg^.S[pk7+=gn: )j- &<=T؉0-!9;׬Bի,Z611r,(^()DQh'#, BG,>{Oi( }@ &$r 68~c#iidrּoiB|<QbdFUM+¥J-p]s@kBPsOre^ԯ թ`H܋M=㟵rx_Nf`{` Bƕt70h2Ơ{w Y,Ƞ ^L9Η-W c=~Ȁ-h ۾0{a%hjilBʩ)*m@E_z@ v^D]%mΆW=wѤlT԰P%;jpz`ڨJW!zV:#v?ySg|ţ\tdx2]" !Do>^F,,ͥ^8rm,\3X]R.S#ڴV1[Ub =I,sNL" J8e 1o쨊FR3[8bP ŊVTs `(:jN,"Aefa!RQݓ5+DЕYwb4 i Pܻ}Χ2絆1YٮNf!:(ls9i@lo,q ,UlДqk4<hNR\fֲR}VZbmR DTL婚 ̦WSԕ^{}ubO$iGF?_FF?wrcry^ҥJ*wVP/ryk5J*TJ( UhV1><*TQs4:~ezBя|\zJ%-ЬjVvy~j&lf UFOn"%; oFŞK;dwV^00& J`fF gm+6DQv`'ff ,U2knC1>QQO?{aeZ0 jȂ 9W*^jEzQu\oG7+VKRz$4]丐82A >DŴٷl&̬lx3EB, H@oHz(%22" :u]+x P*^豪)ଲᜃ5Vu"p]0])/~K V6}1[OU\p1K{%p3Qi-{4]\0SQq^,K98RTtrqxwZ=URFs0gx+:x.UZĩsqoGQSP a9HgE= g:[@.%_>wE)h݀}1q"S ,o87S\=ͷ/u 5}j*4p(4 P'pۜsIm0lv.߂ 3]m nQNo4sr23w'0cya4lEJj,.il;2bYFZN὆3 $JM=JrhT-u:/yCXJucܸ-H#(*Z,#q1!. *z&T@ %A[S}%-*TlŷmtL>]灧vӳ%X? :J AE=b6VƼ+ST΁AVݥ`xWJ+蕝SK,B%Lca5Qˑ[0SxZח[lQ|pvoOp6hPـ!vSE Ek+؜,}E^T jkԸhؖ,aj`/fc@YE^2r.9Yur礦- ŸvK[Wb [!A뇛0BlȽwV {:} hi661ԹXp/EEE5ÊSTsܟw)YI^ut'hm.3=Y&5,ˀ3 *u*~ xM4K(Q%xU]-;38ʡ9Z8/WF8x0t}~_`PEN-KV޹ep_Qˇs-fE:ģl~b;8Q˄TSzvPQK&+uz X꫇zq7SwjM2jX-q@u%W#LT/.j\7To+hB/ q} Trb`] LΠv! y5/ځP>~zܠ;p ;"8+UdfߙT1eB{ uinUhj`hKb\Iy D|Bܓo[hd㨱(ƶ iX ncْ%F^) BoTRUe!cq(ju: )+_NdEJKhX4]AaҷD䍣j* m(~G],]^*TbDP{$FǠou,oD1, ~Ixjx/Ds[Z Vc^5rrTpl%U6R*%W9bN,c̬eFtj!a0kHЇ+y ̸KL|^PqrԖ go./ !ԁ^sF+JDUQF8f|5!wDե1ee^=ǯmEqC'cKJJʧ]Lzؾ\Y:iJ / -<8^3hɈApr KBETp#TS(_&UH!P03`mnb&! aˎ!2&䦎Oxf)4jgQ0p좮U 'HPB8@X/ȨE礬CNT bu+e#;RCπ]ՠbGZ.'u;gJSۡ+MW<|1 ͳ*DlFnehi !3E@%=>5Hr':drYQ6k,?߬S3l8 uU|"1ag2g=#*@^Z^DWD"x*EJ"Pzj`Wv{=b4{Ex\([ǻ1tx׍JHbFڷfc T -wWeàC@}b .VRѫ)sy7m^-o'zE@,-=Jb7_=pCAkoՁƶ0S,cJ9fS>& foTX_lP>%M.r܅/c X(a-9z`V9eV9bqeqT(";$b03}6QܔĒqʧfRp_=K2泞o)ZIdv XU/λ="8Ye0EI`ӴRLby=TnZ'[]/RkLa]I2-SFe` -qD tܚq)E%0^2A)^Cŧ|@ܩP5KMEo3Y{ p5+65]5*Lnvݟ^{{FZm l5^0UamX|}5"x8Rp4"gϿ 69&3r_3ĵjBL\.{. 52@p xׂ5ݦ++ U!(OyPl0p^sc"rtQ{0# u6m0U VtT^uIOTQL E5w Je*U-٣( Yu;똟1"ݧ711V?3BƅrFbX/VX!.[=̎kD{Q]F᭰MU<?8\HԮ8n>'T l9"( Ȭ_ug_ nn YX-WW(Tôaaڹ! Iawu\rd!qehzXr%C2 PD&˘*=lEЂ]('qkk2СVf $LdD+BV|hJN`7ikP n"KPU{~~D:˾e:P3ެE<ԭiѥۦ]+J4)LQf7CTXXݗ BfÛxV{{L|5e8Gh',4EXX,ΚzLAƬ(FKR`myu.>c9P4Wʝr>:̶md2SZB(VG򾚕ۻVQE_䛜R*řӗP9e{5D |'tlcbFR/<)]bqd%Ua<ՓZ"w1# 1UFp]b|Zk]kOكM+e5ugfX練aB*F*UUU+CͅOI;˶4[*WD"Dif[N/XA,@J)U4g @ _ElDYkPVi%TPcJ%TPUY=B(4P@:^ACjz#e2ml;cRWd:U8cQeNo_M*N@)N+`zf,{t 0٫↮,;%5jeh=6ȰZ-`& w܊3mֿl7cjk).0idV?3n&r`#VXPkII{EU%RkvġxE2w0JgaZ-|V(nG/6EntS ƙE՟H9ªy0)=yW+t(ShP u(6<-s v4 ,_;W*, I@*& uQiaZxUpb̶ְyHF0(_n3Z[}qZ8ӽ%Eİ:bK* *jL)wy-Y̸ȃ2PI^#zPG a GR4V-.rD&/"ڈl<GҬd+ZF4?`-kͨ].07&3ARܹAND,f8C(E`[JV P@jU2IZORJҨyiG9Aq@PGSspQ%. zUY$@-U7SdFrj̤jPŐ\H>p.h ;X?MicmY-[Jj7R1e4`"Yg,סӆ9:<:&eoPU#wXZϥJf LFeFjAR F[1.tZFEL0V+ڰs^b;וf1(a,o_FcFN[ZE5-Xў#:J@vU\@Wy@XSg a&Vc2Sm5s\ jYc$qB)]߶ $a# HŃ wM}BTBRXf#S \»ߩiVR""=Do (>qKJbKeY25CuuhT珠$H(aN3xAG );mx!U2Q: ;g;@<%mgKaH 3-]Uŭ+#q#Qq x~k͞14P~W^ _`r JǪGCN1 ]eJ1S#Gs8(Ⱥ4`(`E{6T)@NJ:C@D2yfNU+%HTl/W4t-Ėd`!܋d|G*/YS\牚hA ֳ\ LI#cR`PVmWм/EMop̡cD,Ȱ~_hB]NGpX}C):)֐r) N^􅗻xnYufsb0僃{#~F=%M.4i~(VhQڂծw)mZ$7"^X^4,Ck-€ #PU/`brYJ:CuMhP 1aihMPƀ+r3UĽV\"D0"DY,),Υf1iY"R#b&@h},ۓxbhŞdH (70?OUXض5°%_<рYСZLnUw.ÆWJ*TH*<}I*(Z@2ӱ' ꀥ--r(Eb;S*k xF.бW.Fl`MP܊@ 6U{pQjRb{D%!ޡk;턹V MBP Ut/rܩR}U*QZ&Y`a1|7+`0BQp-uɀ*bUvb^3]>a(6 \ClN޻**WoB[>f#>SZ NV-dvBSP-TZ/oG [-ҕlnًeĺZ1Q122QTyh9 ]zR^İ*,QKu UBRpjMv,\jT)攰+6Y/1@g%.\5wd\LeskAU*{:`Q.BJ]ؿ5hm%LeSE8 %,KDXXN"F0Uӌӗ џᑲkG@D2zw T_R9)pRsA] 3X@G #Y&ʀƐM슷>%հ06=H9xbDH+Ý;ΆbIBzX>5 U[d3?qA/jyv]PX ,Ǽ.KdyU bZR: @.(֥.mۭ[!@h2,Y#D6*UXW`e1FnWRJ+`pǑS(uKn[(MlD%q;3I2P@Yqq(JBQ C)Jͪ\ 5Wl f65xDP8mI!,VT@{*m[cw A6MJڠʁia494g Jӳ@SOk*3BJf>:AK ςe®EYJl{ElYArW30XRC|sX%M@|doDY^,@0[)4rRl)Lps©!f, "KXu b@<3% ْ7xoP0 u nss*X%[SoM u^AB™ 6o9RSo0DH"D8;/ 0$cy$a-^X\z9(7&o½cδ]l3B^sX)Hkag^4pz"DiB.~˂lF,Hе*鍐[[@6 @TaKor;rk*ेC pcg RCBF-JyE]ؽ#67uWn^-M(4lY|킏r=m@iS\05YPګ*T_MuejJ-VBIl/.ZץbأFc1PV"o8gŸ&&]Ψ 3a- Jx48+Xe#8%*hec|ܙ&Gk$+bo%+YI(¼;ʦmj%Pp^SeLhJ[#OIT.Af5+P%c@u/13n(Q#`55R%yn>T" "=Ed€/*QV2!CRf`!UtK) aqHAX k%t.X׫U5 &v".e$F@ccj\na-q_1P!ڜ]c-qYceh/4zWbY%&iajtČ$H$a&1`)Z1u*8u ԋj+Vmg;tfF: 8^I֩A @b% SSDB$VS&ɍ;=E|;>TIQ"DE@8a2SU6@e!U  JX/hX/ۺJն0 hlϞrWVbV9h9F* %@+k}.WLd%dW/P7jER_I` z3hiP8Km͖4ǣ;߅J+ƥJ<*ppǑRC;l((kC"( VX D#Et&tJ0k û} AP;]Ѻ%И`#T`6g_ɔ)"UklGuNJpWkrzHYu:o2.Rrk<ÕKfXuv't!.t ;>/lNme:EjHqZ 1! :[;ۨb-f#(|8&3ˣtfPTDъwԋ Á!20D+D=CŰTXc `/;"+[[˸b%Z-t½1{mc*uw/^'UDHF$HD1d0A6RnޟSS+εY`ڃq "0^,}n925+"@0ڋzf3f,UJd,*w,at86+i c\c?$,3sY2 ֌2q*mll@-(-l%0MwֳU`Y@U P߮5-FiŴfߵL+(׍}8(Y:QRJ R)1YFZ%tĠ@,JDzPK1Jr0&Q d* k5A&\PlNbg!^L ܵxMŎx|6XEjW%\+L5SWe1rpq QZ5ݾқ able6Hy[B7R%,WZB=}z8 S.cHR0]4FN"#Z[ؐq$uKlT%p QkjeU" .m#z%FuBTJk[. (+z^Ia0-,׍)<٫i ,(,Dĉ0$HL=_ibx %&_[4tR"&pItEr4ޚVHRޅl@Cp|0v6-њr ٝȪ+` q$Ig$z/z/z/zzD xG`:/h񴭽zk,d"↽x -N ^c&(u{g T24\k}X*![Z-^C*hz L*Q1 *0*MYzPˎiZ*[ʯkƥJcvbsT^%JϠpfMKy6ay^g+xmB[vK(GBTn[aPVNtx{]_ 5ie Li7 \FVuXAJ7Gbء5UH4"ieQzߦ&!.Ozt؍̀K{?hEocXp)K # `RO."-om畀ztDŽSX]NE`\*0% & b@fKu8@iџLnrR -DU#PjGM,UwYCXNg%P.aM۽66ں m+Ql(bl,3l p\P.`]*T 2mWR()$H"F$H!NVR#b=D҅_.\j'9:ŕJcˮQ(DUYEP92zR䓌/<C SJ"\+8-r6[V۸546~Q"D$H@R@88JiۤTeg@#ОZ]em,+ŒI}յ2{MTp$jiAV|0&[P{UbRm^u- >w 5אwYx #"ȨR(pf.UUU\G,Kăf8A0ZĈ@F-B›RRBg"]}ǥIm׎oPw%M}5P0AjԻF(QPrlzqY:A ]UХh7B+qU];zD ]U|G@ .$F~r]ZlqBx+p5vrU2(f%A v]`SV+P֟A7Qa1Nix{|*.Td"MN^QjQ@ƹ̌ Kbnu {ٯp*W(}F~"gI28`"j^IEMԷ-E-xwUU`dV 9SM5QZGKf6a6QN hgR"Xkn)Y8'MLpGKO@F `C TU <^sa9Bn֬BWF e|&&PXCu3@#SMດU^ūo>blVu$H"DJq,n%kYGPH[ՃY*8ԑO'`2'R|K`nu `0czBtSMD 6lJ"-Q[HISev\1ot %_ *P J*TR8-Xb8J*TRJ*TEi hh}- 2/Bi,hCNxG g2=2ATP9Q6&:åZdf.-6׵<ࣉlSjaf\lmB(XcljAK߷aw42qtYᓆd6[]nZ1n;Yhw:fų9&"5Q0ዔ[΍PSEpUF``!]7l9^'#YK1&A5VJX 6ījb.9otM4?K+@D*$H# 0/P. Z"xTO+WMm>="Gbc45Fu"-H%~$%iOVis_zd1Å땣T4A*T:t$Kp7]˂lTXY57@y+Uu%]m DE"(D i4˿ FKkhg{xx M"tcQ`KfNCMaCelv(!D5LغO|w߬iU)DQ|)hD0:\w"x$I^$E(}\*];rĥ6ӡ*Q@8t57idWxn,Z(/=@ (5-UCR(.ZĥwED4u_(h @P J*T^ W~i|cRJ*TRJiN[2T榀2(Wkm@W2uL3rs+t[1^[p]T%D$H6<=j"*U)Y>.dyj%Y0mbb"/WkZ`B&/|[W: H @ 96!Q>4.n܅ UP jW{^5$H"D^.9WiOO<9wWouq\8HUu8*Oߩ #x"dD5u+:b_æ\ 5j;*'fȍb iq X"[ra^L谞8| | R")J, _&vr;8(M`KB{\93H>nG:Vit8&YVӕ"^T@; 1odž4#ζmktfW*T @T`놗l9^%J*$H"NԼ?h%PAZP$+Dθe-X4@R:lq x"ZybϨh-0@bL*e{5-ʰ-p߄ʹETkΎP\Ukny7@ NӤPae(Z\_?`*T @y;NA冪Ax*TH"Dgkb"D7b5&@GFj pr D10,tɸZYqj6^bFh pkXm[rYPm]6)_k (1Qw E`c,$X_X>&`;N]vjbL%r،d5Gh X\548вTXM%4 XTf@FFxNNuTR+¼R$H%CHiׂx'xD)mÁd"Ei fk26~}2; ̅[gv]P9ѠV, ʎTpmMPX`:^va.<?F%`H@h,5ھ+P T^d,.cj&dPZZ%m@XyЂQv1ƮLJW0(3Xct(*e+f7+ @3XXx*TH"D$E"򬨰$cWC @ @\Y9 *TQ%Dr]*GlB} /DH%`6.8gі$H"XiK{wl'mh!|d w֏TXADvqbS| `d)2U%QGyKpVMr J3Ez/oF,fWQL[ fG|*yR@TTj0A J JC5v9i6aEJ*TH"DQf q`1! @<m7*TQ"D'Q'>E qP8' H5/ucBD0a2"R&ܕjqYg+p14_]VZSʞJj}w6!?oPpCYeJqQe_RxTH"F,?TJE.K+qal>z\YM`_M!ΡOLa d@6;Bb&bWM,1o4ë^}f"`.R8ΡlH+ƥD&QY+T.Y)rqAӁ_w%T!iu7sG K<|ZߘeԡFA&EO_;R1z=+Na0YoJH#8.Wxbdl. ¶[ܜyn1V>t^[]"~PCп<8_irWc֐8cA-|?Aqq~ڪD0MG32قƢD-?0\&+9^B;}SmI3~/V7" ѠD4xS gn*l9p2 /Z^;%œ{}$d_lr3CQ"D?Z @5ag*1yr쿿):A2R/w F_!A>:j*ko36 %^10H*\i!=>ˤ2'f51* Q(Bz?kXۓYasx%| @𨮡S@Z/+̐!EĎ]1/ }.%TbD P 90{~bz{?U{ ofZ{ \bTW#UgQqO_A*TQnk ?{ųjstSM=30y,Y?e}2J[$\XE=X^~gO!e}sWѨ?'|2h2İ{A_Fh6eG)=sDޞ֟q:C_<t *YU5g-x~>~B;kWW?m73QbհXԴ3=|@2L& B=r'o542!|9,?(^ Gp<~R `_$Gm} -?e@L82 K9f>~ q'*r*|qrJ)RGBL>%rxLwC iEpp#Z,1<,KEx%.%x`Yw??'my>oM:^ O<ŭQ_‚0نU}.$Q-xbix- %e1UʬƧDAm*p2'`Sv8V'5|g0ơbw QU-J"!p bEX:-oSRƫr*Pt9'hw:',Rz^/WiIU_0k:"KȧM0oD8ߪ`B厸%H'8tP#^ ®+Z*8q @X9KIkI^VҹD h \[ĵVwVQ+3@4ȅehhC|ì%v XdS,3 &8"?۟]f2Ɔx b5*. !Q(0jpΦ+'ne3οiMhȘg#r'+e`9*Ȁ}hktZ0E,C3b0bjAwHc\Ppo'ȎUKٌiĚ`q 1gC qmS't'yu ṽ2_ī,0̫Md׺+̕ne$xs.kpGtvWj>ȸg0n@mNgCP3ci^F%bo6D<,NH+70!sk-FHhfy{z?}Ѭl>w?SEeLU Jo1XvkUԲ΢˘:iDx誖 ]R ݦ@,<>;T.%lԾ%!1cQHq@SRϟwGqs 3t@%b%x1s:yJ,ԻnTsm:D3aVF`iv)0f%0?1S,Z !IA/e(XޢYZ{@&hws(\7k] =`" ~SAoiT;B+mFeϻ Eȝj"w-&nPtF7m-y+ؕ:%Q^R HX6F>L-,ᇊt K!fhџ\-ڢ^j*PQOSзgQm (Sj=c6[eH=&9J:#%Xɼ,+-0SLFTDd  ?q(}1`;zPy~5sW(:F6ŭ+Gpe.IĎIɉ@{7T,'pV\U-TJ R?n$`Q0o+Y5&X32)e c&ZKl3s-9Qad?jMPx?U%~S(YS]]cGV+k2*BTo1\nW ԣlʜYc¸j/guwdžǬX|dz)d<2ì@nYH\{ᆠYԽi1)ޝ9K9Jh`KU[f+tz(|UGw._xb*cڿ:0fo2 31Hӈ>aQK-V MߴKb3>bk316/].TAWm>q%1g-ʌIm,㘘51q+nRKECA3Qw-~eSUG?k:?J!G{JS"|J.3u@4ݞh(Td7P\J0p>UxKzzF +3dvnYˈ+j@/Dt_-4{@'W Wl`|gOoO(i mـ:/F`$TQ Usps7%1n[ .[:3lJMKvKuG{Q0jjY25V/t[/Ho05[b􃣙g2g,f.`6nc +k01}MĭG19Qƾzq#')3j=q5uKwūy;9h*.[".O1!VZ}3_yN?Ȉ$Ϥ#"r/|3y:j/_Ĺj0"1#L_1k(ozXgZ?ow N->#U q#ZѨAgvNY]hXܿYQwasTZ "Drd1yKWPWPNtب_7+W{-F=#^*Eq< 2x.mu5/ʡ5ԣK`d%9sQMT/R lxw<RN?ZQ .[eqWs"b)'1Wy@jy 6X29ɨ [ksPzWk _^nl~QЅ1w*|̵*fIU':~WCl7 4j:楝NJGrA60TV81`Ep76*)㺽`.OUW3^u/^eTCYt~p9[u{/1yĺbd%j"QO9zO.|FJsB7F3Wp)o2t|ȷ;KEV?@jy-jyjgI:okeW5VFo>yѝtDgB~&I,d}e@ndG3O8uͅMLi\]#QPi~e%n];>n_+֥`u/SU8{CzL:(_sL\[f:ۖ,GC_owW*\|?xM=(.]:!@״&'={M` 7ˬ`uNqh\Tt#l3H!.oL.=iZGs;ߘ&:?wwydzA_.߆Nw0n;$w~M/:?ض48ϟ$S8{MQK4?jE5PX6 76WYJL3,*uF=bec;/AȔv|1_:(~v>ݫw(?Kqs^L7sCD66G:*'Ox@ksk?x'I {G=:J}O,yehO$y'bKUg8 "nyfVb4TB3m}6߂CEOۜWpQs>L|αsy!&NHP7aVg;G5fs1+ݏ N#{l GEg/?D" MJx!!io8??mo?0/ݘbwL'OfS1E7{@`rf>w;͸Iىq8 No-gǡv>N%w(O &y!s- Z<|rs߂)g>*THSي)b[?0Ay sÑc$ T//~`8o7'l&ˈ_x&' {A+TNcVg+} &Dxp0hP^c6Cl~z-N{.1PGoBeRBz<@*<$+=[8 Snէ(]y䇟@D 9( "%.HdE-RDx}&o1^M;j\3LF𠛆Eˈ;xt EA_M`WrJ;C+ Q? c'e! Nn"oO=DD.2Ԩʴ@d|4:C#vq#q%Kvj#&Gh/J*Q>,a9ѣS%e]p}%L8C~t~<9'%'M a:*^އG9v w bQ;ѽ\C;qUN8J v NEWȵǀZVDXD_VD~}% s"Q.]QVE08f4rwT xu.5 6W+ƀnG ,%< OB,.6hpe*2S+ʿSn+e}.ԭT1z)ܯegjsu;dQK[Êfj٤n|5&ǖb"DbhmKxSdc-N3q1LGS~" _W;e<S$Kz^eiXJM,^{#=0 z.+Xf/3DžPjdz͗8?Nn(֙ޝ8)ڀi>V}N ~~sCo0}b#N5㱎>Ko!ϬQ‶`nbs~YaCqD68%OY-uDf<ke 'źpLZwqx![tvUn; ΃0@nYxF(W4WPg"v1!RQd=cG{e>&!7&^" 7wM&bWFᷘxe__fY ke}/o9mҵ8|\t!-EmR;~-h;,T.6ȘSl9nz 4ƓAbS:rL`R33TNiTirq)R7}ѳyc<"t8z"zA& KF(j$CEDlAϧsmf%x-5O,g^~gig apƕDJ{D*#Wqr1CS+&MjTm + h8s7Pec/Lf[yNjR_qTɘ&ZO6RTyjzbDqR 5_Edk7{gCD\T.cxZ#Haw@@!j9@%0@o2¥P Ň^[l2Z V&:=aju䍏9eN5)+:H&,Q jQCOh͇ʈFr"ĵ-mK^# sJjg9ey{| ADy$_ Q:q5+u2N%FBLcUw/ĺ5.WH V_e+į M+9S#CpşB '3YhͶaGԀY?Vߡq]Jd3`m%D)0e5ef!:1raHj.l5Ҡjw"\Dʷodߺ0Pʊ |)uLwf@um}0ߍyj%Wڂ:#qC^op uDɮ״s?R:&}au._ө[:cQ*%Gb`A,)śR+}k$aglAH[(Wxi f嘦QFF+kB}bNc&Q73_4@^a4TtD(jH)?e JTer|֥ouk꽸n+8CGCkR3?gz-:L9}ՅłD^5rLCqr5y`Qn%bwj aD}#+d!LDC?lܮryA|yaDg0cY}O+X:x+!p ݒ(iO띏vY`O2;;y`~zB琿/y B琿sYzojrayx$ ºJe80PZ-shk5<E`'5TYSn%]@Ly j1N~]S(a0zN/qc!<5TC#EB)K}P:!O2Vy ^y@~T޿7[ ~ *0QHvwgvwgvwf 6'vwgw Ss}N&] v2TDɏQ#cw2Zwsu3f|O.c.2VR. ;یS%9 "QυA:\k"**(%dp? W_@l᫹\^XpA۟RG&#c*[Wz}4% %vǻPoBFq(KGtQTAIj,%7π:&%N XSE3%,K~>q>1gw873F[1 ڙF" iVبha%ThC."j>`yX+`?n:n~(oBk̚?x/*_DAep =IJ\lGmDF i#Z#%UQrHD Knk^\ חIVM8grUBM K#+j֣^b40mVlE+*·WRʴaZ5q~tb)3)}#k?s;?s ?ہx&gcQgPDa,$ ~#^ AiUhlz[lT,zʡhpYzJ0ֿ҉KN&;g2؝+_yљ.KR(@L%+1*#2R*w)vf9B]G{SLR5Pg#3&ΣCDI ]oh:g1w̥Wo]%qNx6FJxg]>НthDe}vEAkEJ y}5H=ݸL,G=5mb*AjF["1İ[b#:fK02wc35e9*bO>vPt+k¢)_C J<+fGu ora1CQq/nuu_[8Lk?L] fX4kVi@rx*!.M5a)YJeD:CW#J5ׄ{,^?h_;\jĸtaG?ب1)s՛{9ơE =ak+ń?+nD*,_3e=yU*(FefgN{$t0=Ru߆J&mba\Z#jKMky`41 (`8s16fbH6C¨R!di%F`__zx$ݻkb-湭%}%wy<ԵLf!P ` `<.W~ظ#/%+lJ(j+cx:!kCXO3,XԩDg%U\ߴ4zwӿ㱚L?F+,V|SDuӴC2x>CQa4JNEK|$'=?>bLq+a%>V<|jWcd]޼ -؉ 7,%L/*@rYх!]^xrni*K`_siVuc9@剝k6~b%|̦޾'Cޞ#R*>j=+W9pc<"wy`!W.И<tj-?Q_}qT}xYyx,\{N_h=cňF Fm/%Fi=nPo ߟ; Jf )Ck*&fr(PrRp%6#z393| jek܀x-?t+4B: |M#?0- x'}u/TUܨjK>"v6>,= !`cdG iN.%xIfP_߄D;LZys6 2yVf߆ ͈BbǞ?>(3('Q9L,=p1cՏ,ݿ>jɬ )ogbX`{oݙ.pl3#P @^5n(UKF܈}p]!5G|FV|3oWtk}ܪLCcH`7k"j05[l-ag?(PaBy0i܈$-P˸QfJ9 L1WA a^0&Gecm/BT!=akmvFGƼq@?^ĭk2)tlߟNQo'T _V*sP0j:z2Ab_r@4k¿ڴ g|i*YD6|Mhب,XR˷%eB8\G ishDb"\cGc>OyC\f AQ^OjLF ;Pj0q 6E;5R4f1[zJD>ƠYS _7P0{ 0#_v]Z{Mwc_70}b!-i K]9kP_%Pۧp_@VaBYa4@σYHZMSHP`hAL3Lrgv7/J?QfM@2%Q3D0UI[r9Y`>/2}}j4J*8l+t`y̸0+Qk8cbyឿ^ºvnA4+w^ơp@`a W\rV[\DJtL!dIJBfKYJOkV+R{ƒ|޷+ XÙ~E)k |@ /mz7s81|IKz'J27q|Z)Bss nqU"9t2[pHV%/r([7u/3 =oSY^yO>Q쯅'Az@`z;ޓoc<INžk겹4u/iGcQI[y.r(Crg8K_̗^ \0ZaVF7 '8sN# eĶ]XVYGQ|as4e HxfpK}?Ɨ^:C0ro5'x#{% J 2Ԩl*;H 4nދ)|GxԼiLNPD)BƖaJ1ǎG_M}Te%xS\pJ>^A8( @Gk?At:Fn#h7 g-O΂~ATn uk//W|$=X+KK`dL3#̱ J5ohΰ)4f2k$pzy鱷'^wҎ }#%=b+ϟjp6r/1@N}<ߓ_P@eVb7X~ϟ]cka|-W|[~?3W~Pdz,Ncv"sCGRNWrh̺LJ>n`{t~XBۖ(Fߢ}5^?KoWwτKQ)8ls<}ϓWP爃 lh͟hcd(ZWc*ZZ: kWyzԵɟ=@~`& L8)6 w>_룯o@^ӈXZ<y2Ԡ?1NltZ.EQ|?> "~,O4HJWAWU?QXƹ,N\}K ?Ec?[eG{NrgB !6+ɛy|Tx ^|v_JQ\?Ow>xCq;(a|!N{t/`~|5ߓoCTb:zx睼7 E?߸JWWT^?orF9fO u<׿>kܵ[+/x1okmyCkq[~q*T_ݯ~w)tw Lm9νp}O?qX._ oĹr˗.\r˗.\p.\|.\r˗/ܹrD,_˗/˃t˗. "/˗7._,bkb%p+_o’%:\T!n){@LÈ vĩjR> Sh&-Y: 81qrѣdtK]e dy>:T (leAu~7r U,j: .wDwO?1">_,gԀ7_9٤2Խx{WST)P"鬑@[b:`4wp`W'!%+ɸy aO/4h#zWp}+( uWdX/?Gu=&2w'24Wgfoǵ~Tu_47\ %r,G;Cnk*-fWʡ/Hk̬<-OU_$'_F]wᾟˣ)=ɥ~?R߁#L`~ϼ[cRC?8fyu>Z[&vMpq_p _dC*Z)ĉS${TO: "혾b>2Vsw߇hìj}8_06p1=Mp$`S'@:;O勶3Ao?%/g˙Y?MJ+ZU}CR e&Ig);_--M#m#Xcܢ 4iY98epKHn@m[sH\X({l:ˤZr(ɘ{DgdOʁaߚ4Eח~V(|o%b']_"W?i=X~ĻOԷk8e>]0/ }uawg{J*%|wwj,e.\pNU,* _U؁3ev^=k倶g=ok0Ef+a/ k n2Nm-'>ɍfa; o{Ԧ]'=ΐ{_og8.7Db\>B0LtX]5?H}ءZ'9U~2dPOMcRU6=H&X Ӿ>ߎ8L/r8rgsNN >̽IVj*cw,`M2ǼĂA!/eJ\7Xݸ\;=1+G?t]9pnÙ=s+~$koF>fel|Cn^'L^{sLV۷^6j5_+c!go܁sK,n %ԛ&J|RgF8 mt|9t+/=B\O>,)2㤧.10 `SL ++ %<2$EjT: @S0UO\s`\p_s?E5YW *3-:`?x_MNRJXyu}}䧤,HDxRv_=s7/У3k!K kI)Je| &W )+ -3ar1pP'ajNq8o> yCOH(J \".Bz1ҦWƞL0bx[Ԃ~& -'@d )#*;QQ.=^?wnȨKhk2W̠QggXªXzJ0{|Kv~ߪ!1x$XM~^XoPx[]%E,*czL8%R(Jf[i-i=/te;q膩x6wY2D\EwlC Gdj܈+얮#%aeyJ/lS,bMq"?ٙR0嬞ef:C:%)^̽!en:iw'X-oO0fyQL'>̯:BghwEL ޹9?OY9.>[((),CWr˓?Jd`&1XLv"mnN8yYrg+k?poFɯJaޑۙrn:S#˄蔆4ŌJxQ:J,9鉌sKOT%*>RJ\7U_2'8)sF' j)PR"{!0cO0aR!#hq9c෴{0u{:=t1J~U+w^h7¸GWUsF7_iN_xۜK!z?s<Ce32TMgeGf 0uTK6µ"*5S+kS_W *.#3l~bn§~9CY\–'F(<KKcxN;?u;Zv?3;Bh;?,ܩkSN,8i/<ht3B;yMXE^YHl:.^wH| rP~f?Tj{W4n6\Nb`&A[3Dg FwN^ 9 v=[݈^ A]8?&`و/n@m13X#ObfS3'UYr&RĸkW;?x-Շ@C DJ7IgcS]S ';,MoC'wf]'g坟bVr,bf2. 7i݀RDϼã9ݙ_9Hd aQKh5hi3Qa<&r\ffX?0G`#3~gB+M{F56?3jkf 6u?ɅAZĿ67D/ݘbw\'O̡ff(Sxf#w Bn=vb\Bi;DcW!@'G,yy YRUSH >6RXlDv.ي)bXO:2mZaan$ T./~` N M vW'G6Enp4=:o9frL$q"yAeaa.%mKge B[Z/f e޿RHyt(x)q&)@) 2RnT*hd$'0kncvY%vb!LÀ3/y|VOiJKYw@h0af[_1Q[`\ qf7?P%Dcq4L(VCf؆g\v7:lf#XC1+S$.6%pO52:Myjb߇;y/k'ɫMUH_W [fn1GK'~spqRa]!tJslGgl^FeχMML*q8*iī01#*4ܢ)oQ"AC0* 9ÈlDi51q.=0Oq@URecV.-YKVaOl[}4y/_W:j\FM1"%wE+rH$H1,+*|cK'~wfeHHR%%iC7ǧ}ʅ %@LƸCܻB75:OT|OTBF_׏螉LxBτW<5DiO%_S0S4 y+eoXΕ"DsX-}.ͦkir{Mۀ(1a^CƢDo"K&4VQ,2 l%/¸aje.el*b`RPu.-NblJLxsX>Ps,KIix!Y$bnuVO'nh>Z^[12֞5vISw9i\<֍mG }!ze@(i`T, EC1.[\e;ndJ]D&"Yv S-QǸl=DS2ZW*l.)q芬PbϩF,߀\akO l[y+ZpF!]>}n.-Oh6+1%-VM'q CT 2M "+«$ K5+La;!)9cdh1kMpnX0g|@K /Ɉ#%}/,R TfoDYwį7oy|_,bCK5gy$'XE~'X3RE0~ F2f$I~Ϥ޿VS-w{x\bkϢ'xs{@Jʝ*3"(f J8fuj5KY\!nZ^MuS'-0]J  E>ŚӾRĸ/n>@XrEA Ls(iYʈex׎7} _R Ek %\Sa̧<@$>HYb,k!da[26bŋN#a2 b? )J5)Jgڔܕm~!+$5]" T='"hbϨa54f_P\g8yQ_@y}H-G(n]ooj\"ڬU6ީ&DIDrcjUe7)5 XٶT7,YU&oI-_JEJK<.DSQ^ :D7-F=Mw*g~%]qMC}E7la2f%MxqN?U'b`X}cQhdBiHDqA:PFfqN !L(Q/|p \fJ8QI%'>6HT&*f")4uf\ob}VȔ.> rLR_Pc>{⑑Zc*7vhnqD)+g2Ӭz}`rU47Se"S׈So?OQ[VWY21*Z}oC)hOQ -^yg 5}&i$syH=bKjK K"|®e]Q̳؍7XUFa "iw.\ȴ̪e2!yv %!wN9[~7K~H0X-?C_Zi'Yb[as "|OnngsвoP/Yq[AZnFǀr¥+y𫩋;+^FzbXK`.hpZS)AQhk5n.,s.0į /DoY =`rqg1QW&A_2.5qq'\ʈlB9/Y Xi]IM+`b;̭F"ׅkQ3eAu*5/ q_Tb\4.%p7m.e,Dv=N",=9 zS-<(ظ btĥcqQpQqtUGP%UڸuhCZ'>% *^eE,-T! Z+N *$#2\%FUGb)1f*Eyl>PAv;yo+?oTeMŋx_\EHƮ풘ve0/kpj4ϸsqRAL%Լ\PUY3a~8Ya$U !Auz [x!b o _w_n" Eywk1鹘˼"9_r\1JH~A7;߅Kqf5EoCXҺAa RH=LZΣ;UeE@iX0Ps`}c-ab ,M̧Nja`:~\UHd?Jͪ<'>O?yo$y'ܢ̌Z_M^a+w)#}(q`(?:D 8gLjĵLB_-1&OF[bKqiRA̡ 1\B-m],4fA:_E,=wOq |N3-)kRx ObQV˯ϣdޜwpMd!D*fMXP1tgs#m0\Wrn4k-(uKw520@ŠAsYD}azDu!tM*0@f~*j'1B!A`]4uSz~2{rYW%9Y]T+scWvpj ĹλlF1,bV``]G}jPXpz߂)L*T~7acIJK6c X~]pj\.\:EQJ9XVnwxۍC(Qޏ{n?q?T7Uo|οlXU{KۯթNZ&gN{YSM ngFcp0=|'V/s2m IrbC.$S0]xQ D0*" ($˧) I݊w }GX{py?2\95QBӸ:QW^k%8:;_5H1HAf8u`-pKLAS/ҀXRSk.Q,!pA8iuzKSdb`SP\Aw,5(̮a6]CA3c+,+:'CVnwҙ?nZۤp q}'^\=}75e'5QD~7zTB|9+*B-湭}U\G،ó_7:xqGEw0V u9L"]tĨb՗ UP)qc</;eŸqtY`toeߘ];hu~\LJՎr6cm-vA}RU KFAbq 56 jl8=1W; hH #3/PLc-%8 ǩR|.ΡnЭ!^:<\T4=o1*`(&Lq*Jo 7V\A>*E4_Su_0cLEd1gK;x,Q/迬cjN6ߴ};yEnQsw:@ ?z>9.e3t#:TZF9E|E%#!%Xׁ L0dA`ř*V%~,bb+b5AKoU@ lt`A+pKSs d)+ $ m>j_ca*o8_2LTtwmKޜĹpF9QP]@rÒ7&9qHD!k_= ˪_bVnTcAIa`pe6QSi<}eDMYmZq8c Q7k>*WYbq9s8u)DPW/"2VݎbϠx'e}Yˉ v?&jYD'gPc:B=GʞudžCtkնղ8b-10!.23.cBM,};` 1q 1f]PDV\M006f%J%9`S @KKN^F $la;9fӘKqL\:PjDJuFR'f\Dĸ:3 c_7'%Ů;bArzu>1GXoO^5VZ p"^-c>r{KlLrt|}V3Rz6fffb""W{7gKG+` Dq5š#KRAhX [f!jT:1rػ\*s\zQ29秴 fn*Ne +T=W9ߡY" " "+mn> #am˺bֽ;d8\%72`0u= `Y_`9g4d~tYLF݌;j(׀o맒.ێȸb^A _ 7%p |F.kF6KQr1S83+~k" ȷ??@]vA)tvlB)Ȏ7(0@pݰgu O {klo|89}ΐP %dL0x ӘJj-߂$j:pPA"P:GOq:^% cH0ujZ: ^? Ln^|!d=1e|跼sZ,qo"2p T`5,ε)"=515/sfz C /Wٮ?FY5,"9Dx'Im|1)e̺!4mmgA*Ue}P[5?MaZfrc  "BU:{i02U_]# VC"KucO_rM1Z!\2ݮSL 7cWf̗,adb%藙\üHu*,A]JTS ΥA"0ES+pCZ]h2w"S0s_Q/Wٮ)һ6N%]f*6u{|@a=K%EU,^Zŕ1=m9]zt4l&RϼMa.jM0[s.KC1x)0hg ]D!S{|Ma0JNXDWUxԯ:~(%3>.yC cmx?q&(nY 5(v[iׯYH :;{C>r/E{ \)_7 @b\q Mn"{BƭFf= LnTE;lAi7f& q㑹|"h^ LO>HW}׬F~NAƣ7*a/sC({{iצ/)_~#`׈T.׽_O Z5ӧ M+JEm]ysb5+/FdrRJGQj5 d6Ǵ> {' v ӧX^wh.4D9רܭ\!^F':p('gj:{K|q~P#RSr)ey{l/-čl`4\6 =& ]`WԨ9ʕׅf=ݯP:hztgų([pu ۹WT}P-~Ya=,>\a</[XG_(TN,ϟEXYrrvc `?~2&`]Wl4ߺ u:&Hx-5_s׬U} ְ˝,W 3puB7q3~j._g;:p UUd[+OU_T7a3-З:lzK bev;}:{q &Өq{h_p֢}O&o:óa0ߡ^5UC%|@v<s1-}ʐk卶@džet}*mavHlXEB78Ýo~X=_T^5{s&ms6zwhjtMj|9)qZłPM7\x}X >z`{{_ƿߺ;Uwr6Bcm;f~eΘh[U?Site/images/raytracing/ocean_petit.jpg0100755000000000000000000002464407312342126017102 0ustar rootrootJFIFddDucky<&Adobed `-")       ! @01"A2p#!1Qa"Aq 20@BRb#Pp3!P 0@!1AQaq @0Pp |4(P+9XOJASz&V0a1EQc`-R)`TRVҴaaEX.&K`(R(RR)=ITC]QEF(R)hXJ8@JSHILQyQHAK5V L+eA` ( b&VHsRТ8E'd:9>czB1`QܻA_A=> σp&[Lca>~G:ںRHdY\r\ofšbb?7Fǿ%tjP)5X14# 3gKz|Sht::FCDd-p/S^ewQ@6X/աj`)?~O]` D`x}S!J=c6H`Kxg˵^Iӏz/GL A`Ҋ$+Ƽ'yћs]g_OSB !Iƍ+FW)cۃ\5udtz{mJ$ #Bι!ǕB^糿k XZaF)hٲ{rν.4h..HxxJdGGO;>-7yO ]d6;:c*&hnDz۫\Fs}-zǴeK"IzO$I$$N6I$$I:$ &I$I=I$NI"d$H$$I$FH=RI$I$I qNBI$I:P$I'Cnrg3szI$6I=^F,Fyh؂:݇sy)ƈU*7_oŚ2|Տ]^'X =V؈?-Ť$)?kŒZ|*pLJɬb0E.2#[*w ȁL(t.WJs4V{-WTӫj-\UY)j)vqD ,[W5-ҥp;R1E||hkk:l;)-6;!"6+Kږ"%ŻH#fgTOIVc4MX{8kf~XG$qJfYZ,U2O[*rkxӥ[Px+Ub76yB}p['MrZ{൧Z~H   %   _E?Ň`r,KnՇ%/baӭT^B8#84]~ľv"đ?tGJџz%֐$Q12tz7*s{wuKY'jR(I-X}*z뚒\uqk#8dPO[|YO[aqo+ߵ|v*+uj$lmW8k{TYLGjNP+![ ]Ǒ ]n3C$sޜ??.A6"?ȗ̟Θ &LH+!̟fgI)C2ۤjwaL/LWݵ:%f6xص!m  nBO ?[1<186x9ԌKA`CQrҋ̊Q.]Ui[< 7lfT+x~q)ډU0I=\fܦpLz42$i~dxtpT2ШMXmZMCbUVf]wh˅FkնAz j2'SWѕq5AFIR1J#`i"HUZ%)o'h6Z8iHr>t֋z:j#=Ufjі Hy=Qr D&iQSM.5S5Yt.C՗dܯ>%YjeX(iq>QJZDlAQP={n#;u5A.Ka &; +ZV5&tfw>ۢzQFʙ٫-Wp22H@t K?!".  qbYra".q (.`-c14PCtӡA8`3 ؖ53Yy *1v ,}(і1!QIf6[-N>̾Awph]0S7=3|H֞vIMWh>T@LlW00 P^/JhƏ,Li&lTV6YD1ֱ6ϻ-9ϫ~e2BG,lH:>nWTgY̮exrw_(|nS_a&"Nk4gxQ )m j`+P&MdVrKz'(KxsnP;7;芗# ?,)t-{]c a{J. nNs~ p$peK堧R*^u-ާq?>&ׅ{ϴoMvRtm"\B$S`nmá(+x%^b%;X&Y"qZ4G>aX|H/9aԸʃtD^m5KL@MUf=BJ4RTPiܘC(Рi(#`\W')pK{&!+f*bueδQ~i}:۬bT#L9@Cˑ6L2Eg]"ԷhNى|)b?!.__ܹARJ\n_ùƥJԩ\/Rt rB._ܹ~VԊB7؍^AƧoL_Ep6/ubJWT~ywZ*WJ:_J¸W>&J+ь诡aODωȍ˗.,˧d}.Xpy\heCE+|kpf+#Q-ޣ|sL*h\>|@>8@o0!P%ɨA&llˍLCeAg ?8]Mf8 PDuJPLDk) ?!`D6VFO'/?P%hQ%q#LzƄb83MTB#AѫF1ҟ%n\XUh2˗ŌxvZH2˗.\qeK.\r˔.-3r˗/LEorJhZomgem0ɬo=,~w#ɽE}^I|K#wwΤGxst3Lٜp&=}T kQ&%fbTdLM`9Z3Hfk60D>6VT·/Yj؛:3hvRI䜓ޣou~Ch=Zi1_9= W.h(;(*fCNQ5-kxU]mGDW-__VW-|_q9LZk唧+\voeD:6D-+^ ez{@Tg5M G9pFZ 3+F?V97l9]"m9Oy=ռWdl_k/!{ hB;^:ۮJBFθ6.:F( U|˙GozPZ|m%.pHt;`WS)rn^t5L^*fA;x0SP7CwIˀSRcjzm+]Vޱy KPDαkx +Nb6f'ym*BW<5FhsE1*3YɥSaWUutM躲capÑ l ͋mDQyq7B(i CrtW'ϻ1)= u|EPX1ܨ1[ :뵯c\AVUi#kB;: KKSA,ҫf`jr` O%nsd֨r*}&|Q)@s Fu2piiVDIoMnTDޜƂuĥp6-FE3vs.J-FRƙrPdM/XEFA@ƑeZR_Wa^xzMt$&3*tiTaE0Wf,&H]fYw{F8nNIӫ-XâW0KYe%߸M+k2U7Dju^sPB9{+(:W7aLX'C2땗p2G..-  03[4wchIME4Z_"x0j>rv%,Rc\Fp̸zL_c^DѸP*xm EYk[eL#H]WAHU}Kn$ߗ Q-*^vPPЋH2cISP,W;]i@`e,kR7Slhi=ZEL5i? Bd["6>_ ?2@ً|@ҡ3HJUSt1"+qƱH)H ӊ#NK)!^~`Q蠮ljZ]#kmP uY{O /Sb\ -cdz,#1OǘF C*zc0ND6Mxě^@zƝsy|͐tR[|*Gf_1Z%^T(K+p`ӽ݁6/zD%``P чؠmU2Q;RDFel+aPoV?i=f,{k5M1*غ- zSɬԊӰE PL^`"{E.cJ@!SOKQyYIq05w,,D1\\ߴ[s s>Cj"^D0a]IkE`[3wIFsF5)Eq@6ϴ0 6wNt&QnMZFS2THoH+v9jp/F5wl3,@i<%p4bfen,&]&};:3KrcMEdW /-׍%x E:jo̫/vYH۰q3 4W+fBB"!eN@iE35RRaP /,Kd(lʬe;HBde-$Ve @ #*h=*!%ВzrfH=Dhlf/kiZ7l[fz^) Y[% ]_04A]=%7QBQXjf(`[ ) NHACы/Dpq悔Z%[@-ce!7:pA&4ڵ!Sb>"(gh*%*]0Q>!Mu 鳟xp`/Cx\ʘK}jB n`f%Z_"U&l G4@]9`XOlf7ڶ 1Wۭ3x if蘙E|ZZbdqebKHwʪFBLΎj?_"D* z˃/ґ"JIP!1k\YŌbn r,X˗ /J0xܹpeˋrL "Tpŗq˗/ҕR%cWGE$O@\jW_q"Ȣa|ʼ&7%xWf\d@4}='b_\Z[*Z[9~r%KKjpnb1{2+E RpTbNce5.Sx.>&8 ¸TP%J"_ M%0x D+|H3}*W *TTJ*N̩R8JD' < *)D`J*R/2J*$A5R3*T9LF!4&5.eRämY¿ -@5e oˮ0eb 4)C98.eYА8<m 5oXt"ÂI]XY Si Z0VaBrZpq {.]bX)x'!RxuK9Xҳ9fo sȝ &ª2flAd\eAQ;J5\hbn,T]䖚΄ኒ1T+;Ml3+&sy"a|9BzJ9fd<\6C;CYf̤ֈ4RRՙ:\+j&`D30k 1b\A1 T2L6Hspg?+_ I\+J^k_|o]7*`4̇{R_}W:\r˗.\s57ކ+Y2pzK.\r˗/==FF\3GNixErŌ<Ҫx>{a鏥AX wG2 +u~W(s,4Rt5%aid5\0 Vmo<})kW}#`Na,4K)"k/y+HRbuAo"'R@rqgU<U=54Sf =OP5Ck=LܩBP \H}1ѿL*\:P]J2u.oҿG^ZĮzۆ?k`1-1NsH"ΐ-5%02Site/images/raytracing/antialiasing.gif0100755000000000000000000000243107311403772017232 0ustar rootrootGIF89a-Ƅ! !sqs101kikBAB)(){y{ZYZΌ989ƥRQR,-&dihl뾰 xF5⣍J"i))d`6dU^Yd~RHh!#f~i.yFS^fnAmftiŝ3(z~:4h.(2DiQ*yi=7蓗RSOl+ފiN 08@t+8lDB,-PnDD{f)JSت@kmkn>[h +oklC0@<SL. q*| 'b0+wl34'ʾ\J1/ۃ:+$T 4#(A'`ݴ׉zb-6b˜Ar k{mQے-+xv(T=}d8DO647*B. }曇 Z:ח蟗N꠷^p'oY.ctH2eGπ^q,x.>nm s_̛/m]Ϻ[ @}p<FWHЀt5z?;Site/images/raytracing/tore_croise.jpg0100755000000000000000000045172007312220046017120 0ustar rootrootJFIFddDucky<&Adobed dESS        !0"@P1`2A#3BpC$1!AQ aq20@"PBRb`pr#3CScs@`!!1AQa q0@P` r--I 2j妐$wJ:\ݵRTRʫ @lȹXUܤ(TC`)@-PUKzm59sϵ M9hb%&9Z5RB s*4.jhNA\W*;Ilbd6*$(hJ! @    @ P1`1-o5;gE%! d!%jkEJB\Řgr%-Mi5snZ[*jQ\ǧ,W1d%&! V  D 1cP J#[ۧ=egyq6usjV-+Ru(S5sW5ST+iz>±ZjLI&T+0;2fIԛIV 6*H! @0W"AP!LߧXXnUm+W--@QS3d(O6nRF;, -KRJk|IUqs(L͓`+  PTJ={:1Iyg+enZZhX+UbAX*[;eUyYQW I*k\f-b.eEd+P!`\ *L@ V *klvX0,;(m-M\MT$jKвdܤ` \l!vѕ>+fj,[Xl,ȹflHAb@( RD +*ۿ9zp\=f.fQXāRW5Y5RVJMjol̚My͘^i-.b6VDj[ZY 7(,HX0\1R PJ5uю;8y,bYY6z=yƱ(j[n@\4TTN)k\H lǧ$8Ӓ[摝ɬq T5DYw +HXXAh@rԮPlAbP` \ ]ӣy=.}f.adЊM8w\-66ry5smD"EN)3VlR\ӓ\9qXkr\\sZj,=rnR+BV5r + J)c:Rt΅\YJ++Pz_xMN玸Ʋini[i\5y4jCZZ ԮV]4-csϿrus%zc\瞹k힗ҋ6MwZ\4,@PBHSj@1 5V9%BoL&-䨹Ubpk4U9yk`0KkY靊嵩\jrl"2^z18zy9:p\cyٞq5uYJ+fYU,͈TCPT"Q  V!ԬTUd1s6+3UrٝMd\+DRZ{SBԷM "szgW4.w ƮZkuJ9zqe;a)jj2!fM$BHPT a4`A +)3DoQi8Ņ0Lmd"lUKy:TԺM$H.U-ΚM+3QST>˧>5ǃ +kI"m2ՀJ++$" *$cW p X NPV$r5SZe4ԂZRn#YciUH jV"lbX5rn޳:6ZYIF+irҕr:瞱S}|=8cn)tΜFzoe9sXBIBHX PR rV8HtUf%:f)j(°!R&Ď.Z$-^uюgmfĀĪK=4Iex[:͎sZ淝53;Wk<㖸穞* @5rb,0BVi6E,YDۚg2P*RjW+AbER֥r7юucw5,͓rjngp&ɳ|8yXkzmXQN};s7N9N\5˟|9-nf@@8Ss7(jV$T VuSMj6h8jbEbr@r+W-(@% ˛=:1׫~}1F͎gB4Mqsu⤥7ml=Xg/FZ[^xws72ɱ""IY)7)$` HYSU@3Y$J!dX ZW* 5SZN;urvsok<<.]ҥUcM.Ӭ\qtư{g>\sf|s=c-sf.b" *HD1hnj摖7"J+\Jru P+PI-M\W?Gg/WN;qs5Zˤ֓{q$;=t=zytk3jk-c|yq|pD3:Ȋ ZW-($DCZi:-%H dY7)"XCP`$`#W5u:s펷5=7ZZp>Nn^ksўg;\6|}YYkӎ:厹\ؙD`$XJZΩR+ZZb"l$&Y(ʚH"@`1+  j]3ӧ+|.kIYδ/?O?N lt;3I#IS7rXfnb;(,Ab KRҡ"֥j &+"|HV D0@ j o;=*k-Y]&k\tc=clu=*jV#=p&-s\^7gR_/Fzeyk*k\@.>|w-c;Y7)& r֥I5rԠD2Nu;,|<@ZQ"lHʚ^;yp) =Xjr͆m}{.ưKўȼ|ǝǎcXkܫV$V+$c@5Hc]ӯ|:q\  jB nR wucr(@Kj73s6-J[jZj年+T};c=\͚Gvzk',gp\ȹV$@0QQHV5c"lH =:v\r(BJZ u&#PjRI@lᅬ= N\5͗6urMrUcӂ]3<[=oΜ.]5{kOo׏Bst Hf.R*Q"r5p MtcW>Xo6jE,k)&t.fĀB 5Y\ay 5rnf$@1MK=o˯?xxtkߦ/'pzv;Msz垺'-//gqx73o{p{=8qwҿG:8;ӯO+<5~o)i-{F:=|ܽ8chRĀ@*H ֥ijlrDj &ɹ+֥%]eмӋTesϬ㞱 `9AXǗgo|;sgNau_K1|8zx?_gWG7Oq>7˶t%E|n\@ @ [c%dkcZ[ZF5!Tmgl 5FzZZ疱)aPĊǫ}gӿ]g'MC󹮜~|n: ~sxV}?O;ߚXCTc8k[(A!@EՎ7\ t.j73b@cu(5$.fVCYfhDM[;3\sS=bR.U6$]qCV|^'b{}?+{n >^W~u-^p揺>}v\pxy/9uyu\52"nR+*Է5zfZܤr".X-KR "u޹!XԆ$V$jj.fčtYg{su׎ٙo:79g'_uw]x~O;ܷ56}F6:܋u=?/߃'#/^|Gyϣ~g1|v'K3\lP$j ՂԬEI)R!XQ幽&us|]|jVM("@+5r ]X$+J4˶zks_>//7Ӯ3L{y%M$|Oqs}y+}?/sӍ𾷛qՏ7~|GN5\Ez\+% H R˔3+`&m`ZVnbɹV8T T" `T_G=.'}%^_ELםGE5;Iu>=5<|?N7Ol:^>}/ϧx|*lcW+*i[\D0T 5RԶ҆+.fāKSIȳIF$ Z%H a9B5@j5sU*.f#IQs̲S}Wz'n;|zsMN~^]3}==;9G●^:y=q'Ng^gWz}]qc]\5:Og_?m&+\U!9t 5vIZ!ns=JP" V\ֳA H)a-+\sfQYxQͧ>zWӤן{fO{zy.<:xGw3ۏ}N_gz:|9es?yz8TX 4H.w9ܫ#W-恓eJkY\#q"\s6J9c%C*jnT0RʖASrZYdUc(z~oq}'}ӎ$kRMsf"榙k2j3jW,XDk sI)d.ErW-˖J"nT2lSZM^׏y5|G3yo..ix>϶7P{O+M_߃>:3Ɇyюzz|\]|ON=>o9.T+8jksqmTs@&3E*Q9K T55Z Q*@cYDЈ_N}:9?Q}{yy[8~>پoϬpק2.=`G}^/_>]~sߞPPb(,ԠjPjkK(΄krTJs".Zܠ9X2Av"ow?^zA&T݉G.q^gls6a^z8Ʒ7vTfnwriw=:cZ_ K?o)"*[|" .W,U`gr`9Dj+ ZMM˕e(*HeYnjnP*K6$E.y맟^Mex_S%/gK՟o}?Ͽ.pwp\8m:Z;˷⼽/?;5xPfNѝz=?r͕5y]=ŘJsqX0uy=y5|ьbukٝ=م/&F>_Gߗ?nxrz>nߟ_7O>r+|usϕ:w{>7Qsk80DU+Z XJRBJ +ֹ-KM4hZrr幪eE랕-i*ɹ̵@;u}ǯɭ3.cZ^i9'Mtoلn޻G787|tXf&Ӯjo u,] 13W-ӎ\Q#%&J%V+n@yJcRJ3d&:]SH:\ի2Lu7-sX1Ttg~.3 v^\z۟~~&r^O3q3o9Sx\s\;Ӗ\su5_G7-tݝv㧟vNy4kUK2L.@t l\R2ne6JM%dY,ũEJC;<1"IYYPי@r:%ח~/ǝ}>y~1ǗM3ty8Þ&˥eMu+5nR}o^7~Ӟ%Jލ^k\ʼOwϣx9~:a\s>Fj_ty?i9y||ݏ'/z|7՗ӟ/_6{)jHKFQKֹNUfw99[l9.뤵+73r+9lf϶w8o:!B4ֳzgU7&zñ$٬vNP}{<0s9=n^_K˟S~wޣ;}-s/O)gz{g~U\m/k]/Nztcyk>-`J6sSsss!NcJs3r\M\PՔi5рZhKC+;bD%h-MtV:Ըَq.C{}|fXύ;cvoF9-_Ï\uˆv&oϧh=kN}Gt{w-qۖlάVg3{㮸1X\WOxtס>-/|Azg]y=6}ۮf2 םfH'LЬ=:1|u˛\) Eʰ;=cz9y1ֲy_7 z5̾~Ӗ97v|]c<>}nОo+ߡY٪\ SH ֐Mm5Ȉ.׎\4@Y$.KЖ.2ЖRsRek\}ZgSs׏&I[\\\cAMed.SZ\sLzI==soqFϼ{x{|w_+ᨩѝ9 I$\X*Nqj'9P+ w*P(DU @PJ҉`)PD3]k%3l1bюjv}q__N_&%osc|{ϓv)F`JU#HPJsvR%ĉItHTHBJ Ks4#RB’ JE T%Yv2<||=6eRi.BYp.wqߟ/?Nz^2yrW>_~o|cZߗۖ[ \n@*eqJM*`2j&T$ 6fM 1}/Fk7%R]TBpƪXZAdeإJ|۳u3|W6d\3ᏯS#CL`cV54)h-sΡDT$ܻL%~U`ʩ ($ua,j(& *qvj펛cG>5;J*k9+57سyuǹэzy%ׯ?J=SxN>gON׮X_nZ]7O%X$KFW\\К.qn|Z_#7μ~_^nL߳9y+||nzvb|O ẁ(@c\ *;ZENT]%Aj $I0Qm9X";6@ZP\+ dM!J&t[Ĉ&䣘Os>=xw^\"뾮ǎr}3|/77vO-CVK%!X༝!ێםMkvX-.FX 4\lf}]ed*U.u Y)5lfnUF赝7yʦPMԢxA)ͮxk.蓏=~/z3/ӈ\a\=7zq&}\#~j9y|O>-rzqZz}~;y1碆5B3g\aM)PuW5sPMU͎VP=ɲRlo[\NICEkI]3<ꦭZ+fkc=N1w>~~:> tmK߫~rkc%Ǖzta9~Ӣp(^fzgOM5H0#5減Dc)jwN7nFW4R̮y*Fv0M%)=JI+Vd֥T9^yX̻.su5ygv8Zr/F.Gp:Z^\Ώoۋn]侗LION=LML7yrzlS>eW_՟I>Z=xa"D\rဆKeKgҚj]&3,b @4xzd$JcSuɥU-Krܵ5SNjF(B&3,"^M:yˎnXۦ{yytrD*3\NbȹX.i-hnZZW-K9꥽eY3Z8W>7N>MϾka>]х|ϫus;rOM8>}v:gLᦱ>g/Ú1ъ;(Li5ݞ5ю2e+Y&N&Ĺbc@?Q #Kpk%FRnjZ-MTM=`Hsw7isqo.k8\k=go>ߛ˟|^\[7˟,ӝqe kz;yuw}Wy,,B@(%C gm@Kzۣs^Mpg;Չ2H\2Yu ysYcsW"+c*jjjjYVP T֙YZ3U9\gsŮU4㝼z9ǿ{ߚn}W/NOO9ӟ>ػ:cYMycv<S}t?$HR@YTYh ԕ-{z:1-g\X}9"gddhor=7CKIJ\Ӗe+ӕRI&R(ftT\>{̰GN_;\fF֓_wثG߃?s#\ޛϻ-8z}gq|o>~oo'o6x:8 ̨v03f@ (yw=0|IILC5c=?б CW)5RKJQ6 Q6mM-q%5R㸦3vn^U73G.ǧ=|(ח}՞9ȸϿx'|y7NxoO|ρܿe_/ӏR@DP*TCJ={9:-c⬚35dWOjHPlʀ9u^}쑢GdKiΉs$kPiEp++2ZhM9)ɥ"7sZT9(IL׭쬐K;uuN|vurtz9k~?F:>O/ni~o{}S烷nrE`$cF74RuN}}1fYVJApi$Yc@ի +VTR$,kEQyθSw-f鬵4(1g=׭G^wuEd=<޾uuim揣\zk\k*c0\z<\z<{c=jsy>wX돝10#vTkXaHC/~:mj5&nTE.fs]6UzxPM iUBᮤ˅dم:KCT4%jjH.ʹLc3nV~Nϥ/MEَϣ>;\}{8w{ ;Ŭ5'B`"T(v Bb5EYێ]Rzx@ 9J`"e&RYJUd\c5֛-MTRsT9fG.~:5.xWZ,ׄü/o:O.QӖ9S~?/w|<5S9s8ûq_74烿&uy}<_\x;2x,gI˧?˝:FwO߆ϣzN~gX Tܯæss=\3@!{Ƃ \ڨ&kJ"&6]Z[4c&kf]JI 4"4j4KRhȋҮt:z=^n_^3.5lמ9??..OGz/,d#o?Zߗn}Lr_|W c5h΋}8:7Ýzy+J_B5ԨB[FA&sBirD*\v\ V$]Zv\ \S[DvB"")Tƒ(S^uM9]u+) (}elSrҗrkNz|yywO>|gt}^tkwg>sv[Ϯ=e>R!FktL;yގ||e!c$gZ"dY$%Ѥڡ(DwfIFk?BzâI'I$*G@:I$?REQD:I$H1C_+AToˠO2dd':JUGYБ\WFf\@:+ATo?B} D=|cɊ|VRg'#O2 L$ԥ HZy1##128I [Gu#hJڨSZ\ZŬ6H=Nt<qewV蚶EnG^P ᲤDcC]2I$&+zt&l& }c5. Gk]> 'I$VzdL `FٗZ َzAh\!h:`8LIkI$Va[ђEbQI'/B9L dՈ8q.+҇dI$ȞDa1\V鎙.`CCC+huz|)a#4&GR>\W!t!DI$I$O$ n+  :e} ӂd/Aē"zqzAh^<4&&'Izd}I$W+q[hYr"EnSuLNlR̚4[YmcAG3ı5~%K Wa[XW22$hLVEz mb]ՑYtYOL}t+Wa[qǰ~$W2$emѳ1&Z (wbv;Q(J%O[$JIl+W2.%+po\Tjޖpbc$o$O$L·33,-^$W'I,X|! B57G*ա4:b~#|ēĒO٤V+cn'bŋRK Flc!w,zd$J>&B#])|#YRl|@vI=y$LTh؄#YFI$b`@hoO=GSB:+aqqRY<&BFڨdGGTtI>1jT<D|v[P#] ^\pIj^I$dOZetlb,~FCPa>#M{Z54:&lZzQ"Z5$ [{ ̄P[葲 91,~I=0WM_(cEfO>#h/!lׯCĎ'E 1=ײ \YVW+U|wq Q뤞XX*bH-.{3Tv菤ƊnLE xI$ȒOs##"y׮ߑZ4h{kl~6B dec$I>lOư顏WgJƈ#Гkk:x: &Lp{d}kU)MKխkU=UΛ+>iWv[No0^KlӐڅm[lR4H+n3&Oi>s>  0֌ #iQh?T;c,~ϊzjĸV}OٽJj!h{vyV{6=|H†+0dw2X[ ^g~4>mɠX6=oh?۫nꉻx5gʝr_ '{m´6oj{T||f\[gT[j+& zlՏccXG?tIESZ/ͼKee5"c_4Bn쌪|?l{-1_vw[lFR?b>)>$`K3Ac3䑺iv%i42T!!2nŮZЕLH#I$əddO1!"t|23\d=A]| ӦvjJ{-yM*IUAO/͵3"Ox.vz|3Y.?퍛3,vͩoui6=ctf1v$VId2lcs#M!!TdPw駓[t1#Lّ3bgQxy{ZF'_*cjѷwkǏ68+;7Z9?yy75*S|C܌+;„j>MGǿc2o҂ؚ*|:ǴY>;XĂ0Fc Qt{j;6[~ YlwԲv%Ǐ:eocMix`븥Go;8vx W3`MKe c\w ύ OL|G|F"r L 0d#Ʀ(s n{d|3LdddgcZaS|ic|V0}Rt]tYC>K JrY#_֓3:իY[ޫ^]nooײݖzFcǣVƾWȓ?y:!em&ޚ]qiPdPcc:uc=c||mUL$ȗ,,4,,|>[mʌbb*aTyiۉ$͟%w\C SK4tصjzm߭e)+] VyvOcEKOׯkggwQ@[Se]6MZw<g{f[}~M^]kV3_:Ze%Yܓgsȳ>7ZOcML-|lǕc+1- ؛+.e̙2DhMNw=lǼ-34eS*Sވ6$MɱU乫mou]+}ѥR]~ծ'wkx;!c]E@3V徛=vl Q[omZ|K,E}U/$K)ViE!LvC"W?z{A$>:ԋv=vv;s gG#0F?;cc"8 QzGb;zۺOُ]a_xZEv!Mfc7vӃ"YZ>؃3YPehebh{x%MC$d̸w1f611f (FGɪ>C6K!C&Ec 5"u!FOe3fX` LLH)b)U}x];E'*V|-dwݤ{;Y4r;r[A'=s tgS,|cPB#gK*aS #gNٓ% X`b&ɝnj{37IJY<=Dw_Ubx!b.$EWgòe.ZRQZ>Nl-/vڤ@']{67=p$Lɟ#22;n!3D3aq&LV'I,wUXĂ:!A܎uk-=鬽qwCsj)c@ؿP,Vֆ,׶mc#e//eߑq0K%YƖ'۹{w;% ߈#01;wld̙i,Őq;`B5PfO B1\#)*=͎Y;-hj*\S"ܟkvͷ_̊k<־Ş6eMnv;ӽ߷roZ2DFewkÂ2!%.2vOY B;B=s*` leۈ B8b|U>1hևGrFMe[&'__c>n?TtX]>jLuwmL^ӸU-m| ئH3=]Q]1Q.cA$`1ģ*>s>=bOY32;A jcS>#ᡍL$#㠨|GDZ>t=;!|ZȞ$jOSUv=?k+HY=GvqTvYtQWͭ.f.diSm+,>کz{ZϚQm^ {ϞOΰT|2N̅h#8MI\G-f5jaSG|hψ#&+Gs6MdXŘ1Qj{ (Ľ*eFLY2C,Kl|ATu/WhUPX|ӵQVtkB4=6miMkY6ovpFZ[$­Y]EUݽ읽G+q :c]q\^Msw簠,{SIHDGI$Dώӱ^.n~>GŠQ;uo"G]VD[UX鶝Wu?"[O}WΦ{nͲηWqkeRu籼޻+mbx= ޫ6{VVI,L[s>V-Ώ$Q!ۈ|111㱈TJ32$YU!4-~?aٹlbVڧ=ё&K6ُ ]5AK:.U"O*گZ@:ݶWeVknō,ƛƫU;o%)<X u[SUH7[c䶪ώUbG1lGs+&(wN5fLw1>2LI;]WO %I's"$CHERr=j|}ײk񤗕D~&[s(sN>Z+|:Yo~ϞVh6gwj֗lb/aZٿj]r=Tc%un\Ucbdr&Y\gw;̙/i#g~;eT͌vgn;)RGcd]K≷G#߰ZgnʹkO'^RUb`ƦhdIYoVW] viS5쮳n̝ٲygV[hQTʂ|4fdEq9X{Xɝq3GS4+%=>;$A'dgc{1f$"ۈ10euYU AI8 X][؊ߢM7V󺍛5dWv6ԏ:lZyݓFS*VSMNVuKeteUvv>[clfWF͗?$O°DF91F}w;Aܗw#qMgVжZmG^i=EB`kݾK-MXܾR_+Z^OY޻5oR]}5tƴʋFbzYvnۋJw/K ܅dLzKkh#:Ͳܖ.`GKp|s,VM/ZK|y2\qDp^HSΗeࣃ5ױlk]+em֫۬ն?oi5XذMO6ʟҽ{~jֺ46mٯêcM>k骗ew+6:HK!IߌQA z2ExRA(H׮JŶ>;WՕ5|*qljhy+o'MZ~-PV{Wmqߨ}.!b\Dm{kSejVzxafvAl].# W+1x趖:2: ؒH#3e;3b֑o^RX;E(m;h/N!;Jmt^9uS*\ze^תTڏ5lWݧJl 겇R)P3㹍GZ셾gV4`bGDuH|w sgȑ!ݎL$THcLirHmbBCeF+ǻ}boY~C]YT_ob;Y[eZY?ӱo^.yGwk[-Z<ؒxU)XY]Rv1;q]Em[>:UFDISLGE?0w'h{(=g̎Ld9=RI="LA 1;Ĉ$;q,s Ǝș#C1cL@%!lN%^B5wI>㺦6b2gŘUGkq +za\|[,k%y?-9ҥMEuۦcUelcmx5 qRVl_ǪjC뎍5> GTG=HI!"QUG!oldqZ:+JPbדVuWImy 㾊MڷU^E+^-tۮx&6%yVuO* Fx?b1F*==.ψ##8$#uI!" lr9VoUJ7Rj6nvn͛|y+X-1+fImykվdh.o]:ơydIH!"89H蓹HdRVIxy16OB!?xeMWU%̩]N^^ݗQTăjGq6A^_MSYXi$n›1FguC}27fSf)-91Cٮ-]S&zgkxVOVVSp_ڵ^R0]\ZT߆x{U]gi[oԺSv u ~ +Dcc $O-"̭aIMiÆ[F|[jxMx%[wXZ+-G曙lei*ˆ{[M-YK{mm2].b2#G~ZN*'ҎVĐu;"zm]^2{FZ۝e_VE5NMd}UiU(e٭3Qdok#nN~ԬV빾bY~lVČ|kۮ+nNĒO>2ebKqڙ'U1k\3UdV콺Wɺ+VkZ(? IUjmmz*ko]mF%ugzҹ[RwUjJnk-OEuVB$c5ƺbL[I'юc'$]6تĎ A&$1(>q󲂽?*mb{ƭ׶Iu6c;[fڛ[*׷Ȼ?y -ZWVBۍzhY^ '"[0l!#ߚߓhBvݶWƇLdsm./r㼺ԣfg+ƋFoݤǤz*ٕ>D>n U\~\lLLHE*vn2k>Fvpͽu4m?pƶ2;-["S_Ǒ^=uI3 0H3. ô )'wH{vZ#d|Jc /hfBUo'܇%jf%65?`vvӫ]:*Tq>fV&'͌{JRعl\JkhĒ;6:l㳱Ҩuu]SNLʼg94~~bG+e$b9xU랙$]]O>D=aQbG$+H]U[$rֱZvĦn|crxy%]2#٩{lOGU_<է}:`Z|W>0 M-T^aQ:2xcqq]*`d=@ORI$v[6ҽThJZ.G5VvЯQޥm6XFk7^Rم$g$mujUMT~Lf` ӽm+DcDr[xF=G \z{kU^%5oU6o_RN=CDWmlLW~L|{ 6D+RF4ЦSe?Q>gAa[+^d"z0GBdč!VJЧ3kV+7_ȹDl]ޚ-eYE5Ƨ]<]MoUl+$lסK['$_ v||}#1VHI' u1wX#1+U gcYgo*NUMO6,Kl}fv>a (5-kmߕ>)OHQVDYYGY$>|@?}$='GTzk8G?Uz$o4M=\׏I$DOOݤȞ hS}L> HD2J1[rObGؠu#'X#4\\LJثI<S>C|ـDVt-`:0C-!Dc###"II?IAAs&FD%G6(oC'W-BuAq&F^$I$AAq$TAmksZ}5K]l w FHqih1}H#hѩuԓ4f^ZvPHqsAI>{-UL÷D\w2FOI'I'ВI'I'Ђ=I$Ȓ} sk]lp PU" n6|ASПh $J#I'nxl n\W"HLGI>x(4i\lK.l@??<:T: >#}۩c}櫇.o_'>ٰMK ?=+?WBE9!}>ak]}/ $]6+p_ D ԏ>2>i(<%M*_._JbC Kҗꂽhhh\\] A,tm$Osnߢ=4|b.ISQt; >=[~ |.!y@}$GO\},rh/?B8TB꟬Z#d|\\BI$Az4cd} )ODDG Kѷ4|}$$]Ɨ肣bNʢ LqI$I2'cCE\>W2(,}+,.$22'eVحD,.2!pU}yc:~nnkq$xD6*g޼>_>$I$OLG6A#)˄1.#?rOҾAbGY~ ى~`q$I zĿb/AU$z5Bd!ebxCdG\Y.H#c֟]d.4RLt11ôB\i'm^WEԎO\@/x-i }4s?oc^ y\OD׃+X#T}#C\p#˘-اPK`dMKXC>wZ]9ĒOߘqqq*2$#bbGOR1$&33##"̯(TlHp :.B$ˊ(,$IbJԎPn~ U"+ 1A<ryALB-$oWY1LϢlKOLיMn$:Xh] ]I$qnZpf! MBd |ܱtOD cv.|Ut6$?E>,\/׈1ֺS@-.1p 4.<6W^z,Ǚ^.@C\1r}k*>\. rI^ҟ+OH]u>E\w\/K./snknVB\]Kcc)נp2x]mz/_Bbb23qubp5/6S+務勩 \/W>螕Ȋ[\1q6! H1#I菡`>:dpGA2O ">z2OLG𔄾$zI$!/45I$!!/I?k#yD!.Y?lk7au kN>?E}|BdQ~mEGT!~[r:I'hkЂ?$Tr1`I>Ƈח ?I"dROV k ?$=I<1>иO2E&&$AdLLOII֟XБzEaXFIIZLV$tO[Bt ?I=rOSBDz ?gО> PGզ.,BꞆoJ}M_X0>3 2$VkgV$|L$d۰>3$̟L[ u֓.$JED4dd+s#ŪA|ER 23'ЏLW2Lz#y$$rTV"^5s)~}>$z+zszZ X\+emWXmmq$AbcęĒOzJbbG&DAVJB(.cV(S-鞕Ak;!؟Z9}iW#2H00#ԓ"I2 i! p%a%i Y$ E#8>,"E̒Tv&211 #"I$I2'FbG֥P|ۆ6O댍wkGa>1xlO$̒dddI=A$tR&d?2 w_FD}$&&>-S $o22$D&FFFFDI񉁏tֳI]FOYf>$ȭn ̍l6w111$n11 NLĎ#Ғx}(ȒLpeEemb-n$*>2˷bD#dkHԘ$~I>L;q}fgbdI$z ${GJ bϊaPw毄W*Uё?EFFLZI22bbbAPAQjA  $1po Ȓ  蠃= 8 L HL$I$I$ Ď2+H $i2I58\P$[ \0AdfdO0AA2dddddO0AtAВL9Q&&<$$3kj~dH&$Ģ*P|XdFb$^Addcw$Y>̙I(z]vdk}%|5ċИW*D̙OrIL'֒zF~IDW/CE:|>#Nz`'#ЏFyVz_X5z'6Hȱ$FY>?u̓&%>O\O\r^X\11E.$ȳ|l_}R=$@(  3!2J3_ 1c.>aHZ 6AR&AnE 'MLl|GT= ~xtPE/>1LV #n+\~-E$1WdNI $zI'=I$=+#˚ Wb:cAGc"x< #\!H:,A$uOTdI$) .$Gйn#TB/̕2$VI$ FIUXL"}E(Eα?72'Wk̒xϪ}8#ђI'#Ђ:$~T;zPA$ Ÿ\#rU<2I(^cI#IGb }8 ăR\n#">kƎ,  >I 9ǦL$ȒyO.lā,[C|h?L ,I$q>AG$AAI=̓$Zc\W~$dEċX\jXB-čYsoփ HB6T.n Ďc߉ODOtϢqEɑz#(-ӤE{&ص5O1> q$WD.YJ[.>'OGD}T$oGҺ1$ c\!I61 "xďpȟ* иh_} ore.:a!w BdD}o3'LHy'BFyHh,>Ws<>|Zÿ٤̞ $.cbQIe<&.Ce{LH<&d;$IdG( [quHI?`:Y[ $:.Ev솠C-nR s%x0VI~*Ȓb`Z屾`BL{©[ʷ/RG tG !$q k">1>1#h?> uAsL~ .EF?|d^ c1tUI/)/dpEFkQpu襋e6UpOK#]2x %[O ŗ'nĆn!Rb7#\@OKbE15>c#_7 h$%S?."LBeYe˪EO'ґQbarI#}Hu?&'_t} b6-8N_զ/O2O\cez(|/#鰗X?kG] u>Z,_X?}ezBRE_4}l\Gք_B }*6. #r.׮ފq_}4b,?$]]XА!!qo^Jc⿗R!\Q_,Y[otz2Z/Jߞ([Gn/'_MKO?LEze b}I?p??_z)(֙? 1O PE}% "e_P(ȧQ)kzHT)i 5^LzP?/Irl`Zmױ #S %Ioj?'.$02B ' R&ngR1LFSs :s ԤOC*"""ְmDSSX%*+Ԫ$*m/nī&cDVe_M)J9i)R@TZOUCSO*+d2t=}~J?̫2I)iR{KjSU+ RUĊM hKڎzUTZR*Gƿ _'*QS*DgXO_W X4=qUu;LQIWlOR"'?: ȾDGE<RȑNE:j!9dO5=T$ץXezo5Y5韡֥+!zwԻ0#̟B0]RS5fJ8)z& pF\WQ ~jKLoPDdF3йkC/5YHX,]>jxcykAHӵT#Qzm5+*1h#M#N1IП-FT8"p.$=%kJ)Lxi!Cޤj{ԍ*SQ JgJ_kezUjz_mS]; 29yuw)NLK2SѿƝQN~m"@ X,5HВ =>]DJ?ndⱉԳ?M&Z8R3eT)Xp*E/w2]/2AhЅݢE^kbUO憺mZneKAYdҧYHZjDZS.0 à8pKk 0ԜF (~:ytU{s/Zv(I"K~~BS^uB\majVA>e\<[JLy'|O>ؙKFVnl0izh;١T%JD89vgZ ]|uHޢzp[08~ѢԭVԮУR"U{[UܝSgn9}<&k2WH?#bfGIĒ-1q^XulvP,z>2ĝŭbԥ8~:eV>z0)Vg]rRyН;ҤB"jZ[G3YZ*e~&zj6WZ+k=+.!r 5IibKISJwCQq{\{U#y*qjY"_Z 3OG3Q-uU5WI<)2X9U^rA.U!JxYq)Ky@T]yڷΜ{E8ji/x)]2qCYt-qqtAqDZ{{$鵐GRQ!wԦ[?>zÉ̍!T2*WhXzo'5ziD=jcZrshupvc^8UK}8UiLw) bZ*Q/#]ٗ*+T-18_#cmc2l]Mt%J˭ebdy  J˴q!#OM!=Hֵb&kU]]-Y^pC&k{J~ķ?2HA΢s9w/?ro#Y5)סL=Hdtzl#_N"Ҩ R1_WQH_ M\Tpz1aϚ|I&󄜎.Zc ɮ}6Ƿ oNutҚ2(p'@֢#|RU+*'Vr7hAV2RDZ~nb&eQ CUKrfMO6}I!gppȫ$f7%~%T/qG&0ç&KMHM4ϐY*F|9:qž#'Q8kr; ]d8I2qq `{W1fG.TMeVo1=+?Ԛ֯ߨɂIf#nn!N MJAXLV?)k""JU_SKd9j=IĄBZ-dˏBDv>gkoM-k.'LWcm "xdѕ ۸beЇȆ$6kdu;XO%)X ʗQܾFUH_2LՑ"'.$xw'bF`-2}S*D/$ Lq#Hʭ\!s l$bip7>c.6ɤN-}J7=[|,k|md3ױ`b5e0}yaV&DIPPȖSr"iM|%y6k!Q-Vk&k'"Z#ydu*w 66A*Ex.6*7hH$EL,<l4%cX!Y*[!-qqn8GŸ["u[-Ÿqn8#q-qn8GŸqn8-k8[{`,5$ʫʷG-/yF IO)ұڳ_?2L-A/ĩqdz"8ZLa3 S%]xCqŸ(KkkqwAu6Mb)楳YI8YYi]da yr5`IbD\,56 *;B쵆]u6$Ӡ{,k-e8Ndǵ}SCwI-|HLUMAd/x8,uVB+R&Z4FV7CVp::|:#lk|>e㯁%.X4ᱭbz,I-Mv5n$~ 9+1&IXCu|ݡL>0qbh7Mpt<'ʇkQ8Fb/⃏n$o(^ّ l#I#LOM#Hׅ< 5.'A>~IqtkŗlL*Fma) q!FVr ALH 'fTB,4b*dKL0 T{Kq~pf!$&A;c̵,)VUMoAST;2J6dFt *,N "J(*RR$xDoU M+$1..O˶6@QKU3U:_u#l쒓e>d8>)I:9wA?2X~amHT֋$)mRseR`gژ2EաҙB+,dD"w/*V5L ܖqL&pcA{Z} B3齲(͔bA^&m? -|WEOƙl$p cZk#6m.GE.P$2"]̓`-u2#EQٳi.HU̞n[֌%o2TIUN%O^g%_,E!5mrNUU\6o$;He7ҞQKN"S B=]#}$4Ax/#KR//':#Ԇ(JU\2siW/]8hG4)Y=jBq $qYުeE'ʼK"$|Q*}FzC-pX҇Xudi.DxY._AS,NVkNb RΕ3#};ECSySz*cBJj G =KB!58#{*NvA/53+RQ>^Rd$Vhǭ9>kצ]%|7 ZM.X|J)J" {OI+M0B0niR.ϙ>e^UZV20׊#",_ԬA=)OgI;ukVIcXNXN9Ѫ+ܧʅeU`)Q NݠN5o4VȍmnAR$3RSLoQ*RIwǵUX? x>{SA>"zOd5ˁR҈UqI4/'_*U .T /T~;H!9bLC-:.DZVjuHlt KZ>ǫîj}Z%87(Ea3-$IfNDW: I*|UQMWj|nJX<Qi MI1?c*ǠTw!9\W2s[$k=B_L i9RcYT-7By)knJQq<Г,:5N$dOțIC*J[\A$R5RF+02'u~b&\cQUKkPqK"CO2ʪ-77t#\Ir8aQj+ɈI\!FD//\HY]}`~ۅDr+X7\*B9pw!Ӆ5! CĞ)v$2ID /l7Fĉ>*GC7D}[ 0ҟ\AǨj 27 ,u%ԉ]DXK뒐N*|m7*\o& 28YbbdcY1س̤ZI:DZu$N[dExSf5*KlT3+mxNd_)=*"+Qhb+ГQ'a(j?}¢eӇM-ǮbaLzT̼H#,~]l^d~="!j!U/򐩉۳ 6-^!JŸҕGb'6Gجy{ ,mD~gG,.f*EXm,EQD5*\E.,̶F: \z!ї/J0ER!"FGCEGxDXst1a|+A3tDEH0ejrKBe.1?FWU,abr.s ɔJw#ͦ.h2DtgZ0Խ/uK7(".1~! eè`Tt*V!*Td% yʹAHM8Ap R5˯mNED:4MEҥJT< 8mcp0,qd ïCBeX_BJUCJ9Y@v(Ԭ>bЊDԂnIA<PnTM#g9b#E8LQRҍ+ZJaTRJЭ+R!*^ 4chAI03-J<:Tc7| G%q* Ibb m:"J:*TRJ+r}`u,fʏR8ԈM 5D $IR4ќǔa8:ohw=#d1*TRZ.`;0J+...^*!:15CPL. &ttY f%hq`lJ6v$|28.XHܿŗ.^ ^:pH)IF ^*XMF0DG0 #ReBR7wA-!G6e.\rrJ_CAXR#z.\r A厈DI4X,KNQӤT0eI~js l:*+m/x~A,XH}JEjoPV&vBt'\n7R#+hz.^E*$n\4.0ƍJ\aR#F̱G&AҩԤE/H2vƦ#-RK/ܹl̦ f DWߘve:,h&/@\zD<.9)ك#v2s:\F\ <eNcZFϺRt%=fDȊNGHOIդN1ZzQ8*Skl. (@ 20F4/ 60Pfwm]3+R7֥CXFXݦςoo.gI9hoxXm(+u0UV*VȖ\O.3- &{ʋGg7*L>r}Jf\QNY l_0rwaS{ĩpv:+ԙm \ϊ5J"b؎g9-W'()RRBұZ[J4wTM/X.! G٫MJ#)4/3WA&C{te JS]q}x=e%}4`o%cXq4wj=/0EiZ?A=ygyff$TGDIQ K%eC©Rt0ꩰEwW<~a~(JSy-,/M"Z}Dlk[8NQJa/ukocQDjf+chqW;ϷR iM)Qcn(, !W~!Mɸϻh.j{3pk 3Ib}fV[|vA}i-֥uen&a ؗ7mrrP.3>1xH@Z[L'ze۬Yݖc+ 9阇 B+\ (m\ EMM!eM#S,a"ev&;ތ^ˡ^q] Ch_6{1+ʮ_-џ/X;JV=[*.Ӆ=O`1ͲXP/1g^A:И2ÑMQ{y#{(CI*۾'I}5N{ ԟ* &vqE?/:p:)xJq1&JQ8WU]1;w`|i:pMfZZZZw%[F%ҟof1:Qfb拼QAe߾c#3>%`0?grrZubS,/?䱳llo;y~er M՛*bDP[:? 0M[5"eut:m%8 2y. Ŗz/q@+d p;.ˑ]x=Q3.ZcUb/魖ޔ]-:11.\̩D/ pyD^ e깉D,`:Gy9wE11aYܽ"i۹.q;1nvل%{ԻńϞ_tCp(lQ7|COeCg i3(W fyEJo_)Wa)o`].Mۯ,@{Ѕ[]t{J6/?/L~#NfS :;_}"޺]ӺK?wPix?䴼;K:|`F1eh\oQڴ^~>꫍LŖeas+U b%dlMf@%X/n˅y6ylqS^O2ow?W-Q?<kAͺ(eX+G4cdrdxv|\>iV3g]rQ|0SϘkDD"ǟPP2&&s,=7U]xzO/fqᔴ7WyRB%Ό^M+LR}+aiNe|e(/ՏBм;}hJn߲}ʙf[{ͪSNO<:KfgZMOK=udg%eziNQrY$>t0DJ#k/Vɐ{e ۝sa`s]=aQF^zKh)=qS(VxaZ/a*@@7pΏ>fp-83^`ǓSָy6ņYTu^4f4X=eW"aFݧ}߂$F/18~R%y ,y@v7(W2;6m7WY1+=e!쥌p`w')_ĢuoĮv_th$+ĿItwGu{^P{Ķ1HGGk?_|SϤ [5-;,;Wjr+)S6βLGOp#[/Ѹ3$9?_qxwN9j@'H"[Yc^ԃ}޳NhcgDElc%p?˷YOޏW@RfǤ%ǮL9Ghb۱^O/j[΢[$OPp Y2=gCya~f Pvn&H=0o(ZsY=% [Q݂e տu1kMQgm6C"qkDW?sm/Je%Yař1}kx CeŸĻ[Xۛ*K/E;B*&[{Nqbm\RϾ26 8|=}g0׎h<:oe@Y7X=^8}DDq~hr|T= GRn?e І_PLmF?G+;C|M%:ߔ;"߬)?^ 6\)obqLJ"dă]{@-%_ opvߧZ~b?ݾ&lOrf~ [z蘃5g:)΀ix.R6Wr'sV/ ؽ<|L7q}K~eN3 |=?يgOo0g;\@Yw?<{wϗ1@g-v_3)7zj@]yY7Ub-jr8N?k^_av;m6PN+inE6?+ nMEa-6 8wq+nCvefh ͡l/xNrį`= [q HʵϤ}Dsc7 *""p1=s*ch[Øҿ>gJ̯6؎UhAnޟ W> sDM };}6o(!l8UFx%QT-27O; !zT}_`5iot##M;:*RIf:. 9b|*5L8Z%Km\*$'8-F{@̙Q9 س6q3?ho|aJM yqw&oGIf؏\KPkϭv 19rTyجV΀p*m*8n?W(y;?6c alncʥ83 wܟ~a ;sQGK}O9W>ƹK3&'JofDྑKtߩglC5ض2 I÷Ǭ]|;CLW|>ޑMr4yY1`Nε0_c6ﳞ9=X`BhK}95KxFR8}~^o"qeQO?iwmٝ;zKֿ#S'vx?wit7V6185K}9N K5}ߘ#o?ٟMt% 8sqm=yϴR|;7~"XUGJ\M9=/rֻ,ZÏge=y~.mvj\{l*<ي.b!HT b!W ],bb`gf)bU[TMǔ/fA |U3_W2ohu?mʰu5^?5;F@y'`NƅR>oPMyL g%+:?swjnI߲ J8߭@Md:Lhݙn?)v/1_Uԫl{Q(;?/(ic_o`zu SaS]+WĢe.P@\wQoC~Ȟ-|+hgu_7q)6߭mu-L8^y<} g6϶?Gz3=v Tf/-\]zZPw z?#e5*z <_~Hrv:~: cqzQLmJ|"89DW~Vot6x8KJr_%NԄhxzNԨjq" uYsrvr0_7P=f嘺f6)o!o_}=.I/+~vR}O8o<ȃhv}f2nJt=naC|syMPg|yyG~YDxԙsWg |bdF=ev'ivk?@b7Jӭa{_[vg@G"%}tzƦQxAG(LLsϜI~RR}=3Lx3F&~KeGF-* _~Q[Aؠޠk߂wX3x붺mاu;l)+^׈jh-r:t8f;M?}0^^p]b#Hj-CZrfɕф[˟f ar?(=RW5n|xo(<ח 5ǑzL:ذR~vEwۻJ W<{J4_&\SȖb;BQ3F8aQ;Εa-];3QYeIa|8*K䱬_v-)]'QK1}|"vo_(G=!cWJLs /eraџ?:>6F.QaN.ȹJyq;,50ߙ̏P7zL7b:>g]US왱Obl_:T\1Oltu[ D9[9 @Cޘӑ'DܜǼsPam133^ALCXi3ez 끘qWBĔ3evT?"$_IݖwO,%^_(?zOɟ艸3Ra'N0.{( =^%)%uѿٝ LyۋWoڡϬgW__xo"nO 1Gԗv2_a8=lg}&ؘ23˰ gIFlyls![u9JMJ%zC%{;nȼQby_wGo fEL6){TS+X:0QfjwYcf^;~sAgR[y}>!]2:P޽\={N}`V(ţbK/;i; NzQw^rO}/K:ó3 N7QI%|.̸' q*[SAN%2HKov[6"y^-l1#s5Uac|ugNnӍnз12niJ3Z|8#ie܇vw aɈ! ,w[y oumENaz3d _nԫ c23=Jijh͜İ­~9reI+Jlz۴/O~tHa{^2ۓ.nG_;f77vlO)rf{'dFfe0zfuwM_|z<&n#M.6!ˡ(mKʳ}e"Xj;NFٹH=Ͼ&MH.P%G+/P&{6rV`N 7WoT:0;}M+wt+,#z8aDž|č6WWKQg[М]2v ӗYzDcJ</-<ՠ5,m3{4Ky,)YU:mNZg. VA09:Ķ:&Zc1.lg{y-NE[N ٘÷Sz%=Oh?7[vORY=1ov8l0MNgxL p3Ҕn7?[).Ƥ\vv3_R;q/|zipw1W hBßԦ-ױDAEks݂jy?K}#F>+TSfW:2+֦=grwne=e8C̬PX[tuU|@7_3?kBY牃cw)6`"#zN/3'2Dt;HߜN~e[Sȗ(˘F֋KyKwFvO',w>pEJ!w[Kz;q#V۹cgux^8|>!/jQJ}KH“N0db~hv/r R e[VRBUGlťwLqyv9l.-/fzsv&xHvt{1g(sRcV:@Y/D7d-2GŖX᝘n3/JiQP{D="",c+ΠWH/ܾD7cڦ'r\d.Qh9J6*w6Hu^DmmX{;qv7GG" qG4=01w pKMeOH٤7;$0NЫ9O eX`3Cf9kͲxٍɱ:0yU:Gsgs Q`_k@BWhzռ'\[96ۈ݅2;>Pd/Yw͛ `ebm+Emބ.܍1.;IpCt* {7FI2оJvj|TIRl{\ߜ/Jb0z |`YYer)w(;WZ!'3/JzDejqvݩ+"PJ^N@Gb,ʶSU< aG)lUϟo{&A{k>pNHMEF+nB Yz$ٸ!:%0rpI`1f 2Q-@.X[1bXwDm)Zаmwn~' h_sYTlnXuW՛o27x!ShÎ//0khyTro?ol%EKFmh,fyeԴ-QP=cu[T_N:mgv̮߈D]R)a+Ï,򺥹?i7h8˖S;0=yȂ/yxIړ3fa{@.`.k/+l%I(9~[VFK^<g:ZO-30Hfp-: ɏݶ*^Il?:[_Ǭ{ڜ88w،!bMi8m{ATωH(._3tx=_V_W+Fqi+x0 vJ+l03#{LE5;/1!-1zQ(qQҦ :O4Èf4A҉%J:ExTkBq8rdgXn|Dj&cҗy"s0@+ĥ'%{ߴoC-N7xh;~ť̳ J6mʦLȎ9擩܃7q=l=~{Dbns1~#Q@=LKXQn͟;#q)*)=wb.](o8L$Frˬ%'Lݷn}biKbbTeਓDkD2a)*$H)@eΰEQZ*TJ&&e*[ݾtƝҵbQR a)ċsm!pJ&&Gn:+lDϼeT޻K4+\(u|,Vjt~ 0檬Ӎn7{7Cl8ۉl^pߤi{rzfR=h PC߷x:FY0]bϤ, z鿘ґYEfaZʡOx2ygBWDh(݄/HyX-hRCJ&W*uJH7Q0;3tkP.o1w!ܧE,oG0|6b_aًYf$Lmvñ3޷2P>~]`n+xꌫz*X>l7|9/@ɺ݉+n f{nmõ狼f/GRfF3XFߤ;˕i̡KWIr(FOL'gCݝf>\:p#̤CDsu%uJy'An̨]׾rh_ pSո^pѧ39KˣŹ% w!vrDHJ3*T/a֕3.\#w2"e@e&$(a8GF@3*0RUkH KQHw7oao(Lj)>)sVODň,wn+bfef/9IedWv%UaD&:_·Rc}Y߬+`V-&ث% ]cXA9HΙpTV9$uedTX=%.<ω!JoE94ACQ1,P4F1 YdLTMh sIySt),L7b (3.Tˆ21.NzR-ؖŗP!n'g&iZuaX۪{٬ѰN]ij{9}K\"7*{(-z7?s'!ɭ7aʏuu89'|~DrJïg];<:w~ggwcFqW̹hE4bI ЗK)6l&F4 Jb!)~i+f߲Q,ZQ%8`vpuwq\ˠoT#%!w!#PFtog xybu8Į9^\0wJ4Y19wv˪[ݶ/PᱜAmZr]σ2K__ z ]=]^_wQ=eh \T JA7qm=eJJJLK=sKRIP&#(cgR[g0D })a! xg:XݜQ 퉈`2%LK^NnFP*3Uu0NC^觚[  e[􎆊~^u,52Ƨb Y>ޓ8-@)C [sLY`M(m[Mœj1uO ~a6|8SIr$Y0jѳLهh]dq"7˼,NH:^BHuǃd@hČ{E#O}-Yw)F|faL`P!(h\zUBr/$]nxƃh%\wg42,=wh`6(ܣٗ7peE b1rtԽf܎". 9Jev&3[ܼGam7MAP[&" Ӽc,2VT.&=,U@u[* Ucotꕨ= NJf8w-Y~]i0;DTzٴ"@V$J.u ܊0Wyơ4zN陑YOCJCF+)+PI\E-7 @q smmǦy[gQ:QiuBa` &ΌT 6̅,~# 8=CKvyF;XW?ʷA ]-w5)01tcsm&;b7] *ڭ6}e.NO"zݳRWL?2CV%:c5zԬo6\/..o?Io) ^Gatĭ0H4a^TzCZ-,!1΂Q)}<*0KGBŬ")Nv#Ҟh&6 '|r>fqo6{.ml~Í7-@Nz8\MLHlBsqϞL?ISkC˿h+$<&{]KlF:ˉyrUMQ8&[cez8`glRwe,H^ooq_/n,5Uaimlo/jzMĻU9[%)f ,:*&EJeڻY.o!.[ĹS lB\Q!2-Ճ v)e*!U=Z (s]-e.NxމoY\v0C]I+_fZЅ%5pi9v̨°`.d|zw]J3Ϯpi chT/-8;E2MQߤ75ro\|Es+|yИ^w!򺷕 N#栂<<&!?B6Řm(eD2/M*$M19Zu# 6<KЗ Sв㫪}fB"4U;RH/l}x#@0o+ev>fbVzyEzlXGo>;ްw\˘wKs CC{ec`yr|ƅm~LEAw~:eN~%r]chfoq^7ͱ=vsd{p>OReb̓/<^ >:6hۖxHhi3q>GHټp a x*T"aQfٗK(C0(khY!߻ +U]?p%0&s%ߔ{(TcozL…1Y/./seEw0dfL=.Β~ 66:}vWXLo[j/AsʾZ2R'Epxq20#2* 5X5:-~c[,@*spSydXx.3lΛ\A8JzC`h&Mj %Kn ^: Dɾ&lzz >Y`8lwf FϿ-g"eA2Y_vϬVŽk^ɚ39tڨQ+]U&\U8fV6aϷZS!hݡљcBͳ>%l%2UE(@Lir˞h݊lyhjv{J1 /z)ys6)qmm1@*%;"\o[cU,Xd|*Е^B^&wֽc.;yc8/>t"usswfn߉΀wL.wg+qc$ 3qtw9U`]s¼m K0TJ^T4YzsS97*;Ё@/%FY_%&#!krt7.pQ\qcB)cEo8;h=;hY/)ɴ J`͏;HwXyߌzafʣG]>6RQ+6p܊uc􂑣p)$fe̿1Eͨ1cx7l΁q;, q rXl;4%C@4̧H :(XgOWTe3hy=l!f~'Ƨ:;|%$E 8,T u*˱>!UÑ.<yWwG3`[bΊ)PC8`S̹HjIH . чWYv'w^Ac]7l*\"srr7c/{y/8=`3Thjk`1,bb Z=G\Cƍ+ĥ9]E\L~a};&)Ugnf*7:bpڽ'+Kiݱj?2ʾMwc+rʓUF1"q\ A3u!X:L7"Y+/[D#K8!J, s,5WQ(@g5N`ߪ.X۠4\Ve'b_ Q[΍iMؾ^bQvf{hۖPk}?0aN~ \&ě4&Ub+y(B}b(㘆y^QTK-Y NmApZh73oR$[9!SА[іGZTM$K6Z4EFC aв^fU΀i~BoqCrYn[6Lo-{}`9.\tF=T6??!r^*W V\w._rVz֕+Y\r+^!/ĬY;._ЩRJ˗,-U*T ,EuEJr~;Zܿr,X+2>P };/_^t@n\zPė!C rkQҡ^ьY@%@*WNu*V#kr5Z_4|Cn^ϯ˗,HcxB/Z_4PcxH%'+ZRJ"J=xV/çPrj\+o*f])\rԯeoA׎t, Zԭ/RJ֥D&@vte KQO2ˤ4/J㯩z/eBF~\FӺ2NbN`YZh"J+ro땥rVZ7ӥ,ӈ f^Y 4m0e*W4_]R}Z⯪&hZ3[/#pL;&5e0Lq w1:n,h T׷Rr+2\MS/B)0&-5VٔLP?;nTn\~ JJx%ihI< m/G` S| ZZ) 2;M'4*TJ/Zr˗.^+Kr&4rcyyFZі#}v2Zm(\̆5MW.\kJMkʕ) Z=fT/9ιk24f0٭eƔh/֊5)1r*Tচ+3oZ-˨KsΕ+K E.VaVYNi[MhRԩZ_ֿ irN_ѩZ,vMИŴ*kOLV*uA6h޸02謯zԯ*W~.^/RuWTXYĹz@t!6A<4Ԣ25~B˗U+EJ*TL̶^%t_z@HOe*TSĹu-l |e+KLN'rʽ,8KzfgL˖hG>:z˗J˗JIMJfe˗.^/E&1S2˗J\zދʕK%˗NbT sdz`t,5F с+DҘFjlZץL+rJn\eJ_Eh^hAZ^%NX0ZjnkԯRZr˗J+W_աh ͓YЕcK&N*T&_A_N *Tn_йr+a/EK%N ZsrXeͳ&*UPL6BT4\기s)._ֹrʕn\rj4$H1ik\W4JLmK.\V˗.\\gZ*Tn\.^JRH z&ed7 J ܺ^6o\Yx\"jTJּ9/EztRJ+[֥kjTXq;.TUL60fBζ:J: ԗr ֝&}QdA.4;AM|B˜)[N^! ç~;/R}zJۣ*Wa!SKp:0b5: mjWxo^Lӽ.\_D)=&ˆ:ʄnKaǂFAW7Ep׽n_׭JtJ+K@Jw*WQ`3,.gSf\s5AjԂNTq ZKҥK&ړGiX{#z\atUiS_rL^,ŃJ6jY[t/,F` A`SP_ejTOvHX. = k]chi2t Fͱh3R'W?_Ȑ2@EcK޿=pN \ݔGN :1*ZeALZH<a)/(bd jWJ+UrdJ%FQ,%/,]ԭ._.^_7kUibDeGT=k[.\r9-eCR=E.RtVet(UԨoB *ýoqb˗/XTB\ݏ-* F<㿣rw../ЌUu wҢfLw*K%r.\aܽH2CqJT6lҵ?/5ˋ/[3'GJ\@ttнB_g\zK._ѹp40HKnѾԻtzz360T ~0DĨKZCF fz,}"ؒMIzehC;j,"t࿭4ǙSNt0GE*2\ `ċr˗/%/_أ\BVcKƜ:Wo\R04۩aZF>9: _or^:s+]XJ(ҦI`ٷıgLB\Krb*0.m.V\borwA2l gQTE?!ҥJ*Wu+E#j+r˗T_A]MKԹrRJ+z!ԯr>B˃Jԣ КR}:F]W.\rrR`B1RJu0.\ \F'BU*WiQ<+R,p +Eҹr}ִR+[ B-E+._ѩRJ+B*Ts(LGxE} *$ɩF.\~z_Щ^ *TlmRD+]/a\rCJҥJVqL ir a*T*WL4\bZu^.\r/_H6FVJ*W ԩRp""\ u2h!h BGQR7ùzToK/Aqc.E˃:5*4Q1qeˋ\.\Xn'aD Z޷t"WJJ.T\oZaE"rT@GT./[OIYR/WU~:mf%n\*WPJh h!.o&.\Z\ 2e/J\Khѩ^^ (t$7i\K/&QQ+WJөRxn J @whi VaΎ 1r H*W_)m1ZTt\r_ U&<5bjQV+E]*W{4$+щrw/醥xoZIKz.W\s0Qq[6!EQTU2OQc;WZޕWz 40͒/V/FXp!+R^%h̻AQXؚ@vЂs݌7e K#m7H&%#RB?J_8EYF0p~EIRP/DNҦYt8} A%&20]:6qa; Ĩ Mhfo-⚥J+R Jh$42+ポKճe1)a1ͥt++)://к֋ *V)x=[0ovN,ͦ&.j35-p-K`Cw m) Wi~z޷#mjLJh@ꦊ1ү˗.w51ĸ:ZSd s.!sl3Zc…D#+K4*TSZ[Ee%&%Wl"0TT=$`9̣FTe%QJJq/>7EhѮ]heDBg}j^)(ҍ.\Y+)Ⅵ$+r^R5/+[x8EҺJ7cQ O`玖 8z ,wndbAX\x$M Hb˗lZW&eeJUjWC6xdX07[ l 'bv%;ʓ#jl4M$HJP4VW.^ЮTZW^V*`q]"X%GDժ`-<̬L1yx[qZ2 /RKb^+)(+K|U%e%<2 QM$^^_Mkr\K)ht<Rs`ˆ0JұNS6FB | irfu# RrmiRnZ\3,RX鸪<˅TUS]GX0Zm š^,Pƒiie`E \M\M)W@7*y^ W>wFK`: sZ'J1lXRc.5!$,ͭxx+x CDD|J.0%iZcFV301RK^XSj 3c)88: WcZJ<))k#F\˔hu%ZLJЗT /J\ۦ09x&a*4kG8CEW2Wo4SK/Uiz^JiL̹S*TF*VĨ%Y&t a1(IQTW] ʗ,Z NXҴWuǀ:/z\η32e3>йz/Leˏ:p̸\|ܨeJFA]rJe2V:fSWbY,tԼE:(krF%tZ[-/%j2앒Ɉ:ĭbuTTR6u 鹔 XHd%6%J.Ve2k+B-RxLjWXo@Lt+tw A+*Ҵ*VqZ7AGxQGK'&~U/+~ ~**STLK%[3}/QӞ_tANn`hm-@ ]yjRxT_FUn^jVB5=\!%YTQcBs.WUxZTR/JiCV'1`iqiQ4,cŢZČ4bdL"bU!WR}*+R+I'ZUkV(q&34b2Ѵc5;WTZ*VJ*TZTR}%B >Yz ;0EpC XA_Ux*WJ *T^ _J*ExT\Yqa.MITc A.V,@Pc@~RJiz*"7iR3gAhe\f҆JƱ#MZf}7뎕} K.:ԩP4+SCE ZʛA1˗SF(0Pʼl5,?r.__B#_JD4Ke`h1qb^+zcf$ k?F~;/^ >*+;.^ J݆3."j>%5T D TKEu\_& Q>}/\Y~ *W\r4|ˢEwк&654e1,%$ &ٻHu@ iQ"+Jt\K.\r˗.:9CdMlGF&X\Ҵρ_!(F$Ow|jo irKӛ[Pƛ1SU M7@C'@ : R˗a\t^ƅOW7j7hG z&LIdΈ} Ro[VїR}D\7c!V4m+EMރjR^naY4 ~xoHCRq֥J%JыO/,~AKR٧xșF@ZkR.,I^H<#\$hyCG2$hX2wu1-kJ~诳"j+*X[lpW%{Yi$a w'G dR&JytyUi|T`ZA\ιg*-g@W2, !mzanagJؕꯑPAxrU̜0,{~[$.)ԁ'5mFM&dCPՋV! ] pguMIמ=M%pR맫z@aHPξ''X3?rZY%"t2Km&H8#Z8z 5fX=L Em$BzYD~ c`0p=ԓF*E0o3Oto%֋ZbLۏ+;,{nzOO9A eq0jr1.Wu#‚lva_׊~ y}Sό.tjNfDY;f')h o֏l[$D߯><XRP g:xڔJ]rMdS^3̖ܒ_누/lm'/-禬¦5>eHK)ˮd崵ٓ^̢EL`( bp njH=z4YwoC?ؔ~,G B[ѧ-m6o֊\|d|̮Ki)!ip5CI~u(,sԠz:2W/I{zd@;{c%v~#2V12-Gcތ)Ztc%ZS$՜+cA5 n拜Ŵc}(J@dmĐ C+[y Ch *0-k0OELJ[=L9e"7C$X җyMcO(i& y`yV󓵷EAqQۜ$iך&P=pFw=RQ{&3]GyVKL:l$`UAH!K uMsƉ!!fv~k#pƑ siBs9XXJ3='; g /Ce5FSnvdEٴ\!ȡ;ǭ+#w G%~ }^(Q=w5\ZgSxžtUg4tTm^Sn̞1 ( vI#C6iƨy5JY;3h6Q<+ş4Xˌ(َ*+撠Dn`5e鄙* b,ۅY]߄TُP _Rzoe\X򝖲*aԚLKbǍqQp_ZY]C3sjԖrr}F˚s|<q©dGEJ@AX^>ѳjSK1K1:@,+W)YZo6|xjJcY-&ZGvÓ AG-Ԇkgy0]X04q$360`7MTN2z9э*_ņ^4ƃvO.Շ3JIXմr~(~W( x@:PޏJ=i?LgI|F!!{&pJKL*:I;\:DSqCU"틺w \lLk:bt"퍗H QU} `r\dդybX/pEm! UwT.`8}<ȓԑI|ŠW+Z,RQ5%\ۏlưfԧyb))Xj7_*1kvjhRCmvFe"5z}lW]3ŋR3%fL'lIKacE`7|ul{VSt =X֠Ua@o'ELFLPiPY5L^xmŲk5)\P;EǛ0xcUBjH7bApLIe?.,s_Bpe Ok~' !8?ޑt_ͬHZh [/C);ɻAOQQǁ ⭈=7z۸.߬6wIIh:bPJ盂O 27(W%c^LU]ɯo1;\1-=ɦcJBs ɫ" SL)kޕ!yǫ $}j>)KciHjW1/]w@8R& D"sCs@rŊƠXƝT]*{˪=Y.&:܎3ojƂD]w b M]_{#ggm7;uGM#£9[`/w͒i lot_P~p/f_~< {MfR 7Qcwi'Ku%fѺ6{PIH d*qR - I."&D8ۛi XHtq}";3-/Ѐ|U4Ry|;)sN]SZ}t*5?i;$T^iW% I\AgVKBj`ML9GsO%(7Fݾ;$ܵ(j.vgi9my\BRGp =tf.'Rؓ q|Ý&9+ vC8t;hЩAROPmQs9ot1rKnA<,28D<?&ȝ n.qV 0JYn3-;J8o=1\0 h[f oGRh!Dq+ze zLFӉ:_Wh[tP&05..113 K*T0`˖˗.VF^]h IDƷRCTBJGlGV'=c (\=e F 5cpG01G8!s ˜G6rذ.yWxb$ajJxdm0.^zT|5rhBEд]gޝ \4c=05WbDO)N"1 G 7#!&PQ\;>gbve<2=9e-A*\Sdt-KhωW*T~r>E*VP&~g#6 1xA0YYo5xǴD;K`aR{͈_HYaiNLCu-#=P*Hȝ^e s+|͜72f(ʸc  RiEe:V/J*T\qs.>ҮPJe@iR.=1QXEF<㘑b@wT ٍVJ-FKR"S!ϻ܎^ҎMD;;KTES;Ι̳7EDB10VIh34V,u\zʕoZ*x%e-BX 0B7*űwE^V<VTN7Bґ`GTR1r)DȬbEREC&jM+Rzb?"W~[gkmfLr#15p"JArʁX*V4J+%" ˉnцcX*\DY[&e`+%Ħ3@1| n ވ*?pyBs|E 0dm2 nJz<eja8xį΁"kz߀!.U݈h sl|pv|gF)e.Ӡw\L6Q1yR3T^qC-cԛb[ϔtC (oqB0̌A)YZ2㔹LV!)̮7j0Y)H\P44c.\PzT~5^/10(v~^F>toEeMA΀Q=h) `^)5CEXSk*q`ktw!UxTB],~CDk^2s~2DG+rjQ+K,iZ߂,*'aboh&8ǜG6* ukEˊ6ʎl[TRZB:g ,vp 0Y%pF*"@Kt@r5̪밲.Epg8sb$" &"%fH"3C%Sm3&$IRJҥbŋ\4RJ֥x*UF J(@x lcwvħ1{KXƅIPRbt3nJf`7þS,!ۤf Ce0ReX!)y AtfR6KxxvoD͇Neb[j/&u~ tRΕq2o)aIٷu_sIQ:;QzF:TMDhŋ] Pҝ"wxhb0! 1`8Em\+? Q.`h@]"E\Bw Ui˘'rw&];ȣMDXQ[Ӕg H嶘0O5pD*`@FN#nXu;Ti &HLBt`0:Ac<튌_h;"!F\aTfQ,4*P EXcE;Eqz}m̑,EGR% c˻08ĸs6-8^ -PK yģxF1 ft'^>J+(p6T[\M[2׬Me`#0)m}\$gx,R@U/f%1ݛh+ Hn!z@D8FYmtb&tqbdanVS]K4 eBEer6km2r8WG)pRMsS\Itܜ#H˄BΔ>d1enc'I]fN *vCqC Yn"nQ w{_ߜ!\&7_v8E.;DH٪doҶHؕK?pnd% 4\EXq,Yqe^,eJEG_MޗH*tT-:iL[WlȄ( /Q0%"`Jh-opĆԡx(%-b&dx#5 ÇB]+r0)8ZİԥKoH+j>lewbxHMnh*f.*0 ,.\B$$ P q%xKUoxWyJ&&r #{ECwHeXr S-E.+Yql!™"7ayJ3@l<6Gcn9A_Hcc gKWYB3{́kvcf&9{+SȻq8RG&zFm;cX}̰AS)lm+JL} %K J֥F,rlg@@6_C7\E(!?N"|Fj/a\K.X|"`^#ǭ,:PZ\eG!}a16; #Y[cN`W38+vyGy2..Lj;[o'*X28vؖJw .}L1Ĥio%'|t~b1_2}%3+)(t儠#*Bf\X[B(7:L9\WJ `?}<+9>VF{w漥[˗@Y/pUD.ZL1nGHe[PZ{\q g\fuQ=򎌴'zsxNFM{OyS`dº)/8C-yJaTh/)bc9LKffp)|BTjp+kV\mmR}X|O;/cB""@FGV |X R^-Ҡ@h.d9OX GǤS!G+X6`Q鞲r2ˆ4u:'IuBA3L 9A*{C^petACfx.̾p.N,%V㼨83Xq128BG lfW:ɷ^bXJ Av?lU-GUyF{":m 7u%؝O6\]b豽* Z\l{OYZ BЀ޲z-/7AT.*ͮfE)w0=H˗/Ku0CKKJH-6b#9j3"hќ0wD&7saMd%x3y4m̚*w`o 8`IU P[ڣ7m )=nYIDUb>/F-@# =hZ-qC)܋*$t._~ۢɈ\D78eO:T5XuU0}=;BSfv m ?)vw8f3ҔqH WhWMU1G[F#\;{<.\SAt3/J"Jpa|7%H$]: "iX,0IZ^/LCR1LEܩr\.q3Pm霒te$>44ˊmZB(EW=%|r0Mľ:ٙCaO(DW ;e`| q 9%̮F[ gh>s/r S$ec0*Ep=/HB8&`Jƃ^vQS=1͋har %RXEt I>eo:!WZ\Nh4\1Ѣ]To*.faYr,4K!+Q mʕ\F)֢tnWg̛ ՁIl=Ҧ8]9RW wT2h(@y#m;#X#!@B Anv I{V`]Zɻ)uW0(P8'6AHTS`t ^Rti/f.(ٸ^ظGe)m[7Ob"fT=h\ Ȍ"F(7-_A+_~'̢S1|](q=8T2-ɘ dܙlt33yL FVj$S-#8S:|/u#m82B wAu=gG8ǔc*`CdSr%0@8i^ @QCxB_D(o]/yNP20Ŕ+dKʾCF6 d 9+8+P ܭHv%[V^=*҃LE5WvNcd-kf^@xnw!虦[F3{@yeB= &Tbfy݉nȏxbY-;Y)A(bawfOKZ<\>X.f;̱tGeE oR &FXl 3] PlYdeܕw>bIl;B7\G*lG#1g$_i KG@ZlNs23la cզFJ>(A; S&b+8󡥶Mvs[48pz)n/IG Q^&-YeK; :5*lS/xn83Pz\`vuzJ64t. {Q&%,ķ8ҼSn/9{hs1,hGsfWK %Ppz6&,s|.pvF^v4|K|=$:$E\mzDFE8}1q"EeK6`y-sv*\*XAPكEO"e'Q~{@CՃ <%<&t︄ٹrI^rV%΢mRWL)̌}hr,/%Y*PuگfJUrPzȃ {6Q*Ez9rqn[vyw82Ƈ[hĽ嫶z7xG%X1K/dy>D1)nX(66Dۜ&qAb^W2\c&R V AUl\?1wZZ\gi2ts|( Zz(m$@qSq|6P?+T_yN)M+ܙ31()6 #cєciQa ])$cuBQ 貅W((j;J-]&?2hꩲU߃i˲W [Q' -l6v@` /rQ[ /ti @ 4f{Ņo,3|Zi|a3(Ҩ`>ӗV#(% D(y-/"m 'ψeo?!c-,6'4y+IJzQ\CDMʖ.1cGL0ɴ:ZoMVX|_ZcluU)Q[CWvko]ET- 00@0F8,*kvLrLdVp^BҩiUP*c}k7 ٣*-cRa[SG.Ym̸!4BB屻vc Yp8ؖq )pKRֲ ( _=wwDJT ڠxQC]JbAYn<ݺPvQ@ v:BYdRTuҶnێҷh66+9UXNns0,Ȇx'dorkfS wM7QH~Lv_-Qv8O) [Om-^2X~000;:'LKKBeLF6( @]0aX[W@Be&v%NpoB|7:e~$JCWaR )dG;GV"94~Q\D0p5 G Gf(p6y5p֭DeUgkQtH)gW3N+͝,˟Feg#s0 9`h x) ]TlFzMtF2x7 K%ӊU`9YA͉=F`-ˣwLӶmύv98z$nN,"el2\ݓ1e,qWܹ̌]jXXy "ˠ\j0s1vvV^Ef̳vA7q g7wȮbOq9-n ვ֚,Ǖ;_l1?RwOů(BFg >RJI؞=y3ln='BCin vtOKylWj- ywΩ|[J~u1etOHe8&[u>`,ڊ~mVF9D#ω1[,W/cLb؀ Bֵ-!`Zw{4g)ܰrPl>0SbZEQ%E 6]*|t[G;+G3ՖbGz5[XYDOH27m6y)XuG*;QQW"X,ԛAr=AޥɌP Qfד"WF 8 ,%p ;k."oCUGTvAiG{`[w~b9<)UitC+;>X&jn9C-l0]qq=Fa--鉎]Zz/Z\3(y37@[z|>! _ubqM?dv-N]!x d9G+T̳:)ԯh?:;_W,b{0j6yIlّ8%wAn>yKbJM0PI z #[6揜Wn=XQ !hpvq$.c7 [jY/ 3V_{jYiBAM'~ch(CdȕqU'1PKCF[a܃;k|Eo).,Į& <pj͏x[bm .ӭ1-?1ܕJĮ>X[|˽. ÿw?r=\[zmLG^]e^OyiL- yܟ>=AdFt=Wx?9܏R$? qNL4ts(x)9*tG`VTݔ&-V/.T;)\8eUXd +ضS(㿴}bZT hkz XP)\Xv`f QP}>HrUe;Kʶ2pF\uT !"o2=Va7I r@h.οl݅WVNRb={x.l>p{˚䠾V>alΫk(mlz:]ձezMZr"'.e)X̀ o$zTRq.8rEhI,+ģ\/ܡRr "p')`"d_gs_FbDŒdKGwٻe`tJD]97.T*ˎ du +v-;‚9QōFWfk )IrF!= q\sKG^"b)Od;슺e.O%A8IGyQ-kK­ es~zSR?_[?8yً0/$y 5ڧ)GOĆp3B5',zl2WĻ1 i̱~=!1>o-WLF{q?)yكY~n_>Xt~j(󿛊\H?K%NS&w`% \$"v=UF/Ot?kC670|MD19aUKx)k X߲͘>Rig daݖpdMȪڛf*` zPFd> ;CU6+V]P78/a3k|kJV{τ ϫ.(DoCN+  |jϥo#"1U~aN!ߨ[;RV+zt PjKC%R+0v^rMy ߒU߂qjCl\!d4'j{>"=Dk"_ c_7<#?Pj)X#zP5{+#(DP \qh@8f Yuo2a|%6SE-ba,VR7^}ғ"Clu"q1a.C AG[@6<~fޮ)[qLtn-jB3^J76oʓf S:JcΥKqY®oɞM99Xqpz=7, [PDq^0uD˸?2 B7 e*x>Y~h̀hkKX)+d̔PPhS(|u0Ap_ ߏ[,*!k vcI{) o'z҇~͢m A%נ KBklkSԷG~|GƋ`7#9|Pȏ@oqHJV(:Y%@@doXQ81yW8Zo(Z޲}0Q&Ͳ #%5+R M*x2 'q,WW[̏eD0pg);=( Ti 8:GRO[`x - cdʬTp5aEzw_TKUkf٭->Wq4 >k ]5o`\%ꌯY<0r<*6bA?**<چH8b ?k' cAJFK?8&_P( @hAl°0qFпI* [Uƒو xV˥t}, B La#QE/dtX)h;fCV6QO3{\{m\GY]fϮ"6^VL.l2՜CP)=;ʓTY5>#OD_6ojwL"Z5y܊} +Th,mX+&4@Չv)CzpF+"/.Qf_d{QN d #S#eC{`%`1ה^"_٩Sy$ݕqA/-#yC"ub3*ҟ0Ak*ޘ@r)PYSh_L0BnKiF[,r Զs7_MmyTgXpBukEۑD^[6k;Tq_F`6ʠC^Ekх( Icjr9Rb.'K(bw?1j#_baI'"]ۍe)~ +Kl;WY/x}K"0TV{$=g`dܻt9m;J=ryj;@dY@1o U.ޑ8w]̭ƒg Ummd$c2\&Q@AEibE`'a-k;,#8UfERQs'XAv3R7W+6 h@ݎ ɹ&fgH2]uQ{"tDtEv!wRl+*( 劻 t[~no7 =Fv, ej^!G"-.Q<5)BT/RȠ)CH4UoD! Ad`Pz,dQQPÒ0a#enAZőxfTCV93íYlޙE&$YHUcE XA}i c'uJ 1֏{]:+.S`bleΥ#{l %Qsxcrow{Vĩw r(g/Wc)m Y]jGD ֡oՁT{FܰX@YvQ_W%ԴRg4Z6%E6d\{@ N+t(6HGXwpS+D{G =B)c"8 qlĪkB {|Ue/'BBD$=)c(S@LT-ŷ6[Hy!ڃ0Lm",/q_jUUd1@  /՘9ܿ̽k'LAf`ڇAG27w\ QR(E~9KW?nl9, ̅)Mt4^chJ{K%b!DU Km L*V7r8E|Ue`0l g.w?KW)]`85[C+/Ku^"'LU" OUS(F^^mS Uq?s!IFM dݺVЦʐf E(hu鼁ZӪY.FCr%((9mEPЅJ|W&BT;*T u/h+oa<8%܈VewKJ4P0yA!nBnkb pi*7Kަ1 ڷZ/Ƞ*_N/بl6c o̱>ȅBҮ\q ?1lw}aŎ6 *cg(}.mTbҷF?xV,É7+c-KCY'] xMmb{ -㉰[5\7/!PGliGb;k 7ߓJzAm8T{LòXE \^JfK@M+{DǣxhqB[KV/i@upb q2\Xp E^j`ꚪS~j].[X`{u}KTJ0>"<{Cenu/p.̿ b˛XRC}#dZԿ %de \W 8i눽wY {ۊ3t S>UnXyؿq0ڭSn 7-"^,!ڊ/dv_qp{KAosJn#Xc9–<ѩ1-_Cp= + ^Ǒ1*r,zZ:t0m(70?)0[_Zg}*o9ϛ+c*{V"^}l]ߟhe+T\y)X/YF®Pcwa>Ī;tٯLpo%{ۑY^X&S(Nevq. f=Ń`݅ԝ9x6)DBY\o~v +ܿU+~Jk_Χ?<EL<2}-rk~R҇!ˆOp>Bo?3/kP[fbu06&2~b/3).t?pR,WiTm_fW+blc|q+JK/^Wi2Mbp+P`ۘ 2_gj,<@fݿ7-U]qVZ S;zAQKHVր8ny0cInѴ'` 64*⇾[0 ڪ(\! Lʒ-]У"vWxE6ġ7k;9wevt[PXe,!RbY7AJb5CJ8*p;]][SMk+U[ *LQFME74 %B̈4(0튊ies}Y1jVFͻC)BH4\IB 67+ e791V|s궛]P#pz佢\~MQt2H g5bŽ,LQtǰB5WP-6ρ_pصSA*Dޞ*! rw0PABm/Oz kD|"sv%O"e \=Cf[Q)U2 | ,2.=ӻ59@aқdW;d(k 2EqVݟ*MS x5p*6tW("56 5_J_u^F_L>'2pMЩ>Y_CO 7pJ;>z?gp6e,l@vArCF~Z;ʼnuc#PCp%aܶ`o7.}^N_S;~(Inr@ASné֫ʽbвIP[Hٰv[|YR:V~uKgy<U wjz6?dL_7}O_hK P*=pJlV & eMbc$:(_lt5)YQ:]Zu2vH>%gqM=ŧUpTT KX!H)7z*c(.ϼx2s<SInpJ No3ӭ"{D2S&VW/F \ Gڱ8ح#!k(ލuPbf(8:F XEBd/ZgtQE.12`WѕW̩ex9܅:&x vPLlpP'4a-(ۃ>؀S6oHK%PVV5NñB~7{(TeE6ф^vB ݑXQ&Ү u_w"+eC`QmvD0f!WFY5Y?v5U6҅0r$W$]% LE*_Wc_ɚfq_9_S>_ED6/0e7XmoYw͈5S=俈8ۜ:ccj=fwl` MTe|ܧas_JM%~1 Ɨe4!Ű(&w?Еn)Kݼˍ(Eؿ*bw]gEyoԻ~Pބ~Ynǭ \!  I-Ѿ0 uW/K_rdobjeS,Wu"`6>|Uy=I,OHGNh0t6OHne\W`}.mfJ\[*"tlޖ,;^m5o&:LZU2ׂ`jITuQhԷ ][( 7lu"3h6USyXAXIb6L/=ټ'B쇀POV8 k,K jePCa8yՁӭ MƔD1P"((e&`۷CR3{Sz"4.-a~L30R'{p]wCF݁`5Af2?ȥlS@]UH5Cksݶ~ D쾰&bX?Y@'"{+3Z?D,'̱-n}o$[=d,pL }dlwga+l7Ǔˊ|hScw'@sQksa 4'Y$~+|t/>d-m~]Pޅ-q=Qu ک *D~be]zXlݪD(,ؖJZ&s|LCWgn~%?D{]WcnD>B\閽esN?mK+@Y/lAcz]UJ;T~G(sx#|iqep.;CBil̩ ?G۫{9WG-lq8Diڅu8"JP^އVlKW丐JPsciDpFPجvWY/th`l!6`3T@*4qW[Amp!x Hv vۼ+ŃNg}y!Na,c'/ "DZP%sM{a`^@-D^p]f Xnb;^ CQV+m'+vm~W>%nܫo[A66B*0rTW[*oo"a;f C{\j2,~3,7?,Az&M|!FꀹF-3?QBu1Mv01n_mܘwU|OEHɃelc/S KGkn*^/(~/pSވ~&ژpBwvW]FN͙rQ,`޾*my"5M3@*njċlL0Bo,9?RJ;(a|0?Jӣ?0 RG^v~nߗwD(l G,+oF1[k~F5akP|@T=*&!OLBStgss*LD+ve8@̸̪SVO:=`ݭ~mDNYKauiVvǝ+ z\s2 |™ܿUsy' 7sgh§ 2Fi_N;g~<J_F`WCA?y ) znM-ۮДۍYe̼Giҕݮ#X6" R݇7.➹؍+w.n+FA*W oe.*h7׈?-4~p[,]; 7;oCw'pCEnV_hQ;^m}"ܤـ7V\{CAD(q M2ߦ<&ʹD`݇.c Z^H9qW0hnR9|J B)21^+񆆒%Т+jþ؀b1E/Ua:?-*KÖ0Lit5WֺBȚ A]$H|lψ;q ىK(\[ݪbnPW"S: fNiQE/{D"u`e V(Ynimu/M;7mR^/:`ȫo=@y2D, nl70Z|]DQ6c>08 H) *;b/6C|o^0+USV%4vJ^./6^̹"햬*vs<䶭ASB\Ly!bcvx]0oq{/"2C+C[fB"7Fb@b3!jV{pʇ{%=_RS 'ԁb.Yf~`6qġj<ã6C0)on iF'QOqY@0|?X;b5i4{f\C,c`;?0oҾv3/| U\P >"V_w fKeZF|a?qMv.R~c{ :` w񕊪D_tM+Z_fw|mD7A-6}gElK"&m8-K/w^h;bۅrK䶿k+5!pw@V zpZrt4\N ܶWۏ9\"Ul *=ɘyCHS0 P)4[ʼF⋻FV(pך1wE5*y7Ch 4PGZf\ 8f!X[q0ޣMڠЭ{@2q3ZaѕX@ d%EůΥ0Y*GL+lV.=]l8i=bP a.IR[ Z`(U 2>#(q$ZtfÆ`,Ac3 y͓?6iQwWf\=iÿ8NA6DQhɬ5Fx 8"n*+yH F XY}raݝMaJ߬RҟL2=P\'Pɓfm(Sl/Ġig3pT|ˋs׀tN]εk"n>UgrMJmg\~ٴ} ??}[e<}U(n}R{,oKC>~&<4DœοqX64:mo'/zŹÀeט=L*NGR% PmRN0~Aߝop3RK3vy@BV, u77c0-uZF}`-ΰ;Fbe#F*B]qL^-%Ѓ{3)jJ0QJ K22J*[Gbz[U/MP Vy\o[׹jkkf ¸!3nm-*hg~!Vt) ,o8XVFJ( MGwSk*;a-,r9zނ,Pr7|Ƃ(4ggW beg&*J@bEt"CIUJi(XwlwĠ)'h(v,UH )M2l;epXoeJ~rU:ZH5!ZAl9VmW;]*ǿYjVlWF6ȧS1.ϻXp*iy3AVG#%Puɵi<*l%KMapwYlwoI+}, ?n'.?2rJK:,Q PW,^ɳ J'[>)6@d~ِ Gz7ɱ7#M= AKEl؊P/ȸпȼ?{׬h"R[,SHER˱A{q% yf;Ε9ʿ Bُ }a'qnKw9Dz-cSbs'-wwEmY(/O(<|>;SRb?0]v2; CJee)n?d]V\W!ړ_(i<A&hD0 E 7Z6=}bKf¸r2IecmQ|`dm8lB=]AE=I2*";nb7ᴺ(IJ{2iJBѵU~QJkCӬp2,zCA1M/2RV*C|68swAw@`7`KkU")fp=7b.#ҮlL48Qi]Ќl,!LT=%/֢`:WD81L)VW-jRxjas'Y0/[8 . ]LQm); pJb:+6Dbs=ۘkśҿcgK9?0` BF38KSqbUV-(8 J@v=0YQj a^-T:Z;mZn3 J-6oS>" 2KAULBc`NakvM78c̿kAḌQ G1MY]`>k=s.Soᚃa-tQ%rCʋ7ڕm\ߤNDVڲ%t%;A+҉}S<ć$yҋ֧I}6;{R ?Ec#poє\U*bY?9G0[jP*shzFUԴ A%.~~"x匫7J>8+g"f_uC(3תBYbUvX ʗu#zPl2?o7^\@,mD }14ҜCi!7z#2qF<tJpXKQ+6EB^`,Ͷ}:%^T3,beJ`/$sw>~o]l^Rmы/;d3WW/[W_%\E]oAݍIG亢[m88 ̿ģҖevߤGSw0uL Ġ*e}f(Įը uCd!gR^ÞB܂m=6v:h J-hybY'()"[_-QͥO-W7zQ@2l/  ݓ.m=@Q+"8Wrͣ1U+px9 _P':Qd1Y9f*i?fXz!iZ]@{q:pstW6 ')Uު )oU/{Rpif]vܱW|3ImLł،qϥטX)h(+`K}6{dP``n!M 2Zy9cR;XG(fW+IPՊfQiHhRl.ؙ17Y*-u@llzQiY[*Wī6XTW3kX{كsA@'LZ+beeeK(oh:"z :v{LjS(뛺,$ʍfb_?2Gcoٕeanq( ߤv?,E@Hh/,JGyOzK6+g⢅ͬC bx7%nӂ5z7mJCFLoNT 5($-Ņ _<9V+|xչwJ<#_b>V~T8!bUt.(l,RvXgrT+K.uʋGI4H/a[ * FUeU̜˚4G9 Qg~]R^̈́&+p\aK6!F][[ljь"jQlڎ}&Z&U%X^ U #sq?e&+B#~1L1!0m(\Z/#1¯t#;(hx 1]l;Ae" R,(W7v/Z@ϫ!G ~# p:9]#@Gػ_<{'WjF<,>]c̤-0܉5lJ]=j/oinpdz4l6Ԗh;Æ-f m>jhF1Ԯh&ȠtaRC*-@2KoH|WP2KzšL>{3hQ[5d!P\Cϸi7wFV[O,r2>H+ijq;2/OFabG=o 崱(UgrG=/2m8̉W?F"6[ `X; N#̍t^IA+7K^N}Rg\mnf 1Y":,SuD*e72c,樇(Gwc< [1 /c,+M-r'HBBUM:"y `Krs&/2:@|"[ɊcsQ5,Ӈ?4+kN`(FbՁL2r|ni+Sn-m"vIM P,h,*)AcضK F%WnPoDoS]71/Ÿ6ʫњ&G TlAWlbc"U&fUZf wHL]΄i h]él·cv>GH M#nP q(=h|9ɼ2 PSv]1Jf]}T,)8:m@⪺Wˇ ]3O4r`#iH%L]h/bYeؾW'a8(1sA7^_ZSԁY=aWkYfd2{KMlze=48}:8uT]T,"|۫gvtK?QaIa0J,[ -DȰU*9wNA}?2+}d?w@DIV%WIaDܖF((tQ50^`t 0s(i07+b09C9:A1O##*g7 r\unKs P3%2T(^ 08+7ٕ%BLj= c}Z[ rKͻXspF ZPg6AR&@Q{/#:ƒ!ɕӊd g jiȬL@XhW.%f97VH, P+mh)Yjp{2|0jcgMOp4ue6ی[#2ڊ2 K Ucb(" &[D#b0+lBGum#蕏KAOrZ!7tЬ,;\l/&eCq qowGY>؂6E&RYA*?3GUnL[T?0b7b@y܁r8'.]/9Eߩ%jqo2 "qDdVsEcpLciڿ0M9HJ 7qX_fK~ok"zỲvڪUGX(4U6,bVY5rw{^NP` 8X,˞v>lƘM|K3Uq~&@QڌwFmc@zoP0QvMS9hՔ\B.oHCͶbDdO :2Dw^^RW}PP`֣h`%sS(?#n)[ Pe˜z `qDu#s?3K뎐6$0YOBw@U5azNj^ RDɟB.VNϼ%q(4ݦ/HTA@ݰ#3J n&FPv߈+.\5r/-#F;v`RǠ@DptQ˞:J@ɻº8Vr-o Tq*o(u^ N(G;^Ύ~2òtj6[b}d1[ԲmS: ̪PV/x%tPcqWv p0a!?KL4~ 5vȇ1\$][N%%%V~qcjq~PLiL~k #G'6W4+/l6 n*m,a19A )-ȗ20qr q*O(jSsd%AYg#@)C_졕=30l,D+!B2<]~*~+/"[TQ/;MBb")bW 'uf.UĻbd[iUߕӷ1Sˬ+"TD#@o.ʣ[ PYE0vms2?}Yzfa|s2]yT6r>L@ 4B#[m+:?B\PSj!hn  )vzG5Ohpq-i[(g'ZL$@qa^ $o3cc9%[  2]%F—w5VBŀ!(X;@n.7;iJۚq۟ip0l0: Yˣ*.p.V*w;G:7^rOIuΏ"7`+/8s?e=nR,)wj. [._JZXQނ ̤<32dF+?qsG=Fp;7:u f;ۗISfuHxcbs0{C79`%+!W{fXJno \M16=<$O6KŘX<ٳc9f=w1Yj#JD7~"%`[2 @[Ǣ{&TU 9:9\D`ANHciGCq⭾Oi!*7gy59U`*muRÝIg.`l~&hP]}9l9yYEl\(,JezYfs7ŖzvgkؖmZ(e5/;~w e@d3p}!&[^ۧ<@bow G`9)eR<>`X;Y|G !ķtݷ`V /HwOU F oCّ <]m, UztW60p1Z[N{ ɣtQMBb^PFІI[8lʳV/!lˮܷl SJ6E]Elj|{7\Ῑ\Wc :HHu s׮`-y;KЊϼMdK B&11?zWT s@@A;{BȢvp KyvÇBVs]89;odF43(=tQ=7r#UTyV0V3Pm$jPb2f؆v{")AºJd4wV(,wTZ8&U(e;w*j.Pz*mKX*z"ݾ(֊/.v  Z).s }`X(9鈆**np@Y-Vʃ^No5$[ީ{tIJ;]0Nr{cf5((LJG3d0F[Ȑ0oYт2,KBy]Qk8/U@^bjzhr0gE@Up vnE,@;E{9XF]}eCcޣx|F@9b |+..טq9I1ډYQ/0At\P1.2gm%%(FfsT |Z``AG-"dvޥp``I|HX-B!ݳR@h l\`qEպ1k̴ln7)YS%70sD9aY{ ]8ۍ90]ݰoqUauIlCF+b֮FFpcxCj`VB[Yt)w8Hƥ\mܸj%ʐJoC\ o CP0K@8cY JdXjȡȐpMr =``m{9giTUE똎sA3&¢ ()֊ cuV(D bb)MH,lLbY+fv͑#R͸a%H.TK㎴ a?%'*[3; `!~#)w9s FeRxh.XM͖˃hgSY/}Tvo($ȑњ@Ṋ+|@}myzFXfQ)M>n/7[M A2l(xGqWze490i5IGq7AqoSz1gN`2SG,#n )X lo`,'v ޻F*Q V/o][1!3-4Һ!0jU1‡v k+.if4əE0#;G,RObDI,*6ش6E*RڪX3m|f?kz{3E.n @ąIDK|\aݮ#:Lkr1-A3Tʢf].$2x_ A}?a;ܮUVCYhi@]@6R ꛿w`௜ Ki0\|'ݠ%fV1A~/BgV8EзppMglCqã21݉Û1[^ib Gc؀`(g; ,,}ySBL#*FѦ"Db:K%-rP: l<͹/06Y_`K1АO/LG )ƺ1XZ2+1y3ΪƋ,cq8e(gxie;P tA !))dkZ@bEvMoDXt9U@9?8ca[.,\;zgR b)\eiATʝCJ80Wqe\!-,S B* q )fODVԮ!Oar*.ހWf͏{3o:эr[RLZDm!*"28}޷>qQ꒘V2V6^^ h-6Yb010%FrY8NA%EYu\ڈ2n0hUȅ3*ce{?Mw`)mH9u%E \K ,eзve~fZ̐+6ÙShA/tm~nXy^(16购fWg k**=#VP4R*n1QaC8yoXA#1zcx:!_㞰 Z1IvXnaʇLڳ@-]3#0LM7I8(3(,hdBCcL:x!]%M ,G.ؽucr^ .`*L3!9s}(0gcפ h@&Y({ lRl6?g<]?\ߜÜƌq n^#@-`)]h@`BʞT'R$`\0 "kbhidD JwX[;|Aj榞xY@b}X@vmʸRf3@&G0]bHph0Ax/zHJ"lay|<6 Jd0"*qj n[c #\[4Fښ0Ƀ7f.Q- ~'B@,fVv܊9yt)߲` &ȶn8:s oNI@06{a#;zq 3/2(ϯYVnhaŴM\]s:KF +Ga &" 1 *D;:ȷ}-zva'>Pl6#.cҖ<LVXc GEZ׽Jz>YtL1A2΂:d=ewoaʖ]$<ԁ\G37$y1ꑑ.jwStP .`^{*WLTzz,K]r4<ՏAVNnuͦڽ\BV?22SUzb 12^ڛ޾IH6sy(aW(-7zA7U|Ww; \\'ow:\QcqN𙪂_IKmb^ƥt8=[öaWqބُa.!֛wc=Y^q/ wN7& { ܕ#(b1K \ʗ*WSܽ߉,+sE,X3KUQ+^l ϻ3bs0$S%vS&'h8x:gf@Wڙvr/!& ^P0 yv+MW+ *} /iM@Ѡ(oI:?  `73m0b kE6yJ ;@YG Sy%zA McpKZ6XçX; pdA9kL~PnՇhf`1KUj}} }w|$(,5WOVKG<L@1Am[9n g5xE$o-Q*vMKlU3ü!6ZbJ,uev\N]7`wTz.r#O@g 74ܟe~p>E %R3>]$u ?ey028 S ыPnHS)0 {=ojߣld Es[ߘ {7yW sFeI.ǜ8t(7I2KV7e `'4@2c(Zng9j$Xq0JXъpv9^=b)@z@ш=#^%'([X^#kV98\^74ݔxcx8H 16Le ;;e0LQr/~ʸ2n`- !N" &쵐Ms+z^E,;˗#_BdqpXx#5rKlTOXJ (vpQX%\T6.3a"h"~Bfз3"Y,܂7%ރ,hA"L=OF ]XU? . ̡Zb"kxB)lɗ^n°m3 %y>V  Yb x,YX!^%ɪ (T,Ņ2҄O,t1:e[:2u^i*|o+OcG-0(0դ8RkV!j_V֡[6{:\u* ]7ji}eMVQ2Wf?%`:R/TXha1"o x݊o;lF0+iIɢ\@&[SkNݸjVQX_of OX9oyqD73 P%to 3)qtܓҞLA":ӂl^{h; l8e69%NMP7c%)g6G fҏUzVi]XOhn )h6̷v2%a*UyDcX $Ն_9J,ڣBRfJVӨ:v%K]) 6`{1Q>4;1*h "l&Fp–?p)W.Xt>R Qt-EAHB_d-zWR1 :wK0!S6z8Gd)mC/<F,Y-W.ϗF^9\ Ċ{ 0Db4vil%:Ōg&̨&vbSmЮ2wt򖄹=S5oWxD*L k0G"z2*}ĵsNƋXv!:nXh'23n,Nڠe^ehY0Wf kyU3lF`Ew! 'y^zƦD|1TnܺUS. nd ;heIZށ $eh*Wz"5uฺ, 'Ѹ2& $bJԩRV*tr:^2BWѹrr蒣˄IIZVrB/ +rtX aCZ'rq"GKn^R&&& /jSlCQ4MkVV_"xn\$2+H.5??kEY @Tj*T"ireˆԹzTIpeѹ* .ThEr\}z[cjJ* z։$D˗Cd\4 hEҥJ0`˗/-u]sH<. J*TbJҢD˗.^.^0ж%J:TH#.\hEr֥h1*:Cx iQ*THeˋ.2S,:H c2˗. ~;+޷/¾0CBToZJ*TaDT Qї^Zx0E.\r˗.\rFT 4r˗/Zh0ҥJ+TQ"ipuHAD"J! pe hbrrʕKD0 iRIQ#em|n&MB/SJԩZ׊[^AU*Q*TaaM .^Oʉ1h@V*TjWҸDcxVҥJhAJJipe>/TH˄I$ z\YzT_^+⸑*TJ+Jx*TR.^*$ irVDEJZTH&e R(˗.^Wש^> "GR@_өRxRTBrh 4DaQxI%%C5_֥JV*WթRJҵ5*$|$ʭH\!j5*:Č4 E;ABHp @ +MT^*V+_U+O x ] m1+2*X!hxo> 7+:"|.4GP1cLtMED*=,bNthP<5b^&2hXT*RJ._K+! 4)THPth"@\r2J+RkRiP*WF QAՉH&E.TZ!$aCJ_|+KT^:\rˋru*0R&bZ IRJ:@!/Bԩ_F@_B˗J*$2H˄\z7訚S2DZzT^TʼnfZRipe&&KJлUE @R[*TZ\e%xn" &-`A!J K%Z[ r)/b(3IJygQ0 Zܽ%B2IIIIn-<{%:Jtx.e^21ؗУsR iŢ7TZ;:J腴eo\مAĤu}yvu҄͡XIQVq0!%*LeM_ ʍRآZ頓U:ĜuSZNԤ"i%8a33*Tba1i?dq 0ߗmێt%6[0@ʬ oS.d1l!T '~!ow򔕘^tN 3)*Q%:JңiCz kJֲu0ʩOYS:RbbTQ+)0"`g[NTX@%hQb\_Kq.,[f!b2Ɲ3` UʷG.FJ(MMJ hR) `&#Q)u@0fTD*-niIH DD`:jZ=e:RSN;FS\g.f^ (8x ̊·=+(2!<v:QgeTb LRt1;aMwF0PFh1J\ƕ+P!u>yrS[)*)-Ҭ)(%)ҴTM6騿YNet))D#K-s0({22삥*VYTeԣ⤰L1L7;T<#,6_m4M.ӥNDҘܢQRZj,))}EEK%˗RQY]*Kej\X@̽ E$eCM`T8ᄑ/f8X4oTE\c}F(h>C/P:)*VHI~L@J&%!"Sn%6K#o6Ji%xm-f[!xǸ-!c3 l!h}"). >h&JlEjS]-:w+V0%xYPhJhr˗.b4Y2ͳ(,Sdȕ",b8bf Uis; uc);Lv7Hbj0 ̹~+2hVYhA4*W˗/q'RSxIrꭅ1vק bdOZ`&Deer{D`%`)q- %1SdCU"ĹPKkz߂7Nܖ%%e4bV 4+r评.fW. [E˜ X!rs%J4e!A1˰tB%Jo+D>a&"s ,DhuJG $/Z\qxFWLV/R\=,LD09iyx9nDEK.28$IF&)[I2#i-d jRfa?|JzIČ01Yl@y^X7P0"3:(&ۘ!!RBWbJahhS)F,^_TҬA .VRSE3---%O&1\ a$ׂ.73˨q7 4UjۄĻAO1ثyE֤ OY9"U=A6Ee̒fl@żle[6/Z*!V/q̸JTS*SMP Jִb2y}*`iPШɘNf3'XFcPߴ`>#i LhF+YchDʬc1@ez0H\Ģ xnT<5਒Qu/KzfZMJ%Jh6(Da xKr+leL㚍L亄>TrXUNK\@RT."& X,*moRKh3+TjTWM,Zm-xK#7JP!W/C.DH65 M '3 6% ,~e.ef%6T/+iW/*IRywKtq+` &.QTYh\qt%:/J(R)*"wԖ *TE:,TBb0DPKbK#O0y`(1QҌH:VqKF[%a^ pIR̹DxV`+Ri!tׁKw܍Y RH )nNvE78ێ&NץX Fa(Yo*T]'45< Y.-~._} RZӼ["CQ%B0.\W Y`Сz!-4C..9ҪF*t,kNg3^f$(e;j: <^Jxf/[kRfJtJS(idٝ禅Q4ʰ"-LH`bTcv!Y YQRENHqԆMkZҢE0| 4`JhV*]r^@JJ%kWS ^.W(*#Τ ŷYgyA&UC܁ (Q'$E^ ּ/R!@2z/rP xn,p0ևe˗.8*T *.Kʖ5@8+IS ’Y Ȇ3ggfӊQ辳SQ/~ ~/Q Dc"Arn^zެHCz^]B\%ɰ` as/{RW/*|nJ۞Q.00^փ/CZ,OjA"#S:C\rZ*T[nKc%D#.Wt!wi!F=oѮFd,) NgCxuK +J|"r.?BkrJh:/B_ҥLw/CRqH!a1t ]@XD77b(c .^} ƕeu+p%iR~ ߂ `ˋ@J{B+`0Jɰcm[iTk}x=!hs8/r%˗/[zr0Jr^.\|e.ԸZ,.TQAQf+Km@vQ?z[ ^+ߊˋ.^@P~peń40ȂpepJ:F|`T8Lw, Pu2H鈋L?LOK/Q0`/\r˖\`T!Jb)FuĮm9YvۉR[*&#dZ#2b7GKU*^hJ+K. :.\\.\r˗iRF2akZކh"G@^n6-o&XMTK@H؛_lޖ%24a+. V\z׀uZp2Qr!˗tV.\*ciP JxER̽RX(I]'$~o1:2Jt_O +R7/BEzq]M.^CXi`x4 !uc @#ՉmUUz032Dk^ RJҴ<\%J˗Ec*3'2 KhTeXDcz˙1҈3"*׍*!+ZP J*TRJҥir!h@rŋ/.p%A BD2[\r73fX;$ 7fa _f̥G>ԩRJ*TR5+JC[., RF)˴ͪ# Fzo+ :3ge1b̰c1Vİ`K `.c,CK*T*T^ J.^/5E4pC.WAC[C,3lݠ׈ 7`)B \tLiClЕ:@PrZ.*"7j0*TR2aF`VeD'*f&Mm1LS mX :*rUoQcf6?+WQ0zx+JTA\X@,PPboB0]Fك*hATi47+0Jтôx*15T /[< ZW~J*V]k@oKRֈZdTUiQLXHIɷLq+1%A斸j,_L''~PCKzToj%B"F\pY)->3GP}fQoCSHǚrpPQsC'_1jVCP+貥xJPJ!֗\qe˖b RK ٘gA!3UǍ8(s1*YVKORCir*.Yz5,Yrˋ8yU aPȉi7<1U# ce$ 11_6RB,"hAkK)..*V*R 8%ziP5uҽ,zK u!@!BC(ppJT\sa*Vh:C;TˎV+UM ʛ1Z#J@Ѫ(EgyUbGe-qopJQ"Dԇ z\J*W4`JQqucI,bJ(=ĸzB:˲8ۺ;3ds(W0cWC>\JThiqTRiz\/JU@t_˗/Rs$-&jTwN [w[7g@'(( :% r%˗ؒrᡥJҴ%gRJ*Vbņ,rH2ˍb*"V,u.mh´-`4el V.\ȃn!XIUJ!ы@!krjfV*V,] rˌ\JV(H$ę@@VKu`#CAQkZՄhk}GT+ҴG&.\ TGUŋrŋ.T+CDYq:ED ɳN%PPUf :1EX18J5"ȊS?A%eJ,x+V\\t*TFFTj\-^48lQx)NʍsJLfl4a:>:AeTk?5Z\"0ehLL%K!(B r>\t*\rJk.\r_/ZZxRB$FV`ҠL0 4^Z,q6F1WCԯ-jXԄ!*Ta"kptA=҈. 4J ܕ*&`H+W*TZB(1 t50 0tm0D”ĩpI5 $1a4cԭ+K֧xĦR(1%B aЩZV W\K Ha@$'bJ$YQ#iQ>kRbЈ2jh0tDa%Jt*%@e R"VEAKATH%hA_x*TRJ+舺$4B|# .\:$bxGPP\ch2DB2e%H4b$HՏSĿ@> 0ˉT0Mh0t6j[@a,(EMl,1ZB F豕˗.\B.\]or7/[d :W.:2ir@A BJ%Z0TL[@/FQiz QԬQ4IRJT xBpԧBRx*: KI$r,+R GRGxeYFQL Me(hee*TZT~@WWP>@Ԁд$ck2\ aI$ : ptMJԕCAqs\4AD 0ê@^+ZQKfQ1_A`˗fA&. B\X0a*ZWLAJ(pFCGw4t"D`TRJ*T\r!^ qQ,ta/P: M\ F6e7)E%"$j0!*$HVJr5+K׈ B,tB,p%DTR r/KБpB D ́+05`Zˏ/_@F4]i"D|щM. 0%DЃa7*ue~tb(NKC\à1r˗.\J/q 0B+@b*^qM Hhx40CGq9cfX<zq*uJAƱ'RJ*\/_Bz/QA1ARYpz.\pB$Mn ؍t$H˖0D!tXekAֲˡ`kxF`4}wLr.0RrZKTLExn=oUicN s)i:+EV)6 = 4=XK,>%B^ACA\`rC^,)xI0-/Һ";L-̚d#"Ddc :V˗Rn\h# 2\]kKW˗+ASW/9 K4RS 1n[.hQApi t28Z,(eŌYrWRK BA*T/J )N% @An "XH zF9# 0#qTRK.\z K3p*. .\Jr0c`b.4`:FN]%Z%JB\bPu.0.\JW/Tj5)GIa TCgAҷ,$[P$HZ?BUz߂5FXtTQHr@3̫DNRVCPGw8yS' /.tAtN%fQ^_#Hp/ v[lrP"nm)1 4'dV0ͣ N%C- DXయ"zJt^%% ~h`;FXmwqGf%zNKKJټZ[[.+n t5@Bn2?\G;K  x㴦!7>%CDx_]F4 ca+w^]"KZ_eQwG tj#N)ye:B$7tVRmmLDKJe˄:-L88Gs0ʉ9hGm2*mIJBh_7.{*<_;2ylgi5m$uꎱ_qOTU })#\A/ZִrytBre0 BA<1,GhJ+r3.bTX{΋\ppPz7m8cE c޹a6'E YĹp+!!*ԃ|Cfߴ'ҟ-0{?fpKҎ ı2֗R/[ vo0g=e[|l[P!*H, K) &`r;1Z Kh =g)CylzׂJJ3Gyp Le^cK[Yʍr"ml[8b617L4ڶL}\n.s c0YPL@uiyhJN# ^-2h hCG1a"|Yyihߝޕro;Zb{QUxbkt@ 3;̽9>J&= KbrM/KGe|1ZVJA umK%0dIz+#m'D9uH'1N%DH3Gryr[ħdRrLT/m8K8_^ayo"4\07*pe򹖂:%ū݂\`C679:(2QF2LmG pǪx.P$BǦ-TW&т}sA9e#'+9NcZ\p v m\˔q:OW>ʘ6LXTu}nezQ!t?.) +0ĥw}TGsqzN #QE7AIDOS)S0Zc?$e5x)NR]erh۞RLĸ b%Jb!P\0mKQ@ )j{1o'vwń)-6爚LGڨܰf'oQYr1Q2=PpEu gEuX6NtQUK21Eu`\2^XX2bB+̱bfzES$};/IEB)a;wEvhtyΐ KK%s\79dɾ&+La3lL! T4h3s 8aIwc#G_^.]~ ˘WH ($HgL@!}et؈T-/;LA41J2GULKc>\f\;%Ic*PhsaQJc'h8umN13QwPfldY.R. "vuXC#\ؙyne2})8"N{QvTZ!Ĥ0% ylL1+BRo q mo*-ʅLCVum"E*8<20ͦ)|A-ً9/f[E+ ({,VnVo۞[eJdOXf&l@!WPG-=-(9`[pb[ 0Y ̲hbe%@,bRKs/,8#URk\UKJdVG AM00xoO: Hbi΃`-ѼQ N҂VbJ y=&SH̦ tB͙D7 /0\ƹQ"Y,s1r0x /1-x?"HZ3.svtt]oѣd(*r6 !Y A7b508\l. s a=5+c*Pm+Q;*$ü%@A{P]ÄY[Y_x.1\ʨygyMuDEx ]A%2ݘKIF@1J(6\.칻i9s_7.QwGx.SE1*U!Rq`12fRi5e# .XuwpޥAŽc]`+iЗvB1 Ǫt5qeJzA2IKt"s-(mIGH^fa<*͛˜˸dQKe_Vzn"QbS5/ mRR%kC f5bbnQ%\,yƅj6GaSc0@bGinT7>˴J1FوR"8O&=z렏$Ɔ UCd t[|ЙZq0;ˢIiDYY)y q):bK:JtH,08 0I:R#ϽM`89A* =r@,Dv}Ǹ89h%1#7a[;=%fff! KIGb-2-Z `zJt$`N{%J2Lx8R=h.FKhRU,'t ŽH o/p eLAH]W0o93| k@*{%.4+0bc{Øь؍uZopy&M;j(ArA@Zن鈾 W|@Q\\$9"B8iK+OX7hATq;z T흏.Z]`T%ά:SGmA&5h}4˔pLQ=vsƅhmF\,.wn3#+lڸcs%[LFS_2-ITb6%9eS+Z ż)z`KzO2K90i*VQlr)y~C`9NvKK4T)ycAE20e]Ms $QkT_|LZW/@Ľ6mB.ziRйEǪN'ħTK 3þT&@E2$Do-"mƔLZZU8R> %Еhj2J*B26|LNcaM*>D0(`B}ȼ1n2X 8fžIjܷY~bCLCf%J+JfQD^YH4V覐'j0Z^* JSƌVhZ5L+< 0@bEbb?ur\34%A b]F"%K*,U} (U `pLeFTLJҥJ@w%|5/\)M\--/--/вiL̽+B6"79N%% lD8Mng f!1;3w0^!HaQ(bŋwdYIBZg`tْ^#hs$0FTσhEʖ3yiL~ *\2e9 u MV#I 'f:E# t,1zm_qQAabWg{,-͓`&ۆa+3z.(-\[DLM8Tf%G/.'X^R"!/SR,b DLX˔ tJ覛`4ZZ+3K J%zaL )oO&QS+B&J8Kǂ[cz!_(n16BBc oB> 8%W. w,'Fg{Jۉ2%\ e:.)&R!*e#"(4h""岝.+uvL!NeJw-T+ಸP3f#=Mn~C–C2śOjRdܣM2 =O2!ҝ`t6gCUE*TX.V/Q`ƃ.  4)R:r1rρX2H@u +cEzZRNJ/٥+eqp~ ,FY/Ro̰ٸ (&+H! vXaf h:\/LJф^0\;\"etJbFue[謦 !@LD09*Xl/m * USf%sJ"%TVU1`s-ƄT","^#C|.H=ْ"\}%J*-HZ%!C*K-mƄZ _ҧ@hh62Lʔ f2 GK- ՔgE+qwM``b\(_UD^6ie.VLiy#/q̡BY.C*VQDa+Z̹zSE0q%[K@Rd̹r.YH]r@  ΊᇰK6Wr6b,y(*l@5-y\hJޥq}#[,vŊkt^r㆘.1LD` T4!%AZܽoKԌ%JM/[tA-Ӊch02e%Qn>F7 $lrm6BFAc)ovvbUoq0i2̬Tf%b;@s2<@`,Qp%Jq.V[&)Z$@*V* " VaRQ-E.V-ˆA]jT^t8f "MӵKJe˗)%@0.ffH2x]7ʕ(JU:J%%@$FJ+rJ eZJ%%È>} .%eaHqÏyo{p?HS Z%n6^M:Ԩ D@И *TRh/Bc.\~ 1/KԘ4 4mXTeDB.\&˗hƽQWS(F0:< Hl7>:TA˃iRF!\e# LTq.TqJ*T CKҡEtSA\ { . ug80 *([Arڥh2O#ciCc\<ҍE) P*fcY/Χ2*KbTȊq4S.\p ^8r4Q_Ǧ2B R @2\:#MqN1r%;˸}&9EpTm!ٜf*|.\4J[b$IRirˆ"˗KbŗB r@L"/o1L#+.m_bY䛰9J8 RZjdF(LKʾa%)+0~*,G|t 0J+[qXXtR@H^.\^mDQ֨*fZ NY@0@ 'e. "$tHʝ% UXtz:p(/*J͛jȺ߀/z0GDJ*TuXˌ^@TK5] LօhP! .YJ 9!$ sQ !a+1 q *a Y:m!1WhuZܸB>@xVzei~GF,+PhCK~.# ,"0@݁*.+ YtV$7 B-P1驈&0c[+_FсęjBD,z!˗AX2 A)yM (ndTqi"01SJX6Tx#i0lI6fmhoo Z?|D %kZ^eaҾo#.\IL!˭kS@$t^K p4*uB ,.)QͶڬb19Ȁbn CN-b6FdhG_u<7DO<\@ktpR eD1T4JfeXs,{NK aR.ɓ2cŢdTvX W'TTZUX`F\ZRBTDhbЕ*D"_:j$T6p[~E,tci 7bŁp m.^2FĪҥ@ѕ+i^R"jc[/Z2hK˶QeB*: . 6J04 6%m,)zEtEMK-ǘAz3,95) ._(J4*T5E \~4Lh:qB5B$Ӣ,XVa7rUci-LEQmf0bIJ%hEcb\FH3x P%J"4/C.\RB6\"\DaeJ4T"(F,]*+a0c.QPܹ?{kpJJffrCs;: jM͙KO*_X \aTae7UFJ\r L"@*T l#+:,2"CiD̼&Qm".*wC2FeK(eЅF_@ex1<t5t74vA+@@TAF.0‹2ۡ!ne%A+3JT;Yd`nR\4J,0 !2<77* s+S t4pOSite/images/raytracing/sphere_cubeT.jpg0100755000000000000000000037632107312220102017207 0ustar rootrootJFIFddDucky<&Adobed d        0!@1"PA2`#B3pC$4!1 0AQa@q"2P`BbRp#3rP! @`0p1a"!1A Qaq0𑡱@P ?A|VeDMUB%@CKeok<ß]czR3cedT!J3N_:|~qQk*7d]sHeŧ>3lc* B#[̩#h(94UԜ]͹Y52X*D؀P*ƙs:GNVD4b 2Պʄ'7/|bJKG[\%QVtw\:I:y 8)-RM9.Kistz.vM39 %Y"%u0 A T ]JӞR :RK ,rzg{']Ν -؊M5-X\r~&EIRTTTΙ#EDsQ*4ؖ%bPE %:ǧZ3bZ)bZ%;˿`ן>/]ǥX!H 2ǧD^sӎW @TT%I6AB2\q$[Pޙ0 Z:vJUQ+25^QjXD3]O9;ms= cRViȭ*ͮsU+&:y :vY>Z %H)He}2Lͬnje et !"k&$pV4%B'u'?i.IAvtswxcg@䤹%Y69qH Dh`8ɨżfbd 2@JĹqhQ>zL㾘.HT )dIMg>ǥV2\F̊WfokU&R1ªDr2󙶤TT%7# 9;t1$ۓYd5"ZK&XR*ȖU@L\u 'NL Jqru m%jƚwɣzF49* FTf%Ri\ 8;u EI6wY 2ʃGVˠfReP*3mRtg>qTRK$K_Վ7iؠ5Y2՛sRɞRT8!ӆ9l3\@+\|=z\Έrk;ۅ@*nfWdJ@J%˯I|i9w6jJeUz>/:tƚ*QkrMs1t2moLI pA#pnf*JcZvjMYrEmı-SKȚA FydSǧI]3Pfr(NޞנVq|vR:5Z]#Fu:t-ߗDuqL a +Priܕ#+DGoM&Ԛ-sͼډ@J.XR[k>4Kut|/NbW$4ǯL}=~<{8ܫ4\U".Ύ\V7z1ɐw+h$h8M3F*J |~٤&. TuyʁZ]Df7;ྜL\s[}Fm4ADK_9],e\ycרoϗSa6=s+@qH)"6*BT4KtUkI6&wP|5+viffi@k)K1^\gkǢn8jT@ g((((-g=UR-+9ig>O7׎{g *F4%h%cNYMtgbּUHL2fTfMpsɞ*T27J2VZar鎶\:cP]( P;^|'*0tVeg4k>ǧ IƬ݈mf pfh;jAQ4x͊ۙq4̦]XU()5Y.]"Z/;]qq4KӥIWb VX6\.檬 ){0k1C3hDF F2%!PۦwW9*|}ŅT*e`j&3tlhIJ%PqP{P곓T Ed%wbY2%#JAAU %Q3p⤤ CՂĨk.dI_3vJܽ\:VB5+J@oדP*55UC Lޙ5玹]fhaD,B wӞӞ: ,Y@TQA11R0J;&=}W(%S|bR*>}q΃UZ}j{Y'WRsasGzxݮ5.ۍmGRt[b{:Mk6so_yWk~wn gAz/q/'Iz'ykˎIV0%fNIG9FZ8ou7I[gFoYN^ /}sD[1T#9j\>gW%7:wNN} =ZZt[< koIEC902[<nj#}sށ hjt\F:rƼc=s7eV4p^+}===yyg;~sNm(YӉ5=7 t8!qZ8`Kv]MVn"KuޛLyd5-4g&:㤨 @+nfmJPf"\;v@0*gܳ|7.ʱYO1E %Tg~ݼYW}l̮Vʒpwnu"@8:k?L*p.}ysU>\@(|Օ}#ssko K^g?V5YFv-ɮpUt* s=8g^_f7\GLܯ\#Y.7ƻy=sbԷϣX^vٝM& ukⵝS9:srZ/~]9އ9;nW-ۇ况13Tޙ#Qȯ0G.:r㤵jLw3Rawr#|oNcWW:h̙ -نyg^.](*a,NEnrʥ JKMW=U+[^Zt泥L̥g;EFYqSSTNtP;/9ׇ'eSFL*&ϩϯIϞ=]"-°ȗXYvvtd6w7h*V1.egut옋ܳ]RZfe=vQ@CS\},tu9cMB鹮 RWx -BeH6=iJGs͍HltFr.mᝦ+mTo YtC4fWy]u:Fl"\sf>c/=Hkե7nӞU3r[^s%B夋l3$r+BmV1QuRglps):S7N\1Z\ƌʡ eqnZ[I+96zEtܹ\>ΫϧF3+Y#3y7yRѬzԯV8sNƉ R\,ӑri3Y#@JҠrTҧ]mgo>6K Ӟo #)G^MH ͷ:/ï:s1ʭ=o)Όrͬ:Q:st霵d2ȥ}W޻=u|?;떖vtάCM:1:on\%B9ҵerA@1 8Yy/6.r75zURvir-ǻzp{9y9y%I2 BDۛYN.to[k˜XY2̨Q9r3`oշO~K;ʞ<f"ZV ҄)5.G MU3y! T Uh1 ^rT9:t䆎6͹1R4KIˏ^3_Lp~{g~'d˜%li-^~V2kdo߆e|鞾//_ ;{'O:rvZ}'ur~n~?X~^g5ECW37зlrG$6: Tc̆* Mj(ECM3}s *Лl~{z|֟Wzg=g0+xu)KYk0̦R "ɩKQ(Rrg=??E}~GWruou^nz<_%~cȾ/p~c^.mxy:tsqyF̸(vIk:gN|^zyB*p\+ӏ|wד%nӷ>z3ov9ȎP=|2ŷL+ ɕ3y4Y)L5G=zx_Ͼ>O_/#nn9>7ze珩Ɍa|KՏft监Huӊz5r7+z9:1z|,iZ!lʑKFtoΫsAms9ĹS/g1ߏR?7tG_9ۊ6چt:1x#~,XRX6Z?~vza8~ou<}9>n籽/]z×^\v۟|9gzw7Kͤ뜴[7Ms۞ezڝkZV.̸-rLf~G͞|?zeU};OԻq-3Bs[>? |u=9|e5ɿc{wv~gAt|=qۏUzɏo)ͽ)B1澾~:|Y(Q.Nr2o}^|ܺxgjϻx1ϓ"z.Go=}O kr_?|\|a7vrc9oguRms iڭ4g9|y;4-GJ3lfӟzޛ?^4kto~o+WշO6]|x✗ݾX4i=Uƹׯ/χo 4VYon/&r:ǜo}^ٟ×dza񾯿}~O_ON~g~g73>VrzΜqj{XjIWSU z}krߩstg=\܈UӤ[tXd-1>C=&ɯgQ}?3t]3\r=>z㗿#(3?|G\kkz-WyӦĬ+6$-QQu\]z~9Uޙ{pӬRsv+Χ_IynܵoS?w),*n_ItfYpGCכLu5ƺx*&֥o9m}k=nW]~_?zV=z:tߩ?tY5~ |_'?G(ysr]mǖM&\T.t>k7۟g-U|<1}1szgZٗLMR9Wk,~^Cþ^~;WҺ&fug^u_z??>yˏZqYv'eLMp{gVD؍1l[ZO}<=+spt+Zۧo_?y>}/c{ u;[~x|_.?ra>VfeuvM׫?G<|wwt˝ xDя_Us]~U9۝Ǘo;9a)5-*w*lMog|Fg=5gz<î33dzs:gĬ(s9}<~zx=^?=c>'׾9G~s__;Ӿxmowϕ?03^|:oN|k;Yis4i/EۏGtr^~9~/_I <ל˷YoG/dcO>.7[\<&:tp)q'L.007hԄTf9z|?,q^JeΙl]% ƜtK򾯩yuyV{Rʙ˧MajZ4rM3ׇg){ztmgoy~Ӵmuq7ص%/[pǷ-zL2!5t牽|ޮs>3{xytKY֜,tʬy^Loo93s:x6Uzyz~]o?:\˷63{q;'羏-|}9 3RS:|yiIA \z-\ןͿ>;\cjqo3zy|*vG?3oߖ>gWr}?޼y||ן7;֓;Nu$,j]| Xxߞ\gg͟K9q>U}3ѿ~Ntx"m*:9z^~<ӗ<G>ptҹ{=>7&Z3כ|}{jnJK \ZLe**çPӗ>^/|>.N^;t|_.>c} <'oǧ>}ӬF=:ƦfQgW>ΜEXOG~iv^y;a/|=tQ-qFyw7]W>0wqz{u*o-<4?Z+{{j#5)PiR]CA3rcoJ8w.o+'|O/qn_wvy87:~'[۟;Ӄ^:<~+G26ϧ/=30YַL`t=.)$N;ޱnJc9%DwkǢMb3, ^^~9v_LTY+w<ߏ٩=?)eͿstFx2\g杔HK}7Oy]Q/Mw}W<;{UzϢsz펾ǏşoTGG;6.nӂv0虜c=r~c|ˎd˾9uG}R3NxcV}.iJʅc4\eBmD67l3y҅M{^ykцw(|OsmϿo.Ѯ&:eNkx[:X,'uVww.ierɥ*)6c9y`~Zr/F?8ϟ>ӎytrF;?utsp輎Ouǩ?//?;oG-,;:u>a^x=>zа[JfRaVΉs,Y]+@M):T;t}/?uW㧟Ifgϭc])C9<ѯ_8Rע&%FHHaAԂobݹ~Wzj3lu:/~|CLv_?^-5v߳oK߇VXxVyuzszzܥC4P-3vXY(0NzzgG>8ztm7ȫ~8YsNdiUy7j]洛RDqS7$Zʲ.I+7^9מ1{\sɮ<0K@}=~?G_7Ы;yt5}>KϏ?Z>ZkM]u- aӾ}V*3@ JprvLk=0>sLhט[wq1Wg:"L5I{z.a"k^L,ۦorMq=1vɹIw=z$ɖ*TcK<]o{ NgY %5j %.\^罣,F~ߨO.~g?˷Gx7׾m4TZEY$2Ku#r+tdPve5+ӝ%3Q̲riV޹xЂW9PeY;"kO o-fFuqɹLf=zMc^ @<̽^{:ۍltxiQjԌVg^=afP) yi1f!SRIs3TZeIumt['%QѼt0.]nƁUЄyXuMf%roVNeeg6*H޳I2wɎ7OI<\K!sxXgMeVYҥyN~zUj7@6mtF[EcJV3*r9*B3$ X/K Z`*u)3’f%t3UJ^`SRMuk^5ќm~"XTPҬY3ntoT]Bύn9._N] ɞ9U˹N^sjIZKXt3X֒Ӝ3^9_.ήwӓ>KU"Wl>ݝ|&CYXiVT\DZ[V񶳄'>mu)"ifXˎn75y==.y:ɒv=x5Nmw}stsOg( :w39{Z1ЌccU&md%|gϰ3kyƝk^N{Fz'!+m':MzXzmsޙæ<ɯ42(=#Տ[s/+<<|6*vDm=Z+.tm9yRcw\qngsV$eYחN/æNۋ˫ȱ,,5zΤzРrIXZHV`%\Z- F6?dm])si%j&Rĸ6 QtplcYn|7rd#x W%fzݼk.IV2F28u7[{J.;rXPj%4'GBQyK$RtР i(nRCDycYVTeuU29P Q2˪橠ZU,ªGN|`L2Nfƚ'T"H5:ӗLbY]J/޽ϖOrYYmg8\1ln%*%PC HDMxNJEYݴ"0Dˇ^IَYV;dhy$JY$@RttFRύ1*͙6lF6dezzcKDJOKXlYX$:k9冣6ADcP+͞R2Vuo9gZ @)PF[{c=YZ@<ל!Gw~}4P+,뛞-Dh Q2՝ͤ Yx5ejΝMfYrj%VW,k,ZGD"TBTq>vTZւ%@(7YӑJ 3L=άPߦvi\9CRS6%uZ1 x5ae]i:X#zYP089j.s3lBUv:xtL;IYh/_~lcGNIen[ZRUiվz*Pp2^BBmKDRIJ.xf̠+'Z \`@ ֣{c`:;*Jg[_-l54MN+IHɖmDf;5wm)4$:yr5PY2YXP FB&f#5CsT#8't)bP@3gn|:c@t*J%syRن#[6foYr:4f٩.G ׁV^i52h++*RHj*&X 93slv8ZcNǜ3<]yt"k>5Fn椆arʂ:f4Jf\Eh K S,ZT(u2نeP ޕ$uJfSLэsiUH{ח=u;)AFC%%Ty˱JJdv1+2Ͳuʀ-$3ΐAL˧L8Y2΢R·o5|C:7͈QvkϘ\Η"n]zV16J@,Xh76J/9VԎfIŞrf*VCUQAXΜW?^۟<A,H93u O?! jʤksپEZUPEY>eWn|uܹic@1Fw nKS*իR\*N,!]DXjUcDe&SQ*6AiǝckL3Y2(TL^`6yLX]eEU"@gLtӟ= Y]˨e@1JZL yod"4XjTIE3"e(KmGMP|d?^n 4E,=`S.ΞYvPITR3Fu.o˖ͬ^\JĪQQVRVrFY6QRP繄YͩYYCYB]R;"k)T2a]2VgY( t|t̷n@]d˭̓4&䵬7:%˧Jt*ɖeP-YFH8Tg7-%KԬ1)#&Ԥ#Me\KF&+ײ(D  Ub(>@n՗UeٜksVe%-fc>ϖJڙњ̪Ueis6&gZyʺ紨eC%ժ))tRΜUXzȔZKZ 빦kXjns9M,vZ!-I>Wb.˲Q+h:.˳L\XT/[2ʂ)H9+EYe.r׬N\܀Cֲ @LhD,9~:~]/r]Hm`2Rݗr466HvU;,ʳDnf-YVeP)sQe*Ɖf\w=h4Q:c3giA P J)]~\U]Ix:Yu3U15FAR¬vՕfܖIsU[hhkjw1k_ (BbmHZ7WIҝRխƑhkD{׳_?d2V-,BS-~z5֭ Zo#bڐoZ|d45Ǣ{w~h-T象[#X6v%EU|ekF5WF?jCZ=jBkFkTG{*轶_D=Z^_uZѭ#=hz!n%ZWVWbD/к kFgEjb]د֌Z-- K⮋赣Zzlֈz?~ű-Vҿ1>Z5'kI_~lZj_u赣CAciecףZ~$7U'O=$OsC#EC1Sc+Zx%%%΃t9C ^ʧ*rʧ*rʧ*rʧ*rʧ*rʧ*rʧ*HY(+<Ǔ,.3ˈ<.216#ˈ+֫CrRNzG3+khvɊϑuAei̖+h]F>}6M=^ʥmr̍A|-ѶvFdz!!rw$s{Kl #BgmtΥƴʿ-cJR% -V{>,;'\#t@ֆe[QJ:ąF hD#td' -4[D45Ⱥc{׹ C8AǥDABB Tg$mɑSEc[+{TnUJ5$VV֥$x.~f E|ͱulF6Yc{q0WW?S͉l'y.# KL]tY+bGR4tyly/pc*jK@I:IZ$zofpEl',MkeWmOOI[3մ,mLU1]y=ȟu(]{L>dSsvI(J%[;|-i[K[:2#mL=lp;3UjewR-"S9"R9i#5EUB?Z!܌<91+vœf[]dwjM.a]:LqKFc^j_%hvo|l\} V-VY#?،V2Y5I1_yZwQC[-ʹ6D=RM:wӸȁrE-iEaK ֓Ϗ³e+bl~-%kDyjyjyTjyjrDl tK|y֖읅'ç'X#Md!1ΒI$D={9Xw;: Ug*I݋O]_s[~dF%ZsزXY!di$,XuKJ184~lTBq;oHl .C6xnxlxxxxxxlxlx,x,xxlxlxlxlxlxlxlxlxlxlxlxlxlxlxlxlxlxl,V< 83838g)5?[bT{nY?0ZۥqGB83-}q rǖIVs!tGjc4{\Mt#ibVq9qA^'㶌P<4?^å=*Y6:<#HZB $-Fz-V:5ѷ_}VDžUZ=*Z^jؓ8,q!G+,a{F;2TVm;2 1E[U1o_ʄ$R\I WBHֵA؉ZrEC֏J1_XhNcCLC8g}uB=o]t[^ lTcEi݊ˢ _OgOݏ܏5b+F"ڽ_֌|*i7f"UӁjB! tdZFuku>HZw,洍!kԦ"оF7-qĆ~AL,?K)l*,Lǂɒbw!.d)$dbeikF-ض?bc‡QzZCJFWEj;%owLc!ވy,;U͊*c'ʞ^ٛ33}ݒV,y ^Rgbnۖ}a1/]n>}eSytl[xiJ,P~:cL"8Xcc9ب%8񖼍NΕUK+*pŏ,:_h!ѻbg+!ckKdV˳#[DHҾ(]GfY+BKع_kb Te/*z11}XW}X|uc׶U"-fZG>lFLyG*;9#9hdNoW2zAb|I2I\GNt?OI$W;$]5edqq#Zr$$P$KhG*&d[ ybANn' \3Y#ʏĵHʋ-O=ZS%xy<6جв eo[hӹŐqv8㒕ed1 ,N$k^2 Z.bƋXveѲGsb([-B5UK}W+V,Y;NI+U[R^+Vn6&r%oزNs OlV*vZeZWDd9ѕe\2=Q7Me\u"ZHؕ,):6s}AbCV8OXا ה e/n{ ]dmÓXᤙ!ӈ;Mh?}lkҶ*=ū֥VNE[3 rTȎ,1rݔuE^oѦ[&f[D7Jyqiyf7i{8ޕYTz#5zҨ )gR[ Ғ-iV{mFTqG A:cRZyX2Rb]ZJC$]sj̖+Yvޞ'ktFɛ%^_,2VgL+Yk_E~DmfZ头_+[-1zY^ꄑ^+k}=Q>hMOHiJ*kK-Yի9W$ߡuO]NLqK͏teTVUW-1^߫D~2=kg{z^U=B}t3z7d5VJ$zH-ieT;3I H1ԑjz,]Nܠyv%;,Ťwzz#ԬS%8Xf4OzZEjԯ_,h0>/QW5}zذ庋[-'f$?_Jգ#%#JsD[9*YYtQؽ BEIWE2/cO%h$aw2ucǟ{rĹJ5sƎ)toM0y2c2,z-q.Z{8O6噯^>w[O"!Ise5z# 1)jQWd(=?mzK}lc}vZ_J3T85\Ժ-Z[ ԱLX*YJݚ#g،CP[1ӓ[1U[!\֐A^Hﷻ:`]0*2֥kik k_6v% ;OET4X}b "IJ9fx,!LJ0z񪸠w \[$gR]h Zc=&htI9o+^ZR豬lv&-!\x.j$&Gfƕ g.H-&D[ f:=7Io=l^<霡fحwV)38$}̋?R^KIKUlh֪D=H*p',M#TW$;:Hɒ'&&&c_Mt87?8ŌUTg?6B!FN(YnC]z[ӷ<õJ~U˔i]ZZdR;FJF2+mI֦O]JU5m$bꩍejmv#TaeLOrX5κ-$rNFe--x4em3'tb̶K?lzPEd1Z,ۈ]W؞䵾H<+=E#UZ^B92I9)<睞k223¤<++i яeFY]-O݌Y%U}zԵD!e"ӕ]IlhǓGщ9A[ Yƥ:WdHnZ)t؞w(jNUG;$8\i RHF'Z36W%W*g#s)O ~Ql=Vu/;V2JcޜޜJѱRWqJt]Ǿt自F}#;#̎Vމ=QKMv-Zխz+&F<&V:қrt5Kek#i:7$sG$;!HlmeV+xOIVV+lbDNPs=jVrT6IkGB<f?y|͐cϘcϔe<6Cs%%%%%%%%--------%%w<.C͐d<6C͐<6dy\)z͜ɽؚz&Z"zR*W;e[q\k%ݙE-}K1,SzNč%t'^ģ;<΢dN-e)Rl$IVĘJCV5Q_b~dk6wدҹ|!SOPf'EQWwשI'YI7hN7.۬|Nʮt$?cKY,6I:@gޓ_=dg^ }=YNw;؂6;6I$ohz9.lg\jrjgbmB'rvRѭj:^h4ZI$IDI(DQkFCXʨ;L-SĂ(zN7CIZ_*]lx݌xA8[$NvOA [uC8W-m؜t"] ܶWҷ_zʧVEwo}-zijz.H'Ҹϭs sR53Ϯ{^|lRlbAeFz-]vZ=Pmk(mBta3!NvFޟdҳk1}TEDc잺"HIlz!U~EhOWƯYzgh}>uujF1|:7zA}/UE=Xc]z.h}E>д}/~Gl}Os֟)cܟSծբэUޟ>EO㵣ZOUYOo2z/zD2>5Gܺ}wy|:|>~m_E]Z|/||H"dI$I$Hy$I$I$I$I$I$I$$I$I$F$RI$|jL{;_-y$u~?=_ѧ=7='brG4rD_Ndu #;@w> t6+w8G-$s9$aHI8쏃Ad3܆q8O2*ȒwӱnzG3EQ/h#VOc9ڲ> Yb:rB펬AAk;b~c6I$t Tv'籋Orz0?CwFjmG0/LD? b}t=b99 lc]wغƶ,.%-zB#=dNܟek%ZBO))~ZS'}/yN(dZqlF\1wZ4_+!Zw@ȓ`Iѱ[}vDhƤd,j]iӈ^:; B$aR؝bv-Ïs;b?w5{"2o̲8W9Ĉ񕠵l,a dD܂8@^"u&HQ[U  ez#ZbrN$IձND%oU9ķӍY@qv&@֕*l,Xe6H]$FI$c^H6'ΖEY$NDqtܵ`[YgتHVz!6-FB=r$tFl}DEEcIINp!K D%RW ^Fc-'Ylȟ'Zح\kzsji1"u,Z'dz;gc $DAel1H[jY:I$|D=V*-et[2>*WK3A=*q bmC';#l폈SEKJZ[E)'f>$IV*[^)^KGڑe=^Wѡv,%*\u1b9A =D=Ȫ2؊-_=lLx-,3WD*9"DL*h2SQťD\z,x8Af×VEI-bt+hE}A6-{6T,ZXVhC$ѓJ7&Lmz=~>awМtFI$weYb2Ng!=,-$E>V$vbhi$R >^HELcC[Q,Tej6IHz=-xTUeRؤ_V[)\BX=Ŋ\v.p=Z>a{l5bՏDIt-Ig33b>zVDtDCB%K9&~g-JQf2cFIWA懌+NwFd*?W:lX)i9$xllj*KSzSkU"ZI$ u-YYD[d4PhЂPG[N۳\Z$45^Xmb Xѡ%dnvY!Cɜ % o^dȤi|Kc#jRs+r:z!3NoD8NčN[[W\^;zƑ>D!ﮏEt𝄈;FNThEbl϶+X9d8[Iᄎ[z0%w#% }UB]elEvlDLCg[gĶIF2t8$>K]ئcʏ*i:NtKtkγ[’z2Irg&rg&rg&rg&rg"O#999999999m}k?RZ~kuX{XϤD__{Q_">!/_~Ij5?AOU3M|e EW_o_E .__oGꯛn?o]Z߬Z [#]AA2 z_AEW_-ž:௖ ϩUo[hA|wmAo#lo_tg"~KvGZ:#j!|7$R4k֞NFGr0}iHuڟRA:-9hs>Sq#NuklKGUzKA"=gXI'"tCy̭ *-X uF9U'PҝЂ: H5Z=UrZ!Hihw9cȝѵ;=tN 썋I9Qji:'V9ȟ$*I:qt N'2t v9ȝ$dI$~,lv؉P{P;#ྜmI'3 #՝I|ΒOE=~&OE|7obI>D=YU|;t'rOuţ]n}%V潲1~$:ԧ'NQ-QzᨰK,Z^I=Lh0'[At&WQE^^lNkJ4zk.Ah$|+V~bGN^uҽ EFTZ䪺j?\HXlclq^v{u>q"ԏV Lu}6'F4>OHl$UT+slzZ"C#K89HxVE*V±g%THZ,L^ժ8KP^$o^C*elG1"#ʎg"uZ-1cl$vd!'aR9#ڤ^$lCZAĜuV$c#j[CNRb8t:z2\ױ|6VlH7t čQA$;$yؽ9,[ڤyNw}[; Ih5S(k:W#P-`$f_[Ǘʋ b~ZT8NZR*d#یz*ZؾVW$=[MDuZ%iaGzd3^#/]*Tl{-ϪQXLq/5,5KˮؙW#[Z=q'cZI8#-OޙhzFRy*gNiBWZujP{wi291O>%F/#'ʸ_sJZ!!Zi@R v cUZb9WE̷\ْ#P-,$*5ZNS/Xz2V1K831׻YmO~$v/Ŏ ufE;w.مKUߖکxP_ĺ*U "_uWhNG!zmYhC%x HR#~Ǎ3֬-M TiBAZGL0e3rq8w?_d+GOG Y>" &-։QV+Yc=2Q]0HGR5{q׍PչcE$Ȍ?+͏/TE+bDDC cҨЈ2a Ҭez;98rJ[p-k9(z-0וDE s|^D6WQ"VRtG[cbZXl̊hEY"FZ?eI.ZƜf[G]4GA~G3r%lzQlm9 &HԎ9X-^X/I92~j*t8`Wq[DFX kKncD-[*n cI$I$NG3<ų#Hz-sg6rbۋ/䔘FccGM[IJig ֝NG3y)<'ދE׭+$5VՕB%*<6NA{Ź$}H ޵-h[^Sg#d[X $ ǐ'řgZ[ᾢbS#$bWKƕbe^fe}ƋОCNLB$v-b-{Ŏ'Qukg<;GM{WA|kOc⯙N$AAGł  /AǠ #G/Ʊ mwro{P%NBdiH+ "h#'d =`#Dh-$z/A>WFF.rg}%6I$$vNXYmNr9cbѽg 9'G!XDOU='I$u['Nڬ}.D̞W_ՒI_t#/#_I#*5_÷N~D?_oЧ_5W[6_-˷Z[ί?kU_6u _kU_IuϷ__/kP?a-+CvZ~co$oh3z J׶`}_?VC͘*?06iWGiHWwP<=4OGof`d+-0k9І_x)-Rp+O,q,Dj,(& 2`HgĥlT G)'xdaX{ 5r|m??@-_Sw'oa4";H7Hy|DԄA]MX0ze 27@;kcpL<^Ԭ sa'˺̇U<##f)γ0l×5(k0K0寲"m+9%[,gaJ{*j:TR#>?Pp5.d&'e`?(."%Z7gV&&>bbvtrƇ3kNBi 8b=bbbw [K%+Zf0w.'0b\L0 nAc0 `0 `0luge Ɓ$66X;\ |[ff&&/tK݈5dcOoaNh{Kl-\<1}7bX?xLt`0H'vAh kٗ[ Ԯ֛.,BqaѽaYeuvi/hu ݶʅ1GvcƸSNqn tּCň*\&mv)$R\{J?:Z?c=d: G.8pfE !+LFc`0 fPPZan9G8?u䲲`867}G/UTbR9S?Bp\-e JG8*9 3-Q!ieao9T~Tǔ_74}n SH  Hyo+ ym$~a0.Ƒ4. }?CČ?SjJ\,Q\2C4 ;[BjP|BaS-NfL}Pf0J9uSd̻}7?2V0p D!Ze2cKh5X\ x)nV[e8P*AuΊqic{ L!vbpQȫx*USX:p-k'd6l+q (,:ֻ{G}zeX,!.;?L Z8F")}Ts#㲠H?) ᯜMNHsш8n,ÜlD4ID#Cg28seNqd:i:SIjw*U Dž?XB!rdbA/mla1 =Z\ڐc]:z!Ă_i|Ǩ4"zr1kC?!*L".ƺPcp U[bsC.]IeYur?+3"D$C=)! eKS֖y!RX4 .AOsH0.0ҹ\sPAHk3{)BSaIv0ExH%NF=J?0ieBx:j 60:px0QhDt&|f2pc*1LN$9U# 19) Hi;*A'(hrA)Sba0A[ u~VX<9O<>h2 8ȇo1u5/l-9jIs+u6 FԞaH4SRsnNK1%A5+P<(R @o2rr A \7[7 /!IeGO:)1G0 3R aŠsm{rƂs( Sw(W0&8SAY$,_nR'-2/ 3,A& Œ]<~[EYIV:2BЬܹ [a5Ѓ0V$%pJ6)_!^~!,)sAC+s;&w?+m.; pb< XN5 h;{z!;NGiyؘ L5C&G ] 2~kif]{v ? ޷<.}C vd$YjZZK=[׶Wfy%D>7,tQ/n%q,.xt^}H)z5(cLdX %dGTaَ/y۠1uQEn*!a`M$R{˃MZ\0YиuRCinyƣQƏH@ʼ&:^A%'@:MRo.:fф63q.j47./Imx(qd'$ci̴3h:`o=sj4$giXC}AR*Qu,t@wLfφvhUzOPϯ;9i)?OhCB!O?''"'?xYg?xYg?xYg?xYg?xYg?xYg?MACzL֟P? OGUHt@:|s?Rmirff(xA/A@_'30SV FM:^s+P2ChiZTn^%J*TPPJ՟TQո=,1E*B,J+M KJ7K$,AwWS(tV,Z _XJs,LJKhZ{AlO4ͼiZ؟4qե銛ѽdͳ0ao0ЏXs;؝ƙt!J:1J*T%J SJZ.LQ 6le"&VT},WeCl['6иA&P)BL40*6=LJ+Jh˿0 h4(ҙN1kA@Q=hVKwh9p4rgFXFߍ@`h:Īvt75 Vs4=4M +D B ʔ n-/Kdz-)jTAN#؋ Ҟ.^yBWRl&- @Sb ۟_eeGxcC+Y,MP'Lm8 N4]* 6i#aiQ4RJKACe(Q\GAi-aFu,CCXU|ץ'. Xghe|3STԯ'P`~8?U B~aV%ky S; N'2} XJ6pOwB|z;4cSI*;27b%zo<1TTLM$gTL3:LLi, e9`iLwB1vc;j+1fy;IGr9u^_AnAx}P-Gϴʦi>X-Y^_z4Hўcw7՟)^ӹ@zDU.k3zԳXß/&eZnP=7͑喋NME%K{OFTV[=c_og÷#;aU9k'{.y=Y2 ͸X)yO?;Av-f+.lxQl KiQP#m,-}}j[،/ݜmP]1L^ͷ͌zK>ȔXَ㿷Uo1-̠n؁idi,'*--݅3oKӺ_ Ɨ:$s;"2~,ۚ(+-n+ێ!Z-) 3q̲j2;.E pˎ MyRR*SlW`O4ѷUˡ.6~&F͸_$WrQf<7/x%A>@GR\. y+:5{Tq2}C;w&(b o޳edqK3 vQ D0b尓"W?m-8yE奥Kkq=T!7k0VKKE_-9F=mlX6=/E{q&}!"7=#(';~ ,[;IE^#7KǙFyQQLf\AozJg%=Zv\s-yiKCVީ ,C]i@}'<=`gNԸH#_r Gry!r]GO1<ķ;wOxǞ<I眇wT;$- N9v;Rq6dӠpeܿܦTKf_008sNgH#JN-*;1Ƃ5êljs}&XH3]D}?kY݋ i+B)h} mqGg?p(hmdlЗ/f`JѲp@Uq3mG 1-ƟV fn2h[P{~=RW4WiuNw"͠hNw%XqL} '<#h½\@QbрYI\k{_cghƋ t%D@g'oH`LL^xE)/rƦ[&ʘ %K8a8;i4'5NB;ң|E4EЄ! aŗ kPb猭΁t,Q*p·_p1QV'Ľ2w²3+;wE&;w\Ub(Ae%qᓷf׶%RPm4Mi auEʕ1/[ci,1`Pɻ1<bb/6){T£Iň"+CCz U`e!~mcp;EWf%}saG?%anrU!f#Gg( 5=fY1!萄UtBF2Gv؛G똕^vF_xr^3Tf6va[z"*ACEJIgo+`6gV2$Lތۉ bfaL;=L[A[7H6`vb#S_XxqCҿ"kJt&й N7/S. #6L-q`D]W't13v!'1U$+O*3:-ZtIZ-ЍV1`69}DafLȊprm 9d̴x"63- =f K1gՉKcNSĎҧdکfӉދV񼱘8 T2o eo3g˼][t]OX[Jđ {zݠf+ΤІk0ݸ"8PN>e{O[OiszM2t^Gsӈ +P"$8Ɨ)sf"ksk?\DeB)**L-\m6Cj;hIg/\ _/Ybz`pTT$yt]Sxϟ?8+/(m-tA0 ܨH1\/ d^ _E xm;lsYWQ=߼/$xEpRȦ6Uy\*]?X9(PE_vD̻c}Sz->s=m'''"n.n6ٔ5DJJ @ķq~>JN'j?=06oYžÈKw&IcQcAҧcV yu6z?x ^Pct(Rh. E;je^O@h4K{7Oc[ɴωChF]@͈ɘ 7Bliٲzm3 /hg,]XB\Fsև2y%`,o;êwvs[f@z@a>|H1N|Gp1m/vA;7qvvfT6gvN^`}`Wٖ%1ؗ+x7Nca;@Qv$`C0#-ʂ-Ӵ7fJ;/>F\H{;o~[qҟhO~q_1GTQr,t=Mg(ƚWB9g>EyLtnFZiY\sXge_rzf] T>X]eG{<{ƇkQyb.qAA㶻%K'vૻb(817_iyx$۔x7vM8ۢc^Ss?g1>}}[*牰=0*9*+T nձ&apK ߼KJ]ϳ8~s?[Ygyg#xvMI\D ..&Y E(,9!f4ʁx1w.6j`͋C܃C$ 3uLKÅ1*뾯~e;Z񍠦o%<?i G1)c+S~󈱟X0sct&HRzJ?IރћS7F{scGbPW|z]x#>[M_w)ϴsus,[P|詃q.L[KmEYqJo)؁E.CxLdwq YY8HGN؀+LG1saGGhj7i~g:Éy.EAZsܱ |`UKf8KN9%#yy[HN|TYYU2Kt3->zxw&+ 7"+r/9pq܆clThgIwk`e,5JI?3󢨞%>_9w2}kݥ$*q91.ƃ|SƏ0wm&@PMu0Up[iwVoyKZOdH(Zi7f#gٿ1}ݭ1͐?h0/&< 1q@A踂G=e D}es7=t{ Q<-?9УMva,!bޟlzD_/7<,}d+xR]yt`·}cn;7fpT>|)ڏnsd"MRJh2ǘT9*Kg$\LiJY^n%K%xrCoib>uá+O#U(*R>[NGf:\4 ur~$n~eEv eJ1^Mɹ7i lls{zAW7my%(>6e[EݟxnZ>=Ѝ]2]R.2.֗[~G`4lzp7}~jf3 TF/>79pgL$?̳)Px#1@CBk5!%-{1xrv/\$%S)i;q#H@.ž<~0J3ѹz!Zdx߽P%W[F[FPlncB͒p"I}=5#b^sU;7So}fc&Twf)us}Ou, }3v+ݙ!nۖʁ߶7Y0MYS%t&AO'r+aa)#Z0U k=K徘]1R>"2aUizp22Ӌ~+myBHp:TwИnKۧ:w*Q rrȹpϴ.%wFS@bvo}ȫ/9H ~"OՎ=F kc1_jr'聒s6LMt"Y3Mf zL%^Ty,.c͈yN'}z61[ñWY={@4-t^%r'*%G>cMxY'@'|0*s^s5yvZY٨7O1,gWrvsat LC{hW.^ZjU| jmގ_x0b"l|ZT.|FR |--ꇗn^6ÒPnr=duVYsSD(A2K!*ttt\NH/Ab3|Fځmm-}.sdf?W>Ļa(pťj,>>U-ZYy`oiD6ر7^'hmb/dL(7'3q:M=Rtɩ٘E7*'gKr>`h㐘7i0K@k,o>Ѧxcueyb3QWf+}-C]g㹼tokzq׻J@/(ep=8yvG.]-L+؈ryÖ8`x'FW|lwmUI}MbLҴa|ͱ="Ut!Ϣ2-TmP7{\Ux&fYdO3wm 1/V viu{Ec`OBe{DwLH~ Üا}ve|.}ʱ]N_/1g>B )ÏW0L!M` \wAF9-AD9EnijXAhfú%V3%c3P0B ex3gsif0]H\g%]m#L|qK[m2 >1* o7yמ7Ǚ{(r@+7 E̢nGyֈG}V Am^>s,' F\'DĂ!%̨ 0M6~s.W~Z>Ǭm69B%| BVApAyInv`s{\e[0'h+64 D a߾6EXB7+=_pq?GcD9W/#MҿQ=;n3D Gc353h3P/rO`>Rp^gqنUKS|JFyKyK0ezWd;Sgv8Il'1@]ۗJM @K vplxg3fFnRmˤMtB(B%ܹl)DoS%[O31"fOYiwF"V\S8';6e]M,7vo3veK% BBWjd-y~B% }0 f%;'~sX6矬W10.j %JK=y{r0hXq(ټ<ndyϬSDP~ID,nX[/4ޣ~/֟Hiݺ.W^J*b;[+'ETo0*Y2Iw̠31w$/u%`g22@Ԁz.Y-SrU^'q~afmM1>򨫜(ݎ҃lÿ2֋Cs}PbV0fgy6}cuA9bH U# `L1f5Ѓr'pq~"+;\b0$IOhmGbGxʝd-B¥z^J&t%3  |_ WՋ6="ۻU`L5]eF -U?iC3XyU*|MQ{a@7<ˋJ4,ṻR s.c7Kz wzn!9AHCق߂⢘z(6D0*_Jpe wjs;ƇM[/Y9%)3臗lm-uٱuKrg TWl)]<6;cb(ۻC v9֥9!/L) KL=&*#Sot3t42퓲(Dh_?IRd6(bYuF ,>& 3u٧E^i߆̼1sc >_7C;`2=l6Ϥ㿨5Mb«h[>XC`3s`/M`F^{>nMxlR~8iC-t4n=&ͳ1jL\(gߗfW*ōi3$tx=kLv'r=/[P.Uiv8!GN}e㬹z8Ga s|cmF!4i|o7ekqu""I*]xiwNf{{M9_᠛teDc*'@h1?+0tm%3dl)S LzK6vg$(1$pLgCiW_|1*0]Gd3$JKΡFIi4"Q*(#}\zTTh.Tm%7&b5^K!x3Ǝow xbo#&!6ˎaNh."u6q2鼥Objq.78RS/`yaXKӈ/uDz1qci-ECJ9>X.%iW^+(0iq<{v܌XvܤVfq-|\B5@yɟ= .<jyEdq5?HQj.vgG]4hv/JTqyV26&QA 2H7 7faXaTO\!Y ŵmЃFO#x>wzJ^;DV{BavDU-9b7hkCB Td}h3G4.= #1. m89J3eˎ6&'0.c _hAv6CaP MnX1%9L x\Gw;J>XsFg>H~W% ?ROza/8' |8' |(' |(' |8's6?|o<iO7|dIП$' B: y۴>d}]KZ%fq0x~JS3p(ik;E_tKlfyafow{Eo{30 Sk3l*fs׎jЕAݫTo3jPS OM t7bY+rgX.vϚ\J7w Fz CRzh9) rJ .;4k{EFeXߐs"EEЗ*l>uFЊrqTHeyD7Cf&`^),n^N~X%yCyԮ+[ vFwa[J9|F/lJw#=q*o)Ç}M=q'6~ȄYO='qVWK {M}>)Z1 F/(j z*flx9N%.;~)܄8 gd8~$Yd̿;{ƿGCUR%.KҥLS-R@{ihU ,]su0F. gOa\ϴxw7!D0kY812Y}_Xozbg!ߘI}IWq;oن3[i&y7ůQA)kb_M9~Ԉ.L@l3瘰[BE4_9~^`vg5ajy<=<e#zk0j 9oy^Vlٿ| ςpQF^y~IW5C0ęǬl*1&Hc:6W;ĻB-Mb.ytST;ܾhRJ(ҥJ-h&wvcF*yvBy;w#% xN0OI+ 6*PY5/Cء_FյPl7*TSb>%D_r3"FTD)tbJ0_y\;q#7Tc {˃F#WBU@lgiI"-[.-v"l"ou;nkkegoD\B.;iM*(0qpTCm ,3A StL=fSق&]b#X D]]_|Ft|XN78wε㘁ĥ &x@{0T C$"=em%X5.\r诶Ηu/Rz^ɷJ5EJc f@7egW@t4lGitTUR/99AE1:1 oY<1UH_30&zI^hZQ)X| VT)+PCrSZG`|+K RRWP :ӥ)sxh ALFa@->`~#" }¹}zXʘct-eFU-0~* =@҈n<%B~ң.^/KBSA0uze)+!KЊ/3332PLTi,],ƀ51pf? xFfffe2\JtT%JС+e^4~Խn_Ah[z#.bIl%t+Z}z@}7|:>4n\%GJԭ/VDre|/]uq@YWVPթzW:e%t*T֌Rzo_} *WM t m.\4+JW}$IeKKKKKKKKKKKKKKKKKEFڶm T A֠:[p?V)˙4+z5:j= ZZTRWMԾRt֥KҾߡp3+g%J]A+\VK_;WKvCW^/|ti])Ą59EOܿ|'j|C/JԉZ1o=cRÿ~15Pt+=Iet/ܿܽ._M!7s[>%j"U1j?ir񨔔51A*`l;iE`ϯ2-EHS_76>~>1F |]_t?@Y:!mz7v(g6ӲP 1[:BPZ2=QWS>(-M1$g3)R*TFщ3Q!b^2r2bP5zoJsh?ѽj52D+Tq6Z+/D+ zK]r"ԗ°j:CIhxKaG~-tYhc_Set]f4ҥj$rz*0[9B cQ1[z\4#"5;GP%F尬6VJT 2Ku FT ._Mt%0hJ.6#н2S-ƄKXtDJJ褬E˕J`Q\RVҴo/XiEq.$KA*Vo6eJ[ZBM؅eҬT!/XBgQM+0!/TRVĹ}WwNr<˃(tgKwe"-GK bȞwDmY#o0Qb!X鷤]ny2"Ћі̮QM|Sa,ZR-B770$:MfVE:m@4xJJBe:YjчP ]@*Q,ि6:1uRCF ĭ56)[fDz^/@4:$q5 Jթ=$*@ގҹm4fCVX1ǣ5 MX0slM.FSQ[[4xME=B$H%k: 5K*WJu o:m,[O 2Q{VW@B^4+ ۧF 4H&8n:iHJҼJgBS(ц#tGI(4Ph n{pB^zP:ĆRZY͙S,+t'~ǘdA ᔡnК.0{.(jKDlFX\b[īA+r10֕tш.":[^S2KMg11Z.zz>j Fw,eMnSCJjz.*ՌR(@Cxt)@5'AI]HO"/BsҫZіtAo=jk.a"̳WC1oKQ`DBit/mU4N]*T.^]/GK5`КšI뇔o`?za!0dcMQ.W@㘵E5i}5#Z^&WQm3 5EJJʇ'4Aj:64MC6E5e"ܪ֥JJ .^_rƒBhtҢ8ho//^J-EKT 6dKY TZP]/s:1oM|"~Ҿ%|c6C7ahplzjWS*Tw]WR*CS|HC67T &^(ꮪhDֵ~\5_J>"eJDMB^C/PCvVmT:lgD5!7/GK鿌+ޭjV_3hh G$RNы~5Nj K-iiiyym%tD^^.f^믂=t/!R`_+_Jjܹr/[ K֥J/KWEJDtNĔt\ m/Jtz@:GP[[+F!4 PTNJe2%BTTeॴ_kH¥LRҙLT̩R!+JZޕ*\qJhYUh˖iZF Cm.$DTQƖhM.&PA *)FOL +?(`c30(|:%JeII]LZA>_+|RSA5$Q^+k)#.W_Nrs67}AПz*_TZ=A/VptKTICî|R Jtwִ֗|j>2|kU$ast?N+_MJJM/*-B/@u=)֯Rtj:m~3%"h:%j=,^U_?aD_1JuaX _0|tTt[诀̪~'HNH/Zl)tOYt4@h~hiz޷< V]%8i~i_d]ҾjDo,_Z::)  l>u>318vKMF/ⲿoZmzBAWUQj/>(]⺰fO1&D4?!A tuWwk"4?7kA,ES/Ztz^5_~V##փUA`?y멪KF#&?^4.|g>/ ?ыqj4_^zJ/_|=>ˏC\h=oF/n]GP!M/$MVtoŃGSUz DHˆeD*VeJ*T)^RB-0r:WDD t >4l9 ]EuO=NP KoރҥJ qP:W^ӳUIR|KҵZ=;CAJW4_}NbCf?ƿRa>:pzWJ*ˋzW@]&tuGCKTRGSBد:7WK)GKY.V_L0+@˕q:kE:R }P!Q]U*a XKLρpV+JG@':uїJ-c ʢᘉ-4_QҥB-iUs6J *T6]hXGzԭ xF?taن%a.1/S C|GKb;>3J5+P5" @MeK@4KY:TM)osSMF]/[-vt6Q5+Q:_Q%m&'W.o1R%0} |eŕ+UbALJYx-#鉎iz.\e2y&mzr2\r˗.\r˗.\\oId4t`K&;E :K-ByҢ|5ܹrr3] HQW[Ea crU˗˕.n^Vzez^]A=/MzJ0z^#/zܹ}$%|V/[d:FQI+dBǠ4_}O],"gQ0e˗aǠmK5zES? B5&Chjt^=UEz jt?^Я&'Etܾ}&+PQ&f"tuw'';>əb>;}?nc7_^ҥ\Yrܰ2PZ:1A- 'bc ӷ~h'h+ _cr:їw>|cRπM]FF/L=zM]__Gn;v5'Qy2Н,Z)fs˄['Ч{W0bi_@Ռ |EizY D`D`| %B1%a)*ɩFֺH_:+_??G;s&`"2/BVq`jKq.Qt3q8p)^$b0EQ(O:&!/iTp>" iJ%Jʚ2\GA!Ƥ%Id@6;DO332~؊swi:lJRv=]GG.l$ 9b_.Ƅ"fq+[fH i8r0KA r* yKJ4`>w#o[0Cd"ɛфaZ n I_|7)Oư|˭* /%6N2%r Tc72|`cqH_&(ULh 4 LQИL)%GH'm3-^Z:S+ٻ[ZA, VbљZT$.]V z8*m%WmA4sW-1tjKtӻ3'Bb͚uW$:^+K%x/!2/dS# b2Nкul':% U)N45nўyhV a%Y6tkEϣtz4a5oHB\ùgIң V5CBlH8cd2ZuFbm\|'DMMDnY:8y~Yk&'OG%esH%!*R0FmCAГntN%{–@ ;E&RZ ,C:\!;2?3;R2c76}|KGB}'M>|-.t`GiG-_K6p#. c wLI̗Ύ4". Q&QvÃ_M vsZQl>s`@7QQlmYV|uQfVS'iu @zrE"rZjRU(h mDUШfb@)7O ;]LЮ,t*X0]hطmy\d^w2Fr6}0`^~Y*e"t#Enpe$7Q]EyoڑЗne")tޛ%Pt@ ^)gu#(Oܯ֞w%:K:͟0?Ջ*#z0_1'bH'y=pGJҘΡ̻2^QMJ^.risQS60i="b'df3Qnh0b&:_F[dܐ%mQ0m{K]6itjSQƒKAP\HaF㫋JeJҥj#7ތK~48X(S?[3\ߥz^6R; Iۍ%T,a!2d&@W =]iqamLmܲ%@DF!y27(f(<%T.Ӆb ̭|.DZ;@|祄c0͒Uh^a i:,-t[:SehF@#t1 5BQO5Fb6{!&˞t-˂5!S5bryB>] S6]&)K!,4 y\e;GQF$z+*ߴƤy=6U1WUg@|  5uOhS1Ӽ< *As hS|q3Խt:tAGriXvؤD1V 3cJpJQCiހ2Xh%h1NZ{*d&V(VT/t;ǡK#xYI6FheD$qZЊ4 01yF,bDTTW:a/o$"Pn+ɴZVB0 B^eFT> isR| L!3awC3CDZ`ylu:H;f7F m7DRFdIPUnKDxU;7C[LAmW.foYEq>vs5ҙx#xD?Fc̨`GByct9%:zU1CD`hn 6c4 1A˖ǷZҺZHäifZS̪smPmnt0CG@G+~s0՝ fBEYAMǤǢHMXHk[f*sP0FЂ+J"THRkdUs̷r+CLiZSK,4q1`DRoՖqf=zZ=#7С@)yGA΃ޞX;j+AbJR:+T%鐼~anS.u4^*0^AzŸ>H!CBnh[%i/6_+S.",}l%t^B=&Za H ??iMIbhcFF]MJh*~)hH_T!lON ""um2֠kRB$ZY,tYba١4thǡ_AnRq EpPPr\[BiiR5t]Knt:E\tOM1*sh5DѨE:r尊1*W]h a7;J1^:.0iWh|4\REYZYM]@6@tHdFTQc֗T\N@C~#dCО 5`t"M?˙EZV;4z._U|ЉT~|ʕ˲Utţ.^tFv]0$fֳCV+A_0bkJ+%/|'VTtGƮYYYYYIYIrJ*TRJ*TREJ%tRR'VJJїBf]nǦiL:΋VꮫPRˡtUWBDU(/ ԩQ0chJ[ЗB@x^ lgEĭ0IQ:K$%NMX*Uк6iy}7KRlJW"ZS-@tܽ %)@a jSM%Ћ^}2TΦfb蓆5ҺN./\R1)=!H<${%Ҿ T\10V[T¹pbKzF0Mܸ4y/ZaݥI~"| ӓZ#*@WS^ZA41z,ԭki]5jbT]W®2e˗_ Q2i}C t_E|V_RJ+Z]/JTjV֟=K9KP%u'/\^+Gþ'K?ͺ=UA>!Wo톯iCGGZ^nWU˗.^iRG4e_S} ־P'?ԷKD_:C/:qcWMKF_Sqr ^?|0^.zOP'ľ #1>??UՇ@cG~ĽKkUh iJJ t.> ~n֩'E q#R-oOAM ]|#:? u4uRH/f_CJ|1FLt4:_®t @pOZǓ yI$I$I$I$#ո^^a='qOd;;H ]/jI$I$I$I$_e=`~k21IWN(l 'mӝYi )$I$I$I$rswO VSu$'-1)$I$I$I$vOs "w QJE Oz8xJ&3*N!$I$I$I$,zm nkσl,(^Pj$I$I$I$#"@%`}\)9_w*5$I$I$I$D{'Oz#4"zx O>,>kgfdxب_I$I$I$8 iQG`ߞDD߫TI$I$I%AZPȋ|'l*{]嗫!!I$I$I$2_!X4FT:q71}2([mmmچ!;uwV@W[綠`Uٵ-RI$im.y(`Vs9WG7p'I$I$sL TK)őqQ8XY?mmXFd JYG:Dpj']ś+'mmm/=•|`S>$sk Mh`n8R+$mmm@|,? @XO3a"l/ IXIIM& ZRs;^q2jh?r43EWV*I 'W7nހA(~ ۥ/([=B{}ƟM!\A4m*(A8=&E\@]`oT', OAvfBam0Lo lcIߒ>$P^Yz|O ޤJmmYF렜ڻUƻ[ ow^zƒWƙOJI$I$G p-9G!n&@KU\ r/I$I$]{m~,퍪(Rp I@8d qݴybzI$I$omh)Tlמ韶m6[.޶ 2>UpkY~ZI$I$Nm<\[lL~?:?#CAI$I$Gג 29TmQ6M?UX$I$I$HW#h L!&Za@3BAk]>hDkI$I gV5$\ÑyCu5@E$0ŧiW&I$VD;&i4D08 0=  qjH1wbI$ŗ"~߁tOpM dHo^" E 5BDXo@.CQkH?~.\z`wN]͘rm9`bG:H>yv# .G, |;4id+Jtrwa!,J>5ߌI#RHqNʕHaZI ))-(2l f>(S =I[ZӀԼr k}l5eMBR.2zkm]'3޴.7[q}ziy&H=k)f8_OBFwLme-+0E磣v RUK܁JhzB*!aHw'.-ȈJ= =kcM>'pRI[y8BJmzOjXU0VYx|-+蚙Zm?BDx*nNHNR+rwK XFNܬilU; tNq@~'~Bu2%aN}܁b"I?g}Qt?߁}-e4| DzG v;{M H"Ah{Yb|nV$*CۜAײ)hҥ݅4&$w6fG:XNҹ*>=3fn=tv/؀sh']l"pJ(:p#B= ~uȟ@ q%Y"ݘg|J(m)[%K)_|e h%~Hsw,tcby(WXmΛmt*4`;-)X䔃rp,byѯY>RXʠCudtѐ6m?#n磅=nH )x?I$YyPP ^CFYpʘ Y얤nerf>J+r~θI$JFDlp4?a ޟbGI$I$K7{Ufs~֒?X Fq?DP˾1${ޢI$m` |膬 ;<?!bAu31Yy͸ m,#eRj|JMLIQJw͢:yEbCmf%U4By 5%أ`eo8'3 7#a։k11&;;d|9m%92cQeh(lAXcLQhߋү`mEXHvLWOG+M?yv5&:"ˈؠ{;.NJ9b$ir&M%E΄"_ zK%ӛwuߗJ|I$IK)bZu&to֊@ui]~# C}["wurj8m6qI[E!c}eNdGA9s$%;mq%YΏm+I#ئBxޗpI$I$I!n9}"C8($2bDĺ@ţ)ԴK>sI$I$I*`O}b@]uBEۂV](VV$܆26mmQѭ`{] JWp;66 M;-t]pٱO鞯sLu-ꤒI$I$I%mow4JKfگBHln zd&uP$I$I$I'm`!,Q$qs'c%$N$V$I$I$I$2kҦtd- kY1 Az.e$0Y]mI$I$I$WIԪ'^B:^spn3C"e)%B>_1$I$I$I$>ʢ ge4告lXX{f8$I$I$I${ɝe&[Js#P[a9t oĈ $I$I$I$V Y rzZ)`apJVWmO/[%>_:ڈ$I$I$I$br(T@;Z8!łG3(ֈ$I$I$I$(ۮOmf%U砐EAXB1>ݿ$I$I$I$[&صY^ p¼i,ؗ9b$I$I$I$\) ǹ%!/qz9Nr[NP*I$I$I$I$蛱 QF0jd1^brhXRꄵI$I$I$I$7屏b*^EY? "[7nH"2JS $ dKܖ Jiz|iyun;4LjJiɑ&̼qq 8dLWv^  EA7kM, rAQ.;[-zVޑt\wq6LvvL1*X*,aGgyͿqXQ9ѫr@b'+IkrmUMx 9 M5`7xmNc\"f/?Z4ɷҫs;ʨKeXێ\DQC2~%whfVvQ W,a-@"S3Cl˗vي;pS [}1n#f@%!TAb+(ԣ?=\g;rAu.;2՛s+iUyhJ㴩l%+3#kp- _8^b 0X+->'-K[`[ $TA/I7m7[1 }vƐ*LӂZgx- Rf0Qx{sY1̩d`7ra>6=E Q 6}_7YD9fıwH.s )%n4Qߙ,'hXj2&%؈s(Q-D,TK,l)6NCO )۾!*!N^4e}R3!?ߺvfm-]]g9;~0w;s9o -Tɾ޾Mc? 9Sc0E.y&w{ZAQB. uț0+vyoB)c`yE{K)<޼\(hoAp@5 0c|QŸD0T \2ÿ@r ݊]FUTZؕ=&H=˜ 'om 9;B"{= 7"t؊0 sȱ,8Oik;D'*^̩Sg94Ix *Y[sxՏ|MTyXlv/ vhE̯9"-BĶGoY*y Ah/,%JrErA6++#V;̧yQbnȃ6L6<냒k䉻2w%c#f3}:`-pwH~?y{ eD(]&AS43nG # DVy&If;6e>9BZ͕f*L(#Q|e GRA={Ɖd/@ &/C]Mtec *UGXe"{Qp$%dIf)}zg$P߸qa0LSr\IDj$EF0 8c h1^;ai0f5sIpM[p{G9% .9s6Xi`O2XNjQtoU*wCYc,˱,l?[TqlNN l]e`^/}\hKkT^a nxpNnOShf8'y;峺6>H"-0`1yw2yS9>t=7yqO]y'e1$0dd0Sf\_onfL 2ks rK. qsvXe'nX/xq#|(]T嫝Q@t/ձY -8 be/`y9̿Ѡ9#- oA`E`B1Qe/R&r)E]0B dGhSfٜo6_2ܘ)y(K+!䃒 +*9S{0r1àUP>fnu`XG5o|i?>W~g~^- 3XP/lv5{/////////////+rL&yI!yq?63 >_cG`ϕw~zmy|˼>wU)cC렔eDNemb rq;z} Ǽ\0"p Q.T\ER;B*{A2~)ʯx#z\X=PnQL#lK6'ch͉jQG~Z6T{G8x1-W`y>f0%uNʸrZJ1*bwZ˶ \<×[maJ]-13N?0L0eAF))`[ﴸ6E?eƀh+bX +q\Y T} 31Ϭ y*bݓE"8[^ьd8s_e5~ҚCqAŲ6Q|r8j#Gƒ` Ъm*FCs*TLS)eJC݂-f*9{QʀncGeJ oL=}6k}S(A Qʳ+}_b>kXWbL0Z{~; wK2^WHLT/ '1fU-p}v00ʕ. Ɉm>+-+9\ U׫-ݾ0Z]ALQo,cFy4'>"3a=%"#oYâQ*TPv m\^T PzGlL r&ɼ(anĴmý0'+hH٢+C.%W\[^尉1!*TDD? F 3)7$0rL@k*h?X|1-ٹ&_!>`"L%s DTwO8xv0=*6bRR.Q xV*9Ė"4!I}zQeg.`iTGv`uL EEXـ\e#Puρ;x1p+*+-K7KblI+Rxea0'3sXc̈́=>%wJUR݌#oAGJw(ټd'!.63V=#=eJ-a{1y޻ y;B1/1$G@WG 2`9EFlO\w/XUP[>#7(1-"]m"^"(60bVߘpܳ˿O~Y󘠚9bsRM˔AfqSxDAupF5A}e{&|1$RVa9!ŕ[Ĥ҅QE v,{¬yE6Jׁ{y8e/.JôxiRؽ)9/ƈnrI(-ȗАޛ0bUmUj10b%$M`6˂!]*mpԲLQ5R$=}1{V" =8NeaLAD%xFq\\fR0ag턴IhU dL΀oK*nƢQRAw=|#aBFi۴2J9K6ϗ`qXH,Kcp &{K2Qm6 XI lD[x,"O 'oܛ%ģzVch)Һ6 =Gf0&NOr|%ksԖi4Tfͧ&DЕԱ6)/f70߼e\XJF6hs-R%X!l/ %'u3-.ՈWƺH1[h7̖eB3+J X)}`Y K_Ymnoѹ=׉cf6pB%RYoj*lm4!E}raLzYn6&#~#R]WGh&-Vg*Greg6!TKXf;8}1I%! S" 6r?n^x7a{Q_{'?v5(8 !WbmAOćp.(6q-?LQ&K2&}_=a{_{KKq17`lò35_H;QpT (S/bH{8Y}P|pQ̱ Giɠxb݅ҠU\mȲiWDQBZw6i ;L7=1G5?RgΘO'`MչJg57W(]sb,2 wc>s-}T`&#BzNx;akh;=!-cdot~m~鎣j޷o=z SQTHhxh2aXbL%,xKd!Y{ݒ6"X;K5xy(;^K.\eE-^d)LYFf!)(`~ȍ:;u \|8?x}3L]#-?"nK Hʒ3S@Ab돫_RSL ]D&82$ VU_@AbK:mUjڗGl\X JGXO伻A ,&GÖYDsh" bfn~wb[o2-Py(@rx+FMYZx79JE ;?IJԸߑzX@t#*.#k `DY~ylDqi2b/)/rTKv2 ŖF-j {˫fC'zBIa3} Oc[ᆘ#FEީ\䇴 5w-QYe*n^cMnةYissNergyY%<2W5Ԫv-UwrLEfGnwGoI~ve1z(HFjrZRboS rzfYnKPW]-7x8/o]2=E?pm0ax0e7»}Q7! pjS`ar8 y`}H/dMZc{tIZ`F1*BG\*<׻#Gt4}6{E^es-z[ ˪;P !IaV׼CަƾͣgxD$2"vYyXz_,ZP@Z_0eL3\9h4d?$ɋ<{W%%pllN]l_+j;)=r)EͪU-iҿYGc[K6)찳,aXY`%(_ixZYl8gQωVmRo+Ɉݜx_HS5]wSU9cTM2(EJa]wvvF8ģIEO?]lq)3GiTX`Hޓ1K> h5(j[#x38(7ٹC~2-2pGqݟ%~_p1}ߴ+@i 6 J@ x_4_Q)^vk@MQQBy+;%c2z!qcYܡ G(Q6[M]I`JKlAQ,"ɊguWu5"hsGE}"PqK/0kI2ԫFlaW_Hw Qo"U40[}}nb.oZgnumS܋WhGBn]{ xEp}~!a# ~WPfzK8_dBz>7]e ݖ-G;4j_(lx9rAEO} ]2@8d~ 콢˖hDo)oT*lEwh-W6qS0Ӽ.XsDH]E`Cc14$"Cr$Jqp܇7]O.W7ooHJ1[)b6~/ {7+*\8C\8-|.;z^ZVh\DOlXT/&\E ~bXgAwqvo\U/!lm/c-ܕsF}Mb]0 n.,W [b^꿩YOSg??YOSg??YO7D̺;B?<x}aP\(${K̥r}_IvJ R*O5wVhU^&ݓ<61}r}~/1(ϼZٲypvn{_((nU ޻bVWmװe*_*6&t׈Z`=O=?rߜ¹iK'Ptڨ<3x*4zVeo8;os3tsq;K91Vי{"Yi|3j*D7\}s1,ɑy>duݧ^4_;5 ƞ,U܅- E͟|ߍo"zs7\oV8STi4nw>89;pMk0寫`* E k-YF\aVdkz{l0@#0jK9޼Ʈ[! J `v(P3;8QeُmXEWwAxKFFZhY?3%ڦl|Q.%mO!_HťM{[ 1ՏX-ջ&?sf=ij.6o3MML6xc_c+ܫÈ,0pl&>l76W&Wj"7cqi#N3 R}1l|6{7ŲK^<̌-1xy#^lܙ`ϧU`@c2сyKn30wq;􇨎jg q̣<Y#,̢MSs.hۘڻʕ L ǙvWbR]o3QmmeI[>Xm{ѷwkc8w\)w5`_X6xfE*@{sV|1<loC0C',ZY;y%E ]11fҒnW1xfo yڮ<+,x7"),8hyI6e_#RRCxJ׬܆ \n9}fIӻ lvQ=!ʪ[o7H4qh--X6^= */MB⫝(@S؉)(>'g3Дfw%ȩF4maMw`&mˍVH%-QLBG uC.UılnG$?DD&b^L=%0٘ 0g0/ nBb&i[g{>Sy-r<]TL^%!7?X%"o؆wL#4[-)%=R,9e/ir'-'XTגo7*D(| K^@#o=Y~s-ɱJDGye s6KZ ̹ qHhQ_ڔTy`7\J69)* +b%nBÀۈwk>MK1xo7Q˞%5/ٿ@ew$"ne|x̭CtИf7W:+gPf-ND";JSNg!"|*˘rYٜT}AVw%.5TܞcQ숤~Va-2JG"_OP7͠HlƄ>(?M9, n QF]yt7` 6 ,ɜ,0 ݃YPf!RLtDFa)ٟux6.].[duE^d%77 9[ÒOm\T–yUDcw6;;Hap=ƃTHhcuy\s.B`Aq܂ٔ݃hs^j#G:6' ɜF@3=ikü#co)ˈ$p.nx#/,n`C*eY9&ЂSx={/X."Y g1v%b"̓~,^`--~ FwP(mS ]3+*.^' g4Ģ]ro9]鼫xC#=]< ^%b?؉;JXh{j|,-9I F ;&3n*g'xƓ 6 aokՙP s.G,d0*h'i}?;}6{F /$LxVMU Y-L b@…}l;x" ;>r,.#3 Elx} P.!-">\9, +f,ea {Qb0L*%6H^OD@No~}IJB,c("vncM.] ͗za/sRۿ兄Ce݉C[M@&7jJ`rLlSۊ_brA%Mxq_\@v}cdS?0_`"ٌaó, 1_MMdS$\6Xm#.S|vW{Q1J4oCwX6jŢ}Q!{ozoO;0X8oq%cdۼK)˦ŋ{Ffz/{>Kv)KolD kϘ, 7WXWV"Mj); b{ZYMYfŰ^d3X5%y6&ϝ,o Vc] qk"f={9 _5An6}FKX}f*P@yJh. Xc;~tCXCc̓hQ1U;s29ӷBaswbcmolq^d9_T?N6b–d4Jڜ0Wg$[p0/s(x1/)xڍ 82>dslxXϫqd o5T97W l1m(sۻ pNsy'rH̅~ HfKBWM5hlb{ JZn*56rwbg(j^{"1m372sfvL1ԻjvyG29e&=a, JZ~( v%o1"֎ 6]o⻱7AWjǵ&ߖP"ĤqvES8`*Es4efx99ᩗ1F"Op6Ԫ 8O8!Ŋ?X_g`@qᏽ1o sA 3f+Ŷހ}ҍHۖ2f^9 ܳYOW vOBw_ԽX8z9ۼB7K*ʞPmay}m^/%HbEvmᔄ J-j9%ZsyAPoKe/'i|jybStE0KGv>ѷÙ^Sc fҞ\S{FDJv؀o+Y6LB̼ʍޱĩrwvKUv?^ނb`8P= ijs +rZS)[ib{q#8Tnemk"9&0y29 pLLa6j0ʪSLo #.Fު6l}H(% {_|z<=Uq7SyqM2=f^*)By? pQ~r WvҟW8@rreY{[H1+6\(oXa8_͇xl`ؙcl~"{ `5K15#8=,RXf,q5x[il\NeD99e9!UDv.=w.v"9gؘC[8ŸܷS O2`V]+vÆ8{v{Kc#גTh?cS+6vk⳾\Zbhm爼(Ь_@x1Ŗ1Jk}Y"X,QbWLY^ ",}Ek@q<_/̡ϸ}|ѻū8M976.-"zrN1`̳/vE~hAkJˊEw GS,*KڵI~}b(6}(2/hdyMpEt X`c SXxeG7;YKbw)18l&lp7XRYH{+oa_mxb[gv64{1Mi*%{Ww7UݥJi,ACfxvRnq7-~' &Qs[C2ڨ +x7%bTc5Yʖ.Cڮﰻrofpҹ"ze.p_h?4D5q)U6{ Jv <7_ nf&6&b[s%\E`e 61nhP[7oo'-jfFcOrf./b SPωUJ)QhsP1t`*ҔIZ^Gh68]B/)b޴J.cyn/A Uw`S/s#[b9H/E8z@}`/I0mb>wbՉBӎٕƚ]ÜCNa-SkTC+>є{PLW#Cl`WXDJlƒPl|7?/Qo30d&y1/&2q_q)=\߬ᆈF0`}pm/;;yn˟E<PX}V9XXN>(Y{jMcm UexUKUK൓l93QV մMgZR0\iǗhvb.~̭R@@۷ĺxǃ_XQQkZg),U(ztOH2~eFb'yJ|Z۵wb8e3ϧyg \퀿HI؛@XU\\[pF@ @9( LSlOoʦAq|#_f( ܿ-h(* ,E}Wu=Bh6 j--P79H(OdJܗ-4+v̼p\+vNbW)Fv|##q9iO1ww ʠ6WuCˇTvk@8sٴ<@ FW0+_egCE65^Y@#P@+%^kż mls,d 7͘7yFU@Jbrmy Q2<N,}ɵr_ф B8bm=L++5 oDnPqB;ǀe}y?+7oޒܮlǭj\-F_x%n"f! 1;.&LGA_X7=p̧ O8N">-0=p=/D}6il>k!*pRwDsFJww6LY"^܌9*qd{Jہe"yr1{ ĜǨ~Rw)6b f,s(v7j٧"ù>ѝm+3AA6!Xü?jSEC(٢L0*17ZS N}|oaX&k[4J Mɋq^gp#cpׯ2Ca1E=2M !@_{1s{ 8jc-  -ž7*uy]CfPj? f`!68Mp6BXO8;ʧlP!tXY{3DU57} C{LZu g)Ut+dgn)D[W+,Uo#p~v!mvnϴ\6} "!Cn-m_w[?h]߹x|r#R616fAg鼧|;E{)VuJBQt=,e;*.U04$3F٣U)\_-l#HVXT˽^IKJ1U;˷mqf6Eiͻ8egQ7*iϘn1Y3͐ro{.B*Pxew8e*s6f'2&aQ3n2dlr5"hỒP`g6?2Klь^{P(7)܁aɶy^5 2'~1DR2]nxc!^mܧ2{嶜ߘFa~62"b2j2-i}ҞvVz3rqs1N N3o#oyzf"Ó)6-;ϥTѽ'ݿ= ւ@Xw0BMaUUeM;W8,K'ԅ =mVv-Pj4 bV1*^M;+~!o,w267ٿt7Gx۴oxcc2]Xj"#ba@K_7zZ8]@06+UlVwq;xvfZ,& `MlSe!8k8v'-|m>?"m\4ىVϿ|J+x0hr3 .#{oķA sfPRUJ"q?^ ~{`)[]g.,%Dxn8$9w1%q/cLʎsDŽ v ͻw/?wUs)wϫR}!cbϬKSڡ9K9v3S*D Je[鎙zgmNOmw(G9pZps.кL[z̧`ɋWs9B[cZvzkbdѽy#ex3v;!c~!lڧ3y;.я/ȣ]0N8ky:w\R4*r:bdDv4RpY\PٓP1]k{0Zn捱x~F%S3+ds .VEw'x|gP3K;@uQXEyn꠆X*P&LFf11DvfNP} BIB4Z-`sBTٕ<6ls _iV괵b| Kǒ*xAL84%f'ex.Py_fʭ^Z@KF/hwk*ץ "E책h xϷdK Ȁ,J npO22S{enİ36n9@)ɚ.嫰_p0fZtvXQ:xq68[U& (ᛱrc.A[?KrؙtFӹCXSlMln4!H6]g7?4&7Seo33av%߁~*"%#htZG#/Æ*혷{70n︶Hނj3 =8a7Xmwl+zOۑwIXpYhC%c*$`eA{d")Sr`*UU5~\=hgcܭݝUZ<#qd>!'a9$aY?r@s_Ʉ߇$hVsXdϤ-Tlb7j&o,ĥPUg0)V#XUAu7!x%{Ъ gy;KE\<9NqkPFy=u12^o79v6}OXVa@5Ug]犟d`` z"~.'7?9+.eo;VѬ ʄ[I]*Pt0;J;hWyo2Cb] ck;[ELL^Z+Xw\,ꪻ aɱ(f]~ߍmSXPq"tPl(]CP_M.Y_!CSUkͪVn> =Maм3e-=IuL-Qes޷x 0r:̼;7?XzC㉚An`oᵽTK[J uW"0ʡs #z 3-Z]Y#Ogx'7(ihYČ&71RYڬG>*kg1킴*dy$6WU8^v_Nn9Oްo܎'XɎSaspqCB7ʯBep<ǔrq ~o<9g44V VL%1eu`zsym.N7臭;zӉ^8wqk%IV\×ո *E#H*(K=ss2=bvl&Ds\puނWvx/CVKV3d7y[{~ Tl<~"[hjn2l0^e)hW68 TxYVLC!ۙkxVsOT+ ܱAʊJ;gm%E#˳U+z/s6cr{y}KLǐ|cbԹnL0YoĽ] >Qg݋GM7񻼱Ýeh\+'a7va"1SG8EG_"HʹwAro!Jͬ_v-Q*w%CaB÷D .]eKR%RmrR/{cA,pDyk`x'9|NZwVf IB)+eŦ (PS%v_EI*Et*+v"BGVZU-öUf=O@!\=Sy'ERK. (vܨq]f?-*#̲(bAR b TT}G>[.XX2N*h1XQVԢ#JfGTTVhǜT{0W27TlpxV"&=r]D֡ݨL%‡R~\g@Rd^wǘz87>[_'Xy[$}%˟ \wam"{%w>ئ˜=Td6 *;cZ`ȏ@ޗhf+6C!f B7)Ì4r+0vߴ9ߴq2(q(߳7M q TzJ:Ze"S#Z g]i(ZJb>Rwpzj+~?I6vJw,{՛2sa_Xb+;F+}X. {ic 9`P9/xwov 9#ϳ㭶3]gh5sAZPrq|!)eR>1EJhbb|C,^P-j)Xh,ZXRo;2F[e O@!cFmaozo+vcvZ|ٔ[\z U=ؿy3!wE_k ԚgW>yTa؉ejkx;LE9@)Szt?xy!SX2M\ٍ2nB_6)E_x$+W*̩VstY{Js+@(%B-/9n!ۈh%Y91- k,n)n[PR7z*y1K`%{#|nZr>'̬awD 28-qQ.ꋄL]KڵP,Xii1:kV0€i6j;BT  MmfQY`wV({~'e\x';Bq}EvnhMKs ʯoUz B%Yx*f)@l瞫 ?@f3*Z`ZsmֻBYe9hr<PH~76@h 7{ Ѷ۰x b/x`xEa!ËvvEzGH!%Yb&fqs>Vcc] U>|f%LdLدJ5D chI UۏvvHA/|Y ܬw,2E7}X%u{b\@ 5Mx7{-.;L.YV=ȠB!wfkshb o0r:NWms_`zaƁ=BmUڱTx\VbLZ^mJP;ʠ n'_-7-#2p"Myж.nZٳ~A|9^-U3=(4Ǥ rO\^{-nX8XI@TdڑWݴVnEϻ/*B*Mpʱ.˭T\3F%'oBN?D;!LK{=b괌cew\:blb3͹΍,͚(-Dz}v XK^Jѽu^9U9e{g(T\(NR,ahm)ʲj^'$ٟYWЄkwNؔ{*@vĸ;KL=],gx`b' =Q1цZ7VN)"T\?=⛁9،]P؊|V$9KY+]_ JR1PNNPh.Uyv{5wQ9i_|Ok&f$DDyD5?BZپ׵9h{.[_gv#hC](L;#͘I$m({lf {ezAmUn/'w 5xIv@hp.\m>z Kchc/Ys79ÕxwHjph @p?! @"vzQN\I{<âYۧaJn;ݔ7[rӺ  stwyC"֖7>б+ q)_V/^57.72Ģ(=naX_?,3k<)/?k{ `w7s*Ko0L<Hb{/GN^jqKAck_k-,6Ɇ$2ғ s.w i\qU)jT/4*Zl%?2pDkn<*XU+e.%a,/Gn -!u!"MX]y ٴ28hWq|D;:s _^7;[0yj)-H;]{+#h x-P>k~ :ܥ} Q1mʗqxXU=+##ǤwHm 1l'x$cv%%ndim`+!@(,9 `VVK3 d-!rHA亡`Q&@0R~}XmZ2>ᅅR"{H,[V#J{@]Ȱo !c;m F J_xjh#]Ʀȭ:l&Ǧ`+rAh6܆ BVw+C0;6%R&i⿸} ;Ji៬o1l03(\>eE#̧qr=`Vv(WYR{E=naxT۽b\[l=@l;mQ xܷBٽJ l+" V\%V/;/t1oQ+̲`_Vpݑ3jgDAt)ٜ}i\@+;QbngY[eD(W^4e{xeGbwВP C B伪Wa6O wo~0B|$rUf}ʢ7. nHivEYk]ڜbGx%mT/S>a2wOy}d.َ䱎 !&K,TK> ` >J47wnC^#z6(y^I 69`NH;}^&a-?[^.BaYbABmo,|;)%ೖc[ʻwbW%e](>؂N0`[ yo/A(PZ}e-eHxg5&AM.ϼA_l6ivoqk@wj̙P}.^!0BBpLmWM1v{2orw$ƙYh]GpSnwe;CBڞ,w>g2iY}@3Yۤ]r>~Dld[X^}lq{q3-oCKgxMX5MG0cP.c^tG,xuhŇo1WGh5쀁NV\b^1Fܽf[ W/Cq7 w]l옔7;;pļKip&}B·܄ܲ1»\` 64p]mvǡ UlGg1ٝٻ NP1vpI-l]wE09%NMX.À)v{ O6_gquǴt\;TQ<꾱TT YrP=AR{̡UH)FCč;F[v #3S ʬ6+OPE /wLbCWi(񟙄_Y˳oS|^_}PȽ/C59nR0LYaEv[]v`h: }_mBŃ3@2(ϰS(fYmxdPƎdž6L)r@0hRCxip(y-=8[wO1FniV=Q&%иo6@YX8 }T(K leńC Efᏻ/7"i0a:%k8|PPAUS$beOl>D!jK6Kir[8vaDZz;f샞0c֯VmrLH(Ыx{^ hw ^,SDd,v==70dvfy6<2WV谶Tg&뽑|aH).rƓ&#}f>KSqk΅Ch0VTbcgp"Yhˈsx^9َyDH@Wg?w(m]]OyN۳,+FVW3J)]w }ܾK)W_qu˶`VC2s0ݢ=/U3JnwݪP{.Op#^ݥƇ yy71!ǭ&gyQb!»o4N֨2݇oFce؆,t,Y7Nw-ie.2hg{`TZr宽Xsd@K By.%e❜EIm@Q ocvJٻKVLǡzf^y Tn2ʇl0^V;%}QgӉf%om.KQ~p 0"6xQܡËMzSWi@'%bCl?q]1V,{\z6kb%%(+%&XݓXvY^=-} x 58?y@,Q΁/x1lNHa/o'f}yR0@wI` )b@82sp3)0=LZ/S@(jS@=/M$%ZV1 wo>\Jȓmd-q +khN=ǘp{yxL"¡24ͣc*N #QEG0Z蝩걪v,~G|/'gyX"8H[Gzr\<}fMXnT<^>& g%[eʓ aДcV.LQ8/9xj\CI3.1wOEPzAT-vqpj =xUf~2'f [7K0o7s yԖفO~H3q=,VnJ+ Tn5r[c,Rh"(Y[Y ^+寮"sS7b  Wshw7Ɖ(DNQ޳bBlyDacLYv]Qnу/[Q(y;-D)AE-]?F q^uTSFR 8pq"˭ee8@sEo˿'g2G5Vb-+Ј03.{FV/*"3Qg6{jf}oB `~x;`Iߛ-®3#~3G,mF)}7eV)7bZ|6}Ǵ6..hްR8wPL5.+fan"&%?lzq1Fƒku+ rM m7)RVB`/7x  Eeb]EJ`hn9 _p= x6K!⨛}N-F,K~g&`vSDb(*d 5`U_aVp%7X=70qJW1~fbs,Ee1X̷F}X[[(<{jZ9Yƶ{2'7]0X8ݘanVU<6Pq<I؀& ra0g 8l8yoıOOy m9~-`|OU3l2 D|>o7O'D?|>O'O'|?"< Qv?Ge)!E=3o po _+abLKo%b.Zzѹ)]6}`GI,ESb0fwav(/K0=4,X`c GX^|l@)1{?KiB1`%%a n> o' XH,2IFBA {6|M}@;̻fR5xݘ$#" me%\d2Gjbd`ڱG-Ev@-Rpm`i)Aiܷ3'ħ2R-~+wIU׈]͈&&ҿ2Rb'2J%.|HLʲuT{fNҊ?o5pٯTn<z/ ̹A8ioP~RIڎ݄:Ǩ@XTyYEJ$7x&d,°\8vsp'bܧ77uЭ@OHYBjKKx'':7 %ASzbyYh.ySnj;`m\'el\"-кgQ,v0e.%)8{O4w"Y8#iٴih=Ơ&>_wSkVTG|FA ^TY?o9W?Ipz0ǼjnB܃<,uv1 ہl}sqZl[E Milc\wB C{}Amm;m0WVnF#b] Tzە\3EsyP]e؃,==lw_%xqYqxFvc-rkNf*@.{A Mb" ݬ K.iIy?Kcjk|z`k {rb!l,q;oRZ1RCY˂MнFG + X[9k.fhG|Bvh.Z<3i^w`] `G!>[L@OrTkBŋC޻Y!0Ӊn౑xMRKvPk;M-Qq3]ww=ڵ;+ {`r8 ځpWPIX,_JV=ȝw5~[7u>UP.@5>8T/'Ϥ|K̨qV >}%-i!16KG.aU`r!m[%w̯N@--}jU Tgwx`",φVF4}Ʌ"&ѳQ(+ yBWϼ͆@ToiE7`(qZCzyj=-3b̲ 4Ľ% nm-;}dkv:[Laq!t6&Z dBj+K+35n#Gfe{}"ss,Ȯ~@ _s{Gka}NP@elB8v2V^׻-LNcn~ZWspF\;I%j 7"'[vyۗ/}DXҏX]4s;tiX{[sxfPe1;ɮr0W2nzyz#+wƂeZ)w W5ql{_f[WnnJ+;Ӛq9Ws pr#zĿfջi}w-KKKKKezV6kG`QR02w g2˵"Lgelva G?[8%Z!ڠV϶?y,p;_CS2B^"审+(0lx ver1zaڄ`0r(!Lw&ZcĜNGSb9K[/?otTUUye|[Qbc_xaT-njTG**lT @-~"`%v`9J% lj_ygyNG8Nq?eQhhww{NeEV8jQ>YQH,F%(P47O%LĕP0`!xf)+A Fr׉;e㟴-'|h-KOf)4[^Ho# }pCf@{FxFpZp~ b0PDKAOFYމmR,f"vO\ 0 nv2Lôb-0܇teH)c%lp{Gwaq 'O*TQG;+}&Ѵb؎11XVhH.b*bfMXE#QQiBV.(FjZ^h irDz"1}?7 ;»W1tKPæ\(2ILKl8iWf)ΜRp~V @]޾;OCu,܃8xZ#@ow^% ,";UЛebV/r*N%%w@|ͪ7S2#=A waPO^cZN7E6W0.\K Ub ̵si\r˗.\r˗.\r˗.\B{=k;Or2gj=ȹ32& [ ]~%ĩL&{a-|=й%hw#v1-Nf?90s1.)fg"6Ep }w+3fp=bWXx*xC="1h;1;?S7-NA7m<7yz\6Iy,e=keN R˗.\r˗.\r˗.\rÃww60 ynCEX|)1#>9Ԕ&DU^IyVA4vk][_i&Jٳ UŘq%Md[]@0|b0ES(.ҸUh2F]mʿ>tBWsbN{@F$;̯{geڌ{@n;qLAǂ#;͘Z%!FW02}%KrCBS{˛ߑ}`JjTM|-[eg>*-ث/-P:$o52xw~ٗ:݉.kjHhwnm8_fU'$nL68/`="$gGqy%˭o^F쩞e4DfߴU,9ҺjWvD8n2>uٓV_x?8̠u!3\Ῡ9rCxᯁ߈Vӂ;ߴ5K#M*s3:XoMJh}6*ب/b,YkZr3;;19;}"Jv{M&`x"s*cXq,PpC{Cb~w(#x=hW3,U$v `W$̆: WޯIs.bߣdv32oj;n ׾vLYk/EFӴy fLt#*r=%9vA~rf } G#و.AQQ(,Rtۘg%nm&x׈׺TMgEF VeKa =eNF=J/-[+W`^avLe0=C0mSi{fb:70o1,1 K 1?Xc2aa{SZӒnF(n"FÈ8#CYJ]e/TD'1< LK&MDگye| ioCķk)sqb Uݬ Whq!}7eGB,иp}𢾄w]Hl\ navԮ=*C ͍-Lo2B (÷bW(3׼1DG5YWԅ6q,)J#ZѷcDGbV׫Z +0[|H^~v=fN0AE[b0%e];C+;ʊ7G@12+ļ/m8nH0ygYKڷV{LʯhNF:UKbM&XLs*&qLNh# (yG"eqRw6??KֺHD74#-ShKӿ8Qht:S/Qn\WEht$%b\nSác1R`#CgAnEqzT\j5$Z2H֕hhė\Ș|gR>+/}L:MVq0HXgkENc[Z辔Z^id=/hCCtGEZ,GJ!/JiRZm(@hAazTs?5GAFX:Xk-ht`Z_E]W3}]D΅A}yzMW%i΃ұb:+A־8ފ_.5A](,U)CvX#QuBśž,*:.1IiKՏ.Z". 6ez,,z p:jVPIqzhЉ^P:mrIIIIIIIIIIIIHGX5@Veޡ*Ti!+(eoi^]51A]F/Lai9L6vnSD56#ۣpcanJLy"|Ct 2bZ.gz&3i>lw$ab*+T,EVbˈ#;bmGpAԀPD}wGThI؉rHnX3Ɣ 6DM *%eh*00IHˌݭ[yԿwoOfأf#?bU3~LL\ rQsJLĺ8. JK 1Z@֫#,qJJh"Kd\*ˈ@o^UTo0 KBDF؎p̞H+)\pn%KւS~agc ЭT'$)Jи^Ke,^FڇEZ\.R XM =b;DI,r.b"`s-ڔUEl`ĦcEڗe҄3,>O|,~Ygϗ/>_|,~Ygϗ/>_|,g-h& .(Լ6meu+[hU hu6Qҥi}s9 ZTQsT++ٔǷ3/&+J]iZ ,kvfB+ZŮT@:UZd6&bE~b Ҧ%^%i$e] ĸ((sBʄ4塭LMHEAOB-j{èCF*TiʎpS[Tqԍ*:*T=])*T]7Ў51#XSlVYj,:TF8 SJQJ˗-F1Z&_JЯC3oFH8CDqXn0*8bdL#)ZҪ!Cᬞ.S;@ACU74P:`ńft5t7 h|'KRtRh.n9"z+.TfsNܿ䎁*&!4Εn,%r RJh]wQTX/@KЋ+e[4XiS%KnlT17j[+aԴt1 Ttc/Q0%t֤B܀ Ѷ'wKX#\ 긵# f.2*!nKKhhTn'hwC'6~Q dt԰Aґ@A/C[ cw3F4*Vc6Gf Hm+В| +V3(;$`B׌Lu]oЌىN#+Ptcޏ@CZyDLD)2Ru(!{Jb1tUTY5<,o%sw}24]&99|.h u,5%:S˗K]zt[ҵTkz5HhV3ْc9M%u:X7)0n <.a* 9>~7,c'Ghn`f^thg:,J#v..%iR(O0貘X'y] ;e[GMy^T\aeTá5ZwmFV|9#qD`A1[@v*7ݍ~o ?"bѾT1#.b:("藢ሲ&/);vΊqfՌ1[\0mE$wxҥO8p 62X8Xg-A`&PtIMGKF@({(e҃ Ӵ+m6\GOߟ]6;ĥ9HdKy(7#V(tL3*SZ*#7ґ`;mP-.%Me5CoKR̳}0 eV 䛡Zc89B\ĬDjmF %T 6ьnzGϬ.4\ ,7/۠\9Tb)RK owE6%ٲXC27A* JɆ>09؎tF o()uB/Xvоҡ q:S(4Kڔ-m=!G̮(MwLSi[)7ڕDB-3W6䞰'1T*<񜠂a A3QXhflV8fRhDch╆%q | t}6Chʕ61.2fD{8@.G0,ayEV; 4QM FPj'tXt$PfRI $KEwZ^cüL"[xPslm .i$- vcC`nҢł#Q%FgMζ_-v8 hM QcL+:%K l46ibz u%y؉ph~L2jWa0\bA:W>?Xfb nXHf%Qc"b 僣c>Y&z΁Af DWüaIWsvJgAQe?׍[6s2]ecʹT9:T4*;ˊɊ`Z},e&FFb9b; S[S3m*1bH0a1*E^`e041S8025w48Nu ]#SOhY_ozw5f,\W_*7mٴ,A!!WpitȌ`K*VDvm,nMɃ2J qq wJ 4h4/ UC%DK`dLEn9L,8.RņP ^L7h q6Zټ"]L`Ɔ Xs! e]΄h`lA |/}M֞ZQ_oTpǙQ|[/0;JsS:Vep;-G^PŚԹc@5"%4\F/ofa+_Hg${f\ʥ^g1d'[#WzfD;j04)7bFq{! Q("EPJ6 +;kA.41 ŠTm;?HwJPb>44Wb6L a0jXcucCt80QJ#YѾCz~Za |(fl y$|z(jn3["[hAiU#h">wH(|&|,4AV#f1kYwܥѠm<.E`lb{M[!zL4,H) 6?@/@bS|KapySF1-!4۠3*.g:ӆU0f6`ۡoӴ1sn> VikҴ؂,y{Apħz4.\5 K%PwhHi"w%X̭ .RҪU)S-j5}c$2qCKeHD!"WLi$s+%P:%]A *,@,R[/d&^;}{˾7Oow~ØW2T?}|ǤgCW.E32QA0ڝ+.誖U[zn"qPb."%"n>6AHJxT ïGψ ~"~Dgw19UcaZNu5j_hN#6\xfFy `>_,>qx+Gpw{%@ɡt&8fXNg>;3 ~12 GM)j=ѾP1Lrܯp{e M` D*xƠEEfڷLJΙHG@я@.<̮,JmfڙAiE1O& |-3v".6':Soz!͑f^^}H,Ù܊q)rх 8]٢&[4*Wq0e@9oQ6*%B;wDJӳb[%t$tsifYSϟX j0B*Q}6\#_HWuR|*T1ARVv%@j04ߥӡ1!* pJ"1F1܄ 3C *1rĢT^],G,K1ѻC& %Jo JUޕ/VٲlO?S/èGAdU0\ePJXf-,!tޕqCN mXm9λKanҼ! eJeTt-,QaDfDK6) Gq^~r_,@b[2ظ,E0HV*J%dY EiQt1N\??h?SH}mH1^*"JJyx/1Ѷ8gJЕD1RJ͐JģA2FP AQ01q#l˜eĻMUݘ%5 .):֒ō<ԨK I|=o tV5*Y YTͩT.PTGUշE0P,Hikd 1"h.7b -ڧVmȧp,&P2MC!ZoS/X&Ytaxg$ XB:Y*,,KSn.tnI]rTKҨiZ!)-oYBVSMP)ltӞX"].UMQhD4 h J%RDLFK!Y+T6N}uZ_aKhEHQ4-L8" ҥ0!p*`=;q*s0m%hQ ?ݟsB3Bࣂ`hhht*u#KQo) 1$ ŝs\oеEf'CiS @SЁKQ=.K]6NfR! AtNp5`Կ1%.̭à!.,5*\Au2)~!p@̻j/4iڐmQZ=5#:J Ԛ&[z Į&d!I/JCE. ˕Y(Ѵm^/{?pṎmDnQ**. eJ҃[b:+o*3ZoG@rMH躽]EFkIݣ:3iWR%SE )RX_AFpAuQ/A-BhUJ\ZG{6ct-,2͙CiO'y+~?S'O?؞<by'O?؞<by'N'~C<<i:Y.`lz)K=cV @Du+2:.8Nai8qWBS*[@:mXhYBGj.\,+iTw]5_^їй}WZ':.:\qe'LOfm.m.;uXKW=YB3*tAlKeE^]֥4ZzT.9U0`F ).+KP\S[.Ff*%Q t\! wєhkz^+cAPb _ũSlAW%b`W/WRу+A,ЧQp M ^DbK.\ zgB rV?\ɺ"QPzE] %t\}':_PTt;]Wz-iĂVz\M{K.hK顭:*.:XKqK0^!F}ohH%o䥕@K衆P- :s.]Y).E}7U|CSAc-wC0龋PZ9?΁Zt6f^|J/2`DЋ (6_B.&RR=DM.Ez.?P . 2˔r]DvM/A`V KjtZ z&Kң+R:&ľ}aV^jT/w[D0XiSTDujb\%GF2A1tWW4kLE| P\̿˴ \M`MbV\CDtmG:5F0h|-j3KX]h CUXC^-Xsxz/GT֮=e2rN#Yq@aqG@RZ%J7Ĩ2˭ۥEQ=Nr΍^*.Q/0la*aЗhcegZBėb;ȮltY:H.lZ1S]oQb1 )4-ʨwB:+J |0;CboR5zg0nToTS(^=ch҆IqR\5u5 ƴ1*bYrX`(lD +B=)*=!f\sP) 6hs jate@4- Jumhjit4z\G<3 }(BiS3Vf2 a]Uh4H= CЌcosvuf!p0we;:+K:TˌB%F˛˨u0s]F5-FQ`N!>¡rvCGip0A\D 4QMj0j1ߪ7-DtZZE*nY{ExE Q#2| M\HD䃨T+J3:X(2iLݙ7Mjk_|A+j=:?PtPA}.MXhB0teQN;Zu:.,%FR%Jbm]P`zT_E-J%EPzhG^"TLYC0c8_ttub֋Q0tBV#[B)fCAa\Z'IKhir-GB_Iе _JԸ麃Q XGAeCK%L6NIhCm{&2j9b谎!UT^Z@Z,Z D:c+K+AeP`AjԦYtT!JoM50 [ ZXk (:VZ](zA#`NGGQ.[_΃}7_3x%蚌F$Xje:Ltь.`cJ"M.t1-1:S@e`RMF[ݪ\Ez ?A]4:CUQ\sdYgT b%_Bh .\4MQSQHQ*jGxi:X0VߋS HS@a %hK(,a V_7"4^[`T:Y,HJ!БA0ִ ˗L,"hЄe*L5-jrnhlt*=$Ht$Pa/J #3EQ^qkc1K'&.iA\8iQ!А`Ad8qrZ%J*TRJ*TRJ*TRB"☸ aEqֲa95S0&(tԴJ.hm'Nbh\*\PIh`ŢQz Ï.\}!MDhwцž:D2p Jw"A̩r!(.^[)V(tX))Je9.fT'΁ ő,c ̚ 3x4teFPte4ŗ/K/Eˌ2鰎 .T!.&"޷/R.=%DAF2ラoQL[.,\h}Ebŗ/K4_NQ"K讋 QoJҡ2#.0e0Fĸizޗzqeŗ/R$EQb˄#,uhzZ^YJ !84@D .\0X\,eH /,J-?Qŗ.\2˄\u]Lb˃B.V kr5Piz^IA.vbW\ꢗ.1 Ɨ^"oXK0dX-tX\^UYŗz.MFҫG5r!C}Hsqj(V_@!%hhBq|KPhB`ThdDr%,@1 1bb\ptvlDEX !DE[8%ЂBh_]CywL^:ltciX;Ee+DGAɆTJm/-ctZS)K"(o D!r˗.\oB z05QCFu,h6c$:6S(B/n{KFPhfq͡ЗZ- anژ7Ɛ,+V`lc7*0۰Za"\"D/f5Q7Eh&D%rr4t CAin ݄v 6#r$24G>ռǙ_OC2s.fKwE??98P5~|"v)_@09fC}ȇ +c  Ϭ9Ёnk۴XqKP˷XCBӼ 3jmptHb"素AD?[x\1}ЮXJ!.]Q+MکY>'>/!_YBnQ#U^sDg0;դw-`jZ XR- %=cYg[M\böFIpeǂ0]M*gxKKv/+D -ҴR͝qFs)Zip1wR^ȀwTgJ*!F0cl<߈’p, JǠ̱ \o1fSYKwWRAs.h@4RT1+]Ҏ.T&'D2AJhwY\ˋ(a(Y|}"ޔa Gi)p`[4b% \DA`Xåd]Q"ԹOe<e%l^&cx&HL xCB*Q rDYuC(8KEAV*QAļAr}ɄXvF B-N.m|MY5KyֈDWh.)2D}XTXlvv(\J(/0cP; q b"n*2↡Zq0coἾtA";4E15MU\p}Ƹвܨ51RJִ"Id:kP e.,qA*t͑^:KXfصU˕*4.\qhhm2̮aWMtEmF$mT1f$J#oLtUB]6A0t ;޵ @w,gj(GZ"(qKpdEFa]d4H eA&SvDĄhY)ZVD;7cEQ|RZ s9/F*,zVi .S.SPJ@?uO\Kb GLCABU6=H.=/#b2Wix3d&H:m.,vt eJ)2!uVJ@Ur Ӣ2ˁK.:=DO^;n.eSC1FJHbIs#\($GWJYpcԋsv.C44:]39_XD9#?k<~?YVd_7b([bt9? qz#&2.:kK ʥIv}e]e-V~|c1B4i.a,Һ/`Cm!IŃpsJQ)MƩ\:EKپAtY/WJy>w̥FjZ@ 2/ 6 "fnh4`a1o-P\ω ;@AKJsc*mϨ;fK 76%HKM (tQbɟ*nCtx,$7CQ7Z p0b ꥬltW,DEaO|Ql 4ut~hɌ$,)BFјB6X5ж9>|;c-r<[D)Lt ,Gxvf_#]PX.%Re;\#(6 KwD)x\/X /chh/#,,"e[.T-:P{U}g?J#E 1O2 az2 RF,ڜK…`1W?o|"[%v6luImhQZrh.|^}cd!|"ı05 V.JhN(ee-3x%Ҵ:oEX hEF]n\ >6#r/?ܛf"1@.B!0+0.a{2Bh2ԌZpj>q(O7*T33rAPX c)ETC1#q"Ī>a?#!2&,WhMІTHa!6e܈ %J[J~?q>SOMsrW7*(bt]`KN0@1h'h|)(9bXG΂F6_ܠsC-gh&3ҥPNҊؕ/-x4mf6;6ڢF_6W7g-A&` Ə"pm*mW:_fE<ں,basrhV;Dv%fQ\?of a%sݜRUmyGfTю˱^"1@"cy01&/7owRaZht#xD+olȤ08lxdJa_8}ϟaϽ;Dm<lgBp4"Kj\2C0bӧ+;vK>}y, S?!0~DCR@8F{E1.b>:k+ȷ1D\{TW[)%Y"ޮVMɕGLU=K?iSɷoU7Q) F[K8efl,DQ F^ciH-e%KK.3\YA&f{;%[*Tfgm2DՋ/̹l&Ecfq(@7 o$h6t" b]Fqq#6l4UAWٷΌ1.84x";Sf;ܱ;&㿬בf#0[8RV)^ɲ#VVa:Q+LPU&ɳBg0x`61c۱qu\ ˻ns>nZkG[⯳8S zqq*("Ĥ!F==dZKhl[lu.>!ab61Cs2\8#K@=C7f,rAVVy+?{fq0*zK'Dl`f"QۛF#'iFJQ?ϼpԕrޤq;}A6;q?ǎjU#mG+/^*c1P`\T*c:O2̺ T? hMh_J%`K~B4e2*L203? Qn$^^ P״U|~\eqA11~w21݈DX XpqY*Yy!Z%Ŭc}J TPhYX @0etJSUWkB mؘ-T+pxsѪQ9 |᥏fq8Q&;G=*5KrS2]z/QGyiW?5!(矴b(dqyWuBћ~v~~/QPa~ 9b R X"A*CiSde82Bb\[9A8&.MWyc1#,<X)yS?>%Pt Q/2=ogi]#N.LA4XIX(R*t sZnceťcLIo1~~ߟ VI91Cn+?,vc({cݣ=˯;OZj|a&G(Oy4진9Ѳlu0;G6^='>javTfc +<1yDc-~˧ ><O]>T@΄,EԻ B+B4B唒ms;)SycK.dGDrZDbsIE#΁rbkyN{?DcFb 1h1q;Ww<{Ąc .3:&ɺ,ǙvRˬa"@inﻋϣ >n\ZC#~qoф>tl_B@Rﷴ8}aM:F[BRLLe>yl| vx ΑfHoP>xe`TW\ALF*uLψqWbSAD2O-^TȊII(a*2m!s:l&ɲ`g?/T. ډdi~GGm>y1gtŦx(`j,D_f0Ux*l7DL}ʕ,;1F9o+LD9V06.(z*$V6֭A_t3$G0B^͉{Z^3U0;;>>\#rq6 tyvlEwl@ ,F %JЛ`:`JXDAWPLo̿>{xyۭqX-};_5w)M &70;J󶎫:@ǝ/%St!-x8v%#(XK ʖdİ+ȋ&RmǑ4E0T(;Sb?rh̚ QWBnhh*U]1Le8C}:l/&f~Z$l1'C"eLF1U]ށ/fbH6˰m)=vCx!t,kx;1|7A ƀhiYJC,% )a*2fe0f<&S&z4KmO?AP?//K}f޿d OCܨ|ir阸Bsm?) ܿbRG 3g3۞2dϙe[ Q\o%h}^Mټn͚+BP5f+M!r_d!O{qWḙEezݟ\ou]ܰ Ey?qpaSi0GPh]g엏#@l-"V;y>%]LZYja!Z/ESta`K^A>}#.Rrҟ2Sc9) d !B"RE0cɠ*tch^$I$0 )% l tYC<Ы" ^XT`GoVX\8z|li-2;E{6Ą1r*).,t!am߿cS|؄gY|yb@\XƭXr_Meċ<ʫrs$#0CZCE2~]NQH, psV\m4 @d8;IB +7a5 9G+g3?ڂnñO-~ `rVZ ]s3̲ htuf8/)&Ԧ*0/GݠJ7S ;Gf"YZP[Rm^s6&{iV+,tEe' ??I>VܲmZ2cA0Q %ϦFJC.bY"7x 4GKVEJ# *8!K"@@O!//vĥT^DAՎ j;csEJQ6d?C*I6ux֢FTu,hkR*Yhd.n[hSkF0JM0|9K !QZ]B"- :Vl ҴUP\ q$1f Z*Фb#m,1ZqHlX%ьh.!TE`}>h+B1s,EJm0AUѼn.inE|VH>y hZ-]d: %ф$' C=#xSČPvW*Vt%JK}*3Fkbmn~^L ,iRB:9#71.!=C\cFs.*SEI[)!b[yZEK@GiRtt0mj^4 Z0CPEe AYSd8_6.;3W,Y.\s B0s`WQ&+FeC곡#BrEU]ᢴ P0BMrйiJҠP[4)^!+G9?w.q(V%(KMTXh5ĕ c(P`.ogra4" ]E,c;n-̚X RHAW6L12!W*`hJJtcT/TlYE\DJt4 P4ۮ˃rX.*ܺ $,t\v Hv t"ٮ{s/ vg"SF":5^`6  Ţ-ăC E`\DX.G2"oN](QtVZAw [n8(ϪeY%$Fg"m.,$<]Z0c!ټF hwB T$QFfe9!+B%KCK..A]L.Vbb`liQ&>aHfOKzw v=S.2X[D{Ls,CkFYZEE^ZÍ(8VJ-qRӑwCJHP1L\+!*&҆V˗.\r躽yHc-3anA.󼱙2sm\D(!PA>VTKePy_sษFjIĺ=`@h9o6T/4|ʟR## و׈fW~%@ %I~4g{" RJKR˗jV"0E#7_,w=&͖Z,b*("9s:<{\cF zx`G1A""yiKKв˗CBeK1pG?i&zpUvHN[DR2b˃*"zTmGE˗.\r*Q1=f tK HUIa; K:b\V\ Q55B1#+EBs|X&HZTz_E4Z*@BVtBT*V Y\ *! tUh1K֢DJNĠˬ.,~)JJUJ%JMiZ+/[H tZT*T%ťTRhhhI]۴IP!h [JlsQ% E%J+%\]7/B0V*Ŭ!kDRJ*T Q[ cD*V1PJډK3*&$Hiqt][@8t"\ R@BM%Vǻ1"J*V*$%D bYCCJ*$HJвc@UGtS} RJc@J*WMɮ2Zb$%Nz<ǪwJ*T}54,] ]Mu:C-KWI+Z䥐SJ!+D2]A}EPHUń .Tqe꺅@/x]Ez JP5 iZUК_EiR-tąBPKf_PhC2Mmem6|9,7]WZĩRJPz*$atH=Aҥiz.\h.GB7b\!C A!;τ7Z/y/9DVDà%Vĭj\4`t*[iTTH,3huM~ #/(hLB:BFlKtKѕ.1uÓR,: YWE:0s+&h&uAD.m.$[t3*@Y.0-N21wۋz `*Cj] n\h\LwUBTAHrч0X#2fh 4zm77ԭ*.hT5X2[1[h7n\]kz$:t]DDa71TfM zxZT @̸E44ah&izDԜE*+йvhëhu왢GB,.RBF:HŨ[@.^Mn  с @pBT屛t4t6hr]0\cJ0jIC@_J tXab0t:Z\?)faɠLjsAHŎoEыUA+ tTjh.:y_iwIah]LHJ!1t=$IZAq3(nt+:K-F=.T =.-cS 0 )MGVю= $J C0ҡ%Mh(h%-Ez12?h4F" s:ВJFĈs cbO\*L{N[#iҍ.8|ߥB_gWJTcG*QKd1k99Vq?!!=,k,.cN~{vz-87UUV9iQzgq>sz}yD{+{ݛv9KV̬4eXb?\^sxF\5O0 ^X%)Jv]Ϩ׵CHpwoXXUls#ѥ"?Kc/K=njOA6W 삛]{Mno"_C[Kaa/U=/ud۷E 7.SZm,p>ײx`o.)@{ЭMk{w~v֫[.M2mupZ89oޝӲKF[7Vs^~ilbVI6wǻ*Ֆy?}Ƕx?qp<5o!UBu~=Rcqc7{7CusZkFq0{Q~r3]L ;s[sv}z9 _n3 rH8#/Y?2*RcY{49~*ݕOѠS{-1?5sxNJהҬp2OUcH5^gc ЎSa% wY]-k-/k5Bz[h;jcw;Xݾ~ Z #16;-ldV5q oәU=?lw]ȦK+uuZ @!BuFk{HEY$+p=7bef#Ih5ԾoMs^C/cٿȷ"TVa7cIeǛ%y)Ha- $w% Aak9H h,V@io7w(;kw5oMF\rbwWDc?5?uFb9vi#]gid?+m^@FK]:8a}<WAu;W]ws_fcm&D )B4_IMcL[ykx?9\=okjs"O^չmR 8A?JnI"זNDTmmi|sPK| lLڑ4D5wLP_IS@]?1˞ƀdhތ2iebK.F2)1\V8Wt{LzMfja/ AƸzmEs}VWXOٴ[qUug?#Xun"۹."*\:H1ܨu5X-,meŭ#7'󊽇S[wTYv]w ZA펳w|"T0;Ρ7rP@Hgo OݯO/Bq"+;p}n`kmB$1][I $ݟqZ^D@-n,.s,uWD}tcE5lf+.kZͰ$:kunu mf͍{7me{oϟB;H1/ ΄ݻ«uv !鷆cG!1>_/lqLj5؛׊CZnL5 颷@ pղͮ >~uÍQii\qO!BGe܆?/{j|H?>+LƩ}vvs"XEᤐZ;1G5ilb:J(TUoWw3eO:'=Ov=+u&'"Q|3wz9_~Yy:6eL~ԃFs %!O/kv&M}6zsO;7?b<5ڱTs[wkDw&厒x7|.tv{9OdjIɃg˷|>Nv)[}=X- ?Z:y8BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT 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 &@Zt.Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@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///050l0011J1112*2c2233F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs2F[p(@Xr4Pm8Ww)Km!Adobed            "! 01@"PA2#$`3B!1AQ"a2qBRbrт# 0@`3CPScs$45T%!1AQaq" 20B@PRbr#S3C !P(5wKLJ} Pu@@ `E`!Pb` @@@@@@ L @A9UT D @@b`* Q _oK]d2 * P D++zuoQ$B@1@FOW0o0$@ @SEj) (@(b@cұoC0 Q(TOM5 .:ީ[!X  &3.?O]mG`"@HTPbhX `+SJ\4Rx>ۘADV0@ `A0+xqїF9>^?U,@T G=]!@@` * Q1D0 Ea tq;_*CK79,( b2]zo;COݼ䤣#r*  @Zԗ#:$z{9 @@T&@ SV PA1g,J}:`1DV4`s>^#0U/G|7$_vΫqSҗWYsc:`kmwG5}g0 ALB eШ`@ 1D0(`6ttu( `1D0DЮ.Iʟvt^J:4S1d8dBhvFR"@  @Yu>;K)@5@@ $0Q(D0( 2xoGFW`( `@Aѡ'ig+4_g_"}Q~l;JXn˭ֶ$qw>A o2n+?7+83@@&@ SB* @`*401DV4b~<˥u;^C9E`40i=us셌u?~'=}z6lRW1rA Q/M}aBzPfD*Tj@@1DP`0b*(XAB/L 'Cd Pw:@ %@ `$ !P A  J"1DV0i7ӻO"Ж/v@ `[|ަth|ٚp5W79:63wzn+kவ}XsLB 5@@j* A * P T J `(Ed7G4ދȿ7Gl3c-y,SZ Cw'M4?t#_{ ԅ@"j TLT@  J"0* QPPbb0J!BM\cϹ^LSOnOێdD]6Gc@k  o7'wkµWЀNB&AHT@ ( MD 1F@j Ҁ (E`@A"PhT+󯩟O<:O z_?۟浭m^wzތגW^kָnK#;.O-s?|W0Е@@`@Q@D( "@0Q1DREX8dx@#W+,(t5>rt*1Q(` 8+ֹ+м`m. X}G]u8^[C],Cn׎_lc~ @B '9k|<^(ln|O#ŚVX (1p&nξ6h|=WG;T|cw=]'lq5EoRy_<7mCRZuw4{=81Dl)lgELNʿz6v4ҏص+Pd!gZ$Ne(;6m.[9z]ۜtUq.>T58 ʈ{"Or|zt%e/g8CTA`v&Uq՝NWMlە/A V# $އQ5s}']|FW-iǚz>^'!GϱGq1y8g7勧>}Ӆr%kizi'7?-c;ޗ7^'~mWt\񦆄5LL:@`'֏3jN4miFW6譿`feح}YA~.ܥc+ C7(sz/oF6?5j d7C-nnoz8vfΊ_a_ifJ.ˌzm_[Ƽ2<^b],O)>wnNmV;>r4̟\viгo;9ԽB Ø^y,|Od9+ڡd@  @FHdnsڞeׂ69g직h`UKKReq fOgRǛvyn@Ҿ/j5knkb˙Oe%l@PJ>]fEar|֎[ZQJc֜5ssab>?%@B#j5\2ؚlZ[9ގ=Ⱥ\gNJ~uHt5eorhY%t2}Pj`)J(RPB &!a8i6j6ز/#k+[7B%L*@aQ^ԹaOJNϮwʵNA@A@A@A@.ʽЋ٭t%V4Α=HՒan('9V[-awJ zPP@CqTz,sVX)v\2ht<9rmַe{yQi7Bi, [W't|b(!"hi?(piiD,QQQW0E1oF !Qp@@4"My WfM4CN$5R0^Td܊xF\6֒Z!U5b714;:T1p,RX53U֞*4ksB_R}tT=#OJiDd4Q+ 0r:l2IVboT6XPHLh6+܈VtmTGjGF3Uo.ͅBe$kS!9)EWG?mq[n'u:e4)kK!wJz#W M׳4¹ԷxQ&Okn-/L<AS'b_rZU$Z} XR%RdMc=ZR4Ռs[V!Da"9 EA'> %_+GFF,PWVΐ{, 2O͞4`z(DAsNpnD%h77YrnJ]LJ6GQ5׷9l7{TCVY42-=TyRy1z}\uZNe`qf9K=.L rͮxE ڹsRCnvdž۷{W<:NuEWQӘ{CF\1DE=>%XdI NiQM]w{>mpb>nR̺;HROMt랺inG08$ K'=lƈC%-׻IkqKu0t-ÖXt6R7ɩmeRBꅹvEzeVjLg]]F^~.c7_I{:+z>IjNKtū$s=f~ϳUtSX|f 6] FjE~)YzRޯ>J_НTy6J 4W&oy1iÞr~WL;'Z}43;bʺ:۳KݵG=jޙbc|4JJMl!|H^j˔^]InСj]/c+O%gk^^H?>KRMW؛(Ǡ՝{(y1(ܻ"&:`v=s5 j݌[cnP}L&9\[v~r_?ˑsr閃r_[ҩ癕vl6εgu(G- ε$68ӗ;cV_z-hDpgfaX/Ig#IseC7n־x6qtyЫ;\W*O=rNM6l#5kpa 9;e{:4f(ź\P.0j`o&辕%%JVDϛ/Ql[vd;u25*VgЕץva+A9uWF對)v; o͜33-j]>lL$qf5bܰ4Z#L{X_sr{gw$>9KgH.u3s&2m8N:jZX[/RqsBߛѧod7VFz/I6dvi/|%H4HP\%RKG4ErlmZ3\VqycjƳ%0=w]y3z)sr;(%Ҩ^7LeK橨8J([Ÿk6j3V.GztNJ_+ưrǞyZVxJũNy*=}-QjɛxFfxߩ~"a>cYg9=EśN}6\ >RW/Z8ޡrLxe_&κC/ Ɏ|t9tJJ֍J䔷r"7bޱ~\oX}gݑ}a1ts1R$LaWӎhl:눠V*"DzeMIl[UVTERѥUӣ#]G1z4+ :,zOgzb]OF{_Y-1Yl?|ϏlKkïJ2O,n{ jăKΩ5eRM U.' fOC+nlMMwyNv]-3("ņyơ!Xկu;l뤋ՃD9@IC%_cHa޷ ~QQ sd| /'f R/+,,Ey"I{/>k-K";-HepWzeQ38k<%Y47z긜ѻbM|[X/o:?V&X^Y#s%[+9OK;~a]TaS?B==j sTpVCpl^4$=|2tW9(rթ.-ѿ):GuU67OB~}iav3V9D`KjX{sG*uEfgU777^u)RTʼnYFfaNwuO,]gП]GӷRҖ9VD qvpb4/6SY$T^~vH:2HNs 6Qzd]JFk~7뼒D{.[ oo;nXi=I!9oF̌I5#V%)1jo%"Nð7z=7od};o~`uMx7o+) 4*ʗOWy]%"NóԽ_V ѿ]oߦ~ߧoՋ+Yz)RTvZF&Ã{o7,]꺯c7>7zNܴxFy q2BCNK2Do:g7o7ow~ϭ[IF%b9dE;Hт8=Q"2Kk~I*Ʒb~M^N7M;VyNǭK"^sǼߦy*\ ț2ziwo'!Ywy]yFVyѼ7_k4#=y\Y2QJ\Wo7Lb=_XWyoy9oyooo7yzU%fb9W0V;:5o7̑%.KuUwo7Ѽoߦ7y߭fZSW7֖Jaye,ڒvz7yo7o777oo7~yvzZJ%5{؎aUYpo*}6͘b̳B9oyߦyN7o7چ~!iܶC!WVn>1vsyo/[!.VGw<79Sܚ17y rcPI*FEH,o ޛ7.W$eA ĥnفIyv_sm/+v{G5fˬ/~22.\lqa"$,d&GbIl/%pd#5,HZ0uҕ7b%eiԥT33n\Ƅ9$$jJ9ڳ3~FR27II\"hu߮K6 /p]{.ń0ĖvPܑN*rƁcHgfAE`4L 䮥 H<ޚY {r>nf)8HvIFH2GlB6=BDBaÑoD_sRqD BވM:JrvAɨ[X"^$Y:)ĮycD]iPC1Ury$b"mߡ?N Yٶa:sApѕ)"6FJ>fx؂dTIzeyZ |/\6ц߫uY|t[2G$fp-޸4YNN\c  n20L@7"ܳ1Ք. M'ePح.ʡI`D,'27PxWq=7ohRUhZ[HL LLND Rא0;jvɣYTb" Z݋^p~sY沤>[Dq/^Ƞ ѷ&t9^sB"a&)!Q)eXY (Q뿰5sxǸ0;pLu85{e 8YT`$:ĐI,EVVu8" 3|s*'MjlQ( rXKs"8k\ҜhF6` ¸F5QqQFmqc[a88+80 6"QTd̏a'o!PF86Ɏ ͑sZl͖6$HA>E#f;D9kҧB^ܒd 00F{d bI] V\Nh)laF6kXIUTgbX8+sG9k": 81Y4XxF1dQTɴǶ(ǜsG5F{C9$ *=yae]y&dgpuČhb1NL ,hs8/8͉QȐ*瓊HXNPNpaM .Λ lbv0!#m$axyixeQ!@SF p8l1R$_]%_8Dg-s8cqg<ڜ9Xe98cl'bU*.]@l*k\,pB?^ehk-ywÖL0"XfK#'2xԪ7]G*LqdP,l)HmȲ4Pset+  `%l1p` `=g8AϊXϛ'ls{)ͱacFdVTR¬XZ6$0JA3)e[FEP4yhG#,8Ѯa'8F!jAV'9xfX@p 9b_B 5nxqc(9٩ ^|a`<UR@s8FT5+6A"F+¤`EYbHw;ܤ`5Ɨ4kA{|g^e, 89xrt|i\@%0⽌&HDCpe"E9f" fЉ\׈#1ێ@UZcRLIF/P@I\Ieo=gSóclJ$(;;3.V|RyóڜEȤ%I" 0Tv\2JtvIs\ XJjDr8K嫭͜({IG{~8Zxhv1Tȶy1.X@lzyDN 9ȮRe< c=q{zyK g)ұ#Jesb3^| *rE;2HC+)f eZEluAc/2:082+ګh,TFìKzI axbKYKo U#ĕ¹lXQ}<``rƑs9# `hJvRZ[5Y.̃k k9 "BiHԪ#^YKVֲ%lld# bFp\F1-b\V Cg= u11 $9#mbQqYҙFHNJZcf9w끁cJ$XyINHyZwQxdşd`Hц"#6دHFSX0h]O9NXbO*'ulqN9!@ b "DQ[@@9\'>x h$eᖽ6 S$bI YKcKذZLx'O>|$0`B1x$S#`pJp.,0K/'xb sG>ގ<{SH|ﯰH`_G/[X{7EZ^y+sF])$ &'V -S44",C eĜgCJΣ# ˖]dv##pCJќh3x7KМHt$lw ,\i0hvnd,Le7fʷd!&Wm8`IwYl@9yLH.*G r&6y4nIs4OVCW\Y%H;2#Ę*F˜p A&8T(g'1dT[67F (rG1,1:tbi h% y#zgfx F C+U[ac  )LKba,cv!gx+YhLRKI79$@4gqɬuk4I# pD=ďHdrk5"drT"IFMj4x;95?ak?>ÍeI&࣓X ko-IT  ya};_8pOs~ *Py~%WX~8AGF77NT}aPAIOHPN@1$/we cx;F2 X'Ԑc(`AP*3~d+ !@ N{c xP#+k8wBm8gNp9=#kGQ9XUNG¤灜`p4~ q5uŏ5f'Qx;NS˼םg5Ш¤z3Iֽ|7xOrhfӐzxx3yc&??G G!83ϡ9r_C7s8FC8]]ïCNxO7ֳGo7hap99g<ߧ=`RG:>5#?9סo~splz7 k9,眇 oӈ =wAkXbyW>`GY>a]f $o~u:CS]g7=o:5pfw'Þ0ٽǩl'~o5uևk5My޳^5Fkdxk59אh淃Of54sYkΰ}zkg` o5`~@' _FA4s|gYk # g/ yby=>8vq;Dh':y厁'7:â3Yd1TkF-g;8峷` m%(U P͟p!! F%quf'<쓁C3&<|  ` T Osj]0 5lSR0}MW,psqV*G{߃iX#{a[ \VP#y@sG"p0#e˃MA'F%؆}sCm8d0scqYD`fcܟoa 9ƪx4ÚM4I8:¬,}?hgyo6F ͶsJsx4s8N{daP0ó] Ʊ' y8 :*K.N2ppH(0C?z8,sXW8 4659e0q8c;psLJc6~ΰ\.8l\u8PՑȨbHߧ浀zͰ19o46Fsm!f\.N74sRgEAmNv\."0B_}cK2d<ĞKaS޳xN@KRBl1IxxxF0;,kȸU6Foxˋ9ƛB3.=p+C8(s'>^ ^`; &P.`>܊8@y9)T9 3{{LJM4qY,r9xJhpU fH2*6"ౌ:™X3!Y{ɞD:$ X]/qDZ,@&G#r {&ρԎ#(,#PFWc9\Xb<\9&ppA U>,P-H$1:hs]0lj{gpr6D efĂĩ83dAG| 9(d xX^EVjN$%%x_818k6$Ƿ\HkXY(X])" ag6SWd3S2H"dCJر İWJ ъg y|YXl>~Z4Hq&3 $HtȈgIAK<ԕ,h2bVf<{uGޓ= rǷ]GDA^q$;5YQKg`lM4/Zh:kUSUb"<R0ǖ0r|Zœ±=y:V 8EfTWy2`UHw5l9%-Xү*MWHǑKrA\%#m12rx g?\aP3DVd cQ`6e1 y`:"L@$aO<<x$$L`y<Ӳigy.skemNsp8Si|CīmJ'W 1a],`cه睁X<\-F]*Ca! lHH%"'62xPvްh:[g"K-c>8?: 800=dlq$"Q-I JmB 0rjd; ኚ82UF n*k2s xcTfua3*cD#Hs xXeohW4A#W#L!N!2<0,h,c[G (;>p (7 y&Ǯ:,#tH8 bbIVne}l24M GdTfl,lt@=|X_5RZS}zPwmo7Yp+3I7O_C4nV`fZҥ[ ^ (wd#7u=_&wBīGJ~+kKROoCJ4|X)]$I#y;Z}5lۛ;W?Yp/iH?ߠaf9oK_Tf_4Nn?gj)]6_k>jܒ@#F&t+Yo?EKH>QC-r'NL%]i:^߱{޾+BonCe\wy%,m"' 7ey  #gU2|Q-@Z'%qvnůpamvVjQu(B^H? Dpiy$Vzwpicl̝%J0A'U>Z Y:C}g_V̿WS)IO#ZY`ӧTC?^ϡuRtA\!c'a}tz'?,Ca߮V&d.X}{^3Ԉ#–hy$N`˷D%*Ѭ_;wznNJ"Rݫ3[9%X];D$3x4$E_QCؖxYJc^]1N̟yv3uS;o[gBRG̾QQ:)I+sɊd$\\jI,s8Q!uhh>wo,mwdy*1DP~tWRmNYI^ZSln?ӻhI7zoԹٍo): rAQ`U-}ʮ{"8'hKM"DeI^6k}I.0eX<KB{6w=/Wڭ;>.ձ 7Ybr?v6O:շuWXO$4SM@_Aҵf[{[y+&ߕӽdr:zw{cqփi Ilb%k{o^Fg>~o7IK&H7Yj"_ G-~Ow$K?kZz|\Qk~o֭I1o|NN2ųǰX!^&svuu{^~V֣䧰$.Jzo7kRԗT7aVDh$+`Wlbz'V;UZvBQMڊiaoEum#-

AVjԶoO7o7`-Y?0z|7MbN#+E.{U^}W[Aì,=-l6M瞤;dbdţ4{4[f00'YoaFF[oՔ0z?Zʾ:Q%5ಝsdҞD^UylO߅9qgiMfS-dŚZnѿ5{^igoCJM*[3A5v'3Ӊ"ݚJj9)9ar*Tݎ{~좳ݾ-3z'OwyJ`o ^廋 u)ZM~[ۏzZ+|4N,Jc s9:)h RC~ %,wX[acɷ-O㕦egomꓷKUlRGJnFjWe擧k83*&̝2R"0uq?Sf8LnHWFJ՗*)o,M/KgJ]XGW彏ME;{4$~lNfOz* RXp.!bJc[tMNí;ҷWsA~Ɓ{҂XЊ'zB,#?j%yȐ8G0dBFhӇ)gEO|cE~ܳ-$r=~rUP-Rv ;w}c~KǶKM?j)Щ_U"vys/X3sBՄ<8Hu lЧ3KES(8b*utx4+/kY!ߪn;:j`QS*]ze%K&Yye.{bXe>K ,am@$Oqz2$o0Mn>{#X fA$A\}/Wv6mXaҌ;ߛ vz) ˝]=ۭ=|ت՗ ^o][%w[?%ޞh~G2PouI8(׮(3gXĶ'3V[~kJUD*p'Ee dN]_w4vXBou\qK+tؽ5~W1Oܫ~)pR~ɳjۊIW$u䮬y:^.Uz\J"S?ugu4lv KPeY=}o7 K?lT~]^*~5w"ï@[-{bčar5+Hj¥Jp: :BZEV(.uOKZW7CbľOi"__a?WIcΥާ觊َZӇ՛M#PK7Mq":v)Fc^+'E4[6r{&;'gRoXU%&e8`\lN(;~;>1ѿTWΦ_)ߺݴ洲wYvbY:Xd;gw}f^/]] S|zEZgc1n߽Zgf6%N[{1WbDC"#%?Pb7%=!gw<1+b'2ߎ5~Aޖ\$^Yҿ_a)%zɡ*j E(KVUOF<]$QU;ߑڊʠ~5uγ1afmBSiIg9,ųnp:2cISf?uK=a,9fhYG h/ܜ@@cttd`w'^jr6[}ձ/:( S?m95;Uck"4߆rՙj3{7cYUXj1 4eR6b̢)nOb[gvu+LIv:ϻyXH_vK(?WodLǪGU/ú }y>+Z͛=E)10u=ُpUAY')b/Zoմ_ VS"W~(.뽦*|Vxz{QپO%nV C]kZSv >4q7ο/|;وr ( .dYT-ĺž?zj"zeROI]RXx`@pAY(nKk?OR/} rٌNVH5Ċ~@NJrԈpGVUf꺩fO2H9?*u}ا"H5gc-FmYMYr']\[yazΏq^,2rB?N$(f:j_뿕Et9~=oKH|NMXuozW$,TGK`!<e4k8yhѓ.g->2BI|:XM~'[_~L/Ƭ>=nUo!{wa młzIR[k;>RҪ="(d8$BQQ]aLJ#lSDNY0^9;0bRntE8Zi:NQmvpЎ_sGE~I?woo q:~AgsٹJU^_n}azѢyt%y&dXibT.?[;vIR]lU%SPVw/ǻt}1|m[^hJaQiJg.i]޵9L֨YKmBebizJD=bvVkZ~7ޗ`9|:A8T"VU(uwaa͞Dӣm% 0"ڹX6ahY4:!v 5=XY$vԡw=/N~DTH!T!DQĉa(>vW,v=~JWYb)_ׂ˽_*J[N݉c"H,ם̽Ogn»{RH'ޖt/Ż^.D:keNQ%Ɵ%%A;k-f{)#v \:ꥯ,Wed5{]uEڳ,Դd "eԷ)%Z.KfD׳ r~ݻ{fL,9=Q-5,Nno^랦j ь}߲%4g5j3VZL#IY"r,LIQq! P#ĕFFc)UG W[K]ggפRW++.ٻܳ|JY;ZYS.doT^WWj l˥e ʽܹ{~OV?w,cS:BY_:h.l kVY *ИΣ "XJjYp)[ƺVnH-P,1W+ ~^TZvkp}ɭ/Y,O0KJ,AShm])*~YLBi44}'>x.piGUַcfQK a=)oK^JVY"8+/R3R{nX'F5%{W OoU/;#ЈA+.ö2i$)O͕*%%IKP&PW-#JL%U uݱg,h3[OI ^өNu=,]lڒHG^1ܐzqNgyXPI UԽxd(%a7[fwΦ$flO,uh+zv2ȭרYn:V+vR'3ISqW: F_[z~;8NTO! gN%Q^Mi:o[ZW>8j$JO:eYS S;[AcOhJݩ=OzGܥzy,Vό+hp/#>C Z(&Q4%ҷYf0` eW0YaJXIji Sf04ΑQ&&L_)Z;ّ_ǫxJ)JrξleIILFM&Rt~"NE$:|{t>IAw;nZH:aQ\Cit)i<ZJ!Oڳ9.-߷wM\P\QY"ITy7b{D Cv:a3M+G[n9SnRޥZ rNi28%r"ybv=V}]blJǫ tuĂBIb+U:b+VfsVvbH1:Im9IWd9Q KVcv@`i֪ƃƀ+m t4dBR VV4 gvN@ u5XANjUS}Ԓ; j"ܷS0|ַ[giun\vM3u;[=غ+6bk2ۥzn^i#Fj;Ha'Sjy4PG7[T6VD @ Ӡ~4uj_fc{{zӭyLmwvJ%wy6cf,zgE3v3$/ہѴ(]["_jjlSǷZE`yII웪L0 MFoKnVdIdifcO- {@LԠsul$t1\ |])) $:i2]=Pi{+^U=F}GZK${tt$C̡1ĉli@ 1X*P+`Hd+4B2(fRE/^d*xx/\E,bjGz~e*Ę`7Rd#"$"xV12`B\T1 @TFqvm9(BJqgHJqąB;0`IT g,@( kEÕ (8Qom>ۨqsd(BÒ EcVb!l%C B(PhlUH%$$DqBWkEBr0P8L(fbh " N"C;"dXȊ㬵IRGOTP`Z=ǡF4b\HXx"c<T: #7&(@B- @P3q 2 gRcB „TfRjl&幼%Q8 ߰R+Dp1bVDSosQ9eY!JŒpe.#,ЇAǮ1g}PH# 'e[4"-?Чb UH@EE J3c.a`ItY8 dBTHKq2F\BcP6"CcグH1@dWEpKDeR交m 0F  MT9clb\Rt0Bˎ b BD6l9*:T%W|a 1f "#F`TH(I\fE*?+.XȑGVi20 4#UWTJQG ՘%Znn޻%狜UaXPnY%gOƔ~Rg5k'^,sl$ؤ Dd$y ]Do!-,%DA>o7BiY 6oqýK(>h3+NF=T^R_p19W$Uv VDy!Pe4Ă0ގ3q U?VR@su' .G {e;w2&&b^BNDgdh䐁4$d njJP3 f.ډT:۔<q mES6HV:,OCVx%cTK$d'pSfzua|Vsl#M29&I,Bb25,tv'wﰳKd5ةf8ND ˖0!HnX%Y)|XIq+c/dՃ )X zEDzX,ܮDAKje %u)l;dHZdqbvW(k *Logܬ9bq7(bma0`IUP"g!+dؕ_T̲*2bZLK2Mȍ`*CH%UŝB\V`|.F+]\ *5؞e9,%+i3ܰ ȃtz"+J`b{ZŢRֈbK=I0ei0c=w/-S{s6k;8$BLՆ`d\+yK$ W `3Y.1}ђ 2'i>i @=yHEKSjo!\@IQ0d5-U+"{˒ L!b*m8}Ls+[^XUi&s׃UuǪ*@<"VehcXj"6'2OMA*2)6"dX+Fђ  "$8#}PWSNRH$H#](W"@'p81S˟<0J,XDnP Ubqc`®GdBaQsK% J1K&!1G n\Um+Ɏ~Hť+1p0$l6+! 8U _9N f?np=;,#F1-윖=sp]!0xNC5v{x$%e)^t%S3s瓽fw^DQ11&UAg^. h;^覯(*`tQvgX!4g?ʨ٢q^aYrZZ,y"ĠT(Cn))yJ2Jxv8L{P"4")NLF8#Օ,Q0&Gml;+W;1N iqF(}2eR=8?)>ObpG3<a,E}ptZ$j<%5I$\y0IpLnnϵ[2h^CddRlY3u>u* Jݲ~̼$kSceTSϕ"ыLry$r”Qa+?\wd-5^;Z6VIzRF@0/X 9hv\#l#RjuI-P9䇔N/"p:~ZQu=ƫlUO.- ld%y rOu+ 1v[ oofe{Q$ Ið<slqlq$'] Yo`8Ү{ SE8̖k.~ʨ"س~/!l$飉>-g9p{FƋ$zs*@Y@0`A'kМFaf*$-٩N]@GuR$%@v1S$#9bIvŅQ"}۷*%Y@AFY4/_KeWI'fcs6ፆ# NBBL$G :>i GنiORR~009Ő+Bb=*D8qC>oX *{$&&#E$΃dI cldiS|li 8F!)lIT 1!f|+cC8\}94lI$( "o'+גu*5j8I >N4lX  \ 0klHs_nz( C'ZAzLS-NZy:5Da$eWuau/ V8eh;26,^<a ~H )e \ VbsDzAF1) 5x]Dט0;fᕍrCD ٩h7 (4Y  ,=Z`~C'Nl8D%p'Ȓ=,p A!Āٕ,.l\,c-Ibx';YY'5쭉̃:B1A#-W)a%~XዮHOFlA,=u&$L$ +?b_u=K׳[J;+,"̑/ uȟfkRÎA!JEd%B1g vU/{>I8a!Ńm˖HK*"9)^L4n'u܋p0kq)/lݐR 2Q2O",d*OcJ2翬6 <߇,} Ӊx&PχaL[:ƺsߓ@K$'"XP `EtyVק`V;c#bslH$g"#`XqlWH B\.)4~ŀۤ]fV.5+rOOuwŊKv5;nNj2yiR:!ZoQK6Fl&nP+`QHJxR%Rd(p Xźh+\KmR$e*jG/Sf%|*U :;>H0h3 \`<-]Hea$8@D%A>GUc{abAΙAThvi285jIb*к64 #rlR@Z1SIA$qr_r?OJ]QOjy JP'98ń*Kn82ږ5vD "v&Ua { nB6zɽ:u%AUA,RvK0d5 >j`Rd֭Pj50K 03AC4R<,_+XxHbF/XjˉY?_͊iwԹAcEY#!+һ)!#Gŭ*X@{| IR 4*ɽ VB>`_YW0E0Bґ02ȱ0rsgAbel֣UYEX*h;YrK3,NNFx0͟@pqT粄"Ȥ*K?agZ ϲߌp9!J0cO$sf jgG9͝lR#:!iuVE+wmAkUbK}%kr,}A8\0aFH)aU@CV`:!::7؆Ix00#3r9Ijpt%Kd2K1%waSG4ֳdg6 ĝI raBEuŝsycX83E#m{1=30ǘyLx * P }Mpʡ/ϔ|%B+AZ9Nq$i %'3Bli]G(i ^ZARȻMVsQVY2m֕)y|8ۛ޶C1($q9-S WBfC+$$ {q=n'8-xצbF,nP9VN8"Űo<£4b#sY"ؑqE5ςUYL@f. )$ c?la8ʼnʴ7߁OXu'Sx:T\4\ 43c>b t[2DB[[OIӴe^m$sIl3VIZޚ )RDfGh~J{Pj8wD,V0˥:4 CY4Co Y2I`ajUBs+#c}=yFov2CD1 snmPa .Tk<'Vu8N *1bCb3qFk 5=U UbCN#rY`'`[2Y4$`09D~TuT9,U'.ۊO41٧,YI^$b9t}7`҃186J:UͶHHY<1?IQ@kgfi4zSߊvqO\X{FfclE'Vx9\o 9b xAĸ4@#'lk5=Dj,t*JUMG\bY{7Ǯ4 )W4sͰâY#ĵFs95'43X G9xzדT 0DH#"X$\z-128 '5@HeLQjTkߙ7o5p."&wR sYa4 RFy@%]Hqww i`F~0qY]OԒy(O$mE#_-YJQ &h-$q-91YqDlx4p IXInz$x FnQ538]ɦa)jZ2dic+*U=AH|`T͔:AX"`%Fl9 !2 R.&1ss(,z+*:;5OQKK24(Q2zٱc(b%#!Ey?[ZZ5R@ñ .OEO,BVYm%2W&1`%pJq,WkOX$s(Y cyMQӱ,g40XI!nکhBĂ'DdHW$g,Gv嬐@i@Ūwrހ* gk7WY0Q'{tٖFB00FXeE^6?q815VӱTԧ+#tRlhͲK`jZ7_|&jI!(5b508Vv.1vܸrLFS2H󼒅ܳZ7HQ{>7fJv_^UbȤc6, 'Q2zRؕgb$3Vf$ DYzb:B bb;ȸ"(VISTąՊd*D3+Rf+ZFEmTyy;ξ,s\EN~nXUBH aDh{U!)I!1JyBc,S=U_"ra,)p;+b@`1$FFRRy=HbD$ J^B2pDp qw*e#6c+]UQ)V[NǞYbx̲Ҳ'DB1uήT"9M(~Q$EI@ZcQF)SyDi$WftXS╓2!I,ҽG =% FaF%vTb:P'X[$/@8d^2I$oKf9nu܅yctg]'e5.?,bLW9瑳C`G\)Pc@$X扤h\,VE؂Y*blѺT\)8 mcAMy`sHF$N?qB ) nV0ֳ,Dp|h6 ?ţ\=.Cɍ ::E7٨J Ui,9¤эD B#"slԲ9|P?HX6!¦W?'M;I]a"8"gZ A:t\`[YUad,"kܒ*V OA>-\H0B OcʚmgI=( ^ $H!\|zFY-ڤ%@!B4XhM`I{F>5j60ak\dRVJPBȫA(νru7ȁL'`2Q Z bXH?W$|N Ţ|^1r.@MV&*հ6j@x\-K)jF+QTqPH"J b& \vZx]׆6vvwVcT yu%' &BrRAA㤖g%Ew"K^x4P2e AYG?Ȕ+ru=4aʚN$HX"'nť3^Op1Ove*ZQy&pzb0Hr e-{7Ewԗԡ%rX c%`OXH+(4Q&X2uE,VX"!!#c1Ve5 ݬ3JF{pIrwURrԷ=K`"eUƛX9Ɵݳ/$]O3k<{ְ^Q) 8e%~Ԝ_U|V*T'g^zיsBaievvf 0.Bgl(u7ɇY-i%hxR'R-XW)"lCtk7#>ټJU\ݕ e#ƵX))ziwaOnkOVȟGq 55nVwr1Y¸'c ~] d1$3Y0p#79Rj8IJ!lK{bN7y!Y0udbVS6vt@`3aT{Ʃ$ᬊ 'yb M4LDđ4dk`4QhnTK-!e<{VgD@*JfJ'oGNUaB3m [%8'äAFin4Yژ᛻3I'nKV$ʾy둀rZ9Dcb5amtz9`X+իX"DUj=װj}x^񭨴;D =j:ҕrPjzEq2a mŃC(DB`@qcƥrIl)WXFD}G~(F ny]P$KX Q9$ZeVH۱E׾QcA+ǏJa;"IZRm1U*4 >(:_9M*. GUيYĶXQnDYo $'DgD*},'g@\SCS @"dWH@U҆nILӯon9v.[A&$EAm4 T8˲FS4M`V! RH;6k*Y' m{V [8 %vZ9o*uB)]ԏ+E`끵B< h0 &6 rIvh;*A 8‘C %j'$Oq(I<4WF8Pg Vgn=Ǐ<* F PI+J'8N"cͲr'y׏:l`̂F1]C<\{@ oAUqUh1X׌4 M2VL<7hs좥I^3t'&$2bxM454AL+ˑw2V b[P,0I$R)XG(&([ 0bA# hHF 9` 2DLfɫ4$޼+#pيUf6%IVe!Ɲ{ RBmp0͌嬊%E$*$`92fV}auvG 9$就bql m6yy01\!r11"So8^=Or;4\Ѐ#s&~B -&>{1. G,l]mhC1^)FYGeШHÒD(. YAE9V#ʕ./d4fS9a`9#9y d4GΈc 6!*V\RdTгadgu>R`)g\.kx1\$,' ]UvR+ ~ r,S6,wa|p#C ֶuV@2vvMzdx";2BiTƮ%"H'rQ ֬C=3ru$NwK ' (Aב$$gY'#vbKؑʬkXVF# k">[Li;0Hp 5A0f{F/btԲa!2syVp% k7Fs|ʧ5&(#c E$FC'C hߺ*D刊$ ,r"9܉NH]PYcI*1U(l0H@8AIJqfN]6׳Vv!( &v+> wd-{$DfÑ3s+#FF*F#J?|DIrFxeuid(c$#xFVWo+lĖ|daWvJeې)f8O:Ps`eG<T2A@ ToA$.]&dYԊXRTlG l8x7ak2̜\B9QsI(üfJՖ`7q"j |BCQ4e Sy%(ӫ3[ѸiWT?ggi=3cG09e)aH`62zY:#jP9䯂%mC3Ž3YĜּŨB5?º !0$a>I'q.IH+4P Gf ްwkWμY'f/WT9HrBlJWMZZ(,]BO<˳$}T#jVL%f\F*RQ: hSNvnR`F!e!Êrn178(A(8gPN$z8WiPmOvMbKA[đPEzw\'cJ<K^XX) #X#@BrӇ,ڞk5k=ipF9&|Ԯ#Xv)b2ZEq >C'}hRSSBZZnxJȱU$2$ԧM-^:*U' yY5c QDJ _ bRrYD ֓q6>1ٖ9"R*ՑMsr2s(#DXnb ˢZ0q qA&)eqH$Xq}g)1k6TxF$X7$4rlHC;X1YH\[hݝ ""#KȂN :83Ɋ16AQ}Pҙc_9(FXF(LһOr%Cr"B-7:9؇{A0ɋac:"$YR'"%XA.DX{g$D(C#Y h47 n. s`NFs4W xe*mb8 G-S&GWN Jm#p*h€#)ո#Q@1qʭd{h(A F,A+2Rk]Y$xP\,2O8MgF@rJpH(i U N} AVO5ݹ4knDG"@͑vH:1ܱk;iS(G8-y| f^Yx *kH>s\1 ;!V"Z[R3K~BQSJCPeצ|?z;u4%zi~-QC;cԖ2SdFzS:r,}aG߼hT&n|2Ԑbr:Q`_< Cf'XZ.˘'L_ ѐp} WT<{NWrv:J)uTq#C~C9IY2C?_y?{_ᵅO_'Tv !8=r[t ?ڦq]2׉a|~!'dF1IQӃ ">#|EGW-OЬ-zɨL(GGWJY+ąJdeULY}Lte!9%=3(@7wTGc:O]r9dZP",ѐp}zs?r\z+E+Eqrd0XP9[(D@ReB&0Ȝdk"?h#OY@$HFaBzg4MSMgvYʌrK5Tŕ=0:DOBhbvZeM(HGJ]SJz-V'ާZzf$ut%XGn%'TxF 7)ꖎGMC1W.ЀrMѦ0TuGtaRwad^2ѸONa0bx= [ 1Y=8[2"?PҀh]9pkHkkZ7@<'ev;F_XVeE,Es;4Xy[ږa-;XBƯ>{?V|Z#J:lӺM!\p;:7ʄ|bZ͕EIi|M_U>,1jb++j1Րv?3N{l,acEdNX b(3^QɜpY >XWWՐ#Ϧrjm$c0EӁM)8_XM2;E;=d>fsT9' |FOYԈ߆I Zp?CSLp!<iFc?vCδ'],GWPX/!':q{fV& KO"QuբĽ@ AsEJ&HPY @^J=:%6edl;GSRFFE=8Q",L6=YȺ]`aea|hʝԐYRO|.obmM9C_㘖$ƉaXDL ,c!xY?p}o8(Z1eoG).Qԕ1!s'j08iHn6qVvD?KVf=NvGVPՅ9$"7R c]s85M2hj^R1Þ)cpߌ9y.ӎS.~oDa H}-U]ĩjDf Q0w&M]2"N5!-9J;c޳KL2*zݚ4qKDL Q7uH[ԩ A.誄鞋>\n+̰g)1>y'g)`6FUEE(?/\ø'o4$&7ڲܘ*!6ȃB(B芍@o-xFg֩FQ̺dT83rJTV'ܵ70Lb#Biƒ#<Viuc9TP4}㲈I,,A ZI׿er޳`,Y[DecZ  -Yi3$D3xԣ+GPeIO`tf`ܧi L:ME Ԗ33KM rVX$ b}jq5ʉ7]%&>ayFNUH4FU24qpUH$S4mF$@P"@kX!(R p j|-{T_ECS&܏-?ܣ0ћ w*Zr4N5m?܌ЕPNhMbhŢ`=7Vӏt k` h(E:tdMba*``FRf?܃ ‰̙f2pFFY@,)QmKhz5n_~D|vLePh WTAYv(Jm>m \O b!UbO r%qhMSi9M@H789LF-TXVYՔeьFge˖XcL"NfpT)sFh'LC&)z,o )q,tx?LmX&*"M xK7w+>DK;q霻lB (Vm2ȹl65&8 37X')*P^SH7-D-PncpW29f;ӧZ*U,Lpb=JW8vZ@);njn $FoܳiLiaWD7 {Y {ǹRh|JhTA+@^gd*mlVlx쭦FbS5~+wPT,qFR6 ,VlfmUz w&cvUmQދ\*t8V}.=z`*uk&0ZTazs_jhFAp 4C &#)Dz!Ë-W"HT.OP@L(=i4!UzPDÑNz c-7$aNwTqw>#ϩQB]ƢeJQe#f@$bqtZ"~?9|SxKk5VNCrLT" ӐN*L*URܗHCU/^ |SG$w*SyV>M,7eBȷ7Ppث$+(,?U6" (@с@Z0(S'ʧ  3,V l>*pDCT,ܜ?1S^B/u[ zVy:UJ,|vXO%Xэ1*^Sܬ#RŏXq D[P >N@&0#&:f"1yF#Ew. >b$'zS(mb.D7։ާx)ҧ; TZ b,+4!ܜP _TwLc~?P Rb0 = bm`bUq *vYDU/L>c̺7rs5]R-{dDEXy,8( ~'-yiՅ9)|W\p]0#yN;dGS8/ H SzӒ;ј"qAAPKT,Ѱ!hBaÏLUWx,_YQ/wƒjC!!*ΩO"TO#TsV4$LbAޫ_u"^d>*'f(e:fR;ǵUU1'y,)BB}'U!W֨WRՐ%RZ*I?VVB9TTcĕ)o Ȗoz{5T+u[ "ezgFW_8) T߂k84{XEI3UyB\UA ^I?U."|LSBrB!Դ39rlYG3ؠuQ[וX&G(&7)2m.ƨ Q9M,u ,"Z6ؘ՛-N+mb TU^fT/`Ȁ;}3UOfS&2AVXi?c@-m* D !bhYMB2ДKJc˨TvD1?vX]Zd+[rѲPvUNQ?MKm)D`6[CvbH*IXUFf Z&Y$ cA`Ei*[U9+4<3!I\Mz^*b V7+US᱊$@u_!bpZ bGN|;Qigd|6ELYק/uD[*S*6P ԏre6*RRN̺鄊'֙0*ZUJͥ)+j.?yRG/kUJ*ڥb"LztK RJr`&TVP/3I|}j:T2E7ڬʷpUR}ldU-Yt=.dNieU6B)Q|y-lu\.TU*Yf'G%-`Y=* EɊ*bIYz.5g#SBBQ)9ѓpeP MzX(hU9aN iN &qVU<b$Slcrʦ,^+<|>@&z G#"Yri)uKNQ$RR, |S ͨJ)dlҳI'̆1ެD쪼)cgRT+Tmec]F}*rvYVTeUF5eZ8!YH,biv31If&j)1^Ŋ`5h\oLoOީܩjZmaاc(2HV& 5rZwU69ezY Az&Цt::ZJ̘ۗhG ӋSDWjbI#qLSɈO+UBӂhrܪ6 dBqXBc'm׎;jTbUoO\x8(G(܌Ly>fZ}f'-U5qgQ3xWqL̪;Tcm1\yG52PdZm߱g+̜&8!_ RUpF3-5Bq4|zY(Feef! ,pLDVG#' fY4 riFƓ6ibHĪdHUGS_<62.z 8]T켪pL(7lr*SaiF0鏌 B[ibpR)=PP$)A$ÃL>)iDFLH0)펙Ll!+Bayc,ުo(N%Pԍqb2V;(F}QKxUV*:{faeXDX=+b܀b6fzf L,cnlq8ҽ酟Ncbqò6}@KSB8BxB9L,1'`0F6lclagձRǶی,/jct `L,Ǵclk`V7rcOekcf=x[f+btDZeðc >ݱ{8T{S >ZُݱކJiB꾐?n_cUaXTmdm{n=U} mXvуǷPe~OBq))5?ћclcgC]ڬV+.Y۱XVz*GMTCUUuT;5TG z=ކKҭu{lv>+}qU\S_bf,S;6;+ ͜6?aآL<D Zb '-B2dN32dS$(T܎=؝k*޸Ѯقt.ȽK՜o %oC}rW\;X@WSMZ\xH Q˾t@ZkL sPRjpKt]Ajz Q^ZZ^`p6w'݊qP^S=+Sj_M_ZZ]37ڷoT+>ƢjɟU,N)[}&5T1Nx cwPZ˓  ýf/ܺ'Ks5sGT\y VA*U4N{Sf‰QUW-iPhLVzFD,*J&g:K N nRX@+ʞUT#CTpV4+QP75iU*pu[OjɈn@ӻrB̓7",y"L'0@]|hODדx# ʞ(9WtɅېzsVzЉn6wQwᅅ41qb9ķ9^|~Nhp^hU -n5V*LwWXG&V&pyL 4G-O_|O}ʒ^C*\ DfGC}ޤ4bh9='yTqƩC9NhU3Kd-#s OyU98zkvUT& nTʂVXĊLjUysV)?= *HTqŽIj,w&y* yuzc3 C<@{w]-RVJ7?t_T~\r,ҷT-Z\?`ouM  3kV&,n VqU5"ygzbܫ*OjMORǂ & DRқT' TI# ZUpBpbvU,UG5oqZ &Eh*ܺCNrNJp\QQ'II1Nh+U{ŗH ,LUXT_hm=z)Qy]TZ6X6PmwTE;+UT`UF#}hVsuˇ%J$#9,1DTeV0eUQ9bC*lJYe9W#R.F(8fcebb6P"U^Q.4=ʪ0[lZ rVwrNGzV U*brYP4^WA7󛬱 x~͊ʃcxQ` *~j2:rgrf (ʹbX* .'AVܨS )Fl iWBpS I&UuO.+޿?zVU*򢡢=q,aO+MYlzsCsY!K`OzJ[+&M$(֟bf Xx';mN2J2#"pHYWFV_&*>D.AgxTBBQ}|zcf UZ_3BLMNzB$|@{m7'w(Hu ƛ0LT*r#CLZjx(hY'"DFQ ϨwZqr}eN+TX1 8(36*M]d߄زj,*FUPh~U>y ".Wla{{R0Q3 (דt,=2sɁܨeUW̍w9)f!1NwHOH\mlGgp!gґ;ܞ',{W? ҹW=YsGIZLpI6\_0ؚPMhb)O'R ]E),e!uazvPQR=G;lm#h'hdΓOG6Qf|?ɗ_7.E Z?lKkSII'R7mێH/ːg:-Q:~ov{|l P.Lnk#X7LLk}xz!p|ACb̤,  _988'{ύ0m ɶ] ~6&-x ƽ|YZ,P`6O@_2!#NIY*Eu۾0v+@7#*Ļ+ ~"@T5wKpV#3h$Jq -ϛ=N =L#HƀݑX7drg@T| qhM LXΚ!a)ӹpOSH`t#` F$1Y\8 4 1@EнTHb:C 4 4 H :ƗF#PGGPw/%8ŁLkf>Z ʛ4I$ï9fxdcPkr/ILaXYO10>0I#,#XkDfB#R8C2  Ok|XQ\vLqnek/}2UY7HMQ2QPAs]Tbuք_"Z|v^`]e#,I ڼ4 d#l(9hx$0ˈ`fՏ\͌mďsCAGg[E様̿ٻePUNV,m;k6Y=_qb/E|kJ4iMEdXA<5-4$ZjK3A<AE6#)lqc;4w1'Smou]lc&Rur^|jg6YMlRu'RyIWAF~ݠ|GҕC ]XIIČXQ m$EM f# "f"hJk*<mzb'Jgе6&3=Bk+Mi2Oa|إt9pN`@RbH.K-\+ن"9l" B+~"[?U{5P`k&$ QLk nCb7))$IH@1d@r$沁CӣdeĤ3 w`΄A>aQȪBL\x#i..%BGRȊ p*t>Kv㤝馁`(#(&M R #KS_(81qy}lU8"L`\fy4g%e ^1<(.lkP\wse؁.4u²<+>^9 I "ޚ#O;G?LLy )!IM;> TsˑAx%AUe!IE8)| \a8{ %ml(w#/B) `jw7jT0+O45cS,{Y1P1>8{~;ŕȺowT&2KsO  }&ɯ#KA{i{dWt}ޟ4q=Lő@d:@32$}G`}ka >ӑJ|=m'pCA: bfj\xI* :D,u< ma"9|Un I.L5,[ _q#ާ2y̓i]guF3Mv۱ ,DDە}?`?1шąa5s\r}Z/nVd&OmV>"K-:To !~^Ɨ#:ˇPrSaGq%rxgLf|Tȣc$Qhlp9:r>uKcG{&0۽FMvPȃALRVgh*ch M^m_ TOM9 ;A^s^` wY!͚.&Xܞăb(:]MA(wqq}'hiVHEmz9hR9^#w=E+&."(cӏ'p3u ٲ^Uv߃pHf 'wڦ)#)T=zCp:Ɨ&&<,#A\i*BI@ocu'kabV]>V k̊ 6㴘Ts4G \R`V_Ѹ$q^$^ײӏ Yɞvfo},AԂGbIe\F9RW1b$MAdF8JdPJcEt' b@H#Ž`c v?a`7)Fy:sXݝڴc.8nh`ە"{W𳭲x}4ocHuYgh̲xo!R EcG sKۤ c(4w wXV5eOMdȊ>f'5ǐJ\Rc`$ z/?~Vanc?A:#GkcUQXzPffI"LT$i2dR ؝FV0M#8C`" Y_2Ic`ujm+❸9FŽ>gG՘Lz7juqL6Wؾun6E!T (Q` l9B/w~ s$A0 𞟲շw&&dw_j4> dm;?S[(_/q)=3,T d\'ecۧm#j(NLYh瑛 NLa19W=Ʌ~ ݰuӗ`o|d2&3 drڢ{*aVFCmWrnGIمBr(_(F] e&,&Lq<'Sk90񲺂&c>VW;Uˑ!kp7LݟwwuN','Vr/fulrtvɌLG C93!HU@VKIq#VhI2 :?{»lJ@ɉq۱_ȿ Craꍏ˟n0ī呺D k,V' 9W]z;s>\eid{bo6euƤovU[‚(LY}gE|*|e|eNҀV~ٿeT\}ia_[&vQ9W͇&;{ٿﰬbɎzɎ XP}g/q܅;Pb@ cYW1)AA޽_j* MoaWṅ#z͉=33s#xdUE#~sΎ`²3Hj 8Z&ʪ @1V oHJ$;B`gÛCcTY[/ȹwn] 5?f\thv’']-mЉF@0d - 6W0a=7JumUm+Sa|e?"y(.ӴNY?$9֢g 3I&[S>*U=G )Lt?_?Uah,.| '5bKVL~ wvٓP ݾ?y7bdr`>&FI Z&ߪ_MKIq oݲ:˅Ԝnʙ1_7K(fR YT1BAV+*812UNT'}ol` V*S mm鿭)N(`0Q1>RUd]*(AFXTTߑE.~2ǀ2̧pbU*|VUڻ?uc;U͓j|Rcdj/Kmp=4Hq}jwemݕX,B;uycz{rւ Xv{d$S};vD3w8Rh<̓br7> %/'h1Pݮ`ym.|mHWR"@`-_3vk)H*#[g prd,yV7M L 5`MnQ+:[r~Q_jr`{3%Ҡı.7%U| lwubB7ѳ,Y3d`]š@P811|`wlN=.@,`8b\Y& 0gʾlzk"n_ 8z`UnMg7Ư1`^!ejOktl+kteR@N8 ̿ wX 36Ȩeʌͷoۢ<5@`@`& K]<"M@n$/o@4%a3vh1K 1;-cT9PFL A/r2a;LJ;3HǑ*u;=u7cɅ\jSE{|'mݹYu͈|m?/P|0㋢F&vvgpKĒ2IXw4}rD7;|dʷ Υ h&APNT0#A$\hgLNfՁ[bQv!U` $]&*7 g AƃAXJh|)WS,A0WQ\m &q}Ocn˕cYYcRkhRو#cRsI#;y\ F/FʹXx_r#BbCF5T! lF&[Љ׿l@ m.f*B+Kn*d|[ːu+ g Ve۲u&)&He n\k2aJ| r͉w"%uڻW+]P qR $ErؒvdPzPUGIfUEUЏʄ0c"Ih,1}O-40+2V 2j(e;H$H&#@ĉxO=9qt`Tq/QbnB}flS⽃S"T? F\23xFNjR?W0AA 1&)Uv o{D8A`.KgM Ue)ݔ}Ub)o?ǘM}٩Z9N1bIM@ (!'PR` ɿ!3OʸwrUA$`q1%V$r&cIRKKw.3kG#/iӶUR+lȭXL@&2"?o3^<H`Vek6>*vrQF8)B>h~!sԙ5Mm8z|1UāQĹ Hf cD *lB2Y%|K#8N{ z1uޢmLF_#yT/߱EDRldk|LO]bt ͤz+ň4cɓbǖgh= >Δq> S̐ +HREQ le.X;:bV\6$nʐN޻>/PH'nV#J+LMN3@X;7SiP=f_c=0 +:h3ƄoӢ.SxFLH@!J m\wyc/r")PD&L{f|>nn6;@osm&u/Y2aج1PѨ {se67%XX"D @^:RQeduVcտhJ4O)+][#eP1;T(P8|rgo4ڔXM+D^2ǘy(e.oo(֠<ZV7` 1E0ʧ1 f[>41wԊ? mA RxM@Gʠ#䱮1[\HS>q 80@`>a3yGl;loxiF0I& bvA.Ub$q9ŌX_Ed7 xM8ETHH/mOqx8To16\]m F^>v߲#l[EmbI00 }10%D-<[ގ"2srmN c <׉ÈC+'$?.^^YW¢EfoԬi;X1굯飌JDA׶^&"Y;0Ϳ~=aȊLنReIq Fay]AI] T-1,ُ3c *TeeW[]\|'f_%|đ?rQ3!A?EX.GʯRps!FLb'd#f)Wۉ7˝,R2>eј,4`Hud[jhKRf*P Ed%ѕAEzȭchL(A6b==fj$Aji[p24Nq4 Q4&e5/j;}iM6X.xY1PEi@RT)رi@&kKTآ ~51eۨy` xT>@L h&Lxɢ*jmPDA[M;{gaqJvD8G+q\ykmXޥLPVjǍ\XsX,oԏP_N8nF;A11^P!\IR~2b0[m{dm &{>ULꣃ| 3*ܒ,r([z\3:m_VaGHk+3XWմqzK ܷ=uO DŽd/$ JJ!_Uo$@ŒEQH“9[>ܝ@DUT+Q0[+ޞV˽fljr,+t2[|Dݹw&ɋً!,FH&:h/p;C d\sKyqo~ӅXA<@^4>UFlxJ1ĒJ vlo/EX:QFbR"UFlH\q"7nm_a>͵|\`84U8АFvVѩ ;Pt_ZnRLl0A+3Tl?6s2ʱ7SdA I"h\ҫHwDP y [>X5Y8+el:CnOѢtO*? riN jE$v_eo>nZǙLXOZ>-G6cƉg0|kErXƫtL"sz&(ҢEs0 7)4n4`~ Ƞd_76'Q 0FؿƧlY0>ִ.#8xI.Shh)7#qjk_s&*^Ԋ4{N:jE^j4 Eڷ_M`@,)<(N7ASEg~܄ÙvIl->(6f@j0U2m'ALAM;uU7b&۾wȄh㌝#ʮWV"W&6`>#QfZ>3>6f2F@&&h"&_԰F*A p"s}'k,ܒ@R@]Lщ QRor-T|oK۴@T@ %b&LLrgb۲eV_;t['RHW *S}/C2ato`nV]+^%*oHƪY` KLݾorv$0CefbUEa`$ TqY[x82j yU˹`wH`K2VnH c.v:cIOmn0ԽKJ0=ҿ ǁG:uYq~fa&5ګ$)tzOwI\` ~.ǿ=F2¬FlpO4S 8TaCeBak234HhLӶ!&X_Ĺ̥kWd3t&57i@z@$ډj0h"+b߂+1csxÈss5 1E/j`AL+`ipTMY۶?Q&5Ƌiu @JFBJpL&4 ;TԯC">5}[p!LrUoh RXG/tcQdz}RV43w]6^&vUZ,h/uڡH]毋LNUC [vx{q_v,Ă~j. ҆ WS_o p4 4&/s0Kı ee4ankفR2lo%VWv.rm#ZGNL X*Vff,IfbI$ܒiYr*YX !)%@ (h9Z mU,ТIhꮬnVSbS'LJP5jڪ\6X&|Q830,Y]EY&CBB߀־&%ݓ"V#zŏA;,FS[s!t*>ݓ~$bW:jx@g'!,ځYGMn0hhJTLV§5t7'sqddk@_o^aP\DUV5"bE|GȜ &KA&PʞSlK`qUkAZR$L@&Cbx@wN*ɷ^N_x,Ĩ^6mɗxƀn4CUbGhF9c*u^*y* $ڿL!>;UfJPZA'@9 B(‚IE|6Նl 2*]nXTh^([}=5¡ɥpHDv;ǵ,wv{$CiAT|e073M~җRF`7 QL-.I`M}tOy*T"f bL*nݻgM.8 WFXu_* z|Cc+|G-K1!SˋsH:[qkջ؝ %f@~$Ի֞" vJ8Rq w-`x*`^yQǍ2$$Yn޻!Ӭoz~Ԡ` xZmTNbM3s$]³$Ȋrv֢sw$[r`H4qqd`c"lj)"&C8Њ^J|1m4-ºH*(Q[F!;>#'cǏ&!e͇p#KǑSzcL;|DZsG4^t,t'Ld b-PP-4ǍmB5, %ŵN8Ii`}+4 XP#Nߋ(p`cm.?MڧV܋?cmب$Ĝ_6g;q\ LMcI|=%ō3?[Bv vٟh".iY,fƶ=4bHA $sjX!A#ƖQ-Xj X?%(ubǎ>7"`eTw9R؛cPzomۙUHc4K5]<&R[rcF^5SW{jSDT5)` 6Aҋ(j5] ۏu|5$g˄i5/sڗv@36Ll5hĥvS`߹+{\I41 "|׈FA:U-34T@JeSnTѴo+{J;mam*P2%CoOHpRUQϖFF4Ffo£S@a3->"@U:0oWI.CUE3utĠh1A60F6j%0ŗ g"0 ;~jc L(4 ͐t=*  3M)󬝾e  Ү8;`tQ`45TȭEa@GayWk΂5d"ə:mτ1}MrfR+gl'pGl 2ecPeω᱂~Q͇vD9l`dQ6?AOoqOUf81#Q o>x?L0wYd>RJC~7ob$K6A?ne=}Ñّi~Q`(f7?*]@HGJ3}l M|_ (vc=pj Ѥ0O >j'N!P%4{<2taY?qH=`ԛ.8Nۏ] $w$yVcb+rd]RDV[Gݴ;9#(2AJ VPGXG":3%]2PqX3+5|fXuQ #@>FY"5H"&H*c215&Z zrM21!'7?@Rw zi5qq)1_ |elnC^Z!SAn)p'ZzDneڭVїQ6N0@a[} Y&ݭ1 H%G}ޔI`rmT&O@jGu-81RLU%P+6N,r[jUªj:!nW̋sm蠟p|+0TmHvYzuz/E"ɐ2gVd&&W͔C(RTa}"?]{m9.,x@ohL{w *OVo -`ߡC'zq"Itwu.)z%vhչVjf1a d?M.5XJr4H]li{D2w2|lfl пݥ2ch(߄crf;g^#Pdžm@[7uRZ;>ݎ|u`LG`AEn-4C0X t[LbWɝى H$zjG.P(G:هƪ9'knL(I/C* ٘4oS kNXaF Ƅ:!+vQyHI!߉ votMAq|gFQ~owE{`P 5y0XfvLr0"3XltvyF\F>/Ӑ4{0R۸*䰛;b$MmQ`$64/jiPZ@\t|iBbW _޺(Qqw#Ex]+s5",5EaGK,dA)A{$̅D5wA:@owTNtb@22ʬd] ͿfF ݀ۊ gj1ѻrp-ܯKleeb~9Jm"QhYC1j*Fh8"&tY̴arq0e n7j%l ɣZz!Q`8 t1GiNJh~#ُ*jUO w}|}jiumAO#F$m_!6e7W!k|NhDɱo[<p84ψu`FUߌNNF1ьr $yqA8U~neX/2t}F7Y@pnԭ7v1VS`aTr҂.|@PXRX`MetGOZ˽ՊҪEWq->W2)T8$.@@*@6P[;|ijl%5XG>sL"6Fe ڌ7R(rn$bu fu{gGM8؆4BJA u"x :Q? +md W! z}.yznRT`mXTs 4$Q{vfhfhׅ2|<+mJeD2J#)XBՍyU j|#b@RvřJl 3_6p8n`7o`96ǮhYh*@l.y);|9_nĘ$EHw@ۍUxHPɗ;wpO|1c-Gӭ~C]h$p#B+k4J@2H#L(I&ĒlGݍH9 |W-}͹h+OIAEKkܜd주NcmciS'Hœ 9[n ƆL `D_H)["DQNL*EagŘܳ& WI{ߡ[\PT`HA3Rj"wȠDƁNB[aOۣ_M1%5ډlY4X'@8G^(tڽ n4"GRߦiH#!V fͻofꪥª̠ {Q A2$Z*X;YYNbI ċ2 f!T^2vaUO/g2ĒS&T <`*IVa˿!T@U7Xͷn%]׍ ea]_?M@oE5oQM)kk#R `OkᲒxM!DX*ivW3dinǷ*ŚX5**L $q`F#Zr$o0@~"n$O ( 8W#yE #xPf->֣*|Qa)j2HaMuF%4tBxQ(#43• Du 94;5𵲺 }7y[*kN cƦfMjjI1@[siI!tBF 8PzӀ`F[Vxrn$i_"gH fH$/(ԦzaP̕3j] F;LƃjQ LI[[ @¨Sg2|H & &ghQoUeT)2!_-}j*Or%se!NP|FL@ )ea/z]:7# ÊZ}Jp  6އDʰ" n]zLmb*K+16lJu3"$ckC[?GuGpqVBL5A*tRXĈY-$un€I%Xok3o?b|LCRHt dzWoT@Ddyԁ+.ک mjaa:S[t>ƾO7s5|@VF=:h=Ӕb}59OPiM ,/Fhd3pyn4~#Nj݌<+fEy, "xW-Qj^4X0 H&4DkRXO*SfIxŇ'Pc8kh%,u"IV>A#ԞtV"M>G3xWYץnk,G_'y0c $m+ ?څ#B*H֠*Z IA&~T{4W\} 1ӵHoM u_G 顢]v"h.gZ_OMC'F(&rׁa'ۭt}g^ OGz8 k!iD93[I>S&(*6I* &7&꿔@g:>>Z.l Qd  .gPGjAmxdim=={铹beP Z?ۥ-,T2ِ.ܿn.Fv,YjmN벐9+s7uLk#~S(@̷r+շoWCkL^=LI>鏞c4 D'Kz邺+)OaGZlPbnv2^ݿ[E.&msA8^Ƣx\ʢѼ=Bǁ EyI{D:W$$K)`;h&DI)[TԱ<8Cj Å\(AIDxR*]52G?LKLkm0|%/sQAѕ/'3N1ZYP^߅7,?5l3"|%!rzA?_WFJGPIT&2I"0/jU%DM3!'s Uc,I[N@5 M|l5=2ǕoU* *Ñ6ZA,L.I568"H4;cyJ\h4gr" +l ͏"ldl::|s5k”&?xA`t"͍xW|` +ֈW6? B= YO ȭGR6k݁ I> X\JDz0" $ń*8"1 I$ߞx/TIoŁTfUD$Y@ {n+*zs?NC>\xI`7h5~ߜbDE ][t1* X1y_]<&o[vfEka!uiвX[p3+#UbC*f,WGΔ 6#r4s (>Z$ N|A*@<D xLO-)3&A mAZd,d'adP цrNgjeȥMb$Z:An`lmxCq7c^"I$& M)7l#P Q$0K'Pڈ O՘bDZ<ԥu -@ZdE&gE$@A I44HD$pP un|uX$Lb()6`ȀBLz",9P L@ЏTS HEQDو6Wbŀ"b}ݩ*MpR*<}ŀS#mT6`x  I&"I||v /_UȝGZ"6ƊBr}^4W抑Rc?_%>?ÁA#q<ŇSFHP@V&I𡟷mJj!@w$&ڬm߱J{|w X0HJ0EXZ>a.e9۸P-tSd[TPi!/bI

: OH>7,4kV4 \Y@\9ɳ8m"=Kbk`$h*$i؋Gi"Th`DΞ;DŁi$DR 7rF" &?Jb`Hͣ5 ۪ML&)Yo4$ۄ`ͭP ӈ .$1PdmnjVe>[f1xAT_tүr/3# K=M[BH/1ѡ$0;gC$o[ ^oc0-qJ1ַ<{"4HHA',nkEŠ f&h%̘o#Px`=gZhh'k Z̀o-Jd hdDAۡ "bLX= @'DUI0kχ@2C"o[B'Ёu(`EE?5k<"(: 6Ԙ#Eڃl;&չTd0.bxW&WA7."9ioDn?AXAPlA?hI P" :3XDD~dbǦkƂp=(N/o -7gSFLwqP$eM(Me>[b+\ůDJ5f t DCA0 fǨEAA _M$o  _ 4^EX5 I>}N7^r Pd0D M5LhHĆ:P!1Ԭ:m"#sڱ$[@ hQȱ$Awa4N$:`([hAM#oW_ޓ=:jXď`$$Zvb\,q$܈iFXq7&8EC&˶ m&ԫo 6gT3{~&1ŤHDYLAzv٭LhY6$-" '6UD4Xb5t 8{6j,$iރ0t$DDPe Q$'1b؁ \uy Z\/'7^B @">1X@$Trm3>@H@(D 2 v֙w'V ˭TމfDٌpDx[s$^<H 5#΁ dxi6Tt"6@D*J^7%H} m+ŸwbcQ-TS( O+)KS 'qoݭj }+I $8i0jH%$FT@f" Auڰg5kIQݐM&Ic>SRFyA@u6g @Mm\ uަP1{Ę`j]J Z`Q07X$Α.fi!I$A(*t.6؀AI쭮 IޫciY nx]y>#m1bcSO9ڻN9ULc>gOQOQMV=Q7"&SR$l0:\C'yPzx\͢(v]"ՉRM ncDc| "91yh55љVM2Ȭ'FeQTE_DP!}d|* <u2+iG[#c;UβMU(!1kKDMA@Aρ:YjUsA*ۈ#3Z pm:{zVA$zx}endۤr=SDG#PQ#(@&Gj*XɶNW"P}},~z&H$D4Tm/ݣ1?;-,N~҃ƌY7ĉtPledCʼn#qGfm2$@Hǎ~H,xۺY;mm'yԆ ~4k[FBmhc:^"wt N*HIXPĀ LZXP>P2BwC8jtbĩ0tހRL^YHc&@RGQez'oE2d./q}&U Du1 G8ɑ EF阅$4i5 5{@~j}">2IbE  U-0|hëZd(47V@ /F$aIQ#tYTA%C#ZRLF`#@[NU-NJ!$hf434Iʭ(M0$0@!2Â$H6ȐE|& b#oEFC$"46.&}UC $EϢHJY)cLRCusqLA efP",nZ1aZK܍ fIZ\Xq͗! d2o#z>+C1U$Z-R$-v >ƯPMm(-ХAmD< ure<[Ù4 Q,'ޅxVؓ'NZ$|vXg2Ui5&BƘc32#Ē"Q* 1xl`.?j`ncLmQW,JYD/yVD$ZIv @1I-:@3B OyV`n:)1m#t>Xˑ"6AGM"2fK8,E $LA|i"&$M4YHc[)#nX?VZf"Aڤ9~QBLI4UՆAOҷ`(<"C8yU9v`7!L\e @!S`VUI7,+'09LĪ4!J梿h:H$Q`$d:DZ rTE͏*gY A>Vl u4'|d:}?EdjP%݉0@x\\$d`r:`$_V,my <Ƌ+d$=`q%/)H;^`Q$ IЌϸi;4[q0'6]B}QTd,'PP&}񐈳X=Cmi$jV^XEctۍ\%I!xr'H%PWbN׹x$_`Fa@vυLMʓoRtDdIDLv݊R!&|dHAAa$k2fx)Y-No8zOkz)O `#[Iܣu$< GT*%A$RIwEGm $"FRtI˒ &`zEqg i 7 v.6Ua*@kx/mh"֣  FٮX&(0(Hb* yK-Pr$[IQ%6t3ÖZƂ".pѠ i$Bc11v6Qrg:DhyІq*XHyUe@E}J"1$IPo1TU06ܛ"IE# d=$~ʤD~~M G-jJ}d,dH®6n6=v^*i^ЖeRM&"hGh$f "A#֣ׅICm`xTax6zXX[Z/<怒`E P :U1;#_]%`I7Sp |^׳DNan?}>cˌ.U?EŊ4oup$NL 2"YHpoWJ]QLrcf7o7Sp"ͅ ?`aɶ_- $SGu>VyS[071'HV٩eDFBf`}T 1y.'h3MTL}JH#ތ5 5ޣwY&Kx3ň  >dBk)a 06mhXCjR(&In(20r@& ghAE}{OPoI&+i"Di=Г'@4 \eo&ru3S:O*LC,8АTXn&'M /'"EV~"&E ZzJGPfb 2x4QP ч/ڭܢ`/}MXOkv-bC}!e.2b3bG]T ˞2֡h1LؐA!A@aa@b|,8Ж,uiҴʌ2wWn\${wʾDPN5(v7,Gh}7z # eɉ^t[-䱒^T}z`/X=,6cDi:}EI<՜:37s<ϦGa70un K TyJ:CXX|nGm^sk_RcIH>!aiI5[1#ΤDzhŬjw+XԹp) aB;LO}# /t[9|oo@ @!<=LjSw%HݎN^v&=H 6h?@ @BקYʡH&x{@pzNM΀fGu̳.8΢>.f,amL=@2@D@+ qmA`[A܍byn҆659o6+҆'hzkb0:@&PCGA$Bze+H3}X_Z2TG9x\hOn݉E08aR$_d*1C0}6"`MXޠLۑ[r0 5 #\+ xA$hC~aDrF"BQ 1X 4f `:3[y(DQ ߕ[ 'F@u++貐PXIi !?Gèt@EsJnPl O4 Ȱ;}uPI]z2ar%i(6lH> 9QV] $͉v65&M1AɍtS`Ay3>5*Hv?AXc*-zd+*4leY uVDMݩ8BR8ylJ@q#2"†lD$j\/ #eߋt?fɍ/uv"$RɍC V,LjnUe@)ҷ2wI $ DbBnK-kkcBoR ( |AH%E(6VT7c8H9ܚ.3bp%5*c`5"/ Vڊ(YrO*`'F L`@;Zע1aj?(a Q-$͉OQYfk1i|*Gx!Ln=1Z堮kbxgBT t3"(m*:cfTE&[T@ZG;O1cē&IX0 o@h)sF&n"8ZA"Als A@bI$ǢL.UU wH"yQ- "*F@ u o>2'Xp7v#RO3]v7gȢȿaGy"r+%& 16(*`TE"d4E2mmwBN|a m$$^ZT$z^"I"P\>L](U2Z>zH&A# M @LbH^Ep4,jxf40&}4I$ɞFjZM-46oh  M蠠\hku3ITov,U@e #B AH>$A$):?Z B-_Y*S;w'GݭAZ#1 Hv@'+s~1Us Q A*>n>cAC,h6qt AZ=ev0 h/Ҕ'(Dq&<~OUB "7ӝI"t#JXfOGk:ŧPX3P/ "'SM1#jfߔT*5~Dw wMHT`Ahab'ם6mdÕ7DKMX8:|>-̰= opL$` "sjya]$4[-rpH+[zIX'Tm$.4w8,0@, {4bVZۥN Tۗ%B"/hD"fL٩΋3UI,4cjOn0D[rGM`IIԛiC"HULBM7Χ 14*27u}uI,ozG!fI#QŅ`-ֳD'4BÁID$~ZX Чb0ZD(j3@ͷVFl1 `$*Qj)xQ CՍ Po$.uP:ƣ c>6'rظhqչx?-?MNz& 8ΓG{0?IZ](C̈ƀ$YIp$֋[5A[i:GEhV3ejfrsDmx}.ĆWb%O /;?z\lzyT Z H"hM(PڒoV3,!A-HWC1:FڣՌ2ġ% ?D#D&iwr$4)fמڸw[̬vEdܩv4B,HI?:):n.j~`l@bE}4b56=ME]IǤ wrV!Jw3ǥ7h|Wp9\:*; CZͷ% D'Uԝ}4@ ] ])> WxFKޡE]G4.ɔbUU*1̡00v5\/p.qD' bRqp -jh;E-ENIf"yf_N I:N=ĶI*,F8<-10f9H!a>%Unu;\LF-+aڥ04#yАNjqI41Aҿe*HX0[>[|Y{`GS"CEʰ,ԙ:D~\ϤhIC-p폜 LUtPƤ1?Ecj'^[X>az'q'f8JdS*LC:m8L GP ]w1x^V.>o2 &chbt?nȂ cvDL>azyn`^/BJh¤[%Y?;x=MPi%!4aHQ+!y Iż I'flljH>6 7BZhIOH9j?kx(W*3ćtTE6:֭6Le`+h]NFfKLx2L\+nkTT XqZ(f#@uh"!HhH[Zcf |Dzh.>ؖr)~Ö^~뚔fn:p?g;v2TQC]^jcgdb{ kU7<ξVN٘5,@ވE mzڤb@&9j;T`FNU&P$T( TIIC;sA%I$w5NDqv&m+˧3VP<稟ҿ= "9ʈY[4A:x(G$`  nXO1꡽M*M@A>3W8jB r%-{=Xg`KXkC+.B` 9#@'^QRIVVG+V0ZQyfQWǍK;k1\,F~r@S1֥H Eق9D \0}hJ(*T3-嘶MK۔ TTD*kwkjS>z9bQ$/1*TaoU|R,EQR(vcq7rH7-efZznR9E V1b".9z?ZTuց:5lx@?귯K,Bn@ԯV3fFЊV:Et 84:9ʈ@qE @?ZGs!{*M@PdEj`}mZ{0:Q*b8GPmcH譭*I>b|#M}ۮ^-HYPt$)b6ND _D^G<55kDD'+HdQ_H:LIBf iR oE-ΥT$1l0 &6$mҨӕZDpHk~qAňj&v@>qT 2c'Y;`;Z]-\B砡09Ա1{ kzQPLpM7kBf|]Q578*ȈJԨf**#bBT(t@R'kk/k.$`*1d]\>MثTh2|VQ}` t@ 5oZ銸 <z1bKaJ_miX 5n` āj,f 㨪N5ZcqE64!7HBZt>0 `5$ _v`4nEY08IGQ7) FS~JH1Fc琩Ϩxrq[jxs OcV5QqάkJ"H XԸac>"H!D}ԆFw&}Fm _$ |A 2uPAS:nz2Nohq>3Qքz'ܙ,'VjH6hut ^H&T7Lkn` Im {@C EԳ?XZf5qL(.[\6C1#ثP-iukV L9HqsD^܎;X8\WR9=1h1W'H@H$8^/#-D&ޏ(2A_eAji&^GV!<晊`Bj`:(LF* 7qI+&jqc?jqccBs֯ sF5XJRT̈V kbE`@`L,ȿ֢fdXTPc1$jP뚾rbk5i>3Qj?RG@#GS/m۪^UnBAQ4Y!Uzd`[cB& ~1oj1"LW_N53v !AHIcgkP= ]$1(E'ooT,(J`G"Jq (* \UԻy bG.C@HXc~F &&] >L}͉  j@#D!@/ibD2^ ":8jP3T14-s3EHƮ9$H-x ^iqc<%<(7*)qp/TdS$G *oGW?jP£F*w㡮/xkkTɓ4\TɘFUAǃj(t$* {OXDM`ԪhA5I>*6|3 -W>^8q櫌Cщ?*Iܑ"lV#c\xmКrҊ"aLHҮq'S@A'jȤ"E;cP4IWHFIU'ɍgIDHxbS-O5J dSq()1*JGX=d ǎ9Y,"Q0QI։*$o>ξ;&HU5Ԩ< In8G*1RHv" ?5/oۨg7&UVbU.t]9=cAvZyntȯ0 &WZ(5(殥 Z9+K FhDM#髌wR<GPȀ )F,hBG* "@ i ӤA#?5Z @"hXH>>WpIbm`q1@:J` (M~ÁL*􉨼Rh*TZ3Mw"n*i8YHL54[i( )Лz[B> '.**dEArYo5;PD,3 A4 ?5d8AO 'T2@ƢsP/3cT~;9}̜ p_{)n0>{V}'5Ќcı$V9~j&DǣL f(X[Cm#:O5a'& srI \(RhFG-`32H  0aB[ߏ[*`Q& h'DIi̚;Idž3h,=_ij&>yA:`pQ [M($ qH}%Qɐsi WP"8MJxpH$MM`Q3DU(6@9T5s&u8mc?ŽHqGBa`O5 Eb?h#R/zbHU,44$ |4>{cv!`ī)ѸU,I'Rjus`xi޶+{z,4i?<]0<S[I@ h(ȟ\T,FDpHǰL 7\@ @ҠOԱ$Ir1::zWF|å B޾׮_DS[ 9 ƿ#zu7>!Qhnt ]*>ߜHjI'ޯW֬_,'\@ĉ#j.sA0rL`ҙ¢?4ⰹ8T.A-,@!`dbH.t5Pڱ橒OƯ\+_"(芕oګu>&dL` ->&P@,VH0M۲-xbLp$ԓ'XTiv rA3P'ջ(ΊZ@E̊ʹX#陌U%MaB8h0QJl|H9\XEGp 1ֱvJʊx(Θg~(8XcdU'Ckɥ[;h+!;rzpDYյ|51.(Ɍ t"€s %OAIK):ǁ 8u1c_O4qWK'0J!}?=H &=`@:Lγ*S{ǏV> "n'\\[$XDT}"[ǟ*(ISsDODj?G˯,5$jҦ|[c IZe2`$V2d 5qYթJ HpHc+Qϭ OjMTH4W?ҹT"y!I$Z@mԝ~%2KGwh(`U<xx1o>()iV>KիuA"QC>SFmZ; ,RnNqf_eǍ砸򤛁0~z*@ZiVA>ʶ "ThmjF^Slbȑ"|$7 +$~dQ"D&+q+7A5~5ʭ\$Mi@At>*Uβw|E`Z6[PAJ 2x/.xQ4qՉr<OEPb/<~z9B$M\{(70G=:fBkAd?j:"p>g?6R+~__UDG\JFzkhi@ K|T*MD$&_iŠFoO6,Xi#]Oha O(ŘH1vP͙+O֩7nj-Y"pXPl`wԀ?B|O?-h@@5͝/pOP_*FV*,L N5Ꚓdr}tIV$5j*~dEAZ+q"((q}5^0=$1A Sc<}"hz2"edq s17(($&/aA3"1rwb )9l_Pu1 j7(LY1' CgHWb/m(gVҥFjIc確ƯXƹK}7>  H.#jTE)$"ĞDXz(B2!8s-0Fow,׫ʉF*A?joΆ$O[apkFAj#h9;Vq{*jUjqVKUUa1 HӠfҤo6I&\r&]d iFԴKGWP #ނC_٭I]EVMǕi }!`qPݕU -(.,DA4{ } uircDVi0Xry %4*>m,Jag몭`9nDUםX]kW&_EpXEW Ao<>.L`LLƾҶ["/ǫZ7s-ap¶G/J0LDtLJVd2ܬA5:ARi{#7:N߷ո,sf}4{+u_PЫ4&o2n jM`x N*ml n20OG_G2f,dhbI ="2 ͘EAYďMK[¦Zaε&lj$L7Aڰ$0GL$GoD؁5ʶTnoEj=]&WqPL [4Jǟ 5_7,k$6@5Հ,$`YGߵ[ e)[9r,Sh'I1wlVL$$ԓ]6mD5oJnU9j1A81sQ̝b$OJʜ#r#"w {w1yc̚I .Hݾ6=!ӗ I笟vN,vFchtYL.u{Ԛ'ɯ^1Z҆0 < aoGtf2ZfE2#  h-j}oeNIq?%l.hhh55DRQ{-C&f9EOp ;}FEu`m&7V޲+^c[BE2jɨ$AT$yTqnH"OP E&XZnxr*"sx<ڂNf?@gcS{̣we`ާ.Lgq<}{|"mB^_jۋP!;lqd۶7z'=һdx7!AEA>ʙ@$U{s]Uk|\|T{+c1-LQe1"IDxkD\ `=f?vÓwك>7 鯲5b@􊸫҂h1PD@Ѡ$}zf -E)0rrLu# OU3Z|>ݱ5r:֖*4uak^zիƮkW:Ң#[p32B1"L,@`wuت%m/qu~S 2|VDA7\lQap@ȘdK4x*1f>Fߩkxlx:<@@E) rd:ʤՇ: _j' bd'Jsd& |ы˸ r86p`#n6 30x1)fOsrpŊKncZ;AdmPň:PPcf~ݮHGZO~+ɀu> G7E 4hݬ~Բa -SZVV -L.0H.oqxٲ,m .}1B1hg\/_ׯ &X[|,aқzKzI8[ZwǤHGJ"k´kL7Sq?nyawG"6 lL&$?D8-fbOo-m_]\QgPGd;|dݏ}ƶUU8" ֹҝn708ۍ|Nݕbh%u~?jA3ŠhTPmdM-K' 0Xq]U#H#¬f"B`lNHIF!q#‰y#魹Pt5 PjƮ>MjA#GZv60sacy$CqkW(qE"#mʅ "$nb j`*r+ I\:>F=~Ï㛒<H1O7L:ַ&#&yn}?%`bK.zV7[Z>BWU$JIaZTDx 1 '((%H^>cĽ? lsfqęz<+CrqB`&옔y#ݍЌ܉KY2`TTsflPxGJۨ[loD$$5myL]¨TmPT>j?8nɉaAU`c^]aY]Tn|l5+u\dƣN6֏\ՅTEh\ $Ǫ&A0hUE22dq1 twctHފ) )װk~|ծOc_]ܳڥ~`2|mj (Lc[D֦ @"h-iC`>jbn@1Ln/V"R(RcXmu|f 0p:WP# r`!#顓1U- 1A'w'HC$ũ!SIeZ o+HPdsZS!%C$D$|s$O*N?;s tlË>{C.P1a6`ˏP~{'A`r-~U$EH֗D09qՌ,)r2O 2b$WPfrX^>7Hn9Q8bdObwq05l  m~7A~ HK*MH8axUUB8 Ӓ@9ɒvG'jum* u*j׫iQM؃&ey d|ڭ+ :hX"\*WURd3Uc"MĒmCtgӴI_P_e#,ta¬";m^&$LO Tߴ+ ڬ1 b#hu,dI5GaRj5#Ʈ*h |IdAC HQsp$ŀHh.wN@d AceXXkDTQuQi2}79s)(q89sIp|g ʢW#f2`ۅ\nLzm5{=etXeN̏Xտ;{8qGZ  @*֎_^"uskI(f8Pnvii i]}գ$hO\HHA晷?MmHĥ] q9LMZRnjJoZI:E݀71(sI砦XU8K0i~,/ǧAZ&=TYH(TJ2uN3M45x=, 91c6|ö;D>l |>@:nh|-qm]DBzאqL:_S0|kr5X!#?[r`A_ c#5kU+qP~@LUŭr=8nM{A4am2Goc5-ZE\OqWX,Ab2_E.34lRqA8V|1:Ȋ7baBXb4 ?8а[Nt8 $rOQGX"$ַ +?$Ikf¾.bߍSL9գP_ZT\nfGY]lZF•Lbf!EU+k,&JܓMIxȈ75?&փ^#,M ?wqQuS͊tȿ?m;V68UV}K56&=<j}4D7#M=TrhdTfVL2)2p&, 3E 4EI"ݩަXAVQ4zvJ*` piۍt"ϕ»I8t9rǟ&O D ڼ9R,kk{h o ڊY.MAz ؋uPV&gīkhqGm[IރAz)rbqeXXQŐb +IrX~qj+[P ĎF"}k[E0}_ZO@>? !h @WYX[OA* h&jժFs"ڴbDFC)=C'eћu1&i7z/y URՉmu{j6}jtv*_nޝNߩE8QfR/ W)O { naF@FP܅#?Em=hV?AZj*;OK3`(f2HRuzߞQߞ&oI_TėEQةL?Eq6ᵏ։o? f`."[Ow6;Z/ؘ;ro"ҌgBH>u%B1ކ"~ I*P?{83rr A2H`LG|Btt'XgQޮ$:]nG C}l`g4?~j ;*d2=T>[iIkqz4P X+_j!pLO*U,T⪠ܟWGU,Z?z1AFһ($-x\e&?nF3M;)mߡWF6$ KGkGnc7+'FfXH؟)aP{?RG|6M L  [O?{k?Ώ&^dkGj(*q3B{ߚ˥ڋ>E|I>!go1U8VApR/~zG~zCE_--8[Uob@&hOh:>0XWS*kT 2yU|jVֱG42M1Ѩlgj[Q/AF,Q5ë}43A>/@8lX N?Zb ti56Ah!ʃP>A.H>$9,|%xڃ!*FV$$ˈc"5kZijsY02H uap7_'9tݕԧte:l>%uRmQl@Iԑ4k:D͐ &ip@zԿVU Rm@4^Ž<"H7EP1i.FbD=4B"-@|VAM0k/l@z+ֶG[C0 ch*c3DHif >\L`PŕJItj&R#Hz+c=M*w<_ !ٲ/O i/h-?iW{ 5jV(3*IG1[C ƥ :XhE ]2>LZuMm8ɉ1jifS+r ؊ٕ 2*b㈙q1`F |5#Bn}"#Sff=U1ɖkŮ6^jru&f+@DT3P \te8ʀAr@Vv#,YiF1 q҆W&JY'oQ;K^zaB5K_Y6wMɇ:|fV7Dmh7Mgbȶ $oz,ljT_d?ɻ歽PR@&jJaN~C=6&;%2aܢyS&| >V?=mAk# 6}x]nc3EjkF*G-P@tVI `` _noG#V@4ChxV.۶B205@^]\hj$/頪 -`A&Lcek[} 6yhiڢXM]+mN3r1_bٌ- #"B MHG&&IX@dR>R^"rB41RxGJĔ¶gDA1uV"VX4֠RyP&4qkgnO=@J̇(1oޭ}!&& F5Q062ujB-"=D֠2c x;~c?@9ڠR`XT`w X$O[Eh䭝dse#M}T3 ?X  ">鏧f5 d9Uxs[dcN `gm- sޯAI&=|2>.h,d<+8$i>j(lNpd-sC?sܪ:?C|h'iݨ0."$LA#>@M$ `{4e? m`@:\_oXc]<}sHS;F9%@E&Pf#KXP.ꓦ lO#Cg_ҥ ;#P2 G:;Dsi;>sj|YTD%JEH7A&Xi{tb ^o-_i2PZ$fl}ekMA3z^RATKvXb^_Y3D&Bx ߖݫEl3 'qup+:f۸ >0$&`+wӉb`nw@``xb{d0,.cƾn)\`f%~8#+r{pIP/mjw8U@'6 jbi9=$;[0 F u:ea4Q (RAL*[+@bh/+;xzN;|T'[{wAU;DHclfq`v,dPMp( [rw0HY1M($)ǐcbJ-ReSKxM[VCɄq‚Q m‚2ckmbD~<?H\Lʈ jEC[eQ2`Ql'@m$U@F>ɌA$[rv>*,ܣtրiomJ`H& $S^n=iF6@ Lhq8=9UxL-l|4Rā5bq@82 at!eC`C&+!X 0O5IJ(PSR03J 4Oc?XP(6f.i<<B]MQ[Y9DOK4T/*ΎM\&4䃐$ZZuqs3[+ **([NFv6 >`EabX[x#Ōkh|5,4lT m&9\*X$VXG2tz+n H\=4`Sn] =XȠ,[W*߉ޤ\97a6pԑ3@XP4_4B Lx-I>@ hdp+ƃ_]$Mi-磉-foQM|L4?d?W'b^0E}:J G nqi7բI$'Y5^@­d3 M1_푈=$a΋k#@PsH.hdI@ i4$&#ӹhhBM@P gJ{<ۉox^@xxΐ?j /7ĚƟT`DZ}FRKf$I5aɉTM;z&i[t i3nA1L2b&\o&:&b9i:SށsG :/ޢP<=4v0IDb1R4GҸntmեr`IPkT16!2D32 ~$7NvSc=]gjW'E*J$O Dž I8 f$rNҹLTby^J 0R$m, >8PDz MJRH " *r]G2ψwv\M|D2!&`ޗn1u`JVӭt^f7u1glκX5ʔp9Q Ws \QA6иVLz@ c>Ln q#^[27n7dIe'p8LQdhV;G!_/O`ݢ`"tĶ2dXɓΥy??Gr 殰TZ-vFT u^$yMXMIY>4w/J_? -'Qf$$'+_Mƥ/I<F [jb"V12&җ!+_VIp1z)B275Ő3;D! &*X5,~j҄H?05=IS;YarWmH>3qkÈAҴ[1r¨NnH;^56^+`;T]( ^cĊqǗt[xZ.r+'"1Y,Iۈ..Oh&0DˑmƱj6C)pAw#)+ݯo+'u:@5<~ VAE1\Aab8$ˠ}t1& "WnG䢙,DMd@$ u$TǦ0 JF/M~&zAA4{.EO"xW62dXr  \}+(4gJAF}*҆P*N7jy@1O~|Eve;oD!6?1U\dSڊX~j7 !:{+|YBfpvxDfF܌KuLG>B/Ze\c'ʃ~ v}O_?¢UVM"u8u84js俪I dWTq@"4[ꉏYxսl6zyRGw;.%fޔ }19U@ҏZ$Lh"f;pOrx4@ Vƌb!)2+af^c+rt"&8[TەA;e5ڣ7u[tsM{l" 4K8l@ Ո1蠣E=_Ҏ=1iTjȻH"EJZV$su B)rg wEc3 4䃝Y:EnXp5zj݌ax6={b}QAd(MX:sTq|jP&GH>Pam񯋈$P|CbP剆& @‹ 頫8 &Ns01!򯣝ŘMZV"r"*5x*f3ʹx 4q D jFVMމX G|/_dmLci#ޛG֡ ӌ@<|>>S'i$n( qG*FoM;&Oi&~Hj@m^6+CRy:en1;(5P&F$i\(yz3!&'ILh111ƕ3bBJ0"AA'xT|Аa>عYmLf4qƬo3")s3G‡uq#'IC32I1 ^DWT*EDUƹcP~]*7{VkƤ{*EtqIkm> ڠA4H^V$|⊜I*H4C͎b y70> `}az GH"aRty\j*WZOL!\ 5#YPԛ"cA<[p3 nZ#Okn9E y&ekZPT)DoBu 65խI_Pi}u&GTͪT@>=zR xL7$/Y3Y'B^w39US( KGd{,PIwэ&U@ZV+-QҢ]~ƜLNh"EkZBqnִzǺMzqEH@5Ck3 ܨ7L vcc1Jsk€iۓ^=(7e3`| T=A@m( #IRj1 1WF6GESՏpm:Ȣ,dDOU7=;&јB:uř:i` pfBY hDc=6oN*Plju *aϪRsw$uE}ޮ%P}Mu0~j,$̖.d4v!A[s,x}Us_9 t,$1:M|@  \/kQ?&/V:Th*j֚@Y;CAHS5(BT>jc4H\fĒ {h98>I#I'rO:9Hv D?Uz` j(ep##Orb&jX3eh I^uFj¼OiPkZhS`v݇/>Tm&iA $Ĭ0T5 Zp<(CkS4 ȒQP /FF9|IyQ0;Pb}@F' R`s6c`6ls̓ISA/G֯4&8طF6 wOZY*UkCr.0 6rۘ=UjV*%^53V5q#xT+¤|չOPS k@4&?Oee~zoHAc*GFHŽlHSu#LL>H"A.Kch~޽XɅ{zD1"$u1FzOXuّJV%(<R<[Vͦ,o &/o"A+ph?R&-th銝O?hd+Aajq@PQ[T,=o3Ljiq.oֆMfuR?o(*#QGq^@b=]J. ]H0 )]n[µZIȞ@F OVq_$&1>+ƺLU(cF˝[s#QzQv]JJ>>L AQx "<(3Q]@&( H(#b4Y8ЋI7&d1"G j5$8{l-q}aG"79CZ$Ԛg^-A֬n8T5DȠv1IS@ߌ|Ԫx(:{+h =[[h\,H >!0x&T((mQuEЊ㏇WDŽm?(o$-U|7b#icYӟڣoR4 Yf|}8ʣH?=@kH wt,?j:/E\IhЀ*"ߒC~'I DIa@[3\Z/065j XQ[۠\Vwb,o"LJ_{:MQ^᯶BcQ'+|\vdȂaGj@fO V f,xŢLD :"QQ1L8ωVPI;Nѥj$LzxSݸuҶ0x0L40;me- y|[p'V?ަ|A7oxu/բMɹ5a먯^?$Q\OT(V@h]WZ" 4^ׇmybڐ`q/EhjW * $Ii!$|c-LtxUZZɓ+ě=I7k\qL#Bh8<EqϪ) rmQ'ƾ#y}T_U#\(q2E*52C"\/i{f։?EA04EC΋8%s`8抓!Wx9'eӌCpצqۑ3M\Aƒ-:C0I]nxK d?hy[w5֠^&(`HE+ ܠR91>o]}"\?'*EiZV^"@k[HAWAK  ;FcPly|*\nSEA5}`w{E6<2zbGO]V =5)_r>֤,ECE #L+nXNlIfU*HNG䵪{|Xc>џ^?@d!ThyXzI6oFZ×@TE4`MGƠiOۥ-CXS@,(I)9#h6`~ $(6&id2H(fu%PDiӗhB[B$7@:_U+jT/7xը(M˘Yoqr7^'^U4׍>AV8,B80nht@ğZ`6l,5B9kJ1CDun{d\[z :9pX}6ɮ}KHAF4DGPnzU(>\ ?zam{cҊ*65*ȋ=T07nX&~G7fo|`Z4321)kvf,|5xFrW/{U\+skW6JW&$JH |zM ?M_K[q9Si|TS%<֊ mSoA*ENRuAёoc?5}j>H6*X \)sb!S jĐ/MϲF4D1 ߖ^$NbD4\L8v Xu15$POn(H’ 2dkGV+̍= d RFE7$m73oԯ ޖȢq4AXׇ8N:@2uc0EhA&G],  H$h[Za\9TfĞ<~|< hxZHr +(rob2q|wǐnS€4gc^4ܪaa5zAj'zt=̦a'"whb,A؉<5&@&bj)F{|j4m#tC |&OIn~]$2xZ| ͢l8>ÈKEl<g[<~KVG$Hi3F if,tsL`3X~ڢȧPN'7ڢG azߑ ɑD!(IkƎPɌ`m.>M?j LzQgXÍxr1j&Å8"M\XP@l,* AX>5"=ͥUڻzA3Z'$O€iML&dx( 4Sc·lHc MWL (ab#ݢj3sƌX=5AQx,+$󢏨ֱ- #->0"teU.ilMC Fvkpѝ(`Atn iߊnE? Lz#ZjT{GɃ&f->4L@SFPp5hkJA3֭޼~H# As kGh9 .mmPIW^ {@[OZQ=j[?j~YTϮTr/ATI<+MXT~H:$EW?`9 %|$QlyO辪@,K'' M6   Vy\)G҆$ruE_ڿn6kIU F5.t: DP;QD6V4+:{f ٠ceyk[||>aKqS)QEma#Site/images/raytracing/ocean_gd.jpg0100755000000000000000000011004507312342046016337 0ustar rootrootJFIFddDucky<&Adobed *CS'#       ! P1"0@A2#$B!1AQa"q2 0@BRb#r3PC!P0`p @!1AQaq 0P@p` bRCD(eQYTVT6 Tҩi(* j!d!g -D((**ijEH<\!,J0$Z(eQEKP⡀$56E"iRp2\BB(e cRe-CL HHRHAr!$2BQE1` $Z((XH&dጬ!B,ьQY0"((5RN2a P$B kYe +*4@!X1QE&0H'D8J!D@ 4CEee I҆PLa$2QY BH $!`-2^TQE AJ 1Ǖ `"I hcYY `!Y"D!"@CC++(0@*`1`H&"/62TB$DD|٩&* єVTQE0t@L t2@CeP`!"I$B"@vsjj R4EP1 #I "Ƀ@H%"$ hX'HIc(tCe ʆB$dI"&@*EE Sl$jEM! e"iFPgC(کI"$@ &KPDҤT".,*H  m0EDډ#@!RE:⚢c \e El543HЬ~Yo=MyP!LhBD"ERL*"I#D,2*I2*4m?g7[!r9u_|Ӌ QY$!T1 PK2+A35$1CqhȨIрSfѠL7ˮ^g\i b!.$RM)j$TCIj(AoU-h%o5'xȱ!D@E%@D@9&EdN:|[ߠޝ+[62ƊXL?71|"nPcC0r_/G?SZ-4Y(4c|J )P# 8tT*C#pQ(Nu#;G'O\gǺF3\/=|~^,ɍ#8|\[PT0CS% @i`0 w>&/s>K_S:u_r^K9-1Ŭr}Ϯv1`(T!HTɪCNT:sFc:}=>w3?"F$c&y5o|M\M*p4 Ї N(* 22ߠtkhSfJ˂I"ə͜ynrxљBW UHB1DAHԔ!&TF,?\=ۢ٢fu*LIY2e0hJUT@MNUDE8dԩ@Q4HpbJ 9>3Yl ,4Ig4/|;>v& $uJ$C"7Y40QFKor̢ȠZe(4V$hvT>!R&T{`STb(B/I9s|5-JD͡XQRAh] קIN & !AVѝCh!Ҋ8Uq|+5-Q4I#f2t}0$TPTDkRjDjHNAUQN1X m=Y !ӅS" *GcKEǫ~t& 2JWBcA m5 iWApSUq"W/{eΰ\є#DdΞ~[ (c&zU@iQTT QFE VF>oO/=KUPd(v.9i]*b3 CN⎁TD=LUXi,Hp` 'z2׋ <}6]wox#:7N}ۿ}/_Jy3 cZuEYo\ettVupkkAT8ʴe˯/ߎY\vdkyXt\γYwuxiN49k3PV\MfmgZXB,ζTQ8y'/GV5VSQfi-fo}|w3Den$΢"H*1:Rӫ%&ȫ' (z݌2EyfΖ&U**;c|4%z⢢*fM:,=hL(4F}*63ʆk@ -2o<\}OwOgO-턽3tEs4G\}>wQk4)QT.$™4!\Z#L3ңLl4Ζ{f3Ǐ?Fs.d\/]uן|ߋz秕Ǥp*,6dUDP2L\iUȤu\\'J2κ<\:^{y7;X9:x99zη=]L踨,ã|2ю#MpmƘtoTZ*C2JEmƙ&gEc^7uc^G<|<|r|jUtXrb9iuFtTM8 Xiy8=Ѯޏ$pkg?&;$3Mp-Uȩʣ-+|:򊈬:y2nLp0~nW/?ҍ^SXr5_ny//>o_VsԺzyQAye"h4l#L:yTg.E@8Uymg^LJsk_+k_+럫ncMt|kg~wsNv:yTsu#~Ы\$I?dӟ\?$$OϢnI$$$OI$ $I$pAI$"I'$L1#$##"I$I$IY$ȟDGI$I$2DI$I$I$I'fffddddffddO0A~dI$I&FFFFFDI$όI$ȟƑc XuȒI'233322322'S&FFffffffhȒI$NěR11KU2dTI&LI,u1f L>T$LaXL3fl̥mbhu/2t: FH$t%S_GC}OĂ dK22$tH},emI;;2L;3MϹ 6H LQ""00f6"ܛ3-{ kY^$I友O^>.dffes+\c/'B8M2gSIUxŎō6$OEa޸\##$A1 u:%şX]l_#bJ삞cF-ص$Rd zy:s :Qti4WA"1F`Qń+2;̵xȳ,t="+V%ѮD?̯>TpDB*2TZ}XVh#4eQG&dɳH )""dYXu\*u ~ASmZ U׬}WWNgԶx_ij3$I&FlȒILk?UBGZCƺuˈbcV8]HWpBK|S,d% [?>Kc(! 6cFYҢ,lG:DuP58|YA>WJ B$_‘(:Bbh9gQBSQ ş'V9u>Rtc*aUj+[3膟8H:^c,unK$4-zb}lѴ^J|#V"+ݚ$(:XfE *2@OrGF4}.Zd%#|EұjU[+BeBEgoH (Y9!aAd}6e5z9T ?KDvղ)=j2;AZRžquI1&SRմVx"lb1#|^n y+a=[~ڵ^J;ՇFSUlv[`^fݪW5] x]lUa2;K]kԓFD/Lhn>VUXlvuph}GdV<.Fàu!RKk]ڕGvEv諾ýĭ|ZMq^{*}kSծB| YG[WH$GxjIxN4%RF[6`ذyXKZj/h:"$UN΅BӪvڮӾf{lW/|5SȨ[4kr6+OBN[Yӵlttb,Mƪ`)O_d*J8ID} .>;{<uwmU}NʻEl"ljo׶xJ6I4ڞEUBR5c՘!P"Qe]LUQ]bDm3TM%R-D)n1eh{ݫlwЮT^Nb/cWi|[(urCJ[{dᶂ>B2h4gRjMw)chƬ: jwn>;hJdfv-IDj5Vm[ۮG݅+]wiJyV\Mt}k`i| XmoQX[*ۺQ3Y[R+FUhֈ0ƠX2 T}%U۶Q]MAKl횼gb;j)*z+35JJFfUfUo~umW~ZӷWt药]w{-in{0{ mVWgr251]GrX2eSFL(b|;VLtC^tBꇶvc^8͝{#(VȴK xQZϡu63.HWO{ʺ]+Hx|y5w-VLڇڰgb[hVG %gmqяEEX+pESuFhTlZ.W[Og}ivjw1¯Rv׬~j5Kwi~}S_57͊us7MwTScbγ[&5EYBGR>շ~>}uM+>7.{[_Z~>=h~j?WdUϵ$Zc#g9ĬvqGmvgl혐G1g?&|~:'G_.1 I,*,*ؒIϮ}$8I?4O!C\A<\Ϧ$w2HOñ(Ȓ  #cĘN&_葋An)S.z'r$^=?=C^Z;PKȵM^<~7Y6hrѣ>]2i~C{[f[iMՕz/ύ+r5!zVx7QUAWo^/n?6|{V?6|{W~ڴ>Zp's-{m)WblX=ëe)^$[=Kӟ2ZK{]Hrfgp33'鑱]QjȪП1H c@׵jeVK7핂1>KWjZV&П$'hɍȪY{b ˴}Fr0+XGD;R?kZؕ3hY>ecUnVfVd[T0C+:wbl;}-Kűb/@{3YG`epL?}vȗr"DutlvfL2dɓ}3'ڙ;$Hv>jIIsd$OqE-e+d-dPeog7g/wn-Nڜ ٕjy|NF̽PXy.'1cdqqH@!c^KFF>v=g6Fcj"d~;݅GO0>jCxH)fgn Ľq?y&D$G{!C꼩c?iwUQlj13FY^cAE4L2Rnža&<>1fV#$"?ܫ^I#& ɝdA9'_3w|Jp"̓RVxG\Ob2")%1Si!'O18J#ė?mHNНQQrjL3:{ 2B(M*Fb=+ w~,5H/X|q[zxDjބ%B=8̊PKw)G_OSUYZEl܈0BigJN`$o(M?ֱ^(+M UUu.M!ۼ St*Elt֝#71AUUcjZKrQIT)d1Onӫ0LO70:yԣRÐNjnWyM̌|H!5Agf1 M6$(+^颩p&5w~S$A* ENl=it\eӚUT6-+#OtbHn :ѧ:TIjO_r{}ޚHWʤb*Ƒ?j9Rɺ R \FS$(QgSLMIh~32[Zf0Tj*X~Uթ)]Gf=VSy5B-RK&Jn<گxjosHi&5ti~Z(JsMKr2Hi25*YHCw3ΦMUHRdֆED!SȊ1BGISSD?dDM^}J 舔Y)ck楥iCB>>)O46EU5d}tBJd3&l&}DjH*zHCƣ)L}JtH"&et'IB'݇`u"^'Hy}kW nOHhE H"͙ԧjU3![?+Hګ5t ~Sz-+67U֤(>uDIC*ɓbu%:hl&.[e-H5M6BɘF(BȡFGZәE@VRv> Tni12 EΒ[6Ԝ ;?56HCH32UvYM4?]̪'Zp?_JM?ޝ\Dh0"\N+)5 sp>ZV6E.D+tKMR%hITiB$T؅m+bBiHJ0W&nש*.XtfďbNȪS~Q~Lb5^b^tfCԍP;Y.ĈGBFTq4 "MUH'bD'f̅P4ZkJf-Mͨ2F:jNF^Uԝ+e( E ;@܌@ȅNoڭlMFL!lcڊ*j՝kNkKqShOXmEUO47S"zjۖ7+C'iCM4SY[#!Al F`F=vd܎WQ)TMKJ-W+Wj"6$G}Or^A|N&UcB>R$ּU配PZB6R$I$|(JJu;]"ntr4+%?O2OjT[L8INTрjkT՗FDHAӝ&mR=!؍1H`W(nX3i)}-^$i)EE[R ⣥L/Āob$/HۏfFgc'fhG;Dw*}J܎`>Ljk͈EEt4U"~J`/yNc#c"C@f#QB>+k`GHާySr:M*2Alz#HҰ. l^Tfj]uTkEFw~mx#(UFTesrD*t?!W˗. r._E,^rŗ.\=w rbŋ\]=/Xŗ`'˗. p`˗.z,Xeߪ\r˗_K0`z>\0`/ŋ,XKܾ˗/0`.\0`Xbŋ.__K}/rE\0`_[,X˗}.\Y}._>0e. 0`˗.,X\r˃qe}._r._@K. E˗.\X_az.\rr/A.\Xŋ._Ct~._K!rz/  Ѹ2_K,X˗.\@}L p} I\ܹrcP@\Xŋ˗.\Mu[U+$%˗Թpe˗ьc=/U.,YrHe+H }% J]qu.\bŗ鮷/ҐtdbFXeS0pX/M=3:E.\X}/R!$uuUG+ŗ0zV,ܿE gH:mD} G*gbYEvQ~rW=4Z2.bCX_I:VVR/0:D;D2봽FtZ[ix56CNy"%xyLu+"Q gA@!Ңt RYlHTx:T ;%JXv'..]'He81E{Gt0/!1{CwݘnA7R)'=t-. X-4vOli^Ov߼ap|?T) [uY`)o{>apeLb[{Fx]=ON 4ޔov _SlS61?Ϭ^?-<?t5abqn<#jUs54{Ƴ*H-k0i_S:3ْs\Ǚ9>wkmp-FhFbn6L"moR5S] tGr?*h;ݜrz?opϦ=ͳ|$V_mqgX8}:OJ:`s.e0})iZV't<' 5Ks?t[/1isB8&PE4yrU %ZpR8k?IzY.^m, 3=y Xk">Vq[!y3QU{Ġ0{8+߽@7i&,hɊc-ߟP6t_V4AIG2өt_EαUJߢJCCFl&X-4JHCOe.M%=`<+>sS27 ʖ߱)bu$vSglsW+3WSomg,ܲv߆91mxՈmj|AV| ޘ{,.toWT[B\>?Zv*Қ{U/fle3*WD2Jgi_YPĮ5*YTS>4FReˍIf n@ܛ̜b҈=ˆ)jf+*+Dl~4}W&TsV|<>GϥvNˎ8k'58`1`CyT459:eW,u~n]ˤh(|~쏭19yZ(w+^5+f!t5S+_:`K{ycO̩b{†:~K5X};)9ạkTL^ŗ~R>Ƶ-PSFrj8"V5[j}x2psO, ^K>m|(DruL%B숥ScsIcZvDͫcV^P+}뼭^1f/}kBTTR@|b cU7M^2<>*?yˇ8[]}nhc4lr'tnh?8 ]pJb݊Pǽ}2?9)Q}> FPor6KM?Or %{-GȗN-_(ufzo(p`cw %ï.}3c|PkYy2֫<0`k=VG"Z$uJ>FyG-M8fư.û8|#A{fqC/| {)3x(.kT$~?i?P+c{&6j}j4IHMUِG̻iܿS+ʱUi,NS'9Cm{ݗR )'9(rge{^ĵo̢QT7}Y\bQn}U׼AlN\@9w?r19Í 4݈OrP.B0]p*Ry^SjǼdm egύRevCvpԫR _²k;a}&3= _ |iG+(oݗ-djTѮ>35?w;"nnW~,okiu8e٧~&<fH7D}m,NkGhMpvw[|JaȻŬ>>8aIW/;+̂]bcrPoZl"}6o):J~w-@~r(B_OEs Chk5.K22NX%0EVn#)mE-zbv3^ٛ [%-cf(}bsS5KԴ^h)C-ݸ vѨaw>AB5KޥN3ShdW˙(#jWŹ 3 ޮ'5b֊Bʽ^eOlBNڃn1UUgr.8_( hx=W*T_ƩV*R)я44[d10_yA9%@*NUjd[ _y[UAayijJNC>%ZJ| j}ŇSx{Vc sN`2dzu0&;BgXl~F;Qǘ~L \2sŇOa5 vT~?xW;cieH?/W\y =H/O̲ D#&O.#[Xk -Vx^j |>CrF_."_!yi1,uzM{+Ό2Ǜ c9 t;3*klw52 lA޻?VLhTڿ *f"Qw+.hih V(/k),^%3z.[ | @dRM q@#|1k0>e<)n]nSk;Ùg]ؚn#jc͏,_kh_uL1W+Y Bme}>c}RMQ*)%fNsp,4m/e=q g4V4J,͉׳Jg'&;#&L wvtsu\Sv_5 "0 t]{p,7 n&Jn8&|BWP|Vm46k^Rոx$uqtA(IcnF16ۚ(4+(,ԣXXܙbLN6ʔf EVU,PVؚ/RbV70udiI|̺¡6i\K+#$&rd 1W#̌>HBW#iyb] :r5w=ƍ%/- w h/Zy¦Kyv<Ռݘݭ xJN8~VK@i5W*۽5cdbC0X\VT3fnv+!(1th F٧vۉNux^7#<@._CL$CʧgI~5qUJ2Zߙ'dMQ*`K@`3%̐!koi V "tGM{&;̐Én$sc7C}j%J%(Z1&{[YP%+,ԘX̠0BvHa#*m=t#D5[3Pp*0MmikdJmJJ:[)3ˌL 8%i,i$iMk$X4Yj~#p[56O)%^.1l D/Ww ĩk$vm4iPԿcnoOx0Ѩx!m 2&5rg O)h"+(",w'T7Z]im1՘ 9x3ҏ-Vrq"5hrMSwW*?.>uŵjBCjۼ>@Ln«#m"J0+|TvB5"Ne禌Rbe c1FeuҒ#yA1Ləķh3ę~a% XLSOo4)qX1:+b"(m J;\=Ms)M"+3kMݴFGR7U8{M]=Mv KŌBJ\1bCA1DC$WLެ8<@?D*N |\NXYLDFz&F /He-蘼 @*YgX6;q|1sSU z"\Eߦ"\#d ҳ*kr>t&l- d5%N?!6˗5n\ݮ\]+._[tErr*TRJ+/z*W辷d;!1=5*TүU~J+_ZuRtR)ah_K[._KܹrU+RJ`)Wa_KrJ*Wߢ['S*çJ_Rur.\._K˗._ZRòo~RJ]~TЁ*zn_~J %D)(JJ DRRuOHFGOdBRRRQ)(t0RGEtQҽA2JP}Gu:H+F0_BjGҡ*_ONM˗=%STzΕ*T:Y]/PǏ ֺT}5J鮺%u=>HezkåtN.ֽ%u!]+u%uU~Y+J%tWBuNNWVMzWaүѿ=5EDzJ+zjzkJ`&OJJ^>t˕+}Cn,+k^ԍR'+pz=+AWb*WJ]/^Př*5a?Ue+R']*TD]s/ŘzK Ծ%*h[”>UHf}w7{JmD1nr:A)t;¶RѿBʕ./L˕sTXuH\An㬀FH:>m˘J/@ҽe rs2ʏP3f[yxzj\}#)`™/b'ޘC}+г=B$qķJ3+0fpJԉEЕV[:$Et3._KЌBʄ8ҺTtR[hħF6Ma5*%D! DJ1+Eʗd˕(襁+T.&\4E\Н*Q{K#%neNZ鎇.WBFsFm] iхq:Zk`ba-\LrK"ܾT/1iGA#B@ZYQvbbqS1[ k-2FT M@ RTNWB,b) 3p]9L@&U!Bhtr} .*0:+c.\^^f%ʒ"HC Q! ЕDjQDeA.,Bt1`Fj\LBirq}PEz_GB.TP#c^w@m31h)X0zz'UK*=?!f?ehUAn1vg~kBs`E.\3<# :>Z?r^$Iw'*WSJn1!+F10[}/~r_[3dQ+e3ܹ}n\r˗/Q?J.=.1F`kR`OCьkqc8\}.\}%˗辏U?kX]qzg^2˗r˗.,z\l5ט=/rqe=~r[._[qe .\.\r˗4W/˗.\r˗/p`5W'Ĺr˗.\~C]xCpJ|@=}jiD3(k--UerA61%DQ*4GUuoiDkM/g'GRRW@jJmI+&ŚgRU*WA4FNS2Q:Ԯ+jlwTOס֬ 7ֿD PӥBj@tGu} [R&g`@tq(oH}_i:lADCB#f1Vx6uB!t'AJߧ*  _SŜVm`hI6m߶_lHmyn#lK7'm$K}m}ۭ׾K6#M&M'lnK?fi߶m7$M[5"YdM%&kf@֝M4i4o}`ohO&im$oo$o`6ɶKmtMm$!aI۽id}$}$Ym}|m=y.b;Im%iMI$[MgKI%IiI4{mnYeI~ӕm"ov$gM&nI$I$bl'onmKTM*[4M-nm+fM&IVO&mM$mm4hSМo&m4I$IIW(͖>Iim{5$)~I|/Y?,IІv_g^Mb7}oߝ^6ouo<٧>452뷶mfoey=5:o;I0k6րXwb@tӭnmC@H Im I[F~@ɴ?ϣo$,Ie '`Dwvw-6IiW<qm4,d`{3~i]QBI ˡp̡)4q6MfklEKv:w-%#_IOM]uѭmKMYĆZy4˦M,l"eotMYIdH%Pv!-$mtm.I-9Z*%;;k65m~I H֖ޞ`\ $i>iMVkrk&iI]&K$yo iWM6MvIm\ɤ]H,PHMuy{M6MJ;km$Kg=?IMĹ5ˤj* miMDMkd]Z&l|y4MZɾI/b| &MmdM$Y7j/?Ʉ?-<7u< -a'p pn_/xhs\Ś-Ƒn\_A=4t\iHin3b+X( --% Kaw&fffgr!43/=.053,53537%EAw.-u. b̓i7""ћ60B˖zo/je۠)0k]!M%*rtjn1nn3S2̳qG:`-.x4c4,bs(.@}4kߤ=nC3C0xZQd_Qq̳,-}أzV:M"vK:`R,w K*AQ*'q8C'сBF.-o0L5Ƙ#2=Zg|[">1oB> y}Ĝ+\ @Mu0WXlA%cN+t-xDIbgrGD%%6úrw'r-[E1yVX32bY+d'=usV-DIZLw hH8Äzיoalj}|i;%3LZJE2kQl- T$Q;ӽ-R1}FfrAglJ3Rl̬6`|wbӠ5qDaW*o. ޘaMtchcLe,\-t zE{t;bF FѧBX 0iq.Fj4|wxu;gG1lV,Elo1j-u &N%LGW0#jfl`Ÿ=6xECf!"5IAh"l)QXHԍw:BC >b_FxqBQhSq$؉7goҢ0k0 1 7ٌ:BEes[uۃZ)̲yO8g36<6ƙ,8AH$M67r5XK;.k h›ĜJ&0j9ZNDk/)DX c[ )@qbDIC. j06!n&~7JQ 0+/Ѭko50[˻]ؽ]eY@uiڏ$^z$CV$vSD4Y彣<#x_rbMjG7(9D$!v X>mm4e&.=,YgQk V-/EŠ7ЂEb\i* 2BZiN۰Zl!m+$ -u諼Gx[ԇߢp3wgɞT7wP`C'9Q۱MS+N3Y&^b3MLtNUGG:ppɠ| ?\$9ߤٿH^}-Anhkh }C@ꝪPH}BMysꝲx~H}UpGC xm` X(4vAjW&Pb Rfwb1盧3NﰁmV4W0RƯoiE|Ujef|PAe`dW'"z |>|'4^mT  CDn)oh?п8>. 8ù)G G-prHYCṃwoQŬڄW u.ݛǖbjZE'@ 혼.ȷ,'Q߷n5ԃ2ɮ?$5Z> w.׏]e{{ k٘_0s0AM*BA  }ĕM?b D-9cm{6_f LİY=߂Z֣LSݻpH+>w_us{_̲d?+d? WAbZ#ivavtε,an+fi,F^XTZH)!0gulajᄈ Xq&g SA=X hx &ZRHZƱf䡿.4w7XFҹEb՜lZQE7vK wn &i(L.z LS5טW6*i>*^o,6J+&}_MhLtb QգdUJҶW0L4Sm"(]vҚvϘ]ht[VK \(EeBE"UrqP4sN2L kTݖ%㻈 ,l.4dҍ`ࣼ90JU9y`5y6/r/5,ʮ6xk(sTB4^ѶвPc,` ԾAuiLP:e͐m aAҮHx1WJnB\1U[(nkhh5-Ѯ׭P2ZhY% Ԡ.<%czq( Ѣtm]Z-QDg8&Ӽ]B%8X.֮})|JMZɣYYWM"Ou=gi"X\i5>kiw7)UfZ%lPȘ[#:kP/n5c%U,}-+2\c:_z ("5upjJj*ùNf (;٦˖k .^c Μ[ e*7N[!m60era ~VU9dM5.F%,:6X;P^|M'0Crc+/) _ fFJw@ 1S劫*:4]k7;Eϒ,2Xr;*qerSb+M`w-͠lJ %M{4mqcS X9k 5{P|ۘt GJ­~jPfKMw@S!^bih) ЉlF0Lk(v2DjQO]CA_Vg+Jdn(g݊27NӮbGw?!lFo7CVe=(/OJGmI];b-fp3p4Y)G';QPב2 QPvTlь-بba"ڬe\epXS";6.Y?Mq/5@VLKαDNM5%o1,,F=>)Dۼ*sp-ʚVsL᷵b/(t .Q8iĢ)[U"9\j~c\m[?iSFk&&7lZgvpeVj\or 60SEtáaZ/pDMVl=|W> te!kWk*ULvHXwM[|܇RHΰгsbژ"PAPz#K-Xr\$t`!Jd4>b4ZQDa {TD([ه"]КjgCTo`.gfM`%ەwH =z)m]O;= y%\\MR0Mi{LjJ.ytׂ'oVpn+rJ0 Xns)v{|CM_uqy0n76LC3@@lnyVyҿ RYCw$'XIFp q3<%G-GHaP:#*~`Mܚ5yM?HęG$GdJR Gl"-hL048X~J>ba3&YAfV/+^ExqɼN *[F#UIY4Hq)l&{Dzd8gu h UGS|̍(э|8VqVʌx2׻qDJZ }f@PL8pqL!rn1J@0;Em4p~kF!ܭ=[Zd.Vi)ۣ\Ce^e qd1eZ4hm#peW[wk3RfSp.,9!Uhd\8e(>^aΩ"tJ/_XXM_&2|Ȇ- }c#cdhmbO U9:e ƞQne'Vj%E8p| !6aEeOӈQZ| QՖbR}/hHʂYJc9?X+QB@|aM0 ]ZPeoaY1 , ܀YURYȳlTUx1! 9©]̦\GHWh { >@|bG$SX#j/`"$|RFVZ<2VU3iƆ4PbiΛCy/Dr> MQq܆9k9[)⠷/I)<5pΪg%CJL o{=~9HWaUq|~j]s3[[?p1xD?d-U|4[>/U8lDt@Y _Hǥ/~XI"=V~ڨEV>S1onLgUWP͕+Έbb;cQCZ_tZ үL@p=403JiSuhdt{)es8h&N!,DZps e<˂j'dVù[ح_m1؎llWz3_f jk4{X]WZpxsPE꨻H^K+-rL0l#atLC1ĺB εx*eq\6Vq_>KU{P~ Æ>x-j~T8ECm-"gځ􌒶y4&;1z~0j}R-Ep& +8S>Q;O md W*%mJPnг0^j´ u0+|Z]GPF%-o| s? (>U$étaPfTu(Z BPٿ`.X azmDD *8\R7)x4)^Cm@Ka]Zb+z;ܖvORS%uEfe6*:ӈ6n},Y(0YiaQ#a.6||¼W_]R]΄]^)X;_KFn,94Jۆߒsl Z@fr"W3 Q nȃM0ϸ~roaX@r@p{{Y8uTs`!fe ֕=9Hf DWn{Y`IyU Х#&9Awkuޔ9f{jT4V>Wpobp0p;ҤA;@Tv I}2=2T6i_V* } F\MYv6K!q]Uj@p[iyF0^JHdSPh ww&+C0n/a1M:Zj-,ƨ8/ ƙl-?)WQwP:薜$Uu jRDŬOwP*}xK| agЂd.[ 6Ip=M%FG}P?!-Ф9`"6ClV`ã}^14;ѕc66Gp\eo"]ƃc4h0>%GbDsn >bU{LCjio &OXjUACHf)T"RNMKA*w$-*Ә`Ym,j%(qOD:.%z0eT[Z&cA#OXs>2!7 1o;Ej5ah9Dk5Bҿ/ t5xoȂ,N}"DyK3rvA11ɉYBit>,Dm KpA/;o)ukz} Pfa}2}= S6 bҘ1@v3' Aocv|ø充;_155{s{F_ŒWX>TLkUTGhk=߁ei%ʎh*F\{QFf\9Fs҆Fbs <5)' _5>.#5Bf8ZwK`)͝e;䉍-r@Jb1.{\>RSKO-̨azloxVң a+ԓ#Y{{LBÄrɳeF CU|]}pMSz>T8:U6`aVDGԵ0ŸW^Z[2:鍲˘p)bb#aY?ZP0CL\RSbT]tl:"jS0D9dًu `Ys6%d<4YX2ڣkvhVp$P(Ji@xΑ#h1XT Dm6kKࢦ(z\,bcao,L 6K5.~H_ՅePУM] ax6c$%G*'`(,n| 5h.aC`l1Ej}I7ĪJrӠ el; 0` XU1G %KV;3 n>&It9dzFxZbvJ.ɚVTkٕu uc"d[L6]:`d H1x̀<)")fIJ[dpv ? <+3VRp.ro3!o0k6D1F9$ SU;Zn#L*%s*n}?gEa70lD7A<F!b[1JŨs^-&CٖeΌ˲٧m>\Z_x` Vҿ͘?gGw*,jw+е{eCD6+rkB5f|40D:3`.RT*MX+FP6:U㲫q*4;TÛd^XSHiL47$8h{mhФ#_ٗr0(Ѝ!n":xbkS@)f>)u"8 Ve[O1<@yzKX ÇPZ]RP>CcE>y!P$xf-_*WuiVdQE%ٗ JXy2ְMk\/O.q;$"1pc\>%@>b̖׷3䞢B*jf@41h! 'IX >-4$2!fbz|xV|KR*,j^rL0a؜}mB7uq|JhW~@.M&k1_#Ki5\\4/2 GFSkk7xH(^v+-b4hr+>=«bbqxR9LZ"BFmcC+B(v \*4&,hGjvC &]l}n(b:xYniI>mt7j[o054'hX0jqZW0N;yA^Q*b8N0-i67 *[=mw\F:ۀjv@kN `42:f 3qԍ U.GPVŮxcWѓG#`rh^d4ȣ/ߊJhQItu[ih"/ܺ2.z]4y֕!ZFpګ18mM?h>!D-C \3E"Vh]公`Vh9fre!fU״7Q(6y;Gvk]jw CbnV/~cM _b˃݈ BZa Kh`3QF(5DŽ|ˈ0R.Uy{Y: {e4s qcjȃ嘷ujJ \+R\o l[G` Q^⺸Ę"@LoO$]ŒbQP;EB+8T3BncCxliK.bp$%`S;SL(얮^ٳ_*ӕ@Q-d[s<֛LMfw60SOfHQU+U66K,@n誱qΞ] -WI t0j߻s %ʨLW32Wܛ^ܷRլ 苅].d6WwAue)(0QR~(Z(pJ)(WpnԀZ0 u@יQь0$ âH ιlISk/ǼFG4EfmGEV/a@}0 y\DY*.,@Te gij@Ιcb9WB<#:_)|1ǹ6,Le'BoiAJU#tn-hy5` Ji|1H֔5-*+iC .S˹gU!Ot E_v .IqSٹeoYo%)akkM alJ;IbfZ0_0LYŒnCTƒָf'u%mi,k\ zQJs'^qrƭD\M1kQ M\Z`^H٧-'tƇ-jeQ/s!c.RG jpMbW ,kl lH6|Ŧ086!j)̠{\W{Ev%I|0* J)nt2$`K8/ Q# +X+qJ=ECHX#h0:AzBE&=BHwԩ}e+Hr~! ^@KB@EG7K_0 ʠri4SoEfk {t r@ F ߵ\:ܿB%>稹r ~_E~\X/@ WN_8B/˗ qZa:.\ Yl'&: o?mSyu/@r*|cb$).\ ˤD_QVxKUbdi.\A׈m."?_cӎj ;:6nVf}A6iU;?Xf rסY32n+y 6F&f܄Q: lZf}|ϯDMk&i~JM&sL=s^?U1dmN&e>ޕO+/俈 {JNVVL25̑+gin2[zdKSW8c ?WfҘf$L2`h̲ԕ ygmU9̧  "jEPQKʰq5J%~ɺMpAE5MtsA%`?^-caIHS ͢%QF%Iy(=u{DԹ&CYfTB^]~ϠciupE{>N?(-BQb6𲍭״tLt/}&P}tB03.=e,b㈃xfEdD),Vlv1WU*.`\pMAٜA91eZj?؝.x&<_y ]Pz.3db/BqTΣ7UF/1bq^ѻט-t9el.^'f&xKA_0:|15t6'.*Site/images/raytracing/TN_metal.JPG0100755000000000000000000000525507311366262016156 0ustar rootrootJFIFC   ")$+*($''-2@7-0=0''8L9=CEHIH+6OUNFT@GHEC !!E.'.EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE`" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?ZmjG8)67B^%}c@:z+6HpT}+zuz4KC{XRybC&  'U_I/u!e(ǁ Ẕ(*.OrO"F1<tU*xa̹֬q+Ju -J6D q]*l$8 wQPNO4UeRr3FiU;óFi͜s5j'Xxb ,QyႰF6 v)#Ew[#Ue$#7%/z/T!sW4$ѳhՋG*qsQodmIo#}:ȭvĻco\xGnEE4yz+0$~f _ =^:徇`2 C/F8QrNZ98a ~j$i))d uԁ4d.QՀRDf5=xMlǥB6wO"++6ƭAHIYJ*Jez^]w)D]]̗VP;#v0)w^F2`x)NnWND{}+.Iq|~xKY;.8gJ$%iZhmaبSI,'գb?{֨b6zPz{QU .+/.w, =+kOYouaUhlfϩkN,zsԛc:q5!SƼ=a Dx&B'ȑcVRY'w4i =nQ3FU#;pv/,0[4έǑRq񓎹W?ql-_I0DpyMAԕ!h"O<ݘ24m`pqn%b{$7[B'HWXȄ,p$sz)I!db>b Q**ry\F?j&vxTHЙDlIZ%>SO5v?!`T  o\:OC``B{/:ΕФp &Rp)ҧ9❘YybCI8 #$Tӕ6I {\*VD*S`V\H<FmGJnV@OwXuR޸eI,@Էk\$Ѡ"Nx1`ycҬD90( 3Tp?UЋC}?ʝȇwfYFI|`\r>[CaI[(+$*{K<; QV(8́#$DqOqgEhфdAjq֤6>\Ѳad'_I XuB{j9vz81Ҩ ksG0iXIˊVh.j@:vp`?Ցe{r*֗rJbC⑲٭J3piᓕ݁Ԃ0Whg"D|bS-?[M]!2+/>=kE`|ģVx;9m@s(TYC ,FdF^>F᥵,F!gn#UwHiY1p9p*$wfסvq H+.c>]SCڢXիȁ > އ9PB= DP6hX)+Q涝5W(>^9ԐHIg ˳;|xz@SnVX˕)-E˭.=\mgj;`!-9=jGT /\gUO~ߨM6:$1/~vR#G1sx^7fݝxǽC3TkH֧r7-yt$@㚑myʎY`ffI+DL9+P3r"ͫ;U~2]'#Oy)#4ljR:sfWkO!r+Site/images/raytracing/TN_ocean.JPG0100755000000000000000000000374607311366262016144 0ustar rootrootJFIFC   ")$+*($''-2@7-0=0''8L9=CEHIH+6OUNFT@GHEC !!E.'.EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE`" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?fIk lPB*2IV#ARJW⩤/#%G$\˓Z$"zzTWLI,n2TJNTe%4@DteUQ^L/cn&Kwu=I{SxEI zkL©05ZS!f;Vn99%\HITiΪykvu\]}< /k#PPYAia܊.Zit*6zW4{SytlRaXY֔]ʇUl4X+xJ flbaYfVUe]zm[PҜVL ɤMss6$^}kN2pxS4)҂t[R$r.o<۱g!f[q:QʛY)ӭ*psiMQ5^){X)#+tj82Ϝ[hBhVĸeP8A=>j9XiD<*8EҺ )3ڜ-88Eϭ>P){T9~^k\B=*;YN=MZ]QBR$t]8֣hX.qGbF}7%7~ 3 4^OJz=(frW@7g&MOgƬ_ϊppjxV>xÓӥNԎ"SLX*EJavǑ 9=3R*=; zֺ #S8>*Sc~ri\uepÐqESqj2skj:M3*QEɻ]iD2;^ҳcLWvg$6B__`޳'LT1X28E0Z@``R%ob,I9?Jua 3 *qȯZbTqCf2;ٟW#G go3c,j=9?Z-$ ̪=$֘I3$%#t#g? lV;XR`9+:e?J]ȕKhA$ܠc4}I<9# LيLdrawRZp]Hd 1sՙCvdu zkD d݌fz_XnrLp~@Site/images/raytracing/TN_sphere_cubeT.JPG0100755000000000000000000000525707311366262017466 0ustar rootrootJFIFC   ")$+*($''-2@7-0=0''8L9=CEHIH+6OUNFT@GHEC !!E.'.EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE`" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?qz40\#nuݗ4lVsP{ił$Cq;ZkjJNY8)+w –Ɯ# F3 <%ה͞G5ʌIZ3jA"AB T O/ivWp^rkR){&7*g9C |%IT4hegh^|9)aFS%!pxS7Wej\ўϱTٽ֖*gqy\~V'WV$] gw98,*(TՂXW׽Tьuw.ɧF*^{ k,zj֡iO,m3gi9ִPRQ+Q*JI$GYiȪʮ"i篔Z4ʦVc\[KĊ{/oMQE[GHvt198UK+ Z$`rk[]QP#ջ{#a/FcQ)wmާT+RRkb*cDfOZYdw3ժ)\\F?3v4VO~9O;pzi6zjZ{z~!1OzrBq=i%xb '2w2`:p)/~c+VCA*j^*ơEqqm#$}zpJ[?IOCծ2KvE@.=#`lY qq2:%N)-Kɭ@j,*;y4Y#xFjD9j}RҠܱ6(ϧpTk%^Z'ҡz=m4,߱GY'$J$;U+?7O0y:h5;9m8iYie+7E{l2QǟRm"1mGӥcThۆ;1r:5{:}Y@p2} Պ-ą;-1+3I23hHޙ=[X4'P0R❊$?&ƣqm7~XV5$l*rKB fy8qV)í(r;ҜU>P -5͔cCMvb0z RVmjhiֱz-тdcNT/d ֔ICY(bj^횘"ȭaUǛ>ڼJG8M&2x][M4ⓕfVJIX=Hyg][ZMq,caӚ䮬žiBdlT]ܒЦy4d|q<Ա:8b 9ϳWǰq`41K< z@}\ @1Jȧ'7ScWF~9쿝`~th+>69@Wцi$ON??>qgJl'8ʯJ|V=Ċ>^5|1im-1i8?zj6Վ 7B6e#BG(oJ)67GNCW˃OIa T\#8B;S~U[ϫqO_:@Lh#_P)s2s!,ٺDƭB,E >=²YKm$l/] k38DpКt;J@sɭIbUR}*``7RD*\[nTcU)810劂k2o.&*V("blsz}.(RQVņ%8"0Ev}ᤋq\ZOgМ褮mI;zӼuUXf91z^sq Ej̢DcTgb>PMXK:Q)*˩|Dz U#0 S *yѫ%Эbթ7t 9#/\ڦRKV\)fsw+,cc pMt,C*8\m13b^6UCTU=HDyZm&f~c7Zki6c>Ry񑜐Ue2-Gzm=k?S.d[@V& oQiͷb;g tP'2G*BϙgSV&TG|{+Q^V Wzg %'VNc 5Zѱ(4>2v.ner9&*Ʈ&R!VN9zJlO֢Vb3j@Xr~:*ȃ ;GOZrw5{V$SD/~S9$uV&3ʑ՜O͊u6",0?bQls]PROBD6=J ~ITw$ۗR(2rޜ/GjY[5["/lLQvq&B$Ǩ*SSite/images/raytracing/TN_verre.JPG0100755000000000000000000000632407311366262016175 0ustar rootrootJFIFC   ")$+*($''-2@7-0=0''8L9=CEHIH+6OUNFT@GHEC !!E.'.EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE`" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?*( ( (Z i7^zP.qLfaѮǻ=x㇔DoiAnEW5B}U׎冒Q3 5ǒJXJ.:2ӸQE# ( +OrrΌ+Sp~t؛چXz˃VP#XO4]>\4 -q= }ꎫAg27I%O?j%Y͸*ih;Ii6O>מk Ua9%_PkWL&+Jt zع1_ٛ9qBZʭiN#_q֒\uɌysf*55ߖ2A@5J5j NXa4ɹ*ȻjX褌Jaے? F#uw$0ݻ ⴍ37Q_AL[OΙ{$#Eې=x?׆4Rǎz԰ܐ.y1ޛ+WY8=jK?βnb{ 13X5f1) 䌮;Xn2m+\D^J?z(GJ;#5J͞?>'bS h#08~bʷf_%>hn(w3/=ƤݡoL?*m w OMܟƳUD̘GP!"ZmDL8buNKcpXDC0W䚒]a-1[BI?V{'癶Ş}%'maK%Qƨm: 1i2Eq7OҴ007O += 8tт̧RD$2N j`7#j eQ ߴ Z|uO0=0Jpv9܂8`L<Kt͹rv`$nooJ|Q5K$wN)2COEFZ &e V wu>x90\ۀt]\+;J멽)jg}eClaV棷vI Pzi C; J qѳDZZn۟?ozk:\p! 0:Ez \2A 9>I ~EL}۱)sGn%HryFH[r7JPhpZټ8+Z\DxfXVgcv$v,ʛVgg.WuԘY W?=j=BP챐ps+/BރWe:5[udMꖚuaq5yf|ĂcL+Nͯo":krX2.6$'1)QhORk{*5,'FեPN7Aִ;I,QF -S0nFU?/ʜ9ʩhSpf`\99MI5b4tAV'I{N9qzthUYHۯϥF,`s&IOIONit3gt^QXd9<o,#F<΂CU ,9]夫{gc{ƹ Wǚ+zȯHy\ͳNJ]N5֜[\mOQ&5a1>?/.(FYk۩|a)۟c#WW͜&d}oA>s5ۧk,h:\wO-#!v R]LvNg:XjOVW[W8BviD$vCzS$qZ9޽CҎ[uqxJaQ(rmn3i&4v̊7^2?Ja=rGPIxWHXWu}QV2JOTyX$7|N=+;P{mߪ;o2r{BTsI,=9~K݇^4 2Pp%_o~qֲc= >Ӯj!TݢAс*qOJף[Site/images/images_text2/0040755000000000000000000000000007312407570014331 5ustar rootrootSite/images/images_text2/Image14.gif0100755000000000000000000001331307312211504016176 0ustar rootrootGIF87a.- 2;48 68 "(%(: %,&#+2:3 79&"* CJH M RZRXA@bjc k s{q s } y njtzzB%D*G2H3i'~(I 5K$=P 5X 6Z%>b%>x%>BJKBDHHRRZY[bcjibrzM&@N(CS&AY&AR)F]*FP+HS0RX4UY7]c%?o'Be(Dk,Ir%@}&@r(Dz)Ex+He8^h8^r6\z7]Z9aq:bx:a^@ka@kbFviFvcGxeK~hHz    &*$*, ""))!!!!..**$=1133##//++334444<<<<<<(C,K(DAAEEAA@@JJMMQQAALLUU]]QQQQcciiddggoossuu ^SdLiNdPiPcQiQ     "" ##**""++11$$++339944::BBKKPPRRTTUUVV!,@H*\ȰÇ#JHŋ3jtX 1.: @ɓ(S$@@oK5ެ<|s@=r~7F').KW7۬t__#d6⤭l-9p-wO+\*~IH 7߽.X 3$⋃?~oc6d暫砇y;n.:ND 0 n0/C 4'4o:W_:d#co/o?UAx;39yp׍ ZK7u ~#!t$@DІI(DъriNͨFݴ=) P@`` MSGWҖ42Ȕ#\pE*e(LY*@zHL> LpV*2y`TkCbX*0zʕVpͫ^QT_x[^e`ϕֽva2@z a\dOZ3f՚ְJZejWڦ]`3f+߳p]zrn8rMrרIFR+ZwX nyWыw=m/{HzߴF#< FGvuL06&]pzy=AK 7aBG|H<0ߤ,zA|`9'EĨA `Hy&:G5f*)"֐$#\'si22Ak,NvJTF="bN|Pl1%4!<qn\籠Y&|)h[x]E/M a ZCd!MXҗ2 \L[H]jt$MNܡ͎frJB/w~aY86tl:0V?8f+mnNi]ܰNgKv[7>71?q["η_#ȁ7Lu8Q&ŅHώ_S(OW0gN#LPs@Їs,XsΦ;PΣDgz{`$ptyΈLNdBT pϻOD,KOx!-񃷨'/N 0w%='AIIO}DygϽ[NSZ']k7ЏPK}c}@?O~`Z-nwjT6ԏ5юϿ[9 b2%4XUYc*A `W h.uu€12/g51.w5&2/!.$H'v.+/.8/ .15.98"3A X2?XD81hK A Te3UhWࠅ`%SYen:SZvZh1QYV~p,[UcZni37䐇s7@0[ G[Xe\\\(&z+~8,Ʋ]E\8(:9wCy7 +g~+@8U^h=:^ؘTO__@ɸ+b`ڵ[􌐓=E^3a^=x/e_Q_U}9U7H@H<Ǔ`Վ =AXa=a0>~W?yS3@@ < &A`AB`a$aaC04;%y҇'Ғ6<   069=9<B%ԑB9DB@Ppi0 Wvm" ʠ )"v))\@-bwKX6&lYjb +bigP ^T:]1vhơ^&'4r@gAm%,p 9G)yJdkF6֛4LdJFPh@A1M[fkUӹ@ikFGisLiJ&nGy jpGf)lILjў\~~@ p[V0 0Hn1r[v1P @ ovttH  zkV5 @Z$`P J ѤN'  PY]:La @ ҩԦ)10~puP0JjZ{:h9zPojʦjYP6YVfRkvojho u .ڝzj *_ftPzJNȡ :oPApҊKAD'Mjg4/`poɚn쪥 j{ފqjQJjrDQ[rk"аj 6+zZЗ;VI['{#k,+04[6{8:<۳>7;6[B-KPP يuR{XZ$թWub;dKЩAPl۶nRu]*Ok vxzG 9gv{lW"Bv'A`%bOiOAеǦP|v;۹Wv9&GxB򹨛8bPN𮝴ByGwۺ뺶ۻF$BP%%LzQkg&H %zQż$+zv7aRK:{۾u½k|} K <O)U(ɗ }r %_Bu,|2Od!$GgǷ|*,)H.l?{W&zQS(S+)/?BDaҏ?hԇw@L 1<sAT [NeB" b>;-9 6n^=9'T&C?$%ŁK]R5`.a#A9g9j b^_LٔPY VW[]A_ٓsNk9Ԟ־DU.hd@lj@jaCrjFvmOueK}iHzlPy      ))&,,&$*0$=%>$=$<""##((   $$$$++**$$--11223355::;;5599;;&@%@)E*F,I,J&A*F)F+I+H9_9a@@CCHHEEJJLLFFJJRRUUTTZZ]]ccllrr}} 3*3&3(^P]QcLgNbPhPaPiQ!,@H*\ȰÇ#JHŋ3jݚ3ZRpC䛓'娔3=0&N8 e"]v J@yh<\XiSPBU%0udI)U|s枚6oI(cKv`/_[laaJZ֭]K+vNCb+TQ~]z;~c˞7ƒ_@8*"w;:&=|] *ѣqEi'l7m&{7b߿k^rD6j"AqVZw%h' 3ԠD6Zś~;:w16,$Lrx2ǧj0,4_ ͭ;>DcN}0!Fks(;0)[v @4TJT Scy^׉Oa CƱ$]~ @Ģ=s;ǯgO2lg 6T-k{ GNrN(OWV)iX,b8/s6Lh,wp+?4SiI `DAjqFI:׉A :v,_ṉE ؋/|`ju~sJsn F>Hx)5ݶݣ v 8*+e^]U:dRǔ;"fG>5ݫ@MGR !Ԩ&̗DKsviGc.%*QFv 2C[.K.#Y+P!wG|sEr\9F[\! Q @; `9yXRuRHe%|'ٗ @UpՠU{؁ Q^We<Qr` +Hpa1x wWm1 1_ XTyn;qWUUwe@ '1_ ~-_BUR9 9@ O7 i }u^v}u[o0P ` X @8?_r5 |(@<_k8ǁ ~[sZ3?=>*F9)Q="D=3[@k@ qB hCtJ{QL?.YA#KA4TJ=\O>jK#qN!yT%aN6iS6xZ4~`:DDDWNA]P@VVVeT?r\@h_Sy`AjaUwj[p\mmmrlezqgzzzM Q Y U]^`bkglpq[&]1`*e*c5j4q:m*r.x(v8|5v}|"gBnCqKrCq\w]{VzE}Ryh~i~r;قʃ(׈%ȇ6Ҍ4ϓ3ؓ8#(#75ݡ>)58:,]IIST[iu{dbgepqsnsnj@ɑ@חCÔX֜QBۢBգTHMHTSVYśer̡lӥkɥtԪtڱzcewKXYhjxsxivyҮ̰ڵȰո廆ྔøӽǽžŒŌۄ”ʗוӘҢȴͤΡӢؤζϵѵڶ,@ H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜ s֍7iΟ@ JGHHkӧPi}ի>ǵwDQ&;Vh (ppH ݧ$\߿.FK(È ݛ<ٞ2ʹ3<l&Ѩ5x@Hՠm i 6i ɒ5Vm۸p#(W^ 6~cĘW`B^+L_ɔ`dW?YKUM6جCق bgepHWqq- )Jp A]wލGO>`C9^#yWd_5Ո5DbCO>HޓΌ3Zd5b` Rf#F[:\m4_1BpGy8A }j#CTC5`#BLDVE=T2S P tYeq6檬꫰-j+R,dYŭrP =4 "9p@CTTAƷUP!B,"Bg-O&okbho -Àd-5P]%tL3A[;0+jGP;\bEAJ P}G MB+B$EIR~LZl ըJVR`'R`yԖ+lX^:3H3.bF@zJ:d"u- VƒǚaAt壈D-F p/(I' 3ϐ13DZfId*вP\lCZi( < #\zͮz$߼xaͱ됋 4!%G񡯄BB DMr]66bhˢG|upUpHl}jin׶$gubz7[`\9*όqתuXҺq"k`{(n/q{ndɳN8$lE )41 'xo( 5,@~ C<8#}a3#1><==T2 ;cpcD#HgVA\^P4߹2 GktC$P#o|‘R")cMt xc< =ld@4L-ghPPN $95§pZ @@wy41@M @x9$> !uo 7J$}T!SA{QVT@T@`z4K {+8I|ʇ@ȧ|IOG'(Ev~ND8DPRKT琈~hQ6'5m5P}&9T5RַPsGah ؊8Xx؋ vTM/ A5ŕ]/ʈfE ,>,p/b 0?]8(/`>q8\OTxo8Xx؏v9Y2ERrW i Xi`)%fGOI iYy.@} qy [qF[$Ewv,pP Y@}Q'ZFZQdLd64ytd}GzuYٱYdy0PʠnZZ%RU[>7` %qB?EvDC w·I46#a9e]M!LR ugD `Q`vy*%gHEa$|!0fΓ]^|@ 7b^RLWb DaF"cO_i ˰P%u$ې` g&8&sN^HYOX F E;6c "E逄;%ɞh(Z!B0yٟa9ota4hu1|%@)R^}b)/#-- @b=c\Z)O h BHF,XbN'eGR]A"˃a#A"J)F33ff)[ig@B`S S  rPe9Rf !^g:j;DOTDT9Kk'j YR6 }'q^`6g,Κjs1GPkCprjkm׆٦BixhjВj47C d7y7D7jt*JU5 `헊vj+W0nt:&,VG@ npD"3c-Fow0e@k|S4G4K~ 1'l3AE\GigqP  G|r1L1rgRVV2FcICMڂ;+3i dܐ l(G7cSs -{y{ǪQk1Wq2hӮBnDkS:Q3lf3wypE0:l?~ǛjGu5pCLe3"Ϻ2=Чy8W2kJwj3+{K!;;w}^gJTEvs!&ATAkRG`k::i뻈y|pH{O+99DTML 6k B&IAa}ؼQct~ Z| `a#&14#lo)mƕ׵-wq$A;Lp=T׸p5gp&C9TA@Hԫ IHKWwW[ QM6LFIL"A wR;Pe1?v@Lwd,su'skyW:"M$ *ɜ<029;HS?">4qq*C&_forx|l{BDhkoѧW~X9Imذ:FDLJ0n|}ĉ8NOs㗉OK\OFEpDxOHC[5]D~єxѬ;HM!{;(s:Q a/zU(Q q<>-P耆[bsW@5SW1ĚARiQDHiA0B@ Jś4wNwu[dLn,D>'PlxT]]KppqtL 21VGAd^f~hjlnpn=cw~?ٜ'R>]X(z[>q^ˆ;\/>汱)14!q.!xRꪾꮮ*o^~븞뽃8VCڑOQA+ !ACΐ^žL)X쓊R>J)Y>UqX.yYmN $1 'y)9j>gZ ё`Y5js)X d0XȾY@WbY}qZ jn<SWG#vL%>I'YeIg_ZpXh 9{lyl4z̕AChI?LM* q/Trft9 yy[TSu[:QHa1Le]OaK_⡙f)aLR `_Q@ f`7kU?ǸQTiR6e@t]y'"^ f!ML^ IRcBU#X`f.T,Y_a,Wa4ֻwl˗_G)7O<1eXM9q"S#Ol$P9q`i(p"Dē5i|p [Bi:m3̽E]/o_)R|0rVd9r5k[Gj 6|(qݒf06%KL˙%]m9>UjիYF^IkMʖd3naK@ѳ6 (IqMh =h29zY|P3gP}62x IZCydt2ح)~*+ꠉQұƏ#릴Ғ..-&;i̻I! ȰI8|(.#>"ȗl*8@ g%{ZzI sL'dBp :E ]Ⲏ#INlOC *ol͜qW-1Ops}w{w~x7xW~ywy裗&ġmҞ*jz} J 4323؞423O}pvpcQrXQRM~| r & T`9&K`Y@lB!pbZ  Deo`b /M"y01(\RBTba)sCVPOɢM"Duá# ї_0PB ŅQц8 @R@2$ d 90ҰrG '1QMMқ푃u$@@]G00' DfHdENL ,~v 3ٶMNQ8b(8 :PbQe" V8E)Њh qB4ShPd#GIZ1}*4fLb Sdh2k̄`53sy 5 `%Vr#'b)h1,^l\ c)@B$ T܁ a@HP3m:xFP*Suzn6\ x CiSj?P4Y  Hf=,ќlVXp"R-5R;XQBRdY =j%T#̪FNԵXmGn?ɬx3``3cf\M:Zk8Y> 冰md0t{9h@ϯ_F_uӉ|&x 09 1 _%h%@ʫ<ڐV˶| z@6&&h&pX@۾X$ir`t&r37$ȉA{jRh[BPג(djxr fªD=ӈ B<&Ђ&kdz]cҋ>$Pk.Sڴ[uPu*~Sk0<íZ(.Plv' Çb( L ͣ >x}30:ts)5'`LG{>c?haL©gzR-J&bx,`-vF0: 7SP*) `̊z; C3:NErk#FL:YQ:qs8X{2GH2*ؽȂ$™LK\H: `ʸ66țń[:I` ;8i[#ǹي>l9mJn+@hY8~8LL53JʔƥdHG}ܸ9˰LKX3a;Site/images/images_text2/Image18.jpg0100755000000000000000000003505607312211504016225 0ustar rootrootJFIFHHPhotoshop 3.08BIMHH8BIMx8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM bpTPn@ FJFIFHHAdobed           Tp"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I$e$I)I$JRI$I$$I)I$JI$e$I)I$JRI$I$$I)I$JY-~Ssv9'7kD#x֌a|5fȷ:(}vnX?8=vOMclxvl?HJQ%$Uz|1ta)ì?S탵;J}cG#cGě#J[jh$~}okг:^&6-۸nֵm/͆8,9<_1ڇ-@}TxGȱD𝷗7xK8\5.qĩ>4)bI3iut#e)QzFme"?xxok"w$xc&.. }R-?)mx?YWmߏA<ܗoA{q~Ʀ7|5$kT[=;v5]5ͤ#H>V3x13|1QܸqKlq}̜0;#!1rӔd0|?z&EfƵv a{hjaߩ'I^[HC%n)r FCeW+<_\>r>hfIJ=bƲcK!:I4Ycϲ?`yX-m|Zv]zM`j=V6_~eX;(C5X͟!岈ceǓˊsg-yF\ K2ɎیG從nʿWN]݆nee*UڝlħgPvR)҇B'F6}nK`ZxNw9Ozrd8Pw|*1.{$ƑnZ?X?b.5Ϩ ivv2#5xcw4v{I8N&|؉kc3qV/D.!T˃N[>KisEMyIrcZIi(=<.ITK"wdK'0cegqq˃vǓ$b|+,.[咸!ǒ$-ki.vU{onZ}>mn_8n᯷uUZ^ A2~.,cϟz"19z\>)el/xrx}s-\Uzl+xס1v;9E1.GwެWa&ktDjgTDJH`?}桋ՇO\ݲdG{kOӒ~_Sv41 {kK%GH0Y"lh:9V1uNzn:iOEi|S eˉD#ܹX˃LOr?_ܿ1cb335dǏ.<>~~yӸ9i wj7\ ob?+Yk6xUEhXA1y\X#.C$liJRY4Xs<%{NR9GՒ?Cԥ#=Jw/JDJXCo/??{_y9V0}?_$3~ooo,z;/oq77]p).s{q_3[잋~oϻO=}/>VM%or>?C?Vfϳ?w, IYl;|{|}=),Cg?87U?;g'62O1o?7ݙvt58BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT 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 &@Zt.Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@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///050l0011J1112*2c2233F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs2F[p(@Xr4Pm8Ww)KmAdobed           "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I$e$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$I$e$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$I$e$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$I$e$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$I?u]~$\^hI?u W Lu/\T$\^i\%2H>ԽsQW Lu/\TUS$K?+I?u*W LJS$zRp RJ)AJS$sRJd}szRp RJ/a4):|Mva(jΟ $[/CUQߺ;=y 74$$Gt/GHOפ/1AQ™xLТzzz})1-5Շ(b%Kut۷oZq1J)y>:kuK?RBDH.˄zua1$gDƿ1A'kAs,]EpcZ<$t;isQs}j뱦=G -v/9< B5\\UO-0q"k>.YkymۨD <gcc?,rUrJn==$|6|x5.$e/]$W!!e#G:h\yJ$G~R6h>4: 2u *OcGo)T'Ԅܛn:ʭkJ;pu=4D)n<$5>1Pt?ܵ1Dq0^Q<$?YN> a`O'88xLa?L"f,|2S;B>KeD*UVѩۧFH1ecD?8rd}s^3N!&J%ĸ,Q-?U\\$_CV>"L;r97G܀bGՎ{>qf1ǧ$6??=x4?rvQ]-i xV>dD񝵬/=^9`bXH`ZAumaJmd yLM{ߨ.r3VXؑ꫸ Eln EXDHLxcn%sI nxM~ЬeVqicV!hB٨Xᮮi!s\GsG.c,&4IpO'F1FP>?+C OMN3WsjO{)qOo7lp>nl%$#FzBtV6{\}Bns]` sŠSO6m>`ꞽ4;B\2_6 tAӄ/,liNpcA|(m$WGDyQH4YƅV'MGv<%J8]=\*$xlx|HVic A&?dc?\`@sJ{`>>Jk|Pa l$%9}! 99/ÖT?p<<?ޟ1vC`5FY:wa部.rK k|fWW@k'9z3/>Կ5ƆϾOnʬ~[U,=_q{Yq12_:#$1s9zzM cVK}yHUeck*l __jpg$s9d_alPVk.hy\\{pBxrq-8r/R[c# =(3gcϒ<*ܬr / 8NS׏ FYqc|_52o6mc?[WskvV>&;)OmNv7^V< ݃Қ"4m6Zb)B6|޼x8Z?1?\_'N\#<4v(:ԾQ*#IGV-YniB_ûUCj;o OGܮK6C=Vc]>~v1,f9O./_7[RbO/>p&\nȴ ʭM.'G+_i[3@$k2/fj:~ˍnC2ϻzoz[ ^߰@2bŦ8B)HEHA[GG[u]USߤ*da#vC;ojD?*#&(Z>*dǎGPܞ3eDJ`7AŏwgX !1#w܇ML82V 1x7|veZhyR+|{]3BRrBHdQLB{zh~)[[95*6;Uƈs|EFqŒ-OţK_SO#U>V/)rA͗6LLIoSVql =Ϛ,QVimwFP'͖Yz~Tr\l-8\~/6]8"ѫ2G!afu lz/p5c7eZDѫ+?7/%O]@ޕu%}?Q1Myesɗ8>9K3718}2 ~ٴR<UOu`?kZ?y˨w,<{jȿ#"Mkdmͭ\g12OC_~#O9C>q?IRŀLrzhߢ2lklk Ilw7)Yia 0zd1h@Bmv]IS|3H)BLgǼ:ߤܴ/ ՒQ>ޟGsqHc>ӣLj|E߼?>>W˒>x=p3G~!y8^3(p O~EzkKhe_ح*kp-Wˑ=( cɷ|z-pe ϋںup9.~ZA"V8ml=iY1ռ3}옳po-~xtaOON"o\,WJQqؠc` mi㷏iO/5\\d'9~P~sc5=q|zeY{+uH(`GdzoGa%G4+§?BPqܮL)3NXޒn0>)kl̠W4f`…ȇx` 9{ܩGJ.|3˄{~2+c<~Ū8͏ oZ1Qh}~.\2Dy1/I9~Z92t8\|eY-enk>fk=ʚs89|x{?͞c=/Ca˗'?='e'~O9;+9B{\KdJc1!qdx^sr!)gO"H8RR:Uٍ[CX<ԾGYj6-x<|w;~W9͟!><[ŋGRe9~|e9rfxc݋Z#sKǀn;׶Ul;7W|UUyLddp8ŵKI>,9xBY2oqu>G@qmCxvb%p]˵K03)e' y+ess|HϖF8J9h}_=%{ѻWIH3L?84qc92oQƵA<Z]wXT4L?wh#~~ #pů\0\*Ƌp_js\cAsY> / e+B_||?d\XYGnYǻܮtV=oci1 "me5ogs?e78=B^0|2\r,1k'ɓlK wY?gMY8ama<#1J^?2fzHz."C 28(><VL%U8~Cᜯ5N9g燦/AEmZGSE߽SʇſǓs^3_<-U|=;;-K~ˋYA;\#]G+dqbr C0s3O&߮XO ?34XGpUmF`?*Tf}ZX3{\)H|cQv~ascxyḍ ]gI\I!󙹩G9^S- Qޑ)U˚ࡓ3]GNȪg_tO,*iq߫N$(?h|rd(Js"0ǎy'@Nfent7?%&cƆ@ ~|n#1Cz_ד?)|$ݏ";V]߀<veޥGf_zc?W^__>@~?I2u'RRI%x$.vC nd5Ad1ac?A?9sֳGGZwEe'hG-8asD@U3|$> #) * mДe=W=gCD~8#E3d'/Kc0#ZTYYk?LYI%^3=FS儌.'g1w|LP| %t9]o⸀ v kPZϭx"{\;]{fo.#cI_ҏ_:LEO:~i-sa8J(9Nk'-evQd$bdϼp|Bke,='幜|(t;҄MlAdv*"-f$h𯌜5&XMr'rG.z2WxwqktqpɎB{lܾN($MA+xNy_66+i=>9>C7//x^?}g C?֞. q5?g7!V$4L@|cI?x@ 8@diY]l/uVX[_*9 t|'7.$sJDOn8v?xyyQ?No [_w?q7ȳ jaGsJ?82|ÆAp~^9u1r#>r͚S>?| Pgy#leaP "oگg#G!?FݗWǶbC%r J|?/ =>.cIr{X#) p2<[O^721͖CZdtBfOVt ^=Gt@t2rk2KHe`]^sްe::'3< 0)Bᇦ<1+᜞Lp! xLOeFF 9|\Rf1A)K&9|K>^q OZ2ws/H~z-߂<59cb%c!ÏqcgòB3 c0%œcPt # wm-i5V={K\$1x!!o,~!#(O/[Jqiw~)~w~(_>!t̰Lx1qO?㜱)j@{[sa8p::*aUTs ʥOoyyDDc[pǏq/LsUSite/images/images_text2/Image19.jpg0100755000000000000000000002717107312211504016225 0ustar rootrootJFIFHH 8Photoshop 3.08BIMHH8BIMx8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM pTPn@ JFIFHHAdobed           Tp"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I$e$I)I$JRI$I$$I)I$JI$e$I)I$JRI$I$$I)I$J}K?xYD%1yּvmK?xYD=::$xUoڿgK?x:-gȥgsdsGA:,{ʹn$:u˪u}KHڟgTL7\sʿ21;IwvWq=?|Rz!e/޿|tRp$?ѻQecr~'M?V8 Y'j<\7`9.kvmgwq@;i;/ga 2i`qo7!,wYSŒ^#YB~rC R ̬e0J42pO(9ӅF\s5c3*1eueAѬ:lշk [^Dz}7Y]5ֻjWL6 'hšܡ\2⻌D}N3d<0e5ͬ\K41~j`m /.dAcUkt- &_-j?Ƌv3ק+{y@Zl>:Ԧwfy)aU wk9ګ`obtzghpDMC)=$Hoݿ"W_+"9{)uCsmyy:+,xriIА,| ;;i%箊u9/}`i…0;u8k5Iw="fRg2Jl܆AiV#ˆ>VWInNd*8g^ktԃC%Po;gZ9 9hc5cdgq)09'D@K1t%㼲|08\\~[u)hGtVnװm~cw?P}VAshA%W~?rycz#k^z#${vGf+nḃp>Vl.jimIʋx$0oh:9*ōi ;>ؖ",2S̆C$R_slڎ'g @5,dd!#ۄ,93D'ūf|q\JI?T/_A?#ooh?yVp}?_$c7;w}<,ޥ/oq77]pI,ܟ_>_>>鏱}>ϻwڶg}_ooo/2I[<6Oo9>n4o%˿?|1f_'м%v]l|?Ǐ}U/wǤ_??'Y8BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT 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 &@Zt.Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@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///050l0011J1112*2c2233F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs2F[p(@Xr4Pm8Ww)KmAdobed           "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I$e$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$I$e$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$I$e$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$I$e$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$I?u]g)AAԾu*W Lu/JS$sRJd}s}T$KRp RAԩ\%2H?h?J)AAԽsRJd~u/\T$K?+I?u*W LJS$sRJd}szRp /\TKɾ%{6KJGNt F<jWd~TKN#Fޫ)tɉކtI]$y G.ǿw_>))I_R$*cmcw?Umb>Hju*Pom|+WxK|uI >iI&5ƀu*>Ԟq$'w@ g/ 劾Xܩ ͗1-SHψH5?hd!5=CIq"^4Y>c41D>HXH$_$:g$imqHt8y,&t5'9iG5Hhul0ZŮ]Tjsw閴@NOo7W"=Dm!D{+!e02Ί=*Jl0~:9bo&bOn#+@~,Dx)pdBN Thե>0Gj߇DzKQ>0?U;G>h|4?FS'BJ៹. ~=5O&nJZOI<6\?JOx1OsS-q蛱G% ;WȮؒwF(5h#gH(^<_a:))]˔Z&:䮃qbc1I4(? ח3a'D/he#//8HlF|?ZFϧkhұo7e/p1|9Zo&ڙSStM{Ǵ!/r9b_/nb?iNfGgwYnEmNG5aWsr+H=l긕}UX;}@NU[65k1Q也nC ?6Lw|ߩl%N9 cq=:}4m?yB "FT#Us2zS8*APv9;. &BD,#FV"&HD1ԟHV˶4RhwbQ% AÕ ǹ9&dqp]j%IB1 g/{cot|cwM g4x}-M'`*XWcƈ؟$sBB$3P|>nOzgG~ܪvCɰ!F ;'5+W%#/3d26y*{5(LҁC1kv2'zsԡI!qŭ_R7oq>*a< ̫`hPpu>u?CD(,͐{y\q\?UaʘKW^tf[Ϡz~j]`!yt ^d+hebv7h>rn\rP3+N1]`ֱLv*x9ڴ9]3Z6;*Y h2s2F& g*W@#8 2 µX#)zOiBrb .~`|NAUe58|ǒ̃|X:L!ÈKm iXoqc|%]m4S^)Fq?E98D.򒶙 cx !ӂs$#򌐯U~cR%ҕI:|T\kw'n~O e3Ѓl ?3`Rl#B31#MLrQ =L89U(HFgz۔L y0 @AReeCj1ѱ!)R4eE@`h'qm{5? A2LYȁ'? X&d||WFCŎɓ$)IɒC1VwrY]RU@င1Ƈ{嵓,9Ym%Zkh8@C|'x[xc~ƨYMڀs 72ᵿ#ggˌh,1'Z"@T\B>{}^!_'-e"=?"TwȨ&Vy^9`a/ݩ,J?QBew=\\R3 G9$<Y\9$B ;C&/Z+r?yב& ~pD D-1+ĘD,s*@qFc؈ Ϫτf`ÒP>'_X(-C!?0e|v;Z;Aw7hoʍP['<@dx>AqICRyP1xs?32HfzN>?|>pml?[c[F?J?8*r@ϒ<Isߵo-ȥ_g>+߇hf֊סFWr@ jR8@=?-yYb>,7 zvS^vϗ.Ty߇C\xgWb,gM-B*Bw|Jď_du1#y[ojvx% o!F'I$=G59fy6٘-<' j8ZC9(x\'pc?UEv13лIH' `((l,=??kZԆ }*XrӤJ"xtSJ Uj+W{T+IU ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~+:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u &@Zt.Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@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///050l0011J1112*2c2233F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs2F[p(@Xr4Pm8Ww)KmAdobed           x" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I$e$I)I$JRI(eu4w)]n/@%oW ȡ}-ߟ@^|(2k!&#뤲ٗ9|@Vk9l;*;4K\#wcB_H#q_4?3@mi҂x)5$ IJ&);J+J"5'kp0nSL_R)NB1)ԕbI4`f~,vֆ4hc(!9w/Id~bΏvtG__?(|vhaнԶ/M[ O肢ɀbuZ^蔽%\7:rṿH*LFV?ľs֏\1MDB}oÄx&!s1J1Ld7%ǛKpOVH 1@[7DEMb%ܡǒ5SXHy=X9sRmKj}O CRslږ48"a B&˄FzQX+SkfiD+H<ċS M7,^{Ukc(@!H4hCY*Rg/FSFFΫI"Smmo_$|7OYc;eGl[r+^5z(sjNy{Y0Bs9LҔ磋N@pths:sKQN~˨Cs=Iszs_zsKw/{_hf֊ڗFǔf> jS\"A,Y%ø]5 31RjE?$qeǚXΛG,81l(%!S;X{2(w? l|BŻx5B([ !iuʁYi+=Y&:I,ԐSI?8BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT 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 &@Zt.Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@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///050l0011J1112*2c2233F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs2F[p(@Xr4Pm8Ww)KmAdobed           x" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I$e$I)I$JRI(Ymu0w)Zzi,z$;"̷l#V7=fɮfNPO ^m#a&͖ @?WJϏ"z(Щ$E I$RI$I$e$I)I$JamX`VNUVvAYY>*,T9GH[ =GtLEj'g ZCj+T%7s*6<8r@ۇ|S8>o_5~)+4 y$)$IJI$SI$e$I)HY7 ('抨GO;d{<|82'̣1WaGiYt(((*Ktޜo7+kںK*55i#r2$ *J;{g8=2zhȍzs (Brb$c8t6zX<6 FFdh ]y(|xy=X^_sy~YA+j[S M;SeԡM$=BP &T6^d`" @Q h)©{ijy>0aj+"uUxl lğFI |I*mNG#ﺌw+BP%cEB<lnO4$'1 <%)1F&FȵWkTRIFJU S&^U+k;J--[5Vb!$И`$HpI$B'L VI:I*hD Iwe<$Ľ㜁c|iYck V`CTVjHSI7E:I,ԐSI:I,ԐSSite/images/images_text2/Image22.jpg0100755000000000000000000002716307312212450016221 0ustar rootrootJFIFHH VPhotoshop 3.08BIMHH8BIMx8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM p8PI JFIFHHAdobed           8p"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I$̩$IJI$RI$I%)$IJI$S[?KGl5MrW2G1Sv8O&cK?~-Isܶ&ZjXk J='[9-_{W .~qz۝4nt_9f!gT=uo]f䛌,!Ŏ$?"?zͷ >z^lt:?gi~-IqKr߳7)=I%ѫaoo,wsk醛履r]^[?KGl5MsgD"7]eԶYhеZ}5_ +/ԟ~q}Moܶ&rkl5]RATi?1Kya~RO0Uμx:?gi~-IMaykȻ1N\x{D߾e߆du??邆_~m9ڳz6l mί[=3;zY~Pk}Zٝ/!5tZ5U\cY/XG2J*]ҫ$2%]gVԺfnIُeŗ\44 [_ o< W<'mcgk+v;Z~:eT9!]c)>ƌpI$Z=ɲ7!sXf+ [\Z=?}?Bŗ$;|%&|G8G=?z[]U1`cG(McsH-pwb0]?+ԲtlqH4~xx8 =\?NQdz?gm`{2[ݵ]7YC -ǹK~K~վV7dQQcgpWbOOݑEyf9\; ШzVFLq븥cab?Òz~?WD=C/i̭]A WT幛լ}#U׭RVL罆}~w,EʿNs{=sjM1{RrKW݂~"' siq2Ye{O?m[ =o86{&"mgͳkwQ±=C*9q.+|l>Xڲ^ߤ,s\v\7iE:8eٰôǷ_GR?ҧU 5 `lUuNOd?~{&zR]^?l57rXt{\/mn6d<ϲ?vDX8߫z,|낽]I>#~}q>+ISn||?HQBf>(:2닚IS~Nt9k~ZpYWVfcfhɬX?SyK' _O;ߧ~et麳OC=g6XX#R\k>=_8BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT 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 &@Zt.Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@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///050l0011J1112*2c2233F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs2F[p(@Xr4Pm8Ww)KmAdobed           "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I$̩$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I$̩$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I$̩$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$I%)$IJI$RI$'UdlO8ק?ڳ!?ܤɘh0r0Up7'TO9:,YITSe>_ߗڣۍu8&R&kF7{4R!iI/w-{8*}Wƿ?ڗ5XWcHO'TJn[xR2qAۇ8^?ڐ`>G}VfN{~_j}][zj_z#XYnf􃡠2җnqUkj{Ipt7@pQ,k;A̿/^p8_VݶkUAt'!:;>_ߗگgKwMq@?TcH/VcS1r^_ߗگgbGU1V =MD-q7#KU7b}VHGR?X*ۀuS ﵺCU7Coqu]fؗ5ϳi{vGw4R2K{8?Bp3\Q?5`"YSX7'S$2"{p8k UOT+JAܵ|rU`(nN_N15m~'Nj0nLק?ڗq=D w 2}0f}ۏ1; 48!1QmiU| G H$DEq{A+ Ʀֻqo#*E_cĐ?. d;IinIK 6OcLR<|5 -ow}.m$6Rm>H}Zf> >F3-ۡЖ趪mPY?ص+lC#7lPUc]c?jXtq5#n1߸x>qݬnv]OeO`s'ZӺ.sΖv]qFƘAa.1<6+;*sokgjW-h1n@ʛځzH`9*9q:FY?7PLgOskVsY,bכ,,s%Vp[t9v=LgZK5 7$qmuoH-յ'!+es.h6v _O;ža@Ot  #lgk~F[FIrA}Sgά͒(2F*M6V]5KK$}*!lY*jE8jX74,N4P4+xV{6a{^&})^־9'/ :w*U`YsFye}TZQ\6Иz٪"c]@=;6s hp-pXA8[gSܪ T320jUn\(qH8?q14.fxUI?&B52vkސhρip ^йg^zM|c7oRjw3?u7;0vUVǨʭ29m᣾hD|G+xvI5h\r0-(jF?OgclkA$޳`?SywB2}on?(|Cq=v(u5|?/R}_ُhhC66ۜ4O{GZ:.A[ma?*,q@GOcGr "-`M Grȥ߬-/9=i84?<xUr✾XesXDz>ErZWsZGlqwj9brSI>zP_{p0䜆)Jg.<8٘Dw:䆺?svf֟,G9nRgƆ05N0xa=6w,\އ>S >Cj/+2e2~lp8;4}, 8vGZ߷7Ȭ_+=/<+=,sdž8ܟܰ2K|'w}&Uw=5 ~ecn:[97SwFI=;ez5կ:/aR>:2G|lF0d[&8}kgM8ցgItWE:o™nK}?"`#+hW_CxUxNI#܏(Gu.ߚ]Nu5-ps`<+<-nM6_7nsHPkgLϊX\\L&<$'!/88??&䖗MavchwZ~)n0+Gy|#_'W[Ȑqh-U-}<~-Oֺ]^ >Nx?@[7nb@%^$cyLRnK%pŧ*x9$l#sA5ŮWTo1|ZXJVp?q͊12=CcF\sH4hQgSdbԗ#b3rX|qsUxqdLg9pNeTuip2+u$4oWotT~ZZܲ9xO XηNWwSZHvlΐv<{iOK47*tL1C7ܤDelkvpx?u l,|/>bD$0ɒ zREσ+/݌x6gQxoL˥=g/;WZH0x&\rh2q7c=N/r]-?|{\\:zP` v~Op w Yɏۏ p>eo{XJ?`ؿ:,ze7,>*'9oqܜ3#p_Lk@k`  d'\-Po_꣦Dcqf= 4F> Jk`8c1# rrIBSIj=#|]$I) mC]3CgM>S^x9hO?_5%/,$[W?o?7ԠxOJOK-?}$]@ZK@~uzX|nʯ&;^^MY`?) <>js1wO!8/h3 pWX<gL \"A빘#K{`ekv.NŃM^v/RF_ ֦Sib}x''>ە j:YxEY,ܿ-<"7Ccn.XwW#~U쇛,w.?PRXF(w9~WE?1RI$gRI-?jN69-g[LB;),suŨ(!`-{UӨ\Wn>fF^jTKU~caRzH|sy0Jn=`~Y>\ռ|O+køѐ]?yyW&+sxjCIWl?Site/images/images_text2/Image25.jpg0100755000000000000000000007354007312212422016223 0ustar rootrootJFIFHH Photoshop 3.08BIMHH8BIMx8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM FppP*JFIFHHAdobed           pp"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?YOu5vdÜ3wdzt1ڸ5/:{K}um/'}y-_k#M[r.rٽ#!ÐHB<\> 8etl3Ssc8V=W7U%v~غꨦvʪi}N,Z^1X%9^KoqlnzuW8WKH E%Z_,O./n\<`qz|#QdG#uiÙw1GWc󲫯_r^gRT綼n}ugm1Z];'*u6Xl8Q=߭f:Ug_ޟ/~_ʥzU^5ٙIfqleluC"<.3x!ņ$+5rs{ؽϝm:?cW}`øH7op;Ӿu{7?눿Y W22kƤkIh_zYb9^-*wѳvUmkmb(C,Ķ9sjqÿKzL?1K8XH.Le7A;>N>g~;+?IRc8!1 Jx=(c^9%ɛSqHRGbe3{ԱuZuM#VV,o)}1~Z?QKհzU˚3\/^!ZߛXFG٘~zLY Y9$OzR̒$2s,ns65{G,v'6r_02-jy.n}GvoBcYU sh̷%e88kn{Z{?ѿ*Φv2ÿIKm}Vʭm=Jo- F5܇O1Đ]&ߛO]ٓ-O{_=l@-5<<svoܺllZk(ekd)3ި;wCk7fyWm;Ty`͐NFpc%d iΗ~m9BN>71趯7uvc:Yo[mccۋn=5YZ?{~oˡ8,e使[ P z NOtܽ-#ֱuud~ORnSi܌l:+cEl7eX7oӶRWu^k+e77WH%9)nSe8V 0̶?ֹ+U0%bW)ˊq~ܿdqoEwt.93\?G[[>5NV}-Y3X}_o]mL6_l-6WF5euA$$$ $`A)/g&ʲ1;io{wu,k!ݻvozO֞pǷ:.y!m7u }ns_hku m)weYͫi@FQ79e䄿ɭ pq)Q݌eRc:۬{o\YYct6ֶg7ʲ)=~;_ZuKECukGU\Yg\q4zZ?.""+:~m1[sz[Zꯦ}/R6~AkYί}bcŨE\XIQO3}eczF̫ hT󰺆8ȯ*vsƘ}v"ƫY'`GB__'x!%?hoVZ˶u8ّvn?~a^caϮFϊ[[kHv=cs>նoײP06br#.FqG|Sk/]e̚2H69c9ޣl~W]znV`h}Msi;ܸd|싙K#T_E}oǷ3Qmm $Umyy^3!T#G7}b^϶LWNE[I%̌]N+-0v'7 WγOaix$4l%7|ы>m.,uVw3R/p rGן/j3ҵ?Xrz].3Ȭ;Ӿߜe/~uzUXk즵+@Z=3){-zulTc/ʂN)egm׾n[Se&7sXǻٹ̧ c8)u>OO?_y]N:9ޛc mNvE^綽zW[Ucmv0nsUJ?Iem[Cwzu;zz2zL}eW.9J_ψrX?#0C>_ }"8}P./s-˓K`d(H A9CcdmΩng+/p_NޗS ͛G{nKШnK[5P֮SN?Y:wqE.VbǗ{=~#WdqeU g?5[ײT]8׹PumOͺ}nm)7̾fz͝Nӟs}ֽaGӺӲ[[[/S$ԏ#)d)zCvz&\]Ys7o߾>}``u5ۄ}x>ZX`}^dd Cu8?ҫwѿ\:]C֟ٸ7:r#8Y>U4^elwӹ=_XZ~lZAs_M22KqZVvWOzN9J<MuC*t˪s-q;ҺRlc?:o31%kձfAWz6aP3n_[/^gγm&ҵ 3ӷ ZLo}^Ǧ>,&\X7։f&SK&5V[S[PG aWodbMWEdz+*N=#u8ӝXP ~uΝM\܀<DjB_c]rZ7fU²IGL,]6U/ȴXƶ㺆So݊'evu<=뱾T7o6|GgQ.Q__9[zCZ֏ֵc}d].48FgNng[.ii-"Ykt]jx7>KPNd%Dc.xlwEYnZ4U>[>r.9{vWagʚDZz"z_ XޙN-އ<=d7o.mJ{kTe. ђ#hx'×W:Y?]76sk{xǨT:Y[DW`b3c=ղ\kXvZ\bJ}ԳW?O_CuM wҵV.(1b1QkU?􌥻w~N99s 1D)J@3,Sol͢Vqz` 1khu.ϩ~dYYaᢦ&Z,Ey>o[TXN;vmmM;7Ub^wSyb3i9ƴlugWش7Q6Πkm-!6N6U~gc]]{[bLo׳}m/ȶ/7?OM.>^η59֍+w*Gew?җ7 رf7{a,3g!{oѓ3 P:v?vmY;r(\ևjoo)$z֑0=n5&]Yֲ+, aoɸ77UUUL~t=FY}XOs3CXe{l{Si,c>8s%!S?<4;(, iW}G+wuK݂lo۪?QV6uL]W>~}V~fMOP:7g+?PcU~[]uC56=x"9'a1cG~0 K?ǗLc<]:ԛm5?Գ0̀kIcѲ륟K]S?UY϶d}uu4'?ײ{>(ƽ(ݒCmDJg5u~03 Se<T2qMZ,\3cre28%Ø/os-@wl{}WO]Cٌnl[^`4_>E꘮.0l6g}v5{7oEk'z'T8Y.l ::WO94;e 4k{+%,BY9~s0cD^_?w#/dhɃ& i9qԱeZpS>fgg3/e8#n[ m{~kufFE)i};Iʖ|08_ES:nR7Ac_sinmkGTk;~Ű)s':4̪owK{̦QzNSá{.yen=Z/Լ20pd8_qF?s/%Cph>Z%` ^^eSSLݖ1mi}b.YLopyCNz*dz̍GWԟy:=+XsںSY]v)dXhMSӳ5ָJzY,\z(sS"]X織12O}/G^韥~[sqV.p`Prq=~E\+<|g H2q5h_KB~6UM#uo$}c3ޛ/;G AkVoEioO=;[m@;3%u{,nzNҪ.esrϨWnc onZ=?Ph9$-mcח˲:MW{2l.ay[]ޞvʷк_\o:oV\]37k+nWy?m\Ј$=>~ xC!xY~K?yx_Krĺ iλ:9<sߢw_[3:=u}չNٲ-w, ySqjsw-Aܶ?7<>+<3iœדK9?4A/_?heu;y{wcl`LJ)ܹoS~G[u(ǏnugU?"rhĿ$QWh 8rmQOǓԆ"5qp"4z=}dןSoũ2+ͮ}V>=6JՔHɸu4Lq՟8}[>YgS`&*oc[E]őFGPtwTY e=oc qf;mο{?E7z~f5fsŴ poK=6Nҷ*|\sӱv1&VlkIuXImz徸[̲Ne7kZÑO&=6Yu,e( {;!zAG/>?L<Y1M>w,\[K'֛s쑺X>NgBoH\ڀ>{{?_Jʯxemimf&o͟%jg<\\@}>\ŎD8BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT 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 &@Zt.Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@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///050l0011J1112*2c2233F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs2F[p(@Xr4Pm8Ww)KmAdobed           "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?wƞC-3=Ө:n#OЫMk߈sLq;W_l2i&/qcϠWY=8vv,8ezGU ԯ7=;j"}[+cu&6RGT2pl ';Tw4ŧ.Sr_ DC$t`pVV FV%,[(9W6 Pb=Ϡnʴ0%וnc~I>j-dfqN^ߧxg$lc7կs1M-0٬oM~k`}jXFqFۘ~Be aio169k01V,qɋ97\@cݰίպoNV>첧嫧mqY[{=6qDK4pЂ9_*JY1Lq_SWgޒ\ԯ]( nŊ=?] ̜Ldc-hgsT!F}B~~Gx.#+ʱeb l{kDu&.^SË?G>𠚡Է}dxiZ?}۱eҳ,>Sic[7=Wuc 7ַXWA2 N 5}?9{?O \fe/s]mg:u'ks6c>V&+m#}mcrK71=mR7%2XLJ&܎yC'Hms^ iNq߸A~hYo+]φXKjA~V];Q}uzQ~5n?\Xƃk1;,FߤTMY=O1ίF U^k"_m.ps? wxVڲƞ , 29:w(ynG5,~[~n洶֏.[K[Ǥ.WRNLن[>_Ooops*6GFķP'+!g-nS`쮽;Mll>^7).䰟+b%~8@zb唧J=ŵm+XF+?M֯@ucu[je+ ps+p{\~۫Λrs{9.r#,ٱF}>>R!qDv_8]Sq鲈8:%auGpq1ǭ﹛66g+g}K; =B ~X1ufys [q}[G٭tn3Y,C\7e\q}䕳ly21"ǐ$!`ϮyDt?Yr"K 45UӮ4 N?jֳk.pЩkGZK1)>S(Z3Prs*9D_7*0X#9epڗˎ>n/*\z?7Y=Ysq1ݍ2۪7b*q[Dyq:.+K$h E{w+>f߄}`726Ϳ1FKs=qF~n{W/7Bz-v; r/^?k#6* ղ uFƏ1ER?OR{a'9Ƽ^~9f諒QYl¬uFû5r8Src{Sj_Qwt^qppġ#.ewؽ\2>}^` C,dZ;Cr㕃"539ZrPdוn-kxQ#zfCnŰ]maD7`}Y'3?19AFHVƃxێ/*-nLu; ֿԙ{l?.܃{TKEN_+O=bK%nձsx5_Ò};6O}uN3cuk]wJ22~ܧ (4Mӻ{=;o=hh?vT $5'@(|q͖B|#,|13^Q̓&N8p{s87ZVNʘ9vww3g~>}Rպa1G=T?҄UwZK2sj7=GI"uS=N&[X7ʰ]ͬ%ݱ]בOq1>t\ُnY?/@#Q#I9JPoSs$4Sd܋0,ҮTV2Tߏ1fۤg"+B &QJ?4T}@W;-h2?1tظؔ7K>l*I$I)IuBsDIo>eobȿ[Y`]1/a~$29{Aff> Ouk}=Ciin&"$$H)I$Jr՞ք`!qr?AWVwIK>\,Ȥ ̎ʉ:}ͮ]F:;Ud2.8ŷն͒w"xU$J4GW˃ @VفCq ?îԸËK\d{! e}fwk<6Ϸz>}bk1a O(5w Hdx`_]3i!N_{i\<3wgbg㌌K$rI\qc,LܮN,b?5ɷ')DBH})$,lrɡ۪>EN,:oFٻ۫NԪOʰn#[?y7$Xkl{1SLLb#)O$!7[r˫tʙ[Za$T7T|55zS]1UW-uWmV겱.yBb.hB|1cr<\2lH@}tFVSs>{ձ{qa.a◙/Ӯyq쇍#5Rl'it$4}%%HU9aC:&scc?VgXb}/uߋ*ԣszMܵ5{FdǞw򕭉c\J D9wҎɅS6K[;64wVMs[kdࢇ?QO >Iy؅-#PsHeuws]J֗T,%zhS )~~2)p!{WDߩV<88B얶ûo81p]EsKKV֋Wɘ|=6-ĹYB`qD #K:MK#tlO.nug]~=ud@w ՌmCqսo y36J2J\Ǐزb')hU+mM<.u[zwa ȡBFfe0?wœ$_P:#ZGmn7jUi}_Xh~]+|Ѐ.1OQ~7Eͳkc{k͚]l1W :vc'YjhSs ,o-+_Y0KvP?7 g~=rf;;Tۘ`W7P12ze`s'ES}ט2,q&Pd>Y AO?Y}x5QqSn۩c@ceD\V+}Kr~tޖZ`?.c g%a0(sqz%S 19OOVp:7T Uh=yv9zgyT1p:I}睍.i{3r봏p OgY ?wI2ݐcx^0ˇkM[)(WBvf%U:׆7P`hԛ`v8#\G?`\Kn׉ez_ΡmzuM~-~]\LJ#W:q4c}h?o~G&̇ƦG؏x s͵y7"yg+яQPڨo5ƀ78ӡv!GHc-AM[2,- 7g_uǒIEV26GA|JdfdJp/K&rrEg1H(іO}E-p!kGw!bSV.;vKC<򜊭@J/VUәf3u>_Q³ c\1u9 a7c5XGRn?wȭ߬Ud W7ծ[vP'e>7ԌTc#;LRuEwyI<qίtM<;$~W!xז`31h,`DHܫ_5> +Gˣw-J_Q{li6]o:}c]Ҳ=B8~mm2X(J;eL2GzWV}8c8{Qk/#O.{#;&A-!@|# .h2$qc?簓k:WGd\̦jM>>lʸ2;.j\OZ]7Z~;%!S(aD`8CӱnGeAԗ;O݂7f]etl?+]/Fds~tfeebfGek}U)_ {^֏?HZkO<ŐFY8y@UE^ 1W+Άx\ĸA4ɞQq*u&3 WbsSF,$F$"WBUԜq:ho>9;.`g)KEoS˧EwmJx p\`wyl9?[ GW{[Ow9~/]J3;&EȰ?d6AlgӱP}Oz)$IJTItYM} [W+$@;:nK..q~K>kv s#޽i%>.fxJ4xY2:dwW:_C q]$H)HX̩RXÚ~j:IZ;xrO?E89qe?pφK_iIUG`՝$O-#G AЅKϰ%ZrǬÌG;,e&s;Go*$EEٹжwƞawuAq?{C&mr-y`k-++m77s'U?\2$O^.ljS Ս_@z]ϛi5Q:M?!}6IYyּZǃOe@.{ 7/e3/ S}gG7UynDs\1N>{s8%dpʋ,_Y(a4bTg BF2FԒKt'~-{ylgܔa)F G`//h{#)?+ە >4a g v2LCۚkNsd 02_OJ=7z2/ƼםZҭcot=WEPKwƷg[lf;cpksw7sA:x"B̶ڽwT9n{3Oz8pKtFKi鷾r=Vkcuώ+*,wy[6pn7L^OpxXl̜!GVua!Z\\gus'TucBU⟭rMū.ak5?SΧGfTome8>?5t}\"Y^0BX÷8<|%\>;Lj(\FᄿDIG:˞۷l@kw8>8h Ar@DHx}?\WWafޞLO>VO5:pk;usp0kmguWtz>x%3 p ߙf/Lܖ4>US'cEU?yz+W՛c,ѵ?his9XLyC×GGho$58>KO ۅ5 qt>}]\8+1'8Y08u@o&8h:;j'S]nSz;Ç Rϋ740r\G/hHT>֦EcS8>̜ :<$⍙sɰcqh%RIW9\Rqei2Kc8l4'e}g=}?/NKu2[;2p\?,?q@Wv'XD㴫]Jacvl\VeK\`7kcc9\_d͗8~ϻg&K/NYK^EBAiln02l;\(ߢ.H˾>G pt;so]!Xb1J~ c/ ޻9Zݙrkh?@=yWȠuGerAB:7tvyN֩I-9]DXk>3;]mJ˗wEj'F=6c^;G[: qecy|X痚˘%>(Fq~_O DINMx?H.k{&E2NSM|G]sX}y*\Ź.,0,}8%|>2\1 ln,2HQW/q?>t9G %I+|&<*"]Wc!m6;W;J]JLY\P4P@/[:>9w1lv#aջw,[^<{U_33ԲK!0]+g]Nif3<ߒ=6z/ߪv)+e%~k.o" )$P%KN[ŷyWXߡgxg Dz7֮z\;^?ObY[-{Iݮ c|äͫ#NT9d x7ј/xI,I3ִ5I;O݅s c4}Z&XcS4>ԁnRzcyyjdfջoW9?Vcl/LG^e\42=O߫eLv}7pr#$yvyNJ$}Lw+ګ;gl ]٭'ekMŦ -cO>}U哆]ĹƱ1ҏ~lP%3|K})%mn9x*J$>}roO?j6\;2S:!e)(]GU㓨cVmkp?鹫1ӟֆ du<]P8U΍K.ȭߥ87c+yl\LX10,Z\FRH$t{<_?Wk3kgkikZ%x}> Ƽs۹Kuޱ:c߶GaS?ѿL Ɏ8τ|J@/tհ?Bkҭ4W$oZU`[ճF124[+3[.QX>S_~T[e᜚b8.dݓInO|~U*tQs^Plmz7{c~w%cdLEK_'6ʍ>hk!x3[Xu me;Exǹ-u"ָC{\kIVFwF~n; R۽G7Sr2H#>ơ'XV~M*̨Q?+O[J.> _xּU=:} =#m.3\ $ߕ}_eq>,8VIrƄ8ƒܱ[ 8n._KHJHcZW!YoFt@r J_[֟:{ecByv5_5V^᝟>#besX<ӈ"l<ŧbܿ}v6_P&V'icV߆Ub8V>!%d$_։BG:OLH2:Sy.kO-^NLV .D4V~CI p圤xoGki` gB>דddeԯ)^%۬5^2`˂GZ(( =\~vUcGה[-{]0,:]enL6]s]\nn%ؚ"oA#mU[n֗„FHLHs6H?Eɮru@jaq֤ z-nu}nV4gUoںC\hq+Uߥfkk3Lwru+nX0s1){0&"8r\~q'/yq1Y!ձlkXj5x= ^cume2#ݴ6}FYfó[({w6GF/XgTF=?Urg.\!r|g_Ɇ)OTJ'WXNTXպKkG ji;5sI߻Ί)uٹC3Wnu?fkEmc2N_rVYD{8щ*)P=qkFM$9]C,kʁq6c}S臢tZl6W$w֙g's` }x[?G*p?*p͍֠0ZƖW<Jin̸M|?lΗvvk2ʹPZd9^jxËN|0}<$[^َůfoQ,|W ՟l]ebUqݹՏ8q%rpdLe)V3>y2xwLΗG7N\>fQzf;9y>Vy|ٲfa3Ï4Lzw63>am).1^mПgWnsf8+u8mz}]$,R[fac=A>Z^inZk9y'dղئ@hzv\qȁ!e3r~8Q]Bmή n[ι2:ن1?[ToM;:p)$n54sjç:E4=y~k2eϔppc>cq8=vXrN/,F2uVv^sps6{[ ״n\P}o˴!o+xײuXVAuGZ9huXS~KݲI`tNKFr<+>Zp\< pώRa(_k2׳ʀ=r3cv?Ec2Av>9ߟqƷ'kV_2q:~_A /w3>0CN\U~~k.鲋ZYc|Zy?Svai4}=YQ25>(e.9H[ZEt4lv;7092X{X.GE:,o0vwq:~OQ]}[nkiD8kCūW}uo7p^ݻ>P(1 [4z%){cHo觟SsǝbB>c?īoGI%ȥ/Z`>5?TZ#[:Fɩipkxrv[KsQg~\7^UֿG.V{g?<3Zid>un[kkHѕ;Mkov{~L"'@+C?ת>o 9{X}s~pqw5W_s?kg6-DY>wSite/images/images_text2/Image26.jpg0100755000000000000000000006077507312212400016226 0ustar rootrootJFIFHHPhotoshop 3.08BIMHH8BIMx8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM sppPWJFIFHHAdobed           pp"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?SMMk]o0=kHe53};?H<̎]<۸}gc2T;8u,Σ{MV /CXߣFcō,p{Ir<"?(YUضg?5دis^*?[+_S]n>uz}\YMy\,~;ruum%ۯԫ *phF}52:zT3JVCZCX}#iwWuJWܛ ]NBb! F(G<έ[\qiN|*1V#7"{kc/o\Q acpik6-O]f>ד^ֆVnȏUP9w_jZXsru k\֝vhfU5/!9~,fO[[W3z2ͥs_38hלhX7cc+_Uo1]l-vgUy?'%ǻ,ǕxMMK)RUk-=?Ulmؘ^Gز0XX?Tb\DQu>nV^%ΌvXokckcSz߅UjfZۘ?lfʽ;KWd]SiWxMˣ6ŵi_$"ecQY1,沺}=K/ƹ?5}vL6S-{cMk;]ֿX̼2;vSF]_?g}++֮|&[3L1!{[kHc:w,f%qٞQl^ ﬐5g?Ԫ;OOn6tk{ܮ:~5ϭZjn;~ESzfΥԀ=OimUvX{ eV YgÀ'a1^/RZX6UG^OӬcl}:+{5բo[ZUljb83ccWu`sˑZ_͏47(KҬec+ab mA6o ܫS^)b%>oSb\kYy!ѷ"Ƶ?*w=M1K{s;w_h=1gfhod5+U(]^+H~ΰ{l̹Jw-y8߳fWǽX\1֥߼sO]7=ucrb϶c5ꔴv ߣMMY_qYVuNGmL?[ۺOeMe3></e.Tç'"\*r2-eUʕMoWw컏:b>}SHnAQXvǶ7iߓk]fFg,K"A&`VL ԙꖖK{׬t/;g9P׵ޣW?Is9c'++foNV9 (,c j $ }ްnn }EAy=X8ۇzy.vucCfm.fk)9.fmͬ;]V}?KOBwId}at 1(Yֱ;j윫 jvYꖖK{jwz7""s(Y89uk׎ 1*6z~W}gU&˛[nY;?M^i>boGc2:9Fc +ՌizUnPa}x;Yc]U6Ck+;l,$[}72m-z7H]W֛}=nR铂ϯ࿧mP_edk;+{6i\euz!݇Ass2=k?? uHo\GNt^_E=SzvM>rh[ya`bۋ{a~+,7-nK,v>^?NKc='VS阵tvo-a9t8qs}=eݿUL<ց]eVd Z׻u[ۙuuֿHr0U-k0r[w슟mNv-6_G=;}cm.݋yXq̽ޯֽ0g|'j^\߫3Un }/wԻKksC5e[Z0k4oΡg䎱s1*_lWu :TPss?3 }5 p&Ou5{tKl7|A6Kojp\</_VzS=gZK_;$0Yiݺ_~=2kvkm,p4ߙgO- =~u6bd79isl3w]y5Yu `.ꪦsinYc1hpA}o\gRyXYP>uV665YF?I]ޭ^ckA{{7uj |љ+'3Uff6~e#C*XGիM=Cu:kNok?EU~ʿ.Ͷ-5lmi΍PHjX;KN~4e~X}6Y_?ka$Wɧc+i]Ycv۵NOzdS}NlW \CinAk}^4jNmkkam6W>]ޤ]ʽ vf:e?z~I9]k?4/ ̫T oһ[c?֭|mK :Nf%:dX6vף4X斴7bGA0T1[)uTkN;jkYMcKqicmVOW증g鞺 ݤ4QJoSonЮnw9>N˲jobz}:ozE_Z98񶦟N(elAe2^;\ʁYN ya(ecz!<|\R?PNj#rL",sO,2cKNwR.fb9άaunk]-5,hjk}dV(a6K.eai7`e ]-Ya(HᯚVqbru(|>^֏JE-ϴ?7}pD"u^Ԭ׽f ;#֭r8|]OΎq V]Bz]1C?M[hoCuVcpqu[Wݍtշ?5ؖ-#۸ YP e23m.=RCAow5"c8[.f11D8%|^{cf+i$megwo5?]]*rcYVn݇`kceo,YWÙE#Dif :u_KhǤBָ2ed rgP,c@v6,*쭿ه7e獶[eg )omgb=l4׵X̀, Z毠3_KZÃb4>?dqNq!ş/dxsEGLͿvKlōm}.'Yg[67"?Kmu+w"~z]ӵna}ͬcOݶu5c]Ǹb>\z{6AγiBq/Gj̝̦N ~u~?P>f5YcHk?{?rtc*tQէ]W8̑9 Iv61ͲƻqB#]iq鲬mZ |056U.mXZD11$d{vwO엷uu"d9|*HOc+"re/_?G ̌xt|ޗk]s5edmk~XwtMF5'VNm={ V=qŸc*uU} {+s待_?kG/)jb47x?l]f[6Ż>_6vOOGw[#h땡sp?)a2qecشge?8 ד?d{2)FD=̟ޜT[F5 zH]xޛ~eOhVUkkrS;=uQ0K!?Wwg9uል͗ܐ'/Pq9ޭn=SAv=m/=]6l}`EmoQi`ko綛v6g8dSv;CZm,vԳKK4L8euPqݜFi<"r@y.9~8?HtYs{~3k)vVK1(.W/nvwz6NockeKK`}G+b>}YwM {6W[NCH?Mmȱ(e?Xrs179"@,ĔGe|b^`%)Wq8BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT 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 &@Zt.Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@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///050l0011J1112*2c2233F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs2F[p(@Xr4Pm8Ww)KmAdobed           "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?r~NUĹ:NOF5Y/KKyYY~Ϗ:4~5ֻޙ9э}[Mtzq@/>u+o\NwTqv^];Gl֚0$+#h׶-U'?Fh߳-53+XOUvv]*f<Jpe.[m SSL<TȤA}?MvX4eP̌km6 e2 oOped} %7{ ~Gchwc>ϩEdS]8>Z[EeI$. $wIK=쭎1\q\oZuUoٺCv.ǝu+?%f(qoMZҹX.‚y$Y#C0^k*酞䕪z}la\T^vc7ҫ8r]e[|>תeybp[t/Psjx74X~eMvvza3O¸ohSƬ?yRvk:ieyNy#ͱcW0kƝX~>OSyb(m$R-RI./o'cF-˹u w汿g1e1&tss[a?i}ֻ:>I8S[??wʝ}1~4QuA?Q̙&#Yv&a;aI3z1]e.O-ڬgҦ~G4}1>Ewt:׎Ɯ{<^zoYهdG6~I<bd/ȬlW~kb<t/u:V;;g-EoWF*7O}t>n?s4?F5sD9m;ŗ0v ?ַޞq򩿛Zw"(&kmی~*lw[ Mq 1U^ud 5 aqP{gvtu%k~sɵXK:v@,Et7Ycx-'asOw\PqnOphCI g9u`I7tk0U^Kв,cu-n5^0ѯ1EK՝[Kݛ;Tߧn;غ]2*W]Lzb9eQ?b,tU'*>0NI<l$eZm=搧rt89yÀ?kdv_ln1[|xG?&+F.+ՍIo}Ju_yO$H #処#u?q]X4I{8[pKYVsX5X??7N\ux#5?5qHbom4{M-m4筯]=_s.?'hpͬwkD~ bfSpe1Ը=s-;DHw}&)$U꫹FֵM^`r~uGtΑm;nE9ߟ[f9 mu$]볰v[wv7k{}F ̙TdtgY Yq-}Aƺ$}FέkݧC+{qlQNXYZϡXRvU]߼-Nz~vKX^/bz =W ie,ˣRߡ,?rD*RBXq x1=E#UöOK~z#{/ >&{ڮ#Wgĺǡs@KNj4.8jְZ͠W㧵կAݫS¡=$&u_`lk]Վ3hmd\啕}ttsk2O79l^^M8@n'P 꿰f_П[+w<;[Acumx|lwu ͎W׆VA@|Ե1cOܤ~ksT&?9[Uw[^㛌'Ϗjw}#^Moa¤ kmZJa^=,K>_l:ǟ^0c"cOPqV=KpQ0p5o6jyr0nhq/2*29Dwp#vtz.Ԭ | k;W*.ڞ\LeWr뇻1r^/YtGXͫ#"\Ɵ&envθ[Rq4yUF0C? *P,n5o$wqvh``h=_`'}.ȧ .쥠y.;fn|Ub:fzaҋXGhRZ-gji3YK.L-߯2p^P3v"4"q| հ3 mi#6֮_eD->,Q7_cPeqH^{߼_Z{cg̷N!G}Vk59ПSUo__6GX*Pkn8sOzWuOևcK^j Ni^est ScN]|W Z!+86=2xhUj9vѤvG>3$'}Ylw_C9 a?HC$ѽ`~Lo?㍬tmݐ،afaӢٴZ}'g7X$!Ys@Oܵ~}XY^FH5~6Uq2!dAc."XV[CƷ@ѭj $R>gu2hn)7?3Ѥ)عocb=Zo%z -/UcNav#uԷI߸?C. 'q؄vOPǩ|U0g[1ej\c0~.R۞"׶`A1Q b;o^`O!ie~0_X!>9}!m8GGRPOYrÏѯ]7^ΤkWĖO\%b>͋,a4oSae4kGs{zGaXg.NI+ no.[߈Fw7Vr2qYsLpFjE}k?n_os⍁tO9]8x)Y~wK,v#cqfI6OvZ+U$;oJ CӬK팴 \NszQ =:1]S(ܻVcWEu_AzlU6 q(;]iOy5_VlXh}o8H sJI)㺿׺wN=k;kfv澟6{Trҗ z_ز"ITڬb}OÖ >^'$:̼HukF[;%ucƱ cD5Ф6A$$E I$R1־`g9?958.$B-@fgXd `!֖YF85Ù%'Fpǹ__%,0n u`?j_{l9k\}kIA(q(f6-m2$TI$$I)?U:wTslnh _Z亇;*nc^%Fȣ.!fх jfO?^DAࠅI$I%)$'Qӱr89bw2Kw1%;i.=_>ͬ{ kGYW3$әvz~>i4RKϱ:֜zC-KG[]nGfE2X]ZDT^%mNZy$I%)$IJIc7UߖT|lq.ZXs}N=osG+IO;ʪsmox;qO}J>bNv55(xK$Y_Toz4:Aʨ]`~됤RTI%?汥!h%:$gWu^fZѧw?rV=];řQЮʳ:pA'D@H% k[:3Y^WGFX:KϸR#uXy <ƅtX:k3:c_c\t]kun_K79Xݜ2^_I,y:n[C-qӺYu%3`[Zߤé'1t= el|G.պ^{?X:ً F B}H@sH pANߪ=IUgLIQ1&RI,=m'?rIckGgޒϬX2wKK={[=..87nV_qzPo7MϰQܜk̀{O8.ىVuEKJRh2f{5l]Yh/ [+V9Zr\FmⶽZpY&ї2~" .չ;b'ۛ{[,8̖0n~RQmu?zvNM,o qS=ԬйlV?gwL{X?&ZI K0}ٱK9-kuިޓү#slTޱy e%<225.w)s]eI$)ߜFK@E]:OOw] 7Iyh%;} Ymn 6sې0B<}ENмkrC:$\*wS_/fC5Kk6=c}M\ihmvNGX]r+LVA ?.B[Z֩e]_?9|+3ek.\7!ӷP.ϺIhv%կb6cMVU~|KϵNob\Sw|Pk;Ժi ձáU\+\|NU>AݼI?5s3Km{|GKB}^1f zpIYZe7R_xg'YU#sH|KN虭gVn<&_.y'Ou!&|pnGV.eUunf9{4q.3ꚻy3f]y9ACvNơ?'n-+JnMc+zrcs]?u_m]:\vrn(V#ݍcaՒ{_M3(:ZYe͟+?W2mnSn1#CռQe>v7H#ZY+9tmrJ?{=>̃om&E9cqP}]V?V}Jr[ZGb}kя`k;wtWF[EO2W+ӺNq.݇,]fO8tΤp8ݴ.' aZKv%AS\:Ucn#˨cUՏ5nN.խkp'gzr[kFgd-}`e04;D᳻hɬ~5ΎUΝ]d$B0쳧abT704JGW$Tj4!Wj=-~}H>h+U9pĵ .#ӗXƲOcYӳjmXA]Uv8p0nxZ}]*YT4k|` k:# Ա¶ʷ~fjF&vG]i%.[/Xmv4xiב^{G譊?bMPö-N t:gzkH'rۺH0A Eh-5}\vgKwGw>Ej3v->#ۢzٳ}h6eva=E^]2,h:*;vR䮕ٱEYyා0L 3y-?nnٹ[I"Vw^2*. TI5kŻʧgEffk;W_ٝ5w]Ak11Ic)t]i5u\&SdsZsZx/Y՝FSHTNˎqrmk=;GgZ/Z۽L 83]8>JՌFW_{=VSS 3psTk2fmmm!ޓ;Lq6<E}fD\,[-{oXҮ\%}QgV9ڦ/Emsu[벱~=]?SWfǪ 4Wv=/Q@~.]b^5i)$x~k⹒oY: {~$k>ovo&hܲz/vEVSkNף+gQhv]?fɵϵK?e= qPk}d9;l$jMl}=M/0BӰ2>9KqAȼ޵ի73;QɥO*]n.31pXN?IS%i+bcbՉ]42#$Rg5icssNiNJ|HkUhRh?#^N1oZ3%˶S= SE4k{dWw1߹j -j9?D{-ŷ"3p,^2kن} %}O&ְv\A"ezv]閻~:VvGMu^6@"ɈkZcPss,Ĥݱ^֗;OS)7~?cF%j;7aRoA`Xq:WL3cmw WGg¯h&l^~WP%$A \n݊7^'kL@"AI@g_EJүm{E1V {NN\Gl+7e=W-=]oZܜz0XZD`211TNrês}Ϟ4I/GoW]IƉv4.QC1]umuI'/wZT1+F=v#T."?qKPZ?+ζ"C?H-I$<1=C[(h4 IJI$RI$I%)$IJ::q1X}EI%1cX[Z4*I$I$$I)I$JRI$]Mn>%''jjFԩI$$I)IpZk͕4-Wή~k?zI1%ލ\ꭰߒhkNU#~."#sΧKNrxL?|#|$ϯ#R􂳍33xnvv&}2Fʭ-O܏/3 g=œ&ur};}ldO~e-I vT,u7of;rO{RLC@ 9| 8OPx$LaRI$zf\Khgw˺oLp9KTkZ]s{eĞqW9nJYG1M_c='TA/, q/t~^Xfg$7T?CxWZ-k t|$X;KVncc\N'}wٺ63]_E:Kp]'3꘴ a{%P%_KS6#\$`HؿBOKX0;klwԃ1cױxksJ(J4HĀ B$I5 I%}"UQfukaMo񟞈 RzٖĀuqr29qy9-(2f]*kݩkI0~+jҎn3"@|h)Gg۲1B:8~iB?d}s^K -\vcr鱇_Z?NS,uxk\nfņ/Zsn'6N/G Hdxg?qO)C#B[À[3t߯]+.|oF5ak#KN5S>zO[P]nAOmA t8 ǭ;x3efBaG?_]ۀ9sFHKD~cSc $ec⭶{N45|!S $m?,erz"F?w~?T#rR1L8Aav(cy}g/(LWN5{v/WFq1Hr6,o7Kuگ>0?D=ay pì{<_o2T26ly.{su$I* 4B6aux0Dc][oe~\7q2׌{^^9!b.jIԦ<̰J8)HYgrJvF1+u\{)5k{UR:EV)tWX9Ns"K`Ȍr΀γ?,ctq2J`Ugšӆ]_g?wlxCtlq?l\1qE]&IQ#,L*Y ,FJL~lex0J@d|2I-:S[fՁve.ӗmɳeQtw.[pu|kǐEmo{m"fok^4^G??@mE{K gW7#4 g]-yGeqŬ6 Y6WXQNsledF?W1NsڄeG?=rǗǛNlUzy|_.ŵgnCnP}͵ȳ#uNZi][ODYGmoB<0J9/wP~Ke|C2id^ߣ}_y]}e>&{cަR-ŊDGO&k'ۿC< %C&?Q|13,G&_ٰ &_ߓkq{8LDv(xYt;{ 8e@Q{F+"捭ϒ,3Fd%FK218ҏI6Uֳ"lsݬ@ POeByb#9#+akq3 YI:u-:dY鼓憻]OebYN rG !ݜMFqɫ?sr+3nGcαȮ~wf&I>*eMc0#^I\v3ԵzɞCs~cՎF7Bj5KAL?v%RrЭ]^; %{,X6tϫ޾=F\g`͟͏jdL=o) 7YNHûhrC<,<#X?4k?ˉqc+&voɰ0vO[&οK?x?rlrrܤx GY_r C`0u<^?.vS9ZEԟiЃ?G1[̝CN3ecI0=3FQ>^'˝Q'cUJ>͉F?_ ˝ss~ګUA$j}s9XllY}!xAw De90ۚm\]5ָOmoW:oB/W; zt 6scoTcsc䱮hW'Ss4tܒtj6ܭcPp~s?K\ y?aiCd|.%=46Eُh{>z:A[v#oUkh=CӑUѴٖ9T#[gK=Euou(ʇ(1*y?JI99h O_YsuE k mReO/w-iFC&8&ݞS%cxd#ŋ'^z>ܿ7g&G# N>XW~bc7SܣσP_']?A=֯fǬ9/V]'tpohp˷N@F3&1>Xmyg`j7__2<ƍPNQB9U>Y0L 1.'h¡c߻qԸB6Mٕ3u?EJO\ǚD%鼟8٧GB ~oz祺oTi{ϋUN1WO{*l{!3#K-Q+~ԻPƷ!鹥7Y9cDem*Z\婏[KP~6@.aFse%ָ0#?LA[r2 ̎>u^wql,=0\j9-v(?=*fI?խVO@X{qȪqsD&)"y{ҟ}#b9Z8I?x R3\ʄ0 *蛊!2IFFA-oKc㬭5O\٣'i?nՃ"lcq>}X>(0a6 3M˜G0}RV̲otIg\8C&%\}\J75>t" ߬ލܬa? ڛ zKgLC%/̀4{_3$S;+ ݺ]q?? jFC\* -o2_CjtX|Aժ,/=08zdt1r"q86ni4Fme5xoWzxõXOAI7[o0ֳ5v7]7 1#,w 6Lk: 1(k Zrfc첦~OnK":矼!opkd9nd3W'$b8f1Ox?:},}R'W8ֻ{vz?яZF~ӱٕXfnC@ުT}{Vv>ݯ]|g]0-3F/gI;>E־Ύ[q} ?+u,rBt%}qu7?kJctj_տO~]x]kDn3xyVFO7GHʡy/U CicyCwutnv-sm/vᲒI$V)$IM^p1ͬYY2k>cלu}_Yj?)ԽE!ʛ^?toA5:gR]W}o?ey;7?1BNi_.ӝe{vȓZ]wUi 9]@y9K!?w)zaVlO/:7euq~}V nn8Dܥ[I$Jn+źI$;"{X6Jz4kdLH.`'!yL3aL]mxkq=XSWc51һeuU?U2fu lWMe i7qN Kˤ }b}fOAٗ kucmF*o?t+ ՟\&eCݟd70u72τ N! ӑbR̽0jպ_k\aiU_c+M:Of;F9\j5ˀOo b1N=u懹AnY˯mET;CRۄ+T޶&KYWs[\elIm^~/gՓc"zkXwE[.sZ2u9\c7pyXaLEC%G=m?WeU_rϢ/ȏs;S1]ckMG.̉`MT3m57._}@36+ ahojczv˻!ĝsoñGɐ#96s7Al:] q] n-in"_S7nc(U3x٣/hQVڽ6WyN[#á `qe6Ƒſon9┄D2GXD&mJ05ߤ?j4Pj6`A/Svޫ[r}Rݍ/їV=‹_5E˺M>:5iq~IsɎ13# M0$짅ԳuV6}')tt{2=ity7n^3`u {K,ȱ?Ut!8+#UzY],ՕV-^Q +5v>^VkV'֏X!q?{1?G/@VE39$'2DŽ'V9w2ퟣN }Y]}9"@ֺU>zKוEmh;0zVa鵡M1{ޞ窆w a#\_n_>_j`-`k?}%u)[R?U?bv}5O]{{+]" _pyde!q~dX0NNѵd;an>/4^h~\~רV&-;Ysk,ow;(>ҺJ8c;{}.V޺߆|K!)p G_rv׵d<\2WoEAygP 2,{yݦ?b~}mgY' 02\k.hN}+)~ic4*FDKgʾS]UV܎7SSc%a,┶"iXqo$|5'xpg^!zW:]DU1>ҭzvMt[i3qq/ݩc#{>>}ro^݅Sԫnї1MձB9eLzN2c9LT 66zHvL|5a}eWDTwPZyk\|sϺSFY7tǓ)a*3F&=ܯsO>ןCxp,My6X.Zs-g,ky[`%ؙѾko`qWfo5bXFzlU;/.8R>h~/zkVy-.a7tT4Y[4 !,7cI}$ mNJ#h'{&4m?NYowL=p| F΁=Y:ىcmh.gc]f淍xӉ[e8{ʱw?G%wW:cώ_FZְ,#iK/MWg8mV?v~KmvՕͭ-^!׺}+E|XgvVP1"~n#d6GsX s/[R9xunὭ?fn,{Z9.?w Y\ZE`ΌADW#` > \ӻkc׺eaF[s?x^6&OP̣R ȾS]>9s0W)y1ZУfw~VlwE^s:]Θ}9jZEKucRŽX=S#sn7ְӺV1曞Gv8V9UeFZ=M^d27{nSچ| j %D|Џrm+2l27=Ɔm[n^>}OE{C}cGbwSYhmtaγ#"W[K濷kpt͘G??яP%'c+c6!x9v#sqL1ƳQk]oob& \Ƃln6z[srz5y}F`X/'Fr~}Q v[Hs(k?ls}Lo]Cf {F0U|G708MFR~Qg Ʊu,vnйncvIO$NQ؆Gu>wԱX?Gk?[kF;.ֆcLvϣlV =oI3kX:5hp"'7aNv~{wQ+c}1yOilm޲RIgd,3WN֟2w6W=2Gp9KuC;*8qzRm?Sͳ\u|?GEmjzZ݁@m`NOv$@=O8<$~xy_;¾r9@#UuVma8`˝emooiF\hMVƽ ;{VŕNe7:s㽶{O_a!*;+_}qo]gسCj3tߧk!NY?mt3:nm~5Z~kju|9\䗨+=eM;mꗷu4KXjr8??NzTq9d.Xlb2W~CkemgfٍG ~C%swboc e\8G,s$'N=W?O̻Zǝ2MV#wuƜuZķh܆4YelTﺖ}6~~W};Ymvmhrn.:g :>u,GOSdvsp}j JV۩"$h|AjOT+fV3=Rlc.`մ\oGGgmu㽼iX?Gc?[#9|xLC6 A$lR[X4:T)hZ;ԯ+U:~ٴbrlmLh\<N-6[S|Z'wtG ,Ofgp@ۓc?D+Ue?9xF(3?B$8BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT 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 &@Zt.Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@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///050l0011J1112*2c2233F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs2F[p(@Xr4Pm8Ww)KmAdobed           "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?r1pߕki.{xZ_c`f˙͏&Jcc΍޹ߜyfh?&̋:-BozzUq9w_=Ϡ5 )l10~B񘌉a X̺םUHRyB|8ߢVtU"}fm´؏Y<ÀXU3*HX4eוe74>ࢬI$Ā &ԓ )gc1\uR]OJ`Cgצ=d}lkq[YG.Us!U甓P~uD9k_t~uL~Uiek<>$!l/K?g+`F>(I-@T#GÆ#/Qpv5f W_Pḩ2?ݫYژ4?V1)>KrADX|(ӺT8VkÇ4+KzOWYqkG轿jn1y>n ^C8-_z_bCKLIZ/vk_Kz L'_Dj/x.ܷ -KMўuw-`qߥ~{?e |122kİ}FX5gs X>_|fzhʤvqX>?nwTz[С3zӍJ] heGrU1pV Û׳d>Uc?6*pa80ǿR#evq71,Lzl|Z)dd=v3L`DH,jJ)'{O0$(Ͷ6A>=f1l?A>U|nH{c֞MHߋ==c>ۋ^'k4}an\;E^0NyW-Ci)@O̯WGk$=d}n ;A# h|?ج 2QM_'_,=_FYw^##X͎"=2{r¶sVfi?*2)@s8 cuB>gauaa_?<8*91"w ZbüԩDH>- qS! (Sknmc^>ǜquѺ%5ȷ8Oٹ$:y]spA\kj>1ֳ7ŐJ\O@ĞsGb*xαOڢwS\e{u * sG-.?3fZ{oЯ(j+f`ӫCU^=$$$>(g|P I~i$},5ٷ378ʺC$Y'|=> _oqw+ch|Ӓ"fiU|h$v8Yp^W}R9XiZEi~b|JWw6hl zX]Svʗ|ov^eˇ`?&,c1tgFo3YwQ5'iu9>J8'p|Uqc% ׭J͕}Z]*̏汐 ?QfYWʷc5KyX(-DuGso\YA29VP.fEۇtƣa?ܖ554FcBXy}TI?{O踮ȭh[?)%KrcoGtycUmU߃F%y割Ow˿`?x8.V`JƞLP_U'ںOdvo~ذLj̓88;. UR&ԍ[Kꞷ1P)vV\DPng^5_GRv3݉s?zqcdl 5>c@67kjVͯee-=(G D|q2/'I!Gqo>J҇F*lGOr*AW]vh}vװ:9y֎,6Ѻޖ;95bo9=K q2C(#^exHVL<,`ls: #wU(䮓iVeG*ODFp?ӡ;޳{a#X?]‹hcX5R\\$_ɔ R_}z' .azIG(V\9e$rC^c~,aY!c5j>]}MԴje{?r᭮ZwAbLe>oD2>8lTQ8U$=n3hKY7xq'Ugﮛa(J;ݙpf\=_NxL3{'ڳ,v<ےdĘ2si7г;_sGE%o9BZ1fv&|=U?_Y}-?|V ؤsUD+<_C8mZ϶X52E ,[Ɍc1hZФ,\)$LRI$?=οbv&W$$(_.LR#vgԾ\7k<=TkY 0ZgMIQ!dŎ>a6zUƸKmϻ[}+_[nrhqI{+eۇdxb1mU3FDI%+I&ζI%)$IN}#{?=o|\7PXN=lΨp\Ϋ6 +yشv A|>·*v:~KOS(V>_{cv5{TLl:O͵έzIa?EtޕV0ˣW8>[ITd}r\ I$II3ִ5ܔK_q\zmmhl2ځK%Ĝ)ho-lXgG}E%N}}8d'UoLWھ$X{y41'ϩ$N年u}h,uD[UD5)LSxgI$$I)I$t;rۡ i_kN9E[$?a}dʓMg1g~ayY3ɋ?g8nYkIx/OZ?2,:7ǹͫ)3IQG=T)!}4{m6 e2[k<9DxL~n t}!$X̊\߭v-[lުΑүvEM{xe^웜\縹ĞIԨȁ@or#9q&q[bWs%yI$93gQ<6э*=I y iq2uh`|Gg$Ƚ'DiST,4ĩəBb%,j~væxsXCCB{E#XZXzpAmp0%ǞbwG}jּ;@-?{w9Oz\ƺ6q#Ph>֫Dõ@?Ukbr?UXѭ*?pvpoiÅv԰Sg`[gzz K]'s}/iw?wk4Op쏬?gYSX=k?ؽMx=ZjX.@̞PRzV1Ąu#c% ʾ_OCne?vߛH+uop;C]5swUO_V6m6\ʝ)k!`VZ.Kp7USe [ŧԮÐepysLVaI&IQaj`iѤ|YF]3`9ap@uJ :m"8e#GY2D]ZϣcCp.\z6w8OWW$E;3Gs;x$[& Ro Cǒd|">oG!)ưΪFͭ>Jr sf)vwXAG}EWNGe%wwGc\VVvK˭e'ɪ<6\7{ 6\1dLj%a-;3N]x n~պElv44U)'԰PwoSٜOh,v^v8ă3uj?ҮR]\ǨDV1BzgߥRߦzWo1y7uO\}Fr]t_OW~ȫ"=g #øTF^LQNү芋F80 JvK60,w:QmDCD׵_d5@0=n$O>"ʟ1@pJw8/ {{(F;ikIВfH"V{In"H^u?SuUr7tyg5LtU1g] 1Ǐ\x2Os caq 7Q2"%/&8=D WsO}7ӭzGEvoKRٻR94Orb2!a";̒=PypDn yre&˂47a!VG,s\4YnJ\&ہvΏhnƪI8qq:WG]!Zh~IL1+m`6ruVs6s<@D @.x%7Yָ2 @q-._tw[8>,q<?3ae1F]6wԾ#Wqc)ck$*;,-orkIzg֞,9ZܹInj\<WO3r,dXcEkk7:MÃ#~F$ ێ>BN`is!lR>u/q:Od&5J[ܤs)??SH:}eǓ(}ClCfVuc{e_K(BTRne$@1.F'I,9TޑwCY,Gp=zFwgޕoZ5QdwVϥm^mUM/~5}?~s11qlfnn׷7Wu΋>x1O7ؽm7?ع -w5IRd+kE`dṼ+?wIک!䃥vg'3͙YAD*A!q!w%a5y`~ckP0xiJ 8>:"bbnCO$ьYsqDwײv4.IUr`r/>׷1m}{ZϳUϡY?uo,,L fbigc9r>"~O KbUNZƏ~FI%aRg5icssNiNJ|;&IiMߣw>?lO\!f MmX6iW׿š.}8MqkryvzivK%tJmc8cfFi-Xby-xs ^<r2E>vw908D+)Ծͭ+潶uH0m#57T?8g=锾>?:FwWfw~kXcWNzux8چc'tl_`Tӭ:+oLA0lҒI%Ur꽴*5~Bl$(<3CBCAw8rÅ]k>>CҜkӏ.6ޑֺAfbXڏ+? 7uwps|^d3qsÈR] uac> @1LN"vMĥζӵ0jJQzQps8Tlm1?w/@W:wE1!,ɲ7F5I7Whp/WjXE_ɰqѥuV(Utr=껷I$gO(kDNJRI$I$$I)I$JWhpeki?($64?I$I%)$IJI$RIH/Ɠ:뮿TIVTI$$I)IpZ]mk.Rͯe!e昄[:?I&l77)8 +\O>#Oڳis19bX[-{H ݮ l[ן~M=V֜ RF_>orf[,$G_+xHNǺ^8I: . El%BO{bdl+h U$!f"Douy\[( #g.חoeۉbH08Vjž +qO),$ĝCұrM 7(n~Y8xGB\ڬi!&AŮ GUkjk=H$"a{7ө>jwCq"Z"W#8\ⴜt@nGv Zf7^h U1scuAh6&ֽIiKZj(1|8-!o^ڝ1ܖ+[3ⶳFzZ6~=gVC.Y8cdO o?A@P^))UJ,ZjkDzLh<} UY}+1Yk^ͲVns\̸gbyV!5Dq hVS1m}88(~u k`rP?jgIFo={p S_2 6nߚuj,>oU]- :ZYY4_kN1V88B.qv;VDŽSgr2qMffgqw(ycٍe74 O*l9N<,>Ҧ~^k9Yfq䀩n B@iWV2TH2dIL#aFEǷ۷jŢ̊qXmI^W} yʴX;>Յnx@R줒KHwR޻6?I[^iNjy7_t\fbiu+O\糓_,N6~A.ĴHE8pH9JWO#,8hDxADJPf6Q( NHQ.505$ŌA'@2ޫ1}C[?5k`D?/g~}VwG9-<_]JJ%~#dWYxkos~O!h$eҷ|}R!{rGT Pfwmwq{`#?n<13l0DF(rˏX?N_?LI~|qx<IzbnF,zFls{=Š{V1pWq!/|8~E$JVI$=7 ?:m/yw=y^WtsF4~u~izA[z|e]_xX׷B cGJOw t@-Gs_}Te896+$ȟ {*k1q>S~1-p7km$N>#|]m)$LR_[mѶ%DSX?UvGD?hW7ʷsO:ưՑ[鵼Ɩe?֏/[]!"c>1Ɋ\ꀴswoȜ?O Xz4q4Ų{z=0K g8FnG0oFMEXM'llgl#~~}8s}~$$NkL=JmK}k4ZtNrmڽ˖+;e;c+c+)_}JbԜ;c+J]r@_ps^gsNfS23 czR|O3ڽ:w]ukW3\xse|eny_ny?awuss}9GJggM|mHz!G(U:G]@sIYY[<[g@֕f;ZLtZ94G#T:*<1cBdPB|R;lcͺX1c$>W!AJ|BC'!rg( =YO^B,|춑l+2Y{Wt~Rg~^F=QZֻH erޅ;+sӢY=Mg{-lc:݈{=|iz{7Z+Fc1\zוz˕w(~Xurpͯ ]`^X?(ERm c?keg|˹||_ߖ1Gku_*n?eq.~~.&VհqՉI$tٝ1ld22I$I$W+}kdłxQ&HּwI$I$磎rkkת8V3秏}kI$I'E2dјќќњqqKh^,Y#d_Cbf]"/i)+%GzGz>Kӏ=h91W0"~2誟ȫL֍tcīĦw F]8,e&U{@F2zCv_cX`.㫙S\pu sj* Uq :+ hVhVjWC=X"lY4-s7N繿/R.&+r^WM"H:A_O ɞ6BWr<V;?!Veeee)LV[-----------------"QbzoYoYoYoX-W-QrO:Fh;da]sbwY袼h;QĮR:x(uTA:ϒir"Ya<缣QW\R XՎgN8$ܝJorԸ^15#-C Z2Fl_O0ȬR׀c7X> מl\Z%`X~(2E5Xbź6l>xdwIg'pOcqA.\bX\{M0Up+)ax C)M FRTRJ*TRFAJT\v0+*/[ ҥD&q3au*TRJ*T#O2DǛHm{D0g ҦT[RI$hw4*TRJ*TRJ*TRJQ^=>H|<$y'>IO|<$y'>Iy'c7O$*OO|<$y&$y'y'-[o$i?!G Հt5_Ikp0〶4_^N c!*˗ʋx91KB0xJB, 5 a>c»;|5!>- oLBv0) (}P(%B #YRGXJ/Ԡ.a0u9xmǡRJer3fl͙6fٜM,[͙*T RpRQh`8-L#U+ *YS%qvԫiT/,>ȁabD45_YAC(`DA|5*XPIRJE}#4iz?!Fl\ف"?*JOY܉SYщ\NrJ k/% `]?K K"W c#?C8sq\c} 4@8#L rŋ,W%EAK-R0cGsJ8˗.\Xb0e\,45E.\rŋXjt;.r 0bŋ5ᗀqbP-[Ōcc 0L8 x,X KIKQV^^^^^^^1pŋ8*%DV|oIBaqZi ׌=CA<%x S詤_ :E:.פ# h@ $,RI$I8tL cI$xgG.Z$I$n%#VI$2I+Un1I!'[zER\ؐ"u*m@$?]QQPH7 HD:1o $CaO )'hyRI$5\3 VI6 6H!eVhFI^LYeMb[gj$RK$ƺ&ss$Y,4L6I,%)+A$ 5mf+$E?^s}o-A}z 0`K/7fy3}o7fy3}o,O/jG!*7fNs8 `~w;CHXn9n3Tsz[!5HZA+5eA\8>>Ct%u}&h܎Aꚽ@N1H5Ћ]CսD-[_ 9VoORKi p%D0%O0)z &!2a̹Rdc _9!c.=? YF QrxKAW3SpRZ)[ƙt 9k])^rH>ʸL!zĉ'R*K(qKRXB3O T\Ÿfi~b'u4a5|W\)0qSVp_2TǼuu!T~P4t9v\耵PPbfD\N_jVGT4g:cJ@wxi* KTyS CXAStŜA[Yg(hٛS*i3>Uz<3{th#N6?p9=\Ya@|W*@Ny KۗOB1iO(p6 $bsc,$i$HA~g<;1̞p}}7cxo7cxo7cyo;7Yp<{¼wwwL}}u~u7Sn{y;?f&\k9.b։/kE. YdOl!擯tt\p`~fK=3W##`98 +,^)zN[H B)CpltQC.u=!`&ebʕyrCC)\QBXPaHJE`-Me5N¨B0QHJ Xĩ,()sXTT*:sXV3hbD*T @n!hZ*gTW`!EahD*TR@ \l(dW<Ɛ :* Z6vfS0RJ .AjteIztPTBA>CERc7'X)ʹMMMʌXCucR{Rim >'*gWX X:~Imz`\ܥJh X(eǭ]V'"6 }|"gSCCO*HED"9a @?/3,|3&s3W?0kypFy(9LDXe s ' głmFG F˗.\r˗.\dv[|M?de2Lܹr˗.,? ȟ7jbj-b'LH'jn%k YnkVD^/_fY{ 9<ύ S6dhg7`lNJu>+DNoXpF;j!ţ%a."ApobeW ZLC+0B|rG4ȵ>Xos7ɆÈ1ns~oٿ7߄C"4a,3y^p8a±\o%k6WĭfQzqj}"Bɖ:ıdeisfI*TLaP`cyjUb1y&PZJ1|$=" Site/images/images_text2/Image9.jpg0100755000000000000000000001226607312213566016155 0ustar rootrootJFIFddDucky<&Adobed D       0 @!12P"p3#@!1 0a`AQq2P`@p!10!AQa @qPp tyM͸-+ HD$L:#2AhZeۗD@iؙUQTTݗ̸U:'MR- LllXj0Xl*YզtҮEw'lTDD겔URҮa}SBGiܸeQI)l2^}]yG9NTDhPZRե%tQi1 g"#v;̲jKV@DcZ9;8ʹy~l.KBjղZYib&wjNm{AK-\bZR@E/ ׃=sZZe.K/I/Qdbi9UǷI󞏪MކZVYsV߆:%,D,݇'y3k}Oj's,l-Tlvjտ^1P KF?>^?An՟@RRժV\N%Dcݧ?GGcw˨ jjK=S]@F?ߣ[a/_ns)ld[._mye):&>7}3(Dz]Rղ j^SD.84yʪ"SgZRZi%F\TDum-Kbl@.9]=yyUqf,Ke-R-%\"1q;1f[-RتRJ1\:wXee-R- xQ7s:1lХכ{` lۃf324jX PގSg!!-諓ZKzɤqֶ}$Q'0uK%Mى%QZ=7:hy fS+/؜VEad9K\޴Od vAzAAAAAU֩YY,zm_ [rzވzC?~&Gd;9r\s͐^$I&qn$ۤk&i$$I$zG/R2,I&I$rթRI$qm)qc8GT8lp' 8QŽ58jp\U0҅6F}Lu8QŽxlZh=6ײ}J-Fw޲gCt2VZjKVBѲj%%k&Zk*$:bug6X|&lXG5$I^Fr3{7s3n[um6Aimj[ yw #AAAAAtA38!C5h%lzկzNk^Ud񬣾6EVn$I7"쥛zrI$G;9\^Gb~=6AFodzifzA=X#<`m꼋}~5}_wWZѤޒb~ekZ7:zMyI&r?Ǘ?[q?5IVZo=!!ŌK!@q2i"Dt6sraUDGD&ԉ$N2 E N5c=mfiaG?!mė/R^Iz%Kԗ/Q=lso-r& jKԗ/R^Iz%KMuw^|;ڣ:\* ؖ-M~ju}RhR$NT:4w(RqAP!(:UP#BH{HHݹT:Tc6؈cݪuv8#JH;`&[knd3j7a~L#@$H"D$:R 39Sƣ-d6Md!4PV*=TI$I$I"hNϙfHэC,UFU'c*D!m<7ĜYϓHW-=!2ZԖ%>GemmZ6Nb~T ̽"aFhHYE4$-!2d8'V#"X=Ж"i G|o)<kCS%UcΡ=BUCA:}I^P1LN [JE uwY=A#C#CiW*q.mɆܘmɆܘmɆܘmɆܘmɆܘmɆܘmɇL6nL6nL6nL6nL6nL6nL6Q*?!I${Y>>>ۘEI6RPM$I$I$I$I6|% \,V`@.0ATAAAZذzAAt X`    HQ?!ND5#Q>)5\!Wa%D+Ʀx3_aT5yݗ̺-pģkm=p @N$I$I=!$I$c~կp$ /l%qH"0AAA+`y   :q   vc{AAtdXmӸ%pMDH$!I5CoU>:EM? eit-ۓ4ρuqU iOi4:>r9Ϧ[fՅ6,h0x Nə:y>WŢpDд^z8"@j?sXJjT_RDLXHVJӕUB;5{y;eQ:u!V!1vc8EF%I c:}ռstXMűJBBdPQ&%&YC:Zqd CA.-!i HZBmІt De(YfCbЄ!BZB T-O7P?y1h/APKbJ!hF#]IP)D1;+o*OVyDff6Pf/~dlK} W*_CgGOSrź7V&6sD Cɟf! \g)[aU˯ZƊ5}EFƚ:AƬ4Me&aKrA?FY%кrjkέb90- v3cKbPBcVfrbJBPF4CJcxtU+2gw/`"7? Kwiw'葁aj?"*?B_w~u >Ku̿D^/CQda!c(-8̗{;^([׻P+PDG(3a$؆/f' IBPs{VBLLj6dƜ1[G9`.;k!W-7㣜se\1Ebq$66#[Dʫs}-tOS%BDI$6#[XIG9=[eLLLI$I$LBjr9{*_%LLI$l3jؤ2Z)$I(Juw-&1źU6gLOp28}5>BI-9]s2v؉u7 Y9cqDDiHzv$O@2dɓ&LP$<4+*      fTv`6!6A #@$etԑbNJeLRE.\kV s²4L"D$H"D$m6C mmt%]]]]B]] vAA?!C2 X> K3C\QɈxlБ3!i (nai}`cCX. 9*!v5 H]j2BdˮONBFBYA0ɓ&H"DbhM}X;f2Gb2     3QsYgD1؎BF6ۑʢa, K%epDԋKcb&HV8;-2Az´e~0A H   hjh6<W͍;P+ccf*!]WrƔ%eX!\I$YcwNyBUBLI$YcZr{J$I$I$l%ᘑAbbdI$IQc^ޅ3F՚RJ&m?Site/images/plan.jpg0100755000000000000000000001251607312343760013377 0ustar rootrootJFIFddDucky<&Adobed X L       @P 0`4p  1!4Aqs0@P`Qa"2 R#rSpB3C$a@!1A0QqP `ေс 8ph4|h4|hGdWdz ߿7"ǰj *-{7Xߋ$ԓeˊ%q]B9bj/o>O=~9}3W@ ܣ a0L& a0L& a0L& a0L& a0L& a0L#_; $?!(B!B!BB!B!B!B@qEQEQE} +QE} (E(+QEQE} JT I$I$I$I$I$I$I$I$I$I$I$HI$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$$I$I$I$I$I"?FI$I$mmځmmm$I${mmLvmmm$I$Emmmmmm̒I$I"mm;mmmhRI$I"mm4M4MmjI$I$mmu}mmy$I$mmmmmڵ$I$H-mmmmmV$I$ImmmmmiI$I'VmmmmmmI$I$IIIIII)$I$I$I$I$I$I$I$I$I$I'?%")R셒M&OtaZy_SƴTЉtv:B2G,y-s98޸iǏ73Fub[si0eλ#2g]v3̻c2g]v\zuλ#2g]뱝vUhtLv9LnMimH!%̣X eλc:f]3.u̻df]뱙v3̻df]3.u̻df]뱙vFkV.Ӑm[tɼnHɑ褺R0D$Knۨ*ٿWHϜ%D؉$EEw_qရ%7-]WpI%:m]G/9ޠqOs`{hCX6:>~+J7KvD}}?n#z2{$&+uԃvuDǺh|F̨^1*aY}yW毓_'O5|j@`xɌEBδޗykbPhIO'廽r=7 WhrZX}TZ$ -@7&0m[j9 u+iz] \N_5m3O-=9A 0:0mP 67grYõvu3m7YeyܟƵ[S<*k2Uԯ,#-@1}6o0dCv>k4b޶a3ɬQ^uiSNdmU`-A^X7&02;vhTQzm0g&O^\3]QQkFq,Jtܘ);l7n-Tzf-}:@Gh60gIΎMcf]iz][*o&}TZ$B8-@-}Qjr##r`#VGҬh^G$8Սi};,a_D0 QVܘ#vw)R׆jbN]^dsd H#9'dW@-}TZ8S%rܘC^^>n#8Hp&ZlZYEAZXjWd s ܘ1\}jWqb-*lI~gV3dQkF@QvTZܘ0ź^NvWוn 2`&QkF+ 3`y)Jt-}+M`Jsа90LW"[d@U` JrL0 6iL ɀ & Ƀ&>-}>yA O"3pȓ\WJ FQ%+W\a @4\g(CEiسӫmY]xG.>8Zff XaL Q/Ejx:̄+ hv@A je6f] iզTjhU̜#` t8g;xh} 7W{3*- ](fuIҰ!^(al=V;E w~Mi^l4~IWr= ;9BE^gchi7͆.[5UY9Lx32M2d7cgMBwWI<{}tf}'Sd7bʮFd<%0g:V{URTk;UjZOQݮ&m{Ԫ-OΚOjx?X1;g{F}_Ee6Ԗ#eH&:wVuTUC\m֫(VW^FЈ3oumRi*p6kiڞ ;+4}wu;7ͷ}+}:[ ;"{Wq{ճ9UT] pOVԶJv++b@p;iu{妽-,ؚ̨/.,UT~=ɓ\(Uw)if:5tvۃ%UZZ5z?[Lx~Ef_(Y=$ʭ7~ez*-FiW_rhͷ]eW~O?Y~^hiWnEQ@e3 S) gezhנ玭wFVݶLQ P%*9mWGϼ9:硪#sj y+j6ImFݼ)1pq_>"o2S}#OKdZ$Yf=y+j6I: 9' "DgZ NVsZ6 ,×.*1 PC>61i&LekUMϖ9uI\5)?wG5=#мgϤr/3ketC={ J1!8Ve8cIxvH<]`Ts]V-/Yay#}4l|'I<]e$j4$5:fVxjȸg'4:,T#A6@㿖}ʼ$`BgaI)9#5Sd-F]W_x4ש{ڜwϤr7w$M-QHתHHTÏ+d+>"xz|"њP:H[ꭃ *0#jjrxreG4faI:7%rEw١O!Ngq}aۨsg9=nu3#G.lY4MPzt0$&1L+?̤\Ҽ,"Y$7X @TQT`#++ lw9V}tW$M 9]S'M4cd3TC8˽F 2ѓגѦІVV#,Ñ7ij;Iyh̀ma_e~א.*1 ;n7BMdg݂vdFkl2 6xQَ+E3#:hq E P2=Qp ߺ Qf/;?}cݺVO#6TD j4Gv8>:/i_ "Jf(5ˆnMnHC8 R.N "q"MGx$C|đԔ:roxrup}FjSwWK@TQT`-' \&!\)}juX" (NxN&3F7SQm2NG$a=[j *0#7ϩAsx_35i`grg~_؂s;?K0j$3MAatkyEgfI$( #Hn[fh~Wu򖀃I&ν\(Y8h?J^2u7t,XրVS/ ZmS]e]ĬNbDdƸX"9r+ 2obn2\MmV9rݚSC]}iz~Eq +9^X/(Y.́.hT٣ ^J,s nБF'JFf!zQ_j`f,EwJ25Yo P3o/U#h⣷ H0U(R؋Dsa#BΎgb9U]5YT^FEͣg.\.031(Le[:-8?EG Kז2sN鐺~~?.Dh- -IW['߆[y*̷߱łxٙ>x^%$h:( }62S,UN AV[?v;l)D1R pXQE)%#uswQj g9w!fcVcԞ|8;ׯfV:JiT~~?.Mtbx6h'4x{sVn[y*̷߱łxٙ>x^%$h:( }6DD8:'1EZ j8r/$|U>:;M3\3S)Xt5S [bXlzeyaCYzdvG8"mjYio^Hæh7ebgOS"-%hTgڄ7馞gY# `r(ejNo8@}ݙK鮮crH>?!ҁo`|͑l[c/k>=@𹿆'GrBU[[TY܇d2"aʳsr\og2NQC7Y#@܌DLqzv޺kLi FgXϖLɣ(Z?k3;آ :Z{Ĭ?ha4dӊ'O&ܰNdD't ~~F@կM28.*\@xQF{ OrNivM|,cdr*EAPց fJ!Ӈ mDwhS5h3WX6057%^Ňzqm.&n#wiNxgS8A~T9Khws^eUǥi.aGG%y0/NɬO,s\[lAUEJlj^ a|%EyVW Hcsz昳()쬩iʉ z\ b1c~^WM=ʣHh'9|)-NG[#sIqgӊirSVZ)O)},ߏU(!TCml(H* uj!\k}3PCpUPvz1NCA_]8z0\Q>c-b8炚)Zt٨!*(;_=d0W^7 5G,&rլF'Giک蠲x8"e2VhZ7;=4R4&JÄDi PR9>S2H)H*K] o(y=8jZq64S(K&-p{o<Մ0q7kq (Gg ~}2hKcRm@?4\D[XrJ #mTPJPrf\H +7Tg N63`Z:-y43 #HkXNdD'{K%A:-Fv< 2&OE(y43qM,(cl2o.w}|m+Děƍ-auOM5`VklSC/̫qX@6m0T(vV"#HR1$Jl@[;;=4;E TrD-k=݇7 DRI$I$I$I$I${7 xTʓE$I$I$I$I$I6;4RI$I I$I$I$iT9|te$I$I$@$I$E$1uDs:mRI$I$I$I$I$] 7e$I$I$I$I$Mk>RLL6RI$I$I$I$I$he$I$II$@MM'CfMRI$I$I$I$I$i6òm6e$I$I$I$II4˼jtiRI$I$I$I$I$ɖ{m$I$I$I$I$O?|i='>gƟ>gƟ3~ο:ϿJ+Us?A,A7ǾT&R#J/%f3Q~?v? N߉΄ƚ&~M|f 5Y'ճѪ(݆&Qh;3T^fdK56a6 -Exdj-ʹv Y8w+:Y)6|{6);f9^VI8 h;F ?V\ hw+q +]J`*haT*~"J7[!PA)|^TvDPJfXnR`yAbo)Ibn!ciw;`-b*W&T\m*ج(وT̉Q- (,[!W/hnHVEJ2+._ji<ݟ&Q;-?yH28@iBm=cls-M*T+>%Tk{ĕCg / yBSP+8&\6MSwD˕ٲG*`Konz"rsiFy>G߼OΔ8KD~7G1o?:f} %SZ8хEP`׺Oyɕ˕ŒR{OWVgp ]m!smyh4046aYX2Ltg(e'|lfWt7 vyehA["JTFu@{OWVkF$% }'WX_$ieNɹ,dfdѺ$ε]ѴƓ9}) V>@pUP42(@M6]yRNGЌe~2i lM%Aq_f-U|UZ>߿̽r8&HE`DSm>e`yAH vDE!V&}a)h,2u,.5(`H>e(Y64xѓ0TꚰvN:v0 oh"!Q qcY!r2f_%ؿR,yCf`4f *I/MX;'_*< p#^)=޾z4Geȍ֖kAKFEj&~ ϑ/uάȢ1+f//NOD"| 9yΜjY@ʤdf BRP,w~aIۧ>K%f I/v h̙1;TF^; ߿Gw>gc,Ӵr - p"&i־d?^=LjWP"!Blaf\ QGYɓ CE> o&'{6P<2}\mLmyh8,:{5?"p7/iJ;~kijEhLGE~C?&l\en&d(a T?-<2FA;ZDPx/"3"|n{8Vۄ22,h4@z(p0@8"\mRRE~a|{KXe}\@ھݟ]}}xeD TF.w` 4*R ""-]=8~ _9BE vBv39sP @vC7'n#n@) 9>+HLW20[sߤN=%b\(e֤!A iG\B8Hf[ese2F5,h@2W9RX7=XfX νm.V;f[D 5[|x^ֹ׷;E^BeBa>TtώO{i{%#7=pDPtE^ZBFCPaBJYblD^͠y,&5Ic ~3o{fM>znŸ$zTqX}a5U`{{s3{~gyeJW(a?lR Bܢ9Q~CHW 5}"A@y [Y#\ k;]܂|(G~Ӊs!RB.οox{ic7|TAAt%D`b uaK`:ۇ֥C"m o8(Uچa*=rKDJX`ğ$ODt gO 9Uހfx}?Ĺz{\Wp` ǪAt *FҔZ !2*c@Br&"=Ξ'=~waA?e8f ZaUn.hGu$q6Nz6;4A5Tj@[a<!U^IՄS"!Q OCnj\nҥ E]·O{z]v ݉3 1A XF יDg戅,*Ņ8:ba7pI ޏ-L/sms~ DD{$<9O~ҋN~{'8{hO~N}{Ihi?Ғw0f=l8-yDڸ)Snb1\C/IqLGll1NHvn{ʜ!pv16JĩBIM+=%7$pr0[h# @ Bqf/Pa,OlGr'>V a JL%R >$%Feћ_I'ģN @K!&T.\ ]k r}.7z.Ĺ+MR:FH= L@MEga)[,# sdR`_paAbC/y=,@*}5B7ӧzec4]i*z%9LD[p[Ć5(jJcԬza[x[`c\rlisˉ=:9KХJ%a8}?ӈbeys6Ģ2TU/30Z++zs# ܥKKx4JɄ%_DA!Fkx %q7D1Ԡ'_%KVD q7$N̢=G(2Ec?gFBfm@.0gTFIQz#ΉojqI2rv=P%X`g=PbFaL|?}#(~ |B/FlXMx%Dāee Q"xȆHUh{26v*4֢d2U`c o\bI3ʤlp{xWXΊ" 53uIw3pbp,Q-Ge`G,]0h6 %k% q1e%#H69 zVK5VS+ł# r^}-.Si`L+UE"[*efkiS/W-%J: 奥wW $p;}/iw.4E`:YCHHbbXm$ ,t~"VMɠ \q+o*<,}J#Hs1C-tҕY~:VC-DշӉP` Vj9fuSoeYDW6Y-0CpzB34I̹lPT#J)R{)*'0^R}. .\2p6(h2G.eˊP2|`(&񇃷Ԫ(,dGiF!OU.U"`ZTGD`L:dl $|VZ<-Site/images/pyramide.jpg0100755000000000000000000004634107312345326014262 0ustar rootrootJFIFddDucky<&Adobed  "4L        0!@1"#4P2%A`3  !13 0AQaq2s"BRr#D@bPCS4`c$ P`!1B@0AQqa"!1AQa 0q@P` PO$vًŖ|y<>V >ww:fI3 fr1rt͹nzzl7gy_[x;h𾿵3 N`\L67,#>wȓvX (D:C:4r:了r;cirI;^mmZo#m8~U\y1mbz Ewf϶jIbG%ZYwse&c6^L5˒meq&t..ھn|~u[yތy{gY}aˤ@N` wE7;'a*`~/[U{o]Ֆd-8<c6mr5UwXrZ|r,UbxמFHc'kU9$H I ;O+.U.;q]7" Rٽcǝbu.7MS^M'[~?"z>$Ae% q qbx՛̛ CdRGkIVx 8~1tqj.^/ޭ|MsZsbjPA}7s_뼼yyK= b v$p igk~槓˶LGUM&vΞSsۦNnu2zswϢ?Ě|L>G?K/pvX'PZY磹u~F˱4c+-i˽̋%3s& YdGnM>N}cƲi'vzYkû'_{5ΗNn72`>V q0,~qki*>w[LmsijMNJvf>O_ojߕrV-3-q w,/_jnVprv9|S%^[lۮeSu:л҅ޏ/b?wc©0 bIN%7Ki:yPɀ bIx|e\WD'ldncčwk.Is9{](.bϻ֕1g^qdu*<6|cgKH Գse2apd2` q r>n{d̝h Ӏ+\oƸFsu΀npspZkl:u[aֶímZkl:u[aֶímZkl:u[aֶímZkl:u[aֶímZkl:u[`o{Nmm6Kv?ؾo~o 'G:Ɯ|sDNcx72PE$lO*ۯ_7d}"4U CϝSsJ{@ =Gv{O:#aTcx2z1lޝҢ*Uo|Lƣ*jPԇ" ƥJ5DBlx>k$yM@|n/ؾoFW?%MEPi(S 㒊 '1 DT,~o‚ l?U_TiUct=4+H6ە̖wkf: ĮXfՓ_7$hb.h'nܶD ^TQ$Rټ?7-ϩ)^Kाj%ƇǗz;͊6KͤԤ%4.|nVOXgؾnGL̜qpESIIxkR'-qްC8?7-!b {^̷tQ5{=˯vkYMaE3yMB 䓺y&򼭣y"H㑯_Mwdf?b?S5DT΃D**gibu D ܟ_>Va3s%m-WAO|'}n%sXhD,f(*5D\ZM.h;)U? 5k/h,6HpUDKt~JMCS7 8UAUQr4h#KgQct yW##};7$B!IWd.^=1hbh樵Р5QM*"(.ej?u$g1o5OG&6XWc/&jBڵGD,rƴ.% NbTDh>TW9P9y:Amg⅏d9!bhCKO-Fy#F{vBRk-K1-؅$cpofsWV?tO?t[MY-=K_7?4~}olKiooYY</miGvâEl:.t]avâEl:.t]avâEl:.t]avâEl:.t]avâEl:.3h)T4M&Ii4M&Ii4M&Ii4M&Ii4M&Ilo׶7i){:RWhQArUEpi¸S:APV8G!CH(EQj5+VUKt$q^b+Mptg4JsnNԳeK2/lo๕h*$Jj4TT#uD<.Zdj\U`JQEFʍ h)r>^05+#Lܹ7:6[B%0TRBgОqI2^kr=9aCU hD\j]<^deƸu3lne#AwuhG(TNNJ./lng(xFCQj(=LS\/-b#uW:o{aA|j0riPiiư!B dnY9#Z4`S*BѼU6[L&}Wj$iix*9"9W@$=u>,.$pWL2ej!h*ZN\˩9[6j Լʢen.!m3MxɆ$܅0Ö]YaDײW+pqi K% .E*W;AeAdi$/H֯𣤪ײh[Q50mNRXUѱ(Q+Gd#DJ̈&8 0֧'q{O4WThbzF5 qW#FV#x&v+ԩ\۪AARFpPkHS]$;=D#B4L"rL#BҊL-gp("\%J.{b~Q3DG(4D&fRL#!J"*90j,tT VUjK!* p,iU4j[rX.M$u;Q+jS"`(MBcyM3v̡YTh^(94r/o-ϋ"!i^SԄfWo(K<}^C!Tz)%39c9X :7OF9"D9id3ZTT{IeDB]]EK/av0L8}$=-:ƶ Ix9r20F䵙N7OG͐{U{YQ€DDc'WęQ^S{!jXs;)YYZF{?d~b>lqTxlh041 ? GXbƌ@@RMg)U5$LyٕTdTRI/(sN).?kLTb*)"/GsLܓF[ԗ2|Rhn"Q$Y= QI K٪\FZF{;'KːɶYY$}z|Hx]ua!|E**VCyzT0$:W=.*S( "BX2^;#7R}͒xj҉Xɇn ӟ#cE=憐Ivy5!Y2HS+Y+LAV"aJ#9I>yu:HBt&ljW!]_oFG,|I)F2/3 OFSWnB6OC%d2SnĚrQz|5<^.BGCeuYG,o8 Nw~b7v_5НgYrCT$IٟbUET$i,EqEqsϙQ1/фa2}?1 \]bHQiUH$%rɮb$20*ay0T>L n"YٌXpw`potg\8߉zY5W6iʭ>qY?dPqŽ )B@=Y€DD<ޙf*9c8* vg;Gk;+QK*`@g;C/9Q֨` ʭxw $Cv|Drp%Io +I8i^W:mA`` jPRL,ysI0Dq'4J%YRhr3Mfil9rҫ~a+4(KzMd)@H NSLĈ3w/#^n#7_ߋ~~/oq7_ߋ~V'H Ǧ>$aJ*)r变G߁h ɗH!1TP!W5TyD8`UH58gˆ TU/q a ^^3*$V 3#PĦ**(Z^K4QqTʢs1ǯ$kJm*ZҩkJm*ZҩkJm*ZҩkJm*ZҩkJm*ZҩkJm*ZҩkJm*ZҩkJm*ZҩkJm*ZҩkJm*J Ix58ņGUX^q\d_y?!oN6R5Q2 0x(.N/]>Wg9hko:O669:0#6]"[sfO30]s* bE [FYt*f 96iket A 4 lzK+]Kz~̎Ctn %Od_Hؔx`0Dy2o]OVoKmU.M}/TOuSS.U #}&w^ALG8<i*ZkJOԑl)//x0V~z#{4Q~+Ehg?δs &=Rdc*LszWGBOHS|f>VcwSL8 }*-pn'#|Kݎ%˗d\39` 1e,dbP\ti]5{ S6<8O6~O6?MpWs%t {MƎ03JteWFV%陼(ֺ|c_9 /`i~}Y].#*ޔQ5EwbY)ݳ0%jd4IZp6fpMUsiҡ1 ܝu^NfcQp5޶{'0V~y0B cK/_n7y>v,.nbܰKB){x}ͪJjGYf+ƶXxfᅠ&pȑT[0#BvIKKzp~RsjC=n -anX>㊻@=P-:֘1t%Yg2TV%xWhEhiRXeka&REGQeō#|tx]fBp[6 =a\Ys= o=̷W+0J;X-^1蜷{vb{cbi?遌Dz,xeˆ2N9lO9}"gK5i (M_ĸ}~N3]]j(-^A*lB3dJ]$Ғ ԳVWQ5"ҡD|"@?XO ߻=eL ɶJ7qŏ`8\jLvKƽ28-Qk۪98VPm8sΐOR0hdM,>VTbmL~J`A]>vvj&$wd_6!"CLN;7iV QZ\s4u8aݔ8{$%ޥ{mz3,..l,~!AY|t:θxI6$L(=K[>/q UU[]qXc8$v-yQf@sU'~p~>y`\1ipm.zЇUߔ9[Zr?= ٽ*!31]j?Ot^7lVp^b_b] sKP9hnȭԾ+\w8Ptl;7DzAaH LܤL|{II*,4*g *J9`H+Bx}foD%HALC-%RYZX>o8%J27s5w 1=(#gm.ehmE:hïnb)I^NϨ-޾žs8YSh/ϧ4 lpJgj %ʘ|N%<|Q:a[fLy{.]_*a&A8bl-}7?~-:u*;L]]qb-$.y{>n Qχ|?3~g>χ|?3FxPWЈAy?!Զ-mKj[RږԶ-mzS+KWvR*J3(ŰN Z\1:EEH@:,[~-xc"*0 t 9 NWXXNF2 h.t'K*Lދw JrB;hl":FZDf+0H=l%J"_c,o_呁z\!AA@vӗAAEtm=Z/BYn= jrAΫsT2t%!S Իxc*eQ!0^=~|ZU[!,;$-n-<ÁN޿+kǐt /Tl\6LSh:=ZZgZp?PPTبߗ^CLT_崹pBYk1zwMSMnйn2DG^>奥[EZ[R----3"my I$I$I$I$I$I$I$I>I$I$I$HM&Ii4M&}$I I$I$S xN讒m"II$$I$)j+'v$HI$IM0ELsUI H$I$M6p %frͶI$H$I$EnSǫ񎺚y$@$A$I"i)>'*iIA$I$ABw)]I$I$A$H.4&so$ $ $I$Qi>3eII$@$,OT(]5I$I$I$IHD(iA$H$MA ;iI$EW  ɦy$I$A$Hh`3Ph'i@$I$I|jP"{rm0II$I'rHh!+Jo$I$II$Zڈ737a $I$Dܒ-A!hI$AIH`riiI$I$I$_\1v^b&mR@M$Emo4iMy'II I$$I$I$I$I$|I$$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I??Biؒ)3FD~a6}/s<<<<<<<<<<Ѕ/*B8VQׯ^} ߿WQy0CxI[6/鞿z9Ӎù)Si}O{pkE7gy^g|i_+5,4ʆf?]@f,Sa BAIoJ4=oxހlK<۫% 3GW<:tW5Wt(zozNMJx_'?DG~e{?lY:&ܸl(;1Y )o]Tj؁PvD..K$ @Gq'b%VCAE8c9a L҃1e^ctl̸Ĩ/CgFWVS!9jeÈ*`s_l+Dwg4?c-_P\ivyX`f5%M`WNvOZ*RA/2(VV*.|{ px;vU2#a:t -AQDErs;UT ]~ (upC%@Z̷io+ZԨ ʲs+eU[⩲ .MDK#+^{ q n'їX[VXBЖ?.XA}@z@m; 8[.>lJfmگtP{CT͘>=>b>}1.QbuawHaMMQZeVI& OdDy_Tmb66FJby1qq+9m!Fe̼ sĆϼC7e _L:JL QAkQь@jbZ 逶eǗ8HAŮrK[`H0@rO܃>Xp- 7C쉟jjQH{щ^H2z ,a2K*.\wD^T¦͔L+m2h%l ǃ1/nRšR A QV=2#=~4}711|D4(>ax$B`iIhP?SIo' ƒ0(Z2b%T'_y}kDXAZ*~%ʊ֨%`=\XҕE9$dJs~qov&Aaጋv+0GnE~hsvnX4]7둢2W fycO@KaQ࠮[  j% ?yǛ\/ܸpJ1(~A.&Lt=zx?<8xNMF1v 9*G G~ݰ(,4&۴ }$RqxR` IvʁTb9ڶË GIq9ڴäA-yY/L[qq.n1x%Ɓl:8y{7D,]Jt״{kOׁ-մ.e>\Sw@e&[Uڸ;@ 9Pmδ|< nvn"EMbV:?0 9?*aGX~HJwpB`t)͉T!Kapއ4O_=ˆ]32(q'vlp`z:I$I øC$n,U`R;Q1Sn<W>5itǯyϮzN{=z}W׭4\oi[jbɾ"v#ek-F@] ݔTkusYLYBE\b㰆?/nR2n.PUP"J'`{}g(ܻ.eVZ&ZY ͌8%HW9-oC4oQL $;.`*BRY{(Q uN[Y?3ंizV1+x4ǭLxHѱ~J(hnQN U9h*",p(S7~ si;E k,' $ʒBII:1SMy">-oTdàq8ZxM32`TlL!J 3.#s?g+KFU`ք'^CL;%@⺃9en{}@|sGW&VtD_d!a :+3,Dejz!Ive׭rwU!Z=[`TbSdQYJCv#Xfb[ߓ=`X6~\j^ >K >BHob$^. v"#n{}02؎p4#sp[e:BtTQL=a"X3dp7ϕއobV_(90N hHҘPb"_cW@!j|ULV@%Ih 3f5Z"j` :36!u~^nouZ§yeѸjR8 DjoP)La-:igZvl}go/s?_~-e 8K7%#qТ상-\l EvrՍ?q}|mwh5VҼ{xd:x~ݝݝݝݝݝݝݝݝݝݝݝݝݝݝݝݝݝݝݝؿ>]f-~a?:д--im KhZ[Bд--h>Ϭ+3-.SK4?c|ĻKⳝXoEƑA)+[>oQ0Jrh}ZLbU 7yrl]MY" \>V,cN1Mt wh2ʥ:qĵ`Ϭs7B %\Nᰓ`/8 ̩j=yFtw6}f"0K_rnnjm+&y b%D4|w- s(^"EqmT3c %F,&Il;%(]z3a.n&w&bZ!(TGw2s2l~o"0^#L[Wl*0e#{3ͦl;21n}4eƉ(.¢KϏgm:\YKM9]LYS2͘#)pyyQ` XD#1V*vc61h7JnH.ϑ)rXsMb"nR-1Ɋ!C,&Ұq3T7{%=F07%*p6QQ @oA$#A \fVϧ>o 0 QL& r#\=6m.9D  "╒*VV#IBPy[>v\(-ޕk3V<;uVĿ߼g̞V*qBcC(L/Կ+gɕd8qsmw :0v> EPis dmѷS!PAnփX7koЖPn[Ӄ_p,JXe$6M)h3iKKX[ Fa|{4n۲5lmm d(5TDPDD[2YnjG2co,q6xfJ*,ثF\N2pN|3#p>Cn-;̣Do s([W(-mIq>C& vx.W{WU0k(]gtЌ@-o[PmB څ名2"dJgjYJWySite/images/sphere.jpg0100755000000000000000000003357407312343614013740 0ustar rootrootJFIFddDucky<&Adobed \c'7z        0@P3`4!p"2#$%51 !1Aa" 0@Qq2BR#s4brS$3cP`CDTP!1q!1 0AQPaq@`p Dcx\fsORvuyjo*;& # ǚytKif$Al]ך‚l0q^OZYپ3K[-DJ 56{r^?oYvdj00ySideH>jo e # |ݝ^[Kyf,B*l}m=ན`j037zc|im-r{ юK;=9GWde #g?=gWK29ly*ART%jq~6F|3o-崶YIu_&cMy;z8ӭeH)el~z̀Q>AîW=K|Kbe;1CT c. PE)e5A۟}vFk^L[KhL]o!nmNݞ14u*Y[8^?FxDz.WͼYf[Dē,XF2 *VũO5@y9=|1Lim-b$-BƑPEBVgr\g4;t#>]0ymhH ,[+g?g2StT;`ǦnmٷKKid$AYTq>>ۘ: 2P4H4?=r镛io-idd$PVe5=6w@5@LHwN/=jKKym&Y&Q $TURRgc(euLi>1xjشYK d@"*E+yGyvPQ8fm,+1$ ["UyM@Fe2PQo&Y-,ŖbVI!BATdNܺ۠FehFf53d,ť&%D$P,:c( e #">/2$$dv5>Ӟl2Sfknt\^^ײT5@>a'-|7gHT$T':cjvM)Q]ӖkW=@ =cJK<1!f YCy.oˠZoC=T`##'Z_cXHYT$S% T*r;euJיDҷ9l*g@yIƤB<^oϳ}SM;g(Q i|\?79`&{-Oag53NfӔiPd,NY;iviTuΑX8`'sk1QoZ}sdHr[UdYuB\QrVK.lªbli@JDs/K)o\K.p#6e3 `ζ~[ͱZR p?w:bw=.$=~=+L$/Hoܩ3LHDZ|uJs4ʋ$0¨oU.ӖTĔ#"b7I1(U+JՖwZζ~φ2cJb-TZ3Tfتʔikm1?'皘Ҙ(r+xI ժn;U4-ؖr~)q߯]GֺQŐZ~%XyP߯-Ý>ǷQEJJtЦּ֜``ζ|9oy5w-kɉ;ZG]+H唢?#s5o4zj ئvQ#/uVYd:ȡ@7[~8ݱA;7L+^7k Xm_L;sb+ݗwbxof1.o5&@΋l?ImdHf69V.WbWB,V߯4!2(?cb_\~e;2Oʠ+½vٔs>mZmhj"Fw!UEY[Wwn۳l(PM[v8[߾Ǖq Y۹ uz:Dz=peP8x.?`MҸC:v- ؒtXB^9kǷMuIXjKr~g7Jufxc 1UNѨuc}78\BDyo?%8ǧF$Ŭ. ,8{ұ"e`u)#J$Pѳvi$q$KFy)_ʔ*Yþ-b`K-׏ʬ$Q3ޟ]m2eOiZ:g|Xִ٣mh2I h,$r9_XG,h0E[g[g[g[g[gXSfsAZ?jqKS # )~>e~>e~>e~>e~>e~>e~>e~>e~>e~>e~>eꩳ4`6M1ɱ"ޝ7O1 <)a})+1=V)Q CjcK41XjY,QxccbExyM(L-)S讋~ Q@o>{?>;ΦWj{6;46 *#t E|y?L=9!H^jM[6Fi[l9!(6$X_Lo=+fU]hRTѵo< 8,r!#F\(m-vUvyx>YJOK+np%JġE8wr=shC]dY|c#`STֻ*FQNF1*r>MSL#d_Sݗ(z_lTPI+Jjt r xhtnB%"4AEpXQEw.r8zƗrTUx.se8z Cxvm)$\qbZyaA  Gh!OA?"\>s᠎B<}rR$khbǃ` XCCć+u^<||wc޲B%&3^w"OBe8象8DJflqEfn߻8;aN!$/:>OM|ܿ3-V?!hG"|̾C M`)'_AhhVau] ~6:3L`?%XB-, c˥F@>L3OSdL$7Rb1h# ԮԔ`hN"!CK˗+tNldeU?y6>-8TMQ@(0 c!n\n\BȲXBv̥]kSw5U>kvp&OԌgx$3u.Pޟg|7r_ =x=pJ; -=@'M]*Qe/84ǭ^]@/>Gqnld^+W!%̚EaaN}y6Y7<**޿<ߦD6 7Ah8?/h#H5Pݖ\5SGnk#4 U hauw~xPFbavUi}󘥹_Fh;Aj舍!J G#ySk@xO+2{="_)C^G6ߍ {+ 7o}q_] hX`d:"#HR^knt/A̓UhփK׿//yU[*zm&{nRN;>#fwZ3qCbo\er?!䠌^\x(HU\B TK\_[E:%jO^,?"_=Dş?#ᷴc?/ʨiOO}xJԯ\!R/?! IRbc <\!E<"Wlxm4G |Hxy'ρK?G#BuwԶW_㯬7"MV^}6|I|GoaK}/ş =Է1 k77Ͽ]˗.\ I$ 5$ $I$I$I$I$A&,ɩ3x$I$y$I$I$KgIz$I$I$I$I$HoNRE DI$I$I$I$I@v=`I$I$I$I$IٽBI$I$I$I$I IxI$I$I$I$I$ ҥ2lI$I$I$I$I$Íݳ $I$I$I$I$'$I$I$I$Pk-b;$I$I$I$F$z͆r!щlI$H$I$ $IVfsI$I$I$I$Hm>kղI$I$A$I$I'ɪ$I$I$HI$I$V'9e@-OFm$I$I I$I$NI|Y$I$I$I$I$sͦ$I$I$I$I$ BXwI$I$I$I$Dz]I$I$I$I$HfZI$pHI$%?~>~yKkϤH0-\#XrTt{LIdÇGf-տwI+k%XzCCҫ(3-Y%?Io--Њt5{C.&v5ce@qp罟6?߭Ξ~PRWb)4R IVaoqcLwG A->}*AY"o{~c #G#rV(p3'cq^/+yy.Kh}ŠO0H@֥JSlM.ϽA,6ԗ<矼_vUϬ6yŪ/pb6; ':z}bAV3r;S_?oz_t:y B ZE+z1>H!o;  wN};Kl,Ǯt=fBnk TAQ?hbP}0ns!˰C_6mb}Ү0 ,)tJv̬ 'jAi:~(8=ǤT  jB_ߤt2ٴ(\y,X:3nd`b0z LشKCvVAE Pe. rmsT=c*vV笵=bŋk(-pwPHVUյqb(0f=޿YHֈ4oq( ,|{X6I pFrt? (1DP &* *ȶ O[r;t߬QE^X$t}!; D#*XtykƠE^ZN9pdGW$KwgZf<^}C e(hCUqtq݋fǫ [6"e-2 +{%KŢ6V5q\kI78LgȢ04 BiV6#}\+պ(@ /F:]0nJ4ʠ+>\@Dz lga4Htz'' _=׼8Sln &ap>GߤE^ZO DE]q%3st9P//GNXžOA(I"&F,K:X[4Ջ$0 +EUjOr*EDL쳧F _١ЇT 2/A}# y>(PnOߐsYxC,%;!)A0{! "`>^74:y=J`p ͓wD˕ٲG)5 kqȡ@s ?AOϤ>B#h { 0| 5{4#`4Ml4iyv=XfPܞ#H.rO`@S AXm=ybA٣Gv㠲,rC.5~sz| ۈ p5B@/lнke3E6meMT (iS4:,2,b4&߷!+KۏMV$h&DB"=P Or`]?) J*\Nn1l@P9W) N ~PAuG{SϮXR:7x_y_gzNr :!JL6fbl%i«Oe}:1ݩaY#i0/]&p ~=LvJ(&<94 @c De-3eU!{W7QыsQTf4+-!lI2w&*7x"D:فr2ڣVs"D$H">~.#՞bώ GLn@~E>A>}K] 0wنd}y-dv^̖U-(*ܴنӉ .Px6H"bV]Ym݂ +AְìA0 Lf҅zŖy/ *2W<7M:oeg$DPi==Eb="+}]'t,"˗/,oak|C`0gߜUBQxyt&3`\jqI@V:, HrQgW00M%Fu\P@uN됩+]MsR5wlTeDdY(=aV)W3 |{ۆ롔dfhKǨph;B.\z/EN\Ek&TNe "߇0F Ap9U j5D?0 鈒++o^N+e2r*=56 J5HGCQ[8S9_k"dO#|'kV=FX k~s/yx:˗-ioXQʓ,'~XE|x8(*B4`xjr!A Gf`ęrWr}_Gr".8"ӥ08<}/dCgڲHTG@Df\U{O:zp*G)gVzlށsP,NT7ޟ-e?;7#oαK^:5 )nC~`¤D*# "r1*)P͎l4i~BjlmP!?Ї:$Vqu-l/d[?02S.4:?s(nÆMZü K:At`YNQ;oEtH=hw٘"#NHdM_\9M~pAlzP OYgϡG}ϺI1~79}BԮxF͇|'CH`,ҥ N?N-M[m7Hb\p7>$;<hBmǘ1Րֈ:1o\%UcABVׄF1xJ䐊V::T :1ҵ\.Bgc+J֥JҥiRB;bcJҥiZԩRB/ݣ Z|c*T+Z+H@pGD8*V*ViR σ J֥JR*TAM*WiRJ*TZ!FVRJRJPІbJ#+J*TRJ*TR- TRRJҥkP%TRJ+J*TZTEÔ3T*Y^`3~zK>-DO^*V*T\UU:4BQԭkr:Q*}J9i\*Y(׊sBt1FW3?V ;P1N3ΙƚSdtą AD!c:VЄ9 f" :jCA170/R@\ZrBw–J!}B0l!`mglrMŌt z^/ tޗ/[r^<n_"z3N+^ox_˗.\z^/n^/K/KCq6AdVSLɊ:+suܠ+_C_j,7UWN+/[ hj`>T.Ѳ:aԵa=דW\oWȽ._rG7[}F5W/[Æޏ9Q5G4״W2Site/images/cylindre.jpg0100755000000000000000000003675707312344136014271 0ustar rootrootJFIFddDucky<&Adobed *=       Z0 @P45`1p!A%"2$ !1AQa2s 0@q"34PB#rRb$`pC`!p@!1AQaq 0@P`p J( u>/%W~[Kv4DrGdh|_,5hfgF;Kvu"+O}jfya]ݧ1i3iwV]@ڀADl|#cyfaqm6[!_ӨPX{J|_ٛ[Zߧi7m͎l;Kvuj !y? ?:ٛXJsKnfq׼_WiP6|< ^n}͖@{3%cx!=Zoϖގ^NTm@y`3@YM<W;z{iCӨPX7yFQ%H@C{]?_|i>oj|_,Cay;%bH/}56}y5vʄ嬶ycwoS[(@ݙ>/ i]^@(_H/}4յڶY=]`necu#@h)u tJXY|O7*K{} ֮Vjkl7Kvu' O+SkQӬEgջX">3hs;b/򼭗ZK Z+^ڮW_uc WiU9h4+[-m? ( bhxҾZ_MsM֒$i~Nv5ԫs^ ŶP-`~; xhh7}5uڶǦw@i~Nv5ԫs^ ŶP Dbhhxmitھ˶9@M: SRxWME8rb]e>S|3mMk]6_Kpi~Nӆxt׈5qmWl6]@A5N4`&Ds$󸏩L|TVҾjkl7i~NE-O&ԫªr]o,Z;D>/rǃWM[;_a A /iHZږ" l^krGZ;3;3;3;3;3;3;3;3;3;3;#;3;3;3+WZraPw9l%8x,̩yZ0S:Y[jG ?643򟋻g|_mےSE4G"*Y !dJd,W90̬S$wSwlb= rxzk4UBY 2SGU>6yD񫒰)v"[:Vr2e/]}8yOݳ{/XJuxœyQTY !dJd,U9b_#~.ퟳ]~=4SDxUBY)#kW߄yOݳ{ncѷ$ԯ^EQd,)!LF)wSwl˲2c#7=8,D,IMk1>93>;ʮeSwlַ$iLdTY "S%1dBH"'%bx>>ۋM]|_#$sqq'03jܱr=,sܱr=,sܱr=,sܱr=,sܱr=,s|h_NE;zd,s+19~%vj;I47zc+11qjNϮ\>}lőOb}p\>}p\>}p.Y(L\K}?k VR[۷_le۟vsV,Q#-jsI8#'܊Nw;=$q"ά]DO*'9tvyŗp 6ڴc0ܝU-}vm:y,}vmlMA~I;Yc AWYk 0MV[ñh')fmh&rlaI6G{y: 6MDNflaU4X,6MtNQch" Hŷm 4UVma"j>ӃؑS0tH 0 0 0 0 0AtAtAtAtA ::9!'E߯Kzݹ}nݯqrzŖ gy)1;uqWd&+sJO$-aUXj)_9tv,YDNȶSPIzQJYk0 0I!HI"ܖRbv> 0 6'&J8$?ߤq#^qӛ 0۵[+.ue*0 0OQ8-uaAЯBкn 00U씛zк]=Faaww' " 6zNF " 6zN*ean B'aa-Q8#aAJ,QdaaaJ=m='7_03tΉ:gL3tΙ:gL3tΙ:gL3tſ?T QП?T EuJ Au73YП?M1߷߷߷߷߷߷߷߷skJvjc9;)JV['L:AC M)%)T\QB`F+W“GH@XwV^Kn8u 0]HV+*w(-/Pī Cb"p8n&udn):75gг|խrsY#sYhp >F7u\9Cdô,vDch75-g=i+׎qhp >Ebj1^:G3hY|z&ggmg=艫jZyc 5JKeUJջ9E 7g_p^”ghZi5Nl %*%!OC"N״O7UsNYUU}eғa{!?Ѳ}."H7M>!f~&S(ۏk](t%iߡ+=8岇.UQmtA9V!T2P[S8[}DՔ>HhRH7F*&63wjMTs?ĥ2Cs]d%33LH/ؐ4E⦉VHN/Jg~JV̻!TYӛ,K=?/lwiy>خIK9.YUӿ3zΨ$$'EqTk᳅]JSVy?@ʛ]ӵqm:.axughѯN̍sf?ʹNyK7(:J}(-3կs8v Ft~dkн5V̽d_rԍZHH&jN;Zgi`b^h-BTvX3FFQ:f?25h^+L^gT p"8N*5®%)HݽműZ9:ݪHEխ(JR+r Fȷ+UHS!UiåuYdݢXBs*:T!5ze"_x!ڰf˞ֳ6oJ PA*nT((z_@ϼdPL-|IqX3ekbREq` sP݊Ju$\YXS)՞tGC=kER>]H3't(jUD[lօg3e੶R*P0 jjm7e=_.gxC8N8N8N8N8N8N8N8N8N8N8N8N8N8N8N8N8N8N8N8N8N8sW+ҹJ)~$ ÀXj'aA \1voWIgi!.{w3-^(FQ@q7 g RZp<؍C0 (J\ HnvehFJN!&B@gplS5r7.EF p+\oMZ!"1 (@&bXh +<48 aF(7q%D/B39$=@JֱfU#0N L&]w&%qi%ri{S|=4ԕbг*"q2d9!)2x Z5rM˩)lBBj@""@eN@#Iac>\3559 HIDr;,rd%xmC.JFw ,&/Q &Ki!&Ue8PƩ{`V02=@hAac>\2$n]IHbUytnc}RvÔ!zH`&XqfHA#+ױF ŀ2/R th#4_]u~`H0YY=aϗ `phAbR0à *%(rdo,art +6> `ѫ49u+͈Ho\Ǜ.яJ;H0xKtH 9'0o _ABa@ `zW޹r: ; 0` 0` 0@" b>A2MH>A/7)S8Fƫ<Qv#K3B쨘^\r ؉iDaV$Epvqq4ixhPNq#ڀ%Bfʈ JzCv4C;9$؜n$ 9AQ  jcGfffffffffgg ~ )0Gm?!N:tӧN:tӧN: 'N:t3D(?"8;mblX%c `Nn]_eC`q]3G7;:}iN[" iV 2aͯW%G6^ოvHL2oB9FF@ @@l`2uF el@ @؆LNDsG7<6@ @C&6m<"*xL@ @؆qulC7O  @yY?"x,@ @؆p>[SdS5M8x&@  @l@nOV錙@ C:!F&L@ @l@lCSdɓ  @MCɐs2bJz(266_U1w|DC4MNNO@4E8 @Ec;c~,>c @jIKށ"8ʺ:;Tsэ  @r:6>ᓄ`s9<&@  o]G8#@ @a*vQv,< AƯʺo]G5;<@ @aW֢9kWi|v)Ț%(/aQvA @8t;(޻z}  A[ o]Q8L@ emdN9{ A WA 2zD1F&)l@rW\͸ @(!Biȃ@kZ֊kZjZֵkZ֥jZֵkZ֥kZ mmmڤI$I$I$I$I$HI$I$OI:I$I I$I$I$I$I$I$]+dI$IĒI$I$I$HO$I$VڂI>I$I$I$I$I$I$I,DlœI$I$I$I$I$HI$I' 1}:I$I$I$I$I$I$I',+uII$I$I$I$I$HI,im3->I$I$I$I$I$I$I$*I$I$I$I$I$HI$NLf*qI$I$I$I$I$I$IhWI$F<$II$HIvm}I$%&YI$I$I$|mɃI$1$I$HI3ͶkGnI$ŪI I$I$&mLH$I$I$HɻmdI:I$+mjI$I$I$Ridd$I$I$HlcI:mǫmjI$I$I$m I,H$I$I$IJ$I:I$+mںI$I$I$GQ%$M$Hn$I$I$Hp4ВIy>I$+mjI$I$I$AI$I$H"vw)$I$I$bHa-$I$I>I$Lqc|I$I$C$T\K$I$I$II$I$I$IfI$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$?~߿~߿~-GP߿1Tسz-,LjE,횷QD;fQ2٫uLjݨTdU2Ă'T uս2hW2ά<&+wZtE &F X C@i n絡TA\ I &mUҰJo[{+6S}Z Yr^ͣV·uoAН:!:@dL25@Pa3 Oott jWhz`BU =`06AB|x (n/X9;|vBnWwK{+|?Y`=JPsZw@lȆW(-@,dm*}ׯEf}A؏ LUN𫡷5gCk$,٫ǿg@$ op@ғ&JlHA DPa1DַW:=BwM_wZtto`oes|[A;»,! ,k m9!8$(QT8 :/gqo0Aa J G\MFNf@ILP9a#sZزϺhnL@ DaNT922Ge# A\^KUޫ" x9rR[AmgIn! MVr*1& UJԱu1: ѦJ4[R@p{`\p͢E2$%"l;qm{vBCzMê$9T J@Y5IT:ch:|[xD댄)v&P0 !r̨2RVIJ&@&F mۧyj6lXO ({!@yH G473(B,vc0aEӰ$ }goՀ> O,qm?f(pK5g&^UyY9y (!gpk ` SZhT!9 uN&FAag LpG IƀL D22KmO_st<2QWB LYN+*g5w̌d4$Qu-/t(`7058$VYUe­),(?P0Cp_m?{͸{|1yܘd4p!yP={3PpBUZVjU% eTDU:T>{J^{[J\(:3\ Y;L+<"f݂!8 쫠byE.*$^]۬yC*ר+ Q!3Fr6  Ko, ]؀rtFyy 0l図XE%5r K 0/on[x E?/Wq?a8S.Iϓ;|(IrYA +A&s @Z*%A&AX{|1yܘd4p!yZoPBY=f,0Q0 Xn(0dQ|ߺׯJ U_ԻGT9A^Y\q[x&S<$0vW"ynʬҪJtRI%7zhOWGt>-;+{2ׯV+ l~VC_NWo}Lg,'@J57rn|0"#>6l곕IU^A`5^d kKIĕn[u.Wu'Xۢt'>U)sS)UռcGb U Lyd&YK7`1e])ˊp{YA4uQOվ lj[*tJ-zSGEһ׀aI< p(BopO{lMرG7 ξ+A&jcxYVj(`D I(k9a~kOϟ:_Vv~y<|o )]l⹭U434&P W!0&p\ceU2E!fEC]1LvrT]FLXX`=⚂Bh;r` 0` 0`,4q[ɐX@#s;cLiVGsUf,v )\aVv@4*û{Z^m|Nh4e~U-fVbG#p (i$D%\o^CHa"L0Z3 1 QLn+AE`*Ckj8xmIjАM3" 9@Os@L{',r;omJ@蘳#0:L"" Mf'\xBwT~u!~(%[ǕsU#C?U­>]fhkTRڋ[]Yu'``3xSN6Kz]`愀hHZeU @0e!=զQ=#rʯP֙luGg2⪶z՜gVڭ^ _mVƆ[=mLz`I2-Ao?M7SqM7SqM7SqM7SqM7Pu ,SqM7SqM,y:*P"`"L^]/zRcK'!AS'ܿ4 D_$NPA7/Ua uP@޸%&1 ZSY`@k > vӓ9}F'{֯DpuA@\UYcN.lӠ\ao%`o*@vxuɓ4U2@&&i0Ed8)]#͐c,Ib98qCϻ Ia$([1O``Uݪ5?-}JLDSmɚ[abbv>($p np)kp b!{K]o_W4ra`ϒs$(Tp/|pVsE7]S򤼂+¿b9PWLL  tB'*-vU~>7ʚb+ſʷtΪvavG*޿k6UH @zBDD֪UhDu7È r7H@_t):t鈞U/LyM)N A FLME 'mAUrDrCRֵn "dkZkZkZkZֵkZF?YN)e;uSwYN)e;uSwYN)e; wYN)e;uS<(Bwq(Jl P*yʕ[B\9* M^hDȠ@s\4-6 ʠ@q !NwLЂ[Ƙlx: }j>)SLW)}XmcNw]?DsT vǟWh1JH~xg f (K&^ /H}vꀯY^" jS!:tl.q#齕$>8kv4' #+׾'Ͻ O a_<lQd:t6|Rq숊j,3Yğ&c8b p}nx<)$T!o%W(Vp-,ŭ5sMb}QmQMNZsGD%-qM+wZ;Դ杸 d8%,x<z!I Z.rRXԠS0_5Rjj樄yMqSru_C*yޥ4 Cq'e}Qx!>pJY_V#D-¥4|vkx< {;­GKNj@|&Arr@["]*V[_k]"7K|<0Bcr6^VǴ'e}e}e}J|} }ry1p< P 4p :he 6$6<}B~7 X~?UVXoaUVXoaUVZoaUVXoiUVZoaUVO?Site/images/cylindre2.jpg0100755000000000000000000002133507312344216014334 0ustar rootrootJFIFddDucky<&Adobed Z"       ] @P1530`2!A#%  !A 1Qa"b@q2s4BPRr30`#C$Pq!1aQ!1AQaPq 0@`pр j:]5c25=(#xk| _Wڅe[LO%'<[>ZOOy3t{@QT9&RQTSJ*(UNn}}J*"yL%@.}gև(J*% EPÎ'0 Gu EPÎ'0dyҟ@J* gobdUJ*(4:EPD EPUH)G8w'n vw4P*QL?Uډ!hªtD#5o %>+NBJih|Ysf[ {Z2W-=$KR'2kd[H"7}S޴{y͙o#˞IT1Gd̹ͫ5RIE㶊? ׸@A8 _<9def (w=Aj1h4A%$EGl\K4Ah4= R6 QkR$]i:T㖔&Yō#j6L%ȂӉ\YKU+NH~:,?]\ ZOV ~9MHZ*_@ai u˝;K b3Li=]mqSi47OW`pڗ;̝;@h5f'#ު{֜!Tfz=ꧽeZi '%T7OWaƚtvMi~v\=U!TfsRz.vZi=(%)B}/Ԟ˝ u9_jM:Ө=SATATT'4orU%PrU%PrU%PrU%PrU%PrU%PrU%PrU%PrU%PrU%PrU%P~^56݁R9*id8CQdKPA0/ 99t:0IJP3faZaf ?t+=k-(y/f >\?p]vF|trb+uIdgIpkS#>J6 Գu)Li!Wp% >OK-&~8{3dd{k_In,ܙ8^_a͟9duqiXga׫\TJj:kvTBIuzDVVZ$dgdJџؑώxܼɺLձ-PO9zlO0b*efj:cD[7U%Jٺ*VnƉRnv4Ju[TݍlVh+fcD[7U%Jٺ3ͽV(k&0>uҒ\̃D봭koo n|lVh+fcD[7U%Jٺ*VnƉRnv4Ju[TݍlVh+fcD[7U%Jٺ)6Bp]-rJ2:yҬR P xUMݳrZ{JiGp%ja H:*i[7i+ݤIְ JvAI TO:D jtL `JcD[7U4uZSX'fҘvn"4R" jxS#e5nh6<$or(P$ZIJNYqՆ3FCš}%+A >TC?%(h9+lpP{/n ^ZBbmbUVqf~m_\agu$O6CA^LǗp#3y 7SJD+Jxa~`Эx Ʌ!_JĨ} !%)JF`?6?!rS(HHGL_!ty0d.sͽ7a+@A%閨=m]>"inߢ-~k(Q>Ôdd{ ͜mcr֓| pci =h4,`#nflE(S(B}~v?g 'e>N}.8hy|"JԊmr`]K`ڞ w(O).ߝ "9yST0?AqGfo9@&FM,DP`O|R 489P܊ zG҆aѢC'blp6 qȀ!$,tţ]Z5ţ]Z5ţ]Z5ţ]Z5ţ]Z5ԆR$]Zg9$aEd_Hفt&{kF{kF{kF{kF{kF{hKh^Iep9GYҧ%CU-cD@6 %rm {CҸ|d˗MJnlҌlȓtһ{iPu}Flȓtҙ~p!qR NHn:"] |p %b`Yc@#r/Ӵ7̢Bĵ׊;nG͹zfDd &aqG,Jr AG0ҍ2hEDpd!FC }sC+w: /oL;KrX&ӝiQ%B`,1MN`.'QYuۖ"oHJ ܣSx Fv_r4"Ģ82 !bl`XHY;/aaqG,J=9`P`3ކ,Dui/忀6!(2raL!0+2|B&&< `9ZeL+;ҢKj'd,Xi忀6!(2raL!0+27[f P<0ă  Wad9ѱa3bl`Xr.B!ePMze˗.\r˗.\r˗.\;ͦiy)` |%IX ,Xخ(5Y6#}2M\c6[8оj\0Bٮ/7ybɥ# Y}O`vNVi<\J^+ү %"Z X?!ҰSn:^G鬞:^G鬞:[3|V5ΒAjϖ*wwww̽FB1m你hk$Ou?=(Q5>wz@vU+US3;ד+z09>6EAa.k%L.FH PIk/BOpCyEp$ϛ(El5͓ ~xM0P""F?ƿ?sG4UoALcD7hbM3{ Н|b:DT0%Ђh>[*O_5|qf=1-L$A؞Teŗ~/kSh4m}AK2jC??]OL~Q!%ЙfRҾ_{_{PLe)p]X.ڇy <#v`N4.&F\7jG8)$slГ3'\95k.U! KkN rkZSL^I#_P Y((ѹ֙oo>g@fVyYoo>g@fVyYoo>g@Fޯ vqYoo>g@fVyYoo>g@fVyYoo>g@fR-ѭǾƓgȃlc}} +ѩf)7X]UfPoJ:ig[kgQI[4isfj7]7\V<÷8,k%l=$@ e"=FWedtttcҕKMbucSite/images/cylindre3.jpg0100755000000000000000000002132007312344264014332 0ustar rootrootJFIFddDucky<&Adobed Ri"       x P14@03`A"2p! !1AQa"2bs Pq0@RBr#`Ѣ3$4TᒓӴCqP!AQp1a"!1AQaPq0 @`p P 0d!&=AIcj[|ƹY: 8QǤ^ߘ$=MhtBLBL"%mmUm1I&| e.T5Z4J:ݵ-R-4aTX.c:1O!Icl2/a.Koi茺)2$Z}^ RVҧ$KmM}}(=KnNjG*OGT=',v.9(L=ŗ]CH;+)JԶj[{pHSQ>Rۇ aSԶjδ.#pu#쮺Uz֡HSQ>Uz֢G5Xmը{L,ߕ˕Eݒ6}9}hʝD~iB6%H.S.S?c4~C'gyQu}7Cƣ}"ĺ=.#Wa'H\B"J Y̡h:1)^UE$y&(<;BQCI/"Q<(䬝dtz'*iI!iL_dbs B;mu3<ջa7E %yI;A=ZRT& #-q%]I]YEU1Zˊ"jQΦ4@N78c>PO֏J®>GV,2F*ΩQX@t['t^nRrZ?&'Euے6#}|=ov|B#3%>5C 6XqzekhtuBJR$wxdRbojqMr%"=a|?R8| .>F+UBGOT=!@]}5Jyk_gGco,!͊N銅65u$(*Tq:9H2OPbBݱXSwHIq5P,Z:zAb# SZ>Lwx 8QK`R'@$H5Zd\HeeiL$DROˎaG&h"Y :4Ųː:x*W&곤ҥrnv3Jɺ*W&c4\݌ҥrnv3Jɺض7Bf0oY:4e;<堡'-,&y'vSTdgJ#JVf+u[TMniR7UJVf+u[TMniR7UJVf+u[TMnvcVœre=êԥNwwwwwwwwwww[u lU`Io/ܫEM.ny3-jϵ}mo5 fj܉c0nn8yN$F42 aTFYMz'X$j/ K 3I 57ۑ@3[d~PZ[T9< 0q lNdk >(-&vWL3(dOȷCyזQ@P:^?9D:m9`ct3k}ƓlźoƓ*@Eì̶ U0bfumõsNSN$n(ζ 쐘 ~+U%C]lW i:ڤ:f> t:0,ma"BHGH3ά@7ɼXа 1{8=lV*JخRuIttՂ.8L {`,`LBcJ. DuC*0t\"`RJm"A尴oJH)bLޡª#bFo~.+ԝmRq3!uRH05ʕb̿7)`6XEe g'S:?\ Vq5˨KH.'qZo0kv^on]1 /0Kj2fpM˖E R$|Ԏ$ump>Pyq!6Q!0 $R%~UhʴžQD¸QHeQy"`RJIp<".+k;@ІRU6ۜW&,ͧGb.z6a!19= \j48ajkoGBhL%oR'QIXjS?ZN@3)gAЦ,ap"$:I"_5#-[{??!zק?cVGzrk~'MJ|tQ?.z<-_+#=9o?!~ _(6;;@^UNPnB dv$B6]ti"ushJStp;P{/+im~zg7p[X"vg7< wk~7mv~ QFbxwvuo I$I$I$I$I$I$I$I$I$I$I$I$I$$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$H$I$I$I$I$II$I$I$I$I$H I$I$?$I$I$II$I$ $I$I$I$I$I$I$I$I$I$I$I$I$I$I$I!I$I$I$I$I$I I$I$I$I$I$IH$I$I$I$I$ I$I$I$I$I$=$I$I$I$I$I$̒I$I$I$I$HI$RI$I$I$I$I$I$I$I'I$I.LI$I$I(I$II$I$II$I$H$I$I$HI DdA$I$I$I$Icd $I$I$I$H$ $I$I$I$I$A$I$I$I$I$I$ $I$I$I$I$I$I$I I$I$I$I$I$II$I$I$I$I$I$I$I$I$I$I$I$I$I$I'?RbˀZEVĀwVWMeΗePa"E`fkBfk 3L .Z`,.4G_qL`D·>F$PT+f-<'\(a$"s%%?k-;4$ذZFdbiBp`3;V(\mlD5hLGE](P.r-,Z FY xol O"YC ?. ']Z("B*i% ][G$; b1,@\x,plXETDe 6p 0X`8\IbP|D~k+bA%Ns ~J1b0PLkz$],0}uY"|@;AF*v& $JW}K^i5 ڤV:ԴM'敧pQĆB;敧cu(hs-at:9_Q>?ȧ^].c5Kt `x8 FiވiA M??Tţ(%_=;ez ԧ/sS")gz16VLk+O=OMEGG )ȏ#^?,=5**Ki@IVr[wm7`BY~zn;/8#:Ncj- ?TŖ"7lnңP=ӧ?O}bufm/WЕS`٫&tԋ6n! KN ͂S0\Lj",СQGL ohh9b sf8:3 h,mMe&s&75UgfVyYoo>gfRO=J@jF}u~:FÓjVyYoo>gfVyYoo>gfVyYoo>gr߀}JO'6Am:7R߀}J3{~+<Ԭ7R߀}J3{~(VU,mxl9]wG֕]|R|Zq]|R|[+}ҫ/A*ej˿"d NH'V` Jj͈d&{_ܮ#xtݟGϣu0H@hSite/images/cylindre4.jpg0100755000000000000000000002464607312344352014347 0ustar rootrootJFIFddDucky<&Adobed H)        P04@15!23"p$ !1AQq" 0Pa2rs4BR#@b3S`C$P!Q1a"pAR!1AQPaq0 @`p y=?&~Xu&iH8P=Hy/M)IYPS8O<FDzirSJ;̀&\1?J' ` fG<|x+c'&˜YPM)4dP{9'l{&ϝaL,&Rq6 ` e@4ӼR=9@@R!wK* 8- e@4<%g\o}v6pHpۯ%s.V/~?tȿm7z禊uWXxT"Ydg,U9{/.2:25?,~&ָhƜ;gy 21;34?]]m[z:M,07#s` E@yi4ـ25#s3@#ߌ^wLi M&g]kLzmO`Wz)ߏӝgj 9tM&Ui?%\^M+ɿxPr9({S6҆PJiCm(m6҆PJiCm(m%"c^78|Ǝ㣐ӚfA;EEJ)Mѡ@rk«ȵ),Msmת)w5Ԥ%O5]@PuO}";OSQ@e8/FC%QZ%mS%~QZQi"wT?R݆ӊ='䢍Ff5'mp<vֆуS_6zٕؕuzJ[4F5/+"ЋHVkñLòSHmE5sDڊTߚLuJ'&jY'$O/į&̯#[e4]_HJO/į&̯!kChA)JS~;OqGqGqGqGqGqGqGqGqGqϿRJly(ƥu/į&Ÿ[[iҥؕZ2(%)JeyKĈ5ըs\%ĨJ/IͩȦ{NQ6fNXyKQEQEQEQEU#WCiSf†E26C7XX&uqu"=[J"nDxqD\]oT>9}qG`nh+[iAӰ k,+]LRwnjTmJJRH4S[5tc|65XM(E$o4C"".fҰXV9ԛ5(M0ѰX^m{YCM6-l5ǎChm=]2g`ɪ,x5vy_!2_xSf>:~f"#3`3 a a2ߦjs_2s5GIdFQeFAVs،g6j $Xt34T|ѬB oI3iH״^)Da02!I cQAKgP0o/{Ș1IxC&cQ) Qt2 @[{?FX/v??bj0OЕ&\rً2קZdž.ozc|6\ȉr}=?&SnAf[I1ujK2p:%9PhżP[RԅPA0nϬWt X{C25{ٹ%T9*GXCk\T4XRݏz1oF桻VSYTkMffB#;iNSDeEII>$l!a3@8Q0V0m,!ubያvEfV4uV>s;{DɐfR㉧!Av>]WTNEhq̨cg7&.KLfuN-&P\]92NB{MϮ=ӑvv'2H6(loF9oW9tA+R*|E\AK%% bVe'?Dvtk(hcqS#SAG}J4|\BPT(Z̒+16N+)D2l[D\{<#7*x\|ccs/esOt@xZO(=b'G7mǺr Q $j)J]W>K$Vc:m]ʜVS HE왉),qRG4iEKҊ9/sJ*_hT(}QRG4iEKҊ9/sJ*_hT(}QRG4iEKҊR1sϬWt#=dծp@vJ죛ú#X{ tS1tKjU\|ccs/V$gM=ʖT %"I"֞{r>1*߾߿,!FӔz^䄸iHN}1G\/uV ɜ욲dO:="7S1;PaJpJq5i3"8*u^4bp`T o#>rBJS#TV}1Z74bnhkъٹsF+_f-IT&ۘHC/xUY'R*3~EG,x>7fmx!N9 )zT3JOGoVdž)0V٩`ĘFq8iQTSG5<֣F`ӜyK41xlQLvnι U$6@,,-fe!),vI<-i[Gax7l[GD EUd䕸ɏ;*`Kϯ5O/N EY67c6Os \%V@ (R]/JlU:*!O rKr:"Z'{fpZJԃ/eJ6R+&,\k&8^o.~nHȚ٪ȔlomsG`Y@+MJ")iEfmN9PP8i$%:哜|*w5HP"В&67c6Oswd˸UTZwEqŔ7*E#űs-w3T/?hն̨m!)Њ,[1*}0B*JhTQ:|ʲiSIG&k,$arc6۲- x7-Ұ?!$bWw1$pju@Bu"Eg="Ob[&on/SkLoLPHFGdɓ&L2dɓ&L2dɑű Rx좦k;cխ'b LSĶ/-lVI"-ln˩S\2 DEbYuF'rbCkKyn.*$\3NmɵXE J" i` a*1Ԕ%7Q!|#QE )Q%l!ѽ(B k~r2+(c&lK"BdI:/Xbh'"&ģPC $F$.tȀ\D҅i``J"!9Ȝ̘G 7@h Ɣc+R#t_\L4G6:|M}tϵvxEjo{CM|ϕbd>SyJv=*`i M[b8Yqrj`X/վ1Bj\Dr j'&f įCebVBm"^(@:iĥc$eՍ,V3P")W>יwWscBpi$&Q]S*'#dґȽ/i0Q)bD\N%79*ϰ/'j:32r^PZ gCCVɇ;`҉2x%ǯ & "~;41h3.bK0KM XG$H"D$H"D$Hj`qQ k`X/վ1ǣ9lq](t,q + w1@qvۅZlgƴڋ"Ն;mgMllB8,5==gwI"#-AV֖2w8Hj0Lu5O&ӥ~JY[a@npG)I6ٚm_jS&ɭy0Z?%ykyL4x}@nR$H"D#M".%Ȕ2bFGo4Ґu٦4[_V2Vy*l'^Z%F!Y aXClQ:rl+pYh3-]FOAi0)DݢajZ֙7O#P.ʽ #0fұPI¤@OrJW7cjW@і=*8o,8N` ֵu1x#zeAlȷFq/ _w%T271 l4xk {R9q# B b{Tu;/(XLlYфǥF۾ ̺07|NSqXL-$RpVA2cZ;f8d -0P:@UzTcJ{:>rw `;8l&7L#eg9ӿsCD?C[]b0o7\+cQ|gi_47e#g(]ß?!u7St>#I^~I3b' n'u !i*P~ixgHoJjMC}Tj {Owvޤ8ZTdBcG?!uӷj8G:>*sφ>j<|9,if/}+_fVO4q[g^jme KDK?._n"FK^޳Cvc֖I.^;}aH]Fk>ۈ@Pއu11:ݎ`gIϱM[_n"$z }\>[sb/YDZr6ÿ I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I $I$I$$I$I$ I$I$@ H$I$@$I$I$I$ IH$I$HIAI$)$I$H$I$I$I $I$ $I$I$I $I$I$I$H$I$I$I I$I$$I$I$I$I$I$I$I$I$I$I$II$I$I$I$I$I$I$A I$I$I$I$I$I$ICВI$I$I$I$I$I$IUReTI$I$I$I$I$I8I$I$I$I$I$I$Is6I I$I$I$I$I$I$FI$I$I$I$I$I$I$XI I$I$I$I$I$>f$I$I$I$I$I$I$II$I I$I$I$I$I$H+I$I$I$I$I$I$I$$I$ I$I$I$I$I$$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$$I$I$I$I$I$?Y Nr8Tw, 0QUwb[-5XA׏As~C );Rl"+ .L!7x4OP)r/>4"IsXۃyO>|ϟ>|ϟ>q-{c3rZ Ȅd*EYpn ~)a@xIz LR2"snՐ$XԲ%ww$>c ґ2 X ~9((mRT\[CZMd(߹|IsUb,DL vcaՓ &)vJqp$ ҅_)@(va 5$Q8+:JռFQ`BMe# 2$d:z#1ƱVGHfu|y޻S!kjhО.?^B"͉/fWzܫ@n%pR#u0}&_&| $!u)@ )zD[j"-]AAkc+TT1@=S }cB4dR@&uUL,}$UXT .і6[doAט^ʼn]b0& \ JUi'J* t4ZFOU(c, JO3pb,0"s-YF|t@1Z;u3nyX`ص D m'K@$e5LFJJd`_nL$XYbT B#D/Qn1!+笢]9MP-? p;z(2@dǠ̒p@((&#ɐ!_3hp<!j0WBHLcҥ?{}]« K1QQsx4hѣF4hѣF4hx3 D҃`u eߏ"0 (4R`Lj=)/\jl(*1>@ %`/:FR $;ݞͩ0"B] 7i #@wG=7ѱi VN5 숂q0::RJ@dÀԹ-ťGR`N&Alطu*,ܿ,zgR^cHP;a,y bޙԫFkd_t^zx;:44hѣB@ pX!y(ј9N`^B7b^U)bFtͮpj$PĚ|z!;Љ%ϊ]Hd S6A`p/щFx(:+%dW@7/q cB]auT.͏r+1;@y N7RniIB__a"܁!;]@e2?uݴyhe[m&3$_*B'(n[fL65ڣ%4xBg]_7xgwjFH땫}~C/1+h0np$YsxHk&&+xO?"-/ڈtN~JؙYre/JxK4* k!K=/ .E1`Z@Ax}ќD\3/^xw?u'`~ݣ~>@e- |@cA@86Ϗ:i@m3z9]8XC%5X2d,zÌӱFN_v0ۣ:vwa\vW+soq\bi26;ݮ!}kmzs_kmߟ=5wzR3<٣fޛ>zX Ԟ:&{u%CmnT-Z{FȤ%mls:iXA]np?pajMK-A2yJ, legAG>Xvy<'P⮀A,ԉVWۈrw{,MC;fDbas(p0\hqgEX$P%@M T͐/N>>.HKr` Җ7T&wJb;Jmtvʷ!<JX< ͣU^Wb_c\{c~cÿSite/images/cone2.jpg0100755000000000000000000002032707312344626013454 0ustar rootrootJFIFddDucky<&Adobed B-g         @ 0251#P!"B$4`3 !1A"Qaq2R# 0B@rCs4b3$DPc@!a `Q0P1AB!1AQa @q0P` iy1'/w)jkDvýꏌT}yfJ("i QϞU 3Gue @*9IiJPUD^n=t׷$h6 ԠDZ|@ݯۃhSuk{e}>!OhwQTΧ*#5[hۊyĠȞU@M%u(*9[(p?\z+Dv'3|đ X[b*'XNL^Ay9ֵl_'G NqCMQ|{6ҿ8Zp3fOI=Y]̝԰UHYrG]*닠p. rfO`$̮ (2v;׾.%A4(Gwl]i]WG":lzVw-e˚WFFar~kgVzr]JhDʝjvkX,a#iY%+~ʳv{lwU[ηZ?hRXEͩaŅoXVa[ŅoYG 6+ZMEʜG- oz&Mry<#x#xE7o ˓9U۷7`sM u]+p~V=??kv+h^n+_??c a4m+q)O V) TJa14`w_ϻX)X&S3˛+lCݽ> ?@]mYd-G'4;Oy4#´MG#)9O%&uOu}KOq+or쑍 6(&Ce69=V{-{_=e"ZNiawd>6$q bj,Y3.5&Sp5O"]A˘b5E (0|T;sxA2(i䀱Eeb8ڇK'I$1/"߻i5gǵF_&*ZNiawd>,iWzͿY#jb '#Z-;ieÔ q4kdx`+1W_'j<99ݒ~Hs|qGU_4`㜪f`-2rUp-I5AG,1oQNx+w?.VӤG=,ca$Zhq(>}d-V'ePka^~UfTs k]`#)coYx93f{`Kdk@ҡ ATq°fj]R;J G|cM8o1 Rxڣ@by\ҷX.*¢9(w8[A Eyz 5m,S4sTnraayO p̒Hᳶͺun]͚94|8kleiq'P?_U,PW{"ZefkК2rݤDXR\rfk^BSۉ4y8cE GV2;Æyymx9xRP6<Z|A'sDždiZO/ ^~c E0/1V7|(Mǥ7jN9m>fYT0*AR@L8:Wi3p$V8?m1wGz3HVePia^CI[bDxz*Wٝ Aezs6t.!0BX㖷%v姢<S3cNnv$RF -Xcq]!u~:T˷A~:T˷Uqn'_d ǜ'?!PVd ;IHcϢH%PiڀvwNX:6>Š/D#S M^NIleDzǾJc3􌇨NBJ@G?k}Rc| W}GbBYkk"bH :MAX5Z($ P@},y,d'!% S#?]aO"la~nyRc| Wwѱv-%z3FنmW^XNYNBJ@G?k~H]'FشZaomaW𩓢@@s2& mt8t('@$ `dsj|7j#&llY3хu=@,+r99|JyDF DIL2hHLCuP&Wb/@ !ڑBG#d0|ڶSE2bo /ta$ԉÞZD@S>i䡈Ty֒;xe_2W 5- \2VGҫ BXДEZC;H-[Bn{<=Ѐwߑ#,BwbYy.1쑘7uʐ?twB@)n*r&&$RGcc<b@Ӯ  Z #; xM8gAiӛ`BP?@a$das}&9Q0tl}A e_A\eqI|fctJ ;~)lD#bx(B 3'X ԙnئ8-"$8y )y>@KAa^16$aaqG,JǃJ2SĦ$1Jlw&&ľlGbBYk]B 6(J5`ZELP]ޞnd s.o/)Z+%qnH`^!L|A\Ma i6/}:1Z(GXk6>F]扞04FC!% S#>O lIxMPQ%aqG,JϘ20 1!R-oy?Ku2Kf;LD=+2F(tw&DWbցDUwI#M Q"^ܛ|ybv}z'oq@o '!+*L*yNuKGx 5 -h>} ѹbZ'fj'NSA8a4ڒQn\;~Hc= ;qB6I0k/) /8]Rik=v UՌʻcD7͢BĹdLI o4RuSp(޳fkm*?!'ZpX4|8cL_Etz" z .E2r"Gx=s.;]oщ84=YfdOGtaќzWF=+60:8Ś&tgќyClO2G‘K׾̐}?!&xl=daR :z'z'8<~/ǣ|~/ǣ|~/ǣ|~/ Ȉ,:wG/Α cpDMߠp0~sdgX 2>/&:DzOϥ|_&!_G끤8+t`+Q' 7j8$P%ԺkRAȾxS@~OgҾ/:{>V?%ٚC~+WYm4Cp{#Yw2~`G? I$I$I$I$I$I$I$I$=dI$I&$I$CI$I$( OE/Ӟ NAҚ): ^jahD!f5e["c]Οn/瞊_=@[?=[RH)n6OoA e Vɫ*@yxbe+ɀ EuqDŽauRo-MKA2 Df}P%Ha%n EZ*Z$1KrhD9j%Br#/2`~@KbUY@U\SBӀENDZdM`XlT 1*†Gzzz8I$)jQBD4FF"cy(.WW;[: V3W,=JMB,$-*#RT+mH"1+?Ȁ*yE^JM JQ:lDA)*qs"Y;IIJ˼w̤ ĄdLt:IVEŰXZK@L5FSieiD!n95e[cudc/Ӟ NQ2)Y.@+ Z!27@X #DG\gpC嵧[R0Oen b5MYVȺdՕli`αfAVtz0|q3hBhV(;GK8/Ӟ N7xm*14@06hxJ%lqu YQRLisM2?x 6;MpA&A-0(= Jj XJ щZ0P *VegaK-VU.9XP x ͳՆhx C3-EnLJ'۳G{qFlZ ~òN!8*u!&X,]+j?a#*bV0L$ $2QF0 hvJ'R}#>vq1>vߥؠ ; XLSo[sAabo* :[ZOdHF?8b/s8}`:bL# 4? |}c4}Y-]?'O7[ђ`MbO?ےzx'^ދGҫLTǦVVVKopaQ@`,**CX377AAiDZ_Site/images/cone3.jpg0100755000000000000000000001776107312344722013462 0ustar rootrootJFIFddDucky<&Adobed y       @0# P`p3!14  !1AaQq"2#0@BRr4 ѢsbCc$P`3!@1AQqP pRa!1AQa0@q Pp` 3@(@G" EPJ* #h&@QTAM(~Q.xb߮TO{%@%>H]t`s+ۇ`2P.Lu>r_Cf_@ rT}v J5'տ%f*veO0HJ(~/ 0 NϥN̺S D>DBղ2TME?:p^🵗G}ve]CNH4,xğ$"mgKbb+S B%&Xe-'!!1jRM8+^Iyvu2z)žF7 S*oN̪B:ʶ>BG~SJZ}JjUf+\WFh,7X=N-zZO  ůS^)1D`xu W^X]\̊!r`SnC&>[ߛS-Xjj}"a^a'TˠߗcyK%͔%.Qtl.Qyv{:N*`)^'d%^$ZCj3DMU.5ݸ dz;A\R1YaMv%ַ:CtYxEo[HW^ʺUװ^eɺIz%x bٶ\-~w\RGg\rUʹ&ۙF:d-/ɇX0daݒyn98 V&Vsb@E6묞e:]y..!osqbW'bC#3XMdDB䤙m0׆ۜqGZ_o?uy?trQV8wFOe;-4J&޲[/0[zoYm6 *耩S(Z8‘+ v]7~oYCyn^;DI /U[?+T;o&`C+ Xe$!/#6H{+i]A+T;o&ng9ai˨.1d}FІVV={DzH{+i]A+T;o&ng9ai]D`t6Q'02Xe$!/#?M!y3u/"aV*Ɩ ļ 2lO=7`= ,eaUa h24 ̝bǽ˔o6@r=5 1{v*igߙrcZx$%/VMeeia !k-&K/&|gP U#ҙ4?w1ͻɤ=4f|ae%K,TG!H4R;Zv.LבPl";4L\F}v#衐5BꛮH(3P=G)L[2(a߼]Zf ƊV4\͋Yk3J D dIt}s-Em4t!U|&YMyIwD $.YOQFᏔ:69XqHvsZӞޏ _AY GcNaowe23Rl"@b18.ӺI B˘vc7YWNvCie{?ٟ7k0~LbUlV/2>a^9Nm5Hc4Drr W)xFm͋`s6U(nu-')"884z@ѯہJiߋJXc,ۙ?,T궥h´bDR#OX|A"QG-p}}0äӶu?Im?4м$223НupGYzHX-p}}8>>jǧSR>D"\r s3*co&ՓJrC&fpD)oq[?ͱx2&?ķRNW<#RH!%=5i+չIc;͓[ZZ1aŘ@%q˷E|If͔W( vm#(cE7 ie{?ٟ7k0lZV7cj™M2MVF2VY (ߺ* 2lO=7`= ,eaUa"]UQVc}T*F;*wԒyɤ=4f|ae;-L}{cKwZY_K(5TU%$_jp2_ҷA/>ܿڹhJ[+Pe'iVE]M9ź],RFBgEAd!z>F Nsey龣`C+ +T;o&i#P'D7%{9§cna#3~=n>?'G4cL\ì1btMDsww^F8{uSB56m:bJlrtg) M=1lI;pA ExGHI2MdSۮ_]vkݛ3.P6]o(gYbR*0f좷(0pVe8jLFQI;])ʼK'6GqHu#r-X-H0!NTN)p v~]]|^hk+^V=ac2#/|#^S,u^[QNʹ.ѷյdNcgo bKv'^ԷbKwPO+z<3/~{{X?hb1TLQQ m,eZr"-%&P?!Yn0XƎXH`YK,b|c!F<hZ0m2 lƎXH;Ñda,dArȋq4xI-[6Z#. V h쑙E9l|9F7B\'P3hˬy`VKJAuZhdGd,DO(Dr&btTZa#IGuDĘ%M!D{˨ճC';$fQb%"w,,L`cLF!Um2#-IP3M֯Nޓ;Nr+-B\!S'k cAJ4!73Br;'OTDJYbz@z;3.|.j mRf@fdm d)M{\2Bl!s[ \#zO8?18Tyqe#fQz"X ^v"6֍vN=c>KqoP:Ⱦsc|j0bf9.똍G)NʗeWpyW3+Mґ !?!.LDqCƥ]c(-9<5HZ KFچ:q{sy̼anZaV~(f\:)a?!. 2gA"rQz\of"A _~";~j kKQn2h3}ף_&OLj/mղLNt.d%X}tg@ɂ':? >86|l8y˞t[7&-:t3ۖ0`#װ3ѸBo/g/Jd3LvP:?;V|u k q o0AntTHC:9PrƎ>yu? I$H$I$I$I$I$I$I$I$I I$I$I$I$I$I$I$I$ $I$I$I$I$I$I$I HD̓$I$I$@HdI$HLMI$I$IBI$I$ $dI$I$ $H4I$I$A$I&I$I$I$I$I$I$$I$I$I$$I$I$I$I$I$@$I$I$I$I$I$I$I I$I$I$I$I$I I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$?eiD!n"/($LiEFKB,}>pYuj ~>\@{jSC ?Pp GQnc']X F4_r]J_Ѱ83l 'Gg$B⢴?!13ݩ SaTq5COsB`X~pȴe*ѝ 0Oqq`#KAfysZu HE"#eBCCf& "H"4kBmCY1'vv/o0P՘^.`0lt@a1cttEJf`yA"goeBl.[H*!:9c2%3?:"O^bMasň2@G-J@M C&))U,hLҘ,A,1D<\6JeιKB,}='.QPJU[`Dt!ʒ.Hf@PQ^\ebBc.VW&,=Ȓz3}[BD9ip*CSG8#7Ou%5}8=Xf@LK}&艍ktHݯ! /FQ=+?) J*.V`1,V2佢0}L%ڴo%#"]*M-P]J`bZo.]թjK(PEb(X -r୙H`G9KB,}:a|!C'UIJč"t8)n0<1ުBTD^PH&W4AMQFR|﹡KB,}>h|(] BN7>-\x$"$쥔\ѝ[b]4GVDdLǰ4\)2a}9hiX3v*BTD^PHeiD!n ZG:8M c%0LN #6=À3IcA%ED!ş{4T)z4pNWI90z|!Yrbl~NN"E%S :{ J^8(νbUfQ:lmDXT'{ WK :ehL@hgIfx.t0Su +FRv9QժQ9L,! V>` .}X&^H['oD eHA(ޥByv#<'0G^HK36/<.SQ4y\T->|׀2V4d6-Hux*iŚ":soш(;N+cNO>yQv<kU?.H&GA(SeqE"AuV%Ӄh3 `o0)LݣZ% >t ̖A0臦۩e6fBQTVz6x[ggVfL+sZ@k D1a3tY+7w h{+h[74dYY BKN($A+ivHuBM[8.vX 1dqlݿ$ӧ+9x7LD8񫑅l >!ĔUtPR9,莩 H⡁Ӥ>WslQI'L&eqBDIoۑ&95$2!+o6~jh rm?`kk1J*z%$5+6bTZ:t&v._4LM Lɶ8@(USite/images/cone4.jpg0100755000000000000000000001143607312344750013455 0ustar rootrootJFIFddDucky<&Adobed #        @ 0p"52#`!$ !1AQ aq"40@2BRr#Csb$`ScT@!Qp1aA2!1AQ 0@aq`pP :#GnZ>Q@ EPU EPbD`&nٜvPJ*\&sQTJ*'*ty5fPm EStpi+ka aJ*J*gٷ]rцi/( 9@mYM)g |Hlͳ(H2 EPI < $¨ @R%H0EKl_D\WLWN)_iٹs*Wd]-3ܻjk"LI0:ELep*(6/69 x\l ,TO=+e/qe?Ѝn/)J|q9VX;IscrgخU+7dLHPded$e$o&Su>]]]]HcNoiiiiiCHܓ0njIPr3Z`(QRJ?D )k"cػBze׼jrx*rYCnZ218.*խKϝZܴߖʹin\MrZ"ĭ,Zmɏ]_H+2}/4E{H!r^ZѦRz&lh?} ]בo?wZEԵDW9Rэ{R ~@YOyYG[OY?ﴓ,V1$̲cBw#Q+tO2O)29Ppt؂:XT_mrWhuk5ΕhV9V@Ջ~X,1Z".B~_}}|#1!UZMtu;.}{/-}o9yo0ˏV ZҲ"#ӧCC ZTnjmO8A2K*y0 nIB?-5w[+\y/)Hזq[wԟ|} ا֯&$Њ(>rEmY/Ӊ"U"1&8:y[cˆtQ_ޗt!U;[/3T>B~[b_5uKbъJaj`gs0bGly\Lf_m>[F9efvHiEikmymQUl.T=6.fs]?? \eLa0a+~vDD:MGpZ>8 p<1GmZy-nVKv8:[էٓŇvxk-Zy-nVKv8:[էҘ2# M"cfy\|G&:95rz=8yFayYK/Fabșy<dbq]:/0tavf1j>u_DJ iX$^f֢:C)Ø#LՏ/&RHHTBP&FF8F(8Ã$C) c?v *topTa)5f;1P\tSQeaFS|NP|ziQW[p˹ *to2Ǣ^^<L>I9W]g.͇xX"ffcEQ"ԟrLu*fSD)$S_2݆ wh=dar ͨa jfBGu00~1NW.P[2;(P*];sf$7 G C!1b%7㱺 na9mzYǒVXrΨ6K @0}0fiل`ɣFj2"an P{YN\h]pE Xwda&/8 z'쑘 Q-J!rgg(mӆR0FT`_8U]{M]JИG2da'閟?!WDh<*h<6}xP79>-$]s~?!݀1Ǿz1okq?][l6\𢞰oOo <(+!ӎw7w+%/¹N?6:O=?O)禸|S&KcG I$I$I$II$I$II$I$I$I$I$I$I$I$I$I#I$I$II$I$AI$I$,dI$ $I$I$$I$I$C$K$I$2IG$I$I$HI$I$I$I$@$I$ $ $I$I $I$I I$I$I$I$I$I$I$I$I$I$I$?N%gX_" 9Lv ^@49l}(?bdAi.4iõA@t0Rt( _D̸52']j[8Dة&(-C^r|r yf7P̥]K!9E:Rff){Yz}Bf( C`f5E$:|<+ AO&I/D8Cò /@むؒmPUGl=+LBpSމlQB:F%ʟi@-;m){ȠS4%VmT0@vB0PBs &T`ABmX.M[ap_FL:8.Vv놬{oh&6Lk tq} Ō~ PW`˴?LƷ-YfHR7T$-ˇh12| AHY( T@S *$#>4"5 ^a;Ä60r@ ?$4\A4iXCPiZ"T ]bX z1'` {`JJp.5` {<6k`8*U9 X(řQ рpUWmm⧦Ak$<"l5-fLLF PD$A PxCP?؟^1Mn3WϞn:my0}xPj@u|h,դo' WcOwyr^;Hg?"~: IbM_*6n$މ$u]ӢI)tUDžʚ0>SK׫:j4`AuNܟqC>`mw^Eϓq=K˝~S~|.g$uV0f—, l@ b!TRfg|'",`@(~;f8OYU{rXYsSite/images/cube.jpg0100755000000000000000000005011407312345150013352 0ustar rootrootJFIFddDucky<&Adobed V%9PJ       50 @!41"2P`A#Bp3 !1 02s4@AQa"tq3RrdB#P`b$CDq0P!1 @`paQ!10AQaq @P`p @)tG$D}:>d32`0 L&ɀ ǰUTZ 0La d0 ǰUTZ=-]9}^6?G3Nn_B?cۛЉ^sxLZXS Q"BBv1uU)xEW\5j}Ι~w/z?{PcDOEk_~T/܅ߡs96aIögcUTZ|ẓѣk0z#tk'rRԞ/[\}[a7^uN0>SPQjB{HɧYmɴ]:QF_/jgᾦ9՜2>z7ܙz-k,V*-@GLӟPlϏ[=o#*}^ާby'^c47.w|+O7`ӳu+9wٮv1uUM+IP|zљAٳmy}\^}=zιhۍs#馴>:h}\mgȿѐ5>T9עafDg՗ʕ gǭ%gt^Ή>o\xQ|zVjƷT_v1<.jEГ Oqzm\!9SP|udb \ueZU B{B"=j;t}oǻat/KɍDƣN{V7-,c)I+_j_f$=6uFSgZTl:aj!L {xtE F.yYKNuɾSG<^wߝE{]@SgZTlQj6uFL^ gǭ&j#וYV_ S|t0?ԉ7z'[#f@{]@:sδXc+ 0_ѶunS>=ohQLٍ^ =5x]:vtypp~+ׇ];4' ǰU)3wEίl-Z:xZ)MF= |n_Cmi;,\:܎7F/{GWqVO*[8v1u LhQj>S:W)3wB{@ Y_wvcyަپcBk=WҖS<+\EڥcMZ {]@:xZTZUsw)3wB{@{5HE]o<ҍ~srÞis$'cWPέU-JLh Lh|zL't]]8]nsRy_6?҅xҳv3`N=I[--Jջջ!L;˗ң.7GFWDZZH ǰU)3w@έέ ^=op߭sfpU_]9Wk/y$ ǰU)3w^ ah ahY32`eWcg-x0gѳ'm[LN=I[-I[- lLds|>3!LL+wAEmd'cWPέέ*6OhO>|z0MV t̳L'cWPέίxtR9dS>=ohcF/ro2{]@:xZ6i!Kǭs8l#,2M=#^#lvl[esdHwXB4,|mvZgct#)3>JLgzz@ήݝ 9Wc9v?c+WدO^b>z}+WدO^b>z}+WدO^b>z}+^Q5sf츫{~&{MdHEy.BGʊǹETEa%ʈʪJӨ{~&srsYyH5Z5rQDQQG#3fVʂ]^1m{齿}l@W)*Op=剨^QdvhD,#J4~FsJ,{Mb@y-y;p%ND"RcUQZEI^3O v{|I#eMK;kPVˁ}mF#goCK*1\Hz[뉹XXwŝË:hdQ`_v[eI;j'F52-JʕRjOy쁝IvX/Vw=ڶ}d{#YG=﬈D?_Kiok\3v[nS}V}3BFPznO<V'̣vXl/-c-]=lcd{#ȼmSD u}m++r"7cq!?oHQQ3(,{K:vqGM/$YmweJ5%zڤ?;4oަl=K;8{}:vqFiܝO,~YERFM (s[(#Wqf:?}d{#YFwj=﬏}d{":mޯn[7ݖ 6;W"$Av5n=HDX7M. .=lcd{#-]=lcdi,cvMSٚ_}n]%bEZ+\y omh K{},6|ee8U+Ǯ쑊7A=TΨM K{}>?s7ݖIBW:+Pxlw[Vyl{-/M7ݖPa7%9GLl-W=;͚^v[1G1mbh#Po&U-ED{齹m4߸27n+֋/%UWeO ꈉci{ooni{_}`H:NiZ+i^rmnZSǽ+sϒ>JaV[%niа+sϒ>J+sϒ>J+sϒ56zP]ݖK6'UAF"[DDL K^IԴmGRjιũ_YYٳme33G&/df)L; K^^IԳ=[nRHԮ찟[J&{ieDt ƺ] Dee;hB9k[cixK+. }a=j51l{b[}KNM+Tw酵ĶG| aG֏Z>}hG֏Z>}hG֏Z>}h)fֶiokhsǴwXi-ƣ##|Ygş|YgŚ@ҬV/;qڜNujͱXw?Atzv֌O׿')e2LS)e2LS)e2LS)ůkZ\2QFT/!l=yTEu _&Rm9HʎJU9ĈZ=OV1tT(d(&bmc1^Smڊ{6#K q&FKkS:F2>( Ӯ !r/ji$NVi/yR克"IoRgЄO>RbBw_ᬩhH=)~QW!sKfЮp2aa"^jb(PB (SMȽSGAZH\W8آRy3ĢHlVWRJ*TRSr5:Ub/!̑=QZ"M=hNɤ̩ |#hWUDESw2 O#iᔒDܘr/R7Dp]0kMB2X]lmD]DB (PBSv]GE5QdeRDʶؤВZ+]UU-QIC*Jxn.)l4-VY2q]FJ-XLL$\5]S}m]x'(o.)ןwRZA*L®"/.blKj[; pwL,םttO%p pv 9-ZeWpv" aʤ^v*"iDj kAWLDQqc1f3c1f3c1g3c1f3c1fŦ?:*TRJ*B*W& (PB (PB (PB ͈vQDH,Jh9y0^NcmIylJQEQT̖1)S.pE+R2Y(:EבtKqr 3~Jk%8<^sV[g4')D\t3R6)vPͱB]2!+1(HW/nvW.O BeHi+D gC:Άt3 gC:*9(-Gr4=jo)E\#C"ȆD2! dC"uS'}*A&UdrPwL.Ub*x5s|3[GLf<[-vCLЯ᭦5"eC*Q#vЉyAܨgC:Άt3 gC:xl|3R'&.6Tdt$U"Nrp-dC"ȆD2! dC"r>H-u28B j6'&(xG $By?ƅL=D"HScďr>rW͑4EdFR1π=HN/NYld^\<$pQGKEFf+dlE=$_->SR֒bGy+GPz'=Rb b,xs_j4ˆ=pӍ%$Q8# m8Z~ax~kӢӢӢӢӢӢӢӢӢӢӢѬDTRJ*TRJ*TRJ*T*0\OȎgL3tΙ&mzPk/M)~?&ıNGbY\fk$'M._~!&KxZ(Nk%* ]?kx,UW'I:H7QD{A-%r /w/P헨_~{e^^~^^~/Pn^y Bq-ٍٍٍRz?u؝sJR$뉭 *WEݱњQ۠mO9!$nN%d*߄^%LEAVUOEI*_˻ǰ|uƍ}ݗw#|uƍ|Xd*pQ;)&3 mtgq+1nDq%{*_w gTU`)+ĠS*K턽=e^4k#8A:Q8I?F { z{^ʼhň' 2%8Oh`K>:KN\#oi^-"$P* m=)R-VN7 JxP%JY4iH "?E9ƍ|XFDjNLS%G{a/Ox{4 S Ҷ‡t+lI%ŢSVHbHlo F_"Un ȌIw#*6hr@*_E"Iڋl{d΅%"r&Ҙ)ŕV 177BXo#Xo#Xo#Xo#Xo#Xo#Xo#Xo"m,U4BtMYBLA /?E٥!^#*$ms-xѯ08;=ڰnEI)lU*Q%a&~0{K"G2tggos-xѯF D _$6ҽ*%5/OxץzUgi*$:KU.8kQߙs?Osђ ;}";OzWVv>ҢCRㆵUxߵJ }DIjj8/= Z4?W/5b@188 822”8}"8M]вꐄms7]D2ܘ26]E:H^RKư\F\F\F\F\B@>3 #aaaawJP>щKa]R[Mt&PSumEdJ6%B;G\7ADJ H׏EqkŻx6|YJQz$R'A+ݗJ8QS('|RPy@}Q{?,Q*{.rb^˜_B 2Ё ̹Ɏ=?Os˜2&hősbC#w#91ݻy,犒u^-TJRE^c.f?˿Eiw,ݒL]b3w"4}jYuU&Gxc.f?˿Fc.f?˿Fc.f?߀ mPh%UDKw{oWdx/5dKsq5f%w#922&zWVv>Ң%J&k*5_R~#`* 5 b路éRJC`-D5rdQxu% iI>ȱvh6rI׉xѯ%3U˜Kߙsn+ҫ;HiQ!ZqZ \$#_Iv| Q;L4(ɑe&ڪhxѯ&Hۤ!VRG{'{.re/~eHKmĽ9;ТG6^e[?x]35Bqo;*E 04kJ?ӶbBH<̹ɔ|Kӗ<6N)^rxѯ)#MkWq᭵8J@Vi!VL"Hq0ҳFڜ"IR|0ҝFND4 e=^TmwɝO6fN&ҁ^Rvj3?!r|ҕxt fD:{zׯ^zׯ^zׯ^z9~ xDPV ZmJcYw5\+.`]^t}3jv]:3a5o4Rʞ]kQ 9&r&_>Nt3̠&%fT,, J70?͇=s2)ZTer xG0p`P RV`1gx"c1Vɬɘ2_,2mkj p`]{MFe%&]сX3=ƪsl(Ǐ;8Gh14t鬯< !(0Z\rH=v5ӗ5$6s"P_+w<+ЌELiiY43Ycd+YdU`kxMlUDИ!f g. sGRHFTjsGږd$[3Wr.!Z?ZI靊JZDw3dO50,.-B74Y@]'iհgy#%:|l] XQ0"<r%ܼBCpĺw"-\lY5)/U88 ɠ8888888\{*zmj&u7u*}IF%z+I1Zw!!ހ[Ouuam>yN׮ϲ''X3Sо0 9= iVɋf:|G[Ouuam>yN׮d.BL)AsQ|+ZiVy2;b{`Y];YH%IMVgQ(Y&{u  jeBv 1waYK!襩jr8'u>w_y}1%W[F9P5(%̵H:Ѻל/!%eW;iLӁDh:hغe" K@N뻐ntº6<ѸTystqcQ0:rA'Vg4a zxGº7s'29D\5 K;{1 [V?=< ۃ2P!IӨpR_r WIG%GeJwr-`[]?L T L;͟%qrpm. Pi}L `ю5".O/Xv-.4=|/]{w#ϥi(fDl2US&q> ׹"9ptKB*&O9쁠+e`& OF 2iJPt` 0`KT+bT8KzPZG ܀HXNIؚV47\ p+zM+!vŁ΅hQUn Eb"L-VºWb;1F g&Tt{|(\BgT„n6r?^eP;V5@um e47+ S(v?o/O*\ᥕZ4t4`hoxOnjq:9]{]4tp.̕M4QAA5Q"`^fAA@x ]-5l#@[2o"V噺{5usUw3WQW1q7uSw77F-[.Z3H3M%ɜ" 3a4j VH94 *ي/@?rh/f\O+ :kDa[Aij@6hu:i+Zb+.Fj@oAuܭsE3M\J}?!L}3WjAzlD"%Y4Mv򶾍Lնxz)NVkD1KLlع.G5mlRn1F%傁ɬt 0NVJ>nȠ&{̢nLR8#LSG5mpΈ6+K-@2Ybjn\LS隽ٴ zQ%l%D%.bBh#ڴo閖uz ^]68K1E l2ђs"奥tM^ft% ب fK@uF,%DZ.mSa4ˋ.h9AUhs%cg/c 0Pr!2+4ne,>I@cqKб:\J ɘIѻq-----------9|z9|{^څ@cb湔b-&rr:9b+0"PA•JfR1sѻuz\dHKD)ňV;D7|7==]IL )u`-m(P}Z7|7==RɅd Dy9zn|o9|z9|{^RaMtiBX8sw7|7==\ϢlƲ6___Vb!t))lJQouwyo1+:O,P.b2ѻ,Zwpj^FijWnL-/o,5o}wyiiiiiiiiiihڛ{wwnK}u}t>E0t&&1\a2]!\=1dN;'vOi>Ӳ}dNI@= Fv`/eҭKbe!І{ϙOM*˞lʕ\.q)w ݽ3g' pTR`R{EԚ {:`WXR;wOy>}t-{13V2Ĩl&0$sb{4RvOi>Ӳ}dN;'vOi>z>g=9[+3T70jV+w3y=3؞[S4uK0̺9tyl^w73=BL&EXײ`TՆۖzo>g{qnTFJ9AD6w3y=3؞q }S6˦gTopfz>g7ٔw3y=3؛S2DULT Lw.o>g{sSFKFl5w73kJM(jxfl{g7z zfM(g+7nPw7)MCoڍ||||||<\5q GFqgFqg_09}uКYպ㊆P8̥s:4 I$I$I$I$I$I$I$I$I$)$I$I$Iy$I$II$I$I"Ah4$I$I$I$I$I쏑csZY4I$I$I$I$I$HPbUdI$I$I$I$I$F gL[PwI$I$I$I$I$.νb_>lI$I$I$I$I$n)aknI$I$I$@I$Jne"?o$I$I$I$II$[ _'$I$mI$I"W)o$I$=mdI$I%@I$I I$$I$HR#O_I$C$I$2y$I$E6*!Vr7I$}$I$)[{:J_鼒I$I$I$AҸ.;umI$I$O$I$I$mI A]M$I'I$y'I$I$Z0X&$Iϟ.|s˟>\ϗ>|^!t-Y}@*dᬶsJv='oߝ;~vK<|+t}1_9uzk?sA9;~yFA/~|4WZTlYpFW"=S6(RT3ӤjScU,z]Lš']No-5J85薃!Y:zlw 8@#4< ?;ys.̾n˳0=L*C*,ΈyS-5丹} k.\,WE=\"O5-uz抗ƕ3k}9#P %}"Hʭ]JҾxƑ::\ИǏѥBu]IVdts-.Ca.F:kC\BK>"gBck.Ȥ7htrc2!Xl2]%dz^cjLSM7S4<;\WDKp0\(.*B8BicHeV Bvgivgivgi5:vOJ1% zx!̦]nĨ+3PC7/:rƑrudEK^|G:^} YC)+Ev4S,ADy\B.!: *Z5G^\q,1hB>s !>So>{>X3a<:\P;括nBEfLCөw7=Mc 1j= k*,T !`EKfԁV&Fx|cg1[jmeUkV#5/թw7=]`]ש) n&[Z%!X6<kWH n5m-.d`n#*,,*R^\9E#ݬiZѰ =f隈.'4nP4]S3T-ʔlA/&s GBSZ"&".$3QCK8mdx hh6a]EJap7Qng32d2FFf隍4DWNIÊ(K0؊Ay b v 6@dfc.u"$HX2rCF`IY YJHvXKLKZeج"A YB K7P?^Oקz~?^Oנ>Q7іhvfQG`wى 4;y9ȵz~?^OקzfP㏰ڽhLPJ/8P #F!-ƱŅGf4;yw|a5+WDZzچƐKhc*dC uҶEu ( Vo:~ej]x5N;4 -!G-0&10!}yxp=O(1Z3 *5B : r30KyKz4noǣuIjEg1*LBOXB4oǣuA*lA]leQLV̬=Z{Dezt;{G5?\t,PvȫDJ:!ѻo8oDZzL|I:-Jذ\9%LXDz8oj7*O(&/Ņ*^Co8oyëNkywnS%%.swxp6sW ^k5;. n;0C?/n:K7fQFQ{q2Sn:ջK%o4; ':?p8O'N S?p8O-KF<'3xO oO^av*umw@;{ 9UsHv:"WMKzaNEu;1ހ іVw^ta3r۱)˜ɔWrZ|;taw%@a<.Œ[b[xvdur瑰[ԐIG"!`5--d~k*W!:rYt |tn׽sHÚJ](M\HCt_t7e3v|=; 9JpǷ,B9@-HrD6GiOݼ?$TZ PJ-A^Y)(-@yCAr㗅UGGo;͙Fp׽gOWԛ~ї@;+U,Ț`sG?}Pױ,㟍5iyӰmZ}7L_zU"h*Nr/n*5-y "h<~.n<=|NTz̈ˠ48K$>6-JE9] 쬶9vSlTZ4-@k#f#v@5/C~L(O%L~慓''!IsRPES^YZ|DۺWss6H.)g^XqXy~ORu5 E^ UKZ&1{{9wxeTFHV{^{0ÚJ찲yrev: rh9 9KZ&5~M]͒MuSm߇u4+2wv2aܹu9ܲD$@_:05ϣ=w+JXwױ,j9onPԬ%<։4ݽwXWmhWWl;oz^Ìū,,Xozy,KZ&ZzUte@k*3ã,l8aB۱TZ<։hϥ0杯i^h2o v-@Z|Dinul;yNCkMe6YTQ"}@E/UNIO8ۑ!MJsŹϸ!@OC]\ko~j[y{&&&&&&&&&((&&&((&$&&&&&&&&&'qr?m"fةDXB}DZB'^'18o~EQWDMBLvV\rPN/eE02sb`F=B{SN]QXY[;} b0&oM10`>EFb-B{SMt7>5cr7s2:šbQ:R ]XKr/t'+y)6F]ʽ4]x-cvķuȞᝪh!J?|0gv)d=ylM6!E Wu!䅯mRYm+ƿ%q-=ło%UVo[W+\B詈r9sZY9osմ(.$O")Y,ZvvEnȽBQ(]T%BD ގB赭cTr& slZ]N,л bd?|Q(J%67 `$T1 9?/v1EH[9?_#(JYYVz{W9o3f'>_rvX_"ָZ׶W=z:y%Q~6س}'~Px{&!8&}3vK02J.Uvћ+-XsZsQikp<Ƚ_giQN*?KgmxnSZC+Ľ~ܡVC X:x{$ÕMqN*!帅0Z&\K"k]<^s+O+s,RV'49g.uǔXE+lgf`Ӵ}ڋAEf)8[-^%)Y%)ul;v4ރ'Ƚ&?[7)Ű*OrsӼ7.'unn6 /e bn[J%=Kj9{{l]EQ(WOW6nZZ{,U6Jdc袞ܧFFTJ{$/|qJb"YHns^J_#`"YMW>^*2 (<<"Z&0`]g #2BokX.Yxxxxxxxxxxxxظ/!p]]]]]]]]]]]W{Ky<R{88is5m[Vյm[Vյж^/Nb1zvjEjڶjڶj-M7B tdyrsi1.mS㧗75[uRGO-n1"5R2X!f;h7NO+jLiVFWL jM4M9JCssH*rܷ9W=3 D)^*=5;P,zk%yETEM:o)O3OtM:GY\SToTo(j9fnR)n uFYM(O?_(n|tЊ:M'tY*CM&:MvC]!J{&O+]D!Js|L\9-nd!6`t˓A!:*UoFDeEen[n[n[帮]Bo+q[n[n[aL(*lJk5zVJmB6۔[1&ZiDXn#FP*բ-RByx('>:ypōc4anU!9Hbr|SZ!9FSJw6$\'5=*Z 6u]#+|+FhUUW9 F&&8)[A[mrܷ-ʹHN7)R6D6@ Drރr52TĢQ^r& t*a69"k:%/-?'voM(v]m yӠQGP7='# (U5aFj0898g(j}\[;J !h[kめ#! vi3QR&nj!}FG5Hi@ T_BӖHnW@|cU%-#%V g(JT1)+1bZ 6^Z5hJ%=V21Q\KuD9_+Z(BP.@ Q)Nu|fG:%"hl&\ \r.Eyx! НuWQuQuQWΫUVo+qU\k?F[}L%?u boFDЁ P/?s !%.qa|jK,qՀS\%4H#+xvY2JNs•l,^7P}^kwݕ}^kwݕ}^kwݕ}^kwݕ}^kwݕ}^kwݕ}^kwݕ}^kwݕ{^kwݕ}^kwݕ}^kwݕ}^kwݕ}^kwݕ}^kwݕߗҴk[bK()eQz҈8Rx??Rx;B~;x=}߅'=(xWh=&g)$CdRg]=]>W^KcdXjڊ3W,n9ןV1.QT:ySΧh63ۊ՛h)\C@ш@%37JOjN= YTpWc:tWY"1ܣВTyi`C+ pTw+TԒh:m$96Pz4du\>|*]"Z ]gcM[QLm\b 73⼺@O{3q$3Ac45:O(D ˞UR׮++ET5e/ЎP}vMU NiYI_" ky~Z-Uqj.Y+M6DVVjdphvpr0y3LFA;ePtsV=Կ_qIt:To鿩$u ~e% 0Dtݧ趫jSHny=k+k1Qpc=(ψjWW.Z׋=ġA5m$c3*;5sto$R\g~zsŽ*9?u?X'> ѡERZ_h*(OW;e'=34G8 ӹe9$4gOf.*1@.inH,CJD籓Y&[ܧ[Rt[l)m ۤt5WZĦ+ǼMgX֮z9|Y.Lw^o5XR@ymNХ&q2ӄ0339&ebNA $D\hz b,UQEQȖ;ÍJ9<ׅ~JI1%&ALhw/QUֹp XGP8c4Rx'Etb,2FpJhP,9a}ZhS'=xyK]u5l>U_Czl]UQVc 1iX%2W =ƒ"&LNƊV4f8~OFawVe9d$_gcy1R}kK,uT?%)N>-v8A~x x>B_*7KU_Czwt`9ƢJt!UB7:lpS=VІVV=Bʥh–wicWjd  *ro ChI[2Du|ʕcn%3]Sj@6LZ:c+Hݛlrݳa1HZCFX>T"͐|n'>#Qc5d&*n@N M5ݢohW[76bo5) c=ۯ(\*hdZ}s+ ̰x 5ןEi0(NCxv8%jA9~@λE&:]:q|sHm!k$Q$`*!pyd4Hgzxݸ!Y:Ȇ.+}%%k~jS-ku--5FWsR&)c,7lxϘuG/ݏfzc~t/iq`ϴ:ŇJY݆Lk=+XLUtCpJ:(㾢 k6PQ@Aӓ}(0X ]T@u3\3Z)tW}?3 $]EHr0ϤCU?"FSZK_o]Ц#FDr:1zo$u,$.n9 Ӫz5?o%N~+ Nq!!sO{vkb&mv|5튭i6=#TU˥x]ۦ9PH*0.GWL8Fl 9i[kh`)L]bj>'LfôSwڶRmA#3ܷuX!A`.t(OWfWLďqN Nvz^O'U J|6_ӒnVC14zֿ:oJa\ݵ8Dkd[q*c "􏰆7b(=a\ <XŒ! 9uLB4f~{Q6eeQ^Ϳ=}iML ëZ-rfyTkv ^bcBb`P=ӾozkkqtbzI,f 8:x;#]n> gݢác OKҵTȳʣKBC:x:x>KE-6IB2͍72PkK{Mn{Mn{Mn{Mn{Mn{Mn;Mn;on;On{Mn{Mn{Mn{Mn{Mn hFScV79ҡeP\a[I,Q]!i_hJDY+c5N((+RJO6tnVR~A>l͏fR9 !Bt\BK3QՋJߤ@WWwGnяBL?N^?!H;t\T;?{m. 6圯 V4P;^j8$-*wn(8(&ԋ%P!3)1f~mMi*DCc|a0̵84h'iJ1K~TvtK1&8q{ѐ.Aj܀b󳪥 `NZ ՘/ *Sa9XmV@c -EB)fفhWA>#J)m-(Yn޿XV[9I`ߚ8%;&?2*ۿCcW!6UZtŃUhփ[[5u=3@ʫ0H"9+{1aTVݴS,L<˦np.Vl`pA@*؈,DX}O{jx{m^75sMͩ5'WC t.9}|]*->=v8Q{)*x հ>jE3{9ammXRȟb@p9;jHM"bR.S}9VEۻ:*H쐚 kn[49zay ҴvkZY}Y;|t;tЍݳZ]AMŒ YtJE^"lKp* ދbW<ف•6pFlGEDzFhUp;fqֱn> Xi1+6[ʛNXp!J G#J)-S #s|xL@\E B0h%MychcjH@iV<B0h#JX]Se42N1tl"xlHǹJO ypnAloqA-LD. 7G7c66yWr7%ü"E4[z Xzs =#7Q;<ü Nv٠Pmsb,VѰv^{E=[u8\gښ$ pP;o]}c- .Oe8:mrrUF+&7x({ ˹+m6C<"ӱCw6!+{\eQC/vql/!b(((Ķuv(((z Ѭ&Df՗L-cb"6Tr1䆊E:M@^˼ *1vc&{@[-`qF*DjJk?!BIIIIIIIIfg|CYXρ)ܔNBw Bd̷J;@3בw|C ?po˷ꊈf.:Go%:Soәщ+_I-%5QCԺpuT/OAR@[A*oѸ([Z^4])*6|_Y]Q-+2R\#tC;F^Kѫ >ǩum񿧥үqz'+Z/źԌ7zU7.#GPMYn}{t O=fWoy@s`|~52].e)F9w[\13LOorzr[N 藾7tX "Zʷ~1T#2"m|BT*\[\KA=N,B'1oCiv ϩR\!O] ۋ?1Ы)+`5------------ym KKKKKKKKK??!FVO!|7%hZ+EJʹ:2lFQ:1v3A| ,oKA(Fx|=ҩ@=p||nzQ/2}U :U=:}u/:^'fHh ^ fj\= Q N#КN +BQu%KK􍏧|XRL}$|Ӈd[[7|jt8tW82Vw1ѻҹrχ4u@?2CNIV=5|jv 0Ncִ/^<R_/zqK>Vctx/۴9IՅ;L#1 'hvubƾZupƼ"/M?3g=R|ARkQ/| o[gLu6xm8OEziUƓEsF)˗.\rI}+K/Er? I$I$I$I$I$I$I$I$I$I$I$I$I$II$I$I$ɴ\4M$I$IdI$I$I"%r$I,$I$I$I$I$DY7ԒI$K2I$I$I$I$I$H$I%EI$I$I$I$Im,$I!e$I$I$I$I$"X(I$KlYI$I$ $I$I$Ll$P$II$I$I$H$I$*.I$ $I$I$ej^RI qܒII$I$I$H"/g:KW$ A$I$I$KRH$$2HA$II$I$%К$I2$A I  $I$I:^2%$$I$HI$I$t-RI$I$ $II$DIdYy$K?$I#$I$I$HJX-d$"I$HII$I$I$$I,RI"H9$I$I$I"=u,Iq$$M I$I$D\6K%lI%UI$$H I$I$䗨YeԒXI I$$I$I&$I$I$A$I$I$I$"\^%VKI$II$I$I$Dm+I$G$I II$I$Hk$INMfI$A$ $I$I$2M($\I$I$I$I$I"mgK,$I$I$I$I$D,$V[rI$I$I$I$I$K'Q,I$I$I$I$I)$I$4ĒI$$I$II$I$I$I$I$I$I$I$$I$I$I$I$I$I$I$I$I$I$I?H`mul栢1(ݼ6&8XSn` Nz/ǾmyEN?nq8OWxov#ϾsTahp&,Г!vWb6/:m9͈t*37??Y~Uh%aPWfxFdIĂ PG dB-y"SeSTAY-A͟-W-47a^R>,՝3VF+(Ӷ8~Cs/{aE::}>bd'7c+o–bX  @t9fi8yWnE++/;LTkBX%5Y=ۨԸ"2ρDEoÄQLH s K3BāFo,(ŵB_AU8M@K1(V#ݺDOA!ĸ,zgT6ݡ1#g-t "jUg0S;O0`A$;ex˙ßiv_}_x1SS,Z3eou "-]x_fj[c뿫 "QwnTI# 64*^@E;TM&6a5-6lu3A1$t%4XW~'f((@Ԣ̧0:b_[-UޛҀ\XA;6nreގ E*P{'|`/ b>bPSɒ3'@"a>AmêRW#F.6@7| /֑ޅscSclO3{h!Mf@b`YޟE^ZE(Q|vh>.`MGۘ&G*8bSѷo7GL_V4j:J`9r4v%8eam V˧šI\E u147_;eJ@`yAboL8"96`$@<-}"-]Ag΅`] 4ns;&@sp+,cf=Ā) EH]Ǽs{GwN1;?޵#C$67_j!AE[wY)r Fhr  -LˁM a2ǖʗGp |+M *B>n0;" R&a&D6^{X:y!&*tG@߲ve#rotIźAi`!jޖHn8@ D #a4^x-Kk`x@mÉ͆-ȡjS.ɭi^)8q9Ű-Je4 cÃ.q/r,uO)Yg"fr2VU4⌖lҊTp3 O͐ @Q˾Gʫ*Ziњ,+v cZ]7:]DZ Wh#մ9L8~ |wc;΃Si& ѫ o^[h`r&fsg)E:#B 90 #*5P9[O,ytCih,n:vHӐLH"p6GtŅe}n 3"-Ò%6{}3?u,j' fI㧕`f٧€B+ZGʃJ $Dgid(MXS Gx 62mdx# my'pϪp f$пVhzLl0Nև()31:0wWN'3 V)IuYV8`sͲ5C7mn̓Vߗ+2;F(m ?<ݗB;KgQ4)[D([|O25`> jYLA5A):qt}_~rҨf<]%{!mNā(^R5[ 2AQ(u'p&+&Z*`ei6:WO H Y278ap;^ϳ=?9l,w(ꨛr-QL]0<mdx%TDϯ]pB3Zf@4~61e!GmAE^0 y=V?]_"~-ɖEW8s~{?h]&:R Q|+pfoPo}V_r޽Kr}v{~3JKdW+_mlЦ<4{8`ciG1tHagw OOc>J$qnO>ᄒE_Su `8~2B@!T2dK٦0Oe91KSIgs1}˃>S;zgŧ0j ?h?CC<3<3<3<3xf M}OZla sۯf1g@p7bϘh[9Ӳ`a){twNHsjOP$, LUѢ-Bzcch+JIbtzT*PA=lxTJ>.J~U ED_Mjg3O<ϦNrQivczt!J+H1OQX{<<<<<?EdfG0r_g}MHBVRVVRVRVVWׯj%2LI|MRAG epe|E3<] 0Hsv7^ e솔\?-ݣ7ahG1niȔŐ>Xݡ%%zl#SG'#"[ QzD$JiVA4ekq:rWK [g7g_[B^gC"o\zHB썌Zi+Idmʞ/ c9`qHK:,PUߟW=MnL 1n+C6~RdhY2n%8f^||B*)Ϣ_,nM@o/hl s]撳m7hV۟{Ε#aOs@AnzN"P-^fV{]VOae ҝ޷>('~ޠ(2K.jqԵ xw+p|nL;E҆禴QԵ .Fx/>~HЗ+1D.Uz&vN2Fa%a=qW-N3F#dFgRt3BؙP :,Co zQ! h 쨍Z,#DmVch+0oMď5H[{m.5 3r'DB7;k3cvjſ-%_JHF9[By&yawyMԼf} "ŹSite/index.html0100755000000000000000000001602207312422136012462 0ustar rootroot INTRODUCTION - Ray Tracing



>> Galerie d'images

Le but de ce projet est de réaliser un moteur de lancer de rayons, codé en C++. Le concept du lancer de rayons (en anglais raytracing) date de 1968, et le premier algorithme récursif a été présenté en 1980 par Whitted. Cela a été la première méthode permettant d'obtenir des images de synthèse photo-réalistes, prenant en compte la réflexion, la réfraction, l'élimination des parties cachées, et d'autres effets optiques. Bien que cette technique donne des résultats de haute qualité, elle est assez peu utilisée en pratique, car nécessite un temps de calcul et de l'espace mémoire importants.

· La vision naturelle : Des rayons sont émis depuis une ou plusieurs sources lumineuses, viennent frapper des objets, et sont réfléchis et/ou transmis selon les caractéristiques (le matériau) de ces objets. Une partie de ces rayons arrive enfin sur l'œil (après avoir été réfléchis ou directement), ce qui forme une image sur la rétine. Cette technique est inapplicable informatiquement, car seule une infime partie des rayons arrive sur la rétine, et donc impliquerait une quantité de calculs largement supérieure à ce qu'il faudrait.

· Le principe général du lancer de rayons : Cette technique tente de reconstituer le parcours inverse de la lumière, depuis la caméra en direction des sources lumineuses. Pour cela, on place une image virtuelle dans la scène devant l'observateur (c'est cette image qui constitue le résultat final). Pour chacun des pixels qui constituent l'image, on lance un rayon partant du point de vue (l'observateur) passant par le centre du pixel. La couleur de pixel traversé va être déterminée en suivant le cheminement du rayon lancé jusqu'aux sources lumineuses de la scène 3D. Cette technique permet donc de ne calculer que les rayons qui seraient vus par l'œil, ce qui rend les temps de calcul acceptables.



Site/ocean.txt0100755000000000000000000000434007311363040012310 0ustar rootroot################################################## # global setting # ################################################## global_setting { max_trace_level 3 output_width 1024 output_height 768 #antialiasing 10 #aa_threshold 0.2 } ################################################## # background # ################################################## background{ color <0.2,0.2,0.8> } ################################################## # light_source # ################################################## light_source { location <3,-5,0> color <1.0,1.0,1.0> } light_source { location <2,1,0> color <1.0,1.0,1.0> } light_source { AMBIENT color <1,1,1> } ################################################## # camera # ################################################## camera{ location <0.2,0,-0.1> look_at <0,0,1> field_of_view 130 } ################################################## # la sphere premier plan # ################################################## sphere{ 2.5 finish { ambient 0.3 diffuse 0.3 specular 0.9 shininess 50 reflection 0.5 } transform { translate <-1,0,4> } pigment{ color <1.0,0.0,0.0> } } ################################################## # l'ocean # ################################################## plan { finish { ambient 0.2 diffuse 0.4 specular 0.8 shininess 40 transparency 0.0 reflection 0.7 } transform { translate <-2,0,0> } pigment{ color <0.1,0.1,0.5> } normal { perlin { 0.4,0.4,1,3 scale <15,5,15> } } } ################################################## # les ciel # ################################################## plan { finish { ambient 0.2 diffuse 0.4 specular 0.0 shininess 0 transparency 0.5 } transform { translate <1000,0,0> } pigment{ perlin { 0.5,0.5,2,0.5 color_map { [0.0 color <1.0,1.0,1.0>] [0.1 color <0.2,0.2,0.8>] [0.2 color <0.0,0.0,0.5>] [1.0 color <1.0,1.0,1.0>] } } scale <0.001,0.001,0.001> } } Site/parallelogram.html0100755000000000000000000001260407311166236014204 0ustar rootroot PARALLELOGRAMME - Ray Tracing



PARALLELOGRAMME

Le parallélogramme est défini dans le repère de la scène par trois points A1, A2, A3.
On représente ce parallélogramme de la manière suivante :

Calcul de l'intersection
On procède de la même manière que pour le triangle pour déterminer le point d'intersection du rayon avec le parallélogramme.
Seule la condition d'appartenance du point d'intersection change : le point d'intersection I est dans le parallélogramme si et seulement si :
a et b sont positifs
a et b inférieur ou égal à 1.


Calcul de la normale
Pour le calcul de la normale au parallélogramme, on effectue le produit vectoriel entre les vecteurs u et v.


Site/plan.html0100755000000000000000000001315707312412444012314 0ustar rootroot PLAN - Ray Tracing



LE PLAN

Le plan est défini dans son propre repère par les axes y et z, donc en x = 0.

Calcul de l'intersection

Il faut calculer le point d'intersection entre le rayon et le plan.

L'équation du rayon est :
x(t)= d0 t+p0
y(t)= d1 t+p1
z(t)= d2 t+p2
avec (d0,d1,d2)la direction du rayon et (p0 ,p1 ,p2 ) le point origine du rayon.

Pour le plan, on a x = 0, donc :
d0 t+p0 = 0
t = -p0 / d0 si d0 est différent de 0 (sinon, on retourne MAXDOUBLE)
Si t est supérieur à epsilon, on remplace sa valeur dans les équations du rayon pour obtenir les coordonnées (x,y,z) du point d'intersection. Sinon, on retourne comme valeur pour la distance, la valeur de MAXDOUBLE.

Calcul de la normale

Dans le repère du plan, la normale au point d'intersection est le point de direction l'axe des abscisses avec pour norme 1.


Site/principes.html0100755000000000000000000003322707312422236013356 0ustar rootroot PRINCIPES - Ray Tracing



Modélisation des phènomènes optiques

>> Réflection
>> Réfraction
>> Rayon d'ombre
>> illumination
>> Eclairage

Le lancer de rayons utilise les propriétés physiques et mathématiques réelles de la lumière, ce qui permet d'obtenir des résultats photo-réalistes. Les phénomènes optiques qui sont rendus par le moteur de lancer de rayons sont la réflexion, la réfraction et les ombres.


La réflexion


Si la surface d'un objet est réfléchissante, l'algorithme de lancer de rayons doit non seulement calculer la valeur de l'illumination sur la surface, mais aussi ajouter les reflets des autres objets de la scène. Pour ce faire, il suffit uniquement de connaître l'angle auquel part le rayon réfléchi, puis de lancer un nouveau rayon dans cette direction pour déterminer ce qui se reflète. Le calcul de l'angle de réflexion est immédiat dès que l'on connaît la valeur de la normale à la surface. On a le vecteur directeur du rayon réfléchi par la formule




La réfraction


La réfraction permet de prendre en compte la transparence des objets de la scène. Un rayon qui vient frapper un objet transparent va être dévié en fonction de l'indice de réfraction du matériau de cet objet, mais aussi de celui de celui du matériau d'où arrive le rayon (la plupart du temps l'air, dont l'indice de réfraction est proche de 1). On détermine l'angle de déviation du rayon transmis lors d'un changement de matériau par la formule

La valeur du vecteur directeur du rayon transmis est obtenue avec la formule




Rayon d'ombre
Pour déterminer si le point d'intersection entre la surface et le rayon contribue directement à la valeur du pixel considéré, on envoie un rayon en direction de chaque source lumineuse, ce qui permet de déterminer si un objet opaque de la scène n'occulte pas cette source.


La contribution des sources de lumière
Si un point n'est pas occulté d'une source de lumière par un objet opaque, cette source de lumière aura une contribution sur la couleur perçue de l'objet. L'illumination finale du point sera la somme d'une composante diffuse et d'une composante spéculaire, et de la contribution de la lumière ambiante.
La
composante diffuse d'une illumination représente le fait que l'énergie d'un faisceau lumineux s'étale d'autant plus sur la surface d'un objet si son angle d'incidence est proche de la tangente à l'objet. Pour un objet de couleur S ayant la propriété d'émettre le taux rd de lumière diffuse, éclairé par une source lumineuse de couleur C, on obtient la contribution diffuse suivante :

avec L le vecteur de lumière incidente, calculé par normalisation du vecteur allant de la position de la lumière vers le point d'intersection.


La
composante spéculaire de l'illumination représente le fait que pour une surface réfléchissante, plus l'œil (la caméra) se trouve en face des rayons réfléchis, plus il recevra de lumière. Pour un objet ayant la propriété d'émettre le taux rs de lumière spéculaire, éclairé par une source lumineuse de couleur C, on obtient la contribution diffuse suivante :


La normalisation de la lumière : On a vu que la l'intensité en un point est la somme de 3 contributions : diffuse, spéculaire et ambiante. Il peut donc arriver qu'une ou plusieurs des composantes de cette intensité dépasse la valeur maximale qu'elle peut prendre (la valeur de l'intensité d'une composante varie entre 0 et 1 : 0 pour éteinte et 1 pour pleine puissance). Il convient donc de normaliser ces valeurs pour qu'elles soient cohérentes. Nous avons choisi de faire du
clamping, à savoir que si une composante dépasse la valeur maximale, on la remplace par la valeur maximale. Une autre solution serait de déterminer la composante dont l'intensité est maximale, puis de diviser les valeurs de toutes les composantes par cette valeur maximale ; ceci créerait des images plus sombres mais représentant mieux les dégradés dans les zones intenses de la scène.


Les sources de lumière
Une scène comporte des objets divers, mais aussi des sources lumineuses qui peuvent être de 3 types différents. On distingue la lumière ambiante, la lumière ponctuelle, et la lumière directionnelle.
- La
lumière ambiante : c'est la lumière qui est reçue de façon uniforme par tout point de la scène, indifféremment de la position des autres sources lumineuses et des objets de la scène. Cette lumière ambiante permet d'évider que les zones non éclairées soient complètement noires, ce qui donne un résultat plus réaliste étant donné que tout objet reçoit en réalité une lumière minimale par réflexion d'autres objets.
- La
lumière ponctuelle : c'est une source lumineuse placée en un point de l'espace, et qui éclaire uniformément dans toutes les directions. Une lumière ponctuelle a une influence diffuse et spéculaire sur la couleur de l'objet.


- La
lumière directionnelle : c'est une source de lumière ponctuelle, mais qui n'émet que dans une direction.

 


Site/prisme.html0100755000000000000000000001333507312420220012646 0ustar rootroot PRISME - Ray Tracing



LE PRISME

Le prisme est défini par quatre points : a1, a2, a3, a4. On trace les faces avec la méthode triangle pour (a1, a2, a3 ) , (a1, a2, a4 ) , (a1, a3, a4 ), (a3, a2, a4 ).


Calcul de l'intersection

On calcule la distance entre le point d'intersection du rayon et la face (a1, a2, a3), à l'aide de la méthode intersection de la classe triangle. Si elle est inférieure à MAXDOUBLE, on affecte le numéro la variable face intersectée à 0, sinon on lui affecte la valeur -1. Puis, pour chaque face restante (de 1 à 3), on calcule une distance d' (méthode intersection de la classe triangle) que l'on compare à d. Si d'<d, la face la plus proche intersectée est la face en cours, d'où le numéro de la face intersectée vaut le numéro de la face en cours, d prend la valeur de d', et le point d'intersection est mis à jour.


Calcul de la normale

Si le numéro de la face intersectée est différent de -1, on utilise la méthode normale de la classe triangle pour calculer la normale.


Site/pyramid.html0100755000000000000000000001473507312420054013026 0ustar rootroot PYRAMIDE - Ray Tracing



LA PYRAMIDE

La pyramide est définie par quatre points : a1, a2, a3, a4. Le point a ainsi que les vecteurs v1 et v2 sont calculés par le programme.


v1 = (p2x-p1x,p2y-p1y,p2z-p1z};
v2 = (p3x-p1x],p3y-p1y,p3z-p1z};
a = (p1x+v1x+v2x,p1y+v1y+v2y,p1z+v1z+v2z,1};

On utilise les méthodes parallélogramme et triangle pour tracer la pyramide et relier correctement les sommets.
On trace la base avec la méthode parallélogramme pour (a1, a2, a3 ). Puis on trace les autres faces avec la méthode triangle pour (a1, a2, a4 ) , (a2, a, a4 ) , (a, a3, a4 ), (a3, a1, a4 ).


Calcul de l'intersection

On calcule la distance entre le point d'intersection du rayon et de la base (a1, a2, a3, a), à l'aide de la méthode intersection de la classe parallélogramme. Si elle est inférieure à MAXDOUBLE, on affecte le numéro 100 à la variable face intersectée, sinon on lui affecte la valeur -1. Puis, pour chaque face restante (de 0 à 3), on calcule une distance d' (méthode intersection de la classe triangle) que l'on compare à d. Si d'<d, la face la plus proche intersectée est la face en cours, d'où le numéro de la face intersectée vaut le numéro de la face en cours, d prend la valeur de d', et le point d'intersection est mis à jour.


Calcul de la normale

Si le numéro de la face intersectée est différent de -1, plusieurs cas se présentent :
· Si la face intersectée est la base, on utilise la méthode normale de la classe parallélogramme
· Si c'est une autre face, on utilise la méthode normale de la classe triangle


Site/ray.css0100755000000000000000000000150407310761130011767 0ustar rootroot.ray { font-family: Arial, Helvetica, sans-serif; font-size: x-small; font-style: normal; line-height: normal; font-weight: normal; color: #1D4961} .ray_link { font-family: Arial, Helvetica, sans-serif; font-size: xx-small; font-style: normal; color: #006600; text-decoration: underline} .ray-bold { font-family: Arial, Helvetica, sans-serif; font-size: xx-small; font-weight: bold; color: #1D4961} .ray_titre { font-family: Arial, Helvetica, sans-serif; font-size: small; font-style: normal; line-height: normal; font-weight: bolder; color: #1D4961} .ray_link_n { font-family: Arial, Helvetica, sans-serif; font-size: x-small; font-style: normal; color: #006600; text-decoration: underline} .ray-bold_n { font-family: Arial, Helvetica, sans-serif; font-size: x-small; font-style: normal; font-weight: bold; color: #1D4961} Site/realisation.htm0100755000000000000000000011611407312215300013505 0ustar rootroot REALISATION - Ray Tracing



Réalisation du lancer de rayons
>> Lancer un rayon
>> Antialiasing
>> Atténuation de la lumière
>> Ombres floues

>> Bruit de Perlin
>> Textures procédurales
>> Textures mapping
>> Bump mapping avec du bruit de Perlin
>> Résolution d'intersections pour les formes de bases
>> Résolution d'équations algébriques de degrés 4
>> Ce qui reste à faire ...


DETAILS DES CALCULS POUR LE LANCER DE RAYONS

Le rendu par lancer de rayons est un processus récursif et additif, c'est à dire qu'à chaque intersection d'un rayon avec un objet, un ou plusieurs nouveaux rayons sont lancés dans des nouvelles directions fonctions des propriétés matérielles de la surface de l'objet, et que la valeur finale de la lumière au point d'intersection est la somme de la lumière directe en ce point, et de la lumière apportée par les rayons ré-émis.



· Modélisation d'un rayon : Un rayon représente le trajet d'un photon, et donc n'a pas d'épaisseur. Il est modélisé dans l'algorithme de lancer de rayons par une demi-droite de l'espace, c'est à dire un point de départ D et une vecteur directeur V. Ces deux paramètres sont suffisants pour obtenir une équation paramétrée du rayon en fonction du temps. Les points P(x,y,z) par lesquels passe le rayon sont définis par P = D + tV, avec t>=0 . Une fois un rayon lancé, il suffit de calculer son intersection avec les objets de la scène.


· Calcul d'intersections : Le calcul de l'intersection d'un rayon avec les objets de la scène est la base de la technique de lancer de rayons. En effet, pour chaque objet composant la scène, il faut il faut obtenir les coordonnées de son intersection (si elle existe) avec le rayon, et ne retenir que l'objet le plus proche de la source du rayon. Ce calcul d'intersection ne peut se faire que si l'on connaît l'équation implicite de la surface représentant l'objet, de la forme S(x,y,z)=0. Pour connaître le point d'intersection avec le rayon lancé, il suffit de remplacer respectivement x, y et z de cette équation par Dx+t.Vx , Dy+t.Vy et Dz+t.Vz , et de trouver la valeur t solution. Une fois les coordonnées du point d'intersection connues, il est facile de calculer la distance de ce point au point de départ du rayon, et donc de déterminer l'objet le plus proche de la source du rayon.

· Normale au point d'intersection : Pour pouvoir connaître les directions des nouveaux rayons à émettre depuis le point d'intersection, il est indispensable de connaître la valeur de la normale à la surface en ce point. Ce calcul est évident pour les formes géométriques de base, mais peut nécessiter des calculs plus poussés pour les objets plus complexes.


L'ANTIALIASING


sans et avec anti-aliasing

La méthode de raytracing reposant sur l'utilisation de rayons de diamètre nul, il se crée sur les bords des objets un phénomène d'aliasing peu réaliste. Pour éviter cet effet de 'marches d'escalier', il existe plusieurs méthodes.

· Méthode naïve : Au lieu de lancer un seul rayon par pixel, qui prendra pour intensité la valeur de l'illumination du rayon passant par son centre, on lance plusieurs rayons (4, 9, 16…) par pixel, uniformément répartis sur la surface du pixel. La valeur finale de l'illumination est la moyenne des valeurs de chaque rayon. Cette méthode donne de bons résultats, mais multiplie les temps de calcul par le nombre de rayons que l'on décide de lancer. La plupart des pixels n'ayant pas besoin d'être antialiasés, cette méthode est trop lourde pour être acceptable.
· Méthode utilisée par notre programme: Puisqu'il est inutile d'effectuer de l'antialiasing pour tous les pixels, on ne lance qu'un seul rayon par pixel. Par contre, la valeur de l'intensité trouvée pour ce pixel est comparée à celle du pixel à gauche et du pixel au dessus. Si un écart trop important est trouvé entre ces trois intensités (supérieur au paramètre AA_THRESHOLD du fichier de description de scène), on lance un nouveau rayon au hasard dans la surface du pixel, et l'on moyenne avec la valeur précédente. Si la nouvelle valeur du pixel est encore trop éloignée de la valeur des deux voisins, on continue de lancer des rayons au hasard dans le pixel et de moyenner avec la valeur précédente, jusqu'à arriver soit à la profondeur maximale autorisée (paramètre ANTIALIASING du fichier de description de scène), soit jusqu'à obtenir une valeur conforme au paramètre du fichier de description de scène. Cette méthode n'est pas infaillible, mais permet dans une large majorité de cas d'obtenir un résultat acceptable, et possède l'avantage de ne pas engendrer de calculs inutiles ralentissant l'exécution du programme.


ATTENUATION DE LA LUMIERE

· Principe : L'atténuation de la lumière peu être spécifiée à l'aide de trois coefficients c1, c2 et c3 et ce uniquement pour les lumière ponctuelles.
Un facteur d'atténuation fd est alors applique à chacune de ces sources lumineuses, fd étant défini comme suit :

Fd = min( 1 / ( c1 + c2 * dist + c3 * dist*dist ) , 1 )
Dist étant la distance du point à illuminé à la source lumineuse considérée.


sans et avec atténuation

 

· Dans notre raytracer
Voici comment spécifier l'atténuation pour une source lumineuse dans notre raytracer :

Light_source {
Location <x,y,z>
Color <r,g,b>
Attenuation <c1,c2,c3>
}


OMBRES FLOUES

· Principe : Le principal problème dans une image rendue par lancer de rayon est que les zones d'ombres propres et portées des objets sont très franches. Il est cependant possible, mais pour un coût plus élevé en calculs, de rendre celles-ci plus ou moins floues en utilisant une petite astuce.
Celle-ci consiste à lancer pour chaque pixel de l'image, non un seul, mais plusieurs rayons d'ombres vers chaque source lumineuse considérée, en faisant bouger à chaque fois de façon aléatoire ces mêmes sources lumineuses. Chaque rayon d'ombre lancé va ou non apporter de la lumière sur le pixel en question, une simple moyenne suffit alors à déterminer la luminosité finale.
Les pixels situés à la limite d'une zone d'ombre vont donc se trouver parfois illuminés et parfois dans l'ombre, et vont donc constituer une limite en dégradé partant de l'ombre à la lumière. Si les ombres floues sont activées , il est alors préférable d'activer également l'antialiasing afin de lisser encore plus les limites ombres -lumières.


sans et avec ombres floues

· Dans notre raytracer

Voici comment spécifier les ombres floues dans notre raytracer :

Global_setting {
Soft_Shadow x
Shadow_Ray y
}

y est un entier indiquant le nombre de rayons d'ombres à générer pour chaque pixel
x est un nombre décimal indiquant l'intensité du déplacement des sources lumineuses. Par exemple, si x vaut 2, cela signifie que les sources lumineuses vont se déplacer dans un cube de taille 2, centré sur leur position initiale.

Bien entendu, plus x est grand plus les ombres sont floues, mais plus il faut augmenter y pour que les transitions soient uniformes.


LE BRUIT DE PERLIN

Afin de modéliser des motifs complexes (nuages, marbres …), il est nécessaire d'avoir à disposition des algorithmes capables de les générer de façon automatique. Pour introduire une grande diversité et par ailleurs un meilleur réalisme, ces algorithmes se doivent d'introduire de l'aléatoire dans ces motifs. C'est l qu'intervient le bruit de Perlin, car bien entendu, il ne s'agit pas de générer des motifs totalement aléatoire, car on obtiendrait bien sur, dans ce cas, un motif " moucheté " du plus mauvais effet. Le bruit de Perlin, qualifié de bruit cohérent, permet de palier ce problème.

Bruit totalement aléatoire

Bruit de Perlin


De plus, il présente l'avantage de pouvoir s'écrire sous le forme fNoise(x,y,z) et ainsi d'associer directement à un point dans l'espace, une valeur qui peu ensuite être convertie en couleur (pour faire de la texture procédurale) ou en hauteur (pour faire du bumpmapping), ce qui est très pratique pour l'insérer dans un moteur de raytracing. En effet la plupart des algorithmes de génération de bruit cohérent (pour générer des montagnes fractales par exemples), créent les motifs de proche en proches de façon récursive et ne peuvent donc associer de façon directe une valeur à un point.

Le principe pour générer du bruit de Perlin est d'additionner plusieurs fonctions de bruit d'amplitude et de fréquence différentes, ce qui permet d'avoir cet effet de cohérence dans le bruit généré. Voici un exemple ci-dessous :


Bruit de Perlin avec fonction à une dimension :

Bruit de Perlin avec fonction à deux dimensions :


TEXTURE PROCEDURALE

Il s'agit ici de déterminer la couleur de tout point de coordonnées (x1, x2, x3) dans le repère de la scène à l'aide d'une procédure.
On peut ainsi définir toute sorte de procédures. En voici 2 exemples :

· Checker
Le checker est défini par 2 couleurs c1, c2 et la longueur L des carreaux.
Ici on calcule la parité pi de la partie entière de xi / L.
Si xi < 0 alors on prends la parité inverse.


Voici l'algorithme déterminant la couleur en fonction des pi :


· Perlin
La couleur d'un point peut être donnée à partir d'un bruit de Perlin. Ceci nous permet d'obtenir des textures très réalistes comme le bois ou le marbre.

· Bruit de perlin seul

Pour appliquer le bruit de perlin comme texture procédurale, il suffit de demander pour chaque point (x,y,z) dont on veut connaître la couleur, la valeur n de fNoise(x,y,z). Selon la valeur de n, on interpole alors une couleur à partir d'une table de couleur.

Par exemple :

Soit la table de couleur suivant :

Si n = v1 alors couleur = (r1,g1,b1)
Si n = v2 alors couleur = (r2,g2,b2)
Si n = v3 alors couleur = (r3,g3,b3)
Si n = v4 alors couleur = (r4,g4,b4)

Avec v1 < v2 < v3 < v4

Si v2 < n < v3, alors on prendra comme la couleur (r,g,b) avec :
r = r2 * (n-v2) / (v3-v2) + r3 * (v3-n) / (v3-v2)
g = g2 * (n-v2) / (v3-v2) + g3 * (v3-n) / (v3-v2)
b = b2 * (n-v2) / (v3-v2) + b3 * (v3-n) / (v3-v2)

· Effet marbré

Pour obtenir un effet marbre, il suffit de remplacer fNoise(x,y,z) par :

fMarbre(x,y,z) = cos( x + fNoise(x,y,z) )

· Effet bois

Pour obtenir un effet bois, il suffit de remplacer fNoise(x,y,z) par :

v = 20 * fNoise(x,y,z)
fBois(x,y,z) = v - partieEntiere(v)

· Dans notre raytracer

Voici comment spécifier ces textures procédurales dans notre ray-tracer :

Objet {
PARAMETRES_OBJET
Pigment {
Perlin {
amplitude,frequence,octave,intensite
}
Scale <sx,sy,sz>
Rotate <rx,ry,rz>
Translate <tx,ty,tz>
}
}

intensite est un coefficient multiplicateur appliqué au bruit
octave est le nombres de fonctions de bruit additionnée
frequence est la fréquence de la fonction de bruit
amplitude est l'amplitude de la fonction de bruit

rotate, translate et scale sont des transformation apportées sur le motif de la texture procédurale.

Pour l'effet marbre il suffit de remplacer le mot clé perlin par marble et pour l'effet bois de remplacer perlin par wood.


TEXTURE MAPPING

Le principe est d'appliquer une image sur une surface, de façon répétitive ou non.
Il faut donc faire correspondre un point de l'image à chaque point de la surface considérée.

Pour permettre cette correspondance il nous faut tout d'abord déterminer un paramétrage de la surface :
x = fx(u, v)
y = fy(u, v)
z = fz(u, v)

Puis nous faisons correspondre à (u, v) un pixel (i, j) de l'image.


· Mapping sur le cercle

Les équations paramétriques du cercle sont les suivantes :

x = r sin u
y = r cos u sin v
z = r cosu cos v
u varie dans [-pi /2, pi/2] et v varie dans [0, 2pi[.

Soit n la fréquence de répétition de l'image sur la sphère, H la hauteur de l'image, L sa largeur.

Calcul du pixel i correspondant au paramètre u :
t = n ( u / P + 0.5)
i = PartieEntière ( H (t-PartieEntière(t))

Calcul du pixel j correspondant au paramètre v :
t = n ( u / (2P))
j = PartieEntière ( L (t-PartieEntière(t))

Pour n = 1 on obtient le résultat suivant :

· Mapping sur le plan

Les équations paramétriques du plan d'équation x = 0 sont les suivantes :
x = 0
y = v + n/2
z = u - m/2
Soit n la largeur désirée de l'image sur le plan, H la hauteur de l'image, L sa largeur initiale et m la hauteur sur le plan égale à n.H / L.

Calcul du pixel i correspondant au paramètre u :
t = m.PartieEntière(u / m)
i = PartieEntière ( H (u - t) / m)
si i < 0 alors i = -i.

Calcul du pixel j correspondant au paramètre v :
t = n.PartieEntière(v / n)
j = PartieEntière ( L (v - t) / n)
si j < 0 alors j = -j.


Ainsi, dans le cas suivant :
- camera "orthographique" définie avec une largeur de projection de n,
- un plan parallèle à la camera à qui on applique l'image avec une largeur de n,
- une image de sortie de la même taille (H.L pixels) que l'image appliquée sur le plan,
on obtient une image de sortie identique à l'image appliquée, hormis les effets de lumières, d'ombres, de réflexions ou de transparences apportés par le lancé de rayon.


BUMP MAPPING avec du bruit de Perlin

· Principe
Le bump-mapping est une technique permettant de donner un aspect non lisse à un objet géométriquement lisse. Il consiste en l'altération des normales d'un objet, ce qui modifie par la même l'illumination des points de l'objet situés à la base de la normale.

La technique utilisée ici est d'utiliser le même bruit de perlin que pour les textures procédurales, mais de considérer les valeurs fournis par la fonction de bruit, non pas comme une couleur, mais comme une hauteur.

· Dans notre raytracer

Voici comment spécifier du bump-mapping dans notre raytracer :
Objet {
PARAMETRES_OBJET
Pigment { … }
Normal {
Perlin {
amplitude,frequence,octave,intensite
Scale <sx,sy,sz>
Rotate <rx,ry,rz>
Translate <tx,ty,tz>
}
}
}

Pour modifier la normale au point (x,y,z) d'une surface, on crée le vecteur v dont les directions x,y et z suivent les variations du bruit de perlin autour d'un point considéré :

V[0] = fNoise (x-e,y,z) - fNoise (x+e,y,z)
V[1] = fNoise (x,y-e,z) - fNoise (x,y+e,z)
V[2] = fNoise (x,y,z-e) - fNoise (x,y,z+e)

On altère ensuite la normale au point (x,y,z) en lui additionnant v. Reste seulement a choisir les bon paramètres pour générer le bon bruit de perlin !


RESOLUTION D'INTERSECTIONS POUR LES FORMES DE BASES
L'algorithme de raytracing engendre un nombre très important de calculs sur des nombres réels, dont la majeure partie consiste à déterminer des intersections objet-rayon. La résolution des problèmes d'intersections revient essentiellement à trouver les racines de polynômes, jusqu'au 4eme degré pour le tore et le cube troué.

Les calculs d'intersections et de normales
Chaque objet de la scène est défini dans son repère propre. Lors de la description de la scène, les paramètres de translation, rotation et mise à l'échelle permettent de définir une matrice de transformation propre à chaque objet, qui permet de passer des coordonnées de points ou de vecteurs dans le repère absolu à celles dans le repère de l'objet, et inversement. Cette transformation se fait grâce à des produits matrice-vecteur, et n'est possible que parce que l'on utilise des coordonnées homogènes pour représenter les points de l'espace.
Pour chaque objet, il suffit de définir les méthodes calculant l'intersection avec un rayon et la normale en un point ; il est donc aisé d'ajouter de nouveau objets au programme.
Dans la fonction intersection, on calcule le point d'intersection entre le rayon et l'objet. Pour cela, il est tout d'abord nécessaire d'appliquer la matrice inverse de transformation sur le rayon pour que ce dernier soit dans le même repère que l'objet. Par la suite, il faut effectuer le calcul d'intersection propre à chaque objet, que l'on détaille en annexe. Pour finir, on applique la matrice de transformation sur le point d'intersection pour le ramener dans le repère de la scène, et on retourne la valeur de la distance entre ce point d'intersection et le point origine du rayon.
Pour le calcul de la normale au point d'intersection, il est également nécessaire d'utiliser la matrice inverse de transformation pour placer le point d'intersection dans le repère de l'objet. Le rayon est transformé dans le repère de l'objet. Puis on prend en compte le côté d'où provient le rayon par rapport à l'objet (intérieur, extérieur, dessus, dessous) à l'aide du produit scalaire du rayon et de la normale. Pour finir, on normalise cette normale, et on lui applique la matrice de transformation pour la replacer dans le repère de la scène.
Les équations mathématiques à résoudre pour chaque objet sont détaillées ci-dessous.

>> cone
>> cube
>> cubeTroue
>> cylindre
>> parallélogrammme
>> plan
>> prisme
>> pyramide
>> sphere
>> tore
>> triangle


RESOLUTION D'EQUATIONS POLYNOMIALES DE DEGRES 4
Pour trouver les racines de polynômes jusqu'au degré 4, nous utilisons la méthode de François Vieta, qui date de 1735.

Soit à résoudre

Le cas où a3 et a4 sont nuls, ce qui revient à résoudre une équation du 2nd degrés, n'est pas traité ici. En effet ce cas est considéré comme trivial.
Ici la résolution proposée est purement algébrique.

Cas où a4 est nul et a3 non nul : résolution d'une équation du 3ième degrés


Cas où a4 est non nul : résolution d'une équation du 4ième degrés
Methode de Francois Vieta (1735)




CE QUI RESTE A FAIRE...
Notre programme permet d'obtenir des images photoralistes de qualit, meilleures que l'algorithme du z-buffer combin avec ceux de Gouraud ou Phong qui ne prennent pas en compte la rflexion et la rfraction. D'autre part, le lancer de rayon ne se limite pas comme les algorithmes prcdents la seule visualisation des modles factiss, c'est dire compos exclusivement de polygones. Il permet la visualisation de surfaces implicites. Cependant, les temps de calculs sont gnralement considrablement longs et la visualisation ne peut pas se faire en temps rel comme avec le z-buffer. De plus il est de moins bonne qualit que l'algorithme de radiosit qui modlise mieux les phnomnes de transport d'nergie.

L'une des amliorations apporter notre programme est d'implmenter le lancer de rayons arrire. Cette mthode consiste lancer des rayons depuis les sources de lumire vers la scne, permettant de dterminer les sources de lumire secondaires (la rflexion de la source de lumire sur un miroir par exemple), afin d'obtenir des rsultats plus ralistes.

Notre " raytracer " traite des scnes comportant des objets de base relativement simples, mais nanmoins suffisants pour construire des scnes intressantes. Il serait possible de rajouter quelques objets de bases supplmentaires, tels que :
les ellipsodale, hyperbolodale (formes super-quadratiques) d 'quations implicites de la forme : (x/a)2/p + (y/b)2/p + (z/c)2/q = 1 ou (x/a)2/p + (y/b)2/p - (z/c)2/q = 1
les meta-balls d 'quations implicites de la forme : a1 * exp ( - b1 * f1 (x,y,z)) + ... + an * exp ( - bn * fn (x,y,z)) = 0.
des objets plus complexes tels que les Constructive Solid Geometry (C.S.G.), arbres dont les feuilles sont des volumes simples.

Le calcul d'intersections constituant la majeure quantit de calculs effectuer, il y aurait plusieurs faons pour pouvoir acclrer cette partie. En effet, nous avons ici trait la mthode nave consistant calculer l'intersection d'un rayon avec toutes les surfaces de la scne puis slectionner la plus proche. La premire optimisation est de diminuer le nombre de rayons primaires en projetant les objets de la scne sur l'cran. La deuxime est l'utilisation des volumes simples englobants un ensemble d'objets, savoir que si un rayon n'intersecte pas ce volume, il est inutile de faire le calcul d'intersection avec tous les objets qu'il contient. Mais la gnration de ces volumes englobants s'est avre problmatique. Une autre solution est de dcomposer l'espace en voxels, puis l'aide de mthodes incrmentales (de type Bresenham) on dtermine la succession de voxels rencontrs par le rayon et donc les objets susceptibles d'intersecter le rayon, ce qui rduit les temps de calcul. Pour obtenir une bonne efficacit, il faut un grand nombre de voxels et le cot mmoire sera donc norme. La technique de l'arbre octal tente de palier cet inconvnient : la scne est divise en 8 voxels jointifs, et eux-mme diviss en sous voxels, rcursivement tant qu'un voxel contient un nombre trop important d'objets. Cette mthode permet de crer un arbre non-symtrique o 8 branches partent de chaque nud, et o chaque feuille est une liste d'objets contenus dans le voxel correspondant. L'arbre octal rduit considrablement le cot mmoire de par la moindre occupation des zones vides.


Site/scene.htm0100755000000000000000000001452507312422672012307 0ustar rootroot SCENES - Ray Tracing



Galerie d'images
metal.jpg
metal.jpg
ocean.jpg
ocean.jpg
sphere_cubeT.jpg
sphere_cubeT.jpg
tore_croise.jpg
tore_croise.jpg
verre.jpg
verre.jpg

Site/sources/0040755000000000000000000000000007311145346012153 5ustar rootrootSite/sources/background.cc0100755000000000000000000000044407310142130014566 0ustar rootroot#include "background.h" background::background (double couleur[]) { memcpy (this->couleur, couleur, 3 * sizeof (double)); } background::~background () { } void background::getBackgroundColor (double couleur[3]) { for (int i = 0; i < 3; i++) couleur[i] = this->couleur[i]; } Site/sources/background.h0100755000000000000000000000122007310142130014421 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 22/05/2001 */ /* */ /********************************************/ #if !defined(__BACKGROUND__) #define __BACKGROUND__ #include class background { protected: /* la couleur du fond */ double couleur[3]; public: /* constructeur itinitialisant la couleur de fond */ background (double couleur[3]); virtual ~ background (); void getBackgroundColor (double couleur[3]); }; #endif // __BACKGROUND__ Site/sources/box.cc0100755000000000000000000000456607310142130013250 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 22/05/2001 */ /* */ /********************************************/ #include "box.h" box::box (double cote): objet () { this->cote = cote; double l = cote / 2.0; double p1[4] = { l, l, -l, 1 }; double p2[4] = { l, l, l, 1 }; double p3[4] = { l, -l, l, 1 }; double p4[4] = { l, -l, -l, 1 }; double p5[4] = { -l, -l, -l, 1 }; double p6[4] = { -l, l, -l, 1 }; double p7[4] = { -l, l, l, 1 }; double p8[4] = { -l, -l, l, 1 }; transformer *trans; trans=new transformer(); lesFaces[0] = new parallelogram (p1, p2, p4); lesFaces[1] = new parallelogram (p6, p7, p5); lesFaces[2] = new parallelogram (p1, p2, p6); lesFaces[3] = new parallelogram (p2, p7, p3); lesFaces[4] = new parallelogram (p3, p8, p4); lesFaces[5] = new parallelogram (p4, p5, p1); for(int i=0;i<6;i++) lesFaces[i]->setTransformer(trans); } box::~box () { } double box::intersection (rayon * r, double i[4]) { double d, d2; double i2[4], temp[4]; double pos[4]; double dir[4]; double pos2[4]; double dir2[4]; rayon * r2; r->getOrigin(pos); r->getDirection(dir); trans->doInvTransformation(pos2,pos); trans->doInvTransformation(dir2,dir); r2 = new rayon(pos2,dir2); d = lesFaces[0]->intersection (r2, temp); if (d < MAXDOUBLE) faceIntersectee = 0; else faceIntersectee = -1; for (int j = 1; j < 6; j++) { d2 = lesFaces[j]->intersection (r2, i2); if (d2 < d) { d = d2; memcpy (temp, i2, 4 * sizeof (double)); faceIntersectee = j; } } trans->doTransformation(i,temp); return d; } void box::normale (double p[4], rayon * r, double laNormale[4]) { double pt[4]; trans->doTransformation(pt,p); for (int j = 0; j < 4; j++) laNormale[j] = 0.0; switch (faceIntersectee) { case 0: laNormale[0] = 1; break; case 1: laNormale[0] = -1; break; case 2: laNormale[1] = 1; break; case 3: laNormale[2] = 1; break; case 4: laNormale[1] = -1; break; case 5: laNormale[2] = -1; break; default: break; } corrigerNormale (laNormale, pt, r); } Site/sources/box.h0100755000000000000000000000152607310142130013103 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 22/05/2001 */ /* */ /********************************************/ #if !defined(__BOX__) #define __BOX__ #include "objet.h" #include "parallelogram.h" class box:public objet { private:double cote; parallelogram * lesFaces[6]; int faceIntersectee; public:box (double cote); virtual ~ box (); /* calcule l'intersection entre le rayon r et l'objet et renvoie la distance entre le debut du rayon et i */ double intersection (rayon* r, double i[4]); /* calcule la normale en p l'objet */ void normale (double p[4],rayon* r, double laNormale[4]); }; #endif // __BOX__ Site/sources/camera.cc0100755000000000000000000000361407310165214013711 0ustar rootroot#include "camera.h" camera::camera (double position[4], double lookAt[4]) { projectionSize = 10; fov = 60.0; memcpy (this->position, position, 4 * sizeof (double)); memcpy (this->lookAt, lookAt, 4 * sizeof (double)); setTransformation(); } camera::~camera () { } void camera::setFocale (double focale) { this->focale=focale; } void camera::setFov (double fov) { this->fov=fov; } void camera::setTypeProjection (int typeProjection) { this->typeProjection=typeProjection; } void camera::setProjectionSize(double ps) { projectionSize=ps; } int camera::getTypeProjection () { return typeProjection; } double camera::getFocale () { return projectionSize/(2.0*tan(fov/2.0*(M_PI/180.0))); } double camera::getFov () { return fov; } double camera::getProjectionSize() { return projectionSize; } void camera::setTransformation(){ double rotation[3]; double translation[3]; double lookAt_vector[4]; double theta; double d; trans = new transformer(); translation[0]=position[0]; translation[1]=position[1]; translation[2]=position[2]; trans->setTranslation(translation); for (int i= 0; i<4 ; i++) lookAt_vector[i] = lookAt[i]-position[i]; rotation[2]=0; d = sqrt(lookAt_vector[1]*lookAt_vector[1]+lookAt_vector[2]*lookAt_vector[2]); theta = acos(lookAt_vector[2]/d); if (lookAt_vector[1]<0) theta=-theta; rotation[0]=theta; d = sqrt(lookAt_vector[0]*lookAt_vector[0]+lookAt_vector[2]*lookAt_vector[2]); theta = acos(lookAt_vector[2]/d); if (lookAt_vector[0]<0) theta=-theta; rotation[1]=theta; trans->setRotation(rotation); } void camera::repereScene(rayon * r,rayon * r2){ double dir[4],pos[4]; double dir2[4],pos2[4]; r->getOrigin(pos); r->getDirection(dir); trans->doTransformation(pos2, pos); trans->doTransformation(dir2, dir); r2->setOrigin(pos2); r2->setDirection(dir2); r2->setDedans(r->estDedans()); } Site/sources/camera.h0100755000000000000000000000206007310142130013535 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 11/05/2001 */ /* */ /********************************************/ #if !defined(__CAMERA__) #define __CAMERA__ #include #include #include "rayon.h" #include "transformer.h" class camera { protected: double focale; double position[4]; double lookAt[4]; double fov; int typeProjection; double projectionSize; transformer * trans; void setTransformation(); public: camera::camera (double position[4], double lookAt[4]); virtual ~ camera (); double getFocale (); double getFov (); int getTypeProjection (); double getProjectionSize(); void setFocale (double focale); void setFov (double fov); void setTypeProjection (int typeProjection); void setProjectionSize(double ps); void repereScene(rayon* r,rayon *r2); enum {PERSPECTIVE,ORTHOGRAPHIC}; }; #endif // __CAMERA__ Site/sources/checker.cc0100755000000000000000000000314407310142130014053 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 5/06/2001 */ /* */ /********************************************/ #include "checker.h" checker::checker () { size = 1; couleur1[0] = 1.0; couleur1[1] = 1.0; couleur1[2] = 1.0; couleur2[0] = 0.0; couleur2[1] = 0.0; couleur2[2] = 0.0; } checker::~checker () { } void checker::setSize (double size) { this->size = size; } void checker::setCouleur1 (double coul[3]) { memcpy (couleur1, coul, 3 * sizeof (double)); } void checker::setCouleur2 (double coul[3]) { memcpy (couleur2, coul, 3 * sizeof (double)); } void checker::setTransformer(transformer * trans){ this->trans=trans; } void checker::getChecker (double pt[4], double coulObj[3]) { double p2[4]; trans->doTransformation(p2,pt); int xx = (int) (p2[0] / size); int yy = (int) (p2[1] / size); int zz = (int) (p2[2] / size); bool xpair, ypair, zpair; xpair = ((abs (xx) % 2) == 0); ypair = ((abs (yy) % 2) == 0); zpair = ((abs (zz) % 2) == 0); if (p2[0] < 0) xpair = !xpair; if (p2[1] < 0) ypair = !ypair; if (p2[2] < 0) zpair = !zpair; if (zpair) if ((xpair && ypair) || (!xpair && !ypair)) memcpy (coulObj, couleur1, 3 * sizeof (double)); else memcpy (coulObj, couleur2, 3 * sizeof (double)); else if ((xpair && ypair) || (!xpair && !ypair)) memcpy (coulObj, couleur2, 3 * sizeof (double)); else memcpy (coulObj, couleur1, 3 * sizeof (double)); } Site/sources/checker.h0100755000000000000000000000146307310142130013717 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 5/06/2001 */ /* */ /********************************************/ #if !defined(__CHECKER__) #define __CHECKER__ #include #include #include #include "transformer.h" class checker { private: double size; double couleur1[3]; double couleur2[3]; transformer * trans; public: checker (); virtual ~ checker (); void setSize (double size); void setCouleur1 (double coul[3]); void setCouleur2 (double coul[3]); void setTransformer(transformer * trans); void getChecker (double pt[4], double coul[3]); }; #endif // __CHECKER__ Site/sources/cone.cc0100755000000000000000000002265007310142130013376 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 10/05/2001 */ /* */ /* Commentaires : permet de tracer un cone d'equation : */ /* x4-5x2+y4-5y2+z4-5z2+11.8=0 */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "cone.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// cone::cone (double petit_rayon, double grand_rayon, double hauteur): objet () { this->petit_rayon = petit_rayon; this->grand_rayon = grand_rayon; this->hauteur = hauteur; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// cone::~cone () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double cone::intersection (rayon * r, double *i) { double a, b, c, k, l, alpha, h; double delta; double t1, t2, t; double d; double p[4]; double temp[4]; double pos[4]; double dir[4]; double pos2[4]; double dir2[4]; r->getOrigin(pos); r->getDirection(dir); trans->doInvTransformation(pos2,pos); trans->doInvTransformation(dir2,dir); alpha = atan (hauteur / (grand_rayon - petit_rayon)); h = hauteur + petit_rayon * tan (alpha); k = (grand_rayon * grand_rayon) / (h * h); l = pos2[0] - h; a = dir2[1] * dir2[1] + dir2[2] * dir2[2] - k * dir2[0] * dir2[0]; b = dir2[1] * pos2[1] + dir2[2] * pos2[2] - k * l * dir2[0]; c = pos2[2] * pos2[2] + pos2[1] * pos2[1] - k * l * l; delta = b * b - a * c; if (delta < 0.0) { d = MAXDOUBLE; } else { t1 = (-b + sqrt (delta)) / a; t2 = (-b - sqrt (delta)) / a; // si r2.p est l'extrieur strictement du cone infini if ((pos2[1] * pos2[1] + pos2[2] * pos2[2]) > (k * l * l)) { if (t1 <= epsilon && t2 <= epsilon) d = MAXDOUBLE; else { if ((t1 <= t2 && t1 > epsilon) || (t2 < t1 && t2 < epsilon)) t = t1; else if ((t2 < t1 && t2 > epsilon) || (t1 < t2 && t1 < epsilon)) t = t2; p[0] = t * dir2[0] + pos2[0]; p[1] = t * dir2[1] + pos2[1]; p[2] = t * dir2[2] + pos2[2]; p[3] = 1.0; d = distance (p, pos2); if (p[0] > hauteur) { t = (hauteur - pos2[0]) / dir2[0]; p[0] = hauteur; p[1] = t * dir2[1] + pos2[1]; p[2] = t * dir2[2] + pos2[2]; p[3] = 1.0; if ((t > epsilon) && ((p[1] * p[1] + p[2] * p[2]) <= petit_rayon * petit_rayon)) { d = distance (p, pos2); } else d = MAXDOUBLE; } if (p[0] < 0.0) { t = -pos2[0] / dir2[0]; p[0] = 0.0; p[1] = t * dir2[1] + pos2[1]; p[2] = t * dir2[2] + pos2[2]; p[3] = 1.0; if ((t > epsilon) && ((p[1] * p[1] + p[2] * p[2]) <= grand_rayon * grand_rayon)) { d = distance (p, pos2); } else d = MAXDOUBLE; } } } // si pos2 est l'interieur du cone infini superieur else if ((pos2[1] * pos2[1] + pos2[2] * pos2[2]) <= (k * l * l) && pos2[0] > h) { if (t1 < -epsilon || t2 < -epsilon || (t1 > t2 && t1 - t2 <= epsilon) || (t2 > t1 && t2 - t1 <= epsilon)) d = MAXDOUBLE; else { //t1 et t2 sont >=-epsilon et ils sont diffrents epsilon prs => il y a au moins un ti>0 if (t1 < t2) t = t2; else t = t1; p[0] = t * dir2[0] + pos2[0]; p[1] = t * dir2[1] + pos2[1]; p[2] = t * dir2[2] + pos2[2]; p[3] = 1.0; d = distance (p, pos2); if (p[0] > hauteur) { t = (hauteur - pos2[0]) / dir2[0]; p[0] = hauteur; p[1] = t * dir2[1] + pos2[1]; p[2] = t * dir2[2] + pos2[2]; p[3] = 1.0; if ((t > epsilon) && ((p[1] * p[1] + p[2] * p[2]) <= petit_rayon * petit_rayon)) { d = distance (p, pos2); } else d = MAXDOUBLE; } if (p[0] < 0.0) { d = MAXDOUBLE; } } } // si pos2 est l'interieur du cone infini inferieur else if ((pos2[1] * pos2[1] + pos2[2] * pos2[2]) <= (k * l * l) && pos2[0] <= h) { if (pos2[0] > hauteur) { t = (hauteur - pos2[0]) / dir2[0]; p[0] = hauteur; p[1] = t * dir2[1] + pos2[1]; p[2] = t * dir2[2] + pos2[2]; p[3] = 1.0; if ((t > epsilon) && ((p[1] * p[1] + p[2] * p[2]) <= petit_rayon * petit_rayon)) { d = distance (p, pos2); } else d = MAXDOUBLE; } else if (pos2[0] < 0.0) { t = -pos2[0] / dir2[0]; p[0] = 0.0; p[1] = t * dir2[1] + pos2[1]; p[2] = t * dir2[2] + pos2[2]; p[3] = 1.0; if ((t > epsilon) && ((p[1] * p[1] + p[2] * p[2]) <= grand_rayon * grand_rayon)) { d = distance (p, pos2); } else d = MAXDOUBLE; } else { //if (pos2[0]<=hauteur && pos2[0]>=0.0) if (t1 <= epsilon && t2 <= epsilon) { d = MAXDOUBLE; //dir2 est la verticale, ou presque, du cone dans le cone inferieur => dir2[0]!=0 if (pos2[0] > hauteur) { t = (hauteur - pos2[0]) / dir2[0]; p[0] = hauteur; p[1] = t * dir2[1] + pos2[1]; p[2] = t * dir2[2] + pos2[2]; p[3] = 1.0; if ((t > epsilon) && ((p[1] * p[1] + p[2] * p[2]) <= petit_rayon * petit_rayon)) { d = distance (p, pos2); } else d = MAXDOUBLE; } else { t = -pos2[0] / dir2[0]; p[0] = 0.0; p[1] = t * dir2[1] + pos2[1]; p[2] = t * dir2[2] + pos2[2]; p[3] = 1.0; if ((t > epsilon) && ((p[1] * p[1] + p[2] * p[2]) <= grand_rayon * grand_rayon)) { d = distance (p, pos2); } else d = MAXDOUBLE; } } else { if ((t1 <= t2 && t1 > epsilon) || (t2 < t1 && t2 < epsilon)) t = t1; else if ((t2 < t1 && t2 > epsilon) || (t1 < t2 && t1 < epsilon)) t = t2; p[0] = t * dir2[0] + pos2[0]; p[1] = t * dir2[1] + pos2[1]; p[2] = t * dir2[2] + pos2[2]; p[3] = 1.0; d = distance (p, pos2); if (p[0] > hauteur) { t = (hauteur - pos2[0]) / dir2[0]; p[0] = hauteur; p[1] = t * dir2[1] + pos2[1]; p[2] = t * dir2[2] + pos2[2]; p[3] = 1.0; if ((t > epsilon) && ((p[1] * p[1] + p[2] * p[2]) <= petit_rayon * petit_rayon)) { d = distance (p, pos2); } else d = MAXDOUBLE; } if (p[0] < 0.0) { t = -pos2[0] / dir2[0]; p[0] = 0.0; p[1] = t * dir2[1] + pos2[1]; p[2] = t * dir2[2] + pos2[2]; p[3] = 1.0; if ((t > epsilon) && ((p[1] * p[1] + p[2] * p[2]) <= grand_rayon * grand_rayon)) { d = distance (p, pos2); } else d = MAXDOUBLE; } } } } trans->doTransformation(i,p); } return d; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void cone::normale (double *p, rayon* r, double laNormale[4]) { double d, alpha, beta; double p2[4]; //double rd[4]; double temp[4]; trans->doInvTransformation(p2,p); if ((p2[0] >= epsilon) && (p2[0] <= hauteur - epsilon)) { alpha = atan (hauteur / (grand_rayon - petit_rayon)); if (p2[1] == 0.0) { beta = M_PI_2; if (p2[2] < 0.0) beta = -beta; } else beta = atan (p2[2] / p2[1]); laNormale[0] = sin (M_PI_2 - alpha); if (p2[1] > 0) { laNormale[1] = (cos (beta)) * (cos (M_PI_2 - alpha)); laNormale[2] = (sin (beta)) * (cos (M_PI_2 - alpha)); } else { laNormale[1] = (cos (M_PI + beta)) * (cos (M_PI_2 - alpha)); laNormale[2] = (sin (M_PI + beta)) * (cos (M_PI_2 - alpha)); } laNormale[3] = 0; } else if (p2[0] < epsilon && (p2[0] > -epsilon)) { laNormale[0] = -1.0; laNormale[1] = 0.0; laNormale[2] = 0.0; laNormale[3] = 0.0; } else if (p2[0] < (hauteur + epsilon) && p2[0] > (hauteur - epsilon)) { laNormale[0] = 1.0; laNormale[1] = 0.0; laNormale[2] = 0.0; laNormale[3] = 0.0; } corrigerNormale (laNormale, p2, r); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/cone.h0100755000000000000000000000151207310142130013232 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 10/05/2001 */ /* */ /********************************************/ #if !defined(__CONE__) #define __CONE__ #include "objet.h" class cone:public objet { private:double petit_rayon; double grand_rayon; double hauteur; public: cone (double petit_rayon, double grand_rayon, double hauteur); virtual ~ cone (); /* calcule l'intersection entre le rayon r et l'objet et renvoie la distance entre le debut du rayon et i */ double intersection (rayon * r, double *i); /* calcule la normale en p l'objet */ void normale (double *p,rayon * r, double laNormale[4]); }; #endif // __CONE__ Site/sources/ctrb.ray0100755000000000000000000000311707311100610013605 0ustar rootrootglobal_setting { max_trace_level 8 output_width 1024 output_height 768 } background{ color <0,0,0> } #plan{ # finish { # ambient 0.4 # diffuse 0.7 # specular 0.4 # shininess 20 # } # transform { # translate <0,0,100> # rotate <0,90,0> # } # pigment{ # checker 2,<1.0,0.0,0.0>,<0.0,0.0,1.0> # } #} sphere{ 50 finish { ambient 0.3 diffuse 0.3 specular 0.9 shininess 50 reflection 0.7 } transform { translate <3,53.5,2.5> #rotate <0,0,90> } pigment{ color <0.36,0.7,0.95> } normal { perlin { 0.4,0.4,1,10 scale <5,5,5> } } } sphere{ 50 finish { ambient 0.3 diffuse 0.3 specular 0.9 shininess 50 reflection 0.7 } transform { translate <3,-53.5,2.5> #rotate <0,0,90> } pigment{ color <0.36,0.7,0.95> } normal { perlin { 0.4,0.4,1,10 scale <5,5,5> } } } cube_Troue{ finish { ambient 0.3 diffuse 0.9 specular 0.9 shininess 40 transparency 0.0 reflection 0.0 } transform { rotate <-25,15,0> translate <0,0,5> } pigment{ color <1.0,0.0,0.0> perlin{ 0.5,0.4,2,1 color_map { [0.0 color <0.66,0.33,0.0>] [0.3 color <0.0,0.0,1.0>] [1.0 color <1.0,0.0,0.0>] } } scale <2.5,2.5,2.5> } } light_source { POINT_SOURCE location <3,-5,0> color <1.0,1.0,1.0> } light_source { POINT_SOURCE location <1,1,0> color <1.0,1.0,1.0> } light_source { DIRECTIONNAL direction <0,0,1> color <1.0,1.0,1.0> } light_source { AMBIENT color <0.7,0.7,0.7> } camera{ location <6,0,0> look_at <3,0,5> field_of_view 120 } Site/sources/cubeTroue.cc0100755000000000000000000000766507310165574014441 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 14/05/2001 */ /* */ /* Commentaires : permet de tracer un cube troue d'equation : */ /* x4-5x2+y4-5y2+z4-5z2+11.8=0 */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "cubeTroue.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// cubeTroue::cubeTroue ():objet () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// cubeTroue::~cubeTroue () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double cubeTroue::intersection (rayon * r, double *i) { double t; double dist; double p[4], temp[4]; double pos[4]; double dir[4]; double pos2[4]; double dir2[4]; r->getOrigin(pos); r->getDirection(dir); trans->doInvTransformation(pos2,pos); trans->doInvTransformation(dir2,dir); double a = 0; double b = 0; double c = 0; double d = 0; double e = 0; double roots[4] = { 0.0, 0.0, 0.0, 0.0 }; int nbRoots = 0; for (int j = 0; j < 4; j++) pos2[j] /= pos2[3]; e = 11.8; for (int ii = 0; ii < 3; ii++) { a += pow (dir2[ii], 4); b += 4 * pow (dir2[ii], 3) * pos2[ii]; c += 6 * dir2[ii] * dir2[ii] * pos2[ii] * pos2[ii] - 5 * dir2[ii] * dir2[ii]; d += 4 * dir2[ii] * pow (pos2[ii], 3) - 10 * dir2[ii] * pos2[ii]; e += pow (pos2[ii], 4) - 5 * pos2[ii] * pos2[ii]; } //cout << a << " " << b << " " << c << " " << d << " " << e << endl; Polynomial poly (a, b, c, d, e); nbRoots = poly.SolveQuartic (roots); if (!nbRoots) return MAXDOUBLE; else { t = MAXDOUBLE; for (int ii = 0; ii < nbRoots; ii++) if (roots[ii] > epsilon && roots[ii] < t) t = roots[ii]; p[0] = t * dir2[0] + pos2[0] / pos2[3]; p[1] = t * dir2[1] + pos2[1] / pos2[3]; p[2] = t * dir2[2] + pos2[2] / pos2[3]; p[3] = 1.0; if (t==MAXDOUBLE) dist = MAXDOUBLE; else dist = distance (p, pos); trans->doTransformation(i,p); } return dist; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void cubeTroue::normale (double *p,rayon * r, double laNormale[4]) { double p2[4]; trans->doInvTransformation(p2,p); laNormale[0] = 4 * pow (p2[0], 3) - 10 * p2[0]; laNormale[1] = 4 * pow (p2[1], 3) - 10 * p2[1]; laNormale[2] = 4 * pow (p2[2], 3) - 10 * p2[2]; laNormale[3] = 0; corrigerNormale (laNormale, p2, r); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/cubeTroue.h0100755000000000000000000000135207310142130014245 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 14/05/2001 */ /* */ /********************************************/ #if !defined(__CUBETROUE__) #define __CUBETROUE__ #include "objet.h" class cubeTroue:public objet { public: cubeTroue (); virtual ~ cubeTroue (); /* calcule l'intersection entre le rayon r et l'objet et renvoie la distance entre le debut du rayon et i */ double intersection (rayon * r, double *i); /* calcule la normale en p l'objet */ void normale (double *p,rayon * r, double laNormale[4]); }; #endif // __CUBETROUE__ Site/sources/cylindre.cc0100755000000000000000000001457107310142130014266 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 10/05/2001 */ /* */ /* Commentaires : permet de tracer un cylindre d'equation : */ /* x4-5x2+y4-5y2+z4-5z2+11.8=0 */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "cylindre.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// cylindre::cylindre (double rayon, double longueur): objet () { this->leRayon = rayon; this->longueur = longueur; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// cylindre::~cylindre () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double cylindre::intersection (rayon* r, double *i) { double a, b, c; double delta; double t1, t2, t; double d, d1, d2; double p[4]; double p1[4]; double p2[4]; double temp[4]; double pos[4]; double dir[4]; double pos2[4]; double dir2[4]; r->getOrigin(pos); r->getDirection(dir); trans->doInvTransformation(pos2,pos); trans->doInvTransformation(dir2,dir); a = dir2[2] * dir2[2] + dir2[1] * dir2[1]; b = dir2[2] * pos2[2] + dir2[1] * pos2[1]; c = pos2[2] * pos2[2] + pos2[1] * pos2[1] - leRayon * leRayon; delta = b * b - a * c; for (int j = 0; j > 4; j++) pos2[j] /= pos2[3]; if (delta < 0) { d = MAXDOUBLE; if ((pos2[1] * pos2[1] + pos2[2] * pos2[2]) < (leRayon * leRayon)) { if (((longueur != 0.0)) && (pos2[0] > longueur || (pos2[0] >= 0.0 && pos2[0] < longueur))) { if (dir2[0] != 0) { t = (longueur - pos2[0]) / dir2[0]; p[0] = longueur; p[1] = t * dir2[1] + pos2[1]; p[2] = t * dir2[2] + pos2[2]; p[3] = 1.0; if ((t > epsilon) && ((p[1] * p[1] + p[2] * p[2]) <= leRayon * leRayon)) { d = distance (p, pos2); } else d = MAXDOUBLE; } else d = MAXDOUBLE; } if (((longueur != 0.0)) && (pos2[0] < 0.0 || (pos2[0] > 0.0 && pos2[0] <= longueur))) { if (dir2[0] != 0) { t = (0.0 - pos2[0]) / dir2[0]; p[0] = 0.0; p[1] = t * dir2[1] + pos2[1]; p[2] = t * dir2[2] + pos2[2]; p[3] = 1.0; if ((t > epsilon) && ((p[1] * p[1] + p[2] * p[2]) <= leRayon * leRayon)) { d = distance (p, pos2); } else d = MAXDOUBLE; } else d = MAXDOUBLE; } } } else { t1 = (-b + sqrt (delta)) / a; t2 = (-b - sqrt (delta)) / a; if (t1 <= epsilon && t2 <= epsilon) d = MAXDOUBLE; else { if ((t1 <= t2 && t1 > epsilon) || (t2 < t1 && t2 < epsilon)) t = t1; else if ((t2 < t1 && t2 > epsilon) || (t1 < t2 && t1 < epsilon)) t = t2; p[0] = t * dir2[0] + pos2[0]; p[1] = t * dir2[1] + pos2[1]; p[2] = t * dir2[2] + pos2[2]; p[3] = 1.0; d = distance (p, pos2); if (((longueur != 0.0)) && (p[0] > longueur) || (pos2[0] > longueur && (pos2[1] * pos2[1] + pos2[2] * pos2[2]) <= (leRayon * leRayon))) { if (dir2[0] != 0) { t = (longueur - pos2[0]) / dir2[0]; p[0] = longueur; p[1] = t * dir2[1] + pos2[1]; p[2] = t * dir2[2] + pos2[2]; p[3] = 1.0; if ((t > epsilon) && ((p[1] * p[1] + p[2] * p[2]) <= leRayon * leRayon)) { d = distance (p, pos2); } else d = MAXDOUBLE; } else d = MAXDOUBLE; } if (((longueur != 0.0)) && (p[0] < 0.0) || (pos2[0] < 0 && (pos2[1] * pos2[1] + pos2[2] * pos2[2]) <= (leRayon * leRayon))) { if (dir2[0] != 0) { t = (0.0 - pos2[0]) / dir2[0]; p[0] = 0.0; p[1] = t * dir2[1] + pos2[1]; p[2] = t * dir2[2] + pos2[2]; p[3] = 1.0; if ((t > epsilon) && ((p[1] * p[1] + p[2] * p[2]) <= leRayon * leRayon)) { d = distance (p, pos2); } else d = MAXDOUBLE; } else d = MAXDOUBLE; } } } trans->doTransformation(i,p); return d; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void cylindre::normale (double *p, rayon * r, double laNormale[4]) { double d, ps; double p2[4]; double temp[4]; trans->doInvTransformation(p2,p); if ((longueur == 0.0) || ((longueur != 0.0) && ((p2[0] >= epsilon) && (p2[0] <= (longueur - epsilon))))) { //((p2[0]>=0.0)&&(p2[0]<=longueur)))){// laNormale[0] = 0.0; laNormale[1] = p2[1] / p2[3]; //(p2[3]*echelle[1][1]); laNormale[2] = p2[2] / p2[3]; //(p2[3]*echelle[2][2]); laNormale[3] = 0.0; } else if (p2[0] < epsilon && (p2[0] > -epsilon)) { //(p2[0]==0){// laNormale[0] = -1.0; laNormale[1] = 0.0; laNormale[2] = 0.0; laNormale[3] = 0.0; } else if (p2[0] < (longueur + epsilon) && p2[0] > (longueur - epsilon)) { //(p2[0]==longueur){// laNormale[0] = 1.0; laNormale[1] = 0.0; laNormale[2] = 0.0; laNormale[3] = 0.0; } corrigerNormale (laNormale, p2, r); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/cylindre.h0100755000000000000000000000146307310142130014124 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 10/05/2001 */ /* */ /********************************************/ #if !defined(__CYLINDRE__) #define __CYLINDRE__ #include "objet.h" class cylindre:public objet { private: double leRayon; double longueur; public: cylindre (double rayon, double longueur); virtual ~ cylindre (); /* calcule l'intersection entre le rayon r et l'objet et renvoie la distance entre le debut du rayon et i */ double intersection (rayon * r, double *i); /* calcule la normale en p l'objet */ void normale (double *p,rayon * r, double laNormale[4]); }; #endif // __CYLINDRE__ Site/sources/flou.ray0100755000000000000000000000144707311075274013645 0ustar rootrootglobal_setting { max_trace_level 4 output_width 320 output_height 240 #antialiasing 9 #aa_threshold 0.3 #soft_shadow 1 #shadow_ray 20 } background{ color <0.4,0.3,0.5> } sphere{ 3 finish { ambient 0.4 diffuse 0.5 specular 0.8 shininess 50 } transform { translate <1,0,5> } pigment{ color <1.0,0.0,0.0> } } plan { finish { ambient 0.2 diffuse 0.8 specular 0.7 shininess 10 transparency 0.0 reflection 0.0 } transform { translate <-2.0,0,0> } pigment{ color <0.0,0.0,1.0> } } light_source { DIRECTIONNAL direction <-7,1,-8> color <1.0,1.0,1.0> } light_source { DIRECTIONNAL direction <-1,-1,0> color <1.0,1.0,1.0> } light_source { AMBIENT color <1,1,1> } camera{ location <0,0,0> look_at <0,0,1> field_of_view 130 } Site/sources/lecteurCar.cc0100755000000000000000000000720607310142130014543 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 20/05/2001 */ /* */ /* Commentaires : permet de lire un fichier caractere par caractere */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "lecteurCar.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// lecteurCar::lecteurCar (char nomFich[]): ifstream (nomFich) { if (fail ()) { cout << endl; cout << "raytracer : *** Erreur [" << nomFich << "] :" << endl; cout << " \tFichier de description \"" << nomFich << "\" introuvable " << endl; cout << endl; exit (0); } cout << endl << "\tOuverture du fichier \"" << nomFich << "\" "; cout << "\t [ OK ]" << endl; numeroLigne = 0; uneLigne = (char *) malloc (1000 * sizeof (char)); lireLigne (); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// lecteurCar::~lecteurCar () { close (); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// char lecteurCar::peek () { return ligne.peek (); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurCar::get (char &c) { ligne.get (c); if (c == '\n') lireLigne (); if (fail ()) c = '*'; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurCar::lireLigne () { char c = '.'; int i = 0; ligne.seekp (0, ios::beg); ligne.seekg (0, ios::beg); numeroLigne++; while (!eof () && c != '\n') { ifstream::get (c); uneLigne[i++] = c; ligne.put (c); } uneLigne[i - 1] = '\0'; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// int lecteurCar::getNumeroLigneCourante () { return numeroLigne; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// char * lecteurCar::getLigneCourante () { return uneLigne; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/lecteurCar.h0100755000000000000000000000071507310142130014403 0ustar rootroot#if !defined(__LECTEURCAR__) #define __LECTEURCAR__ #include #include "strstream.h" #include "fstream.h" #include "iostream.h" class lecteurCar:public ifstream { private: strstream ligne; char *uneLigne; int numeroLigne; void lireLigne (); public: lecteurCar (char nomFich[]); ~lecteurCar (); char peek (); void get (char &c); int getNumeroLigneCourante (); char *getLigneCourante (); }; #endif // __LECTEURCAR__ Site/sources/lecteurScene.cc0100755000000000000000000012042207310142130015067 0ustar rootroot#include "lecteurScene.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// lecteurScene::lecteurScene (char nomFich[]): ls (nomFich) { s = new scene (); strcpy (this->nomFich, nomFich); initParametres (); lireScene (); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// scene * lecteurScene::getScene () { return s; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::initParametres () { /* initialisation parametres cameras */ fov = 60.0; typeProjection = camera::PERSPECTIVE; projS = 10; lookAt[0] = 0.0; lookAt[1] = 0.0; lookAt[2] = 0.0; lookAt[3] = 1.0; posCam[0] = 0.0; posCam[1] = 0.0; posCam[2] = 0.0; posCam[3] = 1.0; /* initialisation parametres background */ coulBg[0] = 0.5; coulBg[1] = 0.5; coulBg[2] = 0.5; /* initialisation parametres lumieres */ posLum[0] = 0.0; posLum[1] = 0.0; posLum[2] = 0.0; posLum[3] = 1.0; dirLum[0] = 0.0; dirLum[1] = 0.0; dirLum[2] = 1.0; dirLum[3] = 0.0; coulLum[0] = 1.0; coulLum[1] = 1.0; coulLum[2] = 1.0; typeLum = lecteurSym::POINT_SOURCE; c1 = 1; c2 = 0; c3 = 0; /* initialisation parametres global_setting */ maxTraceLevel = 4; antialiasing = 1; AAThreshold = 0.3; outputHeight = 480; outputWidth = 640; softShadow =-1.0; nbRayonsOmbres=1; /* initialisation coordonnees homogenes des points du triangles */ p1[3] = 1.0; p2[4] = 1.0; p3[3] = 1.0; /* initialisation modifier */ m.ambient = 0.4; m.diffuse = 0.7; m.specular = 0.8; m.transparency = 0.0; m.reflection = 0.0; m.shininess = 40; m.ior = 1.0; /* initialiation pigment*/ m.couleur[0] = 1.0; m.couleur[1] = 1.0; m.couleur[2] = 1.0; m.typePigment = objet::COULEUR; m.ccr = new checker (); m.pNoise = new perlinNoise (); m.pNormale = new perlinNoise (); m.mapper = new textureMapper (); translate[0] = 0.0; translate[1] = 0.0; translate[2] = 0.0; rotate[0] = 0.0; rotate[1] = 0.0; rotate[2] = 0.0; scale[0] = 1.0; scale[1] = 1.0; scale[2] = 1.0; translatePm[0] = 0.0; translatePm[1] = 0.0; translatePm[2] = 0.0; rotatePm[0] = 0.0; rotatePm[1] = 0.0; rotatePm[2] = 0.0; scalePm[0] = 1.0; scalePm[1] = 1.0; scalePm[2] = 1.0; translateN[0] = 0.0; translateN[1] = 0.0; translateN[2] = 0.0; rotateN[0] = 0.0; rotateN[1] = 0.0; rotateN[2] = 0.0; scaleN[0] = 1.0; scaleN[1] = 1.0; scaleN[2] = 1.0; trans = new transformer(); m.typeNormale = objet::NO; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::setModifier (objet * o, struct MODIFIER m) { o->setRhoA (m.ambient); o->setRhoD (m.diffuse); o->setRhoS (m.specular); o->setRhoR (m.reflection); o->setRhoT (m.transparency); o->setN (m.ior); o->setShininess (m.shininess); trans = new transformer(); trans->setTranslation(translate); trans->setRotation(rotate); trans->setEchelle(scale); o->setTransformer (trans); o->setTypePigment (m.typePigment); trans = new transformer(); trans->setTranslation(translatePm); trans->setRotation(rotatePm); trans->setEchelle(scalePm); switch (m.typePigment) { case objet::COULEUR: o->setCouleur (m.couleur); break; case objet::CHECKER: m.ccr->setTransformer(trans); o->setChecker (m.ccr); break; case objet::PERLIN: m.pNoise->setTransformer(trans); o->setPerlin (m.pNoise); break; case objet::TEXTURE_MAPPING: m.mapper->setTransformer(trans); o->setMapper (m.mapper); break; default: o->setCouleur (m.couleur); break; } o->setTypeNormale (m.typeNormale); if (m.typeNormale==objet::PERLIN) { trans = new transformer(); trans->setTranslation(translateN); trans->setRotation(rotateN); trans->setEchelle(scaleN); m.pNormale->setTransformer (trans); o->setPerlinNormale (m.pNormale); } } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::afficherErreur (char *libelle) { cout << endl; cout << "raytracer : *** Erreur [" << nomFich << "] :" << endl; cout << " \tligne " << ls. getNumeroLigneCourante () << " : " << "[ " << ls.getLigneCourante () << " ]" << endl; cout << "\t\t " << libelle << endl << endl; exit (0); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireScene () { cout << "\tDebut lecture du fichier \"" << nomFich << "\" " << endl; while (ls.codeSymboleCourant () != lecteurSym::FIN) { initParametres (); lireBloc (); ls.symboleSuivant (); } cout << "\tFin lecture du fichier \"" << nomFich << "\" "; cout << "\t [ OK ]" << endl << endl; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireBloc () { switch (ls.codeSymboleCourant ()) { case lecteurSym::CAMERA: lireCamera (&fov,&typeProjection,&projS, posCam, lookAt); c = new camera (posCam, lookAt); c->setTypeProjection(typeProjection); c->setProjectionSize(projS); if (typeProjection==camera::PERSPECTIVE) { c->setFov(fov); } s->changerCamera (c); cout << "\t\tAjout camera \t\t\t [ OK ]" << endl; break; case lecteurSym::BACKGROUND: lireBackground (coulBg); s->setBackground (coulBg); cout << "\t\tAjout background \t\t [ OK ]" << endl; break; case lecteurSym::LIGHT_SOURCE: lireLightSource (posLum,dirLum, coulLum, &typeLum, &c1, &c2, &c3); if (c1 == 0 && c2 == 0 && c3 == 0 || c1 < 0 || c2 < 0 || c3 < 0) afficherErreur("les coefficients d'attenuation de la lumiere ne peuvent pas etre negatif ou tous nul "); switch (typeLum){ case lecteurSym::POINT_SOURCE : lp = new lumierePonctuelle (posLum, coulLum); lp->setAttenuation (c1, c2, c3); s->ajouterLumierePonctuelle (lp); break; case lecteurSym::DIRECTIONNAL : ld = new lumiereDirectionnelle (dirLum, coulLum); s->ajouterLumiereDirectionnelle (ld); break; case lecteurSym::AMBIENT : la = new lumiereAmbiante(coulLum); s->ajouterLumiereAmbiante (la); break; default : break; } cout << "\t\tAjout light_source \t\t [ OK ]" << endl; break; case lecteurSym::GLOBAL_SETTING: lireGlobalSetting (&maxTraceLevel, &antialiasing, &AAThreshold, &softShadow, &nbRayonsOmbres,&outputWidth, &outputHeight); s->setGlobalSetting (maxTraceLevel, antialiasing, AAThreshold, softShadow, nbRayonsOmbres, outputHeight, outputWidth); cout << "\t\tAjout global_setting \t\t [ OK ]" << endl; break; case lecteurSym::SPHERE: lireSphere (&rayon, &m); laSphere = new sphere (rayon); setModifier (laSphere, m); if (m.typePigment == objet::TEXTURE_MAPPING){ m.mapper->setTextureSphere (rayon); //laSphere->setMapper (m.mapper); } s->ajouterObjet (laSphere); cout << "\t\tAjout sphere \t\t\t [ OK ]" << endl; break; case lecteurSym::PLAN: lirePlan (&m); lePlan = new plan (); setModifier (lePlan, m); if (m.typePigment == objet::TEXTURE_MAPPING){ m.mapper->setTexturePlan (); //lePlan->setMapper (m.mapper); } s->ajouterObjet (lePlan); cout << "\t\tAjout plan \t\t\t [ OK ]" << endl; break; case lecteurSym::CYLINDRE: lireCylindre (&rayon, &longueur, &m); leCylindre = new cylindre (rayon, longueur); setModifier (leCylindre, m); s->ajouterObjet (leCylindre); cout << "\t\tAjout cylindre \t\t\t [ OK ]" << endl; break; case lecteurSym::CONE: lireCone (&rayon, &rayon2, &longueur, &m); leCone = new cone (rayon2, rayon, longueur); setModifier (leCone, m); s->ajouterObjet (leCone); cout << "\t\tAjout cone \t\t\t [ OK ]" << endl; break; case lecteurSym::BOX: lireBox (&cote, &m); laBox = new box (cote); setModifier (laBox, m); s->ajouterObjet (laBox); cout << "\t\tAjout box \t\t\t [ OK ]" << endl; break; case lecteurSym::TRIANGLE: lireTriangle (p1, p2, p3, &m); leTriangle = new triangle (p1, p2, p3); setModifier (leTriangle, m); s->ajouterObjet (leTriangle); cout << "\t\tAjout triangle \t\t\t [ OK ]" << endl; break; case lecteurSym::PARALLELOGRAM: lireParallelogram (p1, p2, p3, &m); leParallelogram = new parallelogram (p1, p2, p3); setModifier (leParallelogram, m); s->ajouterObjet (leParallelogram); cout << "\t\tAjout parallelogram \t\t [ OK ]" << endl; break; case lecteurSym::TORUS: lireTorus (&rayon, &rayon2, &m); leTore = new tore (rayon, rayon2); setModifier (leTore, m); s->ajouterObjet (leTore); cout << "\t\tAjout tore \t\t\t [ OK ]" << endl; break; case lecteurSym::CUBE_TROUE: lireCubeTroue (&m); leCubeTroue = new cubeTroue (); setModifier (leCubeTroue, m); s->ajouterObjet (leCubeTroue); cout << "\t\tAjout cube_troue \t\t [ OK ]" << endl; break; case lecteurSym::PYRAMID3: ls.sauterSymbole (lecteurSym::PYRAMID3); lirePyramid (base1, base2, base3, sommet, &m); laPyramid3 = new pyramid3 (base1, base2, base3, sommet); setModifier (laPyramid3, m); s->ajouterObjet (laPyramid3); cout << "\t\tAjout pyramid3 \t\t\t [ OK ]" << endl; break; case lecteurSym::PYRAMID4: ls.sauterSymbole (lecteurSym::PYRAMID4); lirePyramid (base1, base2, base3, sommet, &m); laPyramid4 = new pyramid4 (base1, base2, base3, sommet); setModifier (laPyramid4, m); s->ajouterObjet (laPyramid4); cout << "\t\tAjout pyramid4 \t\t\t [ OK ]" << endl; break; default: afficherErreur ("bloc de type inconnu"); } } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireCamera (double *fov,int *typeProjection,double * projectionS, double *position, double *lookAt) { ls.sauterSymbole (lecteurSym::CAMERA); if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { while (ls.codeSymboleCourant () != lecteurSym::FIN && ls.codeSymboleCourant () != lecteurSym::ACCOLADE_FERMANTE) { switch (ls.codeSymboleCourant ()) { case lecteurSym::LOCATION: ls.sauterSymbole (lecteurSym::LOCATION); lireTriplet (&position[0], &position[1], &position[2]); break; case lecteurSym::LOOK_AT: ls.sauterSymbole (lecteurSym::LOOK_AT); lireTriplet (&lookAt[0], &lookAt[1], &lookAt[2]); break; case lecteurSym::FIELD_OF_VIEW: ls.sauterSymbole (lecteurSym::FIELD_OF_VIEW); lireNombreFloat (fov); break; case lecteurSym::PROJECTION_SIZE: ls.sauterSymbole (lecteurSym::PROJECTION_SIZE); lireNombreFloat (projectionS); break; case lecteurSym::PERSPECTIVE: ls.sauterSymbole (lecteurSym::PERSPECTIVE); *typeProjection = camera::PERSPECTIVE; break; case lecteurSym::ORTHOGRAPHIC: ls.sauterSymbole (lecteurSym::ORTHOGRAPHIC); *typeProjection = camera::ORTHOGRAPHIC; break; default: afficherErreur ("parametre camera inconnu "); } } if (ls.codeSymboleCourant () == lecteurSym::FIN) afficherErreur ("il manque une accolade fermante "); } else afficherErreur ("il manque une accolade ouvrante "); if (*fov < 0) *fov = 60.0; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireBackground (double *couleur) { ls.sauterSymbole (lecteurSym::BACKGROUND); if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { while (ls.codeSymboleCourant () != lecteurSym::FIN && ls.codeSymboleCourant () != lecteurSym::ACCOLADE_FERMANTE) { switch (ls.codeSymboleCourant ()) { case lecteurSym::COLOR: ls.sauterSymbole (lecteurSym::COLOR); lireTriplet (&couleur[0], &couleur[1], &couleur[2]); break; default: afficherErreur ("parametre background inconnu "); } } if (ls.codeSymboleCourant () == lecteurSym::FIN) afficherErreur ("il manque une accolade fermante "); } else afficherErreur ("il manque une accolade ouvrante "); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireLightSource (double *position, double *direction, double *couleur, int *typeLum, double *c1, double *c2, double *c3) { ls.sauterSymbole (lecteurSym::LIGHT_SOURCE); if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { while (ls.codeSymboleCourant () != lecteurSym::FIN && ls.codeSymboleCourant () != lecteurSym::ACCOLADE_FERMANTE) { switch (ls.codeSymboleCourant ()) { case lecteurSym::LOCATION: if (*typeLum!=lecteurSym::POINT_SOURCE) { afficherErreur ("parametre LOCATION invalide pour toute source lumineuse non ponctuelle"); }else { ls.sauterSymbole (lecteurSym::LOCATION); lireTriplet (&position[0], &position[1], &position[2]); } break; case lecteurSym::DIRECTION: if (*typeLum!=lecteurSym::DIRECTIONNAL) { afficherErreur ("parametre DIRECTION invalide pour toute source lumineuse non directionnelle"); }else { ls.sauterSymbole (lecteurSym::DIRECTION); lireTriplet (&direction[0], &direction[1], &direction[2]); } break; case lecteurSym::COLOR: ls.sauterSymbole (lecteurSym::COLOR); lireTriplet (&couleur[0], &couleur[1], &couleur[2]); break; case lecteurSym::POINT_SOURCE: ls.sauterSymbole (lecteurSym::POINT_SOURCE); *typeLum = lecteurSym::POINT_SOURCE; break; case lecteurSym::AMBIENT: ls.sauterSymbole (lecteurSym::AMBIENT); *typeLum = lecteurSym::AMBIENT; break; case lecteurSym::DIRECTIONNAL: ls.sauterSymbole (lecteurSym::DIRECTIONNAL); *typeLum = lecteurSym::DIRECTIONNAL; break; case lecteurSym::ATTENUATION: ls.sauterSymbole (lecteurSym::ATTENUATION); if (*typeLum!=lecteurSym::DIRECTIONNAL) { afficherErreur ("parametre ATTENUATION invalide pour toute source lumineuse non ponctuelle"); }else lireTriplet (c1, c2, c3); break; default: afficherErreur ("parametre light_source inconnu "); } } if (ls.codeSymboleCourant () == lecteurSym::FIN) afficherErreur ("il manque une accolade fermante "); } else afficherErreur ("il manque une accolade ouvrante"); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireGlobalSetting (int *mtl, int *aa, double *aaT, double *softS, int *nbRO, int *width, int *height) { ls.sauterSymbole (lecteurSym::GLOBAL_SETTING); if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { while (ls.codeSymboleCourant () != lecteurSym::FIN && ls.codeSymboleCourant () != lecteurSym::ACCOLADE_FERMANTE) { switch (ls.codeSymboleCourant ()) { case lecteurSym::MAX_TRACE_LEVEL: ls.sauterSymbole (lecteurSym::MAX_TRACE_LEVEL); lireNombreInt (mtl); break; case lecteurSym::ANTIALIASING: ls.sauterSymbole (lecteurSym::ANTIALIASING); lireNombreInt (aa); break; case lecteurSym::AA_THRESHOLD: ls.sauterSymbole (lecteurSym::AA_THRESHOLD); lireNombreFloat (aaT); break; case lecteurSym::SOFT_SHADOW: ls.sauterSymbole (lecteurSym::SOFT_SHADOW); lireNombreFloat (softS); break; case lecteurSym::SHADOW_RAY: ls.sauterSymbole (lecteurSym::SHADOW_RAY); lireNombreInt (nbRO); break; case lecteurSym::OUTPUT_HEIGHT: ls.sauterSymbole (lecteurSym::OUTPUT_HEIGHT); lireNombreInt (height); break; case lecteurSym::OUTPUT_WIDTH: ls.sauterSymbole (lecteurSym::OUTPUT_WIDTH); lireNombreInt (width); break; default: afficherErreur ("parametre global_setting inconnu "); } } if (ls.codeSymboleCourant () == lecteurSym::FIN) afficherErreur ("il manque une accolade fermante "); } else afficherErreur ("il manque une accolade ouvrante "); if (*aa < 1) *aa = 1; if (*aa > 4) *aa = 4; if (*width < 0) *width = 640; if (*height < 0) *height = 480; if (*mtl < 0) *mtl = 0; if (*mtl > 10) *mtl = 10; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireSphere (double *rayon, struct MODIFIER *m) { ls.sauterSymbole (lecteurSym::SPHERE); if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { lireNombreFloat (rayon); lireModifier (m); } else afficherErreur ("il manque une accolade ouvrante"); if (*rayon < 0) *rayon = 1.0; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lirePlan (struct MODIFIER *m) { ls.sauterSymbole (lecteurSym::PLAN); if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { lireModifier (m); } else afficherErreur ("il manque une accolade ouvrante"); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireCylindre (double *rayon, double *longueur, struct MODIFIER *m) { ls.sauterSymbole (lecteurSym::CYLINDRE); if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { lireNombreFloat (rayon); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule"); lireNombreFloat (longueur); lireModifier (m); } else afficherErreur ("il manque une accolade ouvrante"); if (*rayon < 0) *rayon = 1.0; if (*longueur < 0) *longueur = 1.0; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireCone (double *rayon, double *rayon2, double *longueur, struct MODIFIER *m) { { ls.sauterSymbole (lecteurSym::CONE); if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { lireNombreFloat (rayon); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule"); lireNombreFloat (rayon2); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule"); lireNombreFloat (longueur); lireModifier (m); } else afficherErreur ("il manque une accolade ouvrante"); if (*rayon < 0) *rayon = 1.0; if (*rayon2 < 0) *rayon2 = 1.0; if (*longueur < 0) *longueur = 1.0; } } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireBox (double *cote, struct MODIFIER *m) { ls.sauterSymbole (lecteurSym::BOX); if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { lireNombreFloat (cote); lireModifier (m); } else afficherErreur ("il manque une accolade ouvrante"); if (*cote < 0) *cote = 1.0; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireTriangle (double *p1, double *p2, double *p3, struct MODIFIER *m) { ls.sauterSymbole (lecteurSym::TRIANGLE); if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { lireTriplet (&p1[0], &p1[1], &p1[2]); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule apres le triplet "); lireTriplet (&p2[0], &p2[1], &p2[2]); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule apres le triplet "); lireTriplet (&p3[0], &p3[1], &p3[2]); lireModifier (m); } else afficherErreur ("il manque une accolade ouvrante"); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireParallelogram (double *p1, double *p2, double *p3, struct MODIFIER *m) { ls.sauterSymbole (lecteurSym::PARALLELOGRAM); if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { lireTriplet (&p1[0], &p1[1], &p1[2]); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule apres le triplet "); lireTriplet (&p2[0], &p2[1], &p2[2]); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule apres le triplet "); lireTriplet (&p3[0], &p3[1], &p3[2]); lireModifier (m); } else afficherErreur ("il manque une accolade ouvrante"); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireTorus (double *minusR, double *majorR, struct MODIFIER *m) { ls.sauterSymbole (lecteurSym::TORUS); if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { lireNombreFloat (minusR); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule apres le triplet "); lireNombreFloat (majorR); lireModifier (m); } else afficherErreur ("il manque une accolade ouvrante"); if (*minusR >= *majorR) afficherErreur ("le petit rayon du tore doit etre inferieur au grand rayon"); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireCubeTroue (struct MODIFIER *m) { ls.sauterSymbole (lecteurSym::CUBE_TROUE); if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { lireModifier (m); } else afficherErreur ("il manque une accolade ouvrante"); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lirePyramid (double base1[3], double base2[3], double base3[3], double sommet[3], struct MODIFIER *m) { if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { lireTriplet (&base1[0], &base1[1], &base1[2]); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule apres le triplet "); lireTriplet (&base2[0], &base2[1], &base2[2]); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule apres le triplet "); lireTriplet (&base3[0], &base3[1], &base3[2]); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule apres le triplet "); lireTriplet (&sommet[0], &sommet[1], &sommet[2]); lireModifier (m); } else afficherErreur ("il manque une accolade ouvrante"); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireModifier (struct MODIFIER *m) { while (ls.codeSymboleCourant () != lecteurSym::FIN && ls.codeSymboleCourant () != lecteurSym::ACCOLADE_FERMANTE) { switch (ls.codeSymboleCourant ()) { case lecteurSym::TRANSFORM: lireTransform (m); break; case lecteurSym::PIGMENT: lirePigment (m); break; case lecteurSym::FINISH: lireFinish (m); break; case lecteurSym::NORMAL: lireNormal (m); break; default: afficherErreur ("parametre inconnu "); } } if (ls.codeSymboleCourant () == lecteurSym::FIN) afficherErreur ("il manque une accolade fermante "); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireTransform (struct MODIFIER *m) { ls.sauterSymbole (lecteurSym::TRANSFORM); if (ls.codeSymboleCourant () != lecteurSym::FIN && ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { while (ls.codeSymboleCourant () != lecteurSym::ACCOLADE_FERMANTE) { switch (ls.codeSymboleCourant ()) { case lecteurSym::ROTATE: ls.sauterSymbole (lecteurSym::ROTATE); lireTriplet (&rotate[0], &rotate[1],&rotate[2]); for (int i = 0; i < 3; i++) rotate[i] *= M_PI / 180.0; break; case lecteurSym::SCALE: ls.sauterSymbole (lecteurSym::SCALE); lireTriplet (&scale[0], &scale[1],&scale[2]); break; case lecteurSym::TRANSLATE: ls.sauterSymbole (lecteurSym::TRANSLATE); lireTriplet (&translate[0], &translate[1],&translate[2]); break; default: afficherErreur ("parametre transform inconnu "); } } if (ls.codeSymboleCourant () == lecteurSym::FIN) afficherErreur ("il manque une accolade fermante "); } else afficherErreur ("il manque une accolade ouvrante "); if (!ls.sauterSymbole (lecteurSym::ACCOLADE_FERMANTE)) afficherErreur ("il manque une accolade fermante "); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lirePigment (struct MODIFIER *m) { char tmp[20]; ls.sauterSymbole (lecteurSym::PIGMENT); if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { while (ls.codeSymboleCourant () != lecteurSym::FIN && ls.codeSymboleCourant () != lecteurSym::ACCOLADE_FERMANTE) { switch (ls.codeSymboleCourant ()) { case lecteurSym::COLOR: ls.sauterSymbole (lecteurSym::COLOR); lireTriplet (&(m->couleur[0]), &(m->couleur[1]), &(m->couleur[2])); m->typePigment = objet::COULEUR; break; case lecteurSym::TEXTURE: lireTexture (m); break; case lecteurSym::CHECKER: lireChecker (m); break; case lecteurSym::PERLIN: ls.sauterSymbole (lecteurSym::PERLIN); lirePerlin (m, PIGMENT); break; case lecteurSym::WOOD: ls.sauterSymbole (lecteurSym::WOOD); m->pNoise->setWood (); lirePerlin (m, PIGMENT); break; case lecteurSym::MARBLE: ls.sauterSymbole (lecteurSym::MARBLE); m->pNoise->setMarble (); lirePerlin (m, PIGMENT); break; case lecteurSym::ROTATE: ls.sauterSymbole (lecteurSym::ROTATE); lireTriplet (&rotatePm[0], &rotatePm[1],&rotatePm[2]); for (int i = 0; i < 3; i++) rotatePm[i] *= M_PI / 180.0; break; case lecteurSym::SCALE: ls.sauterSymbole (lecteurSym::SCALE); lireTriplet (&scalePm[0], &scalePm[1],&scalePm[2]); break; case lecteurSym::TRANSLATE: ls.sauterSymbole (lecteurSym::TRANSLATE); lireTriplet (&translatePm[0],&translatePm[1],&translatePm[2]); break; default: afficherErreur ("parametre pigment inconnu "); } } if (ls.codeSymboleCourant () == lecteurSym::FIN) afficherErreur ("il manque une accolade fermante "); } else afficherErreur ("il manque une accolade ouvrante "); if (!ls.sauterSymbole (lecteurSym::ACCOLADE_FERMANTE)) afficherErreur ("il manque une accolade fermante "); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireTexture (struct MODIFIER *m) { ls.sauterSymbole (lecteurSym::TEXTURE); lireChaine (m->texture); m->mapper = new textureMapper (m->texture); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule dans le triplet "); lireNombreInt (&freq); m->mapper->setFrequence (freq); m->typePigment = objet::TEXTURE_MAPPING; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireChecker (struct MODIFIER *m) { char tmp[20]; m->typePigment = objet::CHECKER; ls.sauterSymbole (lecteurSym::CHECKER); lireNombreFloat (&size); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule dans le triplet "); lireTriplet (&couleur1[0], &couleur1[1], &couleur1[2]); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule dans le triplet "); lireTriplet (&couleur2[0], &couleur2[1], &couleur2[2]); if (size < 0) size = 1.0; m->ccr->setSize (size); m->ccr->setCouleur1 (couleur1); m->ccr->setCouleur2 (couleur2); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lirePerlin (struct MODIFIER *m, int type) { char tmp[20]; if (type == PIGMENT) m->typePigment = objet::PERLIN; else if (type == NORMAL) m->typeNormale = objet::PERLIN; if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { lireNombreFloat (&alpha); if (type == PIGMENT) m->pNoise->setAlpha (alpha); else if (type == NORMAL) m->pNormale->setAlpha (alpha); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule"); lireNombreFloat (&beta); if (type == PIGMENT) m->pNoise->setBeta (beta); else if (type == NORMAL) m->pNormale->setBeta (beta); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule"); lireNombreInt (&octave); if (type == PIGMENT) m->pNoise->setOctave (octave); else if (type == NORMAL) m->pNormale->setOctave (octave); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule"); lireNombreFloat (&intensite); if (type == PIGMENT) m->pNoise->setIntensite (intensite); else if (type == NORMAL) m->pNormale->setIntensite (intensite); while (ls.codeSymboleCourant () != lecteurSym::FIN && ls.codeSymboleCourant () != lecteurSym::ACCOLADE_FERMANTE) { switch (ls.codeSymboleCourant ()) { case lecteurSym::SCALE: ls.sauterSymbole (lecteurSym::SCALE); if (type == NORMAL) lireTriplet (&scaleN[0], &scaleN[1], &scaleN[2]); else afficherErreur ("parametre SCALE interdit si le bruit de perlin est specifie dans PIGMENT"); break; case lecteurSym::ROTATE: ls.sauterSymbole (lecteurSym::ROTATE); if (type == NORMAL) lireTriplet (&rotateN[0], &rotateN[1], &rotateN[2]); else afficherErreur ("parametre ROTATE interdit si le bruit de perlin est specifie dans PIGMENT"); break; case lecteurSym::TRANSLATE: ls.sauterSymbole (lecteurSym::TRANSLATE); if (type == NORMAL) lireTriplet (&translateN[0], &translateN[1], &translateN[2]); else afficherErreur ("parametre TRANSLATE interdit si le bruit de perlin est specifie dans PIGMENT"); break; case lecteurSym::COLOR_MAP: if (type == PIGMENT) lireColorMap (m); else afficherErreur("color_map interdit pour autre chose que la definition d'un pigment "); break; default: afficherErreur ("parametre perlin inconnu "); } } if (ls.codeSymboleCourant () == lecteurSym::FIN) afficherErreur ("il manque une accolade fermante "); } else afficherErreur ("il manque une accolade ouvrante "); if (!ls.sauterSymbole (lecteurSym::ACCOLADE_FERMANTE)) afficherErreur ("il manque une accolade fermante "); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireColorMap (struct MODIFIER *m) { double oldRg = 0.0; double rg; double coul[3]; int nbCoul = 0; ls.sauterSymbole (lecteurSym::COLOR_MAP); if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { while (ls.codeSymboleCourant () != lecteurSym::FIN && ls.codeSymboleCourant () != lecteurSym::ACCOLADE_FERMANTE) { switch (ls.codeSymboleCourant ()) { case lecteurSym::CROCHET_OUVRANT: ls.sauterSymbole (lecteurSym::CROCHET_OUVRANT); lireNombreFloat (&rg); if (nbCoul == 0 && rg != 0.0) afficherErreur ("la table des couleurs doit commencer a 0.0 "); if (rg > 1.0) afficherErreur ("la table des couleurs ne doit pas depasser 1.0 "); if (rg < oldRg) afficherErreur ("les couleurs de la table des couleurs doivent etre ranges dans l'ordre "); if (!ls.sauterSymbole (lecteurSym::COLOR)) afficherErreur ("il manque le mot cle COLOR apres une nouvelle entree dans la table des couleurs "); lireTriplet (&(coul[0]), &(coul[1]), &(coul[2])); if (!ls.sauterSymbole (lecteurSym::CROCHET_FERMANT)) afficherErreur ("il manque un crochet fermant "); for (int i = 0; i < 3; i++) colorMap[nbCoul][i] = coul[i]; range[nbCoul] = rg; oldRg = rg; nbCoul++; break; default: afficherErreur ("parametre color_map inconnu "); } } if (ls.codeSymboleCourant () == lecteurSym::FIN) afficherErreur ("il manque une accolade fermante "); } else afficherErreur ("il manque une accolade ouvrante "); if (!ls.sauterSymbole (lecteurSym::ACCOLADE_FERMANTE)) afficherErreur ("il manque une accolade fermante "); m->pNoise->setColorMap (nbCoul, colorMap, range); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireFinish (struct MODIFIER *m) { ls.sauterSymbole (lecteurSym::FINISH); if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { while (ls.codeSymboleCourant () != lecteurSym::FIN && ls.codeSymboleCourant () != lecteurSym::ACCOLADE_FERMANTE) { switch (ls.codeSymboleCourant ()) { case lecteurSym::AMBIENT: ls.sauterSymbole (lecteurSym::AMBIENT); lireNombreFloat (&(m->ambient)); break; case lecteurSym::DIFFUSE: ls.sauterSymbole (lecteurSym::DIFFUSE); lireNombreFloat (&(m->diffuse)); break; case lecteurSym::SPECULAR: ls.sauterSymbole (lecteurSym::SPECULAR); lireNombreFloat (&(m->specular)); break; case lecteurSym::SHININESS: ls.sauterSymbole (lecteurSym::SHININESS); lireNombreFloat (&(m->shininess)); break; case lecteurSym::TRANSPARENCY: ls.sauterSymbole (lecteurSym::TRANSPARENCY); lireNombreFloat (&(m->transparency)); break; case lecteurSym::REFLECTION: ls.sauterSymbole (lecteurSym::REFLECTION); lireNombreFloat (&(m->reflection)); break; case lecteurSym::IOR: ls.sauterSymbole (lecteurSym::IOR); lireNombreFloat (&(m->ior)); break; default: afficherErreur ("parametre finish inconnu "); } } if (ls.codeSymboleCourant () == lecteurSym::FIN) afficherErreur ("il manque une accolade fermante "); } else afficherErreur ("il manque une accolade ouvrante "); if (!ls.sauterSymbole (lecteurSym::ACCOLADE_FERMANTE)) afficherErreur ("il manque une accolade fermante "); if (m->ambient < 0.0) m->ambient = 0.0; if (m->ambient > 1.0) m->ambient = 1.0; if (m->diffuse < 0.0) m->diffuse = 0.0; if (m->diffuse > 1.0) m->diffuse = 1.0; if (m->specular < 0.0) m->specular = 0.0; if (m->specular > 1.0) m->specular = 1.0; if (m->reflection < 0.0) m->reflection = 0.0; if (m->reflection > 1.0) m->reflection = 1.0; if (m->transparency < 0.0) m->transparency = 0.0; if (m->transparency > 1.0) m->transparency = 1.0; if (m->ior < 0.0) m->ior = 0.0; if (m->shininess < 0.0) m->shininess = 0.0; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireNormal (struct MODIFIER *m) { char tmp[20]; ls.sauterSymbole (lecteurSym::NORMAL); if (ls.sauterSymbole (lecteurSym::ACCOLADE_OUVRANTE)) { while (ls.codeSymboleCourant () != lecteurSym::FIN && ls.codeSymboleCourant () != lecteurSym::ACCOLADE_FERMANTE) { switch (ls.codeSymboleCourant ()) { case lecteurSym::PERLIN: ls.sauterSymbole (lecteurSym::PERLIN); lirePerlin (m, NORMAL); break; case lecteurSym::WOOD: ls.sauterSymbole (lecteurSym::WOOD); m->pNormale->setWood (); lirePerlin (m, NORMAL); break; case lecteurSym::MARBLE: ls.sauterSymbole (lecteurSym::MARBLE); m->pNormale->setMarble (); lirePerlin (m, NORMAL); break; default: afficherErreur ("parametre normale inconnu "); } } if (ls.codeSymboleCourant () == lecteurSym::FIN) afficherErreur ("il manque une accolade fermante "); } else afficherErreur ("il manque une accolade ouvrante "); if (!ls.sauterSymbole (lecteurSym::ACCOLADE_FERMANTE)) afficherErreur ("il manque une accolade fermante "); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireNombreFloat (double *n) { float num; sscanf (ls.chaineSymboleCourant (), "%f", &num); if (ls.sauterSymbole (lecteurSym::NOMBRE)) *n = (double) num; else afficherErreur ("un nombre est manquant "); } void lecteurScene::lireNombreInt (int *n) { float num; sscanf (ls.chaineSymboleCourant (), "%f", &num); if (ls.sauterSymbole (lecteurSym::NOMBRE)) *n = (int) num; else afficherErreur ("un nombre est manquant "); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireTriplet (double *n1, double *n2, double *n3) { if (!ls.sauterSymbole (lecteurSym::CHEVRON_OUVRANT)) afficherErreur ("il manque un chevron ouvrant "); lireNombreFloat (n1); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule dans le triplet "); lireNombreFloat (n2); if (!ls.sauterSymbole (lecteurSym::VIRGULE)) afficherErreur ("il manque une virgule dans le triplet "); lireNombreFloat (n3); if (!ls.sauterSymbole (lecteurSym::CHEVRON_FERMANT)) afficherErreur ("il manque un chevron fermant "); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurScene::lireChaine (char *c) { strcpy (c, ls.chaineSymboleCourant ()); if (!ls.sauterSymbole (lecteurSym::CHAINE)) afficherErreur ("une chaine est manquante "); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/lecteurScene.h0100755000000000000000000001121407310142130014727 0ustar rootroot#if !defined(__LECTEURSCENE__) #define __LECTEURSCENE__ #include #include #include #include "lecteurSym.h" #include "perlinNoise.h" #include "checker.h" #include "textureMapper.h" #include "lumiereAmbiante.h" #include "lumierePonctuelle.h" #include "lumiereDirectionnelle.h" #include "transformer.h" #include "scene.h" #include "sphere.h" #include "plan.h" #include "cylindre.h" #include "cone.h" #include "box.h" #include "triangle.h" #include "parallelogram.h" #include "tore.h" #include "cubeTroue.h" #include "pyramid3.h" #include "pyramid4.h" class lecteurScene { private: struct MODIFIER { double ambient; double diffuse; double specular; double transparency; double reflection; double shininess; double ior; double couleur[3]; int typePigment; char texture[20]; int typeNormale; checker *ccr; perlinNoise *pNoise; perlinNoise *pNormale; textureMapper *mapper; }; /* les parametres pour la lecture de la scene*/ lecteurSym ls; char nomFich[50]; char ch[30]; int code; void lireScene (); void lireBloc (); void lireCamera (double *fov,int *typeProjection,double * projectionS, double *position, double *lookAt); void lireGlobalSetting (int *mtl, int *aa, double *aaT, double *softS, int *nbRO, int *width, int *height); void lireLightSource (double *position,double * direction, double *couleur, int *typeLum, double *c1, double *c2, double *c3); void lireBackground (double *couleur); void lireModifier (struct MODIFIER *m); void lireSphere (double *rayon, struct MODIFIER *m); void lirePlan (struct MODIFIER *m); void lireCylindre (double *rayon, double *longueur, struct MODIFIER *m); void lireCone (double *rayon, double *rayon2, double *longueur, struct MODIFIER *m); void lireBox (double *cote, struct MODIFIER *m); void lireTriangle (double *p1, double *p2, double *p3, struct MODIFIER *m); void lireParallelogram (double *p1, double *p2, double *p3, struct MODIFIER *m); void lireTorus (double *minusR, double *majorR, struct MODIFIER *m); void lirePyramid (double base1[3], double base2[3], double base3[3], double sommet[3], struct MODIFIER *m); void lireCubeTroue (struct MODIFIER *m); void lireTransform (struct MODIFIER *m); void lirePigment (struct MODIFIER *m); void lireTexture (struct MODIFIER *m); void lireChecker (struct MODIFIER *m); void lirePerlin (struct MODIFIER *m, int type); void lireColorMap (struct MODIFIER *m); void lireNormal (struct MODIFIER *m); void lireFinish (struct MODIFIER *m); void lireNombreFloat (double *n); void lireNombreInt (int *n); void lireTriplet (double *n1, double *n2, double *n3); void lireChaine (char *c); void afficherErreur (char *libelle); /* la scene a lire */ scene *s; /* les parametres de la camera */ camera *c; double fov; double lookAt[4]; double posCam[4]; int typeProjection; double projS; /* parametres background */ double coulBg[3]; /* parametres lumiere */ lumiereDirectionnelle *ld; lumierePonctuelle * lp; lumiereAmbiante * la; double posLum[4]; double dirLum[4]; double coulLum[3]; int typeLum; double c1, c2, c3; /* parametres global_setting */ int maxTraceLevel; int antialiasing; double AAThreshold; int outputHeight; int outputWidth; double softShadow ; int nbRayonsOmbres; /* parametres pour les objets */ struct MODIFIER m; double rayon, rayon2; double longueur; double cote; double p1[4], p2[4], p3[4], p4[4]; double base1[3], base2[3], base3[3], base4[3]; double sommet[3]; void initParametres (); void setModifier (objet * o, struct MODIFIER m); /* parametre de transformation objet*/ double scale[3]; double rotate[3]; double translate[3]; /* parametre de transformation pigment*/ double scalePm[3]; double rotatePm[3]; double translatePm[3]; /* parametre de transformation normale*/ double scaleN[3]; double rotateN[3]; double translateN[3]; transformer * trans; /* parametres pour le bruit de perlin */ double alpha; double beta; int octave; double colorMap[100][3]; double range[100]; double intensite; enum { PIGMENT, NORMAL }; /* parametres pour le pigment checker */ double size; double couleur1[3], couleur2[3]; /* parametres pour la texture */ int freq; /* les objets */ sphere *laSphere; plan *lePlan; cylindre *leCylindre; cone *leCone; box *laBox; triangle *leTriangle; tore *leTore; cubeTroue *leCubeTroue; parallelogram *leParallelogram; pyramid3 *laPyramid3; pyramid4 *laPyramid4; public: lecteurScene (char nomFich[]); scene *getScene (); }; #endif // __LECTEURSCENE__ Site/sources/lecteurSym.cc0100755000000000000000000002143507310142130014606 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 20/05/2001 */ /* */ /* Commentaires : permet de lire un fichier symboles par symgoles */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "lecteurSym.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// lecteurSym::lecteurSym (char nomFich[]): lc (nomFich) { symboleSuivant (); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurSym::symboleSuivant () { char c = ' '; bool commentaires = false; while (c != '*' && (lc.peek () == ' ') || (lc.peek () == '\n') || (lc.peek () == '\t') || (lc.peek () == '#' || commentaires)) { if (lc.peek () == '#') commentaires = true; if (commentaires && lc.peek () == '\n') commentaires = false; lc.get (c); } if (c == '*') code = FIN; else { if (isdigit (lc.peek ()) || lc.peek () == '-') lireNombre (); else if (isalpha (lc.peek ())) lireMot (); else lireSpecial (); } /* if (c=='*') cout << "\t# fin" << endl; else cout << "\t# " << ch << endl; */ } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurSym::lireNombre () { int nbCar = 0; bool decimal = false; do { lc.get (ch[nbCar++]); if (ch[nbCar - 1] == '.') decimal = true; } while ((isdigit (lc.peek ()) || (lc.peek () == '.' && !decimal))); code = NOMBRE; ch[nbCar] = '\0'; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurSym::lireMot () { int nbCar = 0; char c; do { lc.get (ch[nbCar++]); ch[nbCar - 1] = toupper (ch[nbCar - 1]); } while (lc.peek () != '\n' && lc.peek () != ' ' && lc.peek () != '\t' && (lc.peek () == '_' || lc.peek () == '.' || isalpha (lc.peek ()) || isdigit (lc.peek ()))); ch[nbCar] = '\0'; if (!strcmp (ch, "CAMERA")) code = CAMERA; else if (!strcmp (ch, "BACKGROUND")) code = BACKGROUND; else if (!strcmp (ch, "LIGHT_SOURCE")) code = LIGHT_SOURCE; else if (!strcmp (ch, "GLOBAL_SETTING")) code = GLOBAL_SETTING; else if (!strcmp (ch, "SPHERE")) code = SPHERE; else if (!strcmp (ch, "CUBE_TROUE")) code = CUBE_TROUE; else if (!strcmp (ch, "PLAN")) code = PLAN; else if (!strcmp (ch, "CYLINDRE")) code = CYLINDRE; else if (!strcmp (ch, "CONE")) code = CONE; else if (!strcmp (ch, "BOX")) code = BOX; else if (!strcmp (ch, "TRIANGLE")) code = TRIANGLE; else if (!strcmp (ch, "PARALLELOGRAM")) code = PARALLELOGRAM; else if (!strcmp (ch, "TORUS")) code = TORUS; else if (!strcmp (ch, "PYRAMID3")) code = PYRAMID3; else if (!strcmp (ch, "PYRAMID4")) code = PYRAMID4; else if (!strcmp (ch, "LOCATION")) code = LOCATION; else if (!strcmp (ch, "DIRECTION")) code = DIRECTION; else if (!strcmp (ch, "LOOK_AT")) code = LOOK_AT; else if (!strcmp (ch, "FIELD_OF_VIEW")) code = FIELD_OF_VIEW; else if (!strcmp (ch, "PROJECTION_SIZE")) code = PROJECTION_SIZE; else if (!strcmp (ch, "COLOR")) code = COLOR; else if (!strcmp (ch, "ATTENUATION")) code = ATTENUATION; else if (!strcmp (ch, "TEXTURE")) code = TEXTURE; else if (!strcmp (ch, "MAX_TRACE_LEVEL")) code = MAX_TRACE_LEVEL; else if (!strcmp (ch, "OUTPUT_HEIGHT")) code = OUTPUT_HEIGHT; else if (!strcmp (ch, "OUTPUT_WIDTH")) code = OUTPUT_WIDTH; else if (!strcmp (ch, "ANTIALIASING")) code = ANTIALIASING; else if (!strcmp (ch, "AA_THRESHOLD")) code = AA_THRESHOLD; else if (!strcmp (ch, "ROTATE")) code = ROTATE; else if (!strcmp (ch, "TRANSLATE")) code = TRANSLATE; else if (!strcmp (ch, "SCALE")) code = SCALE; else if (!strcmp (ch, "FINISH")) code = FINISH; else if (!strcmp (ch, "AMBIENT")) code = AMBIENT; else if (!strcmp (ch, "DIFFUSE")) code = DIFFUSE; else if (!strcmp (ch, "SPECULAR")) code = SPECULAR; else if (!strcmp (ch, "SHININESS")) code = SHININESS; else if (!strcmp (ch, "TRANSPARENCY")) code = TRANSPARENCY; else if (!strcmp (ch, "IOR")) code = IOR; else if (!strcmp (ch, "REFLECTION")) code = REFLECTION; else if (!strcmp (ch, "TRANSFORM")) code = TRANSFORM; else if (!strcmp (ch, "PIGMENT")) code = PIGMENT; else if (!strcmp (ch, "NORMAL")) code = NORMAL; else if (!strcmp (ch, "AMBIENT")) code = AMBIENT; else if (!strcmp (ch, "DIRECTIONNAL")) code = DIRECTIONNAL; else if (!strcmp (ch, "POINT_SOURCE")) code = POINT_SOURCE; else if (!strcmp (ch, "CHECKER")) code = CHECKER; else if (!strcmp (ch, "PERLIN")) code = PERLIN; else if (!strcmp (ch, "MARBLE")) code = MARBLE; else if (!strcmp (ch, "WOOD")) code = WOOD; else if (!strcmp (ch, "COLOR_MAP")) code = COLOR_MAP; else if (!strcmp (ch, "ATTENUATION")) code = ATTENUATION; else if (!strcmp (ch, "SOFT_SHADOW")) code = SOFT_SHADOW; else if (!strcmp (ch, "SHADOW_RAY")) code = SHADOW_RAY; else if (!strcmp (ch, "PERSPECTIVE")) code = PERSPECTIVE; else if (!strcmp (ch, "ORTHOGRAPHIC")) code = ORTHOGRAPHIC; else code = CHAINE; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lecteurSym::lireSpecial () { int nbCar = 0; switch (lc.peek ()) { case '{': lc.get (ch[nbCar++]); code = ACCOLADE_OUVRANTE; break; case '}': lc.get (ch[nbCar++]); code = ACCOLADE_FERMANTE; break; case '[': lc.get (ch[nbCar++]); code = CROCHET_OUVRANT; break; case ']': lc.get (ch[nbCar++]); code = CROCHET_FERMANT; break; case ',': lc.get (ch[nbCar++]); code = VIRGULE; break; case '<': lc.get (ch[nbCar++]); code = CHEVRON_OUVRANT; break; case '>': lc.get (ch[nbCar++]); code = CHEVRON_FERMANT; break; default: code = INDEFINI; break; } ch[nbCar] = '\0'; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// bool lecteurSym::sauterSymbole (int valCode) { if (code == valCode) { symboleSuivant (); return true; } else return false; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// int lecteurSym::codeSymboleCourant () { return code; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// char * lecteurSym::chaineSymboleCourant () { return ch; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// int lecteurSym::getNumeroLigneCourante () { return lc.getNumeroLigneCourante (); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// char * lecteurSym::getLigneCourante () { return lc.getLigneCourante (); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/lecteurSym.h0100755000000000000000000000301007310142130014435 0ustar rootroot#if !defined(__LECTEURSYM__) #define __LECTEURSYM__ #include #include #include #include "lecteurCar.h" class lecteurSym { private: lecteurCar lc; char ch[30]; int code; void lireNombre (); void lireSpecial (); void lireMot (); public: lecteurSym (char nomFich[]); void symboleSuivant (); bool sauterSymbole (int valCode); int codeSymboleCourant (); char *chaineSymboleCourant (); int getNumeroLigneCourante (); char *getLigneCourante (); enum { INDEFINI, FIN, ACCOLADE_OUVRANTE, ACCOLADE_FERMANTE, CROCHET_OUVRANT, CROCHET_FERMANT, CHEVRON_OUVRANT, CHEVRON_FERMANT, VIRGULE, TRIPLET, NOMBRE, CHAINE, CAMERA, BACKGROUND, LIGHT_SOURCE, GLOBAL_SETTING, SPHERE, CUBE_TROUE, PLAN, CYLINDRE, CONE, BOX, TRIANGLE, PARALLELOGRAM, TORUS, PYRAMID3, PYRAMID4, LOCATION, DIRECTION, LOOK_AT, FIELD_OF_VIEW, PROJECTION_SIZE, COLOR, ATTENUATION, TEXTURE, MAX_TRACE_LEVEL, OUTPUT_HEIGHT, OUTPUT_WIDTH, ANTIALIASING, AA_THRESHOLD, ROTATE, TRANSLATE, SCALE, FINISH, AMBIENT, DIFFUSE, SPECULAR, SHININESS, TRANSPARENCY, IOR, REFLECTION, TRANSFORM, PIGMENT, NORMAL, DIRECTIONNAL, POINT_SOURCE, CHECKER, PERLIN, WOOD, MARBLE, COLOR_MAP, SOFT_SHADOW, SHADOW_RAY, PERSPECTIVE, ORTHOGRAPHIC }; }; #endif // __LECTEURSYM__ Site/sources/lumiere.cc0100755000000000000000000000530707310142130014114 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 11/05/2001 */ /* */ /* Commentaires : classe abstraite pour les lumieres */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "lumiere.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// lumiere::lumiere (double *couleur) { memcpy (this->couleur, couleur, 3 * sizeof (double)); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// lumiere::~lumiere () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lumiere::getCouleur (double coul[3]) { memcpy(coul,couleur,3*sizeof(double)); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lumiere::normaliser (double *p) { double d=0; for (int i = 0; i < 3; i++) d += p[i] * p[i]; d = sqrt (d); for (int i = 0; i < 3; i++) p[i] /= d; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double lumiere::produitScalaire (double p1[4], double p2[4]){ double ps = 0; for (int i = 0; i < 3; i++) ps += p1[i] * p2[i]; return ps; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/lumiere.h0100755000000000000000000000131007310142130013744 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 11/05/2001 */ /* */ /********************************************/ #if !defined(__LUMIERE__) #define __LUMIERE__ #include #include #include #include "objet.h" #include "rayon.h" class lumiere { protected: double couleur[3]; void normaliser(double v[4]); double produitScalaire (double p1[4], double p2[4]); public: lumiere (double *couleur); virtual ~ lumiere (); void getCouleur (double coul[3]); }; #endif // __LUMIERE__ Site/sources/lumiereAmbiante.cc0100755000000000000000000000341107310142130015547 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 11/05/2001 */ /* */ /* Commentaires : defini les lumieres ambiante par une intensite lumineuse */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "lumiereAmbiante.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// lumiereAmbiante::lumiereAmbiante (double *couleur):lumiere(couleur) { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// lumiereAmbiante::~lumiereAmbiante () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/lumiereAmbiante.h0100755000000000000000000000103507310142130015411 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 6/06/2001 */ /* */ /********************************************/ #if !defined(__LUMIEREAMBIANTE__) #define __LUMIEREAMBIANTE__ #include "lumiere.h" class lumiereAmbiante :public lumiere { public: lumiereAmbiante (double *couleur); virtual ~ lumiereAmbiante (); }; #endif // __LUMIEREAMBIANTE__ Site/sources/lumiereDirectionnelle.cc0100755000000000000000000000650607310142130016777 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 6/06/2001 */ /* */ /* Commentaires : defini les lumieres directionnelles par une intensite lumineuse */ /* ainsi qu'une direction */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "lumiereDirectionnelle.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// lumiereDirectionnelle::lumiereDirectionnelle (double *direction, double *couleur):lumiere(couleur) { memcpy (this->direction, direction, 4 * sizeof (double)); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// lumiereDirectionnelle::~lumiereDirectionnelle () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lumiereDirectionnelle::getDirection (double dir[4]) { memcpy(dir,direction,4*sizeof(double)); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lumiereDirectionnelle::getLuminosite(rayon *r, double p[4], double n[4],objet * o,double lumino[3]){ double reflechi[4];// = (double *) malloc (4 * sizeof (double)); double dist; double ps1, ps2; double coulObj[3]; double dir[4]; o->getCouleur(p,coulObj); for(int i=0;i<3;i++) dir[i]= -direction[i]; normaliser(dir); ps1 = produitScalaire (n, dir); for (int i = 0; i < 3; i++) reflechi[i] = 2 * ps1 * n[i] - dir[i]; reflechi[3] = 0; normaliser (reflechi); ps2 = - r->produitScalaire (reflechi); if (ps1 > 0.0) { if (ps2 > 0.0) { for (int i = 0; i < 3; i++) lumino[i] = couleur[i] * (o->getRhoD() * coulObj[i] * ps1 + o->getRhoS() * pow (ps2, o->getShininess())); } else { for (int i = 0; i < 3; i++) lumino[i] = couleur[i] * (o->getRhoD() * coulObj[i] * ps1); } } else lumino[0] = lumino[1] = lumino[2] = 0.0; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/lumiereDirectionnelle.h0100755000000000000000000000150107310142130016627 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 6/06/2001 */ /* */ /********************************************/ #if !defined(__LUMIEREDIRECTIONNELLE__) #define __LUMIEREDIRECTIONNELLE__ #include "lumiere.h" class lumiereDirectionnelle:public lumiere { protected: double direction[4]; public: lumiereDirectionnelle (double *direction, double *couleur); virtual ~ lumiereDirectionnelle (); void getDirection (double dir[4]); /* calcule la luminosite au point p selon le rayon r et la lumiere l */ void getLuminosite(rayon* r, double p[4], double n[4],objet * o,double lumino[3]); }; #endif // __LUMIEREDIRECTIONNELLE__ Site/sources/lumierePonctuelle.cc0100755000000000000000000001155007310142130016144 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 6/06/2001 */ /* */ /* Commentaires : defini les lumieres ponctuelles par une intensite lumineuse */ /* ainsi qu'une position dans l'espace */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "lumierePonctuelle.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// lumierePonctuelle::lumierePonctuelle (double *position, double *couleur):lumiere(couleur) { memcpy (this->position, position, 4 * sizeof (double)); for(int i=0;i<4;i++) this->position[i]/=this->position[3]; c1=1.0; c2=0.0; c3=0.0; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// lumierePonctuelle::~lumierePonctuelle () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lumierePonctuelle::getPosition (double pos[4]) { memcpy(pos,position,4*sizeof(double)); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lumierePonctuelle::setAttenuation(double c1,double c2,double c3){ this->c1=c1; this->c2=c2; this->c3=c3; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double lumierePonctuelle::getC1 () { return c1; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double lumierePonctuelle::getC2 (){ return c2; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double lumierePonctuelle::getC3 (){ return c3; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void lumierePonctuelle::getLuminosite(rayon* r, double p[4], double n[4],objet * o,double lumino[3]){ double lp[4];// = (double *) malloc (4 * sizeof (double)); double reflechi[4];// = (double *) malloc (4 * sizeof (double)); double dist; double ps1, ps2; float fd; double coulObj[3]; o->getCouleur(p,coulObj); for (int i = 0; i < 3; i++) lp[i] = position[i] / position[3] - p[i] / p[3]; lp[3] = 0; normaliser(lp); ps1 = produitScalaire (n, lp); for (int i = 0; i < 3; i++) reflechi[i] = 2 * ps1 * n[i] - lp[i]; reflechi[3] = 0; normaliser (reflechi); ps2 = - r->produitScalaire (reflechi); for (int i = 0; i < 4; i++){ p[i] = p[i] / p[3]; position[i] = position[i] / position[3]; } dist = 0; for (int i = 0; i < 3; i++) dist += (p[i] - position[i]) * (position[i] - position[i]); dist= sqrt (dist); if (c1 + c2 * dist + c3 * dist * dist == 0 || 1.0 / (c1 + c2 * dist + c3 * dist * dist) > 1) fd = 1; else fd = 1.0 / (c1 + c2 * dist + c3 * dist * dist); if (ps1 > 0.0) { if (ps2 > 0.0) { for (int i = 0; i < 3; i++) lumino[i] = fd * couleur[i] * (o->getRhoD() * coulObj[i] * ps1 + o->getRhoS() * pow (ps2, o->getShininess())); } else { for (int i = 0; i < 3; i++) lumino[i] = fd * couleur[i] * (o->getRhoD() * coulObj[i] * ps1); } } else lumino[0] = lumino[1] = lumino[2] = 0.0; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/lumierePonctuelle.h0100755000000000000000000000164007310142130016005 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 6/06/2001 */ /* */ /********************************************/ #if !defined(__LUMIEREPONCTUELLE__) #define __LUMIEREPONCTUELLE__ #include "lumiere.h" class lumierePonctuelle : public lumiere { protected: double position[4]; double c1, c2, c3; public: lumierePonctuelle (double *position, double *couleur); virtual ~ lumierePonctuelle (); void setAttenuation(double c1,double c2,double c3); double getC1 (); double getC2 (); double getC3 (); /* calcule la luminosite au point p selon le rayon r et la lumiere l */ void getLuminosite(rayon *r, double p[4], double n[4],objet * o,double lumino[3]); void getPosition (double pos[4]); }; #endif // __LUMIEREPONCTUELLE__ Site/sources/objet.cc0100755000000000000000000002774007310142130013562 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 10/05/2001 */ /* */ /* Commentaires : classe abstraite pour les objets geometrique */ /* permet de calculer le rayon reflechi et transmis a un endroit de la */ /* forme, de determiner la couleur propre en un point donne ... */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "objet.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// objet::objet () { epsilon = 0.001; rhoA = 0.5; rhoD = 0.5; rhoS = 0.5; rhoR = 0.0; rhoT = 0.0; n = 1.0; shininess = 1.0; couleur[0] = couleur[1] = couleur[2] = 1.0; typePigment = COULEUR; typeNormale = NO; mapper = NULL; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// objet::~objet () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double objet::getIndiceRefraction () { return n; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::setEpsilon (double e) { epsilon = e; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double objet::getEpsilon () { return epsilon; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double objet::getRhoA () { return rhoA; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::setRhoA (double v) { rhoA = v; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double objet::getRhoD () { return rhoD; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::setRhoD (double v) { rhoD = v; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double objet::getRhoS () { return rhoS; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::setRhoS (double v) { rhoS = v; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double objet::getRhoT () { return rhoT; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::setRhoT (double v) { rhoT = v; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double objet::getRhoR () { return rhoR; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::setRhoR (double v) { rhoR = v; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double objet::getN () { return n; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::setN (double v) { n = v; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double objet::getShininess () { return shininess; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::setShininess (double v) { shininess = v; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::setTypePigment (int t) { typePigment = t; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::setTypeNormale (int type) { typeNormale = type; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double objet::distance (double *p1, double *p2) { double d; for (int i = 0; i < 4; i++) { p1[i] = p1[i] / p1[3]; p2[i] = p2[i] / p2[3]; } d = 0; for (int i = 0; i < 3; i++) d += (p2[i] - p1[i]) * (p2[i] - p1[i]); d = sqrt (d); return d; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::setTransformer (transformer * trans) { this->trans=trans; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// bool objet::rayonTransmis (rayon *r, double i[4], double normale[4], rayon *rayonTransmis) { double deviation; double thetat, thetai; double coef; double ps; double dir[4]; if (rhoT == 0) return false; else { rayonTransmis->setOrigin(i); /* si n=1.0 ceci revient a dire que l'objet est creux => r est toujours "dehors" */ if (n == 1.0) rayonTransmis->setDedans(false); else rayonTransmis->swapDedansDehors(); if (r->estDedans()) deviation = n; else deviation = 1.0 / n; trans->normaliser (normale); ps = r->produitScalaire (normale); thetai = acos (ps); thetat = asin (deviation * sin (thetai)); coef = cos (thetat) + deviation * ps; r->getDirection(dir); for (int ii = 0; ii < 3; ii++) dir[ii] = deviation * dir[ii] - coef * normale[ii]; dir[3] = 0; rayonTransmis->setDirection(dir); return true; } } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// bool objet::rayonReflechi (rayon *r, double i[4], double normale[4],rayon * rayonReflechi) { double dir[4]; if (rhoR == 0) return false; else { rayonReflechi->setOrigin(i); rayonReflechi->setDedans(r->estDedans()); r->getDirection(dir); for (int j = 0; j < 3; j++) dir[j]= dir[j] - 2 * r->produitScalaire(normale) * normale[j]; dir[3]=0; rayonReflechi->setDirection(dir); return true; } } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double objet::intersection (rayon *r, double i[4]) { return MAXDOUBLE; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::normale (double p[4], rayon* r, double laNormale[4]) { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::setCouleur (double c[3]) { memcpy (couleur, c, 3 * sizeof (double)); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::setPerlin (perlinNoise * pNoise) { pColor = pNoise; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::setMapper (textureMapper * mp) { mapper = mp; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::setChecker (checker * ccr) { this->ccr = ccr; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::setPerlinNormale (perlinNoise * pNoise) { pNormale = pNoise; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::getCouleur (double p[4], double coulObj[3]) { double p2[4]; switch (typePigment) { case COULEUR: for (int i = 0; i < 3; i++) coulObj[i] = (1 - rhoT) * couleur[i]; break; case CHECKER: ccr->getChecker (p, coulObj); break; case PERLIN: pColor->PerlinColor (p, coulObj); break; case TEXTURE_MAPPING: trans->doInvTransformation(p2,p); mapper->getMapping (p2, coulObj); break; default: break; } } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void objet::corrigerNormale (double n[4], double p[4],rayon* r) { double temp[4]; double rd[4]; double tmp[4]; double ps; if (typeNormale == PERLIN) pNormale->PerlinNormale (p, n); r->getDirection(tmp); trans->doInvTransformation(rd,tmp); ps = 0; for (int i = 0; i < 3; i++) ps += n[i] * rd[i]; if (ps > 0.0) { temp[0] = -n[0]; temp[1] = -n[1]; temp[2] = -n[2]; temp[3] = 0; } else { temp[0] = n[0]; temp[1] = n[1]; temp[2] = n[2]; temp[3] = 0; } trans->doTransformation(n,temp); trans->normaliser (n); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/objet.h0100755000000000000000000000567607310142130013430 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 10/05/2001 */ /* */ /********************************************/ #if !defined(__OBJET__) #define __OBJET__ #include #include #include #include #include #include "rayon.h" #include "perlinNoise.h" #include "checker.h" #include "polynomial.h" #include "textureMapper.h" #include "transformer.h" class objet { protected: /* les parametres */ double epsilon; double rhoA; /* coefficient attenuation lumiere ambiente */ double rhoD; /* coefficient attenuation lumiere directionnelle */ double rhoS; /* coefficient attenuation lumiere speculaire */ double rhoR; /* coefficient de reflection */ double rhoT; /* 1 - rhoR */ double n; /* indice de refraction de l'objet */ double shininess; /* brillance */ double couleur[3]; textureMapper *mapper; checker *ccr; perlinNoise *pColor; perlinNoise *pNormale; transformer * trans; int typePigment; int typeNormale; double distance (double *p1, double *p2); public: objet (); virtual ~ objet (); void setTransformer (transformer * trans); void setEpsilon (double e); void setRhoA (double v); void setRhoD (double v); void setRhoR (double v); void setRhoS (double v); void setRhoT (double v); void setN (double v); void setShininess (double v); void setTypePigment (int t); void setCouleur (double c[3]); void setChecker (checker * c); void setPerlin (perlinNoise * pNoise); void setPerlinNormale (perlinNoise * pNoise); void setTypeNormale (int type); void setMapper (textureMapper * mp); double getEpsilon (); double getRhoA (); double getRhoD (); double getRhoR (); double getRhoS (); double getRhoT (); double getN (); double getShininess (); void getCouleur (double p[4], double coulObj[3]); void getChecker (double p[4], double coulObj[3]); double getIndiceRefraction (); /* calcule le rayon transmis selon le rayon incident et la normale l'objet */ bool rayonTransmis (rayon* r, double i[4], double normale[4], rayon *rayonTransmis); /* calcule le rayon reflechi selon le rayon incident et la normale l'objet */ bool rayonReflechi (rayon *r, double i[4], double normale[4], rayon *rayonReflechi); /* calcule l'intersection entre le rayon r et l'objet et renvoie la distance entre le debut du rayon et i */ virtual double intersection (rayon* r, double i[4]); /* calcule la normale en p l'objet */ virtual void normale (double p[4],rayon* r, double laNormale[4]); /* remet la normale dans le bon sens, la normalise et l'altere si il y a du bump mapping */ void corrigerNormale (double n[4], double p[4], rayon *r); enum {COULEUR,TEXTURE_MAPPING,PERLIN,CHECKER,NO}; }; #endif // __OBJET__ Site/sources/ocean.ray0100755000000000000000000000224707311056560013761 0ustar rootrootglobal_setting { max_trace_level 3 output_width 320 output_height 240 #antialiasing 10 #aa_threshold 0.2 } background{ color <0.2,0.2,0.8> } sphere{ 2.5 finish { ambient 0.3 diffuse 0.3 specular 0.9 shininess 50 reflection 0.5 } transform { translate <-1,0,4> } pigment{ color <1.0,0.0,0.0> } } plan { finish { ambient 0.2 diffuse 0.4 specular 0.8 shininess 40 transparency 0.0 reflection 0.7 } transform { translate <-2,0,0> } pigment{ color <0.1,0.1,0.5> } normal { perlin { 0.4,0.4,1,3 scale <15,5,15> } } } plan { finish { ambient 0.2 diffuse 0.4 specular 0.0 shininess 0 transparency 0.5 } transform { translate <1000,0,0> } pigment{ perlin { 0.5,0.5,1,1 color_map { [0.0 color <1.0,1.0,1.0>] [0.1 color <0.2,0.2,0.8>] [0.2 color <0.0,0.0,0.5>] [1.0 color <1.0,1.0,1.0>] } } scale <0.001,0.001,0.001> } } light_source { location <3,-5,0> color <1.0,1.0,1.0> } light_source { location <2,1,0> color <1.0,1.0,1.0> } light_source { AMBIENT color <1,1,1> } camera{ location <0.2,0,-0.1> look_at <0,0,1> field_of_view 130 } Site/sources/parallelogram.cc0100755000000000000000000001055707310142130015277 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 14/05/2001 */ /* */ /* Commentaires : defini le parallelogramme par trois point */ /* le quatrieme est determiner a partir du premier p1 point des deux */ /* vecteurs p1p2 et p1p3 */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "parallelogram.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// parallelogram::parallelogram (double p1[4], double p2[4], double p3[4]): objet () { memcpy (this->p1, p1, 4 * sizeof (double)); memcpy (this->p2, p2, 4 * sizeof (double)); memcpy (this->p3, p3, 4 * sizeof (double)); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// parallelogram::~parallelogram () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double parallelogram::intersection (rayon * r, double *i) { double dist; double p[4]; double pos[4]; double dir[4]; double pos2[4]; double dir2[4]; r->getOrigin(pos); r->getDirection(dir); trans->doInvTransformation(pos2,pos); trans->doInvTransformation(dir2,dir); double x1 = p2[0] - p1[0]; double y1 = p2[1] - p1[1]; double z1 = p2[2] - p1[2]; double x2 = p3[0] - p1[0]; double y2 = p3[1] - p1[1]; double z2 = p3[2] - p1[2]; double x3 = dir2[0]; double y3 = dir2[1]; double z3 = dir2[2]; double xp = pos2[0]; double yp = pos2[1]; double zp = pos2[2]; double dx = xp - p1[0]; double dy = yp - p1[1]; double dz = zp - p1[2]; double D = z1 * y3 * x2 - y1 * z3 * x2 - x3 * z1 * y2 - y3 * x1 * z2 + z3 * x1 * y2 + x3 * y1 * z2; double u = (-y3 * dx * z2 + y3 * x2 * dz - x2 * z3 * dy + dx * z3 * y2 - x3 * y2 * dz + x3 * dy * z2) / D; double v = (x3 * y1 * dz + z3 * x1 * dy - y1 * z3 * dx - x3 * z1 * dy - y3 * x1 * dz + z1 * y3 * dx) / D; double t = (dx * z1 * y2 - dx * y1 * z2 - x1 * y2 * dz + x1 * dy * z2 + x2 * y1 * dz - x2 * z1 * dy) / D; if (fabs (D) > epsilon && u > epsilon && v > epsilon && u <= 1 + epsilon && v <= 1 + epsilon) { p[0] = pos2[0] + dir2[0] * t; p[1] = pos2[1] + dir2[1] * t; p[2] = pos2[2] + dir2[2] * t; p[3] = 1.0; dist = distance (p, pos2); trans->doTransformation(i,p); } else dist = MAXDOUBLE; return dist; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void parallelogram::normale (double p[4],rayon * r, double laNormale[4]) { double pt[4]; double v1[4] = { p2[0] - p1[0], p2[1] - p1[1], p2[2] - p1[2] }; double v2[4] = { p3[0] - p1[0], p3[1] - p1[1], p3[2] - p1[2] }; trans->doInvTransformation(pt,p); laNormale[0] = v1[1] * v2[2] - v1[2] * v2[1]; laNormale[1] = v2[0] * v1[2] - v1[0] * v2[2]; laNormale[2] = v1[0] * v2[1] - v1[1] * v2[0]; laNormale[3]=0.0; corrigerNormale (laNormale, pt, r); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/parallelogram.h0100755000000000000000000000161507310142130015134 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 1/06/2001 */ /* */ /********************************************/ #if !defined(__PARALLELOGRAM__) #define __PARALLELOGRAM__ #include "objet.h" class parallelogram:public objet { private: double p1[4]; double p2[4]; double p3[4]; double p4[4]; public: parallelogram (double p1[4], double p2[4], double p3[4]); virtual ~ parallelogram (); /* calcule l'intersection i entre le rayon r et le parallelogram et renvoie la distance entre le debut du rayon et i */ double intersection (rayon* r, double i[4]); /* calcule la normale en p au parallelogram */ void normale (double p[4],rayon* r, double laNormale[4]); }; #endif // __PARALLELOGRAM__ Site/sources/perlinNoise.cc0100755000000000000000000002446107310142130014743 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 4/06/2001 */ /* */ /* Commentaires : permet de generer un bruit coherent en 3d dimension */ /* de faire un effet bois ou marbre ou simplement bruite en renvoyant */ /* une couleur */ /* de faire du bump mapping procedural */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "perlinNoise.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// perlinNoise::perlinNoise () { start = 1; alpha = 1.0; beta = 1.0; octave = 1; nbCouleurs = 1; colorMap[0][0] = 1.0; colorMap[0][1] = 1.0; colorMap[0][2] = 1.0; range[0] = 0.0; intensite = 10; typePerlin = PERLIN; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// perlinNoise::~perlinNoise () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void perlinNoise::setAlpha (double alpha) { this->alpha = alpha; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void perlinNoise::setBeta (double beta) { this->beta = beta; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void perlinNoise::setOctave (int octave) { this->octave = octave; } void perlinNoise::setTransformer(transformer * trans){ this->trans=trans; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void perlinNoise::setColorMap (int nbCouleurs, double colorMap[100][3], double range[100]) { this->nbCouleurs = nbCouleurs; for (int i = 0; i < nbCouleurs; i++) this->range[i] = range[i]; for (int i = 0; i < nbCouleurs; i++) for (int j = 0; j < 3; j++) this->colorMap[i][j] = colorMap[i][j]; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void perlinNoise::setIntensite (double intensite) { this->intensite = intensite; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void perlinNoise::setWood () { this->typePerlin = WOOD; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void perlinNoise::setMarble () { this->typePerlin = MARBLE; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void perlinNoise::normalize2 (double v[2]) { double s; s = sqrt (v[0] * v[0] + v[1] * v[1]); v[0] = v[0] / s; v[1] = v[1] / s; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void perlinNoise::normalize3 (double v[3]) { double s; s = sqrt (v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); v[0] = v[0] / s; v[1] = v[1] / s; v[2] = v[2] / s; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void perlinNoise::init (void) { int i, j, k; for (i = 0; i < B; i++) { p[i] = i; g1[i] = (double) ((random () % (B + B)) - B) / B; for (j = 0; j < 2; j++) g2[i][j] = (double) ((random () % (B + B)) - B) / B; normalize2 (g2[i]); for (j = 0; j < 3; j++) g3[i][j] = (double) ((random () % (B + B)) - B) / B; normalize3 (g3[i]); } while (--i) { k = p[i]; p[i] = p[j = random () % B]; p[j] = k; } for (i = 0; i < B + 2; i++) { p[B + i] = p[i]; g1[B + i] = g1[i]; for (j = 0; j < 2; j++) g2[B + i][j] = g2[i][j]; for (j = 0; j < 3; j++) g3[B + i][j] = g3[i][j]; } } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double perlinNoise::noise3 (double vec[3]) { int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11; double rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v; int i, j; if (start) { start = 0; init (); } setup (0, bx0, bx1, rx0, rx1); setup (1, by0, by1, ry0, ry1); setup (2, bz0, bz1, rz0, rz1); i = p[bx0]; j = p[bx1]; b00 = p[i + by0]; b10 = p[j + by0]; b01 = p[i + by1]; b11 = p[j + by1]; t = s_curve (rx0); sy = s_curve (ry0); sz = s_curve (rz0); q = g3[b00 + bz0]; u = at3 (rx0, ry0, rz0); q = g3[b10 + bz0]; v = at3 (rx1, ry0, rz0); a = lerp (t, u, v); q = g3[b01 + bz0]; u = at3 (rx0, ry1, rz0); q = g3[b11 + bz0]; v = at3 (rx1, ry1, rz0); b = lerp (t, u, v); c = lerp (sy, a, b); q = g3[b00 + bz1]; u = at3 (rx0, ry0, rz1); q = g3[b10 + bz1]; v = at3 (rx1, ry0, rz1); a = lerp (t, u, v); q = g3[b01 + bz1]; u = at3 (rx0, ry1, rz1); q = g3[b11 + bz1]; v = at3 (rx1, ry1, rz1); b = lerp (t, u, v); d = lerp (sy, a, b); return lerp (sz, c, d); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double perlinNoise::coherentNoise3D (double x, double y, double z) { int i; double val, sum = 0; double p[3], scale = 1; p[0] = x; p[1] = y; p[2] = z; for (i = 0; i < octave; i++) { val = noise3 (p); sum += val / scale; scale *= alpha; p[0] *= beta; p[1] *= beta; p[2] *= beta; } return (sum); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void perlinNoise::PerlinColor (double pt[4], double coulObj[3]) { double p2[3]; int i; double coef; trans->doTransformation(p2,pt); double val = coherentNoise3D (p2[0], p2[1], p2[2]); val = intensite * val; // normal 0.4 0.2 1 <5,5,5> switch (typePerlin) { case PERLIN: // normal 0.4 0.2 1 <5,5,5> if (val < -1) val = -0.99; if (val > 1) val = 0.99; break; case MARBLE: // marbre 0.3 0.3 4 <5,5,5> val = cos (p2[1] + val); break; case WOOD: //bois 0.4 0.2 1 <1,1,1> val = val * 20; val = val - (int) val; break; default: break; } // tous val = (1.0 + val) / 2.0; i = 0; while (i < nbCouleurs && range[i] <= val) i++; /* interpolation */ coef = 1.0 / (range[i] - range[i - 1]); for (int j = 0; j < 3; j++) coulObj[j] = colorMap[i - 1][j] * (val - range[i - 1]) * coef + colorMap[i][j] * (range[i] - val) * coef; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void perlinNoise::PerlinNormale (double pt[4], double normale[4]) { double p2[3]; double v[3][2]; double delta; trans->doTransformation(p2,pt); delta = 0.01; /* perlin noise */ v[0][0] = coherentNoise3D (p2[0] + delta, p2[1], p2[2]); v[0][1] = coherentNoise3D (p2[0] - delta, p2[1], p2[2]); v[1][0] = coherentNoise3D (p2[0], p2[1] + delta, p2[2]); v[1][1] = coherentNoise3D (p2[0], p2[1] - delta, p2[2]); v[2][0] = coherentNoise3D (p2[0], p2[1], p2[2] + delta); v[2][1] = coherentNoise3D (p2[0], p2[1], p2[2] - delta); // normal 0.4 0.2 1 <5,5,5> for (int i = 0; i < 3; i++) { v[i][0] = intensite * v[i][0]; v[i][1] = intensite * v[i][1]; } // normal 0.4 0.2 1 <5,5,5> switch (typePerlin) { case PERLIN: // normal 0.4 0.2 1 <5,5,5> for (int i = 0; i < 3; i++) { v[i][0] = intensite * v[i][0]; v[i][1] = intensite * v[i][1]; } break; case MARBLE: // marbre 0.3 0.3 4 <5,5,5> for (int i = 0; i < 3; i++) { v[i][0] = intensite * cos (p2[1] + v[i][0]); v[i][1] = intensite * cos (p2[1] + v[i][1]); } break; case WOOD: //bois 0.4 0.2 1 <1,1,1> for (int i = 0; i < 3; i++) { v[i][0] = v[i][0] * 20; v[i][0] = v[i][0] - (int) v[i][0]; v[i][1] = v[i][1] * 20; v[i][1] = v[i][1] - (int) v[i][1]; v[i][0] = intensite * v[i][0]; v[i][1] = intensite * v[i][1]; } break; default: break; } normale[0] += v[0][0] - v[0][1]; normale[1] += v[1][0] - v[1][1]; normale[2] += v[2][0] - v[2][1]; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/perlinNoise.h0100755000000000000000000000360407310142130014601 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 4/06/2001 */ /* */ /********************************************/ #if !defined(__PERLINNOISE__) #define __PERLINNOISE__ #include #include #include #include "transformer.h" class perlinNoise { private: #define B 0x100 #define BM 0xff #define N 0x1000 #define NP 12 /* 2^N */ #define NM 0xfff #define s_curve(t) ( t * t * (3. - 2. * t) ) #define lerp(t, a, b) ( a + t * (b - a) ) #define setup(i,b0,b1,r0,r1)\ t = vec[i] + N;\ b0 = ((int)t) & BM;\ b1 = (b0+1) & BM;\ r0 = t - (int)t;\ r1 = r0 - 1.; #define at2(rx,ry) ( rx * q[0] + ry * q[1] ) #define at3(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] ) int p[B + B + 2]; double g3[B + B + 2][3]; double g2[B + B + 2][2]; double g1[B + B + 2]; int start; double alpha; double beta; int octave; int nbCouleurs; double colorMap[100][3]; double range[100]; double intensite; int typePerlin; void normalize2 (double v[2]); void normalize3 (double v[3]); void init (void); double noise3 (double vec[3]); double coherentNoise3D (double x, double y, double z); transformer * trans; enum { PERLIN, WOOD, MARBLE }; public: perlinNoise (); virtual ~ perlinNoise (); void setAlpha (double alpha); void setBeta (double beta); void setOctave (int octave); void setColorMap (int nbCouleurs, double colorMap[100][3], double range[100]); void setIntensite (double intensite); void setWood (); void setMarble (); void setTransformer(transformer * trans); void PerlinColor (double pt[4], double coulObj[3]); void PerlinNormale (double pt[4], double normale[4]); }; #endif // __PERLINNOISE__ Site/sources/plan.cc0100755000000000000000000000564507310142130013411 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 14/05/2001 */ /* */ /* Commentaires : defini le plan (xOy) */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "plan.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// plan::plan ():objet () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// plan::~plan () { // free (laNormale); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double plan::intersection (rayon * r, double *i) { double d; double p[4]; double temp[4]; double pos[4]; double dir[4]; double pos2[4]; double dir2[4]; r->getOrigin(pos); r->getDirection(dir); trans->doInvTransformation(pos2,pos); trans->doInvTransformation(dir2,dir); double t; if (dir2[0] != 0) { t = -pos2[0] / dir2[0]; if (t > epsilon) { p[0] = 0.0; p[1] = pos2[1] + dir2[1] * t; p[2] = pos2[2] + dir2[2] * t; p[3] = 1.0; d = distance (p, pos2); trans->doTransformation(i,p); return d; } else return MAXDOUBLE; } else return MAXDOUBLE; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void plan::normale (double *p,rayon *r, double laNormale[4]) { double p2[4]; trans->doInvTransformation(p2,p); laNormale[0] = 1; laNormale[1] = 0; laNormale[2] = 0; laNormale[3] = 0; corrigerNormale (laNormale, p2, r); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/plan.h0100755000000000000000000000131207310142130013236 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 14/05/2001 */ /* */ /********************************************/ #if !defined(__PLAN__) #define __PLAN__ #include "objet.h" class plan:public objet { public: plan (); virtual ~ plan (); /* calcule l'intersection i entre le rayon r et le plan et renvoie la distance entre le debut du rayon et i */ double intersection (rayon *r, double *i); /* calcule la normale en p au plan */ void normale (double *p,rayon * r, double laNormale[4]); }; #endif // __PLAN__ Site/sources/polynomial.cc0100755000000000000000000003150107310157420014640 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 14/05/2001 */ /* */ /* Commentaires : permet de resoudres des equations du degre 1 a 4 */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "polynomial.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #undef EPSILON #define EPSILON 1.0e-10 #define COEFF_LIMIT 1.0e-16 #define FUDGE_FACTOR1 1.0e12 #define FUDGE_FACTOR2 -1.0e-5 #define FUDGE_FACTOR3 1.0e-7 #define TWO_PI 6.283185207179586476925286766560 #define TWO_PI_3 2.0943951023931954923084 #define TWO_PI_43 4.1887902047863909846168 #define MAX_ITERATIONS 50 #define MAXPOW 32 ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Polynomial::Polynomial () { n = 0; coef[0] = 0.0; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// /*! \brief Set the null polynomial member constant. */ Polynomial Polynomial::NullPolynomial (0.0); ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// /*! \brief Evaluates the polynomial, this function is optimized (computations are performed inline) for low degree (cubic and lower) polynomials. */ double Polynomial::Eval (const double &x) { if (n == -1) return 0.0; else if (n == 0) return (coef[0]); else if (n == 1) return (coef[0] + x * coef[1]); else if (n == 2) return (coef[0] + x * (coef[1] + x * coef[2])); else if (n == 3) return (coef[0] + x * (coef[1] + x * (coef[2] + x * coef[3]))); else { double y = coef[n]; for (int i = n - 1; i >= 0; i--) { y *= x; y += coef[i]; } return y; } } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// /*! \brief Check the degree of a polynomial, decreading the degree if higher coefficients are null. */ void Polynomial::Check () { while (n > 0) { if (coef[n] != 0.0) break; n--; } } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// /*! \brief Destructive sum of two polynomials. */ Polynomial & Polynomial::operator += (const Polynomial & u) { if (u.n > n) { for (int i = 0; i <= n; i++) { coef[i] += u[i]; } for (int i = n + 1; i <= u.n; i++) { coef[i] = u[i]; } n = u.n; } else { for (int i = 0; i <= u.n; i++) { coef[i] += u[i]; } } return *this; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// /*! \brief Destructive difference of two polynomials. */ Polynomial & Polynomial::operator -= (const Polynomial & u) { if (u.n > n) { for (int i = 0; i <= n; i++) { coef[i] -= u[i]; } for (int i = n + 1; i <= u.n; i++) { coef[i] = -u[i]; } n = u.n; } else { for (int i = 0; i <= u.n; i++) { coef[i] -= u[i]; } /* for (i=n;i>-1;i--) { if (coef[i]!=0.0) break; } n=i; */ } return *this; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// /*! \brief Scale a polynomial by a real value. If x=0, just set polynomial to null, if x=1, return the polynomial unchanged, otherwize compute. */ Polynomial & Polynomial::operator *= (const double &e) { if (e == 0.0) { n = -1; } else if (e == 1.0) { return *this; } else { for (int i = 0; i <= n; i++) { coef[i] *= e; } } return *this; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Polynomial & Polynomial::operator /= (const double &e) { if (e == 1.0) { return *this; } for (int i = 0; i <= n; i++) { coef[i] /= e; } return *this; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// /*! \brief Multiply a polynomial by a scalar value. Optimizations are provided if scalar is 0.0 or 1.0. */ Polynomial operator *(const Polynomial & u, const double &e) { // Identity if (e == 1.0) { return u; } // Null polynomial else if (e == 0.0) { return Polynomial::NullPolynomial; } else { Polynomial r = u; r *= e; return r; } } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// // Binary operators Polynomial operator + (const Polynomial & u, const Polynomial & v) { Polynomial r = u; r += v; return r; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Polynomial operator - (const Polynomial & u, const Polynomial & v) { Polynomial r = u; r -= v; return r; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Polynomial & Polynomial::operator *= (const Polynomial & u) { Polynomial r = (*this) * u; *this = r; return *this; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Polynomial operator *(const Polynomial & u, const Polynomial & v) { Polynomial r; r.n = u.n + v.n; for (int i = 0; i <= r.n; i++) r.coef[i] = 0.0; for (int i = 0; i <= u.n; i++) for (int j = 0; j <= v.n; j++) r[i + j] += u[i] * v[j]; return r; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// /*! \brief Unary. */ inline Polynomial Polynomial::operator - () const { Polynomial p; p.n = n; for (int i = 0; i <= n; i++) { p[i] = -coef[i]; } return p; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Polynomial operator *(const double &a, const Polynomial & p) { return p * a; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Polynomial operator / (const Polynomial & p, const double &a) { return p * (1.0 / a); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// /*! \brief Solve quadratic equations. This function store the sorted roots in an array and returns the number of roots. */ int Polynomial::SolveQuadratic (double *y) { double d, t, a, b, c; a = coef[2]; b = -coef[1]; c = coef[0]; if (a == 0.0) { if (b == 0.0) return 0; y[0] = y[1] = c / b; return 1; } d = b * b - 4.0 * a * c; if (d < 0.0) return 0; else if (fabs (d) < COEFF_LIMIT) { y[0] = y[1] = 0.5 * b / a; return 1; } d = sqrt (d); t = 0.5 / a; if (t > 0.0) { y[0] = (b - d) * t; y[1] = (b + d) * t; } else { y[0] = (b + d) * t; y[1] = (b - d) * t; } return 2; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// /*! \brief Solve cubic equations. */ int Polynomial::SolveCubic (double *y) { double Q, R, Q3, R2, sQ, d, an, theta; double A2, a1, a2, a3; double a0 = coef[3]; if (fabs (a0) < EPSILON) { return SolveQuadratic (y); } else { if (a0 != 1.0) { a1 = coef[2] / a0; a2 = coef[1] / a0; a3 = coef[0] / a0; } else { a1 = coef[2]; a2 = coef[1]; a3 = coef[0]; } } A2 = a1 * a1; Q = (A2 - 3.0 * a2) / 9.0; R = (a1 * (A2 - 4.5 * a2) + 13.5 * a3) / 27.0; Q3 = Q * Q * Q; R2 = R * R; d = Q3 - R2; an = a1 / 3.0; if (d >= 0.0) { /* Three real roots. */ d = R / sqrt (Q3); theta = acos (d) / 3.0; sQ = -2.0 * sqrt (Q); y[0] = sQ * cos (theta) - an; y[1] = sQ * cos (theta + TWO_PI_3) - an; y[2] = sQ * cos (theta + TWO_PI_43) - an; return 3; } else { sQ = pow (sqrt (R2 - Q3) + fabs (R), 1.0 / 3.0); if (R < 0) { y[0] = (sQ + Q / sQ) - an; } else { y[0] = -(sQ + Q / sQ) - an; } return 1; } } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// /*! \brief Solve a quartic using the method of Francois Vieta (Circa 1735). */ int Polynomial::SolveQuartic (double *results) { double roots[3]; double c12, z, p, q, q1, q2, r, d1, d2; double c0, c1, c2, c3, c4; int i; // See if the high order term has vanished c0 = coef[4]; if (fabs (c0) < COEFF_LIMIT) { return SolveCubic (results); } // See if the constant term has vanished if (fabs (coef[0]) < COEFF_LIMIT) { Polynomial y = Polynomial (coef[4], coef[3], coef[2], coef[1]); return y.SolveCubic (results); } // Make sure the quartic has a leading coefficient of 1.0 if (c0 != 1.0) { c1 = coef[3] / c0; c2 = coef[2] / c0; c3 = coef[1] / c0; c4 = coef[0] / c0; } else { c1 = coef[3]; c2 = coef[2]; c3 = coef[1]; c4 = coef[0]; } // Compute the cubic resolvant c12 = c1 * c1; p = -0.375 * c12 + c2; q = 0.125 * c12 * c1 - 0.5 * c1 * c2 + c3; r = -0.01171875 * c12 * c12 + 0.0625 * c12 * c2 - 0.25 * c1 * c3 + c4; Polynomial cubic; cubic[3] = 1.0; cubic[2] = -0.5 * p; cubic[1] = -r; cubic[0] = 0.5 * r * p - 0.125 * q * q; cubic.n = 3; i = cubic.SolveCubic (roots); if (i > 0) z = roots[0]; else return 0; d1 = 2.0 * z - p; if (d1 < 0.0) { if (d1 > -EPSILON) d1 = 0.0; else return 0; } if (d1 < EPSILON) { d2 = z * z - r; if (d2 < 0.0) return 0; d2 = sqrt (d2); } else { d1 = sqrt (d1); d2 = 0.5 * q / d1; } // Set up useful values for the quadratic factors q1 = d1 * d1; q2 = -0.25 * c1; i = 0; // Solve the first quadratic p = q1 - 4.0 * (z - d2); if (p == 0) results[i++] = -0.5 * d1 - q2; else if (p > 0) { p = sqrt (p); results[i++] = -0.5 * (d1 + p) + q2; results[i++] = -0.5 * (d1 - p) + q2; } // Solve the second quadratic p = q1 - 4.0 * (z + d2); if (p == 0) results[i++] = 0.5 * d1 - q2; else if (p > 0) { p = sqrt (p); results[i++] = 0.5 * (d1 + p) + q2; results[i++] = 0.5 * (d1 - p) + q2; } return i; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/polynomial.h0100755000000000000000000000477407310142130014506 0ustar rootroot// Polynomials // Version 0.99 // Changelog 00.01.11 #ifndef __Polynomial__ #define __Polynomial__ #include #include // Polynomials class Polynomial { protected: int n; double coef[16]; public: static Polynomial NullPolynomial; Polynomial (); ~Polynomial () { } Polynomial (const double &a6, const double &a5, const double &a4, const double &a3, const double &a2, const double &a1, const double &a0) { coef[0] = a0; coef[1] = a1; coef[2] = a2; coef[3] = a3; coef[4] = a4; coef[5] = a5; coef[6] = a6; n = 6; } Polynomial (const double &a, const double &b, const double &c, const double &d, const double &e) { coef[0] = e; coef[1] = d; coef[2] = c; coef[3] = b; coef[4] = a; n = 4; } Polynomial (const double &a, const double &b, const double &c, const double &d) { coef[0] = d; coef[1] = c; coef[2] = b; coef[3] = a; n = 3; } Polynomial (const double &a, const double &b, const double &c) { coef[0] = c; coef[1] = b; coef[2] = a; n = 2; } Polynomial (const double &a, const double &b) { coef[0] = b; coef[1] = a; n = 1; } Polynomial (const double &a) { coef[0] = a; n = 0; } // Access Polynomial class components double &operator[] (int i) { return coef[i]; } const double operator[] (int i) const { return coef[i]; } // Unary operators Polynomial operator + () const { return *this; } Polynomial operator - () const; Polynomial & operator += (const Polynomial &); Polynomial & operator -= (const Polynomial &); Polynomial & operator *= (const Polynomial &); Polynomial & operator *= (const double &); Polynomial & operator /= (const double &); // Binary operators friend Polynomial operator + (const Polynomial &, const Polynomial &); friend Polynomial operator - (const Polynomial &, const Polynomial &); friend Polynomial operator *(const Polynomial &, const Polynomial &); friend Polynomial operator *(const Polynomial &, const double &); friend Polynomial operator *(const double &, const Polynomial &); friend Polynomial operator / (const Polynomial &, const double &); // Evaluates polynomial double Eval (const double &); // Solve int SolveQuadratic (double &, double &); int SolveQuadratic (double *); int SolveCubic (double *); int SolveQuartic (double *); int Solve (double *); int Degree () { return n; } void Check (); }; #endif Site/sources/pyramid3.cc0100755000000000000000000000651407310142130014203 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 4/06/2001 */ /* */ /* Commentaires : defini une pyramide a base triangulaire */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "pyramid3.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// pyramid3::pyramid3(double p1[4],double p2[4],double p3[4],double p4[4]):objet () { transformer *trans; trans=new transformer(); lesFaces[0] = new triangle (p1, p2, p3); lesFaces[1] = new triangle (p1, p2, p4); lesFaces[2] = new triangle (p2, p3, p4); lesFaces[3] = new triangle (p3, p1, p4); for(int i=0;i<4;i++) lesFaces[i]->setTransformer(trans); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// pyramid3::~pyramid3 () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double pyramid3::intersection (rayon * r, double i[4]) { double d, d2; double i2[4], temp[4]; double pos[4]; double dir[4]; double pos2[4]; double dir2[4]; rayon * r2; r->getOrigin(pos); r->getDirection(dir); trans->doInvTransformation(pos2,pos); trans->doInvTransformation(dir2,dir); r2 = new rayon(pos2,dir2); d = lesFaces[0]->intersection (r2, temp); if (dintersection (r2, i2); if (d2 < d) { d = d2; memcpy (temp, i2, 4 * sizeof (double)); faceIntersectee = j; } } trans->doTransformation(i,temp); return d; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void pyramid3::normale (double p[4],rayon * r, double laNormale[4]) { double pt[4]; if (faceIntersectee!=-1) { trans->doInvTransformation(pt,p); lesFaces[faceIntersectee]->normale(pt,r,laNormale); corrigerNormale (laNormale, pt, r); } } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/pyramid3.h0100755000000000000000000000156007310142130014041 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 4/06/2001 */ /* */ /********************************************/ #if !defined(__PYRAMID3__) #define __PYRAMID3__ #include "objet.h" #include "triangle.h" class pyramid3:public objet { private: triangle * lesFaces[4]; int faceIntersectee; public: pyramid3 (double p1[4], double p2[4], double p3[4], double p4[4]); virtual ~ pyramid3 (); /* calcule l'intersection entre le rayon r et l'objet et renvoie la distance entre le debut du rayon et i */ double intersection (rayon * r, double i[4]); /* calcule la normale en p l'objet */ void normale (double p[4],rayon* r, double laNormale[4]); }; #endif // __PYRAMID3__ Site/sources/pyramid4.cc0100755000000000000000000000721107310142130014177 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 4/06/2001 */ /* */ /* Commentaires : defini une pyramide a base parallelepipedique */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "pyramid4.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// pyramid4::pyramid4(double p1[4],double p2[4],double p3[4],double p4[4]):objet () { transformer *trans; trans=new transformer(); double v1[3]={p2[0]-p1[0],p2[1]-p1[1],p2[2]-p1[2]}; double v2[3]={p3[0]-p1[0],p3[1]-p1[1],p3[2]-p1[2]}; double p[4]={p1[0]+v1[0]+v2[0],p1[1]+v1[1]+v2[1],p1[2]+v1[2]+v2[2],1}; base = new parallelogram(p1,p2,p3); lesFaces[0] = new triangle (p1, p2, p4); lesFaces[1] = new triangle (p2, p, p4); lesFaces[2] = new triangle (p, p3, p4); lesFaces[3] = new triangle (p3, p1, p4); for(int i=0;i<4;i++) lesFaces[i]->setTransformer(trans); base->setTransformer(trans); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// pyramid4::~pyramid4 () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double pyramid4::intersection (rayon* r, double i[4]) { double d, d2; double i2[4], temp[4]; double pos[4]; double dir[4]; double pos2[4]; double dir2[4]; rayon * r2; r->getOrigin(pos); r->getDirection(dir); trans->doInvTransformation(pos2,pos); trans->doInvTransformation(dir2,dir); r2 = new rayon(pos2,dir2); d = base->intersection (r2, temp); if (dintersection (r2, i2); if (d2 < d) { d = d2; memcpy (temp, i2, 4 * sizeof (double)); faceIntersectee = j; } } trans->doTransformation(i,temp); return d; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void pyramid4::normale (double p[4],rayon* r, double laNormale[4]) { double pt[4]; if (faceIntersectee!=-1) { trans->doInvTransformation(pt,p); if (faceIntersectee==100) base->normale(pt,r,laNormale); else lesFaces[faceIntersectee]->normale(pt,r,laNormale); corrigerNormale (laNormale, pt, r); } } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/pyramid4.h0100755000000000000000000000164107310142130014042 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 4/06/2001 */ /* */ /********************************************/ #if !defined(__PYRAMID4__) #define __PYRAMID4__ #include "objet.h" #include "triangle.h" #include "parallelogram.h" class pyramid4:public objet { private: triangle * lesFaces[4]; parallelogram *base; int faceIntersectee; public: pyramid4 (double p1[4], double p2[4], double p3[4], double p4[4]); virtual ~ pyramid4 (); /* calcule l'intersection entre le rayon r et l'objet et renvoie la distance entre le debut du rayon et i */ double intersection (rayon* r, double i[4]); /* calcule la normale en p l'objet */ void normale (double p[4],rayon* r, double laNormale[4]); }; #endif // __PYRAMID4__ Site/sources/rayon.cc0100755000000000000000000001107607310142130013602 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 4/06/2001 */ /* */ /* Commentaires : defini un rayon par une origin est une direction */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "rayon.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// rayon::rayon (double origin[4], double direction[4]) { memcpy (this->origin, origin, 4 * sizeof (double)); memcpy (this->direction, direction, 4 * sizeof (double)); dedans=false; normaliser(this->direction); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// rayon::rayon () { dedans=false; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// rayon::~rayon () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void rayon::normaliser (double v[4]) { double d=0; for (int i = 0; i < 3; i++) d += v[i] * v[i]; d = sqrt (d); for (int i = 0; i < 3; i++) v[i] /= d; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void rayon::setDirection(double direction[4]){ memcpy(this->direction,direction,4*sizeof(double)); normaliser(this->direction); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void rayon::setOrigin(double origin[4]){ memcpy(this->origin,origin,4*sizeof(double)); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void rayon::getDirection(double direction[4]){ memcpy(direction,this->direction,4*sizeof(double)); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void rayon::getOrigin(double origin[4]){ memcpy(origin,this->origin,4*sizeof(double)); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void rayon::setDedans(bool dedans){ this->dedans=dedans; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void rayon::swapDedansDehors(){ dedans=!dedans; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// bool rayon::estDedans() { return dedans; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double rayon::produitScalaire(double vec[4]) { double ps = 0; for (int i = 0; i < 3; i++) ps += direction[i] * vec[i]; return ps; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/rayon.h0100755000000000000000000000162407310142130013442 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 4/06/2001 */ /* */ /********************************************/ #if !defined(__RAYON__) #define __RAYON__ #include #include class rayon { private: double origin[4]; double direction[4]; bool dedans; void normaliser (double v[4]); public: rayon (double origin[4], double direction[4]); rayon(); virtual ~ rayon (); void setDirection(double direction[4]); void setOrigin(double origin[4]); void getDirection(double direction[4]); void getOrigin(double origin[4]); void setDedans(bool dedans); void swapDedansDehors(); bool estDedans(); double produitScalaire(double vec[4]); }; #endif // __RAYON__ Site/sources/raytracer.cc0100755000000000000000000000531307310142130014443 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 10/05/2001 */ /* */ /* Commentaires : programme principal du raytracer */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "lecteurScene.h" #include "tracer.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// int main (int argc, char *argv[]) { switch (argc) { case 1: cout << endl; cout << "raytracer : *** Erreur :" << endl; cout << " \tIl manque des parammetres (fichier d'entree et de sortie)" << endl; cout << "\tUtilisation : raytracer inputFile outputFile" << endl; cout << endl; exit (0); break; case 2: cout << endl; cout << "raytracer : *** Erreur :" << endl; cout << " \tIl manque des parammetres (fichier de sortie)" << endl; cout << "\tUtilisation : raytracer inputFile outputFile" << endl; cout << endl; exit (0); case 3: break; default: cout << endl; cout << "raytracer : *** Erreur :" << endl; cout << " \tIl y a trop de parametres" << endl; cout << "\tUtilisation : raytracer inputFile outputFile" << endl; cout << endl; exit (0); break; } /* lecture et recuperation de la description de la scene */ lecteurScene ls (argv[1]); /* creation du tracer pour rendre la scene */ tracer t (ls.getScene ()); /* lancement du rendu de la scene */ t.rendreScene (); /* sauvegarde de la scene dans le fichier de sortie */ t.sauvegarderScene (argv[2]); return 1; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/scene.cc0100755000000000000000000002616607310142130013555 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 10/05/2001 */ /* */ /* Commentaires : contient la description d'une scene */ /* - les objets */ /* - les lumieres */ /* - les parametres globaux */ /* - la camera */ /* permet egalement de savoir si un point d'un objet et illumine par */ /* une source lumineuse */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "scene.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// scene::scene () { nbObjets = 0; nbLumieresDirectionnelles = 0; nbLumieresPonctuelles = 0; lesObjets = NULL; lesLumieresDirectionnelles = NULL; lesLumieresPonctuelles = NULL; laLumiereAmbiante=NULL; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// scene::~scene () { for (int i = 0; i < nbLumieresDirectionnelles; i++) free (lesLumieresDirectionnelles[i]); free (lesLumieresDirectionnelles); for (int i = 0; i < nbLumieresPonctuelles; i++) free (lesLumieresPonctuelles[i]); free (lesLumieresPonctuelles); for (int i = 0; i < nbObjets; i++) free (lesObjets[i]); free (lesObjets); free (laCamera); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void scene::ajouterObjet (objet * o) { lesObjets = (objet **) realloc (lesObjets, (nbObjets + 1) * sizeof (objet *)); lesObjets[nbObjets] = o; nbObjets++; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void scene::ajouterLumiereDirectionnelle (lumiereDirectionnelle * l) { lesLumieresDirectionnelles = (lumiereDirectionnelle **) realloc (lesLumieresDirectionnelles, (nbLumieresDirectionnelles + 1) * sizeof (lumiereDirectionnelle *)); lesLumieresDirectionnelles[nbLumieresDirectionnelles] = l; nbLumieresDirectionnelles++; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void scene::ajouterLumierePonctuelle (lumierePonctuelle * l) { lesLumieresPonctuelles = (lumierePonctuelle **) realloc (lesLumieresPonctuelles, (nbLumieresPonctuelles + 1) * sizeof (lumierePonctuelle *)); lesLumieresPonctuelles[nbLumieresPonctuelles] = l; nbLumieresPonctuelles++; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void scene::ajouterLumiereAmbiante (lumiereAmbiante *l){ laLumiereAmbiante = l; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void scene::changerCamera (camera * c) { laCamera = c; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// camera * scene::getCamera () { return laCamera; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// objet * scene::getObjet (int i) { return lesObjets[i]; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// lumierePonctuelle *scene::getLumierePonctuelle (int i){ return lesLumieresPonctuelles[i]; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// lumiereDirectionnelle *scene::getLumiereDirectionnelle (int i){ return lesLumieresDirectionnelles[i]; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// bool scene::estIlluminePonctuelles (double p[4], int nlum) { int i; bool illumine = true; double d; double pos[4]; double dir[4]; double p2[4]; rayon * r=new rayon(); double dLum; for (int j = 0; j < 4; j++) p[j] /= p[3]; r->setOrigin(p); lesLumieresPonctuelles[nlum]->getPosition (pos); if (doSoftShadow) for(int j=0;j<3;j++) pos[j]+=(double)random()/((double)MAXINT/softShadow)-softShadow/2.0; for (int j = 0; j < 3; j++) dir[j] = pos[j] - p[j]; dir[3]=0; r->setDirection(dir); for (int i = 0; i < 4; i++){ p[i] = p[i] / p[3]; pos[i] = pos[i] / pos[3]; } dLum = 0; for (int i = 0; i < 3; i++) dLum += (p[i] - pos[i]) * (p[i] - pos[i]); dLum = sqrt (dLum); i = 0; while (illumine && i < nbObjets) { d = lesObjets[i]->intersection (r, p2); if (d < dLum && d>0.001 ) illumine = false; i++; } return illumine; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// bool scene::estIllumineDirectionnelles (double p[4], int nlum) { int i; bool illumine = true; double d; double p2[4]; double dir [4]; rayon * r=new rayon(); for (int j = 0; j < 4; j++) p[j] /= p[3]; r->setOrigin(p); lesLumieresDirectionnelles[nlum]->getDirection (dir); for(int i=0;i<3;i++) dir[i]= -dir[i]; if (doSoftShadow) { for(int j=0;j<3;j++) dir[j]+=(double)random()/((double)MAXINT/softShadow)-softShadow/2.0; r->setDirection(dir); } else r->setDirection(dir); i = 0; while (illumine && i < nbObjets) { d = lesObjets[i]->intersection (r, p2); if (d < MAXDOUBLE && d>0.001) illumine = false; i++; } return illumine; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// int scene::getNbObjets () { return nbObjets; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// int scene::getNbLumieresPonctuelles () { return nbLumieresPonctuelles; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// int scene::getNbLumieresDirectionnelles () { return nbLumieresDirectionnelles; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void scene::getLumiereAmbiante (double lumAmb[]) { laLumiereAmbiante->getCouleur(lumAmb); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void scene::setBackground (double c[3]) { memcpy (coulBg, c, 3 * sizeof (double)); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void scene::setGlobalSetting (int maxTraceLevel, int antialiasing, double aaThreshold,double softShadow,int nbRayonsOmbres, int outputHeight, int outputWidth) { this->maxTraceLevel = maxTraceLevel; this->antialiasing = antialiasing; this->aaThreshold = aaThreshold; this->softShadow = softShadow; this->nbRayonsOmbres = nbRayonsOmbres; this->outputHeight = outputHeight; this->outputWidth = outputWidth; if (softShadow==-1) doSoftShadow=false; else doSoftShadow=true; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// int scene::getMaxTraceLevel () { return maxTraceLevel; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// int scene::getAntialiasing () { return antialiasing; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double scene::getAAThreshold () { return aaThreshold; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// int scene::getOutputHeight () { return outputHeight; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// int scene::getOutputWidth () { return outputWidth; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double * scene::getBackground () { return coulBg; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// int scene::getNbRayonsOmbres() { return nbRayonsOmbres; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/scene.h0100755000000000000000000000422107310142130013403 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 10/05/2001 */ /* */ /********************************************/ #if !defined(__SCENE__) #define __SCENE__ #include #include "objet.h" #include "camera.h" #include "background.h" #include "lumiereAmbiante.h" #include "lumierePonctuelle.h" #include "lumiereDirectionnelle.h" class scene { private: objet * *lesObjets; lumiereDirectionnelle **lesLumieresDirectionnelles; lumierePonctuelle ** lesLumieresPonctuelles; camera *laCamera; double coulBg[3]; lumiereAmbiante * laLumiereAmbiante; int nbLumieresDirectionnelles; int nbLumieresPonctuelles; int nbObjets; int maxTraceLevel; int antialiasing; double aaThreshold; int outputHeight; int outputWidth; double softShadow; bool doSoftShadow; int nbRayonsOmbres; public: scene (); virtual ~ scene (); void ajouterObjet (objet * o); void changerCamera (camera * c); void ajouterLumiereAmbiante (lumiereAmbiante * l); void ajouterLumiereDirectionnelle (lumiereDirectionnelle * l); void ajouterLumierePonctuelle (lumierePonctuelle * l); /* renvoie vrai si aucun objet n'est situe entre lumiere et p, faux sinon */ bool estIlluminePonctuelles (double *p, int nlum); bool estIllumineDirectionnelles (double *p, int nlum); camera *getCamera (); objet *getObjet (int i); lumierePonctuelle *getLumierePonctuelle (int i); lumiereDirectionnelle *getLumiereDirectionnelle (int i); void setBackground (double c[3]); double *getBackground (); int getNbObjets (); int getNbLumieresPonctuelles (); int getNbLumieresDirectionnelles (); void getLumiereAmbiante (double lumAmb[]); int getNbRayonsOmbres(); void setGlobalSetting (int maxTraceLevel, int antialiasing, double aaThreshold,double softShadow,int nbRayonsOmbres, int outputHeight, int outputWidth); int getMaxTraceLevel (); int getAntialiasing (); double getAAThreshold (); int getOutputHeight (); int getOutputWidth (); }; #endif // __SCENE__ Site/sources/sphere.cc0100755000000000000000000000725307310142130013742 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 10/05/2001 */ /* */ /* Commentaires : permet de tracer une sphere d'equation : */ /* x2+y2+z2+r2=0 */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "sphere.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// sphere::sphere (double rayon):objet () { this->leRayon = rayon; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// sphere::~sphere () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double sphere::intersection (rayon* r, double i[4]) { double a, b, c; double delta; double t1, t2, t; double d; double p[4], temp[4]; double pos[4]; double dir[4]; double pos2[4]; double dir2[4]; r->getOrigin(pos); r->getDirection(dir); trans->doInvTransformation(pos2,pos); trans->doInvTransformation(dir2,dir); a = dir2[0] * dir2[0] + dir2[1] * dir2[1] + dir2[2] * dir2[2]; b = dir2[0] * pos2[0] + dir2[1] * pos2[1] + dir2[2] * pos2[2]; c = pos2[0] * pos2[0] + pos2[1] * pos2[1] + pos2[2] * pos2[2] - leRayon * leRayon; delta = b * b - a * c; if (delta <= 0) d = MAXDOUBLE; else { t1 = (-b + sqrt (delta)) / a; t2 = (-b - sqrt (delta)) / a; if (t1 <= epsilon && t2 <= epsilon) d = MAXDOUBLE; else { if ((t1 <= t2 && t1 > epsilon) || (t2 < t1 && t2 < epsilon)) t = t1; else if ((t2 < t1 && t2 > epsilon) || (t1 < t2 && t1 < epsilon)) t = t2; p[0] = t * dir2[0] + pos2[0] / pos2[3]; p[1] = t * dir2[1] + pos2[1] / pos2[3]; p[2] = t * dir2[2] + pos2[2] / pos2[3]; p[3] = 1.0; d = distance (p, pos2); trans->doTransformation(i,p); } } return d; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void sphere::normale (double p[4],rayon* r, double laNormale[4]) { double p2[4]; trans->doInvTransformation(p2,p); /* dans le repere de la sphere la normale un point est le point lui-meme */ laNormale[0] = p2[0] / p2[3]; laNormale[1] = p2[1] / p2[3]; laNormale[2] = p2[2] / p2[3]; laNormale[3] = 0; corrigerNormale (laNormale, p2, r); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/sphere.h0100755000000000000000000000140207310142130013572 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 10/05/2001 */ /* */ /********************************************/ #if !defined(__SPHERE__) #define __SPHERE__ #include "objet.h" class sphere:public objet { private:double leRayon; public: sphere (double rayon); virtual ~ sphere (); /* calcule l'intersection entre le rayon r et l'objet et renvoie la distance entre le debut du rayon et i */ double intersection (rayon* r, double i[4]); /* calcule la normale en p l'objet */ void normale (double p[4],rayon* r, double laNormale[4]); }; #endif // __SPHERE__ Site/sources/textureMapper.cc0100755000000000000000000002062107311115614015323 0ustar rootroot/***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 2/06/2001 */ /* */ /* Commentaires : permet de charger une texture et de la plaquer sur un plan */ /* ou une sphere */ /* */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "textureMapper.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// textureMapper::textureMapper (char nomFichier[]) { fichier = new ifstream (nomFichier); if (fichier->fail ()) erreur ("Erreur d'ouverture de fichier."); strcpy (this->nomFichier, nomFichier); typeObjet = INDEFINI; remplirMap (); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// textureMapper::textureMapper () { typeObjet = INDEFINI; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// textureMapper::~textureMapper () { free (map); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void textureMapper::erreur (char *texte) { cout << endl; cout << "Texture Mapping : *** Erreur [" << nomFichier << "] :" << endl; cout << " \t" << texte << endl; cout << endl; exit (0); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void textureMapper::remplirMap () { char c; int n; //lecture du magic number c = getChar (); if (c != 'P') erreur ("Erreur de lecture du format."); n = getInt (); if (n != 6) erreur ("Erreur de lecture du format."); //lecture des dimensions et de l'intensit maximum width = getInt (); height = getInt (); intensity = getInt (); //allocation mmoire de la map map = (unsigned char *) malloc (3 * height * width * sizeof (unsigned char)); //lecture des couleurs for (int i = 0; i < height; i++) for (int j = 0; j < width; j++) { for (int k = 0; k < 3; k++) { map[(i * width + j) * 3 + k] = getByte (); } } fichier->close (); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// char textureMapper::getChar () { char c; fichier->get (c); if (c == '#') { do { fichier->get (c); } while (c != '\n' && c != '\r'); } if (fichier->fail ()) erreur ("Erreur de lecture de caractre."); return c; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// unsigned char textureMapper::getByte () { unsigned char c; fichier->get (c); if (fichier->fail ()) erreur ("Erreur de lecture d'octet."); return c; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// int textureMapper::getInt () { int i; char c; do { c = getChar (); } while (c == ' ' || c == '\t' || c == '\n' || c == '\r'); if (c < '0' || c > '9') erreur ("Erreur de lecture d'entier."); i = 0; do { i = i * 10 + c - '0'; c = getChar (); } while (c >= '0' && c <= '9'); return i; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void textureMapper::setFrequence (int f) { frequence = f; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void textureMapper::setTexturePlan () { typeObjet = PLAN; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void textureMapper::setTextureSphere (double rayon) { typeObjet = SPHERE; rayonSphere = rayon; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void textureMapper::setTransformer(transformer * trans){ this->trans=trans; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void textureMapper::getCouleurTexture (int i, int j, double couleur[3]) { for (int k = 0; k < 3; k++) couleur[k] = (double) (map[((height - i - 1) * width + j) * 3 + k]) / ((double) intensity); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void textureMapper::getMapping (double p[4], double coulobj[3]) { double p2[4]; trans->doTransformation(p2,p); switch (typeObjet) { case PLAN: getMappingPlan (p2, coulobj); break; case SPHERE: getMappingSphere (p2, coulobj); break; default: break; } } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void textureMapper::getMappingPlan (double p[4], double coulobj[3]) { double u, v, t; double m; //taille de l'image en hauteur int i, j; //calcul du pixel(i,j) correspondant (y,z), frequence = taille de l'image en largeur t = ((int) ((p[1]-frequence/2) /(double)frequence)) * frequence; j = (int) (width * ((p[1]-frequence/2) - t) / frequence); if (j<0) j=width+j; m = (double) frequence *(double) height / (double) width; t = ((int) ((p[2]+m/2) / m)) * m; i = (int) (height * ((p[2]+m/2) - t) / m); if (i<0) i=height+i; getCouleurTexture (i, j, coulobj); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void textureMapper::getMappingSphere (double p[4], double coulobj[3]) { double u, v, t; int i, j; double ac; // Calul de u et de v tels que : (x, y, z) = (r*sinu,r*cosu*sinv, r*cosu*cosv) u = asin (p[0] / rayonSphere); //u est dans [-pi/2;pi/2] if (cos (u) != 0.0) { ac = p[2] / (rayonSphere * cos (u)); if (ac<-1) ac=-1; if (ac>1) ac=1; v = acos (ac); } else v = 0.0; if (p[1] > 0.0) v = - v; //v est dans [0;2pi[ v+=M_PI; //calcul du pixel(i,j) correspondant (u,v) t = (double) frequence *(u / M_PI + 0.5); i = (int) (height * (t - (int) t)); t = 0.5 * (double) frequence *v / M_PI; j = (int) (width * (t - (int) t)); getCouleurTexture (i, j, coulobj); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/textureMapper.h0100755000000000000000000000273107310142130015157 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 10/05/2001 */ /* */ /********************************************/ #if !defined(__TEXTUREMAPPER__) #define __TEXTUREMAPPER__ #include #include #include #include #include "transformer.h" class textureMapper { private: // le fichier d'entre au format ppm P6 ifstream * fichier; // le nom du fichier d'entre char nomFichier[50]; // le buffer de l'image unsigned char *map; // les dimensions et l'intensit maximum de l'image mapper int width, height, intensity; int frequence; void remplirMap (); void erreur (char *texte); char getChar (); unsigned char getByte (); int getInt (); void getMappingPlan (double p[4], double coulobj[3]); void getMappingSphere (double p[4], double coulobj[3]); enum { PLAN, SPHERE, INDEFINI }; int typeObjet; double rayonSphere; transformer * trans; public: textureMapper (char nomFichier[]); textureMapper (); virtual ~ textureMapper (); void getCouleurTexture (int i, int j, double couleur[3]); void getMapping (double p[4], double coulobj[3]); void setTexturePlan (); void setTextureSphere (double rayon); void setFrequence (int f); void setTransformer(transformer * trans); }; #endif // __TEXTUREMAPPER__ Site/sources/tore.cc0100755000000000000000000001033507310165500013426 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 22/05/2001 */ /* */ /* Commentaires : permet de tracer un tore d'equation : */ /* x2+y2+z2+r2=0 */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "tore.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// tore::tore (double minusR, double majorR): objet () { this->minusR = minusR; this->majorR = majorR; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// tore::~tore () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double tore::intersection (rayon * r, double i[4]) { double t; double dist; double p[4]; double a; double b; double c; double d; double e; double roots[4] = { 0.0, 0.0, 0.0, 0.0 }; int nbRoots = 0; double pos[4]; double dir[4]; double pos2[4]; double dir2[4]; r->getOrigin(pos); r->getDirection(dir); trans->doInvTransformation(pos2,pos); trans->doInvTransformation(dir2,dir); double tmpA = dir2[0] * dir2[0] + dir2[1] * dir2[1] + dir2[2] * dir2[2]; double tmpB = 2.0 * (dir2[0] * pos2[0] + dir2[1] * pos2[1] + dir2[2] * pos2[2]); double tmpC = pos2[0] * pos2[0] + pos2[1] * pos2[1] + pos2[2] * pos2[2] + majorR * majorR - minusR * minusR; double tmp = 4.0 * majorR * majorR; double tmpD = tmp * (dir2[0] * dir2[0] + dir2[2] * dir2[2]); double tmpE = tmp * 2 * (dir2[0] * pos2[0] + dir2[2] * pos2[2]); double tmpF = tmp * (pos2[0] * pos2[0] + pos2[2] * pos2[2]); a = tmpA * tmpA; b = 2.0 * tmpA * tmpB; c = 2.0 * tmpA * tmpC + tmpB * tmpB - tmpD; d = 2.0 * tmpB * tmpC - tmpE; e = tmpC * tmpC - tmpF; Polynomial poly (a, b, c, d, e); nbRoots = poly.SolveQuartic (roots); if (!nbRoots) dist = MAXDOUBLE; else { t = MAXDOUBLE; for (int ii = 0; ii < nbRoots; ii++) { if (roots[ii] > epsilon && roots[ii] < t) t = roots[ii]; } p[0] = t * dir2[0] + pos2[0]; p[1] = t * dir2[1] + pos2[1]; p[2] = t * dir2[2] + pos2[2]; p[3] = 1.0; if (t==MAXDOUBLE) dist = MAXDOUBLE; else dist = distance (p, pos2); trans->doTransformation(i,p); } return dist; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void tore::normale (double p[4],rayon * r, double laNormale[4]) { double p2[4]; double k; trans->doInvTransformation(p2,p); k = 4 * (p2[0] * p2[0] + p2[1] * p2[1] + p2[2] * p2[2] + majorR * majorR - minusR * minusR); laNormale[0] = p2[0] * k - 8 * majorR * majorR * p2[0]; laNormale[1] = p2[1] * k; laNormale[2] = p2[2] * k - 8 * majorR * majorR * p2[2]; laNormale[3] = 0; corrigerNormale (laNormale, p2, r); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/tore.h0100755000000000000000000000143007310142130013256 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 22/05/2001 */ /* */ /********************************************/ #if !defined(__TORE__) #define __TORE__ #include "objet.h" class tore:public objet { private:double minusR; double majorR; public: tore (double minusR, double majorR); virtual ~ tore (); /* calcule l'intersection entre le rayon r et l'objet et renvoie la distance entre le debut du rayon et i */ double intersection (rayon * r, double i[4]); /* calcule la normale en p l'objet */ void normale (double p[4],rayon * r, double laNormale[4]); }; #endif // __TORE__ Site/sources/tracer.cc0100755000000000000000000003013007311074430013732 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 22/05/2001 */ /* */ /* Commentaires : algo principal du raytracer */ /* permet de lancer les rayons et de calculer les luminosite des pixels */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "tracer.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// tracer::tracer (scene * s) { this->s = s; nbRayonsLances = 0; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// tracer::~tracer () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void tracer::sauvegarderScene (char *outputFile) { ofstream of (outputFile); int i, j, k; int MaxVal = 255; cout << endl << "\tSauvegarde scene dans \"" << outputFile << "\" "; of << "P6" << endl; of << width << " " << height << endl; of << MaxVal << endl; for (i = 0; i < height; i++) for (j = 0; j < width; j++) for (k = 0; k < 3; k++) of << map[((height - i - 1) * width + j) * 3 + k]; of.close (); free (map); cout << "\t [ OK ]" << endl << endl; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void tracer::setPixel (int x, int y, double coul[3]) { map[x * 3 * width + y * 3] = (unsigned char) (coul[0] * 255); map[x * 3 * width + y * 3 + 1] = (unsigned char) (coul[1] * 255); map[x * 3 * width + y * 3 + 2] = (unsigned char) (coul[2] * 255); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void tracer::getPixel (int x, int y, double coul[3]) { coul[0] = map[x * 3 * width + y * 3]; coul[1] = map[x * 3 * width + y * 3 + 1]; coul[2] = map[x * 3 * width + y * 3 + 2]; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void tracer::rendreScene () { int i, j; double couleur[3]; cout << "\tDebut calcul de la scene" << endl; /* recuperation de diverses constantes */ s->getLumiereAmbiante (laLumAmbiante); memcpy (coulBg, s->getBackground (), 3 * sizeof (double)); width = s->getOutputWidth (); height = s->getOutputHeight (); proj_width = (s->getCamera())->getProjectionSize(); proj_height = proj_width * height/width ; pasy = (double) proj_width / (double) width; pasx = (double) proj_height / (double) height; /* initialisation du buffer pour l'image */ map = (unsigned char *) malloc (3 * width * height * sizeof (unsigned char)); /* lancer des rayons */ for (i = 0; i < height; i++) { for (j = 0; j < width; j++) { lancerLesRayons (i, j, couleur); map[i * 3 * width + j * 3] = (unsigned char) (couleur[0] * 255); map[i * 3 * width + j * 3 + 1] = (unsigned char) (couleur[1] * 255); map[i * 3 * width + j * 3 + 2] = (unsigned char) (couleur[2] * 255); } cout << i << endl; } free (s); cout << "\t Calcul de la scene \t\t\t [ OK ]" << endl; cout << endl << "\tNombres de rayons generes : " << nbRayonsLances << endl; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void tracer::lancerLesRayons (int i, int j, double coul[3]) { double tmpCoul[3]; int ph[2], pg[2]; double ch[3], cg[3]; double diff1, diff2; rayon* r=new rayon(); rayon* r2=new rayon(); double x, y,k; int aa = s->getAntialiasing (); int aa2 = aa * aa; double aa_threshold = s->getAAThreshold (); y = pasy * ((double) j) - proj_width / 2.0; x = pasx * ((double) i) - proj_height / 2.0; initRayon (x, y, r); (s->getCamera())->repereScene(r, r2); coul[0] = 0.0; coul[1] = 0.0; coul[2] = 0.0; lancerUnRayon (r2, s->getMaxTraceLevel (), coul); if (aa > 1) { if (i == 0 && j == 0) ph[0] = pg[0] = ph[1] = pg[1] = 0; if (i == 0 && j > 0) { ph[0] = 0; ph[1] = j; pg[0] = 0; pg[1] = j - 1; } if (i > 0 && j == 0) { ph[0] = i - 1; ph[1] = 0; pg[0] = i; pg[1] = 0; } if (i > 0 && j > 0) { ph[0] = i - 1; ph[1] = j; pg[0] = i; pg[1] = j - 1; } getPixel (ph[0], ph[1], ch); getPixel (pg[0], pg[1], cg); diff1 = fabs (coul[0] - ch[0]) + fabs (coul[1] - ch[1]) + fabs (coul[2] - ch[2]); diff2 = fabs (coul[0] - cg[0]) + fabs (coul[1] - cg[1]) + fabs (coul[2] - cg[2]); k=1; while (k <= aa && (diff1 > aa_threshold || diff2 > aa_threshold)) { y = pasy * ((double) j - (double)random()/(double)MAXINT) - proj_width / 2.0; x = pasx * ((double) i - (double)random()/(double)MAXINT) - proj_height / 2.0; initRayon (x, y, r); (s->getCamera())->repereScene(r, r2); tmpCoul[0] = 0.0; tmpCoul[1] = 0.0; tmpCoul[2] = 0.0; lancerUnRayon (r2, s->getMaxTraceLevel (),tmpCoul); for(int t=0;t<3;t++) coul[t] = (((double)aa-1.0)*coul[t]+tmpCoul[t])/(double)aa; diff1 = fabs (coul[0] - ch[0]) + fabs (coul[1] - ch[1]) + fabs (coul[2] - ch[2]); diff2 = fabs (coul[0] - cg[0]) + fabs (coul[1] - cg[1]) + fabs (coul[2] - cg[2]); k++; } } /* clamping */ for (int k = 0; k < 3; k++) if (coul[k] > 1.0) coul[k] = 1.0; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void tracer::initRayon (double x, double y, rayon *r) { camera * c = s->getCamera(); r->setDedans(false); if (c->getTypeProjection()==camera::PERSPECTIVE) { double dir[4]={x,y, c->getFocale(),0.0}; double pos[4]={0.0,0.0,0.0,1.0}; r->setOrigin(pos); r->setDirection(dir); } else { double dir[4]={0.0,0.0,1.0,0.0}; double pos[4]={x,y,0.0,1.0}; r->setOrigin(pos); r->setDirection(dir); } } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void tracer::lancerUnRayon (rayon * r, int profondeur, double coul[3]) { double d; objet *o; double intersection[4]; double normale[4]; double coulDirecte[3], coulAmbiente[3], coulReflechie[3], coulTransmise[3]; if (profondeur > 0) { nbRayonsLances++; d = calculerIntersection (r, intersection, &o); if (d != MAXDOUBLE) { o->normale (intersection, r, normale); calculerLuminositeDirecte (r, o, intersection, normale, coulDirecte); calculerLuminositeAmbiente (o, intersection, coulAmbiente); calculerLuminositeReflechie (r, o, intersection, normale, profondeur, coulReflechie); calculerLuminositeTransmise (r, o, intersection, normale, profondeur, coulTransmise); for (int i = 0; i < 3; i++) coul[i] += coulDirecte[i] + o->getRhoA () * coulAmbiente[i] + o->getRhoR () * coulReflechie[i] + o->getRhoT () * coulTransmise[i]; } else { coul[0] += coulBg[0]; coul[1] += coulBg[1]; coul[2] += coulBg[2]; } } } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// /* calcule l'intersection la plus proche entre le rayon r et la scene s */ double tracer::calculerIntersection (rayon *r, double intersection[], objet ** o) { double d1, d2; objet *o2; double i2[4]; *o = s->getObjet (0); d1 = (*o)->intersection (r, intersection); for (int i = 1; i < s->getNbObjets (); i++) { o2 = s->getObjet (i); d2 = o2->intersection (r, i2); if (d2 < d1) { d1 = d2; *o = s->getObjet (i); //o2; memcpy (intersection, i2, 4 * sizeof (double)); } } return d1; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void tracer::calculerLuminositeDirecte (rayon *r, objet * o, double intersection[4], double normale[4], double coul[3]) { double coul2[3]; coul[0] = coul[1] = coul[2] = 0.0; /* luminosite des sources ponctuelles */ for (int i = 0; i < s->getNbLumieresPonctuelles (); i++) { for(int j=0;jgetNbRayonsOmbres();j++) { if (s->estIlluminePonctuelles (intersection, i)) { (s->getLumierePonctuelle(i))->getLuminosite (r, intersection, normale,o , coul2); coul[0] += coul2[0]/s->getNbRayonsOmbres(); coul[1] += coul2[1]/s->getNbRayonsOmbres(); coul[2] += coul2[2]/s->getNbRayonsOmbres(); } } } /* luminosite des sources directionnelles */ for (int i = 0; i < s->getNbLumieresDirectionnelles (); i++) { for(int j=0;jgetNbRayonsOmbres();j++) { if (s->estIllumineDirectionnelles (intersection, i)) { s->getLumiereDirectionnelle(i)->getLuminosite (r, intersection, normale,o , coul2); coul[0] += coul2[0]/s->getNbRayonsOmbres(); coul[1] += coul2[1]/s->getNbRayonsOmbres(); coul[2] += coul2[2]/s->getNbRayonsOmbres(); } } } } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void tracer::calculerLuminositeReflechie (rayon *r, objet * o, double intersection[4], double normale[4], int profondeur, double coul[3]) { rayon * rayonReflechi = new rayon(); coul[0] = coul[1] = coul[2] = 0.0; if (o->rayonReflechi (r, intersection, normale, rayonReflechi)) lancerUnRayon (rayonReflechi, profondeur - 1, coul); free(rayonReflechi); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void tracer::calculerLuminositeTransmise (rayon* r, objet * o, double intersection[4], double normale[4], int profondeur, double coul[3]) { rayon * rayonTransmis=new rayon(); coul[0] = coul[1] = coul[2] = 0.0; if (o->rayonTransmis (r, intersection, normale, rayonTransmis)) lancerUnRayon (rayonTransmis, profondeur - 1, coul); free(rayonTransmis); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void tracer::calculerLuminositeAmbiente (objet * o, double p[3], double coul[3]) { double cObj[3]; coul[0] = coul[1] = coul[2] = 0.0; o->getCouleur (p, cObj); for (int i = 0; i < 3; i++) coul[i] = cObj[i] * laLumAmbiante[i]; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/tracer.h0100755000000000000000000000353707310142130013577 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 22/05/2001 */ /* */ /********************************************/ #if !defined(__TRACER__) #define __TRACER__ #include #include #include #include #include "objet.h" #include "camera.h" #include "lumiere.h" #include "background.h" #include "scene.h" #include "rayon.h" #define maxVal 255 class tracer { private: scene * s; double proj_height, proj_width; double pasx, pasy; double laLumAmbiante[3]; double coulBg[3]; double aa_threshold; double aa_depth; double nbRayonsLances; /* les dimensions de l'image de sortie */ int width, height; /* le buffer de l'image */ unsigned char *map; void initRayon (double x, double y, rayon *r); void lancerUnRayon (rayon *r, int profondeur, double coul[3]); void lancerLesRayons (int i, int j, double coul[3]); double calculerIntersection (rayon *r, double intersection[4], objet ** o); void calculerLuminositeDirecte (rayon* r, objet * o, double intersection[4], double normale[4], double coul[3]); void calculerLuminositeReflechie (rayon* r, objet * o, double intersection[4], double normale[4], int profondeur, double coul[3]); void calculerLuminositeTransmise (rayon *r, objet * o, double intersection[4], double normale[4], int profondeur, double coul[3]); void calculerLuminositeAmbiente (objet * o, double p[3], double coul[3]); void setPixel (int x, int y, double coul[3]); void getPixel (int x, int y, double coul[3]); public: tracer (scene * s); ~tracer (); void rendreScene (); void sauvegarderScene (char *outputFile); }; #endif // __TRACER__ Site/sources/transformer.cc0100755000000000000000000001740107310142130015012 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 7/06/2001 */ /* */ /* Commentaires : permet de specifier des transfomations geometriques */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "transformer.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// transformer::transformer () { loadIdentite(translation); loadIdentite(rotation); loadIdentite(echelle); loadIdentite(invTranslation); loadIdentite(invRotation); loadIdentite(invEchelle); loadIdentite(transformation); loadIdentite(invTransformation); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// transformer::~transformer () {} ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void transformer::pointmult4 (double *res, double point[4], double mat[4][4]) { int i, j; double val; for (i = 0; i < 4; i++) { val = 0; for (j = 0; j < 4; j++) val += mat[i][j] * point[j]; res[i] = val; } if (res[3] != 0) for (i = 0; i < 4; i++) res[i] = res[i] / res[3]; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void transformer::matmult44x44 (double res[4][4], double mat1[4][4], double mat2[4][4]) { int i, j, k; double r[4][4], val; for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) { val = 0; for (k = 0; k < 4; k++) val += mat1[i][k] * mat2[k][j]; r[i][j] = val; } for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) res[i][j] = r[i][j]; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void transformer::loadMatriceNulle (double m[4][4]) { for (int i = 0; i < 4; i++) for (int j = 0; j < 4; j++) m[i][j] = 0; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void transformer::loadIdentite (double m[4][4]) { loadMatriceNulle (m); for (int i = 0; i < 4; i++) m[i][i] = 1; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void transformer::setTranslation (double *translation) { double temp[4][4]; loadIdentite (this->translation); for (int i = 0; i < 3; i++) this->translation[i][3] = translation[i]; memcpy (temp, transformation, 4 * 4 * sizeof (double)); matmult44x44 (transformation, temp, this->translation); loadIdentite (invTranslation); for (int i = 0; i < 3; i++) invTranslation[i][3] = -translation[i]; memcpy (temp, invTransformation, 4 * 4 * sizeof (double)); matmult44x44 (invTransformation, invTranslation, temp); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void transformer::setRotation (double *rotation) { double rx[4][4]; double ry[4][4]; double rz[4][4]; double temp[4][4]; double temp2[4][4]; loadIdentite (rx); loadIdentite (ry); loadIdentite (rz); rx[1][1] = cos (rotation[0]); rx[2][1] = sin (rotation[0]); rx[1][2] = -sin (rotation[0]); rx[2][2] = cos (rotation[0]); ry[0][0] = cos (rotation[1]); ry[2][0] = -sin (rotation[1]); ry[0][2] = sin (rotation[1]); ry[2][2] = cos (rotation[1]); rz[0][0] = cos (rotation[2]); rz[1][0] = sin (rotation[2]); rz[0][1] = -sin (rotation[2]); rz[1][1] = cos (rotation[2]); loadIdentite (this->rotation); matmult44x44 (temp, this->rotation, rz); matmult44x44 (temp2, temp, ry); matmult44x44 (this->rotation, temp2, rx); memcpy (temp, transformation, 4 * 4 * sizeof (double)); matmult44x44 (transformation, temp, this->rotation); /* inversion de la matrice */ rx[1][1] = cos (-rotation[0]); rx[2][1] = sin (-rotation[0]); rx[1][2] = -sin (-rotation[0]); rx[2][2] = cos (-rotation[0]); ry[0][0] = cos (-rotation[1]); ry[2][0] = -sin (-rotation[1]); ry[0][2] = sin (-rotation[1]); ry[2][2] = cos (-rotation[1]); rz[0][0] = cos (-rotation[2]); rz[1][0] = sin (-rotation[2]); rz[0][1] = -sin (-rotation[2]); rz[1][1] = cos (-rotation[2]); loadIdentite (this->invRotation); matmult44x44 (temp, this->invRotation, rx); matmult44x44 (temp2, temp, ry); matmult44x44 (this->invRotation, temp2, rz); memcpy (temp, invTransformation, 4 * 4 * sizeof (double)); matmult44x44 (invTransformation, this->invRotation, temp); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void transformer::setEchelle (double *echelle) { double temp[4][4]; loadIdentite (this->echelle); for (int i = 0; i < 3; i++) this->echelle[i][i] = echelle[i]; memcpy (temp, transformation, 4 * 4 * sizeof (double)); matmult44x44 (transformation, temp, this->echelle); loadIdentite (invEchelle); for (int i = 0; i < 3; i++) invEchelle[i][i] = 1.0 / echelle[i]; memcpy (temp, invTransformation, 4 * 4 * sizeof (double)); matmult44x44 (invTransformation, invEchelle, temp); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void transformer::doTransformation(double res[4],double vec[4]) { pointmult4 (res, vec, transformation); if (res[3]!=0) for(int i=0;i<4;i++) res[i]/=res[3]; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void transformer::doInvTransformation(double res[4],double vec[4]){ pointmult4 (res, vec, invTransformation); if (res[3]!=0) for(int i=0;i<4;i++) res[i]/=res[3]; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void transformer::normaliser (double *p) { double d=0; for (int i = 0; i < 3; i++) d += p[i] * p[i]; d = sqrt (d); for (int i = 0; i < 3; i++) p[i] /= d; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/transformer.h0100755000000000000000000000252007310142130014650 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 7/06/2001 */ /* */ /********************************************/ #if !defined(__TRANSFORMER__) #define __TRANSFORMER__ #include #include #include #include class transformer { private: /* les matrices de transformation */ double translation[4][4]; double rotation[4][4]; double echelle[4][4]; double transformation[4][4]; double transformationPigment[4][4]; double invTranslation[4][4]; double invRotation[4][4]; double invEchelle[4][4]; double invTransformation[4][4]; void loadMatriceNulle (double m[4][4]); void loadIdentite (double m[4][4]); void matmult44x44 (double res[4][4], double mat1[4][4], double mat2[4][4]); void pointmult4 (double *res, double point[4], double mat[4][4]); public: transformer (); virtual ~ transformer (); void setEchelle (double echelle[3]); void setRotation (double rotation[3]); void setTranslation (double translation[3]); void doTransformation(double res[4],double vec[4]); void doInvTransformation(double res[4],double vec[4]); void normaliser(double v[4]); }; #endif // __TRANSFORMER__ Site/sources/triangle.cc0100755000000000000000000001022607310142130014253 0ustar rootroot /***************************************************************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 14/05/2001 */ /* */ /* Commentaires : permet de specifier un triangle par trois points */ /* */ /***************************************************************************************/ ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// #include "triangle.h" ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// triangle::triangle (double p1[4], double p2[4], double p3[4]): objet () { memcpy (this->p1, p1, 4 * sizeof (double)); memcpy (this->p2, p2, 4 * sizeof (double)); memcpy (this->p3, p3, 4 * sizeof (double)); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// triangle::~triangle () { } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// double triangle::intersection (rayon * r, double i[4]) { double dist; double p[4]; double pos[4]; double dir[4]; double pos2[4]; double dir2[4]; r->getOrigin (pos); r->getDirection (dir); trans->doInvTransformation (pos2, pos); trans->doInvTransformation (dir2, dir); double x1 = p2[0] - p1[0]; double y1 = p2[1] - p1[1]; double z1 = p2[2] - p1[2]; double x2 = p3[0] - p1[0]; double y2 = p3[1] - p1[1]; double z2 = p3[2] - p1[2]; double x3 = dir2[0]; double y3 = dir2[1]; double z3 = dir2[2]; double xp = pos2[0]; double yp = pos2[1]; double zp = pos2[2]; double dx = xp - p1[0]; double dy = yp - p1[1]; double dz = zp - p1[2]; double D = z1 * y3 * x2 - y1 * z3 * x2 - x3 * z1 * y2 - y3 * x1 * z2 + z3 * x1 * y2 + x3 * y1 * z2; double u = (-y3 * dx * z2 + y3 * x2 * dz - x2 * z3 * dy + dx * z3 * y2 - x3 * y2 * dz + x3 * dy * z2) / D; double v = (x3 * y1 * dz + z3 * x1 * dy - y1 * z3 * dx - x3 * z1 * dy - y3 * x1 * dz + z1 * y3 * dx) / D; double t = (dx * z1 * y2 - dx * y1 * z2 - x1 * y2 * dz + x1 * dy * z2 + x2 * y1 * dz - x2 * z1 * dy) / D; if (fabs (D) > epsilon && u > epsilon && v > epsilon && (u + v) <= 1 + epsilon) { p[0] = pos2[0] + dir2[0] * t; p[1] = pos2[1] + dir2[1] * t; p[2] = pos2[2] + dir2[2] * t; p[3] = 1.0; dist = distance (p, pos2); trans->doTransformation (i, p); } else dist = MAXDOUBLE; return dist; } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// void triangle::normale (double p[4], rayon * r, double laNormale[4]) { double pt[4]; double v1[3] = { p2[0] - p1[0], p2[1] - p1[1], p2[2] - p1[2] }; double v2[3] = { p3[0] - p1[0], p3[1] - p1[1], p3[2] - p1[2] }; trans->doInvTransformation (pt, p); laNormale[0] = v1[1] * v2[2] - v1[2] * v2[1]; laNormale[1] = v2[0] * v1[2] - v1[0] * v2[2]; laNormale[2] = v1[0] * v2[1] - v1[1] * v2[0]; laNormale[3] = 0.0; corrigerNormale (laNormale, pt, r); } ///////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////// Site/sources/triangle.h0100755000000000000000000000152407310142130014116 0ustar rootroot/********************************************/ /* */ /* Realise par : BONFORT THOMAS */ /* CHAIGNEAU DELPHINE */ /* GALIZZI OLIVIER */ /* HEIGEAS LAURE */ /* */ /* Date : 14/05/2001 */ /* */ /********************************************/ #if !defined(__TRIANGLE__) #define __TRIANGLE__ #include "objet.h" class triangle:public objet { private: double p1[4]; double p2[4]; double p3[4]; public: triangle (double p1[4], double p2[4], double p3[4]); virtual ~ triangle (); /* calcule l'intersection i entre le rayon r et le triangle et renvoie la distance entre le debut du rayon et i */ double intersection (rayon *r, double i[4]); /* calcule la normale en p au triangle */ void normale (double p[4],rayon *r, double laNormale[4]); }; #endif // __TRIANGLE__ Site/sources.html0100755000000000000000000002346007311177270013047 0ustar rootroot SOURCES - Ray Tracing



>> Lancer de rayons
>> Composants de la scene
>> Formes
>> Textures
>> Lecture du fichier de description
>> Utils


Lancer de rayons
raytracer.cc (main)
tracer.h, tracer.cc


Composants de la scene
background.h, background.cc
camera.h, camera.cc
lumiere.h, lumiere.cc
lumiereAmbiante.h, lumiereAmbiante.cc
lumiereDirectionnelle.h, lumiereDirectionnelle.cc
lumierePonctuelle.h, lumierePonctuelle.cc
objet.h, object.cc
scene.h, scene.cc


Formes
box.h, box.cc
cone.h, cone.cc
cubeTroue.h, cubeTroue.cc
cylindre.h, cylindre.cc
parallelogram.h, parallelogram.cc
plan.h, plan.cc
pyramid3.h, pyramid3.cc
pyramid4.h, pyramid4.cc
sphere.h, sphere.cc
tore.h, tore.cc
triangle.h, triangle.cc


Textures
checker.h, checker.cc
perlinNoise.h, perlinNoise.cc
textureMapper.h, textureMapper.cc


Lecture du fichier de description
lecteurCar.h, lecteurCar.cc
lecteurScene.h, lecteurScene.cc
lecteurSym.h, lecteurSym.cc


Utils
polynomial.h, polynomial.cc
rayon.h, rayon.cc
transformer.h, transformer.cc



Site/sphere.html0100755000000000000000000001521607312412250012641 0ustar rootroot SPHERE - Ray Tracing



LA SPHERE

La sphre est dfinie dans son propre repre l'aide de son rayon. Pour la mthode intersection, on calcule le point d'intersection le plus proche entre un rayon et la sphre.

Calcul de l'intersection

Il faut calculer le point d'intersection entre le rayon et la sphère, qui doit être illuminé.

L'équation du rayon est :

L'équation d'une sphère est :

On résout donc

D'où :

On résout donc un équation du second ordre. Soit t1 et t2 ses racines.
Si t1 est strictement positive et inférieure à t2 , ou que t1 est strictement positive et t2 est négative, on considère que la première intersection avec la sphère se situe pour t = t1, sinon elle se situe pour t = t2.
En remplaçant la valeur de t dans les équations du rayon, on obtient les coordonnées (x,y,z) du point d'intersection entre le rayon et la sphère.
La distance retournée vaut MAXDOUBLE dans le cas où le rayon n'intersecte pas la sphère.

Au lieu de considérer t1 strictement positive, on utilise t1 strictement supérieur à epsilon afin de ne pas retomber sur le même point d'intersection, c'est-à-dire l'origine du rayon, ceci en raison des approximations de calculs.

Calcul de la normale

Dans le repère de la sphère, la normale au point d'intersection est le point lui-même (il suffit de diviser chaque coordonnée par la coordonnée homogène).





Site/tore.html0100755000000000000000000001663507312346076012346 0ustar rootroot TORE - Ray Tracing



LE TORE

Le tore est défini dans son propre repère à l'aide de ses deux rayons r et R.

Calcul de l'intersection

L'équation du rayon est :
x(t)= d0 t+p0
y(t)= d1 t+p1
z(t)= d2 t+p2
avec (d0,d1,d2)la direction du rayon et (p0 ,p1 ,p2 ) le point origine du rayon.

L'équation du tore est (x² + y² + z² + R² - r²)² - 4 R² (x² + z²) = 0.
On résout donc ((d0 t+p0)² + (d1 t+p1)² + (d2 t+p2)² + R² - r²)² = 4R²( (d0 t+p0)²+ (d2 t+p2)²).
Ce qui nous donne une équation du quatrième ordre a t4 + b t3 + c t² + d t + e = 0, avec
a = (d0² + d1² + d2²)²
b = 4 (d0² + d1² + d2²)(d0 p0 + d1 p1 + d2 p2)
c = 2 (d0² + d1² + d2²)(p0² + p1² + p2² + R² - r²) + (d0 p0 + d1 p1 + d2 p2)² - 4 R² (d0² + d2²)
d = 4 (d0 p0 + d1 p1 + d2 p2) (p0² + p1² + p2² + R² - r²) - 8 R² (d0 p0 + d2 p2)
e = (p0² + p1² + p2² + R² - r²)² - 4 R² (p0² + p2²)
On résout cette équation avec la méthode utilisée dans la classe polynomiale (méthode de Vieta).
S'il existe des racines réelles, on choisit la racine t0 minimum supérieure strictement à epsilon.
Si celle-ci existe, on calcule le point d'intersection entre le tore et le rayon avec t= t0 dans l'équation paramétrique du rayon.
Dans le cas ou toutes les racines sont inférieures à epsilon, t a pour valeur MAXDOUBLE et donc le rayon ne rencontre pas le tore.

Comme pour les autres objets, la distance est évaluée lorsqu'il existe un point d'intersection. Sinon, elle vaut MAXDOUBLE.

Calcul de la normale

Ici pour le calcul de la normale nous allons utiliser le gradient de l'équation implicite f(x, y, z) = 0 définissant la surface du tore.
f(x,y,z) = (x² + y² + z² + R² - r²)² - 4 R² (x² + z²)

df/dx = 4 x (x² + y² + z² + R² - r²) - 8 R² x
df/dy = 4 y (x² + y² + z² + R² - r²)
df/dz = 4 z (x² + y² + z² + R² - r²) - 8 R² z

Ainsi au point (x, y, z) la normale a pour coordonnée (df/dx, df/dy, df/dz).


Site/triangle.html0100755000000000000000000001477707311165674013211 0ustar rootroot TRIANGLE - Ray Tracing



LE TRIANGLE

Le triangle est défini dans le repère de la scène par trois points A1, A2, A3.
On représente le triangle de la manière suivante :


Calcul de l'intersection

Il faut calculer le point d'intersection entre le rayon et le triangle, qui doit être illuminé.

L'équation du rayon est :

Pour obtenir la normale au triangle, il faut réaliser le produit vectoriel entre les vecteurs u et v. Puis on va chercher l'intersection entre le rayon et le plan défini par le triangle. Cette intersection existe seulement si le plan et le rayon ne sont pas parallèles, donc si le produit scalaire entre la normale au plan et le rayon est non nul, c'est à dire (u ^ v).d n'est pas nul.
Le point d'intersection I(x, y, z) entre le plan (A, u, v) et le rayon vérifie le système d'équations suivantes :


les inconnus de ce système sont t, a et b et le déterminant est D = -(u ^ v).d

Le point d'intersection I est dans le triangle si et seulement si :
a et b sont positifs
a + b inférieur ou égal à 1

Comme pour les autres objets, la distance est évaluée lorsqu'il existe un point d'intersection. Sinon, elle vaut MAXDOUBLE.

Calcul de la normale

Pour le calcul de la normale au triangle, on effectue le produit vectoriel entre les vecteurs u et v.


Site/utilisation.html0100755000000000000000000002076207312424120013720 0ustar rootroot UTILISATION -Ray Tracing



Description de scènes
>> Ligne de commande
>> Paramètres généraux

>> Les objets

>> Les lumières
>> Placement de la camera
>> Fichier de description de scene

La description de la scène à faire le rendu se fait dans un fichier texte dont la syntaxe est détaillée à la fin de cette page. Cette syntaxe est proche de celle utilisée par le logiciel POVRAY, et permet de définir tous les paramètres du rendu et des objets composant la scène.


Ligne de commande : raytracer <fichier de description de scene> <fichier image de la scene .ppm>


Les paramètres de rendu
On définit les paramètres qui influeront sur la façon dont le programme calculera la scène, à savoir la taille de l'image finale, le nombre de récursions maximal à effectuer, s'il faut effectuer de l'antialiasing, et si on veut atténuer les ombres.


Les objets :
Les objets sont définis par des paramètres qui leur sont propre (rayon dans le cas de la sphère, coordonnées des sommets pour un polygone, etc…), et par des paramètres globaux définissant leur matériau (couleur, texture, indices de réflexion, réfraction….), et finalement des paramètres de transformation (translation, rotation, mise à l'échelle). Les objets de base qui sont compris par le programme sont la sphère, le plan infini, le triangle, le parallélogramme, le cylindre, le cône, le cube, le tore, la pyramide à 4 ou 5 faces, et finalement le cube troué.


Les lumières
Les lumières sont définies selon leur type (ambiante, ponctuelle ou directionnelle), leur couleur, et éventuellement leur position et direction.


La caméra :
La caméra est définie par sa position dans l'espace et un point vers où elle regarde. Il faut aussi préciser la méthode de projection (en donnant la largeur de projection dans le cas de la projection orthographique, ou l'angle de vue dans le cas de la projection perspective)


Fichier de description de scène
Voici un exemple de fichier de description de scene ocean.txt et qui donne comme image de sortie :

Pour plus de détails sur la façon de remplir le fichier de description vous pouvez consulter la grammaire utilisée.


\WoHk*MfE5߬3*dj-VR?ҀQOm)r{j#+kp9^<":W!驷.c;Site/images/utilisation_titre.gif0100755000000000000000000000200607310750554016177 0ustar rootrootGIF89a( H^kӥNl{|Бꔝ!,(I8ͻ`(d,el뾰tmxn5`',H1l:IZ]@z7wL43+p] B"}} ybp Z=w{i }nh t  v6 }R S|} *ț  }0W h P @MG I(  A!x(Y! :)z,UG h 0E@ &ȀN1(!nU@ s(H moFAPތ*5^U V3`E[vL2;oNQGwPpiB[ lаfn xya>4thDq\ҁV<<n>1#ǘv}pDnLp+ ATOxa$sO5"P90 6 M9V%'4Ut,`0yL Dq F&$bQ4h8<8cK*r&@WE (:DTYeX[ `0})&cri&VZ)Od t2`'=,ڂ_ ȩ1Usڡ&袊fd(nަ LzlG ~R*j嫰*k~Y2Bj(*iV%:p駠X1tųiw"k 8V :uMB9e\@'!:) ;r*(j/tm\xg)Yzmڮ+1Lrt2T-p8; [qx벋s:[#ⱝ~{"0i^rC8Pc$\p4T?tXgD;Site/images/principes_titre.gif0100755000000000000000000000176707310750626015644 0ustar rootrootGIF89a( H^lNkyꕝ!,(I8ͻ`(d,elpנqmx[1Ȥl:AZ z-L.W8.b [樓`f4:gA־*6\K'8µkhڏBSK瀀 Ht)e \@jrj =Nr |*opV ϳ[',4PvDZWvV]3X_ 10m`, .q VY($ !b$h(" 0݈  (>@ $`L2ГD)唧T$JYBc`j" .bXp^00xS}x|Yߝ>#蠂z6eLr>=ncgi|!z(O^IzdH*j~ jJ~*.4Z)i@d뜏+("h* $4@dKnj砰Ժs*,! 3^Qb;VF6䡄ڪKR*mk_K@f hz\̠.BܛgJK<^Z"mW&`#<,TmAMɀY~ DB`&n߁150RU p!*d)9y8 4:$c裏`ϐDd?而2#<T 0 f(RV TbGޚlpfutҙL>Hc 8cYr%_:AYhRg=B6<& 餔V*i<>BYgݧn2dKI^jRbaI~" .*RB0csz=$'†e`ze$K@9-TiD.Jo^\;[f)P\¨썓泥f>2"H2ܧ1.,LJbnj2,&0۬4@;Site/images/realisation_titre.gif0100755000000000000000000000216007310750752016146 0ustar rootrootGIF89a(+RdrEdqWtЂ@Z!,(I8ͻ`(d4el뾰tmxn)`',H1l:IZ]z7K.w[z ܗ]!Xz!  f p =d  qq  kǮj ځ  * ξ Ҳ߰')Uh&X wN`@A1Z[ {@ŀ0Ρ& @zJ&Y#/qB{GS $G} S=r @  xU(tiC?Z%)-jl/([*RU9VM9 GU J (X3l-)q]A-RH6LmK[֫J$R=fIv2S|-gN>8s^=jE V/j^>Yf*"y 5xqz9Ra hNC5M 0Y= #ed4S P$"]&u%$KYB9FҨ^ "`-P},3=d1 (% @x 2N.֛Wk|baN&砄j衄)tNy@P:  )੧ Oɩ*&꧟&馘b6"Zhajr^8kBI6۬>F{LY|fkrk<),2p뮽|!fPW>/ª{睊"حBG,9KkR@^aIO+[< Zr ˧*0[ < 1ǎLH;PG8*7Ez2'3 xsP1N?6RrҌuZ&tcIwݜ:+BA嘟U12ytL;zꬷD;Site/images/box.jpg0100755000000000000000000003140007311373262013225 0ustar rootrootJFIFHHPhotoshop 3.08BIMHH8BIMx8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM NplP 2JFIFHHAdobed           lp"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I$dJ[Xwg=F$#Z2FIRUSK #LΧuWO/)c8S dXCQb\SC*64kK:EM-cO_m4b 8h'?sX Yu.qԬ{ DjEf]w9:|XB&c}\_*8de(Iy%Zkd:'r+r1Z:HiQH\~hG J?$I<!I$JUrE]z/o+?iUL.o4}VOۑPqLd b%qr(䏞3u/fS4kٳ&qA؈U}kUVk0|pǗT2a{2<''e͒xO q. ,9 18I?lciIdt-h~@l'ϲ{ĝT9pa9a')=? ss\198#9B?/o-s'%d JCKGe,jZ8H |4G^E9^s\a!ƻZsdidE{Bs_lOLm\Ès,1ph8e/s. 11œc3n6~8nuGy6g_kk4ռP͎fY8Dx㏱98O,_C1@ Y?Yo朣(fu?j9zncm1!y;\59dt͹V@ԩ_ߤ[ϋq|g-F,9Bs_k&|)e2E . U_H.v}6FO=7.WFy9_9r>K1?)(9MJOԓ%ofpD8GxziS@<;nw`^w8Z109rs?gps眏 Xvoߧq Vίw*x&PNZ~BgI$g/`z:h? s k[L3EŮ7ef5";_#r38S瘖hgO-fG.OTLQri>}muνxykǃzi/ \ ?sZ~H8 O}o\\)Ǘyڌ K'=1$`eQ[;M1_n#W_[ec q`\CZARMrw8ioyp#C 9q|B\|R6~^md>1CGu4*Y6{6'r22$ ltc8|W.˘"$81X2g.Ƿwˤ &I$$xIQ¤I?I$e$I)4X}*F-^[s1~5ˀýR1Ro&,ش3/cL96yy*HO }fBX.!4 ? 7܀a_8~͊5o8r\ncŋ$ o^ Nh"I-pA%K&C2 b;B+E RI$$I)I$e$I)J6-A>*I&χ|Y0=,py-9#ko[_HtszkI(TI%)$IO8BIM XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT 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 &@Zt.Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@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///050l0011J1112*2c2233F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs2F[p(@Xr4Pm8Ww)KmAdobed           "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I$e$I)I$JRI$I$$I)I$JRI$I$$I)I$JRI$I$$I)I$f.sH 6%yG1N3>ʉ81Ӵ`FT1Êb^c=L_S?%O(F4H.K-Voz~~2.XWm^_9rc\!\Z~30njd8O$.l3p?-G%d0yp438q,\0?L(OӫS'QF^9`~iC6os;I @|l_oK,De8kr2\1)Ozܛ_.Ȭ'2Q)oBp9~$eH2^w Md k6CV31%e qr9gsڌ3V Ѯ7zBR+ĉ1ͽS> )]ppu1)?/Wԕ1 = rV^=s,Lk L2SOfGNbTIG_E$HZI"$I)I$Rtogc%s+/< s-[wY8V]@͎\!R3F]x2$?M94sX|}P1EAeOo~wU1.Sq|F? O|΁5}7IE?Ӊzȴ$%8|O˚qˋ8F|z8E99a c/OΡ RHiM9LN}b+iy?w+ع~(p4^\yO/qYM,H{;}W]2U'RW=e)m|C/1b8E,yL;И8K-58*ح~N?,pF9NgÓTrWnS8HWՙvK-o+5ۍs@v?%Vty,kqNJ<9zg#.\2~<| =ƥ?G R%ςȭcX[`~xY><fyy vN9w{^g5!8d1}7w#_E-x']aVn,;1ϺEj`jqJ_Æ<8ʜ2HC4Fq@7AgP;~e"[tpwYtXd@Ff\m`\w@>Cq lGuf< IMh;c+A}3i1,@hHX'&LS464 I$V?I$e,zku}M%elv[1sapI RMW \p[qkqxW\0AK ycV8+7 lTh \%^G4|f1#8Kl:.kԜEF® = Pv]UC(Y?)F79NW&/tQ8CpS!@rpg[yʏd'm&Hw?K9G*WݑmgaA`Iِ#8G&p"hqo/*/{?ԩuI%GGM|nq0 NzkGW) b $>">se[o|4ff?/>hqh ĨUCG??tzJ0(Wmґ]TI"I$e*I9x?CQ譠f ŲJi\T-BܳvE֪od܉S@ }Ga!)tW9ly&=X2 \_,sm<؍?9sxL歬 VcK\URbelY\\?xM٩ߨT *EPj?H{u1+9c|OœI,GOS?oۏH9pPdp6 n_:D1٪xM)ViTҜjU)dhdu'ǏX*=IEY85.7 v3#DKh[/m4bF򢶘PD{ #?We\L8$V78  ZX,18X,#X\IP]>!fRmIq\NcƆ7FCG8(F?YfCLP]$K I$I$e(sORI h7 peY:} F@Ye*P2>mr9gpRp}gp(G/dŜv!MiwWuoi06{u;iUÒ! ØY~FO>Y79T8%9p1GˢQ` ڶkZh$kK_jt}LR1*hc>_;8ss̎c(F==aoJ2*,uV\"`IHp!d[8\+"$#Teʰʴ%ɋ\U3M+4=džU+I92:}"|s]n|u 4)22U$H!I$JI$e$I)s#j%jujŘÚ?~>qIFV)V9+?dL!<8V1L6{f[CݣUC߹hTXX?=T%ʜSቼRF9%7c xa8AKmo=ŽކKI6#hs8-sG'+xLO8sH?C'c2%kcnTr +.x\鉯ݓ>g&QX|'BFe Jd"@W#[dJU{F`V .;pAzoâ"2`FVX^IN,q n}o9\ٱ~ %3J13c(lGRn|}[8^棦(j?[C pMVφ>P.vf 5_(ͼN'ϟ3g2 2||o$IjI$RI$I$e$I)UbwGǺǩk,ܰ=ϩXۆ|GTɐFXǨNܸ}q?Ï.3 pdNv U79*Uf B'MkDžsxz" gOҏ ܕt$pqCt7ݽ(xFmm~Qb)\=o|W91qu*]Uʪv{YS%YNQrї!ɒS'Kv*I$XI%)$IOI$e$I)JkuoSIH DD^?Rkk.,sT%k8&~cc8Nҵy |;4L39G D ^eLJsW%+U38Xg\T~ ,g-NGHtW5OAaK^̩9L|4_=x Ѭ$*I(,KI$$IJI$SI$e$I)I$JRX~idm~ogic8y)p)3V9έ8r^KxXGD}n:vpcT|+,ܯ;ʉQG0!8O x-YSh{,D.3Kσ1Uw:?8=9#pݚp $ˊjZVy$I:JI$RI$I%)$IOI$e$I)I$JRI$HGO/OPk\4ҥj6co<I9pd8^d%xXkWh?I8*VVZd+8,g\] !G ++xqN?۔rs<e qlq.I=lnhBXc2:q!K t[Ix b+N|OXx\DLOxsdLJJGǬWP;'INݵǂI$I%)$IJI$RI$I$e$I)I$JRI$8 INcN;\KW?XF|y[v7}nfDLLkڱ2A-KyJ{e'׆WӅsܫC+ѣW Ƿ&UB\y'}RpFS@"kqz';Vat=Gw2=JeO6\O==5gukOE1s`)Te?(ڴPڅyW|oUլy-|Nw y[v|0>ǩL)Fբk|v7]XhmgRvF(]]wE=^7'-!=JeO6ќRݵwR7Ag;u ΛזvCa\s5麯vӟ)Te?(ڶѮg?w;?Mou3mo᯾{Uu>R vs=6;F/gҕv;Uw5eycӦ\QjʿK/u= =&ˉ^:=^_zY;3 zˀ*2m[b;֮l}"s۲=)clmyzL%=JeOv:=X:۫ܗz-*H=JeJlxH+ͦ)8:BcY\T,qb+ 0\X-R,@ |qk^,@C{$*+͞7+8o1Pt+fG^`X(5f=M{XH^*-<٣Wd'O@$%ŀ$Ҽ̜Y.Ap5cxxVgJL"Mb\XY$&I@ **z=],z<79`H+ 0 e&1$גeŀA' 8ʋlo ,l\YWG!<6*2K)r\X",OdA<'ʍ@ʞXY QjdIKtX1G/f;2#!94H-w=9+,xriuo) ,h,1g׷2,94u9Q:-&z9Q231ջ@ |2דjz:F`S$k3<5 9XXn&Adt #OM\[0yۈn#G;qva*Z&}v7r-e!k$;njKzJ$ d!̍Ht]Kȓ3S4]Id}*2fNt]Isԇ:Sq}LzaMv @7VṕN&m\tDI6Q Z@FP\R8LM8K@7E넕y,4Q%%<#YˌUpC?OOL&FPdp!!T!Mvї*K! qqSGŰڲ./] 8?.\$5p̯ع: _d?(&71;4!MveRZ=8 /eLsK5niT_Rp.?лHVt]TFqTa;t<k[Gm <x+hVୣ[Gm <x+hVୡJ&Nf"YwaLG%yMDM-E끑G3NdM&tVG=A$~I\6z_rGRbR;YdFmkDMJ).[ZoeD-7hnyΛl5F2!rZ{lɮ3SQI+g{m3CuKohvNU1+;ϧ*Җ֥BQT0ыM~y[4ESDn&o**%IZv>$?42M*LuSSwo]-}Ze}ZpoezJ#Կ5kzgB,raK\)MEJWғH^2"S {M!h֞3ҚaJ 2"1@KftjMEizd!hYiylҸt#p6\}+\GJ/N?+Dxb4e'.t#q+u>t#q+\G$#3J:R;7t1qF $Q0N6w!"P0Æ3KP֠%*dI`]`v ~=;%nl'c2m݁۰YgE9(rܕJn!!zվhqin("nN8$S҉.QRtuKܗ-H5Hjo=2(2(2(2.-d!ԢvMs%E1f`&M]S%*j24-%ʭC%(ҶΥg+w9ۨ{*R4.;-ɂpOڇKJ>D&( &Ύk2ZtC XGt'%\=Z*Sp!(xqZ[)>Gݡ8YIh{eVBl|$`IhŲ^] sSA19qO_AЇ=1ܚ^$tHPp#UJl%8a# BA'I,AD  nB aAKˬ{03 03 03 03 i?["=G-t[\dZŇ!QQQQPxr((((Z****D K@z Ť+5i19saZSA?PPPPPPPPPPPPPPSx$35obop*#J|wE]M$ tN\ߩ.! Oʛ.#KkC\7aj6Dp䟤G(,QHFUntF(&PIMR\~UķomU9qA}d8g閞)en ";9CC 9#'1re1app6tueE?Kf 2A{j:c BY&`|3>?ɖbD pl6U@WFkV%#U$npQ/7kw1tv[B mz Ax7`z&Gy}P[g2PfbTƆs^oDa =KRj5ݞGvz4wgݞGvz4wgݞGvz4wgݞGvz4wgШ$9=Z{68KYl?eď6SK:j#UR |n.F冨H )j>LwwefVZ\sZ[F)iF_obpplɣ y sўjIzдy#BZNjHӧE ==:_=)?Hp;Gf|d& jr?|/O<&T*EP|BVŜȯ*ΰ_y"IGSNy9 2ڭh>E6xcY;sSJ֘6xc6ghE}9J}++ ?f\{$ʏ -lf=fjFڍbLҭ$*NFh򢃱1 6e0%veRmN[HR6r4*m`@gotRiU. T&ӦeE.~X92R\1; ○ (')#}YvHjgY@wlt=2߁7TWfѫK߄wȇ֫Q*mK('sڨunұty =p"5E@0`(ԧN&޺$QDŘ0Y(\W )cE)UgY~ZnN򥃃9䀋p)?Hܑ d7vTFֶUȼ.r@\*_u:#>GhGC.s ˰_"EYɩ8Ly&9;tp-[4Qk͸I I]}Qro $Wh4O_)J<>2NQ)q-3cpXLKNs4{C`8LUgFN(jTgQM[ހ,og9NS=:X40* 9s! h04|y3`[ZNETeGƍ1VvOCKi1՟aqqe7|-5Jƍ9R[@N6EO[d^E -|Erp>!nbڛ긑@$bUվ!&gJčx0ӭM)U^>>>>0ѯNZv3ا#SSSljUpڢʍnLЭOH0I4a%FhgoI"+}Yd'q19ѣA,ENgj߶07@S}TtrZ'AjdٯXVGvdEQy @zϵ-( @\<`yht⫸ Rh.XU3D%6J1aҞyvOf~X>%iJ,"D*(yJ2r% g0 8Y!8O x*KH ld(m$QcBe/¦] 虡[b&ôSj@mz 0:6%,b֝7Lj i vAR+c!Cm0v5lr]VQ")-BB&Fr_J2)xbfP6b0eF᜶DC;1y] 8ve)?![ie)?'D"O?'D"O EO2̟֌(Yixv?}5RQSH}~ 1>h?}Ԏ( ~kN,LwtWn(/'gxY#qlo ΙDĶc1ĸpQنV|^gxPA1#pX ^F+ x.- <~_i"0$J<)ED9fe"LcY?/SΡUkӕ&Zی#ϻOu<~$ٖJ}K 4E1cso}ϱ7> aso}ϰ7>$(G =!\u(s-Q1%vuݘmS4X9EڭU^Gն8[2I2H`J-ҞZq>#ϟ\ œG 1GDqa:>)'}#ކ$tZ/P"02#BzO2 )DiItkMpz*c1w^C:}d-uEf90d Wm{.@ԭ{m~:OF+jeK 8}^.-ԋd5Ng欟2ˀTI~N5ͪG籓iyoCT-k'{a(ZMҶsܿ FZeٷe/ss_o)7+BJ4??OOSt$/RZ~Iu_Gei}/S2vT3%ar FUooVvU/w>!܎^dTsu:s38w!)'3~r0s?*bbye5umU69S--_5Y4T\o/~^3 ڀH[FHuehE+5e,u0\_ 10+qϔhNV?Awa3k]߈0Q8s<ntG'07>m&o%qQ1.%-X:7U0Ό8W}x6t@07۷Rw}P+y`spAPw1Evy_ `=;o0H2>峩).횡o:8 Q޸ BP !+Ū%tPEBqz/Ax1-FXs<@UAl{32BX~n/:]HQ19q|~yy|1Ztfs\[]lfǜ⪾f٬՞z6W=O-k ޭ4hS*@cXA7s nE@GNxq;x ᆭE1CQrpqB˥`==uG}}^zA1 ,zT,@Js*wr.˻ia\͂՘ːn!W;O6_/df Ccz>9g8I~_(t# ypQI̧wW-HV\`rnR!Ccs_&%YN$ e%kVô?|muEc8rtQXwAtt:Ÿ|Y8u s̋اLwlw@h|X4L|s *JG봵ägK5\Hv^r ѣQ-0 sE ҼF8yOJ˝]}D`ט仕;ۅWk\0U`4הhѣI"#h[2U?"/}F<>%/.SluJXD/?RH}\Mf%|Pc9y+w3LX b 'P(j k~`:U`Ѕ4ƿ ͑FĮD7t p&.ho\l(fVR 8嫽[jZ`.^.SrzB3 l)H Ҝ !b(Z)WɺkcT(YEy/WF: ĤV7NU }u ?0Q%ӫqjS\x0pTB߁}ʩYa\`40z:T_ >[:2V#ڰbzˢQĥo0)-KK/5r[YK\hA+Eh_q,ֱ*fr,ЭG26ЈNok>ۗcO5vS| &Z3:F.5?!2rc^vӿuT)ow0A˦R>Vӿ|+UyvU1$qSw^,d&ĖoiԨ '$$SJaCGXrxm;ZŲ$ .ap.峁lw;UIx:Ӂp\1\::J `m6Ṇ.𧩨bDž^%T0hfӿX6 S%>xc{NODiz\Nx@DkR4ˈoߴ娫GpCFZZZZZZZZZZZZZZZ[jW GPbbb1=:EU.'.mM;yg׆oZy|6zoY˙=foPQm6E)_Xʕ*TYʕ*T_#2cL˗./ԑ+z78Lxo1 zĹy?!)<ʥxddJkIDe< sIU8qIcI8O zwqB\^GW8x@2q<2.%+[$N3xx,8ɌXi%>QT+i'Fj,aE'3T9<>sL2jρH"*b`ɘ[0WI<&ș*oV%L4ʺM|f* >q}p x{a e}#X2ܲ* '~Wڭ Kx^ٿa8qFܡO]/*_ua>.5OKeqק߻\n~f=&_oN-ޘ)*'Rr.ǟi߻7fA/%߸5D/>} ~i߻!81+o54w7zznV*UqB]hT^,JYe%%%'I}>\kZ}B\F>3:QSa ڌ2JtJ)0+iq'9=_G+3}8?JoWg?0ӎoNz_'5-K߫CX I$I$A=dI$I$I$I$I>imI$I$I$I$I$M4I$I$I$I$I$=59$I$I$I$I$OtblI$I$I$I$I>sI$I$I$I$I$5O>ׄI$I$I$I$I$GR9$I$I$I$I$OgsXI$I$I$I$I:!Ylb;I$I$I$I$I$R(I$I$I$I$I$VG9$I$I$I$I$O71VLI$I$I$I$I>&%I$I$I$I$I$m&ٶI$I$I$I$I$A$Ii$I$I$I$A$I$I$I$ $I$I$II$I$I$A$I$I$I$I$I$I$II$I$I$A$I$I$I$I$I$I$|lI$I$I$I$I$I$I*I$I$I$A$I$I$I$I$I$I$II$I$RI$$I$I$$I$I$MI$ $G$ $I y$IsI$$HII CI$H$I"RAI$IH|A$HKjMI $I$I%2I I$~u II$sA$I I$HA$ $IAI$I"PI $I!IH $I$ A$I$I bIH$I$$ I$I$$ I$HHI$HR$I I$'I$ $II$I$0HI$I$I$I4I$I$IQ$I$I$I$I$I$I$I$I$I$I$I$I$=$I$I$I$I$I$I$IdI$I$I$I$I$I$I$@I$I$I$I$I$I$I$I$I$I$I$I$II$I$I$I$I$I$H $I$?U+{yyyC&e 1e)a2)p _<○bĆ+oqT* eJkZ 1 ۓ505p;v^(UotD`$E jutsvrSTCAUq#6+`Mqv]-+RҎ8H=He.W\#F_& S kÕGk̢kcz+NcMf+GOokq38"뛈ƶKc8# [xJyoA(J 8*=Jqt7arX^F֘n1ŶԛDvQ5;jY/;6jmt~G~^TZ.KSM1)cAM>Vxl%`B_zRR4 }E%3D.aG~O3c\ o\T#iaW2xpJ\x{%Gwf:ZbB<+N:((.m(tϭi6iA]:>fr(OH'j6prAן]q)94 mrh-G Qhɓ.!25B/:Q-\BK*7&1:P4Zn/$Q0ID8syTZ P0uc[o bg[ݬ 03P"ij&[\̎LݬKM^!2z.\,- 6AJJJ۹ڎF0p*b3ڕc͢ax=., #gi_`La["%?H./L'" 4P@ݠ{gتSYC)<#;;n# tydZ,ZY<̫UmU\kWvX,<ZOm͇ΥP.r˖#"FBRC{&=dͦ0}WtrJ-<n6Yn$PQZjVZ-Zjy X>*h6ěXuE ed/7\#9+D*BRF͝>AπYox\7+[S2~xJDcoZo'#ƯROæt@^ ! el)P!$ @B D`0B΍[`1G*)tq6r|.<*?-_ʈTx6L6z -Aq?$qj@\(h`RÊcB؏[ʯr [4;uB8N LZ0#Ω< )5M %HuqaL[ X&:10]Nu8}?AS`~?Bt=_3j\JuuB#EBPfn4;G˳#Qxu1c*5פ{]_*H7pⱴ &c.|;N.j"0c?,%O_S6B{9v[{la᳿A[,ݱ !:2 lCi8\ 3iZ8K! [ Л1SNm r CYxK'`0TW AJl:W2c1Äp9s #ӯ1l%nI"ZHcQ,B!h=A&ӯF Qx2C^TgH0wryKQ᳿YDaF  Y rD ]2wܼI"3? Z@yvw'_μοWμ}x Qy88CA1+*:ʣ\`1^-C^Ј+U;oqO*u|B>Gyh-,n5ʕ*ZTw;}fߦ ,f{te?P )6w=/N^ Gy( 1Gryuu,o˦heX McM˗iiioQ/G7>R#~aٹ~rc[x7]lW5/ᨭ,ƿ_[;{zr"!cܕX`?IIIIIIIH OߴlM!q %C˷Z S1ä0|{N] [TYl#lh% 쌍%^>]!*2ƣjdAkȼ>ӷ(s:J c 1" XvAIYUyaj(;xf VwQLJ9ލw xBT B|ʡӿMeٮhGp=fB̥hm;E)X)\|*79^޼$bT-z MD,T_ pkhuZD2SqӹADAPpC2fd!6Bm; B 8LpQ/ȕFAV([^>ӷEsT*dBJo+[JcK-s.cptڿ.ϴx KxVڇP-%u,W+2Z\P1?UzH |?y9Pl bf<~?uOz0*SxJxwp}`OĶ<7_wp.9Z޳_Wˌ:_Y~?#<<%пAzL#<=Y _:N1W}9YgI'PΡC]}@ u.WoNb/Pٸ)YEn:O?a@1FPUSPl_b(~zt|X˙aMpZ-gx$iֹ{Nr0II(.Z-gxC Rj5u`{õ{j_up//SSite/images/raytracing/0040755000000000000000000000000007312407566014106 5ustar rootrootSite/images/raytracing/ocean.jpg0100755000000000000000000037042307312217700015673 0ustar rootrootJFIFddDucky<&Adobed k       ! "0@P`1A2#B$3 !1A"Qaq2 0BR@Pbr#3`ҲpCc!`@pPQ!1AQa q0@P`p |0 @ )8cRc` @!PTHTP@A+@  @cP0 BcIJႸ $THTHV TP p`0 DT11cP  pA@B*B+BHAp+G(0@ @!@ 1@  (01cƎZ8`8c TTbPT @@0F+@ !0PP B1c1C a @HT+-@ `hJƄ8@@ @!@ p `1(+)`%0(c1VT08`8 B!R&UD!Z$j0c @@ @ F8`10T@ `1cP9X BR"iXR T@ !  @  c1 `*T%`11hP1BM+BD!p!@!@  9`1 ))jc4c-a *Dұ*!"B hV8`8@ @ ͣ1`0 +A!@+1214j B&! BD!Z$AJ@@ ͨc1`1TB%,1kP1B+EHH!RP0a V80 j c1cT j#1V1Ⴐ$$T"i +AH XCգ BJ˨0 p1c @@  1cc00Qb%P$B1p @ %]FcP p˜ RPScX1 Pbȩ $BPpƄ8A (98`1P8c€P @ 01h *BY!"B r@  As`1cc R Bc`1JB UHTXC8j pB @ €811c1c  @@t(0cF`*B 5 c10 @!@ tC c ce 0 @t#`@* IJ*D0 P@ @*C01 `0@*0"R!`!Re0 @ @\T"P! `1ctc @*0 RPBDU"@H0B@!R@*02c  B@+EHJ p8pBBBB@ /VTHHT 1`2cH  IJ+A@@1 c%(!B @! x ! T12 c`@`1"i$+(qC8B ! H  *H*`1cʆ1T)  `1 + 0PBR  @JדP! 4T:p110AH@1B&@ c !  @td1HBMI4 cP0 (c1U"ʆ8cpB!BHB@ 1p1 RMI6!Tc0 e21RH@BqCj BJ*P a!c1P I@ `1` B 1TQEE(MH!8cj @!B @aLqC 81`0R4I R5(DJB c @!BB@0B&c֡1`1`0AB B 20I"H cT(R@ B"EI$FTqCՎ(0 `:HH@(eE8`0.}T|M!c ` 8`0BB!"HA 1 jʆ11P"i!T!qEhpm.fiN͗o$zW\Vkn.Ysgt0-67æ;|sPBH3ffx]ӡ TdHUY*!S(bХ @8(Vj(2D\E:aO%Hb8TPRN/=-t;n}n/sro|qS izg/fY(DVas$3gǗ`U,IdxPcbgW Y*tXfcH 2h.&L*'E'PU'Jj:t/D/O_[ǯ c;|_=x\~.:̢J$,2Y}x`8b'HpS*a "(M"BqU#:QtهYy!Q)ėJ&\ZRhIP 2|SމJ[7ߛc=os c>_Ŏྗrp$@VC)pt?.j r V9f0貥("E1B 484˴8b%u)%d1fPXIho/Qz:rƹ2Qsn5ÞD9;2fR,Rsjb=x,)DYX*!SJAfqZmh ^KH.&PJTeĉ]Ree[(hgZFt4"ut;Uk.н><ßG5 QCUFQHCFgfH$VcfIƟgiדXΊPRTeTQ\X4i(TrQQ5$پne%ӔFVnIVgTsz3Rr<~wX޷5D.B́eCjQP2cȉRR,l>(ƑEDP%t+64MUu21kQWI")EYFZi]`o.V\:uQ0hֳңHF..#)Sp̪! 7S VrLgmQd.f9gP¦Dm\sUeSJ4Yf1EAhQIW^6:c(¨ $# "$EU!cDνdQZe&TG6^nUz,YQgFt৛V )*δAg,47Ҳ޹jJ2(EDeWYmY-MQ,1:9Wg?y>꒐Y ӧD0)(D0I%$,а!{w?\MY15%eAQPȪ":qѡ+I#1hbJֱҢ⊤1(uєieF5e2HZM(²/s%u%*•AD*%p (T&0hBBb/'dYcIDJz2*&BEUe@AJ,4\Ck1ViIt,MrETIb)3 ,@eF_?e~ҵö`R YS&T ) HB8V8v$wʱBj,siPhEd֑eHTɇuG8UD֢(Hz"GZdUTŀ.5d g='PD)&QK'` 3zbFY%dƚe#DIf\AZ^+zsƵns#`ToF ΃S88*"8C (D44Sz#Ypj˕F?CE(ڡ Cb"4#h!3=g|.Vrjb+*艌kSMIcL(eyeQu'Dsb26gU)u%޳!5K)t :hEpq:((CQ;&F4PiAHX$fEǫ03#S#BLdjAYTkXEC1)G4oY 狢hfGZĊQUZDK blPIH$VNs|*VJPX2bU1$nNO?Y=.S+ZGZrmDIsyץټyN~6x}^~v~MJdȬk:qPtT֑sFLX޻L:j(73t[./KTeYiqjEYieTE2("u4ya˴~Oo/.&Vsy;>3uۇϮ_N]:o>kOY/;"GӕCr;=/o=zr}8 UDk4FbbsWUt-Dh=69RP eUL#"kImYpn`ЎurԈtʅdiYVu厎ܳrץy+%ENX|χOSw|RL24˔HV=L.Ww5go~6rΚc8LtQ3}]\e:Db*Ԋq1 S:(I)e9bȬ\M2645ŚR(Ti^:qj"l>Ǯ??.}{~w\uqvǑ1A 2T2#JJRoWmӇE7ϯ^F8 -1ҫLaDhTmM*ZqDt:祖 gWNURTYi*&Ƥ&^u-Yl\e+=/)Ӟsy=t[Ǒ]\ed%˭8eTH4.:&15j:y'Tgu>oO˞ `^A4epvb* (yY:MaQcmuZpf]<9:L4iAQPglX4phMcL76<=syqJg^m"A2g$UU]pdƑҾzf*h^|uy5˯&Vstgk#-5(4-L+˚4M LLs-5lXζͨhxeٞ|FuiUJ8i4.eVa;cU><5OggIB0=˦L92RMƝ8q]9_N\f;fz7lE\ *Vzk:ka5jU%+("72D^[K#"\3ӓH]T`!Fi"ɩfޮ^uDc}zQ:," J,Г)1cKK"iKo?NHy3[baV ^JKeQ6HJ;M*®CFifgo+#97|PT+y:JU4"p*^n^|uIMpyաǗgTi!_쏜ۋS]#%f7<}AT86n~SEMT9cS=Ycu[VUͦUtEiQ2tʤTCQzsDm3SM#H`Iq-B}9.q#@HV~<ޥ˷w?Hco>r>_cAeץ3gnTgYKkk<|sIzvMݼ}qowz<l?I @ߛl~*\0J-2N}(+:5*UZepi1ZB9zLB;3tovS=:k%QiUe8JMkH& WϸמK]9[:̔vVzЧͥK[r|zҝgyY$" 0[}Г]svc[:Ҽ6M2,5K⮼sk8̶q.aaӊGXm;#LA*6b#JUTtrl볕BAY\Tzek\]rl$iR9FtsF: 6N]c;+|I8]޼ل;}ZYT9&<gS3M7Hܷ9S㯓H@FmӇ.?@k oPȮn&羿 3^oϞ/S{oG6Ofs]wN|sךy'G_?'ԓs鮹<^Zfı,rιvqLuZ1"rZdboQ'>ܕnk8=LEEE@eDstػatZeyFklYPHEq,r̚8>EC\^:e&:sr^"_CV]xz%y|z^:SIR-^~+LiʹӋSN/+lhDҫ\0-8f5YִӵlV*}|^W-ȩ**o)@*H-s\iezIC6_Fzx7ǢfgK7N]3uɸ:y3sqo$c7Yeʮ]%f[*fN>../ LE@ek*T=n*ιzʍBƙ8T^[yaц.Tg;gFiBB_Sǧ^[$]8rN;{Ǣ򤨉>sN|糕7瓴{]rۃ1ܚӞs*1P8b*6zHUʀ Ȩ+e<@#Nmqhq:8-2yN~ /G6&n+;^YQt\E\tsk;1s۱y&ؼvg<+9y<>>Zyw5vn:eP6iӖ^W,E "jj+\ʣ-&©HcTo m}?6=8L7#K˯ 3duѤ&{tsd\&*7\~FׄWo8TEG>ßO6kps*o9}=NXߛpPI:E8cU *Y88+:Fte`\ig?Ty oN4dh#l5Ś 1eWYO;n~ϟTI$I$ c\$I$I$I$I$I$OI$I$I$I2$I$I$I$I$I$I'I$I$I$I$I$I$I$I$I$I$I$I$I'$I$I$TI$I$OФI'$I$I$I$####"I$$I$$I$I$I$I>$I$I$?=0;gmvCI$I$I$I$~FI$ȒI$I$I$$dL$I$I *AA=c$I$IROI$L$I$I'Az`#$I$I$I$I$I$I$9 uGRLbbbbbbbbAdJ:F&&,dII$I$I$ddddddddddd)eh$%044:Ԙ |X  tI2IqK2fFFDI222$I )GbH/ԵK$}r222322$I$~,I&FFFfhøf' LH#GL$ #zJ####333"y9I$WBQN;w;͙X1ft:&FFFFFFfffHt:BμA{,IJ_8ѷY'S=Xμt%I,Y;gl`QH&HbY$Єb`,vac bbA3{K2fl͙33&ď;yڝʙԕk%PuuII"2u:L 0LjbQ*EOi52Fhw*wjwQ;p͙3"I=t:R(EВY=缛J=B1L*`ك!LgRjEL;l1JKHB2#d̙6=\&(BW0A|t&ԚS E"X,˞11 #6wᑑ$jt!&f̙YFu1=&dI(JHLN>f !I$ MxIԕ )IbjIJ:t\J?'BjI'bZ~e3Z(EjWQ-+Z_ؤ?zՙL]z"xՒK$SfOL3= z/}b B:&'RY} #׎Čz$uOuЊ#N5vb-*jH4uec]p. }_KȗPqБ|AӘ#12G!\.ᣪ UYiOQDt\BGOȧsۧasSRt=:g,+ZYe¨mѫTuj\ctGS%%-d1E*ԿndC1~JMKY1Y+%!ȝC!+ vWn̘U:n$蚖O+_XFF,uTz#Hp׫M-{XQK"YǼ`aS&5ҩqb:TPّDB{"lXҠVsh=ge|+Ymz+81@찥mw,t鐺ԋXJWlQ\pIt}V2::#?ZstI3xln{SZ;E thLu`[6 ]_,?{cv{ĩzLhX_RMjeXS-UhWJi4'պͭB l*Te`&a?U_v:EDku?ǮsZ*8SeOrS SYEbɢȇS-6;"5`ƮmzڰMzEm]0ig$tȵ]ũbbcDY]Y2WբJY"+^[z+ ,TA+1P!bY?.ETI|ـЕMt:V0@]8s5d[!^+blcF[$.0=,Vv;tDNZbڒ+jj~j*3>+TgodcLz`/XB%] bu!9y$ZfFXN9gfA+M$Ihc*1֨QYWଧ'aW. IQ4]GUF,omסgWR0C_TscF4RNWJ/Ju"3E6V-]x½"v#l%Z/]bU!E"3x#UpZg|mUS^˓v7r努2Z;О [ET&kDl:YRkdȫbǾ-}EhXꌅ[ {KCVpq%,N/ H:~#u"ʋebr1v#}Of6'AFU[Qv5q5R)um^HԪM;e^:ckmI4U*] I-ڜ;?ٝIkڄGjk1+$̼j)YL߆cC‡Cj:!:;NF.zkI 7I TOky+\{6 Ԙd쳵c-P멊Sjnbcaѕ3J;TedRUcz+bth\K!p,~ :^Rm[V8eUάU]] )8Tv1ȗS̝tbY܏sk6!ڨt.U~㶽ښUMGL=z1LǸu>3ҏ}; uO?;l:̶=5uzZ1)b-}7;:δ2c[OdeO'tcfEfzZ4j&жk-\d*]״n,ΕV]kLڏq][aUnf4[Y7*aWȞwl!PIttL?r4{٤O[6Vr*rW]haؕV=1lN+GgjRBb O㾫=uF^;BΤYP#icTSޫvVY:o͕+] LضsMF;b׵PL-d[Ʋuݾ$wD-i-H+q* l}Sv*õøثf7w|[2SEUA`6I+SThůiGV-TdRvIKcjb[Yx[4뻲Zݯ6I 5T2QD~Hӗ-ѳR/{TL{ vHUXZvQ\̝?kAnu CfT0Cڝv0JŢX"Ne%e֥bg\Ԡ՟ӳܳ;;XhMaRj7YBznE]hj#FlFvTDf;1C>z;{J]"B4]ǯe1ۣkz)S!ȪnbB6ѼJ/mT刱fl֩%Z,f*Bc+'ŏW=-EmYE6џ>РC&7AX1ǰmL^?G]V?Zݩꟳd'X"CԬ[؅m [^E3gEmu:*gf-uTvSaU!ڑZ騘,GD<ס6%j<0;T0҈L6!utiK{U݊ZUl-SFh־8]; ?gVN[Bb!/!1NJMƶ6xzڽ6Gt{5Z.e~EQaڢ?]ytk-Rea3b8FLpw5&책Z֎g4}¯qkQheu# Vi֏j62*mftc-Ut[eQک[Yuu6i׾[n\t:"e5jo!M|(j.+$[vEik"^V1WĪR[.m-}~>n҅t;-{,vBCZl?X{nC"V;PZcP붢2(Z5Fwh;;~=PS/A=wwT53;aSUNF3](Έ;6) t~ԉʇpFasڣ!jlIrbbȂWէ:WmT)Ҋkwmi%nm^IU/*;W[J7ӥ[[mz۲&O+J~<^)`$;XlG1 [Y}:hmZ HLev-RvjaTb;U;zaؠ=CiRĺ+_A1ccY7Dc{M73ƭkYAT"C; нUܮW˭#cŒ2S$dUu*llteد]F?KSn߲2s[MVЪ=TaK3;~=ƶ^5jQCYl]WB? hZ=?՘\%YL1g"D&6f{QZ;ZP~ߑ[c#3bw10Gi"!P3vQ٩٩;bGp-rvP;=⳷ơhmR:UYڃ`Go[-Tu͚ JLjx=cĶ+.:y7E|;n !hfywG~hV%"JE~xlZEh[nygmbF]V+Q;W΄wFB,1"ccMQ!֯ej~mVlIn6y:S&ǼZ" 2!=[l-rV=B.-;4LMx̙رݓ&eqYYj&=.&[UTjڡ\cS0 r z Ħl{ܯTctk0Z!igj:gCQCcĠZf*B!j=QU !kC:##&fhɒ?gr?+K]ڳU|~{/#R%'l{#f10GhPZ?Y?Yk/ZtxdUWh#'nFc<-WfR:a9"1z3suJF C֏ј3&ZWHd=Y1ZtCBfE*Uʣc;U=ԅɳ+BCbb`vǢ_PʮU_6il[VC T;wL"缛;?b/ aVSíPҬ/)3;peѝ*G2Be&vn -ЊvQY k؊yEvя?a!lsC9BDAu&W1:i,-H致eHw3Nr#"6bLXtC%tw$LCB;{Tj/kzv{|=l7ԲGZOýOv۩LjaS -m{ָ3H{熬EbԈDUڏOOn{Ojً:I$:§mjǤt؅{ew̑ޡn?YhzRRì%c+͖MxV[iZ%TJ/y ZNي! DI2?";u,Bj+ ]ۂ*ImQzHz(Y*_=Jyjڷ=wlLYFu5y5=v1[Gԥ[Rў]YE4O+ V8:-hLQPr{]4*úRgfMøoaj1wD΃uEIE# P,{Yz$2llac`$;-^I+;n6TTw_eYǥ^@CB)G@ت܋ZGz j[UKҨ|A&ea&bA;V;p$HZblo'%umGG~^VB%MJeVkZ[{ȭݴJIeݧ=M)dc'벾=~ Ops&wucHM-,Ld1+-͓; bh[.%ɑ$vHw2H&bc?*"drSuMj̉ H C׮j ֎ֱcvKIt+fz҇?~wjn6Vfx^jyv-v 쪮K)aO(ȦXUpLD"U 흢GV+GAu#2mhz-2 =86;XUٵ5#:1ך񑑚2 dHGTo~;ΧRaB+~-gkP}h]rٻ4d&lI!1-Q?gYL2I$֙}C)^2W4̘e]QZȔrVA;H111 T8c T$R񲶵r؍cVe+["͆oGkmbt}yz14whdڵU;Zui(U_)beԂ8X8T|.1}=A$FP+.lWXB8\f\{,Uf%%4ɯvuiDUE!*+RI4Y]b,!TK1ȣ<2Siob;lv=e6W5E56?ztާKTV$u-^m5yIeO&ŷRLL!oV\!2KrK}g?CBs}v&$bbbbbbA$bAAA$bbAbbA_h 9 LH  H     H  >^~B}[Ըk|,p}+@>鏡}}k$럙_Un> ~=3~Vz_?J({?J/_S|=Kڛ˧Ҵ/_>uZO_`G`Kcܺ#RѵJFKVђ#GhZT?E㶋!herVx\^I|Goz }.ڒdO[ xTi=S𤟏I$hUƾ>$\'#>( @̸LGǩ2~f~ #Ǧ8q0A}IsUē𤟃?>^Iy8I#X˗I#Ds$'Ϫy?=sz`$熆Dz#,nj=>Ǣ8~Z9Ib~ _DzOI#|-pI>$Ds$O3rOǪI\6?S DO1`cI$#q?IR~C澅DTI?+? y~ALOz$}G,w$̞'EbLUϜH1##Pb``GK$qɑ<#H?gq<4/[C)'$`0|W[e|V/_[և~0Eܪ} -Xo'v~\6; 1ȟ Xw2*+23+r_me}U-/UhW\5o"²-ST޾ТF%hVTRKຘ@VOuV|o}>>>㾟JS^t>JգڵrO8HKJ3lZ~ikSk6R͕,k(bp3 )8wp4dّ?Y!7Tbp+ ./?jf0Gl\ܑ)0kU|-Nx3,+AZN|VG̺`*Tl$[Eewn.حт/X8(01Gl`jGl Z6+'MӺ;H]8;bQŊYooN5b~-;o?~П+Yl|vu;Q;pzO '`w;핵=F l6RvZvك0f,s+H9Qek8~RGATc0^f#$_uf;٘8["I$LG4f\Б;cQGh¦U^DV=*-k;h-bQ5מ;̘RG ϡph J5rpgk:&ZfFoVv[AυR6#4w;ڌ$Gtv¬˴ƟgVvB^'ցfO"}]RvKkkb'>t-#%uՏF[o뷛kLzu}i-p3rRtCvJG= wNe$=]#Q?, ?74!Zt)5aHW{e|`dq񺖝?0UG}/G$~yT>NjQO){)9)))tКS%%¸}sSS55Xe-i4å$Զe|䒗 eMzz$%:lgСܚYkWLrIv-+ ڴY?2J&KFre2]T'{]mPشS#ЈgPwRi^+Z24ZOj1|pܡ)֒ M(5)xj6ts}bhL^g,&kPBbϪsiY ZZ3օdc>C׬Խ"db9Bdg:tZyO74WFhid:؈Š#E89b1֫fM{lʑ"lO؀{l QLt(›SZ8'ѩf LB]u!ŘA&'N ܯ4+91c͆KZxFjX:JQ8٭1BLY3i,,iP*Q5s0j8Fr-kAGQMjfXݖeE>yP:iP'mROFгAL+U3Zm(wҥ8C&hB4;EmB Lie)4f,)Ơ@D36yL?Rgb lӵ?eBv"Jbv60J2&c6*1bto='tbB,t#+JDzp:qdOXrЧw&kE6KuxjjM̤֦;VQaTEt=p֧CJ`f{6 &vG8֞4`6GG&KjB!<!BVLxlb1 31WfOd)Uj:y餀!;RYIp*sc0!^ a0GNcM:B^ʉ5;'\qm)bG`A#3pЎGJ[F3ZzSxD&H Psu;Xf-OZsݪ M",/NƖD YPOPgO|:s =;LEeINDi "̞b8Dt؀`4ijl)YںU9.SjjVժG4ފ1y=\e{6dUF^ K.GR-N  MOdyk٦#sޅ&'R\ZjqfXb֐QsgNpy;'K:VBI&BW/|{Ph,stYj: iv*ȵ]9un{es(uW6'ѥ=QDT4*d?Xjĸ]fQ+i5v3(K9` ]^%5WfNy!Ip`,jjN`" {“iV>~M f{Ʉ>l)E~,]b&ފ&#(N>ʼn2n8$j*p%8moU7Y'(&כWtxS# 7]a]i h'=JzNg>fT83,, ꞧsXD3[! =X 'Ffg) S|brp׬ή{~$mOB,$XzL*DZfu|nSpO]!5'y >(?Paz!(pQz2Ρ=;UE ST'X+2Tfo5~RNfSBffWidcRډ"wE8aEuY`LA: lV!-j>?hUF/[1evIꩪl o^\cαg=4J{uP,]B]K'k  ]>MޘS{o$1i|0i_;_F:jrSwwNuhCRN{:GN EAN|8tN9R\'TibgPmܳ&!@mv=p*<=udqojzK|Ә/{=]IW5z  BIEK6|/I.ښ^Nұ^OP}a]m1RMI8OzԨof=3s(CK*#R|AM!C0]r;ocژ3WZ?3,8ZbL9AIJmԵ=tL4^$};qP(Fb᱘(:pqǮtQev*XIJÈ(Xb2橏+:G~!Ks]jf h'Sw)/rwԻWBZ8FVKw_S)fhP]*oEU}o05!I0a^ƳiX@bBuI"#2ͯmô$WiwH^b7N5oG%jJbaRû}uE@g@,!Εzt cLDWp+Nwڄ, =-V,P51NCiv`)֛55B4 _uRbjC,1Aa갂*̜a+6::bQ9Nrz:4T!ipNPoXC{KBP[eh_Hq6xQV5/CvxX(aܥ,Oshޚ-]B昘.:hv+zLsgJ#dXh`?f v_L/~dG]+d^nN;&4P S= 7XնNobImFG_*Dإ!EZ= 4zDzen\4f\`Ti-<5?L4|Z3w84+]]s醵?x7vQZw/Q 4= 9zN gvZ37 oO;.;Կ5⮞`>Apz,oˊ ->K )؈NQwWw=B=F%T6/cMHfD]iOkP^=nCm{i­egM)sB~'exҢO{wAFw' QCH>JGg KlFZ.5t4?VL%h2bg[ī[{f}h#wLu3USiDGoO@r_]]O{xvy:@aB v?hPm}?y>ircT]1a`*0묯~3lLXw=x/4.ܤwTew1u,5Q ];^Ogoˋ̨ئPL@⸡JQj鮶%F<zjmn{ԟH%F> aHB1@ La@H j'Yc'C=4J`b}Q0n ~aTJ}@w&N*vDCڽA\[y"PztXoIKoE sivvZ:P`LMJCkr5(Vq=X0uX*P]GzVZ=! + sMSWKm%J p=ShV`}z'5AU&++\MQ,tK ?U#LjMױ+_0ފ"u}Tl:w&2@Յqm5L?)ڛŖmgޣPat@h> l"IVఈg7(MKn> u^&Xyb%*ERŴ)xm0\ASs ^Ԇ\OPܰ: j= W2žEAySG>K' m젵O+w(Wj]vSجiu nro,A4DA<GTA_u=V Ԧ8tڸj(_ýӊ_WV!U:y'M>{V.C*主SkyuLjqS➚w,t4:m>4j֠[pUYMM"|?:dڀRSy)T{<M^J͏=/ O`PL= ڳ'rT!NO\?SSm@͊]U +J oEQXhs()WvJ]eO[(ڠW™OR 'FKBђl-u֛:m`:aWjE j2͇G^kMbj]*A0'a+ҙB$Ut uRuC^iȬ9UOrg?xNETڽ>KG(zlc渿0ڝx:? HI_7pu( [y^|cgcP:\4l y's5`{[ITbgEDo>I,l6$n).u,&u;h جuԬF z,<`=KF\_nSS=wc.iJb\]ABSݺEi>& E 3(tUL1T{BT3Xإ;G⮝EzǢ_{WwNT* (.}auXXkAֱR+ܿNXjԦ|ջXyV,CpSnQOz~Xn> TjNe#:En]-cn_+-ccfs 5g}8lv~VNTIV(P ⢅}ISSuoP_'IviP%9 h{-=m+{X+2ϱER[zn)s#>!,ݡ 3z%C~/A;P)SA|Vy:~( /zV!VRԢR e̳ TLK&xiBJC,tQ`ˤE^H?( :e5a ZΚc0ئa%MP¡Reb)!bBmJʂ⼱X9(눨ESU%C@TT ޸b⺰MJ4Ib`caDBJFXs&mj{rf %54 [@ђ P JjY#RTd$ۖkhݫRbT*bu"!YJiWLAߗMTI]J2ʗHLTDdXyU[k &?z2ὡ0Q@{rC\LdS:j6\FI(8Xk*1XS4 X@Q,j,Ke5,$FQjhܥԍ%CWzbRV*\P+̨(ԡRPM"JJ*ĨTΥ SPSe55Va^ֱOf!BI)L2JB Y#)Y)dY'='1RRSSSS\J8jt3RRxq|J@3V;S38WyW0+~6UqW9MXrFX9EF?1)&getr n/0)@]7DF?%2rHr2b=ꍹܩO#&!a,JYd2B,<QV HQ\EMiXPҿoHcAb(s6+X (RYU(b*R^%FG,r(JB'."+TBubjLLUp(2b Vkްr)骡I1P̫UlFᚕ';ĩC,dl(5 rO,21 L4+\Y!K-D2Q SX*Q¥ؠJQ7Ver@dC%/)\u:P T*y0ңa%%)QQV\ dwWPpG=%IdaD>tҜGRn8,<#J5vxYXꎴ]=|A:BOR{W͘(P5 eIdd<%aЈQV((( V !K,(.FH)d*l^L!@,P КYR,̌)RP 4^WvjpR}ij껭=5:oz3^ a2FtB$T{M4Y5tYO/ ̳%,5:Ģj .J5+>H,C+ (7B',ժ]88FW)ePMQ>NRX.$hOQsӆ^PQv\ O<! $ RM@,T,AEIAbb9 :Y`:ԔϤ.'zzd%%.}^|!3>ߒ ~ > RlQ S%HAb9a&Q*}((a'=q@(Mfev-/m?kz̀ޜrˣ #,2G%2If%S)k}`%;(O抴tЀS)ZXцHa1  #y`r$:03je]pQa)e^P} ^OI~Ŏj*6PQ >9`ЎHt#*j"r@dHEEGnWG SRcjOvT5.(LtӬwˣ+&~Ӏ Ppܱ#Ѡ#S>a e֊< U!72J]r[8X$55GIMPAgNSPIzz&:iE'b~ϓR3ɩs3:]MwYb~WKP` ΠC@& ^doITQ!]yTbS/p bXf,v10̰5#Z|ip(Ms ,t!UB̷ϦC$}2GFg+Hy)U$dCdJ کT+WOЃ.΃:JjOmW@#ӨЀu%dT!E];>0SAAGaӉF ®+XLmN#=toK;њ}_z`bz(TzRa@j'^G^Xcpe+ Y,QQPl28QAYPNME~%䚀[(GZ~w6Ar%h#v5#551Byvdh]{̉tɝMBџ+;f@?X4CM% Wɻ'Mtf$ mL) 7 m';S򫪭^؊YQޢt AF=e+Х ­V$B_50+b4TX+9ܿjV2q̾~ZAX_jRjytrM^9佚YfTJcT)LUrw5|ѱbj9T3CJшPV:ks!vj6*A54Z~e>vINncNfCSՉ1FHגij I}Ak?DmX9v<8iMe7%T sdc~>4<ņ>K*:ˢ67+s ֳ6MXrG8uءʩg:Ȧ1 LY\9.ά+$kj)a9a AMQYҍL9 ̓X@+j4D\" u¸NMK L#c#]NKP4̕:omj^;weΜSw':~fF8kD TbNWSmJ$#H}cBBBBi³R:^ORj  j&NnEB[TF'9pa?91D(' ytqVJù1PYBq!D>ҸTt_YG1P?FfiOM˩] Jk`Nתybc8E@e\ K/Իx'W QfiYs!8.21?!^r.\r7/r^˗.\-˗._˗.^.^._kwr˗r˗.\_˗.\w/[.^.^._.\r˗r˗._Kz_+.\r˗/.\rr˗._er˗.\r*W\r˗.\r˗._R˗.\rTR˗.\r˗.\r^.\RJ+n\r˗.\r˗rũRJ+r˗.\r˗.\rrJ+RJܹr˗ .\r.\r˗/˗5˗RJ+J\r˗˗.\r˗.\rgrƹr˗/RJJrr˗.\r˗.\rU%K.\r˗.\rɹr`\JT^.\r˗.\r˗/E˗\0ar˗.\r˗.\r˗.\rJ˗//QBhRw.\r˗.\r˃. 0e˗.\˗.\r˗.\r˗.\r˗.\r˗/*+rxJ*TRJ+r˗/[. 0`.\rŗ.\r˗/ .\r˗.\r~~*TjW_.\?@r˗Wx._ HperW/'_ +.^.\ɞ,FL?\r˗._RKԹrCr!Kl<`Y|IPӏ~/R˗~ٙL*Wt)/OܸB[{Φ]WJ+C.d:s3RJ+.[333̦ZZ_ߪӡy]+ש)} L|!dǂ趱`o&<*TH}Q}x*WRjRQ11JLLLJ4I5fY(OYQz)q/KK!A/V1֙Lff[KqH#h aPIdYI][KilHA-˔JJFHYIdģE2JJ^ZSεepJJ_Y"DW!15:<I׻^JJJ&%%eu^[UjWմYy%tO2WS1/-;r|3Wi+eMhy|XQZLsAg<vJhZ;S-/yYr}.W/1=>OyNΏqN_X%;P+BJǛBcqsGg 9?r˗.\  3_iNT辰]33M)N{{e}2;uWJGaCujَl"Êo"\|}cTX[dUc O-9&p+`݀%ȫ{QkI;pV՘=qި|2MovmǜkvQG̷>ϧõH<~-Tm̹1XJWfХxnS[T~:zNB=҉^[.XLi(ŋqeP7vy()m!aunUBd:Vccy9Xא}UU/SCmc;pvm\.W&}bL~8ثF=3F(_xݨǗNKݭݖzV7@)L*7]Ssa!v]l3"ꝇq 1|\ޓuL]-^!OWG-h2Vԓkrf](=omhO]b0;,hvȠ:S~u7&XNx'd6}nS.; .:zn{N]+ibt8Iuؿ;8F6/<'G)c|]G.oל0G96l >- .ȭ`‡f,8SӬWgb`WӤ)49ٽ/(8ϒelb 1}]6jn`bgJۯ#;3Q7s^r<{Rp\zA %3X˗.^hFK3|_,QK17!0/a&t6|GvTZw~2SE]#)m{|Ic7S]{qO:rȲ/;]qm~`;n}adgW'vU=N:#;Ⱦhq =\rp7ClWc<_9g/>˫3{>PǞ*4d,8>QKUy}讟9a|qߌOBox(gܪzu.="e@9^nx]8S~fqsRuU/*eqEBO,&iwox]]W9P3Bosҫz[b 7gݙNT^y}`(*F3=< 'yنӃ[s`tf!hq~"6f랽eѾUN*I1>p;Yq\B1ےn,40mW}%ŐyuUpb?1̧7ӗd s8zl-_n!<(]SGKܶڈͫܥyQ/́㏢"]Q1NUy}TfvhNo32!9"$e\r˙LM F.h&+,oda 1;mҞlnrh7`./mE,NRhFM`K5g~!/t<7bj6(aFePS7&T [z̡~mj67 A04_o~0K!+r+ڕZi+~Fg?izbSnZQcۼ;@(ct)Vۋuڼh@WQbi8/ל z$K|ЬL~0vM XۓԵ;a> Ī-rz_1uq11MIW0v=!ޑTbƸ}%m,Y_`u q;LbqTAwzK3W{m1[l]w*㌸oX9S56]~s0ksG2 8Iqm&oV?=1c7̊=?7YHSFͺ:@Xm.ܽaMEio}@T7_Yz;j8y g Qi慼*TS~{gU{B˼^[3rG˵ʛONGs`Aap]797ͻ{6d0 Rs6:p}ҕc88~ 8)=˗/[ЦUj#̺[e.9JdDKóq;[Dj-iLn_{g<~y]e`l!%1`AJ ۈ7-}^P6|soNG=;F1sU[w**xz_5(ᓓo<`9W[2igNm|&j=ךe0akJYѐνYM=̴Xޘ}o<̓Gn;B*2QwvE>D ɓu2 z/f }59BP/-oFzyg \-o(~C~8h9XN^{@kn"]u-ϦO[2*1pRvO0T 2xzh;5yٔv*-#wX%r/BL->Ļ]#Nh UA:6`deW [BMDryA>%|B3.h=6. KдQ*MuR1ܽn.fL-Qڞ_x+諘ܸa6I46w:*K hVËǼ(<ջϼa6@yzDTT?7zz*#[\ז?0D7eG-Q6CX+ң ];@l$Fe7S턢\|*stCsɏ~eӼV [WϤޑ9-ǘh*rW[9^U:a!q҇Ϝp 꼧 XM$ M`(+- Gp2ߡ*ȳk~! ؚ݈7WaL,\k}HsYf~H2yoK&syv "]A#b%=26>x?2Qc{퉐CB-pal5nIaewU߰1`|̺NT![so}*ٳ>}lam2;\z*辭3nי`^^>bJ{묿de\͊ٛٿfv,#~{Խw9 wGcos='ɉ{VNYimTbdAu^e"/K 0]l qBrP@ t}EM>_M~.ij2/lz!$גۇo7"}{C,%g*PGt^_*u}-w+y | czSVi*z}+չ6lWWfQ+%|{N@ 2nߴӴ0*L5%U=Vv}B7 z7U0n߼;(z*%ǹHuL7_53; pϢE*y1>2}EY GAؾfevҚM) Op {ѕZ.1Dq<}yu*A㫉Sߤ7U5V"<&F=vI@U0=DGt_M0_D!8Pa?RyE~UF`/᧡dRjHФ8Ќ|wפb{wpv{# f-GyP_%⽧M4J^< *T.&:lZR-L3yr\ zPV?[Q,~s#̍<͎MԠf#ù}@Gr)b&LWߤ)h AS{QwL @گr(=O5o%cv*gv=NO-m>0W^x:wK[&6 㳪/e r2߼bB?~ Y=eB#}4="y)Ȭ|FE,'(+^sJ9N~`a;(c0![4hLCb2x*7F&<^_yw2}k?^Wxq?8b+ۻwe^ʹı]>+sA([p %Y-Phr+⥗T '$qOf ~ؙTn ±Rǹu+7+,]l>)-}[_pPσO[;$]W=G*ϑT./x a>>UcccReif9{u,_Q_E/[\='3 1FrSu<s䏽}J\O%lCs)GMԉdhs2òTad/νؓ{_78aO,@(~u/vǬ;^6,Usn [k1r7z#hn*`mbs˗Xߥ^yǧh-c,~&ݞկhW"=9V7/ޮ=W֨OY֪s&_(6W=q@>eTُEoҪ}s,ʿx*M_4Biyy\ǁG+ $P0ݿB ='0Ch \+_!Fs(D]6hv=jԬh7Fpc:M%au,sW\*N]Ȝ?tQcfX&: 2TF(?ss~UeG0(*n;0"M7P> ?NnM2&?3v@hIoӼv;82缩SV%gP.hW'O?4"2z_N6 _K 4t7j1ɵ딄 !)81I_L8띻̷Bc'h;2%dEzqxl{fbV|:<5gm t{d%;bI[-ةMovAv@JvAk̗~SG[Y';+}Ob-iԔ=tpj{1*KmT>'%|4<(0|nWwږ>\+%G+.v-|#qd0{A70'l(1; #i?D|ܸ6}wBU:lTp>*[S݄.ޑ!•| ɕ~I"K^d?0mC4>D2غߓGPCr\ *~u{Z)5CNńķxnk/Glΰ^=AeYy1$6W8O.uoc V%C$p+pN%_]Ϙ}%kWE"{[?F\uT?k7D1=JuWQ/AaE!|3=f0#1wR:EK^78?NЮMfפBKU|ΗAa){#Q♗F'86 AW蝸׍ȣQ!`͏B1_yDO>evT~s3nߩXS^Ws:^S ^aZ>@!ڗQ{aww^‹eї.ī9 X`ɑʗģKnٛ^# ujv/ި8iЯi_R؋Ds~z%cBZm.O+\}>[q1z`V¯Eܥ1_Ü>%dloޑ0yk p/"w`r/j{FXVqG]DZHeU(ߎc۴f7.T{hۜyĒC8^"=#O+0ᆾ#R>[EA^{GO0OӉ%>[$Nȶ̻L ]Oڡ90y dۮ>.}1/ww'}.=>kO`#]_ty1|G[)aֲ:}.k7=e=#iEP?(ٿU˩WքBzg \kB}> %y_1<ŧ9~0(r _\;2ױ/};׃Hc5?3dVqKoE\{ GBʛO98~ldYfkw?N+=)}Kuos%@3=Q_ O9̢W\bt{\$=@ue$)2G?a˞**}|~yFez8+>b%+=g}b7]KXWYqolP<,0ۿyM^nlQXlCL}o y˛ U>3wdOv Pil{rv1o_ZKm*á)(m֨|_CX~IXK9zI._`T!(O?#e_''#3 -TuKI0*Y}:<(#%FY]Wb50A>eZ^BpGL[XBE) R~f]Pa!pdt)C,_oݗU=P,9I3?o#Q}.tD[ן~@[~,;ܨ-|m3ҫ$d<iR;ܫWBq{˔}`ezg^C_CoaQ0qcRzJoGiT[Joq-F+K\of^hhVQ+?Ley^<08X,H& '^SU3ozz6S|M(n=NY^1v#,7$o@|R?)F@=TIG|y~`zOK>aQm:$1`/<(Z&ߦ)TO- dv=R8u?e&I_(Yge)g]y :п s + 7Q`W٤2~+̂}mu{A;Kn퇣_tV[56'.Jm' ^C@?)vҀO1i1mOҳQM_eI pf_R &>-ŷ-?S엎~`m^يXe<4.|U#섩qT?Y|Z~f ߪoc荎\D"p8LUtca3[Kӈ}@rm Lt{Nxs0c|SY3ں@˩yRȝjɾUUz'rnwy`\.^;BU7:77CJyWIG;3Č.o헬e?C+4T'_Iw3c~ e{xG/̫M{$T}s}@f;(r_?$L>B/'У7LFdzdyZ^06:x) w~pP>凁a7)f7~/ԲUJz$2$u{6 M.?K%: 柰BPjG,(}q]O /}qDCƒD$^zto{?C(P_@8fPd\-ܷ~{!e'ԡSȵLf/q#}2concVh61]'G2}_x/uhZZ۵bf|׾ӛC;K[R1S0oѹnb&FVb|vTZ?#7sO|BaTb غghɎ<Ѽ`Pel2mY>?9QLQ{_)Tq?3ʱ,ůKK;Mo^>#0ç%KR:*_vJ:08!woQjl7#}ێBGB:TQK!IA#@|b@`P:WC ,-t~t+1'77ה{F*nUgڢKl?q_y|LK?Nwisd:-,L04n_1={7ڟ C_*r{"fD=CӟDN$S^wڟx|0.E2>M 1u}; =`TsIΏV}HHe։v˧ ,MUL"(~Yu2<ᙝqE~ +\ !az"R{X"Ƣ1z  ~q DO2˪}U>7dxh0!/3/0~#nX1*#f\"%Tݸ:A½j}'.;|uSD1­zAEg,{rNomNՓ^y~%oҽ`}o}z68ng˪~x!( D\̡q7BvcckC)Vp{NXx՞U턥^SJ=~GXe 7Iy':>[FJXOzɖ# W>Js?I"&[i?@j~jf :ls/_$0~L\@c_)D׆MǥmteL:60)˝LJo旇9F=>cae8D1{ӌ9D`j c~V̋v`?g91vc9VG;?ye=O1m+Aw=go)YAswg@16P+Xُ@{c-lo;fcg?DzͶ߼>}yK?'o/W^"/!D)݊#.C X/H=/)F{Ê}G;(}fAƨ=R!sgh~:ȻA΢9W`~eN~}lS(cг o0xz_̡R >З;/ n=nrԸ׬v S' +8kv>][#01W&]0$6jt=QʡB̙NHm_Ô>J>7Gߩ0Kc_]rG 7=vğ#AWxZAnׂh;FoobK0=S vdI^#_'uqAf/!;͹zbdI,yʞ^"K;b[NfQγ͏ٞOru+Aݥ+wD=ÒQyLJz}u3 3lM/(NmDQZc.؆lyAk֣l:u(AҽbBnMhmaYQp0,l5G?!g~=B'}([苲`Y u3gtbwǩw;}>X3]}ܜAZAR{ܺ<'Ɍ^S"8ao"{q0%?+3| ' {r;ΘI/Yg v%>D2u//qbz`lY08.-ws.#bG~S^&Z2Doz% _{FX.*+?GǺdՈnw@ޡ-9grF=2>ԙ i>NSmap)gMY V_1-J,}|D{O_ **uZabpVZOe9W]v<~ePFFӣPD) oYMYՐkyEYl+ y}\!RYv`v+7)DxgG0-|6-2^"^qÉת#>F"U^!lfGrauo)a w%6^%[=d`%Yurf@+7|m^aQMRn6}'\~"d8ʱ{u8si#t`VGSԣU9n=_yk=;8D3'KD)5m2SʖI=/9XQ0dBMeFE;J8kSlQޤ!E=̖O\L50< {wLl4m؅%w+ 3f7]~WqZ-"۽aʼn3 '~=q];׼UVH^n x whCCwGynJ(";:Xhݺ)߆<{rv7݀J%,xcЂ9HGT*?IrBue~-WdȲ+Ke̻}#2Zv/x?wJD!#m.Rzn$b6BҶr.S`.`=~ҏdw'Oo(c%L}pv}\r:moSsGmq  `T yI]˅>Rˏ3 ~_x;W^݇?{1yMg_/c+6hL2`脝􅮸@>s3eYw!r/GbXwyY&2N&ʝrԋr"U.a-;0b3g?*qzy"mSk(25CL!&CSzd{[7MLzB (10%2leEilL(aߏ=fC*l?4꥽̹D(M4y#I"osف bWxiWx>ISho2\ȂޏQ Mbg |ĜkDovN.:G)"+-m>x!_g-Cej<-\u 2':"WE.oigz .SSv̰:y<Qvx+5Đ.͎O|toW|]սx˂-lN(vndf|ӇY8e[5gɀVWbX46%ǵC 6d8%NC<@}-պ0ZT;{9o~ք<nMqỈNg)8w=Hx5-Kd,>(¨tã)9]6/6J$=i~蘆}&s9T> e2ZMzk İ~.GpAfD~7W؆.y6Hs@eg `zN%#_S.`u*v @3 S9Dn01 Yߡqּ=u+2e:]m6 З62 uӼE<)䕵~:NR/ULkv{vK70W'z#%ٷ]nŀ!`u1@7i u.j(ۤ\j>rlW CM{BcfQ7Nsm>LڸFY)|^{CwBS)E+w.uO4ޯ4oe" U-g3W=}?3F&w&['HT9Zn1o]KNŜΞ o)N_P0[ ;38 8I}g\:f <[xtf){#43|_x*o'y+4^<5"!׹MQ_XLl3G-=/U2c L'Vru~2&t+~詘wfjǥ7cgۊn# Ee;#G]?zVCz:6+^l|@_AG|:>!nH@Êq^[nDz77ڋw\m06d~&DY!K@ᤀw&dǴy.)^"C͞>ek{BbNI%.]TQKy&]&U{+p:Cs.&6 T/GiNs3^FN2ʊ3-n-\Oj% y%mYLr]66 (|B`a'2^_LDmaX>q;SpFLF :tnDKp)fJeN?angO(%'^pR2sV}}4/ViMj[@\qp<)sV)K&(5 LDm:Qz#KD.]mKQm-ڙ1*y?8J9f?tGëz抋N~:L]]0O)y%[͆#`t!YSS/Qs(nR`:aTӟxjvfDҝUIp-{ǭuBvbn3P˴+JݛPkwd# ri_Hwljv'LB7%Jw^jt@ !G/_FGFusGf7Nf6$:Ĵ:Pv̓]ʄ!{;t&:6zǤCF>e>w InM%uD\{ᓁ@/hB" 9WIn]q_vURv7b6.Y(ngG q/t>^{DxVIљo0̻GyG1\'IA IF-e?!"mtB\FӃ+gds#9Z0u'yvD pFAk1,H<ᕶ郶6YVq3nh r/ߏQ8"9;[ [儔C")˖ZZ+rzfK G/lJX^spDY"]F6H}*"fhhh,l0&&.\;b\`/u弑1F# sh MR&v94 ϥ~!0Fr߇;Bcy2'RpDGmLJh36u9ENxndc389h ']cXb0_8BoAuE>= 2L΃// iG/cV!DlXLdEZc;&MyAVbVelOb(FEb*yq‏F=8tӴFE6ħpʻDt f-cn;;vrO/"8{ ͯC=a֔f tB;AKG%Нtcjeæ8ٌ2 Vu#7"mr`EK1jE*58DP<@+)q`JaTΊJl"C ,9}ܽ2ݯV҅ߝޥ'nܳ%{nK}[j%=dZDN˂s;:z~\~lmJr!zʒNjc?ḧ;J$[P63Lb!\T)3&%1'F""Z#xbt$nF*˴ݛ'* <]Cꗾ@ǜ7m][bX%0`L#d0KtRcK8Mv0=n~ gZ .17 s3^Rfz-žZx#ʅim$q1-.史~D.ޙ[ntw_26{JȇUpyn~ef+..qkħ zN . a( !Y>[*c2y>3qo/SkhĦYR%- ħHf7cG#5:g>s_eaV6ͅkKyGĪa(e9S(O0;0-Oz'jvFFW0Psv0LuD`u[@ʸ l77thRݢYblЍI"/bqdr0CϱJ7\{ԉ;G@}:ܯܤ4ƻcD(`uzEh^̥Emk~2Y>c\`j'III ӳbW|럼(1]SЬ{*\ 1ezOmpRBBl@vL7@<وBƱZt-s+-&a)"rA0N!ޝT؍t΂wR;2ͣ7e2zBK"n-:WB5A +g?-$?9[|7}W7 tSngolipC,f*LdzQқ ;dK7z!B0q1},S b>05(L?!H00ආL9\,\P&q`B@!Df&ykX,HS4.NIcܛa8Hͨ٠/, @%-̹P(F% *WC(2Q!ahPbʘ X0V͑*7YiG̽a?k v*H;7a՗H\B\tQzL$Ś|2CJ ^5^rrzЅ5:95)Q3+0rD}ugSbA:b$TSh;APt1i[ց(Қ健"Dm9XY"TrDib%4TjD)dhyYqlq̷FrrOjN~;H(C&z$Q/l"`J5We'G'+4;vD7>#~F.{6{a[Jm p'4z¡wb!5ۣ/2Dc|KEVDBBTDf!K2S$Sr-QPx!!؈,RbQ$ı*N;'+*Y)yٖ@j!;ZKZ9R?N!2O!lϒT敤7>.GF\{(3[_@r}ᔎ18S~b;^!1Afܣ,*:(̓'Glq,V'WlQfs|Cħx.$iC$.H#13x?3,%@}cԀavΘ!0R%4VU4T#QK]0*ߐ33\ʐ˝-??KtLL;s,2t܄<BPB.Ӗ;"2y1Qy_&9=t&(&`# c4yAgΆW,IYIYMu3L@ 0-: X"t.+F4##7#y bW_H%řTF3)v8LP"M 4(X-ߴb8?0T /gڕHG#R_q2=[8bo+/}ŔY@ejc^c%-p^0 :f # !ĴNMG# ͜Tc"2OVhACL F }2124DilG*h%̹a F GÅ%qb-i3$& JWj[9hqCn%{ NWWZ7>l~k/,'W_jO [rWaU5u ʋv&z."WC9l󨚄YJ~MgFZ%a(z4LSf FJ"֔aA .!WK E#Aں"ٷ!ʄVy%&"jBTt%qRR(0,}(Sh@A1PRt*}GdߧX~TrC"3\ԭ{KޱЋuGmُ1,[w')R7[.-:GFB3-]@F3V0踚!dYDq%֘Zk LT1b4f8B< zK3)ٕΡ.c؃ΝΛ%pa #t(ߤ1h&|7>Mj,ԟxG??S*홰8[I4 l O7-Sfb40?zJQ_];W1MEE|x :1K`4`SD*,n_Vк8hCSXbU0Q[#^(ԋ:2ye(A "`48-6d׽-w/jߪrb1zΩ\*Gx$ ie  R#x,uKt<M:h+hX,Ό.Zv'71c`bt!1:@L(1;̍kSeintGTsOu?ss,T@ʇ߲~aBo.e̫&zÁ%oCRWֿЕ*0_ :i4tm}q/x<40uP#Иңjh#Z޷4*JƺnMф4%hKeʕJjbVQ}mx8SmkZ~CK w> ׄԕ%Jn3Utl4KңR"h֤45k /Kf#<7_KJ =Ę7AzW5r+zTzQ|e<hj_9]讘:޷J_ZܿS+ZdƦR6с1yD!i_©Wj\+Z׆KՄnZ .o*>jTutnVEip5*fT.\Zi4&dʀ`n $uYp.WZ*W/RcuR~n_ize˗J*SSL\[ap4$C,!MhgRz^LiS2RuCk[ҥhx R+_Rrh,ހt %jխKk1w6\V ,ZiU/EIZޕkp/ZVJrxr|)+EtV3)թL#n+DlJ\BOnt3r'W+\xE˕f^:ԿizVC+\*TKԿζ3.%K3WЀּXPF/,k/ZZTzׄώz޷izV^p4Y~Z*b\Rkx+Ɛԩ^x*@z塡<VtV\̩SV,qu*^*TRZ\rpQp0蘥14rEx1|7Ғĩ^RZ\~z_RJ:ַ+KDJԶfTJt"˗ehU// ^ZV̩ZW^&8^w+VQҼW/RkZ޷Z1*:]A6r^d`V+pR/z.T_aEe%4։/z/Rm3.^.VxrZ3ah2ˎB3C*T5RJ*VҼTJNWJJZ\WׄπZTh *@фKVF\(iIC# 5B.\~ ֥h\bj[C 00XErҴM T*_ޢiR/P%iR~*G5bF.QT_rs3+K/J9K Lj(~ ZܹZVTᣍD]Rr4JVc5x._\z[EGCDZ WW\t]+Eht~:˗/[/Kz:DZru+Q pyRiRizHr蒵^+JҼWr7 0/j|$R&}STt5z[.\2ꑌb0Kz^h:/Jtĭj.^.1+ZJqԩRKҲFˌt\! iRzԩZCGH#/C5htkB0Vx*T+RkRF.\+85/oV\!+J7jhmd#VV[|̕+Qj$/A*1R ˗/KzWW.^*VBZ'Lδn[Ws KPeq`&bҴ3PuH0+BTZq \˃.0éRCAc bJiBLL@V1%/¨: ! z4eJzW4T.^# ;]ZB˗WJZ:жGQhJN/PFi4##a%j\Z``˗/LhMGGQҥj:ԭWRh4|uC]CK0u+K*:CAe41U2թPil +SDqe4*3^/CB%K?_tZ*2Ҽ%ec!ԭjV\ tH%xj$t4$>֥JeD.:]EԁRr΃K]CK._Y.--𾴸g̴d)M)b1BuBZ\1+R>_hŎ|.:@h5Ypҵ_TLr  ~*W hR+JIqZ K.VJ iz: Z> 2U0^`/džxor^+.\roZzêi^x]*T?bBRw+wqs҈Q KA)V-V AQ?ʫ%`j4TL14p#\Qz,BF )ћHҥe:KM0 _xs;().ht)).B&S/*AE|l "V^तIİ?Uh 5K-G8 DFPTz?:#6AqMJQK VƘ:ūwFJXKS%O'Z*T_Re УrZ7|-hsJ}Nvug;h&"Q'yup-hP[冧"%1 SJ[Qf%2.E b|1-˿㰨Hƨ7QIߗQ";h*Tvwc4;ERLu7 'j6AlExSd^`95/>p%! Q>Gli T 8w<6%JS&t O-N-p^! 0x/ э9uы"DʱLkf.#|AѸǶ^=F4ЖѶGQaJQȰkQz^ Eij"c'[e_^RZT&f& qOgsxNN;xT1O4uߋ~!Dq--7f\Dze6䕈ca) Sx*lwq]r IzjF($Hye I4|єC|߶}IIi-knl$ϽńE|e[^'}MͶT d m"mA W/o_mK߿_ۘ lAe{mmmk}Vi%*_o}lݭ=M&i7$ ⭗ko<=@e"^5m4i6ڎ09 &d Lkmm4{p{N}>$dHHI h٧ۤi&f[t/K$wI[,&MAF˶mm67_7I%d$I$ $aI, I$?ܘi>i6i$k[ݬ?a$Y)$ lA ,$4M'w)@ $$$@@  mY$a5{G{mnD $% Hnŀ,,"~?ٵo$e$KAIE`{h ,E [oc1vKom￴dMȒm$m'ET#3olY_}5Km{%  &H 27M&ivݙ*۲m$M}~ [Ov@ 6bG"v_6ߦMM12[@KeIRHi&Q`|+,X( 2$h[i6@,M\Sem|r e"PiYYlK = &Ns__?@%D~+ }tOPlei $[Q[%|KOc4Iٵ7P@d$I02lMp&Ezc9.^ﲒ=(l @Ad)2l +t-PJݫb fIdX+zLA(X@&6Y# 2Xe=?4Z.ïV+zlTPA$d($Qy&hpx0[-AYHE6L ~(GWE~zZKe]g{hj!L"d>g\vC6d8Ϥ`+G% m0/Km }l6J ɭ̈́ 22,$l tIY`+7i#kD :ؤ`Il)6h 0 _@-NhDtY;=3P@ ) 0 `r!p]D*K`'rVHD-uIDhk2GYM6kEWGvZS$6C,pM (L2 $yK]On['ɄBlip>#y6e0'ugSq fy<o4s:ߵP/J L=Xe }@@Rs;ZVQ3}g2sqd2,si h,Enh A5ģX)&Z9MiSG [6+M™!FRo. xS9imrO귲l@߄￁Bе:,@!o|/eh l0 @EgnxDOnLuaki!m?OM47ÿֹ-0Z Y JRIiE>O )A=xw\nE3}'/jllK޷Svn 5lJi HoC>ǯ~6` M0EyK~b+_J<(ݤϾ@X헄\_}#GyC">CAnVϮks^ ckl6.B| `d4:!,OB r.Ynivd!1=_ {7PkDx{Ieܭ۵.{`( / Z_{3ݫXTڏW$9*5(|X@L$ u.-woHwr=-6`TהPm%gR2oU,g6DnT"IWKgNkI b;=2 d0 ZwJR,NNC &Ud(Q@a,Ǩ$_Y+gjbQHeY+^Z|ySYqc  cGD3$4,alBU^. o?CœNIi P,2Bf0IHR9\Iyѧ$Hy=dXZ/5yP yslZ3F`(JL.]7#admH 0Qx("LE"Al&lnVd/~-?m( ԒYԛpw6qPakٝ @Yȑ2}o:\LMD4@5ߤL 1/+v}3|D7=qDVĀۍn]ˡh wHƶK1-:E<^i $4 nWsJ}rrE,%0}' "yFH9$o }h?IY˪5,t N@k.Jӻ*ui};Vx6ǥi[\E4탂+2O EĘͭX?#R\F28]#UU &KՔߛ@(@Z|_!<Y>ug^Vh16+2e '"h_1bNTn;n}B"^2t j:RW-yg9+OE' &v2ix& (L3lgd ^v2ffV@DZ!?@EK ~ɹC#Θg'<" \mC4s>Y`#q,X`٤$3P~o/dѰL06i%+ܛKϔSwL/ UiE;J>-=s#IP%o+f&,0K\ܭPC_)OX㎝1yOa{ b$l\-pitLS^N{uc13;vh>,Bq8ڼIXYbܘ&_Kq}~&Ig c؉YCC^+}5`-R6?rr˗r 0` 0`A.^.,],X,Xb˗.\r˗Є5!r˗.\qeˋ,Xŗ,r˗._ttw_˗ 0` 0` : r˗.\tXbbŋ\r˗.\rC[˗.\qe˗,Xŗ.,r.\z\rGF::ܹr˗ 0` 0` :\z\rbŋŋ,b˗.\rrz˗.\qe˗,Xŋ\Yrŗ 2rr 0` 0t0e˗.\,X,Xbˋ\qe˗.\z\4K.\r˗.,Xbŗ.\Xŗ. 0`.^.\r㶎˗ 0` 0``/~ ,bŋ,Xbŋ\r˗.\rx.\r˗.\bŋ,Xe˗.\Yr\0e˗/GWz\pe 0` 0t0`˗.\rŋ,Xbŋ,Xeŗ.\r˄p!.\r˗.\ŋ,qe˗.\.0`\r~ cz\0` 0`  2˗.\Xbŋ,Xbŋ,r˗.\r\ ˗.\r˗.\Xeˋ,qe˗.^ @ r p` 0` 0e.\rŋŋ,Xbŋ,r˗.\2!\r˗.\qeˋ,r˗.\rr0`\z_4uH;.\0` 0`\r˗.\bŋ,Xbŋ,r˗.\pe%K.\rˋ\Yr˗.\˗.\n 0` 0e/K>1\p` 0` 0e,Xbŋ,Xbŋ,Yr˗\pCAr˗.\qe˗\r˗.\r.\p` `\z\xr˃ 0` 0e˗.\rŋ,Xbŋ,Yr˗.\r˃.\r˗.,r˗\r˗.\rrp` a 2< r 0` 0e˗/C ,Xb,a.\r˗.^/K.\r˗,˗.\r˗.\r˗. 0`A 0`/' 0` r˗bŋa,a.\r˃ 0 ˗.\bˋ,Yr˗.\r˗.\r˃ 2A ` xA. 0` 2\abaabŗ.\r !B.\r˗.,Xe˗\r˗.\r˗.\2 0`  2˗5+Dܸ0` 0`/E 0X ,Yr˗.\ ˄!kr˗.\eŋ.,qe˗.\r˗.\Yqt^. 0. 0  2 1` 2.\rac 0 0 \r˃!B^.\rˋ\Yqbˋ.\r˗.\z.,r˃  AA :\xoR\0`˃\r.\aX ,a\r˄!B%r˗.\rŋ,Yr˗.\r˗ *V.\0a0`  ._czܹp`.\rqc ac ,X˗!B^.\rŋ,Xbŋ.\r˗._ *TZ\paAAA rn p`˗.\r˗,Xc ,Xe˗. !B p^\qbŋ,Yr˗.\_.\ TQ%ir    \quc/r˗. r˗.\bŋ,Xbŗ.^!@CC,Xbŋ,X˗/ .\qYeDV.AAA$AՌeˎ.\p`˗.\r˗,Xbŋ\HB!I$@ Z$HDZBt r 0 0 0 0e˗.\rVI 4i,FD0XTeJA$I @+G<ц]˃\DLeYaY\{eQqQ"Ke!t$00%Ll H ,X,u!@h"-.z~!g%uaYǔ^U!ҏJts4,fqPPpP~;K ¥La]bu|O4{:R&2yik)A1 ; I!K%` D$GT*Ј Z:| q'`!IHNR13XeQÈI&e࠰`3RVVR'aEEx#+.F$Tf T 4 $;YIYXH^K3aچh CQXˠ& >J$^dRn0X\S P 0LgK^_B*b2Q^ćHvöDDj,n#GN,])s/2D%2$Y.yuZ ()hǺ/WXOJzήgX1tyNΗtUaJ3˝҄'D=NuD: < {βAްW 3+wP.\p`@Aj.\XlQceL G>לwPv}aDKK^P~N:Sz?&Н״vu{K4l}b;Bw~.Hx I]q-zK'Wܝ_D};T󸿓!a 'lQW(lME}_:wJι0]_J./ zQGN(rHH>ty^p;":IP/9iJmb˃AA.1Q[pYz1Fgyfo(xtf/vYOBu"s)NW*ٽOr{/CTz坁;AOLoDoY~e6ԧO)NשA=_cS/α/?A`[`{b'~G9!~!W;ϯK}|:+mj:0|א8 '"׺3{OKϬ3Qm-~6K{ԯP>6ê}O;Cx=OyiSW"wl(ː%݂*2@A .1/(%0^Ql^ܷzg:C1^_-ʿg~<N opwO;Oh7P|rPN{/=_tМ/UAp{_?Q?riK<܇A?ozu o?'Nlz舵(vB.m?|NyWE]4'">a;[p?dIޫ G1Vo}7{0>Bq܀ }J]?pDwQ+#%=1M+MX_ĭwbBzg7=߄:w܊/1zl/.l"h`s>?Z0E7ưyksZdw*1Ģ a2јQB"KՃ@Mi./*;1.?1=?C;@ 2rݣ3[1 y/|_a/W]YW؇//Wrw9V<,VVt~gRb6U=#9=[F̆ p޿v z\+bz87AwA/(X+ԃUb vQi ̬]~X>!_Lȴث==JZZغk#f1h1Lk5?WNÕV"Ů]}Rp,꿎at*i .Cm wD՘%/xX9Sl1[YX`|J|*],;=;PWm6^) TXeUm{ƹYgA1t ´6z[`iBtC|RXط!HULZ67M[aqTe= n,R촼uĻd(W|3i 9wQU>3VkX .lq׶B0i6۳.h/Eߧx), eEXsEsĬBxJʼ|%7putEV۬+[ܖhiPXD Z/\tEK|/))٩u𲋴 fhB J KN%eVSD{J5clZӲc Ŋl&>(p;,`Wl"p4"p~{mem'woo)P {-QwA{K aS߯X+Ea"J-Px]+Z1,5v[!X@U.6to-"1NW;Aڀ*n켩b0(qaV֍ :+Pw·Xr-UߎAf֣51,2RԽ9s\oH[H"ӹ,X u{./nf!Zg7F,TNJh*RPXA@˦!{; KFJ0lo(Ś^f/l`Ɩk}¢P6m^k@P@]nw`rhr)[ũSUwxKݢ*^ M[cYwU`#7M|K9z(Cc oڟ(J/ Q\1"0J=xSj`\:{*` IjE P%rq8Q@:X:-J識$\rulEp0y[AXۂe=!لІ3v:1!.!&X. <QIÑ^q.1i W feϧ=> JqCYAU 4I0U-RߙQ4jX[;sPaVgiV9xw6(IQJMCQetVyVӝ5Ep y;p^3N懥Vṯ@ek[ͷӼ(Cjn-V9!Zhg$\Yt@Ai?[EUQ2Ys7teV[rF74X Ny `JQATץ@(H6W|cZٵ})r*;+D9R-t;jj]v(J]voEhrI@eDJ-]M%Uz9am=Xu6@1H0q/S( n*T(l+Tr)!2;3pwRD\l)m{ ,,s}v!0 mZ( ը| *+8b +aju*ʗ[zKn"]C-cZZW@Zswoe|90AeJoVM(8y9@†l/O{ǸhlFCʨ /swFDE¬=m"!VNUUSs M:_\)c}9n -]o#.zR*wa톘 7P( <7l$:kaN?$EWu3t-ڥ٠()sԬI[`2^}D+%Q[Ts0clw"Zc*\G[.{JV`?Eƒl)R׌Ħlۑ]6̠*#y #"X´hAa\)wָ$ *pQedBب˼Vu~ v EƐp0a ٓA̐!Sp TR0 cל:=ʳp]eHw,qSx8%ǠSpq,WS;RמRYdVjP4"CآۘA[p`Xm5i*y^ԯ.]1C'>VM#B[K{.1,,QÝ,7WCtI`\ר˗D C)"sT Rn׻{XwG\U)ӁZSdc]A.n6\b֬la[zMAzjԥd0<`qeδB-nˁ7`僤2? (T׬ h4ssl@v\tKZ^ɧ ԩzJ;MbYwwH -Vt7ԙu [e{LiA"Z?s*!ZqUxU.ʂnifcv-ol=` fcTjh" ',ZVNCusRč ,WI`oeW/L[bv|.@Wc@9{,Uf[s$Z".ȈUc<66N%ŜL"WUwRBaV\stTQw+Xh _?&i0gxH7Ch&[2U UaWdUk`iӤ[fxf~ET=fJ:*Y:. UF1l zM|zkTMT6 "UlX@G\kb7H_hnzwyA,Wm^:rD^F8čdbpc HjHXf ]_@РGEGZJdTap 2 :+69,;3g0ƌ(FNj$iEX^{f3Cd+EhJ8@D-J/4YB@1y,3-S,$PHf.X]4Dr0堦lb{Yȴ" *h{.Aaee)wQ[+%TsJ.!uyN Z^ĮjP kfwuTD%ByiHkd'?|Q{ " U8d`p>2ZS^|M #W1#kJvROjW#zCD+f(ͰqRr^qK܋2KevKa[yhC)U22 0 l+7@- Kv7%T@+k$[j'h<]ƮKP ,0eNAS׭Bvnog +:W( z0>PcXrrm|*usYȦ'A]Ӡr?Qp] _pHWp'(|X032 @Pos[bl `2]UP,Ul~c@8gQB%n %Uw o N^Vw=*KBXV)cX7/J - X`0 yhpAUptv[!Yg% \ D;+gs+f+X jQ@* VBP l7і*P <ۓaJ9:J 6teXb$m{K/'dY5L5ޜ‘n[N{1T ;6z#)#yriPaMWmO],[B< ͣ (M&[edC%nq(,O}̤J)XC݆]JFE[dġy l4bhl;p)D+X/vd\+ܴg UBW"uU)Bj!sc2{/I|^ ^-ke5ACfj`+.YPteMؖG [dsKnTٷRzt[cҷ5U+*S1BMw{@lF\u$# de\-U#H ȶ UAHLmt&VU'DYRӠh@sAxuٰ_v{6aO\nP8"v8J!bſ%j`[sQЮ[½0#.u_(ӡ7lpزEU%˿Il1; 6aX8 -%[:ѷC,iTE^jy_]E!ͺ;e`#F.'N[`D.`z*`M]%6U0zK* 34=qg -n㹺xmmV{ ع(h, 6P./L1Sb~(=ޘ8 ÆW@ڨ]9Se@ND-XspWXp\ECzؕ٪L`0A 6]] WkԵ1򜹠 j4t {q(L޷%K)@\.3W3>.08s5Q `Ӈ.{V!Pnw+BֿstQJ! \ R$QdA]If/!rQzrVj(2ܪ y-xTFbva!Ks{L񨠁{)B}_%UELt2n>h^0VU-ЬTxYQ) !׾&'Y]B@W-͗경 l6wuei}@"M"Ӑ5u1*J# oachN(L /B2/8S`x`Wr>[f6@hx zE2 LpJBţa;܁,}PVҫl<~Y2vb1`-Di`q [n Hr+ ي"|W`j@F퍘0Ji\l^D',![(ۈ fQ܅X5h%pCJA#}xR̢7|+H|nFFDޓб,m-`JۤJSlEA7r%ͥn U 1TvNt[akӌTe+a xkE;n"Hṣ#9 a;g"qbb ].P9YHlEX87-b*,MY"(B Yb*(Pt495ϙ/{&&Е Ϝ;)|`ꅧnTd+VW Guaj6a @NBCc؎ĩ^Z`xr!lzZv)3Jz*fdTYf:J*Tk`pZ=Z\xb6L%`8~S=ST"n1`΁G9\Uf̋ dFhJ.^v dl6YXr>㎈6_Zø-4r~YP\L3wkBiV2;}(44e3tXTBPHmι6=D3c(+f9$e!urVB;!9q҅V{ +p- I] 3ۺty}_Z83wX-27%fM'I0vU0rg7V }R1X[6LfR] .#H=m5_3u-@ҷ'0y enVt˚G-au4+ Isvsf)etrop2U}fZ  nB-B^s . ^46 `!-(pR ~Xe"Xy2=W8(&Zbc+k>m\1DҬU 'T% D0m1أqe\ V~B ZQlGLSe/x.xg[0]<j Ù;, g,1"]YG1~Õo5/#:Kc~˺ʏ!`IBHnKsYRg&̗aY2"Z{tEr\L+can&D5!A_[.;AAUmtJw6(]"޽g8H(h_2ʙVQ;Z>p`̥X>m.p l(EJe]R<]_j܉(*%,~rm "*$iM[wtzVmmof L'q/ .U(Xb׀*ؖ@Ԅ͝bQ2v6MKk敹 1C^P4*[z+kKΥYoETxJřs],/'8_1"3* JD|}̲ !v\0-9 :sd(Qou S` :m. Msы' ."-ٝDKZ6TLݕl@{EϔZ,F - n7v"Z3slmO̥ U C̫ix "sw4;C7Ƽ!"&W}dаuS]OH$:1KUӑ =* u\R.ZmP̾{-=K :vv$(7ڗl=G|R&|bB7|)Da(ww{=]alԣ!hTĽfzaILE, YgtǨA!B7CWʯXiWu\cޅ6T%fDvb1Z]<ȩri@9T vfۻM ܺjp4t *+̈fxi+x,kpP_jzKztD /I@F" x-ݠ\E2ŷOKZ.xq5+ #¡`XcZ.q (ISS` e-L.=KW[9a'oĬS lXlr@< Z X". 9Fә&b+=w?6[:eP*',ste_R1=AvJp "! ٿ)e6eK;3W{@n8lrwkt!]퍫 zvy;[c:.a>/b%-cg[rcp00fg>9gMQ\f;&˪i\# 3\2#B o1dػW s#.{n+҅0tLP֝|&kZq{r>"RH{)E.2G^tmTo7ڽD KUŃ@)Peig|2oJ˽ @}̨Ȯ+[4[F; eTF١l m&(v>U[tV0%CR/̡"l!̻0Za4xym(8_9-9ڇ_XNQ@)ջ]&_4gl3 F/J{&vhCm*9eݥx̷|!p0,A`*<3 ks *(r6sVgt{;Mg(]eJo`Kaި\Be;ӷ(PV_A?;xyZAg/*6@b륻TV\ގs6;%CwB0?C.D S+Sh?3wE-2Uv^9Yۣ˼hQC1 ﱏH4F+oYz.l2M=Zŷo{s^Tr+X|B 6Yl+etLvfv_Yk 궔 ULe 9 K֦ 8kP˔q- Z涾s QWnjT:F▩Mg'0t q 7߼j Fdc|ig\J)]*K͎{>P=e+ hf85sXm+%OᜐPg&!Ȍ,}+wx#c̡TBWdI1ׁxW6`{e_+Urte/Z_]} !W?),# < Ș[MVl:eyP0WowTk~X3!KYw'{Σ05ҩC5 ǝodӔ'tUɻ|ig* ,q2.r] Ph}Ɋ1Qq˗5 >(.`(Z0н&QC_jQWXԂcAoڰ [ 9#9n";@=)Qc8T_"gdRKHK)غs-`އ!|#b6UfL]Gbp-mVt/s R5n\<75mXv-ebcDgv\[XKJU=CP OH9Bzn6T|GgX  y/C]R(@=؜5CwJGomQVI Lw+hvYqR{L^G+PWM0nK\9Pp(Cb1Kێ4ݲ˗4`l(#hd,}kL@Lc+? X+ E-S8#nz%ˮ3%ffeKq%it<P͉UߦR 7*P~Ȁck7\!D((w :_D9h^RT3э#vzrݻ^`PQʛvEfbm05bJR6WetrwWlt<|VhKm*>gQSwYmCY8o5aoT55DWfPSP$Na 4;Wz*[|z8QnUY]/*p+. lq~n Ė`/eLPJy?++6(,ŔPq4@[ڌV+SuvbشD\5VpFl>Y-}an鞓)@/%stQ[͡8.!jm؟INFj\R/z$!9wpփ_%Ej[ob=(9[&c/F׼pk6WlpGK_H GewSx-b?BbOGaW͉w[_i#2ij<K Iޅ0JZU+(1q[*t|fG.ۺUev/q0u% /b0lq !˩bㄗCJ) R)voH2vg{`[AOf-"ly2n3"J)00 ZplR`AP5"y6H )=D>=S~_TSÛWUUYIT8mLMDp3ŷz@ ϳ Ե{0Җ<;s) ػ'Movy +ShmwS(C+"<,DXk]hoOګt DJ(mal/4Y ZO+aZ5AְNv 境*x2lv\(lvG^#Q6oNX7)s[h=1,%ho5]itTP8‘Z*u7 Y2oDߗfeP(vETr].f.ڢB`s6M^)wӄv66];Eю }$:=.ð1}P`%ςQ,OiIFz-{M*EKAЂK8U Sv(.< ^kF:>(^Ox삫;2y |0*tq1l9~Ƅ+T"b[@ F#{!]{b\v1Y(un1iyTa%:TVwV>X2|ϘVT!CǴwZ 6E]8-ߘS!a9NHΩ.~?|A[~10'/K@[#+b0|I$jR8,j=HfxN"*Ř)n ϱr\^^"p7%tϺ>r9j+'NxWumt"d580,%'bt|J B%|2 g-z0N~T-޳zD}QpQA3V23^?ġ]T3Ѩb}1l\u(t/:P"g a\_!#r8NA6VoH;"Cw)m(z0а2JmT!m7Mv"VV 0lLUDnm)G/nT7bo򽉄ŧ*jn2fqX&i*/){cl&Yڡi;-8Zb].cgg nf!c"P&Ş4)Yty*( lGn FZ6T LUoG.w,2^Jw71- GO(ᑴHZZ߉bQSUb[L%J^̠ڨ(%lzyMulV*Tfhpzmj,Vsp,zuA 6`wfq9Su@٣c2{,P4N8M~&$+_e\S{?߃0Z[z$@+\,dL{"{Dm.ޫ$̀aABoz\;,oIKҷR'>-^[|UnuG,MzIDQ9&7+-,= ʊyw f4ᏽ0eF-7a_w  6ۯ({lwaKF`{ ]]TXP |PC/I<­(Rm_FlTl ӆn Y6%VpJTlo܁U7A-MgXVͫq⇓,@H±}Q[Lݟ hTϴaSaF]*/ڀ#'dkr9m=KVԷjO!2\B4g[,Q6/sM uep$o7~bJY)dDkX";fV 2qq U`0\g`5Q >,5C-h6L6chol-rXc=k% \/wڱ/-ݑL ( 0s5Y l'EĠFH*F]p[ĥm21fŞ_5iQyhۅiY 6l6c-bٞ @d"q -FXEUs~1YJ0 E-{􍁗.0ѭ=4C11@_ :'J0QXxE"doZ֡vi7tuf{[)_[)6XW7σ2&탔=PH)=7k2OK7Ekw*fy;ށZ>hYVp+|sخAHq8ڟ.4]b?1:f~>y^oqlv l=jB{0W6m{vfFg7&E])_m8uuz%o9\x+Ƙ11{ۼ/imVNK i٠>A5^29bRVt6ՅlG '=(g,,TʚKΫ=WlVzjKжEHczC=D>UPXjd*S^SvC{G y!׬2MeqS-?mz*+xUZyÕ.8/3Q7;-l y!][3m"é7b@_7 磄+Qcv=YF!j찧営-A5"6>(,~O[́O+'hv>Itc.'uRNUxűk+%~ (;=]f.pJi rͬb]5Q\M1U{l5%py AsQ~{@5w~҄yB-U,{yAh[jZz#EfwjZ4P8*t@@n+ g]be,PA{ņe/^E-ǜb,݅R˳i^ Ysq6LIZ,{Ps `y@za(QM3)S>oPncw1aXVqG؉>P{Ơm4¶fRDžay^PiaE4 UfXw+JzYqzArqV$^a GprR5`P RzEalWF @nzz =c+ھ Vo?Ūd;B^p% r9/a-y)gAۉ9(uӭ%>w(ޔN`;{JiE(DƅvP_0dx͔-[ v\Zتmҳ0!63ŹSս+ ('e^At`zmꨍsg^J4i@dc #b4it$;L-a7H 31~ G݈Ir {₝OQFrDPXhV?IX4Ď;L\?(Vٕ\z#ɆwF<?YVXm?%RW؁ " m@}#p>j_T]}~XZYK¥0*$Qcv/\뽒Ϭ>}5H#{D"@gK!'C3]}Q0k1%fr,#\UhbM{MyHFJBEA5҂Ԫ@ +|ƍ!_2i! ,mOW-`\7 7l0 D*]Ǻ QõzA"j夵-)VJ8qA p31z>+n0/WŰ>fAr<|=+ i@oή4J>j3*/?ΎAIN,eXG`eRU1bG,KxRK06"UΒ=v(^GsJ_|B=񉁘b3'@ܺ}KP{Z]b_9+yT] +fckZ9}QhG$"ޟh` ^_${.H6UoF䃛x-^P}zO";VNVʦ y{]T{Fobq `f n7uշoZCj(r[D|1q4-\e6(fwa16cؽ[;)WB !HL8~)/vUGSOfjzx"~O p5r X>_FR)<D%ModǶíXl(>XF^OPl/ t^V|"Ap _DImeT#`bx布-پ+4ͭ)*d&}717b_8A/R*}71Rvk{x5W.3B .^cqxvcGT)e2`  Q+nUOD&uڎ1,6=+q^m}>jF6T-פ^ } ˖F* 8(vɦwajSl}qoS!~w+آ'U[sro]~&{ܹiOu<aۆRV]ߗf?_ib,xL6iSMi~ c&2,61GAY:ע+Q @|" l˷)6M`M2p:]x$2uwBP@Ji\Vf'>%mg?0q. 9OyM&]`{l>#|0*AYn|aw0y=>%q>F5ۤD~`^paeW<,(^ tsS-9,8:G$W){1JƢ [ PZ^R|A1FG,J-}&y`v˭Knn>3jZv_~GBSҟhV]*zAy!0z~Ʃ!]Z;&))?傆Pj0u{gިFt7wǛa~p-5[G by#4j#, \eDo 1{cg*mi;CeGv.P]l2)1-Ê݅'Nk1" >q 6CVJPUm홍 >`gR#e|[NR6kchl|vUVb&9Lc#z6=1pȵ=3pk%MG1|fs-f8bǔl^Ucqo{UagB^SP02fyIC```F~يÏSiGz ޞvL۸ŧq7q~Qn*Al;>pOWؗW0z}OA7Nh|٘:z,k(<< ly@=&Ы JsxR}"*)ws(^0eBաQNѕs*.g,%}fO"?9 PtϤћpB@S $_6YaB 2c0CVGzre'QFyL1g9?RclLCwSңaYjn[bj;>J0,o.o9}Ȇb{m@@Į ɆϘW{S0"| (/f\VP*Pt!ӒuhՈӾ̍^g`_\"Gwb60s;Iv-U=v~bP_b>[>Lpjt,FQ͔>K5K}nR;nbyGJ X=plmW{K7δbŮi eJ!#7@kg?G)Zo%ʡOGp+,(v@?kV0pj ]=Rguemt)|b<ػ\*.v!QSY<[gӤ'QٍZD =gK5]}W1{iy[o)}6hJC! Q = Q|Iȷkc:C=p*[3֮Ӵ`tw_Zm5.7<.6'@9Lh*6nwQ{[l\-a-]_Ksy= RԳp~u/ܔae'|#QS?Aecj?{|X2O-LzJyNTOxbh_vrGH7->a̯7KJ^WQnZ7G\ yQH7X$WGjf.\H|LjbrY][h"0yKWY~R32{J%hִOaW*ǭE&ʄRQ.%jK*C@Bmo=jU2Ҭ(;>)ہtlqyLIǗ.%@|_uqe2u_숡xy6ٛQɗՁc@MիLt?dr`A߹em)Aȶd6d,{O/t.T%._rT qH@X5,z%|=X)w}06~lqw|013] rrC`8-eɆ.|scȅ-HP |_À]3LrTYPU[#`͟1<<ʟi; Y)^Wt'Qqn+Wƕ<>mT(e 76B^c[2ߪOn]Wψ,)GH1ig )GyxTĠ\gPiez) E%ܜܔnYWJEA"sОbq@X3 /F;*'PWŷ #CxU|E3JpSPʨA'f ,@9^~b5\NaYnI{ch%w/x-C0d? S5l~jQQڗ :|Jm2]/[oX'6|s;Xš~ u)FVX,{"E}Ս ])K >}4/]\sd۽]ArvnEʯ+~n_>/Vvy“L t%b)yV;5au~QGVuEYs3}{ QnPG2g5o@~DF, Awsɥ~`\qʬ{KOݸ&aB Y∼ݏiXdC9|Π2țV^PQ)Hͱb&{_b2M>Aeߴ\a Wo=yQ Nj2װ9ﭙ@V`N;fu+þvv0vǜ11!9B^Է1*EnSoz!`|A8c?h\S`0 ϜϚ?rTlT ]zTk9;,Mկ1 !|9Ϸ0t3:2E~nZϪ^*1dncyf\XD­<~ᢖۘj,.:$`68YY7Z'{/ I[Q~w]ikkc'H< pqmZs{1tGګœ~F? Rҟ_r'Kec#.3~`+?EjY(DiA{=ΰ6Xq*ibRկ6 = Q/"Qo>eg[rjQK(1Z],KQ+}B9]?">bCʀ/Q{fbg>m3b! .afwfYNz[z33`;7B%q^b{!٥xefqX-S~w0 +~Qy%N/emRA0(aOq1V,}f1S_]O/b^ -]fmjyBb:ݥbma'w.qm`@uXr :KnǏo [*a, iU%Srp3rYH5U.ny[185wyR"2Q&p7B+)"7u=h@[uc;0~>"ӼD[x`^ՕKwhh}yVA#{-Ďvu3C9u9)CI}neǸq9`xHn>@)DCtE)U3.z`&VZ`hLi|=*ܮ/:%6e+suG8.=6 Px%D}Ygi{C1>G` \ҵvJ1egHFor:0Ù(E{} m09U΄^Rv]{9LcP{(\2 e1aъb !}w>tMSȿ@/9.L'bd\PWbIu|2!Yk3'A>T,ǯHtTL9 -(6J u4|Oly1a'FJm\nѕqmrv)¾NQvM/eMV6̤@]̷ܽoclF~Hxl_JYX\D]cm&RE{R)Y[L~#TXF" (W&0/9Ogj@nX~_hjABݠ;cЊpA|MO)ҫmD0ngb*3DLtb/vId85*2ȕyn᯳2"^|JEg_fO0e"-ڝ z~SpCAy{f\"#>tbdpiaz=%7g zao}JMzJӦ2/,m-JȮp+"-Nu#% cC1, tb1ht0+RJv}X:oh"VW ,=!^#_H+H(;D_Qp׳>#)HUeOU)Y}73*Ku>%yDt&^b#6;OOQKUFןWXpYfߛҍ49B(ugr STIcB3uV :J7y^^9e,n*(r8(~"Bñrm'I5|V\W>ba.ˆ+`+;LKJ/:AP}NV .ümv1hQu8R.Xw*WJ_:2R@|K6ua#e7ˇ2.Pī~g1ө-Q`RFN6}g7ŔK y.;~$0яxD fVtM1{_v-tS)܎"gb9TW!ۉA:xI6="]$v?pW)wk%?}/J|u ge=HfA(ɚB5u3V8C7Tؔ'd2o_ԃ+lf_IYXdeࢲ7Jdbv'GSGaHJ=LC&r%HHV.G.&1gxJ~.]D07Jzb@xw4%ܪ~j< &F̹24|iY~[̨UY+aEit>cHaqT=[ Xi2Nܤ@)iy:p=bcx.kC0epQDS,S+=Z*l%Mmefz nE{;{G#t7ޱ츞 a1|pAŭ3]R**3Ѷ- Gl< Z+#p< D[meY[+' ~xb$ʤ%à 6/F=b6< My/V1:D; y.^+A1PK@īʃ PUmtϤʥ7-A[>C"8&Izx S`aX+Q:]V>v0ߦ#_6>#j W1_ l"J٧^FϘ@G |ya8kêZ-Qߗ^|d' a.Z2]pG o"Vطl-,%{{F%0ٿO/aS7f=N + gTx_Uב&_o7rK f&6l=-/j}HQ)7t(^C':\AKcsc rfUküu[`]*[*',ҸfR5B;PQ\@,J2H,Z.TgpC s<A:o/ =͏B㏈qTbR^>(PLJCb`vݸ x!VK Aj6|A a|LCkZfD(<q-f!6oB`CkG[(2ZJz)UtX{A@8a6V:JЊZ+/l)s/6enUӞDžuB{GƸ|3v嗱U+1{}f;~!9}IL8#pyVRGG,7a1v8wapA{r'T?Fbΐh%;TX=jaVp}쐻b e[FB ,LR@-,S$ =[ʶnb0Zq{PR#sQ)b3hT~%%Nl L 8LLZlq19_)WLL2jǭb_a)܇RP1=l@˟"-]@8*aޣ p#K( {Ov-zMSަ!h`9a!tD^zAH̭h/jTLǮ DlDX݆"TKu)W{cFe6=ŽGTq \4f_xIxϴCC$֥=V%r8UnK~k-zoTnR_ s'@Ga\ö?ux blgF n aoa]ìg;ɝD]<BP}'"ro06&*,w (nc Xr/ =K6$j™fD$.WY "l7sDP㔩֒bmD2w#gӬ83 o8>BoIs܀a昆W1QWqf|d*^p#YTCXT~F˱ɀWIO%JTrʿ29}q[ʐVchmcf,}fy6Mc 2s)kwāwB amDf՗2ۖ`jו#{`nTGQXz<_NxI >C}AKŘd/CkKUCxK|_Bn@ |Y.CRnN/d@jr`3uDŽؗen%ר3Vmá.br0ީfC oT4|qL[um^QSV4ڐG+> ED@@"FQmbmINK8nsAIF%*&Hղ@5 (a-= ,f\q6wXNwW'$m> ûBK-^Sk0U)tʐ"֣C,aB+8GW7`:$9 ^cf]vYrVٕi MbgRd\1`ZnF4ˀww7;Ee7\lZڮ0E$(8U[J+ɉG+<ل}IOJe QpJB\Ve\ND6n .~`fjyY_75.SޒblA0Ev5yCxo-{]Af6Qfu9V/v4_pb2Qlw0:Gk ʻ+\ˉF@ԉ}b$g(e-ۙw ]S9o $=c;"I\ ($L/bӢ@,= ;W$dre_oDr,g؅`)u,Ι=.ewKA#`"Lsn,j|#4Iĸl!p\g̸elXt;GCvIƒ\ሳwSؗ嘈2@'755x]3y&IdZzY ִ JQLy,`޶_,@(7.78$6Xgf{~Hw0QhF$km@F=DP"%S* IHSbJxIR%c_1 X[|ʅv5nû|zBj>'MȻ*7gV:`c6f3f*YRimqn:ف2I^o909" `=&{f:&n nd+h@v0wLNeITڬ"|4K񷼮[W.y(#`[Y[&UlZvgyA`QJ!@m ?ղxWp.C>H75)`[KT7i{0ޞۗVRr(fu&ްnV&nrD{{d|.J`=Yܠ*ʯZRQ'2Zo2ϭ)Hô)&,@8 >jHl~*P\XiRg{ueǔYlmΊD)ʘ/nf8S]*0,AmA`5*}s;! ]&H&YN4ⓤ2,?XX aNj10w`ˬ|e3v]Twb-k`tfqMÁf=X. %НQCٜfY@xv |8Gy^ԿXؘ{U4rVmU1̛KΆ/d am-(QRYh}M &а( yv\ifzK2P\tK W8YMqۨLsX c1w(2E1. ˸j0T2EjY)camiϡ-ɒha;:K*cbp- v03:ylgwi} !! Dqnf0TM;@3l˅ACh*8_`hBn ܍ A7-Y $[d8r.tX@ylDA&Dcb1*૕x:$xT-Y8CōXu #wYdX"l2:Vua^cFxe"=+Ԙ)Ke{9Kej![U"yWo. Z0bLct2tѕqVYCBP'*L2v#6GIOjR c-vyo,L !|H95)`FWr/jȖmMV͠Ǖ๓&U1,@RMH#$_H$,3;| lNcXܩYÙڛE]Ҝ7q9ȫCE@dN3NB(%-q/1Favbdø"ø7txffP0\ɈG,}]0Կ [&i8۵(31Ạ~g=sVF o]*?m@caܲS#`ه;H4 Xi]%<1"O-s `"n=`@|'![@;|z Y>dp/qo i͌ EcUyD l퐗AJcBb^S B7YF® 3E1Cc0|m khNDQŒlj3 peA j\$*꙲W]``j:dx$A9" bB` k gS8BmP(E4 [P@ve*'Jl@"lYT^`?`&-Ix:ˮer{h+12k.bY `Qs6Kɷ%L䨷V(ZbFesqͮPci_u7{HZ XqyD.%;622%i-%%5ޝ 6\eˊ'  考8j%Nf7m<}nLW+ x 1]#F[YRsFZ!Kl0^6ܗI<\d-~Xh(K3_ %z2T,JS i{v}P[y2Wm_He]bهӼ=cqc6>C5X0XD+jN.RL PKr% aJ Lib`٫#U,Aݛ^5,)F T Hш*y`];l`qF`J1C0 mΩ[>_tBd.}B_ZR#[#qT٨хZ?3a5\jwRlXu2m?c1J}e0Z dJ=ʴ@{"WO`'vj;JABYDR r3 AjPU7{@US-q|Ql$vNFt%%)v[Rض0 Hf0Q}v&%Xb sM DGj XQ6[1ҜNhV=x;dIFm;Y:2I3`UodP³S%ӀAVFXyӖ%F!B+ \P(=X@Fwaŭj:\{]5y!7XeUX@RĽ"D73V?`_dKq(E|A`R1`!PJjeRcs^@f2ZgPf{6fqEw-.,&tЩ8"c%+ĥGFЭaKE!L} F -7fQW' K@_=}w@n_;/D :+lM'[K|ÿQNnkd1XZ*#U|. U'fBv=YU\߂+:J{!郵/u6D4)Ӽ%,H@l}ʼnf5=)j>6WAK Y,T V="pWrۉK7=3;n~jb\|̙PK1i-\ABk2D)zQ*.[|N%4ZzRv+]˅C̶;C*p)&*)cj>ASB f%Ea:&̐FBǑDȗ[1fYIxbS$Z&礻9t ˊcC7 &AEpԧfBLIfegm7ߘK%YxDc_2@Y%;X9Q{GlZb HmFhXMbBePr(ULp{_bYS]`ywb Xnꇴ+<{Fk$O0L>VHEE ?1"f\4Ql*LլaEopXvzCI+"\ _dWv65>:6m}c 1Cv)usD"XTIUKb%:!#t01: &b4ƕeJ'rDU y"B91.JK&칣&ƒE(4݅@${xEbp[arhj#0x6,$I3e-3ל\,qK"F H6LQ} !獶Sf!VGmm'a,Cxp1>puVf(9fr4LxKq8*#]2y/ʖ/f0%LB(2B Yy:v (A.e|yoL^ЄF<dQo(.Qvf-)q,+C@@4`ΐC2eX7n`<صyePH.cA f!Gf*qa"6ʡ-#F5aW+-X†.^e2\'bjPӻp#“ϴAy2DbmǝVfەA+břg!B"1GE A /zx#:ߴnnX[%?@VһnDynr=ȽaWZl3 7Kt0mB }s(B(Q$Wp.Cq+y3hij̑ 9œқv9A̦;yGҥP"V.4"ې; +iQ C,zNqN3 4Sq-N1MнXXQRl Vť:wcSx  0R1 l7X0%l(/.}k!) e71[/=psEQCNbVڧ.&!.,2;Z$ ]JTyMF42B)xkX5:S.ta-,}č FGj)ec_P EC5*D & p@ Hi鑔r.4h83"pR8b6PH0bƘ'-9\^TP`.k#v2 `b,F]b !YJ39HS;W0HԿN:ZLI@(b*,4f6B6^Q9^s}DhN*n yX$-Xvf1p|u,ʱl^BAMf,$F"g/j 0`ZB("oh]C0[V S,0t7e;Y_3gA4rP86J9?cM߈^ןZW'G1_ϯ^Ο7W/m Ͽ-K_.^A/5r._wrR___.\zܿ_~+Ar˗._ߊ7.\z^.\ojTo[˗U˗/ rr˗z_˿%+J+rr˗./˗J*T˗.\r|._J*WTR˗.\r:?^/RJJ*T+RJ*T^;.\rrV*T_RJz*TRJU*WԩRJ;rrw~wg~j*TRjTRJ+Z֥J*Tk[.o p?5Z.\0ūJ+Z*TZWJ+[/^:*TRJ=˗.\zܹrH[jTR7\Xǿ 7J"J*TRJ*V.\r˗/K.\~*ҥJ*T*TRJJҥJ*TUefvZjTR˗ow #˗.\r˗._\rW._ru*To*TRJ*TRox.\_Myr˗/E˗.\r\r˗/K.\RrRJu*TRz\~۾F~7u *TRJWJ*T˗.\rr˗˗˗J*WB?cMO{A*TRT˗J^#bY/.^*TRJ :\rr˗.\Ɨ.bcJ;v?٥%fRkZbY/fe2%JRRRRSR˗/RRJ+-)gWLʁQ1,.\r˗.\[33+RR̹l[-bbbQ*T̶\[--k4Lf_RRmy|,m̩Z*bY,x:ܹr\r33)\rdS˗-ԹrhRilrhRfffeJs爇JŁDz.\Yzԩ/Re֥kRJ+r\z&uE2l*TPzc± ZR6ݡ/E2JKS-lzԽKYP֠;)h9 o]Bs2Qq1 WrIC1;&6ejٸg?Wp2KB+vXv!ĴorVh1% <ܛe-Durč\/g2f_w斴0 2hf>;74KuMkyIkb'{5V`G,1 WX2۹iEooF"XPSWf^oyx)Q7L˙T[ %Dr)j9Y8khm)j0 , CRdSVs-劼o0s yU8 [-`T8CPnm;A(:Gk3+BM>xh1EZ.w2t;AT Į\JƊ6VtSrUm%HaMfM›ʀ=yHb{AvI#Gnxf%w{JU,T L_i0KK7;x/cu,8R!#˗ZVK6b7, ]cMym$0)mp9w|ER$8+ghC ;m 0̕ )[1aq d*6.=P-Efa3)MŎ7]Ĺw2,FDj&K'* &.^.^/r˗.^*TZW h)|%o_FxeEyu!pPlԾfv8:X%e 0#Ix`w\“\Knn9̌F9wo0ݙfK\<-LCvJ+ !nU_Xl.ҊkhhYsN 9С3)&!!vjHr˗/J*TRkrp5Xb eBvD1] &1Eo 8ywe7ccyUs2wL-9iم17e$Stw3B&!Uq)vL))q D{TpPY 6v6e\rGI%p!DwЅ11KK,B#[WyZQ*W.^q A.8se.X*7̛bbes*<+YGff7e<u)!,bመHgDf^;%)) 9 aurs2FJ@Ls) ܃Ĥt9pw.6{brP0`u: \1Ϝ+̹rJ*TRx+F-)W%`"0w2mzQq斸b]d[0+hZ[DJX"+K&fm+fY8>pL72h@T*]`qUC{m3+HWEC-1zKıV4)*0:ʞs]f*;j~` Py} fܹRJVQ";)GEw {‘xӈUjQp M1Zxؖ˽}b7i-e`=agd sV1#o+{JRwK*PwB5L[rFNmA#\DAQ*mSiYɼLGp0*0 *PQk;M0t%`UԽPp41,A  fXe;K8ogZ-qsd!LEK0aWD8԰B#\U17dyK0\,M 1i\BY2_vf.^;JgdħXom/8)*"^e/9yrsօ6\jJ􂒈㈙qs oTN+ޮ )o[x5 FmɻqBbb2۱2Xs!XfcUŗԮa";h*D x З1`D^Zv50`rJӝݠxxa[ux1u3d,Yb\X˼T-b#2wK/2 *,到zĉYa03^"NnIrm1"mʁd ϴj-"_U V%kpH) id  m s9h,ŨŌ0IGUP8wb\%:K.XwD1.ZbV!.$45.C0BJЁ@."e@%F"9VJx2ʕ̨j[Qsrk-,4V.T8m\[2JUALD Eaq̗.)J1pS7z `$ZZRAJ-/P!1peĕ(&yLa3)q ܉{@jʝzOX7bgV 6acL$ƛbı6'tq))ˁgWrVo!M02o"Z΄6躈cyl"Hvf ^ڈK ވqɚŃQ#ԣE)o(Ao~&Pʁ24UA0$3XBM 2EYlDE ]In%aiPƒA:F70e<%7Xyi]c^tKiY@bIrX`HDMHD\Am/,Q@TiyilhX]"X$DOH&VC:ĭ)eJ%"(B3}*gIB-`F-^2l41m!!- 5. q%h4RF|E\pOQ?sD]ާ}>DFow_`O߂"?@<"Ĩs>~MXZ>._~E/=zAtQ.,Yz\r˄q"Fd&suN Q:ts=YŽ`h\p`#_97<%hGB$mtGn0 xTH?B1"h:)_˃厛0!RD*TR!ĉһwO+s:*$HJ*THj:U׊s:ޣ\1D?J*TRJԆc!ew*)0+*TRJ1f:?tx:GJ*1_cΞ?k.\.\rr˃.\r˗/E˗.\r˗.\` 45YDE?e2t1l{%˗.\r˗.\pe˗.\r˗. r.\r˗/+' D<4Zxn^DKп:1cͻg솵!3i:Řx z}Xiptn\oKܿ.1O+G9栠ܯ`˗\/.\7ZLKz^˗.^ˎz\w}~K.^˗rpere˗.>60_* r/Kz߂?}ir<G2z\~ .\r..eł-Mx>Yp`˃˗r˗˗˺o!?trr˗/[/KrşPn_S+?/\0e˗˗r˗.^X7"<~+,f~. r̹r˗.\z\~z\qgKE_(yK.\%˗.\r˗.\rz\.^/E-/dK˗.^.\r˗/K.^.\e@m%7u5^+%R_/+K.\rr˗.\.^.\n\ʒݐ_q.SP!>fFa. z^.\rˌ\rzܹz :X/~ֵTƗ۟FYe.\r˗.\z߂D WnWzTh8C1fe\D7.\r˗.\rrrJф]mF5 R7.Tߘ&CG#̸d6Q|S3!QWyr˗.\rD6"fҨq2ZߊJ]|Y 5v O3S.&Yi Aۉ4~%%/Lb6XP>ֿn\zܽ*cKTV%3j(Ip4G9JrmTPUF<0qRJ/r*V~*+qҥiRx*`ܱi^S oӴa}[^ f Cs>`1PwE˗0Ή[ςQ6n R+u Srn\J[~DKvF^FRifwӹݝRdVRNʕJTZԯV/Z *Tr.^/Rx+Bt2-Ƹ~A.?R,+x\x*VwZ\ZcK.__4pP*u\F }?rsGvkZmx*TRJԩZz_3q+JJҿέjV._hiRiRJǷ-ogۍ>w$|\r^ /JkES!f>&0ejTirrɩ^ Ҵ*\z\r%J+Ke,g2yzϱJ0'KG*TRh"J.+}_L0߼TR/Z\XgWB:T_RJՕW<1eKt"7%6FoZ*T. kVx>9)Ppek W^*zT+zTOa P5bD9=nRQ++ZFqXJGB_#LO߼fSr2 +KkkZ^.\zܸ c;TVP ôPTKŋ/KZޗ(-*Vʪ`4}O5KkjkhgfT!#E%.E;G2UjT"J_E3VM*cǂ_RWw5*Vҥ@˖GyJ&Բd,`(}}Mh4HXR˗/@j=)HQ@e.4uF62^;>V/zTn^RjTސ?}?sѯO~F6YAM0 >l_הRirǼ^|~6{=5?3j>К ܿ/;ҥZ޵+z* Ӥ&nڟ.'g(Y#{?"[CyPj3Q7~OOܔz~V7'e?deC3IszXk.z5JI^ֵk_RWcҾ`eQtb\ft4W`:\2܀sxF~jהWDl[.TMon^w/Uֿ@ԯpRi;?^='jor}v/W+Xb㨷EK؇ ?a6om)qЪwQaMSo\?z^eTpeR ZT@r5+[U-Co}Eq cTMopd#j}bf_~TyF(s*VSo'gw~^yp*6*Q ;FTy|:,Wה3^QrZr:W/#mJqtz~rmoe̖P~aҀY?:El#}`E ʉ셓Կr-N7+{y!-MԩZԩRJ+RJa~W9Gx#Kff`.ݢlN״f{~~OEJ.J=Lާ"- 䈩OVJT;%]kCK>M~#|+W0=3ڞpˬy۴ #њqTw0u0tH.\_ׅK.^+HTRHEk6)m>H3)htx7'X-^|?m4A;3$17rTCD_a |Oe7:>Ea*)d~E+b)7sqKuԅ0kP foHZ_QA52]re>QJՑllrU[Ĭ>ro-~8m͠xzrSmOۼ#l*V*W;5J_Vǥ˅`y30Y#׼:^0{CMe֯J*T4f1 6/SF& qcj?rƩ_^ n_T Z>'Zm\m#1`@Aj|M(T "5/JSite/images/raytracing/verre.jpg0100755000000000000000000066232407312220010015721 0ustar rootrootJFIFddDucky<&Adobed JM d        !01"@A2`#PB3$C4D% !1AQaq"2 B0R3b#@rC`SPcs$!1` 0@PapQA"!1AQaq 0@`Pp H1)JNaL$ BL`%1;%hÔ@Q(PfB&2SYt)Ja A(F&0]f,YxRs a&e (F &0L*eoL$hVZ'cAQ1baVij "vL1ɍ rJD La]fU%׭Z%&94`0 iֶLI (E. HB!%A &0L*+B$EVC@ Z- [Mus]a{卭M+ShnIk)+DYϔK i[9JNa$ƋWT\-i3o^vi6A{(tќߒlڸ&0𥭡VD1BP# Y;ffkmv)!ɄѢѾvb7cEQьYoXcw?,kXMYjN5stgڸ%tNޚۙ<2&#WYF$Fm)JNaLƻW}^uΛ1ddD*V,vJ+&3k)Rb,xKugѧ=쫟>Sm33ԭbqau9q"@j[x0ƍZGzqufs󾅥^LnN~iq*"Ys^0))3$J"حSen6tuy'E:j>?=)Ҵ>{bx}xj_qï*++5i ];VrCΦ s7N|<9g߭㚤f*k+՗vABl3fߦ{+\43eG?=tE_}ŮU|3cѕ` k޶Z%hrk7^*ޞ\܎tdi^v:奀.vV+;D)X5"URع+ 4^McYߞ{:zsuq^COT+>ݮ}Y_"W¬ޚH5KtJNZKJvͻQVrkMlcL7ޞjpߗр4]xg}^6+ M6*ϕھSZ扮y@_.K=q}>w'>WbkH_tY%)KmmNn}'/G69&vr@k#R~z3Q ΦwۮrL92uY};>'jksH|hЁ2  $@ $T[/ޝkӟd3ӛ:u>x\|鮢dfj7ZWVmNӦ26h*"g] ZRdfgZ#6BqεIVR ֕i]n<﷛'GE~~__CWVqX[Yh̰yg?G=_cyN5p̢ BTΎάЅ?luFUA'b٩}wc-[W<s8)VBtm=>kM+svi }=7啔N8iK6׻sm9Cnw$:pSt.^7Gty2s8S`"fQW3MҍotW#[m)ȈM'ZεM'X]$UzOCl]}~} vyeX$. #iq>uɃqQUHW{ߖ5q>ۑqOEgm)V)k t37:UXZ҈ !k8ְk[aFJ[y5aNkcՆ>Dk;i}vݯJwOyt&HS2miVWfYLqӟ3" ' MimI־ g,c{"uI muzsO-6s[xm[&sOL]7~z|kgX;ӭm:tL۝JBp~yJ#688[.YJi6h.ծ2ttBCGD5 [6ٝ3mv7t~ODW7/9\ڨBS3\D-e3dV-iַ޷=YLJ^q dDkzi٭by҈&IejYYJ)mpٶ}6GzwSϻx5vumZ_W>6V76~q87WW>ohZurϮamH_D:hg(hZtcZ6֫F9[tnyl(Xa(BՆg]M#٥:˒f5RҖvZi(}!kNm]}Nm©k:UZj xgZΕ%Sӟ)͔Ztص++Jҽu<,ҝ/ϧSk3uιusL]τfsoӆ6Rwڭ4,*t>Jh(ZiѮvy!VW{L4kZ,ؖq,mӎRw>_ZLZn;YqrεӞKI^M<۫զ餫]8Я|eke+Jt{NK;5y/g ۮۍg4Ne(mM%Z)J5֍u~YYJFϮVҖQvY2^6/mW6Ѷ 4efr:ei -:|U<ፔ}϶qFXMJ[J2t-[\|/ZwһZ4IϮfu| krs-kH3h Z1%mymV-;Gk%2q]akJ"}h)Oϊ/NjzO;;d鮌qӎ*g6f{+M~YWkj4SNL龙eFU3~9hikR/]Kiq:F;餢4#6Ӯi u}]k-9cfj۳NϿFnZg1U'>V+%cFYFf6mE֮ne3 Tg޽~uRiPcxzJNpCFrSo˛oMu^Z|jB ssNNkO #{r3 JtҺ|L]{yƕ*:Vw}!IYZ)6Y(xY txsw=~4˄섒/M,us_0g5h4g.{\J/lee2N_A [6jg FX' ZMi@W{iX`!g.` Dkӎ*e.t{sǮ,ZW4e2XWߎWom') 4A NVR9FӇ'GB3N5uo3ʓΙJ)|z,;BH_4ӎ>_:+О.[E'eҚ4khĹWI݆y֕D>g4C]bq}:r8'=$%Ceݞ4餺-xukK"meX/V XNÞ Y.ӦNX]bi\Fvx|W{Q2u8X]NUpł%sm9jmMo&kmɾt[ldW'z,KjѕT(odt9:|\N>AZ=?o7usr[ӶWR@4˿Dm!)Yfys*'GF]S s9c)QK-l,ZJ+s-f;1qPXh́3oef6l VZ)rI~={2RܨevÛM#CD[ELkˤ<`QlzUZs(F Rf;tǞq[昰6wrDtz)0嶳 D[3MLզ盈%9=9e]c2N}v,Z D_4JpLttgR@Ry8N=]P і=.>;63/F;RYSEv5Āzy[Np-4Կ>F+}Hp,3;\֊g-"ء,N#EU<르z~}<\/ڕhQ]f_6|>MT)[>vneЬw>*V]`˔c.:#2q_?=I]2=绛N8Ӈ$e)πecʜHG[.e]}&>y<_F_ϫkt\KX5g Mysʚ+}gm#]4skM5cNҵ9+:wNUhd_Ԣ}h ޾n}vhqm϶MXsεղc&:#2瞾~kziI˾:#/&^Wivv`W͞>r5^VX1+@GKy^{ߣ+ll7‹kgH۶97ZXmYDo2o͎pm+2;YDd+5kr|-dK_ ] QcElohU&dɭ˧%.QkץFi%hrժӥ/ cZlpc3fܼu KssrדɢL/ak]z@/lW{JSȍڰp$z ՎNK H,z0`3G$k^N\~]1p|W??jW&eWwD;yДեy kqfUՖ!ee<7cʠpGDi;#흷sN^Kջ(C9rjtww}?|EoϞ{sj}Wn>_l\Bsk<t˷Dm vYͧ 8 :g8zyݝq:\|}N6KgzH9;b[յ}u9vfuߵx~x6ՆZտ.YIŤF&҈fN+[-[/Iz|YH',Ԍ#ZNk9b}ᥕb٥<ќi=uю?.m},]=6+5Z;xͮ:꧒9Bj-o ^8;HVNk]pW͠m pyg0+ؓ:YҞxէJ :z~.i[{S.mttV"2oU^nWx9Ҝt uG[K*d#W?5}DdtK6Ӟ96F&Siӕojgbͧ)M5˽'R'pAM&kÞwޝ4 +{w H.>.;܀^}y-{~|]=7qs|go;fl?;R[1Ye옕Q)Rʸ;z᭧Ǎա4i/4隗&ex{Ixӎ7L}T⯔Ϣ=o/=N1s[y|7G3@PBb`,a ]!k()C)\]VV1ϓLD 0}M}f[;s;uϿ<_N/yފ ӣĦ))sig=[:yΜz+bF}v֌Lk )$iMsut[{tb跢>'lW'/*m*ס(ѽ"|zz.|gM\RNW}H4c+g??KQ gg7 @r僚@z.70}znO3FY`ߧ{N׶ez=k\^\9cN٨׮~~G5iWw',y(1aJ ؤ79_/?oNbTFH,v76gXv<;g?13tz8>*m̱G=w<ֶmMϿ\V]ٗ㻖WpuG{W#>ݳ| >4c*[vMvmj&̫r/;qX^!7Zyzr]tt9Wzjy};mgM:a9F:.夵:^_wZkN-}0< [qQ8;tzY;M^p*mm ]]= lHJ\s!z>V:]G:3fw<ExzT-7:Я=g䭵ǥ8σ:k }2w^*|z澱hئ#i:]\NקɅ2]EO+ӏzw+|;nܕ\] $fnYBǿL/`>80H0ǝd0 KvaNm{^nn_9xǧvվ>VΙ 6^oK!ucEn.=tZJ+2z74秜ˑg'ي$Y k:+іm"gj99YsZ{1tGW'/PH Gsafz^81LZa+]::δŞ,Bڝy[NN>mE=.ǯ>{V0C>{y{93¹ qs^yc2=.7KO-УG'rr)|᥺QZz:uVǝ`c~g?&u|Ҥ=Ζ|_?_x9mT'TuqtwNZLJ }=<B6iJd5m)I0oYN=N`ۧLOx?c<_r{)o7^Xkm*:ZMˮazbP {~^=~~ŷTbkUusNբ Tߣь5ӯSzRɤҽ3^c^z\w|-Weǯ,xygDM^ptm϶'G@ %5J!90/Ҿlmn,]]yvvw4uǓN{NUͽtϖ٧CM:bE3+VَrΜKo,\ڪܳMՇ5ZԎ;s`MU:t5^ zM8fƕ[V"9r}zZf^lmqǍ@ $8I&]vV` ^RIG\fri[~/i?aڮlj:f&|o×]0l4k7So1Tipi:G2k7(=m#^A͗imeJז|So f|fb'Tc<#|eyuv~.; BKF+^{>/ d-o=oze1)99996i_SZ{#/HCXzX@>|74‹-Яig6g6վ߆N[&uzL+KZA4ƽUhΆvxqʖ>lo}5jKr잶x.:B[L9]nKkNiuiC7|+Uѿ'ss1T&"Z)>(41y} Q%)I900tq|_Ok?b<=?P!L7/mmZ֬9î/omO-Jkt}O)NSxfxe6>ڋϟ<ުh>2")u[ڍJ#?3Dz7?6ޛFW|יBJ##C=Gvx|io5pqo+(H(!Dc^M> 4)GoJfSc0Ѓ޷ys=Ws>zkOIUr :<gMSZ`iihދY i);t|(Q̶Y--1Wc٘7ævVMs;$~cӷ32|+"m-ךzS.DV7V>K妚yed!Y+dXƮ}Dk9Frtf'M0mW˸$%IBNM^BCS/aeOFw,_-Zm<_yi(IBPq9{)ԯ/L|Cɟ׉,|[BP(Djߪiy1n))!ɍ+Iɿ{|᪙c؅gy<V޾}zw{Ιo~4.wmU!Jݭuk[ti io7ayߕgFXfl<==|kޮLڰH@8>:rh%߶KҬtnT"1MUm^w?-=jvʎyvgFa7Mקߦp58]ʚ.G|^ (BJQAY'j?'yMS̷#[>gπ}W-W7fZaÏ169ڗeeb1˓ݿ,k9hb/z]6c絴m+|ե1i7ϳZ%aiq.!% ($РMWy^gLzTgnM< J~H|z]NoOW^fƝO|?NǛ=_5{L$@7@nd]ӫ}wΓyȘDFԍ"SoSk>G|(4FgÒ<Ӵt3J2օ= ӍMYttg,қ[Ś;*PP^R$"J8}o`l/mG.m6-{ͺgӛXĨ!APZɍ1q;UzoI?o2oh߅x,1UӷO~o\|@B'czpuiߛs|#Iw]/#iu[/2m;VWQW=Ǚ29lw^r\UϧN3*ǟsgis,D$%JS} Nݵ<;<]<ݍy|(!D &"'&4`kǩɞC=.g9]0w|z><}7f` `3o@0o~Ԏ;\9=4kXsIٲtaQTGiϙDi,5sZԧ7>;%W_nnF3<1+.yJvf}4ӽyPIBM7}Q;u^/hAek̿_7|<] Q(PPM!@léL_&Ny<^CW^E;Wϓ@ ϶q8]95SHt-6˧NQ7%+4"HQYs5lRqc=4ZpӦq-8wsӫ9we-mЧ}uIBJ!IP@d}@45k4py vn~qztPBJh$μ;]9#xJ8z.~n^ @E@CHA Y)F8yլBkAÇyI]>>@!@@IIxE}'˳\uoKFW?l=a%>ozW6L.ߣ!J:|_3БH5 c}O԰H@#.\yi|Yδ*M[VK.lKZ<~5UJi}i6IۦUźa]2SnOkrtJSz}6q5ׅzFM/)+qXSŧך}y?gφrv±{ 0 g/0 "~gzwq^HgpKhLsRsNk=LǽpeJgrBW=V@ I* H~PA >k޹{>g>gipr!oM;WRe:ǒݫcԜu><W=L4OKѷ[1 0ы}O )RB}?KW%c lTb^]ɌmΙ4ס>{ތҹ)<$U5_:ۙ^@I$xߡ>GPPE7BL{ޚMosۓm8Nx6`@iSzyocݎNO뼏8*}:=<4m9_m!8c'}A`  >s3]Z'tog4g/脾.Lzq\ֵթ4,6Kf+ٝe-.{O ()(,=^>@@@a; 6k3]xm\ۥ۟:ѓͶ..Wlҹگ7N}_S7ȫϚz?E3-ugc1Ɍ7}KH!PO}+B~6NfZG3):9bسztM.)ݛ۵A˯~lIPRPS>3辏@((1?;nW9{fו}gyZvg̭yieϡǡy+FO7莏m]3o80`r?A\KqZBs-@E<.ogjӄycM4:f- guAɌ,_  !DRA  _?'f?yѣ9Ϗ|NWg:/tZ_l\tW;<~K̅"3}Zߚq `10K~ɖ1 !+?!e;WU4j_kKm콭XHJL_ׇ:@(b)x~ogr@(( (zorJ -/i}'8mh%c fy龜H P Pk~w4a+y:|]nO;Υ喝N+yNǠ:G󾗯zyzGp0989 rYSNe`HB'|! H }A2cY)1c;w<! (7;{H @@C_??ߜ"Qfޯoc6{ny8k{3Lt-V? Љwӷq_FC h`890K9i)%aHDDDDOm1BA  6?L!C$1, ! @ _owoH"R!@!@;^oo%h{~>OfSegyC;mlv3LHf׫:mӿƆci%~RJIp`!"!ҿA/"  Ke,r!!=|yB !C7r{@HPPPP^IB߳VSe^s^'q6͓d6ͳl6͂l&[͓l6Mi&&:DƸ&BN&&&&!XSt$c_bbbb G11?@f?@+sN`4<46'7fٶbc*GX*y]PUG ^PnjBsX;#qȆ'xgxYz1 V0q܅㠋K8W8*L4PaH*k!B |%e?[[, ׂiR]PE?8ow$r~?3՟%z)Ѩ_SKL뭬Ћ+0"n*evXWV3} c(SGLnMxwq?.fyLJI@AxS*Q3ygĵ[̓?+P+@\jMyHV}.9?PZiz8kyg r~gш $A8e=Njٕp*Eފ/yTnE?h>o2ɳ5 pVOOś/hk~hpX>_dO/>Eĺ̮W͠Ž/x؜e*j^G֥+D"u^3WZ#q>s\/I؂~|(M7JEmeEy[˵%WM^=Ù¶)J[m6A}4}WkqiȪb7է"5l˃ JiP.±kl[֪q7'1+]U[9a$p,Įs|e?{ _[>~﮺r*e.eyW9WK"XlGr ]EfY8rKZ-j>2+\1ԈFi*@;)SK%UOrx,VaZ@ G*UGzr~˹6O(mso~~''7+'C"O0W/;"$O6bC$}_Po㕄Kkyyyxx*܆ )G+29'/%ɣele/|-<<<<<<<<<<<<<<<<<<<<<<<<˄8a_{m(hX\TP8 e*$l5sjmmmc=&=0i{C>n0.{C=_j֘wx8|ϱxԌYu_"Jng9r9aN=NKYˉ:?z(\Wh!,>,[5vvOwVц5x܃Y8?]?o}O06w!1 b/w~č'SَItP;V,q<ݒ>g/Zds_Ğ'"?]Rq8r\ggj0Ncc/TW't߲Wgj,g|`!pȓi7WnOnEX^H~ϏahRkN".rpFa1?O{*NvF=e 01 9N` L('{Eڐc(T9T[W % %`oҊm)r.qyܥk*Z֪mI;ٻE\`~@fZ6Ш'UDO\qUpB$ِL?6)poSOB`BL#=EntڗU8yiW407rq'hQ!pM{D1 h7('?4g 0 3pX2a!l0R CpX^ bDvlxDZ%liJqE8ETIn-e|jY\UZȇ-3N ;1x 8lʫse=``eOQc1c3ۉ*"!ejm'S[Ӳm^#Z"3=ʌ-VqvYl }r/;0/x2TFA+B r&P^&]`e3`3& o~g.#X1bG`gcDt>͈.c(2C+4{|l['׻mPn.%$&o35ͳgwT pgPf#of&,f&-뙪bɶ?6TPGYO#k=6p+Lג?fӀi|Zgj65ظt:FjV A1 #4Q bb(."aR'rL 08wD9boQ7fbBn@mcZ ̰1b"6b.GfE8;s+ xK|'7CWvbۈ2^Ǻ:ElR)WʓʓTR.l'ѕ<zȐ _vgaNg'q^K(L;!~ U[t$m6۠R0x;E)=V"+,ܤiLax,66(Cg\1!x\'gb3T"S_Tf8]m~ް3wC\`L*L{C>4Euezl~Ƃ`CiX+EU0RD7`T0VTUl*x/ƖHgxbC"2È+ChD);, ;byI6Cc*U6(5Ox&Z3[2L \UMЖR/{ wmw2 G`VpmUlWWZ0L*D3ټx"P1xlv̒xzy\]Jcޤ_5Sx- eXyjVYUp//9K8ޟʅݮ^덧_4 a+Y3lBn|{ZLW70)\Z,f0ֳ W|$B,tlFscvZ.dHXTF;XuYgqBx@؞VgtkXwrXy_7?eRd&|%<>2O<3$;'yo0hd[ȳ;1,V!%֬741[e6s8?$oa0ۊȫTC(I,mӴ81;@kwB6ͶOh\&ql[1Bi@,> ,0+ (p {Uf,pmv,.f'!Z$g^Ȫ)Qe3{]rL-TIyYk55<=TU<Go=lkx* R>+s8ƛ"9Y|ygJf6 n_5%뇜_&gb `P!W!b`+ hEыD!lo$Sm2=jjև!dc , dfJ4Dy 0"T-|.Q֏G(P;Yq-++TUsW,j5Sb7/o 3#Ngc2F4O%85oG]<v^g[̐LDU,CeF\ Cx*At!΁XCAJ 5tZťr1kfbNڲl~7K[fhMGRro$؄t6Ǿ;Sg3 6Gp)3*2&@Mف۸=aYoC. :%"aW=oR=g.;LK[Ujƥ^t5!AN0n48-C$M\` lH|Bk 16ؑ+2fbd1&Č͙ [mAwjŭI]y*] Z .`D\N_'1ĥe!;UʸQriUgpǜbcj7fni,~6,0+wHB6$*0hoi͉V76 flImM2`x )A1<]C в܈ͪ=#X4\[ xk;}z차=x-MNlL0r ?LϋQb\<őDVnE Ϗ><?(2ϑ>D7 ] Bk/@t5#hةmP ?\m +Wڼ]<Ј]]`6B؉_g #gqP%bhC61t`k $hoP8,r~.[I'x/gGxN1؅G :S0[VCHyb7A j *FZťGnB;tIN4 Ԑ Df;wH+_1sP0x~?ͲĽ6|]cQi_QRYJ=Y?*<<n:m+U^jݸ &KՈsrx^1{g"qorSQ^A YH`-X0jQLj -ԡ|hԪ+r3ϓC4ϋ>6! ޫ>TSOIϋ>$uE#R5bxdڵ/gr̿8/,Rba$ mzKoO {TUA{\VKn">eSm'Ydc<D=E={)S\~E{9=$^%1⟐iiY<3Ie{H4Y)=;eJjԶA1X!Uhs1Ҷ2ŽNVV|%'IR|b|gŲ|['yAKA**򫁋+QsdOdG{uUɦEjܵ3aeUbEe,5{L|&R@u &o:Ln)DPr.f/YRpjY@Pb,|166nU*]l4TA]KkXN[yVyVyVyV|MAmM6-\[ G sԎ2wXLqJr{,Asr*Z,LΜ+_Z]OJو=mWNtWez^=u+SQysƢr[ NLEU_K*EU.,3. ^-Qc oCsy,v}Pn1DčmPeJR|ر*#=f2ÃSRV|myܵ+RfVHAQV`8n h q%2"YPcVGNtWewTr w\׵ZW^WYvT_&/vnjj+hW3FX Yz¿u[;˃+JJd1MFyVy? ~Lk 0ȼuF&iַ4^kSF oUX%SfG ˡQ:ՃH<=]qf|zǪ|zgǦ|zgǦXt­."."."ܫPYcXzUw7W7Bʪk"}%u+ƾWYZ 9z+.ln+98ʡ-0]!;l0ݍ*LKUf[c۔}"+813ca,5˹x2kP(s?e#|l֦+dY,z·*SctTqIIIIIHA<<<<<<<Xw=]r(˲#;Se5@rw,ծg-cO#<}ܱ]W~FWc2wg}^/vf \4ٺ{kuWD3nG+;X!qv,>K z8]/iNE5t(A0+wRx"b~2^|JO$OZQUUnT]eU+OvW6Xʺ9JPœilĦז]@&4+])61Ų;ܠ'b.cb\6fXVKjH4۽=m?QJOrib%ȵ}\* v̓nO'EjE,+l&,6l} / 5o>ƀїiK`e#Am+\w.އqEYnO.ӋdGTn+LNq0\dVA/[7wl:%]fQƲd5mAǏH'(7>ﲺV:5eT?8s}?GlȤjurq08P<˧ievCFB!$3,W $ WN9.Z/(Y<ݱ'P``eUf8GW9zEMvY\YnmMf~i\0FlUn Jٖp7*NUh/ <% oPEK'r*>Ye5oFZEP[g-cS_w,v3iQwFfдϷb);yOcl%㯐IFFRk t5*KVG5ky^5wUZ8@K_H͸cpc5?-.:Q]tSԵV\7GW] R:ǯݞLtiZμeq1+){XUp8`kb1Y*M|t|[xm0w'ɫQY0>ғO"B ɵRb#4 G&M+Jܱz ͧƊũgمK~mײ˳bcW=kdcv6Ӱ3dj- 0ޕv}U+RmNg5뵐/']*"˺ϱ>-WW^=Q?eDΉ:'tOuƖۍɳY@@رȜ|fff G-Ó km~on7ȵvݺy}6^G+6y^ʗZ碱gI-aSǿLwR|y"mO⇱TPmE~ p68A0X)ɪǜq%aNޝE֢#q8o译s]dy 5r|)w(96HqW}hZ*bsʮO''đP85׭U[) 0S_mmulrA"-LMߖaFcj8fZoJq=.wiN+|lK+z/oV`?Ȟś ǡ%`SW+nyEs pxE֭UcXS俜]w "XWjd[Jyo<7_gf-j%vKom_7Ug} 94o3x5JZK͟&UEl\J({qJ{lx_T]{~(Vԫ]g\B>,V!,FN@a3we9T@b;1+Q_*_x[ӑ_&>*9|z%+ ~F܌15XkHe-SkSj؀Em# 52hF=EaEbK}5RUUq{_RT.9'\p$ǡuUUIQshYG'y`X*z1ϥ5ʀʐ5f-ElL3nlT+|X;ߢv'T8էn/ c]~1k?ˋB[W ۖ}e_Oܺog/^=g;n0ݡKjZlӲ#c쫃,cN5kMw\3QBRHr}>%47f peZ+eqm< g1?aeȮv@"U9ײ?,-Ϯ'r9Ts[ehÍU!Щ+bӮQkN/㋧3>8i䛬7mkKkl%_|Wuwql5mȱI3k,GޟʳKWYRlkw" 3U2>'~k#Qr93 HP&YvWtV[jlʀ[5?sRTxR=e}@H>T$;dq)K韛Q9qxAӁg?SQ(eB.[XDiUt5 f&dž"$0WLqgkT9Ia# wp >)77Ya(bPfF^=ƛ 8\()#T˯6ܥ6[[$t騠vUMYdKƎڔW8su>Ǖz?VuDWJm쭞et xq8v~ڮ'lf"I^Ȯn֨M;\;,:1eSU܏[Ng>7\Pk+*iBƩ~SKvoWli܅_dzcm/> 6qͦm34Ӹ.%\va].W}mY I&ǦW QSp8:Hs[6c`ϵw%o0=g5a!-Ʊ&,s'f/e? 7W:WR>MO=5uTe M5<=\k7v#qOkzm[L*Uo_)eh@tbbcҦ[#7{_gqG"[g&ͽAA[Z |i?bL,Dc@N񪭈s9 ]>;ƸETrB]ʯDQ?y<O?+'q?Nuȳbn5xWh = 9υŖ~7qX"h۾:yY6>Q)2#}mBU<<O?yO׽6 o?OYk?O%ܪGs-Or.IG8hU]񭾠8K.G"ʳu=Zi0YoWS)JN/-\U/&*q_7ϿGma-JR%u~$1{?pa~r.%yv3mUW\eouok{ɔ5r_6[9]ә qbSsPQ)n={^т1SF6mUQ]M)ZV\{i 4U,U@z+M!*3$KwnHm{;UTٞNJ2@v=lՕSUpUE|`#QOԱ'\@Hj,OKOT.U9N qަn<,M%;]y[l*Ssġ},kO泾װ*n'QW̿G+8gnE@,Ƀ?/W ƎJ')>R[W#tm6D.9aqH*77 YE~Qզ֪lMH[VrхQSlNEo=ֵ[f$\X+8W+sw5V&XD ;N7&.PSm}G-kDG!V8H,ՕX͛8mԟZr]wq ]iXyy\mKuxe``VP r;v,lJʹuUEZ]53ghMNӋ!YP:+ZoEH3w/d,[6ԩ""9e6sdr̺Q%7rYuƦ'ʏr5Sy SSQHCS]Pe6ꕓ \,xvWKoҤy!ɻq )k=o/O%y?]#~lYPsVK۴N:aުm@>mr,ݖcsW>{ 6ƿPy W4qb;+Qj_W*qa~YHVչOxŧVzɶx-5 `(+h?.e8;.:h;"VH6x؋KM!W90e\m_QsSb9\cYS׭VU9 lC[r((1Qa *5*M/igm)}g}(W@#[gqňnv,kͩ96~yQ:-=n 䚚+\4ye=(N&ae]iUMmҕ'wr>W5#qUKrN'crRqXIM8\`\MgO_pQ_oךl2ꍉN.L񼪮ܚ*q"ZZ`4s< n֪\}6q)?}#kt#NglF91-gƠUWNO!hbt8|SȰȸSOr}tR7BG&KAhac0#E =H@pw130  =1 iC!@s*ybDhGNf&u0FOy qfN `ƃL@aXOxt"g\z'U30؏P#f0AmqL ,hwMl3f{ͳtMlf'A4"1zRbXm3f4ƙ %S31 33Xu#LOm1pS\é0@A 33l331:AC Ƣ.`6c,f&giw31ci34SaxD3nّ3=M-Y[FD=4&!C i3&t1133!ƀG@`{ bw'ybw_㧴;NӼD;#LE91;L61:: 0AAffbbm:cLAA :u %+ÒfbcMmn!wamf{ML@sbbfnmnf&降=M-5NC΄LL37LM3gLLit`A1a ƛ137i7M 1͓3O$Sy''An7Dh{'Cha1`:cL3311ٷMf`MdL΃w:vC.Qgi`17i6B*sͳxna &l3aoc:33"3&'}G{NwЁ;i'm2gyfNtN C;hhh atΛafPF:O$197͓|7Md hinmnۨ1ci;Axti\5$Ng}'mg} ;i`LqZCvtl!ftQ!8M27l`f7M1"o3y 1Lum&nmnu2ft1xNӼ9ӴӼh1yyNӶw״&w3D8!tmfbm o0 ͂l&7͂l`o3y6 F&)"rf16i7t0jat0&43iy^Ӷ}{AyL \LNӶ&4`Dϯ f&ف f2ziͳ`eyD&;&6ĉnD4a6ͺd0bm7Aݧihs2f;MNΝƝNm7k67im3nNd۠"ob?hMt6tn O$F9\k16j3nA 0mv͚6Lio6MdMfwf&&&333`YƋü0fff`ls6bbbb=8f YcFY1LLLCX1f`"bcMȘNt1كv͓ Դ/Ԙ3Az15"A Fft^c(3tecA4]c 5V3|λfs7vbbbn3330)i3LiW鉈z#O~scLLCMNf$jc gyLLLBL̍1&f΍@X_'Hh["4ƌu=mttg#F)VhGYh!h`LCRtz7My m604O$@Љ94<<R*YC6ͱ@d/LLA`ks `U&Y˦`30L@aiMl6h^y'y!0 9t7vfɲl6 zK Ц?陙~;EX!3:!s7L*40h 0Xa303S1bP`=%&:JBvtB@&Π$MBcҰGht-3:bgCӈ5Aæ4ݣt 1t)ӘӺy'od͚IIФIIHg &`\TXǤ+bmb{LB&4mۣDqzPbд7imfٷMt7l99M<7x:Ipжz@,1tctLt}B&&1=;htۈ3 2#b0VC3BAB;~пPN!~HI~= h!7Liwk74: LVL}DB:zA FεNmThТ1ƀbLFA337LLB5 {!31tF:L1Y^`~ASLek fyZ-Z1`&&ɍ m3LLdt'FC7[Bq B4Fч^fnf Ml6ͳlƙ3t7j ϠXZضa1D>LLb0b1n\k[jW,eoD s13z 4sXs ћ'Jt0h}.8-1c6"41 C&;řL"0ƀla)ǢG^`>!"1D=6`\E^< &b<3:"cLE9p?|iLhab l#itfBc3i'O(Q42SL`:(3ɂLE1@fcWRcd*-#Qp Oi-lU&ٍ-L30DM[fNW b)A,0vl7FjeDLnaжb oN趼hЈ=P3jN3i4=f`3蝦ffzTڥɌ!=J#WLhgp0seUМK,EU-}Ɠ3 +b4bFi[ibH Ό> 9Ԍ\i['aA iI4km袿RpZbcCE0gim`"F@L~}& h Ӑ/*l` h "vs)[誽Ե (5lcLMn#,ى1Ff .A6gδۉmp q\zBh,cU^uCJ.{kKwb<&ٶmNnC4"St{\jclaDj?Fh39r ٸZn z>OUVfb O!t7Bgm1;Lh鉌0j=nc@`;Se wK@GsuJ½B"&}Ms`3$t, wM3{L+Lz+gvq;00xMIFcbL`\!SO>Tsϗ>\sϗ>\q>$O>$O+lf8g:gpu: @cyp~\sϗ>\sϕϋ>,ϋ>,ύ>4Dϓ"Sf!@cQP{`:zȚ=U{qR>fE:lї\0âv|wnMgf=DMI nڢnqG}t`c7fz;6zD@&qw*lZ )bY_ќ&%@E\Be&`$Nbbk !՘4fƉ=<-W.c.:4ft,OB:fUE ҵӑgL[əF&L#7v7BNt30Gi&b^}kkMou1=b,NL" luFl若cש7Y4fcLЬ^fh,ƙd0V& :\0޷=kUn:qOhA,NLc6,I ֚,|諝sD[CLC΁LL=0:sO&Ө2u"2) &0Sl]{4֩7_zVtc 1m1133 &4lGe6gV\h?( ;u1c ;gU\Å"ȷe9n.SxVm&&6bbzdz׺Jp3{&q3 Դ4Dı"+].hM'3g Mf6ͳס={J>"utVƆf?Ei͝s66AL_H>:+oEqeMq:cK 'ACz& tX`0"|tW^cꋍ9~d~A}} mWLDisЫnٴ~8`U?^fffgLg@3tfgLg\黣0tc\LLt3=w1ͦm3alpn`9&џ鉷C70V MQ4by7܆m3nO<[L&!Is7v@hw{v`XkgT&V!n4@hzstΤf+Ǯ%v kC33:\뙝suΙ?ΟYf%tȋ3ꓮ:>N#&gK1,VÎt,Ħk`Bî:D 0&eo-1?:ƇAOmN=%UYd!;1՞z\B7DlK+ez}ѽC =a0a߬w|J1``0cL 꾈1n1ݧQә)@f'Ƹͳt'L#E°4"x3NX*ASzV#w: @ ƀOh;&g\tfcLyn m6!C@f4N &%hQ1uƙ:6Ct33C!#LOm1`?a33э3C #:n`36y1f4&cBt!DƦЃqKfbwӾ\:cLi1LCxDL7Nlȇ=M,XD40A`F:bgLL33!ƀF !1xX'ybw'~s'ydNș;LNL1;Ll=tL40AA6LMngL@4'@4:aC`+31167A6@:{;ͰMt6t3l=Ӊfnmnl311dTe)0jtFt"bfgLi6ffbmtƛƙ!AIif9>ƛn3dy&sfw@&47m&q2&3;ͳpLNд&#ˤC333OS1a#\u\s3:ubb:off&&4;"bbbm:gMӴƘ:l1x_\@KB ]I6Xb3zf^ufgLю ttVϥfFa]s7l3|ݮّ7L 1117 LLNдf&4>$0h&&:7ALGf3ƭ3m阺~ˣt&&&!Yfff30i10u 6t!:sݎE~# &<0 B333zis#&cEфHxAHW#LLB!çv&4΃ a1QcZK+DǠ kϮ[nY_ bzMpОX+BtHDiA랄ley8mJE O,,(Q 9՗1VaA ϬBΞ^SV5vciǯ>F:,#=f)Υ&ɶz=Q hRschbӐ6tXiUeARc&{̵*BٕW6a;bLLiq10:B@L`@񽔌f4#Ԧ[^uK@>}RqbZ;mםnW;E\\Otr"1=ŀh0D^Jz#+B4 ڨf6;iMxn|04Ǧf&fN6Bc\u1AbzޛkƵYv!fh41@ƌ؃ћqn|B 0zƆ)ЬΘwaY& ΙurԢ΂%QÌmE074LEю U^s+dzݑW3l1FMBF0/]zY!8mA@DͨxĹ6,}D=Kf#EИ&u^tݢ.ctS16A M!0}ElEl[^uF uƊߠgA8DP0QT54|H˟.|˟.|˟.|o|I'ğ|I'ċVLtю81N;QO˟.|˟.|7>$ϋ>,ϋ>,ύϓ>L{)1sYea ޳6_x5nz&Oxzu+6yM`9;4m0K,>G}}4ٝU17L2 Oix]ktA9鑉a~i14c}:ioMvnE8ޑ0}eUFl}Zq\i3΄p!]sb(n،x2Dl.I)>0DѭU=~:`zLnƛc,;iuc=&}ji=(`91a3 V3sc6&1Ɖvcq3{ͳ-" ipzw1mxV&3@5c.N3gZ*K>0=nItG ΂{@fqhZLyl`ycש^z)R36;qDSbDݭUn֩7_zV;Θnf:y#:nc3.aOzc4U~a=lΨ*[2`zRD򩃣0gLMbmao^ӜJp3$#R"]2˭ΠfVGEi\gyLÉӴazp*؊ I9U^%tUV:Y2`zr^tͽי[RT1E}W[Q>؛M6coˈb1Kma֪ɳ/:.vq&cZt6ٴ~@O> UVg;?Ⱦ>_Tڅ'rM!FU['MG'4:t֣OFNQUwUSQ_S:d =;hdsW'A/lnŜ06pC8𾔨M?_3sGrk (-ay|sĄ[khTlX^c˺8Pf'Ce y\D.Q#c [?M0 Ҥ|?,g>_bjB60oi[ն\R0sKÆng@qAF-13cpb0"ORquRs2 21ĥ.p\PpGi.5^ aDmh읋y=«amf{B\Tj#Hau[1h쨒uQJcޢloR(,,A%nS/CG[rսϡakkSxQkpvԢl{s3ejn7޾ R  r:h+ucR@ry5G'7K;B/ {U ,of/5t ؆4H3XZz]اbBD0FK%!+}۷꿠,n>⏂^^RCN"7v)kyN}>JP/&>3h*pv Qj3'gkwq" -i<6545 [Cbu)*ëyQ\3d~c, fn#r|{u3<`ۏc蘻C-+9RkI)䷬/ζVx%ʢY-KrbIn?mp;dqs[ʿ({_'3(gWO*,/z$1YUŴimW*0QvdQfC}_bfb|v,xmC,C9QQ̝̬ZlC5n10Q75!E0V,=n0FŽa' BA(728.Xc޷35qzJn'G,Q2䡚$nQvA/>z[Q9{Z70,=F {O&MC0F~nefb T!txsl?o0Y 6÷mwNahR nX2Pfm#@f]oJ8nQ1*-Lδ1嘋U\]+ \'.@i@#HXjD`~nՍxx,#%ޛ",%̙ ^l*ašaq: & AI=!uj^H×O{Sc|ȩlXrұfjX2ϸžΥb?noXCYҢpfAG,5n8@4;[gE.b3,ZoXM>̪6^sy{?s| istm:~ŵ! $?ho;9NowbvX%enSVK Yo҈m ~e?ۙWa˖|QWզꊡىL\@3DosAw?j;Č',L1e m2>hf7w2wo:Xw1°>LA(֣j?%8oƨ &4$3sz57/mpda(6yu&Ш =-^T!+v[_[Tݓ*sTBwG0a.)lQmzZzGtmLDSDBAB2<`ͮ+l<'z<X#KgpF ~lLV&ȒbADأj&EnFr}s+TtkjGb+]dy14SSDnXpS׽8^2y"(v6@Y澖_iاSFs[,Bja|0`֨ ӵJsQ2[hzSjM…{om/q9y_VUiPPWr\RѱwMo3R9yw.p^w6j+pճec M5ZƉr"5 ^zz`ֵ#T,x+Cktt WhaPjSi mP(}JtU.BU-WZmH nk( P=S!gKm6nQPȇZiAwpDx>Zm/G)3_HEc6mQ}O OSQ"jx+ɨ@[zb,P@ \vW\;ZsĬNEf f5[9!8(]v&V~k̡?PDIXQ jv+::L#`VO-w ! ,X 1{{_E(qwNE)j[jYΫ{䧻NCEԁXO>5+MMSaeۊsS+5-fAlQ]Ί=aDy-|Q(mP":ʮ/+Bݮ\j5Q-}nIBR֢;V%VO=r{TSQod^D-6,"8=jx^p7LY9Rz׵#ܱrEbt**~Ŋ=j4:3V<{V̠'Q@ ]g8v:#v>tUѪuKxEh[@!ܣ[!;Y-ie~DOl(\*mZPQݶP^3{y6\:|׳_Cx2p@lv Bبt]R[RpRֱ:,6-ZJ_% lBAn8-|T}_%p[=cI<¸v(Ϊ^}]O()N+WzծK5LZè)6AtT!Y"B'} "#J`XYң@F7(e| ;j PDQ>>!jB<* _/oN{BsZ\J*٢WWb.qϨ.~z)ϩs.5G?5ϿAѱ6{!^̺k+YYyJj5؎ch&@9))x(%/jҢئ#lV"Gvaʃ38t/k.j gb#*mî1_sS};1cET֧-KA%~ ȞlޔGA>"0 uS=tvB=Kw{;VW?a@_h;ZBz'jG?5y5s.5FzԔ?5/)zJ!_֦Ao _/y/s_~*|jN#E~ _"ܾaW@*w)KxOL#jsMeM#gZƍJeDҧb`gܥRWHGjh\DlR(Ɓz}ZWyX@xw_qM,ľWrm\qq}a3R1LƱG2f l"mLc3w TS.P wrըz:€DFrOgd BSs7B;[o7ʅO=N)t*ϥS|{*t~*_TP_]RTs_5"?JP'B>*Uةj+ N](өJ} }ꣽ|rYSu(*:0FVJvu,kmA{R+IT%#o*sPj[%R9Cf}ދU䦁=j$LXp}‰d_l/W+ lajaRFw.31cϥ6!GX\1RbT! 8I`b u㊠%pu(& ;\3FѶhJ;aE@tgCj)ZQSJXVt*uoJb|\TRJLv/x*-ڤbR=Z Dح!p*`ڣ R+ *p@UJ&ER bѵ5.IJ;@[jܽp6¸U`\RjR((vϼG_][4XQ@5piq ¸W ַָmլP#pmKbUV*m\PRr(9MNaգ6{Zx(h!V hT㊽puH.2\EZbp¦H\]Wj!L&w*7[ҤȮm*[V&+Jy5XʛTʛH)NUM6+fqjuCFnTH:sFMS:%=; I@E TJ?GhhA-h/P "lUUTTX7oUUD*(@oLzs<>e7]z ԴLtoR1TS>0ؠf|~b {Ezu(ޝSR*SSjUTZINҩNĸ*lT O6pZiڤ"JV Q\1\ )(*ت*uNFJVTPQ#_݁7\tfqxMbͤd'`ҫ5)j 1w)Nj lٺ֊(Rf\V+Uv@jP*WZTcT|>~_w8hThZUPJ݋6.^(1hxB0WqNN*NUB\UTT4Z ႚ⊒i\0S*V+ܦTʓU ܪ{TTUMR7iTHb=jp@YTkj11@#+4LQMH*UJܐ"`IνE[QUUPTTDᢪ-B֪*!v9u:/xHJ1USUDb(9tV9&]5mRRRv\X11z`0#ުaM֦5ztHv)V*}RnD\".rtUVzTT戬 :ƷC')*EHLN_^"XJ$D*"2-UUX\bەUUQ2-TTGۓUT"5j/ir3>x EG֨%]E= Aנ9|+m4IIjjmD*:*z&RrVrTڤU1æMT 7hM(&IIMMRU[ъˍZ"Sܥphy*)MIWF򢢃D\`=!&mORj;W S 2ئeУK}W.֫ܪD]j8$׬muŰ_ ~D-U=RR:hOۣ. اR0U5%%#XtIV N6-âN5ҫ8 U USR @*TUT%PڪS!oGI]Jilt]iD5R BQΥaQQykPBtfo P(ݭ3*JNyݢt*P!'^TqA`إ6^9wZDf'h *GޤVV%"j`*D)8E0T”B N SiE2eH+hS*&5v_)iZMsSf*>t r}hz=k+&laS^Eţz+G[Wr*X%Եޣb# ]oҰ?x\.PjQe]'b9hv"؄,pR :%qrߵNJZ(5=S GE2U*Sy* N L*TStITT n#T[*ڸB l\EL6FbfeFA&RLg[yT模A>H>gҎcb8wEqVEoV?ۯ[>X(Pf^ $ .XkT¡>jbob娨ԭQm ǭ` ;9ܱ82[UUWTԟin5PzP&ӣT ؤ誕R:UUTMRPhTAT A_R gL2BN|L2 M\8Xt~)ޠxbbMXGSh.B/  4WBM 8)mUT!5gJkV*:"deFC@h*#N4[B`Dm7a8 P\-.DԧȒ4RS)rg%"kvjg"%n˓%_ءzZI{cX ;`AȀ3w;;7Tڟ[~i#ҿm pC*DB5R@{ 6P=aN%IAQ%!|a=UE6,4sXFoص:?0@L4t@Niⷷ Ϥ)F.LȒQɜ7.%ĦxRb\+@1\z޸Sr!Ԥ¸W Tڢ^b\]zdV#ҌlAh IY_gXD'UA*٢_5ԢF0 pyhZf[ȚI ։ͪ!нD\"DM+!U.]XQmփåq LZïR 4' *-2N鰫m@U^UUUUQkMp6TRr{ظW ]ɒޚ"kvz&z_&%@Hrqc+txv]7Zy޹~^lQ*7# B"0@r؎@Ĩ*J˔r׭>\a{H;Þ?,70S_f¡h@Ш\lB)[жj3c-7o&m Z 'Z&JrM^R&sRݱJ|J9LL*nQ<0@{&x(-J*&˔~x=zrڕԌ!.@䪥z$%T5Р$]5p iFj">W:U`EQX)5 ޡբ arm2N]!n肈P.VLz7sWn̩rd1*@Lާ]@S9mr1\\h.؅4BVj/PrzSD"bi` sXcшz1RB(jV\R$CQ:œۭFmU`Bߠv,D x[4OԱcݦO>LgʗRR*PBTBU LTT*PBѲ*$PBQqPm/n^7EfM`o.(8ACXMDY.&lVҩצ :]6Z^4CH o#Gq@:-%8IZ(*;^j&)JG,X++^A5]ȵjSa&]>M R=jXV+g+zAK>pU*gvF1U L(0I5#ܣj2R:%+(j%(De֣u X7x)ɡbr"7Yk3D]%>kQE℔SsqŒ:2` o*f:1i*i4!bno.4UIA4W)튐MZWLJj$tt{I2P4P "s DX".-HBlxŔ\.^/-|O.Tw+B0k!mZ4@!F߬zlsh mPoZbmDcc`ag %̇UI֜/TN[щAb0PL*(5C3 oZ&3:Z;tSHnH>1נEjl@܎K8H l*F.;5mj^nb 'Ur5ꪪ{z\+p1;,݊\Kq..ܢ]آyPQC+T,фt}pEGf6O6&=iB:M*4CC]֛WUw[bzĂࡠG,ШXڨ!jFxc8ذ< %҉/‹f!xTETZ'䱲( n'd'*-k٫AS*^7 +ܸ,-MSC+Vϱ=:j 'K[G-hhq&njx(CNGbQ5E[.؝@H6LᡷF¤VdgjKmƢ@t(CF 7c6s(Jn@"ňhZEW߼8ZvXOX}q#2DQpyAr1?.SY;Ky}Pb-ouu/w7>@&7o;g/1\ހu0v z+܈Ϛ˖SzvN`5(m4@[<^Q,Uh[xQ0Fv(\B1 Vc2̙?fScJ% Ubl_Ŕ 1.YJ7˟"#srx;G|9޷"=1D|;5@jU T*PBpq //.yYL\?s8TGC(bhCuK7){$jUMpGvyvy;Qݞj\.\.G4p4m.lRtԢtzo+uN4YU0VRQlqZ4bQ&_gٍj|p4v-CU?9 @67K]UJpU T*BPŽ_{9?MEYϞpXb?,OGŗJ$m#R*8Z7~.+{|3ce%e( Ƙ;4{]@7FJhN)"5--QX'q"jobi J dqt~+.іٝ"RW5iZZp|Fs06ѫUL}ǹC,h{i#7/{:4xEΙ*.hF\ƍ9t!D Do):m>*޷xi% @`ncm"ŅJ15XMkˊ "D/ sƎ ,>7J#>v@L5.TD"'j6ϕ0U财Q|&TF %v5)Q-OEكw.m^{tBh5 mN=sm{Ol $|~K@vY?S>J5rw64&Ob(8T:P=ͅR70-=!EF-Ix0Q2@Q"rkWb'UܻdB5XhFvs(4jN'2\6,ZTiPʎ1qNɩ3@wש@Q0bs5@AkR8Ȗ03tCv/s -ԎQͻ>I\Q*>!0 WrߩKDU@uEamPh.^dA&?xnn;TM}Uv׊xIad͚,CGr7өA ˉaw`#[:P&luu,bnx& &S Nlg^ ر4:#5ADr L4B=$>(88z+^b3"QﻘΦq-CQH6Q6_0aK7# "("u׋ppzJ-pq68t8J9yj]ǻ^Z6Wr$okX[2hy/qsкW_sEUOֈ\lF-§j&7Wm_cԝN'H,@ Jˌ1ŷMojnӇ eF&Hb8sx蔊RJb:.SjQأTxlXn[LaY-_QAbeU%B#y{`@o\=oa7dS*1w N( y-x x٧g{읬̅?,ld ސ~&5Ѫ'SW>vǟ;q';4~{U1\{{b<9s鳑,mҚ-i[1?0-wܳ=lt6{DUgfW@ .Nk7[ RP4)RFW 4 +X,jYD*t+{Y[!Jk:5[ldeaf9΁|%!`XEIqf?F?ttF$"dAo m \" z#y-'9⽬Ϲu+Σ0*(>,Dĉ^ C,}i ֍K|J89G-х Dx7yr ]C"Y9Q#hT޼ϒKWӰմ'代A"LԴFD;ms*f=*TQ Pl /35&$U%{Mt1Jt[8PYlP79כ\"=N{pZ$6&XvZ]yB&rތ*b/~eO7'8f8>/cjC_gbą8J,.}pҰ!%EEQ÷D Gw+˖c-#Fy y328jXJ+?3?q\f@rpQ(F lǖ UZE"hRx=rhM,J{d@ !׹Hn+tFa݄HZuk[m 84GC/ڎ!Ȉ0pG hPsL.^%6Bvkx}BwtE:lt^ 1{>>+ڽA60sL[yES 稚ԠӵbLtʁ5.i>}+eLX\6GlLQL(Y8s$u(DD43;vInA5 ?4btbGwj9Yo NăA 9CNfA֋T3a:/HJqnK17d9m}"-f\{htDkG;.˴׽$w?jbRKxG.-QDVDڢ,Mcqg:\g\X>xEȽ*.H+j<cf'Qn|lNz&Q4cxr\% 9bΨ晒lM8*[HPhh߸jP:h3k?Ío\-P6u5QX*C/(fB.kE t_?P9 :"!Mim 77PQ(RZjR&AwjޛEN. d=6rXé͹2#\9i1EGbܱ:pԢ̮ZY O z Ý@P|/pp~7\/q&}֋\#xƎI[l5/q<*6(>$]Pqֱ>ZMG,u Q1Ygq-z#\_Hgf0}x[z36VA@S/w߉i0ޣ)IouTl%;W ּ2aX]TLI;u*bY.<(5=RP$9lj;9rݰMaG.M Mv°-{^loy,n`vh.D gOw1ҊG׈Gڤb!ZHeHQ=oZaCJÔ&_k>ɰm5go6^pӮ*dY?F݈v<渱4E@P(uj*F6]}[M4u'V!*1s[mmkp(E7.a!xcq l<`i>e b7Q47(#b?=dϣCZBΠ&hsҺeZm&qNC,u ,=O1r,t}1ah-W fGBLW[Т+h+`Q=KC-W:ϘIm_yqM2H*'F#ѣw58rof`oш ,$4=,r8V:`lZf,p}( n9f7W9Yi@""lqV!Ù>~?1ۦ*ઈv?J'aPp3bh3<8R^XDw-o6 7Mgꕅ#pPmM79r|9o*O?X[P,fZu"(M6.|P-:q-0m'e5eag1 o>}*W0k@L?/]2n3y6~T&~m:s#pD ZlJr:㽱J󍥴=)vXDO@-&=\X)t,ՄIDfsD:lӇx/|I=P&<8Ѥz?;C:cg+hWFg>} {w0Ko>r^e,7.Zjӯrp㟚J$D,Vזyl?;^~Ls3W0P/qf4TVztb4osQ5`|f4<\| AbQ8\PnGlsGa~NgL wx/ٛXl@qlڕBQr1.R -ڧRÁo km5|}\Q?Ϝp?JBi؃Z'!8ee⟊L{ſ7 K-^A`0GFt60Klpm\Ϥ@aɷnxP5Ӂp(QÄ;w CK[xR){٢P[z"XF7n-ՍtP_f(h㫫W}D |0t}> '`9̽'Eu%ѯRǗgN|"} wLͤ (8[bi}]c /; _6;_Nu(6r0< k^\[uf_I꣛MSS6ve^gz}Ealќ^jt=!F oj0Pq/L86Cm;sq'n \l&6k_?!oL$8E zJtӤH%2&Q s J `,KAW"J*TbTRJ*TRJ+ 2 DMasTRJiRJ*TRJ*TRx0F"oWpHEJ*WJ RJ*TRJ*0ʣd"J+¿Lh_LL3j#WCD)׼To.ɁګTSC*TQ# 0l*W}@ V_3 r.W)lRefd}3_XX H7N=V+|0H?SQfŸ`=2-l]. Q8K.~!*:6/Num~j4WEJ0OT w,2ts/ yJf-M?hh/w_7uf*}wP9˞%տYi^k#+[7(htd6F̯2-зI}%q *@L:N8KLt{"G-)U֮yUrp})TWg= Y*T-Z  @+hn'04(|m:`2滿iQv]:UÐ@UP! 1@JQu)nVUK >lGvjqq e2V˪׹ᰶ:B¥J.M=x#| O]@s{KĻ%505gNt94=UȰ:hQhb{EQvw/&@}P4d.0%D'qVP%}*PPp5(E}WNCbVмoEW-|9-Oi6zxKqC 8-hm謨,~qXړ?/[S}y_e>`=cm)~cQVr! .v8/p{C̾f}c9p_itP9Smm{iAPqgĸ]]m-}Whjg ,.O[J,K7w#KEa.Tg6,T?t5~PA߈H)]Α bo{Aj̱gNek3ݥWWٙS--RTz*c:eSo%f4Nba'i/W jP@< T^קlu[SWiΠW_^a'xƴw)YՙnF/.D\Ka&4op0i0z%3)V-q&#pWŠ&u53޷Xu%+>^`.FCHwP\=ͬ/!FߗJd>ƥ8OE@h& tWx\u?Dk%\&R䘨Ϯ;0-{9:on 6D!ZnNsYnCQ$H Le_-^ }ֈT<_=Vꩆ/"4P5xG@2*KeV M_MEc^! Zס@v_g91L6Dtyk?ƽ dyi<۟i7ٻus.:Q8MsYVfUOLL)h}A@`!NE7Yaw'&}(eؗ/߆`PqP wtk9.Qf-&xW7wk^^FgW>3c])w62jb&;]mvqw}=q.wHoSQHrY5,zn~yD#*bx"4 }ˢ8[?:Jwӯ9j7Ϭ֭ޯu,N4n'AFEhWi_8׍ĶJ[A2rz׼a=jqEiʽnxWP!]X 9^fI8{A-8$x&љ0+(S-:Q-N\2 .Ag'W_Y>\gh){[5X?F=ƣEA߯vWS\hB?Tf^M`k7>H0cZY-5sW^xx=^ѝTnmAV^qiiYj:Q-:rc-8J~{P}$\_b%^&!Eaɻ.0r `*nNw Jܺ_>eä:yrKmCםw|6l߬ Epy8Yv:URיJ$ڔ x~p,QAnD_~nZ:r̡vplmEw1_t.v\g:Pzm9CJL;ƃٗ${G J5D{h!mhm~O-ncYG)eE]35>hDiyPasr.Ǧ `{wڏ n ye)etzO ~eZHzqӿ .q~ykuѥ'h hp&Y}^e-{#ƣpfyc]u󉄘3\h ^ޡSXJj(G؝V5D\mn|Bկ/co.U+dY1.G\v>b) |ب ҷ-Oe}rr)|2:>x8e9&7BM2ft:lyO~:]BqJL~Gud`,.yq7IqrNOw9>9<@Xd0c.}t[z3S?}M'\D<ĞRyyI$GGoGsW?GsI''xbO*>H&ގʮ'A4w9 >Co[fyi.iBCϼ[ Tu3.4X4Ei} dWIyskЌnBS->BX".;w} Ω$3Ox+e{L Tc5]>ĩjמ!ҭvAXtnjPphE݅d{T>_}YY_<{>+*SzL 4I''^xbO)<<[fիj&rycі牟IxQҭ;ǔz5Z+ǟ\%=hSUhk*0"bhB ?_$g$bE*O)<<mqyv8N$DMZfƌ 1'lu˕e Ͽ2;|;X,]{=|&닎25.ehn'^J[ig{Pݸ3c4{ Io#<fb\9`}L7 DJw<ĩNAlLU|.neKlRp_gq}؞bc6 !m6#GVYk}0UphPQHX%2:}ow*E:sekq1/_<(Z} @TSX%dy7x~L1g~ǖ}Ko{̷Z42Lbme_?|6]MVo#˪  )kyݩu>--QpEW@y{O;7 VcS -b~Qq ٷ֎ ̬zYc-&GR;ܻjī%iCgKMm=t=`Y30~lv])Č(XFw&0 _O-~7q0aX51ZJٺڡ|ɷD\G'Fk ѩ_(!1m)=+ 0z5w㓤0c<+]{q;3_ cSc"aWq [>Ypv=ޕT h*ƹa-F&eEп4.⥵rx&+ gU ŶjL1,z%Bߵ4S[}ʹ"dLd8j&v02O@Wc,'Ѫeݗ5R%mJW-0`3x&iJ)YFX7(@-ܤ͛rP4 } Q^K`z z1B A7Ta·*:roS3j v;ħ-:>/8/ZO#B˲WrC 1➖` Vt*4LqIх*8UyЀ kC4?[M/_8?_ՔI>(ڮ?$`_KڅuO67!_$$6:1Տ6<ij!WY6KHk紮b]tFU_O?17|o 鏥ɫj^y/DV؄O)9xw`/3xۋ,{VVo?U=wy;I 6EWvK֟X~A E(eĶ[@y7= mB5W Ø-̦%Zlո]3 ֲ>P,h><?Onk]|:MA_KW.ƻ9%v/ BpڙR8 @YӘ(p=3ǧ0]`6?k?54?Q199C)0m:ƙ"/ZrSX`G=l0̼nѝp]]o. Rc3+_Dџ vuEՏh8*XsϚa,YUڿAֿtG' =JXL9uMzQ`p/|`6]-mȗBu{:dTc'*(/~YHP}_bL '!dh_^ō~q+\&e}6W9fc WFcw[tW;%"'SA~!ǭ՞J;Giy?b!GAvupqz-@cT080gw!1Up(U,aVGO5q_GJo;Ŕ@կIG&x}u3OO2h~`hn!˵`$=Fx֡E8pUKkZ 4RAٺgG]E7''G?Ճztխ ou&[F gxt"ΜISR6&M}j+]aL~S2`tz$>tPS>LMFKOʡ,p+FSCzM`;ʎ[95rpϒnQS[%]=vrT/פ1N7F9#Ǯ_]K~"ۏS@~cqĹL՞S ͫ;'|Bo~V?$R^"{ G3?be߯4<*JpoG7~NԿ-宯D?p5^8z#Wd_x.W]aNأ 8pAbh]~g,{@@u_SD7jg꿲d}|Dib\t?{`66:?C/Sټg}a~&vFS:?;Ֆ~/Aʿ@W>o/A읮_W0]=Ե=k4 ext*6)^˺O+T~kCߩ:%hz~/d^\p1urTֺ8 ku> I|?SW˥q3Y"V: a:alWf!$ bbMOYu=ϼBrˈʩ5sZﯽ1.sĨpA?<u/e+AZj, uP̭>ԍ0ޔxs`]/Qf2acЕq2ߟBLQ_KftwtLy ͬ\:e0#)<DȘ>:QC_ ~a:_՜OQƟAEV8RO0P~-SشgqK^Km3]v?r|Ǽuc8ǥ@qq>uSGr߸̖} dGڞ<8w>?,1to1NS9g{=k m 7Ao_6?^rXrۦxO@1K0u>&cVpϔ}s=CV9EN,TvR^>0|pofU`+hT}H-qn bE(qyޫ[Yy/jgصWOYr6j`?"ի'hMMjjk0}Qn Q+u;HS7#5U=S_y;;-giwd˟\}[;n'vzr|xsGp8,7]r`uw??֮T+#N{#츯K0[~S4oSB9-!Q_/CկmD6).I=Kud?cS@FֿmnG:e3_!ԨU[A' w.i޽f=1kXx#7_,jd@8QOvʫ$%Gl~n'1rwFq +Z>}4t1qzF pi-Jb:*a ɣzPvco!sN|orQgB{љvqN6}1}z1V0lRؑ ,q;9pypnV{juw& @Dy~gIx=y<ўJO%#TsxJAG]d,t0Ã5K=HJptÇXhPH._#ϣ\::Ԛ\Θ\l7rl7wO@/^2sC+ p3-pWӈWY3Ezmxf={]8 tKE=F~^_oV\%0Zd8ѯܣ wݙHgu73uԹ|n eF([FhJG[%H}[c'D9l{!0MTMV;ѳo%O }?WS?OڗlaU0rXnsg/)"aDp=MB[}j; .1ix;g黿 }_s tZ>JljXS1oU3LT|?S>Q=D&VWծY5(8 w0H9Ӵ7awRrgyG;d% Н=UC\`XGT (LCT"C7:˽K_YM*ۨ-Ga:^2ֈ9\}]:.g(܎˪u`D-gw!nMK.cwy7rry+v߅6xUKHUsk {S `jy<ՙPռO$?SC<՞j5s^Q (X5sY|N)12}ͭc]6v[?R0E@=~ ,Eh/_/bH=3=`ՍB==W׆U>0z{AWy}IN}<Z~_pI{xQ[aqN|`tRk,"4=A8>9AkQ\X>b`<7+2l;8'(=_@?sTzcsW?UG+ҏar_WJ:'}?WDhبuu@gka1mn/Blw]-yh';՞Ҧ7]1".A:Ir6D]m7ykZy­0z瞿EqS.t{,u A :OEOXu`EWGڿNβlZz,o0:d+" Xx+H Et&6 >=oY)';TKFp -0x=:`~,}saUFT}XA0zu*#&z?œ R)b4:=;_}߫] ?~o~z?r^i/vtmَgUYX-4prRPzOG߆ Q},tN;B`+PM},/1U+4|壙FZD}x{z<5Ȧ2jT2?쿨rJb5w۽\kLAPY^IV(bOLıZ._=`,(cMʆ.\\}kX5R#qO'y7FÀsm3/bv{zQ`_ףTH=?yn vˇ qdΝ>ժnUL 9w|AD_ ӧ;Ը K*v~v_,F>ϔ/fك?EJRzU\?yOEmRh?u˛gSiz+R=H۹О'^=_54JOyw7߈-5GxS˗pKAoBt'*_h^9m߆J&Q`T"Х>yՎJ%=3Z_tT/昫pr̪P6AZM(ÅW@ Տ\WrM[FDj62&k5lȶC_a|cP ׾p_+jn{Wް!#C\ ~wrKq)e±ݜJv}%Uy7Ԕ0sԝSq-HSрES : u)ߙtjQ>FN`Ay̿xzz?{S:3Ù#?goz4\gTzgê=s?tNB3lOH+B=~J'|g"qY=%챻S;Y/ZQ^; -cy>vDt 9?A0c{}j?1e, E PQ? <*I3?SNW6Ե7gLD/^l* >gaGNp >r;G9ѐA7DvQPQuwg6V\KXۣox #sj_ӆ1zHP.bRo$s]ZE|X:%d ^5w}ᠻhlbu[!#&W#vuOʲK}fs0i|sEQu֓,ոYY?.OD؈Ag8e.c@؟jJ~'囶Eg(0TNϲh; :xuo%2X~f.AGOlvF>P/?؀t<ufq1:q]JRUdu60$B}qf.;7$|ZDg СѩOj~#v5w+._mX7Ly^ xĢX4q<8C89#y1Pufgz6ۛ aU4.;>f[ΠMl?QF;_̾c}Ks0U]up]KOBg߸ֵ;.Ӝt6X> @v2U=>Ű[OWmԧP/MS:uk%}4~9~UMNⵛĥ.{@baKf ܬ hs`N|y *;dŸm[t~:чL݇s2 38dӸcSN8wX[D|g$ZZ&.z lFl.C XNu#+?3be85'Be#gP\C7k+ùcJc~3}O30VR|0c=!yx0Ӹu+>~IB9P,2z#/":Qc]!2YYiLg}VZ'z#j[~_P͐W@nUgTrU'Vd.X B0iΌ= C|||+o[+ʯqj1)c[cZUdqԁi.FܺIg2 &Rm7Û+:߇Kcǩ(8"7욂Vcbq=y}%ަaFJtRH7O8Kjt?3k3M]Bm?=Svg!triNֱ@ge=j`YYշZ7Ew<2)m}8Bҽx?wA(~F4^b8]5P}E`ӫqz(P}wqԹֺuz 0t"m>*#;0o[]­7IǠN\ʩ^=3|Ev %c=qU5uMnZ;NH_I/̾yf}'AzapexFS3\FM2٘tƴ]6ae)P\X3XsUWUV8+z]HTRu#=7z}@9"Ah擄\36Sթc홏D!(ɁYHGhC%_W|Pg _8=gu@+rNPJ{x7tʗK-g ӷ|A[83 v⎫uH"o~|fu-{Tkbؼ3AN#=e^`-[8x7`?ɒLe>lO,}[anͷȢiS<3^^a6 Lb3 c y 4,9|Q-8H*cX 6G2s&Qν\tRPu(N>r܂J@ ]ԪQ K[u\W&GпXo3PϼR}"/K)e"G*]W<5iWDkj?_҇/K]2: N/TKvNzެ+K^Nu^%9yПh fW8^`x 1UԌ  py::႙32ۼ&?`X>_<č"oѨ(aQķцڇQ L lHG@bt;=f_}^"63ѸƝ=^forb {O?v)mme1￴7%Aj+4'#l4}?Um#=d3~̕Z`JKa* mnzGL}Nֈ=d.>k _Dfջ֨J/eAJx̥[Ƈ˞}am+!fi/S{(zqrȠ2(En2]bTp1w_kiu<|)xḐ%E&f2-WK.vwˋVU}^qVpX¬'Nx4k.];K]ox]gs8ާ{?'ShNJsJh#Dk/FKifa.-EhS;aTt6kd׈EORϣR=ʾ)48"XAé˴W<6va^]/& U{_/åD.oy+Jg؁tSUO% ]xX鉟'o_Z |1"T s=ҀEk:-:qD1|(P=;M7dm)mp}j ]`8tbbu7Z{"8~naP6.{5fn*S9Yvu2c&qvK#/oZ4¬=:MWxtp4wa&m0.Pa Z3]1nc˧+s\?x];T.͏]%|! { Kt{z08Q$NL/+dU8lj5`ʾz<<<<2\='b;_3f}yk!uiExʡW<5_F}?Asoy>Imn^!rBX,uj)w}9dh_MR[3iY7Qڰ\4 UKӋ^Cgzup븚"­)Bhxbox W>;JfX\(ޠRʻe5gtu`<+Fլsn%B`ec߭Gp (IUVpa 8r{^CRxSC.G"w V;qV>޽OկKضLh;>Fr4wo^"*vx6@z[.ϙk'X_E5Tf7Xى '#~)71=[xd|5IEe}־GBX,uj)w}4}^ {ݺ7R%:zDju$5 er}k=GgzV:'#\Aŗ%v:c)Vh/ Ld|@r,_9JwzE52eNl{s{B?0BẄ$]@+v? 1푀"mcṕD\=|Ce\% "̮}!mw.z! :Sz%Tl:vLӫ:< щ1hy+Q=|\RKs%/2h( ugOM>xS'#~)w-:?my_uj~An\F>([М t>Gy@ivNUmZ^ -`f=;_?B߮+no<"}b.0rG2g%Z1/5GG\瘷`t+G#ܡh5k0и[ÜxcQwZ`@K1F=*qWLz0O{08w^.U{-l#&˜MY_AR89}S3zW yks xz܂\bikgbi+q F.פR/-{zx 6a UZ&!c>,l>ѝ 3 q w4~Zx%[:BwqyC<4Z251\_[kYJu SR/|Rs&S!y*7iL=kn8\tS_ ,Bݘxb_;?s_~g8AZ2&ws<[x쿿Z(??EJf. k} ^؍W_Wzx~G;5Zʠ:g^L핀 mie^ WYRc`IaaZ/'lhw[YctjV@rLÎY%@*wlJ;zJP *=Ig}Z71S}Pv^e-7O&D gXlg~8i*H3$Wt6CQIRW:1 u\vƸx(VftM1+ŖO:_Չgչ3eb;jCo5\_w;ەf҈o/xހoG /k4+>yuz݈:$ 96]!}e}2S6\|)؆!E}W,/R˹Ǽ3zsQj;Bϴ*E& ~8lZcfg}q7ѧOX=3"Þ K1_s9j=3C(Xn%צrv ޿(+,o*SX_Ytgɇ;aWYLZz}믞 Wt}C~pڮ&0叩KTK}1~f),ѐ[M* pg&ˣnR-x ㏿ԂYn!=3m5sμ^v=},:7M8 v䎓?p](T!ziU6|ftl;g12SaǠ)uESE%`a7ـh޾}& rvt}뗀(CnPU>a 6&^9̓b!RhZz]\x 96?2((>o"F&_}kDi P >9'$prN&?^!If}Mx쿹׭_X,jv0~[Q ?Zڶp S0 ۺ 7 E}:[J6˶ĬVR!HXgV^ZU) nu-'XID NVyQ"rrkNXbɼBP>b -^+ßUWUĖGgX __c}uNyx~c0j*O-s_<1s_/o[Gך`Utً)#kGF jlʿh1gpʌ:Rz#)?/Cca]3zʀR.[Ug`VĪY̨ fr7X̴8bMlds_@k*$WB۝0?R1MU<ƛeG[_ S|޿]z69s_rak[V52l{W埨cq; 7<˞E"sȹ\ϗUȩ*y:'Cox9f^0\TVn̪GQ4*_~^`|vt|(G1݄DJ#L6M:jæk,E_8Va1hO>~uKQ[~"~nBuن1NEԚ68MKijYcz旆YX6v{zOMf:uăx: , xUxtTRBhĿ^kMuZ{y2Qm9> Ch=1zL໬X&F8RjR/oݪP-XM0ožh;v>KVR)q; k1/DT25}3_c4:V{ᒹ:EC;C_ӄojA4fJXSӌauZ[ݕξIfGOpMkj_^lhDcLFU (]_vUz9f^;`p57ۡ99`w%%4^y)hW;8絨CZ4{m^.G& sm1j?TRE׼r>k,#2SF4h^[綆/oڲOzk5_>G/A\.9 J{nOwʼ9&f]LF\vs;k @kHY0>܄%9;~a0-vQr-2\!>Dd4aDb0+ fxNRw\,:*!՛:{e2ux{F,w^5k)t)fZhnm7θ߭sKܳ* Tan٬MJp~JճYlUa[-!=#T;5*fOx ){aUw>!A7‰uCJѳFLVX`/]HSԥ \?C> 5ߛ25 ]oa[7y],0|QtGy4?ا.حz]<+/Rk%RbQEp3ӧygt?쭠"첮3Ox<353V1c~#_ß~E-Ԙ~쏾 \{3Aܿr)~{\"&CkO_5ƺй}^״?c^۷l=jDhJV[܃e/6Uv0f;f2?o C=gWQy6=_PwhzA<޻#]!ft!B=KP)|xj2xs0 sRcf*U:%axoZ,C\큺)rkGy[y7 ]5   @wX?L#XU"qe-BZdՉ׶ ZU_Uv/OؗaAֺ޷Cna='f{_ mX~a/;Pvw ӿ0.՝jm`3{gDp67 v7V= 1?Vz|6kwޱR:Jtxm RAzC+*kdfp7EAmYΈ=>UʗTsZ V}Ud}s7X%"c. )TH^Ro{ƅAo<8Zgr >iow/#&NgBoz tN2->RZAM@%@OLSOITPζQ\ҽ\PZ|@"ŅqF;ZRݵΎ..]VE;vLwzuhnӹ}#Xz6t1 @@ݍt4Ӆqw%9#ܟeOS_?쿩uJF ON%Tx;"92cdd54Po6OUup^㶦ؼ6` Vdܱ:s]]_]; kNUmG~u+?w:H68LaJi˼qG (PpX@'R^P^-s 7Iw.ãc|L] n։yzlK C"(+EvN!țvWj?p :(u)^*Hi 0WVnp # 賔lc>MR8a"OUi e1S3{k4%:ӹQ NGdj|ԚB,݅r=ov}eQl߯=a2EՏ? (i%p]YOYT1ktuKۋ[r`JFX|ኃ ;~[˕y1Eӯ_BLď;ՅBPʳc`2^KNgKk^n{0 qrmUKn1gK8b3zZ=Må*@eM*`0CY"K`)Z.-'a^NTNJ@I\!G^Lf2tu)p^I's*o6}G_V\r<_-8>1y=ZL.i~bFhQ*&Wv@k¼jr'y]{&7 S.xFP~gbp|Ejeeu٘.⯠(9.@W F}}cu؝:EjçC`u{zc1|7xLB)KZF9MadRaossyoM}9rܯi` 8y12sʽkQ FzuVS̐ O' Vuq_f:ڝ RRF ^IY@D%*_ #mWAowM UzN|ߧ0FykNe0GeF,XQCo )>CG (HӏH [NiYd8_ПDu4emw*ze{g~_k,.@u Җ\DkABg4:vrYLVGjdAD:kB®j)$0ff8.p2?=|NzjZ0f;j]NIgS2ѿٗȤM`< jԭcIZy0>%:gOR;]/Ko2x|#bWʵLp2J=}߼ZqwKngbbpGV3Sj):;tѺ`j/g}HQeU ^^S}*:y[)#yaO5Σx]dZKj`h^=sk{v-x{L; A^5ѳPJs=W03E#;75+LݮQz5֢C:}}|0_p!;!=լh{~і Y/pl!&-^9/p3&JR9aB-c'B"XSiL{::Q1`K%}`(%:v'7 -N^V>!_b%.]80^+hc8C&' XOQ@3Ջg!%BYSzAKQ8f] tf:DI[1vFz2}3.!,ibGeric3Z9܁6z3_ps_TvbՕmY ޜ%G5Y0&(g-gv Zp%Z=& yGK2с10#ohD% :BbJaZ`3\χrw mKlx NBL)_|{'kX7"x%;qW LKNà]S8oiu991;?ExWxTF=k@&vp㷽:<q2s.Z' Xֵk3z^~^?Ȋmf达FT_ʁ*W-FsוU hz/EVQ(㎮Mpv)7Ut I9ߟAYpX.ފ!\Q3":"yZ^Q Q1dYXviKZS7h8 V]^'-X-P3#$ݜtQ5Ǻ{kebM̭½DYPkyKM1MXkkµ-;H4= Qs,z]Į&-vfyz;0E*XV`wU:qhRlyG=HYiP`cx~~eJ+'|,gd.fxC¯GGKGM>`؊ZBxZpq )2ms͞NuuqӿĨcTq՛=#ta8-}9gϝxV`x,Ymxb7t& kYU%Ƿ}`ދ(m逡Gx֕4+F!RC3P-z(py9*,Kj^i,+Y#{= .>"bE{bcFUEӑY ?c{DUEY!`#蔤[#c8p<0⯹(赣Y8T_AF5R~bs~cU+ojV ~PuM#w`@]3 WЋD>aP?b9#0v,;r_ad*C?NYTvɅ4zÏ-*Kjm,8s&f1"nƿ(ݗKvTF(X~|]0c,JOfzL g3#yޢNQcRid|6Z.bZ8]:X[U&?]:l{v%t4mdPl*k ]$ݹpWɲ7XW\DtqËzs9tFi}q[ 2xGȕK׳G?e +Ё#=6+{zM28`Q4C-vVۑk_ ӑVnvKG$ryK#"7+Y)٠+)k*gASX5ߐNoot\Q^ۃ=P "dK;'l~S3SxL[|'hf^\LqFdJ]L22# ;zSy_c<Dvt#;C.!bZk#(gYRopYGI&Bl͟fT]X{8àuƢJ1IJ3\c9.vgc /D~Se]K^Xc=QbnXv>0mAʺ;kYVvPAy1'aSpzmJ&Dxu l_yxٷ^^n-@W"ƎJRnuZ >D<ĩ0tEj)ֺ0i[ϾuŢ:^.x--c3L@Z}5Cv`~\T1b'=Tӫ?s^[_Qq4Ǖiѣ}~iUeG2rpdkCV]zyKk%VV"&ۊV!h_KBcҒ¬ƙI}PX G*~+}=-dM'^㇕,l uGWdKv@YAйkQ^y;$nǩ5E_̊m;2%:JtVG #Gz6*oxܔEх|և[x+k7Gy{.%ͳlZWB6VB㣿Kn܌TtzRk)*;U|nmL4= a7eZo/24crћTI ?l].z -vkˮUxVm(jn*zԩ>kwŀgf,z+d JD*+zjx\͠8ck<$rJrTi(l@Z_̶Zƺ_a뮺%Ꝋ9o,h\G8R:+X?=}uSՐv<nb~Gb8CV>l2Jz%op:{~ӯ濫N6gW3?GW*cV4[=Ψ 9(ׯPI׭c4`a._wM.(cN [DXMNMCٳ(KZu^yGo<2U5k] c;ny?113339p0ca?ˆ6KAƿJ*G")\&LN0ܷ:'֦"CC O= ]LB7># xGeNn^Bg"Bf{q n.%t^)-툮d=y8 ̷9"V#)t&6a٣k8?˚-gguw)~0Y-T g /.Uu\*_p{Fx[8C/M}ӻf31e̐ /A@aID]Kv "x^_]{J?d£K^]؁>4DtW 1vt 0O:e5L^`]?x-nfpu>NR"G:~B Dz5;N߯b.r,ٗKEEM^Mx8 γO@&?Cj{ OH$2::8ݕ~-;@M!ʕ^0w8 J~9tޑV%l@\*3Mdv +#oYtߤB`i;$w`]{τlPM=z,V%WWêem*UݾܩRxWUL/SxD%șı4ʽ lCjfB֏VY70:S:0<s} ٮ9pqe5Yz+Rgtîbg#[{FOМoC!%-6ڜňIKeTgs,v9Av-au,P4=sGȻ mm1UV?6'hvl鞟iCte@i2$4}ɂ;+ۇE6gJ *=|Q% u%^zyo\8z}NMZn_֥bBOqW3Jǃaݥ]w L.9P:X3.+z@A!P{%^ҥxT̕! g]0 .Z1sr/Uv8JDj|N++ SAez6#>T[K{s7zc.i마Ay8OB|3 oI*o5\oײ'-/>uk|缡%me-}H>YZK5EU`| _XVW~7km޿PȐ!E:n$ 4ۣ)SB4y4 SfGvSVVAYqtq\Ciw/cVsqXT[.jaedpe Lރyt ;&Y?|<ͻ%,;f̏X=bJ*T ky)R1$syw7QEt3'8Jx@=_^u)-T^Zfk1p✏( u_^s6҄q"f92-r3tL#d 7U7Ӭ څ[} UQABWݗʋ4rөǼ2kǝ^*k*l>cܔ+;po>GMᐟG:fztT&>ў{ػg vkg"yQxdw˪' MTn!EvnceǴAA1 * >b=cm@`^Ny cXQFP 'u*CqPi\ n)ӽjᜦt]jYG/Rd/]\WV6MACz+%)XFe:֡u(W>$ЄږU{5 c'L鸞<:xh(` !`'h}\\5姖Y/^m:Jþm#^|8*i}C#EXh[S^>%\^=-XE}qknیwKm#)39<ݧX]>qN0NJ;W {k*TRJjP)ַ{ +~r|ᐐt-v#HKb]Zo$>ϼ;ћcFs0aR{' ޷&oc-^ӆ*ǬIâi~P ~@5mGa9Z k*eJ*T(ٳ]!F8kX&j,{; O% ^E:_,U!ZF*&6q_mFQ3џ>Ii-OK63MP/3uc(0`N<+0uf5.^ʕ*TMUdOsVz>k u7r}%vzЍܕz rSVZb VE=,k}9#A"[!1)EVo}-@+]"-e]ܩR&Z(Se. e8ImׯҨ,pۮWsH»r)Cf_?!q_P*T_TRJ*TRJ*T_APRJJt@!J2 ?RGT"-+J'$@-xb@cdUFI3:<+U?5C EcedCXB\m@t8es)C_^gMO^ \_)| }?2~b  :U ȐCQD.u!WtSx9p.2Nx'Lz̢"XL  |.5{GٙiFݳuǶ !ߔ[`*v w)OY- H8$1'*m߼W4wSl_{sį"z!o1'LL:Y~dGJ3E!|[@RD\9 aȒ*]CF1NBܾ< K"]TwIf콣<8xe;EgplXCP@Q7)]X&fIH7(jT`!RJ2Ih8A#՘+i}Bc Lg-ZG%Pc!>3I2Ɖv>`|B-z)*WR!Ƨp}9c| D3>S ha1D3>6L`;x+VRYnQ>uQfLPÇ D {q hYw/ B%ǩ3 Vx`f0C)lxEXOoҥKx+oҥKx*Z[ĴR d \/ؖDދF}e87/E>`'|8]'ЖeK?(J[ķJ-*W^;N';xzBޒÚ)qC՝n>1||Yrr_'YX؋GT|:q_'Cx?HT5uN&!XO|{NaBaI!x98YD90E5lWǀ*ɔ U,̸ 8gܗd&ˌ2r{"V8 ԦWu='g.tG:N1M&֥\ax*tJ[xFوcp> Y*76^ ȈEv2B>m" .Ǿ0jn&0 7PJ!Ṕ\Lg4~I4ڗ7/+SPx#ojzK5ω~ÑX!=Qω/sģkT7 oXiYz B-d ]R#NȺ08fFP82[5),HG=<# S } u(%EpE56 7(ɩ~K Nw,jV"g.E i8c!|>gB/H:zDznB[ Js_~ aFTn4Ɲi~Ic0bHbd<=&f"1AsT4HS/aS3_xYN`̸70Eܷ^LV|7KQE9Tz%0 l2K9u-/=-(Za-߀vQ1qJ;M\]e%2iţ6xऴR^a)-( Vxj%JK8%|%N. /K <5 "zK wЏssg=Pq2WgQn|c"kaġt=8*\x.nZx:b1I 8G 0WM5y3Srj=N>g9st;tKw:%9SrB}1T^-px|CojO'd! E} hA)v8r# uEWDp#ҹrȷ%Jľܕ+_TQar`f"8 Nq*: C2I ^|\38!}&-W^Q|9E pp*$,9 DF [)|L3pNH[9Y(sSI~bz@0b=&:%etb*+^òb=LHvòAx:OjG8yї'9B3s@툽 oQU nd=pqTODJOWODj_[#~&=%`z8*.sv'rܛlDt; {fa(1PZqe:']^ Z#ЊQ AWO({D.Ъ0" Q)-JbQ0޼CBL'K#WK@"ʜK &f^e:CDe1(fE9:zJs0i2_x)]1`u@ŊE!vCcN!q sV"ȉ~1%`RZ5JD<9`5**ȷĴǙII-/))//VVbĵρW"ъJ±$"V̢>IGhn0XT!;)bBA "Ăx .Qz"A2H! D1z m87e%A uDq |- 7,<@n~"kQnX2x)i}`J%oxz,HF6t "=c)$DbOR: =FuF*tCDA!.pH11S+¦Q"0EO KK]A ._n0-x/f.Wjtk. L@=qz-%%b:BiC*t!1z%D%E7'&%`61Q-!njEIl[s0,x'='bz+ x$t:Y%/JDZ-)*(K;<0H_ AQ:+,)epz! @A C‘[k qIA/*`^"5%eah^^W|d7Y &HHE0eIiy\QOxU`_"bJSl JEQZ^L|P0Ax"2"b +I~eV`JsSfSEo}uHX3+%ʸ|Kx Hp`>|*&Qq "u ߂>+%#&.ZV"0f)V ǂ^` M36(F--2K+BiF**!EܛT"wBbODOD/3=S7q=31z>'F)} S>pXBBj_vXgGp#1LZ^_ x,fEE DDʔOuQ'$XE~1g(K|nntbHАb@H߀e}E~Zοԫe֏[bZG,0T"F"ee&>5CL%%xxxˌO9(J>2hщ_@ԃ@1rDA `3c2KEi8e$/////.VVVVV%x/// ++++Wh#ZQ_izo=fTi1<943/_ 1i#b F,frJg!.%>"W2[\FWo=QkYuJg3g1rU|W2Bo3e<&[ -\r\}+ƩR\!YgC ^H_W7hXG8x \W=%J\1xr-b2c¯ 5LJ§ "}}_0}K&q.2wUa ([n'`HueR!F\U2B&FV\>.*J^)*{b^6b[?R\)_o:]a-|.M\x gDqr=3*fxZ3+24%H q, T)- ATːρ*SR_]2v!};wٝٝٝ~>~ xY f;9PK]SR%=C#┚.X@*+1f4o }s3a5]#nR'Fvb' 8NUWܡZZZZZZZ)JJJJJJJx--&oReuY/{<9 ffٹ`E_xTK_F%}5R}T^}e̼Rp„!GD.?+_3t)mP){&kղ J] |&ǃO# ^KӴs2(Ǥ;񰖫1Oq*TŹ4}e%S=XX_ f|JfDVU(@DF$75|Aʦ!X'IY˔# f4xQd+*\PRph8+?;ij)i1"w‰Fr89l@y vee++P ]88xPƊϧԲe~"BcƶQ,KqTB/idb_Y, ĸU/>ė23<.RPWB> Cƌ:!DK;?ŸO} M(E啯5~Z u@"boˠq NO\"e˘b%7,O j<>!"ׁ8o<+0q_N \c<.ѩd\_^σU*f %#UJQ+͛*TH_D-SR:3 o}QD).Y΂%}Unws*+'Oxӿrwz!YO@: %O&72%~_n:l rA*"🣪1KxuA[0gr#Xr,J<Ŗ;x ?f}"[H(Y*l,a TYKU\|5bYPS-̳X_t&Uxk۞I1s,n!GDT| 5Zj@*i|3JpK%O <-"Bڹa~4;`._z5eQN1|h&N`N)CdJ]cu(*taLPnpKH/LQ|LB =:[A5:*)ܱ|3pxVu_IW|+9 7'ܜ̷Yxd1K&8S&`<aF)a"*(Z"_ ~$5f%5zu8۔;%|2!Hl=ϩ bpK2 -R^EB$;JXEاA]Y +?jzﷂ+Y_:}eu0 \:0߁b;|BV#ĸI)YZ\1m(K|.^0^ CnnxI_M1x_H%)E"0CUL!)6O|yɋ̟Yh,%\Rm&#x&c2Dž1Y: xP =R_@w"|/gR%E%U0/()rNg/?#NJ(q.9j(vsa^<^ <i3R1C)kDA,QͿi_Fr@BfJJG K[n1J^U^4Rpj?{ĩΙ撬4XԶ\cgo*שĹed։ JHDvgf=" 89E:U=< se ]^QL׉^ /Y8JeP2,KDK]E~bdZ>1_ext'(K(Dׅ!|qJ?=56[S,2@`xKZ[,K61-D:OݥV':†V|̒jW]l/v_Tnoe%6Bɜ%#@ɥ,GRc[IQe%ˮ% f;?U͞# wUgK5/`/Sye4Kًoyk'yK'y/K'y/K#kW<%_W<%_sWqL9&[E=Dx3U-@Ȧ1dρXʼns0bFXky/K'y/K'6>PgyJgy+JgyjfTo|2XurM9\fJJ}X?TM7=B'.W8rK>GOs,Q hݖ>B>=K(N` xNe[q2xO5 eddO 8du0+K*]>&mc sQݿ=qWXz)O 2n[S<#L'SJ}<,e*@CbW^Q"xrh';J=e Rop4W\m>UvPGpԦ*LYmK[)z_(ſ 7T3#Z0Q.?!sr˗/r_;/w/o+F˗ǩ)fUFI chSfbÓ-7 #{zV_{}9,W=}KECS)$ ǺQ;:>?hV), 3ऍSzy ;\Ԏ'?6qY/D_O%K O?(a=['"=1 g''2Y_b0%Axyfᇉ3b9Y-WN71)q>p뇄 ҥy }ʭbUm>״]hNԎh8x};c!/#1|12k7X ǼAm9._Bu+Yfc  _yi7*q>Xy16 b1*ٗ8~A,?ChiBrrG[s(y#G?f.vEy:5Qς Ӈ_ԿA',(==|$rk"+r+&i̐BLwk fTGS6@) B0~˗)/Ir.RR_.\˗HA xcR6J˔._ ~18#'_%,eT830~qb ~Plrr%˔/ĹrK\r;'cY}!KF3=)8O3/ 1Q}x#x95R{dx}jCSq7 dC>~bx3 $3 C_U/ܘK@q <x0<+xW>x%*CNjF,Shܧ`ܯ'>580;K:NC7sSHbUJ0>^OOM<#LM͘7Y iJ0NTUFA2B>,a+9co! c¾!Ṕ\CQ,ɹC9C+ԧ0`x0Kx'P9i~oÑX hT~J9G2P #DĶB-@ХJ!s*rű'L&Sfde Q/)!)`z8sg74.<1/%cTmpe>fRlԬ  eȤ2G [{KFe"=`@X ԧ1 [ 6VZq4K.cŊn\PEDʧIWUf WĿ OY&f nYTw]eUgwTϬ|ʮ'SqqU0fW^4nYH&j+ex F(0DH[}HgLDWhR/SDzaiF)73~J1P-vIsouʯ#AURZa> 5%G ŒK2tF&^O\BXHF| ˟9ꃌ1s([U^ E~k²4s5-%KIDsr%:upcu#3X ss^LT\⧚G12btKw):frZb/_F)W o6&>Sl #Ա3cK^d:+\ze+]*+w'rWD}^$+11JsNȊwˎQiK.f>b` ~׃WÜ TIY, ubCcYin u-7eIf)*g0=|ØB#xיD/gG=ber %+(=^8JppF2z84 <|9`FDºGG'Ih@QrEB%za1.p,{3];x. t-! Rws d.6BD^8.`QqoCמ=S=3=^ =i[#~&=!}1b"%&'Kx0;ADǶ"C҆=0b(q2qe:']^ Z#ЋQ z" &Qe "%2R@b gd<>12j_'$ĢY/b dRy))8% e)) 2s >ъJ±$"Vn$!zAr`B7ρ wBB A<  ^@e9*tXkAp:h\|Zʢn.lCH u ߂>/%#&.^V"0f*V ǂRXrB1h`}4K p£.$ %*[" nrM@.գ *JJ% ))`-. elX $|άHЍBei͙Y ~>Yw/qz@xRF.2Ye>#pܹqoSiY*Nb"!!|RDb/-byyx)VV ĴKS)41n"/A`i-)8piL_JJᏎihKT9.e6JD4p"@ IQFq|Q'F_\g!b˗Uԭ*n$"a6׀| u/i}#7 5є7)DAI-ad1RK>} ) $)ODWDWꞩq=3=1""A'е:QZWHAuZ$}9@QafZ >pCgl<!CafE<.ģ?BK!ı.TC=:o/ғ=O>gz5`=3=0삽gzz==Hۙ_q/}fh\\B Z ħY" A<ŨG@[~`~pAdzz^f}bODODmiz#DOZIA>db!_L˩ X!<%s(EE5. pxMR^^^^^ \K(^_x(\Tk#Q_jt>`B0+ƙVdkR0 xMƜ1n2 @!7cLr˕z}#?Ʋ%}JK~gFWoTm} 9x%hNFPS)[(oEJe2YOD+]O$ @Ir72?@gC o~cw fmQ/v*ZL). DeRu.c kU>,_R3.!x4(1rW<_BQT$V, .QdcR@{ ʅҟO_԰U೉ț&6Kw$ɘFheWo/ wvwgvwgvyB!3ٝٝٝف_^J '# ۝Wkw?ɚI11VW ge25XD:Kgf AL>i%G j> Ri{:rhxz_xxMx&Z"LcܹrD#沕2lOT~ĉRz @}eSzm¥̷&^7.W3cŸ1PV'\/^+xR[G0-e?nW kDfoGl ۣGѡ7T#Qx6K r',K_-Lw rO}mv>nw Ds%%%%>1OZA* o,ygWĆjƹÃn]?HH._"juw@ ũS s|G,;-(-cƉT %R8l< <;)J|M6ˀ=̨a4ʼ=T_E4^ΥK=&TSnOr٩[r|US2=  Tʿx{(ã}2GiB %2 ~Ȏ,=wu( ?͟E<=a/f R[$D\YyM9nف{hC 5 \$Xs9$7o4pm7cl/sz0eCZU9鼼ʼ_A['TIRJff;7s8&c%t`Fe xd;}5;>Q?8V[bqolq?%9 >/5JOv4.Tܳ—!i24&/ C,D.ڙ{}&x >t4׃G4-lJ$xum)G͝'hk?6*qY~pPQog۟[߉Jύ_!%qn 4!cz|9 0b<ՇӦ{WIF8<AG(B*^}3[ZTW"K7*j\HMms3聁GK=4|ΓLh;M\q S)/dV(i_BF? }&e Qxq}?dz._:!7Wx`|6e+f+&S0{,*\:c9<5R𮓗?Hr.+7}(l:o-yyx@r8Q|K6R4)h>5,ܱ+g0rBeTy5'+깍@m}W3f,oLZ|7M_U8Xo<?;K/F2YW{(^2VWh=[z_7o꣝q#u I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I$I"^I$I$I$I$I$I$I$I$I$I$I$I$I$&# Dt)$I$I$I$I$I$I$I$I$I$I$I$I$5:w^ĂȒI$I$I$I$I$I$I$I$I$I$I$IN@I$I$I$I$I$I$I$I$I$I$I$D&,(w 7ڿ$I$I$I$I$I$I$I$I$I$I$.:_ViJ`̱$I$I$I$I$I$I$I$I$I$I$u><"5\I$I$I$I$I$I$I$I$I$I$E,eePTI$I$I$I$I$I$I$I$I$I"-Ex;ZI$I$I$I$I$I$I$I$I$I K3Tڇ$I$I$I$I$I$I$I$I$D`H4WmyF)>y9$I$I$I$I$I$I$I$I$oS%9u~J13nRt$I$I$I$I$I$I$I$I$C11U靥idI$I$I$I$I$I$I$I$YX^tr&C7}&_EtI$I$I$I$I$I$I$I$M+h鈙-I$I$I$I$I$I$I$I$I~$N^BI$I$I$I$I$I$I$I&qs5OO CWWOLBCI$I$I$I$I$I$I$I%fZI&q(cǢI3#pp2H$I I$I$Mۭ6nڝgavʎ Om[Qa֛ORm^fZ'س"DkVOum.#GGИK@54<>'~;̐;''Ğ I^ˠwЌؖ5.*e FlMtlN _*D:H [J%9#QHξhY:_eAɕڬ<M؂T\,F' GnuwDZl+l.}:,gkMBN1bGs;9wt:1)d /}vm8q6a *!JωBLiŊÜqߢ%zkcJS %os?ZBɍ!RǶ `[{VƭV29 &NavmIEd 1y~/m}vLb͈U)`@usG@k'+fcw}Wr#~{Z{gr}68a𹡿~}NjSVdwM<ׯtE{aIhpvbXPIJR@Yv1M9AZ6` 3w%Ŭiv%)Q)g+QtENі$@z؀8+L$$*#4b?iˌ(1LRc؜7ULܑa3j1Ut7Dr~Zzct yJXֻ:ÐӤ$e[Go)tgK>鏜$#M E6QbtpKʹ,cD#އu~0 SBCg.c - dT2IQwEy7\2 ӣCiUR;m O|*N6ϡO!@:Y Z6q !J{[D8͠N5NPǰJf#0lMpB"|/Hf<۴Pn@2.[:?41nH(o4rq'h&lZ60IWl^=aZB]Z# rH~+ʗFm$p[2L ;l`8eʦ"1Vl1mĒDev'm(~4O}e#ܨmKOֵۧRm8IeUH[m܇(:r%ލcY _)K6)mbIYWk~"Y2ߣBஎƶ{d B/@ jߩO 𣐡6w D?v&%* A3zΚWqeeYb#Hb,&sVyf?(XN{n,IϼJ' -ik @&wHh9+#8I'$R$Ko~2n`l+8YO<,748'y_WI۵"]^%T:ZCzbEΊ!mMt$Ig m~[h-^ǘ炿K$M=D~M w~łM!bs2PWʝ%Fg_ʏ@ǎ?{om95иj_'eKTKC҆fT?GG ռob6ӱams' iehIڵݿUϸaQ"(qr6)2s M~lDKN3mny 0x#O4+hWcImIrH I{7FgUb\%WOnᆂ[.Q!38ue 2Nt K{c,Kκm0o'ĮȀßooIRJO^Pвru)eUY&m+YgR I>D $DҀՃc3 ?0e^:)~p"4Ĩ-ڻLxx,0 :W6~%xAJ 0,>iIgI{:Яc7ARJJ<(^>x+_ 0/ΑLȈS2zAT" ʕ(Vh]hj"5 )ZUaSaVs[Њ`c/KE0NX %@WM1dRa)_ЏB+e~Ssa%WA  *!A^!N-B -N{ӬqgPS%:v j:+|kHY‡B"d` 3\ 2&oOnWBԂRLYpA3%hFi*ŻZĻCUV5V0SGth`ELbfVr !BvW8 EqxEFj|Uln 4[ND͆2;X#6qQda$SaDF&V %J`bA3'\W&" ҧ,zi7C3YB+#vΩ;Dd8JolR.&huEf0.[R_॔TZhVF VWW,eTҍ* ;}`Lg 0nYX\.5/01IdXP&vPBuP΃^%Rq#.gja WH\ he0cXE@Q,`Ww5 ЃnpIy8U& a%w [XUn?a Y@32y~ %@E*"8Y}1iŊ5S`!\D_Y?Jn`V^`@"ā1hdT=x4zhy*(XL`oL+j/KdRPYUi^t#hBaVx +[;J#j -Xl\%婝e0eFVw 85ᙃ60+6S#K*@|RVa cG*uw(8F(%D]ظv_-318l+dۊ S91u>@J:ZETZmiAv-m~eKNU`=^_ %K _4kIDmDTP>%1bΈ8\ SKMB noxOe5C =MN !U]_0ʘ# ET֥+]Q9Q]=6m"SX\|3+BʻFa v+UHHb6!edt(u[^,bx"!%fꥸw%ZUZ LG  x{2XCi`-n X\T!}`/Cw)Gd[Aheعo@hܰ!F #jBqܾMMIl،+RD#49Px ( Y 7^?4B˱ەq}b7Y4.\L.ϴ 6UWcbE,rڊp]9/tVl4 E, {hmV(J;hr<9z+>м`" K9ݦt /Z{JMwGT"ʢ2˞0|T 2*ʸ.@lOikP_axo+c@T[;.adUEAEP(hS=XQ7u iB:"#G ):˩ (٧:KW:yTyu#)BVn ڂYЊh`͛O{[)F+L@%k 6ŷoT6qȕKq2@(SunуIo`U#T 7]-ݥޚX}XqBhKT'8 .62edh2^"i S2]:j+3ؘƏ@Iqh%)<aH)6veΉ_ @AvkP؃4 eh^0MVǡX*d{v2}I0./k vJeAe`gp4IkL->cZV{ ^:]UtlJa#^qKB -7(NáL& FvZWY|-\RA+l*T-[WcR.C88+#GlL7܊qtj)Pd4yj85.Խ@͔4ͯ=!s@ۼcr b7%#`XU(8`sx^njWu41%\ .+4q]^K٩Ar֏QL-(xt*uVPjX:f ҿa]& `(yG+MYFV.ٴ醷nB9,8rk]70"4j&( emaaZmcMh܊\ۉ÷#bJh#9VVCcW(R&:]ӐZۦJ0S`(Z- s*:_j(1=0k]313`&j"WE]>l샳"ԛpA]s&&9Qv'fnA2S(/U7Olahc XfJ3N;h5hwciBY T'QDRM*e3(iQM:5ɣQR[wʺCiB@g;mc3JQgC@V&Zyś؄bwv-`obOKNKshE;Ryp -JVفeQDzFGUTe? ZZAցf YoU6:=(UBmJR{TA:R ы/L2h7]uXB3a@*qε6@vnuAқ}n d9YX.c+5MA%ҭ3<&+X@^PDt~"ˁ,WeQABPDU6-aע7+uX$#:441Pmjm0;7zY2(3=GeQL,9Z$VYֻ,VgNN3^k'Ve,+AZnСyɋmz4?۝zx@՛pWxZJw(:DY]8 0dD d>"##ׄ7\;m|.̨R6*Ebb,MvNNm'˿9׳TEoVfEE`TcU rZɫ]L/+}&:s}7^=l9N^蚎faMflc[zQ~ɒ/.(p$F:(Xl+sL*^1;9 6T\_nT b StjBjN/bQj"ȡ@NsG3.’)1zPQAFHȃkPMpt~΀D.:"0gd}Szr6›]niGw=9_=ʊ4*=E[w9Vsܜk_ar W{a7¹ S܉'!sN ]bmgd껀Eޫ9N5 ޫW=E[g=|\)Dⓐk~k9Ҧ_yw쮳qOrQV]N{"oU`'Ws܂oU+,BS'5i}eV/]GmLłr6oUDeLעXv.]*@9Lh[EVۺ֕PaC[D>UUYuҳΐ["GJH,ɱrJ"ȕ/%굉PJR w>VaCX9;8ĢS,@XȮU8ag͛:*9?c>(❂,AJҲXɗYBF8렐g~M+p i˼-0 \W"/R(*e*Cc(oD^&XuH ()Mawax4+ސ [ep! u2s/!5~+_(B*PA|3+8t} MKgyZiua@eL!-FP ZRT*7lK2Ёں#@\6ַo1ƅYѪ8]+Z68mYw;N9<]AP84poevBN[jrC<:R[9 :"U8a:4mDdReK-8;tt҉@cؘSe3dfd9t)뎤"beÄSlBK;E0͋s=AeŘL4!ZxFZ^Z3gLs ]H"-m.uJ%,lSw̠ 5Z`a5T: 6Z!!zw(.r-hаP]dmX,64mW}Cb8iW9#њ~PiuqDXOc|B6h*t +T n1k@T2B9wΥ_ԦY sIM+Aw-mFTB(`js9K4r[9Rk%(ppR;X9}*~|~ M)l:l?VKJN5uEExG<27hX%-{vQg! Sk%(6нߤ.wT~\w/y1k(Š6%Wnb3WAx Øc-T-uc9y/K J0Q@R痧iM igM}Q2V]*4YZK؜ajV[71 ysQa%Bi{r7;3JZRΩ\#CtDpN#b1WPq3юd5T}<5m`Kz2/4d #* t.&& NWP"u ]v„|g,Ԩh*^/$C s:&mf @k,j؄6vA-SbVxB4ycrt=Ʉ A&kЋmq(r`8.(h{VEh5z-4EKaQjP6/*:Y1 g ]lY `ԧz&YҲw=idUYw!(tu_0& B)Ա+m2IL٭љepq$p5xTf6fYk7S$SumGu&]E1sW!UMPut 4|)P;b@.Ϳe㇈5F\f\s× y>pxԲPV4+ª\\/BE0klSYnC81B*-;G6o\e„9OFZ@sbQ0 4h!XkdoJEJv35zx#*7V{DdvRkv -1UPAzݒk(oV^%9ӫV LЉ޴}_Wl7ᷴ~}:"dW(Eщջ8فPQ¯\S ֝:m8+ 8Ķ-zm%V,= -A-P*uVĢE)Q2ʮRQM^򭩛1҇%IeliW=j v. OZʻݚERӭDtܝ!RZW8'Q+0'L@K6gsPUk%[Drnq-X1Xnr\FJ:+@#F洝#(D 9uK6k ?WId[ERAV>UOݖ1`.G[-Bbպ0SOn>)jjg29a/,E_4]aJS3e_+#tڝu]@;<aam),ܙi[p8a+tёؘJ3v+W>)p\Sj I+0-q@%e8`5e"ucU>)=JmvƻyhM_g/9Z<t.͈r*L`Zۅ5؍:kkD"-|(̊pUX4![7MO6LUAkV 9ezJeӜ=%/(&Ѣۢ-FͿE.f̧h#M ֎[l* `ۡ>=!<ќT`Ԣ":f{{TEs[Բx^nf%awZs_{XPl {¡0P,q5 hndB#fᒡjsdL$ԳX 2 N.TWStCje>!!g|Kl)4-0_7"3mʾ:M{rMvp{Gx;F.ү1 %w^IFĴPT6\jƩXJ[毾*ZҨT /ӝbfA2ԠЫY0zN^\{sV&imWTYX®--F4r_:yyɋfTRvئkuB~%aBߘBь;x+Y2ur `c4SnQt%ʋ[Rqo2,8-3UIذK \}p\Ƅºɮ#V҂%@!ya۴BtcJ4cJu .)1(%;T]V^\4@W88^71Ȅ_T4 $2Sszd܌ leAhxq `6)/vTH.z+|B[W*(z艬xkX~sf8Mxs&әl9 P)8EOlZN +a" S8v0E[{Fw@⟺\^mRc @)xqrν6\[b 4\զI +S"ڽ\kY7VZaE:۾oӷWv*GE_.ӧh8@D0Հ-R\J5E4N]jƺ9l6 ft\0?x@k!{:B@-&/[!Z`Pro Wo藣 _. | \לzTwz/-_p)JhbSmQJ% G .խE.8z-1-0֛-8ː,`=40(gG5nX=7C@YV.D {1EUk;ʬ8kYX9=% lihc8F!(R/s+95[Hwv1.gPoG3ngu4Z䶃yH(( W|J1K=^A\[\œ.Exa]9JSh]n'pm=#&bEPHT!_4XnSԆ o}zo-G_neq6ᷢҒNDS|x86"(0L(.5~HNSaeBהfESJ9PNXL3@0\.F/u݅ݖOK ^` F4A@r9z:(*09C@7vqcׇ$ehjj@Dia1Mu%CA]a)BA/-ޚx@j[ʼnBUvIVہZ7(L@19uR0*БaB>9{_X2%Uةe:F%O` ZuvwEZ{b[d\$SKB,Fp\5o"7| hVR֭?iV-E)0SrϚAVJU@-{!y f4>3 Z.U9HZm.LaqoX&T<UG}DYPQ}F.p Qor޺lVR:[)eUBv/d6C?bJ)D )AcZ"J(kbPEYa Htt4"i[?+)s\kx_hoSP/1~!j& Q`,<0IX`[qt,nҚi}\;躠[W:u"V+.5۴z"4P{Vψޡ:fQcmS5"]=]#ו*tw6eEiwe(PcDmUDǖcFQ)~uL1n#!.jyz%.Qxz+PjF|a1BU&Fi#:%+ 8! #P]m3_Z=1AU UfQ/|{t+l9(/ls&xRLiYt- :(;RJUbZB&\uԌjWx7*vtŋ&8@kQGjL'#7 䖍cnاdJHYcNia^>Y驄m(}  + ZՅ\1+1+b5Ѽ]K~i @Q\fA/78"ԩ40s{{q0w\sn7"/PގJBJ!ƪ_zeI"UqZk^aбd0 |rl;}&HUiҖU\JiF"Xo< t| CJiEb!Ev7JbX[~8rrvIOqĪZPuIm1ϤYӲ0lxt& =.VJ)\qn0bGd]VJT v/RPnz~ vyZPO H=w؛TV@RX޵,-#n׌)aK蹌7\BRKd\2T[.fWA0*X!m]I*D`TE{z3l8Jz{Q暬h9vX "P :i)L FZOL5ܗm:,B辔L t6X0 iw'[^Xnq '-SX!q@ѭlDŽb;|p~( X#!=슱|Bݫ$=2U =R,JW6ks:+Yh7瀌c4)38lnƦn1k.ŰB+Rryku;Pp-wv6S$ (t~"+T]q[6wPMfJ(+x_oȘlvmFs7t`z- G8m2tQ]@]v(Tyњv07m2q. 6xɶ8`hxmUipYȁpd):Yl' T9O-@ÜlWLQ})AA*zW%4AL=H=U1+ht+"!E2 ?,5ģ}A֨0L v]ڡNeF_.v%s-,ZgQwhFY@8,t_-XJp2|0Xn-E݁Cu-1c9`*&@ܡo3;w CB$ݴ5eVUMnIw&bsu,$F{9ր:5_-UT,14.*(j8S--p~&K*{Bf6c}Q/XTD8t+I?uƏ][jE"|"CXAh[eZ!m7G,/ @(=8je> G+I)Tޮff9`{+50ktsH&vRپGKkh8%W}gΥjۋMdAEhY& T2!hˠ !C2ֺ f)\m L5lrJzĔίF]7Z/9 y-qQ( =J8pƻf5]0=TmQ`{ QT3I /UV>Þh?!^j[/Ѣ7m{h;SLMfGJ7skp.Br-]WИ "40#AL~A]:POVJ/% H`zC"Hw.!OTE āދt,- K*0ѫDYh:|,怅f|\.|@Bd5Cȶ}spRE[Ku(A@_U*JNꩄq+A6ϲ}_*509ƀ*V"&:m#j@iP ;.DdW= :?ɠP䫂#k`ڗM<9NGQ}ǴHm@MkqKizؕ5|E0:Qk[.^Mz.3\Vl/(?2lf9Ir{J;Jhɍ@KY(R.PLa&&G騵߱l@vP8s;V1\ }#h-[JC3V kW MlC]DBS  ) C HV8VV̖n3SD ɷ@4ִRjhXxPG|/[3e^vo!fwhL:^GyEjcN,ҋ~YuV [ᝫzjZFrvmPcDcT Yx]9/^6> }u5(AJ+NQ4LY>|Y?q4yxucCKr:+L-1d|SQ0Ady$P0 w%(1Bɔ(UY`LttMuK:)qŅ?@yFe= Bn7x9D6K)ՑHƨ^/Dk  8P开W KܣWU] #l{L=GLiR9+k*L غx*\vLmqau y:>ۍg2E]!+aW;NzR wK5@){ ʵݯ&Yʭ{MUAgШy 7d515şcbSN^"AvX1NU_ 2<{Lm|Va#R`-8"`yA 2rXMt| *Vݪ TB\!VǛDT䦮W(磵frj%(%#0ed)hiW]lk}HeǬ&r$>7&{}3;2`.ޑl!HA}P ф/ _AHтm /΢ f{Y\TUD5\qtN=U= >S&;/7 K_fԩfZ|8BؕD\Qv {:0hLDϤ ax[dL$ή4Ǻ8z^'O7lG+Uv?1 gm6p~>QT=GZ U 5pZbr0ZsvCn6=RTRYYÇp 6[̲ҳ]F '65YO2y$>ћDu@@ 8Dv1Nq./K M۬vЏ%R6nl 0!B4 Z صY8qC0_1KخútCU1,r-JN`0gTk:*Q|{|GpVLT~=P@XS+kxAΔ1affQ9h[E7]h105 /{n*hRG EUrzˈL;": ,ztuTA+u[Y\bgʲtY?DӖ/jWG {IGK!Au'%iZ_1NSA,DIm.Uv^hG+UJ\qc~» r\~@Ьw<)ڦ XO_t ѕggggfF2ՎJggRuseZEz оV`PLm_ҚaE `VM"JmU$F=iuķHNAQkFU>.d_&M)[$'Afr/YUwWkEbd`7 ^B ;@Jev4hFKOS;.؄S%J@&g)TE+d[JӐ}.cCRaҒT=Ĺ._C ̪7w5 ?&:/ҘmPINp &b.=â5V3(S eaWB99|磊a j-￷Q6+d:k5nՆw!ՂnHhW<pNk!l(Z]H*ghjHWf^Yμ (8P5t=Df2RȬ _mq#]dk%@W ']spv `oY1P^*ġ}2DڷJd[d5>6r(5j KŒ&tWa>a7"q1xhOrm{H%duUZ[g5CQJ<0^mfV/V xťJئ90JƋFv˼01j&Zӻ:tQ:{ʮU?S/\۪Q?濸X:~ j 5?@h@fո-3aB>(%mh aKdUrUVZV*أq`B c|Bo"Op6/aP0 UAbE? ?†JiW>?wD[AeV7(^[ᄞR34uSG%L'9w{ ܈ E9_>O{VRj_tB9U9n{XP8^">gޟM6*8M9:𥦚-.EDV9+ ,iEnf(dg0Z Qcҳ)p/`uUxiv߬Z},Zc.5U~jfșqPqII>b֬B ݄#^v e;{]%WE"J"/"+Y0!ZU+3f2@W }10 G7?̽?uSE#gh{W5R"b^? ᇘWA+܂0P+.S]k9)t"8`d؄_ba\wGRPao\:l_*9JˤDR t :8__j]f l;GvO*&22TBG%˰0d5VB75a{JGuʔ|¼t(:/`K(4(*pf*'JLRRƗѲ|ׂh6+x̱"gJ2+|o&B5|499 /ԝ