From 5d0d6e4c885183e6bda73dccdcf32ab39911606f Mon Sep 17 00:00:00 2001 From: giovannigiordano Date: Sun, 5 Jan 2020 13:10:25 +0000 Subject: [PATCH] Deploying to master from ee851a0c89436ceb3e5440d06e9b306d4ff5b7ac --- CNAME | 1 + FG_Virgil.ttf | Bin 0 -> 122844 bytes asset-manifest.json | 22 ++++++++++ index.html | 1 + logo.png | Bin 0 -> 40186 bytes ...nifest.0fbb4ef256be8a3b8e6f3b71d8dd7aec.js | 26 ++++++++++++ service-worker.js | 39 ++++++++++++++++++ static/css/main.4b4142f8.chunk.css | 2 + static/css/main.4b4142f8.chunk.css.map | 1 + static/js/2.3fb278bc.chunk.js | 3 ++ static/js/2.3fb278bc.chunk.js.LICENSE | 32 ++++++++++++++ static/js/2.3fb278bc.chunk.js.map | 1 + static/js/main.3def8d06.chunk.js | 2 + static/js/main.3def8d06.chunk.js.map | 1 + static/js/runtime-main.b019aae8.js | 2 + static/js/runtime-main.b019aae8.js.map | 1 + 16 files changed, 134 insertions(+) create mode 100644 CNAME create mode 100644 FG_Virgil.ttf create mode 100644 asset-manifest.json create mode 100644 index.html create mode 100644 logo.png create mode 100644 precache-manifest.0fbb4ef256be8a3b8e6f3b71d8dd7aec.js create mode 100644 service-worker.js create mode 100644 static/css/main.4b4142f8.chunk.css create mode 100644 static/css/main.4b4142f8.chunk.css.map create mode 100644 static/js/2.3fb278bc.chunk.js create mode 100644 static/js/2.3fb278bc.chunk.js.LICENSE create mode 100644 static/js/2.3fb278bc.chunk.js.map create mode 100644 static/js/main.3def8d06.chunk.js create mode 100644 static/js/main.3def8d06.chunk.js.map create mode 100644 static/js/runtime-main.b019aae8.js create mode 100644 static/js/runtime-main.b019aae8.js.map diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..587434da --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +www.excalidraw.com diff --git a/FG_Virgil.ttf b/FG_Virgil.ttf new file mode 100644 index 0000000000000000000000000000000000000000..80001666cd223f7df1d23e2cb66de158a40913f5 GIT binary patch literal 122844 zcmeFad7xxjUFUi39_x*Le-SU<7B4ej?k`_vWo0c0Rb{bb6+)%#0tMBAlq|~9K(Q$l zCAg2cPY;UQv_I}i=JhZB`q$3g-$Xy?+~{%qKECtrm%Z}rO|N;LbA!7%=c`}# zqSxH*2CnRa-~DBNZ@%mmZ@BZVPj2pW{BvFK$o(&W$tz!f%V%%>PRjaI=knUiU;3h# zeD>A{{*ZHP9Dn}h?8qJspUn50_`dn_SHAZ3Pku}7HGKag=fan~;#Dtx(NC<+Ug3h@ z=J?>;D_`{byTc!iKFs#ZIez}NFM8!m|NIrryIk;@$8nAE-LHDhYrm&_<8(z_q|k*9pEbHiWf_(T4J_|5K2d}DAw zKiCz5Plo@*_MESOZ3o+@wxcPp4R<>F33odD6?bb;aW4*j(3OMRTq}%SIs7_zG6>vu z_%kjK+V1AyulN5d3SHOzv^yI9g{z0Z>eBG0{m*l5JNO${58mOT@SQFXS6$@((mg2% z-HqY%TpZrz=E48%R)R-eE!uLoh2P@B@YDNWh>o~U^q*WWe3u)9H@I%pbERy-0Dt{Xm^x;(i5Tj9(0KNJ3@>x6G}K(gg^kz2*{)E?GyGHoEt{40h+keaUMVEvdZW8>#{vT84Jos;J?EaH01-I_s7kq&> z%G^`JH@KbP*IYk5M!A1Rnd{u!zow3>oZs31l`vqtO1)mh=UK}B4c88@uk!5v)d72N;lY0oE9pC9J1_+cm?Fxk~Ub_jxzxKbPa5yZ?8b zSLc58J$1k1(%@S6wD9q+8+?&^Y`JoDGxzfk9J9jt6Y6s-V`b#Nf)VzC;7k5JrPy=f zOMdzPwBx4#+1cy=vz>mQAN~VAzOP(PT#{s2DGlQYu}Z@v3$rvylPFEYFiGP$OS7z; zCK-pZKh4rKO-g)8l2XiZ{EL$~jFK?rlmGUQk1#GpX%h17_2NX;v0TB1hm*Z(Y~u6!?B z4Xsehq#|ru-8hZ2DM?r6+EG@nL?K7S8P()|Bh^hUl2Q-e${Cl_KQ4Jtw`w(YX<9B< zN)ffmB5swsl~h2MMG<$Fl(SN~s_LX=O0)l2h3{Ef;f_@xbqZ+_T0#H$XAK-C<%kXH zmc^w?RdvhQq(W+yh>cP?RgdsiDbaV7m8m&&sWgsUt){wFD%G;;Mzx}}9F@yDrDS#E z$5OdcD`nKBteTZed{9@aS5<4O8Pk+zh)QZxI^K3=S(sMhlGT^GRcjF~TVfbc5Os^= zq(qBw+Z@fkTivK0RZcT{Np-8&GnZwRN=Mq^Dp7^&XLNL=7ECMUamh(q~rll%zRduV?IK}E#sg$yMwN`Id%Jp)&u6j|`YNb&r)hngE zRH{-DN<(5*H%jLkrIH%B9F^)xmBGplB-KWf(Z&(gls2MOtZub>xk5d7YgFkwI;av; zw{o4clf<=JWmhied9%hqDOclKQm#k!nhL1WZq%)mS8I8zTJd$`mujtAp{{wQ++d(k z9;KCHdaJ7b*8P_`tx}0fc|tK(w_2m6(N-;0(`ud3LEW+{y;Y%DfzDT2E7`c+r0wp!f=pir$RjkMZ~n++9^*OH{pwOe_k)yr$GTD6(i8~UHuJN0U- zUhPz>IfF($O*2pt`kP8sxr0ir7FXI?PHnk?EbsKwxRU1OJfn?h6^4Di(P-7E9;2<< zX_V{rdaYJZXp&l+BC^yCM>TMy(;2kDidrLWWwmzPZso07xlvEkMx$2kG+UivBk$Df zoo3!@@W0vU=e2HL>(y#aI)*Z9NvW1Ls8hYdC8&Qj&*NIR)KqAlG+OO$y}@15E&W!t(P-53MnaR+yR|yN;3g}%%kzGJ)M0$(t*n#fy`a?4qX5Me+!+PG%bCp?7X_1!NwARS!D>fQQeNbvs z-)g;8?u=GSaV=}t+T~WSNvj}5txmV!X!q!gR&Ug)wVKUFqnVbPd1FAC<&vAu8sNxa zFzJC1jds>8HTp@v*XlKBuPkeG?LntEn08u&W^+Kz+PzM%)1I^%!&YO=9n&$CmZz0Q zshu~GDX!3H)4;7HAC|jKjn8(uJD!!|dZ|tQR%bBj*4yoN zv(-+^twwX$Xf`V)H(zUlBjfRG07A67rGB|NN{55apjqp+N~KP>*%y)N>@J-Wv?Y?e3^W+l{7!yxZxt+nub^X|^ZLR;yZeYwIm=WIS0Nmh)<>R~nRC zqjWUv3|sYHyHxH{w@H6ES?hJi?e>_Ob%(t{zdP%;CSB^*>bKOzE$Y@P_o!PtZ?}=G zPNUOFn=6$*ZAsm#gW0;(t4+rc0&aB^A zYj;MSPOsbUv`e*4Wzg!iyG>nUz@X@*?bX_dwrsQqwbA;bnzky#=CD3k>Crr z9gVx)^_A82qm$vaCCZi(YSqK{M#~dS!ZRqW*4kjsAGp9S*bJ zMtz0)wz}hdy4a~@o$92sl8@&jTBTlZPG+m?^hm$U+xDz89*u^>QMpdPY|!0#&7C|o zaD&0t*3Me3(;QA~^ZH<;ys?by6GU0E5AS1S2rFxnoBMvb~VyE}5D(UBvkHtW6Cc(uNfkG9K; z&FSW-GoRGzv(@3?$lB(SGxO>8%4BP0fj#Z9suWnCz8?$=8wl*H^ zY-}Ij+gRP1O^y4cv;n4aF4om-i1Pp511mFcwJnKia1^XYsvrvWr5)+*C8?d|z+I$YW8 z9ND|BRT?)I<3)G#`1)`N#0<8M9XqwQII+6Ikl8yr-rU$&Tid9&*JtxH)78~Z(>>wl zb+^90cmBrH?UljCvDV4<`nl@a)7z)l$2*(N*3qMDtLKlOIsf>b#opHDxf4fD9X+#i z`uNf7kE~xfvT@zo`ib@R#n#&TTBE<-KDN5Gwl&?{T;DjlSY0ftYuEHnY_3qvqy3ZD z-`uIr+B>u3gJZkfD=Y0@Z@hE*%!S4Aa~t!;&bb>-&5j*8vRE8x^tRWxu36vQ?04Lg zpSp01#dX)+a=yDd+CJ4e*IQhhUvvKW`Nj0~(RSy=$<2-H&Rn?uNvC%%9X)dC?1^(H z&!65qd-CQJi|bEpKVfTecCpwwy1CeDjuzch8?@>C=#j zhv#m3YQMJLJ+pRpeCp!y`Mf(AOi!P`aQ(3}myT@ioW6AP-rA`XCywo$XbpE3M{isl zJu>Ra8jSoadQ#zySz!-e6RcW!TJ-Pp#V`Jw-UB=^{@?Pm`1&Ou=6|8Y?{@zSKA!|j zI>SRy#^+OYHCK19at+sXE!TD(yed7{$5S?RBRmolx8kO5=2r3Bthsf(J)3UJE!?&{ z;*PpwZpR&WC)`PQ%AIy++*!Bl&bd8z-d%9lxQp&ucgbBxZLTkBbc4GQ@6eaI$Ga!E zo7~Or7Wd`uR`*2rB==Ok^5@*V!Tx^b$7DsWxV8lTmHKXzncH|HTLle_ezJy&E@WH_jP=} z+P%iT*1gVt`+DBL!M)zS!M)MF$^A?BX7?8NR{Lf7c8`0T_1oLsJBnTJbnkNCSZse2 zpYL|>Ssu*iz3#n-zR9bG_mY3_bMG(qe~bH8_ie@Yx4Z9f-|4=~#lcDTJdXeJ$E{m? zKZh20i~CpZN8C@ipK?Fre$M@Z`}giYx?gjjcAs&-=l-kvGxt~SAH$E&yU6!!zCK^f zuU%W;$J+yA}&&+Y$bKL6eRFY^8i`;Y8Dynki?XZL@4|Ni}-+W+zW5AOe~{U6-_ zzAt?D=WhGltMa!!samR;);C+{`1pDv0;%=Hgz}e9Yo`2$s3qY`& z@4D&!;Dvk%kF(?08e7rv`7QTHTesYH$HwLPz4LpY_>z0)x6EJuqLoWhOYd?mQ&8Jx=pic>o_ z);89t*5#YHRQdRmZ@=SaDzSrq{Y)qR{gWwnO~yd%-8!_zu3wTkrONC#po- z!9)0)x2f1CPCXd>Xz-IR+PM<^Wb;b!nosdM<+oqQ_UlfeRQJx^5MCdi47S(NcER>y zkGJcC8-fe|@9g;t{4KxkojbpGZgG8ZZn3@C3D&dqJlrT=J1XO3z!AmKyJv3*Irmbm zlOz4|)&uh;EQ!)`hax_QWU?`(h2r+~;`RCTi#McAgwz7%lKEYQ*2G|Qu` zoAy)yC(pux{ic%pgYGPxhIx=J|2EcB>TEZ8es6uTp+5=;8bKaRd1cf=2U|5Rg;YJ9 zMY~;HOr_~iF1MjS722~ybbY&Mm--Vpha2T)sj!{i;HPXSutrmz zP6np}tQfA;-<<`!*6zE@c0cFmu$J@2_4p0XH04+Ef(`m@d@5W=N6GQ4!;>J+gNt046B|i@i65jCHrtq` z$uJ5URE8>X1H9?9W};%NVaB%#Wkt<$sTl>sH0gvX^-BUgjdm|lEvuKq30`&FbQM)y zCDpQ^lSK8r7KS(()FyV4FP$@U9Kz*_Zz`^e=an`K@lga(BZ#Hy6~Y9se4- z8ehXO2wz_`U%*Awn9U#=g>gqWceRl(T#uK@?uP44x&ieFt0fLmF&xSTn@ydR%W0}x zO6PT2E2ce4TqKO>v!XeuNEo)0XqeEUG>E!`-%~CgH9O5HTiaSq1I%6AVMF@Wx}N?i zb<5RerGv+JJR3*JnATB^k~j)!6b@6Rxb0fl-RVXc`w>-3a{TmMAPu`4op^0~T~!Sj zQK@Q0J^lEhow1zppmWQdl(ZxLM2p0I^^8Uw!zNV!hIpeQ6%tXZ%23NP)WW0{YXoUf z#fjZ7jnj#PYEa)fGK(6`JPO)Lro;2-$k7nzSJ-V6->}2!!@$}xiqgq!q9GI2!#cH~ z0(J`TaZssd)RnM^&hve!z73LP7p(&jf!) zl<=7#>7Smu;{F>ick>-rT;tT_0r+%s!{uT}S3A0gcJ#HQuN@CSaD#uk;_mp=6?d7} z^YsFDw@wB-;SxRbi0zZ1M*;tSeR%$Y!0txF%V_t8XjjnaK@YGK81=Fq5C>2RXKx4% zZvl+cVCDhj3aU3Kd&3aMzi*$6>>_&iXb)x!whg2YL(bXr;1Jg~)X}ep0ht4rC~i>P z6BG+U1#mz!wH$Q&1zH1Z2C)Wxz^+GLkA!xXLHRWFS^?OdMS@-X>&>DwS5LO`xr9ey zZKxDOV5tyZb`4r|v5lINMp~ehI-squ9rfgpo&c7H^S67@)YmToIoj%R@zc^Myx8P} zF4#T0Y>VK+^}zyw*Y&Lm!B1-7XK}mRjsz%S(rM?x);#GA`x2xmHxUvPhhSno>_#!( z@gSM7in zDxg>@avOjou?~dcUfhh@2hy+h|k2IaG4sP&|qC9+7=%#wzUnmWt z%$kt)&OEr`5KnX`!z8Z>Kq){q3~K1QsLti2ojHd)K-Gqfu>^ojZH$GjPAl}fvMF7n zZZch`_UnxRZ!4YViIbrUp>4ysVtp(H#+_1$YEhG}wWVo}ewg(7ozS|(N~8~j>>6U6 zL>&p4kG74^2)-H$th}ey!FE9!Jp% zU4_#7F$^Y*#~PCakhz$Y0kJE3yn%WTyNm++?ITjuLwm}oScmXZ~C3=(B5 z2VYp6)ldcS@6-G5iC!Ci)V(42`rt=`&tY3%2?98D%q!(pKJ_4$>C42i-E*5)+)F+S zxPvzZ(KRFv_B@3y@CHbng=YkChH)a8(HW2&lo6xt_QfRyVg@VAcM#LqYji3&841?+ z5|MErtbp!|B^Dm1Fprt*0I+3k>!*LCF-HL$iaOrq0{zrVXylD>@8^&U7(M8yCBTfpTJpllN#Ic zI*{7aW`!}q@t4q-UT4Y@DQuMu6rRdH6?nMTDQMF0JR%+;)j*D631d}*5^Ms->p-(e zQa~utMjxU|E`nev0V_F!u@e$F)u$06K4U^-;Fkzf)M(}5A{4}Z@h<|2I-?fPxxg|Y zGHzos=veV~Spb5cB8Fi(tj9y>OBnS>{fJ?2sw1rMlMptlrnR(`wJYUOavP)lA|(TR z!WFnrD@iIzXfTWTb;$++<_9Nw9O!FV3L{XV!)*=+DWHsW2t6%P1n|Y7DqSZjTpK z&aBs{4!;?=@H?SgGAj6iL<(!(2&7uCl~8jD!H*S#lnQE%GKq$Z5$n#0&4MPfQTT-X z2^z#wK{8d(x-gx@284DoDLhq9`XV5YAY53F#Yv5vks57+qC%HN!2y9# z%+8CuVce!S&~J>261TURwA4kYKG-_uUm2r>ii}V_)@N)pNHC6nke{S2*joulvRh~k zYK9i$gLpEzLo`%oV@|4coF!whGjg}?|6cg^@E_b~g4N(UJg@kk;Lu;r>q(&I{qC1Q z%?I6Y;MWv--Vb{IYv{2)f0oamBHRCw{r{G2{r>NZ z&tK;Am*w3sOMFj=Xb7TrLr3;rI&a79=#=P&G@Jw$$W5)VIGk!mNmnGtPqHkM!lz5^sVp& z@j}kY6=AqVK{sJgpvCnEUjW5|GUlJ>1YsGv8HM6LhASMwj$SP#C_mPy;VOnV3@DlA z!3$(8iW^GMBnepN-6$BONiT@!o2zl0H>yD?>r_ZR!J_rmD`z#BRqeR})C585hQl!= z08W{=;8+Gq0rJjYOZ8&tie*%SC?f9y>JZ zBXkcj>_yu;2oiTBiDxkcVATMCYN%wlPZ z1}_G_L1FR_r6H-xS>1qo44)9tqPnQk=v2n1sGPX@_h+l?v$SCCLSl#_j1XngANRd$ zD;W%X8V;t-=nw3bWN7zN-v8C$+sOg`IMJ~y?i?6$9<1nyEreojSkRIZFE0ij_%6MD z97qBSUSrNh&(sRBJ1~I-4G5q-eps(Y^rF>Zxm7?!Va6K@2o6MTylw8c90B$zO$0GGVQAgEbM(;pkS8=?*gB}+WlSqPb2x%evBF)#DBZQPp&tlNBw6Gj#_Wl;% znT7A=P#2qjf>WfU4k;d^)`w}fhEE``HbY9DA3o$eH>_VW=>vDOw-!95Uf(;zeG8Ao zhRwZgc3?>MktN|!&?Jl zO7`3q;}Yox7llc@zpFQbXkq>0RY=<1R@7_;(+rnujCUt78&vor6T#X*bTANZmfbk`c<`G< zTpNs`r!jV(!RvO7AM=70*4WiRfE2msCg)|yU~D~xitrs^@_slo{{&M@K!Szr%Hw9n zm>-b4Y%4Hw2IJD(m!2co1*t(d1(ym(n;CV{A*zGPxG3U6)at-qT$-X(6xSMmCyCO4 zRKoT5OUO*!Km`GDQ-W%Ajg^G{%^3i6F-J8b2yCT|@Zxrfz<2(Y!%|g!F3(AnX{gcm z>c|kc1jB(L%y%>~<WG!W@Beqsml8*h{%^AIikL0~Vp~$?m5j&fi;=hrlxI>it9pB&+xHxppt}gMQreF-&_91G0#G#aZrf$&WNkQU;78n z)0q#@9fGzgV4pM2a8cV!bXK%=L!MmD70&f>ir7(}ITV`m?-dd7LaW*x2BiAV48E{pHg!bOsJgAgY~ZbK*dR<0o$$1ivb(M#mr+u#$&4an@SabX4DG)~MRFf8)N7yc_AW3B5n#HRrVf9u4SEksZ;v8v^u~DWt3Df(>JRBFDbD z`Nek3xKIbmdhujsZyO?kHu2O{MsNtL#KQ+SFp$c@Sx5J&mZ6?zfF z8>5;o3+cT|yNxS0Oxh;MCS|jU-Dtd$)C|4T!4S6wyh2XKqSa+tj68qM-8Y0k8XO@b z2M?ZczKh)VC0;im0dFM3M-uQ3B;Z}2G6|qH3P+N~3FO|gNC=^6#acYX7XB^*#Rj2} zJ#*n%!`OH>Mn}_lD{tv~V|e>R42$_$qkeC(r_oYZUxO1QEQ|Pls@|iZF5aW@qeO2pfb1%<-!J5I~DH8wF5#NjeO=Z9inb zJ3=V}b|4cSrmke1d55mKzvwBi`sp(r!?k1Y7O-eC_9TZhtSzQ%j&8#^>FrzGV<=TYbK4FZ3CboN z={VYmchg-es%}Ev64At!L#q^nP|OSQbHV;!?cX21GisB;rRrP&tTRuo` z*00-r{yO*fDEF5cEi{kC4bfH4u5Fo|7LJW#WFo!Zb}>qN;PKD~tl*q+gQZKOus#Z< zF5W1k#s3{>dJ}QmiSM{Lps;o9NPh}Wq9uPJ2CKMTS=x@wSlvP+hH(Mdb5Wfpjc+JsK8W(N(nHhmRYoa8NP-& zq0dI9uDCTu-zKjGuOqyUA#Fe6zSlM;!x9sW`O>uEZ&-Q;eD_XLIvU36PCMy7$lvZd~o+)+*=qtRa6oHW}rcb%mWoQBw4rPmpd@=}_E1_Av(di&oax&^<(c zlNQ#T3{bJ3;&NO{NlA*&`tT|Ht(nb(j{(X3cR)Hdy@&he~C!3nHQb&o;R@a#l6R5qPIa7Xt) z@7@=_m~_D>K12d{gd0nIe}agvBd+U+tG17@tz5A~UoM2EN@Qlt!fZ#~K#CE{{aJ*fmT8?benogk1m^Yo!#xw{UN zRCyC&W(;0Oydth&xaFxgU#MqCPHdOz?8f<14&U}RB2)BaobBDPm*LR@vS~e|6aYUm zh6PVLedy}@4~2gcep|2}Je53e@13y>oja9(bEm5wWa!+b9d{kt@ip4J=Zudg$tfwYzyvUU`EFHZr9?Lm{AslGz+=#0^$FW3#jn_ z=)+8CsJBpbm!w1NbyLy@sf?an;z~5fp}`vm5MU6t79WKPFOw@2h91CFBpCC|T0sPTa#z&kQ^!As^R^|$B)5r&hV=Hg7&kY|p%w3o%t zP;U~)u-@y}Me!xs%v?pm$+UrjnLz+K)FF@A&uS(Tqmh7=29zGJUi z#7(&X=U56~5SI(|01DD>7b;+&0LC!)Q?WY9JH&$kTrD(be&HVzxnrdIGzCpK7wZ5N zFcpPZA}xqKVA%+UW10101?){H7Dkr+WwwboG*wvqt(bJ!kH`hUw>r0*NtuT@DdRfr zb&YpM-Pgy&dKvn<7+@gxF8C&rV-4h4w;XOF0Ny_G$rQ1GnG1=t1Fm%m451qQpt`t# zjp|ZLCuy&B2!oVHa!@G_Svq?1SP3>&hmqk87W`NMhiU7oN>pRIeTqSVaexDr)(R{L zVoHF5%~9xqiz(M(w2@;?0JS4)S*tfkiT}`{B7;f*T?RF2EdY`ErBO~ci|U-zRpCJb z5m#ubXa<_w?ALVv7sCG#{#@__7K8W=knGdEK1-JK8-v$^W@0C(c27s7^G!k|B@!j% zhO{zP=dmVaUiOP*@bu3dZ{^}A19+TetVhB%moWWaQA$F7d|366GOO4S@5RB zl0%6fKS3dMkgi!&m)a`9jF+z>HTL4Y8jx&Z*?)Xj)`$|OaoZK*D?!g?PI{rs*7>!_ zS*D;Rge-#)K~EWNGvcv@5r4qA#IoQzONg+#%J(NLR*0n!`&9vM^c-pr>L3S*HzLJE z#7z%!j2Qg!%IZpNX$I-YqB0436IKctWl$^!b*W7T04{>rtgKSSjm4W`H@I?kN0x|T z1i(aF+O~Y={F#aYiUzQS6}?mv2xHNNS&E(&O(2t~6)Ud{vQ;j(B7p-}&EtHnm1M@u zEMWs#PrAzf1c;PJV2&aTSJUnR?mc#TRuPbtz)d3kMJUsDtFE$5Y>4xt#_%wW8rjOq z0F4Gk2uL_pP6$*^0tO?G@N0B?P47`2u0LT7h{KXV3|b`qaqCnj8jSH~s72vb)nI_) z3tk%$7sw3(I+`oD~dVaVL?O4tEF!Q%Bx##o51QJ-8A`Zy-=f#q_IsB96Fq(NsoB6dY@E~@y8v1luUxK~MV>iVgqR`ROomwD> zcj{SYvHVvUWrZEagoXkOgBNSq*8fXTC(1&%Ml27Zekl6I3$xeaxT}=ZdW%H5!(tPP zAWP&{&30fzrzw!f;wuax+1-nUVT2EeTS6b6E-54W*tlO2ts(MV7sOb80fV~8I?!m6 z$Hs=Myyh$u5>KT$>2tY8ZP=5r47_M@Jw(D%y z+5Q~czyGNRf|AnMgP2)E%6xnmvx(l!_M83D!MlkX47|RxB$UD(MC5Z%F?F1BSM{8! zC26@Li!k!4&u99fj2YgAWE5@%i+5=x9*UWwJPVUtX^p1-q774o_Fa0b7`uw<2j>b= zL14sI#mh-l@Dj9p$T4OD#%>eEvwaJVnPkAx4ryHJTCdxwgx_ychJ+~v@v3vU@Hyy;`PtCPRZoPXGPjDK{tg_~7H3(%0J+wFIwr$1f1QfZAq0a@n!N+J(3 zY~x!5@bw8%-BNO!BoA$@Yz78Dqnq>~Bt)5b7O06gj&3AA_NGvxcWF=XdNI952P)YC z@y58;B3UNUwK@VqoIoL5+31KhWPMi3CbairT^ZhzBQ+}T<_#fNNSRTjq6izT9#SNt z+R|PIGI(`RDqK_0fRd352V!Qq-`#i_=Hmn!OBX;dNmFw=`bcGhK|(`RF^eJr2AZ0s z{LJ#|8lFw=32v`6Djh~^lmDTjIE#k14I)2u21YnwMtV4x^mVmn#U;T4Ror*^%*EX* zlZo)RVr+4^xPwL44Mn|b#$zkbt9QC6ico5nu-ssl3a!Jf7;1nc=)(#}9_j?Na%0HP zja}}t;P=Bfx{qs3KhQ@Gi7j5+yyRc}0P~XNd-x%+<%8hN2NexRAU&Us&Um%v-!%(w z$zo;PYM!4G@!-4snW1|~ZsfR5`#m45u}tL|TuLs3`H>9l( z6t*@%Fi-Z)W-zaaFU~>?76cMnohy=eVJ~?1!5}vanzZi*Cf{)Aw#yn!o?Uu?&4r5gr z`|Ot-Q9?aR@%u6RFlNr1@d)MR^UX%N-sKS$EJ%9b2J$ObNA-qnXvA6;6L$-vvs7GU z&2p_7#8{?=M@I51*&wa>u`#bkjVdYEn1n&uFkH%(_QP{<#f&&LWB% zGP_O&*M~mq>{7HeCzqit8^4~K6_W#`j!+h4nH}&uBXWwGE4f{N;*!PTMb6!FY@4t9 zRkW*ml;ytE`B6?22o=<}K_gzR?2=V%*o95OV5oH3mHf=<1)`7tf$4dPi~`{uN`jUm z!4Y$!PzDs}y*ca$V`xJ)W1yrPMhfi6()ld@Xw3|i#h1XX^3Lg%mo7%-v^q;Vb0Tk7Qs~5WO=yUio`5Lo#bLH27?ey_Q2B52hxCD3?lf~ zX>^!z22US^Y+7DWA$z#Ju?_E481w~(%$8Wz&S=-6FI-K)yNdN8z%2|4mA!;c24920 zwzN%(A<9MmdF|{3AK5Wy1pv9&DA?J7Q<0|G^F9;LJIyCz`MT1!FmjpK5H^zE(>P>-PwonxXn3v3;K~y- zt`+V7HMZY*_aXP!?sX5bAdMCpl5^tSsGx6vTzvxorR_Jc{f1)uO>DoZ*uIDDdy4J1 zv;FpB`@L+xx7hw$MUI}wmlyJSF)!sT+{Nn^@_3N@SBRoik>NwMfdRA8Mbh_#Ob51D zq2};d6iy4D)F9B4E5jhJ$lmaNP@`-XPzLtQXDKK%G&;yQ0#KuEivn)}M_uqoCYZ-I zl`8x#=Jgi7SJ`Y*p36VcNCLRQPeAM?1ezjhIag8>rIl$Pv2CgU2>cP0^x<5z5!#N( zAYlOo_%O>BW}8re50sLT1O+RXnWNJxmoZ`(8IUx_7D8i0gBea@EfRFW3GM?R!Z=Ql zeDPyo*Dx+6%-Qu`hW=!f8V9EY9nJ9Y^Dz)fVN=p<;Xjm0N2fE$5rR1Q#t+-rG54CL zAYkG&au}2b6!@r!8#i6;Dl-$0gsc!I|N4ni3wa}OoLDlYX0quY&4ZHUKrDeOd0BSB zTW&TgHQavMk#)feBn|h4R$&m}qJzW6PqA940MUr40?JlrOeJm}kBLE*@i%kuSbG-v zNis7tbnlb)|IU3Z_&HJ>|E1X#U&#o3Hm}RPydHj#RjMu;13TR$wkZa-TtCFL>Q!4} z>FM(1e>rd58~HwW+6;jr!s+J`Y0%1-alpzn4((Jsua}~aP{l~YlhnR6G7^hn4tmfd z20FrHnnvy#^$$P=sLFR!Sas}>{?g!J4O{kBiB=H>=TO0tP&C6GhB24bo|~F|sxCu6 zC`4_SL6s5QVw3%#r1%Z(XWgcLu{keRH7xM|iv3};tigAvGU|XeYIUMfBUyM#Ev(V@ zH|{Uo9|s?1t*-Z3+kYt%;8o&RvER$I{j=de1IuH!hF4tX`p64?k*(}`LeUSN$1)9; zo~AKHWu@5d&*IG;v1SpYf(BVSvj{`4E6_18@Gv7JP(t$JW;!8c%Aue0fMdDDpaML7 zYtW#Do{`O9rnuCIgu)As8joy>s4e#;?dfxKr8y)6(#*{E$>9*F@E`?=E?|@(t3mkHP*ZfOE~|>E zSHnBF7T>uidLD73lTlXk`^BuN{v=$0zeQqzmyG9Nm;3^AUDPulr)NGv&urP?7Hn%H z^6z{#BjhpAZ18y_hKT{`(l)m)^uhuQyqdJLBxCA1Im4ErVo2w1|GYWq>1tsyoK=)<>FBAWEKdUuKnbJyAuV(=eT(PWmQ+|qeG22) zrikL3!HX+Tl;zRTLq<&`)bPWgUeiEnGd*4=Gi0aobX`x^tpyc+HL7DXaAde+gR#yH zc@j3eUdb;vdUqDNB8rW1H_%e~Us6r>F-mFkyr665C^k@CWr$Z!UpQSc`l85^4)lc* zV#?#f#RJ;No~Ev1LrQfESFpInmt|PKhc$+MQdrEejusPa+LOMZR}BSH|e%d+1#Edw{||E25TWK{-%W|uQM#W+~w~E=_aE}HDc^J3UpXGyTP*N%<^AAC`NQv+cb_89nVMXW{U02k_=GLt6M2bHSzm|0kmCvqu zHS)telh?E4QIx(|Vi`uY&*l~(WQO0#Ln$#vO2HXJ8zYl`kKB<(KF%z(P=K(?=MWfT zE#3F{2K~>4JO2R9mT^2!G`&7sZZ9)txz=+efTpB{<1}N9JGT6exXM!USQT`ddKEji zl}T6$*J8}rbU#aJ#Wuk+OQxKj2f>;q6hSd+Z4-Rv-kIj`4lwqjTQmZcLue6i7B?wi z3kbmOwEQ-o3~NjP+`_@Az@9fvS;j*OP`y+RAD79V(Kkj1c!E)*R7cAMP%bblk=L{r z&-}G1y4=RySFbx#Bks8$B0Uy-pI*H3ipGJV6+u=p*ntaa_?P>kKmcFk4JnYcOC3*{VUd**j5FA1L>Z1`_Shu3P zk!s_dpxRA>?Wp(!-DsbkJVBMjR_Eh$@WcX_)-E2+I` zhUzj+ZJN94D~7F!YK3(s8HWY<8`ZC>7WdO&Qn}6Mp?+qz`F@b2L2K09w!cj-*Gq%v z2QLji6h4);cCWY_LBS{Rx`o%1cs+$IDF&NZU~m%uB)T;q-#eIo)_+I0+Ws?qo?-tH zjyY>1Tw}I)83Q+a`Z0qTj#vbE@gn;0r%Z57{8}QT$IAjW3r{4v7YDU`lU`&B?(c=i zhUn63eP+AxDxj2Mhk!TP)w6iju z;#`kDk#%_y;m}iucy0)~ogiH>OkPTVB0s@>N#ELwa3@0{0s-{(`w2~AtC3!|{IZJb@BI%}Sky+|*o*pq<#nEh* z2dSy@%@MQ1v%)eeLtrH@@qmgPg#KdgrSKw6!92&9)Ow!K z#H=dKh$J1TO~PQ5mj{)4yE?$<%2OticnaOoY8hM@W?VRV%~5uZRE}te1=1ONnRqA0 z5MCt48w zmi058tv2OGxk)L0)D!y^%x5WMa_rw6U4V8!%d&32A6@c8ygtb5L%e?6dw?O@0Gwwn zOEy7-#z%`H5e+~N$_vpcK#47*8wJxT5J_-UfSup)s0sENbyE6{Qi<%V_Xlx8p>n`n zuMCzEP-ZOze*Q3ks$VVW6!gi=Wr56s(j)^g&=KmyGLedI#P?*)^7$+OV z-0CBA(xcaO16;jMGW`KkY2>olVZDt?kXr+asAprXm~Ttaj88)4aB16xE>Zx;eC-sFmX)?qzWvqr#38(AX%8UgB4Z6&z z@iiCDcH;b&?d@CgXhP8oZVb4eC(!or2JspIaTqx{!m9x|yp9&Bmw z=ut*N(bx#%#fu8&00YzmWx$DeT)e%fy?vZig@q=QO=gc$sPOace_{WT@TbCm3VzpJ zd`PYo9wnft&v#;&d^-lpRdc z-d*n@W|0%6-SxyJ&HPc-iUn_d_AB)6#^C%xbXb%~Wfu%hZWjAvk0)>mYex=bY=3GPjl2X-Y zeHh>531eY0W`zR;rl4RlxQy9o0C)MjulSUP1S(YCt&-*MO&%@d{M(tzM305H*lT(FGk10cLZ~u z!t$jSuFd@W3r*7di$hCs|E+fXtzU}!Q5XKxmo<1q&ZC6OALWrKkFo^eqfEMg)cql^ zzvGoX@5}V`oJU!`o1?$(iu(H zaylD&nn8R?ag-&*8C&s|o~JE(mvQP79G7mJVydOchyk1B4IN(T&)biJ8rgR#CiQau z&mngtMPId-<;3)`UQnh2o}n+;j~i=Xq;N@Cx%7z^z9ECxtJ`}JR*?#g5XL0$^rqN- zgzB`JyGW=7k0qWY%U5_xrv-8dZ%RVUP&6ST63tjE)*EGX@)Mm8P1SIfFItS%3oc7_ zGAfW5Ed-dP%&ODuUX2o6+8dXgZC)AULquU&8k6UcHc4Ay=y{5ej;5@leC_7bp1O4@ z7b;MFPO=#aOc!hgUwqgvn&B-I5J2b2)GC?=R~>IBT;8L@RiBZYr3dI_6|zCFBxzI+>(e_ki}K1e5Ec4o3T} zy)6Mnwi=eDH!3YsMTY=`+z~KdN$NaGl_f_cFp~4e zNHoFtI)vsrNXPf!R3fh=Ag{!>zlCk>W08S?MFwn})rkUIok&rgck|L5ocnma4-eM0 z!8!9_UCT-GVCnM&pC>r^9NUG*%2sYM-;anx;R@0xkNr3p!iW=DWuAN#Gx@MZOd)gB za_rkoKEA*f3f@p8?rj(6$bWL+LYetY0Sq?gR? zRG|Ca2@VV>W_{x(221+J--JoHrFb?XIZ_OrxHIU)E2mGdz)m8}7^NAr0+s?-jA=%R zhL_n40&>VQPm(1P?`be`P_(&?B{r4Yj%-05SmJ=?y5)-1ibWco{8`{z3YOe2K%vQ@ za`*CZRx_44-O}Ry0_ar6u5Qcb;B}HW3h80c%AI3ZM{qTX2r}c7e54P}aU(tD!2|Y# z*A}S{c~oN(^UT4_hsqiNk4y*^$U`;eo9kJ!b7m(oZ%Fm{sYU9ey*RZgDi6~7ViB-@ zn4Yl$7SzWza0S^BO@ZJko8I`xu4oV*B9>_^jf1CH`XG}4@RoT^XjsS!jx4yUsEZ~K z1G|};mVek+sA@{In6YuBcGp&Yw|c!GVQw@6k3$3}KHA&f`Kkh$7@>wH;ZP-5HZ8^Y z)Cij&M-P;6?x`#A1?nl!tcz0TEFlQ8 z1;w%?Mo-;DEQ}Fx9lz?QpIX5+4Xlz@`Mw6kBPB&oyg+ThEN;szR7N4~((f0xUA-FZ z`cmawO7d`_GXTLfs{*O=vsBCDdbe2})wI9^gNU&LmMg^@EF0|qWB3i>8-gunPdx#q zaVzNaR9;U9f!2d52=pMlW@Jb-1$EvA0=*3c8nI0ZT|f$5p#AS)`yCdEJb)Qb7$kvY z7A==jk#7QLuUR=BtjqIz!K!iIaqGE@V0or2MogJK$%Um zEw_;TIAT4zqUS>9pg(^JH1D51rw)E}#jh4}C&pQgK8VkfJ>|Vht zRzp8F7#x$E7mpWyFIJ<7@owdKPl-0560!n&3|Wd$qh;j*Mo>BQ0v9#H>RoDfP5d{k z<--bQvQ4`Ce;&Rm{J8rY_tb}YsH6hR^2fX$_VY&Ak3N5m&tC&ZwC&9bu;m;(4zEP_ z=kAY%EAEdu=#OM$Y-{@B`MqTzNl{=4)L~kq=&7?cQwLRn$%0C{>ebWnh{l%U778nmVNTVn1DrlfiCV-~Jh zs>CUrWI3V)nt-Wd$Ql7De4i2wgEnl7)p@$Mxu&b*V7OY63IUbK8Wku|yj-=m2;cH# zk$9?0T3MCH+|LmkSWKtGU57c*7tJ;%hJbUTYk4)L{r5#__<`UfHpl5Bj8Lt)|508a zLj!)83|vK#Ka7U^88U1W#^*mXgTZ`r%4vR+aZ(ZJ!W)-vXpKa(aRK1Mg{Eu-LwJw+ z2M@#&PxXILb@Tf(_zyO`W_irJ9Fvj-{h1Z6CCLi&dU;g_s=pfVj9PC?i(fw`U~0a6 ztsl75l49tE56~1gLW0DZi0GQ8<@V0)YCezd*=G(PSQ}DeRC>l{fDHc ztVc$R5m6sdg{$En3r`$pRFM6sWi&0S>3vtmzn0-8R0l>MG*Ly6ij*>uFUj=q3uM>g z6_7YRkj(@c>)2*YSWXgoIn0J&6bh_a9K##co|ub%Cfyz;L7ik+2)YDK2S9;~Nheqk z(7q^vF+*YX8}_{U!u&Efo>YpPqp>Y2>A_!`p2o=I*0jawMg=O?iI}i8p9AUGCfo{_ zDwflUryJAQW>{Kyz@lTai78o{7p>zJoUvmcEZ|o;1n!uwXjY}li`pepmnwZ22u)on zrxpAYTvj>+Nz~;>SvpXDF|{i(wZJH|c}k>f=vMWtX+LipaDRSL+C~!xhLLNPVoS#H zGz6*!GUkM#OJx>TAWu*xI?VwNX!TGZEY?Vo5oOK5lVM;LXh2VQKp~6TQj(xe5CQ8q zFQN?-v!If4k^+Qq4%t&YrV7Z&@W7z9{eutWGoXK^MgctT3XKcD=EiNrnCYadDbOPr z2jxi`>ubFQ`4u!jz#OVdpE0VUTQfKV)@(rP;u@gLRY+#*^UQ3Vh-cSpwKo-p2U7ZY zZU4t;>~F+hfIhwteSD|s<2zBSFGLS3ef>VRm+7P0emDE|d2jLgem>u?6-k#X4Shzj zPQe)Rw*(Qz`IJ_%1T_0<>F5W(2EPOXiw=nOU!Csf5ehg1M0f#kdLqdZ%>*bu4C2@A zX6mk@A>_p`r*~du)T}z@pRy_pQl`E9lD2@apwfV;C`yPT1Hu=i!j>s}R*C|PWXRFSphD`_>B=`q)@dI#Kh}aP%pO| z^%g7I8xqN=mte@m_AO*5v1&>hjV7b0v%cO9iCy}3pbive9!$#{HYD{ZFM8z-7e2dT zHXITUIk9^Jo)6%!Z+L*CIc#b-a4w2qo(Qd}94}&Kzj~hg2jO+$%|Xvr+`AhwdL1uK zGJ7N3ph;%9GQD}|C2RSL0G~pjb`Yc;j?gywW%jvSe4gj?Joa*h-~NH^e<-#;&-Um2 zc2H6tnk5(%quGYO=zs>h$cLpKpmEJ;jSHhyY!of2;cJ0DBtbfx;HH00m@f=|U>aTq zvRsDCM^F~?Ytg(mzt(7sac5B#A%IDYR*1bi+-uG*u6R<}68}NAxNs+HfW^{$1Iae`x52hHL93x(e zn=5AGftE=>cilBiPE)zw$;}WKjOczwIF~eXbwRr?Q;B{qh@p*ij{yrA&gPu6#h|Q# zR2jPiF>DNUb-cIK45b40mlFBjQQL7McdD2TXWl<$)~=5 zC7+t__FlIAl+6d+vxsN;U%!f9zpD6E=H?rVZ9Gu!9c;gePo4P|KHtK3t#kfXw%^M3 zJ#4>|ZOz=!G4EkpSA3AqXY=_GpAYey_I<=8QO{F7?7J#>s%6&{^i>QQf6tAWuE-uH z?8(GGCPIt#Zk%MSFL0-u9@Vh-kL5N&^-CaFQcr)NQhfG-d|-!cTG(OT>-5vzi@WKoUtM_9MWu|NApyuYYosx*O({qq&5%8MH0k1~ z@tVLZF%54Z1Lh>(DsaJ5ry4e&K6W1&p1TtuW z2W-8UjLTY$9a7MeYO?sn610T*k45sR?$e> zUSpe;vx6OM;1iMwKiK3{(OBXSjo`OX7gsagBsgZ8TI9H3e#M>}m|SOEZOPaWtE&!_ z1Ez+yQAkD^Z9YF3`dFN|w0U)fgFlMYep{Q{dsz>ai<}ge_hU>%sQt2s&!OWg`3PQuFok!CyRPriM~9H41#HE5lVOVj3)l zsD5oLqg;a92G3}be}z7luY#j>WYMc=GankVC;&P^OKan@#o)AOIQp@q^bx;Rs?;!& z60>u02E{4lQ5+R5q9G#PqroK>IiAl;-fJw~pgG_cWybWgzy*@1wHFXxlv}-l!jl;* z2Igx{bh#@21{zqH0>fLYLoha9&Q2{gWi2BJurOz$MfD#~l6pP?%9DskWl@y6=L!3_oQTAu=p zWH3P-%UFlQ@aYGbIhLh#Y}D%5oMds%7QWT52*1O9)IA@0wLFhIl-6;_q1Bn6qaDvV zwBz~O@qF!g(EYS~z?`ZNAi61{nvD+2sMj1B21YLe`LONfw9BLaiESf^44(_Y_L?F_K25HiG}H zVl3tOiPCh&7`Lo->&1>DZ-p&oxYrmlNsLE_N34WQXQ{)WC1z$JJ{A&%*I*kl1k5v} zv8my!hcM9h_EctLHgGCox%LJ@Qf~2w>J@X;CD1KVT9=0d>l)ttA zAHweopNCFpFvfnKLGcK$k74mcT#Dxc!ewF&1p3|^912UxYUX{(Bn%EUaP-)>y=~w3 z93k#+ilOLydGvg)@L^}cK~BN)VIK#R7Cnr6R9{YOylT|LXc$4J2Xu&O6rsL%E)*%# z3@w|IW7!FEDi#Thk2PLs+)zx(QzYsvmbT!}i$n0=8AD$5;T6a${i2LHno}_smV5C% zrvArlX2|he3<no207uZLkySh;Ss7zYn#Mz9 z>&X<88|y7BBeO>+K})XSS<0h!gKb8>W#$6tjCx%Nz2VW#Yb3_IS-LVu>P%x*1VL)a za@}Na#np!S+ig8S=#Q;+ibq<-$nHI0(GQB`NzF7p z(8>D7q~X~uR)~DpP-Y5z@SE2g(Rgi@NtiT&l7hG?OcJv1Ms2$5ik_f_i`48hYt`kH z9#zwO5KVyjO$efE3(aFz;lV00ZEL}V>2<5#O-NpZ7COJ-9Az3)#hob+iRRU55P;|V zpV|Lp_;1253wG^!Ki`X-{Q$53mDdkjgk7^QuLSFGt1V`yZS#o-A=pvI@*%_H5bLp_ zE<|2#n3PHkis-W>!7ssSz`AtTS&(XAcEO>=up~jnUm@+BZY#Ix66QoWAW|@)!@ypE zfkA?YdJhZ-s32evHWbb@*+$zN>wCzUN!s#6^C(;mj>teNM3AWWf*~qjFD_U7@8pLY z&ozp`09Diza&C=nJV{PBV^-!G=oX8Em~LiWK@E0|cM8M5ZdNvEY<$3cS1QYr=~V>9 zmdpmw$R|Lq7%fB7yPbpvp2*;}X9}klJfs#jncO^nd||xKlZoa(nwNl+t@1)@uO_&H zM3OP4v971%dTpcyhkYs<Z&D%fVL>kvpm*%(@b*iaQLlQC= zv{aHYkF$c#hk~mwjKQbCq|3geL^E?EvDh$MMM}9H4E{3eUO){vyK|ER|Brh>C?w2q-6n>e~EukWQX!nq(uKwYHq5 z4Z#yTih(m=m>FQ%?UbvTTsCaPvXbBhy!2gIzTBuqS4fBtdG|%Ix%5!)8z_+#Y#qruJEuLYVVAN?Ir*haMpR;G= z)RZ+Xj=qQgQeTVG0SK0T)*(%-o^5FPQWi$yE=+HG%oIa0@WTqEy?{EuUj;~bY}zAE zN+~XgOs!(MHTtRv1>SCwEXwbItQ` zs!pAu>U5o+X!`W&(@isUGiW0U4&VTZT%14!6+sZMs7M?TjR6P10fKmgh$xSmc!RW4 zV$|d&Ah~MPh&VhF5fz6g#3V|e`}_UhwRY9fdrs}ztJYq74d3^U|9AKb>uxR3;~1g$ z6Fd@A2qcFS9-=il3ZI2fS|u6NFWd(BJ&P|VGqu~>F{AY>u~a*Y7KCkia1^AVRcUCW z7B|qMg>TzLQMmZvRP%#MQp*jg?ly$pjc~VlD)EpiWrfY;ur#hNW{9k1ZZ2z_yL9G} z>1Z~yoB{3{(0fEn6GB3VNmL|NGaH6b*(S28)GgPNz@;}#TSFK|S01B6&?bYP4wr*DZz*%7+^W~T3jN4k$w6e@P z;iSN!;>KfaQzs~~dW(FpWbK)BzhCknVf1qp)~aT{(hXdQ;9PZ6^I}aB7#q)1*5EH+qF&$pA`hyavto4 z?V4|Ns?+50&Ysm2HH1|9u@coaHy_y?ACVJ|SJy&$&DFYU7RbB$=;ofgiYt@%b*kAa zyw^QQJkb-6Q~g@zZ~^u_a6LJ{y9{~IbF!c(2ZJ`t$A{>oO7juYREP)>%a119zj$u4 zv5{112!d5TScg}13aXlz7?4?1M^F+8^{2PJj%VqJP$7iCR|{5HSix)D5OogB0VgT3 z3y0Iik-?2Wne?p{3B}0Z=`lmPggz#Js%WZWs<@Gc!l(%`3@~eVVYX5De$L||P>Bnv z(hMGcX?s3SHEfQfd$BTI2#%gN@B$g(6jCHh1A`sYk|_91;tK=`(H^_VNUOx5l`SRk#sKTfY+I zhRC7o=ThFH18M8VJb9sds%>t~44#Ra+H@S8X->;1q3hr`cAMJ9t>hv$e3{=_$nY=O z)hecRtxy1SYia1Xs-q*0R+X9;5Z8P?XSIDd#>{ALk`~TM<5i)Lo1d6)RtGx|%>%~@ z!0zF;FoiK(xGCRDhyw`G!jE`j31Y_zh#21)`GVy{2{elktQ{Ih#Im6oAN?-bsS6_# zF)1GIzYp9WlU7BAIb4R&MIlO)8mzR(2{w z#6%0LiR*QvJn3@WPGS!+!2@1t23*-nyj)4;kEJVrU;bz~cfzo?5eYMsJsXwPT5Bv9 zRvNP;$#B{UNv^A`I)jK}aQe!TGC5_gQ075?BlD2OWE6UL?cS-mW6Z# zMS_vR%OU#R(Z;2%rP10NtHM*5R_7^i6-Ij?{42W>tgmQzrIBdk!^1=kJ$8fEkwEV- zj%lteU`2%9o2J}cVogi)3LLPCJY65Q#$&7rV7)BXO!B9Pa%bR9tRf?fhxpJ(LEJ## zwD>X=a2=?XY%Ta#tvmaN4B)V`iIV!&EuO3zR+f$izqyvmpeH_w(-&lgyM%-oTkI~P z)k=O07;?$_J|f?AtQjyY0q{iRm}ZCAG**))fc2(4WtL4SFDTYNH#3j>!gml)G(-rx zQB%aACG|W>W?Tt-Aos51ui?Q^aA6cip83Y&S>zKFXvkEFhw1K_ykx8-R%M=4 zj{+H_{iPMinDE=%WVVzTmdohxFeLQr0qPB59B@xv`n`ve7s2+^}Gqa-dst+A0vU z;Mzvt+~41EjyDNMV;OQ}`c!%{%@zbeAcHiE8-kL7O}~#C^Z(d?KI^~z z;zKO*F=&^1n_~X=aLIcxm)irj2Wz} z`BRBHXxpF(Xy_#S3}<%`h@sWWVs!f(J!W$5j1y~Ah2x8qXD`i?6uopoC#7Z+O-c21R+5}8MNN0LWN`^e) z`JvTMV}$hR+MP!9XP7swE+2F8;$s)bH(hzum7B&a!9~hvQ|O!07KhWwB{>LxU#022F&ki0U6hZ_bzPR`772$cAox&-{ zaiv*3dvw241mzuhq2S-?@z2&SSRCj?&w7N`$#DncqJ@G_=h zuE~|_;qtwann@wIL9#a*zTY*h>3F;bf%{rjx`m+6J)9 z=th5MU-5JRw-Q($Eth++{xNTahpn(GXJ$g zfF_bggI(+@<`RII3rg4^yy__K18Eq8tIR7sCR{n=E{_<@Upi!|lhk0TwYV_^vCoA4 zN{=eRHXb{l?~X4%;o>S1H(6;6!sI~P2VYhtL^AXoxmZBrE-xC|7e|gij;U(w0+pXg z1*R9_3cN^RpD0^wGC|{o&EpN2R2!P}meSMmnjT&{514C&lp&9y7yGe|YROdbN;$t> z8pt=QUqpy$RpC;Z-q>=?X~+i0v>^IKVxaZjN&^#s2V= zP9et%j@l<93H>ow^u}^Yk1|1tJEAADrb)U9`Z&61knT# zO8O_GOR7s-g%ivjcgXZKAs2NF6F~-qXS&{NS;8VUo{i z*aw0z-SgJxFJ3&;=m%-YFRd+HsM47>t}pfSh+6kD5u6)h7xqdx*YQSO;WsQCOvk%R z^iWusuB{!fk=Sj~6}qWeC>&z9HyYg1|I+4@dbd2(yGp&wC5!~9+ANk|i`tU-eaA)jG*Zvea zSID8wHGx}m8dGU>O0h$yh~X{U$|?2CT#Cq- zuR;=%rW~dRaZ-2ELF9Z%Qy$B8xPk2(#^V%La zuq0AY(^}!FOp^hU1rlpNe4KC?DR|LRut!8WiXc~~8zpxM32Pl$Bt|P^;%!RT+&Bo~ z5;`LOXn#nH3PrYZcX;OP9=$!l$l}u*QsAC&D4v5WJ!HXNwBSbb@c-aUsjH3s6-$EQ z8DF^RqB#N+ir~Xt@E9ZE)5mbzq_`-m=IULwAC}8VA@cbGY-r=Y*es|Vm_cqyNF_=& z+`OR>;(QKPe{buu9EXfdO?(Bm`vbniPjyf6*)8_d}IbJ~y~URy|b`NCSV z2ta~WxIvYHfhVa;YsCUMBGHK5*hX{LUk3>HWLVWc_2%P$Gq19dSS6*E+_g?EEKpq3 z{VsO6Au3if{G?Vag<{w_ohoWga`-Y|ZW*q)?FMBNlSn?0YZ7D6JG;+SBbyH3Yt67( zPS~l0l#ah-vD>Qq`6)dW)DYAE+5+Q}X%Do+4CtsuzK3k1!Wm$g#734o)M`rx00t2FV?k7UzJK-+uGg9KOKS}o0Ap5uDTkCZPxGcwbyB`X!J^j zOs#IE)Sdv6R!<=q9;9-xiPAbvsU_YHPfV>OpZT>S+C3^T$eBnBWXVRF7Zf?kRV=gS zNATa~$K&ZPFr;dUnb1Jersrr`0-qD(o>TBM8q@b9#7J7oE=p#ZE^0(gljXqy?QGg~ zkj=^@tkim}4fpJtlZy=~X=DKsi1gr52YkfUtg)t}!WQd1rzx5G$(Ct}%jjSve-IaD zqj^VlDMo5;OfGG1UZV7Ijbtl&KBNct#ug(4f(2zoF2q6|?vJ6do$JpZyp(c}FP=qg zzYv;wJ{Ha=H_r^_`AjfRs;Qc1V7KqgtoBnPwM>-~kF8+Lr;tTL3`d7|^t%^E1WiN9 z?}h|t;7CmNm`8$>22w~hD#3dW84Dr0+>uCSDgp&IPnvi|G9{H+^XKRqmjvF|vxxAyu*k+DX zM-BvP`oP-J8WS8^O}p>Lf{M`|EihAYuPuEHInadEM!B&}(~^TA1xCU@mpEVp@fSMf zVQOH}PjAr_*O6Sha^-k1+Fx0vZ;u4Fw1m?r+>Y8dxKIi@GF$LnVd)<_v1A3B1CI=n zI^8?izevC$Tft~yxHI46^=&l9564B$E8I9rkhk8wlZe!#BPg2dXN3_3y6feT6KEUG zwwqNbG?(1!FW+;|?TB>(2h)SI+x_X@-WI7@l#UQn8Eu*X%zz#&T1Cj?porjkS&>-g z!dcUqD}^HYg#H?BOf)ZfCXKOUzKmoEOapJb0VlxI$ws0-Jlw%4;CereA0JbNre3&S z!z^A_1`6UoI;SpIW@Y@IT1bNvb;hQ-X6OJF1||@36=V*D{_s1(4O=$dM7SC|ydyvg z-uV8AMOk3itmni1^LKk+71ZJHjIZAm)#A;yUX&X3$h+h6Wk8gg-yhuC`yl_{)q4@V zUG8iw)L^x0w##-BOHaf>r= zkwWL;SG3ghue)2=HYQ?g#dV-;IY74!xVTd25H$8GhF`3|Y676rV>$Ji_hv=2!iEz? z)U@_vZvCiv(I9}}{%)a6WZO-LDbmLXf!F}5jz-4-8s z@&mRqG1v)-Xn#W}nC?JCBv#Ii_RYEZ)+qs9L7UW-k9}+ydu@4-Q;b2SXz)eb zp_K>+uE_D~O0-gV3Wnd4xAgY`2F6q#(6-Nv-AWl|Z6R_bEG@%8T0eJg&FgS)n2dwb zTzYB(P^^!L&uDk~KdDlxf1i;bA`nS^fH{l|!nklxiLK*QH^%t8|IxAYM5ev^cIuz31T>ITRD6yy&zwgg!Y#^YSrkstn3!U%OrliFs5_N!`6JJ`q9 z4%_5J4KmV$q3mi@IrH{g_an_JpurH}>AKxA)!a|Kf6~(D!7yM2L>ZlnL*q{Zf?=?s zHxi=fcFZhHn}6*$JOt?o!5k_Zo*4{py6q-fO;1N;5b-G{TZA5=>jJnGcgzQKh~u=e zH-B`vS8)X9lvdi(5xA8zKevO>qb`qR;Gs!Qf=E;;VICn#2h2n;Ea$P*YS;`p)egU zH2nH#{`Na>ou+&RCm&9OLW$ciP1ly^*X97G7zMc1QGjZp!b#ftfCy{@_Yzk_3q&1M z(3=N`Y000xcu1+Ssx{p~Ok3f~&9D6wUZ2LxmEoRAPT#lp zzFUsyeK(Z93+3;!-|aoN_ms!tt(_}?i4>=}tf|6HD_Nw<;N!0o7{i}9F(d)M3~^Wj zpJbWst?h9E!<~-~jT+L{MHzI99H00fEr9~i`lHKpQ+>Un8Jt?yX)h_btY*MvBCZ!s z3rGyP$K=$%7bh~*mSzo&p@dZ+miUIJ z;^cG`ri~DXLlX2it>~A)J8+P;6%x?cv;tiE)7W7!%eiFDQ_{a|T+D|eEf2q^rpDT`q3eyjE^nVM!GXyHW%b0%4H8Hr<32 zjNQ@npiFM96~~RVQk0cf)h7$0MQd*Y@5V`hGJs{r%9i6;^J)g>B#e1@C5xd_UW7 zH8Vt!ZK$}UdRLq7JCYpN`krKsY=xGkLkkBh0AW;Zn-A0u_d?H+!0qo)e!F9E<-`$^ z9%pV30$Jf)3PQj77^QKF%ZmO5sIBne%EdC3!X|%pPMtbw)^x5jgwn?RZqDc>xeS-x z8gK11Nefq)#GuxArB^;h02D+a#+Xk00{&r6BOD8|PwPEIBFdjR#9~DjCm<)int2e+ zG6`M@!9g>|G+;R1kzBx0)FF_my+q~K25Y=5knJ)@r>;O*Fc3oROJtA)$ndyFv`HgE zI6mjHS;DrQiNoecBfwkWU!8JQL|XaeEFfJU*;w46x@w`gx@NAryUy*DY|sJ9|G64tOUN{(rUhj0SYsD<^_lgBDxk zuJcX00(I2e<|egLxX7`k$)i*u6e&r>mD(J6n@-ss542%tfdRQgmgq7YI^#pZet1Wp z0*4N1X!k_uNA7#k*e42u3b>g77GPQ%1EFK~^ub}wf(g0$3Sy(Eh^~OA%t<<2id{2x z2qkcRq~+2g&Yjr`<}=W@0Phc4(iY}GBhhvG<4?U=6Flm94?99#P30=y;fiUsqUq=b zWuj#T$skmgiQ=%PHSQz71{UuX{fwG-j_ABi;I0ahm6g!w<%S&U1Vbltu350G$>6--x zQ!#G4dzX}}=0!eh%Xx`Na>N-x=GgB0*I(X$Tl2n^zLZ+m|x zmjUAZw@CIsL$X(59f@~r|7B~(Xbxx_`xAdOTUsZ4&?2eGV}w4Ex{7R0k$Y>I$aUEL z1A?tv@2sWWh*1F%JKK(%`6<)1D4X#PYe zbTvguyUlvlYJ_X|avtu!Jb(y*D%VkU@N>h$Fa|T|#hTm*$Q#;^tpU(tz`0s08=;_1 zgI)!tCsJ6G%o^fy%3KH~!ZAq^@GQy5geOuvQ)$f8Rhgkup7hyT%94lF7Z|mwlF0b! zc#%A|9mMr`X<>e8qD6y)k;MvvDEDnI0=ZPK2#l2!2e>3yYqU^SVIn1HabC!-OF$Xjl$2djtQ6)e&GD-CKQj_?Uc+XYRrH zS-%uT$pOil;?aT^`y`&5brlqEDCST&52A?%(_jpqk*iA0!6Kpy_}n>kl5E%%=xH5s zE;wn#x-{N?o6D%8ckqD5__C~D(n%P#1;R)aKpbgyS_sDn!Uf!p;w_QWEQPZc$0lnz zw^w>6G7Q)ViDlwHa)t?Jl5kyg-<>-K-OHcp3&u9rKYab8&EKH+uJ%6dq27;@4|{8p zPj7|gZh9Xt*z-r({$aL%xZQpy+wS`b-haZp*N^7|eQ_g!uA#7{yG1u}^x+ z={rZsu_gkJ$8qA~f}U!$*#dNJP=|xHuw-ZQ!QsW$1!;M@7)_){-XU;^7As!5!nG?a zwbQkvl89%**EWdbtez|`JZCTNO<_raOHt4|FNVUed8Rx1o={_sKVa`DSiPP$Z>BVF zzBg+Jp?{C_by+C)QzSsbE#e)JC)8n!C}Mdi8C(o9L!4bFSejtk;&~<;b$v5tU|Njw zMLQf!F5N;z%@iydQ9|J)y7r(=Y(oYcJDbC$H8S$B(aNA3(3}Javpb?FZz&y0Ky1$U z*KpQ3<=S~d+kD7z%fm(8Y=|3|gGC0mOkl$GXx4^AH$AKOEZuU&lzO7ltQ6<@)VcZ! zp;`T6sn5L|=mi-RN<={5W=#$*9j{!7`idZEIkOKu0KCPh!GffxS=Gil<>Bc~Hy=&3 z9bxO0KFlKd^O0F4Da#pdo!K7FuPjs0x-f}B$g}tbk~YltnxETVTwh<_@nXavy?&F8k?=#1@H^k28pOmp#9 z9`_aZt$xRnO^oHyOe5xtlMZ}~i_L5@d)wwOv0NW1Rx|*uGRI^jLS@Xf>@(@_-Mx=~ zNh7S$76LR(>i0zrpm(^l98O9|3S(lIkv1!o8v*y0(PML)7*tmGxiUIGO=YfS8 ziQ!h_m762FooJsX1;$YcgrSq~)gJ!nvisyu#)CJUGjK1Ke}suGQx%YFlVmLPN?Hvg zTE@HU2kLMQR)fO8zDa3MDLc>twr3VQ)?mR#kC-R{Hrz(E4Qb>sM@29L=L0AQ%_TKeBZT_VHS-tnB`-7cc zKa`_GeEvU^~P@5upZ)5xIR-7NoS5WleNb-h{x*wTA8!tL28m_CV)cqsI z(x!Dju78~V3IGui3aX?o>jiExv-6<2T8wAHfoTni@0AEqfz=jC^i*nbRV?E$)J#gK zz!LL8!^&E>0oy*tNoo;_tJou&hK{$<4D}JquShw~Xr3_#7G_sw%W1{*iTF2HuWjPS zUPFX@I{vEu>SR1OvfaWWY`eI&i%#(bN@#dSZeS~<0U8FahCK&UQgo;yO1~`$D=EAE zkMI@K46eo)^}1*cNF%5QXXoREDGG_IXdw?k*CrcZMNeZ|Vsdxn6l~tSBOnazhq?l-v!?87gYs4b`xvNHP?qTs zPKg1$pZprr*)1r9rtDwvzj{B`e_HRUwCXX7-JZeE;`NVtJsZk;RL`8>cl90xHQg@~ zhV(0AD{{7rxc&dlbSq0sfL8#on{WGSwHBChj+uGX+Fv%sDjO%naQTx1-7z?L9S{I| z+JtTXV3d_XPMy9rf8?> z?|Ixk3$^xzSLCdi9~_avrb!)hl4!+XKudNeRS}fC;1)3hpn%`U22r57-+MrOps4Lg z#R-?lNpz2(fYr9@?*8?E`tYmCZ+@`%D+Ht-WG>#v9Q+zD*A4w`Ua9|jy_pBEKhfaS zY_a2ePwjY{tVyo4!Y9J3M$y%i!TXwO)4B(6XQrJ7FiA>|!c;-eq`D8!?>E1l0`ZLY2| zk}QzcvZD6@dkB0A5X4&H-V<=n5MkG1tM>l@rJdAVnM4aD++grn=XpRYboTSiei7@Q zLh3~NShg3Nws-wc`#;eCRu=J9LK%_$WL}?!boyxTe?~fe6zQ~&-rFbodN0Ivd~`P| zrsDh98qm)~@@XA8fsUD`gXp5{*th12o)CI#oK_BKOY8C4&cU8#0(XY+y_7km?Xp&J z3B%TKK4=7c1ZWh1s@iU2pf!8QB3Ol+a+!`9)8_0kUU$|J!Fz8-p|{=s4Bm{P1|dQU zDm4k!?0)Ua&`=pCj%j6Km5`KfkwlAFcX4~LatsTwmwy(~`l)lmG^7c~_}05_9naH| zZo9miz&8E!Q%K%vT*1BqI_auhE?&N9I|0fcC;LW@V!#+>;&g;6m4qqtDHw$Q0OCGN zB*&rmV5^0lW!nGGKn&vn7j!LhB>@z@H2WO{gbuc;H++ei~)ugp@NDonqq%k80R4mo}M+Z}OM3&R}wN*Fa zB~%Jvtu_9d!(JTWaE$595`G+QT%{rx(H~3ttciK(olbQDaVi-U28=Ucdaz6ewEooV zf8P7~!Ap_wU;7Z`KIq*ayyOT1-+;h3AbhtE*gjzUezvc%Z5uwfAIP1l`N-0*x=~52=}?j8Y_rXZ_u;1U#c;D`GQFehw%{zW+NV0$%4nu&Ht>=P zCHR!UA_67c_Lxje2suJKH7vsTL`sQ)A}<~9&{>`8Cw7((<`*-MV|qR&T_^GicZL*) z@$FY{AAe6PW>YRcIXpg`EG-Q|)4I=!J?mz;SvuS@g;E7#FgT`TXUZFAh_) zPoy{3_c0XL*d!@S3yUo-oXy(gx6udYnavlndf)FdJFe8AC1!8=X#KBIr+>|<1jJXk z;}xfNywV-7JhkH+-0=;kcAT_ZY)|?v9`P-wj`%O`_%Ek+{FXa@>(q|_>W=?v=d?%uy|KLKOtkT62=5JTrQw2f9p5@L&#t4AWWodY@Nsaj@lr$;vJ}0QS;nF$YSW%as3p=O2|~5Q35vZ`W>(nZ z8znoyl}UrD1V2ROTpuz+_#odkIzl_1V!&FT8U~it@)onD7B7NVQk#)*Yh|Nwy)>IL zIH}#knSxK1bArJ%n6fhBBz>MN(QKYzt^mF}HEOOVY9R|>nj>7#mVcn3eF!NTR?_8d zo-@|6wj`>u(V%W)b$n0zmqWb^&6KnECCxvfHgdGcsNO~asC7IaS)5qayQA<$+H(6X zJ~0M0OmpJ^>^^s{kBx&4dcIcN+4IzKt#2cDF}JZDl)nE1`J9@P?dyNr{CxB3-Y@s| z;jJ%%r=HL2OL*C#?I5v!dL0}k%cGrYPCPRjI%6Rr(R)plh4wQ0E!NCi8(nSnHWXT9 zoZk_YMqSEj&Y_U0q?+Tgn^PVc=eQbuD-aXG$1zsv>mMhSkF6W?<)|S|z8O{3U>A1| zh@n4$kBfP5ds(kSG!*199n4h_4W`bSDOxo;VYHmj>H9wca9LbkGS?eTi+)Vd0Cy=E zES_&RGx>sCIz1>qs6vOC4;9Mp(f9<$ZK!KRYo}I87|LRR;jve49swnbuSyLms~ulp zJx=y;BlW|Bs7$vP7q^h4Re8>pM!OUH^38#N^>L%;k-u#YK^1O=vbcU|oH_&_OyM4$a`S+&E}I(o-Y%cu7~H+u4Ok#PSA zWvYaB``K(iyWReLw%zwU-k-<5XS4l>5e zRN=?Z)4X1Ll=gN%%>1U&q4Je2HvV2 zmDQO`OOq8szGO>aH4&ZD%tNK(n5oZ^chAAOh){vKAzcwdfEZR^b{juzyT1UuhdFl~ zKg>qWbGD{am_=|YTQs<&(a~QiBZdpQQl!}eEpbjt6o{DdDThPE@W{$!O3#^fuuO!K z-`(AVOkxC=3loDgzqE%#wg^~@5=agpu5U;IWa#W!$ zVCzc1&WA~it0kSt&?rvyZ$+hr_m0X&L>{WF3o8_L4~enZO$1*j0lQkg*o60T8H4U! zKj==#O1z52#O4AHpxBel+Ujnr$Enh1zB9K4?*a}o*(p&&mW{UNs;04|1X83efi752 zvVjK8u8=AUD?+E8zYvn9?Q;CvW29howsgx}6Uk*NlM)S*Xr2co1Q`fd@wtd4#P&mp zjswhz&yyZUAT0t}g64Q*!+eLdmd~1EiH(Io&Ah-TKi&Axlk3~emix;wGq~y>0Nf|qT$s$$ zi4$l)%$5eY3j~Z_bKF3%F>hLy$Xh3WDMJ2y2q$_BA635tX%Ta$@-dRE$JjEUQ`}SV z6^#ImF~n0zKPW@JcYOZf-UHx*xhwZvan2!tGOIYuNeF>P5US;gN}wK-pqClUtRhz*eHfQVfi$%PU|{!@tI;X$bnEtQO{FIT=qIYcV8OiFw(CYCX!A7D z3{LAB>~?6`6kj719)n1y(}uODf7HCE`H9{ediOoldkK9unn>;j((P6jdI{SvMl!qa z4ex914>MDbdEHXdx$+s}2_dBKk7ooF6^}@w4G2|c0}U(jwc4zM3iTXCSVqEXE+pwE z(y~ObzmqWNxBOz8%;)}-)Prj~&b9P~C_>fIV@Rtz(vs?5da4-6PityI{Pv-T&$CJj z{H@@dFeoglNROX0^;OjDdGhjwHyJ){!w5m!RRkG?;2~^lpfmw64xVr^>1I{;zO`+u z9_)td;T#I^?zCVzUApH=VC0rfCLp~e7^t$fSO;VHM4v6Bt#~B4#rWl1|A|lXo%?|3 zxDmE2a%V#M!Di4Z2u8Vb{bzu3{sT2sN~W$p-8!m&#_P4bURN{Mx~>rcCo+RSowY*a zTYK=@-FH0ia+A$Lh3l!kX8km8 zA=8>dL#RxY2(cC1XKSIqa{1}wGY5#W7;8cTnPPwez7}(jj&jveVo3iG{)r|jrT;m< z;TdD5vDYfwQgQ}S@-Uaw5Wi3Ai{P~vo7Nn*@qs!ge z&^x_p^ViMSK_8cqq4rT*<0a&6FST80=S{T0*3x?`H1jqry^Z_n>!|jt=p-I& z(atUegTHCbGg6|Ev&9uk?pG&F55o=(l*2lt;%bHdEm9mJFBLc{HdlCv0u`|dP9)i2 z#g8eeMnU7in9V&R#?pYXxkM#Y3QeFw5iAJEL^C6Uw$JPsnujEkZh%?e5)QHR<^I|- zjr_#oLvG0i&kbAJK{=chtgWYj(wgAn+*14pjHI<5%WpLA?ft*3+StO^b3)H^y}2%z zjqZEwSUk03*&WNLcC5N%_0*1acdWYuVwwq+6LOMXTBr`9srW@9%@7*u8s%zIoU$lX z*#4G!>Zis2g89wNsDL-g#cA#OsNU=?*<=3ajlPP?U&l873Mm+9+WPzW+L|1U)?2gaIa zMCu8uVUAxwT~T;H#RCzWDd!vmlgCG!joO|#1w3M2QFA^fLwr8WuLJoPTw7L+6M0OYY<|q~!;$6I2mRZULOSNCmoUCM3*MowozCb*sNu{v;0kgsr|GWUw+iVEE>aaooiBp4bC<=v)$ zJL>4N1quy=q^+*50Mp@21hO&(-#$?8cBU4P7+N#PF;o(Eb21h~3?OSNC0RYwE0r>} z94=gf))})dC@~NzS7kU|zVBy{TV6;I+aY1iyLE=c zyNKJbh%LaIkr6hG-!nb8Ftres`-X_^cv}4d9)x?N>shu7ABkHIC!f9Z&a;}iI57?N z@Bg;{HO;p+gXCFstGnF`EgMpP8LzM5<@)ch)K)t!E<=tIUWo6+UomRjK`S#_pE(wg ztr8Tg%(lLe=M6G6wps{3)*1)T1n5aF1ym`u;-Vrcl-8XIuyYr1d2v&hOLjudW`~r= za}wKYGeja)6|{FBZ<#&=5j!ga4_grTxe2xn1DAuh!O+;l7=l66RDOGCaBa1phalR4W)M*{xatJo=%!!D3(&j!(FNs_r zm~@;l0X7G_`<^W}D2W9!f~8)X9{44bRa(G>Ln7~>S|Tuzlh@biTmlX9ivF#`4byIM z_H$EAeJpz^Db$F3-P)C|IWRV-sz-3&?`YSVea|O0r{JhKYMf9dBe{1DxvT}98lUt5 zatj8I$iWNO;^B}9h1rPI81b}byyPM2X%~o;b7Fc2f9K0Q7`MlTC!^sK52~@5nMgjA zr%!r*nmshV^@l&T`B3wH&1P&(Gaf&i*K>G%9&)TeF#`r^%wWW-Gg|-9IY8 zMdzHfcV%L!Yjtv|=~h`oM#9#ji*Z?szRNvH#1N4`BhrX`3M{c)&xwlj8LuPamNgnV8Htd*MgxQeLg^xJWr4{THNqb90#|Xe&w}zzlygdyCRc zTn8gRG{s`#Ba^8|VpXLWFq#XCkc|m^fOV}|jQ_$36HN?oqeSEem^39e6`v4ND<`>V zSwfN+jEW}@S2m;R!*5zFAQk35cgr0&pTismiFCCkNsea^&9-A8g_$A_jsaTeqCqsi zTbL}5v{k?o4#pId`Jl*v5y{0~tc5t5g~`go!t#U>kb}L+QMJ$3C`%1~^7Z-+eTN{?tj7-KVL9=`DA{IVi znykkVp+^qlqxZJ2f2e<@c{}+WpMgzn#&1Xe&&75b^?nulf2j9%G(#^S<=gSP3?KRa zW4!+=@9$~ff1USV=L|je{RZ2=fri*QjKr-9;Py9611l5=mJYs3{SyAMn4>z54q+u< zC5*dOty_PrBz%=I8hD=pTLC^#^MT%35xX0*l0pPjoT=A0(G?sz|SZMdu{>Sw@$$S54BV|zLOV|CO z3>2m7sh>1oAI~a&+d_P>RDTL+HJ}=a4_1%#M=7KZNjHE~30@$pA>moZXnas0t>Ns8 zooy7u{^-ub6w@D@^r}+gSxua-?K11NaDEHIw0aX9UiplKK-43Xw5)CMiY;7yev(B2 z0;E`lAW*HOTxfVi>@)Kd8r2ZN8xsYX+;r>l6bhgk0W#n}8bf+1HZWKKWWY4Xij5_* zx-;f^`8=44nNwI5WDNB;OiZ0h1HqW(LJAlX@p2TWn zGr0a)`uUJe{bfl+!RPFbj+b*`=CC)5N+3!& zWVdw7*7g70`|kb^kymPOm9ERs?dX-y={;Az?R^fK;`1xh)M(a8OF}FgQ%`|ev!0^S3q2_SsU4SorMx*{7v z1tmSfFqegiM*lfkFVOm&Z7j}=me&kaf|fcFipMjf8rRk9ztQ~J;Hk~E;OehH7M}D2 ze|K|db6aHMZOA`5lQnnpen*XQEBji+z&83ZNv-AS-26&1Q{JJYJ6Y*QmZG?~&CEpp z)nsYwo*25yPKqUx$1PrpH~-B<}U6QwDLHY3S8OzsV9+xabz zFEX?cx)$+OOm;t=VXhdwR%LMQt~~PH$M{Ih=^>g53P6+2&4X^L=aB|RZVMwf?}G^p zf)-zJqqAX|wd8Q}sh*CJr@>jWisDm^Fc$K)&B`nyZj3>whnHw*$(Q`C-V`4R1t0?{ zD_+^(V;N1v7N;$-rQgR1v=_3tZgux~k$1~aLpl@|swE^+d2nAy68ix381&Y9XjoO< z3%{p5_u{&a<|WFiQPWx|Ig9X}GgOpjv-lbB{Dyt_+aMP93|-1b^CR5T6u07n3VbxXBbGJNh7p9G zj9q3`X~z&R3;7_RvbdVH0bZZ0a8rQR2-9@g+%}39gB!1z*eyDP&L-&s@1y!P?qPk* z3N))Q7d~P0KL_^@wpg)u0hv|#*W`tEM1FMl5sAVl)HNeBHj-gnxg-`&X|bNLO9`>= zH|%kP@!2s)8KZ3o*k+imp;4R|a3su&C@kJ-jf}Ez8)IcBW(?feyeg5JXmeYPQg=?t zBMrzRk(l}E{4!&O#DkJ>zW~A@TxNfZ6?020srAGugqJx~)WL>#5m^Sa*0*rgJGb7E zrc9~X8Bah|!9r5E>x=;jTIGP%oNr?1g&3d&HB}OOnU>-H1u`f?aSPx=LiKgpmRa@gRf)Q2+J@;fH7aWk#~;a25% zxEgbcua29ijCa5a1a(27bWq@9-JXE*m0^-;;Z~#;B(a@d`YRi2!~FyL<*D77i{;_+ zDr-X^c(jqSYwtA+(`ArZsEi*@f)-feQb~|11C{G2)sQ|iixh*QlrE!q*@uCyh4h7+yuB^^6-)pohkmkhdHC4fDXt{W6uEHmP^n_+a3!zkg zLsBdKr*k7t?XY=(yJkh1d?cBZ>%4$Dqw2xC5MDt`*#iJnRtZAk-LH zSp}Wh(l9wwlA7VCx}CJrGPUV;&xhRAPl1CVV5xvY3#L`ka&{hB1-~_QA2zH=Y>DVs+09B%Lu#9NHJ22~}Jz6_lim3FpWShmFhWOJI zDRJ$LV8%>wn9+mSVHCks=;rI2ziOU3czN$j;~$&fvcqc+UGZdkG3XyZ85#14_->V! z5aXZ|8xPE=Vr%=#=3xi@#2mmiE@TO1f{(0`+Om8rA?#xnQK7Uz=zo3OUHyEg^*){s z4$|Y1>zG8DM6O|%&tnD?d=_iFShTzj>_nEL)c(g7;F(d~6 zct-DO(Z80)c2zq^jOk;0Ps*4+i81|nV>ymw)f^5i;fBv#o7N5oWmyGp3vV%m=?648 zNqucz-68|X0zEFHwV<_Ol}f>Y60|Oba1!b!D_euc2pSAyC>d*`|3z|AXrwidH~04E zu$r`=e7*&iS%oyC z3OIq(1R~J;+V@pAD7Rn1_A9VEiE71QNS^53S2aUgKb^d}D~Jtfs8mgq3#3!2C)kJA zCUywz5Smb1jEi%2hd|tf08hMf(xh(dx6oq?9Q-^~gs@ptrt*&jH>I)ypO+G1u(6sY z?CD`(Of^2a?TDa*@xQ=kOznY2q++>bH?eGpgTc4tjorX0WH^n+40YQ>X7J!PB+iu} z9)LnaBT5&S-ku)cdOVq11?1+NK>@RB5_L}pbA@<5wpMU4CyHypDO-z+;QgY3Of7d2 zHQ6S)LA0tQi|9zkZ`OBrr(j6%f4}#${ipSxJoq-|?E8Xl7x%xbca}MORL}JltLMsN zsG_y^%4?Y~vxwdPPPV_3xoZ&|=dbe{%Jw^z-Kf6`9jpG81_}R_JOJeB-&A45xEyYV z7Q}C6WN<1~c)9Bx6cjo_r{v2lC%kEXLG>?WhID12FsFBWHP)3d0Dc*$$9hKBQe(E3=fN609%%I*mbq&<~4$;Rp=`4%j+c{0GHX4`$M?fW|KSNQvG-tU%&5N_?_IkycDQIS~2 z@t8%VRSU7rF}+f9RvGn)LsmyDJ-4gnkGJ-E@ddmRy)hG=P4m~c+>)>$b%us)cQ4bx zNrm8;VGy005HmK%R{!V&IKVjy8lxOiI)xCEV@>&4@+(4ba7N0ekd_-eDsF6*{wC|! z!(cklGE$}IV!oW4P?MoRYS|MlgHnYXiRUN{4-}|e z`^nJqr!uW4?-vI#xnq)GV=N z(U`7cw*N`XjDX7qbY1wgEMY;Uty?H`gM0ikKf}4^oGCt> zKSGZic2?`3QjkfiT}))%!7;={8XcjG{dq!hN-qs2-emIGm)i}rqFR^ch4Ns(x7<8s z@TdLX?)_70pPvC2{t>hL$GrZ8*Pjt_eI?NxBv$iEX8DCgTzPM{i85>xadrFUY`?tS z#@1-)JemF28cl2si!%99|6rK14xsFz_sZm$7SJX2Yg16Zf&h%ygCWtilPiUzCBavi zUe{w!+tq|hTjJoX#m1i3?x;4HN*$?~NEs}xtnKWV>E6pJ94@Yw0hUBtbj=~ni11cB*WqbX;ceGX*N(Y;?6h5HA;3+j z{#ut@arg0ipan{x$0Wwm4_i8J!&I0;W?}*5AY-tXFWquv#@OQ@(EdcS?2gQZNd}uo zm|#+o(gal#(r3SN8<$KMfRKG)GPVc^fW=Eb;=5Y0l~{}M>KBkZ!3^jN4nkv6t$sjo zL4J8EB^?V6#QqINi`B)&5Jg5C(-2%6TDsLx(0mR-vz?-vIH|D+`JB_i+8o4VM7xRP zD%6mp)Gdyu^E}N4{Fd@Vv|?r9cpF^9QX67Gn3$%Pg@Iy-J|?$W_b3ZuSYV+Vl?Yq< zsos%kX*@4gOANB+NC$Hwqj5~}TD33J-NMCT8J?u1@wn>?Z7hWm!dNo>=qnJ$OoCrj z^_D%NBSBs%b5>Cq-Cu?V4E)S!w12*^aRy-3m2-5Eg1tNR5qO4eF`rj9x9t9j1ah%r z1Y1xwMG_ruGe=rFS?Ru9X%}haMtn|;GnaiWpd3v>^XE)H#ybFjMgvz0m2uud8nt7h z=>#I1k}yU4E;RSn^}hp9`D`jV>~LpWq6c|Bh1XMg1vmLFVUq7Ug`2c3@4!vkBfiHY zzNZCJI)=WnwX=*Wufh1TQj2u77)Mv`+w%GV>C)L)H*ORV+p^s$gau{=F&8w4lZ#h* ze5QL%6^pplg=5sRA|f7}uqu0fM7BP>ZE)4m#Y zr7cZ+tGqvo_eVh%Zg-un{QOhd zuL6c-+bJ%-QX7GRBJ!h=4tbQWlR!xF;9tzLNKT_!(dEc8A#MHu zV2Kc>cEa#d)#mY~r7^AMnO3k?P;=30V$>15n2qXnLmX68BmXF#hHye>#|g%QI;aoe zZ==4(F^Ju^aSX`l;SZ+I&f!_*CL|(Ztx?)H9PH)j{WU6SJ zu4SYL>eGfefBg%ZclPh3A;kxr-!G@a`ByT(zrs{JmU(+DQ}pF*cg<1U{v!4}b#7OK zl-m9Z_J2jY|DUn#=dZOQTHm0P8J~g`fA6Ub+)j6f?V0Bas>P&e11>tr$Oa6Kf0(Ke z@S~l~%;5lqUMVK@xGkXmv@tr+$Rrjca8D>sHY@y61*<&7x*l{HSHGWScs^)3Zf;wGtBQQw|puxZm=@#8m3wbfd3JozrU zi|=|%I7vz?MmoODGx`02{@2s*$LOq8_9u~9yhZ6tB?H?-PLd7s<0P$HvBIYoG3X55 zmD=fpfkGr?Q3>59b=Tk3qYM%&q%ky5^l&O+DG2SeO3O1xPLkFPsnB57ay_~x|1^y1 z9|zGbz8zC_5dww@kGbSVG{&_5G}lC3Sv<3_y1BGBM`0*Ynnn8B?e46cTUZ*L**`#kV@j#rli)0da^#U?(uj zLvk$6^#9MnH}`&;)dYW_`QctOXa!1BI-AMfACECdNpu9${+ zAY53v^#6>tRs8K#sLKOHl3IaxZZ>@+e5w2T1D*}mtK6h^~C5XzuLL5Q2N+q?}@$5>NF{8V-Hi`J(ebYThhdY~B z?*c#qv6Q(HN6?+HCQJ`@H@Llchi)CKaf2Wec#?5Qlp>Gg2o~$M)tUFBX_tYpJUTfRhJ=5 z=x=dvDbWOc^aLYvGeS{Diaq8g`c-ic+^5{7n?Sx6CD~kMw0m&I1;hwc%=1B(vVm*j z@hEgE|A0QAC_5VGw8g7b5+IZT{u0toh(w#JTz#HH#k;-^(*h#W({BZ@8(&0;2ZOPT z6DyZKb2J(~{2K|Z^!vTZUW_)Gs=^B7sK&8lK1ep48{IC4vqXjq>51a;IEiK^SQg>H zIdi2b>x~+pzz-|}z`9EP3+I!%#qv9o17;y{K6>yWC7DN3WFvHN1p6%3#Kdy%w#P29 zS&zO45$M+>wKe?+Jg5vE=NFlUVM6GQPF;+<3AaqLCvJ#?g?vDTS)|XR_MFm(a%5s# z(lR7aMwXM}DKuLu@s4>%K5-xo0Ev+>s=|xrr#KM#h%=E!m)hh$>s^hX;i(b&8zU^B zr;|-Kc?U`rk%Y~%-G4;$lY<9(FYUcC)j(qLXL#-NGLp1~TzWz8^COpDfINDh2$x16 z-73qB)S^%a+*_C};zmu-h42ZDMD8e!X06Q+$E}56v!cj|Hb`^_((PF~%x8cUZVs(KE3&$xR?(AdykJ|ML;-L~_ znU9eVKlalB17z0aMJ%BKJ$3;;BXG}UKAnbK0D2Z7G!_+DxK*!jiUQcu(2Rzi((0Ui zGCY8yQmlZ2&k`ufS_m6>)0~-q%reuY-;2zsr&oGZa&+Fgt`bA#9)ajE%zgjJV?g;W!vw7OC?{Ft4 z>Qtyb6BqfM_Iia*LrP zgQVjNvKH;eW9do4ZX#1)29Ee5DK2SL8v*L=GpFja82L%WLPs_$hvGOpJj4^5xAvYD zq}XW7A}^!P_Uzc?Wt{5*FXQiz?>!~b^C?Krd$H#3Wxw0^v3(!gk7xUSw%u2;FdMnF zKgJIbrjT?SLBIlHM}%zI(BaN3({l$ouq777h-a2hB04(_{*7_iUEG~6s^Z9lY&eII z6((-H9dp$XQ+v~en7Fte6(&Ni?OXI3sE?4;;fB;Ii-TV+p-KtekZ#cXMlT*!+_y*js?_=KC2C-MyuKexmw1gry1oza5;i%WgELQ%Lqc9 zUOe_6cNU}F9ai1(j@Xef5gyp)XbUB_cq0-5Lt3LuITi59@FX-YSZ^47D#Yi*^8qTPG^v}$V zm&fG$6T)YlNqnL4{$N1LxRquKT$jZTsBfY$7gc<6%RHODNg10k9%gR+L98Dv{R#Kd zOKEE?o)71Pfad7@^6tkgZA;C?(UeF67?=wV`#1m`-d}%u*TV9cX^}FV(gvTGeE&ia zbyOHR%265qRH+PDVS%+ZBg5BwA*90eK&sZ`#kS2<9&s9J3u{;ZDaSVY`d622MN2~EpYHeKKDCc z&HGok=QY2{^L+!E6^NiVMvSP#@BWGr$mE2~j6J-3r+b*J*`G zp?_`Et_65Kt1@Yj9D<|faf2+GK3!OxWCM%Gk`%{{d4p_LVk7akbla^L`#Fa7!_dVm zdwVOPZL@AMUUr8fwkdXyY@jgB0IeXVZ+(PEl}d7s$Z~=EcigdGT>er~A?PDnt)Umb zZuUynkr5n(Lp(a@b9qWcX|CDuRp*h__B7ziI;QGS8~u-vfu5mwQkpC zi)#4W21;uC7E=lS!K5&EcVh=IV>k3Rbed+lt}|SinIB6A!nMl--7J5L>AT6jiPOy&BCSu#-9<<1!x_W8yjF$k0?b-BBkFB ze7V0e?1Lt4wu$|GZnXUP3idj8a0jq_3x_mATAw3!fb=5|P2C_lLHVQu2Izv^QGn2q zFnKx%m$mtM6cl7oNw@(r#AFDL(w8i!qF!w03=81yRqfX3;ON4Hh5|qi%GCd?boP%e zTE&e=fI#F$2uM!GMOBa`(ueiRmRZXsh(h{*D%g~IoWv8Mbmr%5NnjGj#{Q+_rO9}U zT44=zWs>LM7@u@^KZ(G6H%*_&kAWrwP3ZD-Ebiy008z7=8o6FP8U$MZG+LEj>d~D7DOxvadTqPM zM+It6lSuKlGQWLT^B1_HoCUcej-gonReEwXf781@cmg&2`l_yqaTBkbs%`_SPwfmD2fl7P{U$F#f+-Wq*IhaT*hMSTr(HL(@^$t7>cyx6ZHeJ2%73d!gxs=!WW~|6n}tLTxg>?XaJ2X z`JrNBdNH5r(V{B_{)}@XXM2LqjdH5;cc1b4OjdMyZ}U!;J-04UoMeHQwSgcsmalP@{SqTUy{zmLOmHyZbG+}{(D z*Quvouh!1#X1CNq*CL-uHX`1(Y^yxK;_Bx_=lP3~1aeV3oqTYza*OhI9#~1cWWdztQ|<^Ob{d zC%>4HZ=Y0*|7@Wwr&IgPJXF4wyb@<>C0Aq{##{GTEwQ#_JQH6rCQ+QFMXv?HXEYR& zW(s$C0C0=F|8YZ5xidwJ>&_l9zc$|usS&Ni0LK>KzIwidX*%6CNfWZ1( zGX@+;2pHczGEGW%L1G4P>Yh=yFg*8hWNLz9y$PsQ&6U)f+ zz!S;x%E_6ASMH&<*Q#So3kQo<0FO&}uTv{D*r#7>fTvDE`gwV;cq6?1f-J57FoiuA0e)i zLZ_C3(u0{W>%oWUm|=^FNMGW+XaO^$3|r3)DrW`q=JF5!Zs2P(?Nk2~H%F;s%9csM6Fno?ac02+i% z$XE~4=t5v%=p--_u|Z%DbP`rm+T7bP{FotQeV6eHnoG%m9sr>xD7!;F6eC`$HLd;Z zXhuGAA zbd#(2v3gtF`NKdla-yAWgq8h~F*??h%8S3co?ItDGY9b#4c9sKI7ywod%j!uz|2n= z6GJA6er3?e@g)JomPfOdmuDxk&s{_GR(ssWxtis(MZivOFYCeqva3OTodq<&mqO9b z0)&`Y^~3GP-0E<1vp_o0kvx!?SfxzbG*)Fv$&*gUwCVKG&#c(czgagQBF2cKA&v{P zOjbry>ZzI~YerBKK!VF_%(hk|GFJNxresnzuC=nXwOS3&VNQ4!ra_w%`=S;_*({=* zf7;h6udTqCWqtkr$9|8K#q=cJII(LB=-7EqMu!d)A>);!1OP9HG|T;Z=STp)t6<^W zxP$?}3(i$h4PXYjEb%VxicHrS9(f4P$R}3z-q&A)U)t!K`M8!MayP0jR(U6d3E?Fl z2g=0YxI|<*;j&pJ2areU6Fqwc5YEEN=J3RjWKGAR=%auDn2sz zTEC}Y4L+LhZ_v^&Ry$vq9-O1jWPN*QJlH!Zw1z1YnE=CGqL~Uw;dJ)#>&ymo1U@(n zAatG`cRmt199+m^7jDZjB$~0<4DE*PZ8#PVd78WwOUFXSh4A+Iheme+4+_jcVtlOO z;pL0^Jh97jmIwu`wKMHnRH2Id`qa5%HaoDfqFobE#NVO6iX;IEZEb;kTy8n{6r8`! z*_dAc^ZtALALxBs^Xbvy{~kU4A9=lp*ZYtWUs|;)y)Q*ZbSb5-ZTnL6_)D?*(BWZq z3+(SoMn&?(^>wcuVvt2@bewy_T@f8%9JFawb)OiACpn?90|}@_9-*rh3+l-M&U9-a zAh4pI>-;Co%yq30Ie7`Yv^RR{9uNwtGSLvNfY!+=FfZbodw02~%{KUEjPEe+INnu^ ziin1acAZE9G6mY|lIH0xG0r!yfVttyic}Qmp*+xqb}N&NQ7mvIwst$LpVnod_MLg{v|2 zVL!Mg|GXfqpVGSF`Qw}Ba~iZG;0sAd+)E4(^mXb~=4nr__Va{ck7OJS&z=Vng>lFQ zAedGHK-IvS zoV07vhG-dkVQ-n~SZHXCxL!~epOlL|Ja_4c6+qSCl#=l{D~u%Keqsu`^Vv+wd{Z`z zcj@ODnaaU>YBpf7iY4oS+q#E1k^PVUd~j3$gS~e&A2t`Kc_e!L3a_iYuJL-5{CKyG z-D1~b(YBltenDTB_C8U>m+ExKtfKpA@BcYWsv2Ov*piQd8xf^zJeTT4v?q zo96lp`J=}%-J@b@Q(N_gN7xx03SV`1?6HOj;9psqy2txd&?vg9AAwsNCP{VH~uJ@Flb{x^?Do0m4ISw+RBLtFUKC_&JzP)@7# z6S0cuSB6vFkgRf=K@?SmmLJx2}o|18~xo{GJzS)kMrhw7>)TAN}Pz{YQcOArhn zdt2OOS;e)%zm1xOQd%i>LX9CMxH$A176kKhI|hRcb6(WgOnX$6>w zn2(1W>%JlEhp(_e|7(t}4uH0@wkZI(;~ah{%23uW&W)^$Ii-k5PS5ht9H6C0oW-&t z;upt`SeEN#*5ZCjvJ?ho-EU4=aN`j%#~)N6`K{vu2l$KpC&q%DDvSjSN0~;vZySgr z!m&Fvw73N#I45`M)*q(B?7 z0_=cdDhQUr(x6c|%+FW2T`9&71K6Aa!3Sw)&{v*#X~|x$7V8-#U0U1b4T+Jempek$xTxh+%UV zcFnK%{xH7JuVc&nCbrCPV(Qxv6{|6u@*q0?pJfIG*U*+xN-y`XC6R-K@cCjfKh!o((;R7TaWH|#7ANz#{u)I}7rG)079Tje^nlHz;8)xRvPVYL zje|7HPiJqs1jk~P=j@xq>6zVilD)UU-e5U8S#opDEiCMF21CAr!FSly0%q3tK^#Hn}`?)iXvY{6mJG+e*1zCKTLfzi?#S7?XF z*vqn1CV2A=zZ59Kr}A_Tc*dM@KxE_;98|s+?YY)-g_R*)K5tJ8_8soi~AS%Q6r9cH$t7GkGsc5aio;__*-Ypf|q$ zrv57if7kmk>ybaF_wf%Aycm*@XgW$I9M=2OV5jE-@qI28g$>z@4IP9UA{@;n`0hi! zKMvphF}(Iccx`9azE3`qx#YB#*;aPci~De@2cWl0agw-Q%RQQ;Uwbg4#RTGl`98* zstSm@FzG-G#9J^W*G2TS1E3kzsZl<4K1euxvo;*8g&-vuDbR8#4qAg;D^?~CYm-RS zMPQq*qEnk#1W-E&-noGNhCb2w0F%K?8540{p_MKO=Bo zG6V5J=<2*X6jY0#czSb2+aEUACGqB@I0`9%DlX+KvZnf#n6qTY;@Zs)%M4#YOWe!V zY#&D3Loe*Wt&lQU-B<}S+X##O8abK@8u6@-q%{%^UG_XV6uS-U2CSCC<}_XvS;sfu z+TYsWBP9dTBp@Nu$os-I;wTt3Jbh&%_m7XgJU~7nP-3n8N9`hLkeSF9G^25D40Kf&ggn=1{bom?j2WaVMYGC+!S$aUTpK>n95tWU{NKjB=uGjh z=AZB)KcaaRT`pMuR8FVc;Jcc2(8Zn3S#KGA#_t-~9sYKM2q-CVA`vQLmN}l(!d#Wk9Tqm7 zn_U;QbTzFt5~U7h0!ACc#h5LJ=xdPP&oN;4LIYG4ByAf+F*R=JCyY-%hi#+xVpt*u zq97GrSiX}H^#N`bBT0ktGnT5L!j?;^+ZXVHyG_XFSa1#%;i&n4)TZ8A+N6DzdR%Eg&pn(yP@iXEcFppXaT@byb#_w1NSsPy z%-U!~2nGvdblKu_w&#%3F_ld#aInaZMTUi=d^8(Fw-}A=XCop~seJ0`;UyNaaj{3F zL+ZK)t8;T}gA07B_p@X}~!*SZJ_Oh~VWBoKQQ zP4?!JkNZ)lqVw5C^ONZwU4D>*Y9&tQ0Fcy~WVz&hbIqptm-g?`mhzGt^tROctbk`F z(9yrPm8G<5pkTX(6DNRbk4!2ub@=~vcIHufo%Mac@BYp{nqB*7WRJWE*^(?9*}-gH zz&17*uw51hfyPE4WFrd-6bK1nDQga)J!~O>NkRzFl-)RS8xkmSD0K-+K51R?=^NS+T7L5hjQ7i*!Ub%Nn-vX0r32Xz9-Z#97u2ENcW zMC#Jm1pT7A2ZA7iq81oh*+Wsl0t~?!OETtzaxg7(^GL#m81yWXr7%&jbiJO!q~1b| z)MXuYQl|rolQ4+7BNMTNuwiS1WiX(jB;#U+U$|GCfO0Pl4!;l0Vsr#;QRMoZCB!-W zpD0Uxd6U!dA&MMrodav}#f!xL6l6f)Ku>rAi2%;Bs!pN(ZQI!zo14={Ml5uxl%E_Q znV^zC`DcQf$*_ToQTqC$uwAO1^gG!a>rHnH$s@>UnPC@4z=kcm~c?_jcY=D*r$``Nv8X-j{3(y5I4T2%Op&pj$9!>V5E$ z5!>EF%7dk-{LuN<_flF$stzCnt#j;!q3kBQsVzssCcoj~5;(=asZ~7VXR-%hjgp?} zJ+b>*goT-Pyo;XKzz$*L2~{X<^GX0G%o~gq=2;VhHO=+FFWRJpMa_bVK2dNn zMe_gn>3bXZwW`J=8m|if%lA*`=NI{TCj5VC$U!3>b)pnk{Ner1mcg>#B)U^bRM*ehAZ=H(fJZU1LK#iP$CqDwQ${gW|Lda+lH% zLstN4P#{ORRV#!S#J~BRU-DvV;4~L0qbgC1F6N3EV&VTV`*4d3O}1p;;kQ_TUI(qW z6@GpTeZ&Z<6UK8(q{>v*bgp}90s1m+@p~@t{qyemg-jOoF*#XU>SWbi6il&}YdIjv z!j=%|_8v`dOMjgjF_6z7pB}yLAu`yD%CgO3U=jj4s)R-eb4h|Z7!opE!p9R60rQua z+13Wg1;F4z7}--dwldEfk2h>9k)hTm#>eIuFj_^84>3mW*s^EG)}q#Bemct~g)zQO z0+I25EIDvj$>@lt_QsQnpi3a=wXZKf7*3}jeWE6AlES2O?a-+1XI4ejqmgE&mA;rnS zc;I5NfH$s>q zq2O-?2V^HO1UYB~J4Fq{C)Ad^23pOk(bsU-{(=HVr4HO7tqR*&1P3VHF&BbmurD`2 z+^pk^>7^GPzQH8mK0~X3Ej4(tF%p-7ox8X?B9d*f5E`fKuvOEJW(kAPce6G#VpSBA zVqhOUU@4S6rQdT#2LLJW7fYZ{yehDwxp~~rHDmL*=NB77!=)G#F%Cf83q7?L?EIV6 zenT%sWrQrD3Vx4{O+fXKNwgoP?c##!M7q(dfko0dTIqsC3$c)7gjC5YQZ&kD{YT5M z&p!`9fs;5KaRjYV>4WlzoKX)oQPmBr6ggHJ($f9ma-q z%w?QRvad?*1dBSrY3y(O@SdvFgp7`FHJ89)83AJ)cKwfbF$5Q+`HYUGn;7BTswr%}=Y5L~wgriQsS`MJ?>=mS&)=AJvaZu!?2 zD29WV%cF47x@FFQ@p&|?m6~-yAr2P7S3e2QqYV^`AaZKmFBmuijBtZ7fw5D*H0aG`L6bELkg}N>Dh?x`a8l(m!xCse#=ID7ci7uik(v10#6wS^r0$xE# zu3o}t14s5SpGH?Ee$=G7=Lk(<4HgtHv?yT|9#x<4Agsmzd=-&nF8BhbaKaN&=S1zG zxnk9@(IpupO>RmhOM?E9P8tXjCl-NDzyK4C>mMKk;)S`>dD2eM4ml=7{Dui*jzW>0 z#<%&AJ6sSXc^Uw5iJ`T}F^3qY;ST(T1zU7y@N!zCy=Ab5TH6~ zH3@*=x{|3dsE7@IiHvz ztrKDzC|=AM1sLJLXp zW)N`LF^YfOnjkq`gOCsp#6FKpLTXIH#KAS0uttqY!(Go9gG+TABLa+mPARR4oZM(H%b{;=`dqG!V!7MCtioTSo(2hsW6+bEcM_cwt4L zD(wu%CTc_6XH&Xg2g`^7kt_>3f}{)Pf-#J;3%8`rBVrs;{1Ef1fMvceyfa;fd-Wzdz;7R;&3lx zSKI*H@o@tG1q(=)8?GE5^07;#HyW?@iqv3{=M`CuL3HK>k7rP5Yp=IO)FWdmC1dh< zmvs#1J9kAF_~A^(X=akhh|*jx#n( zd*C>bz)O?lq1q%cF`wl}>>v%Jr~}0?EeL2Ynyv?#_h_Ak=E!*$?k6E_ak1NBd4{nh z$RQc=0hwHN2t%aa9rEf2IVy|w^5{`)ru8NgR3;cRwYcLWf~*47>KRuf7@tBLY5bWQ zpd-g-Qs(sEG2lucAZBgn4*G2x+Fqg<&X>(`41(#k!pI4cioGn4MAGfbBw@imUE5Mp zAQhwz#pgD;gDHi)cXb#UFn_<(m%;<@lZO&Y<@&x(r$+16F7PVykYbol=75;Z<;7u8 z^+8n3J#IQ$WWrBzGd+vzl)h^nVyWI=IwhD93m@DtX~J3avRO@^zQ6Ux)^lld@<;Td z`E>O(@=3s$sw4ayEwxd_H(YlSNiT`qjhrf?-_>*0<=6Vk*+ElRli`LPmUtQFUa*%z z)k}n1L68;}`LLE{gM$WfzIYU(L@of^$lty9K+UuikTPtw3JC>U9Uf8?Bl@iO>Ny8Ij$|wSig!`K`w@-^_!m} zXqB?{hzA?qVC;s~}BMJ>3sB10jCm~6Lq(-%I72K3Db+^MWoF~78kFh%A;Ml^NSYYZtC zu+kPN&8$eRedKwCL9*_u%Tf>pn{KY`4!ArqvU3?zcd$4veBoHlkD4&UBPLL z5oSTp{#0pPkj{-t5X-u{tO`0Y-k(BvZtLqPB7hViTjDu&W_#_){-zz^sZ1a9$Z%`O zJUXSUxXXPRD;D*5>ra?z@#0`@i4-FRV9_j#O{^MsF!nDU6GxapIzGZnG|wWzUTZzV zoLA%~4>B^<_p!J{q)6rsQKLpl{vI)C*qh>lhVB&eoGfzxi!0 z52fu29A6BNWL^TMJg{fMCkZbS0i+sfl}Xd1@Aa)1gh2RF(|B@3kIwN#4sk_{vC-K* zOSy!22Qz?MQDz(=I!!PWhoW-#1ndM~+>K{32$?DkYz(zPcfI=bI$?e3Sj=@%%O0{{Ak%zstUFvi-m6Ji4J# zM*e+7o3`%y&SH1r1aFA46}K`{p%xNarGpUufZGdF9k~@t)HYRfN}z&krLWn*94^A> zK|w40W+h5()oQO5VKNXYO21)OFQlMCh;O!rq6xuA*V-DlAKYwb5zHl-y2cS=VfxgH z?mF?|VNI@fL7ml8$Jq)-wp*Et#KDN}9YXA_fUfKAYlE-M^R_{D?NP)!6(zZaR2At5 zvjy@-Q%+1zb#!?pa`+N?f_7UvXJOzEw>NJi@n)_?k1T=O$f~s1uQ{>!TT+=`DPIVr z#Iul1wV-THbXZ+7f2s0|jJ13TNeIx70oNHn$1Ug&Aps~R~N^Lf@Q{|F|3=lYG`HYVd z)>8) zI3rfFAbSgLCkBVX7UPTkoKUn&YO>EiyFm_u!V}4vrIY1oMuog#2&OFOrPOjoVUTn~ zjr za~vHvjO(D7)#CF}7a2)&m2B^u8q*7O#X{ILs-@~tjSn~8UwtX-!fGwK{=iXwZbjOB zp}JReuDTa#vK7f<7g@Krvu$0y+h0V=oEeuAL#6h-VkX2GnAiW}Q*d}qlm|$jmi^=1 z6YIreU)o3H>Ra@{p8qwsJd zHyRzaE1FTK+19iM^E+eC6P)H0AB=RxQWADIuzcc*c+Pm%Mq z7`Tv{kjsuu4rU_MRa_MwE*e+4rwiC#VSA5xCsg!Dqe6csTAb7KX0Oe>nt5`NDzL2dDNAQgREGy`{ zg5zlM5AAbOLWXLbTZx%GAiIDBvbe~6=_StnF-9I^lDs!14?dy_M`GhdCD~)A;p;436Z~8a4MwQ ze1jK?@pp*?4mXmyU7HZTHPck@9dAUjEKrL759XVB8*{M z9wa>IW3^w#bz_iXHzre*@J6ctXyZ-r(s%}$XR?gVYAc`8OL>?tT&H~jsFw&!206 zg8-@X$@H$tE$U?FQ#VaiRjal^XhLeL8uYhl*xw?nD}BeclfJWIb*1mS3M2H4#c_S`iQfK@&)!G-Zv}Qz8^b9YDKW zDlozJHoVC_wVM?~5d*{j2f|?>Ahd=xSot0x0qWht$bobZt)fj$U3H;2WRZ`YJ2Rx( ziE3Wqf@kq^8kw1-Ts_HHOD)=w*%~IBOmmV~I6T1-)>boGK-Nuhm zc|?2_CE#x4tm>V2$wdX`W&O3T>&wX2+6}1Gez5+tIx$ECBU+GWnYHf|iOPCAy z84u?nH`CPKKNDjODnct*xtq#$M6jKi;Px)@RizuLwOOP}iD>Og42Mj$Vica7jT;#e z;Bb7{v6+!;xR*&Ym=MY$!p7r-v?6UI-L)^|YBV=q3rp3w9M8@zFf={N!CwVJ1BqzF z7AxNuz?`xyBg@v1&dUpk+sxdJW6kPpBkaNUSgN>Bca4$JCEMWPxPuNdk?~%bH}208 z7S0Lja)_UC=9#y|<-FIHVv-|&8NccXp@G;Wf06$qy%4iqwFb|mfz&2E*wfZH{bTxV z+|azI`ol)se6y_Xc>^+oyt9gYQ@Y~(HdX^xtIplJ?los}1x;Jqt2%~zOgpdRLhw)P zqV%YFK!L0xMYfKvt@V6FM6~hzPSaIU%Y=vq0>q8{>0#TG?y2%Em|Jl|TjyC0>?MaT zY#r(4ZbP%C?$lHAP8fUrECK1}8?VB-pn6naG(Bi$MVJ;AN`0lR6~LJ$d{G<&1vRbu zVD(?phqs)u#~h9WiKnIXgx(VLD`H<+djw2P?*tg9(ds>X_7VChQRnbeAfhpX4RLYs zu8JDtGB6mor8s5NEU&P{@L)LK<%Fy@s}@PUxeHZmL>L+fOTv|O+UV)D72I6yG18qt z5lXp3x0v1|KByc#f^^83hc^%+q+SD!0nQ%rh$W8O) zU%?s_j`YxJz5Y^bd3n|>@`5UwiJ7j;tltixrVuO9j~R>F7ZzOHP*Xi&pv~m6$+iVV zd^D;BK8F#U{!wDc^y>?EK+X6VW|JDR<#Te!yOTUCL_TR57_rTX(|_IE(tKm}lg3r7 z2VXj7y87Ut|C1{aUI(pzyZTlvSlG+Z%JhxtkaRXRk4U<*w0a#Ud#+tdUj z@>(TxD+*AK$*QTf?m|ZfFvkZS=)-bI{-<$S4H1Q>bR3J~rllW`^e`VO#z8`fnBKL@ z#RM=Esxi==*U1y%i4el#T-<`gg~i0ba1qpLuUPuaDDalHE|d@qN)J*lp81T zhei=0a29n)KMJK7`&fgg@1j-3`3vR)O~#%>z2;U>RZ$zN*42y)y3ML$b@{Hso`4=m zxF-VEcBfmjsh6NeZKlgAc;q}F8cN=#_ymXDq-BPt<($&@N~VbqDQ=E-*R)fMrw)@V zEIVR^Khq++-MP)MJ{$`+vqhs2a&=XdQY>cdX^YM7gsCBA++g5p!buSt$!uT{d~BvN zDvCkC@6!J@1%+l4fs;Kg9*G42Rqen!uoY)U;g(<>jx8LEv{7$HovdPhB*#UD)BbcF zWV283lv!PvlN;k?ZjH=$XyFC-@i=9sSsMv33w=D(q2z3yCIQSDe^cV=Bby^ZIxV-I z<0#Y#&4TSP!RvLxD8XftFgv2;87-3&n7aoL>k~htbtAQ$R~oNs%wpTR{_qk%TZva) zgif$0nz4Fy&PG30wc~f`!(?_MCTUSMVH{bj6ccDp?oPO7vS~6pBG+L&NzqqSq zEK!~es%X_=AtvnT@K3hI+HFOoy{N&awa9$SRJ>9wQ*r|>B)o=~9wO+EC4$5Ig5_fI zKpwo}s6GvxQZ`^^pIZWyO69U-fD81$ zyn;)aI1=OIJ4uJLowN2!-^P=BE{`xhGK;Ha3`~xJG*Wpv)%;c(cZ%t13Hea|rqwSt zR}WjQL_KG*_;?bQP}fz&;AW8-@aH))q!03mv1~i5HK)*>n4(UV1EK{@I zwoQL+RrZ2xi^0VdX&l1wJa7q}q^%sYjXNy;NA@Tf@C4^OwsS$hxzG~VafZ3t0Jbz; zhikD%Zp(`xl`3h1gzR-Fc$qRDPgo*#Ou%dwb>%KuaE%?g22Sq|xUQ34u-p+Jf`o># zP2_CWRoZQMaI`lAT6_?G#e#I=Nl;`=ScTS6-`4!?)*^oUV;c8{`+ga&dnG@w;^#GT zpS}|efJRh1BwjKsluj@~?$DJo-LGWrpaP@IV&V;w@CNSN5Sc7~T(R^5jN-M)K}B6+ z7VHRI$)X{28Q_~FnTs129>{GNO3_|L06dT@bH@$(5^m3B!~by|R}>{1IIw6(`VlA@ zIM!c&D>U}c2VgBSpag_s4n!2KN06L=S{Nyh26k$3uN6`rAnI0feu6^{?or>VHV}$D zDYsu=b`+o$PBeN36_~HQgJrG9$dMR#xwxtMc|FepGtDk-#w(Kox2N4;@lU~OWSQ&f zU)CNMlE)-mo*Z55)v*Wp%j609l=h=yx@d~HqQ*kGV{Ov8y71;+xo^Cw+L=*1;L%|c z6Ln;$hB>A36u{~8a)a4LP!gjpoo&n8d-I!mTPf3~Zjn1h9~9Y@>KR7+%C26Go*w+FRC8${S*;Ml_Wqurn;a^Qw?u!~Spaifo_@KQ+o5m#lCEOJM z5>+iAv!^zLMPvxrrv#cFlYn+pt&y=aNT_a1&SIRyqTH4_Cieyo{FO;dR-zSMD){N6kr8HJ#nAejOM0nh{29iWKOcfb`7Xc5I98=^s`1Hb2B_ zRWGY5L|K8s{Y|sR2(BWrP_(e!AlERKc8S=u_LQVVSa+D^A`*t`7d|(HA{Pr(+bR;7 zQj3-6GCRz!|0&OD)NKPIeEZBSAvE9OUgkZsz6QiP4GcInv1m6SyMWpK(@vgKdnffa$s_4&b`jQ0Co!}?y{vca-qGzJyyakvEGuc(-oL28R`W*w z0*z^oVW{`yV1N=u0`GWYUVijl)+hMu+VV+uPaR$+o|D@!QX?;`dd=F*fwRXKgIx@Su^_z{Fy%%_~j0h}*R~ zK~0pm)U5rR)*+zAT0hltxOGukn^hfw4A;J@O~X1$Mv7!aJpUK%6!~A=tLUZGLr<1` z`G%Nj31`w9U$G2e7+)+40BL#9Au7-xeT+CD&|DD#Os&$B=`GFa3gsHug%_M{SPMIU zROh7KQ9y(vR&iTeumWCFi%cNd-52ue^hQ#s@fWv6#43VE_Z`^Vx4TQ~OOg~;`e`No zyo?{NBqKNi8`0MnM#Le;Bha)Fb0d% zq=2%dBG@mjsM3vU9b1AT2}W}0tnN^)S=y5v0c!V| z^lMEd4R&-Bs=i}`^=7qr`e%)Q-@LQ>^Tt71EtTHt1zY=cbv>N@Bz_W$`nZv%k8cP) z-Q|wEHte|D9d~coagRIhamQy+CU;fWZJIe8zXK%=v)A0YaRWC&ULRyqM821lrh)cN z+y{BGVG;KMJImhX8?7?@BjMqi`3wJh3@RQ!LM2aVs#X<6qO>AZj6@Z&QVXHz|BG@} z3a+Ad*2jwAyJ3_SZP55eYzO(^{*b29MaD4IO6U#G<5`>V14pk2{UR0S+13GS_qN0;93|aiO z^ea|UkSCvml|Qx%c*kTSCc;-m{lSbrc@(3SKH)EhM6Vco3zC1>?QYw(y(@|1_YRs> z<6w7z*!%tV7>-aEX67lBQLLpJCS@vV&jJfFR9Fc;9n_*;Ql;7N&5TTr_gM40Lj;U9 z!3{Vk16`1xame3X!=b@Tc{rdKP`c?k144*Dx=;8fd1A`T`Uy+fy@he0jfYiBCMPApVJc+4L1P~vr=)1b z!T->oge-TcU-MmaS&2BuA69Qi_vw7|y<41MJ^Ru6#=`#V*0xFCrP)~xnis?XZ61W1 zp$((HD*lqMqNpggdW%GI!0y=bweOGWO*2(Yh?Rhy=oIZ769Zc=`-uei4d*38C(~1H z=<#q&JzjBpcAjP0M*Bqiw61gn%mmanjH;{UKJ2NO_ZW{#vOzmY(8Lt@9am4vxSA7+ zq70Wq09oUa%1s4|GFH{^&5le>jm*%B3w_4=%#aySRB*E}G7i;EUWF_W{fd$(qIK9_ z*&avP^Rxk?6SR1!rEt{bgFN*;02JxpvtRhC#U1`fwCX+BmM zw>dR8C)&X@5sV`_OLW_c$l@1fh;yBQZL^+{`? ztOhudH?5tY`6pUXXKt4`7xqi11-8x<*~t;cCxw&IaYbTWwwH0?2HP^ZLNWG0`jvI6 zvDTxT$E%Cbqd&zj{dDzNIPY`(*zx>ce!d9D?yvU2v3FOGfxADF6ftUptG)2)etw_- zHDX-+zM8+U<_x!OcIb+oZePdtb!>lx?GLd1fqMJ**>>M2`Ta@Iz0xzig%eyl=?pX= zd|D@f$QJ2IR#L7Sd(K34ZAf9XO+Z=?vD)SUD6`J3aGr57kUL9@htaJ8^p&d~TG=Oe zYyX<)1^Wrrh3D}E!s}fYLs^$VTq}Ln2I?Gj$zV~>broLHxQ6N#6M={U!Zz5p$+ze@ z{`Y;>feSSfFIlLAjD4x-XWv#3OJk#r|BF_tdjWCg*xBc-UJ z#CW6X$iR=5-ab2GnbLD(}9q!0HXo3W<8I<7MC{F&FHfwH3}c6JVt zfTDah=!C&B147e+YwS@mnQ{vNhQ%Qq)VA`Nt7iA!WYOl)TedaN< zf0XN~!Ws>*0rQHBacEi{SIR(2YJQf!a)$)si3tcN`>;8tknUP^&V^cNuR)HwMCD%o zZ_R_079Nnnqrte&9qlcLwoYuGoSAiA;%m`%&|cO~irRtGc@Ee}GndE1s}?g&_Blf? zk4fn!46c@7mSC>1H^0+;O0X@pMVsaf!s6z}FpIyfQJD^(bf1e3E-szSL$wRG1YCjg z!#2$Tc>Z5ONKg~Soz2tYQ5{`vG6>!lf0I|vPMvUYbQ+USEc6-P9kD23=Kz4klIJ+B zfEg4jj0vOjpaM1A7z>1K#@LS2r$5wOY`zfRZgaTsui!xIY5s@$Ayj@|QggGK-v$z| zT_1YkOU^W;sKM1j#}?8Ir9Kjxz7KJs@TYb(lZ)FZb>YL#_5)AP>%c9sIfp&-i=$=| zg4xQ#D+3EMh)d1ZrA3T}oq$r!a$YyUj>;|NhB$VEs8k*z4=~Vgg|Al*HEwa5Cktz6 zi~*-?B_r0z$7o~uOvF7Cc|h@|CecV3zyVZkVw;)b4vF!KG}j@>2-7e%F zz>DTn{PPrBrw2X65aLvNio%!3roq3u*)t31n0A)_C9rZ&8P8&c}_s4gvNTSdtM&2Ktj84$UcQ!4d0M;laRD>UMQ-(_8_gynH zyOOi4fm_$Za3gwdObB3hd*h^8YHJxrC6Rb(p}9*eC`lYHXkkfUqrXT4D#}sxfV1vb zXHwP56x$kH`3E~70ZI9yER zujMnhU&r?A>g_kM{RX!0V*lN2`}-b#-(v(-Y!kIr)Af)lgK!UW@1tGJztQdnd)+TVyYZe#h4X4#dDDa@v3>CW*(o>^&;jYF_m(`=Z zMVur>H!MQ73|oZ9v{Z~$mHH_uY+*q%z);6cupwJCitP9nC_Y@+nuF8G8%GbRpC-3W zl`Mq;=8AKExb}LWW4K;pPmdpO-IlNreCNN=YqXd@+KlimY=c*R~7_h>{h|{rws#W zNLmL!bC_Rpv;aybJ8l$106=Ta;?3-9KE83Vb%OOt-;@=Q=inQ1eW=G59!Mvp)kFU-^a)+?q!3YzE`&OgjL9t~5-(DMRJNvNzaT6#(0O}gvP7>#&6lqq zGa+Aj|EL*)b4aRa6e;4P)FRu;C9x({p0Fut*fh7<_(>}+c}G$ zb9qD0u1@3)J)1Z5TQhudLPOn6GXc>dzlX-Rs1NgNIRVQ%q?b$n6znNleO)QD zg3qA-pmcs3K&)IpMM%%5=G5UwnqaZj72&e6AMij-DQ^O0giGEd*MUb>Kbt+zJMmn; zlor^`v9XXvBS;_V`5TMpE{^tgt!!r*r}-Ij&lff?wA#D&?CMyonqm*9EDJ?W(dbK# zo^Osn_QuE4LKeeqZ+pp_R=9xRovdlHIg7g{M7tc7MswA?c>uws=Bt!5NGDfGtiPJ? z?|iWTn9+TsZyo!<_`MVN(Y8H{rz?Cd%~sHzwL=Xd-4}=eAG>+o^tf5_dop=H~-)nFFNv(XWhJZ&Mn_~ z_I<~G`ka4z{F>)|_QXB6AAkO@p8U$G$G_mCFMRilR$u&xmt6bL-u1HTc6uFwBL^PZpn(anGS)<5~e=fClVpWS==7q9=)^nI`RkLP^(;;)?XpMLnC z@BPbb|Le@x-tynB`ueu7f0YSaYOF%B&{;`Y+Vm)13RwdV3Ss|8BiK!~Va;yM>+@%j>H9 z>+ME0L*M7JzgbN--d1n7s^tcG_&L7KF`uuuJJkh^uh!e$YPvaIZ}+O(o7?K`esy8< z4fXbPHPifTy}hZLY<{KQo?-tt9(~*GFFtwf)@PquKI>U$FJE=!j@wQw-*VfDQ)@?; zpZVhDE7)4T^2o`fYbW+DA2|Q~1N)XAdHnctPPk+FdtaDq?&E4#vi}Cgagvc7*7&`aXI;xxHjd%vue!{cKEV-w zPBE?{dG6=&`(*W8_T9!v|FLto?;knmKR?O`&fU*{u5F*M)1Tly{r|q+j<9HQ6nT(v za39Vct;VYHYNDFN6aJfOQ#C_Q~k5(V6-cbFU>dxv{S=r|G)o&2s)%t%0 C2fEk* literal 0 HcmV?d00001 diff --git a/asset-manifest.json b/asset-manifest.json new file mode 100644 index 00000000..d89340d4 --- /dev/null +++ b/asset-manifest.json @@ -0,0 +1,22 @@ +{ + "files": { + "main.css": "/static/css/main.4b4142f8.chunk.css", + "main.js": "/static/js/main.3def8d06.chunk.js", + "main.js.map": "/static/js/main.3def8d06.chunk.js.map", + "runtime-main.js": "/static/js/runtime-main.b019aae8.js", + "runtime-main.js.map": "/static/js/runtime-main.b019aae8.js.map", + "static/js/2.3fb278bc.chunk.js": "/static/js/2.3fb278bc.chunk.js", + "static/js/2.3fb278bc.chunk.js.map": "/static/js/2.3fb278bc.chunk.js.map", + "index.html": "/index.html", + "precache-manifest.0fbb4ef256be8a3b8e6f3b71d8dd7aec.js": "/precache-manifest.0fbb4ef256be8a3b8e6f3b71d8dd7aec.js", + "service-worker.js": "/service-worker.js", + "static/css/main.4b4142f8.chunk.css.map": "/static/css/main.4b4142f8.chunk.css.map", + "static/js/2.3fb278bc.chunk.js.LICENSE": "/static/js/2.3fb278bc.chunk.js.LICENSE" + }, + "entrypoints": [ + "static/js/runtime-main.b019aae8.js", + "static/js/2.3fb278bc.chunk.js", + "static/css/main.4b4142f8.chunk.css", + "static/js/main.3def8d06.chunk.js" + ] +} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..8b632f5c --- /dev/null +++ b/index.html @@ -0,0 +1 @@ +Excalidraw
\ No newline at end of file diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..658bd4f7905e39294207a0bbf0d07b6732d02711 GIT binary patch literal 40186 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ʩAD1lItw9E0q* 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 literal 0 HcmV?d00001 diff --git a/precache-manifest.0fbb4ef256be8a3b8e6f3b71d8dd7aec.js b/precache-manifest.0fbb4ef256be8a3b8e6f3b71d8dd7aec.js new file mode 100644 index 00000000..d8790ea8 --- /dev/null +++ b/precache-manifest.0fbb4ef256be8a3b8e6f3b71d8dd7aec.js @@ -0,0 +1,26 @@ +self.__precacheManifest = (self.__precacheManifest || []).concat([ + { + "revision": "8d184ca60da16d138f26273d1a723e84", + "url": "/index.html" + }, + { + "revision": "44655b91a9acb4dab431", + "url": "/static/css/main.4b4142f8.chunk.css" + }, + { + "revision": "873896e28eb81c54171d", + "url": "/static/js/2.3fb278bc.chunk.js" + }, + { + "revision": "d705cb622423d72c5defbf368ca70dcc", + "url": "/static/js/2.3fb278bc.chunk.js.LICENSE" + }, + { + "revision": "44655b91a9acb4dab431", + "url": "/static/js/main.3def8d06.chunk.js" + }, + { + "revision": "b44dee203db29ecae5db", + "url": "/static/js/runtime-main.b019aae8.js" + } +]); \ No newline at end of file diff --git a/service-worker.js b/service-worker.js new file mode 100644 index 00000000..247d206c --- /dev/null +++ b/service-worker.js @@ -0,0 +1,39 @@ +/** + * Welcome to your Workbox-powered service worker! + * + * You'll need to register this file in your web app and you should + * disable HTTP caching for this file too. + * See https://goo.gl/nhQhGp + * + * The rest of the code is auto-generated. Please don't update this file + * directly; instead, make changes to your Workbox build configuration + * and re-run your build process. + * See https://goo.gl/2aRDsh + */ + +importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); + +importScripts( + "/precache-manifest.0fbb4ef256be8a3b8e6f3b71d8dd7aec.js" +); + +self.addEventListener('message', (event) => { + if (event.data && event.data.type === 'SKIP_WAITING') { + self.skipWaiting(); + } +}); + +workbox.core.clientsClaim(); + +/** + * The workboxSW.precacheAndRoute() method efficiently caches and responds to + * requests for URLs in the manifest. + * See https://goo.gl/S9QRab + */ +self.__precacheManifest = [].concat(self.__precacheManifest || []); +workbox.precaching.precacheAndRoute(self.__precacheManifest, {}); + +workbox.routing.registerNavigationRoute(workbox.precaching.getCacheKeyForURL("/index.html"), { + + blacklist: [/^\/_/,/\/[^/?]+\.[^/]+$/], +}); diff --git a/static/css/main.4b4142f8.chunk.css b/static/css/main.4b4142f8.chunk.css new file mode 100644 index 00000000..f6b04d5c --- /dev/null +++ b/static/css/main.4b4142f8.chunk.css @@ -0,0 +1,2 @@ +@font-face{font-family:Virgil;src:url(https://uploads.codesandbox.io/uploads/user/ed077012-e728-4a42-8395-cbd299149d62/AflB-FG_Virgil.ttf);font-display:swap}body{margin:0;font-family:Arial,Helvetica,sans-serif}.container{display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.sidePanel{width:230px;background-color:#eee;padding:10px;overflow-y:auto}.sidePanel h4{margin:10px 0}.sidePanel .panelTools{display:flex;justify-content:space-between}.sidePanel .panelTools label{margin:0}.sidePanel .panelColumn{display:flex;flex-direction:column}.tool{position:relative}.tool input[type=radio]{position:absolute;opacity:0;width:0;height:0}.tool input[type=radio]+.toolIcon{background-color:#ddd;width:41px;height:41px;display:flex;justify-content:center;align-items:center;border-radius:3px}.tool input[type=radio]+.toolIcon svg{height:1em}.tool input[type=radio]:hover+.toolIcon{background-color:#e7e5e5}.tool input[type=radio]:checked+.toolIcon{background-color:#bdbebc}.tool input[type=radio]:focus+.toolIcon{box-shadow:0 0 0 2px #4682b4}label{margin-right:6px}label span{display:inline-block}input[type=number]{width:30px}input[type=color]{margin:2px}input{margin-right:5px}input:focus{box-shadow:0 0 0 2px #4682b4}button,input:focus{outline:transparent}button{background-color:#ddd;border:1px solid #ccc;border-radius:4px;margin:2px 0;padding:5px}button:focus{box-shadow:0 0 0 2px #4682b4}button:hover{background-color:#e7e5e5;border-color:#d6d4d4}button:active{background-color:#bdbebc;border-color:#bdbebc}button:disabled{cursor:not-allowed} +/*# sourceMappingURL=main.4b4142f8.chunk.css.map */ \ No newline at end of file diff --git a/static/css/main.4b4142f8.chunk.css.map b/static/css/main.4b4142f8.chunk.css.map new file mode 100644 index 00000000..5cf9155b --- /dev/null +++ b/static/css/main.4b4142f8.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["styles.scss"],"names":[],"mappings":"AACA,WACE,kBAAqB,CACrB,4GAA+G,CAC/G,iBAAkB,CAGpB,KACE,QAAS,CACT,sCAAyC,CAC1C,WAGC,YAAa,CACb,cAAe,CACf,KAAM,CACN,QAAS,CACT,MAAO,CACP,OAAQ,CACT,WAGC,WAAY,CACZ,qBAAsB,CAEtB,YAAa,CACb,eAAgB,CALlB,cAQI,aAAqB,CARzB,uBAYI,YAAa,CACb,6BAA8B,CAblC,6BAgBM,QAAS,CAhBf,wBAqBI,YAAa,CACb,qBAAsB,CACvB,MAID,iBAAkB,CADpB,wBAII,iBAAkB,CAClB,SAAU,CACV,OAAQ,CACR,QAAS,CAPb,kCAYM,qBAAsB,CAEtB,UAAW,CACX,WAAY,CAEZ,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CAEnB,iBAAkB,CArBxB,sCAwBQ,UAAW,CAxBnB,wCA4BM,wBAAyB,CA5B/B,0CA+BM,wBAAyB,CA/B/B,wCAkCM,4BAA+B,CAChC,MAKH,gBAAiB,CADnB,WAGI,oBAAqB,CACtB,mBAID,UAAW,CACZ,kBAGC,UAAW,CACZ,MAGC,gBAAiB,CADnB,YAKI,4BAA+B,CAChC,mBAFC,mBAWkB,CATnB,OAID,qBAAsB,CACtB,qBAAsB,CACtB,iBAAkB,CAClB,YAAa,CACb,WACoB,CANtB,aASI,4BAA+B,CATnC,aAaI,wBAAyB,CACzB,oBAAqB,CAdzB,cAkBI,wBAAyB,CACzB,oBAAqB,CAnBzB,gBAuBI,kBAAmB","file":"main.4b4142f8.chunk.css","sourcesContent":["/* http://www.eaglefonts.com/fg-virgil-ttf-131249.htm */\n@font-face {\n font-family: \"Virgil\";\n src: url(\"https://uploads.codesandbox.io/uploads/user/ed077012-e728-4a42-8395-cbd299149d62/AflB-FG_Virgil.ttf\");\n font-display: swap;\n}\n\nbody {\n margin: 0;\n font-family: Arial, Helvetica, sans-serif;\n}\n\n.container {\n display: flex;\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n}\n\n.sidePanel {\n width: 230px;\n background-color: #eee;\n\n padding: 10px;\n overflow-y: auto;\n\n h4 {\n margin: 10px 0 10px 0;\n }\n\n .panelTools {\n display: flex;\n justify-content: space-between;\n\n label {\n margin: 0;\n }\n }\n\n .panelColumn {\n display: flex;\n flex-direction: column;\n }\n}\n\n.tool {\n position: relative;\n\n input[type=\"radio\"] {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n }\n\n input[type=\"radio\"] {\n & + .toolIcon {\n background-color: #ddd;\n\n width: 41px;\n height: 41px;\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n border-radius: 3px;\n\n svg {\n height: 1em;\n }\n }\n &:hover + .toolIcon {\n background-color: #e7e5e5;\n }\n &:checked + .toolIcon {\n background-color: #bdbebc;\n }\n &:focus + .toolIcon {\n box-shadow: 0 0 0 2px steelblue;\n }\n }\n}\n\nlabel {\n margin-right: 6px;\n span {\n display: inline-block;\n }\n}\n\ninput[type=\"number\"] {\n width: 30px;\n}\n\ninput[type=\"color\"] {\n margin: 2px;\n}\n\ninput {\n margin-right: 5px;\n\n &:focus {\n outline: transparent;\n box-shadow: 0 0 0 2px steelblue;\n }\n}\n\nbutton {\n background-color: #ddd;\n border: 1px solid #ccc;\n border-radius: 4px;\n margin: 2px 0;\n padding: 5px;\n outline: transparent;\n\n &:focus {\n box-shadow: 0 0 0 2px steelblue;\n }\n\n &:hover {\n background-color: #e7e5e5;\n border-color: #d6d4d4;\n }\n\n &:active {\n background-color: #bdbebc;\n border-color: #bdbebc;\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n}\n"]} \ No newline at end of file diff --git a/static/js/2.3fb278bc.chunk.js b/static/js/2.3fb278bc.chunk.js new file mode 100644 index 00000000..090a9013 --- /dev/null +++ b/static/js/2.3fb278bc.chunk.js @@ -0,0 +1,3 @@ +/*! For license information please see 2.3fb278bc.chunk.js.LICENSE */ +(this.webpackJsonpreact=this.webpackJsonpreact||[]).push([[2],[function(e,t,n){"use strict";e.exports=n(13)},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(e,t){for(var n=0;n0?m-=2*Math.PI:o&&m<0&&(m+=2*Math.PI),this._numSegs=Math.ceil(Math.abs(m/(Math.PI/2))),this._delta=m/this._numSegs,this._T=8/3*Math.sin(this._delta/4)*Math.sin(this._delta/4)/Math.sin(this._delta/2)}}return Object(a.a)(e,[{key:"getNextSegment",value:function(){if(this._segIndex===this._numSegs)return null;var e=Math.cos(this._theta),t=Math.sin(this._theta),n=this._theta+this._delta,r=Math.cos(n),a=Math.sin(n),i=[this._cosPhi*this._rx*r-this._sinPhi*this._ry*a+this._C[0],this._sinPhi*this._rx*r+this._cosPhi*this._ry*a+this._C[1]],l=[this._from[0]+this._T*(-this._cosPhi*this._rx*t-this._sinPhi*this._ry*e),this._from[1]+this._T*(-this._sinPhi*this._rx*t+this._cosPhi*this._ry*e)],o=[i[0]+this._T*(this._cosPhi*this._rx*a+this._sinPhi*this._ry*r),i[1]+this._T*(this._sinPhi*this._rx*a-this._cosPhi*this._ry*r)];return this._theta=n,this._from=[i[0],i[1]],this._segIndex++,{cp1:l,cp2:o,to:i}}},{key:"calculateVectorAngle",value:function(e,t,n,r){var a=Math.atan2(t,e),i=Math.atan2(r,n);return i>=a?i-a:2*Math.PI-(a-i)}}]),e}(),v=function(){function e(t,n){Object(r.a)(this,e),this.sets=t,this.closed=n}return Object(a.a)(e,[{key:"fit",value:function(e){var t=[],n=!0,r=!1,a=void 0;try{for(var i,l=this.sets[Symbol.iterator]();!(n=(i=l.next()).done);n=!0){var o=i.value,u=o.length,s=Math.floor(e*u);if(s<5){if(u<=5)continue;s=5}t.push(this.reduce(o,s))}}catch(m){r=!0,a=m}finally{try{n||null==l.return||l.return()}finally{if(r)throw a}}for(var c="",f=0,d=t;ft;){for(var r=[],a=-1,i=-1,l=1;l0))break;n.splice(i,1)}return n}}]),e}(),m=function(){function e(t,n){Object(r.a)(this,e),this.xi=Number.MAX_VALUE,this.yi=Number.MAX_VALUE,this.px1=t[0],this.py1=t[1],this.px2=n[0],this.py2=n[1],this.a=this.py2-this.py1,this.b=this.px1-this.px2,this.c=this.px2*this.py1-this.px1*this.py2,this._undefined=0===this.a&&0===this.b&&0===this.c}return Object(a.a)(e,[{key:"isUndefined",value:function(){return this._undefined}},{key:"intersects",value:function(e){if(this.isUndefined()||e.isUndefined())return!1;var t=Number.MAX_VALUE,n=Number.MAX_VALUE,r=0,a=0,i=this.a,l=this.b,o=this.c;return Math.abs(l)>1e-5&&(t=-i/l,r=-o/l),Math.abs(e.b)>1e-5&&(n=-e.a/e.b,a=-e.c/e.b),t===Number.MAX_VALUE?n===Number.MAX_VALUE?-o/i===-e.c/e.a&&(this.py1>=Math.min(e.py1,e.py2)&&this.py1<=Math.max(e.py1,e.py2)?(this.xi=this.px1,this.yi=this.py1,!0):this.py2>=Math.min(e.py1,e.py2)&&this.py2<=Math.max(e.py1,e.py2)&&(this.xi=this.px2,this.yi=this.py2,!0)):(this.xi=this.px1,this.yi=n*this.xi+a,!((this.py1-this.yi)*(this.yi-this.py2)<-1e-5||(e.py1-this.yi)*(this.yi-e.py2)<-1e-5)&&(!(Math.abs(e.a)<1e-5)||!((e.px1-this.xi)*(this.xi-e.px2)<-1e-5))):n===Number.MAX_VALUE?(this.xi=e.px1,this.yi=t*this.xi+r,!((e.py1-this.yi)*(this.yi-e.py2)<-1e-5||(this.py1-this.yi)*(this.yi-this.py2)<-1e-5)&&(!(Math.abs(i)<1e-5)||!((this.px1-this.xi)*(this.xi-this.px2)<-1e-5))):t===n?r===a&&(this.px1>=Math.min(e.px1,e.px2)&&this.px1<=Math.max(e.py1,e.py2)?(this.xi=this.px1,this.yi=this.py1,!0):this.px2>=Math.min(e.px1,e.px2)&&this.px2<=Math.max(e.px1,e.px2)&&(this.xi=this.px2,this.yi=this.py2,!0)):(this.xi=(a-r)/(t-n),this.yi=t*this.xi+r,!((this.px1-this.xi)*(this.xi-this.px2)<-1e-5||(e.px1-this.xi)*(this.xi-e.px2)<-1e-5))}}]),e}();var y=function(){function e(t,n,a,i,l,o,u,s){Object(r.a)(this,e),this.deltaX=0,this.hGap=0,this.top=t,this.bottom=n,this.left=a,this.right=i,this.gap=l,this.sinAngle=o,this.tanAngle=s,Math.abs(o)<1e-4?this.pos=a+l:Math.abs(o)>.9999?this.pos=t+l:(this.deltaX=(n-t)*Math.abs(s),this.pos=a-Math.abs(this.deltaX),this.hGap=Math.abs(l/u),this.sLeft=new m([a,n],[a,t]),this.sRight=new m([i,n],[i,t]))}return Object(a.a)(e,[{key:"nextLine",value:function(){if(Math.abs(this.sinAngle)<1e-4){if(this.pos.9999){if(this.posthis.right&&r>this.right;)if(this.pos+=this.hGap,n=this.pos-this.deltaX/2,r=this.pos+this.deltaX/2,this.pos>this.right+this.deltaX)return null;var l=new m([n,a],[r,i]);this.sLeft&&l.intersects(this.sLeft)&&(n=l.xi,a=l.yi),this.sRight&&l.intersects(this.sRight)&&(r=l.xi,i=l.yi),this.tanAngle>0&&(n=this.right-(n-this.left),r=this.right-(r-this.left));var o=[n,a,r,i];return this.pos+=this.hGap,o}}return null}}]),e}();function g(e){var t=e[0],n=e[1];return Math.sqrt(Math.pow(t[0]-n[0],2)+Math.pow(t[1]-n[1],2))}function b(e,t){for(var n=[],r=new m([e[0],e[1]],[e[2],e[3]]),a=0;a2&&void 0!==arguments[2]&&arguments[2],r=w(e,t),a=this.renderLines(r,t,n);return{type:"fillSketch",ops:a}}},{key:"_fillEllipse",value:function(e,t,n,r,a){var i=arguments.length>5&&void 0!==arguments[5]&&arguments[5],l=x(this.helper,e,t,n,r,a),o=this.renderLines(l,a,i);return{type:"fillSketch",ops:o}}},{key:"renderLines",value:function(e,t,n){var r=[],a=null,i=!0,l=!1,o=void 0;try{for(var u,s=e[Symbol.iterator]();!(i=(u=s.next()).done);i=!0){var c=u.value;r=r.concat(this.helper.doubleLineOps(c[0][0],c[0][1],c[1][0],c[1][1],t)),n&&a&&(r=r.concat(this.helper.doubleLineOps(a[0],a[1],c[0][0],c[0][1],t))),a=c[1]}}catch(f){l=!0,o=f}finally{try{i||null==s.return||s.return()}finally{if(l)throw o}}return r}}]),e}(),T=function(e){function t(){return Object(r.a)(this,t),Object(i.a)(this,Object(l.a)(t).apply(this,arguments))}return Object(o.a)(t,e),Object(a.a)(t,[{key:"fillPolygon",value:function(e,t){return this._fillPolygon(e,t,!0)}},{key:"fillEllipse",value:function(e,t,n,r,a){return this._fillEllipse(e,t,n,r,a,!0)}}]),t}(E),S=function(e){function t(){return Object(r.a)(this,t),Object(i.a)(this,Object(l.a)(t).apply(this,arguments))}return Object(o.a)(t,e),Object(a.a)(t,[{key:"fillPolygon",value:function(e,t){var n=this._fillPolygon(e,t),r=Object.assign({},t,{hachureAngle:t.hachureAngle+90}),a=this._fillPolygon(e,r);return n.ops=n.ops.concat(a.ops),n}},{key:"fillEllipse",value:function(e,t,n,r,a){var i=this._fillEllipse(e,t,n,r,a),l=Object.assign({},a,{hachureAngle:a.hachureAngle+90}),o=this._fillEllipse(e,t,n,r,l);return i.ops=i.ops.concat(o.ops),i}}]),t}(E),_=function(){function e(t){Object(r.a)(this,e),this.helper=t}return Object(a.a)(e,[{key:"fillPolygon",value:function(e,t){var n=w(e,t=Object.assign({},t,{curveStepCount:4,hachureAngle:0}));return this.dotsOnLines(n,t)}},{key:"fillEllipse",value:function(e,t,n,r,a){a=Object.assign({},a,{curveStepCount:4,hachureAngle:0});var i=x(this.helper,e,t,n,r,a);return this.dotsOnLines(i,a)}},{key:"fillArc",value:function(e,t,n,r,a,i,l){return null}},{key:"dotsOnLines",value:function(e,t){var n=[],r=t.hachureGap;r<0&&(r=4*t.strokeWidth),r=Math.max(r,.1);var a=t.fillWeight;a<0&&(a=t.strokeWidth/2);var i=!0,l=!1,o=void 0;try{for(var u,s=e[Symbol.iterator]();!(i=(u=s.next()).done);i=!0)for(var c=u.value,f=g(c)/r,d=Math.ceil(f)-1,p=Math.atan((c[1][1]-c[0][1])/(c[1][0]-c[0][0])),h=0;h0?t.hachureGap:4*t.strokeWidth,o=[];if(e.length>2)for(var u=0;u=n[0]&&t[0]<=n[1]&&t[1]>=r[0]&&t[1]<=r[1]&&s.push(t)}))},d=0;dc[0]&&(s=e[1],c=e[0]);for(var f=Math.atan((c[1]-s[1])/(c[0]-s[0])),d=0;du[0]&&(o=e[1],u=e[0]);for(var s=Math.atan((u[1]-o[1])/(u[0]-o[0])),c=0;c2){for(var a=[],i=0;i2*Math.PI&&(p=0,h=2*Math.PI);var v=2*Math.PI/u.curveStepCount,m=Math.min(v/2,(h-p)/2),y=K(m,s,c,f,d,p,h,1,u),g=K(m,s,c,f,d,p,h,1.5,u),b=y.concat(g);return l&&(o?b=(b=b.concat($(s,c,s+f*Math.cos(p),c+d*Math.sin(p),u))).concat($(s,c,s+f*Math.cos(h),c+d*Math.sin(h),u)):(b.push({op:"lineTo",data:[s,c]}),b.push({op:"lineTo",data:[s+f*Math.cos(p),c+d*Math.sin(p)]}))),{type:"path",ops:b}}function U(e,t){var n=[];if(e.length){var r=t.maxRandomnessOffset||0,a=e.length;if(a>2){n.push({op:"move",data:[e[0][0]+B(r,t),e[0][1]+B(r,t)]});for(var i=1;i2*Math.PI&&(d=0,p=2*Math.PI);for(var h=(p-d)/l.curveStepCount,v=[],m=d;m<=p;m+=h)v.push([u+c*Math.cos(m),s+f*Math.sin(m)]);return v.push([u+c*Math.cos(p),s+f*Math.sin(p)]),v.push([u,s]),F(v,l)}function V(e,t,n){return n.roughness*(Math.random()*(t-e)+e)}function B(e,t){return V(-e,e,t)}function $(e,t,n,r,a){var i=q(e,t,n,r,a,!0,!1),l=q(e,t,n,r,a,!0,!0);return i.concat(l)}function q(e,t,n,r,a,i,l){var o=Math.pow(e-n,2)+Math.pow(t-r,2),u=a.maxRandomnessOffset||0;u*u*100>o&&(u=Math.sqrt(o)/10);var s=u/2,c=.2+.2*Math.random(),f=a.bowing*a.maxRandomnessOffset*(r-t)/200,d=a.bowing*a.maxRandomnessOffset*(e-n)/200;f=B(f,a),d=B(d,a);var p=[],h=function(){return B(s,a)},v=function(){return B(u,a)};return i&&(l?p.push({op:"move",data:[e+h(),t+h()]}):p.push({op:"move",data:[e+B(u,a),t+B(u,a)]})),l?p.push({op:"bcurveTo",data:[f+e+(n-e)*c+h(),d+t+(r-t)*c+h(),f+e+2*(n-e)*c+h(),d+t+2*(r-t)*c+h(),n+h(),r+h()]}):p.push({op:"bcurveTo",data:[f+e+(n-e)*c+v(),d+t+(r-t)*c+v(),f+e+2*(n-e)*c+v(),d+t+2*(r-t)*c+v(),n+v(),r+v()]}),p}function H(e,t,n){var r=[];r.push([e[0][0]+B(t,n),e[0][1]+B(t,n)]),r.push([e[0][0]+B(t,n),e[0][1]+B(t,n)]);for(var a=1;a3){var i=[],l=1-n.curveTightness;a.push({op:"move",data:[e[1][0],e[1][1]]});for(var o=1;o+2=2){var l=+t.data[0],o=+t.data[1];i&&(l+=e.x,o+=e.y);var u=1*(r.maxRandomnessOffset||0);l+=B(u,r),o+=B(u,r),e.setPosition(l,o),a.push({op:"move",data:[l,o]})}break;case"L":case"l":var s="l"===t.key;if(t.data.length>=2){var c=+t.data[0],f=+t.data[1];s&&(c+=e.x,f+=e.y),a=a.concat($(e.x,e.y,c,f,r)),e.setPosition(c,f)}break;case"H":case"h":var d="h"===t.key;if(t.data.length){var p=+t.data[0];d&&(p+=e.x),a=a.concat($(e.x,e.y,p,e.y,r)),e.setPosition(p,e.y)}break;case"V":case"v":var v="v"===t.key;if(t.data.length){var m=+t.data[0];v&&(m+=e.y),a=a.concat($(e.x,e.y,e.x,m,r)),e.setPosition(e.x,m)}break;case"Z":case"z":e.first&&(a=a.concat($(e.x,e.y,e.first[0],e.first[1],r)),e.setPosition(e.first[0],e.first[1]),e.first=null);break;case"C":case"c":var y="c"===t.key;if(t.data.length>=6){var g=+t.data[0],b=+t.data[1],k=+t.data[2],w=+t.data[3],x=+t.data[4],E=+t.data[5];y&&(g+=e.x,k+=e.x,x+=e.x,b+=e.y,w+=e.y,E+=e.y);var T=X(g,b,k,w,x,E,e,r);a=a.concat(T),e.bezierReflectionPoint=[x+(x-k),E+(E-w)]}break;case"S":case"s":var S="s"===t.key;if(t.data.length>=4){var _=+t.data[0],P=+t.data[1],C=+t.data[2],M=+t.data[3];S&&(_+=e.x,C+=e.x,P+=e.y,M+=e.y);var O=_,N=P,z=n?n.key:"",A=null;"c"!==z&&"C"!==z&&"s"!==z&&"S"!==z||(A=e.bezierReflectionPoint),A&&(O=A[0],N=A[1]);var I=X(O,N,_,P,C,M,e,r);a=a.concat(I),e.bezierReflectionPoint=[C+(C-_),M+(M-P)]}break;case"Q":case"q":var R="q"===t.key;if(t.data.length>=4){var j=+t.data[0],L=+t.data[1],D=+t.data[2],U=+t.data[3];R&&(j+=e.x,D+=e.x,L+=e.y,U+=e.y);var F=1*(1+.2*r.roughness),W=1.5*(1+.22*r.roughness);a.push({op:"move",data:[e.x+B(F,r),e.y+B(F,r)]});var V=[D+B(F,r),U+B(F,r)];a.push({op:"qcurveTo",data:[j+B(F,r),L+B(F,r),V[0],V[1]]}),a.push({op:"move",data:[e.x+B(W,r),e.y+B(W,r)]}),V=[D+B(W,r),U+B(W,r)],a.push({op:"qcurveTo",data:[j+B(W,r),L+B(W,r),V[0],V[1]]}),e.setPosition(V[0],V[1]),e.quadReflectionPoint=[D+(D-j),U+(U-L)]}break;case"T":case"t":var q="t"===t.key;if(t.data.length>=2){var H=+t.data[0],Q=+t.data[1];q&&(H+=e.x,Q+=e.y);var G=H,K=Q,Y=n?n.key:"",Z=null;"q"!==Y&&"Q"!==Y&&"t"!==Y&&"T"!==Y||(Z=e.quadReflectionPoint),Z&&(G=Z[0],K=Z[1]);var J=1*(1+.2*r.roughness),ee=1.5*(1+.22*r.roughness);a.push({op:"move",data:[e.x+B(J,r),e.y+B(J,r)]});var te=[H+B(J,r),Q+B(J,r)];a.push({op:"qcurveTo",data:[G+B(J,r),K+B(J,r),te[0],te[1]]}),a.push({op:"move",data:[e.x+B(ee,r),e.y+B(ee,r)]}),te=[H+B(ee,r),Q+B(ee,r)],a.push({op:"qcurveTo",data:[G+B(ee,r),K+B(ee,r),te[0],te[1]]}),e.setPosition(te[0],te[1]),e.quadReflectionPoint=[H+(H-G),Q+(Q-K)]}break;case"A":case"a":var ne="a"===t.key;if(t.data.length>=7){var re=+t.data[0],ae=+t.data[1],ie=+t.data[2],le=+t.data[3],oe=+t.data[4],ue=+t.data[5],se=+t.data[6];if(ne&&(ue+=e.x,se+=e.y),ue===e.x&&se===e.y)break;if(0===re||0===ae)a=a.concat($(e.x,e.y,ue,se,r)),e.setPosition(ue,se);else for(var ce=0;ce<1;ce++)for(var fe=new h([e.x,e.y],[ue,se],[re,ae],ie,!!le,!!oe),de=fe.getNextSegment();de;){var pe=X(de.cp1[0],de.cp1[1],de.cp2[0],de.cp2[1],de.to[0],de.to[1],e,r);a=a.concat(pe),de=fe.getNextSegment()}}}return a}var Z=function(e){function t(){return Object(r.a)(this,t),Object(i.a)(this,Object(l.a)(t).apply(this,arguments))}return Object(o.a)(t,e),Object(a.a)(t,[{key:"line",value:function(e,t,n,r,a){var i=this._options(a);return this._drawable("line",[A(e,t,n,r,i)],i)}},{key:"rectangle",value:function(e,t,n,r,a){var i=this._options(a),l=[];if(i.fill){var o=[[e,t],[e+n,t],[e+n,t+r],[e,t+r]];"solid"===i.fillStyle?l.push(U(o,i)):l.push(F(o,i))}return l.push(R(e,t,n,r,i)),this._drawable("rectangle",l,i)}},{key:"ellipse",value:function(e,t,n,r,a){var i=this._options(a),l=[];if(i.fill)if("solid"===i.fillStyle){var o=L(e,t,n,r,i);o.type="fillPath",l.push(o)}else l.push(function(e,t,n,r,a){return N(a,z).fillEllipse(e,t,n,r,a)}(e,t,n,r,i));return l.push(L(e,t,n,r,i)),this._drawable("ellipse",l,i)}},{key:"circle",value:function(e,t,n,r){var a=this.ellipse(e,t,n,n,r);return a.shape="circle",a}},{key:"linearPath",value:function(e,t){var n=this._options(t);return this._drawable("linearPath",[I(e,!1,n)],n)}},{key:"arc",value:function(e,t,n,r,a,i){var l=arguments.length>6&&void 0!==arguments[6]&&arguments[6],o=arguments.length>7?arguments[7]:void 0,u=this._options(o),s=[];if(l&&u.fill)if("solid"===u.fillStyle){var c=D(e,t,n,r,a,i,!0,!1,u);c.type="fillPath",s.push(c)}else s.push(W(e,t,n,r,a,i,u));return s.push(D(e,t,n,r,a,i,l,!0,u)),this._drawable("arc",s,u)}},{key:"curve",value:function(e,t){var n=this._options(t);return this._drawable("curve",[j(e,n)],n)}},{key:"polygon",value:function(e,t){var n=this._options(t),r=[];if(n.fill)if("solid"===n.fillStyle)r.push(U(e,n));else{var a=this.computePolygonSize(e),i=F([[0,0],[a[0],0],[a[0],a[1]],[0,a[1]]],n);i.type="path2Dpattern",i.size=a,i.path=this.polygonPath(e),r.push(i)}return r.push(I(e,!0,n)),this._drawable("polygon",r,n)}},{key:"path",value:function(e,t){var n=this._options(t),r=[];if(!e)return this._drawable("path",r,n);if(n.fill)if("solid"===n.fillStyle){var a={type:"path2Dfill",path:e,ops:[]};r.push(a)}else{var i=this.computePathSize(e),l=F([[0,0],[i[0],0],[i[0],i[1]],[0,i[1]]],n);l.type="path2Dpattern",l.size=i,l.path=e,r.push(l)}return r.push(function(e,t){e=(e||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");var n=new p(e);if(t.simplification){var r=new v(n.linearPoints,n.closed).fit(t.simplification);n=new p(r)}for(var a=[],i=n.segments||[],l=0;l0?i[l-1]:null,t);o&&o.length&&(a=a.concat(o))}return{type:"path",ops:a}}(e,n)),this._drawable("path",r,n)}}]),t}(s),J="undefined"!==typeof document,ee=function(e){function t(e,n){var a;return Object(r.a)(this,t),(a=Object(i.a)(this,Object(l.a)(t).call(this,e))).gen=new Z(n||null,a.canvas),a}return Object(o.a)(t,e),Object(a.a)(t,[{key:"getDefaultOptions",value:function(){return this.gen.defaultOptions}},{key:"line",value:function(e,t,n,r,a){var i=this.gen.line(e,t,n,r,a);return this.draw(i),i}},{key:"rectangle",value:function(e,t,n,r,a){var i=this.gen.rectangle(e,t,n,r,a);return this.draw(i),i}},{key:"ellipse",value:function(e,t,n,r,a){var i=this.gen.ellipse(e,t,n,r,a);return this.draw(i),i}},{key:"circle",value:function(e,t,n,r){var a=this.gen.circle(e,t,n,r);return this.draw(a),a}},{key:"linearPath",value:function(e,t){var n=this.gen.linearPath(e,t);return this.draw(n),n}},{key:"polygon",value:function(e,t){var n=this.gen.polygon(e,t);return this.draw(n),n}},{key:"arc",value:function(e,t,n,r,a,i){var l=arguments.length>6&&void 0!==arguments[6]&&arguments[6],o=arguments.length>7?arguments[7]:void 0,u=this.gen.arc(e,t,n,r,a,i,l,o);return this.draw(u),u}},{key:"curve",value:function(e,t){var n=this.gen.curve(e,t);return this.draw(n),n}},{key:"path",value:function(e,t){var n=this.gen.path(e,t);return this.draw(n),n}},{key:"generator",get:function(){return this.gen}}]),t}(function(){function e(t){Object(r.a)(this,e),this.canvas=t,this.ctx=this.canvas.getContext("2d")}return Object(a.a)(e,[{key:"draw",value:function(e){var t=e.sets||[],n=e.options||this.getDefaultOptions(),r=this.ctx,a=!0,i=!1,l=void 0;try{for(var o,u=t[Symbol.iterator]();!(a=(o=u.next()).done);a=!0){var s=o.value;switch(s.type){case"path":r.save(),r.strokeStyle=n.stroke,r.lineWidth=n.strokeWidth,this._drawToContext(r,s),r.restore();break;case"fillPath":r.save(),r.fillStyle=n.fill||"",this._drawToContext(r,s),r.restore();break;case"fillSketch":this.fillSketch(r,s,n);break;case"path2Dfill":this.ctx.save(),this.ctx.fillStyle=n.fill||"";var c=new Path2D(s.path);this.ctx.fill(c),this.ctx.restore();break;case"path2Dpattern":var f=this.canvas.ownerDocument||J&&document;if(f){var d=s.size,p=f.createElement("canvas"),h=p.getContext("2d"),v=this.computeBBox(s.path);v&&(v.width||v.height)?(p.width=this.canvas.width,p.height=this.canvas.height,h.translate(v.x||0,v.y||0)):(p.width=d[0],p.height=d[1]),this.fillSketch(h,s,n),this.ctx.save(),this.ctx.fillStyle=this.ctx.createPattern(p,"repeat");var m=new Path2D(s.path);this.ctx.fill(m),this.ctx.restore()}else console.error("Cannot render path2Dpattern. No defs/document defined.")}}}catch(y){i=!0,l=y}finally{try{a||null==u.return||u.return()}finally{if(i)throw l}}}},{key:"computeBBox",value:function(e){if(J)try{var t="http://www.w3.org/2000/svg",n=document.createElementNS(t,"svg");n.setAttribute("width","0"),n.setAttribute("height","0");var r=self.document.createElementNS(t,"path");r.setAttribute("d",e),n.appendChild(r),document.body.appendChild(n);var a=r.getBBox();return document.body.removeChild(n),a}catch(i){}return null}},{key:"fillSketch",value:function(e,t,n){var r=n.fillWeight;r<0&&(r=n.strokeWidth/2),e.save(),e.strokeStyle=n.fill||"",e.lineWidth=r,this._drawToContext(e,t),e.restore()}},{key:"_drawToContext",value:function(e,t){e.beginPath();var n=!0,r=!1,a=void 0;try{for(var i,l=t.ops[Symbol.iterator]();!(n=(i=l.next()).done);n=!0){var o=i.value,u=o.data;switch(o.op){case"move":e.moveTo(u[0],u[1]);break;case"bcurveTo":e.bezierCurveTo(u[0],u[1],u[2],u[3],u[4],u[5]);break;case"qcurveTo":e.quadraticCurveTo(u[0],u[1],u[2],u[3]);break;case"lineTo":e.lineTo(u[0],u[1])}}}catch(s){r=!0,a=s}finally{try{n||null==l.return||l.return()}finally{if(r)throw a}}"fillPath"===t.type?e.fill():e.stroke()}}]),e}()),te="undefined"!==typeof document,ne=function(e){function t(e,n){var a;return Object(r.a)(this,t),(a=Object(i.a)(this,Object(l.a)(t).call(this,e))).gen=new Z(n||null,a.svg),a}return Object(o.a)(t,e),Object(a.a)(t,[{key:"getDefaultOptions",value:function(){return this.gen.defaultOptions}},{key:"opsToPath",value:function(e){return this.gen.opsToPath(e)}},{key:"line",value:function(e,t,n,r,a){var i=this.gen.line(e,t,n,r,a);return this.draw(i)}},{key:"rectangle",value:function(e,t,n,r,a){var i=this.gen.rectangle(e,t,n,r,a);return this.draw(i)}},{key:"ellipse",value:function(e,t,n,r,a){var i=this.gen.ellipse(e,t,n,r,a);return this.draw(i)}},{key:"circle",value:function(e,t,n,r){var a=this.gen.circle(e,t,n,r);return this.draw(a)}},{key:"linearPath",value:function(e,t){var n=this.gen.linearPath(e,t);return this.draw(n)}},{key:"polygon",value:function(e,t){var n=this.gen.polygon(e,t);return this.draw(n)}},{key:"arc",value:function(e,t,n,r,a,i){var l=arguments.length>6&&void 0!==arguments[6]&&arguments[6],o=arguments.length>7?arguments[7]:void 0,u=this.gen.arc(e,t,n,r,a,i,l,o);return this.draw(u)}},{key:"curve",value:function(e,t){var n=this.gen.curve(e,t);return this.draw(n)}},{key:"path",value:function(e,t){var n=this.gen.path(e,t);return this.draw(n)}},{key:"generator",get:function(){return this.gen}}]),t}(function(){function e(t){Object(r.a)(this,e),this.svg=t}return Object(a.a)(e,[{key:"draw",value:function(e){var t=e.sets||[],n=e.options||this.getDefaultOptions(),r=this.svg.ownerDocument||window.document,a=r.createElementNS("http://www.w3.org/2000/svg","g"),i=!0,l=!1,o=void 0;try{for(var u,s=t[Symbol.iterator]();!(i=(u=s.next()).done);i=!0){var c=u.value,f=null;switch(c.type){case"path":(f=r.createElementNS("http://www.w3.org/2000/svg","path")).setAttribute("d",this.opsToPath(c)),f.style.stroke=n.stroke,f.style.strokeWidth=n.strokeWidth+"",f.style.fill="none";break;case"fillPath":(f=r.createElementNS("http://www.w3.org/2000/svg","path")).setAttribute("d",this.opsToPath(c)),f.style.stroke="none",f.style.strokeWidth="0",f.style.fill=n.fill||null;break;case"fillSketch":f=this.fillSketch(r,c,n);break;case"path2Dfill":(f=r.createElementNS("http://www.w3.org/2000/svg","path")).setAttribute("d",c.path||""),f.style.stroke="none",f.style.strokeWidth="0",f.style.fill=n.fill||null;break;case"path2Dpattern":if(this.defs){var d=c.size,p=r.createElementNS("http://www.w3.org/2000/svg","pattern"),h="rough-".concat(Math.floor(Math.random()*(Number.MAX_SAFE_INTEGER||999999)));p.setAttribute("id",h),p.setAttribute("x","0"),p.setAttribute("y","0"),p.setAttribute("width","1"),p.setAttribute("height","1"),p.setAttribute("height","1"),p.setAttribute("viewBox","0 0 ".concat(Math.round(d[0])," ").concat(Math.round(d[1]))),p.setAttribute("patternUnits","objectBoundingBox");var v=this.fillSketch(r,c,n);p.appendChild(v),this.defs.appendChild(p),(f=r.createElementNS("http://www.w3.org/2000/svg","path")).setAttribute("d",c.path||""),f.style.stroke="none",f.style.strokeWidth="0",f.style.fill="url(#".concat(h,")")}else console.error("Cannot render path2Dpattern. No defs/document defined.")}f&&a.appendChild(f)}}catch(m){l=!0,o=m}finally{try{i||null==s.return||s.return()}finally{if(l)throw o}}return a}},{key:"fillSketch",value:function(e,t,n){var r=n.fillWeight;r<0&&(r=n.strokeWidth/2);var a=e.createElementNS("http://www.w3.org/2000/svg","path");return a.setAttribute("d",this.opsToPath(t)),a.style.stroke=n.fill||null,a.style.strokeWidth=r+"",a.style.fill="none",a}},{key:"defs",get:function(){var e=this.svg.ownerDocument||te&&document;if(e&&!this._defs){var t=e.createElementNS("http://www.w3.org/2000/svg","defs");this.svg.firstChild?this.svg.insertBefore(t,this.svg.firstChild):this.svg.appendChild(t),this._defs=t}return this._defs||null}}]),e}());t.a={canvas:function(e,t){return new ee(e,t)},svg:function(e,t){return new ne(e,t)},generator:function(e,t){return new Z(e,t)}}},function(e,t,n){"use strict";!function e(){if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}}(),e.exports=n(14)},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;tN.length&&N.push(e)}function I(e,t,n){return null==e?0:function e(t,n,r,a){var o=typeof t;"undefined"!==o&&"boolean"!==o||(t=null);var u=!1;if(null===t)u=!0;else switch(o){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case i:case l:u=!0}}if(u)return r(a,t,""===n?"."+R(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var s=0;s elem which we'll use to download the image\n const link = document.createElement(\"a\");\n link.setAttribute(\"download\", name);\n link.setAttribute(\"href\", data);\n link.click();\n\n // clean up\n link.remove();\n}\n\nfunction rotate(x1: number, y1: number, x2: number, y2: number, angle: number) {\n // π‘Žβ€²π‘₯=(π‘Žπ‘₯βˆ’π‘π‘₯)cosπœƒβˆ’(π‘Žπ‘¦βˆ’π‘π‘¦)sinπœƒ+𝑐π‘₯\n // π‘Žβ€²π‘¦=(π‘Žπ‘₯βˆ’π‘π‘₯)sinπœƒ+(π‘Žπ‘¦βˆ’π‘π‘¦)cosπœƒ+𝑐𝑦.\n // https://math.stackexchange.com/questions/2204520/how-do-i-rotate-a-line-segment-in-a-specific-point-on-the-line\n return [\n (x1 - x2) * Math.cos(angle) - (y1 - y2) * Math.sin(angle) + x2,\n (x1 - x2) * Math.sin(angle) + (y1 - y2) * Math.cos(angle) + y2\n ];\n}\n\n// Casting second argument (DrawingSurface) to any,\n// because it is requred by TS definitions and not required at runtime\nconst generator = rough.generator(null, null as any);\n\nfunction isTextElement(\n element: ExcalidrawElement\n): element is ExcalidrawTextElement {\n return element.type === \"text\";\n}\n\nfunction isInputLike(\n target: Element | EventTarget | null\n): target is HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement {\n return (\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement\n );\n}\n\nfunction getArrowPoints(element: ExcalidrawElement) {\n const x1 = 0;\n const y1 = 0;\n const x2 = element.width;\n const y2 = element.height;\n\n const size = 30; // pixels\n const distance = Math.hypot(x2 - x1, y2 - y1);\n // Scale down the arrow until we hit a certain size so that it doesn't look weird\n const minSize = Math.min(size, distance / 2);\n const xs = x2 - ((x2 - x1) / distance) * minSize;\n const ys = y2 - ((y2 - y1) / distance) * minSize;\n\n const angle = 20; // degrees\n const [x3, y3] = rotate(xs, ys, x2, y2, (-angle * Math.PI) / 180);\n const [x4, y4] = rotate(xs, ys, x2, y2, (angle * Math.PI) / 180);\n\n return [x1, y1, x2, y2, x3, y3, x4, y4];\n}\n\nfunction generateDraw(element: ExcalidrawElement) {\n if (element.type === \"selection\") {\n element.draw = (rc, context, { scrollX, scrollY }) => {\n const fillStyle = context.fillStyle;\n context.fillStyle = \"rgba(0, 0, 255, 0.10)\";\n context.fillRect(\n element.x + scrollX,\n element.y + scrollY,\n element.width,\n element.height\n );\n context.fillStyle = fillStyle;\n };\n } else if (element.type === \"rectangle\") {\n const shape = withCustomMathRandom(element.seed, () => {\n return generator.rectangle(0, 0, element.width, element.height, {\n stroke: element.strokeColor,\n fill: element.backgroundColor\n });\n });\n element.draw = (rc, context, { scrollX, scrollY }) => {\n context.translate(element.x + scrollX, element.y + scrollY);\n rc.draw(shape);\n context.translate(-element.x - scrollX, -element.y - scrollY);\n };\n } else if (element.type === \"ellipse\") {\n const shape = withCustomMathRandom(element.seed, () =>\n generator.ellipse(\n element.width / 2,\n element.height / 2,\n element.width,\n element.height,\n { stroke: element.strokeColor, fill: element.backgroundColor }\n )\n );\n element.draw = (rc, context, { scrollX, scrollY }) => {\n context.translate(element.x + scrollX, element.y + scrollY);\n rc.draw(shape);\n context.translate(-element.x - scrollX, -element.y - scrollY);\n };\n } else if (element.type === \"arrow\") {\n const [x1, y1, x2, y2, x3, y3, x4, y4] = getArrowPoints(element);\n const shapes = withCustomMathRandom(element.seed, () => [\n // \\\n generator.line(x3, y3, x2, y2, { stroke: element.strokeColor }),\n // -----\n generator.line(x1, y1, x2, y2, { stroke: element.strokeColor }),\n // /\n generator.line(x4, y4, x2, y2, { stroke: element.strokeColor })\n ]);\n\n element.draw = (rc, context, { scrollX, scrollY }) => {\n context.translate(element.x + scrollX, element.y + scrollY);\n shapes.forEach(shape => rc.draw(shape));\n context.translate(-element.x - scrollX, -element.y - scrollY);\n };\n return;\n } else if (isTextElement(element)) {\n element.draw = (rc, context, { scrollX, scrollY }) => {\n const font = context.font;\n context.font = element.font;\n const fillStyle = context.fillStyle;\n context.fillStyle = element.strokeColor;\n context.fillText(\n element.text,\n element.x + scrollX,\n element.y + element.actualBoundingBoxAscent + scrollY\n );\n context.fillStyle = fillStyle;\n context.font = font;\n };\n } else {\n throw new Error(\"Unimplemented type \" + element.type);\n }\n}\n\n// If the element is created from right to left, the width is going to be negative\n// This set of functions retrieves the absolute position of the 4 points.\n// We can't just always normalize it since we need to remember the fact that an arrow\n// is pointing left or right.\nfunction getElementAbsoluteX1(element: ExcalidrawElement) {\n return element.width >= 0 ? element.x : element.x + element.width;\n}\nfunction getElementAbsoluteX2(element: ExcalidrawElement) {\n return element.width >= 0 ? element.x + element.width : element.x;\n}\nfunction getElementAbsoluteY1(element: ExcalidrawElement) {\n return element.height >= 0 ? element.y : element.y + element.height;\n}\nfunction getElementAbsoluteY2(element: ExcalidrawElement) {\n return element.height >= 0 ? element.y + element.height : element.y;\n}\n\nfunction setSelection(selection: ExcalidrawElement) {\n const selectionX1 = getElementAbsoluteX1(selection);\n const selectionX2 = getElementAbsoluteX2(selection);\n const selectionY1 = getElementAbsoluteY1(selection);\n const selectionY2 = getElementAbsoluteY2(selection);\n elements.forEach(element => {\n const elementX1 = getElementAbsoluteX1(element);\n const elementX2 = getElementAbsoluteX2(element);\n const elementY1 = getElementAbsoluteY1(element);\n const elementY2 = getElementAbsoluteY2(element);\n element.isSelected =\n element.type !== \"selection\" &&\n selectionX1 <= elementX1 &&\n selectionY1 <= elementY1 &&\n selectionX2 >= elementX2 &&\n selectionY2 >= elementY2;\n });\n}\n\nfunction clearSelection() {\n elements.forEach(element => {\n element.isSelected = false;\n });\n}\n\nfunction resetCursor() {\n document.documentElement.style.cursor = \"\";\n}\n\nfunction deleteSelectedElements() {\n for (let i = elements.length - 1; i >= 0; --i) {\n if (elements[i].isSelected) {\n elements.splice(i, 1);\n }\n }\n}\n\nfunction save(state: AppState) {\n localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(elements));\n localStorage.setItem(LOCAL_STORAGE_KEY_STATE, JSON.stringify(state));\n}\n\nfunction restoreFromLocalStorage() {\n const savedElements = localStorage.getItem(LOCAL_STORAGE_KEY);\n const savedState = localStorage.getItem(LOCAL_STORAGE_KEY_STATE);\n\n return restore(savedElements, savedState);\n}\n\nfunction restore(\n savedElements: string | ExcalidrawElement[] | null,\n savedState: string | null\n) {\n try {\n if (savedElements) {\n elements.splice(\n 0,\n elements.length,\n ...(typeof savedElements === \"string\"\n ? JSON.parse(savedElements)\n : savedElements)\n );\n elements.forEach((element: ExcalidrawElement) => generateDraw(element));\n }\n\n return savedState ? JSON.parse(savedState) : null;\n } catch (e) {\n elements.splice(0, elements.length);\n return null;\n }\n}\n\ntype AppState = {\n draggingElement: ExcalidrawElement | null;\n resizingElement: ExcalidrawElement | null;\n elementType: string;\n exportBackground: boolean;\n currentItemStrokeColor: string;\n currentItemBackgroundColor: string;\n viewBackgroundColor: string;\n scrollX: number;\n scrollY: number;\n};\n\nconst KEYS = {\n ARROW_LEFT: \"ArrowLeft\",\n ARROW_RIGHT: \"ArrowRight\",\n ARROW_DOWN: \"ArrowDown\",\n ARROW_UP: \"ArrowUp\",\n ESCAPE: \"Escape\",\n DELETE: \"Delete\",\n BACKSPACE: \"Backspace\"\n};\n\n// We inline font-awesome icons in order to save on js size rather than including the font awesome react library\nconst SHAPES = [\n {\n icon: (\n // fa-mouse-pointer\n \n \n \n ),\n value: \"selection\"\n },\n {\n icon: (\n // fa-square\n \n \n \n ),\n value: \"rectangle\"\n },\n {\n icon: (\n // fa-circle\n \n \n \n ),\n value: \"ellipse\"\n },\n {\n icon: (\n // fa-long-arrow-alt-right\n \n \n \n ),\n value: \"arrow\"\n },\n {\n icon: (\n // fa-font\n \n \n \n ),\n value: \"text\"\n }\n];\n\nconst shapesShortcutKeys = SHAPES.map(shape => shape.value[0]);\n\nfunction findElementByKey(key: string) {\n const defaultElement = \"selection\";\n return SHAPES.reduce((element, shape) => {\n if (shape.value[0] !== key) return element;\n\n return shape.value;\n }, defaultElement);\n}\n\nfunction isArrowKey(keyCode: string) {\n return (\n keyCode === KEYS.ARROW_LEFT ||\n keyCode === KEYS.ARROW_RIGHT ||\n keyCode === KEYS.ARROW_DOWN ||\n keyCode === KEYS.ARROW_UP\n );\n}\n\nfunction getSelectedIndices() {\n const selectedIndices: number[] = [];\n elements.forEach((element, index) => {\n if (element.isSelected) {\n selectedIndices.push(index);\n }\n });\n return selectedIndices;\n}\n\nconst someElementIsSelected = () =>\n elements.some(element => element.isSelected);\n\nconst ELEMENT_SHIFT_TRANSLATE_AMOUNT = 5;\nconst ELEMENT_TRANSLATE_AMOUNT = 1;\n\nlet lastCanvasWidth = -1;\nlet lastCanvasHeight = -1;\n\nlet lastMouseUp: ((e: any) => void) | null = null;\n\nclass App extends React.Component<{}, AppState> {\n public componentDidMount() {\n document.addEventListener(\"keydown\", this.onKeyDown, false);\n window.addEventListener(\"resize\", this.onResize, false);\n\n const savedState = restoreFromLocalStorage();\n if (savedState) {\n this.setState(savedState);\n }\n }\n\n public componentWillUnmount() {\n document.removeEventListener(\"keydown\", this.onKeyDown, false);\n window.removeEventListener(\"resize\", this.onResize, false);\n }\n\n public state: AppState = {\n draggingElement: null,\n resizingElement: null,\n elementType: \"selection\",\n exportBackground: true,\n currentItemStrokeColor: \"#000000\",\n currentItemBackgroundColor: \"#ffffff\",\n viewBackgroundColor: \"#ffffff\",\n scrollX: 0,\n scrollY: 0\n };\n\n private onResize = () => {\n this.forceUpdate();\n };\n\n private onKeyDown = (event: KeyboardEvent) => {\n if (isInputLike(event.target)) return;\n\n if (event.key === KEYS.ESCAPE) {\n clearSelection();\n this.forceUpdate();\n event.preventDefault();\n } else if (event.key === KEYS.BACKSPACE || event.key === KEYS.DELETE) {\n deleteSelectedElements();\n this.forceUpdate();\n event.preventDefault();\n } else if (isArrowKey(event.key)) {\n const step = event.shiftKey\n ? ELEMENT_SHIFT_TRANSLATE_AMOUNT\n : ELEMENT_TRANSLATE_AMOUNT;\n elements.forEach(element => {\n if (element.isSelected) {\n if (event.key === KEYS.ARROW_LEFT) element.x -= step;\n else if (event.key === KEYS.ARROW_RIGHT) element.x += step;\n else if (event.key === KEYS.ARROW_UP) element.y -= step;\n else if (event.key === KEYS.ARROW_DOWN) element.y += step;\n }\n });\n this.forceUpdate();\n event.preventDefault();\n\n // Send backward: Cmd-Shift-Alt-B\n } else if (\n event.metaKey &&\n event.shiftKey &&\n event.altKey &&\n event.code === \"KeyB\"\n ) {\n this.moveOneLeft();\n event.preventDefault();\n\n // Send to back: Cmd-Shift-B\n } else if (event.metaKey && event.shiftKey && event.code === \"KeyB\") {\n this.moveAllLeft();\n event.preventDefault();\n\n // Bring forward: Cmd-Shift-Alt-F\n } else if (\n event.metaKey &&\n event.shiftKey &&\n event.altKey &&\n event.code === \"KeyF\"\n ) {\n this.moveOneRight();\n event.preventDefault();\n\n // Bring to front: Cmd-Shift-F\n } else if (event.metaKey && event.shiftKey && event.code === \"KeyF\") {\n this.moveAllRight();\n event.preventDefault();\n\n // Select all: Cmd-A\n } else if (event.metaKey && event.code === \"KeyA\") {\n elements.forEach(element => {\n element.isSelected = true;\n });\n this.forceUpdate();\n event.preventDefault();\n } else if (shapesShortcutKeys.includes(event.key.toLowerCase())) {\n this.setState({ elementType: findElementByKey(event.key) });\n } else if (event.metaKey && event.code === \"KeyZ\") {\n let lastEntry = stateHistory.pop();\n // If nothing was changed since last, take the previous one\n if (generateHistoryCurrentEntry() === lastEntry) {\n lastEntry = stateHistory.pop();\n }\n if (lastEntry !== undefined) {\n restoreHistoryEntry(lastEntry);\n }\n this.forceUpdate();\n event.preventDefault();\n }\n };\n\n private deleteSelectedElements = () => {\n deleteSelectedElements();\n this.forceUpdate();\n };\n\n private clearCanvas = () => {\n if (window.confirm(\"This will clear the whole canvas. Are you sure?\")) {\n elements.splice(0, elements.length);\n this.setState({\n viewBackgroundColor: \"#ffffff\",\n scrollX: 0,\n scrollY: 0\n });\n this.forceUpdate();\n }\n };\n\n private moveAllLeft = () => {\n moveAllLeft(elements, getSelectedIndices());\n this.forceUpdate();\n };\n\n private moveOneLeft = () => {\n moveOneLeft(elements, getSelectedIndices());\n this.forceUpdate();\n };\n\n private moveAllRight = () => {\n moveAllRight(elements, getSelectedIndices());\n this.forceUpdate();\n };\n\n private moveOneRight = () => {\n moveOneRight(elements, getSelectedIndices());\n this.forceUpdate();\n };\n\n private removeWheelEventListener: (() => void) | undefined;\n\n public render() {\n const canvasWidth = window.innerWidth - CANVAS_WINDOW_OFFSET_LEFT;\n const canvasHeight = window.innerHeight - CANVAS_WINDOW_OFFSET_TOP;\n\n return (\n {\n e.clipboardData.setData(\n \"text/plain\",\n JSON.stringify(elements.filter(element => element.isSelected))\n );\n deleteSelectedElements();\n this.forceUpdate();\n e.preventDefault();\n }}\n onCopy={e => {\n e.clipboardData.setData(\n \"text/plain\",\n JSON.stringify(elements.filter(element => element.isSelected))\n );\n e.preventDefault();\n }}\n onPaste={e => {\n const paste = e.clipboardData.getData(\"text\");\n let parsedElements;\n try {\n parsedElements = JSON.parse(paste);\n } catch (e) {}\n if (\n Array.isArray(parsedElements) &&\n parsedElements.length > 0 &&\n parsedElements[0].type // need to implement a better check here...\n ) {\n clearSelection();\n parsedElements.forEach(parsedElement => {\n parsedElement.x += 10;\n parsedElement.y += 10;\n parsedElement.seed = randomSeed();\n generateDraw(parsedElement);\n elements.push(parsedElement);\n });\n this.forceUpdate();\n }\n e.preventDefault();\n }}\n >\n
\n

Shapes

\n
\n {SHAPES.map(({ value, icon }) => (\n \n ))}\n
\n

Colors

\n
\n \n \n \n
\n

Canvas

\n
\n \n Clear canvas\n \n
\n

Export

\n
\n {\n exportAsPNG(this.state);\n }}\n >\n Export to png\n \n \n
\n

Save/Load

\n
\n {\n saveAsJSON();\n }}\n >\n Save as...\n \n {\n loadFromJSON().then(() => this.forceUpdate());\n }}\n >\n Load file...\n \n
\n {someElementIsSelected() && (\n <>\n

Shape options

\n
\n \n \n \n \n \n
\n \n )}\n
\n {\n if (this.removeWheelEventListener) {\n this.removeWheelEventListener();\n this.removeWheelEventListener = undefined;\n }\n if (canvas) {\n canvas.addEventListener(\"wheel\", this.handleWheel, {\n passive: false\n });\n this.removeWheelEventListener = () =>\n canvas.removeEventListener(\"wheel\", this.handleWheel);\n\n // Whenever React sets the width/height of the canvas element,\n // the context loses the scale transform. We need to re-apply it\n if (\n canvasWidth !== lastCanvasWidth ||\n canvasHeight !== lastCanvasHeight\n ) {\n lastCanvasWidth = canvasWidth;\n lastCanvasHeight = canvasHeight;\n canvas\n .getContext(\"2d\")!\n .scale(window.devicePixelRatio, window.devicePixelRatio);\n }\n }\n }}\n onMouseDown={e => {\n if (lastMouseUp !== null) {\n // Unfortunately, sometimes we don't get a mouseup after a mousedown,\n // this can happen when a contextual menu or alert is triggered. In order to avoid\n // being in a weird state, we clean up on the next mousedown\n lastMouseUp(e);\n }\n // only handle left mouse button\n if (e.button !== 0) return;\n // fixes mousemove causing selection of UI texts #32\n e.preventDefault();\n // Preventing the event above disables default behavior\n // of defocusing potentially focused input, which is what we want\n // when clicking inside the canvas.\n if (isInputLike(document.activeElement)) {\n document.activeElement.blur();\n }\n\n const x =\n e.clientX - CANVAS_WINDOW_OFFSET_LEFT - this.state.scrollX;\n const y = e.clientY - CANVAS_WINDOW_OFFSET_TOP - this.state.scrollY;\n const element = newElement(\n this.state.elementType,\n x,\n y,\n this.state.currentItemStrokeColor,\n this.state.currentItemBackgroundColor\n );\n let resizeHandle: string | false = false;\n let isDraggingElements = false;\n let isResizingElements = false;\n if (this.state.elementType === \"selection\") {\n const resizeElement = elements.find(element => {\n return resizeTest(element, x, y, {\n scrollX: this.state.scrollX,\n scrollY: this.state.scrollY,\n viewBackgroundColor: this.state.viewBackgroundColor\n });\n });\n\n this.setState({\n resizingElement: resizeElement ? resizeElement : null\n });\n\n if (resizeElement) {\n resizeHandle = resizeTest(resizeElement, x, y, {\n scrollX: this.state.scrollX,\n scrollY: this.state.scrollY,\n viewBackgroundColor: this.state.viewBackgroundColor\n });\n document.documentElement.style.cursor = `${resizeHandle}-resize`;\n isResizingElements = true;\n } else {\n let hitElement = null;\n // We need to to hit testing from front (end of the array) to back (beginning of the array)\n for (let i = elements.length - 1; i >= 0; --i) {\n if (hitTest(elements[i], x, y)) {\n hitElement = elements[i];\n break;\n }\n }\n\n // If we click on something\n if (hitElement) {\n if (hitElement.isSelected) {\n // If that element is not already selected, do nothing,\n // we're likely going to drag it\n } else {\n // We unselect every other elements unless shift is pressed\n if (!e.shiftKey) {\n clearSelection();\n }\n // No matter what, we select it\n hitElement.isSelected = true;\n }\n } else {\n // If we don't click on anything, let's remove all the selected elements\n clearSelection();\n }\n\n isDraggingElements = someElementIsSelected();\n\n if (isDraggingElements) {\n document.documentElement.style.cursor = \"move\";\n }\n }\n }\n\n if (isTextElement(element)) {\n resetCursor();\n const text = prompt(\"What text do you want?\");\n if (text === null) {\n return;\n }\n element.text = text;\n element.font = \"20px Virgil\";\n const font = context.font;\n context.font = element.font;\n const {\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n width\n } = context.measureText(element.text);\n element.actualBoundingBoxAscent = actualBoundingBoxAscent;\n context.font = font;\n const height = actualBoundingBoxAscent + actualBoundingBoxDescent;\n // Center the text\n element.x -= width / 2;\n element.y -= actualBoundingBoxAscent;\n element.width = width;\n element.height = height;\n }\n\n generateDraw(element);\n elements.push(element);\n if (this.state.elementType === \"text\") {\n this.setState({\n draggingElement: null,\n elementType: \"selection\"\n });\n element.isSelected = true;\n } else {\n this.setState({ draggingElement: element });\n }\n\n let lastX = x;\n let lastY = y;\n\n const onMouseMove = (e: MouseEvent) => {\n const target = e.target;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n if (isResizingElements && this.state.resizingElement) {\n const el = this.state.resizingElement;\n const selectedElements = elements.filter(el => el.isSelected);\n if (selectedElements.length === 1) {\n const x =\n e.clientX - CANVAS_WINDOW_OFFSET_LEFT - this.state.scrollX;\n const y =\n e.clientY - CANVAS_WINDOW_OFFSET_TOP - this.state.scrollY;\n selectedElements.forEach(element => {\n switch (resizeHandle) {\n case \"nw\":\n element.width += element.x - lastX;\n element.height += element.y - lastY;\n element.x = lastX;\n element.y = lastY;\n break;\n case \"ne\":\n element.width = lastX - element.x;\n element.height += element.y - lastY;\n element.y = lastY;\n break;\n case \"sw\":\n element.width += element.x - lastX;\n element.x = lastX;\n element.height = lastY - element.y;\n break;\n case \"se\":\n element.width += x - lastX;\n if (e.shiftKey) {\n element.height = element.width;\n } else {\n element.height += y - lastY;\n }\n break;\n case \"n\":\n element.height += element.y - lastY;\n element.y = lastY;\n break;\n case \"w\":\n element.width += element.x - lastX;\n element.x = lastX;\n break;\n case \"s\":\n element.height = lastY - element.y;\n break;\n case \"e\":\n element.width = lastX - element.x;\n break;\n }\n\n el.x = element.x;\n el.y = element.y;\n generateDraw(el);\n });\n lastX = x;\n lastY = y;\n // We don't want to save history when resizing an element\n skipHistory = true;\n this.forceUpdate();\n return;\n }\n }\n\n if (isDraggingElements) {\n const selectedElements = elements.filter(el => el.isSelected);\n if (selectedElements.length) {\n const x =\n e.clientX - CANVAS_WINDOW_OFFSET_LEFT - this.state.scrollX;\n const y =\n e.clientY - CANVAS_WINDOW_OFFSET_TOP - this.state.scrollY;\n selectedElements.forEach(element => {\n element.x += x - lastX;\n element.y += y - lastY;\n });\n lastX = x;\n lastY = y;\n // We don't want to save history when dragging an element to initially size it\n skipHistory = true;\n this.forceUpdate();\n return;\n }\n }\n\n // It is very important to read this.state within each move event,\n // otherwise we would read a stale one!\n const draggingElement = this.state.draggingElement;\n if (!draggingElement) return;\n let width =\n e.clientX -\n CANVAS_WINDOW_OFFSET_LEFT -\n draggingElement.x -\n this.state.scrollX;\n let height =\n e.clientY -\n CANVAS_WINDOW_OFFSET_TOP -\n draggingElement.y -\n this.state.scrollY;\n draggingElement.width = width;\n // Make a perfect square or circle when shift is enabled\n draggingElement.height = e.shiftKey ? width : height;\n\n generateDraw(draggingElement);\n\n if (this.state.elementType === \"selection\") {\n setSelection(draggingElement);\n }\n // We don't want to save history when moving an element\n skipHistory = true;\n this.forceUpdate();\n };\n\n const onMouseUp = (e: MouseEvent) => {\n const { draggingElement, elementType } = this.state;\n\n lastMouseUp = null;\n window.removeEventListener(\"mousemove\", onMouseMove);\n window.removeEventListener(\"mouseup\", onMouseUp);\n\n resetCursor();\n\n // if no element is clicked, clear the selection and redraw\n if (draggingElement === null) {\n clearSelection();\n this.forceUpdate();\n return;\n }\n\n if (elementType === \"selection\") {\n if (isDraggingElements) {\n isDraggingElements = false;\n }\n elements.pop();\n } else {\n draggingElement.isSelected = true;\n }\n\n this.setState({\n draggingElement: null,\n elementType: \"selection\"\n });\n this.forceUpdate();\n };\n\n lastMouseUp = onMouseUp;\n\n window.addEventListener(\"mousemove\", onMouseMove);\n window.addEventListener(\"mouseup\", onMouseUp);\n\n // We don't want to save history on mouseDown, only on mouseUp when it's fully configured\n skipHistory = true;\n this.forceUpdate();\n }}\n />\n \n );\n }\n\n private handleWheel = (e: WheelEvent) => {\n e.preventDefault();\n const { deltaX, deltaY } = e;\n this.setState(state => ({\n scrollX: state.scrollX - deltaX,\n scrollY: state.scrollY - deltaY\n }));\n };\n\n componentDidUpdate() {\n renderScene(rc, canvas, {\n scrollX: this.state.scrollX,\n scrollY: this.state.scrollY,\n viewBackgroundColor: this.state.viewBackgroundColor\n });\n save(this.state);\n if (!skipHistory) {\n pushHistoryEntry(generateHistoryCurrentEntry());\n }\n skipHistory = false;\n }\n}\n\nconst rootElement = document.getElementById(\"root\");\nReactDOM.render(, rootElement);\nconst canvas = document.getElementById(\"canvas\") as HTMLCanvasElement;\nconst rc = rough.canvas(canvas);\nconst context = canvas.getContext(\"2d\")!;\n\nReactDOM.render(, rootElement);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/static/js/runtime-main.b019aae8.js b/static/js/runtime-main.b019aae8.js new file mode 100644 index 00000000..ce586966 --- /dev/null +++ b/static/js/runtime-main.b019aae8.js @@ -0,0 +1,2 @@ +!function(e){function r(r){for(var n,l,a=r[0],f=r[1],i=r[2],p=0,s=[];p