From 11478333dcbf3a5757b85d3942fb42fd8238a4c2 Mon Sep 17 00:00:00 2001 From: Ugo Cirmignani Date: Thu, 13 Dec 2018 21:30:51 +0100 Subject: [PATCH] some bug fix --- build/modules/configRead.o | Bin 40328 -> 40312 bytes build/modules/connection.o | Bin 51552 -> 51456 bytes build/modules/daemon.o | Bin 14296 -> 14280 bytes build/modules/dynamicVectors.o | Bin 15704 -> 15688 bytes build/modules/fileManagement.o | Bin 31480 -> 31464 bytes build/modules/ftpCommandElaborate.o | Bin 71016 -> 70928 bytes build/modules/ftpData.o | Bin 44664 -> 44712 bytes build/modules/ftpServer.o | Bin 62536 -> 62440 bytes build/modules/logFunctions.o | Bin 7328 -> 7312 bytes build/modules/openSsl.o | Bin 16136 -> 16120 bytes build/modules/signals.o | Bin 11200 -> 11184 bytes build/uFTP | Bin 195552 -> 195576 bytes ftpCommandElaborate.c | 20 +- ftpData.c | 20 +- ftpData.h | 8 +- ftpServer.c | 2 +- library/connection.c | 6 +- nbproject/Makefile-Debug.mk | 149 ----------- nbproject/Makefile-Release.mk | 149 ----------- nbproject/Makefile-impl.mk | 133 ---------- nbproject/Makefile-variables.mk | 35 --- nbproject/Package-Debug.bash | 76 ------ nbproject/Package-Release.bash | 76 ------ nbproject/configurations.xml | 233 ------------------ nbproject/private/Makefile-variables.mk | 7 - .../private/c_standard_headers_indexer.c | 75 ------ nbproject/private/configurations.xml | 75 ------ .../private/cpp_standard_headers_indexer.cpp | 135 ---------- nbproject/private/launcher.properties | 42 ---- nbproject/private/private.xml | 11 - nbproject/project.properties | 2 - nbproject/project.xml | 30 --- testNotes.txt | 1 + 33 files changed, 30 insertions(+), 1255 deletions(-) mode change 100755 => 100644 build/uFTP delete mode 100644 nbproject/Makefile-Debug.mk delete mode 100644 nbproject/Makefile-Release.mk delete mode 100644 nbproject/Makefile-impl.mk delete mode 100644 nbproject/Makefile-variables.mk delete mode 100644 nbproject/Package-Debug.bash delete mode 100644 nbproject/Package-Release.bash delete mode 100644 nbproject/configurations.xml delete mode 100644 nbproject/private/Makefile-variables.mk delete mode 100644 nbproject/private/c_standard_headers_indexer.c delete mode 100644 nbproject/private/configurations.xml delete mode 100644 nbproject/private/cpp_standard_headers_indexer.cpp delete mode 100644 nbproject/private/launcher.properties delete mode 100644 nbproject/private/private.xml delete mode 100644 nbproject/project.properties delete mode 100644 nbproject/project.xml diff --git a/build/modules/configRead.o b/build/modules/configRead.o index 441ccb46ba7da63c84f0b88f9aea83918a7ba0d8..73b75ba944e113680d43754a1100f654b9efd0d3 100644 GIT binary patch delta 2329 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 CNZeWg diff --git a/build/modules/connection.o b/build/modules/connection.o index dcd83527166c26d44254aca41aa1aeee444c527d..77a0222b4ceacf9e8443b193e9962f6149209b3a 100644 GIT binary patch delta 9679 zcmZ{q4P4Y^w#Wa^_)@54xN?B_p|J5(`oyjA_aBmaaFukr`5k&90@jB@Sxp zu5JuR0bdXXP{0>p9FVJ~0-<1S<*2=ERyWL2@49!JT{UgB_Ved|9vIJlc0M1Sncw$3 z=Q+3G|RFd>!k~>`L=)joMucJrW~|n%J7lNcWH04ZnRrpFUc}S z>9rBRcrnmCrB@eKOTlT$>dOE=>g%cw2M+zmZd+jO<2~>AnREWa7w0)&PG9Iu&sgMq zdGdcwcLs{)6?eIHQO1k&UR#(skK!}V1O`6;oa)`4-o)GQc+>XqZQZ*R2Iz%3-BbyM zUP`cC=}-5$qix>|pl96CY5{rOPUWLUH{kU_Rv<2pC&p$NeGFwJ1wwA$But23XYJdS}vm45MT02juYpe#g}GY`W2&=ab(9 z81eJYd4CZ`XHuI7Fq?xm$3757^T?hJIB;<1yc5D`BPC`7KJ4i992Z6pkvkjk1XD9+ zvsOB)2g#QW=pE8IHa?6VpkOxOkucgPj0Q<92iNI;L;uXW&S9LnD8n!={~P=5l(rl& zFtjt0gs{1~lXp4bm|+&xKGWG}EHy3%oX6A@Cx(p;P-r=*gQksYA;$_(-?#t&8l|oP z*ZJW$`&`RD|0eYHtX~s)6YJf{zXC92#LeE0GJU+A)-g53hr%LkAp1&iy&Fcu^Zb37 z9$wj7M&3Nv=R6mXdnMpKOil65u(@K%w-Rtt7#$r(7g2B}V3zPa(%b}wVXPtbCaB5) zzPT_0H}R&hTg>QT7)DRSFjkT8EwH_6r~PkDRy(xQ*n{blf{rI|4&Yw16%5136!dOt%mMWb{VB(ZPM*C`*kqE!3ut5i0YTSN zsu%jF|ICt)3HoCn%JxR9{p9xop5pZUB#auV%?r4NCjdVG_2OrfJr}T;i{=#cRZ7eS zJZkoVVHnARW|BJ>R1vMob>bW|>4staR@f|~U@l-Uj%|aWyGaqadYheL7)G_ASG!yK z+d@xf`(r`}N+ZBTp6hEtN067Cs)QN|Fq=IC7fxrRg+c`QK`(1w^RzY}ntnu%^?-1T zr9L9)=ajl0Fe<{L^90Q!&w9Xd9Qjf~r;&d>;PYG~eI?iPHc{JpGjjU|z$#wd3E|-> zO5EU7Q^~ynaL}z*3_l8+Rpi?ME*Dc5?;JhL)!x>qM}@wGdt;-`T&FifZ zbR#7e0QxwpRzWwBy8y6)$9^Sf6Zr}NkMS{~xJPt022!v9a2a=lL(oD}8v&nYHBQiD z6tfXGL#>NTy3i-pv&J#47+BN~+$$5WS&?m{h8Soy? zuvgG=l(-qNiPu{wsE^#60e5lCm4cok-)6uZK2_=j9ZA8>fQvaB&4N~v+5+kg!YxkK zk6c@vuJ71l5Z6;@<}cjO!-by5>%CX#hpBN3;M+XvAwjDsv<2`qkDVpxIdT*NKFO+E z(5;kO2-v`NeM``}^WA@;pE;5Sjy*ThM+HyZ!2I4$DAeTFDSUxsg{x|0#`Iw`GBzbhR?pE zLQi7*pwMe5tqAa5?x?GR4k2$5xE^B~$v$)*&fIS8%DaSqf#cWLH*J5ILPdau+zAuK zsOjV=cB%wQEe2f3t9VJ+l#!m;y~tIPtiC313E&Ox;6DhhF z#|7O=silCIIV0Z+T2G!*z#qAe*99F;{!+j-O#5&>O(XN=^VC)fc!hHwCFoJImjS-d z9uoxpf)dLBv$->83fi6AWuRJVO_>w(c@M7o7n@)iU?!i>MS^Z3wGD6=uex5)7bs>M zV32G2p`cwTZ5v=TSL&Rg&yjZh;;S}rPw9+Z;`I&{dQbM^6#56` z*bXtVyswi5{hmk75PBcV*zUwbd{(a$bQSrx172skP0(S~wjJ;wul=B)+sR%ISjYEZ z9|_t*iRGZW)33^%_!#%h0?x6{z;yDJ13t|?vs}=L6f6h4z;_Fq1$~iJ1>kh!G-E1+G zGpg5qmd}teLa*U@e<}2dkz z>}{8zvE<$j7|H5!L0ibT8}M(uU(O3Ukb=9xb&}VvziiPtxy)JZ#dXvASoRhv^xsoV z6<{5Y8YActN~?0J1LUm&)LDH-*i59xD!~8eoWCyUXB4Ue9K`YQU?ko)vT)`Ktj}ah84*w36DYK~11*)lU37pC0$|v(DHON~{6A z!e{1GL8p?t#;InLuLkfq_l8&4t4&|i{c58#J~` zcqi97Q_!{K*#o$TPmDJOeVzP!0Kepziv*oSZF>Ok=XLHAG=uB`KsV<(BxpZM3;;&( zIe!aZXUw#l=}RJa0I;6bXhHXpFW^*9P%r>^iLj2kqB)P(yk34mt>S<%06BX~)lfq^Jwbgaz`3K?u4`km9u47z5 zdq3+=UPt@Q0PB4e>w1kk+9aV*BlljwEBv#|TtVx}w-?l5+P61Z)sw0RM*?^IAz=yJ zs~=EmJ!E~vR7dq|u%fysM(L>jA#^=UPadaN@fW_Q>chJBzn^n7%F?qs2IvVM5RPW^ zEkcUWLwvjWn3&)UZvVE(t zPdEF*{F&?%0Tyt>oFlalvaSo-KFs{c!@u3>gzHfQSl0=UIqN!xXE}xfVXys^3tjuEw{#l0-=5VfZ1mVqgs#V)7kXbaQHEjs zopl{sKYb&D7T5V)$7Snp>79+bg!j+gV!;2fqX|Nv$_<$!^u>I3&l37v*5|Tr1)60T zUHO9ini!xX{hiR?U`HE;p2+=GA@oPsf4$J#12r49MSy9%HBV6R0AyVdRPTptLf2v4 z$|splcoLtnAaotp2%+oz-EZlg1=3$XC-MMY>3F^j&k~NtaY56Ct{3o%&?C5;=_b9W zVWe^g6jJDI$f~^w8y)W65xTzapAhjjK6Xy-6L0tPz6h3g0huU6RQ{*Cm-L zbX}5kq3e*tJJ$$h%7rHKCJ%tVfe#}%ie3|*eFpNKwqXDw6 z3;FO@$*EK=spj!&FimJqP?sn; z4JfBMieDXXj6t49-57418k5b@)_-K?yaiZSl)xh{_ zwC3WlQ2`Ylfe84(5i}Z~_(1KAQEpp{##YA|Yiw5&5>3s$ig$f{`^aS9by-Up{=dD? z*?XUT&Uf%LJ2&ELZp7+1y*b#YvP;|FWv9B7T5?w}${=6Yu2uD2dPG*;>7CHB=Z+Yq zS}5zQmA3wF*Yr8;>tfaTewk5iPdRK&Z@5Bdhr3+8jY$T7h_k-yI{gQwl*2zw(f#4w zbTr|J1U-c&jY!aIiAE&o@9F%ASbdl7j2NiPkT9z97WKlPz;+v*F5E-ph zg#X@L)yKp~{NXsAOO4ex>2_*=M`Sd`div{P8t)n7Z0x2~3;(X-EPIH7#Z>8;?PwoE zI677jq{Pv^+E0lw6HJbbrum~$XH~5n-7dm$u{Wi~MbXX|2k21Ml@|joS{!ur>Rjdf z=?+H^_w3BMv)qeb%XGgqYvHh2>GKwhdm}Sr){KP<+>1s{80W6)H?dvERtx9Mo%MF+ zyjfLaXKjw4JF`Po^>b$G$fj~9cj&m>F}(dF5yz^={OZ+~`V^JVPjYnYMz`koceIJ7 zuHOFIPady3zP7ua<;$GxV-BS{DXm;RY{A2NJnI=%Q0z@NO5IT5a%*QtI9V z{-TC#z}DDIJB85`%+padXy2JWtd^>k*_OgaI`Uhe9vtfFF^7#PYjkdj>Qc4X9 zqgyHH13bV81Qpfb3BiS(SK3$V!&xVo9VxW(Y@qd z40x5PHF8U()W0HZ>su693|Zd^+RolhN=I?aQA zMWLmD(R^H4VnW!+eaX2DFd>W%52NEKc^Tj@!f4+xI)}W=01LwCurOLefn|U@!)SOD zd|FkvEVH#fK*>4aDzoBMN_DossWwWfwo0jaO$V}4NWr5(t8?OT-J`b2P+{3fbvb|& ztr?VhxY^A(!%43O+{mN-O!)So_|<@uJKFLbLH|tYs{zM6V$0crzDfSoZat1_Rs-g6 zY-Pfx3pK0;Ea2o03;G*!`N8p{$LM)~e>~3#d@GFZkk1czjT30g-%WbEDd-1$r-SYE zgrGGP@&gvOvguGkFOxGDFo)F%f^MheT(^FYyt#k@elWf-Z2D0k7w}W7_mxsx1not2 zxq!%}IVk7^(gZlfY5QIfbUMWo=oIph8;|qywBdP7?#1LMz?&Rfte{^}4FP_~G*QqY z)IfmunNAkeL#{l)VqUfdf)1m!JivLJ*9t+i$(INEb1KMleC(RsGswFJ5V zWR|(pZyDneoZMdUKg#I=83jq6b2Oku)h-wPl zdO9@}050MBJGiqTDXp;CH$~7G@)ZIWbNw>}9Yn!Gz&Si`wxDAv zR0ueUJ9(X;pObSv;71%)v7q}Yc|G7Qu2rR=LGrE#OtlhJN*xe1p91RvkNn7{p9oq+ zb?e=_FX;{LcqjKpcm8fF)`4U0CG?LdeFNZCuEt8H-RU@y8bDpVgzl&)r%AQ zRj%7}LO)D3n?QT%;wCpv<1uFno7Lpn40w_|?Oj3VQQBs}dtBQ*LCeXv8E_Dv3EKr7 zLBY*#T}q+NfGxQGmxWCxIRk)y=lE|6`XnU>03YzZp`BGE)qH&%L*4**MsVb@f=01E zKjI%Sl79DD)x98n@Ug$^ojQ&jMQTESM)eQmaxnvDO@6N4%Pv}EAphvlA7PdZCkgpg# zzvH6B2nxK&aYFwaH`zd;|C2(+fQ_8Y7(t84SpwLbH^vM>zog_6x86ry%Z8hbgiQ_w zN&pXV6K@mrEY+0&uHwyeT+nYwmjcGJ`kA0Vq4-k31-#Y274&^dF9l5D!?Z1DU~1Tt z{H1`MdEO@k?MpSKfYWI2a@YUx4uGYAA%>3V=E9gFYwlXI(E&!^pw}sW8{l&8t-XRyqjbxcSNT&x&yar`=t)$* z&5aj$ghpX=gBrHE^{3?84%m_-9Kbzgs!>O2+X2(LA4Uthf_&Qnf6x6eQ_!y{xE=6O zR^JnJE`_#(XD+W(zM$=RUu+lp%e*ch3H`^EyaPNpc@-`T`WQ!eQ|QlfFWnaUZ3^rF zjN+Zsj%#dcGJ)!L00ub1SV1q4-U<2!;Z8SR=6NRyn>tG02_93`OhF?#$9IMPHUGRq z=r2&sPQd5b%j|m-?Hp>@3HSwf`yt``9=R&PWBT*Yf_C8gTo?Kz&Z|M_W#p>_{5{vL zEqj|trc$ud?P+cHouCEWok>Cmeu|A1`dsR>%Z=|aT_9)!d3S-QjN{uNXd9lZOy~vN z=hZ^5pt@avE`FMy6*NRT2)NWrQz`X@pmQlc2)LZHzAvbY(u07nvu|g%G8HQ$e-J!- zd1c*#cIGEqg3y1?dwI0bFH=Jh@GST3bU_D^Yd7EyKHuIJ^beG_8!(rB%{9-&`G9=8 z0cV*@v+x~D!QIVIEAwlG@y(^sZot0$B)unmpCV@!UhHAj6eER)X&a+yhu?o~coGr<>SrQD_ff8}^M8^ej2|f@cQTVk}dW zbvJ&uG(&o^{To966M6Thq#0T%=rr!$!(x_Vep_}<*bm|Tew7;bLe}4e*BfBx*(kis z?CqJGI+)pGgx-PIC6;xQ`^Q}6p|+m&a3C|mXfe<`yy2$`y%Rs+)5QeWcr(2z?9KSU z{ehmP9!{|C2SBNAyoZX!1Shy#_XvA4!AW8N3EN*1_U~JrW%bXO0(`(N_dNynK~@J| zMpN)6H|yUNgl@e0v2F_9g}3}LVQ6~U9n4B6@)a#Z3^a)k#J7ZQ5_n(e-MO1ff1tNj>J9FIO7b6stlA%7^>Da93H=-& zSl5M~$2XwcLchRz1V2SgUEk#NI@$VD4?!bO;1UkR4g)Cd5a38bEA8!~CX(+EV1}TN zaE;%l;32>qK^ODLn<#V$uv*ZS{0KNf&clEg1x@3}*_V`j7(D+J)LcafJ%pL5g(9ON>y3lJW`B?L< z(!7c`qh(ZikGZwJNP**n^=!I$JjsD^P5*alz==5XasG)oM~^rvJdx-au$(TPNNhc& zpIzJ_xlRslJuS!nDWB3$4tBH|Lxm?3^**|IGD+VhtWDB4X-aKU>n<+4!Xk=({5t&1$TJI-aT&lj$5DZ#z}s8xv%g3Ub=?LpzFEP z(f$Y`MaFxBsj=F+wo+8m+tG33yRoY+JY@7^oo(R}qX&pYS@P7DA2aj=l%p)HwTBFS z7Jif|k6P48PCaiLPaVxD%cD9~-OvCO~V+)1>rdVc_y>2`uMA9s4I^`Kd zccGkSucc4n*M@d#)g`0fg<9IlFS_H;hOVHQcC-S@upHNf4&5)j!)ACHmS2_LWav+* zW>}uo+&)9EVlKl{)AuW8=n@(kmgiJ07`hLwjHAafkYzcj-N%jRA5^j|_vm(EQaJfL zn9Z_u=~FjjYPTcEvOJ@+y>002Sk1DGYTpkHokwJdC93KrL(ii;#B#IN{%z!94IoY4y$H*^8j9Mj!6l5=uRJq_czh(?ZO zQm=H?(4A=ISk7tpE_H>wyn=zeqXks*EE8I}&3MX~&9m&*?oSyygCNh+(5K5cbP}t1 zraf58J9$^xS>ri{vSVp#!Z(Jd;5$d-Sad9}>V#W2v|q7si|c4QmIswq41Eh!aP$?t z0?SeLEEvxds1{hl=`R?%1#<Y5)KL delta 2117 zcmZ9NU1*zi6vlJf&ayI`@$2;LLY5}YN0a9N#;y(9#8`Eky_t=3U>O7BNVRTSv#x_7 zI75-mUhKoC6fdkSDBEsCvu@&)p}Eisf>^~)5QP+l&1og#2W2;+Iq%I0guwHA{?GY% z|Ka_7{JZf}aeBR)SP9N2Z{NFSqkCrjxuTnVdfe?S9(u4?cz$B|;P|t}eTOF8bGMyZ=+n^vh9&oNZGS+3{`E*ttb7P}oC2Sr)#(J6j2o)KiCEF+rVu1WqBPoWTX z6vgQ%%U(^`YCIpJ7G;^y+}(y&(TF;F0HGMmXX<&?cupc8W0}<+-ZFF!M@qTl>Tby69~q6s7vd%smo7ZQTJ^|zgM5vqeg!hr8vursy=Dx z0xEGw`>+^i*{|$`@gzYBmY=omMMJa5BslYf-omd8UD4ex8ND4x5>CF=8Lt_-fLg-Q z0vZXH!&=wBkNzG42=%ZmDP5=2`}7;+dswz>Zl|GNqTItWtN*Wvp(j!8VR=kd&(J~C zdmKH4V3H-T)pr`tPZ&(Hbm(-WhQ5MQlI3^Z*il1Ms3chqXm7KI5*CvzeOmXDp;Mp~ z%X(Fp3_XWTie*)w$Ulbmp^)OCDOJ~N@BTjhQxT*4op?r{LM_Eo*R)3rok1hDL(XU? z(}qqX-^;WXW4%t6)l)N`3#j(89M&x@8@dVgUY4_3y;WWQEC&%xJDSE|nq`-s^j|2x zrx&F(%T}$v$0Y1WCC&1V-ma3NyRn#Nx)0aWPR=X4Y&^%2aV%Ff;cG+hM8P@QgVT;> zLOa~t-n=k=hc{4jEODiILtjS2Ir<18k7ZOnZyL|T$a^d=Y3)x9-H5Ws^0(g7?+yI~ zRgdKl-EhOuFzO!DRjhiB#*oN3x^;devq0p{hx&3vaTGRvOfMkRf0WLk(!Yb=!}b0w k{esXyj_yKXAV;034CLqo)CY3^IkP$PP{`)!8Y0-B3sGbgDkM2kltB{`1l2>< zUy(!?p@-@rn0$zW2q`MCq5+`{BcdBV$pk^tLov-7taV=Y+5h*if3LMU=k1Z_M|#&% zQ>rwuaGq`7*SW_YY};qsIu6)_4I7*7Kxknq0RQ57=v*-yuS%w4yrcl(rL_ZHOY4g0 z1yZG4eAAbE=F2+6=kpc%e7^ItH)vhQ=gR8nKI+Rj-Y_Mn$CZ7qKPNOR{W#@>%}P(B zzl_aBN!zRFccjZK{RRcud=}4T<@p6S$n*>GppAbKHl#d-ft>J0>8GaVgilHz!C;W- zDMo_U_@(m&vgR+wL2-yplO%){WweBtBIpQN^Ip<-E6)X_LhLRQHL2)K*`HSW4orls zIV|^lSJBm|FK4q&=6#{)E+op?bO`;bXczj+*≫lN0juUO~E?%^9JK6&(RNZ1zi{ zqv!-&hfR^F4T>&9tHWkUYELP84`&^wPTX>A;ZgBCL65`u>CBE_l78N)swuMnq4W~@ ziu|(Xr+bVRYv}=cESq7eS*<)4DQl?~A1#}tcs41|DCUIOtP=WAQAT~3O;qTxqQgjp znJi9*t*I3jkood`CXo)axg>OnqN5Bp%jeK$p z^%dE)L%;k2kE~F6k$3F6PY|~R5?AgMwqsu`yWrq^#A+0ior;> zpG<^}C-ZDqo^L3ww3I|kC7YMh^F`%3fu2ex2Yr>+P0C%rR-Rc>`$6ejFp&Zi^CPv$lsfp1}xX~E3BN2^dozWOoArpcyz326jbB&b9pBuMpb#@m~=&+mDk?|Hv`eFt6~=$uJwyS-&q zJ@KlmWmD~zj%`W1cXNkbk=(N|nb^L&WmiW!xpB{KyLaiz7K@x2kM?PmxLrF6Z)(d? zJ7s=P`;qf=s_1L<`Ye4!&c~)-JQtPc13Z4F518w>==7DxA1VG#=AJA4 zoNV@1>G#p?XS#-merrAnn<(vzw=xOt0Gp^JgcU7CJis&+Z2@Z@O2Q`PIfhJtosps* zQS^sQomTpC3kBC(#>Z zb5LltqW6&tvRN;QAw}Q86JqmS=u$;Tqcy}8*M*+KK!|Z7R7q_(AF?JT`aLyu2H6ld zAD2Ea75ywz-;_R9UP6g{7q`2DxV3Z{J1v{LGBaIys*$mlycn=-(&AaIJbj=r8@JF~ zik89&vzaOMsiJq02s2ep*x!IlZ~>ek$u{g=Ly{PmePpVv$-jq&nnL@?5t;+gp>8wNy}aL zE6-24?KetKVkn>AV`e=lp(onWab^E4e&HH(Pg9>W>XBAh8U%hZHUnh acp7804~fQD-q{$VWym(h=qfz(XZ!(NR^@d7 diff --git a/build/modules/fileManagement.o b/build/modules/fileManagement.o index b36c195d45bc106bf43efa71dbc90551d7ceaeb7..ffc79e671da74763117967a20e6b6a495029f250 100644 GIT binary patch delta 2579 zcmZ9OYi!e17>E0ALjnJ;UcHP!p+m72d5--Dq zU{Im_2!hCEipU}$O(hdUfGHX-#;i&ZK7ceDa0HDFBAdo&M&AlM{nGY4&v|d>H2)6X zreAK;rfIZ4Iz4mtMBNZ-t<$RlAsuL3saGv|sYJ(~oE^)G{X73kX6))S`*W3ll;!Tr zmU^>fTP&6wi^Z}4-OG5hdn`^aTSQwyZdT4=X0ccn8fp#fZl)b5a%=hloo*-XMW0*K z??}2?1v69nPGi?GXGUMtD0QkW))ey?&Rletvf42^MZ*T2g?K5`0SuHnsQ`Abrc3a7S+z^X ze#1Y2h?i*yJzlMRGD%Cu$f~9y>1DN4GUgd{1MWy4jb=?1#)evX#0`Z6mOWv$_V zibR>FX|Rmr~~mTR@0^2gh5L{)l4g)shMIkw}5`5J6>tcqli z7YzD69Cd8JF7!8pPLTQnQg1rD2XEAAHAn0X2K^54I#y#OW{*MFf$B9KfxVuo1x58* z6^JocI!I^v36XkDgXpX0|DATjIf7(8Qxw*KR)dmp(r^IFy@$v)xB{A%qATE3U&;QR zhI0&wfTmv98mdqd7>kaE39486%X?sCymRPo*huGLZ)CMkoZW`A0=`D357F7E)p@yW zNyAxyzWXBBhM#x$RlNeqMy3#~P1<@(BCJKCk>P2YM(fbk#55k;o3wJt9l2#ha3j&g zGzmjZTFsN$%o;Z`%Uf_XYnqIz<4CSk+*4BgF4Cvmj-UYuUT*#l}}N*2^G@ntlW)S z!?D5_(sUM)5R(->A*VejU4vm>l=`n5>r;>)))_fjcriSK4x%fpsQ}S1)1x>O)^rd< zVXX?}ICsmRs^PE0HzWi{+eZ2b@iwMw7--Y98EU!CxMPhKFCU#nr(>?wg+wKYw4Wdk zTph2{dc-@N8AI8~>zqR$z|~nu-y+gkNd1U+7SbNr))Z1MTx$wx6C!I0t%EC5V>t}F KVy delta 2580 zcmZ9OYitu#6vunEG1h@XRXAKkrNnF_G2E0ebVe9OvkgBWQ(X6MyRO^XZCwkDvBd`^ zA%qx}`44d;AT(+s4|QcEXyRitV6p@QlLWT-fJKNva7mpYON=q2r{HeCw7tLIJ@;@zBE0*e@*`JjK#XCt<|sF8{71H|CY6WZ)o#|O>IHHZ_8%gUbJz8 z?oSk4O7H(+)zJm&r5TpH4_ordl5MeAW?L+l9CVj)+KQPtQdUGekSJrdaf(?imeq#3 z9(EVgE)=*lT|vNAOmW0rntsNZi&bTMQa@nK8iK8y)mJl3ft*-49}OQm`UW0kC&vf@I6_P|!9 ziQ%l$bODjOuVYoLKF>%d++p~KFkGc6A5_hh3stREu9)Wxa}?fcR`1BVHw?NL-PNr2 z3(b)JQkg%*U^T1rLLWEiqexV<+9#Ln8H1jMy@u%u3TleUfoP4Uml3aFbwsM|GyL~3 zR>SJHoY$`g-3D7NlLJd@wR&IJ0_ixFwh@t9reCnTRxdvxPMP71OWG=9{Lf6>s9mP2 z)8he=N{{R^kpOq4#SCItbyqOCL6T%illu6 zrA>^I#yqM+q_J52D02=>6}H^}arp$pjhaq@n%oqIw~5s$>1g4s>E=mvH@!;(um@Q6 zi*wL$wxcw_bR2>O;9mC<~ z`*ltl&ZkH;GmXRA(m{4aTbR1g+oIJ@In6g7oWAZEjJ2>@C8<6z=n!nJ9qKXZYssAH za~C7l%J=riY0#4xZq-x-3bAs@Sw{_L1db3>JJyA?Dw0)349AA<5IaWYGkM#f<8nGP z=1$M%!e~g-2&`>dU6i{~Z#eT&+NS9uqHRp`(c4z+xFgj@4D+hw|J@kZu!VKnoph`X zFQZ;W!kS7D3p3V)voH|Oqh4GOYgHl#dQkpIr9Mip!4Y|vPGB&?G=b5Grh~9<(rFpl z{m*X7%%G8e=hi|Z52794QWKop-lQH3ZYxg9oQ3SpmDC4kXCeKBXlEf^#$ab5^?|wy cDG$!BLOO(KSD`hlJ-IP`usa{dqOG(415OaDbN~PV diff --git a/build/modules/ftpCommandElaborate.o b/build/modules/ftpCommandElaborate.o index fe2b698f09fc9ec9d43a583e59556988bd02bc26..eb2c009f4b8592df88cbea54573afa3634018e62 100644 GIT binary patch delta 13694 zcmZ{r3wTu3wSdnKfh0UahKGw)pg2^n+-Nc2b+onOwbZH906xb;g=&G( z7Df23#sxicRWzyb5n3e8m6srlfCxfhkXLxgKm@`|MjjG^&~MMIo!NKQ@O?Q0>tAc_ z_1Jr#eTI`mmAS7}=DyN9XJh-S;x9VTu}=B)Kv6;U6&>$YYAJ2()T?@3r@E`F=ia(I zU-hh>e#eCFDom{&9jKPl?T=omMpr-mXfjXr^psD58c-b_Ti-$fjTnEag6ikSC-SPF znB1aeM|ac{kNwUaSMr2gGJ32#ZtySea;u|%d94L4s_0f-JavAX>fJN)a@^55j^hLi zi>BlZY}cyA$egx$`A#>-ak^=_<2Yeu^I_E;z3#cHGX-9MPYtQAef_;0HJW0x`v+<} zTKbOTJelJ-9USEpch1PWLEr|a|@}jFUg0;Gqj^iBHR*}<8ceoj;v1*l@ zsX))G|GykrK8EFg%3!CMV-49k06 zpOKfae0tg^F`a%xh6b6wqpA8ht+Rr4*8eP{a~tH40(nE7+klIzME`3pQj ziyg<&l``@fl==wp1ExBYmX70;ak$mwpAYyYQ$1F9%l1|Z&j%dWDI1AB;`0=n5BL&O zR=JJ$1F673lQCs0XG$yp>~Tr90)C4=NopbBADf{sQeYv3UTuahv*dc7nSLE@MvfF&2sjS1 zk@T~yK1|c@U9wb96XWw%N-c!Y(-ytaqAM)9{;RQS&s&tP=g%#9UkWb*e4eT4`*`lr zixgV~p+%Ohon4)Dv`XN-hHY$&a#m*)%}D#eg?9Lp=&E225Dgj-)?D7Xy}b z&3e`=+2lTp$`%8DZBe^20ZJ?e9L`&{PT?lYwu02h5UOM<=i5%p%8sY6UU-g^_GWkX zF^YT)q1hI- zx6c!ne|>W>>*C7)NSo2+%Y5oV@-GARGKH4`&dSJ}#_gnw=P*a)5 zDX|hpaw^C>001hpDN+VebC@ey__?V6ty-h%uva8Ah0D0$>x1?omht<*bDd?lzmwFIB%gSN?cH2Zlet>bB( zz$T&dEbHuIxsKVsQ{PNgs{jWEes~q!N6A%y)0xUXR*>&Am^9y_VXJHFEuXs3?{FlW zh1_JFwEWmJ?Uc~3V?T` z6PDcGF7vMY;c8q*(KUc2&Cr=?`aV+=$#jn7LrScHz!J;Wo-`YT)jGD?nzq{CjMbTD ztiIP)sx<}Hf_j)r*8)Dm&!;*ndse(b@wI@*nCkl2br?#iwJ>RdevaV-rF}%$V9D>b z7SaKhn+lxgT#gC3ng8c3KXy&p>AlKv=!GwQsuP930OhBuF97>wHEny@2ha0*gJECx0l7CNYd{6bw*f+b3ubk6I_B88q#5~^X5@n@x&hRE>FZ>D z4J{a$@oc&^nJd1A<+|2-TQDQ$=_zk@XbS5iB{l#KVydm|ee*sFYy_NQQTxzTL6MCR z`qZK$tr5425vTKr`z(F?me`5n8~dy7q!Qpi#76}F7Q$)mWPbkFMD3MzQb2bldSgHS z4un@-2n%Sa!}d^FL0=yep^0{EH9TF|~!wFU4L_i>h>8z{L&Z>|knTVXx4cM8U0q z9r=5zJpR7VWcLb1w?dO`FF_|!nPq#2pkYdE1$;@bS;uik2-<_xHu%vSdLaFbBxpk+ zU9;^fp0Fmf^MVOcEDm@NRJ5m6jf~p+`=)xCFre`-0rFX`D!7w zOCKp5$JrosPV>Ka3i&k!8U2Go{tiWJT~$eCwXSMIiCVxZoL3*7z$WVvq;|NfD+P7{ z&f^G237s%Sb^tbV-JTP43YG2v^%#Ay!^M|bXTH$+DW!G*uICsw3c8v6I{|kxJuK*I z3hxBm$26B80!;inDYg@^j3;*wLHkqHPFEFDawp(w-nm0UCq}+qfb~pg2)dkty8z#8 zlc{rsphqaW3-GVpg{6Ydr?Oq3Cefl@E`G+WLFhQ7b^|`h^Xd}rfXVJ36xa>;0?(@} z1)WHd-L4u>rMm%>9K$G~Gm7H70rRv&$8jbKI)zfZU3HZFdjN-X4Oa=B5(@7Dtl=2U zEH)9&rq~|99lW6*6Sj9y)gD*XQF0I9K3rttFtslA}O5$<*II-X0bgw7O->;-ibP1x&VG4DvH zh0bp%z8BPkRJ(VGT0s6J;8fPQkvm}Gxs$?4z*o5nFOrW1Lrqchbw*_Lwl55`~cMDHVT4Mp}3!Ko}ADQGdp_X8I4=J>3jYbdoJ za1R%HhM*6VzYbI<>R0FDX+Ei~6gm?qRtI!qf4*;*AX})a4sZ}JjZ=bNPRTk@?@>dY ziye5|`Wcr;tLmRuDfl(u9Zc^Qw34D<1Kz+>XpEqDQ`y(9T0@DiLA_4(U%R-37ZLJu zG^02aH~?74ExB6Idnj@Mumxvvo1i6BdH}GPt2)K97QfQvup3HiRzDJ1_v zz?t0J<$_*A;e&w1e1fSJ^jV4>1RTQMO9{H3sx;-k74X6}Sx=$lLBJZGa(+SQlkX7V zLanSH#|521!9##EIisjD4C^Xghb3n^6(cr)idRM1}JKMa#R zo=cAlnqv7gLjE4-@`8|Gg@$5D^c4Mn{LjF93 zj{&~MzIq9oL$PD7dYh__K~wd9C3H;nMhf{Kx!O@7uOi=Zz+#SbnxIQ4cpUIDULzHP zuBPa52wlsoeVL$U2CftG4Lk#Dg}fgnj=Smrsc%5-CH%(4-MnL5&U=!nUSEoQ)l=i6Lqsg-^IDOtBNL8cbCu09)~VxFD?hQ1S%eKY3i>yv?{l z@}&UH|2+i+EvH}#Fv0ut?SjssXbM7?a-AO%^a#)GCxrYl-cg?s@~)Iff$B>2DHpHi zXy*!@Ybfw7U`wv@0YQ6GPKq*;5md!zXeS4+P{oDX6o=qihrBEPYn|E zdP;o@SjltvVL{&^|4G27n7$}z4uwxbpbdA&yj^3)J?AoN>{-W_G908AieH0LxkWn4pyu{SL5#yD&}Aaw_`{Fv9or zcbS^liYW12Hnw&DW~8fE7gFRbpn2Wy3PFca>Dg>XLj|p* z_}Oemj|e)EQfEQ^oeCP<&+2-P43(gK`W`M0aOL8 zX>f5Y&#vD5HdHoW-#NhJOb0SG@rNyw9>yDK|XBZ{UWh?f% zpp~Q=A#{P)>3%V~dA0JKurk#s;J2zwF69(y)bUJcbkV%DdAraVM)AgMJYxiXlTwY@ zne&pM734p!?|0$zfPdkbR|_3K#m)noS4ryy9Y$5>v!mznyIUsyN=lvwtmhTold0*& z9P)ji?L|n~mQ(QiY~-T^eUqZ!XJ_V%f{vxK?*S9M$Gt1Yy`K`_yXq2B7XZymwugm> zVHCKK&8s!PSC-8yasluV`@ccZiBx*QRdXqRA)DPZLZ_Tk7hH9O{1*ZH@t(X$=u}Yn zVzvUcf<`HJ5pcz2nLYNLped@l2)L4W3gCCxOy$cdc`+N?O-xO8;mm|`)c{W^%SEG5D)$0PfvWIAO1U_IH@!ak zzs4M=DZyf|)OK<|vAuwu{oz~6V{h{ zF^%W)0jWV)pYf`4l&gk$Nv&mWH8=7LeI|iQ&(}f$?%~tj{Q`IOf*P;p2|8Zjxn8t| z0#)rzZK2$z8{%T2RqiFU6BFomfh#?gt3XwHm}@yfetXaaTJA-1tzz6DaMCNyO=la| zS|;1^LaWkC>7m+t1uddkNdiHi6fADlZ*yAkPXI__fDu zz!8nF;B(RS0?+nJGfv{RlRpTpN-veCK+W!+Tq5vCUP?RJ>J_v}*CgD=s>xEJT)80DMt!Hy z{BFuE{9keUL;ns(#LT-+o<`)7?FhyQck7mx-1 z#h(T4>;*M8&si%49P&cdFym$xIzo7Tn%*|!6SI|-QRpY&2N7cXJ@nqDYRQ=U+p6aCfs~5eX{&>ZU>5oxfyp!r*u(v#8(cLTPtoo`;y~gZ z7DJ$;wjK^cR)sR?!N;CQwg zOulMRch?nF?`u+cMMjtWjBfcEH{@k>PW~&;e=?_hgp-k}%CmN5J-_QO3>p3Ep zO%+o+)HQv%Nz=LxuX#;6xlay#<}r8p6GPqm9;?3dv5Fzj{c70Iryd(r{hT|zZ`rTh zx|L(E*5doN-r+tR`bKnrG)Y9URB$pyiI^{6X2gs&39Z9W&KH z+W6kbs-`aV{>K?=0u_B&f*0~EeaCU0&2XI7j&iCg^dYFTH0i_Ns`V850MyoGdrY_f z>?SF#ahU4;(zBt@Gu?aT7hol^4mvr?bG(Y;i) zZt*qNp=(m?k<8TRJ4yNh(-U1&(vEET)1-yZbn9QjI<0%8bnZ@lIGb4BpXEz+<{Za4 zpnFvuW!m|=l+^TUl9|fDU?FeA^3PfR$5c1x8kYP0DZw-zrI=J0@HVCm*Qe-cruS*; ze}ZZMo+)|-M>m4yLvKpSpJ4geq|LXOuDdx!OPPi>RkM;h3s?tkP3hdt^SCmpvo6{0 zO}2-V?a5@TC^Q+=`Q*>p$)8&!+kD;DZJ)e4qi)93dot?IfBZlTwVQ%70NZkz=~;6f z$2oT~_4O%*W&nO+QJo({S5jmK;0B8pSoAc-X8^vLpK@JW)-!1O&L`hYz!gk&>`fiV z+0Fs3rP7(8;uM|<>LOLmgwa`7r0f{Y?y3Jec`VoVwIjy9U+8CYLEbFn#!jD0*cp&|flLl%%T#eT?a5 zO#``*&bh8Glare+As=)J`Fsk_0z7jG`UHh$0lwKbJ=QJOSW$}10&Kw>kakZi8c)h8 zJ_|5p(c3J#f_z^9u4bxdyro5(keUtHquqaI`z6l6%@qCuaFC!AnLd-GF9`Z6)7LZ& z#F=VgFKgWP?bDIkSsiQ1TU+`O^3R6APK)YQY%<{T7OY3HGxLHa|Cy!#5!K8FJi^qh z0=+@#uj3S*4cMjQ|Lxi;J8KYin^LFKhnctmfX(dJSzPXM(?qxU1L}2 zt;%u!%ZHwqkoUQSyqe`E_N5&A$dsJcf9VT+Y4x=$3V)jR!LFRjOUO@It{;r+VquAMg@DlQIl$fiJ7P@_d3g!XM?~=A)kJw1Tc@XGu zb&8q{RO=rc$GKX_*K%gM3;FkaF};OK=Y#qK#pi*Vrd!-7G>@@`o#dMjxL;6X=Ty>8 zGYZcK)gjq-Pqz0b+d;{;TDLf!4=dWNUL0m^t|GMna0DM#H0^8A_sG8ha0*is^$mIp zcO2&vs#pLx%j#=imG)B20>D1qQo5#ZU+(*JiY@>g$W)JO&lgc*0bsvfS7Yv;FIZ++2}MEIYQh5urbg?aWNc>Eo|_xXkKn=kOxMzJfqoeZ=9lZ|{WN zE&07xZtrHf@w}Etyr29F0m}t7nR%Ql76SfJP_sH-r<#R;69hGV-%s}aO3-sW?h;BY z1hr1<1hV-cE34%vmfWuG+gNU5Ddod_Z;C7e6{OH2z}JM%eXKJssWVCIs1+1n1Zr(k z64#PI2R=F*%P(@Tt68o+)El9x*fB!?udF|ws{Rc)+3ID_;5rKb8v;ix+S{_}@Bv+q z6}05Qa^u?+9_uGm^EIfhRPi<7?Luc4>-0(L+@I7LDRlC)QX?=UviN4k`1w2T)k4V4YHi1I?V-I|dr)jKV3|ej zY`jh3#ekD6n|AC=lYQIYn97)pJxFQ^;Ao55l@LkNZI_@&sbUGJGZb9{DvJu1f*<)N z&BVK$)2mGP!hZ>Rg2$Rc!KDz`!&Jv>SAMa+dEi~ku7Qb` z+}_O=Qbfn4O>nQ@ShaB-%T2uJ*oR^&T?VQ*g_i;TR_JueN!c2Z)OlL#sF$c}8K~Ei zlK)Be`uGyPrYCjgXdQp94uHLS(DKTE33-3=F9-E^-TH6SheGaKZuPCTuwdM8t2Ip8$D{nj(`kTv2uDp&!5vljimMO*8GGW$8elHX*> z2U_wv3atRugCZ+*q`F;7XI5O*8npQQ}*uIAYO37H!@q9m}JZ{HH88wK0x8 z>}KiPSFQn6xvJ!PbHA=Lt-mhg?@YdK@WX;1<-cf7n^yHzeW@S@_zS*)=NU^YQ7{I$ zMAxt5Bo86_%b4y!p%`E%rn;zXx{4w(zzaP5a6v069&=S&@~sB!$N~OE=;TxBYEVz&wf9R2uJe;FT!P-NOc!)G1=j=qf`eZ!=pG8K2OQHp6<8jZs0nN`Mb-m;)FMUwf{v#6dI-G2)89|f z=3I6U2>CJgWT22=Po*0GN3pf%1x--Z22d3=c7uz(IF$>9&OVB50Q7N|8U($C)J9Md z!i}z~r@%%R^Em2jxQB_FsAeOmQS^_EE*5e@JS23MQ(_|o2AE|jXbu<3pM;!P|4ktu zMZrz3`hY^400X?_77CqB6xjqA=egJ-Xd}fp0q*3!rvyDhz6QXZoLe8yfQffHl{SF7 zm&zMlY{R*|P3U|};Re77{CxV?f+i@|0Jws;{z-yPCAAswShG|WMFjnj{F?#iarG`1 zbR1P|cGV85*$mi$qs!z^D`@?iLqcWB-3IboNnj3*f6< zG0zFwl0sWR5l!0S;&IO5459Nl#kT-fw@Uf2RL}a& z!N>V9Flr(r9!@%)HYY;lYg75UZRR^fG4@G#tO}oRI?3m zCVL(hw1}eHTy-ZUwgD1fAY(%3=TxxWRmBwC4)_FDm*Om%=$@g__I|jCXXiRWr&4@7 z;O}^T`wBXpd~v{me5v@Ipbb;QaF=3QFt%)j+vB z`>7fV?gT96MffbI+N8KWg?0knu`9~bp06|<|0A=%*k0L zm#cbEY!~2P*{i-n=P6RV0l(%2J3!Df z^6v)Kp8~sGT*nqB2%W!E&2Cq1py+PE7M!!ryo`(|Z78uD@L`VPXM(n(f<1uMT(r*! zT1>$`fXg_>R|UO=LVH~GAVu~7w&4k$A#^5Fd=Fp=FTE9l7L#u;;8?!U>=twomF@-n zjtlI(pk-9G7jQCfLs#(9H&HiGcrV~W?$ce+1r*y080M(^2pS>P2-uaYWwfA=lfMzL zryj_098b_UsG8Q?Msn;fZf^uL4wv%d>>#7uE`e!{hWOJ0khe25;RPu`$0WR z<@;T%;u&8kbQV&0zpm;p_PaQhH``-ErzNQau6myQ2VB*UDh>eV@+_Bd4-@HrsyP7o zKF@Nwpj#<=0B{ax@;O1@rNjXUG_Z8MpgFu=!a}}-tMOAIf0Kd-0qZ!cF+mql=pd*r zH0hv=IUKFxRb^u7O!0$&Z}GS&=v49@0@ad=4!QVGj`!z6ryo@vO6TfPLEoY9A;5WD zlP?KcOtC|Ni#WP>1@)6U47iq8#AkxuO8&#?nprOBW~w+0s+2|^cG1kVxxY5CAEM}C zSM8_7Vf~mY_lT?BrCvw+sc{rK0yu$vuHl(9yGmc#61rtel#3BXxAYrhqJyOTcwn9T>- zp@NR3iUeRG_kCT^LaIr)>Nbid();Heq0^cY2|$;x4hccKP{C2a8h#X%$5}L78wG7cp`(CzajpJZ(0Ym-1^iT-avbM*K}S>kC}2z8xh4tPmVCzmGkEWvE$By7 zddyWmsyYVfan8@Mj=p`@x3p&|d<<|WuYyi&$;5Rl#f|~K%bwpS=;x%41HQq&4H5L$ zxG4#6g>`jE6>OYL0_T7alk_yPd-GcQ83j)OX7TF!jiBu*bi!35C~_ig{~e(-gyJUvr*k#V6!a+hPP(cCm7WAN z?=M{xI%QOK60nwQrXznE|LZAy(p5t#b`r2m3mwN9AarU;odT@q{qaRXqvSsYIFCJi zU(iabI0b0l$eJr?8P%Lh`_>?6Jw;CeM)^8&M$m^TaSE`2D=MF7&(vE36`W2-WaidH zT}#2!>4+ZUzJ^9AbQ}`k?)KZm!Q+A^h|p69|Vn3 z)frd4NZ~Vp1w11+^UFQP!;=&{18Clz>n~^-sk79`8{l_?X~2`adtA87Qt;G%g4^=Y9~MxhI!YH5U6V;sPdxTP%7u4A7{gnboy^zKeIn`qXp6*37Hg7&p6S&Na+r}3Q zT<`fZ6ks2|nl=hN(<{wTpe}gj8Or_f%F~r!Z!@!3>xH!uvk~1R@L4aWaUsurrNC=F z)kFc#dA^t!-pGrjAxR1cltEX&F_LapAb$x@(Jd;iF? z9M0ia_0kR}v=K86R||ZzSCFkhed6`Xwv0R>v}(Ojwq@kc0?+Uw*{K9;Efe+ELaW~M z<*0r?mTWe^1(-jmB5< zNo$M1rCwCq8tZM$RW4TZxv0Zc|G96>^$IRa#u&WJ8me4q)q5e0zv3g`aDjJvk;|+U z)Cyed`I_kz)E6~Vr3+QkMn{Wn~n5u0w4538k_6Qc7e%@v`{eG zTx>h@?T0aLF6_O9-24&4qe5V+>?5HRQWM+G+b7Uq`(rklB&nIiPhda9)YRa1}pLk;%)tyHmk(5q~vO4O(N zPjI{ityE#^$9H_HQ2om*@~IN_lvk-gHhBN=sgjJ|!@T`Ib$iAg)!wzO)$QtUUS(@l zlKX6Rs-EukBCS=iTIKE2(l1|3Nl$wIJXNed^D6UHNye79y;w`t##@l53e|RRU!E#a pjb2f{Dp3o(%6wIld-F%Be(k(SzADZg(NbUL9p_(Oq?Nkz{{Wna_f`M^ diff --git a/build/modules/ftpData.o b/build/modules/ftpData.o index d351da7a41767230eeae20ad204d2e9a29473790..1996bf7005dd8952b7a74b180d0001ad07a9eee1 100644 GIT binary patch delta 6465 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 delta 6413 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 diff --git a/build/modules/logFunctions.o b/build/modules/logFunctions.o index 28f97b6c14a824647bbd839907aa90de40615131..a256336450b33a0dbf8a318b7bc4f7d5b1a03e68 100644 GIT binary patch delta 1214 zcmZ9KO=uHA7>0LJ=wBqsW|RFoiDCr7^dMtU&>S>IQQ3l$f+vMyDW&!xX^KTl5ibP~ zMNE7_@DH1VPz8lp5Q|WoLtE`Z+M5WrHxWd!g&qQ;g8BCH?PZwvdG?*1nVrs-v*olZ z*Se3kJLYon%Agq=Dw?6;t7h!<`GT1pZ0~GAIe2RJQ*a@m_qAC6AGmYJ?FLoLH)L($nW!fLgb^U*`)5^gKf0o&KJU2h8;DkhJ2Lt zDm!05H8Dr|6%Li)z%U&sd9+o?@q)n|$X6ltX%*)02W;K*llZ8TuX4FS+5G zaJEo!NPp#9s0ccVx?|J~HXYJ`*jW_LckGFg-r{sa&<1*A0PU;a)U zkrQe$^7e8|TF@}>@sP+D*gr1vQP^?P9@8m7bI8X@uXE=kK_8$LH!6W@ob)_9E5b=( zElzrv=`TUgLAj(pLc1mq3e5JnKb1OwY}a3P30eJ4ji8}#s%eZT&ZwuTCl0HJXe4rh pr64jpTojUN^&aENoO*+~WKN~fNaoZkvO9Af-`wV1%|LbS{s)xOl->XU delta 1227 zcmZ9LO=uHg5Qg{LKy6HE{xg1!q5%&L9zKhTq@YPFq{M@!php9th8jUrY)jD|Y6TVX z()g-};!mpw+oE8alSPmsRq3%F)Pt=#2v$U_B4|A*nAywhWtr!BXTIHGcPufH7;9A% zmH58K>bXX@YnwSyI#n=(y(M#~Fwj}ZpYG3|DV;3z4D_49^pUK=1y8!V;CXKApv(Gy z`Rg}pqh(oc%d#q%Y$p4x3vL)lAe2Gd@X znYHWkvdFA6zb1HsPrNJmC&YZDA8^-8VSCZ-BVFU(6=C0D)JJ-p*Rg?9&N{ZE;v?P1 zJzInwLCr^*JACdgVZU?Ne!=f?eNgZkI{cKm$gM zd?YeesDM$o(H0>6lr!%|=05TP(p^k{3TvYrFzN;71Eh!8#d(sm!y?uKq!*bU5H^ii z(5M^e4w4?{2}2^YjL{(JCEjOQ*gjN(MqNiONcuBp7DVO^{2|iIOjm^ch>j3tzA*hQ z><_LR_#1KF%P@C-C5O8(8KR7jZL8?|!%w(d@Q0jF37&%rlitJjs<1oI7AC#Od%Gp< zCFH|KHJ}_OJ;Rwrk!iwwnDkM$--K<)TA0)v+!151t7?1Xt5PY%H~m$8i0fzSJXZCH zdW>RAmzqVTWv`mTYD?07?Ln+5f>g9sy+tvaRIe}{O{$$(jV9Fx#5X71zasTbOks_- F{sTp$oM!+4 diff --git a/build/modules/openSsl.o b/build/modules/openSsl.o index d980f4ec92391f31fcee4ef8105c771a4fb5825c..dd90136f74d0921cc8ffc103abe855b80194eb51 100644 GIT binary patch delta 2387 zcmZ9Oe`wTo7{~WnxgQGFwdnD&GOxh=wmM6wEur+cq0$tlk zLXf<@1+zbj^AFLC+&LmsXNpnJamJO{@Y-mmA!`*}W} zFMQwLyRhe=-<&B07CkL?$KbA)?C`*#9oV_s4sY1pYo~qpood8id~y21%DH7GjnW$1 zyxP?L|6^p^Xwvtj8AsMf-CG)Ja(C@fx3sSIUvhU%=v8|9uA0!N^nED$tl5o$IZFML)0fcb3$I3rc?h1-~^9qwFU$iXZ%z&r9EXWd-hx zS$G51Y)39YW(9TzEFX|w{VMVnN&)LM*4J9SrRZMS;iS?}!V@H3Bb)q4(d)Qp25Y5hg^uU%E#XWjGh-`V6qSMGmh+h}46N)~Ip$PHgvazC~ zK@=mz8Ofbf^jlOS)=a=eiDx7xEW2^1?t~L1{!->zuV^3gQQ}FN>p4Ylq7WtiT)e%a z=mN@7;)dqh-JVdi9rID*uf_5Eik^no5)X^|v7(oev&8k%_pG9$7_($HS-^)kJ?lRNOV68B5)N=3IJ+iIPLrrKN`isodZjY|Ix#a80O;$xelCsAo7 z&dEe?D7qfTAwD6wlZtMF;}Ab2Za-9XBk~S$Ome?abP@%J_=eofD~cvicBuQPsJ9et z5x4&;{XNl}WV`NGe}*?kd_{V#QgjD$G2(y3=UPR#U@S(wT{`tD>Yx-O^D@4Qb(sh} zapDsa;oe-=LkihA@kOa~T-BM!P@MQ4c~fQ-{RYK2@oG8W?-jj)N}PC=RKBU`2ABl# zIhn3eHsrdx1SdiKpyWKF=vm|w#E|=zR`eJO3F1z1)uZS$C?|;fg$^is2lENyaj872 z=nT9`;t%A!4l5c%E=hb;DxXqxAI6fzdt}~OMW;|o63+_#QPC)>N#cOGTIxRK`{6P? zDKhUOkh0t(+wM^@w=tA@(afTfB6AMErMk>4oOBmo6}N5juDCU?qmZ`dD$40D^T%{^ zTVK7In$EAy7&C(66EkK7^6N&;)2OcNGUEuer_Fxk+cV}96x%cA465xJvlZTsjG02d QBV#V1*pV?!sCM}N1Mn0eHUIzs delta 2401 zcmZ9Oe`wTo7{~XSuDKP}S?%!|WLuKk?S6djd$-+*?siUL<0NzklGdWS<**!XZEDc3 zZHE~~WZmA#{t;tDDjLdllqjO!{-{mJx(I3o2dv~wvP51BW8XDNq`~2=*c2CFV zE{k9ItNf?6b9b8+m{@76E-xwj|HW`t5pJzqYx?0dP_pB$lAbIbWz}V+_xz%g(53Vh zqHj_95V8%{JcmL9IrmkT;HZjOC@%@`D!mR>jW+qXWPPIOf;c><^w%m%!j#gJ$TV70 zg>;H>FT_#sEBCYr4?xC9@b$dM&>q9-dK=KViaao!>>>r|1rGIHvS* zm?q+-i%VTUR`e#ECTqHpZX*6rHgiSATtc>qxG1g`6srGmr{VDvzb-Mi zRLs3-_Y+^0TdR@No$DJ6`iVc1?h!>7VZu*bBQ&XK2t_~fw{l-;MMq%*#M@-cI~Dx^ zPJp;ayzW)B2k8LuW3sUcMQe}^5c?$ehN5Rs2v{?K`2g_=iSf&B+^JKj4-%h}xz;JV z9;qPlu*|hp(I1fs5+4_D{fb^gE=c@9Rp}|+tEd;VLE_KE@nJ;|!()llqMlUrJlZYs zZ{q5#qJ0>&WY*$sYk5?<|EglTQMAN=$kgR>x;wcJ6C&=D+*(C9!UyUFOc|g?Lir$g^|D*J`WQrxi-K~BNPnh^~>9t(Z&1er3-w>ax745)an7B(i zbt(EVCcwb5-xnsyQ6NkjrCYAdX za?QjWgl<>#I%b=R`=#=Tq9@>KA$~`;F|KF=?JdLyr1B|6hcMVe{G!bJg`$Tr(L$UT z`m>_7D7FwkB(AF6Q~p1khl!GT6CAa?Mz+04#au-?`mD*L5G8XIGto|yM}4f5r^W3m z`K-7#FC!DPW*WIzr};krS8PkUxtLF_P8hQv*)Px# diff --git a/build/modules/signals.o b/build/modules/signals.o index a5f5a547c83b81620b630d645497399196ed9daf..0f724fcbc9a132128c7d6f96bf3b581d8f348527 100644 GIT binary patch delta 2064 zcmZA1ZD>!4JM5Y7B@7qMf2vp;8!Q8{!&-ZHTaCW7scagXLTXCtoi2|9j4T z&Ux-7H+wJj9*vv9d}6A)a_|0B-++Zu_3?UV|G{_ObcXjGboTWPIl~=2o1Ma!HMdOR zaP3x8wR^a4VCdD=yN3!7mK-vL_PW_h(*c{wem2kg@AqQ)VlB2T>jlfQCgh&6Hbxla zIQK~Mnp(LXc_w~p%5k^Sb`+VotD+qDDqRAPm%7(WdO+zd>Fqt0_sCu!sXU9cmv~yL zjw#I`=Oun$(lbhHG2bV`dH~+cp9jCP9~aD`j6xb0P)YFzbk!)$pGTz)ka*F8@*CW#^kr-b5?_;A z_uF)9r;!N~-xfWlYWtB75;ut!lx{^aNc>Q~$p=d7;RzAUe;ertu}{91 zS1QZnxF>KCxd?Ggv_t7*%tVMk7yVG_Nth_{6FHx+l(wNcN*tDMb4nYKiaO>xvQfv> zU^42M%P2)1Qz+Q6=f-puctz5fU$HHI!z=?QMobsR6P>0W#YC%_4{l6WICaP@e+h$) janpqH#-!PU9~zV99(ZNajAGl$WYx`Bxw}h9tqA@LQ()+o delta 2089 zcmZ9MUu=_Q6vn@oxy8;ctV{5C+OF-_Kd#+?FH-{&m<8lddI79)$-pdb4GbB^&HYo1 zjxjJM#1OYVKte)B>V+&^kkuNaB)BaS$uuD}dSQ?N(+k9y$TWtHD-(OZn4I2x`JUf- z-shb6efv$f&9;pt%&~lOz6#4#sO;z%>h2kQ{<)69!iDN@OxQWp`(~Fj^m?zeyK8W3 zSGH%MrN8%Z*Z#o)XJ|)ji&Mz1Y>k4`sW13SZas8)FsL*8WmqUV)d%UM{o#`>iTH ztV+wWp0X?}yP_m8n&N~`PVg?N*r+PsK#qxTnUb7VG=m}&zbLDXf2SV$Mf=OZvR7XaI{o;!~pDRrEG&Kk;$# zK2p>{#!vjQ(3R4=yU!yS^%H*}Jtq{cM&3_+RlHjj{S*s+;$OwvuIM^=1GM2g>E>-k ze-zgVrGF{<7@7ivBY_&eCKZ=dvlR^8TvQ%OvHX()(qGex-j{ z(orAu@)4=|Le(UZ2@+4q$~P3wAC1w{{_7$TmLoB6$>WiVmlVNw53 zv>8od;xd`HS`yrOhmj5cpBqGDJg+J5XIKmqUy#;){}dR?$`zBgF1M=dz+VVWO0_MEzFLMd|i; zrQerM{!#h?WTV8Z<(90iD3!T8FpKdh@j9V96#Wx(QR4GL-&1rNi&5eqB=?M>N!T%B z_e+#hv>KV1V{TwH<`^IHF~@v@g_vVz3*Pu6WA+w2^(kYPkWS2)1U$(Rvll0mJ53nH yVztdEwss`{(oXSUc}IXWlt;W_D)lY{e7* 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°IC>b*$c5vQ=$qeZbJ2-D0+bMQ%-ubEI*yy~6OybxmSR5OjZMU*72E-1| zwp+1e5zj_-Lc|V|P+|vlM#K*440|>bIq(0fQ|#b;fZ3WI8=aki;@IeX2rQ0`&Mve{ z92=camUW69oKMkmC3bK=ySY>B;Czk;i4r?FU-U1D9S-?Mi5;BXVF)+U-HFv~ z#ql42o6Ss&$ob2MhzHYR-iZ@G!q8ANjtc&YAAYNOYdw+kHyj^jUI6@eyz7oJFGBvG z5Y=Xa`As(>=O4@BMD3)1f=vIs51+j+Xdu$Q(NSCZ8{YAIv}%_F3Vx%*9zJrsU+3r0 zi(~VjND}K8P};`7zx&2aJRB&M)nne!$Jg z>)^pDCcto^f>%@pht<_1_p7RDW9rUF^0iV+>+VMK|5WBtbyQEJZB@z9RNo(`7wL=O z;(}1#zLR9Ay2OSq(nHm!;KD}bThK9!N;T(0QW*WD7hAi(ri>^jMcS1ls$=&35*=^* z_$J-Z_=?nYhWtl$!@OtqYAN?Dm~PQe1a$_^&L<1!`weN)(I~$iE&H~klx(fzkL0t} z*|BxkqW|acQU`Gd>#s$tqx$u{^$3ytcPehhDzIk9uE}Xo!^UZJ?9S; z-<;no#KrNV8446%oZqX``|3Nb@i>tOz-pklcYZTp@kf%}HNP3ZL+xYy4g=QnIs z;X_Nra5MMy9=|_sdcxcLt(No_{7I{D-$L0fY5M7_A+CK(+QdX2zU zZjw}zEynA}{ z5G0pi$`2HGp58nSNq%92yo<^VOxS(K!txQp&2srn zsd_HfR4PWRtKnX{7t0O_NPk`r;lDd~R*^;oa{qr_1Y7=FAHjWG1jkAgdVHe57AY7h zrNHsP|BJ(*v7~HR82*-9y^bGzhr#dg?x-9FkHA@R7z7kXGc*nuk=N=v9R>kQ4uii# zsV)wK9C=MS407Z(N zi^CvCUhC>GSk~z<$nY`mroU)4`*RWT4U{75;jYI%hHFQohQbPVj`7x-zXU*LpJzd$|; z&N6(2OXOYpqn1$qfln#_Kt$#jf5Kz<0>nR%kKW~N`BBSNb@30>*gw$Q^P`q_KWiYO zs);>_w5mHA5PAH+br(dmjFP+HCQ#qvE{GU>RB{)*M7ayHU!b@PG6V}*{;nRR0Ne$a z{qH>nw9SYEV&E9>5pm1@;%3(4AYS1d(kMN zA)40gmMZ*VnPDD2w8@9c8I7QkyOYk z*A|3`rX>(rvg9Y2=;|k!z{^9)PcYHdPcVT^gsilNu*w%F9PgOFYZ2bNJ>8PJ^guMM60ZBC$H5oCc9tpHNPNNIZ~GPJ@4h(_o^j(_lh54Z_FIcN)A8PJ_vP zod$8K{6)xG11MjFthKmkd=U!$q`nBHl+)n45K&4w4Kh|vgTQfd8bsMR+{mL#8H&>& z!!_PDKlx6BfiO`@ISpb}7&34Z;^QrRP-58WG#Kx68jN>34VEL<8Dald9Y@@}s#S0! zjCVQ>#ygz`;|P*amAjpDbUF>jJDmmt&wGdeLmM>Uz#fPTsIS9&QerX^RV=J&rJ8Ap zh@Lix5}YT_m=fc?yZ@o}aT|~|ss9PAT!>u<#Q`eW`~MI^USiq$^o)^ z_;_r0G14Te2A7|M17!8`sYv?{kk!TcNQ28)u8%3u_o?mL@g`9U^nGfFV9@ueGM$fu zzE4#P27RAu){l2l0Q`Mwe>nmEK6S8Q@b{@U!Qk&xCkY0BpE_AE==;CJF|9 zpE^}A==;iU==;=J zfW(o#?F>QRyEQu)gTJrY$q@W~&4&!Z z-`9M^5d3}3E{5RmYd!%?!RgW7Ew>uexXrH}UUi790d~r{M~OGtYH(5X`l|?K=qOCV@WX;C#8s zC@P$JZVIq+5X?;t;j1rm=DBHJDL7wFIS4Xmo;wQ#gfq|01QyObHw#!e^W1D;;mmV$ zfQ2*9&BYy14uZL}_d{jOndjy`Q9)EYeJ~O;vmT3`f}nR$l>~Om*O2%!u93EL6F1s<-|dd zBh%%SgCK{d%ZY;^ho;M2i5oPufN*^|>!xC@ptGzaS+UPyoMlXa1hL`lKul{o)ZT_j^>vW2SJYJ zm*W?I;mmW&L6F1wV2_0RjDTpW|83 z7%m_-TJ8(<#L#d7L|e{VWatvmFSi^1)OF00_18dr2U-=sRDTgxac2aaGU2HdLxHGd z{{(S%CBHWg;N6sozN{1iL+efLl2@OwCA)%YEuvR z%;Qh%7?vdJ@fk{s_}L6JtM>F@UhZWUhMIvEb+mDiH_g;@?t^I35vqoaS7iVZ-g_&|o`*%r{%=d>L$Q3~rs9>VnN^kNJtP{> z^^5zk7u*6&W7saIafT{|Sa|sB6UC)19Dd6h`bAHQbgdPVvh6|B4YSMaq&b8iW59 z9?K2l>!#YG5$)A^i{PN}Ux*{ubr;6V8j1Afd~_3F5$wu;BFMVztZ1BpEfK>S{BcYy z|AKY;7aR)@ZxsiXWBpgg>%VfW|H^n9vvREe%6J>Ia;*Q#cpEca_CTZ;f;>!Sr>ygtaeI_ zfk+6eof2ap62fubOn6}oL_$~v9EyQR2rD8XhTVw68LcrubV&@GCx#tuC_XO6KqrJ7 zcxU0|G0+L&K0+tNKqrLzBH_~N82E&6Kj9N%;1j|v!Y9PQCxi!R*xPDj417XZ?VcC| zpAa6b4d+;NRp1c9H&$}sq3~)4loSFFh1UR51dfN{weY<$B3B{n?bw|qMj>Oj_lpX> zg~Je;U=+d!YsZ4b0;3Ra6%0lpJc4n#Y>Ws?bHzOOugNRX)dFFhfNoZJYx{eYg>&h4!xqCoX~jYPrfKu@Bw>KB@b!qxSS`1co0 zL}vB4Mxs#lCyhi#^)-z|<<;*XkX3c07g418{zjr`b+(D9qB_xtfa%q-oAy8$ zKL`vN3Kmg)EzDR(Wat){i!>5N4k)sdXJjA(Lk+`zib1ksk%PZMjsOmhfGvtV*OMr6 z2yif>qvWBe&OqiPZ0Ii8+>z`jC)SQ)Ym)hBmAMc(uHDakyvppNnl{OO67UJA#)ynS zHDh`2$H-h%KMpv9D$lqGR;J_NFZco@n}8<+8zK=Y&O0TZ#K#}q2 z*K`w3PUp*c9!BS)>FHa%$Ex)DBY%aHJx~ornoy<@I2fr#TYE|M*b+0+0vw6_A1qve z*2XA!HWG`LLF{?5R~OgoBYQ9;^M6G9ZugFl>&^Y|Y(g-~47M|j%*WaKA3^j*9tQ5s z9~C0QdlFUfc1TMjPkQ&o^+tDP6H&BQTL!J^jlg-vQ9Ps(Yq~;+^m0&cm8;15AoY$`V zGX49uOlaegfn^Bbr+ge3Vr$~SuMy!-$D|loj-#cSuoUtYvrWnMVWhY|{41%Kc5Fh= zmRuizORf*VCD#XF-}M0r-}M0r-}M0r-}M0r-}M0r-}M2B&K;W;cXfThj`6j6FreAg4u?hPb`Q8wCfOPKIgkPTT4uOR44uOR44uQmfc85UY ze0K=!6ZPEBT_A9k$^`-tgg3TvUW*F`<9$m?A09`Typj(DTp21~^}b2zbz?9cm0f|X z?D9~ylp&_0vMU)PPHKqbq(*k=L^gu1QaFa~S>Xl|vT-E7BwW^tS#Oxvp4J`rC`>yB zz8WQX9xyV937Nz^V6d$u<^expowX~ba_)K1G$d~;+qbeJF<(pqu89}J{oN^C|)p+JJQd5 ze3#5^k{Q#0c>=02OiTmjSlK-m(||b+ID;C`m=Sb|Ow0qO%mXIo0aMKb)iLw5D|yo; zn45wclb8q0Gx;eVFPJAihE`x6Fi*j_AQRJoc`D+b8YZRzbJ`3jx=`E9caRy=fH@mK zP%^)0qVZ(T;dUa&xk2n@jCsJ6dBDUxU@njg!8~9tghy3`s^^*mr@+?%^ME;+A*KQI zK!om0e&ijORnveu9^IP6G+<8WtHCs2&PB_Uw|JLl)ihxCKrLiq8ZaAygC?c{vzOG4 zX~1j&j+mGR%nQ)i80nY>%thy6m!y-u@3Lwdu=2k{^KSRL)s&_ID{~sY_h1^Z>OaKB zmL{eFtM?d|s$m+i`l5oR=9Avy8ohBOrh)QW?L0iLF%6XG8SfkRxu!=iBJGghn(_pG zA6LOk9s2~F7}nu^RiihA=ONMf4=-cu4el@`>Pye=?tYQN#e4#d;04f4IgI3wtNaDf z(%$mezqwp$djzj{M6|cZ|MJ*B;tuFM|HobW{(Ux(P5O9``T%dzr<~n*4<-o%4v2{W zy;7P8fc2O95CwjR!BmC$3K=s{^K8s|NQtzsoq4P z#-;cyTkq}3>6z)r_aVxJX*)Xp=3Yc$!u=p~PICzd%~idDQK?~G-lv3PRDo4c=l*{w zJZP~B3a$Yx`PN}Ygn4Cdt(sS2SoZ`E)<$7cc-7lntM_!D?Tt|37wYO8s&NHM@i$as zDMMNDFvJvN*5FDb3j##XV%nfEg8arY#h5mZ@V0>Eo!bJI^R|Ez0^Twz@DxM{c&nU) z1JrR0c+29w%^fl;+fV6_ol*<41Hf-he5CWZ)Z9bJtEmUanD8qwRvvKbef z&2`x(Fsil*tTv)+;SiUCfF*h>+kt>3dM9?_Q@aF4J!sL>Xb`1gPj(56-i^beXo=nf zEQ*$Bmt6v*YL`G4l9uTG$ka#?jMR5K-Q;w*?NzYbUUg%|q1b&kg;3WOhl5K_L7GxA zl8-{tQlT~v#FHooKe;ZO2Ud)N_g!^M#nE_;7bC~u`l4dxSU!B0cW*ac0${WAUd5P3 zIH0}K2Yc*&hDTEXKb#<%S;)ZkE&F3Lk(Pb1nMluGkEdVu_`XEJ>|1?^%Cb|Mi9*?B z&4@IA4x&nvLH1y5@?eNNUW_;QGyd2Md+Oc)cg$ozMNr*?uukS3-ncrwNwhUt*4AW2 zTf^RdRh@eWR(0+jSS5Q0!o@FMi&(<4VPHHz7YiR~YvSETvsjWn{NfAt!zS>t_*=I@ zy#Q@Z{2hkS*2Ld^G)w_XExVy!SNjFV-}nZGAgzgSyMPUa--12?(wg|kILXqQ_%1;4 z@QZ(qP3c)$6W=43b|Hci??szLS`+{FM73Yw>U!N71R5<-r%y7VqQE1ZRTRnY48fu$ z2jGFhDvIO~hReLY^?D6&D^b1bdP6BDs(GhDR!mg$PJ^tNsJ@*uVEI&hQl#3|Kso`OW4E}r4$@^hABW-~T`d@jgLJcC2oBQw3x?nzeXw8%4$^Ic zuaA;T>60V@#XXe`E;7 zf&BqPC=TrH452u%cQAzDz~0Faf&=?Qh7cUsA2Ixoe48?)7M=%rzjv5Y795|MA2m}XCL@)#gPK96y4xB2%E))k&ToOE48?(S zl$?O#zV_qSz`|T+Sp;Rws#r6(L-cZ+h>1#D>CuL zsJ6>)t+oA{(Z}pCSld#=pVJX#xwd~x6fckv8PyKJZ(1A%YX{=Eh>U6n;kY;q)($>8 zgip(6t9N>%E>V_ihb%!;Sp1M5`b9c}C58NG zJV#mlkUths#1Hu{I}_%|;7K9khkTcf3G-bxCd{937GDj-5BV+|6Xv^YOqd_Puv7ey zpMc1=i|XI@9&1wKhy2MeLwLaAhdl3u&f_}KL=RE5Ba&c1Il4AfA$wJ#Nvniyjhh*-KNi_{CV8P;xL$>KdzFfPKh7#3va`I z(TI+mzu+`q{E%M+EaHcJm%R$}UG^%>ciF2j-(|1D{H1tX5%EL5%U*@~%W*?R{E+9Z z3YEiPzRO;P`73dQhSo#;kXL&Z)-m%QH8|5+sK>p?tGx>A zA%4hTJ1GS5Lp{U~`QPCEXG}{y#1Hu!riX|QTG&z#@k8E2(e*9$5I^KsU`)N(QV;P% zekHnx#Sd7tvBO~g#)as>;a;v;myHYaT{bSvciFfw&##Cgb;x(wxG;Y^nj%VvJnt?h zN{4)xjSKT#HZII}*|;!&FRpe%J(Ldl(#D0-DQe?F>6C|%tvyx`sYCt|443voJ(Ldl zN0FFYsE5)azX6FQg?cC*@*9y@UZ{uCA^$iMs|)o|I^>@~;(^b9uM@cZ)4fgkk} zerAsEYIJZlQ4f|-^wog_#iee~@x2vkq@2JSUjY9zKy5yFtK0M^mEiy^oQP;!61&0l zCensTrn2HaZsR@PwtjlfJ-J1!F}X)X8<6=aG-|4{_<&12x2jxfw?Jy-kM3uw9Ecj# z^Su6I=qag`8V~7%7*{IGdbjZdw4jt;;Wn;7CGHX(!&xu3_FSV399=SSGYnj!WA@-+ zcl^S<7oGMAt~k%8SE^2fW*mQ7$K`&f<+;v1KjL`Xm(8=Mori3TZn2hr7|6=%qS^SN{*(cM}Jo4Sij88s?3;1vkzQbOX;!H z^#0EZUF;XSMHQML6_t_`sY%O8cd09)$NVy@RGD@uQ%X*zo;^!tIF2I7QSO1&s=zcU zP)g1uYWO8?(V2Yy;Toy%KL0kIm?i3gO*>SMK=CQJ2j&XxOy*A!#IDgrr%qQjjBeb8 zhvgT7>V=w_M#0r)QB?l^OY)6ShOBUo2R!WX;JP7q2 zwr_Q#HGX5$i-%Fe1sF!PT>9jURK&h!{EHo2QyNOO{!o(oy7~1r!9Xdg>Z{wgzCJ4R zVbpsPa#v`)5_li_K>Qf^U;JvWMSTxS7I`F1lzE~;{S3x5Ugv!?Sa;mhaalJYk5(mC zwyAkT>-fqh>c`W|4KllYKC2&lvU2`Fao4PV-=U5h7O`sU-B~UD%g~26!d#%ZcUJ!$ zNZtfHf#L(R`+tMVI^^v4v-6|Fw9m@atNjxMVgp z?fhA$Gm+^8G~*#LeCcdzIyWKLvQqWPGGzJ!jd}7P+?bzcQByprNta!xay^J#?3MbQ zOe#xfQ`22ZF;&X+HZl!FeXrr2H&9$Yn+7Z=qW(N9?vzISIE#p>KvdTqRN%kD6bJ^- z>rK@6N0jb^j5oXLo6BUs(~G%Mr}sgp2aE5nb*0z2M6megT35Qg54t^Ad~vO-`n^9) z28&;-j3BO=lprCaoOr*w-(O4%jrTxxpjXSurNO81DDox$Rz$TdB> z?@c-ax%ehcK(7UhKdp7CDO}N||9cbBEM()mbO!EHu())cOFdV0&4#-%(EH0!y|)M( z&gv^)xQ@qukVN!?ddB|&#OePeZ1`V4a1B>qxKL|g8Gpor@J~K%;Um`1H?S>zxf;e_ zuDl)l`)UU415x@=1zb`y0GGZ~0sCqOBz!dk626)N3IEd-68@(vB>YcTNOY0eAjCf6js!;lEHbxLwr@*K}1g;4^rqngL(Od^H0SzM26E|8o`+|HbF5-~1;v z1FlkibOQ9%47gx?by_^^XKIGqM9uK}Ful$dH3PCLH3LIYGcXi21NtlSCUS|Ip{!HQ zfFqS4pTl)}a{w$ZZUTpwGrBVb`D`%x%;Dt>CZ9RHoH2G7EC*xI6sW&^B zdXt&@c&z*_s1y_8*2)lTzVdfpz|m#ivj^(_CYXfJOybpgHNVYOp$JTm-3NJ3`? zRp>nZy}tNzcQw*a_9aS!8ILT#8EKyxj}-4k8pODw#5sCibi1}NsG{dZcL)X<9xc=P zILPp5wZ0JRNe-VEZI%;Y!=w8P1{)qdSTNY|Xq#ZT-$hRn3^F`=vS5(m(NhG243AC} z3^F`=s$h`e(Mf`zOOs2{$&vsY9-Sf>YQ86KS}7-V>KwqTIq6;A@Y#NqQQHt`7#pI7-MdWgg4Rqkd8HoWqChG4@he_{wS zJk|;rGA>35P~ugu@HtT8RofVX60drnAt>>xKQaU*UiHC3C|Wp(Ue$I!3{Jdi2Sae; zRXZ7i6R-M^Avp1>j~K!UuWA=VP~uge09Jw$kMEWn4oW=!m0(cf@vjAg5|8g;>~avj zxEdAU#N(Fq5jgR9L@+qG!Jx$BNx`7R<0-+Q#N#!BL5as5!Jx$B zIadbU%K>J%{L{)7q2`e?3WW z3ur4hj6PLw2x&iVIOiAo-hgANy}Sbj?bw6A`^-q(YqS_g>uJ)oLpCfvQy;Hu%Qn0< zUB6b-(%xBT=>;vl;hMAb1A_YKkmsJM*KYV?jy^=!?%UAq9DPJUZ%TM)oTon;z8Ig1 zX|A_*j-K^yK2v{q!x!`QyR`q;*3}19bsh0Ni$)&mllM?AS2We6t)?IE`cV6dV|yQJmg!G!uWxXX$$F$ z)=twxjR-huXYbj|=&}3HzPrEObI-Z=-Fwg1?y42hy(PE|)um|PHk==)z89Uk9si)z zdFm>|#qodTElzM0>GkbcOlyCML2As$!sxgPJfYNE(e531PN~Ld&5PKEDwm$!i6@hs z^_w>pI9s3I>^!}p*xCB<$`wxZ!AeXVM?0%9NCW@G@zGzuf?r9Y_&&Use)kVdj9z^g zgGe8|i!-7Vev3H)RZF>bXxSa&pK?3JK|J(P1;dG5bCI?9xYWuhgf|ol=BaZ z4%TCGTryNgd+Kq5vI~u~@G=F0A8KjvPiP^8DB%c(!sVqpj*dsJYYJDASLSacj-{(0 z2})?g5zMpSNY@zmftlR6&ftd@>OX>x>ZQO@w5D&DX{ud(asc4TE7nSUf|ee|29-wY z7-p**lyeO8)R*b~W9Zz~>{R44Cqp$29z)AMxKLk}L|r6=-R^7>l+)}6zDEYURNxZI zZ9q#^(uM|f@EeKW>3M9Y3n3Uz21aQz`MuZ^$G47L`%Iw;Ztb+CWha(&H2-Ej=}+c z*g?55%(lJ3ftSDHQ-QD0;TT%#RqBkPV|!jgrSeC~8m|kvM1f|sR4qNwjE-#v;;Iy_ zT~ySJ4o^q}=@m#jo_*{m~EL2$n zKS&iVXgyFoPoGt0D}Xm&aFxwnj{7Lqf@Qw3SxL%i#W`w#idr$-elATHQX?(kC=6Uk z1@*LI-gMKiuU+67TWNV4hJ0grV5p)Em#BjjYeUOkAalxpkwUY0oge(LmIm9jZw8G8r}lK>t8-GVLBkV^vhQcnk3s(>zc;B)E_<#(br-Aw7Td!nvM z!YSI_i4WUm8n#abpFxA2XsOlY>%wgH3FUU7r7qA0J~~5(`DhV!cA9k|2r?WF#VVM8NMlSRkjw3%OT8i zp9-}=v*ns?bXj-@cZ|RfbHs)>!7{xkax;2cqqaV!+2_=A5-odFl+6jU$rSz=Ej3%S zh|9t&xHAdS3170 zVIB=|bArt{nE9Qh}M@5uMh@G&o;$a#+5nM zsPGJ?s5iA?tr)J9tdHK~5YrYG7$guA<}XOV$7%&BcXO2?jyXRz<~LV!_@GCRn2`22s~_6}>T|1{F;+ zme`Wm6-$Iz!4ykuF~;u_)S$6o)V;sw+}T-1zwi70^W%AR?&q9yKlj{o+svKWnd)bn zThBBFp@Fv=0{=^u4q#eQ@2j*{QwfLi5x~STO1%Lfcb25jofX67^05Gw08mN;i6OAS zWmVv^Dxj^&u)tP>T-@@JeocnO{BMl8F2-D1Pk1-%>&8oeJ>JytUefA-wVieyRCPY^ zDp&x3#dMuuP%Q?4){ktFw46keK>AQHkSYBCO8lRiJVMDDy34~rtXw*n|KE+y_b`wg zo))<_lmGua{oTVrCUUKlrg<93T5c21({*^dm}?)Rgcf;*dMzLTCR$E{$N^gJnMebC zLrFfjzebyQB@!(%)0uvuWD=Kd`LFM2r1GNfF)XlSniDLusitl%!FjN+i8_nJai{ zDs3pCSOP6jg_1{{aXQy*)`U`(I+X0DG3rEOq%q#1G{!%Xm{3cG@se^qLg_7aD4EGi z@5Fh%xxSF5`6kjbT_`!prSEZRb8hz)m*{!ADcH2_@HgojY=GD$s7F z%9DQU5iGVkCWKOxI+Pf=ZU~LhCX&sZ`!AknJ>8|1;*`TVkMjRBx%F6XH=eH0gz}P7 zb)h7X>nr&G^YH(bnou&Ao5#~~T_QO}dwNTRN4ZqRv(EGiCI3oc^9vZ0t@{-0C z0Rq#>n|e>!MZ*k6%TX^$GcA0)8o&$AxbXX7h&|wvo5d5_cu2PR_wkBPya9aS50`!L z`0+XbH9T-(1IH?;evMz?{P^b@{c)h;5a3oLDY4i!@MU>XBYM@aDGbM{{8##+G=um6 z0HNDM4Rl+mR(Dw;^`O^74fI;5R_9Piy{InCK(%37UA02$LsP;GVRCW!rgp<_I(jb5K+lG0b*&UqfBGuSKwpMwb!LS$kTwc8(1zh! z-2jC&hz($Iyb^V=R|0Ar3z^r-5z0}+ak2O%L-{cy&hqp z*CMn!heDb_b&&?DjnwL@71DY%CDIU9Uv5N<^W2&^H=vUv4RlhZRu`&}Hm2($4YV*) ztE;P!Ced?|26{G9t81l@Hlwd14fJKCR%cd7lWC(U18o?k)eTTcThbv>20A!Os~e|~ zwxRYY16>-W)y-5$+tI^O26`w;t6Qv)wx{=_4D?=_77pjnE(sf1yEi`I%brsTH^qkQ^&l)#rZ!*w(CarF@LYhURVhl7gMyuPbkdC0;Vhl7RMyuPWkdC5rV+?doj8<2w zkdC3-V+?d#j8=D9Ast7r#~A3f7_H8skWQewSOe9@YIW5L=_HyGYY3aHjI*UC&Qs{* zSOc9DtJQ@nq}g;`tbrEBYISuL()a1PSOYy9tJSqqNOS0`SOa|-tJRqm(&@BOoPjos z)9MB&q%-M|I0GFVr`3&9NM}=foPjQl)9Pj_q;u%uI0HQtr`0W1NaxY}aRz!XPODq3 zkmk~;+6Ed~TdUiwkbXqF)i%(K+FIQ{g>(U(TiZbA)Yj@s71D)tdu;>VR$FT^=iO78 zZC>f`#(+7$I7eV*=Dd@t6Tp&d^^XA-AKX6%{Eex=;t`L-xK`X^jInrM#CQT&QO2== z7*F9UiaGwbUkr@%K)jRVM~FQU7jgU-Vhb*06$M;y8wGfhSdq)|Rm8ZORAh5}5iza^ z6>dT?2ow0 zi8Wq{7#H-4TO2Pz9EiA#<<&MhqN>BQ_$gdW8|Fg%~d&DsFM?ix`JjMH$Be;#kDR9RJ%l2FAr9-pTPJ#I+F@ zar~DB1@R~-;DXzT>mbhM_$uNA#MvBQL|hkf7RRR%*F&7i@o~hsnpLE7d;oC+#7P|Q zMvT`<6()`?TTp-}ITZn1unBQv#K7@d#EFQjUh+PGI0^ABj+Y>Ag1C(1j}SLST+H!o z#LW=zw?>@FaYw{$ z5T|n7260=&NgOvt+zzqnC1VyAUmpc2C77%wtT+H#mePUqTTZngZ{0MO;#6>Tdg|Ya*P>_y-0&Z{{@!N=VIlhYc9mLrj zUqoz1oW=2J#GMgma(ohcLr@UF zaV+AYh=Jp9#KRC*J?DJ@aTelR9Qz_3j<}3t0r3dL#T@_JI|jy$M7)#ZM~FuOfTf~{ z3;sgEXf!C`_%`A(h;uoqD?#?`1Ii{sOX$0N?<_&DMTh*LQ}fOsO}B#w6@ zo&;cl3KJJ>K>?mNR0MFm3Go!f!0}qd?;)oA?nA=x9<9z^eF6wV_?2C9l;xdjg z|Cj>#M6AjE&ermwX6tQp-kqw7B0hpF(&P#a* zQ++Xm)@)1Z(kliWI>wm8%osc6HLw?L*tjw2u;<;zv4jkx^Ah_AzR&2-iOw-GuzUu&9>A4v$e#L^^_iK*_^6dCJ+yLKB)<*Y`Yl)-F8~Qf%Mbk!mb~YmdX+U=;_aVRT@o7=pH9W*+%uIBBhve`@8GqouhPZy-t zB__H(HIY=&>!}7ZfIdkbAn2aZ9%{`p5{UwE6biiRElvZ?iy*`8A6){oiqpN?TfQ}syB(2;67^&qwA zyPcxRKYM0(8coP{dMmxY79Pqbt!~ntZ@1R`QY8!ip@ZJ;qWQ{=*V7$ux6!n9ASURc?|Y)@H$0uL8KW3xT^1Bn26q>fqpHG)29zgi;5n@c`<@# zPb@MSq>Rnn8F&4}*ipRja6J2&F-PoWT5uwm7WdS&?TjQXzQfi{ci2)R(fN9gZF|tI zmw9tvl4%iUdrAX0Q%_{#qeP_Mz3Q13-IARNex~KUhLRMT)VmSsPKWlc7aB4Zz}D?05*$EZt>>{3;%Cqez1NdO z+P+Vy5K>N)28Pn?J{|nN{sX|~DVRr=neASMdk**MOvso$KK*tQ;k$FRLmvYvq~-m; zAwy{HfH2{$^Ys3}Xu5yEV4?q6u5C{f2PSK--jLnDLEjrVLeQL}^9O{IhxFdS4+XC? z-0~isKd6Cr<#pNelhZVNU_8A(DA@DNS;pw^AL^;^yG60bugMmxf8+xzyOJ@ftuI^y zaCBredvFUX3^r=0+cbtY92^_D%#9zHzLE6?oiO-a%?7u@Tv|3bHgc^SXTF)iLH&lj ztJ&%{xI%M=#Kx|7<838xlu&`r^?SvgdoaYP`NVCSOhbpp)}QUhDke@GTV4|TWTnuM&5F(d(xLfqsjX;VpyvB zz;6=8WIAeCf+o;yvzLA{EZV0N`rG>j_xIs2W4q_S$#HM`!)rxk^CDik)j>bJQS%Ph zXhzl~znfBVQkUIJPh~aLY;$MoLOq6eh+N{vaPke3ayoSQFwIA9gM3;#ylLbJH#VPm zBg5x3WW)%~Ah*G3nm3}Urh^;XY4M2I@FmA_vdF*nH)99D6W|CBx3$DEmA)Ji8a}|K ze)gui18qDql+>Z`jI5jX*Hz5t$%84?F5)<2*8IhljM-M@V)v9vu$G(c`jh`bF)s~d?`aLv$T>GaWw z!3hdUgJU>&@;6g5wyv%cfy?x7`e5`0!T%UNI;J_fLLZMwCZEyzW6ioj#WhAlsby@U zE?Oapr3c3rl4*3nxMb3SE*m$(^4%}8KfMm|CMt4|*IjN^OG&lattxV>A|=&Mw~D$| zL{gQyRSVs!y9aq$#g#+l$zh&bcjh2tw)~$f8RI>7hFh_lE6QZWRJURcSL~A&6Wxkj zdT#twGKF@Su*hfO&j60d_VnC@Fz>sEkenV{7(sm|2E`Sp1K6hB;ghyq*YIatKJ?x3 zV0HDFjWlIq?dWJpqgQIiZNNq1ao*g=G<#;(*mFMtI6_k}E1m|XS0BKQDziO#|4-6r z{*&IDIFTHu118n6)JBhHls*MZmgkk0F_L9vR*maA$?Pko*}v;J zVP)%mxW`u6vc@_jLNcGFG(WqJvP~xXNh<^GGP$Yl+lv5>F>QH$N@>r@5%lxP2Yr4m z2XHv{(jJo|>EQ}rx^#+f$dPhhnOkLw$}}t7vu#RSqW=MfcKz}T3f*n`^1WE{4K-#r z^IV(?KrPuOPiu*zH=Ui`!!uAJxkevm_aJL&+SCTxkrIVtOb4DLimsY^UO(kLrw=-( zpdUkLzQ0#L7e#jcJ7*P|wY1X*?}YS|G?ix*n)V{y_(5MXhCcgXmL~tKJTNZOvK$lr zG^f6%i(59AmgOuom7D?SY%Md}bytzcuD_zB8^4OCei2QhKJ%sPr}>5yN+#!jRFoL= zy2&KTWTDdJ%EvC2IyB4b@7?tbfWu0MO*d)kpOHO0K?7!(=$7fBM&S%V8u#eMY3`Ai z(xX@O_vy7Ymrl$1QfR=8RwL(}mh()L@>uX7cl{ZZcks&A*qi;o2md2wt}c{e*G+e4 z{Yc8%Ntv~slvNrVCi=}RO}J#Wu|!e8};TnW!16BWcSIKWMaV5IT08ucVInZQM3* z?mftfvZdeSGj6;)+jM&A!ztdSrvM!5XxBMuehZZq|AVfb^Fe^&6fUm;a!I)~YHn@1 zZk}40){q9SiJ(*F`gmDO90#}2`E!kQ^4wa)L38I)zvux9KSUZcFIXdmDM#f|MUM8095r*NT!tv+*w1sQT&skZF1FP5y!bU^^ufZ`^uEQH zyhW=my~*D+Be$=1{c*W^{XeJWIg#}5Too9;s5}T18JylCMuvX3{L~lSBNK;B|3Bq4%X|&Zq(`?g(@O^vs*(`)~r>*P@ z$d7vt+XDph9X-E%F!_u&C}?Jk+$B#E@9*K=X3lU{8utioYgmN&PIP3vj4^}TGH_APFbWY~3+w#cMywsX=;Un@w*(nca} zUi>}J{(8nQw#gX-F^63rpv+iAAB%%XbJ}BdbV!?RTz~XS1#zwS`SdjN(_TJ@w*ol6 z@aN9z)^rP*u!&#o`{z@BDU^N-&(A$*_L}fM4crlEk5#wp-~CF#S(%Mv@@!?Z*Bw3h zmF#FeDN`L~rtj&EHFZLqTR2_aFBEhiX4CS*MA~_+fyC0`YokL-C8O=1D~urfwfWpG znT%GN?0ZjXqR)~{qLe1twDzZMG_|+Lqh>7~|LJh@8$I*sn9+snq|J{RW>+W*mee$6 zf~z6Tc3n@Y6@J>J@UG4jDI)PTW)mc{ZAvpXnciFzuOB9EmThaK21uwm(;bRk*{-i%uPD6h1guLH)yLoi|XBon3 zJj7A|&$EdK&HcQ{IH*wWV{NhP+Vwwts;E|9+Tn{Y)ElJ!r1Xzx+_RzJNaaau(@Gr+zg{D4j>|ePts3sBUv7;bAWAy*XC6KcCLn zTwC~0E?u|TD4d!{k8J)`SoR^`(wauU`8tVwzUSuG4+yRaTZaq(%%n}W8N#p5bZ-hA zz*8Idw!^VKBerFepq;aD?3}=TgPWKtajd6*ZciZ7sqUK=!Edc`oe{am&8z9O|2OS| zp09pWv7LVTP5qF^OQk*>?b?Vy!ipvI?l%onrfk5iinA9ae=aa~03T#<`!jzQsxM!_ zoecb6-pTkCDRO9!9ePdU)$%O$F@0}G6XEtOx@pI|WEyquI41lwjUL+>PukHTyCO&y z_1M)^NSTcy;nW9o=&o?#ui13=u8CwFy}RpA(x0B)og>_yN;~d3L>5rCXC6tX^S%uc z9=uOK`L?NWAcwBo96|s5HkM4Js_&A8Ki{JrzN;g=noh@l*ScllX%plXlQCAWm8VVM zzt_ul+5}_rsz*)lI;O;H&S?`6s7!U7nZ}s)xGnt-IqtvLYwT&7^?f4s{yshUof?HL z{Uz7lpu@g*lC5;;-nz#21@dJ~%L3l5_(7h!deblVZXi~gzOM&aNLTHvN4)9Lecg$Q z`t468t7(t@byXQFu`%;YY0-WoUB5q0)pHpatfoc#W5^C#xxX%%PJ<7`HR?LKW|yVM zByO}BZy?xKt>y;_NzL#c9d)3maD5`(d!U8z%VhfZf#&KROQj*Qn>IWcNmkL$2P0b_ z9?#nk?`50wiU(i|w#i27<7T@o%`)>%s&|%RACR`R9HZ&_gUtm0rSzwRF;Vwyd^-~F zpyOjXYO`$>rYn8Sc6}KQJQQo$ZUg9KTQ!RNd3YQz?Vc*buA6BCNbA|pY)@Wk1L$YA zel$NHG}1Dmrd@$FUB%f zV75uo$S=aX3sU9Z$C%ZbO#R{~V4Z!nMEs)W)drHSKNuLqVtPm8g5=B*P`Dj#wvCQyrJ;X2kB&gw_D$06iqv3 z5~{7VsyIQlZ3*vQr8M=Jk+we;r`olU3s%$AV==^^+K$x~eqBQK2Vxs<9bMBacZ}jz z|7)+jFqV29&m<|d-|?0tnJzn??CYN|b;?>xXrqG>!V@d)axkJz)QJD;mTSi$_kVZG zuND9t!RH$=d_Rn%9ZvKR9*?F4Cz?d>8tJ;Ou%))bKnJ*PleR+BkLk@5kz@vac_O^+ z;2OhFrC}%(M6QSo&N=l6M(W%K~B+V*G zAQNf%nP~cDNs_R11iymJ_)|-t{}4*UN;N{`;at@9x-apf-An5UMWbJ{IZ)a>qSH{u z@{4mq%=VNO766Cm5czIU7fzk&aNEJzbwPq%BW3 z6`l{K6Hm7mJP3_BA5AyR^Py)>Cy**ybSj!w%~R94XH>qXA&gbFGMA*^qQgHl%3|T} zVDwO(S8T!%rDh@Wk?zTDrR8VpM`pe2_BVMhfWtIM_GQc<+!ol=>};waT<%AE{uoW^ z`R2lcestrhX!@V?wS-=njG`5f1BF;g`u9^W+Wmq~sOrn(I_H8;*m{d6w_MN(ky7&V z1)cEVCQAKtO#rs^GV3X`^^&7lk`*XrE4j?CNGTgdv&$L@Ex3jrDboomDS59JPoMw-&u7h4O}edu==kA@~pm&fMzp4dW$7mR?PF-43QjKluoc_t1yG1kpo3 z1=PAdO}6bT*&d-ie~#*x*$>b1U)s`N@;U36+se?BvAnr2VOFTD`^Bw$k;z!)B-BnD zW45Q2B`xyg$@oyZIh;%AFk9 z_5PAcF>U`#RC=%1`9E?Kg}L}^T)*UIc-4ck%5?5}2eVB-6q(|x`fyKC%6$Si)%QJk zg^b*%;88IEM{qmZTHRo@vlwv{gA+(o{K}Ii_~r>cG9UgLTJ^m znxNeu$bqTTo%^|bCtYzlgdX}yO&eW`_DlNO1dbs$xT+JX!oAEkUHnd3_J=+w&|2b1 z>}rGqcoh(yBsKJG1-`0qs5n_$zfV>IYhm9XD@EGo}+?o9Hm%j!R25} zbthZy=3W4{e0+?>Y)?5l6`+4wFS9+x%2Pef_7n@IaG{?*)wR4&o{GzRhFv#mDxOa1 zhVg?wXR0ge|9ok3-I1@~gs<+I*8IVYu{@mX7+A2fe{VMd{osZ%s>M{fy1lx})pba* z-nAXWrIv!HTe%&BN=;Y&NEA)H8X@%Dj?JXQXyE;DvrXT4I}N-YuJO-rk7qzOy&4Jh z^yoE}@YgoF;&Ko@b=9xl*bF>1RyZ`Rx!Io5I$QRmWf$I@Mce4q8%9r?elBJW#zlY> z($wGdv46iOo1X2Are04zH}REiozxlYV9sb$MKgRV#GZ24ZN8v0V-->SSrNTsD{t*W zx3X(zx%$6na0j+*<-KLzA8PepeomnO2qnQZ@tUtN0+T_s`!(E29C$6te{g&3XgDg& zHht(;3B!l_agWmqCJ3me55$2=t?qr#E&O1C_Uu=@%)vX(2l{iIFx5XfCp+E68 zuY1*XjZpM82CDZew~5C)a-i09!5e~7-__YB^K<+4lU=>A;U>8kj%M2ekZ#o@QOuku$XXhAFa^+cXJH9UcIV>AVN%m(%ha5wz~jpjs-o z(cN?&!ycTa;Syh8{|v?|yO?eII$UJC=}Ww6`Hf(@<))u1Pb%{oExs8m?Ei{~yWtYw zn1LB`9eFJKO_F07AkojF#Wy3Ue}$JiNSY3MN_n$x`3bs7H2YSFphrmvU4P48c zYt6P?Tz$6}rf~6J+W}Zt4?n^UyD)J#U9-QbY5qNzM$jO+S$~xosp}Y0ukrG_^ZnEsvRP z`fyGq-VPv-=|d#F?N2UX%HNio$>(P>ZMxZ}-%20eHWC{R{KH5l(k6ez1%1_tF>BtW z7=Vgx(hQW$88&>S_Vv$SAc=ICO}PIV23}*f<)-o>ntYC4_#-Y>?PlQPplY047gHLq zffcib(E4}$g%La%h^6Hh`!B=iBF#2^Th6OB+X|%i(nX*kNLOmhMN9K)vn}~wy6H|m zLlO2_d_vao=M~YhjaZ(`sqKSjX^6v9!w5$8%u9cg3 zZ|(o;KApXI_2z8kv*d*_a$Ih z&iOYdUR+40NQ}2f$&BUgWX7?`$VsG0GQ+OBI7;3MxiX4-eo6NHFH!b9CYG*qgbH`p z^U&Me#GT#5H#_jqZ(i>Ty;jIwFUM7AH;SfJG>tHiiiOio!msNz3$29FP zX#jseQg*$6TiNyd?Rg2`)3m=r=*tQ<`Glt;{|XH5{)q`38TgopH6MS*W47tvrD=aP zi%5`496#Ju;(xds&XFR=-fY+XGlF}5Kg-4Qp_^wn z)l`NFGdPd_w43K@YndmT4z7%}^iE+69~JIx&bt?CwkL1ogelwH8CJGt%<)z<7L(#v zXadI%cuj6k5itD=UaQ+vj(ltaNBkI`-i_(4xQcllU2Vc#d2X(^TXU1;XtF#Bz~*Hs zT+O%BtX`sIoP)Zwwm5H03pLwQMj<}fnioF+)9c#+lz1h7Ed7wb;)RNjy&<2Pz~&YA zu?c69@x@iR9*{Cy?&V&1&Pt|**}S|zHc3lCAku7X0Z_3+)tM6mO1{LC60big65XUG z%;vw~dlh6=y z7M;vrNVw4fZj}3mky*NkzTTcOtJm0-$TNJU38&@d)%bLdSMQas%Jt2XI~%m*U3L7L zI%uBw24hJo|6#J(rti#4^j}E_J%|Wgh{IrHnc1d`wJF6&i3pR67xyH%$JV-=xDXiq72O9NVPXJ>KB4l7JR zf6vi3(hua=_(l;WsrVB(s5mZ7+0D7pzjVsq;XXk;eT6RnJ0$L@i0&RLc+)>H+mf%M zPG3Yz|Bea@X~mfJtv;3G%{KiOo+lggTkJgD`;Gjz)C|56Z?>MdmN>?v-+WOY#;xPu zu(qDIX7(}L^l4n{^M=-z+9$twT6de*gXON~d%oNRj=vMJNjqMZg@2-uHbLPd>}mGo zpHNle=$e4N{Wh1SBn$;`Oi1Q&{OJ>{`WiaCDp)tGyV<7S!v(XJ)2WX`lN}$mV$3Fu zqpBft!|0mxaeaRXfMb3e#ws35*A1h2)&|H$8$XQmN#OWC9q=&D=hZ4K=LFsUFq{@X z^!2&O@oKvLp{eawo}Ri)8Gd^^991j0rvK|2KHg?#O7>~X(}Zq+7(s_UQu_pO z{40I$QKahr$5`$jI}LaoY>+lBGX~2Q>DiPqo7WEGs1i!6#MN!k?0GtwLH%B5~=!dOL10+2WN z4w=?m8UkZmGsb&|lg~&e>HL2hsBj{(d97SZr#_A_Ep!tkA_49sm~DE>O$IJC0S!DC zs?uk3+=BW)jx#<@!s=<4@`_!;M`-N&5Bs|+rd~>WJ`VNq=k~wQ?8lMOcLvEWzMsTc zWxc%gTf}VB|H5aHPwAG&F@E-Dyw`lmMU&{2$1%x`(blt|k`&my+S^>yd$J8j&2ny5 z&t`(w$NiT-e9BnGcTX8BsMtXhpM(lcR?;R_s4st$?nf>-B29}Qxh?Wt7L#R*e95A-+oGq-qPc95Az1{- z7U5AYix*d2r36V9mkMZ;r^fIK{yb2L{wL_}-M+rjMjUo*9Lg%QxJ2-KZ!bH z>hbCQ$e!W zP4a!i8j^n(nZPkWMkvlI|wyuORspNfx?1d7?UcWAeo0GgXT#jH>69=B}l^iL+VBs(KH27yqoB^`ZYB&B2kOE z5|KqBYEVN|Ia6v9}CRkPLK_9I01RB>_pAyGTYzBz{N|`VRgU-fT~fcX2)crN*I9 zH`g!)*Jle%;OOfLkB7vy!=~iAi#PDBC62WUuKj)F2!VpD6LPh8aeXeG=w-gfwamrU zR>3vj&9$*^O&$NtGl3()#g#5`JzS#ni{DtZmN>5cTvNx6Zmy0Bu7$|e%GDw7N+*Xa zk;|AG;BsiLf`qt9{z#~CC;>@!xkwgCB+Vp}bG@YqMJq^-^p+#EKtWRakqI0|SFf%s zk^F4so}~7WNRIwgQ=REE&nf<)&gIUiS3omxnuagn?)kwkNnhF3DBn5bPOcyIJ{rW}*^;uxz)kTU#~ z&t31-RmyPWLXGR6xHHsNlsayn2^_zan;<-j5;TPmKeRob$@3L!@wsw&One8b* zc9&za!NgeQAhS*H&8^#Rb6Gz;EBPI7wx_IfTlZHK`RRwa#lWA4#k03eJ?;8a*q7|d<=p^|;@fH@Vlc_S zFLDz%n4-ZmrE*}S=DVb&_=4M*?HhXETc-)&bXgx6=FJklYZ8~P_siXMn9fuf) z4;{>kFx&F$N^-M3r6@y=lOu{T#~5730+;y0zFi_QR!aVr;}M!+z+pGNr3#F(pd=G_ah&UHT|fRmuq zZE8g_R^YOkf3FAtMwxA%@uE&mjKa$Z9tq)mjF_P&5tbMuuL90?H@e`1eCe>hVq_m%DwkKb}YU2HQN4k+Qyc&d~xclR1VPwoAVSN9Q zBf+i4*B?1T-4Neax*@))$Z^dL@i(=Ob8d+5DRLZf!*F~_ zj$?-#<7MQ(_F+Ofh7@hwY^k3`Xzd=~y7jCa%GD~uh;jaOV2{~{J>NSruBL;N%z zo#i%}h0+FOop?w?-t*gKR{YZXbFsCSj3!IO4O*fPdiD--;n}JDAlpi@L`x>te`>&; z`H#z`V#}HI3)37XcqXNV7wYg8Fyw&gpXGRA*v zSIjrOCU%e`x!s?!g87HB>dXgV9!>&-Q)TUPf5s|I0)S*8F4mKL;f!AN4OKrIsJ^=PiVoSel{nc9H80*J% z_$#nCR;v5{;<_->m`oPWhLK2;DprJ%2DKh*-6j9n4!|)gP&9=RW33Z4@_i_87AW=% zBf-MC0C93Si6B{`HJsEIe)AJ|gp3^IKda)vS8E3VDYEL4iO}(#WfwTUEbVlz~_D~ z>O^10_TfwCD$e39iS%o{zv$f_%@9{ckc3)2H13+#ZVTWz>Mx#&AVy1cjXVhD%lxqd z-EP^^ukkua`|Z_IJn)2W1zI`Ou0ktKwr*$5w!X!3!OPmpp*X3+lg4XrHbf(xdoi-k zE!{gll3exjO!i<*{M|^RlB^|;G!MpX-5%pACOzTBUw}b2|4-6W;>WS1X?)9Mxztty zj?naKTWSCgL@T!@TC9vE2|l%x0UQqn{<|^$BgF~$yAg3%9Pz;)ALof_aU?Nlk0*v9 zWm|KZcLc#4dpE?9b%bmYQ{qWu@{Twup2P^hdWg&8$#kD@y!km6js8AdtW$^N5}o)} z9nwv>E$)3~ZS65-bLe1;5>;?72d`djKNRoz6PmMCnvyp!YJ z9l|ed_=F;zhy79QWD*nrw*j9ynZx)`jSRq1>^9*GOyDyoE0A~!Tt_?`b&ThANUt*6 z(yOpe6<8+zlsa#&r5gBU*`+!Fj+NEeiM-l&lP;zHcqTVv=YM$bs;)W1b%Z?P9B$4} zYB;N5nhD?XgOnX4N=Jr7S%8(WVOE>OCU$B@8d;jF_yuB4tmGl~zIW=#4b}Id?8c{3 zMhD-oQe<&RH>!f&Sz_H;#_=rO(9LT8t{t;9*Hk@n;{1!R42#bQl$<;F)aiP6P&1J< zCx+O{$8Mvlu9D4aw~h0mlNHc{9wDTe*t0p&TNcIxIA%WNb>m^)_QdI0Ik9!n>C+fT z*GnTLpU1?@)ofoSMFs6PNfqTRPpjT!S@2&hjp6|;(n&`3-!(LY6*R?9ovaeqUq5v7 zVwDrGMaDGtH{!ER0Q|LTY5mjsb+%qg>zmdm!yezhlL_Cj)(DTi)2y#LTc2js!w#h~ zAA9BDNWg;f@8_7B{KiSdA<3jity@@s>m#$($=||MQTBN6kz~?Xs5L&4vEV4i`bRSs zY+~$B<6dV=@_nS`$zH~W?`5pd0miKRq$8%4|Bmi|9V>MS|A$U#_rIh&vj1-f#A$uW zFw3n&jAa~Rtiw^pat=#JOe_CwIr2JI>T3NTI;GwJlJ3a zU3ao#Zvb-B$!>WAG`#6#_~!V$n@(o(0eEuL$x?j)-o52ySv~+~ZaG=555Vl-ovg?Q z;K=VzR_p^%_NSBG@d21~*U3Cp0Av5-WVKZQ%kMc^Cl$cMdrme=1yFk5$rh*pdOUEl z%_<8(VU?4WssLs^bTWqupu;04Q>g*yBPXk?28j5_$uiUc7yogxNos%=kDY9(8sNRh zPPR=A@b6TsR6Q{I9Y%%z_KS!mgEcY@`;mW`T~SLbFyq-fE=8+eE~W= zce0&$=V~S}R^|(E7Z|JZ1^B?9u}}@bY=6dDX#gJkGd4g2P#wV7Obx)twHRBi0k|5< z*gg%wf^fzzYXF{wGghqu=n%nJs1{&R1Y@nV0JWnS8=wWKh+=G}7GOp+W2?0QN23|D z?9&4H7#X{)1?XX9tXc~o8W{`K0gQ@atd$PnQ5<6fbO7Vx8JnpC$gRiNY8}9)hK%jg z0o-cL*kv8Sy(Gq}bpVT6G8XCwP|=pLc76cf?HL>F2hhDeV{`lfLQ@$l^aIFBWfpeG z4`6dDW7qru;?o#==?8G3BV&>N0Npz=*3KVbfTk;Bh5i7&yEAsk zAK*cE#;*AT?8*3TE_d%C#VQg_NfahBn+guCaeakk+ zN^1e+f5Vug7QolvFs2FuFz;ZjZV690aiFFk_p80KAVd zRvHA*?I>f8Ab?@TjH!YFbjKO18w}6@U+WbN;BksEeBt!L62=w>1FS1$Y;!Qc@KI+N zD-8zdeU>ptFu>KbjH&bh{$-3c)B{W?V=O}tu&0c%NqT_T%ZwGE{4!%Z^#Jc*W~@vP z@WW-ss`NPS84CyjsB?v}q!0j|Xdg;|U_fh+zT=dH#(PWX> zD2o_{zb}g25qgW0vxt%O5baqcPPqMx_+S_bkH13zzWLS3@F4?8^9xugyruIN3bj5e z;H7&C0Eyy5%o!#I4kt!ZTWo@dcg3E=i7{>aWhcWo(bnW0?#}zU0PxRcC&L%P*61g? z^(O^@x5Qn;i81!#6(_^D9=pvf+=_pW$I}Dg=@s$Oa1txrxsG)U7n4R1Pm(Prk03_U zR_u$1x5R09$QM`Pp`G~M2ofi3_*1+(fF7E zXdzrDHXcvHy(4`9KKB!S$B<~@nV-0990~Ux>;qu*=V`AwJ^=5CRwrM(8L0A`4t#}Z@5+QE!1!;61+u&ja{tU?vQ z$`Hozt1mVBsqSDLQUN#&;+C-_TDTP_kQlK6Zgi6a}ts7WL)=GYjs$o5bgMSS5x{CPuPGY>kIdao}VUL1M*e zlS!O#rBGZunM9K)asOoOKVOSi5w;MYqwNqeYzm*5T2CQH;re!Q&=e9a{I)}!J%vOQ zDy~6o19ATpVvM=Jhq02^d_L~(L)rj0(x!%q{qW7(aDkq_&fK!6A0aJ2qz@BD1?w<=Kn z4p5Qndq70o_*^jb-eSL90B64k*GHEIi48s?4J_3j z09t%c_ySJ=FZ@yg&XD+-3)i18z#BlgjGqYbQ2F3X*FA`8g#h3o_!JTV4^JO_ak>Zb zrd;T?K>+ad^cp`U2Ru|>t9Y?!uoT~?E;R4}@UUajOXaOvhA#m3Al_>Q0H0;}wV;s# zz-7-T;R1lVTLOS5KCus=#zo%q1%4n(g>O&+&zG1EP$zo;c)r4PsQQv8fTt7FCiO@H z;K?vu*S8sZ1O!2nFTPmclW@?=cMq2DDR7kPy94uha$xq&K{786GJW5|QoK1B;JX;< zRHT;xkmZZFusnUq00Cf}?|KAUf*xo4s?aQegB;&8sHsJ8VV~)XTQ8m=1iwk(k?Z@l zxT}p2WEm;|$xS>ghZHREG&brcZ+mPq~;zm~<7>SW!%(qLieup6*hb%=N@l?qi8f zrBZl_%}}1C1`hzA<|uEao`>n=)t+7esp^KJZ6TT2<_yYOmUsZ@Gd%!^h9u&!0|3`h z22yD90tktbw3zl-vDy+6A*L)MQOT180OCgu;SgJ~(*oWqOorh@9pu?E{OAV&@bgxj zQwxWB0ffhh%NLPw)nQKn^2eqY;;uzR-Vvs0h-cB1j94AgwKew6=IiYl|SQEuKGM zFU`jXbvzqIYXF3W_;ngj{1TL~h$p{P0SJq^MJpcwVF{OB6aQX9^cGx?1Ut?$p13a~ zEW_`jcwWHd$0+qudG^NE-o#BTNc9y@GL&xRtbS;{gD3B!bRQact7;LfmbA8E+7nk& zkIUR{z88RJoe%MY9iAqfm>b~Ipjzz%kmT8rFUl<+}%&1P-K? z*4vY4i4j~&t+y9fNlUG_HwOcJ7mGzpNmw$jtKM3I?n&#acK`>{y6RnveC1wOy+a7j zQ@E@?SW3byxS)DRlH(rog6bVl@Vyt(g6iFf;CYm^pn5mvKw40}6FHC;RPQ7Xqy^Qx zDPBRj7F6$M+!1L(^-dYW~l&7KJ~|Wi~&%8i>p*a3<;=L`2hGd!n8{5=LO)? z7#lA@{RO5I@%v_>;H^SEF3RBTT9dttzQk6-HQ9S3CZ#pmd($>tx70Jldv@iT?A?J} z_TX!ByJaLc7T09eA~fY|vT89;;+m|o@}ynNT}HywaQ#(B;DRVf>#t`U9{}ICSKyE+ zR|9B#O0k!Is0Ikos#f7Tc~=9V^+hqLmx{kFBjN4i)BvGG7jhr>O>`};iadv+7-_xJgI`^z8joSAdpbLPzKIWy0B-uDpl zAB88WkGT|ij)Bd3^ALlm{CKpj$*d}KiOR>lMVP2DQGOE~(eO-I&cr2smT11t7@MK26 z2@+Kvgxt}sCQ;>K3|9dT2QMA z-T)jm8-d3U+JsA{FzN&C!X2nl6sraCE*OsP3K7LubJb@Dh~l?n)Q#ST3~M>V`^fMh zXE?`OThMyB{DPMl@DH>L?~#dtfbxQu7{pEI_sGQH$*6%}BNI(k26`W_k%=J#@WbX8 zyu?9sf_QN7f|ocL$K?etaR`pf3tnRA7=z#MQ1;MvZ_F>Xi_gPbUgEGzgG6zxg^*rV zyV4*szYG#p)!|1&>2p&=Rec$2yz_3QMHu6&wDv&PlNMsN{eFUt#OwnvOCe?euYagx}s@Urd?b;>Z}z z@h~=)Bcd1OKhip%m^ z7?K>m!n(yZX{3kp<@gHED8q;LFpP>0E49_0+d#*Uj3Xi3OCbQkFLUEVmt7>=DtQ)Z1;%C^R;$pTY0wkNu1&vl>VIT!d8a?$=8_ zLR5XE*WhWk(;ux4az?$-Mw#PL*PA>OH+b!ymXtT)H#IkcyVg?ucQo@&p2Tqzk4J~U zt)0Tp^0bxD@*f5G#$OC{TD&OobntK?J)80X_Rcn2P$m-y&Q_>d z>wF`D#`0VAOR5cR)pee^Qgcqa80K2FE^Kj#;TuB$7kaRqs2ZL&S}VW(_zD|4s^RdW zwXzLg;h~P2Bhj`A8uI!I+d69E-X$xw0Vkh;4r$Zymgy_}rlSTMa%-on^ot!eSVGj! zQ0bRCYR*CWOm4le@LEUB1?YiED*bv#%@y8PE46;^!7x+HhabZhjo2wd{v)lkxuV$K zT5d1;c_f-&t6{=GKmQKRs#E>kZl6n9Up9tbKDmOrlWjFCkhO^~jK4X5Vc@eN$k`3= zwpCg(w~Oz3v96lea1Cb3-U#oFRa$@da~yr@JG|oKeFCE?_wJe~QE#^Jl>8FcxxIhj zyg1`4taf|%$5ZqaMt*!$_wGVf5Cxw>a0`Hb7=MC^Hq_ejMb&WjS&jxfAM zw`kSwEOoL@oveKZrr$wfz0gv73+jDWQe%m7-(h=9BHAPWsqEiMhGxmm@8){pXna_p zd;3WN3;bP7*bkKrWMf3VUqTI|isN(LyeXtLmj>s4+i>fKqWn~EVW&1| z(9_6%*t{4zvc0x1%ny^)Gzu7Z7(@-@k%iwU4)^}lsU0RP>q}wz{9UQ0;yAX}C8A#V zsQj;3R(*Pk$XAD5RDJSMte4>_?uU^`aj$wJL*#3~Z0L(C9v0unzN>LacfGD(YgLUx z$Noamv528jWMhGgZ0yO*#(KMdt)*NcUqN9O$yeYa`3hVlUx7>HD-tF06$$ww^y{1` zaj!U2;$D#`aj!_Ug_eyI^7W>kPKkScg1J|HM*|%~Wx+p?`sC}TVR4O$h6OCr zu((=$^8KQ#=O>?kwDzLVu-m)TCtqMGvhpWiU>QSv@&&G8c%4_XTB~;P$rrSTfJ2i{ zJ{`=2aRff7bPyB9czjRkUx$gzA$U$=OU&UQFU=iMBJ(IfqVQxN5lHC>2+Io64@wZ3 zW2WO1^Nn(%XsGpBlnGT3g(d)!`C28B8#)yUg964X%o%@95QQcJ8vCp9^voZDkH~px zqR;~L9+@Y>#82@I`_0-YQD`BK8|GsvqR=8751R{NW(kf*&EsQ4p{p@wB+QeMpK;Rs zYlbM~E=8B5DQ1K^&q7W6ar8D=A+rm)ySOHb8=+N;{6vX=MTkPTGJL+0D6|?4EE3f* zBXrlDB{O&TFte^?X3g_3Q;Vy(bJ6L*$KvYlxdL{KTQm5Xco0ohp+Qsydxm*8^4y2R zQFBzBD0Dw?+FV&p6nX&0^X4iv?Lpu^=9^ym8qINA!bFyhdlIj=jykK1C^0WZWF7N+ ze1!b9n#dZ%M>hZ-i~CDq{PJhvqZQ@)k$!HP$ZEm6K)lI1VNJ=%iF_q&WE>x5BPSh! zyURu%@$OlpS=tNU<7U*Um(^6?cOBsUQxet0mxjOF7i+;mBx`0*7U z@{2(6<12g+KCtEED||4H%g0yv5FD3}ukg^j0>zK7@S)Fnr{1Am?Be4qd>DiT`h_W? zNE+K1>%k~U3T)S_Co|wE@cpZQ8YL=sFr@006+{&^9|wqxixWitiX2pB=AWWO6}|T3 zGDtrbiH>*iDH^SK3m-g*`%&y|hBL~EDz*jA!{Jrl*gLi1=WR+6MJwL84VI=Sh$^-Z zz}F}RufoUYSvc|`PDXcE5>@O0G#+V0nJ>RXnSa3gzOT6xe-S6D_zI2E&5Ka->tGPS zkhR_ycWR9;KAWRm0YiN@M_2Q21E0;&+i}zRvpKq!GvKp1`XFaG2N~8QgI*pZsvI>9 z-=J-vO14!KWllL|ELE;pfOJEWNdG8KR9RSt^oy9GqW%O_K!>{tqS#LDT!X0M;xJKc zm*9CxqF9;E$1g7@id6~r<9MUsg>jaK7L?j$a`7rYfS?G{F!y z#ik3MUqKX`A$V|_T#8*NiIFj)*i6BvR};l%3tko`ia#y56?hZlXmf@r@i{suI=PZ4 zv6mtI=n~&DygEvh*w1ilhN!BU;hq#x@>PbrGemB3JLBJ15GCJbxB~D!hBwBDk~bO73EKNrou7n;{f;$@dvPQc0BjfZ-2-dl=plCQ5z;SkV+GO6|p+cBx`> z1ySk?x$WOq5v9HqydRnN2_7FIN~y;I+QXD39r9|DC>0ibc#0@hF8B-NuM`ZaU@9iK zHAa+52)-R<-J~Q&qT*`7ZK&80ydJ8(tl*ETiBcm355Vz}g2$qQQG(CR5T#lK_pc;M z9VfUQHjfv)9Cn`baZhAkMPjogzC@-if)DlXU8nUrXG)kToiQMGG5%ad6wMs;4~xjG z3le1{e37{-N|YIjw;+S`b1R54hk^$+)>RVaGsDJVf*y+>*GY3lXw&{N1*BB7hnhZgt-uwPR5C}`R_DQrWM#R z7b4Rszu_VNtRzup0*=o$e+xsW0$*ZY93#q11YTe^Wr#9uM@NVjIUjlr_iBUOD{<(I z+i`uDb1zQ13eB1~h$u5zuJ3*{{cKn;NDsnvdwT?lFnV#y(GC z7WvO#f&5=r5-rF~>s3xfKI3WuRhmmViRQll&WNVK)C!xiU;dyA!JGY=wk0UWR?^K~B8<1F%cjh45MkH3` z9Ut2ABoeFhj*i4rNIaBxZbYq{@RV-OJ9uc^%(ItQ5Dn|)JOtaD(S){EXFINp6O&q< zGF<+aCxb-otxg`j%89wH&IUX=&!fzeR;K}X{DsphiLPvQ#^aHG5oc~{bsoh1e+g$+ zwmO%i%vKBv>sp-;`{5#9#vR+(>KqOWub|MjRtMVe%xky-yIY;_y|E8!S$6{3_`B;W zi0p4-M20W(_8thRUqRk?P>{^~Q8Qz|c^|BA$9ITfzJg0)yv+FlS0u+Z=V^4EoX{K_ zW1O7PohhYk%XHGqZI>wX?!}cv_LbE{Mtx?->===0p_bi%WD?514{Vrc;(6YKRz=Nz zxC z*4KRwruOcuB&z8jA<{19&&V3QxDwHI@UUktNV3+sb>SznYl8JWQm`*U)fZ;q}w<&t_aAt)qD0>^$Vy+Ja*Gg8YkB zMA}b_={fn+KCB4F+xDA{uup0z1VCg_DW z>7FUvJ$hk$KJAr1tU1kzN+PWbt?f8PtQ^iS=HSMLRuT1K%Bc%8im$M4P9N^%F6rad zbL!@MGalA#cVmV~S9+&DqUBu;y)hL5gz(4OYi9m*Mo&T%Lk)jO5NSsp!mEKqtOI9Tp=8n4QS#`1zgWs1vtT0k@^ZIs6dE@M z<2y@w`Y*&oaxiSas0g+0dp!mAxYrIwC+dZ^K6t;-4#rK=3*+n3-tmuW)zvPZ=Efo+ zr^GO%b@sW`Tl}b2Exg_Nw(xfMLA6Lk2)>O!c)9#{yqzNJ{x9lC9TJpNeK)aa@(7#A zce98lbx2Hn8<7YY;B1S89dN*S0w0i1V|wFNdcOg}o>%GpAz6iA?#+BmbNG|6tP5wu zSV=8gjpd6lJ_*Zihw(60Qp?tI27D5hJ;)jGNm#ZX8H~v`Q8Zvofmj7HfPkuCsZA8H zKpPokAiohjWGOP8WD^Asl&n4yecr{Nb zjf&xD5EU*fhv?H#qR(=OK8=AI*tnJDJg*Jn#OiX0K8?YgSXU0wr_scThsq)PG?eJG z9HLJ{i9X9A`ZR`W3t6L50ey)9eMv1*+F0FI6qp#d0}9({tO2nHw(*@Ov{5cZpOp}O z8l$ye_=qa8WvC`eV`5%@{?K&tx2E{sA( zpz}M_1R^zX8?PE!AW{QeToXl%z^W>ps2oIU;8unpQUj~eKq&sO)DtoSca79xCJZ}w zD?48PDJ|iGI}O~)B|)7A?s345hnYGJcn^aGM-!+577Pp2Y2ZE_j#{8j1NQ@`El{U{ z2VgmGfjSL52;9ed6E&_!o_Z?7p)C+%K`x__uO&?VC}<-UsSh6Y9j*k7YVeq88c{jO z(BK$8y20E2lxFt_c^YhaO(%*p1y306E9O6O5{h#EaeQ=xmwQ^vx-5Hsp`0iD?*mI2 z>X-+rJ{o%K1GEP$W$0~&Gpur=(6(=Ic$N3!)7o&CS<28G1N=l5Sjy1$jcm!p+A6b@ zp$~DAS<28Jz%a9vp)WycTVN?e`_4ic3oK>mD>O>Cz*2_3z6m;XYb_e}EwUSg?>xHE zuev(g`Z{Ye$Oam5aNHkSq7O*r<46DQ}VCkG_uEZ?R$MSQkr4rMCRmO?&m6!&s04Lfi zmw8Q_)HGm)H8gK-C8hx@%85%VF%4KT9;6pkVj8fNRI&0NZ}BEI4Ootb0Po8xF%4LC zyk@nc64QV+Q2QTD1C^KttU;VuU5RPH8qA4xm6!&sCQdw5iD|$(NQ3ftVtJrk z=1NQh)==$=0HlgOC_=-*+x#?$Vwe)FTf*!HV6Dc~Z9#Hq-3~|=+yJaK7hp!WI=rKw z)kd9w86klg!5XdI7$8buMzER%V@9x!U>wDa5Lt?{ydV`>#t<_?1}%CJ4@}UYMGs>L4O(S0q94!5ESvgkO1vL*V z$0}EI0le>2-i~pXDey{nE$6@sPvwK01D9U89yyX=;8VB>WEeL>CIC`AHtI2u@pnSc z1yVc>QarZe1*AcW`#_4v3U49}Qry5EL8J>cZWu6^I6OfV->Iz+l1m8?5{=e5NEokjG~W20@;9S}+Lm#3sf}kXL<<4q}45YA-_&@_Wh66 z%LPH6$rujA#w_Bj9`Fc;G^`_54@B5zvRI`!2tO{v!a8F0;CJv;Snvg^Zi2`oZ9&9Y zJ!A*usTRC+st>|%y553_v-)5hZ?fQ}Q+)`I53?|rRuBC?U=cN2joz=G*Dh|t5@PjX z1JM-b-tA#CvC0bW-Tn!xCkx!WJscyDVdcETUQpb--CP?c3N!a^ANd$c;TzRH8ac@V z_ii5}rNF)0V}PR;YOz~TNt%4%-tFT%y193IY-@zb0{3o@10)OFyL}RmUKY4_d;Bcs z-YszN_Q^Prw!ppHt-y|jZ)5uuJW+WI+`El^(P*v(?%h5W_!0};yFC$jfd%f}ZkwXG z_d|Z8xOe*ugdqwu_ij(R1I+^WZcmo$1NUy94GRYOz`fh;iz9I6M7{QuH;^CPyFC>} z$pZIop9dTzAGmk>{0EVrxp#Zo=yD9+pbhGjHuL8aj8E@a*>LYR$8*h8Kjf#!8SK^TZ8;^%` z6}l%qgbV|(aXwJ<_AU4{vrkA7ebs7rURp_1J#XGjvb&`JK-Sx9&+Q$z0J(~-w;xAJvGw)_Bote3Z$v_|_4boUD7M~y3JJy5 z+nexQE4JQ#7L1%C>+Q|l9wF-`p~!lB%NW;RV(aZKWBgQP>+R=JNU`NsPQ0}OPla&(_S>UkL>9Py`yFH= z3tYcozXh(}-rf%%y%xBBdwV}uBSrSB6GHY&LXrLIjFA26j849Co5+3_AJU5Jw|5|- ziUqFU-VI0=xPJS6V8a5}Z|^~?q87M*`=j5*XqY1V?T^uNMfTgD?CK`_?N2d~D6-%F zY@Q#O?RC9CqI@$c*BF=iK~VIB+2!@D*M^J70!Y%v2^`>vHpdMTX*mXS&?{xek$b zk;<{T%gw_F3

tRd}JxrJDDVC&798f~6xOPf2OD&IiHcpNv8YzIhQ*^!%s#@*q^=<6%2=*WkW|1P%ZD{SqM8rQ1y#*X}U^ieUrxg&ozT5z{I z|9Xd;pN}=8b?U&jjyxtC?H<4C)DAL?kMIm%20Pcuh20^Yg6~WGX`PKpq8wkzb$li0 zm^;vLRiH3Ip3fUp$IPUf`#|_j^7BZ4D`H_2(FG-gx0DP{I?&)GWkDI7tdi~d{Al7{J`p@M5+D553FuPsk+Z_7e;nh zmq%~K_;m2sQXPgf{ArylOSQ%PuDbEA^p_Oz74B3&=meYa6*jtZfmJH~jGOO`D@yWx z(+e&6KjVT^ss+vYNAQ@W{g{gM!g#7#h6e8R;ki7EA7-L^(IC10!_vj;-|0KBK~jVp zbUtqAZZ^RU;?mM_T97Qv3eE?JGTBQlNBy-cZ%eq?+OAfEPKvQrS~ZD5Q11U9#uC zc%VTkQ8Ku-+u+^k;HNk}{yz-%%M?5CsRQjvfs(yvy6s($243azfvZ=_rM^;nMqVr# zyy{1H0VytAB$t%s2^RA^lteaK3)6Ktvo4rNH&(R0xnZs|8>&Jp4{_-2qH=n5tt6id+O{lSp zO{A}pTwxioUD7&dlrEx+FQW7ll@fSBc!<884d{ib`I&gW)^H6xH{OjJT|T{?*EWep zl_rFjOXl4J&7**eF-6(`dCC4iaEX_9+kYKB*v_XnULo!8U3v?v&lc}N`+@eQK*{`+ zlKJm&OV4HVF1LRh+TXzE(O>vWm!77jCHoBr+Lr<)`y)#B|A^*~>~4N1x~q&&_g^gL zivgBgt@Hbm{W4|0MIKfufuBE**AZoZQtykDkq^Wc<)@;8s16Dfks+w&SseJ7Y35G2 zTN4q7FXM-HSxvFSKGuFTiAj;}U-YMJ!dH0A%{SqqK4XquFEr;@qRT$l@PUGdb|{{( zz3iodIf5JXH51_Y{Zq~TIR7$R`~6R)LBH*u#6Bst=w%H*BfZ!KQUYDT7GGnFdZAr< z%cCfs(x^y6tU5_ua$kzd zmuXZ}f%aa;rzdrY+20U(*KX6o@+N)Rfrce($?)RthCYCXp2_Lw5HO2~eqEY<@gU0k z?3oAJlL94sXO$ZIM6Md&XWcEm3AaAS=R3TncZ#!T?m&Bzp=57dcl&a<(kf05_LjV( zC5Q9uTXkT0$xtev>MlP3&vJ;<&s^gD;T^5&a5fM+(17G98IYwesC#OwVPFSlteBVE zUYxym$SJw2v0_t~{XeYjzZ zW$Ih$ifPUdS52|KWEO^0%zSkt(KA1nnQNn4XW&L&4rW3xG}nEMZodL``3m>Dy%#DG z5&I|+QQb(KzfI0R<`UKZ6m2~b2bwOF#vu$E{46~!^etyC)p77FERO1hsdb-wPra)t zEfd1iA<|oSNI7ZxlW^boPai~y#-p?kWyaZ%7~wlzX^sL=o)yEv9S{djc_>cBdGS!3 zp zo8BuqD!vbjMn#DOE;=d#7abLWOOA?2lpGb2C^;%3QF2s7qU5NEM9EPRiEc;5dwV)6 z!nLsEs0hcRlA|ILB}YXBe=j*IqQBs%c>4~uMC^Ci)2|dB?&VT68~;FUS5Fs3BuXxd zNR(U@k@(+T6w#29iy~wTFR+Uul?6W`8YEF^x?L1;b;?B%u;`+Q>x5|Nf}LuKxELw! zJ$6xq3um)nED`&UV9ZOzfu$&`d=?ps&mzO?ysvg@)yIm@;)wt7S;Vrv@>v84qa$LC z8GI8E@|w^PJTb8)q2Ul6m^-|acPV*IXbd7(iKC*``Xx-kJ zU~yEmmTp&midN^mqJyDz8?2DoHZ7aAPvZj~vD^$2bb z#SLrCJ4G)<>rO5LC5?5@s%|Gl%NqnIMASxAPnDbyt^06ToDi-1fyD{YdH}Y?3DJ5G zxQ}kW>FwREIsM^<7*<}0;iKji9SFn6d{p#843FWX8@wU!Yqkr`Ot|GZb~p^5u(6c? zL~b-RGvRT36b^^slg8pMg)t0lEqW~uCLJ1@@c8S?h{E_qepo!Eg2+U=-oSN0`WRWw zHvm$A$nCd-;b1L5WG&}_6d>{-=YSL-vK~)SvMGSYUvz(&QHPjc5a*Pq@yf>Dgyk80 zw6Ql~c{RQ(*_*J!;n5E|ooLP2k~d*AcQu?Mq0@=>ni3ccv+Pb7?Kpzn38Qa44M7Bi zI?=Zo!ksX>?NuCI<^A-7qBmjm4S&&_FuJ|Kb7o*KG#BtDjDCodtka3^0Tge-=$8mH z$KHg|eW#%edlN>#LZif+F#7c@NY%`>Ugks1aUsm8?5!^d;_A`4EX;`YVF+PH>>%zh z2s2`bF@!K9HXM*W3FD)lf;8h^1ZFCUCgLkzLAvBg7%yx`8ls6Z14WfTp<8C4=PRI^ zNbJ-&6cR)eiCuyrnn;xCd>o>QM3rEOCK8Q;A(}`WE*PST#Av|~O(a?cLo|^%T`)uw zi8BPdP)#Jxlmt{0iAjPXnn;`_7@~>96u}TpB&G_6Xd-c*V2CCX=L?2tB5{FWh$a%# z1Vc2Dm@XKiiNp-u7Hr{_T7iUWMs*8A3FXevctU6X_icA(}|< zWC+njdKW{8CephZLNt+npCLpO=?@q}G?CuJ5Tc3nM}QSgakypdm0JzfMCJ>@5KUyh z6b#WsW}je)CNk=AzWtAF%g-#Dum@nL2X?-;2YykCd}R;9k4qw7 z*@F=yMVzngrr$y|!I7`*As<3C!I7`*gE0Du^R<02j*IiPeF%<=^R+$nUo4t18@)?E zQKAX^u!GSQ7EL(A@QY=KMdv4|UK|#k;TS{Uu$cN(i6)$8I2tKOLuYKX=xFGS0~AL? z=OmaAM?+^ku=p7|Cj*P0q0!Gs@32{Ai zuE7lwv4e9hjw{zgXE{zNv4e9x&M2{ia|6yOv4gV$XO!5%`6XT{lO)}es7COY>3i)*5DFR-{KI`;#MYohZ2 zIzYq@&UzeIVh878B$U{}c?7wX*ui-W4^UC;;5?3$5<55>kWgX=XCo3y?BG0!gc3VA zPa&bi4$dY#*GlZ*JUh8t?BHzX_K4U)5=!jgY{_8)Qm%>4mRztTc5t3YAtiQjUO*2k zv4is>&M2{i^AgS|v4gV}&$tphI4|RdDzSs}3d$(4gYz2Rl8a)8Z@y4s2j_RwD~Jph zJ2jDK8ynY!0{Gy8SoEy z*Bx(OkNo=))uzq-p%;uxx z?pHn254pKqZ+LKu2{2r!;1yND(Y>3H`&HGn@x7NK`C751y*DEHJC(Vmcchj``@Kqz zrP@(Ay+}VFE-pmGduedP0#!vebdesYIujSxk{gMRSyZe!7nj25C%w?zXM-}LoD^wK zf~YsM?^oz}+sB%8T?`s}+%5T!dQbJ9`$|i?3t+lQKLXSlIJ**AIKR}8CLN6`wWI04 zb`+D%y?K#*wmLhZcNhA94u9$((qL^DS{>0B^Y$V{^50pY{vJhDv*ffixUDzSlodKo zVZo=&z$0F}4L0x8{>*#)5v?dK`Lsa8!0T*xGK=IZd^$h3(R=u7E!*qY==-~6&w#?W z^TqT!4F-LMB^`Bj-oCH3dZQja(WQOp<-XC94l|uy%=V!EUWdWRwQS@h@8oZ^qzgY| z?OK(iCC3Gd$!0t%*KuyWFsUDQxX@N=^+XMmQOhpey3K0&?}n0t>@z8%{_vO9cA>|8 zg>Ccu^R4InzQUXH`^ULBUNi%~!q)ly9q)^8wEB}o9ssMp!dLSf`HDY~nRP$h)Y_z=S>U9JJ)v#ooSewWP~eb*x;~G`Xr{ z<*M4{s*aWGm_!5XQEuelRiweISd3Oz!M*e=ypu`@`pf$Y|J}WPikJ#y|NpuOHvM0H1P^c#oFH-M zu|$D=Q1GM_L&XFCHx7fwlCt4J_*?GqI=?G93?gWM(P8jdoE3*bKw&fkrvfALTJLU$ zLBOKJ;BQc>hr=L8UQ-T(9C=MS407Z(A%o#8V;ugeUR^h<_j--QaEcUdvYY@DJ43KhWFv zy_Rynts|n!>3xZ`%E#&uYyAJ}E(mwBqPyTGP~YM%h!}iSbQiorxeKyiptuV%1PdA3 zru)eUcfn|x7I#5}#K)E`euUhD)8B_U8ADLB&>p~|yC9tYn1&4PI}v4= zh75g$MhOiW`WkP*pdsu3q4g^|1r7pt+QTW3w+ga;z!)rB1zG!nWf92wC$KC6S^ol- zMIh_n!1ZzE6o^DqTsZ|IF)Xf}0+DEr!zs|U{G4iuE2lu58Xs3qfk?E)u~m>|Xcq;D z+T++N$O>s40itPfND7O7g7Kbyg7Kbyg7Kbyg7JG`Eu|etM3=`M@5CRpFz;_*Iofq_ z8jSaJ8jLHaK}4`z8COn&NUV-4r$Hpv#g)?_5)Z|d)8Kn>8jSaJ8jLHaLHPKUoCY6+ z(_rF2r$JmQuLxPU1Imh!wFVcB6`{a>wIY;MPJ@V}oK#MOjFr&AQ8orQ^2joV z;xx$cI`4-4C8t4O5Mj#1X%Jt90RuN7hQRgFJ`B5^24me$gRyR>!4Ptt6D<9zV~Cqq z*#$Sk7*-0zX)xC9G#EpWgv#t%&e82O80&T#^u6I7^H1%NgO2NqxPbZ{cu$I7ghV9^ zYnrKgT0E?$45B#ai7}@5x!!&M)CRf-A!|ba3s|`TyAFy2RARvI5j0++*aH@$*kir8 z7{wl2))u4Kf8HaCJvKooMzMdnM-+P;FGjJ)@nL2J9#Dy)*tY;&-qe3-3pj>i;;`cl zXr0kUev`AC->Agc=Vkp`EqTpyF5?~^;VlTD%|sHo&F!JzMx zWjY@ReV?on4EjFVsGsbj0Qmdl;c^1}eR8y5@b}49!Qk(crwayupFBe_==h~CezOUZF5cGZZPKKcG-RfP8!QWT!W(fYi z`hAAr@2fvx2>!l$4@2|P6&q6qn#8C`rfV<4Eo-71cSb}vw}h2+am;@ z1ODC~DGBiR_9(&N@9h@B;P36@1cSe~j~5L7-hR%7q26J--fIYa z9-WNw2o_J7GtUmgj+D%qXT{NwgZyQOW7Gm?evPh6kiTs6^I;VXYDqpj_Ffc&gJ5@C(i2T z%(HDzfius4=#BE}5}Yr4MhZT4>>!w(^aGj&2f^%QT!C=r*`5x9+4esnKXc~UDWFd| zIA3-uiVA0*Jr7tp2xiX@VAYp7^XxRQ7@RMw90Zv&&t8ZE!kK4h0t;uJodqnMd3H9i zaOT-Lz`~hl=i&}12f^$`hoUm(%(L^JDkrL$K9{nWau3F8HR% znP)FUltKyDmtDjW3pre0RvZL5Twhik1UXz^RvZL5Twhik1UXz^_DZ~iO1QqPI0$mM zzN|P1a%8%!auDRubXjo_7>4HRTbm zFS`=Y)Yhgv90aqg&^_rP6fp2g#}0zoTYiHM6wW-`iC_dZa1hLPN&kT}&x(T}NAt^y zgCIxq%kqoAaOPR%AjskTvTM;g;mot*AjskTvf>~pohA-~(r4lzD1G(-I-o6&aDG|k zASm6W90aAC9zm}5Xdco0vX9{ba@+HHg!9Wjj?~UxOimWk{jm`6Cjta1>{W0fuY0($t$);z-bWtD?q9^w45FX7C});z-bWw+uP zU)L%(^kv-8jjee^^UEp+!91e*WnaUW*Y4IlI|xn<>f#`n{hcpLloKbv?AvF6d4`i; zR-F7epr2sjy|dd94o3p|30{^*KtFX{%OjwlI-%te&`+Jw^KiCPXV}NjCCa}0X(drk z0{Ufl>?!iz+1-G`duQJV7T!B6PJSHFFZ$xyR|tWjbuNk%)!pBnLoZC~%id(yDh2mU>gVf6bgcG*Hd1Zl z@s3$6Jv>3w_gj<}@w4e`RPE`@yxc1+3^jdC>S%r1n`Y`+_gQdx$Eq48^nVh(Lyyga z(lE;gPFHy*QT>a5kxWH?Oft+>89;;&*a5Sb;-lmr*oKRUj>6{?v&&~!5jC=^^3q2{ zz}@4qtMxGaS4zcSvqEQIgBGTyjMZF^@e36x^9_Y2I~V-8q$m5C#8=t!l&I8-lW5Vi+G^LE#(12tpJTz9EbtL_y&j!U#eX6uu#h zAVfjo8=?n${|f7wp&%E6x{wP|kPAV@EkwaB1j~e5h=N-P283IPF7w7l^o$E4A*l97 zjDkoAs=X1TAQFNx-adFi6huN$1ssZkNC+w-A?n~vTC4XFT@l50i9tsjhQ-Aw=!9S$ z?f^kT;LWHFd7zJY)Lof=)H4Lxwc9!e1FNSG9h>zdp zxYd5}eWBcuexfRWJtUDA)kAJSx*s-h`=EiySM_l{k-sY1kEpEb%?6@iRZ~6wo!dZU zR!ylV3RHblPh?be))R%Q_8^c|Ri;12i)ZSIB2|4Gh{~(-^$3_=mF-6qtx7fELjA9y z#1+`Vq{4?Ip=&P&bGER7D0DqqMd8uNvI5wkWDNCKX>8G$T2@bFRinpJ!T#6}0wV?a zZ$tGpFk>0vVOwA>Q%@BBNr9a_!_5c`H5@xA`pJrhNBOd*&LoQ{2i>#;btPkC3b))d@>Hs zm*zZ*ws**NTn%dr@Jxj%JvV&tBFIUn_9Y4rWf)$Kf+JSr_U-fBO1-N0Jt#5}{hB%y zC#Un}yaA(g(e%`P-V>F2?QtGX_C+-mJ``o@f&JkDXls9|9z0LD2{;^n4;C&%Yop{} zjKrel5PM$W^^WPa;r)0dbMK*jk9sG^^u{4iG$0sd8XFjfufW;b??Lp1Hv@RvC)Ag@nx@d)%zjq5+N9_dG<4ZwvD z@pi=ZK3dw-6Z%jIA33wX%!Hc^Dfxo@M?VFh{-3@P5>QgPNF3<>aA2I*o;xx9=SEDp zQOEg~BY>asabSqeh<(>1!k>;w(YFFei!)&{jM(qt`CcQx;|i!_>$`bF017FfJDjl z0dAZn*9R=)mG)@*MbAB&5LvV20D&<>w)6F?`6-0?$RNG$f)66IuZ6fucTlUTd>0MAz8M!U&qLA)SL-BhB*w|6q*>S&7WW} zB@+X`IUN3*eu_oS(QhLI27dDh+$%CM@S8^h`%Mh|rpwzv8OVLCAFDWQ?zkT2j%Ra{ z`vkPjpjh5K>9|tnlY3-tmCP9U%~Mc~VPfDnC&&)582HUofzzn*oEd(X$i&ER%E)hG zezQX^1S7w>06tV*_TF!Gy28Dii!M<7^dVxM%IBa6zH!nkDqoiZtHy2%seUUEkzR9S8-^yWk^~9rIuj=B! zZ>1+=g$Dz_Rr@|RuQW06TLZ?kI1K~8H3$_fGq-w+tM&RZ82Cdq+NBtvG4O|Sj1LU- zTzznVBJIevri{7o;wt###%{-n;Y++Ps`a|y5+v&1_tLgr=e8hGTO6(Xl#1kU;1g&B zfATz##gqJDW$BaWR|90A|9MDid#9h2{jTqSGteJ`kw|8`F?|ksW=N<%(Fm0BL8>nOv{U*{vYrSEsLT4{lLX( z0hp(SB>De^L~&jKt`8mTJ>aOX6ThzESZNYKqBIF0QJMshz|QSIpeVjh{9%sBUmEby zu+o74|Gp_7UdOKp;e*8QXa|+{Z}<1yzun(+|8{@R{oDOL_iy+2+`s+D13sEl8u0Pq zBOY%FDhqi#Jdh|Iq@C#Nd;1dw3AcdEMU6%5H}4++jLqc@ z^TvTi9Hnx6>U2BMB{8<*Q^$WhU~wwJXAh>5xixAkiQ?nNKU!7_7BUndT zXX7jcDUk_)B1nmx3JgIC#%SIOFftKPTX2m@p!DO<*%Fc9iR}7hpu~1z2T7*1+p636)CZPPPM;O5`4FwWqcMjCc^7r_dlu z!Jcdd7`YFJMYa;TA6R57ksezCM$}e-E_5rA^~h9DVLYkZx_#kv_~w`B4$9 z#v`6}`7t1jlhB`(kKv=xt(2=B0x|ex;SASfhrsd{xY$)Sm7maBGIAoWFCtdP@!<{L z1HE*Ka?Kuk<>Tw&Wwvb~Hq!e9qfrz;96y?wPs6`0gMiRl=GjIfJ##w-yv*c5ME=YN z1BuEq7dH|GGOHR9PToc6Xfnt?5<58<;&T_}9sG>X`eWm~^*>(kVxfU9eD=MZpZ@!t9r15yc$ z+ANhw^kE39EO8J943Iy2=Dj1Tx^6O*ETW3H6J%LL6>lfVvWTj+oB`ix zRlJ=bt0Jm+JHhPN22l-0M+z7pWB*%(QcjKvLP_v9Y#s+CK@LiSqAuC8V3Wlm6b+}-t z3R0s5LsgJ!6?}VyTuPlT3CIdkX9$L@Aa$l-$O=-E1VdJkI!iEQ1*s{5AuC8t6%4Py z)OmuTDoC9#7^;HQ1%ja}NKFHFDGFIZYPy_&tROW*Fk}U(3k5?~keVqNvVzoX!H^ZC zpB4;RL3$HoRuyDEM+dR0AhVYtR0WxD8A4T%*{_=}9ty1fH}hf03hY-ILRMgJX9!t= z{Vqeu3heh7LRMh!Utibs~Fk}VJmx3WHaP|p?tiVx^17rn`B^?4)ffE)CRe@737^(uNQm_kI zffJJiWCcz_Fk}TzQZQr%PPJgj3LHl;WCc!EFk}VJ2*FSlI3oo^Rp5*g3{`>CA{eRy z=Q#aPzGBD2{5lXq{ApEAqE3oEZ92X@~ z%^^50UV$}3Pr%ksP!gS8uS+Q9n!}c$DXehF4STMraLD!8#xOS=LlP7YT7yzJ8a?UV*s_Q9u+9xtYMC zaLCO97KKA@Hn1oha&v%1;gFk)JD|J*a~FLEL#%Mf&6`z0)NA@&%3aD`EM9@R`KMM8 z^;Qap+=9EXF$F>(=PsLEQaI!m0gJ*R*JDG%T#pS2b3HaB%=OriFn1;1Rz%^D>#-qW z?rPjnQ8?syKSJddnCr12VeT5-pkcL8IONoZgtbsOBN8j}wU9I9oD<0@|t+l*6VeVzzzKyN5&@<%J z?u50_Gvr>wJNoX{+V8!02I{gqVeWTNV1pKR0L;Dq8q@@E0L=Xn_Qe4(_XdiI17Pk= zJhjRJF!$E2&;W=KBKP)jPyt}{$o1ISP_PIga@$AYYls~HbK6JZ1$|j9lo0BKRtqJB zB$jElP(r9PdM%U?>Wp##%)R?|QGsC8=XSh-+7azIw;ND|5V`k(MF^4Wv9n?Bqj%zn zc3cZ3MDAm>JngTA5+e7>=W%RpSPLaY?o*5z^}$*U)49(UB-QhJ3)+O3;Ztnz$ z7U~;`v_ZT*;NJd1$;>JF6OFDS>dQKbK{~Lnu*~gu_5j5b;T0ZK#hajf4pKV|-sv{% zR~deS4<{npo*=5P89<~RCYj0#_q+8^dfNxi3Sy zrM3j5dR|$-P~|{qsD6uwh@oesQmQ`*-!6+)mUV9Z=V(DOz0$3}3zfJ_bUe;_p}F6^ z%D@Rl1NXwf6*^`Qj%dd(%wM6?zQGme*z_9JX%L3vPwTw8)M+{HG;GdyEb8jT1we}p z*oL+wbe=elRTk8ylB9LMRI-pz7N+&R8C9YL8atKh2Ec;B=@M!8 z)P39N*4wz8kp3CShC(wn4ney5Z`!q>#ffMs|BK>Bb8+wbA-dzn2N7u>Xq{?;kqhHnDf@=#Ay(G&)q;>8p6@Il?xbI20qE}Vn3H|!i zqL528LsePN9*KX@@TI{a4;#0_{1e(=dWrdBY(%ZoNfodE31xnon14c%QT`*X^Yl{T_1b7x+z0!D_}A8#N;iIt(syg;)=05!rP4Q-O5a_onhW1uDm<_c zu5^`ljM{^-rqnHePZ!(0iVOP+?nbxaM3t|v>WJ@C*g^?+?^b2Axjxx5c{DZ5`%#(3 zbg@jQD$^omipjCmumicRGBs@Q%p{xhL3(! zW^1WTmnzdPWx6zeW5EO8&&o<47kfb(wptaKCIyPgnM8G0;}%`O=e=qv`(WudP0tYZ z#a2IK2jd+!a^9d{;r@n#HUA4SE=b~Te|o&U0l26M5SWxn}z)?jvE<@~_zcjXG{##A2;&vzms)(1*9coUicJtRY_@c`NMr3J=X5@&hXCl(XN?8bW+WyME54 zSI%x|Qa4D&)1?VE(U2|-EBpfID=e8!4KMsC(@&A99nE+|3|~2$8rtG=EvuwM=r&~f z4vl%b!a-y9&!UF!;u?P{(2XkB^T@@{s4vJgvurjsT%QnA#Y~?fQ#0!OE#88Cg%z{u zAo!vU;dyemG~)YNL`)8%x;`KW{~aWs-+%c4qCsV7$UtQLxvLglrj|PWj%=~h2cpyc zg>7qG>2)sQFTAxFW+y25s zkGgUv4q1TxY5j$-*0@97Mw<>11K+N3ac@W)j$7j|th~eR_m-C(rq{T2Vd;(HEsA7| zw`h!%U2=y@4Nv|k*TKle_lQ44{e>%$>%_=`H|ccb;+xclUh^0BuW_kiugb;!KLAfT zvhiIy2Y1O|Sayd?{jMlK@HP!;_C6Y>4-h@Wf@oGd3o7-$(lh+Gt6Zbh zG8by~E$5XitWC@M7FM!;yl-uB`D!>XUwOYhyd+}4_7BC?D&V4s0l2tW1zZv_AW;%A zAW;%AAW>SsLZY;Og+yun3W;tJ!@Qm%hM)EnG2qVs?`v8RB>Zn8h75b_`5op}$z%8c0IfS5VF$d0+cX-s#An=^!SAp>Kj|X9i?mDEm4kAi`0uQhF zHPR&tJY0AHX)xf5`{r19k)7HCKM}{mi|i5%);m(B^Kr1=kt%%wJ{&n1UZhb@fcB0Y zE*P|TWVB$=-jPs|gd zuuB{auY41q;9z(apQDF37+%F*hM>JGzGVp7yJ9~>u-?&Tz<_Z%N`U*We3j3E`>x#1 z5Zrg=y9~j7SH8y(+;`=U1yHMSNW99Od>G_+V0K0}b-l^-yKOI_t2 zhTy&{KLV@(_Z{0SHyqq|>ve?Qr_b9+6nO2j(4Kl8sb6A< zK$w-P3y_>Q*_(cZ-lsqI%G2h_x%Tvj*u-9?+9+VG@e^gDgNd}$Pw+Mzq4ych`Al@PQArxokL8b)azdLk$Ugm>yhsu)L~|xUTrUKQ#8!WMxHM*2YBACe}t-K3_o6(a=1=*eXmzD%OEw!c?6$j*oWgYuq~FIo|sj$meNs!cVMii{?m&e?m`!s_{hGkYHQ z-rc?Xan8N>oOAaJ*aU6I%3nk-rd+^Rl43o(u{1$PW1s&7?`qvl_2u}69*tctM-TMA zSi^pt(Nmgme{!tyr|5#-KSuj2j`YWyeertx#Qhnhb|Vyx~>%tGwk+gNS8ha?PVA|$A3 zs*183;JCGOCNc~psEFE2+nK#S<#y~Ds)A}7;OJ^b$xH82gNtq_XQ`3f(r2nc(nsOw z5k|=gw#uaFQ8;c-kueA-LV`+Cd#QxQD;OmwB&&l|$=9{9BS$e!>qM$M24`-bzsvrA z;H)@Mma1M%=Z_&xSCHKZ#~lfYacW%ccaq(RVx2`bjd1j{bhHtkTPD*pOP2lEk>NJ) zA>9NAwHs(|6I%2f8g4?49;MV~6zgTQuNj`sq`GE)#CuG7o&eG#rioe_Wp)LpZJz+o z@KHBqsW!4(;Lvz85+eoRA@Y4^x4^@|4{1jWiXt~lSPdX?|y+rnL zzN=74j3vSzp=@S{S1}8OJ)5>4hhv8i7nV`{eK=Hm9GfFImj@~J1QzJCwE6^cv_q9A z;OJC3astJ3!$EW1eEvaMTrJ_gE~G_n7FnUfF06X8cDZ>@iRP)P<-D=3EOqKhL-@PU z9~F8~IV4yE-6-^bx6t`6r0F$ecf-?vr0i}u`e7>UMvgv2HQoHNNnd`174M5pH+_9U zab|xcsm3@@Cqsd-_mS>_<31=MhQWK^C+tHM?eTwpR`(z$+L&dOcNnDpAyQ@EGK8mu z&b{z`uA}xIl(~}%;<58D>;}s3g@gVNXlpN?(9@`{7mgbadi+GBSJG%Na@=rct#xd? zC`+|cb{}%wa80J)3;U~7(+3ZimeB`&D8e7s(vp6p>F-cUKRo>sRrVt}$x>^Unm5M# z9}It?ct0HXZ*2W2OD)VX4?_(8oArh0g@ZM0-!@6H2T2&?WS6oxUNVhf{!EF!ZlaDpJG1 z;mtgtewkzyrhRp%|LwZ-*=|(UE!z(d8urt|t`|FHw`gzj+4=>8UiMLWjR;SwcE?$s zgdQ%$*(UUGg~|_w9$tUFBJ_HBhL6c$KKJR0hTexgZ!R0T%2K8B0+x!<15AG{u9M2M zMB*LJPQ*zj<=6Oen-2-3s6+|S4Ip3S!zJi82|ZlJXP3~+q{dB9&**1{o~Ak_Wm@nm z-V}v!QJi;~&O@FT7m08g$n$|jbW9}J9%bMaFNXQ-VDLY;&|so8ItWJ>`pDfTQhD-7 zHj4Is!#*tRa01O%pIvfN*!!0mHJK}lW4*cWBKcL|(}@fm>do|U+RGX2Z}42)Y2^HB ziJaY-;&C`S(?{+aky;XZ!QVAfTaDDqBK4eD5%SZks(p4zldvb%v{FiOy>1>t*r5MV z=%FfX%6E~JrRrqAk>fOdVEe;yXY*-8WvMScVyN#3H{ECJ0!lpzPj5C?KQ`!~QGH8P z!&{S`M(V6VmkpXqqbK3GyqVA4E#rtgesD6gm-uX*OWCL3=#Bmrtv`hn_jS=YBo9+& zk7_U)eFlBxBiHwam8JeHcOxP2Y9__G-Bg2?8&p8izru5W!G5E%)JiG07<>%BHBwpr z>xkBi)bBXbl-D9<(|KSHf0E8EpX5njJNhqC3rBQc7kYTV)1my+aCDlFDDO1xNV3%9 z%gj^alwAz>nUQ^uh3;J#-rn28PQ9{jDJb-+Y5K5_+y;>f?<}^Mo)d>~2R(fnv-D-7 zX4Cc|IQnY_J#5fgAJO0tQgn$Sl^OJkkKDIX%vh$%TMO)-X2Tv7b|{Wdz3umzbynCH z#m)G#+<&hB4`YU^2;xBm&WZfqSnnBh-$nKB!HM-zy+FMfvkTA!ge{sYer9Jv64 zhM8O?c?1GHi`=X5B7t95OZiuk5!vgQ-u6=ERb<$KTNmJT8fK+nXcc6SA;Yegkp?)O z3di704}87BMf9sNtgr(gFThu5cnlupUPB_KTtj*!umMLX{~9tPnH$W+$fQcX41B&G zieEzp<&GnrGRKif75r!YIMO2r#YH+umE*{;1Ba@1k7+0`Haw11TJIwFIx=(%clients[socketId].workerData.activeIpAddress, CLIENT_BUFFER_STRING_SIZE, "%d.%d.%d.%d", ipAddressBytes[0],ipAddressBytes[1],ipAddressBytes[2],ipAddressBytes[3]); void *pReturn; - if (data->clients[socketId].workerData.threadIsAlive == 1) - { + //if (data->clients[socketId].workerData.threadIsAlive == 1) + //{ returnCode = pthread_cancel(data->clients[socketId].workerData.workerThread); - } + //} returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn); data->clients[socketId].workerData.passiveModeOn = 0; data->clients[socketId].workerData.activeModeOn = 1; @@ -526,10 +526,10 @@ int parseCommandAbor(ftpDataType * data, int socketId) if (data->clients[socketId].workerData.threadIsAlive == 1) { void *pReturn; - if (data->clients[socketId].workerData.threadIsAlive == 1) - { + //if (data->clients[socketId].workerData.threadIsAlive == 1) + //{ pthread_cancel(data->clients[socketId].workerData.workerThread); - } + //} pthread_join(data->clients[socketId].workerData.workerThread, &pReturn); returnCode = socketPrintf(data, socketId, "s", "426 ABORT\r\n"); @@ -596,7 +596,7 @@ int parseCommandList(ftpDataType * data, int socketId) setDynamicStringDataType(&data->clients[socketId].listPath, data->clients[socketId].login.absolutePath.text, data->clients[socketId].login.absolutePath.textLen); } - pthread_mutex_lock(&data->clients[socketId].workerData.conditionMutex); + pthread_mutex_trylock(&data->clients[socketId].workerData.conditionMutex); memset(data->clients[socketId].workerData.theCommandReceived, 0, CLIENT_COMMAND_STRING_SIZE); strcpy(data->clients[socketId].workerData.theCommandReceived, data->clients[socketId].theCommandReceived); data->clients[socketId].workerData.commandReceived = 1; @@ -627,7 +627,7 @@ int parseCommandNlst(ftpDataType * data, int socketId) setDynamicStringDataType(&data->clients[socketId].nlistPath, data->clients[socketId].login.absolutePath.text, data->clients[socketId].login.absolutePath.textLen); } - pthread_mutex_lock(&data->clients[socketId].workerData.conditionMutex); + pthread_mutex_trylock(&data->clients[socketId].workerData.conditionMutex); memset(data->clients[socketId].workerData.theCommandReceived, 0, CLIENT_COMMAND_STRING_SIZE); strcpy(data->clients[socketId].workerData.theCommandReceived, data->clients[socketId].theCommandReceived); data->clients[socketId].workerData.commandReceived = 1; @@ -652,7 +652,7 @@ int parseCommandRetr(ftpDataType * data, int socketId) if (isSafePath == 1 && FILE_IsFile(data->clients[socketId].fileToRetr.text) == 1) { - pthread_mutex_lock(&data->clients[socketId].workerData.conditionMutex); + pthread_mutex_trylock(&data->clients[socketId].workerData.conditionMutex); memset(data->clients[socketId].workerData.theCommandReceived, 0, CLIENT_COMMAND_STRING_SIZE); strcpy(data->clients[socketId].workerData.theCommandReceived, data->clients[socketId].theCommandReceived); data->clients[socketId].workerData.commandReceived = 1; @@ -682,7 +682,7 @@ int parseCommandStor(ftpDataType * data, int socketId) if (isSafePath == 1) { - pthread_mutex_lock(&data->clients[socketId].workerData.conditionMutex); + pthread_mutex_trylock(&data->clients[socketId].workerData.conditionMutex); memset(data->clients[socketId].workerData.theCommandReceived, 0, CLIENT_COMMAND_STRING_SIZE); strcpy(data->clients[socketId].workerData.theCommandReceived, data->clients[socketId].theCommandReceived); data->clients[socketId].workerData.commandReceived = 1; diff --git a/ftpData.c b/ftpData.c index e8d40e4..9a2775b 100644 --- a/ftpData.c +++ b/ftpData.c @@ -593,10 +593,10 @@ void resetWorkerData(ftpDataType *data, int clientId, int isInitialization) data->clients[clientId].workerData.theStorFile = NULL; } - #ifdef OPENSSL_ENABLED - SSL_free(data->clients[clientId].workerData.serverSsl); - SSL_free(data->clients[clientId].workerData.clientSsl); - #endif + #ifdef OPENSSL_ENABLED + SSL_free(data->clients[clientId].workerData.serverSsl); + SSL_free(data->clients[clientId].workerData.clientSsl); + #endif } else { @@ -627,10 +627,11 @@ void resetWorkerData(ftpDataType *data, int clientId, int isInitialization) data->clients[clientId].workerData.directoryInfo.Destroy(&data->clients[clientId].workerData.directoryInfo, deleteListDataInfoVector); free(lastToDestroy); } - #ifdef OPENSSL_ENABLED - data->clients[clientId].workerData.serverSsl = SSL_new(data->serverCtx); - data->clients[clientId].workerData.clientSsl = SSL_new(data->clientCtx); - #endif + + #ifdef OPENSSL_ENABLED + data->clients[clientId].workerData.serverSsl = SSL_new(data->serverCtx); + data->clients[clientId].workerData.clientSsl = SSL_new(data->clientCtx); + #endif } void resetClientData(ftpDataType *data, int clientId, int isInitialization) @@ -647,6 +648,7 @@ void resetClientData(ftpDataType *data, int clientId, int isInitialization) else { void *pReturn = NULL; + pthread_cancel(data->clients[clientId].workerData.workerThread); pthread_join(data->clients[clientId].workerData.workerThread, &pReturn); } @@ -654,7 +656,7 @@ void resetClientData(ftpDataType *data, int clientId, int isInitialization) #ifdef OPENSSL_ENABLED SSL_free(data->clients[clientId].ssl); - //SSL_free(data->clients[clientId].workerData.ssl); + SSL_free(data->clients[clientId].workerData.ssl); #endif } diff --git a/ftpData.h b/ftpData.h index 284fd0b..d637850 100644 --- a/ftpData.h +++ b/ftpData.h @@ -119,10 +119,10 @@ struct ipData struct workerData { - #ifdef OPENSSL_ENABLED - SSL *serverSsl; - SSL *clientSsl; - #endif + #ifdef OPENSSL_ENABLED + SSL *serverSsl; + SSL *clientSsl; + #endif int threadIsAlive; int connectionPort; diff --git a/ftpServer.c b/ftpServer.c index d40c729..9251396 100644 --- a/ftpServer.c +++ b/ftpServer.c @@ -570,7 +570,7 @@ void runFtpServer(void) //Debug print errors if (ftpData.clients[processingSock].bufferIndex < 0) { - ftpData.clients[processingSock].closeTheClient = 1; + //ftpData.clients[processingSock].closeTheClient = 1; printf("\n1 Errno = %d", errno); perror("1 Error: "); continue; diff --git a/library/connection.c b/library/connection.c index 165b12d..dbc3984 100644 --- a/library/connection.c +++ b/library/connection.c @@ -460,13 +460,13 @@ void closeClient(ftpDataType * ftpData, int processingSocket) { printf("\nQUIT FLAG SET!\n"); - if (ftpData->clients[processingSocket].workerData.threadIsAlive == 1) - { + // if (ftpData->clients[processingSocket].workerData.threadIsAlive == 1) + // { void *pReturn; pthread_cancel(ftpData->clients[processingSocket].workerData.workerThread); pthread_join(ftpData->clients[processingSocket].workerData.workerThread, &pReturn); printf("\nQuit command received the Pasv Thread has been cancelled."); - } + // } FD_CLR(ftpData->clients[processingSocket].socketDescriptor, &ftpData->connectionData.rsetAll); FD_CLR(ftpData->clients[processingSocket].socketDescriptor, &ftpData->connectionData.wsetAll); diff --git a/nbproject/Makefile-Debug.mk b/nbproject/Makefile-Debug.mk deleted file mode 100644 index 1fc9129..0000000 --- a/nbproject/Makefile-Debug.mk +++ /dev/null @@ -1,149 +0,0 @@ -# -# Generated Makefile - do not edit! -# -# Edit the Makefile in the project folder instead (../Makefile). Each target -# has a -pre and a -post target defined where you can add customized code. -# -# This makefile implements configuration specific macros and targets. - - -# Environment -MKDIR=mkdir -CP=cp -GREP=grep -NM=nm -CCADMIN=CCadmin -RANLIB=ranlib -CC=gcc -CCC=g++ -CXX=g++ -FC=gfortran -AS=as - -# Macros -CND_PLATFORM=GNU-Linux -CND_DLIB_EXT=so -CND_CONF=Debug -CND_DISTDIR=dist -CND_BUILDDIR=build - -# Include project Makefile -include Makefile - -# Object Directory -OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} - -# Object Files -OBJECTFILES= \ - ${OBJECTDIR}/ftpCommandElaborate.o \ - ${OBJECTDIR}/ftpData.o \ - ${OBJECTDIR}/ftpServer.o \ - ${OBJECTDIR}/library/configRead.o \ - ${OBJECTDIR}/library/connection.o \ - ${OBJECTDIR}/library/daemon.o \ - ${OBJECTDIR}/library/dynamicVectors.o \ - ${OBJECTDIR}/library/fileManagement.o \ - ${OBJECTDIR}/library/logFunctions.o \ - ${OBJECTDIR}/library/openSsl.o \ - ${OBJECTDIR}/library/signals.o \ - ${OBJECTDIR}/uFTP.o - - -# C Compiler Flags -CFLAGS= - -# CC Compiler Flags -CCFLAGS= -CXXFLAGS= - -# Fortran Compiler Flags -FFLAGS= - -# Assembler Flags -ASFLAGS= - -# Link Libraries and Options -LDLIBSOPTIONS=-lpthread `pkg-config --libs libcrypto` `pkg-config --libs libssl` `pkg-config --libs openssl` - -# Build Targets -.build-conf: ${BUILD_SUBPROJECTS} - "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/uftp - -${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/uftp: ${OBJECTFILES} - ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} - gcc -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/uftp ${OBJECTFILES} ${LDLIBSOPTIONS} - -${OBJECTDIR}/ftpCommandElaborate.o: ftpCommandElaborate.c - ${MKDIR} -p ${OBJECTDIR} - ${RM} "$@.d" - $(COMPILE.c) -g -Wall -D_LARGE_FILE_SUPPORT_ENABLED -Ilibrary -include library/dynamicVectors.h -include library/fileManagement.h `pkg-config --cflags libcrypto` `pkg-config --cflags libssl` `pkg-config --cflags openssl` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/ftpCommandElaborate.o ftpCommandElaborate.c - -${OBJECTDIR}/ftpData.o: ftpData.c - ${MKDIR} -p ${OBJECTDIR} - ${RM} "$@.d" - $(COMPILE.c) -g -Wall -D_LARGE_FILE_SUPPORT_ENABLED -Ilibrary -include library/dynamicVectors.h -include library/fileManagement.h `pkg-config --cflags libcrypto` `pkg-config --cflags libssl` `pkg-config --cflags openssl` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/ftpData.o ftpData.c - -${OBJECTDIR}/ftpServer.o: ftpServer.c - ${MKDIR} -p ${OBJECTDIR} - ${RM} "$@.d" - $(COMPILE.c) -g -Wall -D_LARGE_FILE_SUPPORT_ENABLED -Ilibrary -include library/dynamicVectors.h -include library/fileManagement.h `pkg-config --cflags libcrypto` `pkg-config --cflags libssl` `pkg-config --cflags openssl` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/ftpServer.o ftpServer.c - -${OBJECTDIR}/library/configRead.o: library/configRead.c - ${MKDIR} -p ${OBJECTDIR}/library - ${RM} "$@.d" - $(COMPILE.c) -g -Wall -D_LARGE_FILE_SUPPORT_ENABLED -Ilibrary -include library/dynamicVectors.h -include library/fileManagement.h `pkg-config --cflags libcrypto` `pkg-config --cflags libssl` `pkg-config --cflags openssl` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/library/configRead.o library/configRead.c - -${OBJECTDIR}/library/connection.o: library/connection.c - ${MKDIR} -p ${OBJECTDIR}/library - ${RM} "$@.d" - $(COMPILE.c) -g -Wall -D_LARGE_FILE_SUPPORT_ENABLED -Ilibrary -include library/dynamicVectors.h -include library/fileManagement.h `pkg-config --cflags libcrypto` `pkg-config --cflags libssl` `pkg-config --cflags openssl` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/library/connection.o library/connection.c - -${OBJECTDIR}/library/daemon.o: library/daemon.c - ${MKDIR} -p ${OBJECTDIR}/library - ${RM} "$@.d" - $(COMPILE.c) -g -Wall -D_LARGE_FILE_SUPPORT_ENABLED -Ilibrary -include library/dynamicVectors.h -include library/fileManagement.h `pkg-config --cflags libcrypto` `pkg-config --cflags libssl` `pkg-config --cflags openssl` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/library/daemon.o library/daemon.c - -${OBJECTDIR}/library/dynamicVectors.o: library/dynamicVectors.c - ${MKDIR} -p ${OBJECTDIR}/library - ${RM} "$@.d" - $(COMPILE.c) -g -Wall -D_LARGE_FILE_SUPPORT_ENABLED -Ilibrary -include library/dynamicVectors.h -include library/fileManagement.h `pkg-config --cflags libcrypto` `pkg-config --cflags libssl` `pkg-config --cflags openssl` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/library/dynamicVectors.o library/dynamicVectors.c - -${OBJECTDIR}/library/fileManagement.o: library/fileManagement.c - ${MKDIR} -p ${OBJECTDIR}/library - ${RM} "$@.d" - $(COMPILE.c) -g -Wall -D_LARGE_FILE_SUPPORT_ENABLED -Ilibrary -include library/dynamicVectors.h -include library/fileManagement.h `pkg-config --cflags libcrypto` `pkg-config --cflags libssl` `pkg-config --cflags openssl` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/library/fileManagement.o library/fileManagement.c - -${OBJECTDIR}/library/logFunctions.o: library/logFunctions.c - ${MKDIR} -p ${OBJECTDIR}/library - ${RM} "$@.d" - $(COMPILE.c) -g -Wall -D_LARGE_FILE_SUPPORT_ENABLED -Ilibrary -include library/dynamicVectors.h -include library/fileManagement.h `pkg-config --cflags libcrypto` `pkg-config --cflags libssl` `pkg-config --cflags openssl` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/library/logFunctions.o library/logFunctions.c - -${OBJECTDIR}/library/openSsl.o: library/openSsl.c - ${MKDIR} -p ${OBJECTDIR}/library - ${RM} "$@.d" - $(COMPILE.c) -g -Wall -D_LARGE_FILE_SUPPORT_ENABLED -Ilibrary -include library/dynamicVectors.h -include library/fileManagement.h `pkg-config --cflags libcrypto` `pkg-config --cflags libssl` `pkg-config --cflags openssl` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/library/openSsl.o library/openSsl.c - -${OBJECTDIR}/library/signals.o: library/signals.c - ${MKDIR} -p ${OBJECTDIR}/library - ${RM} "$@.d" - $(COMPILE.c) -g -Wall -D_LARGE_FILE_SUPPORT_ENABLED -Ilibrary -include library/dynamicVectors.h -include library/fileManagement.h `pkg-config --cflags libcrypto` `pkg-config --cflags libssl` `pkg-config --cflags openssl` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/library/signals.o library/signals.c - -${OBJECTDIR}/uFTP.o: uFTP.c - ${MKDIR} -p ${OBJECTDIR} - ${RM} "$@.d" - $(COMPILE.c) -g -Wall -D_LARGE_FILE_SUPPORT_ENABLED -Ilibrary -include library/dynamicVectors.h -include library/fileManagement.h `pkg-config --cflags libcrypto` `pkg-config --cflags libssl` `pkg-config --cflags openssl` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/uFTP.o uFTP.c - -# Subprojects -.build-subprojects: - -# Clean Targets -.clean-conf: ${CLEAN_SUBPROJECTS} - ${RM} -r ${CND_BUILDDIR}/${CND_CONF} - -# Subprojects -.clean-subprojects: - -# Enable dependency checking -.dep.inc: .depcheck-impl - -include .dep.inc diff --git a/nbproject/Makefile-Release.mk b/nbproject/Makefile-Release.mk deleted file mode 100644 index 7da7d52..0000000 --- a/nbproject/Makefile-Release.mk +++ /dev/null @@ -1,149 +0,0 @@ -# -# Generated Makefile - do not edit! -# -# Edit the Makefile in the project folder instead (../Makefile). Each target -# has a -pre and a -post target defined where you can add customized code. -# -# This makefile implements configuration specific macros and targets. - - -# Environment -MKDIR=mkdir -CP=cp -GREP=grep -NM=nm -CCADMIN=CCadmin -RANLIB=ranlib -CC=gcc -CCC=g++ -CXX=g++ -FC=gfortran -AS=as - -# Macros -CND_PLATFORM=GNU-Linux -CND_DLIB_EXT=so -CND_CONF=Release -CND_DISTDIR=dist -CND_BUILDDIR=build - -# Include project Makefile -include Makefile - -# Object Directory -OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} - -# Object Files -OBJECTFILES= \ - ${OBJECTDIR}/ftpCommandElaborate.o \ - ${OBJECTDIR}/ftpData.o \ - ${OBJECTDIR}/ftpServer.o \ - ${OBJECTDIR}/library/configRead.o \ - ${OBJECTDIR}/library/connection.o \ - ${OBJECTDIR}/library/daemon.o \ - ${OBJECTDIR}/library/dynamicVectors.o \ - ${OBJECTDIR}/library/fileManagement.o \ - ${OBJECTDIR}/library/logFunctions.o \ - ${OBJECTDIR}/library/openSsl.o \ - ${OBJECTDIR}/library/signals.o \ - ${OBJECTDIR}/uFTP.o - - -# C Compiler Flags -CFLAGS=-pthread -ssl -crypto - -# CC Compiler Flags -CCFLAGS= -CXXFLAGS= - -# Fortran Compiler Flags -FFLAGS= - -# Assembler Flags -ASFLAGS= - -# Link Libraries and Options -LDLIBSOPTIONS= - -# Build Targets -.build-conf: ${BUILD_SUBPROJECTS} - "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/uftp - -${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/uftp: ${OBJECTFILES} - ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} - ${LINK.c} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/uftp ${OBJECTFILES} ${LDLIBSOPTIONS} - -${OBJECTDIR}/ftpCommandElaborate.o: ftpCommandElaborate.c - ${MKDIR} -p ${OBJECTDIR} - ${RM} "$@.d" - $(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/ftpCommandElaborate.o ftpCommandElaborate.c - -${OBJECTDIR}/ftpData.o: ftpData.c - ${MKDIR} -p ${OBJECTDIR} - ${RM} "$@.d" - $(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/ftpData.o ftpData.c - -${OBJECTDIR}/ftpServer.o: ftpServer.c - ${MKDIR} -p ${OBJECTDIR} - ${RM} "$@.d" - $(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/ftpServer.o ftpServer.c - -${OBJECTDIR}/library/configRead.o: library/configRead.c - ${MKDIR} -p ${OBJECTDIR}/library - ${RM} "$@.d" - $(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/library/configRead.o library/configRead.c - -${OBJECTDIR}/library/connection.o: library/connection.c - ${MKDIR} -p ${OBJECTDIR}/library - ${RM} "$@.d" - $(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/library/connection.o library/connection.c - -${OBJECTDIR}/library/daemon.o: library/daemon.c - ${MKDIR} -p ${OBJECTDIR}/library - ${RM} "$@.d" - $(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/library/daemon.o library/daemon.c - -${OBJECTDIR}/library/dynamicVectors.o: library/dynamicVectors.c - ${MKDIR} -p ${OBJECTDIR}/library - ${RM} "$@.d" - $(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/library/dynamicVectors.o library/dynamicVectors.c - -${OBJECTDIR}/library/fileManagement.o: library/fileManagement.c - ${MKDIR} -p ${OBJECTDIR}/library - ${RM} "$@.d" - $(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/library/fileManagement.o library/fileManagement.c - -${OBJECTDIR}/library/logFunctions.o: library/logFunctions.c - ${MKDIR} -p ${OBJECTDIR}/library - ${RM} "$@.d" - $(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/library/logFunctions.o library/logFunctions.c - -${OBJECTDIR}/library/openSsl.o: library/openSsl.c - ${MKDIR} -p ${OBJECTDIR}/library - ${RM} "$@.d" - $(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/library/openSsl.o library/openSsl.c - -${OBJECTDIR}/library/signals.o: library/signals.c - ${MKDIR} -p ${OBJECTDIR}/library - ${RM} "$@.d" - $(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/library/signals.o library/signals.c - -${OBJECTDIR}/uFTP.o: uFTP.c - ${MKDIR} -p ${OBJECTDIR} - ${RM} "$@.d" - $(COMPILE.c) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/uFTP.o uFTP.c - -# Subprojects -.build-subprojects: - -# Clean Targets -.clean-conf: ${CLEAN_SUBPROJECTS} - ${RM} -r ${CND_BUILDDIR}/${CND_CONF} - -# Subprojects -.clean-subprojects: - -# Enable dependency checking -.dep.inc: .depcheck-impl - -include .dep.inc diff --git a/nbproject/Makefile-impl.mk b/nbproject/Makefile-impl.mk deleted file mode 100644 index a655098..0000000 --- a/nbproject/Makefile-impl.mk +++ /dev/null @@ -1,133 +0,0 @@ -# -# Generated Makefile - do not edit! -# -# Edit the Makefile in the project folder instead (../Makefile). Each target -# has a pre- and a post- target defined where you can add customization code. -# -# This makefile implements macros and targets common to all configurations. -# -# NOCDDL - - -# Building and Cleaning subprojects are done by default, but can be controlled with the SUB -# macro. If SUB=no, subprojects will not be built or cleaned. The following macro -# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf -# and .clean-reqprojects-conf unless SUB has the value 'no' -SUB_no=NO -SUBPROJECTS=${SUB_${SUB}} -BUILD_SUBPROJECTS_=.build-subprojects -BUILD_SUBPROJECTS_NO= -BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} -CLEAN_SUBPROJECTS_=.clean-subprojects -CLEAN_SUBPROJECTS_NO= -CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} - - -# Project Name -PROJECTNAME=uFTP - -# Active Configuration -DEFAULTCONF=Debug -CONF=${DEFAULTCONF} - -# All Configurations -ALLCONFS=Debug Release - - -# build -.build-impl: .build-pre .validate-impl .depcheck-impl - @#echo "=> Running $@... Configuration=$(CONF)" - "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf - - -# clean -.clean-impl: .clean-pre .validate-impl .depcheck-impl - @#echo "=> Running $@... Configuration=$(CONF)" - "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf - - -# clobber -.clobber-impl: .clobber-pre .depcheck-impl - @#echo "=> Running $@..." - for CONF in ${ALLCONFS}; \ - do \ - "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf; \ - done - -# all -.all-impl: .all-pre .depcheck-impl - @#echo "=> Running $@..." - for CONF in ${ALLCONFS}; \ - do \ - "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf; \ - done - -# build tests -.build-tests-impl: .build-impl .build-tests-pre - @#echo "=> Running $@... Configuration=$(CONF)" - "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-tests-conf - -# run tests -.test-impl: .build-tests-impl .test-pre - @#echo "=> Running $@... Configuration=$(CONF)" - "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .test-conf - -# dependency checking support -.depcheck-impl: - @echo "# This code depends on make tool being used" >.dep.inc - @if [ -n "${MAKE_VERSION}" ]; then \ - echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES} \$${TESTOBJECTFILES}))" >>.dep.inc; \ - echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ - echo "include \$${DEPFILES}" >>.dep.inc; \ - echo "endif" >>.dep.inc; \ - else \ - echo ".KEEP_STATE:" >>.dep.inc; \ - echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ - fi - -# configuration validation -.validate-impl: - @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ - then \ - echo ""; \ - echo "Error: can not find the makefile for configuration '${CONF}' in project ${PROJECTNAME}"; \ - echo "See 'make help' for details."; \ - echo "Current directory: " `pwd`; \ - echo ""; \ - fi - @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ - then \ - exit 1; \ - fi - - -# help -.help-impl: .help-pre - @echo "This makefile supports the following configurations:" - @echo " ${ALLCONFS}" - @echo "" - @echo "and the following targets:" - @echo " build (default target)" - @echo " clean" - @echo " clobber" - @echo " all" - @echo " help" - @echo "" - @echo "Makefile Usage:" - @echo " make [CONF=] [SUB=no] build" - @echo " make [CONF=] [SUB=no] clean" - @echo " make [SUB=no] clobber" - @echo " make [SUB=no] all" - @echo " make help" - @echo "" - @echo "Target 'build' will build a specific configuration and, unless 'SUB=no'," - @echo " also build subprojects." - @echo "Target 'clean' will clean a specific configuration and, unless 'SUB=no'," - @echo " also clean subprojects." - @echo "Target 'clobber' will remove all built files from all configurations and," - @echo " unless 'SUB=no', also from subprojects." - @echo "Target 'all' will will build all configurations and, unless 'SUB=no'," - @echo " also build subprojects." - @echo "Target 'help' prints this message." - @echo "" - diff --git a/nbproject/Makefile-variables.mk b/nbproject/Makefile-variables.mk deleted file mode 100644 index 558a2b7..0000000 --- a/nbproject/Makefile-variables.mk +++ /dev/null @@ -1,35 +0,0 @@ -# -# Generated - do not edit! -# -# NOCDDL -# -CND_BASEDIR=`pwd` -CND_BUILDDIR=build -CND_DISTDIR=dist -# Debug configuration -CND_PLATFORM_Debug=GNU-Linux -CND_ARTIFACT_DIR_Debug=dist/Debug/GNU-Linux -CND_ARTIFACT_NAME_Debug=uftp -CND_ARTIFACT_PATH_Debug=dist/Debug/GNU-Linux/uftp -CND_PACKAGE_DIR_Debug=dist/Debug/GNU-Linux/package -CND_PACKAGE_NAME_Debug=uftp.tar -CND_PACKAGE_PATH_Debug=dist/Debug/GNU-Linux/package/uftp.tar -# Release configuration -CND_PLATFORM_Release=GNU-Linux -CND_ARTIFACT_DIR_Release=dist/Release/GNU-Linux -CND_ARTIFACT_NAME_Release=uftp -CND_ARTIFACT_PATH_Release=dist/Release/GNU-Linux/uftp -CND_PACKAGE_DIR_Release=dist/Release/GNU-Linux/package -CND_PACKAGE_NAME_Release=uftp.tar -CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux/package/uftp.tar -# -# include compiler specific variables -# -# dmake command -ROOT:sh = test -f nbproject/private/Makefile-variables.mk || \ - (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk) -# -# gmake command -.PHONY: $(shell test -f nbproject/private/Makefile-variables.mk || (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk)) -# -include nbproject/private/Makefile-variables.mk diff --git a/nbproject/Package-Debug.bash b/nbproject/Package-Debug.bash deleted file mode 100644 index cf4c7d2..0000000 --- a/nbproject/Package-Debug.bash +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash -x - -# -# Generated - do not edit! -# - -# Macros -TOP=`pwd` -CND_PLATFORM=GNU-Linux -CND_CONF=Debug -CND_DISTDIR=dist -CND_BUILDDIR=build -CND_DLIB_EXT=so -NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging -TMPDIRNAME=tmp-packaging -OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/uftp -OUTPUT_BASENAME=uftp -PACKAGE_TOP_DIR=uftp/ - -# Functions -function checkReturnCode -{ - rc=$? - if [ $rc != 0 ] - then - exit $rc - fi -} -function makeDirectory -# $1 directory path -# $2 permission (optional) -{ - mkdir -p "$1" - checkReturnCode - if [ "$2" != "" ] - then - chmod $2 "$1" - checkReturnCode - fi -} -function copyFileToTmpDir -# $1 from-file path -# $2 to-file path -# $3 permission -{ - cp "$1" "$2" - checkReturnCode - if [ "$3" != "" ] - then - chmod $3 "$2" - checkReturnCode - fi -} - -# Setup -cd "${TOP}" -mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package -rm -rf ${NBTMPDIR} -mkdir -p ${NBTMPDIR} - -# Copy files and create directories and links -cd "${TOP}" -makeDirectory "${NBTMPDIR}/uftp/bin" -copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 - - -# Generate tar file -cd "${TOP}" -rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/uftp.tar -cd ${NBTMPDIR} -tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/uftp.tar * -checkReturnCode - -# Cleanup -cd "${TOP}" -rm -rf ${NBTMPDIR} diff --git a/nbproject/Package-Release.bash b/nbproject/Package-Release.bash deleted file mode 100644 index 8642e54..0000000 --- a/nbproject/Package-Release.bash +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash -x - -# -# Generated - do not edit! -# - -# Macros -TOP=`pwd` -CND_PLATFORM=GNU-Linux -CND_CONF=Release -CND_DISTDIR=dist -CND_BUILDDIR=build -CND_DLIB_EXT=so -NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging -TMPDIRNAME=tmp-packaging -OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/uftp -OUTPUT_BASENAME=uftp -PACKAGE_TOP_DIR=uftp/ - -# Functions -function checkReturnCode -{ - rc=$? - if [ $rc != 0 ] - then - exit $rc - fi -} -function makeDirectory -# $1 directory path -# $2 permission (optional) -{ - mkdir -p "$1" - checkReturnCode - if [ "$2" != "" ] - then - chmod $2 "$1" - checkReturnCode - fi -} -function copyFileToTmpDir -# $1 from-file path -# $2 to-file path -# $3 permission -{ - cp "$1" "$2" - checkReturnCode - if [ "$3" != "" ] - then - chmod $3 "$2" - checkReturnCode - fi -} - -# Setup -cd "${TOP}" -mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package -rm -rf ${NBTMPDIR} -mkdir -p ${NBTMPDIR} - -# Copy files and create directories and links -cd "${TOP}" -makeDirectory "${NBTMPDIR}/uftp/bin" -copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 - - -# Generate tar file -cd "${TOP}" -rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/uftp.tar -cd ${NBTMPDIR} -tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/uftp.tar * -checkReturnCode - -# Cleanup -cd "${TOP}" -rm -rf ${NBTMPDIR} diff --git a/nbproject/configurations.xml b/nbproject/configurations.xml deleted file mode 100644 index 948d338..0000000 --- a/nbproject/configurations.xml +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - library/configRead.h - library/connection.h - library/dynamicVectors.h - library/fileManagement.h - library/logFunctions.h - library/openSsl.h - library/signals.h - - library/daemon.h - ftpCommandsElaborate.h - ftpData.h - ftpServer.h - ftpSpecs.h - - - README.md - - - - library/configRead.c - library/connection.c - library/daemon.c - library/dynamicVectors.c - library/fileManagement.c - library/logFunctions.c - library/openSsl.c - library/signals.c - - MakeFileGeneric - ftpCommandElaborate.c - ftpData.c - ftpServer.c - todo.txt - uFTP.c - uftpd.cfg - - - - - MakeFileGeneric - Makefile - - - - library - - Makefile - - - - GNU|GNU - true - false - - - - gcc - - library - - - library/dynamicVectors.h - library/fileManagement.h - - - _LARGE_FILE_SUPPORT_ENABLED - - 2 - - - gcc - - PosixThreads - `pkg-config --libs libcrypto` - `pkg-config --libs libssl` - `pkg-config --libs openssl` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - default - true - false - - - - 5 - -pthread -ssl -crypto - - - 5 - - - 5 - - - 5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/nbproject/private/Makefile-variables.mk b/nbproject/private/Makefile-variables.mk deleted file mode 100644 index a64183e..0000000 --- a/nbproject/private/Makefile-variables.mk +++ /dev/null @@ -1,7 +0,0 @@ -# -# Generated - do not edit! -# -# NOCDDL -# -# Debug configuration -# Release configuration diff --git a/nbproject/private/c_standard_headers_indexer.c b/nbproject/private/c_standard_headers_indexer.c deleted file mode 100644 index c2548d2..0000000 --- a/nbproject/private/c_standard_headers_indexer.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. - * - * Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. - * - * Oracle and Java are registered trademarks of Oracle and/or its affiliates. - * Other names may be trademarks of their respective owners. - * - * The contents of this file are subject to the terms of either the GNU - * General Public License Version 2 only ("GPL") or the Common - * Development and Distribution License("CDDL") (collectively, the - * "License"). You may not use this file except in compliance with the - * License. You can obtain a copy of the License at - * http://www.netbeans.org/cddl-gplv2.html - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the - * specific language governing permissions and limitations under the - * License. When distributing the software, include this License Header - * Notice in each file and include the License file at - * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the GPL Version 2 section of the License file that - * accompanied this code. If applicable, add the following below the - * License Header, with the fields enclosed by brackets [] replaced by - * your own identifying information: - * "Portions Copyrighted [year] [name of copyright owner]" - * - * If you wish your version of this file to be governed by only the CDDL - * or only the GPL Version 2, indicate your decision by adding - * "[Contributor] elects to include this software in this distribution - * under the [CDDL or GPL Version 2] license." If you do not indicate a - * single choice of license, a recipient has the option to distribute - * your version of this file under either the CDDL, the GPL Version 2 or - * to extend the choice of license to its licensees as provided above. - * However, if you add GPL Version 2 code and therefore, elected the GPL - * Version 2 license, then the option applies only if the new code is - * made subject to such option by the copyright holder. - * - * Contributor(s): - */ - -// List of standard headers was taken in http://en.cppreference.com/w/c/header - -#include // Conditionally compiled macro that compares its argument to zero -#include // Functions to determine the type contained in character data -#include // Macros reporting error conditions -#include // Limits of float types -#include // Sizes of basic types -#include // Localization utilities -#include // Common mathematics functions -#include // Nonlocal jumps -#include // Signal handling -#include // Variable arguments -#include // Common macro definitions -#include // Input/output -#include // String handling -#include // General utilities: memory management, program utilities, string conversions, random numbers -#include // Time/date utilities -#include // (since C95) Alternative operator spellings -#include // (since C95) Extended multibyte and wide character utilities -#include // (since C95) Wide character classification and mapping utilities -#ifdef _STDC_C99 -#include // (since C99) Complex number arithmetic -#include // (since C99) Floating-point environment -#include // (since C99) Format conversion of integer types -#include // (since C99) Boolean type -#include // (since C99) Fixed-width integer types -#include // (since C99) Type-generic math (macros wrapping math.h and complex.h) -#endif -#ifdef _STDC_C11 -#include // (since C11) alignas and alignof convenience macros -#include // (since C11) Atomic types -#include // (since C11) noreturn convenience macros -#include // (since C11) Thread library -#include // (since C11) UTF-16 and UTF-32 character utilities -#endif diff --git a/nbproject/private/configurations.xml b/nbproject/private/configurations.xml deleted file mode 100644 index 641e381..0000000 --- a/nbproject/private/configurations.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - Makefile - - - - localhost - 2 - - - - - - - - - - - - - - - gdb - - - - sudo "${OUTPUT_PATH}" - "${OUTPUT_PATH}" - sudo "${OUTPUT_PATH}" - - sudo "${OUTPUT_PATH}" - - true - 1 - 0 - 0 - - - - - - - localhost - 2 - - - - - - - - - - - - - - - gdb - - - - "${OUTPUT_PATH}" - - "${OUTPUT_PATH}" - - true - 0 - 0 - - - - - - diff --git a/nbproject/private/cpp_standard_headers_indexer.cpp b/nbproject/private/cpp_standard_headers_indexer.cpp deleted file mode 100644 index 04f6fa6..0000000 --- a/nbproject/private/cpp_standard_headers_indexer.cpp +++ /dev/null @@ -1,135 +0,0 @@ -/* - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. - * - * Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. - * - * Oracle and Java are registered trademarks of Oracle and/or its affiliates. - * Other names may be trademarks of their respective owners. - * - * The contents of this file are subject to the terms of either the GNU - * General Public License Version 2 only ("GPL") or the Common - * Development and Distribution License("CDDL") (collectively, the - * "License"). You may not use this file except in compliance with the - * License. You can obtain a copy of the License at - * http://www.netbeans.org/cddl-gplv2.html - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the - * specific language governing permissions and limitations under the - * License. When distributing the software, include this License Header - * Notice in each file and include the License file at - * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the GPL Version 2 section of the License file that - * accompanied this code. If applicable, add the following below the - * License Header, with the fields enclosed by brackets [] replaced by - * your own identifying information: - * "Portions Copyrighted [year] [name of copyright owner]" - * - * If you wish your version of this file to be governed by only the CDDL - * or only the GPL Version 2, indicate your decision by adding - * "[Contributor] elects to include this software in this distribution - * under the [CDDL or GPL Version 2] license." If you do not indicate a - * single choice of license, a recipient has the option to distribute - * your version of this file under either the CDDL, the GPL Version 2 or - * to extend the choice of license to its licensees as provided above. - * However, if you add GPL Version 2 code and therefore, elected the GPL - * Version 2 license, then the option applies only if the new code is - * made subject to such option by the copyright holder. - * - * Contributor(s): - */ - -// List of standard headers was taken in http://en.cppreference.com/w/cpp/header - -#include // General purpose utilities: program control, dynamic memory allocation, random numbers, sort and search -#include // Functions and macro constants for signal management -#include // Macro (and function) that saves (and jumps) to an execution context -#include // Handling of variable length argument lists -#include // Runtime type information utilities -#include // std::bitset class template -#include // Function objects, designed for use with the standard algorithms -#include // Various utility components -#include // C-style time/date utilites -#include // typedefs for types such as size_t, NULL and others -#include // Low-level memory management utilities -#include // Higher level memory management utilities -#include // limits of integral types -#include // limits of float types -#include // standardized way to query properties of arithmetic types -#include // Exception handling utilities -#include // Standard exception objects -#include // Conditionally compiled macro that compares its argument to zero -#include // Macro containing the last error number -#include // functions to determine the type contained in character data -#include // functions for determining the type of wide character data -#include // various narrow character string handling functions -#include // various wide and multibyte string handling functions -#include // std::basic_string class template -#include // std::vector container -#include // std::deque container -#include // std::list container -#include // std::set and std::multiset associative containers -#include // std::map and std::multimap associative containers -#include // std::stack container adaptor -#include // std::queue and std::priority_queue container adaptors -#include // Algorithms that operate on containers -#include // Container iterators -#include // Common mathematics functions -#include // Complex number type -#include // Class for representing and manipulating arrays of values -#include // Numeric operations on values in containers -#include // forward declarations of all classes in the input/output library -#include // std::ios_base class, std::basic_ios class template and several typedefs -#include // std::basic_istream class template and several typedefs -#include // std::basic_ostream, std::basic_iostream class templates and several typedefs -#include // several standard stream objects -#include // std::basic_fstream, std::basic_ifstream, std::basic_ofstream class templates and several typedefs -#include // std::basic_stringstream, std::basic_istringstream, std::basic_ostringstream class templates and several typedefs -#include // std::strstream, std::istrstream, std::ostrstream(deprecated) -#include // Helper functions to control the format or input and output -#include // std::basic_streambuf class template -#include // C-style input-output functions -#include // Localization utilities -#include // C localization utilities -#include // empty header. The macros that appear in iso646.h in C are keywords in C++ -#if __cplusplus >= 201103L -#include // (since C++11) std::type_index -#include // (since C++11) Compile-time type information -#include // (since C++11) C++ time utilites -#include // (since C++11) std::initializer_list class template -#include // (since C++11) std::tuple class template -#include // (since C++11) Nested allocator class -#include // (since C++11) fixed-size types and limits of other types -#include // (since C++11) formatting macros , intmax_t and uintmax_t math and conversions -#include // (since C++11) defines std::error_code, a platform-dependent error code -#include // (since C++11) C-style Unicode character conversion functions -#include // (since C++11) std::array container -#include // (since C++11) std::forward_list container -#include // (since C++11) std::unordered_set and std::unordered_multiset unordered associative containers -#include // (since C++11) std::unordered_map and std::unordered_multimap unordered associative containers -#include // (since C++11) Random number generators and distributions -#include // (since C++11) Compile-time rational arithmetic -#include // (since C++11) Floating-point environment access functions -#include // (since C++11) Unicode conversion facilities -#include // (since C++11) Classes, algorithms and iterators to support regular expression processing -#include // (since C++11) Atomic operations library -#include // (since C++11)(deprecated in C++17) simply includes the header -#include // (since C++11)(deprecated in C++17) simply includes the headers (until C++17) (since C++17) and : the overloads equivalent to the contents of the C header tgmath.h are already provided by those headers -#include // (since C++11)(deprecated in C++17) defines one compatibility macro constant -#include // (since C++11)(deprecated in C++17) defines one compatibility macro constant -#include // (since C++11) std::thread class and supporting functions -#include // (since C++11) mutual exclusion primitives -#include // (since C++11) primitives for asynchronous computations -#include // (since C++11) thread waiting conditions -#endif -#if __cplusplus >= 201300L -#include // (since C++14) shared mutual exclusion primitives -#endif -#if __cplusplus >= 201500L -#include // (since C++17) std::any class template -#include // (since C++17) std::optional class template -#include // (since C++17) std::variant class template -#include // (since C++17) Polymorphic allocators and memory resources -#include // (since C++17) std::basic_string_view class template -#include // (since C++17) Predefined execution policies for parallel versions of the algorithms -#include // (since C++17) std::path class and supporting functions -#endif diff --git a/nbproject/private/launcher.properties b/nbproject/private/launcher.properties deleted file mode 100644 index 3edc2d8..0000000 --- a/nbproject/private/launcher.properties +++ /dev/null @@ -1,42 +0,0 @@ -# Launchers File syntax: -# -# [Must-have property line] -# launcher1.runCommand= -# [Optional extra properties] -# launcher1.displayName= -# launcher1.hide= -# launcher1.buildCommand= -# launcher1.runDir= -# launcher1.runInOwnTab= -# launcher1.symbolFiles= -# launcher1.env.= -# (If this value is quoted with ` it is handled as a native command which execution result will become the value) -# [Common launcher properties] -# common.runDir= -# (This value is overwritten by a launcher specific runDir value if the latter exists) -# common.env.= -# (Environment variables from common launcher are merged with launcher specific variables) -# common.symbolFiles= -# (This value is overwritten by a launcher specific symbolFiles value if the latter exists) -# -# In runDir, symbolFiles and env fields you can use these macroses: -# ${PROJECT_DIR} - project directory absolute path -# ${OUTPUT_PATH} - linker output path (relative to project directory path) -# ${OUTPUT_BASENAME}- linker output filename -# ${TESTDIR} - test files directory (relative to project directory path) -# ${OBJECTDIR} - object files directory (relative to project directory path) -# ${CND_DISTDIR} - distribution directory (relative to project directory path) -# ${CND_BUILDDIR} - build directory (relative to project directory path) -# ${CND_PLATFORM} - platform name -# ${CND_CONF} - configuration name -# ${CND_DLIB_EXT} - dynamic library extension -# -# All the project launchers must be listed in the file! -# -# launcher1.runCommand=... -# launcher2.runCommand=... -# ... -# common.runDir=... -# common.env.KEY=VALUE - -# launcher1.runCommand= \ No newline at end of file diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml deleted file mode 100644 index aef7ea3..0000000 --- a/nbproject/private/private.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - 1 - 0 - - - - - - diff --git a/nbproject/project.properties b/nbproject/project.properties deleted file mode 100644 index de9ff56..0000000 --- a/nbproject/project.properties +++ /dev/null @@ -1,2 +0,0 @@ -#Sat Oct 21 15:56:01 CEST 2017 -project.license=mit diff --git a/nbproject/project.xml b/nbproject/project.xml deleted file mode 100644 index b9773ad..0000000 --- a/nbproject/project.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - org.netbeans.modules.cnd.makeproject - - - uFTP - c - - h - UTF-8 - - - library - - - - Debug - 1 - - - Release - 1 - - - - false - - - - diff --git a/testNotes.txt b/testNotes.txt index 95e9809..26c89c6 100644 --- a/testNotes.txt +++ b/testNotes.txt @@ -8,6 +8,7 @@ sudo apt-get install libssl-dev #Remove password from a certificate openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 openssl rsa -in key.pem -out newkey.pem +handle SIGPIPE nostop noprint pass #Testing ssl