From 189278e17c7a0198b1479a43f5c2af7b0c5fda2a Mon Sep 17 00:00:00 2001 From: Edmand46 Date: Thu, 23 Jun 2022 20:45:57 +0400 Subject: [PATCH] added: stress testing --- .../Source/Plugins/SimplePlugin.cs | 4 +- Ragon.Stress/Program.cs | 258 ++++++++++++++++++ Ragon/Sources/Application.cs | 9 +- .../Authorization/AuthorizationManager.cs | 18 +- Ragon/Sources/Game/GameRoom.cs | 32 +-- Ragon/Sources/Game/GameThread.cs | 104 +++---- Ragon/Sources/Game/IGameThread.cs | 4 +- .../Matchmaking.cs => Room/RoomManager.cs} | 0 Ragon/Sources/Server/ENetServer.cs | 170 +++++------- Ragon/Sources/Server/ISocketHandler.cs | 8 + Ragon/Sources/Server/ISocketServer.cs | 10 + ThirdParty/ENet-CSharp/ENet-CSharp.dll | Bin 19968 -> 0 bytes ThirdParty/ENet-CSharp/enet.dll | Bin 94923 -> 0 bytes ThirdParty/ENet-CSharp/libenet.dylib | Bin 123520 -> 0 bytes ThirdParty/ENet-CSharp/libenet.so | Bin 64024 -> 0 bytes 15 files changed, 425 insertions(+), 192 deletions(-) create mode 100644 Ragon.Stress/Program.cs rename Ragon/Sources/{Matchmaking/Matchmaking.cs => Room/RoomManager.cs} (100%) create mode 100644 Ragon/Sources/Server/ISocketHandler.cs create mode 100644 Ragon/Sources/Server/ISocketServer.cs delete mode 100644 ThirdParty/ENet-CSharp/ENet-CSharp.dll delete mode 100644 ThirdParty/ENet-CSharp/enet.dll delete mode 100755 ThirdParty/ENet-CSharp/libenet.dylib delete mode 100644 ThirdParty/ENet-CSharp/libenet.so diff --git a/Ragon.SimpleServer/Source/Plugins/SimplePlugin.cs b/Ragon.SimpleServer/Source/Plugins/SimplePlugin.cs index 742b237..483057c 100755 --- a/Ragon.SimpleServer/Source/Plugins/SimplePlugin.cs +++ b/Ragon.SimpleServer/Source/Plugins/SimplePlugin.cs @@ -17,12 +17,12 @@ namespace Game.Source public override void OnPlayerJoined(Player player) { - _logger.Info($"Player({player.PlayerName}) joined to Room({GameRoom.Id})"); + // _logger.Info($"Player({player.PlayerName}) joined to Room({GameRoom.Id})"); } public override void OnPlayerLeaved(Player player) { - _logger.Info($"Player({player.PlayerName}) left from Room({GameRoom.Id})"); + // _logger.Info($"Player({player.PlayerName}) left from Room({GameRoom.Id})"); } } } \ No newline at end of file diff --git a/Ragon.Stress/Program.cs b/Ragon.Stress/Program.cs new file mode 100644 index 0000000..842438d --- /dev/null +++ b/Ragon.Stress/Program.cs @@ -0,0 +1,258 @@ +using System; +using ENet; +using Ragon.Common; + +namespace Stress +{ + class SimulationClient + { + public Host Host; + public Peer Peer; + public bool InRoom; + public List Entities = new List(); + } + + class SimulationThread + { + private List _clients = new List(); + + public void Start(string url, ushort port, int numClients) + { + for (var i = 0; i < numClients; i++) + { + var client = CreateClient(url, port); + _clients.Add(client); + } + + var thread = new Thread(Execute); + thread.IsBackground = true; + thread.Start(); + } + + public void Execute() + { + var ragonSerializer = new RagonSerializer(); + + while (true) + { + foreach (SimulationClient simulationClient in _clients) + { + bool polled = false; + Event netEvent; + + while (!polled) + { + if (simulationClient.Host.CheckEvents(out netEvent) <= 0) + { + if (simulationClient.Host.Service(0, out netEvent) <= 0) + break; + + polled = true; + } + + switch (netEvent.Type) + { + case EventType.None: + break; + case EventType.Connect: + { + ragonSerializer.Clear(); + ragonSerializer.WriteOperation(RagonOperation.AUTHORIZE); + ragonSerializer.WriteString("defaultkey"); + ragonSerializer.WriteString("Player " + DateTime.Now.Ticks); + ragonSerializer.WriteByte(0); + + var sendData = ragonSerializer.ToArray(); + var packet = new Packet(); + packet.Create(sendData, PacketFlags.Reliable); + simulationClient.Peer.Send(0, ref packet); + Console.WriteLine("Client connected to server"); + break; + } + case EventType.Disconnect: + Console.WriteLine("Client disconnected from server"); + break; + case EventType.Timeout: + Console.WriteLine("Client connection timeout"); + break; + case EventType.Receive: + var data = new byte[netEvent.Packet.Length]; + netEvent.Packet.CopyTo(data); + + var op = (RagonOperation) data[0]; + switch (op) + { + case RagonOperation.AUTHORIZED_SUCCESS: + { + ragonSerializer.Clear(); + ragonSerializer.WriteOperation(RagonOperation.JOIN_OR_CREATE_ROOM); + ragonSerializer.WriteInt(2); + ragonSerializer.WriteInt(20); + ragonSerializer.WriteString("map"); + + var sendData = ragonSerializer.ToArray(); + var packet = new Packet(); + packet.Create(sendData, PacketFlags.Reliable); + simulationClient.Peer.Send(0, ref packet); + break; + } + case RagonOperation.JOIN_SUCCESS: + { + simulationClient.InRoom = true; + + ragonSerializer.Clear(); + ragonSerializer.WriteOperation(RagonOperation.SCENE_IS_LOADED); + + var sendData = ragonSerializer.ToArray(); + var packet = new Packet(); + packet.Create(sendData, PacketFlags.Reliable); + simulationClient.Peer.Send(0, ref packet); + + break; + } + case RagonOperation.SNAPSHOT: + { + ragonSerializer.Clear(); + ragonSerializer.WriteOperation(RagonOperation.CREATE_ENTITY); + ragonSerializer.WriteUShort(0); + ragonSerializer.WriteUShort(0); + ragonSerializer.WriteUShort(0); + + var sendData = ragonSerializer.ToArray(); + var packet = new Packet(); + packet.Create(sendData, PacketFlags.Reliable); + simulationClient.Peer.Send(0, ref packet); + break; + } + case RagonOperation.CREATE_ENTITY: + { + ReadOnlySpan payload = data.AsSpan().Slice(1, data.Length - 1); + ragonSerializer.Clear(); + ragonSerializer.FromSpan(ref payload); + + var entityType = ragonSerializer.ReadUShort(); + var state = ragonSerializer.ReadByte(); + var ennt = ragonSerializer.ReadByte(); + var entityId = ragonSerializer.ReadInt(); + + simulationClient.Entities.Add(entityId); + break; + } + } + Console.WriteLine(op); + // Console.WriteLine("Packet received from server - Channel ID: " + netEvent.ChannelID + ", Data length: " + netEvent.Packet.Length); + netEvent.Packet.Dispose(); + break; + } + } + + if (simulationClient.InRoom) + { + foreach (var entity in simulationClient.Entities) + { + ragonSerializer.Clear(); + ragonSerializer.WriteOperation(RagonOperation.REPLICATE_ENTITY_STATE); + ragonSerializer.WriteInt(entity); + ragonSerializer.WriteInt(100); + ragonSerializer.WriteInt(200); + ragonSerializer.WriteInt(300); + + var sendData = ragonSerializer.ToArray(); + var packet = new Packet(); + packet.Create(sendData, PacketFlags.Instant); + simulationClient.Peer.Send(1, ref packet); + } + } + } + + Thread.Sleep(16); + } + } + + SimulationClient CreateClient(string url, ushort port) + { + Host client = new Host(); + Address address = new Address(); + + address.SetHost(url); + address.Port = port; + + client.Create(); + Console.WriteLine("Created client"); + + Peer peer = client.Connect(address); + + return new SimulationClient() {Host = client, Peer = peer}; + } + } + + class Program + { + static void Main(string[] args) + { + Library.Initialize(); + + + { + var thread = new SimulationThread(); + thread.Start("127.0.0.1", 4444, 250); + } + + Thread.Sleep(3000); + + { + var thread = new SimulationThread(); + thread.Start("127.0.0.1", 4444, 250); + } + + Thread.Sleep(3000); + + + { + var thread = new SimulationThread(); + thread.Start("127.0.0.1", 4444, 250); + } + + Thread.Sleep(3000); + + { + var thread = new SimulationThread(); + thread.Start("127.0.0.1", 4444, 250); + } + + Thread.Sleep(3000); + + { + var thread = new SimulationThread(); + thread.Start("127.0.0.1", 4444, 250); + } + + Thread.Sleep(3000); + + { + var thread = new SimulationThread(); + thread.Start("127.0.0.1", 4444, 250); + } + + Thread.Sleep(3000); + + { + var thread = new SimulationThread(); + thread.Start("127.0.0.1", 4444, 250); + } + + Thread.Sleep(3000); + + { + var thread = new SimulationThread(); + thread.Start("127.0.0.1", 4444, 250); + } + + Thread.Sleep(3000); + + + Console.ReadKey(); + Library.Deinitialize(); + } + } +} \ No newline at end of file diff --git a/Ragon/Sources/Application.cs b/Ragon/Sources/Application.cs index 0736cdd..330db28 100755 --- a/Ragon/Sources/Application.cs +++ b/Ragon/Sources/Application.cs @@ -11,26 +11,25 @@ namespace Ragon.Core { private readonly Logger _logger = LogManager.GetCurrentClassLogger(); private readonly GameThread _gameThread; - + private readonly ENetServer _netServer; public Application(PluginFactory factory, Configuration configuration) { - ThreadPool.SetMinThreads(1, 1); - _gameThread = new GameThread(factory, configuration); } public void Start() { Library.Initialize(); - _gameThread.Start(); + _logger.Info("Started"); } public void Stop() { _gameThread.Stop(); - Library.Deinitialize(); + _logger.Info("Stopped"); + } } } \ No newline at end of file diff --git a/Ragon/Sources/Authorization/AuthorizationManager.cs b/Ragon/Sources/Authorization/AuthorizationManager.cs index fbcd2d8..2f04592 100644 --- a/Ragon/Sources/Authorization/AuthorizationManager.cs +++ b/Ragon/Sources/Authorization/AuthorizationManager.cs @@ -1,5 +1,7 @@ using System; using System.Collections.Generic; +using System.Threading.Tasks; +using NLog.Targets; using Ragon.Common; namespace Ragon.Core; @@ -25,9 +27,12 @@ public class AuthorizationManager : IAuthorizationManager public void OnAuthorization(uint peerId, string key, string name, byte protocol) { - var dispatcher = _gameThread.GetDispatcher(); + var dispatcher = _gameThread.Dispatcher; _provider.OnAuthorizationRequest(key, name, protocol, Array.Empty(), - (playerId, playerName) => { dispatcher.Dispatch(() => Accepted(peerId, playerId, playerName)); }, + (playerId, playerName) => + { + dispatcher.Dispatch(() => Accepted(peerId, playerId, playerName)); + }, (errorCode) => { dispatcher.Dispatch(() => Rejected(peerId, errorCode)); }); } @@ -37,7 +42,7 @@ public class AuthorizationManager : IAuthorizationManager _serializer.WriteOperation(RagonOperation.AUTHORIZED_SUCCESS); _serializer.WriteString(playerId); _serializer.WriteString(playerName); - + var player = new Player() { Id = playerId, @@ -52,7 +57,7 @@ public class AuthorizationManager : IAuthorizationManager _playersByPeers.Add(peerId, player); var sendData = _serializer.ToArray(); - _gameThread.SendSocketEvent(new SocketEvent() {Data = sendData, PeerId = peerId, Type = EventType.DATA, Delivery = DeliveryType.Reliable}); + _gameThread.Server.Send(peerId, sendData, DeliveryType.Reliable); } public void Rejected(uint peerId, uint code) @@ -62,9 +67,8 @@ public class AuthorizationManager : IAuthorizationManager _serializer.WriteInt((int) code); var sendData = _serializer.ToArray(); - _gameThread.SendSocketEvent(new SocketEvent() {Data = sendData, PeerId = peerId, Type = EventType.DATA, Delivery = DeliveryType.Reliable}); - var emtpyData = Array.Empty(); - _gameThread.SendSocketEvent(new SocketEvent() {Data = emtpyData, PeerId = peerId, Type = EventType.DISCONNECTED, Delivery = DeliveryType.Reliable}); + _gameThread.Server.Send(peerId, sendData, DeliveryType.Reliable); + _gameThread.Server.Disconnect(peerId, 0); } public void Cleanup(uint peerId) diff --git a/Ragon/Sources/Game/GameRoom.cs b/Ragon/Sources/Game/GameRoom.cs index 7a63621..57ca38e 100755 --- a/Ragon/Sources/Game/GameRoom.cs +++ b/Ragon/Sources/Game/GameRoom.cs @@ -22,7 +22,7 @@ namespace Ragon.Core private uint _ticks; private readonly PluginBase _plugin; - private readonly IGameThread _sender; + private readonly IGameThread _gameThread; private readonly RagonSerializer _serializer = new(512); // Cache @@ -30,9 +30,9 @@ namespace Ragon.Core private uint[] _allPlayers = Array.Empty(); private Entity[] _entitiesAll = Array.Empty(); - public GameRoom(IGameThread sender, PluginBase pluginBase, string map, int min, int max) + public GameRoom(IGameThread gameThread, PluginBase pluginBase, string map, int min, int max) { - _sender = sender; + _gameThread = gameThread; _plugin = pluginBase; Map = map; @@ -367,40 +367,22 @@ namespace Ragon.Core public void Send(uint peerId, byte[] rawData, DeliveryType deliveryType = DeliveryType.Unreliable) { - _sender.SendSocketEvent(new SocketEvent() - { - PeerId = peerId, - Data = rawData, - Type = EventType.DATA, - Delivery = deliveryType, - }); + _gameThread.Server.Send(peerId, rawData, deliveryType); } public void Broadcast(uint[] peersIds, byte[] rawData, DeliveryType deliveryType = DeliveryType.Unreliable) { foreach (var peer in peersIds) { - _sender.SendSocketEvent(new SocketEvent() - { - PeerId = peer, - Data = rawData, - Type = EventType.DATA, - Delivery = deliveryType, - }); + _gameThread.Server.Send(peer, rawData, deliveryType); } } public void Broadcast(byte[] rawData, DeliveryType deliveryType = DeliveryType.Unreliable) { - foreach (var player in _players.Values.ToArray()) + foreach (var peer in _allPlayers) { - _sender.SendSocketEvent(new SocketEvent() - { - PeerId = player.PeerId, - Data = rawData, - Type = EventType.DATA, - Delivery = deliveryType, - }); + _gameThread.Server.Send(peer, rawData, deliveryType); } } } diff --git a/Ragon/Sources/Game/GameThread.cs b/Ragon/Sources/Game/GameThread.cs index 096bf9b..fff1196 100755 --- a/Ragon/Sources/Game/GameThread.cs +++ b/Ragon/Sources/Game/GameThread.cs @@ -2,36 +2,41 @@ using System.Collections.Generic; using System.Diagnostics; using System.Threading; +using ENet; using NLog; namespace Ragon.Core { - public class GameThread : IGameThread + public class GameThread : IGameThread, IHandler { private readonly Dictionary _socketByRooms; private readonly RoomManager _roomManager; - private readonly ENetServer _socketServer; + private readonly ISocketServer _server; private readonly Thread _thread; private readonly Server _serverConfiguration; private readonly Stopwatch _gameLoopTimer; private readonly Lobby _lobby; - private readonly IDispatcher _dispatcher; private readonly ILogger _logger = LogManager.GetCurrentClassLogger(); private readonly float _deltaTime = 0.0f; - - private int _packets = 0; private readonly Stopwatch _packetsTimer; + private int _packets = 0; + + public IDispatcher Dispatcher { get; private set; } + public ISocketServer Server { get; private set; } + public GameThread(PluginFactory factory, Configuration configuration) { var authorizationProvider = factory.CreateAuthorizationProvider(configuration); - + + Dispatcher = new Dispatcher(); + Server = new ENetServer(this); + _serverConfiguration = configuration.Server; _deltaTime = 1000.0f / configuration.TickRate; - - _dispatcher = new Dispatcher(); + _roomManager = new RoomManager(factory, this); _lobby = new Lobby(authorizationProvider, _roomManager, this); - _socketServer = new ENetServer(); + _gameLoopTimer = new Stopwatch(); _packetsTimer = new Stopwatch(); _socketByRooms = new Dictionary(); @@ -43,18 +48,19 @@ namespace Ragon.Core public void Start() { + Server.Start(_serverConfiguration.Port); + _gameLoopTimer.Start(); _packetsTimer.Start(); - - _socketServer.Start(_serverConfiguration.Port); _thread.Start(); } public void Stop() { + Server.Stop(); + _gameLoopTimer.Stop(); _packetsTimer.Stop(); - _socketServer.Stop(); _thread.Interrupt(); } @@ -62,41 +68,9 @@ namespace Ragon.Core { while (true) { - _dispatcher.Process(); + Server.Process(); + Dispatcher.Process(); - while (_socketServer.ReceiveBuffer.TryDequeue(out var evnt)) - { - if (evnt.Type == EventType.DISCONNECTED || evnt.Type == EventType.TIMEOUT) - { - if (_socketByRooms.Remove(evnt.PeerId, out var room)) - room.Leave(evnt.PeerId); - - _lobby.OnDisconnected(evnt.PeerId); - } - - if (evnt.Type == EventType.DATA) - { - _packets += 1; - try - { - var peerId = evnt.PeerId; - var data = new ReadOnlySpan(evnt.Data); - if (_socketByRooms.TryGetValue(evnt.PeerId, out var room)) - { - room.ProcessEvent(peerId, data); - } - else - { - _lobby.ProcessEvent(peerId, data); - } - } - catch (Exception exception) - { - _logger.Error(exception); - } - } - } - var elapsedMilliseconds = _gameLoopTimer.ElapsedMilliseconds; if (elapsedMilliseconds > _deltaTime) { @@ -125,14 +99,40 @@ namespace Ragon.Core _socketByRooms.Remove(peerId); } - public void SendSocketEvent(SocketEvent socketEvent) + public void OnEvent(Event evnt) { - _socketServer.SendBuffer.Enqueue(socketEvent); - } + if (evnt.Type == ENet.EventType.Timeout || evnt.Type == ENet.EventType.Disconnect) + { + if (_socketByRooms.Remove(evnt.Peer.ID, out var room)) + room.Leave(evnt.Peer.ID); - public IDispatcher GetDispatcher() - { - return _dispatcher; + _lobby.OnDisconnected(evnt.Peer.ID); + } + + if (evnt.Type == ENet.EventType.Receive) + { + _packets += 1; + try + { + var peerId = evnt.Peer.ID; + var dataRaw = new byte[evnt.Packet.Length]; + evnt.Packet.CopyTo(dataRaw); + + var data = new ReadOnlySpan(dataRaw); + if (_socketByRooms.TryGetValue(peerId, out var room)) + { + room.ProcessEvent(peerId, data); + } + else + { + _lobby.ProcessEvent(peerId, data); + } + } + catch (Exception exception) + { + _logger.Error(exception); + } + } } } } \ No newline at end of file diff --git a/Ragon/Sources/Game/IGameThread.cs b/Ragon/Sources/Game/IGameThread.cs index 5368a7f..8094084 100644 --- a/Ragon/Sources/Game/IGameThread.cs +++ b/Ragon/Sources/Game/IGameThread.cs @@ -6,6 +6,6 @@ public interface IGameThread { public void Attach(uint peerId, GameRoom room); public void Detach(uint peerId); - public void SendSocketEvent(SocketEvent socketEvent); - public IDispatcher GetDispatcher(); + public IDispatcher Dispatcher { get; } + public ISocketServer Server { get; } } \ No newline at end of file diff --git a/Ragon/Sources/Matchmaking/Matchmaking.cs b/Ragon/Sources/Room/RoomManager.cs similarity index 100% rename from Ragon/Sources/Matchmaking/Matchmaking.cs rename to Ragon/Sources/Room/RoomManager.cs diff --git a/Ragon/Sources/Server/ENetServer.cs b/Ragon/Sources/Server/ENetServer.cs index aa23d37..6851591 100755 --- a/Ragon/Sources/Server/ENetServer.cs +++ b/Ragon/Sources/Server/ENetServer.cs @@ -17,130 +17,102 @@ namespace Ragon.Core Connected } - public class ENetServer + public class ENetServer : ISocketServer { public Status Status { get; private set; } private ILogger _logger = LogManager.GetCurrentClassLogger(); - private Thread _thread; private Host _host; private Address _address; - private ENet.Event _netEvent; + private Event _netEvent; private Peer[] _peers; - private int _seconds = 0; - private Stopwatch _packetsTimer; - public RingBuffer SendBuffer; - public RingBuffer ReceiveBuffer; - + private IHandler _handler; + + public ENetServer(IHandler handler) + { + _handler = handler; + } + public void Start(ushort port) { _address = default; _address.Port = port; + _peers = new Peer[2048]; _host = new Host(); - _host.Create(_address, 4095, 2, 0, 0, 1024 * 1024); - - _peers = new Peer[4095]; - - ReceiveBuffer = new RingBuffer(8192 + 8192); - SendBuffer = new RingBuffer(8192 + 8192); + _host.Create(_address, 2048, 2, 0, 0, 1024 * 1024); Status = Status.Listening; - _packetsTimer = new Stopwatch(); - _thread = new Thread(Execute); - _thread.Name = "NetworkThread"; - _thread.Start(); _logger.Info($"Network listening on {port}"); } - private void Execute() + public void Send(uint peerId, byte[] data, DeliveryType type) { - _packetsTimer.Start(); - while (true) + var newPacket = new Packet(); + var packetFlags = PacketFlags.Instant; + byte channel = 1; + + if (type == DeliveryType.Reliable) { - while (SendBuffer.TryDequeue(out var data)) + packetFlags = PacketFlags.Reliable; + channel = 0; + } + else if (type == DeliveryType.Unreliable) + { + channel = 1; + packetFlags = PacketFlags.None; + } + + newPacket.Create(data, data.Length, packetFlags); + _peers[peerId].Send(channel, ref newPacket); + } + + public void Disconnect(uint peerId, uint errorCode) + { + _peers[peerId].Reset(); + } + + public void Process() + { + bool polled = false; + while (!polled) + { + if (_host.CheckEvents(out _netEvent) <= 0) { - if (data.Type == EventType.DATA) - { - var newPacket = new Packet(); - var packetFlags = PacketFlags.Instant; - byte channel = 1; + if (_host.Service(0, out _netEvent) <= 0) + break; - if (data.Delivery == DeliveryType.Reliable) - { - packetFlags = PacketFlags.Reliable; - channel = 0; - } - else if (data.Delivery == DeliveryType.Unreliable) - { - channel = 1; - packetFlags = PacketFlags.Instant; - } - - newPacket.Create(data.Data, data.Data.Length, packetFlags); - _peers[data.PeerId].Send(channel, ref newPacket); - } - else if (data.Type == EventType.DISCONNECTED) - { - _peers[data.PeerId].DisconnectNow(0); - ReceiveBuffer.Enqueue(data); - } - } - - bool polled = false; - while (!polled) - { - if (_host.CheckEvents(out _netEvent) <= 0) - { - if (_host.Service(15, out _netEvent) <= 0) - break; - - polled = true; - } - - switch (_netEvent.Type) - { - case ENet.EventType.None: - Console.WriteLine("None event"); - break; - - case ENet.EventType.Connect: - { - var @event = new SocketEvent {PeerId = _netEvent.Peer.ID, Type = EventType.CONNECTED}; - _peers[_netEvent.Peer.ID] = _netEvent.Peer; - ReceiveBuffer.Enqueue(@event); - break; - } - case ENet.EventType.Disconnect: - { - var @event = new SocketEvent {PeerId = _netEvent.Peer.ID, Type = EventType.DISCONNECTED}; - ReceiveBuffer.Enqueue(@event); - break; - } - case ENet.EventType.Timeout: - { - var @event = new SocketEvent {PeerId = _netEvent.Peer.ID, Type = EventType.TIMEOUT}; - ReceiveBuffer.Enqueue(@event); - break; - } - case ENet.EventType.Receive: - { - var data = new byte[_netEvent.Packet.Length]; - - _netEvent.Packet.CopyTo(data); - _netEvent.Packet.Dispose(); - - var @event = new SocketEvent {PeerId = _netEvent.Peer.ID, Type = EventType.DATA, Data = data }; - ReceiveBuffer.Enqueue(@event); - break; - } - } + polled = true; } - if (_packetsTimer.Elapsed.Seconds > 5) + switch (_netEvent.Type) { - Console.WriteLine($"Connections: {_host.PeersCount}"); - _packetsTimer.Restart(); + case ENet.EventType.None: + Console.WriteLine("None event"); + break; + + case ENet.EventType.Connect: + { + _peers[_netEvent.Peer.ID] = _netEvent.Peer; + _handler.OnEvent(_netEvent); + break; + } + case ENet.EventType.Disconnect: + { + _handler.OnEvent(_netEvent); + break; + } + case ENet.EventType.Timeout: + { + _handler.OnEvent(_netEvent); + break; + } + case ENet.EventType.Receive: + { + _handler.OnEvent(_netEvent); + _netEvent.Packet.Dispose(); + break; + } } } } diff --git a/Ragon/Sources/Server/ISocketHandler.cs b/Ragon/Sources/Server/ISocketHandler.cs new file mode 100644 index 0000000..eb8df6b --- /dev/null +++ b/Ragon/Sources/Server/ISocketHandler.cs @@ -0,0 +1,8 @@ +using ENet; + +namespace Ragon.Core; + +public interface IHandler +{ + public void OnEvent(Event evnt); +} \ No newline at end of file diff --git a/Ragon/Sources/Server/ISocketServer.cs b/Ragon/Sources/Server/ISocketServer.cs new file mode 100644 index 0000000..d797f86 --- /dev/null +++ b/Ragon/Sources/Server/ISocketServer.cs @@ -0,0 +1,10 @@ +namespace Ragon.Core; + +public interface ISocketServer +{ + public void Start(ushort port); + public void Process(); + public void Stop(); + public void Send(uint peerId, byte[] data, DeliveryType type); + public void Disconnect(uint peerId, uint errorCode); +} \ No newline at end of file diff --git a/ThirdParty/ENet-CSharp/ENet-CSharp.dll b/ThirdParty/ENet-CSharp/ENet-CSharp.dll deleted file mode 100644 index 0f3f9caac658363594640e108a7b4e58566a8d0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19968 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 diff --git a/ThirdParty/ENet-CSharp/enet.dll b/ThirdParty/ENet-CSharp/enet.dll deleted file mode 100644 index 3f329c41b0c6f84eeacae9edda92fa0a32a34cba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94923 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 diff --git a/ThirdParty/ENet-CSharp/libenet.dylib b/ThirdParty/ENet-CSharp/libenet.dylib deleted file mode 100755 index 2c8d6f3c615eebac987795ece96b9e64f0f423d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123520 zcmeFa34ByV);C<;oj`ZOE~u;_AkqO5P*fOEIz-2SE2yI=5JHF~vW5g9GH5U^Fvv(0 zw{Z*LlHjiBq+JFuF5otZ8}139Hn^hbBo4^?|DUSrR5wBAdEV#y-uL@`o&0X!Tgy3h z>eQ)Ir%qMf`_Es#`L&f&9)-UaxZ2@bpQO|^@}yK}gcl<piN`SVLm0JnI2C2e%t_xI~N!``OsL{#Pmb8?DH=1wk-M#bZs@{~?0k(w#R zu#3-c@S*PVmy?q>Yi4m1f${jZKCSb$^XogqKKvGt^kq~WrEq$`3;48w4R67aO*8**fRsOvx?DwRsPYuPmCy^E>>XT-+ob z2jVL;^c6($#n#hS-zKx3*|>6Y&KPyp>8GADN^@VSkjc5;703 z=bY|QuOjgMe2N51` z$1{hw>ixuN-Ht(APh3)0FM5@)l|1V{@{6}0VQ|?$_B+c5kfMB3(x5IpO7lT;;M~&U zlKdG*k8I+CQb!^$@sy4BsLi-%m@wljH5HTpfF#*Ion#WV>gBkWacqhX!i6h?ZL$!~ET3fP@3 zLyZ>SUqDZ`N9i!~2a{D}6kh=Ol*S*0L0mAP^R!fIMJ4EC{>s{%ntcmKR->*J>wP)z z!D1cDdwkuOpu7y!f2Xd01M5^-p3|T_Bi^e6FGyFkj-bX7D^vA>*r^;GZ6 zYT|1h@cL1YI=~Wc--66)#xfX=)&p@nU3lQ!iFBa_@wRQrck*YyDWBz%29X=WkXN3- zS0RscUND1A(WpwcaKV&RSxdY`dtt#))P=KkY-{Y%Ll5KCvN?y?Dz`PvsA!yUN$SVSjJ*d*6fx(Ac=Mcc^h!TBvava7_cQ zh%d0_(tVMQg+BF1uJ4JXadsAaV&DQa9AW?@=8hpQ&LH;EF&_*sfLO-9XRy z2Jl35hLnePf{&^r8Iv`mnvA_Jz3YJ@4baYvxr=v~30*=w1(6AIw%IIvRHv3n0t?++vX@fs~)T^Z9TeP>7m#HeM zK;uUU+qy=4!8QJcp&MDRPS9uQV}=nUZ(kq_>$jg?U@*yzD=bmO8&$ z6aart0e?JAItTKLej4@%)?b9Wh3oJf)iply&sV*#R#jB`(i$M^joUy2%iri}cRcA- z$z@v}`E~!TR(CBn?YRzhIf`ut*_1wv{tUlON9qK%QdO)x2n_sL9YJrSA9*YsaX@$J zu>)xeZLtz@+knf5_H2WGKw6|-ke=3A(?IoU<}eU}OOPHQknhP;{)8wnf;Ef#f@%hkyrsK44570lhIIG%V0sbpYP) z{kf__eNfmCmC?BJp9UV5p~gU#ardaQEnetL=#>>QxP8>8Eg{>UifrWZd!T0=@&Q)(wCsGFmfiqaB`xy19zc3W8>ZA2L!)Zv9`0l8CSEDn! zh6FYPachugbb6>U^`x>bqZg*$k>N>M$~KtX+l))d>(2~@BWBEqn6ST(D#|r_wv~sn zg|c?5Qn`=vS=zP)&rg=;#i(0wn1YOe#&M@c+d=9u3}vLN3Z|3yQpO_41Io(qBvp`} z^`@*!z}F-G`A%A%sm=-8oI(E~&+Mc}1 z=uV4&6~?F`hpH9+BvrK1jG-L2f=1@~jJ63^8NRR`phs)qf9$x?*5P(T%LYwLU0fX+ zfWNZE!D-)++zjo@4y3)e9ph0qKhnw54Ahl%#5gD8yYSuC-{4@H@Edwm__9gE_zW+E zpSuk{wh`LF-(KzZneysT-nV|#!L-SXs1NZ;S);NV3rzpJ8gZnFavMC;r)6Mws5IL< zTXc66hBTj~Iw)MPw*c>lW4u1Z(0B-F#P|>0RZ3hUPh)(Ia1e_w7db*WDnElmrT%>* ziuyUcNm&#cCizgde{f2_Amo+#T^OckFx?aAM>^J6I-qMMA9WV#@Mu}5EN@KGV*=|P z7?ah=dIEl_*amD9L(8kyE@51E^r=)8rk&x3?C@Fery?F>>Q0Q?C`0;A5ICiOpnkUh zkj|dDT`Gj$^G|K8hdo4Fp0)^F=E4WJ&4Wv{9#D{3wyUQC<2-P9frED+aGZAt#_NI5 zS4hu0T&;)z)N1It8?f|-<+l%>H;L;oV= zNmlKHi%cC^|CKE(sEoaIFJg)*m)R4eW_&9QU9WUid`qP*QV8AjX}nOG>$n)#|ncUgIi-Bg7K;zalbWZ!k*w**UI)^%-xW-X)nfRjN7zJ)5dtv{@??3D`d;xS`~puMWd{| zLeBi1R8dc(1H?9h&JCe&o{c(GqMUlbuY&AMLR--W400?$y*TdfLUaaCe!Zu!&)uV>CZGq49b39Xi7)SY$JL=RVYzfoAUaIsCRjNi!8=V7~|zr^4~KWGl;SO+KjEBP7IX1Xn7Z4kp}%H~Lu z|A;s_koNu^SgZrX20`EMt!0OH3Uw;w$CUxs{;^|vRHjTB5uXY}A9jp~WjyOcT^#Z8 z^7q?@IbVIbs#u72gq#dvy5Gn)wr)uMBfUf6g2uy6VA?nTZjy0^C2eP0NsH~D?p(3S z|G>HQ$G}mUl~z-QIke1=)6pJ~?%uSdr z^nBEh~-#ch??c|+xeGQd-5 zQ`C=jfz2p#37L@g7)*I*9P4ZIBOjlGj}s5t@NxJzjC@Hv_|CLw`&5$#l!bhxG1?Xe zR$!`4{w(wl#0T>=ZapuY(2!P&@gI0a?rXt!=tuS!(rd<>X_Q9^vt8J?$`6#0J0K&a zxG49OgN%UTKVbgfYV*m_`BIboH`nHN3_e&J!^g!rjOLeZi~kC*!DpAh(e^U^=?&AL zq>m3k8+S4?hkl&~TTJ4O-je6eY>OT>(RRw3ShLv31$Ef@pqFLD^i7P%QF(CtrZeZ; z=y&=ia0)#24{-i>^iQuA|5=}l;eYOdeGL1FbRU~QxrQvceH3xkwbV6%X?dnEwPk)Q z-?`1pGut`fv{JW_V-kqEN?&2nX9o;9&Da`l@gMI2f)3@9t$f z>=;Rh{lauf18$Dr@KbGp&knw-va#(wc219Sjr=}ucyv%7w@=&6>maklt9hPO)US=@ z4|rSOuVP!4Uhfc_qYvnS-;2+jqw*fO;F>M;CH4kAyW7Gx?5)BP*bn}I8k}p|{zCGG zagdXkd1`H1%>^c{sjsBf&@PkmP(E#;U}2}mNbfSSje|2fHSPi~iNA(8F|WNw>F^SS zIfq@sHURxa=R5O$9j=7UNZ1t6osRi0pL-Ra-^hE$jPo0}n>l*aF13CZYnR&b8+d|I zKNI{`LNCtdl|Eayod9lT1WhL5ns5kY`U(xOd zwaeUjad}$JO2`1$;Gjop=)>9HpZ*f?33b7kCN@E&|N2tDr^hjn>ryEzn(lYfRWzOR zMcSBkkehVKW=Sv94|0xpY5z+N|1uEoSBPs5A7xZ`=&~b9uNSaQ76S+P9A=%cM=)Cd zE_f!b;v)cVSAGsbT4dn*QWsAUb%OjILtLzfPS+p~uTn<^~lmpl-=Cx@D@?EtP<~ zw-No{83$;$7`dsri)pUTL7$T};Jt-uj$WzHL;r>D;Ch9tGqjKUk67pa{q>6-hpAH4 zs%*=M2H^I=CjcKm_$@vguHCR*7{|4mdbGc{McJ0`)5V9N*ACLr{)dH1cOp-4lq#h! zLY@a`-$lf(&C^GKaa8&+)@4k68|ne~40IgJ_^q`C`fa$zD!z^nLgHh|sAs!lE^Ty? zq`?*we+2BVKazIH55pON*@gRPz>G$JIvuh%I`CQ-_}f#7!`kk|k@CF7LHy7`z$Lh0 zg9t8^K^Qx}$Ct~x(NoF zPS;iFoJKn7&tzH}o=FFF3hA)E7sfTauI%$c_EWJA;*~YNl|S|vx(aI^qBAmqANIS) z>c<}^4i%l60s7z<#CGTNh?jm$f3nu!83FKo(fN{IZQ94`x52Vr0e#R1{yN}FNh#aX zv|f$%Y4lnDZj=dMH`aM}`_t8K=qMSR{J<+dUn5tM{s^0Nmxi5;2W{1d$I@ovmqHGA z%QM!CBWI(1&n6E~DT=4Hh0vuL5ww{+Lyu6F+hdT@9b$XOr~7I$U>p zD10K*9UU#{$LVy^hV|C)G0fxWYRNOq;6T0lG2PMEl75m3*MnxZS6lEy+8^byjU#9~ zwgq{Dc3B!hJKg|(?LxZv`l&ymH-bigx;(djPV$_1*+%r6u`KveR{Uga2eH4v!^l+6 zFzK%zDZ7I|po;2E`v(IYw~XwXK25%!X8D?G_?8O!Tc=8~|6lig;_@i*AIbWh(=Wa< zxHqR21Cfi{}V^QZ?=PR4!MAL8i3s6Dqf3=*3Z?(iG)iDmF%`$ivcLsn{S5 ze!%rRX#2s} zE_c|F2jEC|a1?k32@Wa$;gP!hhrMEdra9%(mXmVR(QalwE#*RP*dKx@k347DZkZBB z9;pZDXC8YIU)q_bZd`9+82v@=-L;(XS*3?cZ-PHr^sv*<1?Tz3Rt7)(*l$4l8GCt( z)>}IRb3v}ZS3;(_7RRy$XP;2%6&9z{?*%7x6!$?$-g1-=z7*TMPJgm_y>4EtUvr;} z@8|uu{@%V6(!sSL;<0N%iwxbg=Yp12ab%_?zNKZ6fj z@1LO_f}e_dNYXN7Kjd20jbVlG3qR@p!u6_kc#dFQkG8=s%patVyV<5GUttYc*8hIX z_KV+F;vbVqc^Sg;xVPhNgP&`9j1xLo-Xe@AxZ6Dp))z%u6w+P-+-EQ`+`PsK1iOWhFmXL@9x;8&J*;LJx|Y~9hX^}1??!hTd| ze`(x48Ji#dOK8Km^HrJIvmtyy`~u*$a|5oiV%*nl4LSl0yYfKV5a&nSM$@N-e#HF? z^2YLb)gj+7;H7W-x9DU0k`52(*oHgw_m(%Xz7YeHg*})pb$zYhz0TUufRQ-(nz?ox zt?xMMPAx;k9|)ixScmXquU@dUlh`}ac=!S(ey)y>>htExwK~En7w7x_lX7<-q}<)X z_;TagkUaVXx`eV7*}rIPa4_^Vp0Vd?Y+5GzD4x^CnfnBD&o%dab1yXaVMcB+rU+c7 z2`@3>W#(RC?l+tJnI_*DeGkCz9;n8i1eEPhE*qQuu+A5F+~j}C+`~FgHfYU$-aKzG za79;*&3;LRzXFcY@XuYkNym?R19lSPf^X@&|Ng&@4ZdsQfG7BYdHzJ-N7S49=O%uq zDf=6JmpMhBkjA;&q&3>Rr&P*Pm1BcHnYe1N@HY)(n(*iY>?I(NjV@EU$ravq;={Y~ z>+bN8Ani@q8?iF$taC#z%h;R=nZ!J6l93_$gz9@^p9pQH-mrJ+qwK4O#n1QsW}W?j zJ)P(i^{}TvThxEWXXqoDCuS3$V>?Mb!Q-fWL(X8oHr8W&+=ekw_B$Tt;KDQaFUTGm zv^Srnf2D$#7*m31C;CmRjII_RD(I2?Xj_aYIzMQV{Af>%MNRqfY-wd1$IwdrX!E9h z(XssG9$(AT0;7lefS)$bkMVoG-J6E-Sabx&_?{+?JkCX%E%u{chZx=;*5t!ER_jDf zzb_QVo_FpYKfo8Wl54EMMH}*cqo0YpE&3~Y729S9uLJE594Hn&V(YNju9aE(F)y`a zoXx{}<{EjzSR#8{`?FrOshg?SzCEJrqxE8)qPW~OJXISRx4uQSo>3j_F(%*pg zM!1WFSy$GZd~$tN;|zbIdfVWNmI?fJy@K$oK|AeA&Iz!;Nw19~O#WU8{xVMu@*Ke1 zIGt(wg&rH6da)nd@uJ?<+uTctv<$PCFx`&R%)i8>!G7TQY3E|hztPaie#dYSx`Mo+ zPQYHLaCuY?oH07fkps*TWDiVUkNMma0UK(V*mfBx7iGN=U2`-36y(8tKXx9GN&9{<6zHXX-2wg zp8;Etc~7@Iancx%Jtrc!)}Kgt6)4-%>qp2M^b76J#g5OhBhtl2EQLPgzEq4wRe2NV zi;ie7I)eLpE4bH({>az6;rxRSGT=!PALTIMCC*rz(%r-0@E5w5^RQLeXC$_BdZ-aH z51Mdc&%V?Z{LuEa-d6@MjvmhuPn%d|W{jRI_?`a7Ju;GpxrV?So@SbLI!PNPc1Tgg z_94m><`Gi=F{-qXI8Yb13ENvaI!nP8rB9aa=uHka_C&p<-@raD@HqP<0rc$*X;*YC;RHoV* znF5^f8DZ2@Bhp|`7IqOZChy8A4GS{@nZq%K2{VdST^#7f?!q<>x(jznx zSB5jkM3{5T43xukmU$$e-;%k6vz~L1I!izAjC!E%f*0`Fu>=&#n`=sfo z*;dCf&XH^A!1n(1jA_<(qhG-7`$705Bz&sw@1tBih)aPEl|C;z0zN+EkJg|4k9-Hc z?^3=jy{H4}%{BaoKTPBy4SIv}O}Q7jkh*FeaTxgYd$PZC_klV>cn0|rK4C7(a;>ew zG1s2Msg91lZaXxcvEcb38PBk`u)4f^!@XJEYwq)5zXN2D^J$))I$-=t!#TbaVCx-= z3p|j#w3T5S*t+M)9xw6Ji_eC7xH5WSBbE z4j*20{CmObajc0 zNu9@eP72PRj@~`I!jD&~j4FMQ`z)3!PuhF&blG~t4&hkL{p?Npi28?hF!Eey<(Xpz z^<-Qf^DO<)9h7Oe{#Ms=O%}At_z<7R){*;mgf|us$^re;qJ1VV-tO}UIe0I*?0! zjEtB0%~)@E7t?;uSbscm{Wtg;1l;fOmHoOozFPiqzYfQ3X&1wD*bV0qrkzcLO|cVv zIG{b8c#Dtiu@sk->9j`}?a_kxC~x2odFDm9443rD-9|qIAbZ#7wLiN@=r72_b1Eyb z7PcyDLd{puG2(lKE<=0Bdh;UW;TqGO-y@B3iaOae+EP*b6!Ag$kt3`R+I}a)@B=fy zYZv~p3+=)QHIjZRY)Jb&3bKN7C4PV|CoO||Wdiye_B&amVs3QYfy^o6QDeH+vt z>ZdE-E&{DmF5shWlmXk*)Ts_MU5PxSLBGz2G~#vec!7t$8u+$utm|xie4uZm*@MDy zHmH4U?V~=|y5m~ni1NUcElj) za<;b{HyHc6Z9QpU_hh>mzFC>$IwtuWwC5A?><9heiR|5_Pk0a7pLo!|%l+wIIrA## z1b+wa3j@cw1mQXMxMxuy?+WMPbnK98Oc!9EE4 zlht5lbvesITqf3`G2b4WV)l^{#^x=H$~E?@n6nicXDH0^{3gKol`0x-=fMtaRDMi3 zPdNBV`wPOWP~&=2ulFbueLJo~cg?%-hvV#T*rsJ7Z8QDlhNf*OFBfsI#lVLhT~nIafc9KVT4lX)pKo`ysb?guYzxn>2W%Sl9;`BH zn1@N4TThwiW~gv2Xwc8(n_3z~9O(;W=sLqD#vbQ(=lU}P{VWX2mghduXSL9M$S*ph zzwxnQ4U9Oj4yW$}%zcBBH6MQ^=7oK9KM>e-Ew5=fQz~#cPb&9u`p!Lq{cu)n^r@l7 z5cr}BtA`7Xnrz5>2G;le$v7L3 zioTN?3a|HRy>K(muEqGJT^$MdmE~zQtFqGc`3;}=RArAk$9{hw?9FKlyA|}nhFL!P z@h%70tyL(W=Umrh;T;R0V=*q+pyAONXZ`J$bOD|)&w#O?9?vt6=+79pu(wRD!Jd(D zMrrpBc)vtHgt6Y0vIb*H<59>5{ater`V(R6vG>M{F?sc|>aDAR=OU9n)=6jlHeb>j z<{4|!IVM~9k(d)$_|YbPq?6vuNgrv_|A2Jv1LV1p6#CFWAKue&(`vMVyk7%pj314& zC0Og6#`6f=yKl>U0XUPqWn+&v_~_4Q4&U~2)E)K^)8g@AZ;tSfJXmG$busul82UG$ z?$n#MejQ9Y+Dz)7j`f+zkO!NdV$v~mitfdnPoFvA_|pEKi}o#Ok~faGvvEC!3%XY= z$Mrp~5CnHKuI0EM!-aQEVC*&T;HcI6Q#qI04>{V8x?z86cq3@Qo|j?Nv3{eM0SbKz zor`(N1K8Ihw!c|hM}H1Svhey5p>SZvY*yr-ibAo#%(vjzreK| zjB9nU)9bgZife$&k27*B?U<;rUk`H`nNNI)c_R94u3e8se)c==rShOXM|$)c)49OG zy+skoK(G^Z5}(m0{mB@gTAMW%gjI5=^iOd-WPg)=NwBBIXTdT{QKlX9Sti;k0-V%u zJr}JXt~_NYvHqgdfHTwLgl;kMQJf6(;{09GV6#VB@{B;!`xWTVr*7R~cmUrx&KIA7 z_mk+oH9b&2tn+}s`aMc@K2?GGZyApG2z)>2e_PPE?f`w^6!gV@tzYf36MZoQeG%`~ zcr~V-Ts$pNFU+|Mj2+gKbwZeS6ZdiOS;i2b8ADLkPQ=L=f_rmgNH1eA&?j|^*)v2M zMSla&chui31LIKXH_-EVo`*Ym6GLZ~Uem5m!+3%`mPT1uNyGjO#9@!|FyU>MeJ2$C zECJZJW)CNP+T6pr8uqQ;19hO?5w%I0u~&$jm-I*4qdw;>9Qvewe?{|W;jW6>me?Pe z*>p~i^9hX;@hkQDwy(hx%pqj&{%_$dH}XL{nR9p6DS$l`w6EKOhs2@!Ku_ZC$DDq# zX;}0_n>_AHRq6c#+-kvdB%HTB%kUmeUam@%zFmecTgZd_o$GjkI}x_)O)MVI_d*j zZl%4B3zZJWzK{d4u#)hAL?y%OK<2F=vvEP1>S99 zy0Z_Ix>cu7Y~VYRHZZ-bf$s|V6Ky)i9L!n6Oh3$|!ybu@aMIDfk24+i3~^$9&+(|K z{FktAlj+W0Fz)G$()T>(Sxk5ICij3w(>H{|w=*63Qt(4Ba<8)R0%b?e)$u%2bOZDG zOgJgRe~h_YCy_DL+U2Q&>s zNSmdB^S%i7$)kR{kHWUiZfW*3;u(IO#$bz>FveiDyWIK*m?s&!3by%5+jk8d=V|dg zn-<42`hf{Awgv2S?%BT_dB_*~`e|zme%RqFjU6R%po{iDdCvY~ZE?b1YT&u2+RBp1 z6LEFYb$yvS0eR8a*GgOAc|73wOq#i$q6Btt?E6xk_b57J1AX_{Lxb~xkbU;YPFPGXpaZfZvS-_=9q6J@nD3Ht^RI{e zhMLLGePygmtb8@S@AY8*--FFViHp4E+|v&oD>jNVR@b3_VlG!Ic{ukhD;rMTL%Wpq zS_C?AhIdOc>US-!mY|uo0Owqby>@>F-q~o+ngY&`{lkT(%_+Y;zd#vp-AsMSAJ$dQ zNB}4O_;#LZdC0XK+qT4o^CWTY+ccM7&v)ULH_fvs2YA0M&NRY@1KoqRqaQNrqm{WV z^bz^aH1yA~$QASx`eOJKyw56TPUFZAanrZ74RSJhik&q3|~F zenecoR+>6!UZ&M>{g>ri-wmI6M#<_a;;Wk)Dm|_leu^%H4}y6PJl|A|Z_**X|~K;Hvw{{wtc5sX*TMkiVu z8ShU-*^%DVx9W`GX#p*8Falrh*XgKb}Ur-PB5WwElu{%!d${Sa`m za^&dm|BxU5Mp@)X#M(3Gg5Li^J$3_L>VbI?=R|HjRvn}s_$*Ge9^Ly9F zOMOM1sW3OP`(k)*;Stn5=KM}p)42te44Vb=BRbfP$Cw`E!ds0a|ML2+GXcZ?*7%Ldhz{FoM%UIx^-LRl;y@RIY|7%gT!BR zU_8!>m!c1qLiVEL732tKYn%2O^8J){Et2OZ+%&PJvECFy=TizkDQo+z#JYRTJk{k_p@Ywj-+dror2Nc-#P2*v{09e#KUh00 zJ4pUB50qu0XUsw3t3%JLt?5_zLservp1wWQ;psj6aihBm$@#$}`-%Bdv z|m^|aei#)8yLeSeq}$2A8Bk1!Hag6G}M_eu&H)O zeT<-k{ebT*9tEAta%l_j?)PYVIRBNsF&-s*Wc*lX2qq&B%1nWtBJQBz#ydub8Jhxj z0^YG%dNTHB#M{Xc>=~DNHp}(E2Z+2pV<>US2xGsvdFFmR{S5yiZ2`&KJ{0Epxj9Ythe!%YPSu8G@rKpRWC*Gb1(d5j%bPWd@-|A~~p1iXiR zCeOFy8EqnU6#Uo|$+csYUuoWFz;Zc%6?)ljgoXU@{e)c4$>@Y}7klsAcMRJ1QOaBr z=^}5)&wRiI``OrUaX6SJv|y|g+!!MWGuiO?ed|}b8S@%@rcTd0rF}9GA5Y760~@6U zd=B2+WFz^BD`4KsW$MMYZVs2Nm+%g7G4(nmwq7m{@J!bW_JG8{tLfZk&u_90sH@Z& z{#MpudvtG@=CzBjIbJtQ6YM*e*DemUyQT?toW#GS%e8fM=W-w893=ZPZJA8=71BEZ zz6-nW3gHx-7bl)zBk`n63*uZG+fw47cl|u?IL62w^grYKeG>{V0bb}atXl_CWqlAn zUa89)jtpQuThicrVn3xl#I?!qzQDOouHVB(c@NLJkD%=!dwYc)v+G)@xRVh6UT}v-T3cFZNu|WLKZ}A&;=0gFNx? z2Z+wstiC`y=x=JE4EQbV*^DaC&NZBf^=loA{*`Qf5Xj3t(6E(uS@|Z7fKS0(JAn06 zBMZ~e#^TQ-EXU<=E;Y^M1?D4Y*JR?#k77s6lZZukj(f$#e?`#9~q*^fRVd`6$4+*9vGF!vRGvRn7VYOA*pPyNC5 zSUcuM^$GPPbP8}xv-zbSC+K>R)(B~9rY=RMF8d)@(K64SvaY3vmA7Rl^_VWu0kf>=PbAo=kgL`S+(<`5)h~(UwKIGqTvv&_j74t`x{i zHDo9V8GnlntGZx@kEkKdAR`kJozw zOTEWD(0d{qfTiq68uXsD5!0#1aJS=hW>n^pHpYRa{zAT>(O-fax)1)f#!Apy`MJ@Z zm?vC^XR#j*e6W*}b_>e;@jD#D_vf=dqT`8E>-bda_+0XwyhMM1da5Fc3UJ_(eQVp^n|LuJ;tmGvQS9l@z=$i+x+h5u^$2$Sd_m-=e&4vhSeOWtC#R zQuDk|s1&{qX%o^FU_T`

u*VwisFvhkjvn4A%3JZzskO(nkJV2%hlXkG%1jJp)G1 zqR!_rAI}fQ=vwHpoo7p*p5}?R3(5mcJ5Sf~lMJlx&qy<}%JVkY)Q4-GAO=#$Xbmry7@lD>_13MaaE#w2^FzjgheVVhQ>F*_PJS%ZV7Ix+>ZQzGN zSjKew?sLGhZ_EBNlLj5zD6)yRMH}F~hbRYS3M~3&v|Q##Sl+==j&^oz_<+!hbm*EY zHB@AQeBQjHsXihLXBwN~Os#+X8?@cbI$63x;Fr`LWn^G(MBNf^H#5KJlY`jJx?i9^ z*sH$C)m<28Mcz!C+w~X8AJ+#r*tSOd_$v$?+KKekoA#zXMOY8sv0sV3@@%)df!u%O z_|3|jeBx0*2=LKIkYVuU8hn|i?ITEInGxDVu!Gisj}hG2mR8p>9N!OY9@?D+cFn}* zLqGL<4wv^BG9UX!FVi=KZp2M7?Pbf4q4D4QrGH3Trsl2XpTvQ;lHc&w@=wyhTS?1| z?c@n+D5{Vrsg{=;$da~)P46~l@Io0 zI(4Dh_e9+A=`FH!!ZtjabRk}JMmpL6^(eRLs7Ix(2mCw;L5X`NZ=f2mkVn92+;zQiCakXs zLuO!C>om}j4tV)K&Oo$*@_*&hJ;Kn<^0TAkoF3cxF5jMoyN0XGtA?{2;UQ?p_>6H4 zwq2oKe@#JoIt(6q;Fp5k$^6lHXRM3z$M8dVf%%=p!@d+*LE0L?j|N_`Z6P<_bTf}b z9{n9f$X|Qd*~pjCO#VXCHos5?%fU~N_D@C9Jn(sC4)Y(Uil&)7yUAC??S!u!cK&j) z^SSp0c0O$fs|PsmGWNQ>-}tx6{TMizSLSMLZ`4ub%) z*k;)KI}-Z=rLU(M*+|p2E_4%od8i}wT_jau+*7-=c~$`W2>Z@)#x?DLvjR=NjR`m# zJfUF|#)U~{j&bK6&SngJ_$qiHiU*PHvLR+Ko9ZzVSV5qsWg2UFi(;0+i>yD z_g2T3H!i8EyuTv-Y?}viMtteXP3hMn?Xh0>S>zzDvkY-3y(#R_cUj^m(jfHu*B>tMeg$tk0_H zJ(946)DT={xbDUEBCZ{{{6KgPuA^|3;97x;h2R~}O?v};de4;X`7Y*w|zL>D4G!_&S4 z$0zjR^FXGYjRq}6%*(LFvs2@U@l(6w^B_Au17~x2eYWj^$Ck}wnkNWaky(K691CMz1?jm)Q@R=kDb&F z^h>zjgq^zDwvlwy#ictKwsq5Va4fd{(dMJiG6}R&_M`sGLri(gba`nv8$8qxfl%qG zSo4q9(V`y)VqOQjBLe}CyuFe`!#q5nk1?XIzoDJ_C>8vH-gf3eGS6Rc_x>6^PQA{t zk3Lw=ttw6X`OSWi45aDth~xdlhWi6*MK7Blx;#EV-(~OSe--%;MV#ZS}qd?Qm8s3FpwwcV%IxtSj$= ztFxI)f!FP^|GysVlv6eTBU8aU*xgaP9s7uDqcROU9(#_Lm@vL?)zH&x>V~;Zm9LAz zdlBqg)CF6_1f$>cAV^#S$?ky8LstRdUhSom9L!Fm0rlRwri)0T2 zd1SvO!gd;G{e7nnR3m^?2zdD8KI3g$W2 z2m2_Q=WLVbY?Eh$lV?CEyp?%QH+fDsdEnm=o^{5Y3h%t$VEY02z6j@pPP1z>;4AXj zb2pLGLgA_(yA7@Sar{uoOnY1%Y?!>y04(LN-r|ePCp<@-v=h#H3k}_yp#k&rNR~qb z@-R&JNET?=4jQ&QG?=i^VCMEw8shQ^4TuvOaPC~>nlf2#WU^e#SO((OKt2zC{_A3M z{tI_G|Ao7(k>D=pzb=;ZUl)s9;~D3_E;P^j{1@Wl&VM}yT`%;327UgktDOImILcQb z6rRHN9AS7d0=y{iR)aYzZJ4MZ%%9C~qIJWWarRZDVI8sBvtPj7rWVy z&_5xc*^bWgk84^}kbJ6A&e(D8W%F;eHZtW0`TcgC)8LbKVLW6bMi-zgo*9#M0|U!2 z>57~fcm5CQJljX#o-NnK`+}7@Qzp-<#o$F)@Se~--X?ya4nKib_iQ0)1K*-&3mIk} z_iQ2QGrWo7A}yWKMo}BN5;k(T8o#Xr(lP*J&p0xTuvJ;(Ynp6*w0rAN_zTER9c%=t z1MKmguoKA7LSw@V9AyM~KVshgCNIW+7cc9z%9RC_DRP1`SsyDWtc!&s?gBZ3NZ$)= zod@i*q?) z@gUREOj;V!=ILkp+qfTcHPgGA^sY!>VAC-V22bx``e7#hFr;7Uq(kOzV)`K_9rhZ& zA0m8}@#m#bcq!A{n)J3vzs^a29`7Axda6l>y%kyNq;Cj?7cjl0NpA@~y&Ar~8_>Tf zHz+@H6MgvOV$K$RA!}o>5z4hcnCn^l7MxSPch=cB%ble6w*Ck6Rp{iRGSj}aqt>DA zL^jGH8|_2k^GKW9POyn!S933JBVc#;w(r+u7&cLrIkywV0s6Cu!)ZIQ1;97TW4f_l zqWRN9;S-oY&F};5Dfz)i=C^Ao(foZv;r`6;w6Ej`Uj@IBckw-B7+j!;^~Hh$9HQLFmKSDPb9BFqUE*lQ70U2T%CBPf=e-9_`#3b!zIX)ajUC>%NLPYrIZ3 zb8o?G=7jhbyzs@=B|2Axu8*k;bjF*c!Ik-AmG(=-=?klu#AgwwFWfZYC3Pg)#gGeNFrCOxO=!Po3#YHV@WJV*Ed6LMFHu@;=ByG!N!aWkwdGaqz7jfD3)K-r#2) zcwU6E>V>TK1>Ptu&-I!)ZZr;Sah&6kkI^{H^EMcKoKtgN8XTZ`E$0-Wr|FY`FRzjQ z^oY_vMO(HPW$(p%7qqXgiJni*yBKVn+42^f{fa^ZaKZ-}9v&x0J5eXTx0!ij+r>G% zSdKmKXou*TIIPRDJ^ZM5$kx%uq2BJ?Gy=UspJ21!<;rsQ9HYH?CUV;$IFH;GZH_&l z=tIL~|D5Ub(f2Muj^fLg{dS}&u6+6=`7Rsb0dT@bD?J12%C;||{+M?L*7#2f-N=jn ze15x3_=0^BvfhGqAhwD4LCkl*u*asUZIMsXuug*h^i{d#3FXvDi(hlGW4YCPY zU-Ft||CjRjW>djUJ%pkM4PB%uFe-!l22pS9DfH;?k+O{rIEU%HHdfG@mY3F#s~gFo+H=;BXZK$$O+~rY&Sc1)_c0J9`5L4&YPQ)XS3$jtUiuU`#pVp zg!tdk&hRyey@dL^dz7O-3DyJS%G0(Uy-htZZ<2ao4#zp8eK&Je9`=LKhj1qLN#Gr7 zRapoly&7@$+XU7otIE50KK7oqCk)$-;p!~Jq0Q~PnQdG~deip`mO68cAB?QA4Z-j5 zi629MIQG6>7n1ZqD10o_9s3^pkoCNm@UR8@GaY?c`a1eeRjrv9GrfH%+?(m>%SIQ# zZ-M&zU=w>zDGJ7{B{42A?W*YdKx~_CG~;MhE#oo&Mc!UEu3X2hK^pcjOk-O7c)FJS zBA@9aHvUukQ-#kPu-6!4b)9(!GUH{RNLFk+;%3H?3K%aZAW|_%OCJt z(oWU!u1!XpXokUyIYA@sNs%q^05+HK>S_3tBgeuv^l5v8^R&9v`n?p~zj-9~6VyXj zi7(^=RVw>CK@Z;za39L%dwFQL)WD|2JK`FN3x1Xu+vN<)6QsdE+{m>)SC=w;FkM>E zQv2<(Zi;X7qK>fDgQGBqH#nNpjikYr)0}P;IV+cTNhMyFuNhVjhy(lvpYW}C-G9_F*YNw&e1Gm8IIAUjNjKJABc`p%!5hVM2l($f00by*Bcond3Sen2T3<>u%U8k!gu zys(Fw!^<>DCl7w2Y&X3}jb*#OPAP+V9ABr)8;dJehMc+G|BwvvjJwcmPrL55}tH%;U6!)NMn&9pls|%Xu$?FLuue-^KYqX~$d=XU9Cf?LdFi z{|$D`@ZYgxuy4fjrPTVAjV(~R$kxdj&&8(BqONVSY2X7cjo_U-)~12K7`QM#Auisg ziOhrD1Dl30A~Oi@EY^EQtxdx`j60Z3(~@$~ zd=M+A@wU+SOm}27-WG~5-I33DTd0odPJfS#0N;GSZwp06&=-fjm&V`V+Cn>##?Ly>pT*TUl}+E9n!jFQ=tD&xBkdq_~G zYbPbauQ!uEDd1uLs)N}{NVE3Kf7wm~?0;-0IpzGWorJtD@1k}RaU9G}YD)V}J82Bw z5l?>LT+ab^QaxmkcG8RHObF#Uc8qh*xWxMzxA&O8>g^swIUaD{%)LRfXK0C*d+8f! zcjm}>EV15cJN;ueYb)#N}B#RX|1CyTUrebi=1+}W&?g| zy9VV!=ZdY*HYrA075E|iG``$bX5C8o&iOUc-MKYvuf{6y)}HYNA4(&bZ@|A>f&N;G zcPE1Hs_0D12PchZCHr}h2Yadf>HSiJI4>Cki*!HIvyE*@e3S$FPvB2$3}P0xb z{`ItB=6-8+@vI6C? z4l!qh4njY1$b9L4=-kt**qbEt1@NNEIro&^T-}hzo_l%@aDLD%e2P2wG|AK_zD`(2 zc&wcl^5IQ;Po7&i&neDx8|V2@=edjX+{1b9J$(%csld8;?IY!|9M17)w4I( zJ+tuMehu4`79W>1AZ=s+l5@_U`)kL7wOp!+HXrP7m)&L1^YhMmwP)F-kyrMw>*;BEm?uJ8pzPIe~dp4hz*YHq_@(pEaKP>NkWy+q%-oGk)+=9Me&ENa; z;fH!3`80dTwd4#Nq|NgnBg7;3HeY^LwKewOvYx`do{ApDBy1#BJ`~Ho? zioQ%+*>=e(y)p;RDxJHm@T4V4T{Hf$r_LXKecJBOl?(o~bHy*W|Fgvpc^{1bOXgGa z(hEv!I}97srfR~d)XDYzuQ}G&`P?6u+`IRg<1_9kAM0 zS1H$wT-5W>$EOsxn)i6*lENP4kG*jF8J^D9{W9!d)mIm7*jKcwy7A+>>N)=YcW&yq zyvX0GMY(6hj`Y*!-thF`f30Xd>DP{t+((lup1AI=PsU80J8I+4XT7((;hVun-SEox z4TJ95`KP4u&sP+*TJ*ufcNed${PVcgr46?hF7*e##_7g!S@YkzW$CWHcwtDm^ACBO zhP{1zZr-c`GcSMs!^=NA^xlg{&t0?XzPm;wcNuWvtNnI7J*eO3r*}A~?v8=m-W)M9 z?e-2`wzN3=Z}}aToO0E~Pk-1oO%*+H%Om}kcX|8r4uRvxmgHS@cCQV8{7ak2hW2xA ze}CJeitHmsj(Ok@|Gqi@#J^nr_N8mT{<_UGPpp38&8hRw*|qDK4>NoGn*U+1k=_%( z9l803Yx~Sub?a-Nzi`(1YqoYf=h+(%ees10@;~_Ns!!K;8IZfD;?keikDh$^!h0_| z>9HFRzv+u#Qu5P(xpmj9fBxa&F}=RI* ztxv}VeJ}Q&_himJb)~5nz4X!MFAC2%@y4foYqp(o?vLRO=YD?28<*4;J-+mwc7Gar zQ%2A2?Fv6@y}JIK6E8iyRSVx08?*kJd(E-OK3#Lio?Sg=veFtZ$E<^WaMpRu9RqI_lqdz5d#>-O@Y1cK&mRZ20=FhqmwjDDT3XJKp~G zum_**)#HX&%5(ql_QO+K{P1M;=+yV~`hT`^Mcx;?{Nc)!As1b?;{2?iMa9mqKEC6;Dc&#l zez^XGoEPu9^6Hbr|G0F|`EAFaa!j8g_qM)!$ZMxRrEeKKh2uCIq3zUP6=3+vCg zzwG*~p>MtO=b7K1H|)vLe>v*-+~H5ZTDz{>ukCld{^qxp@4TD8w*2o?Z{E?p)AYvS zdtY07>eWe?ojUi|tC#KhxYgeeJ>mI@GoGLI<~`nJw{*|%bZXN0Pu{$~_1}gsEBvO# z-goPUR$kU;z~XBj&CJN^^m)UCcVB&?`>D?t9(U1`CkE%v?fgy87b3mi-L>fE7oW{N z^z&Z3&-}-rU$URNd{Upmqly<^^F+ISr=K}-@|m|!c{pjv`xh)6({b(<>&^%a2wc;B z_scI0@4n%umzEw6#hZWQQytF!{<-9bx6LScaoV=?e=1J?^7(D==bz;Jhw=mzj5s?C-pt%yj%92^~L8CvaY*p!dq9|75+n;su`WzoLc+% z%|D-%dC!0|Hg>CRz2v)}j(>gd$1knAH5>wTy^s= zDR2Dz;f_A!&w4tk>XLP1u3T{K>s$Zv()nYjob}~H-~Q#O zkH%av@Z;mZe<0NM=y_*Oyz&L48i%$^U;KJwhq%jx6#oOydgPId zG0;5v^rt8E@;)+i>dP(8tiJvGlSf=I^M%drUTX8NzE9V@bJB+|e|+v2|9W`scRzRR zee$v+2R?rP8BhGln{)rww_N?gU*{h^_lD!UUi9;w7wmne#oPUk{^H}QJN~rv**_NE z_w8GkWW9FxAuDU&e57FAo8z~R{`cLL|2*`_bKkn}&4!6rRQJ1Z`LBbHzW?p5Cysk% z``=%AY~>Tv|JDDMv{(CO9P>c&pXQx~wJZJgX{j-lw8Zhg^UVT&U zyQg@Bdh+aRK0fr1Z8z55y8q#q&V2NOi@)po&KdLXxu^dLxjFA2`OjCL$@%ukiHGcO z`|5QodKI@i;fQ~{|Ix+23~TxIn{8Ka&YgO}+MKCJS4YN9{qw+e=Z!n>%d@v;|MQKW zpKQ6Z-O$7S{@@?4ADCTz<|P&w<|;B{YrciQH^V;ZbfH(c=hszJsc;N7dA zlkgEguj*-o%3A`1JR51e@}JU~_>BD>s+Bq#XXP~H9;K4@B5tuqdGPHauivXYr+8J1 z&0gg_%BPZs`joc{KzoywryC}nclwoQJq*Y@SynHlLVcBI3N|l2ca-uxghi>%1C^)a zAmv>T;x>kqZ%0U}q1nne3572|U3p$S9S-$#m1pa@DELB^SC|AQn5u(#)ehUQ^j$}`D`PzwkMlZm zC*K%G73AL1+))(?2h1J5CJCpSdnhi?pRO9U%N7_>C3&N zxpy-6L(LtwJO0|09d7QO&Ap4ccQtpmIrHH>j@;oFmpgn=a_=d3RiuR0DL>xr0a9}O=0~W0F)4yZi0zhf&&Q-Bsh@ZK!O7a4kS2`;6Q={ z2@WJUkl;Xq0|^c!IFR5#f&&Q-Bsh@ZK!O7a4kS2`;6Q={2@WJUkl;Xq0|^c!IFR5# zf&&Q-Bsh@ZK!O7a4kS2`;6Q={2@WJUkl;Xq0|^c!IFR5#f&&Q-Bsh@ZK!O7a4kS2` z;6Q={2@WJUkl;Xq1OLD0Ku>U>09OO9BXD_e**|-}pXd1p*+|^we18b1{?|7}5-u9= zU}3z+i>o6pAn}}mYc{T1aNUpV30#|TeTwUQT)*P#;!&OvBe?#7>vddPK}=3gPX3%Zv*z$&M*fVv z*`+yo1=CEZIKRY(ic50yrZJFnNp9hErZ>e*otrynipt5&%gdi#qH-n|&O|70`YZrU z%`Yh_oRKfVV%}!WoSC18Oqb-%ECHHJ=H%z+PMI>NaONem6m!P}X6DYwkERp@A0s3i z1G89|DPYzmQ*ujHPT|bsi6AF;rUXF#%#vBN8IQ-=C9`I#oau$dCHc6svIVF%?=z4^ zS6=R@w#u13YdYwglb?6ljN+*(r#OGQ&|REAbBc*5i4svQ!#_#x_c?`(Cqw_sK=kUZ?u<>shglcs=UQGAc5DsRrb!jgiVJd`~dO<1h1 zR9Aa^YEL)iQ;{C{`JO+orzzznsx_XO)AFa}T$VqlxDf36#-oz+rswC*QSW#PXBOw9 zG9P&6=gcaZl{afT1ZT#K+?i8y zq^v4me*T;swJ}*G<*CoSz~uvLa@3cplvq{K3Weq8mgK8{dkgX*g>&*R$)A%yGcUhb zZD{3F%QHMVvo5)W&HNW1g8e~UK3Z&6saowTES^0JlKKkrtsMYzmLH9`cU&@kZgGKX z^yR5veMtO!(q#2o(j3q;YX&3(mANTpiotMu%IrD$m*vky&(X3DHWsUUQiQ-ah!qHZ z1?uJ`P2#Nq(ILOfgylbMxos=cor-fHz;Y zn3Jz6Th5x9qc*jiT{v^9+TC(WVX?a2FF60&MtLn&%UeLGXU#29*ZCo)VAmyuQ|AJD zRSWe+3!iGZ2#iAV)LFn{1whrefNad1HE(+Ul&SeMz-RTgzi=kR!_8C?fErDiI zppJfS0Xl(m&m@HB&dxai?Hw(1rsS67s=u`JsjbtHNmui+mXwmGTKZHKG_^NJYFeyb zY^lCR-1T#q(X`(-R?`N)MCxOgfq<%c_^F(apB)Q4&_gBpb1uuBuCDTtUO<7ohxxnr5n`ZzMz2@PQcV8mk!|gx%&_7K z{(daKSFh!Bjr{I?&g02ZPqBZ@&znAXO1^p{MVCQId^-iG{~_=j_*+%W-{mi|Fi{6T z>ArUpNGzPKu1lrPl!0U!N`4*rl2pS>%#GChno=J`>TR2ty7g7bgW(n>$?w)T_`LZ| z{x09l-#fSPccc7neTUC`-vdsc2-P*M=0bI90bAN?dj8C*B?aoKR!J)IK693BW$8^> z9&JVKA641vS>(J8dB6|(-7LS~%kSb32s>MS+-h=ZNj{Y69j(D8Xm2$BTy&0~T8Sz} z!oPuKz2wFiR-$fbZMyOlb#rTQ9Vtm_PgDA%P3cb|{rV4?elLENZ$|F?oGEi>PcO`a zDCW#&X=-n4k!@N4O@v?7CXf2Jc<>i3;RU2FDzqbX| zAG4t69)t?A3rE~;qdD{<6F&M z>#g+mEc4#$9e>2ojVT3nzRH%jwJl3}(Yw{N-m}BIKIMqbNjp57y_KFJ^XI?ln{>)U zo)D{{P z@F^xdq@NDYFyXbw>F@#*9{&d&zT1TNn(zh_KJSk@{c{t(ZI%wF;Kf^{XKRrT2TeG8 zt`47V!potK`FDj0zkY=d-)X{wuGHZg6TZ!a>rHrinNAP1*5w_wScm(Y@W;z^c$5vp z_UGSB6Ylmm9lpVY*WRJSYfQM+ojUxc2~WREhxeH9>v!vL*EYKR+g9rE2opZz0Ugda z;pNpjjA2>$Gii+uKX1Y%kLmDE6W;u!4!3Np^Dkek!$F39;P2BqJi>(QO!xv5j+k&R z!!4Ls3(RyAKHP*aXSk(OWhQ*92`@I`ml2+#i;~|RapA8Jz65z^?#!HQOF0@vm7pH{ zySW|acuts99D!>O6Y!w_r6(pH%$212L5FOZ^IUTyha}_ z-whM~bp!vlfwy4`KPV2~4HJH^f&bLN+pvWX#=*N`!XE)R{(WcQZP>!YB9uRd&%%!z zCj6fbyr;e9e>9BzFv}zS^>OfSnDD0nj(@!kybW7;m*1q{ z4HLf7z#nViZP>y?4agtEgm=S)f5^aR8+aSG@U!FK-7w+1b93PyY4f1O9j;yc;IG)#s%K-iDc9;0cVsD7+3znDEQZcyOJ8w_yt} z869{xEbyH)!aFRy30rvfY5ws>`rR<$*B&a#>S+US!^}_m-S#HD8zy`^Gk(2h;BDB# z69@komhvT}!-OAV;J-BRHf-UCI{69jh6!)S&jtf;!xla}StDSW@NSs!YrE<69*`sQ z#)g@nv=`{)DE)4j@OHdD-oV?ig|FiS{&-{gZkX_Udq}dHWZ-R>`B{D?#t{BlcsES= zJM{}XRk4A$VGDm7#tawU4HMql7ZnEHhAq5;OU#9L!vcSlPJhP2o3MpHg%9}S?JWGb zVZzTJAj#@=18>93&-!oG$x(PWO!#w-)){sgcpJ9x>*L_vFyY$`)EQbq53v1h*uqcY z1O9j;{cf1>C4(ec^)&D{%>1N36eoXfnDEw~8)V>Z*uoPB{}^WZZkX^}jXij>fwy4` z50|I>S$H>0_@L=flMK8KTlgIsJX*dRCVVUSVE9*T;BDB#pTh_I@kaXHFyXEJy41ki zF!QsnmALq4;VUJi!-Ti??jr`?hAsRMCqK(~!-OAnqR#M^fwy4`KR*uM4HLe~z<+7r zZTLTh?>XEQfN_BGXTui$MLyt373~ z-<&PU>SP0N!^}_mr^}qC3EmA8{=&00{3HW!!xnx=l1^us<-1|R4?j<*&oS^eY~e#X zIZD49Cj6fb{Iv$&hAsS{IR3j~!oTw;UBKN2-i9rFRb2UQSjxXZXL!t(Z^9PdsOKpC zZkX_EP5ze*ybW9UNqoQ`Z)f4h4HLfOI7wEY8h9IKezu=!-YC2qCj58<|C52YVGHlp zm*u-*!Y9F}%|AcvP|BYTTlgXWtDS2BuBtf07X$?hh%X4y8Kb7vVqPRs!=v>D1(lb8 zHFc=r-rO5VNJvb01WkEZzyKnQr4<}(!SWClK?M=PCMs1?Ta=+Hinh#9C03y-wSZK+ z|L*^t`=7n%hU@6qna-Z!ko)ca-|n9O?AhIacmFlfUj7mjzlix4F&`NG{#N~wnD`C1 zm<;+b9~gX{u@WIn<(F9VOALP)_>93%qaW%5Ut;1f9;2f}mCOeQ|166yG4US^8~%Le z1A{-#M0@#5O#H49Be0VBz~G~MB0N<6Co%B{Grx)Xz~IaFlK2u6{|NJUGanfI<@7^c z^oRHo6MsomM~4nEADHB+{x+Lvk1sLti(^KhU3XLefWgn8AL^n%l)uEpuP@Wlq4Ssz zO!AaJS3i$0G4UIipU-??@JE~EJ-)=me~bA)VLmYUa=b$2mzem&$C?aoVLmYU%~t*r z6Td50s5<5YgWrjMsEhtk{t^@a+;SZqx|8|9Bv1OwGSMDiV&V^C{{74c2EQx)P#687 z{3RxSafOZ!t!F+k$y5H+CecNIh%Yhm8^-JC(01knlRWV&O|-|CnD_^nznA&I;HO!9 ziHVO4K4m^|s{AxAP-m4eJsU9i8CL!hQ~pKFznJ;J;LGw3rSwI5#2?Q5E13@rzRZvK z5);3M`6bK;24ChElz$`hf5CiU@QXxwi7zqb-^~1bm=6s8xfWky;_qetI_3j|uY&bO zIH>%GnZJYiz^U>(Rhjf#m=ByPKa=?<^)U4ZI8}Z>=AX}eVDO7g@x1RxV$$DY=J#hl zF!&i3Ut;2KWPTa*fm7x0X8xVb2L@lMRbPaI-rq;eU&?%7@QWVLouG{Qb-?XFhPM{Nv1@&3s_+<#?Owuf$aU@~Tb!Tg7}}@K03#1~I>h`M|02 z$1wk0<^!k7uV?-z%m)TP!}|Utrsv0cYWs6c{Q(C5O3QwfnD|(K?a6##@N2C3Ux|s2 z_1Zzq2L^vo2lD`ghmyR&#K-z>HS>YN??*q>MSqAdG4Zh;{9EP&lRS-oqUxp#e2IyV z_2X^K2L@l-E0n*)#K(H`Tg(Rrf49lr%U@#RSI#g3ZB)lh;~x*JU@HG2YyMnf;$uDg zhs*~?{u`|MUx|s2_3!JM4-9^&BbQJ88A^cyYyNLcd^z}x!N1a~KN1rk>+5$j9~k^4 z^g~_rhw_)0_*jo$&wOB#C;b(xn=bGrCO+2hUuHfq_+#jY;7d$=toI*eK5(jh><>6g z?Yp4&4-CHA7VOJkV#*);3HmZ082pXa`eVTlq^&eC$`4&3s_+Uo*w` z^e-{-vA^L_<^zL&*2(_omzen25AiPZfx#bb)jx@ekNp!J)jAmI9~k^*tNaq{=ig`q zE@D3RUw|*a_n|5fc#x9+fhrsJXOu9;{){P%u|H!bVXX^FS*@!x#{P`^2&=YYhSqc_ zw3#vXXAmoDsG3i&^)!Vs-=Nf|G3GDw8DlObeyq+=EuV*pFe8jzsu|MJg z#+dJUhB4L;-(igTuzv#c{8ndGb}IkkF)Bh`S&T9NG=MSIQ-97F^K&(fG2g59YwGkc zfB0+0SPx#!81}_>#;{k^mNCtT{qrSb*i-3B;Z$DOXO}X@eB&s_nExEl80)dq7{fmJ z9plA3et(uR?3ewFu^;ANjIrP5Y*qKDJlHSMlQH(6^kt0wBtsZuf5*=mW4}l>W9;9U z&KUb??gD0e@gc_8Z}10THIGZz9>&-YaF8+Va(y%=LYVlZRa_v0C3 zzF`hytlunSjP;nO7-M~C7h`X|LbbD`PpqHhGsbvwIAe@YD+#;_m$#ke1juREx=gUW~Tc_w3w_pfA(@%I?UnarQa81~VfjA3srV~q97 z#~EWi@)gEdAAE-~*82`K#`@LSsx71PVm;?_##mqf8Dp#$S2D)>VT|>o`HUNG zGW_L?vA(i}G3HxehkTil|2t#MCmv&r`N>Xd97p=adQ&Da&j|&`ccHI zeGhciDXfxH|IF23;dvHbV&R7@{EUUSTliHA@3Qbd3m>rXCl)?p;V&)RN$r=F&)37k zKd^9tg|D#i5DVXI;h2SMEL?Bl85VA|@FEK@vG8&WueR`d3vae?vxQ%^@EaC>&%&!! z|FlNk52|~ux*t*ZI&~}exX^laZ&3GR>V87q8`Zr@-A}4}v$~&B_tWa$s_t#-R_=76 zCUrNfoBGA))cw4=x2yY)>V84pFRJ?`b?;EOo%cg3?Ca*gMRC4K88Sk~|BSsc$g`}( z^NUD~Ql1h1Kys`|B2Q6qdCTd`q+&eS%x|B+nh7%Aa@s#m`?p0r2PfmjWTdPpZ!5lx z^}L~i0!!dc5*QhGFcHzEd7-VhIGemRJ%&E-6Mt zcthF&wr8Y?uPpa@Kq62%M;b>+5x^diB1C&c3e2vOB1Ahd8qCg~2AG#%bRiuU{jsv{ zfT6?S(C8EQS1guSUTWII(I-jOOZ(L%gtE6%LU`O=$rnXmzu$W)Av%Fc&YZ$`jtTzI z665w397m3E{us-TF46m~Rq-GfIzdSKEs`sgZc5FUD!wN#Mk*Q7<;q=Jw-26_*M52- z(lwEaHSdb^HNG0fXAdD2t{m^lDI zhWKA1i}^Z24)eEI97x|A+(vzwQv`dF`oiJkFN@%R8=SIGvlkMaB)tHf0U(o&yZ*~i z?Ott)ttnsfhRDm@h|s7bC|_MAYkUuE zwRv7b5Yl6@5~{SSX-g7oH+l(TX4Ip;7j+6kD}5>Q^mOcN{}D@L?y)gCZbbP6n{Uc{ zqzTm%%gd&U!2?Qe3#v4t${{|f9+4T#2`wc_$={-R1!BHBK7-2Dx=>;tW|cyAXI7N1 zycpFaDWaB%tG{)rx|r&O)Cn10uM?DES#5Z%K61f&4gA!>cABl5Ok^qDnW2V__(#vMK$uK4Dl9Fvxw zDUmY@-Y3~=AE;@jKj1TIxM;}AYq#xMii)gL2r&BN4Fwtl)O;k}N@uDo36IvqI7{0a zNG^DAd*UHG_$Us2h@>NR-jz3!@OR-S9)$Y`p1PQ(-%lL%e>>xWuW2+T*d(&sAq6D0 zqIi@bl@;&PN)nB7tJS5ng?xg6Z(f(^ie=ZsWNU0DdW-nzOIH}yd+Q^m;6&{{1+`lz z8Qe^>O3W7|KWnbHzEAxGmPevBm7 z_W0~mp6#Pj$%zBgtx#yfG@OYdWhRLtR?u`HQCgYvGhK){gU#2&Q71wNu8FRS@}Z9l zXBgR0x}bI1yhxyN9P0?9SzTQz*@THXD<+6XkC%LYStp=tAdQ7eediyEf|EqDd2Zd1 zQ0Y>c2n?D^3z*6CnM>5JQThQ>ZmrELQq`k2UN-QQ%n9ZkF&U`nzPT=%Tt#_o43To|Y_983GBh-CoU#hOc z-i3v|^713S3&OFyyk6mgqWoB-S7EP$(!A3Af=GVh<-JNnOQvQl8v1ao%cT0d+F!SP z!-%03Gn!sZ|9$q6U6-%!e$CN2Udl;+tl2jA{f2Jqy3g9S|D7A^yEfk)er?V)q>emVNZg@4vmG*J+v0PCnz*x~7k-dv*>#zqj$@((E5~ z8My4=pDV9O8_@IkZR?-->Mzgld}3=T?cBV)Y5hKX`@@}igEy`_?}F+1bB~Sw=#GJp zFKgK}xAM$g?VEn{$4M>QBma(7eAMmy$i%MK4q4kLmRBF?IHM%5_~ZOF8E2Mvf2gHt zR>9qKfB4$`*-xJH!i=J&+nyQu;~uYEdi}f&C*Qeg%e#L*=bq1QnxD3A(1+1Cr`_Ig z-R7p8Yl>ffxJO#MwfFX(nH_q%Y1^LLuPQ(Cj|FvE;h&V2g&*D3rfTEAJ1(8MX;j~i ze{FpE&iV#8>{*(pHjH}$eZuolRopb!q0QJW*qO?7er{s`_mO zE5B*_C*mKyrS$NVU8dc0NzvMx``6sCJ#WNkle+GBY1YxZYsW6h`ZVXOOCHJ0JLT2x z2hKRUDQEZVI|g?C z8Z-LljLH{J+WYC_V{h2HaP83RZ$A6Y;q$tuy}Wqp@Ve2{yX-mrjh}wGdh)8HvAZVz z=Ro6x?F9o5cfR!V&sJ2l?Q-j}Q;x-=Ki#+G#;d!XTRJcAszduqR_qx#eoE!4mi@zW z=6vzkn7o^2y|v)xTl-#p^i0(d(8jV(^m!e7?|bxHZD(_r(}2@}(}2@}(}2@}(}2@} z(}2@}(}2@}(}2@}(}2@}(}2@}(}2@}(}2@}(}2@}(}2@}(}2@}(}2@}(}2@}(}2@} z(}2@}(}2@}(}2@}(}2@}(}2@}(}2@}(}2@}(}2@}(}2@}(}2@}(}2@}(}2@}(}2@} Y(}2@}(}2@}(}2@}(}2^!|Dgu{3n&>2K>z>% diff --git a/ThirdParty/ENet-CSharp/libenet.so b/ThirdParty/ENet-CSharp/libenet.so deleted file mode 100644 index 1617ec6404399d1e244511cf05e27c7c3ef8f110..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64024 zcmeFa3w%>m_Aj2ap$$+tDNwD55;bBgK3YX>1T>*(dm<^60kjTai)|y-LQ9)a-n67? zIUIv^MDab0j~PZCMMo*%s7-mKph5v3C?gafm{3$64ir%G|E_)ZY12|>=5v4dbN}~q zKOQ*Qd#%0C-fOSD_S$PdyClPr8Ku=~)F)bVhlZg1n-q+N2kbr0J#Z|VG)-^(UZxqs z;_5ns&hsT+qo7n*V^CnqqZfHo6u7%-&n@Kisjm9n1bjzy{qyei!0PBBx(xm|JCuN%J;@K)o!k6|>BE)A0}0yFUD z;3aY{#yb};J+~>2rWo!-yybYkc!@T8^6`!)PsB4X!hbdVBliFj|sdpX`Dym#QG z=Q6z0m{0jBg)ov*FIiI}Yzyjw5F(_utLkE8#BS{wv@v#k&~qB)kvdHQ~Jl@4a|y@d|j= z=PuR5-AuTH@h;FK37nsm4&+~3{NMMew4p$hciCiH+yi@-%k z_*HL;>VbPvgg=)1ZE&xPz^mTj@ca(%P>#4C?)BW?-H8EWCP!9s*V-)-HQe}aI07f* zoyGC@aF?7syw^m)SeayMK>H@FP&fNnSyBpD(ZCAnhtS{0?KPI+Q*bd*Mag~hJ# ztJ`fbLbP;C9h#?fIl7lLaaEhCH-Vt*HGMTvRFP2{OQYsWfA!5qL+Tif&M>g%kCx!A#)}H*@^}H&a!eiEWq1en{^Xxm zAK&o(7ndFS{?sdfefXNSN9G@L#QiYp@JkC8=>9d~_u)gwG=J{r{!8@f{s-S&`1Kx> zb?W`ACR~~Nz`{ZI#x#ZB{d3F<`T@?T0`Ke&hYw%1r7G^)LG}`P`p1`V{^rgHrLS)r zb*Sq4+yAovU-dgzWd8XJ?ST(>TsG&vBgyqS>DM0_^ZAJV&%Kf;Y@SjhWxiebZr!NS zZyo>Oz#saLy)19Rx#_b8i$<2E3%d>M%2>Tb@KXZG=-c?b@@?Oq;`jGkU za~nrD8%y?YzkS#r%fH)PRW|;i%is8=|2w~%Tsgfl_>pw-huw!qy|Mp;oP)7fw4D2K z@(nlqG4QAHy&Me_uY4!^+NTFTVEkA9`YE4&vv=zAS3OmFS@NM*_h)7PGT;8O@2-L^ zXZ3IGF8rcM`{=l^T6c;)h!%O1~NyfkT5 z(jWTY*XPp5+^?RR-m>U@Th;088TTytYwFtC+x4Yco}yUrdExO7239BKejD|#2fr`d zdtztBksD$L9;^G@_raRI2lcCqr;khP9e;#%|GbvEI^Xy1xor>B_KYVP>q!@o?Dm95 z^VAsec7HB|vgj%PKF|~2Ju={{FA)FX3(!yfMo;M%ULgK$7f64{1>*OYa^$oJI? zq;vKH_)QnUqgs08XVeAgId*|`CR_mj&*+}{c23_jKH&oS8ZLnMTp*pY3*Z|rK-HMyaEGc&vC}Leww3CDzIuFZsPcq6$+ko zI6b{sxsd+T3jCttXjbv`H9UPa-#xJkJt^Jt&0_rTr)hakNkEPNj82K)@{EF4>C`g0 z>ZhsiR<27pJsM8WDo)S!Je^iB+Esm6aD;gr7d2_<4IH8?!0c>ESJ81SfeUldRO=o|%4eJVXv97-pJ7l@Oq*~#nI zlEI>BJVwP$=IJypRN!|NM^nM`&F4l6ipic_&bOmaDX_}t!JH4PIUkTLd#s$FM|pX# z;`ooae6Frn5Su_BJ$G?=s9L1J?{IuPr?ZU9t*WaRt8&HZoUVMP(em;dZ&MItchK`7 zr>C(S|7qY!d|P{q5|5Lm>Cfq0%lWVJ;TfKOJ&%ay$)0C9A96S!RQ}w;@%i2Oa~p3j z^}JlEJe@^6ek+eZgyZczzJZrZZFd_uJ!^TpBm0n^8#q3P%fBjbKk;%M8$2_R{0?FdQ9O0tJce5Ufz1QlE5&Y z&ix$U$oZhQ_cu7csvAEO)%xOs-=C*b$oaOK%k6lM-=NleH#*

Ew@5BC2xx3zyHe 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 h<XoJPS%_%*r+$_a3`$(|HFSZ@{{RF+4K)A&