From a5b1eb4b9d334c995a5cddfc9739b53282315dfb Mon Sep 17 00:00:00 2001 From: bukunmialuko Date: Mon, 4 Apr 2022 13:23:44 +0100 Subject: [PATCH] Page 32 done --- README.md | 1 + art/screenshots/page_32.png | Bin 0 -> 55950 bytes assets/svg/32/arrow_back.svg | 3 + assets/svg/32/settings.svg | 3 + .../mobile_ui/32/circle_tab_indicator.dart | 32 +++ lib/src/mobile_ui/32/page_32.dart | 212 +++++++++++++++++- pubspec.yaml | 2 + 7 files changed, 251 insertions(+), 2 deletions(-) create mode 100644 art/screenshots/page_32.png create mode 100644 assets/svg/32/arrow_back.svg create mode 100644 assets/svg/32/settings.svg create mode 100644 lib/src/mobile_ui/32/circle_tab_indicator.dart diff --git a/README.md b/README.md index 82423e5..9ef1150 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,7 @@ flutter build apk page 18 page 19 page 21 +page 32
Web page 7 diff --git a/art/screenshots/page_32.png b/art/screenshots/page_32.png new file mode 100644 index 0000000000000000000000000000000000000000..d88e0121970f0d333b09c2c86c4dfabea25b9ba9 GIT binary patch literal 55950 zcmeFZWmHvN^ezrZP{2A!sem3u2`Qx|j{%6ZC?G9LmxpdRCLxGLA3#tr=x&Y@qO>So zf;7^dckbhhzW?92_rrgTJMO3VgF|5Nz4lsj&H2n{#@haBD)M`24%3j4k?mEubnyxq z*$zoEvR!0UJK--3?C%S97y1yf~ZvQzLg6&d+M3o;7i7Wj7< z{=wsM{^B?$zU{@~WX>x`7}P1wMWO<Qqnc6DOA?e*h`(PBKXbY!@A%iRj+)pH z&F$Z49&JAZ4^uvN`ZENGrJjbI?0M3-hi$Qw4m|Bp6cnDF+o?_GLrU$)h3B&jccW{fo3 zGnH2+QtQ}!IH@b_QCY@T+XJs^lU@5*mUTXh^S<84V^$f!Fc&}&cy)Kz{!qKHd6&U2 zFFw(;e?L_9#c6r^2c=f#a=)Ah)0nZrz~)E3Y^8GQf7BxDfFJ8(o9f}$)o-n=CN8|7 zRO=QipP%A&{&GHkU7~ir`Cw9BpZ}ojT4YPrySr?X*Pf8avVBmOeC~hb^jQ4PAc3ue zqBIE?9`5^|daImKqNzC#J<92TBh zBN#J&KH^OI==f_E(ViuVQ*`AXTH)GFH;a2x*HITe+>63RI+{CQ)Nrp|D|0=Q7M_@A zbH=vJ?Zw=5*gqE6sEHqwZio{zmfFsJE}vrSwwEtn0ZHuOsnH}K>eR#)jP zdNiWNY7op+lg6m~-D1GOuFO8t{z!=rQ>4~Zeh=M0_T0hQIQ41Vk|jfxKJA8c*G(Dj z#o>2rt|fDiZk#b#*fr6E+gWl{XzEsT)wt$E|^-|tX1?*3)* z>XxP`>if#IPfHQoB4ot3rHytoad&pFU2tx!v&5hV^u`@{46=t}EWtCR68NYtp6I{5Ybx+-_cdCYUu6Y~B?P>kI z-dEB~lt`cPaypvglE0M2q&8hEy=!-FT<;UYSQ_>2`d4Q6yesRkq-l&rl;mw&N7e4D z4UX3@-(CClp4Y@Xku}X%qoZp4>|((S!?X?bS6E0eDHlGUcG zy|ngJJhQov0o(kKllG^n@K&3;ppZcIPNK4m$I>{uEh)e&dn7c|PNb>NRBZ0Fzm|qL zWdpr{`sQ)8PmSRoMxBWh0fgDW>wLNy8kd(9f6wP9?Dd6=$5*A|1*;SCILEwX%p>(4 z1oeyY(!s;8JRX02F8k@cVQ`N{y#JX^W7V7E8w~M#wEi{19&WTuwPulb+0O>cV$044 z8(nrsxs5pu2WbO)w3#}>n4R18nbTU|aAk10vPb*R27WCH_h!cT{3v;-nNVh&r1i<; z_huR~qMX+Fo61}`Tr>xQnooGU1|NO&zWd7J=XZ0nZtkd0ruObN^~MT={HT%-i?;Oc zYo9zSRjyT-{i6%Sd5W z*!`thzyhD&S6Rv9Iu=Ta{P*kdw|(-iJ4X-xrE^9*Q6}fqHwowH#Ir87PCK%{K>Y(C z$kgLb#r3@nSXTN=p|EB^5eW*fv42)Zg?fLeaZ48DhjfW6sd4&u8&#ofa_73>l zJHLj1^EEl(YY|sz?)~L!_;)}RPxTA_gR{tc3A8{B|C<(-$3$K_#DjSc)?LK0Y z-d!fqKj4c`q>-G9Xiy5%v;TajZmoW5z5ZpD?rk|%)(>1Ztjfvhf1E%E@9Ekmg5NY< z?DEB;9faHC43cy^MgHLg$n*kf^ZNt1AH+-)j;AuacXi2Ko&Fh$n>nx@hYJ}PeM6bf z4b=rbw$R*rb@~yf%-9#v{)r%!KfVVOq(gjUFT^QoK-my-=JO`^S-$YWc+35fxAG?r{TA(Jtn{Ua6d_xSt`7(_7MK zW8BbiZHIf;J)`iVtOY*)Mdk5Ce`C%Em5&!2d^YDiIBNP!Ix)vU|Nl>9-h zs%>O>_pfX{l`)Il2_qxFjx4;9XOKz$bp7JYz-m^^Lh{LOr(csUWgY?Xr#7o*O^$ zxyvybRA9)zB}F$( zdgZgKDX!`%o8*fZ@);WBGf%eNwUGh}SEuwWfI!6_kUlIm<)#?$o|jJIWAihvN|pT& zwmCLAN|Dj;eA4H~LjFa0m3!$5yHY0XZzohFwjGkK$^XL#%Bd=H1P1a&IBX*sM2~aY z*`h^R^Jl+sKeYHr#Kn6#CcOl&&Q0ML|4gLuI9@qQg!gSu?+k12 z6NBkHO!Sp1PI9<;&Lc1E+fBl*?FyPd8<52Ls<6YvXYXUHs^lHh=Y%2{OM_qAuY#@=+sx_6>B2?Y4 zc=kmai)Ey%tA%8`<8!_ay8B<#YYv+9C^L(8YIM*`DC;uhJlvkDK3;5NV&<{Wx>{@Z z#WVIRgJF+7YevL2Y(VvQAFr}-#@%`|S>1F;(7c`MdQWy7=)~HSt+BMtF*WXf<5|!8 zv%`*?AwP`ul>UiD&?AM|Xc5Mwq{@^yra}cQONRf(SM?&X$m~WgM|Jv*?}i)S>eAM#c!hY1MhG-d2y(wne}e;6_O za=(|kW~It4@gghNewHr~LS<{NF9|j=1|n?ejm{^~>oLf_GOPnemfnad5bEka76xJ_oV%QUCAKe>TRHx?=QJxuhV+ zkrRdCN2>>_^maRCq#7MO4fGCXHu)sLPyoR@GUvCZG@ldHPtUWaThu+gwzv@rs>C%5I@FYopF0~}Rc z==+NFl7XZBj4kTb75f+N7QW_TdnliH%W%5lOTx&Zc?N+$X*Ht^RFsH~&cv%qN1To> zy%28am7Kulo_@}{)1usOR65t(zBLcKC)t#HP&RCtC^R)c_o8Iaq#adrMr+EzOmJ7HMmfQf38+MIcObX4WG@}nE!B4XYjJ)gW8;P&YyJY#d zMU0o-jaZuAeD<^OX-amoeU7Uc*MpGSS84w#cY~$E*1h3hG25>oN6k_8M~Ii`)3f7PmAk|+ zlg}BG!WW7*9H)eKmpuMBy5s0F7H5{vomQNg|JrGxr48rEkyI}%dEr)3udr0c$0|BY zr$4$y@qoeaVTgfqyGbQ&cwquhtGqZz{CI=X=ek6Rc{+U(-u2h&96nCf`IaW-b62X=)`ruzw)++BEru|H{2gALsw(5AD;a;(0?-8 z)@#gvdi0-({12@84@Uk&$p7C6iGNYBlg}3MYX{4SKgu6!6bG}M6<88?pEo~cSfZ$x zYkmEcVNDpn>Yx>r9k~pCd+^iy$SE7d=ZeG1I9V5HoPFRHwTU?)o@;jmD@W=*be7^tjBp%1r$FHY2QR?d#f6%45 zrXlnazX)08jwlIU4lG6kFBafX!<+XCf?)<92N_wLukX)Aqg=jlCB1s4DqXNVKA)!$ z7=_5F3K|#=r6m;r?=(7&QvWv5RgmQ>n~@Mjz|zZ%x2EwMOrk`KB((+L-Uq-R_Hdg> zf@GDhV}gH9v}Ig)B51Ot&ZxyGlN96rZrocAFUSXXCUVC0MI6tSMMgb{7kf%~zkcyo z=fgwYVtZ-Deq}dbp_j(Z%ag=d2kC1e4kn%RzSt_%46(tcGnYYDMJv|-nWFnZyNvp} zbzAyNS29aJTp%JeWtfAIuwaL*FP0I7qvxO@x&&i;h0CGYzyDInyL)Zf1INAlPD&5 zuZ~t`dAYlLkivqSjB3-54t<*drBtJ-Ahh)R)yGJAd@9gK-cE^;|4 zp>`A%NUxn|t1mvDoOPwELx;2pflv(O>8XECL3N8S-DRrBv3#%SE3wQ3w$ogAv9At` z?Pf`IDq=UT1fE7BI!7I-ON`Fb1e4(vs93}uIrV)u7Ap5rv!C&qJJG0$u{H66F#OdE zZmmV;WKv1^8`z4a(L78CD}&FM;|L&>Kit0r7xDfy$=Vt5obLTYJ4u2*r~+FO{VanD zU9E>nZEi1i%aTYlDLo=|ay>txGf_E8uebU6J@Z{)J|JWvajC=dzQkn8eMcm<>BV8A z=aQq0S15vM+wyTY)t8fXa>l}MxFhtN*oyS-P{8!RQC)oE(CyUvI^R@YKJG0Fr`!N6 zKPrB?iKILkP=~pxJbw()iH)_TB&)O%k#74M-UvmiGG$a!wEboAsp7e>fE=CQtZh!h z$Q5AIbR4;4D2k2~w+Dhm87u3X668r&)u?!MbCY3t!M3F3Ek{CoP$Xim5)>@oGY&f{ z5SwE7Of+~XsCcenKV)4!*Gz|LbjRmw4o6z0D#!=3Sa|WEK#O<`OCR?-98t9LSPEd0&_cSs$WY%h3r35 zrAqXdM7BmJeEySj^irT~ADDrtRG=n)1n&*j^Nt7Gq*gIOiqJv>w~+;|ODDPeurANMT))2~f(9%@fg;ql<3r|AJ!kq3WmHv*&i8`pNrrLJ{3@~ zF!DN%7SzY~?8b{U&y&Bp3IrXff6!@b8*QvEjHx;G z!K0eLfg<2b|0W)QWTv)aH;2L>511d2uI)K_8!=W$_w5xIMM*9 z$?ZV4MtN-0?_9@WUf3~5cOk%@E11-yw{InVn+_vdQ}!2)M8>oa5x-KS4;lc36u&q_ zjShc;?K<{FSVHh)o;FGtHA8S*%00{iSrGH*AVKxf#)C-Nb!HFR<>vc$%Sv&FP&3{0 z(J`h!&vQf77N+s7^Wb@3;v>q`vQ77f_6XcQo*2O1ndq41)G?B9VZ9oH3Hq?!wnC@( zgg3RV%QDa=-(y^#?Wv3sJo%rN8Gia2I{areb0x?U5+ zkwqQ{p9a=rb2T%hu9YV z5;*{1j>VML98v1PU!=ifmFTF5QmHaW_$UJ?>TrOh_=k zxQ)Pu-;}FoE3&Nc7vNJhXG0Z1?Z6#yI|~@@x)=Kxi%ho_c@ZP>qBpwi{aI{j@Os4oamsS{Op^)j2k* zpKNH=8!p3%p0m7HP$jU>k8OMr-EXE>n^w~3%ml}W-hbRtM{$T7Kb^(oXXE?uscG3^ zGR)~~;7YF+@IJ!!pj!1Dlsn3Ne0r$jIlx_8?=aSlL%=f|#Mb;Ymj(96x-++KP7GOz zY8<_v*<6LlIRut0zyT({v_1rSkiW6mxe*@)Tj&X!EcS)2b0@Ng?4Z~Y+372Em=I7C zorb>jBWTQNRZL9H|Gc4Eudj;PP6_s=R`1+01=T#ApUnkpHl$%L{1ph~Y2lDEA`tyb z{``nEijN%WzF2Fv=#E^nryl@`6u`}#kfx)2#O5B{joaAnEX}u4A_B@G} z#!~|cX5VAINMX<5S9JR93*Od=z$l_QDkH_u<^dwMXJ`=H`R|gT1Gh&SUuL__4Izr{ zOXNgl)cM&wMD7_tSdi|wb^d3T`}-E1K)%o(Yb!!3R+&FtP(uS40k4P!l}a@M#Y~ z0Ps7JlexTzbN}nWLu~VZ?4*JHI9TLsQ`4qU7lI81MdWGbGe-^3`RP{M_Lh2i3JP(+ zQ|qxW9c}(# zsP5NP{UUY&J3(L|SgHyU_FQ4oB%sGPOZzM|eub>hTAl=H9Y*B}H>>6DL3M*Gb`;G! z&URWIPmpj)l=4_qay(=T1w=gB&qmqW0ns4sN1#DxEEA7mi8gOipnF*98Zl)m>5I(` z3h|TRp^-GFkvJ-NQt4Cs6)N;{p>KkuVcs;raTACr!R=5KLTzk|XXN%F`dH{|)9~#x zZwQtHt`aUKV1RRDV*Gy;9BiJ;J%OSq%PZDVB%xk{O$iBsvdSx90qS4}*Z~UbsKa3g_8xBpTCd919Ip=Jr~7Pe zIzrqglynZ>L5AOgAvCNLkRcA9fY-db3B5}ez*CUrHENT0zNt!-E2k1d3ftjV&8hIF zG-4*NBHWt50!rD9m`#*HFvmbJ=g&W&tJXGZP1U#648d*QSBcw;!p+@j(?r&;#sN)C z&zfS%$dj_JLtnc2ec$E|ohR%;Cr%5(v$Z3<;n*xn0E)5Dv^te1-~*<8P&kjVHdB(% zhZw3^RTj#B0mj4CPuNZ%Q**_)X}Yni4m7{QQ<$;?upKI)q%+U;B|J18mLErWol%r< zZ#n3HDPLUQO5uGM#1N1?L32Gp!VUO(oG<`IfK3lq-LUW z0=1GJczT@iZcL*z-qpPTxz~m+{gO7umw2UxC)SQy6y+ z+S*8AdO&}`>XWG`sA}o_3@`mUUCTCuN9u1Cxi#uBp(hjtsg=~>1+vzG#~XK&OYF9( zekuYFaTqacawN#$J;7R6h75jEtkO($=-h98g*Ofbvne40`gh9s$y>9^NX4wx)fkUi<6`DY5i;>ijaG_shES~?XwkK+W5WIfDxreOwNPpP zrKdxA(MTQ8N;V_H51U6ZanO-FHXZ^hhRWch_Q})~RQDhXa>x4mCXhB%oC|>EmJX$? z(Jh#9^(}TxqZGO7$teRB*^9o|%egi!C=|tcIPV~Z!4hdn2O|jdx9=rAvtXddKLG)< zJ&W*#_dpOBzK=z$F(vLIlwtsej5`@S#lX4#$?1pm72q4IjYJ(lj$!*lJs;c6KTSv45QvlSZ5dNJkt zScJ=_tSW|yyt7bGfL8^gCMc%q&z}sr?`tTPbtwx&eT&~nH*Dh+8O8x-GQ{mWJ;xws z|MQYKq~S`*jzeCF8Q<1YDWWRxi;Y2i(Hx&8>N9@~%#gzVKzdybSEupG(}tk+h-J4^ zv54KqL}^oAh9Xs`Ojoz4&B6r|YkE(*dV%|E#8^2PmjkA?ETI zJ>MOU{e2LrT8${PvF91zEfmF5o7fkBggyo{Z2mn%B}(fx0p;R!q?!8`vft``BTWfs zAMlz2Pi9L0RRinr&V_|pYw%A;BafY3Gv)vlv@t}a+5=aL=lEBZkSjtnAK60+;0m(y zS)f(7qTKO+ONAq)u$bRk33COYBEwt5%G(nS`u_PH3F0A}HR>HKd#Udr-lQg!wOMsP zz@4K$F*j}e5aUt&CcJQyZ}q@Pwy)3X?>xdA+Vo%V@l8?KPcRy*YWg(r*=g0X*Z}YU z{e#5W!BTiM9Z5lO8+EpZ$*Q6VOzEx7EA+cVAlbD!deka@KRK!!mOqY6B`y{wjtnQx z*B9&kiH-;Im#Z{wiwh=A&#=SrQi5s*88r)cx^ZQ|O^-1IIf8e$Ejmel_{gRPdifTa zTr1`Jz?A!gN>F_eo(4F=wT*Dtw3gDwyvaFkZHO>=Kp9un=8Z5Z88pEjH1i{g3^5NaP)QsN;<%M1OY)* zF@i9M+5>!gC@I*ABYW(qf1bGAh5Ix}pQ;UsY(1g~KQi=nK%7jKvOWh!c-QbmAOY(Q zlUNzltDv|H7RmL4AM6m!1hHL2XADR>1APA$!TZB7PrB#I?5$mxVPWh9#VmLved{^! zbw9cKI%CaxWR>I4Vvu}SK)n1MD%Xi5|2+_g?fH2o1e-@WLE$J-2F$}FkqSI5d4x_7e0s8>*Vhf0o z!d3!IXlZiPSwPLf5R)?pwu5_^fHO)w)|mV^4iEqb{xJ%7)F`C;;}AWsr)jHlLJr@Z z&W7DFKgD)nB+=JUx+p?R9k`G%d8e2aiX4TU*aPCez8V3j;E7^oN)H-$y>nmQhzgt< z`jXtSMiX+09s2dDZB*#=pe!Jnq?2_J%~jB;*6INqQaN5Hilo-GGcetC&NQL? zd1ps7HDxbg?C@=gT&}YQyDmaNoBj|vQ~~}$VrN7e83g@j$UC!xPhJ(H2!+*LN5v>m zJ1QUHTCsY93Ja!6@mtIkxUaVmW;vbTR`T!38{F9c{Ig~wQCN?@Nul0aIf2Dk0kJAw9^_+EVBd_9oaz zkiz{3X!As04cW*Drj+9(yii9n{EUFiJST36fi(t8Oy>W*(^sp7`ax&@25TK<%={Y3 zDPX`RF|3gGfWd9ME|CVOOSiGqyDa2~WdqpWnuiiUbHq*zQPy4dZ$VcZU~Dzf zo$N@qX8RT7C}2-lQXqy9QXq=FB_-+Vkivw7jE;QV8B|iNx4TYh7kk1P>LxVm(C&&{ z&Rhi~PT#|3G-W~xIMwJSoKGWBh|oFW{?p3UcSO+UkHKY06@0yd5=8ilB;{e4GMKO| zV#0EW*2bIY0WC~6C=quXl0{Nh)V11}+;jgk7KXhYcqDiUkk-f)m3vMwA$V~k6<~K4D?~_j19cE^g888^GW_|zTET`BNKWQ0xJ4yG z7mC^uV5He!h~^H_krG;9hw(nmC-a1Wbyi%EyV;q52>1=`o_ggYRbT9}zA#O0z{h6# z^ty<|Toc-nP*|Pr3jJRETk49mlo?X^{uPxg`ixP;2h|PIBjG<}DYELtt>WiI9Y9|9 zd~JdjU=FXr+C$^bbYS%rEAvpGY#`;pl&)ZM&!l!oyh?YY`@>YAxD@TR*iJ_%i-4?J zp0ABk&kB>&-&~IXqu5LZT{F}d1WCcuGYHERt#2Y>nRWme0GE5>NidJ;-N_6P7b;M- z<&sifKN0uMKYX11v@?F-v5Yjqq5ka6*tA1X!UM?CFzzH}t+sPHpdr}x16IQoUqC8i z6vn#!BlTh@pu&xZ6q@#ai0lK2nI<(XgNFiNMW8Wgc^Bg-(g0$x0|RP8K%i*wP$zIb z_|^$#agrL5u`cP3eB_R&LPwE1Amjf8NEtDn()t3Uve|hQg(X}SKJ8A2Nf*QC-%n18 z=dZ87N?{MF&4-<8!=;RVvBYIi^Z`*}d1UAKvu%w+HY~|}iI*VqzU^psLVyi&WJp5s z5@!M}=5#Su&)O3@toO;_A+-+1kbB7X>hC8m!mH?R2y37yRHPQJG9A&~3(LBUvAu%s z+(XK30-=q#_s$K8xT9Tq+$;uv$|!Mde+%Ht3n3&6!Hw?pYtw|H59Tx%Sm&!-b)bCl zZ5eDg0dbJ4rYN2x8-6<*?*Ox;oF4w8Ol(f}a81D~K zllcR)q;$+D$dP@Z?YpTBH7+9*XeV`C2YAjH29ZW8D>P(G016mTa z6LPk4Hs>g28MVv2y^sRToE#E+-N#z*HjW}?euZE%q~scGftc6et7j_l=a52n#@^ef zbgQ_18>wrd#ZGXCW8jI9EFvY7UWmgo5O9EbED7c{z`jW)^^^DZM{14}5|VCdJK`I( zFr{l5dmE9wRwPW-!cvzJUP~NJijC<9{K6b1?_Kk>hfKCIMB+lcY#kRcbok}htqYP7 zCv?MMH(k1)bWdo(2N?cjUof|S+-FK;;MVj7A6AZR0P<)*hxOJJU3sv9eN+`L z?M@P`mtLW%94`W@Jh@177mf~2IwncH{{CLe)6* z?=@3SIX~|zsQZGABS1z!$e5$F2EkS#q?Yzv2`LiaC;D^5jI`buN8v+hE@sg6-azy* z5|U{aS46V!Bk1;ALj_l4iQGV4@hfSd=smy}wi#BWT;sP0dPxNh2*(JZwVR-a<-=*xAINW=U^d2}KXklrZ4f*Nw80W-#@o^py zoe+pF%KN#wk+G0J8Qu*RAo5GX_U8&;9L@FW$ z0_yTc05<^2DEpWJPn@8jm&nS>gYc3O!nW(h1TIp=j9w~rG=jFY(iG}?XXTwUmCK0K z*+|8IY~Df=g82Sbau>TAU}dpT)@#+v64ZB4WWySH!W3t&N79j_G#LFPE*6}eeBQ*% zCxKrME@0MmwqQDqR{?txf1&aLU9F07uIlHSg1xHZNB8o|oO;yzodsT=O3d5==QIhE z$9aQ5H3yj5a&2@A$KJiKlDX+{BIGSmmP!9Pkbw}3`HzskRfJcPYUfaW%dyg0oee9C z-gi_wy5Qb4HIIQ2)SyS}T}mCqSAITYlA+Upvovw%;E|mtFK7V57ZQ6)JObm*wl+5u zV!O#c?{B$+to3bFeu2Ok2T#^!W1ZWj*+yb#e zd%)PAr91r~59EgG%(GL)MRtC;yK8u136Eu_&`i;}7G3JxVUd*cvH+|HXbw<}#E;g; zpeV0^q>x6DN+?cLlog*#RngsAFSXQ_Z9n)WSLnI~Bz#XZ06bm|=eSQ zpETi8ae@A&Fl=V?I`rbuyHdkp{sa*h z4G5MCqe}q+22BNREVEtlnP0#gRLRu$pS(TxHYriCUaXv!@G|?+MPzlLHVIJ?2<2y^ z?sD$5sSMg{Te>pzBvH^lj}ly0c>ei963LaUhz9kx|1!!Sny6NOS`WfVX9J`tP62#O; zD!60bA_SQXKZ?)`GaCh9n__Yp+uKNkNWW7pR!WCI{YLo%dVbO4=3b{L!OQ|-#=I&q ziO?CuinPtp#JYw)PLTdpZ^csQZ#HuAC0$ZFNoGb!s;_-j7YYH;0+qkeq8lhtBs=3U z-S^?_K{Lz-?*3hSV0DGmr-742)eKuWmRasWD0`Zy%qp{!{6G=Xuz;(~O`I+6U{9 zL+j0Oz#~%bM;72vHguJZ@=0dBCIHVF{rOClkA?uvKcv`eL3KER&h>97}*k}R_?Tu2TE3`n~Z)%#j-!>CfWAgh?}ZL{y2O7l2I3i?aWD9&`$#1GFZSh?QKH>fb83X$Z^7 zq&=BLx`(24pCCRrjrfF3euyTP(;HeBwdl_^l__@54%P%3n?kOjvNyBQe-j}a=xP}K znQE#mzSe-Idq`n2t?5$_zg76@>Ej4S}K(K`Eq+K!6 zB>`_moZ30@2gonPc#8OGe~q90)oLrErdN+}1+WP=RrZQiCa*K!4@P(b1=S-Bqd_q< zQv;YgQrP~&CWP>Bcs7|*ui)(X9&JdJk**=?OoyoRqn1aoN$@Jth437R30e-Nd;YzP zf*oPq2U8CH%@<=%TY(}Z3mUEb84HTZNNH3KX*YJ zAGj#G1mToXZw=CMfez0hLc#Pal9$RmBs0B3CPaD~zki-J z5t{FiT|I3`}6fJxjL@fY`PceK&eN;@j0Zp1V2AOnGu{cbux@Ai>vnoABSER zfwbPZ{ZnoY9#@p+hD6KG5?uTJ@5%|2j&1&Rups_K?rAvvD~aS(KJhpX*AuuVM_lTJ zTVJJl4swqw+qrA3Hf*go+^pjEs8FUgn2%?A-Md!O>%ftBpc3g#7E*(~+p847PC~9~(`sfaTdtgMZ}1k;_geTq3Vl~R!F!Nsk4q&Ypw(;AA=YuqqgSGPA=O2h zTT8{(!2>?hHeb--#pl(xx1M}F8614Eb|%2YrzX!+vG9}BFk z^UZZy0!}ZUZaZ5H3o~BH>--^xcl%zpot6|5LJN#2V=#X%3J8x)palt zM|GBpQLBx@{1}epfwNNO&bTqXXaOcsY+II@YVYUxgQLGne=wIGyYC~(xdbu)D67!? z8mFW5V#edwt;IvaqensDYbvdFtievm0d!Aw;v(S^f*?ZLh)SshCqhRr3%=8?Olo6u zYRh{ycxpMg!#F852lR0(+Pj~_J6`NETK+=S_e%8_f&8WUb{QJ_Rb?PRhW(9?cBNOT zOc@tJ%YII{Q1HGA2a8n(iH)I+J50rKuC8WI9HqVa$`eb-xzntm~pB2Ix`#T>c1FATqWwurtmY7Y9%CuY3HagN6#?R?zXo%kBv>rH?tlow2z(x@; z*iM1O5+`(?6de(ZD_=LvP$`i~N_Qbz@1Hl3I0v= zb2oMLuB}Bq!qeF)`KiZ)ojnIcy>H?&T=ec8kvHt8Ps*>+Dw{Oi95f6#erj?$Cp>kj zBRX8#mTKCocgbrss&q8!3jGNjp(#!y6v8q)&jIFUhnTtOCrn3i*HnAm+scn z&+i|(rl&gpn&0cKb5Dc!Vpd@DkN&ECHe-yIcG32Xq81~qmEtoM9MT!RaRuJ$mnwp& zNx3mNnZP6(>u2?LES0Gf`p(=}n`2{omP(iQ7Ds&0?U@bjaI5&}^HbjYgw)WP$6PJF z`Bh^Nm~A;{na0h^#@+g>XmElL!-{{Nbg)@^0G6zb6fMq5bjbMi!U5>tUwYBnB z;MU0FO-_QxWWk)A8*#^x5bs4Z9}$vY@tNM`bJ|XO<;S%&_iO5$m4w>Rua!+nNs@zH zNZ~YGG%8=^gi3iJq2F7-OWo$JeizxX{=lN91!vr+!rt||UKZD@Jd;DYYUE844eZ5_ zC0jWjBJFC;E@iTV~J+21cEzsJGN-lK7%n;C2qO4FQ@tZT^Fmyg>sa#JD@`lUG`* zCXuh2*knQM)9s=yS?$uD6zSIT>8RlN&hhyR*^F zO+q0*&1MnWNmuv1=Z?JjQ;bz0VEBHaSjQDD*NXLlL(&_CVqTf4fx60{#Kqrq!pR!< z&AHfKm*;u#F%}ExfAV@bssP@T9hhwa7d69|35iaQE2`Dj1yv2E4 zEaM9Z&Y!$_M!##>=;gzRswbiOLC*Sl5cw9K+p#7;fsnD&x1$d(*MWxQ3}i3FF9}<< ze5<;uRqPE4o=O-(c*n2w9&-3FMs&P(Yo#*XyKYG41de;W+Zb?&Mls3XelXhqt+3FR zOV*)Vasl`VF&{#Q0Y+hHQ51&*ftU2Udee%K?==87=(SVp^~QC}>*uxINt*0m9<$#W zl-H)w5g&4Wq#B#eW^1h0%InQzJj*vMbs7Zp)8+wl2dc86>Yc!KaMO;~{J5f4zwvX>+OA!9Tz> zo?ost(I*8TcX5ZspRTmdH^S&myVP?0RzE&RFby4s6#~P1jmyUeCcd6rA(|dFt z-fWBe;Z*Z>(Qdqs;~fq@iU++M^pf56X(LqG27NhcUN$pIA+APdQ{ZEcg_JW&I=M8^ zL>Cff3&+nGN9M;EKevShY)-;{9hL5j@Rbm!X8xQlPKi-Pea&ZykF8?HCLb{VnsE7P z)wt}GMEqVUX)YDesj5|Ut|m3OsIB2{scs-43GsiYZ6Pkqm#uqDhR>j$=q?hitX$bB zJXhwd_35Z1{p((fOJ_FXBtk0hGRcpQ#oVWx8*#a6^xTcv#T|v?o+{+Cz11{zI0{K% z+CIhaH~S^3&hjI9e3ey}C3|0Mo!Pg|mR?e6lgI-RW0qQ;5}d<1a4`F>=(jzacCXG+ z%6F$t+;wK$rJvuEroW*gdg@bFx%OqDHM=fvw?+rE{@kXG$v(!0O994jdc_ZlCi`jh z>|~HFIR&}NsSU9yud;EEohjw&(F;+gJxULkPmhffF4TTSxH$Ba-!YqbWeTT)@+o%e z1NWKP)48{hPN&SU>SpO(zQxC8F_6`Bd?WFqvUsO{o76-K{-$(cJ9RM^Q2_nU~>?m#+OAjr$i^7fCD_ zfMQA_xkE5DB_BTE@vdZ8x>ZWa-j>47ln>1`R5oG4|K8>kVajuuUfy-AaB8DxDuwyE z^!ktet^3~ZbM0O0(fTF4RM4B!aFccO!_oB*1vvNK;z3?Jg|(%rsb7OqfaQO_!5z1O z!WC+D&zqJXuf(FfZY*o#s70-St9gu{; zk7f18V=uF~;R?#*KKtDp?^@dNvhH0T1m|9w_ll3%C3dYV$= z0X{QKKI#%W-4_hT!2(MbPxr>!9wcKL2 z(W2uYRyzMWhspaBmzmF!i;tE^^WE^#XEF1y@Odsr=HG9`ZnVd~M&g4Un?Ujmjg@y= zCGVW0f%xNc%J+m5u+f)S47U~xE4d73h;{GNN(*z(sE5b^T}uTo(7)I`liuO2FL`=i zIL%EtV0hu1(~KnHoP2nE-#dxJ;^wTuqp9$rvBJvwg|dmvny&~aIbQFoW?8%y=Ccx( z9WJq_zU~|H0Wc+XqOha}^eaHe0n?kcLGdB_ymzHjUQLbOb;pgahK;V`U6-mTCo?WA zXD3OeEGjHD^&H*&adc9`P>O>aJubU2>8XzSl%t7z*DntXdwCe$T3u0?(O7k3%X@5`rq8tTcXpKT;iZfGm}|s-=XRixBwqkMx6|0m4Et9 zpXFqblUOKoo?DuMB650TKG>z0O={p!LwJ->aA;LijBDkny`9fmr@VV;W7i|(Bf&&^ zK(B29EF&TQd~RMz%Hn*KYfJUkn$MQq&qEL#@~c3Sz5Y(~#+S79%gBezG`fTKdvCP* zz?p9E(Z}PQ|Es<4j%q6Vza0?lfFg=WRYbr73J5}gV8syu6-T6tN|Rob5C|d)iWCdI zD@tHQKq5*Hiu4jOB2q#RArJ^XB#`8t%ZxL;wZ4D8^}g@-7XIT};ojulbI(0zpS|~I zpS+Thq``W^DT3Z3ax_ajonPGf{tG_q#m}OG$9prLLJpO|u7Wbsgj>kDWbuVt@P%87 zZX%ZuIvwLST$V__!hJjiT`6BvWCP9l-%cU;0>Dd^zMieHP2i#LiKuUL7GXmtEAev% z_^Tp+yz5bT^73o=cpO+*F`A3;eaQ;1yaErHz=hagF3JN_LrF=S3S^RdXu+<%9Ak`` zd48)5BNJ7w4FwW4YDgUr!{*n_tA~^V7!+hU4RW7uQU)I@OW9u?0?K9hv*NUo?#hYo zP&X@WH8mrH$Fl04dn~L(tJe$AQ0^`n3=dt)&EA^B-HqrB zx2azuu|8t{CH{Pi=VeB(!p5YMEHnah zt3CM~z8;7B63=lx9?Du=rfv1lre>g^^x0sujVE5aLZxjGr90^V=)`df1bzHLLZ4~R zZkfE3+2c2{hbIen5{Qqsi!aJI4NsW|F(ep^$NwD5Z0Y02>M=$ALT zfO?T}Spd=pW%=Vsp0*Qh=RRD_1oJYeL+def227Wtlu{{>oZdrudf2g;}Rf(pR5%0 z{yMP>$VX1z3-41`k<`JU&jo9*2b1fsulxERuk0^N?5Y#hfmYL%qT>os?XOR7WB^DY z6CM2TrGny3u&f@TIRTI5KcB7x7rPF%!gBrnDKIi_PE&UzeJa%~k@jBlfTO7DOwj9@JgL`Au{I2M$Tm3Rp>~ zV0~x|4G-VIqBTm){hAJE3D1QAi8T{x<=t}JX{a_5cPE?-b!Sk3+yqK+Jk-3`4FIJk z;~lT5HOj7(Q9-Y`v6MD-U;Y(Eo1%Gk8rNTMvU_jT*fM}wcILoc#j3Gcu7T*nvq$DZ z6`2#$OJ4TyX2Kb$1OF=1+U8iGXEvn`(8cfh$eKeV=Kes~^kL6;U{CnZXavn_P)T$Q zLJPQAi4YGz7Xn`l@g6FgZ-KLk@Ye>)6>5?otb$EV=QvqZe_aWualCssy=Bi6K2RvP zlB#ik7*KD|^&Y^WdknOAJK-w+EJf~6+R+@-mVS}_tfHzA>&gx69*$wD4`gv*YVjU4k z4|J${RAkpXnnEie*6LnE*T&xUdL`^b4HRjmt>1qVRH?}v6%5A0*;HySuJuCDa$OLl z1$Z?dhGtojng(Lp!uz>}k9eI_VAHH=%UE0{ftjBQmWmU{h-acFx<6ufQ?QsZ>^ErA z9?Wh6M*eSd@s`ih7Qe{vV!vrB8)AKZDJjh!)n95=4NuyjGkTJ0M)1FO841yFHY|wB znQL~?RfX7ih4A>^n^+h9FAGpAM8)V?<%65k;Y&F9p_@^e=9foF6kUd56ms5bR8mLO z*#l%X?3`X9$Nd{k(yo-hOg)ANi9YY#JXw$iskaWiWdi5#9RLIU4GG@MH0^#KAqD%L z9gI0Y&#U{wpP#reozzi&AduN)V+6&_5+U(MMBjW+q)_3`OPeAzF}e4urMQUxotveA zxDPS{*_KOnfRCnDOLIK@+uvCKk(#^UEh6A~&{||Og#E7ceAdb{4$qVWlEYHC^V64a zJ;O>dq}g=t^5Dix5;`AatL)AyF)UB7RS?2{+w_qWMx5ra-)DO`E_@O9kF z?YDjxJDh3xec#=lgPYHYTz%Ouw@(4Vzw?aYeT926dp9#@<{a`X0{s}Y$?ggYTppjN z<$!Qt1ybPnk63K_WLjF#gyc}%p|+Ym!X7Lb3U&m^DOH2w3JhEis_!6j*SjTDL_s$u%9ENbN8R`VYVVB zlZQp}s4;a-R8MTGU)NloAr}LlWOp9|&`EaHs8Grik9Tb`gz*$$0Td^-Lp2)g2~Cz- zs-N@GNy_$U4Qe?jRl1=Abl@vPEE+m!H|s z?e1OpAW$X|B}l&dcKTePQ76=^+R5L3QYnxE5~Z{7Q)!km+H8cM@+r=)67O5AU3br* z5<&U%P2Sje(^(PqB(F10Ckj<7f{?u>j-Qctj_+nQik2rqu;@k+A75Jg9_4n(f@2UI zkO3zG=R?Ox6XjxP5R=yYDGQ|d4vpKRdWNJrf`T1&Vcyi&@e5p)>dX3)?c|4bx1^VT zP6DdI1>hr7%i*dfBnv zEU_qEfuJQoIr8w%gPz2?^$Pf%H@X<~gRi{KwPiJH3u=D^D=OB4X5q6Zo&{7W$dm^+ zoPDA4s~R?w?DfOcCeW8#lfk_5bs18~Ck;=+5p_TGnHax?(*?Obuf!mvEN z1iw6MukY#Se?~EoV0$#LjSfvp1zNnkgt3U&3jjV9ysp{;VwE}J&e52;%q0UOAyo?6 z-w4j0!mC?hp(j{+&rh)*# zp3EPMOOgTuErY#3mmE_T@R2|QN#wqLc--?n8p#NykQNqVr3-xD3A(`F?~#jzOni9d z=*!2YmYRo64<@H|#S-gPtWf0G5o_6~)%R32)$5NUzPNxeqb$C}iHlI& zXi(y~1c?cB-x1EK&6-|u$82F*ffR?m98&NnSl~jT}y6alQHsCkQfyUR2nv-?;qcpTq2vFzr`Da+2pl{Q)#H{q4T^=K1?mcfmMaYdp zKgcH-40fIoiF<1S0f&A8`mTHW?r`)PIReEz~k?>#)pi2$4UI& zpy*U59TdP#g>6zPxn3nnN7hY>5s>G&4>C?K-Nyz98ApBD|NT|y1|a@hDG8*~iNBXE zr^ytNWK}mgY_cyIv#2zn2qKEBr##q%fZhXr)84>KmbX-y;j20^7){zk8+@S#?FABi z3XB6UK3&=ju2OwRJ>pvgKK_8H%n9!D?2^H0%FNeI$39lhztwQ=?MqW0X>LnMxe#a4 zt%P5m;Vf(bvjz!Tvgro&0P#jABU)kr1r}D_A5lO9`D$}XMpZ5*1?Vq<-GFt`-SEDf z7J9!B(rp5}zZZ7KR6XAlM(62rsZ8yuv@r{13FDi zevhSpMM0E5`?K=$DF&EOad7|l>eUf=+K(Hx!airAHxVr(GezSm3ru}q8~|x;zD!Hw$|ZTzTd=Y0 zOx9zC;hUQQ>kh%5u)9^NVJ~%8E*iQoVBA*hf5|TwcJ?y#cksK=hs}FsrkY=5gA$K_ zKD)4aqxRZSQ0uI<#IJs`))H$iu{KVujhJh5$J(s0h7{H?(;9mGe*_^T6XvIZTYKyY zJQEZhy<4JlIrI@NT{hKNgYhDyU34*>%S_MvT<8Jflzq%TSYWlKi37?WCk`v`v_^z+ zpACxT-Mc%#@Ivyntl&g-Uw{;wHJ(qeoQ2`NiShwqu$~uX-K5DMB!~f%0?H<^B9x?~ ztI8qCyWPsOW+!{1gd2~c#tSAm6c5ZaDbt~?YZyVjWF-U@;&1(n$L|7mkihL(vBJT* zu-@sYNq6podzmtKMwwnYc&PFvlrmigN~AKE!0PU^?}Xq&z>gMf=Fl5F>rEMbsgiDi za8~D?{h5!Me^UnWrQ;l+@%{-F=asIkUqNMFN2>1+Gg1yVtt+sX64+bnM}!OifLIq_ z$n;(M5zn3=L7Y4kd`RjDXz7?EP!n!NQCAlJaUaXc?{n~oy;DCvRu(Nmq^*EO@8GVF zqq-DtU93$UZmT^r%}6XCzFZBrEMw*&DxBd)&KeOICa|7%L4-cF>jxr1sFa`RvRp&H_ObL21b7B{FxF^hS!R^h9joL>&SD*)vN`jRQN4T#ENI)v zk+b!((KI*jafgsVQvjo9Qe>N zjIz4dE=!EVcvSxGtc2U_B_Q(VHq9iFIXK;M9IL}BuH!I+QBKi$8?vE*KWNfEa6zDN zN`O>gT@K1(S@V>0a)RUUa>FJAC@_SXw7XiQbG_FTU{`LFTr6~IOU1a1XqR=`qbG&T z%ba_H+{yuA(+3fY&Wz|FCZtAVV6q>{6;J`FbRWs}4};#O8Ld{8l=%QD$_*mmlJN*2 zQgFYLeN*TCti@41wiRrCn<;+w($`NcPp&o~!L*|`Opt+L`(pgI!c;}^Vfge8c$<5F zG=*@E_*K7G`(u*uu22;AP{IqVQ|CrdGtbj|?2HGI{=i<_PVO_XIqyL;`jrL1`i8l6 za9|85FF(5u!%(`;ksL-m)M>}v8pCCRY2d**bdb{E9MGrBxeTa_l0Zr1H!FYY>twfW z4%JIe#%OcKpeP<`1%HQZvgj@J>(&S)YWTwEP2lZv%L!e4g}hwIif#yN_-TJ(YOxHz zR5l4Bcxa{zr$Y|w4=qsLaf-IK+H{{p$u2w1#U}i66XvvYvFl=@%p7DAXXBw}p^rDT zhT3ZVoE01C9;Nuut^6cz%X*cD!Sc(rjjRdGc#SXRC*5~_#?dOdY&yJuFK%yQ5VXZn zpZ>kTfUwBeb$g0!{er18Wo_$jSHn$CIrFmK)k&4Lxv-V`dmgvj_E53A(M`t4|2&vmiRZIQwr`!avenrn2 zLf+^F*i_+j=S)gW;^5QNJmP%No%3*Jyzi+WT+gPc--w008< zeKxwbUnp?&bcfCth=Rt@FGX=KVreffMiL9WfmKy<+Y_%>w9C={SMkBeChGcJc~Po+ zIELs8UxA}!@iDap$4M=C-eG*N3V9)+zIS0dMq?bZzfO7$J5Ex8xy%7C@5!={ueeXt zs22hhD@oi z;a$|Cu;mL`d$sckw3zzP94BACP&*hLYZ7(yHe1(TO`^zyG> zj8wv!-%hLqn>cne5=^$voQs)?Rdg-v*@{&k7HOQ8YQi$);K?NOIEYuGosT* zmCh!eUbCm<6WBjTe4i8H--4_~A#)Om&b|omynfya$jgBpr7dYwivlJ_w_4hQQ;eRb z?srn9nMnqOne=)kB|FjiD}h1keUoBYqDrgg%ctbPjc-eixJ6__uKc&K*u&$kwA_ZAQ8Q7yMwYz(2Mt)b=7cv3VYH*ksPS!XjyFs$;a^a!1blbI9{46PXuLm1fa>U|tyKwg!1NXjjKf7T$sqb-2>PCV}9&GHma=!!>1tf${_bH*sS+kgF@p_LX2{dq+g`u^in@JPI!^3!ZBKO4lVdK6Sb9K~+)2zv7{H4--3k1h^ zp+G>~)@)MU+@9!{AgFGvzFhm_kUPg_{tug?1!m-XLbA=+?)2KYJ)s)kw11qS4bxL< z{pSqDpHy!jDA$aFKaV>aOBpv*H4noyo}j43-v60f7pmAaimb4ma zC3uWkj}TN6BCBj2On-c`nUS;k1{Eb+>0;v*VLXrnnuFj@L{^;}(x`APiyeN5GRkbJ zT}Ix~xvBfsfyF2&kCgUa)S+uu$C%UzpC3uMa@x;_jB7D-cd&w8G;W2x47Sh;%P^V>+PtrN>BHhTSueeZMXrYWvoW2ddPy^YPb55Lc| zWr5Nn&N`(FM|UF0Zxy~a&89vK=kt-8Qg(_*nY?gF# zhA>{{MC1dU`j8MI%>QnbqPdXO`*;87O?8>%8 zY4rTo9R*=WpLJY|s%+MgD~^Z`wb#+HcBgpO5$&ZmX=$3s_g$;k zW>a5Z?lg8=W$#9A$4k7eJuyc*0s)`oL6o3 zKc+7jrU-*mx)P7iC8lc@rd6q298%pjj=x)-donFaGuU0iNUa?@!yzb~@V3F58FR?bIRa_QTDy6m9`w`y5GGK!TAAMyv)s?HBg+;+ zU0D3c28$mzpGMZ~t%``gD)_=B`#wpWLAvBjpO6-g>L9@xGV8FgR! z3si%F^*4={a9MrBnc5Q-SaM-GzT>HWfhf*&MEEPp9rZk{%)$_OXX1 z^2IjIMI!>Q>RKGQtU8_^mx(aT7ub8V#~sr*i9Q{dlhT@!|Gqwk5t`Dj!bp@vad+QI zP5TgM((YALN{ymKoV<4(nCI`mOR?5rr#RabbL~a9A?@W!)?pS8V#|L^0|kCka}t!u zJdxwt{tLVg%5~?6bEjK6->3*2AM&f-c|Ei{Ya*;0!SW8c?F38zV-H=f<(47i99ea1 z$puT@zUOqIuKE);=TIC&(|b+HGawe|{p9hChyjw4XavXh?BMXWg$g< zt?VI2w391JO7mu1T}xqF!3omz)4KE0%)B(0?uh)k52$*3JU z{T6j{q|eMDwP^C-6>*&#*Oc6gsdwy>4NG3lFBTGqn6=UwEfbn&UEfrx3dmZtz%VHx z>@*Y4P$yQ&%YlVyf-U)Y&xbY*Ny_&$2{IEZWaWHM&%NkX(r4N3`g7>{0(@2#PD}-L z&f?bA$k9GR>Xr!8^`(}7*YM3`X@zw z4gNGoi6ljF=OKX)E*lR-$QO^)w=Q}sUdz>~reWm&ucFfqhYm9Cw zriz`it4JU#b@L9nM!oHFqf}0#o9*>ya3QkXnMKW+n>I`jNeM|iqXY*Ph6B@ z&3jket-|%*B5)ep9!!T#F=)Z={u$Izht@-+F||x;{Mpu`lgBH=uSJy)XB*t>IcIWB zaHyJEl0@?1PwiKiINn(6mv=WdsBbZ{?55RWRemWG5Ygc3IP0Y<2ZnEp#l0b=5 zbk9Yx1@b?Y2alldhf<#D#RxPx!7bYRE17&=PMs~hOXs4!Ku7IN5cfM{Cz&EC$&6PN z4=lNJO?@&{@sm}*m|7gSvk<4EKRRpn)3))CYhkHRG<6Q)g>LCIdn*KG_0sgDbWbPU zRdGR zRgR^If-;#7^@J?r1McVH+*vr@&)aB&GxO4*xxNNlC2#LXungz27AJl24rHy$7{5xK zf_rv#OjXRAh6+%yw8zbyp^Ba&+6TN{A_bhlSYbH|az`<^7VC;rh1$`CAOc&{@Q6(UEYCLq4#&v{E|+_E&wVHK*#D{M z0S3g*8)bk*`N5y`&R?B1qlugLM{gV(VlG$i;ng&dyOpFkj=kU6^1~!-OpGkjw>M%q z`#UnQtUGC@_Zi_uB$m3Qe|Y9~MYUk@bU9PU*5#+uaR8_!#yrZ>XE$xso;Az6XpE|6 z=7GBYB7g5cI~V~3hQw4Vyz^31JW^2lvtdXboHOk_VII_g`k*vu-3gN`!^ zF*{soY3*<6zHo0iyX7dk-e{7r-mTJsf&eu`9jRl_nT5|9om__q$6bA|I*)b}+PBvu zql^uk(uS#wqr(E4@qSVZ7e_kD*$r*_(mLHcQqvA`0J%1QH?k^aEbg&OME>OSewA`f zYyyp^xiD2$UGumsTA>b$w@ag)m9P;|$e-}+Z`97};ti{wc}70!u=%!5GFb;JWT?^a zW#cC8E)pHj=*oOmnxhw`6|K?b{e2K}#`%0W%|iSL8&dsUeTz)DqDqtNk56Wz(Mt{f z=wjp*R)bSgNw`~7GsWvW6CJ?v8EK$;lmu!U60VE&Q5Yz&tFe0YP~*H8*usjD?p*>I zv$|#(qrK=b3aCn;iCRv0Fk6e2a3 zfvG;?{&LgNA;lMt<)$#oJ&LzL;uVC_=~OCI#emm8CVpR2Qb|8JRPj*uY2OP2mqOBK zH{Tvoba!JmU&|^#NvD^|qTjnLjI14yL$k2b=8{1id3{&mW$#i;*7<@a@5IWdBUiAUXh(C&V8A8(UMyy9 zYL@4{=Q78xq}L^p;Orhn2+VCgFO7*EX$(NoB|q#a+@4NGE#?x8(mh!XQ4Jx6B{Efh z(z5fz^{sQb`VHua?KXC z_bq`$N$DY7wr(`Aqd+bDOd}cc*a_`q{uY$w@~Q&ZaC@dohGA}%OJ#U;^^&<;bMI)t zBS)oA>_*edLi$1dJL+1Jiqa<_pEh|iLbdfe<4Gru`%<(bdns6YF&Gow=;3fJMf|Py z4xgEnx))B4LzFvPh7D!Kt<5l@0tGauCaFq7?jvywGu`is834|`*HYQXGcz*o z01LThJv2;{6iDKjmZp30+&z?6{8DJgkWOu9$TO2JFEs^a+Uu-xv&w#c!imG;U@$EA(mSeEmVTIkD4(prdnTv4=LBFcj^q#VRZLTYYT1hwl~n@;<+qtl;|KeWJbR+6dn$2z zeOm)xs^xbX{Xeigc#cAjhiowIM6>_l^nu2h%r>+2wb*B_-`$kmoBTPW$wn4wnBT{Y z?$pmD$*P(4*;AbJ6iPc|$S{Ye!+$1fuCpt*idEmFL6!GoVlqG$N7I&`!K~m#yz|fz zE>h}6fu40t=h3FkhtQJ3$ikCF9VWdBvz-rUk{1O~ApE}1+<#n`nbih~GUZwoVa;GGa zMGIc42C0d|bY`NR4s363h!EbcT~(`C??*RE@^@jEu(Z3bc zU}0WZx2yHb+h>27OCS%{4K#S_3n|Sjj<&y!tlA7LS%*$IURWJkwRYHlY!J5vZ>S=K z1Qj+QAonF=sk^VT8*G`z07^|M8f;V^}jwY+XPRwseW#QM|T)lE8L{_-ZS z+~aj~y?!%u0XE!&M*?~oq2@PTq%_TLU%v27c2;S}nD^w7)4N?q6HnM!HU zCao5;Nzh)Ie|KJMfJD%86)&T`!REg{_yuSD2fKMn8ahu|igcwu^&dMy*o7*_l*B>i zPIM0>H<56FJDhAhluv`oS0_O`+aW+C0fLeqgn`Dbw?A>0p^bi5e2Y~rXZ89^N+RYW z2(yrY8Kpf_FNXdO1qJ@)YYesnR&hJac@UBJ>oYwbz;7rX-FV^OXQg*Tj3?MZ%(P-v zUEC!-z5cbMpk`caiC>*(ttHl4Vr`sQ8Cusy%wH4AT1)(Y+!Fl{d5C2%u6UeUYIbnw+BKkh@2=nkfW`2 z2g>*T8+>H^uGjB0NL(Eo+XzZ{$ZeO!f58)Qs3G`hNBZiR*Q>j>ArD4Jb^QfuRt|L( z-iAzCR9m$)$SAy9WrFhg4niD$eVN|#yH&(5*wy*7u>it0W@f7YLP+4yB!H0)=tlkv z6Srj_mYKRLC0PWO6#xBYU-!#QsZBer3dYs5165fwquEek{x7(70DSbwcy*BNK~TOD ztFQ0+_Yu&cY5*A;2JBfWi23W(OJ;igYfZJ*RG_=9^(yFPT6+PZac6C;0>seTunx@; zYcn92iG$a`0>nqGfd%kJtbv6!u<$oFUjqwkVBxQI)EZb=S&OcLh5rs%h|0F?F>(fB z!hJ@`31HK+L0;>Qnhobse13}kMHL1oS~hO``40Faiw8o*5j_{cma_j68o75tGRCzV zPh!AEXn%L+yH%5bnIM%o{coD+MxcovJ%8a}RZi~)0?1yIJ?~fTnsS35oVj!Nez{eO zP5}&vJP0@QRis7%FF14a)@Q=2xR0Nyz;gxDc>C|AZM)6`&g5VJ`=eFYOEUseT59sO zRUd&{sKW7vygIY$zWn4tHc6}Dp;aGU1Im(F@X0Ite%&Ux-?AOskbab`e}yX^-a{bO zB)3XN@##O!@mnxylf=6+`{Nc+LC*0lCgAW2X#bf~kjYO!Up?-xZ)ty^fWljbvcjIv zpU{y$D0KdYJ}=l(Y%pphUmGX8#>A}A3s6s7Lkw$(VGS{?8oJjI!+!@ctZ5NzkbMoZ z{{n|={2nwU|9AMk(H^Y!Z@-Cs|NYF#t7{tSn%ulbwy%sz|DBg{?FC$W0sqgwfK}UL zA9p*sE`c4jop#Lbkhx@8HD0>-n__g85`Xyz#3rm54=-$2ag6{lg%3qpIQ`>$fpGE8 zZ5|i8|3}e88@0>4i7V;Ff6-Xr7PcY(3+$SHu3luf()8Gy{N9Cfd$4~XogX}b4v>Zv zq%TDCt&mkx-SN{qm{gu;@~UGYO(=H5{sP%xkb~{1KWm!SxqZ#5v?l*UM8(?r{Qu(m zoSR=!R`=*nfsEgl_c`9n<2fCnwqIS{ud6_ipK-%SV3KEx)kAni>Z8bOg?ug#x8n^e zIe*G~wzdR1)-lM<-pyZjgsntsLqku7SyjK2oBnFM;Xa-a`9bg19!Pth5NwHL=PJhi zA>Y=thXmVS3nS14lK8i#jriSOWu}x7K8oC@8@7tNcieRpnbiGswIT6*RsW+!iPbL2 zwF_Enp?@T%wLY}=migC+!4k#WucX-u+=>>*a4WD)Y z+#L_^Yu@$7PRDMp(m$VU*{xmjLVVT0tFZGZ^1|cok5`F~mR0=?0;E-d82s8N6Z44c ztN8O_@YQak>sS5!1u$NJyZL36CMzR)6zO$ZV^z`XrGq!7Vs^>yT6K*jcRxKBFa2lw z01xE~m>k~kez)ox>%mv|d=*&r^D&!uYrn2}xJoD1Q@SxV9P0M3e_b!*YE}PQ6RkDT zua3Odi`HJW|8ZjxZP>Ip__yGqjRCAVr*aJ2zZ}hQ3t-OJ1#mfmme$sJWGXrhY)Ezf zhO@IXZE`Y-&1QT0_^736qf{nIWglOtRUYBtHQ4d9w77UGKlXLe0p(zUjpe9W`|<#$ zS4wJXB-dJ_Hd-1Ukt#6PZy|jBO_iGehmRlYBE>aodwYA43$#w;^5V3)rZ(7}hND;2 z&s=vnD5lDsUl+4{A}Tt%t|Q+jKeW|c68gIqpP!#!Z7K{=OQlkgQ~f9P6%>K_VCR&o zc2WDra~b;m?QcwnfM2NA$XM>#w(CVzbMR)O^S8OKVQ2#K=3P%nc~ZA&+ip5YPxcoV z-wfuL_Zu&|zhzGioHmfq1bf>6#2?>l^i{;Z55Xb$CK3jFe?X@CPJoj@pjhX9!oI zK|i0oE5Z6Ph>g}UGBQ$^tYOIO-QWRN#Ct*bX;l{gWFH=GU5-2^C@5I_*5YIB{CG#$ z$7e33JNweBO8K%nQk+IF=AT5+dnF0!aKvTz#dzGEl6hv1u9``kz)T+3ojSZ~nrz;LDOt~vU*K;J+Dex ZMmqX{tXZt^Z{XkWXN}I}ow{-Fe*r6gwaowk literal 0 HcmV?d00001 diff --git a/assets/svg/32/arrow_back.svg b/assets/svg/32/arrow_back.svg new file mode 100644 index 0000000..3868f24 --- /dev/null +++ b/assets/svg/32/arrow_back.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/32/settings.svg b/assets/svg/32/settings.svg new file mode 100644 index 0000000..eefa7dc --- /dev/null +++ b/assets/svg/32/settings.svg @@ -0,0 +1,3 @@ + + + diff --git a/lib/src/mobile_ui/32/circle_tab_indicator.dart b/lib/src/mobile_ui/32/circle_tab_indicator.dart new file mode 100644 index 0000000..b5b88b3 --- /dev/null +++ b/lib/src/mobile_ui/32/circle_tab_indicator.dart @@ -0,0 +1,32 @@ +import 'package:flutter/material.dart'; + +/// Nice reads +/// https://medium.com/swlh/flutter-custom-tab-indicator-for-tabbar-d72bbc6c9d0c +/// https://medium.com/flutter-community/flutter-custom-decoration-eba31253be0b + +class CircleTabIndicator extends Decoration { + final BoxPainter _painter; + + CircleTabIndicator({required Color color, required double radius}) + : _painter = _CirclePainter(color, radius); + + @override + BoxPainter createBoxPainter([VoidCallback? onChanged]) => _painter; +} + +class _CirclePainter extends BoxPainter { + final Paint _paint; + final double radius; + + _CirclePainter(Color color, this.radius) + : _paint = Paint() + ..color = color + ..isAntiAlias = true; + + @override + void paint(Canvas canvas, Offset offset, ImageConfiguration cfg) { + final Offset circleOffset = + offset + Offset(cfg.size!.width / 2, cfg.size!.height - radius - 5); + canvas.drawCircle(circleOffset, radius, _paint); + } +} diff --git a/lib/src/mobile_ui/32/page_32.dart b/lib/src/mobile_ui/32/page_32.dart index db0e08b..feb289f 100644 --- a/lib/src/mobile_ui/32/page_32.dart +++ b/lib/src/mobile_ui/32/page_32.dart @@ -1,4 +1,11 @@ import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:get_it/get_it.dart'; +import 'package:google_fonts/google_fonts.dart'; + +import '../../navigation/navigation_service.dart'; +import 'circle_tab_indicator.dart'; class Page32 extends StatefulWidget { const Page32({Key? key}) : super(key: key); @@ -7,9 +14,210 @@ class Page32 extends StatefulWidget { State createState() => _Page32State(); } -class _Page32State extends State { +class _Page32State extends State with SingleTickerProviderStateMixin { + late TabController _tabController; + static List myTabs = [ + Tab( + text: "PHOTOS", + ), + Tab( + text: 'PHOTOS', + ), + Tab( + text: 'POSTS', + ), + Tab( + text: 'FRIENDS', + ), + ]; + + @override + void initState() { + super.initState(); + _tabController = TabController(vsync: this, length: myTabs.length); + } + + @override + void dispose() { + _tabController.dispose(); + super.dispose(); + } + @override Widget build(BuildContext context) { - return Container(); + return Scaffold( + body: SafeArea( + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 24.w, vertical: 20.h), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + GestureDetector( + onTap: () { + GetIt.I.get().back(); + }, + child: SvgPicture.asset( + "assets/svg/32/arrow_back.svg", + width: 24.w, + height: 24.w, + ), + ), + GestureDetector( + onTap: () { + GetIt.I.get().back(); + }, + child: SvgPicture.asset( + "assets/svg/32/settings.svg", + width: 24.w, + height: 24.w, + ), + ) + ], + ), + SizedBox( + height: 43.h, + ), + Container( + width: 150.w, + height: 150.w, + decoration: BoxDecoration( + color: Color(0xffC4C4C4), + borderRadius: BorderRadius.circular(150.w), + ), + ), + SizedBox( + height: 12.h, + ), + Text( + "John Doe", + style: GoogleFonts.workSans( + textStyle: TextStyle( + fontSize: 24.sp, + color: Colors.black, + fontStyle: FontStyle.normal, + fontWeight: FontWeight.w600, + ), + ), + ), + SizedBox( + height: 10.h, + ), + Text( + "Designer", + style: GoogleFonts.workSans( + textStyle: TextStyle( + fontSize: 12.sp, + color: Colors.black, + fontStyle: FontStyle.normal, + fontWeight: FontWeight.w400, + ), + ), + ), + SizedBox( + height: 58.h, + ), + TabBar( + indicator: CircleTabIndicator(color: Colors.black, radius: 3), + labelColor: Colors.black, + labelStyle: GoogleFonts.workSans( + textStyle: TextStyle( + fontSize: 12.sp, + color: Colors.black, + fontStyle: FontStyle.normal, + fontWeight: FontWeight.w600, + ), + ), + unselectedLabelColor: Color(0xffA8A8A8), + unselectedLabelStyle: GoogleFonts.workSans( + textStyle: TextStyle( + fontSize: 12.sp, + color: Color(0xffA8A8A8), + fontStyle: FontStyle.normal, + fontWeight: FontWeight.w600, + ), + ), + controller: _tabController, + tabs: myTabs.map((e) => e).toList()), + SizedBox( + height: 48.h, + ), + Expanded( + child: TabBarView( + controller: _tabController, + children: [ + GridView.builder( + shrinkWrap: true, + itemCount: 30, + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 3, + mainAxisSpacing: 8.h, + crossAxisSpacing: 6.w, + ), + itemBuilder: (c, i) { + return Container( + height: 110.h, + color: Color(0xffC4C4C4), + ); + }, + ), + GridView.builder( + shrinkWrap: true, + itemCount: 30, + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 3, + mainAxisSpacing: 8.h, + crossAxisSpacing: 6.w, + ), + itemBuilder: (c, i) { + return Container( + height: 110.h, + color: Color(0xffC4C4C4), + ); + }, + ), + GridView.builder( + shrinkWrap: true, + itemCount: 30, + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 3, + mainAxisSpacing: 8.h, + crossAxisSpacing: 6.w, + ), + itemBuilder: (c, i) { + return Container( + height: 110.h, + color: Color(0xffC4C4C4), + ); + }, + ), + GridView.builder( + shrinkWrap: true, + itemCount: 30, + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 3, + mainAxisSpacing: 8.h, + crossAxisSpacing: 6.w, + ), + itemBuilder: (c, i) { + return Container( + height: 110.h, + color: Color(0xffC4C4C4), + ); + }, + ) + ], + ), + ) + ], + ), + ), + ), + ); } } + +/// Nice read +/// https://medium.com/swlh/flutter-custom-tab-indicator-for-tabbar-d72bbc6c9d0c +/// https://medium.com/flutter-community/flutter-custom-decoration-eba31253be0b diff --git a/pubspec.yaml b/pubspec.yaml index 1a991a0..e1b7771 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -89,6 +89,8 @@ flutter: - assets/svg/18/ - assets/svg/19/ - assets/svg/21/ + - assets/svg/32/ +