From 5bcfa5ec0bc68cf5fd1ba87827bce45f5ebb1376 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Mon, 26 Sep 2022 13:23:05 +1000 Subject: [PATCH] Fix and remove some scripts + use ajv/typescript-json-schema required by patches --- assets/schemas.json | Bin 553216 -> 1151869 bytes fosscord-server.code-workspace | 3 + package-lock.json | Bin 389890 -> 406720 bytes package.json | 11 ++- scripts/build.js | 72 ----------------- scripts/droptables.sql | 31 -------- scripts/generate_openapi.js | 137 --------------------------------- scripts/generate_schema.js | 9 +-- scripts/install.js | 23 ------ scripts/migrate_db_engine.js | 109 -------------------------- scripts/rights.js | 1 + 11 files changed, 12 insertions(+), 384 deletions(-) delete mode 100644 scripts/build.js delete mode 100644 scripts/droptables.sql delete mode 100644 scripts/generate_openapi.js delete mode 100644 scripts/install.js delete mode 100644 scripts/migrate_db_engine.js diff --git a/assets/schemas.json b/assets/schemas.json index 24acc85f4c3062c3b23496d8ab7730059bc2f910..f0b47515f9390f07fac0c2e74f75d99523bc7c23 100644 GIT binary patch literal 1151869 zcmeFae~;wGjW_=P_f-hG1NNWY^{o9kxif+QPJH)G;21ID%{_;B2W?HaW=3|mG-;`4 zcM{~iKV+#{EvZOWsekM^0UP#KPmA@7MY32`tdIWw|7GyW|EH;z<^NQxviWX#Uv7&0 zi|p_2iF?{TJ(TcE-rW3HF1!5Y;mO0cc__DCRkouXE?2QzRn4Mpx69z!sMM}gKMs{R;zw-TxeD8MAI??Ot}VBVYNhwE?Y32Yr*{x&%3>3;am1=(yDgpu{Ktp* z$*Zmu^18?30J_}!e{y9oM|Atr4gxZKO5gLc-fe&_-;aiso(|L82@2DzArXGhoe+%K zIHkEB%gyw0PMqL|WJo-bzu}{ND~$Ju=o}S^y2IAQ>d}x=>r=7psz+4v$f#1cZklFY z7PUMWT4jIT73->dO0VstuBqBS^!-~+ikHaKXRShvTfG8 zu4?M^kqoAg;Q-M0R7>RPlPuDdI*-`^%Aklck>u~IRd*j{gC{37ijF(wNNK};S>4@t zmu!S;%Og$9i`A+^VJX(%4!wrkV%?SztGzA%x~sM&PO}N~$(|2-naJ2);S=ck(N%kY zEk6AR`$XW@5nRfXxRdWKyxiM-Xt^R}2Xhl49M}kjk|qR&1SehXF}ZXKjhjxD=T0fv z!3qa=JgA4i2E&>-l=ATPj#2Naj+@WgtFpM&Tc2K5@5FPCW~5G!L$?yB3T^QjRmJ0H)q@;u)X78D5P_p>Nu*ZfrSZl#wJ&V3t*hEv9) zh3y~#t{kZAUu$(v4k*V&GCY`07&?6P@z%lQ9&kou)FSFt)U7^D*u(rnXA_Oguq1g> zA5l@q#?m$-iTFJ~JD=rXn8uyT+k;O6hkn{Bro&-o}MgL#T%W|nmXcVfKL>q{x>r$6G1&#$)RJtALy zbe%tEjgJZ_dS}#TN_`VzrVTR)8t=<`Xtrq!YF}&A^rTd~X;$&gBP_^Qo77paOVmF~ z6*e4U{9MD57Nw4o26t=#sA-hujwcZsH(X*b!&Mv>F7!P?#xHtp*S%TOsBWswS#}PseyOnHzX}B?+afI-@Pk-@$1nW5}@qfPkk2JFXOd)F?c5P^t zhZSB&1eP2YO_Z>_$w&{YAPJEL7O7|O@}KQE=3!ek+mCmg@K8Lhn_{)t4_$=qG{Dhm zK^tK_!8oeg??qck5|r1w^*Tk?qaDB!$2N}Yz%;an?pIztj+k>29d2iL_)4)o`H0IJ z9m$+RbAoF=E;R?|Z?SA(+YAorj$L1SNf-!PBA;d6;)YZ)ksfsHdMDUdIk18!@27kN z%ZTEx{4K1<&$%rrYBQPFoK=7UGoAdvD0Q&a!%l6!B+l4R3#yxX$H2TA(pZL1ADk_c`-zB$B!3BiQ7FH5b7~1o{VNp zP6~(!(=p@e$%I+-bH0Ue1)fu$gev}dcLeuE{v|rHEg#kuh%t7E)sSFdSo=a$p*S$2 zpiX#xy22tSnR7V8!D(j!rlH)HQQLf))=_1VI3urmnyO4XLhQ;TGlQoitvIF*^?dFu zHQW{z93|c^>ZV(iAF5WEqJp|EEJ|bl4QrQuDBrfhh=loF83VZ(2`fIl9{n;Ib??{W zDKM*Ssw_=QyRFu4Qkec;bX~E$$9ajjQ2DBCm)q)LA2O7`{o_}E{33f_X6=2mTd%UE zbLz69&d}M~-WJO;gTv2kQ0}|B&-BNKvi`qce)-2=y?XWQ!{b+N_p~mvP1zObnP%XQ z!6_LYN==+p$4(M$$>1Mmtg&&KcDwDWd9n z-}Afb_Ay3NZD3Z35v{BGrx?w)THeQKBJs1=a(_-@`&jE0?vtJzGuQ04>p);>BrrXx z2YLtxRWq$ZVP`a?gUXad8IG-*M7N1uxW>xAZ5pt^X&e=Go+?RMYIxeN{J^iDiGtE8 zyG5IU83aE1vMQJ=7BLy})G2~W#Ic%TyX3>u;)3;yd{J7KI9*U5DUEwMp3)7o*tD@X zLz#pI=e-f-<|WFRE356_I}^+{MXIp7-)(Mc@I7?}Id7$MEX##@36hC*K8qDdIv~P+ zpVbOn#sILQg>4ta%XLeOmSzhS3WFfh?ml&@IIkuDR~kckE_b7KLGvA{`JZq4m?gcp zRk;@Sd6Dt>@fJW@$Ms}DICBRwstvAo7y#)CBvm|2^JJ}XrO)v+FoR$PMlE|4dgZa=WQqDEl8_ z_wYT$mXvS%8}Q-Yg}!5S74isK_lE!Z(}2gio2h&!qIY_#r~?HxJ0Ei4@rbkq}*>}*<<-X z4F{jfcGZ6tdH#PQ&p+3nN2>qy^GNA%#o|A+qg zKLa~JtAHGpZo`L@ytHj9BKlKVz-!n}$hZzK>4oRp?c?um-^BbKJcS_ZDEIy^3 zE*MG`v{6GZv6h9qopC4=Y6USiYNseexJ;ubm_}HnI^_B!G;<-_kAq$$HW&_=fm;c5 z>UDoC2|qnIRYBtIJ!a-PD{vGe;UKO-y4#B7;U{T$r79vie^S|Xd;4Bh6JNTz#UeEw zBb2x09R^x(tNoriC$a}Z6N=rsTfl~PvnaO9djKq2tadQBC0BdYbVl_;a7rJ4U2d8m ztE7JZ?ED!y`ZgG%lX%tL1GiR-kL!211G2^bPVFLkht5m9-qXOkFgl>x*--(L%=w=o z`tjS{&0283eH%|(n4^;!-FNnNX@10{{a$KT6-IV#s=DY>51Wpu=8`7z!41RW(kfCs zLS$Ovnd&htDwa!}s4g8Ka)U4~7wpDO)g+l%)sd2<^`=Q&Z5=fk0+P(8+HDqXCB+GQ zwVC*%vR@PjfuS-(w}#<@YOumq#GSz$$1BW;jmnYR!lSX-5Qs!q5RM3joEEZ=^je_t z26AMqvGrsBal*>HH{HMO?`D;&FPF<^7rXv*nkkR(ZBAq==n?j6(hvLzKM6ayr<4vW z^$HGjd9>8N1p^;Z*S(-yOqb3t<;rl(c?1B0lt&+p zr0n8TlsUxI!)Ps?d!4wqqI*&TZxE;ouQ%RSce=&rcNxBc?4W>{J76x#6eAb-bB@)X zMG}Q>Ep?zXYy*DC>w3PWLcleKW2z>N3YcWh2gAdy45|Aewsg-PU{H$8mNi_+MqD(m z4qp=4uA{^hfY9LnEnHZ_dKT}idetPZsP*bb+{30$IEX)~><{HHVY>DV3v;^)+1>_C z)r}Y82LeC>HzfK2T)wI$u*bYwiGla9mHb$>)s0Nh+}^sl6QR>hAC(ezGo<%&%em;2 z5zN0taAgUhz?XEIUvSywUEJ&7jWhN9EuJ0)d__r{@Ctvz&t)S!`in-Zg+o=8_qhGg z=o%bKhwFjAG{CEX>n8S;tdcnXo-)A_dRjo7d=}^;Ff6RbQ^P3r-Bx)^)ZwDWKjFEL zk7rs4RTh!U z9syBM>RXaDi%~9Fz=`5omoX&EVYB`B``5liLdkma;)5p_r4uRT)+u&Koom_Zgu?Qo zZA;<)IJOQyp6ln8`E{`cgopTLvc3_6W}L&G_LV=+<;Qjd$M?_G@xJm4b)1zv96v$& z@X`51xh-L#@jSBpV^irz@z_)RcwIV&5Ch=-GV0m&^`5zA@I~PMJGa$9)loXH!_O-~ zRSk}E@*$GyTnPf7&p7VXBt$Ac;zuM6hE#U@R4*^O3?dv6Rjzy&&N~^whB(?pxRb7j znj9zAx_glq>l-+~jEvo7YKHR;czH$@x$_s)J=+sZ^YQ%PYO+s_!Blph^rwQ1V78t@E5#e^k=V4bu*7%|3?lDN6Wf1&(77`P= zmzR2qgbkj&xcw<@7C34W#_cfSq{O$9-(df)&lzwQvrV|=OLA`lg9!bP4T#A1fQ|_G z;{n%?S-qPPb)zoYpUIq{poLn2Y=B57CnW(lbc66a2*fP6zbW{`^(iFVm)Qn3nc;1< zS#z7+yQ~>*Xti0_Wc?(Vxy#7y>+Bnd#;qOzZ>|5qLA7=FfaV7D@9KT#J+#|RnE~J< zyu<-w)5=v=v{{kCNZmp1eW~xO?w(3&OW63r-No$Y>0SN9%j}2O@9KB;*X2`7SaDDw zxJWJHlK|PWXiET%gVOQp$z%C4D<4aMk-N>h`>M_0KZs_?${KK&maf#Scvs`*TD9E4 z$~&tz&<_NzbI}g3v;PLvx$*An^&BDATMtE)Hg-`lIJFWi5B zdGYc<{lBli1nRF2)JQs}cEta{irzvizx(QI7{w=m%>yXCr|bcif?WoI(%5dWbxV8^ z3w(vxDY!cWZH51lPms9xI|E}pqycu~ws-_?5DCz2UuRfNKftZ43J9=9WU?EW%?(`d zU%iC-SMO>p8r$@~TCW`m953Mgof7|xUNs{hnLoXMZc_5p--yt^s4T?=_2E5J_ew9U>Mwn48@3Lz|S z#ot@;4U?Se2#|))FFDNzPGdu+?b^!~JKYL6PW<)pgwfTmiXW`7p&}-{%G*#8c@JhH z-YD_-nM}O$ax|(_?DHLq#On8>RCMfM^~B zdB&>Joq1}QP?(`25`!k`yfNgbVJb2=R77HhOV200hKdN`#IUC;EigxHhd%@>FeKYU z>~YKLAsKz2r6-svr3r?L=-8{Bnh^gnHB>}?)p*(1`Q9_X=)%%a5qmx0x3xGE<;~GK z_Cd$9dLDuCVVk4k>&-l43>?MlaRZ$xpqDEy+2J4kWSHoL(WA%0NwI$% z%O1-w969^)Bd~&RgtKX%KLQLGsoqc#iIGfdsE9+RxYbe8&gu7o1ss)=@CM(gqdaeC z$xsoy@@|T~OJgE9`njPZ5{G=MopXAk!I#vFPMF1eMCV*1?!64&?H)ALeHHc{Bkq){ z>sYQJU&GoVeiOnJRNFElC+F#$tTI$Y+^%%v5W1^F?&EhuMHJ;art?X9F6c~dsED|W z#zu>fh)S$8R7B#?A&v3MP!V0o>20xY%h5bHVVt2N&I=`pT+}$pM2^tYxV;_{e_zW{ z=EP7DiH|OwCzUM)+$NN!}PUPPjDkAdMeS}?x z0qkDDT+BCNXzBN=t;^j0Y-kuqs4X#icD&nj~4h>A)dU{GjMT~?dO7;XV z_>S)g5>F}hYH`f^-cS*Vjl(pFrIbM!IeMIXj6iKI=c(!3Opl8a;5NRC%TN)CNj~+0EM436l>0CK z8m~UYludSXh=Nkz5_Kz>s40~NoG7k!8ACEdMa<6ZG8ro3ojxa%bb6`R=4K)mOdCDU z4HdD!;UUH|drm<-I=l@wie`iKxuGHw+otI};T7j`MXXg%Wj^Te9xC>3X@h@KO)a7mfzFq7`u$xj6ffJLh2L>|Z)+Zcw5c*4PV4=c-$gLc1f zhzKdV>L~slh5mjdJ@pe)4uTo;O4Hc1rBqJ{S)wRBEjvNv2fnZn%Z#5@^ z?;B&Nh$D-Ud;C5&N`3;)lp87{ykgx@5ow`msEGgGF7L}tfzjjlUH9WJI(oC zWG253$A9w3OY7wKeoVL@iNVundv)}EzCI8bpr!$8l509ly?RS_!`Y659F6jVFf`rk^l1K+Qcjge?mL)Ff#U1c)9-@wq%9IrZ9fNW}bp5I$9! zqbeY)HbP+rs7d26N&WPdG=?^POxX94q}Kp74Nwzic(S+bCQ2Zg@Pll0ky@~oRFGEJ?c{fLT-hm=J_ zbi(%4Xhwe0bYvNRumJ#df6;}d0c!TFHb70_!>1#KLdIN&#>Pvu0cuKSoLD5E?;4t*REiH~TA9t8R7`Gt_iJLryj;Q$; z$Qq#LkV*Y_Vr&%nm$HV-Gl+MQDzx z)C~k^lw&!??!h}vttwl_k=6Q7EHrZjeN;OSBhCx|#!r-zrE)mwE<=c^7}BL5_Gjp)%# z7s+Q!j@LXuh{}z?QVmd(csosFBGp!Z<1ZIa3-Zb%-3|^iR9(5jY503lw1!z^H)lwN z-+fEemG3lHxa68rTk~}ZgbYYQ#`NBu%6CeZB zR9J0*n#dgb%oA(fy)Zz{qqvHhWamkLdaOB-2Qq$|ZZ%e`nK6F%T;#sloju4d|OSm+`+Oxt2PhoaszR5 z1)@|Lpr!$8?&rh&R6xyb`LjmUJQt#4u@vFm{0z)3xTn_Y=Zf$-1ZLz;JbWjmE$K4@ zb9$3MU|`~8Brgo|{V0y-9~H)O9xA0FPwvf1kfhy6&)tl*E){1COV01A+s7D9wJBh` zcRbY7X65Uu{wYSYt(NyOn#XEYHlgQ2^)c%JdgK+0vmQh=Py+f1(+OI5xHur6RKi8R`>LW4hU&WX=tF5(d(c zCrO$I7GGQ9PNax((`=#aG?j3!9SuYlPT{E<;WXYqj%APK7moFP`Jd^N*c;*e-{&{v zNn%Bq8uH|XC!|yA^=3&Qadnh52Yt`3Y^f=Ey<4wid)%76z=Fod^i;Ie@|&td)W)R7 zABSsY$dh$f-oYjlJM_}H0Dk7CYFmgBSTulV@qPFs0rutZ!y%gSpRCjl>Q@d za0?+hzh=EpKl_PW5-Hmd`KD}J2ufYRU5)CtTDrR!m-HD8c@p;*pKqxUY`jf`5Vcy} zNEj6`$!y4zu~p}Yd&uhv2czr{mtqOiwINR;U&kLqp5$Z?c|efD zc7{ATWlaA!iIl!4M|tI4aK>6vCUw#Zt)|bGyz>p$g;w$NNO0jow~s0tyMOen(5bw5 zcz`Vm=aDTgxfQZ1yP{erI(^4%Qs5=(#8cH{icjC6mE+H7EK+=CPy0M!>k(1#t($XD zD2Sjh%aA9D6_eDECnpT?f5t@0kS9H>uI1^8XmUfIJhSmOL?ht z+>j^9SaGRe0cai`WfWLUkMm8@!Topba-=7n=9uTZ*Uli;*)yrdmW4F^ce_)T;9qeQcQjMDK-i-$Qu><(__tv%+B~G zFt!Lk2cS{8w4M$QqxOR%+QoSr8ZDePVGwU*1)DSsA?q2YsMUA1@MSbsW>) zR5$3mklW2v0jI|tp7b#%Fvhn}?&4@D<~qiWaA`%jt0G)c5pJFs^5kT&P(<)Un1Y(M z6*kzv6VM2;SgAG)V|=W->SIUD^HJg?u<{;hsMuQX+NxeAZY}B|j)CGa{5-!oDQ+dG zCz6t&UAjT|U0DEz$8QS$wT=^Tru@rn1DniMeU~-2*}cn}p%H7duF3jIFncW4yRvz`OWM_|a$O3CIlfIS zZo{-udx*}(Pvz6;?Q)D-w9O8nW=}5-p#1PdL`xuqE`RR2?8Es-6y2 z#Icd;8ZeQ5>Wi1$UZT?7Ur%Kak6w0&CzwiXUzP20TRn*Avs8wvB19xr5<}-Ysc;{y zF-tZNYDJBwGzV`8HYK67dkaYNw=b|AMem96mg!W}eS{N3Cc$~_R`+J@)@YaqBjv_{R z!W1urh|jNpv&5#@b@!=Lh3LIeUsAj{Py0OaPBBNoH*eM$Mg+$o9*M0kRi}?x(rXZp z2Jtv>c-XCik?8IJkc}=92vaN-q>69E5+uh5V`T>MC`W0fOf}I7JIOl`qyZc7;b{?@ zPfn`hzO3%Q#d%?*dFrTjoIyO6a4wyQw-CW3;zmi|F`9W`8qAE>p|SDemh$qw zeTTkjR@Lnjv(FsJnCJi|X=BvkgGj6oe<RoA;{!JS>&Er2^FsGo&4LPt*)d`7Hv0qi}4# zh3F*dbf3yi8eXZ2v&6abOv?@85f59BT0#?Sp+P*7l#8a>ARgD>`tUdqxZ7ggmLu~t z(f$0-ZMpr{VGFX8n71dVEzHr$j4#elS#qx`jPZb5r$v`~*mTrNf)7d~!Sw7prfh?F zBsLDyiNMmM{HCbu)BurVM&qVxSdH)vI7M0w;?W=;Nsusgt8ix^N5&c-js3@oHsrnO z{%r%gU=WYUF87&miGI!v;xUZ)iO82hJd*T4wEeccMKAu}J{d$QfAY<)D?tHotGkf7 zm{$@;M3zkSCe%}Bsr=_E*@C9(#%q85aQ?Arz7nC+U}F?+ z2nda?>c^_BZe)Vy_I6#>V*aLfPs478^{Fe3sSfyCj4Uh2kv(mRciH9LzK!yBuwb02 z=Wp@mMZi}<+MNJiH0)vtdpThJ7cK-}=@bpkQTs;z(m;5V275>!FG=F~d&-0>G@cef z^Z;6r6F4HF)HguwB~edgn|`Jg4a+5JWn~8|RoXMtYWglDhj6*hhPHtU!W8f28pPv} zBg7TqRv?jjsXS)$z#txpjl(pFrIbO@DZqL6%3m}Jd$d$=~>+ogLusHqqZq$ywUC$PyCWG zE$vgiOx<2pBfcd4-2l=(+|Mu61+5q3^RC|kzX)%_!}SyWZK9-Fz8Tsm5wXx=dVIkA zo3(#%mYNSJg0t#2h({VcO5>Zrp3)R#s%f0LaDvB2?`FjXN49L$gg@hC<*_9`84 zdd%SoXAR3r&m{RUb+9?UR{0R{`<>|cQvXz zqF}xSq{i>Q`Wk>bpR%IMiux&gXy9PSARdcoXs%cIfuf%b@%X3m4q&m%Epz+U&l$ng zq)kbOST$}w!d*ds!WpQB!_-YEuyJ6)tG7 zleA|vJ2_7~Rc_$*W_&pZ*tVW1G}OMT6!rns;$69Y0PNLByHg6o;0NJMZC0ZYkZ#f3 zE^ex=yQUo;kIyRZ4B(h!F6U=O0)->>4ZO;@sf+c(jp?F!fLlHh6jff1So@)ECLTH_ zI|exk_JP=`o)78wwO$`6490V}0S%7C)ESJYmmL%-`b_L0{R}c?FrLJWJ~bH6F+T=> z_4tmQhcX~?U)9-UN-W4Gk>!TNMy%+0n>PE5^1vVRY!pyBv{u%PAnACkiZTm>m{%Lb z#MER)h%$7z)W3JR*``PpcK5r@O)YtQ)Z8;y`Ur0&h+J*rw|b84CAc_PXChi~uofXU zP^zs>h=$TW7DgLUPpK_Ch=@{QJn3;170eUPs+1KiEJ|sPx#rLpSM$+jg-2=j$ z2IDD5;-$C?(FxlN4!03TV<$)hHo#y!_e=`)iQ$^6H=}uEk~#lVxrFxy{i+|OmwobU z)}!|$D*Btpw<3Z&#kr#f<4IaX){Ns4(TsNP4aRe%62v1)-!KOo^bFHC2IDzo$Mn0w zcuqM2e^1OVQRH3oP%T+=dm!0|J{&WV8jPpRdV}#a7*A5NLuxRdzze}z9k_%mHG}aS z@?-K{b%oEmkTn=j$9lgyIcl2JFTkHvw!wIUdlQM<BfS=A!k|cOIex~GC=*s1 zjAtNh$g>HT@F)BjjOQwx?IQAJFrK~ap!o37O$Ot+=TJ19V=QXK*9)KQ4Tgt18S;x- z`8Y2DyzYQX$<;wU^>rP!x?q7V&rn@pK^g0L{^{CaJV`1JX>Kr{jO-zQNOQs~J;Xi1 zI2(*-v3ZEx&!#niXaPNs6D*;pH5kuh!?@y$9nWOMEag`ep2T20i4}v?-AGT|ojYbH z-C#Ti%=TZ&ibowq%puGKRG7hd5+|mq!FWzNLVw3Z%3wT+Q`xmXt00}hcp8i+9BFFP zBZ*T~@iuULzlh(Wqw>x=k+iOIcO6h$O&?cxu(+mT6qcxqZMHz6FoW?VZnNoGrO04B zGlTJD#4Jh3B>goQ&+}Vk-LV-WMb4_*U_7V7KVuuiU_AR5?uN1%XJX#tAct9TJhc0L zLkLqLx7!&EJdW`(&ct>ZjORoT`~)CwuO?kIG#F1_MxB%ceAq_c^C1f)-}P-nmUv0DBGEr5l9bK_F(i{Y`Pl z218E3nes0I0P^7h;N`OBHoJFOGkil_n{`druQjvBV!bQd*V#9_byq#C%l!`-fZSyr zz(}@0|E}I=Ztt7jdX?Rj*|vmm9faB|S6R_!MFt~v2f6p9zOTA_Dyc0W3XC0vd{6J{ zA6{lZyhe;lgYh&NPtx-~O|b47lF>+&4rXSc=qJN?zHPdP^FeqnrJ!cd2yQ=U&>v?= zx@!4Tc?RUjSrCmprk?hGT5)enH+bvjuBsPpv)c;Mm&B{fwaClWfb)q{g*-(7pd&=I zkLQMbKa{@0>%(&l#;@uMF)G8!Id`B?{FD$qkWTWLx~hZsscMTj8V7NlQCJ5Y>{Y)1 zm+~qR31w|qjzgBwcVgX9Y&R@NVk4z9BC`*=NtrPPy0t`1AoX9Q9x-}jsQRDr{E!bq}j``9EV(@?@2Qg5euxP z$5Ch~Pe|?#=Q$G*rH3^F{X(hI9902liH%`761&IgSp~11t1Vo{1#qdvMBcnpJiC#Ox@0Q78L)nl|F0 zkG^HFDL(iYMj4jlXzXY#C^alcl|7$*9_j|M4pYN&9CBm-ePSPo!mu1A#@tjLo+;}_ zjf|%r8o-OId%<20cXYu@J}#!xL({qwqziTkkfAnJ|2F65vE07jLO4lyU`6tcsh>Av zQGa=2WD1SCIAxA%pK%S-wKf7;G%A}~qWQSP41%x^Nr+qWQQ3%^kJ5=iW2@#Ji%)5% zVL1*5V)|WOzVQZ$ib&te#~gc1O}$7*xGL+X$$>OgIZP4EG@&#n`l=w!UKaDU<`7&2 zVMvRJUXtD%bxwN8vJJ}-W+TIL>;sRv4H;5CFTqE7GY~#fK!o4IupFH`a$Bt1a%7$+ zbDCi}jyEt!3MXu$pJNc$UU)TENGf}T`F1%KDISZiNQ|sFrW?g_i4)bO14InVQSwh= z-`KDmNn;^}JBEhkI9Py+3&x}qkNsj#UYMO^1LHfmDT__X!oo_uf&<+|$a3|p@AUJC z(9e%AdDOdEjx%AYs0jxY%aJpHkH+hh3Fq=}4a*UkbeAogtSWdz;fT(dbeIj7R2hB6AK!P8WnxICXLuWVRt?l9?qxo z*6K8?=%ER@I;f|SKwT4*hps(ZSs_Zbe3BMnvna6>>)xvGAw z+UiCoXl`%URW0T>EXTq<{ydi-dpJeIa_l8RbsJ}`VcHTF8Xdm^_EJY1s^^vE zADgOHbttI+98N*|P%fjM-9>6PEXT~S97(bUX_C(?I3~GaIdXe<1Ma%7Ni3#J0;}n< zVL1{f4yigHDZ3xr@~^vU>&`eLhYN<~XjqPWdAs5T>J9(%r~J>t-HXoy=jl4k@2yG7 z{U+L8zWmiD!*UFVicC~$#Jqk)z#k7_9sK66Fq0UT<9MKQ!*Xo1s?F-A%gP$yCYKH& zGArKI5Yi1$XggSWXVnHUDK`)|S0MD+>+HV)ma_Z+XE*EeWp-CRmbF8vylvL&<~<@^ zdal0A-rtv7z^?qMd}=eeXL(z0GdM_m%BnhB7H#k@G1l zx~!<5vIkfScG+sT#dgCzlw}DQXW%PDslnYDXe<1G>$=x3L4h&b1}@li6(D#*CvJ;J z;0BQZSm*Y2hSl_7ovo`12(U(EGN5)Yo6QXzv#wr3{i}C1;(KD7-dF3jBUzPzEwurh zxfb{jH#nZM{%{>wSuO7gLUak4D`XPFh{DTuUo%H7ezp)-&#Lz{nvf1=W?))Q#&Y~k zvHWTG@LPc4YvDf3dR^9cB{N;g9nrS1;8sH0zHhdCh>0(gTiWxz)qpP#c11oRJ2c3% zb}+{qx}c#8q5+(KR6!-;fl|^>m`=cml?VmeXydejN|Y+OXf%Qk6i_$prc64hBQ>5< zLl-1Y1Zn;}8|(%TH5v(ZPFCbPeMiI41r1$rByyua`Xl;}zPA~hM5v8ZOYdDNA{eFz zKW_Ldei!C4e55KMTb)o?Zs>x@&+s#E3}u^#CFeGMj2L`A={0mgLl*@7qLqPq&toWp zve88YAJTJmu8Lp_D7*#mQZ0Lf> zdHz@UpTt;<$tEnL~n#MUY|b#&ljow)6XOMBhC9P_B_&jLl>lh>{IU| zai{V`DosOO^H43*W{G3;5m!e^rAMM*E_lV3*QMOh1-tTYieVd*CPNn_4*66&BJ@Oq zFEJRM0qJ3Jq^agGgJ1=QBxFtGDRe~5$Bh`e;E+lEcVcW53V^bPjyFBQG%}Rx@{Kon zRJweEOccY^&;@&LBn_`HXfd5Xscb_R1P8>>1r1&BV70tHJ?F;9pWAZ#?e1nRxZl2w za`e<86ijrn9fb8|fumMcyWCa~F;;Y`Z#~r9mFF;#hAw!}jl(x-Bn(|pa=yUVH*~>+ z0A+?Q=$LUPQy$;jq_eVP?CWJG2}2hQkMOS5Q#3;tJQxx~7mTdfHHAkujzx_a8*VT# zQ@*;9ph~cz3r1F*Bktj#%w>Nl74f|r#Kl@*R5Np91KW_ZSc*YY#}YMZcy8!|$Vy-) zU4mp6XlL>ZE<1C_y$*g0n0o%!&;@&02>*?bKjoQoh=BNQTRpJE7fTMKx(`Cs6D6mg zDRqE*v*LEsY7I;eRj9N_owP!$NhQXur>8V@LD*E)+zw%M3|-J`y~aI~Gl7frICgO0 z=}6JfQD;#D8dVIRJE%D+elzq)sT_q7msfV*W7%|II}KfsMr)cXqvsfB=z^YO*Sd^3 zcEM)*@4Iq?;AN3evYx#7;K{|=6e-WIer$DuG~{q!`k4^f3|$beq|Nf(&M}en(1sVf z^~p+}6LML>)R}}WP!eTB7erP|pR>9^hAxQbEX}$s>Tr)4M?jL%84&@RwoAn)zFXzE zMZ{CROnrIFQ56`v;76Yg5b&qPm$>SftYlNX4T-%o+Gj|6ceE#;vt+_dvh$=r74!!) zsq>LCjV0eigW$cJ-3B#DF0F6KVQ|=a5Q)ZH!uSh*gzmvMbN`C)vzUpXO-!vbnHk>; z%6kLKb56V8H|)ER+X-LLt1*Wsee`?HZ*j+!Q(yhXKEkCHVSyps5fQF#7`otOuzKA9 z4ab*l2=8I?H2enp{){CM5>4rfWmi2`2p+}?h_8`sU(B`|x?ocm>u)_I8*tUVRyfq^ z1apEgmSIL56Oxi(taXFnaq!r|o`5suUjj>GHGbOrc(`yVoZ?sFh@EzrNK_nF)KX187;=G?Y~z^E1w`~cpsXtN?ij62A^FZF%Z z-BU?z3CMrAyO`ZPy{mtCnf>q@q4T~*0KY?laI2`TRsij{axi{?ga@U!AlQ!p30NW` zV1=l804-?ff`%^0Y3N9m4zAn4OrMM{xW5GRO#{G_Pv?Ub6pwrJP4VFm0Ac8EeZRS4 z=5y~ebL+W5*PYGT&jH~*pmVwrZ^du2v=Bz;>9bkLbcKr z*Utq1NV?K0kPD6f1wVWILMY{zJo$g{KmX@QV{nYFLqacL+*Q;-z{IPkzL*p_6|b05 zDg4#aT)9#zZW-wFt#)OU8pDSKO<4nos@ugHg6jEm{CS1pblMlT0OZ&Omd!f^juF^xE+KEHUW0tGuY+9Kuj)z`?0GFC>P z34iHlOsR~}6pyI*Wx}ynF}3ypRBrR0m7!6CNS;pV`l_s-&RA1m#IV6aS7&Y*U`cT= z-%<7a3(Y4!#1FXU&}-$nx?$6c3)|DN{lcmau8;d`Tqhs~Z^3Jqc3Md;S#vpIs-!Ek z$`G$I`cl}9@M%-F-Ey%l?*L4kl`LNvC%4nGR^@F0i=hQz?KO*HyS#@b$O7=Z9agzs ze3F@^^5Lbpuy$|ih5Y(VYWGK*@8kmnYD(H{M}6$>p_i-0W#+3#ST8n9uDaK zyXUCtr#cBpxCBfU7{IoyAO{}xrzfmWLqwF0ohSMgQ$b(xQQ~xgq{B~|Yl%7fVfHiC zun_zn`hfVW(BM4&;!)vp)_-ko%GK{T#ayiG?tZtqsf%jOPS4m>{G7Q`=Nx>@3PEeJ zPJSWYcM%72FN^230^$ZD)k~?bUz?eTSP&q3oW~{+Pe`3ks#KJ6r8%ksvIPo-8NfCT z+9W-z;26O6h`Z;LUIW-RfbGE~!)~37L~s9x?DZglU@NI0ReZ<0Pn3nybPot~XaP7> zqN6i_ZFbI!PS{CCUXTXdVgK;7i1`F3Rbc?zPRw%y*akir!1lrBoupNJ?_6F;>(K$! z3gOtF9t)@c{&6gOEWdEf@5>jC_5E|(3dK^YE(35M~`S1$EMKw@Am9s3pss;>P}{VxZ;loAs`N} z0c_Kd@6)`g*Hv9IHkx5E$t|}&pNNnLJz;}4$pGZ1X~1P??tO0+uY=zLHh}G7^T1yd zCE<&Yzo(oNMsEPy`lJ=Av}bcVGL->rAGy_yh(i3`Ha`lQfhD4ep{1X5`Tn6Nq2fiW z>nZ1GUDOKuQmKA!{vaYsg>KU0*shqTJ7=99Zd!AJf|^xNnyC4M8GNcRLiJG3qU^rM za%tE`1K36`a35v#kUTelZO^r9UB(={3}9P!nTe4pTWX%x0JaTa8-zifNrKfnN{?XJ z077%QeI~H@ADfB?jv#5L)Gt5I;fS;kM0NW%-J{9g>7{InP(HOvX_Y@wxkUa7GK_V}! zdYQPjsE0TPu0B)aOxql{$+-b+1DLk~Y`=V0@5TSc|GxTi^S4)D!G`&ZFR~Y(UR}L; z<^Fqnb@he&?=LSL@jnoQ{Ox_2efQPZ0F(Zd6-SekOqJ-`DUigYvf! zJl>V(!`Ftl=iZf_gUOWwOw^Un#FXXx^7aP=;W6*5!T_wGT1n?Svq}Q6@CAZ1amx^2 z5NpM!9mJ9VRG2@ComUjR)bOF%7F!xv{i$` z7IBf_`R`}XLE(wBrGZcy2qpP`!_=!5C&NTI5I6b>Qv;zKa>ISk;e{x$Z3^ZhM{E5G zK`wbGT;l1nSvQI3aIBG_CQ0SrHcj_D@N*Y>->1A=gRIC6MT{iErHRwUC=aqRJ$}ax zv!AJ^1&u?q>8T{F2140$NC?wD7HZQ#C`s_9Y0`8^nfN^vd@9H@K2jBsRU4r&1EEBA zGM{;4Xwyf)LP6k=?tIc~Ae06|3GzhYlk9>#kWBbNHo8cyh%P=>#W!LJl06_-kqcVY zOLTMwLdni~211F_fgeGl^Y_)tz3(sFSM2i*bW2|+2K;AgRP|<5z$CMQP~vD92qnqn zKq`;fa1u98seA*WgjZ-ra2O4QlB6X}4TN%J&51!1t4=?=%{BID#8d1w_W5pN^FEk? zP#Op&$>=2YOOogubcB&tm-^}rgpyc6De2^K=tAwS{zhJ3y1K<8 zsAO&+lr%~%C1(EY{22qGJd6_!QUsGG@N^j+Q0?rffJtTpp_~`?5OItAkZP{bWC%zg zas#0xRt!^#TLwZY?ztKWJZ zAe7;3H;#0gSX%?3B)NlBh;AC79F9CK$~j>v{hS*JWzUN6q@3Z{@eb}_csRS_?a66Y z(PJudb@(BtC<6VYli$PuM2R&ZER;QV5uU%tY=x}KuBg`hjlHu}U?7y_i)h0`tQN$9 z9vcWHaN_dHZXlE-aECO>$`E->j17d6IF((?(-YC;2102dlz`mYZL9iDb}&#}qKdbH zhoi(n{}X*|*{5bN!1Np)yH0pmGx^2!*0=Hc@YK*44ULf;^I@v$5)lrhn|{L7 z&=`l@aNiA$F<=S(kY8wD{$S&%reSJmj6-gGjI(V+V+5#cKLroDFPYKDYE?FR{3jn0 zXK0MXUV*jrI129M31=NgvZIVeDa}#cL$*MnFhgUcL7SvWE)C@om`jgs`XEm9>G`DB z&=?Jk5!?~7x9WlOPzDcc?%}WWJ*Lju4o<|8Ob+G6w)C%$)=PABhQ`RwdC>{m3l6uB z6p;qJ9QomCvD>b7r;B9sm@4ke>h2y<`4etes$uJbL>n68L%HoL_bQm%V%?S_F`6(f zk8J93qom{d%{<#2H4dfoIy4PlqU+t}2Hux2$|H2>n`TwrJ~6w$qyfHAc~cvd;lN5> zT6=58amm*MZ|3HK;&^K2Cdyv|<=oqcqYb4)FS9%HD1Fidh#64;yrAqUVL^z?Q z+;3vpWBG-nZeRXqp>WVMOy3A+;zVO;jKm2h{e{k3Lt|tWXJUScuZG45oRD|}$Bf&> zy4qBi^a8f<%AdZH1sHMnCb1_z#im&$0!!&V4Xg{pTh-2v3YcUzG{*4;28uj>CT!||MBi+cq<5;; zNM#!uBe8jyO58FuMo~x&jd3VInV~T{c6j$qTre6MBQnbKNj>Weop;7isnc?}{E07l zwDY>Y-C?P&PacPIc^(}N<=w>6~MX_ z*37WHf2`W-MkZ)(Z`V~V=5K2EH0)-`Brmtz`Q%gw2$PUqyZDk$(*XBgPfo*dobco8 z;ac32$i^~$qRMXpQ_tT9mttZyUNr1t3A+;rtXf?1(50(3C0w)JJn$+&4DjP3j=!gz zafkpbU_=4b1i}|fCmHHK2vJXDn|`L$0Tf=K)<7qzLZv-3-9IWZZaqDvp)tay>M`~N zub(IG&K*;H`VQ@x0llJD*ozJ+oz^`fR%9GWV!L8gjJGuBsMBK;&Qf-DO-JnvJyQQ9 zoQUbs<(1v{SZ)M1re7n9_G;`hQR{^f##1N2DbQH#2lc$uM`WXw+U;vUhe#P3Be9hW z{PWNDUkr^gJG1d#7u&n?xj+f~%Ae=*V-JXEXpFsPsWS;{*Cp%Smax$1p2hwDv8ifx z-XL>wUJL#JFRX}pb{DDH&=@mAV93(NYMv)?If=zYEU=m$=Z3~etnjHi zAIWQx8QU1e`ewJm&^Ea=Y|U_R*m)3%=B;nqvJc{oEH{!wEL=7+!ZwqcaVF+{NEOdH z^}KM=J2GC`Dn+LQ(t}SUAVL&+*J{-s0cStJ`cMRcH9qj%Kawl?B%aE z6}LaB?v!t~y2CLUEYuhL;AX9KQqofZ4Zp$uU7s`HEM}8xDgo;r_x9@Q z3-_O)F#;3+HP9Hp-NB|3Ge7wWBiOgq!oc#I5=59cZ@xrsFLp8)0O)H6mxo#ZKs%W@ z7{x(>i9VI=OYK`THha`nZ|<%S&kd$9;rg<3*Oy{21X?2e5*=hUbQ8k!C;#rUyOrfkG#H^{Hi5iU=4l@g7r&Q2ae4IG*P)U@^GZ9fx+7GkX z@UiDjnS=)KjVL$gQchu!cPxNkcMljLHN00-w+H;X?AS^TrjSN+n9kD$*(76`QPd-< zcwVKVlne6gnxY|Pu>}f+8B8G!+9aJfh7rN3V96W>w4w%_wdNj6>w@*O!iHTD1P&jm z(+69iP*`p-g$7dy@3gA{_aQD#+qBbLBm3LO{oftSNMW`0D2T^c_K z2|?M>3ENl0ZQW2!f;1RRAu$NjP@fpCsd_Uq`;*N1pUP#kUHz&brI&s3Yu35;BPt6{ zvg(JQv{-+${?K@;Jg#$^(uli9f5euV7kAg`;vJ{XEnxdW5OL6b`uo-@Vy6W+KJa32V%$5-R;?2kUcFb$DEw z)cE5-kPM~}&aLmJc)KJRlNp+R&H-%EU<&u#Amvf-ixKBA6_`3Cp)%up(U?ovU5&U? zfwwbk0Deztr@<6XxiRtGp6#SJsxAt09lLFKQrQMm2y^&xGqk}J z4oyn`T@qp9mBADyz8T@qfKvVK?q*#rSs&Buyu90yv`q%JL~l_0x{h)2S5>>*0@!w4 zbPXT=L_%~@HD?KD=O@10U<&HmLPN$)6WQ1qF=YevLBb_FyYA}T)6_5(M3kPb?op`ExOz{R&NRl*6y`|AuN*M$Zq{q1j?bFtBo_bdNX6TVpIZC5ux=2*w z3}yE{j%d7FBc4g&4W^I=YM6RKj=ge_GWk~z>H#K1F1tBIL8)(vig-ZOl*$556xX_p zA(_Dx8cbmXB$%X0F`G`345pAc<=BxNKTNp<{^kZ#NF3r)Z#&Q7ju=c~W-x_}lqCt7 zq`wAJILo;|haMYDVIagGVP#`5g}24JEkma}zC1LT!a!g%;qHaO6iO2fZifjkbRzBw zr=Q;$Od)ZoPxBd3H|nB2T%UKUjnG%R|il-L^K?O z8am>CARgjdfQkI>tFHlU@+m92tf-%|2SBXvvej;j@QM&ExK&0`6WitsLt{_dRJr7*rxZ@dhJNycmeP4)Kv>Gk#K|K2?l%(H3Q-!pqLRl=D!9^;r}gf?wjVP z-?|s0oe!>14Ajau#fLwX^<8%l0mc8p+(A`WL=zL27mo$J?o1C&=G^{+@f?(xXe?zT zNzEDiX_NN?T_2trnxUZ?j=h7uk3h#!oaj=9f#A|lm>QblkQ?s%jM(IZZVpSym(4o$ z)`0G_3FY55jfBcd?eJz%4A1qHhv|_uj6{d2p&7={(mdxiZ6u~1CKmdIQbAwwapJ^7 zB~dC*L_|TUp&1r;C66;N3`=fkh9o@0be=Bo){e@Hf+Kmtlxt1JyFe4F{`K}Lhh?tG)CTp26SWvq+332b5v9`N86sH?&Cm^l zp&2?h&_9xSyDzJ|`%cwGuYX6aiBbEM zbm};mCPOn6ZIz)J8k*rm*Wk|>ve__4l4=e!Oq{RbBl=Ed%2Oy&Vk$)17@FabN&R0%L_$@QMlwCgY-onD zRp*F%$moa`ZwXx3M}4ns2>3ls3H+LUljb@Pyj3Mcx7 zRB(!a=xL$mtsYq7Nh!EW-SHu6#yZg>OdY_V=H3x8iIl!4N7SLa=bwb;j~=O$mXa+w zgv-zjW1)$Hw1BH(Xol&5odOrVoJV%WJRK>zw(~~Bu{u4r-z;TU*L1$>z$Nle6sg4(>BL#a&BmbhGuy6mluX+nEh*@8UALs{^={gYV6AMK^eliVhfv8{3e;V zZqnwcf3*vLn(OmR%kr^dJp45`)(+O0ZZryLn-7Z58@A|N!mym4$}zzLaCsy_&9Nzp^_+-ryZi8)KCfyrI2KS zN&BPzkG@B`+paHgKIt8;X-AJ$K(;`ku-s4zr)=;4o@Yc4E;3hIenFJLNX>>)=m%0- zmeGhsmS>)fg1Mq`KbT`q=%}NQUIe0cIBIH(v}7C-<9ERd49N_oFvg`Ly&q(9x(DQ_ zoiOMc?&x}8N!IS;bNpP3Pk9e8{FRX%l@p^1Cz%bUupgEEzZ34zv)oV$9V-l_5ZPcT zg`^jWOI%5-_LHW(kcR683HyA)i7ho!IJxzYW7%W*g(F~J{%88U@kTf+_W2_~eUa)v z{XCLC(!9@N&m+w@ltLQFKJ{KOhh9pgqQW!})lyyg`rbA-EY4k&HUR!fRDKwNq67WN6D22ca!JHhpg!|O%b@N`eEhF+vET;UKvWEp%fmZW%TVNGZwi#ds5kkQaBo?{U4I18%m)#j~hziNRSMr(6PhY zCh=G?F#629Q2?z0~ z^BXclDMY@GKZa7s$sY2E47}oX7)s$-m<*+G!jH+HBvSgG9Aye8DgQ*C6lYpZDlzT` zdP=aO@wbd1T4Z44sR&_C<~x-a4-e~VS-5wlTyiU9Rdz+S=5N7K%l!Zzb0Tagg(<5v zVm0Ft&?8J^2M0u(G-5;?tJ6>liBpr*Pzomu@qfld%1{bDtFHM8z(0pC`KGEp>|hGH zp%lvQD>61Wl)~qLXY3&oF9gph`dx}GQr$+jK%ubQPzr|zYx@1H?ueljW`?=_I38nZrxQ6>vI1?cH3;T?!L@gpnq5IGq?B6ZoSHG%4}Og zU{njQdM{U5(Pl-~LN$%_iiBH)4TeIm)Q@m-_`Hxugj-4I}`{p z18oI;1F~h&mRVIp>21|jkLAm(d@Sp%x`hT+Z3h38G%0@m(KY1!;*{w*24JT}DV zV4(*kC;F`hIhb%2*{zF~>oRuQcvsy%#%TK2u*eGsG*S7ws(*?Vw5^u+F`7p((2a8Z zDL2DQ+%e~itFm2gs|OTnJ*MoG?SU9t)JZ+??>L;*eubSd^}!|?-h#o2=M|REkIO)X zQ55KtFPn9zi`UYI87u}vSui9S`Qk6F@tTb1io zV(gni4zls;v-AWrM0CZKS=F$n(O+MJboB9UU>DFtHB1kS;Nh?I zJ<>!~d?SuzvIm51(XKF2TOFN24zgAwzv!y3M{~Vs6$Uxz#M~eUkqrhp=!Bt{h*S20 z_Ic$9LxUX5vNsXPK;bx3fvU43)b1i4|E|NhG!jT}qnd(@` zGFNa2bAuf0$~)Kxp2f6>2G4y{H~Wv;o_;8|o2qT0l0^eR2Jg33C%h+&wA1UyKgTLD za-ocRg{kkEb~ZE2APD=Agvyks&=EC%-}JZlMO~NcZ~a*Pk%sE+(}Qr{F)TKvod!8L z)KsGZmKeCIVd_h5@bvE%j0L{;-|F)F@T|7yRK z#s%~if;fN8M*jJcKTX2+?<8M9kbZT$2e?T*fj`Q>HpoFd2g)K{h`T8n63?S5cxX(7~~))d&nc2 zSro5>-va(}2^YYs?n&P8Wu)EJc+s$n<+j8NZ3`EIuXJjEkbK;}k-s#MIC+Y*Hc4rU zf9Poe)D58SQi8l_aP?kN!NPdaV>nqy_etidCrsikQHPV1e-fHMdZbQTO19(>F4tMP zAZ!QTCN{`H8WBp}9cw-O&r7A|)d<3vmz(CtN)9Ii$ z0w*r7>>gw>qVY}!0BYT8RU%${iz^=m`RRpXR zfA`hb+52j}b|mmdBfJw*gQo}aC2N3ZY|Ay&4Csx3Vn#@p{~C~k|34fwzAv7B({z6- z+Xn#293Ojl2Q%2p(oXxtd+)wD&R?BchW5VL3VyaPhc%HwK`2ph70aD(B%3o#z47Aa2_hVbHvNR@1f^OI^*E`L zi^l)>(3~_2zh}}xt%mGyEHOOKDNE?@9_Ue1cx zQ1$dZL!Rio4IN>@<~tdI)Q`??)!=P<#JPh;1M;;kAnXaV&c*e*{qT&1d>d z^hS7*qi>(#c@ita^cOmBe-YuW;du^O>Q+bkPRU+lb$z_#rFMS20i~qFR~aTXUcV11 z*{WSzZj~cY;-j~R`e~cc4eUc-$pQ}Q7g*;7yJUEtG-^IgIj8o-@Fn$%9_I0)q4~JO z!Ua(rl2DoQ6gr~jH#!Z^bI7FrJ24i5voOBqa0nZc_P>P7v>|0=DAnZ~Z!4(u^sRi% zksF?;V_eek3WFBY`IE{vJWrVLj+>zgqY^M60G$HDmeOyF|Lpvk+jViL-)8Vqc9f$* zyfQpb!}Fw>WRiLT(`LZuFp-AmITteh$P0>px=xNc5WF%HFNnBU-D?@b$z?}MU~-s!ss#sgkzo? zo+s`vKHpN|WK9|sFd1dT^Ng)JN8Ce&m~hbPi1v2p(Bvc-GQ;ykzK%bJ=gG+)@`&bS zc{^ALur)l-V)Kx=;UfBlB&Bl>5%BV_;d!oB?!|J&`dfcP6{cDNyTP+LIfTpbJaJR? zn3VuXXX>fyF~z6v(4H9*F1mj5LYA^hBVxuQphuX-4i1QxthhR2L>#Nrqg!fgIV#N8 ztgh*ZT0Zhp8Z~pRM|H(rB~R&l96DS?gK57;47@rbxn`dT9Wy*nV%sS7;xrq@Nnd4A zC9<1C6qNdwsHY`FO{py4L~*Ul7?K&Dr{Q@}RN;JQK8Y(NA!V+~RnPt7(5?&n8J&XJQV^h`OoW(7fw_r*9)Xh@fJ^(69%(J7x zIcv>^=b0IvCrQ>IO%gJ}803cM`Oz(i;du^(xBsfnN3ublv$9#=!0RWYZ_v&MgTu~) z*xq^T8v?M2ygndJi-R^XdOeewaVF+{NEJU0>UrUy??P_pW(B<(b9mCne6-`rsV{6= zDR*ClODn=%72%4Ca697juq$E5{ZK5$7}BqN^_2!&;dd&u>l)&l6B2+Y(-61M7%YcJuVE z{^4cz!|QkTyZY<$37*|IyEQyO*vPs?d=emA7HtXGlWhsVz#HVsms$B()>(x(m4@dD za&CB@+#%3-a`Ar+6g~g;*YsQD5@)VLCS;LB+}Pa}_$&%XO*Dtw@^RRkx2Zntu20 zFaT7?FwNIhEulpdUA_fK-B@Kk6qO%$%1h}$4(KOJy*s9DHx2ZU@?mN~ft?h?x#D4W>Nf5Cx_EFpEtaFP15j&|m`++%rg6stquGScXe% zH6TF}ylI*=9a5%nMe3i(^S-KpvqsT?1c}|_blw=sBZZ|Jkl=*3+5%;k^cs+$0SSVB zQRG5WAR5Y|Y;@hzh&pTH8_Aj+g^KOa4jS+|efHRotmY66?=s<2o)_V-j31Cb4NWo| zkRXkVODEi+XSo3hI#w8vAhN-L1W7Lj7XO$Hr~PapFQoOuRBDBAs7jB8!&Uz{mOYkV zIHmRF8;~Hef=h+NY$A=IC>oF;F>0TB59}Cytl-FxJ>{oLsPyku566H6kHtbVAi={D zB6j&8H7tUbBw~OH2{)!G!73yANMzNBmRh2z<}iccj1EaiA>}D_L~THVT*%gtMf9B* zn{=5AGlk1ED#|^LtVTcDLe_u;-LNDLub_Xi`+z5vZ9sx}=T(m!<8=u`B8uI*TNsew z!SYBVOuRB6K?4#zNXzKkNoFkK7M)bK0SS)AY5#|$=>{YyqOKT_;7E`RNYJsv+a__r zn6gNuQsjjhQK%~nNvoqk7$=o(K!V|IiSe=BWL)xZG1RnJ|7wrP|3~297Gmdr&F-f8 zu{lk`Ht=?Gc(v-HZo2BWS{4YNop>4gDF51k1Pw?~!GuV%iXInF+lTS`ag><0Rt;(LORO%~@}AfLEKWU!50|a+FieENavc#u#&fo}K~r_(^&Mae z?0CzeAHe0SdL=ciT8V-8u)Ke)+UiCoXl`#ImR<_nHy}aLrH!Ac@>{^8YpsF!plCDF z?j-)A?{5Tr54@(fD7tfKaHxQ;2WTe%FwKAjksHA$%{o#xc^6!eAIvz@YEoTs>**=M ziVAkhlk|X&tmq@n*n(0np;LMB@UY%{WO(mCX|mH!g`|2`Wmi;d-gHwN{Qw?QfdL85 zIkXdo$&W-t6g=HI>-4aCnh*vxC&h36OqJdDn78-7uWk)}CWVLl)ZJ5>o{Nh<-!Qn( z0k0A4Dz`N)Zy+Fj>@3Qcc}|gPtH0^5Yz%6Ro#p!s1a+VXm=L+n8=}J08$oqRG0cJA zWdSG3YhA{W%zy-yMI-SsW%1}~*TojLJ)Q|qudn<{0xg| z0}>pucJzn0otgtlIRqBdSir0 zW_yBZKHjXpVJCFgPJXKJMV*i2nSI7KMqxmL!pkM%Of(=t(%nNU+`TX$K|#yms9roN zA+8G84&U`TXSt>LKIBKhTZ`-ic-t4Vt*H_7`Vm2RG)`UTt)|G!s$S~b2)<+LqCKpY zsd1)lPB141Bxpc_SATi&@?E_b{}=!J>dVdFUVQ}zRxiHDUVM6W_2!lP@9ovq7w*5m zyl}+-K&-{L_ht6oS6^qF;wdY-tf-%|2f&m!Ai?^%fCP8ddi7g(-pIh+dQ%ka-fBBn zJ!}ByAHzEM!yn4}uDb`<{mm6~1=ZKct-2=`4$RdZ1plzBfLY~;7XYageqUC*@F#}1 zU61C%X^)ooMO~M|(H6A^Rw3Ksi8`ZkT}g6dZnRPlG8X$ zRS_n_fw<96m>PQJkQ?s1p;rbhp&tyrGQO{tq>aST@w7<4Vk+n>K1!S}kaYNoug-|t z&?_N8oL{gD!;<&d!<^6Rnab}E7! z8+s+Ndz{WQqVg#LmTKsg6W(g53A3cv&?^nS67-AgZBq0j%A)M`xTg_y*2FiG)zB-Q zDKPX(#|HXGnw$;2vX_=WmCI(k`c=Q@_OefozM`pV?`ZOwj7q-WX8g9?ZmPD0eOtUO z`hE+cuWz5684j0b`ZX+O_Za&t;1(KsC8^86;&a=uL^c^e`k7{naI`#y`YJ%85=M_6 z3!~^C$Fj%r8+s+Nl1o2};76jW3sx1m=OqxLE3lz3=_bdo-bhgVbymChexd8&H1 zUNdJ(^c+*QeMm4q+`?b*Bendd>Ja&nJ-_R74osCE48i-2`K~Rui*>cBE_spC&?^s1 z2;ed;bEZ;+_5>09}( zTZUfg7?&hq!l1=;{-m-Ey%OedL$B=L*{+#OFJ(u0GlpLI?eL1Qi-{i@@QLo{e+KvO z+uaRd60km|9}UsVNbxM3lX+QSvQ^bCx8TLrMb~WEuK0m=lI0yDsu2ou&bo zow?&)2OoM$J%5Ym=YganemmPbP|J=?eepi-p54ZV^$1gYnwy5mC`1eVfcgvDjW zoCqkLSt~0$SeDYBnO4)cEIEYBbvCpOR1l_c(f|N-yy)ZevHOR=;790`p;z|o@&8JE zDmTrKl`4i_{6woum85L2dD^HI_LO^znsgE+bkmm=*%kA2=d9CXIchFYP_ybu6SW+> zsW9U5%IL?Kl9j3>*hclez z+@C{_@oimg2S_UVs}p=nX-PBN6HN2*W^ol8rMq_WQ)NWd`AGH?<7c*>iGH}{(vWrt zEy~V=NHlMK)54q5;GT_yoP!18CutZ$<}ys3$;>zt4ZX4-qT#>7-3vpnWCYTQx1m?U zJ32&@5-K(_P2^>I)Q!4m4{K#=Jij?H^h!goH1x_+5EF_sMEo+;*?7e)&oN z+rRaOY+pwHo1#89cI67*qX`g(^p@FG@x(jJo;jRjKIo&Hf&gC=`o*qv^m0582PLXZ zKRB6&HfU&rD16h8DsV(R5I6b>Q$rgZa>IR}5j%X)&0#6|vRS7__3J*BQ2uSxbYT8A<$yMVU(Z}RaRacRVOw&trbdSY)CxmO`bNuiw6F%X25&p`|ASx$Diag0|XoJXk z|Cw-ye$NeU(6J&nv_as5p$(E=3@kpkQ%Yo#R_#L&It@A{7;;c@W@ED5o#}7=1LfL2<2bXoE*>Pd|7- z;6+1-!2FS0Ai%M>G=DQeo<6WluMpAQZ$}NwbZB$*{iMFNi5G}QEzwky3dU5h0z(q& zoz4TwA#8L;z?)eMMMYwo(oRDg9CB>>U0uHE?o0YsK2{3xsq5xF6Alox$YC?;Rl5Q~ z0TQU3r>6?i>}4@uYYz9m${NF9^(}vje${kQkZVI5?1e>Q4vNh#v0dI*kL6;u z10-GPeV!zIWX+C)nV@o1*QBIEn97Q#*dlc%3D$yZdETZg4(>BL#a&BmYhBjzuga1-!gMTXT06}~E^c~?A9(+%4 zV}rv#?bt!u@b{&0p7_Li^%u{Cc-mP7-R-LNO1c;^tEBQnxrE^U?O6(|9@v{2vl{d) z5R4*%L_Xxt*z?N$AWVJ_oJ&9M-etHxWHI))w*62&7-QXV${t=X#0vD6Q2T=rNug5)&*pOnig6;99F4o@;VOwsC zbz4TVCVN2Gj^0G-B|18Te`Kvj)YyB$;WosOv-pv0Pmin{^9fF>!r&j>2pIe$vccdV zoiOwgK^FfQ#ogyU?6M!q?Z4?q;6yDPh0|lu&xS(;rK?*kQq#BHa(=^jY1@x;hy`hNE$v%x>|p8AAMG-y)Xn}2@Fu7SZn5*vr9G!h2?sO%e;n+opJ z%m_r^&xiaP5r<<&#L&qGD{MtV*!oS?2y6%c15-3k$cZl0dOVtRP~tl8~h`U(lAXD3CbXdAU!^SA#z?F zQBmq^Ru315I`l~W6W&|F$Et^_WJ`|MJoH#D%{9c}A8EKIX-uRH{?Rk+T9+{=XPc`2 zeOGSKN=HJ;dh+6fCl{w9q&&a+vDFFEkQZ%Rc8ODuxM;+F;AfW0v@W)H2AzN8xH;oQZiKQpJyhcE4{3eJSL2{$=2CT#tU42#()tb~~<|3h8%W zgi9;J0zN1-$Ete@kH(2TywwzWS=Gz4T-X??nX}%Zn$EP%3FgG$ z9}WJ|;2-~`;2*zfpgRS?8XErNHw5ahn!q*o`!SLYg}es7nSQbX5oM z-Q-4%nvt}anvCK!ue@y2{aRm6vF)m*_<~SRc30g##*TLTo#N0bph7Us;f10<#R}S1 z%ljA&B5^gck8~|J<0Q7P%67S}9uN%Wa$|c@h>fn=lyKa<;n84etfov-*m>J*VYd;u zk+0wo`xTbYkBcPA%Vymqf~x6PQ}{+gsCd&o4{Fow+V5-$D$f`_q)wa4dE@iJ>%oqj;*w}-su1;0P@#_76o+HoER<#D*Alqf=vGyvB*qG&Grh`n`hRZ;Cs9J?~AvIOU{- zT}6$(uSPppo-}>mbr<*b;c0Qvg{5IPI&K?wBeKD;8%gyB7XKK<-S6<8y3Z$^V^brA z^KAb(mOYkVI2iZkN5BsayOB7>r4iuCU+50PFNEj>s_B<{_W#fy|L168r7|(SmNWX9 z&afK|yKyKp@I6QT$;GicH z_#_eNy97X-$jAR47(8zTaTJ+2s095LExR&O}$9J8T`HI z$)U95^=`e6o!Q5X`n;1e!)`p-Rz7jFfV3R})yocre zW7SqSGC^~D3$gU2)aj;nPs469EGAjv7E6;6^!I7mb2{|&y=EJxkRmjPEv(Rd(=rQ zRB0+PZaqDvVK>62DrW(SL&E5|%j$e!80GX*c}(%?JGA+EwJvIfXLXN=1uoL#*ujCP z)8;H9qBK@#QNyhZaEIn8ds6&n=#eHg>hj9&dn}s{Y-f+xA=<04%M|HY{s2b&NoBFu zlk*C4WTTbZ?Q7Sxl!#*@W!R0xDJ{^4XmZ1DJhSmO>_#D2n?#P%^J={Vj=a#VPtgo3 zwn&{x*aC&Z47-s8hE2~ZMTXs&8FnKhW=TRO>91io&e}gXhYyI*8f^zJCeSxcXr%q{ z#-ciX2E%S7R`@hG?8eNn8+&mOF0BZ6RfH=l!tDsdZj>e(e3glCQbJlPAXx0rSZ2AU z7{>Sr5&DsB<>V4++ zzS*r;*-e>kO9+f=%NjNfv!cz44Bl;f2f6p9zOTA_Dyc1D;|q5evzw=P^$#zzA6~z! z-_>82Pi=N6aM{!?AX;tzAA4`#NP=9@-M$#d* zA^ta3^bYv{_Umt;7ax<<&St)?QqJApAFdJ z*`)% zHRhh(9MTbiL@R8gVa3QZ;P(*(H3f_72`e!g)5`*QC~RY&*N5-6yVxO*2WPCuVK1Pv$^wh`9I1_Ls&hqG`B+ejShr`8H_?p2?dVJ(pa z2N6p+X#|HlkDb*s+0~n-9bf z{y4^9#!v8X##R!kD82zlGWrTgR>~tA{HhCkDgN zD6_&g68B9y;toAa6}Hi^LSY+`4GP;xdeO7^l3UMdRrrum4&ZhWiI-tjm?dm#B(s!l zABVDs@-u7VwtR(cBv$xRX6pcvDr_Th0@Adt?-<+|qOu;?Df)=BBk!W|xO7<`KLO0q zP0`}=aa7|^1BF5e#ST&Nf|V$2<8cZxUL7SFq?B1LrN@+7g$PE!F~^h$xS@|cHe+aM zawMrH64HkmHt8{@^mhDW&4Aj!AxB{w`%LP-6Jy20j{R)zG;Q!SFdLOn_XAm{O=K0e z(R52x_cHn??Wn-Q&njDC8)0}oZG=|X#=gbrzH=f>ylOW9a=BW3T))FCkS+eX&q}z# zd$EO!Zs%~R22n12d(XR{9wt-RMu)!)kMZY=nn;ChL>7-f9%)CCRAC!^hQP2!VH*cR zq_B;K9oBtgCyX(ZL@I@!m=T3I!{D?!2s?6C=?dHEF5wNA?MD5gu#G)S!W>-c;Q~%_ zCARwz=!}(han*U$Wz^twxyh<3FQu*FNK2J`y3nV?HP0KJ?%?*i$9D#pUY|$ch_Z?n zh0s@r?Gg%w z<4DU6e_F#Y8e_`KN5L71#f;*hhz z%dY9mvn(R#gDXTqsclKrC`P$>0Vj%US;mk|VH*>E(nx%anLJurg>6*WMpP_m(}dTq zbJn}bm%F@m57LvwVQMW18x|(&NwWL{V0DPApSDyAip=4NGHlh;9PR%2QREooWQ#uc*&%hZZ#o>GsTxjLd0&KbGTVRuxV_0&e=?qow<%nO?PkBd zsj{M!6~w=-?bJ#Y!jXEjpH9;SUgEJ#g>W>``yPaQ;`k&>9y||XOPzBWalezb@*qe3|L_Bljt0Ynkxy&m&4Fb+tYI09LtJs@m{LOAlfuwsUq;D8XbJD1;+&q5GVrRpA3i3gMW%44@b?%k$JhpZz9~ zKY%d#D)gM$2SD||3REA+9?1Q&?_~O@mMyoIYPI?28J8v1> zNT(2ve#WK>;n?Q4Q>7_*85@eSmDiKP)5km67I1su?qLTPDo1XW=2q^oQTPe0;B`d3 z_6MWirqJVMhGNLjmL7R3%alDOdV(1kD?oMk%k-~e_9+duKhUWVj$=mk#3m+mkJ*1A z6Iq3DG<|KYn$*3F{#_KGOd%Y>?ka@iy3B4P$H|k%Wrc7I?Gqb1nyErKPMW9$+@iD0 zuR=Jw?h5NHDug4?8ijBi2$DiL4qZcb!WgyU5sq!fOb0m^G`M7cmW5RaM>i}t-03vx z7lm-_SrTRsR}Uj_k}IJQjva5^0K-TKkt}{g$0&2!>mJ{EU~5m#vx*Ag*i)2*-}+Bf z3gJkc=%otb$c2VUOZjjxW1JPjQ6U_A8rJ(tA|=P~opi;PQAGLGn{?V_aL6m+@v%9;pSY~ZeSFzC0Cn347@)kC?M+OQ{33UTk zVlT!!rT84rO^OR`R{U7M!!mus(j9-cl1ii0)-Syt5i{aIk3$OwmM&&yNW`H!Euf*# ztD{0FwQn1>fAeRm?Dma$(}C~X$$)n%f{&*u{2dsN$4?>1fj}$134UzH&LPH4@soV% zQdeiM*3eqM%>dg2wrI}$XNZZ6Qr^uW3QFz!i>oC>O(`$nL~$+47?LT3qe3_a0F+6Z zLbklw!t(the2R|Bvr<2c)|<*Nbn25e!vaf0x6xZ5QyAR(pb(BEGj2Mo6e)yb!lPXv z?>QNrup>aycCPq<9}y)3T-nWIwY=ywNFf|2Irox$koq%yNskr6kvMTo#qo&u6T?AZ zsv=bgM}=@a2!ld6dOf@}TmKk04HqLEjP+9pN4RsDkCFPP%PcPy!jTL+rV8Px5RMR> zQV7RS3E}u{y(-p^KQ{=+{|uNz*m7P}1uluX>s6`2TJjFucIL@00L5*`D_Q^ol%`3x zB58WW4QAopeo-fx6|vCoU2tq)<;`+e+@Vliu5T|2EP;rEu*kZ-o78?`HmQh(eXpwj zy@RroOaM_wnF1naWRo7J3OPlrFzMx^BxZ@iJ3GV%Ok39tueC56s!jzDRK!9nEmjNJ zk)KFoJOE1@+&XV5=iG)78bnU3l$CP9D2WQ_Es!ZJ&Gzjk7Ti|*ka~EOGR!3^9X^N? zT{@riDq^7`7WTF%iSgjR4Em#-L=jSFMJzmUDqfLCEbU?i9T>FFnGd@SG46sQ76v3b zeJED#CT`X$Zn|^zY1HA^kkh5*yL?&iR=@9pI#0Xg58h@+2#%z^1J`Nv3TXgh$1BHT z#AxFB-=J~G&}%n@VBg<|Ovbzr8!*K>@M8;Q9l$7U3_9)UHv91Byt*|a`SOZk&!9!0 zFwQ4551Ytb#D|aY^D>k@ls^C&_%ZcGmgB3ep&RL z-Y)L!1`}NkxKoa|LzPn+)6Nbl&*zy@DgBgQOFYKc&k)muRbI)5iuwgkZ-L0BK>I|8 z-1RL74UImxiMe3YV_820PH!4Q!!5aLLk9{FL1jc=07grQSM3J4wOZ`p zT=JqUwne)DjN!$;iM<5xq{_{eUW?%8idZ;p zE6F8Iq#_pL_&5HH1ePABH(6E1YO^#aW6Lk-uUx)9CSjdHjNlOK< z!+&XwA{HuQp-0ouMv)^aMqeneJ4o3l{zw!)76&aMTXf`G5eqS>ddf^d5erHDCGJJY zxRLWfRE&zTDmO=+7QfHu)lrR<+M3093Q_+|mEFEEZ#wV|6tR%{ah!VQ6@8La5eqFl zu4NfRIz=p0#KOSnOX3t%JVh)dR-s}=?;oa241X1|kQn4mty3_EJEDk%i6Rzy#4Jk4 zIQ><`!b#5k9C{20-9>}jtX%jJPwyV12$Qj^`A}BBo+$C@XW-{9NX0*8L=ZEH;}P#C zhJ(OZIDQnd@UhL~C3vu28 zlOh(nU1eEJ_W{T@m07=~K6IDHseHfHWGp5`5vt|SW8_{& zWyBXnEL6loSYlDc!cT-)_&@uiT>bTK1v{ZVqm&)(oY6@-F_a3MFR8?T42%MqQt1dC zyO47|C~9n9n!7S<{71|`dRszBbJQU3tBzl6ooDTSm-{Cowj^%ik;;Rj&CgAmhJ)U? zZQV|~!`)?NexH}#{j9bY?;`8CP};l?Sa(f!n=h)mE!Kw%(gIwFD!+Mb;Nqaga)Vok z%LRWHVOq2E4|t6m95H}XrY)Y)Sr=u?Y)zh4@?l5#-e_-Q8_q1Z*|L3II_5R_lM6%@ ztoQz%$hNR3&SGiA);U@SJDAt`ZkMkXWxdQ8NKV_tnD?bU(Qy6SE$CFUxXE^lyvlCM zd?kyncgb+fPIljF7;#|IYwYq{4#jd(IqZpOD&?b@?^_(77ND14#^JEek~=j+4U00J zBTb(}BzOBVKT`$mFxHcv$lywPN=K_OwORyIH`HLmHE!OuTnhw%2P*7P^ zKZXk070XSC#vB~u=bzVnGeoVR7w(B0{e&sVl;Yy{83HU(T-+f;j(;gGt{h!LPDN=W zv2^HQ)32B^`ihSthYKX_f5LGeqVBrcj#TtBrNgNh{mL{rRb1STLrmoHRP}x`Mqe4l${iA zpsjU^iyIko_$xpKzuDiw#y;;Vo7H)CbuDH^CPhGEcI%ka^U~nR*{)TAdpx#9m9?># zFrHG)B~7H_;*uovQ?A2>t=W{_3hyaBeWSRz#79gg>=<(VYEKu6aeX&565iL5Vt=_A zP1A1xg_wCXG#d;NC_VFpcH4Gmp*SLAUJu)_85(OK9p(+=1tV6bo$3CnhK=6KHeY?Y zT-N)_AJ4biaGohYtOoF#gls*hXx(K83B|>Am+%7eg-B+bE&eD&4|vs4Ud%dDSzDUo;&!aK z@H%j>dwfwED>~;{Ma9J>xyCeNxV8*q2E-;W&4^|W?<^jQY6aIGIr=3VueU86EMpE- ziOZ(xs$z%yV#RK}hw1%&(G+mhhVvKd^&0ll^N%a@)O}5tNmg!sqwL7!r1t3d1vTKZ zBX`*A@Ed1(^LLN1jmhCF%Ib($_!E9Ed*ksEZtVegZISt1wXO-!h_kj{;ITKr|J>gB zRluo)wSbl~V)VAOQ1ecHJ4+h%mPF0;7d;0!rg}OVsWlWuLgZNslH@a%{Hf zEnJF=i$PVN1teZF(gJxv|735Er1F&F<8LktFW2^`^LP*LGCCnF3HF^4T+TE;#!Vf%QA*^ii@kbxPj4^#3`tFii=CE zLd8;C+#WXuUxR{l2SJ07XGbO48Gz*B5pk$y#l=k&7ng*kmqrO0BU}&(Z!-Y2%Hk#} z^UmK5$j^s%vELP9_4KY$FG|GB3)ABxQ0gS-ehxiWTwLk|n~LKR?*k#{d1{@=%rFzvZcCM)bJF>~{<|}|&3xT? zt09L+?`UJq?=a%(Q(yV)3v+0NIjh1PQDM$rC@$`(vpU@X#lmnHvr=Md`~mj2T~0?x zB&ExiZE;_Si@=!Ojwl@TpKY290cgqmZ$L`~{^bG8?2iYryi{CV;y9*?i>tV}uq{Jz zaX%3*?wj4dnh_Cql|A~G6RoxO?!h^l(4N_h^o4jIC^fCIW6$-`jZqvy;Z!)8XX8&R zjv%qarack0zrh#95$tore4nr@_^6xxQqpBz#_rem8Wt*y>$7!Ta~Q>x)mpB311N3& zVdDOWIpP<1)EQznewb={V@mCt&rvgM4*Br7xM2O(&QtR#W%?c;M-DMm5~ci*Lll%M zjvyeI`=?G!x1=2ktS>ZRnd+aZDUKj9h+!=~4sKqvgp+n;%&vgm0-1M9vwgdX9V+Iv ziG~Q1(!MW|7vGuQ-Cl3SY{sWfQ652ofhCP22j80Wu*fYj&iN*T|mQyow{p@1#Kl zgGC7lEOOA(^8ci0?hdccGLmPQomBGKh=DgBeyCR51!I%lQV9H@6LmzoG$k0+tB-KPh`Y>urk1-{2T$CMb>|FjjE{jo3s97$a1QBiLyk#~#9{ zgMfCu$ac$3ai1?%dl=g;JJwLWaP}NF;K4Fs{3+Fch&E2T?3j#D&{7R|l~Oj2hl(Re z9O?}QvXkRj}jXs6b+W!itwt2;s`2^Ajzsv;P6?hID+nupP~OY zQq}a0;s{!)Vs0zw0o6H{5A%*#O2ws$BiOORT`Bi)OdKx;Y#(J#d)?z33GE2ThS6d| zX9(zI5brJ+a`YnW`CiFN7{%o-Jij<;xV8*)b7TAAkfY)VQb&r{x%q;wV;!(Z<$U5Y zlLiDg+u3@2Ev8o;wVZyYynHyAG0ybn?-WOncsWjqw=*M}DURSr*u)N2lz}XzUdAKB zfaf?EBIy~XL-&uKaB7&{-NB6$Cg3^G(R;@FuK+-!C?gltPO&F=aN2*&omgPi;*{d! zBeXMXUC;_odOad$#DN}%qGFbg91@A8L>#KqqU!m^G%AEr+nG`OH(igE$`KkRdZ>Oe z$5O+Q4XXQyoXD4EN;EPslfvJD@pz1LYFP)`zQ7b1+Q{{1+p%+ql;Q|dSNS|n`|R*V zaRe1dP;mr#&kEIK{*lCM*O_4nCeZ*`-bT7n^V;tp>O$UsMdoB)3$8eVz*o@~nIu3( z1&(sHjP#U6=Zcfj2|EI$F`g?v;73GBA6ItsSS>F)4N@GzNzT0_A7pNrzNE)}sJcmY zhjw+^3gR%YEcuiv6K3K^9Qmoh7tx&XbCD@CoAL&ht3g%y(y;aY&heTtB$^h`P#i&n zq3Gv(XB-_)4>>#%9K{htA?$tZ2*dhUQ437j`p39w_(_8>hQky`u-9vYuYQ|45`4;$ zPS|zxb6l81L1WCpK}seXg#XR6RlfVL%zsJW2%IVXGTB0qxu|ZFdYx=c)&v7uP14p$ zH^3+6Fmm%e`F3Bn#a)>nen{5!E@?M;(g6MY>X5nF)cbOk+~mnFhmBE9Ucm)UN!BD; z0zGvLxeuj26zzseYH|pCL4+9cJ-)BLf0}&%{C)Ml`X+yDl4F4Y+0($KiaQ`%W=)=e zx17T-0Fs$MP4fG^N{Tf!NO1%~&J{=S6X6JcTd#`s3}PDLhcH~Z~P1zS`;W~GY1NOI6mXSD*ML4+!v zRw*mxj67p4q5^sgWC~OKMe4LsI;{`=!!Q+@>hM9VFzI~KtN4qGzu0s2#OQWk1pP5v zqF`(#Jr>0`UX(L3fT{vt^UBhl$Yu`)q8H!4Os?KpVh)rdg{ zj+(3Zi`W~V4OoP~T)W1`c9-HWvPUZqfdN706@M{#8Gs=4gzZrz>GRod0{H{*kgr0| z0|1Jz0@Vky2XcSzDjvN!rk@8&|3c3GTlw+t96LaDd+Y%{672#Jjm$3ntoVx@V{VET z*Ma3Q55*zn0o32;sp2ofg8VJuL3)Lr>lZ+gRQ$z*`dZERt(B6B_fv+ceG)2@A3_Jz zioYlYp9icWV-ek1UcI0q16}#?CbEjZXu5>-Mug2{IxTdJ@~pC}X8jO1iisf>uIamW zx!C2m(Ljij^mBC(4x-{OlJ;XdZKZ6&X^WG*8S0~U189}2#mB{cHVb5nf9|ugXdf5b zdNqsR=Gb44e2R8YX+!#Ee*=IhU)5EWEB>PG z^%0locg0^^xuab`z7&6vq$gqaaPlOzL0=st3AV12rZ!$g!WpV_gmxE=duDgGh}4W`#FldLTHA{nC| zv}aT1;;{YB~K(dHHZKW1JO#G27nxPYaECJ2Mg-9M%NfKgm8h z4G_&DQ8N-kkI}GPqE^RBQiVc$#6indX(};nJuRi;F9r~xnBGBD%Gg!aQ_Pj(FOrD% zQ?laX;sj-2dX63+(FiA*7;$ld%62_c`$W)M>DFB#Tl9X-;~Vp(VLQ7$ovghY&i4W@ zmMZ=taj2hKL7t4d^AEOP`sMR(PM-?D+m=L)os^pwaH6=DWz19!QL{g_`4+v4z*W8- zdG^7Qi(KGaC)fmWto2sM6qaU9^NBF)%4~O=FT#h(sFQ5xOG6Y9Gp|dJ)2?!JDsGZR zoulq%3(NPP>czXtFZAMG$wQtC-7%jiEB+#hw=bPleYRP7G{YrxhT@UlepT zRs6-CT1^vc*}Z_EJKED^X%<5a%irj7)kh!uZv*iotCFE$B4FjjS&Uf)MzV*U1w=io1Gt^%DMjcXjpJ z{P*`KPmk1pd-f$ze|@Az(jm1W{x??i4)8DEe*F!gXg(%cn`G5vatBcSioaNWBK*a7 zIS3K--B++7y3IWU6+b|oh`lJCFc}%mAT*n8oX`I~+T~ucV)W!_nt1PY6hFW2<$>Mh zMFse(fV=9rHmSjKa(+gAvoCR;3(yvA>36BH68zYTeBA0t*vJ#*<>w``<3`0BCw&PG zJ@Snn_0#mWSl@?ex=?7Kpt7hq#9*p0-4zg=36#^pTRAQwmC=&}`iW9vow%;m6H&^C zX;1@*_^e7oxKd{ouHb~!N4?Z?l+}46maHt%P?}ySOdU`SMVF!uFlpovGspvf@I#J6 zso;cwr|31soEcSc!m$wH-_{CA4gqCkSWAzCSVxvnasY{l(xVSYzfdYPM^wN`VgqM6 zH*oO77pJ0jSRT%6$%FePo%(;ieW=3+b(T#(iu5Wtp@I|kjC|DQHk44_=$fYibv|vQ z8_je7?L zC(I!NontU-os~^K5Tg;((yuldoH8xnSmdL>+~>Q89jv{4oTa`&<52IfUDII2A!hOJ z@Iu`MHJ-pI)`1^eDC+>mOyRq*qUdP$FQxHb6VtV)*P>Gt_u!qM8|PydYN?6Lf~|cV z${xzkto+*Y1L%G)nI&SIKY-5{s9wPdiIJXE!3q0JG0^Q%6VQJ+7I08bwJ*z1j9ao7 zSlG3A=` z*E3+%l*l1w{Dn+p6`auYGU?4p>!g=N-coQva6rYQz`+*X8FHDIP(GgET~Cp2S@wHoKeSi`Z+m>I@s7%~k+;}l%7w{IcES-8?6nqI(y zu8dw|YY^A^+-Z@gQgK*5Ny>%wx~|=BsYZM4n>)%mj7N=LB7LLage02^PRQ6-Vvy)9 zAkk3NDBJm(G?3}B1S>dUVAeU{9(KxzgZR_@hRmWlG6u^F#ppD3C{d$^r*Gk?&)z*o zU|vW(A(^fK;f!fmv0^vg1EcSYrnun=>h&7-(sLX4Q#ezEPugBsUt{~XW*M{_^056Q>~_Db39&|f)gq@A&HIAx}X&%YOD3W z@q>scWo#rp4&7>G>B!Q|QD;`c(X}=(mvd?s=X6BvdZhM=I}p>Oi7t}O7O(8~jrm4k zsiVV{R1u{^mx+F5dRV~;i9v(ZD$is{8hJs6Dv^g)qQca+MD!5)Iq*9#;6!;X%NUZS z3QjmPp0k1z!jUv-;e({pO8p!IiGmY$Cp_kL|9=2Picip&cW_4!cm*H7W(6lqV4bBd z^Q@XS&z`U&K+<;3fw|;@t%4JhK}L6AR_9*92|LzK;wom5T|53Mqd!>WN0`}AcgtR< zf)iqQj6MoZIARF=$(%e0&1gOXF`OjYQG{6yx&*F%UO!{dm4>3=Sd?ARHnhK;GoZ zvfkdnLh9-%fFrKnSCGX3CO#BpX-HOii$`oLfT1pyaB|==>6V)T=MhlM4g~|UW3?)9 zvs=>E3EUq0+@lxPMzOPJ(R&)G($P8VsZjdsX1U3?8O&(YP21kRe(~amrmmiKzdo;b zw=Y(^Y~4P)`r<|R+poI$*P)D*zzNwixcn%68F07z(B7pSy`f?RKW@P>B5mm9V~uuJ0fN{ zj=7YbQbv{VapVv~B~i)`IYdEe*Uffxqn{}q`rGs?)8I6G*%dRjGibYi+GbO60^7}g zdsAgaDJzJ7!`7*lDmWp@K|dWET~?$p6C*%WUT{a8C5#!Vh^=8n4qs-}d`Lf=ve&5B@o_5I}yw0`lQFhjO zdMgy1kZ0;KVD0UeqcxLux1|bBc+e-fj84G`EiXJ@UNI}&MEWX#tr*B2$o;uICVw6% zUBL;dn=n;yLSVvZ#3TNsun+$-HF zI3aZ}rBfo{rUL?-I;mVkOP%FgjqDTBcc$Oyalg!PEZR`}1DyePYTyv|E2r-#ehW*)9~E@My?55hh->8{pPz@p1hQvp}}^=RPZo_HnVTSMnhlt533% z& zYaWiB?%?*i$EWp{$LCo^i?!#g!*)4YVAP2S{ZBcjEF$1Z#+|&RWQ&b5 zi$v`i9Ox0IDdP1>R*{J9Ym3I1s9kr@KJgncd@K%HLbm8FT;^r@f=nB_esC-&HGgP9 z=~sryX?Ay4!f`%xMM|V!A)XQ7>VeaPu(>@FRP&Tr3veX>VPoavl;Y#BkC_?YDrkkN zhofGPh?#Dp$DxG-OGk<>v6P5Iby}#tNy;wH>1@@kwg`>7yt3Oj4rsiQ0rnN9Df}H6 zad~mk3KHu;6I&+@9|7xP%bZiBn&KxpV(-)%f=#d)2tGlcWf3_aTpgdpb%P8gic9~Hi*=x2iy{=X15 zZXf@;E8h~x;nDN7-la45mtwVm{l)BT#*pBj^Xj(UK)AwlymWB<_OmP3+p`VwP4)cz zk%A@13UCuWfKlSYmFw821`)}-YG@neaEQDPiBp!QEn2v-P#j)kCNVv^prSFQMjku1 z|I|>3cQF#R;tEdN46e9>Bsr9(iYrL07^jLW$eSnP6&W&d&j1l0hXeYBQpQZ;Y%6}Dj&aCcI87~9SdV%Uc`%NH!pn0!C&jZa@TtVu{E+wH)eRhFJS%soQ}jt4U8Qchq2 z9dTR0-EDQXfQ#F94?8$G;4WBEDMm0TWE0wf7JG#wmB$X5gW4y=zD#Qa`!NS)Q%j_w zvY&xrYM+Fx2|t7msQrgZ6<4s&r0zR0HfX0P>n~&?tGI%u!=k#E(ZA5~z_ZF$TtOJa zPaB~LD^GC+$tLmP2I7_C3L1CBJ&H8aeZ>_V1~5p%Mr@*=FKQwcSCH7;Pr05@TtPPG zsge9Hx2ANGn0k@+W~gq!J<}nso`~%CkOwy* zAR^WRZ%b#w>53~zLWAkGhsDx3IMx9|*YldUnKa1Rq6SCBZ-rFdi*@Esi^PgK*EBNbPW_|~P2Fs6zt zIOJ3Jm$fv~%#boNtfj}PMcJEVV#GNemF;?@_K7e9C0k^yLjEM9v3Sh=NkvlBltha`6IA6xXthA(`R|Dy|?bY0hEG zn=LHgFT$tjNII?5&sVuQ4mfEjiK?45!@}?;jwId!nZguTkOan?&MHOQtX(3SLfCXq ztJd4!_&Q9VZmNO1)PR;P+9h}=1Rrir!eUMQ~MNnFKDvTMgbJ=L7>9T{HDvM;H) zf*okE%gitn6<3hN=$JA`HxyTp(Q*tDw)?>Tb$@_eaRrZJXTGIP5e>vFPTE~t?dd(y z)jP?YD6XL53SRyF$@9PM&;rb@lR@`S0D;)ob(L-=7%b ze{93n`G5va#w?#E3V)t!WI0VeNnFddbfh^`@ea)thf1FxNIP= z=7Sl0=!#t&F0%9wBX)Ygg-mUT)IWo^`PqFMD6X+9lxgIpo2E=!o(u(iJm&eJLJ7bc zHp^Xchq#8pAc1|=b1F0|P@y|TXM4S_w%`_kY4v$S9}JTxj)SHlQ7bQfNpZ(hZ~uDR zeeL`@9N$Op1m@G9iYD3|R9fOIOjMpd>4 z{_xAG(3*&=S%1t570Z*Pb)0@;1@x*7ryPpqIqtpg?`eI=kL6gJVtEdEEDj%&q*t*# z70VO!i{d%n+4E5Ly1#g@2cI*xk_r;VH(&{(A{4eF6Mm6PMA}rbJiS&!u{=qV7>Q05 z%QJ^tCnJG10^n1=onjF56Cy?ooFjwcs92sP%{`0ni*OPdC-jHWf}cpsy+*||y+@Ck zUbK%x*+cmQV45!jV3;qN9Tm2H0W8iy^@`<5jP#^m$V2*X<;TDCj&)egHJ{PCNQ&iI zRJZ;BwPB%`xtt|YEYDMbHfy}7F|cZC#qxZ!tHC*m4mtd_$#-w|Hzfn5Z+nB? zLKm}rE=9oj;7%`FmozwXwrf@3W;wW{IBV<3%l}TPCIE4M)+;EMC)t30%5}J6d2*`= zppp5u*l!mTP8A$B-V`;53wBet+@qn{@V`F#Ma+{S zr#T{HUKica$Iw^<=`e4&6J^B8v@_jb)m4=*+kExqa#`=I);k-pw&^@m9*%9s%yCBV zK?>jDkoe-aP;gS*tTOFJ1HeXbATda#^ zhM}BG`i$Fsn=6)QV9W6ZuQ75=p2s+dsgI5_ITln^a1X|*pqy$gFC{=KgB=I<2Cb0}-azrubY(Z)>m zEp3M(DYn{? zgXu&_sXeGJ&$5U-Zq*y9ZA+rYPAZ=laH6=DWz19!!S+A3`4*?ow3MYORV+{H zQcUL)ce>esQ}ecS3UPA>Veru1*VF=QJLhmm6w5P#JJaei&nh>5 zfgI<|?SvfxQa^FUUvj}#u{=qYAe~j4EV$z&=U$QzYAGWp^w>aaG%bMO$R2>DC+juY z6O8lmCUF%T#XC>(Q-Lqyc*KwFQ)V{h4J=o)%dD2!xEOWl9Is1NkCgj`7g>Gq1>fk0t)2a9h{&^>UFX)Src4ZYLd22x&b~hhmo7-$+!EmE$+(v z@IwNiMo9};k`2(muMU};O}#Hy$xWW@a@elZ%sVNz@E%)eo7wH~Jo#^UmHYz$K9x|^EfiRp zH(S?u+yJ>_x%xDD*gzBBS3hFoR>gXq?-E!@e1zthX1&IigTVglh|c-pSqA8w2=916 z=e%;zITgzjm{+X|WD<%VY|wh{*#%}D12z&Q4)_CK8+;TtW&qV2cqUV*Upyr@jg?%W|YpiAC>hI7t;okp9MSO86TR+-?qAC5uN-OOjx;NDq2JBm*sjopeJM0@rqG3B zmeAh{UC5iKBad(=Q0yIK*3MIQN*R5{$Krs094@FNO8N1KC@59vLf9QV&5SB^Aqh`E zr9oXhEJ_&!iARzk5)zd&tQ&|4t$ZmB{SQm+luX?@7sJS zD|F#`0fUPI)?-*zA*# zLh?iCfZBgHJw`D|8{Qmz^|) zCOE!bo-Gl^Wf6Zc_GjnMOgN};7O&b3aBH>rxPFIOAY1%%pOvr^atyLRLtJfO@{DAu)J7r2A)~NUhL? z#Is&H0*Ulzf`;Fpm$D0Ja~JJdBJF451aLKnI_egg8P(1j#D z33EZhw}5;I*rDr!xvzv1Mnp{XUo%fNTI(#XI&mJ`o zXnB0zI#HU%>g5Rp8DH`)cw`>TLGALt1zf0xW>7%!_!A zgCM)$OsVH>oun$7v+PlXHO!?xCZ|SOH(Ta-|oDgtd*%Vq-_eE3O@C5aGZNLec z{0d#@QGLVNLx`CV2Q$W5p$p;on_mTxulTWMg0+Ah9Z*Ibp|P|IUHB0;v4a(5Y|*G6 z9Lq`1hZdB6<3(`AHs^Q?uwv6ZOAYZ4nwJdZ>Oe$NIvq616I| zZ_JlwO7zDOsF-OAkEg5Ud(o^Q%`3<)*Wa9SU8TD0HDKW5?OGWU4s*-NG~o zuu~AXM2LKlS3R!-2Dm(E6XEztAy!ZCJgYV-bm4)mlemg`__>Sxlo3J9^buw@3SDRp z2e}iw@bplj3sFXgALev~LKiYxuF!=FU3k!-G+Y13gp^52oGHjKq%@K-g)UU+LRf%K zR^UhiZ}J@;g}Ke=gD%_wNWFh~#(JzAn76&g#XqI7`MC+x z(8C>Do2pp;=$)^K8ls!~g2YTfUc~r(V-waXUD1T4f=qF4^fWCfBF@!Yv=d=ZhxJoXH zEP=a}V3l=y=ha4R7JkM|64e-*NjR}kXXSkPFF#tg^dfU;A{s1iPo94@FN zO2adJOKH|9*oF_iaLU9qI1OKr#q6ju7`%VlPDT%GH~Z~P1-m+Ad*DCGdupW$Sx9ow zPp9buZ<4W0g)B647Qu~}v}^9u?B5AF0wg@M3Qhql3_)X$`EOW0H_!Mxj%vT!kzQap^?w2N@ji0U2szBIQBJ(3uNP-1AQOj6Qys z37`5sK=)UV?1-EgScXyN?s|jHwektO6>N5)H)f~_4%oJuQ>K)iX$_4hXH}t)g+_eS z@A756Tm8Q4rKer;2d{H&+06@1^x!j=*#O3lSB}NAHw08q>zOq*EWrDW-T#%i9Lmcc}RIg)$A9}44ZutDw7{V z2h{#RXTY8E4(a`3W7?^Zg?)~Vzl+m1d3>HYkyXe-!+X*jQ5PAx4(a?^Wh-PMI3TBC zRVZZP*sQQ&M%+GkcG(B(I-{NLXYerlW5fE!@m_gk@4Aqz=_`l%f|xMR6}V*GB8>B<{SC>!tQ5Cx^SC1MPf zs43+~GorZm%L6^eR3Qr!g)EduUlNzl_|X{D!0;(LD$h#2H1rd3T;&Q`$nIw*Mo!s7 zl>Sf`@|HVW>YPqNa|e(YAu#HT)U1$&i9!~VWcAW0Q^lC5R3Qr|Irnpn2DskQw1CI& z2W08>todrYcd{oK=i}M(W8Mv0B)fL}Q$_@_$jgT@EJCI1b*8<}aiZ4PQv6Jt-!urH z1V?8B2V5T1{s_-D^}d7$h>TY?#VX$c*)nT#fY)ns_yvSJ zf12d?d6g6h#ix*kAm<8Mn3ZoV5+m#d_iW9zMzp8s>93pRCf_1zdAe!ayVoyX{Ls|Z zv+mdD_3rk?YL~6sXIEdm=zjZEXUGm^q#b18{{bYwxnT=G0XpC=|L48{eFJU`BdMur zjAh{U(UDX{!Tr`@7maL`8qa#Eh=RlqN_&b(KVhnff_-k7?-TY1A9b@|N_y!HgUc z`&^>$)(XYM{212SvO?%VmXIdfQI&do8H*B{BTiMl1u})D*}mPxo-LZ!k_V3`oW@Sx z{9t)Okg1DQs>27d)ui)D@4Cp#!0Ljv0CPpYNV$XBfbTkGo!8JuYlWevw!|13%)nRy zd_*5b6bx}m6yJdPVJF?h{(joQOUfl8{h`aecAv`gFXiAKBuaxI@oUMHDowP((pwgCYu&UVz1m8TdG@I^-2X7a|TMwSvKeq{j>{q)Q4OK=lIEE21DV(vyB659z;^AOCJJu=b0;<}+G_so=5$h}?P0U=^mm zE0%G=KFJZ~ipSYeRO!QIivFA9_f!!DPXt9$M8V^L^2?Yd2DVuBRl{n&q?-KKbBzW@u7S}t%!oAOGs}{I%XNr`LoJa zL_u&s_LaK;@+$zEd=T7nr$GX6~WD|A_IWvEcGEH<0!_HuOQ`8LN z6`XWyxksy_S?&tB4?AmNjoSbE2$;Y;8DckbMEjevST4GukD=K&`OYlNIm{a_tBhEg zzAMbYQ3=z+t=)}V$4z^mBLTVh~gv{G`KiVUFqs++ze*WWU?q zh~e5Y%*~B$NWE|CG*vcUhtqD}ZWkBe(pAL{`NfLecn?$7`=Tjsc!GMpE{iJX+zCY# z9BJ>^5(-|2KLkw21>Zg1P2BAo+KOon$0^guCB$;T`Y$rSt2Tb^(_$fLkKm~2_AWBu z!dgJv9M~#;m&1|!z)?`7$3v<+`R#16G|Y)+k*FC7p~nbSDq2NLIIUL4^iVlMdnQ^< zDlu$5Eu|s~Dxx3>1E%rUMMs%0Dq4_nQ)?h9M#aopry>dxTSsXp1FXFox=fUp>0w0_ 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 z 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 delta 2351 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 CuGs1T delta 1274 zcmciAUuauZ90zdDz2|02+H_sEHtl9-lR@3w(&RL^rWeU}Nt?8d$*mh(VwN_4 znq1S{o1_pZee=ayV*NRoGWM|HWK5UAQLs22uIOOv7$QE2MFgMRWb8p7^j1L--^BUy z<;U-whu;@IH-79|{=xkEmDMj_z=ZTWnyqLL+Z@4HZa1&p>q5M?;VTh8f~9t}m!8w1H+m6)hwn4Qn9Qkmn_WxWP(OittH>Iw z1ZL!NT2#Zyg6QxrDhV~K_y%T02QOtZ9#xr-6$NK76-Y=Sk0Qp#`D&WD=0tHiT8)h# zSF+y9v>KdzIbIqXJFZ5SJILLkpY$(Lo$p;AuOo^`11RqH|OGP=D8Ldh+X{aVl zq*ApvDss$2llaBCOF0+Bdp)n;?N+gQlr4$GU$?pY&xmH z!&A5u6KB7xVOer?sef)uWv$y^vyC|6bb&cIRg@CZkm$|J!J))+1;rCuNDAqR^0aT{ zMX8z#lFH0{eoP^S5h1e}$jv*InNlt=DSC5r{zxSspCq*b;fSxCT?|jfi4Z9Z3*G_v zl%hV^c#pAAlb?OZOg}!!u3o2`dvMD(Hx|*Ky0NhnRy1Z*Q}?v7;pST4H=gUDAA0fS z1OL0Q-DmMrpb1-s(TiA5*HiejRw~JOY=mC;2(Pr!wlDD74BaB!QHDO^xyFC%N_rx$ zqHed9){k-S7W!_GtG)>x+oI0z($nQF&eqe|{hb*!OdIrhR%bVCi`oGz^(i!x1 HL*4K@PfxC5 diff --git a/package.json b/package.json index ee6a3c6b..650b8c0a 100644 --- a/package.json +++ b/package.json @@ -3,11 +3,13 @@ "version": "1.0.0", "description": "A Fosscord server written in Node.js", "scripts": { + "postinstall": "npx patch-package", "start": "node dist/bundle/start.js", - "build": "tsc -p ." + "build": "tsc -p .", + "generate:rights": "node scripts/rights.js" }, - "main": "dist/bundle/start.js", - "types": "src/bundle/index.js", + "main": "dist/bundle/index.js", + "types": "src/bundle/index.ts", "repository": { "type": "git", "url": "git+https://github.com/fosscord/fosscord-server.git" @@ -39,7 +41,7 @@ "typescript": "^4.8.3" }, "dependencies": { - "ajv": "^8.11.0", + "ajv": "^8.6.2", "ajv-formats": "^2.1.1", "bcrypt": "^5.0.1", "cheerio": "^1.0.0-rc.12", @@ -67,6 +69,7 @@ "sharp": "^0.31.0", "sqlite3": "^5.1.1", "typeorm": "^0.3.10", + "typescript-json-schema": "^0.50.1", "ws": "^8.9.0" }, "optionalDependencies": { diff --git a/scripts/build.js b/scripts/build.js deleted file mode 100644 index dfe7dfa1..00000000 --- a/scripts/build.js +++ /dev/null @@ -1,72 +0,0 @@ -const { execSync } = require("child_process"); -const path = require("path"); -const fs = require("fs"); -const { getSystemErrorMap } = require("util"); -const { argv } = require("process"); - -var steps = 2, i = 0; -if (argv.includes("clean")) steps++; -if (argv.includes("copyonly")) steps--; -const dirs = ["api", "util", "cdn", "gateway", "bundle"]; -const verbose = argv.includes("verbose") || argv.includes("v"); - -var copyRecursiveSync = function(src, dest) { - if(verbose) console.log(`cpsync: ${src} -> ${dest}`); - var exists = fs.existsSync(src); - if(!exists){ - console.log(src + " doesn't exist, not copying!"); - return; - } - var stats = exists && fs.statSync(src); - var isDirectory = exists && stats.isDirectory(); - if (isDirectory) { - fs.mkdirSync(dest, {recursive: true}); - fs.readdirSync(src).forEach(function(childItemName) { - copyRecursiveSync(path.join(src, childItemName), - path.join(dest, childItemName)); - }); - } else { - fs.copyFileSync(src, dest); - } - }; - -if (argv.includes("clean")) { - console.log(`[${++i}/${steps}] Cleaning...`); - dirs.forEach((a) => { - var d = "../" + a + "/dist"; - if (fs.existsSync(d)) { - fs.rmSync(d, { recursive: true }); - if (verbose) console.log(`Deleted ${d}!`); - } - }); -} - -console.log(`[${++i}/${steps}] Copying src files...`); -copyRecursiveSync(path.join(__dirname, "..", "..", "api", "assets"), path.join(__dirname, "..", "dist", "api", "assets")); -copyRecursiveSync(path.join(__dirname, "..", "..", "api", "client_test"), path.join(__dirname, "..", "dist", "api", "client_test")); -copyRecursiveSync(path.join(__dirname, "..", "..", "api", "locales"), path.join(__dirname, "..", "dist", "api", "locales")); -dirs.forEach((a) => { - copyRecursiveSync("../" + a + "/src", "dist/" + a + "/src"); - if (verbose) console.log(`Copied ${"../" + a + "/dist"} -> ${"dist/" + a + "/src"}!`); -}); - -if (!argv.includes("copyonly")) { - console.log(`[${++i}/${steps}] Compiling src files ...`); - - console.log( - execSync( - 'node "' + - path.join(__dirname, "..", "node_modules", "typescript", "lib", "tsc.js") + - '" -p "' + - path.join(__dirname, "..") + - '"', - { - cwd: path.join(__dirname, ".."), - shell: true, - env: process.env, - encoding: "utf8" - } - ) - ); -} - diff --git a/scripts/droptables.sql b/scripts/droptables.sql deleted file mode 100644 index 8a852048..00000000 --- a/scripts/droptables.sql +++ /dev/null @@ -1,31 +0,0 @@ -DROP TABLE applications; -DROP TABLE attachments; -DROP TABLE audit_logs; -DROP TABLE bans; -DROP TABLE connected_accounts; -DROP TABLE emojis; -DROP TABLE invites; -DROP TABLE member_roles; -DROP TABLE message_channel_mentions; -DROP TABLE message_role_mentions; -DROP TABLE message_stickers; -DROP TABLE message_user_mentions; -DROP TABLE messages; -DROP TABLE rate_limits; -DROP TABLE read_states; -DROP TABLE recipients; -DROP TABLE relationships; -DROP TABLE roles; -DROP TABLE sessions; -DROP TABLE stickers; -DROP TABLE team_members; -DROP TABLE teams; -DROP TABLE templates; -DROP TABLE voice_states; -DROP TABLE webhooks; -DROP TABLE channels; -DROP TABLE members; -DROP TABLE guilds; -DROP TABLE client_release; --- DROP TABLE users; --- DROP TABLE config; \ No newline at end of file diff --git a/scripts/generate_openapi.js b/scripts/generate_openapi.js deleted file mode 100644 index c9de9fa6..00000000 --- a/scripts/generate_openapi.js +++ /dev/null @@ -1,137 +0,0 @@ -// https://mermade.github.io/openapi-gui/# -// https://editor.swagger.io/ -const getRouteDescriptions = require("../jest/getRouteDescriptions"); -const path = require("path"); -const fs = require("fs"); -require("missing-native-js-functions"); - -const openapiPath = path.join(__dirname, "..", "assets", "openapi.json"); -const SchemaPath = path.join(__dirname, "..", "assets", "schemas.json"); -const schemas = JSON.parse(fs.readFileSync(SchemaPath, { encoding: "utf8" })); -const specification = JSON.parse(fs.readFileSync(openapiPath, { encoding: "utf8" })); - -function combineSchemas(schemas) { - var definitions = {}; - - for (const name in schemas) { - definitions = { - ...definitions, - ...schemas[name].definitions, - [name]: { ...schemas[name], definitions: undefined, $schema: undefined } - }; - } - - for (const key in definitions) { - specification.components.schemas[key] = definitions[key]; - delete definitions[key].additionalProperties; - delete definitions[key].$schema; - const definition = definitions[key]; - - if (typeof definition.properties === "object") { - for (const property of Object.values(definition.properties)) { - if (Array.isArray(property.type)) { - if (property.type.includes("null")) { - property.type = property.type.find((x) => x !== "null"); - property.nullable = true; - } - } - } - } - } - - return definitions; -} - -function getTag(key) { - return key.match(/\/([\w-]+)/)[1]; -} - -function apiRoutes() { - const routes = getRouteDescriptions(); - - const tags = Array.from(routes.keys()).map((x) => getTag(x)); - specification.tags = [...specification.tags.map((x) => x.name), ...tags].unique().map((x) => ({ name: x })); - - routes.forEach((route, pathAndMethod) => { - const [p, method] = pathAndMethod.split("|"); - const path = p.replace(/:(\w+)/g, "{$1}"); - - let obj = specification.paths[path]?.[method] || {}; - if (!obj.description) { - const permission = route.permission ? `##### Requires the \`\`${route.permission}\`\` permission\n` : ""; - const event = route.test?.event ? `##### Fires a \`\`${route.test?.event}\`\` event\n` : ""; - obj.description = permission + event; - } - if (route.body) { - obj.requestBody = { - required: true, - content: { - "application/json": { - schema: { $ref: `#/components/schemas/${route.body}` } - } - } - }.merge(obj.requestBody); - } - if (!obj.responses) { - obj.responses = { - default: { - description: "not documented" - } - }; - } - if (route.test?.response) { - const status = route.test.response.status || 200; - let schema = { - allOf: [ - { - $ref: `#/components/schemas/${route.test.response.body}` - }, - { - example: route.test.body - } - ] - }; - if (!route.test.body) schema = schema.allOf[0]; - - obj.responses = { - [status]: { - ...(route.test.response.body - ? { - description: obj.responses[status].description || "", - content: { - "application/json": { - schema: schema - } - } - } - : {}) - } - }.merge(obj.responses); - delete obj.responses.default; - } - if (p.includes(":")) { - obj.parameters = p.match(/:\w+/g)?.map((x) => ({ - name: x.replace(":", ""), - in: "path", - required: true, - schema: { type: "string" }, - description: x.replace(":", "") - })); - } - obj.tags = [...(obj.tags || []), getTag(p)].unique(); - - specification.paths[path] = { ...specification.paths[path], [method]: obj }; - }); -} - -function main() { - combineSchemas(schemas); - apiRoutes(); - - fs.writeFileSync( - openapiPath, - JSON.stringify(specification, null, 4).replaceAll("#/definitions", "#/components/schemas").replaceAll("bigint", "number") - ); -} - -main(); diff --git a/scripts/generate_schema.js b/scripts/generate_schema.js index b56c3fbc..01dd2146 100644 --- a/scripts/generate_schema.js +++ b/scripts/generate_schema.js @@ -48,14 +48,7 @@ function modify(obj) { } function main() { - const files = [ - ...walk(path.join(__dirname, "..", "src", "routes")), - ...walk(path.join(__dirname, "..", "..", "util", "src")), - ]; - const program = TJS.getProgramFromFiles( - files, - compilerOptions - ); + const program = TJS.programFromConfig("tsconfig.json") const generator = TJS.buildGenerator(program, settings); if (!generator || !program) return; diff --git a/scripts/install.js b/scripts/install.js deleted file mode 100644 index db9dadbc..00000000 --- a/scripts/install.js +++ /dev/null @@ -1,23 +0,0 @@ -const path = require("path"); -const fs = require("fs"); -const parts = ["api", "util", "cdn", "gateway"]; - -const bundle = require("../package.json"); - -for (const part of parts) { - const { devDependencies, dependencies } = require(path.join( - "..", - "..", - part, - "package.json" - )); - bundle.devDependencies = { ...bundle.devDependencies, ...devDependencies }; - bundle.dependencies = { ...bundle.dependencies, ...dependencies }; - delete bundle.dependencies["@fosscord/util"]; -} - -fs.writeFileSync( - path.join(__dirname, "..", "package.json"), - JSON.stringify(bundle, null, "\t"), - { encoding: "utf8" } -); diff --git a/scripts/migrate_db_engine.js b/scripts/migrate_db_engine.js deleted file mode 100644 index 79e9d86f..00000000 --- a/scripts/migrate_db_engine.js +++ /dev/null @@ -1,109 +0,0 @@ -const { config } = require("dotenv"); -config(); -const { createConnection } = require("typeorm"); -const { initDatabase } = require("../../dist/util/Database"); -require("missing-native-js-functions"); -const { - Application, - Attachment, - Ban, - Channel, - ConfigEntity, - ConnectedAccount, - Emoji, - Guild, - Invite, - Member, - Message, - ReadState, - Recipient, - Relationship, - Role, - Sticker, - Team, - TeamMember, - Template, - User, - VoiceState, - Webhook, -} = require("../../dist/entities/index"); - -async function main() { - if (!process.env.TO) throw new Error("TO database env connection string not set"); - - // manually arrange them because of foreign keys - const entities = [ - ConfigEntity, - User, - Guild, - Channel, - Invite, - Role, - Ban, - Application, - Emoji, - ConnectedAccount, - Member, - ReadState, - Recipient, - Relationship, - Sticker, - Team, - TeamMember, - Template, - VoiceState, - Webhook, - Message, - Attachment, - ]; - - const oldDB = await initDatabase(); - - const type = process.env.TO.includes("://") ? process.env.TO.split(":")[0]?.replace("+srv", "") : "sqlite"; - const isSqlite = type.includes("sqlite"); - - // @ts-ignore - const newDB = await createConnection({ - type, - url: isSqlite ? undefined : process.env.TO, - database: isSqlite ? process.env.TO : undefined, - entities, - name: "new", - synchronize: true, - }); - let i = 0; - - try { - for (const entity of entities) { - const entries = await oldDB.manager.find(entity); - - // @ts-ignore - console.log("migrating " + entries.length + " " + entity.name + " ..."); - - for (const entry of entries) { - console.log(i++); - - try { - await newDB.manager.insert(entity, entry); - } catch (error) { - try { - if (!entry.id) throw new Error("object doesn't have a unique id: " + entry); - await newDB.manager.update(entity, { id: entry.id }, entry); - } catch (error) { - console.error("couldn't migrate " + i + " " + entity.name, error); - } - } - } - - // @ts-ignore - console.log("migrated " + entries.length + " " + entity.name); - } - } catch (error) { - console.error(error.message); - } - - console.log("SUCCESS migrated all data"); - await newDB.close(); -} - -main().caught(); diff --git a/scripts/rights.js b/scripts/rights.js index 289071f6..a4eb0b31 100644 --- a/scripts/rights.js +++ b/scripts/rights.js @@ -1,3 +1,4 @@ +require('module-alias/register'); const { Rights } = require(".."); const allRights = new Rights(1).bitfield;