From 7d17da1bacf8c1a2d6d4c557059b615f7d0d47a2 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 28 Apr 2020 23:51:49 -0700 Subject: [PATCH] stuff --- code/__DEFINES/combat/block.dm | 6 +- .../modules/mob/living/living_active_block.dm | 10 +- .../mob/living/living_blocking_parrying.dm | 94 ++++++++++++++++-- icons/effects/block_parry.dmi | Bin 0 -> 37728 bytes 4 files changed, 96 insertions(+), 14 deletions(-) create mode 100644 icons/effects/block_parry.dmi diff --git a/code/__DEFINES/combat/block.dm b/code/__DEFINES/combat/block.dm index 2877d983f3..b489662078 100644 --- a/code/__DEFINES/combat/block.dm +++ b/code/__DEFINES/combat/block.dm @@ -21,7 +21,9 @@ /// Meta-flag for run_block/do_run_block : By default, BLOCK_SUCCESS tells do_run_block() to assume the attack is completely blocked and not continue the block chain. If this is present, it will continue to check other items in the chain rather than stopping. #define BLOCK_CONTINUE_CHAIN (1<<8) /// Attack should change the amount of damage incurred. This means something calling run_block() has to handle it! -#define BLOCK_CHANGE_DAMAGE (1<<9) +#define BLOCK_SHOULD_CHANGE_DAMAGE (1<<9) +/// Attack should scale by this percent, 0 for no block and 100 for full blocked +#define BLOCK_SHOULD_PARTIAL_MITIGATE (1<<10) /// For keys in associative list/block_return as we don't want to saturate our (somewhat) limited flags. #define BLOCK_RETURN_REDIRECT_METHOD "REDIRECT_METHOD" @@ -47,6 +49,8 @@ #define BLOCK_RETURN_ACTIVE_BLOCK_DAMAGE_MITIGATED "damage_mitigated" /// For [BLOCK_CHANGE_DAMAGE]. Set damage to this. #define BLOCK_RETURN_SET_DAMAGE_TO "set_damage_to" +/// For [BLOCK_SHOULD_PARTIAL_MITIGATE]. Percentage mitigation. +#define BLOCK_RETURN_MITIGATION_PERCENT "partial_mitigation" /// Default if the above isn't set in the list. #define DEFAULT_REDIRECT_METHOD_PROJECTILE REDIRECT_METHOD_DEFLECT diff --git a/code/modules/mob/living/living_active_block.dm b/code/modules/mob/living/living_active_block.dm index 84e2f06329..f3034f00f2 100644 --- a/code/modules/mob/living/living_active_block.dm +++ b/code/modules/mob/living/living_active_block.dm @@ -134,9 +134,9 @@ /// The amount of damage that is blocked. /obj/item/proc/active_block_damage_mitigation(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) var/datum/block_parry_data/data = get_block_parry_data() - var/absorption = data.block_damage_absorption_override["[attack_type]"] - var/efficiency = data.block_damage_multiplier_override["[attack_type]"] - var/limit = data.block_damage_limit_override["[attack_type]"] + var/absorption = data.attack_type_list_scan(data.block_damage_absorption_override, attack_type) + var/efficiency = data.attack_type_list_scan(data.block_damage_multiplier_override, attack_type) + var/limit = data.attack_type_list_scan(data.block_damage_limit_override, attack_type) // must use isnulls to handle 0's. if(isnull(absorption)) absorption = data.block_damage_absorption @@ -159,12 +159,12 @@ /// Amount of stamina from damage blocked. Note that the damage argument is damage_blocked. /obj/item/proc/active_block_stamina_cost(mob/living/owner, atom/object, damage_blocked, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) var/datum/block_parry_data/data = get_block_parry_data() - var/efficiency = data.block_stamina_efficiency_override["[attack_type]"] + var/efficiency = data.attack_type_list_scan(data.block_stamina_efficiency_override, attack_type) if(isnull(efficiency)) efficiency = data.block_stamina_efficiency var/multiplier = 1 if(!CHECK_MOBILITY(owner, MOBILITY_STAND)) - multiplier = data.block_resting_stamina_penalty_multiplier_override["["[attack_type]"]"] + multiplier = data.attack_type_list_scan(data.block_resting_stamina_penalty_multiplier_override, attack_type) if(isnull(multiplier)) multiplier = data.block_resting_stamina_penalty_multiplier return (damage_blocked / efficiency) diff --git a/code/modules/mob/living/living_blocking_parrying.dm b/code/modules/mob/living/living_blocking_parrying.dm index 2261bfd922..5c3b8155c0 100644 --- a/code/modules/mob/living/living_blocking_parrying.dm +++ b/code/modules/mob/living/living_blocking_parrying.dm @@ -13,6 +13,8 @@ var/parry_prioritize_martial = TRUE /// Our block_parry_data for unarmed blocks/parries. Currently only used for parrying, as unarmed block isn't implemented yet. YOU MUST RUN [get_block_parry_data(this)] INSTEAD OF DIRECTLY ACCESSING! var/datum/block_parry_data/block_parry_data + /// Successful parries within the current parry cycle. It's a list of efficiency percentages. + var/list/successful_parries GLOBAL_LIST_EMPTY(block_parry_data) @@ -118,20 +120,42 @@ GLOBAL_LIST_EMPTY(block_parry_data) var/list/parry_imperfect_falloff_percent_override /// Efficiency in percent on perfect parry. var/parry_efficiency_perfect = 120 - /// Parry data. + /// Parry effect data. var/list/parry_data = list( PARRY_REFLEX_COUNTERATTACK = PARRY_COUNTERATTACK_MELEE_ATTACK_CHAIN ) + /// Enable default handling of audio/visual feedback + var/parry_default_handle_feedback = TRUE + /// Sounds for parrying + var/list/parry_sounds = list('sound/block_parry/block_metal1.ogg' = 1, 'sound/block_parry/block_metal1.ogg' = 1) + +/** + * Quirky proc to get average of flags in list that are in attack_type because why is attack_type a flag. + */ +/datum/block_parry_data/proc/attack_type_list_scan(list/L, attack_type) + var/total = 0 + var/div = 0 + for(var/flagtext in L) + if(attack_type & num2text(flagtext)) + total += L[flagtext] + div++ + // if none, return null. + if(!div) + return + return total/div //groan /mob/living/proc/handle_block_parry(seconds = 1) if(active_blocking) var/datum/block_parry_data/data = get_block_parry_data(active_block_item.block_parry_data) adjustStaminaLossBuffered(data.block_stamina_cost_per_second * seconds) -/obj/item/proc/active_parry(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) - if(!CHECK_BITFIELD(item_flags, ITEM_CAN_PARRY)) - return - /// Yadda yadda WIP access block/parry data... +//Stubs. + +/obj/item/proc/on_active_parry(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return, parry_efficiency) + +/mob/living/proc/on_active_parry(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return, parry_efficiency) + +/datum/martial_art/proc/on_active_parry(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return, parry_efficiency) /obj/item/proc/active_parry_reflex_counter(atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, list/return_list) @@ -139,6 +163,9 @@ GLOBAL_LIST_EMPTY(block_parry_data) /datum/martial_art/proc/active_parry_reflex_counter(atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, list/return_list) +/** + * Gets the stage of our parry sequence we're currently in. + */ /mob/living/proc/get_parry_stage() if(!parrying) return NOT_PARRYING @@ -155,31 +182,63 @@ GLOBAL_LIST_EMPTY(block_parry_data) return PARRY_SPINDOWN return NOT_PARRYING +/** + * Gets the percentage efficiency of our parry. + */ /mob/living/proc/get_parry_efficiency(attack_type) var/datum/block_parry_data/data = get_parry_data() if(get_parry_stage() != PARRY_ACTIVE) return 0 var/difference = abs(get_parry_time() - (data.parry_time_perfect + data.parry_time_windup)) - var/leeway = data.parry_time_perfect_leeway_override["[attack_type]"] + var/leeway = data.attack_type_list_scan(data.parry_time_perfect_leeway_override, attack_type) if(isnull(leeway)) leeway = data.parry_time_perfect_leeway difference -= leeway . = data.parry_efficiency_perfect if(difference <= 0) return - var/falloff = data.parry_imperfect_falloff_percent_override["[attack_type]"] + var/falloff = data.attack_type_list_scan(data.parry_imperfect_falloff_percent_override, attack_type) if(isnull(falloff)) falloff = data.parry_imperfect_falloff_percent . -= falloff * difference +/** + * Gets the current decisecond "frame" of an active parry. + */ /mob/living/proc/get_parry_time() return world.time - parry_start_time /// same return values as normal blocking, called with absolute highest priority in the block "chain". /mob/living/proc/run_parry(atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, list/return_list = list()) + var/stage = get_parry_stage() + if(stage == NOT_PARRYING) + return BLOCK_NONE + var/efficiency = get_parry_efficiency(attack_type) + switch(parrying) + if(ITEM_PARRY) + . = active_parry_item.on_active_parry(object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, return_list, efficiency) + if(UNARMED_PARRY) + . = on_active_parry(object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, return_list, efficiency) + if(MARTIAL_PARRY) + . = mind.martial_art.on_active_parry(object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, return_list, efficiency) + if(efficiency <= 0) + return + . |= BLOCK_SHOULD_PARTIAL_MITIGATE + var/current = return_list[BLOCK_RETURN_MITIGATION_PERCENT] || 0 + return_list[BLOCK_RETURN_MITIGATION_PERCENT] = 100 - (clamp(100 - current, 0, 100) * clamp(1 - (efficiency / 100), 0, 1)) + var/list/effect_text = run_parry_countereffects(object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, return_list, efficiency) + if(parry_default_handle-feedback) + handle_parry_feedback(object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, return_list, efficiency, effect_text) + successful_parries |= efficiency + +/mob/living/proc/handle_parry_feedback(atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, list/return_list = list(), parry_efficiency, list/effect_text) + var/datum/block_parry_data/data = get_parry_data() + if(data.parry_sounds) + playsound(src, pick(data.parry_sounds), 75) + visible_message("[src] parries \the [attack_text][length(effect_text)? ", [english_list(effect_text)] [attacker]" : ""]!") /// Run counterattack if any -/mob/living/proc/run_parry_countereffects(atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, list/return_list = list()) +/mob/living/proc/run_parry_countereffects(atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, list/return_list = list(), parry_efficiency) if(!isliving(attacker)) return var/mob/living/L = attacker @@ -215,6 +274,7 @@ GLOBAL_LIST_EMPTY(block_parry_data) if(data.parry_data[PARRY_DAZE_ATTACKER]) L.Daze(data.parry_data[PARRY_DAZE_ATTACKER]) effect_text += "dazing" + return effect_text /// Gets the datum/block_parry_data we're going to use to parry. /mob/living/proc/get_parry_data() @@ -225,3 +285,21 @@ GLOBAL_LIST_EMPTY(block_parry_data) else if(parrying == MARTIAL_PARRY) return get_block_parry_data(mind.martial_art.block_parry_data) +/// Effects +/obj/effect/abstract/parry + icon = 'icons/effects/block_parry.dmi' + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + layer = FLOAT_LAYER + plane = FLOAT_PLANE + vis_flags = VIS_INHERIT_LAYER|VIS_INHERIT_PLANE + +/obj/effect/abstract/parry/main + icon_state = "parry_bm_hold" + +/obj/effect/abstract/parry/main/proc/run(windup_time = 2, active_time = 5, spindown_time = 3, qdel_end = TRUE) + QDEL_IN(src, windup_time + active_time + spindown_time) + var/matrix/current = transform + transform = matrix(0.1, 0, 0, 0, 0.1, 0) + animate(src, transform = current, time = windup_time) + sleep(active_time) + flick(icon, "parry_bm_end") diff --git a/icons/effects/block_parry.dmi b/icons/effects/block_parry.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4a0ade5e6125b8113b31db68c62c16ce04a6ebc7 GIT binary patch literal 37728 zcmXtf2RPf`_kWb4RjbshQKQBOwQDD>8l{L)S`;l+dsXciMQa5uv1+6>Yqw_YJ!&Mi ziz20@WL z>Ev>%!#vH@{j1inQ>J2ew>QJSz1@SpPvGYM)iwwtqrkPcuWU3-uDaXLPCg2n{OPNg zSLUy&dX*_BG;x z0lv?fkO%8X!%_%t^IQ>RSZ(-g#u*d~hP}}30iXtoO!u3;-BXka0^I=VYu|ksl)Jqc zT>o4zOpIvnaXetFuxy=Uk}eWM(<47A#c`p*;ARMmJT3QY+uNUwt{W~WNN;zqV~WwA z>tFA@j$ZIO{z_HI_}UdeF~E>hTG7Sdm}>Iu4o6~Tdt=k{bz32?N`hX$WVIP?`fVsJ z(lVEDK88Ni83-UOl11lR17$Q8^Svl_w@)a?7lA+LMW<;pomi`~EG*#~dG*pqE{_#m z>YpNP6=x6_Ub;vc!7QC2wy66IruBV=M3bIXJ#wG)TF%S<;DQOM9e(m|;LgfQ0fZ5G z5lI8_{^5cWSNE>`-rcN1?8Pv|6*%$t>#^}ecE!AI64l1c{At0qauteGDH=R476*ND<|s(#xp~1 z=|z&GR@Id|g?vk!suiAYRqIQt>vG9m)WtM{o4Fv*|&l2Saa;khEeonut81l9$WWX)wam6a8E??$uj+5zZ z%1hK>o8#EG9sVr%Ae}07AUMCm9Pf*d&HbXvz1ok#ejMlUKJ0QEiH1f)L(cC{9kS&T z5&{k33%lxRdqi>UcM-Io<_<)YDm>C!>?R)y{ld&2EjysmR5j0#ben+c{%Fo;UcPFO zJ>(MIVER)vwoQ*qIF@A~&gAw}I0t-Sp<%+-0;=o!K@;*|vNI{|K)_P3f{yB=W<1hh z+EZ!Z$q&mNg{0ecsJqmIR5jjI`y7*rLJzv&_ zE>nB_0`^GG)blgPp~o`z^#L?@=^GDI1QeV|Yv<#uKR!k8lzE+UE>euh4Gg!W(oLNu zrfp4AM9~>$DAzSJPqnEHCVwr}n-^c99!o0)U^G;^n0QOFFmdu)D_H}q#jJ%~&uC-D zTMQF>83=yJUe=RPBpTdSb>GQ$Hk=RgNY~S%ytSU+2$gAua#>6Dhs_ek5zrEHiD6

