From 4d212938a5b70532e9b04b5259400ad7e7970b39 Mon Sep 17 00:00:00 2001 From: marcelb Date: Tue, 13 Feb 2024 22:06:42 +0100 Subject: [PATCH] Add protection for already banned case --- lib/ipban.hpp | 5 +++++ src/ipban.cpp | 13 +++++++++++++ test/test | Bin 279104 -> 281368 bytes test/test.cpp | 2 +- 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/ipban.hpp b/lib/ipban.hpp index 93f97b5..80ccf49 100644 --- a/lib/ipban.hpp +++ b/lib/ipban.hpp @@ -71,6 +71,11 @@ class ipban { */ bool unban(vector<_ban>::iterator ban_itr); + /** + * The method checks if the forwarding ip address is currently banned + */ + bool is_banned(const string& ip); + /** * Method calls exec and adds rules to UFW firewall */ diff --git a/src/ipban.cpp b/src/ipban.cpp index 735aa9d..98ce2a8 100644 --- a/src/ipban.cpp +++ b/src/ipban.cpp @@ -67,6 +67,9 @@ bool marcelb::ipban::update_db() { bool marcelb::ipban::ban(const string& ip) { bool status = !is_in_white_list(ip); if (status) { + if (is_banned(ip)) { + return status; + } status = ufw_ban(ip); io.lock(); banned.push_back({ip, time(NULL)}); @@ -85,6 +88,16 @@ bool marcelb::ipban::unban(vector<_ban>::iterator ban_itr) { return status; } +bool marcelb::ipban::is_banned(const string& ip) { + auto it = std::find_if(banned.begin(), banned.end(), [&](const struct _ban& an_ban){ + return an_ban.ip == ip; + }); + if (it == banned.end()) { + return false; + } + return true; +} + bool marcelb::ipban::ufw_ban(const string& ip) { string ufw_cmd = "sudo ufw insert 1 deny from " + ip + " to any"; try { diff --git a/test/test b/test/test index 17fed07102c5d37b573572a77f75fe93dd1e8736..d36ba6b7129ccd0ec2470259bf6a82504c31c013 100755 GIT binary patch delta 66336 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�y)k78;W9Q};09}Nh74CSdxP=-szlDaDsYGqf zORU6X~Ib7f6H1XyAYG(^Q=|non(jz_gTHagk~ouSOI}` zfZLbOpK%B;6-jJ9nw)@%2M)Colz(#A@ zsNPgo9&_Ry@TA0?w(K}fV#daR(ok}iFG+TWd==LSoqj?dg}!M!6I6eM9a>JdoU=2C0$l}6V%Rf@F45(L1=RBuwq+ztRSZ$6C~zjGUj=S86%H5cd5BX zHj$r^yFL?i2UkLR1&UW+VkTu4_fpm1%t|0H$?b!-$T@QNL!~;8!Or4`;b|`$Y(M$( zEEv|o)3J@@0Jp3$b0lu^;C}A3mwfelq}5H)b(7Y4WLdQ>Ql{~~Q!DQU^6>AFQudQh zxK4g}FRm-&!zw6?5$fY9iJ82(mx2uP#s`ojj48h%pCr?t37UiQ?P16LaG)RgNiH?f zv~vR7XANUhjiaDb2N=qBEppe$H-*A+1ohi=gnsf>09|Xw2{&`gjq%{D0qY3$i#lft zvXW^DDt3aQI9FZGC+~X>hS))@6XfoVXvNO3b6GZ2CaC@4!f~$r1~sM}hsDA8us$Pq zAEz{ogT+bQrEAeQ2oDwenNpV~=%)J=_0MNH*b2vo)wzpf$7ku6DeF-%76PmBJ^-EP z_LFCE`qH}1A>YPE)xq*)S7fv(H#E=E{yW088nCyF`IV{z??C4=RbTH06LVdya8)>Z zZ0+vQm@ynlxKFkwkdI@Jok)wJJ)rNty?>p29_Qd#>VHYTt|)4i{mOc)r(?$_zug7R zK}<06d(+5))=Hj~EJix(783mFs4lPj~JI=bGqp$lFvi`jSm8*~ovff5dzt zF*Bpx8U|ZB=aqR9ycj!k54uVe?)0pRHZ|PKeU@s()anZx?#1zC@;f(Sv^j16R}X4p z?os3Brw~n|Mp8dm?ByEU=Y*rb-=;<(9wz8aJhDGhMsd$Pixxj7ci-3+e+v5Uw;I-v z$6bekv$P{$iZ=Dw+PV;iw$Yt$EChdALdTE~cG@O);wx-F7cPDE@p$-;=EUBVex4O> zhR^cn0L&j!GGR9L-H#K`k_X&}o_3|C17W{eO=MRWlu6)nN1cfTI!%7X1gTstTS06M z83aS_v)@(ZQT}j{g%7LLVCbLVtXGxa`*9I8u@DW=*DzBXbEaGb^w60UWk9|b0#=n4q4a1Q*|gD58zy?8Jb1jEDHMC zt^Xh&SqVIdju$4t&NfaXYX6e(vSv)WSG=HM?BxOS_wm@@6HQEXSG)+T@6h;m;l_sh z@U-mH;0IkdR`bc{agSJ&b~4D%Yy-GQeg-_!IwHpsCbXbn)NnZ1TN+$D+#cc15bbh` z8do{%Rc6Yt5lDG*KY*^E{m9)n^3Mo|#ZA;$dI2f5MJA4f#XX!a>(bLE@{#O1+EV9* zI~HT2pFv9ZR?86-*OsZm7)L+I>ccH_6B^nm0(3LKu`uc0olhZu%r%gIB;Uo=stzqSNY=vk zm6)l&BivQVROAHDIPjWW#ilUjdh#}B0rd8<_IT(oVkKy$Ws)x`1H(EPn?5f&!2MN# zZQ{<$ZW|kh>pH-X>3Fjp@#Lnxh`CP^ZtNf9CQ);F1KejF zKLt%)6Ix9~g2H#ebxoa4UXvB8)etZV`V%8i+$1_aK|Y3eGia*g56IoG z1>7UA&0V%OaH|(h1IrN}drl$b%X(9|DVY12$}Zu~n)7V~XlfPJo5J1^FiK-x_DIYa zxtf_jllREec7O-bX@U>>$&UaOCa;{rvkG6V#Eiv42a&QWKIDsl;HzC5VZW*1aom|} zZWoak=g%(=ybXa>vnKMY^}1iUIh)JkL>S17-l4wx*;a$; z$mlxOMQiF`B){f#7-@N(fhW#j0=_6SfC*Z>1YX?r0?l1=_p3^AGoj!3zc66_Op6KU z$X9R0wNtPViQl83sB2!F^D;X?%n6B^MsmM_)?^m=mQP_a79ZAl;g~o-qsDR`&gvcW zZSofEy}E99o-MU3=gc8FsQp5;_=<2$Rp}Bld0D*yBDHv$ykQ1-OQyU_-n&Hp_Dq-q zJMQhx9P+NaVL->>IpI=e=3NS3`B#v(E61vCnTC^BcNRbS0Yc`X=v?TRyKEcII!Hy>$X_AOfdd0;Wm~$2Oa(>^>!V=-)7s@8N>fL>=-Ch2U+qAFAiJ@KCAq zkoMp)thMM=*a>y*2i^q_vfTFzw?%-?6FnbE-4C4qMP76td}yayOYYvV{zhKl2k7f0 z(cv}NAM8Pv$1%&caP2%7sdL>AI=W)SEI``GkC3Q3)3zf|;T}UfBg*sn_-xX`gLUoLZHx-A6OXG5XMx!Q^+-#P-E1HxKKzLck0y0pn}%sDgUfgj;m z3s6P4>4YZ}j2)l+L@?}GohS&-2GE%>P5FIr?QF-$-LI|$E`o#d=b+z`_UDsNVK;Vq zx%jt!qacYjq20fw4MWL0VL=y>KElo1fAk7UrgQ%o>bqasJWM|D80@rVhH5SLSUzVw z?gG($VK)&NzLho6oe91p_u~nuw&kznX?#KA6Y9$!Z*lC*{Tx6irvBth0{P<-x>qjs zCK6oXzDYZByl^uQSIad%d377{{uhnL(D`+?DJ7Px(?iF6CWaX?`VG{zZV959Za3l z;0AYsxi^9t z7dg&u)kIF(HZ4aED<;C64hsKwz>jnIMlmCC?bew4NS$+;tg{53wQNa!+xJ5P}Hfn zFL;pEnKP7**UKVsdPR)qJtTFven)cm8v~1kJ1GZkrbZ=hiEA*EhshIbpitVSE3bj4 z>drPue!rXg1IdeWAgY}g>~oJwKifjFyKLW+Z`uqydT-)=A8xwxP|G=&6qV!Thxb5V zyZImFOAmpE+iSf6fmE>L1j1&V}|_Jd#uuC+$^;q z&=OC!*SC@10zx-2=BqC;Q`jS%WlE`S@^{%CwXjFX zLpU93<2<|>b_#zF1G>H~BtIO9GHE4b3zstatis7iAZ2ty;Vm%q>PTGc9Yz=OVD1l} zfY@3_?*3-;UGllEf!QUsdM)mV9Tk0?=*5Si#e-lhqjWhwmsu~_+I`9sUx}PxWbD2R=8=&luRVk z;Zb%Q`0Q#>q)bbhEWb1Wrv?Z1M?`7OsFSbYq^k33oISzNW^uqY&v@ zR$>QI_Te2~Yo@G9?tc6+K=?9gy+ZBbNpCx53wJ#E-eb!BUTE~D#o$ljY1CN&U42KA zzk3;6tM7gC>ufjWr7~gX)o9q)cAFqvbnHft$!W+kDxK%B*3SGXx%->am3A_7Ty|6WI^n3# z*1M51yFPrBX3AycbM^ytA^#6~fr|jTQrFxAJEL9o_CMs)Tw95dQ?AMD(zp1&d2l8+2ATv|d)P-Q<7>|)*Oz}YI?sjGl* zHCFLDb*tZlx1My`@qpIrB8iz6IsP+5x@=x1cRv&g{|x%)4?~~xvo)D~28*Y~{*K)J zxS;Yu$BxembIO63T9J)x2lJL$@A=ycH;wn$1|-lfGLgLZPH-*atK=2xqE57tvdOF5h5kf*SnnNm z><_TkJIiG5+v`6-VBM+;L%o=w7qP451ogoEUX+?jHvwO;=kcHHl49}zCObk4a$Pe8~0DoPXb_c%&) z#y=y5nG;?m zf1wn(PQ1U7$20`jp48@B$FKaX!zmc>(UAP@1!veMajn-~$j9XRCnqXX|1NpH(^8QQ zJOex1EjZSj#WLT4<3Wsg)kE`E6tvp~%P-Nv6XXG|5-cF!8V(1#N&b@Dy^Sh%7LI4! zhhb+XGo^lwg7(~4=tT7)x%<&-Y{X*Aqa`#Dm*(@IG7Ihr}trUTo zIo+=p-aCsoA>G^RqtthQk?1D5`@N$l&%wStt1{)!U1icKXv!(L9|~v%okxOKh61!8 zZ$y4R7)>yie1`B)nGRChgI6Yhm-@-oz)R~pwPk;RgPsSWIf)7O2*)b(6*b&nye)JA zDc|6srOt@6$j4{ER5UHVMSgf^eoq_72gM+3YA5ufV?W4p-@5lO0_Uyq(NM9T=UtiJ z)l49_%EP2~^hYjXy3;@Eq8+z|aHp^V|B@J{ht(1@UBUeu84Z2}zZC-8PqBFKlCNd) zwB|o1cb}VkWy&@7-QNa|1#kDK8-1Gz+~?rt=OvAyVpot89Yh1=-p?sYz}Fg!xhpZF zyU`Ds*9~}wtKfaO=IHvcQMh9xA>b!y=-?4RIwW5tcW?FglOL!AeZ7Hf zkgd6$r7_=^5;M8Y%7HVrUHoU!6~3LDp72m+{wr%5wB)09uS$#drs})?shaX<{U6)3iR3?DEj?DRZLfC!Z&gzKPgPfRUp)RzGcG>u_sGK!=V`=*=WI`kUyqEN$$kgg z*nU6x1>3vN`GqGrZm{p%J#S{ze?em0ax3xW%9d#In`c4#yIx(`Kh ziHfqHZ06tSp;S(bsrDOk`QXoW>7VTyZl7!BFF$%(&>q~}Kk}gvIjA%t#D1f>Xm{tO ze&*Qcn)}x+p)XDAXX0r)tc8DMVf{*;{K2rkE&OLb+)P(RV{-obl8ajU2bPE$gn3Rs zvxnGWE&U^lSJ(^w;4@=TOaGQ0&nX0XZ?orl{(V07{hi-A=XcKeo!9GJ*VeYJjS90G zvA zhA#$)?fNC(mlw}C{bc*=vFE{lKb#Fup@YV*Yj_W-S@7-kR9J{NEB(;-&!^J}rQet_mCHEzXTHd`a{ zhTcT`Tded5(2k4wZUNeM(TJaUqI2By6_M{2t@Rh568D#~s;fK` z#kZ7@seX=CnlUPWiOP9Mr97d2)={;~5G(5iXk)~$?wzz^(b8j}c2t!#RMjR#H1Z74 zT8cNQSs!KdQDyTL(Xv5+wo=8ORqeYd`jOJ9YTQ8C_fqm)vD34Y_O8;5l|MJt4b(nR zRT?D|xOKpf$^jyom7WBKU6K+B))CX zNsCi;Kd36vSC!pLrP-}o(?~W#C`_LP{!&tkFB zd!RN&)w#kuT6;sZ^y#E^7Q=i3T7BwIK3lLYwnAf|+HB@eo6Trov$eAM*!I09*7<~M zgJeT8?$ou}TG|3_i4HSapvq#iWi&Ap|MG>Y=xkY;;%DlAdd<{#u+kr>_uutL+)VwY znP$Q`%TBzH(zmzy?>8gvwG6Fiw3xLt6@4uI_hNpd0PV8$jL2`~*=V&@fp9Cn?!k8& zMY|pR-T&_ewa{mj7wChBhB7j$npu{->`~U}M{(mhv$b z_OUIo!jG%4w{5i*{x#qqeAv*o$qFw}@eOSGuJn}#i;|b^H7h(-h3nalTH()Me-vNW zwSA<*88+J_mB7<>-b#?7!XCCORyeKQCQqBq-FDLoFHrH=U<^pF{jMrxw|QIP`6^zw zHMhpdlB;H4V#NG!qKQnY7q3OuAN2GTQ?sU4%CLQ=KDU;BN>|h3wp#i^p>^!kCG|x! z*Wp^RJ1l)+E&ZllVsgi*jJI}~*~)4~-?a3OTKce;%=8tt^wTVTWi5TBrT6^dZg+(K zsKUZKs!_&--KNdJT50kueP}IxiKUOIrEmDMX(zgtKHt*E*3x&k>hOG2qlB}Tn-XiK z@v{6drk37)k6Bi7E&b6w;#O2tLa7yb{}k_e-?Ha6~C&_fn3D+wO7)-;8nYt)K$RV70ln-mZ}{q9(^D#KC6 zue~5^W&BO|o)mvi>e*^KB90ZRb5`doG${Y3%8Spsi-#vCWPHFLPammx46MH?bFEgn z2)@T~IiA9hb3E{;)2S8}q1QkD4$ zmEEhVKIN9vS)J2WL?eo@+IBw)9CN5peD?Ut4~^d4wKg52H!wG-=fi)=YP)S)FM}tM z0#w9lrca8}6*9ef|<*Q(JaDE2m6O z+$9-vgWmOiYt&^@7RQ@2VVNvx?TPGBW!Z7%Yfs0o{lpP0mP`$ceo+n%vlsSINmo-; z&LRgZhbwj+v5q(Y5G7OJGkn~&P_cJfME$23ajPn{tipxo#l}B;?N8IEV$v7Q+%kW4 zI&;O&y((?j%=e~8@a z^YngS3T;Mnz15c@bVk?4KVPufyx+2GYxL~6N@mwL7sS*V!@GS+VR9T>l|Cbb8UqVI zsS=AE1Ajr)BhIm?sVmVvzlfh_v}<-m4jf!IR;@TEi6x&}J1RuynZCix)F3T#wEvIz z6BT08%&x(=EdyUOie%el#Y_VWDn!A|-tEFv%a0B(elxI zGXj;PYc}I8*>buaqpp^XFv}oVwx&u{;#4iaV!ek3UBx zX^So1O`eowvU{hBEpu81bW^G0F8rvQQ$^Kv)im+f>=xqsoKa0btSSI+!UY~6D#L78*$D|$O>W>w5l*d784N1?DR5o7CF9@iCi@)v}zLb-;3xqRs1ry zv!493$X((qy3LEuh#01FAC9+d2Udp@Wm%rCu-h8T^cu4V4p%q3e^nY+@tdkN6;>|W zaH||QPc^`c99thkBd*LFt-CoypVYPyPxDMdLk`F1Y;cV=6LLy@Sfi#sjX?gGQO(1 z%Lc2gXj}z0Hw#4LD)7&tt~9O!ALo&YYLdoP;MA+)x%u7nhpve)=C_WkyhiaH6#kL5 zpf3q#6?$ilz(+sUm5$0;U0}t1B#q~+P9=B*r`nEn^$BxRbv0{>E$!h(@unYKMXtRnW~O!1 zr%Vt#)0+6_U6py{Hu&Vnvf)hZe>wgXXVO}S`*8^wpB)=&&GsxBWTuR*PWk#((PUw3 zee-zHePJu@5An#t5Iw*lmMv`C_(t_`deK2`&R!MKnZBZUVcU!c3f^rZ?ksBc$RE;EI8p6|szw92zE~4?+0;<|-m+X)F01-EqY9}~ znN|Idm7`@)RrtCY{JGGHIGkjj$dVm%M;G~xnjc7&PmJ9$a<(9 z{V!=mo_KQ}qA0)2>X^sn-e~#5US`QT_|x>|0A`em&hZ@a%QRpH7@c>ect(P*iE#)iweR^1BQdMj^LAodK&u{*# zd&n@iVTnm3NLVGQG1)`YhY;y@gfYnf$F) zN7~(uA{?EC&(eU%rc(69bN}HS=f$de^e5gi?_1%Qe!u>CycnC_OV3LZThqguEK0K3 ziely7V>2gK(Pi;*dNVyfN&J-FTyK{o>MoDAujGI$eogoH{fFeJ@oYuCRKxtyw>Sh6Ioe!5~n*+KLo#W_zNiB0p84=w!n3dRr>BG`1 zXUuTHwLzFtOVDgN3@NmF1f2Ow9LZ=tw!@dIS5>0=YOIbbFf*y~b{I>X|MRbfxSk!X z5&Qdvs?O~$XJf5X?Z|JaT+jYV<7Bb5y)!^*YkB9&SedkzcV?4PdM9|AY*DR6=`}gN zSd>IriGLS!@I3RitW{j)aXFqGAARLotye0&b$(Yn&+#uso0SXo$q$I+r-H;=D?{~g zQ~Yh^pp5ssv29dp-kS@v3e)<~wl&hLa;Lc4hnZ4iF0lpH8d8t-*z|IdBbetWWTJ{3 zF&t&ovsAUcm@0epukv;sm3b6rFqKQ`Hkbz05b&&F@M3~lo9wu4R_+PC%*zK=UZY;Z z`9$Z8F8@*vVLOW}J;qZt4JdNVlV@eM0~R?xj5f_wAN;b>(B;0_ahs1(wv7yH?veh` z(>xAKzg}}=X_9Hu+#KKGV#gf3`=jGd^&>$N3bh=BSvL@>N+Wv8qSUc(Jqa9d%b`d0 zMRazc_#-P!49xOwGg~@EKF#Dj^h5mGudG!x2d%tUK~?0Ks)-@1TQ`nX?o;Nzm9_Bt zQWRvh^GZ@`wZA2cD_Q;9aKrRpEFP$7ah+*#YPH3N(qfMbV%6&QO;j(NJEj@}40W+$ zcaVNTlViudSX%l}{JJ$zRIG9fy!nsxI798B3ffU=HQ-rIy!T|^uFt3vmTScb6C) zUtQw5Zn8vsz4NTN$(x&sUh7&l32~Jm>!@7YPNc58U#~Yrq-HnOMJ4k=#5mNby{A{~8pBJfj7 zF*!^0{kOztIqf~7&e08HKNC+q-CBfi$k072#mgJI>Up=s#SKgJR=33Hr`vn%{ftCk zlpcKQ=}wxxm@6R>x+zdZiQ3{iB6I_^CDZ!u=$z?L1KAb~j~ zGfP$MUC-uuXAc%`9I4sm4P2Gc#AlSzwqr2bN#qHy2503pf@SzG@$kmh;(}9;==(c2aV+;f_o$){9l74av^+~s_! zIBl8m5kG8eq8FYf^Mm@dpT(eO?$ci=CL`B9&xEx~HB`gK4`<6)8;OrX&Y0-qKFoK= z(GNt$Grjed*G1I!)w;(A;?3=mzOQbrYGq$p?U^6os!r>hiiXcN)UPIrkY@w*g{R0E zAcj2KM(=q|EPOUpZ*xi*&qg-*YjaiRq|>65_`^SmKc6iPnSvEr^+yXO*}~*1x2iB& z>b7hVSMuWZ=BGrb=UOygFB@z2;HQX=+b2cxbF=ia6Qbm~P`z@qxbd8S!)_-?q#pW< z9CtR0#yi^dSS3|vKF9l2E0-(LJJl6CL#*T9GWDucv5)ji5}kMZiBGcX=^+lWaYtW$ zs}P^=_^s}jJX$c+@*fl>&p#OO*n3shJx{8vp=2E|Hmq);Ctnpq^AFY?a~wTO$%kU+ z5B{RXi|(TB&L(x!E+h&g6z=VUNUX0f2 ze(|o$Kt_I3@$xQb$IWlcQsc@T&&nuVwMr_ib}v4nk{8O$6QaVz=P$KxS5Cqor?9KI zE^|ItIn|;Xc$9`eVCG_wWCtF+clQiUZ+KZPMK>>rcVF&R?`?ICEOMk2Z`#w(uiXP` z=&K zCw9EzWp6dhG%wD)(n!DjrZKFg79eiEa@4-}P3pm+VM{4rlYFwbxxV88abs^k{n=RZ zwzMyuVdiVHTW+_s<5(iYU)JZ|L#C0uSC88DLp6*n-q&3Jqo3Hi@0>>=ddIZ`V*YE< z+D4JT$6p+N%~ucEFV4OeWZ$*Qs*>maM)sX=V4>xvfP*pn1M29B`C#fe&cH@RFpWpu) z+poDv*Gm2q-TNQOAKUA68ohnB=22@$U3b~|*B;uw_GI=$Qd7}yEvx1UIv{nU^n~ny zOZSPbhf4Iyy&~n!C-uUY#q~F1>h;7FN#&vJ_E#+rKKRyXO@C&$81|08k?5y+h{Cr6 zI%N0OY$@?Y@(95?X~#9Uk5Sn^R3Nl#mjOS$zYM=iF_p&N_mlz z{VsPFbKdRSwiBV6&oC-UkW6AO6B8K@j&-}lXYVf5ABz@)j{dD54m&vDy{4M}cfOc( zEHJR;4mzmTHL9EAqn%>ovFG%p7e(~(S%HPmTWKn5UIOpU7YB~_(O=CIzaD>FuXz68 z?80-J9<)Q;e{!kET(UTx;mz3m=E6tV>xMroo8b3yJMr_$PxRB#;@JCr^$B^nB|vn% zS@&SbsneS7|EwH9A^Q0(lKwu923ws@u8tVaYkeHHts?St^9J8;L1$ZCxUhla{1!3# z^g53OgR~~CK}D0iUf+)Dt8J8-J>K{=L~Gt*R0U=n$5aR6#y>YpA91;e zgVf2V>XN+UR`E$uw0>Wp(2Ae$@JS%OB3GX{nZHbCIjU5n97?UzM-@`LJ5YR7+}yr^ zx)_Z*YeDvOlF5Zagn#&`-aOEFzN;40sD;d{-U~Qnrl>%1?8BLQ$3WwRpXSe9dSh|l z4|T=3Gff}7hm?cXen6qz>c%p0xLj7MQF01bZ zh+}8wba+^nEYHu`e*N3YrAZysukK>(#~od@{HQIhUUuA33|!qLMt{`9{aIY^I4xEd z`HD_w8`Rsur$p)*v{1E9U+Qn1Xr=KAV3WJ}q{OT45A+KC8{1NNmE6~9=tk*P^|Hf( zHdod%r@?L~kXdMQvJ7$CkW>7moDG^qXml01C7LEA2-(dOiC+mZB%%$9KQbXqneLZ)sy;{e&YADFX>%!#r97+*PTd7 zj&-@LTKQL+%c|;~{Hk&q%e!i!dP_gEb6WF7Q;p8);wREd7r2%3)f5AC3}vU8P{#=c^}XMOaCebr(0EnkuU*?9dqK0o_7pgrT5A))#|UDZK8 zm72q`$T3D~)N6|Qz9RPX#103fMxKqb{VuB>P(8mgPxgGts^ulB=S!%<%5~!1&wF@u z+knR=tygb&e9rasNjCGVoiPnr4r=?8rqEP~b3OI@e8nf{+UY}l#jSJA^ap%Jz!&Wr z4yciBoUa)2MU=g#mD_i-j9Y6x+N$aV`ig=t+WScR)K!(W#!7A9ZVF9B>+|jO6il6O zuP-pmn(ix%^DpT)nuw?W@OO7#%WnL>C^-=>GXE8+uTWb1)-~3Y)Mqu3gErWnhtEa7 z17RZKLJR$+CdMR`YG^#CWVP2$&Xv1bH_l%~za3!w(^YFAdLOOpN~st73(v25H_cNS==dDS?a3!mcONyD(9A3^=U~mZVbA(l69BatUIjX%7lCzme)!btVZ#@>No9u zC#iI!CKw&-`cRq&@WE<2ER zQNJR`NfqQ9nD@CEvX(J-@!aKhd^lWm`Cjcw;kqO@#=&u!VB>LPv?@!xjWH~ESuzI|HPd_|M*Ui8US#hMd&GqPMX^bG-O z{%IS8_I--yK$&FKDIfWEUiYfn0-w{Ch`!~m8#Zkuk6h*?{OhWiS3a(nG{h>l*GI;z zm0RzhvWdIYk=O58OPx#8?>eX~NH-UN0MYEqxVE=s=UC2ZaQBLTN6roN74JlmcjW;- zU@E)PvD-)L?etyO9V2-KXpVp)$NsO)_t1Bh*?E~fb+>S%dXoZ-mND8r`XHLC%0#*f3DDGH*vjw z7tSAM+3P+|)=xQOu5x6!eMht8methTZLC+d7q9)KyjZMy&+n)D|J93MTk8Mt;(^81 zGRly-{Npmcso$pS_v!WIW@;Xkb$>r`^r!xOnX6rEuKi22xaQB#Zr7sptG=q=`O;pL z{kW8G<(=1JwaFs(`Z&FduNvuvX=>zczaD5$O>^~D^PfH3PqW~vCB3zH=;wfm5!a>P z)$HTcrDoqR?y^7Cddy5!sugmTR$JmI*(ufsHExd5$K?J{by~NcN7gR9nH_hNj%xm) zc>m|lfpgRvUwd-xYO<-Ut@z}tM)o^gmdQ^`-2Ig~BigQY((8;B58UXYkN;6DzOl$p zef3imS7tsgaOlE%1EK%YL;w7i=<~}Xdhc6eXJs?-<}VNE_2!COzw`|}|Cd~*WT|CT z-L>X?_LoSk@M|}ZNXMS}RV$<;a)C@uDn7hIbmXNHHm{W<#9I}io`aQwOTT_+IXiss zDQ;CP)Q8>{^M75bN6(XUTloDpC160+;uu$Wj9WK`f01M374h_MZT#!0IQh<@I%@P4 zapt$tc71O3!lnHnhWsAq{wrR~<$O{SD4&{KyXRk(;=SJ^^}RLr*w>nfe%CvR{x`df z+eRMq%#$z6U92204>QVPqg9Z{wz$KC*M6(+Rb6S=RjfVYX}KgQw-v~Q)>8ecD7_h> z?Gk_8jPG`0hIEbkn1pCGK4#S8X6T*S)$Z&wr^=mAAUa-qR4o2?AHUC(ak-Al)4utd zB1?Su@BR%&sddrRbQM8=G`C-yg-cfc6(-kjrU1*SeK{&~&5nA~qv>&#MH;&6lJ%{o zuIXKuiR^9^w%6*5{H^W*5zSmJtDx*kt7T!L^PkIjZr*OZ!lH-Ss5NanB>=5xzauLo2*Xl@x1CcIi6dG66tu8 zj2C&^`^TH&ky|VEtJB4$TakL< zd&2AQk=n;%(%+r+BR`1Ee<%9LSI~pAWt};Ga3d#f{ynZkigb|NPpTi~hAEW~=^XO< z$9k0ObyW;@G`Fu$p-0W>BfBO-T)y2_4^9!D|AgzCD@F7_ll3F=A;en!P6xIXUd$zydg9simAn4N zkK(?9p~B7ikbc&mBAdzQkS$BtYjd3={N7PJn(IWWdflN8oLjuL`}8wa8QjjPtz+e1 z{>J4f&E5DrNNcX2^Ow&lO+;b78&^wBbm#ajSF~yRzmklVfm(ATuLGZUJ^pt?BU96w z>FWxN=QJ&}!HNR>yB44E8QLV{Y-6o&lg(9IsdD+KFQ|TtCR%XDBT3Q;W=FI`TjR61 zAQfZ)ny;f6h^q1vJ~Q2>KA4juQ(64^9NHdnWeXa+H1%bXXcoy!B$ehbHt=h9LgcbO z2B;gss>Vy7sT0(j$NgoEjB;I@tf%`LJ$7yZ7^jV*RuFZ-Vs`8i* zfAmDG3d)y}IMVg1whv0mM{0eb4esH{VAZJw3G+T81&slV7JxF?M=t{rvfr89BK)^pEGCxrYDd zV^n%-9laXJIP)wQXmqZt`D#xY1L|rmrhlwzbuzvvu2^lBIS=s}i2R;QJy?A&W92mg zuYP{qCtoUNkJ@J1RwJbjW`EqQ^yBxSKP*RNu4PiKXlh33KN%%;wUEB**_c|Wv#|A+ zbdSs;AHL0Tse;ie$km~&i0gG;XCtDX7Th37#+fbotC2CRp4Oz%j34F4Oli}oK%unO z&RAGai_ktacGS~a-)pF*TWy#t-)!C8h7TIihS5r2-G~##^{DxWXI0(b0IUY>iYU-xDX%Y;wkF85ZSc5)p)(3)=Y~rK5D21X@17l zhFV+SW0Yw3$*aKloQwqnD5T%G3z)(dzc-N3Lr<I4d~e3zn%yMo1$qaBP?VjJd*Cph>2cN;&Q=EAIc9_MMt(OKPP3 z%6PhwHe%*rGu~a+=-OnLp;WZBs?)k=!XB=Ka#+?%c&nkRooP`XF;oLXj0YQQBRg&8 zmYj3I;I%gful>QX>OrnZn#&`Ry!c&vN$S>+!rEzL64g%YlZnL|o2X#~H_=*TOeM3c zQy;xMMUo2s$2L1dz8_>sxOr8{j?sw!#*Y1TF#@g1JvOB(aUJyuQk=|Mq7XF z0eg6YdEoMIa!r1cUn$4ohjQ_OpBsk178Cqu)$v7j;(isYF0$VA63<-;HN3+$w`S=| zE%)JyBj)zbCiID8Cu;HO&!NV^0IiX|`yi{dX4R!lmTz4tZGkkfDy}lrc;274e;2>> z6s1?2sFzXo4lCpQ`hZup|FSnX*7teIV_b}WrAn{vBK2AO<*O8VH)(F+!v@H6T{r)( zd_ZgtA{L9&$K{gfnDLD9aiBKK{vqct`GBi`JJ1-`R2v$5iH~q<99KUfXy#RJC?r_@ zy5VybDgEr4xxdvn%9?VNY#F58Hz`Ox7D(q5szVCf{AI^7KB_UlGYTStJ(sn~dO2Wy zvRZmg9@2>^aeL&?i6AXNPak0Zg2I8itUApNzh>Hl zJ^$p521Z!l_!OFZghBH3WA4}oRZzZcDVDLDR8ZcX+=j}JNP%XftcRv!D z@9kO}_lIiJ+CFi{RV33=)zw{U$&1_^Bn&O^e;tjM8=+$*r_j`f&cX zgY`yO`^YG4r8U=%yKt$M)?M2rL;mVYPrd}`cB*!jpK!1FmOxu<%xkUnwD)+C;Sqb5 zZ;Yyckw!g<*auN77L4YiVsj(CmwWZfwxc_5Tz!oe?ph;be3<5^hj4AsR`Y8%FJHD= z?m%~4dmZXs^&s28_#jLh>G5t)#_iSaMra#$=h?lC^aw5T-gvjWW_b^SHD-Bx6)eK% z%!w1`e0Q`(Ddyh^s+(i3m-R}F!Zth*J>ceAo!sS`*v(%5fVtcS3b|O-cN3Qu`y1Ke zTGJkR-?|=!)m&Rf&@7eZqsTE%1(^^F%P86L(Au*2wO`7JK5oW0;o5y#kkM|coAT3En9*P>v+Rr^)$yMwng4N4f%zE+Y z*R72}cP-F(rL7j(?Abh0|EI6Zy4Ub^qX=zezz^Nn+vYAzm5l)1^GU$|HL+@U}5 zo_gbLWVPe9_uek9wOXy+#_4t}AK_$IuUw6=_S(QkYbx)mIH=!vQSiMl@2ndd8If9wkFoEr+O08ukJJX}uNE4;I%>=9 zX@9uZyaqhdXnTyy9W}quU2;>EuAyeX-<0`lZqm)aa5ct!JU`yWxG#!F>+2_syeRFM zKJz}KtRqu4wUg%6&}GN_azMD^xN~SnFxzeZd$J^%^xk1_TZLYB z_)0t3t355V|0XSmot!P9QsL68)qGZj)NE1J%ULbsA}hpp|~{37fEkAoGl(QaE~wPyS>H@7WqW3?WlQ1^U0 zIab@|nQ?*3y<1#SM0z-#UVMZR+|cQafrH^-80qJ9-Xx8mztef0@Sk|Wm%HM)Ag42s zE7fOVcX$Y<5dRz81+`$OvjpbA-lRVOlVE6br!yVK!n~&Z`H@0|Qz-U@IGyEiOADvd zGstEugAwpW{GABjgsJc+mIgAJjt++hFP7Q&M|O6XAUaxOc$qf51iZ8=`4kd zSa2%g1QyZIb~c+EW3WHm153KvY{l?8EQek(Hk+MwJrcHngEJ7E-D%-{Hd_Oh^i;SP zZi8j;0$kCP`4CG>VDEUFtrRA~YcL(Q?S(60H+U58gBM{jybZsH!F&MSqBr?r6ikA< zp!&th0)%*e)$u5t0dK)I(6bLMg~_lO&V~-S1bPm)+1`Q?@Dz-P!F|z>#bYoMUWcLl z0z`5wErqF2{?!<%ph z3`(GjVa9rdLkQd9Ik+F*gx(J_&u7?dAut9Gfg@oWOoLZpKD-HSd=;AT5Cy^TA#@cS z2Mgelp$uYJnCNuIKFVLyfLTx*M#COu{`W^HMsXf`&Sr4H2>2VE0apyCZ|B%-Z@})b z5RQRo;S%VC+u*nn^ey}fUW5@Nso-3jZ5S+sFTiqG0`2o`w);onxp^5jTM|Nl6#8fi zgo*GboCSST8SO9zJ_$#{Z(tg1_%I6yY!45?OxS(C&Gy(Br!yI@gqiR&xC>r~r(oz< zDguYYtc(RLBnZ3UHW>C8fA#~Wz)xiY_`8gU{^KwJqhUE50qtov+Z-4M(_w$O7pB0k zU=|E~g#2(Iv@f*TcEB)r5@z&AuqBZJM#C()0PceJ@e~MW!E(3<+7~hCU>FRVK!I={ zOo5Fjk{=eseefbIfqj#irf@FwS@>12S>@F*MrFT#`17QzAoL!mx{=>-E}GF%F?WOyb^IP4FL z;W+4kS7QhGK8aNW}fwN&T+yWi&DD(`a%U}fj1I9zoN68Nd z!1Zu4+y~QP3ETy*!>iD%CG+2BHfw%Mn{7HA44;Ct;ZHCZwx7dTfDv<9NMK)B31`5- zR{TjH*d5-0W8l7dtP3)nisztx0iJ{X;YD~1-iBvkaO(`4?K_0ttr-K4;dx z^Po=$o9#4=hEeHs6&#)J%y2G2ScYO7%z=ktKD+>fmNUvDSvp|^^jX0mgHdn>TmjcW zcc$?^7!6C{c6c3r1-&{l1~REQTmVPHjW7-F$|S*Ngo`K+LHCs`7%&Xpgae>&6oc;x z`WOy}NiZE|!g9C={sD`j=PG6gjD?<^7&|Zmz5wIlbvOfhW>Ik%o`J9jVGJyW`(Xu? zA3FL(vv91&WpFr5ga%B7!=A)rFcThz```sw0xMzEQw+||98O^@JOGp7XD}1`tf8x6 zMsI{u2uZLU?uVXTXc3HrQETaIm;`6TJ#ak?T!+hHH&_Bk!s~D;^y*5V!$^1<4u-$M z*|2do`C%;F*OmD{4k0au1qN=0*Wn@9YCT;6yThAs8uY!#X8Rj2K8iXtq7vL@!xCsL?0W62Zp#5Gp9T)~r z2n@h;Fa_E+lOKk_U9dMi1&6?LxEtELGpk@2JP-Rr2TaL8xP_1fy|!QgX2BA;7hZ?Q zpjQtHgpsiKR$K}v!`Uzmu7?+40Sq>nesBe>fJdNDPZ|iL;U6#&dTwL>ry@*2$c2kw z0bB=5;T~84PeY$x7=Y0*=ot*aNSF$D!(8|cEP%hjQmAbwKkN^EdUK9|(QpM!gqycB z|5FieqsWE9&td=$fu(Q)tbp5~Paix2qu~XZ2rFSK^voka41@*n30MmAVFfINK7AR4 zFdFL5kstPcj`^R8Fa$*|Oos(<2P}m*UM{W;^o2zV97!?XLy4}XDcpz#`>gs;F-*lItXgfY-3jwdP@9mo8)y-v$f zw18=_FWd~1;32pGo`d`0O=v4%WgEbBgS}xkOoBULI(!Z0!OQR{toH`nHf#!S!%i@G zAWJ*!J&^LV5Ry=Ahw1PYm4T^k%!3Yi6izsZr{F_} z=;H*|ei#kEgo)7mO~xGT0dq4DrXdu-C9o8}1uNjzx9Q^tnH?|&h8$-1g3&My&V!rb zF?bj@e20p{=I}O5fT4p~A7Cte5+=iKFca>D8Tkn9kFa9F&)%cvF#H&O{1BVOaRw(m zUr5d2btwOa(H|$MIrKeA#bGO03QOLn;_wpm8N!}$3Kzo%KA>RuB+P{G!F>4p2hI#< zAwtM$MknkIZ9~}$U?^M$W8pI}8NLlO;dz)3wIW70Yyrz)A81SDLQ4J^K)7bqo4zhf}RiaHw<6|JObn4H*g008?J#(&ygR>mvF^!ICQ{N=sAY@zZ)T9 zjLr5rjE7g?3~2uX1JEDtfw8a{E`ScW5hjjh_k^j?>pX)JhQR_TV5y9UH(|4XF`LHG zKo|p`ha<-^|35}ZL(%5~M=F>I55sNn0(=Wr!eSWs2rY!&;nXkbDtH#A!!no$E8$T% z{wul)o`SX{#uyBRH(@Mn{54&bfe?m}3FBctoCXWwlduf#g|_jGVt5$3U!-C%5LUt* z7(9VKg}vcHITW5wdWg4R$MHUSF zj=qMYU@?3Q7IMk75thMS&^D7z28P0h-{VRc3zK0g%!IixA6|lmFu0uj@Ijb3%VwJi zQ{hwP85n$&T^2f{~GtdEV!1&n=t}6^K*bNrIWOxo1!%BDw+U9aHx{4jx9mc}Z zFd5E(nQ$A-okuzF5IiqGi#~^N6JAJVCHnz`un!EJ&n^h<3vf9MgIi&LcnGGz&)_Ne zEi8w>L;GX=J#YuH1=#H`E=Cc9XRh!&*}8cRKoqCvlzM(C110fd=mJtLoJG zRL6pucQg6FcHVIgk@@G>O4mnI>0}*Jh#zD;gIR5e@ea`Q>KF}|^Ib#5WX&@nuMYh{ zGJBmGCgN7r(HAHS{4siVIZWIn-F4)u>geCA1fi(BsA{3zxPJ<--B-IA)23)4^$Xmb z&i9G4Kb34eJ%y${XuLLs!uz-z4PVs!o5<$-kZ-uV(<%S5yuE9(@h9o@c^<}&>9Tey zeCQL+4}GeK(RVA~IV8%!2oGb(assIYv^K`V6x#KOu_Z-otzR8z?AT4t(iF{8?+{;Q z#Q9W#FX*aLRXMr zBuIXSg%|P5$hth?B^c|ZuE~SOUW@o4sGc0QhlwBlpm76z{RIy?op)qG_l-3I9%Y!t z53b>p#7C)E-@(ePktzd3FM1Ta_YXF|tP-7gdvv;U9>T+i@>UIn@&OS!UEK(MbOOCEx$cKh1Z@ZtWA(xx7YNg$a zeauP|X3FE{P|A5rmx2y?JGzAEME>%EY~^0gBd&ErPUgkclX)NMH;}F)>8jGCRL7SP zpO_s_Dv&7Gg0;}H7v@dey6#Fhf!Jz87oI}&*fldJ_bvacIvT%N7@xmTjhvIa+BlWMuUDeq?; z@h%{ZoShu)Z1#G?jIYzERVE3}Qli{s@{!Lc8rvr$7b1Vn^ki*yFGK!V$^J&_Ld{;6 z|6z)H#kkb?bc5y_G^4t|q`Ah-!p~$GeG`pW7g9zd$&U^*&Md@Ms?0jf+$3|6j}0?6 ztYc#hU8LFF3sBq`X0%_Vg}9$X9zNV$D{dku4L9b>)zH_Ebz``>GR7dECJp+ieWWQJ z?sU$TC5H~ZyTg;KJ3O5{{v*tFAP?DZgxScW$etq%*1sV4i^!qq<($2Z+&6bdDGA8Uf4^~%GAFIj^ zMW08SdZT&FkZI=dNqN5J7d`_UQ7C(%tZG}0GwK@R6Gj_y3HO%eC6Km{G|=Edvhlaf*_i&S5g~YYE2F%QQc4X>EtA3ONa?3hpC=xK$jjI@3K3`712Q z#bGnDW30Ai4*J#6fk=|>{Zcvv0G z+|!U3JZzp#HzTij*qjZAOj(tC4tYH`IjgzfL_Vh*bEWLdSU}z&Ewx*g)JldF*iII!Q(NsW9HRJ)vJJ1I==Yr~Cqvv`p zXjpILgomBZEj9Z`uH#RcV@i&h!{mLJG@WIkPjPYR+Ck+$*4o_1NMc)qty9Juk81%& z>Psv+dkB9v#@L;~l2d|wcC6{7>&O?znvVAh!R9!*P6fF~BFBs~+RM5RMot_j4}tzh zawf)RqevZRHf%j|={VECKIGe$ffD4%M`~ocj$-g5=IZFhqMrDO>48Y(xS9zEqeywg zNLWeHvym4jneJSVJR`{*efyBplFV^Yg1o?zuOp{g>AgZ3FG=!jOLLI7TWJO(Z?n?O zMqcN#kDPAF`;g}<+1d(9P$VZgor~30&}eG)EWb%iL6SKXeOt16B$8;sU15NHU)_Ja(>dub zqhqR!2Dak1hxlGK;~6G%NFfXDPW%hwjk)PsGdIM1%)VfXJH|_oH*1477Xy#fG@uW! zD&R2jAE~549v6_0jjw)0w7XZLIWXSrqQKVpNXgCI5cgB+UhE_0WB>k|_Nic+Rlz01 zpERo?a~&El4+j3`a|z*w6XdgFkoyJXHWSP-Qi&X3%He^`m%0=FxB2eGM@}$1ZVYml z31-JFK@Oi_cHB1PU~K%ajyp_z3Tasn!Y?S<>FiRoIWv{F)Yei-{Gti+xh5z)unlV# zc6-!Jn_8W=JMozll$YEP7fdjh$t9**7U#arl%+ZM!^o+oY4;1r$z+v>h)U$W6RbYq z5@wH8)$U6E-&Gw${1L0FOOW^eKULjE{HY1X*&N0W;#;b!N<^y`U|VkX zEV(;!_(XLI3?G9WG12Khg!q^LGVW}#jwBV>-165Q=X0dDPw!(qzm~xHs-CPqyiE>IY~9iO@6NVma%aaJ9Y))9)3A|9jmNwJBHU}b6Cb8hfJ1>q<>T> z=0_4vn9Nl%a@BeuS9*00;ZTNp32By2Hb!S-D-Stlin(GRMeZ}j9JUvc`%f`$WmE6l z$O%(Sj|X!Q8$3nrD&CvXkDFqh%{+P;^JcM=CzBvqCH5cAu(Vwu(PR=0&}d{)&+1C4 z<58V%a$}Ke#vbxzrdap*9DzJ-sxe_V z0|s%7Qkw_OLb5EH>U2IReeLXFJe`BDb4j#)x@ofjIS*ML*GrK%OgA4WDv_ioNfM1r-XZdAkchm^l2ehlPB%7eK%a{|VTQEtUr+j?fbhf_#@P*8EB6b?mx+_* zRU&^nqk0Vr?8vEjrZMD2t=SO7;F(V61hQB4r#`C6En|q6A4$!*E8e^@2t`+l={>}= zd)e#(-OXp6JTkqAeOdRT$S+v(MdbXM=H_`DdFxCgD3>RLG~@#q87_@1zPGv}<`MUP zSsU4h{i8U-TDDS z(uHmNBZpvPEH0?-qr|E{N+CY=w>!qu%eAH+Sp;TVfi}AcO#khUv$xFI&$>#kaUFDu z_*KR~TeN0v%MlllbWzQux_Lb#eQ)o~&4{azFaoDsh4d$I{QoH=h4`;kA>mnwXa1i; zb`c*iQ*~sgQ^@rg6in&rR$JFaa-r)@d>HWyW#tZbH7;+{n!Ee3h0UF5L~YhW+Q%UG zz-|9)sgkW4Lz-E$%-whi^2%Ap+~?@iZODe%E#ZfecVdS@T3wMEcV-ue-%naK(~$Gk zxbUwRO7g(294=-V-L|k4_C{Vh+ZeY6`$@=!v(1$u9r+}(%%6vRXtsIwEZxF^^(czZ zXB#WFa;+&1mJzH7;tb!_sh5;+dj0dq!vDKKUdRPo`FL)R=dh zfgEX^5G-eF5JOCH52BA01B}u=RH2x#KF65G?-;sYN1iapSSMwld)RtX4So%f)e6~v zzHt_P`;o{O=R2Jrup(DgOCIvyu0G^1Ae% za*zbIm$ugs{(6zq`2cdw3d=oQ#_u8i&LVS=6eIgBHV26Vxx-@R%5YCst!|5*P993C zZH!b?R4rW*#K$aF7oqO)$o&_qCCYsUa@WP?oL__7*^>7lce3PSFr>FE$d8+sjX} zj*?JLH~S9^8P^_J`?eW*yfB}XIAu<|A%KWXJnMW!s3Hy8OWI#tfz z0_3BM%!6ks@|i_uhgBe#EmF7d;XXWEl+)>`{%c#KiKo-gN_&aO?H3z2q@0SpVzIf0 zvAs$hz^y4$hel#LA_{>3rPe#h_fb%rp~;d|;XEK5iO!YWDWKNO*Xe)7eip z{3%YduJO2}+Ha|3`a)&mEQEYE?JzMV^Hn`rR!Td5*F3dAg_o@ljJOMVzTb_X@-r>FPqp%_o*a zsi}@eOiowVCv6gu7p4F2og|g`RmO>f_$e20A=#EwbOCajsV+sFmToRN709Vr>tf?S zmv?GBwfW$>Cuo&C-9#gMT`?N&!tEoG6P0YfDO*CgN4n8>H$`oedCZ~?Bc`RR_kHdc zkY|(R6%LxAlvYXj-E`yFZp;Pq5PXL!$-`c6WM{g0uuVetSuVE+{>qlT$Vo@>z;fwj zZYHE655=(M#?qItB0tJ|j?{7!lpp5hE?48iO@5qr*w7B)68U}JTUHYJiQb;&au%8u zN+wM9TPrY?g{-Ym?Q!3QoUp<)dkVSt3bR4w$T2JA8)Hs>{rT;<6=q}PCwxa&m?wP1 z{VU8_BfsR^XUXzwzP*;oJ;-@0%-4Cv$oW;=Aqs*PRVi*MMWULu)=)nS=D9c zqoPgjR{7*R_3a&Jn#Q1i+NigO=A@Cw>w6<=j~3MMI`Ox^v*I5%;|q!JUoPYQja<23 zm!XKTDqobsT#*(9v6EjT5B_a<&FUwCwj?GZzhi^vS#K$I_P^!o7 ztm>J4i1?Q*d*_f1OTLM`&a~~}8&BTv?ilmru{XvF$TP6}NCJO>7&a7y6 z+lM?`&F%0K#95g5U&UP~ez#@9YcP}KJM)AQiCkdH(*`3yOP{otRdzYA#&zdx;&&6z zsjWJ`#_47~@kfd0p|Co>#(KJs_%q*`rye-Ne;Tuo_+9@`V@ilW^8YmEI`PF;W4wm2 zu-0r$B#PZuV+JGdvl=rS`SkzOnDxX*ER$QHxhn4?+-jLI?F}u&trU5N@!GTOpB0F! z4ecG)bRW(zy}vWgyur|jMvnf@_({r%$ji*?d88uGV){HXOIv#x?(wb+wJk8%#r#sZNrn=XYP!U=yLAD^qt!GMq}!%An|#lvC(WL@g3Ajk@$Au z`lNZX#1Dr5H<+*(%Xi(mABoFu!Vdp<<7N(z707albDwMKR3{L9l{my|(btKe z75B2D0S5v#=WY@0KQ~00xvf8CL>Q?i2U36X$ofKK|yodks56Cbbg}aSpiT60=UXu(& z^pf~fZq=o7kM6Dcqh$DaP%G@Do7 zmvrLg|3RV;9n!L zySXm$YlxRE)=dt_|DFRc16soRB5&_bkiC6GcZt^bqB+J&w9;wZ!OoL-@6%qp<=iOo zp{KnCy^z;)j|v!k+MT^Y8qax99y5=`c|g3xOENpj5-;w>W8IjIf$+pMNt7&k`dtg~ zOrETQYVDuRs{P55@QzGxn6!@<-KFyRs-*j0Ew)>9%4Pno#&4DPyvXA-z22H5>LHnq zGSMTeNW9|+OkZsg_s+ZZ?=ZF=fqI=L@m7fETp{u8sEMLEcFTvYr?qRvnf>f45-P#gx9@It|B=XOYE@GO*yLzn>S|QQqlC0G2 z$sWn7uiYYVDe}^{%X?(W&x^dZ$m4F8-?r#Sb(byszo#$fR1pPr@NWj%ioCJrwOBcc zC5dKLb!9XCZHJTk$37cM_1zkKwM?bP~=(cLBb2&mLPcB1Mr^mp2bdS{mZxeQx&z(&;RzBRHC2TQIJ~x(<{M#VgDDtNNLw;1`&ChxViv6!kyzl?0m14c+ z`zQZHUSH&0MgEv0!8R{J3?uE*-9^6etasm4cC5q~{1036L_R00oDm!4^Q5fLp`-G7 zxTG(tzO1w0VUG8;fX*U+XRv(tCLkTEKtz^KYkl7m!8sM&k)H=T1)Eh!-Sv53Wz>fklP?EC zJ+)Yl^KxHY%dEh)?_E+H3F*@NZx0vGfDd^KbOEok-o9N+M-24VkzeAq%sbHQ&ui!k zBbGd#341I7naAsHUZdXyU&yPatHX4AnV~2;%&`<28+kSTj?fP|`zWaK9z?4);ktE$ zsp2|{4)#|;$zrPF`fvI(ssAnQ6ww!{B(&faR?EohO~oJ$*W`5#6K>t`>ha{+?y5t9 z_+X7oudWWprk*(zhzTUb6ow7hm3@Wpb5*zKVfiM**t^_%hXXwVY3>{HF;K<*_^|x6 zUq|<)w4<*-#7nxM zypTNJJ)R*y+??)S%?Pv%IBw(PfrD{%*{QshM-*pEPF4BkzHW^ZfyCB*9*5UEaB)si z{sehFa!KT+tMdVXcbg>9D&zw`aF?A3ED0@Tx<$e@Y@qz=IDB4=i*ty)z<7WR*5I3A z@G~z2UXuEw!@)O_-$`CmM!S}WJmi?*7YYvf4DHB)1Xp~9#!L09AwRDx%Z>8iC%|Jg z9d9EKJO?n}yNJ;_xsYH11#DgCNN(^0*%HXNjiu_fZ&;xR#rTPoW&2dm}+LRw8H^)Dc zZxrrTswH@(01_0KnBDQPg5agd&GDK-;QkWpU!+pUbEt29wY&^A<+l|WjruJGZ~GGH zi?W(v6?sFJc#=%`$}f;x4NZ|PgYxU-T}@v~sN7#ecNG)=D(E~3nwHZ)W%W_6Riwdc z=&bt~_`K6X>zMhT0XtJ5Rx9>9byVx*~W#a?_tE zx4oL7Loa314>{W^|FeSwRlv_Mfz+fI_R0QT4V9jX&yC41B!Vv_mlpBDWtsU@e-pWs z(+f+Jl!s!RV$%RFP_Vc<66Br^V1|~~0I%TVZ`=jmj}Gpkodq?)Bgw4~&8S6vts(9I zRz>qpaU!M?7P7ykXwn@)B(TY%TQ`v@M1HN6Dx6wtPN^^47nCq{X4xR%PL5D z840Y!{ba^aKFP=LZveiPj;+L9q}!{0e{w5vvqs?lrc6#2|C-=!I=BP=okmhb<^HOx z)&zW&Pd~9K_y%(6YhGy74E!{?RInG?GzafD)hoZ;>rv3L1q8)r0wj{Bv;=QW9!)-= z6}Z21#oY_ujrw`1|0DU2)+gxS`Jgotc;BcMWvjYHZT^|R+7{g3d8fCN2ZN4Go0%A= z(nY*5vOV-um?7&Ep@AJBm_dQ`9WS)+2)>ityBQNnF*z{Nrtx>u*iPUlsBcYKK#mdr zsZRvt7*Ke~x!_B10|MtNxwU1UE-+N)6=cxbvan2@>cHO_Hm>d8p$7!Fk4rV#vM1Vd z=jrTinb-^ZOPC>R%lO{lyUDF7gMGkr%u=gz0*;HbS9nNsRFi_oDLB{{3H-z6WIymX zsc$uR`cd$eIn$)Q;X!C=#4u0)2|1;r(IYGgxBNUpE}Q;cVy~#l=Y(@y~XOjYQuH zrEsFK5^ocM<}}WQg}Z2|!_(mH$$K(G|0Q2J2a5WfLqqzgf6ma*(QsS`enXBqE;8ny z9lu4s_6-=e43&BY`j^RNY4Ad$vEX&);xj8&UdsT_o>3WpImSV-iwUfA9Vb8J<7tvc zYv?rjR62fRJh(rjMJ9j`{SOqa0JD|r{y&o?FvpdjLjr#Zs>ywVI(~MD}=^p#3}mPbkrh$>9DHZ;>60E;b7}LCKcT z3$MNe{k^o)p1ikImD(>hAD|-rI~f!-r{F#&C?Ok(fRo=j+8DixealIh0sg&@S9uu@ zX48(X9c^cVr;|$`_rlayq=;IA3?9+MP>>?MMsr$w0YDsiKN)t)JCZLUpDV*uxxd6I zuY>O7yp#{}@mkV%l#e0r$_(8rom2T&O)#s(RdF@C8teRLG-x;|A0y~hj47Gp%pA99fgkw9f zG{=!2K;I598_@A@zOX6ykL1O-dc3l{ z4+z0&3UYkP1p1>n64>dT6`#7xt^`Vi?ve4V!6u^4+faZ$G8#14xG(q_xW6;rARkA4 z8H?Eq&V3OUw^*6oB~lh4oxpMxLr8Je^U++Wkxz5v(Ztf4h7PVwE~ ztzOc3)m_+2vbXt1jOi@cqWA3Fg30pyP%nX~&F@O{F)0aJp4h2KJO z!DndDLGVbK*fiLT+29a(tdHmZ4&0vP6h$)U3E|<+uQ&NoFYYtP19{wze+7ypxm<2#hwEdbr)p>N*3KCI3Pb(k@P7#^etoVD}MzFhmMHYaSAw>T4fhs@RAjEF7i=_ zCHvFkQkD9nRkwvaG7?KkS6(Y4kCHi6Lmyn6X~OeM=lC#~uh#d}Il<>M z#i?_dyoK~24b5?J8Xl3f@>HcjyIB%buVsIQ$OcFKqu|xbBbVaI3;W4ie1XrE$g6%& zi^a!COf6oQIbDNwrq@g(w3-^Ns9|&2N%G4lkg^FbPVHl`SW5b}hE}*ZJ;^WYFO*5J zUiBUMN0L_!miHn*cy>b0Zcbu0@FqgwT)Kh;W@s&W^d@jyh!2q`N#$uMgp1QA0~wuv z4WI`3hvbK4Ig__onz7q!~~1=o~tn_-oR&JLy~$S;vAgr z$_E<_$On+ukPVOq>v{hnZ}~WQ94?Oh3BjAvBcJ{W=5AaCx4QU?d=-bT_0+uQq2E@P zFby`PjvybBglw6crQ}Ct$ZN2=tNgQ9ycW)=Q4r`aLunW%0&Uh(JMg(9F3ua|NrwTf zdz@E8+T8b6mS)qGm;Qu?)%pwM>yLw57LJoA$!e*=^b=lR6f7KSD?M4QUE{oX7nGbA z$rpYJV5t_9Pe}o9L;Z{7d(*S)H>}a!3q9B}m>8>>NCV4)N$13FKgv-NNC+Q;l68W#fy)F{b z1LPPJ6s0oQHrnZgt@`EI90C0oPR2qNS^ycC|0HZ`{d_K!TqD; z(f@^=?x_Gp$xDHUoS_*Y_fT-|wSW_^cQ(E*IF^QreE~(QkZa`Ic^Z2^?JT|l$7wPf zXt0JTd=q@Ax8%qmEd;qUje->48g*EBKCR|tlq{V3XQ_WpT111*0)u1+tSucYJxqf& z#18UGiLm1pK>R!T0!Xk(x{ih#xHz53Cze10yG58r-j6Q=m8AZB@`t_wc%A$=@|v_` z_Ft5OR@a=ybNU(01kJ;cp_S{f?IzxqP-ly(GlJ!ivk~}UyEZTVg!LuW6!CQ}-)GsXE zM(sTF5kMdE`rxrn|Ib0J5*`$RR|%n2Oj_d-G^#V{W%4!00IY-U&Iwn?*pSVUL#Jk> z7BRomt0jQVb$x{|5?-+}IMtnJg-e!0&g4o!adiAD1kO&Dy&m~;@;kX zSI%tmZAN}!BlNB4-N=jVQhtYyBZRT;>d0W>z#HBrlu0$`_Kq%!o#n>>w5nTuid0r# zPm`|+pg0|9HQyc3@6NTvve%Tn3j4WDK|grhyUQzjjXHO8n#xC;#oe!R1q&A)7zNW$ zegp#e7ZWs)?yH9U``2#d zJBz?^E9%b{uKWC-dIPkF*!hog-Paa9!IZ1&tWyXU_a~xE zwn$DO?@XRT{jI{$oeokXZ3{%=zzc=two}Wx?+1KN#>MGOUWJ3rI_N_3Ro_7|MEz^z zMasZ%Y4SGmyS8HgA?Fw09okw5oH)5>(2#(OQ%YLXt9;*vqBXhyBx9KSYaZFR%%?aH zYtr%?T@>d0({^Ry-ub{8 z{WI`ry?P?~KsJQ+-XrAxd-unrA=UoQqp;%*9_?^x6ud2?OM`WRE5h>y?{p$Bf_p;w zCqkM^4XtO*Sq%*(Po|wjCRiyP!)6yX25~{MEa#IQjaqzxJE3+=*_gaPcRbccQ^+4; zqZ_c9C&00Pd)rcWSlZ9y+0QFb|Az_SDQD3rG2~B(z7>YYOCJl; zIylBHQ6s9pBPn&B&D9g&L=e{>s6TH%J`bUO6*+R#tfbMUZTk8N_iDTMT#2ctXvj)JHn6qxa{K3KzHOiX9UJ_FS!)12Vz)E#G z$Qq>l68pG~t%c-$1JLgP`||T-&|k+f)B<8B)_tXbOin#3KwRSr^vzs4dDsnb>&Iag zp}%r7xb@2dkq5n-&yajmg$bUc;2O`Oti)fE`)>#WA3!C_$$xEtw$}F$}X|~sO;UIexg(Q zaS)sBIzZs~2kjE!=<=UZ<9Y^CS`RB(2U&}$c14JtJL*Ee*=B%hyqxgQs&SG|A}>$T-XiFui<HjrG|es zI7mK*H{y01|0j8Cjta}cJ<0IoKjwdiJdUeD4d&nv@Q|}V3N<%^f`N@;C@~$tvK%dA zTZ?{OwxAm9-nSq50`3oNxp`f%rS^kc-NuMRuPwNR zu)#8#eA1uLe*zchQ{h$(*g)1Q&;pT&>JzvUd9Ogq1l$K^yNog?4S#6{{M;n;uFmP9`2Cm2{tJHyF0vP!I0cL~p4dl4rU>6{qq(hg33`36?3cfLcun{$a7 z+ehwyj#Z~U>};3yTti-%bHS(_%@ zOIb9P8vZrkaqo){7OvIiei-ntjqj2V{}mP+(C~J-g+P`{bVkZL8zADI$C*jK$2YVC z4_E^im6&$-8ay+wiTEY*q1-i3rq3hf{`=SJU0}!m4#F<-?dM_O80{o<_4HdfRk%>c zQP2y5zpbFN$d`EylQpka>Sje5Au%n=@Xat)j~1t^hVV_?&<_Yg@E-O34+L+Jhq(K; zuJq7@upd;@Dwkj$z1F!Vd} zUak=B%p}+EYk21|meb1=4B=o%VS<+3VJLPbfQ`1N$^B=1>E!3wqwCPlh1XD{@jU>% z6(c0^pP8UiA!OYKPxD9Mc=Aakuna9FkK(q-dUo+1&|gyoc5HvSmi#47BW6EG&wx`@ z+upzC)fRy_L?XsmEHq7H+8>@lX5PZZIVxOj_)kFV_5zRc-CeCF-^X2|-K8BQFR>1W z*_zIE@I+@p8I-Ca9na_u2i0T1tr>q5?q$B+RciF(+-*}%lRiip$3@9j&}Yc~ck@$) z!{PyI>^z1{Sc|;T7Z#K9A}`gL#{=Xm-UqOj3ihMLTAd`O)#u*~4j}g*Rex?NBO)H9 zjfhef3xy=6*8Dx`Ai00?E!iLX{$qizYpeN5IFZ1 zgCVQx1LXNRTiB+gLJICn?MD{OaU0=UuqC{wGX3Gk_h~lezQNk~I0f~K!f~?7B@};* zwHB%^F*P~k8YH&3PA7koZE2(BI(fFoz>>7ZK-gKC4m*~E_sAD;Z(J8*C;4&7fxM&n zbopSuduPfA&4hm^e#ap20=^+ToV@-8SgT5-TiiwE<@_p>;@H9{^*mgh8Bf4mXRcS{ zn5^Mo@WF=wDw2Op9t^^O)lIu6p&ywa+{WAv;S$&PG$YCku^Mh9F)bV(J7zs~>`U%{ zo;Zp85Nph~$bYKEV3hn`6|=|7f2psp)oHL?PI$`m8$9Ez7Gx)2e8b2(YyLWwCbmJq;sOe6=%`{KUs_8cV0Yk!R!r z$W6Xt6b~grdnBekuQhKl%ff(DXf*ga-+p%{`N&gHwA_{+1N|}F2iwyBJbAZ*aBVAX z!Dl@Ezdzxx1c7s{3=&wqb{4MZa2aR8W0=twsqcSSwS_z`AM~40f9P0bbW=s;((*RZ z=6Du@3V%Yg2NQfjKJ^a(%g~f@(D%Pq^d0#c?xywct7sS;g8sP=@!7KzFY&1qv`>e? zdS2o2>;Sd;N=zHc|Ekz_@+<3+G8q>qYywlZ>mo5t`Qrx=Ri?%y@)Y)7Tb>UI*E8k# zi>S3o>KA#A7DEjrrWVh=pWWgB@=+ynzw8-s;Q zTAesUOHGGk)pkag$p?CCT-NUZyzv5TKKv1E#xrlL$^FlmeTt zK|cB6&tz5`iYmWniv;q+mGEdQTl^$s=uBy7+9(<=TpYB`s zYfkZae#d`XFv*=zO_tovkjq~@hoLI8cZ$5dFTZtPf*=2;^f~gR?_t1t)Hme%zMqB> zxHx5|X7!w*64$&Bx&fgr7hB1PtOc*Yv|p2VOhO%4Z!9tmcD7!IVgmIC3Qv%J+N%}x ztC7!#zWhFdFVp*J=yYFbvQC}zLxFQ81S^ zVSRr$x&KxDlft!R`_7_dHu2x2{?H6Kz6TfQ!I^Npcn?5x@-*QgZF~RsH;yvF3D!hM zCK&h%3^o4}z}j*=`H58UPpH3~eD6*Go0ZOzN8S<8@@IX2Y0)e=sGfk5Sw}uETqofQ z7r`T8&xw2$`V&3_F#R&*{)6}X$am#}omg#u4aX^1&-s&m%&G7i9Qe-^`;iajAxmeN zaSo8r_H9Sb2-kP49TtG<&gHgDkmCT5t-bAEhhzV%Hg5`-FPJ-Xenkn)(A&bjX)p9M zQ~E2t@@!c2Ke`%CZa*z&6X_aqeI-moL%RBnyhus#C&?3C&wiqFZVgCD3YtRT^uGd7 zpM0TkFU!S0q{j9nn6xZhHH}cz9Av&x1!!19cO&<2YKN1zC=PuaQU}SGa6Pm?S5s_wLF|;k8n!Ng~@5vkOec@pWOc@WAH!Lf{i7n z!?NzE8LIat?9}wCQ0~OX(?N)WdaD4QA%9Ca zdix$~yjT*h22kUUg)sR>RdDMtoyj}yhhkgmPayZdBDaZr4v(B{7oQ29-+4724s76# zaDTl!Sh%|U-5Rg%{jL8kx&H-$((ZkAFUP0c8EoR%P zpUK;EESjCjx2)otN=!S4zhHyN|6rBd?a9mJqmH4*%CX{lzYROl=>WGn8F|Kb@G{i@ z8a(85&xeY$L*w!9z)&;x;s=@FB)R|o*I5GniIuar@Bs4RD`8+8?Mx@fouYJM%jpgZ zhH!4Nx(&Pw2TvD+1G~YVBwVLp|Mz8PQNP|UcsxPJpOEk1T;z2{9YUED_`e}kekmMR z^-XqT$luul%QhEXAh%y3weer#J=hsr6a^^749yf?NZY>1Um#ZET<)*+WLsKw8PfT; zehta5aV%J}M~#<W;dpHe)Fl76M@gmR@gihmN;awV% zzu4mS;r3eqY+qk(1-SnnucvTt+K5R4)Qf+)uC9ibJDJ>VCbzCuxum0C%OM1dOG=H_97d|ON3)-yh;uKI|oHqqdomE zd{q;!{qier|0c7DsjBb2F>=LXp@LFh+9z6b^*YPyOA)R%?5BEdkSrm8uoM(oyH41L z&=21MXV%Vb$fG!eR$*SA1`j#@2K|x=hH?~G$0)HD4zRdot!;hDzq|&^*4bB*`=7U# z`3QDmy<-O1BH704J`s4eQ+zvBI>n-l9hm2q>!|T)ABk!0T>kDTbb6Q|T#GTVm>|@qZz*9r8Qmb9iiQ3-F)hUvb*B>Z_9mJ6qXq z#ut%4!Uf*iE#hOzfgF+NOqOGjMERhZDC1kq+LHUf%DkN1|MlI?m()OvL$U#1?3 zLT+Uz941`+ws7Wh&acY)`2+&TegL{U`A_6OvQ|2h-?PE$^Gk_oQ8p&RMHqq36h7 z;P|jjVJ7*m(y(v(bvMJ#nmFaMDYO!-q9At(B(QkH zW#s-xC5hW%$iG)@PVPT*JWD>4J2J1`;w2BYcfinTo(bCR-*n;e-b*p>Nlfqmi(Eum zA~ow04lw0JZ%)kWA~|-#qW?BLj{H0qV{4?*wLkal^l&DWg<~79Lm+UH zaH96YvH$h#=EA)tE;NT4{#Q;`k(cJ^u+2-iFL72j{tP@-pr^6IwMwF^ zfm;!Gko!kvyM3O1$nk$?yEg=m{~e@tli8S>Xx#JA4jqO4)6_f|E_Hfc`4>sCR{Ise+@U8(Woe!Z3mG@R0p@d zvjIHh^x}zDh=wjQ!CWrzw)LoS01oVLCRjO!k!L$D6^m6pze8A5`qn?~rCUKSk-R#4nc0~G9_#q;+IOlzSG{(pne=1ckl7Uf3wf(TD6Mt$NyjkPjXDc%9rq*Q z-Z~obrNl6gmiz(P-M$a`x81~Y^5i>V;}I6GL>YUH4}41w~OPTO2B#WXea!N=#GQ zA8@J0Vy__2Q3fe(NM0iM@9!J_NIUdoca6)1Beyp#7HV}0x)1#XXJ&h{a2<_@hJzP| zYv&v4C!Nl&-{3Ut__t55k-yA|((E4sk9Fb?!jK(Zmd&(^yjNmc9fJ$PH=kxW1!Wag zK8Dp{i`o+5TD*d(`R)rY40FS)hn02rH4Dsit34Mi;r7@Zc87bjTd-v6zAnN0Bi*un zg73Nu9t|d{j+=U;cd% zE0TjP(yiV+{O(*SY~U34DfxKoFXz}_(CO%Y+&nxKyqLqS*CISIm-ojA#aoQ~ zR148gmcthfcFk}syD{ T&b_5hxR=4Y0k>Y$@Dl$ARmPqA diff --git a/test/test.cpp b/test/test.cpp index 7dbb3e9..5de67b7 100644 --- a/test/test.cpp +++ b/test/test.cpp @@ -36,7 +36,7 @@ int main() { // myban.add_white_list("192.168.2.74"); - // cout << myban.ban("192.168.2.74") << endl; + cout << myban.ban("192.168.2.74") << endl; // sleep(2); // cout << myban.ban("192.168.2.75") << endl; // // sleep(200);