From 85d8e74ad1205438a4a6c97631a7367907a3e998 Mon Sep 17 00:00:00 2001 From: lucasdelimanogueira Date: Thu, 16 May 2024 18:06:50 -0300 Subject: [PATCH] fix cuda add broadcasted --- build/cuda.cu.o | Bin 114816 -> 111744 bytes .../__pycache__/functions.cpython-38.pyc | Bin 7539 -> 7539 bytes norch/csrc/cuda.cu | 83 ++++++++---------- norch/csrc/cuda.h | 2 +- norch/csrc/tensor.cpp | 5 +- norch/libtensor.so | Bin 147176 -> 155760 bytes tests/test_autograd.py | 3 + tests/test_nn.py | 2 + tests/test_operations.py | 8 ++ 9 files changed, 55 insertions(+), 48 deletions(-) diff --git a/build/cuda.cu.o b/build/cuda.cu.o index 87633ae3a2723d424144d14593cd6f12a57de6d5..5c6f27d9a8a860fca05738b383d55d171f2a3d60 100644 GIT binary patch delta 29018 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 delta 32222 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 diff --git a/norch/autograd/__pycache__/functions.cpython-38.pyc b/norch/autograd/__pycache__/functions.cpython-38.pyc index 1365c910e5ee2f2b8afbc623d1f65ae94fb698a2..d48733e29dfa77cff51a2321223754822c1d80b7 100644 GIT binary patch delta 292 zcmWm0F-rnr00!XRK=e-U>pJ!HI-8v$XeopeDHROVh;S?jT$+j^!YHr?FB_uQa;PW> z6EO{`t!QefenJrR4;q}au4j6>k#0mRD2m)?ThAx*J*^`Y2@?!SD>Nm8S5g?`e3jl1 z<*~epY0B<6rkHgXt&VMeYc1^Z!W%__pWY_+Y56Rce8U{|hq1?;{{v-?=@yRoq{nf< z{y+^CszII4fjLy|O@d4Z+c@V>u!>8b7%80b%c$dqrJ+MK=r?1iF=y7%=C4^qhs96~ YExv?K4P7{eOGrW$nvm@|?YsW>2NxDwJpcdz delta 300 zcmWm0y-Nad0LJm2K=e-U=XH8|r#3r9&}dX#q>+(XQ8pL3v=-H3;1Jo{&{GCMFBD;- zS&~ylQ$zJ91VR5ngImzc^&P%^nz3d~Oe%`pV)r$d$V$GtP$YCSBF&@MzQI!|iWr}z z7xZ&iUP6MhI}VF!cLPZ}JY|gV+LOW%e>_!8u%et}ilbrx6>M&;b zs@AZ`m9|YR)1g^d;GkB*DnGR=R}6)%!Es* g^EaGFgZYSs8$LyfrYW4lB_yE=O~|&Kwq5`F1M<~eoB#j- diff --git a/norch/csrc/cuda.cu b/norch/csrc/cuda.cu index 8922346..460baec 100644 --- a/norch/csrc/cuda.cu +++ b/norch/csrc/cuda.cu @@ -17,8 +17,6 @@ __host__ void cpu_to_cuda(Tensor* tensor) { const char* device_str = "cuda"; tensor->device = (char*)malloc(strlen(device_str) + 1); strcpy(tensor->device, device_str); - - printf("Successfully sent tensor to: %s\n", tensor->device); } __host__ void cuda_to_cpu(Tensor* tensor) { @@ -58,56 +56,56 @@ __host__ void add_tensor_cuda(Tensor* tensor1, Tensor* tensor2, float* result_da cudaDeviceSynchronize(); } -__global__ void add_broadcasted_tensor_cuda_kernel(float* data1, float* data2, float* result_data, int* shape1, int* shape2, int* broadcasted_shape, int ndim1, int ndim2, int size) { +__global__ void add_broadcasted_tensor_cuda_kernel(float* data1, float* data2, float* result_data, int* broadcasted_shape, int* strides1, int*strides2, int max_ndim, int size) { int i = blockIdx.x * blockDim.x + threadIdx.x; if (i >= size) return; - - int idx1 = 0, idx2 = 0; - int stride1 = 1, stride2 = 1; - int linear_idx = i; - - for (int j = max(ndim1, ndim2) - 1; j >= 0; j--) { - int dim1 = j < ndim1 ? shape1[ndim1 - 1 - j] : 1; - int dim2 = j < ndim2 ? shape2[ndim2 - 1 - j] : 1; - int broadcasted_dim = broadcasted_shape[j]; - - int pos = linear_idx % broadcasted_dim; - linear_idx /= broadcasted_dim; - - if (dim1 > 1) { - idx1 += pos * stride1; - } - if (dim2 > 1) { - idx2 += pos * stride2; - } - - stride1 *= dim1; - stride2 *= dim2; + + int index1 = 0, index2 = 0; + int linear_index = i; + for (int j = max_ndim - 1; j >= 0; j--) { + int pos = linear_index % broadcasted_shape[j]; + linear_index /= broadcasted_shape[j]; + if (strides1[j] != 0) index1 += pos * strides1[j]; + if (strides2[j] != 0) index2 += pos * strides2[j]; } - - result_data[i] = data1[idx1] + data2[idx2]; + result_data[i] = data1[index1] + data2[index2]; } __host__ void add_broadcasted_tensor_cuda(Tensor* tensor1, Tensor* tensor2, float* result_data, int* broadcasted_shape) { - int size = tensor1->size; + int max_ndim = tensor1->ndim > tensor2->ndim ? tensor1->ndim : tensor2->ndim; - // Copy the shapes to device memory - int* d_shape1; - int* d_shape2; + int* strides1 = (int*)malloc(max_ndim * sizeof(int)); + int* strides2 = (int*)malloc(max_ndim * sizeof(int)); + if (strides1 == NULL || strides2 == NULL) { + fprintf(stderr, "Memory allocation failed\n"); + exit(1); + } + + int stride1 = 1, stride2 = 1; + for (int i = max_ndim - 1; i >= 0; i--) { + int dim1 = i < tensor1->ndim ? tensor1->shape[tensor1->ndim - max_ndim + i] : 1; + int dim2 = i < tensor2->ndim ? tensor2->shape[tensor2->ndim - max_ndim + i] : 1; + strides1[i] = dim1 == broadcasted_shape[i] ? stride1 : 0; + strides2[i] = dim2 == broadcasted_shape[i] ? stride2 : 0; + stride1 *= broadcasted_shape[i]; + stride2 *= broadcasted_shape[i]; + } + int* d_broadcasted_shape; - int ndim1 = tensor1->ndim; - int ndim2 = tensor2->ndim; + int* d_strides1; + int* d_strides2; - cudaMalloc((void**)&d_shape1, ndim1 * sizeof(int)); - cudaMalloc((void**)&d_shape2, ndim2 * sizeof(int)); - cudaMalloc((void**)&d_broadcasted_shape, max(ndim1, ndim2) * sizeof(int)); + cudaMalloc((void**)&d_broadcasted_shape, max_ndim * sizeof(int)); + cudaMemcpy(d_broadcasted_shape, broadcasted_shape, max_ndim * sizeof(int), cudaMemcpyHostToDevice); - cudaMemcpy(d_shape1, tensor1->shape, ndim1 * sizeof(int), cudaMemcpyHostToDevice); - cudaMemcpy(d_shape2, tensor2->shape, ndim2 * sizeof(int), cudaMemcpyHostToDevice); - cudaMemcpy(d_broadcasted_shape, broadcasted_shape, max(ndim1, ndim2) * sizeof(int), cudaMemcpyHostToDevice); + cudaMalloc((void**)&d_strides1, max_ndim * sizeof(int)); + cudaMemcpy(d_strides1, strides1, max_ndim * sizeof(int), cudaMemcpyHostToDevice); - int number_of_blocks = (size + THREADS_PER_BLOCK - 1) / THREADS_PER_BLOCK; - add_broadcasted_tensor_cuda_kernel<<>>(tensor1->data, tensor2->data, result_data, d_shape1, d_shape2, d_broadcasted_shape, ndim1, ndim2, size); + cudaMalloc((void**)&d_strides2, max_ndim * sizeof(int)); + cudaMemcpy(d_strides2, strides2, max_ndim * sizeof(int), cudaMemcpyHostToDevice); + + int number_of_blocks = (tensor1->size + THREADS_PER_BLOCK - 1) / THREADS_PER_BLOCK; + add_broadcasted_tensor_cuda_kernel<<>>(tensor1->data, tensor2->data, result_data, d_broadcasted_shape, d_strides1, d_strides2, max_ndim, tensor1->size); cudaError_t error = cudaGetLastError(); if (error != cudaSuccess) { @@ -116,9 +114,6 @@ __host__ void add_broadcasted_tensor_cuda(Tensor* tensor1, Tensor* tensor2, floa } cudaDeviceSynchronize(); - - cudaFree(d_shape1); - cudaFree(d_shape2); cudaFree(d_broadcasted_shape); } diff --git a/norch/csrc/cuda.h b/norch/csrc/cuda.h index aeafc4e..e333ea7 100644 --- a/norch/csrc/cuda.h +++ b/norch/csrc/cuda.h @@ -7,7 +7,7 @@ __global__ void add_tensor_cuda_kernel(float* data1, float* data2, float* result_data, int size); __host__ void add_tensor_cuda(Tensor* tensor1, Tensor* tensor2, float* result_data); - __global__ void add_broadcasted_tensor_cuda_kernel(float* data1, float* data2, float* result_data, int* shape1, int* shape2, int* broadcasted_shape, int ndim1, int ndim2, int size); + __global__ void add_broadcasted_tensor_cuda_kernel(float* data1, float* data2, float* result_data, int* broadcasted_shape, int* strides1, int*strides2, int max_ndim, int size); __host__ void add_broadcasted_tensor_cuda(Tensor* tensor1, Tensor* tensor2, float* result_data, int* broadcasted_shape); __global__ void sum_tensor_cuda_kernel(float* data, float* result_data); diff --git a/norch/csrc/tensor.cpp b/norch/csrc/tensor.cpp index 4118e95..26b6c5a 100644 --- a/norch/csrc/tensor.cpp +++ b/norch/csrc/tensor.cpp @@ -150,11 +150,10 @@ extern "C" { } if (strcmp(tensor1->device, "cuda") == 0) { - float* result_data; cudaMalloc((void **)&result_data, tensor1->size * sizeof(float)); - add_broadcasted_tensor_cuda(tensor1, tensor2, result_data); - return create_tensor(result_data, shape, ndim, device); + add_broadcasted_tensor_cuda(tensor1, tensor2, result_data, broadcasted_shape); + return create_tensor(result_data, broadcasted_shape, max_ndim, tensor1->device); } else { float* result_data = (float*)malloc(tensor1->size * sizeof(float)); diff --git a/norch/libtensor.so b/norch/libtensor.so index dd541411409203c335b805a6b165023a0035897d..c0f88c28312a014cd7198a82bee5bcb903f9429f 100755 GIT binary patch literal 155760 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 delta 39175 zcmb4s2Ygf28}_+3qfKd>Hf_3Sn{Ha@$WB@)lu@kAqJV%PlnpYv6ij4}!rynrA> z6jT)WgMw^CrpORbrWP3n5Gjg+pw0K5al>uU@B4lCM{@3Yp7*@#jC<})XsQor-2eDj zM(KLBMdT=;1sZ5yRNo%3#zL!WEQHHei$d+v+G>Z{a-Z+TLIEg*DK$l%*2{+B0b zn8q{0a=uA;Vs6*jZ%*uYZ+&KiNgb=XYpH)W@e_XG<5YYz?m$Z+SkX+;R5?|6RdHM> z=KbG3%=x)cH?Z+Kyn4W^1YW)2B^`a>q%W)VhjJji2Epr1cnyUYK8C?-I5|V86v~nC z8pG;ip&ZA~$3r=holj!rWb_(6n*v2S1935foxjD(Sy0Y_*Iam2z-u17ZtPP8~F=_^QtQ4h<76~T*94=fa@$acBl?b8KFG{HPkK*1Y&FT>qJ;{3$p@Sxp z%OmH%ix0E-NMV^KiYq3-MJ%pbEvez&!F3@dphztLmQ%WPC>X6hO{2+UK`qgMD#Sec^aW(_d0%kaN1;sO&d@jxc=t;Oj@xC0jkJdmP6Vb(# z_>&gsAv3(WD+OL-5xk_L^6j@%Jc$|T$Rb;`gyKDz{4SWRSpP@mZ9#KC?Ivs$v~>d_3j}`OkfdA zWe$zPqa2Ro4A%$K26azT{2;>vnWK}BQCu2BvCQ!7^Awj13qe%R4l3_L6Pcp#Kn_PX zdIN26j~1wqIplnw0yi1Hfkk}BC*tp!qm^f=U|*(xj+W|ggAKtkp5V~`PNt}G1|=d{ zN?&E3@<%ByIogl)Wh^t?oziF~!+V$4*7F${!hyB_h~mF6hYsUG>H=c=5K3HTgXJ7+ zkh_NB!x`R>;mH%qF2O4z9MV{M%5dRxMCYG0&DJww#AmdD zq^KF|%UG5=sV`?S!)KOJ`N6b6pR@HK>M#YQLH#RKaVC0hr1%+T9~oF5zq6hat7w4+ z;}k&yZW{&KvDCF@eYukjE~$^tF-K=yrSg)a`8wET#5Wg8c}F7;u3`4=0EjaVjn zQaxxn@YvDUKcRrM0^-?-acu{RFJS`lE)e~$V07gRN;F`D>rFNoU#*~c0yv0| zx@<6B-%9IJ7o213#E=sdmsV0WOZ9rzHPW@Cgay26GswgEL(*t`n|b>24ys5>-6qz6 zA3$*_;$W82lyel9x;9B%)3r;JT0+(bl_hIj6YzbdLP?PNvUhj zGO>ou0%@#R*;p~NOh~ilZ-zhm7HfswE-lbGCD_NKx9A;;e8{?B8tco~*zlK9H;0W0 z`(7$9WoS55u^vl1ir;2>Cb2Hq$ws?$Ip#yC{Jcvfe%O1m1~wM);IUMZlxiF6nhTRD zJ|7&!M*x$5xRTb{78@;MUGU%_#icH|$yUZ=M<|}h?4t+Fz@eR#kRp4HUCq)?QCwP} z{$`Oi+(dC{Fp5n6%IVtjds&wq9!2r@*`UtTFd}mhC8SiJV3B?EF2z~kXd7E%t1oXm z5k8+24;Jzbwr!0#>9=ir{B3^Q?}@)Fx7|uhr5h^_ap)1`8vdaKconCOhvxn$I+QBK z{1q90Zu6U9)(<6mc^=(myb+qrT7>6_8f5~Hb(X~pf`lrO!z<6Buc^F?7)-kIJ4_M< z0kKIAZisl+7}vuG4T9OLLd|O_W0q^0^HJ*WwWq=8i|Bj!?B^4>*;r^)bMGQ6G) zA1K4^GQ3oVL*IE1*EkvB@WOESCBvo5B&KJ}@Kok3e(GEc!o@V4aHsL{uSVK^Z437$-g9uhx)Io+P$Z&kuEgk7HytxEIX#|{f z6;_0eNQYC_V4eg*Ss=qpWq6ScXDcpYi)A>wHW9qbbKFIqF-W?4Jtq)b0SPrwhT{cB zI!a}DfdoQ1PKKAu@NyYWS5`JuXUm8gvIdnhe1QyKCc|gT@HH}=ZEy&?QHH}x?mf1+ zWQ4T;#_UcRZt;r49zcfUMMOG|$?#$cgz}6GpD)8NGTepxzDPz?$r?0};cgkuc3gz5 zmf={JbUcyaZ%QC8L!S@cvghj`TyA8<99e@98UDHqkCNfia*gQ(8QwxBpDx4UYQzrc zf1`}ZlyE4WGF-Z>V!A+vzbcb2lHqU2@M0MbJ1p<=9;k0FWVT5|g8Z46G17$c| zpS?$^42KPk_ZTO`J9|-B+GV&4uB+Z-wv1p`P{LKp@PS@wSleZIunb=#!yC!)jWWED z;&lFPkr7R04R*@#W-|PM42O+__c$iQ`+HHC1u`7=9p2+&sO$M?guR9LsFF2k=tU87 z%W$0xua@CCGW>}Q&zIpy$L!+x!)1iOL;$9j;UO|SLWW1l@JJb+Aj4b9@N^m84{(}) zI5EnInX(2>87@7##dLuTA1{+HlHt>2c(DwB?K$p3U1WsyIe~h~@F*ERP=*hZ;iWRX zw+tUA!=q(*Il&=*JpJm*h}p6Ru`;|;hR4b9Wiq^z3|}L|+sN>ZGQ6iZ{~)kMMx@Ic z?3CdK8Gb;9C&=()GJLuWKO@5v8BXk9lo3g?230b=n+$i$@LU;QEyKIW@Fz0-B^i#w zcsf~d7YvpW{%q%i@i8(yBy8JVYeb!GA+}!J;(|cKX$}?5JTRK~oGF_AmH#0k>9PF; z@Nb^f8>hE5DA1@~a2f=UN3{mH8vL$}e+qS#PyL@`wfR4M>i2!>w|wf?eCiiubr&}H zjSRr`!#?%BKK0Lh>Yw=3-~WHqS3T!lB;x;%21Nen@t|nO=a_ zC;QaPeCk7e>ivA`J$&k&eClnbx{LLBp#-pczE9oeQ_u3Lr~1_6eCm3idJwC-yo1h1 z;Gd&DgU+XZ-=}`dr+&?+e!-{y4XwirXAvLv5!mZf|IDZUiBJ7~pZY4F`cj|zd{TEk zpLR2S1Sb2`%Y5oXed_&u>OFkwoqXzTaor`G_k}(J`95`OoL< z)mnIb1pYbVGX{L>_kHTOeCpSH>KAQ>#gF@n~`ViMz*qEQF@p$%wN(9o^+GPg){ufA3KfvMk4k4m_ zI@efe(msa!Sm1_7gj`(%g7t6{u;+1qB9yl;l zYV7h+_gvxk;%x4jkkrA!y()C;kl^~|UCKNKt1}OjWfWC_pA`khqWQM(81*Bif(Zpm za-e>%G1RI-Xe$%iMTP3g+Am_%YDz)6KsB`A|J38DJbnnT?VW_bIy6l_u@|yc0lj52 z(kA2?wfl8wM-y}QiQwrL-BnE#jdp^f14R`@MktRJRTM+18s$}yC|9BMs+a(MMCBni za3b%|=UJX2oPH&dn_B522ukUf9+#GJG0#dJg1$`s8XlkkWT!*V4Pb1J>7r>r`KT zELYK~x~QTpBnpx==M;{4+n<7Qx?V7L((?oU5bpHIX{-i8*oNYao?#iiC}nh))G3Le z-0QRwT2Lbs{t!C9VGZy5hp$foyRc884Of6qZ+T-3{6qNajb-VrzMyL79NdK;((J?8 zg4x#x3m@_7Zu3Z((evf-#79K8Y~mccss%1ErU=BFXDhh z9}0$E(fpV{gtc?Rh2~x2gUt^?l1;8LzYD{=Ba=)`k{*U!w%9S#4Q4A!7a!r_(G`DH47$gZr6zcF9U^r zdhIu1U)Q8ohknH_cY3 zXWu8F!t35LP(Y=FACTF{gASaXkOyS;O}a;BU)e8s_VMki1y65%_*m?Dt^CJr!``L0 z6TpGx-iQsfcYPU?_zJB54l-xsIwvW^<6ULF5MwRZUL6`8FJ>$WXSbd2oZh? z@zWt^B|23qLWbHgITe#+$obtRL$2Sa#4+!J|B2ka>N}Ej|2t&Jb%Q7Kc*qUBgNGb< zUO3Y`f)BcjM;!NoP}4gi{51Bv)_^PfgbcV3;F-AlA$Ua1kHvB?uK1<5$$-naiw7LH zU8wA13qE!0c`9^nl8S_%Nh&V<{9-D`Zz8Gq2tG}5|AGA{vu`4ntWdQfWawl}9`gp* z?q^|b|8U{QfsF#}z~BH|{4AX9o5XLqA#5EV#Yf!65jJpv&-YxomnsS}iz~BGbzLwFh~lsQL{^MWw}s*X`tT_?eWOYFkVMl7J}Pjpfmo@^w41_e+8D18 z7jBVgdfk9YV-22g{dqL|Zjc^3`4j1}sW?ubcv3f#cskDp{c9l#8c#heS)qEeff&!g zn$`PlH8iB$ih&$zV^akl)G0K6j13!Kaz!E<_y{k!jI%y}&rJsdIr|wv9#Otu!i%Uc6Yor%CR*|LQN1@-)vCa3dBThD*^B3K&_JmNp z-Ovj3P$v&u!x{_M(4Au8MtWT*dze22!?2hpy{R79@P>ddUJbuPJE~z2)xcUFb!S`w zjjR`jUK7R*OW-G76;=#OjYz?g-mMnhj~`o0df~6B5NC@YL8k`}_lc|6E7d!M3_Xd- zNKBGmSanrMAAT?V47TI#Q@pnyvj*$R-cSzWzj^%|hvh0*WbMvSWxFcst$pqHGuUJHYqGRTO^pe4$IA&d3(JBdbXVK87b> z?q*(Rj$I~(@Mc18==x!>YQ8AU9vk0y z-Fd?L_F4sa>eFjGv7TDf?hR^h;Uutk*_)1D#2&c^gH+;8KDh^*bDs2??h@XD^Q*pN zz1A#w)jQJ4bp>+Z&2KiSp#iM_PDm{4l#xp1ymRz04TLV0TfUQ|)4szU+Vyn+*iz}+ zp~qH82FFa48SLs+ar%NRW00za=b+9y^qdenCXv5>p7iH(Ea=mp`720&4x0c;`2xoP zQ`F;bLR6|k2pQTGlk>a*>MjV{QOUx0V@kp|;qIu_sjn<2ojM&pv2&mDy4aC+8y$1= zZ7yJOr_Mi5I`yA3Bmmz|y$w$IbZQv2C!302EF<>rjstr(uf5$k1#~TycWTO6(y2o) zkWPK_ExBsz&VnpUSLbu&%F_2+a%G9eTD;NGHEpj*^7ZRju$K!C(tPdz7TZ%*5;F84 zCIc}^#{c4Py;toCz~I1Ve~Yi$+#_Mj_-KCDX?(fh4hh%CM}+@^y{R>97r%`yh8}{C zsocR3KUKQqEV)K^J43Dx&Cij=<d0434Goe!O%ZC;sMUIPej5} z646&>pkE6S(})YVV5Ie?vTyjnGz$u|FvjM}o;C(1@CBgXPEw#gBc6 z;!8Ak{xlh#^G^ypr`Ust18j8O5uQy+%zFH_$5T%JHT?+=L8uyBaV}ClZG|;BA z|6o3e{rjO{G6^z6O>U$~#j#7{rtk=f{f!eO_B%&O?EcsR7JHjxB=&AcN$gsz!6)`@ z^GNJBp|9OJ;2@3tv!gf&)mwxN-GNCSlO*=pV290_QebfGQ;w3@?;gUSA2js0CLS)m$E$j~*Iya(x^j*I|1EcULz;MfNoCb6G8 zh?~`lz48!={X=m6Ut<6EE8>xCy%;x##Qq_C^~C)M8c~xIuw3o+VixUp;}H`3?n5N@ z%h&-Hd;C`<_RK>h_Ukw+KK(v(Hi`Z7fnW;{SsME+(t)Zjgbba7$@7p7>PR=R!(wj+ z4353{5Q%*cwDyVpLmK;HaQT^V7c0{SMQ_OiLXfP z>kq>A46YN{0T#R8m%gM=|5FdLWYjS z~UMoOAJoOA+bab*)NQrm%vZh zC%iK+IwA+F@YzD1n@%#R>{UI|Awhh!g4D zCtRB!-*n?H+(Nn|gQw8+x%wi|cP9hZoQlGe&o6hov5Vd=#W^UMhTUkm7`~e2z6NdB z*uioYop7*H){1vy2;cQl8x`;=5_l24UzoRG3m>^hXuL3jf3TZ8?ijoCno&Dc)eTTQ5Ue?Nw+a<)TnanrZBrIPuoZr1kXs|I} zNME}mu)(YFm0%b;$i3l%ZKu{wjrDRKt-~fszAqNd34u>`&24Zm!%$WXPhAP)dmgBqQ+RdyDL=1Bg|N@92ITH(xQ1Ha}S z;o)WnKVT*CsU6{Zt04|}))7(B={yW-cmNNdxzbzMz<2OQ@gi&#@057J-X?Ix$Kzbw z7sTW4MUux$p&3jcXmAD6;I^+3zTOfWHV!25C&75E55bYtdl#0AFd=B`OMJt3h(k&5 z5N9v1CQ0hI9E8dtQ$8kxR!b(0FG(f`t&mJ^1|Qu4t4WgDfTY`RmDfz&6~qj`f|%L$ zE-`a!83^?Pmwn9K2Sqfpkd~5}m%*j|5SYik5clBSRm4mtj`HVsh?%zAiuk9?h?(ol zh?(W9gxJqh@)aToH3m0*%zO=ssF`2kTS#;Q)dQEPnW5m9``AiiCIClvc!glx^*Vo1 zBqsKY#KhQ@!l_*;`PbhDfmm?S$Ha%Agqk?nTr!~occ_Wh;FJ4xGZQO3*fEyRSRxqr zr}5A?l{+)@ld+8{;G>U?I-rHx$S#m<3;#X+685$?S!n`}f(sJPZm-85 z7D=v}ECSKN;GK_w$Do25h-o4jcy+O4U^&k4qqj*Ac06t#g4fXN%Ecs4_ZE>nz4tch z^-n56pa`7vF>wKuP!mt`B@-rahsH1#d~$!gl$Z#|@thXeTGEXFxssSURY}aewG=NM z`DF`1$Ota_nAr=8sF|upl9_05iJIw&6TE8)G4nSzxnr@{%;|;1%;yWS8DYUrKjFgW znEY?%gH#mw>0{@8&_wMVYbe>_z$a?wC2-8WP9Sz}Vwlq?wq@rm^q0}&Z;D4KHXQ&m(0f_t6Ma{u$o50G76V= zM0N?Vu9m@?del8>9<({S;03E4K`*sB7QU>^p74PzwfZMceTPMOym8%y4!d9DN6#Z6 zy*`hm?#}MSd~*fJ>;*@C;%NmTQq4o1lI9OUmTLY5TyeitN#dD<$5D#~Qrf`M!97uY z^9o{u+nd-ZZ!QSD4_^70FoS#4L??%2Vgblf6X$WFbA&hcCUKd<)V;6qE#?y68_Xq& zqxU7|_nreH^T8<}#WCO=Rh(~^6psN}s(261W#j_vdq7tlM>qh-g@TRY>2*7CsImwB z-VuC%3$DzefVjW)fW8Wq3eIt7{4qypb1067yW}?ym1`OmV^r0nqfmLOfZsh&*mt}r z;KTM*bVQ;Maw5w(l2!8(VRHaa)b9mK7qm*S4L$y(Z;?frnhu+w(JFVNxkAFVDB+*4 zV)!lBDalY!?&Jh-U7skEi zb^868MCszzMCtVQMCtKaBr%>=G%>DNl9*$xS`_Q6_1#%7I^Alf*Tx6fhF&;*dZ=dF z%f!x=w!}{KTg1+TB5LP!46(D5RhPy1+WB?ni*{B_2Rq?H)i=p}hiSqO-%ZmDCGAz& zZHSG&Gl-4LFHsvY(Zt4kta>BL*GBG)7j4{{Doj1?;D^lc#!=Lg#4)uMw!v){_8xyZ z;Il$%q96RZ92iGaST#G+*TjrzFPboxd&Af;nRLm#7R1DbA`-^4auUX0&8dy8dSc^C zR-K^twQ;8WMH`c*c)R4{L?Qm%G0p8}#KzApg$L&fc$G^qoiEb7O2DJ;-NLl<*~VB_ zn-S(~;_{RiO}sTps5<`=|IZ|ErnVLk6ZH#8rV50!r(O<-C)iQmTCZ zkf?vXfT-^}4y)JHBj8cDR>;1RZLH3t+AjwBYR?|`qV~&WMEgDJeSgwcb-FQ8e|QY> z{#-6qII#}#ekH56sN<`D#h4fMw;WCM9~}eT8Z8XGHbA2%?N!^U<|q=!HaoS^(4WLHiB*;U zzBamzdeMe@1c_tAD5C#_jpz@{Bl;hXAo?8yJnG({Ci)Spma2XA9~tqY{*l9p{!yhw z|1c}jKg&t<_b4U$uUM%6VJfUYXFaQ4g>NF(9{c9f7xn)j7_Mcj+rNpwaVr!biqxv$ zo4*KOFYvX_bwap)BQB~xUU25?d*Y(PR&A#CjKhS3Hxr}UQnDo_U5tD@l#o_RW>GSm zk^3l_OvzYEW-)RmC3TdnL&=pUYO@U`IZ8f_APyxnGK`Yd7@e=bLrF6uFApIOeNV|V zl+-YCEhUdoaz7!8Kl>Cg6pHgx^BXcOZo|3C5X=mi0ZxWmDP;v<+RgBzA$+?uA zPRT}$oI%O)lpIOPJ~`B()|4Db$r4J=Wu%UhJt^6Rk{ly14JHn?qvT7JM2uWRNSBS0 z*_0Hssm%d{VeCx*Dna^QHr^ji{{b4LvVdX8!i?!)=2PoLo$ehQ)=ixD!K zzK8$HR-qcedU*qkIB4v=20JkL`Y-~$orq4sI-^h`}N9HA@jtT(9LP%ng z@LNKXaP#kkZ8sh{_-(H|zRl~N`~(~vJmRaV&(z3OxH7Y<( z_yZmVs9@XPrw;;!R~{$qIOETKrBPU%7O|I(GpWrzds>{f9jA2MAb;Lr5)%Io7u(h4 z;;^ik6~<}A)3My+=uE0p_I?u16)0N#F^-Fjj`k9;g&@a0cvqkpQ5z4m{Qpr?8oq!H zbX~Ctrn4y~dtbm~I#wKxY5KnrWh^RFU^-4*jcKEtA?Lkd`B0#E@ieAQFVOh!&nb{W z^kCZj0R~OL2U!9%nH<4+>hzx z7wGrl;-Elw@d2jo2xb&HV241CsW2*%fHoumokB6$yAdv53gi&mW7>g2d|La%)iVib z7p7BX?da)eKr4__+>B|bw{FQg+hf{6o4|WHUNPX9 z58bE>af&WX!>zS+FxxzIgf1jc+zhk{9xF%(qkn>q(1pNb4R(~nM8roGq*xb{zeAhC zH4P9;v$zDYDw|V^qjNYb=P!Pk1Iu)vc!?Grj8F>@j~h9M7-Hm##3B=yE|wd)VsV^_ zGrnyCXd^&eeetXbM71Jkh9X2X;UZ8hF>^gRwRjNM{Kbc62n73}4E0A+wv;*k2v1#q zG10pVYT>%7 z#oz4QE8@I7F2sdd^7H~qoGYv`UCK3_V~>`}>No&@mQ-Be6=a;Oj{Dm!tJ|U81%?wo zFpN9=*z>vz7I^rh7%*n>fdz1vZ-2*xx%usojMJ7x6(sHd~Rjrped zRoT4J@}<469N3Z3h}#^qp}Y&%X-D~&TrZCQDoD8d#I8}odW4Uk#136~gIMqt7nSKw zAP_Rj!oic5IfJBY*AiIjghhXaYohAW2F2pquQ-QhAnsf^oZ@w;>esNj*@dF8)F70( zsA-s3aF~nIKlv9n3$x|GYKn2c!cij0*oDCSh;u|W95MH z1-W9(QLG0GY-Gy@=s5~{jsXuV#tO_AKt(eSk0CgEiPwP_%Q1G*izOZd>;P`$Y$$d+ z#-+V|9Qb8yt$|bm50kvcAN&cPqc7h_IvjrCP* z6(7x}5;jkAU48;`-H}}r~<3Le1rLRQk%7yF93|6(O$d^yjTtu4vEp9E#i^%oRy&I^r$GEPq^6vWPU*^p2dPoaI?XlEqh7SJoHB_+ zF;zZ*Qi!D+w=#>L5NaT6C8I3jeWGyii><6;))}sWhWs&V%!=1f;}o3%*U%8A3D0Uc zuo1iX35e^nska9OG~)WD^=wx#CbvmCq)O z_bQ30Jn<9KN_dfKDBcH(FJC3DIE!=rEf*#9{7Vxki#cB$`YpJ#`E}-wjA|@?0+b$o zL>0@E*hIWfsE?UVS?C2~);UnvG+=l~CAV8F~A>oMZuGkw#<% zI?ws@<@;bpMTou5a|tky@Oje8QmRENrFPhPyeO7`3StKF(s?d2pdgvbI+Mkx=eacg z;kq437r4*)CWZ+fUO{L8*BZQJl7aS=lUxRCV!>B!Q!t}g<0F8 z0DongEz^eLt=knk=XOP+t;b7>5YtNv%cy}vTJp&zqwA0|+HB!+OqnJ=R8&yeXXCvR0L7vRjefVnq&H!+`BbZ|aV?Yn)#qmu!J1>9OX9M&y4B zg<8ruzgwtTYJY3yT@)OHLTxcfjQ@d4bR`cM?a#$n^Eka#&4pPyf#p0dd{`bAX3OJv z6VlsEC?6a=he91I6xtj<+R!6ItqQkqR;!-zyq@PjRmYm2@o7%Tgu&5V&4oG}a$%0! z$lz?I4mR{291tCxgS3MKIIROE8B7k896UH6*nyz|!A2toW!>OhS~SB&OmHh)%r%$? z2Yd#j0916t=YbyHVij-xz_kjsEKz=j)+6l_WmkixCOF6?7W~L{lRum$hs^SEfIz6ayVuK;0kE>!V$5aWVPPu8mg{4zKhywwq+(DzAEc0txRz^eniSbl;ND zAHh)1K+&cinh2vop}w4i7B%2wQM4lq<;0saFR5bv3!!@~nJw^72WW;Pev78A^W|ie zl_|de6PMjE*_qi(5pa!*%-sX3uW_6%_Zk-tuPFO9F30NV#>EC?a3IwJ@!dGT($q8~ zWJFt#!iR}R%1-gZTiWwZA|$@WY!;uaULwAgYpMdvLpHqBx;XC@&YF05rp3)gJb zHANG%$?<^W^!6VVS#~G1vSo@Bpj8^WXyt3k{s6L83zl{KpooJ;7KbTQ+;@w6LvL{! zy?TS2A-xmJil*D#Xg=O4Zn(|Gr&w}rnaPN6h5yKrwmF!-uE??2KGN{|-0O;X)5jWA z?G*3a<|g+JHHYf>bwQe36mAO*&ajxHP`FhcQYQ-Ww}T>_Mw4osP8EZaQb#(?dS^~> znE6Ujl;cWJj?M9=PLXbNzNu43BJ@3{ovPzFkD9k5z9Y&SX*(a1nhSlJZW0gt%!P+@ z_53K6KhkdL9i3{-tdGPSKXWOOaXOV^YgD}Dy=Z>61+_r|@b@^svna*7Zf=N6S>|Y; z+tXxg6BnrUq^RRf#}wK(Db--3k=V`#vR z5LH>I#n`|3@d)LOP=c3qSsA0=9i z`N-9xDICpOEYR_37Pwf2S^whI$tcYX-4$z(Lw@~q=@y&D9%YT?20+Ne`VAPb!Pfm!R5fN=x#AN%*MqWe=9V_V!kJyzRN|nx!New z*hm*;*#j|wf@pgH$A{_oKgn5|-SWFG!)}g2sn*QdD8p_66Smg@vQ9&h_86qG^7ZTv zvo6YhL&ZBq(>*T1btY6<4>e3Jwe{vSPeL`1cx99>a8PKJ*@ToQLj#ggqy=WqvQW+B zxcUz3?YMwmNU=B658lUe^+pc!*C}_Q7{_*`Q0oFsDAH*{v5q+8e>ODAc1fLLGPXkj z<^os^;?Q!F$>hv6+hFYoR=!_Ql$nray5>^roNoka#`7soQ%7BUV}Fa|OAaXlb$a6u zx{OkL0^}^SCE{1bW|a*o)^XM9p3bICEzM5)b83ywZ)!80?Jc$Pj6&N|$3N`b1KDYyC2A$vMNYzB=|2b;hZ=Ct2TKzN>`p%)_dm?{VKi~n2VEpayDY>?U<{Asf@8%+G zS5Q`|=|f~NpMBJht(0oUO{{`=Vw3xJ2|w6=Q*Tq z9G+5Yn#4srCUN1;nSmMot@z}8c%5HT`FJkI*@r`?TqwdZIvD;YonoCrwGAl;BL6Om zz!b!9)C8m;^>!Wiaxh#n%%!GWcW{KU48>R~xv<<{VIj3VK=n+<*$wJ^$*B^#2Dy1| zKF4fY4p{-ECKsw}Zi~W=<*0!KALB`QX=QeJ#8?9eae1#0tAtihCzGJ-GVX?LI??HK*5b&UGp)|~c-yy$py zO9W*?yoHq6+J2l0B&NG^OvbVL{@M@C${c%-#d@S&q|f(vX~WHx`Z{I$9Ft>=9=>qm z@m$cB>65gh^_>xll66>Hbvi-U?mMq#&V)3 z_cx@Srsv~L)AY*ScO0ni*q&Ln)+FAM`+PCyA!2B$ImSzm6ouf|#9dq>> zI2%jO{NPLr0(14_pkAR5Zf_paZ}@Fyr<2x;T`LXItvg28*0-)xs8Zb4Xj8)#dV4&| zu{J9Ygn^p5M_gFVMRMoF4b@y)NSIR-?w1^{8#T}0uK`k~i&v|;^t6>tIG5kNW`#zZ z&1iOvMv5!>elIr;_`E6CEp%bC7A>94TQqN;BG!M%8TI*%!_B`%_~paX@IY6gwRvF+ zW3wo6_(LwUg|V?BA1(&@Nbw^VY~a;(8vB{J470O=KGGP20!^HMRlZ^vr+EaIM{~2V z9Fy~4KF_b_mGH-P?kgh7v@PQ7;tvnGSiZWw`1eCDDlD*{)>#~o;_R_Ig8u*(K(}8V zG3_@l6`mBg`HhQe@J3&a!Mxi~Ww7k_-sXkasLF4er%M(fOnTgU$S z3h1i#`7m8Fvx4-w3rgVzQE9MFPv({PN2r&;r7?4BWQ@5{fY#MJOoKRe@ksuBu=bZ= zmG*vcT%>7DZ_Nm#el3OHuhYIYJTh|BTf+^eS;JEm*k?77WM4g zuXOlmll^s}rJqgF;MHO+%52jxxNFd3eY~~T_$;Goo+8A&MWL9`S@AlG&0L5S_c<;c zDbr9`=36Lmrb6*XgWz$T_7JboiCrIYajt_3O`65|Sx19)wV!`|i{r2&!QS&^jP}>= z0R~5U3uG`JRq*vprhp#VCgX91BBXt8Uz6#66UFzjS(b*EW0Ze|1zwI(??(ZHbPdeL zcCTp{)kEQyX5qSkrYI_JS%&I|H2A~koy_KzxlV0;>maxzjt?98S`na^?)=0%7&VN<|`!+44tc<HP z@bAZQekjV?BAUCKQg3AL%ahWF_0vww$~9>x>g*AdR0E@vt-1aDo0x63k*^_C5T9W( zFK}gX1L|`LNK>7q8ZcS&JEz>I^lP9_8re4>IkfNop%vT8#?vGdQ>gmm6eRd;E>UEQMU0 z31F9A4MU>-4yjS4z^Sa5K2S-^A&uD)+xELd-Q9- zr&==eP?pVc1*O`YS5Stt#}E{myScSy2y7VPZ#dK$BL4U%r*7{h@AV%|uxTYJGIUfh=Ntw^z3R=3tZ%s_hkVJ-q*Xk)T<*znQ&5Fepb z2=x`a;jVON4^>AL?iiP-)I@U!qC-aJW`>!J$p(i4cIg!;%Jy<{YOcMszW+pp-v>!8 z>^-AQrdeE6?uE9>hDg&;rP_+Z0ve)@c>!X@W3F!ciMFxMYMwJ@a&X&~iPWEQ+!qZL z%V0;FTNs}TBLcw2G^QinGW+k6rMYrQ@rHw|8v{A=8ef|Mq|HZE(!KZ zxnf$fF>@5snYe&R<5Isc%dQ?7Lx$gNU*GK9hx{@*y)B?vv+|944tsy(*O}*UqIlbz z#VNVD-*T#kJnSHKThSKTh2vFyEA$cf^|5 ztWbcR)py-_e*tMewq{#$Pa6XTxT9!IBc1zrzcvB&&DQxS-em5lUTE|Gt+93k>^>Z&Jro;Z zArBjrpwgS(@9pmnu9uq`i(sMEiUbo2zx|RlWi7wFqXNh=SD$zv;PsK%OFkE^| zbm4~F5*?poHJ0e$IbDe^K=HaxwWvQZsu*X94!8Rlzh&XKR4fsU-)eBRp21q8Q{y+g z!BV1&j{r*;*W4Hjhiu0kMzMW=UQl<@>)w5;}&;dXc z#ba%L23v{F5$g~)Jmu0uL*9tb9fA}oI)e?KNk`aT6|0_d;cCAUU8Fr!{Oc)~Y6k=1 z_U*v{!P6IAU2I;JYR~*%XolTRT?*0zh8@8iio#M3@s(#>w(irCRG8r?$L{Q>rf&R??2;GT%g>5a&jF5bx2jR$J6vGTrR%6?Cv7BTOq!$T#6XZ4iuok`W{HJ2)m~mZ1vi`m z4X5bfnc5UxF`B8}k{2+t-{^(`lLG<*U|TF!{0&cO@y}b1gPO5VjmHh=1%qllAxiiO z$-yb#p-h0FCB>0w{%rpa7m!4;4TGlo#Fx1yD{{ z0Scg8zY-KcdFowI0OhSU&>qT>??HPg=e!T?;ls)`8=yUuJ3fT=P@ei2+C$mrQ)mz6 z^sUeyes>eK*#-&#I0j`El&L#F0X#Ne3uOY7HM>9oloNJ?0w}AXEQhky9#8<~7AOxu znYkC*L)m2?w1 zhJIJ$Sq5d#?`u3ep`3cL#&Z?Q_bx$%K?v=>T;oZB^4yggPZ5;&uGV;lKpF8vjb|Q| z*+15Jwm{jks>X93$~Ugpc%DEx4$7!tgx)0{M7{w;iSO>h!o0Ss-Yp2_J`1yP;UJV8iqn-P^LrK{}D8Vat)NFP%8g~ zc2HWO+zI8f$IuSSV^G3RZlTP-pdFOmp)7*(!c%AmrT;VNLMVr{{Tmv>$x0|MLWydi zVHiwDC=;Mu;(>-xeg)+~D6177&ul1*lpfDUC|5%H1p2-T%41Vo`uQU)yB%I@ht+uggwo6N_c2ZQ^8k+>UgKF>i=XG^9|8Ug@Z`s|y!zWIn0~mN zg5l&*HJ%Rm!!xfy5idCaUo=G>%W6F2X92x@H!t52cya818bJ6{Aw|h2i^`V8~Fh=uLFr*2hIau04v^q@sEISHRC^cu#dta@{Vu)w*yw-E9TUA$d6)r z9XKnc5aC~1Eu0Ty2A1^a8SLrhM*}~f>7V_|9j zuL#crpSG;VLw*#`YarO0p+~^St*G(Lhw{0DGcfNWgD4z4pS$wE6Ug z?MDOu`Tt&Q?~>;65)jbARk4394|{m$@pj<506(}EU*hG@1HbP7(*6Popd;&N<8u+CEhx91^^-nAC zJ>@*#+1tJ^@S}iVRf}KZ5)4c)Hi(UnP73U|#`Wy$=Tz zFP8f8Nbt+jbFY@BpS+faz)mUWfcVsp&uD(Q zKKznPU7#u<&)7@~y!PYm57d>f!Ep4B-biomagKJw*60^3(@b38&qs6~0@!re7Lj(2 ze{WX_GOn+fOwzy0;0x5m!!@2HtUE}I*YFYAi-3(k!muZPq5(ec)BX+MSlDI}!5b8O z6>>QM{a4n+@QquNgRlg29^r zdbp94<}?;3I<1!1+ShwGpfv!Ct|ajOnKsRw(yM>mBcFVD~uobd87nR;$?4(U%wo{!LTbN;B6Q*US-dXWx}@OjdNtj z(5?-fcR5$%NrP;7W$8je2L2EtTjPnB^PR|GB7+70Mss&)KLICUgxCr`Xi(#=?WgC( z!Ehej2KYngVgHQzT=6pI@z17uE{IPtzXW*gcdR`}+vET0Q}R7&ue}QV7}&)U{l`^e z>pFb2dL9TIyGRYBz*2M#wzm_pfkooeKrnC~c;jU;CI}1+0lpP%cM0E>^0BZLUUh}? zcq!Zg+hD>cQob+n0oMqx{Tuj{Ys`T=O6tHS5E%0Vap1KUuoPANP~*XWo?nT78Qz=m zPF!{f-v{Rk4?OtL0;Rxyx|KYWd{dIj6u{t>TB8&jYI*pG0)7Pcrr1r(*9``GH0;L-eO4h}!Kn;~ z&H0vFv@bS+z=2y#V7Yh#+Ngm3`?h!&PCEk|_;ZbCJdU#jy2Tr3P^~!ELleBMx5(oh z{CvbTf*DW>JaHpKA-*00UP7BqcZe6-8Nly>+X2Eqb#it=W z{11ar{_hydi}B zlpx;!kVEVWXwsVcv%w|go0?>wk>x8W5B4){7CN@u?vMiKfB z|APm02@@xzL0)@_2h;dSS0x+rl2{^~@bKHz(o~Re2b|z#$&`^e+} zxq{`}?W--Xh7RSP4^8-eBBp2^l-TfWA4PSc0ai4SDN1AV@Bp0P3m6{Ha49R&k1jLV zo0S5lpJoMyZa?Bt9IEs&`~frIyiQegWSVX>`DH%x$#5CL0j%-C`!al^555)SE@-gD zhj`2y?DWC&;Szui9Pq)XGyIqj{x!qT_~2o1?ZtX70#2r`G@!aNqROYiYKFUg@T&~3 z_Q4IXl4Ao;eDFRDC(jiin_!nN9UB?p9}c;t1S#DN5AnfMVb#Y5qI~e)3{UXE7XyyR z(DtiDEg~0FINgQsF)>k9C3b7Tr`5Sc6ojLb)tm@_-!0YkGXUscR?MeF(03t%pOXZI z94t@?KB2?^4I+llu)%~Mvf-mX!L>-bSW*-&mIM!g^b|-CE$zg>iz{gpfkNAvA;#&lK%wqWUt+i;K)4ye_?0hco!k__sZm(#7wKvPY!a~ZSX$WsWkIjAR%; z5gjk6lHrZkQ^B50{&R*8IY9xu^Tx*$inl}wS15q@U--y@-3NAe$1z%$!Who*qIW1x z?)BmH1B~PUP~tkqBwk~-$zw&3_>ti|D``ve90X2-U|&xXbDH9krM3)zxRT=1r5Zm& z$MVOHP&|(oXbr`ip|wnrL>yxc^6!Vc-jF9NUdB9Z;$VG;gH7B`wY(!%eg<4bS!rA3T=gcBcVAT zT2jVjaz3P_G_Kxe_UMK6(B-TkazT!Ucr z4qKDT z#}^)6+$k1{-p%>Ze=`h(#c-lBq1A0aW+#z(5c z!{LKW>`qBKoZ$fyyMhXmr^;~Jn&EX%QXD^m!N+`tS6`-eDQTZDe93rFrC>i|c*;47 zOY%Qc{0+2;ZPukMCq+<)?0abgX@(atoZCim@_-Xg`!amd5{gR~)5RFa>3#VO+--`PEL{v6O>GRkc4(l)VGYP*p{TS@4mc_)b7 zDOyo*p@_0w^PO{V z?o4iG=Khn6>$C9E0|xrN597BaO~4O^{(pgT)Ctq?^PH@d4Ag5Uxe@1n7!~hu)`BCM zRcg!rSN=Cpgi$+eyVP;gKx!pDeCj!WSMh z(1TJ|_ysxN>eieh-f4eylNTl9*&D9eD=pp=KL475j;dAR@SM4xjJl%S<27kV^Gn2? zcgmcXjEBd$rtX^?!Y|3y-=Os1k?{K#10ANX&^-Vlq{r^}Eu)yGnOfo-a9s*R-@K(j(vT`bio<_P=6 z#BwEm(VVXW{eCsCh6ya$KwYae0e=`kaw+D?HZA4zy^B%6YjJX=5An(EH8Vqfn6Kp@q$X+_>Rl)Z)*lh%&Tw}v_ QX8