From 740d567abc91d395bcd53d18cce764361f8a6221 Mon Sep 17 00:00:00 2001 From: Kim Lan Phan Hoang Date: Tue, 24 Oct 2023 11:23:09 +0200 Subject: [PATCH] feat: update app cards to list in new item modal (#844) * feat: update app cards to list in new item modal * ci: increase max old space size --- .github/workflows/cypress.yml | 2 +- src/components/item/form/AppForm.tsx | 64 ++++++++++++++++----- src/components/item/form/NameForm.tsx | 2 - src/components/main/AppCard.tsx | 79 ++++++++++++++++---------- src/resources/defaultApp.png | Bin 0 -> 15933 bytes 5 files changed, 99 insertions(+), 48 deletions(-) create mode 100644 src/resources/defaultApp.png diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml index fa6da19e2..5f2c988fa 100644 --- a/.github/workflows/cypress.yml +++ b/.github/workflows/cypress.yml @@ -33,7 +33,7 @@ jobs: run: tsc --noEmit - name: Build App - run: NODE_OPTIONS=--max-old-space-size=3072 yarn build:test + run: NODE_OPTIONS=--max-old-space-size=4096 yarn build:test shell: bash env: VITE_PORT: ${{ vars.VITE_PORT }} diff --git a/src/components/item/form/AppForm.tsx b/src/components/item/form/AppForm.tsx index ade4c4f1a..53bad6e03 100644 --- a/src/components/item/form/AppForm.tsx +++ b/src/components/item/form/AppForm.tsx @@ -1,4 +1,4 @@ -import { useState } from 'react'; +import { ChangeEventHandler, useState } from 'react'; import { ArrowBack } from '@mui/icons-material'; import { Alert, Stack, TextField } from '@mui/material'; @@ -14,17 +14,20 @@ import { CUSTOM_APP_URL_ID } from '@/config/selectors'; import { useBuilderTranslation } from '../../../config/i18n'; import { hooks } from '../../../config/queryClient'; import { BUILDER } from '../../../langs/constants'; +import addNewImage from '../../../resources/addNew.png'; import { buildAppExtra } from '../../../utils/itemExtra'; import NameForm from './NameForm'; type AppGridProps = { currentUrl: string; handleSelection: (value: null | { name: string; url: string }) => void; + searchQuery?: string; }; const AppGrid = ({ currentUrl, handleSelection, + searchQuery, }: AppGridProps): JSX.Element | JSX.Element[] => { const { useApps } = hooks; const { data, isLoading } = useApps(); @@ -32,9 +35,17 @@ const AppGrid = ({ const { t: translateBuilder } = useBuilderTranslation(); if (data) { + // filter out with search query + let dataToShow = searchQuery + ? data.filter((d) => + d.name.toLowerCase().includes(searchQuery.toLowerCase()), + ) + : data; + dataToShow = dataToShow.sortBy((d) => d.name); + return ( <> - {data.map((ele) => ( + {dataToShow.map((ele) => ( { const { t: translateBuilder } = useBuilderTranslation(); const [isCustomApp, setIsCustomApp] = useState(false); + const [searchQuery, setSearchQuery] = useState(''); + + const searchAnApp: ChangeEventHandler< + HTMLInputElement | HTMLTextAreaElement + > = (e) => { + setSearchQuery(e.target.value); + }; + const handleAppSelection = ( newValue: null | { url: string; name: string }, ) => { @@ -147,19 +166,36 @@ const AppForm = ({ onChange, updatedProperties = {} }: Props): JSX.Element => { /> ) : ( - - - + - + + + + + )} diff --git a/src/components/item/form/NameForm.tsx b/src/components/item/form/NameForm.tsx index 8b86b3ec1..b6781b566 100644 --- a/src/components/item/form/NameForm.tsx +++ b/src/components/item/form/NameForm.tsx @@ -24,8 +24,6 @@ const NameForm = ({ const handleNameInput = (event: ChangeEvent<{ value: string }>) => { setChanges({ name: event.target.value }); }; - // eslint-disable-next-line no-console - console.log('name input', updatedProperties?.name ?? item?.name); return ( - - - - {name ?? } - - - {description ?? } - - + + + + {name} + + + + + + {name ?? } + + + {description ?? } + + + + ); const AppCardWrapper = (props: Props): JSX.Element => ( - + {F-VeaELkTpvMXUMF;ihwQWA}1DGJ$IkZe(MVOL(%$!@l=bZCg*Z;cCbI$dDPS>U3GoSmu-}m;uU+>rZb!R#qw-pwU z5r7~_*zO3%1%lw*UYp!oQBt&qsDm{TXCgS4W~2H#mQm4P5d$PRNDODLQlkH4)N zdyDgHRhs88e}Kh1MS%*n%cuYzRSL8;Eh?^j`NeF(0mYI4D&5!PM2x$TBK)4E39f@YJ*cC7OY3KURt!@p~yl9%J`_|l7F%UC5f;fNZR{P}JV=8to9s5tW z!0dAL5_urIoW!?~qMeJVG^AoTtArq`*qH@F*HtPrgrFRi)&I+v zy^OjqT6ZN#ggXi~k)WW*dHgBltFGw(S83DKtx&D$cN&L($&6T0B8B$A^=u$Xf#zP8lnfCx67HCQ( zlI5OrzJCU-`xPl5H=m7n8J!psCyF}N{Lr@hXk=9HM{$38U>*(HL^D(GN7?3-mHHsU z3n=-G<41-yW4TM(|8Pnr5y-7a3;L>dVr3~S;R=kl-0_nu-zY!gmeIEpMe&Z^ zBAlg)yx?|{!;_4Ci4lTh#D#zyC{_pbL^vO2-0t=EMxFRLaltaxBQlS8tqGs#e$=`89#Cp zRKNIB(Yi~0+@W9>si8#?E85tFQsm>qrCwq|2maXmvN^}_^8OWhDwQ1*ytyy3ent>O zxatL>57z&_-cZZCF!%dPPT5Y>^a<)o?xS03=y)}!;CuU_A}X^}fzcty&M9-zT^glU zavwD-_4|I@bw6aFj-As;n>~`F$E3sc-OIevJze*g&26RPW@VZKfu`2$m2dHVs^I(#3zNoh%>JU%$!NBbSO|x2gEXwRx+FU!0XNSH$ z7sIWen5Nf^AYuTmLd)hE?Wdy)C%x~{i&p6Ao`AJlZKp*83L7J?eN<7A$^MpB(% z5P^%?suWhpF9oS&wd_Pc=sLS9_D>Y~zwLegi>uNMZz1iQfK?j=W_3t>|B^~nPOm<5 zlys<_r|@84mYColCA$a{ZUX(fKHKHq4ZEEd5*0B`wALyMIp84S6Y&3zEBr6U{B^RW zX%U8sWO55M2ZcGV$2#EB3^sFA#Pg|i>b;E^oq9EN-R@Xr9wPDz8ES;bA&TH*ywAfP zIoRcRi6af+sfZMT-7uCKIx76nZEQ%OXM7Lsk-#A32=XziUX$KGDel=s2XpKjZx$`& zCbi}#=D{Zf3123=kqi+Wk?Id;O>)Y9J(DsLBG}^DkFm}O3&bp%?Ex*q7wFsHy^BUO z`59)E_3V>Zq#=PTHuv!;fq72hGrH6iML>#o<-chqWydN9S-{HADh_U#43HuwQS zpaO3GNEv_*nAE}L2jj$YRC+&DQ4bGnr8hx&%BTeaAB&}6jv?$D{0i|3sfXw-d+32m z$e$r-h-V14AUGDm^(HwSFK@n_dV8Siu-USEfh>C%nk@HnW!$E<)|P%bl4Gofa);yv zfAW|LdUljrohPg2Jz5o@>JG}X3I)fSqkqVfE|OM*X2jFNfO~Xm%U$fLY|Qb0M6xo~ zK#MA{B#U95jq$E2YYN*gJ?bp*d_1}_XYeT(LQU2~7Dq*YY`Lxq9)M`zXo38&&wtvI z9`@ohZR}jkgJzZ~>+ZOCM*4+vLvD5i(_aWekKTGRSv-uNnL{t-{dKhJ=nj~vyjsGQ zEy_g>4!ZrRmOJdc8rs~izDT8#S9b}^NU*59`Q|Qa`aSs8eQS2|i{PzI`Fh7vubi@? zcQgekYCm>Ciz))XedkIP7aVMsAvohV4t1!6Oz1A%r)CS>8WjdD?~7gMl+akV+vQS5 zGj!_~%*{~l(Q-u9!7I8xuyn7`HUL2w|AtgIW`4La+w1z z(|uZis*Qfy^;A4ZMe~OwcPN1yC!<;m?N|T5-Q(?afQANxtl`vGUsD|x$6741>@zgM z5sxrXctXphB+OhtZ@Oy)|Mt-PZd$3<3G1%&l^%66ul#kFHm!!Pmo*BTogya5g2n>4 zssC_?vdnRHN@1=~|^7^3^yNIq#bQC)A#ghsthK$|1ts~gR{l68T{l_T@ zjz(Ibjk!Hfy_E@;{Qf1JamQ-NsN6z968K0O{QQxR7(PWXPu_Sxx02&?sA(zOL#3Xd zMU+Xk57{bquGU>L)LWfHza;+qc=5kDN#Li~4*g#%^` zK`>+TF{Y?yqw^KdQ*FBHNCTw4pc&~1LzRYqAVq#6nPAKe!PPV-h4lLpZRy1xn69L4 zuQ44rnq$)!45=WIi@etYo@8)x+_^-c6eLokVf?CIC=XQm4Hb~YsEJtpa4&+mH5zFt zqmLjCoFiM+iD5@n>#FLcb&+QDNhO(3-!l>}Mx5}R* zE&lTc4{@|c0l6C4!XJW77OuaKnqH@V8C|$0Luz*5*Zs)0j$fgcDB3vm!Xd@ZEUeIT@U#qVPI+KziN!PUeQz zSmKAZ-x5UZk@K%t>>0{5Qx>cdks^z%+iiDBMi%+Yh+#;bpdDa^X~W-NCf~LBczaI{ z%tBoewIIs6F#CiPUJXx1p;n@*_hsE8k4Ud6MHio7--spNSDyaV8(VINhpwk%MLA!H z4Ku&qtfILp@aDeNyUou~POFM$q42JdJ zpN+DfE~QiE_5PUalugNsavf*fny8Q^L`fK7-mMfBg5+*d-oW29j%PfOMBZ_ZToaXo zCzdh()^xm;Td~*Ksxy^33N!1cG8LF{#O-nJeVIGe5qB{|hwE59PX>pmWbrfrx{eRQ zfH!v>AlV$)Hpfc~LDUmemS-c~zi4EgvZrd1i`rKH5fm88#XTt;OKuR3R2jZDV6%w^=p&s-TrcUxJ`To8g72$y=~bmnMOK+ZEg} zZgDX(vZA&Lkw}9|{A6D;IkNTK%*^!JrunyxvbU#`sG1RmABY1a2co|Lc5+9*D-X0h zL{8^4QWE5up?kEsSn_KDqYgrWGmE6Yrg7Vo!H`Mdj6ZSjDL$vehYXL3c@;(yS4k z$~Z+0(rnW6?%B;o#PShz(;?xPU^JzsnC4Li{-!)i3@=6)HImw`*2Z-AyZY_p;3>= zFWjKm#+@!LPUxX|>n^>aG)vY?)FYVEFT{9e^jN&JJL=J37hMF!Bf6RXO{G@*r&m0- zW~vd}RrGAOxZM4*2&xF0anM{Icy25N0t)}bu|c@KRd?C!4=(mgzz$GBKB(Z)9B4Xi zM>LvFVQY=0B&6QUU?1B?m~2I~|8YigT3k8vy{}9J@diI*PuheON7XLn6@|~%0dnY`_?a9I};8X&jevC92;HJ#!G%M=h z%Z_+FyTPK@?;R~QaAvgGjL*lrBwYDF(|?k$|Ev_GrvrSG_5-jVofNsoxLDfJ{=BKu z_FSY@9gbo@s2#XZ10kq@Pg#aNYGB6VeQ=4mb$d%B-Vny?diPg{F}|sV8)oE^XX;T|;~b z7llWb$?P{rh}^mKPvUFm^9Gz+vJo+~e?eeO{5d*$AN>R;d$v4jboN(4V*H0wqzD9M-ewVJW`F{>?rv`5VSb854FIR%Mgq=V{iWjNjn(V8#lk-BaiGP*js(oemPagZ=lM>f(U_#j1ieNQHGW9p!?woc)wBN zp599y86AnG?Q-?X{eu#HeGwJ40=m#?;HF3g7pFKGfDO7k5Y0!3#t_n)zX(Axw&e(7 zr+=H?*O%0fN;p;A(kp$p+c1l&6wmSU`8{QMfuq6|ay(Gh{Q<$@7Fp(f^6BZJ3xg*B zkm)rQB8Wx1PZg*G_jU$r3<3XbHoyQ8Lj+zcvgAMQ%8BUx>ilO%iC;wq=dm7|1#71} z`HBZZ{Uh&aXyQc~^(el6%pG0U9Zxp|k0g8kFZ)cAP#Zf#Jpz7_FVxU%t5{8~2PWnUL5SrkmD$ z@P)jQq)~A9H&N;$dg=9r2**qNg4w`=Z7&gWNeMT%F=Q2G-37cXM!ZXOMC4<-05fNQ-Xvh!y6Zl%$q+j+WnK!lIYF5Z zR(HB0axbP!9r-Jr3_1uKxe_U~MXBa8l{MPwxeKX~Nsjeis0>MRHal{npfmM?G&CqE zoIzYxo>mebjBvwL18mKuRrYy2;%1(AL3R>63eqBz9c{X7<{Mr8wuD~alvSH&7Dt0K z)236Yq;j>!Rtq(BmAvXI%wC07PdAtEbiZe8e@GkEz61G13XgxXFS_oPz8u>O2RYU0 zNx@&IYz~k;cOdI{-rrBGJ-M9c9s0@==g6og8v*hlq`7!!q^3{b)T9__;eGB7X48eB zC^gTpe^CJ%3>C%~s;_rs@Gf_*2_e=YRMCexw3YgLUr}d=EjZU62@+FxRmZ!(^imc> z#%GZ)R;F{@BUT44ER#Bwr@xb*JC63!2Fj`8X`!mo0i|BEMhN0Ys3h)+WkU-3ng-ma zOPPcwwfzcy=}Pjq?OFhoxCbQx&1|sz>dxf{$WP>C~rlV@h_QRF`7kl$Fq5i8l9TyL=TCoauGCCkv-v4KeVa4v~gisMhxlgW-NbnI9p-Jnz~nz9*W%t4AQ+nGY?cQ zz<0|alN!d~h6m1M=C%mbOE523HVit0LcR7xHSC-jCBe1SD=U-iOH$~c|C-bi3S+(_ z698tReS~p`we3S4-DPowBOtH+7UDOWi|hj>WfYqxvsDud9IO98AGo4Qp|lyrJy{VH@w5;l^jxwUEwU#T32V|_ArgN`mavOn#Ou&3NoT_}^axi^?)I#BzkrjtD~jI>mqCcW3qhfT!rCU({5nN$=e42-22Jm05K$OtpyNFGe^^GM?SxkHBio z+7Ed&zbp%`^zh*}4MEbr$(p zmENBi4dRl+d;8cVN7!n3$-**K5dHLNlqt;(KuMH5|88qau;l|UC|L)!P)xa>D0Z?@ zr2H5(LdG{`%eO`nf-tRn(4rws&sW}%%wzJ1q*3NC8MX()A21TC)?H}gLp`SrONP!( z0D!jv{SE9RvAjmD@mBF@cu*wbYWH}Be66V-YT8O9Th%y${%;}m3}H@x(}_b;nNhOyOc*uR<3uP`Y0F@#Xl3Y?mj9^8(2U( z&no$8g4n=$ov%J|)PdHSl{4J>kq?mDk}SI|@&-SR@#Us-qQBDQBw{+~LTX_!kx6l)$Rhq0bS%RJi7I=ALqbCH5x>GNUL7$6pqlQbk9V zefDKeUkEbf@^h;9-4VI%Rf1}wEYS0M!DqYqV-8HbNp$vJw=xk>?sL5 znU^o98p4V^>L;9DuSGx=e!|$3JWvSU7L?vOVcGmo%W;I?iHf1Fw=`{pg0|=HdE|#K z^{gfR_f0S?Kz{`j0gRpqL!BMSFepi4|9U!Ts5vR;r=X8>#n24(T3YBWrafad!muuPuYFB*DC&H1`+F5kyXCi)buBZ(g6XsJx?* z0sQ6ZZ#8rMS@@lDLaa)snsHPB-Lm26ngH`n;~l3>5YfvC`(4>|7|jwItaCo}z^S<} z_(47~Um1YEi4zrLzQkbhD*b004R7Q~_MaE5=RuI()FMDQjE|e2>M&DVnw>QNF@x8? zb>gfi1j*HIYXN+hW2@#v?7t5dfIt>jFGd%*J`1osw&v0*lF?52)a=WtfLrh@EPM>h z^7WY1PK_x&J8Io!oE9qX?Em$1;cUcpmnIWEo1<+mD*E#tRL-v21ny{ed|ce4!Hsc_ zgFxyh$Hdtuo01ukRV6eZp=5zI?AC*KGt|Uf-|)~RMmhIf z@rM?j{lzlIcJN5upOpGz3kTHN)ksw-rbSyVPCPm{Q3k5~gL>)K_q z18Jw|HMzN}R4bEvPI7hd3bYX95^q-PB&W?0T~w1z$|8Kd3RMjmRd^z zopJ9tlyH{hqRKvAj@m8|;a>6@kotqK4bFQ^8&LNkr}}(jFK`r(j=Q0t-EJl6>Z+0D z)m-7&l52WkGY=l#PNAJ4xde+>ly)D)Heu7R$q~~*bG=7sJGo~r23K}?hp27$kPRR6EV%|NxlZ;xLK%ko_BmPoZNDUOaeYZ3HxWaUsS4-L zB|LcbKL*Mz!0D$K81feJiZj0W7nrBUFM$ajnNWQYCfupyS~nNe$EHhzx?A3>V}tW8 zV-qz1K^pE}g01Xu{X48JDee{5nqcW3(?1meGW@Zn`BUr2%)`=kzci6%c`&gO{^&DXCgcw(74y%ifh}n0T6KUOY9u?r^KO@R`N!{Kf z{H6#|O;3AnX-H2?-YHcEi8O~z6jB}<#$H{2OY2ddR>9p-vabAGn}SV1MTcT`1Hs3@+R;*DZ8BL?fL=fVk_zU6<=1QPXgz{- zbrdSD^m9JrmJuuI9i%v}MQpO|@&@3Rf3nQ@;_e}M$)AW^yOl-i2Jn3XXRI+@VioLW zukv}nL3sr6*)vg0*9vf$*C`yR-M?b&rgA`wWy2nK%$OX(yY#FFVp0eZL}7 zu<{LXZ+~9IiI@B<{qJF<^KYd(yFYQbEXxLwUfNC*lf2(Yam)Y13;t=$ChrtYy>(WP z?k%Vq&TZP{RFf%&l!e#r^Zaek9VV;_SccXY^M?k7w;g;EaPSuR39jU7+`EgYfZhws zdn~s;PrjrcO*>k2o6@l#`{>eLVgtw#jDt0ZUn#uitIkniys&IAfZFAd8WL58`zClz z8*pu_64h?6VnF_3{3O(`#;Td;nF%?cp2}$l8CLjO;LDtB#3ASU3C}BJGqug1Z=@;f zZ5Ni)UHsV!!*`V=0Rj5=lsX>LLQ*<6fAvSF#XH_^KN)15hG!H=5-XGXB(z2wo^s?! zXU2EUJ_B?ph6mEuLTkgcLR+#EW(OmP8%gWyuY$~XBTXb~4;r8X%ou##ENM7dSwV4yQ=HA4;U&{|rtRUdThdx(UwgC683&dLILs3(qyKA$6Y( zb6vFHaADKNZ_e{bzU8Fu@GCW{07j`VLR#Sf0n83+#8B4b8F$lqYGJ#@k#oChM^7v} zvDBIMugXPxXbQV(4_3=b_4RO?Ank72_TtzH*5*z?EHYiH?#{pNecEzPwq%9Bds1?I zmys%}Q5~Qa)U+RVbm`F3=pS=L!(Fu}EFW6_+?}k5ezPup?>HJd9SC?vKwp-F;Kg=s zJMEuYIg7s6M*0|RGY6Sxlg9;z=dY3pe9^kh+dSP0*C}@sCxVU@vpJGKfV5vGA&I83_de$qgw)ZFJcq_DewZLKK+4L5@b#1$@|O^Ufa~Px=7_8<^2~~a z@pfy5nF>6Fc?Zt`p^-gMemyCnseWn+!oSPN@e)J6ajMDFzdDXyl2zTH1R@{r1mtye zmBL#Gp*yi8Gl9VqT-C$nye&Ye<;K94RPwG}gI3rFhOON(-H zY}I1+C{+^)RKP!Ef@U!N)JcUh_x3`Kj)cWEo1$5AZ5j?+_3l*9;33CR%4m7KUM@$0mU0z z>&Gv5FHjXKRvb^C9k?GuYLlrpk6K=m-IP%Gn4MILB?Hf|jZWn*^e-8_jGdD{NB5&f z$sBs^OIk&Iv+lA-1*D~C8}0>aHM&(`1|(~k{5*^p3}C--!O^5WP676F+hNc(V-SwC zt1TmbTFbQyM9bBqnctARBYhb$)H>y9$}-|^4H*bL0!GPeN=yW<2f2G?53WgTVl`v* zJ$urvVoY0i$uTXo(h4vVSL&Q*vhu}AP1|uFt@U>3Kz>K|_v?2MlRR44ul`lYdezPXS*qJOGeb&0G zudm&vod`;RC705f+2|w`>AkZ_UB^}3CH`1=#zUHTB@_}JHvFB z7dUy8=gzJRkP#)gHY2t)DP#9RG)j#_T2@0NO~v16`xWzZj2Y`3zp^|WcNJA zNCI?2cj;^u@6v=VB{+4@r&SW5@hSmRB)j}6^<7O2=V_R%f2Ap?e=nLNl>Er4*#wp( zSw(+NYgI*09$qe)s~8fH+Ixl61b2K?Cy{j}Vqg492j6#=rl@cqu*0|lS0i~Y!fxy< z5SzG|?O(asnDpa%2i);3?c!_Z&($FAu&wyE%)ISvN?R_a2rt0tSvD-B@*6_M>R5ZZV8}_^x=V}{A&|HG$~P!4_f{Wt z2j*Xr+Q-8ZAQ15FDOV+1oA=hAE%l1$Vc!S6-)_lOl(Xm(x9^ji;E+u7b`HZIZYux% zUmn9W-{Y~LSUSt}k~8j!79Wbn=~e=V(5AKgKrh{B3Q3P<7`xqbLrc}6Ny z-Y$M_lvM|FcBEn0G6ZBxw)>%H%Id31<#Q~gnHr-NxJ{8pyPiM(nm22f-B=cSiJ!9m zmB#WIbwYn55s&-_Fl*+G!6N6>XU?@z?7 zH8v8_Bn8Cedz#(zAf3IGgcM9`-mJs5JwGLpfirAjx`!a(Xg!ss*d0Mv-C_G{Cj1$S zj1sbEW@u;WUgsK3kj-z~S#VaKPUYxCkKL~MJWQss0x+fpvjPrc!2WHPMDN}dr)=Zu z^HtrYJ&flYOYg~^eBnZ4#i3cGm%(yX9(z2>Uj*zJ$Zg4-J-ZT1HLr-%F@4Bp!Hf*i zby2@LeNsuP^uA?DLy-48a2S|lq`aG*ua8ar88j16_0sH%L>CeSPm8DBaNJd-)bm@x z`l6JCFih)JbU8bx8*2q^zi1Oicj&Gdi%9 zopgJWwmv~>Qba0do8HgpIA;s;i2NW8M}3mtF@13TvJ;tPInuXn z(!4GcBy^G+O0B~AcK16)h(Cj#KexEsAUJp(ANDYP)|f>X1U4gk(})k)a&CtOiPqe+ z)vhJ!dfwg!P6JbQew3Z?_92V)UevwHZ!y>-Kym85t3s)F$Vzb7L;)m(P9NnnYK{IO zPUID@t$cOV7dBD@qN>K){XS6$hI3lj(J#}7s6)bonp=yN0vfU043J0PRUy;AQTQ-zQ2h9W%Ps#pG9m%|8b_fyN ztQy=#6rtVRV_qc_m#OinfQ#^kvabp9(JodE!mt80u+}}`Cc!h4vQ>4jB%r{Va%yH; z=!Bq=F3MdS>sSB?42Op4k$1v!_s~GBU_d4h+jQw5&p2ZW6_6cSWKI^j=JP_`A}U~u zOt8fi?nZvYboryEbIBv-DET20+eU}g)JNMR-|uGiV1dVT)&Rl^HWW%B@9e7Hr&$it znAz-R4wu{xdt_@#^|Fak!+zm@HvDx zY!mj-y6fBMXT>*Db(CYmkblX~n{-j=_%-rgNlW7Ca+tOtVolX zt{5SB?`5(rrt1TBA9dgaduUdh=lxakjoNG9n8Q!TRzxH4ej>>w(Ode&McXbU@(kxy zL;2`2FTU*@9d#v!bzc6q%+!B(1o0eZG$DWaT%<cHn zDHzJZ!M@1yJp1?onZVC%PR~v_w`sb(aD5V(K>@ zQCCwgBi3dq7V?~Zd21u%m3O-4{)S4BQ3YVl%Rw#C1cw1iauU^$Xl~t=Iu!gIjtclf zCWK)Md03b68Rom%YLlbdJGVzCJE-l&6H(@tvp!0{bWW+He5#{NxN^na=pc%{ z3(4#7d)o4^%x53!I1igE`TFeLtwtg7?UHps#&KQ)7hlD@T=tkw-_d^q6wM+Ux@v0u z0V*AEf1~wlQM!9w+1hKeQD*3eBGC_HOG-;RbvuC32lAQ;)_6a}PfN<)KjlNm60GaR zluGV*rrNE-CIkv)kN~{SefH{&JcJ53j4{C4apK~`Ca707q1_8LRL z3lx)V5tAWhvLP57IryINHPN5LFN5KSjx4toa{)1tNa`(vhY$pWGKju=UJm>7m%h3L zXC2`B`SM@k)C!)#IS_6FioIvd@cWM!hxtabfYd@9`)H>zD=F|j=#IuFY!our7|qc$ zRu+KypZpE98;yYK{RjNle_g+__Ju*hOotV|=!4Vw*uhpf2;GYcDWfj)8Rz3}Tq{G$ z9_G6pc&7=7iF{{+d*uK&vS;}} zUmRmQB(l#dGx@8U$_qwZ+CVb6NMk1i;9?$)wV&Q`sSno9O$S$Xx@mooXi1{QYFT5!+>I+02CknK(UTNPsshUf zU*y=dJqghM@FxVk7EcN`)z7u#^%Jf7<69?^y6eIYutI$~yMOoD2hO-5ADhw5n|!@^ zQxCAR3l|LMwoF8LMY73zog(Ji(863>@|$wZlZ-IR!7sBF+fXN5kd-?d?B`*`ioIil zpytd5CbQMD_x0L>Wl`egTq~%AqksiXSw}O1k&m_LPvP2K8UN1A=`!Z1`RJG-k8~jO zk)zKg`EDygP>qEgrg< zIW@=O4;iAfYomhRd&|Ka%iFeh;xj-IoqZ++XLFm@buo+8(UQS40BR+u&K)P8M=zn5 zJ4^m~Mo^SbE#k_Tq|wvUJ00Fd%!bo`Yj zS|OBh(KCz8#Y~!M#*^*Ea8L(2vV=VVTIMtX@%WcA93K!$ya$%=5V!G;OZ9s;Kdx0+ zQHQ8HPg%<5h{m|Juy(-og6l95_yq@Xt`zgm{Bf?`T&61MYz4O{8BuU~ftIXWzn8uT zGtj(~pkMFX_Od`vTX|gAY4#$Gb&yFVdkPYym^-TMTOJ~UwZmjj@GGJ_b|L+F40sy3 z4DNrnTNYxp(h7Us_JmMCQvhJ^WNa?m7TipH>+h6WHVtm>r8gYLRDXyQqk@ppq8I2@ ziTXf+d;K3u!nST2X7P~;^v#F@f+KJHM4VWf4_`P)iZHB*;L0CRrv9(5{B6v?Zj}9g zJGF6~sHYAn+ex3UZ*iHEqRW6zm~9&P99d%ZzLy64nWc>QwrY4UP#9(u_QxSUs%=Y# zO}LC2fHD>6;fO%bZ3E_i*%Rz8Kd!OCIBm_O7`)#|oY>!2i+X5JNgj~lvvGU-LxRaK zfX>Gm@bM^ghfp{_h;_7;&+V%Z!?&BFpU&gUoV`cl5OV*D!k0l7Rt%ZV9fy#IneHYW zs6YEC>sE|Lv{rN?U_|ij`{Q|f_J)X?ztdmq122bzJiRhI3h4mF+GwGpVC}xCWygW* zAa!o*mXFeIhqZFoKf5A0=-FZ+Y?t%EHQ=>RIOO^H9$bG25a0i~KXpY2vInI3g2(@P z!%7GmP&*^Y06Z~Zrd8~`J`M;BG9{>bM}1(PNWxK)agNG3P(SdSKCswV2OYbQfgnO$ zDR?SuitsG8xNAMNA!&bw?2qskIL_5u^+gBjyD;vG5t)`h?Nn>g`@oLh+v zqyQ-U92KI+_B9A2RdgHofs4w5^iMjdxP4groIzLQV*}xJA#AO?#{XV}>-nZ;$m)|Tye+3)H}R<(gYWMPkZ`O144Jx?vUaow34(L50Ss7$j@!3KIfF_NFp_Cx*n1IUE|ge z$!89*z?(h0kb)H}!l_3PU+Z|-Vrwoy=||cC?;??pTs40`)sCLz5jlgX55fDL8`Tkp zdL)o0us3?iw+AYU4jN^Js=fjjbaa=7(z7+}K=#=4VyOLOEYX4FOWX^O4`tRXyrngb zmx>~&zpcBniD1QMsMswOP06E5-!LVUiQs7Lr;S)3@1mt}@ zyDtlJ+vR-z6^zTLvF3f)*PEd9TndOZ(49$nIV$?!LDqYtH)QQ1tb|PSDWueK7uhaP zl&jb|yhsoIQZkQ@@r!zpAXrjQ25VQ9?*3{uv{}yXV_>uNnhLXs)|!0Vl82Z+c!j5p zpP*bH+B1J7=e0L{5}LR{NmY05hx&ocUb0@2zVnr6*mgleGdZ+nZTkv?s-P@nqXzQm zapeMtY+i}R(Hkn27vICLLD$~WT<;i@VI``|a~DnEtFR&1P;IIl>)Wl*bH{TAOT394 z2ypG{AuAEd9H5z|?s5QmM|G4t!u|B$n|A))Y8=Nt@v7Za` T!7bpbH)Lmh98+tFyYPPiB>n6= literal 0 HcmV?d00001