From 070f446102950146b92e198c87464464964312cd Mon Sep 17 00:00:00 2001 From: Ladebeze66 Date: Sun, 12 May 2024 17:26:30 +0200 Subject: [PATCH] startmulticlientok --- .vscode/settings.json | 96 ++++---- ft_irc/build/Client.o | Bin 7832 -> 8736 bytes ft_irc/build/CommandHandler.o | Bin 122992 -> 124216 bytes ft_irc/build/Server.o | Bin 46280 -> 148096 bytes ft_irc/build/main.o | Bin 4952 -> 4680 bytes ft_irc/build/utilities.o | Bin 38560 -> 37552 bytes ft_irc/include/Channel.hpp | 5 +- ft_irc/include/Client.hpp | 13 +- ft_irc/include/CommandHandler.hpp | 29 +-- ft_irc/include/Server.hpp | 66 +++--- ft_irc/include/Utilities.hpp | 9 +- ft_irc/include/color.hpp | 27 +++ ft_irc/ircserv | Bin 110112 -> 154584 bytes ft_irc/src/Client.cpp | 12 +- ft_irc/src/CommandHandler.cpp | 46 ++-- ft_irc/src/Server.cpp | 374 +++++++++++++++++++++++------- ft_irc/src/main.cpp | 8 +- ft_irc/src/utilities.cpp | 18 +- 18 files changed, 482 insertions(+), 221 deletions(-) create mode 100644 ft_irc/include/color.hpp diff --git a/.vscode/settings.json b/.vscode/settings.json index 5b9128d..1d2e293 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -57,51 +57,53 @@ "C_Cpp_Runner.useLinkTimeOptimization": false, "C_Cpp_Runner.msvcSecureNoWarnings": false, "files.associations": { - "array": "cpp", - "atomic": "cpp", - "bit": "cpp", - "*.tcc": "cpp", - "cctype": "cpp", - "clocale": "cpp", - "cmath": "cpp", - "compare": "cpp", - "concepts": "cpp", - "cstdarg": "cpp", - "cstddef": "cpp", - "cstdint": "cpp", - "cstdio": "cpp", - "cstdlib": "cpp", - "cstring": "cpp", - "cwchar": "cpp", - "cwctype": "cpp", - "deque": "cpp", - "string": "cpp", - "unordered_map": "cpp", - "vector": "cpp", - "exception": "cpp", - "algorithm": "cpp", - "functional": "cpp", - "iterator": "cpp", - "memory": "cpp", - "memory_resource": "cpp", - "numeric": "cpp", - "random": "cpp", - "string_view": "cpp", - "system_error": "cpp", - "tuple": "cpp", - "type_traits": "cpp", - "utility": "cpp", - "initializer_list": "cpp", - "iosfwd": "cpp", - "iostream": "cpp", - "istream": "cpp", - "limits": "cpp", - "new": "cpp", - "numbers": "cpp", - "ostream": "cpp", - "sstream": "cpp", - "stdexcept": "cpp", - "streambuf": "cpp", - "typeinfo": "cpp" - } + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "*.tcc": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "compare": "cpp", + "concepts": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "random": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "initializer_list": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "new": "cpp", + "numbers": "cpp", + "ostream": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "typeinfo": "cpp", + "ctime": "cpp", + "map": "cpp" +} } \ No newline at end of file diff --git a/ft_irc/build/Client.o b/ft_irc/build/Client.o index 82b2d7764f8dd44c216d215e9d3d4f55d7fec61e..b8346e74b65f025c2cd5c3a034c65e13ab3cfc53 100644 GIT binary patch delta 2494 zcmZ{mT})I*6oBt6yL)%(F0el^>@EwtEiFH(KMM_8+6XojyN%Qe#;Pq1VgrT-2vvgZ z1KkjVk>~?>+Jul;K z-1*MWoI7*xot@lv?#=N^TP!+Jy*aNqH8#AOI@P?II)1~Inpoiz)5**GuiBy8UJZxr z0e_`1K1hxIoErOe)etg%6PRPrQ{pg;mmRgnZqd(v;s~(#2f}DakLJ9B6SgL=v-x$NOOFe)(;bMm27g@Am z`6yiRc57%1tG)w#Zk{-s#d=Ti-<0==>L1Cdf3sNKVtTBhUD#1hTb;2VmfV~jl6p$& zb*Y2UnakO`QXiE1E2)=JhwkQB*;ZAy5p{D;h(E`fS8Bi1Wl|rMx=-p$QvZWG`hvR~}3PP2qn+?HD&tABnpM(S6c)^g-@&2y5rrw^e{=uf2<{nt{*5&L; zcEDfx^-$_{&klHN>;dJFNF41N+t~L`hdk7C^;hVDX9Tu;a zuP9B_N&;xdf6vUs&L(B+G(04$m=Ume5?d3t+BIxHDwXO^fo#WNT8L*kF0RbB27 z;aIBXrz{Tp3Voqz;`0LWxdJ1FJanB{%Zc?iyivs2A5yPFYave*;VlZmjxK#I;q-BA zfSDp5Y9rQ45vePjfTbdym?u_R|6Rgq&ij}%U9Ubg=!7e!a~{sZ&nS+Yinpu%r-=U+ z!e@y8R>Ch@yiPs@G|@LI0EaLn_H8mkXcdLxlO9?I2AsteKwgZ>ifg7g8~lHsopjNS~c z4~)~#@LI#rC&r~`42GfqC)~>5bF)7dA7gA8>cdI*Np&u*!e`+mtAe$X3b+$4c30th zE`-5~830eDe1ja8q$N_$#^G{F8H`6_>;@#n)nX)O8wkV0NCTS}pwV_R3`a^D*rM=j zWKTryMw?+mO|-!sGp+Pu+Gx^!E^LjyhVR74<+eui@Hm>xUBr*DkZVqOt+dX)8(&-@ K3$lt^Vb4>|q)%o5 delta 2114 zcmZ{lNoZ6-5I}!_^OKo4CdN#r=Z|rg5OItf18U-uNZf-G;~u=IxPu2bP(&T)pa<84 zLdii;a}d2qLZWCe!W>*qYA!0`LB)$+47i7gR`u_W#lY0i)!nbEtLxYQ-E(bmM}1q; z?r_^{rg!(=Er7?)uAchBQUQmG;$kISD%vKx;CIn7`CrDh1{$G2#lS|TiK97Zu>;+)s~ zgf?V!e}&ejI`de&O*HID&Uu|>L29%V#Y!(!`i9aEl>Vu-58BaZsnVxNyJtpuxt-I| zGCIxM%IA*KeM&!3+6Re%6ctLZQ~D}tw+kyr&sd@>I9+G;m#nku9nU&nTX$;fX3aY_ z4{ClG`B)JC@(CAd^uKiGS*dYgVkCxfw2$Z0tE& znk;}F!LiU1tSj*%qxsAKAQ0v zj0ddr{{@SfA@8^(*6i)gR62O-^P04&FE_Uu$&H!Z)(0;^F;9_KtI03&Sv2>e9loxrb zCD`@maC0m7GfqLP_53a46vy1Y!#UjCyN-7}*Qkvt5dFcCRC|Vzgv^D!IER}*$n7~i z(9=|TScr*`olxr^)Mv02M6}l4@8Crqf|h8~*-u--)_6IzMU#FtL$DFD==Risp=g8s z%YnJE279@Lqp=2I!Ts0*dy9l2ocLf)e1Sc)P=#xYC+)gI=!-Y_Tj^s*ISC?B>pvpB tSqn7c?6tn_TOfn8Bz=V_S;$1n;h5hC`{D)gE)n)WrOOcIIW$IN{{Rm#1+oAD diff --git a/ft_irc/build/CommandHandler.o b/ft_irc/build/CommandHandler.o index 57e7d6ab1c30ed2e58743bc58a248fd000e12439..baeca9c11802ec22b63379382f1e2adac0537f8b 100644 GIT binary patch delta 19698 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 delta 19948 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 Z!X@^{a5{{SVNKnI{9HeRR<9L_{|{FsH>Cgo diff --git a/ft_irc/build/Server.o b/ft_irc/build/Server.o index 0baa7a95b31909340972beebfecd9b123a393ef9..f460d388cfdd7d4ea48890e03e2115547d07c823 100644 GIT binary patch literal 148096 zcmeFa4SZC^)jxid5XDzeQK{M*Q+%gLAiOD75LP$xVkA&e(RE1{h~~{?!;4Cb02X{FXy9@|=N)l!QZ1qI(KTCLP-rM^@UwODOMrS*T#+%xxn_uiT8-X-+s^Z)dI zAanOSXU;iu=FH5QnY(+x5gUI-VL^eTuL9?*j{ixcj?=l;M@K1ml=Er9C#vKF^qF%X zr2h}eeW#=kQ~HS9ucdUI+&@a`V{-pErBBHHlaxLs_fJ#$JGp;`(v5QeETzxM{qHG# zUhZFz^beH2DEFHv{iEE!B$DgBGwzeefna{q>;Z&LbKxqpk& zEpoq=(zoS)8>R2a{kxRDC-;A&bi3TYPwC&~{sT%sl>2{B`cJw4h|(Q$|1qVX$o;33 z?v(p~QTlJW|BO;@3~mo@oI<%TqO^zH7gM^2-0w+gPr2WV(!J$=A4>O?`~4{0U+#NR z+FR}qp!7hwKZw#ka(^(Thsgb*l=hYTFHm}z+#gQq5pw@UO1~ucM^aiM_eV)uO6iy7 zz8|GW%l$Eu9xLf_lpZhlCs2B#-1nFCE0hk9`;#agDEDQO4x)6h+?P{2MDB-DI!x|| zQ#wNKPp0$~xgSaCsdE2SNl%k>l%%66Jzeg{NII6%nB1Qs>6wzoC9R3B&e zNIFr{vn8#R^c+ej$$gcilPR4d_g|y*T)Cer>3Nc#Pw546KTXmLCB2B!gxp_DX;SW| zOIj^y4W%i$pCRc?N@vM^Ev1*p{iT%F$$h<~4U{&@eG{dZ$$c}WEpnfxv{mkBOFDoaGO46$-T`2d9BwbADH|73Yl3qh;o7`VZX}jEC zM`?%Le_PV;P`X6!uc!38a({!QODSC@_urHBMoE`b`ag1i6QwuH{R&CHPw5Zj{uW7B zQu;%=zg5y7QF@!)|CrLB$o=h-uA=mR<^B#ze=7Gsqx9!;f2X9sp!6=ezgyB@Qu-^o zzem!0DZNkbe=X^1N`E8w_fz^?xnCpc1Cl-{=|hxu%KgKVK0@hQxnD==qjLWkrR(K> zgQSm3`UIs<%KcN4K27QGJO_)IR0;w%&Xb@2Koa>4tdQWAU~Z zd0KNAer(inDvcMfW~6PsmlH4M+YDr3C$W!hSs&xs(%E(pG1$^R<&F6I9z1Gw>{z^z8)5^J@z~*d$7y$4_c*dQ@P^twzaBy8QN~!Gb0PD zmYKD%v!`YkZ`I|zchuv!^S z*%sThtt^wqu2$EKHj@VQpT(gDw?ZT5?Evk;26t_cQ5AOROsg;gt-6GLv?hL{+iJZQ zT}y4Zbpie1#;s^uryF8?+w0p7H(=mM0W+c_1(e9l0&T#@+~!}nZr}x@r(Nj#8hcut zJZ*Kr)9xpg9Ud&5hYIPBTe^M9>bBGSQw>+QkLtg0$7iiqM78@`#mM(K?r+*NO+7W# zCfv20t;ZM9h#cebmIo8ohWz5G(W`qf(Dv;8tg=#GJezdwwX}0lXRk$VOrc#Q$I)V! zl@=XE8Mg{ENJs8U_xEO9>AyGh%~&7XSV-05rHETSr`NALrSOcl*mGW$C%C2KZNK~c z*7NJsNTTqAdsBrzznZeWMbnPT(-wF3ia+x3jy>8QVJu$#M10}Hd&Jw*8+cYz{=fM& z4kDbkhvUD0E8eyv-u8ZcuZLaY=i&<=*(2UIexplVsrpP?E~07Ox==3m@RWPOooICOz8~6kq<> zqGIMwon!HDDfOnij%Dg&M+fIpW~a*h9po#deKBhc(}PDU5kY{hrq}Vp+Q*dG{irT3 zBR7MG?o1?34X=4UGQRDv@wR8&QIc>?`4V+aPeBa^B<<}{cb6oNg`KUuGa&|Uoz@)= z7xpf0)@`$+^4{g)R1Ki6PTus~Yj{Uf0(D&LFt6sfO zb?(o4E&73)eHJg+NnNFVnab<9*R92~E)N-};~gD}sAKWP|E4bAGr+fF@k(al5ijn{ z__$2vx@ECT(%40HQlwBPx5M$eL1#jY*K5&cmfik+ZUG|riR$Ijm>tX1M;e!yXSn*3 z0nvs=G=l)Y?pRKEwSX!HL(I`@s8Y^v`Ontx(w{CIhL#Y2=xK#L$l&G<=t$a>WPDtv za{Yuc*inDY#9a?C`Mo(rJTK~SG!Hk2{m;!`6xBD0y`=xuyVb% z<6fnGuujW5S(x@%FnxxPlfp_VLle0JnjypMe%;%4)}|MO`(`s!MjbRlzM}d#b#)mE zRzj=i(3L|&#l>05XB#R;Whq~hCEv-Czd2hzJD<2Y*Z=G#9U6g(%38UpmGOMHPXpP{hR` zA_Ipx3Gq=D`VtH7Sn$m@9Q>f`4WLY)3GL(<;#J#07gkUyveyLOU7`v9YK)-L+#5L@{SP{LBYZY807$CXN3k%t3AEQEOxGrK9gByvAn`0UH>yu?5>l}54J9n0KA^zygYxJb}a-$o$+tsv}_}6&b_V`g7beA{a<)4A1%cPvpyksV55oTJNAf+HT8-@APoTUvPY&bbaya%}Cj z?Xg9=3Sbvf*JtGKl(=#shB4BGyk%PhJ8s}q&pW{b17n1l+19?Lkp@i;Gd*>nP2Sm} z-pRje9rqU6xEy_9;9QSm!BuUow_z9JLu3xav}eR_L$_$BUPo@RaQ`n+f3H? zM(bF>_SkJ;*N_R_t*>vWU=*SoKc2#fkycGP#8ZoyXCBIDMzNOa0AKAsp*o3yxr(7Q$Gmb`V zP1w4$yS#jzZ_Ie8CoZ8nz*6dzZRMc>d$ZQwp2O|t#Py>SI#!{@cJH?NJKI`!ES$fy zp!Jli=I`LxtaXrAGqH;9#5nb|%ZkV)S@QT=&GkX%q0W`J+&~lHg15_kFih53^;H7sGcs}6!&vmB{j8o-&bf#m}UvcU-(Xm zr$gJ6Ei_4Naa#9OXK~x85FzaoSUVE#Er6+FzI@QssGlX@aSp#=;3*>p)jL(G=Gm#{ zlIq5WmUMG#bvjj3GNZA%q^YqveR2s?)w`r+^{l(2>1$F%-Z(E+)4wEHS65P9SDR`` zw@}*HlByZt#G0FlNp*87nXYY^S<=#2eQApM(X+HFrzMq!jFQHtbS)`B1a9{9+J>5p zaxPp~+mcQ-PzDi--n9+2>Dpvn?d7C*vZ1ELBPnTY(3KdYlq;#JZJ}B=q_~b+LsC!) zn$g@?FO~3>RVErz?^HH7R;OB8SfRSwh7<{(STSat6Pq;Y>`5gjpWEC>8BNKSmN|{h zHT&`77<`RxP0u2e)K-%PNR=7M+B$7oAtgRz##h89PA;j^<|#QjP^_i3nnllOtsCG> zsftZ<+oHVQnOIwW>BMAxs-!A5nHZfctk^KI$t60MKAuuCr6twOr0RnwN>y%fy%Q&^ zQLSc{R7@IEQctpyGnw+7DHW3)F`Qeb^VlXPRrWv#X80d8$Qzwp`v zt39A3HkX>IVdj7V1H6W7DQRwP;KqcOI{bpc!%rD<%Ahi;;kijwM0sONs*ak?EzNf& zDfS}Q804UQRVk8^bZvdAu{B-NSY6%P+|2IT&{&eJPS?(^P0t(PmKe$NT7zbJGP#Y+q6f#P#ME^wYIB#<)8PC0aO59gxdSBjkGIdu1rg5vj!oSO?<>Hhmg z#VdO_zbGpHZ4c+6BBI~a!!2~wc_s7(k%Hnkik(*rik~WW-c$G272ZLcMGN+DiC!-l zK{prOS@7>Z&W{U=Up>&dr?7bafzH~(;$Ix-yj(c!#si(Fii$rw!1;4g@mmKt@2dM{ zJ>Dsxj2ri0qF?X91zy~P3xBl7mBi?}p2g4gac=Hee19M3j-JK0_Howse7NA+KF;^| zF8=#L&d>HPe(50Rw|f^qa**@H-ovs=w-r1-4lLMVk_qo21KHR!LXFRe$ z6TP-S7r43?7rwPuF)@0i7ju2B7fZOhH%q&l6{KHQ^-EpodD88fExuakjJ)~Y( zysnsR%eE)6J^LPds`E8h1@C^B=L|iY@{V|4nzd+difz%84j;>^kKTqB=K8y>8AUdE zrPW63|0NB*d0%zY%qiWA9dz~lNCYDbL#`i=P!vG{M2zNsCr-iQvd)a4!I!{`O9_cM z+-NJLLiE_PZmSG=J}pKN|JQ2*Rn3g0GF*+kGZaV}%%oz$DH3scu1q_2Xt9Owj3W2n zK!IZ?uEuuoE&v}{P{8i*_R)fCqYFthS)=zs8DwgGri-xlo$jj03j@Qao#~U~>tmbP zA!&uTNs4TS$Wbl)+9!xU9w((D%HxNf$(w@DH~!ZKj+1Evw;#F-2&U?*HbccY1z_FTMeOkfyOCfvT*)pr}eHS zrrLw1hE58(5!XUIKzttRq4Wri9c0P&O5Q_8HzMoNaAfL?!S*rn>)_}9qVx0TmxZ0A ztJ~TcE%E=?8qkV6s=YWK8cvQy(M;<`{>m0MgxVVBZ*i$nmq>8b<*)v1bcc1X2hp&; z7q$7OtqXY^R~uWrPv&okZJR{yz+V``S;jq6qAzUtbm~OY@2kD;JLsC;l)qUwX9lfF zkJcMWJoR3DB-nJmXkU!_UcU_szXHMM7)o8z-5? z-S2g=!>W#*A)n54akLt-wsj2VtH;m5Ad1}6p3Z*aZGYBvS=>q6G8BzF@@x_9T=mX) zt~u+-t?Nsg()g$LoM?FLO$t%}RzcoU3i7-d*f$GUbO~=LqwzecJSN)XI~Lc*n@O?l zO5&Dwhl0u#D9=+1>2|cSepHSV(z>!IM7r7i{zC2G)8tC>%X4`rwdaEmVJ%fCqM0a-_YAOC!8>fpXQdS2Xv!-QQLp5w=353dMre1Y;eyZ_#VDhnGwm+5D5c~8k(5AeN5V9ZhCUnNI|27k{PTCso_CE$*P26>J2J}2>JhPT{5O09z}Z_OdT+D#;ChX^uYs< z4)h4)aR>BB-w|kqOV6dNrd3muudhFEW{XBtII&E^2^?KGm>>tCIa7s#?f};7J|&1I z*6W&e;26tVpN$jog|F@cYZBJuaW=jvJtW9L-jl3p^ zw@t{{ETS2B+t+B45Op$+B7&Kbi_WQwhXi*wYK(HI)En%Xl3=$&0Rtc z(p7}zd77SIJg(diwyOtpRmA9i37D$T)r_1`!~c6Va>sJ0;6NHbyn&iRS{|7*y4k}! z3TY#4$JTq*PJzm&@y6?KvXii7YbC8)sVwo5M&tGj{@jP!b=b1CUj*76YNt6jzWkGM z89FSi-%&s#)efiEciab}!}VLZqbS`sPJerSNBzRY!W{+a^XYS8`owKlD5nfnVh%)2TKG;SHRJ|fg3&~i4}+o43TImnt~FQ~Q(jWd5St)Q}80)LTy>@>Ln+{)Qd@?nQfSd1mBiIN=+XQJ&mj zeQX1XqM>!d2GVXL?k{s#NP+v-pYh}K?NgS!MZM`^D?JB7xKe4gR|8_H^zioPxHf%w zQc&N*qTn=GXWqNyZCTRx)J*MoQ^~gte_5Or#P3%UfvaOrtxJdh@GR_S+RQV97<78N z)33`YHTwHjpl6aCT0Jqf6!{<{Gu+wpC&Rl$C|aDJ!LdKMXhD0SD3txgXo=jH{LXBu@vz~8gX zn4Hzg0CbSdZyjF~dy#5S(=q$L*W1*IC(G-I_w03_BB7z9b+Z=FS?y|VRN$&rc^q-s z9FR;|n+Rs}Wd8Ed!gZAyrxE`h$=nB$XhemE`tL|)=$BjnJCgl(BvVi02jh*;#YpDu z5pck3dm5p)ijwUVJYQr+s(Ob+uiIoC4#u~EXqFcdJ5)3-r=)uN2$uT~N|T)qoZ{3@ zE-h{7*f!UP88X%&tUb?0{@jZ84WMj6Z4DC0McX)0;?<|nsqrjgM(nflO))S zuW3f)kl6ct*JH6?6l^<(P@1;s8+Gj$E_d%W1xGqdV8p*B_KOAcf8hkq8TZXBM9db> z-{7>aQnPjkPyXJltx6||9@W@L(GUI4Af&FtKS#)VQBWkm%wP_Vwk}rjx*udnJxH#u z2S<@q58MSN0mtVkKm}TzB*c+0%@*6*1Ff((EbPRiH{E-bpE#c4yyt6u0#)}kS}z12 zl=I@c|A)S;BPMF;|N5o-<{nszw)T3Wu1#MC%yuq7W0-nMjm`%A3gvS) zpr#PlR-ZFnVc2rbs)jiCF?07fc>JnoTGkLpJoXU({({@_)MgOPpM0`LqiaFD?VO$z zVf?4%`LjT1bC4%_@!t`#?Y(a7>~&u!?MSPi7ox9|ub$#w#c|4=?LIUpV+!vkZ;Tgo z#tSyaAKu(Uv+3GCyHgrRbgS=hufoj!j5yDy8P}O(#++Po+?4694e8dBva$i?0|tJj ztW|w1`}&|k0|u5KFR&^`KiT7O3)8o9oHHj*acIMq!2i^S|cjuVI`nTR!I%TwXa|)ojn3`Qzcbe*NeJ|L5ymsxRBb zlM!23R8&!*1ToEc&ZFy6GF}GVnb#F9>``<EXAvcDOqNx(A`B}>@?7Qe{Z2v?oG6N2X$k)JKZ{zP(HsOf-m*6>RPur(cIoc z>2@6Dl?zQpP`B|NMc4IMSX@-@*W+TLZ8gcA$rf?#dyUY&6Qpx(_cBu+L9(x*e7oHgI zzl8Zy{QTuv@>fg#FAy+xN22~Me*Jc2;op}BOuC8+=#TC%g`X$}>?i!QwtU(0r%JwU zY@93kComJuKk4hYJWKi2S;}vce3Kuu{yVbd_uYdPqjxazAFW@ZtDvgCzX7 z^B5&GHb1{u@{d6tFitHn<&%y)6fysml5gwhosxen^1sNp!Dh)Hg!#2@ehFiH@gI7> z82{0AWIFZ@_S+a8Gb&;Lwwm{(v4a2w@d!1%tW_$ z+UMVUAI`AzA1L`Y{VOHkrhiiw{!6mt-zE7r{WoSQzg_Ze<96?T-TEKMiMCILZ=ZpZ zZ!2G!rF>JC@=GM&R=>L>zaQ#%fv?|2$+wMp+ab=b*!mEIRbvpP4(3 zO^4x zIZJux0A@_Tsg&o<89GR?p_7+ctdDxV^I&Kocms5kB1xQ?&OwYImZc2S8~P+jZIEn7CEfz5}~oJ zJMPMozftl{_G13qCI8EG@748u-yeI+hM>(K21>py-ma8$a8uC=1O=pp@RPy_y z4A{H5CrkeGl5exYhgszJQN}Ubfa_Q;`CZj$R8@>ff~&CfPv$=@OQ zHb3usC>!5CE)JLc(M+Vr9knWU=iRAU^5;taiCBKR-w&5d{x>kc(A_*|`>oDWep8n6 zJ0yPq@=y8l`}XAw`aMDZW2oP7$+wlCnx*_)$*)KLg*8e6uHW)3`Ku*gC0f6;ef>9O z$=@OQU(1m19&VHn*7pmX;W#SM{N2#f&9MCCZr{Us|1(o|k@Fi9OlL7`EcgQ!{6P!e zX~7>3;k*ng0J*HUzKWc+`Zgmiavsh2tUnYv>-B9$TI6iV_^dw^IgjhxjFf)GF5|QQ zP~<$VZ!^*&=b4Pp`a_ZPtiH`ii=5wQeAXX|oEP+MMq1?jA>*_DP~>dVw;5@X^HRoV z{h`SDlfKPJi=0<7KI;!f&a3)1BQ0_^XMENlik#QV-!eYy4@J)V`Zgmiaz4oTtUnYv|IoJ?X_50$ z#%KMZ$oW{`W~4>Vrx~C1ha%@+`Zgmia*W-Y`fmYtAFoW2dph8K);C2?v4wt53%-{H z=l3jyuOeqZ3*O6uA7H@`vfu|>@Ix*57cBVU7W|7A{74Ialm#!f;QV#N@Kxj-W5JKL z;Ky0;6D)Xt3;q=gev$<*v*3d)xIWp_$UiL+JcX< z;A1WL85aCZ3m&)N{KBp9RpgAb;QGmc%rZsJ1PlE{3x2i*=dap^uOjCh3tnZx`Q6Ro ztH|MJ^}|<@Gu48hXTi_6;L|Mlg%S#EqJX3 zztn=)TX6n1SokV(nk;y;1y5V>*%o|`1)pcZudv|rEjYg`BzzS)S6T3@E%+h}zSx3) z%Yy5tRWfxda;~+|UuVJj2b9BCk@Fo3e!T_1!GbTf;NP?0H(K!J7W^g)zQTfk--6#_ z!B<-FTP^sHEclNt`0W;al?7M3)1d|{a(-r^zte*M!h+vz!GCGN@3G+bTJT?6aP`xH zhI*-=xG>;rEPNiY;Ofa(1D}U1^bcF`M=ba{3;vh|-(bNXx8P4$@TV;J(-!<03;wJH zf6jvc-hw}G!C$c8FIw4y8-IcFAbOiWUlqP!u z;@-Lu3!ma;Uh5UTJj?-EeUvKla0B3z6uu82?ro>Sk@4dI3AxjQi?)#Z@2P=G42(MN6|Az2YgqJ%0eykiHIQ%?LspId*9xo-IRCuSy zM|tRRA-6ab5_e+z4|Jp+Tj=~=e@i~Ep zfKu2m)qEBxJWPK+aX1k6x6dtbSw2YgM-{#=pBzWI8D+ghxT#+J+({|y59@kOP`JO} ztMPWiO?;MF@TV>Kix&J{3w~TLv)mCDyv2e)YO%xBL~pX^dcpO|o4=F5*B=Nkg?;S9 zT-fPJ#wmq;Z1tQ4<&9RjzyExc(5DGE*>j-EQrHjIdY+>2*F1X7{|be_ z;o(}(`w2Jkf0A%+$6$NCB=|ZtPs(>ji0cOyKJ*SDBY%E&!6f%!3;rbwe!K-AXu*eC z@KY@K>4dW#o>21@oh?hfe_)}%&w~Hff^V?kd(nBn$v$UV@W~dOpGz?D`5obO{_6-Yh4UTVFM83r zsfqp~3x10Qf6s!SN&&Ws|8*ApNelk01>Z_I+kXk!n=k&}6kkWtz+#fSkZ`6yu+*jF z?=kW9eZg-cJMpEzk8-Dl&%G9WjqsVohu(DYcdz(*N$?di(ed}J`1+THPY+tanDie{ zcqyF670FDz$U^^ZMgKQf82#1s&nWzT57%+d-lTUaoYS2k6w?&`j}ZMzg@5GXn*LLT zKkngrejoTn=KpaBpRe#IL-=b7|1^a6p#i)U&X+a+c?y5pqfg4+V+#Mw!}a)o7!@pq z^TA7mVv)k1@#r=GM-*NlR+sO$5mnz3=JRZb{+kNdR`=;2w$PtM6PzhdTdeRsJ-J%{ z*A(ubKWhD_kbj%vhi@r-FON^9XuL_`{`sTEkNvXQ56>mM6wW27xVkzN{;GVE@0-!5 z4GQlSl3Uu3`5X|!FITvKUa9&2M&bT><#>_Q<7nn{sKnF>G7!|MdU zMdAMWqtqbe=bR3 zv${GJ9v(OTuJF@5eP|k0*EE_COCA5bQsa**e6&Y@s?e8zh3Ut5xTe2W;oCtPs6Hj73@etmr@Cpyt`VSw-^#1v#=5wRM$9wd8 zoOxB@6Fi*4S9R@I#(XAvxTe2I;b(iereCIT|9n%^Kc?_=JbJC?`Q(tLj{jW2X(D&M z!u@kk8Wz;mZ!pvQ=bPn%|5)KVYM1YWP+k!clsc0=xtf2I!u{tQG`?No{&}db*EvJX znc?Awh(0S6KGVb32!7njOkeBa z+E1=mxPRVyp3v__9jer+_vkhM8ihA_xaR+{!u|7B&HvJo%*Q`()%@R4czFCdha9!k zNqhW{6nz#d+&_oa_WXsy!{gNsh0pQ$%n?49e3kk8=d)COb!}33csx0S9JSQ(&uz6n zS1CL^&ir2C^Fwkcj$%IF@Ng~nQH6)chy6w~yfe< zNoSbHfjYuVo$EsMe^&UnJzU%2*fW_v>{sV0JnUDC75*KM4|PLzZC1E{?tGBoN5+}| z^&Y+UldmfLdmgUGx0MQC>fto}s;j7i`P}H?TK_2u5BuQ~g)jH$wVod;e1(T=Jx89! z{QdK5t!ItGZ}I50p3f-!`yQ_KJY^j73H!-%h2QGY>v3a)!u@k?^*s@)@s#n*=SLp> zzH;}e!o&WPoWS(Ad-R(BO$ztVyEXrT6PbRMN3Z$6s&L&Kn8v*hIh*f)=Fw~XYYGqh z)h!CY)1%jRE2MzG)cJ*nQ@F0KQ3? zf)Kt+;r_X~jyGOX_(LB3&*kp)$;{_r57+!}QuretPGP6Io>KU_5PrrK^Eh)2;idFK zbt&%XdcCOd4IZxLmVJ%s9}nR-DEtWz*ZTK3m+7DKaLp&B@TWao>%UUr&xG(VPh~#O zdia5&@Fa!%=jj^1R^eg)+@Ns(oL#s3zZD+#&vKg3OP#P^U7_&jJ$*Ev`xPGctB(~P zZub+qm6=_2OyR*3$G3g7DC z^}^>vh5OF~XuLAPeBSlw`wIP!3GXfUm^^O5UsHVE3-K9sv6;_Q#tV_Nd!Mq<&$r-C zRjPS*s(C7&O}k=E&nibUf4i9=oHV+O@)Cykp}l^&KzRL`ATR#rA> zda{L>Qu*43nHAMl>9VrwS;^)^x;a^!ZmFn_RVC?9EJiv|v9ckFNz*AWl}gM?C2La6 zV}`_LyIF(llT8)1l|#qW)utNKRq67&R7*=mEtjVcP08BkigC47WeMUnHdv^vd`x3~ zJ=G*m|LaoC(Msnc(${miu0chuua{OkMpYb`s7lqPs?%jH>58iI1VLC80%B!@HIGDX zeN$aU)$qjl=>xG|-5_MwjFhduL5uI+isvWIw?Nr2-{9#~b28o73{K@WUd*p`mJ%U_ zplCO=ou>!;K6pz*V@=AaICKfK_>jUmIclzYgt((G>%QxmnYd1>8km?gu4+)i?fV`{ zh*6l!%zbZY5x|GbVm!{?= zsvGN@lFe$kkeSpUqq1-htLzs|driCx^IutFG# z8P;vgknR&6=I&`Bk)mZR;_#9EZ5-WDXvV!bT5WaH=Ts`JrW9|OQ(q}jZ#Wu=FUwtrJ7qB8)%J| zo|l+C&~2osD=zW{@^jb8BQ>$_MA9meDkG(-!qttfyz;C{*R^oh4>%;v%oN$Wi^oP< zJ*JZN71cBXRSijyi>fL&*0sd^wdmProKY2IkmKYo|I~7tyhtbUMH9B$~sw?jP-og7>0PB?N2?S zrjzd2rTYz;o|;+P;0_$NkjEgaNroX2Azh%Rjz+fXy2c#iK0RE-nws>;6=5hCOb(!m zRiztJ){x4ed(|+BH?kNu==n4i@6zZK&D3G(+UCI=fBcDDp^)K&yu0+Bs4Wm=9*e1_ z;H|0ZOB2Pu7ZAX8qQYHoHC3Hsa6m{99A z+TC(^WNB`0Y<6hcWa`GIG*5l>$(fa=Wq>oC`ma-0+mcQ-fY`EOGgIlh+J@8_&5iZ$ zj#Nx{vq|}Ge~lAwA3?mUl;%{0=2W#C3h*|W?_E)cBPvP5CiQ{A;@MFdB&%S$U|oEl zipt7!iaZPjJ)|l|xT(B#x4wM&d+j-nH(>8fIUa zA!(uB#Re}`gJ$T-yba6R(R>lrJIZHJk7H-8&y&GW+LWel9jjLiK!Fi%G(mlt_o8)7 z5e_}v9ceNXS2PjY!5);LPDE|R8*dejEs3+6QVsRAn?dSUrJHF>+r|-W$~tgFmuBON8x zeQ86oepmECc2inX&E3duQYu-ui|q2~8bea`P3d_mqM;=sw_tF-)DwiB4u{QB2ObrZ z#z^z}gU6&`Srfmq!7c+Cdh&D*9Iv!yWhw}isgt63Z$=;7+{(dbi#j85Xr;rmv!7iy zBw1aZYD!N`&5^=tdK9*U28zDwkZ3fWSk0z260H*4LW+-Dj4YMsNtG8IMu{j=Duk<_3ajFvsg9*hDvmsCG+F#nUq?n z3loKy$AY%<&r{?)msT2lJ{vgDjZLKI1`KDtv~NuDm)h$lMd(o{cjF*YJ7ah49k3!@ z9X-c*Zz0D2+?|E0bm}tNRKaZmQZv<%oL-k=HK(@FLrY|Z+7{XcOE&Xa9GQUJsWlaw z9vhlSq~|qty;h<{E7u(#zT$N(KR%_7_(+wEpfr~_sjRH7aSpY@^u|_NvrBBrRmo$s zmDWQM0_x%V2;1#T5%#5Pcw>+vU@D@YyQ;3Eg-xyZBtYm8lcveQ11S+S9a`H!YtJ-K z$foX2(K8uKjvcfGf*rzF)$p|2t~5eWknFcA>*N!rL~fR_0=j*u&hk)SWr)byAVJD5 z4Hv0pycr??#~Sonr%XCpH?Zt_>ElJ5W=TO~B*g31O_G*;8x z*rc8@QuVT|*Jz&ThKg}OQ=h|nGrxY5&71S%x|`fOqzo+YviP^DXck8g6`^@J`^s>a zJU%~>yW;x!N$iF`ke}diXE26FegL4y5Iz94ufyEXK3P*k4?(pw&M-a*T{$`7Z-Hi! z8me60;=`Ok4}W&(YQdmF9`!u5S_kkU+2?5a0_zr9$K-q9s!p#G)GDDPT=$$TRy9_I zPQJxVw0TO`4?6hFyK0W=x(YrUG^m=Vc-oPjK3UanoUcJQ^4DRt&z#N?^VKzaL)F*j zEzDwP*Con^)YQ(Hk!nsgRHyVBxaxFXSF1IiU)ydpWjQ~#?kyt81tNXZsl283@?9uh zlT0V|{!ur?CBem`yEf^bm?y9pgaw@*&na#REUa^SWL_8N@z}c4kY(|sdE^uhkn>ES zoj_j4Ct4e7FKbQl*S5OQm4uUG`r%4*JB22N+*Ao{xnyau{DjzBF2pa-CJgb}m9`8q z%gvIzqfsNd)ll*({fJ`s>|vLc6HDBavm8WOf~ZOK+`GF8Xm;6%wW~_dE*(9}L(Spw zQ|m4G;*Xb+|GtWfW7RQ5BH21OYsc)Wg86w;PVJZ<>)qU-`6)G&R_Xb+YCWw4 z1m>naC0c}Vh+=YvZe2uVeBYFh6ubUbtDZY@>$u@ymNqCxCo;a|N_!0UdgipAndEL! zbV=)**w}&cwRMPDZgz=i^gN~fhppcYL32h7=TCU}s2a7hCy1Vyn4YXl@-EAaMtbam zztmtE3MW-{xrWHk!a1l5<8PkFY+j6(WrEi|6Tj}2!?)|@q@sH^SIP#{w}kv(o^ZE> z{23^00q->3(|(u)b2O*XqsjbGFxNXwmo3!L40Gy`gLs-})hF@~KzP5L5z@ar;b!U| z3R1d3IBtE+ioY=yD;rotPw1;}dC^lb^tGBwLe&%VU74s0_93tJW4dgbnTlp}g;1HC zY@5GNgyhAtI7hfZHZKX4$f-)Z%Uwd+s3%{#@Eh9_Ba-uH%*HAZbVC3RKQay_4ZTo3 zq?Bb#F_JQa_!y3RqHJu=s%`LgH=7z;vhJgF>t+#E-`io07`Rxbp{g_a7lg_aUdZCj zWf?n7Ax8){1%-f_PZ1Fi%cCJff?~O}XsA?9>h12P%}=Y{-p1UGf}xC|Cj}oa?YdZ~ zu3bEw8lH7?(TBIb^&^R9CymyxyP9DwQ~a2+oPK@9Qd&Qr)YaT-2rIg4mn&nk-yIWu zw&n@BNN$}p_jU>iAeYIb!NP1JwOoG1yXXO7hM5zv*Ot^nqpj&l=mh$OEB+a;>ST-j z5(RPThVBLDx81@|ZEdTk>*^b|raB6@O>O)$Me69&`(zP>vL%Z!Pf9_pZgA*S~Dg7XOB^eX`FmKaU1-u|O|C`=nt{t9`z zt=Z@Y*xa>ouKpbEAkiEMIMRhLt>|bIdPi+iDmyD5q&HTA-n~b)uE>*0UL# zBH>DPr^+Vop`DS?QJ~jA;o@E;q!n!=6Hh2=8(dE))UaN^q(i@4z60mcXRNOxg|6zf zn`F^Rhaeu?zP?WL zvV>Cn3*cQI#qO@w(t&dJnuTnfn>*xDMQHL}+o~L%u}_(GkJ9Vxx?{ygs5qA!M{VR% zBe=V{yP#pnjPCAOzN&`V<)CwDnCoI8;n^bQt5{z-PIUq>Lll-_oejM4QQauaeSKB0 ztxwKPcu$3@QEg zhE?Nd)N1J$kNEl5a{f^&cl=A#v@|B%-(8WRI)liagXkgIWP--^x%9dL_bQjP2czM7QyK?gwAJxe;~NhgWeXQ>Gzj6M=<^mpg$h)zXN_c z;QW?A&1VAOg@9iT_#S}kH!-o?Jpum-(Dwvfzrlp*_X1qMp@#9j0e{lMN56T5>GuKp z%|OrZEYkJ*JK*~Pz85zXUCf7VsOi4|crU-hq1k6L9qNo<*)4Zb$UiZ$!{1!;vzWZ}U>0)zW`}PI=FrY6HoD*!{6M&xi&})FyHN--HD&YJ!Os&rufFA+) zIe??w3k28tmx|mO7W#U@gMKm>=+RH^1pJGj&sxE?T-`681|0470`NioUj=%$o1VYk zw$T3_aJ1W}fTP{^D0U6P*(kTS;97rex5F*;rGf|T_7$KY6 z{Cj|x0RB_Kwf@@v_X3Xge*pNP9o7Rq+y4gFT+VYA`j-Gl`@ar2+W$SkQSJ`Gwf@@v zMSGarYj44W_CFZt(f(fs9PK{}@T0(y{_+77W$=tV|;kC;6Xe51nAKY4*`zz%fUTeg}GkXuloW1W$?Gt z0PhF*Wq=S$H$AJOh z=U)+A*Nf+PzJ>vg{&pJhLHkqyJ>PPl=WDWs{-OZAwr8z{{_B9B1o|%)`~;GPc3uMX zXy+dZuIoEO^t==32Lk^sfR_Qj$G)n1%ASJ&KNxVdb3Y4yD&T{G&m;@p2zWWrcL0v# z^R0sG`hJzl@bz<`$8q~1z=r_;-vN&P`3m6ZpKl1Ras(OC>Aoj{SWfd9iPByzK`#_V*DM zd=lWppuXn`uIu$HsaG}N=x>(-AM}S-plAR2t?*f3p}#gjul-?}h5in}v47nyc+gMQ z06qH2X27vs{tY;`%YO25-k|-Du;3?J@Uehnd!1*&>jc;B@`TuP4$z~&-2*t*>uJC- zetsEn^z(lJJ{#6Z00Z0Ei7Wkn5lmR{a&r?$0krw(h0`&S# z)#q5~X8?}=(-h$IhRD4F=uyulfFqxq0({;VK0gL}in5KeFI!E%@tzBmbgvfa`9|1Vp=N!OMpE?V^ z$bzr1;P+VYrvOKN-T)l+*=fQ19Bj5jf54IdSiq706u@ymzX@=pzXEVvA1wg<5NP*K zz;PabN^ozSq%wT{0dO2A{|tPvUvB|=9w&P+L%Ke&(Elqyug8s^hq&dqza#&{0LSs| zD8Yl{Nq?Zn@nj6(yjIZjLY3g!4u^~W7XdxaYv};Jj{m<7INI%-zz6HK1nAjrB_j7` z3;i8{_kXqlAGH5J zfS&n`m-ce{`u0Kky#?2Db$cCbp+7?KV0#@4^w?g51N?P=ITdj9^BC|!JwF7+O@Ln4tIjV$h_eP+{`j&sew=+H`PyskTCy)fZC-_5$1z!(1p6|a5 zIG*qC1blzsf7D^Fp1R$y7ki!vIJV1R!Gq)KsX))|@_peGx6n@t(Cc=&&_Z7$c+mch zK#%sn1@O^O-+Kku_5GFT`2f(L4)o6j=sSh}Wx&xsZvY?k+xLK;?emoI`Pf2Vba-aF zl)4|C{RI!&|6sv`_9+2+v`;JGW1zl&1$->vJ&te{V7WN1#sSCitxa&QCfE1xQr{Z@ z|CDe&4%`fUb^`umpl3cih0k3U`uhX)+HQ|p=${fiXtx)E9_{u|z++&a{l7@c(WUGA zC3#-q5W(4Q=vOBIj{A@!1AO`mpEH3T_aV;*9Qo7*_>2@jbATTCECw9c1wR1%45;se zfS(EY(}3f=`7+=b|8D^t=|2J->F0b&nc1_m_MfW&N55(lJlJ1u0DAVT@nWAJSm=KW zcpU0`AK*KQkJhI%z<;{%f6_w#XTbjje6|GmXn+0y=uz$`f(QM%_(<1oYzOq`LjcG1 z!T`XrUCsa;+hr2qNPh|7NZ$%L#!GF0<9PA{;OK8}3$FW}j+Z_J9OI>(zz6NNM~Q16 z&F4~SuLA@R`p@A3dfhI^Sm=iWj_rG@;KBBa13k9aMS$b_s}=B4@Xy77V|;tN;JUur zZ|?>i`_XTJ587=l&~rb!M(p-G3;kxmasBmnfX@oy^ADg$xt|5-wf*-#%28Lay$%pO zXy+q<9_>67@QMPzUrz=c*L~9k*Y?zYSO+-zVH)^gy}l0gY|q=o4s90t8v^v&4nMHa z-w8PS;k|+f?b8YLXrE^R$Nv721uqoExLvTn?+G~e_X&WXRp8sd8gPtnF9#gs+iL;u z34Cq_9G}1a5#Tr;J^=VQ;PWEj;{kscaC}a+$CrKoJQ(Qv0Db`AM+1H!;9mh8^*j^s z2|#}i;QIjn4B)sP`3vA^x6dqipMHM5a6NJi;MiWL0*>t!7rcLAn_K8~xX~EV~u{z6Jl#f}aikk9^JnT$am<|75^VB%XY+K2rc6rcf83 z1o(IhelFnHUZ~Hxzz6a307pIf%wO9F^}G;p)bo76QBTBk(K7*jP|u42KOE|twBXYL zM?N(cJOy|z{AU1t3FtEu@S%Xu0$heY)$X-`4+8p206!gY9QV!x{8FH=1-uUMR>124 zZwI^q@CN~J1pEcSn*e_kaOBTp8eeK00D7$NWq@OSalXU)HUmA@w*_#lZyNAi>e~wR zSl`)zV||got-jdqbAS)xb1nEh3w}A^=;v2j@cDqt@=mqOHvk{#Hdkm|8VUFUpsxb_ zD!@^nt1b8<3%(d|)bm?_qnw5~|OMre7;MW7*0{C|UzXtFd0KXaVrGVdI!G8-l z@?USkUjlp?@c$>^Sl=%Kek0KLx8PCfWjjIjyXC+i+XeB{KrZ4F0skN1bD;&l6!7=x zUeEhDF5LutFiyA`aGW=B{zX6eKG36{KLC6>=!5o0eQp7I)Mq8&s1MH9sL!oHkNW%w zaGO5Z?zaIw@}CU&WT@AV0j~iZ9M=*2 zETq;a>iCKC8qOEU2m2}dC-&1A=!yLl>-7NWiQ~qDfZN6m)CcVy3P^}&9D`gDR^ z)aPNqZTg%H^?d~B&juX(%O!v>0QxHd$9VE4z%h>cCE&Jxf%@qEn;ukdEy(>U@WJ>K z>$MK(bEy}`jaV;?Ke1jIcjZzq)F+pE+2Yklp z*oy(jxD?}Iq`%HWe+%G9zZ!7lkMkGOzhR-@lj_13_b;s1aKMqzM8Hul@5%7Re2|{k zynHc^^t|TcD@eZ*aHPk6{Q}YG`2zjn4}dRF++F@J0=^7z9G89$IQlut{Uh)}xi0~Z za{mN4%EfWRCKvtfW#EHx8rorkMStY;iiHo>%f<)$`>Vib0La}8IQI9~06!7vUk4od zzX>?<|103ge+%Hqe=FbvLGIgtj|Cj#go^;*2K3l}-vRvVK#%eH4S?f(`YXVZ&$EEP z3;f>){5`<;pnJZ!AEDg7fTLXO*M9>(=Kww87hCXFz)?@`vwX2W+v#5SQ(jZ>71Z;W zfTNxq1891TE4VE*j&geyn(>nWN4t#$9PM@<;Hb|$z_Go)Yr*dV9QAw}@O`N++CG~A zM}6J~9QFAGaJ0{ti_CTyYr&I%qkXOh9QFSJ;5bf>cEzgp#eRhQ|5&ejpvQ3x*LPUo z9|HaRV7E@d{|@+Dfa5s-8Q`ctjt?II9~>VrZpZQAL!ig;;U9qG_<-xvT*e3Flgs$< zPmsF@-Sfr$4&~-DK70gxaC|@<#|Ol786S24e;glB&s@d_jL&yvd_cS5_<;K4GCp8? z;rM`fF5|;NU>_VGP@i1J2ei+wj1Op^T^S#+AL00b^}_K1-11$YT7Ll^6_H{i&JA5PTsLJ1So6{Ih7VTI%PRslGUZ@ABZ z`yL~K9>;AQ-*7$N1oSvQF9v)8)Cyyr2lafLXf%JMKOhJC65xLz z&|`l;2yoo*?F0Bs;KM$z^+Emz1ATY#7qJeBRL|B=)`pP`#*6rmTqTl{Dr&5hkIpE- zi#15;#emCCktt*W;CsqFCoAQi`R^t7oOH@P<9o|JCw#WT7vmqPJNY9zGtU3@wHM&~ zYLL?70B8EC^0^Ffrq|~Im4Gw-I$2+(1NakCx%q%IpGoweuN8nZpUqM^KFi>XF{Yox zAL!ySpD)Jw|B{3G6Fuh$IMeeS%oneD`O@?^9qNAOzQC8pC&@s?&*o`d$(8aW0q5Hl zN4j(|z?uGDp|1g)Zx1YW>FWV!dL9e-x(@LDTuA->8Q}W^{uJQ70Dl2+=Fe+mzCHxJ zw+pGieWcwu`vAbp0Y4D%QvqlG98>Z&4e*0pNd3JM@IHX+=iFJYG@;5}1N4Ug{mXz$ z6RO;ufa@`tGmhXuhA!s+1$F2C8437dfKLNl$2^>UCE$84V|)eRx=%2^2JkO2AlJ)) zi|eSIoq(5UVoHyYL4@@`3h?CE)!4Ujg{hfUf~u$9SCmGT_Go{Z7F3 z+`-vL$Y96%9}n~+0Y3roX@Kj!P|nuBKgoRh1N{o1{|ex10M~o4oc%K3CjtFV!1Z1V zXCEQs7R%K!E#o5r*JnVCPXl}~19DvnxIPo-tQCL{(ZrOl0bIunoV^+FVLCL*8%=jz~2D;G{AevB**%X0{l3@ zM*|)Q{B*!)0X_!sYXBb$_$t6-fNuc&48Y$3{7k@m%Y4Q9#{nM*cm?2-0Y3}yG~nX^ zUkdnm!0!Qk0^rXBu466E{t$3|rp$PsefY0CPFA|N>TfyV=K!vMuaE1i=WxzW1AP_H zF9lpbGsD^U06qoip9lPFfPV=1xq$cKNr*1iN5{O!ln*#ekOso&d60**5@05_XB(Z;9~*53h)}huLgV( z;0po24e&*PuLFEB;BNr_O~89d5X}023-Eq`Ujz79z}oNPe;@D<0sjHu`gg8a|62erKiK`i z_)5Sh1O7w6=K_8!;L8F35#Xx;8z0uF9BZx z_^$w81Nc3FzYO@jfbRtSKEUwrVt%Bp82n-l5gWNo^oqB=ILy0N|~*_?`1j;pR3l&B9C7+jxhs;I4$H+f~gA>Mms zW);0xF&0xVSq=)6^1;`P<-(}ZHPOuK>O^X8b*d?yAZym8c11ve}G#!nw;F-bSb>o!wIFi5ZoWB)13s%Oi#_MZ7_7b2s{R-8fut>XkV3XNYU#K`DJ+C`CNw=% zrH3}B>KkXLDkj3)73l?x4UNt9$-0EsZ7Qp2+9AAp?%cAnvO)Bk#MwmiGb^ge zO#^dGRgxwezN%xB6IG-6AH8CHV8BP&$?c`5Pa0>JIXOYxCi5IbtV0Hl(C=#J(hK0} zt)ksAiDluH%Y<4!qn5^jt~APp%McpuT2ee(n}&~}iCDK(H@mJu7wodfMOV5TW>wSR z!*9jT>5Z($DY+Yz;%LroL4K*VA7}7Of-9=Z4b9h0LT&SynSHQzbBhl0uy{yNq$n#? znru2SQI)DoRj12Z(#oKjj!71dbypkYFFjggM2cOlGo`tqBk|S~XCUGZxv?P*8$o_Q zJ6YG1ZZ<>&X4UdDZ^ZiNCnUNdLULkVSj3;Nha?h>O)dP|WS*`QsmofEbuDbjig7dv zPplf4C>xrn2xLtrAD={HN#;yIU85{PD@hIs616jSS5&|{iPmAwSZR(LV*D=@GeDeD zUt5uHSTeCH!S)J9IV!4%l?|z>oiQWToNA~}CDQYnQZb6ePiJj1jRmTtF3VdL73OrI zO{{8cKyFo<#8t;YJU3dZfmh1hXj5C7tJ35iwJix=`BzX=Q(eg)T2ryxLxEY}?Lu(saQqAcu!afo))G8u4`uNr0cK6hFH-2`#34`KHOC`T8gVbFrw=0br z6cmePwytl8$`ENT4H+!dWkvFBQS)3GX&TqTeOcIFx`BJwv3~9mZqS;!g`kn^mYYf=f?aG+gat$tP7%dV(}9vR6}!$@9TYDO300z+{($SfN~A#P1` zW0R_ts;F^!rz=VWU^htRD6&48ZLGPq4MsLQO==2XtmZY^JH*Q!?CaS%kG(pGgc;= zbya$h9|Tl4HngPua~DH!qt=V0j&V%PJ#>x~E0L@T33qv!Xl4(4zsG~DGhMd#IC`H9+K~e=2nd4QbWn3caUP4p(oKMM`$OeTk2eupbaN_@`lv$_~8m?H<*H#9O^VFk!+otwb%M1 zUibFZsLh?HbN|QMJwN@1(wegy93Vg8Dz=Z}37O8A^RXy}oUk2A(**5pPN(P3QYo&x z+HIxB&p7awZBiZ&!;gS?{UiS+K0QcB%k30Br_eYr%ZfX*u9j&k(f~)xj0uUR)^sGn zS&STN_*fL%g-Yi(VRW+*^VA|YYswTw6{7%GKfRKmt*z9|#^!mu>pY7N+32B7PnvbvfU%Dyer$(h;bh^QT9H19vEj-uA9 zhDUn3V>AdyKD5djouH2D%cs3fYD?301BJ9Xg}jq+oz=aQXojZIER|=k`wyC|`$yo6 z+13#KWp=`DUYukXuES|qis!c(ZP@}R?gdUCsxP!e6?7XdJ{l?d+VgsWYp#A+2|Ini^ZO&va^qto@jmvl)-n89JVN z79#f@p-5eggnQdl5vO#^4nWnJ{5(c^LQUp5nLp1)|4+3;NIm!Al-wI6#30z_Dn8On zIv$S+ppo`J*D~yd!CBtmh-`7oQ-)o02w5QTcpmhIZirTM9uCZN@R&igzz&&1J-tPa zo#cnY{P`}Y(OCCL)0e)wVh~co&?cEPa$q*@=7}sn!-gBb`z;)nVR*tkPg93^8*QF3 z)REz%olHc(8zRFWsEJGqV?%$g zuMe#iy2k-BR={*hswNrB=01JnD7cHCt4D`>OFph0;?li7o*(A^k(8;UR|b zxMK7` zijP<2R{=Fm)+gsCf>Cw8tPR?SWTwY8u_0Mko1T}LJhVY&5f;1?r*s4%HLJ7%-@;Syhh1QPf7W=(ch-~9`aeI zw(@bIlb_jhxO``X@{^@J%6}(9dHvgfDF3|(?3r_b8&b!zkfjjFW! zTiJZe{=X;v*X49-EB~^g{C*M2Z;|q-|NarmZ#T&2_e^QMb!yXpr=fh$2<4fUFVz1D z`mE*Z)F!{Tl*jgGOqbKCt^5&&@_izd*T3J6`X3yj{6K?zevgmVTc5TShB zQ2xXS<@wz(e4+izBb3+ggTnG>MkrrrkY5p@{9Hr%vm%sVWGFu_Lir_z^5Y|v*T3VB z_L~r){3?U|C#gNP-|5umfA<*5KNX>Tr=k3m2>L%|D9=8r_139P|4oMSPe;)I4MX|g zMJT`BQ2xRQ`tLN9pBAA!ze|QM^dEkQgSMMaZT91Li3H1YpVsAcYAau2D9`VW(dBe% zE8pKxp5GIs%jwisez>80Dnfbv-Z!)#zfVTX)u~N>r9uA82<4|4%Fl{WewLy9_ac-} z8_HiFq5J|v`PvBO_4_-}{+C23zg*C{$!gQ5OS5#&E_D1TXm@|z9%^ZUTG-a57Ezr`TG zB|>@qeiv-NbcFIwkvo2(|M8ka>#b9p{yn8U%AXxUzJ3o4mY)-$e2GCm$5dKxo!a#8 zZzw-6Liyo_@|Q;_uitZv^?x>k{VPR2w%>CR%1P2q@}D=9e=&l5{eCPQKX^^2{YIxY z|Jh=Y|J?}Xw@Z1Hzbry|{T?qYe?x@wJ*9%!eoG^i?`-(x8M z(+K4|4dq{o;D1j^d9>f3B9wpLApfoi`foOrzdJ(tcMRqEOhI5Twe_DJhVuL_&0Nd( zC?;Wa;rM%Bgz~+mJlg;M2<7`49{d47L;uJxa4D8DX3`5Ht0UyV@zI)nTT5#-M`l;0dd{vw0^k4KPyok2eDY3FMH zc7gMKfhZySN-oXlz%OP{7!@Z8zacyV37a&2<4wQ$mjQx=URXL zepehn{}7@47K8j3B9z~5sQ-%*%Io*gqW&*MDBp7rYHYf2{QqNw^1Y=z%KuY@@<$lT zzZ{|bafb4*L?~ZwsQ;@G%8xY2f1T`^tN+Cf^52M1zS1N=g8tJC^52Y5zQ!Q`%?SE8 z8RY*pLixD{`CB9CzsOMj?Fi+U81&y3q5N_~`FA3eUuh`+Rs{R4GSr{not~@z-eZve zw+Q9e802q{P=14<{QD8gKW`}iL4@*~4fX#pLisI*^8biXe!D^ce?}<3(;)w&2<3b1 zNzO(Wj{p1&R<8cj+fe@F2<4BE@;HBe5}|xQL-|i5l<#jSzlH3PYyHa&<+nyCKT^u0 z{d>@vTCVcrhVsP`%1<_w=Vuynm4C6J{9X~t*BQ$19ijYOL-~ColwV{hzi)){OAO`r zi%@=rq5S?4%C9n%?-il^J%;kVBb4tnls_Os`KP2j_WuJTlz-k({@@7ZUpDCfk)i*V z5Jtm_Bf~A-xz`pcUw^bl+>}(vxDKaJ+^0rmppH}0hq*e=_JM8&kG=ffQ*94O=kMmU-IB2kC>K%cv}4dju+`<;&}9iNd{t<;N0iDqko1 zAFm5a8W7{0M!2$HAftE8m89*&_Ir?MgZ4`iW|IFskYxuM{f{%~|1i-8^wt!=6{i%q$&bE{vGsw*k+LdMD#m}TM7Nk3?+@;E9|0ESQ z*}ut9e|~;m>#zNq&qPe}FUe8<4=wVqG05lVSA+5oA;X*GUn}yHt{J?)!FJMf!l*#T zN|8TTN^<{w+91EdBLAHn>t9RdP4@452G`1Qw4GT#Kfe{M|F13b_Z^~&JK5U*mlpX0 z4f6Tbte^8B2GN&ilR{rLHZp#J+&VUztH%TYd`)0^aPGRWU#kbjm%{u?5n=XbnV zSG?LS<@X-yQt|wbSFruRY0-bXL4Q8K3)*jkMgCBce-sL*`=I=_7WqASV5bZFAD!wvFZGsu6* zBL7a2pUwaJQQ&LpKhI0~Z2os7l{eY1(xCsF2K_Iw$ajVjF6>M|A9gN zuPyTbnq&QcX_3FlApai*`FreTwtw%F-706Re*u*@*?+r1{znG+br$(2i~MZy-%N}A zo@a&I|6_yvbr$*O=P3Uni~JIU{7((?3-&hK|8kLkiQ5d`-=P2Pw8$SW@-LQ>-2eYY z_v9|>(*0t#MgAKiKim9$+5gwr*#JjXU2%L1GDHc10AlzWLJaaDA0Yybe3|f}At0&q8HCg_BvNfNOhJ%JQ?QE2K%64R zI%9k8-t%_fJNrL#-<@H1v)SMK{m;4gy?y%vfp|3k4WR!20snEu-)*|h>6-s`#orA4 zKcF7S`lt57{m%>OpF}*WzYX}!u~hmuEB@K+Ut`;lyp{96N%41p`R@Vz|5f~Z*zcPE zuN8ms0+P}2)|pv{~g6& z3;ex+Kc_dYe+~Qd9QF4n9@QTQ{Wt%9U#`F9ioY&o{dX(=c2IvG;6JGN{}Iyvj^d9j zBpD6={AUCIh%DUyaWie>UHu#ral^}pKuV{;n* z`5y%QmlXf0kp3?ee*^Fj0sgAKxc(e2yf#rq>PFW8An~aFHul#uYWhD6_`g;BjqD$j zQYRkCjzbO8J z#Wv%JRMf;H=|7_QYk@x>_^;`Q`&Y#NQ4W8e!dEiSm+_NZk@=$v{{r)Clcaqh`31zI z{x@>{rOcc4I~vr#Pw{`xe%JcltN71@{*MLz9{q9uN0r#%uJyZE;TI{q>|Yu2sDBaj zgBcqB{ck+T->CREvVVjvBY7+RI~9Kp@J|H(vx@&E_7^72_JQ;d8i4!X#=L9&4Im!% zuYmLW*IyyX|Fq(tJlp0y?#RDQ@z=2bB=ctdPX_*TivPMf7F_M{pHckLD9LE}>z@kz z<=5l>Z(zTx{-wmD{x`7SUw;wsA5#3Kb8X?S`u8jT*j?%MPXqp$19AP$?B|a$HVoa$ z^;<+dsy`0=Gl0KI@n2*=ot^}S^nau9-!V_$4h-9s)KjZ(!1ZU(v#)XSrxkuQ^WJHw zXO#I*5Rdv7Sz?nGFlhFl641XW9U#ps<@LuZCBO9lUg0-0@0$NT#H0KLoZr9y%?0^K z4#N54?03!o7KLwB>NmaekE;s*Nl5xyq{7#P^iLd$^S>0*zgFR!Li(E&{s{AO z{$>5I5|8G;3CzDaq{{i9Jq*`>%^kMw`GM}IAHR1i{AlL+V@Pr?_4X5U{JaPFUswFUW9qB?m;J8(45Hs=o`=zY5gje6$I@nbc} z|FPmPGBioc!x{^Qq=fqzjxuD_Q3%TubvBRT)`iAVLHXTSga^AX_x zK=Getzia*qN81@Sj%v{B5BBTYx`v46gsT?05CQC-JEM z;(JL(!{2}N`{OcfTa(u%pH=)F?3e4;Zk0DecSU1y{>#ko7J&FNatrY&e~j~QW5CRx z`TcP+f2ZQ#!6!cQ_$SwI`OP?gocVpJQWK9Pzm#~Czq8y1_wRpCgZ$a!uzzjTie34i zQuyu6yYg=#9_6oIo}RxJtGS%tsCd=c00-AVrE#H0SjIKO}Y|0T$OS@Dls zVvVlj?*+x*$bSFv_j%wSFcJ4}A^Yja6M-S?uTc0E%ohe|>+(OfoOsl~ILQAZ$lt2? zUtoVfzl!$(K|DEE$$bQ%QxvKah z_nEE)e}1+D_{U7b{mbM7k8AyGR`}t}7mEJdRH-L75s&(p1Mt_`OG@0b}r&Y{1bq{Vp@+*i(`3pF|_j_c`@wXA=|3>j=-fO+i&ri4D{CUi0n&Nyz z<{wWy%3p6Tme6QP+}i(tl@ogw>QK|IQT9^{XM{C`#aITd!=7YAlP{ru;B#UC*jTWQegL1LKq zpZ&l;_*UG%YW5Fg-n*0Q?E9vxBafetEB?nStA^Fc0zL9y?`Nxg7;rz`Z z`E?54!hA`p)Wjos{Hi7%&3_B`-@pGJ2mSv@@poHg#V-Fb#or119|3<^G49`7_S5Cf zz>xLNBOcYCTTL<={`yY={~N@cSIYOl82g_v8}SY4Zz{(ADEn)eHSZs%fqzm7_IHM? ze;o0s{x(p*`Td{r`1Ok7ANsHj?yA2*@ppmx{|WqKXXE;JvY#&R1qN**Fh&xO>W`Tp z_R{bl|NaI1&ny0;>@Nw}($6336n`!7p9B80ioaKt6}#&HMDaHQ|G$BM$sFAOY3z5^ ze<$&%|8d~|9QgMr{>|)P=ji|M6n{JWE15U@-xt7t-CSJ%g^>Op#H0EP){u-wW#ZOe z|M?R5*DC(<)fV*DFK;I8`faPi$3pT2^CFQf+IV+Q!1uMxd&dj!+uqmS{msND>i1s2 z_w`)Am*4dNGN`|Vc+;uw-GUpaclfV!Z literal 46280 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 GC4T`LD43-H diff --git a/ft_irc/build/utilities.o b/ft_irc/build/utilities.o index 7efbe16a8aaff6a0bf373d91fafe1a8adf71662b..6f59157b70862cb5291bc010ce6dc416d58f1861 100644 GIT binary patch literal 37552 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 J{gWw3|GzCHwp;)J diff --git a/ft_irc/include/Channel.hpp b/ft_irc/include/Channel.hpp index ec30245..f0b3895 100644 --- a/ft_irc/include/Channel.hpp +++ b/ft_irc/include/Channel.hpp @@ -6,7 +6,7 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/09 14:07:50 by fgras-ca #+# #+# */ -/* Updated: 2024/05/09 14:33:01 by fgras-ca ### ########.fr */ +/* Updated: 2024/05/11 16:20:58 by fgras-ca ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,6 +18,9 @@ #include #include +class Client; + + class Channel { public: Channel(const std::string& name); diff --git a/ft_irc/include/Client.hpp b/ft_irc/include/Client.hpp index b550e0e..844db13 100644 --- a/ft_irc/include/Client.hpp +++ b/ft_irc/include/Client.hpp @@ -6,7 +6,7 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/09 14:07:00 by fgras-ca #+# #+# */ -/* Updated: 2024/05/10 14:10:35 by fgras-ca ### ########.fr */ +/* Updated: 2024/05/11 19:14:26 by fgras-ca ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,10 +18,14 @@ #include #include #include +#include "Server.hpp" + + class Client { public: - Client(int socket, const std::string& nickname, const std::string& username); + Client(); + Client(int socket, const std::string& nickname = "defaultNickName", const std::string& username = "defaultUserName"); ~Client(); void sendMessage(const std::string& message); @@ -29,13 +33,14 @@ public: void setNickname(const std::string& newNickname); std::string getNickname() const; // Ajout de la méthode getNickname int getSocket() const; + void setUsername(const std::string& newUsername); + void setRealname(const std::string& newRealname); private: + int socket; std::string nickname; // Assurez-vous que cette donnée membre est accessible via getNickname std::string username; }; #endif - - diff --git a/ft_irc/include/CommandHandler.hpp b/ft_irc/include/CommandHandler.hpp index 0d841c3..8e14428 100644 --- a/ft_irc/include/CommandHandler.hpp +++ b/ft_irc/include/CommandHandler.hpp @@ -6,7 +6,7 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/09 14:19:30 by fgras-ca #+# #+# */ -/* Updated: 2024/05/09 14:49:16 by fgras-ca ### ########.fr */ +/* Updated: 2024/05/12 17:09:20 by fgras-ca ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,22 +21,25 @@ #include #include -class CommandHandler { +class Client; +class Channel; + +class CommandHandler +{ public: - CommandHandler(); - ~CommandHandler(); - void handleCommand(const std::string& command, Client* client); + CommandHandler(); + ~CommandHandler(); + void handleCommand(const std::string& commandLine, Client* client); private: - std::map channels; + std::map channels; + std::vector split(const std::string& s, char delimiter); - void handleJoin(const std::string& command, Client* client); - void handlePart(const std::string& command, Client* client); - void handleNick(const std::string& command, Client* client); - void handlePrivmsg(const std::string& command, Client* client); - void handleQuit(Client* client); - - std::vector split(const std::string& s, char delimiter); + void handleJoin(const std::string& command, Client* client); + void handlePart(const std::string& command, Client* client); + void handleNick(const std::string& command, Client* client); + void handlePrivmsg(const std::string& command, Client* client); + //void handleQuit(Client* client); }; #endif // COMMANDHANDLER_HPP diff --git a/ft_irc/include/Server.hpp b/ft_irc/include/Server.hpp index 5d395d2..47bf8eb 100644 --- a/ft_irc/include/Server.hpp +++ b/ft_irc/include/Server.hpp @@ -6,54 +6,60 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/09 14:01:12 by fgras-ca #+# #+# */ -/* Updated: 2024/05/10 14:10:44 by fgras-ca ### ########.fr */ +/* Updated: 2024/05/12 17:14:30 by fgras-ca ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef SERVER_HPP #define SERVER_HPP +#include +#include +#include #include #include -#include -#include -#include +#include #include #include -#include -#include -#include +#include +#include +#include +#include +#include +#include -#include "Client.hpp" // Assurez-vous que Client est inclus avant Server +#include "color.hpp" +#include "Client.hpp" #include "CommandHandler.hpp" -class Server; // Déclaration anticipée de Server si nécessaire +class Client; +class CommandHandler; -// Structure pour passer des données aux threads -struct ClientContext { - Client* client; - Server* server; - CommandHandler* cmdHandler; - - ClientContext(Client* c, Server* s, CommandHandler* ch) : client(c), server(s), cmdHandler(ch) {} -}; -class Server { +class Server +{ public: - Server(int port, const std::string& password); - ~Server(); - bool initialize(); - void run(); + Server(int port, const std::string& password); + ~Server(); + void run(); + bool initialize(); + void closeClient(int sockfd); private: - int listener; // Socket descriptor for the server - int port; // Port number to bind the server - std::string password; // Server password for client connections - bool running; // Server running status - std::vector threads; // List of threads for client management + int port; // Port d'écoute + std::string password; // Mot de passe pour les clients se connectant - static void *manageClient(void *clientContext); // Static to be compatible with pthread + bool running; // État d'exécution du serveur + int listener; // Socket d'écoute du serveur + int fdmax; + fd_set master_set; // Ensemble principal des descripteurs de fichiers pour select + std::map clients; // Mapping de socket à Client + std::map handlers; // CommandHandler pour chaque client + + void acceptNewClient(); + bool handleClientActivity(int sockfd); + bool getlineFromClient(Client* client, std::string& line); + void handleIRCMessages(Client* client, CommandHandler& cmdHandler); + bool processInitialCommands(Client* client); }; #endif // SERVER_HPP - - diff --git a/ft_irc/include/Utilities.hpp b/ft_irc/include/Utilities.hpp index ca3e665..0b5ef13 100644 --- a/ft_irc/include/Utilities.hpp +++ b/ft_irc/include/Utilities.hpp @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* utilities.hpp :+: :+: :+: */ +/* Utilities.hpp :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/09 14:22:54 by fgras-ca #+# #+# */ -/* Updated: 2024/05/09 14:35:04 by fgras-ca ### ########.fr */ +/* Updated: 2024/05/11 13:34:54 by fgras-ca ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,10 +22,7 @@ namespace Utilities { // Split a string by a delimiter and return a vector of substrings - std::vector split(const std::string& s, char delimiter); - - // Trim whitespace from the start and end of a string - std::string trim(const std::string& s); + std::vector split(const std::string& str, char delimiter); } #endif // UTILITIES_HPP diff --git a/ft_irc/include/color.hpp b/ft_irc/include/color.hpp new file mode 100644 index 0000000..09ee27d --- /dev/null +++ b/ft_irc/include/color.hpp @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* color.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: fgras-ca +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/05/12 16:31:27 by fgras-ca #+# #+# */ +/* Updated: 2024/05/12 16:35:03 by fgras-ca ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef COLOR_HPP +#define COLOR_HPP + +# define RESET "\033[0m" +# define GRAY "\033[0;90m" +# define RED "\033[0;91m" +# define GREEN "\033[0;92m" +# define YELLOW "\033[0;93m" +# define BLUE "\033[0;94m" +# define MAGENTA "\033[0;95m" +# define CYAN "\033[0;96m" +# define WHITE "\033[0;97m" +# define ORANGE "\033[38;5;214m" + +#endif \ No newline at end of file diff --git a/ft_irc/ircserv b/ft_irc/ircserv index e37856d1b68040905c10e68fbc915567966e662e..1505a2c54b99dede280a1ba3d77f8dbebac88334 100755 GIT binary patch literal 154584 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 W-S8vm`5({WT#eKW%LBe!=l=uGfLqZ3 literal 110112 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 diff --git a/ft_irc/src/Client.cpp b/ft_irc/src/Client.cpp index 22355da..44365da 100644 --- a/ft_irc/src/Client.cpp +++ b/ft_irc/src/Client.cpp @@ -6,7 +6,7 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/09 14:07:27 by fgras-ca #+# #+# */ -/* Updated: 2024/05/10 13:33:20 by fgras-ca ### ########.fr */ +/* Updated: 2024/05/11 16:11:10 by fgras-ca ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,8 @@ #include #include +Client::Client() {} + Client::Client(int socket, const std::string& nickname, const std::string& username) : socket(socket), nickname(nickname), username(username) {} @@ -57,3 +59,11 @@ int Client::getSocket() const { return socket; } +void Client::setUsername(const std::string& newUsername) { + nickname = newUsername; +} + +void Client::setRealname(const std::string& newRealname) { + // Assurez-vous d'avoir un membre `realname` dans Client + username = newRealname; +} \ No newline at end of file diff --git a/ft_irc/src/CommandHandler.cpp b/ft_irc/src/CommandHandler.cpp index 0ad09b2..a4a5a60 100644 --- a/ft_irc/src/CommandHandler.cpp +++ b/ft_irc/src/CommandHandler.cpp @@ -6,7 +6,7 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/09 14:19:15 by fgras-ca #+# #+# */ -/* Updated: 2024/05/10 12:33:00 by fgras-ca ### ########.fr */ +/* Updated: 2024/05/12 17:11:00 by fgras-ca ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,28 +14,42 @@ CommandHandler::CommandHandler() {} -CommandHandler::~CommandHandler() { - for (std::map::iterator it = channels.begin(); it != channels.end(); ++it) { +CommandHandler::~CommandHandler() +{ + for (std::map::iterator it = channels.begin(); it != channels.end(); ++it) + { delete it->second; } channels.clear(); } -void CommandHandler::handleCommand(const std::string& command, Client* client) { - if (command.find("JOIN ") == 0) { - handleJoin(command, client); - } else if (command.find("PART ") == 0) { - handlePart(command, client); - } else if (command.find("NICK ") == 0) { - handleNick(command, client); - } else if (command.find("PRIVMSG ") == 0) { - handlePrivmsg(command, client); - } else if (command == "QUIT") { +void CommandHandler::handleCommand(const std::string& commandLine, Client* client) +{ + std::istringstream stream(commandLine); + std::string command; + stream >> command; + + if (command == "JOIN") { + std::cout << "Commande Join reconnue" << std::endl; + handleJoin(commandLine, client); + } else if (command == "PART") { + std::cout << "Commande part reconnue" << std::endl; + handlePart(commandLine, client); + } else if (command == "NICK") { + std::cout << "Commande nick reconnue" << std::endl; + handleNick(commandLine, client); + } else if (command == "PRIVMSG") { + std::cout << "Commande privmsg reconnue" << std::endl; + handlePrivmsg(commandLine, client); + } /*else if (command == "QUIT") { + std::cout << "Commande quit reconnue" << std::endl; handleQuit(client); - } + }*/ + // Ajoutez d'autres commandes IRC ici } void CommandHandler::handleJoin(const std::string& command, Client* client) { + std::cout << "Lancement fonction Join reconnue" << std::endl; std::vector tokens = split(command, ' '); if (tokens.size() > 1) { std::string channelName = tokens[1]; @@ -78,11 +92,11 @@ void CommandHandler::handlePrivmsg(const std::string& command, Client* client) { } } -void CommandHandler::handleQuit(Client* client) { +/*void CommandHandler::handleQuit(Client* client) { for (std::map::iterator it = channels.begin(); it != channels.end(); ++it) { it->second->removeClient(client); } -} +}*/ std::vector CommandHandler::split(const std::string& s, char delimiter) { std::vector tokens; diff --git a/ft_irc/src/Server.cpp b/ft_irc/src/Server.cpp index f487f5e..7dd6f6a 100644 --- a/ft_irc/src/Server.cpp +++ b/ft_irc/src/Server.cpp @@ -6,115 +6,321 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/09 14:01:34 by fgras-ca #+# #+# */ -/* Updated: 2024/05/10 14:13:02 by fgras-ca ### ########.fr */ +/* Updated: 2024/05/12 17:07:02 by fgras-ca ### ########.fr */ /* */ /* ************************************************************************** */ -// Server.cpp #include "Server.hpp" -Server::Server(int port, const std::string& password) : port(port), password(password), running(false) {} +Server::Server(int port, const std::string& password) : port(port), password(password), running(false) + { + FD_ZERO(&master_set); + std::cout << GREEN << "Server constructed for port: " << RESET << port << std::endl; + } -Server::~Server() { - for (size_t i = 0; i < threads.size(); ++i) { - if (threads[i]) pthread_join(threads[i], NULL); - } - close(listener); +Server::~Server() +{ + std::map::iterator it; + for (it = clients.begin(); it != clients.end(); ++it) + { + delete it->second; + close(it->first); + } + std::map::iterator itHandler; + for (itHandler = handlers.begin(); itHandler != handlers.end(); ++itHandler) + { + delete itHandler->second; + } + std::cout << RED << "Server destroyed, all clients closed." << RESET << std::endl; } -bool Server::initialize() { - struct sockaddr_in server_addr; - listener = socket(AF_INET, SOCK_STREAM, 0); - if (listener == -1) { - std::cerr << "Error creating socket: " << strerror(errno) << std::endl; - return false; - } +bool Server::initialize() +{ + struct sockaddr_in server_addr; + listener = socket(AF_INET, SOCK_STREAM, 0); + if (listener == -1) + { + std::cerr << RED << "Error creating socket: " << strerror(errno) << RESET << std::endl; + return false; + } - memset(&server_addr, 0, sizeof(server_addr)); - server_addr.sin_family = AF_INET; - server_addr.sin_addr.s_addr = INADDR_ANY; - server_addr.sin_port = htons(port); + int opt = 1; + if (setsockopt(listener, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) == -1) + { + std::cerr << RED << "Error setting socket options: " << strerror(errno) << RESET << std::endl; + close(listener); + return false; + } - if (bind(listener, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) { - std::cerr << "Error binding socket: " << strerror(errno) << std::endl; - close(listener); - return false; - } + memset(&server_addr, 0, sizeof(server_addr)); + server_addr.sin_family = AF_INET; + server_addr.sin_addr.s_addr = INADDR_ANY; + server_addr.sin_port = htons(port); - if (listen(listener, 10) == -1) { - std::cerr << "Error listening: " << strerror(errno) << std::endl; - close(listener); - return false; - } + if (bind(listener, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) + { + std::cerr << RED << "Error binding socket: " << strerror(errno) << RESET << std::endl; + close(listener); + return false; + } - std::cout << "Server initialized and listening on port " << port << std::endl; - running = true; - return true; + if (listen(listener, 10) == -1) + { + std::cerr << RED << "Error listening: " << strerror(errno) << RESET << std::endl; + close(listener); + return false; + } + + FD_SET(listener, &master_set); + fdmax = listener; // Set the initial max file descriptor to listener + running = true; + + std::cout << GREEN << "Server initialized and listening on port: " << RESET << port << std::endl; + return true; } -void Server::run() { - if (!running) { - std::cerr << "Server not initialized or already running." << std::endl; - return; - } +bool Server::getlineFromClient(Client* client, std::string& line) +{ + char buffer[1024]; + memset(buffer, 0, sizeof(buffer)); + int len = recv(client->getSocket(), buffer, sizeof(buffer) - 1, 0); - CommandHandler cmdHandler; - while (running) { - struct sockaddr_in client_addr; - socklen_t client_len = sizeof(client_addr); - int client_sock = accept(listener, (struct sockaddr *)&client_addr, &client_len); - if (client_sock == -1) { - std::cerr << "Error accepting connection: " << strerror(errno) << std::endl; - continue; - } - - Client* newClient = new Client(client_sock, "DefaultNickname", "DefaultUsername"); - ClientContext* context = new ClientContext(newClient, this, &cmdHandler); - pthread_t thread; - pthread_create(&thread, NULL, &Server::manageClient, context); - pthread_detach(thread); - threads.push_back(thread); - } + if (len > 0) + { + buffer[len] = '\0'; // Ensure null termination + line = std::string(buffer); + line.erase(std::remove(line.begin(), line.end(), '\r'), line.end()); + line.erase(std::remove(line.begin(), line.end(), '\n'), line.end()); + return true; + } + else if (len == 0) + { + std::cout << RED << "Client disconnected." << RESET << std::endl; + return false; // Connection is closed + } + else + { + std::cerr << RED << "Error reading from client socket: " << strerror(errno) << RESET << std::endl; + return false; // An error occurred + } } -void* Server::manageClient(void *clientContext) { - ClientContext* ctx = static_cast(clientContext); - Client* client = ctx->client; - Server* server = ctx->server; +bool Server::processInitialCommands(Client* client) +{ + std::string line; + bool isAuthenticated = false; // Pour garder une trace de l'authentification - client->sendMessage("Welcome to the IRC Server!\n"); - client->sendMessage("Password required:\n"); + while (getlineFromClient(client, line) && !line.empty()) + { + std::cout << MAGENTA << "Processing line: " << RESET << line << std::endl; + // Extraction et traitement de la commande PASS + size_t passEnd = line.find("NICK"); + if (passEnd != std::string::npos) + { + std::string passCommand = line.substr(0, passEnd); + std::istringstream passIss(passCommand); + std::string passToken, extractedPassword; + passIss >> passToken >> extractedPassword; + if (extractedPassword != this->password) + { + client->sendMessage("ERROR :Wrong password\r\n"); + std::cout << RED << "Authentication failed for password: " << RESET << extractedPassword << std::endl; + return false; + } + else + { + std::cout << "CLIENT Socket: " << client->getSocket() << GREEN << " :Authentication successful." << RESET << std::endl; + isAuthenticated = true; + } + } - std::string passwordInput = client->receiveMessage(); - std::cout << "Received password: [" << passwordInput << "]" << std::endl; - - if (passwordInput != server->password) { - client->sendMessage("Incorrect password.\n"); - std::cout << "Password mismatch." << std::endl; - close(client->getSocket()); - delete client; - delete ctx; - return NULL; - } - - client->sendMessage("Password correct.\n"); - - std::string command; - while ((command = client->receiveMessage()) != "") { - ctx->cmdHandler->handleCommand(command, client); - if (command == "QUIT") break; - } - - close(client->getSocket()); - delete client; - delete ctx; - return NULL; + // Traitement des commandes NICK et USER + if (isAuthenticated) + { // Seulement si authentifié + size_t nickEnd = line.find("USER"); + if (nickEnd != std::string::npos) + { + std::string nickCommand = line.substr(passEnd, nickEnd - passEnd); + std::istringstream nickIss(nickCommand); + std::string nickToken, nickname; + nickIss >> nickToken >> nickname; + client->setNickname(nickname); + std::cout << BLUE << "NickName SET: " << RESET << nickname << std::endl; + std::string userCommand = line.substr(nickEnd); + std::istringstream userIss(userCommand); + std::string userToken, username, realname; + userIss >> userToken >> username; + size_t realnameStart = userCommand.find(":"); + if (realnameStart != std::string::npos) + { + realname = userCommand.substr(realnameStart + 1); + client->setUsername(username); + client->setRealname(realname); + std::cout << GREEN << "CLIENT: " << "SET NickName: " << nickname << "; UserName: " << username << "; Socket: " << client->getSocket() << RESET << std::endl; + break; + } + } + } + } + // Après une authentification réussie, passez à la gestion des messages IRC + if (isAuthenticated) + { + handleIRCMessages(client, *new CommandHandler()); // Attention à la gestion de la mémoire ici + } + return isAuthenticated; +} +// Handle IRC commands +void Server::handleIRCMessages(Client* client, CommandHandler& cmdHandler) +{ + std::string line; + while (getlineFromClient(client, line) && !line.empty()) + { + std::cout << YELLOW << "Handling IRC message: " << RESET << line << std::endl; + cmdHandler.handleCommand(line, client); + if (line.find("QUIT") != std::string::npos) + { + std::cout << RED << "Client Socket (" << client->getSocket() << ") requested to quit." << RESET << std::endl; + closeClient(client->getSocket()); // Assuming you have a method to close clients + break; + } + } } +void Server::run() +{ + fd_set read_fds; + struct timeval timeout; + if (!initialize()) + { + std::cerr << RED << "Server initialization failed. Exiting..." << RESET << std::endl; + return; + } + std::cout << GREEN << "Server is running on port: " << RESET << port << std::endl; + while (running) + { + FD_ZERO(&read_fds); + FD_SET(listener, &read_fds); + std::map::iterator it; + for (it = clients.begin(); it != clients.end(); ++it) + { + FD_SET(it->first, &read_fds); + } + timeout.tv_sec = 5; + timeout.tv_usec = 0; + std::cout << ORANGE << "Waiting for select..." << RESET << std::endl; + int selectResult = select(fdmax + 1, &read_fds, NULL, NULL, &timeout); + if (selectResult == -1) + { + perror("Select error"); + continue; + } + else if (selectResult == 0) + { + std::cout << GRAY << "Select timeout occurred, no activity." << RESET << std::endl; + continue; + } + if (FD_ISSET(listener, &read_fds)) + { + acceptNewClient(); + } + for (int i = 0; i <= fdmax; i++) + { + if (i != listener && FD_ISSET(i, &read_fds)) + { + if (!handleClientActivity(i)) + { + closeClient(i); + } + } + } + } +} + +void Server::acceptNewClient() +{ + struct sockaddr_in client_addr; + socklen_t addrlen = sizeof(client_addr); + std::cout << CYAN << "Ready to accept new connection..." << RESET << std::endl; + int newfd = accept(listener, (struct sockaddr *)&client_addr, &addrlen); + + if (newfd == -1) + { + perror("Accept failed"); + return; + } + + clients[newfd] = new Client(newfd); + FD_SET(newfd, &master_set); + if (newfd > fdmax) + { + fdmax = newfd; + } + + std::cout << GREEN << "Accepted new client: " << inet_ntoa(client_addr.sin_addr) << " on fd: " << newfd << RESET << std::endl; +} + +bool Server::handleClientActivity(int sockfd) +{ + Client* client = clients[sockfd]; + if (!client) + { + std::cerr << RED << "Client not found for socket " << RESET << sockfd << std::endl; + return false; + } + + std::string line; + if (getlineFromClient(client, line) && !line.empty()) + { + std::cout << GREEN << "Received message: [" << line << "]" << RESET << std::endl; + CommandHandler* cmdHandler = handlers[sockfd]; + cmdHandler->handleCommand(line, client); + return true; + } + else + { + std::cerr << RED << "Client disconnected or error on socket: " << RESET << sockfd << std::endl; + return false; + } +} + +void Server::closeClient(int sockfd) +{ + std::map::iterator it = clients.find(sockfd); + if (it != clients.end()) + { + delete it->second; + clients.erase(it); + } + + std::map::iterator handlerIt = handlers.find(sockfd); + if (handlerIt != handlers.end()) + { + delete handlerIt->second; + handlers.erase(handlerIt); + } + + close(sockfd); // Close the socket + FD_CLR(sockfd, &master_set); // Remove from the master set + + // Recalculate fdmax + if (sockfd == fdmax) + { + fdmax = listener; // Reset fdmax to the listener's socket + for (it = clients.begin(); it != clients.end(); ++it) + { + if (it->first > fdmax) + { + fdmax = it->first; + } + } + } + + std::cout << RED << "Closed client on socket: " << RESET << sockfd << std::endl; +} diff --git a/ft_irc/src/main.cpp b/ft_irc/src/main.cpp index 366aabf..da2371e 100644 --- a/ft_irc/src/main.cpp +++ b/ft_irc/src/main.cpp @@ -6,7 +6,7 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/09 14:00:46 by fgras-ca #+# #+# */ -/* Updated: 2024/05/09 14:00:52 by fgras-ca ### ########.fr */ +/* Updated: 2024/05/11 17:16:28 by fgras-ca ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,11 +21,7 @@ int main(int argc, char* argv[]) { std::string password = argv[2]; Server ircServer(port, password); - if (!ircServer.initialize()) { - std::cerr << "Failed to initialize server." << std::endl; - return 1; - } - ircServer.run(); + ircServer.run(); // initialize() sera appelée au début de run() return 0; } diff --git a/ft_irc/src/utilities.cpp b/ft_irc/src/utilities.cpp index cf22ea1..c48b07c 100644 --- a/ft_irc/src/utilities.cpp +++ b/ft_irc/src/utilities.cpp @@ -6,7 +6,7 @@ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/09 14:23:12 by fgras-ca #+# #+# */ -/* Updated: 2024/05/09 14:34:50 by fgras-ca ### ########.fr */ +/* Updated: 2024/05/11 13:35:49 by fgras-ca ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,22 +14,14 @@ namespace Utilities { -std::vector split(const std::string& s, char delimiter) { +std::vector split(const std::string& str, char delimiter) { std::vector tokens; + std::stringstream ss(str); std::string token; - std::istringstream tokenStream(s); - while (std::getline(tokenStream, token, delimiter)) { - tokens.push_back(trim(token)); + while (getline(ss, token, delimiter)) { + tokens.push_back(token); } return tokens; } -std::string trim(const std::string& str) { - size_t first = str.find_first_not_of(' '); - if (first == std::string::npos) - return ""; - size_t last = str.find_last_not_of(' '); - return str.substr(first, (last - first + 1)); -} - }