From d4e07b8c4d0b2a4576e1e1824bb695f26619c8f4 Mon Sep 17 00:00:00 2001 From: John Hurliman Date: Tue, 17 Mar 2009 00:17:07 +0000 Subject: [PATCH] * Few more tweaks to event queue server to improve performance and thread safety [Simian] * Made default assets for map water overlay and HyperGrid portals * Fixed asset store loading regression * Start synchronization after RegionHandshakeReply instead of CompleteAgentMovement (allows the sync function to be called for child agents as well) * Start informing clients of neighbor regions when AgentThrottle is received (prevents client crashes, and this will become necessary data in the future) * Minor fixes in map handling git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2488 52acb1d6-8a22-11de-b505-999d5b087335 --- OpenMetaverse.Http/EventQueueServer.cs | 13 +- OpenMetaverse/GridManager.cs | 2 +- .../GridImageUpload/frmGridImageUpload.cs | 2 + Programs/Simian/Agent.cs | 22 ++ Programs/Simian/Extensions/AssetManager.cs | 3 +- Programs/Simian/Extensions/SceneManager.cs | 206 ++++++------------ Programs/Simian/Interfaces/ISceneProvider.cs | 3 + .../SceneExtensions/ConnectionManagement.cs | 67 ++++++ Programs/Simian/SceneExtensions/LLMap.cs | 43 +++- ...d-3f1f56ad-7811-42e6-b3c1-98b79fc5c360.jp2 | Bin 0 -> 75773 bytes ...r-af588c7c-52b0-4d9e-a888-1fe9d6c35f45.jp2 | Bin 0 -> 225 bytes 11 files changed, 212 insertions(+), 149 deletions(-) create mode 100644 bin/SimianData/DefaultAssets/hypergrid-3f1f56ad-7811-42e6-b3c1-98b79fc5c360.jp2 create mode 100644 bin/SimianData/DefaultAssets/water-af588c7c-52b0-4d9e-a888-1fe9d6c35f45.jp2 diff --git a/OpenMetaverse.Http/EventQueueServer.cs b/OpenMetaverse.Http/EventQueueServer.cs index f21cf3a0..cc864c7b 100644 --- a/OpenMetaverse.Http/EventQueueServer.cs +++ b/OpenMetaverse.Http/EventQueueServer.cs @@ -70,8 +70,8 @@ namespace OpenMetaverse.Http HttpListener server; BlockingQueue eventQueue; int currentID; - bool running; - bool threadRunning; + volatile bool running; + volatile bool threadRunning; IHttpClientContext context; IHttpRequest request; IHttpResponse response; @@ -141,8 +141,11 @@ namespace OpenMetaverse.Http if (threadRunning) { Logger.Log.Info("[EventQueue] New connection opened to the event queue while a previous connection is open. Closing old connection"); - // Kill the previous handler thread before starting a new one - SendEvent(null); + + // If the old connection is still open, queue a signal to close it. Otherwise, just wait for the closed + // connection to be detected by the handler thread + if (context.Stream != null && context.Stream.CanWrite) + SendEvent(null); while (threadRunning && running) Thread.Sleep(50); @@ -188,7 +191,7 @@ namespace OpenMetaverse.Http EventQueueEvent eventQueueEvent = null; int totalMsPassed = 0; - while (running) + while (running && context.Stream != null && context.Stream.CanWrite) { if (eventQueue.Dequeue(BATCH_WAIT_INTERVAL, ref eventQueueEvent)) { diff --git a/OpenMetaverse/GridManager.cs b/OpenMetaverse/GridManager.cs index d5902874..02546c10 100644 --- a/OpenMetaverse/GridManager.cs +++ b/OpenMetaverse/GridManager.cs @@ -63,7 +63,7 @@ namespace OpenMetaverse MatureEvent = 3, /// Popular location Popular = 4, - /// Location belonging to the current agent + /// Locations of avatar groups in a region AgentLocations = 6, /// Land for sale LandForSale = 7, diff --git a/Programs/GridImageUpload/frmGridImageUpload.cs b/Programs/GridImageUpload/frmGridImageUpload.cs index 5aa82d48..da59ef8a 100644 --- a/Programs/GridImageUpload/frmGridImageUpload.cs +++ b/Programs/GridImageUpload/frmGridImageUpload.cs @@ -163,6 +163,8 @@ namespace GridImageUpload UploadData = OpenJPEG.EncodeFromImage(bitmap, chkLossless.Checked); Logger.Log("Finished encoding", Helpers.LogLevel.Info, Client); + + //System.IO.File.WriteAllBytes("out.jp2", UploadData); } } catch (Exception ex) diff --git a/Programs/Simian/Agent.cs b/Programs/Simian/Agent.cs index 44fe9e85..04644826 100644 --- a/Programs/Simian/Agent.cs +++ b/Programs/Simian/Agent.cs @@ -110,5 +110,27 @@ namespace Simian Avatar = avatar; Info = info; } + + public AvatarAppearancePacket BuildAppearancePacket() + { + AvatarAppearancePacket appearance = new AvatarAppearancePacket(); + appearance.ObjectData.TextureEntry = this.Avatar.Prim.Textures.GetBytes(); + appearance.Sender.ID = this.ID; + appearance.Sender.IsTrial = false; + + int count = this.Info.VisualParams != null ? this.Info.VisualParams.Length : 0; + + appearance.VisualParam = new AvatarAppearancePacket.VisualParamBlock[count]; + for (int i = 0; i < count; i++) + { + appearance.VisualParam[i] = new AvatarAppearancePacket.VisualParamBlock(); + appearance.VisualParam[i].ParamValue = this.Info.VisualParams[i]; + } + + if (count != 218) + Logger.Log("Built an odd appearance packet with VisualParams.Length=" + count, Helpers.LogLevel.Warning); + + return appearance; + } } } diff --git a/Programs/Simian/Extensions/AssetManager.cs b/Programs/Simian/Extensions/AssetManager.cs index 4a359057..ca63e1db 100644 --- a/Programs/Simian/Extensions/AssetManager.cs +++ b/Programs/Simian/Extensions/AssetManager.cs @@ -43,8 +43,9 @@ namespace Simian } } - LoadAssets(Simian.DATA_DIR); + LoadAssets(Simian.DEFAULT_ASSET_DIR); LoadAssets(UploadDir); + Logger.Log("Local asset store loaded with " + AssetStore.Count + " assets", Helpers.LogLevel.Info); return true; } diff --git a/Programs/Simian/Extensions/SceneManager.cs b/Programs/Simian/Extensions/SceneManager.cs index 95f417fe..4243f7c7 100644 --- a/Programs/Simian/Extensions/SceneManager.cs +++ b/Programs/Simian/Extensions/SceneManager.cs @@ -68,6 +68,7 @@ namespace Simian public ITaskInventoryProvider TaskInventory { get { return taskInventory; } } public IUDPProvider UDP { get { return udp; } } + public X509Certificate2 RegionCertificate { get { return regionCert; } } public uint RegionX { get { return regionX; } @@ -107,6 +108,7 @@ namespace Simian // Event queues for each avatar in the scene Dictionary eventQueues = new Dictionary(); int currentLocalID = 1; + X509Certificate2 regionCert; ulong regionHandle; UUID regionID = UUID.Random(); TerrainPatch[,] heightmap = new TerrainPatch[16, 16]; @@ -117,7 +119,7 @@ namespace Simian uint regionY; string regionName; Vector3 defaultPosition = new Vector3(128f, 128f, 30f); - Vector3 defaultLookAt = Vector3.UnitX; + Vector3 defaultLookAt = Vector3.UnitZ; /// Track the eight neighboring tiles around us RegionInfo[] neighbors = new RegionInfo[8]; /// List of callback URIs for pending client connections. When a new client connection @@ -135,6 +137,7 @@ namespace Simian this.regionName = regionInfo.Name; this.endpoint = regionInfo.IPAndPort; this.regionID = regionInfo.ID; + this.regionCert = regionCert; // Set the properties because this will automatically update the regionHandle RegionX = regionInfo.X; @@ -737,7 +740,7 @@ namespace Simian if (agent.Info.VisualParams != null) { // Send the appearance packet to all other clients - AvatarAppearancePacket appearance = BuildAppearancePacket(agent); + AvatarAppearancePacket appearance = agent.BuildAppearancePacket(); ForEachAgent( delegate(Agent recipient) { @@ -969,6 +972,66 @@ namespace Simian #endregion Capabilities Interfaces + public void InformClientOfNeighbors(Agent agent) + { + for (int i = 0; i < 8; i++) + { + if (!agent.NeighborConnections[i] && neighbors[i].Online) + { + Logger.Log("Sending enable_client for " + agent.FullName + " to neighbor " + neighbors[i].Name, Helpers.LogLevel.Info); + + // Create a callback for enable_client_complete + Uri callbackUri = server.Capabilities.CreateCapability(EnableClientCompleteCapHandler, false, null); + + OSDMap map = new OSDMap(); + map["agent_id"] = OSD.FromUUID(agent.ID); + map["session_id"] = OSD.FromUUID(agent.SessionID); + map["secure_session_id"] = OSD.FromUUID(agent.SecureSessionID); + map["circuit_code"] = OSD.FromInteger((int)agent.CircuitCode); + map["first_name"] = OSD.FromString(agent.Info.FirstName); + map["last_name"] = OSD.FromString(agent.Info.LastName); + map["callback_uri"] = OSD.FromUri(callbackUri); + + AutoResetEvent waitEvent = new AutoResetEvent(false); + + CapsClient request = new CapsClient(neighbors[i].EnableClientCap); + request.OnComplete += + delegate(CapsClient client, OSD result, Exception error) + { + OSDMap response = result as OSDMap; + if (response != null) + { + bool success = response["success"].AsBoolean(); + Logger.Log("enable_client response: " + success, Helpers.LogLevel.Info); + + if (success) + { + // Send the EnableSimulator capability to clients + OSDMap llsdSimInfo = new OSDMap(3); + + llsdSimInfo.Add("Handle", OSD.FromULong(neighbors[i].Handle)); + llsdSimInfo.Add("IP", OSD.FromBinary(neighbors[i].IPAndPort.Address.GetAddressBytes())); + llsdSimInfo.Add("Port", OSD.FromInteger(neighbors[i].IPAndPort.Port)); + + OSDArray arr = new OSDArray(1); + arr.Add(llsdSimInfo); + + OSDMap llsdBody = new OSDMap(1); + llsdBody.Add("SimulatorInfo", arr); + + SendEvent(agent, "EnableSimulator", llsdBody); + } + } + waitEvent.Set(); + }; + request.StartRequest(map); + + if (!waitEvent.WaitOne(30 * 1000, false)) + Logger.Log("enable_client request timed out", Helpers.LogLevel.Warning); + } + } + } + #region Callback Handlers public bool SeedCapabilityHandler(IHttpClientContext context, IHttpRequest request, IHttpResponse response, object state) @@ -1044,7 +1107,7 @@ namespace Simian info.AccessLevel = "M"; info.FirstName = firstName; info.Height = 1.9f; - info.HomeLookAt = Vector3.UnitX; + info.HomeLookAt = Vector3.UnitZ; info.HomePosition = new Vector3(128f, 128f, 25f); info.HomeRegionHandle = regionHandle; info.ID = agentID; @@ -1197,7 +1260,7 @@ namespace Simian AgentMovementCompletePacket complete = new AgentMovementCompletePacket(); complete.AgentData.AgentID = agent.ID; complete.AgentData.SessionID = agent.SessionID; - complete.Data.LookAt = Vector3.UnitX; // TODO: Properly implement LookAt someday + complete.Data.LookAt = Vector3.UnitZ; // TODO: Properly implement LookAt someday complete.Data.Position = agent.Avatar.Prim.Position; complete.Data.RegionHandle = regionHandle; complete.Data.Timestamp = Utils.DateTimeToUnixTime(DateTime.Now); @@ -1205,117 +1268,16 @@ namespace Simian udp.SendPacket(agent.ID, complete, PacketCategory.Transaction); - // Send updates and appearances for every avatar to this new avatar - SynchronizeStateTo(agent); - //HACK: Notify everyone when someone logs on to the simulator OnlineNotificationPacket online = new OnlineNotificationPacket(); online.AgentBlock = new OnlineNotificationPacket.AgentBlockBlock[1]; online.AgentBlock[0] = new OnlineNotificationPacket.AgentBlockBlock(); online.AgentBlock[0].AgentID = agent.ID; udp.BroadcastPacket(online, PacketCategory.State); - - // Initiate the connection process for this agent to neighboring regions - InformClientOfNeighbors(agent); } #endregion Callback Handlers - void InformClientOfNeighbors(Agent agent) - { - for (int i = 0; i < 8; i++) - { - if (!agent.NeighborConnections[i] && neighbors[i].Online) - { - Logger.Log("Sending enable_client for " + agent.FullName + " to neighbor " + neighbors[i].Name, Helpers.LogLevel.Info); - - // Create a callback for enable_client_complete - Uri callbackUri = server.Capabilities.CreateCapability(EnableClientCompleteCapHandler, false, null); - - OSDMap map = new OSDMap(); - map["agent_id"] = OSD.FromUUID(agent.ID); - map["session_id"] = OSD.FromUUID(agent.SessionID); - map["secure_session_id"] = OSD.FromUUID(agent.SecureSessionID); - map["circuit_code"] = OSD.FromInteger((int)agent.CircuitCode); - map["first_name"] = OSD.FromString(agent.Info.FirstName); - map["last_name"] = OSD.FromString(agent.Info.LastName); - map["callback_uri"] = OSD.FromUri(callbackUri); - - AutoResetEvent waitEvent = new AutoResetEvent(false); - - CapsClient request = new CapsClient(neighbors[i].EnableClientCap); - request.OnComplete += - delegate(CapsClient client, OSD result, Exception error) - { - OSDMap response = result as OSDMap; - if (response != null) - { - bool success = response["success"].AsBoolean(); - Logger.Log("enable_client response: " + success, Helpers.LogLevel.Info); - - if (success) - { - // Send the EnableSimulator capability to clients - OSDMap llsdSimInfo = new OSDMap(3); - - llsdSimInfo.Add("Handle", OSD.FromULong(neighbors[i].Handle)); - llsdSimInfo.Add("IP", OSD.FromBinary(neighbors[i].IPAndPort.Address.GetAddressBytes())); - llsdSimInfo.Add("Port", OSD.FromInteger(neighbors[i].IPAndPort.Port)); - - OSDArray arr = new OSDArray(1); - arr.Add(llsdSimInfo); - - OSDMap llsdBody = new OSDMap(1); - llsdBody.Add("SimulatorInfo", arr); - - SendEvent(agent, "EnableSimulator", llsdBody); - } - } - waitEvent.Set(); - }; - request.StartRequest(map); - - if (!waitEvent.WaitOne(30 * 1000, false)) - Logger.Log("enable_client request timed out", Helpers.LogLevel.Warning); - } - } - } - - // HACK: The reduction provider will deprecate this at some point - void SynchronizeStateTo(Agent agent) - { - // Send the parcel overlay - parcels.SendParcelOverlay(agent); - - // Send object updates for objects and avatars - sceneObjects.ForEach(delegate(SimulationObject obj) - { - ObjectUpdatePacket update = new ObjectUpdatePacket(); - update.RegionData.RegionHandle = regionHandle; - update.RegionData.TimeDilation = (ushort)(physics.TimeDilation * (float)UInt16.MaxValue); - update.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; - update.ObjectData[0] = SimulationObject.BuildUpdateBlock(obj.Prim, obj.Prim.Flags, obj.CRC); - - udp.SendPacket(agent.ID, update, PacketCategory.State); - }); - - // Send appearances for all avatars - ForEachAgent( - delegate(Agent otherAgent) - { - if (otherAgent != agent) - { - // Send appearances for this avatar - AvatarAppearancePacket appearance = BuildAppearancePacket(otherAgent); - udp.SendPacket(agent.ID, appearance, PacketCategory.State); - } - } - ); - - // Send terrain data - SendLayerData(agent); - } - void LoadTerrain(string mapFile) { byte[] rgbValues = new byte[256 * 256 * 3]; @@ -1384,18 +1346,6 @@ namespace Simian } } - void SendLayerData(Agent agent) - { - for (int y = 0; y < 16; y++) - { - for (int x = 0; x < 16; x++) - { - LayerDataPacket layer = TerrainCompressor.CreateLandPacket(heightmap[y, x].Height, x, y); - udp.SendPacket(agent.ID, layer, PacketCategory.Terrain); - } - } - } - void SendObjectPacket(SimulationObject obj, bool canUseCompressed, bool canUseImproved, PrimFlags creatorFlags, UpdateFlags updateFlags) { if (!canUseImproved && !canUseCompressed) @@ -1777,27 +1727,5 @@ namespace Simian #endregion ImprovedTerseObjectUpdate } } - - static AvatarAppearancePacket BuildAppearancePacket(Agent agent) - { - AvatarAppearancePacket appearance = new AvatarAppearancePacket(); - appearance.ObjectData.TextureEntry = agent.Avatar.Prim.Textures.GetBytes(); - appearance.Sender.ID = agent.ID; - appearance.Sender.IsTrial = false; - - int count = agent.Info.VisualParams != null ? agent.Info.VisualParams.Length : 0; - - appearance.VisualParam = new AvatarAppearancePacket.VisualParamBlock[count]; - for (int i = 0; i < count; i++) - { - appearance.VisualParam[i] = new AvatarAppearancePacket.VisualParamBlock(); - appearance.VisualParam[i].ParamValue = agent.Info.VisualParams[i]; - } - - if (count != 218) - Logger.Log("Built an odd appearance packet with VisualParams.Length=" + count, Helpers.LogLevel.Warning); - - return appearance; - } } } diff --git a/Programs/Simian/Interfaces/ISceneProvider.cs b/Programs/Simian/Interfaces/ISceneProvider.cs index ce46dbaf..535439f6 100644 --- a/Programs/Simian/Interfaces/ISceneProvider.cs +++ b/Programs/Simian/Interfaces/ISceneProvider.cs @@ -133,6 +133,7 @@ namespace Simian ITaskInventoryProvider TaskInventory { get; } IUDPProvider UDP { get; } + X509Certificate2 RegionCertificate { get; } uint RegionX { get; set; } uint RegionY { get; set; } ulong RegionHandle { get; } @@ -198,5 +199,7 @@ namespace Simian bool EnableClientCapHandler(IHttpClientContext context, IHttpRequest request, IHttpResponse response, object state); bool EnableClientCompleteCapHandler(IHttpClientContext context, IHttpRequest request, IHttpResponse response, object state); + + void InformClientOfNeighbors(Agent agent); } } diff --git a/Programs/Simian/SceneExtensions/ConnectionManagement.cs b/Programs/Simian/SceneExtensions/ConnectionManagement.cs index 5da484fc..476971db 100644 --- a/Programs/Simian/SceneExtensions/ConnectionManagement.cs +++ b/Programs/Simian/SceneExtensions/ConnectionManagement.cs @@ -20,6 +20,8 @@ namespace Simian scene.UDP.RegisterPacketCallback(PacketType.UseCircuitCode, UseCircuitCodeHandler); scene.UDP.RegisterPacketCallback(PacketType.StartPingCheck, StartPingCheckHandler); scene.UDP.RegisterPacketCallback(PacketType.LogoutRequest, LogoutRequestHandler); + scene.UDP.RegisterPacketCallback(PacketType.AgentThrottle, AgentThrottleHandler); + scene.UDP.RegisterPacketCallback(PacketType.RegionHandshakeReply, RegionHandshakeReplyHandler); return true; } @@ -83,5 +85,70 @@ namespace Simian scene.ObjectRemove(this, agent.ID); } + + void AgentThrottleHandler(Packet packet, Agent agent) + { + AgentThrottlePacket throttle = (AgentThrottlePacket)packet; + + // TODO: These need to be transmitted to neighbor sims before child agent connections can be established + //throttle.Throttle.Throttles + + // Initiate the connection process for this agent to neighboring regions + scene.InformClientOfNeighbors(agent); + } + + void RegionHandshakeReplyHandler(Packet packet, Agent agent) + { + // Send updates and appearances for every avatar to this new avatar + SynchronizeStateTo(agent); + } + + // HACK: The reduction provider will deprecate this at some point + void SynchronizeStateTo(Agent agent) + { + // Send the parcel overlay + scene.Parcels.SendParcelOverlay(agent); + + // Send object updates for objects and avatars + scene.ForEachObject(delegate(SimulationObject obj) + { + ObjectUpdatePacket update = new ObjectUpdatePacket(); + update.RegionData.RegionHandle = scene.RegionHandle; + update.RegionData.TimeDilation = (ushort)(scene.Physics.TimeDilation * (float)UInt16.MaxValue); + update.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; + update.ObjectData[0] = SimulationObject.BuildUpdateBlock(obj.Prim, obj.Prim.Flags, obj.CRC); + + scene.UDP.SendPacket(agent.ID, update, PacketCategory.State); + }); + + // Send appearances for all avatars + scene.ForEachAgent( + delegate(Agent otherAgent) + { + if (otherAgent != agent) + { + // Send appearances for this avatar + AvatarAppearancePacket appearance = otherAgent.BuildAppearancePacket(); + scene.UDP.SendPacket(agent.ID, appearance, PacketCategory.State); + } + } + ); + + // Send terrain data + SendLayerData(agent); + } + + void SendLayerData(Agent agent) + { + for (int y = 0; y < 16; y++) + { + for (int x = 0; x < 16; x++) + { + float[,] heightmap = scene.GetTerrainPatch((uint)x, (uint)y); + LayerDataPacket layer = TerrainCompressor.CreateLandPacket(heightmap, x, y); + scene.UDP.SendPacket(agent.ID, layer, PacketCategory.Terrain); + } + } + } } } diff --git a/Programs/Simian/SceneExtensions/LLMap.cs b/Programs/Simian/SceneExtensions/LLMap.cs index 50fe44ac..ce838209 100644 --- a/Programs/Simian/SceneExtensions/LLMap.cs +++ b/Programs/Simian/SceneExtensions/LLMap.cs @@ -21,6 +21,9 @@ namespace Simian public class LLMap : IExtension { + static readonly UUID WATER_TEXTURE = new UUID("af588c7c-52b0-4d9e-a888-1fe9d6c35f45"); + static readonly UUID HYPERGRID_MAP_TEXTURE = new UUID("3f1f56ad-7811-42e6-b3c1-98b79fc5c360"); + ISceneProvider scene; public LLMap() @@ -33,6 +36,7 @@ namespace Simian scene.UDP.RegisterPacketCallback(PacketType.MapLayerRequest, MapLayerRequestHandler); scene.UDP.RegisterPacketCallback(PacketType.MapBlockRequest, MapBlockRequestHandler); + scene.UDP.RegisterPacketCallback(PacketType.MapItemRequest, MapItemRequestHandler); scene.UDP.RegisterPacketCallback(PacketType.TeleportRequest, TeleportRequestHandler); scene.UDP.RegisterPacketCallback(PacketType.TeleportLocationRequest, TeleportLocationRequestHandler); return true; @@ -56,7 +60,7 @@ namespace Simian reply.LayerData[0].Left = 0; reply.LayerData[0].Top = UInt16.MaxValue; reply.LayerData[0].Right = UInt16.MaxValue; - reply.LayerData[0].ImageID = new UUID("89556747-24cb-43ed-920b-47caed15465f"); + reply.LayerData[0].ImageID = WATER_TEXTURE; scene.UDP.SendPacket(agent.ID, reply, PacketCategory.Transaction); } @@ -64,7 +68,10 @@ namespace Simian void MapBlockRequestHandler(Packet packet, Agent agent) { MapBlockRequestPacket request = (MapBlockRequestPacket)packet; - GridLayerType type = (GridLayerType)request.AgentData.Flags; + bool returnNonexistent = (request.AgentData.Flags == 0x10000); + GridLayerType type = (GridLayerType)(request.AgentData.Flags &~0x10000); + + // FIXME: Use returnNonexistent MapBlockReplyPacket reply = new MapBlockReplyPacket(); reply.AgentData.AgentID = agent.ID; @@ -85,7 +92,7 @@ namespace Simian reply.Data[1] = new MapBlockReplyPacket.DataBlock(); reply.Data[1].Access = (byte)SimAccess.Min; reply.Data[1].Agents = 0; - reply.Data[1].MapImageID = new UUID("89556747-24cb-43ed-920b-47caed15465f"); + reply.Data[1].MapImageID = HYPERGRID_MAP_TEXTURE; reply.Data[1].Name = Utils.StringToBytes("HyperGrid Portal to OSGrid"); reply.Data[1].RegionFlags = (uint)scene.RegionFlags; reply.Data[1].WaterHeight = (byte)scene.WaterHeight; @@ -95,6 +102,36 @@ namespace Simian scene.UDP.SendPacket(agent.ID, reply, PacketCategory.Transaction); } + void MapItemRequestHandler(Packet packet, Agent agent) + { + MapItemRequestPacket request = (MapItemRequestPacket)packet; + + GridLayerType layerType = (GridLayerType)request.AgentData.Flags; + GridItemType itemType = (GridItemType)request.RequestData.ItemType; + + uint regionX, regionY; + Utils.LongToUInts(request.RequestData.RegionHandle, out regionX, out regionY); + + RegionInfo regionInfo; + if (scene.Server.Grid.TryGetRegion(regionX, regionY, scene.RegionCertificate, out regionInfo)) + { + Logger.Log("MapItemRequest for " + itemType + " from layer " + layerType + " in " + regionInfo.Name, Helpers.LogLevel.Info); + + MapItemReplyPacket reply = new MapItemReplyPacket(); + reply.AgentData.AgentID = agent.ID; + reply.AgentData.Flags = request.AgentData.Flags; + reply.RequestData.ItemType = (uint)itemType; + reply.Data = new MapItemReplyPacket.DataBlock[0]; + + scene.UDP.SendPacket(agent.ID, reply, PacketCategory.Transaction); + } + else + { + Logger.Log("MapItemRequest for " + itemType + " from layer " + layerType + " in unknown region at " + regionX + "," + regionY, + Helpers.LogLevel.Warning); + } + } + void TeleportRequestHandler(Packet packet, Agent agent) { TeleportRequestPacket request = (TeleportRequestPacket)packet; diff --git a/bin/SimianData/DefaultAssets/hypergrid-3f1f56ad-7811-42e6-b3c1-98b79fc5c360.jp2 b/bin/SimianData/DefaultAssets/hypergrid-3f1f56ad-7811-42e6-b3c1-98b79fc5c360.jp2 new file mode 100644 index 0000000000000000000000000000000000000000..c44cc875ae0fa323f936e94db63d0130a853de81 GIT binary patch literal 75773 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

te{ifPHcd;H5WqRwk9Jz0iQs^u zy(6Uk_lYU*p#TF2aV+9l$Q<&vKE2KC61)myt==3T3tqLTC^AclQfKXdrbw_K`f@u0 zjZ=oR#bB*E#=qYrCntWD?Y2O9%ge)stiSD3m6iK}ZI%B;TJP^T(Wv9A_tt<#viXR) z5u)g&06tfpU7#{U{F*@ncD;|U4%LHTZhN6bUau-RYk0)pKi_x1{&X_gd7)lh}Kx14_XjtF62Sc?0H7?9qUhk7)8R}#c1Y8d%YuJ+x<1`;d7 z(wXL6{Ij=4@9ir?*zg{=xmey$hburQ2zsGXO6F#|rnvfO7CKlJi-9E`4un7V0cLMB z33|TF;Z2*Cg8r_`Gr%N;VorRH6!`L;-1C~HICl$;lLgV5wvwTX655A(9bQT<1+Hw- z{rpKdTF0VpDc>B$mN5A{}db%oP{|w3Vf$f@8*1> zOzpNqEWnl4sEVBjJZWd%2MgWd8;43Gn^H-0e2;(pB*=I`R3$QCtz*_05P4Nn?ZNrH zo)zUHK>OV4XNz-jAMK4y0Ed~7brZ_l@d5>S?w0zw_yUmZ7H5e17CVN4!q!jQXrNo>6hG;R z0Zk74Ph+<;U5bNZs6Bz=N=fjBu++4+y?bLtVFeMQabm<4LcRG6wD+tS~ zXN%$A%m?bVlh%ryG*gDkb{LqW?fcL>zH;Iq8Kq!2pfJ$QPipk5M@Gl|7K4g_*Gn8Qb5h4!ne9X33Sv1gtOnkYkVH9U4_)bdst19Jfbj!P z*>L-(_#oHx&&1209n`7fVSgEaHb>aZQmM1xlGQM}#34bCofp9^>KlPyef>)(P;xof zcf96a1)Siao9;RdBOJi4VaPwGj>8-v9E>TGZv)QvL(T9(e|WFG%*!J%)Qy|R&C`Qg z6zA(buj~RwutlTFCK&WJ5ASW5Q1}`Y-hmV;j%lzzdxDZ(&G(b|VpU3qJ#h`jTloXv6x+{Vikg8uIGr5ku}#4t{KASOhVrfs#FIQd!p!N4YU<#B0T~UvSn~&4e4)&5r_%;=#@WJ0leFpZN&qgsNShOP+2ts#N> zkfc+PQ-H~JkLpOR6GUSv{U6shtD=HNAbD6cIe^0ns78!49i-cp(8_z}iAqSG=6^gq z<(#t@q~Mgdp-GgFDRg6k;)AY%8~&`XV8*(<^Jq}8Rq0#}b_mcHu zX4h2}DWsfVXJzS^jMXDF$Lc;0ggC3O)H_r&Y7!_cwJk~hj@;i2f~gdCB@KV$(#sgi z;@NBQYAz)LpdS-Kg7Z`!wM?nA??RTK@ektvP{UJ(Srrw2SOU4!Al?GzHU&r%e+6cN z7q@sp9AHlC><_EF`P1*!1Su`jPtG1dDy{KiFn+PPz3Jt!Foh)z>(C8j>b-{n_l%ud zw@NBfdY_&TAswtK+VX<$J9#kXZ*F5DWYF@KG3UDO5CgjSps4KoNPGQ7_6@q%b(85{Cf_Q2|<7 ziDBv?5x~R;DuV))-nrT^B;gB9CE#e1;lK7_Dl=Dl<>-Rk0myz2B6!%dg-?tGvnpkw zWOqvGr9?iA-V&PFRCv+0wH-B}J}__I-%EtM7Z{Ljj6`(uZoKOAE z`xgjq!ej1h$P-H~>?9LHY`7-$w`x2OK;0bn*+i<8Tr98D^wTq33J=$98kNH|NyLPz z^}|_d-N7INF@#3@9vr;Pux_n;Bbew>wt_Jn6QbCG+Q9DOv%{&LQTuLTEoK|} z18RLj+)#qJJ_Cv5E3g>0@FFU0bd0j{muOVehiEE?DaATFo)tZUs?Z>$8@4JizO?wR z8ZR}9&M1!P6)HlR-@ml5;|>DPW+RBoL)oAz9X-TziVgNyK7`vtYi4yVK! z!`JYSRxx(QCo+ir>;cqmDwEi@)I)Iu>ogkvkPT~Vjbf>Op+oc)cJ!ynH`Z`@r>22A zxNv!(`235DS*aa&oGN&U;0-v1S8%>i`9y8)*dczw+abvTM|%HPi|q;ao~`J#W|#VG z?us8yFP99Fhi`?2G@Lwl&hG^bIOGuz}ut_;F=TelV%1;f})c(Q=v8YjV>xDpd#okp5yU-0fu*nSQBB;P3;l3 zaq`!_c&-aZ#>3Zbf7!7B86I%K$&K#>fpf!6wEUuyQMQKad98*GW#6YCW2YqBA7*P* zFBe$L6;2pQ@BY~gHxKNr1)i~8);}(@j6Rg6c{K?-KEh;Q%mxncZQ~0D5e3 z7rHlBQ=$>Aqv9_RS|uWs;t~HZ^s!d27t{JI6PbG_6lHc9jqF~3MRzLwc`j+Et8utw zJRMo|wb|{^b795DRH1tU;KzdzN|Yi1Q`%muVE=l6)oP)5$iQxjSAn!4)qL&AX-w-e z+X=$83#<0aJ-O(5v-by5jDF$()v>47c72Nd}z8BIt3L_y9!c8Dt3n{?S$Ao zSj)DcSga^f5Yc%4!^6%#E|H%mY0t{&$pujcM&lY0>blqOT|%LWX2+!Lq5#Q@2xPH@ z$D|vzgIkt!IFSO(`_XlanQiQ%DSaA!h%ww0WM(MArO9R*Yn}ngZ|_A54}DYrW+_8z zv=o3>v}+CGCjdZWaXY>y>h1OiR-tj zw&O{DQNaZEX+Svo)|dpnhT~8bnk~?p_-)3!Ea!3~gdz`;^hXUwu<>CFfhj7{GqXx` zMDZ;tBZR-?V&NvcBN`NGY550 zQg!e_w&!Fd^(n^Mjri2vUci)>dah)mCWS8*`4v1~v;M817>n(MC?)GInKeU)i>hPU zwE!ib)69?Y+>IPx#u1=B+;euiWYl@Hl-!4#{D^#fR;v0 z)NLB3)x+)f?uXm%4F}ch^zbTD3# zB^*0H6t_-Z@`0Y){5MSmmd5U@e=mOa@v{tGzyiW-`5_*vZ1KDRc5vCJQNIdIjeU)3 z+0>FWKp>~#JslK|xjM|$76=Dvh;&{gMWd3UG;~8;i&2~z|%yNRsy+0@(mEq*M9Eh0e;vz4%iE`*Km8F3ziwH zz@-#Zvq~wcTBl$BAPd&VQedO1KL@ho$nN@%UutP-si8;!LV7ZkU(XDHj;38*+SBVMr-YEONKQM z386H;I&I_98f8oqMgfnzu}ubHLfZVbdmDBOia#XI0JSKaDDPD^{B4aanoyob;?^*vgMmHjN~do8Be?l% zdgew-aM+T+ZV3>3_trlFUUv0S9B@6+pH{VPWuPfPH%q}ICwgwmKN?bHS*d5i|2Ic{ z5CYrQk8%s|>u+ir1I1iirHv&5ZX9G=XHMuad$ZswO{g%c4%Byf8ZDd>_+h2KH!$2< zTTzLZe;P2FW)^)!`G7^TMxPt1qlpCl{a3n%cbb2C8js)N)lYa!AH>3fJCKXp_OWv5n<(r_jnVFs*yo4C$)R;{DdX_ZZ#}bIWFh<%{ z=FNtsIMoZ!ue$(=d2TxW&BME?hBOJ48yINR(hystnZTh<T)3~hNOb(@mv7j>mvY3a;r|ZwmE^KPQF60x^xv2-?H|72Mh4mV&~ogT z$JBT_FQ?{%uUhZe+^Zp}0~`rdAnDhc!!+lOboq8KQQNrzYXO9s+1O;xFY8N)n$cIz z&EG$-Zg6*5VHO3&~iLoN{4=L|mqp8rvy{gKr%YENgLvRk@ ze;zTjcd}07-zD$>u`b5lnqN^V$(u2*b`m2+lew3K=a!3JAax&`kf2IoUQGO)I@%Q( zQcY#v71v&%S5s@K-#UH?y-Zdtxl~Kil&+H!YvOX^fx02Z8%PH}*gIG8y+E9#`5%62 z+Ht<=EayEV2$7uELFVf;jZS!>k?1V)Ws!IR9oxlQxTA*vjoeZGjB|x_=!Gv?uPio&Lw{UT#S(U4Zh7Mm(W-NhY5?jlG2YAP&yF7q&t&%O|QhY+mcVc(?`6%liIU%tBu#Y-b33jLD-h_fT!5{LO$MI z-a*Y4r^+Z;6-*UV@N48IPliJZn>A0kFC){~(Qi|scp!0h>IwkgBmnD3se!ZIUlTXI|tVx>gQf*o6 zn1iqa8glTLWS!6mk@pfb#nl-nr#x-EzoCYxhSe$hy@3%8L4jXBE=O8zZYyR+bgN@j z{Lq`v-uge$-o#*9V~cU@^3BMK9DFUpp&X&Bn#t-r%Wg7l$HnM}kh=d}+eY3w_c-3n zh_So-BoAY>@Dbbmv;rtK92|*^w}jYlj9O@zp#VIpDz#IKyX)mRA4Od1n0PGtO84B^lnrSG(Jzczsu_>HdzD-^V zzg>a>{dgvbN4e*or+MCeX*ZG%2~bSGiu`T)zGf$vm{c;b8-ZMI?zR-5l0wV@S1IVOz|2tYz$mxT46FYuO@>nydzC#`)nmJ}y8M#{~IX}`=>+p^^A8Bdr0)g-%bCoW60rt`&CPP)OyZ}yQs!MK^iNt3n;8-GBH%MZU& z=`cqo?pxc9C_!CPMR2IcY{32i_7Y}ZkuhjRg@jF9yt*qwI0eRy32UDEIoiGos? z`%l3n%qG-J%=kpRmHH>4hp!C}9gaTFRVD3~eC!lno=5h8epPmkfMKaBGnk^2#@asD zT}Ky;u<(^t+69Mwz6b_J9L>e7M$5{EWy5}B0{Z&*qr-GsKNjd|0d_ibkX+B%`d@O3 zQbE3>Lu*=q9f|YtEZ`pwrrw4qeu<+LK28pPmR}2p68Gl}tM)`#Rf0VkD=!ci)~FR~ zW*uR0Bh&jGfE`0=4%v?)=8v)ld3B`sC7u(?+KaU*71Ju{L;#bL zuw#@do{sUDx-v{``Z?>5D*IIW>yY|M<5NyG9qFAdHFIG^K;GMAo{-tSq|mjFBq5zx z2dVcy^&sPANn0i8Z2?UYORC<=8bNr4ECAu)R5}8`(hhVeY^3J0teZ+1cNiB-WU+ry zkp9ll-S^B^e8!J5Y%-0jdaQ%%>RM6v$pOcZPjTkNiE^Vu&NW@=k~_gG77RDCP;qbI z+Xfr=IhFva`=?IZxK6nnU;ghuIl?KyhCmD~_GGnZ%O^ zj(PZrsJGJ~uc5P9H~Y1nI3!-grR8f0&)B|#8}-TnUY#$G1jSe3f)G1sgaCMI6+{S`B2(Axp za{0x3B5NJ-a}Umvm91(#v(u*=iuy`ZRtST&-LU-rmY|6F#`-^eleH9KT3N*dbuZj^He9Q<497?SdW5WX7%V71^pR2BGM|oj z$B6Ej7WYe`gng-Y`hLK?G@_*h20D`dMmKjC64$~LZP)cYWvLObDPYlFy9XPI3Y`jo zC?-g;@OW;eOgF-|_Q$G?RNxiScQ76KeImoXiOG6-TA9*Lg;UhLfz>tXO`fu0BDJeH03R z%bNDyg<%AvCo5EIu63+Sr&mNV8yq2oj%wBvuxF7=-x>+%v~xc1eJ8H@umt(nn_Ys} z3ievWxx%>C<6_l#(Xq>us?_-VsHR8uVLr^MEYB(SQ8Vb^I#9;1%*0e*zYiL~r=%+d zcFdT9%L9Rp?q5M@Q7IT*%}JDmm-{sAPa#i2{H#BH20`ib8h6j4D_?BL$DmoMZ{s2ONm+ag;KsxoR5LvPpmkDl9p zTR%*674%uW*JcYSM9MaW4Gg`f)wyx|;oNBXTXO`Z9FXs2{lCV-pYF3tW%RgO*Y9(umU{l$u(Z@G^5XFC_Q#t9*#NbHT}Z zf8dva1!XkFc3M4+ALIg$UK+Ix2uwVpQ4}rL(iDKoqbP!*CJ*uMtN5-VthNAadh51% zKH)B%wtSR1znbMHqN;B=+@#2aU3hYpG}b{n>3}e8RRcCL+Ci9k3#WmM)B`;#raZ{`|zWX~Pqk~hzES=Rl2mQr23a#Cgt|R;mNEZBigDK;sIV4tQ!e3^hqt25i>b7dm7v%L zBET8<0Hy9x4Pc|$<(VUa(5Z0Vb`g<{hGN{lH>S3+Rv?I=+1WU7mAJpgQ0$VM- zJ*e+5z=xYzjoiI0W3?zjUUbHt{?G&QzPIX=XEC-@Ppqad1esrO6EAs{!Q=udlmnOp zFOG`_ftr^h`6g8Qr+6EzDMq3GlTo4yo0h-ORX90T1PIjYQjQc4AFclNJ4>3I zCrvZ-x~g43-Ku9mg+AzDFBivjMvI{00Z7q>5RI~OMQNl=%Ns0OFOQ_q#b4B>>DKRF z`66ognBb=(ZKqlKY=AaBx5P-@(2FV*S~2YoxdtHZkl8;^a8qAYu&Dvjy4TNyg#BO2 zo!l48a-%2{>3*nkVhU`7BN8{t`)uEyBz^9*{p!XNFPOjCF<~qevz;4;V$`exdXctP(R9F-hNk z%8^iAS(ao&!n??Z2t+jxcO{?Y2en?eXTrS(43>|Iuq`t*zC^jW^MX+s4-<_olJSC| z-|Ufz_c)!kiN&{EMe-hrXWePxmm4kW-z@rDgx3ym*ZURp38}Y4m~*VK2%rfHGcLdA zvRtYf7_Tv%WVU&8wuBWR>9;e*hmnK$7{qN%$o(w`BXgzo`d@c4=4}*;UAls-O68i6PqQYx z@8&p^3KKOYJh30=Cc0*LD*!%%q|C~+J)(jlThc_jI8=JX)Y&xmspQJ)B54>qJ4#$U z@OT0|lX>J!w<$+f{@k`@2W=qCuX!qxIOU+-`A2;BpUNHrUrHv+rfjNv;j8~F7ij8! z5}^W0uwWHMl8S`oO(Xrlk8-rtmEY%WPwxxWPTZeLVpL8tY&TUNrk7Q*>>7^yZR2=Y zQ74`%x*GhQ^UeeJ#z2pScf<2nPaxnUY*$ljlenob0el`CrjoummMfQ<4l#SaMDbgN zmZmppm7=dM;5#-J2zA$X&8G)TajG8m(d9wYLqUPTyB0!-j1)!1@!4oC%=91h%oAIr zff^bT_o$F^WP8SmOsP3)yuvj1V}okPg1HF8jH<4G@)yXudcD@Q{+OhPtSQB6O~_`9 z_oC(&bh{0$#E;>HPJ`O)pjbOARNCU9b;8RU!l)-GE@=U=6!K86h%xetI{zV9$eR!y zP87Prf;N2k&&?T&a!?-t@zF5x2;QH=?e~d?+wVaK)$LI0D3=ev62_V1m8Pg*82zLN zeGQOH6sjH)rO3Ty?cCdevmyvjJ_((ts+?`BS0Z9?{v>%h^2k1RE6aX{oZ{Nbimpiw?+&9csIuya?YbnFFcELF8HO^ z1g4PxI~Nn%Igys`UV5O=GQXh9WCfg__Y{=BEh(5jkqORua-w_Eur_Td2b}*Z+wT#a zp$q5nLjs+5Z7x}6@LkepE*T8k2H~zzR-VAxcb*I`Vu$=$S?*J4V{cGB9ta`3Zk^(` z!l%e1E@}a1X%SoMr^YG#WLhfhBP0)m;0c(iNY74qYlEF)eVbaWb+);Kp#K9jxg21w zDYC{?8=R>+QuPq6|5*NX@Oq2^jd13zB z**Mm$vQ0Jtn7N0Z;O2f)ga2;DLZZV_JT~?KE3wsW!tnNmS95q&#WK@g6PVbY3-wIG zpA|75MUGW!`|&r??Q$YFLmGV5`D#EOJ>EPvs_Xki0rVX^G6xdp^rxP5AZz?ci~KnW zV<7K2xu;Zm->I;Jepiv3T@zm7A)%B| zc3A4H8G*kyP|3k>881gkW4O!ST2e`^ey9ubpfR(!XAh9>&cGdHhQffHo@c=~l=Z%Q zVZ7GNl^+}0-dozpa&Ab#)lOs6I3!lqacJt(&8CP&%j^4$op=^RmeIv5)`HDlyr?4> z{sCKKa<+XzcT$Wt&G*17Ul<=!ZM`LlI2vj0xS zQpTEU`V>!0!=TO`4%WIs&}on22XXGV#;O+sBv>RjJqiKuB-nAV6w|`!YJ#m|#irc0 zE5f@jfEy&q110NXZ?MVE!J3mPDG0n6kcrZw)R<6C_9F>PW{qvX*Xc=}>u~23ib{{} zPo?y{D(W(C)-v^b!ROV0G3kmqD>5$tr*jir4GQs$o@Fyxd6z8WLU?*OCpdUBpk>vA z^OAfTaWMB;$)~fdru+$eS7th zX)O}AaCP5pT9srZ8EL-H9mhWRP2tJ1zSU@|{lY>P#RiZYsx zO=#3?|4R%w!HKsp-&EG72bQ$=}j-0gHK*yr1>U5)=D+o#Ag~U zy@XyO zwe1T%;e~Ap8j@GAc#l`!`!s21SOUXL6Ajs~*bMa4n%t2>bZcEU&L+06kVxhxBF_Wy ze{_8^fbroq-=!kDfVYR(^pJDc(C(*dzXrut8xy!gzWa-V=&1~>FpeFC&{Riqd1pb! zi7Y?l&O2tz-Y|28LRjiijCRJ$tDAFP!sr$npB&m$V>#!LSpKT!7l<3Ye+*sOvWZZF z!3gO=16S*c)@XR@AyyDD>GjK6_dc-GK(x{lMY?P^eFBb?>Pl3Uk^m>O(h)8!S%vJp zyFnd>G!^?{F}w6;_X>7#BMpmuda%(Ho0>2xHW+$pU24^d$zVl5*`4&5%W4x#XO-sP zl&*CfiR>$v^V;I?741wV9ylWR1M<8}3PC#r-K~J2G=8(|Yz&vsCI2T;^-}*Lnsrpv zJ#?PBo>VCX?gtQX8nK@mI*g4nR9jJ&!r(PFTbekoi-_9W{68+kc`*6j`F0eOB&^Tr zvDAx4(~zngkc|8i3FPv!gmRg{xfG_qN+h1GP%dCTfmMHo`WaBJ>pRGU^oo$U{n3Xh zq(ZIPX5uwj{n5Jy@-MSwP6)tPFd364@(7ftMKS8Fh)79jO^{Lt({JdTmhM%|qSJh8 zqxbX}y0|7<-iNez}eGu!T89A!Svf{yY?l{1L?M6cK`S zm->0d@cfAt{#&dOn`_08fZm4VRTB|VQ-L3Y2=@qrpSQndK=!u`>WTj>3e_m_3l%mL z{1v*0WY#y=u8gkjDAkR*px7B@s$~HtF#|hNvbCW(8J8vx z=?LEA;#>sjhGw7>?!*)dA9lm1LUWTl@xT;7NQQm~{}6pB=L1uoVV__-cEpDtb=}-; zE|rd)Oj_V{N3YQF~w*zvd~cRMBrXxGJ$sxJ_*xP z#|1Dn&aE#aI)njVvGZ7U?~`!X;=yF!nEovS7g(})r~^B6wyC`kwhZW2aWui4HoVs`%J^L zlC}+P#si<9i194cnoY3BG~vLpD0d5ArpjL)=n}z?;#Baq;?Dl<9NLK;q;pxAgl3r%j2tMZ`Sc`1UOW5y zT>=lerR-ycpVT(N$-Bm}251gb>qs4A{&~p6{*f<@sK8PirD%nA_bfWW2w1f3$O~tQM%j;#J66(~2$gi$qBdPfj76TZDpSFSb z)rk~17DIggA&6`^MsV313hXpN?})HUgoIwt9Q5`K+d$&K`u`W$4Ef8sz}};C8s4Jj zm=+edU1Jl>v@b)g`rO{l?x*-wiE(@#XhJB*oR4+~ILLl%ZR0_g&~?Z?o|Xb+OLoD3 zanZ%;TLkpuE)PtE-BaF}4Ff5Vp8D(-HG)0vDl@CPF#NZ{DItj9J<`igvxf5Hp}-Yr#s0!>+TgEf33#f zzOzQdh=}@ohwR7HFGY|*+X8T9&czlzMto|C(>2gM!?QQRIDv`;-k_MQ7iVTX-E$JS zxk-j3;^+GFsC|3@+j9PKO+D}GYv4C?+=v~YDp+-_AKAiC%szs>jS!0S*viJu!Op~3oA z5i+NsF#Wt2i(iUp^#x$*U`GX`T=MU*S@3WFK8@oLg~?n6c-N0Dm7G%&RJ_oPe|P8F zzSPoWg&!BZM;$I%f}-83<<8bLz*Jc<+7?@0K{_E>(PBag)LNEPT(`KOXxDgwmm-6G z)O3|LLQeaXKnz(YAs9_NFgz#Ku$1J%SS+bM;kGH8VUL$?S)6;SrEPrf`KU09U~~FY zfN}{u3WzIpQhHt)Hd(9pndPj=Dg`hR>1Ua4lfEE~1=~RJ&KRX9N-hr~MT?e}iph-B z!FhTcI`Ev7H*_nZqf%Ahko!)i%cBKnNM(tDoFN`gTs^yppG~yHiEFlOI)U#07|X5a;l1K)5-Og5ux1aTks7 zwvOvAaMUpWhcBanpCiLU@fIZR(c*}V(&OjWg*gGL`CbflG{Rgi8hAHB9`b~C$01HXak7fp6iL>ByS;fgVYZD+37#Aduev|dsK4OB4!wCup@=3UoW+N z25_fR*$M#EZN`F#0QL+^+?IB3S7iE5wD*r`D!x$2IHt#W|D}=}i1I;Ulo+c)H^#Sb9Mv~kPW^`LJq>(^u97}>4 zcZ`d1LZ4JSvb9uh3I7zYPKot^B}Z%!RC&@0y)oIuunvS};2++=IW3j_acID^J>eJD zM!0z8w+|=7bSO{U^o16X;2JRhbCl(J0)JoT&(2iDy@rZ^99KPE;TyI+%kAv=wmT+C zz9lhF1wj*UicUEMQSa$v;0~nU%K)V#rNZs^+?W^>F1zv6ckJAzmrpm)uL;*c?Fs~C z(V{UHto{FlM0}318CSWFv3B@dHC)9u*_eu7AczVPSBJ*94nhrVRe@Z&)VSxt8vR!R z`JTEW1igSJUW^7t$cKqPy)T)*ceZ`110R*otwtZ0r*2M7fj`gJ`)zuBa<$!O&9TC6 zxN_16Qz5-Ud;Grm(1AlRfo0z+O-PAlll6wP8y6!VredYO=y}vfNe?s?|2?Fl)kK_? zux!q??_Gt%p(IAcHJ!Acq?!0^MCiEe@-7abY?yej%-W4tALzs6)krw10jV?h&yKie zKS)C-nCI_|H$oW;36Pbg7;@BE;R-a!id|{%{WT|kz(LFtcR`@jpTp|J-+J04#CFU`<4=LTuOqeP{K**)uvAi;riyZ1S2DVbLZXSEV$1u?^M89{LD0~<+_27 zo(9t|jAPu96#K_Y;h(O>;Waui@qO78_cDg%o=kwj2q zCfY+?&16n4kw#IBX5{OU%;3k`+8$<{6jt0q_X&=oS1zn%Wv*zC81Nn)E^FM>@2plS zB6VpllQLoOWf8<--Az(4f#kcweA|-wMI<0E#UX2iGB-$qnw$$}%t2pi#Jvpdy{twy zZF)4Ep;+*7_71l%bvQt{xBL7-&wt;5n1X9y8vxHUrQu<4y zNj4eC%-ht|Ykz`ON_133h7An}nE8-&X)!V0X0OL^3;;Gh}1h0S#Vad2M7Ewo{hll+Goia=Bi*)B4H0fRA1NbN(D9zcm7yt{MuV)$g2fb zaOor*eL1Sm(OtiyqDu6XgngwHDgIK8p%f$r;pQyDH)c5v>k;U%=p6Z2qIq>c=`*Uq zIlL5T>MU9wYb+x-X6PWhFfenVM?YCm%E8c**z-%t?Id15&yb^xNPLkf%{PYij~Hv{ z6Vk`9YlqiGJVvCN)(1WNsp#>doH6wd!3ynl>t%S$NTDOo-A`KOjY9#TAbx|T+VpQ( z6oUl`p?#?`>y3x=q*RZwl^q0Q$>tqFs&0Y-*a}#vQY5<@AM?Q&t2Eg1{5Cg3Hd*4l zFfJ2Ru@AJe7S>3mwzZeF0|mIIkigGT!TIQqkD8ilq@U*)6-V7)GY|mrp(5=n2ckbM z!xmqbfQ|1zwLn6PtPnL$OF|bP?lFzhRuiNPieT>)(j(3zdq_(O>JU{-Rn-*F*Q1QA z=8mB0*Y>ZL!MpX{MIu;U*%c7-13wBh*AxiKwLm1f<{sAOIU?!){km%?stxI?gCYX2 z^nwOilkC@J`-=g&Es_fnzN6F)Z*QIbFh6%(qHqTUNYGYt0i$Rq-5=z<^USK1TX8jz z2xvczKr61I=#wQ3?$r8K2QarZ`nb9g;)_kUvLxQUKb0Noo*_$Juwssb`eIJxmVJbb z^+R2|T3Iza7vE~6+fQYQ418$p82Do8{xh?&1m=})7mCU?$uipZmh72Dps(pgkavaV ze;xhLCUim$eL#00KZF28K4pw%^HNh+AjDj}(KHE+oEEE-B~j$|>A9!tt-D)u$XZZQ zY#n)q2jbJ)*&y1X_ND^8aBkPo4W;E3=R=SLTx2r6Zl4o{zXfePPsrX;ySih>V@VND zT~mp}xH;63O8YJ&NcwmLT!N{`W)M@+34|=invV_6sC(V?A=7C5HGM0XYKSwm`y&Z` zc`J`=18zZo2a2D0flhSK2{ljG>9K2e2E}+AF@EG2I##Lg{nn~{A==dr0V?2)3zs3o zkein;f_Sv(VVz_imH94%c@v$%lmH&zT=C&tI*M``g+ZmzeG|&Tpp***E>xrw2QMO~ zuKQTq$!_Fy?wr|f*)AAyWAJ0mDHfvb50V-nQLe?zESUm=bL>y7=Z}y_7#!hcyQ*Zy zWy>k}aYDmr%orfts8?FnhbQ~AEP}E)SU5|eqSRwi1n3XK24967yI%ePtoR8qagTlW zaSw``L}=K^s;G2rGm{I8-s)TYNn^lan{J+#ZhJf$oA) z)oZhbn666JGF2*xQR^Xm*vp$=QS*4H?hrJmKKngFctjRynlg@aV(`UGGu=ReQ{Rtv zG+}p_Tdrl9V;fwpf@3)O=&o0Zisw6pnkL_V{AW8N@GsS2%> zMzrQ6NnlNJE}Wcy%(uGFH9}&xwSPoNU_!dWFwq|5Z+W$m)14HfHBoI}Y!~#BC^2Q| zKt!6gtl%;41B|3jSy)@E*nzpW@&~+Whw!hk@8C^8n;0-XyR3!+23agc3fP-yVj4}% z@U7~+W%VGI*v`F_o>@R8trml@I!`eP%>ygFF}>na+&=u|G`kUTkX-g7>!qgXE* zLjo2zR7?4jTNtRrh9q#UQ#?eZ(n=qXj|_8he85dSl2K1X^J5mL0{XK7K*QK5bL-{I zz(AqZ$C-PXoQu@0myTzX8V?h_3?SPh{usp_sBq9adG}`mkR%`$q(ty~dH9)kA{+H! z9%0pSIgNn>VcFLy6m4pV!Wqu@{&{kVN4b(!Nn*? zNG`p!(#ZsgGhqH~&ukTo3!+U9 zU}5H^g*j;-i-AtAjgUK(f5z{CLmQIQy^FSrqY4Lj8a3Bx0V?(c6z^rN64+Phb*&)f z=cwU8$`E(@50eJA2IjG|s0Wgcw*^R?Vin=wEW;^~I=9gis+e50bs+BA z1*9F~%69h=_7mGWpePrH6o152FgS zZ)@w|MH5;^z-8Ll;&8lS{`v7H+FrIGaL6fpA`UApHNL!1@fxvefpgRzos79HNSc$i z3+S7-Ygd7++p*@n;ch6yp@#gl@hBrwjx<$(^YG7}29nZ~HoNeWHNt2w#_>1dwFQ!K zZ;r`fUK4WCO%g~-Pi_buL|-nOi@+D)#vIOfUE3*rV3V4*?*V4))Ty`x{iZw+ovjYQP zVGU^W%;v23ltulwP9A>zg;vp^C{9K4N)2!E;7XQj+EU)sk-Q>KM!(S+Z8DhdlL6zE zQecVn?80^>C4GNaheHU!qs)hwtJf|3v3cjAwh8|fQ#s&EPyD70lg`V#t4u9%|AePt zD=sGXMqiulLyqhOyht^m)#dX0>L!czha7rYF?4b(3U>U|DnvUpmQIaF4P?(7dH;Nb zY<>hBcIgr2se$%JC43NbZQM@GbQ(cxuVOJJBYm>|2h#t3ry-8~d>ioKvP-(rExjgb z93|1n>NusLgG2?%J(D2(cv#dyWjEL3=a+~$WFk;4%D`Q7R3jJO-XzusJ{K;~9#7{^ z{5GlqB7=2@595$}p$ekN$Y{GuylAEsR?bXbTzDH%#vzufhmu9^dibRrN289|NHdOO zQj3%0{rXE1(uhMbDHoTb$-J)S^5HWvzkwriA|czg`FA+u=9lTY{R)?pW*P3t=Z@mM zC(y(|R#KL^46q6rf?T;B8_LB1L^E1G1~l&J2y`VD&fP-syt#6bz%!{>>rMk%VL_Wi z{^9RSwN`hNrmk-@BqLi6VgFo8RL2xlDNP_o%RybmTLxvxYytc?*?km_qlT&eh@jo2 zdZ?sR^wb;?_zI|k55@$$+Xma=Q3ywEr4Yr?Yl!3~N1mcz=LqTJl{ zd^qn--sTO`it)(`@P`ndie2aX)bGi~Zhqgal1P6YJ9aZbrozx20AaCP>qxQ%$u>?t zSrxw6>n-=QGy)bB1p3RTv%NB(QlAx?jlZhrZ&`+6gCYQVjW5sRvVb?zHsWEsw=d`^ z%bMKft9J`|oWeESGc#oWRTh$1aq#5;OciHqKH@`x-22h*Lvx%6!MrL6khC(olceOe z!%&0+UfP*IYfY4AV4p0}J!f;RodFg$1w2+7AZNvBSQC2R=$NtU-9u}0vsZr?5_j@4 z%bY97NAC$KN1%i(jn$W*AcUeUhAHM6U{I`-wpLXoRuAboRcMZVCo>y;gjJzaSGRw` zZ0M^HdxeJ5lwdBbxcCUu`7P6**k-P}>>X_aP~4Mgj-7a~;gutBLYE&^=Gdl+-g@J% z)y7K}gQpg~Wc7I&89mMq@MI%-vRHihFPGjw5KP-*nH<9^5QBJ~tLdy9g`8VT-;206 z3P1B&NzGx->2)8OHw50EM6c9adLBt=6+9&#DwxTH((hQ*F=C#vN<3; zGk%P^>e?%PK#~yo8mO3*$r`Df%~4a5!OrS-6tjv2faWP{+Vz57og^o5cWT2id5%J_nxB z&sl(99#5wkIAfFIA6X8G@e90rTS+>a1HU^?R%of*a-65d-b~U#edaDQ((v<^8N$c$ zly7ouISY|-9)FG(V-IH3b1GU6j`LYJ^NsKuU_#Dy4k0|yX~ zNND0kuI58G{E3mdXdfJyiBO5WmFIz(K&XVFbbkFvUTFewF{>`Zl)Am1g)PLZRXber zkxH^r9Hh}L*JxecVgwI@+O3QzE?}2N>m!M?bSza_P}P^vrsZq$Hvbo~4?;EuEiom$ zt8|M-0#9CtR9x9A7j6zaf{I2NKmSwgqgzc$Sz)PX=3NPUU=Hu*q%WRxIBi-RP9&W< z2FmYbce-6dCwuz=W=K62TX`%+7_B6F*5We&skmw*R%@&*TDH)Ro4|5O%ZB4$K-m4? zQoE-DqpS%y7hYwIb``u|`B5)V*<`tlXsOoif+xn=on6ab ziy_tS8pA0j0w~#54G=qpc|2zaUK;vSc;saSiW;llW21pxR?z+bMZI+Bv6r6}nU(S- z487UXVax?-sw@+kbWdC_>1tgD)nO(|H@fv^DE}fm6;)1r+m_HBs{;oC9^Bi86h=%Kbs*`!bF5ChK>7+VC>skL7Lk%*TuuYwo$;oa%GMfC$fwEhGKH4C8`C95t=ebk_E%+B+!zI3mpg$#}PsoJ}e{ z&&?3rve}SLjX@erUS8$C28+a3xRiN~9W}_|4EWS`PdrV7lq0=JANM@;w}AtS76tyR zj*-1fb2J&Rxq61c7$F&CAz@)!eutFgQt~BmACcq$n5hLJ&@f zD)w&^vkg}m2&|xK6o;bz@IWA;qX0Z+ok5m0;nPq2Wq7ZraC!CW+fryaZ?g;_7QG#k zTs;Rv`uri2nU9_AdjK9YN&UNh!nSGto@>{CSJJ1=hV$p`;-klO-yD$Je($d12EKD@ zm^i7j8aa-QSaYlD;FI*#0zuRLAfY+S}^)u&v8O9zfFXKB$=*$-u`YUyH)04qS$zuJJ5sic1C z#U1)zo^zdMD$?yUv&az*>e!g)lTDVp)|*N-G2Ef=+K<6nTBSsenC>HSyWqMHuWeoD zHSJU*i6X!{Kk|UWKg;b{;_2cT{y^S=wm4Q#=ycw4iBw31@`9>BZ7gro45Ef4c%ZU} z#C`U69jR@0s^@o$dKA><0f|=;cJ>d_#pil|5c<^XpqM8=AV+Y6TsYr+zQVJi;*vC7 zb#fVB6k6E?V#1ftQnhH|%_uKJT;-RJ^Qm<0mq$>CqbApP<2q)YHgs*QF*zr;G*r+A zB4ufbJV{u@o-LXHObF@uoMh36NRCnu2CQ7>5AybbOEPF17p-_55sMm8?O+hrRX~t8%S8>VS>RG~{}H}KH7}r| zG8w0-k~ibs&cxju(P5l~Pws$6qBseiR4bu>TEUVBC7ZH~4BCQggTIU)@Rd45F7<3v z-XeN%CQa!1goz->|6HfYN0$Zy45m@5OEeTv+F!KKCk%p%7~35&Xdpej7rP(4#)yIF z^Mi40|3h$&dHx~~{dM1GtX*0lv3+*WUpdo4LcKHDtIxC5rabi)5d6;Z?KiC~8Q?l} z^Vv#81R0zyO8qkUQk|iJ=l;HR1jB{u8LPC$yAxbeqZVGp zG@+lDY4HtN_ZmdgveP^VRu*k)?}Xo9Siboh?gp0exC){A9!kuy%z%eDJ0B;f4j{T> zCDZN|WMAEF$H+OxvJ9(i07_^(*40aq6VCro<2#M2C^HGj?rW3^}9qzNZZ z^?HSls+SXFGWtm6c4hwVM@iv$`~L~5lUNKQP?u~RusE=4@2msQYV`aGK_`ll`;G+b z*DMJ&JNL$0H_SfXtkmEmZG$PgEnbT%?k358^dv?K+Nj$sQVv)Nhj+}xU+S0LB9db%=_wL( z(`|JV3a9gWPeTXT@XAr*kF#W(OEwe=5B#%969eDJKr+EwUT%FwllidI92NI1oD%AU zbxpB~2HS57(aoXe++V|=P?bUqN$hO(4pw5Y=ZSzgk7rJMcE86;rXg%8sIR>0 zuVX9p74*#%PDC;ClTN;`&dAkAZfmIa0Cg6Hw&ad=I!yCyy8gky+uK86ewWdrEJ2EI zJ>~y&$78l=G@^v7oXE3h%Yg0-@p%>#*yr4HoJe=o(qZAmv~yVa;9UpD;_0=<#mD~( zsn68V^d-miQ~E>LrtONv#eT`G$r(c)-@xU*=v(qPem=d7IBYNV=fhzvTGj0{tT&CD zgQ8`W&Jf$efN0i@Gi4_c(`(_dGAz-xMA6hnm?a=56lBUfiuO(Ty0qoNrhRRzoX0`W z!Ybceqz2wWLCu1uI;R(YMBVg1l^=oFDxFSND5nd4mZbO*@y2aJJp`o)Gx_y;j0FH- z<_DsaaO>k1lbV<0L8pF}(P;_R6S#EN zJh1SLLCCJgBZ$pJHA@2pht{@JeT&kS$)p}vp#K;PGPbmrlTAkMMfa?nwq>>-IIF7~ zw;}#Dr}&`ulbM-(<0-e zk8b{xZm&fL#V@2;&asEy@PO^_{1CMRRTJAw=lp^Ze4S1}u66mxju{MHEWj(K08h?A zZ4iQ~x34dKYGB!F7Qwp{x!Fh^MRtx6A`{o7XrPYi3GrpppQ?YJ$(x9d65-k!j}!1= zOn9(0=F)I2khHW@m%+0mv6-c?0?nEy!oW+p4jFu*choa0#iPwVDRtz5qhTZU?TE9U zwawaq5N<{YOOcbkJo0n2Cif^WXE5hVa!3rW3X(xNY2<tebx$wGtnRagpuLnJCUD?_m}r`mmQkQCwhlXudh;m(P$0U&1m?gv7tD{%@A+t z9$HErnk%9!eIKeg>J$Khnke7LuNr9r;Ee63QDJNSEt2thhLB!#$#RP8{+_ymhGVrw zEh!HbP}0Q__{ISQTup{-=J}cO`P66lC*KNjkBX^N#XJ;Rw8!`XMfG%XC?;J*8#BVE zwZ$6iIDMM`T!gJ{e1oU#RG3XQ+bp+yf|kDam~Ixx6CCq$l%Y7a@2NRcg-gYSd!}{E zXzPM?jEDps|Aq0)r#7x*O3FG|^HuYqCd-4E*kP!gIIlFN``VFRx;kw(D!`Qg2)ai? zIi0>_kngwB&2bZrG7jADf@p5)Q80*oVvId_&p^{h;T)`ESAbkWXgk_Fzk$A}0E_N# zYOmv9C?W`0-Vqx(iOUzr^^>9hXwQr5L72bjI);~j0uT7$Dlk4_f)wT)m4HHRQJXPw z$B~9eyP;m^Ht9E$KC;@m;zFAR%Gy~$E%g6P!fi*8Evn<3RXdKd$CqZE!tiaPw*+i^ zeb;ZsHb;TzgXM3?-kU2re>X{c&YGoBVMKyP%fE1RP3{V#2 z%4=HJeddR4;BWB+#@?BJa;-~PfxUQt#P7+AcBQhA=eEy=SWsIX;|sE3;{OC3@i{Qp z%Dv5K1kVFCfOKc~NwgS*6Pm&y`YW@HMLTk3x4%5)rNzniwiA}W+Wy6J`;Q&G!EKaI zARR+t0d=6i<20+kSSJ}b)OJpR_<(SbO`YG(Id$ca6)$Ccy<|`V=_lSo9nvS{oT_8D z0rU3WX4$)E$p@$eaK?14%MAwDZ9EHn=SkU7c~GoKDvD5B1%n18)3#5|^I9sY^yBx< zt4ym1{o}yXyzjGV?R}BAF^uL`cKp9usoala>&*DNC9K3+lxP%gHx1` zoislJpu-rF+-1xR{_=tN!*S zVAHrFSk>cL1Ud8crrLO(>{73swbMwp40>1O*zKCv>A?|t{)!G*QpDr(0l2*A)J8M2 z2-UUr{!9`BqcfseJQzX<`28UT&jQ@2t3pPm*7TFsS_t8$Qlc*_=(uk)|5KZ+J#yfl zsG}iGl#f%bgb#EK_Oh=z9fF!lsxrG&1oqut7v@6#?W5wBwScV)`WS06Y!%n<0q+{X z=GwIGV2ro6pFR1GWTnO}8MyC3g@|2u@U-?1bH9W#JdxIDRpUK&@978se zwsJu!wr;(+MU`{lvP-2?#d+Ua6j8gcMD;~Sa+;!K!`56(T9s`6Bl2zziNEw zZ$wK#%H5Vh5GLid-WWrOuWIFf1ss{Y0n~1-Al~Rr`EZzcCfH4wk#EB=3v!aDyUomR zKdiF?oZf<4=&6h7L283|j8PfM+XX=1>$SP4aR`Qf-P`Ck&zrHpGVIWlth( zto+u}PxP_)QffRmHZEg8?GrKVNR{d8&vECFUZZzgF2g;*6^)V&gc9Cf^XJ223x@*^ z8BJVgLOx%wn_;aN&!5=A%!h&n6&XCYMx&x0NpOy)(KOSPMdy>mo2O}8)<1y#(B@qY zu=JmGoYj*)7YdSpAo;!{x;geYz40g<ctFxzYyPTe0m&YD#ZYJie=flaX`) zb4~D6VjJ4AsfK!!8Fd4(A|+i!;H=oqucS@OR{P68zV#Zg_)HotxpY=f1%nVuHbDl1|4mH7HmVW5No1-%N50LJ=@oqy0jDA$d;BH5?#x^~r}@-%k-O zy07_q@hIc4LWUJVwluuFc(m1UU4I(2XfBcP`JUq}FMxBJ-yYOUJR&tn z_qf62$L|uhJ5R;L-I?~{`tbt~H^`Q*9i$epv!(+ft8tm13ZBlnHHq>S8im^Pl=bt)B78lzlf*VOG&e=r_V6Ed_ zZJ$D1d61KvGX@O{x)tJ-tBjGFS6IBFDBL=z+E4z|9CYZaO-;MtA|ck!t35S~slS+$ zS}-;1(Fr5i!jbRRAPYe->`zEO4mnBI1?PstCb&kY;*lhGsi$4~5Hk22lk(c|J_B@d z2}x`f`*C>ck_lP$BYhx zM#UJ4flSCRFYqfQVMy*IP)HR+iV$%u;MSLz^_(Z|m8s-pI;c%-M% z@eMd=*JdwzeR{f z=UYavqPv{)7#)km2K$M5zqDh6%1J0octYJCxPE%fNcf08KdT9h{AAMIsxxO1p9Gvm zM4$}oQXRvRbFde*(6?4m7;<(|Sf;nIyLT~CJj;-L-oK9f{{9C?N05Qx`q=8uI4zYy z_A1%tuz9X05&sCxMreO+{EkO~1a<{Ee~A`@EVOi`R8G?}wBEGr@BsCJ`-}m4UCpYA zZ2oR5cD&eY@$`pG0J$>ViKz)AE1YSl?r>n1+z3u1QH7kEVfWj#vaA5dXOcU>!_VlB z2A#+WLp3_o48OQk}t`NHc?JNt#ZaoA{@xagnXac zeAX9M7{4%aqj-W6{mdEqa+MD|JVRQ?ZI1@f;J(gxz866}d_0VO6ctw8Y5L9~d!Eq_ z2(MpkJzlX`3mr2XfB$AQKmTjTgW-v2I<3koZ2H@xG+C_v!p5_yWPR*L#?Q>PH2lVM zKX$wlysCz)+6_?*o+qUZYj&Vlqdia&K#@g-p6s1C z2@f~g*Lrnsiwu4y$h?C^xV$I`<{b{5G--!!a7=Zcs2O^Yr1y7}gC~I-!QwSPWeEbo zmj0|TL4x72`!EMK__JQ8faWW59tBK;`ByXqZ_ z7ImMaY>d1a+&==*-ltf(+Ka@2w<>rpuPu){1B9UJC3O9%k<|zV6VFsZE`Zp;)e>^1 zw2}i?YI;6QJa3)~j#+V*s?-8{KUeBL^aC%>Fix4P=Cfs+fjrPHPB4^2IvT;of&;=C zoBxB1H^>Cql;Y$~9GZ#k9oI{V9#gs-Infg~bois-Ay7$VKSa%Yz`^bU5(~E_&3e2m%fL7Ypy-JnivSFRR0+FOQH6#rTwD}XJ z{I1%!Ky!y4Qtt4DTgG%=Y02C%BAB^y=PZtI+e}DS&Qgf^qkZ^3<%7b=kcQg`TH3Zi zwdRFdL$Lhh6=9thWN3BMhAh`w_HRU1_sj zKl#n(j4-Qnv+mhK(Brn@trH9?t|4B-REM4h$3%yY;;i$fV8Z|}IdWlQ)Hb`fzwe6I zp><(Ez;7}_A`!dsxR%bX6D@UnHpD3|vlY1_S}x0ph3X@QhDNSCk2W1$=ME+kAK)uD?*#&r&3GLQjMK*b=4s+-l30KGWzpG^YqycLS%}?Jr z{zAt9&bH6*+Lx#Jw+4tfgjP3F#b}_7OwcFD?#IcUUs%&g4MEr?-|mr3wo^QSEI))r zHR&*|^{ok!TU~)W&Ih*b;X?*%;k4BQ+kh?Y3t1gYMzcPhS={@~)3rLc=m`N{qJF-k zs~b>JNOPI4EPF!dzNQ^FhV=QLcMBpx@WZNJTg`!1!O%J4={>HUve}$9TWM8QFi*UZw!_m~ zud8lU)UYsHVx2+e@hzv5Mkh$Ez=u#J@(JJ?mY|kefud<%BK4VvKLh5tL$+ds5)|M_ z($a(=?#y8bFzV=?C6;=wz6g$0=Qh?k0h)?Y5j|kwGvf%Y4E+xnMpOh1+j~WQ7R!^d zsPTUWODKLpMPWwFDtU7?o)5cvll$o$+t12usNZZZ-?<9~qB_f&1Cu^vJdXEAF-b^x z*r%si!yF~2T~{}y30qx@vvNcI9O050Za-(`%4w^YPmJ|Rqn8-(A)det1!Go|MdLn# zPpBi%ZEO(G!bDZcY{6Qw%x+vta=RaJMfEp3U+dw`+#Mcg|26qj2}}?WAdR!T^_5@V1&Y-xhTe#Fwr?yrBrQJ z1^S11%JsafT*UiYiYF1oFeMAx48D{kEmiTL@&!?^oCl_)Vct0twjz-z<(*W0T^^AYTa&2@ zHb9KA?^|XjlZriV`6hjo-roedpx+Ec19+|F1HRbdo};=6U&WBj7&ESfwbF@w$g6LI z-2liC$a>F2pbUZbbPZ?t;(BTthuw}wT)rms^dIZ#RMJ+=x=FpZ; z0oC7Ml)V)*Jbj+!NJSk0z*r-$xH$5L2PMZg);i7sZZhjUCwuOU;@ZvT5NQwYPEowx zG&xfT1vSl%vmVgm_Vun|*N>0}hL}8%CZN73nB=hK?*=y?aVg7uhab(lI;@5)n^w3-)G3)-DbzFLoB{Xuk3P2y&y+ zvAHm~@WX~nLzIhZ|$SQ>DJnKPMid^uS83{B{7;y`W<8=&@o9MuK*=hoM~GM zdaMrsjm2KzY6w54IP7Q~qBh=}9;V;KDm4b7IcfR$kjGMnzBTJ0|3C9;mzaJ_2H`n;_c|RmV9NHD?((>|Cw!_a z)_!7L2s?&S#rYn3ta42Vt?)CdXFZzatlpI`jdAFidj>)AY*tH zK1#D9uBUwIcEfuH6CP6ZwXOFS&bKw;xW`0m<_o49%AMI!(a{&DR^h*xueM7?*zg3LJP%LKIH6=w-g8VZLqOnOA90TR7g4kd%iT_fT>k;? z1^swA!xCq}N@#uoUP0u#xr~eRANUFCfL(J@CJY#B)UXa5-EdV$P;|Pvf|D5;z5?i| zxE?tKdi>5gP7TuHIr4CoZMkzWDDZ4CvA{&Wxa7V=D z?F#hy3?GjXrnen;yyb2N&NO%y%O0)||0&iX>DG6!O4H?_OTEl87N;AI0SQpR6iy@D z>`FBMabsSIqDx6bD0rJsDBuH* zJS6U*dU9`Ejx3i0H%lRsl10dt#1#~ht`X;g>@K--ZD(B9@D$yfSP;DGW$8_ywXPT|9AI3RDIdHgZ32r zMBlmLmFPBiwLM%4&z0^7U|!d-yz>ATm%}`gZJuXF;P6A9WOtdL#e0vU!Al;6ypLZM z^-*bI2!At&NT~CR0M??9<`&=ym`VnB!nF0aOcAoLm&Vz+DtuiMW*+B$q=y@+9^5__ z3d~>m%SPw-%D<^+oGu1ER`g4T4UveGKNz3T=NWba?o;a}DH-$01A0Gao9|OUjo7>h zJu#KFqZg=mL@mK2!QFSlOxZY$^P)8owA5+?0^Ae-9I1Q? zJcgRa%rTC$8G12jc^=7WG3v!+ZaySiGNA^Zrtw%!H3lHvoQ?LMQJJ)}2+%E~b4R78 zZpf->i#XK#8&GQfUZBN`4qAV%EWHXu4Ghb4=v_~<58Uj#LTfP$ANDlamtsvA&U39u z{ipnp!x|rtL8;}1am_%zl_pzat(hc&0&{s)KsNflML-&HOG>cy3d`y^?$?9W))jK~ zc@4Un^*8#Rb9E=vC<5%}8s5e>&gDmK8;iXm7jt`+9`0lc5d+K5`*;^5Fkl&-Eubzp_YPmUT1Z!MP_CuX{L4REt=Q|pVN*^l zcMY~kb2xSRYD1v~6m+!SHCN%cmmyv^N=9M#dLmL6;RY-KX~p#MQlqMCy+rurj8%Ip zKtouUa$?cJoy>V@Tdtw<*3% zKdv%8X6?=}X7N!nRuuB8_VPEr4X|=>-7Hk`BCL z^c#QjtopAI#Dx;?ul>T+sy#GT4J7C?x>VvK{uGpjER`Ry*d(NqkY7+)h_&BoH7ox{ zrP0K!yB|j67In4zFio)I-&@B>m!>`BaPT{O_Ewtgh*Tf?n(-h8{h*ICFhu!xA6(tA z(XSF&lmkad4s{}y>lWIeE+-~nXxA*@VvgDN3tYXJna;kxi?XLayLD(_SwWI) z#2We;v5f#O0+BtCd}KA@yB`WJ#H>72vZ<8LHe&tkpR$ z0gw2P<5(%h)98e-$1>LMkdgXN*Fhetb-Bwy2|Iy%%AD>2Mtvd+K-E)f2<^vthTyzv zgWU;aW1IoPj^PHTV%P?5bDs=Yd*5NF6rVlb>*iL@-cTcTE>@P3q_MvocyBqR&hKF! z-RFQEXbF;xzb{=#)Vnm>M-5^hmF=_fb#}_&@tng`Rlj4{q!}PoR&~G$Owu_iv}d@m zw*GbvG%(9Sg+LJSE>n#|G9Ak!G=}t$2v8Q zW<#Eb;4h12FS!x_UVk}4H3^ZuYZ!|z_gk(B6p^17=YDmlNb@6mq264Br)l=f`VKJg zX%8hmWE%3q8DfG9>AHfvL?q+agtNI7dk-|gG*(Cn5K(+4$o1ieahOW`(G8VrC_SKm zo6u%pL+Kh(K(Lf@J8~SUo^HJ0p{qfd?u<=FBHOkK+!FD2%OmXG5)U~ebvPjR-`YOe zR3?m&a9dsRr0$ixP=CayW|%HQ74rXEH(QX|o9UuK`k1(w!R?jwwD(hDm{HNs9~)m`&pvV)V6t4YHYshJ+C9 zuO-3dZYl9K#E>-GKfE`~C5dSqe+GG=ksOHE1TH+>Y zYr#@hGqi+;mkJm!urw_tlb&Q}n88UdCXXK$FYY1k(EX|88t7UHvL8Y1V9sZ!Z zmd)cOd4ZJjH$CuccDf5zf!7onWykcpy(&rlxLs~G>7r1HwF;Bdd~-(0mwey$8<9Yr zOBr}ekNLmS?S2)TCnz%}xuHX~JS(3*U{)8`b0e<{G|)-<;& zuX(LB+{6us-*aI}@`msquk}^h>6SA%itTHFXzgdc?#o<<%<@#kH@gvW?4}dg`d27C zm4AMpni`H_&SIJX)3#-`(2q;&cij*qI!CZ)jDoA)c+qM{isgi}`*>yGM1goV-k6(ULl5&GMlOPc6Nl{g_Nm z0FgZ(mX8b3#?f8$W~-HJN3gQ_qE&cqVb1-90}2`AJ`D@$tx6g%O<%D-jhrPEN!5vd z)X@n+rX(x|y{G)fp>|ohYP1Gmv>3XC^qgFMV+5y0$uX4IV1uxP%u}of0XyN{#o5`b z>umQ;mUc)oW>U}mBrBOz&suB7tjv*iw!`2uXorZ*LWG~CQBc$XUg+|9ZffIzn&6oBLmUxn)x6zK zbiU6;X|+(&H07f%3Q5H#`Q$M(L?w5zyd*aIzBVh_Je#;BT4a&t9%(7@-M0;#a@f{! z36kM;*bLjA9Fvy%S^p)Qc~&gn*w#Pd1_Mal?!R0YU-(!K(L`ERO(=drk4tU|RUyq?$erUhh^3)YJE7~9=CkfpR4?dQ!KP0%;ChlZy4zgy zg4$Xl(X3vx#)X!O>95`5KFJ~w#m1NY(P_Gv44A$OSxSr}gTIxvV8;A^YCj8DDmwVH z0}R;yK1{H&s&9;g+C}*YUoR$zj4*JudU-m)Fo9D(pIrM|B^t?cBtk5jK2y|Zm(4Hz zo(&TiO_O<0WwPD_pjzr#G@i@V0&Fdm>;zDUs{2_Qc`Q^)0N}e#K zm|9_ic5u`sIDh?VRluha^Fh?+G=v7bJA4PE@Cx#@0UW9@ym{p4(9hw)8i`D_f!nG*6>-b~J zGQBYy0>Cd8RiwsC#Q4$O5|Vg?Ngaq+1}BDbPySp3o97qzzt`}xhH=+77TjIix$exC zdc4tr))AAwNhPMV+=3NA%o^BwrB4|Kbn14z#~|SpCD_a|!Qo@C^R&iyc= zCL2!tQ%)Qw5cht|oo4HUtD>NxBu~iX(3$j1}V41ZT`L2np>_9@J zVttA$Ot5y`y;WXMt5pQ}Po^bRaCQnAear5m`J#fcu4HF!StVD%au8ESE^=oGo>b(E z!}B>}LuV5~7E#024SDv@+csn$L-z6UUt{}8UnR*3Eb9Z5TLs-yC?#Mq=&KQ8 zh@-arw({-iHlQMjZ7dgVRMV*Y0^d(4vI!==W3tzxV;mjrt5_JCPBxdk$^7Xfy>fg= zAZqYbB>NtCu*;4xIDcx3z&)A7tHnQa7HW0OZ7FV;CFDyXNHfLYte$V(cB5PV8~cPc z=UTmS$#<$hg7JXt1^=; zXSxJoeOx)pm6r}?>HKXY{FtSBKW}j_vvE^1*WwyjUr=KrQ4#(rsW0;Y|4!xcI^41U zX-Dj>mVciwfQS$!%C2S>1GQS5c7;81u!ieZaFV5OFXIg71-H;C-s6A8w{g--r9v|A zq6JV@4WY(*3xV%$0tocy8m1{_mRCkaF#f9{aScf!Z&M$h3~J3j<{r_|`9dFGN>@fx z0W8Y`Qr63sIb|4vwfs-0F1Se9M_}8c-6#D4b(O9N0v!idi$Ob!33(97Qy~ zRR<;z9H$QYZ__JjEwrM7m0!US0`K|!W7L*`Hg7taoffS#dc_do<4Lh(0MMWNx4Pb> zFF!lpnFDpJ9&RF7aEhbR4vZ?1BgOaliKHd#EB&ql!dj_Y-)w#U=}hz%Vj)iI(vO?! z0vwgXu${Sk&<{Uj4+{NUA!fQ-0Sc~(M{nP(8<_(1r`3dSNZ-~i7eTl3X8%7fo#FO~ zKQ?w(x*g91@RUE)RQ{K6fJ& zzmckzGddZ!hTiueRdWUK&Uibek?>?sE&mACg>ftap~UsJtzX#_=u^YgihBmB@rtijBuV7j@y>EJtfiC1Xh%8!$utrkN0uH|Vb z!b8shbFlm`$rh478-^`34!fz)fPU=esY*Pn_tS*c1ER475I-1nyc#ex^=7{dU_QQE zMnX(K{pZOqykpA4mbp2P@SUEaN1bONlqZ13pT#?|<{_LBZA$=U zciQoLT$W}?ghJmpApN}ZMoNP~;HV#aoBuLjjg#rDw_geKNko!d%_*OK+ya58Rl#A)|p zo=CpwaELrDTnVpZAz6tOysL+$0clj=z#cX)*yueH(|LZ4SseY2i`zQCZc|1pg=YOO zcbr9H_-5snP&GWB!DewgE=Ov1h|<88%(uTGK@R!C@j+UevXeU2s-RDm2Rt^YvYw#1 z#0&`&JWs=g-t~T(aqzX;Q;_!Q;bK;&Y{HvyO+SL;5;Q+OO?ccpL6|xcf#j`x-KCbQ z%xEd;89-V&+-Q_ib$51{F~z4o%qU*kbj$L8rb&!P%NWJtatMLrS0^0PZ-@NLQptg#ypk@NKnqJZBy!G{1uoA z&21PSD7=Xa@c9|&@59m+gO^|OW8W>hurI=x%qYR^jiJILFjsp+1Gzqft+U&|BCoxj z?XJxT5vo@q?*J><}E#EZZASLW48Nj)ny240hCd%z&=4fqr$hUIvU z;^OGogP;*i(GvX3^_x(O#9Jr5a~J=_~o?7y(j4_&-O}i1pxltVC|I{hhrv zGMIC01n`gMkiO+CWOg zyhii)?{lwn#3yiw`q_0lf3<`jsu9LfNDp8WoeXC&)@HHANw5pgvc5kq#<2`|c)xF{h zi;!GgNMe2MC6L zkigLejM>D#*0~oUNFyEZr^hj}XKzi!9D_owYemON*r*t?o_eiJmTre0JlRUQ!XTcyi^HfzN4=&c=H#{h$iK{KWk}3>bBru#Tv>9g!*~kHYa>8AU96{2O;D%2Ph;KdECjalUR`pZ#K=yY@=p28@>F&oiMB-(6i;YMo@1^ZWfuO7aUgDc&HI#U-Oz)8utlSMBKO_URo+?otp zGw;$Mw1Atx}byH)=*Yk!U*EUAs&p-D3oQ43am zT>l2|LFyZm{AI`90Cm#&f1EUM%uI|DU6@1V*F{La%%~F+BmCCd@t|`$HCq0coVOF7JNe&{$*%6vjUn{- z62F}QF|<^^;W^!Bh?oz7w9wDAv(tc{EwS|jLIc~Sc00kw*f5aIb?xV_6!So&K29bb z97!$)NvqME4b=PfU+SRG9LVLfxIgAN>P>HkYV|9rL9Q#XR-w|>Bam_`xrDB_ZE9JWtGQ`+(nrK5w_yi8WaS9^@WUl!;$c>P(Evv2&NdeZBQb-atPR zt5sV-SU10TIGTjgbNX!qr21wD6+H~&kdJ(6*&Gf(9XoO-2)+g2*&u&D)Ht5g zmlx}Fa_W4G#Dg)jur+qHQUer64DRZLY3YKI^Z8TYbk(U*a`9EkvjYQ%3wVZecI^4C zui!LsWK=3|D0s}wg_=l4u7d>{(Ex!R0E4yfcc6RfCx?Eb?O6I1($q~^K2!tEr5n`5Qm)GUS%lwTEJrtgmI_=FHL%(BArZ9@)zl z7jCS?=N?~W(j;O%+l)d`jIoBPvXbAi@7 zn-$|GCRG=C+hMUYLxVS5`qfEeE$EkEhcYAS3lv+%&h}aC>VJ&YAs@HGh9#OAtm;+k zy@3srFJ;zQAUrK}!n_DXN+v8)i&3k+egs9m3v`Q!4sWxWwQeQb0Dc?8?u%15(5I$( z{&TUQE2m);Y^|P+D}pe=SyhssROi&hEvuYw%K%c-S4jYTx$Pd~rSo!pZG=BKsk5-+ znH~|E>*_Eyp-Tdo#U$Q4JOYqf2E@g-L8 z*n7)9yORN4G)m^_R69%sriMb98O^82j-+f18J@=msi0<>afvAEy^>1!HCOy;Kz$Rh z-a;tq$W~7qLa+C5w7*K(3R-Fpb&qg%dF5XdinT`^L8;oOrsTh!u@w90$)EVd7jI@Cym)7&KcWPD@?RlrMK{s5s zPqd4KP}Xvz2(3!do!d1&4CR}F)~PsQau18cq2NiHrMK~7ZbZY$YSg*2wH)woL)5vY zJtjJM{5*E6OJNI8=Mh#4t$!q7EVC*UEG1{HSl%~oB0vyk$A>HNbe}OWEdV^Te#cgG zO@2!%*bg04JMl-XCR9mFQmYS0KjAod?}d0)_txqw(8&J{7THvR{N`i&P6qS*&QYGg z6e>@y^x-e-JG3i!X{j29B8pPHLw!9v0PArr!ys7izKTl6spa>d5gYEMhCBXIes5^V zgm`SJMnE)x9?gCiEFl&NXQ`VfPosl_-1bYh`!fmvsq4vgi##eDt?;lhMvOUwi15-| zbMdX&weM*H0@D#vo!DK->kA(tB`kE*Tng5c^cL-Pnp0f~fy71l6f>~``c0$tuXSOz zJRAuLxnr|5f%Vu$O*(YT2&K**B$8|Php^69TS%MnY2zGt==pHCfdXq2l|wC~6#j*} zP)8LPF~?Mp@}R{xwe7FrwQQ*y$~fAdp0ro7eA)Po^6OO)4Q?(8Rb0mTXJmD5$~fXJ z14r^qJ&DR(E%471wD@xpKq^v!&N!Lkg=okGropoAJrXKdhr5<~R@cR|#e|n*ejiJ& zp*-DFd>?^DtLM&QgMiy0dVZG$V+Onz=V4*s?w)~36BB08&T^3^9T3Xjff`@y4z7uB zx?Qv)T&wdia|$UYLpuVXjKI2Jw}B9Y zkZNZSOB4W4@HjGUMtLXUA($e@HR{Qx+F2tm`I*iH_Aagc@-S@Yf4bpI&&nx$Bf^qK z%U*0oT|rKKFk5*J?{NW_EWwEau}k*#QnQQ<8IxA(`|CeJ!<_)i)Ns1DzUa=r?sTJ7 zWbMwyjcr{(HJpJ)h3YmCL7D$IE{s*0rC$|I^RRaMh|vYYdsA{L=N9<5E=`1J;4ph& zpHQXQr0%!)ejfcNEOl=XgAlCBr<@kZ)m78T^*}b43X?}~9 z%Zq)`i9RIB5uWT{tUWDEjWzPxa^ZtRpC7$*QHrdhTS#pF(GPSeD8h;NtQsZ4xrs=m z>_dQYZd7Oy)=Iw*3k9T&_!Vqf515DGZ;R~xPDH9)*@&SKZ zXW<#YfYV~m7yc1wsE^14yhPOqxx4xicSqR9^S2&kmF;vzT~Z}(4P4x%A)}sYarDfI z!~GFO3L`Q5+D%I;gfWZ2R+V6!juI_l+B3!MuG4hd7^ev)^082o$zYNc;0C|MG zKI@X<)CA)uYl#W?u1(^F%tFP9hqASGwr{C#`&4K+x&UKTZ>jTMoKpf$ZRR}51|x;- zo|2n?Y$_AY;`x6_T}Uya4(R#5DIG~&69oDITkts3t#!&wQ1YjO|4fXOBl-T-Yzrop zY*n+6`X|L2ufg%*o`uo>6u{sdk>>G4%d~1Z2arp2YrXHIp5HmDwD@t zC#QtbE%MU#u9@$DfG=uV zY=6?&L<7<8Zdb%hPqTmjVl?0TJi8JLyMATX6guvKAH7+z z&Kd>OaQN2Tpko%KxwgcRQ6~BEzlrht1mb9L!{K3aX*N$805vX*JL(>p13^DOYN2)e zM1#w(9SnHz!7~7wm-1$vrL3R8YQN^X#$>jKt7ynvuHX@R=JlaUPd(0xILlvC!Y6X( zWe{?^ue-MLkA{{(byj0HxScyh@@ zCX=H9@^*?-)5L~_8UB0Dl`Bwne;T|sic#Vw+`@85_N;0fTCRwdPPSWg(T(XSE{G@6 zERr32+5^^KSqpkwZOmQ0bvb!_&&(pk#O%nV=kG7RLm4PsQQ@8pY<|Wp%0o!oYTiy) zb8r{P^X#dIg((;z$+LD+(2OoO$t1F*RX6dCS)D1h6QDoqc0mKygi$LPLcGmI!paGN zz!1BVZXj<6z{%PW&9+kpQGc zY2y#Vq%NH>EpjMdNp0>D_VCPv$-FM zzZSXh7G;b5t|kxRl??9pvM2m@e|7mG`Hw3I!N_6Q%2@<>13r8->>4ojHjq3lb+X(t zFH7^`dX>%5*Xhu)WH(-)9t)_MC$`A%k^pmAhM3^!6aGf5HxtKnV^M8X6bVZbEY!hX zceUZ2lJho&PIE1-(P1f2(aDmU>`H&{a|yK!*f%ntd^R*~t>d*!PT^;8OpmRoWoI=5 z1?3emCj_3rOJUBL*O}s>YcY!@Qv>%7a;sO`VMy2Zhho2#YV$-P?%cv_iFqteq>75} zf%IfVmiXB~3QDxn!^XXjt`=civ#xL{m7n5W1^PFlsQ9Bw~>ayo@H&f*#$ zzQ?sS+x880LKraR^^VI>>J0OmgDV~CAr%AM;E3Y*zd`1nQC`tH%Q zUJ>lK`x^fw+9L~u;6i*ka~848%C!7p{*|4-JPf|;yk*i?sJ}7ujIo%o<}6_O;@`!S z3PLdw{sQi2jZFH}A?GoMVSOHQEQ+swJeMqa*hP~tr6OW362w&YYa}{_>uJq&Rr)6G ztmWLfMPD{2e$@0mxg>_yG8V=&RS#;N|77sCrdv8 zgyHJ(G9#vWKw9a|E9O2Ctlo+ma$H!HH!*srLKOne1XhNJiV&?4>`Ak`Th?Kmy+X_pvq5Rk?V7n$z=2^{b# zgNXDuQv>okJv3QB!1XxaKPB+V`>t5+s^qpTJq>uA5THHxAH!}h5ev>^j(~1p4(Jr69twg^1J^xjc~!3C+H&K zKx|XO?S`S52YoAXoEuzK(%rb{iDu{h@}dCqDIN;+jFyN>e;D=|)-S8r@d<5yYx)mZ z_GY`Ua-q&?1Hr0WDK^{M`|F=Xtt1_XBg4@4wrvtVx;%XX{7F88ADaa@!oO3}#@EZf zrvQjexj>6S+_*XZ>F4|#&YVMk}qwuBG z9AUd)GSVF?ctU9UiO!wZ1Sr!ek>@a*NJ|X_o8??9Ak>B*glM9`MIFvPvLHFHr5Bv5 z->cqeXn)z3O}xJz)~6VAaLd=HcrA4tY2rb`_>Ngq>BbW?0<=s4F*+5nl}V7hxVUTI zC8x_SQV|1g>sypIGdATJfd+5f6}sgzI={h&f_WA}JSH|Lt|{$Zoo_6Yn}<>xR~m~- zm61=29Lq+)zK4(+VY>et(G~c!K^`WOy~3;Yi9`z9ju#gD8vht%w>vwdfg#fE98)`0 z3D!jD3K_t)@}tf5aW*Zv99PgvQXr!Sof!sC_k28zY!S3w#}J zimq6Adezdl_P6)T0w+R{ynU*<)+ya+{F&cG101k8pZiI_Ka16h6-?Pwg8b5wNT~&u zV!Y=e*Gf`xfuqbB>{RGq<;Q` zQ_yE4_9oJ&42vxiB{%L|R1n#HbCCp_4w|qaiIy&!91!ahu%1XSh3{YW#43`rKxGcC zgZ~25jPw6cxb581yIHBr)py4Z5azMPUS|lAFeG@UkBn!u%~u@-d3* zA%;34LcBE(th;;HNSl7A1;KcPf*%}}g*U5ZU^Nw2{Ph>5iYz0P$AgwV} zwy_%riOXb7Giv8pSI8akR^#054!1l`xeBktv5DE0+Gjxfmn(MbL)tQyu9|xo;IwgO zgvBn=Tt7_aK363RsoHi)KA%Fn;yYoa;ODY`q}`oqq&v-4nzUVsaDF{!dN){oZ}VbD zLY+|iDbYKH;a|s;vfWgdXWJS73<-ws7Cfe6t#bM5lEufJvP|~VGN_d1ak&pv`0P3Z zLq@AzK0oReMvB=r|1{_az7i%U3~2aggI8QnW^yw2Gju!N0q-(%h0=r8f=Z}6-=W59 zY3|T=e7o+&NMXa+oc-1ZM=#NuBDf@GOcKL;*ld;CPKGR&(!DV0tC_HO6>l~vS**{P zh)yQ=YbPt8O7>}1LLgo!`d)$h!TwhyT~khG?Hw3wx~%nIp}}?N*~6W#aVwIZ80lYM z)0An)%GXqJ40Y#;!Z93Sk0xb>-7~l52fFT!tSjZAXR7GldVXi?13+#hDMhn7)glJk(rf_L$IPbN(l zywV_RO;jpfno7jTCZHCvcoM!1zhHt~&8@p=R6iMzMmeerXKr9vSLy%@mmaF8#xyDm9r z{3%g|gx0j9nmf#2zeIPe#GNkpt1&{Nqr7(DlrC`ddfKZs;VM1xs*4xgs+%dQ;i!I# zjf7c?OB+$kO~{yG=FSP^k-4Jt9;9kWud9DIIv-_&I|~$P5cTK#Yl(YT6ZLu|n)y#( z&pBoAYg<|HU^5=fv@M`L+>ZJsT#2kvTsDi@o^ZH&e&!4cV2Mid%7P!B#FLRl)M!>> znJ0j!O313k5#TSME)@arm8q7gtL>@l3M*v`CxI|5xWmBLiNNo;)KwADDY~b;IZP^x zOk*mHgn?sV*OXCCq66&WC#FZgNaP;%SDl~uZB}|P1X_-Ys*M(-NKG)nF+w?Tidnzs z^l^UG?MB{eIlFgBG>z1$-9Y{8|DRw2wx-=L8 z(1v?1{c)F5v3l-%Xi+NJptExcCK{`|PJ@pmhDwQ zCo&jpU81Y3c<{ywgRp~})z@fb&MiO^Ayw_yaz?!*m}1=#3!RK5HF~5^4sXUtuC1;t zwyWVp@1$Z$tk#)3DevmQMBz0oH%I(TleJBz=!6vJBmZ~`nnYfU>!~Ph=-(sS@O)vieis}@0O(k+r#=(_ zund=Bk+T{*HXumGir7()f&PX8D3*sX76z!>G7zm_xxir75PrZAePVjGRn08(Xs|U= z8p-nq+Q08nFELz(Vk|_%-<|hRjYr9B2iq5p7zDE9`xO%w%aej6f_ECVI1ncbND^?^ z@~}eErc3cMLp+qvZA!Q)(CaNLpIf61R|>T^=klLoR|3p%I#)|{9^me+MFy+{DGWps z4Q$cX?S4NYDPnt3D&nGnC6@%e#{z?FAh*=3I3dIIR~X0qf8=cX)z&JvdR+d7xdLZ` zpX)uXd4rXz!yU$Kdk3udqpF5J&CqCghZyNbVCSMJWtak>(2BBm0cK!9AVLx>&Yar_ za873s9o<*u%sX?gRO9y=tD>bYWFNz#%xAh%E_$7YMVCAoAiX@;Z3i&*4w%fyRh&XI zmP%5&XMe|eDGjx+jn|$`*Z*RU4LTa_?I=-xBgCy0fpF!Vs+Tomx{a0&fVrhB^?h;G zrtxN>k*6~Er!HWhzDI%LNa1xiW^xpb@lIw>h*IF#&iEZZ&)PyLIviUv^Z@QdD}AFK zn~w=wt@0(-$79=>k=1GP!I(HO%HjdfKB8Yo8TyYJl=dq^6<1z{2=YA=l}xgRou^#f z0PO4=NM4l+ro2zD6*3$07JtQB{CD>aLQ4kZ)XmvIF*sD7G2qW}gso?f)4DYiA^GpW zoBESovHDv58ivGy&DnNYTcC{t2rSIz*Y7F18*P6)bN_C5j(MdgPi(SZsNOUXPgpCII4(lU}{EvxaAb|&h`5+$hLxFqf2=Slm%Gs6K&LqqpxbV6Ik7T$_J zUF}skwq0dEfZ%hZiT1+&t#&y}c8lEJPP_jWh|skV6e}4%-g6`~90I?LrKDxrsQU4o zLpZZIBankxbd%7#ba(Mr(%+Pcsmt=KPTjA(2#Oo3%-cge4SY*OT|_$rGUv7}K;>T6Eb% zC=v3;j9J(%eNvgyJ*s>^qJqyx~Tc`|(b0vAh}J>Jr33oidj(rIx|i&|YP zHA%2xF-=Y|64OYD7d7g}jqvFE1_NX>Ca3>x48-G9nF;`WjI@>!r=0vkP|C~#$G=YQ zdc}|PcAqWQ{rBN^kIQUgV?G+EapsHPNIyJ?Q1VM;vSx7vk5DxuctPIkaAS_F8Y_nMSHR;ZxC9vBwpfe&4UB!RHN00TA!X%Y5)&i9}KTOs1c~+K*4<9M@ z2CIpt9)C0W^IlkM%1SD$pvykp!{Q*K1dbP6<9+1i9l)pL5PEe2{-wtpmDQ`4g;m?b z$dWYV7+xWB7fJtTLG4~auK?%hfr@Y;0o{@LT1p^RYLO0%mv@g&j7FWSaEXJ5SG0H5Ghy9k#W4x>?GU= zD!(j~IY)aF=T)q`Tzr-SnoG+U0+aRVqO!PI$^Ks{ z>P<5*vhCv4E~>8saYq=}M%|Gj6Pe0jI1{ zX+WkhkB4rcW1F)7a|!=Bm#F;rSgPt(?pP<#p;O#xNZgW>`6>To_>RaK9n(|=4L-aY zzB_*VS4I&zs0E?XOpCgdH996%Nz)_CkIcb4>)N3D6sJ;lbN<2cJT>n(ZIz`oB8ItJ zI##EHMVuaKS>DtbOH_^S0xlY~?&n@*EIZ3o0VtbHo z;EP|1YP?G3s*Vz0Kh?*LKJ^w6HVofgIcUH$QFKF8g$*E^!$)e$SWqK)Am8&?B>N!q4&y;^inbW9B1J%{dV+2IHhI7q7%U8CwCAq#2y{8T;Z(!$qoc9bO*MUrDzhK~Gtff(O z@16s(Tx`v;2_7uK+_r~Gf$qPT6+W~NQ>M4|!OCPynrhCjIoQ$WzH`5)u315nP@1W# zvHRF6h%ubrM(!{pJY9nzUKMWPwqb(kv|BT&^wwYjn;&op(MrsGHl8sGPfSk+$dcYq z-HIskNgf?NAKgWhm-4(>1-x$EvJ$DVx=M(_;$ssE=fZ{|#^-D3!~u3~-y^hH#a$Mi zI!9XD)%qk2)M3<@wO?B-v>5$8<|=EiekRUsy4K5fl=2}fTD+wACs$$$W&T@FxMT=_ z$=+85k^Gq`F2v%5{M6#QR&q>8s6Ve~svemRLQAe72ljUQm{z9$3e%;h;r+|Pvj*1idoBsFfsnSFv zT&Ji^O*bXYvAf#I-VpXHLJ81ItlzWlH(Idwf&lQu`jWXayv$*z{c?s>ObssuUbvhT zKsmT4I_g)2#2*rtE|7UXs(-ztT7Sj1Vy-D1L*=z;W7 z^+R{-C`b4%D>x2Qne5Lw7>1wLy6D&tbs$0X9@sK^qI(y1tWb?iehH@ohP;SL>|1PZ$U_J)o&n;8*dLpBuU5C~ zpZyygc`mQi%sTzD7{ieF`{C=YTZos;;K2;e;TxfYI?k4qe~U+1l2yUCHm3-a>WJQ znWs*xOUEQ+g$1PwjV_!4(0KkEf@}S-rM)E`_=@ZzWMb70n9?Qe0DU0+tJ%WyOe)T3_d% zGxRXnV49p(tFK|RI;gi>FCCmn3E9+}kMaO7n)p9D+vZ{<2mgA1WoD5Q-9cbBy%U1_ zd}pEj?bkD(5A<9>%M?8vh4M(p7bQg)F+&$u=vSp_?6zLjrx z(l;P4T2MsAI@N43vGw~oHV#ZWbsJj=Z-`FTWq5nt{R01X(+E6?p#0!~mG8Hdd?ar& zaE8kwrtHS%ylPlgvCjD{3GrfpkI|*)z?Cc8&r^HzsE|1&vBDkkMVFlRE7XN}7NlX* zJng>q;yFs)Zl$RXd~kM77QK9bKRjUhmi;|F>6fqZsQMM$yka;eCkaI z59@e!cZ}r?CmQ}fvh_2K(C;dZ3wV3^fmx@fh(T5O`-!dyPu_}^a^ec5U?FzmVyYxE z{|jBKpA}(mdOb0Hks?IzsYkOVAgS#o7m4}(HH~0BqjgPY3N%BaX@-Zq0o2~ehU0iH z0aOnCcmUcEh}8#hR5tY#CD~X$*!XWF8}?wA&+V;vxyxVNR8|Y??`)i`K#m4t{!B7( z#?L?YrW>L}Nl}&PHp4$p0vVE}tCzl3JCy!>2gkz$ zz#rjfnadxkNzHp6;^AY8f}U1g3OmF!#$|Re9G0nTAytBg9YZlj@b5l!W53YTnaT#} zvRJ+2@2z_B%FHtVO*|2ff0GjtI#4;4>sjxI%MCascI>uCYPU?~cW;g+F4Pp_w2E+khEOfH+TXJ$t z>T_vPmpHYKLU9wm#boBx_meyjNrUv8VLKAHbY(I1Ys>9U!9CmoUo&;p<8&D)3C-HF zu~sL!l2C!BZUn5_Ss{cU8DTr*F0&J%#oeMsu1f}&O`eb)R0>YCa_B6XWPx?xdym{y z_tL;`gHllawfJrXo@Yc@d3JfIUlorog_o3QxCfZBAnhjUeP}j1A^@v-e&ty%2lNxy zb!de37$ zvkp=Hq5>6-)(#kYZ_zy>#pCcSr1!>|FuKM6PAf9&V2N-or%)$d4h@<11OI>Xt~QR_ zr)7K1u?=_;asi^I2>6n&kGIKN2UkjL4(hrm-_*6J7ONd^DJesq04SUHvdaot54#jfXC z3|qLjHC2bT)J&?T+hO$db;DAEm$o{LRz;sxzl)6C_HjJ7#l0Ju_3ESX;FK`no2~i^VF0nzA&bN~p*niL6y@*+xs&R#l~C#*M0!p^;oa~}p2H=i=+%x(oQW7Vg1u>X zP_zz1%&7%1g&u0chXfd6#`wZnzSPph&WZnV!uMEJ;E~iSCGZf4qX-Q|_#umMPm4P& zDlhMH9ZsLm>mGLPF~x*|d4>L~lrcHx0+ED)d+3l%-5!?gn+CgjtvctSa~!dl$R?uf zl&CoDQ8`FUAzaC9ZQzn=+10Hp?V3O@xVx3G@6sHqcT^yY{C#vF2t;zXOB-3-3BE*1 zUaSFuW!+9QWtYg=Ki}58kcNyh)KJgN-{1@~R&-w#TYA zgt)W$kY%Xt=F%xjxmeXv4$$~hE7a@#P1v`7a~a!Ta`at*7T)z46Z%pp!P3J;_wrGL zf3YsY+OWlP-$zSLfEA~nwei7sK)=H1j;!>_tSpsgDbX>JpGNZO3vqu=;ERXs#M|w# zyA;(WRq~7EJ%F}28eup4NEgkLeb;no9_yDE3$71^<~_f8C9(Dnt%%V@N(^#>2s*18 zG!G!9T~RdE7g&u{C61=8*o5eiXMSEm@69jxR|~K0w}t#JeXYHcj1mhU+;1!Wws+)o z`z|zduBPm11gs}B-w6VErOos*LdSqMUP@3rPV>rU*$uV%C`+P(quC7nU4Ty&_@f`4 zTL?qO+t|aMs>;1EdX`}p_gnaindCfU1BftoAzp|SqVn=l)bnMIsO$l;2c2xECOl|nI}j$?y|n>rk_vNq{q`m!iyM;sx%bN zw^Mp&KKoW|kPtnq^~XJ8fmlqHvVNJ2d{A1$qdXv#1E6}D;;Jz!{aiZ25!I(deocxq zbkFEfW(l$`a(4Il(C_nl>1Fbd`L?1G@c4QtCPuYIsj$^C?yFI=bY`5|6J>_nvVp|4 zX=&Eg=A1y-k2Oc(JPB8|F~^>u3ihO2ma&AkSLRS!*DxpFo>afp(l6~CkNVzHotfnj z?z0d#s*`E!gPIm*{2;ydz02Uh$Cb^=)NOwA2nS`I%16DhN;+-6op5KrGFi3^D`vT>`%tuw)a6Jti1p9f z*x64wyNwJBnwPbonZb+#CBN6pNNu6{l0(5ntI2}raXYR8_xA@I7qf^jIrDw`I6Ugc zL!p&_SXBWjKVi|PJu?Z zd|B9t+48ubZ$D#)OV+AD5SR&qC$X8X*@U_+*T%=;ZHZLjockM~X&Sy3dKQ~2Sw(Cm zcEmvZ5Cm0NfAqPjX5RF;98f-bI%UU7kePsTJrN1K&aLu?l?Ox9gD6}_WoU>PJ?8S< z>9jk|-q$)Kei!GW+?|Nwpk1q1>alS)AWLyiDaY}3?(s2>v>;Riw^3Lkq{KIw@ z*L?>09nUfGvi`=j=ONw#E9l+K#xbB|B8S5zmU!QFgQW%bc2Dd=L)@NA;dwiG!-b0j z2uvCyTBA;+AdJyR5U0niYUMl&T}VW9S5!TwBmQWKrbCMxd8vjc zz2XKx#n*Z~5O`fI(vv^TqFHa|8e}m?RgRKd1xEqzg_u{YhN=uX`dY6XEqU|W677+P zA(Xt%bsX$-%_*+k+vswU#uK8*%|GnCVL%8eCo?P@e(d3qb}U~4?je8b^t2C%hW;Ke zfNj#H_V%Wk&K`+~rH~B1$+?ly1noLjMnC$lu!WX}p)L3WI3-kA&n92{%dT=uD2j+@ z$~*sH3s^`qXY6F5sITx5xk`$cYft?YO%-Ohzd(fjUf|dKMv|npcc)dHmyvTSj_7V< z@lK$`_?uzwg3;qU1T+mUAwC~+TMC)kWQ$8;1Cp^ade@OMj$Qg56}F9-!MC!3=xH~W z{3l>SzmoXW=&`7aFX*aiB(Wj@rdk-4o&Zb1_#~hU684vEAzfu0zfVOhanFv${=Cb? zMgt@I{Jl~02i=CxP0SNfsu7{nKMf+tN|o7-veWIcFi|7dOnT>hsIQ*$zeGDK8R&Nc zBr6tLE-#3?N6U2Cns5po9;?3C=S0!clgGHL3z1AOFDh&Q0W;8^J`0Zazgc^~%N69= zS5?xM02JOk{3|MR+JB6}e9ilMU>-~qooz4i(tngVXBOjA(f69f4d+>66nT%OFZ}nr zR6gSs9Rl2&r;7z^nW;nUG~v=xLYs3g?4V!kR&4d zy}UCHj$kx>`y`tP34VR4?_}3;G3C1o@@a8W6*yw(^Psr|A*}NLnb*FD<33BZ>{njsg4v67*d$|oRhX}&bi;*ghA5Ct|qjB zGbYAJB`q#VlbrIL0tQ9X!+Tf)S>zuEQ#?`4p()Cu=@&? z{vTNnwOtfe*{_LK47GSZ%u^mn9R{Ga9JqXKQE+E%xK)m`N35;$MRs!DsLFgg(31(Nq#qW7rdA_$9cuqeS|K9CbQ{D`{>p8HrL3 zm*qllkWA}x@r6!C>~61CHDufO%s8eG!Hm1x%rf|QN_LDzXO3I!lu(Ukog;-kPCa<^ zg-w2)Vq*x&9pVZRZx+`iF|}2uXRrXIu|R|bI=@r#HALz9V3WbZuSmiQ$AuuDZb9Qn zaU#QG>_dwIbAMcWk@<);(7Gdsxjr0yKj9>!Xi`L|zLi2~h*ucrMy>)Y&8M*<${|dj zLT1)k**?ljaYe=I76qsSeiz{U zG%&YP6z@B2TUscDxL51uS&PFW+eSekMc+w{ayx$!XL~?&Y1_CZ1P&wJ@JVetUqle> zIuIZPHq~D-d6N`j7D!4D2R_LS>FvUFTr^fczARQy;E)0hs9$(FU)rDvnFAKYu_ZFm2t=M;i|yW(xA5J{3FSqwX3 zZAsaXzBCNN#2|%=*+Tr`u9gh+k`L3;*i zy2Wct;{SyK;E%rh2O5luvjDO6j&a~LiI~crBx>ut@~ag!Fl{=AoA6T_8YR@}2KKo4 z*><_gj{eQ9bOVNVpK6-c8SXA^tJE z_02Mo<_;cXi&qxW6PE>5^lBFpS=K^Ja-gd%<{G<@T4Z2gn?z})uO2QX@Uf6p zp`P<%@=!bAs4o8>+Wva%WinFT)vj3p%o7U80Nu?t z8mF+SLK)%H8_C^2J-5>{JHvWj8tzuR5S{;i{~%1gulR@V`4%2#ZetM+LAag$o%opc7jQ_YM_y;q?^o+itL zD;u<8g*kU?yNbwV+@#B{Lnd?;SMXO>{t_GX{>>s+GJpfw9F|S2#!v{=o9dq19HfEZ z@K3LwwIkxZFtQSe&^T$QYG5P zXg2^!cw{`G4C@TzcG;-sZH?GfS7K# zJD<1U6(tBsI}XGQ|HY z2e{AoKod^Q@2>arv|492x!iFKyPXV(Sm9Q4>jrPMsGh1LLOU`h*wKu?na@v5giHxe zG>kaX)W_waK{cM1$UNG^iv-`%zaFeh^;>LxJzWW3|Ico&theU8>4JWE)!=^3c6` zi^-}dv#Cafus5~v9y}OoelAZN0m97hz-g+hEw=?=jp1217m}1;lih%-C?Hn905nx= z%W1VFD{Aapmr69#Fy|qH0VyuTj#$;_IDLE*Y;pk!DN>yQwtbYbeujD8UP?xNxigR3 zWQbynp@zehTZylrJqvg$BUc#yO(Kclz?u-CPh%){7ki{KkYLoRLKYzYLR6EjkbUI_ zn@o0nXmAv8NLaF{wM!(@)tvUnof_3`Hg@yii~oqr<*BaEiC}DNlyileuPeXw`?Mt zik~6Zc;Z1dl1ssRMLflHQS$tk`+nJ`usv=Wps&sRwm*VR@0Mp}z?h?rnsnx| z>{1+B6A}{S+^`ZP?78w)RnU7B9EnJS2P5EkhiF^0Jh)_05-g57olM;e_LmWPuG8C$ z%!cvl9U9~F)}kS_nJR&S^IB_pF6yMJZR~kB)#;^-ep9*#!|!cB*F)%yzi#;QIB44y z$)QW5tdzf7W?TwRX`phrqH6>QI-{8Oi*4(qBM{wgepiFDM@!K^_&HUYK8g^YQZU_p$? z;$qP&t(s3GH4u5<>|^f&yHa(aVKSZ0Z)MNr&Q5I3bHbR+v<-CEAQBZzVK_Qo;Hu!1 z>~(GSXo%87G@2N^pi0Cu&fX$))dm(afnK4AS^8G8%XWGES9gqYBJly{v2~MzJTkPq zpxo*y#j4x*!SF1bdhLy&dbNB_I-*=SH91UPGPMP4n2U1c%3HfnS%d(tDlmUf>w@`k z18UL{Y)bT}(HG1yKC#jr#wUA8-rp^=rKN!JX}qTgzZ682EVxE%!ltFv9>~K?7Gf0| zgVlzEg|2fA+$U{dw?T~4_T;?nMtBJbsRds8%!nEHq1ioby??|_&cy~~!s&WMbYc!4 z2^Q~FGNL(I@eWApaBg(kByYrP1s?`T%FmChlS1S+5bX;lIjg#3Q!r)|;+ttNu;Ru6_G6P|4-ye_kI^l~%m9Zz*rI4`t-~hS7rD-ZqC= z$$IMWkeWq|T%;(JLe^nDbwL|0{6`c44|NFUYg3g7h1n3<8s{~&=ej6sw13WA>u?(G zEsrzCWDM|9Hvk-iZ7uo&hEYL$$mReU7Vv74k*F&Wni504!aCL$_nNxfxGCakMlwWO z_)MW-t(UaXXW+B2`yH;J{0ki((i#U40AA+ddv8A5B+5bUtE)=_7QN>;`*%)^0#C4{ zB={4RBy6qzio1d95!Hq3E-(2o=oiAChi7K=B;{k%(VI?BIR-QR_aI82M?6y-#FCN{ zW`g7ejq4`Aa1Zs z;(wD&mJwc~>Fz9M){uf*)}!(ef~mUq5Al2hKYQW@`}bv^i(^Er)(jh8%^~WH8TJ}FJhC{z8@6eHRyP^=;U&u3 z3^=~8;H9UN{Y(n@!6NDY*m+cftgw~*8x-R2*r*n?#X}tDGMNYE)2smfk0p%df})Y# zw8z-xqv~Sdi$r6UM9_5QYC|=1c0u9MXM8v4QQgZtRL{1xR|!n6mx9o@dQN2Vo}?zP z_>h|J0>i)#H%X#Pnz7Om6ro%d<9O zD&RE8QC%~P5^eyk4No$;#y&vKtXXk_#&x9M$YoOI!@Y_e&%Z^ zO%M$pnxDcj@z-fvNe_FnzmxXb7}guo2S4nesq#adLp}ghDti$;6M8EcIW)y z*_5poQ+kk&rXH1z34Uy9vB#qJiGPZ_ZrHoA*|lQRhN=plM8`DV^{gvXksNZ{Y;OT$j=;A3e1?-i z1ZOy7Y?!I8KM!U|psJ3py-OXu(y$k!>qBRyUQVaz=VbX!iMxC(lyUU^m9+25C| zxTI3l02U5P$HJ#$Gf7&F475)4|5j|ND*|?`VP5}3$D1=-X9PX}ai$++9c zubN2q5EIZJlTnzCGI3hK6i2R~QqDet5v`wpK|mcqE>cRIz3oD(q%*UV_kxax&D4d9 zV&x|t9&)3g1x4GVGc1quXwlS0%2_CLm#42AYNX;2A||z6*7jwvabA8o7jU& z?qU4w?S~l9-W-|Xu5>x0K!@-oJ(D z1;&=~!#3vp^|YE_5o9?%>FcHgI=%anlML8%Abb<}a!Z-l4~~oisn6e&r`bNpo}^Uu zWrjzs2`7q&f(~cB4O)nI*p$x@!olpnj)WoF7hjqWPC?fQwF7 zl~erGF*{JEn`$S2h*6kYrREc3c-NF% zVx?DJX+zm=)uFQ0hc$=jR->25_-5o@vaKdKGW&UC8z=PJ7ThEx7Lq&fT9j)=MM9V! zlOobl&mnV96ws3{D>@!3pyTjmGlj3)$64(gN;&h0SUBwr3zUxC+tWjG%Z`{nzAj?G zB1JW>(gYVi|AVGLS!P5DWguQ`jeB$e|6v0GH>1lx?&eT z8f4c3BjsEI(P*A*OvS|QVFu#TH!?j#Lsk2f-Y8Y&^-pT3O#yP)m`ntqj#CC`pljmD zrkv};5|}(&rQR3}f+pFSG$DB0nAT8Qd47OoB(f~s)s*bE*2H+oqAU`0XptME>sqw0 zDjS)tMA$Ml1c8K&ffuE6kY?KJU=2i~QHuCF&q+5hWc7OijSbL?xg^4|>^)rS1&qF#Lv9d$912ZGRMBMT&phMtpEOGxu~e7Ma6_c- z_~CR+Sy|IwNuV8NdEpoxUaQgm+KO~)mxPpqJou|p9Au3%18R^CZ{wiSypTa7*RiR9 zl-^s#I!aR7-8%7vY*nhN?iaqvvwanRr(6{C{tEvTBj~P(GKC?|CJI*i-gEho=V`wy zxf0#B>Y9G`{bQ$h*&~g03Bq^Ja>AR|UUz)(bn79>JzdOjX@*yOGGJKT0P$x}wcpye z@%~&Id;-+=^^3bLx@a)xfhTsoeykqlw7AhjRRh??$2397q__XoFP?dc)BPAVDhxA! z`HR?`6g-@6k#Ma~;Gfo13i4rRwxMy2@k18>dASV!cx}!W<2=2|ZXP2L&EE8CA9DxF z;?bJTgf3F`rE>a)w5me}V$c<%Q)4vTQGVkEN}Xt0P0s$K+vc;3HGffSFwcRXc8#90 zs{GHgcMM^9hd{7+$cNs)QcCoNa0Fq*87htyvk=cAC6;i5MKer@^r@}Yis;`?!2%)% zacklH402UH_#uSB`ECvQ7y~)f7C6^I6`ayzIgvkoRBX<>ryf5Qr)?H~ULSYzl5{}J z8@w%mfwc)@B>6yjsaz1QGor^4B42D);`|bgd*0+6)ULGXqQ@cf2e=^{_5x8GH8!Zt&by2al`^5#J= zUa$tx>jQBF^BQ+-hFh#s!ZdlyPAQ#zZ}=4i@UoOeM$Zu->^a4nk&oB>_&R@&o!)?8 z{-EG!JHM}fthGc?t^1^l;h|T&f36Y|w7lUhgFEz)Yt#CP>oY_%E~?|AHS!_CwEB5)q*hRqcnRW{Xg;w;-f|E2S97 zC|QFVv})F!Jxs0vHx`?Jzp2rF>sl~_wjX?b7sFh7Hd<`X7C=4(aEjt zEuvEOdhdl$aE81Vvxf8V#_4pX@F6;okeZB1!#7*<6mAMD0N0O}|C!as35qLEde(%j z6Nl%r<}f!^OzzQp>_GwC&|cY|pPc!12faA;=#plSDEQuBJ1-e^DW*CeGI`JNge|$) zBcCMi`#PQ{p;UW~$v3B^*B_HjJ(5gUSgfytK<~S_s8Oub$uy0l*<-h~=NugTbOzWz(I5v`IXN?O)MQ%`<&m_VluG1!RyX?vS=in%L z3xvh;VpzAXm!p8X=jHJ>4q)%0UVZ+|&+Al_XFZ_spVQjikQ>a~*A~vRVQX#{Ofyvp zNlfT{Im&LycYsiW6eiGC3IA*2Hu&1{Cq=$W3A$vW~Mw&ZNhO$_=17^~i4Joi(s!$Xu^k$CyK@nH{5v9!cg2$7D1LpTkvON*} zH>dcJ8e}OK&-6DwpXW6BGucO6-g#mkRkH+otrAZIG(OJ}wtb5skH>@Vrdb8%Sh#Hm z90zr?J0(L6-@mt(WV`P6wiB|A)TUF9=T96hftz^J$r|?VcNkgBxgggr()A9VDkY5S zh>gn%gR7WOAJ3f&lNyS4Bs#jO&kye4;aDC{XZEPl=pxfWCg4;-0AXj-CL9NT^(b|n zK!x6|D&eIZe*_5{yizWJ2gu75P=uFNm$W9gjhIcQ&8X!dkA@V5h-w9z<9M4XZ&Kcl z`&mOd3A~1WgM$Y}K*zIoMmjoE5Fbs`zfAD8uHqTwBz<#F2xf$o&CTb?RkN^-z`k6hZV%Hkd2~_>n8Oko&q{J{ya~R1U?#Q7;Jvlc%L0)n}qUZ-!gM$;@FQ zhz~&rML%(F;<oliX}bU!m6Pp630R_N{6!p$vTUgJ&(_4nkM)2)Ui)hR6C(YhBI4;Ve} z^{^(0>k@Y>(}9)f_Q1?H9!kqamVB(bQK9wZ@Za8JGu{(|A!ZmjFQ%KAkI(J{4-rK0 z67yyko_cZd3;79Tzuy{m{wu}@1i zi27QaynD2r7*IEUhXOQhpbTL)S*^WKu6V<{{zv_X8oHcwE7c7kz?Z3M9PQ_y0c#B^ zir=}(KI)1MKeb$^7PQUXi+AW>vR~blUI8{F?P7@}PVh;^kxRFu)E2#ESX43zDPtLF zP(G+LJUVWp>&{yac%+afak&TI$|Z%#N0J0qmp`$*jd&bnlGzP_g(Z|19=*bruMDo; zp4pF#UEj{aV`x;d)mQ0yMhCz46}^-dqbv=fO<{Dg_R8xgU514|dx^QbpS<7>mIDgB zee$2mbu`7(q|}9$2R>BHHy5X&=-!aX%T1qdtrm>mh_QEM8CS{AB&EnQ62GFaP#-|< zJi}Qg#4%Lq-P?By{3)`AN&T1_;Td^lRYKIygUl+ z+pKNt{K2DwfQlJ9b!DdQhDH|Wzo*i)H9_7?mdP0_QMMTz<|l`bc=JiWuy?wp1=-LL zzS%p)yENPN(W(=5SF43u&dlg<#9;P3{GpSJZ@1dJudYN(9J(qPr12-#EWqmx6#@B? zcSHwq5^!+XO8!Js45c2_P3w>UY2dDz1>o=)8%|FNpyxZDfmN^v3U5tOQhzn*0ybtc zStp2PtsX~f!b&@r#eH+RNC6*B;-rdUhVZ$mY5T4fx*^rFCtX`^GKY3X*mb4(kd%U5 z7`)fq1N}okUj>2QgpT51-^5|}tsG)j)b=42dO>-(-wt3E1Nea=A0GEKu4#Tt=W2Uj)!gh@ zTQnTizK8S@vZtiO%~ma9hb!YI(Vi3S{}C>#irC1 z`C6CeKhF?Z_|}Exo=6O-mGL6mQDSMwM0@It=QKx6=`_W->^$$kQ)xhj?h0`6wrpY} zkRtW(f}hpFue*eftcnq4OH;`P>%bdEKSeQn#z>FD1SN!s&c)nnKBr3%(CpIpiwn}l zeV&#MPx!vgPYZ!IBk>WB^PTkyywvxw$|cNC=cj;VJ;lxlS`qKHhSvGsJ7j8Jnv>FrRI{MdtI z54Wrm^l30^40jM<^fz9Z{2*kLma%YdUC8yXe-}IGrP_DB5d+hL;+^=}&hJj|S~Wx= zVEFuE-YtzCCA<@LZcN%#pHyz_%f~EF-F_nZTx~xKC^Q@}iKAmMPi0*)A&zA-_Llm7 zn)`n#wht2SXhSkUk7*fkU*JXEp=B2wk2E|JWompjBmgLr+8075Ydv-$bi~%&>0BUd z9ITlg)38Rh|0SFCmN8BV{2Ie+kkqMTw$T8c04BrMY?S+&ti*f;dQk>to9MLV`@|=# zyi;&qs{G7VJgwt!j?)+vG_e}cieoez!yeK)p{e|>akHyA`RkTVV=TfE+S`~(ni%b+ z5%f(EYr>Rm?7UAJ9kHGT^m#;JM#QU| z$NqtlG<-u{tT85c>{PskgAx4GHBXasM~?;=R~PBbO?QMTb~G`>6D7iCtwLsSO1^0C z{`UT_((Hi}CPDE6mK>SJTS6rubF|e={ki=E=q{yM@7pDA;Q(HGr=ZkZEN!YkFN^50 z|3l-9tQBS!P$fgQVl0j(ox)7w(LnS-k)(5VLj%D4`~azvimfMk{;(6IN9d7OTX#78 zCgBDqzm+}%qAIbes=?}<`S3gcw6y7xQ)d%C1%vu!ZM9mG;wn5qf^zAgf>O`u%ks*k zMFg=%{#v9cs)ppp1I!Hka!JYoAAY?uRhF_QRTi4G4&}BQtC_LjSmWuFSElC0eNn0q z?O`^eAefkjH&=3mi<$oPpDoD~QM(-$m9n7jhHjp(jQOX#v^^wE4L4V4@98FzX#Qdw@7_{Bof}}FbnqQ}=ywHF(7Dzw777KQh&5-l9{yLlH$|PMmWH=0>%`8oqFfQDH$X0;lqreC_)uXN?OWb(c~OCc#@q!Lo> zfB>FbcOQ-j{t`XprfXc|)^HZYVxL~2)JCN6RZz7m6_vgO^N9zY>%(vdSsRL@S` zr&^M<_c*evO)vedNr;ukDat;AD5C2o`V@DmJqjM2t`)Xf`UM!#{OFMNH+q!$1&Zy+Z&4NrUDw153@rm9%}p0t*Axz3P%mqEX{{~(lTLNKQ=k-e9IbOG z_QEzE-#L|cHy+Yi0z>Guu@hN^OXh%!mC}R#W?F*O*vo)a)F0A#sdwbrTVSs4E7)yK z$AKY(;?!oK4~=`LUx2XKtO-wgGcGvfUo%r1+)BxudCrvh%fsED?EMGw+Y;aanF(JoP%`AIk5{9pTo|5tt{w z1-P;g4iH{1#3)$S`=A~hu(De7~zDGhg2Wvsn+jPOaNx0 z6)4VypvGjff%u(vahmqiN3-Z!VhsgMyoCh>%8@(2tya^cg;?(XrJ|d*{)&Kpd|}6k{J;vx=d07O?TFeQyN6QE0c&KBUZRA||uIRd|cd;G)W?&|KNw zQI#3Y0=y{mSiaW;E-y77ejawE;i@UpIho;dGc*kl8^&bK_DnG`$>X$Z?Nf@Mr9 zgQDPIwfI8eAt$>ypcgvbYx4S2Ke^C;N9$Q?r3#eCc394#I2Z2?Z+d@oyw(Y_Y)%xi zqt||p$uAhGog9jKc&~ie5tk9~6#64L3%T_-_&+&fBRQo_5z8U6@I&mJU}iU3;Jn#( zMShQqZdWk3I+{Ic3w!{axzW8!|u*yIbcR2t~L!HNS~gh6Tz&~LsSx-fR+%?_vofzAm7IWHO|YH zUAa%3!G6_iw6~gFF@{lhVu+Yt?E=wRMs);n+-RP+2<~r$xo?_x6W`>kWzH`{1b6!Z z*JCxo;YLGAj<9HU{3;R{kzYg*Q+6b(>|nnmxGZanTG!+d@d^gyYcHt83EbMx#n#xJ zKmA207XEb|T4bbq@G$hyI2sZ17PWHeBo+Yydu`nySkdqn}GF=2T4b8y|lhr^)lT z%X9GHOq3`$b!jw(6GyDk_QS%+cAX?%G1cPT(lBYjPT>s!)f~YR1LWxd0#_4yYMKs= zrkF3T(gquT2C3h!L?5G0Oav>aA2GRCW?Ak0BUO*h-%u;PJwGIhAs)!y($AUVGy$pX zsl>Bi?5xArw%&#rNwe&xq>(S57ii*PFzmddWI_vt^Obu&uEFw|tD?n-NS{B!z&7<9Plora=O@T7+JPs99af!`NCvk$Q0D5;3o60feq=Soe`VmN~cg8!Vwll zU*mw>)(|5$O;3tdd;0Edy;!dd!<)E^F!U!~>kE{Li%Ezgq|@J=>VX6Mtu!_z=?P1y zRS&}=ASIyB9TIW$in>Ad;UWGhbBOa#iuNaIG8I3Qp4dKFGGbU*eJ>0d7EjVJ1{hMB zX8T0q?tCL^minoKkf!tmrS&S8$qiF|w^n(gTJ6H!w|)54{M2T2((Sbi$3kW04+fv} z_W88&XH6HBKn6W1$A#7!hSC)@BcphaaRd_Fy=e}0f`(~~u}%A_ zA-W=j9ZZr6$`NdejsB(w2UwSPN0@95PhzU))1ywZpm+{4Bon;2PdUcN7zlSTBx7XJ zk!|-t$cNhZ=lGx!aE9-~5D^mgDzo^a__;){MBgtn)(eY)UnX)84~SX9zAyuI?;}e{ z=o}li{(7I!D&mCTfQ*WZTBctU8nuGEY?byo{dMWoL^$v}bAln!j{J?I^=lEOKktLN zBs+;gK}L5#At8N3{uB_y<`tXb1{$c`@dq_camoMOrT5X&ssP2JiFCN3Ur$fIZlh0YVW;8kk0M&j!bAJ7t6g3HJvp<%p`aI#^|I^@?v8JZ4 z*nle`!sAP<;Gtu#G-eAV4>DEF7k$dd~a-2u%CqT-4hoSiDsbL_*#@J%aic7g>%v}Y#mH!1cG7r4dtA@n%G zTBvh>sOiTq1txV49axllAgW31*sWfXtbc_XRvwxb$lbxfob=)quJ_$Za1?OfTJ{kA zXkWl#({~>fi_R%k%^Gbx{!KJ!y3S}CGe~(dNRGGYihP`d-IBb);fur)f`k;0r{N9gU!sBcx;jMd8wrq~!RX=&eAQBczA>`t18D|C&1^i#2)+Fp=Es)0;D3&wMO~tnCr7P6tS*Cjvze zabBX5ywsmr*M}D598)$>973+B@gG@MN1|7E+k= z>{GldeUMjhzP!(y&#dkCFWKoPpPWbuRZpFXAHl>oo(%&iF#h7Rcl##GGB(`1MG%IC z-Z5T$s%DiwlugAhA`ZxYJhzb-{V0|g!<*zEQePwVDxEH2b?5kbd%P$`@a{R;r1U_1 zz?VKk(tXb$-B~z<`x4b4vTP#0x8e{BI3re zP}(C}uYz?(+GgIhMey9#@svyYF`~hFU{XU(bEr;1(wDA{+YBdDr#8iFaE$Taz5H;z zIIL{uhPx~x374y;fu%+tlvDrEx}KB8(p0dyrcv2F`8tfx=U|uZqEs8eoa@6$!Pfhw zra^ct)%#MlY^^BjDU29B+p#`I><=mFqbnZ3Fy8bx;E|ew>*i2kM^csP@3Ed$ zN2?Q?7iAi%bNp>dAnXoy-%4sxzMXL5`1}guM_}q~tbSgnuRXvSYV|T2nL|Y<8zD6q zWfP|8k%8}8ctHlhQA8;jE=?(Qo$gKg5r%N(%)_|Tj@@W0qEH8bwv9q;Xj+QKj;1RP zjyc5fTVFkfvX-sW^l6RdoOMTNNwRQ~SF|G>wNH#S))EFr)YF=}bxdH}q2oyB;YT>+ zNW_7G*5dsmpzDIcEZTil#dB{+XOx5iz(Bl01oQArk1?n$vYy@%%lznMl)obF zi=JqQ!(Gu1IPiAZmC!&U z-R=0|cux}kHUvj&IzO(J0DI}y=_L$E9X&d9iw=v7E6)iim+VJj(%|X3GEq{d;S0)w zw}@OI(??Hr-e4C^evBi>92q-pAo?#?R{jNZ&rN;Viv}RR5rW&V4rQR&Fe;izfCl{} zoY)DAK~$Fq