From 29609081093c75e70df670432ffa3e52c5fd1ae6 Mon Sep 17 00:00:00 2001 From: elhombretecla Date: Wed, 28 Oct 2020 12:11:25 +0100 Subject: [PATCH 01/48] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index dff4de3838..4fcbb7c0b4 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ # PENPOT # +We’re excited to share that Uxbox is now Penpot! We’re changing the name, but keeping the same project essence. Stay in the loop for more news comming early 2021. Alpha release is close! + ![PENPOT](https://raw.githubusercontent.com/penpot/penpot/develop/docs/screenshot.png) @@ -18,8 +20,6 @@ currently at an early development stage but we are working hard to bring you the beta version as soon as possible. Follow the project progress in Twitter or Github and stay tuned! -[See SVG specification](https://www.w3.org/Graphics/SVG/) - ## SVG based ## @@ -27,6 +27,7 @@ Penpot works with SVG, a standard format, for all your designs and prototypes . This means that all your stuff in Penpot is portable and editable in many other vector tools and easy to use on the web. +[See SVG specification](https://www.w3.org/Graphics/SVG/) ## Contributing ## From 25686eeba182455168bc107a2e21e9dc3ba899e3 Mon Sep 17 00:00:00 2001 From: elhombretecla Date: Wed, 28 Oct 2020 15:10:03 +0100 Subject: [PATCH 02/48] :sparkles: New logo and bg at login --- .../resources/images/icons/uxbox-logo.svg | 2 +- frontend/resources/images/penpot-login.jpg | Bin 195319 -> 138421 bytes frontend/resources/images/penpot-login2.jpg | Bin 0 -> 195319 bytes .../resources/styles/main/layouts/login.scss | 7 ++++--- 4 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 frontend/resources/images/penpot-login2.jpg diff --git a/frontend/resources/images/icons/uxbox-logo.svg b/frontend/resources/images/icons/uxbox-logo.svg index 3f99aa09dc..4493b6d91f 100644 --- a/frontend/resources/images/icons/uxbox-logo.svg +++ b/frontend/resources/images/icons/uxbox-logo.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/frontend/resources/images/penpot-login.jpg b/frontend/resources/images/penpot-login.jpg index 3c9409fb5c8447f0ae8d6d178f26812daab6873f..dcc285b5f953adf4b6dcd44043f4e1a836c066f3 100644 GIT binary patch literal 138421 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

@5mHyY>ePCW+MNcwmj&Z!!;d0%K{13;>q4mc`i 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 JB4pVaiIKUK>uFlHs4Eg=**Z+hlZ6^-D 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 z


eNRuqeIEP{qs{#tC(Ul%jS_&=K%7cJZ?RCaxGAq`QIyH_^0lA$hrmD@y3h`(* zV7UZ+;)K{QuGX{-bFmX=%S1UNgBft7_lFB{{`EfodTqLq1D6K#TuY2evvitBgQUhW zaTQKU(U^tkKzZn*_$4`6sr6N{#NvtA=s`>7UUoIOWQ(J_DB-*;^$DiRfVb?8S#AXC z0LB~(FZ}7k1Pi?-GYD>NEM~26RuqA`T7EzAs-iM8>DqSD--AESJNEQnSL6J;2ZF80 zv8Ri_x%lwuvz>3&zv_GU&x!e0Zmj?N;`6;R$yeVrWsQp(`y#}1O$5vMBFXpVbV^sA4BO42pm9{f z5jGSxmqJtPjGcqTt{UD!Gmit27j>kNGoJWAj=(|2`WEzsdIa%elQCMTj>T7^Gl9Wt zBcB&*!jkyyF0kliY?7dh0ZTlV+XIt);)Fn-!7;bjW|)-!YnH!$k;KMXN2- zh6HF`#fG*hDLrA5sC-P^(o_bZp($BUx@b9alsef55;?Wrb&^XCB`TzTJ02Ax=TzJ? zDac?1`h&=2QBfMuho}S!fmlz`@I9C{c9;akwiJy;lMp=G?qBN9E5KuX|IGO&?&h-r z_;-X(+8IHSAQx@n^xW^G|P`{liZu`rb6HZ;M}a)9?3{&vO$Gy*yOj#D1xH z_?pBF4f_YniDS?5+q@yOVNFWJ^PgupCHd^?47{`Q_Q(9vFQ?Bx*g7xww<9A}IqIaE#6aI5o>rZeD;E(c@ZKXbKw9PK^g*QQR&>Sj2p2IE4Ypjk zG$>v-{Ye*r0qh_RpsnBLAC{eAd1wxe!R*8k!3ed(0zsI;4Ae^=+n-^~3Tx?q0{(Yr z^3NoR4SNaR(=hc?+f$gU?{ZZwYI8|m4j8`~R?!}Rx)Ev*tiLT-eB)X8g1q8gJCHYvCU}2E7Cr8X&@XMcythGXT7^s6 zF(cp4D=mESuU~rZ-G0CF;`-!@>XWxFSFMPtIgQTP+V<}G<)@Rce?^F!|Ha;W)iL$d zp2g3e>?yo(?QBfrHpE7Ny8eRjFRPckR!<-UkNSGXNZzE}Hzv9^5joRagKcPv`G z^`E!-fB$*&|NER+;dtK`epq|BG+yVCUzA_HWe)D%mw(QFMW&t#UU+iT$$t(d z|CYTac%bi4%7+8xX^saEW3f)@;6y;HX&!XI+gN3{tWh>g=Jc0B?*=CfTV-cL&s@R8 zxfZ@~DfD%bhp3Zw4By|#tsshBCC<9Nu zq9?<|;)V!Xn44vi9D8PVSP||}KySfHIjNTQlXFVw%BIzR|8Bh5bZp_hn)}6jtJb|a zhZ?!^;bO&K7e@Y!{faEh516wmaiY`6(iJ}+JN?I;$GdVrWjvE#ndLCfU)5Ti(|e}3 z|I4w8Go}j@4nG)wqHaQX>h|Kn(^;SAy_)&UcQsEJO#JSVyzaN|pvc)PAFRD|=JMp9VU=tnpg$E`?@!8N?-I#rpqma_#xsBi{^P?ouG(jQysz5-5oGK}BQ(dAFEJ(!w66 zx~vDPP!ncGH>8B3rJ>X{dNSLMWf-pj{g+LAjYw6J3g|%@4jaTPaXO=_tOuZ`{tA!@T=P0JE8ki?)AUB%|H@9}xlaOAK1=3GDZZ%^)~wnH!1zdm;Vz{GOv zS7h^YQu)AxQ+wVAmWDom#J{R|&wTU##&^r=mL7H7%eBp|ug>2kd@&N;`#E*r&bKMA z8r}`>ol<$>ME=;h^Z!2QX1cv1AqH^cJDn$`{JVO-lgEMemSbDT$=2492$}j!s_!ELV#WuIo;AlhuBN@oFW$QT+{s0YgLZvs`0`uw zg^Bl0{!=y{39yQwVn7W9IayS&cM@$*r7ba{T+IrJ7^b110^@pwH1SNM!B=w?I%{Q4 zM1do-tXa}T%C*Xw^+uYU9{_C&xcrzpnGA4H6D)Pxa_a-|a>7}L(uw$V`bwsKEGCt~ z&pfbgh9$Dj=x!P-@m@^yxw3(vPy=gcthRWbmYJn>Ybb{;I-bmGk@|8HJutV*oiwJq znoKS>`nr@eACyRP9MxnZ#>R*f(vn2;Je&_oF^X!HyQ>r-J}wX70S26d%>^Fj^1(^L z)8RA1f%V~vt0%3)>z>GA>5_ijOybJDyT2lLP9ES-=bfy2TS*$Z^6J!rUvKu5+&O(b zpYau0JwJGO&VmiU{PZyYz`&=QYgWHIJWiXM=l0q+<sMs%zwOT$vzqyzu8fFpo>=^FJ$JyDci6UW=d;uYf8IQJsDI?vi)pW>zrBC$ zx0cE6MYnyAL6o+0^4T9=eLB`RqS<=s{f4glE1SNZTXSN}8D`?E63&wuS-)k>+<7(k zeammGjvwEZ-)qeLhv2qha_zakN1u0{e?R^H;d_6!hlPbqFDou}-Esdw%~#~=>F9fF zp5H&$KQeAa`FY*Y>n{UeR(ziGIpZtBc#`tEIo|F=*}aI3%rNu7szruvQ0n7wo9Iz! zF6d^$SwaAuh`SgSW=Q)(G#6toX9H+LRPd-K2?QJz5P_&7O&ZmMQL28<%q%lz_%}ja zlEMMtK>ysohs9+`D^+|{v3(j zJofXUb6bzz{t%YGzrQ~+qTTDw^}9uGU5z`RA78M`wrSFuP|5K_#K&i_snwLo;N$y$yxKZ<$M>~|s9Wx@9T;;qBPP^x!1f{T+*9SpIodx@ewuji^k4JOZCZV@ z>REovSLE7uC*6{dUJa}N8Cpy3b6oZzdruepq>& z7SuJzHY%(^lw1OZImZ`P92Ou?1Uq{`O)v_SMXvBmdgcs6BzZ$&&l#cq6mjUYz{A@7c3M zAE$g;+PQZ^(B2UuD$+(J{?Ss0p5VKYEj|`2MePyF z{yebw$&**#FW);?^KtKyhR@XprOIA22zp%e=l7Q3OfhooXkR{$XCJOgFHRDNn$t$Gr&?QWR9VGkBos?q++&7 zcsNF{^kMLX#qp`kTg9hXoa^*# zY`;A6K~=oMMha=-V_3#-Qt0>U#|Wbl^i~(0%TM%e9&9T}@&Y5b|J+oE6sTY-bvy8n z+kMM9U{6rDRD1CZl7QgC+1e$DLN`r-HA;e~GIHeNx+HUa)yjpr*BY+;`!6IyeDXJ@ zmSJYZOn~Ql#gIX*`bD%6iYj0>a*t`+#9UF?c3B)xMlbm!`hqPu&y#V z{nn}vb0*)vkT`DE#F-zAZ-NLnv;SVd*8eqs z>11Nc;ER8Me|1`uA2D;{m6z+UZtR=jcf8m`_wv!HugJ_NUlH=!JKB(w7YfqQSou_F zs_fN(!j2XQ3dCrnP{xtcA(-dG#mN|;mP#P=QsqQ7mn{Q|8Mxa=S7+`I>CY60*&y}H zF2P$A-R**HTpQruY()MVZC_H{;iOi}liGO>u8U02>xF;9yy~^PuWr{K=jV`A4OND6 z(hZKGE|%dNb`^sdd6w&GS|;EX`U<&qI3-!rtEzcyggsdZRd!fj-p{K^QUD_{PIh14 zv1|{$BCC=AK1lXbDHdebvUIihAf9-pTy3+&$)hj`s;6R9-Y1Oo!6^5_ag?*o;-D8@!kHG zzpr9{cYD2QU4Ct(b>oc1s{`n3$L`3!5I5mV#G^MU+1Y1AirnD-rlS|vWxaYDHhKMz zcQ+M=uc_IKPv0~5*X+Meultem^u?zZoVDzf+qmzqoY~{KEa(d0!|1r%8{WM-+N!n!f0d-3JvEU!cF3&5RyI4hC67v3TaDzo+|Z^eF>{{&65AtGQRoHP|zFCmKzhr zvt+BqJqRp<|6<&?$hFEQm zQ_CQl3ZkPb5DnhrDyOVQcXlmcSQ8@n@c{uPY8xZ-1<>I~?bQmfP$O@-%p3Vf^+PE7p$-mK!y^PdI}ZTP(5!J&6MU+vs; z^X12wyGIwKFlPAg{;>DdgvB@CZ~ls`Z2U2y?dH3e#|H{fq_zD&eMMe9-7?{q5vj-i zYhPMFExW}^zx=OX=2+F@mFHg0I?0{AezN_$)omTCZ#UgO`p8M7M{@f5j&1*S?uu9B zA9E+SZ(X=#Y4@Qe8y@Kn&|dWgd_{B@fBfe4TjQ%gP02g{y0vn@ur}dVITf|FWAd(x z_w%+)7(4lP+3|1I{LM}}TCBXdW9j~&{|h|LSQl@;7)dgx{&;&ZQ<-r~*r#fj8UR}x{q2vK#S!*EJ z3HzObRUC2LHa4VU3b~{2yJ18FYpRP(ym|})Z3FrMCLla5d(=D=NGXH!2~F}m(YpIW zKDsTq|Nj5}K73z1Xa4+)6VD$1Fd=b{e58LQ`KNcAe?0d0kNYmaJn?NcD#N);`#2y! z;otA~?abKH@p8eqmAjYy64|~=^VoVMGUwsLo7YYZemidNK(aYx@7xY>X1+^MGW zuJ+aEf4k0?GiG^v`5c;kRdlNG#?prF{A*6zZoIfND7*E2F{z#0k008)(r-`i48i?f zTWUAgKEoOlwBl0@sUA6bo4(tB=zkwhj@)kkviRIjzfIYD_xAhq1=!Yg_n!6taJi5B z>G<2c2{&&p=xR%dBOIC(vhK;#lM8NAZO0^@Q-@98ZCRv$mbZMI>*D8y&#&zYe|@ZU z-_!30pRS^!!bJ0h$|vvtoYeLF{-M36*DaugZrIgP`*U>UuiM%eH@-jr`rOjb!JqHE znB=vm>GienKJQa22S;L8SqPiOu1qD*?&+E-(7^U2Cugb<$hZ{iBVoiiS4BkhmF>HO z+%ir|gTNVF^BBDL?t#XTxPFqMnJ*9>mWF2j;)Qe26r@1kNi5x$E4ljyd-zh;GnNm9 z;ViZFZ@Z`3z^;mowPf~2d4$L_{8@Fzau3FS2}2Sk+`3JsxEMGZH;HHBM@QNF_BR#>H5z#wOlP;CsMUw65ZJR*vw0KUx6D> z>@J?Ad@3vn$D&n)!x9f*5 zt{OP7zTxbRP1bKug}*!T%dMCnr@eW&U`+U{#f2XxESUE6_80&Ak>4GeEY4|?uARST z!cZ2&Yx~XzA7@)nP1yK$)hFk*PktXZFFYdM_25AsoH}jSKP^1p6!!f4p@a_a$$lT^ zoc-%`;e>O~#JrdcUj8ip%2U#|J++z|Md8{wi(~fiq)TsTfgYSobo3hw&rge z8Gq>4{2#yl`L`|4Fx1s}(qKa;0JPmp z%WLT6wE-ecB?%{KEi1Rh`Xw^uqJB-dqEruI!!8nR8!%xe(cb$@Xh}5+SvCpSU`dwc|N1`7+cfFfyYg#^?Y-NulLUXRy7lcZtU=1`#)+S_w`> zUh{Ilef`r9DLZ~Y{N}#?hn3HM-PE-EyT;9jzaqDK9Svi4E&Jo1bK4I-K7*0=$&+>s zZwlhPd+#ys;hW8y{{G^$c#pU`#D7Ii=gu4F>OVW%e^_|%)8fI|>_1m+d_pQX>YBGl z)T-W|Ji+bNo}7_=IbXK?*&oLFJ!r0T@R`$rzb)D^r)S~0=5@-@=Qp{Sdnr5L=6g(- zOWES`EU?ylt!-m|CV8{lu;$8?5^VWy>%$1=-MNS_q-hoaY%&M3lLP{B?a`{OQgGA_x zQHd85cZNZR0NEuNHJJUai$~1HJ&sG)YS)u!nb7#KRey`{_DkJx8BqD{`_s^ zR(5<{IP!DCCSvEGQuxj2 zVm~+c#P2uVU%z|yy-)7A@ACi0`9Dc#85ULdcJZMRP)R9~4naaXgh9Hbkq{V^5|Hki zp}V`0E@7mbk&*^!C8bMh=$PR>&;R|z2e`QAnsfHv_rCA7e#=xDOlE4jOfTI+Bquua zMEVCfjc~PTHT2YduVEw#)wd)mJ~pl6#Tz(azvUyPlf1YwAM87;t(Y>6y~zpvj`&62 zz<&MorvCnD>&h<-;f~&}p-w;KN56Q^Knx5qekd^NaMTG(DLsk6+$9B!io^gN>D_lN zQVe2%7szjcjXfAi1;p(Z8&5y*Ab!5;)(L45`s zL%BlTVI3eBo})NQUWUvJpuNAR5LKmc>5m)?bxEZALO#4k2JnhFhWMLkD}kO#M2l8I zh0dd&UmsC_zrfRf^>-i(x0{$jfhRhJg-@YSk{rnRp*1TfW8eU0qyT~!Xpv&#S~PsL zX;ZFd^NUhB?go>aoD6?GygX%GAs*PI+_{gxZa#)}K7h;);v@d%A8GtO54Qr*THrsC z@GEOM%^@@;;)UqP+P?lRN~Wp>RBjhj=6Jg{5%hD>)XwTqxee{VYm$ z9n3W?vBc4{l427U5n+aq*!ncE*rqo?&7V^EhH|LBXn8}iNb2{OH7Qxga`STWGrL#S zH{zXJ{Xg^gsOlA;c6)5^RqZ%W^!XvQ* z%qiHxb>%*Zd?{8WuLQJTrgYQfDW_h3wJ0)>yD8EPwBE~$yyj=l7nc2+xe2}}NEEbcesaG=3WQ+xa%M#nMc?>&WTlUMLgQs zb3tdHil4{bb?MEPN`iYyQk~ez1Pw za%F^BBjza`m=(?r>$%CY%MQ;$Z}Q}&y0|>)0uPLyX>=kH?#I@#&gWj{t)#P~RXKw( zFhj^5@1oJhK>SVk{lw;#U(Ex^4J{O5d24+Z0LbM5MKFiOe|B|TPHLtoc};8(4oD>c z-~y}Fs4DBTNxPBZq{xzTWH2*@1W;hjRhrq!|8OZ6q9A&#WJbD62F%?oblJ7Iv|lEb zevnkr0g>+a=}~ik3`#M1rc1;^ZpX1+7*L+U_+AD>noWMqN--k|AmtA-^~i(BN&Ds4 zd7=X=bbHhR+HC+MFgm9y*Hgn{%H&f4RHi`x9Uy^Hm16^Dz)$=5E$+JUD9k93F2MR6 zq{0uxn$lBC;&1|TVMu}s`6K01?OK%x#e@4Os;%{*)YnC3>ys%T-+pJ2pYL5YJceJb z{#%40(Qh6=^)I3h84?-`@k~T{t{_Fn_CB4ye|DRu)t+Jm#gR;Z!7t%7;^R-4@zYyS zOWhq#5pw2a%9tk5#Q?c|Zp&J?*N;wG)!#AM88n3$MGx zn*P+tU+y_R-B~&0>(RpfddhWTe7XE>H)~>|Z*J6{y z7vgJ#PwvGVvognA!Bofh%%(xmmXy0L&Z2XW9Sy zNsmz3GRq>e`#;I#e~v)nfZaggf=oml8344rU%O!fQ=0z{|Df(!tWO!Zp+v=)47vo5 zrAKYy3T4EzefuB*6LA3!g`fhK}S=hqLQ%%;;SFPoxG%xj&qc@!oJ{wa=@wB=Bbgsv?kPVQ5ExQNmp4&V0B7O_YD4A0O@sJHf>$y4_1z=znrO{x)@A7fm-jQp8j0o z1KS7|7+7cw>Y&0%tumF z?Cea`9-JJjNm^gRtyo=^uIs&d(>JbMkREw(!{ylL7Fc;X^Vyp_3Vx2G$cZIO*V6CQ zcsJ~a%K{_x$*7y5!&BkAJl-u*(k=ZY^aJScBq2)Vlx8Cs()s{;1@lJwcBujb!%o!X zC*^*B{jEu!sF=c76}igdH=07kWI>!fdYW5U(S>?S6;u@iIEKZ}9JSQfUd&pc*IGK! z0^9=XT23jcxQ3rIzJ4*p9Ks^)Hpmd*iM06-^#X)9hkPY})LWRvV3t9`B%ajZfQ!K& zc=Dc#Td9Rfw~Ck<+vXYPM>RzX9roh7$OOzvV$)QvVNf@N9HpK@(lC%iK*@kBz2sF$ z$`PTK@<;bIkrqF|4KqxNay2V*eg;q-2~q%+dO(<(yxbrVnFYKO3G$)E1<6w+{AM_q zNmckP0C7MTue>0zf-i$Fz*_n<0F@*HBz8;|Bu;fJO1Fk0rqN~ep78#;mE_r? zXMX8FvZ0*+9S2Q^dC!vn#mjp*BvR~p^IzEiId6T@dRT0JUzm+6%Hz_yHhG;Z9uBLY zk`(V$Ihw1PU!rZdbC^0R&ShDcwIS;MrPqHYBJKe-l0w6wRY&28b1|dc@b_$T7ufI# zzxs0o?bKTCokfBE4RQDPQFln_Rwv|FmjrTcmQkGz0B?8EC-2?@YjnZuU2*5&cR!i4 zGpK%5Z!R#oSN@*fu1a+4#hcl?9M7qtU*5{q8y^?04i4G?j+*DS>sQ{qM?9N0Eeyiu z^c3(#pr0R2AC5Lhn)pd}?Zh@4omOP5iJi7>gd1Lhw_rz75Los|^WFTN zIL9;hBY1>blmcT4kZ2dH5)nBAnB##=Qy_pT;WZ`jB={MFDls+XuFGplDL&&#i)r#z z(!L7Rq9)S%$c4r7RXN}nV2GA~_N=fV$R$dNO1k6?aUz|i!uJHug33T_CC-=p9A*L1 zBY>km>@6%n1<7P+`E^axtQ6DYX(9d|ek-dkLy94Qt|YCa)>JY}iE@e5YE@2D3IT+h zIOO~V1K27;Y(#jR*hpz{%XjyBvRVMVgu#HbbeK^&Q!k<}>c6zC*QA9OeFW5!IAjd< z4A`}@kAi3^3>9R%6$-H_^}c=c#JsTSEyz(^e}9q7eMkRcU2sAw8MSwBf)^%DnwwwYKY+sK{NoibJ(jX&GQ4=M>JN~TmWxp?w3d8+n4_*&;t-r-aE_*PWP-)! zgrbR1UQObv?XRZ8X9qP#?B}U&ihXyMj@-_M;$W_P*Ts+{iPgca_deT>HB=9vRj#vq zF88b}X!d%`WwR(SRd32-M@f>7h2cQ)@~L4mCyveSU!#&Jlj$(-^#_sp5Sv^d5eEzd znqS!4GRQMWNw`LANx!e^A=~KaWWoqh`o!OXqOq-G=1IS883{)0*6D0-UXdaDSf@PJ z{nLS^#*c^%7LIKBmD0r4~2LTUH+Oct?boqc=?mXx?GCPaYRJVwVtdJvmHrIEyG zu!V{VPyPwT*)kt!v70mJ&yhNdB1tP}eOqVJYJLi9X43~0kQ4X2eAfdpjA^r@0 znL;LcODF8;Dk3)g6TOs>V2<&pnzGnRmM$Nu1z2pEGys2h9>+&sXEJQdAo-r2BkAQy zdXy6Md)veabZ6n(1a?XTTgdO9YLO(ioj!Z!rfLVBKozj* z)85<=j@&nYl`gj2W7^`@g(E%T+syFs5hhf%smZ6gt2HKn`SQwHu|Xo&-p8EQHXeKz zYVPnm=F~2G_Qvxrv@Lbs*K;9D@X_+@`pr} zMy~vPwng5GbY-85@+NK@+~yc%$9*lQT&i~(yPi!c&*@*L7kosWM@r6VW?Ka+*>e;s5~1IYkp9O=SBJ?%MN zW8O%;ExE$HNH4}D0O~$vsPht}D?2lk(!_ggIiBu{Jgocv;;R6AggJZJT=+8xvEGit#8FE0s z-U1i|Uec=+8|Z^~%Jb31U;`8DErjdgz3^|O-~*@;99?yJoAS=qdM)Z&za3R}XP*2< zYp-T#$|og~4)ZWCe$L?nj9Y5nG~N5vpuQ@*%ws^~%pf^kZ_*X@PUAKL$=S3Vvb^~u z<7cR%<6~BHpZUkl*4vJ4*`toW*{%99c_gjnOt53#f%}e8_=+D`&Ak4Xe|U4kT44?5 zD>|q^(gpM^%IahNpXt;Oe^kW8Z%p;}Z?i_i-yZ&W0Eyt|g;1Q`?5z2SUiICX-rh+x zu{#z@f9j=(fA*5 zlbV^d6!^k*0LV_Yf(#B*Nfr6#d)kOp{(>Ye4sN*$ZUwDuR$Hd})JF*y6fS1j6j>w$ zma<%l+ITpn94-f%I2>}oSPL+21QM@Fhv*t-Wl95{qePDKeV!V9jN*OGWwk=Hzm+5j zvem2#G){zHRDE3aZnK+@kmh(#1Nv4~m-9ASBbTwx8R6le_-1m@T?W{LDDs1j< z=g;yVJ`*KJ={Y+tb+gm| z1ze3xy1+ww&wDXtPEU50ZeFMzOtyNibTC@#O~{O#txA5WlREC-lZ59zfIRi5E-PjA zuTvR-D-|EO0;Y{NI#q3eBk^u>kUV+Z^OFD2Jd|pJAjpzX{7I}5X%%~UK>%=MaAH>B zmGfKjY4`Kjk`eE=sLz;<)Z+|F=+-s3VRP^Nfz_ThkmUH z9sCuh1bCuC$-lev;mA@KlNqHZRFbBZ8xB6JdqEIVg2kZ1$u0ztWs3=j3y-3;Er2!8 z5BO;G1f6KFo522 zV@&c3_7f!rJb)^Ql9>{_$pHX8wlYU?{ihJjz@SDBA0V#;5LZ(WVVZ!Lh=+D%S%A(s zF-@(O6A;srg2l=FI!Hd6W~-*+0feBR>!k63SDmh&y5H@bdPpt29Rnv_f4G7HEd|@9 zll_aQ=DU6B*)UIv>Gn&Bf9J;(fw%bdAU?zTCpzulJffI9o#~_vn~Rz{m#}UJT~zI0 zjWzO)Vp45n9(#fMP>Gn{ct?-xTd;74a4r>6Jk`v-N1yBgvOv~yzYRF0?lciuZ%uN^NcM5 z?B?oZuBSC_rg7Hc43fO zMT&|?xYGz_DvEAt-|A0a+&->+N0U*7x&NUf}bd`wA53hg; z-8i%(%J0ESmx?5q@gybh&LUvlP*~<|{0nQZk<)$i-|=?`>l)X!$BU&$C5yC7o}AXB z(8e<e(yR({}l{UN*6>oxNIpHBn<+sm>hm zlh|s*b!MJK_{0OKt+RJ|byxPvmi~tv{1`S8_s03dC3xrRrW7f#>3nd$cvqEDht3bb z!Or9>#pTkXkmc;gBv#PEW3km$MdO!|tygG2iAhcc>0z-^GANR(Man0n@N-CKs^IE_ zEE%YQ&{kk|WvLn>7oeg=~YwhAY|r`{({!E9Cw{;zL6sf#8)IcHan zMY3rr6i3A+F^q6i$(71{#0NkQ>j{;$qTFJW%t1g`OZQ8k7XKr&Af7i`g{*2p{G6M$ zqH1jdpFXB#3hV0R%rsUI^K+~aYH4SP5Q@nHBC&)|RgBmcdIoYY^{_|Y0(c={;2U58 zcwGTZ2nJ})IB<6G5k5B?#uE3BzPsABeS9R|_g zQRYMAt%*h_igvEh>r%?J8chp{rT*@f>SR(RmWzIO#tn#d^U0I^T3>hYPFkClB~9ZC zi*px5_I=H2EJ|mcO~{umwS<$FyTeSGMgh!vv&wk|&F|YYG!?|I5d2P(43CE28(g|5 zi_v{(mW%zlBrTTm75_T*3~g8X$KO;v%kqN$Fm7V+&d!c1UTv>$;{*Z$s*i9kU9|tDWd*7B2p~oKyNUv$4GWmRFhXSjKNJL8kVT2B;TIplr z*+&V4VnE8hkT*vQyL6uxzr;RC!F%eiNF8bMyykR~Ft#uf0mri;!Me z%FYNIk8-ux4zZr{fm+ktD4OXtxpt0t9KfS zbR3+eP@6rwihDBon^sBpH!lYF{>L*@b?8LV`uhB6K5A%wvS{Ih?`yXC_on$# zhxtEt;s;Q?vHoF;6|qM#3Qh@JH_ap4F5vQeq49V_Jvdp@A|6Z$rFypVt`B$zb2D?J zr2;pD|t2n#sN@bIXbmII-Lh?1Qcvu~; z8&>uJN^g4r0fV}W2aqh<8kWV~glK(r`G>6&-RS_UD!XW8~7hyi8+DfwVz!jPp? zq$pR~cj;0!7JMy`^io?vaFFp=r$7qb1okIUk2G0`__6CsUV=#F6G?z-IwXh&eWavLq9i6$4ALU1x2hp|_R#R$;0rm^12XAAoOs2B z7Ew{}Zna-lGdXh#XgkHMJt|+4dCR4Vd!mM=q{gNlBQ4jk#Dpo!RKQT#W0@8(W)K-f zP2K&sl$gH-KVZL-jZuw9i%}tEUq3{q#nFVDOOFKxO zGxzj|^b!+@zk6S9Z(-9%)*j=tM|v6a-=w)iu%Jl?+b;Jj^~ixsa5!524EgEI5v7CT zj<@-T{zFVue!%{1#o&H^Wc#K@bpcW4r;pU{UcXC$xw!XEpFoNV%{P3Z zYYe1(-CGWU#7T*;>|emmKqO_amcN^n^!ATPw3pB%dC>=0RyR4%ZMS>c6c9Sl8M!Hw z<*03<8QIBKOFUN79k~4$uKa)o>Qeq7PsPb{)iRSF*IYT%Qw5}{hCtHkL9DMNggVc@ zzFFnw-R08D@dn$8dmXJ}9|8DIK6_&$N@qhTBXK|L{1A8E!Th-a@3`w>_Ux@G_iJ(f z59FNL5y3HPbZxx(Lo6#ILyheN7XQZZmYdFqdzZ_?QCn+g2ugO-360dIY1P>ak;c@= zJS#Fh3!j7Dd^hoIx7%=Q>0MLK-Si%5KWTw?t_(wKE7ee#_q;FKUCv;U*F{%o?)i8~ z?^Fx;)uA=r(!Sb!Q>eYQ7)XihjJ_u4?eco2qx!b92G& zw7-|LYX7ETiNWDt4H!A+UA)e3^>)u#gs-5uf74ab$I2)ZL~XI-szXQD zD47EEFSUX*Ad`=P)%veIUGn_Io;$KC!fqCdDBp3JJ;{W9VA#Ta;;HPmr`sjybAO=Un}%T3BQ$NqZCJAZeB>Bb_?>HR-XBL{hmJKAgn8helKMGlX7$2Tv% zZcX5q8eNz6OCRc+DN1OX2Mj0v&?opogihWda?UqkC15MS22cn6{mV`$_jNH&9Kj{$DWPJ?)Hxpn>-OSZT$DjXgnq0#Ke^Avfcd=>7qW=^cE5A@aDYw)4y_TJE5Vxl>Mnu&3jvg59WXAOUZLFg^-q2PZNFGq zMaTa+xUSurlIyU+{8nVPs|F04zX|Mb&H+;&lyddzbNQ3l%b8hiGOl$LNi1p!1R z)rL%_*^0{#`1lR1g=KF5<#->g9lKN1nk{0%D~asGsJ$bP;hUGI7R`4 zOL*qDVs*E)0C+t7=>I){$htSOoNa`X_h{v-Q&VXe(&DJ#BCWTvq8583@Q&X-nHP9; zWUDVCe-4Nsj0Jo@_0Hy*jiMc>h-((b18!c;R;58+~@%ewY?g>Fa5x z!t$F>{G*z@g zL(sCG^%khcrkHp;;tP`y(HkmwNwJ?v+d#F{s`RZ2tipb6`Onw&*?SheA={P%;IBwS z@jX_;>*?6s@~rz(JAEaP6WtKd1L#WSh%8@tT^Cn~(X=?=q~GsY;`61S)Rbvw-kUql zT!JeKYwi4ReEi^sk(=Xu9=qG-{*jt`-ghhVa2pWKD=OZRGhlM-b@8(r5vObWi@w0` znE7n@u;l0DqSWu*;3d1ajFoIoKen<4Qg4>;hjL%}i*GcQzIl?F6YXpMH0g2-@dNrH zUJd!Nul;!Z@~|w*M2|E^$3MFn{E_IxuJD=IG~mL>YZVWMljzh<`=^Qn0quvVZF8bda{%;9A|ZaW7u``V_|_ zXP!5AteZMp@-h&dIbUU}HW2RcO7EWtp|?O2m(RbgrlcbOfu`&>MO}>9po>#)TE*@& zG+A_(VT0?q|L?KF{hYz#N8pseh->1mtI#uvy?r$IUH#3w^&6wrUjFs_frdB1_SG*n z1L1NK1DD~w{ZM%Cjf0eO^b}$Q0qilUQ0w5v4(&tu^gJ4I>uD?WQBpRl1MR` z;^K8)?R_&;vY}kZ@t0>3(ldjO$h(JCk@jhP8J+B$ys()^ldeh#>sl7aL=pqHBG70Jvh z)J*t#GT73Voc#h>BZ`#n1UAGZL9LG>I4b0-RmN1c^l~t@WB`aRFw4dVdPdSprD{|R zRVjjit_=WiX-|c{3;K@9G6;Gh7XTVfsywJ(Sod_uVXwQ}-u!6vk5={5fHHkw2H>{P z?>$31#z&c(w!_Tt^#3_-BJz=*rl#Ir*YF2W7O*i~qsGg=J4q(nHs*~q2Q#3hz6TWFR zmPt%*@Tss9{y1?n;c_|F7FRhdm~CSRZMNMmUXygu3V?d%KHx8;rL8iaYk z6@9y37*Y=d&cHf3yz`}TB>QBZV>3H!&nTwMw1VUXJI-O&*4iTU8~wB8Ep$nN#@vecSg z<-EE(pPzHtf7{Hfdd=&!dF@|0%`^gSE2rO%(EJ8n2k?#C;zrO?=ZieUYp%0);BlH~ z$($V_;tiDIZ3QoguQC1fhtKW|&;5DB=BaX5yzT(1kg#h)c-8X#SO#PQt?JMM)4Xoa zmWo$C;*0Dmgz!;ri#a$zD(6Op?K3w#<>aVIF+N5T4t0#B*1W52NL=lj^4j=KI~(%A^-9w3(wE1vXb(?hx#DoSK4tAa@wAeaU+VVeJmdws8&2QBtecpy1`RnI_C@5L%qMzuPkVw{GPc{^{%-W#4-d=n+czMjKP27L+{6neT zE^PP!ZcTr4;M-1Vhrag|*IQHBt_WjLBD+oJzW!p;T6aEgD|L8j(j&MgkrDYWBh#xi z%Xn)dImvW+xhnRGvuB%+slft`<95~2*lI6BU!~i5T)^7U0vn=!QgmKk?pX)l z+_~cB4b}TbXE43vqdFuy+a0DKKvT1whfg0sd*}(Eh`FLXMChFCJb*$`*RXW3?7bfh ztpNtiSzP_Mqlm$eKo&ZNTBJA|e$rRDlt$_IK&~#EXpLQBF^2^MHAY##Ej1?R-(giH z^-?(tRgM`fodRwAuu5!_*FcKouirozhtj8n0J8PUHAa>ZQ2~Z9!uM2cK*mUh*F78@A7*Vgzl-ubg#CE|8*zE(C3p`$G+n)DTgCe~H_^0L z{T{648a$KW0bZt~-0(Zj-Q3<2w|xM8ME9bVy}uhsB_(oe-1m+P|Hy{p+!TK_p@`K3*#RQ-vO^^#|beKmHh zcSL}ID4ssGt?{|b_@QU8MMHg+I$2}}wtSpj+@+#je|4s}ep_cBVwo$`w@jY>a~EMa zV$$Q^M)vmFV^`6nql2b8#pLvKn?L1_v?-OdY#L#vcFVn`&Bkln?T1F5tQ}QM=HD{h zqYfgr8hb{9W-53fj`&F!IYyF{lYbM}cNUA5b7PunUX?58@W+>3TO;p-ZkImTOX&A) z&wt1?pO>r+L8oQ<8N7xllAM;BHvO{{xK9eiQj7M})7OusbNfgM&M+&8IHGKjtogP0 zX$+%MlK;a7BI@;sKnc_aarNlP;|k%!Mx0lq0ix#(x`Dl3zC<{<)d?Qgw>=)f3OITW z-|jLwfXv+U4j-p}g0>~Xh+H9*S?>Ol0y$0NqNgk6s&`dmy)fLff1U%@#n6#|lH&_Tat?uxDBp0MA_wBc&^Yb z+t(b05ZMMDCcgKtK5$uXI=oHQ#Ai%%$sWD3EFTXwXo%ox7WQftwKO2Tx0#A2Xg2omBtC9ocqO!eyN2g*&>6$|t1h%!Bcm~zDdn3Nu-+ZOfd<~;m$Xjrr z&4odaqIFn%Z`QBjJ1_LJn|bCIXVJ)O`jEeX%97sn$zzLYgF|EA_yzlOc^Wg!->GNb zB4fL^S6+Fi?h2s-2VguMlUg0S$s*uG#Lu?_ru8i0fB0kn^}%-@DPqPc*c zEBylqgMkmy0*l22aRMqo0D&-r`zRsOuu*G<-1u1uUkgnX6{b89RZ>Mr8Zs~mBN6M> z8Zh+JCBXhl0jP_{XhH_5qNr)4W!dfRT}{^o%e7ODfCQ!|e$PBt>;xM7eBbb5We;xV z_!%uXbtV3~rnJ~HD&{(}Tqlh7O8SE+zksCQ&@bsgdiz&_&!~d_ftEqK{u$f3d;nQb z-$D_dj-B%!xk*2#76f;-iDP6zSiFNSH?%Isz~#!=Pvmfd7Pw(K9k9fVrK(cB-6zI3 zzKCy)WXj#%b2k3mKvUbF?l(`n{C*%nWvyyi5s2zw|Fq`s-ElgWH7p%qD`%0nU%P#T z@^m>Wt|GMA4bGt#%5F>+^4ihQ6dQPnXlcuY^RH5DtbV!l@e#}&@Lt@KDUa;KJjkTiH)hOjN1N&@o>}wn(1(4Ifpwz# z?~(h!)2yo#{fV7UzT3xtvXuyFt*9DI{7obje{RO>di+fw+4z>2oF%D7(#^uCJ&N0# zf0^$>WQAvkQ2m#J_A55f3o+i@yZGb_(SPo!R`~U*`R4ou>2?oYZEmM{{y>T{$?j+u z`=JH_w5bUNskz~0KW{lM+PX+RG<0y^5!g=|hZD`;@;FaezzC78)!PfG>bRbAK029= zTbtXesMMjJ3;>hjmeWa&&fH{Y-j8EmuXo$sgEQ$=h$&?%$4BkB$7}32Igm|URadU_ z7a3_{)UkSdx7@mUU%km$5oc-n>vcQ2vxm-{Hm zjP+{TL|_@F&okTan`>h%_p{iF@DpM6;j8^7k=*o@#kqthw1rv!Hio{{e*aZwZ3;5e zFH*OTP7ap*4K%Zwg(*{tAM>eoq$8py+UB>=AO3o^?ij4oP2X9>s?@`6=&hP~KJkHx z5jv-Uv&`3i4m^hF0w=%mn?s(U>AEH$U84D{YfIrat*H{jqyadgnlJEnrneC~y%S|D z&4I`rr1K zlV!?bgk!?DQu%G{zTPV2FMy``c>N?~XWD-L5GEUQx#PT4^=LLR2Il-b0p8}})NWa?;qcqT zAn-82{3f#BLP4n~=`NN-t*Zi8@=C*{{Md-3u}#HX-_9=E0!Hel zBel)%AHZJ4*1K8Ifo)?aIke-7@F#1c~wI8aM{zJU6aCI2X@mFR++@0^Sa=-oh88UNn1W&Msad5^w$9cgQv=eB2V)=kL3QA1vCx4nM8A z0>Af|x_li$I8keFGSxwod1i2DA~315k7d=myxcjc+e&kC^G!%h9R8|?xg4|A#HZai z-L>L1dl@r*Hjl59%7K_vb#J66J9MFXO?#!GQFgTKzP&Wt-Lq!If7e0yN|0k&H!YJY zNV(f-bAEE}FdZ(TdPP@zB%GK&)2E7yYXBFTugdK-$&dD=N!k19T>1ChZ?1GzxBBkm z_WRU5kkzAur~^?X5_ynj>eh4@#Vg5*bl+c}8VFARnSEZ*t&x5iZMMvz=Bt(VRhC#B z4&S(0wD|*6Ai1dY4R0UArn&*pQT)QsEo;uy%fG#(pYw;IF9^@k?BfT`?*IoQ`XdUk z18%MZ+`~QeaoM>)IQ;jS!&IS=Nk;GfrIeY>TIqO8a_P!Wn%*zTR( z6@4w(+#4pgt^R^KmffW3d=6H&Ckg#GSJB(zv4%imxVM^HSzMklKUcSeah#zc7dJeY zSFm3ii}_9WkmysP(++#*Z|L^R)y5TJbuLFsOZ8k1o3dvlmPl(hi09(;tA=s~7V77? zc7KZN-sq$m&5Oag7pl$7U*b}yPOU52lyv5t*)25ZsSd8o=GO6#lv3BwUbMs_oegPM z(TUD**ge$)D6)trZ{hX7I+ zfJ_!Fh8lhRAyt;?Ash2V4NSTH2x%4<{C+9EXr&qJm96t4e!0 z%=N-E>;$Pr$4h2s%ph2sIPXv3yOl(+zw=SNy}Epg1pho`>*$iZa`AV((ood+Bl_HC z3QrmY5A|&KgnfMj#)=-8Uo7r@{kSRjo46mPMEKOaP3XJkct`zt`tCr!(=X(U`?LR6 zyqax2qFrgO$_%X;(3&G6(0K06bGy#pJ9qErnbm*XS!Il~3mc5&cIH6u+S+UOoJD66 zMYmCuBFYA+^;?ocwLnp`Fy<`RIN8I4U4vRKG21tHOHgCZ6}=*+$-YdsTn9oQ(E;}5 zl8buKEd)%l`n%4}Z2w66!l!PxZLeh1+Gnnn;-3Wzge;gB-uun#hRrB!O*1M6rn1T= zFuB$HxMf^{pP3#f*PPO7_BR1()u{cCxVE5TjV6IH-ACex~+zQ_Ee2^C^TD0Qs>b9w@Qq=<;I0TO@rFL_U?`^v|ZH3@!1~rT$U$zX(1a zE&p{W^iiNt;djCtf3BPZ4aH5a<9x41#NGAwSx8J^M}-RZc}5bjGKGAkc7FUh@}WK4 zjwtG_u22#(kh7JZGiT1@xG&A*%g1 z+}CgwwE11xjs2QmJl(v%`MBiFoz>PI#h6OkjJ4~R=NafF#WX7T%r%U6U<6F5@&MvM zBhl}?(YW4kyuC%sE++oF4|k4MYNxPs3{nlVM9PIR#NadfOVIzkoI7x~dL{Fgl(bfs zfxIAw1i!r!TgR(B4Bto=&|C9lYRePpm6KPJ1IYxX(tC+mUbAal09)jL>-l|AUrXuLpvdaByIfZqJ2D3{3g4!G ziKIP4`ZgilV837su!ateu#=0^4x1@Y0BiNZBtPoZPKC5gn{S%<2W~IUi9_wJvG74` z&x&Ax6^2{ZNB(&+Pv*vk#eF>re`zy1JNxf9^>KHHE?K&sB6){vCPo zW!(dLaaY}53iI`cubaq!){?|$ogI&vIOK;vf^kb-!q7<%AYOZa@J)U%(2qwQ1N9*i zwhp@m?u`3lXqb04a5E zqaOVT(~9~+O+xKeq@^@ixfdK0U1*RUVvWrbMoO?nh&?E&oe}dkrC2&f+C_N~RJLd$ zdVRSt#Ag3*MO4JRxqVNj^PW{91i?+ez&sk0-g^eMdnax)hvlJwJiOn(pd)o?WcjSQ*V_&cbC*TWn`irPz+ROz)vi=ZyWrF~5HGI?3tTR-w>@{v z(ROJ>IdSF#Jy5@jNB$$Z#GpU8*rHs%cZ?G3sA>Z+%l!C)#}6IAW;Ll2Z8zKf&X=Cd<>i zbycw)tf*FTk9lk40idl@_tX~`eN(INK{)34LDYZ)00$^NxDIkX%jjKc2t$ z_`R`v!+b^76`lJNqs-K zeio?VYdm*-^6RMPZC$&3AEh#f@w%2}f9~_O`k3YO5B7rR^tev4?pf3waNO!P!!^~lBc8m$1hweg2T+i~a5Y0`rF*z-YO+mi2 z-SE6MXkYp?$x>b8&ExV5o5_F9JXA&2%p7zdI5Tktd&}#{h2@^G&L+yCfV#G~tOfff z1%M{IU~^b?VKs?9f!@2^9%p@}^=VxF@g2Xk8zo}db}@9(FjB@26VOA#05V!{ZZtXK zN}A#{vpHF`%$@vUc3|c6X54R%Vfot;Ye7jtm9O_=c^-4j2&YWn4_~eR#`E*e_vALy zPd`#W5CSI2j!#r>xq%*vRj-D9m|qAH-t>S>Y$yGNjk8gUVQ4rqVcshj2_?%S(0B`G z6Ux{Ynz0)uqa_U4Ofxhiyryg3)0lwn-u*XAdN&uzY>^f*MFf-561COx`xJDXR^e)VBc?+wFqx%=dsC zh%~Q>r$sl-Eo2fxr{n!hWH@&wXhb73YHu1a>AD>{&jd8@NBljAIOJ@nF9ry^ldX$G zMmLY03^;S;Qen=B)sbTltxAs;`B>k9Kdty0V=82P_1S>2R{6!uBNyV06(2sVD?ylu4j^O>xad)iK7{X339F0R1h0 zKld8Mth4ull0T+mWX8hM@g(q#6)~E)7EEiadP8q%x~*CgbE*%z7m!vwT>&d830@NG zWMxL$j})N|Ph;*UniT)XWl&#>P4WYJ_h}r{a+>5%Y3CgZ1Ife7iN$&GC%h)~<52?g z9ZaP45Uyd2VtxfgRM`sva-tiGA}ek9mUqeN+8@kud_(r4euR+!xUM11gB9L*t@YdWUuLCF>dB*duG20y>`FGi6aO)7LUh_iH-RviA1~f- zx{{n>i6UbN%$Odzt9|?N)_R?wS5}9Vud}r8#6%UsLEBZl@Wn#oV{AqEkAECqtnI@L z|0e?UKm>R$q+!``NN+Sj;Lb~f>sP}Spn4V>K}9UH$7dPC$CB)^`pW0yZr}Af9T84*g+j{=U+24TwhzT)y`&~ z>DCN>-kK9)SIz_{XlrXophADQnEYm{VK#MsD9!T!ekbNP?W#fKqqf$0`k`izCM(MQ zew=?!ASu7ZkVnf0cY^Z~&F3bqm-$&rHAf7TzeM&>FYYTzBz4giSoz;)NyPG{q##A$ z@>9hZQc|s@VJGWhyt@+8l+Ov)y?ja+DBDmVvctJ-wf&{ljv`dsxbnqm+_5Zdh+TfPY6tgOlT!c2soV%kFtupZk)jhbHL>#=XR`V;6)zeC@ETR!6`6TSQ!0 zFW$5jsko*tt&!D5nW7NhR939~Exl?f>GkJwrx{Iv7^%~rAw8Oz8NDrWBCZW=m%k(J z5fmhqJNc3MBSK}FX*LK;i2J-nr46o1y-(p`PJxEI0BH|^pwS9zk(D> z)=9QWqr|YZDSTH5Wmlw+I@>W>b|mLv)d~M9l3?OIae6-YFt{DYtkDC?dqR8 zU3`z}E1A#oR&TVtd(w3&=p28)x^geu99e@I!9T{5pXEd8cN(m`hs1kt7z^yXmfrdqm9! zz<4X?6bEY^8eR*bKNkp2GSl7-E%QOjZO zYIF2G8k|anQ6>;~P7syerxePkUAy<-dhh$&e1dba=ZuRVe|qwc>xXovzKlx2aW0-K z{JXogE5kiP`B(|6-hJPtC5~?wGF3o5oZjP=T{u95fki+N7HB1n0!vkMV2BKoG2M6i zay5jB>WtM_!_`96L)WKXpns&6X9b7tcwcJ#Dd z%V*ejYk6RoMe^Pe6Fm%p_ly>)ZD~kE(r8 zyU^yzfmB>yUA$$k9B5y={mC??NWfI7zKH8+oZML(qjxsvt)=WAJxV((T72y4kq=y* zSLLqjoo=ursyE~5baloTSzn<0uz8MY;+w^4!6jQQEj7HmS2R;XWD{nXIiML9u1pDZx5pQ+^ha09JmuvXC^ICI}%g;qv9xUf?!Reb3j_el)9FasRlpMIc zZ|Zp1No4~-v%9-NFa=`cWp8pPK0%o4nN z$mY(Q(zDekK6L{=Y*D?YR6|uT(8Tp!RHVuK8=Y`n0kOK4I5p0YwxFlpw(EhX}=?zof#JD&Cwo8XYV zcA>)|EsKWsed9?Vm`*`N!QIFBiuIe0(6kesF|t=)g(#1H+dT&F4s=t~OqM+1;Fmyz zB-cwm7e#*9+-j)v0ajpQsr#*wE6YtUQX{#p31jmah`Sj z(ELR~NTG)`H7j&6awq8Rk@Ei3+Gi%RAd94$1v<==tc#h&;M?a;QMfNsOG5)241?E# zq?X)sh9f=B-}yFCJ;ML_6!YsA--GI=*>Y8(VIr+W)L*&SxO-w7xCa9T7mYd&E=^CF z$g@^I17X#zeDtQna{%8>2V6kMv@_znaYoPfY~JM`jti}MAsXdOK+Jff?_be?HotC{ zmMJ2Vr`Vio%J*S0(50`=<13@}wVVj-n8DNEERL&V7NpZp+Ya8+3_~0iW9Crnp*~X5 z5!h9UqEJ1hSZ8Xuxp#97H5i;bWsR`3)MUmfkt41YYXh1q&pwnf6F z62JjpKRmQZ?TUAxiC)97%ti&DG$6S{QK#cgi&Av0ryUVa8i+d99=(JXSLSjkZPFD> z_o&=kn@5Wxg6hLFskj^8<(=EdzN&WG;nfTt@FjJH^Iqy*oFi&a0(7@p>kceZW-)pe zq9n(iq&q?IwVK?uyd4_W*fE3nSjd>G`Pq9`3jojsYi(zD^`IE^?N+<}2fMBNf%M?; zNs>@FvoGIuopa3(hf&x*vX+ru+F5eLxi^yr%nQ$5*HcbDt~5k$Y2rxCdOiE)0~;Y2 zACsPe;t8xaL*`+{UvIp{p8XjV_tF!cHrV*E^A;xv@;m*_x~0a3DB5YXbfm)bO{t&+2>3bN&!W zst%=M>_xFZkBf11PGG{bUtt8mrKq&D5b3b>lzoL@O&SZ5f<-Ep)8O5H5ie!8U>rs( zo$bYv{T(JcJLX+`V6iE?WwKv{rHfGKH@p*-906k-k$R6kwGMzg!d4Ct@JGxFz$aMU zpW4EsN%>MIU4`4UZ*(2yiT!ddHh!X1=sDK(A8hXW>5-dhrw1#~{SQ!4@XT2C#=z&r z(ext$mM`DEI(b9z>JcfS+Xhr(OOKx!4ddyQzc_ZUGjk;7isw<^%QFUofq?fQ?gc$) zTvTyu9C$4s%1T-TEP(pMP=xH>{O|MI4XxQ8hiltp3VIyhe1!;X_ZA8NDH4czzDKCf zP%F8xJbHJ~74`tT71BTpYF&w_1-w4&;MiGb8GB)tjwCNacniCUxxJm2fM0DDns5;u zK3X`Zs>y6bo~KJxQlJ&3J#a9`V2*J$kF@uYi59lV!nGe0^@0&vTu2pnPjgze2EAg4FMN5kGIA`17vx<8wQEYFg6}f;?L2 zAKqP9L{38+4)~FLaz$y`z@Y*V{m2hrRZX`etBr0i;%%e)yt)GmjRwY0#1pTZ20~wc z7tU83wug(=rQSJov_Z%g9-Lk8QJA<(r0P~iUsC-q)wmOb;c7!-WCL2YuLm3nYfD{MOm~_w`~qF>ZABwC_yD;y@S#|CL+?O6V6 zV&N*hQnmvX-|5Nxa(4UrmYBupK(XtBdXj0*U9|$+!=LQ-k< z-}J9Q(acFsf1WUtCQ46t_I%?~`n}K3s@RTrxUutR08G5~_M(`bF4(Xj{2GK)G&gm# z-`xD^vCazrfXv7lLI|}vuWP=kSwwMk!aS4j=WDUhDmKT^<6oog9k8}X-5u@sL9+hi z!dR(tp4o~=HE`$fT9iFvA_zOWxaG|Z*TJBAS5u&JE`lHIBkpe$OLM40ICS{tv+}YX z(|58bfom@p6{ZO$E=Kj3v3Ix#h~uJ$0?@BL{@e@vhic`F_@q)Sn43 zRf}YwnL9Q+WNP3IB#tQM$!E~Rh4JMCuHkdI1x%B!Sa%oK4wY%^iOlGZ_W>nzn z(Bk6ubDxi+nlEdbxDgpSoWY-+*mR=00m4j8%E&%6kk$~{)t&rL-4w$btW1Lp^k^X# zn~$7%C3tv7U`PHJq?LvaB(DCp{(bV8_QT}Ga=vX5`c$pRc_bB4N*n_Q0qwX*2z5Nlu_jf49sO#Oj z0t%>fRhP%K9^(3&2Hl*35SML%ZxSyL(+ut{X9pvLx(}jcPfjUWloW9CDjb_KJYQrB zV+WE?blw~e84lS6(RM=o8v$PI&UrUPmp156-9Ie>>-(dE^ZT<4cL66@7Tn94A)%lS zGy~Ax+7gi>A-@Tv0nacGE>*fOjfK|`)(Ne6tzVMy0uvGE4NO-?qS@9_x!+a>b{6Y7cBo3M^y&RqBhNM zB8sjigVLv4k<;c0?f9J6mV9nbJ49Z9tc^T{Vhq+!``h+=(^+>v5l{qITFzOW+YL}x z_ai*X!1E|#!ie+bQ(axdBnr@mibEsM4^vwMUM^K5$xBcdo=|I^jSTtd~Lsx;m$HzLtS+4NUao|jh0 z+|?_ZT^x{w^25H@XBEv-PA4BN=NoetIR47srafoD5-rJty<>b)G5%lqm1p16Zd{T~ z={fPT-S4ZdRqV#JQ8VZ)KmQVPeM~a;33kgYnv&twwYWd&B+Np$4z04mRKP!uWVGc( zDw^G#YH4yBP-8I;Y3Q|}L40@}74kHpYXrt|dR!8w$Hdp&H9!h=p-(qkvh$ z2IT-m&zcYh)x@5VPeJ{0X(gch8iXqw6e0Mj**C7W7JY;YR+>!DY1JK1V)%k z;gkABLXhR1y0eC+%_<$Yo7@!!?>g0pNVwBH@g@GS0D+O0etsC0X4cEP0YW%Y9jkpi zCMJO|j_b6kg`s$&Kdvb)JjfNO{<}X@b8-SDsW^IXW7yBiz1({ost!gZB&Ei(i2R6=2{dg+f$rE zD$)}cSVe#$8NBge_8k*eY;~ztOlYWV9iaqh5HpAlY4si%~;hJW||M&tX5D}KsV z(W|izeQ69fj-u7zP3!Vqt3u*qW3q&ALs7vgecW??@zX7)l~}gv1IJKjK54C zE5AT%#H15iCQ8PKu~+>Ko~V54jep-;@n*eeygdT3t})*fF@d{|085xXHBbCL|Kt}i zl;IWH)7J8L2ta9i{kSESJ6H<>`n0c5g(QJmH|`u*(V*bSr^>_^AD;`%gvBMSMcm(1 zrLsh(v5}f#a9zj>8MQji0t;I%+TL+{W}EX;&($UCkiVYQtTPaFmfuOL`GRjG=4)WP zd=JMix!5$fv$j{Y%iH&elT6s{pFjzYmS3XFz>?SngPYdG9z{?p4>NcU(;m3UfSLb_+_nis*a?OdA)9@7EXV_dL_6o zk8gUmBLIe$qG|4HpVbc)LjbN}Y#!Mh#8%fBA0t#gq6)Ifm;4ZUD=eIyw zdsen&Ax&3s^{~Y?n))I2j8;j=Lm?|k7$ekf?XE@2+!ECnmb8gp2QP9?qv8xYWqod& zWbexcaMo%I3smtb;PRG>V*d|aUmMGZXWyTYkBe^S9hnu3@7v%O0jp&;ONSl+c+>Jz zeSNWYL?gI{X#-AR z0jrnB8lS$_BlD!&<|Ky-vdh4VERE|AP6)<#+*<1@6Uhzk&P@9y*xSNURhU%U8gZ>7Nj`~0a!hGzD>j<(7P3)!l`oRP#7gLEj>y5*;h>6x> z*c7{=vVLJ9-~S-;fOP0NMVl6gg9Z>i4rF&p>uYNjrT9XrV;YZGbwm;$Y~nT+-dTL8mWS( zu9Y*&sReH*J=^C)2?jCY>X&hwt~2hMX@w!@?3P*#mzP?jq7WQN;4lcgPT$2XK*N$U z26G}<4G~wE&rs`LKO-FGu5o?D2Ym3wACQeT^P?i*#4?YngZcMFJzwcW<5%30<&` z6q3MR8uEOzEU(ZXM4R$$e98a$vizgGTVe#zNKlTwqtDb-6Qc*d^NOWQ~& zhPG>Q_EWz98J91%Imz+o>xj13xw;bN?0~Ym7mkILJ`+<_QMiKh+}#Qo`X$!=llTw& zqZ@bwuOZ)*wDj4K{_*pTl^!}a-yf_k_PYz;bVuH~hlso}BGYyY8wv^8-x+vH+7-0^ zc26rlmViotCD>AYZ=-K(Cht|up+@_m*{vgl>$gtXDAp3g0{lNVIcAk;gjw2!`19`u zSx3WHoCEL;>ln}M(SN(rB9+|3+L)$oPa-?mqw|;ZUO@L|hu7B;4d%NeqjZot=8tsc zJDJ;yE!a?kL*fy8(be;0rMV(sQdwZRb-dKIv^jJ|&^$#vk@cWJ*!yZu(M7`#_M^Ge z(`&93fRU^!$Z;h^+XO&k0p?z?3SqWh9WQ-S@XYedTo1n{5>*s-=n-2p0VqcMQ6~H6 zhM|`~wI#>o>o@kq!DvN{VTS#*LQ=|Dsc${BZX_qk>O+{FE`{R{%mE-}77u$ExS$vQ z0EmVf8Cp>JGv9*j1mzU3jfUFqw%mirMK%1nIg+RH7Ssnjwt$>%wcE}=l~lpX8=-Qd zaXPPK;KC0$7YB{a9oTL+LD-@o_@6)g9d{o32R#6si^OXXjrz5V&ZhhgJByQ9!SUm% zQLoq6Zx(q^5LZ*Ry|O*CJcC2+bi|!2AszDqe#m*>KD1nwu%~d1YQFu;R=dqGh({%` z5}NCTr@ypQS=DEQ&viyv8YvD#35;+?4st>NqTr*>*tT&jeYLuttKV+ zIOntL?V5&M{G5hYRX~PHs!n4nM*7aKq0wj zfR<}dC3%v(CfEiv5zI z^+V395|9_Jq{LBsK4K4XOgIxTdYG8+8q$-#F=$flV}+VTxPvWaAE%rmrW~$SYlU%k zjtE(EXa6GXK@2O60ngvOONhhHH|V8vVBKMJ)66W(;kI`V{;aWGF1d8OIoaPk^Hsz?y3CP1KGiYfoayA)~LN!BBn>8>K7^4g%L44M?J$n9cI9DmBb}o92cWcpum5q~Cl_Yzfa^qTgzq$8%?zn; z#2iH1HvRB=4Sz&q7$$lD8e*m4R)&t^bF!>%iCn~B8aZ9E0u@e-*4jI}+*!~{n%dWV z`jGCa*nJiyaFqcqZvCu1;N@uIAa(hfzU1>3u!f>@Fy%~dgRY#qzw)(HcHNY>7);*y zC^m%WKdz97U=MxH(Pz$L*D$Ip!kUfV&`L{74cO*n?s5PFNq^z(o9YJ<6njpb#z8&f z&g)^m=zZjh10^Q6vzE|rB8;PJYhvpk$Cr8wL%}{>KIO-~hu40Aq&|UU=tZ*2{!%qsEg4ua5Xb z9fdyy;`ez!9Dw2UoEF2S`g}u{7sHU=G}m&(dUO`iVaNID^SdTG9FQ%TXrk?f#nrt)bi&l9q>?q{^26PD9Y<(w&YURI#$TyP($s zHgY{vfP5?MMR}1RkKB%R#52?3YDLL&&-J^;5vqBW*BaJ|iPZiRjw}3xk2_8fBJcN} zE?qIZxHpi%TTZnGIeI3*)y?@P=LLen*hY80>A2$PGM2B&Pj2~5UdT;aCFT;s-(>K< z6YbNfi&|IWi9@s{^uK=)7B=%Arf^S=ep@7Ac?5_E3|32fo@sg?D96N?q==+2Rjqs`iPvr)N>J?O)fqz~&QW<`Dz z+a4^$N~Y{j;BJx^*jC-|xRI?~Mh?KTf?9X3_jIXCY*q1Grr;dFp|M%imz-3~d?}UP zHT^UY?4QQ#!;s3o-z#;BdW2~=y2&zJ4oe!`egv09SEXye9g**-up`dZ@MdF&Jts9u zkcNjhAKNsPnsbTC^g6%YoS^0=FSAfR7wYTN7YbdZ0P6B0I%F`|aL|I?HQBuZ$-rL{ zp7jNOWouPBP$H^`;R{_XmnB|eB%h* z0W=%jVI>Ofxdi-s4v4<(w7oVzK;nrSFT0(8qb|P6Lpvuw9h*4sHon`{I9yHjUdlOx zPIF<84m!Qr0`E8K0l=SYUUF9z%7rhs(N>%i$5k!vER~~`+}BO5JEh!* zpwHc2-Ttj8@^89v-2TWDl`SeF^!neU?2E>AnUFrXw&S8PV!-w{-FS@^hoprVdg_`eNjWFjc^Z1(o=WO?Ifku!YRbz7SKdzqjQpYp> zbD!Rw1gEA&aDD{CI}s+3iJVq3=q) z?VP1l1iRe4*Xm;`b`7q5*?`IPDVVh^x}L3F5X`-LsMs7P9w93>h`zD`b79~jmwl%J zvPLa%{2vT^TB1gm9$iuS_DUahi7-? zf#W8o!UKrIv{o{XB&q|M2ollhb9DZjiwcH$TAhRGd2NS+D~Giwd-k&z^i+E{_Q3*r zaI@tid-JD!{&X>;4Q^Y^q!SceOR&!leH{6h`I?1#M!3c~XzBgqXl~qFBn=2oLX50K zDrX}Pat@!6XUKO+I!;^Td+w}Doc{CwxHj?{60zu!MofI!qscjeS;hkDFrJuXKR!~w zH0o`RzxYL1Swh3Y-5jZLogI3=c|Fg?S1uL4oQ#?In#%`XBWHS-Mli!7VSv~ql0ul{rsDP8wtG^fo_X1WtXzt zrxMMLhWAS*8U+0J&~vP%2L!s}Pu&uG8miRLr9 zCz}32?oLdMt)iU>5Z5?88Ec!dRnI}s9Ft|wJ>$)E3QLkriUUD*`4})>#%?y zJTVPQ*41N$TD1J5isi8!5E0>LeC{kl98?%Cm)3soTm+z)82DTma*{<~517px-`U}e zDv|B0S^0v!|| zFSb}m8&W*YSvob;JoV<3KkY?hcWxfe<*K<}Z2HxU5(5Mi>JHKr&r}~g!sv3B(rBjF za+ZyoPc!!y>ZzFAT*%yZ^sX$;ByKIp-JN(<@aYc`CzsFPmm0ik+t-mbCFQx`+`cI^ z)AI0Ef{I_*qM@d~B-Cg}dDTv=pjDLlGb^B|!Jz0h`JLvkE`mtq==Pn( zv7ogn^{Fw0{L^o>=fWjUG=TJ&v+t%U{YAz#rP=g&IL(Mx@`OH1axH- zD*p2iCqTp(pI)RCXI17s%u9ISU!PMRrFjwI1(wyFw_j{3{7K@wxT$pj#Fnl-Yj*d47f1;n>+CTCXI;O%X_H-eQu?z2YCaYvYblkSc%-8oX{!Zc zKtju@F9*M(ziU1G5Re*rMHDjK{QciQbEgj%qZYXUEW7cIoea|!!|V#U@`|(0@5r+m zbr&jMO_V=gYT2ze8rsxYm{@0MID~m6J5irVJTgwn2?u^FZYDU(tgh--PAF7Bp_Vx} zUL$^H6&khOLi@&Rk$uts_8mE8TZTC_dQmNPPH*vA$zBLLYY%2iG@YAe0xrdwysA;+ zW7pV611&S-M$%knT9481W=`~MTf|n+=|Vg1GcU~c9Z9m;n|2&!`aoa#*rpD-U%0Jn zoK@B4omrVaE+?^7b|vgcmrFifR@SWX)_+_-#sA~-wm_*BXobd0D{C$wV}NA$fBVXP z2A|gr z-y$5gfV2hyiTN&{AfIZ;#n+MQwDq2SyFj^wTLoU{+iMcE@{jZVdjG{}qmP?E$iIAN zW>56#Xx8_e{mG|Joq3c}#Mf{{2oR?Th1gnJ(+VE*S>6lbe@1XBtOxmu%?DRal}@(P z!RGo7YT_{g)!T}DN#+p$bbzyV8`t%8P^siGy#4&2G$zm*1j}xYT zJ4pe>v4>g5=Jh~v+n7o%Shjfvs3kB&l_vj-mCrS588|Tg1D0y}IU{B@%p!|I2Q)wy zhsP@zY|tNoON3OIMa&jBt*?(c1~YPBWF4ZZG?S(l zdW?pe*Y0{o3dVe$!^UU&E-d!A87~K1?k(1ynG*PM*U`3M5=Q>#OF3p)deZ;*!sZG$F2 z=m=YLPHgSgAz=f#w7dn1o841NXmgu3|9>eB&1$L8Z7zJlDqw0cD8kdnKm$Gybf?V{!00Ed?zhas?V2Qy;D79aXO*Du8?Py`Tr>C5&PE>RVDtwJsMiz$}NPaXZ-uP z13#y_3Bv-%(HN%e+Pj0QYaP7Z-9j&Y1kuS~`HSZ4p(YG$;0`ddE@$skyflu}p zBma~PP#q})8fG|RQ}Sr0PzbqGjpsZVF@49EUQ3%pD zcC-k3qc^xky0ZRf69U2@$7_Ney4k)@gan*xzakZg3KroFUyrpxx5r-eKySDCTyg%z zNj2Ope<~{%BYD!;cH22tvORk*GN4lYA(kNFtv=EtUh-s{&(#G7>|%L-k|UjY`RoMa zE^on7NK0Z@|9qH2sdY(1KVJG*fq*oOd)*s73yX*tECqY@(QXw8>#*H!9q|+L8wlDC zQp7vaL!AW3W!7o|Is`a1B%KKE-y(yXcvB?^pv-j%=1}dpS(#Px%YTs@caaWkjY!|9 zJlOON1A)byR0I1HdlKq9$Q9E0l^qaI4m&nDjANk-I%vvPv{%AY&#k*CdI??;1S*o>8 zoc6*Dfp)CR%)3BHw z&!ZuS%%eYDK5P-J>XUbWRCuS<#5@N{kCT$BQK8j*Pcaq9LS6Lg%0mV=HuHJ!P0-Lg zObpLLL51s2jhY$cH#F)OiaGTvdC|WaE>E3qHinp)xfqRNp+hkfl|C{7#|OC!|M)gl zTQ!y%|4P4WVObSuTE}x{isn+|ch=^{0s3VRm zl@DMzeZJ0{Evh2Uc?maBM)zJ?#IBe3VEeIbYqBLDx6RU^13`INM}4YpauD-F-s5@> z=wcXLp`qAe_%qd4v^8>LfR# zqKi(yvkyj-6fsVkF1rI0mtT`FzTx2x3$tzZcS~sUGwQavIdnA8Q%CRV;pU#w7>vkn z4NEkoW>)Ml*+~na0o)S!RNG$5)GcD)G)xSZzYeO3M%N|W_EpJ=8+6x_xY$~`>FZTo zeSA0uTdKdewJYZC4dp-wb)IM+zLVc7O;4SE5mI<#YmtMubBGOx z-57uVP3TF-HX$z8KE|yr`umDFJhy`76~+G;=#wUV&8VO3|+?@qNYq*f>OVM3l(K`HEqK zr}mFm(#m?xzmGn-7+R_Up1{$Y9Mm;Z5T-BhU7M?F*>{9hm{S4+LEdU!61KkLM*`>3 zJa=o#?)v){i5Q(ZwdE{R8tFVuiwv*SzsQ#iQ7o!VbuWOgi&oPI>Aqjg%vAp9$+?c1 z26$t*!!_;%Mz8qB8gJQ;CN9IbRKFM;-+44zux=MP@2c69dP#BO4tHZeqATjyKsZ$*0(X`K!Q&VGiZ9-76a(b0tvx7~7Hoc+%_%!TDTjj-iZ9Klt@QcM^4O@1|x->KzFf zUA8Rd9eDcmzP9&I?ZE-EfTK?-_>O_^h_0@x9dJt2nr7mp0b#_OHrWbDz7jF0t~S2BBi z;*H$mDphs@;ROZbRFR^5pJnrAfalU}?H_vFMXgba!iVl1N))BO)u|wSB$w$j_`39* z{+_rU6jZRW{_OAJKg25ZgC)*$Wbj8^RME6?r5F1_|5^<(VHK$l)oC)+OZ!f$J3d4aubM49KM^j4it&r zIJpG;c%f69P2vse-RDX9SbB}7R8p~W09PkS8J5*4S9+#9-_oyY^?dgSAwKG0wPke* zrMmycf6Cv49w|CU&tKp^XZ?QX)63o1zooHQqRn^fZ{_9{m?zHTqX3CJ{^KDA?p<#e z?!+el4DVVZHr1{v%1Hz$7*LeZM$`}9Q=}w%nKSHB##hRIvg&WC64Z!N7JnIy@9?g4 zV#BL%5!lbxPfkERh2;AU`4!54OY#DARXduO+aU>f=i}aLP;|D zHVnnR!#N)hCi(r1+1UBOwqOE;h1x+d8r9CLUiv6;qFG0yXV0aU-O3)J>o$cH8PG6A z`qD>!W;}0LR|?DqqKDS<@Zn<{j@a)zD#CwmbGk?sS=#{1>4b>vU3ln%(+^aFP7KGu z7NgAPUj$F{azVFv-L9V(HE|{4_CqbS=H=eG9m?Y>oBj5~h@?PQuwsGtYUX)X`EYT{ z49T-?OV8W2ZcWXn%+x?%y8V<|Pxd9JrVTQr@{MHD>!mrb`QXNZ z;GJAOG_}<++zahHP?Gqz@|M~26TNX(B_rugeM;pk#Joi!khJ9!)c3;nPSLh+cJBp8 z6Qug22en~k+gY1kPu&$N=Z>|W557iDn0S+0X)JalHHb6(Ee+hm>!@(_P@Q?Yt!Y)H!Ro!vsFnlN;FQKS#A zcuyuOHO*~n2)T~FTskE*qLmYy4R)>_9<64q2Np{{)=Ry;;h38zRx(!s(j$3vFIlR* zygP(&NcTRRC~8oe|5#90Q=q@t#Fh&*b&k0)HkDzm5xexej?+|xR_;k!9cnnS^Axu5 zD{yg~8cWbAOdRtir&0=%u4Vb@t_C2bL0cCEU>aFLUfGqbn=@7E6|T^REWfmwOZo;P zffd_@AmwN}5COe2jHKxH^_&9sjW3cKrY1XyZi$ZGLr9R*YJC1VJ0GFZWm5T(hy+uC zM#J-E?X+8cqF+kyT}rLBVf4Ivdbaq;xS_coB{xwC^W;tV(~c!{Iqna`owz1%RbBYd zNcbgn_yn{*eBG5@J9?6#FrtLqWXmt@*SV5?uJqTP$Mmc1@|I+#MV|w0fZRg}Or6v{140U5WEVzYa!#p{PDl}4G-}tyXMDd8XbM3L`g7- zJlv{BpC>4M+J~_zPL=c1Hh)2A+mc>o3q&b3Dz*?6L2Z1oXpU&ahu&t~S8!3M{zhSE(m#A2pS88zYxNd(+vdoC@RNzCV zJ~nkpZ9?*8&F5Rnpv!LC)TqWtp1UD}FXrdh#1IT4s-1MwRr zb-k3m?{;Xn6eO4bNh^li4w9s{4(vvr3{ecTh1sr_o#&*;)c2!1cWVAu*rm`Wq_LUR#JMv)YMbhdl)zB+iO1WdOEY72O(Ck$@i?oj<*31> z#cg-*RqGn`(d3JxbEt|AT!u#YBm=4`(zH)b=8-g)_%L|z6>J24JxAEyrMdJi+&q(g z!&XwTB|#F&tCW((#OUefibu|b>9~wTOhO?aRFtE4zw^bwvo`7e6l%xRU8ws%tWOZD z^L2miH-$Cg$euQR!&}=Fj6{JU4BvKt6LO_1bOUl)br*0T^xuCXv>=kkvOl z#+Klur8x5tfWXXModK+WU#JJNk{A)d9Ba^@elV(9S(t6zB6MWt=wZ*?UgKNx9ehC2 zeh&-2s{yA^yB*r4qnpB!+eT#R?KI9DrL5ot85VZ?sdcYS^^@CT4w*(NM^BL-Itivn zi6&fq)UP+8XrixZdjHbR(?2tX_3KS*!bCpOM5fnnwvi_+J%G-tv2Vko%nZK)C6c#x zHn(?yhbgT8xE7b!B;=P5#yfiUf>D%~!z>O}HI!)x`L~BiNI)Tqr%VnC|2;hCD&_wL z(|;I293a+s<@43^K)WlG?ME}d#G*#7NU5B$TQAHFoqgilVVa4}z1wDW{T^Mb1)V{h8U*(WGQLIxSG2c85M$X=j#n_-P%jkZ}&7s z2}XtSRRjXp-?SV7@EgCTaABW$KfUS)medk=+|o4bOTv7QQ3iKyqE?03cJ$akp17gn za<5Y%Qax9uat!qRQ#9c=?NM#VQT$H{z)qtF!F_L6j$|CAGI0U9?81 zy=iNYM2(1uQG2AQ84?L%kHn7c|K|Oie0!4f{LVS|eO>i9+tQ z|9fe-7c%kjeF+=5PAdb(^DrY}NRN2FuDeXBjmW*YU1X@bC0m6#lGd^<-`bYSw?b0d zM$4X<585JhA2YI^A{X}a$ob=;;IOQdyx7Ti+9R=1TMP?_XEV0iCtg$Tt{CI{a&7*L zlxf8c44pym-7>CZ7-?@+cIHHB6Uf8K&b;Wr`&a)l9l z(bw;IB^cHQS91sXXDhHdo;c9xrNt7pWe+rb9KLpi0wuE=JxdVlM4}f&=~w&RRm;{w zEi?A(z(gP@Hal7Tw?Rt9SgMeQk)U8(m@Y%!W`18boSmrGjC0TSe_>krs`T@NMR2;S zg1p!2`;O=xo;T>7+`%G*B;V_)Zo0_r(ELZXX0$;%)?3g@Ud46eiMw=!mZ#SAhg*g} zZ@)SwwE%(Xwm)XKeJz*zbpX*O1x8jyaRswYtrfmJoBuLA!+veB`6wiya~o5=HOF#Z z#iw&Ww=LRgXuaE#@O5b&Swnyf4$4duCq3`0HYn70M7SH`NbMxpL(a_p6h}Wz!BW2a zYzH%6=jKLxuzP6pvzDqO_tW9s7QO5xRO{}|^J27lWpi<6%Z%rg3w2q^Oe7RE7NPit z@JdOzSU<%}ZSh5-QB*2(_N7-ECTiD!kMHpW(a}A4^+4?!N>oI@uk1r~n-!xPwJO$< zoWqIhE|Tr0{Fd^(X741&Mw6U;Z;OyTN>JEGk<+&Z6aS-o6Om$D8?h4+IZv7~mqVUf zp4C%_2;wR~r&{o6S5G6ahUV$03Qav>&KmF87TdT$Xu5{>0*tmQ)LJT@Fo+~d{iP-_w~fWTFdcxaMASQt0-sd>&^FN{NtYdVIIib zw%QC3{pM>;N;Q|9y8|z*E+TF|GA>jG_;e6Bc?G9kv)dhF%$%TXJviB#<>9blxCbNw z{^~xrI76LTSZJKnmXH^u;MGE4(z$~SFlOfF>6`k$qWi-tj4}ImLn8hIeRmh+VZGhs zP&AtMT6+L`1HbPXP!MLm`50tAMOtcw>P=hoB}L-dd1Y*%SD4S0lQ4DcQ?uR{!KKVG z8OBkX3a*o`{Khl2a&4k(xjV5vw^aAxq3H$5xUig*?io*Eukm7W>;hZ(J-G-zT&p|8 zgbP-xnNvN&`|FG`TE10uQFrCQw>GrIdtpx)=V4S6N6)FB=sKUrKxhsUq7ZtMFNx0O)C671zZwiu#crBQNbx5m{ z^?!5(nDAMbPwZ;57C1X|xPTf8?lLj{4_$DJh{g7r1z6GA*|{nX&n(%^|*1KQFilLY}SWa$(XbJtM64* zc6ikkSyvMVPZ~c*0d!F-MHX)vW2*0s-v$(F#*{W7#Q%j_J2*C{*I8!Vv$6v6G#Z&EZjZ}N(%6n})`p#s`KYxP@e4D4E7ZIy_ zuZm4eahO9)h^MGV5sFTD{sW+RLbzo>-e&1r4x?VoQH$>RNRKKR9k@ z;MB$Wl7d!fiv(2la&vYP<$iV)(RAQeLR#ne^|4QpS*-wh7A1~SX>uR}(d|XErF`U-s9&RDDik=T4&Rx%GZ(TsdZUo~w zxQB*BVd)Z6A!4z%trISX7Ds1KdRaKGeE;)_{gdL$^Ju_%xF>9awD&vn&a_Nc>6d7O z(l@Est~_D7R4BoI9%=GDk%9643r?md`n~kg&#xuj!N}mx;&W#nmI%|%R193erFmlgw`VZHgUX1Jp9P7=T}F z6E=6($IWqtSb+a3xy{Qdd$i~QrTuZVKv{H0{F?&=ccEH7(9PS912_=scj|pym4rW4 zQ0|UskhxeqY*9#}E4h!I*pWQmJ{r2Jo42e?IAD)u=X}fZ4f-~JUjj((a0?(0D;BWwp|EaQy2l=OleE7az7!Pt53`#Gyy<8^I)d02MF<|W< z?dh8l4xe=zQIjaKanOPv8+>ia&X*$IbXo!%EEz^=mN)d-;dTGq*T>g7&YDriEDs8f zX|b5O3S92@6d^MM=3AWA^xM`!EJ<20h}LgQYw~Roeh&*ZS(&Ue#;>+%J0ZAyfx68x zIh`Aj+cTnr6NUaXOsrqYzsq~x!#ih(o6}Tf&;c7Qdy#hUpeekt)F8*d^J3>k)Zz+K zd^&s{7+9WL+0+EPZkFsM+uu7&{2VK0g?2C|W#Czlh!m#yVnS$g@00K=Q`UYSj6wvK*RH;O3RsfiW)wNYiH=@ zF|QQqpn*@uL{KQfO1=kUH>y$XL8Z8*Tvz#SPSZ$d*>hn#tS;>e_)66TqCy*yt6t3Y z%dC93EPuuPSBkUtIauK(u+r^qQ&Te$&VwmWee-Eyec07k|J~3tZQ2To-F<0RW-?$m zezP{BD6VyQPD26WJ3@=vBFirw6Tt;$lHv#UJO?#;v*{ZvGC8MFPH_Z*?TDt+@kn%!dZ%|EB|M%)9k zMdiAg*d*u)w~`KdOq#OwhS&F9Y+S1%KyO;8WOCW4+=bB}HbcBxDw0E(>?wy}l*LF* zu8xj}cuv#f=AG>mb8IYRqyYqhbot8rBC1i!lV097%Aqr~TUbu}eeV-)5^Q>COlOfL z)0Qt;nHFcRz!pnVWr(*h6uyV}D!|Uhb>%A22z?;(_&#q_F{08z&tpOPj8Me>I+Bm$mcx?c`teut4A4Ut z=t1ykp!G?|{-ev|UE-pG61MXNOOogRx-K{q99N|?Xs0G4gW;z$psR9K|K`p^g>Ew0 zi}I&(8uz8ppt(0q<9^u}gC3?u&V4t-4195lR{QZyEK^iNos~sEHAOok{zkF2CmEff z-&i82#<^@^#Jb?k`4*?X4%nJ$46etgxvmOC6t~g{X~}c4vgg3`zsaXIIuu%i6b%xrst=^z>PR z4wa$)Bz(9>1j%d>*(}>%*m&i(NwbToCvaburcLG9RsX(&ZXA0oc*Ea`oH4)3kl(xM zku_8>wYB5kvb*7{)UxuD(#)9w@mqMV{4iK9sHEm>s5Z#ig*eu*IGHcu{FlbCh!Bu_ zd}6bigd=!P5AGhd7f<=RiKoneuq{}kJ?6kC)hM=J!xY(K zoY=r0FiROc%g8QY7QvQlqfBzOazJLwW`v2V!qa;>0Vr@_lJa(&o0e6upvgmh))93n zg{=Gz0KD1^GAiL^z34m+CEB?4Towjv!X?c7C-yiWYuy|bY9Vk5dJ1W8raZbW|KX^y z8!u;*NRxC=^%q6vN`!fjE;Qfgw4yP$huk3r~*^ z>D#ZnZ?Cf7>b}QPsN^>pap$nAsCX(N(+@Yl;nBpGy!DR4x;{pDHxAQKd~sn~=ouXM zSN+z>?xs^wiMvd0x5?$Mhwi42p6*6-h*>p;bGl*#rmDA?mmcjl$kgWG6riUS&(BvT zbZM2qaKhGE>&F2xRLE{EI!xBQ(`}6J+V^m+qnXrY2(@v(_Sgm5;XeX$o?nO%xhWrI ztD@uWa{$IfNBLPxE!JtYbptFnZQN1ZU`Soj`8S?lmr56R01~949WjxfKn!DJMV~3f zbnyY#YB{^=$pDGwOgbhxtQ}b)r>fK+OgldwmBaixQ(>cx%S%TJ?%t*zXpKWOcx>?q zq=QJr1sIfbx41GGum0g+GsUWeIOn|NUnq_7p2$=>0+oC)FHQUP>n+FKr(RhTY&WVi z1I#-#|K)sa(|%Si$VVT`%L81^4F#O5)`gNEJ~t}n{*R6o?xCA&BgPR!fVki*2?;%08u8=qVlUsl>eXYRxtCg0(5X0Glttd6wWaBpaAF1ZqqBA3;ZT5$n5}>g zA$CJ$Q_HV`vLRhjwPh!+mXe^)Ab(_w3cu=cn_FhkWh=acHk$Sg?Blds@;#7Tg(A`? zCuUJ)^1h`J=+9LHp#oTI+SQ)=!ZO-?{i_$E$g{y4ZBa+7?!0`Ecrp-k=A7+NL0YXG z9}u>oD1w^q1r}xuv+@alISi`$Iqxf|glLU0%;T^1i9j&$*uMM+LgNAYOjS&4C7PA3 z(ZJ6@!uiyW_z-_H4dwg!lyGjZ%w{V%D?>B51)N%f>ssIBcSW3{Fv}d@Z2!&d;`s}U ztUfZ=I0@XCqkqKYXZA|qZst?5GsM@MAGL)YJ1^Qv*gs?u=%0P`xizfBVyt=&i}d}L z`@+!R`;b;rYyRox~K+<-Z7jWa}y4-du2pt+*G~@+8=LAU5msk(&R0;5=3m0(`p- znAumYWly2?nJSBWgEkKM0R;=k;l#w!>nSDCk5lu)q;UR_({QDrDzxr?DaDvl?s*_U zC-;#z<|yY}cekV{;inuG26Dy2$w*p9Dxu*p?_+2@kdbCt3y~UH^lV+~5c&(4?k1X$ zo|j*_`s*Zj$wrw+2a!jMhznCp)JQI7w_G?_C2L0!l{}lx?{^n|mw0oVDTZFqp75E1 z+ciwPi$BeH_TdlXrBgkXMvTSs!{%c!x0KU-5%|r%#)v3V6XDS(5rk?BoKROPW<@r4 z#tK~rXJPFb|^Br4q+Ym>(|@3oG!q(me2^&738imW&A$P zB)HoLajs$gR^>f+2m{}r2sG*bamMYR2;DH7vHGoY87Y89VFjw?fS{|3E&vM?3mb-t zywP%yNkmjUB*30hvSZR;ec*fh2-c>VGg$Pxzt<}-Q$FohM;(<&JyTP?^O%c-S|^BL zaJi+-h3_4&ThP_!R4gn7n6Sduvf+?yG6oIV$>8ftMi^AXk<5Heab*1G7I^Q=x? zf5&zJ6+v=8Xf59&ZG#UKfLx!+Jq7l6%R(g5MkJblojqn#nhqEr4|XQmwcSq}eL<`8 z84|1ek6R4R{&+aIddqkuSU8^cpOtj2LM4vQ^;{&;Wnb*Y>C4Zq-Vb-_r~Diaz@nGk zr+NE9I=NwY%bo9;PnJ2Gcz+cckJ~Vy-Bv!XD6f<-hjD&*p_{9&B84z5Q8bLrP`DhG zx_b4JkYUX|1V8%~v)2~>i?meOPk-*1l!S)(teSe~5N}#De67qzk5{VGVmu|El%btl z4+|E!XQFAs*hmZ(^GHlWWR5I9XavKppFOb}IcNbljmU=-H9qI^omDNKPG)UB?zTlt zbJCCqgjGZ2FErzg3p$-;q#3gnw42%;!13_v0s(k$n}6bGV39Jf3eT#;EhS%P_lML<1l9PGJdpmk6R3ThnS^ZFxf1ucbm|-9FLuL;A4o<4|(hV zFkpVBGW0C)Se_=?g1whhpHe$Q5dVNOaByv*Q@bZ_GJHem~(zW?_rm)raJn$+mPlS?n?# zF+@4K0;DrJH95ptW)UfUu1_4}jIGjAtg4=y2Y&bMaKvFL{E7l;uT=sk*C%pb_QIbNYB(+I;`! z@)mbEw$wh8TM!-uGJ5ew0Ty=1{1x(NL;45w-z`8VL8IDV@BX4Y5+ka(yr~*q0uT6Y zz?OK&*&58EZ&I=5DO(t%;O5f$y@X_pJ6kPklqEhrP`E+;TAW+>%}4 zagW(cUM_8;n$;!W#)^c3zFO}?P1(X0Sd|O{I#?T)ojKV6GcLOQ&X;#1?mA3aq~9l2 zn6!3Vc*|7)=k!d$$sWGYQiqD0pXPg^5^Lv8=}Y@K`Ks4Rbld;?YlL**%8guE|ue?vL?>MsY)!F?-sR?&;2@5PUV{`#13|+d7{Jw7TFG4Wzb-=aJg>-^%ECn9++>MhcOTC_rMqiI01L(Yh@R$vsB_LBEVO38tY zI-SwaH!P465*Gqo)5G!4j~z72!U+2mB4zYfwWA210q@iByL^y=sT z^mXj4R@PKdMOK`?h^cNikG+xKE(=$zEo=05W8{rlB>N)VP3>&mwQ~_KDxOhCrz^Do zqvJls=DUY9%TMUyf&8najCh>zbpIDuaNG-Jt@}AOYReXXx0L~nl>K+@(CZqy&+jqJ z1uMH}kz-aB=E#ioRmfYvh7#0BFecrm=MsWXTa^@B{niO^9S`dgaCL!`t0Yt6D9d=7 z3n(8vE(EH(%P+@t|GNLmJoff!M0BshIw6)j-BHTb`m=mt=N~QBwe*>(wH+yH@3xB{ zx+Ef^Y5ZJr^f76Dylo!R*aQlFb_)|cvNLg zc!!5}Ia#9O!OcDa_42)~b)`Yuio@S1f+)!@fmGYqA`{$1@P!q%54;$Z9%d;jAMFe^ zKGLb3R|r*Vq@37MS0S{=_~RtBJn8vQI`Q+hbJe!C!%gCObXQ+A--y!Z%7|g_2$o|I zZpP~Mk!ZwCy%x5r&XNo9zj2`JnZC9xJvC&qf5dOwkmZjQ)1-a1fPJBFe*3R8szyQ` z*Yf$hJaS!hhq7C}vRRAq#6ca0SFVu^$Fn`{hVq3f%&j$t5J-bRa)qYyR{0x2Z_BkD z3Kw;LynsBW?HJB+qt_S^Rb3x04yw|#zNNGL;P_Jf8j3S?%nF{Vt+@24GV1xKvgA8m zPaUV2IJ!j4t+UB)I2<)^$+tm*^Fts0@@WJlh9*awmH_uu=C-c;QRu4~xQ}7eh2zbC zX6Q_-Y$zj^mdgPx#W^CLD=h3Bul^n`w19w1{u2&Jmml@t^a;wu*BVeGYRAX;7XjPO z7M%(5yIjXZnz)?0EalA0L&?E8>aODzx+za6HVZxFc3+yXDjqhu5OJ>kX730Nw?8>1 z*tjXZpq3Po-)TvhCTu}eGfrS1ZOF=hG7uM&5hCq7_{LW_J10ypCd1jZr)Tqv^eD%h ztsOH;Q+%kIWHw`_W78s1B)>vxElT{b;f4h3}@2K z?~jugB2GkoPUuPp$XDMRhTVFs06&&{k456Y#(nI#&sJrzh*7z1rcm**s1eqLk(*|D z7%RWZcdyh26nlEF&}ZPSjAj-k$C0f-H*v&RD7CNz*l#ctjsa9Aw3*FAD#1N$*7QH` zd}{1fe{8mL7F)*}==N&w`&)!OTLJDYBeA5_{DUMD9T0RSGl3E4cA)MVSTT?sr{DC0 z5yk$AZvE4VvNCFgW-9}L7F&bQ`ijuw#Ug@+&!&yuB_|!YBSPbKszW3rz%zk_f78M4 zT@2(#zg3OejKq&t){WF6?FbDl=>? z+zG|X>HHif^N18TSZVrR1oS1P9blN@AA7Tg=0YNZQ(r|Ilz!=`uUj?dnLVsl*8z(< zNVwX4H^)i#VQY%s0F@ReI2MXm9#&Bh>Z9|kpxid6>G;goU|lRf?>T*jAs97xptR8zCaHhR0h5Sp%1uVk^k z4*`%>$o-~id+@5d-WNqb(-)4Ks{EjF=g(hm@q7KL;cMcU+mtvx+FLVT>gVcx=@ za+K_CGnOz@C3h*iQy_&v&R;4}IS!3QR^s$ubwCF|66~sGaOv3b>05Yp{~>OfkgC*g z+wS~F46>!YJhrsh+{|G!v~6)f7?~;+Pw^0Y0_9WGu;Eq68&s$mo^^#b57jA1WV6*dxAnwct{7*VJKu{kw9)pNX1aG*4_+n z*W;DbuY;!viSPq!8ae^kbV2X`mA15u4&92iFPMX&O~#n>vhB>XTeiE|M?H0|4RTem z?r{89DZrF1rbB@4gOkstUJm^S=(rmV!DKCU;|@8=3$s>&}7U1Y=;$c8n1XeF*5u5zkx&(h}U6HioK8Q)~_K|DLuZI5(!a zwjk{Q9G{EMu<15<*X<*F3c5w@;g8Mn^M#!RumTdA)k;YZNmt9YCGyE2jl&u{QyiXZE(s?WPn3r^yiY-QP9jX$U`Sbb1D*M<>kx6&G zx|HHAbzu=1M5)UE=-gDLq*u8}gH|OzGs0@e_Np4;74nmWqyP&K%SgFVdELj(js44g zv{e?2xPJZqN3UWl%5arCh>1+2l7Q>NG1465gN-m z2pFykAa&=CKYbnw`X!Yj=JxU85!0vTXO$*#o+}^heXWD`Yxcd7A_6q^u=uV`!}7qW z)o+u9dDfEH>H6<-uucRRVs-5hj@x(o)(AAg>gWY9LG|xtqH`*u)THqM%jk>u3bIB} zJiJn+7EiwSX_w1KX*#ZoROW)jN~qI(h8vm7%r`;0I^JG^3Gc&NCXG-F0Ui<2EO&@n z<0S2ape9&zHCfC09OF5!vixJO)F|lb7Q?33*1CYhF5WW$_0H0B8uYHjbjbwvlXGn0 zg+%=2)Meb@kW6w9oIjVKMLuY3hP71L_z4Y{n3~ZSUY0`TLf~2J4g)h2t%*2u>Z{lr zi7B2+GFRILpEd+5*!xlT4sm_;e2YNG6$|d}SB%;&%qpyh3CZ|v?bf1DMJ$e*;0c3; zXN~B`UtzNSxZJsf+BpB*QJ5of+^CBecF<6|7m&;-J+WA`6=SUXAKjfnhSb>w9Kuuk zcYfeWt_Bsik@ZD0SMFM{tPRxvz+p2e7+E{Mvz$0>eC}zr*6o{^o}GFo(>(#+LYB+Rmp>$q^r(oJ9M!)I&UMK6Ve4y%4nm5RBlfh^+XLx6&UJRwbJ z*WAprczh_jp89@8)ALE^2VVM5w1X|}5&tkA(U6|%@bQ*uA^m%)p6-7R9&!xK$EF^& z0x-?%D^{S=je2*a=MN#=AGHUPm$!pukna&*1)|*_D}KT0S=aFCf~X+{6oLDz<0PeM zvzyiakatSgUhwk1~@6XfHbH zl5P|3EsDmZmJL(?F7WVi@bW{EKD9s%T2M-*o`!A-pMOV@ED<7GT6Mh;*lW^4_Jt-S zEo8qDi~#-HI;>oWC}*7g8Lyr`>WUvg{w{Nn_l8|NeDTpXerJCmyr65fO5MK(U-@K< z41f0fnFFIQiS1SZO3okaF~COA%CNMtB4_()aVAB|GDS=9hXJ_~WGdvz&nBAlsWaV3 zXnM`Fu6MJdkHZb)!TWh^jB^QHr+InjmSMc2%Bz9G$gqP2$z&!5DAVD!&k3Z~!b6L` zwkpEe=27eE^x{D{X~$*MRb}5H-__>pZru0i*M0Ru7av+(hY0uZj+ zCM8H4Ilh&+)_+w-tw{aVDU;7Lt+tyeDXi~&d-&RW&s!=x>Cfii=GVTy2kq#IIV4w{ z!^6iH4-PHJu>IC9O4*RxOb`tDut?l=5b;zaUS!S-zY(4vixu4@m*jY7TA54@MEF1> zw6qs=Iarr!eLWJlh7(O7z_WYncTueG>=d5rA)^3jKMg+Yt8?s6LTe+)(;J z&@{(a)_$GlbMhYrKG{U)S~OJ-7Tyw0(TyJM4Zope{j_~IT6Nv-$?vhLx1Wg3@4EjC z8GTE*JE4dt!oB-Y+>+sM5?$V7Euf&Z9k-_?uwIAHLPiWNa{cd&YxeUpM>Xvooy4U z+2G=_fv_G_OXC6L4Mz!jw?^|1^+}mcAT2(OD>IDuSj6c!d>xbAx9m5uJozp}7eZ6> z44#Nf=7jCW!W(;p*oiMpel)7{Kytm>2P?i>B$8qzOXcB73=GE^Ic)A~($)L$tm?+B z(G0#zuW$TVJp?d|!g-|{(i^2my$lmg9B&>16yj0Tam|b84s*v?8_&PsI*1FoKUZT1 zpn7LlKm;>N3JeNeZfKwm^=wk*^ryMT_3nhcZB^|$vdzGUp`|QU>f^gi3k+fZm?bku z>_b{j&36Pff*}s(;2+cy@+QL4S{Olo(w8~&tFgN3O~zK$K8`@`x2~;6{*Erulw`_K z(%e33Zd6YA?1WPeqB3~I&AObg?$Xez9&cnKv<^KK*ZHQJ>k6+7x!n#?1-2b2=uK43 zxWZ)%J&m0mp2F}zfzb+AGC{}c6Ys@^IJR`xahQu*;z4Vm;r%NcQ6qm2R-7GO~m*TrNEHSoR z2nrYV62h63YkV&@6ZLF)n7Y(cy>qK4h`ORLq6_ZAEa>Yii!(h2Oa|O75c^fY-u$19u|`2QkBu*3UjZ62D5n1X?`@{>cs( z&BVVCqW}P8R%r0R8s@&YZ3#9(lBG5$*Vl}&3u!8S@sTsSlkxHfX%0Ky(L1xXXG2!F zTnGDUVQ;hAqg$i%gyG&%QxPpS?VO_;v_YXNu|Xvr>7#h>uFPOoE?Q`ly#7j zE)yw71ki{F!86k5O0^@YI{oK`LJ<8cuQJp6oOj+FR=J+q3k@jl`=!aNL4KBcChTO z&q=s)3%o(5V%<^;)=o*wZJ7|%kiFREg-zI&?DBo@vx(Fd?3J5|08r{?J?ht_T0g!t zYrh$C`JhRU6L-`qxS*>P(gNLNLqa^?3p$zdjLmyKIeg2Pbfy9=Oz1tYBc9~*oZxMV zl$i&mo8>ztD{or^NfGT>O2oj-Qa%uUz?d2_bG|ZO7r7Fl()Ui7gVVIo>N9I4hbX&{ z-S_?r5@J6M`J|rC+5bp+<6=Mh4t~`^zFl@9gm&g2dP=UXso_6)!whn_G%TZd$t~_j%>PW`=p)N-XS>cHP z(J}k{;(01~-&}LgyLT7+jPS8SrzC;W0+1R_dICaMN@sH1deC!q4UwLPlHtoW3KY5! zRW*S$DcgZSb?6n}^z^-sZH|Y@2dIfBCk`9_zK;#g%f0h>sOp0`zMgZU4vO{L&+%TX z6&x4s;L!8VK_~-s0~Wt51PZ+U;JZHT#$U-_(O!VzmGU0WHV49fxk`(H6qtWw50p_C zzTH@rue2AdVDw6A&hY^-J&DLnA<&>TgF6i6+o{qPSdg4s@AunPm&c*?4uLdikwoad z`KS};rzY#{v-FWzM&U0M29{66-{#ii5~0-t0m(P2VbX^%IZ6>{4}pnqDc&vF?&*~W zKYj-JjXnl2*%{KXVDLEH7dQ4ChDX9-+M^69ZUmD%US@^4hFIT|_sCIs7Q6BvoH46I zM+NtN3-Bu7`fjVwCtG~lP09?Ta|c1nFDI!UZCyZ5>HbGjw;MlP*LDs~UkN%P5#i9 z^9IXt&Gc-4KK&DMQH6-9lqSuimVlYBjL5n9eIAvQkRQ6s?}zE$5cvdbhmBYu~=DG`{r6PBz?ADywCrlIH=dzgV>k`^QJ?t69nUTfIP2};DPb8b|c;l`-`V8`OD@Q7j@hg;y*eD z6;ORpJ`)lbkWgHB$?3{Xw)UOiu>FmB?6pnER0*%g>&8$lbY#_nO=TI+Gj3;r=+Y4o zPbqk0rXaSP1a^dTxyBFO4C@J`>;_d>S(=InK8cdO)2cTcWJ4~7D55&OxG_FehCij8 z%GEooCcL)aOtt${I;OEX<*w|&@J5nkGpd9Cw|6-Lpa#?Ht*t+gw_Np_5__l#eMomt z#3wczBt84#j|-{V;U3JhKb zjIpUzqqwub>rLdfNmAg4^(T}V(kBFWE5WmEI zMdic&5Y@b0W$=)ks7`rHxmr%0VF6D{6y0xI`s~Ex+qabwShOpC)jeDER{R&6rcVDc z4)wpZ9hb9G9)5MW_-y<@y6DEeX+h6XUz@qIX_KGvNnY~Vq-J?`XYJJ>hZ@A@-486AV4@EI!*PNf zgK6T?^lXQ~GRlOuvkG8)I@@Xq)SI`)`4yG(+1M|!!8&ROYEBpa7C0RgG9PQ(sIq)@ z_iEbaZk~1P31NBPQU&$VCP#%wUNvGIpa%?(=nW*^B2uhwa?o)+ zYG90r)SRAiC{ae+@>$O_Iehh$chC2TZNbJCe@up)9Gr`q&UnXTG1Rke ziKnT}8h`uwa}!Lq0$0uldiKI(PFzkh$eZ3L{+{)=6D4|HwO`&1UxFIGZL=rBTt%E{ z#MBpU!7$Fm0wJ^BwM#dz0n!LN`07bdE?(ed0m|~bnB%j-e0?>5Zw(|foT>k8{mlk? zo$Jmm@roa^^6+D_XJAgt&iR;J`fa|j`C)}YLW9P{x03Z|Z@ulOBnF@X-op25xZ?ZY z-Dva_iYoK)dJxwkU?q)T`-i%rGV@vG2 zoFLp(#!w)~tC{KYey-F5nV9-=D#w`8?NeW1Uhs&fQ>eo*Hcwxb6^jp;iz)KaF+IC3 z;B2HjWpxr+V>VUK=L>si^Zf3pNu0?*@8h^!h*YLTw{fHL9Q{vgrFdZ(ke=xfo~#RpJWV(3od0I+MXJv=D)Reo3Ci?GU50iUzH##E-d2<1 zEEQz+T4WFv^bDr?8AAOF(nT#>DjW$EC!cbF20(cs}KIcHH z!@4p7d^xhPAC%xo6=+olv``EUOfZCUFc5cE(0sgC@%3=FOkM1VUr?@O2iDrN_;Gl zBoo=pnZ$a*w8z!_T#mtlxB%9|Getk$edtYHn#0G&yL+1y$Y*6-9@XVow>qk)20YaB z&Kb<}GHQa|}~M z^{(pLWKS#Yw>5O7b-COy{eI^cT_BIvcGD@|XUCelX=|y+YXjIAt>GeWz9g=hI7s;4 z_g+KcAFmQN=Apc~z7-G!PHbQ*-?ir~7dIMKH}M|1IjCR}Ovit8e!PC!@$(HPbp>V+ z#wVSxs&J<+9bP+cT1HL^7JQEsmh{wf*C>JZaYd%iYK3v14_S|MgZzi|)To`SX72qb z2DB6g8#*?DQ4lB~@Ms;nalq#PYT-J)L=}IJ#*RCto-3;1U;W)b^liaQ4)Qx>2(*1E z6B*B5$-x}^uI^I zfXT*b@Lm`Y+6abagGG;<)u(M-`h(L>G_l~~@T|Y@if)*x$$Pb>_t3;_VM+lLf9LAA zc!+xTlXi{o4p6ri25uyN54+n0N&v@@kIhfmtVbwe9*p>tXagAM$@qpIQm3>0mg2Gw65GXhvZyF_JoB%XWMCIG+mWFtFe2yU`E zQNGN~ug~1dHvkU|uZoQ)D$eZ+qF9TJ8Y~y0eLN{Mi>5CkKwJCNtyL95J`I{C_8(oC zr}R;k*w7hG+H!W>4%D?xy~g?D1;@qO)Gsly5eOII#)tRsJo)EDSIPXvsyq#PAw^=Y zdG9CtPS~$kGDj996<+TMrL#WqMgL>vg? zH0~vAD!Smq!v+r{o+73L3gp_OnPKd`zv)o^?b|ypg`PSK2}LUJBm4=!DcC#r0%cO- z*Ik%&o14z0_?{|GY~G_%^~NS-tXoR>=I=+Z;9hYKB9 zt0E!G3=8#ALgOeXfV$rykltmEfo-fycZec=2>94ROPgh;CinEtcHdH|?o>HDTCl~O znXF``MRC~xxT6n(RlrNYK!%Jgq@`E#ow>!rpo(K@suyl)an8m8?P(bySW&ZSIvzmi z&spTGuAskAE?2u$6rwb6HPy%b<+TCWuf|)gSqm$*BWuFI9 z!SQl$-RIsR#i2O)*Kuy&vk7TWT$hKzxnkkbp5;g}yXER%W-n#Hcy|}Rf=!tC3oS?1 zPYt~xhpU14I4}<^AOM5iGuXruzVX0O*xKOV*CE|62Ek3^eV+13?0yy`HKg{flO($365%LHp`pAow&P13hPX#h|qy?me zAnV?}`VY@6?tjefqTajYH_%w2|Ly8i-ahT7Y^!S84d0v|^t=2YRII^O(--_~m$P@Y;zwvpr$nmb%*%?TZxoH~;s<+YNQ z&&|~rFtp?DL))UES(oyN#i67u#UPg;qxK2kZU2renU!tq{>ACl2&vK@>No#mPkgOx zD5K0SC=np3aa2WIJ3QBOs-`zw=Vb^UH<*|&ylg76RwOcd+2n_>SvA5SY3U<=s4*w>Jgo>CVYi1bX%2k3!8URwbE&3iD9r=$X5>^KDo6#b zo%4}e4KWS_1DKJ;CDDzI zHyf;KOx&!De_q3!4&1rvI(qfTN)u#vkw*33^YfV4!i0S)(v-HBk#goS=_!4^>(ivH zE{HBnu)Q587<95-@4d!?|H)fU)PqZutl5dswfWAI4y-^0;SucvVVMznl%)eezQIyc zUh@k?_e(#rF!~OKo|UQ?5q+>1ss~(jPM6x#3Yvj{@wXWPfNLX>v&CaD5-#q8UDBCy zHn^*DLWOrgW{J2N8?!UG-j9SHBwA4*$%B%a@^8Xu;Qbb>ERxbWV>g*{U>9tY%kJ&o zUu-}XWFy4wPs5>JZJ>nj2N1=D>BL(tmV}wv7>2Pm9i` zTG5N4xh+l8v^mM9Iv(wGv=^lj)&EoC?ad4(af3?eWo-`Y{)bM>soYG5<*4VM{-Y~1 zUA*{kTUB_gh$jYR9b-%@!3zuu&K!=M2iLZEmsl}&3({OXLxe0^x=4_~yT^N4?{m^Z z@4B~$KhzusbaSRJ2koy9pMNo`O|=UKy78?3^EcdPz{3&UU7H;B3uzLH39+;j65(e2 zk}wGIaa6dGA)}X(HI^FaGew@Mt6BqeDMUKB*X)!VOdW7}Ju!x%I zWmc#(|E7o%eZAMM zm_j?%`&HDZr0ove4G@wydo(LB8+;yDEn&QkOF>*viRd+65N=a(Z{IPG zu!Gf6fe}~k>bmk>$lS5c#6zc{cRO@1;cw_`Xj`L*)??~-8Co8>bzNoXjtG(<`rdoX z@!X>Snq$dfXa&E*TT#i0D|@3~>|h z5hC*SG+D~cH*+_KqqsJb?$un;h#7obU+LG{Di}s=F9e+yDw`yxHpN>3@L}U4V_42E z!_CKoTtUdmfz7yn*|G?$8_y7#gw`dv$qfk~6!VkV5RQC~{Z|=0sXzP8i;Yty{ZcGs zy{eoFnESsttezRU_^L!}p5$$DtX)BD_wzNpwO{?X%vI<4!z>ZL!~tokwR4*gG5KG@ltT(RY*PP}Q!o{hj^< zw#KH=%FsIS$)_Zu-Hc67Wzo+!eAHkhMqUl}N z2P2EuxNA#60!g^%?Vb1f-X2+OYd-<*>+xGg`q%~7FFaqi8yg$@9l*XWr+9Yo52G&V z5c6|)Vgw)*IvUzBa6DF6G>gf+`8Dq0^)L}AR$;;Oq@HLE39PU8mgu4tOExsrSF&VQ zV^Z@;-@uutDGP_eYZV85s+?VeM){mU-q+OYRfC@gLkO!2-Az^3a)C&Q-}z_lrv?q+ zI^n^}UNEt;*j-EO33Jp=pvLpxo@*3~y2tC&UwUR3@$jy&Cl&$3QMgg?GXPELI;1z@^n-JdFnBW;->2B+$YBFCa ztnV`UUI;JuktglW^`yRrZC{e-qqH!U98`}&&H)9laGA_^eWuWTR)4b80w6EbDo2Rw zB!czkdV3KyO2PUYgU9bF)Bp}zr#$*Qq8v{xRz?EmvY+e&nim2wNrV-K5B=MkLjy%4 zsL`8<(0KN4qF>gVN$9>QSpQ;s8gV4|rL@S#31!MIJA>#>Rc-F6&%L{(dQga;>L$cJ zG-L_{3^GK{AZZm1ow=>v&Wh&Iz;>?DS%Boa#on0@yN(i}6aqOk&M))8rT#WOhpi#% zHyq`csfe8jcu?fK)2A-q& z)J=ZY{s2cn*<6;I+u2D?sSq`MXnDnb_3~S&C;xYY#G-a{>cyC^DK6bzGMBraZkxLr zXfwa<@lKX<$-3Hg7-)RaALU>FWJKJe>2w6o+jPQAoJkYnv5_Tq~;!t>7 zPQi=QD*_iKcn1)+R5wIjFH5`z^WF#4v=A4*aBcrO2B08z(bGPV+JS+~2EA2Cb zrnom~v0|}X6A{o+{D}OHemZ4JAvm5`*t^w;jpIF4D)# zT^C6RKX9p>0O2sI93lQVc8bIFwSP?RjUUmEDNf?$t?cqwBg)WrrWQ3?S8c9+v*g;C6_^&dGllLiY7Hp;>Ej{xX0a`Ow9rKK=I1EQ zqf(a|X>|4E!7B09W2%R1+>6xehRDaofAs?^`hWJl**q;eEA;agQZ~-&A5-L;p(cE3 z^>6CXEl0UA9ext01DXe;L|0WIylYJrNcK4s_X!UFTff2v16 zi1epa)+k{FZ&dnDujiuYFA3cAPd>|7p;H8FnJ-$@5;?v>X4@%8cH1P10{H$=zUX^x zi9O{o%g&`{TYROJN5Pd<4*8(sWp_1NeV)EYMu^K5MU4xCz@gP-_AS!ph*zQdvEj`- zTw{rMLVO)BEow-G<<2ilx`a(^bWhz??e2#u9JyzA?z6_646B)UEZiq&8hYYXn&G(x zGX{QdJz2Lnjd&Ydt4}9?Mz*L&y|Az67)Ur1N}_n>N|$mii`s|P9MrBczL+927yj&t z#D026y#ApXuusumE+MLas_iEiBC*6=>|?u!5_wwNjlI@TslozfQJB;ZdW83#xV36{zjW%rXhJ$ zV)$Vp+pR%@3`)5H7_8z(WF;D|b=Rvkm8bY6_IKEg_R_) z;UEp^LU0`;eE9kGmG9B-)6^iDjQ=1wYiJ38NvJP_3r3>0vC=2aMZz3@ z9S+J%Avw#NzNHqXcXYFl0c&BLQIE%Tx^@oQUVCo3cZhlh#8<>(9>Z&I)`lP5LyAn2eRc;JJUz7kR$Yqz8lCSAzuDA+ z44VV`<`{THVW`Sqp-RwudUo-#zvrxXV-{w>JEDWkqoe+`BFw0x8WCfM1@(pP95x9e=i>|h4X|GCq)xUR>d z7K2okNzsl9QLRgpv!+?(2D@ETZS%#J^MP6<4z3_)K8I< zTzdFjSH#++ptkEtw`5oPJrnO^WAnoB#g*Irn(4sHWkvTiBiTM@i^Ps68uMjQIBxx8 z5}NQR`^R*6_q6@caXOi=VYY@gOEKC(^)q0r!bYc}uzlww{S)VylYuOa(bJg69`8ye ztz!<{n_43rtn5Fj?%Gl4d50C ztMc(WK;5xo<{&M+@J{LrMB|J2ESL)o8!fX0W#51KyLF~6y&TO6zpSx+SNJREYW-T4 zx21ci1+jL~y-Tb9OB=+YyVxP#wxd~lNAz#F&uYWVuy`LjHxEQR_PRbVI}n4HrW92# z4N3|u$hhhw!MEcr_MOVdE*3OMy&#ms@gS4>cJOuoNBa_jEd+Ny{}FL^;L94DF|ler zRH>>ui}4W1A-{9KQg;OhK{@I6p0<~?+nVP-$F$!+H7h9x^jO#!=ja=!R1)j$5bb=lyPu?pdRxQKs(z5Uzy&a;64XB_B1*@g9h9wN`q~hoZ@^j?Y`X!Oh z=fIf%I-fb?!3i+X`p&dZWurOAiAm+NFE{O1?h*6qh7FN9F#r8INWX+xk&UR9U zJfPBvkoX&tP3?`3*LXC+Qfy++@w30oM6$xg_pRO8ni`~_%k&fOd-ngm zI}>9eX&9#)?G`?Vs(4>%kyrYN41Z*IxR0%{-P0}V z_Pdo7MDxr{?KDyhge6rFTk}{%?$jw?m#)@4Xv>fql^S1<#A4q^bhi|(uzvjMN z)eTeFRm}-|sn$q-f2_W;+Aj)8uUrV5T_svGTj?7aU1)W1EXQ3X^4kFJF72=AF*=qX z{yo!z`A zeA&2Ad?fD0>!H}EN(J+M0|cJ>>7q1ZMI%G+Fx(7a2v*Oe=Y3ul4WKK+&rZIGzxbhz3JatcOtDS__N6=Mc-!o zwi~A7gUlr!a#%8*4 z$s-(laX51C#<>j7kYu|3Ac+nsd;$GlDbD%ly6{Z=>$do6leWI)R37q@#9&nyg2Ne2z(>t-b^LO@HcAf_~53>3Ase$*(0SC}a(a zC&Ubpq-80#Tg3H%TU3dj9iK7%R5i~2rKR5K_V!xhhD)7t?YdPGh4X9ZOlh(C(>I0z zqg~vHsengHk9aSE$#dGrTO0z(3`09LgkA&~w;#pDNfW?DCch@^I)pp4vp+c6w&f;R zA7C8^-5f7vflmcyslerncK~bX##8f~5=v&Jz3eV-@5;HQ6Te==Ys#2=eXX#`8||u3 zZ_(lU;bfmuHFB@$+}mF%>Sbo7%CYrsQ}Ve5wP}=rr?{D@e@xXlc3Pu8Wf(WmJ+NLCN zovgI+KE&2#T)HluI2JY1W3Zq9QEU-`zD8OGBdvK?SZHxGimoKR;a&5kPnVfHjP9OE z1-3IpwIbg%&mBj-y%krL!p@`6DrD_w;Uhie^*`Ak;6{`-h=fL=m=iFE(n%aR0Ml+f zrm~g4FR>z-m`@7}^Z-GCSy-P~m6MFCBbg*~+>tiulI)2dpfanfzJ%S|b zL+tGX2B_~24m*A1nW3{RxCAszd-(%Gt^SQ@$XDq!d*}X5BI^VCEKJjIVrK!fJBXIH zR8V&~N4}F?m()?|)=lS}Y#|Jixw8|FJ9U04* zURgfXa!6-w871}A8|H>WNhV>TqG8c`_$Yuh#^#>dVlND}7G{NdL0p@8+}C$Oway-+ z0&~*M$<|RUbsjU7x>4|=cJFNIq;$o<*^}x*&Bcbi~QsC-0e#-=~8yy28up?W+N{o@(%I&S(I2-9h@5|=2(6|AcVhVbGDIs`}h!zGWJLX|Ccg?!S=7CrTj+GWBsmup9AT_iQwj7H7)c zd)e_@)MnE>RradcuRpV!^$_hPCDEELnr0|b&MA{jk-`cgVWFk-Vo9UVfl4w115LoP zl#8FgK22_WU`G`eI%5aqDEs<_eyOmn8nV7Lf6&)70u0u9zTx-=jn&84^lAGPJ_!D) zq0HhlifiTJ&FqhCl)bprIz^phvt zes_a-98B+{_NGI58O;c3Z?hSZbS2Ek;wPqJ{P$}9HZ^5Wx{IMJ_d}(xtJL`p2dfwP zi;)91NMz67-|wPcErrY%K4K=u{*}HbZDf_S!5^fg8oQ5bR;(D{{WuS&uLSH)AN7xt z1N&Q`*RUDG7lgmWCoW>cXpLdt;cy_zjx}MJ2ut=>tLDh`g43-Y=g-?!yd(|f^G^$G z9%O}&lrthVK8CvIUgaA=GsQ;4EGFdEr+f`XCIq&rQK`nrW>X~Uy~#Jxv@$X6z=ZI? z<6b_cIt)&yQpIuH;m^VROv=lKfs~naW?7`goj!d8aKpU-PQ$8CVK=I>sT7VcQ$VuH zbC2W(u=&MDg=hXUuk_a@=R2rU{e0q|Hh~FjqU*sc7BBOro`)bp5sbwr#;5-01fYZD z>Ygb0(2}=u-^1&`b^Rida{o62LMvL3V3Hi)%xPeu6Fq5{C3_A0H@5(NbsEknXPHyt z97(t7;0wA(>D}=84v;WA$DEhd0vTy+sa@|3$aG{ZWfZL6MDXPPxDX0v-6c^OvxJmz ziLrs%IyhzDRo7}bg`)#bioT?|L_}TkLftCAP-@p&PPzQ8=G_^uACabKDaLB-K}*jj zk{2>Z92O()*NB=J%#-7l8E=}#E*gYgTX&>qnEydp^Om#Mf36> zYiY)jU`%_Az9tFVKBOU8)ne~YaWk1#fD|h*?5V76iRF9qK|-TAzO-&Oil{7WXN!9b zi>}^Uj9ldim%p2M3I}G5b|0@{^NS_V9yh7(hI+d`+KVN(C)BOrmpmVJ1s*Ip zP^iWhEVREGK$>6@hjFAcnNjx`Fs!ABxd$|era0e zHmGN>QNrOfh3^jM>u#@K)40t=su%Qzj0rtn`a*y38YA;98kW>16ruO|ZzGV$Bwbw+ z^20&RSitWcm{jXXs+{=GPp5V#4;^8G5j+0%vCXzs7GL7ET=nKA z>oJ#R((dGeh+lV{AG|A80EcI%6*=J8EZf7DERP4~2@MzW#S6IjIwW>*!sq}pR%S0f zScjb2UGc7ayM-ae@g9~R13C>}IDD)1c4JFF6C!K z$}|y2g>1KM=LrbABNcUjYT1r?5G2T*X`N9{zh@McJBMXW13tqfj*=+r4E;Sh)M6MA zzJ6$zR#wTSW9UH$d+=x7G@cn<`y|ph_Qt(C!Hbd4lD@K?z1I-)_W9SV#-6wBRK$N* zp1W}yktzKEuES>{XVxENkj|11!Q(Q;}bJ>A_FDT#?Ku3X@IArc&jIc{(;Fi^Y%3!AU3aJRG3 zemZ{q(P2O^j+p%3V6HVe)44JbR}b&OV6heMx!W&%7Ef7@HQG+>=EvNIwwiKupZ&&sS$-Jv7q`jdWXP?f}xT6KjH& zUtd(LPX=Bh-t$*moThZxWqBjC$}}C@4_v)>yPXc)YRVmn8$`KSPeu}$W2`nGkpg$W z+#&V-i9}o>#*4zpDQx@XX#0C!c?~+CeIi>0A{SW6PGNc7SN77-PTq}GF*_$fx zs>09{iI{MwSeMMTe@wFRaFalPM+3AXc~J!FBX#(SaCoByD{mvyudKfHWt)^A#oa7H$KXm; za!dLR&Y5@U3vBGWxuja7whsw2AE| zDnpAyZ-q>_F?yttM^+9K){fp^Zj{+%Ysx-_+>egdE>w)XoO18^{7ByorU!Ss3=H!k5)45xFG!h+rYA(<4h#mRT`(bh3@UFJks+J3w zS+YnaH#YAsV{xq@x$kHe3rptsRq46X0B`PNv`2J&&LztDa7uv<9+^?Icpm0mdE(j< zy;{;``zO|aJo)37tDiJFi#*=%i|Z?5b43hLGtWXDDyLjbY-(>@WPwv^JKja_;1nn$fm(lLKV{SIT|b9mfA$pyGXRnO@G8Nj zdj|75E&A>6?KRk;|Cq@Cm?&;!Ttk!91jX_(DClm_%v){EFvBL|I?1o5(T~51GRVn} zloTI0{{3^rVpQK=_6aONGVL15bx<4lc}IZJPt5LbtNggc^Etzx{Nyr_6sd0)P&Qsw zJ{do^!Moi!xw!(g$t~mfkr!9-tG)2X6XEV)MRbR$dsH^V9NQT-PTOp%ecT{@IO^jII#%&{T^U{~j9tnmV{%+Yyrt!4+0=I7gY*~9D+^$+vsHy8Ss zs+Zh+&l#3}ZkFL5q0fpm`ZNH^Ie01KEn^h-=u?nM>77d56nC3^DIMn8?2bB{aBVRA zg}Bj$ihX;O?t^b@_M%lbzM_g1x`gWcsVs=1+av>~2HkcFnvf7acC`#zJbb$awc6+P zh=K3?)~O&EtuNqdIB4g;{<(Cc?xqInekm0oyy`d^HtarbZLs);eQg^iI~OD~-^`|+ zEo?Uz3EVX5Ii!14ZfY9wDB}2D8X;q?|tpJY0*%KLW_rbJu zz|+Pip}}$6G3`h?6X&}fDo{jou1@&#XZH+Y7nW2<*wctbJ|9BesE+67Y~P}|geIso zIU$yciWyDTiA(OGtJCf3N)}m3E@x-M$1-|z#oPw5t5b#{MT^NaH%4J7gOrU>%>R2t zEjOumbhcb+itlymt(n^iFv}B4nT^@gE2v`l%=P|j*A~Cu^&~dK_U>(UV4&&B0l&VFI_sjCAq>c)x%aZ6~Wf z>y*TPV43r!(Z?o+_A!c8L5EAVVRf8)f>DRFu9!(k$N)_27MJFd$!NOVi5oBmMt z1kG(qz&Yq-Gh+-?SFvwP)B{QJUyN8LCOqx5~8~$;Xn*-f;wP{)5TkYb%+hB zkyq;Olx=2RUCL5f*!YyeH>u=Q>w zu3GL#(olmM^TU(UuWIIMY-t+^SiU+UAVKnA)_`^%!WG`Q);Z)Rl1$`&8R=x4s1%#_ z;$eHT)H4dsyIhCyJ`G8c4UrOD{xjPmv#X?O^%nAz{sF>^cE8SBl9#F zc>3n;FN-?{AD_rP(0!mAbKl_Wh#V+rOVj1q#mia`%=y_QEoS8K_BG21Lg!iG~4^itJ3F8Ch!}5#B=DrRRpLPW& z?{p8@T!H65(C5T2UlEnSI?ilg=+wH^NE|?y>jwHUgrM|lVe|t3icdqOuHnz<;b19p ztjhLj(08}m;iCHtO89zZJe`}H?Miy^$1cG2DVX7=|1{WkXdQ^t8iy$r{Jf;xuy7d|??LM>MBTcBfqh%@CE~V!W-2*k- z>8u}4Jlh;>a+`GNWN+Q&VTdLbSk&0J2Fu6qgv1?Woj#zer$i%twc(d7#O!%y=SJi2 zgjjOdq6Nw~hz)Tj7pjol%(eMPwQ1rjLs_-(vE_^Yk@JcpN;(Ho-C%}KDAznL_`g;f zM?T!fJi9@v!<7BWhme!o4!wHICifN_Jb;GjLJ!icN-jH9Ps&R8RHN%l&al)~kU5UG zTYy(vvwOo66;>ypkY^5?%1UI%LXQQp8x9Cu%2vTcGz#BmD-nF zs*990)sacZVG5V*uz*AqiNAWeqI6X4NlPe9r++qqp94i%=kd8yBW;Rh+pFG5n;qEo zy?!oicz}(r-?_ZG!8otB{mlvpNhGeZ4Im`gkoGSW*D_C#xxJpL$2jZl$ptWQT=0GB z7H{Z-w=k1aw;eu4H_pBhTRXvCB%Z!seGx9CCc}+{cZ2!U94&&B{3rMKoCD5*_g%05 zb;3saBCO*bsn=kJX?*3cII^9z)Pd^qM>9GJX;6VH6uEBI@Y40S5CG#W%3qM}ee{nh zak07st;DU*zAu;XvA>%!>2II~HIl7jUG650agB{vaK&2KCrU?{CNGi3^P2vVX3llog4xc+>&)!;B9<1zvd{e*VL~ zi!3cGC$S3zegUN5SGAcfnhDL8_hqb@*_jWC-kGP*XrEw5a0WCC6FP8RMN}XeHFY0! zkTb2sYT);C+mW?>3-z~-lr}sPGk|WinpV2_*JDiR>j4dMjY^lnOy|P~UZR&u_+@)^Fvq9XrPRF*e>o z4J28p(x|kA&7b4moajSC&8RG*F z+b~k5h zm)O9;!O{74{PpO;@oi`FuMw_GXBq(T!G7ZEu>&BXu7S8ZgJFFgNZ^Q2sa!4qgFS9M zR|<|!ilH;hHR*2ir zCk&_2t(gM4uVSiFxtms6xon^O@#Da_iu}8Geyt=r+}|VOBQVpY@aoSVZ37u@hyP*c z_vUO4s_H%p#Hv3v{Tn=DMi zufD#1@6LE->AU#kEa_u^pP4WbP*GDJrOuw62QZy7T0DMjyXLX@#cdvaBx=iXdylqo zgxqylVBnxL{xS6s4=q3J9RgMv!kEm?by%g$#TJ8z8)4#0?q5>1y3U-xEN%WSVyMat)n`syDB%E7DFql1Nhtmax{Wa9^V*oJULACWh)5$A9~E zFN)7}revB$&sFwr!~Gdy5wvE(K@}zVtE+iLBFstbS|sLkZSK8?qg0JBS5{deL-qTZ zxJWcgs_6UGGxwOhv{suY{686f&tiJ^fqnh|cg?-5U(XsB@M1pqiL=@qdwq9=rL1}w z<#jLX+C^50?jVTtn#ZuntC8Pss*EsHvZMLJN#7+`TFUJ83j-26*J9R#LF=k{6plxi zL>(k%Hy|~~IXg7aY5sKDiW59aJx)bx9&=D?XMWBIuW1;G~kieM*pBngLC8*M4gSPY_Gr$%!dQC?B zY=`JArcc`}byF(tWBUY>fZ$Pd_XrnGuNY%Z@$)=?{UAo+`mfD3V&PAtQ{obOP0gr{C&D!7)T8+M*ZTka8|n&MPeE3JjzCI9NQjb z0l7gI&ufbL!t^PDgDH!Kh~}nqJSf#@$ES0PlvX>tM8m+vdRQfgUji4ylb!R_B#pW0 z>k9Y218Wj4dcTQ3EFnGnd{+DmTMK|}e5mD8$l9S``C&JFrjPc%?%ez0NNd2d#@!>* zF*@~KnJJW0bsHH4lc zw9Hf3IG|H1ah&^UL}wYR>GrO*Pfn8)>mTCa9#d>8g4v>c=y&fCXH0tgt~|4)qtyKS zu|2Za-TvGJJspbu%=Wcf;TF6*dRRuB#I-nk^&it2GTnZ`Yv^*%+Zt`fl=|p@0yJzTjy5q}+3AOYO9U5GDbE`|+J?|&=hTHAlqi$xtZDt=C10s(-nauQ$Qd<( zp9ui=gr}h5n0+cO3awLbe!g?Hz_BH)&fAZ42ni7YEBh0+L3^RMXi|(y#O(nE!w29g zfs<+ce25Jaksy#KHZ86$WpSrjBN7+|fJc)T)(&dgx2d3--Z8qG@br{IJ%1zPM1B)R zCb(fj86yE?n6s-F`+VQ|NUQ9d;5=3gAT4!_rJhf9ULBVQqt##NLklqh!rt+7Dn)SA znO6hG_%9dlEn~wN>tv|h!k~`p{B#}?1!AZ2q?D2y&0fFEM(||Zdn-hW2QoDH{Aj8^ zMJIvMxHf*EhGq0t2mWUu3^BZD*4*+zT6L^;W1+d#bt7ur(W^dmQHj$RF}L@9@fyn` zq0>KYXF089c71$~gPVDqsOQkxEYWae^iZ)oNRP)umr2y>kwf#togI)XX3+B1Qs~Jd z?+h`(7MP;1Tt@*~me|PYyy8p_#j!&fg&~}L$3GRmlSO`l6c|Ak2MR>X!<;^Rm?G2Y z7Y(Mpia&G_MiRfA5B!F#?*xU#E-(1nqyJ(iAWwjw|woKKvaUrmWr{K*5;wfWM1OU%DTux+CK8M4DLB**F}qK5;Yu6z zkMG``+ch328U52|)IV+0jb#ArkA=s@v5CNsf^^RP#D6X%uD79%OP1>_jenkzt z35GK$&0*t-D= z^<}63oAJ-jV4O38N}%3QOJ5@8o`>hd`b0R7y}_GXhtf4L9sX@k;Scm#dS+;OK+k6e z4{7{5|Fq4+5oheg$ZgQ31Z$7<{4ZS%)1-Z`AYOMO>a_T4ZY1byEt#H>q2Vw1cGj;s zWoFJYcf%Kn#_y4{GY7O$@OP)Zqmei7`AMvUe5dpUJP><0gU+{ zH&1C8IsP~c=5)1b9l2eue-8Z7#zyxWVgTMwGpqmg~Vh2XZza#LSLP07=% z*xA@42d(whM#Qd*qM^=+m~!@C(yFRmB7%Rp!=&`q?%>UDc66uJtB5sDN;)I> zmR5j-@1&KJ15Fm>c5x_1sZU9flNEOw!>Vee0sci-XdmnxA|uh04|(OdwH~d95OxKV zPw0+gs#i4hls5|Rf4P~_9~3}}N=~zuxYTTxHrkcF?dX`WqjcZ}zyQ1T;@)Lo&KhuP z+=4|5gayRaOXm8P(eGKE5cUBaVO%GJS<_KvhSkl-SWdO|Vj+u#*7~b>-g<-0Bmd_^a#IrTHcYaEc z^AH5de<%GxT4a3wdQ0y_r#qyHXlGx%uf7u35}zJC*$JMI*H;`aRx|m~$$luP5WfS; z5_J3e>1MglbyJhdqwj`^^En!V)h_F)!S%U*&_pBW>Pm;1zvd}Aa_-3=Bu3^Ap&)Fi zL@!QiKtO#nHw1xZnM}$LlPbCr?6(CIvfLYtJWK%Fmd^*B`e*tzzNx0CFbGTLRtWRa2%>m{nhB}JJ=f9FiS#~ zGu#ui9yn(WPnrm?;WTk*S*@d3R|mFYTk<&q<+|T7eCzkkOD!RSV!gAW%`}IZoJ2y;h%KKq|tTP^R;ud4ZZZcp_bMatu7QJ=?xvAyvFiWIW$3Pc0K$Z$n34?JG{~r zrX%*j{NO3Y3^Xl!Q=YCp4<98f))rkueRhyR7yrpk8WiLJdGFLeiYivIJ?NY~C2UVZ z;Y;l*(*p%s1)^HfY378zDwQTe@=!FTbJ~z*W!Nz=bNkNg(LL6Q?G}Bjv8C<}Pfz5A zv>S%-y;x04D;w^J2To+R8`e6bjKBpDZKs#>UJjrNG$1VV1%k6lcQp4}HT612n&2mP zF;_SLB@jB)j?{OlW!jQAxw+`XjJQ1FbZfkGt{U{gNALu8V~3eaCGco;`_no$0~>rutTC&5^9V@b!`r0T z3=H9sm_HX{(w`9^guc}D=<{o5?^E9c8s<7HT)|$*PoVa~JZLy{Q3%|z3kT1}4id31 zk4Xun)vegFZo-}&ZsqoZ|aSD%4#5UV|4E0g4G4AgB_nP$58izmC;? z&+Yswy^KK%f%|}pd!GK)FVS8O-V}+@{+~p4b8et zxK4|ZZ=$2r`8r_$J6S_qa4V(1$3QA4Y z$c~&xx8i>~s+UdhhfZ^=h3}-O#ea;r>)@1IbpCCt98Axll9Vx~v>`v;8@yskYuxpc|3O3(YM=YK|Okj94%7l^+|y6Zx2QbJ+Vr;jT52t+GOr?IZo0QI182b~(w_aF^!9B(QiSZmchU(Gm9 z_Dk&NkTf-lJlNJNetM?2>}DMb%gF1x4k2{G(c=BbSwO%{PXO078sZ`!!p!~+n0s3`Sw$C0Yv%9RO;AcrNIm3S4=A1FedB^TwRZ&W8q)8W!5Nz zIuAOthURALb5{wSN4F6{QN+3>E{YRGVrDC=;RoEqC%MOLqwr2=7yEwg?jzAAI3$GP zc(&JnVGVU!ej4>5sQBh$i1Ro6M7?1vto;bWoD|mwzCRFKcFRU9I`*lWwg8Y2S8*Z_ zD%d+#&Gd0cjL$#=aFd-5M0~N&8^tf(AK!PV1C>ETB;tE1@xQ#=_6uyu;(og(bx6UU zdSkufC0o2xgv*$0^{3;Qk?bPY%BDmGKk44#OOUVocAEjYSv7bycwu?s#IH#AXY9Yj z0&<~4`-0@*F~QYf9@#&no1l*`%yV2OgEs2RAD|6?ccKNVNAxAU%%~ z?w{J8hGh^;G}8AZBAT7NPu;%ZN;&qe#;1~AT$E`K!F`_{riMlR9uN@Tn1WDblf#I} zzLU=yO&c7^XmT5g5$NZ2`BWwcKkRL#NKPt&q;iv)CMU#LWw=9ZkI=sKMzRYwT` zM4!DsmHA+8Vq5jAOz{wCe(HmC`S+MA@SkeRbLQfQ_ISpiG7r~!c%@qpbJo~LmHqe2 z1(CM8V8)B_{z!bOZjGNrnu3NP-=L`Xf$|oR!q`L;#fXtK6FF%ri_MKVHHj^a zdUfB9rCG-zG*N{CVb%D(M6^X4sD;*&RkR1IOdo%U{;adK+Pj@&lvqc!1?Y_bog-Mo z^Dp!r<;)rmD{z{WYNi+nd#m0RUNqZ2QrtMPcStxwD6Y^4DIA0vZ``suMVMEU4}Yr< z;5u`Cs)pD;)6{qrY&W;eOVOEDU)w#`PV=sw-QlGj|9*6Ee<1k$&;9O9VTMgH#Il97 z094p{B)PYbj2hfgKZ4AY!mx>ZY#WSKIT-C42;i+*&h;VIf)T|xz1@G4#S^*B&zZfO zN?gB_%}i@NY5T`y;iUflaAUANl%Pf$3CX8Oq)-~Aq=j4jJ?xwlOunG1Cm3M62w6S# zbkd)5e`O_hr?R1B-)yzxKwJH3-``jwCITgXbES3(R&Oa}8;19sTlW4^;v9X1G%^}) zaG>J%6!#9u5)Bgqf^KbdMzH26-f{V%_=z)IJw*u+k4p2+Xi@3W%Gx)PW;v3o1gt_$6ju^rZ%WvaRmU4IzLTI>`@TMd)V0< z)@sG4b1Sl__)hJ)24)UgNW4d4EEl(^FTNWD@7XouC%wC^gN;kCjTxUayZ**^->+wC zQafkcVk7wF{o1>K)_+w@i}@FexQRKxaqGB0T;#xM$}WDyxti1cnL38A>UotDbLr6J z$JJcbl!L;_8Pd}Lpv7?0rRC4jg7*%7RDSnVkl^MHUebCT^3YyB9Zck41Y4>=wYFv@ zYQet}CE$+l9c*#CJm&9?4L@uY8NGjd&?8SUD<1(bsANFw4rV&lii9$1BX|>q0d}@~ z52Q-^hz@#{{6fJ$dBWEczg7SD@Qk&%jK%jwad$;^{fdo#O7ldKu+4vNE-QnU28y$@ zs9*n>hQzBb?b_L%)u69xjN{yBZl{lF$Sv5Je@qXv77k`58JSii+V;Hci?B`BBN|1q zB}L!#3>V8|y{vTuk(b;TpNJZ8U=GXP$i-H3-+yROa&?XAiNSeo7U7qh_Sfv>5sGKj z9IsuXe_c8m9gIWo!8i|Ki(+a7sz!o(-5}j&7X=M$d(o`2WKRkihg|y`R(w{} z5u}~y^a6g3U6vNf_)WBWJ16OqoLL2usO#6#iA<2qTP#90VxpZu^OpTiGa{M^O79pW zHcrK;$c@RPMj|Ahl|r+=2o%oF!`dYkDy;R3n(DTd zSw^6pLSyKkB3?2dB+IOc;lxDA9h1A0*LD&78Dlp>MbOq^&yrM3-!AtueTrgGuM&+mROuFgHihbXl`CUO=rd& zS~V;n_JEVysozqGt-VwN<1U#xl5j?dykkwp^td%*%aufj`eXk(ZyXkiWU34(a-fd9 z{w-4Se~=q1QG_lskNA>rA*#pS30c@jVLf}JPG=1x3(|3AEB|O_?G94N38Y)`XP@2E zs9EaI=4o|an~Uy1oM|fW27Gbvru4V=`Q|y+l1i8x*eG0&kEbM!ptI6A}wc zztrW(zuGiCXq>?())mqxPe;>0WC}^$6EG>C*6bMwt$jV)5dYQC#~O2+fy!WBkb$c}wbh;0Z%^2m_k+(tYmd&~Hs@KT~fbiY7KyPyVN{dve|3xujk1`8fqX2-BQDuP9OM zvoHmJv-R5~G-tTlB(6ot7L@Eepgp{xjT3+@<^8}?--q?=wYQm%DdNuEL(2#KgB&H) z$h_%QU%&y7yPx}VPfKKUW7~WfiLgnv6=tb-m{Bl<04UJ0h1w7i%QnjER17BTa&D)VZ>|bE}Cfi|j-W4D%>u1;|94 z7cpj@)Aa|}ETQbQaq|mFx1Ba;tX**a=^Bv^4ziLPm(CkAr>2h2)!Pg5ECgW7iG{a# zAlk*ddv+2%qpJ*!XqWuV0Ere3b+(#fd8NBcjP>lE{#HI%lk7N}E?y}jZfBO^9JlDm zg*=L+q}On*~kFoZJlk~zxdbM>8lRo7-zd53Eq30LoHXK|=-tf|cR-zSM|d82VD z)SlyGZBIh&G{m!12NP@)E;gcz@&v|RpgdJG<}H%t45S_DIey)@Xkp~~epNz3HX1(+ z#fZ6tZXGRv(Riy6&8(MqG1yMW@ph1>tN-yH9J%%FhsoQIVnKQQzHavo#HuiQB*FZIQ%s11v`{8NDctd%#lj)zG(#9L2p=0u<{gwqdPqU%n?u08wfHo z@h9KaZ6+k_A>KCD6W{qHpTuvxj_Td*gV+OCYJ5FYCC7(dQ8Pt87V`<853CbXR{khw zUJbg?cuG_I1zzNefTugKVRd4Pc{g}Y-qglLLQ`T*#7iAN0u2GLsiA;izgmBTnu2UE zu?Viv`5Q+tr1wenR?8m>)j21rP8ss0($W~p!TaVn@2R8h1WHKThj_CBCdNM*FD)MG zXnp8pR2aUZcSnHPihI-V#ZY4P*9Si>+<)rAX}+g^FMT6A=H9gY1Mv}f;0^}we))8o zCri!WY#+m*XLEb~Cv% z`N2e4;?`RoO{R=L-d+O+MBBa^xC;w$@i$JQa-xJf-KVPM-X=`SAF)uC)R8U2w}puv zJgcPR&cvTr)UWkzQRmVuGDep_wMlprse+I^0|!n0biR9u(%X+89?n<(E@NJPWw&d`LN(1Wpr=Q2M_eY?fj>oM!uGg z46N$H_P#vl#s!CIZjse!Q6ys#%+8!ox`F+x?%lV=X4hMNh}F z-@3)=Juw`o4zcT;ysgv2Fk@>6f_TWtknX$(wM*w$&zRpI`j_ZUrZzN4J4XsI=M;@# zZ7ljbC@XTx#0EK)s2HR*`l--OnGpT1+v-tg0k)nQ@3+XS_q`hPB6i^W-Z97TM{B6# zs&evUPans=4ArgnN>E54%rTZA&}jWBg*31NXgLV_YHlAY&2|eD+CUL2Smw>PXDW7h z;%u2cKIe7aqd(8bZZwTl-IPTYR{RfO>tE#~lQ*VkJ{o%9i4R;PS-GZ?TOd#s!-OSl zAiRo5MRwE!l%pUG1eQDN9#o^299A9o*Vv4%zFk%EZ({db{_Z9DrNHfV=pp++XUJ)D zcG}Ji=pZ;36sXW5GgP;&-jr`zDm;=6f2cKc&DV!V`-iY)bZmo)^ik47HyE}=r z_EI(aGuCEVrf3wc9a49sdq+~$%?_=D#5I{v<*pDAgV zd>Y%J4%?YNf_hX+MohVduc_TQb;-j9Q9ctWfR~3ig5s0JrwtOKQ2@miNR3JPLbw8a zP@Sp2CNQrFz!<3VVZ0=-^x}4>$4Q=a&s^CMImd24<+@^G%g=Yi?cAArit0?XjfEOpi_Ul8ejUGR}m*~iN~Wh~z$68ZFSsV`HizgMHA8o&6lDgKv&3*>ze z901A*|KhQ~``}YBU_sp{IOS;3S#6sxmUrrbV>Ah;&i2#wFY_-R zbzT;`VZT*eXp%%(duLv!*_Pr9Uflw#6xFPt|4PR)?72JBP@oH>s+u<6#6Zw*8~Ha| zC||{KHTkv^(!>J&-qCVXS9UC%?ZK5IIcLa$iudh9FJ~@j{~H$0V@CFVz` zT{TCG9)0VfX);YZSg}mIh52+*{x0X!Y#4I=zW4c8?@O}CX-6}Xdv21NNE%vRLhU?s z_0>{-{JU8;PC|xP4FUP&$lvz4nab5Xe(MVEJ~Rg3ys({&WWa;W#g1;2xYnVI?mAx6 zyUg>noi;m1Ai$91JWW)ZM)n@{sm3Dw0fUYnHqxLw-pv{4L&R|1;xXUiy# zx0Kw~(-*aDXP%^?DA-l1!Io$_U7yoQ+QJ)@#1MQ8&8_~?pvo5ONqD&bYm*t0Cn7*^ zeKe-j=&?*>&*#PZsqyMbakYwHgSzjEKml5&+28MHl$9BmzV-s_E}+BS|IQIf(xoem z)z9L8s~iZ@;sE_ET#?R50bCF=`y`Ia>3zQ#%KTo>!^=yx6&pQsw)BNkm-TLHtmnpn@LI#?TKhn6su8A# zaxQLNQ(g2;7SwV+Z&!Iy3+v2-P;T!JpHgQAkHATk*}UWY&e78Ac1^J1_2P-(OK;nx zGai{ITyg#L@X?n_<0QJZ{Yw-6gGP(3r z`3>Ne&GBZLiQ3%CAGf|oLE;@G7w$fH2NcS6sA=7IgL%~?gY6QhGjhmtuUd}r=;gx~ zg$tEBw<^l7m+kAwhKx?c)L+gX_zWlPGz<+auZ-&qWkLS4XFXW!u&(cWl%`Z-Qgq#v zDUQKHPK5Ipm!0J0Vw0GcTq4a^wNr4qu^jGgudzwjC>wMYVahQ7cgH%>lD$TrXw@GC z?BAH03%x|C(GBUU_NZwbaLfN&scKT~C80cuH<>Y9Zp*l6xO8N6r0k(4Mfg@XtcmK8 z#1vigh-qa{(NYfwDML^X!@xQK=KrJ-5+^RLSHjMO_j^GAFr3{wW>u2yKd&comZDP| zW79*qG2+A2DJ0H@R9wS!2X2%}W~JTCP=lCy=Ik;)XM3T_W{9+_YpJLFhaNBLP`uJL z_cTdklyEXe`vhn_B5;4H^6_k0?Kp|6FQA>2)(nL}K`VYI-m*1UY|TqwC;)9kFBrwY zobd0#*N%p{US>-plhGKQ@E!&1p**W@@#@BDd{B;Fpz~$4f=vLk%@9KqBX%9k}; zX3m6CQf~cJ=yuL})onw+Uf4|hs@Rl>doU;~35|+zq;DMno^a zhwdIOR2d#orIlfE$L>Ho=H)bNZl0+vf7^{wEmnW|F((b5bg>WLI@C1Z0452k14J;_ zt^#B*`nTeoEI_>011scNI1lvqfZ6YD>=Cy*~`HnqNDk z+)igfXtf_lOS&p7N%51nF+a)KoO$YLO@Yx(P}-pEiUOT6bwUra@Fr0qu*sTx6#Jv= z&Hi1kzv@4N-nWR!oR93MZSSqb)cZW_?Nzw^88L9G?0kV3A$CtF=DjWMKOJn`b8`T! zP;@CA+;u0hP(Te?c&_hjCro-@Y0pMIplCTRG6bmJ-z2&aKsc`)0#?}1SZ!;3=id=A z1(xp_#7hN)KPlr~xTQzsQ+({``fzM<*U^|uTi^FZ&gf_d;s*m&iJZI}A`>SwXy=lC zshXuPU@eE@9?_b3WQ8e>seZba@#s7AtPy3Xb>vuFdIsHEHFER?R?nlxU%J|K#>1qp z?8W?i{f#|4k-Y$5=3z)YcXzk$5vx~SMQ`oq$jDQjp@(La`CYrHy})g;O=?`wM}wM- zA&trRS$lOttybSPXaY!BwGzugkq5aq3iUCU5?<*-+dwNIK(U@~8|s;~!76Imc1xK_g@_`$$tK z{H9Ye?Lpo9!kh=H$K&u_uFk!|#k~jlb?8G~w9~+st_(&V1Ep&>@WK7ig;C4gxYg=O zFXPDtPzQ3_`ZiYtV_8qcoiax9{5(MXlWn?^fnq;$>sFmd#keqjH`Cpl^$+=v5hZLQi!Z4_+nLh45Aa&$3|0a}EI3_+YW zlK$&ffcNlM6Iie?_`oAzr&H7yo3v3+fcm+SI9|L07G9F#1gI7PK>pEDWd5#Yq_@oa zEiJ{5nXAB9mls}~-okgPD)Uxjh3+a9#!iiVs+nG(gya8+zL*k)&6>KVfT#Q2^y0n1 z-n~WCejH5@`k4{!Kw+$*j{@<7248pJkJ?PNisQ3mZ1Vp z`k3-(w0}IoHYp}|Gb-Vp4$t`8mU}v*h1Ez(t=eo1IRLiTiPfoDIrjQm&kDxGJWPm| zphAf7@BgZC9IHfWC^1;imOf^@Vp!G~%A zrgH^R>%JW>P^4Ii4VQK9mAQTXVcCF%3nY{5!TRr5YJR z)Zje5ePyS9W#ZA!AJzWkcK|W*Dc&KOhLXe-se6?rMvoln8FYpDk}Wv$sNUn3_&T4T z+B=bU(ktp`Ajt0|cvytt}SrZ2+@oQNOx z>cdr6#JSq0RU*|dp4OtAWw%OteySGdu~>ot?g&8>M!F~8o2NmgI^(T};^pkK>){8% z5ZabQTgc`lk?OtEyZBobop9IlSG~D14{btdTt7!axp=oXgiAZnqTa#xgm$g1>O6NN zB_wm!_zKx%xV2bx6(R)k(k*VliLY{I{(xmZ#(yLDy-+SOW9z9G*1A8Wts%KAmlEOa z>&d_W47IQ4_WVtO@$ZMMr#w%n_AK+pdrk>|&RI^#7K%zXh(J1SoZuMTDr4N_Vd^db zr0U{myZmO&X1rmcfk*XCztL%hvOxx9;;_wzt1nh8v)qv)DXud-UyoC@4MD=mksV=O zSZ&{`WYV!ROAdW9pZz0+#p{pKKG!s(@%72^e3M`D zy&oAtQ(TSG3eCC6KLP_4wsLToUaSXxEhGumsQk^EOK&PpLtf7VwrDV5e&^w;;QhN> zQZ_DpIZpnBMf8!U4bzqhrRn7NGTCL1jFTo^=r8=px?}_YM>E(f>AT$$2Fcxui-vZ; zx|LW#>~fZGYCd3U=&2bL?BBm1HhicSPq#6c|CEa74aAh`vs&)u4C0rSG7H?UyQQ!< zxjccrfmmUaSl*;cGu>L>%7;nGkw8r-xe}BgcAK|{ikzW4GVZzDFw~dCRB569#0o6Dt zaY98MQHa4c`^_B8x#x>~uDJTpv?M)QOD`945F|S7h`;daoKhCv`{J&}i;D=9?kJv-Z`gDq=^hxyxbi6{tTpA4-NKG4-ju?a%taGNTVl6p6wrE z-)ma^WiKjTy6>P%fuXX3D{|+&?5Gcrv~G72K9;OR&fEHfEU5xP{BOloG9f}Bx8Fty zNL|U;*#)-TIBG^)*3LHg1_Gxfl~tp=lqHTNjz}GDHd@mU2zfId9%cTtKDq>I**Xn1 zUq_LSj&hvY0S9IQ(;c>tB^tbTY)0$q>cYpnL}zn?Ow|6?7Kw&Qe!gmr&D?>tpIZiB zoccGtTf-NV=$IDGAA!2c>4aKJHN7M}v}Xzov`hHUDjuMLh6C$a)sR(ap4*8z_ln8{ zWp>*iQxVUB`X={Vbl#N{z!|Kjb^(OH|FyYzcWKTiWNFD1cl1nLtfPQeU*qBEFZ)H` zwdOPytRALXj)(|&OKN$e%-!nxH=Ifk%5`xCa) z$Ssnr94qq^K0X?=A6-wc-bg`-&e|eEN!E$D8EtT~pjnC%!%iW?UC!&4=#cwrs;KQW zj^sy*>-m?i$GjVx6}Byj`09fs`gprBaxY-(?!XzsB@&^;xCVp16p)b7l5hTh6sytf z(A>1mj)W2FQ1pZcUxy8dH59L$pm$(y!bycv?^a zsNU>5L&nP;Hs(J0aKPIl(3Y)EZ;`^HiaB`NUKk~HPb~lb#)y#{-5q*f*;=nr7L;V} zUA{U&Nm(&|skfXt!=FAa*&4BU@~IPT#yxu6Z8@7G*mU&)S~X>HiXnj>Vq%|$c1Ps| z$FlPe@3zu3qTw-4!tju-+srxkY|%lX3rsGdW%)Tctlwgvw1b?PdA9-%d>vFIGvgK@|RCmtsWCi_hep zFkC-e{zo%4wbW=ET1%0T^}X-p`}O`MV=?oXr#EDy^=aQee{@CW_GolU&kf^F$vZJi z8TwJ0Lbi7VXj3D*qoO*%bxEDx9O_=6e>5Ku8T;H9R8R^&gY7v|tu(N^b5s{%LnFFn zBwM^dG1PP%CXWe?Kl5(UEvN>z&1RGcZbT}IPj`u?zjfD@_shMkBT_iMsJNh2K8(`+ zc+>s~M96%WQ(NUtQrkqX~>{&zkwoJ*+8zwN|$x zowc~=R}0y*>{HNjQ8K?I+xew(mqQwg%bbjN)aapB$Na8BWIi>T#cIDk=(i@s^{u;c z-&A`(@=&|XF>76o$Z;y1`s$&qzuw<1ZzH!)r?7GL%u<++|kn2+VpaO0K&yI31<{%#;r0p_G@de=U!1Vlqqr*zWit&={4kBqe#=Bn@Ns!d@q3^t0*0twW{P z+kTw)tHny$HlmBfGHVKAHB1>p#!c&3rHX!Q{#D|GNkgm~QI)c3+eV9iq!x^NXQ9A0 zBm0-H@B3wk-3~Wq`9Ke-OlI~G5mL~+s~k0PRI?;(UQ;AZ8gRC`DQUBnq!@%83_{m( z``gBD)3M7v7=nw%Ln7`J+0pyTUcJrxsiR@;xh=vI8I;;Y4Y2Rz`*d!XY@HiPA_{@? zDH1AYRC2R?lhjyGw#KqA8u+MZ@&%R$#BmJ8Q0pBRgSEEb zq#$^w31E$)m6U4~$3-1#)VewKtTviq?wB>IE9dxbQ_9dVfbsX3(t5{eyXeAw z4*g*g1@%dd`Y`*RH*4p$(GOl&$x|ad&TGB;*GvG;iQv0X#7e5?VfR!H zCplo%Y@=&2ETo=5qG?T7VJ+**Bvk-`dXN^6^~Zx?5pf}dh=NUR!&PqD!xPB*$o$Ie zYFS^?+|nUJISm-|YbPe=*)FiGJ#7$|yKHiFV7Zgok-cb{#xYL>kL23%dL`^5w$=TL zz=Mmn{iz~U;0dV<9sbIpgW4Qy3=^iS_z`uE>L<$eQ~z*`-PG23TmLqbxN!}`5C4VI z<#iG5khxmZM10FOpel9lj=@c$e0%!lo=+gGq<7PYvNZF2x|Ewmp{%`KAiv_=#4oVD zzLp>iaoBR0KW8O2OW3?V;R2@jM|f$5yghROY%9P-_GS&{BAtAJKM#fwRJYnm@_2jy zwxlT2jV)E(H^PM zleT!OfLfkotqoFuG3+&Ar{=1-tGL=Hsemqfu04I<3fLeAS>D1?OLOxhS`qn#bLUJ_ z)G=t;s^7N-9eT8XRyB2!J0y3jE=Q)!+VtLfl;TYXJnJY{?=dfH=4@0BnrvS~AVhlur8suc39i%R^hahNg+nhX>PMPJ?m`z;R<*9 zrJ!=haU^#_yAQ|AuV?JP&eQ{Xoo7Tu+P&OkTeY6wtuHXyas@T_G}>)^?Z1N@*eW?! zKWvUlWQr;NWX+iNqHrT+P!9yj*O%i@^{8k{IYABw0%e!pUU6$P5%&>Q5<&O}46%1% zd;FozwCLAb>=lADXC)u@X!K;J6#AW7&Y)-aenL!(FQ1AI=QpRAzMIwze2-V$KR)_PixJP1)3bBPVjpCC^2gEt zpv;4`cm@d*zI;NrpR!U}U@?9zg23>WLqW+kZBhwNDG9p1 ze_X_RKFMjaJd0fEk|YFh1v$XB@2J8V?hrOA?z*D>CkT83d<8$2JiogNmXr5e`&#t$4&e_tc9eiL^G02k0@m;opH=z> z?G-p(W98x9D^2j|UNzKo`dU7(LNB-#`(CSSTCD6rmuL#_iu=(JYvIZQ;L1r3Wz9{=# zGI15sUV*O96CfR7>$Z}^MCxC&R|VC&>Aj4E@ehYMZIG0^-)$mh1s;+vtbvMkGg$o5 zb+<38=1Ux+FJDhIDbF;?Ysc-(x*$jJC*vI;Hv{&b{KwyNLzt&s%E9ZFTtc(J<#)=H zn5Co9mdV}`t=iX(A9j7~d)Hq#TtJms?<_qC_@WqFM?D5+D1RFdu1KF<@1lGAK4tAMSV9WAprHCMkCHLGy5ZgK6H0Tbgz$+ zJhtECrfSA3k3uzPFf}<;D+tHP!{HsflvB`B22B6NQW9G|!HL9eGhj8?{nnjMxCQz; zL;GPIJIg3v3IEwqwbf5;wW61rO!2Bgk1Wnc zW!a^U=}ehR;J(dT86EXrA;p_^!S%D`=bj5QdcL#X;@9q7L|Y|>D=22UU0wumd4}3opHyEDn~bIpPzLrh*fp43;#oYQACc;{q-DCPk)!m%Pp>|l?#o&e=e`wpww6gMPdcYUC2gP$o zy)%x*luKqrgd6YX+{*29UM(I__Ja&&`PMD4%8H|ub|O5d8bpT-3ZkhllPOqH8SGwN7eBSa zcK1fD$?yzV-}kuY8$w(?6ef<}+#9q*v+ zt5q#Hjx#lmOqvTH7Ud;JJS4+k2=p zwb{<=&$-{jmtjQ={& zK-y|7oQuY8)0PL_LOYedxMOJ4?`z*TRKChpjkVB>k+#MH9vr@Xv^IXHL1$qpNL(zu zl;1aJHWnt*4;$0sZk>ENBrEdYj^vHwxmq;n;`T1JHu47*ku6fEvT!FVjh$4Gs?Jkj zw0t?T)26`eB9z|g^SEfvOoq~*k6w}zuhq}qLy;7 zsp&`_zr(r<>E}FL`6)D$_h$5t_>G5yp5s)hLF(y!h=ni`BdBk7n>jKDnn$ksB<2#xsC8#h(Q+Vc z;=!fw1@?6&U%w|jQfIXxK%y2jR#c*lV`6|V#+*LSkbAn%Hym6dJ^woq)>8j4X`TXV zpUGNr>mU@(C$MIv#28+yKUR+vOw?RXKjEpZ3^d4Nk5!aRGh{IW`fN~UaizRE;+u%? z?b}S;uU;#&e_3fDBD6X1Ri1t{zpGG+1DAIJoSd?ABdD%<(MFknK!im;~k&y-9Gm$@SG0do^_|B@Ez{^7_50-R?7X4MkBkXeuuYoCJ&%uF=rA-1UvB8gZ#w(_taH*ZoSm*OxX$myrh9Z1I60SZm@7p#**B)*y)`2QD%T6wTmM}BO!M1IYCUcDJVEBM;hpT`Z9z! zCE)ocH_0X0lV;aTyWS^bOo?BYMmJ)d-1hc~onAE6WdzJszhSeYvj+&FnhK@^wx}^r z3b>V=(H-EX?-AQr)?)#V)Q1J`zY(L1IznL_B|+r>&LA1?mrl&ys?kP-w1&Mz`TUQ z1iR8*HThRwE_}gxyuB@2^xd0T+j$9Fi>Y(d@U5#Qu6;glsXDMq)G?H_&GM&-1NOWUdU?yAJ4 zxmDPDe}s{Wwl4-80cpn`5k5h5`x>mw;zisYrZ&h^PM2lu88LY$P>zT^X?g1xDse&A zQdGp;`1Op?gw1X^iZ87gu9`L}&?pP-DW|TqF1Pf8pbkpwyVJd~)zy_dUUUCw^k&(B zDG2sWek9Q%;*K(M`?8NkVN4Ov%g$XJiHzDNFX~6-a#O$Ap1-?|o;^2@eU*i3lmHQM zez30w1x?99y4g~$`cJt>o4rO!wQGmO@(I8CH{0Y}$C5qAiokYXxN6&?VTefIFQX!+ zj0pbZMvLQEk0aEO#8Kz8m#Uj?#dcZB?5o&uVPG+)Y%ElysKJf1CXb{f#?Hdi_C@af zD8b^5%n$SYCvH4MdB@4Qs%e!Xbtj?bQdoH9h# zNC~QTq+clD-Lb7%ZtrZ-oeU6n`xBryT!0fVHIlm{g+!$lGCh3LKY|cw`4vbVhf|^^ z>?gp@udLrI#}s&LwYf~v{8lo!p*B~7kQ0}-q{`0E#V4$R_`fl{o+AYUw;!_RxgPXV zBcpfc6ltkW_yVgBe;*~Re_Hi_w@e@&|Gt>4uV*3K4vu}T+R@i2H-exXkvUEn^U%rPa3R+n8P~!<1BxwRL&XnIe48Vs~>+{Lz_h({S zs?0}LxobI4vZYUHxX)wBwk&6gM{JHQB*O!x?6pqscgw8s%LTc~O ziM+}t3L3AgL*mwltioxXUDJX^rlL{P=#Wp~{(9&vO4sifGaOzx;E(&Tg4RIqHgE?Zxx$^|91;Jv}}1z~B#; z$$;$^Paj9y|D#zdPR>+wi)Xd7A;CTmH22t*z`iy0m_<0AF_xH3=}fin^9lc^tupSJ z42DgXIvG4w(ptP(rk@CiNoBsSeGjf{_0F=;_|cQUZ(F*VGnQ5Yb*~}yg$lw z3K_=PG!K7Uz^ym8bg2vu2oBhdM?0Co;4lH~zB*Bx+g6sG&qfbU4(FyN{+$B*Xc+%e zQX<+E7<@Uv5&l*vZmi~(Wkvtkq#Fpc6^6IL`-MZc9H%^ZEJTC|~erQ6*D?nWJI)tBmZ0 zvEUT8P&=5B*BzQ5U+{>q@X>jO4bc9}PuRVWTUfh`tN^AjKX?nd1gm7|j~`onV`hlo zDv8n>sT`4-e9rl-GA%LRXeH&C-dyNE!xPhV_HG-1<=Z%b;s$<`Xn4AUxdv-5yk$Jk z=1zJtB;tf8GTMV5hVTyrPXsA1%1~$}z=5T_Vtk3?3_dmhRSs6cd>HpinwwG*W6b>$|fsed#ZvLPb$)H(w> z9YCb3*4`aY1_m9=IH=Fo2F{LQGfyNNWuVw(Qk9#QuZ_nD_8d6-_HQBXlsw!qhB=mF>*A*+M*%Gl8bt zFh`(f-~^rj(&5#7;<&Wr$z4Q!J3G=!{cTQ3ZT78Mg7VbOmj!zIExWWKe{*N#UPY7s z(bQTPV`@m45^K7Ypzvqi38whF3k_TM0%>pk3=`zwM9MAv5H=&Q*^@gfZ43M|UH{f^ z`@LsY(wKwIZeV40k3iSss+5>$bEur^e%WPY0JP4!=#=Y5SDE#wT3#t!r>3!eb=PLw z9KA8+sfJN*>RD@BP1#-<2z9g80#1J00S0zUD?uE*1uXF+Q15B)>Sk8m0x#{lwhDs2 zio>;pcTLugO>(PCXVG)@8^=|3)Beh?{cobl^3GyUlIalgvDxZ$2=BMXm6zvylr#s`dQ5<$?ip>oEnVvEm^w?gQ`V+S&qA(6lGsK ztcDRc66y&00zMViRFJJ9gn)}3?xtwxJvSG;^aNth00$4LLlSY{2%Y^~P>s-Jz*p$;G%T{|&uxR5Gr z`4KwZvH&_B-iAe~4~qSx={!lgm^CEi4=c_09~kac2yfiggn9IecvD4j*~Y z^PxxR(EM-uqm(m*kZ9PWPi2gjl{zu^jA*P_f@8Rs$%PK3eXV4} zM?xM&(xhNwZN}J-WrQM=;5#QuxK~tJ?Yb$Ud1@dAAeK@4W%+0)cglcHp@(r7GV}*U zLcfmZtCAWjsIglp@VFM-?weA9GZDC-@Nrk4vBLiZmY1U65gjH)Rcuw7%C3#7-7ue! z9l~l97p?P27(og{q9{J&$IKiWj?B%v zD4jjaa+58f(a*>3zBKVZQ2n~)kMTnA26VWOQaRJ~WValphJ;TOnA<8C`7$SU|E8by z`Ak0EK5o2UO2|?Q2(?4vXps03qCT`|Oz9C=Sk3pB#zX}w{^wCq2$bKvWH@1@NYUvM zAFHRn)9UgB;U^vXB0Q2OI4b(^l9WhZgG%TiB?>~WoqUP8;{BKRqF3zI&snk6pQHPY zwkbbu8R37?T;yM8+yl%eeNOl?qqa=ezhSUayKjH%-dn#i&W$ZHzunu z{@3(auP6tbp=U%1sil@7@M-g8m%jSiG57fMalx7Ut-&Z375S{G2MdPf&dni~vMcH0+baBFOkp^>#=Q2ZvsBII^(CfeQl(m4%!S&KD zGs1txcVhUSUS6tqxqg;7fj0Fhftl;yRqaCozT_` zJw>fQjy+y*!7j$n3mf0oD&4Dtxu@bE#gYa>CMT}Sboe~XEfI-NIc5Jx!-qSLda$vw znDSnC2J(R zS`8_8cA{&YyM%PBR}T0|pG9lM66k*yaU!P!*Iiy$Hc7ny<82n8+Zdi#_1|6ZKVTfX zq88#&he=%mE%OMs%3!F@q0kAAc)%2FJV1_Rsq4(Zrx#MP9bFdn?nj{DFgul>yA$>W z{bFc{&+F!yb7j&Tv&f7aTv1Md|84JFDKXv-EB`lAEz$HksXT6#NB-2h<4phAT{eeG zj4Y<)!qjIOyhhoOOWB)+o;Wm|XH6m~yN^tSQIS>>Di8%@t+k8dMsW(vs|Ix?<{i7kM7?L@t zpack(5^tei7oziY5Tn-4L&^r$--rKU34%==N%m?Ua#PdYiwUSW%s?jH@p^dC(m>@juO@FM-XUA(e3LaP}PgsnWjr2m^*;&RKjRwJo2J}v%{nGFKqY%@6$w+dq?cD3~C7{RX?9FmQ`oQbx``~p)yV!N*^NzldobG zwT>S*2%`QJuvS$h)imXxO#XO6yu7qNSz2(IAWY2lpN5Z&WbS`~4`6(GkTP z-w%D(=p|VIyWW`}9ZWx);^cm`TPT9FP+x$Yz{kDJ7ffQqguCg@Uq1umCH$KPM8;VC zk3Q3=T%D5rr02R`k66sDXi}wWGyQmPg8FZ!w}&Cn;0&yj53rOA+iH2xD&_ zePeAH)h)3MS!ju@-C z&4Kj$F>1P##BTQEJGdh-jHEj)tr(e&cOYUVwD~i<$rgVn#yw2nB1~R4!z1tL@sAAS z@71l&v;@~t%9>ihWx$E-o&w#s>GQ#+)6U98_bK0J+K^MI_5dueonZsd>PxHP=SAZq z@rO4_P6|?tM1>hmiIL&*5fqpDHqUmyDjUhQPO z%ASlgKaf}2&8;`N{{VNr^|szNc-P!28ZnNWiem`O`IRhdTE^@fk8w9HPfq^;aKEcs zj^hc;T9R~u(Rz5lE5XgKcDL0}b=&q^oyv_lQIM1>A90B;$Es~|=lVD5y4&|VTP^af zydu$*hJl+dH36a+uO#4Y0?!1M!@;2m6~Nj`m}3r6BME;1JEmWdMsx6{@YmX zwH~Ci7cV_aZIunNvbYqeKYXkTsBsts_dPNX!PL!PQj)yK*Ft#flWG-_{B z(I)zd7bnl6TJ?DQeg?z3%8gzTZeTRVKxKogA2v_L{VeX)wc102!mg&A1FB8t&G^yrJrL>G^4!FC!jP2ztX$(Q~TG_>@y&CTx*=i2sTvv89;#~E?blK;-%FS$cGP=CItXe`cA^rtc5DIMJU`<{Lw9n^KOi+XGXT)?(|%4{ZjV^ z))lOwCt~c&(XVK0da?W7(>PF!ou4IJiS3ZrD31UYTG_VY?ZAGO9CluPRS8IGT^g&Z zQznT%3OO>|YOB;MQOj=Yt9mZl>RRA(hAvB@w< zgrrGEq#}x1OQPiQL}XUpFr}d~%BjdKw-n2$&_z((K{ge~jX97100~E4AJ0Dbn){(f z;Bsoz#I(TGnQw_-%D0%`Y4+Fsa`?Vae~HDnrPEvek*`XHA909wN!{+fmButZCrd53 zGCNILVvu$vbpHTVnfZ^B+iJ2Bh-2ijTT$6HeGvq|#RgMrr2|4kNEj4@OyoAz2KNab zlIoz@H>;?BBcU9y9|c9TfoleKJs$-Tkh8jowE#x}nN?J_>X4~Pu)QP^n4GQFuE92Yp_1gh1m&i0d> zbW9n3q!}J(F&c95bQL&NNK`bzEZDd~g6BrIy}%CwM}b<uLq$=x@*Am>T2M)wHlCG!()b5e zy*FSxYhD$1(>xj~T_twronxa^txB%bdkT2}01jUlWcD~=q3q{*91PLbN>PQx-ZCRt z57kd(UuBk9`Acs+hDD2Z2>wABtXfQx0bxx@^!Mco8BH_0jH!D(s6zga#e1_a!x0^-x~{<174hC84@~y)z@7#ou_n`-&Wzwb}g#jh16~2 zDNdi{kn8YS<>S2@*4+1NJFVu$ZN#b0{-^P!CZ{qSzn_BT`h5>x?uFTXuKL?x`ii$Y zsa)el`VNZDHR{uQ`)yu)3vt~I%T%$h1Sx^)BUeDD>5|_@)7t&hd#}m3d^LXp;>elC zSV}Gj<_dj{PCUlrVSBMya*f1XP&JJ?%RmA3A0?fxBL0`!)wVks?mVLQya(l}s9T&R z2oDv_e@)YN+j}d!Skw1`(HD=#D>CIhi!HjQ+YQ!HxU3;iK-4ko?GM}dE}3H$wDIb* ztwhS%t6Rv1sxoB{ZDqHrwIK@ei+|)t`nStzen&=b-f&X zoo}%YTSDere)Bk5JR?}VpUr0NCwHsI()$@(%5^Jt>e5u;AvnN#d{{1%TZhm6J-yw% zR@`%u*1gyzw%bTlx{1aIqb^fu`y9IBe?pHu+cz)tEGg88{vA*!XJLn$y5DzZx42t(divglZMyDXu^|Zo=aQV8dpotmuj+KwSB=}4azA!O zg<5{(d|8y@-fwXm=Hj|c?4ivKPv-EgRw7hoA4uxUd2pM?v%|LC!j~(#uL`5ss1BNa zLYQ@z3*F;-xwPEjT)@>7&M=MytZl1u+-N5reHy<6J*rWo5v zPT!H<)b|9?LPwd#bm;?-MWgU!u&bbXvw0rFS4O4}!(1`fJO3 zX-4J{k#SQq;I*y8rk{nIv$EURz|YkXrI~BrSiR;`l_N(^n1h<eYKEnvFf_GRcKT(o)6J#c4qfx?%__R z(g|$3thUD4v}lkNBQ?hj2|`gUN~LQ&uGB{S;heoc1qD6ctfyg4At9wTwBv3k%#T|3JVQ_poaNg6D-6omuZK2t@g7#lh;Bf7_%=YC7DlcV>dBBqNzBH zH2#$|u$t8^vPOI|r7C~p0!wsWy*BAu_Sq8PwQAO}ySA79W?;92EJvPeaKE;vN{;Db zD&by}i8q?HZnZvNqUTi_KjHxLCngC`ZHhc1o!_T%I^qjtQug?=4oBY}%*E0*Hcjm0SLP>2ASM?W=~NtV;WszvVP zf8)f*;Nc;4tRHageVvuHlkJAbs#W%vWacLsRF)kALg;(kwQ}nA{{Y=G){S8<(wd`i z+^V)OD36NHyL3^?=XNbB$VXJ7lb9u*R<-4`XKf<=Lr&^4Ec5*nC+O;&-=-In1Dm#F;-Gw%VXuWUmd8At> z(YfD!BsR^)=7gGzwKzO7$4dAE?9jIEBIrqcIKR}`)y_*PwtUwfM(=v}j(iw%;PK@}tn^smJ}pnt9Ih| z6SOsDRkhOg!G5b7cUAuYZ8ojL>h{|@mC1#qi{sWS5A1nS9K2d5Z?RM#o~X{KktFqA?oU_D@b7%9aNF}!VY7(O(zE0B*}iVo4*gqb;?|W9 zO3-zWIosnuHWhX&_{(>;h&kGZ{1-n1^H-;d~*SOTj^EtDA zQmd)&6n*I*ij}Q99?fSMNDikiibqJtQQ4zC#=M^gELOHE=Wd9$jO0rOVzP-?MiZ|o zf6y*9}$OS_q$r#^YDiS49|Y5WT5$N8Rp-X8nPxs?0OS|s64+LI3gWj9~aeg=Qxr{90M z{{TI|%x5jz_Z8RDaqIkca+UUqd_;>#RgQxImRNxv;AJn{0+OMtX&)_^2MdWD9L$|?1 zWG`nJ?O=Ies;q4Aw3NCii@q&#MQJ`bl|{DxJ?rs@FCG? z!E)qE#BnOd;^^weU#u)gN!h*ZaTM(4e=BBHTGo4)fByg^sV~eWf|O)?Lt`3zXjcJ? zIlxm-CTg$VqfB*$o8Z_ZI^dB>Z^LSVe(jis!mkE4H6aDwQ%a z)Ug*^ipqCacB4WR1BSpd^!UBqww)JUw5@3k@Kz%ll)wRU=l=JXe(U~dB|Yd!eqROW z*Yi8^u6BB~Dd>a-5|%67ujM&g9_3aLyafLM^2mP-7n5q`9LM?04QoiwPyTYCAByYa zUh3-mB}joH8T5kx03~^htvPv&dvUnc{{ZF|e--Dh^R#LliifjPg3*j#7d0cUpHYTn zD6N*`Z<*gOt^sjQqyUe>c1DZcUQa9jBt_eLhEaPYq9pqm8FLZwY8+t z5ray70a^F4mB!U&b@Z39t0tvdq;!*!$D*@$9j*5$ZE}|$?;Q%3-niXHEvNR2C+c-) zZqB#6)1i5`*SUm+N~TdWqB8^)&y!~==i8m7<$aHQrR+;ts`TU5P2joxkAENKj)B;n z^0>00V+ebcfv4}c{5cMVbmMaJJH-3N$L@~7zv?U_4U-A`<)^fx56K>nCxnCEpxJ(GxR~7G@Gi~6t zTJ&zb4%d&9xo#UpOo2zPH-2{_UpV@4%jWsBeBPPf!$|p*l zdOLh$T4UUqf5kF0vfF9TX{IAE(+*V1Ee6#ZP!R*tI<3m8b+4#XcfpkzO_Fr(=u6V< zFe)OZ+GR?#;XI3g6s1w6Xd}1@M6_QYn)9YvE2#h>?Mq1gpbl$#_9H#Vs=`#kArZYvkxEp z6vLY3TU=2fGMQB=#Y)_$tmUG`)eIRrB4m0Gz@(|_^VfOknDYvRvwKvV{{RSI&puQC z0IA>aulj%dtlK}gd{6#dXjEYFmtR`&KcF(y?Z^Sf1rrOZe$W_^@hGToa|Xbe;s=7F zp53N<8R;&FF1W?JR**4&G({cu0vADxxh{o6)FK0BFi}+_3Z}+X!S&*T8%=3a+U_AR zTmz@gQZ4vssaC9FFgnh!6|ZkhxovE%n|rGYHs@Arh1Mo(6s-=`AOjU+X?6CAycuid!#EgrOOAq!UvK#HCOO5_g649z9k5)l> zz>QI|-BJS>)WD9Y$0ucvDz&XBl14GbYgSsO=eZh}mbS*9w;7CQ;zH|Hwr;fJ{+y>p z-G*zQC!t#J6}hWVel#LICnHP$02C#g$ibswRp!0nAPxH;jQYk?$DI^JSn@=hn z+lp&E{{T<5<=?wG%x4i8m-Pa?le@ne@xN|YG^T$jXC7Z zN!2@`Wge1_tcvp2eS0w*xt(tK?UI3dHul3!6Zs%pIQS`5yBlgFbA-ugnUgWlW#b( zs0{MVt!2Y)aafzp=E9FE;}>&|p*or!u?~FGF`L=dE-j%7RjOJIGpJ=Lcw(m8baS_( z2eaMJ>trgQ7w}knxPK#H?Da}^wKq|205xU|{wrEBT)vyD3T?mnhMRa>L3ck5Ae zy+>@N+wIeGfCR#iuj7KvOt+nq=E~=3v8hrxRom_H^AQZOcj?g@_bK93?)U0M*KsN& z5dAzCY&C|@+KxMKWx_N@r=~TFQ+)AU<2h}6pa#Z7_y_V+VU_Lnkt!xQl38nu^T$6Y z{vBd!?h=P`w@XK8)u$&OWG)=Pn!O$;xSW?W4ynBmfg|S#$CK05iWY zYL|5>{ZAAym~a_iJF{OK`IudjjTrIU8dUIdFkXKP^F7{l{{Rm^Yh&gX)oI4wb+Lee z0G_MWd%jj!O`ff>+>Bxes1QPqxhslPr^x6~2LN*Z#VdS$kgvP$U+X&dainy6WHOVx zajfkdzTbDq?(OSH3D98;Ed4dTmGjz5Chvz$hmp+LFl6sc9I%ig@G*cA*esBKjZw56yCV}kRu zl{-6Hq|0CIT;JRtu!+81s0QX-| z{{ZW*^@A6n{{a60CJXv^!q5CJpVRzn{&0UiB>w>VqsjjO(Ek9rtDKtHFQ)!S?E<-U z!h1?p$BH#IQZtfexdy2|DU$}^s)i;!Qz?YK!Q;^r3*{bALYNVp93sl4II!_pvC>p^ zc^`u-g~D;kR%pdAI4^wZpY>F_JvcYWGX8(^{{a0?{{VabntvzuyMEg7E&l*x`|F=s z)Adxv+H2=OrB+@9$|J}qsS8<1AfD%JM$}2_8BuMqz?&&ReEOis>|;$*JUS#68?|9A z-Mk7^PO!!bDy16mrbr_a5K)EgF;1u>p}_@@2D_2oXCN9bST5Sn!qnF>pXHYoeY1x} z!;&7w3pa+tIOVVArnp~YA7g4QZOq7LIs8|q9@SegD^!-8a9m=nIOVO}IdvBw!!tU< zD{I~;(*Au>veSp)sw;3P(uI}N^^zw2mi&&r4HEgSXvAqdm9#7F*2bQ6S4C`h(3#uf zJbEr$_e#cb{ixI4HJ+hnMzn7`MPg}ApOy-@T32!6B|308>6RoYH$F2$QQ?qmUO#|k zaABhJ*v6Hp0}Vw>2It#aCZ8LjK7@i+GBpl=DcxUQQiJ|)SHW@Q?v0~{Sp5$ivmInc z9aM`uu-(O{?((WbEkiZm#<;n6y_=_McF`TWZ-55}S?Be5_gMELv8Qk%4iA6}$DXd* zRo4!gmd!evPPm*R*p>7+wfrsevz*4MhXOV6iPF-12p((6zFcEQ?Zvb%cAAt&__Cag zWPA@*)5h;t)wl58AGp}Yy?XVvMB^BfpO9PS!qtA@RU+GJpazu!YBRZ!V0Ultg`soh2v9 zb+%!=yWO2B)7va*5$dZDOjn;-Z)7e#e`Q~lURvtc8Wg5#N5Hm9`)iK&Wrprys&+m! zEG^?w`WJB~kve?>S-O`?j?Q?tbamQXmdfXCBGQ$7&;aQ5SFl^Gh8_N$8GtB+8gwT1tU@r+=4bSs`ZV9R{qqJ`IN_Pe-9)0M5X zC|p41WdP2wRS8g#7h;~9QRCsaO5JUmm5<~s9v z8*edNr#r7}S8ui#0|8Cq*fDGuPW@cx2DUlx2)V2`8@knH>5PnM{1$C$YZ(~N+T}LY z;(bKEIVrteW*0Uay*YO}w5v3uI2}Q}mS){mrO@LWeO~2X)uTwXjEs)2HN4X`kfTza zwCdZ#(hQ5o%>?LHp>B26a_U$mLdw0}b5tMT#~2Sajijo}Y&TZ6##F%o%=-M-4dGdf z$y&5Qh?W?979uhCmi6k=F%mHZFad8ymHvuU_}w^bI>d{Y#ICy<_gK?4DPGf&c>&Pk zxZduX&a9=FsA|q{`M(7+yY^k}^AW6nNnN#Z+p_l7;)L%&)LSeL3rw>$Hrg`LF)T(y z#TAm<>-%wKRHRJqbr4rQ`z2k76Kyc=8G5{LN1vCoz&~~sY0tj<*a3|*LMP0MF#iB* z{-NDx9v_Pk}*N39OH;r1{^28 zGlAq9jwA`k;ihB{&==r-Z&^I8vG#ul{UrWI^IiV{YBw|f3w2SI2t-tv$51(#QGx=LhFTU+*<0rZQ7Ba?KoCaw_D$AZ52=L)63+gnM^U81;px@ z&GCF!9$d@NjjGm0l`TU9E~}jP9_F*%0Zh}i&@|3c8l*axS+`oC?C&7yUGnmLg)p$CjQ0=ztxHN9GYa`#!vv}y^FF;DqpuTh?WLCEI9*&EBXbhK@9GTbOi*6P*Xm9dbejsd(CMW=5!SX)=Qvb&2za6iK*tE_tAmsH~1euX`rrKt46 zAj!Hec+W*zb3dfBw6eKxS%#R)!F9qV*->#$!v6B(^3{>iGP6~>Zgr`~oxS+~0EgGX zX5e4&jmDJs^C66`!}yFBISQv^wu+Ly*e`@ekxY=Whi_I_ zgVL}ZQoS-pry!NzM~|MYH>zfj9Ir|x#b}k%x$(7r+gxsTn{`Oz?V5$7^HUAFKOqvU z#^6Y8Q4SFp4liY`QvH12~o|J1Vsuy0`wJSD5Qakg|(zH3&nIUCfMqPvW)ig365(TK>I8!ZI#X zBBgD--a|xAk`vtorF&Y|-Zr2-h6PJwQe{(Z+OBHW_Z_^KpLvz`HamMNx(B%?VSznX z8TO_K0d&>5uS7Q+(;7ebH#vRZxjei6{Qm&Ct3h78 zKb?gGrw5X;EmaorWXqqt8*$>9J?NSP#WL5pjj2qp>KD>W#Y6QMPRm(v9+i58e3Yt; z$R7n3BG4ro>T+gNDHMoqsVk$2ch=iZ@vLL0&Hn)L$$k^(fBKvEPvHLmqQA&KO#ay5 z`!4?g_p6^&pYbBtGWieeiu1gwT3|crK{2i{AwiI_H%7(fgR2#73N-!FTNgN}FDynX z!HMKWs(eZ{r*-9ekFm!bK*btSv$zo3%byHBC?%|$Ssaj1q?Z3Tw62pT63!0M&5JZ=RC`o3ZpBz z?lh=XoMwDo^FevTEsaY_T*ncs@K=wyh69|({&7^CM4&-kT57x`ALh{>5-JtCZj%FL zx{w_X3Zo6cDhjp|IgumsTsga#ZE>IZY)&AoQL6H*nbzJY(Js-D!^uiF^B9ey-k1dX zN5dqn*EHo7XIq)jr1(NXcjWxB-!7R-glTQ`^x||3myY*lx%YMI&O5f>ryo#oy<2u! zeOp%@_9tsva+r*x0N;Z7{D!xyo%5Pfoj_nU%iJEHCtklByQTcj&BgY~-0>a0G5#45 zj;VNgF5KOm_q`h5e)$2gw6~#7kGf<;V|3BdW=Obpf28L zX;{;}KI)3KcHO>}0q)HI0FDRjg~L}(D-qi}SVMcQs5Ll(AI*Aw9cOn)t@M(#p-f50 zm@K@z$5s!ybSu=`s~CQ2aP)btYkCok;2*=`buKF5FnwpMI@B30>wUMYb8SMA#M9JC z%K(ED*;&fJbZ?;n{3ypCITVz2Tiwo;sjq8RB-9|9Y!go9?7r;=-Cd`3Rs>P4GZW$p z^gO$;+ugOU*UtBAN`u@xlniZVGNw*NX2$sIcI~az)xN=NWmvtyGl`hVjsUMc?(bMW z?d{u*UMEv&r7=$E+(x8sdI0XqQMqpwuPWH_N)VokmbBn5CU6xQl^qwE-B{PzDBMDU zqdE`~lm6Lk(Hu)?zOA(Pv)Y_>*4*GsZhv$hj-t9{zTZ-}AKWT?x++qasJH{ zqjL`4Y#YU$58_$MI@n`Tk5!DbZ&yg;SG%6$$8GNneTiK_3BxToEY)GV!|hPxHm2sG zfVZk4;N!(>(HjQ~-K_5Tr9HOJAi#*uRR&>AsM#;9>eS;fv^Ye_M3I{;s`G?xHEj9a zy_7w6^r<`~b0me!S=3(dSDU8Sz1~)*2$)vYsGfkXwsc)Pp~ve+JVy4lCev3@m&C4B z*3POtQdEZ&x-pRzWbNR)alCx-P+U%YSkAAg!_s~Wvk`5vSFjdBlp@AQABr^E?`^Il zvA{^YSQQatMA80NDbV!P7!M+aQr@mKZ8q}CYuqxz4CQrXyEYSyimz7*?w&hB9{{1udjN+1v*8IV7NkoMb1P zd=N_dF$77Rp1o1MW>xmtP6t!qxNluOtgP<+`ePQ+;Ik9hxU`H-5=nLoT9;M5Duh=! zeAjBu-Ndft8-TcN-KpJww$%4$BjB@FXuGz6g~#@;y17uzhBv-B20Ewq;d z!BLZph+;EY-?Fant|oSQzkyx+ThZs`>nwce@1To+=760`4`|>RW0Eu|*vIJzImHC1 zQ~nu`M1rk^4LXKBIxTCe#BZF{F1YWgxiz9T)1^tMwYhP$%0o86chg^}rN;g0wsM^F z$znM&8x0sy-2~t?l6^{xE@=px`5an#p9Dt1!Q^3LAPZ6>ABxtU%&;5fy=uGF+(>bz zS`UKg+gahZGyY-^iY4VsxCHj09uWrp}4aQ3z@ z7PFo7WN|v!J~=N(jMm?o**Kk8$BCL}Fdf%!Z2B>?pLdGq-k#q9`!yr+IIkXm9A`5< z9S4n2A4@|}{IufVg7kTPqmG>`6Wsc;u-lE@JRbtMYh86>`!FYSVR3OhbucN-?wXqSa}MZoe3)NwxOTw7XqH)**1vV`MKUPP?bjrOhN z#e0ijJvR^pf$+^#ZW|1@9mlqHY+_y(FE4|2D>k$0&vxSXc(2Cj(-Q_%WWkGq0_RnK z+#RNt@wY8H7 zc8)bDdVdAZL5%Lz^}&^UNcw6-ko{Kn>}xuXA7y(-xAUi1HnV~8T-}h_BT^Ikf7za6 z#n)~(m&oZE+uf)`W~)dB!PiRTqXn||O8)OepH zHH@Q+3h@>W-UCq_E<&rS6$IFAvE%}Yyj^j<^Yv9hvUYK$se)ON-t zg34Ah@uOCtEDMm!4Ke#=z=SJCXF(*eI1&*Mw5?oMX7mI3*-MpNz>3$R8IG#z>BTcy z6GqrkVJt(qS=zeTvb3vOGMEIi#wunqR<~6}u_poIx2#K5HtMuJxtgVcJW);U|zac8J8K9*N0h1BLuQz*IH zsMLRo)Jt&4%8`vHIR$Q+iSL+HxVxh*s&UeCEWI8t73}l!b4)&V_s#-6*xxaK^D_NG ze^l^);OqB4<^KTlCv5!pm5=uS0J=2!MauNQ6)L4VCs1{kcG+^r*(`? zJDAkJsUkl#2tIf&iq|-O#9_bGi)AwYK}a%uy2`s&srwB702OGV!!G75A~cbYg3Z?@ zY?l{CovEHcV(NQSvsAIXsd3L^GXiOmjF070+dia?_oFnSu6nAL1OcUOIa((ad(OtY7n5vNP2fR3zhrI`vM) z+B#9Tt7*4X_A#S4`ik)KYjRC*e@3rmExLP%r3q@P@2A0fe0hu2c`=@jkFry$Hi^Ub zwB)+-?>!i`&AD9b-0#-(fO%4?@_d*T;_bF?W+b_F8ydo;8ZfuQdH^rtyZIZiDSRJ$2rUWXW+2{*rPN7Q&Z@Lj)CTsnJhTb0Fs zRAu0}?OhtTc&}nCEM^Jy&r5Z5m!e47IA+@__7o|CB1A-s^NJ$J;usGdTY(QE8R-=(C#3q2m|eqJ}W!+Yl(TsHU9uPrE)NfxeL!;mG5*m z`cW`)6s)RlRWGjleQ6U&MA2Xf&*qBg{C-=E_)gzaP>iQ<4@6ExGN|F* z;Mh4W=W{l?q((bmzX{z`f8q%PfC^Q0YFk&ixtp73s3_9`k5I~_SKwUcv^%%AY?=){ zt8{vMluzbj?n1@AQo4^G*{rt6Z#1^^FJjiaTN&q|m76g}QtNG@S8>UL;nC!DeA^ihL|4#;JNER z9ERVP)weUWwV!ZgYQRn>83U82mvOz5vha1+HJ9VU#=g^gPE^F9P5rq3>n^@7vd*!? zo0Dm_GS~R_lekorgP0N`d=@vjw+~LTU3#`@?$mAe8>!Bat0@9C9*X9?+*7TMdLo_2 z9rx(fE)S{$qL#a1lHKc5t=sWOPq$Mi7&?N>jqKDdwpi+?9dgc1ie)c#p7D9Er?4;s zs_Uy8s#@8`ow%7KpAwbRPO5vT6Rl0LaEp?CZgQ5)|o)RFN2!#pvI%5`m7V z>bf}APK~*i*AvliR26OX(upJHtaIA+Q-Rdc3bMVlw)W1pVdA1P6t^hp02L8+PT*-C zYoDueUX^UT6=t&=esNuAW;SFriA00dbk)w@h~Gk;J-TNi0mXX!YVvdTeCO`{%_{xO z-sTH~cUV9BveJK2{-NV*XBNM7f6IU0Jkx)f@^+v5-KX_je{))eF{>5U*X3q5r;*DByd{FlgqY6~P zh;KAZ)V9i+uDwP4Rn2wdv(;C9qZs214@KtW+O_VCRajQi3mkJ?wc6zOMR8IQv>>lu zn^J8RHi9E>Fmje5Zda4ra<{UhIo?Qvkt!Iceqt*6n6g@XYhl`9r(>vd8eET(*0-w3 z)vVm^arSF72>^7ijj`M`MD8^t*@N*?4WE+6CypFHE5FTAW5j93R!rC z&3ebu;-7;Kd&8cmEHW6E#dW>jU3)s#+jlxqo1Ej4<$IN+)Szd|q*?u6+OfFkn=lZs zOAdi%R`l-HJEwGIz0wbhV5N0r`&OZa3+iGLJ@Y;mQm0ppU;(L2?1C~q58guiZL zU!`W=xEucf9|DZ6sq{4CiuF#;9IZ$0KayJ7!)>8%8ohb7Kr=rTT=aA<-^#5nGigl2 zO-hgl5YD)6^)URSeXkC0LX4tZkm_r0Ogc`&eV=BqhHd1~efms@-jFH%+^e$~IKKrr1*kq=q57s*Kjnw(;BE zU1PjPB9&Wj%?8ERZ*;DccWWqFSE&R40Gc99F$b#VEwA?*fwI%C0o59U88YWDQ9_LG zt^1$1QmN_ssK!ws>K}^q-$ZoV$wpT(2QeTDf_z_XsC$C~59JRdko;FIZ{w8P^43qd zyIkSO1;fWlk3)%5&i??4c;A%!U=2;ba(;qX72Cw@;my~2!EDkozODu>Bk35Gj#<{d zoOAHTa^6s>ux>)2z)+cp^K2B4E}x#YZUwg9OJuE7%*Fyo_-Cp*wp!Pay5rOI`+rY{ zJzJ^^D=p#^rwRb-E;SHRikydL5dJ+cQ6Os`3#PZDmfhIed!;&-+63{AVOMTGi<-3b z*P*Y|s0JshHL{_mDBYPH0R@kWuRW|Wzl~Z|Daf@)lSjlZPRkozvZYOWg8`XAl-lem zdu>d+ekdg>HDPqpEbANgbm9ET*}dIOK{R? zMj&E3s^@Q3KH3tEU`}2Nqa$AWhtlb1JxYm%g(=jXK+fu`FAJR%q6l)>t`c=_FShy> zYeW!OV5^;MR#Zd;da~^2yj{kx@c_sz>cWR4m=+a4IYj=Y>+#+%Bl6eH{%}mWrtd8E zUfiF?te5pJEx!i8bp8+dQ~R52{Fjk`_`ClA-mFm1`#cu%_=&`=WtyoRVyiV0JVIeW z5p^&a7%PMli>OMDg&NAlN>UBs)n{j`7%GH-2kBC5K=SccPKFfZWvTkBCL4qXWc-4* ztvoc~AIVE_hWewv;9Y>W%ZqAronS*R^G7sj7r8>WNs_McIQcK7gS)ON=CVCoUEem!kmS28C6_d zpK82iA(!@`SF+bg81>00ueDiE+Loa2*EUEE%9#*ujDpiale zUw;cac@1 zIP~CU>pc)yaj$Znr93}2Nax9xYkIFCVW@_~1;R&5(W!9yf?dFcS9)-R60^5 zTxVN#jIGAHV2yrD8_tfJcVT$fwLW{UIKq@hv*1(xM?O!^-FGO}({olo;mRaLd{>&+ zw{FcdjMBEH$fYtr#3VPG_Hh1OK5s1Q+;{pEtvJnCRW54+VdU$FH+c8(-@xab2+^a; z0hoPK{bhD}wT_*+SEoQs>2WdX{1-j@jXz=BY29;)+D0ZO16HHea@%f$qHWJAqo#}x z$wy8()ui_bo32J7A3&hrH7lcQ;2UKzwoa_7H@q}}d}6E_?XFa6T?lH^pyMS{v@Yy% zio3sew!dz-w?fbYW&6i6vyQ79*4=eVru`dfe-0MVVK3g&7q4E=KPOw4C+;5Wce!^K zsWi1h!lZqW-vjaRwVDUI*>t-N&`d4`C| zXI|re*|+Mq^)`w$;sh>YC2-%e!Pl=n9$ovf-O<0>soWZIFB6gRWiMv<*^bTb;x#GC zjyMtI>&<(+w;n}vRKr|`GAble+~s*sj6$ukYLbu@KixT^w>~RzR$Nd9#+YzbMw#5I zG$$>ty>HL;Fa(Uqc4a8t%?pZK#D0=mX;h~XFn$V*g~bbNY85F_hMKi#%0hk;S*cmx z+3%P2IJ79;lTxiImXXbtJx0g4?lfh@H<~7xc~O+D<@>W45V_0LYQ3_&-6OPZwQnB1 z&%34<6UIP3K(5oWJ0|Z!bnQi8UBEKo(wXI#J5g`F&1 z_a|qmLzqN+l9e$Wp9fdYpW<{lKO(Pf>WEdphe8eur-yntbAEc(c!s(?$Gb8w83}2L z$zzsvuU8$;t(R@D8rEBxpQk{RcojV!eP`pXcVgr;UR2$HBoWb9R(k3*M;osw7jQ{X zY8)2wtoNb_ajOJZK-^;pTh)*47&#v$(@xGicXNHaXx-}WHN^l)B(PSyaWC+Wdt{Q+|&LrFNRB>Cud#{%%`#4)Rl9nt~$LOjHTbUz@L)p<5c#V^+m`4oj;*& zR$0B?5A8}lKQgh;W+J6PCRITbI+DXL1Q|OUD8y=(1w>b=C>#Rg{ALVACoh!!{-Mn*Z!v5b!YW8-{bB{ ze^TT8v+j@iKl7J9Z#IATn}6P`1*gjZFISfExGgn@% z$fYx?E;{wfxGrwD?7!Uq0Ac?CmOa1l-dyze zY5X>FkqVy3EuKsBJ3rNYeU<1;2>f$g>uS`DH9t_XS*y!K14zGBxXOe+m{gMtNi0xY zSdZglny@X{N>gr$MLGmv4@Dr!SYA@635?t-EvjBdPpCU&g2LLQf0{&$0@j4=%U{$6 zF0r<%vAep6v=Ak8#!FNv-sq%U0zB8FO>qdVZ7166kl2D&TT|iHhtpN*nu@aIRx+F- zV}wM3{U}D;PQIQWqp5>8$z6M;YBtmf6*|R>u8bkEPB5=FKBhl{qFj=(8*HW@1Q&d6 ztg3C4JVq{#e2mWhOr531I2T+UEos~{Q01BiS-*nD-P_Z%aNZ+2G^)sXmkT@2jqBZn z?d>R3-K*6g<3=83if#Yb$s4x z+xvrYIc>t8WJCKGpO?IQ_;287oEF}+`7JlWrWb1S$5Q3mAwm&25&#Pu_e#|GRT^^c zRzc+glqc8-ksVPF1R1-D)1*97Avcuaa&{lm9vq+&ZOJmwGn$^ zV;J1b#Nw#b_W%_^>b_0RQRnvY5fw3GF9khSvu)KaWy@*_memJk>esV}BSN;LZhMh@ zBpw2B_T+LY7}E82eZ)o_R*|ED0Ae~WJG~L4a;@5x9yfR^7AH9z82GGe({lTJtvT)+ zbxM-eNYSaLM-x=S$py)YG0{5|^^^vmLbC=~&;;p)X9N`h3@#&aX>! z-yp2twy)s`*;ot%ls`qx4#ci_IwLAr_%`u0W z@KTM(V>dM?8JT~=iEg@;j?R`2{m5woc0yVzZWB za-??Zk<#L|83W+?GR8Wpaoeozc3q!94eolQ;7RJcPRQt6#R{X2RjfU6j9rE-83m_p z_v&8V2^teL#bFrMG4zRa#cSlcz@v-eow^rtN zmxdw6mT{84EV6ZT=b78133Eoy+nLmyszwBY0Vk?*%WhrxEcW$fcB^R(lKNGBF{!A; z{_s;3!(2`4UgJDo-s9bsDQc8tNlPoIx-xgLsY7n5K)$**IL=z5>2;6OblaOL-_xpU z`(Tl!Z`+18-FLRpVlc&OM7y#wr%*tHh&g;wi*mtkb?QRnNQ=K!MpundjP2fEo54zz zeR(E2N9|zfCu6ftq`@;_a$N6rrp=FTvz-bfNz~&NxvQSrVUV`2{V`oNnPTmgz?2Ne zJyzqMP~T@m=x2-IyZ$N4ASAM$_aHU9v{ z^MCU;{{X#M@jMo@A1?-E8zs1y0ID9MiGno(nO|vp;Z^peW>K6Il@(HhPC7VQ>Pyv7*wpgsy{R<|yT_Y@JnMUopI)eJk{{S$4Ay^*g{wh&x8IW*LRHas= zwf_KhP^beUaZp=;2IB?}x^b4+$nF)u06$Dr-?Cd+%bAHuf%q;`Ct6q0j4TX}7%xV) z7VY#_*{82zs757<=X<>}OcxHLUqxR}ii_>lUjBBnYESEYl9Fo5UrSEK7>pV?g?lB& z7>%9~6-_w@ol)oub7pKXmbLA*sPLVxq2*rbZ6M-2R~}34y;_qU8>cFzMphL} zMwW?p>a(uXZjq^Ra@BiZWnOjbNK}ktsNl6GHN!hh?UvuWTvnsE%MD)zkI=Q~{aDdE zJwJDoUc6cBOtI;T?ZrK_4=*O3=Goi|@uq((hQu!~HO-FPT%Os6yTNGDmh~Eu&sJUw z(6@^X$C*;OuXjWOKm(^%3y#}os(zbT?G0LY+{*UqsWhi)BTg_F2@IUBb9+zIbX!X= zr{1Sl1j-WzSmf(kOx!HeOVP@=z3%$!xU$twA?D8zz=vC$GcK5Q{ScwV?1V`k(J~(s z;5(ovBGp~q+JEa?W~M6J7d0qIJS0a_6F!Y=(N!4qlyG#@BndS@UQD-qEM>5?Q^T&l1%U25h+UglEj#bS1Ac)7T> zrTntwkISzQAho6H`P`TBRSnbHg_WMHoHxa7(a`O-?Zf>gT9BI>)HOgJftELRj9&wd z?07_Id%xh_#zb^1SDR_p8`gKYdu%Uv8#vmt3Jz?Glgz6&fsacrPoh>TH8w5dHuz-Hps#;z{D5xUG1LB8O9n_7+h4_ z=cJK_0eJQ9>#t@;#@382sC$Fd*t*{RW3*F@sg6SrYx5kNs_WwPX@lfah~D%ZV2gd>rSJ(z2X->OipSqEZE%>Y} zB5!H{Fu`<{jn@{si3Qh9SY5`E_eY6ZbITpgXFF|{=ApwyIUm3;XN|P?M~Bbf+sC!~ zO8Kk2Uy9qs-Dh!DwONDXs${R~Gp9%Vr1Q6&oZIg|*4p3essg!JGQ57o<0G4+HXgDD zYQ({NlOqzXTtFmLFqBy4iBs1f6vG%An5+g`jnq#{AaG8_$Y~=bQ^sy|zHDBt@dm|6b zu^UyVlI2;e%Xj*6x<**akv~#Og66^>#a0Mz;L2ZyDMcy}AQEv0{Jjqng)@`?BO$r#R#DDFqGElV6jT zC^LIKFmw^q#be%@a)3;n7?v@LO z1^i0W`&T-Ktyw;GB+I_t#^uOvAq}Feq;QN$_$|)J)Vn)tALmyU0K#)Je~OiI%J*ip zsh1cyW#r|!WsU8I-&bF{LxNrW7o*cJU2hS&r&n;M2-G6~0I7NJW*X;gwqyL`c&kns zRFJlD8C6CE<)p|Nb$tVC zWp^B9FaiGnt$O(0U7L?2vw*Rh}hi%N~o% zZ&#~s`FFj`bGEtS^kq&3fC0e6@m&!^-nov`3F_4X!9jJyOkuc4$JHa8Mrj3JeZGyW zb=qo*W~jQ1y~00WzC~8_$6Bky_F3NYsol;75S(6|h-E9!%E<3F6(hD?TvM&C>Wxhz z9a&=bdpJI<{{RZ!_mfK7P%R@7Bk^40dsjrM8vg*wE`&y-0yPEKPVb+~`Kt%W_j^cM zSyB@+ttmuC9&W8}c6Dh|xQ(5tokAl!P&56e$!B+H)i}YeZ@o&wr9&A?u$*a(j9q!Q zon{udzTsX_qYGNlK8QA@>bqB;*%sV8U47WscBLqmlj7w|wLP(~!)TH26wK;8OwJ_v zsqU+Y+IP6yQMs$_%+5xM5gh?nOLK*vXLgmxqq|1-vA8oq{5yKJ7(P`}txjJe#xeH~ z=_`0~%QJnq)HGrQvC=VF+6sFqtSU;JgR;$4?X9?-?x$fFb;)OS%_u}ykp~b{E`_*X zRI5%jh{7b7_@-A0T1p_qCQ`-aNm4A~g5Iob*LV7K#pq$zH(F(o+33zTaj6sP=z}X^ zb6Ryko<1c+W$iAi3c3bCbJ%3WqF@OQx2qenn^*<~##t_!xvwpZ49|$kbaTT~?^WdJ zaIMCvm*t@{{{SWH@TPerd>`B#*G~(VZ>E>{K5R;EN%LRR_v^KP%J~i@W<;v=$#L*n za;ZrF0NAyysS6*1)v5uAQz(#{(qL*=CJ#~YM8g;L7&|#W3!b{nJ>J7LBcMKALSmRP z?dWjl`=w*uv`)Dybq*i0d{{#0Pg^7pg- zcc)}wn&jxK43{=)>e>B?E|aq?Wm!Gmcs?o%>j^~F4cDr$PjI3>qr?OhCrRM(#CV{k zP8B`U89{wS(uEVNHo<6X)D2(e(`-R1HLCvrbfG;UvjnX%x0RzBPt+U{V)t)}`e0{( zkVItm+iBCZsjClh^eU>HdYQMaBRoWoXd}5sm-85rgOnNjm_l1v11%_(r`%fq0L8ho%_x2bzKeqAcx>5G6#EEo?3=H!gE%GTia+7x78 zT(AXV8uxBo0>{|c?CHzWNDRGPZ$Be+-tDC;2m>dH1OA0;kkYjdW3ma+wWCe~pSd7R z;uw}I%eQx;_jMhT@wi1DzXD?r^6IuRd#>bd?I_tx4O0dFYAZ9^*@Mm`N2nTDI|^;__r%Xv5U)J%VZ7!m?r?mXW{%f0Q^bZcE#r-;+*9UXJM zp1&TlJ-w?6+a)QF*{UDl3dX&iH@W+r8s10z+yMUo7&t#Ay(i*){%_3C&75vIg(`Xb zGIBgITJ2k%W3Sh|sZ(jUk^caNravI2?y*i=G%501d-{V3fB{}z?^%V~vc1Wt8EjCP z#P}}W=P9jW_}1ff3KZcN1dJk?je9BG*w_ALtP}3bFBezc38OP{w%m=5Rq7w&L^1JA zcIuN{RyT&q*1x+F+Te0Il;5+XFJA62+Ad(;m^%Wz+3Lk$_`f2htiihEy&ARX+j)h| zC$UCH4?taWohyeg=W2X<5S&j@i?0@)&2L3$+I!V1(-`S?3%4ibcGj@l6#bq~VA(6; zcWx`)?bK(!88hPKuJy+EUjazhlrsPXbRR6>;D z7-{ODj<%_*@j(lTY9A1kT3b+SrvW2cD{hsfVj`8MH+7~XWd{uMMU1tzI)6n(9GEJK z7q^w+Re96}7W%~so@*f>J9Ls9OkIq_L@OJJf- z=_A#MRU(G{PyFc&;qfR|LuRKTOAi30Z$&*5eoN28`H^ATUuf-jQ5er$iC&$%iymJ&(v94u`9w)0p;lgk)mNW;lobQb;4xQN{)bu0`)1g{q@O{*u_i&~X7>bKgpW195qE*^~ZWO?mKQrjxc zm|P7ct`>AgOM+5vJwc0zg~}?gaB9vxLcWY9Tm$5{r{*xyyD_rp+$vX)Y2r!pUa2a& z)fdUUNWVvl!sH+Q`s9b5p!~#!}?_#$;Z*2(iYp$kQ5WM`1G_FNnRQ4^d zj01_zE(Uq7QFZT^M5<#(-)xLxL6D1&lJ;p{ZcMgq%D?#-K1?uIb6CUjxXzu8wMNp# z;(yq@)?B?Ft6m3}`?v^{fx^?}fNs#ZU^7Llv7)4Zg0&V@+(kr{#224k~xg!w1G zBj_~166k!Di&?&N?NGD2xUVl}j<$@t5>V3_UhoQ)DtiJE20C?X@>2|Nu31g?CLDip zs_rEEPn#_5Fzvy-*SgQL9FK3Su+GrcYoR|(PsMVQ&hDG?YkPKfEv{3oIzl-@EmW?O zW2?okZ$SdxR&fjaNO5)G`BPnSnQZE+GX73x$86Ed* zy{o{i_X;&57*mu)>67dH7oT@S`eZ&H>#$ zrQL0BxYVi4q*$0jUz5ZqwD&g6+Ws@!D%H?qP9TqLj93}JjkNabT)p1yqgUf`l`5J~<<*+-Yx$n8P8p`X85>E8TeU+RVtiMAU&{0F z@0*In)v>l5gxtnQTjkMb#P0O-Pj0!2vvGAPocvdNTnbkdp))7-5VL5dPQ3M*N3Lp6 zXrJdFnC7Rp60Yb(Q=_gyrO>CcHFu;grBGm8r?wM%$Weutvhoc;LyM@$YRgX@H&0br|Ugie^ zs~fJwse&C`xw&uMq>uiO@1z$004G_1{{VEa(EL@O^BR5e_#ftV$G~}?{GI;*g?K2< zixvF`5BZaUsQf`%!GyJWth0df@kpV|DiPE8pgkBVfc>zNrcw5M)XQGxAk>MGcz{Mh zW8L(93>Ui-Qv$^12ZCOaeZ3MM)~5X5tSw$nofD}>tv_+32odmF+Tvz0jud^5@Sd$@1~~-aP*RRiEi{`||X`7~;Pjv;C#V*=_4AS1iY6NEtGhs}*o64`&j$ z8DfklD}$yk1LC4G8+<3H3`xycr*tZbgV1KlMUCxx(VnNkC{=4p^Q%Md5i9{65n||9l{-37BUVAt7jcbWv6kG10axC zax1#OT-iB6o7!o$keJMbl2y{Eb4gY_aD$TRERK<5+1+%m=K+K!=3XwdwAXIxzUP-U zXj@#=pg^gJ#}Lap@o~$Tod;}7u_Tu0o5jw8i%;FD?Bsxv*hx2HfFbViF~{{Ro7 zxu$xfzuaE;9@%m zDMH5f6B?vnOr?qWD>ka#@2Y9oL*;^ZB)qnbmG#3`d`g;$s5mQq-D2U02oz1lm5kJO4$3w zxgDRk@fpf;%$!r98m8NOO1{yzS2)UYkI8b{bt|TFtJ*Xtw8_8(L=cSD&AVF4uHQ(- zjsie=D!Ey1P^Y-lx1c}Z;UVD3lMK%S-3_+mR?;Qukjs%)`|Z?WxmKb700OCbd{B*} zwf5F=t*SqkIR#RxcSmp+n?-9V$54!fjD84VlHgV4Z?oCXet{q$5N%tw(?YDN+f|;L zb%T-6x|>9-1s*N5Z9Ik&qcIaXV&C;HTX!9ck46yM{m9A0hHGAem7RyVDzgF3Wc(C^ zXybrZwx>+vP9K;qcJ&juzq+32Euv4+kJacmEJPMLX|3e z_yY%yK4k*ftzj-tRJKloW87%Qb`>dgIIE|1*SlMdy%}3h6hFiV7R`CNr{b-$n{_(l zV5 z_<#PRkMED?{{YPo{{UzF&;CyT0KwrMQXmtG{*7?|0GZfEb%8i#)oEs_)2WA-ij3V; zGLJzd5w}@ooHda=VG?pkL&_ z7s&qraB;1pPza23TwRhCgJ!iDs@~xCRb^vuKl2jB(IYLl7!mLa#XZAMvm%sXcL|e6 z;1oq|hCtCCM-^3*bwv;OhvK7BEcXxbLRN~qeK;qgg00k`Eh(RZw2ZBd0BovAV(~^c z=~OsPaT?X4b8?Kcb*KYIMe`^x4Y&M>#v}|vqfpWQa#&#HWmR_CQWrDmSm3M}en}uN z0XSlVW#fQO$aMe&Yg6Vn;PK)ZVCd5s+RJ@62j_}Kt8U_4iBP$YMb1AoqbJ&EgU92Z zYt7_-Xo_9Xq||2Ny*aN|-GzSC(I3j7TOpe8@7%0EaBj^#z~KI@TcYjbUghlE`+ER( zeQ`gs{{S{#e_Hfoq-(sQ=2fq%)09u7=g~?x4kc@MJ)*>t(tf$JuxowOw!0jPF!wb= zUz@-wNXquxZH)?mLl{WoE{egnZx;6AGaAHT-r_iyiQE~{J`QkT6GAVKn6p;v;13!6*G z%hPj6lN0b%Z5^16DzK1|^+Ck^9axo-->j@@?=`E=L)*|?d=OBfx!T|HN>R0Xa-&!b ze2NXzb)j)8R^~wKjUlA@vYSM!4ZnnLGQ5S|#Zp9wBAMv8?>df`w_Z+`(Hn1TNgyhxy!^kJ(#FeD6P>KRzuFj%i`%DU+Vo&3aq&w30NsFUj_uKTuXi3> zBwzCj>$-e+3WPBX7qfof(C4kijWc4h0;FnF4LM6O)qJV>qw8~D!&^T1D;>HptBGan z<@~RiD99CcT!MEUsl|KYCip z{Yo^R(rHuNy#PcGh%!R%oT|)AJi$Ri+N9-t(vg%&$e_-ePi|ox17xEr7IvgfiTH$6 zH<`u&HUPc}2*aC}sH&@5UYOMMk{_r+m$d#RCpq}2i;4tOr>FF#Z(7Xk_c36MRsC6w zDzm?3tg101KLU;}QTKIn-J#uo{slZBbV5^a)5+I%z!J&P~xze_TY)Z$qbCGcl9oPeo+58){;tfq6_r%f(xdM90!0DQcMq2p)k? zcTSB-kG*TXR;L}V;xZnSLZE^1FA}~_%=O{S`p5R~^8Wyj{Qm&0{{ZxRe{+)V0Q*vZ z75J`4`eiwvdvB8<$ij5LmzrZDF)EEa zaQ5ln$V7EfRH$ANtj9kds$^px6}KPbV&~+lHl3~%>A*%Acqv=f7bzxNB>rnRYTQ}y z29DQKLMqELE2ev!zFIjc8#i=#cXceR_+tp3*sr$ zVc^6nm5J^58ML9iZg(Vqj~V8nM{KQ4zVmqDwHXk(#jMX6v^N{YkqC~3x60J1haTZqbpbpB(Q zS)#t#Ia9lOxqhY3ld*d<+w48=J35ib4E&c}dovhLD_h*QA^!j))f5%J)Yqze4e~tDI7i}dAa`pHFdq)y|rWfyiOfgyHCp*-?JZ9 z>fl_4jw{XT5x?r=%HRuFiHOD?|ooe3PX65SJBu5lXIuVGHP zj1I5+zcrt3DRs^0guTg5GS#XhEEi37`n544rAn|MxFSRLMoEk@HL+#C)rC#6paGhk z{{T>5FXknjH}8+^pU9nY`-4yW8#z|v{sg`yej}H={oTjiWkw*yaC#RMsrpvuW;R#3 zAHa&!ENT4eBJQ0@WO^d0+|)XUiWOtH5=efTDv=$kL|ut=QCXT*0Vk*`!74OjD|}Uv zt!Gp>dvk$OwT3@(qGM_R%cqhoLgvy_v8KWDL7dtt`#WI=_JTR>-FL@r1TCvp%c(|c zl&%b}H4KTz%~fm`!(FK8;Ss8CaFE;#bHuXERi(Wt`;|^%utANXQeR%@#Z+y(WXz`# z;ud$fjq0h$qyGRWndlvI_r|ia?e05eP;$gE_@vo##dkJ<8+q^&=$Ck9p6zT~j!5_n z3g^jlVln*IxHFhO482~4te0-0f0FMUa>Fm`nr}Ya@%7}*iioG<{k@D4F|ZiZYuI}X~*29 zCe%hjXBN@6@LM?2+W?5fbXE+HCY52Z)}<^pu#d;0QKN1*5WBm!+bvJKe?*B@pfDf~ zuCh9PohU<(PN!Nl&%5FX3rOO1cb(Gnd$^}d8gi&wT{Br%Y2qf_*zLAZFL4;W&-+%9 zPrG*Y4N5el`OAC~tYf(Ct$1(t6eozCNDLOV+tHo3lHtGo&h2+Iud-0Gkc8=odz0wP z)&Br1we3^i8U8If(AX+ak$SR#^>oQ`+wj~}_rbJW){G|z$)qusIjP+JMpI+kr%JEY zi48Sy5b6r&8?1*1rYQ3HxzuU`KtZ)}n_H;z3z->cjLE~nPktF$_aUWgR>WKia=IEt zZjc2u+cyT=Vr5f+LeAFK(#EM3Yg>kl{{Vb=t9mi|jK=+YQ|b*05z{jvDftBMmy)wv zCB^i%In|lfDu0xG7aP?-QsKMt8_Jco=uW8BJvch)uV(ezDps3FyWfoDae?%#Mw^!u zv7=LR_Un=&JTO_?xLfVroeobMU>@HG@m%-pUd@kvxS>mmN7?+f7!Yy6b%?`pYba9O zO*$j^bs|Xz#adPN%WrL1-}{fQj;$XQ7aVGpVY63|{PK5_XQ15ZUIN+IwSLsYD1w$I>67 zndD{zK&d0NHqNP>fme{ULt(-mm%PjDTth0&?i5N}U8JF1Q4@t|Hi$ zx|+Qu!B$^N&L^s7xFL^DiLCW!+CBL`IVGpDDOZMvDV~Wmxkper7A11KE(WCt4f?h~&{OeZ0$ zqFmnHiLITK>gyBr072?HElVtKTv(2}fq}vxz8RHs7ZFmWLg3^Mem^yd_A@nO_i;0C zCJh4_vFLpzc|KPk^7mZze_8%ZZI9d>KU{769LIAlPD9ME!f!JF0DEz*Xp!x@^WoWE zjZ89KHH_72{;EUBD`PBOd1)l(vWoVk%8)3qUQ=Td?}`;h{+vNXsuqGqU;xjWqc2V{ zjSxV^6;jS}k#%EGUFw#2qf1JZ1whio1qDl5K#>9-BOs7p7)(8C1>~t%-giWQ zECW1Q*QZ$3W;=IoY3$<@isk2bhS7%ZB~SCBBLH(S5%%c)jY!Pvcdp?fhR*&Tv1eaoh7(Xw&$eT9+KUrAfc$EdKx%n69U5 z3RLY&br_YXjZ1T*3Y(+k96HS#Um2%PoeWNpMhg*ET-$M`HkyoFgAhLyv}!zJk)Ly8 zAau%52UySXP;}|n(X!q^kIxwoim2n(yKk|(Im1-lvg)#~-@`We3k!R;^*{%gRitD2 z&D?A5kS+)X(yUx?ds-6YwCmNz5XK)Bt$Vm~cWvFt-R$aHMpq0c5IvG}!zJ}+Xhuhe zlUr(~C&o~BE9Ud}N}*o3qjgX}LyDTEt%Ga0k=Us}Lz=_Ud#Y@EiKECTSYz!%MK58u zagE}4XWb#S;{FSr?8;ofk5IU`rCdqp3b7~54AV~Ow^@a)c+nj8!nGr&j08nMGF>)j z^yF;2N?cC%aTv$+E=RI6+#Z;zw!p+Nh{bPC#Mcau z8ulT*)pjc}wtBrvbgM?FA`Vt>af#lnD%Rd<)Dm(=3zsKiwq5RpQN(CJ?2rlQ8F!tM zDe-H_M|q?Ua*H8WXL&SvE%m?b)OH9qZHBElarb7_NI|37>_1V;t5lEdl1S)^+-qD) z9B!o+Cr3rN%L&FVlsFRs(=&#RfX|QTnGC z{18GlC-t(1I5H&Lt`_^vVHjX>35R_u(v4y%68MxYUTk%xD$IOUdAHjQj)l8b1b7Eo zttEWYs0W8sgi?j2QgIj|l*I^B8i(cxFk991XIw@n7sXXnwT;KJAFfC%QM9_0!!{@~ z_7;@|GA6*Tdm{FUln23Bi^?^oX^x9fIb29}TSp%IzT9U|w0pKKt}%%ClFRgex3$kS ze;odGa?O4NpY4)=U3h>>q@}3gE~S3*?TLr{{=|nWl_l2>z6%nhk{GXn68ys=wI`|V zA#mUUBN-+v>U$F=X91U4Eqko)hZ@l*3|qx!%Ne?ytIkyVH&u?r)=E_CX*d@i3tL>9 zYn1-3r-EW9>Bb0DX)u$Y+LuMk8J(X~3C5)lav#v$bG`Fe#cl`$$)kRT7*IhCoLB#RyL zw8a1fo)Hsq{{V7J$>(eS2Kny(mHedI>+}9S`rH2icDbG0#DxAU@SDHr4;qYO)YqQ7 zCq-{w?A6Ur@V-g2ELGoClvmroDL`^vJ8)lOi92g$m@nGUfw=H83_!tS&Yg8D zQRmg9H+X8wM+4@!$N5&az9m9qh-d-plOvwt#dPsMHCJ4| zr2)q&03ISC$XvN5Hma-;hHX4Cr^3z8j{!9#HA92!A8YB!6vS|L z>bboXse5+&tjzxaDFjdb)V+$@W4hO~vb7t0V^S5^6E1-Hu6~TN`>gKiZLt07tYi;Q zf|_?-XI87T-ft(I!rE+XVVXDS!;u`;Cs2qj^hM%Q1LSW@HShTKC| z!r}9Ns|)RolY?JCZSaje1A6?*>8EBlomVy&0B;pb;#Lv1@yXfOf%m|wBl$t-RyOV{ z+)B<=s~FM(Q3pxt7CApER!4ZerAv#@_XEaI76Kj00NIaxvhfU{$f6AI+U*tzX!~!D$~5F zr!^5urPd@qYO5Ju&t1#6R2ds9KuaI{5MNWFOdll^DbBoOCUuG~Xi4LOu@^CuQvq%W znTO5RhX?!K+`#Qk)CO{|LM`x^KiI!d`)mF$^k3lq3;tj>$H8wtyXpS`dRLBp*%(voj1JN0l=vCKM_TK1Kxsf6-hltFrdp%m$PgS1qHByKri;!df^ho~I<@06z z9lq!9f0kUn&z$k^`~LvOVb3n<3U?Ey(j?-)2fO}*aVW}IuwHB3-Cm3!>vOv`JCZ~& z@J*Rw>lc$At0=s-rwFqmr*Q}taDvY40DUNx8%p;=s0X48nMlrUEJyaDudM|AksN>+ z4vSH(dz~q}f>EWGp$|?x+@QC2AZD|j&+Nu!sMvQ?b392LQP#$vV3Fwk|79q;^=DM=Xl+Sj$l7C*R$o0Lnw*n(v~wt}inkiZML{EcxDx zYfkP^2JYN}`(N6%#raXX@hMK0%L|$GgMNk2l66Ywcl5raxMHvxo>=}XelO-;?wNNf zjyWj!0Ks$R{MFZ9%nsRULVUY!kvNHu)UeZjlZ%R=d4;5N`j-$K!c^b$&9wO9vNwA> zIZ--Uiwry+bBZfi3bjt4;ff7=hDryK-B5?@6A(UW2G?=4RWTajgiD8414_OysoV-w zh<1=+@L3&8lT<&+C{TfMIE`5NEhK4MjlIRyIMBz?a#35aZK=rJ*-@5s=N9q`&h8w& z(fhr4Z~JJMq!ADgi?6FENKVb~h)xmWn^bbqL7U>d9P{xfs_axA>HI$xoknwJmA$nO zZUggTN1DU43(IN9TU<;Al%R3&OWA!HUJY?0u-N;jQve^$*E`vU{g>H1@G) zX&FczGB4$d=aJF)MWrw0@RV`Y6}@{gzi}AIZxtI4C6-$^6p1t^F9&sNnG;)k0!F1EIc5D1YWfuFfIfwifm1D{5>YjN>#yYXYj{=I`cIr~6 zNX|nVaB&|T5uCMSyNZ&p88DHVXmwW&Hj07vduc}~#A;VoYR-%yD({)-w+JsMqY^zN zuq!*Nk+?krj}?p}*jq9Wh5;Hs(FnpCNKm2d~DIPImih2#+TYZ=nU zIr*|W>CzR1DN37u(<0i)ZMN`?iI7#tZ7x@Ibcb~vk*Ex%hDaB?IEE)A3rvXzqoA!$ zF#*a7w)gbGkkj)~5|#WUS)0KGYED9^51N)MCAU=cW8j!dycp+#u@vi1PAc7q^H<+x z@TI{i#7WJ2*arAUQvSvI@7sD~eEpB}*ZGI#li~H&{{XGaC-z(Y&nXLvW{7!WJQwTV z;-6*7Lg)Bw4o5MXPPeaRx^+y{fQXYh=m%elp4M@DD#oM^B;s=iAeMAFF2=z(2-7e`@mb z%ldm~>0hk+s zV)RGBHtvjU+h3Z?3%h!Of;AGYP%;&1RJ@TDt*90yvPD&dG4MrXZ7H-qOHp<1w49_S zdLv9_)pIMr#|0Euo+GLv;r*5mMI+Y#Mh}0sv+`3!j|15_41cQTsAGB$|7%oIV-B`I<5C=I_eI-Avdko zYif_PvdBx#mzwHfq25%C`3Z?G#{jji_$6<ThjfY zR?t1MlY4v!0gJ40QYq4ObcEbVaSRW6}E<-(9UbWdCO`7K^E z-s)5&E-D!|g2NAhTq9L0k|@xqN2rLEMuXbw^Ph1pjDZ4Ee=O96bxrd42xu|GBCSk0 zZN}MldyNW!`eZ{71&?u;R^6@XLe|*ETBW1ZJlS7yD_N}@t8K&Fgj`GWc`1`EzqT+n z`3!)-`G>#JB=C_n}z*7a7rzlAH19iBr4$5*3Gb*s&j#O65E(I3FGjk=tOdj?ZFHb?Q;`C3@x^kM;dvx)e71$fUO#(BRvHGM_gfIN$1L6B z+iNQu+pV*1JS5v_9@v}8pPR2!T5q?zt8d;d^zBx9i^c>BasAMxj?(pCbDB-TsZ4rg z2=y*|_Ki0l+uce$K7l@|$|2;Fvxh#|!W*4xzgOu5NamSx>e=|E{aEbY){jw>>gtju ztlrHk;`%2`6)CoG&+RAqKU zC^5UO+@e7T(wDPZyuJ6+UUTC%IN|)jfBBk=_J6l8;=lHPzCX>s=0pDg<(xnK@BNLQ zWib+v0D40GZ)u-b_~$q|=!j^HI)x_IldpA1R05eW8FV?Rbz;uFMD9eO7-O3)O=ogx ziap&?16Y3mtm#wRg<2D75(BnR)oa}>!y81!csX;XT|5%&WoOw^hO-aNsw*Domj~}s z{SEU|3GJ;=)q@b)r5uMvH0j^7?|W)SrjZspiOlo?PkikndvZh>OnZ3v#Ne9CCsVg{ zfQ2`cYW?W+bk2Gweu@)kG9Hq14xa4v%dGk%39|{{dK}jEpGC9itMyR@!60P*E0o7? zRzFQ`xyxO!5yMRBoKJ+p?e|~c{U7Zc?fFk0-~H~N_oG7H*@%_4n!xy< zlJ#pzQj}sUgZ}_xZmZjvkLATqKg(IE?Ie9JSt%WO`!P25@;m8}4h)NVE_-)&jk9?g zc46igc{@D3m1VP3{{SR>f%&f5_JnJ7>VKZA*HJ7wqOLZ&QxyXYd=Rag%HBeNlA_k_ zy~3v5hE{-mppPQCtDn>$a#?&=3*DDS8bZv7~LZ&-%_GpHzqIT)84wOXM_+HoYDY3yagm*H)j$NgK)YB}#4Gxo?-zw%BQb z>C}H(?davn+Bt1%7hn39ZB{u&YGJmg{mN2z|oRpD*TWUEAWuD zf9Z=TNHqPoBjUWCO#Do1-A{J1olB5GT(x^RmYg2)tuElgGA_$EyOxu!Y<%ccsmP@` z<(VG^n)PWqGE}Z(^*dQ+#4KG|-?M+*3~O6l&>7B~gYr^-Y`nbRnX7i--jAraB!L=* ziR+I==*h3=bWPUQsI<4$mKpR}+q1s2s{a6)(h}|bWExrk_dp20S=nQL%{G49)DYp8 zq=yoV#bu4+?()44s}2D8s>^EQGz6##XlV5+C1fh@l&M^Q3OeKl03n6t-tShWjD6Ue zZaVZwT_;8!F}9s^rl3CsSg6@og+4_}B;t--jhdy!I8J6=V}Vi1HEp`mf9e_5kZ2S6 zmsg>)$>nZDJy>9}%N;`A<~J`Pr#Dqn-7Cl2j6n4RkAjvEwu`txkv^*xY3}kGqaly$ zNJbL!5}i;%$yHfy!eXEVg5GEwVGe`n*$e^Sl5j+rG+c6m6gC%EHA};uJQI%<2 z$4Y|_y<9-x_;o3JEbj9E0N({z%Z=E@-2HfOfTcD2PuqR({h#lT^LP1pqPfu^1_KB4U#-S|_xSJI)ffttz%QxsY}A%|wQ*HF*-AR&={Xf{zKnZu(v)Td zw8-P)o`s&UPeaMS*rtTZ)0d+%2RE>gREh^|6j% zx#+bewEZljLZqS#%L(NZ(Km~>xlZ@%`4NQ+Vl+#)l9L-z1g*kYz8c|$@yG$?v>q2noEXUwRK|e>y0sD=fQfkix%^^ zsN>CDqOv~pWw&Ylu7PKZwPN>N?X)V3GUKKSM{PSTw*4Q>w45aPh0gbMjQ;sA`A~?= zg^l|>`>{Jb$g`+3&3D(dGS}{*FXki<-oX`_v!(5^D9d2mW3Gc`k}AgjnEHbeo2K1{ zR?Y<27Kq&8o(?C80oIVsl+|HEj}! zw%D~FT%#O9+O-ZbR9y1GP>l^NzH5&mT@RSu%AJOw9pK-gbHmZY`C5-3re$2!iS-6y z@hc_0TNiSv#-8122p1YekC7{-y&So3Mya&Qg?>dswA)--ATLE?I(-XiQ-;2Te3zCx zup9R80W%noBr;H0aeJ$Zb*oPROX7nkvu^YyR^oL}@gWoK_&Q@F6~ecBozIg@+#N=g zh^9bcn${@mG-=D|Pq~v|753I#&frv+HK_@Dgk|X-3SzYCJ++-tcT#dMBNl%o#mko@ zX`gYn)a46ET8$NBR7#;4v*NypWCJcPrxr1llhZbirH-}{mX&z zT=nkuaaJE^*=k3-(IfJiFx2i6F zYn_S6>f7xJ3o2D2S>qQzOtq|d_iNQ}WlxgWn6x5h9k73j)imzuoV#<3tZ2d@Ie^JF zuJW;x-u3Z0*^=a*tDfDOZk!6`xc$8|`Kg9)C77z4%|rakBgBLo*BQB(*b9tR7O}e` z_gBXh8!qiSGvk!!A?lD1=Auc}h2xa14cwccbaSf;w@3Y15I=hbT=`pl^kpcL*y#?V zixY1W?D>_|>1VBCMVW4kEUc;2Gp<;_iYkupO`;@}jC?LcWVU0$K_KLV553=Gh76^>3Ek#Ty{nyDX4y_ZnB5sS zmWc)XPuo*7YxaM8{K@`fd4KSn8sGipzxuW3z+oe&Q?_vn^%B|H{zmQ8QK%sKx0>mR zX|}m3)&;Ex+x{XO>d$iq#M+ICn&xvdfl+N`VjS1 z^|%A_muFJXT(4=+grgY}#Kd%0-D=}Mc%68di8zmhd{#A`ap;pwBX@I4+YcZKF$O(z z3UW;8XW06`1FfEK75Z$F8T(|DcTSUD@lvOp098)5Ut3*i*ikCt`om$R`+MQBkh)1iA<{^1%J@)(( zv&hQr*5WqeUIX!2c}n@ zbsa-%iH_L{g9eUYB{oMt-D}3TIg1w{Q(%Mc;c)TYiyS= zx4M*0VpuI}+*$T!*0A2|8HXlE8+>Aw)#){f>;vHO-J?7#+NC?eNXU3wO6#FewfMrN$nWA)?&3o z>eJw-wOF0v)>Nwi?xl3ok25TW%T=x29QWvre@#O%iI+sfI$LU`oha8nqTVR?ad@+2 z=um*IA>h2(>jY&O$+#r%thOjcJ)n6`k%o7ATo# zWO{HY#frA(vClA!bzDxNAPF3LD7l#>zkVU*od0`rUATV;#PK;o!a&yB~io2;0oUROmtjDN_RBOy+C2n zbH_$5m(aeTN&P^?eqSWAud@Vh54J!Bym}X|v!741Y5Z7zM1STI^9%6XcYo0jkH6t-e#pcKz|K$8B_Ba^V?Y^af{g6G ztq>`I7ajYsv;=#e3j&>L(i1qlprJa&8BvALsE6vRYkIHt>d|oM^l7wLyqu+25T;t> ztNSYQ_B7?-vA)vGIL$6{vfRX&j~tgRW1|FVR24DJ*QZ^TSJ<4S8EWjATvmj%#CR#L zmNQvBx)S^Q%I__7jPCg$EyOb{x=k}M^YV9CZ8jCf8OvX# zirm)|4nM2t*6w8^yUaUgqkpNETa4UFjm$yyIm5{p+}rPNVH;B884NyZtZ9{RCU=Na zY#%kAOOA_%a@TC!5zS=t<*n0JYVXG}l=XEgb>&ZCUJ8Q&*qm>d{u&nD!ILl zg=y2OVVU@dc{_I;GK5}LTnT1kR&U~#Sxi@sjb1BGrb;H!%O8Q)1m5J4N*^2ce&2FM3 zL`UpDr|@1sE!%m~(j|Tc4i7>5|CRlID}^la3l-~d_`ufYBv z$p&(?>;C{IhMWKx6%mcwzN%M|B3M2+ptGILIP>am2B3pGZfcP2l|!;DA^EVal~ly38U)|FFnB39rGMk?#vV6G%#Sd7+%&86GhN+jf{wWo3G zK1eb9xz$%zYa2W9ZH;PHHOQoT1tXsQL~9vTZxp7QuPD7JdU~k$@$HVvwxiU1*OwoO z!Hb?>_dS-!^)A#6q;N=s}PBSM9%V&+xXt zY=4r!%x3=p_^%&dPj27GR}=sVnVDzQFTbw+F#iBHeTqPVQKA@}-D$jZ>ZwMhc*KHz zFPfIdHj@46QM;xq7Gn;wD&4J#w;jjYsVeYu5c+d*l9FFmCbb$@Hu8LZKw$X<#?#TQ zw6P&tLL(6&`jx+Dc73L94!Dyi@=SD3XGFfHoBm#}^JR~6dn;0>T0^UOyRH{*kI-$X zm3eE&9|6&4A7M1;P`V~X&%ydBi(=ghrFeiu+aCvthS^aDAT%Vf1 z=x@aBpC3#9?EVZafYw%DU3+Qy11zz+?yTCM$#LZF%N}RzC&guwoYWMmPX|>N+7G*j zRjb(5k=r6%60ufyUewKVc8iNsfLPnRr2MOW!l81t9N1d2{{S#T-nCV&NhNKXxT%us zQIXrv`BJ!V+24!RLu#0g?%r$7rRut}d*qIh(R(y<!L)Cx4t?sro9V0r+nwi>qCQ{3MoPHwZ$-KyMoo0(JErSQpc)4QB#dn^TB zORLYK>&e-tO1t#!L_h4{yc_o;K(M3_Bxe1rSJmLZfm_D^075Y1rSJwgehbBWv0A@t z>Qeq`G2<`oUfyoaY})z7eK8Opl#Yw#>v}rr*j*aWt zXK8*Y?^KKW41>ul7WHm>^ZCpxeZ;OpVHNZR}wLH86P#yqoq`%Qnw7J zPyr|y4L^eCuX4Gs5~Y1{&gV!m_Q_y+V!NAmbsboURl-rhWf@C7x&{%KMUA_wY}l=> zzKx(BKw^+XZuTqhk)U8+CEW(^ZwMM1A~Xo({Ys+F=JFM8;X*MnmsuRJLA71k*QKyi zCZL-PViZOTZoQw@FbrQlimI(0uG+6EjoDye&OB5`*>-K?YayYmRNah@r6x5xjhxi@&8&>R zSRk}D8li8&1*O$VN^Ejj*=E>I+a;H2GL&gGaC#%Bv33ll76l7zTvCY;9z9nbwPZ@a zipES7?%>`@mBdi1a}yE?7_OSbS=DP&s2DDemt_-LPVQB5wJ2AgSrhX{ZOl}R++wb- zTU07k!Agn~uOM^%D>{r`^>rD79eN~PURe9is3XYskY5T_vHt+Q75l&2vpic*wtsv4 zlm22l`Mx~=0C#WWtBc0-(m`U&>+L%9?*9Nf-ZGWhGr%z&R`u5XR&n%770IWpl1RuT z#JEeZTqW*GPzA^Pi(N9F+)|Cyg9pn883mp7$$0XWE3zsPFyXL}3f*oKZa$qAXI>2) z@l7qmoYIQ*8bPCh{J7*&Npcw_MWrJrp70H@Kv(v4m+iGzZ`=N_wvuSeam z>B!2Fj;8(J5V5y>rI@N>v}yWCGH#`A>z%q*{kiI=RKO8A%hfN+JQ8NiH>~u6LPs4$ z5tOnE6Jm5!7c|8;fA@%2H!OQDMa4^V0V$J@#~!Z5O&b>oAsZ@9j(#vlbNp3A$M zRWy$U%XV1Wfg1X*IYs^o~CtDCG;qgD}) zD;sxootD>zGX#U1;I$m11uBL&1T9YOFD!FV?AG;NaNN1DbG#yW$qspEb|o0mDdxc*l-Mp|jadPm84uYc)d zEH`OrQk8nLA>;|gd%1fxXI4|VH-?pzgZj=(=JC(NThp>VyQv9m@;S}%D{@RWx#c&N z4T+25t`jU@3#S>^{o~ZBg>Q4VBaK%F!2Sy(NTF;c5E^iT-o2JQW}Gi8z??>) z{{V_!?AG7TE z(NpPSBu1@6E|{P;YpBPPnX|uC8)cRBD%?l_$H7rb=7ych1-uY!cei@BxKnxUAMUtBYKg9^Mr0?gRoo78cik3DslO z9$sCeGdO`pCBHJ8>hC1PW3H;mOUZb*y;_)C%5vy&O;Zt0bCzq{tmu^rlfx3U^KDd2 z%jS$)lqQaMWmwenRx>YDD%8&vmqnfJPvMm{t78u;wIy36=#t*Xz20W~`bxqkYBm@3H}ZH-{f!e1GaukhJ7@@+hc@A>N1;YVd2!TwQsBVE#tzdx@y{D#l|D3 zQ(Ktl`h7D~HRNeXL}TDrNv~FBy?TZ^B1vf+$CAz4&>r)=4j_0HJ09OrPOV)Q+~L;9!RH~J^(-=kHPX&Q}A zV8^Kc0Ak^sPOyR4J%YuO~|LbVbOu_8hA zo`GiT^j~fCDz_C3KQk;%V(X-c!ej!{z>ku>Z$+>RgDB}T1dOBPx11i#btu=F532~_ zns=XS-4^?_%;5=s^dNr_3j9x#G0C+1YyIE*SCifG{2P6E_5KlxstK3FqT^qsi~Y7> zL;|IA+Aiwc$3|P=qM<%&)@OCaoWNOXcU=3CSgyi#2el>7 zcIRcRO-Vz=YhKQ5ReEz5CGzoF*Sky0SwzG)Mb;%;)TKFyw?gZsXVH0TL}BV)ecibG zE-cI^awQXh&2XLDJ>CajgRfSuT)o$vd>^HdTiN8>yH4c)0RFlwG}W8gpg)Dz0gB9Y ztgib4Z9wYC=+^dw{{S=}6!JY9t%Hz7>40(|FFw85j4v3W6TbNalJsvnEpEJ$(sQy6 zhLFB~ySTH<;a`yHc znqZMo{z(4vzS=iF*i@8woe4~7s7K96m3_#rN!z6v=15?v7``h%`H*16(OpM}#sdBD z07R00OIqu1XC7^&lPx!S_G@#SiNrlPesaCKa%--=d$TSoJWhmYcUs(#@u^Bi1b7b> z!^qxk+34G>Z~VH#cNA(yi)xU=;=I#&JDTq#>eqNS;R`*;S=I;N68zmUTD^LvbJfuI z9jf9qAv=;MPGR5%IiSIbLN@ZJR|-aX4+Wadb=x^x+xF^#v5N@+>z1`#mzr(WulY5k zwP=+o12^i$dMs=2c3TO;rp;z4hW4U0pB4)?VT>oSQ;c_sNX>yR0_SI_->J1qaBKz) zsIRwDx1+j5wxc8&%N=mMoa6Ci84G(lH#Y)PI!tm=87;=rH0*uATtqW`6_CoyY@DhW z$f;{y)mvL}{K$^3tX-xfIe#gOIJPV?U3BA>BA~8eQaJ`0Zhp_8i#KZu( z@7d3jUW!t=gJ!yE*}YFK0c`& ze?tB5!pnF+rT#+xcx^ZNZDj8>{{H~_oHm{1F(IgsI(U97>SLq$wd1~vnsq5g27P)L zS=Xg-y4%qyT}o1TfLWOIS6#7Eap6#0RG9_dL#Kk*NXN2IxW!27E$Wf{#N-s)TYlvB zrwP;nqHsBn6{{JtdaFX=h>JIn#cs`HbGmw+TbM#wIOu%VE^n%9rc|{bA3VCP`|G9} zu&HYZ2}HNWc`dKIjjigZ?#?we!>)L^R(9&&wpogiuNg?s0wbTrCB2#UeHfxN33P(GgOeKv?249xFYgUfT=mB1?RkPRFqdnmwbBsAN;!=+w?s4bc$-LC2N} zuFk)w^iOiSryF}ve`<{;{{X@l{%71a7GNX?Qh(; zwxBA~E?N34?Wat&IXwjI%{bt>>9c!GRfW|7CnPTV#%dPyqa2q@8Orw7wwYs*Q{Pf; zn}vFy8dzXT&f4YIU9g88HAUp2aRjXE$0GadE5BPyNYROG*4W#rY*VQlR+ciw{tKqD z&ux0OE=ou9bKrANX|A|zd~VuCG=^b=Du3`$nM~l?rrDW7Gog!8+L5p9iAOOm= zw&hl$8*{`A@e3ZTx_149Jz#cD8_%A zP6>M>8w;xc0M4VJoYy*^+C1LpxBZn8cp>b z7pJeNu5VsCHXAFC@*o3_oYxJzi)R3V=9-GN!TwuU{oEH=jc)c&SKt)cG>S{5PY|zL~j-lqQ0R1XlFSbH8TCmKXiRgQJ3Y8c*B1H5mP5!GQg-Xvq%ZU9eSMv0An)F=Vid8Lb z4}}^|JUtD_form8{Kom1N97+jfWj!6be=J(t&AE8lN z+A$L#WJ2DlvrXkNh~67DrduByyO50{*nm19$nz?|*v3rdu?R36T*%gm0H0St>xU`o z+4qAVq{M&-#n+o&@wN+v067g)oLsS9o=(-(EU~hzd8B7r>PDE>NzcJzjhljLj~*cU zPEC@qVlN^gxmVSImPj(ZL}{Zvf0X`TiVD1rk*8&MF>dy zOhy9~H0ZN7Rn7cmS8bW7Urt{Iso5B`^QS|QIC3YuMvVeYcj1y>N;1Se(y$;qBZV@l6o#RrKLlHx_1<6 z5FGd~S}}W#>~xk(S1ff)v8B{plrJL4Wm*@JWsQ>cRE@++>&JRCh>c2wK(fZpJ1r>J zm%iCAUjyax*Ni^>?*&frM2s|A(}|als!R8O6@S2=eg5b9H~Fo%yXG%X^(XP!#cl3O z#F7|w3+ZR@{jcVG=)8^1AxIJ&9-UKNE$JS6rOLG{h>T-{H>BjXZF1XBs%HAEsuIlE z#AJR6?&MO^L8N~Ymge>B#@tz|lqV-9GsaBd<`Zj*#`Ef_TJAz%hmnqB z_ESbRT&&?xm0Ex}mZ)?+U2omjzgJnT{*xDx&~-Q+WV!o#r|I?RxusrT%k9g! z_TmBf1^JIN{x08p{fqlIZ2V^j{f&QuoSdCR{FjGk>+}L-92P0+twN!YK1-g?QCcyH z9~FgJ?i5UGuqf0<%A-|CR$|sdR7gD#h{gcbVu({7w(!9P?SUdJGE(+fqqyk+whPOp zcjWHH&auoKd{?(dY);;#Lp(~>-JI&RSn7x#5?rTtc<)v9ydfGx&1uzBZMPLJSa{-) zWouf~i33hPDyrg9h_fUQP#Lb8vA1@Ix=u%QI`JU>g;BL}(+_SE82}j|k1V@tQpW}; zDfa4^#l{4ZxpU6LDa+^l34w+fFD|{>tal5HMac0vmFU`LS8Y2pyqX{7XXF=)OZeLL zYaBvNyvPv#rRkNWUf>3lPmHl#uXb16zqi$GBjoHBH&qSNXX<7$X)IB)@km7MlJR0y z7%kGKtD<}fWErkJUd}9nuRS`pN+k3I1--v0*0!r)VE!1cRV`*APOW=*ze2icR>fW8 zYKWz631vAC(!F2m(zflY)|I~1D8uB-#|qVXWm@NNt1$RX1M^BVoB&+IXF9MF7?YZ@ zE1+;bKT4&o&0sn&PltaMdAzImV-d=0#8InF-v$ACcZ9j_)%!_l7;@^ZlfMVK{zCGZmEL?CATH3~lIY&LCFAG5D@`vN|5bU|Ko8D==gP z2;J#7Q;MT+x25PlK?LmUfm{QVsEmgDPN(vDN}f!$sx@tf>hf0xCk$3=u9u@Xwb7I} zpHTHlon04h&ECe^GL$gS5750_J>Cub)|tB2jCX3WAF(pIUhhu5qbowVm85jyNM3#5 z##Xi>>>m?|S4yjkyMOY8i~tz;&@Y3WQl~zk{xj)PN3uKrW=}i0O{84bB zRvxljKC3%B@lNGV1ER~HDrPd#g0DQ)X>ne0IN-}Q?&9eZwyRXr1Y+yYzjt{`=Cs=q zxnQPiL)#d-y7v@oTvF34SEt_wy}25J@#?D`So)Qw0dz4@g=w~EVycRhJyg2oGlk{6 ziw8KZYtX!raqXEvt$Q-zzUyi<2fV$!92N3;vzLW_`tMKvvPq@sl_-Wj0#aYL_}Pvb z_rJ=Y%#9`aO|P%Ee;VUZ+#~I?G3oGL{dn_pm-G9>)pJU`bj0fPoWtb0*A2B@(z&M@ z0%S?(9o;(E;kK5pVOCP2Ob4s3DtcnLU2%G? z<0_PETxrHc43*p4=*HT`Uv{Y=e#rf&S=VUCwkrKl{{Zm#tC;8dZ7xD4n2;?akY0S^ z;y+6};C)?CL(F-_J*Vl)Vz47#B$aPTg!bd2m%VW*$^ANV9xGb=W2d%57ZM-|b?{lt zos-z6YSk5WOvE?k1zRQ?_RMrjo#-+n2lL5l>n0NMDb=~CSc4MfkAly;t|MCM8JJKX z$t~s%8b%&$zcJ?j0L8EMr|ey`@ti;QVves%F9m+vLK&=8^-i3a{8lz|i;8su!G*oy zd6J^VD{s!I%Gt;Oe3U~KKg|4m5IO$sWPK@CEw@7PE61hk^m2D%gq$ySj8$u2 z&bPCjUQqzZf*o<4+0(l6F#-%$V`<*(qw~5oFKQY72V;1&X zt{aCQwlsEWQ>ppHNp)tm8kPO+8CH`VK_LDqAlbOhtmS1ED*I@cHxT|^PMJ7_+VsHJ z_DiZl;87vWx~z9AWsOUE0*yIE%~=5wuAK3;Fu87& z=*(?`Z~4G*xW-t0+Rll#G{|vKgZLt|do3u9wlu(QgrZjO!8fXQyKU9Boj}J49~J5F z{{S_4{H*(BYP`p5oUN)|Mn@NT^j?j&XI`<5?KPD%$vwbanPNN&@?L9tJ$ZHOo0(3l zGcaX|vpaN)Yinsn@--nB(r_h1PR*BatMwabl}sfOgDl!)tJXDknsJcA5o6}DYBp{w zSjUY@1M#dln{OB*^=Ed(SO$TO9UvbNw)KY96LV*DHFv zYdSJpNBDmtvqhcd>s*4^Ib;=XuR*kwKYA+8<5AtMqwYRrE`oHR1)x#WTE^T<_`lk# zq)uig-1!Bao7QD(ZCpf>dMvTDMy2UB7+?xlEp@9~`nrP>=0Evfn{Fif2S0XWA{6OrT$B*F`oH2C?^SqL0*)xTGfr$bS07f2;#aG z2#W8cmg*NbF{MItIe=Ht;(XsDwqH8_^?3xYJIQcHF@z!ud}P0E;A=ldeed$e?`b#r zEwB5t_}4J7uPMxF{GevLZMHf;70a$CRrL$nGI)`yLnG02^vlV&9i3Me)$0nlfDc7( zEX;D>Nrlxb$r_-$9<7qky81Y6$I)Je%uGlPtEnqnU#pJV11SjUCm+zJtB+N9)vm)I z`@Iu7xZPpGtk}O^of6~Fy2N!u!>8$0aMgvyAO<<~@Lqc^a{Io@g>P)gvC`QS)oSuw zb!%M35qT&^UaWjNDYTBak0dXhq+H1K@Jo)~hv^+#+R*@vd{%YV8u7}cZb2lFSpJ2! z=73iN5HLBOsqW3e?JCzY($F4-XGPafuXf9|+?nyp5j_F?SLVF^KgF;059}?!`)3@A z22}*u3#mS&?y{f`czx zNwvc^!5UNI)WmP3`58GVnO}0r#LgfV$(ayF)~t4dF~m7txVtgQ-KKhBzYe(K>3g#~ zw{3z^CGx>ze$Lgd^Em$inL&v*}Z$Q zU>NW5>5ulQqVC&mCH`8e{_YEGIo9VX4d$gbz{~qos^7T1DaUJfzy(o+=X-@yC`IyI zs<0bX%+Bcm`1vUnxo?*u6>M>DP<2sdzDL~U)FePB3{Y;@RrKu;8k@;fSXVNsZ%#)N zip_0fO|V3)l^dDD)>JJ=~&**T2+quGa!9a z!=?+xd%bR>e*p^eZleTC*;2;tj4U2sm@3a4=)a+P3f4qN95Gz>inxuuzn0+a0?yrr z$;7RvEtHQUe3oF>YjWCl+`5$pAD9AHdD(F4Th*AYv|84r&!kAK)L}RoAL_e-;y+5x z-NyUJ05_EZ^I3x(zbKR<0{%Maj zo%_0KueZpJ$}ff?W!Cm?RBC??EME-QUN@6|?N@(^{%0f5l3jDX-L>q8hEN>s^--renG|wVt2!}&GE%$g7WC@Ul|n&p0I{^Twz`p|!B1$lxuqs2 zp-*VVUS86HI6Emd7;VP%Nykk7Ye=%CIT-?|x``?Z^q*4RtZ!G82SlzbkyJ!tx@lP3 zvj@xfGYzh`lZc65OM|=Rd3Jki=I7kDud9t_^tpSpHcI{61@^S087sSD{*{h=|Pf z>K1m!T=&*4BUS{wzu2vgH(IY6^u$J&2dOJgS4--vO1X^KNsei3tZk-JmCItz{sl{} zdowgWbo@_`{YmYqiqqvNPw^k<&*jAb0PULn_xRPt#bA25Un^(y zEiMY2@L75_xm??gMUE>xm!j`iFt-f2<J332e_y>S*G87hW#Te4X6ia*U(CH&-gyY2CVU zcQm38<|7rIyE|4No6xHpj7L?;(=4wB1{Uui&M;jz?H0x(o7X1fNM!hxj3Yh3XjK+M zvHY_9Lgp@ccE6yhJQ==go&3q_#Bl35`=W1|c3mRcsmhG0*No0FC4%L=>g%s&&BZOJ z9jja5L#%Axv4*-a{&puGhcB9HyT;XO8*i0Q-We@0(6<{{%YBtXa+X~Ris%~!SRJGd zAYd_78n-sLiLUN&#dFzM4W6w*zS4s@kqml;m2I5DGy3ajM0#Sy)kRuVVN-RZRFkLx z!3NX0QjDx267JZK1x1GAb5e~eA~@m!bq0RUw0(+N*`&)ztM&4Q(Wf8qj%&AzKNE+O z`Bz)c*zQ%eOAiP^WZlStY268%a(%_^^*^1kz zb6o!b5=TR}l&PfX+o)}{p|hD#j){?&&0@h;6{-!G2@+-oC1Y;GW8k-d?NW27F#s%; z&bjTVw&s*8Px2ao{*~xi+1jOfO6!bS8Z*!YV&HYbVU;d9wrJj^ILAqBW#Y54w+)7j z&CI17vQiA5m!~HTam7)d;kreniSYQK&TTf+mCgeWs#L7@{{S#HvC*Qsak=s|>l&Zt zB;G1))}58EF};cLXIXc>V{O}i{aii^rjI7w+W!C|EmR*oS3BL;Udr2clSj#vTCljU z2;FH7iNTds&1xp42WK(rq(+~?A7^J+h}5pL2Il?^VO_3--Q0PB{MnDSZCk?>mE_`6 zx*i8F`W39h^s7sa%!84ih+H!LCD5zf-~+kp79#1QiMwiy7z3Y@)y0`~{XU3Fq0(4t zbDm@7q`0j}h`6aEq>v*F)~u7eUdcL~FKB>$Sd5oDF?%KAs2#!2sFU)+SwE@2(fT7= z@+?G7GR@V_diq7zkLt?t4ceUORH9{!B=H_c{1S!l z;_kjC&+6LMN>hr<(Wc9q1g!EkmEe&y->TzLZ8@D-uFWSz#2k@T;z2lMx$MPVTAx8! zBIH$wrawX{2)iPvUsaHa@?C}oy=fZ5%;u=Ov;65`y@nM5ITekfRqc7l>4W^2GM?E` z3FaTgSVT7&%iae(P^`t3aUG^`@eaE1_G6Q~M!%e8zXrqtt!G~C(~rbPF_G|D+H`iT zM=+MU+4aM!<=wq2HN>d@0F;Sm^yIql*==C?eW^7hTL)b2z}a|p6Agj~CJT{Pe4hA9 zfv5Y+J9jD^UK&hR#kVq^sm1>Qd2-vkuAQ5A6(sT8b7hO!y&Cm=HzU&$rmgZe+d}&w zKiw;CZ4Yvoj{g9o_l`;qgSOGpvjW&@RT_^ek(FHBex=K5tY*n>4*vi{4yr-5Z#MC- zd;mDp%}{ahWx43ggd2wEL9F6WKrmG!THfo&-nWNY5rT@^H|sguY&O*n4g<2eL9tp@ zxudKc0A7z5uI@ff{0ye@4L&_6^}%{Kom_Zo9i)x4w_I2U{8xs(wqez-t*qrU<`j%x z&3f|Yowd=7GJFE5r)Jg1_mNX?5of_;Yt?Uc#l!@xCn1l3Slh78aC!~2m(B878rO3; zwQH;TGt|u>yV|k5aQj-+wklAZ+(ZBZ&Jnikk*6DJ%MDDiMq7nel&aR(=>hbE)ktNS z3WBqvMt6-i#xfUD^C`V+kL_I6 zn_b2Huu<0DjjwCCq;~O+Et1xoNb>Ei%L&K^s<o4{;)QV?&0P zc`B^cgsH~PTC*b(qE@57P9I!DbzQKidyo_zlMTtyVO%_k8F(n`6s{^nP;RRhx@)!= zd)biXV#cn~WA#r`C9+2~+$%hM5;{%c#&H44xx(iwYpa+_SaeTv<%z$lMM*My(T_DX zNl$XA{Ui*r$wjM+dJu$zBb~K-5gjPww3%W+04~gsji+bnPo5ymg^>Y2rpP@a@f2a1ep>C0zT=v@& z?S7lv(}`D;*cJo#N^6m-p-Rt=%-TTlNgD7RkIyinkiJQH87r7l2cu?);F%J zzBjp3j`I)>6Nv=)ki35($DTX&kJ|po@^2TJi`!`3C|yTOFU)Np-DOv$RY>${winit zcMChmXuXV2wc@!|TGh;XE~OBdW>zLw7Q`~=yh^;cm!OQi)-WO`BT#@)UeTAM92NG~ zlf+%n9{*fIF6Tj-vQ4>&OwzR(}E&aknc<1Thl1Dr?5tW5^J$Ri_n z5({W9W8$-T{YuE}CNHlbMoP<;ec5BVMZdXTG6kAg1`GPi zjW3W)4Z?Je067abidVL!0SkoH>CZ^-b{Z;K#|=cpIrCD?k~IzP zg?R5pqpBfUFy+lUw;lsf%W1AXut*0Up-VchjE2Q;In$9ijYXof=ShkG#AkL&(v=eb00oNWTL#Ao`|-h) zao4*waZk{+?#%Jcanm7#bV0Mxtt}BgDl*7dsjF&`I0nT*soUunQpW;Tnl0w7I(O8- zF5@&C2FGyrLktv3v)(5SXhNkw;5Xod9d|&A`iD~Ns;?>4kFbzx+x<`Te>L4y#L1)b zQnx!TD-Z!#y`3V)z076g%NWYB*S?^`sap1nYEX_JMTtTu9Mo#35*#Z4%Rn^09Ji{5t{5vGZSPe&wSzK@ z#y0w>#au2}i>mDs%dU~nYT$o(y~UM>5UXuYN8PLpVjmYcI{h!i@cXvSe=YuDe3$8X z*I9brj}=O!ZBkvM!;>3!XLzl6z-k#lOm>0;wD3oTpyPCSds6`l?Iy-sUAWyE>+ z*9*8+1Ok6FdZq63-BYDd>jov?Ftu++cAYw^MzzEy?%;UzTEiDvVzh2?^_M50SFfX; z)99=!+lU4lkC*7aMxN zQzu0;Sg{U42dZ0^{ivJCwk5nm$JoE81TIF8Nyot~E}eR<>((MzoDOHfUYYw{bk#ow>{k_8l7p!p<;9JQ{9ibtzwNk=~26kp(d1Z1zU@+ zSF^|8Z8n?h-d6p`_lj3maH$iEW8w<@-;=}b+Yj#_2l86^JQHc%mA9&Oj;qCE?(12L zGBkpvk5>lRtc*Xx^HMz~gH_YFTNu@%9^g9+6cVru}vX<)_C5o7l0H*^5#6EK1J3*!|YH zsec+?Cne8*?O5Gx=$TP0m&WML>s-L5&GDlU@icfNF zIx^F$D{a>zMcLhYHgV5KGUMBgQO*TDGSL~~h8eDVOg&lX^rsfCYFNPZ5g7cIeW|Qs zxdm%_S92~T{X*xnc*`Z*z2-uNc$lWX_XXBx98G<#jn zpYsVszJ3a{xZS5Y*MVjM2EnmTpt91+RI6RmQq_(_Boefkoi9#)3aZ}bVAj#_bQ7)& zD0rVF8kYTC??xSSUDll)KG-jkmA!i`w;PZ!7_8;eG1HNjOFF}4I#@OAWNUyIpy zK-2^gkC96w&$N|yOHZ}tMrvmIJo|T7fo&!y4yttTT(8=>KG-0F0U>}L7PI|MJymJd zl)WUlAGEa`?zrldX+g`&9+LjWcG`A{cB+)BRni7;k?>1~Hj!ADlgOMpEpfS}?$UqD zgZT7V_I<4TYebaDCPsL!Im`8OD9*7E&Ajtlu9IG>HEYTsIdFQc`(jV`im>612V)D; zI)cv5x^`YfjUi#NPD5LQin_*D%f0&Y(@x+`&zM-TznL&t|@;O zCGt~l!mY%Ah8HGk<7l@S%0QpJP^;)6@0DNlDKmi2UA z%zhV}X8UL9+BFXP~cKiX_pHX{XA?zFf1d0rDq8D>kV z2KPdwrB6x30g|IgWk9GdNh(HeI#xM1^>KaMM(yDv_9M{(iwp)Nld_{2Yo z$GKw*%69Wa%=qF0<+XIzT(UjAKINf?FV%CmsdZ&Vv|+tQEXACKo7vCN&^EXMwho{L zi`mch8h>(l?F#lj;ER}-C3l^jwd~mVZtGY58%~5y5dbXZoVFf4xYaf$J_|cJUd@Y( zUQ{n0k}RZh*SkMboMTP8s_j{RIdWr324dF#0QiBw1rdFCLA$%@?Th_;+O z(*$dq#_cFLb{$HC8A|3=$(DLcE?k}7jt<>bF%?e@=X?H}h)C&=HIlJafd ztz%XOEJKeKXSwCN)mm6j#GlX;7d=?pvhIXx88N~>SgX?YdG@hZkF+Y}$D`s3Yj5;9 z?VKxUrfL%*iqyR@=bMg-!l(e~#q;tCVan_ERuQIP7`t@pt+k78QwK6eqpu<44K>4t3jAJogk{>3n!$3LCml|tY*iOowaogc28c#1XZHlJGwW;!OfKYON; zLgwH*cw_?1zgJx}Q!{le=z>wNibMbi?sn_U!GiW)j}m ze>G#{@>pqo%c=oq7-ZuDlw-KXIQ?7;KaxSVM*$|o0)tE5glAH$jx8^mlw^3+2eJTT zf}+oOsVLpm48R-^ZGE|?6AZ_irC)N&v5hK^gWwl7YM%&|U3BClgRN+|ZG86rG2^qR zAIwMPU9`Oge$P~@IE{Lej+sT+D=sQ;*$bfxqM`k)Nm|bAPGZX|eY2a5sb}P|4 zI^S>Zs!MGHzzkM>%PtR}7zX!^w$qeW{I8GpKrBH4XOFv2Oy5IZOm`5~e>F zS=+OZqk6H2x3|DdF^~+h^X;!z3zbu;^i^Xa>1+b&?~&}+OErqz3e-nvCV0h*1j7}y zaXWf*vYBj&Wj2+{Ha;stoNAIsRT-RHMtbf;+ANOV)y~CIUfCWfds!+K{s>y3HUib6djM zAgdUPL?n(oRh8YrjXW0IcI?D%b);#63e95d*7qthm16k$Bh|wtExOJykzmeTu3Nnm zSvxaSDa2C+u~=HDz{SpfD!FB8Ua12#XWdp6>&q8gk&ks-Oggwd$U%WFt`iG=!sJ2( zt!tx?CFtk<%I-Cu)3sK(t58QoNe*#eL&xB|Ts{ZMe1^OncWYi0?>}|-PD#mYR+U5a z)Z|4Nz768PW8?Vqi(GoY&mTSV+j*S#Yx!qy^t8%ii@63yT~};ptKw~y#D6G=W<3Jd zvN=`FIa|bn`j1~Fo1D09EmmnjdI4!>I;-xr%fEF{0gw*I!8N;1j4KKd4T&W5=&sez z-mOBL2aJE-R(-B}U#e_BFpgOern$ABu~%6>mvC|k?aQ7$L}<%SPvFZ_Zl&1uMYBJZ zzHgFsOgX+HPlw{T`>tQKTin)^ro`lvY<6|iTtym}GLNKskD5-dy6K*(Rcp>s4=pXx zOSFyatcp{uPeVxK;yS4_db&++dMV1{PlUBc!PWcPnkZDSn-wnA)@Y?WsXjeArX435 zgzsWy`A@}a%(~7cD&@Z}Ags#is_S9om-aU?sZLHG)lbAOe46XD#d~}|D{c+_+PfbE z=9W8+oOH;0vHbAr3i#enjdic-KN<46bLrE&ZlzQjW6gLjudyxeRbW|1r&=kDRCbkd zN}RPUTI)Amh7rYOtmSOy>IoSotuDRdBjmB~!uwP&t3cCc#U|{^u@vG}_lmZ1X?)f9 z42`@sNFN28vMwuB%03I1xT~GEq@q}OE$S~NQb!)WR^%3&tfnl>V(#lxNm%5zPK`rv z+oMx*)hxkXF4j3?EwYHywwLI+@2+Q8U3o0*#Mnvq10k3zmY;@nblT=&xmwn3vs?Oz zAgwVrxx-l3Ic|iUKq_VF(n{Fq)SPVnC7dd48gBGSzb}iIQgwOu-p0wb{{Z@!lY!E= zb(n9}g|Lpj_MD}Q61>~TO5Uhds5bH$J^>fR5P{ zk!7eXJB7K*RiH*9I2ie*8U6uO&eDr9eDFwCPnpPS5O+NSBy9b>wgY6HCTEYSU1w2a zb8SwQO5!~obw;mBtmUkt#>XKurxZ9A8*fAQw4C%u2=f((xnnffw1GLkEc+M#neLM~TbbjuffHC|`TcFP+YwQE!nj6ucOdN}wkubt(2n(3{!yixZ< z-#eY_bE{)#REua5Dlz=tPQO?2{w&gF_kRif-}{F79G|77{4>A$9AcS2v<8!&E9hGM zKFZXf<-~m{W*qjbm_P`E*d?8C<7(>Ol#E@5Kb1?4*m?KaQZ%jvL&>qn;I-|UV(k^Q z0|FV_@mlKVo~pDVFad9oQsVbxYZC-Uqr{MUguB*z&Z^O*Y69ax&pg%IWFR%P01qV(k_cO$`byH{SZMstvn11^f4+S-tZfcC>q&UT5#gi%$sWR?c;F$Gxk}kG> zN4V|x@ULw$B@!GAi0~=2n@m@K8<%b^z1rMYYVG%QHto*RFqsgzh-pBaU3`Bd#=8B_ z=sy+nTJvj*(`MZpky0=CFAmzjL#FvvqFk<4J584qN!N+ZV#iHvRjE*E#bw({qfS87 zFV$yg>6OI8#dBF!S9K4LN}`21hfGm-X%FHCOd}_0Ot@0QDo&aAGFZZ{Ex;J$x@sz# zzF~BbQopGmqnr2@xaZ5+t!*`7^`yQ;t6bwZeRuvx;8!ol-4~ zdH}WP&F;cl$Q$G4aZ?XR8)1kaOh=M8yHDN6{Lp+y>qznM-LTX;Hn{m2*+E#)mi*s=L4IjzlkRo!X{mX@p{aKp(#v+WRov|;&=PO6I@MMj`7_abAc z;OI9lDMQ=Y;z-i*!TR8=8mBY1y`AWcVn`=7DBgQ%Zy0U##N(x#1LCYomo24nE#f2s zVhC~MiyO}$0+z+@0NP{oTGblyy7z0>my5dEFqAFCuS{Y2%&=I!+I7y~LU6T(Iku?) z-}SC|>gK=a76PRRMnUw9)}vae@D3+lI;3S5%m8sx!ml|_&kE)iu=G`ZTFy+fdn2K6 zD@s&&>?u@fN+S|63oxv2IG}0T)cx6hRUW-RBwO&iiG2~I*pZlBw0ZV!{7O=*Wl$Uh zTzRWw6??N#s&2?Qhc39fvsc#!l`z52S5;a5A#oYonE{9xj*6jfuL|O0H_M_8qi?yL z#~FaB5f*%uV|E^ey+3|RvZcNVi*N!9zA0b)oQLfJiipSZrk#08U0IcPI)V&(Zt-zW&KUu#41AT=+185xF&4Vq*6 zn75*=AuUpm<|Dyt6AWAGs|qyZ7dR7}=CgLcMlRN$w)p2BfmoSJlp-csf#~_AjO|q+ zN>h)C1;|$1F?PZGhr_FUycW8B4{MFgQw81pO7mvFqs*z)lv~j6*Wj%kZ5}dGRZxt+)yHY4hrAg>!rU1y7E6u!gt-I3#?OgK*p`gJfd;F;r=Ftq1clJlNn+ZJR}mewsBK0K}9SZd-Nl?zCvc;~56? zLA`C^tSG~)e`3@aPEl+lS~!*m7FnZc;WSCIff%x>RrmA$c0MJQgl(HJGUIh))v!t2 zYc`Z;?$iv#JB860?XnV&Brk+lJKbG>g;IL7@O%a<4B?&L?S#aE#aR+7aQal?MtLP# zo$VTRE{$Bk!|+m#uZUdJ`dG)I%z3Oty_P-Bt4^NYNnzj=did|)iw@YxHQbl=4`ah=H7NtY}&vYlE+5OrLzw69nxUaloCc0MbX?^IE(aUT_et*TrGIIUsM ztu9QMm3_6!)-vmGrvhF~-fOO$b`^k^^@WgLA? zi?3D2UlQUjsM8VvpUL3aDK(P3`&@nN+IGZ8^10|0*Kg{1?&{ODo|u<0!_)#yXX@oS z6(L4)A+h~xR<NM%th{v=h;m`Z0Hln2Mkbheir?aJW{dN?J>^`6)5z=XOeTszd`E zd`i@rW^E}8YSNZD=DKNf7vCbR=&%ru57)(F^u1V{defb;00_y*&Pq!sT9bdORAONw zLGmZXU8J#{u2ubtU%S!N_Bs2jhfK6G^qkwpdF%RwQk38&k!Dw}9VDxHRgQzFA3p?_ ztE|-nb4&+widkFsRWnjXM1hA_>ZQgS!i=kY-}ETyHBhf90$8{?zG_bWUA2l}Fa(sh zEulF`gW#BpB9x~v1W3=WYV^ybl9g(pGX_2?Si0(?P_Sti2O_Sw=;=Ph3u$4AOthV@ z;aZKroFri=;v@?Yektg_+d9tfncLp_N(P;-bZuKi>gN9$Dl^VB2Vn07)v_T zMde^)o2^~Gh_I(=t9KIxvB_f5)p&(DMx8pWO96+$V(g6G;WJX4rbd@nTa>p6ahhP$ zo;hZ%ZcL|ILY*3boJq+mU!==$%h#zG92~AuFB%=wjY`&Xr5t}+-n@Bka$RN^{?%LD z+BujaK5JU^a@ys(T3N#4=*n0Ea7$AyvtYH;5IRRCh`#E&+$q+bBEd@++{|#Aa}=a{ z0IFqEcDNF_9uBGQthI&hVYB;CnTtE2YTnK>HO`{`ekg-~6wNpRm-`ScjI<;M2r2K- zcoXD~oOhy*$q*^JH~>FwX2PtT=##Z4a>x_ z2L%K~n&2Jz`=Qx3niVKoR28nv zh{h+!sb6=(`0KZR&*uLCx&Hur@p$>uPP_dh$$aCVaxMP=bDhQAX-(uvi=8nZ0e+8* zk6k7;e-rb*Lzl_qyYk%qC((xXYHIJBJi?d}V;`e=z>p1mLsVPX~hMvAFe%y9-lL*wQ7>CmG=sZ^{vs|re zOv&HUPGMZvqD%?YrYUI>$HiH0NiK4vY7q@5@lxKcZ4Mt!_+=LDfc>SuhC9YGLM%eQ%^dY1?B33{}Kq7DcBt1_+|Hwf;2^R!*ZMN>K@cjN>3)8pJ z+qiFZb}iP{CKUu~uy_*1*UaYeF0a@4KQ*r}Pgc`yTAbkS>*wz*ecnEAa^O^vjthp) z^JXsoyrUvNO6#oX-|AV>YAX^kIH|O1Z&&scB}To>mf2Qjc;pm4)sUQ`WaV5s+PSb0 z6@DRCJ9@E|Ey>;_dOA7Xt36WcBF8{18zpka*P~Lto~xqXEb23RB~p~Wm=V{a&2`tS zCC5WV_^w-bdVN=$g#9hzvs+s2aGa{J%c3o2?+E%WBl7`@rE9h@d-*p*{i+PM^Gy9O z$t#{uhXO7m(;w|z2yv9?Vd{z{E=j~Cu`j6Gk9gQ8ZrjBH|jmWDdwRO-%< zI2Ru!2Jg4&r?kP#v~%&nR#*d8wQaxve`y+Tn_U{CXds3Sim2D^<^}yw{wgA!onidQ zc@-~Zbv`Lxk=vjIv1QM0%(8ox$c>ARxvg=rz386}sjE`ej@sNK$!boSAYcktW=FS@ zoa$;gv0Rznb!Yi5+$4R;WPDd`FGnq+8%-K}X0x!`_A1fUrAROD zW(5NMRT)knRDCp}1|(pCZnlOuV01Wy8BMa-i(Of`{{W+)r*DN~f{yPpSTYB)kka!& zx54~B3=yetw%IB?7@P)3*Sae1RXr%ry=8Au>&pZ^%zrJug)1}a0|nPsT=KPf*1G@~ z1hFf=jZTc+w%twwBzPw2SCr}z7Hk(0Z*d@S3ZomilNwA^s>D_y*+EQ<6`JK{_*z|5 z0G}n&aWlUwR_5I2W!mg2R=TYkaDXI|M@8!5@vXfdC(rplJ{@k`+((i7_4jFgds?-Q z&P-^ziMSnq-SJ7IhUwpT)O)6 zr)Tqf%Wb=D*56S^(wt&^TLp`Hxb4Ymr7L=;Orpx?>c-o}?X|64VonOy+U4fol4A>s zcJUQl$51(risLiwal72QB9lAhU)t{ZQY6r%4S@)!kuxalf;zKK(yebNL; z4B(Y6D>r_LM$&RFacmEY)W1Z$k}C^Y9Uw$Svpy>8d%1q1w5=f6U`WDC8eWcbkvcZi zw1~;cJvuJiN!^{dz2dZKM3D@@$gUHoS39?=LY9{jkKns)GZWpFI6_a3K;oyfuU4&B zG>I-Sko`(o^m6xMC$8U@_J6lD_QdG(jX>?BxL#Xd*(x)(hzF@x4dG0}UN{x2w??w2Di@HJ z4b@G$^=|5K9qd#ujaF&@C z0&c*so#c3V>mQ`}-<-wv@_$>YTJKi%Xo=F8oJep%b@I32>iv%wG}>indtAyyz6E95 zD`-r*&1!7QZMeZ@(=49aNT^g z`zI+1pj#&qh#zaKx@#_j*fpl=W%F$jL_Hdjxdc11tyP z5m)<-Xu>lj`c6euV)lv?mD!LF5?w`QcbLRmF~G7{EOkSQv}?yv#z)f2oONIF>hz)L zKbVXcE!{Lri(6C{QkfV9o7trIJDPHk0dtDJ*y%{q!@&g|_i?A~nrvUM#Rd|^>D@fB z)_(;c*{7A0h(-M41#b%AGWvMEW8V}86W%oGG=$xEeKa!&3 zx7RY28i1TeNe0V05S1Wg9E_w@7q%AB7LxcVj3ru<7v-`Ug;e)R14JIEDQz;4mS_%H zckNLC{?N~=MUyKYFE4gk{E{_vWVgC>>Ckdq_@V7)ByVWC3paT#;yW$kH(VWDgN*?nN=c({l z)9fzS3X!1l0AR;5mPRh>@Ux6Td1?~O_$luG$1BN`Hj#||BTzjGzVCEr^)ou6Evbo- zFU^=B;I%aAnAg7gDt$b^cx150z2+*i0H69Y^LjtHYZmjVu0^^m_I8s9N>S635#ptl zsT68e)IjJnO?7md;R%@JOC@eaB4YR-fKv^r)jB~1kAPM;uT&*brWmv46YOegrBb0J z^gVpmWs$vNjD)(DC2QX65y;}IgBdf76~g3XrP^{>-O53-Sv;ryR31^Vji zTx*+c8>OUYN~qRzgW?ate13ilrRyKI@V-Y*ZF4InPUWgM>0V8v>B`DjT#Z4NE2OO5 znRsBb(y5Wu&a~ILdt!YHQ7v5RQO>RRBdXAZtWCPGLQ#chXJU=A`)$l+5HeY=x-(QP z;AshdmCtVPTE}*w{$w^yip6f8-$&F3nnX`|1KQH97W{Gj!{l&LaJk>^UXQ^ml^kkP z_hT&d^jxE?UGhq1y>NUMIU}x}m)jj_Qn8#QUB(L=PKvXwJyrhzv0+;d*Bv&X`F<)5 ze|)Na`Fv1XP?Ob)kY#G#N>+v>xE(wd5aO27`t4&Nd=!IX-R>$91K`~i6m~mcFJUs^ zxN?whH}liA=ld$M#qjz_5%N==G{dFkhm1CrE z!uAkc_Uy|wa>m4u1vuwcc{?unT}>uTS8D00?=hWe%gZH-?#%Z3)?VXztYMAsR&ST; zrwuRBb<*@>Y1M_>ZX{`t{{R%MR#KID3NayPVY=`_DnLJ8ix6yk%@~ckrZ}-+v@JV% zav>^!j7N%)ZHDT8)<-;*7n^0tHnSOdpuyZ!0{Tu^x(QyB><7sZwv+0|1Tzrk6ya8c zNG?Wb>BVJYb_&>J8nHKKsZ|C6O{;mzus)YuZ*gsNS^yHKxpLRHd+5%oj802>#xBi&d*7{X zDN3bkf-#6Bl3AC1e0#TNpP$Ruj%L@Me&9au_RYSXTOG1uwazir4iWf}zVCtYSMzPz z{FnD%@BKLQ$HVxxc|(}<4flK8>RevjnzJ~uCrEyPI{g%$TAd2;wkhsjdEoeaowBI>sgv4IznH zl1B~sCwRKEusSsXh{;gwIV;l%oFy7kjdo|APE_v_?V0v2DaERRAl^fwzRy=Hb2=*1{e&FRV10krQatiG1B==rkei%Q8xaiXxh@08cs-A(`znVuO*3l zAd&;SV0tc>9n;*E2uzlkz-Q*J+e|aP`W)?{DPS5tJ_>4+dli0=H&4s`xv7Z9>O7q( znG$t4UM=?O{{H|b6sygEY}Au2=@d;!oLl6sE2b39T8)DSS;TMK5R|-2zE~x#NT)c7 zUFnFgL;HJ?`Jbs1C)#4BaXq=h(*AgP;@RCIcSj1NVx zxvZWzhh=1lS~TMS03^caBy}2?ehH3?=u&}Zz$_Ah0D3aJbTWaY1hDy^6KGB5b@-`tn@+9qa_y$x?QSci@b2wfTt*ab&$m+n ztD#>n$?$BMkJkKm&dsdXlcjWBn&eahP%jgfE9HAOey>hVZ0OoH`HyQnQ`uc&um@7U z)ynqK#Wbl^4McO>Dt9#_?G-Z2mUUom3HJ+Pj*_d{&cC@GJu?by>o&u2+pb|d0NH_x z<-B^P%L}`R`;9F6EM>d0`)RYB;v_Hwszcotyq2Jd{b*g3IPDpMDRh!$eaak?u!M|H zT$HyCYyK-vMvlCkEJs+my||CLq>OqlTU@$mtxjSTA3PQ>(Y1s(6H@p^m^znS6}Q@k zvWOlFowzo*YuoK8`|>MV%)%@!B_mWvq3htcwzwHP>qt?x)fpK`{tE)@fZfil=K~NU z9HruX5)94kM5@oGlm{P?o$ix>iAXmq*+c1sUB;imR#yBL+KAlc;`k(Kx?bHF&|!y? zqX%+Ki=0Y~tfy%iUczK#P;cB##hgHPOCe)CfAVLlNR}>mbx0bs7$u8p;_8c5s4-)b zmD^Uq!T^Ci8FI_My3EE`lv~QZks~pYTGqMq>pjh8(gqMPC8WDY3)z<2;(dYF;4;*~eRn`9h{!|2Ke#?EjUb3s5)kk}%BS_+`uDm+pFf=X(vd8ARyZ2DNmZ?5! z=~`II+!>Z$jaS^GbGMAyZ!aeLX04+_B5O9Y>|Row1X)X65}njU7?q4f%M-e8Q4lOw zU3gq~!RB$JtQB6_cO z`#%Bh#QRdEWeC863Duq*7I&HK#@x29X;?r2(Pzn)b1&ZGw=G^;*~&x$90Q5Tbe9tk zHvE`fi#SH0lwcbroZinr>RURiQ?(|ca>w>c+|s$-@e_?Hh=$CoY-a4O^uRf0mx^mL z=kFtB9SmivM-^=KKUb=uwSWK*%sg^gjQi?h(x97`#~>F?WX2i&NSPG%zLNQAO=cMD zg<5bwnm{)}nI9D+oxeqEY7lpnowDe&wR7KUn-f?KK+D6T)ax1aN~|I#0T{nQg2ug5 zThOXT3@~C!-n!WdYILdMadFehOL{Z5!`qZ9Y8dod%(JPS%qtBo>cRXvsbinqJ%IUj zZ<3zhwD&xLGc86S{FjPt>i+;lPpXup1lWbEw?|1jDagUgAA*=}Db7W}Vto23FVU$H zsUsX;4i=;=0{j8d3}7!%N}+toeOC~0W^SMe)% zt9eF71iP~$#AfFb@6nc`#8{DuW>%@Q$1j?gzM?qmeya3q&|q^vHJd;)&)`$IQ6bM# zrZ7;#CAuD^Npg21A(w_q;cy&*h)_h%P?n%b_$$?9%X8oz+uU~Akfm@f(P8*BYS8(Dyw`<(3VOHL-lja`~SIy+(y1#Sce1@Fb=UUj|Qw$fD$D=Fj zX^k1;x!CEgN~LJ5I%`(fHDX{#;ISh-lcNz)^`DBP@<6ff>0^#RXS$7zRMBJ17;mItOu8e{E;{LViWH=R?}z3rfzXpWk3Tq<7e zPmtZnUrIe4Z&s~GZKeqlE3YWK-7BA`5eE{vQGdYAC>o@kb8j?)rPlQytf?JeG#8v! z;7ax1szJG3R3A*)o{FSY;wC>-M^bP?whh+cu!%h}R+V5&mQetpOu_gd-MFm(0LjDy zimO`;>Hh%Bx_GjA7@ncY2gOCMq-OFur(a>vG{{SN& zF@afFx7qG##^*k{Dy@`Gsi&Vo@MINjrBmr=6N)0lMwqNzu|icH#JpN1(PGZZ>YOG- zjwtD_nOX8Hx@L<5im|^yu9#w-N+G zluMFV-|>Dv?*482oA<8|hpm~;-jUqs9iO^UlQ$o6(d8`?Wl|cbXRRzyRInMRM6y-3e4I# z?aLQ-cAngcIKPiXlGmS;liawasAj+emy*`H=DBRRh{TwWN&RWAxN)nA)0vD|j5G08 zStE?9VkUDZAs(x8x12=v%1l|pPMsq-!hY9XP2#P~KIK77>C`=7bUjx&_Ob5tN|Z$E z4KEo-p<2cxJ6uK7wCHmWS;a#MJWW=bD z-Wd^^*0bu)DMl?e#$HO@dKUCnrdnUb8W>;?RnF_4)z1BiP^L^}qAeWrTCyhFeNGgs zoa5WIs8*9bqmB{^I6sr84MkqbV=P}B1a-p{f%IxNzC9fO!ewR_T(dn zT-LqW=w!#2;HFU>5%cqYiEUhy4PV-pbjq@vXO{0fUEFHg)-luhqH-hPv9_|zS6&`{ z__p_HaP3{U?~c>BMl^1Sqj1=QSQF&Ff05$Z)<0kI-#4!R0Ed2+(yXs3RH7vb0uD^R ze$o0ZHheH%X^vx3dl*HwX`8rOqVm;$-)9XOZuEU8lw(p| zoOI&2UhLlOOOR58w-QfMy6YATQ&J!SlIgtYr+Z)35KH+kG-kNnIL4Ji%t{Ll&WvGw zA~PihZ-`n<$V_Da0Hp@qLRCG%8RHe9SBu)+9nz$MEG6j*C2U)rI)DOm@Kmd4REeku z=ur=FfrZ5uz!U04ZCpy?E#RowuO%v$h5|%CRLU;+eY8F78OK#AS?$IoQwK0qcF{{| zGWwy4;~s|1SRbT*thKLo-&Utq-csFi%&z*l$lENfBTs0BN#JpRHPdd)S&Fa6w^&N| zL=RQNZp`#_iqy&5;90#ZE=w)02kOQTii2#nku<&lDl6HC5*|qs_G7OEMZv@><*#*y z>v;-vjw(G`>cr5#gsbCwdl5_T${h7{PugxCana@UU_QRDrW?GC)ruaTZJ-c>^E&hc_+eh4a`eo81B-Z1z7k-@*8iYxX zePUF&XYW*rjGzR7^8rj_vlpOf{^0O$C9iE)i$z1B$R0<*cx=6&>0Bv^lH}vyueM>+ z1*7HUv1ybHSe!mz995gU!vrs0gi0>4AsiY zP^C-~<>aTkp?0Mh&Q#7pmAw|(Dlvi8h{LE#)ul>_^%&*gmi zqCjcG1&oms5YBK~tCW4e-B`<66NJfSa!No+v&m}MxiSbJ+N45=af!_^v;ZOxQnhe* zLS%vQ$t25BIu)x@sToD%Fvn0iDJof)N$tOUuk18iUdYvjiJ@h078ch~s; z0GZ#5@bA}GW!QN(+ql}swF;tfmOvHqIe2ch`;QyT)0155Sqq7QNUuGQR#@rGYFVqI zy_A8IEbR14(Vp0@qZp96Zttf>#l_t@R?j7eOtQOedVfaW^a%zo{;2w#Iv>Rf$y(KW zUy=+pOJO_mdXt*zuVrQG6H3q%gN1C%tYht}52=3=xYoGY3(CHjmsqjYLvI@IgqI!C zwmP*m(r*B~^_I7}RC}MA+`U>>wvX`t08;J0Wn(uhxeLfc&2Xb^PRn4UdJ@h_;Aq`l|-PUg$C-F_9ozn`j1c&rEC}VplRvqIw9ve)dNKW~o#jp5 zUhn06e--E2<Mbmd|S+;j@g9xiYVA&?V6}*P{o$ zTt+ts6w8*9ushYvj7~Tx^y#x1V^oU7lk!pDUPXJ$hl?%8ZMmXbNCc9#bb0sY%C*oM zf}Y$sZMH=iICoo{VasiDvfXJCA0gts9D3zF_;Via_p6BUZK|bf%b3QbLDLOblD@Bt z;qAS|ep~1N0CRZ$9+z$QlDtdbkGf7-$}Z~Cp;~s^dyyE#ktxT`ev`-XwBzaDXZh3j z7w+#P&)(}Vw~za4l137kGBMOi%;HM*ZFAlEOK_`7+tfodek+vHPV8;E>Wzk|5K94x zBQ-3=%y8S66<&olgGch@3F^1EUh&6k)q8DkP=OqR+|2u4ZTE|zLCDh}Br}qoC-k^o z{-h~fdYFk15rVs7Q{Ac5wx|q4{%p$W3A|RNMtZVvFaRWzyPn%bzyd8GM7lD~pGG_O zPLyN-FM(3+Ds4pL7?&<}bO|w1T<#(G49$97j~0D;D)ms2W6L>5=HBlJ~6ZeN54& zSV*x05UzfSHl`1M%5 z*VPYBp#K1hvn?cI;JIL~sgkBaIN;qB+Vxse0o;BG?fR@!0$}5UbZnwtM@~Pf3-*-b zEjYdzvRo{rATS_d&?vbTN2?J300niCH9|sT@`5~-#BO8MJ2q{k1?va?`3@FOLweuXV9B1mw0EZ*yq)r&I%i-7SM z49DqN+I0xyEU_!5dUa4BU#G!lnG%eoJtbM+sV)Y9FeUtw+|w-Q5$C(s({~d>p%4ev zOq>W<<+q3pw2hC~A()6v8 zoy|E+F>rD#$+rd{b52RJO1z_Ly06$x*8zV*Vj!+T6m*%5$FJ$HjD;+%xX$hHHAa zBETN3SFRXpKnOM1GYw71`n7@Euq0?P-p50%;{zv5bysl5w=DEL5NWemj*g%|OaXu@p)$^{?y6!gQ z&M_dw_=V40Jok0wD;jP4&T&0e_hIMTma0&sBP}E_86OpF>zujmwtBAUP#R=F2dgW4 z;y7)xsHZU?dbSZ(NqRZvDnb$%Gf3wpZoft?6$lXkM-!Tu&vHdcz{&zKV0x?W#p=ws z?ofz~grp3506$u}_jWDMNU5#{r>KJw;Iod5V#(1`P>CQG(bL4L#J|?5Mj5d5jGbp| z=~&vOPL!uy#vnd#;I(dIZMG&vBGnG3GKp5)Lf(p`2@+cqmx@l^9Qzb3%%&SZ)TP@C zc`*}(3cvvF9~0GCCRw{h#9<$FM3*grNiH01>6Kbyk*lUL2To+I$%)sy8)q4(Qjlke z#2@-H&a)lTY^o^w37O9&cJz*Z?!5{SKF%XloucbISvKgl^;Y^|DEiNFPbYjh|1_rc>P>AkqlO73H!1pUM>h1U5g|q?Nf*p1A<*7NuE; zkr)8$HX;(1A+SAFlcQ1(y8<(-oDb=6a9j*F4;Tz$P8!sC0YeW?-T%NuKm zk%9V&8o}`{xGOWaF${8S6&8D)04^e5u3c24VcOt6h9&YCsxiByPuIJKEa)>^Eko=? zcp$$OTBs+Y4a0^_>Hd{sA0-E0!B{JC+nP=>bJaar#Fclr%he|NDP1III0R}E{sm{z ztYxL-+wLit zA0=ZuEjKd>)(jZz1Inth6R;k#akOl%1+6LEUU_tVf>0T5+Wjg1mZK4|IK&dfwoB`HzBb!lkBjnOFU8|&cHZIQ z@3}v|J_J z0gDlk9al|e80@J=N8K8qP{{OF&Yc+AbXA=(DQd4ZHTNO z3|cNc&s37m?s>;`YkGdB{h^dc`&HWI&w8&KG>ujR9;G_r%I$Dq)DSWtc`My9J0vMn zl`z1G%Q%Cd&2CI}^k>~=`xB{ZK#4DgP#@Z}KK5rKP=IEi$c4VsqFeM-regpj80&xA z@La67tzz}-Q=}ywMnpI4fr(7@jP2DrRHSLhJD!BAZ{lNZx`@W0I)-u1Clt6_XJts4 z5FC1e#4dSa%zev>bRa4Tep4*QVQX8L8^25!(na(Ar};9A`i~2ma*1<*J`2x}NBWmJ z1*G5fDKA5@N&s~Etm|URjD)md_$x8$)b2#XKz!5JFqt732kPl|zN?yau?4VYHi@z_ zfhCRyqvWiXET|aF9DP7$67_CaC8$Z_6Vs_a)PtA;aDT;RlxhNC!ygoCcP(_xSd2nm zi;9kk83w{W1v0rQ!fY_~j)^czQH3)j)$#!?#KTt7IcOjTSF!exqDjM|T6>V325*4K zB-y!4#sE3Y{)IE1$(o6#a~XImD&)PmjPqA3l8_Id!4?}uvCpD{GmOZ|B*7@s9lt`D z!sLjSrU8Nl5f*HjD%M+!a~;=hyo9Mpns1B=z^re@Hl1Fd7t7y<=Ue>_+uM%lSnd>s zIm|++1JF(@<@0#9U$Of?j`@8#r_#4**Noy0W660p(+|JJyD7Fvig;vK3_UYqsz$tg zS32o0MeVI(ZHQA5a;LV;{dmU#kX-g_UhLKFT9T)mgmh4}62}%tNTqybo2j&P9win=$J@HZkOz({9+jyhaJz`84Lnvg?%kagIQcZLH09#E+T|Ik z%lMDtveI_322c1dRoXJPw6s(Bs~FjDb_di&Z$>KW;@r-FpHI@dU}QL)L@s>KRmS&M zLbSM$wjTvtteIF=y8i$&QDj!MyE2m|TajL&c%G^{>oCLJTS#1~heh2A1jUNDaoctE zrMQf8T9M@6k!ibC(-L)Q1FGrAr@Fk`b79E)yN+E9V+uI;fF#M+DMyfsTxu; zC-X1 zSUCOR)lS`9?#qapdLj?y%Tjw>Zd3NOl42Z72%f4;UX`DAd#6gAM5G2IsqMl3UQmpyRC`(<9Ou|BBJNs@bIot(AZ188H2 z0E3)QQnM~PHTs!Ul_Dr$(efP>_cJ!?l@Ul$)u3u@XVFV~v$eUv(j?7;Vn;>OPQA?G zC{sF&rT8puW$6;_=(wW_T5t!|3v8;_R7C8kyOr%USU?0UW zo~X!0ou9!-u@e!bHhwAUvYcc=(p;sUrG-i!v(fq`U9UwtfW#I!_3BlP%aai@gifYD zIVpN3aEKaT07|y6aunhu1GzbcF5MR>$}+{v0nuFaSy2(Cqf_FT%UPpNE_&pxGL+#E z36RI4=Q7N{MH8*uW#GC;PKH6%mXdQ>ok1BBgDGY@mJK+NF)GcnWTS*j=isfCYPQ|D z-CJBnwHcUBCBX%Xx9Ce{%;{Z2xBc{KLf>$foP=us0JVJo04v4MSp7f6{PoxH^8Wx^ zwDEn~&g#-LrBF^JI3TZ+wzhPy+i`O1w9Kma(>~#4$7iD|mbU~^&6aT1Qrl-Qtoi1- z?CBY+iT?lxKLwiVose;wu8|x1aWVtLHJa(HX1Mez`%c&Zjr*d*l-7WR$d*SHo#N&& zI}Clx(nx%8D;rCLF|qG8DAL;IOn@L@>z3ME8J1v^S>eh5gsN^oQSetS#?de2B61!=~myeT?Z@X{%WtFt+SEwOQ0OCtz zy;^wre7`5moO3%~k1l=8eeCVqeLDMg(NJ7mjZr2i2z*Ficf$Ce^|t9B$A5Q!G4CoopEuQlE-soQ@FC78z&wP&M-+x1tswX9%p3~?XztoyZ<%YI3f%{mova0~SC zT=ud!-QrZ}%0QeNJ$zR2S-W9cg-OT&-vQA}F&y`pPOJu|Z&yLn;<{@(Wu0llok-1z z^foN7c$UjP)ZrH{L&Nl~Nzt2stx!f1C!iT%v+lBCjNs`?uAfg&0JSGX+C@lvddM;& zr26KkdC`lUeTFIeOXH^xik`hYnJR)JOe5;(RL8AYt4^Im0yGH7{?ct^u6tRZu`weF z2O5V}zL&EY%I2*HhM+?hI($}T>f^56aIH>_Nzed>0~dUP={1w>bGu1LvjW06Hf8f! z`%iUNgUXZ8+gu9m?X=hU2T~+&6$bR(kXf({OtE*p)hA9O0K@=Co2_YWy;zs(q}BZVa$PX#(cz|I zFmH3_{ec>)9V}U^zJSSGxO(Y;ia#E;=kJKnQ~B z&51~f$=QO&+b>8#;u*5)mh?N6+F2ZWsX8p^4JeQ?%c9r1_dUfC9eCmA(Mq(45hbwk z@J`2YAPCKCWy+l5!Oj49DW68AILO95WDZ3!lFWv2o+C9o9g9R<;Qncxu27uFI!IRy zNRxWOAU{LVO3$JqoQ%tm=kzGnMj)8Tk0Nqcr9Rk%sl>=+-b%GLM6=?mil#Fo5){S_ zdK9VYkOv<$i!M-{Jx`D+j*UuZNDMJbgG`9W4>akO$_^uma{W^ccK`za0HJ0F5sR}C z(P=Ad;GNdrwrhw1Gg9BJB7aih&ExC5`(H!A`95DB{u`O}cFr5!4VQSgiG@KL%r#Ru z5LdzoRsVpYZQk*L3nIVA4l=m@gPTWMu2l<|*ZtF9acUFYK zo?c8kCc1jpD>^P=ObBTOqu0mgu{P@Cb~sQGrdT+ZO5M7p+cj3zp-8u$2Q@ES)4Ln> zsEJICAmxc&W}R}@6@951eQv!%_$pS!LOm1ybwp}q=l{i(L82loWTTzHk6eJehg z9@%|v&zR_~wpGufu!)o$F!NX4hb-c&LO!97s1HaPABuGE=;vxs6?K`+0QhO>>r-s> zjND@pS}>)cFcJOWvtymKzMgOSzwA>wuf5?Zd!~L3h&>AN;r^+Z!X|Ps)%#g1?etuA zK!?m}J!R1>X!J^FNyV}~6EZ_M>L&vFPC;gLB~#J>A~>HCmu$C@rkrui{-tJVn^Bt+ zhCi)YF;*iwM^Fa=(Mi>2!NxsVEcA*r0~}L0G7Kcauvx*BXHH~efE`w{vZG3*L>Pu2 ztruz3#Nzk?r8@R7Q!tUkqGFSwNP2>iV5ytivJke&m+>IeK5K zr|dV@7ZoEqbp(OM!FBTYJ zE1v%VM{m@Pr;gl_ZU>UWv3!ECjO1neM7c#;?G&D-sEEX~ySy86gXLbR{~3MiCgu;LN&C7Y(_jnXU!*CHHH@ z_`Q{C6spFx*%B1#z=BC03+#Ab7qmDO2B zfs?|3m!uCr75bhI4S2QuFY~|5eBY7h@?K6`_B=sFuaf{Qdp8G{ei2wmQpTH|- zda*?xb|lCKk4IOnHpS?ch)Q_4k0wW@s=*6-{#G`ZWepe%_bXm7wM;Ud& z8g;$Wboz!5=Cv0y3b3a+0~(=k*(A(!yGhwAdr6wZQPUXp@mbC%Mt9_x=&B5(Ilz$T z@?fUjda>S0khH0x%WFCK6}@(uOUX0#Dp8>`0LM^?#CUuYN!GEp-BrwD1H@sId8e}H zG0P$pA_Tz$97I*yd$L{oB}O&kT1+A0v$da2skN8yHa^^lVA*-B;#BoUFh1U=d3Y^t zw^{8x%){;HItC^7LFEZNm;Mt<3+ ziNy6}>y??xCX|Sa90$p2W9YMDsW1)zpA{sFBAi3S_;vAGx2trFNrQuyL#oA>E0IW@ zUXk$$VX`%1Oz`{`rCo1AivgsJ)a!b!`kaB%z~Y#-AsS}~ETZKZ2(uIO@ktgGfCLO1 zpeZI|!_t3s)V3x_$hJ(FtAc?O&j7W0E$EEslOjK5Ow26U<4z+C$A^NF{%4PM$A|sR^Q?d5 zsSb3HTu()wi8d-!>d0bn@K)IuZKM)}NYXGNW@MMtPL%NKm?qH=YI>aD%UNsP4m9KL z2J4wioF&_$q^ZbN7&9q5F)u|^suKhf{zUv)uQ3xP9S+NH$RQ8 z&#m$Q05{9y+*_SqfZ`nX!*$zXRs;e-aQLr{&Bg7wujt<$@_KXW?$)#R<}!nhtA&rL zuE<8*8p{>AS-qlKV~<6`_j@O1AC+Iz*2nPpqU5#ZY%U=hWRl)WZ0WS<*Z10$DsBa9yt~%LvsRTGAsH7Z zBE1^+!;3Mo+|xCJ&duvOHtn*8wkt9`oSoV2pKT_vU9{1|ZL2wZJ8MfB+*HC8qVizp z1?=PE%gf8lHJ5F#Nb&F8uisVGoqLU+WTjFy03uao8A34_hsB+J?+fE5J==DF5B=x- z#oJA<2aox_x6$J6Q_8o!<8hVM-OTPP)GsN@MErvLQe&s1_`dv`@3r5O-L}59WeZS7 zpfMSevuC4?^l{&6xHjYira1VF)s|(;-=6A#5I~oxwgVuw?Um2& zEdh>T1h#rEQiA{oQ-D(z{mE6OPM~+ihD%t>oUtl&DoQU9Bj&NzTvm44PU*XXKqgV~ z$uAU#mS50 zR&~Z4x~fyB5iLNF4rHq(?9JIIYn%FmgW=I`%rkl?3Is@*l0hDoeZ4Zx-{_QKC`1{> zvC7z$IMT%Qe0nWoDQ#5uBH%Ke zH(&NHb3Uxg(7lR+p^S*~@C#dZ%stZ`5}mP$jENq7LHRCs7ornFEzNP= zDbf^V;k6Ni^jCbzgKWiE($h%c@O6oE+0N~nkf9?6FQ{S*;FFSfPkBapYRq*Rtx08D gK8Y5oOUxe(mG;eVR(n+bl7GB%@lVwI8U089*+BDbmjD0& diff --git a/frontend/resources/images/penpot-login2.jpg b/frontend/resources/images/penpot-login2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3c9409fb5c8447f0ae8d6d178f26812daab6873f GIT binary patch literal 195319 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 z
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 literal 0 HcmV?d00001 diff --git a/frontend/resources/styles/main/layouts/login.scss b/frontend/resources/styles/main/layouts/login.scss index 9442c515e5..b1c4edda99 100644 --- a/frontend/resources/styles/main/layouts/login.scss +++ b/frontend/resources/styles/main/layouts/login.scss @@ -25,18 +25,19 @@ background-color:#2C233E; background-image: url("/images/penpot-login.jpg"); background-size: cover; + background-position: center; .tagline { text-align: center; width: 280px; - font-size: $fs24; + font-size: $fs18; margin-top: 25px; - color: white; + color: #2C233E; } .logo { svg { - fill: white; + fill: #2C233E; width: 200px; height: 80px; } From 14d10af9b88fa9ca97b2cd6d84a4b30c5bcc574f Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Wed, 28 Oct 2020 18:04:39 +0100 Subject: [PATCH 03/48] :sparkles: Measurements in handoff mode --- .../styles/main/partials/handoff.scss | 11 +- frontend/src/app/main/data/viewer.cljs | 5 +- .../ui/viewer/handoff/attributes/shadow.cljs | 11 +- .../ui/viewer/handoff/selection_feedback.cljs | 240 ++++++++++++++++-- 4 files changed, 233 insertions(+), 34 deletions(-) diff --git a/frontend/resources/styles/main/partials/handoff.scss b/frontend/resources/styles/main/partials/handoff.scss index adac8714ee..0141180fc8 100644 --- a/frontend/resources/styles/main/partials/handoff.scss +++ b/frontend/resources/styles/main/partials/handoff.scss @@ -108,6 +108,8 @@ .color-bullet { width: 24px; height: 24px; + border-radius: $br-small; + border: 1px solid $color-gray-60; } .attributes-copy-button { padding: 1rem 0.5rem; @@ -252,5 +254,12 @@ opacity: 1; } } - + + .attributes-shadow-block { + border-top: 1px solid $color-gray-60; + } + + .attributes-shadow-blocks :first-child { + border-top: none; + } } diff --git a/frontend/src/app/main/data/viewer.cljs b/frontend/src/app/main/data/viewer.cljs index 285286a7d4..8a09cf13c8 100644 --- a/frontend/src/app/main/data/viewer.cljs +++ b/frontend/src/app/main/data/viewer.cljs @@ -56,7 +56,7 @@ :selected #{} :collapsed #{} - :hover #{}})) + :hover nil})) ptk/WatchEvent (watch [_ state stream] @@ -317,8 +317,7 @@ (ptk/reify ::hover-shape ptk/UpdateEvent (update [_ state] - (update-in state [:viewer-local :hover] (if hover? conj disj) id)))) - + (assoc-in state [:viewer-local :hover] (when hover? id))))) ;; --- Shortcuts diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/shadow.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/shadow.cljs index 05ab8d2dca..d5537f153f 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/shadow.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/shadow.cljs @@ -72,8 +72,9 @@ (when handle-copy-shadow [:button.attributes-copy-button {:on-click handle-copy-shadow} i/copy])] - (for [shape shapes] - (for [shadow (:shadow shape)] - [:& shadow-block {:shape shape - :locale locale - :shadow shadow}]))]))) + [:div.attributes-shadow-blocks + (for [shape shapes] + (for [shadow (:shadow shape)] + [:& shadow-block {:shape shape + :locale locale + :shadow shadow}]))]]))) diff --git a/frontend/src/app/main/ui/viewer/handoff/selection_feedback.cljs b/frontend/src/app/main/ui/viewer/handoff/selection_feedback.cljs index 9b362a1f34..016c218923 100644 --- a/frontend/src/app/main/ui/viewer/handoff/selection_feedback.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/selection_feedback.cljs @@ -10,15 +10,49 @@ (ns app.main.ui.viewer.handoff.selection-feedback (:require [rumext.alpha :as mf] + [cuerdas.core :as str] [okulary.core :as l] + [app.common.data :as d] + [app.common.math :as mth] [app.common.geom.shapes :as gsh] + [app.common.geom.point :as gpt] [app.main.store :as st])) -(def selection-rect-color-normal "#1FDEA7") -(def selection-rect-color-component "#00E0FF") +;; ------------------------------------------------ +;; CONSTANTS +;; ------------------------------------------------ + +(def select-color "#1FDEA7") +(def hover-color "#DB00FF") +(def hover-color-text "#FFF") +(def font-size 10) + (def selection-rect-width 1) +(def select-guide-width 1) +(def select-guide-dasharray 5) +(def hover-guide-width 1) + +(def size-display-color "#FFF") +(def size-display-opacity 0.7) +(def size-display-text-color "#000") +(def size-display-width-min 50) +(def size-display-width-max 75) +(def size-display-height 16) + +(def distance-color "#DB00FF") +(def distance-text-color "#FFF") +(def distance-border-radius 2) +(def distance-pill-width 40) +(def distance-pill-height 16) +(def distance-line-stroke 1) + +;; ------------------------------------------------ +;; LENSES +;; ------------------------------------------------ + (defn make-selected-shapes-iref + "Creates a lens to the current selected shapes" [] (let [selected->shapes (fn [state] @@ -29,38 +63,194 @@ #(l/derived selected->shapes st/state))) (defn make-hover-shapes-iref + "Creates a lens to the shapes the user is making hover" [] (let [hover->shapes (fn [state] (let [hover (get-in state [:viewer-local :hover]) - objects (get-in state [:viewer-data :page :objects]) - resolve-shape #(get objects %)] - (mapv resolve-shape hover)))] + objects (get-in state [:viewer-data :page :objects])] + (get objects hover)))] #(l/derived hover->shapes st/state))) -(mf/defc selection-rect [{:keys [shape]}] - (let [{:keys [x y width height]} (:selrect shape)] - [:rect {:x x - :y y - :width width - :height height - :fill "transparent" - :stroke selection-rect-color-normal - :stroke-width selection-rect-width - :pointer-events "none"}])) +(def selected-zoom + (l/derived (l/in [:viewer-local :zoom]) st/state)) + +;; ------------------------------------------------ +;; HELPERS +;; ------------------------------------------------ + +(defn frame->selrect [frame] + {:x1 0 + :y1 0 + :x2 (:width frame) + :y2 (:height frame) + :width (:width frame) + :height (:height frame)}) + +(defn calculate-guides + "Calculates coordinates for the selection guides" + [frame selrect] + (let [{frame-width :width frame-height :height} frame + {:keys [x y width height]} selrect] + [[0 y frame-width y] + [0 (+ y height) frame-width (+ y height)] + [x 0 x frame-height] + [(+ x width) 0 (+ x width) frame-height]])) + +(defn calculate-distance-lines + "Given a start/end from two shapes gives the distance lines" + [from-s from-e to-s to-e] + (let [ss (- to-s from-s) + se (- to-e from-s) + es (- to-s from-e) + ee (- to-e from-e)] + (cond-> [] + (or (and (neg? ss) (pos? se)) + (and (pos? ss) (neg? ee)) + (and (neg? ss) (> ss se))) + (conj [ from-s (+ from-s ss) ]) + + (or (and (neg? se) (<= ss se))) + (conj [ from-s (+ from-s se) ]) + + (or (and (pos? es) (<= es ee))) + (conj [ from-e (+ from-e es) ]) + + (or (and (pos? ee) (neg? es)) + (and (neg? ee) (pos? ss)) + (and (pos? ee) (< ee es))) + (conj [ from-e (+ from-e ee) ])))) + +;; ------------------------------------------------ +;; COMPONENTS +;; ------------------------------------------------ + +(mf/defc selection-guides [{:keys [frame selrect zoom]}] + [:g.selection-guides + (for [[x1 y1 x2 y2] (calculate-guides frame selrect)] + [:line {:x1 x1 + :y1 y1 + :x2 x2 + :y2 y2 + :style {:stroke select-color + :stroke-width (/ select-guide-width zoom) + :stroke-dasharray (/ select-guide-dasharray zoom)}}])]) + +(mf/defc selection-rect [{:keys [type frame selrect zoom]}] + (let [{:keys [x y width height]} selrect + stroke-color (case type + :selection select-color + :hover hover-color)] + [:g.selection-rect + [:rect {:x x + :y y + :width width + :height height + :style {:fill "transparent" + :stroke stroke-color + :stroke-width (/ selection-rect-width zoom)}}]])) + +(mf/defc size-display [{:keys [type selrect zoom]}] + (let [{:keys [x y width height]} selrect + size-label (str/fmt "%s x %s" (mth/round width) (mth/round height)) + + rect-height (/ size-display-height zoom) + rect-width (/ (if (<= (count size-label) 9) + size-display-width-min + size-display-width-max) + zoom) + text-padding (/ 4 zoom)] + [:g.size-display + [:rect {:x (+ x (/ width 2) (- (/ rect-width 2))) + :y (- (+ y height) rect-height) + :width rect-width + :height rect-height + :style {:fill size-display-color + :fill-opacity size-display-opacity}}] + + [:text {:x (+ (+ x (/ width 2) (- (/ rect-width 2))) (/ rect-width 2)) + :y (- (+ y height (+ text-padding (/ rect-height 2))) rect-height) + :width rect-width + :height rect-height + :text-anchor "middle" + :style {:fill size-display-text-color + :font-size (/ font-size zoom)}} + size-label]])) + + +(mf/defc distance-display [{:keys [type from to zoom]}] + (let [h-lines (let [y (+ (:y from) (/ (:height from) 2))] + (->> (calculate-distance-lines (:x1 from) (:x2 from) (:x1 to) (:x2 to)) + (map (fn [[start end]] [start y end y])))) + + v-lines (let [x (+ (:x from) (/ (:width from) 2))] + (->> (calculate-distance-lines (:y1 from) (:y2 from) (:y1 to) (:y2 to)) + (map (fn [[start end]] [x start x end])))) + + lines (d/concat [] v-lines h-lines) + + distance-pill-width (/ distance-pill-width zoom) + distance-pill-height (/ distance-pill-height zoom) + distance-line-stroke (/ distance-line-stroke zoom) + font-size (/ font-size zoom) + text-padding (/ 3 zoom) + distance-border-radius (/ distance-border-radius zoom)] + + (for [[x1 y1 x2 y2] lines] + (let [center-x (+ x1 (/ (- x2 x1) 2)) + center-y (+ y1 (/ (- y2 y1) 2))] + [:g.distance-line {:key (str "line-%s-%s-%s-%s" x1 y1 x2 y2)} + [:line {:x1 x1 + :y1 y1 + :x2 x2 + :y2 y2 + :style {:stroke distance-color + :stroke-width distance-line-stroke}}] + [:rect {:x (- center-x (/ distance-pill-width 2)) + :y (- center-y (/ distance-pill-height 2)) + :rx distance-border-radius + :ry distance-border-radius + :width distance-pill-width + :height distance-pill-height + :style {:fill distance-color}}] + + [:text {:x center-x + :y (+ center-y text-padding) + :rx distance-border-radius + :ry distance-border-radius + :text-anchor "middle" + :width distance-pill-width + :height distance-pill-height + :style {:fill distance-text-color + :font-size font-size}} + (str (mth/round + (gpt/distance (gpt/point x1 y1) (gpt/point x2 y2))) "px")]])))) (mf/defc selection-feedback [{:keys [frame]}] - (let [hover-shapes-ref (mf/use-memo (make-hover-shapes-iref)) - hover-shapes (->> (mf/deref hover-shapes-ref) - (map #(gsh/translate-to-frame % frame))) - + (let [zoom (mf/deref selected-zoom) + hover-shapes-ref (mf/use-memo (make-hover-shapes-iref)) + hover-shape (mf/deref hover-shapes-ref) + selected-shapes-ref (mf/use-memo (make-selected-shapes-iref)) selected-shapes (->> (mf/deref selected-shapes-ref) - (map #(gsh/translate-to-frame % frame)))] + (map #(gsh/translate-to-frame % frame))) - [:* - (for [shape hover-shapes] - [:& selection-rect {:shape shape}]) + selrect (gsh/selection-rect selected-shapes)] + + (when (seq selected-shapes) + [:g.measurement-feedback {:pointer-events "none"} + [:g.selected-shapes + [:& selection-guides {:selrect selrect :frame frame :zoom zoom}] + [:& selection-rect {:type :selection :selrect selrect :zoom zoom}] + [:& size-display {:selrect selrect :zoom zoom}]] + + (if (and (not-empty selected-shapes) (not hover-shape)) + [:g.hover-shapes + [:& distance-display {:from (frame->selrect frame) :to selrect :zoom zoom}]] + + (let [hover-selrect (-> hover-shape (gsh/translate-to-frame frame) :selrect)] + [:g.hover-shapes + [:& selection-rect {:type :hover :selrect hover-selrect :zoom zoom}] + [:& size-display {:selrect hover-selrect :zoom zoom}] + [:& distance-display {:from hover-selrect :to selrect :zoom zoom}]]))]))) - (for [shape selected-shapes] - [:& selection-rect {:shape shape}])])) From c38d0e3211d902a2aa98991871144e2966e044ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Thu, 22 Oct 2020 16:14:46 +0200 Subject: [PATCH 04/48] :sparkles: Rework nested components to avoid indirect references --- common/app/common/pages_helpers.cljc | 23 +- frontend/src/app/main/data/modal.cljs | 12 +- .../app/main/data/workspace/libraries.cljs | 831 +++++++++--------- .../data/workspace/libraries_helpers.cljs | 314 +++++-- frontend/src/app/main/store.cljs | 11 +- 5 files changed, 674 insertions(+), 517 deletions(-) diff --git a/common/app/common/pages_helpers.cljc b/common/app/common/pages_helpers.cljc index 28f5a3b40a..b53f2714bd 100644 --- a/common/app/common/pages_helpers.cljc +++ b/common/app/common/pages_helpers.cljc @@ -35,13 +35,34 @@ (defn get-root-shape "Get the root shape linked to a component for this shape, if any" [shape objects] - (if (:component-root? shape) + (if (:component-id shape) shape (if-let [parent-id (:parent-id shape)] (get-root-shape (get objects (:parent-id shape)) objects) nil))) +(defn get-container + [page-id component-id local-file] + (if (some? page-id) + (get-in local-file [:pages-index page-id]) + (get-in local-file [:components component-id]))) + +(defn get-shape + [container shape-id] + (get-in container [:objects shape-id])) + +(defn get-component + [component-id file-id local-file libraries] + (let [file (if (nil? file-id) + local-file + (get-in libraries [file-id :data]))] + (get-in file [:components component-id]))) + +(defn get-component-root + [component] + (get-in component [:objects (:id component)])) + (defn get-children "Retrieve all children ids recursively for a given object" [id objects] diff --git a/frontend/src/app/main/data/modal.cljs b/frontend/src/app/main/data/modal.cljs index cd0a7c2c54..2d5181bb7f 100644 --- a/frontend/src/app/main/data/modal.cljs +++ b/frontend/src/app/main/data/modal.cljs @@ -20,18 +20,20 @@ (defn show ([props] (show (uuid/next) (:type props) props)) - ([type props] (show (uuid/next) type props)) + ([type props] + (show (uuid/next) type props)) ([id type props] (ptk/reify ::show-modal ptk/UpdateEvent (update [_ state] (assoc state ::modal {:id id - :type type - :props props - :allow-click-outside false}))))) + :type type + :props props + :allow-click-outside false}))))) + (defn update-props ([type props] - (ptk/reify ::show-modal + (ptk/reify ::update-modal-props ptk/UpdateEvent (update [_ state] (cond-> state diff --git a/frontend/src/app/main/data/workspace/libraries.cljs b/frontend/src/app/main/data/workspace/libraries.cljs index 44aa7881f0..e0f03ff49d 100644 --- a/frontend/src/app/main/data/workspace/libraries.cljs +++ b/frontend/src/app/main/data/workspace/libraries.cljs @@ -125,423 +125,6 @@ :object prev}] (rx/of (dwc/commit-changes [rchg] [uchg] {:commit-local? true})))))) -(def add-component - (ptk/reify ::add-component - ptk/WatchEvent - (watch [_ state stream] - (let [page-id (:current-page-id state) - objects (dwc/lookup-page-objects state page-id) - selected (get-in state [:workspace-local :selected]) - shapes (dws/shapes-for-grouping objects selected)] - (when-not (empty? shapes) - (let [;; If the selected shape is a group, we can use it. If not, - ;; we need to create a group before creating the component. - [group rchanges uchanges] - (if (and (= (count shapes) 1) - (= (:type (first shapes)) :group)) - [(first shapes) [] []] - (dws/prepare-create-group page-id shapes "Component-" true)) - - [new-shape new-shapes updated-shapes] - (dwlh/make-component-shape group objects) - - rchanges (conj rchanges - {:type :add-component - :id (:id new-shape) - :name (:name new-shape) - :shapes new-shapes}) - - rchanges (into rchanges - (map (fn [updated-shape] - {:type :mod-obj - :page-id page-id - :id (:id updated-shape) - :operations [{:type :set - :attr :component-id - :val (:component-id updated-shape)} - {:type :set - :attr :component-file - :val nil} - {:type :set - :attr :component-root? - :val (:component-root? updated-shape)} - {:type :set - :attr :shape-ref - :val (:shape-ref updated-shape)} - {:type :set - :attr :touched - :val (:touched updated-shape)}]}) - updated-shapes)) - - uchanges (conj uchanges - {:type :del-component - :id (:id new-shape)}) - - uchanges (into uchanges - (map (fn [updated-shape] - (let [original-shape (get objects (:id updated-shape))] - {:type :mod-obj - :page-id page-id - :id (:id updated-shape) - :operations [{:type :set - :attr :component-id - :val (:component-id original-shape)} - {:type :set - :attr :component-file - :val (:component-file original-shape)} - {:type :set - :attr :component-root? - :val (:component-root? original-shape)} - {:type :set - :attr :shape-ref - :val (:shape-ref original-shape)} - {:type :set - :attr :touched - :val (:touched original-shape)}]})) - updated-shapes))] - - - (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true}) - (dws/select-shapes (d/ordered-set (:id group)))))))))) - -(defn delete-component - [{:keys [id] :as params}] - (us/assert ::us/uuid id) - (ptk/reify ::delete-component - ptk/WatchEvent - (watch [_ state stream] - (let [component (get-in state [:workspace-data :components id]) - - rchanges [{:type :del-component - :id id}] - - uchanges [{:type :add-component - :id id - :name (:name component) - :shapes (vals (:objects component))}]] - - (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true})))))) - -(defn instantiate-component - [file-id component-id position] - (us/assert (s/nilable ::us/uuid) file-id) - (us/assert ::us/uuid component-id) - (ptk/reify ::instantiate-component - ptk/WatchEvent - (watch [_ state stream] - (let [component (if (nil? file-id) - (get-in state [:workspace-data :components component-id]) - (get-in state [:workspace-libraries file-id :data :components component-id])) - component-shape (get-in component [:objects (:id component)]) - - orig-pos (gpt/point (:x component-shape) (:y component-shape)) - delta (gpt/subtract position orig-pos) - - page-id (:current-page-id state) - objects (dwc/lookup-page-objects state page-id) - unames (atom (dwc/retrieve-used-names objects)) - - frame-id (cph/frame-id-by-position objects (gpt/add orig-pos delta)) - - update-new-shape - (fn [new-shape original-shape] - (let [new-name - (dwc/generate-unique-name @unames (:name new-shape))] - - (swap! unames conj new-name) - - (cond-> new-shape - true - (as-> $ - (assoc $ :name new-name) - (geom/move $ delta) - (assoc $ :frame-id frame-id) - (assoc $ :parent-id - (or (:parent-id $) (:frame-id $))) - (assoc $ :shape-ref (:id original-shape)) - (dissoc $ :touched)) - - (nil? (:parent-id original-shape)) - (assoc :component-id (:id original-shape) - :component-root? true) - - (and (nil? (:parent-id original-shape)) (some? file-id)) - (assoc :component-file file-id) - - (and (nil? (:parent-id original-shape)) (nil? file-id)) - (dissoc :component-file) - - (some? (:parent-id original-shape)) - (dissoc :component-root?)))) - - [new-shape new-shapes _] - (cph/clone-object component-shape - nil - (get component :objects) - update-new-shape) - - rchanges (map (fn [obj] - {:type :add-obj - :id (:id obj) - :page-id page-id - :frame-id (:frame-id obj) - :parent-id (:parent-id obj) - :obj obj}) - new-shapes) - - uchanges (map (fn [obj] - {:type :del-obj - :id (:id obj) - :page-id page-id}) - new-shapes)] - - (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true}) - (dws/select-shapes (d/ordered-set (:id new-shape)))))))) - -(defn detach-component - [id] - (us/assert ::us/uuid id) - (ptk/reify ::detach-component - ptk/WatchEvent - (watch [_ state stream] - (let [page-id (:current-page-id state) - objects (dwc/lookup-page-objects state page-id) - shapes (cph/get-object-with-children id objects) - - rchanges (map (fn [obj] - {:type :mod-obj - :page-id page-id - :id (:id obj) - :operations [{:type :set - :attr :component-id - :val nil} - {:type :set - :attr :component-file - :val nil} - {:type :set - :attr :shape-ref - :val nil}]}) - shapes) - - uchanges (map (fn [obj] - {:type :mod-obj - :page-id page-id - :id (:id obj) - :operations [{:type :set - :attr :component-id - :val (:component-id obj)} - {:type :set - :attr :component-file - :val (:component-file obj)} - {:type :set - :attr :shape-ref - :val (:shape-ref obj)}]}) - shapes)] - - (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true})))))) - -(defn nav-to-component-file - [file-id] - (us/assert ::us/uuid file-id) - (ptk/reify ::nav-to-component-file - ptk/WatchEvent - (watch [_ state stream] - (let [file (get-in state [:workspace-libraries file-id]) - pparams {:project-id (:project-id file) - :file-id (:id file)} - qparams {:page-id (first (get-in file [:data :pages]))}] - (st/emit! (rt/nav-new-window :workspace pparams qparams)))))) - -(defn ext-library-changed - [file-id modified-at changes] - (us/assert ::us/uuid file-id) - (us/assert ::cp/changes changes) - (ptk/reify ::ext-library-changed - ptk/UpdateEvent - (update [_ state] - (-> state - (assoc-in [:workspace-libraries file-id :modified-at] modified-at) - (d/update-in-when [:workspace-libraries file-id :data] - cp/process-changes changes))))) - -(defn reset-component - [id] - (us/assert ::us/uuid id) - (ptk/reify ::reset-component - ptk/WatchEvent - (watch [_ state stream] - ;; ===== Uncomment this to debug ===== - ;; (js/console.info "##### RESET-COMPONENT of shape" (str id)) - (let [page-id (:current-page-id state) - page (get-in state [:workspace-data :pages-index page-id]) - objects (dwc/lookup-page-objects state page-id) - shape (get objects id) - file-id (get shape :component-file) - - [all-shapes component root-component] - (dwlh/resolve-shapes-and-components shape - objects - state - true) - - ;; ===== Uncomment this to debug ===== - ;; _ (js/console.info "shape" (:name shape) "<- component" (:name component)) - ;; _ (js/console.debug "all-shapes" (clj->js all-shapes)) - ;; _ (js/console.debug "component" (clj->js component)) - ;; _ (js/console.debug "root-component" (clj->js root-component)) - - [rchanges uchanges] - (dwlh/generate-sync-shape-and-children-components shape - all-shapes - component - root-component - (:id page) - nil - true)] - - ;; ===== Uncomment this to debug ===== - ;; (js/console.debug "rchanges" (clj->js rchanges)) - - (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true})))))) - -(defn update-component - [id] - (us/assert ::us/uuid id) - (ptk/reify ::update-component - ptk/WatchEvent - (watch [_ state stream] - ;; ===== Uncomment this to debug ===== - ;; (js/console.info "##### UPDATE-COMPONENT of shape" (str id)) - (let [page-id (:current-page-id state) - objects (dwc/lookup-page-objects state page-id) - shape (get objects id) - file-id (get shape :component-file) - - [all-shapes component root-component] - (dwlh/resolve-shapes-and-components shape - objects - state - true) - - ;; ===== Uncomment this to debug ===== - ;; _ (js/console.info "shape" (:name shape) "-> component" (:name component)) - ;; _ (js/console.debug "all-shapes" (clj->js all-shapes)) - ;; _ (js/console.debug "component" (clj->js component)) - ;; _ (js/console.debug "root-component" (clj->js root-component)) - - [rchanges uchanges] - (dwlh/generate-sync-shape-inverse shape - all-shapes - component - root-component - page-id)] - - ;; ===== Uncomment this to debug ===== - ;; (js/console.debug "rchanges" (clj->js rchanges)) - - (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true})))))) - -(declare sync-file-2nd-stage) - -(defn sync-file - [file-id] - (us/assert (s/nilable ::us/uuid) file-id) - (ptk/reify ::sync-file - ptk/UpdateEvent - (update [_ state] - (if file-id - (assoc-in state [:workspace-libraries file-id :synced-at] (dt/now)) - state)) - - ptk/WatchEvent - (watch [_ state stream] - ;; ===== Uncomment this to debug ===== - ;; (js/console.info "##### SYNC-FILE" (str (or file-id "local"))) - (let [library-changes [(dwlh/generate-sync-library :components file-id state) - (dwlh/generate-sync-library :colors file-id state) - (dwlh/generate-sync-library :typographies file-id state)] - file-changes [(dwlh/generate-sync-file :components file-id state) - (dwlh/generate-sync-file :colors file-id state) - (dwlh/generate-sync-file :typographies file-id state)] - rchanges (d/concat [] - (->> library-changes (remove nil?) (map first) (flatten)) - (->> file-changes (remove nil?) (map first) (flatten))) - uchanges (d/concat [] - (->> library-changes (remove nil?) (map second) (flatten)) - (->> file-changes (remove nil?) (map second) (flatten)))] - ;; ===== Uncomment this to debug ===== - ;; (js/console.debug "rchanges" (clj->js rchanges)) - (rx/concat - (rx/of (dm/hide-tag :sync-dialog)) - (when rchanges - (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true}))) - (when file-id - (rp/mutation :update-sync - {:file-id (get-in state [:workspace-file :id]) - :library-id file-id})) - (when (some? library-changes) - (rx/of (sync-file-2nd-stage file-id)))))))) - -(defn sync-file-2nd-stage - "If some components have been modified, we need to launch another synchronization - to update the instances of the changed components." - ;; TODO: this does not work if there are multiple nested components. Only the - ;; first level will be updated. - ;; To solve this properly, it would be better to launch another sync-file - ;; recursively. But for this not to cause an infinite loop, we need to - ;; implement updated-at at component level, to detect what components have - ;; not changed, and then not to apply sync and terminate the loop. - [file-id] - (us/assert (s/nilable ::us/uuid) file-id) - (ptk/reify ::sync-file-2nd-stage - ptk/WatchEvent - (watch [_ state stream] - ;; ===== Uncomment this to debug ===== - ;; (js/console.info "##### SYNC-FILE" (str (or file-id "local")) "(2nd stage)") - (let [[rchanges1 uchanges1] (dwlh/generate-sync-file :components nil state) - [rchanges2 uchanges2] (dwlh/generate-sync-library :components file-id state) - rchanges (d/concat rchanges1 rchanges2) - uchanges (d/concat uchanges1 uchanges2)] - (when rchanges - ;; ===== Uncomment this to debug ===== - ;; (js/console.debug "rchanges" (clj->js rchanges)) - (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true}))))))) - -(def ignore-sync - (ptk/reify ::sync-file - ptk/UpdateEvent - (update [_ state] - (assoc-in state [:workspace-file :ignore-sync-until] (dt/now))) - - ptk/WatchEvent - (watch [_ state stream] - (rp/mutation :ignore-sync - {:file-id (get-in state [:workspace-file :id]) - :date (dt/now)})))) - -(defn notify-sync-file - [file-id] - (us/assert ::us/uuid file-id) - (ptk/reify ::notify-sync-file - ptk/WatchEvent - (watch [_ state stream] - (let [libraries-need-sync (filter #(> (:modified-at %) (:synced-at %)) - (vals (get state :workspace-libraries))) - do-update #(do (apply st/emit! (map (fn [library] - (sync-file (:id library))) - libraries-need-sync)) - (st/emit! dm/hide)) - do-dismiss #(do (st/emit! ignore-sync) - (st/emit! dm/hide))] - (rx/of (dm/info-dialog - (tr "workspace.updates.there-are-updates") - :inline-actions - [{:label (tr "workspace.updates.update") - :callback do-update} - {:label (tr "workspace.updates.dismiss") - :callback do-dismiss}] - :sync-dialog)))))) - (defn add-typography ([typography] (add-typography typography true)) ([typography edit?] @@ -586,3 +169,417 @@ uchg {:type :add-typography :typography prev}] (rx/of (dwc/commit-changes [rchg] [uchg] {:commit-local? true})))))) + +(def add-component + "Add a new component to current file library, from the currently selected shapes" + (ptk/reify ::add-component + ptk/WatchEvent + (watch [_ state stream] + (let [page-id (:current-page-id state) + objects (dwc/lookup-page-objects state page-id) + selected (get-in state [:workspace-local :selected]) + shapes (dws/shapes-for-grouping objects selected)] + (when-not (empty? shapes) + (let [;; If the selected shape is a group, we can use it. If not, + ;; we need to create a group before creating the component. + [group rchanges uchanges] + (if (and (= (count shapes) 1) + (= (:type (first shapes)) :group)) + [(first shapes) [] []] + (dws/prepare-create-group page-id shapes "Component-" true)) + + [new-shape new-shapes updated-shapes] + (dwlh/make-component-shape group objects) + + rchanges (conj rchanges + {:type :add-component + :id (:id new-shape) + :name (:name new-shape) + :shapes new-shapes}) + + rchanges (into rchanges + (map (fn [updated-shape] + {:type :mod-obj + :page-id page-id + :id (:id updated-shape) + :operations [{:type :set + :attr :component-id + :val (:component-id updated-shape)} + {:type :set + :attr :component-file + :val (:component-file updated-shape)} + {:type :set + :attr :component-root? + :val (:component-root? updated-shape)} + {:type :set + :attr :shape-ref + :val (:shape-ref updated-shape)} + {:type :set + :attr :touched + :val (:touched updated-shape)}]}) + updated-shapes)) + + uchanges (conj uchanges + {:type :del-component + :id (:id new-shape)}) + + uchanges (into uchanges + (map (fn [updated-shape] + (let [original-shape (get objects (:id updated-shape))] + {:type :mod-obj + :page-id page-id + :id (:id updated-shape) + :operations [{:type :set + :attr :component-id + :val (:component-id original-shape)} + {:type :set + :attr :component-file + :val (:component-file original-shape)} + {:type :set + :attr :component-root? + :val (:component-root? original-shape)} + {:type :set + :attr :shape-ref + :val (:shape-ref original-shape)} + {:type :set + :attr :touched + :val (:touched original-shape)}]})) + updated-shapes))] + + + (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true}) + (dws/select-shapes (d/ordered-set (:id group)))))))))) + +(defn delete-component + "Delete the component with the given id, from the current file library." + [{:keys [id] :as params}] + (us/assert ::us/uuid id) + (ptk/reify ::delete-component + ptk/WatchEvent + (watch [_ state stream] + (let [component (get-in state [:workspace-data :components id]) + + rchanges [{:type :del-component + :id id}] + + uchanges [{:type :add-component + :id id + :name (:name component) + :shapes (vals (:objects component))}]] + + (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true})))))) + +(defn instantiate-component + "Create a new shape in the current page, from the component with the given id + in the given file library (if file-id is nil, take it from the current file library)." + [file-id component-id position] + (us/assert (s/nilable ::us/uuid) file-id) + (us/assert ::us/uuid component-id) + (us/assert ::us/point position) + (ptk/reify ::instantiate-component + ptk/WatchEvent + (watch [_ state stream] + (let [component (if (nil? file-id) + (get-in state [:workspace-data :components component-id]) + (get-in state [:workspace-libraries file-id :data :components component-id])) + component-shape (get-in component [:objects (:id component)]) + + orig-pos (gpt/point (:x component-shape) (:y component-shape)) + delta (gpt/subtract position orig-pos) + + page-id (:current-page-id state) + objects (dwc/lookup-page-objects state page-id) + unames (atom (dwc/retrieve-used-names objects)) + + frame-id (cph/frame-id-by-position objects (gpt/add orig-pos delta)) + + update-new-shape + (fn [new-shape original-shape] + (let [new-name + (dwc/generate-unique-name @unames (:name new-shape))] + + (swap! unames conj new-name) + + (cond-> new-shape + true + (as-> $ + (assoc $ :name new-name) + (geom/move $ delta) + (assoc $ :frame-id frame-id) + (assoc $ :parent-id + (or (:parent-id $) (:frame-id $)))) + + (nil? (:shape-ref original-shape)) + (assoc :shape-ref (:id original-shape)) + + (nil? (:parent-id original-shape)) + (assoc :component-id (:id original-shape) + :component-root? true) + + (and (nil? (:parent-id original-shape)) (some? file-id)) + (assoc :component-file file-id) + + (and (nil? (:parent-id original-shape)) (nil? file-id)) + (dissoc :component-file) + + (and (some? (:component-id original-shape)) + (nil? (:component-file original-shape)) + (some? file-id)) + (assoc :component-file file-id) + + (some? (:parent-id original-shape)) + (dissoc :component-root?)))) + + [new-shape new-shapes _] + (cph/clone-object component-shape + nil + (get component :objects) + update-new-shape) + + rchanges (map (fn [obj] + {:type :add-obj + :id (:id obj) + :page-id page-id + :frame-id (:frame-id obj) + :parent-id (:parent-id obj) + :obj obj}) + new-shapes) + + uchanges (map (fn [obj] + {:type :del-obj + :id (:id obj) + :page-id page-id}) + new-shapes)] + + (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true}) + (dws/select-shapes (d/ordered-set (:id new-shape)))))))) + +(defn detach-component + "Remove all references to components in the shape with the given id, + and all its children, at the current page." + [id] + (us/assert ::us/uuid id) + (ptk/reify ::detach-component + ptk/WatchEvent + (watch [_ state stream] + (let [page-id (:current-page-id state) + objects (dwc/lookup-page-objects state page-id) + shapes (cph/get-object-with-children id objects) + + rchanges (map (fn [obj] + {:type :mod-obj + :page-id page-id + :id (:id obj) + :operations [{:type :set + :attr :component-id + :val nil} + {:type :set + :attr :component-file + :val nil} + {:type :set + :attr :component-root? + :val nil} + {:type :set + :attr :shape-ref + :val nil}]}) + shapes) + + uchanges (map (fn [obj] + {:type :mod-obj + :page-id page-id + :id (:id obj) + :operations [{:type :set + :attr :component-id + :val (:component-id obj)} + {:type :set + :attr :component-file + :val (:component-file obj)} + {:type :set + :attr :component-root? + :val (:component-root? obj)} + {:type :set + :attr :shape-ref + :val (:shape-ref obj)}]}) + shapes)] + + (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true})))))) + +(defn nav-to-component-file + [file-id] + (us/assert ::us/uuid file-id) + (ptk/reify ::nav-to-component-file + ptk/WatchEvent + (watch [_ state stream] + (let [file (get-in state [:workspace-libraries file-id]) + pparams {:project-id (:project-id file) + :file-id (:id file)} + qparams {:page-id (first (get-in file [:data :pages]))}] + (st/emit! (rt/nav-new-window :workspace pparams qparams)))))) + +(defn ext-library-changed + [file-id modified-at changes] + (us/assert ::us/uuid file-id) + (us/assert ::cp/changes changes) + (ptk/reify ::ext-library-changed + ptk/UpdateEvent + (update [_ state] + (-> state + (assoc-in [:workspace-libraries file-id :modified-at] modified-at) + (d/update-in-when [:workspace-libraries file-id :data] + cp/process-changes changes))))) + +(defn reset-component + "Cancels all modifications in the shape with the given id, and all its children, in + the current page. Set all attributes equal to the ones in the linked component, + and untouched." + [id] + (us/assert ::us/uuid id) + (ptk/reify ::reset-component + ptk/WatchEvent + (watch [_ state stream] + ;; ===== Uncomment this to debug ===== + ;; (js/console.info "##### RESET-COMPONENT of shape" (str id)) + (let [[rchanges uchanges] + (dwlh/generate-sync-shape-and-children-components (get state :current-page-id) + nil + id + (get state :workspace-data) + (get state :workspace-libraries) + true)] + ;; ===== Uncomment this to debug ===== + ;; (js/console.debug "rchanges" (clj->js rchanges)) + + (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true})))))) + +(defn update-component + "Modify the component linked to the shape with the given id, in the current page, so that + all attributes of its shapes are equal to the shape and its children. Also set all attributes + of the shape untouched." + [id] + (us/assert ::us/uuid id) + (ptk/reify ::update-component + ptk/WatchEvent + (watch [_ state stream] + ;; ===== Uncomment this to debug ===== + ;; (js/console.info "##### UPDATE-COMPONENT of shape" (str id)) + (let [page-id (:current-page-id state) + objects (dwc/lookup-page-objects state page-id) + shape (get objects id) + file-id (get shape :component-file) + + [rchanges uchanges] + (dwlh/generate-sync-shape-inverse (get state :current-page-id) + id + (get state :workspace-data) + (get state :workspace-libraries))] + + ;; ===== Uncomment this to debug ===== + ;; (js/console.debug "rchanges" (clj->js rchanges)) + + (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true})))))) + +(declare sync-file-2nd-stage) + +(defn sync-file + "Syhchronize the library file with the given id, with the current file. + Walk through all shapes in all pages that use some color, typography or + component of the library file, and copy the new values to the shapes. + Do it also for shapes inside components of the local file library." + [file-id] + (us/assert (s/nilable ::us/uuid) file-id) + (ptk/reify ::sync-file + ptk/UpdateEvent + (update [_ state] + (if file-id + (assoc-in state [:workspace-libraries file-id :synced-at] (dt/now)) + state)) + + ptk/WatchEvent + (watch [_ state stream] + ;; ===== Uncomment this to debug ===== + (js/console.info "##### SYNC-FILE" (str (or file-id "local"))) + (let [library-changes [(dwlh/generate-sync-library :components file-id state) + (dwlh/generate-sync-library :colors file-id state) + (dwlh/generate-sync-library :typographies file-id state)] + file-changes [(dwlh/generate-sync-file :components file-id state) + (dwlh/generate-sync-file :colors file-id state) + (dwlh/generate-sync-file :typographies file-id state)] + rchanges (d/concat [] + (->> library-changes (remove nil?) (map first) (flatten)) + (->> file-changes (remove nil?) (map first) (flatten))) + uchanges (d/concat [] + (->> library-changes (remove nil?) (map second) (flatten)) + (->> file-changes (remove nil?) (map second) (flatten)))] + ;; ===== Uncomment this to debug ===== + ;; (js/console.debug "rchanges" (clj->js rchanges)) + (rx/concat + (rx/of (dm/hide-tag :sync-dialog)) + (when rchanges + (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true}))) + (when file-id + (rp/mutation :update-sync + {:file-id (get-in state [:workspace-file :id]) + :library-id file-id})) + (when (some? library-changes) + (rx/of (sync-file-2nd-stage file-id)))))))) + +(defn sync-file-2nd-stage + "If some components have been modified, we need to launch another synchronization + to update the instances of the changed components." + ;; TODO: this does not work if there are multiple nested components. Only the + ;; first level will be updated. + ;; To solve this properly, it would be better to launch another sync-file + ;; recursively. But for this not to cause an infinite loop, we need to + ;; implement updated-at at component level, to detect what components have + ;; not changed, and then not to apply sync and terminate the loop. + [file-id] + (us/assert (s/nilable ::us/uuid) file-id) + (ptk/reify ::sync-file-2nd-stage + ptk/WatchEvent + (watch [_ state stream] + ;; ===== Uncomment this to debug ===== + (js/console.info "##### SYNC-FILE" (str (or file-id "local")) "(2nd stage)") + (let [[rchanges1 uchanges1] (dwlh/generate-sync-file :components nil state) + [rchanges2 uchanges2] (dwlh/generate-sync-library :components file-id state) + rchanges (d/concat rchanges1 rchanges2) + uchanges (d/concat uchanges1 uchanges2)] + (when rchanges + ;; ===== Uncomment this to debug ===== + ;; (js/console.debug "rchanges" (clj->js rchanges)) + (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true}))))))) + +(def ignore-sync + (ptk/reify ::sync-file + ptk/UpdateEvent + (update [_ state] + (assoc-in state [:workspace-file :ignore-sync-until] (dt/now))) + + ptk/WatchEvent + (watch [_ state stream] + (rp/mutation :ignore-sync + {:file-id (get-in state [:workspace-file :id]) + :date (dt/now)})))) + +(defn notify-sync-file + [file-id] + (us/assert ::us/uuid file-id) + (ptk/reify ::notify-sync-file + ptk/WatchEvent + (watch [_ state stream] + (let [libraries-need-sync (filter #(> (:modified-at %) (:synced-at %)) + (vals (get state :workspace-libraries))) + do-update #(do (apply st/emit! (map (fn [library] + (sync-file (:id library))) + libraries-need-sync)) + (st/emit! dm/hide)) + do-dismiss #(do (st/emit! ignore-sync) + (st/emit! dm/hide))] + (rx/of (dm/info-dialog + (tr "workspace.updates.there-are-updates") + :inline-actions + [{:label (tr "workspace.updates.update") + :callback do-update} + {:label (tr "workspace.updates.dismiss") + :callback do-dismiss}] + :sync-dialog)))))) + diff --git a/frontend/src/app/main/data/workspace/libraries_helpers.cljs b/frontend/src/app/main/data/workspace/libraries_helpers.cljs index 6144cbcfb6..c1b57cf950 100644 --- a/frontend/src/app/main/data/workspace/libraries_helpers.cljs +++ b/frontend/src/app/main/data/workspace/libraries_helpers.cljs @@ -33,9 +33,12 @@ (declare has-asset-reference-fn) (declare get-assets) -(declare resolve-shapes-and-components) (declare generate-sync-shape-and-children-components) +(declare generate-sync-shape-and-children-normal) +(declare generate-sync-shape-and-children-nested) (declare generate-sync-shape-inverse) +(declare generate-sync-shape-inverse-normal) +(declare generate-sync-shape-inverse-nested) (declare generate-sync-shape<-component) (declare generate-sync-shape->component) (declare remove-component-and-ref) @@ -55,23 +58,25 @@ (assert (nil? (:component-id shape))) (assert (nil? (:component-file shape))) (assert (nil? (:shape-ref shape))) - (let [update-new-shape (fn [new-shape original-shape] + (let [;; Ensure that the component root is not an instance and + ;; it's no longer tied to a frame. + update-new-shape (fn [new-shape original-shape] (cond-> new-shape true - (assoc :frame-id nil) + (-> (assoc :frame-id nil) + (dissoc :component-root?)) (nil? (:parent-id new-shape)) (dissoc :component-id :component-file - :component-root? :shape-ref))) ;; Make the original shape an instance of the new component. ;; If one of the original shape children already was a component - ;; instance, the 'instanceness' is copied into the new component. + ;; instance, maintain this instanceness untouched. update-original-shape (fn [original-shape new-shape] (cond-> original-shape - true + (nil? (:shape-ref original-shape)) (-> (assoc :shape-ref (:id new-shape)) (dissoc :touched)) @@ -124,6 +129,7 @@ "Generate changes to synchronize all shapes inside components of the current file library, that use the given type of asset of the given library." [asset-type library-id state] + ;; (js/console.info "--- SYNC local library " (str asset-type) " from library " (str (or library-id "nil"))) (let [library-items (if (nil? library-id) (get-in state [:workspace-data asset-type]) @@ -176,7 +182,7 @@ [asset-type library-id] (case asset-type :components - (fn [shape] (and (:component-root? shape) + (fn [shape] (and (:component-id shape) (= (:component-file shape) library-id))) :colors @@ -214,19 +220,12 @@ (defmethod generate-sync-shape :components [_ library-id state objects page-id component-id shape] - (let [[all-shapes component root-component] - (resolve-shapes-and-components shape - objects - state - false)] - - (generate-sync-shape-and-children-components shape - all-shapes - component - root-component - page-id - component-id - false))) + (generate-sync-shape-and-children-components page-id + component-id + (:id shape) + (get state :workspace-data) + (get state :workspace-libraries) + false)) (defn- generate-sync-text-shape [shape page-id component-id update-node] (let [old-content (:content shape) @@ -328,37 +327,6 @@ (get-in state [:workspace-libraries file-id :data :components]))] (get components component-id))) -(defn resolve-shapes-and-components - "Get all shapes inside a component instance, and the component they are - linked with. If follow-indirection? is true, and the shape corresponding - to the root shape is also a component instance, follow the link and get - the final component." - [shape objects state follow-indirection?] - (loop [all-shapes (cph/get-object-with-children (:id shape) objects) - local-objects objects - local-shape shape] - - (let [root-shape (cph/get-root-shape local-shape local-objects) - component (get-component state - (get root-shape :component-file) - (get root-shape :component-id)) - component-shape (get-in component [:objects (:shape-ref local-shape)])] - - (if (or (nil? (:component-id component-shape)) - (not follow-indirection?)) - [all-shapes component component-shape] - (let [resolve-indirection - (fn [shape] - (let [component-shape (get-in component [:objects (:shape-ref shape)])] - (-> shape - (assoc :shape-ref (:shape-ref component-shape)) - (d/assoc-when :component-id (:component-id component-shape)) - (d/assoc-when :component-file (:component-file component-shape))))) - new-shapes (map resolve-indirection all-shapes)] - (recur new-shapes - (:objects component) - component-shape)))))) - (defn generate-sync-shape-and-children-components "Generate changes to synchronize one shape that the root of a component instance, and all its children, from the given component. @@ -367,25 +335,108 @@ be copied to this one. If reset? is true, all changed attributes will be copied and the 'touched' flags in the instance shape will be cleared." - [root-shape all-shapes component root-component page-id component-id reset?] - (loop [shapes (seq all-shapes) - rchanges [] - uchanges []] - (let [shape (first shapes)] - (if (nil? shape) + [page-id component-id shape-id local-file libraries reset?] + (let [container (cph/get-container page-id component-id local-file) + shape (cph/get-shape container shape-id) + component (cph/get-component (:component-id shape) + (:component-file shape) + local-file + libraries) + root-shape shape + root-component (cph/get-component-root component)] + + (generate-sync-shape-and-children-normal page-id + component-id + container + shape + component + root-shape + root-component + reset?))) + +(defn- generate-sync-shape-and-children-normal + [page-id component-id container shape component root-shape root-component reset?] + (let [[rchanges uchanges] + (generate-sync-shape<-component shape + root-shape + root-component + component + page-id + component-id + reset?) + + children-ids (get shape :shapes [])] + + (loop [children-ids (seq children-ids) + rchanges rchanges + uchanges uchanges] + (let [child-id (first children-ids)] + (if (nil? child-id) + [rchanges uchanges] + (let [child-shape (cph/get-shape container child-id) + + [child-rchanges child-uchanges] + (if (nil? (:component-id child-shape)) + (generate-sync-shape-and-children-normal page-id + component-id + container + child-shape + component + root-shape + root-component + reset?) + (generate-sync-shape-and-children-nested page-id + component-id + container + child-shape + component + root-shape + root-component + reset?))] + (recur (next children-ids) + (d/concat rchanges child-rchanges) + (d/concat uchanges child-uchanges)))))))) + +(defn- generate-sync-shape-and-children-nested + [page-id component-id container shape component root-shape root-component reset?] + (let [component-shape (d/seek #(= (:shape-ref %) + (:shape-ref shape)) + (vals (:objects component))) + [rchanges uchanges] - (let [[shape-rchanges shape-uchanges] - (generate-sync-shape<-component - shape - root-shape - root-component - component - page-id - component-id - reset?)] - (recur (next shapes) - (d/concat rchanges shape-rchanges) - (d/concat uchanges shape-uchanges))))))) + (update-attrs shape + component-shape + root-shape + root-component + page-id + component-id + {:omit-touched? false + :reset-touched? false + :set-touched? false + :copy-touched? true}) + + children-ids (get shape :shapes [])] + + (loop [children-ids (seq children-ids) + rchanges rchanges + uchanges uchanges] + (let [child-id (first children-ids)] + (if (nil? child-id) + [rchanges uchanges] + (let [child-shape (cph/get-shape container child-id) + + [child-rchanges child-uchanges] + (generate-sync-shape-and-children-nested page-id + component-id + container + child-shape + component + root-shape + root-component + reset?)] + (recur (next children-ids) + (d/concat rchanges child-rchanges) + (d/concat uchanges child-uchanges)))))))) (defn- generate-sync-shape-inverse "Generate changes to update the component a shape is linked to, from @@ -395,23 +446,94 @@ shapes. And if the component shapes are, in turn, instances of a second component, their 'touched' flags will be set accordingly." - [root-shape all-shapes component root-component page-id] - (loop [shapes (seq all-shapes) - rchanges [] - uchanges []] - (let [shape (first shapes)] - (if (nil? shape) + [page-id shape-id local-file libraries] + (let [page (cph/get-container page-id nil local-file) + shape (cph/get-shape page shape-id) + component (cph/get-component (:component-id shape) + (:component-file shape) + local-file + libraries) + root-shape shape + root-component (cph/get-component-root component)] + + (generate-sync-shape-inverse-normal page + shape + component + root-shape + root-component))) + +(defn- generate-sync-shape-inverse-normal + [page shape component root-shape root-component] + (let [[rchanges uchanges] + (generate-sync-shape->component shape + root-shape + root-component + component + (:id page)) + + children-ids (get shape :shapes [])] + + (loop [children-ids (seq children-ids) + rchanges rchanges + uchanges uchanges] + (let [child-id (first children-ids)] + (if (nil? child-id) + [rchanges uchanges] + (let [child-shape (cph/get-shape page child-id) + + [child-rchanges child-uchanges] + (if (nil? (:component-id child-shape)) + (generate-sync-shape-inverse-normal page + child-shape + component + root-shape + root-component) + (generate-sync-shape-inverse-nested page + child-shape + component + root-shape + root-component))] + (recur (next children-ids) + (d/concat rchanges child-rchanges) + (d/concat uchanges child-uchanges)))))))) + +(defn- generate-sync-shape-inverse-nested + [page shape component root-shape root-component] + (let [component-shape (d/seek #(= (:shape-ref %) + (:shape-ref shape)) + (vals (:objects component))) + [rchanges uchanges] - (let [[shape-rchanges shape-uchanges] - (generate-sync-shape->component - shape - root-shape - root-component - component - page-id)] - (recur (next shapes) - (d/concat rchanges shape-rchanges) - (d/concat uchanges shape-uchanges))))))) + (update-attrs component-shape + shape + root-component + root-shape + nil + (:id component) + {:omit-touched? false + :reset-touched? false + :set-touched? false + :copy-touched? true}) + + children-ids (get shape :shapes [])] + + (loop [children-ids (seq children-ids) + rchanges rchanges + uchanges uchanges] + (let [child-id (first children-ids)] + (if (nil? child-id) + [rchanges uchanges] + (let [child-shape (cph/get-shape page child-id) + + [child-rchanges child-uchanges] + (generate-sync-shape-inverse-nested page + child-shape + component + root-shape + root-component)] + (recur (next children-ids) + (d/concat rchanges child-rchanges) + (d/concat uchanges child-uchanges)))))))) (defn- generate-sync-shape<-component "Generate changes to synchronize one shape that is linked to other shape @@ -552,13 +674,17 @@ If set-touched? is true, the corresponding 'touched' flags will be set in dest shape if they are different than their current values." [dest-shape origin-shape dest-root origin-root page-id component-id - {:keys [omit-touched? reset-touched? set-touched?] :as options}] + {:keys [omit-touched? reset-touched? set-touched? copy-touched?] + :as options :or {omit-touched? false + reset-touched? false + set-touched? false + copy-touched? false}}] ;; === Uncomment this to debug synchronization === ;; (println "SYNC" - ;; "[C]" (:name origin-shape) + ;; (:name origin-shape) ;; "->" - ;; (if page-id "[W]" ["C"]) + ;; (if page-id "[W]" "[C]") ;; (:name dest-shape) ;; (str options)) @@ -582,16 +708,24 @@ (let [attr (first attrs)] (if (nil? attr) - (let [roperations (if reset-touched? + (let [roperations (cond + reset-touched? (conj roperations {:type :set-touched :touched nil}) + copy-touched? + (conj roperations + {:type :set-touched + :touched (:touched origin-shape)}) + :else roperations) - uoperations (if reset-touched? + uoperations (cond + (or reset-touched? copy-touched?) (conj uoperations {:type :set-touched :touched (:touched dest-shape)}) + :else uoperations) rchanges [(d/without-nils {:type :mod-obj diff --git a/frontend/src/app/main/store.cljs b/frontend/src/app/main/store.cljs index 5814c4a5d9..28936dd5f7 100644 --- a/frontend/src/app/main/store.cljs +++ b/frontend/src/app/main/store.cljs @@ -85,8 +85,9 @@ (logjs "state"))))) (defn ^:export dump-tree - ([] (dump-tree false)) - ([show-touched] + ([] (dump-tree false false)) + ([show-ids] (dump-tree show-ids false)) + ([show-ids show-touched] (let [page-id (get @state :current-page-id) objects (get-in @state [:workspace-data :pages-index page-id :objects]) components (get-in @state [:workspace-data :components]) @@ -98,6 +99,7 @@ (println (str/pad (str (str/repeat " " level) (:name shape) (when (seq (:touched shape)) "*") + (when show-ids (str/format " <%s>" (:id shape)))) {:length 20 :type :right}) (show-component shape objects)) @@ -107,7 +109,7 @@ (str (:touched shape))))) (when (:shapes shape) (dorun (for [shape-id (:shapes shape)] - (show-shape shape-id (inc level) objects))))))) + (show-shape shape-id (inc level) objects)))))) (show-component [shape objects] (if (nil? (:shape-ref shape)) @@ -129,7 +131,8 @@ (when component-file (str/format "<%s> " (:name component-file))) (:name component-shape) (if (or (:component-root? shape) - (nil? (:component-id shape))) + (nil? (:component-id shape)) + true) "" (let [component-id (:component-id shape) component-file-id (:component-file shape) From 8afe037def07a1ec295bfebbd1f1061b52653dae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Wed, 28 Oct 2020 15:13:18 +0100 Subject: [PATCH 05/48] :books: Add logger comments to component synchronization --- .../app/main/data/workspace/libraries.cljs | 19 ++++--- .../data/workspace/libraries_helpers.cljs | 53 +++++++++++++------ 2 files changed, 48 insertions(+), 24 deletions(-) diff --git a/frontend/src/app/main/data/workspace/libraries.cljs b/frontend/src/app/main/data/workspace/libraries.cljs index e0f03ff49d..a20a6bb7ff 100644 --- a/frontend/src/app/main/data/workspace/libraries.cljs +++ b/frontend/src/app/main/data/workspace/libraries.cljs @@ -27,10 +27,13 @@ [app.util.i18n :refer [tr]] [app.util.router :as rt] [app.util.time :as dt] + [app.util.logging :as log] [beicon.core :as rx] [cljs.spec.alpha :as s] [potok.core :as ptk])) +(log/set-level! :warn) + (declare sync-file) (defn default-color-name [color] @@ -438,7 +441,7 @@ ptk/WatchEvent (watch [_ state stream] ;; ===== Uncomment this to debug ===== - ;; (js/console.info "##### RESET-COMPONENT of shape" (str id)) + (log/info :msg "RESET-COMPONENT of shape" :id (str id)) (let [[rchanges uchanges] (dwlh/generate-sync-shape-and-children-components (get state :current-page-id) nil @@ -447,7 +450,7 @@ (get state :workspace-libraries) true)] ;; ===== Uncomment this to debug ===== - ;; (js/console.debug "rchanges" (clj->js rchanges)) + (log/debug :msg "RESET-COMPONENT finished" :js/rchanges rchanges) (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true})))))) @@ -461,7 +464,7 @@ ptk/WatchEvent (watch [_ state stream] ;; ===== Uncomment this to debug ===== - ;; (js/console.info "##### UPDATE-COMPONENT of shape" (str id)) + (log/info :msg "UPDATE-COMPONENT of shape" :id (str id)) (let [page-id (:current-page-id state) objects (dwc/lookup-page-objects state page-id) shape (get objects id) @@ -474,7 +477,7 @@ (get state :workspace-libraries))] ;; ===== Uncomment this to debug ===== - ;; (js/console.debug "rchanges" (clj->js rchanges)) + (log/debug :msg "UPDATE-COMPONENT finished" :js/rchanges rchanges) (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true})))))) @@ -497,7 +500,7 @@ ptk/WatchEvent (watch [_ state stream] ;; ===== Uncomment this to debug ===== - (js/console.info "##### SYNC-FILE" (str (or file-id "local"))) + (log/info :msg "SYNC-FILE" :file (str (or file-id "local"))) (let [library-changes [(dwlh/generate-sync-library :components file-id state) (dwlh/generate-sync-library :colors file-id state) (dwlh/generate-sync-library :typographies file-id state)] @@ -511,7 +514,7 @@ (->> library-changes (remove nil?) (map second) (flatten)) (->> file-changes (remove nil?) (map second) (flatten)))] ;; ===== Uncomment this to debug ===== - ;; (js/console.debug "rchanges" (clj->js rchanges)) + (log/debug :msg "SYNC-FILE finished" :js/rchanges rchanges) (rx/concat (rx/of (dm/hide-tag :sync-dialog)) (when rchanges @@ -538,14 +541,14 @@ ptk/WatchEvent (watch [_ state stream] ;; ===== Uncomment this to debug ===== - (js/console.info "##### SYNC-FILE" (str (or file-id "local")) "(2nd stage)") + (log/info :msg "SYNC-FILE (2nd stage)" :file (str (or file-id "local"))) (let [[rchanges1 uchanges1] (dwlh/generate-sync-file :components nil state) [rchanges2 uchanges2] (dwlh/generate-sync-library :components file-id state) rchanges (d/concat rchanges1 rchanges2) uchanges (d/concat uchanges1 uchanges2)] (when rchanges ;; ===== Uncomment this to debug ===== - ;; (js/console.debug "rchanges" (clj->js rchanges)) + (log/debug :msg "SYNC-FILE (2nd stage) finished" :js/rchanges rchanges) (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true}))))))) (def ignore-sync diff --git a/frontend/src/app/main/data/workspace/libraries_helpers.cljs b/frontend/src/app/main/data/workspace/libraries_helpers.cljs index c1b57cf950..92df54412e 100644 --- a/frontend/src/app/main/data/workspace/libraries_helpers.cljs +++ b/frontend/src/app/main/data/workspace/libraries_helpers.cljs @@ -15,8 +15,11 @@ [app.common.pages-helpers :as cph] [app.common.geom.point :as gpt] [app.common.pages :as cp] + [app.util.logging :as log] [app.util.text :as ut])) +(log/set-level! :warn) + (defonce empty-changes [[] []]) (defonce color-sync-attrs @@ -97,10 +100,13 @@ "Generate changes to synchronize all shapes in all pages of the current file, with the given asset of the given library." [asset-type library-id state] - (s/assert #{:colors :components :typographies} asset-type) (s/assert (s/nilable ::us/uuid) library-id) + (log/info :msg "Sync local file with library" + :asset-type asset-type + :library (str (or library-id "local"))) + (let [library-items (if (nil? library-id) (get-in state [:workspace-data asset-type]) @@ -129,7 +135,11 @@ "Generate changes to synchronize all shapes inside components of the current file library, that use the given type of asset of the given library." [asset-type library-id state] - ;; (js/console.info "--- SYNC local library " (str asset-type) " from library " (str (or library-id "nil"))) + + (log/info :msg "Sync local components with library" + :asset-type asset-type + :library (str (or library-id "local"))) + (let [library-items (if (nil? library-id) (get-in state [:workspace-data asset-type]) @@ -157,6 +167,11 @@ "Generate changes to synchronize all shapes in a particular container (a page or a component) that are linked to the given library." [asset-type library-id state container page-id component-id] + + (if page-id + (log/debug :msg "Sync page in local file" :page-id page-id) + (log/debug :msg "Sync component in local library" :component-id component-id)) + (let [has-asset-reference? (has-asset-reference-fn asset-type library-id) linked-shapes (cph/select-objects has-asset-reference? container)] (loop [shapes (seq linked-shapes) @@ -336,6 +351,7 @@ If reset? is true, all changed attributes will be copied and the 'touched' flags in the instance shape will be cleared." [page-id component-id shape-id local-file libraries reset?] + (log/debug :msg "Sync shape and children" :shape (str shape-id) :reset? reset?) (let [container (cph/get-container page-id component-id local-file) shape (cph/get-shape container shape-id) component (cph/get-component (:component-id shape) @@ -356,6 +372,9 @@ (defn- generate-sync-shape-and-children-normal [page-id component-id container shape component root-shape root-component reset?] + (log/trace :msg "Sync shape (normal)" + :shape (str (:name shape)) + :component (:name component)) (let [[rchanges uchanges] (generate-sync-shape<-component shape root-shape @@ -399,6 +418,9 @@ (defn- generate-sync-shape-and-children-nested [page-id component-id container shape component root-shape root-component reset?] + (log/trace :msg "Sync shape (nested)" + :shape (str (:name shape)) + :component (:name component)) (let [component-shape (d/seek #(= (:shape-ref %) (:shape-ref shape)) (vals (:objects component))) @@ -447,6 +469,7 @@ And if the component shapes are, in turn, instances of a second component, their 'touched' flags will be set accordingly." [page-id shape-id local-file libraries] + (log/debug :msg "Sync inverse shape and children" :shape (str shape-id)) (let [page (cph/get-container page-id nil local-file) shape (cph/get-shape page shape-id) component (cph/get-component (:component-id shape) @@ -464,6 +487,9 @@ (defn- generate-sync-shape-inverse-normal [page shape component root-shape root-component] + (log/trace :msg "Sync shape inverse (normal)" + :shape (str (:name shape)) + :component (:name component)) (let [[rchanges uchanges] (generate-sync-shape->component shape root-shape @@ -499,6 +525,9 @@ (defn- generate-sync-shape-inverse-nested [page shape component root-shape root-component] + (log/trace :msg "Sync shape inverse (nested)" + :shape (str (:name shape)) + :component (:name component)) (let [component-shape (d/seek #(= (:shape-ref %) (:shape-ref shape)) (vals (:objects component))) @@ -558,18 +587,12 @@ "Generate changes to synchronize one shape inside a component, with other shape that is linked to it." [shape root-shape root-component component page-id] - ;; ===== Uncomment this to debug ===== - ;; (js/console.log "component" (clj->js component)) (if (nil? component) empty-changes (let [component-shape (get (:objects component) (:shape-ref shape))] - ;; ===== Uncomment this to debug ===== - ;; (js/console.log "component-shape" (clj->js component-shape)) (if (nil? component-shape) empty-changes - (let [;; ===== Uncomment this to debug ===== - ;; _(js/console.info "update" (:name shape) "->" (:name component-shape)) - [rchanges1 uchanges1] + (let [[rchanges1 uchanges1] (update-attrs component-shape shape root-component @@ -680,13 +703,11 @@ set-touched? false copy-touched? false}}] - ;; === Uncomment this to debug synchronization === - ;; (println "SYNC" - ;; (:name origin-shape) - ;; "->" - ;; (if page-id "[W]" "[C]") - ;; (:name dest-shape) - ;; (str options)) + (log/info :msg (str "SYNC " + (:name origin-shape) + " -> " + (if page-id "[W] " "[C] ") + (:name dest-shape))) (let [; The position attributes need a special sync algorith, because we do ; not synchronize the absolute position, but the position relative of From 03c8b422965c1a0ac855867363f615714a965557 Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Thu, 29 Oct 2020 11:53:28 +0100 Subject: [PATCH 06/48] :sparkles: Adjustments to measurement guides --- common/app/common/geom/shapes.cljc | 9 ++ .../ui/viewer/handoff/selection_feedback.cljs | 115 +++++++++++------- 2 files changed, 83 insertions(+), 41 deletions(-) diff --git a/common/app/common/geom/shapes.cljc b/common/app/common/geom/shapes.cljc index ed053344f3..b191ed5bf9 100644 --- a/common/app/common/geom/shapes.cljc +++ b/common/app/common/geom/shapes.cljc @@ -542,6 +542,14 @@ (< ry1 sy2) (> ry2 sy1)))) +(defn fully-contained? + "Checks if one rect is fully inside the other" + [rect other] + (and (<= (:x1 rect) (:x1 other)) + (>= (:x2 rect) (:x2 other)) + (<= (:y1 rect) (:y1 other)) + (>= (:y2 rect) (:y2 other)))) + (defn has-point? [shape position] (let [{:keys [x y]} position @@ -956,3 +964,4 @@ :width width :height height :x1 x :y1 y :x2 (+ x width) :y2 (+ y height)}))) + diff --git a/frontend/src/app/main/ui/viewer/handoff/selection_feedback.cljs b/frontend/src/app/main/ui/viewer/handoff/selection_feedback.cljs index 016c218923..116ea6da57 100644 --- a/frontend/src/app/main/ui/viewer/handoff/selection_feedback.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/selection_feedback.cljs @@ -177,54 +177,87 @@ :font-size (/ font-size zoom)}} size-label]])) - -(mf/defc distance-display [{:keys [type from to zoom]}] - (let [h-lines (let [y (+ (:y from) (/ (:height from) 2))] - (->> (calculate-distance-lines (:x1 from) (:x2 from) (:x1 to) (:x2 to)) - (map (fn [[start end]] [start y end y])))) - - v-lines (let [x (+ (:x from) (/ (:width from) 2))] - (->> (calculate-distance-lines (:y1 from) (:y2 from) (:y1 to) (:y2 to)) - (map (fn [[start end]] [x start x end])))) - - lines (d/concat [] v-lines h-lines) - - distance-pill-width (/ distance-pill-width zoom) +(mf/defc distance-display-pill [{:keys [x y zoom distance frame]}] + (let [distance-pill-width (/ distance-pill-width zoom) distance-pill-height (/ distance-pill-height zoom) distance-line-stroke (/ distance-line-stroke zoom) font-size (/ font-size zoom) text-padding (/ 3 zoom) - distance-border-radius (/ distance-border-radius zoom)] + distance-border-radius (/ distance-border-radius zoom) + + {frame-width :width frame-height :height} frame + + rect-x (- x (/ distance-pill-width 2)) + rect-y (- y (/ distance-pill-height 2)) + + text-x x + text-y (+ y text-padding) + + offset-x (cond (< rect-x 0) (- rect-x) + (> (+ rect-x distance-pill-width) frame-width) (- frame-width (+ rect-x distance-pill-width)) + :else 0) + + offset-y (cond (< rect-y 0) (- rect-y) + (> (+ rect-y distance-pill-height) frame-height) (- frame-height (+ rect-y distance-pill-height)) + :else 0) + + ] + [:g.distance-pill + [:rect {:x (+ rect-x offset-x) + :y (+ rect-y offset-y) + :rx distance-border-radius + :ry distance-border-radius + :width distance-pill-width + :height distance-pill-height + :style {:fill distance-color}}] + + [:text {:x (+ text-x offset-x) + :y (+ text-y offset-y) + :rx distance-border-radius + :ry distance-border-radius + :text-anchor "middle" + :width distance-pill-width + :height distance-pill-height + :style {:fill distance-text-color + :font-size font-size}} + distance]]) + ) + +(mf/defc distance-display [{:keys [type from to zoom frame]}] + (let [fixed-x (if (gsh/fully-contained? from to) + (+ (:x to) (/ (:width to) 2)) + (+ (:x from) (/ (:width from) 2))) + fixed-y (if (gsh/fully-contained? from to) + (+ (:y to) (/ (:height to) 2)) + (+ (:y from) (/ (:height from) 2))) + + v-lines (->> (calculate-distance-lines (:y1 from) (:y2 from) (:y1 to) (:y2 to)) + (map (fn [[start end]] [fixed-x start fixed-x end]))) + + h-lines (->> (calculate-distance-lines (:x1 from) (:x2 from) (:x1 to) (:x2 to)) + (map (fn [[start end]] [start fixed-y end fixed-y]))) + + lines (d/concat [] v-lines h-lines)] (for [[x1 y1 x2 y2] lines] (let [center-x (+ x1 (/ (- x2 x1) 2)) - center-y (+ y1 (/ (- y2 y1) 2))] + center-y (+ y1 (/ (- y2 y1) 2)) + distance (gpt/distance (gpt/point x1 y1) (gpt/point x2 y2))] [:g.distance-line {:key (str "line-%s-%s-%s-%s" x1 y1 x2 y2)} - [:line {:x1 x1 - :y1 y1 - :x2 x2 - :y2 y2 - :style {:stroke distance-color - :stroke-width distance-line-stroke}}] - [:rect {:x (- center-x (/ distance-pill-width 2)) - :y (- center-y (/ distance-pill-height 2)) - :rx distance-border-radius - :ry distance-border-radius - :width distance-pill-width - :height distance-pill-height - :style {:fill distance-color}}] + [:line + {:x1 x1 + :y1 y1 + :x2 x2 + :y2 y2 + :style {:stroke distance-color + :stroke-width distance-line-stroke}}] - [:text {:x center-x - :y (+ center-y text-padding) - :rx distance-border-radius - :ry distance-border-radius - :text-anchor "middle" - :width distance-pill-width - :height distance-pill-height - :style {:fill distance-text-color - :font-size font-size}} - (str (mth/round - (gpt/distance (gpt/point x1 y1) (gpt/point x2 y2))) "px")]])))) + [:& distance-display-pill + {:x center-x + :y center-y + :zoom zoom + :distance (str (mth/round distance) "px") + :frame frame}]])))) (mf/defc selection-feedback [{:keys [frame]}] (let [zoom (mf/deref selected-zoom) @@ -246,11 +279,11 @@ (if (and (not-empty selected-shapes) (not hover-shape)) [:g.hover-shapes - [:& distance-display {:from (frame->selrect frame) :to selrect :zoom zoom}]] + [:& distance-display {:from (frame->selrect frame) :to selrect :zoom zoom :frame frame}]] (let [hover-selrect (-> hover-shape (gsh/translate-to-frame frame) :selrect)] [:g.hover-shapes [:& selection-rect {:type :hover :selrect hover-selrect :zoom zoom}] [:& size-display {:selrect hover-selrect :zoom zoom}] - [:& distance-display {:from hover-selrect :to selrect :zoom zoom}]]))]))) + [:& distance-display {:from hover-selrect :to selrect :zoom zoom :frame frame}]]))]))) From 8165fec50ed45942fff59f73f01056e925516a1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Thu, 29 Oct 2020 16:11:20 +0100 Subject: [PATCH 07/48] :tada: Allow to duplicate a component --- frontend/resources/locales.json | 8 ++++++ .../app/main/data/workspace/libraries.cljs | 27 +++++++++++++++++++ .../data/workspace/libraries_helpers.cljs | 10 +++++++ .../app/main/ui/workspace/sidebar/assets.cljs | 8 +++++- 4 files changed, 52 insertions(+), 1 deletion(-) diff --git a/frontend/resources/locales.json b/frontend/resources/locales.json index 22187701ba..8a849f409d 100644 --- a/frontend/resources/locales.json +++ b/frontend/resources/locales.json @@ -2118,6 +2118,14 @@ "es" : "Borrar" } }, + "workspace.assets.duplicate" : { + "translations" : { + "en" : "Duplicate", + "fr" : "", + "ru" : "", + "es" : "Duplicar" + } + }, "workspace.assets.edit" : { "used-in" : [ "src/app/main/ui/workspace/sidebar/assets.cljs:305", "src/app/main/ui/workspace/sidebar/assets.cljs:433" ], "translations" : { diff --git a/frontend/src/app/main/data/workspace/libraries.cljs b/frontend/src/app/main/data/workspace/libraries.cljs index a20a6bb7ff..51c4fc3a90 100644 --- a/frontend/src/app/main/data/workspace/libraries.cljs +++ b/frontend/src/app/main/data/workspace/libraries.cljs @@ -253,6 +253,33 @@ (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true}) (dws/select-shapes (d/ordered-set (:id group)))))))))) +(defn duplicate-component + "Create a new component copied from the one with the given id." + [{:keys [id] :as params}] + (ptk/reify ::duplicate-component + ptk/WatchEvent + (watch [_ state stream] + (let [component (cph/get-component id + nil + (get state :workspace-data) + nil) + all-components (vals (get-in state [:workspace-data :components])) + unames (set (map :name all-components)) + new-name (dwc/generate-unique-name unames (:name component)) + + [new-shape new-shapes updated-shapes] + (dwlh/duplicate-component component) + + rchanges [{:type :add-component + :id (:id new-shape) + :name new-name + :shapes new-shapes}] + + uchanges [{:type :del-component + :id (:id new-shape)}]] + + (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true})))))) + (defn delete-component "Delete the component with the given id, from the current file library." [{:keys [id] :as params}] diff --git a/frontend/src/app/main/data/workspace/libraries_helpers.cljs b/frontend/src/app/main/data/workspace/libraries_helpers.cljs index 92df54412e..05665e2126 100644 --- a/frontend/src/app/main/data/workspace/libraries_helpers.cljs +++ b/frontend/src/app/main/data/workspace/libraries_helpers.cljs @@ -93,6 +93,16 @@ (cph/clone-object shape nil objects update-new-shape update-original-shape))) +(defn duplicate-component + "Clone the root shape of the component and all children. Generate new + ids from all of them." + [component] + (let [component-root (cph/get-component-root component)] + (cph/clone-object component-root + nil + (get component :objects) + identity))) + ;; ---- General library synchronization functions ---- diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs index 4cf2d11533..92f6310f85 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs @@ -51,6 +51,11 @@ :top nil :left nil :component-id nil}) + on-duplicate + (mf/use-callback + (mf/deps state) + (st/emitf (dwl/duplicate-component {:id (:component-id @state)}))) + on-delete (mf/use-callback (mf/deps state) @@ -101,7 +106,8 @@ :on-close #(swap! state assoc :menu-open false) :top (:top @state) :left (:left @state) - :options [[(tr "workspace.assets.delete") on-delete]]}])])) + :options [[(tr "workspace.assets.duplicate") on-duplicate] + [(tr "workspace.assets.delete") on-delete]]}])])) (mf/defc graphics-box [{:keys [file-id local? objects open? on-open on-close] :as props}] From 486f2b6ba509413d66658a705ad2677fc7fd3898 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Fri, 30 Oct 2020 09:42:06 +0100 Subject: [PATCH 08/48] :sparkles: Allow create nested component directly --- frontend/src/app/main/ui/workspace/context_menu.cljs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/main/ui/workspace/context_menu.cljs b/frontend/src/app/main/ui/workspace/context_menu.cljs index 00043faea3..e4ebff1744 100644 --- a/frontend/src/app/main/ui/workspace/context_menu.cljs +++ b/frontend/src/app/main/ui/workspace/context_menu.cljs @@ -139,14 +139,16 @@ [:& menu-entry {:title (t locale "workspace.shape.menu.lock") :on-click do-lock-shape}]) - (when (nil? (:shape-ref shape)) + (when (or (nil? (:shape-ref shape)) + (> (count selected) 1)) [:* [:& menu-separator] [:& menu-entry {:title (t locale "workspace.shape.menu.create-component") :shortcut "Ctrl + K" :on-click do-add-component}]]) - (when (:component-id shape) + (when (and (:component-id shape) + (= (count selected) 1)) [:* [:& menu-separator] [:& menu-entry {:title (t locale "workspace.shape.menu.detach-instance") From 5d6b07f2a72d48fca9bd48f9aca7ca05ca6c8d5d Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Thu, 29 Oct 2020 14:16:57 +0100 Subject: [PATCH 09/48] :sparkles: Adds highlightjs dependency. --- frontend/package.json | 1 + .../dependencies/highlightjs-theme.scss | 81 +++++++++++++ frontend/resources/styles/main-default.scss | 1 + .../styles/main/partials/handoff.scss | 106 ++++++++++++++---- .../main/ui/viewer/handoff/attributes.cljs | 22 +++- .../src/app/main/ui/viewer/handoff/code.cljs | 80 +++++++++++++ .../main/ui/viewer/handoff/right_sidebar.cljs | 33 ++---- frontend/yarn.lock | 5 + 8 files changed, 274 insertions(+), 55 deletions(-) create mode 100644 frontend/resources/styles/common/dependencies/highlightjs-theme.scss create mode 100644 frontend/src/app/main/ui/viewer/handoff/code.cljs diff --git a/frontend/package.json b/frontend/package.json index 1cb1fcb125..1b4f1b4754 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -29,6 +29,7 @@ }, "dependencies": { "date-fns": "^2.15.0", + "highlight.js": "^10.3.1", "map-stream": "0.0.7", "mousetrap": "^1.6.5", "randomcolor": "^0.6.2", diff --git a/frontend/resources/styles/common/dependencies/highlightjs-theme.scss b/frontend/resources/styles/common/dependencies/highlightjs-theme.scss new file mode 100644 index 0000000000..ba9963ff5d --- /dev/null +++ b/frontend/resources/styles/common/dependencies/highlightjs-theme.scss @@ -0,0 +1,81 @@ +/* +Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/ +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #23241f; +} + +.hljs, +.hljs-tag, +.hljs-subst { + color: #f8f8f2; +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-link { + color: #ae81ff; +} + +.hljs-code, +.hljs-title, +.hljs-section, +.hljs-selector-class { + color: #a6e22e; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-name, +.hljs-attr { + color: #f92672; +} + +.hljs-symbol, +.hljs-attribute { + color: #66d9ef; +} + +.hljs-params, +.hljs-class .hljs-title { + color: #f8f8f2; +} + +.hljs-string, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-variable { + color: #e6db74; +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #75715e; +} diff --git a/frontend/resources/styles/main-default.scss b/frontend/resources/styles/main-default.scss index a438f64642..b8860a4b43 100644 --- a/frontend/resources/styles/main-default.scss +++ b/frontend/resources/styles/main-default.scss @@ -19,6 +19,7 @@ @import 'common/dependencies/reset'; @import 'common/dependencies/animations'; @import 'common/dependencies/z-index'; +@import 'common/dependencies/highlightjs-theme'; //################################################# // Layouts diff --git a/frontend/resources/styles/main/partials/handoff.scss b/frontend/resources/styles/main/partials/handoff.scss index 0141180fc8..899dd818bd 100644 --- a/frontend/resources/styles/main/partials/handoff.scss +++ b/frontend/resources/styles/main/partials/handoff.scss @@ -15,6 +15,30 @@ justify-content: center; } +.attributes-copy-button { + visibility: hidden; + opacity: 0; + transition: opacity 0.3s; + position: absolute; + right: 0; + top: 0; + background: none; + border: none; + padding: 0; + cursor: pointer; + + svg { + width: 16px; + height: 16px; + fill: $color-gray-20; + transition: fill 0.3s; + + &:hover { + fill: $color-primary; + } + } +} + .attributes-block { user-select: text; @@ -30,30 +54,6 @@ border-bottom: none; } - .attributes-copy-button { - visibility: hidden; - opacity: 0; - transition: opacity 0.3s; - position: absolute; - right: 0; - top: 0; - background: none; - border: none; - padding: 0; - cursor: pointer; - - svg { - width: 16px; - height: 16px; - fill: $color-gray-20; - transition: fill 0.3s; - - &:hover { - fill: $color-primary; - } - } - } - .attributes-label { color: $color-gray-20; } @@ -263,3 +263,61 @@ border-top: none; } } + + +.code-block { + .code-row-lang { + position: relative; + display: flex; + flex-direction: row; + margin: 0.5rem; + + &:hover .attributes-copy-button { + visibility: visible; + opacity: 1; + } + + .code-selection { + height: 100%; + margin: 0; + padding: 0.5rem; + width: 4.5rem; + font-size: $fs12; + background: $color-gray-50; + color: $color-gray-10; + border-radius: 2px; + border: 1px solid $color-gray-30; + background-image: url("/images/icons/arrow-down-white.svg"); + background-repeat: no-repeat; + background-position: 90% 48%; + background-size: 8px; + } + .attributes-copy-button { + margin-top: 8px; + } + } + + .code-row-display { + margin: 0.5rem; + font-size: $fs12; + + .code-display { + border-radius: 4px; + padding: 1rem; + overflow: hidden; + white-space: pre-wrap; + background: $color-gray-60; + + .hljs-attr { + color: #a6e22e; + } + .hljs-comment { + color: $color-gray-30; + } + .hljs-string { + color: #66d9ef; + } + } + } + +} diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes.cljs index 2863ced879..fe7658f8f2 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes.cljs @@ -20,13 +20,23 @@ [app.main.ui.viewer.handoff.attributes.image :refer [image-panel]] [app.main.ui.viewer.handoff.attributes.text :refer [text-panel]])) -(mf/defc attributes - [{:keys [shapes frame options]}] - (let [locale (mf/deref i18n/locale) - shapes (->> shapes - (map #(gsh/translate-to-frame % frame))) +(def type->options + {:multiple [:fill :stroke :image :text :shadow :blur] + :frame [:layout :fill] + :group [:layout] + :rect [:layout :fill :stroke :shadow :blur] + :circle [:layout :fill :stroke :shadow :blur] + :path [:layout :fill :stroke :shadow :blur] + :curve [:layout :fill :stroke :shadow :blur] + :image [:image :layout :shadow :blur] + :text [:layout :text :shadow :blur]}) - shape (first shapes)] +(mf/defc attributes + [{:keys [shapes frame]}] + (let [locale (mf/deref i18n/locale) + shapes (->> shapes (map #(gsh/translate-to-frame % frame))) + type (if (= (count shapes) 1) (-> shapes first :type) :multiple) + options (type->options type)] [:div.element-options (for [option options] [:> (case option diff --git a/frontend/src/app/main/ui/viewer/handoff/code.cljs b/frontend/src/app/main/ui/viewer/handoff/code.cljs new file mode 100644 index 0000000000..22a2d5577d --- /dev/null +++ b/frontend/src/app/main/ui/viewer/handoff/code.cljs @@ -0,0 +1,80 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; This Source Code Form is "Incompatible With Secondary Licenses", as +;; defined by the Mozilla Public License, v. 2.0. +;; +;; Copyright (c) 2020 UXBOX Labs SL + +(ns app.main.ui.viewer.handoff.code + (:require + ["highlight.js" :as hljs] + [rumext.alpha :as mf] + [app.util.i18n :as i18n] + [app.main.ui.icons :as i] + [app.common.geom.shapes :as gsh])) + +(def css-example + "/* text layer name */ +.shape { + width: 142px; + height: 40px; + border-radius: 20px; + background-color: var(--tiffany-blue); +}") + +(def svg-example + " + + +") + +(mf/defc code-block [{:keys [code type]}] + (let [block-ref (mf/use-ref)] + (mf/use-effect + (mf/deps block-ref) + (fn [] + (hljs/highlightBlock (mf/ref-val block-ref)))) + [:pre.code-display {:class type + :ref block-ref} code])) + +(mf/defc code + [{:keys [shapes frame]}] + (let [locale (mf/deref i18n/locale) + shapes (->> shapes + (map #(gsh/translate-to-frame % frame)))] + [:div.element-options + [:div.code-block + [:div.code-row-lang + [:select.code-selection + [:option "CSS"] + [:option "SASS"] + [:option "Less"] + [:option "Stylus"]] + + [:button.attributes-copy-button + {:on-click #(prn "??")} + i/copy]] + + [:div.code-row-display + [:& code-block {:type "css" + :code css-example}]]] + + [:div.code-block + [:div.code-row-lang + [:select.code-selection + [:option "SVG"] + [:option "HTML"]] + + [:button.attributes-copy-button + {:on-click #(prn "??")} + i/copy]] + + [:div.code-row-display + [:& code-block {:type "svg" + :code svg-example}]]] + + ])) + diff --git a/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs b/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs index 3a97ff6b2f..1fbb6e1cb7 100644 --- a/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs @@ -15,8 +15,9 @@ [app.main.store :as st] [app.main.ui.icons :as i] [app.main.ui.components.tab-container :refer [tab-container tab-element]] + [app.main.ui.workspace.sidebar.layers :refer [element-icon]] [app.main.ui.viewer.handoff.attributes :refer [attributes]] - [app.main.ui.workspace.sidebar.layers :refer [element-icon]])) + [app.main.ui.viewer.handoff.code :refer [code]])) (defn make-selected-shapes-iref [] @@ -28,28 +29,9 @@ (mapv resolve-shape selected)))] #(l/derived selected->shapes st/state))) -(mf/defc attributes-panel [{:keys [frame shapes]}] - (let [type (if (= (count shapes) 1) - (-> shapes first :type) - :multiple)] - (let [options (case type - :multiple [:fill :stroke :image :text :shadow :blur] - :frame [:layout :fill] - :group [:layout] - :rect [:layout :fill :stroke :shadow :blur] - :circle [:layout :fill :stroke :shadow :blur] - :path [:layout :fill :stroke :shadow :blur] - :curve [:layout :fill :stroke :shadow :blur] - :image [:image :layout :shadow :blur] - :text [:layout :text :shadow :blur])] - [:& attributes {:frame frame - :shapes shapes - :options options}]))) -(mf/defc code-panel [] - [:div.element-options]) - -(mf/defc right-sidebar [{:keys [frame]}] +(mf/defc right-sidebar + [{:keys [frame]}] (let [locale (mf/deref i18n/locale) section (mf/use-state :info #_:code) selected-ref (mf/use-memo (make-selected-shapes-iref)) @@ -72,8 +54,9 @@ [:& tab-container {:on-change-tab #(reset! section %) :selected @section} [:& tab-element {:id :info :title (t locale "handoff.tabs.info")} - [:& attributes-panel {:frame frame - :shapes shapes}]] + [:& attributes {:frame frame + :shapes shapes}]] [:& tab-element {:id :code :title (t locale "handoff.tabs.code")} - [:& code-panel]]]]])]])) + [:& code {:frame frame + :shapes shapes}]]]]])]])) diff --git a/frontend/yarn.lock b/frontend/yarn.lock index cfb999f660..4dabf371a7 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1931,6 +1931,11 @@ he@1.1.1: resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= +highlight.js@^10.3.1: + version "10.3.1" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.3.1.tgz#3ca6bf007377faae347e8135ff25900aac734b9a" + integrity sha512-jeW8rdPdhshYKObedYg5XGbpVgb1/DT4AHvDFXhkU7UnGSIjy9kkJ7zHG7qplhFHMitTSzh5/iClKQk3Kb2RFQ== + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" From 28f90da70ea00885b3366b41e03f61bae57e6b8f Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Thu, 29 Oct 2020 17:04:16 +0100 Subject: [PATCH 10/48] :sparkles: CSS code generation first draft --- frontend/resources/locales.json | 6 + .../styles/main/partials/handoff.scss | 10 +- frontend/src/app/main/ui/shapes/filters.cljs | 2 +- frontend/src/app/main/ui/shapes/shape.cljs | 38 +--- .../ui/viewer/handoff/attributes/common.cljs | 32 +--- .../ui/viewer/handoff/attributes/layout.cljs | 12 +- .../ui/viewer/handoff/attributes/shadow.cljs | 14 +- .../src/app/main/ui/viewer/handoff/code.cljs | 65 ++++--- .../main/ui/viewer/handoff/right_sidebar.cljs | 2 +- frontend/src/app/util/code_gen.cljs | 164 ++++++++++++++++++ 10 files changed, 237 insertions(+), 108 deletions(-) create mode 100644 frontend/src/app/util/code_gen.cljs diff --git a/frontend/resources/locales.json b/frontend/resources/locales.json index 8a849f409d..43cd97eee0 100644 --- a/frontend/resources/locales.json +++ b/frontend/resources/locales.json @@ -978,6 +978,12 @@ "en" : "Left" } }, + "handoff.attributes.layout.radius" : { + "used-in" : [ "src/app/main/ui/viewer/handoff/attributes/layout.cljs:60" ], + "translations" : { + "en" : "Radius" + } + }, "handoff.attributes.layout.rotation" : { "used-in" : [ "src/app/main/ui/viewer/handoff/attributes/layout.cljs:60" ], "translations" : { diff --git a/frontend/resources/styles/main/partials/handoff.scss b/frontend/resources/styles/main/partials/handoff.scss index 899dd818bd..70ba1be4e4 100644 --- a/frontend/resources/styles/main/partials/handoff.scss +++ b/frontend/resources/styles/main/partials/handoff.scss @@ -264,8 +264,10 @@ } } - .code-block { + margin-top: 0.5rem; + border-top: 1px solid $color-gray-60; + .code-row-lang { position: relative; display: flex; @@ -307,6 +309,7 @@ overflow: hidden; white-space: pre-wrap; background: $color-gray-60; + user-select: text; .hljs-attr { color: #a6e22e; @@ -319,5 +322,8 @@ } } } - +} + +.element-options :first-child { + border-top: none; } diff --git a/frontend/src/app/main/ui/shapes/filters.cljs b/frontend/src/app/main/ui/shapes/filters.cljs index 89a7374f3d..140b5fb570 100644 --- a/frontend/src/app/main/ui/shapes/filters.cljs +++ b/frontend/src/app/main/ui/shapes/filters.cljs @@ -97,7 +97,7 @@ (mf/defc layer-blur-filter [{:keys [filter-id params]}] - [:feGaussianBlur {:stdDeviation (/ (:value params) 2) + [:feGaussianBlur {:stdDeviation (:value params) :result filter-id}]) (mf/defc image-fix-filter [{:keys [filter-id]}] diff --git a/frontend/src/app/main/ui/shapes/shape.cljs b/frontend/src/app/main/ui/shapes/shape.cljs index 086f37bcb3..fd046afb1b 100644 --- a/frontend/src/app/main/ui/shapes/shape.cljs +++ b/frontend/src/app/main/ui/shapes/shape.cljs @@ -18,27 +18,6 @@ [app.main.ui.shapes.gradients :as grad] [app.main.ui.context :as muc])) -(mf/defc background-blur [{:keys [shape]}] - (when-let [background-blur-filters (->> shape :blur (remove #(= (:type %) :layer-blur)) (remove :hidden))] - (for [filter background-blur-filters] - [:* - - - [:foreignObject {:key (str "blur_" (:id filter)) - :pointerEvents "none" - :x (:x shape) - :y (:y shape) - :width (:width shape) - :height (:height shape) - :transform (geom/transform-matrix shape)} - [:style ""] - [:div.backround-blur - {:style {:width "100%" - :height "100%" - ;; :backdrop-filter (str/format "blur(%spx)" (:value filter)) - :filter (str/format "blur(4px") - }}]]]))) - (mf/defc shape-container {::mf/wrap-props false} [props] @@ -51,23 +30,12 @@ (obj/clone) (obj/without ["shape" "children"]) (obj/set! "className" "shape") - (obj/set! "data-type" (:type shape)) - (obj/set! "filter" (filters/filter-str filter-id shape))) - - ;;group-props (if (seq (:blur shape)) - ;; (obj/set! group-props "clip-path" (str/fmt "url(#%s)" (str "blur_" render-id))) - ;; group-props) - ] + (obj/set! "filter" (filters/filter-str filter-id shape)))] [:& (mf/provider muc/render-ctx) {:value render-id} [:> :g group-props [:defs [:& filters/filters {:shape shape :filter-id filter-id}] [:& grad/gradient {:shape shape :attr :fill-color-gradient}] - [:& grad/gradient {:shape shape :attr :stroke-color-gradient}] - - #_(when (:blur shape) - [:clipPath {:id (str "blur_" render-id)} - children])] - - [:& background-blur {:shape shape}] + [:& grad/gradient {:shape shape :attr :stroke-color-gradient}]] + children]])) diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/common.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/common.cljs index b7ccd21fbf..43972d2375 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/common.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/common.cljs @@ -16,38 +16,13 @@ [app.util.color :as uc] [app.common.math :as mth] [app.main.ui.icons :as i] + [app.util.code-gen :as code] [app.util.webapi :as wapi] [app.main.ui.components.color-bullet :refer [color-bullet color-name]])) -(defn copy-cb [values properties & {:keys [to-prop format] :or {to-prop {}}}] +(defn copy-cb [values properties & {:keys [to-prop format] :as params}] (fn [event] - (let [ - ;; We allow the :format and :to-prop to be a map for different properties - ;; or just a value for a single property. This code transform a single - ;; property to a uniform one - properties (if-not (coll? properties) [properties] properties) - - format (if (not (map? format)) - (into {} (map #(vector % format) properties)) - format) - - to-prop (if (not (map? to-prop)) - (into {} (map #(vector % to-prop) properties)) - to-prop) - - default-format (fn [value] (str (mth/precision value 2) "px")) - format-property (fn [prop] - (let [css-prop (or (prop to-prop) (name prop))] - (str/fmt " %s: %s;" css-prop ((or (prop format) default-format) (prop values) values)))) - - text-props (->> properties - (remove #(let [value (get values %)] - (or (nil? value) (= value 0)))) - (map format-property) - (str/join "\n")) - - result (str/fmt "{\n%s\n}" text-props)] - + (let [result (code/generate-css-props values properties params)] (wapi/write-to-clipboard result)))) (mf/defc color-row [{:keys [color format on-copy on-change-format]}] @@ -79,3 +54,4 @@ (when on-copy [:button.attributes-copy-button {:on-click on-copy} i/copy])])) + diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/layout.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/layout.cljs index 748905449f..3a2dcf01fc 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/layout.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/layout.cljs @@ -18,8 +18,8 @@ (defn copy-layout [shape] (copy-cb shape - [:width :height :x :y :rotation] - :to-prop {:x "left" :y "top" :rotation "transform"} + [:width :height :x :y :radius :rx] + :to-prop {:x "left" :y "top" :rotation "transform" :rx "border-radius"} :format {:rotation #(str/fmt "rotate(%sdeg)" %)})) (mf/defc layout-block @@ -55,6 +55,14 @@ {:on-click (copy-cb shape :y :to-prop "top")} i/copy]]) + (when (not= (:rx shape) 0) + [:div.attributes-unit-row + [:div.attributes-label (t locale "handoff.attributes.layout.radius")] + [:div.attributes-value (mth/precision (:rx shape) 2) "px"] + [:button.attributes-copy-button + {:on-click (copy-cb shape :rx :to-prop "border-radius")} + i/copy]]) + (when (not= (:rotation shape 0) 0) [:div.attributes-unit-row [:div.attributes-label (t locale "handoff.attributes.layout.rotation")] diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/shadow.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/shadow.cljs index d5537f153f..d9b020635b 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/shadow.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/shadow.cljs @@ -12,21 +12,13 @@ [rumext.alpha :as mf] [cuerdas.core :as str] [app.util.i18n :refer [t]] - [app.util.color :as uc] + [app.util.code-gen :as cg] [app.main.ui.icons :as i] [app.main.ui.viewer.handoff.attributes.common :refer [copy-cb color-row]])) (defn has-shadow? [shape] (:shadow shape)) -(defn shadow->css [shadow] - (let [{:keys [style offset-x offset-y blur spread]} shadow - css-color (uc/color->background (:color shadow))] - (str - (if (= style :inner-shadow) "inset " "") - (str/fmt "%spx %spx %spx %spx %s" offset-x offset-y blur spread css-color)))) - - (mf/defc shadow-block [{:keys [shape locale shadow]}] (let [color-format (mf/use-state :hex)] [:div.attributes-shadow-block @@ -52,7 +44,7 @@ {:on-click (copy-cb shadow :style :to-prop "box-shadow" - :format #(shadow->css shadow))} + :format #(cg/shadow->css shadow))} i/copy]] [:& color-row {:color (:color shadow) :format @color-format @@ -64,7 +56,7 @@ (copy-cb (first shapes) :shadow :to-prop "box-shadow" - :format #(str/join ", " (map shadow->css (:shadow (first shapes))))))] + :format #(str/join ", " (map cg/shadow->css (:shadow (first shapes))))))] (when (seq shapes) [:div.attributes-block [:div.attributes-block-title diff --git a/frontend/src/app/main/ui/viewer/handoff/code.cljs b/frontend/src/app/main/ui/viewer/handoff/code.cljs index 22a2d5577d..ed9daf0a4a 100644 --- a/frontend/src/app/main/ui/viewer/handoff/code.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/code.cljs @@ -10,31 +10,33 @@ (ns app.main.ui.viewer.handoff.code (:require ["highlight.js" :as hljs] + [cuerdas.core :as str] [rumext.alpha :as mf] [app.util.i18n :as i18n] + [app.util.color :as uc] + [app.util.webapi :as wapi] + [app.util.code-gen :as cg] [app.main.ui.icons :as i] [app.common.geom.shapes :as gsh])) -(def css-example - "/* text layer name */ -.shape { - width: 142px; - height: 40px; - border-radius: 20px; - background-color: var(--tiffany-blue); -}") - (def svg-example - " - - -") + " +") + + +(defn generate-markup-code [type shapes] + svg-example) (mf/defc code-block [{:keys [code type]}] (let [block-ref (mf/use-ref)] (mf/use-effect - (mf/deps block-ref) + (mf/deps code type block-ref) (fn [] (hljs/highlightBlock (mf/ref-val block-ref)))) [:pre.code-display {:class type @@ -42,39 +44,46 @@ (mf/defc code [{:keys [shapes frame]}] - (let [locale (mf/deref i18n/locale) + (let [style-type (mf/use-state "css") + markup-type (mf/use-state "svg") + + locale (mf/deref i18n/locale) shapes (->> shapes - (map #(gsh/translate-to-frame % frame)))] + (map #(gsh/translate-to-frame % frame))) + + style-code (cg/generate-style-code @style-type shapes) + markup-code (generate-markup-code @markup-type shapes)] [:div.element-options [:div.code-block [:div.code-row-lang [:select.code-selection - [:option "CSS"] - [:option "SASS"] - [:option "Less"] - [:option "Stylus"]] + [:option {:value "css"} "CSS"] + #_[:option {:value "sass"} "SASS"] + #_[:option {:value "less"} "Less"] + #_[:option {:value "stylus"} "Stylus"]] [:button.attributes-copy-button - {:on-click #(prn "??")} + {:on-click #(wapi/write-to-clipboard style-code)} i/copy]] [:div.code-row-display - [:& code-block {:type "css" - :code css-example}]]] + [:& code-block {:type @style-type + :code style-code}]]] [:div.code-block [:div.code-row-lang [:select.code-selection [:option "SVG"] - [:option "HTML"]] + #_[:option "HTML"]] [:button.attributes-copy-button - {:on-click #(prn "??")} + {:on-click #(wapi/write-to-clipboard markup-code)} i/copy]] [:div.code-row-display - [:& code-block {:type "svg" - :code svg-example}]]] + [:& code-block {:type @markup-type + :code markup-code}]]] ])) + diff --git a/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs b/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs index 1fbb6e1cb7..9fecb1734d 100644 --- a/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs @@ -33,7 +33,7 @@ (mf/defc right-sidebar [{:keys [frame]}] (let [locale (mf/deref i18n/locale) - section (mf/use-state :info #_:code) + section (mf/use-state #_:info :code) selected-ref (mf/use-memo (make-selected-shapes-iref)) shapes (mf/deref selected-ref)] [:aside.settings-bar.settings-bar-right diff --git a/frontend/src/app/util/code_gen.cljs b/frontend/src/app/util/code_gen.cljs new file mode 100644 index 0000000000..1d2ac42b16 --- /dev/null +++ b/frontend/src/app/util/code_gen.cljs @@ -0,0 +1,164 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; This Source Code Form is "Incompatible With Secondary Licenses", as +;; defined by the Mozilla Public License, v. 2.0. +;; +;; Copyright (c) 2020 UXBOX Labs SL + +(ns app.util.code-gen + (:require + [cuerdas.core :as str] + [app.common.math :as mth] + [app.util.text :as ut] + [app.util.color :as uc])) + +(declare format-fill-color) +(declare format-stroke) +(declare shadow->css) + +(def styles-data + {:layout {:props [:width :height :x :y :radius :rx] + :to-prop {:x "left" :y "top" :rotation "transform" :rx "border-radius"} + :format {:rotation #(str/fmt "rotate(%sdeg)" %)}} + :fill {:props [:fill-color :fill-color-gradient] + :to-prop {:fill-color "background" :fill-color-gradient "background"} + :format {:fill-color format-fill-color :fill-color-gradient format-fill-color}} + :stroke {:props [:stroke-color] + :to-prop {:stroke-color "border"} + :format {:stroke-color format-stroke}} + :shadow {:props [:shadow] + :to-prop {:shadow :box-shadow} + :format {:shadow #(str/join ", " (map shadow->css %1))}} + :blur {:props [:blur] + :to-prop {:blur "filter"} + :format {:blur #(str/fmt "blur(%spx)" (:value %))}}}) + +(def style-text + {:props [:fill-color + :font-family + :font-style + :font-size + :line-height + :letter-spacing + :text-decoration + :text-transform] + :to-prop {:fill-color "color" } + :format {:font-family #(str "'" % "'") + :font-style #(str "'" % "'") + :font-size #(str % "px") + :line-height #(str % "px") + :letter-spacing #(str % "px") + :text-decoration name + :text-transform name + :fill-color format-fill-color}}) + +(defn shadow->css [shadow] + (let [{:keys [style offset-x offset-y blur spread]} shadow + css-color (uc/color->background (:color shadow))] + (str + (if (= style :inner-shadow) "inset " "") + (str/fmt "%spx %spx %spx %spx %s" offset-x offset-y blur spread css-color)))) + + +(defn format-fill-color [_ shape] + (let [color {:color (:fill-color shape) + :opacity (:fill-opacity shape) + :gradient (:fill-color-gradient shape) + :id (:fill-ref-id shape) + :file-id (:fill-ref-file-id shape)}] + (uc/color->background color))) + +(defn format-stroke [_ shape] + (let [width (:stroke-width shape) + style (name (:stroke-style shape)) + color {:color (:stroke-color shape) + :opacity (:stroke-opacity shape) + :gradient (:stroke-color-gradient shape) + :id (:stroke-ref-id shape) + :file-id (:stroke-ref-file-id shape)}] + (str/format "%spx %s %s" width style (uc/color->background color)))) + + +(defn generate-css-props [values properties params] + (let [{:keys [to-prop format tab-size] :or {to-prop {} tab-size 0}} params + ;; We allow the :format and :to-prop to be a map for different properties + ;; or just a value for a single property. This code transform a single + ;; property to a uniform one + properties (if-not (coll? properties) [properties] properties) + + format (if (not (map? format)) + (into {} (map #(vector % format) properties)) + format) + + to-prop (if (not (map? to-prop)) + (into {} (map #(vector % to-prop) properties)) + to-prop) + + default-format (fn [value] (str (mth/precision value 2) "px")) + format-property (fn [prop] + (let [css-prop (or (prop to-prop) (name prop)) + format-fn (or (prop format) default-format)] + (str + (str/repeat " " tab-size) + (str/fmt "%s: %s;" css-prop (format-fn (prop values) values)))))] + + (->> properties + (remove #(let [value (get values %)] + (or (nil? value) (= value 0)))) + (map format-property) + (str/join "\n")))) + +(defn shape->properties [shape] + (let [props (->> styles-data vals (mapcat :props)) + to-prop (->> styles-data vals (map :to-prop) (reduce merge)) + format (->> styles-data vals (map :format) (reduce merge))] + (generate-css-props shape props {:to-prop to-prop + :format format + :tab-size 2}))) +(defn text->properties [shape] + (let [text-shape-style (select-keys styles-data [:layout :shadow :blur]) + + shape-props (->> text-shape-style vals (mapcat :props)) + shape-to-prop (->> text-shape-style vals (map :to-prop) (reduce merge)) + shape-format (->> text-shape-style vals (map :format) (reduce merge)) + + + text-values (->> (ut/search-text-attrs (:content shape) (:props style-text)) + (merge ut/default-text-attrs))] + + (str/join + "\n" + [(generate-css-props shape + shape-props + {:to-prop shape-to-prop + :format shape-format + :tab-size 2}) + (generate-css-props text-values + (:props style-text) + {:to-prop (:to-prop style-text) + :format (:format style-text) + :tab-size 2})])) + + ) + +(defn generate-css [shape] + (let [name (:name shape) + properties (if (= :text (:type shape)) + (text->properties shape) + (shape->properties shape)) + + selector (str/css-selector name) + selector (if (str/starts-with? selector "-") (subs selector 1) selector)] + (str/join "\n" [(str/fmt "/* %s */" name) + (str/fmt ".%s {" selector) + properties + "}"]))) + +(defn generate-style-code [type shapes] + (let [generate-style-fn (case type + "css" generate-css)] + (->> shapes + (map generate-style-fn) + (str/join "\n\n")))) From 96098be5ae5bc492000f0124a8beeb2abcc81893 Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Thu, 29 Oct 2020 19:50:07 +0100 Subject: [PATCH 11/48] :sparkles: SVG generation first version --- frontend/package.json | 1 + frontend/src/app/main/exports.cljs | 2 - frontend/src/app/main/ui/shapes/circle.cljs | 3 +- frontend/src/app/main/ui/shapes/frame.cljs | 1 - frontend/src/app/main/ui/shapes/group.cljs | 1 - frontend/src/app/main/ui/shapes/icon.cljs | 52 ------------- frontend/src/app/main/ui/shapes/image.cljs | 1 - frontend/src/app/main/ui/shapes/path.cljs | 1 - frontend/src/app/main/ui/shapes/rect.cljs | 1 - frontend/src/app/main/ui/shapes/shape.cljs | 1 + frontend/src/app/main/ui/shapes/text.cljs | 1 - .../src/app/main/ui/viewer/handoff/code.cljs | 39 +++++----- .../app/main/ui/viewer/handoff/render.cljs | 6 +- frontend/src/app/main/ui/viewer/shapes.cljs | 7 -- .../src/app/main/ui/workspace/shapes.cljs | 3 - .../app/main/ui/workspace/sidebar/assets.cljs | 1 - .../app/main/ui/workspace/sidebar/layers.cljs | 2 - frontend/src/app/util/code_gen.cljs | 4 +- frontend/yarn.lock | 76 ++++++++++++++++++- 19 files changed, 104 insertions(+), 99 deletions(-) delete mode 100644 frontend/src/app/main/ui/shapes/icon.cljs diff --git a/frontend/package.json b/frontend/package.json index 1b4f1b4754..c7d4f4b482 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -30,6 +30,7 @@ "dependencies": { "date-fns": "^2.15.0", "highlight.js": "^10.3.1", + "js-beautify": "^1.13.0", "map-stream": "0.0.7", "mousetrap": "^1.6.5", "randomcolor": "^0.6.2", diff --git a/frontend/src/app/main/exports.cljs b/frontend/src/app/main/exports.cljs index 7146814df8..cf8a129dd1 100644 --- a/frontend/src/app/main/exports.cljs +++ b/frontend/src/app/main/exports.cljs @@ -21,7 +21,6 @@ [app.main.ui.shapes.filters :as filters] [app.main.ui.shapes.frame :as frame] [app.main.ui.shapes.circle :as circle] - [app.main.ui.shapes.icon :as icon] [app.main.ui.shapes.image :as image] [app.main.ui.shapes.path :as path] [app.main.ui.shapes.rect :as rect] @@ -85,7 +84,6 @@ (case (:type shape) :curve [:> path/path-shape opts] :text [:> text/text-shape opts] - :icon [:> icon/icon-shape opts] :rect [:> rect/rect-shape opts] :path [:> path/path-shape opts] :image [:> image/image-shape opts] diff --git a/frontend/src/app/main/ui/shapes/circle.cljs b/frontend/src/app/main/ui/shapes/circle.cljs index 0b442ea164..340186aa34 100644 --- a/frontend/src/app/main/ui/shapes/circle.cljs +++ b/frontend/src/app/main/ui/shapes/circle.cljs @@ -33,8 +33,7 @@ :cy cy :rx rx :ry ry - :transform transform - :id (str "shape-" id)}))] + :transform transform}))] [:& shape-custom-stroke {:shape shape :base-props props diff --git a/frontend/src/app/main/ui/shapes/frame.cljs b/frontend/src/app/main/ui/shapes/frame.cljs index 952179e289..55b39bb1b9 100644 --- a/frontend/src/app/main/ui/shapes/frame.cljs +++ b/frontend/src/app/main/ui/shapes/frame.cljs @@ -31,7 +31,6 @@ (obj/merge! #js {:x 0 :y 0 - :id (str "shape-" id) :width width :height height}))] [:svg {:x x :y y :width width :height height diff --git a/frontend/src/app/main/ui/shapes/group.cljs b/frontend/src/app/main/ui/shapes/group.cljs index 6b4a5bf5c5..03bea3db6d 100644 --- a/frontend/src/app/main/ui/shapes/group.cljs +++ b/frontend/src/app/main/ui/shapes/group.cljs @@ -54,7 +54,6 @@ :y y :fill (if (debug? :group) "red" "transparent") :opacity 0.5 - :id (str "group-" id) :width width :height height}])]))) diff --git a/frontend/src/app/main/ui/shapes/icon.cljs b/frontend/src/app/main/ui/shapes/icon.cljs deleted file mode 100644 index bba2c92518..0000000000 --- a/frontend/src/app/main/ui/shapes/icon.cljs +++ /dev/null @@ -1,52 +0,0 @@ -;; This Source Code Form is subject to the terms of the Mozilla Public -;; License, v. 2.0. If a copy of the MPL was not distributed with this -;; file, You can obtain one at http://mozilla.org/MPL/2.0/. -;; -;; This Source Code Form is "Incompatible With Secondary Licenses", as -;; defined by the Mozilla Public License, v. 2.0. -;; -;; Copyright (c) 2020 UXBOX Labs SL - -(ns app.main.ui.shapes.icon - (:require - [rumext.alpha :as mf] - [app.common.geom.shapes :as geom] - [app.main.ui.shapes.attrs :as attrs] - [app.main.ui.shapes.group :refer [mask-id-ctx]] - [app.util.object :as obj])) - -(mf/defc icon-shape - {::mf/wrap-props false} - [props] - (let [shape (unchecked-get props "shape") - {:keys [id x y width height metadata rotation content]} shape - - mask-id (mf/use-ctx mask-id-ctx) - transform (geom/transform-matrix shape) - vbox (apply str (interpose " " (:view-box metadata))) - - props (-> (attrs/extract-style-attrs shape) - (obj/merge! - #js {:x x - :y y - :transform transform - :id (str "shape-" id) - :width width - :height height - :viewBox vbox - :preserveAspectRatio "none" - :mask mask-id - :dangerouslySetInnerHTML #js {:__html content}}))] - [:g {:transform transform} - [:> "svg" props]])) - -(mf/defc icon-svg - [{:keys [shape] :as props}] - (let [{:keys [content id metadata]} shape - view-box (apply str (interpose " " (:view-box metadata))) - mask-id (mf/use-ctx mask-id-ctx) - props {:viewBox view-box - :id (str "shape-" id) - :mask mask-id - :dangerouslySetInnerHTML #js {:__html content}}] - [:& "svg" props])) diff --git a/frontend/src/app/main/ui/shapes/image.cljs b/frontend/src/app/main/ui/shapes/image.cljs index 0380ba3431..61ef85c791 100644 --- a/frontend/src/app/main/ui/shapes/image.cljs +++ b/frontend/src/app/main/ui/shapes/image.cljs @@ -43,7 +43,6 @@ #js {:x x :y y :transform transform - :id (str "shape-" id) :width width :height height :preserveAspectRatio "none" diff --git a/frontend/src/app/main/ui/shapes/path.cljs b/frontend/src/app/main/ui/shapes/path.cljs index a591df4871..677bc1649d 100644 --- a/frontend/src/app/main/ui/shapes/path.cljs +++ b/frontend/src/app/main/ui/shapes/path.cljs @@ -52,7 +52,6 @@ props (-> (attrs/extract-style-attrs shape) (obj/merge! #js {:transform transform - :id (str "shape-" id) :d pdata}))] (if background? [:g {:mask mask-id} diff --git a/frontend/src/app/main/ui/shapes/rect.cljs b/frontend/src/app/main/ui/shapes/rect.cljs index f2c8e98e97..555bafa5af 100644 --- a/frontend/src/app/main/ui/shapes/rect.cljs +++ b/frontend/src/app/main/ui/shapes/rect.cljs @@ -32,7 +32,6 @@ #js {:x x :y y :transform transform - :id (str "shape-" id) :width width :height height}))] diff --git a/frontend/src/app/main/ui/shapes/shape.cljs b/frontend/src/app/main/ui/shapes/shape.cljs index fd046afb1b..830a7057b2 100644 --- a/frontend/src/app/main/ui/shapes/shape.cljs +++ b/frontend/src/app/main/ui/shapes/shape.cljs @@ -29,6 +29,7 @@ group-props (-> props (obj/clone) (obj/without ["shape" "children"]) + (obj/set! "id" (str "shape-" (:id shape))) (obj/set! "className" "shape") (obj/set! "filter" (filters/filter-str filter-id shape)))] [:& (mf/provider muc/render-ctx) {:value render-id} diff --git a/frontend/src/app/main/ui/shapes/text.cljs b/frontend/src/app/main/ui/shapes/text.cljs index 240c0d0adb..3fbc1f972b 100644 --- a/frontend/src/app/main/ui/shapes/text.cljs +++ b/frontend/src/app/main/ui/shapes/text.cljs @@ -231,7 +231,6 @@ :y y :data-colors (retrieve-colors shape) :transform (geom/transform-matrix shape) - :id (str id) :width width :height height :mask mask-id} diff --git a/frontend/src/app/main/ui/viewer/handoff/code.cljs b/frontend/src/app/main/ui/viewer/handoff/code.cljs index ed9daf0a4a..21df187b71 100644 --- a/frontend/src/app/main/ui/viewer/handoff/code.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/code.cljs @@ -10,31 +10,38 @@ (ns app.main.ui.viewer.handoff.code (:require ["highlight.js" :as hljs] + ["js-beautify" :as beautify] [cuerdas.core :as str] [rumext.alpha :as mf] [app.util.i18n :as i18n] [app.util.color :as uc] + [app.util.dom :as dom] [app.util.webapi :as wapi] [app.util.code-gen :as cg] [app.main.ui.icons :as i] [app.common.geom.shapes :as gsh])) -(def svg-example - " -") - - (defn generate-markup-code [type shapes] - svg-example) + (let [frame (dom/query js/document "#svg-frame") + markup-shape + (fn [shape] + (let [selector (str "#shape-" (:id shape) (when (= :text (:type shape)) " .root"))] + (when-let [el (and frame (dom/query frame selector))] + (str + (str/fmt "" (:name shape)) + (.-outerHTML el)))))] + (->> shapes + (map markup-shape ) + (remove nil?) + (str/join "\n\n")))) (mf/defc code-block [{:keys [code type]}] - (let [block-ref (mf/use-ref)] + (let [code (-> code + (str/replace "" "") + (str/replace "><" ">\n<")) + code (cond-> code + (= type "svg") (beautify/html #js {"indent_size" 2})) + block-ref (mf/use-ref)] (mf/use-effect (mf/deps code type block-ref) (fn [] @@ -52,7 +59,7 @@ (map #(gsh/translate-to-frame % frame))) style-code (cg/generate-style-code @style-type shapes) - markup-code (generate-markup-code @markup-type shapes)] + markup-code (mf/use-memo (mf/deps shapes) #(generate-markup-code @markup-type shapes))] [:div.element-options [:div.code-block [:div.code-row-lang @@ -74,7 +81,7 @@ [:div.code-row-lang [:select.code-selection [:option "SVG"] - #_[:option "HTML"]] + [:option "HTML"]] [:button.attributes-copy-button {:on-click #(wapi/write-to-clipboard markup-code)} @@ -85,5 +92,3 @@ :code markup-code}]]] ])) - - diff --git a/frontend/src/app/main/ui/viewer/handoff/render.cljs b/frontend/src/app/main/ui/viewer/handoff/render.cljs index ab760080f0..7f5c238dc6 100644 --- a/frontend/src/app/main/ui/viewer/handoff/render.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/render.cljs @@ -26,7 +26,6 @@ [app.main.ui.shapes.circle :as circle] [app.main.ui.shapes.frame :as frame] [app.main.ui.shapes.group :as group] - [app.main.ui.shapes.icon :as icon] [app.main.ui.shapes.image :as image] [app.main.ui.shapes.path :as path] [app.main.ui.shapes.rect :as rect] @@ -111,7 +110,6 @@ [objects show-interactions?] (let [path-wrapper (shape-wrapper-factory path/path-shape) text-wrapper (shape-wrapper-factory text/text-shape) - icon-wrapper (shape-wrapper-factory icon/icon-shape) rect-wrapper (shape-wrapper-factory rect/rect-shape) image-wrapper (shape-wrapper-factory image/image-shape) circle-wrapper (shape-wrapper-factory circle/circle-shape)] @@ -130,7 +128,6 @@ (case (:type shape) :curve [:> path-wrapper opts] :text [:> text-wrapper opts] - :icon [:> icon-wrapper opts] :rect [:> rect-wrapper opts] :path [:> path-wrapper opts] :image [:> image-wrapper opts] @@ -163,7 +160,8 @@ (mf/deps objects) #(frame-container-factory objects))] - [:svg {:view-box vbox + [:svg {:id "svg-frame" + :view-box vbox :width width :height height :version "1.1" diff --git a/frontend/src/app/main/ui/viewer/shapes.cljs b/frontend/src/app/main/ui/viewer/shapes.cljs index 7ceb6166c8..8cca3ce1e6 100644 --- a/frontend/src/app/main/ui/viewer/shapes.cljs +++ b/frontend/src/app/main/ui/viewer/shapes.cljs @@ -21,7 +21,6 @@ [app.main.ui.shapes.circle :as circle] [app.main.ui.shapes.frame :as frame] [app.main.ui.shapes.group :as group] - [app.main.ui.shapes.icon :as icon] [app.main.ui.shapes.image :as image] [app.main.ui.shapes.path :as path] [app.main.ui.shapes.rect :as rect] @@ -86,10 +85,6 @@ [show-interactions?] (generic-wrapper-factory rect/rect-shape show-interactions?)) -(defn icon-wrapper - [show-interactions?] - (generic-wrapper-factory icon/icon-shape show-interactions?)) - (defn image-wrapper [show-interactions?] (generic-wrapper-factory image/image-shape show-interactions?)) @@ -142,7 +137,6 @@ [objects show-interactions?] (let [path-wrapper (path-wrapper show-interactions?) text-wrapper (text-wrapper show-interactions?) - icon-wrapper (icon-wrapper show-interactions?) rect-wrapper (rect-wrapper show-interactions?) image-wrapper (image-wrapper show-interactions?) circle-wrapper (circle-wrapper show-interactions?)] @@ -160,7 +154,6 @@ (case (:type shape) :curve [:> path-wrapper opts] :text [:> text-wrapper opts] - :icon [:> icon-wrapper opts] :rect [:> rect-wrapper opts] :path [:> path-wrapper opts] :image [:> image-wrapper opts] diff --git a/frontend/src/app/main/ui/workspace/shapes.cljs b/frontend/src/app/main/ui/workspace/shapes.cljs index 69e8fc5fee..f0b8bc2b55 100644 --- a/frontend/src/app/main/ui/workspace/shapes.cljs +++ b/frontend/src/app/main/ui/workspace/shapes.cljs @@ -18,7 +18,6 @@ [app.main.ui.cursors :as cur] [app.main.ui.shapes.rect :as rect] [app.main.ui.shapes.circle :as circle] - [app.main.ui.shapes.icon :as icon] [app.main.ui.shapes.image :as image] [app.main.data.workspace.selection :as dws] [app.main.store :as st] @@ -40,7 +39,6 @@ (declare frame-wrapper) (def circle-wrapper (common/generic-wrapper-factory circle/circle-shape)) -(def icon-wrapper (common/generic-wrapper-factory icon/icon-shape)) (def image-wrapper (common/generic-wrapper-factory image/image-shape)) (def rect-wrapper (common/generic-wrapper-factory rect/rect-shape)) @@ -113,7 +111,6 @@ :path [:> path/path-wrapper opts] :text [:> text/text-wrapper opts] :group [:> group-wrapper opts] - :icon [:> icon-wrapper opts] :rect [:> rect-wrapper opts] :image [:> image-wrapper opts] :circle [:> circle-wrapper opts] diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs index 92f6310f85..2eed058aa3 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs @@ -32,7 +32,6 @@ [app.main.ui.context :as ctx] [app.main.ui.icons :as i] [app.main.ui.keyboard :as kbd] - [app.main.ui.shapes.icon :as icon] [app.main.ui.workspace.sidebar.options.typography :refer [typography-entry]] [app.util.data :refer [matches-search]] [app.util.dom :as dom] diff --git a/frontend/src/app/main/ui/workspace/sidebar/layers.cljs b/frontend/src/app/main/ui/workspace/sidebar/layers.cljs index e488d0d394..2b83cb73f6 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/layers.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/layers.cljs @@ -19,7 +19,6 @@ [app.main.ui.hooks :as hooks] [app.main.ui.icons :as i] [app.main.ui.keyboard :as kbd] - [app.main.ui.shapes.icon :as icon] [app.util.dom :as dom] [app.util.i18n :as i18n :refer [t]] [app.util.object :as obj] @@ -35,7 +34,6 @@ [{:keys [shape] :as props}] (case (:type shape) :frame i/artboard - :icon [:& icon/icon-svg {:shape shape}] :image i/image :line i/line :circle i/circle diff --git a/frontend/src/app/util/code_gen.cljs b/frontend/src/app/util/code_gen.cljs index 1d2ac42b16..785b592c73 100644 --- a/frontend/src/app/util/code_gen.cljs +++ b/frontend/src/app/util/code_gen.cljs @@ -44,7 +44,7 @@ :letter-spacing :text-decoration :text-transform] - :to-prop {:fill-color "color" } + :to-prop {:fill-color "color"} :format {:font-family #(str "'" % "'") :font-style #(str "'" % "'") :font-size #(str % "px") @@ -125,7 +125,7 @@ shape-format (->> text-shape-style vals (map :format) (reduce merge)) - text-values (->> (ut/search-text-attrs (:content shape) (:props style-text)) + text-values (->> (ut/search-text-attrs (:content shape) (conj (:props style-text) :fill-color-gradient)) (merge ut/default-text-attrs))] (str/join diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 4dabf371a7..6be49c138a 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -39,6 +39,11 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + ajv@^6.12.3: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -776,6 +781,11 @@ commander@2.15.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== +commander@^2.19.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -801,6 +811,14 @@ concat-stream@^1.6.0, concat-stream@^1.6.2: readable-stream "^2.2.2" typedarray "^0.0.6" +config-chain@^1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + console-browserify@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" @@ -1152,6 +1170,16 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +editorconfig@^0.15.3: + version "0.15.3" + resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" + integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g== + dependencies: + commander "^2.19.0" + lru-cache "^4.1.5" + semver "^5.6.0" + sigmund "^1.0.1" + electron-to-chromium@^1.3.571: version "1.3.583" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.583.tgz#47a9fde74740b1205dba96db2e433132964ba3ee" @@ -2296,6 +2324,17 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= +js-beautify@^1.13.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.13.0.tgz#a056d5d3acfd4918549aae3ab039f9f3c51eebb2" + integrity sha512-/Tbp1OVzZjbwzwJQFIlYLm9eWQ+3aYbBXLSaqb1mEJzhcQAfrqMMQYtjb6io+U6KpD0ID4F+Id3/xcjH3l/sqA== + dependencies: + config-chain "^1.1.12" + editorconfig "^0.15.3" + glob "^7.1.3" + mkdirp "^1.0.4" + nopt "^5.0.0" + "js-tokens@^3.0.0 || ^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -2602,6 +2641,14 @@ loose-envify@^1.1.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lru-cache@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + make-iterator@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" @@ -2892,6 +2939,13 @@ node-releases@^1.1.61: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.64.tgz#71b4ae988e9b1dd7c1ffce58dd9e561752dfebc5" integrity sha512-Iec8O9166/x2HRMJyLLLWkd0sFFLrFNy+Xf+JQfSQsdBJzPcHpNl3JQ9gD4j+aJxmCa25jNsIbM4bmACtSbkSg== +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -3341,6 +3395,16 @@ progress@^1.1.8: resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" integrity sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74= +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" @@ -3735,7 +3799,7 @@ semver-greatest-satisfied-range@^1.1.0: dependencies: sver-compat "^1.5.0" -"semver@2 || 3 || 4 || 5", semver@^5.5.0: +"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -3841,6 +3905,11 @@ should@^13.2.3: should-type-adaptors "^1.0.1" should-util "^1.0.0" +sigmund@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= + signal-exit@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -4673,6 +4742,11 @@ y18n@^3.2.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + yargs-parser@5.0.0-security.0: version "5.0.0-security.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz#4ff7271d25f90ac15643b86076a2ab499ec9ee24" From 6feccd5e365c2cc3de5c9ce67fd80749ebb34fa3 Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Fri, 30 Oct 2020 09:42:04 +0100 Subject: [PATCH 12/48] :bug: Fixes problem with css generation. --- .../ui/viewer/handoff/attributes/common.cljs | 4 +- .../ui/viewer/handoff/attributes/layout.cljs | 2 +- .../main/ui/viewer/handoff/right_sidebar.cljs | 2 +- frontend/src/app/util/code_gen.cljs | 54 +++++++++---------- 4 files changed, 29 insertions(+), 33 deletions(-) diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/common.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/common.cljs index 43972d2375..85c3a68758 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/common.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/common.cljs @@ -16,13 +16,13 @@ [app.util.color :as uc] [app.common.math :as mth] [app.main.ui.icons :as i] - [app.util.code-gen :as code] + [app.util.code-gen :as cg] [app.util.webapi :as wapi] [app.main.ui.components.color-bullet :refer [color-bullet color-name]])) (defn copy-cb [values properties & {:keys [to-prop format] :as params}] (fn [event] - (let [result (code/generate-css-props values properties params)] + (let [result (cg/generate-css-props values properties params)] (wapi/write-to-clipboard result)))) (mf/defc color-row [{:keys [color format on-copy on-change-format]}] diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/layout.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/layout.cljs index 3a2dcf01fc..4c28d0145c 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/layout.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/layout.cljs @@ -55,7 +55,7 @@ {:on-click (copy-cb shape :y :to-prop "top")} i/copy]]) - (when (not= (:rx shape) 0) + (when (and (:rx shape) (not= (:rx shape) 0)) [:div.attributes-unit-row [:div.attributes-label (t locale "handoff.attributes.layout.radius")] [:div.attributes-value (mth/precision (:rx shape) 2) "px"] diff --git a/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs b/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs index 9fecb1734d..1fbb6e1cb7 100644 --- a/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs @@ -33,7 +33,7 @@ (mf/defc right-sidebar [{:keys [frame]}] (let [locale (mf/deref i18n/locale) - section (mf/use-state #_:info :code) + section (mf/use-state :info #_:code) selected-ref (mf/use-memo (make-selected-shapes-iref)) shapes (mf/deref selected-ref)] [:aside.settings-bar.settings-bar-right diff --git a/frontend/src/app/util/code_gen.cljs b/frontend/src/app/util/code_gen.cljs index 785b592c73..f3c4f5766d 100644 --- a/frontend/src/app/util/code_gen.cljs +++ b/frontend/src/app/util/code_gen.cljs @@ -14,9 +14,31 @@ [app.util.text :as ut] [app.util.color :as uc])) -(declare format-fill-color) -(declare format-stroke) -(declare shadow->css) +(defn shadow->css [shadow] + (let [{:keys [style offset-x offset-y blur spread]} shadow + css-color (uc/color->background (:color shadow))] + (str + (if (= style :inner-shadow) "inset " "") + (str/fmt "%spx %spx %spx %spx %s" offset-x offset-y blur spread css-color)))) + + +(defn format-fill-color [_ shape] + (let [color {:color (:fill-color shape) + :opacity (:fill-opacity shape) + :gradient (:fill-color-gradient shape) + :id (:fill-ref-id shape) + :file-id (:fill-ref-file-id shape)}] + (uc/color->background color))) + +(defn format-stroke [_ shape] + (let [width (:stroke-width shape) + style (name (:stroke-style shape)) + color {:color (:stroke-color shape) + :opacity (:stroke-opacity shape) + :gradient (:stroke-color-gradient shape) + :id (:stroke-ref-id shape) + :file-id (:stroke-ref-file-id shape)}] + (str/format "%spx %s %s" width style (uc/color->background color)))) (def styles-data {:layout {:props [:width :height :x :y :radius :rx] @@ -54,32 +76,6 @@ :text-transform name :fill-color format-fill-color}}) -(defn shadow->css [shadow] - (let [{:keys [style offset-x offset-y blur spread]} shadow - css-color (uc/color->background (:color shadow))] - (str - (if (= style :inner-shadow) "inset " "") - (str/fmt "%spx %spx %spx %spx %s" offset-x offset-y blur spread css-color)))) - - -(defn format-fill-color [_ shape] - (let [color {:color (:fill-color shape) - :opacity (:fill-opacity shape) - :gradient (:fill-color-gradient shape) - :id (:fill-ref-id shape) - :file-id (:fill-ref-file-id shape)}] - (uc/color->background color))) - -(defn format-stroke [_ shape] - (let [width (:stroke-width shape) - style (name (:stroke-style shape)) - color {:color (:stroke-color shape) - :opacity (:stroke-opacity shape) - :gradient (:stroke-color-gradient shape) - :id (:stroke-ref-id shape) - :file-id (:stroke-ref-file-id shape)}] - (str/format "%spx %s %s" width style (uc/color->background color)))) - (defn generate-css-props [values properties params] (let [{:keys [to-prop format tab-size] :or {to-prop {} tab-size 0}} params From 7a80297d3154eb8c03cb4a171092fdd7f273de3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Fri, 30 Oct 2020 09:31:20 +0100 Subject: [PATCH 13/48] :bug: Fix position bug when syncing component with several nested --- .../app/main/data/workspace/libraries_helpers.cljs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/frontend/src/app/main/data/workspace/libraries_helpers.cljs b/frontend/src/app/main/data/workspace/libraries_helpers.cljs index 05665e2126..0c91cfffaa 100644 --- a/frontend/src/app/main/data/workspace/libraries_helpers.cljs +++ b/frontend/src/app/main/data/workspace/libraries_helpers.cljs @@ -434,6 +434,12 @@ (let [component-shape (d/seek #(= (:shape-ref %) (:shape-ref shape)) (vals (:objects component))) + root-shape (if (:component-id shape) + shape + root-shape) + root-component (if (:component-id shape) + component-shape + root-component) [rchanges uchanges] (update-attrs shape @@ -541,6 +547,12 @@ (let [component-shape (d/seek #(= (:shape-ref %) (:shape-ref shape)) (vals (:objects component))) + root-shape (if (:component-id shape) + shape + root-shape) + root-component (if (:component-id shape) + component-shape + root-component) [rchanges uchanges] (update-attrs component-shape From 833a53f131c05927c8e4b565d81759579e52134d Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Fri, 30 Oct 2020 14:02:35 +0100 Subject: [PATCH 14/48] :sparkles: Improvements in the handoff --- .../styles/main/layouts/handoff.scss | 42 +++++++++++- .../styles/main/partials/handoff.scss | 49 +++++++++---- .../styles/main/partials/sidebar.scss | 5 ++ .../app/main/ui/components/code_block.cljs | 23 +++++++ .../app/main/ui/components/copy_button.cljs | 35 ++++++++++ frontend/src/app/main/ui/viewer/handoff.cljs | 7 +- .../ui/viewer/handoff/attributes/blur.cljs | 23 ++++--- .../ui/viewer/handoff/attributes/common.cljs | 12 ++-- .../ui/viewer/handoff/attributes/fill.cljs | 33 ++++----- .../ui/viewer/handoff/attributes/image.cljs | 7 +- .../ui/viewer/handoff/attributes/layout.cljs | 68 ++++++++----------- .../ui/viewer/handoff/attributes/shadow.cljs | 40 ++++++----- .../ui/viewer/handoff/attributes/stroke.cljs | 49 +++++++------ .../ui/viewer/handoff/attributes/text.cljs | 67 +++++++++--------- .../src/app/main/ui/viewer/handoff/code.cljs | 47 +++++++------ .../main/ui/viewer/handoff/right_sidebar.cljs | 12 ++-- frontend/src/app/util/code_gen.cljs | 52 +++++++------- 17 files changed, 345 insertions(+), 226 deletions(-) create mode 100644 frontend/src/app/main/ui/components/code_block.cljs create mode 100644 frontend/src/app/main/ui/components/copy_button.cljs diff --git a/frontend/resources/styles/main/layouts/handoff.scss b/frontend/resources/styles/main/layouts/handoff.scss index 2eb5c2548d..bd7e626a1f 100644 --- a/frontend/resources/styles/main/layouts/handoff.scss +++ b/frontend/resources/styles/main/layouts/handoff.scss @@ -1,3 +1,5 @@ +$width-settings-bar: 16rem; + .handoff-layout { display: grid; grid-template-rows: 40px auto; @@ -28,6 +30,42 @@ } } -.handoff-layout .settings-bar.settings-bar-left { - left: 0; +.handoff-layout { + .viewer-preview { + flex-wrap: nowrap; + } + .settings-bar { + transition: width 0.2s; + &.expanded { + width: $width-settings-bar * 3; + } + + &.settings-bar-right, + &.settings-bar-left { + position: relative; + left: unset; + right: unset; + + .settings-bar-inside { + padding-top: 0.5rem; + } + } + } + + .handoff-svg-wrapper { + flex: 1; + overflow: hidden; + flex-direction: column; + justify-content: flex-start; + } + + .handoff-svg-container { + display: grid; + width: 100%; + height: calc(100% - 35px); + overflow: auto; + align-items: center; + justify-content: safe center; + margin: 0 auto; + } } diff --git a/frontend/resources/styles/main/partials/handoff.scss b/frontend/resources/styles/main/partials/handoff.scss index 70ba1be4e4..ca741a3d24 100644 --- a/frontend/resources/styles/main/partials/handoff.scss +++ b/frontend/resources/styles/main/partials/handoff.scss @@ -15,13 +15,12 @@ justify-content: center; } -.attributes-copy-button { +.expand-button, +.copy-button { visibility: hidden; opacity: 0; transition: opacity 0.3s; position: absolute; - right: 0; - top: 0; background: none; border: none; padding: 0; @@ -39,6 +38,19 @@ } } +.expand-button { + right: 24px; + top: -1px; + + svg { + transform: rotate(45deg); + } +} +.copy-button { + right: 0; + top: 0; +} + .attributes-block { user-select: text; @@ -68,7 +80,7 @@ padding: 0.5rem; font-size: $fs14; - .attributes-copy-button { + .copy-button { padding: 0.5rem; margin-top: 0.25rem; } @@ -84,7 +96,7 @@ .attributes-value { width: 50%; } - .attributes-copy-button { + .copy-button { padding: 1rem 0.5rem; margin-top: 0.25rem; } @@ -111,7 +123,7 @@ border-radius: $br-small; border: 1px solid $color-gray-60; } - .attributes-copy-button { + .copy-button { padding: 1rem 0.5rem; margin-top: 0.25rem; } @@ -162,7 +174,7 @@ white-space: pre-wrap; } - .attributes-copy-button { + .copy-button { padding: 0.5rem; margin-top: 0.25rem; } @@ -249,9 +261,12 @@ .attributes-stroke-row, .attributes-typography-row, .attributes-content-row { - &:hover .attributes-copy-button { - visibility: visible; - opacity: 1; + &:hover { + .expand-button, + .copy-button { + visibility: visible; + opacity: 1; + } } } @@ -274,9 +289,12 @@ flex-direction: row; margin: 0.5rem; - &:hover .attributes-copy-button { - visibility: visible; - opacity: 1; + &:hover { + .expand-button, + .copy-button { + visibility: visible; + opacity: 1; + } } .code-selection { @@ -294,14 +312,15 @@ background-position: 90% 48%; background-size: 8px; } - .attributes-copy-button { + .expand-button, + .copy-button { margin-top: 8px; } } .code-row-display { margin: 0.5rem; - font-size: $fs12; + font-size: $fs14; .code-display { border-radius: 4px; diff --git a/frontend/resources/styles/main/partials/sidebar.scss b/frontend/resources/styles/main/partials/sidebar.scss index bc3e60c6d3..e03353aec6 100644 --- a/frontend/resources/styles/main/partials/sidebar.scss +++ b/frontend/resources/styles/main/partials/sidebar.scss @@ -16,6 +16,11 @@ $width-settings-bar: 16rem; position: fixed; right: 0; width: $width-settings-bar; + + &.expanded { + width: $width-settings-bar * 3; + } + z-index: 10; overflow-y: auto; diff --git a/frontend/src/app/main/ui/components/code_block.cljs b/frontend/src/app/main/ui/components/code_block.cljs new file mode 100644 index 0000000000..f1455233c1 --- /dev/null +++ b/frontend/src/app/main/ui/components/code_block.cljs @@ -0,0 +1,23 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; This Source Code Form is "Incompatible With Secondary Licenses", as +;; defined by the Mozilla Public License, v. 2.0. +;; +;; Copyright (c) 2020 UXBOX Labs SL + +(ns app.main.ui.components.code-block + (:require + ["highlight.js" :as hljs] + [rumext.alpha :as mf])) + +(mf/defc code-block [{:keys [code type]}] + (let [block-ref (mf/use-ref)] + (mf/use-effect + (mf/deps code type block-ref) + (fn [] + (hljs/highlightBlock (mf/ref-val block-ref)))) + [:pre.code-display {:class type + :ref block-ref} code])) + diff --git a/frontend/src/app/main/ui/components/copy_button.cljs b/frontend/src/app/main/ui/components/copy_button.cljs new file mode 100644 index 0000000000..c23f575376 --- /dev/null +++ b/frontend/src/app/main/ui/components/copy_button.cljs @@ -0,0 +1,35 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; This Source Code Form is "Incompatible With Secondary Licenses", as +;; defined by the Mozilla Public License, v. 2.0. +;; +;; Copyright (c) 2020 UXBOX Labs SL + +(ns app.main.ui.components.copy-button + (:require + [beicon.core :as rx] + [rumext.alpha :as mf] + [app.util.webapi :as wapi] + [app.util.timers :as timers] + [app.main.ui.icons :as i])) + +(mf/defc copy-button [{:keys [data]}] + (let [just-copied (mf/use-state false)] + (mf/use-effect + (mf/deps @just-copied) + (fn [] + (when @just-copied + (let [sub (timers/schedule 1000 #(reset! just-copied false))] + ;; On umounto we dispose the timer + #(rx/-dispose sub))))) + + [:button.copy-button + {:on-click #(when-not @just-copied + (do + (reset! just-copied true) + (wapi/write-to-clipboard data)))} + (if @just-copied + i/tick + i/copy)])) diff --git a/frontend/src/app/main/ui/viewer/handoff.cljs b/frontend/src/app/main/ui/viewer/handoff.cljs index cd1aa34cdd..1c22c07f15 100644 --- a/frontend/src/app/main/ui/viewer/handoff.cljs +++ b/frontend/src/app/main/ui/viewer/handoff.cljs @@ -63,9 +63,10 @@ [:* [:& left-sidebar {:frame frame}] [:div.handoff-svg-wrapper {:on-click (handle-select-frame frame)} - [:& render-frame-svg {:frame-id (:id frame) - :zoom (:zoom local) - :objects objects}]] + [:div.handoff-svg-container + [:& render-frame-svg {:frame-id (:id frame) + :zoom (:zoom local) + :objects objects}]]] [:& right-sidebar {:frame frame}]])])) (mf/defc handoff-content diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/blur.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/blur.cljs index a84a91b9cb..203f5658c5 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/blur.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/blur.cljs @@ -13,29 +13,30 @@ [cuerdas.core :as str] [app.util.i18n :refer [t]] [app.main.ui.icons :as i] - [app.main.ui.viewer.handoff.attributes.common :refer [copy-cb]])) + [app.util.code-gen :as cg] + [app.main.ui.components.copy-button :refer [copy-button]])) (defn has-blur? [shape] (:blur shape)) -(defn copy-blur [shape] - (copy-cb shape - :blur - :to-prop "filter" - :format #(str/fmt "blur(%spx)" (:value %)))) +(defn copy-data [shape] + (cg/generate-css-props + shape + :blur + {:to-prop "filter" + :format #(str/fmt "blur(%spx)" (:value %))})) (mf/defc blur-panel [{:keys [shapes locale]}] - (let [shapes (->> shapes (filter has-blur?)) - handle-copy (when (= (count shapes) 1) (copy-blur (first shapes)))] + (let [shapes (->> shapes (filter has-blur?))] (when (seq shapes) [:div.attributes-block [:div.attributes-block-title [:div.attributes-block-title-text (t locale "handoff.attributes.blur")] - (when handle-copy - [:button.attributes-copy-button {:on-click handle-copy} i/copy])] + (when (= (count shapes) 1) + [:& copy-button {:data (copy-data (first shapes))}])] (for [shape shapes] [:div.attributes-unit-row [:div.attributes-label (t locale "handoff.attributes.blur.value")] [:div.attributes-value (-> shape :blur :value) "px"] - [:button.attributes-copy-button {:on-click (copy-blur shape)} i/copy]])]))) + [:& copy-button {:data (copy-data shape)}]])]))) diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/common.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/common.cljs index 85c3a68758..fc50006b00 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/common.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/common.cljs @@ -18,14 +18,10 @@ [app.main.ui.icons :as i] [app.util.code-gen :as cg] [app.util.webapi :as wapi] + [app.main.ui.components.copy-button :refer [copy-button]] [app.main.ui.components.color-bullet :refer [color-bullet color-name]])) -(defn copy-cb [values properties & {:keys [to-prop format] :as params}] - (fn [event] - (let [result (cg/generate-css-props values properties params)] - (wapi/write-to-clipboard result)))) - -(mf/defc color-row [{:keys [color format on-copy on-change-format]}] +(mf/defc color-row [{:keys [color format copy-data on-change-format]}] (let [locale (mf/deref i18n/locale)] [:div.attributes-color-row [:& color-bullet {:color color}] @@ -52,6 +48,6 @@ [:option {:value "hsla"} (t locale "handoff.attributes.color.hsla")]]) - (when on-copy - [:button.attributes-copy-button {:on-click on-copy} i/copy])])) + (when copy-data + [:& copy-button {:data copy-data}])])) diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/fill.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/fill.cljs index c4c9d6e273..e433d557f0 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/fill.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/fill.cljs @@ -13,7 +13,9 @@ [app.util.i18n :refer [t]] [app.util.color :as uc] [app.main.ui.icons :as i] - [app.main.ui.viewer.handoff.attributes.common :refer [copy-cb color-row]])) + [app.util.code-gen :as cg] + [app.main.ui.components.copy-button :refer [copy-button]] + [app.main.ui.viewer.handoff.attributes.common :refer [color-row]])) (def fill-attributes [:fill-color :fill-color-gradient]) @@ -30,36 +32,31 @@ (or (:fill-color shape) (:fill-color-gradient shape)))) +(defn copy-data [shape] + (cg/generate-css-props + shape + fill-attributes + {:to-prop "background" + :format #(uc/color->background (shape->color shape))})) + (mf/defc fill-block [{:keys [shape locale]}] (let [color-format (mf/use-state :hex) - color (shape->color shape) - handle-copy (copy-cb shape - fill-attributes - :to-prop "background" - :format #(uc/color->background color))] + color (shape->color shape)] [:& color-row {:color color :format @color-format :on-change-format #(reset! color-format %) - :on-copy handle-copy}])) + :copy-data (copy-data shape)}])) (mf/defc fill-panel [{:keys [shapes locale]}] - (let [shapes (->> shapes (filter has-color?)) - handle-copy (when (= (count shapes) 1) - (copy-cb (first shapes) - fill-attributes - :to-prop "background" - :format #(-> shapes first shape->color uc/color->background)))] - + (let [shapes (->> shapes (filter has-color?))] (when (seq shapes) [:div.attributes-block [:div.attributes-block-title [:div.attributes-block-title-text (t locale "handoff.attributes.fill")] - (when handle-copy - [:button.attributes-copy-button - {:on-click handle-copy} - i/copy])] + (when (= (count shapes) 1) + [:& copy-button {:data (copy-data (first shapes))}])] (for [shape shapes] [:& fill-block {:key (str "fill-block-" (:id shape)) diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/image.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/image.cljs index 057c02369b..c4fd0c6397 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/image.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/image.cljs @@ -14,7 +14,8 @@ [app.config :as cfg] [app.util.i18n :refer [t]] [app.main.ui.icons :as i] - [app.main.ui.viewer.handoff.attributes.common :refer [copy-cb]])) + [app.util.code-gen :as cg] + [app.main.ui.components.copy-button :refer [copy-button]])) (defn has-image? [shape] (and (= (:type shape) :image))) @@ -30,12 +31,12 @@ [:div.attributes-unit-row [:div.attributes-label (t locale "handoff.attributes.image.width")] [:div.attributes-value (-> shape :metadata :width) "px"] - [:button.attributes-copy-button {:on-click (copy-cb shape :width)} i/copy]] + [:& copy-button {:data (cg/generate-css-props shape :width)}]] [:div.attributes-unit-row [:div.attributes-label (t locale "handoff.attributes.image.height")] [:div.attributes-value (-> shape :metadata :height) "px"] - [:button.attributes-copy-button {:on-click (copy-cb shape :height)} i/copy]] + [:& copy-button {:data (cg/generate-css-props shape :height)}]] (let [filename (last (str/split (-> shape :metadata :path) "/"))] [:a.download-button {:target "_blank" diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/layout.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/layout.cljs index 4c28d0145c..3aa984b7b8 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/layout.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/layout.cljs @@ -14,13 +14,22 @@ [app.util.i18n :refer [t]] [app.common.math :as mth] [app.main.ui.icons :as i] - [app.main.ui.viewer.handoff.attributes.common :refer [copy-cb]])) + [app.util.code-gen :as cg] + [app.main.ui.components.copy-button :refer [copy-button]])) -(defn copy-layout [shape] - (copy-cb shape - [:width :height :x :y :radius :rx] - :to-prop {:x "left" :y "top" :rotation "transform" :rx "border-radius"} - :format {:rotation #(str/fmt "rotate(%sdeg)" %)})) +(def properties [:width :height :x :y :radius :rx]) +(def params + {:to-prop {:x "left" + :y "top" + :rotation "transform" + :rx "border-radius"} + :format {:rotation #(str/fmt "rotate(%sdeg)" %)}}) + +(defn copy-data + ([shape] + (apply copy-data shape properties)) + ([shape & properties] + (cg/generate-css-props shape properties params))) (mf/defc layout-block [{:keys [shape locale]}] @@ -28,65 +37,46 @@ [:div.attributes-unit-row [:div.attributes-label (t locale "handoff.attributes.layout.width")] [:div.attributes-value (mth/precision (:width shape) 2) "px"] - [:button.attributes-copy-button - {:on-click (copy-cb shape :width)} - i/copy]] + [:& copy-button {:data (copy-data shape :width)}]] [:div.attributes-unit-row [:div.attributes-label (t locale "handoff.attributes.layout.height")] [:div.attributes-value (mth/precision (:height shape) 2) "px"] - [:button.attributes-copy-button - {:on-click (copy-cb shape :height)} - i/copy]] + [:& copy-button {:data (copy-data shape :height)}]] (when (not= (:x shape) 0) [:div.attributes-unit-row [:div.attributes-label (t locale "handoff.attributes.layout.left")] [:div.attributes-value (mth/precision (:x shape) 2) "px"] - [:button.attributes-copy-button - {:on-click (copy-cb shape :x :to-prop "left")} - i/copy]]) + [:& copy-button {:data (copy-data shape :x)}]]) (when (not= (:y shape) 0) [:div.attributes-unit-row [:div.attributes-label (t locale "handoff.attributes.layout.top")] [:div.attributes-value (mth/precision (:y shape) 2) "px"] - [:button.attributes-copy-button - {:on-click (copy-cb shape :y :to-prop "top")} - i/copy]]) + [:& copy-button {:data (copy-data shape :y)}]]) (when (and (:rx shape) (not= (:rx shape) 0)) [:div.attributes-unit-row [:div.attributes-label (t locale "handoff.attributes.layout.radius")] [:div.attributes-value (mth/precision (:rx shape) 2) "px"] - [:button.attributes-copy-button - {:on-click (copy-cb shape :rx :to-prop "border-radius")} - i/copy]]) + [:& copy-button {:data (copy-data shape :rx)}]]) (when (not= (:rotation shape 0) 0) [:div.attributes-unit-row [:div.attributes-label (t locale "handoff.attributes.layout.rotation")] [:div.attributes-value (mth/precision (:rotation shape) 2) "deg"] - [:button.attributes-copy-button - {:on-click (copy-cb shape - :rotation - :to-prop "transform" - :format #(str/fmt "rotate(%sdeg)" %))} - i/copy]])]) + [:& copy-button {:data (copy-data shape :rotation)}]])]) (mf/defc layout-panel [{:keys [shapes locale]}] - (let [handle-copy (when (= (count shapes) 1) - (copy-layout (first shapes)))] - [:div.attributes-block - [:div.attributes-block-title - [:div.attributes-block-title-text (t locale "handoff.attributes.layout")] - (when handle-copy - [:button.attributes-copy-button - {:on-click handle-copy} - i/copy])] + [:div.attributes-block + [:div.attributes-block-title + [:div.attributes-block-title-text (t locale "handoff.attributes.layout")] + (when (= (count shapes) 1) + [:& copy-button {:data (copy-data (first shapes))}])] - (for [shape shapes] - [:& layout-block {:shape shape - :locale locale}])])) + (for [shape shapes] + [:& layout-block {:shape shape + :locale locale}])]) diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/shadow.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/shadow.cljs index d9b020635b..44089cc463 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/shadow.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/shadow.cljs @@ -14,13 +14,30 @@ [app.util.i18n :refer [t]] [app.util.code-gen :as cg] [app.main.ui.icons :as i] - [app.main.ui.viewer.handoff.attributes.common :refer [copy-cb color-row]])) + [app.util.code-gen :as cg] + [app.main.ui.components.copy-button :refer [copy-button]] + [app.main.ui.viewer.handoff.attributes.common :refer [color-row]])) (defn has-shadow? [shape] (:shadow shape)) +(defn shape-copy-data [shape] + (cg/generate-css-props + shape + :shadow + {:to-prop "box-shadow" + :format #(str/join ", " (map cg/shadow->css (:shadow shape)))})) + +(defn shadow-copy-data [shadow] + (cg/generate-css-props + shadow + :style + {:to-prop "box-shadow" + :format #(cg/shadow->css shadow)})) + (mf/defc shadow-block [{:keys [shape locale shadow]}] - (let [color-format (mf/use-state :hex)] + (let [color-format (mf/use-state :hex) + copy-data (shadow-copy-data shadow)] [:div.attributes-shadow-block [:div.attributes-shadow-row [:div.attributes-label (->> shadow :style name (str "handoff.attributes.shadow.style.") (t locale))] @@ -40,29 +57,20 @@ [:div.attributes-label (t locale "handoff.attributes.shadow.shorthand.spread")] [:div.attributes-value (str (:spread shadow))]] - [:button.attributes-copy-button - {:on-click (copy-cb shadow - :style - :to-prop "box-shadow" - :format #(cg/shadow->css shadow))} - i/copy]] + [:& copy-button {:data (shadow-copy-data shadow)}]] + [:& color-row {:color (:color shadow) :format @color-format :on-change-format #(reset! color-format %)}]])) (mf/defc shadow-panel [{:keys [shapes locale]}] - (let [shapes (->> shapes (filter has-shadow?)) - handle-copy-shadow (when (= (count shapes) 1) - (copy-cb (first shapes) - :shadow - :to-prop "box-shadow" - :format #(str/join ", " (map cg/shadow->css (:shadow (first shapes))))))] + (let [shapes (->> shapes (filter has-shadow?))] (when (seq shapes) [:div.attributes-block [:div.attributes-block-title [:div.attributes-block-title-text (t locale "handoff.attributes.shadow")] - (when handle-copy-shadow - [:button.attributes-copy-button {:on-click handle-copy-shadow} i/copy])] + (when (= (count shapes) 1) + [:& copy-button {:data (shape-copy-data (first shapes))}])] [:div.attributes-shadow-blocks (for [shape shapes] diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/stroke.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/stroke.cljs index 6dc73f410d..de9f7da645 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/stroke.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/stroke.cljs @@ -14,7 +14,9 @@ [app.util.i18n :refer [t]] [app.util.color :as uc] [app.main.ui.icons :as i] - [app.main.ui.viewer.handoff.attributes.common :refer [copy-cb color-row]])) + [app.util.code-gen :as cg] + [app.main.ui.components.copy-button :refer [copy-button]] + [app.main.ui.viewer.handoff.attributes.common :refer [color-row]])) (defn shape->color [shape] {:color (:stroke-color shape) @@ -33,49 +35,46 @@ (and (:stroke-style shape) (not= (:stroke-style shape) :none))) +(defn copy-stroke-data [shape] + (cg/generate-css-props + shape + :stroke-style + {:to-prop "border" + :format #(format-stroke shape)})) + +(defn copy-color-data [shape] + (cg/generate-css-props + shape + :stroke-color + {:to-prop "border-color" + :format #(uc/color->background (shape->color shape))})) + (mf/defc stroke-block [{:keys [shape locale]}] (let [color-format (mf/use-state :hex) - color (shape->color shape) - handle-copy-stroke (copy-cb shape - :stroke-style - :to-prop "border" - :format #(format-stroke shape)) - - handle-copy-color (copy-cb shape - :stroke-color - :to-prop "border-color" - :format #(uc/color->background color))] - + color (shape->color shape)] [:* [:& color-row {:color color :format @color-format - :on-change-format #(reset! color-format %) - :on-copy handle-copy-color}] + :copy-data (copy-color-data shape) + :on-change-format #(reset! color-format %)}] [:div.attributes-stroke-row [:div.attributes-label (t locale "handoff.attributes.stroke.width")] [:div.attributes-value (:stroke-width shape) "px"] [:div.attributes-value (->> shape :stroke-style name (str "handoff.attributes.stroke.style.") (t locale))] [:div.attributes-label (->> shape :stroke-alignment name (str "handoff.attributes.stroke.alignment.") (t locale))] - [:button.attributes-copy-button {:on-click handle-copy-stroke} i/copy]]])) + [:& copy-button {:data (copy-stroke-data shape)}]]])) (mf/defc stroke-panel [{:keys [shapes locale]}] - (let [shapes (->> shapes (filter has-stroke?)) - handle-copy (when (= (count shapes) 1) - (copy-cb (first shapes) - :stroke-style - :to-prop "border" - :format #(format-stroke (first shapes))))] - + (let [shapes (->> shapes (filter has-stroke?))] (when (seq shapes) [:div.attributes-block [:div.attributes-block-title [:div.attributes-block-title-text (t locale "handoff.attributes.stroke")] - (when handle-copy - [:button.attributes-copy-button - {:on-click handle-copy} i/copy])] + (when (= (count shapes) 1) + [:& copy-button {:data (copy-stroke-data (first shapes))}])] (for [shape shapes] [:& stroke-block {:key (str "stroke-color-" (:id shape)) diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/text.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/text.cljs index b5847cc14d..583c22280f 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/text.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/text.cljs @@ -18,7 +18,9 @@ [app.main.fonts :as fonts] [app.main.ui.icons :as i] [app.util.webapi :as wapi] - [app.main.ui.viewer.handoff.attributes.common :refer [copy-cb color-row]])) + [app.main.ui.viewer.handoff.attributes.common :refer [color-row]] + [app.util.code-gen :as cg] + [app.main.ui.components.copy-button :refer [copy-button]])) (defn has-text? [shape] (:content shape)) @@ -40,22 +42,28 @@ :id (:fill-ref-id shape) :file-id (:fill-ref-file-id shape)}) -(defn format-style [color] - {:font-family #(str "'" % "'") - :font-style #(str "'" % "'") - :font-size #(str % "px") - :line-height #(str % "px") - :letter-spacing #(str % "px") - :text-decoration name - :text-transform name - :fill-color #(uc/color->background color) - :fill-color-gradient #(uc/color->background color)}) +(def params + {:to-prop {:fill-color "color" + :fill-color-gradient "color"} + :format {:font-family #(str "'" % "'") + :font-style #(str "'" % "'") + :font-size #(str % "px") + :line-height #(str % "px") + :letter-spacing #(str % "px") + :text-decoration name + :text-transform name + :fill-color #(-> %2 shape->color uc/color->background) + :fill-color-gradient #(-> %2 shape->color uc/color->background)}}) + +(defn copy-style-data + ([style] + (cg/generate-css-props style properties params)) + ([style & properties] + (cg/generate-css-props style properties params))) (mf/defc typography-block [{:keys [shape locale text style full-style]}] (let [color-format (mf/use-state :hex) - color (shape->color style) - to-prop {:fill-color "color" - :fill-color-gradient "color"}] + color (shape->color style)] [:div.attributes-text-block [:div.attributes-typography-row [:div.typography-sample @@ -63,68 +71,59 @@ :font-weight (:font-weight full-style) :font-style (:font-style full-style)}} (t locale "workspace.assets.typography.sample")] - [:button.attributes-copy-button - {:on-click (copy-cb style properties - :to-prop to-prop - :format (format-style color))} - i/copy]] + [:& copy-button {:data (copy-style-data style)}]] [:div.attributes-content-row [:pre.attributes-content (str/trim text)] - [:button.attributes-copy-button - {:on-click #(wapi/write-to-clipboard (str/trim text))} - i/copy]] + [:& copy-button {:data (str/trim text)}]] (when (or (:fill-color style) (:fill-color-gradient style)) [:& color-row {:format @color-format - :on-change-format #(reset! color-format %) :color (shape->color style) - :on-copy (copy-cb style - [:fill-color :fill-color-gradient] - :to-prop to-prop - :format (format-style color))}]) + :copy-data (copy-style-data style :fill-color :fill-color-gradient) + :on-change-format #(reset! color-format %)}]) (when (:font-id style) [:div.attributes-unit-row [:div.attributes-label (t locale "handoff.attributes.typography.font-family")] [:div.attributes-value (-> style :font-id fonts/get-font-data :name)] - [:button.attributes-copy-button {:on-click (copy-cb style :font-family :format identity)} i/copy]]) + [:& copy-button {:data (copy-style-data style :font-family)}]]) (when (:font-style style) [:div.attributes-unit-row [:div.attributes-label (t locale "handoff.attributes.typography.font-style")] [:div.attributes-value (str (:font-style style))] - [:button.attributes-copy-button {:on-click (copy-cb style :font-style :format identity)} i/copy]]) + [:& copy-button {:data (copy-style-data style :font-style)}]]) (when (:font-size style) [:div.attributes-unit-row [:div.attributes-label (t locale "handoff.attributes.typography.font-size")] [:div.attributes-value (str (:font-size style)) "px"] - [:button.attributes-copy-button {:on-click (copy-cb style :font-size :format #(str % "px"))} i/copy]]) + [:& copy-button {:data (copy-style-data style :font-size)}]]) (when (:line-height style) [:div.attributes-unit-row [:div.attributes-label (t locale "handoff.attributes.typography.line-height")] [:div.attributes-value (str (:line-height style)) "px"] - [:button.attributes-copy-button {:on-click (copy-cb style :line-height :format #(str % "px"))} i/copy]]) + [:& copy-button {:data (copy-style-data style :line-height)}]]) (when (:letter-spacing style) [:div.attributes-unit-row [:div.attributes-label (t locale "handoff.attributes.typography.letter-spacing")] [:div.attributes-value (str (:letter-spacing style)) "px"] - [:button.attributes-copy-button {:on-click (copy-cb style :letter-spacing :format #(str % "px"))} i/copy]]) + [:& copy-button {:data (copy-style-data style :letter-spacing)}]]) (when (:text-decoration style) [:div.attributes-unit-row [:div.attributes-label (t locale "handoff.attributes.typography.text-decoration")] [:div.attributes-value (->> style :text-decoration (str "handoff.attributes.typography.text-decoration.") (t locale))] - [:button.attributes-copy-button {:on-click (copy-cb style :text-decoration :format name)} i/copy]]) + [:& copy-button {:data (copy-style-data style :text-decoration)}]]) (when (:text-transform style) [:div.attributes-unit-row [:div.attributes-label (t locale "handoff.attributes.typography.text-transform")] [:div.attributes-value (->> style :text-transform (str "handoff.attributes.typography.text-transform.") (t locale))] - [:button.attributes-copy-button {:on-click (copy-cb style :text-transform :format name)} i/copy]])])) + [:& copy-button {:data (copy-style-data style :text-transform)}]])])) (mf/defc text-block [{:keys [shape locale]}] diff --git a/frontend/src/app/main/ui/viewer/handoff/code.cljs b/frontend/src/app/main/ui/viewer/handoff/code.cljs index 21df187b71..19ff75c576 100644 --- a/frontend/src/app/main/ui/viewer/handoff/code.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/code.cljs @@ -9,17 +9,16 @@ (ns app.main.ui.viewer.handoff.code (:require - ["highlight.js" :as hljs] ["js-beautify" :as beautify] [cuerdas.core :as str] [rumext.alpha :as mf] [app.util.i18n :as i18n] - [app.util.color :as uc] [app.util.dom :as dom] - [app.util.webapi :as wapi] [app.util.code-gen :as cg] [app.main.ui.icons :as i] - [app.common.geom.shapes :as gsh])) + [app.common.geom.shapes :as gsh] + [app.main.ui.components.copy-button :refer [copy-button]] + [app.main.ui.components.code-block :refer [code-block]])) (defn generate-markup-code [type shapes] (let [frame (dom/query js/document "#svg-frame") @@ -35,22 +34,15 @@ (remove nil?) (str/join "\n\n")))) -(mf/defc code-block [{:keys [code type]}] +(defn format-code [code type] (let [code (-> code (str/replace "" "") - (str/replace "><" ">\n<")) - code (cond-> code - (= type "svg") (beautify/html #js {"indent_size" 2})) - block-ref (mf/use-ref)] - (mf/use-effect - (mf/deps code type block-ref) - (fn [] - (hljs/highlightBlock (mf/ref-val block-ref)))) - [:pre.code-display {:class type - :ref block-ref} code])) + (str/replace "><" ">\n<"))] + (cond-> code + (= type "svg") (beautify/html #js {"indent_size" 2})))) (mf/defc code - [{:keys [shapes frame]}] + [{:keys [shapes frame on-expand]}] (let [style-type (mf/use-state "css") markup-type (mf/use-state "svg") @@ -58,8 +50,11 @@ shapes (->> shapes (map #(gsh/translate-to-frame % frame))) - style-code (cg/generate-style-code @style-type shapes) - markup-code (mf/use-memo (mf/deps shapes) #(generate-markup-code @markup-type shapes))] + style-code (-> (cg/generate-style-code @style-type shapes) + (format-code "css")) + + markup-code (-> (mf/use-memo (mf/deps shapes) #(generate-markup-code @markup-type shapes)) + (format-code "svg"))] [:div.element-options [:div.code-block [:div.code-row-lang @@ -69,9 +64,11 @@ #_[:option {:value "less"} "Less"] #_[:option {:value "stylus"} "Stylus"]] - [:button.attributes-copy-button - {:on-click #(wapi/write-to-clipboard style-code)} - i/copy]] + [:button.expand-button + {:on-click on-expand } + i/full-screen] + + [:& copy-button { :data style-code }]] [:div.code-row-display [:& code-block {:type @style-type @@ -83,9 +80,11 @@ [:option "SVG"] [:option "HTML"]] - [:button.attributes-copy-button - {:on-click #(wapi/write-to-clipboard markup-code)} - i/copy]] + [:button.expand-button + {:on-click on-expand} + i/full-screen] + + [:& copy-button { :data markup-code }]] [:div.code-row-display [:& code-block {:type @markup-type diff --git a/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs b/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs index 1fbb6e1cb7..3a63df4298 100644 --- a/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs @@ -32,11 +32,12 @@ (mf/defc right-sidebar [{:keys [frame]}] - (let [locale (mf/deref i18n/locale) + (let [expanded (mf/use-state false) + locale (mf/deref i18n/locale) section (mf/use-state :info #_:code) selected-ref (mf/use-memo (make-selected-shapes-iref)) shapes (mf/deref selected-ref)] - [:aside.settings-bar.settings-bar-right + [:aside.settings-bar.settings-bar-right {:class (when @expanded "expanded")} [:div.settings-bar-inside (when (seq shapes) [:div.tool-window @@ -51,7 +52,9 @@ [:span.tool-window-bar-title (->> shapes first :type name (str "handoff.tabs.code.selected.") (t locale))]]) ] [:div.tool-window-content - [:& tab-container {:on-change-tab #(reset! section %) + [:& tab-container {:on-change-tab #(do + (reset! expanded false) + (reset! section %)) :selected @section} [:& tab-element {:id :info :title (t locale "handoff.tabs.info")} [:& attributes {:frame frame @@ -59,4 +62,5 @@ [:& tab-element {:id :code :title (t locale "handoff.tabs.code")} [:& code {:frame frame - :shapes shapes}]]]]])]])) + :shapes shapes + :on-expand #(swap! expanded not)}]]]]])]])) diff --git a/frontend/src/app/util/code_gen.cljs b/frontend/src/app/util/code_gen.cljs index f3c4f5766d..f40a4f3722 100644 --- a/frontend/src/app/util/code_gen.cljs +++ b/frontend/src/app/util/code_gen.cljs @@ -77,34 +77,38 @@ :fill-color format-fill-color}}) -(defn generate-css-props [values properties params] - (let [{:keys [to-prop format tab-size] :or {to-prop {} tab-size 0}} params - ;; We allow the :format and :to-prop to be a map for different properties - ;; or just a value for a single property. This code transform a single - ;; property to a uniform one - properties (if-not (coll? properties) [properties] properties) +(defn generate-css-props + ([values properties] + (generate-css-props values properties nil)) - format (if (not (map? format)) - (into {} (map #(vector % format) properties)) - format) + ([values properties params] + (let [{:keys [to-prop format tab-size] :or {to-prop {} tab-size 0}} params + ;; We allow the :format and :to-prop to be a map for different properties + ;; or just a value for a single property. This code transform a single + ;; property to a uniform one + properties (if-not (coll? properties) [properties] properties) - to-prop (if (not (map? to-prop)) - (into {} (map #(vector % to-prop) properties)) - to-prop) + format (if (not (map? format)) + (into {} (map #(vector % format) properties)) + format) - default-format (fn [value] (str (mth/precision value 2) "px")) - format-property (fn [prop] - (let [css-prop (or (prop to-prop) (name prop)) - format-fn (or (prop format) default-format)] - (str - (str/repeat " " tab-size) - (str/fmt "%s: %s;" css-prop (format-fn (prop values) values)))))] + to-prop (if (not (map? to-prop)) + (into {} (map #(vector % to-prop) properties)) + to-prop) - (->> properties - (remove #(let [value (get values %)] - (or (nil? value) (= value 0)))) - (map format-property) - (str/join "\n")))) + default-format (fn [value] (str (mth/precision value 2) "px")) + format-property (fn [prop] + (let [css-prop (or (prop to-prop) (name prop)) + format-fn (or (prop format) default-format)] + (str + (str/repeat " " tab-size) + (str/fmt "%s: %s;" css-prop (format-fn (prop values) values)))))] + + (->> properties + (remove #(let [value (get values %)] + (or (nil? value) (= value 0)))) + (map format-property) + (str/join "\n"))))) (defn shape->properties [shape] (let [props (->> styles-data vals (mapcat :props)) From 8ae52be773cc0f07fbf51c6bc310bff685dd1b5c Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Tue, 3 Nov 2020 10:54:37 +0100 Subject: [PATCH 15/48] :sparkles: Add library names to handoff views --- backend/src/app/services/queries/viewer.clj | 7 +- .../styles/main/partials/handoff.scss | 59 ++++++++++++--- frontend/src/app/main/data/viewer.cljs | 11 ++- .../app/main/ui/components/copy_button.cljs | 2 +- .../ui/viewer/handoff/attributes/common.cljs | 70 ++++++++++++------ .../ui/viewer/handoff/attributes/fill.cljs | 4 +- .../ui/viewer/handoff/attributes/stroke.cljs | 4 +- .../ui/viewer/handoff/attributes/text.cljs | 74 +++++++++++++------ frontend/src/app/util/text.cljs | 4 +- 9 files changed, 169 insertions(+), 66 deletions(-) diff --git a/backend/src/app/services/queries/viewer.clj b/backend/src/app/services/queries/viewer.clj index ffcff177ae..bfd5b9aaee 100644 --- a/backend/src/app/services/queries/viewer.clj +++ b/backend/src/app/services/queries/viewer.clj @@ -49,9 +49,12 @@ project (retrieve-project conn (:project-id file)) page (get-in file [:data :pages-index page-id]) - bundle {:file (dissoc file :data) + file-library (select-keys (:data file) [:colors :media :typographies]) + bundle {:file (-> (dissoc file :data) + (merge file-library)) :page (get-in file [:data :pages-index page-id]) - :project project}] + :project project} + ] (if (string? share-token) (do (check-shared-token! conn file-id page-id share-token) diff --git a/frontend/resources/styles/main/partials/handoff.scss b/frontend/resources/styles/main/partials/handoff.scss index ca741a3d24..3f407617fe 100644 --- a/frontend/resources/styles/main/partials/handoff.scss +++ b/frontend/resources/styles/main/partials/handoff.scss @@ -104,9 +104,32 @@ .attributes-color-row { display: flex; + flex-direction: column; padding: 1rem 0; position: relative; - align-items: center; + + .attributes-color-id { + display: flex; + align-items: center; + + & > * { + margin: 0 0.5rem; + } + margin-bottom: 0.5rem; + } + + .attributes-color-value { + display: flex; + align-items: center; + + & > * { + margin: 0 0.5rem; + } + + & :last-child { + margin-right: 0; + } + } .color-text { width: 3rem; @@ -123,19 +146,15 @@ border-radius: $br-small; border: 1px solid $color-gray-60; } + + .hide-color .color-bullet { + visibility: hidden; + } .copy-button { padding: 1rem 0.5rem; margin-top: 0.25rem; } - & > * { - margin: 0 0.5rem; - } - - & :last-child { - margin-right: 0; - } - select { font-size: $fs12; margin: 0; @@ -226,6 +245,22 @@ justify-content: space-between; } + .attributes-typography-name-row { + position: relative; + margin-top: 0.5rem; + border: 1px solid $color-black; + border-radius: 4px; + margin: 0.5rem; + display: flex; + flex-direction: row; + align-items: center; + + .copy-button { + padding: 0.5rem; + margin-top: 0.25rem; + } + } + .attributes-typography-row { position: relative; margin: 0.5rem; @@ -234,6 +269,7 @@ .typography-sample { font-size: $fs16; } + } .download-button { @@ -260,7 +296,8 @@ .attributes-shadow-row, .attributes-stroke-row, .attributes-typography-row, - .attributes-content-row { + .attributes-content-row, + .attributes-typography-name-row { &:hover { .expand-button, .copy-button { @@ -343,6 +380,6 @@ } } -.element-options :first-child { +.element-options > :first-child { border-top: none; } diff --git a/frontend/src/app/main/data/viewer.cljs b/frontend/src/app/main/data/viewer.cljs index 8a09cf13c8..67c1310abf 100644 --- a/frontend/src/app/main/data/viewer.cljs +++ b/frontend/src/app/main/data/viewer.cljs @@ -72,8 +72,10 @@ (let [params (cond-> {:page-id page-id :file-id file-id} (string? token) (assoc :share-token token))] - (->> (rp/query :viewer-bundle params) - (rx/map bundle-fetched) + (->> (rx/zip (rp/query :viewer-bundle params) + (rp/query :file-libraries {:file-id file-id})) + (rx/first) + (rx/map #(apply bundle-fetched %)) #_(rx/catch (fn [error-data] (rx/of (rt/nav :not-found))))))))) @@ -87,7 +89,7 @@ (vec)))) (defn bundle-fetched - [{:keys [project file page share-token] :as bundle}] + [{:keys [project file page share-token] :as bundle} libraries] (us/verify ::bundle bundle) (ptk/reify ::file-fetched ptk/UpdateEvent @@ -95,7 +97,8 @@ (let [objects (:objects page) frames (extract-frames objects)] (-> state - (assoc :viewer-data {:project project + (assoc :viewer-libraries (into {} (map #(vector (:id %) %) libraries)) + :viewer-data {:project project :objects objects :file file :page page diff --git a/frontend/src/app/main/ui/components/copy_button.cljs b/frontend/src/app/main/ui/components/copy_button.cljs index c23f575376..2f8e9d6107 100644 --- a/frontend/src/app/main/ui/components/copy_button.cljs +++ b/frontend/src/app/main/ui/components/copy_button.cljs @@ -22,7 +22,7 @@ (fn [] (when @just-copied (let [sub (timers/schedule 1000 #(reset! just-copied false))] - ;; On umounto we dispose the timer + ;; On unmount we dispose the timer #(rx/-dispose sub))))) [:button.copy-button diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/common.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/common.cljs index fc50006b00..8fe89b976e 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/common.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/common.cljs @@ -11,43 +11,69 @@ (:require [rumext.alpha :as mf] [cuerdas.core :as str] + [okulary.core :as l] + [app.common.math :as mth] [app.util.dom :as dom] [app.util.i18n :refer [t] :as i18n] [app.util.color :as uc] - [app.common.math :as mth] - [app.main.ui.icons :as i] [app.util.code-gen :as cg] [app.util.webapi :as wapi] + [app.main.ui.icons :as i] + [app.main.store :as st] [app.main.ui.components.copy-button :refer [copy-button]] [app.main.ui.components.color-bullet :refer [color-bullet color-name]])) + +(def file-colors-ref + (l/derived (l/in [:viewer-data :file :colors]) st/state)) + +(defn make-colors-library-ref [file-id] + (let [get-library + (fn [state] + (get-in state [:viewer-libraries file-id :data :colors]))] + #(l/derived get-library st/state))) + (mf/defc color-row [{:keys [color format copy-data on-change-format]}] - (let [locale (mf/deref i18n/locale)] + (let [locale (mf/deref i18n/locale) + + colors-library-ref (mf/use-memo + (mf/deps (:file-id color)) + (make-colors-library-ref (:file-id color))) + colors-library (mf/deref colors-library-ref) + + file-colors (mf/deref file-colors-ref) + + color-library-name (get-in (or colors-library file-colors) [(:id color) :name])] [:div.attributes-color-row - [:& color-bullet {:color color}] + (when color-library-name + [:div.attributes-color-id + [:& color-bullet {:color color}] + [:div color-library-name]]) - (if (:gradient color) - [:& color-name {:color color}] - (case format - :rgba (let [[r g b a] (->> (uc/hex->rgba (:color color) (:opacity color)) (map #(mth/precision % 2)))] - [:div (str/fmt "%s, %s, %s, %s" r g b a)]) - :hsla (let [[h s l a] (->> (uc/hex->hsla (:color color) (:opacity color)) (map #(mth/precision % 2)))] - [:div (str/fmt "%s, %s, %s, %s" h s l a)]) - [:* - [:& color-name {:color color}] - (when-not (:gradient color) [:div (str (* 100 (:opacity color)) "%")])])) + [:div.attributes-color-value {:class (when color-library-name "hide-color")} + [:& color-bullet {:color color}] - (when-not (and on-change-format (:gradient color)) - [:select {:on-change #(-> (dom/get-target-val %) keyword on-change-format)} - [:option {:value "hex"} - (t locale "handoff.attributes.color.hex")] + (if (:gradient color) + [:& color-name {:color color}] + (case format + :rgba (let [[r g b a] (->> (uc/hex->rgba (:color color) (:opacity color)) (map #(mth/precision % 2)))] + [:div (str/fmt "%s, %s, %s, %s" r g b a)]) + :hsla (let [[h s l a] (->> (uc/hex->hsla (:color color) (:opacity color)) (map #(mth/precision % 2)))] + [:div (str/fmt "%s, %s, %s, %s" h s l a)]) + [:* + [:& color-name {:color color}] + (when-not (:gradient color) [:div (str (* 100 (:opacity color)) "%")])])) - [:option {:value "rgba"} - (t locale "handoff.attributes.color.rgba")] + (when-not (and on-change-format (:gradient color)) + [:select {:on-change #(-> (dom/get-target-val %) keyword on-change-format)} + [:option {:value "hex"} + (t locale "handoff.attributes.color.hex")] - [:option {:value "hsla"} - (t locale "handoff.attributes.color.hsla")]]) + [:option {:value "rgba"} + (t locale "handoff.attributes.color.rgba")] + [:option {:value "hsla"} + (t locale "handoff.attributes.color.hsla")]])] (when copy-data [:& copy-button {:data copy-data}])])) diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/fill.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/fill.cljs index e433d557f0..8afb6d5ba0 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/fill.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/fill.cljs @@ -23,8 +23,8 @@ {:color (:fill-color shape) :opacity (:fill-opacity shape) :gradient (:fill-color-gradient shape) - :id (:fill-ref-id shape) - :file-id (:fill-ref-file-id shape)}) + :id (:fill-color-ref-id shape) + :file-id (:fill-color-ref-file shape)}) (defn has-color? [shape] (and diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/stroke.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/stroke.cljs index de9f7da645..fe26f8be5e 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/stroke.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/stroke.cljs @@ -22,8 +22,8 @@ {:color (:stroke-color shape) :opacity (:stroke-opacity shape) :gradient (:stroke-color-gradient shape) - :id (:stroke-ref-id shape) - :file-id (:stroke-ref-file-id shape)}) + :id (:stroke-color-ref-id shape) + :file-id (:stroke-color-ref-file shape)}) (defn format-stroke [shape] (let [width (:stroke-width shape) diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/text.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/text.cljs index 583c22280f..9c1090f416 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/text.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/text.cljs @@ -11,6 +11,7 @@ (:require [rumext.alpha :as mf] [cuerdas.core :as str] + [okulary.core :as l] [app.util.data :as d] [app.util.i18n :refer [t]] [app.util.color :as uc] @@ -20,11 +21,22 @@ [app.util.webapi :as wapi] [app.main.ui.viewer.handoff.attributes.common :refer [color-row]] [app.util.code-gen :as cg] + [app.main.store :as st] [app.main.ui.components.copy-button :refer [copy-button]])) (defn has-text? [shape] (:content shape)) +(def file-typographies-ref + (l/derived (l/in [:viewer-data :file :typographies]) st/state)) + +(defn make-typographies-library-ref [file-id] + (let [get-library + (fn [state] + (get-in state [:viewer-libraries file-id :data :typographies]))] + #(l/derived get-library st/state))) + + (def properties [:fill-color :fill-color-gradient :font-family @@ -39,21 +51,21 @@ {:color (:fill-color shape) :opacity (:fill-opacity shape) :gradient (:fill-color-gradient shape) - :id (:fill-ref-id shape) - :file-id (:fill-ref-file-id shape)}) + :id (:fill-color-ref-id shape) + :file-id (:fill-color-ref-file shape)}) (def params {:to-prop {:fill-color "color" :fill-color-gradient "color"} - :format {:font-family #(str "'" % "'") - :font-style #(str "'" % "'") - :font-size #(str % "px") - :line-height #(str % "px") - :letter-spacing #(str % "px") - :text-decoration name - :text-transform name - :fill-color #(-> %2 shape->color uc/color->background) - :fill-color-gradient #(-> %2 shape->color uc/color->background)}}) + :format {:font-family #(str "'" % "'") + :font-style #(str "'" % "'") + :font-size #(str % "px") + :line-height #(str % "px") + :letter-spacing #(str % "px") + :text-decoration name + :text-transform name + :fill-color #(-> %2 shape->color uc/color->background) + :fill-color-gradient #(-> %2 shape->color uc/color->background)}}) (defn copy-style-data ([style] @@ -62,16 +74,37 @@ (cg/generate-css-props style properties params))) (mf/defc typography-block [{:keys [shape locale text style full-style]}] - (let [color-format (mf/use-state :hex) - color (shape->color style)] + (let [typography-library-ref (mf/use-memo + (mf/deps (:typography-ref-file style)) + (make-typographies-library-ref (:typography-ref-file style))) + typography-library (mf/deref typography-library-ref) + + file-typographies (mf/deref file-typographies-ref) + + color-format (mf/use-state :hex) + color (shape->color style) + + typography (get (or typography-library file-typographies) (:typography-ref-id style))] + [:div.attributes-text-block - [:div.attributes-typography-row - [:div.typography-sample - {:style {:font-family (:font-family full-style) - :font-weight (:font-weight full-style) - :font-style (:font-style full-style)}} - (t locale "workspace.assets.typography.sample")] - [:& copy-button {:data (copy-style-data style)}]] + (if (:typography-ref-id style) + [:div.attributes-typography-name-row + [:div.typography-entry + [:div.typography-sample + {:style {:font-family (:font-family typography) + :font-weight (:font-weight typography) + :font-style (:font-style typography)}} + (t locale "workspace.assets.typography.sample")]] + [:div.typography-entry-name (:name typography)] + [:& copy-button {:data (copy-style-data typography)}]] + + [:div.attributes-typography-row + [:div.typography-sample + {:style {:font-family (:font-family full-style) + :font-weight (:font-weight full-style) + :font-style (:font-style full-style)}} + (t locale "workspace.assets.typography.sample")] + [:& copy-button {:data (copy-style-data style)}]]) [:div.attributes-content-row [:pre.attributes-content (str/trim text)] @@ -129,7 +162,6 @@ (mf/defc text-block [{:keys [shape locale]}] (let [font (ut/search-text-attrs (:content shape) (keys ut/default-text-attrs)) - style-text-blocks (->> (keys ut/default-text-attrs) (ut/parse-style-text-blocks (:content shape)) (remove (fn [[style text]] (str/empty? (str/trim text)))) diff --git a/frontend/src/app/util/text.cljs b/frontend/src/app/util/text.cljs index e5226b04d0..4e1ad7136a 100644 --- a/frontend/src/app/util/text.cljs +++ b/frontend/src/app/util/text.cljs @@ -3,7 +3,9 @@ [cuerdas.core :as str])) (defonce default-text-attrs - {:font-id "sourcesanspro" + {:typography-ref-file nil + :typography-ref-id nil + :font-id "sourcesanspro" :font-family "sourcesanspro" :font-variant-id "regular" :font-size "14" From 02207dedf3ebde37c5a9cfa2963067f075644eb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Fri, 30 Oct 2020 13:52:27 +0100 Subject: [PATCH 16/48] :tada: Show master component in options --- common/app/common/pages_helpers.cljc | 4 +- frontend/resources/locales.json | 6 ++ .../partials/sidebar-element-options.scss | 35 ++++++++- .../data/workspace/libraries_helpers.cljs | 7 -- frontend/src/app/main/refs.cljs | 12 ++- .../workspace/sidebar/options/component.cljs | 76 +++++++++++++++++++ .../ui/workspace/sidebar/options/group.cljs | 8 +- .../ui/workspace/sidebar/options/rect.cljs | 1 + 8 files changed, 133 insertions(+), 16 deletions(-) create mode 100644 frontend/src/app/main/ui/workspace/sidebar/options/component.cljs diff --git a/common/app/common/pages_helpers.cljc b/common/app/common/pages_helpers.cljc index b53f2714bd..e9722ec2dc 100644 --- a/common/app/common/pages_helpers.cljc +++ b/common/app/common/pages_helpers.cljc @@ -53,9 +53,9 @@ (get-in container [:objects shape-id])) (defn get-component - [component-id file-id local-file libraries] + [component-id file-id local-library libraries] (let [file (if (nil? file-id) - local-file + local-library (get-in libraries [file-id :data]))] (get-in file [:components component-id]))) diff --git a/frontend/resources/locales.json b/frontend/resources/locales.json index 43cd97eee0..37ce988d8a 100644 --- a/frontend/resources/locales.json +++ b/frontend/resources/locales.json @@ -2693,6 +2693,12 @@ "es" : "Color de fondo" } }, + "workspace.options.component" : { + "translations" : { + "en" : "Component", + "es" : "Componente" + } + }, "workspace.options.design" : { "used-in" : [ "src/app/main/ui/workspace/sidebar/options.cljs:69" ], "translations" : { diff --git a/frontend/resources/styles/main/partials/sidebar-element-options.scss b/frontend/resources/styles/main/partials/sidebar-element-options.scss index 11275e5c28..25496e094f 100644 --- a/frontend/resources/styles/main/partials/sidebar-element-options.scss +++ b/frontend/resources/styles/main/partials/sidebar-element-options.scss @@ -295,6 +295,7 @@ } } + .custom-select-dropdown { background-color: $color-white; border-radius: $br-small; @@ -307,7 +308,6 @@ top: 30px; z-index: 12; - .presets { width: 200px; } @@ -471,6 +471,37 @@ } } +.element-set-content .component-row { + display: flex; + align-items: center; + font-size: $fs12; + color: $color-gray-10; + + svg { + fill: $color-gray-20; + height: 16px; + width: 16px; + margin-right: $small; + } + + .row-actions { + margin-left: auto; + cursor: pointer; + + svg { + fill: $color-gray-20; + height: 8px; + width: 8px; + } + + .context-menu-items { + right: 0.5rem; + left: unset; + top: 0; + } + } +} + .grid-option .custom-select { margin-bottom: 0; } @@ -921,8 +952,6 @@ border-right: none; } - - .size-option .custom-select-dropdown { position: fixed; max-height: 16rem; diff --git a/frontend/src/app/main/data/workspace/libraries_helpers.cljs b/frontend/src/app/main/data/workspace/libraries_helpers.cljs index 0c91cfffaa..9298399738 100644 --- a/frontend/src/app/main/data/workspace/libraries_helpers.cljs +++ b/frontend/src/app/main/data/workspace/libraries_helpers.cljs @@ -345,13 +345,6 @@ (get-in state [:workspace-data asset-type]) (get-in state [:workspace-libraries library-id :data asset-type]))) -(defn- get-component - [state file-id component-id] - (let [components (if (nil? file-id) - (get-in state [:workspace-data :components]) - (get-in state [:workspace-libraries file-id :data :components]))] - (get components component-id))) - (defn generate-sync-shape-and-children-components "Generate changes to synchronize one shape that the root of a component instance, and all its children, from the given component. diff --git a/frontend/src/app/main/refs.cljs b/frontend/src/app/main/refs.cljs index 06b44ffda2..fd3a2c2cd4 100644 --- a/frontend/src/app/main/refs.cljs +++ b/frontend/src/app/main/refs.cljs @@ -39,7 +39,6 @@ ;; ---- Workspace refs - (def workspace-local (l/derived :workspace-local st/state)) @@ -56,7 +55,6 @@ (def selected-zoom (l/derived :zoom workspace-local)) - (def selected-drawing-tool (l/derived :tool workspace-drawing)) @@ -89,7 +87,6 @@ (assoc :pages (get-in file [:data :pages]))))) st/state =)) - (def workspace-file-colors (l/derived (fn [state] (when-let [file (:workspace-file state)] @@ -113,6 +110,15 @@ (def workspace-shared-files (l/derived :workspace-shared-files st/state)) +(def workspace-local-library + (l/derived (fn [state] + (select-keys (get state :workspace-data) + [:colors + :media + :typographies + :components])) + st/state)) + (def workspace-libraries (l/derived :workspace-libraries st/state)) diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/component.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/component.cljs new file mode 100644 index 0000000000..06527d4892 --- /dev/null +++ b/frontend/src/app/main/ui/workspace/sidebar/options/component.cljs @@ -0,0 +1,76 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; This Source Code Form is "Incompatible With Secondary Licenses", as +;; defined by the Mozilla Public License, v. 2.0. +;; +;; Copyright (c) 2020 UXBOX Labs SL + +(ns app.main.ui.workspace.sidebar.options.component + (:require + [rumext.alpha :as mf] + [app.common.pages-helpers :as cph] + [app.main.refs :as refs] + [app.main.store :as st] + [app.main.ui.icons :as i] + [app.main.ui.components.context-menu :refer [context-menu]] + [app.main.data.workspace.common :as dwc] + [app.main.data.workspace.libraries :as dwl] + [app.util.i18n :as i18n :refer [t]] + [app.util.dom :as dom])) + +(def component-attrs [:component-id :component-file :shape-ref]) + +(mf/defc component-menu + [{:keys [ids values] :as props}] + (let [id (first ids) + locale (mf/deref i18n/locale) + local (mf/use-state {:menu-open false}) + + show? (some? (:component-id values)) + local-library (mf/deref refs/workspace-local-library) + libraries (mf/deref refs/workspace-libraries) + component (cph/get-component (:component-id values) + (:component-file values) + local-library + libraries) + + on-menu-click (mf/use-callback + (fn [event] + (dom/prevent-default event) + (dom/stop-propagation event) + (swap! local assoc :menu-open true))) + + on-menu-close (mf/use-callback + #(swap! local assoc :menu-open false)) + + do-detach-component #(st/emit! (dwl/detach-component id)) + do-reset-component #(st/emit! (dwl/reset-component id)) + do-update-component #(do + (st/emit! dwc/start-undo-transaction) + (st/emit! (dwl/update-component id)) + (st/emit! (dwl/sync-file nil)) + (st/emit! dwc/commit-undo-transaction)) + do-navigate-component-file #(st/emit! (dwl/nav-to-component-file + (:component-file values)))] + (when show? + [:div.element-set + [:div.element-set-title + [:span (t locale "workspace.options.component")]] + [:div.element-set-content + [:div.row-flex.component-row + i/component + (:name component) + [:div.row-actions + {:on-click on-menu-click} + i/actions + [:& context-menu {:on-close on-menu-close + :show (:menu-open @local) + :options [[(t locale "workspace.shape.menu.detach-instance") do-detach-component] + [(t locale "workspace.shape.menu.reset-overrides") do-reset-component] + (if (:component-file values) + [(t locale "workspace.shape.menu.go-master") do-navigate-component-file] + [(t locale "workspace.shape.menu.update-master") do-update-component])] + }]]]]]))) + diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/group.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/group.cljs index 0d6254a878..43711deb7f 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/group.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/group.cljs @@ -17,6 +17,7 @@ [app.main.data.workspace.texts :as dwt] [app.main.ui.workspace.sidebar.options.multiple :refer [get-shape-attrs]] [app.main.ui.workspace.sidebar.options.measures :refer [measure-attrs measures-menu]] + [app.main.ui.workspace.sidebar.options.component :refer [component-attrs component-menu]] [app.main.ui.workspace.sidebar.options.fill :refer [fill-attrs fill-menu]] [app.main.ui.workspace.sidebar.options.blur :refer [blur-menu]] [app.main.ui.workspace.sidebar.options.stroke :refer [stroke-attrs stroke-menu]] @@ -59,6 +60,9 @@ shape-with-children) [:rx :ry])) + component-values + (select-keys shape component-attrs) + fill-values (geom/get-attrs-multi shape-with-children fill-attrs) @@ -136,13 +140,15 @@ :ids-with-children ids-with-children :type type :values measure-values}] + [:& component-menu {:ids [id] + :values component-values}] [:& fill-menu {:ids ids-with-children :type type :values fill-values}] [:& blur-menu {:ids [id] :values (select-keys shape [:blur])}] - + (when-not (empty? other-ids) [:& stroke-menu {:ids other-ids :type type diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/rect.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/rect.cljs index a5c8c6fb18..e735a8cc31 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/rect.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/rect.cljs @@ -28,6 +28,7 @@ [:& measures-menu {:ids ids :type type :values measure-values}] + [:& fill-menu {:ids ids :type type :values fill-values}] From d847c607e32d1842a8d8140d23e6cb8ce0f2c369 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Tue, 3 Nov 2020 11:11:16 +0100 Subject: [PATCH 17/48] :tada: Allow to show master component in assets panel --- frontend/resources/locales.json | 5 ++ frontend/src/app/main/data/workspace.cljs | 58 +++++++++++++------ .../app/main/data/workspace/libraries.cljs | 3 +- frontend/src/app/main/ui.cljs | 4 +- frontend/src/app/main/ui/workspace.cljs | 6 +- .../app/main/ui/workspace/context_menu.cljs | 28 ++++++--- .../app/main/ui/workspace/left_toolbar.cljs | 6 +- .../workspace/sidebar/options/component.cljs | 20 +++++-- 8 files changed, 92 insertions(+), 38 deletions(-) diff --git a/frontend/resources/locales.json b/frontend/resources/locales.json index 37ce988d8a..111dad5212 100644 --- a/frontend/resources/locales.json +++ b/frontend/resources/locales.json @@ -3447,6 +3447,11 @@ "en" : "Go to master component file" } }, + "workspace.shape.menu.show-master" : { + "translations" : { + "en" : "Show master component" + } + }, "workspace.shape.menu.group" : { "used-in" : [ "src/app/main/ui/workspace/context_menu.cljs:110" ], "translations" : { diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index 66d4269fef..11b0a0c696 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -43,6 +43,7 @@ [clojure.set :as set] [clojure.set :as set] [cuerdas.core :as str] + [cljs.pprint :refer [pprint]] [potok.core :as ptk])) ;; (log/set-level! :trace) @@ -84,6 +85,19 @@ :snap-grid :dynamic-alignment}) +(def layout-flags + {:assets + {:del #{:sitemap :layers :document-history } + :add #{:assets}} + + :document-history + {:del #{:assets :layers :sitemap} + :add #{:document-history}} + + :layers + {:del #{:document-history :assets} + :add #{:sitemap :layers}}}) + (s/def ::options-mode #{:design :prototype}) (def workspace-local-default @@ -103,11 +117,22 @@ :picked-color nil :picked-color-select false}) -(def initialize-layout +(declare ensure-layout) + +(defn initialize-layout + [layout] + (us/verify (s/nilable ::us/string) layout) (ptk/reify ::initialize-layout ptk/UpdateEvent (update [_ state] - (assoc state :workspace-layout default-layout)))) + (assoc state :workspace-layout default-layout)) + + ptk/WatchEvent + (watch [_ state stream] + (when layout + (let [layout-flag (keyword layout)] + (when (contains? layout-flags layout-flag) + (rx/of (ensure-layout layout-flag)))))))) (defn initialize-file [project-id file-id] @@ -388,20 +413,7 @@ ;; --- Toggle layout flag -(def layout-flags - {:assets - {:del #{:sitemap :layers :document-history } - :add #{:assets}} - - :document-history - {:del #{:assets :layers :sitemap} - :add #{:document-history}} - - :layers - {:del #{:document-history :assets} - :add #{:sitemap :layers}}}) - -(defn- ensure-layout +(defn ensure-layout [layout] (assert (contains? layout-flags layout) (str "unexpected layout name: " layout)) @@ -416,7 +428,7 @@ (set/difference todel) (set/union toadd)))))))) -(defn- toggle-layout-flags +(defn toggle-layout-flags [& flags] (ptk/reify ::toggle-layout-flags ptk/UpdateEvent @@ -1187,6 +1199,18 @@ qparams {:page-id page-id}] (rx/of (rt/nav :workspace pparams qparams)))))) +(defn go-to-layout + [layout] + (us/verify ::layout-flag layout) + (ptk/reify ::go-to-layout + ptk/WatchEvent + (watch [_ state stream] + (let [project-id (get-in state [:workspace-project :id]) + file-id (get-in state [:workspace-file :id]) + page-id (get-in state [:current-page-id]) + pparams {:file-id file-id :project-id project-id} + qparams {:page-id page-id :layout (name layout)}] + (rx/of (rt/nav :workspace pparams qparams)))))) (def go-to-file (ptk/reify ::go-to-file diff --git a/frontend/src/app/main/data/workspace/libraries.cljs b/frontend/src/app/main/data/workspace/libraries.cljs index 51c4fc3a90..bc864b7c0a 100644 --- a/frontend/src/app/main/data/workspace/libraries.cljs +++ b/frontend/src/app/main/data/workspace/libraries.cljs @@ -443,7 +443,8 @@ (let [file (get-in state [:workspace-libraries file-id]) pparams {:project-id (:project-id file) :file-id (:id file)} - qparams {:page-id (first (get-in file [:data :pages]))}] + qparams {:page-id (first (get-in file [:data :pages])) + :layout :assets}] (st/emit! (rt/nav-new-window :workspace pparams qparams)))))) (defn ext-library-changed diff --git a/frontend/src/app/main/ui.cljs b/frontend/src/app/main/ui.cljs index 66fddcf8e6..3864ecfe72 100644 --- a/frontend/src/app/main/ui.cljs +++ b/frontend/src/app/main/ui.cljs @@ -149,10 +149,12 @@ :workspace (let [project-id (uuid (get-in route [:params :path :project-id])) file-id (uuid (get-in route [:params :path :file-id])) - page-id (uuid (get-in route [:params :query :page-id]))] + page-id (uuid (get-in route [:params :query :page-id])) + layout (get-in route [:params :query :layout])] [:& workspace/workspace {:project-id project-id :file-id file-id :page-id page-id + :layout layout :key file-id}]) :not-authorized diff --git a/frontend/src/app/main/ui/workspace.cljs b/frontend/src/app/main/ui/workspace.cljs index aa3cb8023e..8579210d5b 100644 --- a/frontend/src/app/main/ui/workspace.cljs +++ b/frontend/src/app/main/ui/workspace.cljs @@ -99,8 +99,10 @@ i/loader-pencil]) (mf/defc workspace - [{:keys [project-id file-id page-id] :as props}] - (mf/use-effect #(st/emit! dw/initialize-layout)) + [{:keys [project-id file-id page-id layout] :as props}] + (mf/use-effect + (mf/deps layout) + #(st/emit! (dw/initialize-layout layout))) (mf/use-effect (mf/deps project-id file-id) diff --git a/frontend/src/app/main/ui/workspace/context_menu.cljs b/frontend/src/app/main/ui/workspace/context_menu.cljs index e4ebff1744..5928fc1788 100644 --- a/frontend/src/app/main/ui/workspace/context_menu.cljs +++ b/frontend/src/app/main/ui/workspace/context_menu.cljs @@ -75,6 +75,7 @@ (st/emit! (dwl/update-component id)) (st/emit! (dwl/sync-file nil)) (st/emit! dwc/commit-undo-transaction)) + do-show-component #(st/emit! (dw/go-to-layout :assets)) do-navigate-component-file #(st/emit! (dwl/nav-to-component-file (:component-file shape)))] [:* @@ -149,17 +150,28 @@ (when (and (:component-id shape) (= (count selected) 1)) - [:* - [:& menu-separator] - [:& menu-entry {:title (t locale "workspace.shape.menu.detach-instance") - :on-click do-detach-component}] - [:& menu-entry {:title (t locale "workspace.shape.menu.reset-overrides") - :on-click do-reset-component}] - (if (nil? (:component-file shape)) + ;; WARNING: this menu is the same as the context menu at the sidebar. + ;; If you change it, you must change equally the file + ;; app/main/ui/workspace/sidebar/options/component.cljs + (if (nil? (:component-file shape)) + [:* + [:& menu-separator] + [:& menu-entry {:title (t locale "workspace.shape.menu.detach-instance") + :on-click do-detach-component}] + [:& menu-entry {:title (t locale "workspace.shape.menu.reset-overrides") + :on-click do-reset-component}] [:& menu-entry {:title (t locale "workspace.shape.menu.update-master") :on-click do-update-component}] + [:& menu-entry {:title (t locale "workspace.shape.menu.show-master") + :on-click do-show-component}]] + [:* + [:& menu-separator] + [:& menu-entry {:title (t locale "workspace.shape.menu.detach-instance") + :on-click do-detach-component}] + [:& menu-entry {:title (t locale "workspace.shape.menu.reset-overrides") + :on-click do-reset-component}] [:& menu-entry {:title (t locale "workspace.shape.menu.go-master") - :on-click do-navigate-component-file}])]) + :on-click do-navigate-component-file}]])) [:& menu-separator] [:& menu-entry {:title (t locale "workspace.shape.menu.delete") diff --git a/frontend/src/app/main/ui/workspace/left_toolbar.cljs b/frontend/src/app/main/ui/workspace/left_toolbar.cljs index 8a1cd65c4f..d67f40e14c 100644 --- a/frontend/src/app/main/ui/workspace/left_toolbar.cljs +++ b/frontend/src/app/main/ui/workspace/left_toolbar.cljs @@ -105,17 +105,17 @@ [:li.tooltip.tooltip-right {:alt "Layers" :class (when (contains? layout :layers) "selected") - :on-click (st/emitf (dw/ensure-layout :layers))} + :on-click (st/emitf (dw/go-to-layout :layers))} i/layers] [:li.tooltip.tooltip-right {:alt (t locale "workspace.toolbar.assets") :class (when (contains? layout :assets) "selected") - :on-click (st/emitf (dw/ensure-layout :assets))} + :on-click (st/emitf (dw/go-to-layout :assets))} i/library] [:li.tooltip.tooltip-right {:alt "History" :class (when (contains? layout :document-history) "selected") - :on-click (st/emitf (dw/ensure-layout :document-history))} + :on-click (st/emitf (dw/go-to-layout :document-history))} i/undo-history] [:li.tooltip.tooltip-right {:alt (t locale "workspace.toolbar.color-palette") diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/component.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/component.cljs index 06527d4892..a88062f389 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/component.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/component.cljs @@ -15,6 +15,7 @@ [app.main.store :as st] [app.main.ui.icons :as i] [app.main.ui.components.context-menu :refer [context-menu]] + [app.main.data.workspace :as dw] [app.main.data.workspace.common :as dwc] [app.main.data.workspace.libraries :as dwl] [app.util.i18n :as i18n :refer [t]] @@ -52,6 +53,7 @@ (st/emit! (dwl/update-component id)) (st/emit! (dwl/sync-file nil)) (st/emit! dwc/commit-undo-transaction)) + do-show-component #(st/emit! (dw/go-to-layout :assets)) do-navigate-component-file #(st/emit! (dwl/nav-to-component-file (:component-file values)))] (when show? @@ -65,12 +67,18 @@ [:div.row-actions {:on-click on-menu-click} i/actions + ;; WARNING: this menu is the same as the shape context menu. + ;; If you change it, you must change equally the file + ;; app/main/ui/workspace/context_menu.cljs [:& context-menu {:on-close on-menu-close :show (:menu-open @local) - :options [[(t locale "workspace.shape.menu.detach-instance") do-detach-component] - [(t locale "workspace.shape.menu.reset-overrides") do-reset-component] - (if (:component-file values) - [(t locale "workspace.shape.menu.go-master") do-navigate-component-file] - [(t locale "workspace.shape.menu.update-master") do-update-component])] - }]]]]]))) + :options (if (nil? (:component-file values)) + [[(t locale "workspace.shape.menu.detach-instance") do-detach-component] + [(t locale "workspace.shape.menu.reset-overrides") do-reset-component] + [(t locale "workspace.shape.menu.update-master") do-update-component] + [(t locale "workspace.shape.menu.show-master") do-show-component]] + + [[(t locale "workspace.shape.menu.detach-instance") do-detach-component] + [(t locale "workspace.shape.menu.reset-overrides") do-reset-component] + [(t locale "workspace.shape.menu.go-master") do-navigate-component-file]])}]]]]]))) From 75202fdcbad58fa2401ad0328e3e5d7a247c84d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Tue, 3 Nov 2020 13:56:28 +0100 Subject: [PATCH 18/48] :bug: Fix layout initialization --- frontend/src/app/main/data/workspace.cljs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index 11b0a0c696..4435c22ca9 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -43,7 +43,7 @@ [clojure.set :as set] [clojure.set :as set] [cuerdas.core :as str] - [cljs.pprint :refer [pprint]] + ;; [cljs.pprint :refer [pprint]] [potok.core :as ptk])) ;; (log/set-level! :trace) @@ -125,7 +125,9 @@ (ptk/reify ::initialize-layout ptk/UpdateEvent (update [_ state] - (assoc state :workspace-layout default-layout)) + (update state :worskpace-layout + (fn [layout] + (merge default-layout layout)))) ptk/WatchEvent (watch [_ state stream] From a2ecc1bdb6bd2e7bd25171be8f16d6dd1a477df8 Mon Sep 17 00:00:00 2001 From: elhombretecla Date: Tue, 3 Nov 2020 19:04:09 +0100 Subject: [PATCH 19/48] :sparkles: Fix Components grid and text-size input --- .../resources/styles/main/partials/sidebar-assets.scss | 7 ++++--- .../styles/main/partials/sidebar-element-options.scss | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/frontend/resources/styles/main/partials/sidebar-assets.scss b/frontend/resources/styles/main/partials/sidebar-assets.scss index 8917dfaed0..7fdb78372b 100644 --- a/frontend/resources/styles/main/partials/sidebar-assets.scss +++ b/frontend/resources/styles/main/partials/sidebar-assets.scss @@ -92,7 +92,7 @@ color: $color-gray-10; border: 1px solid transparent; border-bottom-color: $color-gray-40; - padding: $x-small $x-small 0 $x-small; + padding: $x-small; margin: $small $small $medium $small; &:focus { @@ -102,7 +102,7 @@ option { color: $color-gray-60; background: $color-white; - font-size: $fs11; + font-size: $fs12; } } @@ -186,12 +186,13 @@ } .grid-cell { - background-color: $color-white; + background-color: $color-canvas; border-radius: 4px; overflow: hidden; display: flex; align-items: center; justify-content: center; + padding: $small; position: relative; cursor: pointer; diff --git a/frontend/resources/styles/main/partials/sidebar-element-options.scss b/frontend/resources/styles/main/partials/sidebar-element-options.scss index 25496e094f..b24ef1c5e4 100644 --- a/frontend/resources/styles/main/partials/sidebar-element-options.scss +++ b/frontend/resources/styles/main/partials/sidebar-element-options.scss @@ -953,11 +953,12 @@ } .size-option .custom-select-dropdown { - position: fixed; + cursor: pointer; max-height: 16rem; min-width: 6rem; margin-top: 25px; left: initial; + top: 0; } .typography-read-only-data { From 444491f577be301e83e2360c7106bff1913ee131 Mon Sep 17 00:00:00 2001 From: elhombretecla Date: Tue, 3 Nov 2020 19:15:39 +0100 Subject: [PATCH 20/48] :sparkles: Fix dropdowns size --- frontend/resources/styles/main/partials/dashboard-team.scss | 4 ++-- frontend/resources/styles/main/partials/sidebar-assets.scss | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/resources/styles/main/partials/dashboard-team.scss b/frontend/resources/styles/main/partials/dashboard-team.scss index f4ad20e5dd..b118f85318 100644 --- a/frontend/resources/styles/main/partials/dashboard-team.scss +++ b/frontend/resources/styles/main/partials/dashboard-team.scss @@ -71,7 +71,7 @@ z-index: 12; top: 30px; left: 0px; - width: 125px; + width: 168px; hr { margin: 0; @@ -83,7 +83,7 @@ align-items: center; color: $color-gray-60; cursor: pointer; - font-size: $fs12; + font-size: $fs14; height: 31px; padding: 5px 16px; diff --git a/frontend/resources/styles/main/partials/sidebar-assets.scss b/frontend/resources/styles/main/partials/sidebar-assets.scss index 7fdb78372b..0b4df5b664 100644 --- a/frontend/resources/styles/main/partials/sidebar-assets.scss +++ b/frontend/resources/styles/main/partials/sidebar-assets.scss @@ -100,8 +100,8 @@ } option { - color: $color-gray-60; background: $color-white; + color: $color-gray-60; font-size: $fs12; } } From fd1d564f0326f5f4a7e23007f219c6f98dd1d868 Mon Sep 17 00:00:00 2001 From: elhombretecla Date: Tue, 3 Nov 2020 19:44:01 +0100 Subject: [PATCH 21/48] :sparkles: Fix grid gaps --- .../resources/styles/main/partials/dashboard-header.scss | 2 +- frontend/resources/styles/main/partials/dashboard-team.scss | 3 +-- frontend/resources/styles/main/partials/dashboard.scss | 2 +- frontend/resources/styles/main/partials/viewer-header.scss | 5 ++--- .../resources/styles/main/partials/workspace-header.scss | 2 +- 5 files changed, 6 insertions(+), 8 deletions(-) diff --git a/frontend/resources/styles/main/partials/dashboard-header.scss b/frontend/resources/styles/main/partials/dashboard-header.scss index 30fae12c71..f20595b41b 100644 --- a/frontend/resources/styles/main/partials/dashboard-header.scss +++ b/frontend/resources/styles/main/partials/dashboard-header.scss @@ -12,7 +12,7 @@ background-color: $color-white; display: flex; height: 63px; - padding: $x-small $small; + padding: $x-small $medium $x-small $small; position: relative; z-index: 10; justify-content: space-between; diff --git a/frontend/resources/styles/main/partials/dashboard-team.scss b/frontend/resources/styles/main/partials/dashboard-team.scss index b118f85318..6c0f4fa019 100644 --- a/frontend/resources/styles/main/partials/dashboard-team.scss +++ b/frontend/resources/styles/main/partials/dashboard-team.scss @@ -123,7 +123,6 @@ display: flex; max-width: 324px; width: 324px; - height: 100px; background-color: $color-white; flex-direction: column; padding: 12px; @@ -139,7 +138,7 @@ .name { margin-top: 10px; - font-size: $fs32; + font-size: $fs28; color: $color-black; @include text-ellipsis; margin-right: 90px; diff --git a/frontend/resources/styles/main/partials/dashboard.scss b/frontend/resources/styles/main/partials/dashboard.scss index 58cf587998..2aed67220e 100644 --- a/frontend/resources/styles/main/partials/dashboard.scss +++ b/frontend/resources/styles/main/partials/dashboard.scss @@ -12,7 +12,7 @@ border-top-right-radius: $br-huge; border-top-left-radius: $br-huge; flex: 1 0 0; - margin-right: $small; + margin-right: $medium; overflow-y: auto; &.search { diff --git a/frontend/resources/styles/main/partials/viewer-header.scss b/frontend/resources/styles/main/partials/viewer-header.scss index a123a74713..97e076b1be 100644 --- a/frontend/resources/styles/main/partials/viewer-header.scss +++ b/frontend/resources/styles/main/partials/viewer-header.scss @@ -247,8 +247,7 @@ position: absolute; left: 0; z-index: 12; - width: 200px; - max-height: 30rem; + max-height: 31rem; min-width: 7rem; overflow-y: auto; @@ -261,7 +260,7 @@ cursor: pointer; font-size: $fs14; display: flex; - padding: $small $small $small 25px; + padding: $small $medium $small 25px; &.selected { background-image: url(/images/icons/tick.svg); diff --git a/frontend/resources/styles/main/partials/workspace-header.scss b/frontend/resources/styles/main/partials/workspace-header.scss index fb340c3f40..060688ff9d 100644 --- a/frontend/resources/styles/main/partials/workspace-header.scss +++ b/frontend/resources/styles/main/partials/workspace-header.scss @@ -149,7 +149,7 @@ li { cursor: pointer; font-size: $fs14; - padding: $small $x-small; + padding: $small; display: flex; justify-content: space-between; From 9bd042dee0d9524ef7f099a94e6192e5116ead41 Mon Sep 17 00:00:00 2001 From: elhombretecla Date: Wed, 4 Nov 2020 08:59:55 +0100 Subject: [PATCH 22/48] :sparkles: Chanage dashboard sidebar --- frontend/resources/styles/main/layouts/main-layout.scss | 2 +- .../resources/styles/main/partials/dashboard-sidebar.scss | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/resources/styles/main/layouts/main-layout.scss b/frontend/resources/styles/main/layouts/main-layout.scss index edabb7c481..22a1cd54c9 100644 --- a/frontend/resources/styles/main/layouts/main-layout.scss +++ b/frontend/resources/styles/main/layouts/main-layout.scss @@ -17,7 +17,7 @@ background-color: $color-white; display: grid; grid-template-rows: 50px 1fr; - grid-template-columns: 40px 180px 1fr; + grid-template-columns: 40px 220px 1fr; height: 100vh; .dashboard-sidebar { diff --git a/frontend/resources/styles/main/partials/dashboard-sidebar.scss b/frontend/resources/styles/main/partials/dashboard-sidebar.scss index 3a100db1bd..dddbc84500 100644 --- a/frontend/resources/styles/main/partials/dashboard-sidebar.scss +++ b/frontend/resources/styles/main/partials/dashboard-sidebar.scss @@ -40,11 +40,11 @@ top: 50px; z-index: 12; max-height: 30rem; - min-width: 189px; + min-width: 230px; } .options-dropdown { - left: 80px; + left: 117px; top: 50px; z-index: 12; max-height: 30rem; @@ -63,7 +63,7 @@ .switch-options { display: flex; max-width: 22px; - min-width: 22px; + min-width: 28px; border-left: 1px solid $color-gray-10; justify-content: center; align-items: center; @@ -111,7 +111,7 @@ .team-text { color: $color-gray-60; @include text-ellipsis; - width: 100px; + width: 130px; } } From 2588edf88c3c57cbf76344f8014074fc2c12d7df Mon Sep 17 00:00:00 2001 From: elhombretecla Date: Wed, 4 Nov 2020 09:36:20 +0100 Subject: [PATCH 23/48] :sparkles: Add new mail icon --- .../resources/images/email/uxbox-title.png | Bin 2506 -> 2620 bytes .../main/partials/dashboard-sidebar.scss | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/resources/images/email/uxbox-title.png b/frontend/resources/images/email/uxbox-title.png index 4e9cb501f6dac472b3a1adbddaf6410668d58437..45869e758183ff17b8c044ac00e03e07b446b16f 100644 GIT binary patch delta 2498 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 M07*qoM6N<$f}od`bN~PV delta 2384 zcmV-W39t6N6v`8jBmv}+B|-wq#*t|oe~ricDEmq=?dv}B>GAu`9{AWJ!zAeC{%Q62 zSJ?IAfkzIy-tEE92>S{2$an(E%Dl4m*CJu(+fL~OD&v$~++It)PO0rU?o!T~OzH`? zkM%pe8=z8GB!YTFNaDWw?IZVDab{deGW?3EZ?w!uBiwvBK>D@#TjH0*@~nv82c|q9`6Tk3-RB(l+trkzXg)J4hKD*k z$m|y+m;G2qGn|Th+pVB^tg!)kk1bwkjS4ZS%s`1cRhl$*->9L)#Dfhzb7R>y7vsVW z<&vb;XtIG=7YED6BZ$Dv&su2be=R#-BS+>=aAiU;EUABP;ok;-q=h-#l8Ba=KukQ>J6^EH>ke@#eatP{oCSW0{+@Rfte*go z2)Px-kbnU83sJ(RVa!GZ9UXuwDrZT2fdHv;N0FQat0fpauiSXXX#28qf97Sz-UJYe zm1SUqH3e8HDdvwQ#~i9Enp8EbsRu1uv*eUD=WKaxa@E9=sbw>BD^^`Rxq5bU_u{p1 z5$u6lawDKdgaS5zsgk`rcX;vTW;38l~y}<>DVTE?$*7R zUI&GNonoY+BM%!s%BT}_e{IT4Q)iwweU@3D)DG28?FXpQp~jok^0Oy3ScBOk1g-5v z7c&s!L?CX9!1_ikX3;4nUgQ?DSQv{!8Aa-16FMzoK$r%xPI|KYAopF|g8FxH$}l5v3nIRO`~A-VSIQE>~($A>d*GS1N{#4e?Ja1u~hJvE&L5Y zb7PiJ|9#>B00D$)LqkwWLqi~Na&Km7Y-Iodc$|HaJxIeq9K~N#wIUToJBT=Bs7@CA zLL9XUMW_&Jg;pI*F8zWg4M~cNqu^R_@ME#+;Nq;SgR3A2et33p_JqCKL0- zA!0Gt#7Yyhyr~gS5r+gyS1{D6JAm<3bemC&c`qi*ad18 z$N4^XoZ1QCe+I7fhQCw=W#$(6bF(TsJgj54hX`2A&MrlwHYBQ^;n4_cQvY zG|+zwbgg;4H`VuX`T!)UtN0CYa0ra#D0{udyE~hE`}a(}zaLr+a-D{eJ+c4*00v@9 zM??Vs0RI60puMM)leGjNe+Cc-G6I-sa?=0+1lLJKK~!ko?V3-Bn?)GLe{1U{i$ydA z!PZw*FG1?eo?_kOA%lPsCm*p zy_nR`R<-$pJE)vYNJsCFYF68kk`dg{{-Lf0d%$a!`5Bjt(p4k@4I-?aT*yv7kU~q= zH37V(Z#zA*e?HO}Yrsam+pP9`(u0jD$=VUpuQQfjy#vnyPs>CFBBgARP}F8EusYzH zv6UhLD|ObV-zuW8_t=e;pY4@l;mOV;`n3i?zgXhHd+)rNz>cKNYW^fSDZDPk36@CfiK@S)mxa8MHd57?!dR+OFoHO9=^t8|O5cYtRGX#0YG zHvvC-e|*Ymt(KaiNN?I=Eud%3;DwZRzX3i6o=9MN(&Cc(2L0qGYk4J@XlPdVcSMkJ zOs2xcW7_A;%lszA2L1jO5^;@6ZbSX+uEmv5(N)tm>WSTx;C=a&UDhm4l1aGH@(ng7 z75DJuE%Q$^&m| z1vE9jnl)ikhp1+`w-S~eBt)IjQjKz^0sUiG8z<%L+_3pL@SBI&xG}e#Rb)1B*GEKE zCUm#aRK2`Mj~zMjRY$@$)oFMXS_XdcY=}%8KH-s<*IU6M4;j)DwDt9?8KcvRf0l(~fW<$084|{{T8tx`2CmCg zcJ)xUqJRMSTfgV%pC@GhrdVMzK9H%ZX6hIo{sZ~0jUj$R^Z5V(002ovPDHLk0$_sS CDvy8w diff --git a/frontend/resources/styles/main/partials/dashboard-sidebar.scss b/frontend/resources/styles/main/partials/dashboard-sidebar.scss index dddbc84500..70617a2758 100644 --- a/frontend/resources/styles/main/partials/dashboard-sidebar.scss +++ b/frontend/resources/styles/main/partials/dashboard-sidebar.scss @@ -266,7 +266,7 @@ font-size: $fs14; padding: 6px; margin: 0; - max-width: 170px; + max-width: 195px; width: 100%; height: 40px; } From 9d095d2acb4e60ecb8423e90ce31474ba95dd6aa Mon Sep 17 00:00:00 2001 From: elhombretecla Date: Wed, 4 Nov 2020 11:13:02 +0100 Subject: [PATCH 24/48] :sparkles: Change email templates to Penpot --- backend/resources/emails/change-email/en.html | 12 ++++++------ backend/resources/emails/invite-to-team/en.html | 12 ++++++------ backend/resources/emails/password-recovery/en.html | 12 ++++++------ backend/resources/emails/register/en.html | 14 +++++++------- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/backend/resources/emails/change-email/en.html b/backend/resources/emails/change-email/en.html index 563fae9355..7aa3fd6136 100644 --- a/backend/resources/emails/change-email/en.html +++ b/backend/resources/emails/change-email/en.html @@ -204,7 +204,7 @@ -
The UXBOX team.
+
The Penpot team.
@@ -250,7 +250,7 @@
-
UXBOX is the first Open Source prototyping platform that will be embraced by multidisciplinary teams.
+
Penpot is the first Open Source prototyping platform that will be embraced by multidisciplinary teams.
@@ -310,7 +310,7 @@ @@ -350,7 +350,7 @@
- +
@@ -370,7 +370,7 @@
- +
@@ -450,7 +450,7 @@
- +
-
UXBOX © 2020 | Made with <3 and Open Source
+
Penpot © 2020 | Made with <3 and Open Source
diff --git a/backend/resources/emails/invite-to-team/en.html b/backend/resources/emails/invite-to-team/en.html index 3a77a7a6ec..0f85d5a463 100644 --- a/backend/resources/emails/invite-to-team/en.html +++ b/backend/resources/emails/invite-to-team/en.html @@ -194,7 +194,7 @@ -
The UXBOX team.
+
The Penpot team.
@@ -240,7 +240,7 @@
-
UXBOX is the first Open Source prototyping platform that will be embraced by multidisciplinary teams.
+
Penpot is the first Open Source prototyping platform that will be embraced by multidisciplinary teams.
@@ -300,7 +300,7 @@ @@ -340,7 +340,7 @@
- +
@@ -360,7 +360,7 @@
- +
@@ -440,7 +440,7 @@
- +
-
UXBOX © 2020 | Made with <3 and Open Source
+
Penpot © 2020 | Made with <3 and Open Source
diff --git a/backend/resources/emails/password-recovery/en.html b/backend/resources/emails/password-recovery/en.html index 820caf219e..2262325079 100644 --- a/backend/resources/emails/password-recovery/en.html +++ b/backend/resources/emails/password-recovery/en.html @@ -199,7 +199,7 @@ -
The UXBOX team.
+
The Penpot team.
@@ -245,7 +245,7 @@
-
UXBOX is the first Open Source prototyping platform that will be embraced by multidisciplinary teams.
+
Penpot is the first Open Source prototyping platform that will be embraced by multidisciplinary teams.
@@ -305,7 +305,7 @@ @@ -345,7 +345,7 @@
- +
@@ -365,7 +365,7 @@
- +
@@ -445,7 +445,7 @@
- +
-
UXBOX © 2020 | Made with <3 and Open Source
+
Penpot © 2020 | Made with <3 and Open Source
diff --git a/backend/resources/emails/register/en.html b/backend/resources/emails/register/en.html index 3f49393ddd..dd2f7a69fe 100644 --- a/backend/resources/emails/register/en.html +++ b/backend/resources/emails/register/en.html @@ -173,7 +173,7 @@ -
Thanks for signing up for your UXBOX account! Please verify your email using the link below adn get started building mockups and prototypes today!
+
Thanks for signing up for your Penpot account! Please verify your email using the link below adn get started building mockups and prototypes today!
@@ -194,7 +194,7 @@ -
The UXBOX team.
+
The Penpot team.
@@ -240,7 +240,7 @@
-
UXBOX is the first Open Source prototyping platform that will be embraced by multidisciplinary teams.
+
Penpot is the first Open Source prototyping platform that will be embraced by multidisciplinary teams.
@@ -300,7 +300,7 @@ @@ -340,7 +340,7 @@
- +
@@ -360,7 +360,7 @@
- +
@@ -440,7 +440,7 @@
- +
-
UXBOX © 2020 | Made with <3 and Open Source
+
Penpot © 2020 | Made with <3 and Open Source
From 3ccb52735f6f511968e3069775854db0e4cf176a Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Tue, 3 Nov 2020 12:45:26 +0100 Subject: [PATCH 25/48] :sparkles: Adds exports to handoff --- frontend/src/app/main/ui/viewer/handoff.cljs | 18 ++- .../main/ui/viewer/handoff/attributes.cljs | 11 +- .../app/main/ui/viewer/handoff/exports.cljs | 132 ++++++++++++++++++ .../main/ui/viewer/handoff/right_sidebar.cljs | 6 +- 4 files changed, 156 insertions(+), 11 deletions(-) create mode 100644 frontend/src/app/main/ui/viewer/handoff/exports.cljs diff --git a/frontend/src/app/main/ui/viewer/handoff.cljs b/frontend/src/app/main/ui/viewer/handoff.cljs index 1c22c07f15..fc06143f4d 100644 --- a/frontend/src/app/main/ui/viewer/handoff.cljs +++ b/frontend/src/app/main/ui/viewer/handoff.cljs @@ -37,7 +37,7 @@ (st/emit! (dv/select-shape (:id frame))))) (mf/defc render-panel - [{:keys [data local index]}] + [{:keys [data local index page-id file-id]}] (let [locale (mf/deref i18n/locale) frames (:frames data []) objects (:objects data) @@ -67,12 +67,14 @@ [:& render-frame-svg {:frame-id (:id frame) :zoom (:zoom local) :objects objects}]]] - [:& right-sidebar {:frame frame}]])])) + [:& right-sidebar {:frame frame + :page-id page-id + :file-id file-id}]])])) (mf/defc handoff-content - [{:keys [data local index] :as props}] - (let [container (mf/use-ref) + [{:keys [data local index page-id file-id] :as props}] + (let [container (mf/use-ref) [toggle-fullscreen fullscreen?] (hooks/use-fullscreen container) on-mouse-wheel @@ -111,7 +113,9 @@ :screen :handoff}]) [:& render-panel {:data data :local local - :index index}]]])) + :index index + :page-id page-id + :file-id file-id}]]])) (mf/defc handoff [{:keys [file-id page-id index] :as props}] @@ -123,6 +127,8 @@ (let [data (mf/deref refs/viewer-data) local (mf/deref refs/viewer-local)] (when data - [:& handoff-content {:index index + [:& handoff-content {:file-id file-id + :page-id page-id + :index index :local local :data data}]))) diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes.cljs index fe7658f8f2..4b29485eb1 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes.cljs @@ -12,6 +12,7 @@ [rumext.alpha :as mf] [app.util.i18n :as i18n] [app.common.geom.shapes :as gsh] + [app.main.ui.viewer.handoff.exports :refer [exports]] [app.main.ui.viewer.handoff.attributes.layout :refer [layout-panel]] [app.main.ui.viewer.handoff.attributes.fill :refer [fill-panel]] [app.main.ui.viewer.handoff.attributes.stroke :refer [stroke-panel]] @@ -32,7 +33,7 @@ :text [:layout :text :shadow :blur]}) (mf/defc attributes - [{:keys [shapes frame]}] + [{:keys [page-id file-id shapes frame]}] (let [locale (mf/deref i18n/locale) shapes (->> shapes (map #(gsh/translate-to-frame % frame))) type (if (= (count shapes) 1) (-> shapes first :type) :multiple) @@ -49,5 +50,9 @@ :text text-panel) {:shapes shapes :frame frame - :locale locale}])])) - + :locale locale}]) + (when-not (= :multiple type) + [:& exports + {:shape (first shapes) + :page-id page-id + :file-id file-id}])])) diff --git a/frontend/src/app/main/ui/viewer/handoff/exports.cljs b/frontend/src/app/main/ui/viewer/handoff/exports.cljs new file mode 100644 index 0000000000..4dbc303c3c --- /dev/null +++ b/frontend/src/app/main/ui/viewer/handoff/exports.cljs @@ -0,0 +1,132 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; This Source Code Form is "Incompatible With Secondary Licenses", as +;; defined by the Mozilla Public License, v. 2.0. +;; +;; Copyright (c) 2020 UXBOX Labs SL + +(ns app.main.ui.viewer.handoff.exports + (:require + [rumext.alpha :as mf] + [beicon.core :as rx] + [app.util.i18n :refer [t] :as i18n] + [app.common.geom.shapes :as gsh] + [app.main.ui.icons :as i] + [app.common.data :as d] + [app.util.dom :as dom] + [app.main.store :as st] + [app.main.data.messages :as dm] + [app.main.ui.workspace.sidebar.options.exports :as we])) + +(mf/defc exports + [{:keys [shape page-id file-id] :as props}] + (let [locale (mf/deref i18n/locale) + exports (mf/use-state (:exports shape [])) + loading? (mf/use-state false) + + on-download + (mf/use-callback + (mf/deps shape @exports) + (fn [event] + (dom/prevent-default event) + (swap! loading? not) + (->> (we/request-export (assoc shape :page-id page-id :file-id file-id) @exports) + (rx/subs + (fn [{:keys [status body] :as response}] + (js/console.log status body) + (if (= status 200) + (we/trigger-download (:name shape) body) + (st/emit! (dm/error (t locale "errors.unexpected-error"))))) + (constantly nil) + (fn [] + (swap! loading? not)))))) + + add-export + (mf/use-callback + (mf/deps shape) + (fn [] + (let [xspec {:type :png + :suffix "" + :scale 1}] + (swap! exports conj xspec)))) + + delete-export + (mf/use-callback + (mf/deps shape) + (fn [index] + (swap! exports (fn [exports] + (let [[before after] (split-at index exports)] + (d/concat [] before (rest after))))))) + + on-scale-change + (mf/use-callback + (mf/deps shape) + (fn [index event] + (let [target (dom/get-target event) + value (dom/get-value target) + value (d/parse-double value)] + (swap! exports assoc-in [index :scale] value)))) + + on-suffix-change + (mf/use-callback + (mf/deps shape) + (fn [index event] + (let [target (dom/get-target event) + value (dom/get-value target)] + (swap! exports assoc-in [index :suffix] value)))) + + on-type-change + (mf/use-callback + (mf/deps shape) + (fn [index event] + (let [target (dom/get-target event) + value (dom/get-value target) + value (keyword value)] + (swap! exports assoc-in [index :type] value))))] + + (mf/use-effect + (mf/deps shape) + (fn [] + (reset! exports (:exports shape [])))) + + [:div.element-set.exports-options + [:div.element-set-title + [:span (t locale "workspace.options.export")] + [:div.add-page {:on-click add-export} i/close]] + + (when (seq @exports) + [:div.element-set-content + (for [[index export] (d/enumerate @exports)] + [:div.element-set-options-group + {:key index} + [:select.input-select {:on-change (partial on-scale-change index) + :value (:scale export)} + [:option {:value "0.5"} "0.5x"] + [:option {:value "0.75"} "0.75x"] + [:option {:value "1"} "1x"] + [:option {:value "1.5"} "1.5x"] + [:option {:value "2"} "2x"] + [:option {:value "4"} "4x"] + [:option {:value "6"} "6x"]] + + [:input.input-text {:on-change (partial on-suffix-change index) + :value (:suffix export)}] + [:select.input-select {:on-change (partial on-type-change index) + :value (name (:type export))} + [:option {:value "png"} "PNG"] + [:option {:value "jpeg"} "JPEG"] + [:option {:value "svg"} "SVG"]] + + [:div.delete-icon {:on-click (partial delete-export index)} + i/minus]]) + + [:div.btn-icon-dark.download-button + {:on-click (when-not @loading? on-download) + :class (dom/classnames :btn-disabled @loading?) + :disabled @loading?} + (if @loading? + (t locale "workspace.options.exporting-object") + (t locale "workspace.options.export-object"))]])])) + diff --git a/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs b/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs index 3a63df4298..210503d6c6 100644 --- a/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/right_sidebar.cljs @@ -31,7 +31,7 @@ (mf/defc right-sidebar - [{:keys [frame]}] + [{:keys [frame page-id file-id]}] (let [expanded (mf/use-state false) locale (mf/deref i18n/locale) section (mf/use-state :info #_:code) @@ -57,7 +57,9 @@ (reset! section %)) :selected @section} [:& tab-element {:id :info :title (t locale "handoff.tabs.info")} - [:& attributes {:frame frame + [:& attributes {:page-id page-id + :file-id file-id + :frame frame :shapes shapes}]] [:& tab-element {:id :code :title (t locale "handoff.tabs.code")} From b3fee3943370b7315f89bd1cb5c1dbd38a1b573c Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Tue, 3 Nov 2020 15:34:12 +0100 Subject: [PATCH 26/48] :sparkles: Show measures on workspace when pressed "ALT" --- .../src/app/main/ui/components/dropdown.cljs | 2 +- frontend/src/app/main/ui/measurements.cljs | 256 ++++++++++++++++++ .../ui/viewer/handoff/selection_feedback.cljs | 209 +------------- .../src/app/main/ui/workspace/selection.cljs | 52 +++- .../app/main/ui/workspace/snap_distances.cljs | 2 +- .../app/main/ui/workspace/snap_points.cljs | 5 +- .../src/app/main/ui/workspace/viewport.cljs | 9 +- 7 files changed, 324 insertions(+), 211 deletions(-) create mode 100644 frontend/src/app/main/ui/measurements.cljs diff --git a/frontend/src/app/main/ui/components/dropdown.cljs b/frontend/src/app/main/ui/components/dropdown.cljs index 209224bff9..9903c528e7 100644 --- a/frontend/src/app/main/ui/components/dropdown.cljs +++ b/frontend/src/app/main/ui/components/dropdown.cljs @@ -20,7 +20,7 @@ (if ref (let [target (dom/get-target event) parent (mf/ref-val ref)] - (when-not (.contains parent target) + (when-not (or (not parent) (.contains parent target)) (on-close))) (on-close))) diff --git a/frontend/src/app/main/ui/measurements.cljs b/frontend/src/app/main/ui/measurements.cljs new file mode 100644 index 0000000000..808548d6c5 --- /dev/null +++ b/frontend/src/app/main/ui/measurements.cljs @@ -0,0 +1,256 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; This Source Code Form is "Incompatible With Secondary Licenses", as +;; defined by the Mozilla Public License, v. 2.0. +;; +;; Copyright (c) 2020 UXBOX Labs SL + +(ns app.main.ui.measurements + (:require + [rumext.alpha :as mf] + [cuerdas.core :as str] + [okulary.core :as l] + [app.common.data :as d] + [app.common.math :as mth] + [app.common.geom.shapes :as gsh] + [app.common.geom.point :as gpt] + [app.main.store :as st])) + +;; ------------------------------------------------ +;; CONSTANTS +;; ------------------------------------------------ + +(def font-size 10) +(def selection-rect-width 1) + +(def select-color "#1FDEA7") +(def select-guide-width 1) +(def select-guide-dasharray 5) + +(def hover-color "#DB00FF") +(def hover-color-text "#FFF") +(def hover-guide-width 1) + +(def size-display-color "#FFF") +(def size-display-opacity 0.7) +(def size-display-text-color "#000") +(def size-display-width-min 50) +(def size-display-width-max 75) +(def size-display-height 16) + +(def distance-color "#DB00FF") +(def distance-text-color "#FFF") +(def distance-border-radius 2) +(def distance-pill-width 40) +(def distance-pill-height 16) +(def distance-line-stroke 1) + +;; ------------------------------------------------ +;; HELPERS +;; ------------------------------------------------ + +(defn bound->selrect [bounds] + {:x (:x bounds) + :y (:y bounds) + :x1 (:x bounds) + :y1 (:y bounds) + :x2 (+ (:x bounds) (:width bounds)) + :y2 (+ (:y bounds) (:height bounds)) + :width (:width bounds) + :height (:height bounds)}) + +(defn calculate-guides + "Calculates coordinates for the selection guides" + [bounds selrect] + (let [{bounds-width :width bounds-height :height} bounds + {:keys [x y width height]} selrect] + [[(:x bounds) y (+ (:x bounds) bounds-width) y] + [(:x bounds) (+ y height) (+ (:x bounds) bounds-width) (+ y height)] + [x (:y bounds) x (+ (:y bounds) bounds-height)] + [(+ x width) (:y bounds) (+ x width) (+ (:y bounds) bounds-height)]])) + +(defn calculate-distance-lines + "Given a start/end from two shapes gives the distance lines" + [from-s from-e to-s to-e] + (let [ss (- to-s from-s) + se (- to-e from-s) + es (- to-s from-e) + ee (- to-e from-e)] + (cond-> [] + (or (and (neg? ss) (pos? se)) + (and (pos? ss) (neg? ee)) + (and (neg? ss) (> ss se))) + (conj [ from-s (+ from-s ss) ]) + + (or (and (neg? se) (<= ss se))) + (conj [ from-s (+ from-s se) ]) + + (or (and (pos? es) (<= es ee))) + (conj [ from-e (+ from-e es) ]) + + (or (and (pos? ee) (neg? es)) + (and (neg? ee) (pos? ss)) + (and (pos? ee) (< ee es))) + (conj [ from-e (+ from-e ee) ])))) + +;; ------------------------------------------------ +;; COMPONENTS +;; ------------------------------------------------ + +(mf/defc size-display [{:keys [type selrect zoom]}] + (let [{:keys [x y width height]} selrect + size-label (str/fmt "%s x %s" (mth/round width) (mth/round height)) + + rect-height (/ size-display-height zoom) + rect-width (/ (if (<= (count size-label) 9) + size-display-width-min + size-display-width-max) + zoom) + text-padding (/ 4 zoom)] + [:g.size-display + [:rect {:x (+ x (/ width 2) (- (/ rect-width 2))) + :y (- (+ y height) rect-height) + :width rect-width + :height rect-height + :style {:fill size-display-color + :fill-opacity size-display-opacity}}] + + [:text {:x (+ (+ x (/ width 2) (- (/ rect-width 2))) (/ rect-width 2)) + :y (- (+ y height (+ text-padding (/ rect-height 2))) rect-height) + :width rect-width + :height rect-height + :text-anchor "middle" + :style {:fill size-display-text-color + :font-size (/ font-size zoom)}} + size-label]])) + +(mf/defc distance-display-pill [{:keys [x y zoom distance bounds]}] + (let [distance-pill-width (/ distance-pill-width zoom) + distance-pill-height (/ distance-pill-height zoom) + distance-line-stroke (/ distance-line-stroke zoom) + font-size (/ font-size zoom) + text-padding (/ 3 zoom) + distance-border-radius (/ distance-border-radius zoom) + + {bounds-width :width bounds-height :height} bounds + + rect-x (- x (/ distance-pill-width 2)) + rect-y (- y (/ distance-pill-height 2)) + + text-x x + text-y (+ y text-padding) + + offset-x (cond (< rect-x (:x bounds)) (- (:x bounds) rect-x) + (> (+ rect-x distance-pill-width) (+ (:x bounds) bounds-width)) + (- (+ (:x bounds) bounds-width) (+ rect-x distance-pill-width)) + :else 0) + + offset-y (cond (< rect-y (:y bounds)) (- (:y bounds) rect-y) + (> (+ rect-y distance-pill-height) (+ (:y bounds) bounds-height)) + (- (+ (:y bounds) bounds-height) (+ rect-y distance-pill-height)) + :else 0)] + [:g.distance-pill + [:rect {:x (+ rect-x offset-x) + :y (+ rect-y offset-y) + :rx distance-border-radius + :ry distance-border-radius + :width distance-pill-width + :height distance-pill-height + :style {:fill distance-color}}] + + [:text {:x (+ text-x offset-x) + :y (+ text-y offset-y) + :rx distance-border-radius + :ry distance-border-radius + :text-anchor "middle" + :width distance-pill-width + :height distance-pill-height + :style {:fill distance-text-color + :font-size font-size}} + distance]])) + +(mf/defc selection-rect [{:keys [frame selrect zoom]}] + (let [{:keys [x y width height]} selrect + selection-rect-width (/ selection-rect-width zoom)] + [:g.selection-rect + [:rect {:x x + :y y + :width width + :height height + :style {:fill "transparent" + :stroke hover-color + :stroke-width selection-rect-width}}]])) + +(mf/defc distance-display [{:keys [type from to zoom frame bounds]}] + (let [fixed-x (if (gsh/fully-contained? from to) + (+ (:x to) (/ (:width to) 2)) + (+ (:x from) (/ (:width from) 2))) + fixed-y (if (gsh/fully-contained? from to) + (+ (:y to) (/ (:height to) 2)) + (+ (:y from) (/ (:height from) 2))) + + v-lines (->> (calculate-distance-lines (:y1 from) (:y2 from) (:y1 to) (:y2 to)) + (map (fn [[start end]] [fixed-x start fixed-x end]))) + + h-lines (->> (calculate-distance-lines (:x1 from) (:x2 from) (:x1 to) (:x2 to)) + (map (fn [[start end]] [start fixed-y end fixed-y]))) + + lines (d/concat [] v-lines h-lines)] + + (for [[x1 y1 x2 y2] lines] + (let [center-x (+ x1 (/ (- x2 x1) 2)) + center-y (+ y1 (/ (- y2 y1) 2)) + distance (gpt/distance (gpt/point x1 y1) (gpt/point x2 y2))] + [:g.distance-line {:key (str "line-%s-%s-%s-%s" x1 y1 x2 y2)} + [:line + {:x1 x1 + :y1 y1 + :x2 x2 + :y2 y2 + :style {:stroke distance-color + :stroke-width distance-line-stroke}}] + + [:& distance-display-pill + {:x center-x + :y center-y + :zoom zoom + :distance (str (mth/round distance) "px") + :bounds bounds}]])))) + +(mf/defc selection-guides [{:keys [bounds selrect zoom]}] + [:g.selection-guides + (for [[x1 y1 x2 y2] (calculate-guides bounds selrect)] + [:line {:x1 x1 + :y1 y1 + :x2 x2 + :y2 y2 + :style {:stroke select-color + :stroke-width (/ select-guide-width zoom) + :stroke-dasharray (/ select-guide-dasharray zoom)}}])]) + +(mf/defc measurement [{:keys [bounds frame selected-shapes hover-shape zoom]}] + (let [selected-selrect (gsh/selection-rect selected-shapes) + hover-selrect (:selrect hover-shape) + bounds-selrect (bound->selrect bounds)] + + (when (seq selected-shapes) + [:g.measurement-feedback {:pointer-events "none"} + [:& selection-guides {:selrect selected-selrect :bounds bounds :zoom zoom}] + [:& size-display {:selrect selected-selrect :zoom zoom}] + + (if (not hover-shape) + (when frame + [:g.hover-shapes + [:& distance-display {:from (:selrect frame) + :to selected-selrect + :zoom zoom + :bounds bounds-selrect}]]) + + [:g.hover-shapes + [:& selection-rect {:type :hover :selrect hover-selrect :zoom zoom}] + [:& size-display {:selrect hover-selrect :zoom zoom}] + [:& distance-display {:from hover-selrect :to selected-selrect :zoom zoom :bounds bounds-selrect}]])]))) + + diff --git a/frontend/src/app/main/ui/viewer/handoff/selection_feedback.cljs b/frontend/src/app/main/ui/viewer/handoff/selection_feedback.cljs index 116ea6da57..01bbae2a6d 100644 --- a/frontend/src/app/main/ui/viewer/handoff/selection_feedback.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/selection_feedback.cljs @@ -16,36 +16,17 @@ [app.common.math :as mth] [app.common.geom.shapes :as gsh] [app.common.geom.point :as gpt] - [app.main.store :as st])) + [app.main.store :as st] + [app.main.ui.measurements :refer [selection-guides size-display measurement]])) ;; ------------------------------------------------ ;; CONSTANTS ;; ------------------------------------------------ (def select-color "#1FDEA7") -(def hover-color "#DB00FF") -(def hover-color-text "#FFF") -(def font-size 10) - (def selection-rect-width 1) - (def select-guide-width 1) (def select-guide-dasharray 5) -(def hover-guide-width 1) - -(def size-display-color "#FFF") -(def size-display-opacity 0.7) -(def size-display-text-color "#000") -(def size-display-width-min 50) -(def size-display-width-max 75) -(def size-display-height 16) - -(def distance-color "#DB00FF") -(def distance-text-color "#FFF") -(def distance-border-radius 2) -(def distance-pill-width 40) -(def distance-pill-height 16) -(def distance-line-stroke 1) ;; ------------------------------------------------ ;; LENSES @@ -87,182 +68,28 @@ :width (:width frame) :height (:height frame)}) -(defn calculate-guides - "Calculates coordinates for the selection guides" - [frame selrect] - (let [{frame-width :width frame-height :height} frame - {:keys [x y width height]} selrect] - [[0 y frame-width y] - [0 (+ y height) frame-width (+ y height)] - [x 0 x frame-height] - [(+ x width) 0 (+ x width) frame-height]])) - -(defn calculate-distance-lines - "Given a start/end from two shapes gives the distance lines" - [from-s from-e to-s to-e] - (let [ss (- to-s from-s) - se (- to-e from-s) - es (- to-s from-e) - ee (- to-e from-e)] - (cond-> [] - (or (and (neg? ss) (pos? se)) - (and (pos? ss) (neg? ee)) - (and (neg? ss) (> ss se))) - (conj [ from-s (+ from-s ss) ]) - - (or (and (neg? se) (<= ss se))) - (conj [ from-s (+ from-s se) ]) - - (or (and (pos? es) (<= es ee))) - (conj [ from-e (+ from-e es) ]) - - (or (and (pos? ee) (neg? es)) - (and (neg? ee) (pos? ss)) - (and (pos? ee) (< ee es))) - (conj [ from-e (+ from-e ee) ])))) - ;; ------------------------------------------------ ;; COMPONENTS ;; ------------------------------------------------ -(mf/defc selection-guides [{:keys [frame selrect zoom]}] - [:g.selection-guides - (for [[x1 y1 x2 y2] (calculate-guides frame selrect)] - [:line {:x1 x1 - :y1 y1 - :x2 x2 - :y2 y2 - :style {:stroke select-color - :stroke-width (/ select-guide-width zoom) - :stroke-dasharray (/ select-guide-dasharray zoom)}}])]) - -(mf/defc selection-rect [{:keys [type frame selrect zoom]}] +(mf/defc selection-rect [{:keys [frame selrect zoom]}] (let [{:keys [x y width height]} selrect - stroke-color (case type - :selection select-color - :hover hover-color)] + selection-rect-width (/ selection-rect-width zoom)] [:g.selection-rect [:rect {:x x :y y :width width :height height :style {:fill "transparent" - :stroke stroke-color - :stroke-width (/ selection-rect-width zoom)}}]])) - -(mf/defc size-display [{:keys [type selrect zoom]}] - (let [{:keys [x y width height]} selrect - size-label (str/fmt "%s x %s" (mth/round width) (mth/round height)) - - rect-height (/ size-display-height zoom) - rect-width (/ (if (<= (count size-label) 9) - size-display-width-min - size-display-width-max) - zoom) - text-padding (/ 4 zoom)] - [:g.size-display - [:rect {:x (+ x (/ width 2) (- (/ rect-width 2))) - :y (- (+ y height) rect-height) - :width rect-width - :height rect-height - :style {:fill size-display-color - :fill-opacity size-display-opacity}}] - - [:text {:x (+ (+ x (/ width 2) (- (/ rect-width 2))) (/ rect-width 2)) - :y (- (+ y height (+ text-padding (/ rect-height 2))) rect-height) - :width rect-width - :height rect-height - :text-anchor "middle" - :style {:fill size-display-text-color - :font-size (/ font-size zoom)}} - size-label]])) - -(mf/defc distance-display-pill [{:keys [x y zoom distance frame]}] - (let [distance-pill-width (/ distance-pill-width zoom) - distance-pill-height (/ distance-pill-height zoom) - distance-line-stroke (/ distance-line-stroke zoom) - font-size (/ font-size zoom) - text-padding (/ 3 zoom) - distance-border-radius (/ distance-border-radius zoom) - - {frame-width :width frame-height :height} frame - - rect-x (- x (/ distance-pill-width 2)) - rect-y (- y (/ distance-pill-height 2)) - - text-x x - text-y (+ y text-padding) - - offset-x (cond (< rect-x 0) (- rect-x) - (> (+ rect-x distance-pill-width) frame-width) (- frame-width (+ rect-x distance-pill-width)) - :else 0) - - offset-y (cond (< rect-y 0) (- rect-y) - (> (+ rect-y distance-pill-height) frame-height) (- frame-height (+ rect-y distance-pill-height)) - :else 0) - - ] - [:g.distance-pill - [:rect {:x (+ rect-x offset-x) - :y (+ rect-y offset-y) - :rx distance-border-radius - :ry distance-border-radius - :width distance-pill-width - :height distance-pill-height - :style {:fill distance-color}}] - - [:text {:x (+ text-x offset-x) - :y (+ text-y offset-y) - :rx distance-border-radius - :ry distance-border-radius - :text-anchor "middle" - :width distance-pill-width - :height distance-pill-height - :style {:fill distance-text-color - :font-size font-size}} - distance]]) - ) - -(mf/defc distance-display [{:keys [type from to zoom frame]}] - (let [fixed-x (if (gsh/fully-contained? from to) - (+ (:x to) (/ (:width to) 2)) - (+ (:x from) (/ (:width from) 2))) - fixed-y (if (gsh/fully-contained? from to) - (+ (:y to) (/ (:height to) 2)) - (+ (:y from) (/ (:height from) 2))) - - v-lines (->> (calculate-distance-lines (:y1 from) (:y2 from) (:y1 to) (:y2 to)) - (map (fn [[start end]] [fixed-x start fixed-x end]))) - - h-lines (->> (calculate-distance-lines (:x1 from) (:x2 from) (:x1 to) (:x2 to)) - (map (fn [[start end]] [start fixed-y end fixed-y]))) - - lines (d/concat [] v-lines h-lines)] - - (for [[x1 y1 x2 y2] lines] - (let [center-x (+ x1 (/ (- x2 x1) 2)) - center-y (+ y1 (/ (- y2 y1) 2)) - distance (gpt/distance (gpt/point x1 y1) (gpt/point x2 y2))] - [:g.distance-line {:key (str "line-%s-%s-%s-%s" x1 y1 x2 y2)} - [:line - {:x1 x1 - :y1 y1 - :x2 x2 - :y2 y2 - :style {:stroke distance-color - :stroke-width distance-line-stroke}}] - - [:& distance-display-pill - {:x center-x - :y center-y - :zoom zoom - :distance (str (mth/round distance) "px") - :frame frame}]])))) + :stroke select-color + :stroke-width selection-rect-width}}]])) (mf/defc selection-feedback [{:keys [frame]}] (let [zoom (mf/deref selected-zoom) + hover-shapes-ref (mf/use-memo (make-hover-shapes-iref)) - hover-shape (mf/deref hover-shapes-ref) + hover-shape (-> (mf/deref hover-shapes-ref) + (gsh/translate-to-frame frame)) selected-shapes-ref (mf/use-memo (make-selected-shapes-iref)) selected-shapes (->> (mf/deref selected-shapes-ref) @@ -271,19 +98,13 @@ selrect (gsh/selection-rect selected-shapes)] (when (seq selected-shapes) - [:g.measurement-feedback {:pointer-events "none"} + [:g.selection-feedback {:pointer-events "none"} [:g.selected-shapes [:& selection-guides {:selrect selrect :frame frame :zoom zoom}] - [:& selection-rect {:type :selection :selrect selrect :zoom zoom}] + [:& selection-rect {:selrect selrect :zoom zoom}] [:& size-display {:selrect selrect :zoom zoom}]] - (if (and (not-empty selected-shapes) (not hover-shape)) - [:g.hover-shapes - [:& distance-display {:from (frame->selrect frame) :to selrect :zoom zoom :frame frame}]] - - (let [hover-selrect (-> hover-shape (gsh/translate-to-frame frame) :selrect)] - [:g.hover-shapes - [:& selection-rect {:type :hover :selrect hover-selrect :zoom zoom}] - [:& size-display {:selrect hover-selrect :zoom zoom}] - [:& distance-display {:from hover-selrect :to selrect :zoom zoom :frame frame}]]))]))) - + [:& measurement {:bounds frame + :selected-shapes selected-shapes + :hover-shape hover-shape + :zoom zoom}]]))) diff --git a/frontend/src/app/main/ui/workspace/selection.cljs b/frontend/src/app/main/ui/workspace/selection.cljs index eda6c18880..4c149c3cbb 100644 --- a/frontend/src/app/main/ui/workspace/selection.cljs +++ b/frontend/src/app/main/ui/workspace/selection.cljs @@ -15,6 +15,8 @@ [potok.core :as ptk] [rumext.alpha :as mf] [rumext.util :refer [map->obj]] + [app.common.uuid :as uuid] + [app.util.data :as d] [app.main.data.workspace :as dw] [app.main.data.workspace.common :as dwc] [app.main.refs :as refs] @@ -28,7 +30,8 @@ [app.common.geom.point :as gpt] [app.common.geom.matrix :as gmt] [app.util.debug :refer [debug?]] - [app.main.ui.workspace.shapes.outline :refer [outline]])) + [app.main.ui.workspace.shapes.outline :refer [outline]] + [app.main.ui.measurements :as msr])) (def rotation-handler-size 25) (def resize-point-radius 4) @@ -138,8 +141,7 @@ [:circle {:r (/ resize-point-radius zoom) :style {:fillOpacity "1" :strokeWidth "1px" - :vectorEffect "non-scaling-stroke" - } + :vectorEffect "non-scaling-stroke"} :fill "#FFFFFF" :stroke (if (and (= position :bottom-right) overflow-text) "red" color) :cx cx' @@ -266,9 +268,16 @@ :fill "transparent"}}]])) (mf/defc multiple-selection-handlers - [{:keys [shapes selected zoom color] :as props}] + [{:keys [shapes selected zoom color show-distances] :as props}] (let [shape (geom/selection-rect shapes) shape-center (geom/center shape) + + hover-id (-> (mf/deref refs/current-hover) first) + hover-id (when-not (d/seek #(= hover-id (:id %)) shapes) hover-id) + hover-shape (mf/deref (refs/object-by-id hover-id)) + + vbox (mf/deref refs/vbox) + on-resize (fn [current-position initial-position event] (dom/stop-propagation event) (st/emit! (dw/start-resize current-position initial-position selected shape))) @@ -282,13 +291,29 @@ :color color :on-resize on-resize :on-rotate on-rotate}] + + (when show-distances + [:& msr/measurement {:bounds vbox + :selected-shapes shapes + :hover-shape hover-shape + :zoom zoom}]) + (when (debug? :selection-center) [:circle {:cx (:x shape-center) :cy (:y shape-center) :r 5 :fill "yellow"}])])) (mf/defc single-selection-handlers - [{:keys [shape zoom color] :as props}] + [{:keys [shape zoom color show-distances] :as props}] (let [shape-id (:id shape) shape (geom/transform-shape shape) + + frame (mf/deref (refs/object-by-id (:frame-id shape))) + frame (when-not (= (:id frame) uuid/zero) frame) + vbox (mf/deref refs/vbox) + + hover-id (-> (mf/deref refs/current-hover) first) + hover-id (when-not (= shape-id hover-id) hover-id) + hover-shape (mf/deref (refs/object-by-id hover-id)) + shape' (if (debug? :simple-selection) (geom/selection-rect [shape]) shape) on-resize (fn [current-position initial-position event] (dom/stop-propagation event) @@ -303,10 +328,17 @@ :zoom zoom :color color :on-rotate on-rotate - :on-resize on-resize}]])) + :on-resize on-resize}] + + (when show-distances + [:& msr/measurement {:bounds vbox + :frame frame + :selected-shapes [shape] + :hover-shape hover-shape + :zoom zoom}])])) (mf/defc selection-handlers - [{:keys [selected edition zoom] :as props}] + [{:keys [selected edition zoom show-distances] :as props}] (let [;; We need remove posible nil values because on shape ;; deletion many shape will reamin selected and deleted ;; in the same time for small instant of time @@ -326,7 +358,8 @@ [:& multiple-selection-handlers {:shapes shapes :selected selected :zoom zoom - :color color}] + :color color + :show-distances show-distances}] (and (= type :text) (= edition (:id shape))) @@ -343,4 +376,5 @@ :else [:& single-selection-handlers {:shape shape :zoom zoom - :color color}]))) + :color color + :show-distances show-distances}]))) diff --git a/frontend/src/app/main/ui/workspace/snap_distances.cljs b/frontend/src/app/main/ui/workspace/snap_distances.cljs index fc7f00f3c3..a2559c01b7 100644 --- a/frontend/src/app/main/ui/workspace/snap_distances.cljs +++ b/frontend/src/app/main/ui/workspace/snap_distances.cljs @@ -216,7 +216,7 @@ (filter #(show-distance? (distance-to-selrect %))) (map #(vector selrect (:selrect %)))) - segments-to-display (concat other-shapes-segments selection-segments)] + segments-to-display (d/concat #{} other-shapes-segments selection-segments)] (mf/use-effect (fn [] diff --git a/frontend/src/app/main/ui/workspace/snap_points.cljs b/frontend/src/app/main/ui/workspace/snap_points.cljs index b0934c370f..480d1d57ce 100644 --- a/frontend/src/app/main/ui/workspace/snap_points.cljs +++ b/frontend/src/app/main/ui/workspace/snap_points.cljs @@ -116,8 +116,9 @@ ;; can cause problems with react keys snap-points (into #{} (mapcat add-point-to-snaps) @state) - snap-lines (into (process-snap-lines @state :x) - (process-snap-lines @state :y))] + snap-lines (->> (into (process-snap-lines @state :x) + (process-snap-lines @state :y)) + (into #{}))] (mf/use-effect (fn [] diff --git a/frontend/src/app/main/ui/workspace/viewport.cljs b/frontend/src/app/main/ui/workspace/viewport.cljs index 8f9d77ae26..402399bd68 100644 --- a/frontend/src/app/main/ui/workspace/viewport.cljs +++ b/frontend/src/app/main/ui/workspace/viewport.cljs @@ -210,6 +210,7 @@ (assoc :modifiers (:modifiers local)) (gsh/transform-shape)) + alt? (mf/use-state false) viewport-ref (mf/use-ref nil) zoom-view-ref (mf/use-ref nil) last-position (mf/use-var nil) @@ -498,6 +499,7 @@ (timers/schedule #(st/emit! (dw/initialize-viewport size)))))) (mf/use-layout-effect (mf/deps layout) on-resize) + (hooks/use-stream ms/keyboard-alt #(reset! alt? %)) [:* (when picking-color? @@ -513,9 +515,7 @@ :zoom (:zoom local) :drawing drawing :page-id page-id - :file-id (:id file)} - ]) - + :file-id (:id file)}]) [:svg.viewport {:preserveAspectRatio "xMidYMid meet" @@ -569,7 +569,8 @@ (when (seq selected) [:& selection-handlers {:selected selected :zoom zoom - :edition edition}]) + :edition edition + :show-distances (and (not (:transform local)) @alt?)}]) (when (= (count selected) 1) [:& gradient-handlers {:id (first selected) From 1bb4511dd3ee5cac55b317c21e9d070a55629405 Mon Sep 17 00:00:00 2001 From: elhombretecla Date: Wed, 4 Nov 2020 13:10:43 +0100 Subject: [PATCH 27/48] :sparkles: Add new workspace icons --- frontend/resources/images/icons/artboard.svg | 4 +++- frontend/resources/images/icons/layers.svg | 5 ++++- frontend/resources/images/icons/library.svg | 5 +++-- frontend/resources/images/icons/palette.svg | 5 ++++- frontend/resources/images/icons/pencil.svg | 5 ++++- frontend/resources/images/icons/undo-history.svg | 5 ++++- 6 files changed, 22 insertions(+), 7 deletions(-) diff --git a/frontend/resources/images/icons/artboard.svg b/frontend/resources/images/icons/artboard.svg index c970eab898..c913973004 100644 --- a/frontend/resources/images/icons/artboard.svg +++ b/frontend/resources/images/icons/artboard.svg @@ -1 +1,3 @@ - + + + diff --git a/frontend/resources/images/icons/layers.svg b/frontend/resources/images/icons/layers.svg index 9c01ea37f8..3968ee0dbe 100644 --- a/frontend/resources/images/icons/layers.svg +++ b/frontend/resources/images/icons/layers.svg @@ -1 +1,4 @@ - \ No newline at end of file + + + + diff --git a/frontend/resources/images/icons/library.svg b/frontend/resources/images/icons/library.svg index 1be040dba5..0011fd6b2a 100644 --- a/frontend/resources/images/icons/library.svg +++ b/frontend/resources/images/icons/library.svg @@ -1,3 +1,4 @@ - - + + + diff --git a/frontend/resources/images/icons/palette.svg b/frontend/resources/images/icons/palette.svg index a1f15d6ebf..80ab784018 100644 --- a/frontend/resources/images/icons/palette.svg +++ b/frontend/resources/images/icons/palette.svg @@ -1 +1,4 @@ - \ No newline at end of file + + + + diff --git a/frontend/resources/images/icons/pencil.svg b/frontend/resources/images/icons/pencil.svg index 0ef2915b07..8382b124f7 100644 --- a/frontend/resources/images/icons/pencil.svg +++ b/frontend/resources/images/icons/pencil.svg @@ -1 +1,4 @@ - \ No newline at end of file + + + + diff --git a/frontend/resources/images/icons/undo-history.svg b/frontend/resources/images/icons/undo-history.svg index 2f9db520a5..42a4cc1c7b 100644 --- a/frontend/resources/images/icons/undo-history.svg +++ b/frontend/resources/images/icons/undo-history.svg @@ -1 +1,4 @@ - \ No newline at end of file + + + + From fd1f42dc940537e10add1d8e6ab33447a996e878 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Wed, 4 Nov 2020 14:47:27 +0100 Subject: [PATCH 28/48] :bug: Fix initialize layout --- frontend/src/app/main/data/workspace.cljs | 27 +++++++++++------------ frontend/src/app/main/ui.cljs | 4 ++-- frontend/src/app/main/ui/workspace.cljs | 6 ++--- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index 4435c22ca9..ef40318313 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -85,7 +85,7 @@ :snap-grid :dynamic-alignment}) -(def layout-flags +(def layout-names {:assets {:del #{:sitemap :layers :document-history } :add #{:assets}} @@ -120,21 +120,20 @@ (declare ensure-layout) (defn initialize-layout - [layout] - (us/verify (s/nilable ::us/string) layout) + [layout-name] + (us/verify (s/nilable ::us/keyword) layout-name) (ptk/reify ::initialize-layout ptk/UpdateEvent (update [_ state] - (update state :worskpace-layout + (update state :workspace-layout (fn [layout] - (merge default-layout layout)))) + (or layout default-layout)))) ptk/WatchEvent (watch [_ state stream] - (when layout - (let [layout-flag (keyword layout)] - (when (contains? layout-flags layout-flag) - (rx/of (ensure-layout layout-flag)))))))) + (if (and layout-name (contains? layout-names layout-name)) + (rx/of (ensure-layout layout-name)) + (rx/of (ensure-layout :layers)))))) (defn initialize-file [project-id file-id] @@ -416,16 +415,16 @@ ;; --- Toggle layout flag (defn ensure-layout - [layout] - (assert (contains? layout-flags layout) - (str "unexpected layout name: " layout)) + [layout-name] + (assert (contains? layout-names layout-name) + (str "unexpected layout name: " layout-name)) (ptk/reify ::ensure-layout ptk/UpdateEvent (update [_ state] (update state :workspace-layout (fn [stored] - (let [todel (get-in layout-flags [layout :del] #{}) - toadd (get-in layout-flags [layout :add] #{})] + (let [todel (get-in layout-names [layout-name :del] #{}) + toadd (get-in layout-names [layout-name :add] #{})] (-> stored (set/difference todel) (set/union toadd)))))))) diff --git a/frontend/src/app/main/ui.cljs b/frontend/src/app/main/ui.cljs index 3864ecfe72..611ba44f1f 100644 --- a/frontend/src/app/main/ui.cljs +++ b/frontend/src/app/main/ui.cljs @@ -150,11 +150,11 @@ (let [project-id (uuid (get-in route [:params :path :project-id])) file-id (uuid (get-in route [:params :path :file-id])) page-id (uuid (get-in route [:params :query :page-id])) - layout (get-in route [:params :query :layout])] + layout-name (get-in route [:params :query :layout])] [:& workspace/workspace {:project-id project-id :file-id file-id :page-id page-id - :layout layout + :layout-name (keyword layout-name) :key file-id}]) :not-authorized diff --git a/frontend/src/app/main/ui/workspace.cljs b/frontend/src/app/main/ui/workspace.cljs index 8579210d5b..ea77a68b97 100644 --- a/frontend/src/app/main/ui/workspace.cljs +++ b/frontend/src/app/main/ui/workspace.cljs @@ -99,10 +99,10 @@ i/loader-pencil]) (mf/defc workspace - [{:keys [project-id file-id page-id layout] :as props}] + [{:keys [project-id file-id page-id layout-name] :as props}] (mf/use-effect - (mf/deps layout) - #(st/emit! (dw/initialize-layout layout))) + (mf/deps layout-name) + #(st/emit! (dw/initialize-layout layout-name))) (mf/use-effect (mf/deps project-id file-id) From 1823ecda400707e9d2c68f251cbde82ab07044e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Fri, 2 Oct 2020 10:26:36 +0200 Subject: [PATCH 29/48] :tada: Allow to rename a component in the library --- common/app/common/pages.cljc | 12 +++-- .../styles/main/partials/sidebar-assets.scss | 19 ++++++++ .../app/main/data/workspace/libraries.cljs | 21 ++++++++- .../main/ui/components/editable_label.cljs | 28 +++++++---- .../app/main/ui/workspace/sidebar/assets.cljs | 47 +++++++++++++++---- 5 files changed, 104 insertions(+), 23 deletions(-) diff --git a/common/app/common/pages.cljc b/common/app/common/pages.cljc index 348d98b47b..c92015a043 100644 --- a/common/app/common/pages.cljc +++ b/common/app/common/pages.cljc @@ -523,7 +523,8 @@ (s/keys :req-un [::id ::name :internal.changes.add-component/shapes])) (defmethod change-spec :mod-component [_] - (s/keys :req-un [::id ::name :internal.changes.add-component/shapes])) + (s/keys :req-un [::id] + :opt-un [::name :internal.changes.add-component/shapes])) (defmethod change-spec :del-component [_] (s/keys :req-un [::id])) @@ -964,9 +965,12 @@ (defmethod process-change :mod-component [data {:keys [id name shapes]}] (update-in data [:components id] - #(assoc % - :name name - :objects (d/index-by :id shapes)))) + #(cond-> % + (some? name) + (assoc :name name) + + (some? shapes) + (assoc :objects (d/index-by :id shapes))))) (defmethod process-change :del-component [data {:keys [id]}] diff --git a/frontend/resources/styles/main/partials/sidebar-assets.scss b/frontend/resources/styles/main/partials/sidebar-assets.scss index 0b4df5b664..29938b2386 100644 --- a/frontend/resources/styles/main/partials/sidebar-assets.scss +++ b/frontend/resources/styles/main/partials/sidebar-assets.scss @@ -213,9 +213,28 @@ left: 0; bottom: 0; width: 100%; + padding: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + + &.editing { + display: block; + } + + .editable-label-input { + border: 1px solid $color-gray-20; + border-radius: 3px; + font-size: $fs11; + padding: 2px; + margin: 0; + height: unset; + width: 100%; + } + + .editable-label-close { + display: none; + } } .grid-cell:hover { diff --git a/frontend/src/app/main/data/workspace/libraries.cljs b/frontend/src/app/main/data/workspace/libraries.cljs index bc864b7c0a..7809f40fae 100644 --- a/frontend/src/app/main/data/workspace/libraries.cljs +++ b/frontend/src/app/main/data/workspace/libraries.cljs @@ -253,6 +253,25 @@ (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true}) (dws/select-shapes (d/ordered-set (:id group)))))))))) +(defn rename-component + [id new-name] + (us/assert ::us/uuid id) + (us/assert ::us/string new-name) + (ptk/reify ::rename-component + ptk/WatchEvent + (watch [_ state stream] + (let [component (get-in state [:workspace-data :components id]) + + rchanges [{:type :mod-component + :id id + :name new-name}] + + uchanges [{:type :mod-component + :id id + :name (:name component)}]] + + (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true})))))) + (defn duplicate-component "Create a new component copied from the one with the given id." [{:keys [id] :as params}] @@ -279,7 +298,7 @@ :id (:id new-shape)}]] (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true})))))) - + (defn delete-component "Delete the component with the given id, from the current file library." [{:keys [id] :as params}] diff --git a/frontend/src/app/main/ui/components/editable_label.cljs b/frontend/src/app/main/ui/components/editable_label.cljs index fa2de34878..6fac66f569 100644 --- a/frontend/src/app/main/ui/components/editable_label.cljs +++ b/frontend/src/app/main/ui/components/editable_label.cljs @@ -17,35 +17,43 @@ [app.util.data :refer [classnames]])) (mf/defc editable-label - [{:keys [ value on-change on-cancel edit readonly class-name]}] + [{:keys [value on-change on-cancel editing? disable-dbl-click? class-name]}] (let [input (mf/use-ref nil) state (mf/use-state (:editing false)) - is-editing (or edit (:editing @state)) + is-editing (:editing @state) start-editing (fn [] (swap! state assoc :editing true) (timers/schedule 100 #(dom/focus! (mf/ref-val input)))) stop-editing (fn [] (swap! state assoc :editing false)) + accept-editing (fn [] + (when (:editing @state) + (let [value (-> (mf/ref-val input) dom/get-value)] + (on-change value) + (stop-editing)))) cancel-editing (fn [] (stop-editing) (when on-cancel (on-cancel))) - on-dbl-click (fn [e] (when (not readonly) (start-editing))) + on-dbl-click (fn [e] (when (not disable-dbl-click?) (start-editing))) on-key-up (fn [e] (cond (kbd/esc? e) (cancel-editing) (kbd/enter? e) - (let [value (-> e dom/get-target dom/get-value)] - (on-change value) - (stop-editing)))) - ] + (accept-editing)))] + + (mf/use-effect + (mf/deps editing?) + (fn [] + (when (and editing? (not (:editing @state))) + (start-editing)))) (if is-editing [:div.editable-label {:class class-name} [:input.editable-label-input {:ref input :default-value value - :on-key-down on-key-up}] + :on-key-up on-key-up + :on-blur cancel-editing}] [:span.editable-label-close {:on-click cancel-editing} i/close]] [:span.editable-label {:class class-name - :on-double-click on-dbl-click} value] - ))) + :on-double-click on-dbl-click} value]))) diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs index 2eed058aa3..ae5dd213ba 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs @@ -29,6 +29,7 @@ [app.main.ui.components.context-menu :refer [context-menu]] [app.main.ui.components.file-uploader :refer [file-uploader]] [app.main.ui.components.tab-container :refer [tab-container tab-element]] + [app.main.ui.components.editable-label :refer [editable-label]] [app.main.ui.context :as ctx] [app.main.ui.icons :as i] [app.main.ui.keyboard :as kbd] @@ -47,6 +48,7 @@ (mf/defc components-box [{:keys [file-id local? components open? on-open on-close] :as props}] (let [state (mf/use-state {:menu-open false + :renaming nil :top nil :left nil :component-id nil}) @@ -62,6 +64,25 @@ (st/emit! (dwl/delete-component {:id (:component-id @state)})) (st/emit! (dwl/sync-file nil)))) + on-rename + (mf/use-callback + (mf/deps state) + (fn [] + (swap! state assoc :renaming (:component-id @state)))) + + do-rename + (mf/use-callback + (mf/deps state) + (fn [new-name] + (st/emit! (dwl/rename-component (:renaming @state) new-name)) + (swap! state assoc :renaming nil))) + + cancel-rename + (mf/use-callback + (mf/deps state) + (fn [] + (swap! state assoc :renaming nil))) + on-context-menu (mf/use-callback (fn [component-id] @@ -90,13 +111,22 @@ (when open? [:div.group-grid.big (for [component components] - [:div.grid-cell {:key (:id component) - :draggable true - :on-context-menu (on-context-menu (:id component)) - :on-drag-start (partial on-drag-start component)} - [:& exports/component-svg {:group (get-in component [:objects (:id component)]) - :objects (:objects component)}] - [:div.cell-name (:name component)]])]) + (let [renaming? (= (:renaming @state)(:id component))] + [:div.grid-cell {:key (:id component) + :draggable true + :on-context-menu (on-context-menu (:id component)) + :on-drag-start (partial on-drag-start component)} + [:& exports/component-svg {:group (get-in component [:objects (:id component)]) + :objects (:objects component)}] + [:& editable-label + {:class-name (dom/classnames + :cell-name true + :editing renaming?) + :value (:name component) + :editing? renaming? + :disable-dbl-click? true + :on-change do-rename + :on-cancel cancel-rename}]]))]) (when local? [:& context-menu @@ -105,7 +135,8 @@ :on-close #(swap! state assoc :menu-open false) :top (:top @state) :left (:left @state) - :options [[(tr "workspace.assets.duplicate") on-duplicate] + :options [[(tr "workspace.assets.rename") on-rename] + [(tr "workspace.assets.duplicate") on-duplicate] [(tr "workspace.assets.delete") on-delete]]}])])) (mf/defc graphics-box From 75b34c9b984c52b76b6bfe628812a1a950e6259a Mon Sep 17 00:00:00 2001 From: elhombretecla Date: Thu, 5 Nov 2020 09:07:17 +0100 Subject: [PATCH 30/48] :sparkles: Fix UI icons --- frontend/resources/images/icons/library.svg | 2 +- frontend/resources/styles/main/partials/dashboard-sidebar.scss | 2 +- frontend/src/app/main/ui/dashboard/sidebar.cljs | 3 --- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/frontend/resources/images/icons/library.svg b/frontend/resources/images/icons/library.svg index 0011fd6b2a..4b5457f7fc 100644 --- a/frontend/resources/images/icons/library.svg +++ b/frontend/resources/images/icons/library.svg @@ -1,4 +1,4 @@ - + diff --git a/frontend/resources/styles/main/partials/dashboard-sidebar.scss b/frontend/resources/styles/main/partials/dashboard-sidebar.scss index 70617a2758..5fc5c5db46 100644 --- a/frontend/resources/styles/main/partials/dashboard-sidebar.scss +++ b/frontend/resources/styles/main/partials/dashboard-sidebar.scss @@ -191,7 +191,7 @@ border-radius: $br-small; content: ""; height: 26px; - margin-right: 6px; + margin-right: $small; width: 4px; } diff --git a/frontend/src/app/main/ui/dashboard/sidebar.cljs b/frontend/src/app/main/ui/dashboard/sidebar.cljs index 333ab72d73..87eb2b11d3 100644 --- a/frontend/src/app/main/ui/dashboard/sidebar.cljs +++ b/frontend/src/app/main/ui/dashboard/sidebar.cljs @@ -393,18 +393,15 @@ [:li.recent-projects {:on-click go-projects :class-name (when projects? "current")} - i/recent [:span.element-title (t locale "labels.projects")]] [:li {:on-click go-drafts :class-name (when drafts? "current")} - i/file-html [:span.element-title (t locale "labels.drafts")]] [:li {:on-click go-libs :class-name (when libs? "current")} - i/library [:span.element-title (t locale "labels.shared-libraries")]]]] [:hr] From 692f84bd142cd07628da6cd4ef6b8e57ef3bc7bd Mon Sep 17 00:00:00 2001 From: elhombretecla Date: Thu, 5 Nov 2020 09:55:35 +0100 Subject: [PATCH 31/48] :sparkles: Review profile dropdown --- .../styles/main/partials/dashboard-sidebar.scss | 9 ++++++++- .../resources/styles/main/partials/sidebar-layers.scss | 6 +++--- frontend/src/app/main/ui/dashboard/sidebar.cljs | 1 + 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/frontend/resources/styles/main/partials/dashboard-sidebar.scss b/frontend/resources/styles/main/partials/dashboard-sidebar.scss index 5fc5c5db46..04f1daf17a 100644 --- a/frontend/resources/styles/main/partials/dashboard-sidebar.scss +++ b/frontend/resources/styles/main/partials/dashboard-sidebar.scss @@ -368,7 +368,7 @@ color: $color-black; margin: 10px 5px; font-size: $fs14; - max-width: 135px; + max-width: 160px; } img { @@ -378,6 +378,13 @@ width: 25px; } + svg { + height: 10px; + margin-left: auto; + margin-right: $small; + width: 10px; + } + .dropdown { left: 15px; bottom: 45px; diff --git a/frontend/resources/styles/main/partials/sidebar-layers.scss b/frontend/resources/styles/main/partials/sidebar-layers.scss index dced031cc7..25e42fe072 100644 --- a/frontend/resources/styles/main/partials/sidebar-layers.scss +++ b/frontend/resources/styles/main/partials/sidebar-layers.scss @@ -154,11 +154,11 @@ border-right: 1px solid $color-gray-40; border-top: 1px solid $color-gray-40; position: absolute; - width: 0.5rem; - height: 0.5rem; + width: 6px; + height: 6px; transform: rotate(-45deg); top: -1px; - left: -5px; + left: -4px; } } diff --git a/frontend/src/app/main/ui/dashboard/sidebar.cljs b/frontend/src/app/main/ui/dashboard/sidebar.cljs index 87eb2b11d3..c4ceed6da6 100644 --- a/frontend/src/app/main/ui/dashboard/sidebar.cljs +++ b/frontend/src/app/main/ui/dashboard/sidebar.cljs @@ -439,6 +439,7 @@ [:div.profile-section {:on-click #(reset! show true)} [:img {:src photo}] [:span (:fullname profile)] + i/arrow-down [:& dropdown {:on-close #(reset! show false) :show @show} From 715b7ba13e64038005033a7ed9ed0782782bd8e7 Mon Sep 17 00:00:00 2001 From: elhombretecla Date: Thu, 5 Nov 2020 11:40:59 +0100 Subject: [PATCH 32/48] :sparkles: New login img --- frontend/resources/images/penpot-login.jpg | Bin 138421 -> 206710 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/resources/images/penpot-login.jpg b/frontend/resources/images/penpot-login.jpg index dcc285b5f953adf4b6dcd44043f4e1a836c066f3..430b7537aae46cf9bb82c4fc7dd98ba9a245bc93 100644 GIT binary patch literal 206710 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%0Aa#Of`Yetys`bU|h@m23|RW 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⁣l)1fq{#S-pLoC!1n205s&rkoBI`9=ViUm&pm2 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�y$cSwo*`T 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 literal 138421 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

@5mHyY>ePCW+MNcwmj&Z!!;d0%K{13;>q4mc`i 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 J Date: Thu, 5 Nov 2020 11:56:09 +0100 Subject: [PATCH 33/48] :bug: Take into account indirect libraries --- backend/src/app/services/queries/files.clj | 22 ++++++++++++++++--- common/app/common/data.cljc | 10 +++++++++ .../src/app/main/ui/workspace/libraries.cljs | 6 +++-- .../app/main/ui/workspace/sidebar/assets.cljs | 6 +++-- 4 files changed, 37 insertions(+), 7 deletions(-) diff --git a/backend/src/app/services/queries/files.clj b/backend/src/app/services/queries/files.clj index 0aa6b134d2..8fa7106ec0 100644 --- a/backend/src/app/services/queries/files.clj +++ b/backend/src/app/services/queries/files.clj @@ -247,6 +247,7 @@ (def ^:private sql:file-libraries "select fl.*, + ? as is_indirect, flr.synced_at as synced_at from file as fl inner join file_library_rel as flr on (flr.library_file_id = fl.id) @@ -254,8 +255,23 @@ and fl.deleted_at is null") (defn retrieve-file-libraries - [conn file-id] - (into [] decode-row-xf (db/exec! conn [sql:file-libraries file-id]))) + [conn is-indirect file-id] + (let [direct-libraries + (into [] decode-row-xf (db/exec! conn [sql:file-libraries is-indirect file-id])) + + select-distinct + (fn [used-libraries new-libraries] + (remove (fn [new-library] + (some #(= (:id %) (:id new-library)) used-libraries)) + new-libraries))] + + (reduce (fn [used-libraries library] + (concat used-libraries + (select-distinct + used-libraries + (retrieve-file-libraries conn true (:id library))))) + direct-libraries + direct-libraries))) (s/def ::file-libraries (s/keys :req-un [::profile-id ::file-id])) @@ -264,7 +280,7 @@ [{:keys [profile-id file-id] :as params}] (db/with-atomic [conn db/pool] (check-edition-permissions! conn profile-id file-id) - (retrieve-file-libraries conn file-id))) + (retrieve-file-libraries conn false file-id))) ;; --- Query: Single File Library diff --git a/common/app/common/data.cljc b/common/app/common/data.cljc index c938e0b757..3034e369b5 100644 --- a/common/app/common/data.cljc +++ b/common/app/common/data.cljc @@ -136,6 +136,16 @@ [mfn coll] (into {} (map (fn [[key val]] [key (mfn key val)]) coll))) +(defn filterm + "Filter values of a map that satisfy a predicate" + [pred coll] + (into {} (filter pred coll))) + +(defn removem + "Remove values of a map that satisfy a predicate" + [pred coll] + (into {} (remove pred coll))) + (defn map-perm "Maps a function to each pair of values that can be combined inside the function without repetition. diff --git a/frontend/src/app/main/ui/workspace/libraries.cljs b/frontend/src/app/main/ui/workspace/libraries.cljs index 1b22620817..8138379361 100644 --- a/frontend/src/app/main/ui/workspace/libraries.cljs +++ b/frontend/src/app/main/ui/workspace/libraries.cljs @@ -7,6 +7,7 @@ (ns app.main.ui.workspace.libraries (:require + [app.common.data :as d] [rumext.alpha :as mf] [cuerdas.core :as str] [okulary.core :as l] @@ -142,7 +143,6 @@ :value (tr "workspace.libraries.update") :on-click #(update-library (:id library))}]])]])])) - (mf/defc libraries-dialog {::mf/register modal/components ::mf/register-as :libraries-dialog} @@ -152,7 +152,9 @@ locale (mf/deref i18n/locale) project (mf/deref refs/workspace-project) file (mf/deref workspace-file) - libraries (mf/deref refs/workspace-libraries) + libraries (->> (mf/deref refs/workspace-libraries) + (d/removem (fn [[key val]] + (:is-indirect val)))) shared-files (mf/deref refs/workspace-shared-files) change-tab #(reset! selected-tab %) diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs index ae5dd213ba..42f4678519 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs @@ -631,7 +631,9 @@ (mf/defc assets-toolbox [] - (let [libraries (mf/deref refs/workspace-libraries) + (let [libraries (->> (mf/deref refs/workspace-libraries) + (vals) + (remove :is-indirect)) file (mf/deref refs/workspace-file) locale (mf/deref i18n/locale) team-id (mf/use-ctx ctx/current-team-id) @@ -697,7 +699,7 @@ :open? true :filters @filters}] - (for [file (->> (vals libraries) + (for [file (->> libraries (sort-by #(str/lower (:name %))))] [:& file-library {:key (:id file) From 96e6ba77be3f6786107d971e812e29666f6217fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Fri, 6 Nov 2020 08:53:55 +0100 Subject: [PATCH 34/48] :sparkles: Rename component root when renaming a component --- common/app/common/pages.cljc | 6 +++--- frontend/src/app/main/data/workspace/libraries.cljs | 10 ++++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/common/app/common/pages.cljc b/common/app/common/pages.cljc index c92015a043..c5ad442da7 100644 --- a/common/app/common/pages.cljc +++ b/common/app/common/pages.cljc @@ -963,14 +963,14 @@ :objects (d/index-by :id shapes)})) (defmethod process-change :mod-component - [data {:keys [id name shapes]}] + [data {:keys [id name objects]}] (update-in data [:components id] #(cond-> % (some? name) (assoc :name name) - (some? shapes) - (assoc :objects (d/index-by :id shapes))))) + (some? objects) + (assoc :objects objects)))) (defmethod process-change :del-component [data {:keys [id]}] diff --git a/frontend/src/app/main/data/workspace/libraries.cljs b/frontend/src/app/main/data/workspace/libraries.cljs index 7809f40fae..9fb6ef150c 100644 --- a/frontend/src/app/main/data/workspace/libraries.cljs +++ b/frontend/src/app/main/data/workspace/libraries.cljs @@ -261,14 +261,20 @@ ptk/WatchEvent (watch [_ state stream] (let [component (get-in state [:workspace-data :components id]) + objects (get component :objects) + new-objects (assoc-in objects + [(:id component) :name] + new-name) rchanges [{:type :mod-component :id id - :name new-name}] + :name new-name + :objects new-objects}] uchanges [{:type :mod-component :id id - :name (:name component)}]] + :name (:name component) + :objects objects}]] (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true})))))) From 3cd0d9636f9c5b86174434382f56cbec57e81e61 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 10 Nov 2020 12:40:50 +0100 Subject: [PATCH 35/48] :tada: Rename fixture usernames. --- backend/src/app/cli/fixtures.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/app/cli/fixtures.clj b/backend/src/app/cli/fixtures.clj index ee71ad267b..f654cf767e 100644 --- a/backend/src/app/cli/fixtures.clj +++ b/backend/src/app/cli/fixtures.clj @@ -83,7 +83,7 @@ :fullname (str "Profile " index) :password "123123" :demo? true - :email (str "profile" index ".test@uxbox.io")}) + :email (str "profile" index ".test@penpot.io")}) team-id (:default-team-id prof) owner-id id] (let [project-ids (collect (partial create-project conn team-id owner-id) From 132e99ab71afe7d9e026932599f1accc56e1eab2 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 10 Nov 2020 12:41:20 +0100 Subject: [PATCH 36/48] :tada: Rename to penpot all devenv docker related files. --- docker/devenv/Dockerfile | 10 +++--- docker/devenv/docker-compose.yaml | 32 +++++++++--------- docker/devenv/files/entrypoint.sh | 10 +++--- docker/devenv/files/postgresql_init.sql | 2 +- docker/devenv/files/start-tmux.sh | 44 ++++++++++++------------- manage.sh | 32 +++++++++--------- 6 files changed, 65 insertions(+), 65 deletions(-) diff --git a/docker/devenv/Dockerfile b/docker/devenv/Dockerfile index 6493e6f112..532f247fb5 100644 --- a/docker/devenv/Dockerfile +++ b/docker/devenv/Dockerfile @@ -31,9 +31,9 @@ RUN set -ex; \ rm -rf /var/lib/apt/lists/*; RUN set -ex; \ - useradd -m -g users -s /bin/bash -u $EXTERNAL_UID uxbox; \ - passwd uxbox -d; \ - echo "uxbox ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers + useradd -m -g users -s /bin/bash -u $EXTERNAL_UID penpot; \ + passwd penpot -d; \ + echo "penpot ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers RUN set -ex; \ apt-get -qq update; \ @@ -124,8 +124,8 @@ COPY files/start-tmux.sh /home/start-tmux.sh COPY files/entrypoint.sh /home/entrypoint.sh COPY files/init.sh /home/init.sh -USER uxbox -WORKDIR /home/uxbox +USER penpot +WORKDIR /home/penpot RUN set -ex; \ git clone https://github.com/creationix/nvm.git .nvm; \ diff --git a/docker/devenv/docker-compose.yaml b/docker/devenv/docker-compose.yaml index bbbbfa40d0..755717a4bd 100644 --- a/docker/devenv/docker-compose.yaml +++ b/docker/devenv/docker-compose.yaml @@ -14,10 +14,10 @@ volumes: services: main: privileged: true - image: "uxbox-devenv" + image: "penpot-devenv" build: context: "." - container_name: "uxbox-devenv-main" + container_name: "penpot-devenv-main" stop_signal: SIGINT depends_on: @@ -26,8 +26,8 @@ services: - redis volumes: - - "user_data:/home/uxbox/" - - "${PWD}:/home/uxbox/uxbox" + - "user_data:/home/penpot/" + - "${PWD}:/home/penpot/penpot" - ./files/nginx.conf:/etc/nginx/nginx.conf ports: @@ -39,32 +39,32 @@ services: - 9090:9090 environment: - - APP_DATABASE_URI=postgresql://postgres/uxbox - - APP_DATABASE_USERNAME=uxbox - - APP_DATABASE_PASSWORD=uxbox + - APP_DATABASE_URI=postgresql://postgres/penpot + - APP_DATABASE_USERNAME=penpot + - APP_DATABASE_PASSWORD=penpot - APP_SENDMAIL_BACKEND=console - APP_SMTP_HOST=smtp - APP_SMTP_PORT=25 smtp: - container_name: "uxbox-devenv-smtp" + container_name: "penpot-devenv-smtp" image: mwader/postfix-relay:latest restart: always environment: - - POSTFIX_myhostname=smtp.uxbox.io - - OPENDKIM_DOMAINS=smtp.uxbox.io + - POSTFIX_myhostname=smtp.penpot.io + - OPENDKIM_DOMAINS=smtp.penpot.io postgres: image: postgres:13 command: postgres -c config_file=/etc/postgresql.conf - container_name: "uxbox-devenv-postgres" + container_name: "penpot-devenv-postgres" restart: always stop_signal: SIGINT environment: - POSTGRES_INITDB_ARGS=--data-checksums - - POSTGRES_DB=uxbox - - POSTGRES_USER=uxbox - - POSTGRES_PASSWORD=uxbox + - POSTGRES_DB=penpot + - POSTGRES_USER=penpot + - POSTGRES_PASSWORD=penpot volumes: - ./files/postgresql.conf:/etc/postgresql.conf - ./files/postgresql_init.sql:/docker-entrypoint-initdb.d/init.sql @@ -72,6 +72,6 @@ services: redis: image: redis:6 - hostname: "uxbox-devenv-redis" - container_name: "uxbox-devenv-redis" + hostname: "penpot-devenv-redis" + container_name: "penpot-devenv-redis" restart: always diff --git a/docker/devenv/files/entrypoint.sh b/docker/devenv/files/entrypoint.sh index bbf4504367..87f47077f4 100755 --- a/docker/devenv/files/entrypoint.sh +++ b/docker/devenv/files/entrypoint.sh @@ -2,11 +2,11 @@ set -e -sudo cp /root/.bashrc /home/uxbox/.bashrc -sudo cp /root/.vimrc /home/uxbox/.vimrc -sudo cp /root/.tmux.conf /home/uxbox/.tmux.conf +sudo cp /root/.bashrc /home/penpot/.bashrc +sudo cp /root/.vimrc /home/penpot/.vimrc +sudo cp /root/.tmux.conf /home/penpot/.tmux.conf -source /home/uxbox/.bashrc -sudo chown uxbox:users /home/uxbox +source /home/penpot/.bashrc +sudo chown penpot:users /home/penpot exec "$@" diff --git a/docker/devenv/files/postgresql_init.sql b/docker/devenv/files/postgresql_init.sql index 72b25901e3..3f174e897e 100644 --- a/docker/devenv/files/postgresql_init.sql +++ b/docker/devenv/files/postgresql_init.sql @@ -1 +1 @@ -CREATE DATABASE uxbox_test; +CREATE DATABASE penpot_test; diff --git a/docker/devenv/files/start-tmux.sh b/docker/devenv/files/start-tmux.sh index db46596d39..e658069656 100755 --- a/docker/devenv/files/start-tmux.sh +++ b/docker/devenv/files/start-tmux.sh @@ -6,36 +6,36 @@ set -e; source ~/.bashrc echo "[start-tmux.sh] Installing node dependencies" -pushd ~/uxbox/frontend/ +pushd ~/penpot/frontend/ yarn install popd -pushd ~/uxbox/exporter/ +pushd ~/penpot/exporter/ yarn install popd -tmux -2 new-session -d -s uxbox +tmux -2 new-session -d -s penpot -tmux new-window -t uxbox:1 -n 'shadow watch' -tmux select-window -t uxbox:1 -tmux send-keys -t uxbox 'cd uxbox/frontend' enter C-l -tmux send-keys -t uxbox 'npx shadow-cljs watch main' enter +tmux new-window -t penpot:1 -n 'shadow watch' +tmux select-window -t penpot:1 +tmux send-keys -t penpot 'cd penpot/frontend' enter C-l +tmux send-keys -t penpot 'npx shadow-cljs watch main' enter -tmux new-window -t uxbox:2 -n 'exporter' -tmux select-window -t uxbox:2 -tmux send-keys -t uxbox 'cd uxbox/exporter' enter C-l -tmux send-keys -t uxbox 'npx shadow-cljs watch main' enter +tmux new-window -t penpot:2 -n 'exporter' +tmux select-window -t penpot:2 +tmux send-keys -t penpot 'cd penpot/exporter' enter C-l +tmux send-keys -t penpot 'npx shadow-cljs watch main' enter tmux split-window -v -tmux send-keys -t uxbox 'cd uxbox/exporter' enter C-l -tmux send-keys -t uxbox './scripts/wait-and-start.sh' enter +tmux send-keys -t penpot 'cd penpot/exporter' enter C-l +tmux send-keys -t penpot './scripts/wait-and-start.sh' enter -tmux new-window -t uxbox:3 -n 'backend' -tmux select-window -t uxbox:3 -tmux send-keys -t uxbox 'cd uxbox/backend' enter C-l -tmux send-keys -t uxbox './scripts/start-dev' enter +tmux new-window -t penpot:3 -n 'backend' +tmux select-window -t penpot:3 +tmux send-keys -t penpot 'cd penpot/backend' enter C-l +tmux send-keys -t penpot './scripts/start-dev' enter -tmux rename-window -t uxbox:0 'gulp' -tmux select-window -t uxbox:0 -tmux send-keys -t uxbox 'cd uxbox/frontend' enter C-l -tmux send-keys -t uxbox 'npx gulp --theme=${UXBOX_THEME} watch' enter +tmux rename-window -t penpot:0 'gulp' +tmux select-window -t penpot:0 +tmux send-keys -t penpot 'cd penpot/frontend' enter C-l +tmux send-keys -t penpot 'npx gulp --theme=${PENPOT_THEME} watch' enter -tmux -2 attach-session -t uxbox +tmux -2 attach-session -t penpot diff --git a/manage.sh b/manage.sh index 93e3318524..6f29902b75 100755 --- a/manage.sh +++ b/manage.sh @@ -2,12 +2,12 @@ set -e REV=`git log -n 1 --pretty=format:%h -- docker/` -DEVENV_IMGNAME="uxbox-devenv" +DEVENV_IMGNAME="penpot-devenv" function build-devenv { echo "Building development image $DEVENV_IMGNAME:latest with UID $EXTERNAL_UID..." local EXTERNAL_UID=${1:-$(id -u)} - docker-compose -p uxboxdev -f docker/devenv/docker-compose.yaml build \ + docker-compose -p penpotdev -f docker/devenv/docker-compose.yaml build \ --force-rm --build-arg EXTERNAL_UID=$EXTERNAL_UID } @@ -19,39 +19,39 @@ function build-devenv-if-not-exists { function start-devenv { build-devenv-if-not-exists $@; - docker-compose -p uxboxdev -f docker/devenv/docker-compose.yaml up -d; + docker-compose -p penpotdev -f docker/devenv/docker-compose.yaml up -d; } function stop-devenv { - docker-compose -p uxboxdev -f docker/devenv/docker-compose.yaml stop -t 2; + docker-compose -p penpotdev -f docker/devenv/docker-compose.yaml stop -t 2; } function drop-devenv { - docker-compose -p uxboxdev -f docker/devenv/docker-compose.yaml down -t 2 -v; + docker-compose -p penpotdev -f docker/devenv/docker-compose.yaml down -t 2 -v; echo "Clean old development image $DEVENV_IMGNAME..." docker images $DEVENV_IMGNAME -q | awk '{print $3}' | xargs --no-run-if-empty docker rmi } function run-devenv { - if [[ ! $(docker ps -f "name=uxbox-devenv-main" -q) ]]; then + if [[ ! $(docker ps -f "name=penpot-devenv-main" -q) ]]; then start-devenv fi - docker exec -ti uxbox-devenv-main /home/start-tmux.sh + docker exec -ti penpot-devenv-main /home/start-tmux.sh } function build { build-devenv-if-not-exists; local IMAGE=$DEVENV_IMGNAME:latest; - docker volume create uxboxdev_user_data; + docker volume create penpotdev_user_data; echo "Running development image $IMAGE to build frontend." docker run -t --rm \ - --mount source=uxboxdev_user_data,type=volume,target=/home/uxbox/ \ - --mount source=`pwd`,type=bind,target=/home/uxbox/uxbox \ - -w /home/uxbox/uxbox/$1 \ + --mount source=penpotdev_user_data,type=volume,target=/home/penpot/ \ + --mount source=`pwd`,type=bind,target=/home/penpot/penpot \ + -w /home/penpot/penpot/$1 \ $IMAGE ./scripts/build.sh } @@ -79,7 +79,7 @@ function build-bundle { mv ./backend/target/dist ./bundle/backend mv ./exporter/target ./bundle/exporter - NAME="uxbox-$(date '+%Y.%m.%d-%H%M')" + NAME="penpot-$(date '+%Y.%m.%d-%H%M')" pushd bundle/ tar -cvf ../$NAME.tar *; @@ -89,7 +89,7 @@ function build-bundle { } function log-devenv { - docker-compose -p uxboxdev -f docker/devenv/docker-compose.yaml logs -f --tail=50 + docker-compose -p penpotdev -f docker/devenv/docker-compose.yaml logs -f --tail=50 } function build-testenv { @@ -110,18 +110,18 @@ function build-testenv { popd pushd ./docker/testenv; - docker-compose -p uxbox-testenv -f ./docker-compose.yaml build + docker-compose -p penpot-testenv -f ./docker-compose.yaml build popd } function start-testenv { pushd ./docker/testenv; - docker-compose -p uxbox-testenv -f ./docker-compose.yaml up + docker-compose -p penpot-testenv -f ./docker-compose.yaml up popd } function usage { - echo "UXBOX build & release manager v$REV" + echo "PENPOT build & release manager v$REV" echo "USAGE: $0 OPTION" echo "Options:" # echo "- clean Stop and clean up docker containers" From 5b9c596170cd389810b25ee00ac086066f1fc68f Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 10 Nov 2020 18:24:02 +0100 Subject: [PATCH 37/48] :recycle: Refactor email sending subsystem. --- backend/src/app/config.clj | 35 ++-- backend/src/app/emails.clj | 35 ++-- backend/src/app/tasks/sendmail.clj | 101 +++--------- backend/src/app/util/emails.clj | 248 ++++++++++++++++++++++++----- docker/devenv/docker-compose.yaml | 12 -- 5 files changed, 272 insertions(+), 159 deletions(-) diff --git a/backend/src/app/config.clj b/backend/src/app/config.clj index 68dcd5bc3c..fea921a0fc 100644 --- a/backend/src/app/config.clj +++ b/backend/src/app/config.clj @@ -37,9 +37,9 @@ :image-process-max-threads 2 - :sendmail-backend "console" - :sendmail-reply-to "no-reply@example.com" - :sendmail-from "no-reply@example.com" + :smtp-enable false + :smtp-default-reply-to "no-reply@example.com" + :smtp-default-from "no-reply@example.com" :allow-demo-users true :registration-enabled true @@ -79,13 +79,12 @@ (s/def ::media-uri ::us/string) (s/def ::media-directory ::us/string) (s/def ::secret-key ::us/string) -(s/def ::sendmail-backend ::us/string) -(s/def ::sendmail-backend-apikey ::us/string) -(s/def ::sendmail-reply-to ::us/email) -(s/def ::sendmail-from ::us/email) +(s/def ::smtp-enable ::us/boolean) +(s/def ::smtp-default-reply-to ::us/email) +(s/def ::smtp-default-from ::us/email) (s/def ::smtp-host ::us/string) (s/def ::smtp-port ::us/integer) -(s/def ::smtp-user (s/nilable ::us/string)) +(s/def ::smtp-username (s/nilable ::us/string)) (s/def ::smtp-password (s/nilable ::us/string)) (s/def ::smtp-tls ::us/boolean) (s/def ::smtp-ssl ::us/boolean) @@ -136,13 +135,12 @@ ::media-directory ::media-uri ::secret-key - ::sendmail-reply-to - ::sendmail-from - ::sendmail-backend - ::sendmail-backend-apikey + ::smtp-default-from + ::smtp-default-reply-to + ::smtp-enable ::smtp-host ::smtp-port - ::smtp-user + ::smtp-username ::smtp-password ::smtp-tls ::smtp-ssl @@ -198,3 +196,14 @@ (def default-deletion-delay (dt/duration {:hours 48})) + +(defn smtp + [cfg] + {:host (:smtp-host cfg "localhost") + :port (:smtp-port cfg 25) + :default-reply-to (:smtp-default-reply-to cfg) + :default-from (:smtp-default-from cfg) + :tls (:smtp-tls cfg) + :username (:smtp-username cfg) + :password (:smtp-password cfg)}) + diff --git a/backend/src/app/emails.clj b/backend/src/app/emails.clj index 9bef19b2ee..5d471add07 100644 --- a/backend/src/app/emails.clj +++ b/backend/src/app/emails.clj @@ -29,25 +29,20 @@ ;; --- Public API (defn render - [email context] - (let [defaults {:from (:sendmail-from cfg/config) - :reply-to (:sendmail-reply-to cfg/config)}] - (email (merge defaults context)))) + [email-factory context] + (email-factory context)) (defn send! "Schedule the email for sending." - ([email context] (send! db/pool email context)) - ([conn email-factory context] - (us/verify fn? email-factory) - (us/verify map? context) - (let [defaults {:from (:sendmail-from cfg/config) - :reply-to (:sendmail-reply-to cfg/config)} - data (merge defaults context) - email (email-factory data)] - (tasks/submit! conn {:name "sendmail" - :delay 0 - :priority 200 - :props email})))) + [conn email-factory context] + (us/verify fn? email-factory) + (us/verify map? context) + (let [email (email-factory context)] + (tasks/submit! conn {:name "sendmail" + :delay 0 + :max-retries 1 + :priority 200 + :props email}))) ;; --- Emails @@ -57,7 +52,7 @@ (def register "A new profile registration welcome email." - (emails/build ::register default-context)) + (emails/template-factory ::register default-context)) (s/def ::token ::us/string) (s/def ::password-recovery @@ -65,7 +60,7 @@ (def password-recovery "A password recovery notification email." - (emails/build ::password-recovery default-context)) + (emails/template-factory ::password-recovery default-context)) (s/def ::pending-email ::us/email) (s/def ::change-email @@ -73,7 +68,7 @@ (def change-email "Password change confirmation email" - (emails/build ::change-email default-context)) + (emails/template-factory ::change-email default-context)) (s/def :internal.emails.invite-to-team/invited-by ::us/string) (s/def :internal.emails.invite-to-team/team ::us/string) @@ -86,4 +81,4 @@ (def invite-to-team "Teams member invitation email." - (emails/build ::invite-to-team default-context)) + (emails/template-factory ::invite-to-team default-context)) diff --git a/backend/src/app/tasks/sendmail.clj b/backend/src/app/tasks/sendmail.clj index ea16ed33bf..b128b09ab1 100644 --- a/backend/src/app/tasks/sendmail.clj +++ b/backend/src/app/tasks/sendmail.clj @@ -9,91 +9,42 @@ (ns app.tasks.sendmail (:require - [clojure.data.json :as json] [clojure.tools.logging :as log] - [postal.core :as postal] [app.common.data :as d] [app.common.exceptions :as ex] + [app.util.emails :as emails] [app.config :as cfg] - [app.metrics :as mtx] - [app.util.http :as http])) + [app.metrics :as mtx])) -(defmulti sendmail (fn [config email] (:sendmail-backend config))) +(defn- send-console! + [cfg email] + (let [baos (java.io.ByteArrayOutputStream.) + mesg (emails/smtp-message cfg email)] + (.writeTo mesg baos) + (let [out (with-out-str + (println "email console dump:") + (println "******** start email" (:id email) "**********") + (println (.toString baos)) + (println "******** end email "(:id email) "**********"))] + (log/info out)))) -(defmethod sendmail "console" - [config email] - (let [out (with-out-str - (println "email console dump:") - (println "******** start email" (:id email) "**********") - (println " from: " (:from email)) - (println " to: " (:to email "---")) - (println " reply-to: " (:reply-to email)) - (println " subject: " (:subject email)) - (println " content:") - (doseq [item (:content email)] - (when (= (:type item) "text/plain") - (println (:value item)))) - (println "******** end email "(:id email) "**********"))] - (log/info out))) - -(defmethod sendmail "sendgrid" - [config email] - (let [apikey (:sendmail-backend-apikey config) - dest (mapv #(array-map :email %) (:to email)) - params {:personalizations [{:to dest - :subject (:subject email)}] - :from {:email (:from email)} - :reply_to {:email (:reply-to email)} - :content (:content email)} - headers {"Authorization" (str "Bearer " apikey) - "Content-Type" "application/json"} - body (json/write-str params)] - - - (try - (let [response (http/send! {:method :post - :headers headers - :uri "https://api.sendgrid.com/v3/mail/send" - :body body})] - (when-not (= 202 (:status response)) - (log/error "Unexpected status from sendgrid:" (pr-str response)))) - (catch Throwable error - (log/error "Error on sending email to sendgrid:" (pr-str error)))))) - -(defn- get-smtp-config - [config] - {:host (:smtp-host config) - :port (:smtp-port config) - :user (:smtp-user config) - :pass (:smtp-password config) - :ssl (:smtp-ssl config) - :tls (:smtp-tls config)}) - -(defn- email->postal - [email] - {:from (:from email) - :to (:to email) - :subject (:subject email) - :body (d/concat [:alternative] - (map (fn [{:keys [type value]}] - {:type (str type "; charset=utf-8") - :content value}) - (:content email)))}) - -(defmethod sendmail "smtp" - [config email] - (let [config (get-smtp-config config) - email (email->postal email) - result (postal/send-message config email)] - (when (not= (:error result) :SUCCESS) - (ex/raise :type :sendmail-error - :code :email-not-sent - :context result)))) +(defn adapt-config + [cfg] + {:host (:smtp-host cfg "localhost") + :port (:smtp-port cfg 25) + :default-reply-to (:smtp-default-reply-to cfg) + :default-from (:smtp-default-from cfg) + :tls (:smtp-tls cfg) + :username (:smtp-username cfg) + :password (:smtp-password cfg)}) (defn handler {:app.tasks/name "sendmail"} [{:keys [props] :as task}] - (sendmail cfg/config props)) + (if (:smtp-enable cfg/config) + (-> (cfg/smtp cfg/config) + (emails/send! props)) + (send-console! props))) (mtx/instrument-with-summary! {:var #'handler diff --git a/backend/src/app/util/emails.clj b/backend/src/app/util/emails.clj index d962b4be49..84ccee948e 100644 --- a/backend/src/app/util/emails.clj +++ b/backend/src/app/util/emails.clj @@ -2,7 +2,10 @@ ;; License, v. 2.0. If a copy of the MPL was not distributed with this ;; file, You can obtain one at http://mozilla.org/MPL/2.0/. ;; -;; Copyright (c) 2019 Andrey Antukh +;; This Source Code Form is "Incompatible With Secondary Licenses", as +;; defined by the Mozilla Public License, v. 2.0. +;; +;; Copyright (c) 2019-2020 Andrey Antukh (ns app.util.emails (:require @@ -11,27 +14,188 @@ [cuerdas.core :as str] [app.common.spec :as us] [app.common.exceptions :as ex] - [app.util.template :as tmpl])) + [app.util.template :as tmpl]) + (:import + java.util.Properties + javax.mail.Message + javax.mail.Transport + javax.mail.Message$RecipientType + javax.mail.PasswordAuthentication + javax.mail.Session + javax.mail.internet.InternetAddress + javax.mail.internet.MimeMultipart + javax.mail.internet.MimeBodyPart + javax.mail.internet.MimeMessage)) -;; --- Impl. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Email Building +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defn build-address + [v charset] + (try + (cond + (string? v) + (InternetAddress. v nil charset) + + (map? v) + (InternetAddress. (:addr v) + (:name v) + (:charset v charset)) + + :else + (throw (ex-info "Invalid address" {:data v}))) + (catch Exception e + (throw (ex-info "Invalid address" {:data v} e))))) + +(defn- resolve-recipient-type + [type] + (case type + :to Message$RecipientType/TO + :cc Message$RecipientType/CC + :bcc Message$RecipientType/BCC)) + +(defn- assign-recipient + [^MimeMessage mmsg type address charset] + (if (sequential? address) + (reduce #(assign-recipient %1 type %2 charset) mmsg address) + (let [address (build-address address charset) + type (resolve-recipient-type type)] + (.addRecipient mmsg type address) + mmsg))) + +(defn- assign-recipients + [mmsg {:keys [to cc bcc charset] :or {charset "utf-8"} :as params}] + (cond-> mmsg + (some? to) (assign-recipient :to to charset) + (some? cc) (assign-recipient :cc cc charset) + (some? bcc) (assign-recipient :bcc bcc charset))) + +(defn- assign-from + [mmsg {:keys [from charset] :or {charset "utf-8"}}] + (when from + (let [from (build-address from charset)] + (.setFrom ^MimeMessage mmsg ^InternetAddress from)))) + +(defn- assign-reply-to + [mmsg {:keys [defaut-reply-to]} {:keys [reply-to charset] :or {charset "utf-8"}}] + (let [reply-to (or reply-to defaut-reply-to)] + (when reply-to + (let [reply-to (build-address reply-to charset) + reply-to (into-array InternetAddress [reply-to])] + (.setReplyTo ^MimeMessage mmsg reply-to))))) + +(defn- assign-subject + [mmsg {:keys [subject charset] :or {charset "utf-8"}}] + (assert (string? subject) "subject is mandatory") + (.setSubject ^MimeMessage mmsg + ^String subject + ^String charset)) + +(defn- assign-extra-headers + [^MimeMessage mmsg {:keys [headers custom-data] :as params}] + (let [headers (assoc headers "X-Sereno-Custom-Data" custom-data)] + (reduce-kv (fn [^MimeMessage mmsg k v] + (doto mmsg + (.addHeader (name k) (str v)))) + mmsg + headers))) + +(defn- assign-body + [^MimeMessage mmsg {:keys [body charset] :or {charset "utf-8"}}] + (let [mpart (MimeMultipart. "mixed")] + (cond + (string? body) + (let [bpart (MimeBodyPart.)] + (.setContent bpart ^String body (str "text/plain; charset=" charset)) + (.addBodyPart mpart bpart)) + + (vector? body) + (let [mmp (MimeMultipart. "alternative") + mbp (MimeBodyPart.)] + (.addBodyPart mpart mbp) + (.setContent mbp mmp) + (doseq [item body] + (let [mbp (MimeBodyPart.)] + (.setContent mbp + ^String (:content item) + ^String (str (:type item "text/plain") "; charset=" charset)) + (.addBodyPart mmp mbp)))) + + (map? body) + (let [bpart (MimeBodyPart.)] + (.setContent bpart + ^String (:content body) + ^String (str (:type body "text/plain") "; charset=" charset)) + (.addBodyPart mpart bpart)) + + :else + (throw (ex-info "Unsupported type" {:body body}))) + (.setContent mmsg mpart) + mmsg)) + +(defn- build-message + [cfg session params] + (let [mmsg (MimeMessage. ^Session session)] + (assign-recipients mmsg params) + (assign-from mmsg params) + (assign-reply-to mmsg cfg params) + (assign-subject mmsg params) + (assign-extra-headers mmsg params) + (assign-body mmsg params) + (.saveChanges mmsg) + mmsg)) + +(defn- opts->props + [{:keys [username tls host port timeout default-from] + :or {timeout 30000} + :as opts}] + (reduce-kv + (fn [^Properties props k v] + (if (nil? v) + props + (doto props (.put ^String k ^String (str v))))) + (Properties.) + {"mail.user" username + "mail.host" host + "mail.smtp.auth" (boolean username) + "mail.smtp.starttls.enable" tls + "mail.smtp.starttls.required" tls + "mail.smtp.host" host + "mail.smtp.port" port + "mail.smtp.from" default-from + "mail.smtp.user" username + "mail.smtp.timeout" timeout + "mail.smtp.connectiontimeout" timeout})) + +(defn smtp-session + [{:keys [debug] :or {debug false} :as opts}] + (let [props (opts->props opts) + session (Session/getInstance props)] + (prn "kaka" props) + (.setDebug session debug) + session)) + +(defn smtp-message + [cfg message] + (let [^Session session (smtp-session cfg)] + (build-message cfg session message))) + +;; TODO: specs for smtp config + +(defn send! + [cfg message] + (let [^MimeMessage message (smtp-message cfg message)] + (Transport/send message (:username cfg) (:password cfg)) + nil)) + +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Template Email Building +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (def ^:private email-path "emails/%(id)s/%(lang)s.%(type)s") -(defn- build-base-email - [data context] - (when-not (s/valid? ::parsed-email data) - (ex/raise :type :internal - :code :template-parse-error - :hint "Seems like the email template has invalid data." - :contex data)) - {:subject (:subject data) - :content (cond-> [] - (:body-text data) (conj {:type "text/plain" - :value (:body-text data)}) - (:body-html data) (conj {:type "text/html" - :value (:body-html data)}))}) - -(defn- render-email-part +(defn- render-email-template-part [type id context] (let [lang (:lang context :en) path (str/format email-path {:id (name id) @@ -40,34 +204,32 @@ (some-> (io/resource path) (tmpl/render context)))) -(defn- impl-build-email +(defn- build-email-template [id context] (let [lang (:lang context :en) - subj (render-email-part :subj id context) - html (render-email-part :html id context) - text (render-email-part :txt id context)] - + subj (render-email-template-part :subj id context) + text (render-email-template-part :txt id context) + html (render-email-template-part :html id context)] {:subject subj - :content (cond-> [] - text (conj {:type "text/plain" - :value text}) - html (conj {:type "text/html" - :value html}))})) - -;; --- Public API + :body [{:type "text/html" + :content html} + {:type "text/plain" + :content text}]})) (s/def ::priority #{:high :low}) -(s/def ::to ::us/email) +(s/def ::to (s/or :sigle ::us/email + :multi (s/coll-of ::us/email))) (s/def ::from ::us/email) (s/def ::reply-to ::us/email) (s/def ::lang string?) +(s/def ::custom-data ::us/string) (s/def ::context (s/keys :req-un [::to] - :opt-un [::reply-to ::from ::lang ::priority])) + :opt-un [::reply-to ::from ::lang ::priority ::custom-data])) -(defn build - ([id] (build id {})) +(defn template-factory + ([id] (template-factory id {})) ([id extra-context] (s/assert keyword? id) (fn [context] @@ -79,13 +241,21 @@ (extra-context) extra-context) context) - email (impl-build-email id context)] + email (build-email-template id context)] (when-not email (ex/raise :type :internal :code :email-template-does-not-exists :hint "seems like the template is wrong or does not exists." - ::id id)) + :context {:id id})) (cond-> (assoc email :id (name id)) - (:to context) (assoc :to [(:to context)]) - (:from context) (assoc :from (:from context)) - (:reply-to context) (assoc :reply-to (:reply-to context))))))) + (:custom-data context) + (assoc :custom-data (:custom-data context)) + + (:from context) + (assoc :from (:from context)) + + (:reply-to context) + (assoc :reply-to (:reply-to context)) + + (:to context) + (assoc :to (:to context))))))) diff --git a/docker/devenv/docker-compose.yaml b/docker/devenv/docker-compose.yaml index 755717a4bd..151f71a644 100644 --- a/docker/devenv/docker-compose.yaml +++ b/docker/devenv/docker-compose.yaml @@ -22,7 +22,6 @@ services: depends_on: - postgres - - smtp - redis volumes: @@ -42,17 +41,6 @@ services: - APP_DATABASE_URI=postgresql://postgres/penpot - APP_DATABASE_USERNAME=penpot - APP_DATABASE_PASSWORD=penpot - - APP_SENDMAIL_BACKEND=console - - APP_SMTP_HOST=smtp - - APP_SMTP_PORT=25 - - smtp: - container_name: "penpot-devenv-smtp" - image: mwader/postfix-relay:latest - restart: always - environment: - - POSTFIX_myhostname=smtp.penpot.io - - OPENDKIM_DOMAINS=smtp.penpot.io postgres: image: postgres:13 From 15545d0b2f77e0cb5ab308d9da667805211b1365 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 11 Nov 2020 10:54:10 +0100 Subject: [PATCH 38/48] :sparkles: Minor fixes. --- backend/src/app/cli/fixtures.clj | 2 +- backend/src/app/tasks/sendmail.clj | 10 ---------- backend/src/app/util/emails.clj | 1 - docker/devenv/Dockerfile | 2 +- 4 files changed, 2 insertions(+), 13 deletions(-) diff --git a/backend/src/app/cli/fixtures.clj b/backend/src/app/cli/fixtures.clj index f654cf767e..5e5c9f07fd 100644 --- a/backend/src/app/cli/fixtures.clj +++ b/backend/src/app/cli/fixtures.clj @@ -83,7 +83,7 @@ :fullname (str "Profile " index) :password "123123" :demo? true - :email (str "profile" index ".test@penpot.io")}) + :email (str "profile" index ".test@penpot.app")}) team-id (:default-team-id prof) owner-id id] (let [project-ids (collect (partial create-project conn team-id owner-id) diff --git a/backend/src/app/tasks/sendmail.clj b/backend/src/app/tasks/sendmail.clj index b128b09ab1..54f779145e 100644 --- a/backend/src/app/tasks/sendmail.clj +++ b/backend/src/app/tasks/sendmail.clj @@ -28,16 +28,6 @@ (println "******** end email "(:id email) "**********"))] (log/info out)))) -(defn adapt-config - [cfg] - {:host (:smtp-host cfg "localhost") - :port (:smtp-port cfg 25) - :default-reply-to (:smtp-default-reply-to cfg) - :default-from (:smtp-default-from cfg) - :tls (:smtp-tls cfg) - :username (:smtp-username cfg) - :password (:smtp-password cfg)}) - (defn handler {:app.tasks/name "sendmail"} [{:keys [props] :as task}] diff --git a/backend/src/app/util/emails.clj b/backend/src/app/util/emails.clj index 84ccee948e..0188ad824c 100644 --- a/backend/src/app/util/emails.clj +++ b/backend/src/app/util/emails.clj @@ -172,7 +172,6 @@ [{:keys [debug] :or {debug false} :as opts}] (let [props (opts->props opts) session (Session/getInstance props)] - (prn "kaka" props) (.setDebug session debug) session)) diff --git a/docker/devenv/Dockerfile b/docker/devenv/Dockerfile index 532f247fb5..75e04f06f9 100644 --- a/docker/devenv/Dockerfile +++ b/docker/devenv/Dockerfile @@ -4,7 +4,7 @@ LABEL maintainer="Andrey Antukh " ARG DEBIAN_FRONTEND=noninteractive ARG EXTERNAL_UID=1000 -ENV NODE_VERSION=v12.19.0 \ +ENV NODE_VERSION=v14.15.0 \ CLOJURE_VERSION=1.10.1.727 \ LANG=en_US.UTF-8 \ LC_ALL=en_US.UTF-8 From 1061d96fde84b38977d546449b16275e22a5f7e3 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 11 Nov 2020 12:28:39 +0100 Subject: [PATCH 39/48] :bug: Fix default config values and config loading. --- backend/src/app/config.clj | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/src/app/config.clj b/backend/src/app/config.clj index fea921a0fc..af3341a0dc 100644 --- a/backend/src/app/config.clj +++ b/backend/src/app/config.clj @@ -22,9 +22,9 @@ (def defaults {:http-server-port 6060 :http-server-cors "http://localhost:3449" - :database-uri "postgresql://127.0.0.1/uxbox" - :database-username "uxbox" - :database-password "uxbox" + :database-uri "postgresql://127.0.0.1/penpot" + :database-username "penpot" + :database-password "penpot" :secret-key "default" :media-directory "resources/public/media" @@ -168,7 +168,7 @@ (reduce-kv (fn [acc k v] (cond-> acc - (str/starts-with? (name k) "uxbox-") + (str/starts-with? (name k) "penpot-") (assoc (keyword (subs (name k) 6)) v) (str/starts-with? (name k) "app-") @@ -186,7 +186,7 @@ [env] (assoc (read-config env) :redis-uri "redis://redis/1" - :database-uri "postgresql://postgres/uxbox_test" + :database-uri "postgresql://postgres/penpot_test" :media-directory "/tmp/app/media" :assets-directory "/tmp/app/static" :migrations-verbose false)) From bdfd0d38b83234f9d50e48d5c7feab1c0ae9d755 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 11 Nov 2020 12:37:53 +0100 Subject: [PATCH 40/48] :bug: Fix default redis uri on config module. --- backend/src/app/config.clj | 2 +- docker/devenv/docker-compose.yaml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/src/app/config.clj b/backend/src/app/config.clj index af3341a0dc..1edeabaaa0 100644 --- a/backend/src/app/config.clj +++ b/backend/src/app/config.clj @@ -31,7 +31,7 @@ :assets-directory "resources/public/static" :public-uri "http://localhost:3449/" - :redis-uri "redis://redis/0" + :redis-uri "redis://localhost/0" :media-uri "http://localhost:3449/media/" :assets-uri "http://localhost:3449/static/" diff --git a/docker/devenv/docker-compose.yaml b/docker/devenv/docker-compose.yaml index 151f71a644..21978864fe 100644 --- a/docker/devenv/docker-compose.yaml +++ b/docker/devenv/docker-compose.yaml @@ -41,6 +41,7 @@ services: - APP_DATABASE_URI=postgresql://postgres/penpot - APP_DATABASE_USERNAME=penpot - APP_DATABASE_PASSWORD=penpot + - APP_REDIS_URI=redis://redis/0 postgres: image: postgres:13 From 10f146883adfb29c1bfce74f13b4a49bf547bfd9 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 11 Nov 2020 12:39:45 +0100 Subject: [PATCH 41/48] :bug: Add missing ::redis-uri to config spec. --- backend/src/app/config.clj | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/app/config.clj b/backend/src/app/config.clj index 1edeabaaa0..b62dc29d00 100644 --- a/backend/src/app/config.clj +++ b/backend/src/app/config.clj @@ -126,6 +126,7 @@ ::gitlab-client-id ::gitlab-client-secret ::gitlab-base-uri + ::redis-uri ::public-uri ::database-username ::database-password From c3ca59ac93d79611e1aa1c9f4232f61dc3742c83 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 11 Nov 2020 12:55:59 +0100 Subject: [PATCH 42/48] :bug: Fix devenv nginx config. --- docker/devenv/files/nginx.conf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker/devenv/files/nginx.conf b/docker/devenv/files/nginx.conf index e59675deb3..2ae400e691 100644 --- a/docker/devenv/files/nginx.conf +++ b/docker/devenv/files/nginx.conf @@ -60,7 +60,7 @@ http { etag off; location / { - root /home/uxbox/uxbox/frontend/resources/public; + root /home/penpot/penpot/frontend/resources/public; try_files $uri /index.html; add_header Cache-Control "no-cache, max-age=0"; } @@ -74,7 +74,7 @@ http { } location /playground { - alias /home/uxbox/uxbox/experiments/; + alias /home/penpot/penpot/experiments/; add_header Cache-Control "no-cache, max-age=0"; autoindex on; } @@ -86,7 +86,7 @@ http { } location /media { - alias /home/uxbox/uxbox/backend/resources/public/media; + alias /home/penpot/penpot/backend/resources/public/media; } } } From ef01caf829c6be3f72d7f3bdc711902cc51dc57b Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 11 Nov 2020 13:34:06 +0100 Subject: [PATCH 43/48] :bug: Fix sendmail to console unexpected exception. --- backend/src/app/config.clj | 7 ++++--- backend/src/app/tasks/sendmail.clj | 12 ++++++------ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/backend/src/app/config.clj b/backend/src/app/config.clj index b62dc29d00..42fd2b553a 100644 --- a/backend/src/app/config.clj +++ b/backend/src/app/config.clj @@ -37,7 +37,7 @@ :image-process-max-threads 2 - :smtp-enable false + :smtp-enabled false :smtp-default-reply-to "no-reply@example.com" :smtp-default-from "no-reply@example.com" @@ -79,7 +79,7 @@ (s/def ::media-uri ::us/string) (s/def ::media-directory ::us/string) (s/def ::secret-key ::us/string) -(s/def ::smtp-enable ::us/boolean) +(s/def ::smtp-enabled ::us/boolean) (s/def ::smtp-default-reply-to ::us/email) (s/def ::smtp-default-from ::us/email) (s/def ::smtp-host ::us/string) @@ -138,7 +138,7 @@ ::secret-key ::smtp-default-from ::smtp-default-reply-to - ::smtp-enable + ::smtp-enabled ::smtp-host ::smtp-port ::smtp-username @@ -205,6 +205,7 @@ :default-reply-to (:smtp-default-reply-to cfg) :default-from (:smtp-default-from cfg) :tls (:smtp-tls cfg) + :enabled (:smtp-enabled cfg) :username (:smtp-username cfg) :password (:smtp-password cfg)}) diff --git a/backend/src/app/tasks/sendmail.clj b/backend/src/app/tasks/sendmail.clj index 54f779145e..54706b487e 100644 --- a/backend/src/app/tasks/sendmail.clj +++ b/backend/src/app/tasks/sendmail.clj @@ -17,9 +17,9 @@ [app.metrics :as mtx])) (defn- send-console! - [cfg email] + [config email] (let [baos (java.io.ByteArrayOutputStream.) - mesg (emails/smtp-message cfg email)] + mesg (emails/smtp-message config email)] (.writeTo mesg baos) (let [out (with-out-str (println "email console dump:") @@ -31,10 +31,10 @@ (defn handler {:app.tasks/name "sendmail"} [{:keys [props] :as task}] - (if (:smtp-enable cfg/config) - (-> (cfg/smtp cfg/config) - (emails/send! props)) - (send-console! props))) + (let [config (cfg/smtp cfg/config)] + (if (:enabled config) + (emails/send! config props) + (send-console! config props)))) (mtx/instrument-with-summary! {:var #'handler From b22b77a39e2f8ca69c6014b7a8b376e046bf8557 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 11 Nov 2020 13:52:31 +0100 Subject: [PATCH 44/48] :bug: Properly include emails on the bundle. --- backend/scripts/build.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/scripts/build.sh b/backend/scripts/build.sh index 8da54b34d4..2be3d8d2f1 100755 --- a/backend/scripts/build.sh +++ b/backend/scripts/build.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash CLASSPATH=`(clojure -Spath)` -NEWCP="./resources:./main:./common" +NEWCP="./main:./common" rm -rf ./target/dist mkdir -p ./target/dist/deps @@ -16,6 +16,7 @@ done cp ./resources/log4j2-bundle.xml ./target/dist/log4j2.xml cp -r ./src ./target/dist/main +cp -r ./resources/emails ./target/dist/main/ cp -r ../common ./target/dist/common echo $NEWCP > ./target/dist/classpath; From 1db1bd03f5dcf5a13f76de198f939a6e28883142 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 11 Nov 2020 14:17:59 +0100 Subject: [PATCH 45/48] :bug: Fix incorrect env vars parsing on config module. --- backend/src/app/config.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/app/config.clj b/backend/src/app/config.clj index 42fd2b553a..9a6802d067 100644 --- a/backend/src/app/config.clj +++ b/backend/src/app/config.clj @@ -170,7 +170,7 @@ (fn [acc k v] (cond-> acc (str/starts-with? (name k) "penpot-") - (assoc (keyword (subs (name k) 6)) v) + (assoc (keyword (subs (name k) 7)) v) (str/starts-with? (name k) "app-") (assoc (keyword (subs (name k) 4)) v))) From 0221cc06f8038a966bd23601893ad14be9a6eae2 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 11 Nov 2020 14:48:01 +0100 Subject: [PATCH 46/48] :bug: Set proper order of email parts. --- backend/src/app/util/emails.clj | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/backend/src/app/util/emails.clj b/backend/src/app/util/emails.clj index 0188ad824c..2558c52077 100644 --- a/backend/src/app/util/emails.clj +++ b/backend/src/app/util/emails.clj @@ -209,11 +209,16 @@ subj (render-email-template-part :subj id context) text (render-email-template-part :txt id context) html (render-email-template-part :html id context)] + (when (or (not subj) + (not text) + (not html)) + (ex/raise :type :internal + :code :missing-email-templates)) {:subject subj - :body [{:type "text/html" - :content html} - {:type "text/plain" - :content text}]})) + :body [{:type "text/plain" + :content text} + {:type "text/html" + :content html}]})) (s/def ::priority #{:high :low}) (s/def ::to (s/or :sigle ::us/email From 58585a6521de063a382d4f1ffbfe7badd64dd89c Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 11 Nov 2020 16:09:19 +0100 Subject: [PATCH 47/48] :bug: Remove unused config generation on gulpfile. --- frontend/gulpfile.js | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/frontend/gulpfile.js b/frontend/gulpfile.js index ef893ddb8a..4f40437034 100644 --- a/frontend/gulpfile.js +++ b/frontend/gulpfile.js @@ -158,19 +158,6 @@ function templatePipeline(options) { const locales = readLocales(); const manifest = readManifest(); - const defaultConf = [ - "var appDemoWarning = null;", - "var appLoginWithLDAP = null;", - "var appPublicURI = null;", - "var appGoogleClientID = null;", - "var appGitlabClientID = null;", - "var appDeployDate = null;", - "var appDeployCommit = null;" - ]; - - fs.writeFileSync(__dirname + "/resources/public/js/config.js", - defaultConf.join("\n")); - const tmpl = mustache({ ts: ts, th: th, From c05e377d168b6fe9869097f97cfdadf0e267324c Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 11 Nov 2020 16:37:47 +0100 Subject: [PATCH 48/48] :bug: Fix unexpected issues on gulpfile. --- frontend/.nvmrc | 2 +- frontend/gulpfile.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/.nvmrc b/frontend/.nvmrc index 605427f4ad..55d1782166 100644 --- a/frontend/.nvmrc +++ b/frontend/.nvmrc @@ -1 +1 @@ -v12.18.3 \ No newline at end of file +v14.15.0 diff --git a/frontend/gulpfile.js b/frontend/gulpfile.js index 4f40437034..4e12b670d9 100644 --- a/frontend/gulpfile.js +++ b/frontend/gulpfile.js @@ -46,7 +46,7 @@ function scssPipeline(options) { const touch = (_path) => { return new Promise((resolve, reject) => { - return fs.utimes(file.path, new Date(), new Date(), () => { + return fs.utimes(_path, new Date(), new Date(), () => { resolve(_path); }); }) @@ -78,7 +78,7 @@ function scssPipeline(options) { .then(() => render(input)) .then((res) => postprocess(res, input, output)) .then(async (res) => { - await write(output, res); + await write(output, res.css); await touch(output); return res; })