From 9f4640dd97402bccc3dce1c8fa1e4f272bd7294a Mon Sep 17 00:00:00 2001 From: Jordi Santonja Blanes Date: Mon, 13 Oct 2025 08:29:52 +0200 Subject: [PATCH] Changes to follow the code conventions. Improved some things. --- examples/shapes/shapes_particles.c | 155 +++++++++++++++------------ examples/shapes/shapes_particles.png | Bin 8052 -> 32265 bytes 2 files changed, 84 insertions(+), 71 deletions(-) diff --git a/examples/shapes/shapes_particles.c b/examples/shapes/shapes_particles.c index 54033730b..5e3d74fc8 100644 --- a/examples/shapes/shapes_particles.c +++ b/examples/shapes/shapes_particles.c @@ -20,7 +20,7 @@ #include // Required for: calloc(), free() #include // Required for: cosf(), sinf() -#define MAX_PARTICLES 300 // Max number particles +#define MAX_PARTICLES 3000 // Max number particles //---------------------------------------------------------------------------------- // Types and Structures Definition @@ -46,16 +46,17 @@ typedef struct Particle { typedef struct CircularBuffer { int head; // Index for the next write int tail; // Index for the next read - Particle* buffer; // Particle buffer array + Particle *buffer; // Particle buffer array } CircularBuffer; //---------------------------------------------------------------------------------- // Module Functions Declaration //---------------------------------------------------------------------------------- -static Particle* AddToCircularBuffer(CircularBuffer* circularBuffer); -static void UpdateParticles(CircularBuffer* circularBuffer, int screenWidth, int screenHeight); -static void UpdateCircularBuffer(CircularBuffer* circularBuffer); -static void DrawParticles(CircularBuffer* circularBuffer); +static void EmitParticle(CircularBuffer *circularBuffer, Vector2 emitterPosition, ParticleType type); +static Particle *AddToCircularBuffer(CircularBuffer *circularBuffer); +static void UpdateParticles(CircularBuffer *circularBuffer, int screenWidth, int screenHeight); +static void UpdateCircularBuffer(CircularBuffer *circularBuffer); +static void DrawParticles(CircularBuffer *circularBuffer); //------------------------------------------------------------------------------------ // Program main entry point @@ -70,13 +71,13 @@ int main(void) InitWindow(screenWidth, screenHeight, "raylib [shapes] example - particles"); // Definition of particles - Particle* particles = (Particle*)RL_CALLOC(MAX_PARTICLES, sizeof(Particle)); // Particle array + Particle *particles = (Particle*)RL_CALLOC(MAX_PARTICLES, sizeof(Particle)); // Particle array CircularBuffer circularBuffer = { 0, 0, particles }; // Particle emitter parameters - int emissionRate = 2; + int emissionRate = -2; // Negative: on average every -X frames. Positive: particles per frame ParticleType currentType = WATER; - Vector2 emitterPosition = { screenWidth / 2.0f, screenHeight / 2.0f }; + Vector2 emitterPosition = { screenWidth/2.0f, screenHeight/2.0f }; SetTargetFPS(60); // Set our game to run at 60 frames-per-second //-------------------------------------------------------------------------------------- @@ -87,42 +88,16 @@ int main(void) // Update //---------------------------------------------------------------------------------- // Emit new particles: when emissionRate is 1, emit every frame - if ((rand() % emissionRate) == 0) + if (emissionRate < 0) { - Particle* newParticle = AddToCircularBuffer(&circularBuffer); - // If buffer is full, newParticle is NULL - if (newParticle != NULL) - { - // Fill particle properties - newParticle->position = emitterPosition; - newParticle->alive = true; - newParticle->lifeTime = 0.0f; - newParticle->type = currentType; - float speed = (float)(rand() % 10) / 5.0f; - switch (currentType) - { - case WATER: - newParticle->radius = 5.0f; - newParticle->color = BLUE; - break; - case SMOKE: - newParticle->radius = 7.0f; - newParticle->color = GRAY; - break; - case FIRE: - newParticle->radius = 10.0f; - newParticle->color = YELLOW; - speed /= 10.0f; - break; - default: - newParticle->radius = 5.0f; - newParticle->color = WHITE; - break; - } - float direction = (float)(rand() % 360); - newParticle->velocity = (Vector2){ speed * cosf(direction * DEG2RAD), speed * sinf(direction * DEG2RAD) }; - } + if (rand()%(-emissionRate) == 0) + EmitParticle(&circularBuffer, emitterPosition, currentType); } + else + { + for (int i = 0; i <= emissionRate; ++i) + EmitParticle(&circularBuffer, emitterPosition, currentType); + } // Update the parameters of each particle UpdateParticles(&circularBuffer, screenWidth, screenHeight); @@ -130,18 +105,19 @@ int main(void) UpdateCircularBuffer(&circularBuffer); // Change Particle Emission Rate (UP/DOWN arrows) - if (IsKeyPressed(KEY_UP) && (emissionRate > 1)) - --emissionRate; - if (IsKeyPressed(KEY_DOWN)) + if (IsKeyPressed(KEY_UP)) ++emissionRate; + if (IsKeyPressed(KEY_DOWN)) + --emissionRate; // Change Particle Type (LEFT/RIGHT arrows) if (IsKeyPressed(KEY_RIGHT)) - (currentType == FIRE) ? currentType = WATER : ++currentType; + (currentType == FIRE) ? (currentType = WATER) : ++currentType; if (IsKeyPressed(KEY_LEFT)) - (currentType == WATER) ? currentType = FIRE : --currentType; + (currentType == WATER) ? (currentType = FIRE) : --currentType; - //---------------------------------------------------------------------------------- + if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + emitterPosition = GetMousePosition(); // Draw //---------------------------------------------------------------------------------- @@ -160,7 +136,10 @@ int main(void) DrawText("UP/DOWN: Change Particle Emission Rate", 15, 35, 10, BLACK); DrawText("LEFT/RIGHT: Change Particle Type (Water, Smoke, Fire)", 15, 55, 10, BLACK); - DrawText(TextFormat("Emission Rate: %d | Type: %s", emissionRate, particleTypesChar[currentType]), 15, 95, 10, DARKGRAY); + if (emissionRate < 0) + DrawText(TextFormat("Particles every %d frames | Type: %s", -emissionRate, particleTypesChar[currentType]), 15, 95, 10, DARKGRAY); + else + DrawText(TextFormat("%d Particles per frame | Type: %s", emissionRate + 1, particleTypesChar[currentType]), 15, 95, 10, DARKGRAY); DrawFPS(screenWidth - 80, 10); @@ -172,7 +151,7 @@ int main(void) //-------------------------------------------------------------------------------------- RL_FREE(particles); // Free particles array data - CloseWindow(); // Close window and OpenGL context + CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- return 0; @@ -181,27 +160,61 @@ int main(void) //---------------------------------------------------------------------------------- // Module Functions Definition //---------------------------------------------------------------------------------- -static Particle* AddToCircularBuffer(CircularBuffer* circularBuffer) +static void EmitParticle(CircularBuffer *circularBuffer, Vector2 emitterPosition, ParticleType type) { - Particle* particle = NULL; + Particle *newParticle = AddToCircularBuffer(circularBuffer); + // If buffer is full, newParticle is NULL + if (newParticle != NULL) + { + // Fill particle properties + newParticle->position = emitterPosition; + newParticle->alive = true; + newParticle->lifeTime = 0.0f; + newParticle->type = type; + float speed = (float)(rand()%10)/5.0f; + switch (type) + { + case WATER: + newParticle->radius = 5.0f; + newParticle->color = BLUE; + break; + case SMOKE: + newParticle->radius = 7.0f; + newParticle->color = GRAY; + break; + case FIRE: + newParticle->radius = 10.0f; + newParticle->color = YELLOW; + speed /= 10.0f; + break; + default: break; + } + float direction = (float)(rand()%360); + newParticle->velocity = (Vector2){ speed*cosf(direction*DEG2RAD), speed*sinf(direction*DEG2RAD) }; + } +} + +static Particle *AddToCircularBuffer(CircularBuffer *circularBuffer) +{ + Particle *particle = NULL; // Check if buffer full - if (((circularBuffer->head + 1) % MAX_PARTICLES) != circularBuffer->tail) + if (((circularBuffer->head + 1)%MAX_PARTICLES) != circularBuffer->tail) { // Add new particle to the head position and advance head particle = &circularBuffer->buffer[circularBuffer->head]; - circularBuffer->head = (circularBuffer->head + 1) % MAX_PARTICLES; + circularBuffer->head = (circularBuffer->head + 1)%MAX_PARTICLES; } return particle; } -static void UpdateParticles(CircularBuffer* circularBuffer, int screenWidth, int screenHeight) +static void UpdateParticles(CircularBuffer *circularBuffer, int screenWidth, int screenHeight) { - for (int i = circularBuffer->tail; i != circularBuffer->head; i = (i + 1) % MAX_PARTICLES) + for (int i = circularBuffer->tail; i != circularBuffer->head; i = (i + 1)%MAX_PARTICLES) { // Update particle life and positions - circularBuffer->buffer[i].lifeTime += 1.0f / 60.0f; // 60 FPS -> 1/60 seconds per frame + circularBuffer->buffer[i].lifeTime += 1.0f/60.0f; // 60 FPS -> 1/60 seconds per frame switch (circularBuffer->buffer[i].type) { @@ -221,11 +234,11 @@ static void UpdateParticles(CircularBuffer* circularBuffer, int screenWidth, int break; case FIRE: // Add a little horizontal oscillation to fire particles - circularBuffer->buffer[i].position.x += circularBuffer->buffer[i].velocity.x + cosf(circularBuffer->buffer[i].lifeTime * 10.0f); - circularBuffer->buffer[i].velocity.y -= 0.005f; // Upwards + circularBuffer->buffer[i].position.x += circularBuffer->buffer[i].velocity.x + cosf(circularBuffer->buffer[i].lifeTime*215.0f); + circularBuffer->buffer[i].velocity.y -= 0.05f; // Upwards circularBuffer->buffer[i].position.y += circularBuffer->buffer[i].velocity.y; - circularBuffer->buffer[i].radius -= 0.05f; // Decrement radius: fire shrinks - circularBuffer->buffer[i].color.g -= 1; // Decrement green: fire turns reddish starting from yellow + circularBuffer->buffer[i].radius -= 0.15f; // Decrement radius: fire shrinks + circularBuffer->buffer[i].color.g -= 3; // Decrement green: fire turns reddish starting from yellow if (circularBuffer->buffer[i].radius <= 0.02f) // If radius too small, particle dies circularBuffer->buffer[i].alive = false; break; @@ -233,26 +246,26 @@ static void UpdateParticles(CircularBuffer* circularBuffer, int screenWidth, int } // Disable particle when out of screen - if ((circularBuffer->buffer[i].position.x < 0) || - (circularBuffer->buffer[i].position.x > screenWidth) || - (circularBuffer->buffer[i].position.y < 0) || - (circularBuffer->buffer[i].position.y > screenHeight)) + Vector2 center = circularBuffer->buffer[i].position; + float radius = circularBuffer->buffer[i].radius; + if ((center.x < -radius) || (center.x > screenWidth + radius) || + (center.y < -radius) || (center.y > screenHeight + radius)) circularBuffer->buffer[i].alive = false; } } -static void UpdateCircularBuffer(CircularBuffer* circularBuffer) +static void UpdateCircularBuffer(CircularBuffer *circularBuffer) { // Update circular buffer: advance tail over dead particles - while ((circularBuffer->tail != circularBuffer->head) && + while (circularBuffer->tail != circularBuffer->head && !circularBuffer->buffer[circularBuffer->tail].alive) { - circularBuffer->tail = (circularBuffer->tail + 1) % MAX_PARTICLES; + circularBuffer->tail = (circularBuffer->tail + 1)%MAX_PARTICLES; } } -static void DrawParticles(CircularBuffer* circularBuffer) +static void DrawParticles(CircularBuffer *circularBuffer) { - for (int i = circularBuffer->tail; i != circularBuffer->head; i = (i + 1) % MAX_PARTICLES) + for (int i = circularBuffer->tail; i != circularBuffer->head; i = (i + 1)%MAX_PARTICLES) { if (circularBuffer->buffer[i].alive) { diff --git a/examples/shapes/shapes_particles.png b/examples/shapes/shapes_particles.png index 728f765af5a008ed43507f8555994e683471c067..78abece57c0dccecba54c3c679beb9e163d6460a 100644 GIT binary patch delta 30867 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 q}m#vv@x|-&zBoj6e>mc zn1{)P9h2aT_Uehemk+)DxcWD=k~l)SUHN;J3U2d+j|*rwIHfC!+!cp?5$xmjozBnu!yK6dwdS!tAY3e4P=1C`iZT#d zUC*>&&g*ZYz8&`@Oe6oEI+Rz46H2p2V|ud#0*vSOIr(v$ItJz ztb3%*f9Xkk-f=>aCvWXg0-T44F3kx+t)Gf^+Nq4+*xK^4gMA16rIQ1f z(6FZE_-hS>QnqJYx-ab-rhobz{p8$cq`5tEt89GwZK+7jtW?;)5#nhywb6;ze96$A zyjp`s0Ow;gEHo|1@8t{F44b)l^4_nuUSNrj+3*n0KpKWz5pk@jG~lC+=mH2D8=-K# zb_gG3nGmhd&MCj;tNZ;}uRyP`ADIER%@30voOp;wIXxYv4ea?hru{7e=e}>v>8b5DJ%v)@%DOx z2Z6y3+Awx67?j->=KR#dJzFxW2WfuaP!|f-E~|B1a}WW43~^z{Gipyjps@gyFp{N+ zd#RxpzgNl{%E0DF>y9DvBXUn4soipSL>yJlV2M1@=#jMxz>sK}NE=F~N3Jy(K3}R= zz9_uSc4u;KRoqQ|AS@9o$0`)j#iDiH%G`W(P1|mMzsRv|pF$7F5}S~LQ1*aV=TWLK zn=U1qp+*wu0RC`i^=!ZY+aKMlp!U03`oHD~2rUG)kyd9P8Y{~qk{g{f&r;$2iU1^( zdnae8g9PZ3a&uez*Z%fIekl#9mh9cBZ)cdBbeCR;Y*a5 zctvN9gfO_=Dzku|%7^CaMw!P+USaZ-8Mei6y~m^UM@w$pRDufmdFHX7!vx}=6Uj_{ zb8zhFf3Qg;_%5ns_HTfj;KJ*dpLp{Z4u>)XSgAaozFFi`^$^)cI1r{#JcMuEF2x%Fg4Jh{04(o6YqI{K5 z<(Kl=7n#FfT{1uCYj&?(VM_jMZne3%Qf-qCLH)DMocbLt`{~?4R6>GY`xd%EnF})v z;XPTk5YR(zS>LIcYH{&rxwPZLCEa@aB7;aN*WoJLV#-Wy=3zh@`%|#OjttG*;iA#C z_f1e}evY}=vuDW)bz+#(F9RtyUizJK2s~28>pSllJj;!Es%vIP!yI#Si840iNVS%cY&{{Nv$~eV6tu;ixL`*o%2=S0#AAke?P1mb;u;5hAEn#g1!66o6Ss!r?grU_JH zjy28bnCU7@NX=3n@`Gw&g;5J+ExE~UuhITCr-S;s>gDdK_LY~K`>?}&eFArvRlHTo z&^+|S06$&7`w7npGz@ss+B2ADdgzrAZlZ5nu*#1#LrRLrbeh}a=lDYx9J|CrIj+}n z7m33P`eh%RKD0ZN&2AcV5smDw8W;rf(JIEBq##`|0V#I5gPhhnKK*V3o*2X7dkjof z?@Y}#>YXvyz4O4u-YAiv!(YeRiV+$b-dR4hGKoH==-+_fpJFZs>=Ua@IIm$LI5 zvRPv-j{YFg+~=!62G+X{hH!hSDErR7GCX&R)2}Fm@Y5afQUqZs$0N)qu+7r9B)~3I zy^@lkULxS8T58_=0n}#|tV^Eb^f$Z|EH?WUTT>%Aoc!B+bBWl|%Z;E>o;pH6beRir z+T?N!2qltL+3(6?N9ma!6qSrHW+GK-i&~_#dbp~%Y>g@oZF1CS2j+%mZ75oSq~)OI zNu&j4#II=vNWLNqy-|5L?5(#EYgfqFi9fB6z5RPn(&3{RhI_EXlYsOfjy*w%g{V~7 zit&@3KK|K&^MMjw9dnY-M|hLHK)o=d?Xp|8vJmpY*{8c>VNT60b&klU+7&;vGPdAm zOF{8bL2kH?8FQ3*eus7lf07U;RkaYvq5vA3fY6_6^}7nB?+uz1;Hl|v!eqvOX{T>O z59$lX;bGB56gG)AfE#i=@s_;Q7`uSLg z=n1S)-zAl_1;caB1jY3*#MqpLz%c67FpBbBTuDVHABzf^@g?(myQq zCU7oojDIi=eh4c;9LNF{g=;c7^hb*(+Lg6N>-!ty8P_MEy^>#!E9$_H*#^J9?SB&J z&hAvV_q{SLxQ;n}qnj^_Q2p_KdSTxyOVnIN&nh8})7n&vsDfn<^Q>tlP*Ox*rP*=Q~9vAzQ`C0m;RT@$+qASj-HU+YCWo!Ik zvzuDYvm{+gK}PKR+eW6aU>%Xj_I=-$F0(jfD!-lxtSSnrFRG@6iSGcGEz(uQCAO*{gB{cc^t zo;A-r+gTLVdpp$pPUq}RbM2*B2%!<8;$i_^TN^D*vCY`t+LCmxAM|uqsDZ$7BPU#lPdNqj`+160M-T)`Q_;HmErjE}B~zc+AwWzhwXJ57SNlGHThf%8p|Tg$X`(sLaD?dFBH~k??D%Ho>&RI=nZ1pUjH!xG z!A9voRXTEdVz!S<_%er^2+?sgcO1UyXiCS8^rUS7DuoF-MLQ9-$cTN*uZ$s9zYQpQ z+z#cmH5VhLxrwCxn%@)P8lmqI_BnDfHBsv%7h>Vq_p6PLd>z$xv zxd%rHdPJrK#Y4~x|A-zM46TMB=q_!tQ>&zdT#gCcremfJ5ShbW%ezPY{VD`L988ga zOXEm=Oh<@#CCEFiVBX@*srrjyUWq|98@YkEUz+#7x+8P-6~&UMleNJWVZpb1SKGm^5#$@hX5`?Qx+D_HUPmIf?cJ(HfSTG?K`t$G~TxL8Uu*#MC#kedySacM!oeHj?IwBCM8_ z3wWn)L-<#GUwW|$7H8^oZ%MJ;*q$?ZlR;OU;B#ZAniFk|Rxb{&HvF_Wl*a~M*Y&k- zjY?_=BwZ^`p72K1e+25zJL`ViSNi>Y`5OYLfuf1@FOdf^xT;NcSyY)7^4~O~e#|ai zVDZ}&qyxS*dMqE)p(;_NU(wICwj;hB^)%gGXoPAi@@BlHQB`6YSMr2r_amX(g>~z0 zoiuK!kBsCWLe5xo8oMG5*Tgj9;^*I#!IV^#atwUS7jeeCG)5KI4-Xvho%8DAhN!%o zyG0I$1_q^zy5B{mjFCWDrP38MRSK8Wd0>}RD1fi};+-e)dRCv@450hvg*z6i->?rp z-Yg(AKb?!xZW^j#OiSCn)!V|v98aPyt-gq|3kg7De>cgM$A#xa0lTT)!O{zCcodF0fw#6KfuqxHEywGjxQOL4?3dx{!uxT)_Ee z&EVnz5MMFWOe!;YuA9X_4j1_}^7%Di+{sLnHg(Gk{M))ax8pjM z_k#|BoEHgLQ2zvOV9buaeBfmV7);~5a}csg}(rMT~xS=Er> z4^Ksx!`W|A7_!F-hL8P)rr4x-6tf@skV*{xYG#*;*tz{hAK+XO;!GuwsbVE4zg>R) zmEy9QiO_K-Gi3=NOQHkYIsj4?fZOCu%Mclb{6Pdxg8B&wh%&g|FFqvow#?vvs!)ikQvd@c>- z4&Fq8#5bFpn&UCas12+r?SQUj2jN<({-IetB|~@8*NShYA&)bSuaw+OugA?Zn->Yh znkL_m`r1zWrYr;hbTVg@8j?PJ`cx!j5hZoDliU_5ZO1BqAW%xXz3T4{P%(BeF6)Dg z%9KLdh2b;B8%4G0zS)L){ceZk<#_HEtZ334Rdhw|0^{zD?P?vnXDRI&oCS!w)PHJO zU$!h+vM=GZA$#0M>aY?QH^8$`AYWGaJ|Ct0JVjim*_+T;s8cMM)-Qc=>TXR`>J#eX z=LeR~JCmFZh{MbznFD2_gkH8t$;UJiK=okd&G2djfuEY=e5}d>Q~WR?-9{|)kJ3?s zDwCs5Mog^FnVgodMZY2wpM#>E!jaydYQPe1>T+-!b|Uk7{X$|T==I@Tg{{CJ$UdWuc=4Lk=ebUa2%Dz}<^n5#+-ef3i*1Qb^-e%Z%&DY0F2-5wjKJEdc*$+T;9^?P zbV^=^p`G;}!g0$vRA4^R@g*vSWk_GqbQ60+vC~D=RJRcYui?}cA))2b{%$^Q9!* z0AMti`TvK+Bt(0@O!c1Qd7ZqFZtZI204v*z=TBOF^+C^npA$!?^O*i}* zlF1GYZj}7(B?@eNmaZyjDA^IJUD-@ZA(b00^3MD8Pn9Io<&pw1Q;Ft;^Z0py4y@+6 zy?4BC-*`43${a3Myz#ZoIPfUn=qr%k&8*24df>%SJONEYK58obA82{4Wt^7Ki%hmY zj9?z!d7sfQmUh?8kftu+b&Gj3aVj$_{~R1|S>4Fp)ZvUAUju;rP;0H7rn^Oif1A^# zpJDD3v^0yaleP+G3_Do-(7nuD zjOq}Qui!XSHM;iI;AOn7GPRuINIjazaVhIg80n;oc9CATc}U!2znIcd@g(VRfE8dw z8|K6BynTzsO;jNeEnkaJebJ34p~yePD>DGu(rqrEd&#<9J10Q>r8AWbAVDlZK~U&c zqXY8rE1`hm#FM#`Azyh_TJ~GK6~dt(eSd@lbBU^$p|%GN)&C0Q6>}` zp8ce4qX@g}4irESs%N(kJAKSI1$=$*$f7VOjStEk^$&_*vOKY*WE;3oP7WO2?@8{ zT#w*y9h#;b`L&6i)zRyP!nVSqL&l189ksmw5wUG7kETXMkr}@D$%nX|qTDtV@K8AK zpNm9PhJA~mL725ps(+%ci71Cq6Q!P!altS4`gd&L#0G`7?}KV~Yh~GJp0I$qxw&_L z8_G;9*N*l^)d+3OfqzVUYsPAku<87J~VCn1X<9@qI7xZmZ z*azrW_1zT_ry?3neo0p8z}w&I=)iC|l;hzT^FS*6!2OU0e?z+rC>|n#_J-6FsCLZ` zWUrSqv)OkaD|Xnj9pHS3$Ujl%(nan*MJ^~`WOpwLm*C6uK4D*uLCQZ-zNuVVccYGh zL|*5~`Tb;j0ASv=7=3@EE91ot6giAM{ed-eEK3;<5`D!&6-n3Fl5uP8Lv6cvsPSjBSzn z^J>E)-JKbE`WuGB?l@l%+RC6MQ4>(3njOS`7p<|Zq3kAh*^47VQQK@YM33(m5I*$~ zE#I&gNwXx{o3t-;60ZfXL4H^cMMEn$uZs>3=n@dqd_Ry-r^zA|(`#;ivk&@v1@G~s zWVtur|KqpI?ZaPGI}p#FDIGxHI+R@++WVrB7_j*QehcXL*-_*UdcTUkSXVSA1BV7>1j=77E7w$tPb0cV}GOHda;t|Sj_vr~&mB_H{EI#g zSVJj%ZO%!(veYVn6H8O3K)`OrOrZLZ%RhvAtOX&%VqwCMEU&4q>uM;HZB#XFiJ8hW(X*y(Jwp3UU84SH>^oc=Sm z1cl)js0qzQdH~^1*?d#kGt-~Eziei$EFnSe>mX6St6N*D z&KnJO*m46`BqMlV!jCwc*ET5Dj-e{v5Ql~qp$9XhZW16UC4Q^nSrVn0=3bN%*Wm-w z2JieWJNQv7j`Ur%B&NEMMS0iu^^@-^bKQ5@T~N-gsGVnrh#x$o#$$n$OXj+Ce=De% zWAe;^gGtE7y^}c8i{e#nItrdIfomJdC*4foDWnNxnH}2MynU*pnrFilZ*AXgh~bV?)VrBQ@>SAwqo_ zM%(^q^U23{K1m-P8+TL+wHzInVB8JpIu;3^n=Cj`TFuSSeZ`~HIcEuzV%te~zKBV^ zu*J2e4`2Id+!5pot(9v(M`p00>qQ3Tb*0Mw^iDWm4XUB|G;{_}QOo`sMi8L1g6u_+mO>+)t+b&%f?#-}XDh6bzm zeK3&wDDYQ|ZPJ(W#?Q$oTLd7*#ZI8|!Z+7;!pj8^sJjK-ImmWSCl!ao@FE=_N8#p7 z8iYsonNV?6eqgwed#TLA;ZRKWnM1t~;mVIs1Rin7R)5-4NQ6+BW-IWWXwnH6p~ca%%7)puWVpForNd7{x(?4`K_S_**8A2W9`dN_CF;)I(Lb z=0RWI=jNI4$m$b7mu>^in4W|#UaD5KXX(9qgOnf#ZKy>w;-Lb*_@g|ZYLmQU;*82CW?cz@iOKe?|^ zEwkKK=Y9`aMJv5zECbNK%mF1((oE9+8M$?s-IL%j2vk%k`?|2R zqlr;W&&&)3urZmU9_4$yXM624rI5T$rw%|yC}CHhR{{j~I%9z?Oe&LW+-P37)y;W@ zxbsf5BPJ_>+IQDwy8iaC-tDCU$}8ABlBEVMD0H}3Y<9Yz-a=|V9>CayI~+(r8WYBK zZUbj$-!EEb{%m=*>7SP-^BZHyx1Z)ctuQWwFNGESGB9+6E!e>RxIg=t{*qk45)S8P zSuy~#lhqmet?wi}iZl-yC7JqJuMGUwrr_5PZ)fd_TYZ6Kdl{8gen8W3f0=O_RAz#- zqmL2}B$!-3)h_nb?30g%V~~Nh>=@wgv)|7Q%gl>)F1e2bp7L>rD!#SsANyI=Yi%9c zS%rG{F;lNTbzyw-A=O`Mb1p-ln&q??IqE>0myU4&yS1%A%3IDC1Ur$me3{_k$;9E( z7F=o3?+LC%od9Z>4HUX0?E2N8C%MnkiYEjP^M!HTLiqR`eMS;9ivoS0m3Qj^V$8e_ za9pIqeZDB`I~gWEu6J8R`n*b1U6R66C$^7&HSvuGEXHtsqf9C!G2}gB@dHOw3qRP< zZ9CtuD8uHtRhWhk1-WzSlKEFsKd8B6xDCXK9b zkwl?n$R4uI3}Y8#i9!g8v1ThfV_&j=pXu}cp7S~9cYgkwbId#Q&imfa{oMC;U)S}T zKM_}Dk&4EXm7R3nU)Id&^_1g@Y#cgduqP6i{q`>P(&ZGM1g5Z}v)PrW@}l(K zxabj>hOs4S;kp%r^O;Z`>I~SMrE`$U8-B}80t3B@4@oK|9<>hpQyCQ>>vip()iDGm z5+j%b?RiT`Xa|!k>#;N;=-n9|%+ckJXq}ohJJbR4 z{8hb!K^;#Fu+P@s9?y>B4=s zso?nGKRS7RqHpZQ<6bxZac6vC;A+`r$?$oC)(n?!2Sj8(js@a009@8B-V*HFlLvqO zvZ?+$_hiqb7W(NB7QmxnZ`;O&*wZKyc`SD0g}aONEVU9YqquQRe@kQu5ug}U!I0_$E*dmHV;CH%0*9A+Gc(jyU zwh}7jrk2is-Ulww)G2um4b~ZT|X&WIg==eiZq) z@G@G%5+#k}V2;_Xbm+u!k(r0j4r%CQb%)Le?Hmtvy>zQA1lT{6 zP)uY8x1?MSX`U(?(G{?ksnGuMVVZM!gaIXAIV+9o%nwee*-nU+ph!bW&Ho+wmT zRkdy#W_6ZRD4icrMOq}k(ud-4FRi_Cwi(S5Jv*Tp8`Rr>)+~-}TW7o}T{kFm{<}N+s(1NEOwiKp|05H0wU2jQbx26^%5Z;>*y`$_ltPSsa%D(D zty+-xR1TGRKNSO*j96#V;u{+Go%K@OkIx0i2MY{%d%Iw&+uq;5$G%xmn%P|?@Sx6O z@BtCvL=cEg=o5Kf2oRD5Xb3E7NHN@&Sn8nYNm?}hW?rwxX;ym4Uh`*ar9tx}au>B~ z(Z|BvqDHCXzz~5@x8Cic=lNTjtc6)OHb3c`+pM?6Ki=fQQ>Y=b(ZX@xqHhNgr#FAY zs`HU~-~b$2O&%Ydu6hKx(fpS)7Ipwbx=bS8RvF?q2+DAKTz(0vvXY69bt@a#ItoZ7 z?jBf0>rPb`ND zmaR*NkYCx_&bOt7ew)@)O12AqeB9Wb4$9j}P<36dHkQZC$Fclne6=}KC& zrv;(q`So39r(-Wlac7#0QgUlZa6dy^8z9!5eB-Evl0{_yI_$?(8C4L9I9sHH`ZRz`;yj+ zBQ{zHt<2peAN#EM81E#?DEm-$-iIZ(RhJyM!Tx~xj@w>Lwx7#kv3p%Z*`x9w*RxQW^%%*I(H7-?hwbdVBKAgB zr9XBW^tmp4Ji-uhCs)CF5HZs~y~{1!H`QYSDRLi&CcOd#YI?`VZ9nCH7rthOEc2RX z-p8}M4CSR+Q|5vRwHIOJU>PyF=kfTav+6|wThgWX2cYksF&*9>c16ZD!yD(LpN|q> ze+kBo1JVxnJB&AgMJZwC`gCz@%I=(fiEHfsAxG;AW)5X{?4oZ4ELzSyHm-3b_zOHQ zkbK%DquP6>#jY$pT~4KPGoAgRaNlzWNM=qk5v@&ytO}W7zvJsY1DN#7byALw7F#PFqX{{yoW1i8gU(|xJ^?&+}qCT)t z%qBlK4d6YgKD%3ME0gUfg`cXb)uA>YJfit0=GdAS`IpDsuL;;S;ji>voqC&O7<|-c zgPZHC5O;N1IO^Tl#TtgWC!hN_-t!+eR6JkTb}=sUsf^1CptJf`faKBH(Y#Rv6%{#f z6NeXw7&RPTniUpeixMn}Iui4OjI)+5^({0@^}1PhgS6Ri%jjfJ<{5?mAiwpypDDuK zHBST7?RbV`T$HTtX?(#ek-iJ_QF~56KgUXWq+22JByeqKbA?mPToyFO$6qRMzEcK2 zW>0uvi9=gXb}IHt#_VBs1?UIr2TkGqo!6%;$tTI4idfVVOhvfOb4YRjk?e?GES@pJEs|i;|FLR;VB7Mny;q z!8$Q)mjj^7L#Bo92t-le_XZ-!+<*csR{i%t?E%@Vl;+991#t9majBx-eOW`XES~0I zd7T3j5d3snQF4}CJ@|r6zj=;I?OWOlm4F?>Rb@^l2qj%;TyB$Jm~!ctgmDX%E>YY1 zIcwi)Qs?2V-mmHiZtuG)WkekYV|l-kTzFJkO@z;YDS@e#w@9Jz1C+=1%#4=SU^y2bkHb-ad+dR-oaY)AER>mZ_lE)vZ1j(XN^;Ct=RiM*5zgq>glzX7wZ?0Mf3CX zm3FM%1wApjF?bHa4&Nfw z4Za|MtNBd0{()_MpXa>=KNay+NqZ(w^4fTAK2Fr$_*TO)AB?8Nzq~LfAnk|eRsQAx z00$pz%~V=${@9D8Cqt&1U3qhCC?{0&KYA-Rzj|-W$<5Azk;RgnQv%mL2}=yL%#jGr z%@+?R*G+pB8~Z8Yq#!_d#*KTwM}7i>7&_D~dJF6l7imJTjU*gJVcaLiH*a&j1$v+h zsL^;smb->8y3~Oy2AF?FKL`-#&hd`z`=CnCRzVmB=ReC#iz6TTJ&wy)+E0Y7?`Y07 zCv4dfg+{I#y@}CR<;4r)h$XB&wO~#Y18Gnmt>|T*|Hh>kaYxfXGl0=*;l|MC)A+!o!?= z&dL}YwG6G-%}%v%JV*gG`}33qkXS>)V=ptpWRFvrwR0*nX{o5`n)9Tnkgsvh-FhgF za5cvn{a3#Xu^dU$#=p^kcDl6)ePIJ>ZTB*sH#*0|rrN8E8FxYf_T+O}3hSM|Nq`M| zCdJ=ipZ)pC$fXg-AzTjRL1_|f-Iq_R$)wL72L%ke{2h8)e_H%cSM^_N% z6^Aa~zJzB5YF;@7_j~mFa~4n-Yb+c@nR_|7H{|tIjdOw& zsy)za=p3WZoIl0_!!2Ps)o4Me3=JzXp0W4~J*-L@Yp?r;sZ83^?*&X5^@8@ z;DtVXaTW`d{V)dD$lP=AosGU;(-wZZ8A+rvOF0#w0TAVc8Xtw{y6Xj#PY6HtFM~$~ z!C>ba3q$J`S%4kNz?{|D=AW|NOz(og$0hgU+kW0MWP&|CmTKg^Uuq)aA`|aHQpgdu z8p;EQSLGAC#3b5I!EU|y4sF;_2D^I^l)-gwZ4>ElHJ#I4EEa0B!+0=A?dqpvyFk^X zppY|mG2#$RKh1dPT3y#C6)Fiy;AMbR zIo9w*A>suY4B)&+zzA_~dqEy7NVZq@D2Fq!TM{|U0@pm-M9#4A#JT`~gNg4sn9X#J z$W;jE{qN(Spef8XEZHt0;i`X`*Pprg74>c4fCjuGnnyVs$0t*KG=|+0@Uz41LQSOd z;YTfQf=`!MUk*yeTtdLynIlU0277w(I6JngW&%Equ4NULAsOYCXjcxw*!IGMFtzL8 z2XC*3mo06S`n~dTThq--zaavFA&OtiU?iX4>Qu+(zdv``W3k49H~)rzUwUwGE*V8O zZwg2FG9QF-KeKlEu}vduy%Z&pU*}rc2NqfQFvG2pZe52gu;j%dO^l{wyGjKzXNmd`2V|FJ&_o}L@mH^tFMa7P%Bg3N2 zH8FF*CghQB(eno=ASUOVEf}SD4wj8TL$CA&eDY^GH@ET**Rqn*L8Xu9zL-$L3JvC( zi{Kz*SZ-LNKyC2p_eJFF1;M<+eYr^jp&1^X$?~Q0nLSGSB^XbD>`$3Uk5mF4dbmUS z&^+3Jz2+y^fT^sUn3WI?AS8Q$vAV{_3T`E~&6=T&lbkXxsc zlC7!h?lslbqQAa4{AI2^@Z@^&)+zFVr-uBzUki(5p(~;rM{B2I?d@D%)vIJ))aj#I zUhj>@+yrSIr^)YkD8IIaqx*Q{vr6b)eVj9Q%NY!azPh8yhPvIeYi1R!j&?_^8uGY7 zY937IMFj#vf#B&vi`UYk8KCs=_tvuZ+E{0o18CkHfx(;NK^K=sumz&sKP~ijnWC;B zmQflfeV%(^4niq@K zIH#AZ(7G1E+LFnq-|mrG9&LM$Tmn`u$piRtRWh;04X31D$g#c$%zPTdn7aX;C*B*c z0s_O!Z)d6Te&bL5ZbB!3RJc=2yw}j9;#Saw>szzMUV59|?LgVv)+T)l#t*h^&R+d9 zSC|<_Jg-d){TBJ4S5Qmm1LpRscK#gL4N#62T1W<)?(PBvB?ZYTD+_=_G$KlV?$Cfq z#Z!D%RQVwpbi@3El5?rgz-s*$zITeA5222Rs=#D z_s4y$*_7GOw7Eg+542|Z9BTQh54BsH6ORzTlFFI%a}s+(`%Ld$aRv~WQYE*AL1NcE zte0xS^q5~>GvbXFd*11<2D?~cG%kV%{NM%dR~OGXkEPXXKHc3Q=sazHbvIZY-!9Vq z+xDys!Ut?63b0^f73d)eF&TCkCOgFoi@FwFlZ^2m4(ZrTSi@Q2HjA(19eaOsM>r63?#GAsa|9k*T#Uf?KqPZ=*^Jj=Se$L|qqM4M+N!K* zcLT;6<+Jan6q%>|j_>;bwZ6WdvQSN_rmtP!XOrk50pu(QstBD`YMQv??e;uRhWiB{???X;SohusR$y<)pS<( z2HaDt(t=cHuGLMwzg;yr?fEriEcrU>Y@0GDz^i}H?Ck7>00xfw9DUz-a%&mGB|4M| z92VqwG&y~g*I@bZUbsRIw(8!eN)ZUtV{5~ApAwdLNm*kQoOdpmpCVjL7IV`<9D-_A z#aPUux_BRuMKz%8+&&k!eE3sZ6$h|z5bDn3IhXd>2sB57t^*5Y*Znw3L^q?@lL&;F zxjB;bhCu%+h*0JJ^i(r~Fh~&>l8vs-g3MRAuN1H&yL>KFnk65C_eO4*N~&k99Lwu6 zuhosZ(yOsj*R=qu@oJ-5<$#?}Kk|mWCzGaBTj!c@qLxG%dU+d}RgD3|<1J?+FacQJ z{vPnhCg92e+@XA`Ome{H-Gm=g0|szn-Ajsqp5W|HMhk4+M7EKeM z^Lh)MZ<#3tS&YCHKmppTT)%Zy;P1}nqv^IqARrGRw#A6a?4USS} zCd&5v2afyRFWb4WlO+A+A(n-*-9Bo;oqX{nKrR%7C}GSo3QKeJKW9Eb_p`hobjbaB zuR$*F&dA|y_xiy&3{Nu$#&>^i0@1tcn$jazTt2h zj`B6nQ`jokM2&|1lJycSnA+4-QoGW&j#Ay|kGk}u*Bt^a_YZ6LM<@*qx$cZVxm9xs z@V`yQhfkUFo)g;;;AJhB7)IYdbK<7 z|CkY_#C168OUKXfU4>h4bSitMK?w1}T^FZ0p2Tz9EEKIl>)~gDwFVS|KSfLag^sMy zF(;`~y0xI+-Ym3Bo~LCR|5@t2DFgbi$*F&Ek_Q8lwd!;M zd^NMVzyOQ^Xb(B)D;@T54^+1s$(F5?D+eoJX`bxz7Ik##LW zPdKCM9~9(R-)|b|YqD~f3}r#`e;8-wC}sgH+oNULfqFb}vnH@c0!nZDOLhq^B%4q` zfqt{;xLwHVb{eW^etY^^dnZLoe$3*=~XqL_&S2Z`dZS2@g0 z8jCMnw=ZjXe@+1!36WegF0$57J2mlm?%j7wA{DS3wyekmFv@F++VWoTlt*X!=b;+wbaRUZ17 z1=WsBOl1BlF!;@v5OE>B%-7UEw`yyAvA(V#qA8o%>GGP(8%@qIU2nGwwC{Q5R2q&* zfPjtFypo)4$~e8VdnfbC!`qN~f(lBSr&MnG_j-V4EFGU2+I#QBw|@N4K0re%fdRq5 zfPTJb;Rl`CzYVnJLzuHych4i>gY7FTD;*AFrw$%hNs3}XZhD$_(F_7hjK>R|R*rWM z=>H|uT1`i@JSfgVJ8I?6)gTa%qqMtHif>?sTR@eDE0~_SmT{Q?Tfzw2k|XHlj2@V!?~_iRP<;(+E4oF!_g_ZE5nt6a!0 zWUYZhCo{_sB43>Kvq4YYl&wdQfJQejk1zR8-P}-`amWMIkSSakGV*$ye#CGTZfa{= z!yt)q-~|_?%DnwNg51M(j0x1Xsk-BbWFYA1QD5wHpL-oO#_oxx#u}=ygow9a~UEt*T!`U-)h6o!&ggnrj49Zv@+pDK({E z95FY2ukcMmE8dbjnHvsck?j*h%*emVOBF9(^s;5fG8QkKD7jX?0#sWaC4JRM5BWr& z&8@BeBBHws@TCznqK9JqVivTO)mCn?^P6*-+;xyveMD}~*!|%{t1Qx9*8XZrb9lS* z{;!)d+{dW}Hb=a$<1^@lQ^E^4qg;cbE8C76r4TZo(qj^4=o@G>MVt4}E`5 zsXU?9JF9*CCLda;bL)ZP6Edr3^Si7r@mKX}(tf~_N`bcC)$GglP4#~2$@HIdL(bBG zFr{o9XU$F#N`cvP;l>k*Ps$j$6>HW^Yck6Ax5)eb@UzUScM`B4I9@<I&}lk$-FR~Y+H2o`*fxGht@_uO<#dEoBq%VHDcUBbzzn^WPJzDQ>~an%RBANv zTJp8}^Af4^P4Jt~%#o7kFRv+(%($(RBF(j;(--2poRT)5ovc3Ck|K5X7=SSEomZbc z=eIl-n%xfY@l;IJ_B>^4W7Oi%We5#x3}-A5P6^m@q#d^4c1k+s*q%o+5lllWZ*@e@ zB|+=(*PWpkM=4B!<2f&M^oYutRasN7c|ESkxwu#{wj7s=y?qp^q;=;i z3G(O*jjJE^+&3gr84^ZA!*QF1w}lskoYpX9cN^Rdm)Q|x*(PcWO|QeCdnNnSSj4be zf8eDOYhYB#m=a*4LWx=k153%lSu-GfjE9&g5=;gdO5)|=?V$}ik*l0XN@Nq)$)5Z= z-n=od_(Gi_(M0L*$U#Bh_JvUO$nJAueXeDOhtx%Rntz^CKJO;uJa)w&Zlr;&(o)e# z6|fb3j0=$K=h5H@X09 z0+dmkMw0G$Hp6imw#Hlvl=d2WXTN&1>o3_Crtb%Jxdh+42&ATxs3}?&>NTD@<0)r!p-X4_4MJ4%Udc+Z#^YAg)P}s( zTtrm=ncDNmm`XNR0p$I>Aj5>xpR$O*0wx57y|T!eWpYHuQi4%#~O4 z&EQqWmeYn$Re!c=CijK3Zy} zmBaza5QVo%(d6DmylKXCv;aEp)Eb%?zkYn={u$DYx=7Z3&YWX$=UG5wk$9sqMcnHfSOFm%A^cloG2FbEa|L-Mci?0DS zVtRt1maI$%H+eE>s%#y=kJV+U1eT>*^r54X7fLM5&TWA50`@l`3)d$_=1&q2EBLOH zKEkPllOLvHmo<3(i~B5QoP0(JIDA&mYz8)0D>6wOKW=etSGO4XjPQ~1>5kf|6lM0O1=U$fU2>)Hj5TFocC+kW!i}0!=(OGZ~EPA ze3|MX*%+C<%G-=BaTjBHjv<+832OP`s#m_$r*Rc(#DaF~fZT1v)#ojpUe`gk&ilZX zq)oATl=mqL!$Lsb$T zd8p)#0Grrz^oJb$MsHq3M!$OX$`vZ(+6_0qz~Hkwbw3xQwmA~SHmAdr6W6ospsX%` zRL}FQ_2_L5rc)$L`Rdc!9o0Hee%UqFol9o}{sf;$Hp&V8&$=c+$AP0D5KRdh4XSso zgQG-kwf?>UzKp>OX-Fa-`v|dYuBfc6?C=k%&`m_78w+WU>j53k1&E$syDz@v^V?nP zInOV+X~&tX>Cc(f)yz~-y*;?l9})mkFD3J~@Z>K*|2f7a9{F)C`MQr0P!eL!yD+vC z!PR6YF;Y%J=(h5KfdNoHU<`uLA!vVuQu?}G*;$+k8($7k13Wg7w!W67h`;RV7D6sg ztyy#QZtp_gfP50($UA*OE%zXATu7vE?)o++=QOnxA6_vZU*g^W1352}M%}Mr4vJ$R z{J9b5V5sDt5ix!=28%q{7{!qAlk*R7IPz&H1mce>WLtv${R&z%LAA>%p^~}7KW28r zDjaTRf1pvS%*l6LgGc*|(Q>v)hevsFU+?#?Z_Pa*{XOdDHzyZ^m8Ye6)m+O^Okelc zbG7{ty|Nwo>~N+zO1mDg4rx(>6rt~7)qb1eSX46+MK&Y7MPEZ)K%r1cx{alLrkeTK zPC2=}w|7niNBEZvZeqSGzcnfqZ9~@_ z%~yv6mtMkW0TwlpplKC!4<#KA>0o#JCq7Ff^zME9s~^G9hPfhEB^no>dUr^=1jjM+ zsXAil)0?Sn8fedyQbKUlg^l+1_AjGlsg^uFthex7#AyCeq$!?I)@u1EN&=lG;JnV^N!d+}$Q-$1^6sp(95 z=XKNCpP?7W)ym}cXVKD(8PC4gT8>n~$8t|q=V(pvE6d9R1Nn+eZ_A@G#=D9mYWjh%2&?Zm4ii;l ztVnWZ7Xi`bhUN0;&NB=r47zHk_;~TUX@mR(*Yl1V zaOF+CY~zX@(D_`EF-YgHVtMnCh03<7GOspWsY28d>jMaBR8|X14DAq~?MR`u`L^$1 zQ&<1;W@EPVcx(qxr)!#McI>il(xiGJlP@9t3fk!q+!htn7|9E@JOK0&Ys(D5b;}_cR}gu}2khAjo&vKx)Y<<5l}k1T)50jF zHDvDd$Bf$CPE=zeqG&8M6{EIc;g*t=L@%g^_twj(=c`)YJtnE7ITm`tsS6_-F}5T;?W3fYj+GoN*%qXXL9FBNU{SBNkIZfw2-xtI6yi8^Bj|Rj ziFwX|DcUWQ3+500lk&r%rHrPH1aw-RZV`0GmEynBlwZRPu$%KKSEr|C(*&?=t^d?6pI zbLVbTON(}H%@Y5L?#-C4+x9#B1bOeqpF{VhOULkK14nJN7+Wfg(3dkaHl(v0i{6x| zEg3woHWQ^KqZ%Y#hM4+Me=A2 zYtt!=vNom=)Yiau=YLn4hWQwO6DjGE#cZ1pk(s7}MTsWxuFe;9W*S~@~*-2pw{NPa_D*kFZ z^oaLvY}Uzvw-rZO=SCj|iv~2_RX!Qs>a%EIx-WTtTutDV_NSC9eKWdeD>bRg#^;27 zWh<$*j8)04X45o%JvoW3Va#!&3yBH3Sslp+04?_v771&$HS+zDi&pWBu<|)>?_oiq&)2r8>&*YTueA}=ZBdVB=<>uT+rGG zjM5-mw=aw-bNMnPvG~Ks48s6Zbp~B!4!~!$RYgTbvwU|vuD-DqRPQj^^VlGCow|x~ zYDMl00@Qu6XG602Y=unY>OKV2@UE9^%pX;?NVAAPW0Z9iHD2DMh2zjNn7Hq9jsRb> zO9ooymT?1K5dUx}?c-W`Pr5Q6dNv#1&oN3z6-L;3ocucta$IfTr&-0v%M>ZGC6}R4p5&*jyH}OY@yz=_&IJNmSslNnN?3Bqp zwJNGd8vqOe2SY!VWZkDBlY#7|?;uaDsir8Ujj{-gOLKvlaXJ}TtC+sCd3zFPa@&>z zz;@n-$7N2Cm~eRGqJDG9HE$el{qK@>6-lE+lSiA;$-kry%m!dENhb*s8A1}7V~DdX z7EUHPrEvz?AKOcqIhX;yCSGF9H+HBcO=&Fj?fm=mqrj3veREVv`*?w$LmiS1kbxq)V!4fZvG%u~3&Q=75i0mz|-mdyoUF}OtqdC4vFd4WiI_iI0w(6mU=J!t}m-z%Y}9tActpS;Hl~H_%Yt+ZXL=X?&_<@ay(>)JCcE*!v;UX zTbc{VGBon(@IaMF{P<0W(W`em0=L$vGoNV9Cn0(?oivJSzBgN|ii{(ANVNJak7+g+ zFa@W05oXw7?DlCAwacrkJ2T~mNai7AA3fZ zT6P?`2dOt~-IQo7ith%K8`CK?*Ak(#fIbL=!7juw8LLDhq_l(31SAwD+YNM+lZo5o zV$if=yyLkV14d#220wXta6qu`&4T}eug^9a;74UxBLN3g1l?PQTW&ob12+X4V$jeA z{2hT&{7yG!gvgz5C2q`6cyfw6$^MQXqO( zBOh5pTwcUOrhI|6Ur-kYevk|e;i;{Mx#%ZI$Nnk9Q($~pC*12*y}~16iqe{ ztAmX|KLX-?^KSfdr=Ic}w>Bg3Yk^9wiDB+9p}5*`c1s5O<(KV#LDMRTx8>26Bwl?< zbJs9OJE#L|Vx4rt`f7hD}Am+o@_agU~l*eA& zDFT$aB=E?R%Vy%IhlQ31xd6K_(LPIeIQ4C03s?-|kwtp@9!YA^i?0y_4a7AGU}s9j zBJznCFk*$l)?-B+kwI;yQKDVztfTA!Kq`3=sh)bi_djU`W+}!^d}v`P62RHotn;pN zhFiY%0EFtLDyh=LV*UJ5YPdsprb&Z#gS&JBe)ZzuCzKS7(y#dM_PueiG~r4NYjlcU zo3+?CaebbNKl;GsEAhxbA2b--MN`xG-`B^{m%zB}m%(dhdjAAQgy9~ITU)c_0%GUK zf6vxKA8j`g4=d`s`JT>0q(6V7u|MD13U!!~ZcFuaqSteD-6J?P;|A|>`lWRjiYQ@i zz3fikLSP?^xgH50pjQUK-btrO|KA6|qT=y4a$ z`}X~ZApOf=uz!y+08dB(pZ1?eMM3}jkiP%V^Pyn$llb5F|M%%eoNLWp?$YSKAA2B0&qg0FbCW)3 zSJ8_MMi5!saK322%zKj8@C%B1o6}AIEdZZGb1l0h8Q-dSG!-*R-{8yUIQu{#Nryi^ zE=~TV@G#Qy$WV<;l!&f2{I?iWjxgzf0m2WD=_gJFW}UY`zPYW>!osp=FDb_cL`FWU z&sUy0GBLum1)yNpm-|9k#L_|1KyoSKm}l`I7pSuK@R?pbZGEz$f55`(B(D`G=M|~- z4jT>)kEG*?gL;91fy>jz-4c^x@MLdvp5NuxA#GtT66MF}^sKXV+|uFbD@|N&WbBi5 z&R%@9g6Xa?E^f}q7m9c8Pg!h!EZYK}I&E&;Sj<|E3W)5=8WQe|ci@**xMO{I6sudc z1&AE$l9b*+wLRPuJoj5H;YZ+Cup}Rxdb|bH574e*QOq$Q&sjRdzaNGRyiNO#iyYzQ z@6A8{z9L3%j_qkQa5o?A&Tw)c!!!9~r4!NWjPeH<6Wn#4W~UnhCuK7Cv`8n&I5O;0 zU*x%X;*R|@^ltB*-}G5?U#dQ%`zm)WBZTe1j_0I_SN}7uByxzOp(Cis3?7!LJ4ilV zS|Jz{B#gE9Ji=-yJa&7B&xQ*_kMZ<3O`MBX{9iGS|wl;uDk$cVo5FK9cF|I2q+ znx&r(lW69bs=6D<4VkHgl@6nOaZmjn0zk0<_aMLZAo#a$87P~w+PnsV*nyxBujs}_ z-a**$8?L*Qq?HSb0vK-STUgp1UaxP7!6wV2y5eScUz(Bb8X&Z`)n&At$#b-Qo0u-) znaYk{ZaBIa7o3=H7l#dEn#^+d5qQ|FHP{jx)5N;+9&oDj8Dil@3Y#6|sd_e7zQj$% z#%4};_4uvcyd8Z2-*^wp%_@x*XXOSJQtCQrL*|||%n^ZOL#|mbWy?;d*(C^g#1A6w zr+s!AbFY0EEIsFa5f>zB3@RyPOe*^$-G4}ywj%NwjlN`<< zJ0I7+R9~J*0N|-TZE*a&fB(0kp#rH@d*W!p>XV_g*$0}}tqh-AdLEB@Bhq8%aa?X* z+E_l6IW&naJ|jEocK-tmU3_WgM3zg8KkPPdshq(H9Q>4f0|$ZzJ8s7l>VLYOFJt;6 zMl+~#p~!DGVA20*`MZ^+Yu0IFA|!uDa9}ZqKn*zBQmhC7Ur9%xIP}qU04ww>lnKyx zdgn#RQ5p6tKBLRS({pYLVg#f_Z z=u}G=Qf7*x4o46^JYAnkYW21SH}bu0i`!WF0DaOuXbhqDqioh-g;{ER<_h_SLvd~X z3RzL@HWTovWWuP>T$G@?`hFR4qf6KSN0;r}{cz>J+K6yme$eSnd%BRcU3pbEA2*$u z2;(3r`B|ypn1J49q6}W}xjSwy*%-{m412-a zYXIoJG7ZaX@pa}*;f&P~`Q$PTZ`{B4M+ZGn14AZ`wof*263PdYlIQ_n9f$;N*F$5u zBNr}^gUfsdn?-L8r>;h=y<}vhrj zq)5NfOA7V(R^DX}{6_w96(H6#!PBY~uLW=9U5|>;@D3*1ujO{eB z+|B^Kbwn3|B;>oSbjsU$&PLU@6-!lh2YQgH#wlEjr2oCCfc+8+7VaQwO>z2WDV~(|Ddt>`o(CmIKaY#R2p#=x}EK5mq~56 zY7BC(V%Dzh!LKgr1GUK!c!3Kg`mDinh(yU_xo!f z{5(h52L-#e`&O$iwsVFXm%A>qnTp_oajw`%KU>@LrU1PwJ3OG~+rpdh zRE6%Q!NUdtS27x<+(3tmsflLfLoUqU1l#i)_05N5tMjV@z}BFiF{5Prf!CJ@D606e zPjrPhLN)lsIJlHkb-o#U2o8q@ITu&`$em53)K>swrowZUNK|M4zZ3DMf5xW^w zCI%GJ?0-I-eK~{O@44sK(f}=?O~j|8Z^&;L#S4>y{cc=96oGB(4_ma}FV`V_9Nd=n zw$>ae?IFx*R0OQgOqb7^2JGLP=dA^;fB8m6%z4nuw=3vgu`zB+1SJ({;_ zDXa(Nw{2HGRUyHd<@~YXfM!k=DM#bXneySW-xTrgePN#oF@SqzsP$~vmun{W7Hzt9 zc?bLSd99(EFHZGvii63m!qxne}uJUUbX2 zvXoTK*0;$T1r66loJqPg@jS)BCI@3K;(3<1oGuA zi7FX6fP34G1E+AFe|jGps+5GhHWE}<)-6{M|(EJLg3tmTQc%;vkTal{o7 z9Y$iPsyoy5d!}~)K-cRocP~dX*KplRa;?^xVX~FDs+|#77}Ai_#g#)H(K$y~^M;l0 z6Ka?4V_6H#HMCp+Dy5br&IhHH_Q9J>v%<-&p| z@z`NsUai3+TF6DEXBLxaI-!JGP>p@2)m(@8^w4dl>zVlAmt)+Pl=CS^uln!mJy;*Z z-Ft@yiWNtl8cx^bLdlTKZD#bOBq;l18K2SSgy=7 zKD;olGMkGOvy`LQIMCgnE|f|5rL&E-X7?afj@qma%Cw>mYBND(g)};H@)e3u)03OB z>P2C&WC&YDQMAk?STi=Nk_UE?lTY;ki0J@!pP+mnm*rHc(3MMLf*WiiK3*mk3N+CB zN)UoIVxwrQPA5zdbYWK+*?VKFwU_i@Fe-mqWytaES=FQmJ9=i#oA%wVwyDe&GhHHd zI1pE;JQCYwxMDf6V7;7xYLk?#vN~9Nb&XAc)vGY%xlWDA+Ba-;b;=nsC{IW-G@!&_ zQCpq6IH1K|Nr?Qm-M@S`zbK-)YCOr+V(tcw@=K#k8^3zT7IGi(q(EbBDF zOJbc zJTrbcnpW{7dpkiNzzGRP2KOA>T_}DUBsq0B#UKTIdx0Io_wp&bi8eI2DMcY&ZQko_ zFpg?Y;IhE01`nU!Eg)Rs43v+mUsAV4z~T`a-L~N%urX0GiW`41-Isv5$+SDc0!DA^ znnw$7{@g)rPOl&*r|%Aw5mWNMu&3j>A~d#e2Cc+8dFdl*Q`;@Cf~^suB`LW*6p1wT z(DV)wcpS!b{Q_mc`sCRge9Gd(2aayqykRH_UEa63-*`y7Oo1jroXfFZjEsA{>^Rmuy&M(g|15Ae7l{}{Y48;WK>q8x zE3YUiR0B*b^gpxkk@lLJTOxln{p5hBkPe?AH0GNhd7 zugC93(Ya3Sk@%E4J~llhW)w4@bJkT5d7~V;_WU)wzr+VUOI!1?m!2LVcP{|xABe}* zu!VMca>6O$DXDSYZEtc#%hvB~+Y&TivRZ7e@}WUG-^UQcvVyqSnNeI+r542r7g69q z(I64^_chQ5y1cT$U>?Z_$m!y6OIh>L%n*_Fn%(Px3e@X@{A05u~EU7;HW{w-2%!8X5&vJHj`wC*90` zU^gXYgiTlBf4Z> zTRlhwY?0V@mXF8>Ri^4%wP29(o0s)?AmR-ua{_(Jr;8iOZ+gGhK5%@Q>OrM7ntKrW zwhf@+Z7$1wllu=Hb*0n&D*VvwPy&@JQX!=m?Xe>_l$OR{^`x!o3`5|9* zWxwq1OLRg`jO+qd_Gg4}KMr?$bCXlC#?d8}^^>X$^z4TplvXFf2a|r(_n`=&UlIVKnb)Ox-1e-*nm%5$o23UYpUK0i^+E3oqXM@2obk|L|B50bGETQKCiyN7Yesy zk7e3@`v{V#scsfqt-dcl8f;d?MN~&eZAfJ-7-|CypEWs%O}c~YZQe!hqw`i{=Z1?0 zO;6!#{1~8oyOoQ3F_G@`>a7}o?%Z=GsO3iz%2{{GInYzkQ2N``1T!^Uf>1p)M{y(U z>A8{e@x8H^=>{AVbPA6&>nR^vdev*4Y%=lvgJG+g} z;AZ1NW=4?D9i2;_DSA!vLdmV+p;|AIe}74>-lxR4?!`4M zf79z@c*<3bk+AV#oPT9?5oN!f7$YPDDmSt~aK(UmG+(y&4gvSFv+P@|Tx?a@)jjzQaNFw0C)-ze@y zdtKhgGwr!*Z?iRg?cV1V1v&E9JFh{;Puxt|_eL9Kjp*oTpWs799FiYo4X%vP<`C*IFNruX=hz=88MuQ`GJf=pC6^hvRv4-fNNnHC(X|)J79xDL7 z3aq3Z`Sz?Odp#IBAX8YA0LG3^SA-Vnx{m&r(plV02Uv%2R$-f-E|C;Xa zTjsym{fAEAwg|t}02*LtP&>x^g`B@c`ezNekr4m?47EefU#HKGPCMxRUz+a}3jA|^ t{|xod8vI($9YTc=Jz4)fZ9|@~flf99i&MG~?a=46A+xyw{sj8={{fw0xv~HN