From 2b664bf80347f3d9da74efbc7c76536c82fcbbda Mon Sep 17 00:00:00 2001 From: "kevin.caires" Date: Mon, 15 May 2023 16:30:59 -0300 Subject: [PATCH] Inicia o pograma com server e client de socket TPC. --- .gitignore | 1 + .vscode/tasks.json | 41 +++++++++++++++ Commom/Constants.cs | 20 +++++++ Program.cs | 32 ++++++++++++ TheDot/AppClient.cs | 45 ++++++++++++++++ TheDot/AppServer.cs | 55 ++++++++++++++++++++ backDot.csproj | 10 ++++ bin/Debug/net6.0/backDot.deps.json | 23 ++++++++ bin/Debug/net6.0/backDot.dll | Bin 0 -> 12288 bytes bin/Debug/net6.0/backDot.pdb | Bin 0 -> 11996 bytes bin/Debug/net6.0/backDot.runtimeconfig.json | 9 ++++ bin/Debug/net6.0/ref/backDot.dll | Bin 0 -> 7168 bytes 12 files changed, 236 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/tasks.json create mode 100644 Commom/Constants.cs create mode 100644 Program.cs create mode 100644 TheDot/AppClient.cs create mode 100644 TheDot/AppServer.cs create mode 100644 backDot.csproj create mode 100644 bin/Debug/net6.0/backDot.deps.json create mode 100644 bin/Debug/net6.0/backDot.dll create mode 100644 bin/Debug/net6.0/backDot.pdb create mode 100644 bin/Debug/net6.0/backDot.runtimeconfig.json create mode 100644 bin/Debug/net6.0/ref/backDot.dll diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6764f3a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +obj/* \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..3d50434 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,41 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/backDot.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/backDot.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "watch", + "command": "dotnet", + "type": "process", + "args": [ + "watch", + "run", + "--project", + "${workspaceFolder}/backDot.csproj" + ], + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file diff --git a/Commom/Constants.cs b/Commom/Constants.cs new file mode 100644 index 0000000..bc93e8b --- /dev/null +++ b/Commom/Constants.cs @@ -0,0 +1,20 @@ +using System; + +namespace backDot.Commom{ + public class Constants{ + public static int Port = 3666; + public static string EndOfMessage = "<|EOM|>"; + + public static string GetServerHost(){ + string? _clientHost = Environment.GetEnvironmentVariable("backdothost"); + + if (_clientHost == null || _clientHost == ""){ + _clientHost = "127.0.0.0"; + } + + Console.WriteLine(_clientHost); + + return _clientHost; + } + } +} \ No newline at end of file diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..67a0c6d --- /dev/null +++ b/Program.cs @@ -0,0 +1,32 @@ +using System; +using System.Threading.Tasks; +using backDot.TheDot; + + +namespace backDot; + +public class Program{ + public static async Task Main(string[] args){ + string invalidMessage = "Invalid args!"; + + if (args.Length != 1){ + Console.WriteLine(invalidMessage); + return; + } + + string _arg = args[0]; + + if (_arg == "server" || _arg == "--s"){ + AppServer _server = new AppServer(); + await _server.RunServer(); + } + else if (_arg == "client" || _arg == "--c"){ + AppClient _client = new AppClient(); + await _client.RunClient(); + } + else{ + Console.WriteLine(invalidMessage); + return; + } + } +} diff --git a/TheDot/AppClient.cs b/TheDot/AppClient.cs new file mode 100644 index 0000000..e75af00 --- /dev/null +++ b/TheDot/AppClient.cs @@ -0,0 +1,45 @@ +using System.Text; +using System.Net; +using System.Net.Sockets; +using backDot.Commom; + + +namespace backDot.TheDot{ + public class AppClient{ + private int port = Constants.Port; + private IPHostEntry? ipHost; + private IPAddress? ipAddress; + private IPEndPoint? ipEndPoint; + + public async Task RunClient(){ + this.ipHost = await Dns.GetHostEntryAsync(Constants.GetServerHost()); + this.ipAddress = this.ipHost.AddressList[0]; + this.ipEndPoint = new IPEndPoint(this.ipAddress, this.port); + + using Socket client = new Socket( + this.ipEndPoint.AddressFamily, + SocketType.Stream, + ProtocolType.Tcp + ); + + await client.ConnectAsync(this.ipEndPoint); + + while (true){ + var message = $"Test message{Constants.EndOfMessage}"; + var messageBytes = Encoding.UTF8.GetBytes(message); + await client.SendAsync(messageBytes, SocketFlags.None); + Console.WriteLine($"Send message: {message}"); + var buffer = new byte[1_024]; + var bytesReceived = await client.ReceiveAsync(buffer, SocketFlags.None); + var received = Encoding.UTF8.GetString(buffer, 0, bytesReceived); + + if (received == "<|ACK|>"){ + Console.WriteLine($"Reveived: {received}"); + break; + } + } + + client.Shutdown(SocketShutdown.Both); + } + } +} \ No newline at end of file diff --git a/TheDot/AppServer.cs b/TheDot/AppServer.cs new file mode 100644 index 0000000..eccc8f2 --- /dev/null +++ b/TheDot/AppServer.cs @@ -0,0 +1,55 @@ +using System.Text; +using System.Net; +using System.Net.Sockets; +using backDot.Commom; + + +namespace backDot.TheDot{ + public class AppServer{ + private int port = Constants.Port; + private IPHostEntry? ipHost; + private IPAddress? ipAddress; + private IPEndPoint? ipEndPoint; + + public async Task RunServer(){ + this.ipHost = await Dns.GetHostEntryAsync("127.0.0.1"); + this.ipAddress = this.ipHost.AddressList[0]; + this.ipEndPoint = new IPEndPoint(this.ipAddress, port); + + using Socket listener = new Socket( + this.ipEndPoint.AddressFamily, + SocketType.Stream, + ProtocolType.Tcp + ); + + listener.Bind(this.ipEndPoint); + Console.WriteLine(@$" + Server up. + Listen on {this.ipAddress}:{this.port} + "); + listener.Listen(100); + var handler = await listener.AcceptAsync(); + + while (true){ + var buffer = new byte[1_024]; + var byteContent = await handler.ReceiveAsync(buffer, SocketFlags.None); + var content = Encoding.UTF8.GetString(buffer, 0, byteContent); + + if (content.IndexOf(Constants.EndOfMessage) > -1){ + Console.WriteLine(@$" + Receive Message: {content.Replace(Constants.EndOfMessage, "")} + "); + + var messageToClient = "<|ACK|>"; + var byteMessage = Encoding.UTF8.GetBytes(messageToClient); + + await handler.SendAsync(byteMessage, 0); + + Console.WriteLine($"Send: {messageToClient}"); + // TODO: Remover isso e trocar a lógica para enviar comandos para o cliente. + break; + } + } + } + } +} \ No newline at end of file diff --git a/backDot.csproj b/backDot.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/backDot.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/bin/Debug/net6.0/backDot.deps.json b/bin/Debug/net6.0/backDot.deps.json new file mode 100644 index 0000000..b5bc280 --- /dev/null +++ b/bin/Debug/net6.0/backDot.deps.json @@ -0,0 +1,23 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v6.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v6.0": { + "backDot/1.0.0": { + "runtime": { + "backDot.dll": {} + } + } + } + }, + "libraries": { + "backDot/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/bin/Debug/net6.0/backDot.dll b/bin/Debug/net6.0/backDot.dll new file mode 100644 index 0000000000000000000000000000000000000000..ae14cd4df370c3814e8a70517f9e5727baca18cd GIT binary patch literal 12288 zcmeHNe{dXkb$`2ew|6?rvhO5W{u!_2*ttYM9sh`IWJPC7iq%-QV#!Vnaplw9N;-UZ zd)eKSeWP5WG->ES=@6PQlK>@Yp#wuQO`3!P83-vbLn%LocIYr^FflZgp>!ZkTL`6g zKkx1C-N`>7e==>?-uL~!AK&+V-}im*?RWPy{`U7#fQW*)FJ2`2G+Mrf1pa!k1a{Nr z&o4PS5nv~uX{?NjqvTQ6GXoR!M!=~SU$I{J*ETcv`YE$G8XCiT3TF?v?6j9%-h zo){rIqy(t(BlmsHpY2uZpcP6V(Kb*bE_DHNq~kt?o2}E)sIJ}UiT&Kt2Zv+4)D9T z0)QuL_3Q>Fmkz6XEZa&06WdOqqv1~AuDgcdkRHp(nGj@KX$d#$>cL%i4H50HL#2B= z*3TE)rc#K0(M5De8<7G$?9RsQw|sS|i8xV|ZkX{pYTJ8tsN1?G@SzHn25%Vj8G*}i z*c`lpsJTz2e#{8*n7s-{M72aSlvbL+*VGC~L9Mm2lAF7k7N-PcJ6$Bv3eg*2#~QH% zdYbzbYC#M2F*Sir)=aE08pW`+EbGq~;Q3&Ebv|g|`5?^mK`-WG8U{ia=3~U2@34B$ z3Lq8e2>Mg|dXZZ(8>6dw5&WzdThDs8aC0})pcmtzmyzXqu@}qq?#6nsk{DT7c`>n$ z*Q0f<)GYLhiSR=u#2gS>~c&K=_IYKC)^qB|18YtPr(FIt(!5vf@}+_i@ZaBlx@49thu1Th&ZW> z%y3Qk?xT=bU7KUH6h|!&a?=UBWaB%_wl$&z12& zVk6erJ*=+T8kO)+8!FiNpxPW%-9QP%g9&U$Cw+G}8?ngTmFnHxTxi7>DQc@X6v{X_ zAk-qW^?!yJ=~{J{Z&lUKdwmM*Y!1ajVrc_giok`X3{8|W*V1M!uDPa;s%^fhG3^pt zwW_V}mZ{muX6?$xYBghds?Jr*JbvzmbBX4#y7_|ZloofFT3pwQV`AaNHN4t$9luU0 zv6*FVNW#l}AtvclaO3B2b4lW|q16S?1{AGNA)q0L*x~d+>_j>Zf-8LB3d`d zHp)mSLxM#s$P4TPr?R@p{R+Y$h`p_+Gk1~cCK51;*hGd^2MM!ASj5CZ8z~&EAUA@D zXA$7Oxee5|jrMiSL=Xje#UqfHq740n$e_-~&g1?6flmLsB@|h(UI{!JT^`p5Bv@os z4HbB*=8pjUftlftF|1x)WG2Fzo4T;(k$zbBKZi+?wC_UT-or_sxSp*=;Xs)|4UVdd z+&4R!ipl}gTm!kE=mK?(*$rso853;|B2-a6qTM6vTEw%M7z0qa~t#5}its5(FG->W0qDu~3YW!(2H+g`OS6c729 zt*crVT5egWYT1gKWuYrtra~Q?RzW84o^w;##C^|cY{VLMkxAx_EQqv%g$%71{UXt< z#k8(gfm)pq(y?!O`%xCOZW{}WP6!Tl!O+96kWhQgU%_0F;b>_VMoaVt&F=J zeI&tUHDC(ch1!Q2umwxKat*LvW9R5F`ARi_$Dszm^AbI1;V4 zBb?!QI%7u+Sqd{b!@0fC3M1SMcef;%7=*gY^{hZ$8NsSAvYCN!)m6p5y*5V zxtWfl2n!iXK{ap2`dTljoa}qPgVm6AFI-3xRpW3xTwn8CPlT6yB3$*vXV}q;;)(DTJppZ8^0rxTiur6veYtAmawWUd zQsKq7HAnjQqd=WYx;2RdnrjlbeoboNq9b;-R3zYA+|8GRZ>*vIEOIp||145hpZ*O| z_p`v|^+`qjX~2y%_v#Z~geHGyzanorZYD15?CI;-(YIqeGJ;RmIlwQV3~afFs0*pp z!u?6d$`}^hWSmz?VZzIV)pt3$e^2LU{@@QF=3cO}L4^p)o9?uhH+)RxM7~hu^@c&xqvH zGGj(&`4ReS=yuE%rLSU?Mz_vN$f*Nu(yXF6f7dx ze}xzeqe!x(7H$tEv4f2ifEFClv2!bFm0bZLL+^MxP6=Qx*Dn zcq8EF!kYoVqiq3P3}1Iu`WpH($gd$??Nl}Trn(XE$xsjAd$k)eYBP1R27yo0ZuGxL zdjThC@Dlm=YfL{t`vD&&p8Zc{)YqsL{T78`yTZ2JqOi`q^e1Q({SQK$LSLrCm+9mg zcZ$vj1%6&MuT*#zSLZI#bG%NcBYj2Y_4Oa~^iSw;8$Gx-gk4qWL={VeZ&k5*V82(z znD?+?AE28;1z_K)@-*!6KMD3wF2A;1mvs8F6Ew&@w-_5F=dvI1YC zuc%%05`8$l9q^~YLAp=qPtXrT2k8?ufKd%fw>n2LB^1fgI;EgmpueF!2>Dl(cLN>{ zeF$(AlI_Y@mCqvwe;E1}a*$-3Bg!@t#G zUAaxkDBA$1v@T^M^@aC<`8|gd%tk+2lwv-4+!^he1}~hc$`j?4roK?M}_`H(0>{D zqKti2=syt34}?Mrk0RwX;gwh6Q30U@6t-lG!WIq*We74h`Ydxm=xKrHmG$&QKv&-b z`jWs`1)f(~gA!oaE-)!DCGb9hF9}qFtRaaHYA4kv1imEjyg&s{3uq9S6nLM&mjs>{ zsA#OAU0@Q=m6Pgq@b);KM=3gkN_mgcKsu^z16JM+&uv3LiW5dVcCQQl6?n39#J@~8 zDt9Q;%0DRQl;9F)Uj6k59_vWW>eZ-DBRempy+fX5%jHfAx}5gL6=)NpuK`s7-~M1# z7&*NM_fgz;B8ncteIEBZkNi?41 zeyqr5#XBKhGY;6%Qen~^j@7yN0oQmJXLTUYlxAn$DR#O3v5y*QBfDT^SnF<=cEBva z39@WZtU7_4;F22iCYm#x>0?u){jRxaJUgdMZ*nNz1FxHzQqCCk+)tB6A(OPrg*17S zy9lN&7-`2vlIgTj^!m3L&Oy_5MhcEq_PFf%V+A`kYaA&YF!RNn;TRb)XUwkQ$zl;x zjha?IR=WNE7a)z{G(Xial^8+<`tM@g<08RFjKj!N@3$>vvVc5XPFY$bwWI9 z(p^Mw`r`9G0q;D zrO{k!4iTC*GkA5oB-VPoB{Bzb>%QJe>~n1*H|P&>WlH5}CY3%tY&t!eT#m2={)y95 zS7pJTyqTv%Qu>H1WOYJgHiwLazc_?P&T>i$;-ym}cft-=DNCJn=95&v?kNF`FvooH4l7Dw;VCXIINX zx0Ff=_G&LX!0%Q|AiKaVhSZaGObbvNFJ*_bsks8`Nj7a)7wTp)lH1KA9-U1awwERF zG)fpy%qAt+AIBb;u(J8AgA!_!9}>KK&@H}j`-poRtK2y~?cm2|8qcOJ(>7-v%$PBf z2-~s^vS%RD#z^tT_pqm6M8T%9iDV{Y;dw#XqTj1VmYY`9@obelxsA$DK+z~T(o3ft zIx_Q4Y^gsLL_IsnEKZN1kY>|ahu4Ws#U}8+dp)? zG7PCcEqGBQca`v*cgk{HX`8`GD2=mWhD>s39?(XM15WdHe9gEC=bygnO{)gzZW_Ta z?c-?i;cvqj6=(q(a+HMz9X*TYprM^;rA-E~1%VXqrf$%cm1&VRFb=Z_HBHL8DM<0W zI_0HjL(?33v}qEsAi9@x_CnURCy5i?t*$+-M%J`Yo?4U0s=u9bk|7ev)-|zIAQ1 z()X*3q`=eNe{ko6e{t)(-gsfdHx54gV+!hu5((&}gwTn_7;Td79)|G|fhU4tC4OxX zzX_zmeTt&2z6QSwFh!^MZQ#X@p$7n|1Tzxc>*8KlC>&@~n}Vb?HHGjiauava4@V-Z z8ao!hmcdEPuSWY+l@+hPM$w|elBrK_2scDpV7}trjSmX;(1M1m3Te^B)0V7Mm?aQi7h=5TlyH@FyptymmYO( zz+WH0WLQq|rBA?~O`#^}U3y9hHDYS+G}ESLis`CM56hSrTY5%w@sQZt;Mx$0C&GH5 zX;UZ?(b(Bb&$ox8{@S`?6|u7{BgEziudr%<7mtBqA(##YybbOy@+VAA2tA+B2V8ueQ)gB(Y*m}Q%KeDKN8U5S=@Qtcd1%a zK#QfoL>u3TdoA!|Xv<;G*_yNw4=v+88W)FDi1%_6zBaQ*S>3%TXKr~0JmUb={-_q-^qm#pvtIoan%Adr~A9{AzHEln6Ve2I8=$$w7M(=53AzSFh`OdI= zi#XWw(Y4p}UavXx&R*G<-h$y^JAFn^F*8Gx2a`AM+D)G7jc<6WVg6?8_+J@MT87rz`UJCXc=;J6z;{Xqz~1P{VnOM;(MKF z2|xDZn=vgdH%vm9|2FF~I?G)`1jUt~zl_DZhtCSg*7uzvdeVyuqr;6)ht`CzXxZk9RBg|X)4AY!k9T3!7D4`8!&rj4ktoh zgN}Ph^dIr)>^0W!+s7E6&@NqnZ60?$6But|?h;NjPMvj^j$=RbZw1TcFZDvr2fm+^ zaw;-l%M7e5!}6<-as75EP4qoK{9yl2UwCog=Ck>nzTm!J@9RM6@6ZkJ<#S&LKJaw+ zcj){YkxAvug0ZioY}g$)4@RQ{DewD$4h02!Uq{I*?6uSLMm}YC=lz$Q?zEZTo3isg z3)?&Ne5#P0HEhR!T*+*MQC+X<8p9U=2M6|L2JwTbLoeVFwy$HnjOPkoROD5?CsizV z^ojzQ}kBV zproed1^JM%VC3{1!+jkod#tcvo;Iuwy_Dq-UN$^9o66aSyCBigTUAoC#WTCN-tK|k g>hcGp1HJyn;H~9<<2B^|{(TmIXY&8o|2+@<4?70^9smFU literal 0 HcmV?d00001 diff --git a/bin/Debug/net6.0/backDot.pdb b/bin/Debug/net6.0/backDot.pdb new file mode 100644 index 0000000000000000000000000000000000000000..62f2a83393aff8ad3984cb768262e8daad375c93 GIT binary patch literal 11996 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 literal 0 HcmV?d00001 diff --git a/bin/Debug/net6.0/backDot.runtimeconfig.json b/bin/Debug/net6.0/backDot.runtimeconfig.json new file mode 100644 index 0000000..4986d16 --- /dev/null +++ b/bin/Debug/net6.0/backDot.runtimeconfig.json @@ -0,0 +1,9 @@ +{ + "runtimeOptions": { + "tfm": "net6.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "6.0.0" + } + } +} \ No newline at end of file diff --git a/bin/Debug/net6.0/ref/backDot.dll b/bin/Debug/net6.0/ref/backDot.dll new file mode 100644 index 0000000000000000000000000000000000000000..616e053445c2a80176e6314f77fa0e722ce15893 GIT binary patch literal 7168 zcmeHMU2GKB6+W}OUhFlv#({(;5Qa76r@&$tQhsWi_0IwhUgO|339TA4JA1vJcy?wx zGi$uGYDuAK9`cZ?5^dB<0kw)$DGy1MhbUDOMLZ+5Qd3n`ML|)OD5`|iKBTHz=y&eS z?9Lh}QQwLfGiT14h5m7v z=m_H{i2B+BX7qEKXeH=BL2rGOeqmf;v0EXc%N}xM+Z;FZ~_SHtic<3vapbGglR*O&CzMR$RRz5H}YiBZ-l&u z-o+XC!{vV$wm$xo{A*o*zjo=-Pj}zNq23Ga78%&a`zjvZn_|>Pg)GsFokR*V|A!~F z<`j)gKRKcV7I>do+?DCe?Cjgwzn2ZRk?DV^_d7%;_T2T@uY0FG$FRySi(c&TxA5MX zX?h7b?~%O+XU50y{Tb-L!nxiN(=M_y9&BOC(+^OrgZHw3Dm&?Z-~V+W5elusyB06H zk!M{GzBpav7Rhn)%V!|bYcW6WBwbea#FJEtG5kGkiGP8ffl8A4BHomt(eF}Z1I1}CU0NU*Zo&cwt-imz|&mq1xNnMVABB>RUS{qOu zlDZiGAjX=V6o(bgL=LT1Ns7}Kf)}kir{d!@m4#t?VckaLK#5S(Ez~nDR8w}2eiM7PMV3Ss0-N-^ zxM)(cho-Fawz6}SNIZADb}d$}Dm{s2e^-?fZCchY9{A#GHYwH&DL?i^i)NEzO`gRH zGRlxEgC^{t<0zMoV_c3?2W^Ziv>Gr;Uj$6i;}Y)&?54dE4of&L;ZqVGmr#??08G;J zfNSX$z=!C9}a)^k`8Av*9G*Lv#+XmtF$E^WMpjuWr1XrGo{`cskiMs!mD2O5 zA5+SCa;Y2eTd;5uoWCd+Wh<^OQ_2-c`v6&b6$Q{s%12V?BdHTtSSPNq530mf#ieHz zRbl;Jg}oY<(ou=)5?+v;E6R@`&Bhp>m#_ns<0g#A!^lbsy=(&947`&b1Kvqr0-iX{ zBN=@@llx7R^Jq|%bzn`Vuy#6W1q%oAnqdu)tt@D|?s}qy|$4X`aYy`n+L5LwGH;8x|sMM);vL@cBN{V!Z|1`;lOM})KHpXR~i(JiDIo>){16?H(4{y zR?e{Nib~O}7Yr||cvAq&?Fwhw6V<}JW7o>_O<_TE%ECKX))rbPBM=QQ(Kald$R{q4n|h@ znu0J{u*(;Srr@ZU6OOQS5jx)#g&giwv+7MjFf}CKGm3_3coFFVQ!6iVF4l*IrDJ(6 z9VtGCcnMDV%a#KPurPy#d4WWRS)(c2@#rAdr(E`j5FF+0MKS4L8nHdxRNp65MQM+# zq_hE9y_(4`i4HRC8JF;Q`y2abzq|Uw)V_FfLt89~f94TN7HH|eoX1G;Tt50Id(n{C}vV>m^6l#;p7B^k+ z`%!@6&*w`5b*L<*HY)UBnA>1xZjEfIv|XXcLb;#&Ok+^C@`fATU~i-C502FKQGYvT zC%Izfeg6@K&Mt5zTZpY1Hck6vzGiwx)f8ZKj9c@% zNZ_kZG>LtTXPa~s3-1R$Zx%z6Tf)JBMOtxnjE|6Onx!|kP&VtU-Gl$98HmZdmWp47 z`0g}?Z)+fO$VC7BELgfsNxA zx=GOEfCv0v>*&{sYuEjX$+zX>MElX2p9J1eA{hWNd3^$F=)AvbHCLVzm~W2`w80}Lpuj8n{o7`_U>!E+|Nq* z#hLJ=t_45Lh-a<#GpPJc{1K|x7}`ysOJ3@9_^VWyz7`Mk3{pDF`<{-@TFmmJ~mI~~dh(g8uYt3A< z4d)NPTkAxBj!d#^zj}XQ|5C+N7yV*zFpZ-ot)kkp`TQSD&lC=9-;-APv@dCTzy_tG*u7t$Rw@E?-}`MLlA literal 0 HcmV?d00001