From 3745d0521ce19f2eaca9ba6cd813826879794e97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E6=B0=B4=E6=B5=AE=E5=B0=98?= <18510549872@163.comm> Date: Sat, 25 Nov 2023 00:19:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 3 +- index.html | 2 +- .../good-collection-error/index.less | 1 - src/favicon.png | Bin 0 -> 60950 bytes src/router/index.tsx | 8 + src/utils/request.ts | 2 +- src/views/header/index.tsx | 15 +- .../components/contribution-list/index.jsx | 172 ++-- .../components/ranking-box/index.jsx | 6 +- src/views/question-bank/index.tsx | 1 - src/views/search-details/index.jsx | 205 +++++ src/views/search-details/index.less | 46 + .../components/option-input-box/index.jsx | 832 +++++++++--------- src/views/user-info/index.tsx | 28 +- 14 files changed, 796 insertions(+), 525 deletions(-) create mode 100644 src/favicon.png create mode 100644 src/views/search-details/index.jsx create mode 100644 src/views/search-details/index.less diff --git a/.env.development b/.env.development index f333e5e..962e72f 100644 --- a/.env.development +++ b/.env.development @@ -1,2 +1,3 @@ -VITE_API_HOST=http://117.72.14.166:3010 +VITE_API_HOST=http://117.72.10.84:5000 +# VITE_API_HOST=http://117.72.14.166:3010 VITE_IMG_HOST=http://117.72.14.166:9000 diff --git a/index.html b/index.html index de19e4e..8220868 100644 --- a/index.html +++ b/index.html @@ -2,7 +2,7 @@ - + 4Tx07!|IR|iy+$rhf!q!5x&LYESxgD9NWItVsG5=bC~7y=4*R9wNe zA|hCpvI?T$S^!xq7A&j+ir62Bs3_}V!G_A40G564y!Xz#Ig|VSU+#Q&?#$#rGXT&Y zaU>EEstiDySSF1K@Mg}8i)WJh01;>cbzlNm9Bzh$9TqknK>Or z;kMD3s0bg39|1t7ayZgt0H}kIXJ&Dep$-jJ3v9$Zp%`K>h&{Lh4iDnx5Kn?JFehz4 z#H_?0bdvw3nfOhU!%6;z$7&fhvac{hBI0EKpVRTbElrg9HHSWIRB2{JH1u>hZwoV0 zBZJ3r9+%@62{Eh{DHQO7N#X?MkST!RnQXZoU zu~v@2XT~^hnZlVCHXd)o7X^&xMW;$+VWHphie|`b(SW=^KjV9iGC@?}7)EEy;074) zD@qdj2aRiH38aA$<2Y9$8r{pInjEQLfPCLTem!3t9XZCM9K^jOus@7cDNo^#z$RM9O8U=Y=4d!O!p12$Ch`RtbNCHAs8)i%?PS19Y z5dd$fC;~h9QHHsl;|;jaVyo0&9TL{L$?4_;0!CWV$t- zO}C`0(Mfb&x(V=uTGG+lWd)3*sS@0sF#=hz>+E*en1OdS9Xo(U$1+!`yIS zA9)RrM=Jv|{z932eFXtEmK6S{wd*jDR_? z26n&+xB)L%>ogDwqCgy&J31q2aLfz9Vz2__fda4*Yy~A?H>dzr-~c!T8o+UI23!DF zKpW@;cR@Gk1JA)AoSk6=K}ZM z0%S8%f|McE$ZyCo2#h^-xoE3d%y+XfPUu&OwvW`DhNh z3SEyDqvhy+v>rW!UO_w2ZuB`igaJ$u)4&WdYm9~YV4+w%mV`;MrC2^zgq35pSQFNQ zUB|ky0qg@##2Gjfw}v|^5Rb;W_P(=c|s?lkMNdABx=C5cP0iBW z52Ewv%jl)_dU^-_g_44ji4t3Bu2POtkBrOKts$CSI2hg29U zwkn}2X)5bf_NiP_d8$fMHC6Rf<*BYxtx!Fy+RMNgMhqVYm$8yj$vDsGQzNRGsRgN} zs1>LkP`j!&sIIE+pdO>XP`ye8!!w!41@-S2B!?3 zG1ZxDrifY0JjWa~)HMt=%rq=BylOZ+(QIP$#N3H>6Ym>Qj95lVMukSrMuWx%#v#Uw zjcbhWm?)UAOavy|Oj=CdnVOl#nyxWzFnwyKWfo+XV^(8!&zxrNX+Gb)-28?G(Sl`> zYO&Lz%@VbAv=msDT3)k4t(>fcRy(cQClMyOOcGBjpVVbdwPssqS=U(iOxBn@eRA&P zhRH9c7*C0xvS~`olrJ`pHX@r!o4dBEw$p5LZJTUg*;(3g?Mm%#*wgI&?U&g%+P`$L za^O4ca=7Kla13!=Qw90?`-Ux;Jm}Ri>1a2W36LdbRoESyDW1#?()Ia z$yMfh$n`HbYqwOleQr;unoZ?Tt(@BHKGB`yUgqBI!SqP*_{F2!)6kRSS?>AJ%gBr8 zwa4oT+k&0K-p_vFZR0KVKI;9>$JJ+v&uL%GH^4XF_o|<&U$kF|-vj@N{>lC|{(}LI z0gD1o2ND8<12+YB1?dHGgQ|lDr#VksGVNS2H8?W3B>3TU%jweTO(AH=w2&{`#qc(9u{62{y4%mVsS)EBqMTOtoQ_2F*gKIeJy3VHo}cm8Jn zlO*?~%}Gy_-IKQ@_X|7)MS=mLkFZ4eG9@r&cgnle(A2%DBcfPQT^czpA?=u0Rh%k5 zm#&|_Fuh%3CCQU?&v%`_b^f3)5Z)e6dr z)D?f^+T?D|eX}xlWz#CXRm)fPt`1mTlSj{!=5?)cTeJHo{3qd0SJ&FF-M;oqJ}>`r zflWbC!KZcHb(ep({kiz(k@ZRIuWoSKuxlf6qj=-ZO`e;oHmhvT+1$G&WJ`S^voOE# z&DMEaFBLfy?cPS&mbtCFczSW;cH`|Ew|^=TlysJQm)7mj-LZDZyPdq99lN}C)$Z2Y zU9kJ(FT!7Ll?9a5mz$OsRS+w(DjrwHRJQ!e`n7tG&YprjpZALQc2`AIovU`PuHL7+ zZ$k}QlUdWhfA;>i1HK0uYprX`>NM&K4uXT32cP|x@Y~Hp!H1d;vkuoDF*&m1DC1~; zJyM@tKiD8>=x&T_Y(F;bSaXwG)6w52|GxLQ;qlTF>L)gwq?}xJa^zIbsiD)7(*tLc z&-6CWYrcDS=GhzP!p~hjAAJ7e1^)|YTi7k9F1lYle#!OHvCFK>4Og75)VDge9{t1d zkE2(euGU|3zSh|0($>^Iwf$s=XUCcAzSl3@2)c2lb4F+T&FGuAx@LEE-{ReRdRuh+ z<(;fM!*`e8BizfsuYAAgf$oFye^~sZuG^{mM2~Mz>%+*0cYC?L&mUzx`qa1TG3{~D z6N4w!Pwk!_@AvO-dp7G?-*d_H;eotARsP)Z!u-XNzr6lx9h^DX_fq2Ia&IJUWJJP|az>8= z7;I=#5&*CE!n1xH01S9NoGw=04e|g00;m9hiL!=00001 z0000Q0000000N)_00aO4009610N$Vj00aO4009610KxzO002TpDSH3_KmbWZK~#7F z?7azl967FNN#(B8F4?kOTleid-|T$vHdWB6hWOsAzx`O{cw@XOC3q)6AbE?YMwyTiC6ozeOy=)RwL)wuEk5(wY2>#J$_Wr6t$8-%Zp@v*RAlAn znGVpJJU4)KGMSa}?X>%<_aDVT>!WWTUp$Bb z$x)^YvaEP!WdftXM9D|IS%GzYSM_Z{_`WB~-;}@hdy_JToM9RgG^ZW%C7$181T(-) zO*m{co|WNJ=3#yd)-&|C5yjmDHW zDcw$|G@H#}qdHr^Ploe)pXrQy3}1?YN5=b7j8*9+#w5s$2tkLWXdq=G1T)G&NvI+D z;sal#1WUF>rV%xpA?bK8!vvqgSPfdI0khmrCgq<$9hZZ5XTeBcz1S=JPd3WNY70g$ zAsJJ)S#~XzWNJGCna?7DO(v9c36?R08PAU{%IkyEa(Z@#v}=~XeDkb4f3{tE&34F3 z<#MuaeD;Aqa(;FKA9(o~^$`p_GTuiJ^F`5Ul1a{suizt8Mq(Q&d6ND7t2BZ=_@gSh zvLegCFeHsU{0=EMoi%v}^R*jgcs(g^-kg+w{_v{Yki}#?DXYC!S?jNnQN#bi?lRem zj7;vnnj(U4hSPF!F)ZijSLNXCLHY5=x8?Zwq-<}mmtL<^wm18w*KN-k zI+<@#xA~owtR(L|?(yccF!0EDpM|E6C#r^YDOHw}$z2ASAczx5#=j|C;6Ihicr8~{ zQc-E?&`@`((Rp?W`39Q)w_hn<~*FXPG&2rfmK@ zcH^ClK1LeeT#w7~$)NlQBOm(BX{E0A}yL{$W7RaYvvnSM%PeDbh*7M zCIntSJ^uYn3_LR4XCmr@$)HB~0*RtJmc$y|;yuJGgZb=R2|w>c>GY#`tI()JB;gOA z#ycgVW|op>L4DDwEyJY~elgo`|Ujg&h% zAC|YMtFPZ3l_MnF^zwr7UbAd&ZItzXo9kwILOJWJaB~%eN#6!ps*6IyFscR0fdoWGGcXY$oy2OTl`m1(e}oq@9v* z1+G=i49loV&=LFF8>QJ>gI^C&6-VXl?5bQ{4$JOlo3yD;%F6y*2`QWTjVbi@c2*9K z2IaqgIzrlAmy4@Gxw)N`HiO9Z^$nPMyX+!8cTh3=TS(DPGG63GHW9QE32-oX758}g z*%)|ayq}FaCk28M(I%^Lo7@!)#JI~V4@$lf@e?A(JV@}@nC&&)I~}2AMJr;fr5Qgz zUv1Ayr`?(}qhqr^hLkqry~%V;u8neWc~#EN2j%&bwbJR4O~trMUnMLT%9|nSM&;=A z7D;(ret3CUhPQ=$I%RXSSJt|v>}~Zi)NGZV-Sx7{xUSO!=E#hE(4$pb=Y336?q?(H z@xvtyJTl%AGCu!S;zr7$!>MXIXW%@WDq)PTAXbTAzPh}blq)PEH!zxGsjITcd@x=M3nD6C4?(jA6YXzxF`RTtYqeV%FoUXNf3;CIFn+A|HZcE>P&0?9j!3$j)n8d%1Nz|~&2JbAKLzWZtuN!P+U+KwrP zHt@@H3r3@ErNV*x;NtvXqpe`cyx|l!O?MZow^y_yUHi zSjxs)yR7f*mdn$VGMWsNfv-o&q!um5sI!vikn%6C#^vRk)AEo1`k@>#K5TW@%f|Y8 z`R1$L@*m%9m#0sAsFhB{D?{_sxN>hj(kSGZ6jj*g_{Gb|Kks3{hSXKTo>(kC93C0( zVf@VBhPR2ht%8Qg<^&{z>lxl2wWO(WJ|2~FbTBM`|KYg2K0ZalVN+BMZ15qRF`Zzm zgbA~;m=JHYVa9B*YvgAeE8}hZvW(joW#`!jX8vZ`KrMXsWV2kKpO(Q5(*YNko5Ot)y^6>@@I(sPZJv-{6T|=sr`d$FQtd^@yK{z zLJATcA*}yOH>4f(jDre<3lFMVu0ZrLzQfbx{9;<(9gfPy2@Hoiw*sLzI!F&BT4#2H zv~2NhHdv#Lx(D-3$!l;6lQuf#&C#%2PmjxY#DDXmj~d!4dwc!z@`vPr!SzjfdvsRz zzuqY=qHJ2>*mDT70dFr)S=W4c!P_N)E!m*-5rlZPs;E@qfs_y+Hois@nm z30zG&laR(1#k(w#d+t=MS5|7qvqay@_7#G-`*Q_5)8!CIBjSC0_{Q+ac!`HE|BE|V zjD2eBLp8orEt_DJkfht4S=oZ%S6WD;^)7~sc3EZYwziI8W39oMZl!c|-%=9NBEu0z z6V$^u2N&fHlI#Ylc6&M~op+aIXS-9jHrjlLx{11YeSM3%xkCDza(Z=Jy5zq~e&%yN zoRoLxH|5RoWx2%i+3movySwGZ^R2S?Bqd!F$%}oJ^oZseOhi3aW-vb!_tq;cqxb2l z#*!A!_>o|FKBRvCczpl^c3h8)_W*((cqP-JT1?ygTDmbenL6n3!-Y$E07Eo7)3X0n ztMsezI#%(o~&cA z0Y5e+s58cIKH?l|NQX;D<-2qES2YjF{PsBB1s2K3jX-|q+B88*4JSwIQVKXDQ{0M z%QcKA!*A_uGgr4++BjE_0nLR6Q{Zi*6R*%=Ga#*ED8?_r!gGTzT26Qo5j zkqjq}4UUoc*EJ4VHf7voQ|Lbl8Ap4(=z|iguzF6 zt-L#84A{9TgX=aE=AE*>M&8;&RCVD(fssY{-aY2AcvRb-PtATBV#(GS2#t(Kr1p4(#xFseT*|$8Cx^_GAX2m8Y;)f8fIvI zfIEs#)&68mnXideR3p#L^tPOz-IO0-5~dT&(MGrIY_-a6pNVt4S9TaKHZi_TRW}iH zGkX#$<@htkfdDX*BkzS^P~wz)DJSdN-%I$XdbG9teFPV(5e8m^>-s6<9{+wA12KeSP3{qYE6(Tx8o)f2SdrpsGOV*k#zj9Iv$^&Gi5Lc zhU(!X+3l<%;rfj8@LGX!T1>QW;zQZtU4!vogKNF`RfE3M03+7xjgf{o%p=?|p*|8e zRN3nr%DOmbJ)d)RkOY>@HXm0kz@5#M;c;+ zUSb>?FRDLL<&P2Ca>76D{hS!UfY?ke;gRt^lOXOg9^{r38PqtPYL=g3q#%+pokTyG zz>yeK;Dd6`dY-dOR6dyQ-2t8~8a{>?N>E3e4b(j6^>EZ&Th(O@cdp${rXkkKI@1sO zD|h4w3@|dZRy zaX0Qy`y`5_+%WP<#fp@mX{nq?2rWGJiHsQjtQZM$8>G*z7Ff87HSvnoq=&~4JN}w4 z4~ON|@l82F{7qJF8M86QLc%=VmEl@t+qG~k71%`GTg3%M-^r%dNdq9bl*p-um}?_S z=2DF{w2^)hA|3CDc9nzE75y%GudSnM;DQt|aiZPz=uC=G6eJTIPC?{r^;ej-?=yjP71>Eb(x%(0wom(qu^o%$P6$u)Dx5FDZLlSIlLT#U;*2gTAsOb0Z*BJ z*Y)p{(gRN1s!Nmc>hv}XaB5OFxZp|4{Sya=Beu$--E6bERqi6@k@1%B5d8H>;?^ZLFs;Jz13%1^!9@)OLVuA=}HgsoQOV6sMCORm}xH?%t`wg-W$V z&cvxwicrn(ZjCoa9FF)+ks60*lk$&O=j8`HNe;uHK~o^cHv9eZ)w6Y^$QJ5lCsa+D zZWYdI;r$|`HI=Nev|~D1CI3|*DS0z`{!SP&jk+)})hZ_`R1WQDmmrUhw?R32&$JmY zHa6fF7)MW;7A|b>PHxKKDPutPV7b8gdN4x0oo%49qU5r6=-F=w<*XbqZ#HCdywhuxeWcu1`t1+l)E8sJzWpd{6QF zJV#9)p+djAxM5PBsSu_^nzQZF#!xVI5+c;)_ zWV~hkNTK|K`M9c1ro*uFbPLr_=D=uJhTO0)pq#ki^x&ral=#}vvNeJ=Bn}8#3-ut86%OFGL zH|A)3GN!&M{&N#t>lSn5a3K6r`mCT>K`OVqozhv|VC6)!935TZhQ^X43^Kb;AqW5-|2%{N8;cJ2k@1$06y(aEnH)fnaN`QG&M-~{ z^T8-?sjidq4P&K$zB(x{kFU$gC7Z*t|D}GES`Yu@FHg$X&l-4%unY&Q-)eJ=I~n6A z-nZ!SbO&?C+J;^#axy`iip&#IFGQRY5m@5CtYb(8Gw<`czE>TsA&;ay#XI0l*5fY; zoRkl#9&74QhoFKcQm=>8_1;#yyk$JP(!h-kwV4rWxuI^aUY_By#u#z7$x8NB(xQqo z8JN02%HSG~Ec@~A2QgsVgSAJ-yN8`1Z^S}aH^XFCC4doP%XY4M_A@oc{M;>zO)tvJ zcjx8O?ax{A^J0IqeEnjl{Kt2zVX<7r)vJkGhP?ub;R=L`1#lmWmD|B!S%$Y7RiOGg zRH}}S`vR^iHm$AmB;3fZe#?)~`CkR&i3~;u?kelpQ5toZCGezWl?5Vjg=bg2I|b3C z-c!`)4&NOe-LU!XHSTQ}I9p#~NOHwPDZBfuDa5d%v~$~f70t)+DGbm7qRrU4kBs*o zt|VKe3c8-^UfqkwuFfD$Qg*YU(=(M?MHx)y9AW6=-FBm8l0P-Dwd>D*UB%9{$Pl!i-e27~*qdTmOA z@AbpvE~IQk!mE@?WK)$B2J_QN+?TS&elM-(%;R-7i@QU7KZ5yCJI`5e^ztpLC1%(e z9yW!Ec6~Y*-9(l5v zL+|P|f8^`K_5PDEo@QNTm9(myxQi5@lsM9=ewNWIDRGceGTp@S9ciYhil@xY{o{wX z7*fv571IZ8m}GBnqx>I8y1zYNFFR~J)Pd>z(nu1dB{$VH%|%={wWkgZ$98?q!_tz~eh2e5XcN{0GK z%oIH^k<5bjW1coaK-aK@7gD{76()4muu zf;N4gha`+37MP@|bOJ%nw*=jgZb-z%)vWyE%~kpP>zi_LautNV|8%GP=Ql9jSL|oP zuFk8_k*cD6+khH_bu}ZBXIMys=3xXlWIjnAVk%AjL4g(1-6z)tbtYMpd4`IyXD%f& z$bG)E4Bp8~RYbt$yVz5O*d!1!f`yXtsOkJdiK|IwlL|HW*bmHgL3%# zFg#gs=`M}unrzt@RLSim{K^o*%CVyCsIQNHs{t;Zl3p+&!RrpG>Ih6w@4^NknZEk# z^Y1T!&tN$5>yJ8#1aAKXjHeNys%;n(xaWWNLlUHYaz14b#a|^IDwjKc&6qTH5_yQL z)vKe+^26IJ{2f{3%9^*`t!DX-se*5x;B$#*e>ZmKQi>rxf@$f~DU%EX;i_}d1Q2l^ z-{qdZp2WIb%Bvd{V(e!!0rR%C0UM z&nKZshij|jy~=7d0n*lv!U1PWO5ZQT>GSU+RNYJkz7@3|Srz-w$1>)`$U}rA=l9ZnETXEj z5M&M#27!40DGi;YlRT8!c283}pxsUOc-h~^xWp2tgA>;O-IhbP7u;B1jjab+Pg~Yn zS~_7I7%=t`H81cVLYz8k0Zs3ps!Yq3_Y9;>k>G=nJ%9(3{F{YZ-4tI{t5y&$>S3+b zcK+auS2u3evO(Or6Ic+O?M&m!0HP+C(sgKl=7sABsdsQZE2Cl4k+$MrrS~F)T5K;u=Nr zQ*woLt!U3nXckB{u^yIIva4$=Jhf_E$5mkc4lW;U)Fs&I+90eyFymE7uz{r${`k+U z5qVA0NURWVI)0Lb>XG|ao-(fc9_!_gKU|iZ0eu>-URxU*%+?{51*9!{v1T@RT~aj%%u)A9<5zs4%s9xKd)3gW5wKq7`7w zU_MKB3{)|tY2tkiME%k4>bj`w2f-G_e`LnXp0j2%ks;YrYl%qil9~cXiKyBRCmrBs z84FAYY&`V(aEuS;d3k+`cYb>fMr(7r&RTiSZp<4@8{lz;;eqVU&TK0pl7M7h)vnN` zc!%&@rm?&y-W2xycgI~s{z}1lqpGrzqfhDpHJfYhkQhXX7|S_Cld2k0A>##-+b$j} zTWllvl%-9VgI(OpZW;4ll|$C}t-U=*>NQz;u^Lk*onSC>0pE4sBzj~z@#BA`srlC- zn#H)^VOR_i9;kq?K*k?f;@NUaHf?B*xNKbp@m}Hw1_B9-R+kuK#Q{Wi$#xCz@Y?vl z|Ld4TM~Ilvo8zPS7Y_UQdcR**AwG%8yn>-5+={v)Ti7YaHcM7i4Jmg*SiFdX+U~!) zlkPWrNJwS<XOnEdp0oR@qi!JI?8IADL4QM`^SD{MyzQoe;Bxc(&k07kP+-U}!iu zvX3G$?<`e1d98|&!1<5^=7P@@DR3OK3TQq?JX za3f?6{=3A*qqJ~M#E^1PetLbyu3aDr>RIP(g0JyU+-GUedY=^rv5t;R?6xH;87CMk zpGB_!^iHuH$vn~qac2tz(Z%<|z|T+r8-pxo$SZ%Nlc)e-v8&_4z#hre9ZZ*h!6SHU zut&`P-WtA~dz@axj@L-OGq<{UeTD<|4x1*KhCO5$8@ePyoI6cX2kY<1ce(0y`$U@M z7xhQ~)>iO%GMIM zp36SL%6V0~-7Xt8xlJJ}Gu)QYW65X-)zk>&nT(u|iLETZO7T0ph?fd}>K6C+P#muV zx$j~BcUIR=fV|JNYg})nMd0 zL7$X_bX!axI1!^CO8TPE>993nr#C6vSUUGvmElQ9I-p%KzxVdwtekP)`j|OCH4PmJ z!kOSs!9Kupp_1D*DiYsI@H>dG_pb08Ojm(yU6z0IXa^;K^kAdA2Od&xCHB3;r3vP! z=}$aOP=h?d)h+K1Sp<5@LZ}G$Y`l<7ESoP@TRUMn?Nl7CTjEMJ_ zZqIX+29t?meloF#7JMZ9OX*FWZ>dA5AihH!!si&+t23YK5N`SBelh9UvdUUMHskHG z-8?DI**-!`=PBC?dImf@BB2>9>Ob$UV7du-o?wKElP8u5_anIa_l&MsNjxs$@;z8Z zAiqDXsyVMPZ9eZtVL-PvZ$d!2gh@y#gZBvexosy;oLFIZSSV+ z5_ZOx>OcH+R^GiGmEi>rzpTdI-d^LJ@Gcw8qFOpmA$C+S z9j$60zk9f$>IVBISD9zQd=iM|eyO_iKAbM_4N32`2w6Tw-MnI(h%?UhyJU@`n#1b@ zwhM$Qdo7#|m{qCGxvQ4?(N13l8{DF-t zbrow%qY_TS_pp(`i0jiJ9LFRBX3XCn;hplDtQ zK|(l^hlEBt5gUlEO7l79=9ZpKYv5holOuA8n72Z_{_XzMgz!KKRgwU|O7_0ASxQt9 zS7HJUf>jC1v)!!~=JQrzxXtndPSis-$Gu>~q}OlH*fAR;6^E_3d??xkHC3cU7bI?? zbu7c*?=eJ80DP%!Yav)yha|cTD((O95-;!|#j}^m%wJZo--~*H;qF;c$07yyg_;@a{tqshBCg4tKeH^KuuwUr6->jDN z^L9C9`-p2cbP~VY+Z&vO%c;057{(49ZJ`{t8?*;oUcHbwS`_>HxdVRzJXcY}PvND<;mrj9*q7B*I5C zaf#wuBQzL}3`I8g3x+d_yfj*Th=A|5!oTRLu7n&1kit0^$%0hBukO_pTsjm65-aR? zHH+XGM91b-!7AHE$b5S{eRg1DM;A^pIyxVf@0nug^?Dd$zzb!m^2>BezbGj*5+V?_ z!Pm>h6aDWVYD{FuTw(8i9qMN)_-{)Vzb2w(04-{{SrNhy1l+Km?rPF1N364Z&AA4L zXGlLzPmQq#ZciTC(QCWsB`PT&xDG8=g+nn)xCmg|13diIJB7*Fjw<~d1oYVz`E8}2 zj&u2|NyMu^>r$2NZT;hR5s0+T!F-a8EK~n@g~XeVhwvra7m{v`lWBD%@434+W4^(t zgBpKbUL9UUN9QqOU?+$#hKb^l_7QJ_WKn|gdkQr+z0QM`SpLPM_5PzvJg^YjVTB3z ztCZ6e*ex1{21p+#FkStopSiM(Ee?G^R=A1EN4ege+O_F04QuckZt#TUySd?nTlV2>aEk2& zpUx3m;$B`fIK<_$T(P{$FC^v?hYrFOPI@!ko`8RvBL~tL0Ox!Lg*ij5zJLF@a7Fvkcs3|&q9Fo^3WmBIj5#mPB`qH0$ZkETo->$k*5pLhTaK*4 z;dek9Xh@QxXI3hZ4}9VIcgn!*?`srR6jDDf0Vwk?GoLWYcapw8^UC`9ah9|6d39@w zpC6RgS)L4LIro1HXe=dJ@8R;I#z^>Z1Q$G{+=Q(UC!UVv_V4UH$`SZ>kV2du7u~F$GB9<$t65^b&QVx|^B$~K)`<@xz~DsB;@udH^^847ukD~jC~)Xd zJw}7LV2a@#hL)qjsO(|g^b}lo)pjC2M|@^%nLt6IbsYl$-aHgOjE4_@VSRqBU|VIF zL;I1evu^dve;MP6U_r@-_CA!jAnXJ#H_Cw`YFOi1X@B#M(nuwW7V*0&dDaLAwa1q1 zG`?ds|J@?SPGP*GQ+j9il3Zmm&^E_XG0V$*9z8WUJcDxHaf0d|lfSEM=A*^Za)Mcc zXoVbNrqBju#8`zGgYmAc4u*pw)TG?I1urx_WPl)(#YsK-e(KL@oU)FE+_7#=iSuws z%;|OGSktwCQ8IZ+#8Cusb`q*}p3jH(7Rz{8od_&_4j=8)bk zs?lQBzg`J|mZfneZxtt>m2B5H?!&^Vvy?SPKeyA`#GmtwZ2^a_4d!jJRmoAjf1-TFC`3ppe~zUOWSi+^)_)=6E#OKo1`#h{bx)V~cTt(&$b8UK1TQk3IIX|%1#`Mp zgo&}}VX2%z)wkm@o6uf!I3q_U9Y>zv2LpW7Zsva2&Rq*ndTD>Q z%k)B*G>6yCa>WL^uMS7x^rmcZJXm)V=7eJL+@owQ$B0ak9OGu0-qE8hWL-rJ_tmYb z>aa`?fsXox*GMR&d>(l(zx-wQGISP@`Nw^<38gJJpIjNi$bS*zReeu@k-e&jwSTkE zR|2Gp6TKbJHG;j0U9kyMO+8$f-i79O`(>^u(COq@D7&ulLIT`M2j~6~=F3QO(s132&BG|IL<50t*)5 z1!V+soYH_%G)`17De0{HEk|jcaPGl>eScj3pYKmtYshgcOp`pp+<(sIy#Lq#c*^{m z(;rDE$%1v6W}hl#%46cAyv2L?Afl!)<(N+FiuH>p_`I?u3q~yJ!&=6t+nlT3>X+N2 zNg14TR5jH*qXRf(9Jqs9&_;Fco(-A#;Rz#y1x!#29ZKB|%y4K|VwvutkY7tLfyDl>M)E z$`dv&YCw=1TV3Y%Zeq&dnz7y`I@924l@n5vFjZ&nFEU6R*FD}cv?(EPkakBbkvTp- zDYt_`5LJtbc_)`oa3nszyeeB9c`RcqMSJ>HMNJ-Vo?0FCoV}Vc?0D+lUp?6UKo42e zdv?NUKVw$-lJ6MGKRG|;`MmrGZgDFxz4VzKq8O$#s~FhYSihx5qvpZyV#^C+v=(1b z-W67r33H@oy0%8A#yJc)lwnEc_-CBZuay2PmmJv1xq&P&-lM|_t7!BZRSR-#w0Diz z47jEXNnDl^8sBntLZ92*R%01Tt*fS`J|ZPLV7}x$!|F$lOk0f<^VKNYeYK&_;#TU4;gWXQeClCtv{PnfvC;4p##l};Y_+zz0Fq=K~S zCjHP=Ipsfb<9kCeohalN<4#1wEi1!sD8qD3mf$p)V7nPInSIHcLpnRZ&0gt9Ot#ePHa0Yn0>m7XG_l$a4*q3&Om3EU+C<0If@f@DGN`k!sw#LC_d= zwoUyy^uArnZ9_=zMBPH|5;NH`31_V)RV6z>i&jlC&Hg{*Vx$EgRmWs*G70aSRVvzJ zJlUa)>C}y8nZyPk8}0yIiARNieM)-eNJ!jE(8-bUT>n|Fw>`LJY1}#EfX-tWN!D;a zw9lma24lz$_3Cr%(9XsxON3mhkgYys!R!gz$ADf;X*mIwu^I~gvN645Tgx!^1gN1o zZ^(PvR}4uHuBD{tsB_W_9WoJWIqLrkL^ohkg?3B*KuTSaz@rZpZsY2`zb^}OI)3mo z@tUwatjj!@$uD`C4V#Q3D(nuZ?wqK&7n_j`1UknfB7;b@;Nj>jQ`#t|iTJ#VGKNnv zj?iLhWBMtcOXX}ZEU(y<*2S4CECt#^%6+rH&OwVbD#WnS=O9UR&rQ_8Lwa4A);Xse z1}s4gb3INXsKBGV<&fh$3ao;6eTaUagH0~4pP&{qaesOSF-|#_d6jj3o2ap?u}Q41 zS7O5DHgkHXLg~?Nc@%1f^4U_b3-W&uDM?g8LxR$gwIDkECI>fLNV$o=;^fifOoR>+ zh_YEVAUQ&#QK8f#O!VRU8J};x%b+!K1Wd=Asc^=)aU_{j&mLCd4a#Z5I3E4{gabSO z=1$ZXq#Ir{j>gK#s*p3({GM6{ZhBMNnx=?quF$z^qY8r(^_W8ia^jwHMMY>IGH3Oj zP(>FGt`eU_kiB`OnrVs}iS^aEI*4R{BIWafwEXGRrZC_1BZ`}U?Vm&%7!Dqi=j`F? z%3CQ3Q3BJbfwGi3ef=4@b8B!zek&`JmZ%95K&A8?DR+d6*u^DrsIhIN%o@G$)29$U zjHk0x8;P{e8RhFdcVWC6xb*_>mLc77Oi4t`QAXk}%6sn*WlFr!<5n-*j5l{Sy5%nz zQdT+o>f~&b>KV7j=1Ki{r@B1B;;Q;ImB@IGV#rU@kgg=6h~rPhMgCD*_=<|3Y<_AF zBFw`%w4LpBBtF{_a;(oe>*Pf57KWWC92dQg3TU2WAIw5Uc~3q@icDWT5JbBS?>y;+ zYw(bIs`Ul6U;L^)w5Th68HSW*`D(9QUcY9J6szX|Rrf8sw;iKZZ1#Z_#v_|xJ|$EX z?H_)zDQ^WwL{Vl)=jy!|L(l<4VlA{nhh9*X6$1~2ni;FiKZS&cvRZx@#gZqm z|BECZ(1gfH1gJ_#s8dYMHhlQ&+4B5iw+4&{W4h`g7lo7<|px5>y2bU-rJ`6{S> zFp#JFj$?u~u+ZWz1A52V2XBt?N@4RNt$Ll#l&u`-`PnP8)6!2dieqCQBoyCuaP%FF zn`Ll;K?X@-urZ@4!JR$or-IEdM5gSb*6r=A#sMF@dt1Rso2X%Zq=H7h782YZ-VhRw zYnIA$FhKV5PE7psP$G^F@TDzTIdp!le4RJi(~Nu?t}h6>k$7-mx`9Vrocd#Ix;auoG%BwCErjWxh6tHgs8J ztGaG~Eyk7LrnV|Fv$@2s)qWf8SYy|B9||?|*?RsyjgO=cXbza_X1SBIaQNf(zmD;u zaT6?iDTdsk4tg|}&(5#8QO*FP#DFP)E6yyq!ALN|C25Rx@MWbD>v>5uzl_E16B7yxzo zenroEM*besArX6?oriHa{`I1Z+T{ zWE>1v@n9l|6q6+}8@Z}x(J{%|s%Ar&*$-6m5r2JhY<|El0X0nhF3p; zFjdF+*)$%{{IMW$=WDwaagRC<<6UFGxn+#I!e+Le&KMlCt@{QrQ5xCCeBG8(kL@&G z9S_SXjCu<$4^BDglYKe|!v+!)BNXt6_j4?ycD(i?qv4Q}GIZgpkfKOP8LUseHaO41 zwq9jwWX-F z2Ex%9k^!kbq#9L2Woytl9jNPaz~CR_$^<4_rGcLAt(K>p_S0n#b}eNE^R+=q*XG-H z8-*6a9^h>;fw3JMg~c&?U6ozgMRKyl3@V4oHdRD*u?+xa9)b`d`Z_3O%tUuJF{4^& zgbv8>1tk)ZGcA8G9~{Dy++wU-==mjZ0K3Xskr+2uz0sejAd;t}32Hw^20tRi77KkY^tKubPS3AIIwk@<1HAxI3v$a`yZ zmCke>&0>R1sy5>kCp+KRN}jYP&lZygQNpVfCe35`5Muk4z+x7Ue=6*4_A~r zdZS2O5S-icsU}TF7xdaJ?_qd<*isVIr-|Sk`(lCim^Ipkh@7 zkTLM>vRl^XMk%i_6lm2uq1;o(dL34yGg68QCW|C-#<1VIOR>QO-bb?d<82rU{8TDm zdM9gSj=bWZb57wx7O_>r$RIzHp)5O5O}&xQDSfF2QZWcBUREi%ShftHUTEG1FTr$v zQ33FtR|ko*o|0?z9e1i!K2DL);{FD)bac$2E<+fG_qx!nb@hm0wYlw1oRTTLQowZ= zj&b^?+ja9`I#7&QhqQN_G5CazZsZgT=_ho6cCgmmtpw|B6WPQ&@|<9xQW`q!a1GKm z+R*XE6$h!DA=%k82PWLz+k_d{${K3#s!UkvptS-q@16iW4r-BLsh71)*5oFFH8b|( z!MsfMa8OE1N54|2+Vf6sHk$R2vA};+%&TLJh~q)E@&+^HJNzbpdOIvH8HXKl0OT16 z6aif(Jo{`s)PaGzEUaw6a7_^21p7VWq+=UKRn5GIh$bh_Llvb*r~f5?P)LD}|2hoj zH+oZcH)eG?zYazKC5IEZGf2Q4yKLH zp#CKCulxEc62#SMEE*uAhya5;rUFXHcZ=d}(>sB3RrQb2Oa^SDvBJ7W2M!yICwr*t zc8)5EhAjSp+|RI6A$^eJ5Bx#w=q&WoW!#>uN>?&Pzb zqZ=2EVdQJ1kvR58p{x5zEELY=daDh~POImk;f9Od=Apk&@seUou^B!qMy? zDpN!dwtFG+177Do{h&@#GgB5)eMFLsp98j(8+k|eB!Yvpq~-F=-|wn#?|w;rSicC~ zhj^n*!etGj!aBUcst%1;Z3duDk2sFBV_Ru5cZnO>-Uf`oM!_eH^&HQsyszWC`Sh79 zLKu6~zC8~=p+4JAX&D=iSrLB&LA*W0 zO%9dzu zaiB(%E>DCd(zttvbvQVJk)J!Mq8m#L)Gw(sV`B^J* zFB8uhj`zuej!{YKOQi!d*|EjEOjT#b{Re|(m`f0~X~egY+>7Wc1O#XSK}ylh*KZO& z%Qe*X$b0@qmRSSi?g#U=7#ZP~&TcIJAl?>ubB=VKy)>P)x2@DTwALDIKaa6~#^En- z-=Uq*K`QCnbhJB+|Gs|KMdM&7z`(f8H_^#OT@wOxu|roK9glnA;4m7l;fm(5VayGl zpmLsZdM{`9>1(UDGNhBgx*EiK!7|y7DI95PMeCA*OkJWRE6Z4v6k~*eXWd0s#f$!)P=la%;>YsTvbY@&_e_TCt?PuH$$wVGsYkq zNZfdJoyOf_eyNAiMM4;pMrmBhJ#HWrduf@xOFyi%!=`<4ZBLsGF2VT?PgTj*l1f%_ z5_lL);;oSY3}bmGvuYqxZ4xDJH>f1F^~_fyo1u1nPEZB2{&D^ts_$|L8Y03n+|MLb zUcm?`0?;aX1s_k@J!G^b7fJI^mG=FM7;qKB4KwI7B##Z<0y%bEJ*I48ilW9-z)NRF z8)4j}9a_xowaPi_Ahv2NPG_i>3r-9&9^bV>j|Om<+n|JFsgX;boyA6TM&l4oqU zWqgTepDSz$*8H_MepN-pJJQeJ^U6ROzlia&$G!_z=9~>~xhgL*oel1a`dmcUpCYJ36KK26Y)ClKHd% zemF=J+4wO@?|1Pnz$`JJ;|O2GtH2je_Ee;Z zv%m0OA);HDlja)1vT@`c+DVB53{IzP!gNoV(|h$6$%K|NU^>EsVunMy&efEZEtsVa z;)#}`qvEfG0lWx4+8o0h*9J^zz79ur@M_<{%DKr{)3N+9-a;3Q|4vWOX-^oOdA~06 ze=<6^!3b7e__@sMX4$m@POJM!$W(#KIx1iAcR4~V`CAIsAA0{qjF;IhXIxQYyhy`I zGN%pWVUKK+j%ULwnC|Qj18eHAv$b8mdA7&WoOL7}C#_=K=rgXf0o^vv@s4B~ zb6p_WB`^`Fgh){O@j4pRj#{T#C)}@?6S`y>jGihhnA6u-_52)Zx(1VX=zS&d=%L1- zlyRL7x>E=xydO}9G<`Q&A9h2WV;DgZ-e>?@sR}Zk?rxGflE4SdjM_Q+1U}MS+HMqi+_!%+J zDudh6Z9?%oXgE$gTvW!9^UHJ8MJ&_o-dz|E2416Hbv2cO!VEs-bnrG}z-Qh)INiKG zt6|JH&(`q|{g2J^f^*xye|22`{*RX|kzzFni*nz=?2biOn%ihr&>NksOq@ae#oE^R zT&8hT*zp;B|B(mrRqV?T{z&wO2~)WQGLN;a6W&SN25DN?jz%yJ5M3 zEh*oJp{DBnRXZI=hihAvqD3VH#nfV}mb%Ni-7RPFw9Isi*!S-wL0T&KpbZnqw8)n z=5u@f?C_K(#$kv-;#zrx8j_cJ+2`A31KRknpZetoPBMCn1iWGVK4uDH_T7`x!Q$y5 zn%2iFR3FqoogXG(sB7jzMJoOvbZ>DhHGiJ396>(qm*t+%jdcF|oOXIVnFD*c<3&!bB=WB?5W zJvxDg%Zy;&Ti)w@?Kn^EvF45F)#u0;(Ftn+T>qi0MLHUQJY0@5wfD!0DKWY-{>n*c z3{GR>+|hc0<2s||EARqD(738+v@IACFo@5^eJxb4RXQ2xulmsm*u99ahl2$2sh~Vi z^@euo^w38{JQb7PotjB)!kWbkK&77Gb`0_y8aO1d^V?vsx4GLZeO$;+uLl^$&{D8M z-V8CC&;!@=wK4x_Rsoun;jI#pPBfUZF3GZ~Bb}leiXJXH4751Sx7Wcz8zI0k8Eoru z#u~{p(lV!u1%0)-#T19rO}3SpX9;y1)VbRgd^FUERizigXdF}fY)oFo?=ND!Y@p0+ zo-qxdM9Gy`8V)q;zdk%G-~aF?=I3nwRXp>b?<4KL-iT9Ho!hae^4r)0L;|+;WW2f6 zP6;7mlDK0@h!x^nJu+lbEssv<9x$(TaB+%%rxWg;=*sTUn6P^oX&hsThQL!aTv{_1 zDj^L9FZUQ51pY~Vi`2Ykt=X7!6m)C5A8aN7u26gLEg1){NTif9QCRqRwkOvG?vkw; z4o?Rx(q)`;tJ+CHRgQIo`J6e~;TUW_ae?F)rWrs-VC@}7qn1`e{6n9!6lVn=Nxf&R zkFYM7%bbk)vLO2^Wt{raPg5(S>Occ^Pidy&4omP4=#@g;iElf*AYJg_kf6sTxt=EP zIFHa(|DLCQddf~@oV>fm1o%orCvMuDZzYFp`Mf$29k{WhQTqS~ri}5o7y_PTa3=EU z#~lAXeY(M+DhcoL*$EpnU6r5S9AlJQDPO^Sdo(O+U3kWM$TCRYke$Bbyk&g#`td;CpJ(TI*7NWmO_w% zoslZC_2a!OChYDdq>u#ooL<;bygeyDGUs?OVvo<+8Uh5#%NWyMIrbH-@)ff|Q6Xq$vuNNK#XN7d29I%oc<@ZuRN-`VUjU4)awvE#LI93Zm~ zgY55%ro@wQ2E%d{!@_TfIB;rFZmAG;;TzR#jby=yB#i?^QAziaHqy$wSf#BI@twSXbc(;HslGO>StFV8P@gnp3 zLjmEZdKY<cx*q%Q6r;2r zZ`cLy3QdV?6Lnc%7?WmDW z)x_`S0&6Eu9C%A@ZC#W$c7RT&3oQe)|CQEM&M79ltKhUi3s|H5L{}Z=%}hi_Tkl|1 zzFk5q8Gi=j#kctfAk5HAEN}whN$6UhZ0LBS=LLi<5o1&=KfD{2*GG-=j^nS|Fx>{~ z-V>I^yg&uo>F4TerJQ4|0GxY!FHd95p!#GarOu(}nfs=UM_Dnh5g_0hv2gW-vE3;a z)FF-T2+HFQJ+*X$xgOKXtY+2bn;^KVRRf7+BY`H$DiFBP&N05T;7Be!5OJ~>A93gU zugJLi*rt!bCCDXkm8zIsOO{86MHQW^boxXe$4kbfY7QOLfQ>ebb@!OjqVZiS(}Do( ztsQUbgfND{m25Zc4|?Lb7No}tbS$wAw1Ymx+>;?_X~7cW3aW&y`a6&1r8xO?u;$$B%q;fC2msEJ%lH}Rr||s&Dv737uw;o zBwnPg{@8TM^#T-CGRj-I1!B~QV8%+l8<^k#Cb(qs*`@q+PHZd3!cQdLnrqSc1VxGO zkT29hx|MG$__#4xo|WcWF-XQ!3W(3W7!%>7K&sxBBM^AS{2)Hov7LhMM;*p?HJU`E z%w_suM6OmrX%hUzy%Bn~8+1n#K9!>}^&3k_)KZk1(0`v7gut}*PY5WN@#z-ZBJA() zmg8x^9KNM&)TPzc4W>V~%m4h({jv^s1_6Kvb}7M1jO8{yM@7Qb<_v?xn>W4kzh0iP z5@W!gHMdO5beX2vi6fG&oA7=vqygAx{1GO>UnO+u73(6kqK%eq2L95x z#cP6{!8%fV4Wd7BWdgJ`V6N@b>82;!QExSja1SJXV2^^>=>w7wr$Qi+FWQ(0qNLIa zhN>eEq9-p6Pfze!d*&(_ob#{F*;SnF_(Pw|eYRTI-P3^< zlvI#uXh>Vz0(xX<1+yw&Rn+`Kgp6*Z63oXWdaqxyjoyhnYGF#%(~r4SHl<}E73bI< z8JQOXfH!^%y!L>WWp+U*nO88I%x*LcJRY|&f}{Z_yc@FUc>no-gmNhaCs8yKc(sr7 z0K0LWjLujUaZyfDe`YuAjyCFJ;hUB1E!^0o1OU}Cs7B#ha)(wf4DJq<`~zrhh$O#_ z)fYM=eD&R4Sx1e#SMm}NzwFlakYW2G8_NiT2MrRZ|8Nby_(&0^7meb24dd4a#*`K- zLUew(!1vPK0&d0|bk2;sXvbi3X$*0b^`RVS&Gz`RkaW;T%06S>_~@7g!tC_sa>CqOYGR)C&wRKyPKnsC=O)lh^w8E%bt?PU zJHSUO{v==2Pw!pt5Qteg3He6WwS_Bm8X*rU{hMQP%VkadkYgzW;DoydgON zVK_sh=%EJeV%T|xd!p`yZB+S7I=mx}6VrocM28n;3R8R-f9i)I1nFUsyP1Dp_@ed* zgz`mf)c_#|0w~oXt)f2Gijl~%hu#4PEMOhqUh~F1H9BmghjX&40#N<57KTHxJ(yC5 z?_%&8xmw|54Qni_?^Ms$G)fC9-#Hp|tm!KC3mjxsF~iZ723%zfu+NeZ%ZK;LRc7N0 zyXojT?M96AYK@>IVTykh(O4XWHDNox7(Y>-Fx`WS*v}2rjywbT;6Xh2Fswb zPL}oeTLi7jQ>?P)ugO3f=`anWTH$@thA>-OADA0kfz@wnV;l10_0bRtMCUs4AOaXYYwY1yxJN6IrMH zbP=1KL>&|dX@|a+IWSUN0-vK&57l_skMnA&4WIl6uOhk1e#5j@$aX~MgBIRei zf0u3-k@xN*O*9UFc*u@~MA7-weSb3J23C-7o~*(&OnsxCG28e66G=@+dDljfFAeRnY0DFOfdeVg=)1!8I36pMP_NC zF}sh3q|oX$w5h{F`~y5k67DLnNtt`N61p#rKE2m0O>@VzD^53Z-IIi6&Brr*vArLI0Ioa-hc^Fi9sJajG6pUC6IQ} zBrqRP2LXjQz6}WT-S3-i1ewkddpuI-hroGn`jIb3;n za2Skdhv)Q(U85ygpV&1l8^{kn5(FgaCldGwNx3(TWBnFwteX3R&Pod~m5D=12dJ7C zY{rB~S*X)t^y3?qr7*<;gB@ttCIsmV!_Q(o>n=M0V+1Fz)%9JTAu*h@0{DEuRseWp zG_YnW?K~HI6)F&?vA2icRvAQN(SX4S#3kEg8R6+c()t<&#;1Z##bFjDu${mVyS8iR zCiF@j7-$G45tj73`2nklzw9S?RPQVL|%ZtMC_zMvo z)wFl!e`FQ8rIc{InWSf?)_uf^`w1#%tGvJnwZU3M%_wIWTwcB#mzQr@;EUnvmI|LD z1z&Lv{Y(%=aP*6d)xYGF{ZEQc*usPNZFTWuB*yxc3s@?}1m@JoWN z`bEK>#t?;pbYZec9Q=d$T~&S#zyko+PtHR?Jhb8&I<#(K3oigCddV!L9C^%jlDie~ z$sRQT4FtfJ75_v^^Pr0ya~(3*g>Z-lQ%%%U<=K-h=E+n~`3P0g2CILLNp&}q_f$dc z&5}259>yxVWzhI79C%llD4xX<75784XHPNd=$B_qe)l-$>Y8!XTQ+}sd4RzR6S(ecrzcnC@bwuUHK<5PwI^8V{_{V- zVHyETAbE7zu&ImZ3(7zE)pgGD?&3E9_yvFTl9BnGql;Dig#QCK7POxb_Oek{wOMaU=E28mMwIU+g%a5|2O*-y2bOhEg(#e3de9$>aY)==KcPtgE_WHMv_Q=;FW5X)vBKw}t+$3Ss&NU5?9d956TNr6tT9 zuTc$aLcWU%*?2O#h@#Rkm%6#09X75@Xq5gQHmPTaymE_VT0>uV74$Zeqm7t}9vOHf zzF?V9N6A1$%Jk~)m3x*AB~xkua<#-&n@&V8cuGQ3hDcO+gvy_JRH1tG^05%9?Xjcx z&;h}kWlpMuLZ@WvARYFwOn%KIuPdot%XrTG-2eUuYBN^K4VKLu9)oX~u5-)WC_3hI zwl&yg{wcPgXIyQ^=Kho8=@lIl9f;5`f%`ESzc`-ugD-+nWDXBx3Ffmd){QFWn9rP( zctha^zQ9$5Fej|n&`w+@r{u9SvBSKD@vd=*SVIlTbL?$FwJGogErnqYm9cIQF}h%n zj8{32j+Qs(E7~3V>PjZwoi}~PIPdK)ryb!&#?YEEwdy9*8&ez@Bo8vJ^Hs^r^2}cf z)J@}VcnH;>!FV9C&N6c1i858*0um}OFwi{`2i3sMX0S-_qGE*S5vsU0X{@+qldRb;>AI>jKqIq04%RO z*TH->=o@7Xt%4nf!B2e=*;SQu-xc9q!`sGrroTMjVyfh_yv6PAj0xud^#g8Xz&2tW z!Vo&9Xuig9^#V&~AFl-Zmw>^VD7j~Icd?8Y#t4>c;lD80sf{pXNsOLT;BIgdwWS$1 zqsN85lWxFyZq-k@q7PV73!)u(W+^LEAX|9gXk8r9$#8xJW32%OrU{*kev~ShIRyMjcoK;rB27@_ZJvfPA^jR)c-t4 zE;Ee3^HYe(K@Cu&&2soKZjH4Q{6r8=0bag%uVvCo%W%H+=iJ#P9wVxoE=1I*vcnF+ zt}fSBWv8T*ZcrI8-T_k_MMnO)^Cn&-xn>d~B3N<9csfI$;(6dHq#Af^$Tj9H`lu@s zoTFgUa)7XXs*ANnELoz|oNe>nkMLA@f;h_-=X();s1$yGVo% zgOLr=IX-!|&o*{jop20h)D?LIyHg(>3G8%g0-5ge|A3)B9wn-@9eW|1sRcR9F*nV}-y2Q8o#s2ybg6&SCI z&0O!+Oq}Y}26`neI%-3}2aHDPFYB(_PALe3+MCwY0mCL&tWSs!T9W&sLX-gWM!nqu z-Aq0sB&0vnb0xMApc(-<076wEY$eVCqFF#)8Qf%-E_aOD#4NrF*TIJXZ^KBeJU|R# z;IMZzTHq5hQdEJw=MSV8X*1MR%k~;OP;1b^yZ?%VFm&41S-X$>(HcvS^olT;A72IX zyw(jb_%=op31=hw#?-3B>ma+$oZ1w1Z^U~$jWs6K!;h4E)t&g>{>ywU=zbt_A<^%@ zy#Fk7fFX5qf*n8y^=gZ`y%$e6ar&lbJ!HU7eZy}PoO%Yr);1fsqE@?$vfCfp8QOK^ z?v40;k`LfUJ4MF7(jU7R+qjK!LRD>uu0N###CW}!H&((|<>@1Z&HGWkKS= zO=tBP95BAKFYs{rZN_$6s6WtfND9ecq&fW{jH()j7&FQNGFSXJoqY^(Fkg%VeL?aV z8)^%#!WgyoGz>b~m8tIRx^E+UxTwD`2m3us^e4)qbpF^6*f07&8rO5|D7VvPi4Kh5 z0#6kR+>=R63ZAP!aVud*M`-jf35;Q_vg(@|N({SBsw3fMdQ+Fva&Q7}07Gf`e4ly0 z=Q#DUYg!ix&ywB1eN7H(8Vk!YU@(LP+km zNuA!7=~3TJ#;0hpIdlT&zD*_#{6kQSt^VDxa!R86q%+8i6F2GvukkZxoI zMn$gUxMU@xh>yS>l@1G?VxJ%*kFY+t_l9ljvJ^dJ+`i4@p{!*6b$q}dzw{@c&jXAf z>L^QB)c-pSmYOkvll6^>e>(?gt13D^Rr*TMF}WQaDAO!{X|bJ`a`(n$iYTsOq2eN6 zN3csOEA->hg(`DI9^xcy_$e?hs0}y$#9FSf>_xI9&91VWKYQ zLBQlLfIdgfcg(7OHE~N4uF|ISupTun*?wvGc@nRxlsJ`<)VpnHfxDq+aGs^Z;J?>h z#X5yLl3WCAbkm|pM&rN8@^9?K1#tuc@@^KDV?GY4DBGAW%Bs20ZMdV8$3Z^|AW$_3L5j@LA^d*szV?oR8N;I$@NGe3>qn>*LP)yzE4?@rz%{sqCF zUO!OyjvoY!QN;;^K0^z)@H43NdC*HRe`qinAMf}iv72$waZYN3=oWK&9sFxYSTko# zrNq)5jAyQR*J0YW@LRgt)Knr1S?XafFonO+ZunXV<9`K9heg^OJzN82NQA`@=D)_I z8G;;%2n2!uI+xJK$mL7J&tkkNq^h{>&E$SChP}}Q388(^zyjaxWS>w33WE}vs6 zVBOjpTj1>=?daoxDM%cEwbaRUY9dOYtZP+;Uky$(GEZ6$b$)?gndki=t}?xMbw9kE zHu_>Rw7N<~7o&Qr(>0n5{x{L7dLI3F2MNOv#tu1FK%jGfQq9Za>4O;2ac`R@Maf9Y z!3sNYbC-p(tNh$R$=+j%#2wM8Yqk(JmCDp?WO)P*^;MdhLzRnF{bcxZ#Fps zfO%bpl9%hW?=7Gnc_aR~VGt9tu74FF@A$GU>qE_0skHP;woc%V;l zpAebO2C*Y>TqwGg20|+HB|9cz82hUR(MNN;wk`c{l~@orMz-vj1jKd}$Ut6Fe2pKk z;){#);57&v1bS9RpJ}MG3llM4iGk$;@15IWx6CjinlF>e2^6TXce#y~8`88X-G@S>nP%THdvobk**D3(H_Cyq7_Z}K6_W^$Uq zcM>=~1?j^O0+K{Pka~y(;{7Kf+f!#9DuA;RH3LQ-civ|*<$z1}&sj9-IL{n)h~8pD z8!f83feC8lLzbbo#^f|TS`-M3Rf(#kH3O)gsWM+MC;7v>3pVqC5bz;4a7s&1*ZIJu0257wvP&Xs=`&Pgj0c1 zs=~2c=!Z~RNIdgcE}l9}S@dh1(K20^hb@d_OkJ`?A@#jvoW)LRw`}nqlE*v%>z09+ zDq$MWgflZv2H^1np)RAYM|cnca|9UNaU-J?yq3_3lx*OV-6`{RpaKX(yFw>|PRwtL z%^|x*?s?AENLcdA#b0B^*(Vt~2Gr=X!v?gR9~t%- zjXp}njy)hi1}b2N3966qX6f13f|)`P6^=BFr^~zRRyo2I?Tq|aMr|yo7D0|qiy%!` z!aoo=$w>V_t({qqfITv_)wH4ciW(B2 z|FJ@KNHkI3D$ZeviwuM5s7wndWmg422PERh$01-9WgyjR2QXfIKgWm<4Aw;;|B_rJ zUP#Wah~QDhYL<^2H3V6X}NJUUpaK68gIJ5$;wCY>vENK<+ssmj^cNCpf9g7`UGhRz!|E(|I+W1PL= zjtl1VEThMuH}?0T&0|LaJ~odk+j|uRXSUfKn@J0yNd%t6Dfs}u2joaQJ@U&<6gi?T z@J$L`!|Wg^B*w7PG7mI=h0~-{@oZVPLgvOrl`di_Yfk?}eMt~ZGl|1JXlU;zVDOfM zUEG8f41jR0ZCt4vr=AddTf>C!C^qL zY(txly@rP`hm^VWLCG&$kl^76ooK};smi}6x!LlU+CQp&v*lqX*D;kJ$g@emh zFmy$ZA>r(8>R=XCHr6eJP$Yipn8mfmz#=B^OfO+5rM+_;Bk4;xR5TdYdzbr!3;?6U z__-8WAff}P;hA3-P-Quv`n#O|7*DF5xJB_sAbi&%vQe>kN4MF zCIeD$+H;HfJdI=y?HtM+BTWbF<4F;;Ie#jg*R{#o*H8DZ5SC1$Tb*UpAq-SCY{Y9= z=~8x+ac4^6Ol*>zHIy~|Nyp>~%`5^iJrI=ojw8QF;@!#53f#qD_|=(403CM3V7vM# z$9}w_Qi-hu`c7}^t14ulv4ow#u+N!D71(Xh&pC85^nN5lm(}L0{eF~NH>}8+2PoO6 zYBUnjHb9OMGF1>QWjR58?b&+Z(VozgOjq%Qk@1AVX^_ZUkSaW6?!NY2T^Va)sGqI9 zDeG7>SZ*xh9YYvx2mr;BfF$F^crV}1|EhlbQRotC3&50C<9U({pRI07ua3HdVxY}K^nQ&~c4~~Q=-2#`|VNu+BcL5#%h(cF~Y_RQN z>ktnn+Ix(3@ro@Oh8%1%!*|lQk!hnzs+?@U2*lU0SFb+n5)i{2O;lOO`kx2&$Fg2R zbR`{Yqu$SFJP;aqugdg99Ye&))s*QL+I1t_vssBmhs0PD+Y)e*!~H+LuaLR)O3ULV z8@OJui+Y;%b>YmaPqo>9f(d!FPjNrWx&$nT~A%z4btTEBg zJ9}|APg0$^#=_#3g-z7lHUnsPb`GcOU_1&5rsR7vseAvR*Z-fr_iB$LN!Bz2iG)Zb zG(b=kOLU(zbM~3p+xh=LVQ+SKp5AlnbSVmu&{`!h@B3K)D85!Z> z!rYXbo10taxZk^g+Mm{15n(FPMjv zymjf{v4X+)GaYfypZMVRr2w5iIfc4^ZK9o3N)=p0S9d=2H&Y%4(P`Od5nk|uUUdDi zk3o_k3fBxo68FU$QxWL{#j+m!!e54M3@Gye1c}8eOv3aGiFAxgDAHp;!@1T|fehp4 ztf-)FOIj%pP<^>RPOLLW<<5Nq*q%M$ep=7hyJqj3d+z2j<_z)tZyn~zZl@fSO1CU! z*w1v|KDTY`o{vZD{!Tmi1)K~im{W*pyFuU}6z!oNQC`>RDconQLnQuCnFV%BqYURU z@p-i|U3-OwLtgcA@yltl4;e%&w%7dO^?P-lpAyId(X9Hj#P#g6DUv#zgSn)jmDY8* zpVb%?;bqFRhe_!eHSo+Q`hYGG_-Phra3LU}jhN7T5RM8)2o<G$KiZJ>ACr?{5q1nV zvlTHW!=pd41dC!CK`>Q9>7mkiGSHNS2LcT7-!l|M0kivd8xC`UP{3q8{+jOB!2bfBJ3{9nRzyrBReLp!p&9{Ijo@5|>>dY% zRckz2CSKr@k)609QPozmiJKv;dEh?BhGeCx^Eo$I>o_1`3#Ab_(lJnn$Cil!DmI^* z#Iu|##EZHdW?I3uMS+H$()1C-$2q=U`O<wbVIDU<*VO=vYT*f6X)drp zy1Z1}-v)MX_?FjQ8~ok&(z5wz{Zp-!CLpcB6!KI)soxRP_^84t}D8ZO(}%Yy=x!h)zYI!fYq3!ch1(U#zscWG2Bb03uT z2|rpfKW=%I+LbU-X?N@Qe7hu}4lY5c?|W*hhV{4(p<76#aw$~;o0NIiqrt8w34&^L zhxEaB^4@?b?mG6^XcZg>a)DSY1H@j|i$cib4tL0(eoc(B^`va8`n6=mZ6oAiT2O79 z=<25i^kD&|9zDG0uZQ4PDHP?EEjG++zm*f?_VZ&RwH*-gDXiYF$5lp~)h2UkeU{`- zkO4706AuNVa}oRa>=f%Ji`{4p9m#h7zjalxZkPbeR z7V>n2iXGy~>0U#AOCDuldIt%5Cr47e92w8?+-|UXplp|2LQ2pSJPcf_$V^V3%1kx!N`* zKi3u{g#%lq%490S^bXH>R8RfuM`qBGNd2jOBGrDIj)?uS&KCKfjCcY8+hOuTDK~ z^k@I3XSHxXQ9>ZZZxB^e^(hAz>LHQ1Yv}(o2?wX{&-Q(!Mv+8@;=T~qQ0%mG0)dlO z3&23D?z_>_6Nj{F_C~~PLDf;(t#Du(7V{vGW2?$5(%2RexYlPJR7!x-<){vKr_Ls774>VC$*O^+dkwg@9-UKG8w}wB&fCkTiGQyZ{NVJ zMpzxqGNTcpojWBii+!Si@f#NGf9}LU(xIj~MBzM+q#FpQ8QiBZ3K@am`f`T7bP^$X z+}iyhQBFG5Vvc}FX@$Nbw6HP~ooI`(Un9lDE zF5gx*kt~~T{T{+|MEF>+kRrLBGns5d;5&Kqqpm6Uak3BTs_G!efF%rofU_5%FRG^V z3-Bl(>rE+Lzx|Oi_{xK}0-pnXQNW1U7Yy_{z&4D9$@4e#MO=XE>b5nh#;EdnKD$c} z5}eM^ysjFihH%2pxT&cyx&O_ON#}qE6i`(F17G(VA=v!q9}#}5z#RN z3n%j^{ljp9TtXw7*MF{l*3z&$QDooZ&fCj zFN*WEfG596$#@G}c1`O_%N@%VF3fr~vV^4Z;hsrKSR`HGqDI?Zq>~70YrB>jZeDAi z$^NTXn$w*Yb){i;0_Rv>iyN96jiAmbh%N;eNbFkrLnq zYlm*SRAOA<415XVUJ*9_5<`M?W0Wm9njtoBfPrpVfjf)WLyntTAXLH}-vcDHr}k*& zb>0<20hMTdR5cSZ3@$VqED}5tA*wYdCnWu3*{ZEM>PP2^FRJIQgr_#5p;I@hb~efwDQ>csxtH-2Cep*uucB zCD?Xoxhq!s`FZN{_+;|h-;=HJx2^G{sS$lhZTdbU`5q@>C~|4+b6O-DPTz!;OfN9= ztuelItz%2)=SjR2mlg*S)g}g2PJ4vFiasvw7yu@(4fNS9WlG$-yMJ zz!Ago2xL8x2-yLD>Cy&Uy3Kn-3=rS5-JYDIFRYT@4Y^tt9c<^6M$gvDxJU?$H4dg6 z;P1E$Ar4Rp@HviJ7(%BEcW}FKVgH1MbG_PM=ZzL=xc?xf5p}2fZC^O z-@2DR@N3*W2qSuTTe3*0nF4=8Cuv!?(E*t+YpnRL* zt_z8zR4|%lKS026c(BqVuBAjZ5ceY*@5E%ty~V)==SRRemMCM1TD!)%j266ExzPoL|mu>%$*;ERJ}- zgPNiU>2YGahu567y`NKakJv$f4wYSno3jbm#d)Nos^PTOG~f!YC1JJCLcSYHJ+!h^ z9tm7zA;y}j=oRO>!3;g$?dB?nxn0=@^YJY)x-M&svz=39z_?o zd_qnzzn*3fUZxtrTSkz!T10y-o<&Qr(5~!M@XLQB;Lj#JIeOPsU=vkuRyB@79YqZ+ zhI0QL30P=bocqJgM}2WnK+ybSPNKh{F&>3_aUuW`VE()Whe=74w%T3@FULWl=DCz` z4wcM+^b44<7Zx7D4AZu@zlEl`nSqcYI545+==tR5x5TZs0=;o2{B`qg=d^kI zc9(PQAUM~$7;LvTsahHuaej`&M}~OI%yWpw3iCIlQ-5%qgIH9%`XFIhIAJjn-R!0? z#38<`XLyVp-B9KY_fOc#ea`t3ySsPItJgCeU$)Ww<>m8ca|>dje2q>b zLtLe3Yl0`G$J|V(YCL#E0`~N)@)RP=cwNgI5|?s;5bXOzoYSZB9JA&bQhbRy_}DTT za8>ET)q!f0;PWG#86}?i9!Rgc*=BQz;l^D>~j(>UrUuT$Sh);@a~p zyS-E5x111y{j?4}qz@x>uvuKv<_O-pysT^5RI|moex0|>06)c9qDVW3bNxtr$bGO_ z5X5yy>%NP@1(;w4cV2i&oo5&~PESF6#=+Be4%k92$1SfFvgRFO^3B{0XtE%}uj&=3gl`czr&(}T-iSDJ}_zp(_Z3Tu$ z+OjJrE<=z1F`p`$T1H48!^fTH*el!=FhoEID@&B^V7K%}U!3rFDFo)+g!;O>Y64=dg9Ov$ zAeDym?arI;e%j&K~eenwV>Q<=W6&j2jZ+A@#mH96d6su zQQCE-3|@+?x9U>0Mb)>hMV3xE;?V5{Cx8OzeU3D~9>MQXT@BRaFCdk=W6|x_!Nmt(lXsGf z>zIpzE6%8W7P&yZb!}!jpRgA%Y>*gIkO~jxmeb=hkNCXuB;&-N`@0==Q$Z}=Ja7&! z{%T+|#*2d1pi1`N{#~=lw@2_RnX8&l;9`LS;hrl_RQ9t=2%25`pDyui0H9FPm#Rhs zXspqmI5(4nHP{(`j($(W-4>#Y(jDql5Okt#4w|bU9s=)LoCI0{eTpz#&k=;?s#qcd zo!?p(xhtZNV96tiDI*WBr%WS3tAq-OWcOa$r%EY*bP>SGKYgG$Lj+zC5$gyEx_@$l zf#U{K{4!QRBN<~&1M;@Q{>uGCk~{KPzFrJ^xX5vhI;_RgL1WnsYu;`1hM1gh-=Jb5 zVT=#cpIX46G2g6mF8ed2%PQyEEudn$bAA?LfL3yLxKhsRF16FR{LI|0eb8kQ>GDo@ z-?n)T(a@9x?wRL$fHS}XNc3dkN%NMv4|evO?YRTS3$>8Xcia2T9?L0ToNhGVyj)KZ zqdAb%7$jZ!vYK8N<5lsg$2zDaK9w+(Tcp8&h(RkbtwmsWgUWM=d*9B%WwVI-zT#Y* z{I-u*fgAu63z-iZEbC6!8y;vybbPe5+8aHDbalJEMGDamEsg0TuNFS0up$t~D0k(U z0)UkI>XPen^-Js(iG{k{ZDM=0O`Pa)gKL_`nK_JiT7!`(Sk1vbTod6ZK|uTNKN-v| z0IK%XU$cl8X@><*q#khkbizwf^#`~Y0@7GLI~?438tZ^u0>BFc-+-}7f$(B6M4M5OG%VUyl1jnJ`SQ}DWQfD z@JmT?2BjP&h>pl~#azeryRxK3px91}NyF)l&5@gTUL|Z$Rkibg%u6KhKJ%$JuTGm+ z7*Vz%zH1zY2Qx^u)rIDZEdt}Bc5R~4X}FmomW!+)ZeKJ~g3}_%7a#wU9t~XG9RE$O z0v9*iciPAKMZ0CtePA|EOwffsDkbr0_C+ZC;oiR8YxY^v*n>NqFh9KQ&lAs*BeXe* zNa;HdrFiO+$sGdIFrI1k(EG$Q{+F5D-RL+Tuqk;+{|*jeLd===Q03QAJC}?QVE;1S zN({%Bf+A9|5r8i_yvDMr!m(1OWwfI~snMW`IK=!Dw}h5MEpv2mf+Z=JvXhIiT-A3n z^QYc65A1}cDQ+a7QnnpIh|bw(uvrWcCY}VG=+eMKoOW8;F-LJLj3O{998FH@rs+4aN!s_)=`_%ecQ+|T$c1{i7~gKo zw+3(f7XZt0dU!;TPp%Uq270*;xt0TdW!*?A+DSv-D?rOlQ5gWVr5TC&{UM9jr`7>C z#vyi*4YkXQST&V)v{k?gJk^-4&7$3i!Ic;dABX~ix_ScwpP*VEHs8Ne%Heqe(arTa zpZxh61h>SQ<`5kQ6a%KpZ0;al11Wj%hj0>!iiWyxTmC7jVD$J6`))6EJkA*m7;*-j z5ir9Nzzh;(>g|4Wz`CMN-}?tg0r=(BFiQ_>i|j7P8zwN|{VDRe2B=CX{RnfNt%HEn zGKW-i;oiW)oZ5!eYnmO1`pLntdCDQ5rJl*aWSbBQV_2Rmy!>G7s~0h(!PLwz^Ki;m zXVum7$(Op`XHD`0WqHdni>BDUZo}JjjX~uQ#;Mz$xHIdt1MaIIs`%#|Uroxyj=-^znngu@IFu$c$We7NUjCU$$ea?&QLMbWwq*sP&)R&`;weVMlO+t-n=0I zEbI~V0X2i%_SUCli_&Ob3NggM*@@OX%5smE1R~K{9@pdIiW@rEn$KeZVn7c#=<$d% zw>_XjiM@s-$O)_T$7WZ3g4LEwu<}BN7z9(wxs_iP>ypv>_U~_-|M+1a;{}bvcXFO} zvdztf=F68$gn&oQ1R0eGc!japP2rRZ{|?7gWEX7gtHhE>9_zo#BH6|jtQ-W)NPyu4b=j*mX7KA*=e^2YtbbBAwGv)r)-WyHYLU<6=Wr>0LXGu zR`;AtAw&m8m4L)6h6*%nd7rH)>f{;~&OFWu)~Yo$U}O+0q@ei$6h-K)e5a!_P_rFb zS7YwA%R1BfrILC9qPuCfFs-k#j9}1ITbLoHiNzosMDIYpd`+{$?JV>Nm#=Ss*lFId zByq-kNfoxw!u!kTo6TRp+T@5W*2_2<+w&T>oSp;V+3}@a$g6cb}m3E0(Ec^Rq<3-w|uA`$!CE&W(e2rVHOCS9M|QEMa)K8PFft=I+bujPSrHhHxLBKNUNPw z<~A%epCbbFT3o`#YR&lxQpv%mTa|cUD{c%*G|*-m;_nJ7Ibf~q&CXf#<}K&2A0iEL zgq9(H@nQ`l#ai?9*$_hwOo=`?b8shzPRfy{!UCcTvbEoBjeqEu-LMYllET6TXMg)& zuHIiQFP1qcGqkaH`>GiMmrHk&b3E4F?N$)p{3F^vE8)QPWM@!kguekCe;ove z!u@W3YtV}Dkpn)(Mp1dz;s>+tAdEcj+`_E7>-@e0Ju^O1;YlQT>|RMLn5Bx`=Dqb@K)d z2mjQ^0>EK*6-}n0Pg90KWmy{RMs+1$^qX`If23W*>7F_ zv4qD!42F2@blSF4eE%RrlRw zg0u*M%8H9x)C1G(UisH@L57n{HSWuw_Z ziWqszK(CN`K7C-K&!_8+pnEVsg4{8!?q|@w{^OGH0G>)1=c6JKW0f^ZE8&rhMerM9 zVSSBx-^~^V5*GJ~%)PO`gmwY*L&7PovuhpDgn8Ib-W98}JAy)PAs*Gy1&vfJpUh*# zIc1&Y6o9?ky>8aGv2JotA4rq^&z2Kij%1!~0Taol z*d*UACc%Y$6eD)S#KGg6ckr7$ zIzm!1sLQCxo9pu&Z49E&P!aWh1E%Vf<vUM|rmr^Vw-7VC~*r#k-D`C3hz>)r=6BQ}>%GwLS=vPep+?Nfc ze-Ne?*G(+2>&*RT*z4!iL6<;>#&?xRE_p;DbU@pr*`@&aaf`+4k;e&t_bwG!UMr;RcBOWoVLYfA>)m z8-k<2Xx<{ef_r+BdzR7FrC+K02c=L0TP?7Rums^{8Nv5?%}C?o6kwqID%XM%M&f>6 z(iZ(IU!O&Ic5YmygJFlEcOa0UH<)0Z0L!f|=!l5z{K)qz)s;H7ooL^-gglNZI3VZe zMCTj`2i~=>ML7|YMC;lJ>*2^fbnSevM#7SLE@2{VpcB5WkMp#_j(yyj_V(GDgIn9( z?Im6$!{*u65?l`BL%44B(dyG4`l71o(t%9o1Y~%JE7*G$hEM6E>hBW!-@g13-^VZT z+`y2c`sNX1O1ml4C)r3)NkWFeqE^}G^bz<7$bV4M4l4u-#2}>q=!?N#&BJJ#y(bG*cvZi+V?X9 zkTrz)QA+D`6eN)#Xs&9e+m%FAOO+@mlQrnDoy4O^Pmac3N5akPS4c09S^C)p{>R6R z2^_K3##Di^1yC-f=Hq49CV5<=wds<2HpU`>O@$i|+mHt-qs`!0cAq??jUb)n$Ed=+ zD}J~HbP}5ZedpN%Ytk~}@~Em(^Oxd6u6Z9oeMb5$!Yi;;ZK@qNs&OsAoC~aCj$gs? z_YU*E8$A!`kR6lwlC4GR&YbH6nLbn*X7ERw)XfXHbwdv8zleR1*#+NVZ2+xo0V!1G z;aaLyBjWjAOH-3D3-Te3y{)udpnV+6-zF~3u3ydI3LwK#~f^!IvE3R$~ z`ZON_1rwCco70n<=JmVt=BHOU0`H5koV$+S<@4vbfw6IRhEdZTt@@<7J`2{U!&C0m zaKaw|I(i^)IEz?Cy*~Q9aV+3`#NRSHmEoz&uE9d&N-!swr3}+~vGYA8hfL#6=0=~g zM=rz%Ndo$8uR>y}fZ8$RzRV*1`*@cqFZFoQ^=@r*6{8hlFT?}1h1YM77zdrTu~_1K zj53KfK{>p~rYyz|KrqOc#%$r9Y(NG*qHRM=&Yr0dtPx*qm+Lk1{iB+m0ooP&?9Gsigf$X76DestpEq@yxJKe%y}TS={Wc{ezu5i|Rh0J7xbPlF~LkyDwacKAx{|&D21Tn>$r^+eMRI zu=YKXRfeL#NkAo$Qb{CL*palmxQBi4gry-!{A`_*e_%?;7CwvxbL`#Sv*z9VOM)Z0 zRLvZn@^4vCzkzY8TIzhEmZF9syj15k2)QZNa}}&5aIy`SASXy0_+?Ybp*K)2{W+N! z7n6TwdwMWkAy%ChiBd!6`~xhnIt<7PKAfs#y?E+$U|#&lBqTl~RfS3(Eo5;xmh|~8 z&d#G3E2dRT3~6_QN68h?yTg;gB=ZRu0$^InEJsq305hLTu7`h=d}K-avq)HBy@+Iy zP=vSh4$sRwIK(*@^LK{_Q*K^^YEYu^kiToTcdpo;V?b1nilz`J&(HD3U%^Fe25wqW zxTuVNr9rk01XSU2SPkH_M?L#^+}|>^~@d2o=Y0SA!9rz=8pBF;us+cZSxvn;kR^mR$vJTrKS%j%;1mi`UY+A%piKgTTz`b&q(^ssSbo$iw zT*ew7W^4!$9`!hd($H3fT(5t4WImqgEalU3r(O_IAoEF--Kcu>O}1!(Kze~KFH1^2 z5K)eFjEVLrW`BAa09b~-_Ko}r0CJ07iStR33hgyt-Y&_W;X%H5ih3BoOy@4PR&|Fq@KKHGk_e<% z#u1p{M%EKTL?{84a58?nwTR^ow`};EDIv#&k;qBDk|_27?2-$6FFmqfT|Ht+ zcinw=E%<%kO45ShFO+lt7&x$Db%5x0SAW_@QvwRV9eQ2e5ECvar}Yq~$E3+yOumzD zx8F)BP@-9XGHAA*EuqFSHNn_)!rJQ(@7_1BSlc_{u*uQgJjGIGTh;}O?)wM0nxUN- zQbgQxv+mG&ICU9cMm%!NB)oj?$E>u6Lh-g?HqP>sx^KFIpKl!Hspkp{ybN^7FczLJ zJTV@@OJ4I$OV3zVVW0f>lO>aT%I1qyTFpZv9tMRG0!9 zY|AZx6g7t%aug+=>O)yO9pvg_h%F;2kW0cE@@<*8A?vHCvQU_dyQ;JYs4y3!wQ$FT zGoW!UAH3f?Z?@mE1AL!wdCc?XnftlU_T{q$7zNzfy7@y%R!nHGli^>cQPxEy7K@FDT^ z2M}LWU0|yM5peR{78KO0JrTDw$yV7UlhW9BMFWv~dFWEb(ILC_!6P+L?G#G9c?eIu zu>Vej%xgJ(eIQx4Pd@zg@eAU{C#CL%`{G4XO3)gWz&m`q;HWigK*R6Q+0Tgoams{M z14|m7m(4HKs(Qa--Qq?N6acw4;{H0vwzGtq+l6?~tlPvFaE+bYGw23#Lmie6*!y(~ zVHpBY3^@bgchBxv&>Z;V6l!o@s zp-b)c;}8F9-Bo`zs8u0TYcUC9fokxweP)eWzH2)-qO?$oBX8dfjO#2YyDjXzUFE$n zGvMZaHD__Ii#^$xW=G$XfxD0c*C+Q-fA&AZd)-8KXXcgviM@)9fwCU?bDWeNxO zK6~L-SrZ(fWk?)ZUwZ^9e|ERT%ljW*o4`5MPp!HIhw{%1uS8BQTd{INTw35NSx@C?Z=eF8=IH^ya+!&Cg1oX$bb3C`whrodlQ6Fz zVsUx<{sIfyF`*Amn0v9thHClZ87d-#=b3tmNtxn72I@6gqukn`5;0R%BrB>2-WT>~ zhITG2-Zm=>I1qzGuICzpqL)J|K|>gU7%Cx4iFe_yRd%iOtNhh(`!>F|_J2SM2)p{K z{HVVXPbCGavGvS#*Ce|E71g|L{JxAZ+K!_}8R@3)DB1ZTaY}rVEWk=Q+|9D(3X9}3 z-05_zxL}Ulzg~!@^qRSM(>q4;VT55`shWR*_%UXSrw=*zp2sUnOXDzWt(0fm7`HI| zPR!D1hccLBqewEpE+wyUr-81q`tJh5-Z^lWJoj+-b4h8yT(qA-g&9$x!`T(%cZZo> zx%J)UczE|izbNkaB^v~^Q%L51T&bGP%nzF3(qeWIIB}H#_6|Az3XUcxyj4YwP4gr3@7Fs{9W=&a$cp-hr4a&g7l{6yOZbyY5M@P8Q>x}k>Z;p6 z|C@$&w`&>9V8Wg}p&%4PT1D3npwPxukI$7Iju!*R+Ei- z24a{+!D$4j)zu+{jZp=wX333oWgT|#l^MQex9A}q@aw3v1 zNI-1?s+BkF8n`k55X{TKO?j6LA-I&l`{Bv-8>(}=aNl(}=G0%HZRlL#S%jyjvk+iE zu~}aIw99s{)zqsW?FACAVV!giOZku(ry6|R$ZSgu?3DRf}wk4&FMc$VE&biWyr zR!R;^BB|2tB?dQL#`p0MgU2Rpog78N8`l<5Vu<(6KY|4EsrdKc#`@Fz9&pNSFV8XnsQ!uMN zh_^WA@;t}@gNVN%1DBJ8qHk3%?Xy=!Y7$=8#||1iY?FB=$GpY6FuDg1x)&zC@81pc z8bf#@ONtO}yQebLG>l5S)~L;t<2kA~o;dr=y$;zfbcG09*)SrTL35dStA`<85$Q|(|OU0)Z{63wJPX_>1 zu8*$r=zz;K~52a5&Edz?jA6Y~Dp3 zs}9&5iNn$aN816vK;oh^b9T-3-9kneXV)2YPD;koh#H7md(NiV?OpOfQ2T@s7gU;| zUw|NAK3&e*okUl2J5*ob8KK=WO@tLhXKPS-7+8%5sm3oArpd7*`olq&7u}tlzU6cf98vJw6r{ovSm=)t5c?FkUuq*=cfq#U|oYV$~2Jstgu(RR#Dgqy_nc=KkL4xTlq({pS(y>1S$2=;Wq1sSyl@}Jz0mB`4o9HkbT zJ7h@>+@;gxNnjdsiO6m)9eOC@ECe=no{g#QZr;TSI`K@P+BK$J|K;n&=9@3pFlpns z%iPd0K#4j9j9^Tvh{9WsD4h_r_F0}*YB#gGHR_gS5~aU$-*^b2{b}Yu zVNKJW_6uwsdirDqZzcGUZRcI_CK^N^}vxk=5=$p^ckv9Bi0jqU1g4b>5mRJwsrhniy7~I~ zYV&MOZv;J7S{$X0_#y&Cmm{2u=@M0IQ?|^uz#vjDUl6JW6R|6YaMB#lFc4{jU;Mde zRB0-ZA-gBsqg9qfjLIwjouKJ&!u2BwMDN8cn{ACG3yGfuZBG990xYY~k2ymCN3vBWk8g7xMcHSgT zCKD^wP9&u#1p{tXpZVE6=F(ABGKo@7=iT{mdwoItnbUY75f%r0#efqV1o_EVQqFIa z0tO;iBg)`f5s;Z+ddW8NryGxnTlc!#lg#Uk(4npm_}YQ1T1J)H#O$*?XwCqs@+*(*wPU z;-{*lYq89(a#lO$eOq75jd^iJDNdrA^#oQV2Uisqn)H+iAFU+XJ$*8L+#tzSZnr(+qjRF>g)>jg;4(BB_!9N2#bndDW;}DYL6LC650n68#So;wvdR1wvOnmyV7J zGS0ViN|V{Vljk6~4BJTPZmCLOAKK>lRU(%GhI$wskPXNl`XCe0Ng03G4VW8CMlN{I za|&#Bllv~8_KP1?o8>uQGn!cNgK;av6-0veFb886(Qi;gpFewwFYTM===Pk2cQ*xH z5!U``cEdY82tf#R8B-?bB7~hUMrn=K|4;zQ1nf18o%c$1^9FUVvmpO3e|;I%d2@Xu z=SVnjb-aEv{k)>ze5K3qS%lZUtm-jFf$na7cfi+2c$RQ^S~oqOYIMyc8iU6T;msXR zXfl9eRCw{%duy2@n5vzCH@7&>Dgg_t#B#)wWuAaTM;8R=Aq4w50d-GL*!X%ghuNF9 zlG(YGq2IG>K`CmX6V=L%Qz&()KDcDTvJz5M;sX&u9=DYlhFvS(v}<%0Lc2=m_kD}3 zf>j~i`m#?z*Av{M2Ebu+bD8y`TGz7MK^u|Uc97pY1y{NEMB{jpWR}Tf0ryGZJj_s! zk$A!Y1hm^qUZa}rVzS5X6~}hrr+0~xh+H6_mLx5V$O(j7%=D0wuKW90>14I@u z!MpS)#;47|B}7c~jS$_vDiPnQs*^QtSXE+fZ?D;x4JcQUVgy4yAh&$5z1J;3NIE({i zSFd-Vbf9rwCua*GTegYcMGW+gYY*a(vAUZ+#s`LM8n2w3nMPYVk(-twJuJ(Ssv_EN zR7(mmO7(ZIIhKpPUQf0*n`tERGK{0|Zc9<1tuwA!7Qt_&ZyHiX1}b55{4Vt>Rq&^M zAwL}xkxSI??)#QRC#sct>pa!-6i#T@k8cmLBwn!evxw@5v?uuPES6d~#A=Pqyc=c^ z(}HzViZLh8V50AV^ARy;Ru}aq!PJjP3h|{awoKTNA9!cYjq7;1K$PycQ+mp_Jg-2a zJ7SIW?RyL?lr|UDh_dMbnSddGsECI7d6eo-TFzrf-rUYtd51nZ zT<)at>~_buD<&J2le@#Z^dfi0f4ukk>9YvW>K;_v!r^f<!ao~@dG7oNP$b1ak^)tGEi1+(yW1j~!ca*wnfxt+ zKdfA2n@HAU8~JoZ>4NbNUOhj(!P?B4+{z}~bJkZedNF3as_~$2=d2X?_^pM|rd`vX zeKeLg?+!VCVW&A?B|JSrqL!C|F%5TY>eK#($nv5d&9;IsQCgQgrKp=wPY8zeZu_)( z1Dy0Ealw3xa2#J_iC%-Sv)mzZP?V)6*|heudhCsHayVq@lPB8--blU*?Nq%TW&cB(W3yKH=qf`gyS9ZkR!g@rUovt^10?QtpoHZA4bx#30I!29R z67Bk-950K#Tq%)63RTY#A3wwSD9@gyI={gdxxc{H6mJyd%+W$U-Y&FG7bFxfKvrGJ zu3!)%7G6nlhdN^+)7K=po)%AfBC4vYPO*Tm(MBT+-73Vg94^x!3r=04ZbybbE%>Jo z=6#UtVAU6&Q6!$8M0-Tg-Y4$NA%2q_s1OTZUb6~cK)p;9IBu$4L_^`3s^ukp@|fjA z7N7O(IJ?BBl4x>v+sr3OUsRUf4K*6pN}kOQ`ha%%|Kbe#xTE2^@WAR|j3T1FZ?n zDoN6nmOOPRw4&u>q8Ty`=R_veS1Ya;6`Dsmk)Og1p+7_{87R{yyqM}Yceph*2OQMv8$hGa4fZcID0b4sUnwDK{Q=uq$oiyA=l#kU%tP z@Ut^+l6=BhbMM}>9SDCrBN(5vEol4QMRp}D5-D19c+^1N@3DCmJrWg^d7FeR1(75~ zujI7O2MzG!{D;X1b4NDXvf!FYdve?VY6scxlVdL3y1OCr5yJIMi6eGtIA63I!5FQ5 zDmYf!mXku-pMfJcqVPm7^+i+JE87;=tzY{~d8*Y$f;LX2kyrC#pex5YfN z68<8QGq2-1bGpDD2&Zw5W?ss7N94XePG+>EU#NSW@q<^ti|{5(bYMz1@^0H`?&gIa|zU=4nC(l#|e+i+ocu5_JlSy9ZLNY5S?hB0nEfK?>63*e6 z2w2m4ir}acZ6ak+w}X&?HV|R>2*gLR>4o1~LiOV4vzYD%*-M0%^Fpp{2YF5MN|m4Pw}az8F9Qa7F1b7MFR1exi`*>OS8~r>*7hh_$o&}moV|eQ ztv7$3(k5y)r{#Iom1>Jrt)aID@2s4aeoai7-YlUiAUuqEz|eu>9okhV__)d_krbn} z3=Lyv?ABIARFWIq$gmAvJ^A*1xsK2f#;PTp@I>h_Ays^rS7-xgPW<$r98GcTnB(UxZ^e+w z;d|UGr~kTSz!r$jIU@C8s%DgUlc_%UiYHP(x`&38SrE}}KswI40aq(0-eY_tQ9+cL zv&lyn3fVxC-~os!(k-%sViSYP$=QC|d(Hgtbq8YdJ8y|P zBrr9wD1B-^wnEH|>viT+$DDsRb;NxQ3VOdEHUoVAdOgt&#`>wrNv%)=~hQDzk}Z<(uIVj@)q6|qhJ%>a|9yCWPtc6oDki2z9iNy6fKLddlp z*7Y_q8r&Ka0R)b21fN_pKMiAPu{K`c*VzE{mbE>J57CQMz@@R>Plen#t9Of}an z{bPlN`LCh%g%tNFbCGqjb>>tddUAH78OH*0`CIt8H$3Iio(qgA?o6nVf1IL=itipa zGDxF-0mu5T5k^7*TWN8`HlI`GmL68Qy`zD~)1~lo;;67EPx{Tq#v%mBc+%c-hK4yy zbZx3-8#*qJ-Dg_@GmYlfcYJ2Y94p zNzoz`2yTg@Kw%*-WH743Aznt>u1louAYR41y-sKcRm>6GeZN%F>qQnA6X3 zY6rr5zIUIze%z+X-w~tt0Us^k(z$=>;&%|qptdl0rpz7vrf>2qR`H(YtF>ODmZ{}2E1VV zRE1)2$pG7{VkAb`GA_$9ZfgT9yoQk2+dpIh8Xr=;yFE8giDcX5?5eKN?L-nd>0#hh z($2n%V72(`e1&F#U(8=6Hp&pc#3!Hz3bR~*c5r5x1I~*$!qV#;$+fo)B0aAleP?ln zvnAGKDs8K4h=fD5HqJh{X40&xsVeEoNQ<}*!CUf{d?4;w6cI2`x8sP-ImQ)3bnNb* zbGp)d*6fZra|X!2JKuGK9n-_tj z^#>L*@0P6ym^6^e?PB!%D!XcI``vYavKe`yyFocgDWtpko8O;Fcy!tN?i*E=KDcGo z>6<9!lQEcl)TJtdL8asFN+19BWz@KEN&%;@qzVs1C}m8fd*TDwX+!Eo8lm5=v*+uZ zuZG#RU~G*m7H3`1e#5}e;TbWQe}W5`OW`0CZ3veQfm?xXc5Z1b$395P7L{2H0hDvW zJn21_(xp|Nv3_X2a8~NhoRpEaKMwT_1ME`D20?RoSif}F^%;)h@7|v`>nsxY-A&6P z{T!zJ9)ziBK3k;drnuoBdzLk|AdH|_&6ZJBefp+mUI(@KEgVET7yctL`E5YqeZp@X za$NMq$uZ9T>>gQL%i$!8c>Wl$lkg~{Rm0@#)r~6HX4n`xOZ~TTcJt>cWF|KPIN2f4W#T&}h(x>=l;&O} zk^^dfXYZ!4GJb<861YIU)$9f5cQCMP;6Oc-o$r^Uv*ztK(TNSFdUVqCf81kD5tH>- z>m1O*-Z}=emo+AhE+V$ADEB43*jMle9YSP>r}$rDl6!x4(mcDsmk>#!Yn*wzIa0)l{O{1^XTeDgyZ-1vg+o-2!hs zG3clkUeDJPAuWUd7&Cx{&*+C6cy|x3vh8N?z@6iSVOY2$_6feDFa!^oaki?q>1fGB z)Gj1C8xjK&ojE=}M`Ji7!nTBpa|EIKSJ#ZK!yB0WWir#ajwy}P=Js9VrtA?T^FM(3 z>vzZOQo%aQJ@-?tug|fck7(Y6N@N|M*xWKK$Imgf-+sDOee_pNEF^5CJ=Mkk7Ptvd zxsIyw6&;u1T7=#({0C0%&)4$sl{Yn{QTK(?>$bw|8dD$t>H5Xud7I+a=0of zHB7~C>t6R)3saXI;urwPp1?Xj2@D2c2N5w+tRnq97FxeeDPOcn`e(AzjN$FZGxP_2S)-Fq7Di%Y?9>Rt04!HoX)_hXDqs>K+qcwZyR3r@`4B#MAU zr_|LDS1i}s`H^H>99gl$HnxfWdbi*q?5orE`-XLs9k+@d9!CXT!maJ;szH{VLy8|& zOF6D}1=hDcuomn3_|(Dhx8L{-!m~*QSc~tf66{@)bUNb8-7XWzP?%gfMb&XKCtR+* zVUQpv;%G`FaylB^OFVzDK%}bVduEatC1{=n8LO35Dxm{bn&w4s5i|Dl=DY8vFfOp? z3svh43%A4X&M1$C;HO9(=WA&NLl`OJP@{rELGx^oTxDbLyItl=NDt3?+rzPU9U@!+ zVR||}tG@V^^&-A$ndTb_3K!&fWW0E>h1bYiLP-!oi@DbH8;n69V2`7xh>4JSptXj` z_!gl%luMuKpWzcC^^nl2R2dZz{2G|uwFDFAV;l$$*^U3|9S3N#Q0*=W+qAwi(|pM} ze$K5lth&p>SfN=zLDkElA(0t`D5Csxn9CvOP8<*i<&4;(?#@_6&0GPA4Tm=id^FDV z-Eu|$ovRy`Pk!rZu-hC}{qFT80k2q&;NCp3HK0*C& zX$50ykBiiVNkP={Ci#U(&N2gjppkqqpDCvz)bH_WZ{Fcrr$R}=^RSq%Dak41e9hKJ zeAN2|#JcYOIx)V6t;(_W+@EHl#Q~_7+xIBrnsuWY5HCiCAQ=@&u1a3hSZ>xqwbI&%9DsHOm{ru7DYYL?iH2B6}Il0hq|J{Cx#1PmpqNu^hhHJtn3J z>NS3uQ>>S*B6(kMI?@-K1&JAFFsJt{8NA|jCc`e?+%2N+)lP;rPW659a)nR} zhKzS!=a~~oOo%DchPG7igy+wZI!)zvmZ37#CGG8jKj~8D)93i?o+I`L_wAb) zgR8zK-p7D>*gV^ZJo6!Qy_83}sh8Iw-bLJ)7IfOBIL+n<7%O)6F@?KljQ0!*6a@ta zF_Qb!R@bA9{}QRmoNfce|JSeAVb&b=wS9tl{kVBg7{bd_w&)xZzvSs=c3dwn<35En z(d90sQf3g+zS(c;QVVsx(caocdD|HhcpoFi+jj>!BHH7k&p0M}>dqYm7&4v>ny;Rt zW-|AkH#8rxlToBov{#~b&*BxHHmdiYVRyorc5hINkB>O8kvJ%Gz+wZx*frpx|AA87 zvB~^0-@VMOwh5j8{ZF*x6_OGn?4xzev4M8$X^)e0=_?*8^Rrjn*P;sJV2pbBkt)sU zB<-@V{!b6>Wr&4ag$vwvEzypxdu{1BsU$pxm!J0n#OE&MOXj z{Qv&_HC*a~MO1?4EG#m2BCwDM1%hEYj|B9n;!OVIanKgRR~a10NK#R$%J>VMDhZYq zQvd)VyGcYrR64a2Y>td#K6e7;DG^4T27Aq_@*a!Y{U5Jc|667tnYSPv=Ugzi4pm4R zu49Kg*;g@yxcBdh#rb0-A3I|jY$oiqXYMdhU#*b(UHOt{tMWNZa?LA^p^R@{aLzdW z=(G3j9g^f6)%QK87-@Jpaj60){U>}@G4&6Tey)+l%?;T3ZOS?w-%17NIF}fWPC2K- z^C8|s$ZvP|n8%)C2!b&BM9*3U2~q7lFXAcA1&bah24F>QON@g8lBHUWib;Ph`;58L zdkiCnP;_oPJ6Oz8%re@6VG?IyEPbS7cIoR@M`>=ZeGkEZOPtJaU+v?b29i$^Rsl!# z&1bXCU%z3u`O~?0?g%UAmD8w)-Dcv<->KUfM#u-|^rfpGoZ~xW%>K z^X`gyzRpJ4A<$>-RtXJ*RLV(SeiybBI}7K^GoP3W&UHQcH_&RIPv-5eC-Z*z`ZFY+ z1+_#}V2BC&!^O9Gl^k80+P(yUZO7!-+6rK>aK-EFr}KEN6QVXRfzT#FOZ?eXZBgY1 z$VE$E7L{_m5oAJAa5KA~X|MT>(;)|+0a?D>T46o`z^4yDQnn9ak=sTUyZnEM82$3L z`O6n8#AyK;pf-+EL{$YfXoOPn1$+LkZt%Xq-N|h++c1pfSz?3CbKDe8!=Aa9`H2zB z_=l$y@T~E~a|RCZP2D5<*B%72i^cSqWs4g^q$|A_hs(`N%=LdEbiHTQ4Uu#+ z5R2oWl}|8=$SR6DbxR7@jDc=pdoYE!oMm^0U*!}l?gPAno)Kroc_K@p^v7}FUE1NM z4Ns@o;l$U!eSgsW$KT&K2P~V+aKMc5ch-n$`Y&Ii=57*;Q)#YB0xV^WF2Bf-?Vv<_ z>y#o>jcS|xEAx1vO1A8N5pmK7u)=qJojWoQcOa~>T(j)4P^9eJx*YhelbzA zW;O@M;&u?jHys1Pm8yV@M))9BGUs;AaGcnSL^sY+Bsg2i+{+~h&rkRL6{1#s z(O+U20jV?RfhK!!W&ApC7^GLVFz|B3DX$!`aY=b{OrxS1W@3{$$tkMa_dkuAV;p!- z*)hG3XUrk0)CyZ{oO8Iy583h_W^?igFXvyy!9{q^aYvH%FriP~ZN$|54r}4g5d_4+ zD`ybR)io#1LfG%$vw0Y#HRQw`5>kn$+AAX7z^(kg#4G0*qCIAD`yA$V!`!t$W0?Bo z_=>I*d*&M?%oc}3LO1xI0ySYrSy}Ib)UpPKs_EQLV+z5YF(5II#UQfBJX8ak5^{#{ z9nbKm95UCHp{bUt7~JAXeu0>L%Ld#3`R#V|128>fr~3?ks>W{_uG}^M_HS4gQMH$` zARFXJ`I=>-5Ln@fzMJ;RJ(Et% zMxM5Rx)ACza`*L3o9Vc|^qU zZG2(BMSA}oqB|h)?JSYVTJ3{;?er^$SPB;w+tVMHVhl{< z&IFqYwy6b4c&`6>$7CO>FZJ7d_eAFplFvKbv8*onMiE$d=TpAx?N24Ru7=-1cwG^{ z|JyDYW?+cx)XUi+2sDUlr+ODDCb7U(B_b(GqAF~*ZV?dFR?2bRC9ht1oSucy%y9>>K|JSwVU;iQ^fY3n9a#sjv z@t3bgSV)gB2)Q874(uQ32db$XJ)do&K4BzqKB~17S|GV$6cnHvE^bpZ?M8}0R8R3! zT<7$m4d#z4ocr+pxK2GfVUy@N^R{c+t^emOV(2mfe&{cf$*o38K$j4Po&`aFR#fSj z&pA(iwt)*4zZcjcfO8x*QXwfz4)j0pgA=&JK8eTrO*&6K_N@2sciAtu4Rdk+YfzxI z=9_Pj&@e_B&<$mrBh`-B?)2^V5Z(7X!0?1V$|$gYq8oce_5b*9&u9xLHL1a1z3j72 zikmrYXN;W`KvcIJ*=3SB$q@8YV(Un3KDp*umUyb!>4~m#WDT*&R3}itqW-k$PeFJE z9n=np3ky1P22~26h*gl$0G12@NE>ZcY3B0B+KZCF*EJ7$MFR-~s) z{%615YMx?jIzj4L|1qX~&v(CYA0HnyTb5mzGqUb6m(y)9&%?All45blnk94C1>E60 z)=CHMSpvmss?Sb$2sqM12ml8?(Y>SOkb%hLt4l@WUJ+A^T_nD&T%Q z=K>mxlFSt8Mm@`+V{&9RebHMd<4mqx`28qV8HFz?*cblE z>CZ!WLK>5=+&hlY3`|rCe}|QIkOFEg4287Z5%`NW8KhkEGqB~4L)Ui>0uf8H726SN zv|OHPMpxP`Gnt%r&IjVTINa+IFbU#wj zsJD)bgin#)<+{f&Aq$prLURWr%lt{u-X zQp>SlHl5F}Cvl_AWuwpe zk9^!DPjv#X!fAOiyhzA!`{IN(a5_6IAswbbtUfxFNWI-VY7Rgsx2>Fj_}^o$KVhlk z_>^P5m@us{M_dxYzMN`KQ7gY=y-MG}on6(#Q@rfq{9h4)3nNk1qk=%T%K9Y+xHpZC zy$1x7q1!j`EnYCr`}Fa=V}6-X1>{%N(wZkKMSJCaL6Th^UQ`i*h48T7zT=*}7%0qu z7UBF&WljTz8i1>47cjnkf-?PpmG|HA=Fy+hv*Tw`E1zzyHece?y2e2i68-iY+|S3F*DIa^1{{osCAiRf@$KM^S5d&e?cnSXuGnoZ6}n#0b3kdMKne$>LpYn2RGd?Sf1N0 zYF3;O5seSelr$b>m_2IbQ0|#O#tK90fsi^w5F`mmApw zI1AC?3lfy@q|_dWI6|sGBbmFn8-OipAhLb$KC}rV0`fQ=OJAh0YASa{QHi&V9i_5y zLkYr{d+`uy^tGgp;VpSoe_${!kiXf#Y`#Oi{BiFRRkM#Z6>H_$S@ZSR3(f!eZ|f|h zxHAFIqE|b3>zv`U3G6V2sJ5b-Zs@35GN$-vurjSXy9M2WgV< zf)_0&i6w=4Q0 zGPBa$IwOfx_h?VtzmOg_&m=e`C}%{~WZr?!y64G6>qS&MlFhMZAjQ~3M!k4$fn7ZK z?J(7=Md+94dfzr~GT*aR=X(ebTMD}uYzK#Ucw90^a2>ImV4E#a2YdT0%%e_Y-RaLR zQ$ArcfbS-2kzWu4^QF5CSRfy=?4Vky`X~4^$(3o+YUi3sw4)CHq;>S$g$1UsIriEh zRK_7agz=rQTYmqDh}Eodo*wPvo>of`OYDeP)(owFZXJFCEg@zSe{=^ZDc{|#XaD@a ze;UHO2O8s2Kx+RoV9rOnIZ{bE7kNPr#RH;BKRhS)dpiek<70r$788!=(l2qD(>-S~ zK4{Po-*x+PoohxB(+*Z7ESM`wM50LiTlf!n}kPLZ2tb!Q8R~E$Uc6Ho-%t1 zrp&MdTUW35JEtrPb3h7np#er0_uAd!m*|-bZwVZW{SRxW;2t!0E*@jSyhDdoD#$u+ zDM#rcRnem`0{Mg#6{lg^;&!ESN8^of60(cH)oQMh-mU%?j&C1%YBA!w3;TX6Rq*`6 zO9%w#T=yT}Y9Kk`$ZAw%B)Zyz4hqkZs|-|wJpyk`p$ zTc=JA_c-k4l=W6TX9)dggg3)Zq-WxX43u(o2nhC2UYBymKiu*w61sc%PyGIq5T5+n zAt^)=Yy!!oDiWYNoPnqF01XVFo4{lQJ!y7-@3i^hN7j&b@Rp#M;oK17TZ~D2c^U5w z+%;S$G}^SBb`Atp637>wb9jbb4Gf6Fe8Ye`wnhX`KwfqXxOVk)4Wz&w>h-P`J}ebYQgE%T7Y1!BS6v5(JX6l7@X zSF-it;$;Z30ep}wkW`4SEWC8wzSCgaELcRsNIPB-!IgpO5t%%EM8 z4SB!A#@IJ38Q{`&$U3B(RiU{o)Vt$ghm%@eA~F9R$EvAeO!tuNEQT9!_SusGXAZ(_ zu)Z!bhh_DGdT0;rbxM$h3hEy*0do{3Fg1CJUzJ{n=p}Q>^*PM!kli8&2M2_u(4u?+ zJTK#!bLsKd^k=w0T~F5VH(hUr95xaiAX<=xGFk#8iEru(BMXGQ=`$hq=SY7N!V@ea zPWW^XM{QR7%BW%2sF`l>IY+g-;&V>G*b6qB?z0VL8;9Y!`7@Aw zF1~_Kb#P{Gumr~*B5sUojZn*CutVb9N=__Cc2a*GOk%FW{WaFj3_ZVU0Hq~N=PW_! zrge12QZPhksP;?h7W)j9cZ>8el$=3{&REO)iG}u)lf7mKqr)?He(SNaMVwC^uZ@sg zq;4Z*2TC_)b+pC)cOTIw1_%*}`$0Y)`!l|&%1Qud32_O72qav~k%=6j62Ar}+o-^A zkZ^lP1o%6LL~#t4!DU;K{nizZEkHLT&MiRg>~YxVEV~kx23O6K)hR5wu4&FSYe@Hj zb7X21W|lExTx@}3>URi$`mZEHp2LTtil5?(>vp4)bJa+8FA$F6#-v>*mCi_h#bcZc{6O8^Zj)hxvNBc}P~ z#mi=$!CYi*%JchX2wR}lZQAq9!$Bb$^44b7YDD%5qFUad26g=n9%R=7^vm)L5wgzx4YE@=yj1UjaA zY!`v@NXuD7>?{bTTUJ6S@S3xl zDcT(C3Z;w_ZBR!9=i}86!AbBp^xY`hHyBGKxHo%;%$YoqmwsH>ZdBqaj3n%QFUJC5 zj^_!+p=ck5mS!e5V)sD2O5}+ApJxBupuZ2Dp0QlO4vU2qVy@74REL4{SfZ8P;VE-N z-_=w+{r4J8#E^h{N5X}%$hs@}U`{hEzpxUDbs05w_6Fi*X@UT|n`{Rb8QOUa$Vy=}$y>MQWnu&r^7>;0+gz zfu-;_S!H_Rt|FV<6`v>1;qx$zZB(f@L@d???0`LC=LQZ@-(di2Xh4k_+`QPl6T<{5 zpU7(f+v#b}jGMx8MotYlIam`!$?^mQ>&(SdalmsvAgPaq8F2+<54+bFtPC=kX z>AGR}wF}5MS{_jWbrfEJ@cqnyuu9>Dg{2VT5_7>N9I;oHK{g5$*-Uo5>%O;C;pi@s zL*G%Xu59CRN#le$n&&iJFjrD_3o(M5bS3YkEY!$mieN=BjTt2_k(_6BVwUEB(HT^V?OHXEv~iZlZ!ObH?EicRP1K4AD^LaBL8!={~@AX9j$;g};Op%%HhKMLg=h zi}1W>F30hI6Q0nRNP3vnqW75gc=J&;bW-oH^G5Ih6wJ z3Ci5!2BN!T9k7S$qep~Bo6IE{;Te_+`fPITGxyMaM6Nr8NM?{wv&=;X1TUGvYAV8( zw+Y|0V?>?qk2^rs)8oYm&IZCgImI9Yt&KSJ{uaYf59_BY>i%OM+fh6bLo|blzWQ1)AMWq4l&hET=`Z3+}T$j** z7#DggIDyePOqb}ail3Zz`o;cmj!dM5P+&cT=mzcjnS5{1XfBWY!T^&azkf19c*8LL zB?C}b?siAJI@qI0r-pFVG&__qvsntqX<>hHHsL*5)Ex_cHRu`5l_n5SLJI(?twoyk zus#c>H3i+&>bW(a)MWJ4)NCFfe}_3w8^cI5nv4uecuRn(N?f`K;9NeCW?CiE*<&%B zMyUl76?c9OM7$aqQKPfqO)yjl9*o}DUWTg&MO-8)NPJ@dnX67NXi*h5Lpqt}koI2| z06VY|ivzXeqzD$Dlr6GXgdQ zj6ES{t$;PFhy(eY6(tDFtDY7lg3>RuB}ZY zVUjf`|3F7kXFoiUtwlQMi=*h{b&X}2!j1-lOg|8o_aIJHs0)D*MO!<5KIW56BUp{3 zi?C(~GlGP(pP+z*rSLodt_;B=5ya*2wB`6iXx-JoU^=N_47exz!EA9!V`~nl@Z-V3 z4H!>vOfO#%qHuf9E^SJC#+-aa>OBH}@xT#HGgBO0uwSYF6J=m4X|pR zI-ZZ(Wgtk+#7hT4sJj|Sx_FGAsa({p*C~SJ2}m-NewT{5HdCO*p9Oi#h%0yTq9|y3 zDxm&}_n6SeHL?gKmKe;<91IW+w4GgIpYv7VB;Xlm3R7-#Mf+``hkJh{f+xBLlJNy` zAUF~Q-eu^iTOn4avz^A&;IBAf6;s+(KgW?oC>1HCC8dQgTFE@LoD`Lfs3Z*}1psjP zhp9$dMY&p08Bjkkx!PDqL77i#vJcQL!%6LDTYbZbCp!|jOVjj#Oa2(35jEwnx`oX97pAu(!|o!wA@^>=lrBNO*V#Gh6zbl zJ537vsVMPm3@_Ab;7`-tB28{%Q_dHgT}AD9ecv4SP;ZaO)C~4Vz4Z_F2sJjKLn0+i zkLM%;R5O25yl|{w|z?Qh3=Fs;e61=XuC~GVYqIJ;h-f{Xq3tT>Ez7_Gzx5;%cZAO4s3BNV*fi^m8aSr&Up z^&(oggiYiw)%Vp;>^GJ6S4eHy8yR#}#LQ<|Gsd5Vt{&{+{Wh1ZMt1(`Qs5B)u4A4BVOVVB9Otar5{;uV#Z1&}L zRWAuD+Jjkxwvh00000NkvXXu0mjfJkL}w literal 0 HcmV?d00001 diff --git a/src/router/index.tsx b/src/router/index.tsx index 91c884a..df5553d 100644 --- a/src/router/index.tsx +++ b/src/router/index.tsx @@ -30,6 +30,14 @@ const router = createBrowserRouter([ path: 'user-info', // element: Component: lazy(() => import('@views/user-info')) + }, + { + path: 'search-detail', + Component: lazy(() => import('@views/search-details')) + }, + { + path: 'search-question', + Component: lazy(() => import('@views/search-question')) } ] } diff --git a/src/utils/request.ts b/src/utils/request.ts index a2372eb..130b6eb 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -34,7 +34,7 @@ export default function request(config, url) { res => { let { code } = res.data if (code === 500) { - message.error(res.data.message) + // message.error(res.data.message) } if (code === 401) { window.location.replace('/login') diff --git a/src/views/header/index.tsx b/src/views/header/index.tsx index d30591f..2fd8371 100644 --- a/src/views/header/index.tsx +++ b/src/views/header/index.tsx @@ -83,14 +83,15 @@ const Header = () => { } } + const handleJump = value => { + navigate('/search-detail?t=' + value) + } + return (
-
(window.location.href = '/question-bank')} - > +
@@ -101,7 +102,11 @@ const Header = () => {
console.log(value)} + onSearch={value => { + if (value) { + handleJump(value) + } + }} style={{ width: 300, borderRadius: '10px' }} />
diff --git a/src/views/question-bank/components/contribution-list/index.jsx b/src/views/question-bank/components/contribution-list/index.jsx index ef28431..1e513ce 100644 --- a/src/views/question-bank/components/contribution-list/index.jsx +++ b/src/views/question-bank/components/contribution-list/index.jsx @@ -1,86 +1,96 @@ -import React, { Fragment, Component } from 'react'; -// import { withRouter } from 'react-router-dom'; -import req from '@utils/request'; -import RankingBox from '../ranking-box'; -import { apiName, RankingType } from '../../constant'; -import { mockRankingModuleList } from '../../mock'; +import req from '@utils/request' +import { message } from 'antd' +import React, { Fragment, useState } from 'react' +import { useNavigate } from 'react-router-dom' +import { RankingType, apiName } from '../../constant' +import { mockRankingModuleList } from '../../mock' +import RankingBox from '../ranking-box' -class ContributionList extends Component { - constructor(props) { - super(props); - this.state = { - contributionList: mockRankingModuleList[1].rankingList || [], - contributeType: 0, - isLoading: false, - }; +const ContributionList = props => { + const [contributionList, setContributionList] = useState(mockRankingModuleList[1].rankingList) + const [loading, setLoading] = useState(false) + const [contributeType, setContributeType] = useState(0) + const navigate = useNavigate() + + /** + * 获得贡献榜 + */ + const getContributeList = () => { + req({ + method: 'post', + data: {}, + url: apiName.getContributeList + }) + .then(res => { + if (res.data && res.data.length > 0) { + this.setState({ + contributionList: res.data, + isLoading: false + }) + } else { + this.setState({ + contributionList: [], + isLoading: false + }) + } + }) + .catch(err => console.log(err)) + } + + /** + * 切换排行榜 + * @param {*} index + * @returns + */ + const onChangeRanking = index => { + setContributeType(index) + } + + /** + * 去录题 + */ + const onChangeJump = () => { + const userInfoStorage = localStorage.getItem('userInfo') + if (!userInfoStorage) { + return message.info('请登录') } + const { loginId } = JSON.parse(userInfoStorage) + req( + { + method: 'get', + url: '/permission/getPermission', + params: { + userName: loginId + } + }, + '/auth' + ).then(res => { + if (res.success && res.data) { + if (res.data.includes('subject:add')) { + navigate('/upload-questions') + } else { + message.info('敬请期待') + } + } else { + message.info('敬请期待') + } + }) + } - componentDidMount() { - // this.getContributeList(); - } - - /** - * 获得贡献榜 - */ - getContributeList() { - req({ - method: 'post', - data: {}, - url: apiName.getContributeList, - }) - .then((res) => { - if (res.data && res.data.length > 0) { - this.setState({ - contributionList: res.data, - isLoading: false, - }); - } else { - this.setState({ - contributionList: [], - isLoading: false, - }); - } - }) - .catch((err) => console.log(err)); - } - - /** - * 切换排行榜 - * @param {*} index - * @returns - */ - onChangeRanking = (index) => { - console.log(index, 'contribute index') - - this.setState({ - contributeType: index, - }); - }; - - /** - * 去录题 - */ - onChangeJump = () => { - this.props.history.push('/upload-questions'); - }; - - render() { - const { contributionList, isLoading, contributeType } = this.state; - return ( - - {contributionList?.length > 0 && ( - - )} - - ); - } + return ( + + {contributionList?.length > 0 && ( + + )} + + ) } -export default ContributionList; +export default ContributionList diff --git a/src/views/question-bank/components/ranking-box/index.jsx b/src/views/question-bank/components/ranking-box/index.jsx index a255149..119647b 100644 --- a/src/views/question-bank/components/ranking-box/index.jsx +++ b/src/views/question-bank/components/ranking-box/index.jsx @@ -22,8 +22,12 @@ export default function RankingBox(props) { props.onHandleRanking && props.onHandleRanking(index) }) const onJump = debounce(() => { + if (props.onHandleJump) { + props.onHandleJump() + } else { + message.info('敬请期待') + } // props.onHandleJump && props.onHandleJump() - message.info('敬请期待') }) const tabList = [ { diff --git a/src/views/question-bank/index.tsx b/src/views/question-bank/index.tsx index fea0471..41c8acc 100644 --- a/src/views/question-bank/index.tsx +++ b/src/views/question-bank/index.tsx @@ -14,7 +14,6 @@ const QuestionBank = () => { const [difficulty, setDiffculty] = useState('') //困难度(全部) const [total, setTotal] = useState(0) // 总条数 const [pageIndex, setPageIndex] = useState(0) - const [secondCategoryId, setSecondCategoryId] = useState('') const [selectedValue, setSelectedValue] = useState({ primaryId: '', // 大类ID diff --git a/src/views/search-details/index.jsx b/src/views/search-details/index.jsx new file mode 100644 index 0000000..0801755 --- /dev/null +++ b/src/views/search-details/index.jsx @@ -0,0 +1,205 @@ +import { ExclamationCircleOutlined } from '@ant-design/icons' +import { queryParse } from '@utils' +import { Card, Input, Pagination, Skeleton, message } from 'antd' +import React, { useEffect, useState } from 'react' +import { useNavigate } from 'react-router-dom' +import './index.less' + +const { Search } = Input + +const mockList = [ + { + id: 100, + subjectName: 'Redis支持哪几种数据类型?', + subjectDifficult: 1, + subjectType: 4, + subjectScore: 1, + subjectParse: '解析什么', + subjectAnswer: + '


  1. String(字符串)
  2. List(列表)
  3. Hash(字典)
  4. Set(集合)
  5. Sorted Set(有序集合)