J4@EMl;XW*QV>SfM_Yf zKU(;954B0cAuafFI6Ler`ATkl)pX_+&KK;dv75a@_8ljikFxy9J>q_*O690)TBrbn z)O=h>hw@Bh!$7p(XY3?q5@XKsRgp+>`zBlXUSo=%gS7d9azOLA)C&7{Z5vZ*F#Sl1 zPi=qV{J$qv$%}i}eyVPDk-nVl)eoH;^@)dTRJLLB+E*Q+ys&MY!14lE_vr1fFO*UFLR$VpVne<;@dt`f-h@w_;?pCLZASfeY z_S&xO{ieL7m!QHZVg6G^{cMHY>)58?6?+pzZ$$0L7|qcy7f`^71ckf66}^SvIf7k> zO%irSYFbXl%+F(m46N|0iYvb8lq72ycX@lu1ya(E|OhR}W#ES5n{vhJ2zk=Nf*m<9{yDbiKLze8T>XSjFlt@$%cRFu>i1|&8i&(C4y?Bm|I3MeDt$ZU8IxV?ekQCKPOoWoDI453N zZJOl;VR;`rf2HGWi19GCg1zV8k9}1Ab9ya!(;iRe%=)M7r_}Er_*%ft=_g_|OdZwb z1{duc3O1_Sj~Xa~MBJ5gZyE|?cV`+ycJ*pq#=Cw*Kj&Y;2q~fn5wP+Xe9g+BJlmv` zu_J$q?HbH~r=cdy5l`{M*D#;EM^VI{3>A%-btXeHYl#|~f9L?+#RQFh%1cqu{u7xh z5l2?Wfe?~V;q=O$LQt-Tym^K_D)k_KuDQ9q`ai#tEA5$ANu#)`zJjp*|Ju~-TxTtx zIwIRn+;AT|_sw)uYFfTv2cq32mmc;q^T8s~Eq;w#s9lrt2X7G7*Nh%nG~~j?UOq{A z^I7Ng?Ur3$%9P$hcL z4u4=IN1TqQgdG6q8y#aJ^1VpE)$uFO)goEYQvo&N9mOrwT!DJ4MOiYPJ)M2hmamwb z;4(0J`6}54in0IyLudEoXw7a*Ev1U|XN0y`sz{7>#$Ecst@+OAG(mr%CV&8&STusuP@l!?u^^#-;uCH`OCW}KWsa5bYbs`t@7Ee z+;U~=P0&ZfXMde+kL8&FrL@D%>0I_*X=&0XuCXKWCXrG$uh)o%uS@(PmrMuO}L z;^Ra5a7){y#(k-9DI@bspbN^;1>J6~CJuK4t|m5G7}*5+o5xGqH*Sq-QasJ#8`JXs zA{4~%%TojhH_Y&oK@7%b)2%++d9Pd1NFDU<8}}bZ%Y~S$b=|YwnU6X=W}%1VoT96> zX?Ys)ovm2h#XB_5*iECpvB1o2lQ@Dn1oS8C)mJb102hDiI;rAO@~zIN6L54OKdnxN zW{Yeqp3Vj}{}O6DyK89Qy6hmAAo;+~@6XVCf$NVPYuhx;(x&$egxxv=Xnw;7gRRz` zR8?Bbw(Nfe94XWaNmAT1N;VZ$Q*ydLLRd=aeoHGae+%^l83&#pbV(+t*Xr2 zv|*(?9Px1t^A&@35m|qOXv1#VwpJ6%T5%_M9CWkAOVq-Aq%kAUqtY_(tFG1RZ+3Ft z=`oH1!@Kh71gDnRz!A(pUi#qSq97owoB9`DqR(q`2}8ZiDYwGDKd`H4c#95SR}fIe z=K3xB&HVN}J|}kzdoMKkVULwA1?>KcKR=p`X!!QhW#eXH`d8Ige=wV$qGLsCzMWj_ zJUBn5{H|%=a9$?ga+JP*6Elenw9k{K*jZZ4D=dRVz9OEVICy$o&8Q}PlYx3y-xIgge%{I)?u?PnAGgK6`RgJ5 z9Ee!ifg8_l5*y26D)m}Sh0E6ZcqVzO)Vy=^va_iiuh0wLaJT|;#PfIYFbwdYrfI#R zVdIzM*3r0CHEW}Ysl{e4t^B497oIQSsLlVYn^c^UuB6LVHRVby$6{x;bQr(=B{esF zyV6nd=3xPcJh93pM|Y@YBB{J6BS}e@b~&%0=91`bht!J^cGM^k3h($s4;|vOHSuY@ znbR()8w%U6p_~|n9*3QymybIj^inQGX zeWhE;w*>gx@o!{^s>58rUJ{a8#n|M)p{D_|13f_+Q37Y-mY0*L?n*A`Ubd2O9LU=dwcPq@X5i*syn`4a@aFol=&(M8cdOC`cs|-xGs(N~ z>7ib>e8H9!PSM@QYN|pKHo4OC0sTeK6`#bO?lG{A6(Y8AE-}Z7Wvy-?Mmcwy-=NmDYGs2$jDX=4U)tAHZ zsw0xZ!3X$>zbWT`QrGNu|t;jA7%)iuv#{m$piYPbNuvBNmJNo;F{FtoLHJwP!Dttz)r(8w}h(S6q&9 zp>hPd^Km(TESIE;c2OFS(xTffrg>gT zx6>y|-j{Ew30@1rsbDd=)Q0pb*gNiwwql<=RqLxjhO(clClllr^*4%KTqo-_;@M^h ztNt)PvhnrBa$|-cF;UL#+3J>K$Le>P5ro*zcsBr&2p~pnJCdN zfg=h^h4P`pqrMn78n{imImR3>0l|Uxdy3F1MWmzpocHG^J^dB)uR{l3_}5Q7TpfS8 z7#Ce|4GPyQbn^t68QhKIuzd9B*%J%@+x%OFdXHuVJjGlso3%gFBChI6da`JJM40N@ z>{O;NUB7Ab3G}WQ5#`6!cFZy;*C$6eAao-Jbb)4ot2FOuz-{}ho|t@kMVZOUw~8He zPxtoSQxG2Eem|8ah6UQfRFxDu(V+6+bk;F_b$I$Ywf%L^q`F3i4yF!u#^qyJeX;ox+74rYQ*^zu)*COYj(3mp%zxI$eTXM_q~SB|WpVxCYl1CZ?sFZM3eh zzwlQTpHK+i*$|yi7-^KVcAu6It{*oND?V6~9N;oB5Y%V8Kf%5te&J@ir9qVcTO{j! zP_SbcH{FbSGz%^B)2hJv5N8W#UQiIon^o6#R?MVp7UzQ&z%!?0ax{xJEq zQ;hmn-q)pO%qgaI62GW>&TSMqR+ktN{QC{s7fB&6pY7WQF8Nau&oepg_UGO0368PM z{85}8_=|p!S9>}yCyz+zyzlPNCh>S9c3-ysuTD}IdbpBRdg-Zbb4VyP9~4y&eLqxQFX)Q<=xRP2mDOU5 z7PqIk+Mhdt2FeyAPkVn0NL1$m}EX`Sz4Ut zjTkCH8hYUyT+~l-adbE;o0!}{ek*FxP13qz7$xik75Qw7$p7pQbmiV>fxHstEt0b$ zRdv{6$}EGQ-)TN2iqj(;^V<9Dq;=^q2ibO**GY=^4%=G5wGo3MyvV>^1>CpwVRuXP zpN7(f?WZc)NMwVbLLIS*QnP$Ac{iU^CnGbu`I%a7&h^_y)D{+Z7wSR$AEju6OqdKa zoJvnw#X%qw4n6%*+YdU)gr96Nf(b&SjwpwL0+IDsFH|11(Rox|tWx4~1mbb#F&;%7 z1cc+4ICcKP+X+G`5)1fm@p1z(rbem_@PTCAUpi7pSx@6!Vq^um#JjWPW5jhqcUUi6 z`TO$}`|E2cQz7GH_ik%yl)x#7N%#t@W4;c%xN!c;kkB9Ai<#j9VAXp9A>s0CISTl3 ziIXqJXS|pzII5$a1?=mO5Sz!3$ulMWV>SIl6pljnowk*ibuG2~0b6I|VW&rV-ycAV zuLbY%;V>79U%eXK2_*kom$q3KFTU+n`^#z-$R@A&E4^+h|1BIrey^FB!_g#jYqT}{ zC7zfaWSVM4GgT6QWcy;AZi({R{@dD24&;0bN1U#xOme*IdYK9D6aE>?!5NzZKKOB8 z;-ZJn`@*0Hzw)LwBV^QvBWpqHX$JN*&lhTt$>^u%5;#z>^j8G?<=Jv4`BL?C9z>)ay%7}}XuP;`gyl@pYj_?l3u#SwN zO1Z~&RnvrNRZjuc^dcCnppe_2!^ts8IV{hloa;gM0atyPJ?|3;Utx>bOLm5w&MB-t z&H5AkHlcfTHnx|@pdNVkO?@%X<*mrb+woylWg3uLE}wj#4{RYXkldQ%)wWR+zN);m zC!hT)&tm3&VVI=#4};g6YF|)2i-F;PAB{N34iVt%PE4w3UV%T1YvV3hRGtfPheLz; z#Xkkbv&`I}c~78)*9}=kC)LqtMAeTv>cLiIUG5CIzo0iWZ2lR711TF(8@RhHaLhMe zELQt+^z-a~s&B?~3H=H7Vu@po-wA|z{UD7^l4Q&m4#B6_iSLE;p(HipUlDNLz7p0o z2Ol&+(2J4vy?|6*ag6P*Tt!x%AHv?_zg+;`05YoU=vN-+5fcUw6OrB##RBz&f?RGU zy1idy*sFuT@6ors<`F5ng<&>LUeb*obJkbhI>~d5YFPhS;{(8hFqo6m8lnR};hi+4 zvcByAcS)eXiL%nU)sIBCTG zgt)MD)W{qG)NUtSwA*r8T)~EN!f;a_Io-n9_9OqDoWPrSy+Db%Irha?UU&R{1V|;X6Y|L)={bBW=E`huBFZ5#^-JJ{KN!8Nvd8R3=)wbi$oeZv3`L%3L!MYPt znjP2If_*=C3Xi>eKD~D!+u$~?`sf0PikXJZFq#ta>(#1J;Nr{GF-nHt@bd|Yib~D+ z2zRS1!y4%O8P4CZi5fD=Cj3Sr=R8YAU+ z*x?-=(vb83p*M}nQy=fls?lbOMfVJ7bZZW%i}$Fv`EdsO+ywE+y~U;Y9GFy0_X2Qp zJ@Ud%(}+wbZ`dy7{8uplFJ^AstslDH`%CV{h}43ea((GH?7KHJJN_&VSmT#^v5@0t z`%;9qh7m!rwoW?MlZSx6lPcRcMoVE*s9g0a#|g1qvkpN&AcyneBQF2 z@?X4dBrRqkT@%`Sed#nmu=CWp81aISlAIr5o?5~Uoz%cuWxUYunN(ytXLC{|^IrLp zd5};Yh2*e$74E!4P%Fbm%WSn|_}eCyl(p(x1kSeqW>jv&F5=G9F$?)nuW!%Lp`qtE z5!Vm14?cJnrMdkvhpo zO`T`a5%`YdvnbOEIsqe+vN0}3GXlYwIC!Zr#e-8_8?9XZr6Rf3BIfBGq0x}=&h!7N z?L1{(I_|KCyrwKQzqy#Nt=~5pV@z80c+4vV2Y1+RzdKOoq<}1pIs5IL&Cu6W=)I8C zCQN|7n;Tqr_KCSQL2HMB+Z_yyqr`<n{s>|>T^AMe3gJ+llXP~clG&N%a)zj zF_2qDL%LX7?p!B6b3SNOPJX33hY9qYEXU+z+WSwdM^hxbDLWVd@KZ?ufDVFqLNFSV z)kjVYzPucC;48mL3Of2qx~lj0i6=%C^>;46Cc4JPcia8FOy_2KAPpr0LkYo0C^I!V zn*wQNFt3g;uMR?2s@C@dpT0x5cYaS3e^@TOrge91cjJ;zRKQ+8XBu7S>CZO3kfl&a z3Kgmlv5Oya^vPGli3dH`e4ES)ry6QXnpxg?7&ztD?$Bnh3leMRY$orIj00r=#YcLy zv7wMtrRif{|JiCLV%Vj4be?rI8gk^ShvOP>VSgW|dsfI*Jf$tARvW;ZcojyheGnMm zAZ&$qlpcM-ygN70O6Y2C&aWwUvA}!cDQF3bZMU;X0gzVQgqs<7_7xOo=^g8^p6Vhn zg_*W34~$9gIbMuMhnDPlsjDa#=IJbj79!-kn=~nzCFJE&gsiSG4>`+(=a8J9rMCtQMoCY#5G|=}lo_JMSklk#xDR&F>G+C&PIvUx8^0scJqq;)J-Canp$87Z{ zQ@wa=&!vb(tCXywTkW@bImgYtQ4JS9WEI*$kWFL}T6$bj1(b50a5)2gXSn~2wGT=V z6mv@##zchhwMF;^s3VrAG2JG&nrBxOw&>+y#d*$#?Te|ch4hiMBfsXOw(e$u9Y z=3U9qp&Ad3Mn^&AdfwK$q(40YIgU3u8fOXw6Iq+r|8@87%&%qICxc1fp{c<7+z8^h z5MfFou63)rC)uh;scy9$^B<-F0O#f4(xjVQj4i2ACjl2t!ZemLU>Nl$83pZ zPfS{VO0>7!-h;l$h#T;5&Nj%2l;3NO*C`{lh8iD(@A%xl5Wx@P0o}N=)T;(2IyzI7 zkd>=7EKtgO*%R5I&a33r*8NE~4Bh9QU(IYgl;KC>LMlfC(vSZH-iSeNRq};IB0$D0 zcQHv#ks3kRyhA2xpdqa*J`nltc&2F}XXd}qpVp^F*hR>mh}9lyIJ50fu~#9qFeLm> zQcm3vgjx{xx-I}ib@f6PvQICPC1~r-p6+8O;JE8tYYUAL`#z+;kQW7wg47Rr>(C>y zmC_m@vB*_St3Pa>P`syW?UY&7K>5=ank)8Qgb1Av&d&!yB6n62WkgfJC-;l4-8wxM zpigsVfe+1V#vSJe<2xb*v}7A*NOY&iLi5d+wC*E^&+en0t$+6jYi_k8`#}q=q6_r8 z-+-Q1s|1C$@bF&VW=7SF@XnJrEb^tlS251~8=sED9UO14rTAV3-AlNC38Qc& z+$9f5!1#f1R3;a>GPt_030Layx66zE9~Xc>NqWD~*p-#cD4-1sxuCIlUh1`VF6?1u zWHJ;hCMduktZ2xi$iw9nJMe)fHxYD0i~e$qhG^U?79BSJ{)$T}DJStcF|dHN7iCN0 z$TJ!+BbW*7{o}LjFvkE76Y49bwEGc@j#A2se$VPPh_62o_-C#s&xccZ6o=up*Uhnagtd!xDrC0|@ShRu9rRUQ@{_&}d4?6ch*l>APQ zhLze>B$&PFQi?moSAH4MifL^rHztk0!xRFqN!lc#LJyD1PZ(Y%Fhj>1aWjpC)|kN_ zXzt|>hVu>0%r_c#auuJsg6Y9tKjOHZ%D%ph^rOf8&;>4=s@IKW{1*fvgH^Olr;|X^81t}aau<<`qg;&hneMCQSFih({HTmSpDd}0( z@ZkW)4(p{)Uph_jt9~(TX2T#E_i-S&rqOHBq0~HE8UOW%yjGvDyDX`2t8&iRFF$PMF(Sb%^~0s7(j5GHn$AB7$; z^H&(i^7Necx;_5~b$6mHS$tZq_)7NvDG85|8|F^J)=!j_i+O%{u~4UYHmIU6V9!^T zO!c(aJK-WEwOleuF41!ub=}hp8yQ&MYv5mxEwlrlS)b*~@hI>x*H1K-i^&_+Nn3q5 zH_t7KeWX{R1o8;tX9A~}k0i+{cuq4V-TtK-7X=Lg8~Riw(LaC5h2f0YVG=Hnk}znPWHiM zp>L{XMWMxa@dZ3&rF+oK|Gk{3YemL&&(D5$)TRZC)rt^zuM=5dqb|I3%O$QEPOfV4 zX%Afrl?u1@(=bFPpYgM0ZTnVC&qHpdnumeD01x42u~fs$uebSt7=@&xJ2IdtA*Ah~ z|B$u_S2^n}Zxl!JkH9c+E5MQ%qYbZw|ChdrD$`2~mT)RhcNF^^A&m^L3ZEjF;w`c{ z#sJbouZmU*5f%WufRreFS=>@}=pv6Wds)TH2!5s2O$)AEy@xl-=GXzgDaiZj9vE3g zH>Bxwl?M4=;Wx8InC6E+X2bU-^=8T-bJXgeegQJDjfh zVot(qFWizF-u|pRZ7KMCd?dChi9LK+Pg5WkMpQ!5Aiu=<`n^K&R-63c^fdfj3eLx-yT>$gT#M3}ihtcA~~^wTG~8p7pWmCC=d zq#BXHQ@GiU2zs!CX^aEP6wjK-#k4BJ+`)K$9DbuP6WyV&xYKA{)|QF(x(9A$ByHdR zQ`hPCAMz{>h~s|Oo{2a;))YY_vz05(10+=_St0Rd(9kVq&mrg7d}y(yUxBN#zd^C) zvXYTwC~yd;o1bHa4fNUdM2*=#=;ppbtSd$QjbFAy^xka!HRKNyYT!vI$=gD#bT@Se z{(A#C@8*LNa%c&RXLAtc19YM__G}Vgs??4c(S>?F)D*bb$zr7b7m*MRP*Ku6x1wJBjd%4I)1L%sumZ-D`owlC?audhESP#SZMf&k?@E_6g!Tro5k2 zjC^uZl?YUKi&Cjgqt@)?CUHH5u7B^R|}G~g>5JK zM`8sYtyc3tsx24WpRQ?H|G;po4Ij1OeTv~b-i7#J`ZL@926H*8P^_>Jzf)CbWa#oN z6KqnPdPW^T7{IgL?Fa`6#t43@FLY|D-%#Z&YaGHCXWDH>BO8)_3EDKP5<6V4n_Hyw zKXSB4k+hgj+x@4-iStR&@8+iEqi#rRAm#O`J?wj8J|B5!0j+w0IE;! zYym`WG!Fd$L|*m|nf0nfKo@kq(yDUV3Y@x|EG)8pm1YjVO;~7})`U+h$#h_P7|<&*z1D4J4qq-aVE;FX-MH zvSf;JamCwOSOh#tGSaLzw16H|*!z$5|1))Erzs3S0yqRuOq2;8Z^X!WK(O1*|3v#@X2X+>@3TE_au)O#yk~(aR}TQ| zR9!Ci&x0=}FLK&tEdrth{)yTImg)1A@RqaOx=FyOk4qoVJ8B|C#-7+br>6#m{KZhe z-y|38Zi^PTJifmXO4@#@!Jqj3`NZ~8`)Nb2A2E+|utaH7`%q~)_FPHEKs@0>tw^-u zcZ||(+xj&Ng|dqA`%|m&A0D!Wd0fQ3`>eC1=rA7e;&*;^63{(##g}c8b9cAf%xtGd zVjrdLX(tUjs%9I`FSZ8SUn4VDC5xt&XBz_0nE$llyqn@?ly^w@yrKgt;KdOjp@jT; zciW^a`OS%u#k3mHO+I@F7}%*uL_X#-+APnW+9Jw){t#cOD{PS>rbfI))Sry|v@?p& zuXcLyVB|Rfpt^@wtLI2gn+o2nFZgOwcqVRq7Ae(xb=+V#1^RGYa{8B9Vk|(jdVck++506fN?Q^9Nn21oUVGs~NtOTN!_DE$ot9ecvPAk{wYf6PDI?id zlhT0^HZT#PK>`c=&UsJV$ea;$S($q2sgf{aNb9V`)!keMW$pEE8=Z3D;b#Csqf??RA>YNv5@c>FS$zsTY^0 zjT{33R!izXZpyOpruFT#@(QPg@5TX^l5Ax2@1>nS!06@6;PS#aF;_KNGybBrk4yh( z%H$t+tKZ*$gLpL@vAY-;MjT0Nu^cO!Xz)niE@JA?)QK28KRXo=q<``mVlbhoYx=peXjz1>Q|({STtL!*bGeLU2g= z`=?q4yfAy^q=km9g#Le4uBNp#juq85c;sytF?K-uk0ZWCP|oGXTS%tNjak%ADMjHsF>giiA0`$Uj4DUAhK)qm$f)ynWeEmS?rBO&Qo=!t=TeR)H<125x1Qasw`F z#=T86Y**#th4}SmwjNR^hkywjb(nk7MQjZ|n#=T7?u+8m4H~zPQ%I%rl;o!?T4z%s zV@fa_wi)go*OV1=e%$cRZmNfFIlj?XYsOM}*g(2UX@I+m?0OI)5)Tb2^V^-U*=`*TW8!wJ=XZIeZwPPG~6C4ys>x=6zpGsWuk z9$I^S!D4ycSB+_w?w=47-N&VWuMZ=(NWSeYJt5$3ejW3UEmEF*$(F~gRh4=%Vtnbt zBz^}WFkK;8k9FK;W$4J+Z(ui*bbRQn?$lsuAW_lY;EV}fa^;0h5Ll1mj$q4#D)tF+ z$5+nkjtw&g5~c0_rN7mO5uCPkZIhopZvrrnb>NMLNT3t1E>UDL@Dmj< zbd(z2MT;G7UIw3^f{YZNarIYbGBcZ#w$1!o6z1uRlMv;Tg2=Ongx^UHqi}S=c`h+D)?21lkyL@AES4vP)sZX8rAX@#3V^ z^18ftM^|7x`x_f-VAh^HXdua&cPUg0^H?4q__tYc?2grsAo?pb$FL|_jL|Q?#3TE-t$lw>Qp1NnU)E zhg-3BXDsCKGaw7b3lf)j8Jv%2LU8SS-LVl&l%N0I0ks_y*$H#A`@cJpumFv8W@fRW z*yF+B2s5w-C@A7X2VtOx7W|=n*@$$D*pUg1Q0q`eo%}n#&v93YW#@r2>dVK+yJxsT z@E@?IfG4IGf$O3=*gWp0o8}8maKJ55cF|q-6#{vE$L43a(oG1PzzjhS1ky!Sr=fR& z6yS?7n4JBmPCbSfD05ep?{>%L18a<*Jl|OFJ$(m_C_jI7wzam3jK|#rw<|xr5BwD2 z074@W0*-;fem47I_gwJi2hWBFflBZMAgp8!V~>|(nYW1HdB*}Xdx8g)jTz=oluy_Q z9H)cqK%A_bL}~K)&&jycGFSi&;$y@BECAZgM`0KF(_2GwC*i-mX71K2{e4W>u*DbV zr_dKBzubg=I(L)_ebG^>vfu5j3F!V2cMlEN`H8}+6&Yanm0)-hF;*&82K>ixI-&$j zBOtCKZ_!zrt5tLEDxh^X$ay}AKg9uNQ&(y-9JIp%T8x3(8mvy3H@lJx%v<4mY+yT# zxXO3O%8*;2fYW>}_pVrZBja<}v-H^2NV^j7|7+^xiD}^SV z3>}c@lV|1UxPQ>YVxR9OPzL{{#!W<7=ffDtfzTr zx^tbfCf&3|W^?6zk1;opNaQZ;B?&T~d*}C2$OxS4=r6U7#MLS2A!T{-<<=NQG)Z`L zHLFkGP`p?XK!=-bfgeg&t8O>#u9$u};ki%$Sj;IvAy`^XP z?pO@c;7t7A9{0;{i5Wa1GDQm2^6Krmjk2YQsovVZdQB&uu0L|gcW|e(3Hw%)@^y%A z?}lXXdnZ>O;0Gwht{FgqEUIrY{bNcguH?0Gz(+O485`m%Hs z=W%wun%A{#!*LTuxDwLwKuDCkrvR($%ibgheS+4Dc8J7%TRlSWG(SU+B*N~{S?MQA zIlAU*yJqNGrPfLr{k%jD4LP@_oQgOk2ug)^zze@^k$w=Ew}Al+zyMk+{RF8(*W53P z4}j?_K45!!f%3Xm+_Z)=3mapZ(X{V3t#r&M`jcai0sGp71Tc3kSA<4uAX%wO_rekwY^uWzn}E!!xN;$qPyQ+agKc@tKRF?N=ROA-WbU7%94oP z7&XjBjdEoK6f(xQ|0o>m4`*^fG~#>Po$C@Nxd>mg&N`AR}9>^kr`}PX~wVQ z9=NX{;wqG%%!YEx?PGyy@x4JfSXXvCfRIj&Ux_pg}q!RT(5ivr65Sia*$pz#ioH)om~ zHPm;0!JuZJQ7LuVl0&Edbwq^K6`#+YxCIRvwPE2!f@hz3p3iPnN>mDMox8V_ArHaRUy4o5?1=p zY~VG98}0(9??*VK$Q>bA(BeAwbDb1iO~lqA?i;RxuA}R*wiUZ6D!4D0C*nu}dGgCi zrhWTm6{E@)K*VSvME8IEL;4su(gsfuDz(Z_!@EmVILQ%jalecH$NI=~%4QCyp~>VL zci|K0sEwes&vqW3H2pfBraqSAc%P33pJqdMI=726+dpF?+PDzD_&EebBC%We`JH6D z(_!~91kzF43Ju)F%WdaXvz@ygHT>To#27!63UtF6LMW@TKbjZ;s9zB+TnH%vc2m55 z23AGVjO#_PEl2dd=XWft!`2!au?ja-`s2*B#WzVTn-TbvCOb;)X-5b~a6o9ZfZh+K zkM9hfdjMQiXo`cJxGPxPB|B4*C{8Spq8)jDXJFcFtyan=lp?{x>!_`d2af;ffAhdD z1M`RlmI3;28k)Xh3-=D9~ONbK5m2anG~^0pktAi5j`{kPQ1Z$&H0 zB^O2P^ov83Zl|RwRz4IaFKP~xI)c4-W#_zKtB z-|@lD{eI>4JydJH%F92W6ysfTMJm%oP3L!XX6^jO4wux4KL^3*gNxxZn@(q+XScrE zb&k{-$CkJzOca?1iiHs1b>2HOp>J(&<@ovAo<7gMgK_3Mt?#EZpm*D&oaQV6jXo%^ z>V8lndeSS!K6FfpB87*{>>LNlY!SLjtxE4rD85nL7~0jwDXwmpErvil)@oG+i1hv- zYDb9yups=SKXEx|@;a_7Pj_W-++*&CE*JKJ!IjhaL4VrpTq?cx^p8b@cbv6UUIHs z8a*9Yzf}{qqcrQmNUrfe)tnfy4Cu7$Osq4eizO*9#@mglT;H7u{UDt=*3E@<*#53Y zVE$*q?|)9&6-(yjF4m7(5$Tpb*Tz65caD8zZ05p3&Tb8>@v#r!02|)=S^};e%@|p? zv`YYhwJU!0_pX1N;$HM7%_Xs$U4*nUh9B8q2|ro}o)K*1?PI-MQ3*JPGpX(`#ar4 z8Qr3$K!s5B*xZZYRSk#NxPtn+TvZ>uksR|c~RtvsLRD7365^(L9# z!W&^)yC~ngD3e_gI+%#tc!?ATjzKv_7%wsSYQJ6``#KVAteu!5ip)-y)nl9Qf-9)) z4SX697a%rPyIm*l{q&?5PfW(W7zJ}V6|BGK?v$~uJ6%ZRs=KD$wqKCaz z-E^a-c2@LGTBhr$=pS~ER~AsgM|DL=;cJ-4VnQgB#1z$(`-w7X;&!8ELx9#PV5Iln zrFHRfS~F)w&!puCf?@gs6W) zsG*3m38W?!XXri+vwg@}xYBxTsdd&RX0O&gFQ(kB-sa09U^We=hwA@~}40ogzd zW+xQp)|CcF5i;#M?Q6PmAwGTstr9-flPfk7fP-$~Dg9iO8fqjB_$I>4fQyOzUjnHv zw=OszvtK-mQ}%?gVBv1h%$U6uJjM=Z19P#yQ zSVKIGd+GP#LXiq<1jad~UMUULYKxlpMBTf+?%dRk-W?=we_nGI%W~i$Z_@~SNURD+ zZKT2XaJq7Qv=DVT>G#(y>*^|Q6mqbiI--b}_duU?TYb01?HtI)f?X5O7TR&ebWJg;E&67G_xvCi9zb;maCD z{g;f?+)q*WVpz169xtz)%7HK3VIivEeKC&kFNJW1s0|@Um|Q}cO29$ZTu0ccm34-p z^N_#v_)H&gTGlnLYJA~XcCQNKf>g?dvlGSfUk90<#b`P`VKvl)?`b5s`fdM}Yh@B} zch4f+@}1E|QQJo2s0FNH^e}cJJ+-cMhhWy_fgryAsoag~pLQT=Na!||5h!Yhp3DTA zvh79h&g|7WCWvzr>QdrLmj&Vcbhu0zg;0wHbcglpl#q72KU9ZQ-Mkk%8A1LRmP36y z`eQSY{DNI7#NWP&IN3eby#uai2O>d8`xi%>1bj0cf+|XaCY%Fw(-9WI1ZILwtvu@M zqQh+b9~WSfEoNK?-_bU@t>nH(1ptTNX17e4#V^u?(S%6$>K_*L@e$`;&Yxk=YUWR@J4#t8KHH+3g);kOxUW_v_5PpDYVOVp*0pDtCe+ z<3Q_<;Q`)f!#NcC$a?ZY(q75eVWz4Es5)+aRYan_&g~a^sk&?M^>V`yR4}GV)!m%A z>(WyWVmKp2<5GAKuIkaib*J>Pss^##KnCB`sU@rSyWqV6f2n=y7<^^j?IREzRN_cJ zBKnR%Ym$`b|Ff}n2ZX=%O{K?Gs&Wc|Zfw1>Bz@KCNc?{^y?H#8-~azVqA1xSdnO@! z$W~#dWXYE7A%yH9$v$QfFZ)iGFlFBriELxvGuii@#u9_E%rIttm-pxQz1^;VxLtG3 z^PKBC=X##!^KtHnG3Ud?dvMNw9G?;2mNU|%TBH`(%gVn^+*80tJ)N?_rg^P0HN@R;T`H~w2UUeAS8vEOZG$K~R>*;Ka5ueV@YM*&f$;&bP&>GceK zw^A;^1FFNrWB2O_L%yr!)!k;ISw14qZ>(k?trBH-{s41&ZF`A&1Ev{k9aKS+y!i=v zE1odzwO6CCO>7!IRmsat9B&vK8gE0l@IG-~Vy<|%k~q|K!f_@2NxC)_u%p{|WQ9vj z@*44S-qEI-Y}k0i#L(5ygk}(YE%ABtiSU*5$LWVx)d1%r8fy-7&$f~?laMVfshCh! zn0%WQe+lWAZ;K6#q41|kF7LAP3*}OzYH{87%=20(Rx_(8@P5u0I(L`wQdC=MWG(&SYw~^SX4Wf-g$n^u6n8?e(gH(bj1%QRMcKwu zj*A^`a5A(lpHNe9kW%JKUag#X{f@(#FwG3w&{t^yLAsU#CJ4dQi&x>t*CfTHLPXWl zAM>oU5_0v-;{JQ;c@KK#KfYoc?{OV;E9x0_YY#ijJ{#+|=d?5#WZg+q$ze@*Q2e9U zBz8n+scJh=z>pdKX1QxySMm zGePM6=pZ^NGZOUVeuymJ;O+Pys+O{vpNHRVNQ5$gzHrs{3xXaC-C=2EzMf--DWTTw zz>Am91&Q+w-iePvZA{Ekp+cEY;`s~hOTK4;+xljBpTHbsz_1SQ;oSe#gQm5R( zk@v6sdm;5u7bxL2RWgmAGGj?FE-YOgr@?&-_shKZ@BN!Sk(vrlxHX>^Tlp;vq7q(z z^T2@@apM3jB9nE$|2db-{df05Qi;^O2#PF;ZpBC0ox>i;#)1UYbA=K!39>9(kOAve zaSv_wM5gYE2mE6%CRgy@jzru zpFyT!%3R61R;PSiuNPT+koM(wuFycy>I0rGx-vB{PkwOh^G=WZ{ngsB7;+%(7b#Bj zyzf%~jjQU!%1u3NjdlLA?f}fXw*VI)VmQLFAW-iwL`R`Kxlku1UyaL^!*1IW7Mt=x zQfWG|^w$(Sj@VEvAwQ$7Kz*(zt6g%}xc^-q9sN1Qiw)gxGvF_1_MQ8jJ7b#isu>KU zKRk5=b;yr2N2#yQ!C?9TKBO zw`2J5Ms5Nkr!c!r!Rd4{mp{?9tWEOM(HPno(eeXyIRd6if z#cx^m2$s)W%!laDrQyI18?_1VmxXOrfD?;KMB>A_9 zI<$lV?j5m`TIU{uymc80xo&?~F$o93Z=xF{TbfG}X_S{w3-_fSvQ}ZFJHN`lsu;DBuBxY-^FI&<873(`eEXqQ7R&UextrfF zw=+VI%aPDsuRyyq_P-S^_D3{-L63G;CzD3lfaZB*!H#~}PIikN0$Bz-cs@I8+Erc$ zWs;?FtkZhcWFI(;=+}!3B`Pdwzo}?(la&6NkR_oT^>+W0xuqMA;^7x)4Jd{8c5QBM zsZ$;cJ=_}@^)zsAF!A3zT(J2gTljIN0g&*&6@r|nhAOaQA_a4N0w}qN{~WI9g1@R* zXx=Fqzo$2zCabAK)lyp8Z)j9d)-X|BnfhWRy--RXT)&>yjmNI1yyw{$(oBA^?!k>8 z%y=L-LC;=)$Oz1z|Q`e%;I{V_!6pL`yD&1j)s60s$)V^RE)=a;lXg6Bjq zZh4ovXnu&?$>JSK5b;?9jzcca>g0=QU;pZ42|??6&8ROu8no z98{iPrE*zS58pHxXfgI8x_{Aob|-_H0dW|P{at&>7xx+akHcm8W)-o-kn1wyv&aWIpl@expW16DU(q6Py;e*$L1*^-5_kQj*)5Ez&X46L)y;dKRb3{bCa)1cFTybHRHV zUUPj`ivsHX;R3D`dDBm))k3H$he=ZfJ-+1Qdnpp}nbJPDE50InF0$x{8RLBT*EREN-G~fVQ#gA$;-XfWwZtKAU4D6DO zuf9jz)tFSA8(Yv=rT{^`R-P$tdSl08=L-yz|098P^iuAF*WVk)g$k*jpDI}T_$;9` zE`S=SE9Bqc^C@*ikMnxg$m?v?p@%CbA2gV6Mtcir_+UD8EFKAe;8t}I2c6Og9QZBH zMydoJ-}|9xR%+sN+ZMeL_`~PVf}c>HgZHiavmEB_od;YZYqrhbQevpE@rNr$YGu>X z$S1jLQz}&_F9bD!EqIwC{kcI1&}PvWv_D%B9Imzmal{$;yzm!_`C3|Lz6j!ohNA zvCbV#_=6<7QA?ob42`>nn#BGPiG2kynMXA=h+Pa~clYAqxu0e)p3fr!Pt36`XfsM` z@;VBZeE%8`eu)y5d{Dorp(U3z(uL8m$#o!pB^{q@%%ZfDrw&mMK+14*71ZtTlW~p8o%6O(HsmV z(Ug`B6qaA}7#%oXobD%!>qj;u#yX}*V|vMS6+|fWK~KsTl?Y#8%TZlt_J&Gk;csUI zs64S%S<{e~0$A>yU{T+3U#THk7`x4~rgsJ9&2RJT%m_;kixFT51cv{{PjeeTt(R2T z`7F}0%H6sP4b4lO63N$g;f*N{yH{2UL^!*xPXADXNk>g$>PD7p1?8U8y>re2F|xm} zobT1~0EM7wE_Kt`31B|*>-caAlNEN3;wzcdP|b`zY|9D@aCF=FK#|fv+H^7NhZigURyWwY*c{ls3KN8;zqfLW$NG3yYwcu?V2qS>PDYXKLUHY zvfYYK$RCV36Nt@YfRDoeyV^uN+pUOwKUF9rS zkeGfGz-*9MoXI3EED>lzi@d}@Zhv%ciWe`JsaeI^-2>=5{N6J929?a(qVCAy9lmuF z$13vm%OJ_h_63`!xQi*iaWeJ2zLtCJJ}|Vo4r?ges2(H(FXKx}HIM_580fyQvNt-b z->a6QOa&L-DrKzZ-qNHi`1DJ*P|i$t;X&gQ_*2QqhsjwzdT9SwHdnQQ29OdY!fx+nLXy9Xfk@wC@IIullxAKSs zLoE)BdAG8Fo{n%-)7jK;UdOh3{jzt3ENr(1dEUD_AF$v#+_w|oMCdH3Q>=Gi^kaL{ zi^7QWlqVwuwn|y52fYf^^at8G`C^QnnF(daq>LkfW6Ir2uqr6%b^MC~G<_`#&?lDH zHdCc4zsJ^@H7+@X>)@A_?5+XfnX%f=^@AJEgyo0FLM}&wlC><4_C$r>e2w9d{n-ad z_X|?S7W#D#1s#P9)MR2~xqfe%c@L}?_@+Wx)lj!O@pn>`?^WDu-R}dhubVPkO^%e` zYw%*7BU}^5{EqdL+RCw1dB+<)C@t+q|S6IQ1V$O47luhZEt2MkHb1-m18gwA7NG!bDXp?|#HDk{| zlIv!FTb`AW4~meNs3u{jJyst)7+yc6wWR3+P#C?7F-Jwk1qlWB@4CM=cv(SPV3^nJ zDwl}j9Ds_ZrR91fKw}3rRi~SQdo=;BKTKkefe{I~4)yA6k2>iurPU*s%lCD>I6|j3I8H@ z@gWLUz<%c5z%z4Q%U|^}DMh;Xu9NZcWc*^b?=jwoEu8ROZEPUT(qEX}_O*uxljPk$ zLUdZRw0`ZY&ui_DA8Aha$X%X$eJfyV8vGdvwSaGY1pCep+oE9}q_sW=;N9}~J?Im( zw)WVZ2qztXrN-F*^|m6 zB7S6&fhjEi)zxkMbekhBFzSFSoc@*>;jZf{+}n`=xX!vrA(N3-c{8WH3c28_n4dGI zq7_Fo0eNr4SwPjG*YdqS-Rx}mDFv-rqPOY#jjyHBs2)7_&)@i(JRwMQ0ITP%1%k8R zgG|nKz8b|>rBTE0zL$4i)r)pe@38*f01_^^twJ|2Fd!)sRV~fAIa-t^S2rW4x4<#c zYo_7q>>9JTz}3zE#`H>zzGF)DNX7;c>Qqqv-lGiK9qMe3Q?w0$hcU;6+YJhr^AXT&lMzcQbKQonk*z^j^nM+OjZpOU83p`cd56 z*veKHzC6^h7Z^?*$|R}GYd^-^eVuO%RNQ7SAp-*CsQibU+7qgd@pyTDYldhf*G}WB zB5pnCyNAGl;U+EvYyXfIa6;-XtrgxKMQo+!@m*0R{|lQ0q@iV29tWL@O?zRJ&zqOF z%GTzFHqq{f80)pcySS6RkL%d$>{s@hNuV;gH-ZPMpv=*MEJOCjg~97u=_ zhA&Rqu4T~2v*`HX8*^K_kAX#2lLpBdaY?m_q!GpU?%qB)q zPh0Rxa_8Ai*`|rpn9Q@YA9JFbz5@?W(yNaan;)p_98(hx5A(A#(>qZ|2-08VVNLn$ z&YNb^*zH@|I&`I_A-O_dDxEEzK8?YZmL>!AUwb98g8hlNxG>V7lhJxT;|!s7G(GTz1Zd%Q}Kf@%Hg0 z;$ayZA03<|EAcGngV-hKQI)eo+hOqeGWdK&VS#WQPd=?8%}}`HJ$sQELaCU}vr#fV z-8QPLB>T4Pm$}()K%HB5faQza+4^M5KXoi*v21TsxPXC(Du8|&f%bkS6d7EO#J~BWyg1_hv4GzLR-Mj~O*a?eo zQgQ?3Nuj2eW(@=Wh|@M|@Z27n7H~Kd$i9fsabm{gr*LB5<>R7nz*k??>JnwveoY4_ z{CN1n@IILpVAMtEN8RcE^V&bC;Ukas@1Y@N58ASFIsC*H?)$m(dsOb&Pa@v;Xhn-} zXjLdGmp@9lz^U`){dAtr`6m)Nnc26p!V&H_dg|9Pbuu>o&9wJ*rfm%jnBRNb)4R|9 zjD5QZ*E=AcEt0zz{n3rk8oTX@k_;fl%$#gsUUb)?Zb)1A_ir>Z)S&2jTl?lH&~~A` zWj->2&j;WuH$7lAzv1We11Lb=^`<`GE`$~jsY%y_f&;n_P_nHr@r?rk> zy&o1(0D?@lwv#!CGk5s@O+U+4YA8O~YWlm2gL{uETg|TuPv`AVu2vAQEtZGS<@Pd> z=&GAt8##J8WHUWhRKvG=yz%z==5JC~0?Lw)Y!%R>ut*Ab>NM?z=BC_bvh@%p51^CD z*c?&vI0+QT_?PL@%N}$b_x_UP7a;Z$f;@-8ec5p}Pq~XAk$KXzx4-%ZGaBo{%^Sbp*#rmD4kof^WBF< z08~=7=#8Ew5uwCztH2EH%x)2v{NWZ>S;vCMvcF4H@smJ)6*}-pX4@{I>lWKdO;k4w za8w{;B;t?6JE7oBy4)fKkEV)bJ7(sO8clZga_4N+ZlvaT_*w@USLRO6fZ`8}$cH9X z^(#@4mWYHmrqo_%%vQIq=Su9(l1JU7eOAE60xS|t?arY=70FPa&K_IBw$5SEZQFC< zE&jOoL9fGkK0RfrVdqnpJoX)bO4ZBfyYW>bvaV@eoEhNgrSV^B8sQ$W4dtLv6Sj%T zotz_OKIaqYZMeeA|7<$w{xt}`je&K(JX!&$x#r$b_4NXcNgsvC9sbB&?*Mwx>zDMa z>0Qzh2^7cdl*-)!?uqKhU&C7t_b(~{lUCSJhf>$4Y(pgv(rwh(^HQYM2rh1j-{fj~ z@~+#&&WGyfbH5urKG})sH2j>^i1SWbdsjDm)*=xpQsTic9pV_aU4v!tmKm$+5F!q?g)ywbjOFvy_8vtU)_AzyH z{vy)1;q%b~6mf94UrAB!e{5&AnT(ppU!iK^Z=*F+>aukTI zk!iQr$T@BkItr$OTlVup1NS)(5QWM7@m`J1m#={&pWMK#jOmy4MmaMKWg!_mHd+{( z5cr<~3vz_GfQ1&8p0R=aePh$Hmy`ZL#G%#E>5vlX<(ZI(jsDtke|qiUCC9dprF# z=K*khesvlJIOyE zbz}9Z{*j#Tk=gCUSz{>}P&mm2V?EuV_1B2EcW^+zKPGnS5~)s!_SiWO z({y4cT##S<`Hn zo$mQ<_b|FEY1Xzmu}a;ILhX%Bo+f_plt40Xu0z|T5Tz4aju6gsTfb|E+TvMe{SCL^ zsP!uhUMf_|p#0RkaPt`l&Yi5!&~Sa~kE z!>^H5sMkvddTGyZBTr&ez~TicNH{fk+YBS*Nkeg$o3C3+vO7rnzxH_s2q{vR9^0^8 z*>~|)rNt&a`<#kd4u0{nnHElDM)nrj+rMaM23{@AQ7V9R#-j?PAhxeJe3EqbiL!wI zYNQITdNrBzJ|+7X?tYxG?Z5IyY!7t5PvN3S-O7bvN^*JQ9`K(?tDMXXjai?S2T_vo zxzawi?HkDoU6r!fUIqyMi>^YSuPV)m<4q%81HB$Af*KGPdpZjk-)Cv4CSG%;MCmwZ`$ z`jWEblLvoeY}?swv%c4-k|h?sCM~dM=O-;EY_Um@wfOD>lmkrAZ5{gWdIP|-=<$xS z2(i>?Ini%Qyk;9$EZ3SnJjF#Fs|S4DUzpSaLFjryYcPDThT$VJ5cr?pUJYfu4NH&I zilQALJ6lC9(T`F)BQ$|vfs#HQ>#jfcae~g57IT4xm zNNaZXRd`nNMB&amvZ2V@Vh{Ju_!W33htm8O!`J)-9gA_1HFr12yCn-=vei`r*|?W{ zi@V62!*(`T-}qiwAx#_P`QH!8&X0NB3fG2~KOyI}^q%h3 z0M`kSIsv+cuU#03=I6dy-}WD>kG83N;E*Xe^-yQ%m2Vpw>|*`1ibtvS7srm68yK2z zs3vM>9Dm!E2moZ>sXY|TIylw~)pvfdT4Ws0r`RTVp}FvA;p-bWvC_#Q4oQ#lY&v1j zWvNkki>y_Z*LewX09ogI1gJ1)W=hb^QM!HBu#IdKC+QAfO3WPOXf@Kr7@AoZm#IUeItGvax6rsI(@RJ=W7XkPQ% z@8puhPQg$IzjB1HZN<-S$BJ61ZXtpBmxxQ+G+$|WyJ>9GZQ>|A<8O7)xb)+lLN@ba z_Iq;Ea}>P~Umn#!&uX~t%WkOcN0w-8N$p;0Wl{BIy8?C1Mw%;qr2LOLW{J0lC>%|+ z$@}n-lm4di26o3Ilsqi5hIDlKo8@EjUqm%9LH^$v0S{b!6c|1lljPRiC;Na5h0{fL z%!)r99xFwv6)L0!WE5p4I5I?D$o6``V|Kl(-N1TEdCB9$KR^8rbhGW7&j@}N}c9ZjVt`GG9FIS^%brGq(- zHLzRlfv(aQ)5qVagBNLo?sgyeY_I8>5$eti#29r^%IxR#zKGNNH6}lC)q#O=3gFLuz#*pBv@ zpjUjX2@(u;pWI+*H9NoRysG1xs^nC0-hkU}^hgr(b65wUJ)KIJ4MMnS1@V`>TmKz| zl(KJC%}*=89-~(K#0+is>#Jb4>3R2arM! zL6Qa^X1#WAM$Cz}^G=v{Jc@<6ewpxZ-?KbSI2c;k4$u@G8fx!`Xhaj$2UrQ~YMVgne9Lp4{0b3-*+PD(AUu1w zS2HS5qy3Sc)lX)_(D8v}|8q{4M{Q^xUaIEX5vi>N$-l$OH`H+upN_Zpq=89twpd6` z;ynv-j~~CBsQxiuxuZqT`*pcS>qB}FH}A%sHK`~06hpXl^#Kj;?Bibpl#BVKsZ)$*XR_~rsKZfy@U}e zZ(>WNYPmABovvocXUqb4)mfZXFFGW$gcqus0f%Ha!V z4yzCD-St$eVFk>0;@bDq%I2={*~kO(@ve2AB$9sn7?k(v&)pZjvCFVO*r%5 zW%h#aSF(TQ!=9Hsh%0M_M$wpkSV#+I;98RYYWH8nw&_ReU}Vq}gBiJukx%Aj89s5o zF&fcT9ACpu;8Jm`{<)Jb6n%h?t zEs43kHRY&~BoC#{jEWO11* zv+xCw;s+p{qT@64$3{Ph8&|0+st6NMd9mJP0wC9FF*Wb0A*^QaRbIWNi&Hh?`|5n< ziolHAD<`c>fWpFKiPCNkP>5igBUWGP9{P8i2{Aqy@vEwHo!#mtIP8F8Q{G4_Wjq@n z|&APPk0b0;)z@J;{ z(U%?VPS5tzvw8z;uBLWc@+`RS3hb?+4retz#HM?+>xt#i*GsmC5XA z`-~j=rsQi4bgXCU{oIXy5}P8lXKSlnb#H6Xu_K$36aP~9qdAP73u+&uua;*hx)XJO z(rJd{!^q)>l>DxPcc%CIhfbOC8MlBejY5C1X+fsTfOU(x=JaHL7Z4!T+hF*%<)98s z{Z54GZOa*p%#0j=D$m1o^j+Pz*g|KRfaOu=8 zR--YjzB_p5!G%g8U{c7_NJ{LOhF6eFKw|*C3w#Km6X4h5{~O?d)X^@hpbbs3{g`nz zb`2J&|7M^Jek=v=5%P4B61&H$On+&yuhc`l#q^_Y$kzA{{wv^%=3C&rVrOUiBEZv*{JdT(4K(Wq|j;Jtiz&x~B6 zo_!%ZD<$un8KKBai{XUuLbo|i+~VI=R6{;toyhejrPi(B9Pt$uG-_u1GV}_xU|l$goG`=ei-tY;~u0bGY}G_FybdItMS>(A>8F6B!r- z6)g1+$TOT+nQg5LcBdq#+7i)Jkm!-n0>!_Iakl|9h4x?!&L9Vm@e26p*Z6Wgm_Zzp zYNiuen&Xn9X$~_nN_E}0SXz|nCSNK_*^Brrq~q9c%i4|V2m7x0cn5sE-1xFj7O&zg z%V?xDE_9O`_LD`KpkH#$~o)Lc*cPj4jWav zE3c^^AKG<2ELwVqfL1G@3*4-0@F_1n&^*sj9=>--xL9F0dtLxCb0C2%sh!Q`L=3{G$NW1Yc;Na!G#k2l#G(S!Tm*+oTnu z8PU;99jV`9ZgQY+IuIRN?6fW!%8+|{m%74A0Znv3u(0l^0=TD$OH9eNF`DnPz z9AEP=XMzLq8Kvm6Zq%^r z{pV=Xiow19u#+>Ud;$F4ZIhXgdI}IMysriQm>7>NPtKD|T9H z%oX}q%%1VyFgB&~CI^x7F=tP#Osgl#KZIQk=0{is*rl z)C?pTch4Re2yenM2a;A|r7)@O<1e#2%7UAZGe2CYKu&+=_Ty|Gln>}Ftf^L-?0%uU zQLtf@I_1n&bF^F-$HvNP8VxPuQYbQHzA79jE^>>w_g;oGQW0GSl)k`&2hjKF5^P2- zO;^b4s;OyR?}YmGD!cKfMvfzknB2B*ox^67Q`JVssHRSKy_=$HaoQg(y}weEM1fkzRa)Ji@)kd%lPk(gYvGB^As_TN*Zxc9dJ>3nkO4a(W{who=&K)$jM zka8OnGTh!48a{oBpfP7D=u`j26RY+J?db(n52hocB^YoG#RvX$q*T>Z`L1`x1A1<_ zI{@;8Q0n$LgRMaU=Z$V`RPGOgP+i_|@0wrbg+)!R zh_`;}@<1Ujdp@j2mC?(8s9Ie1fzIfZyBk-2Y&Dy=dk6kMzoo4z5>6$=Ax9zN(nW z-H2?EGqTvK78%o#m_-;wlPOA6MtjvRw^)UvP+bU_Jtlz&S|;6;u6K++xz?G5oFJCU zQ;)Fm&=U13mlXloyDAVt!z5@Y6|?%Be?-QM z#W-b&nKROf*KY2hX8Zii9kvtBgWtoh+nE~s>7`cRv*QyjGqNq$%grn;mx{mi;{ zq?@zm2`Tx5C&7mo+(R zn#xxv#*X(>k<|W@4?4mb5Yl^keSTT_PK(d{LXJ<@zdj9L+At8biB%EF&$lIF5F5b^ z(3G@-(gWqRYUAp}M|(S02*8E}2rTCIJ8Pn%#^~U)Uw>9SV^zfR`D+GmVZJT^`8l7@_yuOV)Zh* zYRcN6A2wE9-QBz7-~(t=TtXt(wX2sLkP|@)AcvH-Tkal3U6Z*ifV7}kl=qG4mZp*Z zzzpXod&S{hLX5PAA9umTwg%k;*Zt(y@K*U;mWHl0vqwyfWXmnGT*xpx`kx2b|R)AFDY#}UO z`^xl8lo&gN;!CfWggZCK$-eggTlKgNodf8@IB_+!!fz^Kgt=x7jkoXPr^hd!PCHo) z{CH)#Qb7X!=$f>J35T)tr#F1pajmUP)z=ItlW&_$5f;tt?uxzZC7vvcPn@7jGJ7d3 zVxnbD`G0H*nV*UOV^aj9hDkL4-Cs8&7QeEz5eMKD`%=LC!DXjCI#u}HOkPtsuUYo< z(ySCjA}tMACVW>H+nZ;%(&DYXuO|Cb&ln&tSI?LSP{6?QoEPf>fKKrf-_lj5{|q42 z#k$6fn~4@=9Z$H1V1*1IheeOQ#5Y9{wNOxx(8~Xm4sIbx3#Ys==O5SM-b}=Q_RMfN z;EO>HsUwnv9^!7P7_DE=i>M{;Np`1|4#y6w3AyGQ#?ljGPcP^cS0JUOnSy%CX0Rwd zl^!6I3#*8AGt5gJRuggMEa9xtXt}jo6Dl6{FX1j83duj z=}s;sesp#BfCT}yAZv=q>&Yz)%BPK^dajNZ2ZUlQ)kOeDGi%~(9Z0cC?+0UwSF-|gs< zUE6Qw-YkE2Z~iXOLFz7hzupVb!-`V9XPo7`Ctdc=?-Ks3JdM^xw*kK8rNw@;DR4r3 z4}Ogs=J3O7$jqg}XMs!5Wf_zJ{jl*TYzWHv8Ik+y!bv8vz+kC35YUB4 z>0lvQ3VH_UN*tP{CluI-|9Fgv{{XAJ>vE7vdu;*nfMf(g4QslBXxh zF0d4jU@~%W`EH+JtT_(Fae<|1J=xxy4P+ut5rN}9+;I%IPOC%_Ym40AiViSVce#}U z5C!e+kXXX$&rJ{%#PR*S{r|}hz^9Zzs0UE9#LI0ugx3=P0THmJGgk1#9xxj&0_(A% zps%(t$9?O!#8u+&xJ7E{xf)@0)oLIf!3zWbUF4F?@A7dOL^MJ>MF2hOH}}OT9t1Ot zeRb6f&-fSc^d-H|3E&_GS3t4=(q@-sTLSj{YGnbDK^Hs${Xw#gov*#PK*}pdE$3h= zexK<@2#KDMLn80Yo5xsSyr%YRTh3aL(oN42FZJhIaLB%<5Fe*yVM=AMyJJ?w@YO}g zk&ZnqzffFgO_j!sg;7J#@lUv1#qgbkdCe5tj-VZxch`PIv8Z^P^LwpD=<5%ZZ_#QD z+lVDed%B$+SQvx<{xe@`8Lm~kl@rywTymF+j(n<~X-?OhI&#}#BAv~a} zWTO1`)59l^mq6GZ>V&LFdgTPI(|?X~W_Rx#PbxD*W4NxQ zbC9Q1(osn8@-Qj`0&pLe&mb7>2QIyuRYhL&9u*0x}{DxldH_}Uoi$YG1zRxE;%h3t$5yND9RJa8=7FI zDK(|UI83f}B?7pts;Q?WA^rXPd`Y?kr#6{TeaJsTNfIKTlGB?NnAY4nJ`Pu!eylU7XEjXF}`dkv^ z%sY@|7kKrFf^qg6MJtxGT2)1+$#qmirOU5VMcf_ZSRCX zW>dU}=RJ+czU~2~db?V~uO+n`{$*pfbE6XDLkqdL|MYch9`<|khir_42egZb)9ucO zNX@vlT>7$tbuN%_O0HMz``)W%%py<~rJ42Uh}dVVd+Tgc)iOgwH2KazwV|MCW`WN`+OCHH{V=3`f$y4RC&^DZ*5u2>U5;WPA^Ik4IIccSi^n80+roL*iHo2Ic*)#1>_^mReq|f77&3KYK$)%j;AABQ0hxI&x~YkZBXi6UwhC zcf)iZS7f%CA*ZoHczN@tg4Y(oojYJ_szcQ>QbbfW(eD0uq-KqworXw_OycAoY8;1| zMBWfkh%DbE#2Pp30C)^5=<(Qhl>XYysteBlUH$A{87|xOX->Ita?59S>G8OYg{`0dC`kWFBF=TQCaeb{cfNPoNLCd-O_pWZo_#RW%W~+?SDCgmR2LK+3q5SEz(2)o#dPAKg%S zdN}>suC*-nt1noUre^=32%dj>&A8?)O{to)bmWc&S@-KDG@8=>p(+d^LlOQ|*Q2%&rqBlA$+r?ry^ zD@}oX{So%OSdHHUK;WX08vMX_%8a^=8vlC{wmcbKs(n!UtiNeYHE}=;?Kk)7{V%an z>82G-Jd7CeyE-PDN5nVL@Rk(r{T737x0QeLg-~)l8xuX6t6R(=N4wZ+5wJ z!TsnDunTVzKr)Fc9UD%gB^8U6dN!?Kc?fu>x+To@uz!R<3go(Yh{qu|8@_WS zpNEc>8c8>7B925O{P%)Cf_DfgbHjqcGG$eygWpi~ov>!cAbUq1dHy2tAyYI!qvP>U%r25!MR zZfCiFv|r%STm2SJzPh9>&7yev?H$P{4lt#4bJ7yU9vA~b5DM53zJM7%0RQF$X3X+% zI~ye)?VN1_d(WabQuh#<2VIOucT=lj~>*{kT6xO0#~gK8&0V zM8yt!KRXO%X)yoRNs18Dd1IDx&_YQ~vN;5zDf*xM1O}>E?2Ps{Y%|}uN{N{iBte^I zcadWIbhi0vuMjE9ZJY9>wg0u_t2{dEAy;5dLFBV&{W+hd*7@Q8J*o`%rc-geg_M}O zexDEa=h^ng(-qy2oMO+BPWv>DPE8|bZ2 zCcnT+02ab1&a;1lw#aj259ACr>Jj*9M2*Y#hrXGpKxk6`w#=Dc?r$(gn25x&;ZKVo zNAK{blc?vz=#2Kji8d>mA!C5=>ouyns7?l}lck5rMZ*Y7QDFdA;FK35C332Gn#Sx( zlF?lbz)0-%g&^;T`Mjj|x$F>~gZr_Q@sJZjhA^ zt)g09%sjJ=iGW0tgogjV&1vt#vH8y9Jl1#SGljX$r~^W3uKo(D*cLj4%ViTb!owNB z@Y|=05u~;aa@B@s0bP8{24Pg?v(Ev`JtV4iHtRbB%WUHDi`hGtS`f>6|Xp z#Y#SJ7@>4}qDKA=I9$8Z1u|HIPVVn@#js%lZ4+=B#oMv3wn&TVnH>Qd@Ozfs5XS#J zph4RWLtT(Y?9nvB?kk#v4O`N`CSZfK@Z>eDLc>+Lj$8}YI8wifQe&ZGLuWF>X+OOi zY1*l|!xVT!MNT27KQW`|d9o+@T^r&F%{~8?7zmp(mB4tW+?II3+KFNN1pNY{*nBUn zVm{&a+@{dn6heTa5JW8Aj1GrCVN{IZ}M`bCBRX5}w`I31XJ0)n^UE|vC z4Pr0ZfIv4MX{bCgq~QgqpCt~EQ{GdAOB=a)1Ghm7cweuoH*{Eo>4r$-f_t@_X=9{f+XC>-4 z7sS@XcK`jd|BeO+x;C3%Wq~j@q4*frXj|eT;`k}tLuPFir1TrhXSG8a_?(ojvzdt6 z4Z!(UUQRu7V-%X>XjA}yDx-3o|xWF zP(uD+Pl@G#^Wujcn$KBoIoMce%8sc00Dgq?MBpeQ0=hoFWu zU};(&6cNT)5Abf~vaRW-Opxf~db;3UP^;Lf3S%+msmWJltl1TgeDdZC2qqo>I-K+m%_B}YS^$e-;RAuiqkJA^>`o#s03wqiYbcQ?2bkCkp`*(SgS?f9N9|TS0JE4pj4`1BN#6 zxN_0~wNxJ1xHDtqzSH}kZT3-X9N{)~~;2xDSbebOXyHEWZQ$xfXEiY~`&07YDgePNs7m zeCD4*m6ZEI|6fUG9uHO9#_?m2v1CRhOpG<8WJ|J~CR>KGwooC$@M!F7p0Q?mo(NG< zF(TAUmWEOYjYOES6ozam#uk~ePW0a1_wzabozFSb6s*;E`doBqyg6R znJiSzTzO+(*kad}DS~y@FEerw{O7;Z9 zgLJd5zOvB!WzqkNLS*|#C^@j5*vBD7L?i_**FWYPS3E0E>MA`sR7^cK6iKyi3jTyufE zEd{#-mZ3SzIK5`o3eCaDpAA&zRGZByo`Waj>|0b8MT?BmjNAP?TXJq0*R8GR83fPM z(v6^M`kh+htx0>`hxjGL!03Kq@#B$d4Xa&Ix51f5q%}0MoU-cCCwaZWr`VNT+wDzi z6f}Kz&5FUK2!wPnUSU4$$9uEp$im_PB+M- zct#)ZJ70d!*o7tMo##2`H2pY>^6RYLyd$!CxFRtha2@f#vyFpCoTO~bvrBTj`f9%5 z=gKKA0&iI8g|6wVs}Qo-aYo-W;pm~MOrMA5L+Vw&>`9*|C>t;~OMyFQS7yukiNkx> z7N+Gl{IohRy%nJLB?GW+yxg^?OnEBP`(YA8eInk57;p_ESZ#w61iUE|pF@)xD3Sij z=mr&S{O(t72vBJzRoYNb6co~!G;bU{_$H)5S2uLDJrOqe02>~i?KfGV6rC5S)s)~Y zsND0Yrh}zheL88a%WdNwtC=PXR1>!9*7EXXQ{K@HZ6zKv zY@tmr-+>fS-xRpBuG(1nQjd-$Li0 zWRM7&-h=0#+l0@q+j&fKA_cO3-SS|#^=nQKV8)J1&u?nTq^oXel$C~jZ&zMnrWd-J zpGw>L{CTf0MXV47N2J15#o}Stet%7#|NWzj_B+J7iC%GI{=#7Gk+n%`gdu;?s-2^& z>pIxzGg@g^cnucIj4!pB(l%$p@MID_LVsndwpPOln+P5f+1hvUO6j{Vw4q|F2O`h} z-_ql_3MIcQbYPcEaIYu5TPXvBgFZS^iDzUY71MWy=Y~~MON**n>23XXDR63=!cYXS z&y)PmH}qd5`b+=0Xh5}kpx#7(5JMPS5~*xh5olx;1^@j?-#NT?VU^*dC7n$EGxVgf z5p=4gj5Jasx5jY04Rgj^$fUiH>e{T6Gv=gZB|d9beRKmhtn&F#QZ5>LiB&=@$nTcj zVzaOY*{i>6OUj-TFAulTZ$@*+qDkexROPATep-wDAv60YE@HW$p6;hrj-79P92Y44 z9{PKeg^g;~1<8NDCH8uJD=n%f>ri@X($Yy`Z)xz(1o#fuc?K!QS&+v&{CMbf=+l30 z!xTr#Tc3c7gJ_a|2=mFp?zP@Jxji8|!dYJC=SDJKOPl?9^G`E)Bxw*7;P$CQTZY5dd5-yy^6?LF)H6cA?Fmu;(mekgQ;oqbj5~f+^gGok zx}lR#95Lzn)f}yrRN|xqyTiJ^XDF#5Sd3I>jn$hf@Zjzxh)ej9oWiCr=59tq9=E;@ zi%VSrp5?GW0Ux>iJ@XjUg>I~UH?I#^X&ntV;Afn!q|=nkE;&}BP^suBxa*-*p$#y? znXBF;tFd7;sV)vSbVUG&PERN`*!`D0So-N%HeXX1RlA2SkwG? z-Zv`C2Z4EA{!>JkAuYV;d9~c)gz8OZQq?LOUS__kkH+34-DIxMhEEUVZAQm_*llSR zs8ozLDa>(zF#bMS31)MaS#PYdh3Pa=9@)B2}@*ZMTiyvgM;eC6jNheu+h8yL!r=3%VRilGx4EaY{j84+>_>!eWc$=J81Wq1^6msO}tD`Z^YFg$+hcu`=RY%a2YJWJu|W zijf?b<+dya9L8gqEqv8JBbZt0lvWJEZ!~v_FSb?Uav$MTH~_-yA7O(w*r4D3Wy?=4 zu)OIXVKa`Yvl*wo@hmuso~*R9)j`O2!Pmw!i_nPLY`r0)W_R27fD9k=o3gpjo~&H? z|MWl~-w36|Ho}H=6ToSlCQReFz=XBJoK^Ou=GyL5bmZtLn)~mF>xvu+Q0Eu9CWz%$ zMhaB{%J6!gN{vUgJ zH+4yCSkOz=HAbH4t4#-$!#`{LTpsbPC?@Bpms%VBkB+LDxwzfC=jb6>qVMK&-~Im6 zBUYjfNvH1YxRYTEj}uo959N~I0Sz_D-?(P4_P4SL@*sppW&|dwNbVv=>|?#?Zzjs= zr?z9#M1~ZPZqgj)rO_f?bCN?92^B;RX-&}6?w285qf^_0A{LYt_k1N|CQ;O!_zocy zxi22yxGX(xvDh-bzSQe#0BGf>jwu^gO>L562LHUZNF=m9-B__YrVEH#4*R#A-MySkyyjSn zVe-%n%G1utC6HWoD?esubDa}hrM)zTgkqhYWsE0@=stPG%)gq?B`j6#@EtV+1s4#m zn{zQR=X;h-^zw;((i*42w_P74hCm!Z>q@09->ZyXU389Gt1?yc?&Im#;VL?=@}ecD zm5@+4WnUBi1&jQqaB!@Vt-df9giJ)8ZjVK#swLTLX4uEy-50epoMi*QS;5fZ`nk7z zico?(-h=r@b&1%QrzhWt?Nn@W*Id3D*;M(5)!OaAlrnbs8bUaz~Q8U`_O91^E%8dX>^ zE8(D0&b|M!=XXR+MFNw0L%)bg1vk3X>w0@fcB_b)(6=W|^I3LV{*oy1ts(DiLqW*E zt^5i}w==*J@8zq^Z~RR~0(rU>{@p;g2Fg-R-=To0K(G-u_)95Mu;nHxtTgT6VI|*t z8ki$Zb5Q}sio?T!@v;Ybx#X(yZO$1bFiqH=@0K{WT>!r^($=1rc)m2d=CGTb zqcvoJYJLH4Z$lt>Ef3eSwTNHWN2e%}!hoDISAkS*S{9 zpM227-7H88Qo$WQk0FJ9Wm0CUdPj-m+AF-1aiE`)s+I`Haft#I7qy%Uw|(~r)U@<18~g%KfL`yA;K1R-3jnQ0G8 zZmVh{itxhs`Cg>h4QTkyX1EvQ$P1IEUu_s3$YbPAQvF54fN5lNkVky1o&q`_*VERd zj9X5*Cejj|28;hy%i#S({cEUyJ`Q13wDy literal 0 HcmV?d00001