From 557ddfc6846d5fc31b0b61e2626147f125a7a3b9 Mon Sep 17 00:00:00 2001 From: rasbt Date: Thu, 15 Feb 2024 19:34:12 -0600 Subject: [PATCH] make a new example for shortcut connections --- ch04/01_main-chapter-code/ch04.ipynb | 128 ++++++++++++++---- .../figures/shortcut-example.webp | Bin 15222 -> 32872 bytes 2 files changed, 105 insertions(+), 23 deletions(-) diff --git a/ch04/01_main-chapter-code/ch04.ipynb b/ch04/01_main-chapter-code/ch04.ipynb index 1165f85..f482dc5 100644 --- a/ch04/01_main-chapter-code/ch04.ipynb +++ b/ch04/01_main-chapter-code/ch04.ipynb @@ -738,43 +738,124 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 19, "id": "05473938-799c-49fd-86d4-8ed65f94fee6", "metadata": {}, + "outputs": [], + "source": [ + "class ExampleDeepNeuralNetwork(nn.Module):\n", + " def __init__(self, layer_sizes, use_shortcut):\n", + " super().__init__()\n", + " self.use_shortcut = use_shortcut\n", + " self.layers = nn.ModuleList([\n", + " nn.Sequential(nn.Linear(layer_sizes[0], layer_sizes[1]), GELU()),\n", + " nn.Sequential(nn.Linear(layer_sizes[1], layer_sizes[2]), GELU()),\n", + " nn.Sequential(nn.Linear(layer_sizes[2], layer_sizes[3]), GELU()),\n", + " nn.Sequential(nn.Linear(layer_sizes[3], layer_sizes[4]), GELU()),\n", + " nn.Sequential(nn.Linear(layer_sizes[4], layer_sizes[5]), GELU())\n", + " ])\n", + "\n", + " def forward(self, x):\n", + " for layer in self.layers:\n", + " # Compute the output of the current layer\n", + " layer_output = layer(x)\n", + " # Check if shortcut can be applied\n", + " if self.use_shortcut and x.size() == layer_output.size():\n", + " x = x + layer_output\n", + " else:\n", + " x = layer_output\n", + " return x\n", + "\n", + "\n", + "def print_gradients(model, x):\n", + " # Forward pass\n", + " output = model(x)\n", + " target = torch.tensor([[0.]])\n", + "\n", + " # Calculate loss based on how close the target\n", + " # and output are\n", + " loss = nn.MSELoss()\n", + " loss = loss(output, target)\n", + " \n", + " # Backward pass to calculate the gradients\n", + " loss.backward()\n", + "\n", + " for name, param in model.named_parameters():\n", + " if 'weight' in name:\n", + " # Print the mean absolute gradient of the weights\n", + " print(f\"{name} has gradient mean of {param.grad.abs().mean().item()}\")" + ] + }, + { + "cell_type": "markdown", + "id": "b39bf277-b3db-4bb1-84ce-7a20caff1011", + "metadata": {}, + "source": [ + "- Let's print the gradient values first **without** shortcut connections:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "c75f43cc-6923-4018-b980-26023086572c", + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Before shortcut: tensor([[0.0950, 0.0634, 0.3361]], grad_fn=)\n", - "After shortcut: tensor([[-0.9050, 1.0634, 2.3361]], grad_fn=)\n", - "Final network output: tensor([[0.2427]], grad_fn=)\n" + "layers.0.0.weight has gradient mean of 0.00020173587836325169\n", + "layers.1.0.weight has gradient mean of 0.0001201116101583466\n", + "layers.2.0.weight has gradient mean of 0.0007152041653171182\n", + "layers.3.0.weight has gradient mean of 0.001398873864673078\n", + "layers.4.0.weight has gradient mean of 0.005049646366387606\n" ] } ], "source": [ - "class ExampleWithShortcut(nn.Module):\n", - " def __init__(self):\n", - " super().__init__()\n", - " self.fc1 = nn.Linear(3, 3)\n", - " self.fc2 = nn.Linear(3, 3)\n", - " self.fc3 = nn.Linear(3, 1)\n", - " self.gelu = GELU()\n", + "layer_sizes = [3, 3, 3, 3, 3, 1] \n", "\n", - " def forward(self, x):\n", - " shortcut = x\n", - " x = self.gelu(self.fc1(x))\n", - " x = self.gelu(self.fc2(x))\n", - " print(\"Before shortcut:\", x)\n", - " x = x + shortcut\n", - " print(\"After shortcut:\", x)\n", - " x = self.fc3(x)\n", - " return x\n", + "sample_input = torch.tensor([[1., 0., -1.]])\n", "\n", "torch.manual_seed(123)\n", - "ex_short = ExampleWithShortcut()\n", - "inputs = torch.tensor([[-1., 1., 2.]])\n", - "print(\"Final network output:\", ex_short(inputs))" + "model_without_shortcut = ExampleDeepNeuralNetwork(\n", + " layer_sizes, use_shortcut=False\n", + ")\n", + "print_gradients(model_without_shortcut, sample_input)" + ] + }, + { + "cell_type": "markdown", + "id": "837fd5d4-7345-4663-97f5-38f19dfde621", + "metadata": {}, + "source": [ + "- Next, let's print the gradient values **with** shortcut connections:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "11b7c0c2-f9dd-4dd5-b096-a05c48c5f6d6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "layers.0.0.weight has gradient mean of 0.22169792652130127\n", + "layers.1.0.weight has gradient mean of 0.20694105327129364\n", + "layers.2.0.weight has gradient mean of 0.32896995544433594\n", + "layers.3.0.weight has gradient mean of 0.2665732502937317\n", + "layers.4.0.weight has gradient mean of 1.3258541822433472\n" + ] + } + ], + "source": [ + "torch.manual_seed(123)\n", + "model_with_shortcut = ExampleDeepNeuralNetwork(\n", + " layer_sizes, use_shortcut=True\n", + ")\n", + "print_gradients(model_with_shortcut, sample_input)" ] }, { @@ -782,6 +863,7 @@ "id": "79ff783a-46f0-49c5-a7a9-26a525764b6e", "metadata": {}, "source": [ + "- As we can see based on the output above, shortcut connections prevent the gradients from vanishing in the early layers (towards `layer.0`)\n", "- We will use this concept of a shortcut connection next when we implement a transformer block" ] }, diff --git a/ch04/01_main-chapter-code/figures/shortcut-example.webp b/ch04/01_main-chapter-code/figures/shortcut-example.webp index 729e753632644792eabb4fc4f23ef4cbc88e5235..32e701801b0e582cdfc4cb93507ec4424cd8c67f 100644 GIT binary patch literal 32872 zcmaI+WmFw&6D^D`oZ#*d+}#5NcXxMpcX!v|8X#B*1b26LcXxM(kDcsfpZDA|F25LS z^?JHw)~s38EiWc4tm_K^s0i`PD$BCtE583v&j*?bM419s49b(*zijr2o~DT4%B>2Y z>4TZ|vuYFn%`gPm4VM99GgrlH-Sb@8TZ;F~>)vzWmd)8(J-79%PtLB?iOfmY3(v5( z&-2M^{H@OOTLMqb8_yHxG5Q(&n|A|G`a(9qNB8CR+WmQq<<0#D^kwOWr|mRATfR-F zwfxQbZQ^j@ja^nJGf7bcCp^L+PR`Pvk|tV6sG`59_7lpn6Vn`+_tG#RE@?M~2XeeA zWti_Nj%zt$sTdd-ug6BR4-B}zWksQcB3pVkSZ|Wh3vWrt1abkR9D)uFpXL*0w(U|& z_+bY>`zwnLu2(JFEid?MKVWSEfc=CI;$sM~Irdpaw;+hrhc*u|l1KoTgj#5A8UD19 zAyo%wo9MqNCYx4bf2(`^B}k&x?EW$u`Q&ZQ7uS>Xg`ordsY!Wijt>J@Nw9%WkWiNf zE4jEI0>_ejvJdpcqkm_8ij)n3xsyY=2ZFaCat%_xZDoQ>L({jOtSmeS9@rWfYt&@z z0^x>U%r=HYpxZm>Z5@X=fl}*Ap)z-V`)@exR*9sE3uqmtb2 zm)G7#0Z)SIyINyn#Pj!7rEtoj!EA$K8y_o|Q(RCr5uV$S(RKMj=0S9M6Cz;5wQn=7 zs2`GGPBwXH_H^Ka4mj&&o#SCOS1t;UQfV_W^UrMPy%`9aP@$4Nr;p$9go^BBBh}W@ zCLOw=DPsM=^8W%IYrUq=$diaJqku7MjZT>XK~>q^T!pbK8FGcbYueCnaQ3+`?sE{6 zVLdqG)^dJZ@uF3#)e-6o(MOVjM0ctWNF#s0*S{h818ckaNatGTf{b0#9yVOw`CG&o zvNf9xts49t;^#fn{6W(pMstmWpzmR;LJZ9ZYb>0Uq)%dm9h)f5D1*fE?R6HF=v|7ty)whDYViU4Uupyfi{FhwG$eMlo+SG;qDlV4>;r-51&K zF71J01QuX&l^lZ0pV^WJdK|goH$Gs^SV=fO!JVV!dz}Xj%<~pmq5<*u`5HV8 zmdGi4AOCNq`NF=$0<~3`#k9_L7`KhWZH@}`iA~=2Oqs6d(B3?Bwa zR!c8d5fQ*)#cxb|3sw=)mB#8)GqvgZX&cK@RFkHIaZEi<>B?#nRPj4PkSdd2H6*y? zx7_IFoZioV?w9(lV~d||>?y|?*>(hDT~NSTX((RN^E345v2fUhi= zIFowX!P4!d*~#YF5d)x@r-|_`Vu}_0xE7Bc8#k<1oi(RqfmokUPV?-X4O>VYo6$qy zJV$E{QZQE41>vsLU0(@UU~MQFix|kuEP0B{W!yIF6F!52z1UBOnq%vqh=8f;K{Mf1 z2(^DYTGlJ}r-%6L5h+ed|I5b;#1n`g)r3qDA?;h~{Z!si&Ge>2Hp9WC`MQCc;C7H2 zM8Od;{AK5-zR@z6qU#ysIm1}_j348mqFrk{0X%NfdtNdf?6C*in8bj+vbRScT`8%> zM7cOHZ_ZF1Z&Vqo_DxG|JKa^WGo2z*hX-!b+5bo6XeW*1xx*>3ty zQ3xmBrG)texqX1CjIJPztfMxN#tuT+91T{nx!#SpohvDa^C-?0IVY1@F`1&mHQ$Jg zc$Liu%&6dIESrS9`^6$F{BDO`aBt7zKe?N$?@|KQg>%35g6#8q?yhCB|At)A@#oV! z49l;5<)Z9hA|@3f8BG6uY@TEEZ=C*|SB%Cs3sCuGD9+94d+g9(Gt!nV|8wI#vO!7j zZv6iCU-Ur7j+zlAl~@^|DI&hR`ZxN_eQgs$v|^2kb3fwhpld!xnu6)k49WcyhJSuP zKi~Ar>N^bc?8slYU^3|o!WHEAKW&Os!y0?~d(c1TF+HiV;Xky`2*YkuSPAUNbU=0#8ukKX zx=V7!8GZo#YdyyP|9S|zUYLd*z4GuaKm%0gbF!ggh%}pXcZ&mfT$N7hE2zJ*(m5`Hn( ztUTXsMj3h|F5NpYzmD6o_$K$PQgoF0b*tf5a0#)r$hW5*{B*W5&%McmY1nqxD#2@F zuE<(y(7;LpYHcEbqnI+cSx(HT?|K|-vmEz}kmAy0))TbWb%MU0{YfvoQPFSMye9x{ z>ud}Y9=~L?ddC6Gudz*>+G`1Zn&)g01^vrqE-hSgPxvHSfmG!!ieX4@fmcR>F)??~al0bLv=z4vo5tx{_yqq2nR^r{<5MVWW=94I7+gDqrU7^GLH zuX%ciA~hCPfw%Zg=!^rW8*FZ;Es=@J@g4kOucuW!Efl5xpoT`b{D_>*@Gn$NDMykm zCHF>@q6-n!Y?WWln@EJQ-6Oh~WM`_|6}~32_flT_$%ffP5cVVeDI5Z-oyail`zvpvqrwW`{SUuL?yG+}vylhL63{aEM@x z3Fq3%jj{*c7ftFYKgf*Yb5hr?!UJ<@$P6@)I3v){OGphKHstlC(O_^c2I8e;cTd3P z?%^4S)Ky;mdO9MGhQ4f5swEE=K>6afolvaiUh5Q-A7?A~Kqg!|d0sapLgsEB+D3B{ z9MZ*bLq-qQpjVA&>U@Y7s+KDCFs}y83+Mi;q`*0TaUhF^WOXC+p+mWj2usz;=YF4N zS6=J|Vc7`~f;_nr_#(va`h7et$67ifAN|zmBCYP<1%<8P5nHJJiAXhu0#|iv+D?FZ zOVn?77PqyQEw&X7O>FQ`!H4BTih^yMe%l{J{a4axLR;01*`eoes&hoIScl&sHnTJB zE`KaS^whj1bL0#B%VFd*u-dB{nr|xoa%S6zJL1yLw=NYR_l`t3jI0WOi46hhPhI}Q z>F;E~&goS}0B;)#PXB+fjYN8|hURrz8)M|U!_j=%U-DpOrTstq++6)e5*!yd&8zc& zyrWQ6a=Lg^GhKh{TQ-o;_lsKJNeUO8{V%otx){QS#4vb>HHn!S7b-(R8Rjo-{zGUd zz1zUOe1r*;j_DL5jaFB@bdjbC*kNbcxW60hKfL?xy}|xQ*YEx$GrlDr7)Al25D@p0 zrr-QO=bchlVC9!)T##L=FMQ3OI=*3o#4kDdhm`-Jv8CJp%>U=ivDz0Q-g!;2wA@MP z#K5!^nQev}3wpJ`WNcpr{(|jshdNN#$;{CW)H)uLhWF@?QN% z1N<^kFI`44{Xxa4TM^7~UY}P~)xJM3-ao-Wbm~fTD%o`;&*E{8@h8D&>6JcHiAvFb zBBj_e%UT98aXq}}5icjni;KC%s%CkU0Gem}BiEK5r5Wp#6?cw-5LnT2bwLwysYo)A z%(p3`TZ9PJR)e2o-Bhe2nvc#J!{`R2tR(lj*_uNN@(0kY*qi$ zZJ}xYCXykEsYf;m^6>J$lmv?q=2|dO`APWG^1!(C8|__)St)7KJDzL^ad^rEhs0D0 zhtiImd)gwfqdHfpC|$A=m!D6;t#qhHD7GtBdr-I`J%iWzU?`tIy4v7Ilwd6szKf5g9hhaV z^_tUlwlfVrcwn~8MhjsIF88{6iceb*eu#+PE^_0sAWS(%yKnZf*;`we=H5KE`wx)l zZ24`%&{LM6SlRyKJ{~$|AhDk)N|sPhc;r-x^LJBLAO=|-!JCu+z_%A0`(O5tM6(~B zE&kqttOB`Oj%)x9CYy{KK9lz_7`5O7TDaBJ#v=Ir0s~%Q;a6jqUDUA3Yk6{JR zN1@pULoxnU!$a`BKDryS_sT?O0EzL9C!AQa`KJy_m2pWDDvyap4Djfx;gg+)61kO0 zj@EC?e?>{(Z_W0v`dQ!>vk)aBhIN@BO^#f|?CXHB3aR^7$Gw+!Rv5JVuuJ`^+(D6$ zZgibhQ%nCJodF8?!|=a#8N!?{$|Z47R6um_reWNF^rDF>es8jG{>_=^|KG3Qota^l zV*hD|@IU5FmCwcidMBw$=Pq3YL~y|CeUW(Tfu_Jh^yR%DlR>7(zFH_1HfR zwX$sn;1Xn<3n4|6I~HD%kU=r-G+izMb#(lflhyvHzdse_2giapB?I3Ywrco?mwv~^ ziMg>hcA(&S1i*Hq@jUsvyU7ZJ;QpuU{vlbQjN{9xt#&d`2{_k+W)OFdu#vpW5&PUw z>ru3?qrtI%{lw<-lzU90U%jAqbXc;)r8bnlT`D!YLaVei6`vpj2WrEZO*a5r`6E+c zmH+DQUpYKEfc7S6?UIV8vGe9z-g&SL=-8<2$D-cW<|C(t57u|uJ*N?_0Q}ZiS9CTU ztQkjore$TChTwVnY@(a3%*Im9WUlf*9q-4gmbX}eLt+&#o%{GOpMglHUCrc3S~*fi02l z^_Nn56x)K|UV}nYWq_$L>cLd1$%VE_JW^i0e4`V|eXzYV8VU@AWO2@kkAM@APo9HT zTN!En!SFL)g*e0FbTGbk$!}%~=g+k0sJZcXvYCQ@rc}BB9VN~}BYNu`PX7`Yq0_fP z@l`UmpN)ki5vE4LzC%b>Mt$WynFVm;Z22L+vjZOk111I?tp>XwvaQxD5f}La!wuaJ zT+s#31fLQttBROfk==&>Ani{FZ@%Q9Afr_vGjxb1>hx04rKqnKkDJvf&>HA5KiW~f zL%OUfvENotCeHu_imU%1!PGFG{N}zo*Tgdx4 z`Z8DNvumcuK@w^fuPp|LHW7fwk9T6^6*{`-#^_=UeTr7*vW((_(kQOCwS~cjj?WNn z^Mep)*L|x8;}$z%lDG&Ka|Q9^u)hF3(DbNatKEVQ+Gu->#+XHP&H2*Uv>@)itGxdm zc&<|ejCX!eqviKL?%-zbW2DusWn3pTgdduaW9W`;ebm8lFeDKoq6U?s1E1&@p}>CZ zPdMm%Ro>Cg9PHG?uc=RoTVY>5^lgmJzi!pAX_3m~`&OZ}Q1k_mJOirBM;>z+0z9R; zw`mLQvIzGBgP&-BSlKOwyUqg^c7x+wl(ittm)h{Lft7WL)B;P%$h-bj#r6H)&wtL+98EKKZjge`|On>0kNtnu*@7V`Jy2cuFx~BtU&5Y76x=J+<&35BL$B zc|#MUuU6@q*WeTSU2^b4v{Ct7nlB49c^?&-Q*q;$;x?y}@$$YL+$b~vwtGKy) zRreWYd7T$Fo3n^Rep2EVFC-FDe!B4uWtZ6TQ;LSEQg*>I=Z}X=VTr)8cEovAEGE>i zy-!rkc~(>(YY2c-;I8=MYO_S9HL;c2^J$&`mBT>bjlW2@Cr@SU1v&b9oP(wH>gBEUuTjCYRx^ zT_^)EyLop~mw;8p7Ls~FCNjcF7u)T>87k!bCBupR5bW%lM1O$WN^sZLD8Xu6g1&t% z(ef`1Huf7~`lH@;UeLh$A08ajjP6#`VJ?0|kv^ZoOUQxi)<19ih|PBa;dr;ln5;Gt z*Xv$n#aYZHXR5X)B16sxOmLBjyOq99ILi#7tX2}g&98eRkfJBV)oXB_m(gZ<0Yz&s zUB5Q_eEGYdh)rgudW#}<%IOjc5M(wRIU=~wao9c37jJ{Bxg>rlE-#I|#GyZ!lvZmV zE~IRW&ich+2&Z(f*&t2~meH6c@>>h3pf%)keCYV~^Yf7Q`4X{sffM=e8X@RU5`5_m6`(AIfpy1xse;O! zlfQ>cZcPkIpfrq&Z7qLD_4q@g0b2Nc#f2Gl*HLckD^6~eP(vS06xZ1a#6TevoTsfV z4th9G_Jtsi>Z*Q@^^QP~dLaTcAuzhOfc*}w+{Z#K#sjfHj`QYTMt}$t*6?C-2?NSD zQk0>{;tvNlM#tU$?kOJr$eFcG(RKmNboxNCvSgB@YuL!NbJ*00J;Xt_N^cV$6nB}! z1+3voqUwgHd`bCL>SEK8kZ6dq-bsInU;CNc6INzQ4$lYvGAyaLF8@d9oFxl?aY|$J z#&h>V#rVvY6g@%}dW%yA`S%{vSiIC!o*W}PVIZ1#pmQ#qchTr^JvgLxH6qBp$fR9< zP_yMaYZO#qV%qvx)8w-Xt}O&j?dYhFFsOh91Nt$7uAUSq^FqL89JudlGyt{2pQ)XK zd>yyI673#->IHyCZ=6S1LK$WfZyi=f;5%#E#m~H3dItsgJ@bYsRGr&n{d{)*#DGt; zg%jk^2U-o4{`oBb5`_niBwK+<%^}mo16+pZ`8CsFj=9e<zdq-1Cgnw34qP6xt zP}LJ>0JSMg=Qt=-YSywSqhb%!!iUxlrvz)95r6Qv<++sLSAlmnAZB;)@9m6VJQ65}-sBdrMA+lwHsI!`*R8*im2{-;lR4RAs z$4MgUlXVmN(ZuTFXLxFPx^?=_S{``oZlbWf8Ib`?TeVP8;b3kt_nqN``M~y?0vxx1 z-+D(zFle7Vwgn6cy#UA$5pQEJ`xIF=n0|E-SN6mcYJ3 z*E_AE^Yii_w;2^z(h9lqTWd=%*}n6zz1aIRjvPs-1Mt(8KW*W^ zb!xz$ezFk{{%bovSKoQ-AD;e}`M$SYm=rjCPRoGK__KTv8pYX{I_Jdz-m(SpD12lE ziQmc)IkYOTBn-z_51{FXmTLf*lwQY8cneeXFCL%waO0jSm z#9>$K47lY2ZJ@}}n`4(<6as{AxXRc+d+qP>5hd}}X~KZdY|M`jC+*&kP|k!zLNFzV zUFyZ(TEZMuG=b>*F}pbf6xMVP9&<*&d!V89z5ZQZ8|WWF;OxN+thwJ-C~{kA;lBi* z>Lm#;B)@_V@^@hN1#_HltEB=FX7eEy;7w3y$1kF|nlH7CxEh>2%)!affzmNihP zHR8E;0DKn`D%H7VdGODe!m-I6qxg=5=E|<>sp!5)S>EI@h;j-Ktz11D@xp28a{pGB zu6IQI&hh=2+=&+Qf#4@QitXueP*9ZYd7X}s0Bc?w3_K*vqB0gs4pgpvrH&E0|Ee71N6oXF0 zyj#~fpqY{TDSW+R2XT0)sa+z)cHehhLn}d`DfW)k_+WjunUbPf_WQbr-vS2`;H$?G zZ5sxl%;^z?0t)gpY0G%uFrp=`&}F#Fez2QX(aM@NtC-@dasgvK~mOKbmsKSbq3q1 z?m2b@qAIDej|9KN^_R3vm%x#QEZ#|7eDTD@z{?734fEvlrojsx>>%t9*L`EqjHXKs zqra&P**p*oI3<1?IbP*j8(ifS5h%kgQ(R|8_rAuz_H*$o*yyz$*U%KeMy1)A0J0WK z+eeC}KpeeHAFbCmU}NlFx%&h(`>$eM)~l#+E*1^@LU5nKmN@(`qx>`3uhs;cZTbbV zjAs#KH_r_khvt$pg$Hxqn3kH=EU>!8N|x4*f0ia-c`{$*XC~~*K4SJ}4HWBSDo}t( z=|YgQH1z95$w!EM8mvm5=IbXzry{!(@-AFrPtjS0__Ow;3&cA3=kdYXvY(>~92lBL}d=j?icIknz4O6inYYPCU)G@kn*72Q+LFCj@9 zgsbO^FhQN#JR!_vC$-{g6%Pd^g#{?h7Zh%r@>kvYdtnk|NXg^)|Cg@(T^=)u0{W%4 z;ZqEzUOM^x-*cqfF8a}t3h0=JKVKTC6HeAiL+ngMJPN*=pk;xOvjQ@eHcytozYWUa z0l#s9X`R>sErz0eqJ0|sI_&k`Qa4vIPJ5>P>$fjgtnh4v%9W^XcSsyPI_4NkxWv@i z&AN;+UAZm{q<(tR1qTIjoGI-XGm^(PoGSHZ#{6;SUn{eo1db~JqKK1{mA$${Mc0!Z z$;2l>fs|o@e`)!>aQ-a@(EkaaOJk-j?2H4iFU~!>qHCk@%75E~KhHpYKb?hl|Jefn zI)pc5wa`J37ta0mi3nh`H2L33neZF{czqUWN7+XXy_6i31`9Crr6DJ1(C|Igx9k%Z zh*4OwqZaq=tFA8uN<2+PJZbeyk&qlXe*=X*CIYFq<&rd#830fb%7y2r$cz)9$R9Q2 zD`9tF8KwbsgMuCC=aPAZcD8HJgVlU*mpKgws8o_r*vx956b^BQQ=o&;4&^tmRVrc* zuVJG5Sr-s;`Lgb45~XxWb%-pEBA+(ra~nMZZ&;;HRCEqg3mwO|4sz$7N*;$1q!1Np z(lco+Tp+vweP`E@Qy<+sh&+gei&{hxQwu=G1Ys_iDPv}!LH!Art_Dsl+6>VC$}*kb zMVtI+TEzYW$JWh|pJ&n#C9S(5(dpdl6rxnBzUiJTu<*hiK<5Dv>2LN{f9O4>Q$G_0VhwFeAYxWZ%_==U=U?99<`FVnVi0EV}!5c~0AJNKHA z{57CClDf`S=?KnJyh`my@rXJg=;NgsBKMvUc!*MXWC4?{IolJ}c1$<6Q50W*S7f2F4&HJJJ_80>7Ix?Aqbu@0!f z#1$7{VB}uAnTbZ|5os)pCmIZBW2O7RKiXaNx|aPZWrqrlULJ;BZrVTp#m&8(BrreQ zcTxiWq*ori%H<@{0T*IXru~ZngVU-rUBys68GCAnz>HCC>$3>o#mCU)ol%6Xv2%PZ z-H;#G(65wUxJKY+3wwdaw4#H%Bp_q=sn29a6ar+}D9NOJ57NM+b2Z#uo^njBZ_%m} zfrDb6z&i;Hg4FHRqdzo|7jwdKF@5%C{Gbx@NV!{CAP@10 z3WTr&WuGOk3&ydDC)4gwa!c!cybaBmE`TM+mS-u<1JtbtHk}5TsR`T~5m7y?9?1&R zUGtDN$KntB@JVzpD7ik5i}vn#6q_B0^Is+NeG8=M$(rpxWe+DtahW#O>aOJG6$8c= zSsm@9?O9eqp8bS}1hqcA@coi!u$o0U=Nm3XO?qPR_&ygQo^uB?RVJq~u`($%MCqRb=3gP)=CXHPX3x z(F6`3S;r85SW}pXFYPy8R;9XzoLRbfgg2HL>TZ2usMlE&X+jSpsupo==GaA?j>`rn zy{nhxRzTxNYAQQjZu@BiKs1~1CR}-BTM*D4W5-MMbxqW?8$_N)2om-1@rP*=2oA}_ zBut4O(n|*Y!SRHz+IcAx-y2`52-1y-93Y=-EMBj%hba#1Y}q)=S~_+O!~yB$EHDic z*XD-HF-`Z80Mlp8_Y1Xd#;LrFOc3Jn=P)*eWN|uS4+?0q{hkYOGtaquamTSqQU34T zbT9Say43OY^|PgnXkvOlKm1TxH_9%P@=4$F*LdP4V(Gg_N8Rg}9&&4Acm?u; z8FZH}e{3mnPMO}xPtnwM`qY{NjDpKY9uQK+FAOb=dDY>k$_08Hi#RwkI~g(6XEf1x5>)D3svSl51fPj{bC zgWwTWmT{U8Xh~vYJ4ZMktDi&}B{I|(+K%3M5jP0QpUv8`+vW>;601ut5|~H;ykojZ z@{en3C{YX3I&taF>QAOI8CVO~*q&sVeLu5G`i0V{t)>hO>oc@Ft6qo{E~#$2K1qMs zS0-<~``isREZselYAa@P>I1!;7h|v@8&i*S0SdhDY2Z#ljDkV2f41|rTT~cW&sev( zyLbZGYte*ZdhusX7|d7m*;v^I*153YNi-$HODXI0V{TN!h7W+&NV!suhgQb2xVlc5 zv1mWZyt&-)YZS%S8Miw1sh1ri8i4B5xAjIn?4|&zo zkJmv4J_bl!Lg3Uaz6kH?=;!Sad;?k}!?0vD0*>|M>1S)DMIrS16i0K7MCtmixk-1o zg0AMSu|2sC(SGT+l&k7AwK*w)jciY7X2C97E}hB|ZO-$aT_SEPDmR}i*KMfRS_Ccy zY6H_zvrETwg+piyF+Qxe`GTqCr{gS0Xk(v4G~x-axi+;YCNqt1FuFw{h%?cx{c=og@4OA3XBwQ+o(RWGZ<*g;!4Gj1-@%;f&c4?VanVcP(Zz*z;O>-aYL^@{4hL9M`NF z&okRlC6XOxfXXxh)gko|z_0`>nl&d2$9q-N-L8vaN3hG(*FOd^Wj!&GEK#;6VxmgI zuDTL;y*U25JTFV};2>5o94Vm=GJ%uKb=DPXWE0s~FYfXM>SHTSi1AUIP3kNZ8>9$B z^p5GoZ3tKT%0>~fcVu!{5NRP@#dkO-ZQN!L-5mmowizd(7HKFbQ)n9Y% zui8>oEb1T)s2M2TnWbZ7EI3@z_r2~8hPe6I0;!}k=wIbEhvpkl+N|Lqwyk#g-D8vw zr^T)Yn|-iRS#&vlUbx}TyVky_mo58=cYxMajo$H2KOqaIx{tEgbZEr6sq`~E<+Edh z)ek5Is2)q0;5)Aw*1V((^-}3hoR-9O=Z!r7}Uv>(JSy8_)+-!X#i`Z+}Yp(T6 zKI?K3#h*;LR<`l}iZo|M)bJ!MtUNUF6y{RmhJ}t%i8Bk1Y4+Vn%HTUU@ zW<-c8BWT8ekE$0R8)(k>JiF1soR7fwNsY`Yg!|;{Al&iZjK2NNE(r~r#UtL70``!m zZ~Ty#;6z2+mkp#1B%f~i4Xun&2XBxkrHuAie4kNmkJh~i{LYvRroba6Q8M+=Dvj5- z((H^BFvq{_HrIHEDVq!w@^>%|SqCQEN0?IWTB1~%)X7`c4D_{TPqoePBehZCLF2E2 zRs=sz8hV}}B0KFIw%Z>A5JoHlb0`cM%n2Q>p`%)qDWaVZ{G1j6D2saJX?zA6{G{|i zv$8AI75ts?9TSr9N10#;%NzvJv4uN_vEUTe9$Uf_9bw)Mc^?UZVspQyGK0sjS37V- zhXCD#_Lowz(Z|P1#IkM95Imlt7VIua6k&7n=JC6#qT}ti2l? zhU($X@{&AnnQ@={O{G5SnTRd^&Q$S&+og6@hQ7<$b3xTjZ$PD$?ACO9VXue>+jM;m zxQV3ORV19f9R7}E7RtSOg}9@&n;z(T9zfkT)P`aylQR!No7XM3U}wH}6E~!CM$)P^ z^A!mn0#c4{ZskT({3jH=R0KLxlp6(!=Eirod`DZGS+ONf5$HhMEdJAwMea~*GS=5l zQyq%(@Z!m-=%X(>u7n)~1<%rmi*?F2P)<^WPP;#tGT$DCFK{^sbAf?umPhidnrE>x zO}^^1bVKtpoZ!^-v9yJ(tkUZQ{j|@*lObNNZzZ z!we3cq!2Ejw~7S|MnS`geEu@Kv#~+(O8+(|u=m7U85d0{iVkf%+AB7ZQ zb4Ca)O?d-kBw^w}vka3ze!L&$LzoBKC-FL5*H&KsV(y-VMpS)cZozcij@N?mtok{4 zW&I*em5;zC#$IBXD8|Ah4*@Ze<6bfhutuyD8 zl?a1a#EEIx+VpL(I}5FP$%gX7n!}p4^7mrOE9S48rZ8F0s1kkmtNTc@GD58RdbT0@ zItOQM92zpV8sc04-s?D4JKI~|Rw8lYd!AXQbX953#&yk;5f;K@urG24y27uKX|PiP zE%JK|MW`?pF8Kf!2H?1PqN?WI5~o- zZx|=H-ZB@pEDD)<0D<D?%PC+G3_SQy%&y;wYabT9mcvLynTo);C?kSuU6 z1qLUbZcxeBIuQP7t-7KAL7b%NAt{hMNDoEhLBj>E$OTCO;r+o#@VNeCFXMbiB1W!A z*wDCFiD2WjFw4=)DK7v3stZWPNF?aPX~Qxn=%U&Y@#0wGV+X^W9u+Rt2?qdq0Od1) z9N`;FT)!zEE<~L{Hf?+X2D4MlqI=iIV6;G3z5swleS*em#kUKN6H$`7O?r5ABWI>{ zMcpDXSIOFC!=p9FH0MO4HoMjWQ-D)lJw0mli*i>T zCW<+`;j?|*66pR}(Cl_)8;?u`zJs!aLNx#Y-(61vah|bri+1u5G6(S}Y2g5X&y#J_ncL)*FFml~3C~3l& z6AJ*KP42Hd_SIwsMVN()R zfY00V0-)A^T(u3P|MbU~pV#mh2(}itcT3nODvc!B2Bb!8%1EPEc(`ly zoX^mqbgT()+g=YHKnja&9HiRKmq12rNU`S@_)7lBD;C3|?Z{>LdftE#62+w*G-Xtr zX_fU2BDkOS%3a3TYVWT(R4*$EEmg5Kt8kg;i<=itq&jRZIf&h`*9Vx@-B0tr!_a1oZZJDS zF7{-#m>TMa-7sPZn%~3AsY(_25_ZwQ5rkmTvdR1E-g#s=1U_+-HCU7DT#E^USZx-JS=KCVmKuvqCHjC$s4AEl*}4!OC;_+r zkbJguR+9R#&>{}sE#rfVW~^^wL>Vm8pzuC+Xq}_`h-skb%e6iS!DhkjnRHYtylLxe zLm^nZeJa}6cIjnaan&+Qot(m&HkwE&=;st?4PlfjrsK|sK`EMk)ohN0R%Ib=`If@+n{+4E@d=6P7Z8_qARS1j>q1>_?**U?f|sND9ju}Whz16%B~>hhSy`w zYSN+<^h&<%Phgi$0ywrl7Iu6swp7T?;x`Sl)#t>!2$v4yJmV(mcT)^6_>rI;TfjF> z<4#~-J?0l2mod|p^x^PSUZ0MiG$&6d@Gjbvh2~jeOM)h-8~`vLtF0rZs=JLrDK)Y; zY^%E-^jmCo%2wKwsU?uJ+#O{!3f8>kQiGG%pC#bsqC5&x{1JfaLG-OgW^!VmJqf-= zsifEZl{81|%&V0QZLN*^M)2NbuI};iNJ!<})a|SRJ7sjIT@sdcRC!=tBTF9L%=xQ{ zBKJ4cb+jZzD!sKS zIMx7g2Y4)DsZI)KpzsOqn}+4Ds7C@ui@7v`IvutyaG?fy6m+FogPddPWCrZ)Os3`F%c6lKQv+ z?i}LerYW$p>T8IOIP-n>$yl2l(+!QgCW2SYLGlObfunjrBwZbR45)A%6o0ya0}TKG z7Zem?=%Z-Y(*Tcju}(Utqz%t#4-3o0bAm_x{!+=b5f2~@0TW{0@B?A`v*Lct*mJ^4 zxAkH3C{+A&&6nme8{S7RVS2GcE05G~dsPZ}CyY;DNZ%j4aSLmK3=V@IT^oiOXpD1* zA}g!(x65F!rn7#_Shb56i|Q$5WnQ>vbv@Qq#H1=S9CV)u|FX!8ISJ1*CL!6O%cM<( zxa!_)3oCFinQXs3%WLK4!8jS8Bh!edLGxLa;j=dEOZtsVl20+7iC0*!E`9I@L7|Co zoZq;L>jSD}urrBG#7I1&nm+Pf835Wn>Rjp-5y8yiW0qg=taoORy*4G`$wK-n932hk z)jhTBYin9YKk!FCuTO=v>$-d7DFnl}Q7@>_w^0A=<2%);e1EvcRB>vrUm%MRoA1r* z*b99-!q^XdX-hzKcO^#>9HUX=rMkjuOb)+huhxmTf?%qA1J<9Aw(xjGlpN17kWt&7 z-DvYP==G{ORZSP$uEHkZn^G_rg5uTS(_OB|0ISGnvC9_PZ2OGuK?3~~?jkbF>j_86 zxJpGSt#40K;R3cdcT>~99p)QsIaT16eXXFK;!3xYVbti?p#{DzIG;9GoB5wLu}8x0 zl0;0^bD@c8i`FB_4utDei{p}-1C4@Udg8fr zbm1y52wC!8O*moT`(*4=sZoKAOX`HYtiG~j((qH^{n?J$0O%ic>3U@RL%r3p^{K0} z2xN!t5!f!iOx-?16ty$$L^5>ldx7*pWIX7kt+Ndq8(u#>O+}J6O0EhM!j@EEdz|KJ zpyr=Enh>H%v4Q+%{6i={-OQb+bq(c9%``ILJk1>V_;?3JTp{o(SApK|hD}D8KYZ$T zr8M_4dDBu=V7qFVJc&WXxiT0cqxUO?DLRDFRA7$GqpBBWocn%;x3Gn@Vx_kcJRGR^ zhKjEkDgbe!_#&mx4XP(ytbER|%;kV6?g4bO8?;NtNllQ5I+QlmA%I5$vE_tu z-LC>{0n#zPRo~!Q{NO@j-iBV5#lBSbl&dLiw;WLrnn9Ac|3y^zF0OtLWK>qGT;16|GA(6+~dD#^rW6#!3 zod&Dj)Ml1cw6_O4x11>2=H}I`)A|`Q+f6@l4sPkvUY3*F3GG%?uOoMC`QGz5<6gj>nxf10@ctB!RdQdF101P^&|u* zKkLy%vV*Lo9s`kTwUocDa0`nPdk1E5sVNLlcn`#_(5R0Obt$^C@ zvVHi}s!;G{Q7Y0y-q=psb9$}&aHIKJx4_9g(>ZEvlF~ACaCoD@HtzU=@|fm>P^sy@ z&hGwpTGP9%B3z>0G&tKn&_6VX=XIbhNrD~*LwBM2mMbMWY+O8$7M3F4#c%i>gr8QL zHr|RViMwS?k{pU{eD)hUZP8)7e6^>GrJ88*CB)m~N!eSvP-OLlv&$>r#y`}#x#y~Gcgyg!va=Y*fvrCx;kE|st1OG{==k9cU1Bfjjr7< z>-nWL-A8*-35-=cwDLn2FWYKQrdC67m}I2Ys1#vrOx!;qkqf_FA%JQT&gx z4A_+r;m?!-BY^MAA;%Hk6#a=>0P!ViM|mLtL?1f<67(`crVYBXmPYCdzia!|*$8WJ zTb-0da?yVu!yU8T{DW2wa5<)=5@cEf9-b~z&N|fb`m!oM0O-QTy8M+d#*G_K@n%Gf zi~9Cbae>3gw@APiK*Jv(@+0fA4t7B%7JG?YJaA_3d$)L~;=8#3fW2B|aiJGP&&Blv z>Xp0{`O1d4%-q*v@UJDSp#VTY!}d;PEy3pnGzNoW*o>E$uweT5SGCa9+&gl9OGX2nH_PWE+-532F~0Qk&tX$crp z2iMnB-$+C2N(W0s$QjSx>x1-GUi}l2S{@HrM0_#h?2P(wiF=O61br#9>GzQ+@y={; z7ZfE$`Xs4hB#vD9Cx=Hz0UXuh9nVKN+}FD{Us#QJ41yUQM}e3sey(XZaYdSO^kL>5N>%L=1fAr%JLPDeR>_@f$9P zAH5iOuwdZ|8Uh#IoVZsb{;-fEJfQ>=d*$1Qdh-X^}jlBs35oCAPP zQVR}v!!tFhzKHiuBpcH_`lo1nZOd>Ph)%O?9p@a#_%lg_%J@sgbL10{!!dU{B<-%9 zepG|5hUec>W}+qnDXhp8Os50xoh-m*m2fqqBG4WdQC81A%AaZZaOo?3?;MzEwsh|Y z(BxgAU@G!vLax%UD)j2a+f^?hrO<4_QEsiOWAmFmkAU$nIK^I*f*Lv6A(JRmGAS6Y zb%t`~`NX<^Z~a(U(b11QVh0BFWe!>oCL3pzj;Ay%$uk2obUFan-~*gRqeC+ut%kQX zXZgCeT3U^dQ9l@``fY%1S`7*U@~IWA`A^AeZmvCp??@-AC9S(yX?;MZKX(()VTo^j zVe%WVf6qdFiwno!DxIp_`3cM4Mgm_szRx5>=lcF5Vu246Kt-rh2{Nw;%3LPt97t$$_X5Ce1X+>FsD`_)e=~r`~M4yI(5a$d7q1o@eIfS00LQW z7M|Pq^QM6cL@J+BpfamAnIAsatEJ0g?78RIM$pjR36gm$VGR!{bH`Dt(sTi^4C&eb z?aX=!_L7)}fk;^ePafEM;S<87{~+`Qf58H*I_4##dmE$^)#mel9;vvK%Nr%k*C2I& zCinp_qc1fZc{EC46TPT^V@TGL66ykPi&nTmSzxfpyD!81s+G0x6X3&`6dZK<-lj`Qa^12b; z_i}|*X{u<#$$~cP`u8H{0zoTUHJiznBn(&5=^L5{TKk0E13Yg)00U8Bf5xj8{PxTD zD7%7KpQAqL2@DXfCCX#1HR5VgUUacDJ`dg9X$i7S_HG;IX)Sup8;+$NBrF(Zsd$em zEcq}Qhd`H3+Mk8XYjQFYI4MjoGEr!ySB%~{M2)BC566Yr{>7}%1n?3}x>y1L8cp`r zOJ0v}JuDO$A*Spl>K)hvIv8%Q&2z-brUUV|)qcxBG(!i^=R2-_NCX;H%mF)+?)#D= zeK7%Em#&FKmCKv8`IgbD1zggPFxa5*N6%k{_b}eWi#&^vsJ^+#!BeG;V?X%@*&5i8 zK;y`LYEfwd>h&Xco?(Xxeatn%LX6VQILAH7HJr5VR4Ok*UFrexq4%cri)Wq zun&NZ71mK0*C%>+Yh+8Mg$-6UhCV* z*;NI8p(|-Z=0p88b91q&MbKQom%&><7unZ{;H-w*L)yq|O~(ZLiEoJpQcG=}cY#sh zaFFLZ^vcw(;sjuMYzbftyzGCye(_aXaboca%AZo|z%X!iaa54b8zD5?Tob>=DL${6 zo2sTA465D1kyrQg>x&|y-r*LV;Id}|7;dzeNYEk{w??|3A01u(6U{6hY1bZ!n6YgZ zEua4#JnlWAJ+XR$9YFsi6>M~=YFG{@&F+GZs*aUo7oTHgK#ejL=IT0~g+tsO6{oMy zIzPTMW=-bSKl->F7u0-pb@jrsi0632p7OFIe-5gR^-pe{1gyxbAm~9&0T0{`AZaE> zDp0zRm%Wbb7!TQd>?a6>Gpl7}Va0ljh_R!il|9B_4vE2*C`3{1J;nt@>!8}7x^Dd4 zh7~K2NC;Ss4w52sJnZDAA~0a{j=(v3xr;!^G@cg&-+Zv&fFi_AZyy@=tIgSPi8Uyz zx>KE`|2@E^mRFik47lrji9g7AGyYaZh09N?+ zfx8#U7c~VThFmKbtK-sri#*l@T`vPGJU{>i2w&GW=31;TxXv7+fsemzw|=VkXQX|a z^o~qbHeV6V6B5=s5rbqSy0lDrI@5wXPZ--2A+Q_};l1JFV1;7Y>t;wFWmsFgS<^b4 z(2*q~r&LBad8D^;cNTKM^w!V`D_-I>{+K&tCa$GHN>IE@` zW4t{xMVB-%Bvo&|q2peQP-q|k001&gnvzEKj3~$mfgb_tHV-gW6%($4FOOo;l6u(eQgj>q3T06F6DCIYALWL*+&zx7tr_KE zlM_Z?KG%9VC}|6#UY8+&?)7sN8=5ik3?FRpRLaK^qLeDZ8u+q)+s(IG|cxo>AALyYB>e-Fc8; zoI^>UUju2PfWxKZqoUvq+tSujcDzQJNVTt*L%p4TUcY#bQDL+laQ(0V3jLI-89wDb z_i4bPriWDip9{K3-Z<$W^dfbOWgfhm$~WVsp`wIyrarppG(Seb>sMaukI5Ls0uYD@ zGEDu6W}lc`C%*Fgt@3jn;tK?z1vW$9{p4nSw&}uKo~n=-h6?x{V7Uwkk5ya|Hg=V^ z_JJs6M8W8fOZHSiPGBeLLi4jXws3$Zv&Hs_C2~fazn6m!L@Lg=qD9UKWKrA8s_+NLb3UUalg5KaGfWqk*d5H*QA`p5T#mwX_+J1jhoiJae|2v`a`_|6{iBvX#1T437#C-hx%J< z_;S2cd40;ejWTbzqip~&uEHZzC*7EONSfuMmLl=~hx%c1vOjT&TY-BaG?g}L5_*Ox z)M@K_pkCJPt;p1y63b~($3w?Y&ni2L@v|{>|EW@L=E;AXEz&)|4Y#P*$H`ZbGoqpO zh1auy002fE!=f1J3LIBu4AWOu)n0Y>>Zfj=({oc4-HbbAHLFr@0rRLhz>IF_1gJ(a z)*+gXvh8?3P}755o&}jX?n7}pc57eT6L!5ruAojN8m{D{=Mu`I`@WY1-fmp) zuzN|$c+UR?-CGts~S8<($CIcy>4ihidnNb#3ZNOCzv9f*kT z-2e!!bNjcR1jrg?chOLoIsf<)?iHJcz~*$r=LLc;Hj|Y2cM(&{h2}DzPnI>bsc zT+*>KP1zjd-Q5C{IZyyoTHhI6NfjD5e9XOiq04Kdta!tl?>a+MOO}5e0);tY;kGXC@G##X zrJekd54eCOi}w?)e|=XPKhe%2aSTDEny^hx=L_!x@ZH#w?E&syp7Dc`px937KR9@QkiafTr~Q3f>vnZbGSz( z83g3`pU^F`h$~|QD^mG4Zr1!!Tjjc5v8pdNIqV#f(Yce?_=ouuJ2~s+t=Ya&$8mE` zXRoMpA(&NDjgvV6f1>z|_97`ymFbU8T*%enitr$$v z{m5#f{V}ut39PPHQrs>{XcGNQ_S<2fxV?6u6m*-%k#F&NGOF%=XVA+4;DO&_!v!ZPYJN7!ZfsbciBZ9VubN~gphcm8@ z#UjHtRs_4dWPI{=CU#?pDV~k0d$M2~N76A2F1}Fxt9XJ#Y_{~<;_t=BCuQN|te<{R zicz&BTsGukWyuQ}qpMJU_Lv<6KK01kz?w(riDRG+Xj57P!0vtM<><_}gd$}M2vGC= z$^yL^S!V`SgV5C?M=$A#VWHB-=}al|_RN9akBto4z^D61rvob?D|!J z{Hz}c5d}=mNEAb{S;lVD76pDi^f=Ec7|Fyo3+D5~QY%anmwCj5#() z3Rc`GN%;Jo{hkXbO1^qI zMOwA@`Kvnu>UyITi&K>&k0KVb9tG%`!=K>~W+I465T0CT!B-}>J=VU0k-79hYF4DC zov@n?1B%dh@`cMOF!kWW7S4h}45mIAnr*LG_k+&;U55Gk1`=g={!m)4qE64d|kCe0s+>82+( zC;@lZzh+_tr4^a}N~S*82)i-Mz~~qyLWYHs&UHWXJ~*XSuekA$s$DqkxBeRu9teH} zfHsmURw>b=pXgLbcA-iB-FmeXSjl0+6A*{@XuFZYvjNd1EfM3Uw&kme2Cs1EI6*&h zLQ(($y5qOg_pt6g00LB5i3_nzkrsv@6B(8?9q}dJw@0+{^2Qk-Nhi02TilY&0tL8# zLj$aPOH6emQUpf;AvijsKn_7+YXv)Xfm6cE5%udVa;6pG{#Xx;S@YuLQv8lwnl3j0 z8T|ryU_d=*A3Tv)tV&qe#sC0qtbM));a3Z+3oFKNxwBM?pREB|bO60bzaGa=riKBPYX| z+AHcrtF$u92%6e+ssDxasq$DwOaK4?!DFLeMo2|?>$OlG>B3IPbqx<rs0G6Nd#Pftcf@DT2iZN&#|D(U&7S?X@uK@7u266HAT9UTqq_mKHFd~%W6`WU zsu*#60wj~Z!ayXzhW|*dZ?SQ110$l7mhUT&k>$J2bJMAkDLCpk#;{czR;FJzj$vOe zCWu%$Ww(P=(&sk%+(njxIbl_HiL`0njg(KkXKQWxfVa_TVebC`G~8@Gyz8~@VVIrE zYuuye#m;_nEbH1KDvuX?Z7>}INHy7+9)TQ3|90;o8;jBt?&Tw8;I8y%!+ehtj)B8; z96C@LvYzoA4{Fh_18Vb9uelb5OHzAZy_D3jxU9 zfldL8Qa@MrXjc+8?ck_NPs<}PF`icUg>do2n#TD2af!j?yDbD)Uv%_J=Zi1M{(BP~ zd-N#IO(*;qx?CXCeCC1?mgr!IWAYqSr1jlzk`Rokc#YsZDwhik}ugXy+?6*44v!cdbd=}0@ByWzDYqK-=S5ydGkpAhLyShfu&_cL{Yo_DSSTRt| zZ&epGW%rNsGH9M!Q$a!mgkQnrV_9G4G>B0>T%)12DqQUg2Q^MXHFw?fPw0Vf;+01& zPV!M{&*wWb98(AKjCV7hU*il;rpDHqq$Qr5r{GGS1$}13#cjYki1yfn)i1E(vtt{eGoea}MrL7t$%c@}4vAhH>~8sIo5P%r=h zSA}2>ya(QcVBE>!IU=%yb41FI;WcA9dFv?v(bcK%IzvkUAG2k*Yg?1{y$xw$q~S%c8xY&v+-gLsQ=I#XmH)ifY`N`xRJ%Fb zMSI+iQDH`cY5nYu1VF>}iqDZMF!E2$L`c}-JV@xUvP9Et-$rajcUy6>?W!oQyo zgnTkLOT?lst>e5$@Wwu}{hS11k#7z;oN0%zr`3 zw9Mk&Lhs4=R&)YXDna$aDw?1ArbSynYEpX(QFU~yonxPY_#7L3T#QfnYmX-;vqeoR z=Qmf~f0+JXxVC$gyvT<%1JwA{wnZDQ{M1bp8NIqe zIf*JOU(S?{`U{M~Qol_D_-zqT_{phUqq{qL&35+|<`O&^%r7cZ0yRwabdsf@f8l

zYac=CR+PbpXjIE6m#*_Df-Uo zyu+s3S@M1O)`3&jM?I-*o0$drpel1Jg6IJ`#JCv)=|*eh%@a4V?N4m`jCfKqrQ_i? z(vkq))R)yYXaO9y>D2lhD?F+@KTPgq_*xw-b6OA?4h*aSRG#W41ud=f(;U^xAfaFZ zNH0}%$4Su70j$B&3;(69!b-N`{%E0&&<*MeBLtJed#;5~3~8NYXzYXkx0j*KovbZISS|un!n8>wo!>zFIE&zrzXH0IIp*=K5TF2i2;H3PpjLfr1~u+EYM`SV=0`GP)W;BPaZ_HM{U&w z9oGjkPwrbQclvBKZ^tf;a18=D?Zz04Ms7Y?I;>FsOV$0hnGf0~QMxqM{mNXP8Tnbu z+%iyq^TLeK1g=|I@k!3~f;Yo*odN5B$`_LlMzGkLY1>o;?xHn#3G6ckHD-f0h-^ev z>9lWOP%t&QR4G|uP3vqs@A)V>-sRJOS{WC&4xS+Mfjtr6Ouk|F@M{*gc!NGFC+!Td zKe*uw67?TmO8pcDN=9tZ70Ll|Ywoa%t0_c4dh(0{DSOc>wb0NZ+eu;;qRzC|*;9mX z`M3Qs7oeI6djgQ>4|E1YWPb?`04z0?$&&uxaB+RL!~SMXS6|x`PJW-|OV*kChn^aK z?0P}4F;(CO2G{eF|4T=p;!-Jo*CG;OS@G|-GxJRO2!J*v3D2%Ma1a8+MaB}jS@TaS z^%bHM;@Y4HDtxsiNL-iRh$p(7CSSrd0{p_oW8`clKVy_ylbm)F%yT}eHVX|GL837n zj_Fvcb%m%&<{b?<6(-@GwF0{{aN`4}5mjIf`u>rP>K^lL9Ova$Fbm$)0;iipRkV)B zOE)Azewh)od98DX*HGDSPLw|{cUMa5>pA)io#_Hl`mr*1^Q>}Ep}YT!596@k!T=(+vPjg$|&CjF@}%dwy7 zsVzts1AxmEz}PkM_&#_3Q@w1L)?ZqJQHNIA4AwzF1eT_*UcVd;<_cY1PE>uaI9FM# z98xiw3y0omRm&ezYty3ai1yvvaXD*|ISgx5Au6;Fi^eRXEO1Uw)&_QPn8QzE-1#vs zngYn&$_TacLs&)hF#P}aKMUqMQF2Ph#|kW(4w@ac^i`#B} zqn(H|=i|nUsSIwx~}RH$*UxC#x~jZJ)b!*lM!|OzB=0)mJq2_)8(kn9Q&Le2qLLz#eZTJ z!39p`FFP9n567r8dRRiVv0Ws5TulxQ3HA-e2vxX7uyyQ>2Y?+K}?Lh^n zk4?o-bW?(Kf}~Qv&Fh7c$cSwR;j40{Gv>KD9Th5PzQ0u=WY0EY9zSEJBjVt>i1)ssyBpzf@QNCq zdw(;{$(I<1mw#;x&7}3Dgj(ebbu>M>zDu&Q`1MDIqH<~_{%z#O{W+5ou7sqNDY3B2 z=tGD^Bt>&_3LA!6HZIq?`)~9T|g)*=vQ7)3j?hsfg z2bCef?DoaoU$vA=k1G45$pOj~C1S`H-b$M$-n96fY3q(&6=#Vj>+R2b?8;=v=O&OC z+t_S_)b>5aMD^(oX2S$)$}d{ky=3vtzD;p}II}hHdm%_Rq?{OdpI0s>$s51QheW8S zA%gtUUEcVkF$9AvgJ%37UDxt*Qa56r;_u4-K8q;AE{f6z%ye~lll*Oa0v+co?V(MJ(m2!ST($V#S*ghExWS>dN8CHp=f^yFCr%YOSW|06GjtbDF_8abHnoSa|(; z9H|7#hn4Q*c+WT}A3Pws!PtWU(Dvt%rT?U%aHS9$L zd$v?POG?4Yzuem1HFU-BUP+t49TqPj9B)Ypghng=ZZU-i4;Edg3|S1!prxbuqp0C3 z?mlY8tx)orWSC}y-2V}a`~9|ykvUghuXGor7!x2iMAbt_-}8HxCLI4I3;u{A5rlQi z9=cmPjdlme#^?80$3NkB`z}AdiRc<*+QQ=)n)$^R2 z;iO0-MoK3IEV%f&K`(td@k+X#GydGpaGvFdb0D{4Ns8;T|FQS=k3(nqq4&mZm^T|~ zwNC5Z0^BkCfUzl-lLG~#+L^sUtUoas`9RK53+B~yptrr)n8KCM~(18uU^-HGYfXg-QOw&ggbnhERIf)w$bzuge0JXoTSO0WugstonQ~_>=O&N@X`u zR@-DHPplpnbN~G58T{FpA{%BDB1Avdb0uaIBEs3jmI?0MlMsqi{0LJn;RtD72nM) z-f|XqUrPSWtkROM6iC(1E_sTKP$SZu354p{_i@mx_0C_gq@GkcGm^ip&G|txb@e$Y zBWJiXcqm4slUDHv4CLV_5GFk_exu-@2`&sP%L#{N!@4|ZTgvZ$XaG}b#2bK z1+Lp7<3L7COxHNO-nGpBXd)FIK)@K{=7yhMmEhe|G>Us8rCOYM=}yUn=h6#vzw!NS67#$5jKnE^-KE* zI-U;zlV_DF)qao)7j7{1=cIx3yejdXLY?i3Tjg(*23`(s7tSeqGy~#RXT^va}%bzRL{J~5Xytj=bU%QYWw8Up*Ab&p349X zMIRef0w%){0+&efqJ^i~oq6}ueZi9~fB*nroS!X7>u%ye04I3jZkZP)En3J#$D$D_ zEd&53mR&@k5oX2yk!;P8t3RM14D&zlcf}J$J#Pde1fhboN+hQJYPB`Dvw|>iEv0 zutpEPand?mHyaX?N$q6NwPNiggKWeDtsI~)sd@jBVs~-JM7aBOv5Rh)FG%MaBFl}y zzWc6Qkq#ECgnI4TyybIr!mbFv@T>OfM<9O-Z;Jva^hhWh4lK8t7!;)7*ujoq=f^67n{h!k<|`C6Y*KP# zD=2R1`0m*>Cz*wxg^dQ)tjeftHG*UCxxI{Ged0y(`SThk%3e;)*!KQHc^^_G!r(>IRx7&a+v%bEY!6>KupUwi2!4tc0Ks+o}+9w_;NKjNIa_Lz>~^ z?>AbB{;!&KM?G&b8T1Cpeog%JiXLEJt4HX-1M#%iL8$P`^W0aRvfsyiuQgZZ8?6p& z;h5gd<%12(F}tP|@}3KYj^*Zat36<)&;s-R)XvweDa{I!R&?=Tw`f`xtKN;iJxNB9L8mLkX5zM_T*!JU^eSMXY=cE(TJ z&V|UNJ-nbzlfj}QIF$tgouC444&&k-sX8wfQajY*d4r>;3GHuC+SN`9L=_Plng?j+ z3dL8-l0*>vTi+|rWq)5IvkU_Dgs@iPIFwQ0W)mT; z^Zr-QOxfh3G6|y>W(Dx3fqf!lH>Ny^!d-;L2nkfcu0zhLOWEO<4FBkl9Q;sOM!hLv zj7J7AIh53WJn4d5J63SY-br&^kiY{vT#CT(Mjj|>)VKdc@&ejC(@*K+XOnW@=Ds;L z-oR*;8Rvbh-u+0vNIrsma!F?Hi;`fl1!$8(!XWvbE6}pMb7_AcUn#-39J)=ynz~&NFgwa0_+D5K@9AoaJzkV~iXG;OV~pSmnLh19{Dk}vQ)4prT1P> zX$bLKF^fEuRp>hY@~PoX+&7J!nRB%M>r#2neSLz@);~W+${P4GyU2uaM=(}U#G%K`P8>ug0~&#w9^9@T(hx`RB~R3+!?2rv{CsUN^T-#?+P*zU5z0+V(Z#+Z{*PK zmPv=UtOlb+8_Lns_!pl$*KTQ_DTm&&I1A$9S{AY1a!E4oKIf8aX^O`1L!rp{JoqB$ z(=WJPt_Npqe`q&3zQ{K}<`m(op^G`O!b2?EL14l+GC$YdzGyR6l7| zzHUk6aJN5he2ED-l&9D$`I?&k*8Ko|>MWfCl5xJnxm>`FnE-537K8KnNbB_sNKlee zRz=jEc!)BAusR!2ZkqaKjrS2WAPXz;($}w(g=2X$*!8*K{`K4gxZ}rBdbM6#(PE?M zNamM;V!m|vEdXxZ%6iPT#5Vo*EASJ{;R9N(>?{aXdz9kENFn{?KjFnL&}s4BbJKk6 zF$xvn_G55gKpbR*L;k%Qf@kuGM$|cS*mii?Q`gUokf#F@nr7TFObQ`$iG)%_iVqgP zlu7EK4-GABznmsS?jjEq9x!XI;xblLn!7tqYVNU(K$SWu&y^<0s`vf@m}TrSSqK zF^GuBi4WO{mD%dqVLNVcI?>U}~i({@sNkARiL^h4JbhvKRKeQgy+G zO_VD8B3IP^P&4#>2rMaCCt@R4s3V^Z{owSduh93Q0SxH96QUeI6*U7vbV)u_T`u4$ znrM!o$_W{z?Mil~X;eUDxqu>Wihwp1aKHeva^lY4gFHY3S(;2@V$VS8FaQT>$iJ@g zckS1FF!!RC$DKb7x5etUWZ8C$e!uyo=_G$#Y(G2`SdAaYPI8r=-$;=82BxRqwlJFP z00003j*a;Jw0%%pg}(^Ktk9u%sZ>(&zsFTE17@a;#A*2)=)3YLVikm=vds_UVeqC) zcf&~!0Pi5;=@NUyF(&P%XYQEZl#m0WN_FLrtj-$1v%tGYf>3&k2{OV!Fd~Y}=m9H! z_I01N0{lN5pT1{fbvvoU#x{Qrw^SMgF5#A$8ILe9P+U>`+g-zp2Lt;&nCdgPy_ab4XwFLL(hjPnoQC~s z+P*G1%vrpz^NsIv_v=ipw+A(7LS*1Ern<&J-65=aD~LDYGyF?*fE*@0vQOOo50_&M zffBU<=rKHRoHGSE!6hqZ>{|vQo62|DeS<;s3d++qC3Nz5B)Sa6cPcS8BOU`K85s*X zS9MF;bRao!+ApQgpfy6F%sr`lIZ73e_z4ITYq$6K|A8chF*`DC4>9UEguU&z=Qz3E zU9NSll<37kkuYwJ|=N9`UL}MxxZr5%I1>sbP2xpQqFsEIJr#p%g%)wSxn9 zsp!qSI=_}L3y6t#l*l?7*OkFX{Cw12TKm=MMzkwy))TQO$u^fJZx`2;jkvYwyE2aiQ0N8lg0Gio58yM&aanh)iOo+892(5h9{nq+fd8wQ?x>g7*Paea1cQ?=64lIs~cW-DT9q$Vd zC5+lHcG+41`CkE3s+dQd#`#j}jN|OTx z8*h4j$CG0D*9n0gQd%e{clNU5e-;i*tUdL*1xfW0;Jwo~f9jvStNi}pBe!)keuy%B z334NJ&E6e)Hq#6E_V{J(Mlt2>N0!*X$`sg@AEJf+xZ(*3&#K9F_48ihY^S!5OMKfr zw>r!!bj{tH01q~`|`rj6}ZF~LdUKRqQT8)B5|K2LKA^uaSpfob&bbj zqUH7}yD1MI(MdUlSe5N$5t8as{@&0=JKh!^Mc3&V#Hmlnw7WbUaS|D5$3S4xTr%j= zRz~=nk>Gsm^!834K-Kz+6TkJYO&|yglkDx5F`{)6m>yQNa!DL9mjO#7aT0c z-b}QHOW_KSu)iML!y?Djd1p`Tzw3qO4HD<(Kforgl6x$!<r<$fSK2cRm_wFSm!YZo%I4lw?rFBl;9jZH2->qq4toVbBdo|RV z)arFE1jTwcc^RJ(NHaQjx2%}rd*Hz7+vGcb3Av(0>LIRGwxUV}fEUOQMR3h@f8LQT z7GP^EEa*~*hQV~>#9YFA>3|>`3m;Rd6Wjel%AGfdLbJ+Ao2b^Ewxa!$N$Gy02hxb?=@rUvpe|C# zEOJe(7?A4sPKwP@;wwI1`0!hfIVuOJl7t@Sx|X0V2|=LAZw^N_pst835xCqm=Mt&Yo!a` z0LB7D$Y0fNpkg>?U|hv@QSkE2gT-tDra*1CkHFGR$aB?-L}bFrtk`SerqW zl*>khpE~n`{N{_yOn2zToJ6l-duV29t@@#I2nNo{KC#)E>)CRixe|N~th^Wvim7{M zR%5|Q=7>~aNBJsb>p95z^O(azG|hE3fLSGm{{|tIR}_8)GUu&gGsFR39dsn2qg3~ItR1VJsvfU+;hB2L z0BjLL)&-9hy)M=WqyZHX=Ln&DqV>iA000<1k1p~^jjfa+8NQVMd^!l#8}ngiqcQCJ zCYge#eoIq_ApU3KIde1UGx@P6{|#;DzajvsfDC|EaeogVHA?G9)lBjVTEe11SSWmc z=h7l8hpG{8bNVw$d%Quogj&5T ztG#c=XGv1T3xh{<+TWg9Q48Z*EZAZMO~h@hrAOpb8iLEMMdG*FvZE5+$ExB8XKW*W ze6lx+VljZwqv{BD=OBYGv1}i^4_Mklwov)Cso)0q4~cC2#x^(L@u*O@2FXOz;qihCosU<5Tz;X|g8~i@bj5b!6 z_x*$>x~`m4Piu6+>R7F*xL2@MJ|Ep3AxvAj0=OK!Ex+ zy{Ik91vp6??$df1wke*6OS}0--I=nI$(KB1*R8r1=u{2-cwS#QzL(;6W(Ic&ZQ<8| zixPj`_+9gH*oRex{|&4|NUB8+Up7|eLNsdR-qFY4eJ?awr!jBpr%uFkU}N`P&2FGf~c--UN=1LOY22@n%} z)Yeo4l3kj>001@$-q|}S&p0F1&_d1xJ7@kBUtr-QgoeuS2OPX0;(_DG?T@t$%8+aE zqdeoLg4GH$rfo`Ga0|_L=JItS1dVzV1IyufU*E)Xe?lqOb z4J$GonyuUkDxPw}eX!zqItmPG5nv6RJsg7W_2EH3}z zerAHyhgBjhMzX zLqn0rI96D(2e7Ue!CRf z388IC`G2pTC7UZQ1hDaB=0fa{`i3z8|5mFE10=`ZajXl?qBFP-RI@>S_IRS|cA5u5 zV#Q@pa^=`rVROg-d_KCRE)vrfRB0yF^FY55tRu1#V1G0aRemPxe`uF)Vz&IEEOtku z*HO7(`H8HY5IzDx&V(91$WiHOGyM2{hEqXRm3{#(!u}9&4hu=;6^R8)!Jq$!U+`NJ zkKrDHbzp_d+awv%F0~1M%iKX(vbuKhk_?YsT<5|w1XfVwO3WG zT2=3>EF~^(%L4$YiwP@!QRE~v{QRyM2b=>$jSZ>`Dlq>0)S;`ftCGlZ`R0-=okW1H}hRKI?w0bY*bxW5doXZ_{n_`C{{<%7ey`Q7FH?xUz!0It>VF6QH;C-0;A;xY5J3YM=ur68=?(a(sUIsAoW z8UGiUunYeB$W-5Is}`o08;uBp?Vh>8+1lSL8^PILwt`9Sq#?sp5HJ+K5;us9037W| z0>bhA1{YJ%_8ITbzl8q(954xV4r#U#AfYUIF;gtOwOxCooG9f?f;Eoqv={N8^P3$T z{`UkAc~7Ipi1E6!MrT9uqIkrg?IzQ@M*nNnznkW;H~sX_(!@NX|Gw7$b(ohMr69GY z(*JY+)SjT#gPdrJSIYw1Tf)hGw+YDg|L2H5Ao+cW;4OTk@U>-UrW~v!d)pF5k)qE| z%g6TO|6$oo3Rqz6I`^z8pFQsKuu@ z8t6*yE#u!zN_0+l_(MJxv`jX}l?jUT@Kr0T7brRI{0R%$Yu9W_^Jdg;b$X6fLK*vV zZy`bor=6!V?nSI8cIn_)W=exMNl;{Pod%&frE-lwPUx5~Ov@4eKC7}Z$yn}mp6Gd0 zwtYz~WLC@Wz7Z6vYAwE-fkArvh@sVRW5w>jmN$%cWJ^qS{jq$xLgX%B74HPbs#)Jc zZ=K4=b*^|GlAE(TO$zVN^ZrDg{+jk-?J>8&F= zGQSCETBLdXvtYjNZ|l})om0Kr_7;Wrj99!x5@FL44M^7Vb1qX{@F135acYlI1Sg&5IwOc27=pkpWuUPteA3!`?Tm#RWggSOIg zyk~QP-x>^WrmL+4CHLTeaT)yg4qIF~YQ1^9NzL&Ggy7(^mYK^9kRy8n1r@)S#}Qkm z8Uo3W4M2b{f-Ezv3$(#-=xGj!liwnxE81;mde(Uh2OUeq;L_m(P-=ooon3$Iz1Fms zx!(N?$N%_N>7Jp}V3bUwi~SvN93eKm0|Ti4&3;G4p#6D6p@Z2}<~ zYxmfr6y@X=o3p><`GHiViRbQE)5X3QZD5FSHAq(%TU}#23-jY?b46`Wor$fkU2^l!9Bi#RXvK@YFWDQDofYs7;Oo!1=Lgz!qz*v z*k6(f1)oZyZ2R39Nue3NVeaZ)N5M{PGJ=o8`6`d(4%ppQa zbBH;m+kMR7lJBj_f0r=1lB&Bhz`AmY$&jwTV`k6?9U|RjkOf*6gO#;;NtxB3!HvbM; zGJZTEQesm0K+r@Ore9#UkJ$j>R7Jpheh6WK(^mKouJ|iaBw&_*smc;%_q{Soc)R?x z3vlIZ-R-`M&mS?LO3>tZ6JL#&FxSb_sYA9nzr@A2EDxH<6scBiHyj6aAUQ|*K$+FO z{p!8mEA~CP|M(^Uy}QHo?TZR*`&6wX$lob`LdW_VAxhf{g4f{pPEyPSgS7CYS)3y+ z4CmxTL}k7N(EmZ~cnRNVTzb1s_mB+hZ*ZyTk>B@YM8yIc~+Jo zd$F`L4U{I?diUo2C4Lb6+@95SQiX1QmIHBA9i&-cE_+)D0goX(W2{n|6x(+GNTEjb0=93x;XAW&Ec*unEzzgeuj#B9# zxs1b%JvGqi43z$@)cCmp9^YU6qA*iFp74$qbZkfUH%v&smRR*39ell~`vEuPSAj{hR|xw)nrhH5+V z*ATAW@#CMZ8MWKoKi7cbl{{u4`e8n~7jj7VFW&#dm;X(^6WDNk92yObaxJd}ue4T} z*wu2vAO9DSw5xwv+3d5eKLM^&@0ykA;%Dqdh~I9qP>3@tKLhe<+CMJL{)dF)?in}u zf{j_2S4m*kv65%KG4DiwcvH>fu_TE(XnsTW#M7W%?ZvyvnWdqqa8ZPp@d^%dzsrR? zD*b=J!XGb}4lFlSB6}5NQd~c%<2Nvj-%Y{|T%&hgyW1O%)H>41bW>Us70{)8Wb?Tc9e(nwpdSG6FC1S4c@XTWqZoT5odChMVJe!)Kz%;2E_75o<#r_58 zJkg>~c4G?9@P_<`gAq0U!YjkioZlA|7FZ~!TPTWMS02d!9kfyZ(4#pCH@#pvth$^K zerTV-Z*y`~(T$L(`2WZXHirU-UO@ku-VaQuBO_Q_dMWfr z*4nRy{8Qi9Bx5oDaS$DinEVK90a=zapwKAr;o&|Q-B4abN&b?A(JovyclHDsK4`u-iy`5ut z|FcG0h}>zy{OI(VEs@o~UbP|5?y+r$2}e#jD${!;Am)p$<^T+V3o--6!}=S8;E&l> z{wpZ@Dw1Q~c5*Wn%tz-^0^SIMEDKs)18ARgihb-+de1(E2I2Ds$u-%et})f|`hSc?(^i zt{B2!2N6i}ht=4*f#@^E)Hk!qJC1r8bqw9En_2o`&7(FCX}C8?bHciMwWq0G!o1Ihqw-6ar3}`IyJCR+7Gvb9T+{zD&9Wk2Doc;d;O!6G&%rcw5?c{ z(_tqv&$W;X*hZ5B$Y9{VL6Gz>+`WL=5bW%^18D5w{eDv~ifR6cBhr1bzE9F#T<)Id z*~d!F`JrMUjkL(>J6ET5n&z z#FyrkPVBK>S`Ty1nJU>4>03$VN!u zQnAplD;sxrY4)f<+zUYt$==p_SuaiivHG(fx~ht)0wXNum8H_@f(QIlqL9l0E|k)q zC`CcS0i+)U@xZAX=^8|=K9s)#ct!wi2pk?!DRuV*wenAaau$Kiq3?z&q4`woQORW>;W6vWS#{)1>+RQ{68{#k~Wg@zG3 zo707OEgO`-F&>xeLp8%qA1(x_pzZ$Z!W>mSY;-bT!-<&FmB{~9e3k%SSxhv@PSqj_=oDcvY zQ0;skBO~4_^q4-$L@QFwa?_vvjya2{C;p*=M&u&r4K{h;iE2K(_Qr)uTz}^{PvrBK zeOG0}i02`#qBAhtg~Pdro<&0Hd~QE-T!)GsrVo-z!cIJW3lg;mzbH8wupUR0iSh)P zPy5!ei2{fF&$q3U{6B0<=ozW5E=^T!FMB%A&_%#qRpDDH8B=2dNM#~rOwTHQs zgRN;?wmZ*wna|c~G*K5QZXjwrV2+-m=Oh$o?YqP)I_#Fo&neAbD*T~)iR#CU&B}%< zL1Jena^DNXa(QISKRY8SYrVI8+Ie-ye1f7L3c9UA3^TDb0IJ%1NT9K0V3MFp5uC=M%7x*eU@lPLNsoukAM7ma^=_%Hq6eE0U z@^4wzjOG5+KCR@R0nWy4A(0B5wlEu&-`t`nvxlNwBXtI*{f+m{*Fxs_c(Av^c58&f z7bg||*5^>)-*7ho3^{DUhMOWc=`%U*AO2~@M&$&E$2*i0m;PvxL(5CuANqUtVsYX} z8`k2HRC8=cN69g2Wp7dW7;UP*A!EhRrw=_8-GmYwfhnj4o87?uYulfaAtS)!vo&VP zU-^;A$x6m@CCL(yX5IF-N*7ms7Us-qwpC!dPG?d6uT+pa;;2`RAl3Nnau~oPwy$j& z@C0MZ-@)kNdY}!GRKo^fgl7KLGyipYN#Bu~_M1&t?MbGvW_!hY+th}+|8x(xS<4lo ziM0PTTq&dGy?oq%l!04?G#!*fs|_t+cTm2Le@vHv`Mi4XzXHbf#4*#^CDaGyFz>T= ze(t)F>eBlcE=_jPjd2~&xvuA*1$YUkaeqkD0?B)cI=&G4k9^-Rp%``K|1$zH1=}mp zIjB%h(JxK(@1MTi|6No!#=)ghz-`USFC_*3RMoiN)hf(X<<(u#ts1@IwbyW*nifmP zx1R|YY4gO%LDj*oBRn{$SCQ7S<_8ClFV|}QKEqXOV_~64N^ESJaAGH;*1;*`e0vA; zs+1&2&{47?tUs_r8#;$3J@uWa%*l@1ZGeSxnZEI}+y#bx2KX!7XXQ&y_ZkfPS|m`Y zc!9P)sQ2q zO$p;Of+7n=9^E#k_i2lMf`^@K=gZ5Da;u9421~hK1TPgR4eP35PnVp89s+WbKQXVR}h$C+;FmsAEg)cw|8xKLqK%8T5xQ2 zc-%N(f;f-EWNW4+@*~Zf6^AEhquDQL>31WSlXm4Pe!f+h zd6tG49|1N|TDkN`S~C#bd9J=uy1yBtE^Ubjx4H;a4bzaAql^!GNEFxD_L0m z56ElNhzpoq3Fu`;qb8i(nLt0OFWwT~7*G{+lf0Jv*Q*F8 z?xWZ}w#lC!#qJ<}#ps-Vlx5kQ&Dp$b&G%}NG)W}vkH2N~cDx| zFP%0E@m6JpbCwfOZ8kq2F@3w(1>g@hav(II)az{t8_cumh!hGo_}{6F{GrC15De=> zX(3^aU!@ttj^N|>DJkJ;8(@fIh@b8xc=P zzz3ky$-YZfBMg_>ua+cwoYju@-u!f#2xZ-L2vfSihOOZJ*wi5e0Du;}SK+aPwuU3C zC|lTIAVHZwak{Lh>8CzM;K!qK(9j=8V=B?8jXZm|5d=WRXK>IVc{%A1465Us2zw?o zYfuRKH-3xdHUZN{M#%4|gt)T0xu1Ud<*Wm7P|niTBM$i$b@F5_{t&zok$Tn~>R1R< zVB^~UJ1XU3V0L6>4lHYqJ$En(!4PQ^x=Yz|-#zji)rrAtP@;_QYIxeng#pq2p*;l% zl36_P0aK8tKh9^g;$BV&`xCjMm<2Q{_+hy=zMFjoU3pdxIzlz;*TE*3S!uw4a$qgB zlUn|I=Wzi{^Vv&`d zgG7JoJ_*Acey`#>RYgY?9pa?lUJl&z+n2`#P&jWcEn}XRrZ&-KHxQxO1Ck{-g-qV3 zwc8~`6W9++${=xqxjP&q?Bm63!kiY*fZW+Ue$Rl#LSi-J)uNCL=nn_-;p*q5yeUf_ij0GMRu z!(OKL*Xe^#>kQ77FH*AjL~pzKB0MJjK=S^VS6JUGLK+6?jn@akz7bVb(?ZePQV50R z7&$MyjSj(LPL`ApW7s19pac?@KY;IRZlaH~j9{WrBORVfq=kgn3Q|@FoF<8v6 zb94sDizJ%R7Os#mgdM9}CC!v5{Bvref{0TN1V1$j#u;)#JwYJ_AzD5aQ;cj&;vfjL zs_;SR4xhAx?W;+m&itC^iogOHAKfQ1#pQq+LNE zB5K>BW+dBPR1?IG1hYPg6cwS_JY%crmkd1Z_#oHV%@+*cEj;8IF#O{Yn++8G1CLBt z{PABLLkVO)PYkV`tDffj&m9+5hoX4&pqEq!-Jz#=2 z0q-Rlg|Ub>>x9rXul}8X0gfPJn|do1^|w>aJ0kR@AX zZXf;K${oCX_9A5mO2;n^HoqOVMA$p=Nj^ulm;P$tx+^UKBr+56#E4QkqL)|OfOR{J zRNWtn#aXHa^nTm)I)Pj(EWzzZ*YBqd5I}2%Vx4O$03gs!A1B@mGXRU+lz_d>3xVNu0g^3=w`kwl2 zaE3ZJD<{*UYeGhe`O_j`W1M)k(k-W!yUxJ*H@x!j9!U+uC;1Wca-v?G)Eu#%b~l; zzF5t$s$v|ym{VxGjglkhWMN(d(nkk6Mo?yJxi^s)^gQL3Up8KEh9oC(?OWCwatc{! zg|@@x88-Ln5#pn$(UlR!M2u1EWK(sG6gG*+1a&6yO}x`$ytcg0N4u4oeb_+P$O^SI z#q>g$D+h0Flxu<70}C@~c15`9#o%kfvPSjvm=nGBYlNwG0-3WqYsZS8PRfHL$-_vG z^zo=zf7zNTX5yV`zqEz!5G1-9CRoo5G<0m<&)Q+2=@@Q_o_uD)=Yf%doVnkfxR01D zsG))@zm?4lSirjUm~F%jdGc6H`JDFz*~dlL(Y$1M(T(ip&k75%iH*12P7X*&nK12Z9 zild{2;C_yvtVG zt}3veHp)BttvrX2eWwY&L#vDta2+-9@q%Rx`*o-sHjT{XMFiC)v(J}g4Bx%3>d~k| zqX*yhU3F7q84c9Iu`JNR*Y^9Co}YGIa6lC;2RqkaLK7_4r3a?zi@Nq z)tl!W>^f6Oe_@)=p}dVaM2Z2@@YT5#B`ncc6xv^E*KK@YK1Pubirzz)_r+!<7#5;~?v<#seRvGyvBN_P9n7!$z<7p_B`6cR- zXBYSuIw#4-<0O=coZ(U*ttRUZ(xFP|p@R7?zu|gu{P>Oub9O33h~Q!c71gM?OBzjg z5_>V@dWx2h!=U}HYq+~jA_72$0szb&`9-9OI>NYNv}_g)uv!2d{^A2)H+Mx1Y&KH1 zS|0Fls*0LjQuM~w%YvSC$m%Ix=dYh@D!z}%Thp36@N5bErdV}`ls}t0=^EXt53MAL zytrSi?`9}!9G_<2iP-iTZr^Sr@2m85UwC-Ra6R)v%v`Fw1yfjnyQ%L?NqdIso1ZUH z90r5P^QbcMxd_Dh_0=B$1kTCH&L=E`4EaP~dfWqx`!(}}44zT_Rw$C`#5)0ashwSG zQF^t@kc^B$ljenkGiBCw5~i-{jla5Oh} z`dY!BX6}LFs~PRhX|Hze8ePCx+xWbzMjs#j%QSBsrGxWl6Pmev>X!;(wD_iYtskxp zopKBnkj1p5;DeAeH5QR&Efm5y`U@2R0CF)LWwWV*CJ9FfCrw4uNe^X-7oHWTf1_ik zb?>_<%BK$gCO;1geeYg;dkWr&r%wxqPo}3#saOw9P%zDs;;i9d zOWfN-Oh7;VSocdFEtMp!Y20`j7)8Lf9^V?u&I9MD`!Jz*A3bb7}-#;T|9|~f@o_862AYW)59(@Igj^b z4^$@FG~-BZMi(>Bl**Fxbgi{d0RK2O%Fr*MWHtI0fp*x7{xk2m)X`n(9Z^ByyNKF% z$HiK6HEb=3IcTazme<;_?g$EzX`lsGBrq1(19YM@yRc~LSb-_K|@y# zjFuDr#7?o^%dg!EXr9r&SmW#Ynnh3}J7W`h<4gd$9pPK)#%{?My3hasd~Krn90b!iQYbJ%001Fl$zp_=CLLl*PDrmzU-l#Mamz@~V(8~(w<+s`;%~9- zgP^?7EvoXov&*9fn-cEi&7q1xpCbCJ`W}LLW_ZF8M=e3UwG)y3Fr5w?7{8J}9w&=V^&5P=W zgpPx68l+r~?88XJjtx2rC!ykO)}He5OF4}j&!?r2G*Vzv&?~y$@7G3NTmhIGTv>Z{ z``ALi=9pWu84}Tpw_lg85A1oO)cW6n7Uy8wof{{I-|7tyIU=cr)W0TKWw_o(>EV7L zeA9=*HQNGSK+BaLQLn)2J=oT{Yhd+CGPIse($S%!e7e+Q8o%-Sq5~fq9dYd8_ljs*H>y&DI%tev%ZId z^5XQK;>ATi9d0N{o*L{1A9v_0O<5EW6V~Z+i(ia%Bhm=PL5V|r^!6`B0MHo*?IoV% zvNvPae22XhqF(dB+O){JnJN03dae?LmB9yv)Kq)a)0;_@ASn8t$4riB-_az4SIxvO zprYNX@i2^YuWgzfycvavl>C%k=>&B}7Iw?tH0TrvJ+A+LKe@#uQN3M$C)c8+Ym?O2 zu{T)$1~Q5q7%xH`<%}ItC?Nn+VcCx#wy9V(1&%j+?NqIJu7eK1qfQEN|rNm zzqYtcx(^ftZFMUlY_RfH&mL?tpxY~pHU=;-235?4$*;k&W@tyJujQ7%{H^X1D+u%YYns}}aQfVV96bf{6$B<|UrpAP zXenMN;jlrzmRG8JPe^3ei;Y5%On*Zh{|*&_FRe>3d5+BGhthnDR!uZ`JVZuMtG^KI zVE3^$U@#hgAXG6j=sZ$vnMG9y6P-tJ_~sK|rEUo$q?OcPTR&y8OTWQ(Ra0)c3v8*k zQLH4}i9~0g z86l+6SN%pW=>=lyIO0U9A8#o@tCmW=(rT1^SOb9=dGPJWUi^#ig`;gI@#i}gV_xPq z3x4hE3DbeRyyS#?>hYJOc2WIWo0koUD%0P-*Z_uycYsocRCn#>a68@=`F6vYSaGj4 z=yuXI<6QbYSAM0biWhUd%!a!YUZ8|Z+-c~%n*@0!2?<_({gR;cwa7sOH(W91VvN{H zj1|$_JI9od=WEBwsKH1r@d$m~UG!Dw65FSSC)aqxQn4{-S_aNP!fR%n=Q$xVcaU{U z06+eSPi)86;6^&ZG<=!f!8}#Tfb1xPo@RgecIC_(gsB|^lRWWyX}D0}^ zHZeY8{nl8X4huH>@)QwUb)8ED-1wuuVhsS$s6&F@iJ_7IxyL;<2oC}UN7DdDZk(iK zv)IJ+p1oEhicP+Xp@MPDE{uOas`w)7y$NdPKGDRH&J;#X(Bt?P5RO_l2rmg=dNO-W ze({v23xWgOmMi}qMWu>ax{4>P!9lW=t9HwAot+5M2A?76=bFG+7)mZx!8qK3!;0IQPII<&YA=AfQk%ou}* z>lJUmlr2lDPS9om(o@JJILCa$+2-CjllOj&YH-R3WI&;v8Zs&-CEI1MO*0UE_gE$c;Zaj(HaaskD+9 zmSPZN5K0GU-1H>Ga09pQkFwh97?*yeG!4kjIyv!NM#^dLqHjR0G4QA6RLV+p0f6nN z1x?g-O2XYbZynH7T(d}&k!^s$sv-&KvpRCz8a-}Yn&a6SePoLIcR^3$$5O%#z3*}u z6cqa}>!4mo!rZ9qe`-$`3m>E})YF(G=ffKhNkDGtC~E<4{|nj)ho$N77UZLG%8f}3~%($EakZ{!~+W%9Zfmye>8xO z#cy0~7`0cmt|r~Tl~O_^3)=;|9r@+nVDbB!{d%yNj{S*7&{siDnmFKgo$x!}1$`iUgt}Sq$en zD+L>{22*PNmt(=(l`1GxKI18UecjUJ$I9T;n)Y{EMJJ|s3gN?*rjOO>D_>m2smVfu zw<%Qi_G3!U^(*TpNrTx%bG#1t8pwE(U_SwX7Z*~NVV!6;OZap5jFKX=j6VQ+BkLuS zHPeI2a)-`hsfRAgA%E5-0N2l(W=lTWn1oskbc=vRF2Fw2U zn;a3q#2k~9`R;Qo?b#?P)>PNe(!(zUK&hcf{*R+ywX83#Z)O?~(aw6kqcTXs1FTN4yf?173?1r>wZ(ZI!O0uiQ zM6Yvr-_u%9xCpQNv%go4VpK$<^B|-R>rpP+o}y7y2Z2xf@Aon_(PhUP$A~SmkbA>o z9tuQ>`NdCat>d&X+&Fr_kxkgLH(crv1@D7*8dKk|5C?nSx&dcb=cu13f!{HEY!1fN zy?w{;?5Fc8<(i;0%{q6a6roTFODyRF(>%XJLQp3=+(KE!RS3g*7b1zV zC{`O)?c@aCn=>=?%6}$0NxLGbUo|!%HtR!n0o7JePhF?|XbA{cit#?T5JBK82$5xx zFde*lBqr!RIH3Wp{chOyWok(<@Ftp*S4FmOQeE?t@(O1_Hk!eLOhE zHika8b}h5WbU@#R6fv(?{DwW4!J~i%0a;t^)wki*9{-ttM-xt&VgecGq(7iex+G_U zhoNWPiyDfaV9U4g##@;f6z05{<%02pn{V&8-b zrK=2R?o#XGK0{D_Kefa**kA@17;2@W>>Cl9Qf3wIeT6QDxb1PG&+;=p@yu2f6?5uT z#?@XqFU@a0TAggrr2ct*)ZF$LuhuB=V5zv9m~t5hs?e-+&Di-cECyt=V(UQ*A1P4G zxt^!ky{KcW7}Js;hf}eB82qR{`8(OoB8{xiN_%l{8_{=4m-M{?K&kwi_>ShYI*xG) zKfE5Vl}llO^@oO)6ZY5ou^3;pV#rb?Y02c(T>3X?xLMH($rd^}I$q)eDxJ)c=m=u6 z+#gdr^?L^qfG|Qv!*cb7Jb4&}tSr#oz0FQzf|JWde81UPqxwDEamkD%(!!z(*t;h{ zvOaMdTG}FV&omG5lFq^@F-kj@PLb|pnZpVsujLw!C^*}xvG!tzBC}?p?A^|Y{%UA5 zbpgwxaqp>?gm&BL+}yHO^AR15HJ0vmxCo$bX8pQ@@x|uiD6k^$#x@U`By-JIJ)UpM z@5qA3cJSQIC8y%W@!o8`zh3`0Ba6}C7zpd|8YWOq>az|LpGHFDf!>Akcc}eynDZP&I9m{Dh_Gn1fRGBsd!9EK5&X{&EV{}+aGHr`Xumh4{f{%R-lxS7NR~Ni6}-D z4P3y?%Z2-y!Ed_WBs z?8X|7*{vJB}S=&&+rK&OWIwEE8``H#K%CZ?U~(*W*%_b4xB5Y)f6l#L041^YLyf6 z#1%h#=?feiq+PLp!_ox!_w6EP3Jafx^g)AsTvQ8d-T3Yn>v1sJXWDEZD2)10QnEnd0LL zLYtG71Jy(|+2B!NRlnODPs754bN6xe{TMP0F|JtdF3JVtSVu|}iMy-3bRAA*rdg88v-Hl+M9}Fgjb!z|b)%=YB!aO-eFH^YvD?V_7>9b@B% z>4V?qPr`@KS%^*3tHWNtMFX5)C+!!P{>k#U-iSFx|1EAN>ta{;jF+$5FsahdooDw} z#>*v6HXJEzq8<>MI3y{WXe&^>C4gPA<)VIt$hHAyzE~8S=8{mUcTgD-q0!iSxu_6s zsE++=NivNpgHp~|)GsNuldB@fy|=hldqY{-gv5i+jsCr2;%&Nk!$o_63=-Y_^Pavj z`STnTDaJ`2nY|A7-ybiIfAmj4SQj%Rv*N6eVURQ*g;qiZ$CYYDuCQE%<3DHzSQKj5 z8H+mLJzOT~u{uvvAbxScZfH?g=`c)x!r6pHR;V%NN0>$#$hDv9A?K+)UyS}v6_{o= z$_}aQYPQTO4A#-SdEPW2B?Zspp%jEBIgm73wl7V`1=zgTh-`)aUG}0b>i=Mb@|;T* zXV!Kg;D!vVy$%4%b@EAU0o^nx%5#P$F%uKf|HR(s}B+hRt z43!>J%I1YMbz8TKpNy(vqxoGLihj7+qU=Tic=A+r+X#k0MY7HDGJ>>wLkoF7c#Syr zm9m`El*pA1FidQriTwt?qBFKuQ$dtLZlw=vHVNbRd}8LHB?0?0qWtsmFZGY~&q)UU z!<4C%fjg|a___D?Fs@u*P4Ui1{=rbT0P0$*kK4=YD;-{5@*Y6S{ zTL8c_k`65Bj}lW(I4NA=eER}6;7-H5IpgOZota)$xz7LzY%lx$JHmrAY_T0;|JKc~ zk6)R?wIhM-f<-+b-!;(g^&tA^Yws<(@W|YEt&tWHt}nYR#GmhwV4(=S!H(X%LuymV zA&AfSQB!oSK@0?aj}0#?91*u{t$GcXN5gNM3DchV>8Te0z%s-9C_GXYuCy3-e0Zub zLJpH+cf@)uSt>AmyVc1=jsDOzr=-v(u}wyV!Uk_06E?^^gPOlB5Y{tJSmX& zbJ6S|yR{5yg{^MyYc!Aq?S}9boL-0f1u+ayxIEY4b4*P~ZRDYvEOT(aJz`%Wl093J zh4x6VF%_PqFkGzsi|)i&TkDEzKbD?m$7{F+gl4Cryp;;Z%*$TV?yMQq624YZ>aBB@ z>Bb^}0OgMEU;WfISFmF4bY~4ZyK^Fu7g=Uw@*$5s_$?z^;a|)k$V9Rwd%B{iSVrv7 z+%A<3n zBZfa?SkS7NBrC@ZB54-Ey6=bSeWhoq!!f{51?|lpwEe5FhK7EV0m7T(itg*ZBt`w4 zffaKKDk%18k0{)*K0KAIR!1YXcI8f$FiqaD)6#~p?=Ro0$hvgpGol9y9i@kg{e6pC zL;&8P7g!slFVXl7Vj_N^!y5qoq^d_^SYAF;>YO^m$*anRSi&nP{B$c6R{u!P1FpP>mrrs3H1CC6)T z(@fa%L*g;@H)Ltx@VANRe0IYlJ2{ra4H3{q*