String


String是简单的 key-value 键值对,value 不仅可以是 String,也可以是数字。String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int。


List


Redis列表是简单的字符串列表,可以类比到C++中的std::list,简单的说就是一个链表或者说是一个队列。可以从头部或尾部向Redis列表添加元素。列表的最大长度为2^32 - 1,也即每个列表支持超过40亿个元素。


Redis list的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,Redis内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构。


Hash


Redis Hash对应Value内部实际就是一个HashMap,实际这里会有2种不同实现,这个Hash的成员比较少时Redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的HashMap结构,对应的value redisObject的encoding为zipmap,当成员数量增大时会自动转成真正的HashMap。


Set


set 的内部实现是一个 value永远为null的HashMap,实际就是通过计算hash的方式来快速排重的,这也是set能提供判断一个成员是否在集合内的原因。


Sorted Set


Redis有序集合类似Redis集合,不同的是增加了一个功能,即集合是有序的。一个有序集合的每个成员带有分数,用于进行排序。


Redis有序集合添加、删除和测试的时间复杂度均为O(1)(固定时间,无论里面包含的元素集合的数量)。列表的最大长度为2^32- 1元素(4294967295,超过40亿每个元素的集合)。


Redis sorted set的内部使用HashMap和跳跃表(SkipList)来保证数据的存储和有序,HashMap里放的是成员到score的映射,而跳跃表里存放的是所有的成员,排序依据是HashMap里存的score,使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单。

', + labelName: ['Redis'] + }, + { + id: 101, + subjectName: 'Redis的高级数据类型有什么?', + subjectDifficult: 2, + subjectType: 4, + subjectScore: 1, + subjectParse: '解析什么', + subjectAnswer: + '


bitmap:bitmap是一种位数据类型,常常用于统计,大家比较知名的就是布隆过滤器。也可以统计一些大数据量的东西,比如每天有多少优惠券被使用。


hyperloglog:用于基数统计,基数是数据集去重后元素个数,运用了LogLog的算法。{1,3,5,7,5,7,8}   基数集:{1,3,5,7,8}  基数:5


geo:应用于地理位置计算,主要是经纬度的计算,常见的就是附近的人,可以以当前人的坐标获取周围附近的成员,可以计算经纬度,计算地理位置

', + labelName: ['Redis'] + }, + { + id: 102, + subjectName: 'Redis的优点有什么?', + subjectDifficult: 1, + subjectType: 4, + subjectScore: 1, + subjectParse: '解析什么', + subjectAnswer: + '


(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)


(2) 支持丰富数据类型,支持string,list,set,Zset,hash等


(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行


(4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除

', + labelName: ['Redis'] + }, + { + id: 103, + subjectName: 'Redis相比Memcached有哪些优势?', + subjectDifficult: 1, + subjectType: 4, + subjectScore: 1, + subjectParse: '解析什么', + subjectAnswer: + '


(1) Memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型


(2) Redis的速度比Memcached快很多


(3) Redis可以持久化其数据

', + labelName: ['Redis'] + }, + { + id: 106, + subjectName: 'redis过期策略都有哪些?', + subjectDifficult: 1, + subjectType: 4, + subjectScore: 1, + subjectParse: '解析什么', + subjectAnswer: + '


noeviction: 当内存不足以容纳新写入数据时,新写入操作会报错。


allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 key。


allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个 key,这个一般没人用吧,为啥要随机,肯定是把最近最少使用的 key 给干掉啊。


volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的 key。


volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个 key。


volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的 key 优先移除。

', + labelName: ['Redis'] + } +] + +const defaultValue = queryParse(location.search).t + +const SearchDetails = () => { + const navigate = useNavigate() + const [isShowSkeleton, setIsShowSkeleton] = useState(true) + const [questionList, setQuestionList] = useState(mockList) + const [total, setTotal] = useState(0) + const [pageIndex, setPageIndex] = useState(0) + const [searchValue, setSearchValue] = useState(defaultValue) + + const searchSubject = () => { + setIsShowSkeleton(false) + } + + const handleJump = id => { + navigate('/brush-question/' + id) + } + + const onChangePagination = () => {} + + useEffect(() => { + searchSubject() + }, [searchValue]) + + return ( +
+
+
+ { + if (value) { + // this.state.searchText = value + // this.pageIndex = 1 + // this.searchSubject() + } else { + message.info('搜索词不能为空') + } + }} + enterButton + defaultValue={defaultValue} + /> +
+
+ +
+
+ { + // this.onTabChange(key, 'key') + // }} + > +
+ {questionList?.length > 0 ? ( + questionList.map((item, index) => { + if (item.subjectAnswer) { + return ( +
+
handleJump(item.id)} + dangerouslySetInnerHTML={{ + __html: item.subjectName + }} + >
+
handleJump(item.id)} + dangerouslySetInnerHTML={{ + __html: item.subjectAnswer + '...' + }} + >
+
+ ) + } else { + return ( +
+
handleJump(item.id)} + dangerouslySetInnerHTML={{ + __html: item.subjectName + }} + >
+
handleJump(item.id)} + dangerouslySetInnerHTML={{ + __html: item.subjectAnswer + }} + >
+
+ ) + } + }) + ) : ( +
+ +
很抱歉,没有找到与你搜索相关的内容
+
+ )} +
+
+
+
+ {total > 20 && ( + + )} +
+
+
+
+ ) +} + +export default SearchDetails diff --git a/src/views/search-details/index.less b/src/views/search-details/index.less new file mode 100644 index 0000000..ca6da7e --- /dev/null +++ b/src/views/search-details/index.less @@ -0,0 +1,46 @@ +.search-details-box { + width: 1439px; + margin: 0 auto; + background-color: #fff; + padding: 20px 50px; + border-radius: 5px; + overflow: auto; + .ant-card-body { + padding: 0 24px; + } + .search-details-box-search { + background-color: #f5f5f5; + padding: 20px 40px; + border-radius: 3px 3px 0 0; + font-size: 14px; + } + .search-details-box-content { + .search-details-box-content-main-item { + margin-top: 10px; + padding: 10px 0; + font-weight: 400; + border-bottom: 1px solid #e5e5e5; + .search-details-box-content-main-item-question { + color: #3c6eee; + cursor: pointer; + font-size: 18px; + margin-bottom: 5px; + } + .search-details-box-content-main-item-answer { + font-size: 13px; + cursor: pointer; + letter-spacing: 0; + overflow: hidden; + display: -webkit-box; + text-overflow: ellipsis; + -webkit-line-clamp: 2; /*要显示的行数*/ + -webkit-box-orient: vertical; + } + } + .search-null { + display: block; + text-align: center; + margin: 50px 0; + } + } +} diff --git a/src/views/upload-questions/components/option-input-box/index.jsx b/src/views/upload-questions/components/option-input-box/index.jsx index de96709..e5873cb 100644 --- a/src/views/upload-questions/components/option-input-box/index.jsx +++ b/src/views/upload-questions/components/option-input-box/index.jsx @@ -1,438 +1,422 @@ -import React, { Component, Fragment } from 'react'; -import { Input, message, Tooltip, Select } from 'antd'; -import _ from 'lodash'; -import { debounce } from '@utils'; -import { optionLetter } from '../../constant'; -import KindEditor from '../kind-editor'; -import './index.less'; -const { TextArea } = Input; -const { Option } = Select; -const defalutLabel = '请使用富文本编辑器输入选项内容'; +import { debounce } from '@utils' +import { Input, Select, Tooltip, message } from 'antd' +import _ from 'lodash' +import React, { Component, Fragment } from 'react' +import { optionLetter } from '../../constant' +import KindEditor from '../kind-editor' +import './index.less' +const { TextArea } = Input +const { Option } = Select +const defalutLabel = '请使用富文本编辑器输入选项内容' // 判断题 const judgeList = [ - { - label: '错误', - value: 0, - }, - { - label: '正确', - value: 1, - }, -]; -const optionLetterLength = 7; // ABCD的长度 -const showDeleteLength = 3; // 展示删除icon的最短长度 + { + label: '错误', + value: 0 + }, + { + label: '正确', + value: 1 + } +] +const optionLetterLength = 7 // ABCD的长度 +const showDeleteLength = 3 // 展示删除icon的最短长度 export default class OptionInputBox extends Component { - constructor(props) { - super(props); - this.state = { - optionList: [ - { - label: defalutLabel, - value: 1, - }, - { - label: defalutLabel, - value: 2, - }, - { - label: defalutLabel, - value: 3, - }, - { - label: defalutLabel, - value: 4, - }, - ], // 选项列表 - currentActiveList: [], // 当前选中的项 - scoreValue: '', // 分数 - subjectAnalysis: '', //试题解析 - }; + constructor(props) { + super(props) + this.state = { + optionList: [ + { + label: defalutLabel, + value: 1 + }, + { + label: defalutLabel, + value: 2 + }, + { + label: defalutLabel, + value: 3 + }, + { + label: defalutLabel, + value: 4 + } + ], // 选项列表 + currentActiveList: [], // 当前选中的项 + scoreValue: '', // 分数 + subjectAnalysis: '' //试题解析 } + } - kindEditor = KindEditor | null; - subjectAnswer = ''; // 选项内容 + kindEditor = KindEditor | null + subjectAnswer = '' // 选项内容 - /** - * 新增/删除 - * @param {*} len - * @param {*} type add-新增 / del-删除 - * @returns - */ - onChangeAddOption = (len, type) => () => { - let { optionList, currentActiveList } = this.state; - let list = []; - // 新增 - if (type === 'add') { - if (len === optionLetterLength) { - return; - } - optionList.push({ label: defalutLabel, value: optionLetter[len].value }); - } else { - // 删除 - currentActiveList = []; - optionList.splice(len, 1); - // 重新初始化ABCD对应的id - list = optionList.map((item, index) => { - return { - label: item.label, - value: optionLetter[index].value, - }; - }); + /** + * 新增/删除 + * @param {*} len + * @param {*} type add-新增 / del-删除 + * @returns + */ + onChangeAddOption = (len, type) => () => { + let { optionList, currentActiveList } = this.state + let list = [] + // 新增 + if (type === 'add') { + if (len === optionLetterLength) { + return + } + optionList.push({ label: defalutLabel, value: optionLetter[len].value }) + } else { + // 删除 + currentActiveList = [] + optionList.splice(len, 1) + // 重新初始化ABCD对应的id + list = optionList.map((item, index) => { + return { + label: item.label, + value: optionLetter[index].value } - this.setState( - { - optionList: type === 'add' ? optionList : list, - currentActiveList, - }, - () => { - this.handleChangeOption(); - } - ); - }; - - /** - * 确认/取消 编辑框 - * @param {*} index - * @param {*} type submit/cancel - * @returns - */ - onChangeOptEditor = (index, type) => () => { - let { optionList } = this.state; - this.kindEditor && this.kindEditor.onClear(); - if (type === 'submit') { - _.set( - optionList, - [index, 'label'], - !!this.subjectAnswer ? this.subjectAnswer : defalutLabel - ); - } - _.set(optionList, [index, 'isShowEditor'], false); - this.subjectAnswer = ''; - this.setState( - { - optionList, - }, - () => { - this.handleChangeOption(); - } - ); - }; - - /** - * 展开 编辑项 - * @param {*} index - * @returns - */ - onChangeShowEditor = (index) => - debounce(() => { - let { optionList } = this.state; - if (optionList.filter((item) => item.isShowEditor).length > 0) { - return message.info('请先确认正在编辑的选项内容'); - } - _.set(optionList, [index, 'isShowEditor'], true); - this.setState( - { - optionList, - }, - () => { - this.kindEditor && this.kindEditor.onCashBack(); - } - ); - }); - - /** - * 富文本编辑器 - * @param {*} e - */ - onChangeEditor = (index) => (e) => { - this.subjectAnswer = e; - }; - - /** - * 正确选项 - * @param {*} value - */ - onChangeSelect = (value) => { - const { isMultiple } = this.props; - let str = value; - if (!isMultiple) { - // 单选,格式化成数组 - str = [value]; - } - this.setState( - { - currentActiveList: str, - }, - () => { - this.handleChangeOption(); - } - ); - }; - - /** - * 本题分值 - */ - onChangeScore = (e) => { - this.setState( - { - scoreValue: e.target.value.trim(), - }, - () => { - this.handleChangeOption(); - } - ); - }; - - /** - * 试题解析 - * @param {*} e - */ - onChangeSubjectAnalysis = (e) => { - this.setState( - { - subjectAnalysis: e.target.value.trim(), - }, - () => { - this.handleChangeOption(); - } - ); - }; - - /** - * 清空 - */ - handleClearOption = () => { - this.subjectAnswer = ''; // 选项内容 - this.setState({ - optionList: [ - { - label: defalutLabel, - value: 1, - }, - { - label: defalutLabel, - value: 2, - }, - { - label: defalutLabel, - value: 3, - }, - { - label: defalutLabel, - value: 4, - }, - ], // 选项列表 - currentActiveList: [], // 当前选中的项 - scoreValue: '', // 分数 - subjectAnalysis: '', //试题解析 - }); - }; - - /** - * 向父组件传值 - */ - handleChangeOption = () => { - let { currentActiveList, scoreValue, subjectAnalysis, optionList } = this.state; - const { isJudge } = this.props; - let activeList = []; - if (!isJudge) { - // 单选/多选 - activeList = optionList.map((item) => { - let flag = 0; - if (currentActiveList.includes(item.value)) { - flag = 1; - } - return { - optionType: item.value, - optionContent: item.label, - isCorrect: flag, - }; - }); - } else { - // 判断 - activeList = currentActiveList; - } - console.log('向父组件传值', activeList, scoreValue, subjectAnalysis); - // this.props.handleChangeOption(activeList, scoreValue, subjectAnalysis); - this.props.handleChangeOption(activeList, 1, subjectAnalysis); - }; - - render() { - const { subjectAnalysis } = this.state; - const { isJudge } = this.props; - return ( - - {!isJudge && this.renderOption()} - {this.renderOptionBtn()} -
-
试题解析:
-